summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.github/actions/godot-build/action.yml5
-rw-r--r--.github/actions/godot-cache/action.yml2
-rw-r--r--.github/workflows/android_builds.yml1
-rw-r--r--.github/workflows/ios_builds.yml1
-rw-r--r--.github/workflows/javascript_builds.yml1
-rw-r--r--.github/workflows/linux_builds.yml5
-rw-r--r--.github/workflows/windows_builds.yml6
-rw-r--r--.gitignore13
-rw-r--r--AUTHORS.md3
-rw-r--r--COPYRIGHT.txt29
-rw-r--r--DONORS.md70
-rw-r--r--SConstruct6
-rw-r--r--core/core_bind.cpp25
-rw-r--r--core/core_bind.h8
-rw-r--r--core/doc_data.h2
-rw-r--r--core/extension/SCsub6
-rw-r--r--core/extension/extension_api_dump.cpp2
-rw-r--r--core/extension/gdnative_interface.cpp12
-rw-r--r--core/extension/gdnative_interface.h90
-rw-r--r--core/extension/make_wrappers.py (renamed from servers/extensions/make_wrappers.py)0
-rw-r--r--core/input/input.cpp10
-rw-r--r--core/input/input.h4
-rw-r--r--core/input/input_event.cpp34
-rw-r--r--core/io/dir_access.h4
-rw-r--r--core/io/file_access.h4
-rw-r--r--core/io/image.cpp21
-rw-r--r--core/io/image.h3
-rw-r--r--core/io/ip.cpp8
-rw-r--r--core/io/ip.h3
-rw-r--r--core/io/resource.h1
-rw-r--r--core/io/stream_peer.h1
-rw-r--r--core/io/stream_peer_tcp.h1
-rw-r--r--core/io/translation_loader_po.cpp439
-rw-r--r--core/math/a_star.cpp144
-rw-r--r--core/math/a_star.h12
-rw-r--r--core/math/bvh.h16
-rw-r--r--core/math/bvh_structs.inc20
-rw-r--r--core/math/bvh_tree.h6
-rw-r--r--core/object/class_db.cpp18
-rw-r--r--core/object/class_db.h87
-rw-r--r--core/object/make_virtuals.py2
-rw-r--r--core/object/method_bind.cpp4
-rw-r--r--core/object/method_bind.h263
-rw-r--r--core/object/object.cpp96
-rw-r--r--core/object/object.h26
-rw-r--r--core/object/script_language.h97
-rw-r--r--core/object/script_language_extension.cpp175
-rw-r--r--core/object/script_language_extension.h832
-rw-r--r--core/object/undo_redo.cpp18
-rw-r--r--core/object/undo_redo.h4
-rw-r--r--core/os/main_loop.h1
-rw-r--r--core/register_core_types.cpp8
-rw-r--r--core/string/ustring.h4
-rw-r--r--core/templates/vector.h19
-rw-r--r--core/variant/array.cpp27
-rw-r--r--core/variant/array.h4
-rw-r--r--core/variant/callable.cpp10
-rw-r--r--core/variant/callable.h6
-rw-r--r--core/variant/variant_call.cpp2
-rw-r--r--core/variant/variant_construct.h6
-rw-r--r--doc/classes/@GlobalScope.xml3
-rw-r--r--doc/classes/AStar2D.xml2
-rw-r--r--doc/classes/AStar3D.xml (renamed from doc/classes/AStar.xml)36
-rw-r--r--doc/classes/AcceptDialog.xml2
-rw-r--r--doc/classes/AnimationNodeBlendTree.xml3
-rw-r--r--doc/classes/Array.xml8
-rw-r--r--doc/classes/CanvasItem.xml11
-rw-r--r--doc/classes/ClassDB.xml7
-rw-r--r--doc/classes/Color.xml13
-rw-r--r--doc/classes/Control.xml4
-rw-r--r--doc/classes/DisplayServer.xml345
-rw-r--r--doc/classes/EditorFileSystemImportFormatSupportQuery.xml31
-rw-r--r--doc/classes/EditorSceneFormatImporterFBX.xml32
-rw-r--r--doc/classes/Engine.xml17
-rw-r--r--doc/classes/Environment.xml30
-rw-r--r--doc/classes/File.xml2
-rw-r--r--doc/classes/Font.xml2
-rw-r--r--doc/classes/FontData.xml4
-rw-r--r--doc/classes/HTTPRequest.xml2
-rw-r--r--doc/classes/IP.xml2
-rw-r--r--doc/classes/Image.xml2
-rw-r--r--doc/classes/Input.xml16
-rw-r--r--doc/classes/InputEvent.xml10
-rw-r--r--doc/classes/InputEventJoypadButton.xml2
-rw-r--r--doc/classes/InputMap.xml2
-rw-r--r--doc/classes/MultiplayerPeerExtension.xml18
-rw-r--r--doc/classes/Node.xml9
-rw-r--r--doc/classes/Object.xml9
-rw-r--r--doc/classes/PortableCompressedTexture2D.xml79
-rw-r--r--doc/classes/ProjectSettings.xml10
-rw-r--r--doc/classes/Range.xml2
-rw-r--r--doc/classes/ReflectionProbe.xml2
-rw-r--r--doc/classes/SceneTree.xml4
-rw-r--r--doc/classes/ScriptExtension.xml173
-rw-r--r--doc/classes/ScriptLanguage.xml9
-rw-r--r--doc/classes/ScriptLanguageExtension.xml404
-rw-r--r--doc/classes/String.xml7
-rw-r--r--doc/classes/TabBar.xml6
-rw-r--r--doc/classes/TabContainer.xml6
-rw-r--r--doc/classes/TextServerExtension.xml2
-rw-r--r--doc/classes/TreeItem.xml2
-rw-r--r--doc/classes/Viewport.xml2
-rw-r--r--doc/translations/ar.po202
-rw-r--r--doc/translations/ca.po202
-rw-r--r--doc/translations/classes.pot202
-rw-r--r--doc/translations/cs.po202
-rw-r--r--doc/translations/de.po215
-rw-r--r--doc/translations/el.po202
-rw-r--r--doc/translations/es.po275
-rw-r--r--doc/translations/fa.po202
-rw-r--r--doc/translations/fi.po202
-rw-r--r--doc/translations/fil.po202
-rw-r--r--doc/translations/fr.po820
-rw-r--r--doc/translations/gl.po202
-rw-r--r--doc/translations/hi.po202
-rw-r--r--doc/translations/hu.po202
-rw-r--r--doc/translations/id.po437
-rw-r--r--doc/translations/is.po202
-rw-r--r--doc/translations/it.po332
-rw-r--r--doc/translations/ja.po206
-rw-r--r--doc/translations/ko.po202
-rw-r--r--doc/translations/lv.po202
-rw-r--r--doc/translations/mr.po202
-rw-r--r--doc/translations/nb.po202
-rw-r--r--doc/translations/ne.po202
-rw-r--r--doc/translations/nl.po202
-rw-r--r--doc/translations/pl.po223
-rw-r--r--doc/translations/pt.po203
-rw-r--r--doc/translations/pt_BR.po206
-rw-r--r--doc/translations/ro.po202
-rw-r--r--doc/translations/ru.po205
-rw-r--r--doc/translations/sk.po202
-rw-r--r--doc/translations/sr_Cyrl.po202
-rw-r--r--doc/translations/sv.po202
-rw-r--r--doc/translations/th.po234
-rw-r--r--doc/translations/tl.po202
-rw-r--r--doc/translations/tr.po202
-rw-r--r--doc/translations/uk.po211
-rw-r--r--doc/translations/vi.po202
-rw-r--r--doc/translations/zh_CN.po706
-rw-r--r--doc/translations/zh_TW.po202
-rw-r--r--drivers/gles3/rasterizer_canvas_gles3.cpp42
-rw-r--r--drivers/gles3/rasterizer_canvas_gles3.h7
-rw-r--r--drivers/gles3/rasterizer_gles3.cpp4
-rw-r--r--drivers/gles3/rasterizer_gles3.h6
-rw-r--r--drivers/gles3/rasterizer_storage_gles3.cpp912
-rw-r--r--drivers/gles3/rasterizer_storage_gles3.h289
-rw-r--r--drivers/gles3/storage/decal_atlas_storage.cpp (renamed from modules/fbx/register_types.cpp)55
-rw-r--r--drivers/gles3/storage/decal_atlas_storage.h (renamed from modules/fbx/data/fbx_bone.h)77
-rw-r--r--drivers/gles3/storage/material_storage.cpp913
-rw-r--r--drivers/gles3/storage/material_storage.h338
-rw-r--r--drivers/vulkan/rendering_device_vulkan.cpp28
-rw-r--r--drivers/vulkan/rendering_device_vulkan.h2
-rw-r--r--drivers/vulkan/vulkan_context.cpp2
-rw-r--r--editor/SCsub2
-rw-r--r--editor/action_map_editor.cpp25
-rw-r--r--editor/animation_track_editor.cpp6
-rw-r--r--editor/animation_track_editor_plugins.cpp12
-rw-r--r--editor/code_editor.cpp26
-rw-r--r--editor/code_editor.h6
-rw-r--r--editor/connections_dialog.h7
-rw-r--r--editor/debugger/editor_debugger_inspector.cpp2
-rw-r--r--editor/debugger/editor_debugger_node.cpp2
-rw-r--r--editor/debugger/editor_performance_profiler.cpp5
-rw-r--r--editor/debugger/script_editor_debugger.cpp7
-rw-r--r--editor/editor_about.cpp4
-rw-r--r--editor/editor_builders.py38
-rw-r--r--editor/editor_data.cpp243
-rw-r--r--editor/editor_data.h80
-rw-r--r--editor/editor_dir_dialog.cpp7
-rw-r--r--editor/editor_export.cpp79
-rw-r--r--editor/editor_export.h28
-rw-r--r--editor/editor_feature_profile.cpp10
-rw-r--r--editor/editor_file_dialog.cpp28
-rw-r--r--editor/editor_file_system.cpp57
-rw-r--r--editor/editor_file_system.h36
-rw-r--r--editor/editor_fonts.cpp56
-rw-r--r--editor/editor_help.cpp4
-rw-r--r--editor/editor_inspector.cpp166
-rw-r--r--editor/editor_inspector.h20
-rw-r--r--editor/editor_node.cpp562
-rw-r--r--editor/editor_node.h394
-rw-r--r--editor/editor_path.cpp2
-rw-r--r--editor/editor_path.h6
-rw-r--r--editor/editor_properties.cpp15
-rw-r--r--editor/editor_property_name_processor.cpp95
-rw-r--r--editor/editor_property_name_processor.h19
-rw-r--r--editor/editor_resource_picker.cpp7
-rw-r--r--editor/editor_sectioned_inspector.cpp27
-rw-r--r--editor/editor_sectioned_inspector.h3
-rw-r--r--editor/editor_settings.cpp22
-rw-r--r--editor/editor_settings_dialog.cpp11
-rw-r--r--editor/editor_spin_slider.cpp4
-rw-r--r--editor/editor_themes.cpp54
-rw-r--r--editor/export_template_manager.cpp4
-rw-r--r--editor/filesystem_dock.cpp19
-rw-r--r--editor/groups_editor.cpp2
-rw-r--r--editor/icons/GuiTabDropMark.svg1
-rw-r--r--editor/import/editor_import_collada.cpp11
-rw-r--r--editor/import/resource_importer_dynamic_font.cpp2
-rw-r--r--editor/import/resource_importer_texture.cpp5
-rw-r--r--editor/import/resource_importer_wav.cpp49
-rw-r--r--editor/import/scene_import_settings.cpp7
-rw-r--r--editor/import_dock.cpp2
-rw-r--r--editor/inspector_dock.cpp57
-rw-r--r--editor/inspector_dock.h10
-rw-r--r--editor/plugins/asset_library_editor_plugin.cpp8
-rw-r--r--editor/plugins/canvas_item_editor_plugin.cpp16
-rw-r--r--editor/plugins/control_editor_plugin.cpp53
-rw-r--r--editor/plugins/control_editor_plugin.h2
-rw-r--r--editor/plugins/mesh_instance_3d_editor_plugin.cpp4
-rw-r--r--editor/plugins/mesh_library_editor_plugin.cpp2
-rw-r--r--editor/plugins/node_3d_editor_plugin.cpp4
-rw-r--r--editor/plugins/ot_features_plugin.cpp39
-rw-r--r--editor/plugins/ot_features_plugin.h8
-rw-r--r--editor/plugins/replication_editor_plugin.cpp4
-rw-r--r--editor/plugins/script_editor_plugin.cpp12
-rw-r--r--editor/plugins/script_text_editor.cpp20
-rw-r--r--editor/plugins/script_text_editor.h4
-rw-r--r--editor/plugins/shader_editor_plugin.cpp2
-rw-r--r--editor/plugins/shader_editor_plugin.h2
-rw-r--r--editor/plugins/skeleton_3d_editor_plugin.cpp8
-rw-r--r--editor/plugins/visual_shader_editor_plugin.cpp330
-rw-r--r--editor/project_export.cpp5
-rw-r--r--editor/project_manager.cpp13
-rw-r--r--editor/project_manager.h60
-rw-r--r--editor/scene_tree_dock.cpp8
-rw-r--r--editor/scene_tree_editor.cpp8
-rw-r--r--editor/script_create_dialog.cpp38
-rw-r--r--editor/script_create_dialog.h1
-rw-r--r--editor/shader_globals_editor.cpp2
-rw-r--r--editor/translations/af.po2394
-rw-r--r--editor/translations/ar.po2462
-rw-r--r--editor/translations/az.po2291
-rw-r--r--editor/translations/bg.po2440
-rw-r--r--editor/translations/bn.po2455
-rw-r--r--editor/translations/br.po2238
-rw-r--r--editor/translations/ca.po2628
-rw-r--r--editor/translations/cs.po2473
-rw-r--r--editor/translations/da.po2427
-rw-r--r--editor/translations/de.po3691
-rw-r--r--editor/translations/editor.pot2158
-rw-r--r--editor/translations/el.po2457
-rw-r--r--editor/translations/en_Shaw.po2223
-rw-r--r--editor/translations/eo.po2444
-rw-r--r--editor/translations/es.po3098
-rw-r--r--editor/translations/es_AR.po2462
-rw-r--r--editor/translations/et.po2416
-rw-r--r--editor/translations/eu.po2366
-rwxr-xr-xeditor/translations/extract.py210
-rw-r--r--editor/translations/fa.po2422
-rw-r--r--editor/translations/fi.po2464
-rw-r--r--editor/translations/fil.po2248
-rw-r--r--editor/translations/fr.po2511
-rw-r--r--editor/translations/ga.po2248
-rw-r--r--editor/translations/gl.po2448
-rw-r--r--editor/translations/he.po2445
-rw-r--r--editor/translations/hi.po2410
-rw-r--r--editor/translations/hr.po2356
-rw-r--r--editor/translations/hu.po2450
-rw-r--r--editor/translations/id.po3205
-rw-r--r--editor/translations/is.po2301
-rw-r--r--editor/translations/it.po4318
-rw-r--r--editor/translations/ja.po3923
-rw-r--r--editor/translations/ka.po2363
-rw-r--r--editor/translations/km.po2174
-rw-r--r--editor/translations/ko.po2458
-rw-r--r--editor/translations/lt.po2379
-rw-r--r--editor/translations/lv.po2417
-rw-r--r--editor/translations/mi.po2158
-rw-r--r--editor/translations/mk.po2196
-rw-r--r--editor/translations/ml.po2216
-rw-r--r--editor/translations/mr.po2225
-rw-r--r--editor/translations/ms.po2428
-rw-r--r--editor/translations/nb.po2951
-rw-r--r--editor/translations/nl.po2460
-rw-r--r--editor/translations/or.po2158
-rw-r--r--editor/translations/pl.po2956
-rw-r--r--editor/translations/pr.po2370
-rw-r--r--editor/translations/pt.po2462
-rw-r--r--editor/translations/pt_BR.po2991
-rw-r--r--editor/translations/ro.po2438
-rw-r--r--editor/translations/ru.po5005
-rw-r--r--editor/translations/si.po2292
-rw-r--r--editor/translations/sk.po2439
-rw-r--r--editor/translations/sl.po2433
-rw-r--r--editor/translations/sq.po2391
-rw-r--r--editor/translations/sr_Cyrl.po2459
-rw-r--r--editor/translations/sr_Latn.po2337
-rw-r--r--editor/translations/sv.po2430
-rw-r--r--editor/translations/ta.po2276
-rw-r--r--editor/translations/te.po2193
-rw-r--r--editor/translations/th.po2457
-rw-r--r--editor/translations/tl.po2449
-rw-r--r--editor/translations/tr.po2485
-rw-r--r--editor/translations/tt.po2160
-rw-r--r--editor/translations/tzm.po2164
-rw-r--r--editor/translations/uk.po5127
-rw-r--r--editor/translations/ur_PK.po2341
-rw-r--r--editor/translations/vi.po2454
-rw-r--r--editor/translations/zh_CN.po4845
-rw-r--r--editor/translations/zh_HK.po2412
-rw-r--r--editor/translations/zh_TW.po2458
-rw-r--r--main/main.cpp25
-rwxr-xr-xmisc/scripts/clang_format.sh4
-rw-r--r--misc/scripts/codespell.sh2
-rw-r--r--modules/basis_universal/SCsub6
-rw-r--r--modules/basis_universal/register_types.cpp32
-rw-r--r--modules/csg/SCsub3
-rw-r--r--modules/csg/editor/csg_gizmos.cpp (renamed from modules/csg/csg_gizmos.cpp)4
-rw-r--r--modules/csg/editor/csg_gizmos.h (renamed from modules/csg/csg_gizmos.h)6
-rw-r--r--modules/csg/register_types.cpp12
-rw-r--r--modules/fbx/README.md196
-rw-r--r--modules/fbx/SCsub18
-rw-r--r--modules/fbx/config.py16
-rw-r--r--modules/fbx/data/fbx_anim_container.h46
-rw-r--r--modules/fbx/data/fbx_material.cpp468
-rw-r--r--modules/fbx/data/fbx_material.h285
-rw-r--r--modules/fbx/data/fbx_mesh_data.cpp1435
-rw-r--r--modules/fbx/data/fbx_mesh_data.h200
-rw-r--r--modules/fbx/data/fbx_node.h63
-rw-r--r--modules/fbx/data/fbx_skeleton.cpp130
-rw-r--r--modules/fbx/data/fbx_skeleton.h53
-rw-r--r--modules/fbx/data/import_state.h112
-rw-r--r--modules/fbx/data/pivot_transform.cpp307
-rw-r--r--modules/fbx/data/pivot_transform.h115
-rw-r--r--modules/fbx/editor_scene_importer_fbx.cpp1475
-rw-r--r--modules/fbx/editor_scene_importer_fbx.h137
-rw-r--r--modules/fbx/fbx_parser/ByteSwapper.h283
-rw-r--r--modules/fbx/fbx_parser/CREDITS183
-rw-r--r--modules/fbx/fbx_parser/FBXAnimation.cpp273
-rw-r--r--modules/fbx/fbx_parser/FBXBinaryTokenizer.cpp442
-rw-r--r--modules/fbx/fbx_parser/FBXCommon.h110
-rw-r--r--modules/fbx/fbx_parser/FBXDeformer.cpp271
-rw-r--r--modules/fbx/fbx_parser/FBXDocument.cpp636
-rw-r--r--modules/fbx/fbx_parser/FBXDocument.h1252
-rw-r--r--modules/fbx/fbx_parser/FBXDocumentUtil.cpp141
-rw-r--r--modules/fbx/fbx_parser/FBXDocumentUtil.h134
-rw-r--r--modules/fbx/fbx_parser/FBXImportSettings.h162
-rw-r--r--modules/fbx/fbx_parser/FBXMaterial.cpp388
-rw-r--r--modules/fbx/fbx_parser/FBXMeshGeometry.cpp459
-rw-r--r--modules/fbx/fbx_parser/FBXMeshGeometry.h263
-rw-r--r--modules/fbx/fbx_parser/FBXModel.cpp171
-rw-r--r--modules/fbx/fbx_parser/FBXNodeAttribute.cpp174
-rw-r--r--modules/fbx/fbx_parser/FBXParseTools.h111
-rw-r--r--modules/fbx/fbx_parser/FBXParser.cpp1322
-rw-r--r--modules/fbx/fbx_parser/FBXParser.h270
-rw-r--r--modules/fbx/fbx_parser/FBXPose.cpp104
-rw-r--r--modules/fbx/fbx_parser/FBXProperties.cpp245
-rw-r--r--modules/fbx/fbx_parser/FBXProperties.h212
-rw-r--r--modules/fbx/fbx_parser/FBXTokenizer.cpp253
-rw-r--r--modules/fbx/fbx_parser/FBXTokenizer.h203
-rw-r--r--modules/fbx/fbx_parser/FBXUtil.cpp222
-rw-r--r--modules/fbx/fbx_parser/FBXUtil.h122
-rw-r--r--modules/fbx/fbx_parser/LICENSE39
-rw-r--r--modules/fbx/tools/import_utils.cpp151
-rw-r--r--modules/fbx/tools/import_utils.h400
-rw-r--r--modules/fbx/tools/validation_tools.h92
-rw-r--r--modules/freetype/SCsub20
-rw-r--r--modules/gdscript/SCsub5
-rw-r--r--modules/gdscript/editor/script_templates/CharacterBody2D/basic_movement.gd (renamed from modules/gdscript/editor_templates/CharacterBody2D/basic_movement.gd)5
-rw-r--r--modules/gdscript/editor/script_templates/CharacterBody3D/basic_movement.gd (renamed from modules/gdscript/editor_templates/CharacterBody3D/basic_movement.gd)5
-rw-r--r--modules/gdscript/editor/script_templates/EditorPlugin/plugin.gd (renamed from modules/gdscript/editor_templates/EditorPlugin/plugin.gd)10
-rw-r--r--modules/gdscript/editor/script_templates/EditorScript/basic_editor_script.gd (renamed from modules/gdscript/editor_templates/EditorScript/basic_editor_script.gd)5
-rw-r--r--modules/gdscript/editor/script_templates/Node/default.gd (renamed from modules/gdscript/editor_templates/Node/default.gd)2
-rw-r--r--modules/gdscript/editor/script_templates/Object/empty.gd (renamed from modules/gdscript/editor_templates/Object/empty.gd)0
-rw-r--r--modules/gdscript/editor/script_templates/SCsub (renamed from modules/gdscript/editor_templates/SCsub)0
-rw-r--r--modules/gdscript/editor/script_templates/VisualShaderNodeCustom/basic.gd (renamed from modules/gdscript/editor_templates/VisualShaderNodeCustom/basic.gd)16
-rw-r--r--modules/gdscript/gdscript.cpp6
-rw-r--r--modules/gdscript/gdscript.h4
-rw-r--r--modules/gdscript/gdscript_analyzer.cpp33
-rw-r--r--modules/gdscript/gdscript_editor.cpp305
-rw-r--r--modules/gdscript/gdscript_parser.cpp19
-rw-r--r--modules/gdscript/gdscript_parser.h2
-rw-r--r--modules/gdscript/language_server/gdscript_text_document.cpp26
-rw-r--r--modules/gdscript/language_server/gdscript_workspace.cpp4
-rw-r--r--modules/gdscript/language_server/gdscript_workspace.h2
-rw-r--r--modules/gltf/SCsub3
-rw-r--r--modules/gltf/config.py8
-rw-r--r--modules/gltf/doc_classes/EditorSceneFormatImporterBlend.xml15
-rw-r--r--modules/gltf/doc_classes/EditorSceneFormatImporterFBX.xml13
-rw-r--r--modules/gltf/doc_classes/EditorSceneFormatImporterGLTF.xml (renamed from doc/classes/EditorSceneFormatImporterGLTF.xml)2
-rw-r--r--modules/gltf/doc_classes/GLTFDocument.xml1
-rw-r--r--modules/gltf/editor/editor_scene_exporter_gltf_plugin.cpp (renamed from modules/gltf/editor_scene_exporter_gltf_plugin.cpp)11
-rw-r--r--modules/gltf/editor/editor_scene_exporter_gltf_plugin.h (renamed from modules/gltf/editor_scene_exporter_gltf_plugin.h)5
-rw-r--r--modules/gltf/editor/editor_scene_importer_blend.cpp572
-rw-r--r--modules/gltf/editor/editor_scene_importer_blend.h114
-rw-r--r--modules/gltf/editor/editor_scene_importer_fbx.cpp119
-rw-r--r--modules/gltf/editor/editor_scene_importer_fbx.h (renamed from modules/fbx/tools/validation_tools.cpp)36
-rw-r--r--modules/gltf/editor/editor_scene_importer_gltf.cpp (renamed from modules/gltf/editor_scene_importer_gltf.cpp)27
-rw-r--r--modules/gltf/editor/editor_scene_importer_gltf.h (renamed from modules/gltf/editor_scene_importer_gltf.h)17
-rw-r--r--modules/gltf/gltf_document.cpp37
-rw-r--r--modules/gltf/gltf_document.h2
-rw-r--r--modules/gltf/gltf_mesh.cpp1
-rw-r--r--modules/gltf/gltf_mesh.h2
-rw-r--r--modules/gltf/register_types.cpp102
-rw-r--r--modules/gridmap/SCsub3
-rw-r--r--modules/gridmap/editor/grid_map_editor_plugin.cpp (renamed from modules/gridmap/grid_map_editor_plugin.cpp)8
-rw-r--r--modules/gridmap/editor/grid_map_editor_plugin.h (renamed from modules/gridmap/grid_map_editor_plugin.h)8
-rw-r--r--modules/gridmap/register_types.cpp12
-rw-r--r--modules/lightmapper_rd/lightmapper_rd.cpp29
-rw-r--r--modules/mono/SCsub3
-rw-r--r--modules/mono/csharp_script.cpp8
-rw-r--r--modules/mono/csharp_script.h4
-rw-r--r--modules/mono/editor/bindings_generator.cpp56
-rw-r--r--modules/mono/editor/bindings_generator.h5
-rw-r--r--modules/mono/editor/script_templates/CharacterBody2D/basic_movement.cs (renamed from modules/mono/editor_templates/CharacterBody2D/basic_movement.cs)0
-rw-r--r--modules/mono/editor/script_templates/CharacterBody3D/basic_movement.cs (renamed from modules/mono/editor_templates/CharacterBody3D/basic_movement.cs)0
-rw-r--r--modules/mono/editor/script_templates/EditorPlugin/plugin.cs (renamed from modules/mono/editor_templates/EditorPlugin/plugin.cs)1
-rw-r--r--modules/mono/editor/script_templates/EditorScript/basic_editor_script.cs (renamed from modules/mono/editor_templates/EditorScript/basic_editor_script.cs)3
-rw-r--r--modules/mono/editor/script_templates/Node/default.cs (renamed from modules/mono/editor_templates/Node/default.cs)2
-rw-r--r--modules/mono/editor/script_templates/Object/empty.cs (renamed from modules/mono/editor_templates/Object/empty.cs)1
-rw-r--r--modules/mono/editor/script_templates/SCsub (renamed from modules/mono/editor_templates/SCsub)0
-rw-r--r--modules/mono/editor/script_templates/VisualShaderNodeCustom/basic.cs (renamed from modules/mono/editor_templates/VisualShaderNodeCustom/basic.cs)0
-rw-r--r--modules/mono/mono_gd/gd_mono_class.cpp2
-rw-r--r--modules/navigation/SCsub2
-rw-r--r--modules/navigation/editor/navigation_mesh_editor_plugin.cpp (renamed from modules/navigation/navigation_mesh_editor_plugin.cpp)7
-rw-r--r--modules/navigation/editor/navigation_mesh_editor_plugin.h (renamed from modules/navigation/navigation_mesh_editor_plugin.h)4
-rw-r--r--modules/navigation/register_types.cpp2
-rw-r--r--modules/noise/SCsub (renamed from modules/opensimplex/SCsub)12
-rw-r--r--modules/noise/config.py (renamed from modules/opensimplex/config.py)3
-rw-r--r--modules/noise/doc_classes/FastNoiseLite.xml169
-rw-r--r--modules/noise/doc_classes/Noise.xml72
-rw-r--r--modules/noise/doc_classes/NoiseTexture.xml (renamed from modules/opensimplex/doc_classes/NoiseTexture.xml)23
-rw-r--r--modules/noise/fastnoise_lite.cpp577
-rw-r--r--modules/noise/fastnoise_lite.h237
-rw-r--r--modules/noise/icons/NoiseTexture.svg (renamed from modules/opensimplex/icons/NoiseTexture.svg)0
-rw-r--r--modules/noise/noise.cpp (renamed from modules/fbx/data/fbx_bone.cpp)52
-rw-r--r--modules/noise/noise.h239
-rw-r--r--modules/noise/noise_texture.cpp (renamed from modules/opensimplex/noise_texture.cpp)57
-rw-r--r--modules/noise/noise_texture.h (renamed from modules/opensimplex/noise_texture.h)19
-rw-r--r--modules/noise/register_types.cpp (renamed from modules/opensimplex/register_types.cpp)11
-rw-r--r--modules/noise/register_types.h (renamed from modules/fbx/register_types.h)10
-rw-r--r--modules/opensimplex/doc_classes/OpenSimplexNoise.xml112
-rw-r--r--modules/opensimplex/open_simplex_noise.cpp250
-rw-r--r--modules/opensimplex/open_simplex_noise.h99
-rw-r--r--modules/openxr/SCsub2
-rw-r--r--modules/openxr/action_map/openxr_action_map.cpp2
-rw-r--r--modules/openxr/doc_classes/OpenXRActionMap.xml2
-rw-r--r--modules/openxr/openxr_api.cpp58
-rw-r--r--modules/openxr/openxr_api.h5
-rw-r--r--modules/openxr/openxr_interface.cpp6
-rw-r--r--modules/openxr/openxr_interface.h2
-rw-r--r--modules/openxr/register_types.cpp16
-rw-r--r--modules/svg/register_types.cpp2
-rw-r--r--modules/text_server_adv/SCsub78
-rw-r--r--modules/text_server_adv/gdextension_build/SConstruct7
-rw-r--r--modules/text_server_adv/text_server_adv.cpp2
-rw-r--r--modules/text_server_fb/SCsub18
-rw-r--r--modules/visual_script/visual_script.h4
-rw-r--r--modules/websocket/SCsub2
-rw-r--r--modules/websocket/editor/editor_debugger_server_websocket.cpp (renamed from modules/websocket/editor_debugger_server_websocket.cpp)6
-rw-r--r--modules/websocket/editor/editor_debugger_server_websocket.h (renamed from modules/websocket/editor_debugger_server_websocket.h)6
-rw-r--r--modules/websocket/library_godot_websocket.js2
-rw-r--r--modules/websocket/register_types.cpp5
-rw-r--r--modules/websocket/remote_debugger_peer_websocket.h7
-rw-r--r--platform/android/SCsub11
-rw-r--r--platform/android/java/app/build.gradle34
-rw-r--r--platform/android/java/app/config.gradle52
-rw-r--r--platform/android/java/build.gradle144
-rw-r--r--platform/android/java/editor/build.gradle74
-rw-r--r--platform/android/java/editor/src/dev/res/values/strings.xml4
-rw-r--r--platform/android/java/editor/src/main/AndroidManifest.xml67
-rw-r--r--platform/android/java/editor/src/main/java/org/godotengine/editor/GodotEditor.java110
-rw-r--r--platform/android/java/editor/src/main/java/org/godotengine/editor/GodotGame.java (renamed from modules/opensimplex/register_types.h)14
-rw-r--r--platform/android/java/editor/src/main/java/org/godotengine/editor/GodotProjectManager.java (renamed from modules/fbx/data/model_abstraction.h)33
-rw-r--r--platform/android/java/editor/src/main/res/values/strings.xml4
-rw-r--r--platform/android/java/lib/build.gradle84
-rw-r--r--platform/android/java/lib/src/org/godotengine/godot/Godot.java27
-rw-r--r--platform/android/java/lib/src/org/godotengine/godot/GodotGLRenderView.java3
-rw-r--r--platform/android/java/lib/src/org/godotengine/godot/GodotHost.java10
-rw-r--r--platform/android/java/lib/src/org/godotengine/godot/GodotLib.java8
-rw-r--r--platform/android/java/lib/src/org/godotengine/godot/gl/EGLLogWrapper.java566
-rw-r--r--platform/android/java/lib/src/org/godotengine/godot/gl/GLSurfaceView.java1939
-rw-r--r--platform/android/java/lib/src/org/godotengine/godot/gl/GodotRenderer.java (renamed from platform/android/java/lib/src/org/godotengine/godot/GodotRenderer.java)22
-rw-r--r--platform/android/java/lib/src/org/godotengine/godot/xr/ovr/OvrConfigChooser.java3
-rw-r--r--platform/android/java/lib/src/org/godotengine/godot/xr/ovr/OvrContextFactory.java3
-rw-r--r--platform/android/java/lib/src/org/godotengine/godot/xr/ovr/OvrWindowSurfaceFactory.java2
-rw-r--r--platform/android/java/lib/src/org/godotengine/godot/xr/regular/RegularConfigChooser.java3
-rw-r--r--platform/android/java/lib/src/org/godotengine/godot/xr/regular/RegularContextFactory.java2
-rw-r--r--platform/android/java/lib/src/org/godotengine/godot/xr/regular/RegularFallbackConfigChooser.java2
-rw-r--r--platform/android/java/nativeSrcsConfigs/CMakeLists.txt2
-rw-r--r--platform/android/java/nativeSrcsConfigs/build.gradle3
-rw-r--r--platform/android/java/scripts/publish-module.gradle11
-rw-r--r--platform/android/java/settings.gradle1
-rw-r--r--platform/android/java_godot_lib_jni.cpp19
-rw-r--r--platform/android/java_godot_lib_jni.h2
-rw-r--r--platform/android/java_godot_wrapper.cpp14
-rw-r--r--platform/android/java_godot_wrapper.h3
-rw-r--r--platform/android/os_android.cpp65
-rw-r--r--platform/android/os_android.h11
-rw-r--r--platform/javascript/export/export_plugin.cpp9
-rw-r--r--platform/javascript/package-lock.json12
-rw-r--r--platform/linuxbsd/display_server_x11.cpp17
-rw-r--r--platform/linuxbsd/display_server_x11.h2
-rw-r--r--platform/linuxbsd/export/export.cpp114
-rw-r--r--platform/linuxbsd/export/export_plugin.cpp130
-rw-r--r--platform/linuxbsd/export/export_plugin.h5
-rw-r--r--platform/osx/display_server_osx.h41
-rw-r--r--platform/osx/display_server_osx.mm545
-rw-r--r--platform/osx/godot_menu_item.h11
-rw-r--r--platform/uwp/export/export_plugin.cpp8
-rw-r--r--platform/windows/display_server_windows.cpp18
-rw-r--r--platform/windows/display_server_windows.h2
-rw-r--r--platform/windows/export/export.cpp79
-rw-r--r--platform/windows/export/export_plugin.cpp81
-rw-r--r--platform/windows/export/export_plugin.h3
-rw-r--r--scene/2d/animated_sprite_2d.cpp2
-rw-r--r--scene/2d/canvas_modulate.cpp2
-rw-r--r--scene/2d/collision_object_2d.cpp4
-rw-r--r--scene/2d/collision_polygon_2d.cpp8
-rw-r--r--scene/2d/collision_shape_2d.cpp6
-rw-r--r--scene/2d/cpu_particles_2d.cpp2
-rw-r--r--scene/2d/gpu_particles_2d.cpp6
-rw-r--r--scene/2d/joint_2d.cpp10
-rw-r--r--scene/2d/light_2d.cpp2
-rw-r--r--scene/2d/light_occluder_2d.cpp4
-rw-r--r--scene/2d/navigation_agent_2d.cpp2
-rw-r--r--scene/2d/navigation_obstacle_2d.cpp2
-rw-r--r--scene/2d/navigation_region_2d.cpp2
-rw-r--r--scene/2d/parallax_layer.cpp2
-rw-r--r--scene/2d/path_2d.cpp2
-rw-r--r--scene/2d/physical_bone_2d.cpp6
-rw-r--r--scene/2d/physics_body_2d.cpp4
-rw-r--r--scene/2d/remote_transform_2d.cpp2
-rw-r--r--scene/2d/shape_cast_2d.cpp2
-rw-r--r--scene/2d/skeleton_2d.cpp6
-rw-r--r--scene/2d/tile_map.cpp2
-rw-r--r--scene/3d/bone_attachment_3d.cpp6
-rw-r--r--scene/3d/collision_object_3d.cpp2
-rw-r--r--scene/3d/collision_polygon_3d.cpp4
-rw-r--r--scene/3d/collision_shape_3d.cpp6
-rw-r--r--scene/3d/collision_shape_3d.h1
-rw-r--r--scene/3d/cpu_particles_3d.cpp4
-rw-r--r--scene/3d/decal.cpp6
-rw-r--r--scene/3d/gpu_particles_3d.cpp16
-rw-r--r--scene/3d/joint_3d.cpp10
-rw-r--r--scene/3d/light_3d.cpp6
-rw-r--r--scene/3d/light_3d.h1
-rw-r--r--scene/3d/lightmap_gi.cpp16
-rw-r--r--scene/3d/navigation_agent_3d.cpp2
-rw-r--r--scene/3d/navigation_obstacle_3d.cpp2
-rw-r--r--scene/3d/navigation_region_3d.cpp2
-rw-r--r--scene/3d/node_3d.h1
-rw-r--r--scene/3d/occluder_instance_3d.cpp10
-rw-r--r--scene/3d/path_3d.cpp4
-rw-r--r--scene/3d/physics_body_3d.cpp4
-rw-r--r--scene/3d/remote_transform_3d.cpp2
-rw-r--r--scene/3d/skeleton_3d.cpp1
-rw-r--r--scene/3d/soft_dynamic_body_3d.cpp4
-rw-r--r--scene/3d/sprite_3d.cpp2
-rw-r--r--scene/3d/vehicle_body_3d.cpp2
-rw-r--r--scene/3d/visual_instance_3d.cpp6
-rw-r--r--scene/3d/visual_instance_3d.h1
-rw-r--r--scene/3d/voxel_gi.cpp4
-rw-r--r--scene/3d/world_environment.cpp4
-rw-r--r--scene/3d/xr_nodes.cpp12
-rw-r--r--scene/animation/animation_player.cpp2
-rw-r--r--scene/animation/animation_player.h1
-rw-r--r--scene/animation/animation_tree.cpp8
-rw-r--r--scene/animation/tween.cpp12
-rw-r--r--scene/animation/tween.h1
-rw-r--r--scene/gui/code_edit.cpp32
-rw-r--r--scene/gui/code_edit.h8
-rw-r--r--scene/gui/color_picker.cpp2
-rw-r--r--scene/gui/container.cpp2
-rw-r--r--scene/gui/control.cpp10
-rw-r--r--scene/gui/control.h3
-rw-r--r--scene/gui/dialogs.cpp18
-rw-r--r--scene/gui/dialogs.h4
-rw-r--r--scene/gui/progress_bar.cpp2
-rw-r--r--scene/gui/range.cpp4
-rw-r--r--scene/gui/rich_text_label.cpp2
-rw-r--r--scene/gui/scroll_container.cpp2
-rw-r--r--scene/gui/subviewport_container.cpp21
-rw-r--r--scene/gui/subviewport_container.h2
-rw-r--r--scene/gui/tab_bar.cpp100
-rw-r--r--scene/gui/tab_bar.h1
-rw-r--r--scene/gui/tab_container.cpp57
-rw-r--r--scene/gui/texture_progress_bar.cpp18
-rw-r--r--scene/gui/tree.cpp7
-rw-r--r--scene/gui/tree.h2
-rw-r--r--scene/main/canvas_item.cpp1
-rw-r--r--scene/main/http_request.cpp6
-rw-r--r--scene/main/http_request.h6
-rw-r--r--scene/main/node.cpp24
-rw-r--r--scene/main/node.h9
-rw-r--r--scene/main/scene_tree.cpp20
-rw-r--r--scene/main/scene_tree.h4
-rw-r--r--scene/main/shader_globals_override.cpp2
-rw-r--r--scene/main/timer.cpp2
-rw-r--r--scene/main/viewport.cpp136
-rw-r--r--scene/main/viewport.h6
-rw-r--r--scene/main/window.cpp17
-rw-r--r--scene/main/window.h2
-rw-r--r--scene/register_scene_types.cpp2
-rw-r--r--scene/resources/audio_stream_sample.h1
-rw-r--r--scene/resources/capsule_shape_2d.cpp4
-rw-r--r--scene/resources/capsule_shape_3d.cpp5
-rw-r--r--scene/resources/circle_shape_2d.cpp2
-rw-r--r--scene/resources/cylinder_shape_3d.cpp5
-rw-r--r--scene/resources/default_theme/SCsub4
-rw-r--r--scene/resources/default_theme/default_theme.cpp4
-rw-r--r--scene/resources/default_theme/tabs_drop_mark.svg1
-rw-r--r--scene/resources/environment.cpp16
-rw-r--r--scene/resources/font.cpp60
-rw-r--r--scene/resources/gradient.cpp2
-rw-r--r--scene/resources/height_map_shape_3d.cpp5
-rw-r--r--scene/resources/packed_scene.cpp8
-rw-r--r--scene/resources/separation_ray_shape_2d.cpp2
-rw-r--r--scene/resources/separation_ray_shape_3d.cpp2
-rw-r--r--scene/resources/sphere_shape_3d.cpp3
-rw-r--r--scene/resources/texture.cpp308
-rw-r--r--scene/resources/texture.h72
-rw-r--r--scene/resources/tile_set.cpp2
-rw-r--r--scene/resources/visual_shader.cpp15
-rw-r--r--scene/resources/visual_shader_nodes.cpp26
-rw-r--r--scene/resources/visual_shader_particle_nodes.cpp8
-rw-r--r--scene/resources/world_boundary_shape_2d.cpp2
-rw-r--r--servers/audio/effects/audio_effect_record.cpp9
-rw-r--r--servers/audio/effects/audio_effect_record.h1
-rw-r--r--servers/display_server.cpp145
-rw-r--r--servers/display_server.h40
-rw-r--r--servers/extensions/SCsub5
-rw-r--r--servers/extensions/physics_server_3d_extension.h6
-rw-r--r--servers/physics_2d/godot_broad_phase_2d_bvh.cpp6
-rw-r--r--servers/physics_2d/godot_space_2d.cpp2
-rw-r--r--servers/physics_3d/godot_broad_phase_3d_bvh.cpp6
-rw-r--r--servers/physics_3d/godot_space_3d.cpp2
-rw-r--r--servers/rendering/dummy/rasterizer_dummy.h6
-rw-r--r--servers/rendering/dummy/rasterizer_storage_dummy.h72
-rw-r--r--servers/rendering/dummy/storage/decal_atlas_storage.h62
-rw-r--r--servers/rendering/dummy/storage/material_storage.h95
-rw-r--r--servers/rendering/renderer_canvas_cull.cpp5
-rw-r--r--servers/rendering/renderer_compositor.h4
-rw-r--r--servers/rendering/renderer_rd/forward_clustered/render_forward_clustered.cpp36
-rw-r--r--servers/rendering/renderer_rd/forward_clustered/scene_shader_forward_clustered.cpp53
-rw-r--r--servers/rendering/renderer_rd/forward_clustered/scene_shader_forward_clustered.h14
-rw-r--r--servers/rendering/renderer_rd/forward_mobile/render_forward_mobile.cpp35
-rw-r--r--servers/rendering/renderer_rd/forward_mobile/scene_shader_forward_mobile.cpp53
-rw-r--r--servers/rendering/renderer_rd/forward_mobile/scene_shader_forward_mobile.h14
-rw-r--r--servers/rendering/renderer_rd/renderer_canvas_render_rd.cpp92
-rw-r--r--servers/rendering/renderer_rd/renderer_canvas_render_rd.h28
-rw-r--r--servers/rendering/renderer_rd/renderer_compositor_rd.cpp4
-rw-r--r--servers/rendering/renderer_rd/renderer_compositor_rd.h8
-rw-r--r--servers/rendering/renderer_rd/renderer_scene_render_rd.cpp122
-rw-r--r--servers/rendering/renderer_rd/renderer_scene_render_rd.h16
-rw-r--r--servers/rendering/renderer_rd/renderer_scene_sky_rd.cpp89
-rw-r--r--servers/rendering/renderer_rd/renderer_scene_sky_rd.h14
-rw-r--r--servers/rendering/renderer_rd/renderer_storage_rd.cpp2763
-rw-r--r--servers/rendering/renderer_rd/renderer_storage_rd.h413
-rw-r--r--servers/rendering/renderer_rd/shaders/scene_forward_clustered.glsl2
-rw-r--r--servers/rendering/renderer_rd/storage_rd/decal_atlas_storage.cpp437
-rw-r--r--servers/rendering/renderer_rd/storage_rd/decal_atlas_storage.h211
-rw-r--r--servers/rendering/renderer_rd/storage_rd/material_storage.cpp2392
-rw-r--r--servers/rendering/renderer_rd/storage_rd/material_storage.h315
-rw-r--r--servers/rendering/renderer_rd/storage_rd/texture_storage.cpp18
-rw-r--r--servers/rendering/renderer_rd/uniform_set_cache_rd.cpp2
-rw-r--r--servers/rendering/renderer_scene_cull.cpp50
-rw-r--r--servers/rendering/renderer_storage.h81
-rw-r--r--servers/rendering/rendering_device.h2
-rw-r--r--servers/rendering/rendering_server_default.cpp2
-rw-r--r--servers/rendering/rendering_server_default.h33
-rw-r--r--servers/rendering/rendering_server_globals.cpp2
-rw-r--r--servers/rendering/rendering_server_globals.h4
-rw-r--r--servers/rendering/shader_language.cpp64
-rw-r--r--servers/rendering/shader_language.h2
-rw-r--r--servers/rendering/shader_types.cpp1
-rw-r--r--servers/rendering/storage/decal_atlas_storage.h60
-rw-r--r--servers/rendering/storage/material_storage.h101
-rw-r--r--tests/core/io/test_resource.h6
-rw-r--r--tests/core/math/test_astar.h14
-rw-r--r--tests/core/math/test_color.h18
-rw-r--r--tests/core/object/test_object.h2
-rw-r--r--thirdparty/README.md48
-rw-r--r--thirdparty/basis_universal/encoder/apg_bmp.c541
-rw-r--r--thirdparty/basis_universal/encoder/apg_bmp.h123
-rw-r--r--thirdparty/basis_universal/encoder/basisu_astc_decomp.cpp1561
-rw-r--r--thirdparty/basis_universal/encoder/basisu_astc_decomp.h43
-rw-r--r--thirdparty/basis_universal/encoder/basisu_backend.cpp629
-rw-r--r--thirdparty/basis_universal/encoder/basisu_backend.h99
-rw-r--r--thirdparty/basis_universal/encoder/basisu_comp.cpp834
-rw-r--r--thirdparty/basis_universal/encoder/basisu_comp.h169
-rw-r--r--thirdparty/basis_universal/encoder/basisu_enc.cpp222
-rw-r--r--thirdparty/basis_universal/encoder/basisu_enc.h409
-rw-r--r--thirdparty/basis_universal/encoder/basisu_etc.cpp17
-rw-r--r--thirdparty/basis_universal/encoder/basisu_etc.h29
-rw-r--r--thirdparty/basis_universal/encoder/basisu_frontend.cpp1789
-rw-r--r--thirdparty/basis_universal/encoder/basisu_frontend.h45
-rw-r--r--thirdparty/basis_universal/encoder/basisu_global_selector_palette_helpers.cpp71
-rw-r--r--thirdparty/basis_universal/encoder/basisu_global_selector_palette_helpers.h46
-rw-r--r--thirdparty/basis_universal/encoder/basisu_gpu_texture.cpp8
-rw-r--r--thirdparty/basis_universal/encoder/basisu_kernels_declares.h2
-rw-r--r--thirdparty/basis_universal/encoder/basisu_kernels_imp.h63
-rw-r--r--thirdparty/basis_universal/encoder/basisu_kernels_sse.cpp2
-rw-r--r--thirdparty/basis_universal/encoder/basisu_miniz.h27
-rw-r--r--thirdparty/basis_universal/encoder/basisu_ocl_kernels.h1439
-rw-r--r--thirdparty/basis_universal/encoder/basisu_opencl.cpp1332
-rw-r--r--thirdparty/basis_universal/encoder/basisu_opencl.h143
-rw-r--r--thirdparty/basis_universal/encoder/basisu_uastc_enc.cpp24
-rw-r--r--thirdparty/basis_universal/encoder/cppspmd_sse.h23
-rw-r--r--thirdparty/basis_universal/encoder/jpgd.cpp19
-rw-r--r--thirdparty/basis_universal/encoder/lodepng.cpp6008
-rw-r--r--thirdparty/basis_universal/encoder/lodepng.h1930
-rw-r--r--thirdparty/basis_universal/encoder/pvpngreader.cpp2662
-rw-r--r--thirdparty/basis_universal/encoder/pvpngreader.h48
-rw-r--r--thirdparty/basis_universal/transcoder/basisu.h10
-rw-r--r--thirdparty/basis_universal/transcoder/basisu_containers.h83
-rw-r--r--thirdparty/basis_universal/transcoder/basisu_containers_impl.h8
-rw-r--r--thirdparty/basis_universal/transcoder/basisu_global_selector_cb.h272
-rw-r--r--thirdparty/basis_universal/transcoder/basisu_global_selector_palette.h675
-rw-r--r--thirdparty/basis_universal/transcoder/basisu_transcoder.cpp271
-rw-r--r--thirdparty/basis_universal/transcoder/basisu_transcoder.h15
-rw-r--r--thirdparty/basis_universal/transcoder/basisu_transcoder_internal.h24
-rw-r--r--thirdparty/basis_universal/transcoder/basisu_transcoder_uastc.h4
-rw-r--r--thirdparty/brotli/LICENSE19
-rw-r--r--thirdparty/brotli/common/constants.c15
-rw-r--r--thirdparty/brotli/common/constants.h200
-rw-r--r--thirdparty/brotli/common/context.c156
-rw-r--r--thirdparty/brotli/common/context.h113
-rw-r--r--thirdparty/brotli/common/dictionary.c5916
-rw-r--r--thirdparty/brotli/common/dictionary.h64
-rw-r--r--thirdparty/brotli/common/platform.c22
-rw-r--r--thirdparty/brotli/common/platform.h576
-rw-r--r--thirdparty/brotli/common/shared_dictionary.c515
-rw-r--r--thirdparty/brotli/common/shared_dictionary_internal.h74
-rw-r--r--thirdparty/brotli/common/transform.c291
-rw-r--r--thirdparty/brotli/common/transform.h85
-rw-r--r--thirdparty/brotli/common/version.h26
-rw-r--r--thirdparty/brotli/dec/bit_reader.c76
-rw-r--r--thirdparty/brotli/dec/bit_reader.h361
-rw-r--r--thirdparty/brotli/dec/decode.c2802
-rw-r--r--thirdparty/brotli/dec/huffman.c339
-rw-r--r--thirdparty/brotli/dec/huffman.h121
-rw-r--r--thirdparty/brotli/dec/prefix.h732
-rw-r--r--thirdparty/brotli/dec/state.c165
-rw-r--r--thirdparty/brotli/dec/state.h380
-rw-r--r--thirdparty/brotli/include/brotli/decode.h368
-rw-r--r--thirdparty/brotli/include/brotli/encode.h501
-rw-r--r--thirdparty/brotli/include/brotli/port.h313
-rw-r--r--thirdparty/brotli/include/brotli/shared_dictionary.h97
-rw-r--r--thirdparty/brotli/include/brotli/types.h83
-rw-r--r--thirdparty/fonts/DroidSansFallback.ttfbin3640264 -> 0 bytes
-rw-r--r--thirdparty/fonts/DroidSansFallback.woff2bin0 -> 1192544 bytes
-rw-r--r--thirdparty/fonts/DroidSansJapanese.ttfbin1173140 -> 0 bytes
-rw-r--r--thirdparty/fonts/DroidSansJapanese.woff2bin0 -> 450032 bytes
-rw-r--r--thirdparty/fonts/JetBrainsMono_Regular.ttfbin203952 -> 0 bytes
-rw-r--r--thirdparty/fonts/JetBrainsMono_Regular.woff2bin0 -> 69168 bytes
-rw-r--r--thirdparty/fonts/NotoNaskhArabicUI_Bold.ttfbin148972 -> 0 bytes
-rw-r--r--thirdparty/fonts/NotoNaskhArabicUI_Bold.woff2bin0 -> 57612 bytes
-rw-r--r--thirdparty/fonts/NotoNaskhArabicUI_Regular.ttfbin150460 -> 0 bytes
-rw-r--r--thirdparty/fonts/NotoNaskhArabicUI_Regular.woff2bin0 -> 57340 bytes
-rw-r--r--thirdparty/fonts/NotoSansBengaliUI_Bold.ttfbin123308 -> 0 bytes
-rw-r--r--thirdparty/fonts/NotoSansBengaliUI_Bold.woff2bin0 -> 44496 bytes
-rw-r--r--thirdparty/fonts/NotoSansBengaliUI_Regular.ttfbin125436 -> 0 bytes
-rw-r--r--thirdparty/fonts/NotoSansBengaliUI_Regular.woff2bin0 -> 43568 bytes
-rw-r--r--thirdparty/fonts/NotoSansDevanagariUI_Bold.ttfbin146272 -> 0 bytes
-rw-r--r--thirdparty/fonts/NotoSansDevanagariUI_Bold.woff2bin0 -> 44084 bytes
-rw-r--r--thirdparty/fonts/NotoSansDevanagariUI_Regular.ttfbin145348 -> 0 bytes
-rw-r--r--thirdparty/fonts/NotoSansDevanagariUI_Regular.woff2bin0 -> 43724 bytes
-rw-r--r--thirdparty/fonts/NotoSansGeorgian_Bold.ttfbin27024 -> 0 bytes
-rw-r--r--thirdparty/fonts/NotoSansGeorgian_Bold.woff2bin0 -> 11660 bytes
-rw-r--r--thirdparty/fonts/NotoSansGeorgian_Regular.ttfbin26940 -> 0 bytes
-rw-r--r--thirdparty/fonts/NotoSansGeorgian_Regular.woff2bin0 -> 11340 bytes
-rw-r--r--thirdparty/fonts/NotoSansHebrew_Bold.ttfbin17592 -> 0 bytes
-rw-r--r--thirdparty/fonts/NotoSansHebrew_Bold.woff2bin0 -> 6692 bytes
-rw-r--r--thirdparty/fonts/NotoSansHebrew_Regular.ttfbin17556 -> 0 bytes
-rw-r--r--thirdparty/fonts/NotoSansHebrew_Regular.woff2bin0 -> 6680 bytes
-rw-r--r--thirdparty/fonts/NotoSansMalayalamUI_Bold.ttfbin61084 -> 0 bytes
-rw-r--r--thirdparty/fonts/NotoSansMalayalamUI_Bold.woff2bin0 -> 22736 bytes
-rw-r--r--thirdparty/fonts/NotoSansMalayalamUI_Regular.ttfbin61264 -> 0 bytes
-rw-r--r--thirdparty/fonts/NotoSansMalayalamUI_Regular.woff2bin0 -> 23080 bytes
-rw-r--r--thirdparty/fonts/NotoSansOriyaUI_Bold.ttfbin96424 -> 0 bytes
-rw-r--r--thirdparty/fonts/NotoSansOriyaUI_Bold.woff2bin0 -> 36520 bytes
-rw-r--r--thirdparty/fonts/NotoSansOriyaUI_Regular.ttfbin96996 -> 0 bytes
-rw-r--r--thirdparty/fonts/NotoSansOriyaUI_Regular.woff2bin0 -> 36020 bytes
-rw-r--r--thirdparty/fonts/NotoSansSinhalaUI_Bold.ttfbin183444 -> 0 bytes
-rw-r--r--thirdparty/fonts/NotoSansSinhalaUI_Bold.woff2bin0 -> 40128 bytes
-rw-r--r--thirdparty/fonts/NotoSansSinhalaUI_Regular.ttfbin188112 -> 0 bytes
-rw-r--r--thirdparty/fonts/NotoSansSinhalaUI_Regular.woff2bin0 -> 40124 bytes
-rw-r--r--thirdparty/fonts/NotoSansTamilUI_Bold.ttfbin44588 -> 0 bytes
-rw-r--r--thirdparty/fonts/NotoSansTamilUI_Bold.woff2bin0 -> 17400 bytes
-rw-r--r--thirdparty/fonts/NotoSansTamilUI_Regular.ttfbin44820 -> 0 bytes
-rw-r--r--thirdparty/fonts/NotoSansTamilUI_Regular.woff2bin0 -> 17160 bytes
-rw-r--r--thirdparty/fonts/NotoSansTeluguUI_Bold.ttfbin127720 -> 0 bytes
-rw-r--r--thirdparty/fonts/NotoSansTeluguUI_Bold.woff2bin0 -> 37228 bytes
-rw-r--r--thirdparty/fonts/NotoSansTeluguUI_Regular.ttfbin127912 -> 0 bytes
-rw-r--r--thirdparty/fonts/NotoSansTeluguUI_Regular.woff2bin0 -> 36816 bytes
-rw-r--r--thirdparty/fonts/NotoSansThaiUI_Bold.ttfbin21820 -> 0 bytes
-rw-r--r--thirdparty/fonts/NotoSansThaiUI_Bold.woff2bin0 -> 9420 bytes
-rw-r--r--thirdparty/fonts/NotoSansThaiUI_Regular.ttfbin22044 -> 0 bytes
-rw-r--r--thirdparty/fonts/NotoSansThaiUI_Regular.woff2bin0 -> 9468 bytes
-rw-r--r--thirdparty/fonts/NotoSans_Bold.ttfbin313792 -> 0 bytes
-rw-r--r--thirdparty/fonts/NotoSans_Bold.woff2bin0 -> 115376 bytes
-rw-r--r--thirdparty/fonts/NotoSans_Regular.ttfbin313144 -> 0 bytes
-rw-r--r--thirdparty/fonts/NotoSans_Regular.woff2bin0 -> 117840 bytes
-rw-r--r--thirdparty/fonts/OpenSans_SemiBold.ttfbin100820 -> 0 bytes
-rw-r--r--thirdparty/fonts/OpenSans_SemiBold.woff2bin0 -> 46392 bytes
-rw-r--r--thirdparty/harfbuzz/src/OT/Layout/GSUB/AlternateSet.hh110
-rw-r--r--thirdparty/harfbuzz/src/OT/Layout/GSUB/AlternateSubst.hh51
-rw-r--r--thirdparty/harfbuzz/src/OT/Layout/GSUB/AlternateSubstFormat1.hh128
-rw-r--r--thirdparty/harfbuzz/src/OT/Layout/GSUB/ChainContextSubst.hh18
-rw-r--r--thirdparty/harfbuzz/src/OT/Layout/GSUB/Common.hh21
-rw-r--r--thirdparty/harfbuzz/src/OT/Layout/GSUB/ContextSubst.hh18
-rw-r--r--thirdparty/harfbuzz/src/OT/Layout/GSUB/ExtensionSubst.hh22
-rw-r--r--thirdparty/harfbuzz/src/OT/Layout/GSUB/GSUB.hh58
-rw-r--r--thirdparty/harfbuzz/src/OT/Layout/GSUB/Ligature.hh135
-rw-r--r--thirdparty/harfbuzz/src/OT/Layout/GSUB/LigatureSet.hh118
-rw-r--r--thirdparty/harfbuzz/src/OT/Layout/GSUB/LigatureSubst.hh59
-rw-r--r--thirdparty/harfbuzz/src/OT/Layout/GSUB/LigatureSubstFormat1.hh165
-rw-r--r--thirdparty/harfbuzz/src/OT/Layout/GSUB/MultipleSubst.hh53
-rw-r--r--thirdparty/harfbuzz/src/OT/Layout/GSUB/MultipleSubstFormat1.hh120
-rw-r--r--thirdparty/harfbuzz/src/OT/Layout/GSUB/ReverseChainSingleSubst.hh36
-rw-r--r--thirdparty/harfbuzz/src/OT/Layout/GSUB/ReverseChainSingleSubstFormat1.hh228
-rw-r--r--thirdparty/harfbuzz/src/OT/Layout/GSUB/Sequence.hh103
-rw-r--r--thirdparty/harfbuzz/src/OT/Layout/GSUB/SingleSubst.hh75
-rw-r--r--thirdparty/harfbuzz/src/OT/Layout/GSUB/SingleSubstFormat1.hh122
-rw-r--r--thirdparty/harfbuzz/src/OT/Layout/GSUB/SingleSubstFormat2.hh120
-rw-r--r--thirdparty/harfbuzz/src/OT/Layout/GSUB/SubstLookup.hh224
-rw-r--r--thirdparty/harfbuzz/src/OT/Layout/GSUB/SubstLookupSubTable.hh77
-rw-r--r--thirdparty/harfbuzz/src/hb-bit-page.hh72
-rw-r--r--thirdparty/harfbuzz/src/hb-bit-set-invertible.hh8
-rw-r--r--thirdparty/harfbuzz/src/hb-bit-set.hh102
-rw-r--r--thirdparty/harfbuzz/src/hb-buffer.cc2
-rw-r--r--thirdparty/harfbuzz/src/hb-coretext.cc18
-rw-r--r--thirdparty/harfbuzz/src/hb-ft.cc1
-rw-r--r--thirdparty/harfbuzz/src/hb-ot-cmap-table.hh4
-rw-r--r--thirdparty/harfbuzz/src/hb-ot-font.cc38
-rw-r--r--thirdparty/harfbuzz/src/hb-ot-glyf-table.hh3
-rw-r--r--thirdparty/harfbuzz/src/hb-ot-hmtx-table.hh7
-rw-r--r--thirdparty/harfbuzz/src/hb-ot-layout-common.hh61
-rw-r--r--thirdparty/harfbuzz/src/hb-ot-layout-gsub-table.hh1721
-rw-r--r--thirdparty/harfbuzz/src/hb-ot-layout-gsubgpos.hh41
-rw-r--r--thirdparty/harfbuzz/src/hb-ot-layout.cc131
-rw-r--r--thirdparty/harfbuzz/src/hb-ot-layout.hh21
-rw-r--r--thirdparty/harfbuzz/src/hb-ot-map.cc8
-rw-r--r--thirdparty/harfbuzz/src/hb-ot-map.hh8
-rw-r--r--thirdparty/harfbuzz/src/hb-ot-metrics.cc4
-rw-r--r--thirdparty/harfbuzz/src/hb-ot-shape-complex-indic.cc40
-rw-r--r--thirdparty/harfbuzz/src/hb-ot-shape-complex-indic.hh1
-rw-r--r--thirdparty/harfbuzz/src/hb-ot-shape-complex-khmer.cc22
-rw-r--r--thirdparty/harfbuzz/src/hb-ot-shape-complex-myanmar.cc8
-rw-r--r--thirdparty/harfbuzz/src/hb-ot-shape-complex-use-machine.hh891
-rw-r--r--thirdparty/harfbuzz/src/hb-ot-shape-complex-use-table.hh28
-rw-r--r--thirdparty/harfbuzz/src/hb-ot-shape-complex-use.cc17
-rw-r--r--thirdparty/harfbuzz/src/hb-ot-shape.cc10
-rw-r--r--thirdparty/harfbuzz/src/hb-ot-var-gvar-table.hh5
-rw-r--r--thirdparty/harfbuzz/src/hb-set.cc48
-rw-r--r--thirdparty/harfbuzz/src/hb-set.h11
-rw-r--r--thirdparty/harfbuzz/src/hb-set.hh3
-rw-r--r--thirdparty/harfbuzz/src/hb-static.cc2
-rw-r--r--thirdparty/harfbuzz/src/hb-subset-plan.cc4
-rw-r--r--thirdparty/harfbuzz/src/hb-subset.cc4
-rw-r--r--thirdparty/harfbuzz/src/hb-version.h6
-rw-r--r--thirdparty/minizip/crypt.h19
-rw-r--r--thirdparty/minizip/ioapi.c18
-rw-r--r--thirdparty/minizip/ioapi.h8
-rw-r--r--thirdparty/minizip/patches/godot-seek.patch (renamed from thirdparty/minizip/godot-zlib-1.2.4-minizip-seek.patch)63
-rw-r--r--thirdparty/minizip/patches/unbreak-gentoo.patch (renamed from thirdparty/minizip/godot-zlib-1.2.4-minizip-unbreak-gentoo.patch)0
-rw-r--r--thirdparty/minizip/unzip.c60
-rw-r--r--thirdparty/minizip/unzip.h12
-rw-r--r--thirdparty/minizip/zip.c36
-rw-r--r--thirdparty/minizip/zip.h17
-rw-r--r--thirdparty/misc/open-simplex-noise-LICENSE25
-rw-r--r--thirdparty/misc/open-simplex-noise-no-allocate.patch133
-rw-r--r--thirdparty/misc/open-simplex-noise.c2255
-rw-r--r--thirdparty/misc/open-simplex-noise.h58
-rw-r--r--thirdparty/noise/FastNoise-LICENSE22
-rw-r--r--thirdparty/noise/FastNoiseLite.h2589
-rw-r--r--thirdparty/noise/patches/FastNoiseLite.patch18
-rw-r--r--thirdparty/vulkan/patches/VMA-use-volk.patch2
-rw-r--r--thirdparty/vulkan/vk_mem_alloc.h1744
-rw-r--r--thirdparty/zlib/crc32.c1258
-rw-r--r--thirdparty/zlib/crc32.h9877
-rw-r--r--thirdparty/zlib/deflate.c108
-rw-r--r--thirdparty/zlib/deflate.h27
-rw-r--r--thirdparty/zlib/gzguts.h5
-rw-r--r--thirdparty/zlib/gzlib.c8
-rw-r--r--thirdparty/zlib/gzread.c12
-rw-r--r--thirdparty/zlib/gzwrite.c38
-rw-r--r--thirdparty/zlib/infback.c3
-rw-r--r--thirdparty/zlib/inffast.c28
-rw-r--r--thirdparty/zlib/inflate.c47
-rw-r--r--thirdparty/zlib/inflate.h5
-rw-r--r--thirdparty/zlib/inftrees.c6
-rw-r--r--thirdparty/zlib/trees.c75
-rw-r--r--thirdparty/zlib/zlib.h223
-rw-r--r--thirdparty/zlib/zutil.c4
-rw-r--r--thirdparty/zlib/zutil.h21
889 files changed, 222619 insertions, 73470 deletions
diff --git a/.github/actions/godot-build/action.yml b/.github/actions/godot-build/action.yml
index 5ed64e7de2..7af3516f71 100644
--- a/.github/actions/godot-build/action.yml
+++ b/.github/actions/godot-build/action.yml
@@ -20,7 +20,9 @@ inputs:
default: "${{ github.workspace }}/.scons-cache/"
scons-cache-limit:
description: The scons cache size limit.
- default: 4096
+ # actions/cache has 10 GiB limit, and GitHub runners have a 14 GiB disk.
+ # Limit to 7 GiB to avoid having the extracted cache fill the disk.
+ default: 7168
runs:
using: "composite"
steps:
@@ -32,5 +34,6 @@ runs:
SCONS_CACHE_LIMIT: ${{ inputs.scons-cache-limit }}
run: |
echo "Building with flags:" ${{ env.SCONSFLAGS }}
+ if ! ${{ inputs.tools }}; then rm -rf editor; fi # Ensure we don't include editor code.
scons p=${{ inputs.platform }} target=${{ inputs.target }} tools=${{ inputs.tools }} tests=${{ inputs.tests }} --jobs=2 ${{ env.SCONSFLAGS }}
ls -l bin/
diff --git a/.github/actions/godot-cache/action.yml b/.github/actions/godot-cache/action.yml
index db14a0b97a..2d7afc8514 100644
--- a/.github/actions/godot-cache/action.yml
+++ b/.github/actions/godot-cache/action.yml
@@ -12,7 +12,7 @@ runs:
steps:
# Upload cache on completion and check it out now
- name: Load .scons_cache directory
- uses: actions/cache@v2
+ uses: actions/cache@v3
with:
path: ${{inputs.scons-cache}}
key: ${{inputs.cache-name}}-${{env.GODOT_BASE_BRANCH}}-${{github.ref}}-${{github.sha}}
diff --git a/.github/workflows/android_builds.yml b/.github/workflows/android_builds.yml
index dd3622f1f0..a9a580247b 100644
--- a/.github/workflows/android_builds.yml
+++ b/.github/workflows/android_builds.yml
@@ -3,6 +3,7 @@ on: [push, pull_request]
# Global Settings
env:
+ # Only used for the cache key. Increment version to force clean build.
GODOT_BASE_BRANCH: master
SCONSFLAGS: verbose=yes warnings=extra werror=yes debug_symbols=no module_text_server_fb_enabled=yes
diff --git a/.github/workflows/ios_builds.yml b/.github/workflows/ios_builds.yml
index cd9c7ec117..40f091e234 100644
--- a/.github/workflows/ios_builds.yml
+++ b/.github/workflows/ios_builds.yml
@@ -3,6 +3,7 @@ on: [push, pull_request]
# Global Settings
env:
+ # Only used for the cache key. Increment version to force clean build.
GODOT_BASE_BRANCH: master
SCONSFLAGS: verbose=yes warnings=extra werror=yes debug_symbols=no module_text_server_fb_enabled=yes
diff --git a/.github/workflows/javascript_builds.yml b/.github/workflows/javascript_builds.yml
index 9163baab0f..395dfdd7f5 100644
--- a/.github/workflows/javascript_builds.yml
+++ b/.github/workflows/javascript_builds.yml
@@ -3,6 +3,7 @@ on: [push, pull_request]
# Global Settings
env:
+ # Only used for the cache key. Increment version to force clean build.
GODOT_BASE_BRANCH: master
SCONSFLAGS: verbose=yes warnings=extra werror=yes debug_symbols=no
EM_VERSION: 2.0.27
diff --git a/.github/workflows/linux_builds.yml b/.github/workflows/linux_builds.yml
index 0776dc77eb..c9f1b2f41e 100644
--- a/.github/workflows/linux_builds.yml
+++ b/.github/workflows/linux_builds.yml
@@ -3,7 +3,8 @@ on: [push, pull_request]
# Global Settings
env:
- GODOT_BASE_BRANCH: master
+ # Only used for the cache key. Increment version to force clean build.
+ GODOT_BASE_BRANCH: master-v2
SCONSFLAGS: verbose=yes warnings=extra werror=yes module_text_server_fb_enabled=yes
concurrency:
@@ -36,6 +37,8 @@ jobs:
tests: true
sconsflags: float=64 use_asan=yes use_ubsan=yes
proj-test: true
+ # Can be turned off for PRs that intentionally break compat with godot-cpp,
+ # until both the upstream PR and the matching godot-cpp changes are merged.
godot-cpp-test: true
bin: "./bin/godot.linuxbsd.double.tools.64.san"
build-mono: false
diff --git a/.github/workflows/windows_builds.yml b/.github/workflows/windows_builds.yml
index ad870ae58f..4919f34cf0 100644
--- a/.github/workflows/windows_builds.yml
+++ b/.github/workflows/windows_builds.yml
@@ -4,7 +4,8 @@ on: [push, pull_request]
# Global Settings
# SCONS_CACHE for windows must be set in the build environment
env:
- GODOT_BASE_BRANCH: master
+ # Only used for the cache key. Increment version to force clean build.
+ GODOT_BASE_BRANCH: master-v2
SCONSFLAGS: verbose=yes warnings=all werror=yes module_text_server_fb_enabled=yes
SCONS_CACHE_MSVC_CONFIG: true
@@ -26,6 +27,8 @@ jobs:
target: release_debug
tools: true
tests: true
+ # Skip debug symbols, they're way too big with MSVC.
+ sconsflags: debug_symbols=no
bin: "./bin/godot.windows.opt.tools.64.exe"
- name: Template (target=release, tools=no)
@@ -56,7 +59,6 @@ jobs:
target: ${{ matrix.target }}
tools: ${{ matrix.tools }}
tests: ${{ matrix.tests }}
- scons-cache-limit: 3072
# Execute unit tests for the editor
- name: Unit tests
diff --git a/.gitignore b/.gitignore
index 9327cdde4e..487bdb0fd8 100644
--- a/.gitignore
+++ b/.gitignore
@@ -69,16 +69,14 @@ __pycache__/
doc/_build/
# Android
-.gradle
+.gradle/
local.properties
*.iml
.gradletasknamecache
project.properties
-platform/android/java/lib/.cxx/
-platform/android/java/libs/*
-platform/android/java/app/libs/*
-platform/android/java/lib/.cxx/*
-platform/android/java/nativeSrcsConfigs/.cxx/
+platform/android/java/*/.cxx/
+platform/android/java/*/build/
+platform/android/java/*/libs/
# iOS
*.dSYM
@@ -334,6 +332,9 @@ UpgradeLog*.htm
ServiceFabricBackup/
*.rptproj.bak
+# Hint file for IntelliSense
+cpp.hint
+
###################
### OS specific ###
###################
diff --git a/AUTHORS.md b/AUTHORS.md
index 07a67de77b..4d52e3d1e0 100644
--- a/AUTHORS.md
+++ b/AUTHORS.md
@@ -197,6 +197,7 @@ name is available.
Ray Koopa (RayKoopa)
Rémi Verschelde (akien-mga)
Rhody Lugo (rraallvv)
+ Ricardo Buring (rburing)
Ricardo Subtil (Ev1lbl0w)
Roberto F. Arroyo (robfram)
Robin Hübner (profan)
@@ -232,7 +233,7 @@ name is available.
Wilson E. Alvarez (Rubonnek)
Xavier Cho (mysticfall)
yg2f (SuperUserNameMan)
- Yuri Roubinsky (Chaosus)
+ Yuri Rubinsky (Chaosus)
Yuri Sizov (pycbouh)
Zae Chao (zaevi)
Zak Stam (zaksnet)
diff --git a/COPYRIGHT.txt b/COPYRIGHT.txt
index cfb4778d6b..59c4dc4020 100644
--- a/COPYRIGHT.txt
+++ b/COPYRIGHT.txt
@@ -63,13 +63,6 @@ Copyright: 2011, Ole Kniemeyer, MAXON, www.maxon.net
2014-2022, Godot Engine contributors.
License: Expat and Zlib
-Files: ./modules/fbx/fbx_parser/
-Comment: Open Asset Import Library (FBX parser)
-Copyright: 2006-2020, assimp team
- 2007-2022, Juan Linietsky, Ariel Manzur.
- 2014-2022, Godot Engine contributors.
-License: BSD-3-clause
-
Files: ./platform/android/java/lib/aidl/com/android/*
./platform/android/java/lib/res/layout/status_bar_ongoing_event_progress_bar.xml
./platform/android/java/lib/src/com/google/android/*
@@ -127,9 +120,14 @@ License: Expat
Files: ./thirdparty/basis_universal/
Comment: Basis Universal
-Copyright: 2019, Binomial LLC.
+Copyright: 2022, Binomial LLC.
License: Apache-2.0
+Files: ./thirdparty/brotli/
+Comment: Brotli
+Copyright: 2009, 2010, 2013-2016 by the Brotli Authors.
+License: Expat
+
Files: ./thirdparty/certs/ca-certificates.crt
Comment: CA certificates
Copyright: Mozilla Contributors
@@ -161,17 +159,17 @@ Comment: etcpak
Copyright: 2013-2021, Bartosz Taudul
License: BSD-3-clause
-Files: ./thirdparty/fonts/DroidSans*.ttf
+Files: ./thirdparty/fonts/DroidSans*.woff2
Comment: DroidSans font
Copyright: 2008, The Android Open Source Project
License: Apache-2.0
-Files: ./thirdparty/fonts/JetBrainsMono_Regular.ttf
+Files: ./thirdparty/fonts/JetBrainsMono_Regular.woff2
Comment: JetBrains Mono font
Copyright: 2020, JetBrains s.r.o.
License: OFL-1.1
-Files: ./thirdparty/fonts/NotoSans*.ttf
+Files: ./thirdparty/fonts/NotoSans*.woff2
Comment: Noto Sans font
Copyright: 2012, Google Inc.
License: OFL-1.1
@@ -305,11 +303,10 @@ Comment: Tangent Space Normal Maps implementation
Copyright: 2011, Morten S. Mikkelsen
License: Zlib
-Files: ./thirdparty/misc/open-simplex-noise.c
- ./thirdparty/misc/open-simplex-noise.h
-Comment: OpenSimplex Noise
-Copyright: 2014, Stephen M. Cameron
-License: public-domain or Unlicense
+Files: ./thirdparty/noise/FastNoiseLite.h
+Comment: FastNoise Lite
+Copyright: 2020, Jordan Peck and contributors
+License: MIT
Files: ./thirdparty/misc/pcg.cpp
./thirdparty/misc/pcg.h
diff --git a/DONORS.md b/DONORS.md
index 815ad49958..36fa7a39ad 100644
--- a/DONORS.md
+++ b/DONORS.md
@@ -22,7 +22,6 @@ generous deed immortalized in the next stable release of Godot Engine.
## Silver sponsors
ASIFA-Hollywood <https://www.asifa-hollywood.org>
- LITSLINK <https://litslink.com>
ORE System <https://ore-system.com>
## Bronze sponsors
@@ -36,8 +35,9 @@ generous deed immortalized in the next stable release of Godot Engine.
Hunter Dickson
Kitcat490
Kyle Szklenski
+ Maxim Karsten
Moonwards <https://www.moonwards.com>
- TrampolineTales <http://trampolinetales.com>
+ TrampolineTales <https://trampolinetales.com>
## Mini sponsors
@@ -49,7 +49,6 @@ generous deed immortalized in the next stable release of Godot Engine.
Christian Baune
Christopher Montesano
Christopher Shifflett
- CodeLikeCammy
Daniel Edwards
Darrin Massena
David Mydlarz
@@ -69,8 +68,8 @@ generous deed immortalized in the next stable release of Godot Engine.
Kossi Selom Banybah
Marcel Kräml
Marek Belski
+ Markus Ort
Matthieu Huvé
- Maxim Karsten
Michael
Mike King
Nassor Paulino da Silva
@@ -124,14 +123,12 @@ generous deed immortalized in the next stable release of Godot Engine.
Mathieu
Matthew Hillier
Officine Pixel S.n.c.
- Patrick Brock
Pedro Silva
Retro Village
Rob Messick
Roland Fredenhagen
Ronan Zeegers
Sarksus
- Scott B
Sean
Sergey
Sofox
@@ -145,6 +142,7 @@ generous deed immortalized in the next stable release of Godot Engine.
Victor
Xeno Coliseum
+ Adam Mill
Adam Nakonieczny
Adam Nelson
Adrian Adamiak
@@ -160,14 +158,12 @@ generous deed immortalized in the next stable release of Godot Engine.
Antoni Batchelli
Arch Henderson III
Arthur S. Muszynski
- Brandon Hawkinson
+ c64cosmin
Cameron Connolly
- Carl Kryschi
Charlie Whitfield
Chase Taranto
Chris Petrich
Chris Serino
- Cow
Craig Ostrin
Craig Scarborough
Craig Smith
@@ -180,6 +176,7 @@ generous deed immortalized in the next stable release of Godot Engine.
Daniel Hernández Alcojor
Daniel Tebbutt
Darrian Little
+ Daylon
Dennis Belfrage
Dev To be curious
Dima Fedotov
@@ -187,6 +184,7 @@ generous deed immortalized in the next stable release of Godot Engine.
Dmitriy Khudorozhkov
Donn Eddy
Douglas Hammond
+ EerieExpanse
Eric Brand
Eugenio Hugo Salgüero Jáñez
EXUREI
@@ -198,7 +196,6 @@ generous deed immortalized in the next stable release of Godot Engine.
Gabrielius Vaiškūnas
Gary Hulst
gavlig
- General Chicken
Geoffroy Warin
GGGames.org
gisora
@@ -207,7 +204,7 @@ generous deed immortalized in the next stable release of Godot Engine.
Harry Tumber
Harvey Fong
Heath Hayes
- Horváth Péter
+ Horváth-Lázár Péter
Hu Hund
Hunter Barabas
HurrieCrane
@@ -219,6 +216,7 @@ generous deed immortalized in the next stable release of Godot Engine.
Jean-Sébastien Ross
Jennifer Wilcox
Jeremi Biernacki
+ Jesús Chicharro
Joel Fivat
Johnathan Kupferer
Josef Stumpfegger
@@ -243,6 +241,7 @@ generous deed immortalized in the next stable release of Godot Engine.
Leo Fidel R Liban
Liam Smyth
LoparPanda
+ LordZaruflex
Luca Vazzano
Luke
MadScientistCarl
@@ -256,17 +255,17 @@ generous deed immortalized in the next stable release of Godot Engine.
matt
Matt Greene
Matthew Hall
+ Max Kryschi
medecau
Michael Dürwald
Michael Policastro
- Michael Seawell
+ Miika Moilanen
MikadoSC
Mike Barbee
nate etan
Nick Abousselam
Nicola Cocchiaro
Nicolás Carrasco
- Nicole Barovic
Oliver Dick
Oscar Campos
Paul Hocker
@@ -291,6 +290,7 @@ generous deed immortalized in the next stable release of Godot Engine.
Romeo Disca
Ronnie Ashlock
Ronny Mühle
+ Russ
Ryan Breaker
Ryan Heath
Ryan Scott
@@ -314,7 +314,6 @@ generous deed immortalized in the next stable release of Godot Engine.
Sven F.
Thomas Bjarnelöf
Thomas Kurz
- Tim Howard
Timothy van der Valk
Tobias Bocanegra
Tobias Raggl
@@ -326,7 +325,6 @@ generous deed immortalized in the next stable release of Godot Engine.
Turntsnaco
Valryia
Vincent Cloutier
- Vlad Ceru Opran
VoidPointer
Winston
Wojciech Chojnacki
@@ -353,6 +351,7 @@ generous deed immortalized in the next stable release of Godot Engine.
Aidan O'Flannagain
Aki Mimoto
Alan Beauchamp
+ Albert Gyulgazyan
Alberto Salazar Muñoz
Alberto Vilches
Alder Stefano
@@ -360,7 +359,6 @@ generous deed immortalized in the next stable release of Godot Engine.
AleMax
Ales Jelovcan
Alessandro Senese
- Alexander Ravenheart
Alex Chan
Alex Clavelle
alex raeside
@@ -389,10 +387,9 @@ generous deed immortalized in the next stable release of Godot Engine.
AzulCrescent
b110110
Balázs Batári
- Bálint Horváth
Beau Seymour
+ Behzad Ghaffari
Benedikt
- Benoit Jauvin-Girard
Ben Ridley
Ben Vercammen
Bernd Jänichen
@@ -411,9 +408,9 @@ generous deed immortalized in the next stable release of Godot Engine.
Brodie Fairhall
Bronson Zgeb
Burney Waring
- c64cosmin
Caleb Gartner
Caleb Makela
+ Caliburn
Cameron Meyer
Carlos Rios
Carl van der Geest
@@ -421,7 +418,7 @@ generous deed immortalized in the next stable release of Godot Engine.
Cassidy James
Chad Steadman
Checkpoint Charlie
- Chris Chapin
+ ChrBohm
Chris Jagusch
Chris Langford
Christian Mauduit
@@ -430,15 +427,14 @@ generous deed immortalized in the next stable release of Godot Engine.
Christophe Gagnier
Christopher Chin
Christoph Woinke
+ Codecat
Cody Parker
- CoffeeFingers
Conall O
Conner Lane
Corchari
- Craig Maloney
+ Corey W
Craig Post
Dakota Watkins
- damucz
Daniel Cheney
Daren Scot Wilson
Dave Walker
@@ -450,18 +446,17 @@ generous deed immortalized in the next stable release of Godot Engine.
Devin Carraway
Diego Pereira
Dimitri Roche
- Dmitry Fisher (Raccoon path)
Dmytro Korchynskyi
Dominik Wetzel
Don B
Douglas Plumley
Dragontrapper
Dr Ewan Murray
+ Ducky
Duobix
Duodecimal
Eduardo Teixeira
Edward Herbert
- Edward L
Edward Swartz
Egon Elbre
Elgenzay
@@ -496,18 +491,17 @@ generous deed immortalized in the next stable release of Godot Engine.
Greg Olson
Greyson Richey
Grid
- Grok Games
Grominet
Guillaume Pham Ngoc
Guldoman
+ Guo Hongci
gurehamu
Hal A
Haplo
Hayden Foley
Heribert Hirth
Hinken
- Houdini Blueprints
- Ian ORourke
+ Ian Richard Kunert
Ian Williams
Idilio Alfaro
IndustrialRobot
@@ -543,6 +537,7 @@ generous deed immortalized in the next stable release of Godot Engine.
Joe Hurdle
Joe Klemmer
Joel Höglund
+ John Anders Stav
John Bruce
John Gabriel
Jonas
@@ -566,6 +561,7 @@ generous deed immortalized in the next stable release of Godot Engine.
Josh P
Josh Taylor
Joshua Heidrich
+ Joshua Segall
jromkjrom
Juanfran
Juan Maggi
@@ -575,10 +571,10 @@ generous deed immortalized in the next stable release of Godot Engine.
Julian Murgia
June Little
Justin Hamilton
- Justin Hurst
Justin Oaksford
Justin Spedding
KaDokta
+ Karol Wojtasiuk (Drakonter)
Katsuomi Kobayashi
Keedong Park
keeganstoybox
@@ -607,11 +603,11 @@ generous deed immortalized in the next stable release of Godot Engine.
Laurent CHEA
Laurent Dethoor
Laxman Pradhan
+ Leland Vakarian
LEMMiNO
Leonardo Dimano
Linus Lind Lundgren
Logan Apple
- Luca Poli
Ludovic DELVAL
Luigi Renna
Luis Gaemperle
@@ -624,14 +620,13 @@ generous deed immortalized in the next stable release of Godot Engine.
Mark Malone
Markus Martin
Markus Michael Egger
- Markus Ort
Markus Strompen
Martin FIbik
Martin Holas
+ Martin Linklater
Martin Liška
Martin Trbola
Martin Zabinski
- Mathieu Meissonnier
Matt Edwards
Matthew Booe
Matt Sylvia
@@ -652,7 +647,6 @@ generous deed immortalized in the next stable release of Godot Engine.
Michał Skwarek
Mikael Nordenberg
Mikayla
- Mike
Mike Birkhead
Mike Copley
Mitchell
@@ -662,7 +656,6 @@ generous deed immortalized in the next stable release of Godot Engine.
Molinghu
Molly Jameson
MoltenGears
- Moowool
moulefrite
MrAZIE
Mrjemandem
@@ -683,16 +676,16 @@ generous deed immortalized in the next stable release of Godot Engine.
Nils Nordmark
Nima Farid
Noel Billig
+ Noesis
oceoh
Okatima
Oleg Reva
Oliver Ambrose
- Oriol Muñoz Princep
oscar1000108
Oscar Domingo
- p
Pascal
Patrick Indermühle
+ Patrickm
Patrick Nafarrete
Patrick Wuttke
Paul E Hansen
@@ -719,7 +712,6 @@ generous deed immortalized in the next stable release of Godot Engine.
Rammeow
RAMupgrade
red1939
- Relintai
Remi Rampin
Reneator
René Habermann
@@ -728,6 +720,7 @@ generous deed immortalized in the next stable release of Godot Engine.
Richard Ivánek
Richard Néveri
Riley
+ Robin Ward
RobotCritter
Rob Ruana
Rodrigo Loli
@@ -739,6 +732,7 @@ generous deed immortalized in the next stable release of Godot Engine.
Ronan
Roy Scayged
Ryan Groom
+ Rykk
Sam Caulfield
Sam Edson
Sammy Fischer
@@ -766,10 +760,10 @@ generous deed immortalized in the next stable release of Godot Engine.
slavfox
smbe19
smo1704
+ Snippytorque
Soheib El-Harrache
Solene Waked
Sophie Winter
- Spencer Everhart
Squirrel
Stéphane Roussel
Stephen Rice
diff --git a/SConstruct b/SConstruct
index a847535812..af01329933 100644
--- a/SConstruct
+++ b/SConstruct
@@ -48,8 +48,6 @@ _helper_module("methods", "methods.py")
_helper_module("platform_methods", "platform_methods.py")
_helper_module("version", "version.py")
_helper_module("core.core_builders", "core/core_builders.py")
-_helper_module("editor.editor_builders", "editor/editor_builders.py")
-_helper_module("editor.template_builders", "editor/template_builders.py")
_helper_module("main.main_builders", "main/main_builders.py")
_helper_module("modules.modules_builders", "modules/modules_builders.py")
@@ -58,6 +56,10 @@ import methods
import glsl_builders
import gles3_builders
+if methods.get_cmdline_bool("tools", True):
+ _helper_module("editor.editor_builders", "editor/editor_builders.py")
+ _helper_module("editor.template_builders", "editor/template_builders.py")
+
# Scan possible build platforms
platform_list = [] # list of platforms
diff --git a/core/core_bind.cpp b/core/core_bind.cpp
index 2d0eaadbdf..706395afa9 100644
--- a/core/core_bind.cpp
+++ b/core/core_bind.cpp
@@ -1334,7 +1334,7 @@ void File::store_buffer(const Vector<uint8_t> &p_buffer) {
f->store_buffer(&r[0], len);
}
-bool File::file_exists(const String &p_name) const {
+bool File::file_exists(const String &p_name) {
return FileAccess::exists(p_name);
}
@@ -1424,7 +1424,7 @@ void File::_bind_methods() {
ClassDB::bind_method(D_METHOD("store_pascal_string", "string"), &File::store_pascal_string);
ClassDB::bind_method(D_METHOD("get_pascal_string"), &File::get_pascal_string);
- ClassDB::bind_method(D_METHOD("file_exists", "path"), &File::file_exists);
+ ClassDB::bind_static_method("File", D_METHOD("file_exists", "path"), &File::file_exists);
ClassDB::bind_method(D_METHOD("get_modified_time", "file"), &File::get_modified_time);
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "big_endian"), "set_big_endian", "is_big_endian");
@@ -2093,10 +2093,6 @@ int ClassDB::get_integer_constant(const StringName &p_class, const StringName &p
return c;
}
-StringName ClassDB::get_category(const StringName &p_node) const {
- return ::ClassDB::get_category(p_node);
-}
-
bool ClassDB::has_enum(const StringName &p_class, const StringName &p_name, bool p_no_inheritance) const {
return ::ClassDB::has_enum(p_class, p_name, p_no_inheritance);
}
@@ -2168,7 +2164,6 @@ void ClassDB::_bind_methods() {
::ClassDB::bind_method(D_METHOD("class_get_enum_constants", "class", "enum", "no_inheritance"), &ClassDB::get_enum_constants, DEFVAL(false));
::ClassDB::bind_method(D_METHOD("class_get_integer_constant_enum", "class", "name", "no_inheritance"), &ClassDB::get_integer_constant_enum, DEFVAL(false));
- ::ClassDB::bind_method(D_METHOD("class_get_category", "class"), &ClassDB::get_category);
::ClassDB::bind_method(D_METHOD("is_class_enabled", "class"), &ClassDB::is_class_enabled);
}
@@ -2296,6 +2291,18 @@ Vector<String> Engine::get_singleton_list() const {
return ret;
}
+void Engine::register_script_language(ScriptLanguage *p_language) {
+ ScriptServer::register_language(p_language);
+}
+
+int Engine::get_script_language_count() {
+ return ScriptServer::get_language_count();
+}
+
+ScriptLanguage *Engine::get_script_language(int p_index) const {
+ return ScriptServer::get_language(p_index);
+}
+
void Engine::set_editor_hint(bool p_enabled) {
::Engine::get_singleton()->set_editor_hint(p_enabled);
}
@@ -2347,6 +2354,10 @@ void Engine::_bind_methods() {
ClassDB::bind_method(D_METHOD("unregister_singleton", "name"), &Engine::unregister_singleton);
ClassDB::bind_method(D_METHOD("get_singleton_list"), &Engine::get_singleton_list);
+ ClassDB::bind_method(D_METHOD("register_script_language", "language"), &Engine::register_script_language);
+ ClassDB::bind_method(D_METHOD("get_script_language_count"), &Engine::get_script_language_count);
+ ClassDB::bind_method(D_METHOD("get_script_language", "index"), &Engine::get_script_language);
+
ClassDB::bind_method(D_METHOD("is_editor_hint"), &Engine::is_editor_hint);
ClassDB::bind_method(D_METHOD("set_print_error_messages", "enabled"), &Engine::set_print_error_messages);
diff --git a/core/core_bind.h b/core/core_bind.h
index 4a7eb718f1..907f37c5fa 100644
--- a/core/core_bind.h
+++ b/core/core_bind.h
@@ -38,6 +38,7 @@
#include "core/io/image.h"
#include "core/io/resource_loader.h"
#include "core/io/resource_saver.h"
+#include "core/object/script_language.h"
#include "core/os/os.h"
#include "core/os/semaphore.h"
#include "core/os/thread.h"
@@ -436,7 +437,7 @@ public:
void store_var(const Variant &p_var, bool p_full_objects = false);
- bool file_exists(const String &p_name) const; // Return true if a file exists.
+ static bool file_exists(const String &p_name); // Return true if a file exists.
uint64_t get_modified_time(const String &p_file) const;
@@ -604,7 +605,6 @@ public:
PackedStringArray get_integer_constant_list(const StringName &p_class, bool p_no_inheritance = false) const;
bool has_integer_constant(const StringName &p_class, const StringName &p_name) const;
int get_integer_constant(const StringName &p_class, const StringName &p_name) const;
- StringName get_category(const StringName &p_node) const;
bool has_enum(const StringName &p_class, const StringName &p_name, bool p_no_inheritance = false) const;
PackedStringArray get_enum_list(const StringName &p_class, bool p_no_inheritance = false) const;
@@ -664,6 +664,10 @@ public:
void unregister_singleton(const StringName &p_name);
Vector<String> get_singleton_list() const;
+ void register_script_language(ScriptLanguage *p_language);
+ int get_script_language_count();
+ ScriptLanguage *get_script_language(int p_index) const;
+
void set_editor_hint(bool p_enabled);
bool is_editor_hint() const;
diff --git a/core/doc_data.h b/core/doc_data.h
index 9286b843be..194a39a729 100644
--- a/core/doc_data.h
+++ b/core/doc_data.h
@@ -152,7 +152,7 @@ public:
struct ClassDoc {
String name;
String inherits;
- String category;
+ String category; // FIXME: Wrongly used by VisualScriptPropertySelector, should be removed.
String brief_description;
String description;
Vector<TutorialDoc> tutorials;
diff --git a/core/extension/SCsub b/core/extension/SCsub
index a3a54250c1..23727c1b76 100644
--- a/core/extension/SCsub
+++ b/core/extension/SCsub
@@ -2,6 +2,12 @@
Import("env")
+import make_wrappers
+from platform_methods import run_in_subprocess
+
+env.CommandNoCache(["ext_wrappers.gen.inc"], "make_wrappers.py", run_in_subprocess(make_wrappers.run))
+
+
env_extension = env.Clone()
env_extension.add_source_files(env.core_sources, "*.cpp")
diff --git a/core/extension/extension_api_dump.cpp b/core/extension/extension_api_dump.cpp
index 31af28b783..9acc28f51e 100644
--- a/core/extension/extension_api_dump.cpp
+++ b/core/extension/extension_api_dump.cpp
@@ -666,6 +666,7 @@ Dictionary NativeExtensionAPIDump::generate_extension_api() {
Dictionary d2;
d2["name"] = String(method_name);
d2["is_const"] = (F.flags & METHOD_FLAG_CONST) ? true : false;
+ d2["is_static"] = (F.flags & METHOD_FLAG_STATIC) ? true : false;
d2["is_vararg"] = false;
d2["is_virtual"] = true;
// virtual functions have no hash since no MethodBind is involved
@@ -708,6 +709,7 @@ Dictionary NativeExtensionAPIDump::generate_extension_api() {
d2["is_const"] = method->is_const();
d2["is_vararg"] = method->is_vararg();
+ d2["is_static"] = method->is_static();
d2["is_virtual"] = false;
d2["hash"] = method->get_hash();
diff --git a/core/extension/gdnative_interface.cpp b/core/extension/gdnative_interface.cpp
index d0461611ec..b5b340731d 100644
--- a/core/extension/gdnative_interface.cpp
+++ b/core/extension/gdnative_interface.cpp
@@ -32,6 +32,7 @@
#include "core/config/engine.h"
#include "core/object/class_db.h"
+#include "core/object/script_language_extension.h"
#include "core/os/memory.h"
#include "core/variant/variant.h"
#include "core/version.h"
@@ -864,6 +865,13 @@ static GDObjectInstanceID gdnative_object_get_instance_id(const GDNativeObjectPt
return (GDObjectInstanceID)o->get_instance_id();
}
+static GDNativeScriptInstancePtr gdnative_script_instance_create(const GDNativeExtensionScriptInstanceInfo *p_info, GDNativeExtensionScriptInstanceDataPtr p_instance_data) {
+ ScriptInstanceExtension *script_instance_extension = memnew(ScriptInstanceExtension);
+ script_instance_extension->instance = p_instance_data;
+ script_instance_extension->native_info = p_info;
+ return reinterpret_cast<GDNativeScriptInstancePtr>(script_instance_extension);
+}
+
static GDNativeMethodBindPtr gdnative_classdb_get_method_bind(const char *p_classname, const char *p_methodname, GDNativeInt p_hash) {
MethodBind *mb = ClassDB::get_method(StringName(p_classname), StringName(p_methodname));
ERR_FAIL_COND_V(!mb, nullptr);
@@ -1032,6 +1040,10 @@ void gdnative_setup_interface(GDNativeInterface *p_interface) {
gdni.object_get_instance_from_id = gdnative_object_get_instance_from_id;
gdni.object_get_instance_id = gdnative_object_get_instance_id;
+ /* SCRIPT INSTANCE */
+
+ gdni.script_instance_create = gdnative_script_instance_create;
+
/* CLASSDB */
gdni.classdb_construct_object = gdnative_classdb_construct_object;
diff --git a/core/extension/gdnative_interface.h b/core/extension/gdnative_interface.h
index cc2957ec56..732a1b5af0 100644
--- a/core/extension/gdnative_interface.h
+++ b/core/extension/gdnative_interface.h
@@ -205,10 +205,21 @@ typedef struct {
uint32_t usage;
} GDNativePropertyInfo;
+typedef struct {
+ const char *name;
+ GDNativePropertyInfo return_value;
+ uint32_t flags; // From GDNativeExtensionClassMethodFlags
+ int32_t id;
+ GDNativePropertyInfo *arguments;
+ uint32_t argument_count;
+ GDNativeVariantPtr default_arguments;
+ uint32_t default_argument_count;
+} GDNativeMethodInfo;
+
typedef const GDNativePropertyInfo *(*GDNativeExtensionClassGetPropertyList)(GDExtensionClassInstancePtr p_instance, uint32_t *r_count);
typedef void (*GDNativeExtensionClassFreePropertyList)(GDExtensionClassInstancePtr p_instance, const GDNativePropertyInfo *p_list);
typedef void (*GDNativeExtensionClassNotification)(GDExtensionClassInstancePtr p_instance, int32_t p_what);
-typedef const char *(*GDNativeExtensionClassToString)(GDExtensionClassInstancePtr p_instance);
+typedef void (*GDNativeExtensionClassToString)(GDExtensionClassInstancePtr p_instance, GDNativeStringPtr p_out);
typedef void (*GDNativeExtensionClassReference)(GDExtensionClassInstancePtr p_instance);
typedef void (*GDNativeExtensionClassUnreference)(GDExtensionClassInstancePtr p_instance);
typedef void (*GDNativeExtensionClassCallVirtual)(GDExtensionClassInstancePtr p_instance, const GDNativeTypePtr *p_args, GDNativeTypePtr r_ret);
@@ -289,6 +300,79 @@ typedef struct {
GDNativeVariantPtr *default_arguments;
} GDNativeExtensionClassMethodInfo;
+/* SCRIPT INSTANCE EXTENSION */
+
+typedef void *GDNativeExtensionScriptInstanceDataPtr; // Pointer to custom ScriptInstance native implementation
+
+typedef GDNativeBool (*GDNativeExtensionScriptInstanceSet)(GDNativeExtensionScriptInstanceDataPtr p_instance, const GDNativeStringNamePtr p_name, const GDNativeVariantPtr p_value);
+typedef GDNativeBool (*GDNativeExtensionScriptInstanceGet)(GDNativeExtensionScriptInstanceDataPtr p_instance, const GDNativeStringNamePtr p_name, GDNativeVariantPtr r_ret);
+typedef const GDNativePropertyInfo *(*GDNativeExtensionScriptInstanceGetPropertyList)(GDNativeExtensionScriptInstanceDataPtr p_instance, uint32_t *r_count);
+typedef void (*GDNativeExtensionScriptInstanceFreePropertyList)(GDNativeExtensionScriptInstanceDataPtr p_instance, const GDNativePropertyInfo *p_list);
+typedef GDNativeVariantType (*GDNativeExtensionScriptInstanceGetPropertyType)(GDNativeExtensionScriptInstanceDataPtr p_instance, const GDNativeStringNamePtr p_name, GDNativeBool *r_is_valid);
+
+typedef GDNativeObjectPtr (*GDNativeExtensionScriptInstanceGetOwner)(GDNativeExtensionScriptInstanceDataPtr p_instance);
+typedef void (*GDNativeExtensionScriptInstancePropertyStateAdd)(const GDNativeStringNamePtr p_name, const GDNativeVariantPtr p_value, void *p_userdata);
+typedef void (*GDNativeExtensionScriptInstanceGetPropertyState)(GDNativeExtensionScriptInstanceDataPtr p_instance, GDNativeExtensionScriptInstancePropertyStateAdd p_add_func, void *p_userdata);
+
+typedef const GDNativeMethodInfo *(*GDNativeExtensionScriptInstanceGetMethodList)(GDNativeExtensionScriptInstanceDataPtr p_instance, uint32_t *r_count);
+typedef void (*GDNativeExtensionScriptInstanceFreeMethodList)(GDNativeExtensionScriptInstanceDataPtr p_instance, const GDNativeMethodInfo *p_list);
+
+typedef GDNativeBool (*GDNativeExtensionScriptInstanceHasMethod)(GDNativeExtensionScriptInstanceDataPtr p_instance, const GDNativeStringNamePtr p_name);
+
+typedef void (*GDNativeExtensionScriptInstanceCall)(GDNativeExtensionScriptInstanceDataPtr p_self, const GDNativeStringNamePtr p_method, const GDNativeVariantPtr *p_args, const GDNativeInt p_argument_count, GDNativeVariantPtr r_return, GDNativeCallError *r_error);
+typedef void (*GDNativeExtensionScriptInstanceNotification)(GDNativeExtensionScriptInstanceDataPtr p_instance, int32_t p_what);
+typedef const char *(*GDNativeExtensionScriptInstanceToString)(GDNativeExtensionScriptInstanceDataPtr p_instance, GDNativeBool *r_is_valid);
+
+typedef void (*GDNativeExtensionScriptInstanceRefCountIncremented)(GDNativeExtensionScriptInstanceDataPtr p_instance);
+typedef GDNativeBool (*GDNativeExtensionScriptInstanceRefCountDecremented)(GDNativeExtensionScriptInstanceDataPtr p_instance);
+
+typedef GDNativeObjectPtr (*GDNativeExtensionScriptInstanceGetScript)(GDNativeExtensionScriptInstanceDataPtr p_instance);
+typedef GDNativeBool (*GDNativeExtensionScriptInstanceIsPlaceholder)(GDNativeExtensionScriptInstanceDataPtr p_instance);
+
+typedef void *GDNativeExtensionScriptLanguagePtr;
+
+typedef GDNativeExtensionScriptLanguagePtr (*GDNativeExtensionScriptInstanceGetLanguage)(GDNativeExtensionScriptInstanceDataPtr p_instance);
+
+typedef void (*GDNativeExtensionScriptInstanceFree)(GDNativeExtensionScriptInstanceDataPtr p_instance);
+
+typedef void *GDNativeScriptInstancePtr; // Pointer to ScriptInstance.
+
+typedef struct {
+ GDNativeExtensionScriptInstanceSet set_func;
+ GDNativeExtensionScriptInstanceGet get_func;
+ GDNativeExtensionScriptInstanceGetPropertyList get_property_list_func;
+ GDNativeExtensionScriptInstanceFreePropertyList free_property_list_func;
+ GDNativeExtensionScriptInstanceGetPropertyType get_property_type_func;
+
+ GDNativeExtensionScriptInstanceGetOwner get_owner_func;
+ GDNativeExtensionScriptInstanceGetPropertyState get_property_state_func;
+
+ GDNativeExtensionScriptInstanceGetMethodList get_method_list_func;
+ GDNativeExtensionScriptInstanceFreeMethodList free_method_list_func;
+
+ GDNativeExtensionScriptInstanceHasMethod has_method_func;
+
+ GDNativeExtensionScriptInstanceCall call_func;
+ GDNativeExtensionScriptInstanceNotification notification_func;
+
+ GDNativeExtensionScriptInstanceToString to_string_func;
+
+ GDNativeExtensionScriptInstanceRefCountIncremented refcount_incremented_func;
+ GDNativeExtensionScriptInstanceRefCountDecremented refcount_decremented_func;
+
+ GDNativeExtensionScriptInstanceGetScript get_script_func;
+
+ GDNativeExtensionScriptInstanceIsPlaceholder is_placeholder_func;
+
+ GDNativeExtensionScriptInstanceSet set_fallback_func;
+ GDNativeExtensionScriptInstanceGet get_fallback_func;
+
+ GDNativeExtensionScriptInstanceGetLanguage get_language_func;
+
+ GDNativeExtensionScriptInstanceFree free_func;
+
+} GDNativeExtensionScriptInstanceInfo;
+
/* INTERFACE */
typedef struct {
@@ -441,6 +525,10 @@ typedef struct {
GDNativeObjectPtr (*object_get_instance_from_id)(GDObjectInstanceID p_instance_id);
GDObjectInstanceID (*object_get_instance_id)(const GDNativeObjectPtr p_object);
+ /* SCRIPT INSTANCE */
+
+ GDNativeScriptInstancePtr (*script_instance_create)(const GDNativeExtensionScriptInstanceInfo *p_info, GDNativeExtensionScriptInstanceDataPtr p_instance_data);
+
/* CLASSDB */
GDNativeObjectPtr (*classdb_construct_object)(const char *p_classname); /* The passed class must be a built-in godot class, or an already-registered extension class. In both case, object_set_instance should be called to fully initialize the object. */
GDNativeMethodBindPtr (*classdb_get_method_bind)(const char *p_classname, const char *p_methodname, GDNativeInt p_hash);
diff --git a/servers/extensions/make_wrappers.py b/core/extension/make_wrappers.py
index 862d313fba..862d313fba 100644
--- a/servers/extensions/make_wrappers.py
+++ b/core/extension/make_wrappers.py
diff --git a/core/input/input.cpp b/core/input/input.cpp
index 656bb92203..e64b5a3ab7 100644
--- a/core/input/input.cpp
+++ b/core/input/input.cpp
@@ -72,7 +72,7 @@ Input *Input::singleton = nullptr;
void (*Input::set_mouse_mode_func)(Input::MouseMode) = nullptr;
Input::MouseMode (*Input::get_mouse_mode_func)() = nullptr;
-void (*Input::warp_mouse_func)(const Vector2 &p_to_pos) = nullptr;
+void (*Input::warp_mouse_func)(const Vector2 &p_position) = nullptr;
Input::CursorShape (*Input::get_current_cursor_shape_func)() = nullptr;
void (*Input::set_custom_mouse_cursor_func)(const RES &, Input::CursorShape, const Vector2 &) = nullptr;
@@ -126,7 +126,7 @@ void Input::_bind_methods() {
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);
ClassDB::bind_method(D_METHOD("get_mouse_mode"), &Input::get_mouse_mode);
- ClassDB::bind_method(D_METHOD("warp_mouse_position", "to"), &Input::warp_mouse_position);
+ ClassDB::bind_method(D_METHOD("warp_mouse", "position"), &Input::warp_mouse);
ClassDB::bind_method(D_METHOD("action_press", "action", "strength"), &Input::action_press, DEFVAL(1.f));
ClassDB::bind_method(D_METHOD("action_release", "action"), &Input::action_release);
ClassDB::bind_method(D_METHOD("set_default_cursor_shape", "shape"), &Input::set_default_cursor_shape, DEFVAL(CURSOR_ARROW));
@@ -733,8 +733,8 @@ MouseButton Input::get_mouse_button_mask() const {
return mouse_button_mask; // do not trust OS implementation, should remove it - OS::get_singleton()->get_mouse_button_state();
}
-void Input::warp_mouse_position(const Vector2 &p_to) {
- warp_mouse_func(p_to);
+void Input::warp_mouse(const Vector2 &p_position) {
+ warp_mouse_func(p_position);
}
Point2i Input::warp_mouse_motion(const Ref<InputEventMouseMotion> &p_motion, const Rect2 &p_rect) {
@@ -756,7 +756,7 @@ Point2i Input::warp_mouse_motion(const Ref<InputEventMouseMotion> &p_motion, con
const Point2i pos_local = p_motion->get_global_position() - p_rect.position;
const Point2i pos_warped(Math::fposmod(pos_local.x, p_rect.size.x), Math::fposmod(pos_local.y, p_rect.size.y));
if (pos_warped != pos_local) {
- warp_mouse_position(pos_warped + p_rect.position);
+ warp_mouse(pos_warped + p_rect.position);
}
return rel_warped;
diff --git a/core/input/input.h b/core/input/input.h
index ab2cd377f4..ac688b53b8 100644
--- a/core/input/input.h
+++ b/core/input/input.h
@@ -216,7 +216,7 @@ private:
static void (*set_mouse_mode_func)(MouseMode);
static MouseMode (*get_mouse_mode_func)();
- static void (*warp_mouse_func)(const Vector2 &p_to_pos);
+ static void (*warp_mouse_func)(const Vector2 &p_position);
static CursorShape (*get_current_cursor_shape_func)();
static void (*set_custom_mouse_cursor_func)(const RES &, CursorShape, const Vector2 &);
@@ -273,7 +273,7 @@ public:
Vector2 get_last_mouse_velocity();
MouseButton get_mouse_button_mask() const;
- void warp_mouse_position(const Vector2 &p_to);
+ void warp_mouse(const Vector2 &p_position);
Point2i warp_mouse_motion(const Ref<InputEventMouseMotion> &p_motion, const Rect2 &p_rect);
void parse_input_event(const Ref<InputEvent> &p_event);
diff --git a/core/input/input_event.cpp b/core/input/input_event.cpp
index ab0f36132f..b8ab722b12 100644
--- a/core/input/input_event.cpp
+++ b/core/input/input_event.cpp
@@ -382,7 +382,7 @@ String InputEventKey::to_string() {
}
String mods = InputEventWithModifiers::as_text();
- mods = mods.is_empty() ? TTR("none") : mods;
+ mods = mods.is_empty() ? "none" : mods;
return vformat("InputEventKey: keycode=%s, mods=%s, physical=%s, pressed=%s, echo=%s", kc, mods, physical, p, e);
}
@@ -424,8 +424,13 @@ bool InputEventKey::action_match(const Ref<InputEvent> &p_event, bool p_exact_ma
} else {
match = get_physical_keycode() == key->get_physical_keycode();
}
+ Key action_mask = get_modifiers_mask();
+ Key key_mask = key->get_modifiers_mask();
+ if (key->is_pressed()) {
+ match &= (action_mask & key_mask) == action_mask;
+ }
if (p_exact_match) {
- match &= get_modifiers_mask() == key->get_modifiers_mask();
+ match &= action_mask == key_mask;
}
if (match) {
bool pressed = key->is_pressed();
@@ -589,8 +594,13 @@ bool InputEventMouseButton::action_match(const Ref<InputEvent> &p_event, bool p_
}
bool match = button_index == mb->button_index;
+ Key action_mask = get_modifiers_mask();
+ Key button_mask = mb->get_modifiers_mask();
+ if (mb->is_pressed()) {
+ match &= (action_mask & button_mask) == action_mask;
+ }
if (p_exact_match) {
- match &= get_modifiers_mask() == mb->get_modifiers_mask();
+ match &= action_mask == button_mask;
}
if (match) {
bool pressed = mb->is_pressed();
@@ -680,14 +690,14 @@ String InputEventMouseButton::to_string() {
case MouseButton::WHEEL_RIGHT:
case MouseButton::MB_XBUTTON1:
case MouseButton::MB_XBUTTON2:
- button_string += " (" + RTR(_mouse_button_descriptions[(size_t)idx - 1]) + ")"; // button index starts from 1, array index starts from 0, so subtract 1
+ button_string += vformat(" (%s)", TTRGET(_mouse_button_descriptions[(size_t)idx - 1])); // button index starts from 1, array index starts from 0, so subtract 1
break;
default:
break;
}
String mods = InputEventWithModifiers::as_text();
- mods = mods.is_empty() ? TTR("none") : mods;
+ mods = mods.is_empty() ? "none" : mods;
// Work around the fact vformat can only take 5 substitutions but 6 need to be passed.
String index_and_mods = vformat("button_index=%s, mods=%s", button_index, mods);
@@ -777,19 +787,19 @@ String InputEventMouseMotion::to_string() {
String button_mask_string = itos((int64_t)button_mask);
switch (button_mask) {
case MouseButton::MASK_LEFT:
- button_mask_string += " (" + RTR(_mouse_button_descriptions[(size_t)MouseButton::LEFT - 1]) + ")";
+ button_mask_string += vformat(" (%s)", TTRGET(_mouse_button_descriptions[(size_t)MouseButton::LEFT - 1]));
break;
case MouseButton::MASK_MIDDLE:
- button_mask_string += " (" + RTR(_mouse_button_descriptions[(size_t)MouseButton::MIDDLE - 1]) + ")";
+ button_mask_string += vformat(" (%s)", TTRGET(_mouse_button_descriptions[(size_t)MouseButton::MIDDLE - 1]));
break;
case MouseButton::MASK_RIGHT:
- button_mask_string += " (" + RTR(_mouse_button_descriptions[(size_t)MouseButton::RIGHT - 1]) + ")";
+ button_mask_string += vformat(" (%s)", TTRGET(_mouse_button_descriptions[(size_t)MouseButton::RIGHT - 1]));
break;
case MouseButton::MASK_XBUTTON1:
- button_mask_string += " (" + RTR(_mouse_button_descriptions[(size_t)MouseButton::MB_XBUTTON1 - 1]) + ")";
+ button_mask_string += vformat(" (%s)", TTRGET(_mouse_button_descriptions[(size_t)MouseButton::MB_XBUTTON1 - 1]));
break;
case MouseButton::MASK_XBUTTON2:
- button_mask_string += " (" + RTR(_mouse_button_descriptions[(size_t)MouseButton::MB_XBUTTON2 - 1]) + ")";
+ button_mask_string += vformat(" (%s)", TTRGET(_mouse_button_descriptions[(size_t)MouseButton::MB_XBUTTON2 - 1]));
break;
default:
break;
@@ -951,9 +961,9 @@ static const char *_joy_axis_descriptions[(size_t)JoyAxis::MAX] = {
};
String InputEventJoypadMotion::as_text() const {
- String desc = axis < JoyAxis::MAX ? RTR(_joy_axis_descriptions[(size_t)axis]) : TTR("Unknown Joypad Axis");
+ String desc = axis < JoyAxis::MAX ? TTRGET(_joy_axis_descriptions[(size_t)axis]) : RTR("Unknown Joypad Axis");
- return vformat(TTR("Joypad Motion on Axis %d (%s) with Value %.2f"), axis, desc, axis_value);
+ return vformat(RTR("Joypad Motion on Axis %d (%s) with Value %.2f"), axis, desc, axis_value);
}
String InputEventJoypadMotion::to_string() {
diff --git a/core/io/dir_access.h b/core/io/dir_access.h
index d63453e947..b97d097842 100644
--- a/core/io/dir_access.h
+++ b/core/io/dir_access.h
@@ -137,6 +137,10 @@ struct DirAccessRef {
DirAccess *f = nullptr;
DirAccessRef(DirAccess *fa) { f = fa; }
+ DirAccessRef(DirAccessRef &&other) {
+ f = other.f;
+ other.f = nullptr;
+ }
~DirAccessRef() {
if (f) {
memdelete(f);
diff --git a/core/io/file_access.h b/core/io/file_access.h
index 5413665440..a6cb5d9fc6 100644
--- a/core/io/file_access.h
+++ b/core/io/file_access.h
@@ -188,6 +188,10 @@ struct FileAccessRef {
operator FileAccess *() { return f; }
FileAccessRef(FileAccess *fa) { f = fa; }
+ FileAccessRef(FileAccessRef &&other) {
+ f = other.f;
+ other.f = nullptr;
+ }
~FileAccessRef() {
if (f) {
memdelete(f);
diff --git a/core/io/image.cpp b/core/io/image.cpp
index 5376b78a89..fad9942017 100644
--- a/core/io/image.cpp
+++ b/core/io/image.cpp
@@ -378,25 +378,25 @@ Image::Image3DValidateError Image::validate_3d_image(Image::Format p_format, int
String Image::get_3d_image_validation_error_text(Image3DValidateError p_error) {
switch (p_error) {
case VALIDATE_3D_OK: {
- return TTR("Ok");
+ return "Ok";
} break;
case VALIDATE_3D_ERR_IMAGE_EMPTY: {
- return TTR("Empty Image found");
+ return "Empty Image found";
} break;
case VALIDATE_3D_ERR_MISSING_IMAGES: {
- return TTR("Missing Images");
+ return "Missing Images";
} break;
case VALIDATE_3D_ERR_EXTRA_IMAGES: {
- return TTR("Too many Images");
+ return "Too many Images";
} break;
case VALIDATE_3D_ERR_IMAGE_SIZE_MISMATCH: {
- return TTR("Image size mismatch");
+ return "Image size mismatch";
} break;
case VALIDATE_3D_ERR_IMAGE_FORMAT_MISMATCH: {
- return TTR("Image format mismatch");
+ return "Image format mismatch";
} break;
case VALIDATE_3D_ERR_IMAGE_HAS_MIPMAPS: {
- return TTR("Image has included mipmaps");
+ return "Image has included mipmaps";
} break;
}
return String();
@@ -2726,6 +2726,7 @@ Vector<uint8_t> (*Image::png_packer)(const Ref<Image> &) = nullptr;
Ref<Image> (*Image::png_unpacker)(const Vector<uint8_t> &) = nullptr;
Vector<uint8_t> (*Image::basis_universal_packer)(const Ref<Image> &, Image::UsedChannels) = nullptr;
Ref<Image> (*Image::basis_universal_unpacker)(const Vector<uint8_t> &) = nullptr;
+Ref<Image> (*Image::basis_universal_unpacker_ptr)(const uint8_t *, int) = nullptr;
void Image::_set_data(const Dictionary &p_data) {
ERR_FAIL_COND(!p_data.has("width"));
@@ -3008,7 +3009,7 @@ void Image::adjust_bcs(float p_brightness, float p_contrast, float p_saturation)
}
}
-Image::UsedChannels Image::detect_used_channels(CompressSource p_source) {
+Image::UsedChannels Image::detect_used_channels(CompressSource p_source) const {
ERR_FAIL_COND_V(data.size() == 0, USED_CHANNELS_RGBA);
ERR_FAIL_COND_V(is_compressed(), USED_CHANNELS_RGBA);
bool r = false, g = false, b = false, a = false, c = false;
@@ -3613,6 +3614,10 @@ Image::Image(const uint8_t *p_mem_png_jpg, int p_len) {
if (is_empty() && _jpg_mem_loader_func) {
copy_internals_from(_jpg_mem_loader_func(p_mem_png_jpg, p_len));
}
+
+ if (is_empty() && _webp_mem_loader_func) {
+ copy_internals_from(_webp_mem_loader_func(p_mem_png_jpg, p_len));
+ }
}
Ref<Resource> Image::duplicate(bool p_subresources) const {
diff --git a/core/io/image.h b/core/io/image.h
index 39c700565b..7e1e853244 100644
--- a/core/io/image.h
+++ b/core/io/image.h
@@ -147,6 +147,7 @@ public:
static Ref<Image> (*png_unpacker)(const Vector<uint8_t> &p_buffer);
static Vector<uint8_t> (*basis_universal_packer)(const Ref<Image> &p_image, UsedChannels p_channels);
static Ref<Image> (*basis_universal_unpacker)(const Vector<uint8_t> &p_buffer);
+ static Ref<Image> (*basis_universal_unpacker_ptr)(const uint8_t *p_data, int p_size);
_FORCE_INLINE_ Color _get_color_at_ofs(const uint8_t *ptr, uint32_t ofs) const;
_FORCE_INLINE_ void _set_color_at_ofs(uint8_t *ptr, uint32_t ofs, const Color &p_color);
@@ -379,7 +380,7 @@ public:
virtual Ref<Resource> duplicate(bool p_subresources = false) const override;
- UsedChannels detect_used_channels(CompressSource p_source = COMPRESS_SOURCE_GENERIC);
+ UsedChannels detect_used_channels(CompressSource p_source = COMPRESS_SOURCE_GENERIC) const;
void optimize_channels();
Color get_pixelv(const Point2i &p_point) const;
diff --git a/core/io/ip.cpp b/core/io/ip.cpp
index 8e0d47e762..2f88307d94 100644
--- a/core/io/ip.cpp
+++ b/core/io/ip.cpp
@@ -186,7 +186,7 @@ IP::ResolverID IP::resolve_hostname_queue_item(const String &p_hostname, IP::Typ
}
IP::ResolverStatus IP::get_resolve_item_status(ResolverID p_id) const {
- ERR_FAIL_INDEX_V(p_id, IP::RESOLVER_MAX_QUERIES, IP::RESOLVER_STATUS_NONE);
+ ERR_FAIL_INDEX_V_MSG(p_id, IP::RESOLVER_MAX_QUERIES, IP::RESOLVER_STATUS_NONE, vformat("Too many concurrent DNS resolver queries (%d, but should be %d at most). Try performing less network requests at once.", p_id, IP::RESOLVER_MAX_QUERIES));
IP::ResolverStatus res = resolver->queue[p_id].status.get();
if (res == IP::RESOLVER_STATUS_NONE) {
@@ -197,7 +197,7 @@ IP::ResolverStatus IP::get_resolve_item_status(ResolverID p_id) const {
}
IPAddress IP::get_resolve_item_address(ResolverID p_id) const {
- ERR_FAIL_INDEX_V(p_id, IP::RESOLVER_MAX_QUERIES, IPAddress());
+ ERR_FAIL_INDEX_V_MSG(p_id, IP::RESOLVER_MAX_QUERIES, IPAddress(), vformat("Too many concurrent DNS resolver queries (%d, but should be %d at most). Try performing less network requests at once.", p_id, IP::RESOLVER_MAX_QUERIES));
MutexLock lock(resolver->mutex);
@@ -217,7 +217,7 @@ IPAddress IP::get_resolve_item_address(ResolverID p_id) const {
}
Array IP::get_resolve_item_addresses(ResolverID p_id) const {
- ERR_FAIL_INDEX_V(p_id, IP::RESOLVER_MAX_QUERIES, Array());
+ ERR_FAIL_INDEX_V_MSG(p_id, IP::RESOLVER_MAX_QUERIES, Array(), vformat("Too many concurrent DNS resolver queries (%d, but should be %d at most). Try performing less network requests at once.", p_id, IP::RESOLVER_MAX_QUERIES));
MutexLock lock(resolver->mutex);
if (resolver->queue[p_id].status.get() != IP::RESOLVER_STATUS_DONE) {
@@ -237,7 +237,7 @@ Array IP::get_resolve_item_addresses(ResolverID p_id) const {
}
void IP::erase_resolve_item(ResolverID p_id) {
- ERR_FAIL_INDEX(p_id, IP::RESOLVER_MAX_QUERIES);
+ ERR_FAIL_INDEX_MSG(p_id, IP::RESOLVER_MAX_QUERIES, vformat("Too many concurrent DNS resolver queries (%d, but should be %d at most). Try performing less network requests at once.", p_id, IP::RESOLVER_MAX_QUERIES));
resolver->queue[p_id].status.set(IP::RESOLVER_STATUS_NONE);
}
diff --git a/core/io/ip.h b/core/io/ip.h
index 5602710550..ebd944a949 100644
--- a/core/io/ip.h
+++ b/core/io/ip.h
@@ -38,7 +38,6 @@ struct _IP_ResolverPrivate;
class IP : public Object {
GDCLASS(IP, Object);
- OBJ_CATEGORY("Networking");
public:
enum ResolverStatus {
@@ -56,7 +55,7 @@ public:
};
enum {
- RESOLVER_MAX_QUERIES = 32,
+ RESOLVER_MAX_QUERIES = 256,
RESOLVER_INVALID_ID = -1
};
diff --git a/core/io/resource.h b/core/io/resource.h
index b1e1c15541..8068000f32 100644
--- a/core/io/resource.h
+++ b/core/io/resource.h
@@ -48,7 +48,6 @@ private:
class Resource : public RefCounted {
GDCLASS(Resource, RefCounted);
- OBJ_CATEGORY("Resources");
public:
static void register_custom_data_to_otdb() { ClassDB::add_resource_base_extension("res", get_class_static()); }
diff --git a/core/io/stream_peer.h b/core/io/stream_peer.h
index e71941b7e1..4609e52aa2 100644
--- a/core/io/stream_peer.h
+++ b/core/io/stream_peer.h
@@ -39,7 +39,6 @@
class StreamPeer : public RefCounted {
GDCLASS(StreamPeer, RefCounted);
- OBJ_CATEGORY("Networking");
protected:
static void _bind_methods();
diff --git a/core/io/stream_peer_tcp.h b/core/io/stream_peer_tcp.h
index f2c47b25cf..bf49cc8a5f 100644
--- a/core/io/stream_peer_tcp.h
+++ b/core/io/stream_peer_tcp.h
@@ -38,7 +38,6 @@
class StreamPeerTCP : public StreamPeer {
GDCLASS(StreamPeerTCP, StreamPeer);
- OBJ_CATEGORY("Networking");
public:
enum Status {
diff --git a/core/io/translation_loader_po.cpp b/core/io/translation_loader_po.cpp
index 8d3e58cad1..801bd8b0bf 100644
--- a/core/io/translation_loader_po.cpp
+++ b/core/io/translation_loader_po.cpp
@@ -35,98 +35,160 @@
#include "core/string/translation_po.h"
RES TranslationLoaderPO::load_translation(FileAccess *f, Error *r_error) {
- enum Status {
- STATUS_NONE,
- STATUS_READING_ID,
- STATUS_READING_STRING,
- STATUS_READING_CONTEXT,
- STATUS_READING_PLURAL,
- };
-
- Status status = STATUS_NONE;
-
- String msg_id;
- String msg_str;
- String msg_context;
- Vector<String> msgs_plural;
- String config;
-
if (r_error) {
*r_error = ERR_FILE_CORRUPT;
}
- Ref<TranslationPO> translation = Ref<TranslationPO>(memnew(TranslationPO));
- int line = 1;
- int plural_forms = 0;
- int plural_index = -1;
- bool entered_context = false;
- bool skip_this = false;
- bool skip_next = false;
- bool is_eof = false;
const String path = f->get_path();
+ Ref<TranslationPO> translation = Ref<TranslationPO>(memnew(TranslationPO));
+ String config;
- while (!is_eof) {
- String l = f->get_line().strip_edges();
- is_eof = f->eof_reached();
+ uint32_t magic = f->get_32();
+ if (magic == 0x950412de) {
+ // Load binary MO file.
- // If we reached last line and it's not a content line, break, otherwise let processing that last loop
- if (is_eof && l.is_empty()) {
- if (status == STATUS_READING_ID || status == STATUS_READING_CONTEXT || (status == STATUS_READING_PLURAL && plural_index != plural_forms - 1)) {
- memdelete(f);
- ERR_FAIL_V_MSG(RES(), "Unexpected EOF while reading PO file at: " + path + ":" + itos(line));
- } else {
- break;
- }
+ uint16_t version_maj = f->get_16();
+ uint16_t version_min = f->get_16();
+ if (version_maj > 1) {
+ ERR_FAIL_V_MSG(RES(), vformat("Unsupported MO file %s, version %d.%d.", path, version_maj, version_min));
}
- if (l.begins_with("msgctxt")) {
- if (status != STATUS_READING_STRING && status != STATUS_READING_PLURAL) {
- memdelete(f);
- ERR_FAIL_V_MSG(RES(), "Unexpected 'msgctxt', was expecting 'msgid_plural' or 'msgstr' before 'msgctxt' while parsing: " + path + ":" + itos(line));
+ uint32_t num_strings = f->get_32();
+ uint32_t id_table_offset = f->get_32();
+ uint32_t trans_table_offset = f->get_32();
+
+ // Read string tables.
+ for (uint32_t i = 0; i < num_strings; i++) {
+ String msg_id;
+ String msg_id_plural;
+ String msg_context;
+
+ // Read id strings and context.
+ {
+ Vector<uint8_t> data;
+ f->seek(id_table_offset + i * 8);
+ uint32_t str_start = 0;
+ uint32_t str_len = f->get_32();
+ uint32_t str_offset = f->get_32();
+
+ data.resize(str_len + 1);
+ f->seek(str_offset);
+ f->get_buffer(data.ptrw(), str_len);
+ data.write[str_len] = 0;
+
+ bool is_plural = false;
+ for (uint32_t j = 0; j < str_len + 1; j++) {
+ if (data[j] == 0x04) {
+ msg_context.parse_utf8((const char *)data.ptr(), j);
+ str_start = j + 1;
+ }
+ if (data[j] == 0x00) {
+ if (is_plural) {
+ msg_id_plural.parse_utf8((const char *)(data.ptr() + str_start), j - str_start);
+ } else {
+ msg_id.parse_utf8((const char *)(data.ptr() + str_start), j - str_start);
+ is_plural = true;
+ }
+ str_start = j + 1;
+ }
+ }
}
- // In PO file, "msgctxt" appears before "msgid". If we encounter a "msgctxt", we add what we have read
- // and set "entered_context" to true to prevent adding twice.
- if (!skip_this && !msg_id.is_empty()) {
- if (status == STATUS_READING_STRING) {
- translation->add_message(msg_id, msg_str, msg_context);
- } else if (status == STATUS_READING_PLURAL) {
- if (plural_index != plural_forms - 1) {
- memdelete(f);
- ERR_FAIL_V_MSG(RES(), "Number of 'msgstr[]' doesn't match with number of plural forms: " + path + ":" + itos(line));
+ // Read translated strings.
+ {
+ Vector<uint8_t> data;
+ f->seek(trans_table_offset + i * 8);
+ uint32_t str_start = 0;
+ uint32_t str_len = f->get_32();
+ uint32_t str_offset = f->get_32();
+
+ data.resize(str_len + 1);
+ f->seek(str_offset);
+ f->get_buffer(data.ptrw(), str_len);
+ data.write[str_len] = 0;
+
+ if (msg_id.is_empty()) {
+ config = String::utf8((const char *)data.ptr(), str_len);
+ // Record plural rule.
+ int p_start = config.find("Plural-Forms");
+ if (p_start != -1) {
+ int p_end = config.find("\n", p_start);
+ translation->set_plural_rule(config.substr(p_start, p_end - p_start));
+ }
+ } else {
+ Vector<String> plural_msg;
+ for (uint32_t j = 0; j < str_len + 1; j++) {
+ if (data[j] == 0x00) {
+ if (msg_id_plural.is_empty()) {
+ translation->add_message(msg_id, String::utf8((const char *)(data.ptr() + str_start), j - str_start), msg_context);
+ } else {
+ plural_msg.push_back(String::utf8((const char *)(data.ptr() + str_start), j - str_start));
+ }
+ str_start = j + 1;
+ }
+ }
+ if (!plural_msg.is_empty()) {
+ translation->add_plural_message(msg_id, plural_msg, msg_context);
}
- translation->add_plural_message(msg_id, msgs_plural, msg_context);
}
}
- msg_context = "";
- l = l.substr(7, l.length()).strip_edges();
- status = STATUS_READING_CONTEXT;
- entered_context = true;
}
- if (l.begins_with("msgid_plural")) {
- if (plural_forms == 0) {
- memdelete(f);
- ERR_FAIL_V_MSG(RES(), "PO file uses 'msgid_plural' but 'Plural-Forms' is invalid or missing in header: " + path + ":" + itos(line));
- } else if (status != STATUS_READING_ID) {
- memdelete(f);
- ERR_FAIL_V_MSG(RES(), "Unexpected 'msgid_plural', was expecting 'msgid' before 'msgid_plural' while parsing: " + path + ":" + itos(line));
- }
- // We don't record the message in "msgid_plural" itself as tr_n(), TTRN(), RTRN() interfaces provide the plural string already.
- // We just have to reset variables related to plurals for "msgstr[]" later on.
- l = l.substr(12, l.length()).strip_edges();
- plural_index = -1;
- msgs_plural.clear();
- msgs_plural.resize(plural_forms);
- status = STATUS_READING_PLURAL;
- } else if (l.begins_with("msgid")) {
- if (status == STATUS_READING_ID) {
- memdelete(f);
- ERR_FAIL_V_MSG(RES(), "Unexpected 'msgid', was expecting 'msgstr' while parsing: " + path + ":" + itos(line));
+ memdelete(f);
+ } else {
+ // Try to load as text PO file.
+ f->seek(0);
+
+ enum Status {
+ STATUS_NONE,
+ STATUS_READING_ID,
+ STATUS_READING_STRING,
+ STATUS_READING_CONTEXT,
+ STATUS_READING_PLURAL,
+ };
+
+ Status status = STATUS_NONE;
+
+ String msg_id;
+ String msg_str;
+ String msg_context;
+ Vector<String> msgs_plural;
+
+ if (r_error) {
+ *r_error = ERR_FILE_CORRUPT;
+ }
+
+ int line = 1;
+ int plural_forms = 0;
+ int plural_index = -1;
+ bool entered_context = false;
+ bool skip_this = false;
+ bool skip_next = false;
+ bool is_eof = false;
+
+ while (!is_eof) {
+ String l = f->get_line().strip_edges();
+ is_eof = f->eof_reached();
+
+ // If we reached last line and it's not a content line, break, otherwise let processing that last loop
+ if (is_eof && l.is_empty()) {
+ if (status == STATUS_READING_ID || status == STATUS_READING_CONTEXT || (status == STATUS_READING_PLURAL && plural_index != plural_forms - 1)) {
+ memdelete(f);
+ ERR_FAIL_V_MSG(RES(), "Unexpected EOF while reading PO file at: " + path + ":" + itos(line));
+ } else {
+ break;
+ }
}
- if (!msg_id.is_empty()) {
- if (!skip_this && !entered_context) {
+ if (l.begins_with("msgctxt")) {
+ if (status != STATUS_READING_STRING && status != STATUS_READING_PLURAL) {
+ memdelete(f);
+ ERR_FAIL_V_MSG(RES(), "Unexpected 'msgctxt', was expecting 'msgid_plural' or 'msgstr' before 'msgctxt' while parsing: " + path + ":" + itos(line));
+ }
+
+ // In PO file, "msgctxt" appears before "msgid". If we encounter a "msgctxt", we add what we have read
+ // and set "entered_context" to true to prevent adding twice.
+ if (!skip_this && !msg_id.is_empty()) {
if (status == STATUS_READING_STRING) {
translation->add_message(msg_id, msg_str, msg_context);
} else if (status == STATUS_READING_PLURAL) {
@@ -137,119 +199,163 @@ RES TranslationLoaderPO::load_translation(FileAccess *f, Error *r_error) {
translation->add_plural_message(msg_id, msgs_plural, msg_context);
}
}
- } else if (config.is_empty()) {
- config = msg_str;
- // Record plural rule.
- int p_start = config.find("Plural-Forms");
- if (p_start != -1) {
- int p_end = config.find("\n", p_start);
- translation->set_plural_rule(config.substr(p_start, p_end - p_start));
- plural_forms = translation->get_plural_forms();
+ msg_context = "";
+ l = l.substr(7, l.length()).strip_edges();
+ status = STATUS_READING_CONTEXT;
+ entered_context = true;
+ }
+
+ if (l.begins_with("msgid_plural")) {
+ if (plural_forms == 0) {
+ memdelete(f);
+ ERR_FAIL_V_MSG(RES(), "PO file uses 'msgid_plural' but 'Plural-Forms' is invalid or missing in header: " + path + ":" + itos(line));
+ } else if (status != STATUS_READING_ID) {
+ memdelete(f);
+ ERR_FAIL_V_MSG(RES(), "Unexpected 'msgid_plural', was expecting 'msgid' before 'msgid_plural' while parsing: " + path + ":" + itos(line));
+ }
+ // We don't record the message in "msgid_plural" itself as tr_n(), TTRN(), RTRN() interfaces provide the plural string already.
+ // We just have to reset variables related to plurals for "msgstr[]" later on.
+ l = l.substr(12, l.length()).strip_edges();
+ plural_index = -1;
+ msgs_plural.clear();
+ msgs_plural.resize(plural_forms);
+ status = STATUS_READING_PLURAL;
+ } else if (l.begins_with("msgid")) {
+ if (status == STATUS_READING_ID) {
+ memdelete(f);
+ ERR_FAIL_V_MSG(RES(), "Unexpected 'msgid', was expecting 'msgstr' while parsing: " + path + ":" + itos(line));
}
+
+ if (!msg_id.is_empty()) {
+ if (!skip_this && !entered_context) {
+ if (status == STATUS_READING_STRING) {
+ translation->add_message(msg_id, msg_str, msg_context);
+ } else if (status == STATUS_READING_PLURAL) {
+ if (plural_index != plural_forms - 1) {
+ memdelete(f);
+ ERR_FAIL_V_MSG(RES(), "Number of 'msgstr[]' doesn't match with number of plural forms: " + path + ":" + itos(line));
+ }
+ translation->add_plural_message(msg_id, msgs_plural, msg_context);
+ }
+ }
+ } else if (config.is_empty()) {
+ config = msg_str;
+ // Record plural rule.
+ int p_start = config.find("Plural-Forms");
+ if (p_start != -1) {
+ int p_end = config.find("\n", p_start);
+ translation->set_plural_rule(config.substr(p_start, p_end - p_start));
+ plural_forms = translation->get_plural_forms();
+ }
+ }
+
+ l = l.substr(5, l.length()).strip_edges();
+ status = STATUS_READING_ID;
+ // If we did not encounter msgctxt, we reset context to empty to reset it.
+ if (!entered_context) {
+ msg_context = "";
+ }
+ msg_id = "";
+ msg_str = "";
+ skip_this = skip_next;
+ skip_next = false;
+ entered_context = false;
}
- l = l.substr(5, l.length()).strip_edges();
- status = STATUS_READING_ID;
- // If we did not encounter msgctxt, we reset context to empty to reset it.
- if (!entered_context) {
- msg_context = "";
+ if (l.begins_with("msgstr[")) {
+ if (status != STATUS_READING_PLURAL) {
+ memdelete(f);
+ ERR_FAIL_V_MSG(RES(), "Unexpected 'msgstr[]', was expecting 'msgid_plural' before 'msgstr[]' while parsing: " + path + ":" + itos(line));
+ }
+ plural_index++; // Increment to add to the next slot in vector msgs_plural.
+ l = l.substr(9, l.length()).strip_edges();
+ } else if (l.begins_with("msgstr")) {
+ if (status != STATUS_READING_ID) {
+ memdelete(f);
+ ERR_FAIL_V_MSG(RES(), "Unexpected 'msgstr', was expecting 'msgid' before 'msgstr' while parsing: " + path + ":" + itos(line));
+ }
+
+ l = l.substr(6, l.length()).strip_edges();
+ status = STATUS_READING_STRING;
}
- msg_id = "";
- msg_str = "";
- skip_this = skip_next;
- skip_next = false;
- entered_context = false;
- }
- if (l.begins_with("msgstr[")) {
- if (status != STATUS_READING_PLURAL) {
- memdelete(f);
- ERR_FAIL_V_MSG(RES(), "Unexpected 'msgstr[]', was expecting 'msgid_plural' before 'msgstr[]' while parsing: " + path + ":" + itos(line));
+ if (l.is_empty() || l.begins_with("#")) {
+ if (l.contains("fuzzy")) {
+ skip_next = true;
+ }
+ line++;
+ continue; // Nothing to read or comment.
}
- plural_index++; // Increment to add to the next slot in vector msgs_plural.
- l = l.substr(9, l.length()).strip_edges();
- } else if (l.begins_with("msgstr")) {
- if (status != STATUS_READING_ID) {
+
+ if (!l.begins_with("\"") || status == STATUS_NONE) {
memdelete(f);
- ERR_FAIL_V_MSG(RES(), "Unexpected 'msgstr', was expecting 'msgid' before 'msgstr' while parsing: " + path + ":" + itos(line));
+ ERR_FAIL_V_MSG(RES(), "Invalid line '" + l + "' while parsing: " + path + ":" + itos(line));
}
- l = l.substr(6, l.length()).strip_edges();
- status = STATUS_READING_STRING;
- }
-
- if (l.is_empty() || l.begins_with("#")) {
- if (l.contains("fuzzy")) {
- skip_next = true;
- }
- line++;
- continue; // Nothing to read or comment.
- }
+ l = l.substr(1, l.length());
+ // Find final quote, ignoring escaped ones (\").
+ // The escape_next logic is necessary to properly parse things like \\"
+ // where the backslash is the one being escaped, not the quote.
+ int end_pos = -1;
+ bool escape_next = false;
+ for (int i = 0; i < l.length(); i++) {
+ if (l[i] == '\\' && !escape_next) {
+ escape_next = true;
+ continue;
+ }
- if (!l.begins_with("\"") || status == STATUS_NONE) {
- memdelete(f);
- ERR_FAIL_V_MSG(RES(), "Invalid line '" + l + "' while parsing: " + path + ":" + itos(line));
- }
+ if (l[i] == '"' && !escape_next) {
+ end_pos = i;
+ break;
+ }
- l = l.substr(1, l.length());
- // Find final quote, ignoring escaped ones (\").
- // The escape_next logic is necessary to properly parse things like \\"
- // where the backslash is the one being escaped, not the quote.
- int end_pos = -1;
- bool escape_next = false;
- for (int i = 0; i < l.length(); i++) {
- if (l[i] == '\\' && !escape_next) {
- escape_next = true;
- continue;
+ escape_next = false;
}
- if (l[i] == '"' && !escape_next) {
- end_pos = i;
- break;
+ if (end_pos == -1) {
+ memdelete(f);
+ ERR_FAIL_V_MSG(RES(), "Expected '\"' at end of message while parsing: " + path + ":" + itos(line));
}
- escape_next = false;
- }
+ l = l.substr(0, end_pos);
+ l = l.c_unescape();
- if (end_pos == -1) {
- memdelete(f);
- ERR_FAIL_V_MSG(RES(), "Expected '\"' at end of message while parsing: " + path + ":" + itos(line));
- }
+ if (status == STATUS_READING_ID) {
+ msg_id += l;
+ } else if (status == STATUS_READING_STRING) {
+ msg_str += l;
+ } else if (status == STATUS_READING_CONTEXT) {
+ msg_context += l;
+ } else if (status == STATUS_READING_PLURAL && plural_index >= 0) {
+ if (plural_index >= plural_forms) {
+ memdelete(f);
+ ERR_FAIL_V_MSG(RES(), "Unexpected plural form while parsing: " + path + ":" + itos(line));
+ }
+ msgs_plural.write[plural_index] = msgs_plural[plural_index] + l;
+ }
- l = l.substr(0, end_pos);
- l = l.c_unescape();
-
- if (status == STATUS_READING_ID) {
- msg_id += l;
- } else if (status == STATUS_READING_STRING) {
- msg_str += l;
- } else if (status == STATUS_READING_CONTEXT) {
- msg_context += l;
- } else if (status == STATUS_READING_PLURAL && plural_index >= 0) {
- msgs_plural.write[plural_index] = msgs_plural[plural_index] + l;
+ line++;
}
- line++;
- }
-
- memdelete(f);
+ memdelete(f);
- // Add the last set of data from last iteration.
- if (status == STATUS_READING_STRING) {
- if (!msg_id.is_empty()) {
- if (!skip_this) {
- translation->add_message(msg_id, msg_str, msg_context);
+ // Add the last set of data from last iteration.
+ if (status == STATUS_READING_STRING) {
+ if (!msg_id.is_empty()) {
+ if (!skip_this) {
+ translation->add_message(msg_id, msg_str, msg_context);
+ }
+ } else if (config.is_empty()) {
+ config = msg_str;
}
- } else if (config.is_empty()) {
- config = msg_str;
- }
- } else if (status == STATUS_READING_PLURAL) {
- if (!skip_this && !msg_id.is_empty()) {
- if (plural_index != plural_forms - 1) {
- memdelete(f);
- ERR_FAIL_V_MSG(RES(), "Number of 'msgstr[]' doesn't match with number of plural forms: " + path + ":" + itos(line));
+ } else if (status == STATUS_READING_PLURAL) {
+ if (!skip_this && !msg_id.is_empty()) {
+ if (plural_index != plural_forms - 1) {
+ memdelete(f);
+ ERR_FAIL_V_MSG(RES(), "Number of 'msgstr[]' doesn't match with number of plural forms: " + path + ":" + itos(line));
+ }
+ translation->add_plural_message(msg_id, msgs_plural, msg_context);
}
- translation->add_plural_message(msg_id, msgs_plural, msg_context);
}
}
@@ -290,6 +396,7 @@ RES TranslationLoaderPO::load(const String &p_path, const String &p_original_pat
void TranslationLoaderPO::get_recognized_extensions(List<String> *p_extensions) const {
p_extensions->push_back("po");
+ p_extensions->push_back("mo");
}
bool TranslationLoaderPO::handles_type(const String &p_type) const {
@@ -297,7 +404,7 @@ bool TranslationLoaderPO::handles_type(const String &p_type) const {
}
String TranslationLoaderPO::get_resource_type(const String &p_path) const {
- if (p_path.get_extension().to_lower() == "po") {
+ if (p_path.get_extension().to_lower() == "po" || p_path.get_extension().to_lower() == "mo") {
return "Translation";
}
return "";
diff --git a/core/math/a_star.cpp b/core/math/a_star.cpp
index 14057b96be..4212b43621 100644
--- a/core/math/a_star.cpp
+++ b/core/math/a_star.cpp
@@ -33,7 +33,7 @@
#include "core/math/geometry_3d.h"
#include "core/object/script_language.h"
-int AStar::get_available_point_id() const {
+int AStar3D::get_available_point_id() const {
if (points.has(last_free_id)) {
int cur_new_id = last_free_id + 1;
while (points.has(cur_new_id)) {
@@ -45,7 +45,7 @@ int AStar::get_available_point_id() const {
return last_free_id;
}
-void AStar::add_point(int p_id, const Vector3 &p_pos, real_t p_weight_scale) {
+void AStar3D::add_point(int p_id, const Vector3 &p_pos, real_t p_weight_scale) {
ERR_FAIL_COND_MSG(p_id < 0, vformat("Can't add a point with negative id: %d.", p_id));
ERR_FAIL_COND_MSG(p_weight_scale < 1, vformat("Can't add a point with weight scale less than one: %f.", p_weight_scale));
@@ -68,7 +68,7 @@ void AStar::add_point(int p_id, const Vector3 &p_pos, real_t p_weight_scale) {
}
}
-Vector3 AStar::get_point_position(int p_id) const {
+Vector3 AStar3D::get_point_position(int p_id) const {
Point *p;
bool p_exists = points.lookup(p_id, p);
ERR_FAIL_COND_V_MSG(!p_exists, Vector3(), vformat("Can't get point's position. Point with id: %d doesn't exist.", p_id));
@@ -76,7 +76,7 @@ Vector3 AStar::get_point_position(int p_id) const {
return p->pos;
}
-void AStar::set_point_position(int p_id, const Vector3 &p_pos) {
+void AStar3D::set_point_position(int p_id, const Vector3 &p_pos) {
Point *p;
bool p_exists = points.lookup(p_id, p);
ERR_FAIL_COND_MSG(!p_exists, vformat("Can't set point's position. Point with id: %d doesn't exist.", p_id));
@@ -84,7 +84,7 @@ void AStar::set_point_position(int p_id, const Vector3 &p_pos) {
p->pos = p_pos;
}
-real_t AStar::get_point_weight_scale(int p_id) const {
+real_t AStar3D::get_point_weight_scale(int p_id) const {
Point *p;
bool p_exists = points.lookup(p_id, p);
ERR_FAIL_COND_V_MSG(!p_exists, 0, vformat("Can't get point's weight scale. Point with id: %d doesn't exist.", p_id));
@@ -92,7 +92,7 @@ real_t AStar::get_point_weight_scale(int p_id) const {
return p->weight_scale;
}
-void AStar::set_point_weight_scale(int p_id, real_t p_weight_scale) {
+void AStar3D::set_point_weight_scale(int p_id, real_t p_weight_scale) {
Point *p;
bool p_exists = points.lookup(p_id, p);
ERR_FAIL_COND_MSG(!p_exists, vformat("Can't set point's weight scale. Point with id: %d doesn't exist.", p_id));
@@ -101,7 +101,7 @@ void AStar::set_point_weight_scale(int p_id, real_t p_weight_scale) {
p->weight_scale = p_weight_scale;
}
-void AStar::remove_point(int p_id) {
+void AStar3D::remove_point(int p_id) {
Point *p;
bool p_exists = points.lookup(p_id, p);
ERR_FAIL_COND_MSG(!p_exists, vformat("Can't remove point. Point with id: %d doesn't exist.", p_id));
@@ -127,7 +127,7 @@ void AStar::remove_point(int p_id) {
last_free_id = p_id;
}
-void AStar::connect_points(int p_id, int p_with_id, bool bidirectional) {
+void AStar3D::connect_points(int p_id, int p_with_id, bool bidirectional) {
ERR_FAIL_COND_MSG(p_id == p_with_id, vformat("Can't connect point with id: %d to itself.", p_id));
Point *a;
@@ -165,7 +165,7 @@ void AStar::connect_points(int p_id, int p_with_id, bool bidirectional) {
segments.insert(s);
}
-void AStar::disconnect_points(int p_id, int p_with_id, bool bidirectional) {
+void AStar3D::disconnect_points(int p_id, int p_with_id, bool bidirectional) {
Point *a;
bool a_exists = points.lookup(p_id, a);
ERR_FAIL_COND_MSG(!a_exists, vformat("Can't disconnect points. Point with id: %d doesn't exist.", p_id));
@@ -205,11 +205,11 @@ void AStar::disconnect_points(int p_id, int p_with_id, bool bidirectional) {
}
}
-bool AStar::has_point(int p_id) const {
+bool AStar3D::has_point(int p_id) const {
return points.has(p_id);
}
-Array AStar::get_point_ids() {
+Array AStar3D::get_point_ids() {
Array point_list;
for (OAHashMap<int, Point *>::Iterator it = points.iter(); it.valid; it = points.next_iter(it)) {
@@ -219,7 +219,7 @@ Array AStar::get_point_ids() {
return point_list;
}
-Vector<int> AStar::get_point_connections(int p_id) {
+Vector<int> AStar3D::get_point_connections(int p_id) {
Point *p;
bool p_exists = points.lookup(p_id, p);
ERR_FAIL_COND_V_MSG(!p_exists, Vector<int>(), vformat("Can't get point's connections. Point with id: %d doesn't exist.", p_id));
@@ -233,7 +233,7 @@ Vector<int> AStar::get_point_connections(int p_id) {
return point_list;
}
-bool AStar::are_points_connected(int p_id, int p_with_id, bool bidirectional) const {
+bool AStar3D::are_points_connected(int p_id, int p_with_id, bool bidirectional) const {
Segment s(p_id, p_with_id);
const Set<Segment>::Element *element = segments.find(s);
@@ -241,7 +241,7 @@ bool AStar::are_points_connected(int p_id, int p_with_id, bool bidirectional) co
(bidirectional || (element->get().direction & s.direction) == s.direction);
}
-void AStar::clear() {
+void AStar3D::clear() {
last_free_id = 0;
for (OAHashMap<int, Point *>::Iterator it = points.iter(); it.valid; it = points.next_iter(it)) {
memdelete(*(it.value));
@@ -250,21 +250,21 @@ void AStar::clear() {
points.clear();
}
-int AStar::get_point_count() const {
+int AStar3D::get_point_count() const {
return points.get_num_elements();
}
-int AStar::get_point_capacity() const {
+int AStar3D::get_point_capacity() const {
return points.get_capacity();
}
-void AStar::reserve_space(int p_num_nodes) {
+void AStar3D::reserve_space(int p_num_nodes) {
ERR_FAIL_COND_MSG(p_num_nodes <= 0, vformat("New capacity must be greater than 0, new was: %d.", p_num_nodes));
ERR_FAIL_COND_MSG((uint32_t)p_num_nodes < points.get_capacity(), vformat("New capacity must be greater than current capacity: %d, new was: %d.", points.get_capacity(), p_num_nodes));
points.reserve(p_num_nodes);
}
-int AStar::get_closest_point(const Vector3 &p_point, bool p_include_disabled) const {
+int AStar3D::get_closest_point(const Vector3 &p_point, bool p_include_disabled) const {
int closest_id = -1;
real_t closest_dist = 1e20;
@@ -289,7 +289,7 @@ int AStar::get_closest_point(const Vector3 &p_point, bool p_include_disabled) co
return closest_id;
}
-Vector3 AStar::get_closest_position_in_segment(const Vector3 &p_point) const {
+Vector3 AStar3D::get_closest_position_in_segment(const Vector3 &p_point) const {
real_t closest_dist = 1e20;
Vector3 closest_point;
@@ -318,7 +318,7 @@ Vector3 AStar::get_closest_position_in_segment(const Vector3 &p_point) const {
return closest_point;
}
-bool AStar::_solve(Point *begin_point, Point *end_point) {
+bool AStar3D::_solve(Point *begin_point, Point *end_point) {
pass++;
if (!end_point->enabled) {
@@ -380,7 +380,7 @@ bool AStar::_solve(Point *begin_point, Point *end_point) {
return found_route;
}
-real_t AStar::_estimate_cost(int p_from_id, int p_to_id) {
+real_t AStar3D::_estimate_cost(int p_from_id, int p_to_id) {
real_t scost;
if (GDVIRTUAL_CALL(_estimate_cost, p_from_id, p_to_id, scost)) {
return scost;
@@ -397,7 +397,7 @@ real_t AStar::_estimate_cost(int p_from_id, int p_to_id) {
return from_point->pos.distance_to(to_point->pos);
}
-real_t AStar::_compute_cost(int p_from_id, int p_to_id) {
+real_t AStar3D::_compute_cost(int p_from_id, int p_to_id) {
real_t scost;
if (GDVIRTUAL_CALL(_compute_cost, p_from_id, p_to_id, scost)) {
return scost;
@@ -414,7 +414,7 @@ real_t AStar::_compute_cost(int p_from_id, int p_to_id) {
return from_point->pos.distance_to(to_point->pos);
}
-Vector<Vector3> AStar::get_point_path(int p_from_id, int p_to_id) {
+Vector<Vector3> AStar3D::get_point_path(int p_from_id, int p_to_id) {
Point *a;
bool from_exists = points.lookup(p_from_id, a);
ERR_FAIL_COND_V_MSG(!from_exists, Vector<Vector3>(), vformat("Can't get point path. Point with id: %d doesn't exist.", p_from_id));
@@ -463,7 +463,7 @@ Vector<Vector3> AStar::get_point_path(int p_from_id, int p_to_id) {
return path;
}
-Vector<int> AStar::get_id_path(int p_from_id, int p_to_id) {
+Vector<int> AStar3D::get_id_path(int p_from_id, int p_to_id) {
Point *a;
bool from_exists = points.lookup(p_from_id, a);
ERR_FAIL_COND_V_MSG(!from_exists, Vector<int>(), vformat("Can't get id path. Point with id: %d doesn't exist.", p_from_id));
@@ -512,7 +512,7 @@ Vector<int> AStar::get_id_path(int p_from_id, int p_to_id) {
return path;
}
-void AStar::set_point_disabled(int p_id, bool p_disabled) {
+void AStar3D::set_point_disabled(int p_id, bool p_disabled) {
Point *p;
bool p_exists = points.lookup(p_id, p);
ERR_FAIL_COND_MSG(!p_exists, vformat("Can't set if point is disabled. Point with id: %d doesn't exist.", p_id));
@@ -520,7 +520,7 @@ void AStar::set_point_disabled(int p_id, bool p_disabled) {
p->enabled = !p_disabled;
}
-bool AStar::is_point_disabled(int p_id) const {
+bool AStar3D::is_point_disabled(int p_id) const {
Point *p;
bool p_exists = points.lookup(p_id, p);
ERR_FAIL_COND_V_MSG(!p_exists, false, vformat("Can't get if point is disabled. Point with id: %d doesn't exist.", p_id));
@@ -528,41 +528,41 @@ bool AStar::is_point_disabled(int p_id) const {
return !p->enabled;
}
-void AStar::_bind_methods() {
- ClassDB::bind_method(D_METHOD("get_available_point_id"), &AStar::get_available_point_id);
- ClassDB::bind_method(D_METHOD("add_point", "id", "position", "weight_scale"), &AStar::add_point, DEFVAL(1.0));
- ClassDB::bind_method(D_METHOD("get_point_position", "id"), &AStar::get_point_position);
- ClassDB::bind_method(D_METHOD("set_point_position", "id", "position"), &AStar::set_point_position);
- ClassDB::bind_method(D_METHOD("get_point_weight_scale", "id"), &AStar::get_point_weight_scale);
- ClassDB::bind_method(D_METHOD("set_point_weight_scale", "id", "weight_scale"), &AStar::set_point_weight_scale);
- ClassDB::bind_method(D_METHOD("remove_point", "id"), &AStar::remove_point);
- ClassDB::bind_method(D_METHOD("has_point", "id"), &AStar::has_point);
- ClassDB::bind_method(D_METHOD("get_point_connections", "id"), &AStar::get_point_connections);
- ClassDB::bind_method(D_METHOD("get_point_ids"), &AStar::get_point_ids);
+void AStar3D::_bind_methods() {
+ ClassDB::bind_method(D_METHOD("get_available_point_id"), &AStar3D::get_available_point_id);
+ ClassDB::bind_method(D_METHOD("add_point", "id", "position", "weight_scale"), &AStar3D::add_point, DEFVAL(1.0));
+ ClassDB::bind_method(D_METHOD("get_point_position", "id"), &AStar3D::get_point_position);
+ ClassDB::bind_method(D_METHOD("set_point_position", "id", "position"), &AStar3D::set_point_position);
+ ClassDB::bind_method(D_METHOD("get_point_weight_scale", "id"), &AStar3D::get_point_weight_scale);
+ ClassDB::bind_method(D_METHOD("set_point_weight_scale", "id", "weight_scale"), &AStar3D::set_point_weight_scale);
+ ClassDB::bind_method(D_METHOD("remove_point", "id"), &AStar3D::remove_point);
+ ClassDB::bind_method(D_METHOD("has_point", "id"), &AStar3D::has_point);
+ ClassDB::bind_method(D_METHOD("get_point_connections", "id"), &AStar3D::get_point_connections);
+ ClassDB::bind_method(D_METHOD("get_point_ids"), &AStar3D::get_point_ids);
- ClassDB::bind_method(D_METHOD("set_point_disabled", "id", "disabled"), &AStar::set_point_disabled, DEFVAL(true));
- ClassDB::bind_method(D_METHOD("is_point_disabled", "id"), &AStar::is_point_disabled);
+ ClassDB::bind_method(D_METHOD("set_point_disabled", "id", "disabled"), &AStar3D::set_point_disabled, DEFVAL(true));
+ ClassDB::bind_method(D_METHOD("is_point_disabled", "id"), &AStar3D::is_point_disabled);
- ClassDB::bind_method(D_METHOD("connect_points", "id", "to_id", "bidirectional"), &AStar::connect_points, DEFVAL(true));
- ClassDB::bind_method(D_METHOD("disconnect_points", "id", "to_id", "bidirectional"), &AStar::disconnect_points, DEFVAL(true));
- ClassDB::bind_method(D_METHOD("are_points_connected", "id", "to_id", "bidirectional"), &AStar::are_points_connected, DEFVAL(true));
+ ClassDB::bind_method(D_METHOD("connect_points", "id", "to_id", "bidirectional"), &AStar3D::connect_points, DEFVAL(true));
+ ClassDB::bind_method(D_METHOD("disconnect_points", "id", "to_id", "bidirectional"), &AStar3D::disconnect_points, DEFVAL(true));
+ ClassDB::bind_method(D_METHOD("are_points_connected", "id", "to_id", "bidirectional"), &AStar3D::are_points_connected, DEFVAL(true));
- ClassDB::bind_method(D_METHOD("get_point_count"), &AStar::get_point_count);
- ClassDB::bind_method(D_METHOD("get_point_capacity"), &AStar::get_point_capacity);
- ClassDB::bind_method(D_METHOD("reserve_space", "num_nodes"), &AStar::reserve_space);
- ClassDB::bind_method(D_METHOD("clear"), &AStar::clear);
+ ClassDB::bind_method(D_METHOD("get_point_count"), &AStar3D::get_point_count);
+ ClassDB::bind_method(D_METHOD("get_point_capacity"), &AStar3D::get_point_capacity);
+ ClassDB::bind_method(D_METHOD("reserve_space", "num_nodes"), &AStar3D::reserve_space);
+ ClassDB::bind_method(D_METHOD("clear"), &AStar3D::clear);
- ClassDB::bind_method(D_METHOD("get_closest_point", "to_position", "include_disabled"), &AStar::get_closest_point, DEFVAL(false));
- ClassDB::bind_method(D_METHOD("get_closest_position_in_segment", "to_position"), &AStar::get_closest_position_in_segment);
+ ClassDB::bind_method(D_METHOD("get_closest_point", "to_position", "include_disabled"), &AStar3D::get_closest_point, DEFVAL(false));
+ ClassDB::bind_method(D_METHOD("get_closest_position_in_segment", "to_position"), &AStar3D::get_closest_position_in_segment);
- ClassDB::bind_method(D_METHOD("get_point_path", "from_id", "to_id"), &AStar::get_point_path);
- ClassDB::bind_method(D_METHOD("get_id_path", "from_id", "to_id"), &AStar::get_id_path);
+ ClassDB::bind_method(D_METHOD("get_point_path", "from_id", "to_id"), &AStar3D::get_point_path);
+ ClassDB::bind_method(D_METHOD("get_id_path", "from_id", "to_id"), &AStar3D::get_id_path);
GDVIRTUAL_BIND(_estimate_cost, "from_id", "to_id")
GDVIRTUAL_BIND(_compute_cost, "from_id", "to_id")
}
-AStar::~AStar() {
+AStar3D::~AStar3D() {
clear();
}
@@ -660,11 +660,11 @@ real_t AStar2D::_estimate_cost(int p_from_id, int p_to_id) {
return scost;
}
- AStar::Point *from_point;
+ AStar3D::Point *from_point;
bool from_exists = astar.points.lookup(p_from_id, from_point);
ERR_FAIL_COND_V_MSG(!from_exists, 0, vformat("Can't estimate cost. Point with id: %d doesn't exist.", p_from_id));
- AStar::Point *to_point;
+ AStar3D::Point *to_point;
bool to_exists = astar.points.lookup(p_to_id, to_point);
ERR_FAIL_COND_V_MSG(!to_exists, 0, vformat("Can't estimate cost. Point with id: %d doesn't exist.", p_to_id));
@@ -677,11 +677,11 @@ real_t AStar2D::_compute_cost(int p_from_id, int p_to_id) {
return scost;
}
- AStar::Point *from_point;
+ AStar3D::Point *from_point;
bool from_exists = astar.points.lookup(p_from_id, from_point);
ERR_FAIL_COND_V_MSG(!from_exists, 0, vformat("Can't compute cost. Point with id: %d doesn't exist.", p_from_id));
- AStar::Point *to_point;
+ AStar3D::Point *to_point;
bool to_exists = astar.points.lookup(p_to_id, to_point);
ERR_FAIL_COND_V_MSG(!to_exists, 0, vformat("Can't compute cost. Point with id: %d doesn't exist.", p_to_id));
@@ -689,11 +689,11 @@ real_t AStar2D::_compute_cost(int p_from_id, int p_to_id) {
}
Vector<Vector2> AStar2D::get_point_path(int p_from_id, int p_to_id) {
- AStar::Point *a;
+ AStar3D::Point *a;
bool from_exists = astar.points.lookup(p_from_id, a);
ERR_FAIL_COND_V_MSG(!from_exists, Vector<Vector2>(), vformat("Can't get point path. Point with id: %d doesn't exist.", p_from_id));
- AStar::Point *b;
+ AStar3D::Point *b;
bool to_exists = astar.points.lookup(p_to_id, b);
ERR_FAIL_COND_V_MSG(!to_exists, Vector<Vector2>(), vformat("Can't get point path. Point with id: %d doesn't exist.", p_to_id));
@@ -702,15 +702,15 @@ Vector<Vector2> AStar2D::get_point_path(int p_from_id, int p_to_id) {
return ret;
}
- AStar::Point *begin_point = a;
- AStar::Point *end_point = b;
+ AStar3D::Point *begin_point = a;
+ AStar3D::Point *end_point = b;
bool found_route = _solve(begin_point, end_point);
if (!found_route) {
return Vector<Vector2>();
}
- AStar::Point *p = end_point;
+ AStar3D::Point *p = end_point;
int pc = 1; // Begin point
while (p != begin_point) {
pc++;
@@ -723,7 +723,7 @@ Vector<Vector2> AStar2D::get_point_path(int p_from_id, int p_to_id) {
{
Vector2 *w = path.ptrw();
- AStar::Point *p2 = end_point;
+ AStar3D::Point *p2 = end_point;
int idx = pc - 1;
while (p2 != begin_point) {
w[idx--] = Vector2(p2->pos.x, p2->pos.y);
@@ -737,11 +737,11 @@ Vector<Vector2> AStar2D::get_point_path(int p_from_id, int p_to_id) {
}
Vector<int> AStar2D::get_id_path(int p_from_id, int p_to_id) {
- AStar::Point *a;
+ AStar3D::Point *a;
bool from_exists = astar.points.lookup(p_from_id, a);
ERR_FAIL_COND_V_MSG(!from_exists, Vector<int>(), vformat("Can't get id path. Point with id: %d doesn't exist.", p_from_id));
- AStar::Point *b;
+ AStar3D::Point *b;
bool to_exists = astar.points.lookup(p_to_id, b);
ERR_FAIL_COND_V_MSG(!to_exists, Vector<int>(), vformat("Can't get id path. Point with id: %d doesn't exist.", p_to_id));
@@ -751,15 +751,15 @@ Vector<int> AStar2D::get_id_path(int p_from_id, int p_to_id) {
return ret;
}
- AStar::Point *begin_point = a;
- AStar::Point *end_point = b;
+ AStar3D::Point *begin_point = a;
+ AStar3D::Point *end_point = b;
bool found_route = _solve(begin_point, end_point);
if (!found_route) {
return Vector<int>();
}
- AStar::Point *p = end_point;
+ AStar3D::Point *p = end_point;
int pc = 1; // Begin point
while (p != begin_point) {
pc++;
@@ -785,7 +785,7 @@ Vector<int> AStar2D::get_id_path(int p_from_id, int p_to_id) {
return path;
}
-bool AStar2D::_solve(AStar::Point *begin_point, AStar::Point *end_point) {
+bool AStar2D::_solve(AStar3D::Point *begin_point, AStar3D::Point *end_point) {
astar.pass++;
if (!end_point->enabled) {
@@ -794,15 +794,15 @@ bool AStar2D::_solve(AStar::Point *begin_point, AStar::Point *end_point) {
bool found_route = false;
- Vector<AStar::Point *> open_list;
- SortArray<AStar::Point *, AStar::SortPoints> sorter;
+ Vector<AStar3D::Point *> open_list;
+ SortArray<AStar3D::Point *, AStar3D::SortPoints> sorter;
begin_point->g_score = 0;
begin_point->f_score = _estimate_cost(begin_point->id, end_point->id);
open_list.push_back(begin_point);
while (!open_list.is_empty()) {
- AStar::Point *p = open_list[0]; // The currently processed point
+ AStar3D::Point *p = open_list[0]; // The currently processed point
if (p == end_point) {
found_route = true;
@@ -813,8 +813,8 @@ bool AStar2D::_solve(AStar::Point *begin_point, AStar::Point *end_point) {
open_list.remove_at(open_list.size() - 1);
p->closed_pass = astar.pass; // Mark the point as closed
- for (OAHashMap<int, AStar::Point *>::Iterator it = p->neighbours.iter(); it.valid; it = p->neighbours.next_iter(it)) {
- AStar::Point *e = *(it.value); // The neighbour point
+ for (OAHashMap<int, AStar3D::Point *>::Iterator it = p->neighbours.iter(); it.valid; it = p->neighbours.next_iter(it)) {
+ AStar3D::Point *e = *(it.value); // The neighbour point
if (!e->enabled || e->closed_pass == astar.pass) {
continue;
diff --git a/core/math/a_star.h b/core/math/a_star.h
index 130c202a61..bb7112fb09 100644
--- a/core/math/a_star.h
+++ b/core/math/a_star.h
@@ -40,8 +40,8 @@
A* pathfinding algorithm.
*/
-class AStar : public RefCounted {
- GDCLASS(AStar, RefCounted);
+class AStar3D : public RefCounted {
+ GDCLASS(AStar3D, RefCounted);
friend class AStar2D;
struct Point {
@@ -156,15 +156,15 @@ public:
Vector<Vector3> get_point_path(int p_from_id, int p_to_id);
Vector<int> get_id_path(int p_from_id, int p_to_id);
- AStar() {}
- ~AStar();
+ AStar3D() {}
+ ~AStar3D();
};
class AStar2D : public RefCounted {
GDCLASS(AStar2D, RefCounted);
- AStar astar;
+ AStar3D astar;
- bool _solve(AStar::Point *begin_point, AStar::Point *end_point);
+ bool _solve(AStar3D::Point *begin_point, AStar3D::Point *end_point);
protected:
static void _bind_methods();
diff --git a/core/math/bvh.h b/core/math/bvh.h
index e686e27445..f429ce189b 100644
--- a/core/math/bvh.h
+++ b/core/math/bvh.h
@@ -196,6 +196,7 @@ public:
////////////////////////////////////////////////////
void move(BVHHandle p_handle, const BOUNDS &p_aabb) {
+ DEV_ASSERT(!p_handle.is_invalid());
BVH_LOCKED_FUNCTION
if (tree.item_move(p_handle, p_aabb)) {
if (USE_PAIRS) {
@@ -205,10 +206,12 @@ public:
}
void recheck_pairs(BVHHandle p_handle) {
+ DEV_ASSERT(!p_handle.is_invalid());
force_collision_check(p_handle);
}
void erase(BVHHandle p_handle) {
+ DEV_ASSERT(!p_handle.is_invalid());
BVH_LOCKED_FUNCTION
// call unpair and remove all references to the item
// before deleting from the tree
@@ -225,6 +228,7 @@ public:
// set pairable has never been called.
// (deferred collision checks are a workaround for visual server for historical reasons)
void force_collision_check(BVHHandle p_handle) {
+ DEV_ASSERT(!p_handle.is_invalid());
BVH_LOCKED_FUNCTION
if (USE_PAIRS) {
// the aabb should already be up to date in the BVH
@@ -243,6 +247,7 @@ public:
// but generically this makes items add or remove from the
// tree internally, to speed things up by ignoring inactive items
bool activate(BVHHandle p_handle, const BOUNDS &p_aabb, bool p_delay_collision_check = false) {
+ DEV_ASSERT(!p_handle.is_invalid());
BVH_LOCKED_FUNCTION
// sending the aabb here prevents the need for the BVH to maintain
// a redundant copy of the aabb.
@@ -267,6 +272,7 @@ public:
}
bool deactivate(BVHHandle p_handle) {
+ DEV_ASSERT(!p_handle.is_invalid());
BVH_LOCKED_FUNCTION
// returns success
if (tree.item_deactivate(p_handle)) {
@@ -285,6 +291,7 @@ public:
}
bool get_active(BVHHandle p_handle) {
+ DEV_ASSERT(!p_handle.is_invalid());
BVH_LOCKED_FUNCTION
return tree.item_get_active(p_handle);
}
@@ -307,6 +314,7 @@ public:
// prefer calling this directly as type safe
void set_tree(const BVHHandle &p_handle, uint32_t p_tree_id, uint32_t p_tree_collision_mask, bool p_force_collision_check = true) {
+ DEV_ASSERT(!p_handle.is_invalid());
BVH_LOCKED_FUNCTION
// Returns true if the pairing state has changed.
bool state_changed = tree.item_set_tree(p_handle, p_tree_id, p_tree_collision_mask);
@@ -465,13 +473,6 @@ private:
continue;
}
-#ifdef BVH_CHECKS
- // if neither are pairable, they should ignore each other
- // THIS SHOULD NEVER HAPPEN .. now we only test the pairable tree
- // if the changed item is not pairable
- CRASH_COND(params.test_pairable_only && !tree._extra[ref_id].pairable);
-#endif
-
// checkmasks is already done in the cull routine.
BVHHandle h_collidee;
h_collidee.set_id(ref_id);
@@ -485,6 +486,7 @@ private:
public:
void item_get_AABB(BVHHandle p_handle, BOUNDS &r_aabb) {
+ DEV_ASSERT(!p_handle.is_invalid());
BVHABB_CLASS abb;
tree.item_get_ABB(p_handle, abb);
abb.to(r_aabb);
diff --git a/core/math/bvh_structs.inc b/core/math/bvh_structs.inc
index b0d9ae3615..58c8f0479a 100644
--- a/core/math/bvh_structs.inc
+++ b/core/math/bvh_structs.inc
@@ -60,11 +60,23 @@ private:
public:
// accessors
- BVHABB_CLASS &get_aabb(uint32_t p_id) { return aabbs[p_id]; }
- const BVHABB_CLASS &get_aabb(uint32_t p_id) const { return aabbs[p_id]; }
+ BVHABB_CLASS &get_aabb(uint32_t p_id) {
+ BVH_ASSERT(p_id < MAX_ITEMS);
+ return aabbs[p_id];
+ }
+ const BVHABB_CLASS &get_aabb(uint32_t p_id) const {
+ BVH_ASSERT(p_id < MAX_ITEMS);
+ return aabbs[p_id];
+ }
- uint32_t &get_item_ref_id(uint32_t p_id) { return item_ref_ids[p_id]; }
- const uint32_t &get_item_ref_id(uint32_t p_id) const { return item_ref_ids[p_id]; }
+ uint32_t &get_item_ref_id(uint32_t p_id) {
+ BVH_ASSERT(p_id < MAX_ITEMS);
+ return item_ref_ids[p_id];
+ }
+ const uint32_t &get_item_ref_id(uint32_t p_id) const {
+ BVH_ASSERT(p_id < MAX_ITEMS);
+ return item_ref_ids[p_id];
+ }
bool is_dirty() const { return dirty; }
void set_dirty(bool p) { dirty = p; }
diff --git a/core/math/bvh_tree.h b/core/math/bvh_tree.h
index da9b307778..cdb2bb4413 100644
--- a/core/math/bvh_tree.h
+++ b/core/math/bvh_tree.h
@@ -54,7 +54,7 @@
#define BVH_EXPAND_LEAF_AABBS
// never do these checks in release
-#if defined(TOOLS_ENABLED) && defined(DEBUG_ENABLED)
+#ifdef DEV_ENABLED
//#define BVH_VERBOSE
//#define BVH_VERBOSE_TREE
//#define BVH_VERBOSE_PAIRING
@@ -217,7 +217,7 @@ private:
BVH_ASSERT(!parent.is_leaf());
int child_num = parent.find_child(p_old_child_id);
- BVH_ASSERT(child_num != BVHCommon::INVALID);
+ BVH_ASSERT(child_num != -1);
parent.children[child_num] = p_new_child_id;
TNode &new_child = _nodes[p_new_child_id];
@@ -229,7 +229,7 @@ private:
BVH_ASSERT(!parent.is_leaf());
int child_num = parent.find_child(p_child_id);
- BVH_ASSERT(child_num != BVHCommon::INVALID);
+ BVH_ASSERT(child_num != -1);
parent.remove_child_internal(child_num);
diff --git a/core/object/class_db.cpp b/core/object/class_db.cpp
index e09c6cb97c..fd86a02b90 100644
--- a/core/object/class_db.cpp
+++ b/core/object/class_db.cpp
@@ -1485,9 +1485,10 @@ void ClassDB::add_virtual_method(const StringName &p_class, const MethodInfo &p_
if (p_object_core) {
mi.flags |= METHOD_FLAG_OBJECT_CORE;
}
- if (p_arg_names.size()) {
+
+ if (!p_object_core) {
if (p_arg_names.size() != mi.arguments.size()) {
- WARN_PRINT("Mismatch argument name count for virtual function: " + String(p_class) + "::" + p_method.name);
+ WARN_PRINT("Mismatch argument name count for virtual method: " + String(p_class) + "::" + p_method.name);
} else {
for (int i = 0; i < p_arg_names.size(); i++) {
mi.arguments[i].name = p_arg_names[i];
@@ -1495,6 +1496,10 @@ void ClassDB::add_virtual_method(const StringName &p_class, const MethodInfo &p_
}
}
+ if (classes[p_class].virtual_methods_map.has(p_method.name)) {
+ // overloading not supported
+ ERR_FAIL_MSG("Virtual method already bound '" + String(p_class) + "::" + p_method.name + "'.");
+ }
classes[p_class].virtual_methods.push_back(mi);
classes[p_class].virtual_methods_map[p_method.name] = mi;
@@ -1551,15 +1556,6 @@ bool ClassDB::is_class_exposed(const StringName &p_class) {
return ti->exposed;
}
-StringName ClassDB::get_category(const StringName &p_node) {
- ERR_FAIL_COND_V(!classes.has(p_node), StringName());
-#ifdef DEBUG_ENABLED
- return classes[p_node].category;
-#else
- return StringName();
-#endif
-}
-
void ClassDB::add_resource_base_extension(const StringName &p_extension, const StringName &p_class) {
if (resource_base_extensions.has(p_extension)) {
return;
diff --git a/core/object/class_db.h b/core/object/class_db.h
index 32e4bf7644..b8a4b3ea2b 100644
--- a/core/object/class_db.h
+++ b/core/object/class_db.h
@@ -109,7 +109,6 @@ public:
Set<StringName> methods_in_properties;
List<MethodInfo> virtual_methods;
Map<StringName, MethodInfo> virtual_methods_map;
- StringName category;
Map<StringName, Vector<Error>> method_error_values;
#endif
HashMap<StringName, PropertySetGet> property_setget;
@@ -227,75 +226,27 @@ public:
static uint64_t get_api_hash(APIType p_api);
- template <class N, class M>
- static MethodBind *bind_method(N p_method_name, M p_method) {
- MethodBind *bind = create_method_bind(p_method);
-
- return bind_methodfi(METHOD_FLAGS_DEFAULT, bind, p_method_name, nullptr, 0); //use static function, much smaller binary usage
- }
-
- template <class N, class M>
- static MethodBind *bind_method(N p_method_name, M p_method, const Variant &p_def1) {
- MethodBind *bind = create_method_bind(p_method);
- const Variant *ptr[1] = { &p_def1 };
-
- return bind_methodfi(METHOD_FLAGS_DEFAULT, bind, p_method_name, ptr, 1);
- }
-
- template <class N, class M>
- static MethodBind *bind_method(N p_method_name, M p_method, const Variant &p_def1, const Variant &p_def2) {
- MethodBind *bind = create_method_bind(p_method);
- const Variant *ptr[2] = { &p_def1, &p_def2 };
-
- return bind_methodfi(METHOD_FLAGS_DEFAULT, bind, p_method_name, ptr, 2);
- }
-
- template <class N, class M>
- static MethodBind *bind_method(N p_method_name, M p_method, const Variant &p_def1, const Variant &p_def2, const Variant &p_def3) {
- MethodBind *bind = create_method_bind(p_method);
- const Variant *ptr[3] = { &p_def1, &p_def2, &p_def3 };
-
- return bind_methodfi(METHOD_FLAGS_DEFAULT, bind, p_method_name, ptr, 3);
- }
-
- template <class N, class M>
- static MethodBind *bind_method(N p_method_name, M p_method, const Variant &p_def1, const Variant &p_def2, const Variant &p_def3, const Variant &p_def4) {
- MethodBind *bind = create_method_bind(p_method);
- const Variant *ptr[4] = { &p_def1, &p_def2, &p_def3, &p_def4 };
-
- return bind_methodfi(METHOD_FLAGS_DEFAULT, bind, p_method_name, ptr, 4);
- }
-
- template <class N, class M>
- static MethodBind *bind_method(N p_method_name, M p_method, const Variant &p_def1, const Variant &p_def2, const Variant &p_def3, const Variant &p_def4, const Variant &p_def5) {
- MethodBind *bind = create_method_bind(p_method);
- const Variant *ptr[5] = { &p_def1, &p_def2, &p_def3, &p_def4, &p_def5 };
-
- return bind_methodfi(METHOD_FLAGS_DEFAULT, bind, p_method_name, ptr, 5);
- }
-
- template <class N, class M>
- static MethodBind *bind_method(N p_method_name, M p_method, const Variant &p_def1, const Variant &p_def2, const Variant &p_def3, const Variant &p_def4, const Variant &p_def5, const Variant &p_def6) {
- MethodBind *bind = create_method_bind(p_method);
- const Variant *ptr[6] = { &p_def1, &p_def2, &p_def3, &p_def4, &p_def5, &p_def6 };
-
- return bind_methodfi(METHOD_FLAGS_DEFAULT, bind, p_method_name, ptr, 6);
- }
-
- template <class N, class M>
- static MethodBind *bind_method(N p_method_name, M p_method, const Variant &p_def1, const Variant &p_def2, const Variant &p_def3, const Variant &p_def4, const Variant &p_def5, const Variant &p_def6, const Variant &p_def7) {
+ template <class N, class M, typename... VarArgs>
+ static MethodBind *bind_method(N p_method_name, M p_method, VarArgs... p_args) {
+ Variant args[sizeof...(p_args) + 1] = { p_args..., Variant() }; // +1 makes sure zero sized arrays are also supported.
+ const Variant *argptrs[sizeof...(p_args) + 1];
+ for (uint32_t i = 0; i < sizeof...(p_args); i++) {
+ argptrs[i] = &args[i];
+ }
MethodBind *bind = create_method_bind(p_method);
- const Variant *ptr[7] = { &p_def1, &p_def2, &p_def3, &p_def4, &p_def5, &p_def6, &p_def7 };
-
- return bind_methodfi(METHOD_FLAGS_DEFAULT, bind, p_method_name, ptr, 7);
+ return bind_methodfi(METHOD_FLAGS_DEFAULT, bind, p_method_name, sizeof...(p_args) == 0 ? nullptr : (const Variant **)argptrs, sizeof...(p_args));
}
- template <class N, class M>
- static MethodBind *bind_method(N p_method_name, M p_method, const Variant &p_def1, const Variant &p_def2, const Variant &p_def3, const Variant &p_def4, const Variant &p_def5, const Variant &p_def6, const Variant &p_def7, const Variant &p_def8) {
- MethodBind *bind = create_method_bind(p_method);
- const Variant *ptr[8] = { &p_def1, &p_def2, &p_def3, &p_def4, &p_def5, &p_def6, &p_def7, &p_def8 };
-
- return bind_methodfi(METHOD_FLAGS_DEFAULT, bind, p_method_name, ptr, 8);
+ template <class N, class M, typename... VarArgs>
+ static MethodBind *bind_static_method(const StringName &p_class, N p_method_name, M p_method, VarArgs... p_args) {
+ Variant args[sizeof...(p_args) + 1] = { p_args..., Variant() }; // +1 makes sure zero sized arrays are also supported.
+ const Variant *argptrs[sizeof...(p_args) + 1];
+ for (uint32_t i = 0; i < sizeof...(p_args); i++) {
+ argptrs[i] = &args[i];
+ }
+ MethodBind *bind = create_static_method_bind(p_method);
+ bind->set_instance_class(p_class);
+ return bind_methodfi(METHOD_FLAGS_DEFAULT, bind, p_method_name, sizeof...(p_args) == 0 ? nullptr : (const Variant **)argptrs, sizeof...(p_args));
}
template <class M>
@@ -379,8 +330,6 @@ public:
static Vector<Error> get_method_error_return_values(const StringName &p_class, const StringName &p_method);
static Variant class_get_default_property_value(const StringName &p_class, const StringName &p_property, bool *r_valid = nullptr);
- static StringName get_category(const StringName &p_node);
-
static void set_class_enabled(const StringName &p_class, bool p_enable);
static bool is_class_enabled(const StringName &p_class);
diff --git a/core/object/make_virtuals.py b/core/object/make_virtuals.py
index 64ee5940b0..c18d70d9f6 100644
--- a/core/object/make_virtuals.py
+++ b/core/object/make_virtuals.py
@@ -28,7 +28,7 @@ _FORCE_INLINE_ bool _gdvirtual_##m_name##_call($CALLARGS) $CONST { \\
}\\
\\
if (required) {\\
- ERR_PRINT_ONCE("Required virtual method: "+get_class()+"::" + #m_name + " must be overriden before calling.");\\
+ ERR_PRINT_ONCE("Required virtual method " + get_class() + "::" + #m_name + " must be overridden before calling.");\\
$RVOID\\
}\\
\\
diff --git a/core/object/method_bind.cpp b/core/object/method_bind.cpp
index 32269b5f19..a79adb7c6c 100644
--- a/core/object/method_bind.cpp
+++ b/core/object/method_bind.cpp
@@ -83,6 +83,10 @@ void MethodBind::_set_const(bool p_const) {
_const = p_const;
}
+void MethodBind::_set_static(bool p_static) {
+ _static = p_static;
+}
+
void MethodBind::_set_returns(bool p_returns) {
_returns = p_returns;
}
diff --git a/core/object/method_bind.h b/core/object/method_bind.h
index 02b73fa273..bde6cba199 100644
--- a/core/object/method_bind.h
+++ b/core/object/method_bind.h
@@ -60,6 +60,7 @@ class MethodBind {
int default_argument_count = 0;
int argument_count = 0;
+ bool _static = false;
bool _const = false;
bool _returns = false;
@@ -69,6 +70,7 @@ protected:
Vector<StringName> arg_names;
#endif
void _set_const(bool p_const);
+ void _set_static(bool p_static);
void _set_returns(bool p_returns);
virtual Variant::Type _gen_argument_type(int p_arg) const = 0;
virtual PropertyInfo _gen_argument_type_info(int p_arg) const = 0;
@@ -116,7 +118,7 @@ public:
#endif
void set_hint_flags(uint32_t p_hint) { hint_flags = p_hint; }
- uint32_t get_hint_flags() const { return hint_flags | (is_const() ? METHOD_FLAG_CONST : 0) | (is_vararg() ? METHOD_FLAG_VARARG : 0); }
+ uint32_t get_hint_flags() const { return hint_flags | (is_const() ? METHOD_FLAG_CONST : 0) | (is_vararg() ? METHOD_FLAG_VARARG : 0) | (is_static() ? METHOD_FLAG_STATIC : 0); }
_FORCE_INLINE_ StringName get_instance_class() const { return instance_class; }
_FORCE_INLINE_ void set_instance_class(const StringName &p_class) { instance_class = p_class; }
@@ -129,6 +131,7 @@ public:
void set_name(const StringName &p_name);
_FORCE_INLINE_ int get_method_id() const { return method_id; }
_FORCE_INLINE_ bool is_const() const { return _const; }
+ _FORCE_INLINE_ bool is_static() const { return _static; }
_FORCE_INLINE_ bool has_return() const { return _returns; }
virtual bool is_vararg() const { return false; }
@@ -140,21 +143,20 @@ public:
virtual ~MethodBind();
};
-template <class T>
-class MethodBindVarArg : public MethodBind {
-public:
- typedef Variant (T::*NativeCall)(const Variant **, int, Callable::CallError &);
-
+// MethodBindVarArg base CRTP
+template <class Derived, class T, class R, bool should_returns>
+class MethodBindVarArgBase : public MethodBind {
protected:
- NativeCall call_method = nullptr;
- MethodInfo arguments;
+ R(T::*method)
+ (const Variant **, int, Callable::CallError &);
+ MethodInfo method_info;
public:
virtual PropertyInfo _gen_argument_type_info(int p_arg) const {
if (p_arg < 0) {
- return arguments.return_val;
- } else if (p_arg < arguments.arguments.size()) {
- return arguments.arguments[p_arg];
+ return _gen_return_type_info();
+ } else if (p_arg < method_info.arguments.size()) {
+ return method_info.arguments[p_arg];
} else {
return PropertyInfo(Variant::NIL, "arg_" + itos(p_arg), PROPERTY_HINT_NONE, String(), PROPERTY_USAGE_DEFAULT | PROPERTY_USAGE_NIL_IS_VARIANT);
}
@@ -170,24 +172,31 @@ public:
}
#endif
- virtual Variant call(Object *p_object, const Variant **p_args, int p_arg_count, Callable::CallError &r_error) {
- T *instance = static_cast<T *>(p_object);
- return (instance->*call_method)(p_args, p_arg_count, r_error);
+ virtual void ptrcall(Object *p_object, const void **p_args, void *r_ret) {
+ ERR_FAIL(); // Can't call.
}
- void set_method_info(const MethodInfo &p_info, bool p_return_nil_is_variant) {
- set_argument_count(p_info.arguments.size());
- Variant::Type *at = memnew_arr(Variant::Type, p_info.arguments.size() + 1);
- at[0] = p_info.return_val.type;
- if (p_info.arguments.size()) {
+ virtual bool is_const() const { return false; }
+
+ virtual bool is_vararg() const { return true; }
+
+ MethodBindVarArgBase(
+ R (T::*p_method)(const Variant **, int, Callable::CallError &),
+ const MethodInfo &p_method_info,
+ bool p_return_nil_is_variant) :
+ method(p_method), method_info(p_method_info) {
+ set_argument_count(method_info.arguments.size());
+ Variant::Type *at = memnew_arr(Variant::Type, method_info.arguments.size() + 1);
+ at[0] = _gen_return_type_info().type;
+ if (method_info.arguments.size()) {
#ifdef DEBUG_METHODS_ENABLED
Vector<StringName> names;
- names.resize(p_info.arguments.size());
+ names.resize(method_info.arguments.size());
#endif
- for (int i = 0; i < p_info.arguments.size(); i++) {
- at[i + 1] = p_info.arguments[i].type;
+ for (int i = 0; i < method_info.arguments.size(); i++) {
+ at[i + 1] = method_info.arguments[i].type;
#ifdef DEBUG_METHODS_ENABLED
- names.write[i] = p_info.arguments[i].name;
+ names.write[i] = method_info.arguments[i].name;
#endif
}
@@ -196,31 +205,76 @@ public:
#endif
}
argument_types = at;
- arguments = p_info;
if (p_return_nil_is_variant) {
- arguments.return_val.usage |= PROPERTY_USAGE_NIL_IS_VARIANT;
+ method_info.return_val.usage |= PROPERTY_USAGE_NIL_IS_VARIANT;
}
+
+ _set_returns(should_returns);
}
- virtual void ptrcall(Object *p_object, const void **p_args, void *r_ret) {
- ERR_FAIL(); // Can't call.
+private:
+ PropertyInfo _gen_return_type_info() const {
+ return Derived::_gen_return_type_info_impl();
}
+};
- void set_method(NativeCall p_method) { call_method = p_method; }
- virtual bool is_const() const { return false; }
+// variadic, no return
+template <class T>
+class MethodBindVarArgT : public MethodBindVarArgBase<MethodBindVarArgT<T>, T, void, false> {
+ friend class MethodBindVarArgBase<MethodBindVarArgT<T>, T, void, false>;
- virtual bool is_vararg() const { return true; }
+public:
+ virtual Variant call(Object *p_object, const Variant **p_args, int p_arg_count, Callable::CallError &r_error) {
+ (static_cast<T *>(p_object)->*MethodBindVarArgBase<MethodBindVarArgT<T>, T, void, false>::method)(p_args, p_arg_count, r_error);
+ return {};
+ }
- MethodBindVarArg() {
- _set_returns(true);
+ MethodBindVarArgT(
+ void (T::*p_method)(const Variant **, int, Callable::CallError &),
+ const MethodInfo &p_method_info,
+ bool p_return_nil_is_variant) :
+ MethodBindVarArgBase<MethodBindVarArgT<T>, T, void, false>(p_method, p_method_info, p_return_nil_is_variant) {
+ }
+
+private:
+ static PropertyInfo _gen_return_type_info_impl() {
+ return {};
}
};
template <class T>
-MethodBind *create_vararg_method_bind(Variant (T::*p_method)(const Variant **, int, Callable::CallError &), const MethodInfo &p_info, bool p_return_nil_is_variant) {
- MethodBindVarArg<T> *a = memnew((MethodBindVarArg<T>));
- a->set_method(p_method);
- a->set_method_info(p_info, p_return_nil_is_variant);
+MethodBind *create_vararg_method_bind(void (T::*p_method)(const Variant **, int, Callable::CallError &), const MethodInfo &p_info, bool p_return_nil_is_variant) {
+ MethodBind *a = memnew((MethodBindVarArgT<T>)(p_method, p_info, p_return_nil_is_variant));
+ a->set_instance_class(T::get_class_static());
+ return a;
+}
+
+// variadic, return
+template <class T, class R>
+class MethodBindVarArgTR : public MethodBindVarArgBase<MethodBindVarArgTR<T, R>, T, R, true> {
+ friend class MethodBindVarArgBase<MethodBindVarArgTR<T, R>, T, R, true>;
+
+public:
+ virtual Variant call(Object *p_object, const Variant **p_args, int p_arg_count, Callable::CallError &r_error) {
+ return (static_cast<T *>(p_object)->*MethodBindVarArgBase<MethodBindVarArgTR<T, R>, T, R, true>::method)(p_args, p_arg_count, r_error);
+ }
+
+ MethodBindVarArgTR(
+ R (T::*p_method)(const Variant **, int, Callable::CallError &),
+ const MethodInfo &p_info,
+ bool p_return_nil_is_variant) :
+ MethodBindVarArgBase<MethodBindVarArgTR<T, R>, T, R, true>(p_method, p_info, p_return_nil_is_variant) {
+ }
+
+private:
+ static PropertyInfo _gen_return_type_info_impl() {
+ return GetTypeInfo<R>::get_class_info();
+ }
+};
+
+template <class T, class R>
+MethodBind *create_vararg_method_bind(R (T::*p_method)(const Variant **, int, Callable::CallError &), const MethodInfo &p_info, bool p_return_nil_is_variant) {
+ MethodBind *a = memnew((MethodBindVarArgTR<T, R>)(p_method, p_info, p_return_nil_is_variant));
a->set_instance_class(T::get_class_static());
return a;
}
@@ -308,7 +362,7 @@ MethodBind *create_method_bind(void (T::*p_method)(P...)) {
return a;
}
-// no return, not const
+// no return, const
#ifdef TYPED_METHOD_BIND
template <class T, class... P>
@@ -558,4 +612,139 @@ MethodBind *create_method_bind(R (T::*p_method)(P...) const) {
return a;
}
+/* STATIC BINDS */
+
+// no return
+
+template <class... P>
+class MethodBindTS : public MethodBind {
+ void (*function)(P...);
+
+protected:
+// GCC raises warnings in the case P = {} as the comparison is always false...
+#if defined(__GNUC__) && !defined(__clang__)
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wlogical-op"
+#endif
+ virtual Variant::Type _gen_argument_type(int p_arg) const {
+ if (p_arg >= 0 && p_arg < (int)sizeof...(P)) {
+ return call_get_argument_type<P...>(p_arg);
+ } else {
+ return Variant::NIL;
+ }
+ }
+#if defined(__GNUC__) && !defined(__clang__)
+#pragma GCC diagnostic pop
+#endif
+
+ virtual PropertyInfo _gen_argument_type_info(int p_arg) const {
+ PropertyInfo pi;
+ call_get_argument_type_info<P...>(p_arg, pi);
+ return pi;
+ }
+
+public:
+#ifdef DEBUG_METHODS_ENABLED
+ virtual GodotTypeInfo::Metadata get_argument_meta(int p_arg) const {
+ return call_get_argument_metadata<P...>(p_arg);
+ }
+
+#endif
+ virtual Variant call(Object *p_object, const Variant **p_args, int p_arg_count, Callable::CallError &r_error) {
+ (void)p_object; // unused
+ call_with_variant_args_static_dv(function, p_args, p_arg_count, r_error, get_default_arguments());
+ return Variant();
+ }
+
+ virtual void ptrcall(Object *p_object, const void **p_args, void *r_ret) {
+ (void)p_object;
+ (void)r_ret;
+ call_with_ptr_args_static_method(function, p_args);
+ }
+
+ MethodBindTS(void (*p_function)(P...)) {
+ function = p_function;
+ _generate_argument_types(sizeof...(P));
+ set_argument_count(sizeof...(P));
+ _set_static(true);
+ }
+};
+
+template <class... P>
+MethodBind *create_static_method_bind(void (*p_method)(P...)) {
+ MethodBind *a = memnew((MethodBindTS<P...>)(p_method));
+ return a;
+}
+
+// return
+
+template <class R, class... P>
+class MethodBindTRS : public MethodBind {
+ R(*function)
+ (P...);
+
+protected:
+// GCC raises warnings in the case P = {} as the comparison is always false...
+#if defined(__GNUC__) && !defined(__clang__)
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wlogical-op"
+#endif
+ virtual Variant::Type _gen_argument_type(int p_arg) const {
+ if (p_arg >= 0 && p_arg < (int)sizeof...(P)) {
+ return call_get_argument_type<P...>(p_arg);
+ } else {
+ return GetTypeInfo<R>::VARIANT_TYPE;
+ }
+ }
+#if defined(__GNUC__) && !defined(__clang__)
+#pragma GCC diagnostic pop
+#endif
+
+ virtual PropertyInfo _gen_argument_type_info(int p_arg) const {
+ if (p_arg >= 0 && p_arg < (int)sizeof...(P)) {
+ PropertyInfo pi;
+ call_get_argument_type_info<P...>(p_arg, pi);
+ return pi;
+ } else {
+ return GetTypeInfo<R>::get_class_info();
+ }
+ }
+
+public:
+#ifdef DEBUG_METHODS_ENABLED
+ virtual GodotTypeInfo::Metadata get_argument_meta(int p_arg) const {
+ if (p_arg >= 0) {
+ return call_get_argument_metadata<P...>(p_arg);
+ } else {
+ return GetTypeInfo<R>::METADATA;
+ }
+ }
+
+#endif
+ virtual Variant call(Object *p_object, const Variant **p_args, int p_arg_count, Callable::CallError &r_error) {
+ Variant ret;
+ call_with_variant_args_static_ret_dv(function, p_args, p_arg_count, ret, r_error, get_default_arguments());
+ return ret;
+ }
+
+ virtual void ptrcall(Object *p_object, const void **p_args, void *r_ret) {
+ (void)p_object;
+ call_with_ptr_args_static_method_ret(function, p_args, r_ret);
+ }
+
+ MethodBindTRS(R (*p_function)(P...)) {
+ function = p_function;
+ _generate_argument_types(sizeof...(P));
+ set_argument_count(sizeof...(P));
+ _set_static(true);
+ _set_returns(true);
+ }
+};
+
+template <class R, class... P>
+MethodBind *create_static_method_bind(R (*p_method)(P...)) {
+ MethodBind *a = memnew((MethodBindTRS<R, P...>)(p_method));
+ return a;
+}
+
#endif // METHOD_BIND_H
diff --git a/core/object/object.cpp b/core/object/object.cpp
index 096edd4e60..c2cd42ff91 100644
--- a/core/object/object.cpp
+++ b/core/object/object.cpp
@@ -416,12 +416,22 @@ void Object::set(const StringName &p_name, const Variant &p_value, bool *r_valid
}
return;
- } else if (p_name == CoreStringNames::get_singleton()->_meta) {
- metadata = p_value.duplicate();
- if (r_valid) {
- *r_valid = true;
+ } else {
+ OrderedHashMap<StringName, Variant>::Element *E = metadata_properties.getptr(p_name);
+ if (E) {
+ E->get() = p_value;
+ if (r_valid) {
+ *r_valid = true;
+ }
+ return;
+ } else if (p_name.operator String().begins_with("metadata/")) {
+ // Must exist, otherwise duplicate() will not work.
+ set_meta(p_name.operator String().replace_first("metadata/", ""), p_value);
+ if (r_valid) {
+ *r_valid = true;
+ }
+ return;
}
- return;
}
// Something inside the object... :|
@@ -496,9 +506,12 @@ Variant Object::get(const StringName &p_name, bool *r_valid) const {
*r_valid = true;
}
return ret;
+ }
+
+ const OrderedHashMap<StringName, Variant>::Element *E = metadata_properties.getptr(p_name);
- } else if (p_name == CoreStringNames::get_singleton()->_meta) {
- ret = metadata;
+ if (E) {
+ ret = E->get();
if (r_valid) {
*r_valid = true;
}
@@ -648,13 +661,20 @@ void Object::get_property_list(List<PropertyInfo> *p_list, bool p_reversed) cons
if (!is_class("Script")) { // can still be set, but this is for user-friendliness
p_list->push_back(PropertyInfo(Variant::OBJECT, "script", PROPERTY_HINT_RESOURCE_TYPE, "Script", PROPERTY_USAGE_DEFAULT));
}
- if (!metadata.is_empty()) {
- p_list->push_back(PropertyInfo(Variant::DICTIONARY, "__meta__", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NO_EDITOR | PROPERTY_USAGE_INTERNAL));
- }
+
if (script_instance && !p_reversed) {
p_list->push_back(PropertyInfo(Variant::NIL, "Script Variables", PROPERTY_HINT_NONE, String(), PROPERTY_USAGE_CATEGORY));
script_instance->get_property_list(p_list);
}
+
+ for (OrderedHashMap<StringName, Variant>::ConstElement K = metadata.front(); K; K = K.next()) {
+ PropertyInfo pi = PropertyInfo(K.value().get_type(), "metadata/" + K.key().operator String());
+ if (K.value().get_type() == Variant::OBJECT) {
+ pi.hint = PROPERTY_HINT_RESOURCE_TYPE;
+ pi.hint_string = "Resource";
+ }
+ p_list->push_back(pi);
+ }
}
void Object::_validate_property(PropertyInfo &property) const {
@@ -845,7 +865,9 @@ String Object::to_string() {
}
}
if (_extension && _extension->to_string) {
- return _extension->to_string(_extension_instance);
+ String ret;
+ _extension->to_string(_extension_instance, &ret);
+ return ret;
}
return "[" + get_class() + ":" + itos(get_instance_id()) + "]";
}
@@ -915,20 +937,38 @@ bool Object::has_meta(const StringName &p_name) const {
void Object::set_meta(const StringName &p_name, const Variant &p_value) {
if (p_value.get_type() == Variant::NIL) {
- metadata.erase(p_name);
+ if (metadata.has(p_name)) {
+ metadata.erase(p_name);
+ metadata_properties.erase("metadata/" + p_name.operator String());
+ notify_property_list_changed();
+ }
return;
}
- metadata[p_name] = p_value;
+ OrderedHashMap<StringName, Variant>::Element E = metadata.find(p_name);
+ if (E) {
+ E.value() = p_value;
+ } else {
+ ERR_FAIL_COND(!p_name.operator String().is_valid_identifier());
+ E = metadata.insert(p_name, p_value);
+ metadata_properties["metadata/" + p_name.operator String()] = E;
+ notify_property_list_changed();
+ }
}
-Variant Object::get_meta(const StringName &p_name) const {
- ERR_FAIL_COND_V_MSG(!metadata.has(p_name), Variant(), "The object does not have any 'meta' values with the key '" + p_name + "'.");
+Variant Object::get_meta(const StringName &p_name, const Variant &p_default) const {
+ if (!metadata.has(p_name)) {
+ if (p_default != Variant()) {
+ return p_default;
+ } else {
+ ERR_FAIL_V_MSG(Variant(), "The object does not have any 'meta' values with the key '" + p_name + "'.");
+ }
+ }
return metadata[p_name];
}
void Object::remove_meta(const StringName &p_name) {
- metadata.erase(p_name);
+ set_meta(p_name, Variant());
}
Array Object::_get_property_list_bind() const {
@@ -954,20 +994,16 @@ Array Object::_get_method_list_bind() const {
Vector<StringName> Object::_get_meta_list_bind() const {
Vector<StringName> _metaret;
- List<Variant> keys;
- metadata.get_key_list(&keys);
- for (const Variant &E : keys) {
- _metaret.push_back(E);
+ for (OrderedHashMap<StringName, Variant>::ConstElement K = metadata.front(); K; K = K.next()) {
+ _metaret.push_back(K.key());
}
return _metaret;
}
void Object::get_meta_list(List<StringName> *p_list) const {
- List<Variant> keys;
- metadata.get_key_list(&keys);
- for (const Variant &E : keys) {
- p_list->push_back(E);
+ for (OrderedHashMap<StringName, Variant>::ConstElement K = metadata.front(); K; K = K.next()) {
+ p_list->push_back(K.key());
}
}
@@ -992,15 +1028,15 @@ struct _ObjectSignalDisconnectData {
Callable callable;
};
-Variant Object::_emit_signal(const Variant **p_args, int p_argcount, Callable::CallError &r_error) {
+Error Object::_emit_signal(const Variant **p_args, int p_argcount, Callable::CallError &r_error) {
r_error.error = Callable::CallError::CALL_ERROR_TOO_FEW_ARGUMENTS;
- ERR_FAIL_COND_V(p_argcount < 1, Variant());
+ ERR_FAIL_COND_V(p_argcount < 1, Error::ERR_INVALID_PARAMETER);
if (p_args[0]->get_type() != Variant::STRING_NAME && p_args[0]->get_type() != Variant::STRING) {
r_error.error = Callable::CallError::CALL_ERROR_INVALID_ARGUMENT;
r_error.argument = 0;
r_error.expected = Variant::STRING_NAME;
- ERR_FAIL_COND_V(p_args[0]->get_type() != Variant::STRING_NAME && p_args[0]->get_type() != Variant::STRING, Variant());
+ ERR_FAIL_COND_V(p_args[0]->get_type() != Variant::STRING_NAME && p_args[0]->get_type() != Variant::STRING, Error::ERR_INVALID_PARAMETER);
}
r_error.error = Callable::CallError::CALL_OK;
@@ -1014,9 +1050,7 @@ Variant Object::_emit_signal(const Variant **p_args, int p_argcount, Callable::C
args = &p_args[1];
}
- emit_signalp(signal, args, argc);
-
- return Variant();
+ return emit_signalp(signal, args, argc);
}
Error Object::emit_signalp(const StringName &p_name, const Variant **p_args, int p_argcount) {
@@ -1529,7 +1563,7 @@ void Object::_bind_methods() {
ClassDB::bind_method(D_METHOD("set_meta", "name", "value"), &Object::set_meta);
ClassDB::bind_method(D_METHOD("remove_meta", "name"), &Object::remove_meta);
- ClassDB::bind_method(D_METHOD("get_meta", "name"), &Object::get_meta);
+ ClassDB::bind_method(D_METHOD("get_meta", "name", "default"), &Object::get_meta, DEFVAL(Variant()));
ClassDB::bind_method(D_METHOD("has_meta", "name"), &Object::has_meta);
ClassDB::bind_method(D_METHOD("get_meta_list"), &Object::_get_meta_list_bind);
diff --git a/core/object/object.h b/core/object/object.h
index 6b4f1c81e6..b640c4e78a 100644
--- a/core/object/object.h
+++ b/core/object/object.h
@@ -39,6 +39,7 @@
#include "core/templates/hash_map.h"
#include "core/templates/list.h"
#include "core/templates/map.h"
+#include "core/templates/ordered_hash_map.h"
#include "core/templates/safe_refcount.h"
#include "core/templates/set.h"
#include "core/templates/vmap.h"
@@ -343,16 +344,6 @@ public:
m_inherits::get_inheritance_list_static(p_inheritance_list); \
p_inheritance_list->push_back(String(#m_class)); \
} \
- static String get_category_static() { \
- String category = m_inherits::get_category_static(); \
- if (_get_category != m_inherits::_get_category) { \
- if (!category.is_empty()) { \
- category += "/"; \
- } \
- category += _get_category(); \
- } \
- return category; \
- } \
virtual bool is_class(const String &p_class) const override { \
if (_get_extension() && _get_extension()->is_class(p_class)) { \
return true; \
@@ -453,12 +444,6 @@ protected:
\
private:
-#define OBJ_CATEGORY(m_category) \
-protected: \
- _FORCE_INLINE_ static String _get_category() { return m_category; } \
- \
-private:
-
#define OBJ_SAVE_TYPE(m_class) \
public: \
virtual String get_save_class() const override { return #m_class; } \
@@ -530,13 +515,14 @@ private:
#endif
ScriptInstance *script_instance = nullptr;
Variant script; // Reference does not exist yet, store it in a Variant.
- Dictionary metadata;
+ OrderedHashMap<StringName, Variant> metadata;
+ HashMap<StringName, OrderedHashMap<StringName, Variant>::Element> metadata_properties;
mutable StringName _class_name;
mutable const StringName *_class_ptr = nullptr;
void _add_user_signal(const String &p_name, const Array &p_args = Array());
bool _has_user_signal(const StringName &p_name) const;
- Variant _emit_signal(const Variant **p_args, int p_argcount, Callable::CallError &r_error);
+ Error _emit_signal(const Variant **p_args, int p_argcount, Callable::CallError &r_error);
Array _get_signal_list() const;
Array _get_signal_connection_list(const String &p_signal) const;
Array _get_incoming_connections() const;
@@ -588,7 +574,6 @@ protected:
virtual void _get_property_listv(List<PropertyInfo> *p_list, bool p_reversed) const {};
virtual void _notificationv(int p_notification, bool p_reversed) {}
- static String _get_category() { return ""; }
static void _bind_methods();
bool _set(const StringName &p_name, const Variant &p_property) { return false; };
bool _get(const StringName &p_name, Variant &r_property) const { return false; };
@@ -692,7 +677,6 @@ public:
static String get_class_static() { return "Object"; }
static String get_parent_class_static() { return String(); }
- static String get_category_static() { return String(); }
virtual String get_class() const {
if (_extension) {
@@ -761,7 +745,7 @@ public:
bool has_meta(const StringName &p_name) const;
void set_meta(const StringName &p_name, const Variant &p_value);
void remove_meta(const StringName &p_name);
- Variant get_meta(const StringName &p_name) const;
+ Variant get_meta(const StringName &p_name, const Variant &p_default = Variant()) const;
void get_meta_list(List<StringName> *p_list) const;
#ifdef TOOLS_ENABLED
diff --git a/core/object/script_language.h b/core/object/script_language.h
index 2122f785b6..6161a0fc0f 100644
--- a/core/object/script_language.h
+++ b/core/object/script_language.h
@@ -132,7 +132,7 @@ public:
virtual Error reload(bool p_keep_state = false) = 0;
#ifdef TOOLS_ENABLED
- virtual const Vector<DocData::ClassDoc> &get_documentation() const = 0;
+ virtual Vector<DocData::ClassDoc> get_documentation() const = 0;
#endif // TOOLS_ENABLED
virtual bool has_method(const StringName &p_method) const = 0;
@@ -212,44 +212,12 @@ public:
virtual void property_set_fallback(const StringName &p_name, const Variant &p_value, bool *r_valid);
virtual Variant property_get_fallback(const StringName &p_name, bool *r_valid);
- virtual const Vector<Multiplayer::RPCConfig> get_rpc_methods() const = 0;
+ virtual const Vector<Multiplayer::RPCConfig> get_rpc_methods() const { return get_script()->get_rpc_methods(); }
virtual ScriptLanguage *get_language() = 0;
virtual ~ScriptInstance();
};
-struct ScriptCodeCompletionOption {
- /* Keep enum in Sync with: */
- /* /scene/gui/code_edit.h - CodeEdit::CodeCompletionKind */
- enum Kind {
- KIND_CLASS,
- KIND_FUNCTION,
- KIND_SIGNAL,
- KIND_VARIABLE,
- KIND_MEMBER,
- KIND_ENUM,
- KIND_CONSTANT,
- KIND_NODE_PATH,
- KIND_FILE_PATH,
- KIND_PLAIN_TEXT,
- };
- Kind kind = KIND_PLAIN_TEXT;
- String display;
- String insert_text;
- Color font_color;
- RES icon;
- Variant default_value;
- Vector<Pair<int, int>> matches;
-
- ScriptCodeCompletionOption() {}
-
- ScriptCodeCompletionOption(const String &p_text, Kind p_kind) {
- display = p_text;
- insert_text = p_text;
- kind = p_kind;
- }
-};
-
class ScriptCodeCompletionCache {
static ScriptCodeCompletionCache *singleton;
@@ -261,7 +229,8 @@ public:
virtual ~ScriptCodeCompletionCache() {}
};
-class ScriptLanguage {
+class ScriptLanguage : public Object {
+ GDCLASS(ScriptLanguage, Object)
public:
virtual String get_name() const = 0;
@@ -326,19 +295,55 @@ public:
virtual Error open_in_external_editor(const Ref<Script> &p_script, int p_line, int p_col) { return ERR_UNAVAILABLE; }
virtual bool overrides_external_editor() { return false; }
- virtual Error complete_code(const String &p_code, const String &p_path, Object *p_owner, List<ScriptCodeCompletionOption> *r_options, bool &r_force, String &r_call_hint) { return ERR_UNAVAILABLE; }
+ /* Keep enum in Sync with: */
+ /* /scene/gui/code_edit.h - CodeEdit::CodeCompletionKind */
+ enum CodeCompletionKind {
+ CODE_COMPLETION_KIND_CLASS,
+ CODE_COMPLETION_KIND_FUNCTION,
+ CODE_COMPLETION_KIND_SIGNAL,
+ CODE_COMPLETION_KIND_VARIABLE,
+ CODE_COMPLETION_KIND_MEMBER,
+ CODE_COMPLETION_KIND_ENUM,
+ CODE_COMPLETION_KIND_CONSTANT,
+ CODE_COMPLETION_KIND_NODE_PATH,
+ CODE_COMPLETION_KIND_FILE_PATH,
+ CODE_COMPLETION_KIND_PLAIN_TEXT,
+ CODE_COMPLETION_KIND_MAX
+ };
+
+ struct CodeCompletionOption {
+ CodeCompletionKind kind = CODE_COMPLETION_KIND_PLAIN_TEXT;
+ String display;
+ String insert_text;
+ Color font_color;
+ RES icon;
+ Variant default_value;
+ Vector<Pair<int, int>> matches;
+
+ CodeCompletionOption() {}
+
+ CodeCompletionOption(const String &p_text, CodeCompletionKind p_kind) {
+ display = p_text;
+ insert_text = p_text;
+ kind = p_kind;
+ }
+ };
+
+ virtual Error complete_code(const String &p_code, const String &p_path, Object *p_owner, List<CodeCompletionOption> *r_options, bool &r_force, String &r_call_hint) { return ERR_UNAVAILABLE; }
+
+ enum LookupResultType {
+ LOOKUP_RESULT_SCRIPT_LOCATION,
+ LOOKUP_RESULT_CLASS,
+ LOOKUP_RESULT_CLASS_CONSTANT,
+ LOOKUP_RESULT_CLASS_PROPERTY,
+ LOOKUP_RESULT_CLASS_METHOD,
+ LOOKUP_RESULT_CLASS_ENUM,
+ LOOKUP_RESULT_CLASS_TBD_GLOBALSCOPE,
+ LOOKUP_RESULT_MAX
+ };
struct LookupResult {
- enum Type {
- RESULT_SCRIPT_LOCATION,
- RESULT_CLASS,
- RESULT_CLASS_CONSTANT,
- RESULT_CLASS_PROPERTY,
- RESULT_CLASS_METHOD,
- RESULT_CLASS_ENUM,
- RESULT_CLASS_TBD_GLOBALSCOPE
- };
- Type type;
+ LookupResultType type;
Ref<Script> script;
String class_name;
String class_member;
diff --git a/core/object/script_language_extension.cpp b/core/object/script_language_extension.cpp
new file mode 100644
index 0000000000..bf0966c803
--- /dev/null
+++ b/core/object/script_language_extension.cpp
@@ -0,0 +1,175 @@
+/*************************************************************************/
+/* script_language_extension.cpp */
+/*************************************************************************/
+/* This file is part of: */
+/* GODOT ENGINE */
+/* https://godotengine.org */
+/*************************************************************************/
+/* Copyright (c) 2007-2022 Juan Linietsky, Ariel Manzur. */
+/* Copyright (c) 2014-2022 Godot Engine contributors (cf. AUTHORS.md). */
+/* */
+/* Permission is hereby granted, free of charge, to any person obtaining */
+/* a copy of this software and associated documentation files (the */
+/* "Software"), to deal in the Software without restriction, including */
+/* without limitation the rights to use, copy, modify, merge, publish, */
+/* distribute, sublicense, and/or sell copies of the Software, and to */
+/* permit persons to whom the Software is furnished to do so, subject to */
+/* the following conditions: */
+/* */
+/* The above copyright notice and this permission notice shall be */
+/* included in all copies or substantial portions of the Software. */
+/* */
+/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
+/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
+/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
+/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
+/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
+/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
+/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
+/*************************************************************************/
+
+#include "script_language_extension.h"
+
+void ScriptExtension::_bind_methods() {
+ GDVIRTUAL_BIND(_editor_can_reload_from_file);
+ GDVIRTUAL_BIND(_placeholder_erased, "placeholder");
+
+ GDVIRTUAL_BIND(_can_instantiate);
+ GDVIRTUAL_BIND(_get_base_script);
+ GDVIRTUAL_BIND(_inherits_script, "script");
+
+ GDVIRTUAL_BIND(_get_instance_base_type);
+ GDVIRTUAL_BIND(_instance_create, "for_object");
+ GDVIRTUAL_BIND(_placeholder_instance_create, "for_object");
+
+ GDVIRTUAL_BIND(_instance_has, "object");
+
+ GDVIRTUAL_BIND(_has_source_code);
+ GDVIRTUAL_BIND(_get_source_code);
+
+ GDVIRTUAL_BIND(_set_source_code, "code");
+ GDVIRTUAL_BIND(_reload, "keep_state");
+
+ GDVIRTUAL_BIND(_get_documentation);
+
+ GDVIRTUAL_BIND(_has_method, "method");
+ GDVIRTUAL_BIND(_get_method_info, "method");
+
+ GDVIRTUAL_BIND(_is_tool);
+ GDVIRTUAL_BIND(_is_valid);
+ GDVIRTUAL_BIND(_get_language);
+
+ GDVIRTUAL_BIND(_has_script_signal, "signal");
+ GDVIRTUAL_BIND(_get_script_signal_list);
+
+ GDVIRTUAL_BIND(_get_property_default_value, "property");
+
+ GDVIRTUAL_BIND(_update_exports);
+ GDVIRTUAL_BIND(_get_script_method_list);
+ GDVIRTUAL_BIND(_get_script_property_list);
+
+ GDVIRTUAL_BIND(_get_member_line, "member");
+
+ GDVIRTUAL_BIND(_get_constants);
+ GDVIRTUAL_BIND(_get_members);
+ GDVIRTUAL_BIND(_is_placeholder_fallback_enabled);
+
+ GDVIRTUAL_BIND(_get_rpc_methods);
+}
+
+void ScriptLanguageExtension::_bind_methods() {
+ GDVIRTUAL_BIND(_get_name);
+ GDVIRTUAL_BIND(_init);
+ GDVIRTUAL_BIND(_get_type);
+ GDVIRTUAL_BIND(_get_extension);
+ GDVIRTUAL_BIND(_execute_file, "path");
+ GDVIRTUAL_BIND(_finish);
+
+ GDVIRTUAL_BIND(_get_reserved_words);
+ GDVIRTUAL_BIND(_is_control_flow_keyword, "keyword");
+ GDVIRTUAL_BIND(_get_comment_delimiters);
+ GDVIRTUAL_BIND(_get_string_delimiters);
+ GDVIRTUAL_BIND(_make_template, "template", "class_name", "base_class_name");
+ GDVIRTUAL_BIND(_get_built_in_templates, "object");
+ GDVIRTUAL_BIND(_is_using_templates);
+ GDVIRTUAL_BIND(_validate, "script", "path", "validate_functions", "validate_errors", "validate_warnings", "validate_safe_lines");
+
+ GDVIRTUAL_BIND(_validate_path, "path");
+ GDVIRTUAL_BIND(_create_script);
+ GDVIRTUAL_BIND(_has_named_classes);
+ GDVIRTUAL_BIND(_supports_builtin_mode);
+ GDVIRTUAL_BIND(_supports_documentation);
+ GDVIRTUAL_BIND(_can_inherit_from_file);
+ GDVIRTUAL_BIND(_find_function, "class_name", "function_name");
+ GDVIRTUAL_BIND(_make_function, "class_name", "function_name", "function_args");
+ GDVIRTUAL_BIND(_open_in_external_editor, "script", "line", "column");
+ GDVIRTUAL_BIND(_overrides_external_editor);
+
+ GDVIRTUAL_BIND(_complete_code, "code", "path", "owner");
+ GDVIRTUAL_BIND(_lookup_code, "code", "symbol", "path", "owner");
+ GDVIRTUAL_BIND(_auto_indent_code, "code", "from_line", "to_line");
+
+ GDVIRTUAL_BIND(_add_global_constant, "name", "value");
+ GDVIRTUAL_BIND(_add_named_global_constant, "name", "value");
+ GDVIRTUAL_BIND(_remove_named_global_constant, "name");
+
+ GDVIRTUAL_BIND(_thread_enter);
+ GDVIRTUAL_BIND(_thread_exit);
+ GDVIRTUAL_BIND(_debug_get_error);
+ GDVIRTUAL_BIND(_debug_get_stack_level_count);
+
+ GDVIRTUAL_BIND(_debug_get_stack_level_line, "level");
+ GDVIRTUAL_BIND(_debug_get_stack_level_function, "level");
+ GDVIRTUAL_BIND(_debug_get_stack_level_locals, "level", "max_subitems", "max_depth");
+ GDVIRTUAL_BIND(_debug_get_stack_level_members, "level", "max_subitems", "max_depth");
+ GDVIRTUAL_BIND(_debug_get_stack_level_instance, "level");
+ GDVIRTUAL_BIND(_debug_get_globals, "max_subitems", "max_depth");
+ GDVIRTUAL_BIND(_debug_parse_stack_level_expression, "level", "expression", "max_subitems", "max_depth");
+
+ GDVIRTUAL_BIND(_debug_get_current_stack_info);
+
+ GDVIRTUAL_BIND(_reload_all_scripts);
+ GDVIRTUAL_BIND(_reload_tool_script, "script", "soft_reload");
+
+ GDVIRTUAL_BIND(_get_recognized_extensions);
+ GDVIRTUAL_BIND(_get_public_functions);
+ GDVIRTUAL_BIND(_get_public_constants);
+
+ GDVIRTUAL_BIND(_profiling_start);
+ GDVIRTUAL_BIND(_profiling_stop);
+
+ GDVIRTUAL_BIND(_profiling_get_accumulated_data, "info_array", "info_max");
+ GDVIRTUAL_BIND(_profiling_get_frame_data, "info_array", "info_max");
+
+ GDVIRTUAL_BIND(_alloc_instance_binding_data, "object");
+ GDVIRTUAL_BIND(_free_instance_binding_data, "data");
+
+ GDVIRTUAL_BIND(_refcount_incremented_instance_binding, "object");
+ GDVIRTUAL_BIND(_refcount_decremented_instance_binding, "object");
+
+ GDVIRTUAL_BIND(_frame);
+
+ GDVIRTUAL_BIND(_handles_global_class_type, "type");
+ GDVIRTUAL_BIND(_get_global_class_name, "path");
+
+ BIND_ENUM_CONSTANT(LOOKUP_RESULT_SCRIPT_LOCATION);
+ BIND_ENUM_CONSTANT(LOOKUP_RESULT_CLASS);
+ BIND_ENUM_CONSTANT(LOOKUP_RESULT_CLASS_CONSTANT);
+ BIND_ENUM_CONSTANT(LOOKUP_RESULT_CLASS_PROPERTY);
+ BIND_ENUM_CONSTANT(LOOKUP_RESULT_CLASS_METHOD);
+ BIND_ENUM_CONSTANT(LOOKUP_RESULT_CLASS_ENUM);
+ BIND_ENUM_CONSTANT(LOOKUP_RESULT_CLASS_TBD_GLOBALSCOPE);
+ BIND_ENUM_CONSTANT(LOOKUP_RESULT_MAX);
+
+ BIND_ENUM_CONSTANT(CODE_COMPLETION_KIND_CLASS);
+ BIND_ENUM_CONSTANT(CODE_COMPLETION_KIND_FUNCTION);
+ BIND_ENUM_CONSTANT(CODE_COMPLETION_KIND_SIGNAL);
+ BIND_ENUM_CONSTANT(CODE_COMPLETION_KIND_VARIABLE);
+ BIND_ENUM_CONSTANT(CODE_COMPLETION_KIND_MEMBER);
+ BIND_ENUM_CONSTANT(CODE_COMPLETION_KIND_ENUM);
+ BIND_ENUM_CONSTANT(CODE_COMPLETION_KIND_CONSTANT);
+ BIND_ENUM_CONSTANT(CODE_COMPLETION_KIND_NODE_PATH);
+ BIND_ENUM_CONSTANT(CODE_COMPLETION_KIND_FILE_PATH);
+ BIND_ENUM_CONSTANT(CODE_COMPLETION_KIND_PLAIN_TEXT);
+ BIND_ENUM_CONSTANT(CODE_COMPLETION_KIND_MAX);
+}
diff --git a/core/object/script_language_extension.h b/core/object/script_language_extension.h
new file mode 100644
index 0000000000..b9ec79da26
--- /dev/null
+++ b/core/object/script_language_extension.h
@@ -0,0 +1,832 @@
+/*************************************************************************/
+/* script_language_extension.h */
+/*************************************************************************/
+/* This file is part of: */
+/* GODOT ENGINE */
+/* https://godotengine.org */
+/*************************************************************************/
+/* Copyright (c) 2007-2022 Juan Linietsky, Ariel Manzur. */
+/* Copyright (c) 2014-2022 Godot Engine contributors (cf. AUTHORS.md). */
+/* */
+/* Permission is hereby granted, free of charge, to any person obtaining */
+/* a copy of this software and associated documentation files (the */
+/* "Software"), to deal in the Software without restriction, including */
+/* without limitation the rights to use, copy, modify, merge, publish, */
+/* distribute, sublicense, and/or sell copies of the Software, and to */
+/* permit persons to whom the Software is furnished to do so, subject to */
+/* the following conditions: */
+/* */
+/* The above copyright notice and this permission notice shall be */
+/* included in all copies or substantial portions of the Software. */
+/* */
+/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
+/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
+/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
+/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
+/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
+/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
+/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
+/*************************************************************************/
+
+#ifndef SCRIPT_LANGUAGE_EXTENSION_H
+#define SCRIPT_LANGUAGE_EXTENSION_H
+
+#include "core/extension/ext_wrappers.gen.inc"
+#include "core/object/gdvirtual.gen.inc"
+#include "core/object/script_language.h"
+#include "core/variant/native_ptr.h"
+#include "core/variant/typed_array.h"
+
+class ScriptExtension : public Script {
+ GDCLASS(ScriptExtension, Script)
+
+protected:
+ EXBIND0R(bool, editor_can_reload_from_file)
+
+ GDVIRTUAL1(_placeholder_erased, GDNativePtr<void>)
+ virtual void _placeholder_erased(PlaceHolderScriptInstance *p_placeholder) override {
+ GDVIRTUAL_CALL(_placeholder_erased, p_placeholder);
+ }
+
+ static void _bind_methods();
+
+public:
+ EXBIND0RC(bool, can_instantiate)
+ EXBIND0RC(Ref<Script>, get_base_script)
+ EXBIND1RC(bool, inherits_script, const Ref<Script> &)
+ EXBIND0RC(StringName, get_instance_base_type)
+
+ GDVIRTUAL1RC(GDNativePtr<void>, _instance_create, Object *)
+ virtual ScriptInstance *instance_create(Object *p_this) override {
+ GDNativePtr<void> ret = nullptr;
+ GDVIRTUAL_REQUIRED_CALL(_instance_create, p_this, ret);
+ return reinterpret_cast<ScriptInstance *>(ret.operator void *());
+ }
+ GDVIRTUAL1RC(GDNativePtr<void>, _placeholder_instance_create, Object *)
+ PlaceHolderScriptInstance *placeholder_instance_create(Object *p_this) override {
+ GDNativePtr<void> ret = nullptr;
+ GDVIRTUAL_REQUIRED_CALL(_placeholder_instance_create, p_this, ret);
+ return reinterpret_cast<PlaceHolderScriptInstance *>(ret.operator void *());
+ }
+
+ EXBIND1RC(bool, instance_has, const Object *)
+ EXBIND0RC(bool, has_source_code)
+ EXBIND0RC(String, get_source_code)
+ EXBIND1(set_source_code, const String &)
+ EXBIND1R(Error, reload, bool)
+
+ GDVIRTUAL0RC(TypedArray<Dictionary>, _get_documentation)
+#ifdef TOOLS_ENABLED
+ virtual Vector<DocData::ClassDoc> get_documentation() const override {
+ TypedArray<Dictionary> doc;
+ GDVIRTUAL_REQUIRED_CALL(_get_documentation, doc);
+
+ Vector<DocData::ClassDoc> class_doc;
+#ifndef _MSC_VER
+#warning missing conversion from documentation to ClassDoc
+#endif
+ return class_doc;
+ }
+#endif // TOOLS_ENABLED
+
+ EXBIND1RC(bool, has_method, const StringName &)
+
+ GDVIRTUAL1RC(Dictionary, _get_method_info, const StringName &)
+ virtual MethodInfo get_method_info(const StringName &p_method) const override {
+ Dictionary mi;
+ GDVIRTUAL_REQUIRED_CALL(_get_method_info, p_method, mi);
+ return MethodInfo::from_dict(mi);
+ }
+
+ EXBIND0RC(bool, is_tool)
+ EXBIND0RC(bool, is_valid)
+
+ EXBIND0RC(ScriptLanguage *, get_language)
+ EXBIND1RC(bool, has_script_signal, const StringName &)
+
+ GDVIRTUAL0RC(TypedArray<Dictionary>, _get_script_signal_list)
+
+ virtual void get_script_signal_list(List<MethodInfo> *r_signals) const override {
+ TypedArray<Dictionary> sl;
+ GDVIRTUAL_REQUIRED_CALL(_get_script_signal_list, sl);
+ for (int i = 0; i < sl.size(); i++) {
+ r_signals->push_back(MethodInfo::from_dict(sl[i]));
+ }
+ }
+
+ GDVIRTUAL1RC(bool, _has_property_default_value, const StringName &)
+ GDVIRTUAL1RC(Variant, _get_property_default_value, const StringName &)
+
+ virtual bool get_property_default_value(const StringName &p_property, Variant &r_value) const override {
+ bool has_dv = false;
+ if (!GDVIRTUAL_REQUIRED_CALL(_has_property_default_value, p_property, has_dv) || !has_dv) {
+ return false;
+ }
+ Variant ret;
+ GDVIRTUAL_REQUIRED_CALL(_get_property_default_value, p_property, ret);
+ return ret;
+ }
+
+ EXBIND0(update_exports)
+
+ GDVIRTUAL0RC(TypedArray<Dictionary>, _get_script_method_list)
+
+ virtual void get_script_method_list(List<MethodInfo> *r_methods) const override {
+ TypedArray<Dictionary> sl;
+ GDVIRTUAL_REQUIRED_CALL(_get_script_method_list, sl);
+ for (int i = 0; i < sl.size(); i++) {
+ r_methods->push_back(MethodInfo::from_dict(sl[i]));
+ }
+ }
+
+ GDVIRTUAL0RC(TypedArray<Dictionary>, _get_script_property_list)
+
+ virtual void get_script_property_list(List<PropertyInfo> *r_propertys) const override {
+ TypedArray<Dictionary> sl;
+ GDVIRTUAL_REQUIRED_CALL(_get_script_property_list, sl);
+ for (int i = 0; i < sl.size(); i++) {
+ r_propertys->push_back(PropertyInfo::from_dict(sl[i]));
+ }
+ }
+
+ EXBIND1RC(int, get_member_line, const StringName &)
+
+ GDVIRTUAL0RC(Dictionary, _get_constants)
+
+ virtual void get_constants(Map<StringName, Variant> *p_constants) override {
+ Dictionary constants;
+ GDVIRTUAL_REQUIRED_CALL(_get_constants, constants);
+ List<Variant> keys;
+ constants.get_key_list(&keys);
+ for (const Variant &K : keys) {
+ p_constants->insert(K, constants[K]);
+ }
+ }
+ GDVIRTUAL0RC(TypedArray<StringName>, _get_members)
+ virtual void get_members(Set<StringName> *p_members) override {
+ TypedArray<StringName> members;
+ GDVIRTUAL_REQUIRED_CALL(_get_members, members);
+ for (int i = 0; i < members.size(); i++) {
+ p_members->insert(members[i]);
+ }
+ }
+
+ EXBIND0RC(bool, is_placeholder_fallback_enabled)
+
+ GDVIRTUAL0RC(TypedArray<Dictionary>, _get_rpc_methods)
+
+ virtual const Vector<Multiplayer::RPCConfig> get_rpc_methods() const override {
+ TypedArray<Dictionary> ret;
+ GDVIRTUAL_REQUIRED_CALL(_get_rpc_methods, ret);
+ Vector<Multiplayer::RPCConfig> rpcret;
+ for (int i = 0; i < ret.size(); i++) {
+ Dictionary d = ret[i];
+ Multiplayer::RPCConfig rpc;
+ ERR_CONTINUE(!d.has("name"));
+ rpc.name = d["name"];
+ ERR_CONTINUE(!d.has("rpc_mode"));
+ rpc.rpc_mode = Multiplayer::RPCMode(int(d["rpc_mode"]));
+ ERR_CONTINUE(!d.has("call_local"));
+ rpc.call_local = d["call_local"];
+ ERR_CONTINUE(!d.has("transfer_mode"));
+ rpc.transfer_mode = Multiplayer::TransferMode(int(d["transfer_mode"]));
+ ERR_CONTINUE(!d.has("channel"));
+ rpc.channel = d["channel"];
+ rpcret.push_back(rpc);
+ }
+ return rpcret;
+ }
+
+ ScriptExtension() {}
+};
+
+typedef ScriptLanguage::ProfilingInfo ScriptLanguageExtensionProfilingInfo;
+
+GDVIRTUAL_NATIVE_PTR(ScriptLanguageExtensionProfilingInfo)
+
+class ScriptLanguageExtension : public ScriptLanguage {
+ GDCLASS(ScriptLanguageExtension, ScriptLanguage)
+protected:
+ static void _bind_methods();
+
+public:
+ EXBIND0RC(String, get_name)
+
+ EXBIND0(init)
+ EXBIND0RC(String, get_type)
+ EXBIND0RC(String, get_extension)
+ EXBIND1R(Error, execute_file, const String &)
+ EXBIND0(finish)
+
+ /* EDITOR FUNCTIONS */
+
+ GDVIRTUAL0RC(Vector<String>, _get_reserved_words)
+
+ virtual void get_reserved_words(List<String> *p_words) const override {
+ Vector<String> ret;
+ GDVIRTUAL_REQUIRED_CALL(_get_reserved_words, ret);
+ for (int i = 0; i < ret.size(); i++) {
+ p_words->push_back(ret[i]);
+ }
+ }
+ EXBIND1RC(bool, is_control_flow_keyword, String)
+
+ GDVIRTUAL0RC(Vector<String>, _get_comment_delimiters)
+
+ virtual void get_comment_delimiters(List<String> *p_words) const override {
+ Vector<String> ret;
+ GDVIRTUAL_REQUIRED_CALL(_get_comment_delimiters, ret);
+ for (int i = 0; i < ret.size(); i++) {
+ p_words->push_back(ret[i]);
+ }
+ }
+
+ GDVIRTUAL0RC(Vector<String>, _get_string_delimiters)
+
+ virtual void get_string_delimiters(List<String> *p_words) const override {
+ Vector<String> ret;
+ GDVIRTUAL_REQUIRED_CALL(_get_string_delimiters, ret);
+ for (int i = 0; i < ret.size(); i++) {
+ p_words->push_back(ret[i]);
+ }
+ }
+
+ EXBIND3RC(Ref<Script>, make_template, const String &, const String &, const String &)
+
+ GDVIRTUAL1RC(TypedArray<Dictionary>, _get_built_in_templates, StringName)
+
+ virtual Vector<ScriptTemplate> get_built_in_templates(StringName p_object) override {
+ TypedArray<Dictionary> ret;
+ GDVIRTUAL_REQUIRED_CALL(_get_built_in_templates, p_object, ret);
+ Vector<ScriptTemplate> stret;
+ for (int i = 0; i < ret.size(); i++) {
+ Dictionary d = ret[i];
+ ScriptTemplate st;
+ ERR_CONTINUE(!d.has("inherit"));
+ st.inherit = d["inherit"];
+ ERR_CONTINUE(!d.has("name"));
+ st.name = d["name"];
+ ERR_CONTINUE(!d.has("description"));
+ st.description = d["description"];
+ ERR_CONTINUE(!d.has("content"));
+ st.content = d["content"];
+ ERR_CONTINUE(!d.has("id"));
+ st.id = d["id"];
+ ERR_CONTINUE(!d.has("origin"));
+ st.origin = TemplateLocation(int(d["origin"]));
+ stret.push_back(st);
+ }
+ return stret;
+ }
+
+ EXBIND0R(bool, is_using_templates)
+
+ GDVIRTUAL6RC(Dictionary, _validate, const String &, const String &, bool, bool, bool, bool)
+ virtual bool validate(const String &p_script, const String &p_path = "", List<String> *r_functions = nullptr, List<ScriptError> *r_errors = nullptr, List<Warning> *r_warnings = nullptr, Set<int> *r_safe_lines = nullptr) const override {
+ Dictionary ret;
+ GDVIRTUAL_REQUIRED_CALL(_validate, p_script, p_path, r_functions != nullptr, r_errors != nullptr, r_warnings != nullptr, r_safe_lines != nullptr, ret);
+ if (!ret.has("valid")) {
+ return false;
+ }
+ if (r_functions != nullptr && ret.has("functions")) {
+ Vector<String> functions = ret["functions"];
+ for (int i = 0; i < functions.size(); i++) {
+ r_functions->push_back(functions[i]);
+ }
+ }
+ if (r_errors != nullptr && ret.has("errors")) {
+ Array errors = ret["errors"];
+ for (int i = 0; i < errors.size(); i++) {
+ Dictionary err = errors[i];
+ ERR_CONTINUE(!err.has("line"));
+ ERR_CONTINUE(!err.has("column"));
+ ERR_CONTINUE(!err.has("message"));
+
+ ScriptError serr;
+ serr.line = err["line"];
+ serr.column = err["column"];
+ serr.message = err["message"];
+
+ r_errors->push_back(serr);
+ }
+ }
+ if (r_warnings != nullptr && ret.has("warnings")) {
+ ERR_FAIL_COND_V(!ret.has("warnings"), false);
+ Array warnings = ret["warnings"];
+ for (int i = 0; i < warnings.size(); i++) {
+ Dictionary warn = warnings[i];
+ ERR_CONTINUE(!warn.has("start_line"));
+ ERR_CONTINUE(!warn.has("end_line"));
+ ERR_CONTINUE(!warn.has("leftmost_column"));
+ ERR_CONTINUE(!warn.has("rightmost_column"));
+ ERR_CONTINUE(!warn.has("code"));
+ ERR_CONTINUE(!warn.has("string_code"));
+ ERR_CONTINUE(!warn.has("message"));
+
+ Warning swarn;
+ swarn.start_line = warn["start_line"];
+ swarn.end_line = warn["end_line"];
+ swarn.leftmost_column = warn["leftmost_column"];
+ swarn.rightmost_column = warn["rightmost_column"];
+ swarn.code = warn["code"];
+ swarn.string_code = warn["string_code"];
+ swarn.message = warn["message"];
+
+ r_warnings->push_back(swarn);
+ }
+ }
+ if (r_safe_lines != nullptr && ret.has("safe_lines")) {
+ PackedInt32Array safe_lines = ret["safe_lines"];
+ for (int i = 0; i < safe_lines.size(); i++) {
+ r_safe_lines->insert(safe_lines[i]);
+ }
+ }
+ return ret["valid"];
+ }
+
+ EXBIND1RC(String, validate_path, const String &)
+ GDVIRTUAL0RC(Object *, _create_script)
+ Script *create_script() const override {
+ Object *ret = nullptr;
+ GDVIRTUAL_REQUIRED_CALL(_create_script, ret);
+ return Object::cast_to<Script>(ret);
+ }
+ EXBIND0RC(bool, has_named_classes)
+ EXBIND0RC(bool, supports_builtin_mode)
+ EXBIND0RC(bool, supports_documentation)
+ EXBIND0RC(bool, can_inherit_from_file)
+
+ EXBIND2RC(int, find_function, const String &, const String &)
+ EXBIND3RC(String, make_function, const String &, const String &, const PackedStringArray &)
+ EXBIND3R(Error, open_in_external_editor, const Ref<Script> &, int, int)
+ EXBIND0R(bool, overrides_external_editor)
+
+ GDVIRTUAL3RC(Dictionary, _complete_code, const String &, const String &, Object *)
+
+ virtual Error complete_code(const String &p_code, const String &p_path, Object *p_owner, List<CodeCompletionOption> *r_options, bool &r_force, String &r_call_hint) override {
+ Dictionary ret;
+ GDVIRTUAL_REQUIRED_CALL(_complete_code, p_code, p_path, p_owner, ret);
+ if (!ret.has("result")) {
+ return ERR_UNAVAILABLE;
+ }
+
+ if (r_options != nullptr && ret.has("options")) {
+ Array options = ret["options"];
+ for (int i = 0; i < options.size(); i++) {
+ Dictionary op = options[i];
+ CodeCompletionOption option;
+ ERR_CONTINUE(!op.has("kind"));
+ option.kind = CodeCompletionKind(int(op["kind"]));
+ ERR_CONTINUE(!op.has("display"));
+ option.display = op["display"];
+ ERR_CONTINUE(!op.has("insert_text"));
+ option.insert_text = op["insert_text"];
+ ERR_CONTINUE(!op.has("font_color"));
+ option.font_color = op["font_color"];
+ ERR_CONTINUE(!op.has("icon"));
+ option.icon = op["icon"];
+ ERR_CONTINUE(!op.has("default_value"));
+ option.default_value = op["default_value"];
+ if (op.has("matches")) {
+ PackedInt32Array matches = op["matches"];
+ ERR_CONTINUE(matches.size() & 1);
+ for (int j = 0; j < matches.size(); j += 2) {
+ option.matches.push_back(Pair<int, int>(matches[j], matches[j + 1]));
+ }
+ }
+ r_options->push_back(option);
+ }
+ }
+
+ ERR_FAIL_COND_V(!ret.has("force"), ERR_UNAVAILABLE);
+ r_force = ret["force"];
+ ERR_FAIL_COND_V(!ret.has("call_hint"), ERR_UNAVAILABLE);
+ r_call_hint = ret["call_hint"];
+ ERR_FAIL_COND_V(!ret.has("result"), ERR_UNAVAILABLE);
+ Error result = Error(int(ret["result"]));
+
+ return result;
+ }
+
+ GDVIRTUAL4RC(Dictionary, _lookup_code, const String &, const String &, const String &, Object *)
+
+ virtual Error lookup_code(const String &p_code, const String &p_symbol, const String &p_path, Object *p_owner, LookupResult &r_result) override {
+ Dictionary ret;
+ GDVIRTUAL_REQUIRED_CALL(_lookup_code, p_code, p_symbol, p_path, p_owner, ret);
+ if (!ret.has("result")) {
+ return ERR_UNAVAILABLE;
+ }
+
+ ERR_FAIL_COND_V(!ret.has("type"), ERR_UNAVAILABLE);
+ r_result.type = LookupResultType(int(ret["type"]));
+ ERR_FAIL_COND_V(!ret.has("script"), ERR_UNAVAILABLE);
+ r_result.script = ret["script"];
+ ERR_FAIL_COND_V(!ret.has("class_name"), ERR_UNAVAILABLE);
+ r_result.class_name = ret["class_name"];
+ ERR_FAIL_COND_V(!ret.has("class_path"), ERR_UNAVAILABLE);
+ r_result.class_path = ret["class_path"];
+ ERR_FAIL_COND_V(!ret.has("location"), ERR_UNAVAILABLE);
+ r_result.location = ret["location"];
+
+ Error result = Error(int(ret["result"]));
+
+ return result;
+ }
+
+ GDVIRTUAL3RC(String, _auto_indent_code, const String &, int, int)
+ virtual void auto_indent_code(String &p_code, int p_from_line, int p_to_line) const override {
+ String ret;
+ GDVIRTUAL_REQUIRED_CALL(_auto_indent_code, p_code, p_from_line, p_to_line, ret);
+ p_code = ret;
+ }
+ EXBIND2(add_global_constant, const StringName &, const Variant &)
+ EXBIND2(add_named_global_constant, const StringName &, const Variant &)
+ EXBIND1(remove_named_global_constant, const StringName &)
+
+ /* MULTITHREAD FUNCTIONS */
+
+ //some VMs need to be notified of thread creation/exiting to allocate a stack
+ EXBIND0(thread_enter)
+ EXBIND0(thread_exit)
+
+ EXBIND0RC(String, debug_get_error)
+ EXBIND0RC(int, debug_get_stack_level_count)
+ EXBIND1RC(int, debug_get_stack_level_line, int)
+ EXBIND1RC(String, debug_get_stack_level_function, int)
+ EXBIND1RC(String, debug_get_stack_level_source, int)
+
+ GDVIRTUAL3R(Dictionary, _debug_get_stack_level_locals, int, int, int)
+ virtual void debug_get_stack_level_locals(int p_level, List<String> *p_locals, List<Variant> *p_values, int p_max_subitems = -1, int p_max_depth = -1) override {
+ Dictionary ret;
+ GDVIRTUAL_REQUIRED_CALL(_debug_get_stack_level_locals, p_level, p_max_subitems, p_max_depth, ret);
+ if (ret.size() == 0) {
+ return;
+ }
+ if (p_locals != nullptr && ret.has("locals")) {
+ PackedStringArray strings = ret["locals"];
+ for (int i = 0; i < strings.size(); i++) {
+ p_locals->push_back(strings[i]);
+ }
+ }
+ if (p_values != nullptr && ret.has("values")) {
+ Array values = ret["values"];
+ for (int i = 0; i < values.size(); i++) {
+ p_values->push_back(values[i]);
+ }
+ }
+ }
+ GDVIRTUAL3R(Dictionary, _debug_get_stack_level_members, int, int, int)
+ virtual void debug_get_stack_level_members(int p_level, List<String> *p_members, List<Variant> *p_values, int p_max_subitems = -1, int p_max_depth = -1) override {
+ Dictionary ret;
+ GDVIRTUAL_REQUIRED_CALL(_debug_get_stack_level_members, p_level, p_max_subitems, p_max_depth, ret);
+ if (ret.size() == 0) {
+ return;
+ }
+ if (p_members != nullptr && ret.has("members")) {
+ PackedStringArray strings = ret["members"];
+ for (int i = 0; i < strings.size(); i++) {
+ p_members->push_back(strings[i]);
+ }
+ }
+ if (p_values != nullptr && ret.has("values")) {
+ Array values = ret["values"];
+ for (int i = 0; i < values.size(); i++) {
+ p_values->push_back(values[i]);
+ }
+ }
+ }
+ GDVIRTUAL1R(GDNativePtr<void>, _debug_get_stack_level_instance, int)
+
+ virtual ScriptInstance *debug_get_stack_level_instance(int p_level) override {
+ GDNativePtr<void> ret = nullptr;
+ GDVIRTUAL_REQUIRED_CALL(_debug_get_stack_level_instance, p_level, ret);
+ return reinterpret_cast<ScriptInstance *>(ret.operator void *());
+ }
+ GDVIRTUAL2R(Dictionary, _debug_get_globals, int, int)
+ virtual void debug_get_globals(List<String> *p_globals, List<Variant> *p_values, int p_max_subitems = -1, int p_max_depth = -1) override {
+ Dictionary ret;
+ GDVIRTUAL_REQUIRED_CALL(_debug_get_globals, p_max_subitems, p_max_depth, ret);
+ if (ret.size() == 0) {
+ return;
+ }
+ if (p_globals != nullptr && ret.has("globals")) {
+ PackedStringArray strings = ret["globals"];
+ for (int i = 0; i < strings.size(); i++) {
+ p_globals->push_back(strings[i]);
+ }
+ }
+ if (p_values != nullptr && ret.has("values")) {
+ Array values = ret["values"];
+ for (int i = 0; i < values.size(); i++) {
+ p_values->push_back(values[i]);
+ }
+ }
+ }
+
+ EXBIND4R(String, debug_parse_stack_level_expression, int, const String &, int, int)
+
+ GDVIRTUAL0R(TypedArray<Dictionary>, _debug_get_current_stack_info)
+ virtual Vector<StackInfo> debug_get_current_stack_info() override {
+ TypedArray<Dictionary> ret;
+ GDVIRTUAL_REQUIRED_CALL(_debug_get_current_stack_info, ret);
+ Vector<StackInfo> sret;
+ for (int i = 0; i < ret.size(); i++) {
+ StackInfo si;
+ Dictionary d = ret[i];
+ ERR_CONTINUE(!d.has("file"));
+ ERR_CONTINUE(!d.has("func"));
+ ERR_CONTINUE(!d.has("line"));
+ si.file = d["file"];
+ si.func = d["func"];
+ si.line = d["line"];
+ sret.push_back(si);
+ }
+ return sret;
+ }
+
+ EXBIND0(reload_all_scripts)
+ EXBIND2(reload_tool_script, const Ref<Script> &, bool)
+ /* LOADER FUNCTIONS */
+
+ GDVIRTUAL0RC(PackedStringArray, _get_recognized_extensions)
+
+ virtual void get_recognized_extensions(List<String> *p_extensions) const override {
+ PackedStringArray ret;
+ GDVIRTUAL_REQUIRED_CALL(_get_recognized_extensions, ret);
+ for (int i = 0; i < ret.size(); i++) {
+ p_extensions->push_back(ret[i]);
+ }
+ }
+
+ GDVIRTUAL0RC(TypedArray<Dictionary>, _get_public_functions)
+ virtual void get_public_functions(List<MethodInfo> *p_functions) const override {
+ TypedArray<Dictionary> ret;
+ GDVIRTUAL_REQUIRED_CALL(_get_public_functions, ret);
+ for (int i = 0; i < ret.size(); i++) {
+ MethodInfo mi = MethodInfo::from_dict(ret[i]);
+ p_functions->push_back(mi);
+ }
+ }
+ GDVIRTUAL0RC(Dictionary, _get_public_constants)
+ virtual void get_public_constants(List<Pair<String, Variant>> *p_constants) const override {
+ Dictionary ret;
+ GDVIRTUAL_REQUIRED_CALL(_get_public_constants, ret);
+ for (int i = 0; i < ret.size(); i++) {
+ Dictionary d = ret[i];
+ ERR_CONTINUE(!d.has("name"));
+ ERR_CONTINUE(!d.has("value"));
+ p_constants->push_back(Pair<String, Variant>(d["name"], d["value"]));
+ }
+ }
+
+ EXBIND0(profiling_start)
+ EXBIND0(profiling_stop)
+
+ GDVIRTUAL2R(int, _profiling_get_accumulated_data, GDNativePtr<ScriptLanguageExtensionProfilingInfo>, int)
+
+ virtual int profiling_get_accumulated_data(ProfilingInfo *p_info_arr, int p_info_max) override {
+ int ret = 0;
+ GDVIRTUAL_REQUIRED_CALL(_profiling_get_accumulated_data, p_info_arr, p_info_max, ret);
+ return ret;
+ }
+
+ GDVIRTUAL2R(int, _profiling_get_frame_data, GDNativePtr<ScriptLanguageExtensionProfilingInfo>, int)
+
+ virtual int profiling_get_frame_data(ProfilingInfo *p_info_arr, int p_info_max) override {
+ int ret = 0;
+ GDVIRTUAL_REQUIRED_CALL(_profiling_get_accumulated_data, p_info_arr, p_info_max, ret);
+ return ret;
+ }
+
+ GDVIRTUAL1R(GDNativePtr<void>, _alloc_instance_binding_data, Object *)
+
+ virtual void *alloc_instance_binding_data(Object *p_object) override {
+ GDNativePtr<void> ret = nullptr;
+ GDVIRTUAL_REQUIRED_CALL(_alloc_instance_binding_data, p_object, ret);
+ return ret.operator void *();
+ }
+
+ GDVIRTUAL1(_free_instance_binding_data, GDNativePtr<void>)
+
+ virtual void free_instance_binding_data(void *p_data) override {
+ GDVIRTUAL_REQUIRED_CALL(_free_instance_binding_data, p_data);
+ }
+
+ EXBIND1(refcount_incremented_instance_binding, Object *)
+ EXBIND1R(bool, refcount_decremented_instance_binding, Object *)
+
+ EXBIND0(frame)
+
+ EXBIND1RC(bool, handles_global_class_type, const String &)
+
+ GDVIRTUAL1RC(Dictionary, _get_global_class_name, const String &)
+
+ virtual String get_global_class_name(const String &p_path, String *r_base_type = nullptr, String *r_icon_path = nullptr) const override {
+ Dictionary ret;
+ GDVIRTUAL_REQUIRED_CALL(_get_global_class_name, p_path, ret);
+ if (!ret.has("name")) {
+ return String();
+ }
+ if (r_base_type != nullptr && ret.has("base_type")) {
+ *r_base_type = ret["base_type"];
+ }
+ if (r_icon_path != nullptr && ret.has("icon_path")) {
+ *r_icon_path = ret["icon_path"];
+ }
+ return ret["name"];
+ }
+};
+
+VARIANT_ENUM_CAST(ScriptLanguageExtension::LookupResultType)
+VARIANT_ENUM_CAST(ScriptLanguageExtension::CodeCompletionKind)
+
+class ScriptInstanceExtension : public ScriptInstance {
+public:
+ const GDNativeExtensionScriptInstanceInfo *native_info;
+ GDNativeExtensionScriptInstanceDataPtr instance = nullptr;
+
+// There should not be warnings on explicit casts.
+#if defined(__GNUC__) && !defined(__clang__)
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wignored-qualifiers"
+#endif
+
+ virtual bool set(const StringName &p_name, const Variant &p_value) override {
+ if (native_info->set_func) {
+ return native_info->set_func(instance, (const GDNativeStringNamePtr)&p_name, (const GDNativeVariantPtr)&p_value);
+ }
+ return false;
+ }
+ virtual bool get(const StringName &p_name, Variant &r_ret) const override {
+ if (native_info->get_func) {
+ return native_info->get_func(instance, (const GDNativeStringNamePtr)&p_name, (GDNativeVariantPtr)&r_ret);
+ }
+ return false;
+ }
+ virtual void get_property_list(List<PropertyInfo> *p_list) const override {
+ if (native_info->get_property_list_func) {
+ uint32_t pcount;
+ const GDNativePropertyInfo *pinfo = native_info->get_property_list_func(instance, &pcount);
+ for (uint32_t i = 0; i < pcount; i++) {
+ p_list->push_back(PropertyInfo(Variant::Type(pinfo[i].type), pinfo[i].class_name, PropertyHint(pinfo[i].hint), pinfo[i].hint_string, pinfo[i].usage, pinfo[i].class_name));
+ }
+ if (native_info->free_property_list_func) {
+ native_info->free_property_list_func(instance, pinfo);
+ }
+ }
+ }
+ virtual Variant::Type get_property_type(const StringName &p_name, bool *r_is_valid = nullptr) const override {
+ if (native_info->get_property_type_func) {
+ GDNativeBool is_valid = 0;
+ GDNativeVariantType type = native_info->get_property_type_func(instance, (const GDNativeStringNamePtr)&p_name, &is_valid);
+ if (r_is_valid) {
+ *r_is_valid = is_valid != 0;
+ }
+
+ return Variant::Type(type);
+ }
+ return Variant::NIL;
+ }
+
+ virtual Object *get_owner() override {
+ if (native_info->get_owner_func) {
+ return (Object *)native_info->get_owner_func(instance);
+ }
+ return nullptr;
+ }
+ static void _add_property_with_state(const GDNativeStringNamePtr p_name, const GDNativeVariantPtr p_value, void *p_userdata) {
+ List<Pair<StringName, Variant>> *state = (List<Pair<StringName, Variant>> *)p_userdata;
+ state->push_back(Pair<StringName, Variant>(*(const StringName *)p_name, *(const Variant *)p_value));
+ }
+ virtual void get_property_state(List<Pair<StringName, Variant>> &state) override {
+ if (native_info->get_property_state_func) {
+ native_info->get_property_state_func(instance, _add_property_with_state, &state);
+ }
+ }
+
+ virtual void get_method_list(List<MethodInfo> *p_list) const override {
+ if (native_info->get_method_list_func) {
+ uint32_t mcount;
+ const GDNativeMethodInfo *minfo = native_info->get_method_list_func(instance, &mcount);
+ for (uint32_t i = 0; i < mcount; i++) {
+ MethodInfo m;
+ m.name = minfo[i].name;
+ m.flags = minfo[i].flags;
+ m.id = minfo[i].id;
+ m.return_val = PropertyInfo(Variant::Type(minfo[i].return_value.type), minfo[i].return_value.class_name, PropertyHint(minfo[i].return_value.hint), minfo[i].return_value.hint_string, minfo[i].return_value.usage, minfo[i].return_value.class_name);
+ for (uint32_t j = 0; j < minfo[i].argument_count; j++) {
+ m.arguments.push_back(PropertyInfo(Variant::Type(minfo[i].arguments[j].type), minfo[i].arguments[j].class_name, PropertyHint(minfo[i].arguments[j].hint), minfo[i].arguments[j].hint_string, minfo[i].arguments[j].usage, minfo[i].arguments[j].class_name));
+ }
+ const Variant *def_values = (const Variant *)minfo[i].default_arguments;
+ for (uint32_t j = 0; j < minfo[i].default_argument_count; j++) {
+ m.default_arguments.push_back(def_values[j]);
+ }
+ p_list->push_back(m);
+ }
+ if (native_info->free_method_list_func) {
+ native_info->free_method_list_func(instance, minfo);
+ }
+ }
+ }
+ virtual bool has_method(const StringName &p_method) const override {
+ if (native_info->has_method_func) {
+ return native_info->has_method_func(instance, (GDNativeStringNamePtr)&p_method);
+ }
+ return false;
+ }
+
+ virtual Variant callp(const StringName &p_method, const Variant **p_args, int p_argcount, Callable::CallError &r_error) override {
+ Variant ret;
+ if (native_info->call_func) {
+ GDNativeCallError ce;
+ native_info->call_func(instance, (const GDNativeStringNamePtr)&p_method, (const GDNativeVariantPtr *)p_args, p_argcount, (GDNativeVariantPtr)&ret, &ce);
+ r_error.error = Callable::CallError::Error(ce.error);
+ r_error.argument = ce.argument;
+ r_error.expected = ce.expected;
+ }
+ return ret;
+ }
+
+ virtual void notification(int p_notification) override {
+ if (native_info->notification_func) {
+ native_info->notification_func(instance, p_notification);
+ }
+ }
+ virtual String to_string(bool *r_valid) override {
+ if (native_info->to_string_func) {
+ GDNativeBool valid;
+ String ret = native_info->to_string_func(instance, &valid);
+ if (r_valid) {
+ *r_valid = valid != 0;
+ }
+ return ret;
+ }
+ return String();
+ }
+
+ virtual void refcount_incremented() override {
+ if (native_info->refcount_incremented_func) {
+ native_info->refcount_incremented_func(instance);
+ }
+ }
+ virtual bool refcount_decremented() override {
+ if (native_info->refcount_decremented_func) {
+ return native_info->refcount_decremented_func(instance);
+ }
+ return false;
+ }
+
+ virtual Ref<Script> get_script() const override {
+ if (native_info->get_script_func) {
+ GDNativeObjectPtr script = native_info->get_script_func(instance);
+ return Ref<Script>(reinterpret_cast<Script *>(script));
+ }
+ return Ref<Script>();
+ }
+
+ virtual bool is_placeholder() const override {
+ if (native_info->is_placeholder_func) {
+ return native_info->is_placeholder_func(instance);
+ }
+ return false;
+ }
+
+ virtual void property_set_fallback(const StringName &p_name, const Variant &p_value, bool *r_valid) override {
+ if (native_info->set_fallback_func) {
+ bool ret = native_info->set_fallback_func(instance, (const GDNativeStringNamePtr)&p_name, (const GDNativeVariantPtr)&p_value);
+ if (r_valid) {
+ *r_valid = ret;
+ }
+ }
+ }
+ virtual Variant property_get_fallback(const StringName &p_name, bool *r_valid) override {
+ Variant ret;
+ if (native_info->get_fallback_func) {
+ bool valid = native_info->get_fallback_func(instance, (const GDNativeStringNamePtr)&p_name, (GDNativeVariantPtr)&ret);
+ if (r_valid) {
+ *r_valid = valid;
+ }
+ }
+ return ret;
+ }
+
+ virtual ScriptLanguage *get_language() override {
+ if (native_info->get_language_func) {
+ GDNativeExtensionScriptLanguagePtr lang = native_info->get_language_func(instance);
+ return reinterpret_cast<ScriptLanguage *>(lang);
+ }
+ return nullptr;
+ ;
+ }
+ virtual ~ScriptInstanceExtension() {
+ if (native_info->free_func) {
+ native_info->free_func(instance);
+ }
+ }
+
+#if defined(__GNUC__) && !defined(__clang__)
+#pragma GCC diagnostic pop
+#endif
+};
+
+#endif // SCRIPT_LANGUAGE_EXTENSION_H
diff --git a/core/object/undo_redo.cpp b/core/object/undo_redo.cpp
index ee8eb97a93..d3c48853f1 100644
--- a/core/object/undo_redo.cpp
+++ b/core/object/undo_redo.cpp
@@ -444,25 +444,25 @@ UndoRedo::~UndoRedo() {
clear_history();
}
-Variant UndoRedo::_add_do_method(const Variant **p_args, int p_argcount, Callable::CallError &r_error) {
+void UndoRedo::_add_do_method(const Variant **p_args, int p_argcount, Callable::CallError &r_error) {
if (p_argcount < 2) {
r_error.error = Callable::CallError::CALL_ERROR_TOO_FEW_ARGUMENTS;
r_error.argument = 0;
- return Variant();
+ return;
}
if (p_args[0]->get_type() != Variant::OBJECT) {
r_error.error = Callable::CallError::CALL_ERROR_INVALID_ARGUMENT;
r_error.argument = 0;
r_error.expected = Variant::OBJECT;
- return Variant();
+ return;
}
if (p_args[1]->get_type() != Variant::STRING_NAME && p_args[1]->get_type() != Variant::STRING) {
r_error.error = Callable::CallError::CALL_ERROR_INVALID_ARGUMENT;
r_error.argument = 1;
r_error.expected = Variant::STRING_NAME;
- return Variant();
+ return;
}
r_error.error = Callable::CallError::CALL_OK;
@@ -471,28 +471,27 @@ Variant UndoRedo::_add_do_method(const Variant **p_args, int p_argcount, Callabl
StringName method = *p_args[1];
add_do_methodp(object, method, p_args + 2, p_argcount - 2);
- return Variant();
}
-Variant UndoRedo::_add_undo_method(const Variant **p_args, int p_argcount, Callable::CallError &r_error) {
+void UndoRedo::_add_undo_method(const Variant **p_args, int p_argcount, Callable::CallError &r_error) {
if (p_argcount < 2) {
r_error.error = Callable::CallError::CALL_ERROR_TOO_FEW_ARGUMENTS;
r_error.argument = 0;
- return Variant();
+ return;
}
if (p_args[0]->get_type() != Variant::OBJECT) {
r_error.error = Callable::CallError::CALL_ERROR_INVALID_ARGUMENT;
r_error.argument = 0;
r_error.expected = Variant::OBJECT;
- return Variant();
+ return;
}
if (p_args[1]->get_type() != Variant::STRING_NAME && p_args[1]->get_type() != Variant::STRING) {
r_error.error = Callable::CallError::CALL_ERROR_INVALID_ARGUMENT;
r_error.argument = 1;
r_error.expected = Variant::STRING_NAME;
- return Variant();
+ return;
}
r_error.error = Callable::CallError::CALL_OK;
@@ -501,7 +500,6 @@ Variant UndoRedo::_add_undo_method(const Variant **p_args, int p_argcount, Calla
StringName method = *p_args[1];
add_undo_methodp(object, method, p_args + 2, p_argcount - 2);
- return Variant();
}
void UndoRedo::_bind_methods() {
diff --git a/core/object/undo_redo.h b/core/object/undo_redo.h
index ecd7a21167..63cf3e5cbe 100644
--- a/core/object/undo_redo.h
+++ b/core/object/undo_redo.h
@@ -46,8 +46,8 @@ public:
};
typedef void (*CommitNotifyCallback)(void *p_ud, const String &p_name);
- Variant _add_do_method(const Variant **p_args, int p_argcount, Callable::CallError &r_error);
- Variant _add_undo_method(const Variant **p_args, int p_argcount, Callable::CallError &r_error);
+ void _add_do_method(const Variant **p_args, int p_argcount, Callable::CallError &r_error);
+ void _add_undo_method(const Variant **p_args, int p_argcount, Callable::CallError &r_error);
typedef void (*MethodNotifyCallback)(void *p_ud, Object *p_base, const StringName &p_name, const Variant **p_args, int p_argcount);
typedef void (*PropertyNotifyCallback)(void *p_ud, Object *p_base, const StringName &p_property, const Variant &p_value);
diff --git a/core/os/main_loop.h b/core/os/main_loop.h
index a6a32f0138..2bb1ea2ef4 100644
--- a/core/os/main_loop.h
+++ b/core/os/main_loop.h
@@ -38,7 +38,6 @@
class MainLoop : public Object {
GDCLASS(MainLoop, Object);
- OBJ_CATEGORY("Main Loop");
Ref<Script> initialize_script;
diff --git a/core/register_core_types.cpp b/core/register_core_types.cpp
index d05280f6a5..415b56cd83 100644
--- a/core/register_core_types.cpp
+++ b/core/register_core_types.cpp
@@ -71,6 +71,7 @@
#include "core/multiplayer/multiplayer_api.h"
#include "core/multiplayer/multiplayer_peer.h"
#include "core/object/class_db.h"
+#include "core/object/script_language_extension.h"
#include "core/object/undo_redo.h"
#include "core/os/main_loop.h"
#include "core/os/time.h"
@@ -142,6 +143,10 @@ void register_core_types() {
GDREGISTER_CLASS(Object);
GDREGISTER_ABSTRACT_CLASS(Script);
+ GDREGISTER_ABSTRACT_CLASS(ScriptLanguage);
+
+ GDREGISTER_VIRTUAL_CLASS(ScriptExtension);
+ GDREGISTER_VIRTUAL_CLASS(ScriptLanguageExtension);
GDREGISTER_CLASS(RefCounted);
GDREGISTER_CLASS(WeakRef);
@@ -227,7 +232,7 @@ void register_core_types() {
GDREGISTER_CLASS(PackedDataContainer);
GDREGISTER_ABSTRACT_CLASS(PackedDataContainerRef);
- GDREGISTER_CLASS(AStar);
+ GDREGISTER_CLASS(AStar3D);
GDREGISTER_CLASS(AStar2D);
GDREGISTER_CLASS(EncodedObjectAsID);
GDREGISTER_CLASS(RandomNumberGenerator);
@@ -263,6 +268,7 @@ void register_core_types() {
_engine_debugger = memnew(core_bind::EngineDebugger);
GDREGISTER_NATIVE_STRUCT(AudioFrame, "float left;float right");
+ GDREGISTER_NATIVE_STRUCT(ScriptLanguageExtensionProfilingInfo, "StringName signature;uint64_t call_count;uint64_t total_time;uint64_t self_time");
}
void register_core_settings() {
diff --git a/core/string/ustring.h b/core/string/ustring.h
index 5e7904d827..48f2e45105 100644
--- a/core/string/ustring.h
+++ b/core/string/ustring.h
@@ -523,10 +523,6 @@ String DTRN(const String &p_text, const String &p_text_plural, int p_n, const St
#define TTRGET(m_value) TTR(m_value)
#else
-#define TTR(m_value) String()
-#define TTRN(m_value) String()
-#define DTR(m_value) String()
-#define DTRN(m_value) String()
#define TTRC(m_value) (m_value)
#define TTRGET(m_value) (m_value)
#endif
diff --git a/core/templates/vector.h b/core/templates/vector.h
index 0877e04e01..d87e76139b 100644
--- a/core/templates/vector.h
+++ b/core/templates/vector.h
@@ -97,24 +97,29 @@ public:
_FORCE_INLINE_ bool has(const T &p_val) const { return find(p_val) != -1; }
- template <class C>
- void sort_custom() {
+ void sort() {
+ sort_custom<_DefaultComparator<T>>();
+ }
+
+ template <class Comparator, bool Validate = SORT_ARRAY_VALIDATE_ENABLED, class... Args>
+ void sort_custom(Args &&...args) {
int len = _cowdata.size();
if (len == 0) {
return;
}
T *data = ptrw();
- SortArray<T, C> sorter;
+ SortArray<T, Comparator, Validate> sorter{ args... };
sorter.sort(data, len);
}
- void sort() {
- sort_custom<_DefaultComparator<T>>();
+ int bsearch(const T &p_value, bool p_before) {
+ return bsearch_custom<_DefaultComparator<T>>(p_value, p_before);
}
- int bsearch(const T &p_value, bool p_before) {
- SearchArray<T> search;
+ template <class Comparator, class Value, class... Args>
+ int bsearch_custom(const Value &p_value, bool p_before, Args &&...args) {
+ SearchArray<T, Comparator> search{ args... };
return search.bisect(ptrw(), size(), p_value, p_before);
}
diff --git a/core/variant/array.cpp b/core/variant/array.cpp
index 1b39558dff..afc4acadf9 100644
--- a/core/variant/array.cpp
+++ b/core/variant/array.cpp
@@ -484,24 +484,8 @@ void Array::sort() {
_p->array.sort_custom<_ArrayVariantSort>();
}
-struct _ArrayVariantSortCustom {
- Callable func;
-
- _FORCE_INLINE_ bool operator()(const Variant &p_l, const Variant &p_r) const {
- const Variant *args[2] = { &p_l, &p_r };
- Callable::CallError err;
- Variant res;
- func.call(args, 2, res, err);
- ERR_FAIL_COND_V_MSG(err.error != Callable::CallError::CALL_OK, false,
- "Error calling sorting method: " + Variant::get_callable_error_text(func, args, 1, err));
- return res;
- }
-};
-
-void Array::sort_custom(Callable p_callable) {
- SortArray<Variant, _ArrayVariantSortCustom, true> avs;
- avs.compare.func = p_callable;
- avs.sort(_p->array.ptrw(), _p->array.size());
+void Array::sort_custom(const Callable &p_callable) {
+ _p->array.sort_custom<CallableComparator, true>(p_callable);
}
void Array::shuffle() {
@@ -524,13 +508,10 @@ int Array::bsearch(const Variant &p_value, bool p_before) {
return avs.bisect(_p->array.ptrw(), _p->array.size(), p_value, p_before);
}
-int Array::bsearch_custom(const Variant &p_value, Callable p_callable, bool p_before) {
+int Array::bsearch_custom(const Variant &p_value, const Callable &p_callable, bool p_before) {
ERR_FAIL_COND_V(!_p->typed.validate(p_value, "custom binary search"), -1);
- SearchArray<Variant, _ArrayVariantSortCustom> avs;
- avs.compare.func = p_callable;
-
- return avs.bisect(_p->array.ptrw(), _p->array.size(), p_value, p_before);
+ return _p->array.bsearch_custom<CallableComparator>(p_value, p_before, p_callable);
}
void Array::reverse() {
diff --git a/core/variant/array.h b/core/variant/array.h
index 72bed5932c..ab5f7cd50f 100644
--- a/core/variant/array.h
+++ b/core/variant/array.h
@@ -82,10 +82,10 @@ public:
Variant back() const;
void sort();
- void sort_custom(Callable p_callable);
+ void sort_custom(const Callable &p_callable);
void shuffle();
int bsearch(const Variant &p_value, bool p_before = true);
- int bsearch_custom(const Variant &p_value, Callable p_callable, bool p_before = true);
+ int bsearch_custom(const Variant &p_value, const Callable &p_callable, bool p_before = true);
void reverse();
int find(const Variant &p_value, int p_from = 0) const;
diff --git a/core/variant/callable.cpp b/core/variant/callable.cpp
index 48ed48d120..516b8f2d51 100644
--- a/core/variant/callable.cpp
+++ b/core/variant/callable.cpp
@@ -429,3 +429,13 @@ Signal::Signal(ObjectID p_object, const StringName &p_name) {
object = p_object;
name = p_name;
}
+
+bool CallableComparator::operator()(const Variant &p_l, const Variant &p_r) const {
+ const Variant *args[2] = { &p_l, &p_r };
+ Callable::CallError err;
+ Variant res;
+ func.call(args, 2, res, err);
+ ERR_FAIL_COND_V_MSG(err.error != Callable::CallError::CALL_OK, false,
+ "Error calling compare method: " + Variant::get_callable_error_text(func, args, 1, err));
+ return res;
+}
diff --git a/core/variant/callable.h b/core/variant/callable.h
index c61870f194..6a760958d6 100644
--- a/core/variant/callable.h
+++ b/core/variant/callable.h
@@ -170,4 +170,10 @@ public:
Signal() {}
};
+struct CallableComparator {
+ const Callable &func;
+
+ bool operator()(const Variant &p_l, const Variant &p_r) const;
+};
+
#endif // CALLABLE_H
diff --git a/core/variant/variant_call.cpp b/core/variant/variant_call.cpp
index a02f9c5823..c11925fa8c 100644
--- a/core/variant/variant_call.cpp
+++ b/core/variant/variant_call.cpp
@@ -1656,6 +1656,8 @@ static void _register_variant_builtin_methods() {
bind_method(Color, darkened, sarray("amount"), varray());
bind_method(Color, blend, sarray("over"), varray());
bind_method(Color, get_luminance, sarray(), varray());
+ bind_method(Color, to_linear, sarray(), varray());
+ bind_method(Color, to_srgb, sarray(), varray());
bind_method(Color, is_equal_approx, sarray("to"), varray());
diff --git a/core/variant/variant_construct.h b/core/variant/variant_construct.h
index 6027cb027e..ce2e9af04f 100644
--- a/core/variant/variant_construct.h
+++ b/core/variant/variant_construct.h
@@ -543,14 +543,12 @@ public:
class VariantConstructNoArgsObject {
public:
static void construct(Variant &r_ret, const Variant **p_args, Callable::CallError &r_error) {
- VariantInternal::clear(&r_ret);
- VariantInternal::object_assign_null(&r_ret);
+ r_ret = (Object *)nullptr; // Must construct a TYPE_OBJECT containing nullptr.
r_error.error = Callable::CallError::CALL_OK;
}
static inline void validated_construct(Variant *r_ret, const Variant **p_args) {
- VariantInternal::clear(r_ret);
- VariantInternal::object_assign_null(r_ret);
+ *r_ret = (Object *)nullptr; // Must construct a TYPE_OBJECT containing nullptr.
}
static void ptr_construct(void *base, const void **p_args) {
PtrConstruct<Object *>::construct(nullptr, base);
diff --git a/doc/classes/@GlobalScope.xml b/doc/classes/@GlobalScope.xml
index f692a49ba1..a2b310ca82 100644
--- a/doc/classes/@GlobalScope.xml
+++ b/doc/classes/@GlobalScope.xml
@@ -2405,7 +2405,8 @@
Additionally, other keywords can be included: "exp" for exponential range editing, "radians" for editing radian angles in degrees, "degrees" to hint at an angle and "noslider" to hide the slider.
</constant>
<constant name="PROPERTY_HINT_ENUM" value="2" enum="PropertyHint">
- 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].
+ Hints that an integer, float or string property is an enumerated value to pick in a list specified via a hint string.
+ The hint string is a comma separated list of names such as [code]"Hello,Something,Else"[/code]. For integer and float properties, the first name in the list has value 0, the next 1, and so on. Explicit values can also be specified by appending [code]:integer[/code] to the name, e.g. [code]"Zero,One,Three:3,Four,Six:6"[/code].
</constant>
<constant name="PROPERTY_HINT_ENUM_SUGGESTION" value="3" enum="PropertyHint">
Hints that a string property can be an enumerated value to pick in a list specified via a hint string such as [code]"Hello,Something,Else"[/code].
diff --git a/doc/classes/AStar2D.xml b/doc/classes/AStar2D.xml
index 2dde3ad340..4b65a64389 100644
--- a/doc/classes/AStar2D.xml
+++ b/doc/classes/AStar2D.xml
@@ -4,7 +4,7 @@
AStar class representation that uses 2D vectors as edges.
</brief_description>
<description>
- This is a wrapper for the [AStar] class which uses 2D vectors instead of 3D vectors.
+ This is a wrapper for the [AStar3D] class which uses 2D vectors instead of 3D vectors.
</description>
<tutorials>
</tutorials>
diff --git a/doc/classes/AStar.xml b/doc/classes/AStar3D.xml
index cb76fe8cf6..3087b9e363 100644
--- a/doc/classes/AStar.xml
+++ b/doc/classes/AStar3D.xml
@@ -1,16 +1,16 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="AStar" inherits="RefCounted" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd">
+<class name="AStar3D" inherits="RefCounted" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd">
<brief_description>
An implementation of A* to find the shortest paths among connected points in space.
</brief_description>
<description>
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.
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].
- 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.
+ It is also possible to use non-Euclidean distances. To do so, create a class that extends [code]AStar3D[/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.
[codeblocks]
[gdscript]
class MyAStar:
- extends AStar
+ extends AStar3D
func _compute_cost(u, v):
return abs(u - v)
@@ -19,7 +19,7 @@
return min(0, abs(u - v) - 1)
[/gdscript]
[csharp]
- public class MyAStar : AStar
+ public class MyAStar : AStar3D
{
public override float _ComputeCost(int u, int v)
{
@@ -44,7 +44,7 @@
<argument index="1" name="to_id" type="int" />
<description>
Called when computing the cost between two connected points.
- Note that this function is hidden in the default [code]AStar[/code] class.
+ Note that this function is hidden in the default [code]AStar3D[/code] class.
</description>
</method>
<method name="_estimate_cost" qualifiers="virtual const">
@@ -53,7 +53,7 @@
<argument index="1" name="to_id" type="int" />
<description>
Called when estimating the cost between a point and the path's ending point.
- Note that this function is hidden in the default [code]AStar[/code] class.
+ Note that this function is hidden in the default [code]AStar3D[/code] class.
</description>
</method>
<method name="add_point">
@@ -66,11 +66,11 @@
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.
[codeblocks]
[gdscript]
- var astar = AStar.new()
+ var astar = AStar3D.new()
astar.add_point(1, Vector3(1, 0, 0), 4) # Adds the point (1, 0, 0) with weight_scale 4 and id 1
[/gdscript]
[csharp]
- var astar = new AStar();
+ var astar = new AStar3D();
astar.AddPoint(1, new Vector3(1, 0, 0), 4); // Adds the point (1, 0, 0) with weight_scale 4 and id 1
[/csharp]
[/codeblocks]
@@ -101,13 +101,13 @@
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.
[codeblocks]
[gdscript]
- var astar = AStar.new()
+ var astar = AStar3D.new()
astar.add_point(1, Vector3(1, 1, 0))
astar.add_point(2, Vector3(0, 5, 0))
astar.connect_points(1, 2, false)
[/gdscript]
[csharp]
- var astar = new AStar();
+ var astar = new AStar3D();
astar.AddPoint(1, new Vector3(1, 1, 0));
astar.AddPoint(2, new Vector3(0, 5, 0));
astar.ConnectPoints(1, 2, false);
@@ -146,14 +146,14 @@
Returns the closest position to [code]to_position[/code] that resides inside a segment between two connected points.
[codeblocks]
[gdscript]
- var astar = AStar.new()
+ var astar = AStar3D.new()
astar.add_point(1, Vector3(0, 0, 0))
astar.add_point(2, Vector3(0, 5, 0))
astar.connect_points(1, 2)
var res = astar.get_closest_position_in_segment(Vector3(3, 3, 0)) # Returns (0, 3, 0)
[/gdscript]
[csharp]
- var astar = new AStar();
+ var astar = new AStar3D();
astar.AddPoint(1, new Vector3(0, 0, 0));
astar.AddPoint(2, new Vector3(0, 5, 0));
astar.ConnectPoints(1, 2);
@@ -168,10 +168,10 @@
<argument index="0" name="from_id" type="int" />
<argument index="1" name="to_id" type="int" />
<description>
- 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.
+ Returns an array with the IDs of the points that form the path found by AStar3D between the given points. The array is ordered from the starting point to the ending point of the path.
[codeblocks]
[gdscript]
- var astar = AStar.new()
+ var astar = AStar3D.new()
astar.add_point(1, Vector3(0, 0, 0))
astar.add_point(2, Vector3(0, 1, 0), 1) # Default weight is 1
astar.add_point(3, Vector3(1, 1, 0))
@@ -185,7 +185,7 @@
var res = astar.get_id_path(1, 3) # Returns [1, 2, 3]
[/gdscript]
[csharp]
- var astar = new AStar();
+ var astar = new AStar3D();
astar.AddPoint(1, new Vector3(0, 0, 0));
astar.AddPoint(2, new Vector3(0, 1, 0), 1); // Default weight is 1
astar.AddPoint(3, new Vector3(1, 1, 0));
@@ -213,7 +213,7 @@
Returns an array with the IDs of the points that form the connection with the given point.
[codeblocks]
[gdscript]
- var astar = AStar.new()
+ var astar = AStar3D.new()
astar.add_point(1, Vector3(0, 0, 0))
astar.add_point(2, Vector3(0, 1, 0))
astar.add_point(3, Vector3(1, 1, 0))
@@ -225,7 +225,7 @@
var neighbors = astar.get_point_connections(1) # Returns [2, 3]
[/gdscript]
[csharp]
- var astar = new AStar();
+ var astar = new AStar3D();
astar.AddPoint(1, new Vector3(0, 0, 0));
astar.AddPoint(2, new Vector3(0, 1, 0));
astar.AddPoint(3, new Vector3(1, 1, 0));
@@ -255,7 +255,7 @@
<argument index="0" name="from_id" type="int" />
<argument index="1" name="to_id" type="int" />
<description>
- 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.
+ Returns an array with the points that are in the path found by AStar3D between the given points. The array is ordered from the starting point to the ending point of the path.
[b]Note:[/b] This method is not thread-safe. If called from a [Thread], it will return an empty [PackedVector3Array] and will print an error message.
</description>
</method>
diff --git a/doc/classes/AcceptDialog.xml b/doc/classes/AcceptDialog.xml
index 4836f48a57..c1e28ffba3 100644
--- a/doc/classes/AcceptDialog.xml
+++ b/doc/classes/AcceptDialog.xml
@@ -61,6 +61,8 @@
<member name="dialog_autowrap" type="bool" setter="set_autowrap" getter="has_autowrap" default="false">
Sets autowrapping for the text in the dialog.
</member>
+ <member name="dialog_close_on_escape" type="bool" setter="set_close_on_escape" getter="get_close_on_escape" default="true">
+ </member>
<member name="dialog_hide_on_ok" type="bool" setter="set_hide_on_ok" getter="get_hide_on_ok" default="true">
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.
[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.
diff --git a/doc/classes/AnimationNodeBlendTree.xml b/doc/classes/AnimationNodeBlendTree.xml
index 20eb349363..fcdd09f144 100644
--- a/doc/classes/AnimationNodeBlendTree.xml
+++ b/doc/classes/AnimationNodeBlendTree.xml
@@ -4,7 +4,8 @@
[AnimationTree] node resource that contains many blend type nodes.
</brief_description>
<description>
- 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.
+ This node may contain a sub-tree of any other blend type nodes, such as [AnimationNodeTransition], [AnimationNodeBlend2], [AnimationNodeBlend3], [AnimationNodeOneShot], etc. This is one of the most commonly used roots.
+ An [AnimationNodeOutput] node named [code]output[/code] is created by default.
</description>
<tutorials>
<link title="AnimationTree">$DOCS_URL/tutorials/animation/animation_tree.html</link>
diff --git a/doc/classes/Array.xml b/doc/classes/Array.xml
index 68cb615209..27331d3f96 100644
--- a/doc/classes/Array.xml
+++ b/doc/classes/Array.xml
@@ -513,48 +513,56 @@
<return type="bool" />
<argument index="0" name="right" type="Array" />
<description>
+ Compares the left operand [Array] against the [code]right[/code] [Array]. Returns [code]true[/code] if the sizes or contents of the arrays are [i]not[/i] equal, [code]false[/code] otherwise.
</description>
</operator>
<operator name="operator +">
<return type="Array" />
<argument index="0" name="right" type="Array" />
<description>
+ Concatenates two [Array]s together, with the [code]right[/code] [Array] being added to the end of the [Array] specified in the left operand. For example, [code][1, 2] + [3, 4][/code] results in [code][1, 2, 3, 4][/code].
</description>
</operator>
<operator name="operator &lt;">
<return type="bool" />
<argument index="0" name="right" type="Array" />
<description>
+ Performs a comparison for each index between the left operand [Array] and the [code]right[/code] [Array], considering the highest common index of both arrays for this comparison: Returns [code]true[/code] on the first occurrence of an element that is less, or [code]false[/code] if the element is greater. Note that depending on the type of data stored, this function may be recursive. If all elements are equal, it compares the length of both arrays and returns [code]false[/code] if the left operand [Array] has less elements, otherwise it returns [code]true[/code].
</description>
</operator>
<operator name="operator &lt;=">
<return type="bool" />
<argument index="0" name="right" type="Array" />
<description>
+ Performs a comparison for each index between the left operand [Array] and the [code]right[/code] [Array], considering the highest common index of both arrays for this comparison: Returns [code]true[/code] on the first occurrence of an element that is less, or [code]false[/code] if the element is greater. Note that depending on the type of data stored, this function may be recursive. If all elements are equal, it compares the length of both arrays and returns [code]true[/code] if the left operand [Array] has less or the same number of elements, otherwise it returns [code]false[/code].
</description>
</operator>
<operator name="operator ==">
<return type="bool" />
<argument index="0" name="right" type="Array" />
<description>
+ Compares the left operand [Array] against the [code]right[/code] [Array]. Returns [code]true[/code] if the sizes and contents of the arrays are equal, [code]false[/code] otherwise.
</description>
</operator>
<operator name="operator &gt;">
<return type="bool" />
<argument index="0" name="right" type="Array" />
<description>
+ Performs a comparison for each index between the left operand [Array] and the [code]right[/code] [Array], considering the highest common index of both arrays for this comparison: Returns [code]true[/code] on the first occurrence of an element that is greater, or [code]false[/code] if the element is less. Note that depending on the type of data stored, this function may be recursive. If all elements are equal, it compares the length of both arrays and returns [code]true[/code] if the [code]right[/code] [Array] has more elements, otherwise it returns [code]false[/code].
</description>
</operator>
<operator name="operator &gt;=">
<return type="bool" />
<argument index="0" name="right" type="Array" />
<description>
+ Performs a comparison for each index between the left operand [Array] and the [code]right[/code] [Array], considering the highest common index of both arrays for this comparison: Returns [code]true[/code] on the first occurrence of an element that is greater, or [code]false[/code] if the element is less. Note that depending on the type of data stored, this function may be recursive. If all elements are equal, it compares the length of both arrays and returns [code]true[/code] if the [code]right[/code] [Array] has more or the same number of elements, otherwise it returns [code]false[/code].
</description>
</operator>
<operator name="operator []">
<return type="void" />
<argument index="0" name="index" type="int" />
<description>
+ Returns a reference to the element of type [Variant] at the specified location. Arrays start at index 0. [code]index[/code] can be a zero or positive value to start from the beginning, or a negative value to start from the end. Out-of-bounds array access causes a run-time error, which will result in an error being printed and the project execution pausing if run from the editor.
</description>
</operator>
</operators>
diff --git a/doc/classes/CanvasItem.xml b/doc/classes/CanvasItem.xml
index 060d685ece..5205a1db3b 100644
--- a/doc/classes/CanvasItem.xml
+++ b/doc/classes/CanvasItem.xml
@@ -439,14 +439,14 @@
<return type="void" />
<argument index="0" name="enable" type="bool" />
<description>
- If [code]enable[/code] is [code]true[/code], children will be updated with local transform data.
+ If [code]enable[/code] is [code]true[/code], this node will receive [constant NOTIFICATION_LOCAL_TRANSFORM_CHANGED] when its local transform changes.
</description>
</method>
<method name="set_notify_transform">
<return type="void" />
<argument index="0" name="enable" type="bool" />
<description>
- If [code]enable[/code] is [code]true[/code], children will be updated with global transform data.
+ If [code]enable[/code] is [code]true[/code], this node will receive [constant NOTIFICATION_TRANSFORM_CHANGED] when its global transform changes.
</description>
</method>
<method name="show">
@@ -490,7 +490,7 @@
The texture repeating mode to use on this [CanvasItem].
</member>
<member name="top_level" type="bool" setter="set_as_top_level" getter="is_set_as_top_level" default="false">
- If [code]true[/code], the node will not inherit its transform from parent [CanvasItem]s.
+ If [code]true[/code], this [CanvasItem] will [i]not[/i] inherit its transform from parent [CanvasItem]s. Its draw order will also be changed to make it draw on top of other [CanvasItem]s that do not have [member top_level] set to [code]true[/code]. The [CanvasItem] will effectively act as if it was placed as a child of a bare [Node].
</member>
<member name="use_parent_material" type="bool" setter="set_use_parent_material" getter="get_use_parent_material" default="false">
If [code]true[/code], the parent [CanvasItem]'s [member material] property is used as this one's material.
@@ -524,7 +524,10 @@
</signals>
<constants>
<constant name="NOTIFICATION_TRANSFORM_CHANGED" value="2000">
- The [CanvasItem]'s transform has changed. This notification is only received if enabled by [method set_notify_transform] or [method set_notify_local_transform].
+ The [CanvasItem]'s global transform has changed. This notification is only received if enabled by [method set_notify_transform].
+ </constant>
+ <constant name="NOTIFICATION_LOCAL_TRANSFORM_CHANGED" value="35">
+ The [CanvasItem]'s local transform has changed. This notification is only received if enabled by [method set_notify_local_transform].
</constant>
<constant name="NOTIFICATION_DRAW" value="30">
The [CanvasItem] is requested to draw.
diff --git a/doc/classes/ClassDB.xml b/doc/classes/ClassDB.xml
index 835588b293..43210de686 100644
--- a/doc/classes/ClassDB.xml
+++ b/doc/classes/ClassDB.xml
@@ -23,13 +23,6 @@
Returns whether the specified [code]class[/code] is available or not.
</description>
</method>
- <method name="class_get_category" qualifiers="const">
- <return type="StringName" />
- <argument index="0" name="class" type="StringName" />
- <description>
- Returns a category associated with the class for use in documentation and the Asset Library. Debug mode required.
- </description>
- </method>
<method name="class_get_enum_constants" qualifiers="const">
<return type="PackedStringArray" />
<argument index="0" name="class" type="StringName" />
diff --git a/doc/classes/Color.xml b/doc/classes/Color.xml
index e30d448a27..5b48804d9d 100644
--- a/doc/classes/Color.xml
+++ b/doc/classes/Color.xml
@@ -183,6 +183,7 @@
<description>
Returns the luminance of the color in the [code][0.0, 1.0][/code] range.
This is useful when determining light or dark color. Colors with a luminance smaller than 0.5 can be generally considered dark.
+ [b]Note:[/b] [method get_luminance] relies on the colour being in the linear color space to return an accurate relative luminance value. If the color is in the sRGB color space, use [method to_linear] to convert it to the linear color space first.
</description>
</method>
<method name="get_named_color" qualifiers="static">
@@ -404,6 +405,12 @@
[/codeblocks]
</description>
</method>
+ <method name="to_linear" qualifiers="const">
+ <return type="Color" />
+ <description>
+ Returns the color converted to the linear color space. This assumes the original color is in the sRGB color space. See also [method to_srgb] which performs the opposite operation.
+ </description>
+ </method>
<method name="to_rgba32" qualifiers="const">
<return type="int" />
<description>
@@ -436,6 +443,12 @@
[/codeblocks]
</description>
</method>
+ <method name="to_srgb" qualifiers="const">
+ <return type="Color" />
+ <description>
+ Returns the color converted to the [url=https://en.wikipedia.org/wiki/SRGB]sRGB[/url] color space. This assumes the original color is in the linear color space. See also [method to_linear] which performs the opposite operation.
+ </description>
+ </method>
</methods>
<members>
<member name="a" type="float" setter="" getter="" default="1.0">
diff --git a/doc/classes/Control.xml b/doc/classes/Control.xml
index 3163ac5610..78150af9dd 100644
--- a/doc/classes/Control.xml
+++ b/doc/classes/Control.xml
@@ -943,9 +943,9 @@
</method>
<method name="warp_mouse">
<return type="void" />
- <argument index="0" name="to_position" type="Vector2" />
+ <argument index="0" name="position" type="Vector2" />
<description>
- Moves the mouse cursor to [code]to_position[/code], relative to [member position] of this [Control].
+ Moves the mouse cursor to [code]position[/code], relative to [member position] of this [Control].
</description>
</method>
</methods>
diff --git a/doc/classes/DisplayServer.xml b/doc/classes/DisplayServer.xml
index 5a67170086..0d99c600d5 100644
--- a/doc/classes/DisplayServer.xml
+++ b/doc/classes/DisplayServer.xml
@@ -136,7 +136,74 @@
<argument index="1" name="label" type="String" />
<argument index="2" name="callback" type="Callable" />
<argument index="3" name="tag" type="Variant" default="null" />
+ <argument index="4" name="accelerator" type="int" enum="Key" default="0" />
+ <argument index="5" name="index" type="int" default="-1" />
<description>
+ Adds a new checkable item with text [code]label[/code] to the global menu with ID [code]menu_root[/code].
+ [b]Note:[/b] This method is implemented on macOS.
+ [b]Supported system menu IDs:[/b]
+ [codeblock]
+ "" - Main menu (macOS).
+ "_dock" - Dock popup menu (macOS).
+ [/codeblock]
+ </description>
+ </method>
+ <method name="global_menu_add_icon_check_item">
+ <return type="void" />
+ <argument index="0" name="menu_root" type="String" />
+ <argument index="1" name="icon" type="Texture2D" />
+ <argument index="2" name="label" type="String" />
+ <argument index="3" name="callback" type="Callable" />
+ <argument index="4" name="tag" type="Variant" default="null" />
+ <argument index="5" name="accelerator" type="int" enum="Key" default="0" />
+ <argument index="6" name="index" type="int" default="-1" />
+ <description>
+ Adds a new checkable item with text [code]label[/code] and icon [code]icon[/code] to the global menu with ID [code]menu_root[/code].
+ [b]Note:[/b] This method is implemented on macOS.
+ [b]Supported system menu IDs:[/b]
+ [codeblock]
+ "" - Main menu (macOS).
+ "_dock" - Dock popup menu (macOS).
+ [/codeblock]
+ </description>
+ </method>
+ <method name="global_menu_add_icon_item">
+ <return type="void" />
+ <argument index="0" name="menu_root" type="String" />
+ <argument index="1" name="icon" type="Texture2D" />
+ <argument index="2" name="label" type="String" />
+ <argument index="3" name="callback" type="Callable" />
+ <argument index="4" name="tag" type="Variant" default="null" />
+ <argument index="5" name="accelerator" type="int" enum="Key" default="0" />
+ <argument index="6" name="index" type="int" default="-1" />
+ <description>
+ Adds a new item with text [code]label[/code] and icon [code]icon[/code] to the global menu with ID [code]menu_root[/code].
+ [b]Note:[/b] This method is implemented on macOS.
+ [b]Supported system menu IDs:[/b]
+ [codeblock]
+ "" - Main menu (macOS).
+ "_dock" - Dock popup menu (macOS).
+ [/codeblock]
+ </description>
+ </method>
+ <method name="global_menu_add_icon_radio_check_item">
+ <return type="void" />
+ <argument index="0" name="menu_root" type="String" />
+ <argument index="1" name="icon" type="Texture2D" />
+ <argument index="2" name="label" type="String" />
+ <argument index="3" name="callback" type="Callable" />
+ <argument index="4" name="tag" type="Variant" default="null" />
+ <argument index="5" name="accelerator" type="int" enum="Key" default="0" />
+ <argument index="6" name="index" type="int" default="-1" />
+ <description>
+ Adds a new radio-checkable item with text [code]label[/code] and icon [code]icon[/code] to the global menu with ID [code]menu_root[/code].
+ [b]Note:[/b] Radio-checkable items just display a checkmark, but don't have any built-in checking behavior and must be checked/unchecked manually. See [method global_menu_set_item_checked] for more info on how to control it.
+ [b]Note:[/b] This method is implemented on macOS.
+ [b]Supported system menu IDs:[/b]
+ [codeblock]
+ "" - Main menu (macOS).
+ "_dock" - Dock popup menu (macOS).
+ [/codeblock]
</description>
</method>
<method name="global_menu_add_item">
@@ -145,13 +212,70 @@
<argument index="1" name="label" type="String" />
<argument index="2" name="callback" type="Callable" />
<argument index="3" name="tag" type="Variant" default="null" />
+ <argument index="4" name="accelerator" type="int" enum="Key" default="0" />
+ <argument index="5" name="index" type="int" default="-1" />
<description>
+ Adds a new item with text [code]label[/code] to the global menu with ID [code]menu_root[/code].
+ [b]Note:[/b] This method is implemented on macOS.
+ [b]Supported system menu IDs:[/b]
+ [codeblock]
+ "" - Main menu (macOS).
+ "_dock" - Dock popup menu (macOS).
+ [/codeblock]
+ </description>
+ </method>
+ <method name="global_menu_add_multistate_item">
+ <return type="void" />
+ <argument index="0" name="menu_root" type="String" />
+ <argument index="1" name="labe" type="String" />
+ <argument index="2" name="max_states" type="int" />
+ <argument index="3" name="default_state" type="int" />
+ <argument index="4" name="callback" type="Callable" />
+ <argument index="5" name="tag" type="Variant" default="null" />
+ <argument index="6" name="accelerator" type="int" enum="Key" default="0" />
+ <argument index="7" name="index" type="int" default="-1" />
+ <description>
+ Adds a new item with text [code]label[/code] to the global menu with ID [code]menu_root[/code].
+ 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].
+ [b]Note:[/b] This method is implemented on macOS.
+ [b]Supported system menu IDs:[/b]
+ [codeblock]
+ "" - Main menu (macOS).
+ "_dock" - Dock popup menu (macOS).
+ [/codeblock]
+ </description>
+ </method>
+ <method name="global_menu_add_radio_check_item">
+ <return type="void" />
+ <argument index="0" name="menu_root" type="String" />
+ <argument index="1" name="label" type="String" />
+ <argument index="2" name="callback" type="Callable" />
+ <argument index="3" name="tag" type="Variant" default="null" />
+ <argument index="4" name="accelerator" type="int" enum="Key" default="0" />
+ <argument index="5" name="index" type="int" default="-1" />
+ <description>
+ Adds a new radio-checkable item with text [code]label[/code] to the global menu with ID [code]menu_root[/code].
+ [b]Note:[/b] Radio-checkable items just display a checkmark, but don't have any built-in checking behavior and must be checked/unchecked manually. See [method global_menu_set_item_checked] for more info on how to control it.
+ [b]Note:[/b] This method is implemented on macOS.
+ [b]Supported system menu IDs:[/b]
+ [codeblock]
+ "" - Main menu (macOS).
+ "_dock" - Dock popup menu (macOS).
+ [/codeblock]
</description>
</method>
<method name="global_menu_add_separator">
<return type="void" />
<argument index="0" name="menu_root" type="String" />
+ <argument index="1" name="index" type="int" default="-1" />
<description>
+ Adds a separator between items to the global menu with ID [code]menu_root[/code]. Separators also occupy an index.
+ [b]Note:[/b] This method is implemented on macOS.
+ [b]Supported system menu IDs:[/b]
+ [codeblock]
+ "" - Main menu (macOS).
+ "_dock" - Dock popup menu (macOS).
+ [/codeblock]
</description>
</method>
<method name="global_menu_add_submenu_item">
@@ -159,41 +283,127 @@
<argument index="0" name="menu_root" type="String" />
<argument index="1" name="label" type="String" />
<argument index="2" name="submenu" type="String" />
+ <argument index="3" name="index" type="int" default="-1" />
<description>
+ Adds an item that will act as a submenu of the global menu [code]menu_root[/code]. The [code]submenu[/code] argument is the ID of the global menu root that will be shown when the item is clicked.
+ [b]Note:[/b] This method is implemented on macOS.
+ [b]Supported system menu IDs:[/b]
+ [codeblock]
+ "" - Main menu (macOS).
+ "_dock" - Dock popup menu (macOS).
+ [/codeblock]
</description>
</method>
<method name="global_menu_clear">
<return type="void" />
<argument index="0" name="menu_root" type="String" />
<description>
+ Removes all items from the global menu with ID [code]menu_root[/code].
+ [b]Note:[/b] This method is implemented on macOS.
+ [b]Supported system menu IDs:[/b]
+ [codeblock]
+ "" - Main menu (macOS).
+ "_dock" - Dock popup menu (macOS).
+ [/codeblock]
+ </description>
+ </method>
+ <method name="global_menu_get_item_accelerator" qualifiers="const">
+ <return type="int" enum="Key" />
+ <argument index="0" name="menu_root" type="String" />
+ <argument index="1" name="idx" type="int" />
+ <description>
+ 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.
+ [b]Note:[/b] This method is implemented on macOS.
</description>
</method>
- <method name="global_menu_get_item_callback">
+ <method name="global_menu_get_item_callback" qualifiers="const">
<return type="Callable" />
<argument index="0" name="menu_root" type="String" />
<argument index="1" name="idx" type="int" />
<description>
+ Returns the callback of the item at index [code]idx[/code].
+ [b]Note:[/b] This method is implemented on macOS.
+ </description>
+ </method>
+ <method name="global_menu_get_item_icon" qualifiers="const">
+ <return type="Texture2D" />
+ <argument index="0" name="menu_root" type="String" />
+ <argument index="1" name="idx" type="int" />
+ <description>
+ Returns the icon of the item at index [code]idx[/code].
+ [b]Note:[/b] This method is implemented on macOS.
+ </description>
+ </method>
+ <method name="global_menu_get_item_index_from_tag" qualifiers="const">
+ <return type="int" />
+ <argument index="0" name="menu_root" type="String" />
+ <argument index="1" name="tag" type="Variant" />
+ <description>
+ Returns the index of the item with the specified [code]tag[/code]. Index is automatically assigned to each item by the engine. Index can not be set manually.
+ [b]Note:[/b] This method is implemented on macOS.
+ </description>
+ </method>
+ <method name="global_menu_get_item_index_from_text" qualifiers="const">
+ <return type="int" />
+ <argument index="0" name="menu_root" type="String" />
+ <argument index="1" name="text" type="String" />
+ <description>
+ Returns the index of the item with the specified [code]text[/code]. Index is automatically assigned to each item by the engine. Index can not be set manually.
+ [b]Note:[/b] This method is implemented on macOS.
+ </description>
+ </method>
+ <method name="global_menu_get_item_max_states" qualifiers="const">
+ <return type="int" />
+ <argument index="0" name="menu_root" type="String" />
+ <argument index="1" name="idx" type="int" />
+ <description>
+ Returns number of states of an multistate item. See [method global_menu_add_multistate_item] for details.
+ [b]Note:[/b] This method is implemented on macOS.
</description>
</method>
- <method name="global_menu_get_item_submenu">
+ <method name="global_menu_get_item_state" qualifiers="const">
+ <return type="int" />
+ <argument index="0" name="menu_root" type="String" />
+ <argument index="1" name="idx" type="int" />
+ <description>
+ Returns the state of an multistate item. See [method global_menu_add_multistate_item] for details.
+ [b]Note:[/b] This method is implemented on macOS.
+ </description>
+ </method>
+ <method name="global_menu_get_item_submenu" qualifiers="const">
<return type="String" />
<argument index="0" name="menu_root" type="String" />
<argument index="1" name="idx" type="int" />
<description>
+ Returns the submenu ID of the item at index [code]idx[/code]. See [method global_menu_add_submenu_item] for more info on how to add a submenu.
+ [b]Note:[/b] This method is implemented on macOS.
</description>
</method>
- <method name="global_menu_get_item_tag">
+ <method name="global_menu_get_item_tag" qualifiers="const">
<return type="Variant" />
<argument index="0" name="menu_root" type="String" />
<argument index="1" name="idx" type="int" />
<description>
+ Returns the metadata of the specified item, which might be of any type. You can set it with [method global_menu_set_item_tag], which provides a simple way of assigning context data to items.
+ [b]Note:[/b] This method is implemented on macOS.
+ </description>
+ </method>
+ <method name="global_menu_get_item_text" qualifiers="const">
+ <return type="String" />
+ <argument index="0" name="menu_root" type="String" />
+ <argument index="1" name="idx" type="int" />
+ <description>
+ Returns the text of the item at index [code]idx[/code].
+ [b]Note:[/b] This method is implemented on macOS.
</description>
</method>
- <method name="global_menu_get_item_text">
+ <method name="global_menu_get_item_tooltip" qualifiers="const">
<return type="String" />
<argument index="0" name="menu_root" type="String" />
<argument index="1" name="idx" type="int" />
<description>
+ Returns the tooltip associated with the specified index index [code]idx[/code].
+ [b]Note:[/b] This method is implemented on macOS.
</description>
</method>
<method name="global_menu_is_item_checkable" qualifiers="const">
@@ -201,6 +411,8 @@
<argument index="0" name="menu_root" type="String" />
<argument index="1" name="idx" type="int" />
<description>
+ 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.
+ [b]Note:[/b] This method is implemented on macOS.
</description>
</method>
<method name="global_menu_is_item_checked" qualifiers="const">
@@ -208,6 +420,28 @@
<argument index="0" name="menu_root" type="String" />
<argument index="1" name="idx" type="int" />
<description>
+ Returns [code]true[/code] if the item at index [code]idx[/code] is checked.
+ [b]Note:[/b] This method is implemented on macOS.
+ </description>
+ </method>
+ <method name="global_menu_is_item_disabled" qualifiers="const">
+ <return type="bool" />
+ <argument index="0" name="menu_root" type="String" />
+ <argument index="1" name="idx" type="int" />
+ <description>
+ 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.
+ See [method global_menu_set_item_disabled] for more info on how to disable an item.
+ [b]Note:[/b] This method is implemented on macOS.
+ </description>
+ </method>
+ <method name="global_menu_is_item_radio_checkable" qualifiers="const">
+ <return type="bool" />
+ <argument index="0" name="menu_root" type="String" />
+ <argument index="1" name="idx" type="int" />
+ <description>
+ Returns [code]true[/code] if the item at index [code]idx[/code] has radio button-style checkability.
+ [b]Note:[/b] This is purely cosmetic; you must add the logic for checking/unchecking items in radio groups.
+ [b]Note:[/b] This method is implemented on macOS.
</description>
</method>
<method name="global_menu_remove_item">
@@ -215,6 +449,19 @@
<argument index="0" name="menu_root" type="String" />
<argument index="1" name="idx" type="int" />
<description>
+ Removes the item at index [code]idx[/code] from the global menu [code]menu_root[/code].
+ [b]Note:[/b] The indices of items after the removed item will be shifted by one.
+ [b]Note:[/b] This method is implemented on macOS.
+ </description>
+ </method>
+ <method name="global_menu_set_item_accelerator">
+ <return type="void" />
+ <argument index="0" name="menu_root" type="String" />
+ <argument index="1" name="idx" type="int" />
+ <argument index="2" name="keycode" type="int" enum="Key" />
+ <description>
+ Sets the accelerator of the item at index [code]idx[/code].
+ [b]Note:[/b] This method is implemented on macOS.
</description>
</method>
<method name="global_menu_set_item_callback">
@@ -223,6 +470,8 @@
<argument index="1" name="idx" type="int" />
<argument index="2" name="callback" type="Callable" />
<description>
+ Sets the callback of the item at index [code]idx[/code]. Callback is emitted when an item is pressed or its accelerator is activated.
+ [b]Note:[/b] This method is implemented on macOS.
</description>
</method>
<method name="global_menu_set_item_checkable">
@@ -231,6 +480,8 @@
<argument index="1" name="idx" type="int" />
<argument index="2" name="checkable" type="bool" />
<description>
+ 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.
+ [b]Note:[/b] This method is implemented on macOS.
</description>
</method>
<method name="global_menu_set_item_checked">
@@ -239,6 +490,60 @@
<argument index="1" name="idx" type="int" />
<argument index="2" name="checked" type="bool" />
<description>
+ Sets the checkstate status of the item at index [code]idx[/code].
+ [b]Note:[/b] This method is implemented on macOS.
+ </description>
+ </method>
+ <method name="global_menu_set_item_disabled">
+ <return type="void" />
+ <argument index="0" name="menu_root" type="String" />
+ <argument index="1" name="idx" type="int" />
+ <argument index="2" name="disabled" type="bool" />
+ <description>
+ 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.
+ [b]Note:[/b] This method is implemented on macOS.
+ </description>
+ </method>
+ <method name="global_menu_set_item_icon">
+ <return type="void" />
+ <argument index="0" name="menu_root" type="String" />
+ <argument index="1" name="idx" type="int" />
+ <argument index="2" name="icon" type="Texture2D" />
+ <description>
+ Replaces the [Texture2D] icon of the specified [code]idx[/code].
+ [b]Note:[/b] This method is implemented on macOS.
+ [b]Note:[/b] This method is not supported by macOS "_dock" menu items.
+ </description>
+ </method>
+ <method name="global_menu_set_item_max_states">
+ <return type="void" />
+ <argument index="0" name="menu_root" type="String" />
+ <argument index="1" name="idx" type="int" />
+ <argument index="2" name="max_states" type="int" />
+ <description>
+ Sets number of state of an multistate item. See [method global_menu_add_multistate_item] for details.
+ [b]Note:[/b] This method is implemented on macOS.
+ </description>
+ </method>
+ <method name="global_menu_set_item_radio_checkable">
+ <return type="void" />
+ <argument index="0" name="menu_root" type="String" />
+ <argument index="1" name="idx" type="int" />
+ <argument index="2" name="checkable" type="bool" />
+ <description>
+ 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
+ [b]Note:[/b] This is purely cosmetic; you must add the logic for checking/unchecking items in radio groups.
+ [b]Note:[/b] This method is implemented on macOS.
+ </description>
+ </method>
+ <method name="global_menu_set_item_state">
+ <return type="void" />
+ <argument index="0" name="menu_root" type="String" />
+ <argument index="1" name="idx" type="int" />
+ <argument index="2" name="state" type="int" />
+ <description>
+ Sets the state of an multistate item. See [method global_menu_add_multistate_item] for details.
+ [b]Note:[/b] This method is implemented on macOS.
</description>
</method>
<method name="global_menu_set_item_submenu">
@@ -247,6 +552,8 @@
<argument index="1" name="idx" type="int" />
<argument index="2" name="submenu" type="String" />
<description>
+ Sets the submenu of the item at index [code]idx[/code]. The submenu is the ID of a global menu root that would be shown when the item is clicked.
+ [b]Note:[/b] This method is implemented on macOS.
</description>
</method>
<method name="global_menu_set_item_tag">
@@ -255,6 +562,8 @@
<argument index="1" name="idx" type="int" />
<argument index="2" name="tag" type="Variant" />
<description>
+ Sets the metadata of an item, which may be of any type. You can later get it with [method global_menu_get_item_tag], which provides a simple way of assigning context data to items.
+ [b]Note:[/b] This method is implemented on macOS.
</description>
</method>
<method name="global_menu_set_item_text">
@@ -263,6 +572,18 @@
<argument index="1" name="idx" type="int" />
<argument index="2" name="text" type="String" />
<description>
+ Sets the text of the item at index [code]idx[/code].
+ [b]Note:[/b] This method is implemented on macOS.
+ </description>
+ </method>
+ <method name="global_menu_set_item_tooltip">
+ <return type="void" />
+ <argument index="0" name="menu_root" type="String" />
+ <argument index="1" name="idx" type="int" />
+ <argument index="2" name="tooltip" type="String" />
+ <description>
+ Sets the [String] tooltip of the item at the specified index [code]idx[/code].
+ [b]Note:[/b] This method is implemented on macOS.
</description>
</method>
<method name="has_feature" qualifiers="const">
@@ -349,13 +670,6 @@
<description>
</description>
</method>
- <method name="mouse_warp_to_position">
- <return type="void" />
- <argument index="0" name="position" type="Vector2i" />
- <description>
- Sets the mouse cursor position to the given [code]position[/code].
- </description>
- </method>
<method name="process_events">
<return type="void" />
<description>
@@ -531,6 +845,13 @@
[b]Note:[/b] This method is implemented on Android, iOS and UWP.
</description>
</method>
+ <method name="warp_mouse">
+ <return type="void" />
+ <argument index="0" name="position" type="Vector2i" />
+ <description>
+ Sets the mouse cursor position to the given [code]position[/code] relative to an origin at the upper left corner of the currently focused game Window Manager window.
+ </description>
+ </method>
<method name="window_attach_instance_id">
<return type="void" />
<argument index="0" name="instance_id" type="int" />
@@ -966,7 +1287,7 @@
Window can't be focused. No-focus window will ignore all input, except mouse clicks.
</constant>
<constant name="WINDOW_FLAG_POPUP" value="5" enum="WindowFlags">
- Window is part of menu or [OptionButton] dropdown. This flag can't be changed when window is visible. An active popup window will exclusivly receive all input, without stealing focus from its parent. Popup windows are automatically closed when uses click outside it, or when an application is switched. Popup window must have [constant WINDOW_FLAG_TRANSPARENT] set.
+ Window is part of menu or [OptionButton] dropdown. This flag can't be changed when window is visible. An active popup window will exclusively receive all input, without stealing focus from its parent. Popup windows are automatically closed when uses click outside it, or when an application is switched. Popup window must have [constant WINDOW_FLAG_TRANSPARENT] set.
</constant>
<constant name="WINDOW_FLAG_MAX" value="6" enum="WindowFlags">
</constant>
diff --git a/doc/classes/EditorFileSystemImportFormatSupportQuery.xml b/doc/classes/EditorFileSystemImportFormatSupportQuery.xml
new file mode 100644
index 0000000000..8431a3a7ef
--- /dev/null
+++ b/doc/classes/EditorFileSystemImportFormatSupportQuery.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<class name="EditorFileSystemImportFormatSupportQuery" inherits="RefCounted" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd">
+ <brief_description>
+ Used to query and configure import format support.
+ </brief_description>
+ <description>
+ This class is used to query and configure a certain import format. It is used in conjuntion with asset format import plugins.
+ </description>
+ <tutorials>
+ </tutorials>
+ <methods>
+ <method name="_get_file_extensions" qualifiers="virtual const">
+ <return type="PackedStringArray" />
+ <description>
+ Return the file extensions supported.
+ </description>
+ </method>
+ <method name="_is_active" qualifiers="virtual const">
+ <return type="bool" />
+ <description>
+ Return whether this importer is active.
+ </description>
+ </method>
+ <method name="_query" qualifiers="virtual const">
+ <return type="bool" />
+ <description>
+ Query support. Return false if import must not continue.
+ </description>
+ </method>
+ </methods>
+</class>
diff --git a/doc/classes/EditorSceneFormatImporterFBX.xml b/doc/classes/EditorSceneFormatImporterFBX.xml
deleted file mode 100644
index 21aebd4507..0000000000
--- a/doc/classes/EditorSceneFormatImporterFBX.xml
+++ /dev/null
@@ -1,32 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<class name="EditorSceneFormatImporterFBX" inherits="EditorSceneFormatImporter" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd">
- <brief_description>
- FBX 3D asset importer.
- </brief_description>
- <description>
- This is an FBX 3D asset importer with full support for most FBX features.
- If exporting a FBX scene from Autodesk Maya, use these FBX export settings:
- [codeblock]
- - Smoothing Groups
- - Smooth Mesh
- - Triangluate (for meshes with blend shapes)
- - Bake Animation
- - Resample All
- - Deformed Models
- - Skins
- - Blend Shapes
- - Curve Filters
- - Constant Key Reducer
- - Auto Tangents Only
- - *Do not check* Constraints (as it will break the file)
- - Can check Embed Media (embeds textures into the exported FBX file)
- - Note that when importing embedded media, the texture and mesh will be a single immutable file.
- - You will have to re-export then re-import the FBX if the texture has changed.
- - Units: Centimeters
- - Up Axis: Y
- - Binary format in FBX 2017
- [/codeblock]
- </description>
- <tutorials>
- </tutorials>
-</class>
diff --git a/doc/classes/Engine.xml b/doc/classes/Engine.xml
index af4df321c1..506992e3af 100644
--- a/doc/classes/Engine.xml
+++ b/doc/classes/Engine.xml
@@ -94,6 +94,17 @@
[/codeblock]
</description>
</method>
+ <method name="get_script_language" qualifiers="const">
+ <return type="ScriptLanguage" />
+ <argument index="0" name="index" type="int" />
+ <description>
+ </description>
+ </method>
+ <method name="get_script_language_count">
+ <return type="int" />
+ <description>
+ </description>
+ </method>
<method name="get_singleton" qualifiers="const">
<return type="Object" />
<argument index="0" name="name" type="StringName" />
@@ -167,6 +178,12 @@
Returns [code]true[/code] if the game is inside the fixed process and physics phase of the game loop.
</description>
</method>
+ <method name="register_script_language">
+ <return type="void" />
+ <argument index="0" name="language" type="ScriptLanguage" />
+ <description>
+ </description>
+ </method>
<method name="register_singleton">
<return type="void" />
<argument index="0" name="name" type="StringName" />
diff --git a/doc/classes/Environment.xml b/doc/classes/Environment.xml
index 90d774058b..e5e7efd315 100644
--- a/doc/classes/Environment.xml
+++ b/doc/classes/Environment.xml
@@ -207,21 +207,6 @@
</member>
<member name="sky_rotation" type="Vector3" setter="set_sky_rotation" getter="get_sky_rotation" default="Vector3(0, 0, 0)">
</member>
- <member name="ss_reflections_depth_tolerance" type="float" setter="set_ssr_depth_tolerance" getter="get_ssr_depth_tolerance" default="0.2">
- The depth tolerance for screen-space reflections.
- </member>
- <member name="ss_reflections_enabled" type="bool" setter="set_ssr_enabled" getter="is_ssr_enabled" default="false">
- If [code]true[/code], screen-space reflections are enabled. Screen-space reflections are more accurate than reflections from [VoxelGI]s or [ReflectionProbe]s, but are slower and can't reflect surfaces occluded by others.
- </member>
- <member name="ss_reflections_fade_in" type="float" setter="set_ssr_fade_in" getter="get_ssr_fade_in" default="0.15">
- The fade-in distance for screen-space reflections. Affects the area from the reflected material to the screen-space reflection). Only positive values are valid (negative values will be clamped to [code]0.0[/code]).
- </member>
- <member name="ss_reflections_fade_out" type="float" setter="set_ssr_fade_out" getter="get_ssr_fade_out" default="2.0">
- The fade-out distance for screen-space reflections. Affects the area from the screen-space reflection to the "global" reflection. Only positive values are valid (negative values will be clamped to [code]0.0[/code]).
- </member>
- <member name="ss_reflections_max_steps" type="int" setter="set_ssr_max_steps" getter="get_ssr_max_steps" default="64">
- The maximum number of steps for screen-space reflections. Higher values are slower.
- </member>
<member name="ssao_ao_channel_affect" type="float" setter="set_ssao_ao_channel_affect" getter="get_ssao_ao_channel_affect" default="0.0">
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.
</member>
@@ -264,6 +249,21 @@
<member name="ssil_sharpness" type="float" setter="set_ssil_sharpness" getter="get_ssil_sharpness" default="0.98">
The amount that the screen-space indirect lighting effect is allowed to blur over the edges of objects. Setting too high will result in aliasing around the edges of objects. Setting too low will make object edges appear blurry.
</member>
+ <member name="ssr_depth_tolerance" type="float" setter="set_ssr_depth_tolerance" getter="get_ssr_depth_tolerance" default="0.2">
+ The depth tolerance for screen-space reflections.
+ </member>
+ <member name="ssr_enabled" type="bool" setter="set_ssr_enabled" getter="is_ssr_enabled" default="false">
+ If [code]true[/code], screen-space reflections are enabled. Screen-space reflections are more accurate than reflections from [VoxelGI]s or [ReflectionProbe]s, but are slower and can't reflect surfaces occluded by others.
+ </member>
+ <member name="ssr_fade_in" type="float" setter="set_ssr_fade_in" getter="get_ssr_fade_in" default="0.15">
+ The fade-in distance for screen-space reflections. Affects the area from the reflected material to the screen-space reflection). Only positive values are valid (negative values will be clamped to [code]0.0[/code]).
+ </member>
+ <member name="ssr_fade_out" type="float" setter="set_ssr_fade_out" getter="get_ssr_fade_out" default="2.0">
+ The fade-out distance for screen-space reflections. Affects the area from the screen-space reflection to the "global" reflection. Only positive values are valid (negative values will be clamped to [code]0.0[/code]).
+ </member>
+ <member name="ssr_max_steps" type="int" setter="set_ssr_max_steps" getter="get_ssr_max_steps" default="64">
+ The maximum number of steps for screen-space reflections. Higher values are slower.
+ </member>
<member name="tonemap_exposure" type="float" setter="set_tonemap_exposure" getter="get_tonemap_exposure" default="1.0">
The default exposure used for tonemapping.
</member>
diff --git a/doc/classes/File.xml b/doc/classes/File.xml
index 29283e107d..0b4a8fa46e 100644
--- a/doc/classes/File.xml
+++ b/doc/classes/File.xml
@@ -74,7 +74,7 @@
[/codeblocks]
</description>
</method>
- <method name="file_exists" qualifiers="const">
+ <method name="file_exists" qualifiers="static">
<return type="bool" />
<argument index="0" name="path" type="String" />
<description>
diff --git a/doc/classes/Font.xml b/doc/classes/Font.xml
index f357cb05b5..dae42ddf34 100644
--- a/doc/classes/Font.xml
+++ b/doc/classes/Font.xml
@@ -194,7 +194,7 @@
<method name="get_rids" qualifiers="const">
<return type="Array" />
<description>
- Returns [Array] of valid [FontData] [RID]s, which can be passsed to the [TextServer] methods.
+ Returns [Array] of valid [FontData] [RID]s, which can be passed to the [TextServer] methods.
</description>
</method>
<method name="get_spacing" qualifiers="const">
diff --git a/doc/classes/FontData.xml b/doc/classes/FontData.xml
index 9344a1fe80..313e3e31fc 100644
--- a/doc/classes/FontData.xml
+++ b/doc/classes/FontData.xml
@@ -3,7 +3,7 @@
<brief_description>
Font source data and prerendered glyph cache, imported from dynamic or bitmap font.
Supported font formats:
- - Dynamic font importer: TrueType (.ttf), OpenType (.otf), WOFF (.woff), Type 1 (.pfb, .pfm).
+ - Dynamic font importer: TrueType (.ttf), OpenType (.otf), WOFF (.woff), WOFF2 (.woff2), Type 1 (.pfb, .pfm).
- Bitmap font importer: AngelCode BMFont (.fnt, .font), text and binary (version 3) format variants.
- Monospace image font importer: All supported image formats.
</brief_description>
@@ -318,7 +318,7 @@
<return type="int" enum="Error" />
<argument index="0" name="path" type="String" />
<description>
- Loads a TrueType (.ttf), OpenType (.otf), WOFF (.woff) or Type 1 (.pfb, .pfm) dynamic font from file [code]path[/code].
+ Loads a TrueType (.ttf), OpenType (.otf), WOFF (.woff), WOFF2 (.woff2) or Type 1 (.pfb, .pfm) dynamic font from file [code]path[/code].
[b]Warning:[/b] This method should only be used in the editor or in cases when you need to load external fonts at run-time, such as fonts located at the [code]user://[/code] directory.
</description>
</method>
diff --git a/doc/classes/HTTPRequest.xml b/doc/classes/HTTPRequest.xml
index 42047a68c8..641d73e333 100644
--- a/doc/classes/HTTPRequest.xml
+++ b/doc/classes/HTTPRequest.xml
@@ -247,7 +247,7 @@
<member name="max_redirects" type="int" setter="set_max_redirects" getter="get_max_redirects" default="8">
Maximum number of allowed redirects.
</member>
- <member name="timeout" type="int" setter="set_timeout" getter="get_timeout" default="0">
+ <member name="timeout" type="float" setter="set_timeout" getter="get_timeout" default="0.0">
</member>
<member name="use_threads" type="bool" setter="set_use_threads" getter="is_using_threads" default="false">
If [code]true[/code], multithreading is used to improve performance.
diff --git a/doc/classes/IP.xml b/doc/classes/IP.xml
index 7ecac8680a..569f7fe570 100644
--- a/doc/classes/IP.xml
+++ b/doc/classes/IP.xml
@@ -103,7 +103,7 @@
<constant name="RESOLVER_STATUS_ERROR" value="3" enum="ResolverStatus">
DNS hostname resolver status: Error.
</constant>
- <constant name="RESOLVER_MAX_QUERIES" value="32">
+ <constant name="RESOLVER_MAX_QUERIES" value="256">
Maximum number of concurrent DNS resolver queries allowed, [constant RESOLVER_INVALID_ID] is returned if exceeded.
</constant>
<constant name="RESOLVER_INVALID_ID" value="-1">
diff --git a/doc/classes/Image.xml b/doc/classes/Image.xml
index 35868563de..140015babf 100644
--- a/doc/classes/Image.xml
+++ b/doc/classes/Image.xml
@@ -153,7 +153,7 @@
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.
</description>
</method>
- <method name="detect_used_channels">
+ <method name="detect_used_channels" qualifiers="const">
<return type="int" enum="Image.UsedChannels" />
<argument index="0" name="source" type="int" enum="Image.CompressSource" default="0" />
<description>
diff --git a/doc/classes/Input.xml b/doc/classes/Input.xml
index 2cbcfb8d9b..c3552c9f62 100644
--- a/doc/classes/Input.xml
+++ b/doc/classes/Input.xml
@@ -58,7 +58,7 @@
<argument index="1" name="exact_match" type="bool" default="false" />
<description>
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.
- 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.
+ If [code]exact_match[/code] is [code]false[/code], it ignores additional input modifiers for [InputEventKey] and [InputEventMouseButton] events, and the direction for [InputEventJoypadMotion] events.
</description>
</method>
<method name="get_action_strength" qualifiers="const">
@@ -67,7 +67,7 @@
<argument index="1" name="exact_match" type="bool" default="false" />
<description>
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.
- 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.
+ If [code]exact_match[/code] is [code]false[/code], it ignores additional input modifiers for [InputEventKey] and [InputEventMouseButton] events, and the direction for [InputEventJoypadMotion] events.
</description>
</method>
<method name="get_axis" qualifiers="const">
@@ -186,7 +186,7 @@
<description>
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.
This is useful for code that needs to run only once when an action is pressed, instead of every frame while it's pressed.
- 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.
+ If [code]exact_match[/code] is [code]false[/code], it ignores additional input modifiers for [InputEventKey] and [InputEventMouseButton] events, and the direction for [InputEventJoypadMotion] events.
[b]Note:[/b] Due to keyboard ghosting, [method is_action_just_pressed] may return [code]false[/code] even if one of the action's keys is pressed. See [url=$DOCS_URL/tutorials/inputs/input_examples.html#keyboard-events]Input examples[/url] in the documentation for more information.
</description>
</method>
@@ -196,7 +196,7 @@
<argument index="1" name="exact_match" type="bool" default="false" />
<description>
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.
- 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.
+ If [code]exact_match[/code] is [code]false[/code], it ignores additional input modifiers for [InputEventKey] and [InputEventMouseButton] events, and the direction for [InputEventJoypadMotion] events.
</description>
</method>
<method name="is_action_pressed" qualifiers="const">
@@ -205,7 +205,7 @@
<argument index="1" name="exact_match" type="bool" default="false" />
<description>
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.
- 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.
+ If [code]exact_match[/code] is [code]false[/code], it ignores additional input modifiers for [InputEventKey] and [InputEventMouseButton] events, and the direction for [InputEventJoypadMotion] events.
[b]Note:[/b] Due to keyboard ghosting, [method is_action_pressed] may return [code]false[/code] even if one of the action's keys is pressed. See [url=$DOCS_URL/tutorials/inputs/input_examples.html#keyboard-events]Input examples[/url] in the documentation for more information.
</description>
</method>
@@ -379,11 +379,11 @@
[b]Note:[/b] It needs [code]VIBRATE[/code] permission for Android at export settings. iOS does not support duration.
</description>
</method>
- <method name="warp_mouse_position">
+ <method name="warp_mouse">
<return type="void" />
- <argument index="0" name="to" type="Vector2" />
+ <argument index="0" name="position" type="Vector2" />
<description>
- Sets the mouse position to the specified vector, provided in pixels and relative to an origin at the upper left corner of the game window.
+ Sets the mouse position to the specified vector, provided in pixels and relative to an origin at the upper left corner of the currently focused Window Manager game window.
Mouse position is clipped to the limits of the screen resolution, or to the limits of the game window if [enum MouseMode] is set to [code]MOUSE_MODE_CONFINED[/code] or [code]MOUSE_MODE_CONFINED_HIDDEN[/code].
</description>
</method>
diff --git a/doc/classes/InputEvent.xml b/doc/classes/InputEvent.xml
index cbed163f18..230ad04b33 100644
--- a/doc/classes/InputEvent.xml
+++ b/doc/classes/InputEvent.xml
@@ -33,7 +33,7 @@
<argument index="1" name="exact_match" type="bool" default="false" />
<description>
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].
- 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.
+ If [code]exact_match[/code] is [code]false[/code], it ignores additional input modifiers for [InputEventKey] and [InputEventMouseButton] events, and the direction for [InputEventJoypadMotion] events.
</description>
</method>
<method name="is_action" qualifiers="const">
@@ -42,7 +42,7 @@
<argument index="1" name="exact_match" type="bool" default="false" />
<description>
Returns [code]true[/code] if this input event matches a pre-defined action of any type.
- 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.
+ If [code]exact_match[/code] is [code]false[/code], it ignores additional input modifiers for [InputEventKey] and [InputEventMouseButton] events, and the direction for [InputEventJoypadMotion] events.
</description>
</method>
<method name="is_action_pressed" qualifiers="const">
@@ -52,7 +52,7 @@
<argument index="2" name="exact_match" type="bool" default="false" />
<description>
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].
- 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.
+ If [code]exact_match[/code] is [code]false[/code], it ignores additional input modifiers for [InputEventKey] and [InputEventMouseButton] events, and the direction for [InputEventJoypadMotion] events.
[b]Note:[/b] Due to keyboard ghosting, [method is_action_pressed] may return [code]false[/code] even if one of the action's keys is pressed. See [url=$DOCS_URL/tutorials/inputs/input_examples.html#keyboard-events]Input examples[/url] in the documentation for more information.
</description>
</method>
@@ -62,7 +62,7 @@
<argument index="1" name="exact_match" type="bool" default="false" />
<description>
Returns [code]true[/code] if the given action is released (i.e. not pressed). Not relevant for events of type [InputEventMouseMotion] or [InputEventScreenDrag].
- 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.
+ If [code]exact_match[/code] is [code]false[/code], it ignores additional input modifiers for [InputEventKey] and [InputEventMouseButton] events, and the direction for [InputEventJoypadMotion] events.
</description>
</method>
<method name="is_action_type" qualifiers="const">
@@ -83,7 +83,7 @@
<argument index="1" name="exact_match" type="bool" default="true" />
<description>
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.
- 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.
+ If [code]exact_match[/code] is [code]false[/code], it ignores additional input modifiers for [InputEventKey] and [InputEventMouseButton] events, and the direction for [InputEventJoypadMotion] events.
</description>
</method>
<method name="is_pressed" qualifiers="const">
diff --git a/doc/classes/InputEventJoypadButton.xml b/doc/classes/InputEventJoypadButton.xml
index 5066fb29d3..edbc5b1e0b 100644
--- a/doc/classes/InputEventJoypadButton.xml
+++ b/doc/classes/InputEventJoypadButton.xml
@@ -17,7 +17,7 @@
If [code]true[/code], the button's state is pressed. If [code]false[/code], the button's state is released.
</member>
<member name="pressure" type="float" setter="set_pressure" getter="get_pressure" default="0.0">
- Represents the pressure the user puts on the button with his finger, if the controller supports it. Ranges from [code]0[/code] to [code]1[/code].
+ Represents the pressure the user puts on the button with their finger, if the controller supports it. Ranges from [code]0[/code] to [code]1[/code].
</member>
</members>
</class>
diff --git a/doc/classes/InputMap.xml b/doc/classes/InputMap.xml
index ac5921404c..61d54e85f8 100644
--- a/doc/classes/InputMap.xml
+++ b/doc/classes/InputMap.xml
@@ -86,7 +86,7 @@
<argument index="2" name="exact_match" type="bool" default="false" />
<description>
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.
- 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.
+ If [code]exact_match[/code] is [code]false[/code], it ignores additional input modifiers for [InputEventKey] and [InputEventMouseButton] events, and the direction for [InputEventJoypadMotion] events.
</description>
</method>
<method name="get_actions">
diff --git a/doc/classes/MultiplayerPeerExtension.xml b/doc/classes/MultiplayerPeerExtension.xml
index c5fe04cb32..bd11c76039 100644
--- a/doc/classes/MultiplayerPeerExtension.xml
+++ b/doc/classes/MultiplayerPeerExtension.xml
@@ -1,8 +1,10 @@
<?xml version="1.0" encoding="UTF-8" ?>
<class name="MultiplayerPeerExtension" inherits="MultiplayerPeer" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd">
<brief_description>
+ Class that can be inherited to implement custom multiplayer API networking layers via GDExtension.
</brief_description>
<description>
+ This class is designed to be inherited from a GDExtension plugin to implement custom networking layers for the multiplayer API (such as WebRTC). All the methods below [b]must[/b] be implemented to have a working custom multiplayer implementation. See also [MultiplayerAPI].
</description>
<tutorials>
</tutorials>
@@ -10,16 +12,19 @@
<method name="_get_available_packet_count" qualifiers="virtual const">
<return type="int" />
<description>
+ Called when the available packet count is internally requested by the [MultiplayerAPI].
</description>
</method>
<method name="_get_connection_status" qualifiers="virtual const">
<return type="int" />
<description>
+ Called when the connection status is requested on the [MultiplayerPeer] (see [method MultiplayerPeer.get_connection_status]).
</description>
</method>
<method name="_get_max_packet_size" qualifiers="virtual const">
<return type="int" />
<description>
+ Called when the maximum allowed packet size (in bytes) is requested by the [MultiplayerAPI].
</description>
</method>
<method name="_get_packet" qualifiers="virtual">
@@ -27,41 +32,49 @@
<argument index="0" name="r_buffer" type="const uint8_t **" />
<argument index="1" name="r_buffer_size" type="int32_t*" />
<description>
+ Called when a packet needs to be received by the [MultiplayerAPI], with [code]p_buffer_size[/code] being the size of the binary [code]p_buffer[/code] in bytes.
</description>
</method>
<method name="_get_packet_peer" qualifiers="virtual const">
<return type="int" />
<description>
+ Called when the ID of the [MultiplayerPeer] who sent the most recent packet is requested (see [method MultiplayerPeer.get_packet_peer]).
</description>
</method>
<method name="_get_transfer_channel" qualifiers="virtual const">
<return type="int" />
<description>
+ Called when the transfer channel to use is read on this [MultiplayerPeer] (see [member MultiplayerPeer.transfer_channel]).
</description>
</method>
<method name="_get_transfer_mode" qualifiers="virtual const">
<return type="int" />
<description>
+ Called when the transfer mode to use is read on this [MultiplayerPeer] (see [member MultiplayerPeer.transfer_mode]).
</description>
</method>
<method name="_get_unique_id" qualifiers="virtual const">
<return type="int" />
<description>
+ Called when the unique ID of this [MultiplayerPeer] is requested (see [method MultiplayerPeer.get_unique_id]).
</description>
</method>
<method name="_is_refusing_new_connections" qualifiers="virtual const">
<return type="bool" />
<description>
+ Called when the "refuse new connections" status is requested on this [MultiplayerPeer] (see [member MultiplayerPeer.refuse_new_connections]).
</description>
</method>
<method name="_is_server" qualifiers="virtual const">
<return type="bool" />
<description>
+ Called when the "is server" status is requested on the [MultiplayerAPI]. See [method MultiplayerAPI.is_server].
</description>
</method>
<method name="_poll" qualifiers="virtual">
<return type="int" />
<description>
+ Called when the [MultiplayerAPI] is polled. See [method MultiplayerAPI.poll].
</description>
</method>
<method name="_put_packet" qualifiers="virtual">
@@ -69,30 +82,35 @@
<argument index="0" name="p_buffer" type="const uint8_t*" />
<argument index="1" name="p_buffer_size" type="int" />
<description>
+ Called when a packet needs to be sent by the [MultiplayerAPI], with [code]p_buffer_size[/code] being the size of the binary [code]p_buffer[/code] in bytes.
</description>
</method>
<method name="_set_refuse_new_connections" qualifiers="virtual">
<return type="void" />
<argument index="0" name="p_enable" type="bool" />
<description>
+ Called when the "refuse new connections" status is set on this [MultiplayerPeer] (see [member MultiplayerPeer.refuse_new_connections]).
</description>
</method>
<method name="_set_target_peer" qualifiers="virtual">
<return type="void" />
<argument index="0" name="p_peer" type="int" />
<description>
+ Called when the target peer to use is set for this [MultiplayerPeer] (see [method MultiplayerPeer.set_target_peer]).
</description>
</method>
<method name="_set_transfer_channel" qualifiers="virtual">
<return type="void" />
<argument index="0" name="p_channel" type="int" />
<description>
+ Called when the channel to use is set for this [MultiplayerPeer] (see [member MultiplayerPeer.transfer_channel]).
</description>
</method>
<method name="_set_transfer_mode" qualifiers="virtual">
<return type="void" />
<argument index="0" name="p_mode" type="int" />
<description>
+ Called when the transfer mode is set on this [MultiplayerPeer] (see [member MultiplayerPeer.transfer_mode]).
</description>
</method>
</methods>
diff --git a/doc/classes/Node.xml b/doc/classes/Node.xml
index 28b104e276..b1a6ed7740 100644
--- a/doc/classes/Node.xml
+++ b/doc/classes/Node.xml
@@ -483,10 +483,11 @@
[b]Note:[/b] Internal children can only be moved within their expected "internal range" (see [code]internal[/code] parameter in [method add_child]).
</description>
</method>
- <method name="print_stray_nodes">
+ <method name="print_orphan_nodes">
<return type="void" />
<description>
- Prints all stray nodes (nodes outside the [SceneTree]). Used for debugging. Works only in debug builds.
+ Prints all orphan nodes (nodes outside the [SceneTree]). Used for debugging.
+ [b]Note:[/b] [method print_orphan_nodes] only works in debug builds. When called in a project exported in release mode, [method print_orphan_nodes] will not print anything.
</description>
</method>
<method name="print_tree">
@@ -586,7 +587,7 @@
</description>
</method>
<method name="rpc" qualifiers="vararg">
- <return type="Variant" />
+ <return type="void" />
<argument index="0" name="method" type="StringName" />
<description>
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. Returns an empty [Variant].
@@ -605,7 +606,7 @@
</description>
</method>
<method name="rpc_id" qualifiers="vararg">
- <return type="Variant" />
+ <return type="void" />
<argument index="0" name="peer_id" type="int" />
<argument index="1" name="method" type="StringName" />
<description>
diff --git a/doc/classes/Object.xml b/doc/classes/Object.xml
index a57101b62d..f7a3be48cf 100644
--- a/doc/classes/Object.xml
+++ b/doc/classes/Object.xml
@@ -53,7 +53,8 @@
<method name="_init" qualifiers="virtual">
<return type="void" />
<description>
- Called when the object is initialized.
+ Called when the object is initialized in memory. Can be defined to take in parameters, that are passed in when constructing.
+ [b]Note:[/b] If [method _init] is defined with required parameters, then explicit construction is the only valid means of creating an Object of the class. If any other means (such as [method PackedScene.instantiate]) is used, then initialization will fail.
</description>
</method>
<method name="_notification" qualifiers="virtual">
@@ -106,7 +107,7 @@
</description>
</method>
<method name="call_deferred" qualifiers="vararg">
- <return type="void" />
+ <return type="Variant" />
<argument index="0" name="method" type="StringName" />
<description>
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:
@@ -300,7 +301,7 @@
</description>
</method>
<method name="emit_signal" qualifiers="vararg">
- <return type="void" />
+ <return type="int" enum="Error" />
<argument index="0" name="signal" type="StringName" />
<description>
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:
@@ -365,8 +366,10 @@
<method name="get_meta" qualifiers="const">
<return type="Variant" />
<argument index="0" name="name" type="StringName" />
+ <argument index="1" name="default" type="Variant" default="null" />
<description>
Returns the object's metadata entry for the given [code]name[/code].
+ Throws error if the entry does not exist, unless [code]default[/code] is not [code]null[/code] (in which case the default value will be returned).
</description>
</method>
<method name="get_meta_list" qualifiers="const">
diff --git a/doc/classes/PortableCompressedTexture2D.xml b/doc/classes/PortableCompressedTexture2D.xml
new file mode 100644
index 0000000000..aad72bbb48
--- /dev/null
+++ b/doc/classes/PortableCompressedTexture2D.xml
@@ -0,0 +1,79 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<class name="PortableCompressedTexture2D" inherits="Texture2D" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd">
+ <brief_description>
+ Provides a compressed texture for disk and/or VRAM in a way that is portable.
+ </brief_description>
+ <description>
+ This class allows storing compressed textures as self contained (not imported) resources.
+ For 2D usage (compressed on disk, uncompressed on VRAM), the lossy and lossless modes are recommended. For 3D usage (compressed on VRAM) it depends on the target platform.
+ If you intend to only use desktop, S3TC or BPTC are recommended. For only mobile, ETC2 is recommended.
+ For portable, self contained 3D textures that work on both desktop and mobile, Basis Universal is recommended (although it has a small quality cost and longer compression time as a tradeoff).
+ This resource is intended to be created from code.
+ </description>
+ <tutorials>
+ </tutorials>
+ <methods>
+ <method name="create_from_image">
+ <return type="void" />
+ <argument index="0" name="image" type="Image" />
+ <argument index="1" name="compression_mode" type="int" enum="PortableCompressedTexture2D.CompressionMode" />
+ <argument index="2" name="normal_map" type="bool" default="false" />
+ <argument index="3" name="lossy_quality" type="float" default="0.8" />
+ <description>
+ Initializes the compressed texture from a base image. The compression mode must be provided.
+ If this image will be used as a normal map, the "normal map" flag is recommended, to ensure optimum quality.
+ If lossy compression is requested, the quality setting can optionally be provided. This maps to Lossy WEBP compression quality.
+ </description>
+ </method>
+ <method name="get_compression_mode" qualifiers="const">
+ <return type="int" enum="PortableCompressedTexture2D.CompressionMode" />
+ <description>
+ Return the compression mode used (valid after initialized).
+ </description>
+ </method>
+ <method name="get_format" qualifiers="const">
+ <return type="int" enum="Image.Format" />
+ <description>
+ Return the image format used (valid after initialized).
+ </description>
+ </method>
+ <method name="is_keeping_all_compressed_buffers" qualifiers="static">
+ <return type="bool" />
+ <description>
+ Return whether the flag is overridden for all textures of this type.
+ </description>
+ </method>
+ <method name="set_keep_all_compressed_buffers" qualifiers="static">
+ <return type="void" />
+ <argument index="0" name="keep" type="bool" />
+ <description>
+ Overrides the flag globally for all textures of this type. This is used primarily by the editor.
+ </description>
+ </method>
+ </methods>
+ <members>
+ <member name="_data" type="PackedByteArray" setter="_set_data" getter="_get_data" default="PackedByteArray()">
+ </member>
+ <member name="keep_compressed_buffer" type="bool" setter="set_keep_compressed_buffer" getter="is_keeping_compressed_buffer" default="false">
+ When running on the editor, this class will keep the source compressed data in memory. Otherwise, the source compressed data is lost after loading and the resource can't be re saved.
+ This flag allows to keep the compressed data in memory if you intend it to persist after loading.
+ </member>
+ <member name="size_override" type="Vector2" setter="set_size_override" getter="get_size_override" default="Vector2(0, 0)">
+ Allow overriding the texture size (for 2D only).
+ </member>
+ </members>
+ <constants>
+ <constant name="COMPRESSION_MODE_LOSSLESS" value="0" enum="CompressionMode">
+ </constant>
+ <constant name="COMPRESSION_MODE_LOSSY" value="1" enum="CompressionMode">
+ </constant>
+ <constant name="COMPRESSION_MODE_BASIS_UNIVERSAL" value="2" enum="CompressionMode">
+ </constant>
+ <constant name="COMPRESSION_MODE_S3TC" value="3" enum="CompressionMode">
+ </constant>
+ <constant name="COMPRESSION_MODE_ETC2" value="4" enum="CompressionMode">
+ </constant>
+ <constant name="COMPRESSION_MODE_BPTC" value="5" enum="CompressionMode">
+ </constant>
+ </constants>
+</class>
diff --git a/doc/classes/ProjectSettings.xml b/doc/classes/ProjectSettings.xml
index a8b4129061..5e43c4a4cf 100644
--- a/doc/classes/ProjectSettings.xml
+++ b/doc/classes/ProjectSettings.xml
@@ -553,6 +553,14 @@
<member name="editor/script/templates_search_path" type="String" setter="" getter="" default="&quot;res://script_templates&quot;">
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.
</member>
+ <member name="filesystem/import/blender/enabled" type="bool" setter="" getter="" default="true">
+ If [code]true[/code], Blender 3D scene files with the [code].blend[/code] extension will be imported by converting them to glTF 2.0.
+ This requires configuring a path to a Blender executable in the editor settings at [code]filesystem/import/blender/blender3_path[/code]. Blender 3.0 or later is required.
+ </member>
+ <member name="filesystem/import/fbx/enabled" type="bool" setter="" getter="" default="true">
+ If [code]true[/code], Autodesk FBX 3D scene files with the [code].fbx[/code] extension will be imported by converting them to glTF 2.0.
+ This requires configuring a path to a FBX2glTF executable in the editor settings at [code]filesystem/import/fbx/fbx2gltf_path[/code].
+ </member>
<member name="gui/common/default_scroll_deadzone" type="int" setter="" getter="" default="0">
Default value for [member ScrollContainer.scroll_deadzone], which will be used for all [ScrollContainer]s unless overridden.
</member>
@@ -1928,7 +1936,7 @@
Specify the default reference space.
</member>
<member name="xr/openxr/view_configuration" type="int" setter="" getter="" default="&quot;1&quot;">
- Specify the view configuration with which to configure OpenXR settting up either Mono or Stereo rendering.
+ Specify the view configuration with which to configure OpenXR setting up either Mono or Stereo rendering.
</member>
<member name="xr/shaders/enabled" type="bool" setter="" getter="" default="false">
If [code]true[/code], Godot will compile shaders required for XR.
diff --git a/doc/classes/Range.xml b/doc/classes/Range.xml
index 9743d969ca..df6efd155a 100644
--- a/doc/classes/Range.xml
+++ b/doc/classes/Range.xml
@@ -11,7 +11,7 @@
<methods>
<method name="_value_changed" qualifiers="virtual">
<return type="void" />
- <argument index="0" name="" type="float" />
+ <argument index="0" name="new_value" type="float" />
<description>
Called when the [Range]'s value is changed (following the same conditions as [signal value_changed]).
</description>
diff --git a/doc/classes/ReflectionProbe.xml b/doc/classes/ReflectionProbe.xml
index debbfd8d5d..ff66a89cb7 100644
--- a/doc/classes/ReflectionProbe.xml
+++ b/doc/classes/ReflectionProbe.xml
@@ -5,7 +5,7 @@
</brief_description>
<description>
Captures its surroundings as a cubemap, and stores versions of it with increasing levels of blur to simulate different material roughnesses.
- The [ReflectionProbe] is used to create high-quality reflections at a low performance cost (when [member update_mode] is [constant UPDATE_ONCE]). [ReflectionProbe]s can be blended together and with the rest of the scene smoothly. [ReflectionProbe]s can also be combined with [VoxelGI], SDFGI ([member Environment.sdfgi_enabled]) and screen-space reflections ([member Environment.ss_reflections_enabled]) to get more accurate reflections in specific areas. [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 as-is.
+ The [ReflectionProbe] is used to create high-quality reflections at a low performance cost (when [member update_mode] is [constant UPDATE_ONCE]). [ReflectionProbe]s can be blended together and with the rest of the scene smoothly. [ReflectionProbe]s can also be combined with [VoxelGI], SDFGI ([member Environment.sdfgi_enabled]) and screen-space reflections ([member Environment.ssr_enabled]) to get more accurate reflections in specific areas. [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 as-is.
[b]Note:[/b] Unlike [VoxelGI] and SDFGI, [ReflectionProbe]s only source their environment from a [WorldEnvironment] node. If you specify an [Environment] resource within a [Camera3D] node, it will be ignored by the [ReflectionProbe]. This can lead to incorrect lighting within the [ReflectionProbe].
</description>
<tutorials>
diff --git a/doc/classes/SceneTree.xml b/doc/classes/SceneTree.xml
index f3dfc727b0..77023d2126 100644
--- a/doc/classes/SceneTree.xml
+++ b/doc/classes/SceneTree.xml
@@ -14,7 +14,7 @@
</tutorials>
<methods>
<method name="call_group" qualifiers="vararg">
- <return type="Variant" />
+ <return type="void" />
<argument index="0" name="group" type="StringName" />
<argument index="1" name="method" type="StringName" />
<description>
@@ -24,7 +24,7 @@
</description>
</method>
<method name="call_group_flags" qualifiers="vararg">
- <return type="Variant" />
+ <return type="void" />
<argument index="0" name="flags" type="int" />
<argument index="1" name="group" type="StringName" />
<argument index="2" name="method" type="StringName" />
diff --git a/doc/classes/ScriptExtension.xml b/doc/classes/ScriptExtension.xml
new file mode 100644
index 0000000000..91fa6206d7
--- /dev/null
+++ b/doc/classes/ScriptExtension.xml
@@ -0,0 +1,173 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<class name="ScriptExtension" inherits="Script" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd">
+ <brief_description>
+ </brief_description>
+ <description>
+ </description>
+ <tutorials>
+ </tutorials>
+ <methods>
+ <method name="_can_instantiate" qualifiers="virtual const">
+ <return type="bool" />
+ <description>
+ </description>
+ </method>
+ <method name="_editor_can_reload_from_file" qualifiers="virtual">
+ <return type="bool" />
+ <description>
+ </description>
+ </method>
+ <method name="_get_base_script" qualifiers="virtual const">
+ <return type="Script" />
+ <description>
+ </description>
+ </method>
+ <method name="_get_constants" qualifiers="virtual const">
+ <return type="Dictionary" />
+ <description>
+ </description>
+ </method>
+ <method name="_get_documentation" qualifiers="virtual const">
+ <return type="Dictionary[]" />
+ <description>
+ </description>
+ </method>
+ <method name="_get_instance_base_type" qualifiers="virtual const">
+ <return type="StringName" />
+ <description>
+ </description>
+ </method>
+ <method name="_get_language" qualifiers="virtual const">
+ <return type="ScriptLanguage" />
+ <description>
+ </description>
+ </method>
+ <method name="_get_member_line" qualifiers="virtual const">
+ <return type="int" />
+ <argument index="0" name="member" type="StringName" />
+ <description>
+ </description>
+ </method>
+ <method name="_get_members" qualifiers="virtual const">
+ <return type="StringName[]" />
+ <description>
+ </description>
+ </method>
+ <method name="_get_method_info" qualifiers="virtual const">
+ <return type="Dictionary" />
+ <argument index="0" name="method" type="StringName" />
+ <description>
+ </description>
+ </method>
+ <method name="_get_property_default_value" qualifiers="virtual const">
+ <return type="Variant" />
+ <argument index="0" name="property" type="StringName" />
+ <description>
+ </description>
+ </method>
+ <method name="_get_rpc_methods" qualifiers="virtual const">
+ <return type="Dictionary[]" />
+ <description>
+ </description>
+ </method>
+ <method name="_get_script_method_list" qualifiers="virtual const">
+ <return type="Dictionary[]" />
+ <description>
+ </description>
+ </method>
+ <method name="_get_script_property_list" qualifiers="virtual const">
+ <return type="Dictionary[]" />
+ <description>
+ </description>
+ </method>
+ <method name="_get_script_signal_list" qualifiers="virtual const">
+ <return type="Dictionary[]" />
+ <description>
+ </description>
+ </method>
+ <method name="_get_source_code" qualifiers="virtual const">
+ <return type="String" />
+ <description>
+ </description>
+ </method>
+ <method name="_has_method" qualifiers="virtual const">
+ <return type="bool" />
+ <argument index="0" name="method" type="StringName" />
+ <description>
+ </description>
+ </method>
+ <method name="_has_script_signal" qualifiers="virtual const">
+ <return type="bool" />
+ <argument index="0" name="signal" type="StringName" />
+ <description>
+ </description>
+ </method>
+ <method name="_has_source_code" qualifiers="virtual const">
+ <return type="bool" />
+ <description>
+ </description>
+ </method>
+ <method name="_inherits_script" qualifiers="virtual const">
+ <return type="bool" />
+ <argument index="0" name="script" type="Script" />
+ <description>
+ </description>
+ </method>
+ <method name="_instance_create" qualifiers="virtual const">
+ <return type="void*" />
+ <argument index="0" name="for_object" type="Object" />
+ <description>
+ </description>
+ </method>
+ <method name="_instance_has" qualifiers="virtual const">
+ <return type="bool" />
+ <argument index="0" name="object" type="Object" />
+ <description>
+ </description>
+ </method>
+ <method name="_is_placeholder_fallback_enabled" qualifiers="virtual const">
+ <return type="bool" />
+ <description>
+ </description>
+ </method>
+ <method name="_is_tool" qualifiers="virtual const">
+ <return type="bool" />
+ <description>
+ </description>
+ </method>
+ <method name="_is_valid" qualifiers="virtual const">
+ <return type="bool" />
+ <description>
+ </description>
+ </method>
+ <method name="_placeholder_erased" qualifiers="virtual">
+ <return type="void" />
+ <argument index="0" name="placeholder" type="void*" />
+ <description>
+ </description>
+ </method>
+ <method name="_placeholder_instance_create" qualifiers="virtual const">
+ <return type="void*" />
+ <argument index="0" name="for_object" type="Object" />
+ <description>
+ </description>
+ </method>
+ <method name="_reload" qualifiers="virtual">
+ <return type="int" enum="Error" />
+ <argument index="0" name="keep_state" type="bool" />
+ <description>
+ </description>
+ </method>
+ <method name="_set_source_code" qualifiers="virtual">
+ <return type="void" />
+ <argument index="0" name="code" type="String" />
+ <description>
+ </description>
+ </method>
+ <method name="_update_exports" qualifiers="virtual">
+ <return type="void" />
+ <description>
+ </description>
+ </method>
+ </methods>
+</class>
diff --git a/doc/classes/ScriptLanguage.xml b/doc/classes/ScriptLanguage.xml
new file mode 100644
index 0000000000..b229e461f5
--- /dev/null
+++ b/doc/classes/ScriptLanguage.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<class name="ScriptLanguage" inherits="Object" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd">
+ <brief_description>
+ </brief_description>
+ <description>
+ </description>
+ <tutorials>
+ </tutorials>
+</class>
diff --git a/doc/classes/ScriptLanguageExtension.xml b/doc/classes/ScriptLanguageExtension.xml
new file mode 100644
index 0000000000..7225d93030
--- /dev/null
+++ b/doc/classes/ScriptLanguageExtension.xml
@@ -0,0 +1,404 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<class name="ScriptLanguageExtension" inherits="ScriptLanguage" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd">
+ <brief_description>
+ </brief_description>
+ <description>
+ </description>
+ <tutorials>
+ </tutorials>
+ <methods>
+ <method name="_add_global_constant" qualifiers="virtual">
+ <return type="void" />
+ <argument index="0" name="name" type="StringName" />
+ <argument index="1" name="value" type="Variant" />
+ <description>
+ </description>
+ </method>
+ <method name="_add_named_global_constant" qualifiers="virtual">
+ <return type="void" />
+ <argument index="0" name="name" type="StringName" />
+ <argument index="1" name="value" type="Variant" />
+ <description>
+ </description>
+ </method>
+ <method name="_alloc_instance_binding_data" qualifiers="virtual">
+ <return type="void*" />
+ <argument index="0" name="object" type="Object" />
+ <description>
+ </description>
+ </method>
+ <method name="_auto_indent_code" qualifiers="virtual const">
+ <return type="String" />
+ <argument index="0" name="code" type="String" />
+ <argument index="1" name="from_line" type="int" />
+ <argument index="2" name="to_line" type="int" />
+ <description>
+ </description>
+ </method>
+ <method name="_can_inherit_from_file" qualifiers="virtual const">
+ <return type="bool" />
+ <description>
+ </description>
+ </method>
+ <method name="_complete_code" qualifiers="virtual const">
+ <return type="Dictionary" />
+ <argument index="0" name="code" type="String" />
+ <argument index="1" name="path" type="String" />
+ <argument index="2" name="owner" type="Object" />
+ <description>
+ </description>
+ </method>
+ <method name="_create_script" qualifiers="virtual const">
+ <return type="Object" />
+ <description>
+ </description>
+ </method>
+ <method name="_debug_get_current_stack_info" qualifiers="virtual">
+ <return type="Dictionary[]" />
+ <description>
+ </description>
+ </method>
+ <method name="_debug_get_error" qualifiers="virtual const">
+ <return type="String" />
+ <description>
+ </description>
+ </method>
+ <method name="_debug_get_globals" qualifiers="virtual">
+ <return type="Dictionary" />
+ <argument index="0" name="max_subitems" type="int" />
+ <argument index="1" name="max_depth" type="int" />
+ <description>
+ </description>
+ </method>
+ <method name="_debug_get_stack_level_count" qualifiers="virtual const">
+ <return type="int" />
+ <description>
+ </description>
+ </method>
+ <method name="_debug_get_stack_level_function" qualifiers="virtual const">
+ <return type="String" />
+ <argument index="0" name="level" type="int" />
+ <description>
+ </description>
+ </method>
+ <method name="_debug_get_stack_level_instance" qualifiers="virtual">
+ <return type="void*" />
+ <argument index="0" name="level" type="int" />
+ <description>
+ </description>
+ </method>
+ <method name="_debug_get_stack_level_line" qualifiers="virtual const">
+ <return type="int" />
+ <argument index="0" name="level" type="int" />
+ <description>
+ </description>
+ </method>
+ <method name="_debug_get_stack_level_locals" qualifiers="virtual">
+ <return type="Dictionary" />
+ <argument index="0" name="level" type="int" />
+ <argument index="1" name="max_subitems" type="int" />
+ <argument index="2" name="max_depth" type="int" />
+ <description>
+ </description>
+ </method>
+ <method name="_debug_get_stack_level_members" qualifiers="virtual">
+ <return type="Dictionary" />
+ <argument index="0" name="level" type="int" />
+ <argument index="1" name="max_subitems" type="int" />
+ <argument index="2" name="max_depth" type="int" />
+ <description>
+ </description>
+ </method>
+ <method name="_debug_parse_stack_level_expression" qualifiers="virtual">
+ <return type="String" />
+ <argument index="0" name="level" type="int" />
+ <argument index="1" name="expression" type="String" />
+ <argument index="2" name="max_subitems" type="int" />
+ <argument index="3" name="max_depth" type="int" />
+ <description>
+ </description>
+ </method>
+ <method name="_execute_file" qualifiers="virtual">
+ <return type="int" enum="Error" />
+ <argument index="0" name="path" type="String" />
+ <description>
+ </description>
+ </method>
+ <method name="_find_function" qualifiers="virtual const">
+ <return type="int" />
+ <argument index="0" name="class_name" type="String" />
+ <argument index="1" name="function_name" type="String" />
+ <description>
+ </description>
+ </method>
+ <method name="_finish" qualifiers="virtual">
+ <return type="void" />
+ <description>
+ </description>
+ </method>
+ <method name="_frame" qualifiers="virtual">
+ <return type="void" />
+ <description>
+ </description>
+ </method>
+ <method name="_free_instance_binding_data" qualifiers="virtual">
+ <return type="void" />
+ <argument index="0" name="data" type="void*" />
+ <description>
+ </description>
+ </method>
+ <method name="_get_built_in_templates" qualifiers="virtual const">
+ <return type="Dictionary[]" />
+ <argument index="0" name="object" type="StringName" />
+ <description>
+ </description>
+ </method>
+ <method name="_get_comment_delimiters" qualifiers="virtual const">
+ <return type="PackedStringArray" />
+ <description>
+ </description>
+ </method>
+ <method name="_get_extension" qualifiers="virtual const">
+ <return type="String" />
+ <description>
+ </description>
+ </method>
+ <method name="_get_global_class_name" qualifiers="virtual const">
+ <return type="Dictionary" />
+ <argument index="0" name="path" type="String" />
+ <description>
+ </description>
+ </method>
+ <method name="_get_name" qualifiers="virtual const">
+ <return type="String" />
+ <description>
+ </description>
+ </method>
+ <method name="_get_public_constants" qualifiers="virtual const">
+ <return type="Dictionary" />
+ <description>
+ </description>
+ </method>
+ <method name="_get_public_functions" qualifiers="virtual const">
+ <return type="Dictionary[]" />
+ <description>
+ </description>
+ </method>
+ <method name="_get_recognized_extensions" qualifiers="virtual const">
+ <return type="PackedStringArray" />
+ <description>
+ </description>
+ </method>
+ <method name="_get_reserved_words" qualifiers="virtual const">
+ <return type="PackedStringArray" />
+ <description>
+ </description>
+ </method>
+ <method name="_get_string_delimiters" qualifiers="virtual const">
+ <return type="PackedStringArray" />
+ <description>
+ </description>
+ </method>
+ <method name="_get_type" qualifiers="virtual const">
+ <return type="String" />
+ <description>
+ </description>
+ </method>
+ <method name="_handles_global_class_type" qualifiers="virtual const">
+ <return type="bool" />
+ <argument index="0" name="type" type="String" />
+ <description>
+ </description>
+ </method>
+ <method name="_has_named_classes" qualifiers="virtual const">
+ <return type="bool" />
+ <description>
+ </description>
+ </method>
+ <method name="_init" qualifiers="virtual">
+ <return type="void" />
+ <description>
+ </description>
+ </method>
+ <method name="_is_control_flow_keyword" qualifiers="virtual const">
+ <return type="bool" />
+ <argument index="0" name="keyword" type="String" />
+ <description>
+ </description>
+ </method>
+ <method name="_is_using_templates" qualifiers="virtual">
+ <return type="bool" />
+ <description>
+ </description>
+ </method>
+ <method name="_lookup_code" qualifiers="virtual const">
+ <return type="Dictionary" />
+ <argument index="0" name="code" type="String" />
+ <argument index="1" name="symbol" type="String" />
+ <argument index="2" name="path" type="String" />
+ <argument index="3" name="owner" type="Object" />
+ <description>
+ </description>
+ </method>
+ <method name="_make_function" qualifiers="virtual const">
+ <return type="String" />
+ <argument index="0" name="class_name" type="String" />
+ <argument index="1" name="function_name" type="String" />
+ <argument index="2" name="function_args" type="PackedStringArray" />
+ <description>
+ </description>
+ </method>
+ <method name="_make_template" qualifiers="virtual const">
+ <return type="Script" />
+ <argument index="0" name="template" type="String" />
+ <argument index="1" name="class_name" type="String" />
+ <argument index="2" name="base_class_name" type="String" />
+ <description>
+ </description>
+ </method>
+ <method name="_open_in_external_editor" qualifiers="virtual">
+ <return type="int" enum="Error" />
+ <argument index="0" name="script" type="Script" />
+ <argument index="1" name="line" type="int" />
+ <argument index="2" name="column" type="int" />
+ <description>
+ </description>
+ </method>
+ <method name="_overrides_external_editor" qualifiers="virtual">
+ <return type="bool" />
+ <description>
+ </description>
+ </method>
+ <method name="_profiling_get_accumulated_data" qualifiers="virtual">
+ <return type="int" />
+ <argument index="0" name="info_array" type="ScriptLanguageExtensionProfilingInfo*" />
+ <argument index="1" name="info_max" type="int" />
+ <description>
+ </description>
+ </method>
+ <method name="_profiling_get_frame_data" qualifiers="virtual">
+ <return type="int" />
+ <argument index="0" name="info_array" type="ScriptLanguageExtensionProfilingInfo*" />
+ <argument index="1" name="info_max" type="int" />
+ <description>
+ </description>
+ </method>
+ <method name="_profiling_start" qualifiers="virtual">
+ <return type="void" />
+ <description>
+ </description>
+ </method>
+ <method name="_profiling_stop" qualifiers="virtual">
+ <return type="void" />
+ <description>
+ </description>
+ </method>
+ <method name="_refcount_decremented_instance_binding" qualifiers="virtual">
+ <return type="bool" />
+ <argument index="0" name="object" type="Object" />
+ <description>
+ </description>
+ </method>
+ <method name="_refcount_incremented_instance_binding" qualifiers="virtual">
+ <return type="void" />
+ <argument index="0" name="object" type="Object" />
+ <description>
+ </description>
+ </method>
+ <method name="_reload_all_scripts" qualifiers="virtual">
+ <return type="void" />
+ <description>
+ </description>
+ </method>
+ <method name="_reload_tool_script" qualifiers="virtual">
+ <return type="void" />
+ <argument index="0" name="script" type="Script" />
+ <argument index="1" name="soft_reload" type="bool" />
+ <description>
+ </description>
+ </method>
+ <method name="_remove_named_global_constant" qualifiers="virtual">
+ <return type="void" />
+ <argument index="0" name="name" type="StringName" />
+ <description>
+ </description>
+ </method>
+ <method name="_supports_builtin_mode" qualifiers="virtual const">
+ <return type="bool" />
+ <description>
+ </description>
+ </method>
+ <method name="_supports_documentation" qualifiers="virtual const">
+ <return type="bool" />
+ <description>
+ </description>
+ </method>
+ <method name="_thread_enter" qualifiers="virtual">
+ <return type="void" />
+ <description>
+ </description>
+ </method>
+ <method name="_thread_exit" qualifiers="virtual">
+ <return type="void" />
+ <description>
+ </description>
+ </method>
+ <method name="_validate" qualifiers="virtual const">
+ <return type="Dictionary" />
+ <argument index="0" name="script" type="String" />
+ <argument index="1" name="path" type="String" />
+ <argument index="2" name="validate_functions" type="bool" />
+ <argument index="3" name="validate_errors" type="bool" />
+ <argument index="4" name="validate_warnings" type="bool" />
+ <argument index="5" name="validate_safe_lines" type="bool" />
+ <description>
+ </description>
+ </method>
+ <method name="_validate_path" qualifiers="virtual const">
+ <return type="String" />
+ <argument index="0" name="path" type="String" />
+ <description>
+ </description>
+ </method>
+ </methods>
+ <constants>
+ <constant name="LOOKUP_RESULT_SCRIPT_LOCATION" value="0" enum="LookupResultType">
+ </constant>
+ <constant name="LOOKUP_RESULT_CLASS" value="1" enum="LookupResultType">
+ </constant>
+ <constant name="LOOKUP_RESULT_CLASS_CONSTANT" value="2" enum="LookupResultType">
+ </constant>
+ <constant name="LOOKUP_RESULT_CLASS_PROPERTY" value="3" enum="LookupResultType">
+ </constant>
+ <constant name="LOOKUP_RESULT_CLASS_METHOD" value="4" enum="LookupResultType">
+ </constant>
+ <constant name="LOOKUP_RESULT_CLASS_ENUM" value="5" enum="LookupResultType">
+ </constant>
+ <constant name="LOOKUP_RESULT_CLASS_TBD_GLOBALSCOPE" value="6" enum="LookupResultType">
+ </constant>
+ <constant name="LOOKUP_RESULT_MAX" value="7" enum="LookupResultType">
+ </constant>
+ <constant name="CODE_COMPLETION_KIND_CLASS" value="0" enum="CodeCompletionKind">
+ </constant>
+ <constant name="CODE_COMPLETION_KIND_FUNCTION" value="1" enum="CodeCompletionKind">
+ </constant>
+ <constant name="CODE_COMPLETION_KIND_SIGNAL" value="2" enum="CodeCompletionKind">
+ </constant>
+ <constant name="CODE_COMPLETION_KIND_VARIABLE" value="3" enum="CodeCompletionKind">
+ </constant>
+ <constant name="CODE_COMPLETION_KIND_MEMBER" value="4" enum="CodeCompletionKind">
+ </constant>
+ <constant name="CODE_COMPLETION_KIND_ENUM" value="5" enum="CodeCompletionKind">
+ </constant>
+ <constant name="CODE_COMPLETION_KIND_CONSTANT" value="6" enum="CodeCompletionKind">
+ </constant>
+ <constant name="CODE_COMPLETION_KIND_NODE_PATH" value="7" enum="CodeCompletionKind">
+ </constant>
+ <constant name="CODE_COMPLETION_KIND_FILE_PATH" value="8" enum="CodeCompletionKind">
+ </constant>
+ <constant name="CODE_COMPLETION_KIND_PLAIN_TEXT" value="9" enum="CodeCompletionKind">
+ </constant>
+ <constant name="CODE_COMPLETION_KIND_MAX" value="10" enum="CodeCompletionKind">
+ </constant>
+ </constants>
+</class>
diff --git a/doc/classes/String.xml b/doc/classes/String.xml
index 9a6155c8a8..1f3d5596aa 100644
--- a/doc/classes/String.xml
+++ b/doc/classes/String.xml
@@ -341,7 +341,6 @@
print("1.7".is_valid_float()) # Prints "true"
print("24".is_valid_float()) # Prints "true"
print("7e3".is_valid_float()) # Prints "true"
- print("24".is_valid_float()) # Prints "true"
print("Hello".is_valid_float()) # Prints "false"
[/codeblock]
</description>
@@ -633,8 +632,8 @@
var some_string = "One,Two,Three,Four"
var some_array = some_string.rsplit(",", true, 1)
print(some_array.size()) # Prints 2
- print(some_array[0]) # Prints "Four"
- print(some_array[1]) # Prints "Three,Two,One"
+ print(some_array[0]) # Prints "One,Two,Three"
+ print(some_array[1]) # Prints "Four"
[/gdscript]
[csharp]
// There is no Rsplit.
@@ -678,7 +677,7 @@
<return type="float" />
<argument index="0" name="text" type="String" />
<description>
- Returns the similarity index ([url=https://en.wikipedia.org/wiki/S%C3%B8rensen%E2%80%93Dice_coefficient]Sorensen-Dice coefficient[/url]) this string compared to another. 1.0 means totally similar and 0.0 means totally dissimilar.
+ Returns the similarity index ([url=https://en.wikipedia.org/wiki/S%C3%B8rensen%E2%80%93Dice_coefficient]Sorensen-Dice coefficient[/url]) of this string compared to another. A result of 1.0 means totally similar, while 0.0 means totally dissimilar.
[codeblock]
print("ABC123".similarity("ABC123")) # Prints "1"
print("ABC123".similarity("XYZ456")) # Prints "0"
diff --git a/doc/classes/TabBar.xml b/doc/classes/TabBar.xml
index 420ab2adeb..aca5e2d7f3 100644
--- a/doc/classes/TabBar.xml
+++ b/doc/classes/TabBar.xml
@@ -323,6 +323,9 @@
</constant>
</constants>
<theme_items>
+ <theme_item name="drop_mark_color" data_type="color" type="Color" default="Color(1, 1, 1, 1)">
+ Modulation color for the [theme_item drop_mark] icon.
+ </theme_item>
<theme_item name="font_disabled_color" data_type="color" type="Color" default="Color(0.875, 0.875, 0.875, 0.5)">
Font color of disabled tabs.
</theme_item>
@@ -356,6 +359,9 @@
<theme_item name="decrement_highlight" data_type="icon" type="Texture2D">
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.
</theme_item>
+ <theme_item name="drop_mark" data_type="icon" type="Texture2D">
+ Icon shown to indicate where a dragged tab is gonna be dropped (see [member drag_to_rearrange_enabled]).
+ </theme_item>
<theme_item name="increment" data_type="icon" type="Texture2D">
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.
</theme_item>
diff --git a/doc/classes/TabContainer.xml b/doc/classes/TabContainer.xml
index ec2be012e9..c506152546 100644
--- a/doc/classes/TabContainer.xml
+++ b/doc/classes/TabContainer.xml
@@ -172,6 +172,9 @@
</signal>
</signals>
<theme_items>
+ <theme_item name="drop_mark_color" data_type="color" type="Color" default="Color(1, 1, 1, 1)">
+ Modulation color for the [theme_item drop_mark] icon.
+ </theme_item>
<theme_item name="font_disabled_color" data_type="color" type="Color" default="Color(0.875, 0.875, 0.875, 0.5)">
Font color of disabled tabs.
</theme_item>
@@ -206,6 +209,9 @@
<theme_item name="decrement_highlight" data_type="icon" type="Texture2D">
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.
</theme_item>
+ <theme_item name="drop_mark" data_type="icon" type="Texture2D">
+ Icon shown to indicate where a dragged tab is gonna be dropped (see [member drag_to_rearrange_enabled]).
+ </theme_item>
<theme_item name="increment" data_type="icon" type="Texture2D">
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.
</theme_item>
diff --git a/doc/classes/TextServerExtension.xml b/doc/classes/TextServerExtension.xml
index 25647e2668..e7c5edd266 100644
--- a/doc/classes/TextServerExtension.xml
+++ b/doc/classes/TextServerExtension.xml
@@ -373,7 +373,7 @@
<return type="Transform2D" />
<argument index="0" name="font_rid" type="RID" />
<description>
- Retruns 2D transform applied to the font outlines.
+ Returns 2D transform applied to the font outlines.
</description>
</method>
<method name="font_get_underline_position" qualifiers="virtual const">
diff --git a/doc/classes/TreeItem.xml b/doc/classes/TreeItem.xml
index c909a35ab5..396be2d9f8 100644
--- a/doc/classes/TreeItem.xml
+++ b/doc/classes/TreeItem.xml
@@ -22,7 +22,7 @@
</description>
</method>
<method name="call_recursive" qualifiers="vararg">
- <return type="Variant" />
+ <return type="void" />
<argument index="0" name="method" type="StringName" />
<description>
Calls the [code]method[/code] on the actual TreeItem and its children recursively. Pass parameters as a comma separated list.
diff --git a/doc/classes/Viewport.xml b/doc/classes/Viewport.xml
index a72e7f1eb0..b5916f8c17 100644
--- a/doc/classes/Viewport.xml
+++ b/doc/classes/Viewport.xml
@@ -172,7 +172,7 @@
</method>
<method name="warp_mouse">
<return type="void" />
- <argument index="0" name="to_position" type="Vector2" />
+ <argument index="0" name="position" type="Vector2" />
<description>
Moves the mouse pointer to the specified position in this [Viewport] using the coordinate system of this [Viewport].
</description>
diff --git a/doc/translations/ar.po b/doc/translations/ar.po
index d8fac5a193..c611cb845c 100644
--- a/doc/translations/ar.po
+++ b/doc/translations/ar.po
@@ -3413,8 +3413,12 @@ msgstr ""
#: doc/classes/@GlobalScope.xml
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]."
+"pick in a list specified via a hint string.\n"
+"The hint string is a comma separated list of names such as [code]\"Hello,"
+"Something,Else\"[/code]. For integer and float properties, the first name in "
+"the list has value 0, the next 1, and so on. Explicit values can also be "
+"specified by appending [code]:integer[/code] to the name, e.g. [code]\"Zero,"
+"One,Three:3,Four,Six:6\"[/code]."
msgstr ""
#: doc/classes/@GlobalScope.xml
@@ -5328,8 +5332,11 @@ msgstr ""
#: doc/classes/AnimationNodeBlendTree.xml
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."
+"This node may contain a sub-tree of any other blend type nodes, such as "
+"[AnimationNodeTransition], [AnimationNodeBlend2], [AnimationNodeBlend3], "
+"[AnimationNodeOneShot], etc. This is one of the most commonly used roots.\n"
+"An [AnimationNodeOutput] node named [code]output[/code] is created by "
+"default."
msgstr ""
#: doc/classes/AnimationNodeBlendTree.xml
@@ -10449,8 +10456,15 @@ msgstr ""
#: doc/classes/BakedLightmap.xml
msgid ""
-"When enabled, the lightmapper will merge the textures for all meshes into a "
-"single large layered texture. Not supported in GLES2."
+"If [code]true[/code], the lightmapper will merge the textures for all meshes "
+"into one or several large layered textures. If [code]false[/code], every "
+"mesh will get its own lightmap texture, which is less efficient.\n"
+"[b]Note:[/b] Atlas lightmap rendering is only supported in GLES3, [i]not[/i] "
+"GLES2. Non-atlas lightmap rendering is supported by both GLES3 and GLES2. If "
+"[member ProjectSettings.rendering/quality/driver/fallback_to_gles2] is "
+"[code]true[/code], consider baking lightmaps with [member atlas_generate] "
+"set to [code]false[/code] so that the resulting lightmap is visible in both "
+"GLES3 and GLES2."
msgstr ""
#: doc/classes/BakedLightmap.xml
@@ -12603,14 +12617,15 @@ msgstr ""
#: doc/classes/CanvasItem.xml
msgid ""
-"If [code]enable[/code] is [code]true[/code], children will be updated with "
-"local transform data."
+"If [code]enable[/code] is [code]true[/code], this node will receive "
+"[constant NOTIFICATION_LOCAL_TRANSFORM_CHANGED] when its local transform "
+"changes."
msgstr ""
#: doc/classes/CanvasItem.xml
msgid ""
-"If [code]enable[/code] is [code]true[/code], children will be updated with "
-"global transform data."
+"If [code]enable[/code] is [code]true[/code], this node will receive "
+"[constant NOTIFICATION_TRANSFORM_CHANGED] when its global transform changes."
msgstr ""
#: doc/classes/CanvasItem.xml
@@ -12724,9 +12739,14 @@ msgstr ""
#: doc/classes/CanvasItem.xml
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]."
+"The [CanvasItem]'s global transform has changed. This notification is only "
+"received if enabled by [method set_notify_transform]."
+msgstr ""
+
+#: doc/classes/CanvasItem.xml
+msgid ""
+"The [CanvasItem]'s local transform has changed. This notification is only "
+"received if enabled by [method set_notify_local_transform]."
msgstr ""
#: doc/classes/CanvasItem.xml
@@ -19699,9 +19719,8 @@ msgid ""
"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"
+"OpenType ([code].otf[/code]), Web Open Font Format 1 ([code].woff[/code]), "
+"and Web Open Font Format 2 ([code].woff2[/code]).\n"
"[codeblock]\n"
"var dynamic_font = DynamicFont.new()\n"
"dynamic_font.font_data = load(\"res://BarlowCondensed-Bold.ttf\")\n"
@@ -22492,12 +22511,13 @@ msgstr ""
#: doc/classes/EditorVCSInterface.xml
msgid ""
"Helper function to create a commit [Dictionary] item. [code]msg[/code] is "
-"the commit message of the commit. [code]author[/code] is a human-readable "
-"string containing the author's details, e.g. the email and name configured "
-"in the VCS. [code]id[/code] is the identifier of the commit, in whichever "
-"format your VCS may provide an identifier to commits. [code]date[/code] is "
-"directly added to the commit item and displayed in the editor, and hence, it "
-"shall be a well-formatted, human-readable date string."
+"the commit message of the commit. [code]author[/code] is a single human-"
+"readable string containing all the author's details, e.g. the email and name "
+"configured in the VCS. [code]id[/code] is the identifier of the commit, in "
+"whichever format your VCS may provide an identifier to commits. "
+"[code]unix_timestamp[/code] is the UTC Unix timestamp of when the commit was "
+"created. [code]offset_minutes[/code] is the timezone offset in minutes, "
+"recorded from the system timezone where the commit was created."
msgstr ""
#: doc/classes/EditorVCSInterface.xml
@@ -29090,9 +29110,9 @@ 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."
+"If [code]exact[/code] is [code]false[/code], it ignores additional input "
+"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the "
+"direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/Input.xml
@@ -29102,9 +29122,9 @@ msgid ""
"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."
+"If [code]exact[/code] is [code]false[/code], it ignores additional input "
+"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the "
+"direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/Input.xml
@@ -29237,9 +29257,9 @@ msgid ""
"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.\n"
+"If [code]exact[/code] is [code]false[/code], it ignores additional input "
+"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the "
+"direction for [InputEventJoypadMotion] events.\n"
"[b]Note:[/b] Due to keyboard ghosting, [method is_action_just_pressed] may "
"return [code]false[/code] even if one of the action's keys is pressed. See "
"[url=$DOCS_URL/tutorials/inputs/input_examples.html#keyboard-events]Input "
@@ -29251,9 +29271,9 @@ 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."
+"If [code]exact[/code] is [code]false[/code], it ignores additional input "
+"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the "
+"direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/Input.xml
@@ -29262,9 +29282,9 @@ msgid ""
"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.\n"
+"If [code]exact[/code] is [code]false[/code], it ignores additional input "
+"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the "
+"direction for [InputEventJoypadMotion] events.\n"
"[b]Note:[/b] Due to keyboard ghosting, [method is_action_pressed] may return "
"[code]false[/code] even if one of the action's keys is pressed. See "
"[url=$DOCS_URL/tutorials/inputs/input_examples.html#keyboard-events]Input "
@@ -29614,18 +29634,18 @@ msgstr ""
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."
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/InputEvent.xml
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."
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/InputEvent.xml
@@ -29634,9 +29654,9 @@ msgid ""
"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.\n"
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events.\n"
"[b]Note:[/b] Due to keyboard ghosting, [method is_action_pressed] may return "
"[code]false[/code] even if one of the action's keys is pressed. See "
"[url=$DOCS_URL/tutorials/inputs/input_examples.html#keyboard-events]Input "
@@ -29648,9 +29668,9 @@ 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."
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/InputEvent.xml
@@ -29681,9 +29701,9 @@ msgid ""
"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."
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/InputEvent.xml
@@ -30214,9 +30234,9 @@ msgid ""
"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."
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/InputMap.xml
@@ -34053,6 +34073,39 @@ msgid "Returns the number of surface materials."
msgstr ""
#: doc/classes/MeshInstance.xml
+msgid ""
+"Returns [code]true[/code] if this [MeshInstance] can be merged with the "
+"specified [code]other_mesh_instance[/code], using the [method MeshInstance."
+"merge_meshes] function.\n"
+"In order to be mergeable, properties of the [MeshInstance] must match, and "
+"each surface must match, in terms of material, attributes and vertex format."
+msgstr ""
+
+#: doc/classes/MeshInstance.xml
+msgid ""
+"This function can merge together the data from several source "
+"[MeshInstance]s into a single destination [MeshInstance] (the MeshInstance "
+"the function is called from). This is primarily useful for improving "
+"performance by reducing the number of drawcalls and [Node]s.\n"
+"Merging should only be attempted for simple meshes that do not contain "
+"animation.\n"
+"The final vertices can either be returned in global space, or in local space "
+"relative to the destination [MeshInstance] global transform (the destination "
+"Node must be inside the [SceneTree] for local space to work).\n"
+"The function will make a final check for compatibility between the "
+"[MeshInstance]s by default, this should always be used unless you have "
+"previously checked for compatibility using [method MeshInstance."
+"is_mergeable_with]. If the compatibility check is omitted and the meshes are "
+"merged, you may see rendering errors.\n"
+"[b]Note:[/b] The requirements for similarity between meshes are quite "
+"stringent. They can be checked using the [method MeshInstance."
+"is_mergeable_with] function prior to calling [method MeshInstance."
+"merge_meshes].\n"
+"Also note that any initial data in the destination [MeshInstance] data will "
+"be discarded."
+msgstr ""
+
+#: doc/classes/MeshInstance.xml
msgid "Sets the [Material] for a surface of the [Mesh] resource."
msgstr ""
@@ -36531,12 +36584,12 @@ msgid ""
"[/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."
+"typically relevant for [url=$DOCS_URL/tutorials/misc/"
+"running_code_in_the_editor.html]tool scripts[/url] and [url=$DOCS_URL/"
+"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
@@ -37243,7 +37296,15 @@ msgid ""
"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."
+"subinstancing.\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=$DOCS_URL/tutorials/misc/"
+"running_code_in_the_editor.html]tool scripts[/url] and [url=$DOCS_URL/"
+"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
@@ -37839,7 +37900,13 @@ msgid ""
msgstr ""
#: doc/classes/Object.xml
-msgid "Called when the object is initialized."
+msgid ""
+"Called when the object is initialized in memory. Can be defined to take in "
+"parameters, that are passed in when constructing.\n"
+"[b]Note:[/b] If [method _init] is defined with required parameters, then "
+"explicit construction is the only valid means of creating an Object of the "
+"class. If any other means (such as [method PackedScene.instance]) is used, "
+"then initialization will fail."
msgstr ""
#: doc/classes/Object.xml
@@ -43107,7 +43174,10 @@ msgid ""
msgstr ""
#: doc/classes/PhysicsServer.xml
-msgid "Returns an Info defined by the [enum ProcessInfo] input given."
+msgid ""
+"Returns information about the current state of the 3D physics engine. See "
+"[enum ProcessInfo] for a list of available states. Only implemented for "
+"Godot Physics."
msgstr ""
#: doc/classes/PhysicsServer.xml
@@ -56039,8 +56109,8 @@ msgid ""
"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"
+"print(some_array[0]) # Prints \"One,Two,Three\"\n"
+"print(some_array[1]) # Prints \"Four\"\n"
"[/codeblock]"
msgstr ""
diff --git a/doc/translations/ca.po b/doc/translations/ca.po
index c024a6fd7b..97b36c3f91 100644
--- a/doc/translations/ca.po
+++ b/doc/translations/ca.po
@@ -3436,8 +3436,12 @@ msgstr ""
#: doc/classes/@GlobalScope.xml
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]."
+"pick in a list specified via a hint string.\n"
+"The hint string is a comma separated list of names such as [code]\"Hello,"
+"Something,Else\"[/code]. For integer and float properties, the first name in "
+"the list has value 0, the next 1, and so on. Explicit values can also be "
+"specified by appending [code]:integer[/code] to the name, e.g. [code]\"Zero,"
+"One,Three:3,Four,Six:6\"[/code]."
msgstr ""
#: doc/classes/@GlobalScope.xml
@@ -5349,8 +5353,11 @@ msgstr ""
#: doc/classes/AnimationNodeBlendTree.xml
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."
+"This node may contain a sub-tree of any other blend type nodes, such as "
+"[AnimationNodeTransition], [AnimationNodeBlend2], [AnimationNodeBlend3], "
+"[AnimationNodeOneShot], etc. This is one of the most commonly used roots.\n"
+"An [AnimationNodeOutput] node named [code]output[/code] is created by "
+"default."
msgstr ""
#: doc/classes/AnimationNodeBlendTree.xml
@@ -10469,8 +10476,15 @@ msgstr ""
#: doc/classes/BakedLightmap.xml
msgid ""
-"When enabled, the lightmapper will merge the textures for all meshes into a "
-"single large layered texture. Not supported in GLES2."
+"If [code]true[/code], the lightmapper will merge the textures for all meshes "
+"into one or several large layered textures. If [code]false[/code], every "
+"mesh will get its own lightmap texture, which is less efficient.\n"
+"[b]Note:[/b] Atlas lightmap rendering is only supported in GLES3, [i]not[/i] "
+"GLES2. Non-atlas lightmap rendering is supported by both GLES3 and GLES2. If "
+"[member ProjectSettings.rendering/quality/driver/fallback_to_gles2] is "
+"[code]true[/code], consider baking lightmaps with [member atlas_generate] "
+"set to [code]false[/code] so that the resulting lightmap is visible in both "
+"GLES3 and GLES2."
msgstr ""
#: doc/classes/BakedLightmap.xml
@@ -12618,14 +12632,15 @@ msgstr ""
#: doc/classes/CanvasItem.xml
msgid ""
-"If [code]enable[/code] is [code]true[/code], children will be updated with "
-"local transform data."
+"If [code]enable[/code] is [code]true[/code], this node will receive "
+"[constant NOTIFICATION_LOCAL_TRANSFORM_CHANGED] when its local transform "
+"changes."
msgstr ""
#: doc/classes/CanvasItem.xml
msgid ""
-"If [code]enable[/code] is [code]true[/code], children will be updated with "
-"global transform data."
+"If [code]enable[/code] is [code]true[/code], this node will receive "
+"[constant NOTIFICATION_TRANSFORM_CHANGED] when its global transform changes."
msgstr ""
#: doc/classes/CanvasItem.xml
@@ -12739,9 +12754,14 @@ msgstr ""
#: doc/classes/CanvasItem.xml
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]."
+"The [CanvasItem]'s global transform has changed. This notification is only "
+"received if enabled by [method set_notify_transform]."
+msgstr ""
+
+#: doc/classes/CanvasItem.xml
+msgid ""
+"The [CanvasItem]'s local transform has changed. This notification is only "
+"received if enabled by [method set_notify_local_transform]."
msgstr ""
#: doc/classes/CanvasItem.xml
@@ -19703,9 +19723,8 @@ msgid ""
"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"
+"OpenType ([code].otf[/code]), Web Open Font Format 1 ([code].woff[/code]), "
+"and Web Open Font Format 2 ([code].woff2[/code]).\n"
"[codeblock]\n"
"var dynamic_font = DynamicFont.new()\n"
"dynamic_font.font_data = load(\"res://BarlowCondensed-Bold.ttf\")\n"
@@ -22495,12 +22514,13 @@ msgstr ""
#: doc/classes/EditorVCSInterface.xml
msgid ""
"Helper function to create a commit [Dictionary] item. [code]msg[/code] is "
-"the commit message of the commit. [code]author[/code] is a human-readable "
-"string containing the author's details, e.g. the email and name configured "
-"in the VCS. [code]id[/code] is the identifier of the commit, in whichever "
-"format your VCS may provide an identifier to commits. [code]date[/code] is "
-"directly added to the commit item and displayed in the editor, and hence, it "
-"shall be a well-formatted, human-readable date string."
+"the commit message of the commit. [code]author[/code] is a single human-"
+"readable string containing all the author's details, e.g. the email and name "
+"configured in the VCS. [code]id[/code] is the identifier of the commit, in "
+"whichever format your VCS may provide an identifier to commits. "
+"[code]unix_timestamp[/code] is the UTC Unix timestamp of when the commit was "
+"created. [code]offset_minutes[/code] is the timezone offset in minutes, "
+"recorded from the system timezone where the commit was created."
msgstr ""
#: doc/classes/EditorVCSInterface.xml
@@ -29087,9 +29107,9 @@ 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."
+"If [code]exact[/code] is [code]false[/code], it ignores additional input "
+"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the "
+"direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/Input.xml
@@ -29099,9 +29119,9 @@ msgid ""
"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."
+"If [code]exact[/code] is [code]false[/code], it ignores additional input "
+"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the "
+"direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/Input.xml
@@ -29234,9 +29254,9 @@ msgid ""
"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.\n"
+"If [code]exact[/code] is [code]false[/code], it ignores additional input "
+"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the "
+"direction for [InputEventJoypadMotion] events.\n"
"[b]Note:[/b] Due to keyboard ghosting, [method is_action_just_pressed] may "
"return [code]false[/code] even if one of the action's keys is pressed. See "
"[url=$DOCS_URL/tutorials/inputs/input_examples.html#keyboard-events]Input "
@@ -29248,9 +29268,9 @@ 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."
+"If [code]exact[/code] is [code]false[/code], it ignores additional input "
+"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the "
+"direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/Input.xml
@@ -29259,9 +29279,9 @@ msgid ""
"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.\n"
+"If [code]exact[/code] is [code]false[/code], it ignores additional input "
+"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the "
+"direction for [InputEventJoypadMotion] events.\n"
"[b]Note:[/b] Due to keyboard ghosting, [method is_action_pressed] may return "
"[code]false[/code] even if one of the action's keys is pressed. See "
"[url=$DOCS_URL/tutorials/inputs/input_examples.html#keyboard-events]Input "
@@ -29611,18 +29631,18 @@ msgstr ""
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."
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/InputEvent.xml
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."
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/InputEvent.xml
@@ -29631,9 +29651,9 @@ msgid ""
"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.\n"
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events.\n"
"[b]Note:[/b] Due to keyboard ghosting, [method is_action_pressed] may return "
"[code]false[/code] even if one of the action's keys is pressed. See "
"[url=$DOCS_URL/tutorials/inputs/input_examples.html#keyboard-events]Input "
@@ -29645,9 +29665,9 @@ 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."
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/InputEvent.xml
@@ -29678,9 +29698,9 @@ msgid ""
"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."
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/InputEvent.xml
@@ -30210,9 +30230,9 @@ msgid ""
"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."
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/InputMap.xml
@@ -34048,6 +34068,39 @@ msgid "Returns the number of surface materials."
msgstr ""
#: doc/classes/MeshInstance.xml
+msgid ""
+"Returns [code]true[/code] if this [MeshInstance] can be merged with the "
+"specified [code]other_mesh_instance[/code], using the [method MeshInstance."
+"merge_meshes] function.\n"
+"In order to be mergeable, properties of the [MeshInstance] must match, and "
+"each surface must match, in terms of material, attributes and vertex format."
+msgstr ""
+
+#: doc/classes/MeshInstance.xml
+msgid ""
+"This function can merge together the data from several source "
+"[MeshInstance]s into a single destination [MeshInstance] (the MeshInstance "
+"the function is called from). This is primarily useful for improving "
+"performance by reducing the number of drawcalls and [Node]s.\n"
+"Merging should only be attempted for simple meshes that do not contain "
+"animation.\n"
+"The final vertices can either be returned in global space, or in local space "
+"relative to the destination [MeshInstance] global transform (the destination "
+"Node must be inside the [SceneTree] for local space to work).\n"
+"The function will make a final check for compatibility between the "
+"[MeshInstance]s by default, this should always be used unless you have "
+"previously checked for compatibility using [method MeshInstance."
+"is_mergeable_with]. If the compatibility check is omitted and the meshes are "
+"merged, you may see rendering errors.\n"
+"[b]Note:[/b] The requirements for similarity between meshes are quite "
+"stringent. They can be checked using the [method MeshInstance."
+"is_mergeable_with] function prior to calling [method MeshInstance."
+"merge_meshes].\n"
+"Also note that any initial data in the destination [MeshInstance] data will "
+"be discarded."
+msgstr ""
+
+#: doc/classes/MeshInstance.xml
msgid "Sets the [Material] for a surface of the [Mesh] resource."
msgstr ""
@@ -36500,12 +36553,12 @@ msgid ""
"[/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."
+"typically relevant for [url=$DOCS_URL/tutorials/misc/"
+"running_code_in_the_editor.html]tool scripts[/url] and [url=$DOCS_URL/"
+"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
@@ -37212,7 +37265,15 @@ msgid ""
"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."
+"subinstancing.\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=$DOCS_URL/tutorials/misc/"
+"running_code_in_the_editor.html]tool scripts[/url] and [url=$DOCS_URL/"
+"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
@@ -37808,7 +37869,13 @@ msgid ""
msgstr ""
#: doc/classes/Object.xml
-msgid "Called when the object is initialized."
+msgid ""
+"Called when the object is initialized in memory. Can be defined to take in "
+"parameters, that are passed in when constructing.\n"
+"[b]Note:[/b] If [method _init] is defined with required parameters, then "
+"explicit construction is the only valid means of creating an Object of the "
+"class. If any other means (such as [method PackedScene.instance]) is used, "
+"then initialization will fail."
msgstr ""
#: doc/classes/Object.xml
@@ -43052,7 +43119,10 @@ msgid ""
msgstr ""
#: doc/classes/PhysicsServer.xml
-msgid "Returns an Info defined by the [enum ProcessInfo] input given."
+msgid ""
+"Returns information about the current state of the 3D physics engine. See "
+"[enum ProcessInfo] for a list of available states. Only implemented for "
+"Godot Physics."
msgstr ""
#: doc/classes/PhysicsServer.xml
@@ -55976,8 +56046,8 @@ msgid ""
"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"
+"print(some_array[0]) # Prints \"One,Two,Three\"\n"
+"print(some_array[1]) # Prints \"Four\"\n"
"[/codeblock]"
msgstr ""
diff --git a/doc/translations/classes.pot b/doc/translations/classes.pot
index f7706efa7d..3aa9292ac3 100644
--- a/doc/translations/classes.pot
+++ b/doc/translations/classes.pot
@@ -3316,8 +3316,12 @@ msgstr ""
#: doc/classes/@GlobalScope.xml
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]."
+"pick in a list specified via a hint string.\n"
+"The hint string is a comma separated list of names such as [code]\"Hello,"
+"Something,Else\"[/code]. For integer and float properties, the first name in "
+"the list has value 0, the next 1, and so on. Explicit values can also be "
+"specified by appending [code]:integer[/code] to the name, e.g. [code]\"Zero,"
+"One,Three:3,Four,Six:6\"[/code]."
msgstr ""
#: doc/classes/@GlobalScope.xml
@@ -5229,8 +5233,11 @@ msgstr ""
#: doc/classes/AnimationNodeBlendTree.xml
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."
+"This node may contain a sub-tree of any other blend type nodes, such as "
+"[AnimationNodeTransition], [AnimationNodeBlend2], [AnimationNodeBlend3], "
+"[AnimationNodeOneShot], etc. This is one of the most commonly used roots.\n"
+"An [AnimationNodeOutput] node named [code]output[/code] is created by "
+"default."
msgstr ""
#: doc/classes/AnimationNodeBlendTree.xml
@@ -10349,8 +10356,15 @@ msgstr ""
#: doc/classes/BakedLightmap.xml
msgid ""
-"When enabled, the lightmapper will merge the textures for all meshes into a "
-"single large layered texture. Not supported in GLES2."
+"If [code]true[/code], the lightmapper will merge the textures for all meshes "
+"into one or several large layered textures. If [code]false[/code], every "
+"mesh will get its own lightmap texture, which is less efficient.\n"
+"[b]Note:[/b] Atlas lightmap rendering is only supported in GLES3, [i]not[/i] "
+"GLES2. Non-atlas lightmap rendering is supported by both GLES3 and GLES2. If "
+"[member ProjectSettings.rendering/quality/driver/fallback_to_gles2] is "
+"[code]true[/code], consider baking lightmaps with [member atlas_generate] "
+"set to [code]false[/code] so that the resulting lightmap is visible in both "
+"GLES3 and GLES2."
msgstr ""
#: doc/classes/BakedLightmap.xml
@@ -12498,14 +12512,15 @@ msgstr ""
#: doc/classes/CanvasItem.xml
msgid ""
-"If [code]enable[/code] is [code]true[/code], children will be updated with "
-"local transform data."
+"If [code]enable[/code] is [code]true[/code], this node will receive "
+"[constant NOTIFICATION_LOCAL_TRANSFORM_CHANGED] when its local transform "
+"changes."
msgstr ""
#: doc/classes/CanvasItem.xml
msgid ""
-"If [code]enable[/code] is [code]true[/code], children will be updated with "
-"global transform data."
+"If [code]enable[/code] is [code]true[/code], this node will receive "
+"[constant NOTIFICATION_TRANSFORM_CHANGED] when its global transform changes."
msgstr ""
#: doc/classes/CanvasItem.xml
@@ -12619,9 +12634,14 @@ msgstr ""
#: doc/classes/CanvasItem.xml
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]."
+"The [CanvasItem]'s global transform has changed. This notification is only "
+"received if enabled by [method set_notify_transform]."
+msgstr ""
+
+#: doc/classes/CanvasItem.xml
+msgid ""
+"The [CanvasItem]'s local transform has changed. This notification is only "
+"received if enabled by [method set_notify_local_transform]."
msgstr ""
#: doc/classes/CanvasItem.xml
@@ -19583,9 +19603,8 @@ msgid ""
"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"
+"OpenType ([code].otf[/code]), Web Open Font Format 1 ([code].woff[/code]), "
+"and Web Open Font Format 2 ([code].woff2[/code]).\n"
"[codeblock]\n"
"var dynamic_font = DynamicFont.new()\n"
"dynamic_font.font_data = load(\"res://BarlowCondensed-Bold.ttf\")\n"
@@ -22375,12 +22394,13 @@ msgstr ""
#: doc/classes/EditorVCSInterface.xml
msgid ""
"Helper function to create a commit [Dictionary] item. [code]msg[/code] is "
-"the commit message of the commit. [code]author[/code] is a human-readable "
-"string containing the author's details, e.g. the email and name configured "
-"in the VCS. [code]id[/code] is the identifier of the commit, in whichever "
-"format your VCS may provide an identifier to commits. [code]date[/code] is "
-"directly added to the commit item and displayed in the editor, and hence, it "
-"shall be a well-formatted, human-readable date string."
+"the commit message of the commit. [code]author[/code] is a single human-"
+"readable string containing all the author's details, e.g. the email and name "
+"configured in the VCS. [code]id[/code] is the identifier of the commit, in "
+"whichever format your VCS may provide an identifier to commits. "
+"[code]unix_timestamp[/code] is the UTC Unix timestamp of when the commit was "
+"created. [code]offset_minutes[/code] is the timezone offset in minutes, "
+"recorded from the system timezone where the commit was created."
msgstr ""
#: doc/classes/EditorVCSInterface.xml
@@ -28964,9 +28984,9 @@ 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."
+"If [code]exact[/code] is [code]false[/code], it ignores additional input "
+"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the "
+"direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/Input.xml
@@ -28976,9 +28996,9 @@ msgid ""
"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."
+"If [code]exact[/code] is [code]false[/code], it ignores additional input "
+"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the "
+"direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/Input.xml
@@ -29111,9 +29131,9 @@ msgid ""
"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.\n"
+"If [code]exact[/code] is [code]false[/code], it ignores additional input "
+"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the "
+"direction for [InputEventJoypadMotion] events.\n"
"[b]Note:[/b] Due to keyboard ghosting, [method is_action_just_pressed] may "
"return [code]false[/code] even if one of the action's keys is pressed. See "
"[url=$DOCS_URL/tutorials/inputs/input_examples.html#keyboard-events]Input "
@@ -29125,9 +29145,9 @@ 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."
+"If [code]exact[/code] is [code]false[/code], it ignores additional input "
+"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the "
+"direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/Input.xml
@@ -29136,9 +29156,9 @@ msgid ""
"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.\n"
+"If [code]exact[/code] is [code]false[/code], it ignores additional input "
+"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the "
+"direction for [InputEventJoypadMotion] events.\n"
"[b]Note:[/b] Due to keyboard ghosting, [method is_action_pressed] may return "
"[code]false[/code] even if one of the action's keys is pressed. See "
"[url=$DOCS_URL/tutorials/inputs/input_examples.html#keyboard-events]Input "
@@ -29488,18 +29508,18 @@ msgstr ""
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."
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/InputEvent.xml
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."
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/InputEvent.xml
@@ -29508,9 +29528,9 @@ msgid ""
"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.\n"
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events.\n"
"[b]Note:[/b] Due to keyboard ghosting, [method is_action_pressed] may return "
"[code]false[/code] even if one of the action's keys is pressed. See "
"[url=$DOCS_URL/tutorials/inputs/input_examples.html#keyboard-events]Input "
@@ -29522,9 +29542,9 @@ 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."
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/InputEvent.xml
@@ -29555,9 +29575,9 @@ msgid ""
"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."
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/InputEvent.xml
@@ -30087,9 +30107,9 @@ msgid ""
"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."
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/InputMap.xml
@@ -33925,6 +33945,39 @@ msgid "Returns the number of surface materials."
msgstr ""
#: doc/classes/MeshInstance.xml
+msgid ""
+"Returns [code]true[/code] if this [MeshInstance] can be merged with the "
+"specified [code]other_mesh_instance[/code], using the [method MeshInstance."
+"merge_meshes] function.\n"
+"In order to be mergeable, properties of the [MeshInstance] must match, and "
+"each surface must match, in terms of material, attributes and vertex format."
+msgstr ""
+
+#: doc/classes/MeshInstance.xml
+msgid ""
+"This function can merge together the data from several source "
+"[MeshInstance]s into a single destination [MeshInstance] (the MeshInstance "
+"the function is called from). This is primarily useful for improving "
+"performance by reducing the number of drawcalls and [Node]s.\n"
+"Merging should only be attempted for simple meshes that do not contain "
+"animation.\n"
+"The final vertices can either be returned in global space, or in local space "
+"relative to the destination [MeshInstance] global transform (the destination "
+"Node must be inside the [SceneTree] for local space to work).\n"
+"The function will make a final check for compatibility between the "
+"[MeshInstance]s by default, this should always be used unless you have "
+"previously checked for compatibility using [method MeshInstance."
+"is_mergeable_with]. If the compatibility check is omitted and the meshes are "
+"merged, you may see rendering errors.\n"
+"[b]Note:[/b] The requirements for similarity between meshes are quite "
+"stringent. They can be checked using the [method MeshInstance."
+"is_mergeable_with] function prior to calling [method MeshInstance."
+"merge_meshes].\n"
+"Also note that any initial data in the destination [MeshInstance] data will "
+"be discarded."
+msgstr ""
+
+#: doc/classes/MeshInstance.xml
msgid "Sets the [Material] for a surface of the [Mesh] resource."
msgstr ""
@@ -36377,12 +36430,12 @@ msgid ""
"[/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."
+"typically relevant for [url=$DOCS_URL/tutorials/misc/"
+"running_code_in_the_editor.html]tool scripts[/url] and [url=$DOCS_URL/"
+"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
@@ -37089,7 +37142,15 @@ msgid ""
"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."
+"subinstancing.\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=$DOCS_URL/tutorials/misc/"
+"running_code_in_the_editor.html]tool scripts[/url] and [url=$DOCS_URL/"
+"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
@@ -37685,7 +37746,13 @@ msgid ""
msgstr ""
#: doc/classes/Object.xml
-msgid "Called when the object is initialized."
+msgid ""
+"Called when the object is initialized in memory. Can be defined to take in "
+"parameters, that are passed in when constructing.\n"
+"[b]Note:[/b] If [method _init] is defined with required parameters, then "
+"explicit construction is the only valid means of creating an Object of the "
+"class. If any other means (such as [method PackedScene.instance]) is used, "
+"then initialization will fail."
msgstr ""
#: doc/classes/Object.xml
@@ -42929,7 +42996,10 @@ msgid ""
msgstr ""
#: doc/classes/PhysicsServer.xml
-msgid "Returns an Info defined by the [enum ProcessInfo] input given."
+msgid ""
+"Returns information about the current state of the 3D physics engine. See "
+"[enum ProcessInfo] for a list of available states. Only implemented for "
+"Godot Physics."
msgstr ""
#: doc/classes/PhysicsServer.xml
@@ -55853,8 +55923,8 @@ msgid ""
"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"
+"print(some_array[0]) # Prints \"One,Two,Three\"\n"
+"print(some_array[1]) # Prints \"Four\"\n"
"[/codeblock]"
msgstr ""
diff --git a/doc/translations/cs.po b/doc/translations/cs.po
index 75cc6ed7e8..9999a29a0b 100644
--- a/doc/translations/cs.po
+++ b/doc/translations/cs.po
@@ -3820,8 +3820,12 @@ msgstr ""
#: doc/classes/@GlobalScope.xml
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]."
+"pick in a list specified via a hint string.\n"
+"The hint string is a comma separated list of names such as [code]\"Hello,"
+"Something,Else\"[/code]. For integer and float properties, the first name in "
+"the list has value 0, the next 1, and so on. Explicit values can also be "
+"specified by appending [code]:integer[/code] to the name, e.g. [code]\"Zero,"
+"One,Three:3,Four,Six:6\"[/code]."
msgstr ""
#: doc/classes/@GlobalScope.xml
@@ -5735,8 +5739,11 @@ msgstr ""
#: doc/classes/AnimationNodeBlendTree.xml
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."
+"This node may contain a sub-tree of any other blend type nodes, such as "
+"[AnimationNodeTransition], [AnimationNodeBlend2], [AnimationNodeBlend3], "
+"[AnimationNodeOneShot], etc. This is one of the most commonly used roots.\n"
+"An [AnimationNodeOutput] node named [code]output[/code] is created by "
+"default."
msgstr ""
#: doc/classes/AnimationNodeBlendTree.xml
@@ -10865,8 +10872,15 @@ msgstr ""
#: doc/classes/BakedLightmap.xml
msgid ""
-"When enabled, the lightmapper will merge the textures for all meshes into a "
-"single large layered texture. Not supported in GLES2."
+"If [code]true[/code], the lightmapper will merge the textures for all meshes "
+"into one or several large layered textures. If [code]false[/code], every "
+"mesh will get its own lightmap texture, which is less efficient.\n"
+"[b]Note:[/b] Atlas lightmap rendering is only supported in GLES3, [i]not[/i] "
+"GLES2. Non-atlas lightmap rendering is supported by both GLES3 and GLES2. If "
+"[member ProjectSettings.rendering/quality/driver/fallback_to_gles2] is "
+"[code]true[/code], consider baking lightmaps with [member atlas_generate] "
+"set to [code]false[/code] so that the resulting lightmap is visible in both "
+"GLES3 and GLES2."
msgstr ""
#: doc/classes/BakedLightmap.xml
@@ -13023,14 +13037,15 @@ msgstr ""
#: doc/classes/CanvasItem.xml
msgid ""
-"If [code]enable[/code] is [code]true[/code], children will be updated with "
-"local transform data."
+"If [code]enable[/code] is [code]true[/code], this node will receive "
+"[constant NOTIFICATION_LOCAL_TRANSFORM_CHANGED] when its local transform "
+"changes."
msgstr ""
#: doc/classes/CanvasItem.xml
msgid ""
-"If [code]enable[/code] is [code]true[/code], children will be updated with "
-"global transform data."
+"If [code]enable[/code] is [code]true[/code], this node will receive "
+"[constant NOTIFICATION_TRANSFORM_CHANGED] when its global transform changes."
msgstr ""
#: doc/classes/CanvasItem.xml
@@ -13144,9 +13159,14 @@ msgstr ""
#: doc/classes/CanvasItem.xml
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]."
+"The [CanvasItem]'s global transform has changed. This notification is only "
+"received if enabled by [method set_notify_transform]."
+msgstr ""
+
+#: doc/classes/CanvasItem.xml
+msgid ""
+"The [CanvasItem]'s local transform has changed. This notification is only "
+"received if enabled by [method set_notify_local_transform]."
msgstr ""
#: doc/classes/CanvasItem.xml
@@ -20150,9 +20170,8 @@ msgid ""
"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"
+"OpenType ([code].otf[/code]), Web Open Font Format 1 ([code].woff[/code]), "
+"and Web Open Font Format 2 ([code].woff2[/code]).\n"
"[codeblock]\n"
"var dynamic_font = DynamicFont.new()\n"
"dynamic_font.font_data = load(\"res://BarlowCondensed-Bold.ttf\")\n"
@@ -22949,12 +22968,13 @@ msgstr ""
#: doc/classes/EditorVCSInterface.xml
msgid ""
"Helper function to create a commit [Dictionary] item. [code]msg[/code] is "
-"the commit message of the commit. [code]author[/code] is a human-readable "
-"string containing the author's details, e.g. the email and name configured "
-"in the VCS. [code]id[/code] is the identifier of the commit, in whichever "
-"format your VCS may provide an identifier to commits. [code]date[/code] is "
-"directly added to the commit item and displayed in the editor, and hence, it "
-"shall be a well-formatted, human-readable date string."
+"the commit message of the commit. [code]author[/code] is a single human-"
+"readable string containing all the author's details, e.g. the email and name "
+"configured in the VCS. [code]id[/code] is the identifier of the commit, in "
+"whichever format your VCS may provide an identifier to commits. "
+"[code]unix_timestamp[/code] is the UTC Unix timestamp of when the commit was "
+"created. [code]offset_minutes[/code] is the timezone offset in minutes, "
+"recorded from the system timezone where the commit was created."
msgstr ""
#: doc/classes/EditorVCSInterface.xml
@@ -29552,9 +29572,9 @@ 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."
+"If [code]exact[/code] is [code]false[/code], it ignores additional input "
+"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the "
+"direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/Input.xml
@@ -29564,9 +29584,9 @@ msgid ""
"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."
+"If [code]exact[/code] is [code]false[/code], it ignores additional input "
+"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the "
+"direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/Input.xml
@@ -29699,9 +29719,9 @@ msgid ""
"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.\n"
+"If [code]exact[/code] is [code]false[/code], it ignores additional input "
+"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the "
+"direction for [InputEventJoypadMotion] events.\n"
"[b]Note:[/b] Due to keyboard ghosting, [method is_action_just_pressed] may "
"return [code]false[/code] even if one of the action's keys is pressed. See "
"[url=$DOCS_URL/tutorials/inputs/input_examples.html#keyboard-events]Input "
@@ -29713,9 +29733,9 @@ 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."
+"If [code]exact[/code] is [code]false[/code], it ignores additional input "
+"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the "
+"direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/Input.xml
@@ -29724,9 +29744,9 @@ msgid ""
"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.\n"
+"If [code]exact[/code] is [code]false[/code], it ignores additional input "
+"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the "
+"direction for [InputEventJoypadMotion] events.\n"
"[b]Note:[/b] Due to keyboard ghosting, [method is_action_pressed] may return "
"[code]false[/code] even if one of the action's keys is pressed. See "
"[url=$DOCS_URL/tutorials/inputs/input_examples.html#keyboard-events]Input "
@@ -30076,18 +30096,18 @@ msgstr ""
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."
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/InputEvent.xml
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."
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/InputEvent.xml
@@ -30096,9 +30116,9 @@ msgid ""
"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.\n"
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events.\n"
"[b]Note:[/b] Due to keyboard ghosting, [method is_action_pressed] may return "
"[code]false[/code] even if one of the action's keys is pressed. See "
"[url=$DOCS_URL/tutorials/inputs/input_examples.html#keyboard-events]Input "
@@ -30110,9 +30130,9 @@ 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."
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/InputEvent.xml
@@ -30143,9 +30163,9 @@ msgid ""
"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."
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/InputEvent.xml
@@ -30676,9 +30696,9 @@ msgid ""
"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."
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/InputMap.xml
@@ -34518,6 +34538,39 @@ msgid "Returns the number of surface materials."
msgstr ""
#: doc/classes/MeshInstance.xml
+msgid ""
+"Returns [code]true[/code] if this [MeshInstance] can be merged with the "
+"specified [code]other_mesh_instance[/code], using the [method MeshInstance."
+"merge_meshes] function.\n"
+"In order to be mergeable, properties of the [MeshInstance] must match, and "
+"each surface must match, in terms of material, attributes and vertex format."
+msgstr ""
+
+#: doc/classes/MeshInstance.xml
+msgid ""
+"This function can merge together the data from several source "
+"[MeshInstance]s into a single destination [MeshInstance] (the MeshInstance "
+"the function is called from). This is primarily useful for improving "
+"performance by reducing the number of drawcalls and [Node]s.\n"
+"Merging should only be attempted for simple meshes that do not contain "
+"animation.\n"
+"The final vertices can either be returned in global space, or in local space "
+"relative to the destination [MeshInstance] global transform (the destination "
+"Node must be inside the [SceneTree] for local space to work).\n"
+"The function will make a final check for compatibility between the "
+"[MeshInstance]s by default, this should always be used unless you have "
+"previously checked for compatibility using [method MeshInstance."
+"is_mergeable_with]. If the compatibility check is omitted and the meshes are "
+"merged, you may see rendering errors.\n"
+"[b]Note:[/b] The requirements for similarity between meshes are quite "
+"stringent. They can be checked using the [method MeshInstance."
+"is_mergeable_with] function prior to calling [method MeshInstance."
+"merge_meshes].\n"
+"Also note that any initial data in the destination [MeshInstance] data will "
+"be discarded."
+msgstr ""
+
+#: doc/classes/MeshInstance.xml
msgid "Sets the [Material] for a surface of the [Mesh] resource."
msgstr ""
@@ -37000,12 +37053,12 @@ msgid ""
"[/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."
+"typically relevant for [url=$DOCS_URL/tutorials/misc/"
+"running_code_in_the_editor.html]tool scripts[/url] and [url=$DOCS_URL/"
+"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
@@ -37712,7 +37765,15 @@ msgid ""
"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."
+"subinstancing.\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=$DOCS_URL/tutorials/misc/"
+"running_code_in_the_editor.html]tool scripts[/url] and [url=$DOCS_URL/"
+"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
@@ -38308,7 +38369,13 @@ msgid ""
msgstr ""
#: doc/classes/Object.xml
-msgid "Called when the object is initialized."
+msgid ""
+"Called when the object is initialized in memory. Can be defined to take in "
+"parameters, that are passed in when constructing.\n"
+"[b]Note:[/b] If [method _init] is defined with required parameters, then "
+"explicit construction is the only valid means of creating an Object of the "
+"class. If any other means (such as [method PackedScene.instance]) is used, "
+"then initialization will fail."
msgstr ""
#: doc/classes/Object.xml
@@ -43587,7 +43654,10 @@ msgid ""
msgstr ""
#: doc/classes/PhysicsServer.xml
-msgid "Returns an Info defined by the [enum ProcessInfo] input given."
+msgid ""
+"Returns information about the current state of the 3D physics engine. See "
+"[enum ProcessInfo] for a list of available states. Only implemented for "
+"Godot Physics."
msgstr ""
#: doc/classes/PhysicsServer.xml
@@ -56537,8 +56607,8 @@ msgid ""
"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"
+"print(some_array[0]) # Prints \"One,Two,Three\"\n"
+"print(some_array[1]) # Prints \"Four\"\n"
"[/codeblock]"
msgstr ""
diff --git a/doc/translations/de.po b/doc/translations/de.po
index c658b5ea67..585bbabec6 100644
--- a/doc/translations/de.po
+++ b/doc/translations/de.po
@@ -44,12 +44,13 @@
# Coxcopi70f00b67b61542fe <hn_vogel@gmx.net>, 2022.
# Leon Marz <main@lmarz.org>, 2022.
# Robin <robin.janzen@gmx.net>, 2022.
+# Andreas <self@andreasbresser.de>, 2022.
msgid ""
msgstr ""
"Project-Id-Version: Godot Engine class reference\n"
"Report-Msgid-Bugs-To: https://github.com/godotengine/godot\n"
-"PO-Revision-Date: 2022-03-13 22:11+0000\n"
-"Last-Translator: Robin <robin.janzen@gmx.net>\n"
+"PO-Revision-Date: 2022-03-27 01:06+0000\n"
+"Last-Translator: Andreas <self@andreasbresser.de>\n"
"Language-Team: German <https://hosted.weblate.org/projects/godot-engine/"
"godot-class-reference/de/>\n"
"Language: de\n"
@@ -4328,13 +4329,13 @@ msgstr ""
#: doc/classes/@GlobalScope.xml
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]."
+"pick in a list specified via a hint string.\n"
+"The hint string is a comma separated list of names such as [code]\"Hello,"
+"Something,Else\"[/code]. For integer and float properties, the first name in "
+"the list has value 0, the next 1, and so on. Explicit values can also be "
+"specified by appending [code]:integer[/code] to the name, e.g. [code]\"Zero,"
+"One,Three:3,Four,Six:6\"[/code]."
msgstr ""
-"Weist darauf hin, dass es sich bei einer Integer-, Float- oder Zeichenketten-"
-"Eigenschaft um einen Aufzählungswert handelt, der in einer über eine "
-"Hinweiszeichenkette wie [code]\"Hello,Something,Else\"[/code] angegebenen "
-"Liste auszuwählen ist."
#: doc/classes/@GlobalScope.xml
msgid ""
@@ -6470,9 +6471,8 @@ msgstr ""
#: doc/classes/AnimationNodeOneShot.xml doc/classes/AnimationNodeOutput.xml
#: doc/classes/AnimationNodeTimeScale.xml
#: doc/classes/AnimationNodeTransition.xml
-#, fuzzy
msgid "AnimationTree"
-msgstr "unbekanntes Node."
+msgstr "AnimationTree"
#: doc/classes/AnimationNodeAdd3.xml doc/classes/AnimationNodeAnimation.xml
#: doc/classes/AnimationNodeBlend2.xml
@@ -6853,9 +6853,13 @@ msgstr ""
"Node Ressource [AnimationTree], die viele Knoten vom Typ \"Blend\" enthält."
#: doc/classes/AnimationNodeBlendTree.xml
+#, fuzzy
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."
+"This node may contain a sub-tree of any other blend type nodes, such as "
+"[AnimationNodeTransition], [AnimationNodeBlend2], [AnimationNodeBlend3], "
+"[AnimationNodeOneShot], etc. This is one of the most commonly used roots.\n"
+"An [AnimationNodeOutput] node named [code]output[/code] is created by "
+"default."
msgstr ""
"Dieses Node kann einen Unterbaum beliebiger anderer Nodes vom Typ Mischung "
"enthalten, z. B. mix, blend2, blend3, one shot usw. Dies ist eine der am "
@@ -12407,8 +12411,15 @@ msgstr ""
#: doc/classes/BakedLightmap.xml
msgid ""
-"When enabled, the lightmapper will merge the textures for all meshes into a "
-"single large layered texture. Not supported in GLES2."
+"If [code]true[/code], the lightmapper will merge the textures for all meshes "
+"into one or several large layered textures. If [code]false[/code], every "
+"mesh will get its own lightmap texture, which is less efficient.\n"
+"[b]Note:[/b] Atlas lightmap rendering is only supported in GLES3, [i]not[/i] "
+"GLES2. Non-atlas lightmap rendering is supported by both GLES3 and GLES2. If "
+"[member ProjectSettings.rendering/quality/driver/fallback_to_gles2] is "
+"[code]true[/code], consider baking lightmaps with [member atlas_generate] "
+"set to [code]false[/code] so that the resulting lightmap is visible in both "
+"GLES3 and GLES2."
msgstr ""
#: doc/classes/BakedLightmap.xml
@@ -14578,14 +14589,15 @@ msgstr ""
#: doc/classes/CanvasItem.xml
msgid ""
-"If [code]enable[/code] is [code]true[/code], children will be updated with "
-"local transform data."
+"If [code]enable[/code] is [code]true[/code], this node will receive "
+"[constant NOTIFICATION_LOCAL_TRANSFORM_CHANGED] when its local transform "
+"changes."
msgstr ""
#: doc/classes/CanvasItem.xml
msgid ""
-"If [code]enable[/code] is [code]true[/code], children will be updated with "
-"global transform data."
+"If [code]enable[/code] is [code]true[/code], this node will receive "
+"[constant NOTIFICATION_TRANSFORM_CHANGED] when its global transform changes."
msgstr ""
#: doc/classes/CanvasItem.xml
@@ -14701,9 +14713,14 @@ msgstr ""
#: doc/classes/CanvasItem.xml
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]."
+"The [CanvasItem]'s global transform has changed. This notification is only "
+"received if enabled by [method set_notify_transform]."
+msgstr ""
+
+#: doc/classes/CanvasItem.xml
+msgid ""
+"The [CanvasItem]'s local transform has changed. This notification is only "
+"received if enabled by [method set_notify_local_transform]."
msgstr ""
#: doc/classes/CanvasItem.xml
@@ -21852,9 +21869,8 @@ msgid ""
"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"
+"OpenType ([code].otf[/code]), Web Open Font Format 1 ([code].woff[/code]), "
+"and Web Open Font Format 2 ([code].woff2[/code]).\n"
"[codeblock]\n"
"var dynamic_font = DynamicFont.new()\n"
"dynamic_font.font_data = load(\"res://BarlowCondensed-Bold.ttf\")\n"
@@ -24661,12 +24677,13 @@ msgstr ""
#: doc/classes/EditorVCSInterface.xml
msgid ""
"Helper function to create a commit [Dictionary] item. [code]msg[/code] is "
-"the commit message of the commit. [code]author[/code] is a human-readable "
-"string containing the author's details, e.g. the email and name configured "
-"in the VCS. [code]id[/code] is the identifier of the commit, in whichever "
-"format your VCS may provide an identifier to commits. [code]date[/code] is "
-"directly added to the commit item and displayed in the editor, and hence, it "
-"shall be a well-formatted, human-readable date string."
+"the commit message of the commit. [code]author[/code] is a single human-"
+"readable string containing all the author's details, e.g. the email and name "
+"configured in the VCS. [code]id[/code] is the identifier of the commit, in "
+"whichever format your VCS may provide an identifier to commits. "
+"[code]unix_timestamp[/code] is the UTC Unix timestamp of when the commit was "
+"created. [code]offset_minutes[/code] is the timezone offset in minutes, "
+"recorded from the system timezone where the commit was created."
msgstr ""
#: doc/classes/EditorVCSInterface.xml
@@ -31322,9 +31339,9 @@ 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."
+"If [code]exact[/code] is [code]false[/code], it ignores additional input "
+"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the "
+"direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/Input.xml
@@ -31334,9 +31351,9 @@ msgid ""
"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."
+"If [code]exact[/code] is [code]false[/code], it ignores additional input "
+"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the "
+"direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/Input.xml
@@ -31469,9 +31486,9 @@ msgid ""
"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.\n"
+"If [code]exact[/code] is [code]false[/code], it ignores additional input "
+"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the "
+"direction for [InputEventJoypadMotion] events.\n"
"[b]Note:[/b] Due to keyboard ghosting, [method is_action_just_pressed] may "
"return [code]false[/code] even if one of the action's keys is pressed. See "
"[url=$DOCS_URL/tutorials/inputs/input_examples.html#keyboard-events]Input "
@@ -31483,9 +31500,9 @@ 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."
+"If [code]exact[/code] is [code]false[/code], it ignores additional input "
+"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the "
+"direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/Input.xml
@@ -31494,9 +31511,9 @@ msgid ""
"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.\n"
+"If [code]exact[/code] is [code]false[/code], it ignores additional input "
+"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the "
+"direction for [InputEventJoypadMotion] events.\n"
"[b]Note:[/b] Due to keyboard ghosting, [method is_action_pressed] may return "
"[code]false[/code] even if one of the action's keys is pressed. See "
"[url=$DOCS_URL/tutorials/inputs/input_examples.html#keyboard-events]Input "
@@ -31849,18 +31866,18 @@ msgstr ""
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."
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/InputEvent.xml
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."
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/InputEvent.xml
@@ -31869,9 +31886,9 @@ msgid ""
"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.\n"
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events.\n"
"[b]Note:[/b] Due to keyboard ghosting, [method is_action_pressed] may return "
"[code]false[/code] even if one of the action's keys is pressed. See "
"[url=$DOCS_URL/tutorials/inputs/input_examples.html#keyboard-events]Input "
@@ -31883,9 +31900,9 @@ 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."
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/InputEvent.xml
@@ -31916,9 +31933,9 @@ msgid ""
"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."
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/InputEvent.xml
@@ -32449,9 +32466,9 @@ msgid ""
"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."
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/InputMap.xml
@@ -36302,6 +36319,39 @@ msgid "Returns the number of surface materials."
msgstr ""
#: doc/classes/MeshInstance.xml
+msgid ""
+"Returns [code]true[/code] if this [MeshInstance] can be merged with the "
+"specified [code]other_mesh_instance[/code], using the [method MeshInstance."
+"merge_meshes] function.\n"
+"In order to be mergeable, properties of the [MeshInstance] must match, and "
+"each surface must match, in terms of material, attributes and vertex format."
+msgstr ""
+
+#: doc/classes/MeshInstance.xml
+msgid ""
+"This function can merge together the data from several source "
+"[MeshInstance]s into a single destination [MeshInstance] (the MeshInstance "
+"the function is called from). This is primarily useful for improving "
+"performance by reducing the number of drawcalls and [Node]s.\n"
+"Merging should only be attempted for simple meshes that do not contain "
+"animation.\n"
+"The final vertices can either be returned in global space, or in local space "
+"relative to the destination [MeshInstance] global transform (the destination "
+"Node must be inside the [SceneTree] for local space to work).\n"
+"The function will make a final check for compatibility between the "
+"[MeshInstance]s by default, this should always be used unless you have "
+"previously checked for compatibility using [method MeshInstance."
+"is_mergeable_with]. If the compatibility check is omitted and the meshes are "
+"merged, you may see rendering errors.\n"
+"[b]Note:[/b] The requirements for similarity between meshes are quite "
+"stringent. They can be checked using the [method MeshInstance."
+"is_mergeable_with] function prior to calling [method MeshInstance."
+"merge_meshes].\n"
+"Also note that any initial data in the destination [MeshInstance] data will "
+"be discarded."
+msgstr ""
+
+#: doc/classes/MeshInstance.xml
msgid "Sets the [Material] for a surface of the [Mesh] resource."
msgstr ""
@@ -38814,12 +38864,12 @@ msgid ""
"[/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."
+"typically relevant for [url=$DOCS_URL/tutorials/misc/"
+"running_code_in_the_editor.html]tool scripts[/url] and [url=$DOCS_URL/"
+"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
@@ -39529,7 +39579,15 @@ msgid ""
"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."
+"subinstancing.\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=$DOCS_URL/tutorials/misc/"
+"running_code_in_the_editor.html]tool scripts[/url] and [url=$DOCS_URL/"
+"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
@@ -40125,7 +40183,13 @@ msgid ""
msgstr ""
#: doc/classes/Object.xml
-msgid "Called when the object is initialized."
+msgid ""
+"Called when the object is initialized in memory. Can be defined to take in "
+"parameters, that are passed in when constructing.\n"
+"[b]Note:[/b] If [method _init] is defined with required parameters, then "
+"explicit construction is the only valid means of creating an Object of the "
+"class. If any other means (such as [method PackedScene.instance]) is used, "
+"then initialization will fail."
msgstr ""
#: doc/classes/Object.xml
@@ -45428,7 +45492,10 @@ msgid ""
msgstr ""
#: doc/classes/PhysicsServer.xml
-msgid "Returns an Info defined by the [enum ProcessInfo] input given."
+msgid ""
+"Returns information about the current state of the 3D physics engine. See "
+"[enum ProcessInfo] for a list of available states. Only implemented for "
+"Godot Physics."
msgstr ""
#: doc/classes/PhysicsServer.xml
@@ -58571,8 +58638,8 @@ msgid ""
"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"
+"print(some_array[0]) # Prints \"One,Two,Three\"\n"
+"print(some_array[1]) # Prints \"Four\"\n"
"[/codeblock]"
msgstr ""
diff --git a/doc/translations/el.po b/doc/translations/el.po
index 07ba0eeae0..3e3686d93d 100644
--- a/doc/translations/el.po
+++ b/doc/translations/el.po
@@ -3330,8 +3330,12 @@ msgstr ""
#: doc/classes/@GlobalScope.xml
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]."
+"pick in a list specified via a hint string.\n"
+"The hint string is a comma separated list of names such as [code]\"Hello,"
+"Something,Else\"[/code]. For integer and float properties, the first name in "
+"the list has value 0, the next 1, and so on. Explicit values can also be "
+"specified by appending [code]:integer[/code] to the name, e.g. [code]\"Zero,"
+"One,Three:3,Four,Six:6\"[/code]."
msgstr ""
#: doc/classes/@GlobalScope.xml
@@ -5245,8 +5249,11 @@ msgstr ""
#: doc/classes/AnimationNodeBlendTree.xml
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."
+"This node may contain a sub-tree of any other blend type nodes, such as "
+"[AnimationNodeTransition], [AnimationNodeBlend2], [AnimationNodeBlend3], "
+"[AnimationNodeOneShot], etc. This is one of the most commonly used roots.\n"
+"An [AnimationNodeOutput] node named [code]output[/code] is created by "
+"default."
msgstr ""
#: doc/classes/AnimationNodeBlendTree.xml
@@ -10366,8 +10373,15 @@ msgstr ""
#: doc/classes/BakedLightmap.xml
msgid ""
-"When enabled, the lightmapper will merge the textures for all meshes into a "
-"single large layered texture. Not supported in GLES2."
+"If [code]true[/code], the lightmapper will merge the textures for all meshes "
+"into one or several large layered textures. If [code]false[/code], every "
+"mesh will get its own lightmap texture, which is less efficient.\n"
+"[b]Note:[/b] Atlas lightmap rendering is only supported in GLES3, [i]not[/i] "
+"GLES2. Non-atlas lightmap rendering is supported by both GLES3 and GLES2. If "
+"[member ProjectSettings.rendering/quality/driver/fallback_to_gles2] is "
+"[code]true[/code], consider baking lightmaps with [member atlas_generate] "
+"set to [code]false[/code] so that the resulting lightmap is visible in both "
+"GLES3 and GLES2."
msgstr ""
#: doc/classes/BakedLightmap.xml
@@ -12521,14 +12535,15 @@ msgstr ""
#: doc/classes/CanvasItem.xml
msgid ""
-"If [code]enable[/code] is [code]true[/code], children will be updated with "
-"local transform data."
+"If [code]enable[/code] is [code]true[/code], this node will receive "
+"[constant NOTIFICATION_LOCAL_TRANSFORM_CHANGED] when its local transform "
+"changes."
msgstr ""
#: doc/classes/CanvasItem.xml
msgid ""
-"If [code]enable[/code] is [code]true[/code], children will be updated with "
-"global transform data."
+"If [code]enable[/code] is [code]true[/code], this node will receive "
+"[constant NOTIFICATION_TRANSFORM_CHANGED] when its global transform changes."
msgstr ""
#: doc/classes/CanvasItem.xml
@@ -12642,9 +12657,14 @@ msgstr ""
#: doc/classes/CanvasItem.xml
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]."
+"The [CanvasItem]'s global transform has changed. This notification is only "
+"received if enabled by [method set_notify_transform]."
+msgstr ""
+
+#: doc/classes/CanvasItem.xml
+msgid ""
+"The [CanvasItem]'s local transform has changed. This notification is only "
+"received if enabled by [method set_notify_local_transform]."
msgstr ""
#: doc/classes/CanvasItem.xml
@@ -19617,9 +19637,8 @@ msgid ""
"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"
+"OpenType ([code].otf[/code]), Web Open Font Format 1 ([code].woff[/code]), "
+"and Web Open Font Format 2 ([code].woff2[/code]).\n"
"[codeblock]\n"
"var dynamic_font = DynamicFont.new()\n"
"dynamic_font.font_data = load(\"res://BarlowCondensed-Bold.ttf\")\n"
@@ -22410,12 +22429,13 @@ msgstr ""
#: doc/classes/EditorVCSInterface.xml
msgid ""
"Helper function to create a commit [Dictionary] item. [code]msg[/code] is "
-"the commit message of the commit. [code]author[/code] is a human-readable "
-"string containing the author's details, e.g. the email and name configured "
-"in the VCS. [code]id[/code] is the identifier of the commit, in whichever "
-"format your VCS may provide an identifier to commits. [code]date[/code] is "
-"directly added to the commit item and displayed in the editor, and hence, it "
-"shall be a well-formatted, human-readable date string."
+"the commit message of the commit. [code]author[/code] is a single human-"
+"readable string containing all the author's details, e.g. the email and name "
+"configured in the VCS. [code]id[/code] is the identifier of the commit, in "
+"whichever format your VCS may provide an identifier to commits. "
+"[code]unix_timestamp[/code] is the UTC Unix timestamp of when the commit was "
+"created. [code]offset_minutes[/code] is the timezone offset in minutes, "
+"recorded from the system timezone where the commit was created."
msgstr ""
#: doc/classes/EditorVCSInterface.xml
@@ -29008,9 +29028,9 @@ 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."
+"If [code]exact[/code] is [code]false[/code], it ignores additional input "
+"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the "
+"direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/Input.xml
@@ -29020,9 +29040,9 @@ msgid ""
"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."
+"If [code]exact[/code] is [code]false[/code], it ignores additional input "
+"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the "
+"direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/Input.xml
@@ -29155,9 +29175,9 @@ msgid ""
"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.\n"
+"If [code]exact[/code] is [code]false[/code], it ignores additional input "
+"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the "
+"direction for [InputEventJoypadMotion] events.\n"
"[b]Note:[/b] Due to keyboard ghosting, [method is_action_just_pressed] may "
"return [code]false[/code] even if one of the action's keys is pressed. See "
"[url=$DOCS_URL/tutorials/inputs/input_examples.html#keyboard-events]Input "
@@ -29169,9 +29189,9 @@ 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."
+"If [code]exact[/code] is [code]false[/code], it ignores additional input "
+"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the "
+"direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/Input.xml
@@ -29180,9 +29200,9 @@ msgid ""
"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.\n"
+"If [code]exact[/code] is [code]false[/code], it ignores additional input "
+"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the "
+"direction for [InputEventJoypadMotion] events.\n"
"[b]Note:[/b] Due to keyboard ghosting, [method is_action_pressed] may return "
"[code]false[/code] even if one of the action's keys is pressed. See "
"[url=$DOCS_URL/tutorials/inputs/input_examples.html#keyboard-events]Input "
@@ -29532,18 +29552,18 @@ msgstr ""
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."
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/InputEvent.xml
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."
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/InputEvent.xml
@@ -29552,9 +29572,9 @@ msgid ""
"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.\n"
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events.\n"
"[b]Note:[/b] Due to keyboard ghosting, [method is_action_pressed] may return "
"[code]false[/code] even if one of the action's keys is pressed. See "
"[url=$DOCS_URL/tutorials/inputs/input_examples.html#keyboard-events]Input "
@@ -29566,9 +29586,9 @@ 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."
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/InputEvent.xml
@@ -29599,9 +29619,9 @@ msgid ""
"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."
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/InputEvent.xml
@@ -30132,9 +30152,9 @@ msgid ""
"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."
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/InputMap.xml
@@ -33971,6 +33991,39 @@ msgid "Returns the number of surface materials."
msgstr ""
#: doc/classes/MeshInstance.xml
+msgid ""
+"Returns [code]true[/code] if this [MeshInstance] can be merged with the "
+"specified [code]other_mesh_instance[/code], using the [method MeshInstance."
+"merge_meshes] function.\n"
+"In order to be mergeable, properties of the [MeshInstance] must match, and "
+"each surface must match, in terms of material, attributes and vertex format."
+msgstr ""
+
+#: doc/classes/MeshInstance.xml
+msgid ""
+"This function can merge together the data from several source "
+"[MeshInstance]s into a single destination [MeshInstance] (the MeshInstance "
+"the function is called from). This is primarily useful for improving "
+"performance by reducing the number of drawcalls and [Node]s.\n"
+"Merging should only be attempted for simple meshes that do not contain "
+"animation.\n"
+"The final vertices can either be returned in global space, or in local space "
+"relative to the destination [MeshInstance] global transform (the destination "
+"Node must be inside the [SceneTree] for local space to work).\n"
+"The function will make a final check for compatibility between the "
+"[MeshInstance]s by default, this should always be used unless you have "
+"previously checked for compatibility using [method MeshInstance."
+"is_mergeable_with]. If the compatibility check is omitted and the meshes are "
+"merged, you may see rendering errors.\n"
+"[b]Note:[/b] The requirements for similarity between meshes are quite "
+"stringent. They can be checked using the [method MeshInstance."
+"is_mergeable_with] function prior to calling [method MeshInstance."
+"merge_meshes].\n"
+"Also note that any initial data in the destination [MeshInstance] data will "
+"be discarded."
+msgstr ""
+
+#: doc/classes/MeshInstance.xml
msgid "Sets the [Material] for a surface of the [Mesh] resource."
msgstr ""
@@ -36443,12 +36496,12 @@ msgid ""
"[/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."
+"typically relevant for [url=$DOCS_URL/tutorials/misc/"
+"running_code_in_the_editor.html]tool scripts[/url] and [url=$DOCS_URL/"
+"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
@@ -37155,7 +37208,15 @@ msgid ""
"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."
+"subinstancing.\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=$DOCS_URL/tutorials/misc/"
+"running_code_in_the_editor.html]tool scripts[/url] and [url=$DOCS_URL/"
+"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
@@ -37751,7 +37812,13 @@ msgid ""
msgstr ""
#: doc/classes/Object.xml
-msgid "Called when the object is initialized."
+msgid ""
+"Called when the object is initialized in memory. Can be defined to take in "
+"parameters, that are passed in when constructing.\n"
+"[b]Note:[/b] If [method _init] is defined with required parameters, then "
+"explicit construction is the only valid means of creating an Object of the "
+"class. If any other means (such as [method PackedScene.instance]) is used, "
+"then initialization will fail."
msgstr ""
#: doc/classes/Object.xml
@@ -43006,7 +43073,10 @@ msgid ""
msgstr ""
#: doc/classes/PhysicsServer.xml
-msgid "Returns an Info defined by the [enum ProcessInfo] input given."
+msgid ""
+"Returns information about the current state of the 3D physics engine. See "
+"[enum ProcessInfo] for a list of available states. Only implemented for "
+"Godot Physics."
msgstr ""
#: doc/classes/PhysicsServer.xml
@@ -55938,8 +56008,8 @@ msgid ""
"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"
+"print(some_array[0]) # Prints \"One,Two,Three\"\n"
+"print(some_array[1]) # Prints \"Four\"\n"
"[/codeblock]"
msgstr ""
diff --git a/doc/translations/es.po b/doc/translations/es.po
index e80ab772c3..cdf58c19fa 100644
--- a/doc/translations/es.po
+++ b/doc/translations/es.po
@@ -32,12 +32,13 @@
# Alejandro Pérez <alejandro.pr.rz@gmail.com>, 2022.
# Cristhian Pineda Castro <kurgancpc@hotmail.com>, 2022.
# Francesco Santoro <fgsantoror20@gmail.com>, 2022.
+# Jake-insane <jake0insane@gmail.com>, 2022.
msgid ""
msgstr ""
"Project-Id-Version: Godot Engine class reference\n"
"Report-Msgid-Bugs-To: https://github.com/godotengine/godot\n"
-"PO-Revision-Date: 2022-03-05 03:08+0000\n"
-"Last-Translator: Francesco Santoro <fgsantoror20@gmail.com>\n"
+"PO-Revision-Date: 2022-03-26 23:26+0000\n"
+"Last-Translator: Javier Ocampos <xavier.ocampos@gmail.com>\n"
"Language-Team: Spanish <https://hosted.weblate.org/projects/godot-engine/"
"godot-class-reference/es/>\n"
"Language: es\n"
@@ -108,9 +109,8 @@ msgid "Default"
msgstr "Por defecto"
#: doc/tools/make_rst.py
-#, fuzzy
msgid "Setter"
-msgstr "Método Configurador o Setter"
+msgstr "Regulador o fijador"
#: doc/tools/make_rst.py
msgid "value"
@@ -4401,12 +4401,13 @@ msgstr ""
#: doc/classes/@GlobalScope.xml
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]."
+"pick in a list specified via a hint string.\n"
+"The hint string is a comma separated list of names such as [code]\"Hello,"
+"Something,Else\"[/code]. For integer and float properties, the first name in "
+"the list has value 0, the next 1, and so on. Explicit values can also be "
+"specified by appending [code]:integer[/code] to the name, e.g. [code]\"Zero,"
+"One,Three:3,Four,Six:6\"[/code]."
msgstr ""
-"Sugerencias de que una propiedad entera, real o de cadena es un valor "
-"enumerado para elegir en una lista especificada a través de una string de "
-"sugerencias como [code]\"Hello,Something,Else\"[/code]."
#: doc/classes/@GlobalScope.xml
msgid ""
@@ -6533,9 +6534,8 @@ msgstr ""
#: doc/classes/AnimationNodeOneShot.xml doc/classes/AnimationNodeOutput.xml
#: doc/classes/AnimationNodeTimeScale.xml
#: doc/classes/AnimationNodeTransition.xml
-#, fuzzy
msgid "AnimationTree"
-msgstr "Nodo desconocido."
+msgstr "AnimationTree"
#: doc/classes/AnimationNodeAdd3.xml doc/classes/AnimationNodeAnimation.xml
#: doc/classes/AnimationNodeBlend2.xml
@@ -6906,9 +6906,13 @@ msgstr ""
"mezcla."
#: doc/classes/AnimationNodeBlendTree.xml
+#, fuzzy
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."
+"This node may contain a sub-tree of any other blend type nodes, such as "
+"[AnimationNodeTransition], [AnimationNodeBlend2], [AnimationNodeBlend3], "
+"[AnimationNodeOneShot], etc. This is one of the most commonly used roots.\n"
+"An [AnimationNodeOutput] node named [code]output[/code] is created by "
+"default."
msgstr ""
"Este nodo puede contener un subárbol de cualquier otro tipo de nodos de "
"mezcla, como mix, blend2, blend3, one shot, etc. Esta es una de los nodos "
@@ -13630,8 +13634,15 @@ msgstr ""
#: doc/classes/BakedLightmap.xml
msgid ""
-"When enabled, the lightmapper will merge the textures for all meshes into a "
-"single large layered texture. Not supported in GLES2."
+"If [code]true[/code], the lightmapper will merge the textures for all meshes "
+"into one or several large layered textures. If [code]false[/code], every "
+"mesh will get its own lightmap texture, which is less efficient.\n"
+"[b]Note:[/b] Atlas lightmap rendering is only supported in GLES3, [i]not[/i] "
+"GLES2. Non-atlas lightmap rendering is supported by both GLES3 and GLES2. If "
+"[member ProjectSettings.rendering/quality/driver/fallback_to_gles2] is "
+"[code]true[/code], consider baking lightmaps with [member atlas_generate] "
+"set to [code]false[/code] so that the resulting lightmap is visible in both "
+"GLES3 and GLES2."
msgstr ""
#: doc/classes/BakedLightmap.xml
@@ -16454,17 +16465,20 @@ msgstr ""
"transformación de los objetos del canvas padre."
#: doc/classes/CanvasItem.xml
+#, fuzzy
msgid ""
-"If [code]enable[/code] is [code]true[/code], children will be updated with "
-"local transform data."
+"If [code]enable[/code] is [code]true[/code], this node will receive "
+"[constant NOTIFICATION_LOCAL_TRANSFORM_CHANGED] when its local transform "
+"changes."
msgstr ""
"Si [code]enable[/code] es [code]true[/code], los hijos serán actualizados "
"con datos de transformación local."
#: doc/classes/CanvasItem.xml
+#, fuzzy
msgid ""
-"If [code]enable[/code] is [code]true[/code], children will be updated with "
-"global transform data."
+"If [code]enable[/code] is [code]true[/code], this node will receive "
+"[constant NOTIFICATION_TRANSFORM_CHANGED] when its global transform changes."
msgstr ""
"Si [code]enable[/code] es [code]true[/code], los hijos serán actualizados "
"con los datos de transformación global."
@@ -16604,10 +16618,20 @@ msgid ""
msgstr ""
#: doc/classes/CanvasItem.xml
+#, fuzzy
msgid ""
-"The [CanvasItem]'s transform has changed. This notification is only received "
-"if enabled by [method set_notify_transform] or [method "
+"The [CanvasItem]'s global transform has changed. This notification is only "
+"received if enabled by [method set_notify_transform]."
+msgstr ""
+"La transformada del [CanvasItem] ha cambiado. Esta notificación sólo se "
+"recibe si está habilitada por [method set_notify_transform] o [method "
"set_notify_local_transform]."
+
+#: doc/classes/CanvasItem.xml
+#, fuzzy
+msgid ""
+"The [CanvasItem]'s local transform has changed. This notification is only "
+"received if enabled by [method set_notify_local_transform]."
msgstr ""
"La transformada del [CanvasItem] ha cambiado. Esta notificación sólo se "
"recibe si está habilitada por [method set_notify_transform] o [method "
@@ -25949,9 +25973,8 @@ msgid ""
"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"
+"OpenType ([code].otf[/code]), Web Open Font Format 1 ([code].woff[/code]), "
+"and Web Open Font Format 2 ([code].woff2[/code]).\n"
"[codeblock]\n"
"var dynamic_font = DynamicFont.new()\n"
"dynamic_font.font_data = load(\"res://BarlowCondensed-Bold.ttf\")\n"
@@ -29721,12 +29744,13 @@ msgstr ""
#: doc/classes/EditorVCSInterface.xml
msgid ""
"Helper function to create a commit [Dictionary] item. [code]msg[/code] is "
-"the commit message of the commit. [code]author[/code] is a human-readable "
-"string containing the author's details, e.g. the email and name configured "
-"in the VCS. [code]id[/code] is the identifier of the commit, in whichever "
-"format your VCS may provide an identifier to commits. [code]date[/code] is "
-"directly added to the commit item and displayed in the editor, and hence, it "
-"shall be a well-formatted, human-readable date string."
+"the commit message of the commit. [code]author[/code] is a single human-"
+"readable string containing all the author's details, e.g. the email and name "
+"configured in the VCS. [code]id[/code] is the identifier of the commit, in "
+"whichever format your VCS may provide an identifier to commits. "
+"[code]unix_timestamp[/code] is the UTC Unix timestamp of when the commit was "
+"created. [code]offset_minutes[/code] is the timezone offset in minutes, "
+"recorded from the system timezone where the commit was created."
msgstr ""
#: doc/classes/EditorVCSInterface.xml
@@ -38558,14 +38582,18 @@ msgid ""
msgstr ""
#: doc/classes/Input.xml
+#, fuzzy
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."
+"If [code]exact[/code] is [code]false[/code], it ignores additional input "
+"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the "
+"direction for [InputEventJoypadMotion] events."
msgstr ""
+"Devuelve un valor entre 0.0 y 1.0 dependiendo del estado de las acciones "
+"dadas. Es útil para obtener el valor de los eventos del tipo "
+"[InputEventJoypadMotion]."
#: doc/classes/Input.xml
#, fuzzy
@@ -38575,9 +38603,9 @@ msgid ""
"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."
+"If [code]exact[/code] is [code]false[/code], it ignores additional input "
+"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the "
+"direction for [InputEventJoypadMotion] events."
msgstr ""
"Devuelve un valor entre 0 y 1 que representa la intensidad de la acción "
"dada. En un joypad, por ejemplo, cuanto más lejos esté el eje (palos "
@@ -38740,9 +38768,9 @@ msgid ""
"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.\n"
+"If [code]exact[/code] is [code]false[/code], it ignores additional input "
+"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the "
+"direction for [InputEventJoypadMotion] events.\n"
"[b]Note:[/b] Due to keyboard ghosting, [method is_action_just_pressed] may "
"return [code]false[/code] even if one of the action's keys is pressed. See "
"[url=$DOCS_URL/tutorials/inputs/input_examples.html#keyboard-events]Input "
@@ -38760,9 +38788,9 @@ 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."
+"If [code]exact[/code] is [code]false[/code], it ignores additional input "
+"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the "
+"direction for [InputEventJoypadMotion] events."
msgstr ""
"Devuelve [code]true[/code] cuando el usuario empieza a pulsar el evento de "
"acción, lo que significa que es [code]true[/code] sólo en el marco en el que "
@@ -38777,9 +38805,9 @@ msgid ""
"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.\n"
+"If [code]exact[/code] is [code]false[/code], it ignores additional input "
+"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the "
+"direction for [InputEventJoypadMotion] events.\n"
"[b]Note:[/b] Due to keyboard ghosting, [method is_action_pressed] may return "
"[code]false[/code] even if one of the action's keys is pressed. See "
"[url=$DOCS_URL/tutorials/inputs/input_examples.html#keyboard-events]Input "
@@ -39248,22 +39276,27 @@ msgstr "Devuelve una representación [String] del evento."
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."
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events."
msgstr ""
"Devuelve un valor entre 0.0 y 1.0 dependiendo del estado de las acciones "
"dadas. Es útil para obtener el valor de los eventos del tipo "
"[InputEventJoypadMotion]."
#: doc/classes/InputEvent.xml
+#, fuzzy
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."
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events."
msgstr ""
+"Devuelve [code]true[/code] si se está pulsando la acción dada (y no es un "
+"evento de eco para los eventos [InputEventKey], a menos que "
+"[code]allow_echo[/code] sea [code]true[/code]). No es relevante para los "
+"eventos de tipo [InputEventMouseMotion] o [InputEventScreenDrag]."
#: doc/classes/InputEvent.xml
#, fuzzy
@@ -39272,9 +39305,9 @@ msgid ""
"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.\n"
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events.\n"
"[b]Note:[/b] Due to keyboard ghosting, [method is_action_pressed] may return "
"[code]false[/code] even if one of the action's keys is pressed. See "
"[url=$DOCS_URL/tutorials/inputs/input_examples.html#keyboard-events]Input "
@@ -39291,9 +39324,9 @@ 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."
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events."
msgstr ""
"Devuelve [code]true[/code] si se está pulsando la acción dada (y no es un "
"evento de eco para los eventos [InputEventKey], a menos que "
@@ -39332,15 +39365,20 @@ msgstr ""
"eventos de tipo [InputEventMouseMotion] o [InputEventScreenDrag]."
#: doc/classes/InputEvent.xml
+#, fuzzy
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."
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events."
msgstr ""
+"Devuelve [code]true[/code] si se está pulsando la acción dada (y no es un "
+"evento de eco para los eventos [InputEventKey], a menos que "
+"[code]allow_echo[/code] sea [code]true[/code]). No es relevante para los "
+"eventos de tipo [InputEventMouseMotion] o [InputEventScreenDrag]."
#: doc/classes/InputEvent.xml
msgid ""
@@ -40021,9 +40059,9 @@ msgid ""
"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."
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events."
msgstr ""
"Devuelve [code]true[/code] si el evento dado es parte de una acción "
"existente. Este método ignora los modificadores de teclado si no se pulsa el "
@@ -45077,6 +45115,39 @@ msgid "Returns the number of surface materials."
msgstr "Devuelve el número de materiales de la superficie."
#: doc/classes/MeshInstance.xml
+msgid ""
+"Returns [code]true[/code] if this [MeshInstance] can be merged with the "
+"specified [code]other_mesh_instance[/code], using the [method MeshInstance."
+"merge_meshes] function.\n"
+"In order to be mergeable, properties of the [MeshInstance] must match, and "
+"each surface must match, in terms of material, attributes and vertex format."
+msgstr ""
+
+#: doc/classes/MeshInstance.xml
+msgid ""
+"This function can merge together the data from several source "
+"[MeshInstance]s into a single destination [MeshInstance] (the MeshInstance "
+"the function is called from). This is primarily useful for improving "
+"performance by reducing the number of drawcalls and [Node]s.\n"
+"Merging should only be attempted for simple meshes that do not contain "
+"animation.\n"
+"The final vertices can either be returned in global space, or in local space "
+"relative to the destination [MeshInstance] global transform (the destination "
+"Node must be inside the [SceneTree] for local space to work).\n"
+"The function will make a final check for compatibility between the "
+"[MeshInstance]s by default, this should always be used unless you have "
+"previously checked for compatibility using [method MeshInstance."
+"is_mergeable_with]. If the compatibility check is omitted and the meshes are "
+"merged, you may see rendering errors.\n"
+"[b]Note:[/b] The requirements for similarity between meshes are quite "
+"stringent. They can be checked using the [method MeshInstance."
+"is_mergeable_with] function prior to calling [method MeshInstance."
+"merge_meshes].\n"
+"Also note that any initial data in the destination [MeshInstance] data will "
+"be discarded."
+msgstr ""
+
+#: doc/classes/MeshInstance.xml
#, fuzzy
msgid "Sets the [Material] for a surface of the [Mesh] resource."
msgstr ""
@@ -48316,12 +48387,12 @@ msgid ""
"[/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."
+"typically relevant for [url=$DOCS_URL/tutorials/misc/"
+"running_code_in_the_editor.html]tool scripts[/url] and [url=$DOCS_URL/"
+"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 ""
"Añade un nodo infantil. Los nodos pueden tener cualquier número de niños, "
"pero cada niño debe tener un nombre único. Los nodos hijos se eliminan "
@@ -49375,18 +49446,48 @@ msgstr ""
"será renombrado automáticamente."
#: doc/classes/Node.xml
+#, fuzzy
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."
+"subinstancing.\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=$DOCS_URL/tutorials/misc/"
+"running_code_in_the_editor.html]tool scripts[/url] and [url=$DOCS_URL/"
+"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 ""
-"El dueño del nodo. Un nodo puede tener cualquier otro nodo como propietario "
-"(siempre que sea un padre, abuelo, etc. válido ascendente en el árbol). "
-"Cuando se guarda un nodo (usando [PackedScene]), todos los nodos que posee "
-"se guardarán con él. Esto permite la creación de [SceneTree] complejos, con "
-"instanciación y subinstanciación."
+"Añade un nodo infantil. Los nodos pueden tener cualquier número de niños, "
+"pero cada niño debe tener un nombre único. Los nodos hijos se eliminan "
+"automáticamente cuando se elimina el nodo padre, por lo que una escena "
+"entera puede ser eliminada eliminando su nodo superior.\n"
+"Si [code]legible_unique_name[/code] es [code]true[/code], el nodo hijo "
+"tendrá un nombre legible para los humanos basado en el nombre del nodo que "
+"se instale en lugar de su tipo.\n"
+"[b]Nota:[/b] Si el nodo hijo ya tiene un padre, la función fallará. Use "
+"[method remove_child] primero para eliminar el nodo de su padre actual. Por "
+"ejemplo:\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"
+"Si necesita que el nodo hijo se añada debajo de un nodo específico en la "
+"lista de hijos, use [method add_sibling] en lugar de este método.\n"
+"[b]Nota:[/b] Si quieres que un hijo sea perseguido en un [PackedScene], "
+"debes establecer [member owner] además de llamar a [method add_child]. Esto "
+"es típicamente relevante para los scripts de la herramienta [url=https://"
+"godot.readthedocs.io/es/latest/tutorials/misc/running_code_in_the_editor."
+"html]tool[/url] y para los plugins de edición [/url] de [url=https://godot."
+"readthedocs.io/es/latest/tutorials/plugins/editor/index.html]. Si se llama a "
+"[method add_child] sin establecer [member owner], el [Node] recién agregado "
+"no será visible en el árbol de la escena, aunque sí lo será en la vista "
+"2D/3D."
#: doc/classes/Node.xml
msgid "Pause mode. How the node will behave if the [SceneTree] is paused."
@@ -50227,8 +50328,14 @@ msgstr ""
"code] (ver [enum PropertyUsageFlags])."
#: doc/classes/Object.xml
-msgid "Called when the object is initialized."
-msgstr "Se llama cuando el objeto se inicializa."
+msgid ""
+"Called when the object is initialized in memory. Can be defined to take in "
+"parameters, that are passed in when constructing.\n"
+"[b]Note:[/b] If [method _init] is defined with required parameters, then "
+"explicit construction is the only valid means of creating an Object of the "
+"class. If any other means (such as [method PackedScene.instance]) is used, "
+"then initialization will fail."
+msgstr ""
#: doc/classes/Object.xml
msgid ""
@@ -57277,9 +57384,14 @@ msgstr ""
"G6DOFJointAxisParam])."
#: doc/classes/PhysicsServer.xml
-msgid "Returns an Info defined by the [enum ProcessInfo] input given."
+#, fuzzy
+msgid ""
+"Returns information about the current state of the 3D physics engine. See "
+"[enum ProcessInfo] for a list of available states. Only implemented for "
+"Godot Physics."
msgstr ""
-"Devuelve una información definida por la entrada [enum ProcessInfo] dada."
+"Devuelve información sobre el estado actual del motor de física 2D. Ver "
+"[enum ProcessInfo] para una lista de los estados disponibles."
#: doc/classes/PhysicsServer.xml
msgid "Gets a hinge_joint flag (see [enum HingeJointFlag] constants)."
@@ -73940,6 +74052,7 @@ msgid "Returns the right side of the string from a given position."
msgstr "Devuelve el lado derecho de la string desde una posición determinada."
#: doc/classes/String.xml
+#, fuzzy
msgid ""
"Splits the string by a [code]delimiter[/code] string and returns an array of "
"the substrings, starting from right.\n"
@@ -73953,8 +74066,8 @@ msgid ""
"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"
+"print(some_array[0]) # Prints \"One,Two,Three\"\n"
+"print(some_array[1]) # Prints \"Four\"\n"
"[/codeblock]"
msgstr ""
"Divide la string por un string de [code]delimiter[/code] y devuelve un array "
diff --git a/doc/translations/fa.po b/doc/translations/fa.po
index 162470f04c..c4eebb3371 100644
--- a/doc/translations/fa.po
+++ b/doc/translations/fa.po
@@ -3755,8 +3755,12 @@ msgstr ""
#: doc/classes/@GlobalScope.xml
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]."
+"pick in a list specified via a hint string.\n"
+"The hint string is a comma separated list of names such as [code]\"Hello,"
+"Something,Else\"[/code]. For integer and float properties, the first name in "
+"the list has value 0, the next 1, and so on. Explicit values can also be "
+"specified by appending [code]:integer[/code] to the name, e.g. [code]\"Zero,"
+"One,Three:3,Four,Six:6\"[/code]."
msgstr ""
#: doc/classes/@GlobalScope.xml
@@ -5668,8 +5672,11 @@ msgstr ""
#: doc/classes/AnimationNodeBlendTree.xml
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."
+"This node may contain a sub-tree of any other blend type nodes, such as "
+"[AnimationNodeTransition], [AnimationNodeBlend2], [AnimationNodeBlend3], "
+"[AnimationNodeOneShot], etc. This is one of the most commonly used roots.\n"
+"An [AnimationNodeOutput] node named [code]output[/code] is created by "
+"default."
msgstr ""
#: doc/classes/AnimationNodeBlendTree.xml
@@ -10788,8 +10795,15 @@ msgstr ""
#: doc/classes/BakedLightmap.xml
msgid ""
-"When enabled, the lightmapper will merge the textures for all meshes into a "
-"single large layered texture. Not supported in GLES2."
+"If [code]true[/code], the lightmapper will merge the textures for all meshes "
+"into one or several large layered textures. If [code]false[/code], every "
+"mesh will get its own lightmap texture, which is less efficient.\n"
+"[b]Note:[/b] Atlas lightmap rendering is only supported in GLES3, [i]not[/i] "
+"GLES2. Non-atlas lightmap rendering is supported by both GLES3 and GLES2. If "
+"[member ProjectSettings.rendering/quality/driver/fallback_to_gles2] is "
+"[code]true[/code], consider baking lightmaps with [member atlas_generate] "
+"set to [code]false[/code] so that the resulting lightmap is visible in both "
+"GLES3 and GLES2."
msgstr ""
#: doc/classes/BakedLightmap.xml
@@ -12937,14 +12951,15 @@ msgstr ""
#: doc/classes/CanvasItem.xml
msgid ""
-"If [code]enable[/code] is [code]true[/code], children will be updated with "
-"local transform data."
+"If [code]enable[/code] is [code]true[/code], this node will receive "
+"[constant NOTIFICATION_LOCAL_TRANSFORM_CHANGED] when its local transform "
+"changes."
msgstr ""
#: doc/classes/CanvasItem.xml
msgid ""
-"If [code]enable[/code] is [code]true[/code], children will be updated with "
-"global transform data."
+"If [code]enable[/code] is [code]true[/code], this node will receive "
+"[constant NOTIFICATION_TRANSFORM_CHANGED] when its global transform changes."
msgstr ""
#: doc/classes/CanvasItem.xml
@@ -13058,9 +13073,14 @@ msgstr ""
#: doc/classes/CanvasItem.xml
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]."
+"The [CanvasItem]'s global transform has changed. This notification is only "
+"received if enabled by [method set_notify_transform]."
+msgstr ""
+
+#: doc/classes/CanvasItem.xml
+msgid ""
+"The [CanvasItem]'s local transform has changed. This notification is only "
+"received if enabled by [method set_notify_local_transform]."
msgstr ""
#: doc/classes/CanvasItem.xml
@@ -20022,9 +20042,8 @@ msgid ""
"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"
+"OpenType ([code].otf[/code]), Web Open Font Format 1 ([code].woff[/code]), "
+"and Web Open Font Format 2 ([code].woff2[/code]).\n"
"[codeblock]\n"
"var dynamic_font = DynamicFont.new()\n"
"dynamic_font.font_data = load(\"res://BarlowCondensed-Bold.ttf\")\n"
@@ -22814,12 +22833,13 @@ msgstr ""
#: doc/classes/EditorVCSInterface.xml
msgid ""
"Helper function to create a commit [Dictionary] item. [code]msg[/code] is "
-"the commit message of the commit. [code]author[/code] is a human-readable "
-"string containing the author's details, e.g. the email and name configured "
-"in the VCS. [code]id[/code] is the identifier of the commit, in whichever "
-"format your VCS may provide an identifier to commits. [code]date[/code] is "
-"directly added to the commit item and displayed in the editor, and hence, it "
-"shall be a well-formatted, human-readable date string."
+"the commit message of the commit. [code]author[/code] is a single human-"
+"readable string containing all the author's details, e.g. the email and name "
+"configured in the VCS. [code]id[/code] is the identifier of the commit, in "
+"whichever format your VCS may provide an identifier to commits. "
+"[code]unix_timestamp[/code] is the UTC Unix timestamp of when the commit was "
+"created. [code]offset_minutes[/code] is the timezone offset in minutes, "
+"recorded from the system timezone where the commit was created."
msgstr ""
#: doc/classes/EditorVCSInterface.xml
@@ -29406,9 +29426,9 @@ 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."
+"If [code]exact[/code] is [code]false[/code], it ignores additional input "
+"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the "
+"direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/Input.xml
@@ -29418,9 +29438,9 @@ msgid ""
"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."
+"If [code]exact[/code] is [code]false[/code], it ignores additional input "
+"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the "
+"direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/Input.xml
@@ -29553,9 +29573,9 @@ msgid ""
"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.\n"
+"If [code]exact[/code] is [code]false[/code], it ignores additional input "
+"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the "
+"direction for [InputEventJoypadMotion] events.\n"
"[b]Note:[/b] Due to keyboard ghosting, [method is_action_just_pressed] may "
"return [code]false[/code] even if one of the action's keys is pressed. See "
"[url=$DOCS_URL/tutorials/inputs/input_examples.html#keyboard-events]Input "
@@ -29567,9 +29587,9 @@ 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."
+"If [code]exact[/code] is [code]false[/code], it ignores additional input "
+"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the "
+"direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/Input.xml
@@ -29578,9 +29598,9 @@ msgid ""
"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.\n"
+"If [code]exact[/code] is [code]false[/code], it ignores additional input "
+"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the "
+"direction for [InputEventJoypadMotion] events.\n"
"[b]Note:[/b] Due to keyboard ghosting, [method is_action_pressed] may return "
"[code]false[/code] even if one of the action's keys is pressed. See "
"[url=$DOCS_URL/tutorials/inputs/input_examples.html#keyboard-events]Input "
@@ -29930,18 +29950,18 @@ msgstr ""
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."
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/InputEvent.xml
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."
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/InputEvent.xml
@@ -29950,9 +29970,9 @@ msgid ""
"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.\n"
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events.\n"
"[b]Note:[/b] Due to keyboard ghosting, [method is_action_pressed] may return "
"[code]false[/code] even if one of the action's keys is pressed. See "
"[url=$DOCS_URL/tutorials/inputs/input_examples.html#keyboard-events]Input "
@@ -29964,9 +29984,9 @@ 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."
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/InputEvent.xml
@@ -29997,9 +30017,9 @@ msgid ""
"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."
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/InputEvent.xml
@@ -30529,9 +30549,9 @@ msgid ""
"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."
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/InputMap.xml
@@ -34367,6 +34387,39 @@ msgid "Returns the number of surface materials."
msgstr ""
#: doc/classes/MeshInstance.xml
+msgid ""
+"Returns [code]true[/code] if this [MeshInstance] can be merged with the "
+"specified [code]other_mesh_instance[/code], using the [method MeshInstance."
+"merge_meshes] function.\n"
+"In order to be mergeable, properties of the [MeshInstance] must match, and "
+"each surface must match, in terms of material, attributes and vertex format."
+msgstr ""
+
+#: doc/classes/MeshInstance.xml
+msgid ""
+"This function can merge together the data from several source "
+"[MeshInstance]s into a single destination [MeshInstance] (the MeshInstance "
+"the function is called from). This is primarily useful for improving "
+"performance by reducing the number of drawcalls and [Node]s.\n"
+"Merging should only be attempted for simple meshes that do not contain "
+"animation.\n"
+"The final vertices can either be returned in global space, or in local space "
+"relative to the destination [MeshInstance] global transform (the destination "
+"Node must be inside the [SceneTree] for local space to work).\n"
+"The function will make a final check for compatibility between the "
+"[MeshInstance]s by default, this should always be used unless you have "
+"previously checked for compatibility using [method MeshInstance."
+"is_mergeable_with]. If the compatibility check is omitted and the meshes are "
+"merged, you may see rendering errors.\n"
+"[b]Note:[/b] The requirements for similarity between meshes are quite "
+"stringent. They can be checked using the [method MeshInstance."
+"is_mergeable_with] function prior to calling [method MeshInstance."
+"merge_meshes].\n"
+"Also note that any initial data in the destination [MeshInstance] data will "
+"be discarded."
+msgstr ""
+
+#: doc/classes/MeshInstance.xml
msgid "Sets the [Material] for a surface of the [Mesh] resource."
msgstr ""
@@ -36825,12 +36878,12 @@ msgid ""
"[/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."
+"typically relevant for [url=$DOCS_URL/tutorials/misc/"
+"running_code_in_the_editor.html]tool scripts[/url] and [url=$DOCS_URL/"
+"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
@@ -37537,7 +37590,15 @@ msgid ""
"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."
+"subinstancing.\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=$DOCS_URL/tutorials/misc/"
+"running_code_in_the_editor.html]tool scripts[/url] and [url=$DOCS_URL/"
+"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
@@ -38133,7 +38194,13 @@ msgid ""
msgstr ""
#: doc/classes/Object.xml
-msgid "Called when the object is initialized."
+msgid ""
+"Called when the object is initialized in memory. Can be defined to take in "
+"parameters, that are passed in when constructing.\n"
+"[b]Note:[/b] If [method _init] is defined with required parameters, then "
+"explicit construction is the only valid means of creating an Object of the "
+"class. If any other means (such as [method PackedScene.instance]) is used, "
+"then initialization will fail."
msgstr ""
#: doc/classes/Object.xml
@@ -43389,7 +43456,10 @@ msgid ""
msgstr ""
#: doc/classes/PhysicsServer.xml
-msgid "Returns an Info defined by the [enum ProcessInfo] input given."
+msgid ""
+"Returns information about the current state of the 3D physics engine. See "
+"[enum ProcessInfo] for a list of available states. Only implemented for "
+"Godot Physics."
msgstr ""
#: doc/classes/PhysicsServer.xml
@@ -56317,8 +56387,8 @@ msgid ""
"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"
+"print(some_array[0]) # Prints \"One,Two,Three\"\n"
+"print(some_array[1]) # Prints \"Four\"\n"
"[/codeblock]"
msgstr ""
diff --git a/doc/translations/fi.po b/doc/translations/fi.po
index 300e1dda53..ca7fad636f 100644
--- a/doc/translations/fi.po
+++ b/doc/translations/fi.po
@@ -3397,8 +3397,12 @@ msgstr ""
#: doc/classes/@GlobalScope.xml
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]."
+"pick in a list specified via a hint string.\n"
+"The hint string is a comma separated list of names such as [code]\"Hello,"
+"Something,Else\"[/code]. For integer and float properties, the first name in "
+"the list has value 0, the next 1, and so on. Explicit values can also be "
+"specified by appending [code]:integer[/code] to the name, e.g. [code]\"Zero,"
+"One,Three:3,Four,Six:6\"[/code]."
msgstr ""
#: doc/classes/@GlobalScope.xml
@@ -5312,8 +5316,11 @@ msgstr ""
#: doc/classes/AnimationNodeBlendTree.xml
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."
+"This node may contain a sub-tree of any other blend type nodes, such as "
+"[AnimationNodeTransition], [AnimationNodeBlend2], [AnimationNodeBlend3], "
+"[AnimationNodeOneShot], etc. This is one of the most commonly used roots.\n"
+"An [AnimationNodeOutput] node named [code]output[/code] is created by "
+"default."
msgstr ""
#: doc/classes/AnimationNodeBlendTree.xml
@@ -10439,8 +10446,15 @@ msgstr ""
#: doc/classes/BakedLightmap.xml
msgid ""
-"When enabled, the lightmapper will merge the textures for all meshes into a "
-"single large layered texture. Not supported in GLES2."
+"If [code]true[/code], the lightmapper will merge the textures for all meshes "
+"into one or several large layered textures. If [code]false[/code], every "
+"mesh will get its own lightmap texture, which is less efficient.\n"
+"[b]Note:[/b] Atlas lightmap rendering is only supported in GLES3, [i]not[/i] "
+"GLES2. Non-atlas lightmap rendering is supported by both GLES3 and GLES2. If "
+"[member ProjectSettings.rendering/quality/driver/fallback_to_gles2] is "
+"[code]true[/code], consider baking lightmaps with [member atlas_generate] "
+"set to [code]false[/code] so that the resulting lightmap is visible in both "
+"GLES3 and GLES2."
msgstr ""
#: doc/classes/BakedLightmap.xml
@@ -12596,14 +12610,15 @@ msgstr ""
#: doc/classes/CanvasItem.xml
msgid ""
-"If [code]enable[/code] is [code]true[/code], children will be updated with "
-"local transform data."
+"If [code]enable[/code] is [code]true[/code], this node will receive "
+"[constant NOTIFICATION_LOCAL_TRANSFORM_CHANGED] when its local transform "
+"changes."
msgstr ""
#: doc/classes/CanvasItem.xml
msgid ""
-"If [code]enable[/code] is [code]true[/code], children will be updated with "
-"global transform data."
+"If [code]enable[/code] is [code]true[/code], this node will receive "
+"[constant NOTIFICATION_TRANSFORM_CHANGED] when its global transform changes."
msgstr ""
#: doc/classes/CanvasItem.xml
@@ -12717,9 +12732,14 @@ msgstr ""
#: doc/classes/CanvasItem.xml
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]."
+"The [CanvasItem]'s global transform has changed. This notification is only "
+"received if enabled by [method set_notify_transform]."
+msgstr ""
+
+#: doc/classes/CanvasItem.xml
+msgid ""
+"The [CanvasItem]'s local transform has changed. This notification is only "
+"received if enabled by [method set_notify_local_transform]."
msgstr ""
#: doc/classes/CanvasItem.xml
@@ -19693,9 +19713,8 @@ msgid ""
"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"
+"OpenType ([code].otf[/code]), Web Open Font Format 1 ([code].woff[/code]), "
+"and Web Open Font Format 2 ([code].woff2[/code]).\n"
"[codeblock]\n"
"var dynamic_font = DynamicFont.new()\n"
"dynamic_font.font_data = load(\"res://BarlowCondensed-Bold.ttf\")\n"
@@ -22486,12 +22505,13 @@ msgstr ""
#: doc/classes/EditorVCSInterface.xml
msgid ""
"Helper function to create a commit [Dictionary] item. [code]msg[/code] is "
-"the commit message of the commit. [code]author[/code] is a human-readable "
-"string containing the author's details, e.g. the email and name configured "
-"in the VCS. [code]id[/code] is the identifier of the commit, in whichever "
-"format your VCS may provide an identifier to commits. [code]date[/code] is "
-"directly added to the commit item and displayed in the editor, and hence, it "
-"shall be a well-formatted, human-readable date string."
+"the commit message of the commit. [code]author[/code] is a single human-"
+"readable string containing all the author's details, e.g. the email and name "
+"configured in the VCS. [code]id[/code] is the identifier of the commit, in "
+"whichever format your VCS may provide an identifier to commits. "
+"[code]unix_timestamp[/code] is the UTC Unix timestamp of when the commit was "
+"created. [code]offset_minutes[/code] is the timezone offset in minutes, "
+"recorded from the system timezone where the commit was created."
msgstr ""
#: doc/classes/EditorVCSInterface.xml
@@ -29091,9 +29111,9 @@ 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."
+"If [code]exact[/code] is [code]false[/code], it ignores additional input "
+"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the "
+"direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/Input.xml
@@ -29103,9 +29123,9 @@ msgid ""
"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."
+"If [code]exact[/code] is [code]false[/code], it ignores additional input "
+"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the "
+"direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/Input.xml
@@ -29238,9 +29258,9 @@ msgid ""
"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.\n"
+"If [code]exact[/code] is [code]false[/code], it ignores additional input "
+"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the "
+"direction for [InputEventJoypadMotion] events.\n"
"[b]Note:[/b] Due to keyboard ghosting, [method is_action_just_pressed] may "
"return [code]false[/code] even if one of the action's keys is pressed. See "
"[url=$DOCS_URL/tutorials/inputs/input_examples.html#keyboard-events]Input "
@@ -29252,9 +29272,9 @@ 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."
+"If [code]exact[/code] is [code]false[/code], it ignores additional input "
+"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the "
+"direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/Input.xml
@@ -29263,9 +29283,9 @@ msgid ""
"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.\n"
+"If [code]exact[/code] is [code]false[/code], it ignores additional input "
+"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the "
+"direction for [InputEventJoypadMotion] events.\n"
"[b]Note:[/b] Due to keyboard ghosting, [method is_action_pressed] may return "
"[code]false[/code] even if one of the action's keys is pressed. See "
"[url=$DOCS_URL/tutorials/inputs/input_examples.html#keyboard-events]Input "
@@ -29615,18 +29635,18 @@ msgstr ""
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."
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/InputEvent.xml
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."
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/InputEvent.xml
@@ -29635,9 +29655,9 @@ msgid ""
"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.\n"
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events.\n"
"[b]Note:[/b] Due to keyboard ghosting, [method is_action_pressed] may return "
"[code]false[/code] even if one of the action's keys is pressed. See "
"[url=$DOCS_URL/tutorials/inputs/input_examples.html#keyboard-events]Input "
@@ -29649,9 +29669,9 @@ 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."
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/InputEvent.xml
@@ -29682,9 +29702,9 @@ msgid ""
"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."
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/InputEvent.xml
@@ -30215,9 +30235,9 @@ msgid ""
"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."
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/InputMap.xml
@@ -34055,6 +34075,39 @@ msgid "Returns the number of surface materials."
msgstr ""
#: doc/classes/MeshInstance.xml
+msgid ""
+"Returns [code]true[/code] if this [MeshInstance] can be merged with the "
+"specified [code]other_mesh_instance[/code], using the [method MeshInstance."
+"merge_meshes] function.\n"
+"In order to be mergeable, properties of the [MeshInstance] must match, and "
+"each surface must match, in terms of material, attributes and vertex format."
+msgstr ""
+
+#: doc/classes/MeshInstance.xml
+msgid ""
+"This function can merge together the data from several source "
+"[MeshInstance]s into a single destination [MeshInstance] (the MeshInstance "
+"the function is called from). This is primarily useful for improving "
+"performance by reducing the number of drawcalls and [Node]s.\n"
+"Merging should only be attempted for simple meshes that do not contain "
+"animation.\n"
+"The final vertices can either be returned in global space, or in local space "
+"relative to the destination [MeshInstance] global transform (the destination "
+"Node must be inside the [SceneTree] for local space to work).\n"
+"The function will make a final check for compatibility between the "
+"[MeshInstance]s by default, this should always be used unless you have "
+"previously checked for compatibility using [method MeshInstance."
+"is_mergeable_with]. If the compatibility check is omitted and the meshes are "
+"merged, you may see rendering errors.\n"
+"[b]Note:[/b] The requirements for similarity between meshes are quite "
+"stringent. They can be checked using the [method MeshInstance."
+"is_mergeable_with] function prior to calling [method MeshInstance."
+"merge_meshes].\n"
+"Also note that any initial data in the destination [MeshInstance] data will "
+"be discarded."
+msgstr ""
+
+#: doc/classes/MeshInstance.xml
msgid "Sets the [Material] for a surface of the [Mesh] resource."
msgstr ""
@@ -36528,12 +36581,12 @@ msgid ""
"[/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."
+"typically relevant for [url=$DOCS_URL/tutorials/misc/"
+"running_code_in_the_editor.html]tool scripts[/url] and [url=$DOCS_URL/"
+"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
@@ -37240,7 +37293,15 @@ msgid ""
"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."
+"subinstancing.\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=$DOCS_URL/tutorials/misc/"
+"running_code_in_the_editor.html]tool scripts[/url] and [url=$DOCS_URL/"
+"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
@@ -37836,7 +37897,13 @@ msgid ""
msgstr ""
#: doc/classes/Object.xml
-msgid "Called when the object is initialized."
+msgid ""
+"Called when the object is initialized in memory. Can be defined to take in "
+"parameters, that are passed in when constructing.\n"
+"[b]Note:[/b] If [method _init] is defined with required parameters, then "
+"explicit construction is the only valid means of creating an Object of the "
+"class. If any other means (such as [method PackedScene.instance]) is used, "
+"then initialization will fail."
msgstr ""
#: doc/classes/Object.xml
@@ -43091,7 +43158,10 @@ msgid ""
msgstr ""
#: doc/classes/PhysicsServer.xml
-msgid "Returns an Info defined by the [enum ProcessInfo] input given."
+msgid ""
+"Returns information about the current state of the 3D physics engine. See "
+"[enum ProcessInfo] for a list of available states. Only implemented for "
+"Godot Physics."
msgstr ""
#: doc/classes/PhysicsServer.xml
@@ -56025,8 +56095,8 @@ msgid ""
"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"
+"print(some_array[0]) # Prints \"One,Two,Three\"\n"
+"print(some_array[1]) # Prints \"Four\"\n"
"[/codeblock]"
msgstr ""
diff --git a/doc/translations/fil.po b/doc/translations/fil.po
index f91ed1b6b8..6df4b2d811 100644
--- a/doc/translations/fil.po
+++ b/doc/translations/fil.po
@@ -3323,8 +3323,12 @@ msgstr ""
#: doc/classes/@GlobalScope.xml
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]."
+"pick in a list specified via a hint string.\n"
+"The hint string is a comma separated list of names such as [code]\"Hello,"
+"Something,Else\"[/code]. For integer and float properties, the first name in "
+"the list has value 0, the next 1, and so on. Explicit values can also be "
+"specified by appending [code]:integer[/code] to the name, e.g. [code]\"Zero,"
+"One,Three:3,Four,Six:6\"[/code]."
msgstr ""
#: doc/classes/@GlobalScope.xml
@@ -5236,8 +5240,11 @@ msgstr ""
#: doc/classes/AnimationNodeBlendTree.xml
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."
+"This node may contain a sub-tree of any other blend type nodes, such as "
+"[AnimationNodeTransition], [AnimationNodeBlend2], [AnimationNodeBlend3], "
+"[AnimationNodeOneShot], etc. This is one of the most commonly used roots.\n"
+"An [AnimationNodeOutput] node named [code]output[/code] is created by "
+"default."
msgstr ""
#: doc/classes/AnimationNodeBlendTree.xml
@@ -10356,8 +10363,15 @@ msgstr ""
#: doc/classes/BakedLightmap.xml
msgid ""
-"When enabled, the lightmapper will merge the textures for all meshes into a "
-"single large layered texture. Not supported in GLES2."
+"If [code]true[/code], the lightmapper will merge the textures for all meshes "
+"into one or several large layered textures. If [code]false[/code], every "
+"mesh will get its own lightmap texture, which is less efficient.\n"
+"[b]Note:[/b] Atlas lightmap rendering is only supported in GLES3, [i]not[/i] "
+"GLES2. Non-atlas lightmap rendering is supported by both GLES3 and GLES2. If "
+"[member ProjectSettings.rendering/quality/driver/fallback_to_gles2] is "
+"[code]true[/code], consider baking lightmaps with [member atlas_generate] "
+"set to [code]false[/code] so that the resulting lightmap is visible in both "
+"GLES3 and GLES2."
msgstr ""
#: doc/classes/BakedLightmap.xml
@@ -12505,14 +12519,15 @@ msgstr ""
#: doc/classes/CanvasItem.xml
msgid ""
-"If [code]enable[/code] is [code]true[/code], children will be updated with "
-"local transform data."
+"If [code]enable[/code] is [code]true[/code], this node will receive "
+"[constant NOTIFICATION_LOCAL_TRANSFORM_CHANGED] when its local transform "
+"changes."
msgstr ""
#: doc/classes/CanvasItem.xml
msgid ""
-"If [code]enable[/code] is [code]true[/code], children will be updated with "
-"global transform data."
+"If [code]enable[/code] is [code]true[/code], this node will receive "
+"[constant NOTIFICATION_TRANSFORM_CHANGED] when its global transform changes."
msgstr ""
#: doc/classes/CanvasItem.xml
@@ -12626,9 +12641,14 @@ msgstr ""
#: doc/classes/CanvasItem.xml
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]."
+"The [CanvasItem]'s global transform has changed. This notification is only "
+"received if enabled by [method set_notify_transform]."
+msgstr ""
+
+#: doc/classes/CanvasItem.xml
+msgid ""
+"The [CanvasItem]'s local transform has changed. This notification is only "
+"received if enabled by [method set_notify_local_transform]."
msgstr ""
#: doc/classes/CanvasItem.xml
@@ -19590,9 +19610,8 @@ msgid ""
"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"
+"OpenType ([code].otf[/code]), Web Open Font Format 1 ([code].woff[/code]), "
+"and Web Open Font Format 2 ([code].woff2[/code]).\n"
"[codeblock]\n"
"var dynamic_font = DynamicFont.new()\n"
"dynamic_font.font_data = load(\"res://BarlowCondensed-Bold.ttf\")\n"
@@ -22382,12 +22401,13 @@ msgstr ""
#: doc/classes/EditorVCSInterface.xml
msgid ""
"Helper function to create a commit [Dictionary] item. [code]msg[/code] is "
-"the commit message of the commit. [code]author[/code] is a human-readable "
-"string containing the author's details, e.g. the email and name configured "
-"in the VCS. [code]id[/code] is the identifier of the commit, in whichever "
-"format your VCS may provide an identifier to commits. [code]date[/code] is "
-"directly added to the commit item and displayed in the editor, and hence, it "
-"shall be a well-formatted, human-readable date string."
+"the commit message of the commit. [code]author[/code] is a single human-"
+"readable string containing all the author's details, e.g. the email and name "
+"configured in the VCS. [code]id[/code] is the identifier of the commit, in "
+"whichever format your VCS may provide an identifier to commits. "
+"[code]unix_timestamp[/code] is the UTC Unix timestamp of when the commit was "
+"created. [code]offset_minutes[/code] is the timezone offset in minutes, "
+"recorded from the system timezone where the commit was created."
msgstr ""
#: doc/classes/EditorVCSInterface.xml
@@ -28974,9 +28994,9 @@ 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."
+"If [code]exact[/code] is [code]false[/code], it ignores additional input "
+"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the "
+"direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/Input.xml
@@ -28986,9 +29006,9 @@ msgid ""
"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."
+"If [code]exact[/code] is [code]false[/code], it ignores additional input "
+"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the "
+"direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/Input.xml
@@ -29121,9 +29141,9 @@ msgid ""
"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.\n"
+"If [code]exact[/code] is [code]false[/code], it ignores additional input "
+"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the "
+"direction for [InputEventJoypadMotion] events.\n"
"[b]Note:[/b] Due to keyboard ghosting, [method is_action_just_pressed] may "
"return [code]false[/code] even if one of the action's keys is pressed. See "
"[url=$DOCS_URL/tutorials/inputs/input_examples.html#keyboard-events]Input "
@@ -29135,9 +29155,9 @@ 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."
+"If [code]exact[/code] is [code]false[/code], it ignores additional input "
+"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the "
+"direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/Input.xml
@@ -29146,9 +29166,9 @@ msgid ""
"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.\n"
+"If [code]exact[/code] is [code]false[/code], it ignores additional input "
+"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the "
+"direction for [InputEventJoypadMotion] events.\n"
"[b]Note:[/b] Due to keyboard ghosting, [method is_action_pressed] may return "
"[code]false[/code] even if one of the action's keys is pressed. See "
"[url=$DOCS_URL/tutorials/inputs/input_examples.html#keyboard-events]Input "
@@ -29498,18 +29518,18 @@ msgstr ""
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."
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/InputEvent.xml
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."
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/InputEvent.xml
@@ -29518,9 +29538,9 @@ msgid ""
"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.\n"
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events.\n"
"[b]Note:[/b] Due to keyboard ghosting, [method is_action_pressed] may return "
"[code]false[/code] even if one of the action's keys is pressed. See "
"[url=$DOCS_URL/tutorials/inputs/input_examples.html#keyboard-events]Input "
@@ -29532,9 +29552,9 @@ 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."
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/InputEvent.xml
@@ -29565,9 +29585,9 @@ msgid ""
"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."
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/InputEvent.xml
@@ -30097,9 +30117,9 @@ msgid ""
"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."
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/InputMap.xml
@@ -33935,6 +33955,39 @@ msgid "Returns the number of surface materials."
msgstr ""
#: doc/classes/MeshInstance.xml
+msgid ""
+"Returns [code]true[/code] if this [MeshInstance] can be merged with the "
+"specified [code]other_mesh_instance[/code], using the [method MeshInstance."
+"merge_meshes] function.\n"
+"In order to be mergeable, properties of the [MeshInstance] must match, and "
+"each surface must match, in terms of material, attributes and vertex format."
+msgstr ""
+
+#: doc/classes/MeshInstance.xml
+msgid ""
+"This function can merge together the data from several source "
+"[MeshInstance]s into a single destination [MeshInstance] (the MeshInstance "
+"the function is called from). This is primarily useful for improving "
+"performance by reducing the number of drawcalls and [Node]s.\n"
+"Merging should only be attempted for simple meshes that do not contain "
+"animation.\n"
+"The final vertices can either be returned in global space, or in local space "
+"relative to the destination [MeshInstance] global transform (the destination "
+"Node must be inside the [SceneTree] for local space to work).\n"
+"The function will make a final check for compatibility between the "
+"[MeshInstance]s by default, this should always be used unless you have "
+"previously checked for compatibility using [method MeshInstance."
+"is_mergeable_with]. If the compatibility check is omitted and the meshes are "
+"merged, you may see rendering errors.\n"
+"[b]Note:[/b] The requirements for similarity between meshes are quite "
+"stringent. They can be checked using the [method MeshInstance."
+"is_mergeable_with] function prior to calling [method MeshInstance."
+"merge_meshes].\n"
+"Also note that any initial data in the destination [MeshInstance] data will "
+"be discarded."
+msgstr ""
+
+#: doc/classes/MeshInstance.xml
msgid "Sets the [Material] for a surface of the [Mesh] resource."
msgstr ""
@@ -36387,12 +36440,12 @@ msgid ""
"[/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."
+"typically relevant for [url=$DOCS_URL/tutorials/misc/"
+"running_code_in_the_editor.html]tool scripts[/url] and [url=$DOCS_URL/"
+"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
@@ -37099,7 +37152,15 @@ msgid ""
"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."
+"subinstancing.\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=$DOCS_URL/tutorials/misc/"
+"running_code_in_the_editor.html]tool scripts[/url] and [url=$DOCS_URL/"
+"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
@@ -37695,7 +37756,13 @@ msgid ""
msgstr ""
#: doc/classes/Object.xml
-msgid "Called when the object is initialized."
+msgid ""
+"Called when the object is initialized in memory. Can be defined to take in "
+"parameters, that are passed in when constructing.\n"
+"[b]Note:[/b] If [method _init] is defined with required parameters, then "
+"explicit construction is the only valid means of creating an Object of the "
+"class. If any other means (such as [method PackedScene.instance]) is used, "
+"then initialization will fail."
msgstr ""
#: doc/classes/Object.xml
@@ -42939,7 +43006,10 @@ msgid ""
msgstr ""
#: doc/classes/PhysicsServer.xml
-msgid "Returns an Info defined by the [enum ProcessInfo] input given."
+msgid ""
+"Returns information about the current state of the 3D physics engine. See "
+"[enum ProcessInfo] for a list of available states. Only implemented for "
+"Godot Physics."
msgstr ""
#: doc/classes/PhysicsServer.xml
@@ -55863,8 +55933,8 @@ msgid ""
"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"
+"print(some_array[0]) # Prints \"One,Two,Three\"\n"
+"print(some_array[1]) # Prints \"Four\"\n"
"[/codeblock]"
msgstr ""
diff --git a/doc/translations/fr.po b/doc/translations/fr.po
index 2fb51cc467..a638ed182b 100644
--- a/doc/translations/fr.po
+++ b/doc/translations/fr.po
@@ -55,13 +55,14 @@
# Pierre-Alexandre Arènes <palex95870@gmail.com>, 2022.
# KikooDX <kikoodx@paranoici.org>, 2022.
# Kevin Bouancheau <kevin.bouancheau@gmail.com>, 2022.
+# Maxim Lopez <maxim.lopez.02@gmail.com>, 2022.
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: 2022-03-17 13:59+0000\n"
-"Last-Translator: Maxime Leroy <lisacintosh@gmail.com>\n"
+"PO-Revision-Date: 2022-03-28 23:20+0000\n"
+"Last-Translator: Maxim Lopez <maxim.lopez.02@gmail.com>\n"
"Language-Team: French <https://hosted.weblate.org/projects/godot-engine/"
"godot-class-reference/fr/>\n"
"Language: fr\n"
@@ -132,16 +133,18 @@ msgid "Default"
msgstr "Défaut"
#: doc/tools/make_rst.py
+#, fuzzy
msgid "Setter"
-msgstr ""
+msgstr "Régleur"
#: doc/tools/make_rst.py
msgid "value"
msgstr "valeur"
#: doc/tools/make_rst.py
+#, fuzzy
msgid "Getter"
-msgstr ""
+msgstr "Récupérateur"
#: doc/tools/make_rst.py
msgid ""
@@ -3859,37 +3862,30 @@ msgid "Gamepad SDL miscellaneous button."
msgstr "Bouton divers de la manette SDL."
#: doc/classes/@GlobalScope.xml
-#, fuzzy
msgid "Gamepad SDL paddle 1 button."
-msgstr "Bouton gauche du pavé directionnel du contrôleur de jeu SDL."
+msgstr "Le bouton 1 du pavé directionnel de la manette SDL."
#: doc/classes/@GlobalScope.xml
-#, fuzzy
msgid "Gamepad SDL paddle 2 button."
-msgstr "Bouton gauche du pavé directionnel du contrôleur de jeu SDL."
+msgstr "Le bouton 2 du pavé directionnel de la manette SDL."
#: doc/classes/@GlobalScope.xml
-#, fuzzy
msgid "Gamepad SDL paddle 3 button."
-msgstr "Bouton gauche du pavé directionnel du contrôleur de jeu SDL."
+msgstr "Le bouton 3 du pavé directionnel de la manette SDL."
#: doc/classes/@GlobalScope.xml
-#, fuzzy
msgid "Gamepad SDL paddle 4 button."
-msgstr "Bouton gauche du pavé directionnel du contrôleur de jeu SDL."
+msgstr "Le bouton 4 du pavé directionnel de la manette SDL."
#: doc/classes/@GlobalScope.xml
-#, fuzzy
msgid "Gamepad SDL touchpad button."
msgstr "Bouton haut du pavé directionnel du contrôleur de jeu SDL."
#: doc/classes/@GlobalScope.xml
-#, fuzzy
msgid "Gamepad left Shoulder button."
msgstr "Gâchette gauche de manette de jeu SDL."
#: doc/classes/@GlobalScope.xml
-#, fuzzy
msgid "Gamepad left trigger."
msgstr "Axe de la gâchette gauche de la manette."
@@ -3898,7 +3894,6 @@ msgid "Gamepad left stick click."
msgstr "Clic du stick gauche de la manette."
#: doc/classes/@GlobalScope.xml
-#, fuzzy
msgid "Gamepad right Shoulder button."
msgstr "Gâchette droite de manette de jeu SDL."
@@ -3915,7 +3910,6 @@ msgid "Gamepad left stick horizontal axis."
msgstr "Axe horizontal du stick gauche de la manette."
#: doc/classes/@GlobalScope.xml
-#, fuzzy
msgid "Gamepad left stick vertical axis."
msgstr "Axe X de la manette gauche du contrôleur de jeu."
@@ -3924,7 +3918,6 @@ msgid "Gamepad right stick horizontal axis."
msgstr "Axe horizontal du stick droite de la manette."
#: doc/classes/@GlobalScope.xml
-#, fuzzy
msgid "Gamepad right stick vertical axis."
msgstr "Axe X de la manette droite du contrôleur de jeu."
@@ -3937,12 +3930,10 @@ msgid "Generic gamepad axis 5."
msgstr "Axe 5 de la manette générique."
#: doc/classes/@GlobalScope.xml
-#, fuzzy
msgid "Gamepad left trigger analog axis."
msgstr "Axe du déclencheur gauche du contrôleur de jeu."
#: doc/classes/@GlobalScope.xml
-#, fuzzy
msgid "Gamepad right trigger analog axis."
msgstr "Axe du déclencheur gauche du contrôleur de jeu."
@@ -4380,13 +4371,13 @@ msgstr ""
#: doc/classes/@GlobalScope.xml
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]."
+"pick in a list specified via a hint string.\n"
+"The hint string is a comma separated list of names such as [code]\"Hello,"
+"Something,Else\"[/code]. For integer and float properties, the first name in "
+"the list has value 0, the next 1, and so on. Explicit values can also be "
+"specified by appending [code]:integer[/code] to the name, e.g. [code]\"Zero,"
+"One,Three:3,Four,Six:6\"[/code]."
msgstr ""
-"Indique qu'une propriété nombre entier, décimal ou chaîne de caractères est "
-"une valeur énumérée qui doit être choisie depuis une liste spécifiée par une "
-"chaine de caractères d'indication telle que [code]\"Bonjour,Truc,"
-"AutreTruc\"[/code]."
#: doc/classes/@GlobalScope.xml
msgid ""
@@ -4713,46 +4704,39 @@ msgstr "La variable est de type [Object]."
#: doc/classes/@GlobalScope.xml
msgid "Variable is of type [Dictionary]."
-msgstr "Variable est de type [Dictionary]."
+msgstr "La variable est de type [Dictionary]."
#: doc/classes/@GlobalScope.xml
msgid "Variable is of type [Array]."
-msgstr "Variable est de type [Array]."
+msgstr "La variable est de type [Array]."
#: doc/classes/@GlobalScope.xml
-#, fuzzy
msgid "Variable is of type [PoolByteArray]."
-msgstr "Variable est de type [PackedByteArray]."
+msgstr "La variable est de type [PoolByteArray]."
#: doc/classes/@GlobalScope.xml
-#, fuzzy
msgid "Variable is of type [PoolIntArray]."
-msgstr "Variable est de type [Array]."
+msgstr "La variable est de type [PoolIntArray]."
#: doc/classes/@GlobalScope.xml
-#, fuzzy
msgid "Variable is of type [PoolRealArray]."
-msgstr "Variable est de type [Array]."
+msgstr "Le variable est de type [PoolRealArray]."
#: doc/classes/@GlobalScope.xml
-#, fuzzy
msgid "Variable is of type [PoolStringArray]."
-msgstr "Variable est de type [PackedStringArray]."
+msgstr "La variable est de type [PoolStringArray]."
#: doc/classes/@GlobalScope.xml
-#, fuzzy
msgid "Variable is of type [PoolVector2Array]."
-msgstr "Variable est de type [PackedVector2Array]."
+msgstr "La variable est de type [PoolVector2Array]."
#: doc/classes/@GlobalScope.xml
-#, fuzzy
msgid "Variable is of type [PoolVector3Array]."
-msgstr "Variable est de type [PackedVector3Array]."
+msgstr "La variable est de type [PoolVector3Array]."
#: doc/classes/@GlobalScope.xml
-#, fuzzy
msgid "Variable is of type [PoolColorArray]."
-msgstr "Variable est de type [PackedColorArray]."
+msgstr "La variable est de type [PoolColorArray]."
#: doc/classes/@GlobalScope.xml
msgid "Represents the size of the [enum Variant.Type] enum."
@@ -4760,51 +4744,51 @@ msgstr "Représente la taille de l'énumération [enum Variant.Type]."
#: doc/classes/@GlobalScope.xml
msgid "Equality operator ([code]==[/code])."
-msgstr "Opérateur d’égalité ([code]==[/code])."
+msgstr "L'opérateur d’égalité ([code]==[/code])."
#: doc/classes/@GlobalScope.xml
msgid "Inequality operator ([code]!=[/code])."
-msgstr "Opérateur d’inégalité ([code]!=[/code])."
+msgstr "L'opérateur d’inégalité ([code]!=[/code])."
#: doc/classes/@GlobalScope.xml
msgid "Less than operator ([code]<[/code])."
-msgstr "Opérateur inférieur à ([code]<[/code])."
+msgstr "L'opérateur inférieur à ([code]<[/code])."
#: doc/classes/@GlobalScope.xml
msgid "Less than or equal operator ([code]<=[/code])."
-msgstr "Opérateur inférieur ou égal ([code]<=[/code])."
+msgstr "L'opérateur inférieur ou égal ([code]<=[/code])."
#: doc/classes/@GlobalScope.xml
msgid "Greater than operator ([code]>[/code])."
-msgstr "Opérateur supérieur à ([code]>[/code])."
+msgstr "L'opérateur supérieur à ([code]>[/code])."
#: doc/classes/@GlobalScope.xml
msgid "Greater than or equal operator ([code]>=[/code])."
-msgstr "Opérateur supérieur ou égal ([code]>=[/code])."
+msgstr "L'opérateur supérieur ou égal ([code]>=[/code])."
#: doc/classes/@GlobalScope.xml
msgid "Addition operator ([code]+[/code])."
-msgstr "Opérateur d’addition ([code]+[/code])."
+msgstr "L'opérateur d’addition ([code]+[/code])."
#: doc/classes/@GlobalScope.xml
msgid "Subtraction operator ([code]-[/code])."
-msgstr "Opérateur de soustraction ([code]-[/code])."
+msgstr "L'opérateur de soustraction ([code]-[/code])."
#: doc/classes/@GlobalScope.xml
msgid "Multiplication operator ([code]*[/code])."
-msgstr "Opérateur de multiplication ([code]*[/code])."
+msgstr "L'opérateur de multiplication ([code]*[/code])."
#: doc/classes/@GlobalScope.xml
msgid "Division operator ([code]/[/code])."
-msgstr "Opérateur de division ([code]/[/code])."
+msgstr "L'opérateur de division ([code]/[/code])."
#: doc/classes/@GlobalScope.xml
msgid "Unary negation operator ([code]-[/code])."
-msgstr "Opérateur de négation unaire ([code]-[/code])."
+msgstr "L'opérateur de négation unaire ([code]-[/code])."
#: doc/classes/@GlobalScope.xml
msgid "Unary plus operator ([code]+[/code])."
-msgstr "Opérateur d'addition unaire ([code]+[/code])."
+msgstr "L'opérateur d'addition unaire ([code]+[/code])."
#: doc/classes/@GlobalScope.xml
msgid "Remainder/modulo operator ([code]%[/code])."
@@ -4840,11 +4824,11 @@ msgstr "Opérateur binaire NON ([code]~[/code])."
#: doc/classes/@GlobalScope.xml
msgid "Logical AND operator ([code]and[/code] or [code]&&[/code])."
-msgstr "Opérateur logique ET ([code]and[/code] or [code]&&[/code])."
+msgstr "L'opérateur logique ET ([code]and[/code] or [code]&&[/code])."
#: doc/classes/@GlobalScope.xml
msgid "Logical OR operator ([code]or[/code] or [code]||[/code])."
-msgstr "Opérateur logique OU ([code]or[/code] or [code]||[/code])."
+msgstr "L'opérateur logique OU ([code]or[/code] or [code]||[/code])."
#: doc/classes/@GlobalScope.xml
msgid "Logical XOR operator (not implemented in GDScript)."
@@ -4852,7 +4836,7 @@ msgstr "Opérateur logique OU exclusif (XOR) (non implémenté dans le GDScript)
#: doc/classes/@GlobalScope.xml
msgid "Logical NOT operator ([code]not[/code] or [code]![/code])."
-msgstr "Opérateur logique NON ([code]not[/code] or [code]![/code])."
+msgstr "L'opérateur logique NON ([code]not[/code] or [code]![/code])."
#: doc/classes/@GlobalScope.xml
msgid "Logical IN operator ([code]in[/code])."
@@ -5515,9 +5499,8 @@ msgid "Returns the given frame's delay value."
msgstr "Retourne la valeur du délai de la trame donnée."
#: doc/classes/AnimatedTexture.xml
-#, fuzzy
msgid "Returns the given frame's [Texture]."
-msgstr "Retourne la [Texture2D] de l'image donnée."
+msgstr "Retourne la trame spécifiée pour cette [Texture]."
#: doc/classes/AnimatedTexture.xml
msgid ""
@@ -6867,8 +6850,11 @@ msgstr ""
#: doc/classes/AnimationNodeBlendTree.xml
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."
+"This node may contain a sub-tree of any other blend type nodes, such as "
+"[AnimationNodeTransition], [AnimationNodeBlend2], [AnimationNodeBlend3], "
+"[AnimationNodeOneShot], etc. This is one of the most commonly used roots.\n"
+"An [AnimationNodeOutput] node named [code]output[/code] is created by "
+"default."
msgstr ""
#: doc/classes/AnimationNodeBlendTree.xml
@@ -7034,7 +7020,6 @@ msgid "Returns the animation node with the given name."
msgstr ""
#: doc/classes/AnimationNodeStateMachine.xml
-#, fuzzy
msgid "Returns the given animation node's name."
msgstr "Retourne le nom du nœud d'animation donné."
@@ -7274,7 +7259,6 @@ msgid ""
msgstr ""
#: doc/classes/AnimationPlayer.xml
-#, fuzzy
msgid "Container and player of [Animation] resources."
msgstr "Conteneur et lecteur de ressources [Animation]."
@@ -7838,9 +7822,8 @@ msgid "Gets the node type, will return from [enum NodeType] enum."
msgstr ""
#: doc/classes/AnimationTreePlayer.xml
-#, fuzzy
msgid "Renames a node in the graph."
-msgstr "Retourne une nouvelle instance du scénario."
+msgstr "Renomme un nœud du graphe."
#: doc/classes/AnimationTreePlayer.xml
#, fuzzy
@@ -8562,51 +8545,32 @@ msgid ""
msgstr ""
#: doc/classes/Array.xml
-#, fuzzy
msgid "Constructs an array from a [PoolColorArray]."
-msgstr ""
-"Construit une nouvelle chaîne de caractères à partir du [PackedColorArray] "
-"donné."
+msgstr "Construit an tableau à partir d'un [PoolColorArray]."
#: doc/classes/Array.xml
-#, fuzzy
msgid "Constructs an array from a [PoolVector3Array]."
-msgstr ""
-"Construit une nouvelle chaîne de caractères à partir du [PackedVector3Array] "
-"donné."
+msgstr "Construit an tableau à partir d'un [PoolVector3Array]."
#: doc/classes/Array.xml
-#, fuzzy
msgid "Constructs an array from a [PoolVector2Array]."
-msgstr ""
-"Construit une nouvelle chaîne de caractères à partir du [PackedVector2Array] "
-"donné."
+msgstr "Construit an tableau à partir d'un [PoolVector2Array]."
#: doc/classes/Array.xml
-#, fuzzy
msgid "Constructs an array from a [PoolStringArray]."
-msgstr ""
-"Construit une nouvelle chaîne de caractères à partir du [PackedStringArray] "
-"donné."
+msgstr "Construit an tableau à partir d'un [PoolStringArray]."
#: doc/classes/Array.xml
-#, fuzzy
msgid "Constructs an array from a [PoolRealArray]."
-msgstr "Construit une nouvelle chaîne de caractères à partir du [Array] donné."
+msgstr "Construit an tableau à partir d'un [PoolRealArray]."
#: doc/classes/Array.xml
-#, fuzzy
msgid "Constructs an array from a [PoolIntArray]."
-msgstr ""
-"Construit une nouvelle chaîne de caractères à partir du [PackedInt32Array] "
-"donné."
+msgstr "Construit an tableau à partir d'un [PoolIntArray]."
#: doc/classes/Array.xml
-#, fuzzy
msgid "Constructs an array from a [PoolByteArray]."
-msgstr ""
-"Construit une nouvelle chaîne de caractères à partir du [PackedByteArray] "
-"donné."
+msgstr "Construit an tableau à partir d'un [PoolByteArray]."
#: doc/classes/Array.xml doc/classes/PoolByteArray.xml
#: doc/classes/PoolColorArray.xml doc/classes/PoolIntArray.xml
@@ -9117,9 +9081,8 @@ msgid "[PoolVector2Array] for UV coordinates."
msgstr "[PackedVector2Array] pour les coordonnées UV."
#: doc/classes/ArrayMesh.xml
-#, fuzzy
msgid "[PoolVector2Array] for second UV coordinates."
-msgstr "[PackedVector2Array] pour les secondes coordonnées UV."
+msgstr "[PoolVector2Array] pour les secondes coordonnées UV."
#: doc/classes/ArrayMesh.xml
msgid ""
@@ -11570,7 +11533,7 @@ msgstr ""
#: doc/classes/AudioStreamGenerator.xml
msgid "Audio stream that generates sounds procedurally."
-msgstr ""
+msgstr "Un flux audio qui génère des sons de manière procédurale."
#: doc/classes/AudioStreamGenerator.xml
msgid ""
@@ -11611,7 +11574,7 @@ msgstr ""
#: doc/classes/AudioStreamGeneratorPlayback.xml
msgid "Plays back audio generated using [AudioStreamGenerator]."
-msgstr ""
+msgstr "Joue les sons générés avec [AudioStreamGenerator]."
#: doc/classes/AudioStreamGeneratorPlayback.xml
msgid ""
@@ -11804,7 +11767,6 @@ msgid ""
msgstr ""
#: doc/classes/AudioStreamPlayer2D.xml doc/classes/AudioStreamPlayer3D.xml
-#, fuzzy
msgid "Returns the position in the [AudioStream]."
msgstr "Retourne la position dans le [AudioStream]."
@@ -11963,9 +11925,8 @@ msgstr ""
"de portée définie par [member max_distance]."
#: doc/classes/AudioStreamPlayer3D.xml
-#, fuzzy
msgid "The [AudioStream] resource to be played."
-msgstr "Ressource [VideoStream] pour les vidéos WebM."
+msgstr "La ressource [AudioStream] à jouer."
#: doc/classes/AudioStreamPlayer3D.xml
msgid ""
@@ -12230,11 +12191,16 @@ msgstr ""
#: doc/classes/BakedLightmap.xml
msgid ""
-"When enabled, the lightmapper will merge the textures for all meshes into a "
-"single large layered texture. Not supported in GLES2."
+"If [code]true[/code], the lightmapper will merge the textures for all meshes "
+"into one or several large layered textures. If [code]false[/code], every "
+"mesh will get its own lightmap texture, which is less efficient.\n"
+"[b]Note:[/b] Atlas lightmap rendering is only supported in GLES3, [i]not[/i] "
+"GLES2. Non-atlas lightmap rendering is supported by both GLES3 and GLES2. If "
+"[member ProjectSettings.rendering/quality/driver/fallback_to_gles2] is "
+"[code]true[/code], consider baking lightmaps with [member atlas_generate] "
+"set to [code]false[/code] so that the resulting lightmap is visible in both "
+"GLES3 and GLES2."
msgstr ""
-"Si actif, le lightmapper fusionnera les textures de tous les maillages dans "
-"une seule texture assez large avec claque. Ça n'est pas supporter avec GLES2."
#: doc/classes/BakedLightmap.xml
msgid ""
@@ -12285,7 +12251,7 @@ msgstr ""
#: doc/classes/BakedLightmap.xml
msgid "Bake quality of the capture data."
-msgstr ""
+msgstr "La qualité du bake pour les données de capture."
#: doc/classes/BakedLightmap.xml
msgid ""
@@ -12382,25 +12348,23 @@ msgstr ""
#: doc/classes/BakedLightmap.xml
msgid "The lowest bake quality mode. Fastest to calculate."
-msgstr ""
+msgstr "La qualité de bake la plus basse. La plus rapide à calculer."
#: doc/classes/BakedLightmap.xml
-#, fuzzy
msgid "The default bake quality mode."
-msgstr "L'arrière-plan par défaut pour [GraphNode]."
+msgstr "Le mode de qualité du bake par défaut."
#: doc/classes/BakedLightmap.xml
msgid "A higher bake quality mode. Takes longer to calculate."
-msgstr ""
+msgstr "Une qualité de bake plus haute. Prend plus de temps de calcul."
#: doc/classes/BakedLightmap.xml
msgid "The highest bake quality mode. Takes the longest to calculate."
-msgstr ""
+msgstr "La qualité de bake la plus haute. La plus longue à calculer."
#: doc/classes/BakedLightmap.xml
-#, fuzzy
msgid "Baking was successful."
-msgstr "La connexion a réussi."
+msgstr "Le baking a réussi."
#: doc/classes/BakedLightmap.xml
msgid ""
@@ -12425,6 +12389,8 @@ msgstr "Taille du plan généré."
#: doc/classes/BakedLightmap.xml
msgid "Some mesh contains UV2 values outside the [code][0,1][/code] range."
msgstr ""
+"Certains maillages contiennent des valeurs de UV2 hors de l'intervalle [code]"
+"[0,1][/code]."
#: doc/classes/BakedLightmap.xml
#, fuzzy
@@ -12445,7 +12411,7 @@ msgstr ""
#: doc/classes/BakedLightmap.xml
msgid "No environment is used during baking."
-msgstr ""
+msgstr "Aucun environnement n'est utilisé durant le baking."
#: doc/classes/BakedLightmap.xml
msgid "The baked environment is automatically picked from the current scene."
@@ -14467,14 +14433,15 @@ msgstr ""
#: doc/classes/CanvasItem.xml
msgid ""
-"If [code]enable[/code] is [code]true[/code], children will be updated with "
-"local transform data."
+"If [code]enable[/code] is [code]true[/code], this node will receive "
+"[constant NOTIFICATION_LOCAL_TRANSFORM_CHANGED] when its local transform "
+"changes."
msgstr ""
#: doc/classes/CanvasItem.xml
msgid ""
-"If [code]enable[/code] is [code]true[/code], children will be updated with "
-"global transform data."
+"If [code]enable[/code] is [code]true[/code], this node will receive "
+"[constant NOTIFICATION_TRANSFORM_CHANGED] when its global transform changes."
msgstr ""
#: doc/classes/CanvasItem.xml
@@ -14588,9 +14555,14 @@ msgstr ""
#: doc/classes/CanvasItem.xml
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]."
+"The [CanvasItem]'s global transform has changed. This notification is only "
+"received if enabled by [method set_notify_transform]."
+msgstr ""
+
+#: doc/classes/CanvasItem.xml
+msgid ""
+"The [CanvasItem]'s local transform has changed. This notification is only "
+"received if enabled by [method set_notify_local_transform]."
msgstr ""
#: doc/classes/CanvasItem.xml
@@ -18671,9 +18643,8 @@ msgid "Sent when the mouse pointer exits the node."
msgstr ""
#: doc/classes/Control.xml
-#, fuzzy
msgid "Sent when the node grabs focus."
-msgstr "Envoyé lorsque le nœud capte le focus."
+msgstr "Envoyé lorsque le nœud reçoit le focus."
#: doc/classes/Control.xml
msgid "Sent when the node loses focus."
@@ -19229,7 +19200,6 @@ msgid "The rate at which particles lose velocity."
msgstr "Le vitesse à la laquelle les particules perdent leur vitesse."
#: doc/classes/CPUParticles.xml doc/classes/CPUParticles2D.xml
-#, fuzzy
msgid "Damping will vary along this [Curve]."
msgstr "L'amortissement varie le long de cette [Curve]."
@@ -21469,7 +21439,7 @@ msgstr ""
#: doc/classes/Dictionary.xml
msgid "Returns the list of keys in the [Dictionary]."
-msgstr ""
+msgstr "Retourne la liste des clés dans le [Dictionary]."
#: doc/classes/Dictionary.xml
#, fuzzy
@@ -21478,7 +21448,7 @@ msgstr "Renvoie le nombre de textures dans l’atlas BitmapFont."
#: doc/classes/Dictionary.xml
msgid "Returns the list of values in the [Dictionary]."
-msgstr ""
+msgstr "Retourne la liste des valeurs dans le [Dictionary]."
#: doc/classes/DirectionalLight.xml
msgid "Directional light from a distance, as from the Sun."
@@ -21512,7 +21482,6 @@ msgid ""
msgstr ""
#: doc/classes/DirectionalLight.xml
-#, fuzzy
msgid "The maximum distance for shadow splits."
msgstr "Distance maximale pour les fractionnements d’ombre."
@@ -21879,9 +21848,8 @@ msgid ""
"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"
+"OpenType ([code].otf[/code]), Web Open Font Format 1 ([code].woff[/code]), "
+"and Web Open Font Format 2 ([code].woff2[/code]).\n"
"[codeblock]\n"
"var dynamic_font = DynamicFont.new()\n"
"dynamic_font.font_data = load(\"res://BarlowCondensed-Bold.ttf\")\n"
@@ -21913,7 +21881,6 @@ msgid "Returns the fallback font at index [code]idx[/code]."
msgstr ""
#: doc/classes/DynamicFont.xml
-#, fuzzy
msgid "Returns the number of fallback fonts."
msgstr "Retourne le nombre de polices de rechange."
@@ -23462,11 +23429,11 @@ msgstr ""
#: doc/classes/EditorPlugin.xml
msgid "Minimizes the bottom panel."
-msgstr "Agrandit le panneau du bas."
+msgstr "Réduit le panneau du bas."
#: doc/classes/EditorPlugin.xml
msgid "Makes a specific item in the bottom panel visible."
-msgstr ""
+msgstr "Rend l'élément spécifié visible dans le panneau du bas."
#: doc/classes/EditorPlugin.xml
msgid ""
@@ -23490,18 +23457,24 @@ msgid ""
"Removes the control from the bottom panel. You have to manually [method Node."
"queue_free] the control."
msgstr ""
+"Retire un contrôle du panneau du bas. Vous devez appeler manuellement "
+"[method Node.queue_free] pour supprimer ce contrôle."
#: doc/classes/EditorPlugin.xml
msgid ""
"Removes the control from the specified container. You have to manually "
"[method Node.queue_free] the control."
msgstr ""
+"Retire un contrôle du conteneur spécifié. Vous devez appeler manuellement "
+"[method Node.queue_free] pour supprimer ce contrôle."
#: doc/classes/EditorPlugin.xml
msgid ""
"Removes the control from the dock. You have to manually [method Node."
"queue_free] the control."
msgstr ""
+"Retire un contrôle de la barre d'outils. Vous devez appeler manuellement "
+"[method Node.queue_free] pour supprimer ce contrôle."
#: doc/classes/EditorPlugin.xml
msgid "Removes a custom type added by [method add_custom_type]."
@@ -23730,6 +23703,8 @@ msgstr ""
msgid ""
"If you want a sub-resource to be edited, emit this signal with the resource."
msgstr ""
+"Si vous voulez que la sous-ressource soit modifié, émettez ce signal avec "
+"cette ressource."
#: doc/classes/EditorProperty.xml
msgid "Emitted when selected. Used internally."
@@ -23785,14 +23760,12 @@ msgid ""
msgstr ""
#: doc/classes/EditorResourcePicker.xml
-#, fuzzy
msgid "If [code]true[/code], the value can be selected and edited."
-msgstr "Si [code]true[/code], le GraphNode est sélectionné."
+msgstr "Si [code]true[/code], la valeur peut être sélectionnée et modifiée."
#: doc/classes/EditorResourcePicker.xml
-#, fuzzy
msgid "The edited resource value."
-msgstr "La ressource de texture du nœud."
+msgstr "La valeur modifiée de la ressource."
#: doc/classes/EditorResourcePicker.xml
msgid ""
@@ -24259,6 +24232,8 @@ msgid ""
"Sets the list of recently visited folders in the file dialog for this "
"project."
msgstr ""
+"Définit une liste des dossiers récemment visités dans le dialogue de "
+"fichiers de ce projet."
#: doc/classes/EditorSettings.xml
msgid ""
@@ -24407,7 +24382,7 @@ msgstr ""
#: doc/classes/EditorSpatialGizmoPlugin.xml
msgid "Used by the editor to define Spatial gizmo types."
-msgstr ""
+msgstr "Utilisé par l'éditeur pour définir les types de manipulateur Spatial."
#: doc/classes/EditorSpatialGizmoPlugin.xml
msgid ""
@@ -24721,12 +24696,13 @@ msgstr ""
#: doc/classes/EditorVCSInterface.xml
msgid ""
"Helper function to create a commit [Dictionary] item. [code]msg[/code] is "
-"the commit message of the commit. [code]author[/code] is a human-readable "
-"string containing the author's details, e.g. the email and name configured "
-"in the VCS. [code]id[/code] is the identifier of the commit, in whichever "
-"format your VCS may provide an identifier to commits. [code]date[/code] is "
-"directly added to the commit item and displayed in the editor, and hence, it "
-"shall be a well-formatted, human-readable date string."
+"the commit message of the commit. [code]author[/code] is a single human-"
+"readable string containing all the author's details, e.g. the email and name "
+"configured in the VCS. [code]id[/code] is the identifier of the commit, in "
+"whichever format your VCS may provide an identifier to commits. "
+"[code]unix_timestamp[/code] is the UTC Unix timestamp of when the commit was "
+"created. [code]offset_minutes[/code] is the timezone offset in minutes, "
+"recorded from the system timezone where the commit was created."
msgstr ""
#: doc/classes/EditorVCSInterface.xml
@@ -24766,9 +24742,8 @@ msgid "Pops up an error message in the edior."
msgstr "Utilisé pour rassembler des propriétés ensemble dans l'éditeur."
#: doc/classes/EditorVCSInterface.xml
-#, fuzzy
msgid "A new file has been added."
-msgstr "Émis lorsqu'une nouvelle interface a été ajoutée."
+msgstr "Un nouveau fichier a été ajouté."
#: doc/classes/EditorVCSInterface.xml
msgid "An earlier added file has been modified."
@@ -25244,9 +25219,8 @@ msgid "The [Sky] resource's rotation expressed as Euler angles in degrees."
msgstr "La rotation de la texture en degrés."
#: doc/classes/Environment.xml
-#, fuzzy
msgid "The amount of far blur for the depth-of-field effect."
-msgstr "La quantité de voix dans l’effet."
+msgstr "La quantité de flou lointain pour l'effet de profondeur."
#: doc/classes/Environment.xml
msgid ""
@@ -25272,9 +25246,8 @@ msgstr ""
"La longueur de la transition entre la zone sans flou et le flou lointain."
#: doc/classes/Environment.xml
-#, fuzzy
msgid "The amount of near blur for the depth-of-field effect."
-msgstr "La quantité de voix dans l’effet."
+msgstr "La quantité de flou proche pour l'effet de profondeur."
#: doc/classes/Environment.xml
msgid ""
@@ -30821,7 +30794,7 @@ msgstr ""
#: doc/classes/Image.xml
msgid "Unlocks the data and prevents changes."
-msgstr ""
+msgstr "Déverrouille les données et évite les modifications."
#: doc/classes/Image.xml
#, fuzzy
@@ -31213,7 +31186,7 @@ msgstr ""
#: doc/classes/ImageTexture.xml
msgid "A [Texture] based on an [Image]."
-msgstr ""
+msgstr "Une [Texture] basée sur une [Image]."
#: doc/classes/ImageTexture.xml
msgid ""
@@ -31304,7 +31277,7 @@ msgstr "Renvoie le texte associé à l’index spécifié."
#: doc/classes/ImageTexture.xml
msgid "The storage quality for [constant STORAGE_COMPRESS_LOSSY]."
-msgstr ""
+msgstr "La qualité du stockage pour [constant STORAGE_COMPRESS_LOSSY]."
#: doc/classes/ImageTexture.xml
msgid "The storage type (raw, lossy, or compressed)."
@@ -31459,9 +31432,9 @@ 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."
+"If [code]exact[/code] is [code]false[/code], it ignores additional input "
+"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the "
+"direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/Input.xml
@@ -31471,9 +31444,9 @@ msgid ""
"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."
+"If [code]exact[/code] is [code]false[/code], it ignores additional input "
+"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the "
+"direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/Input.xml
@@ -31609,9 +31582,9 @@ msgid ""
"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.\n"
+"If [code]exact[/code] is [code]false[/code], it ignores additional input "
+"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the "
+"direction for [InputEventJoypadMotion] events.\n"
"[b]Note:[/b] Due to keyboard ghosting, [method is_action_just_pressed] may "
"return [code]false[/code] even if one of the action's keys is pressed. See "
"[url=$DOCS_URL/tutorials/inputs/input_examples.html#keyboard-events]Input "
@@ -31623,9 +31596,9 @@ 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."
+"If [code]exact[/code] is [code]false[/code], it ignores additional input "
+"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the "
+"direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/Input.xml
@@ -31634,9 +31607,9 @@ msgid ""
"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.\n"
+"If [code]exact[/code] is [code]false[/code], it ignores additional input "
+"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the "
+"direction for [InputEventJoypadMotion] events.\n"
"[b]Note:[/b] Due to keyboard ghosting, [method is_action_pressed] may return "
"[code]false[/code] even if one of the action's keys is pressed. See "
"[url=$DOCS_URL/tutorials/inputs/input_examples.html#keyboard-events]Input "
@@ -32031,18 +32004,18 @@ msgstr "Retourne une représentation [String] de l'évènement."
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."
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/InputEvent.xml
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."
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/InputEvent.xml
@@ -32051,9 +32024,9 @@ msgid ""
"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.\n"
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events.\n"
"[b]Note:[/b] Due to keyboard ghosting, [method is_action_pressed] may return "
"[code]false[/code] even if one of the action's keys is pressed. See "
"[url=$DOCS_URL/tutorials/inputs/input_examples.html#keyboard-events]Input "
@@ -32065,9 +32038,9 @@ 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."
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/InputEvent.xml
@@ -32098,9 +32071,9 @@ msgid ""
"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."
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/InputEvent.xml
@@ -32647,9 +32620,9 @@ msgid ""
"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."
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/InputMap.xml
@@ -34057,7 +34030,7 @@ msgstr ""
#: doc/classes/KinematicBody.xml doc/classes/KinematicBody2D.xml
msgid "Do nothing when leaving a platform."
-msgstr ""
+msgstr "Ne fait rien quand quitte la plateforme."
#: doc/classes/KinematicBody2D.xml
msgid "Kinematic body 2D node."
@@ -34233,7 +34206,7 @@ msgstr "La forme du corps en collision."
#: doc/classes/KinematicCollision.xml
msgid "The colliding shape's index. See [CollisionObject]."
-msgstr ""
+msgstr "L'index de la forme entrant en collision. Voir [CollisionObject]."
#: doc/classes/KinematicCollision.xml doc/classes/KinematicCollision2D.xml
msgid "The colliding object's velocity."
@@ -34631,13 +34604,12 @@ msgid "Constant for accessing [member light_indirect_energy]."
msgstr "Constante pour accéder à [member light_indirect_energy]."
#: doc/classes/Light.xml
-#, fuzzy
msgid "Constant for accessing [member light_size]."
-msgstr "Constante d'accès [member light_size]."
+msgstr "Constante pour accéder à [member light_size]."
#: doc/classes/Light.xml
msgid "Constant for accessing [member light_specular]."
-msgstr ""
+msgstr "Constante pour accéder à [member light_specular]."
#: doc/classes/Light.xml
#, fuzzy
@@ -34711,7 +34683,7 @@ msgstr ""
#: doc/classes/Light.xml
msgid "Constant for accessing [member shadow_bias]."
-msgstr ""
+msgstr "Constante pour accéder à [member shadow_bias]."
#: doc/classes/Light.xml
msgid ""
@@ -34839,7 +34811,7 @@ msgstr ""
#: doc/classes/Light2D.xml
msgid "[Texture] used for the Light2D's appearance."
-msgstr ""
+msgstr "La [Texture] utilisée pour l'apparence de la Light2D."
#: doc/classes/Light2D.xml
msgid "The [code]texture[/code]'s scale factor."
@@ -36115,9 +36087,8 @@ msgid ""
msgstr ""
#: doc/classes/Mesh.xml
-#, fuzzy
msgid "Calculate a [ConcavePolygonShape] from the mesh."
-msgstr "Calculer une [ConcavePolygonShape3D] à partir du maillage."
+msgstr "Calcule une [ConcavePolygonShape3D] à partir du maillage."
#: doc/classes/Mesh.xml
msgid "Generate a [TriangleMesh] from the mesh."
@@ -36640,6 +36611,39 @@ msgid "Returns the number of surface materials."
msgstr "Retourne le nombre de surfaces du matériau."
#: doc/classes/MeshInstance.xml
+msgid ""
+"Returns [code]true[/code] if this [MeshInstance] can be merged with the "
+"specified [code]other_mesh_instance[/code], using the [method MeshInstance."
+"merge_meshes] function.\n"
+"In order to be mergeable, properties of the [MeshInstance] must match, and "
+"each surface must match, in terms of material, attributes and vertex format."
+msgstr ""
+
+#: doc/classes/MeshInstance.xml
+msgid ""
+"This function can merge together the data from several source "
+"[MeshInstance]s into a single destination [MeshInstance] (the MeshInstance "
+"the function is called from). This is primarily useful for improving "
+"performance by reducing the number of drawcalls and [Node]s.\n"
+"Merging should only be attempted for simple meshes that do not contain "
+"animation.\n"
+"The final vertices can either be returned in global space, or in local space "
+"relative to the destination [MeshInstance] global transform (the destination "
+"Node must be inside the [SceneTree] for local space to work).\n"
+"The function will make a final check for compatibility between the "
+"[MeshInstance]s by default, this should always be used unless you have "
+"previously checked for compatibility using [method MeshInstance."
+"is_mergeable_with]. If the compatibility check is omitted and the meshes are "
+"merged, you may see rendering errors.\n"
+"[b]Note:[/b] The requirements for similarity between meshes are quite "
+"stringent. They can be checked using the [method MeshInstance."
+"is_mergeable_with] function prior to calling [method MeshInstance."
+"merge_meshes].\n"
+"Also note that any initial data in the destination [MeshInstance] data will "
+"be discarded."
+msgstr ""
+
+#: doc/classes/MeshInstance.xml
msgid "Sets the [Material] for a surface of the [Mesh] resource."
msgstr ""
@@ -37553,9 +37557,8 @@ msgid "Callback called at the end of the RVO process."
msgstr ""
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
-#, fuzzy
msgid "Puts the agent in the map."
-msgstr "Renvoie la tangente du paramètre."
+msgstr "Place l'agent sur la carte."
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
msgid ""
@@ -37582,9 +37585,8 @@ msgid "Sets the position of the agent in world space."
msgstr "Définit la position du nœud spécifié."
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
-#, fuzzy
msgid "Sets the radius of the agent."
-msgstr "Le rayon extérieur du tore."
+msgstr "Définit le rayon de l'agent."
#: doc/classes/Navigation2DServer.xml doc/classes/NavigationServer.xml
msgid "Sets the new target velocity."
@@ -38115,6 +38117,8 @@ msgid ""
"Parses mesh instances as geometry. This includes [MeshInstance], [CSGShape], "
"and [GridMap] nodes."
msgstr ""
+"Interprète les instances de maillage comme des géométries. Cela inclus les "
+"nœuds [MeshInstance], [CSGShape], et [GridMap]."
#: doc/classes/NavigationMesh.xml
msgid ""
@@ -38127,6 +38131,8 @@ msgid ""
"Both [constant PARSED_GEOMETRY_MESH_INSTANCES] and [constant "
"PARSED_GEOMETRY_STATIC_COLLIDERS]."
msgstr ""
+"À la fois [constant PARSED_GEOMETRY_MESH_INSTANCES] et [constant "
+"PARSED_GEOMETRY_STATIC_COLLIDERS]."
#: doc/classes/NavigationMesh.xml
#, fuzzy
@@ -38201,9 +38207,8 @@ msgid "Notifies when the navigation mesh bake operation is completed."
msgstr "Avertit quand une animation commence à jouer."
#: doc/classes/NavigationMeshInstance.xml
-#, fuzzy
msgid "Notifies when the [NavigationMesh] has changed."
-msgstr "Avertit quand une animation commence à jouer."
+msgstr "Avertit quand le [NavigationMesh] a changé."
#: doc/classes/NavigationObstacle.xml
msgid "3D obstacle used in navigation for collision avoidance."
@@ -39208,12 +39213,12 @@ msgid ""
"[/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."
+"typically relevant for [url=$DOCS_URL/tutorials/misc/"
+"running_code_in_the_editor.html]tool scripts[/url] and [url=$DOCS_URL/"
+"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
@@ -39922,7 +39927,15 @@ msgid ""
"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."
+"subinstancing.\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=$DOCS_URL/tutorials/misc/"
+"running_code_in_the_editor.html]tool scripts[/url] and [url=$DOCS_URL/"
+"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
@@ -40449,9 +40462,8 @@ msgid "Width of the generated texture."
msgstr "Largeur de la texture générée."
#: doc/classes/Object.xml
-#, fuzzy
msgid "Base class for all non-built-in types."
-msgstr "Classe de base pour toutes les ressources."
+msgstr "La classe de base pour tous les types non intégrés."
#: doc/classes/Object.xml
msgid ""
@@ -40520,7 +40532,13 @@ msgid ""
msgstr ""
#: doc/classes/Object.xml
-msgid "Called when the object is initialized."
+msgid ""
+"Called when the object is initialized in memory. Can be defined to take in "
+"parameters, that are passed in when constructing.\n"
+"[b]Note:[/b] If [method _init] is defined with required parameters, then "
+"explicit construction is the only valid means of creating an Object of the "
+"class. If any other means (such as [method PackedScene.instance]) is used, "
+"then initialization will fail."
msgstr ""
#: doc/classes/Object.xml
@@ -40828,6 +40846,8 @@ msgstr ""
msgid ""
"Removes a given entry from the object's metadata. See also [method set_meta]."
msgstr ""
+"Supprime l'entrée donnée des méta-données de l'objet. Voir aussi [method "
+"set_meta]."
#: doc/classes/Object.xml
msgid ""
@@ -40910,29 +40930,37 @@ msgstr ""
#: doc/classes/Object.xml
msgid "Emitted whenever the object's script is changed."
-msgstr ""
+msgstr "Émis quand le script de l'objet est changé."
#: doc/classes/Object.xml
msgid "Called right when the object is initialized. Not available in script."
msgstr ""
+"Appelé juste après que l'objet a été initialisé. N'est pas disponible depuis "
+"les scripts."
#: doc/classes/Object.xml
msgid "Called before the object is about to be deleted."
-msgstr ""
+msgstr "Appelé juste avant qu'un objet soit supprimé."
#: doc/classes/Object.xml
msgid ""
"Connects a signal in deferred mode. This way, signal emissions are stored in "
"a queue, then set on idle time."
msgstr ""
+"Connecte un signal en mode déferré. Ainsi, les émissions du signal sont "
+"placées dans une file, et distribuées durant un moment de repos."
#: doc/classes/Object.xml
msgid "Persisting connections are saved when the object is serialized to file."
msgstr ""
+"Les connexions persistances sont enregistrées quand l'objet est sauvegardé "
+"dans un fichier."
#: doc/classes/Object.xml
msgid "One-shot connections disconnect themselves after emission."
msgstr ""
+"Les connections uniques (one-shot) se déconnecté automatique après "
+"l'émission."
#: doc/classes/Object.xml
msgid ""
@@ -40971,7 +40999,7 @@ msgstr ""
#: doc/classes/OccluderPolygon2D.xml
msgid "Defines a 2D polygon for LightOccluder2D."
-msgstr ""
+msgstr "Définit un polygone 2D pour LightOccluder2D."
#: doc/classes/OccluderPolygon2D.xml
msgid ""
@@ -41287,7 +41315,7 @@ msgstr ""
#: doc/classes/OptionButton.xml
msgid "Clears all the items in the [OptionButton]."
-msgstr ""
+msgstr "Retire tous les éléments du [OptionButton]."
#: doc/classes/OptionButton.xml
msgid "Returns the amount of items in the OptionButton, including separators."
@@ -41295,11 +41323,11 @@ msgstr "Retourne le nombre d'élément dans ce OptionButton, séparateurs inclus
#: doc/classes/OptionButton.xml doc/classes/PopupMenu.xml
msgid "Returns the icon of the item at index [code]idx[/code]."
-msgstr ""
+msgstr "Retourne l'icône de l'élément à l'index [code]idx[/code]."
#: doc/classes/OptionButton.xml
msgid "Returns the ID of the item at index [code]idx[/code]."
-msgstr ""
+msgstr "Retourne l'identifiant de l'élément à l'index [code]idx[/code]."
#: doc/classes/OptionButton.xml
msgid "Returns the index of the item with the given [code]id[/code]."
@@ -41406,7 +41434,7 @@ msgstr "La [Color] par défaut du texte pour le [OptionButton]."
#: doc/classes/OptionButton.xml
msgid "Text [Color] used when the [OptionButton] is disabled."
-msgstr ""
+msgstr "La [Color] du texte utilisée quand le [OptionButton] est désactivé."
#: doc/classes/OptionButton.xml
msgid ""
@@ -41427,10 +41455,11 @@ msgstr "La [Color] du texte utilisée quand le [OptionButton] est pressé."
msgid ""
"The horizontal space between the arrow icon and the right edge of the button."
msgstr ""
+"L'espace horizontal entre l'icône de la flèche et le bord droit du bouton."
#: doc/classes/OptionButton.xml
msgid "The horizontal space between [OptionButton]'s icon and text."
-msgstr ""
+msgstr "L'espace horizontal entre l'icône et le texte du [OptionButton]."
#: doc/classes/OptionButton.xml
msgid "[Font] of the [OptionButton]'s text."
@@ -41438,11 +41467,11 @@ msgstr "La [Font] du texte du [OptionButton]."
#: doc/classes/OptionButton.xml
msgid "The arrow icon to be drawn on the right end of the button."
-msgstr ""
+msgstr "L'icône de la flèche qui est affichée au bord droit du bouton."
#: doc/classes/OptionButton.xml
msgid "[StyleBox] used when the [OptionButton] is disabled."
-msgstr ""
+msgstr "La [StyleBox] utilisée quand le [OptionButton] est désactivé."
#: doc/classes/OptionButton.xml
msgid ""
@@ -41453,7 +41482,7 @@ msgstr ""
#: doc/classes/OptionButton.xml
msgid "[StyleBox] used when the [OptionButton] is being hovered."
-msgstr ""
+msgstr "La [StyleBox] utilisée quand le [OptionButton] est survolé."
#: doc/classes/OptionButton.xml
msgid "Default [StyleBox] for the [OptionButton]."
@@ -41461,7 +41490,7 @@ msgstr "Le [StyleBox] par défaut pour le [OptionButton]."
#: doc/classes/OptionButton.xml
msgid "[StyleBox] used when the [OptionButton] is being pressed."
-msgstr ""
+msgstr "La [StyleBox] utilisée quand le [OptionButton] est appuyé."
#: doc/classes/OS.xml
msgid "Operating System functions."
@@ -41491,6 +41520,8 @@ msgid ""
"Returns [code]true[/code] if the current host platform is using multiple "
"threads."
msgstr ""
+"Retourne [code]true[/code] le la plateforme hôte actuelle utilise plusieurs "
+"fils d'exécutions."
#: doc/classes/OS.xml
#, fuzzy
@@ -41738,6 +41769,8 @@ msgstr ""
#: doc/classes/OS.xml
msgid "Returns the total amount of dynamic memory used (only works in debug)."
msgstr ""
+"Retourne la quantité totale de mémoire dynamique utilisée (ne fonctionne "
+"qu'en débogage)."
#: doc/classes/OS.xml
msgid ""
@@ -41749,7 +41782,7 @@ msgstr ""
#: doc/classes/OS.xml
msgid "Returns the path to the current engine executable."
-msgstr ""
+msgstr "Retourne le chemin de l'actuel exécutable du moteur de jeu."
#: doc/classes/OS.xml
msgid ""
@@ -42019,12 +42052,16 @@ msgid ""
"Returns the total number of available tablet drivers.\n"
"[b]Note:[/b] This method is implemented on Windows."
msgstr ""
+"Retourne le nombre total de pilotes de tablette disponible.\n"
+"[b]Note :[/b] Cette méthode est implémentée sous Windows."
#: doc/classes/OS.xml
msgid ""
"Returns the tablet driver name for the given index.\n"
"[b]Note:[/b] This method is implemented on Windows."
msgstr ""
+"Retourne le nom du pilote de tablette à la position spécifiée.\n"
+"[b]Note :[/b] Cette méthode est implémentée sous Windows."
#: doc/classes/OS.xml
msgid ""
@@ -42033,18 +42070,27 @@ msgid ""
"[b]Note:[/b] Thread IDs are not deterministic and may be reused across "
"application restarts."
msgstr ""
+"Retourne l'identifiant du fil d'exécution actuel. Cela peut être utile dans "
+"les journaux pour faciliter le débogage des applications à plusieurs fils "
+"d'exécution.\n"
+"[b]Note :[/b] Ces identifiants ne sont pas déterministes et peuvent être "
+"réutilisés durant plusieurs lancement de l'application."
#: doc/classes/OS.xml
msgid ""
"Deprecated, use [method Time.get_ticks_msec] instead.\n"
"Returns the amount of time passed in milliseconds since the engine started."
msgstr ""
+"Obsolète, utilisez plutôt [method Time.get_ticks_msec].\n"
+"Retourne la temps écoulé en millisecondes depuis le lancement du moteur."
#: doc/classes/OS.xml
msgid ""
"Deprecated, use [method Time.get_ticks_usec] instead.\n"
"Returns the amount of time passed in microseconds since the engine started."
msgstr ""
+"Obsolète, utilisez plutôt [method Time.get_ticks_usec].\n"
+"Retourne la temps écoulé en microsecondes depuis le lancement du moteur."
#: doc/classes/OS.xml
msgid ""
@@ -42240,6 +42286,8 @@ msgid ""
"Returns [code]true[/code] if the engine was executed with [code]-v[/code] "
"(verbose stdout)."
msgstr ""
+"Retourne [code]true[/code] si le moteur a été lancé avec [code]-v[/code] "
+"(sortie verbeuse)."
#: doc/classes/OS.xml
msgid ""
@@ -42329,6 +42377,8 @@ msgid ""
"Pauses native video playback.\n"
"[b]Note:[/b] This method is only implemented on iOS."
msgstr ""
+"Met en pause la lecture de la vidéo native.\n"
+"[b]Note :[/b] Cette méthode est seulement implémentée dans iOS."
#: doc/classes/OS.xml
msgid ""
@@ -42363,15 +42413,16 @@ msgstr ""
#: doc/classes/OS.xml
msgid "Shows the list of loaded textures sorted by size in memory."
-msgstr ""
+msgstr "Liste des textures chargés en mémoire, triées par taille."
#: doc/classes/OS.xml
msgid "Shows the number of resources loaded by the game of the given types."
msgstr ""
+"Affiche le nombre de ressources des types spécifiés chargées par le jeu."
#: doc/classes/OS.xml
msgid "Shows all resources currently used by the game."
-msgstr ""
+msgstr "Affiche toutes les ressources actuellement utilisées par le jeu."
#: doc/classes/OS.xml
msgid ""
@@ -42441,17 +42492,21 @@ msgstr ""
#: doc/classes/OS.xml
msgid "Sets the name of the current thread."
-msgstr ""
+msgstr "Définit le nom du fil d'exécution actuel."
#: doc/classes/OS.xml
msgid "Enables backup saves if [code]enabled[/code] is [code]true[/code]."
msgstr ""
+"Active les sauvegardes si [code]enabled[/code] est à [code]true[/code]."
#: doc/classes/OS.xml
msgid ""
"Sets whether the window should always be on top.\n"
"[b]Note:[/b] This method is implemented on Linux, macOS and Windows."
msgstr ""
+"Définit quand la fenêtre doit toujours être au dessus des autres.\n"
+"[b]Note :[/b] Cette méthode n'est implémentée que sous Linux, macOS et "
+"Windows."
#: doc/classes/OS.xml
msgid ""
@@ -42516,6 +42571,8 @@ msgstr ""
#: doc/classes/OS.xml
msgid "The clipboard from the host OS. Might be unavailable on some platforms."
msgstr ""
+"Le presse-papiers du système hôte. Peut ne pas être disponible sur certaines "
+"plateformes."
#: doc/classes/OS.xml
msgid "The current screen index (starting from 0)."
@@ -42607,19 +42664,16 @@ msgid ""
msgstr ""
#: doc/classes/OS.xml
-#, fuzzy
msgid "If [code]true[/code], the window is fullscreen."
-msgstr "Si [code]true[/code], l'interpolation fait une boucle."
+msgstr "Si [code]true[/code], la fenêtre est en plein-écran."
#: doc/classes/OS.xml
-#, fuzzy
msgid "If [code]true[/code], the window is maximized."
-msgstr "Si [code]true[/code], le filtrage est activé."
+msgstr "Si [code]true[/code], la fenêtre est maximisée."
#: doc/classes/OS.xml
-#, fuzzy
msgid "If [code]true[/code], the window is minimized."
-msgstr "Si [code]true[/code], le filtrage est activé."
+msgstr "Si [code]true[/code], la fenêtre est réduite."
#: doc/classes/OS.xml
msgid ""
@@ -42930,12 +42984,14 @@ msgstr ""
#: doc/classes/PackedScene.xml
msgid "Returns [code]true[/code] if the scene file has nodes."
-msgstr ""
+msgstr "Retourne [code]true[/code] si le fichier de scène à des nœuds."
#: doc/classes/PackedScene.xml
msgid ""
"Returns the [code]SceneState[/code] representing the scene file contents."
msgstr ""
+"Retourne le [code]SceneState[/code] représentant le contenu du fichier de la "
+"scène."
#: doc/classes/PackedScene.xml
msgid ""
@@ -43441,7 +43497,7 @@ msgstr ""
#: doc/classes/Particles.xml
msgid "Controlling thousands of fish with Particles"
-msgstr ""
+msgstr "Contrôler des milliers de poissons avec Particles"
#: doc/classes/Particles.xml
msgid ""
@@ -43731,6 +43787,8 @@ msgid ""
"The inner radius of the ring when using the emitter [constant "
"EMISSION_SHAPE_RING]."
msgstr ""
+"Le rayon intérieur de l'anneau pour l'émetteur [constant "
+"EMISSION_SHAPE_RING]."
#: doc/classes/ParticlesMaterial.xml
msgid ""
@@ -44014,9 +44072,8 @@ msgid "Allows the PathFollow to rotate in the Y axis only."
msgstr "Interdit au PathFollow3D de tourner."
#: doc/classes/PathFollow.xml
-#, fuzzy
msgid "Allows the PathFollow to rotate in both the X, and Y axes."
-msgstr "Interdit au PathFollow3D de tourner."
+msgstr "Autorise le PathFollow à pivoter selon les axes X et Y."
#: doc/classes/PathFollow.xml
#, fuzzy
@@ -45424,6 +45481,8 @@ msgid ""
"This class contains the shape and other parameters for 2D intersection/"
"collision queries."
msgstr ""
+"Cette classe contient des formes et autres paramètres pour les requêtes "
+"d'intersections/collisions en 2D."
#: doc/classes/Physics2DShapeQueryParameters.xml
msgid ""
@@ -45889,7 +45948,10 @@ msgid ""
msgstr ""
#: doc/classes/PhysicsServer.xml
-msgid "Returns an Info defined by the [enum ProcessInfo] input given."
+msgid ""
+"Returns information about the current state of the 3D physics engine. See "
+"[enum ProcessInfo] for a list of available states. Only implemented for "
+"Godot Physics."
msgstr ""
#: doc/classes/PhysicsServer.xml
@@ -45934,9 +45996,8 @@ msgid "Gets the priority value of the Joint."
msgstr "Renvoie la valeur opposée du paramètre."
#: doc/classes/PhysicsServer.xml
-#, fuzzy
msgid "Returns the type of the Joint."
-msgstr "Retourne la hauteur du contenu."
+msgstr "Retourne le type de Joint."
#: doc/classes/PhysicsServer.xml
#, fuzzy
@@ -46050,13 +46111,12 @@ msgstr ""
"Plus elle est élevée, plus elle est forte."
#: doc/classes/PhysicsServer.xml
-#, fuzzy
msgid ""
"If above 0, this value is the maximum value for an impulse that this Joint "
"puts on its ends."
msgstr ""
"Si au-dessus de 0, cette valeur est la valeur maximale pour une impulsion "
-"que ce Joint3D met sur ses extrémités."
+"que ce Joint met sur ses extrémités."
#: doc/classes/PhysicsServer.xml
msgid "The maximum rotation across the Hinge."
@@ -46232,7 +46292,7 @@ msgstr ""
#: doc/classes/PhysicsServer.xml
msgid "If set, rotational motion is possible."
-msgstr ""
+msgstr "Si définit, la rotation est possible."
#: doc/classes/PhysicsServer.xml
#, fuzzy
@@ -46290,6 +46350,8 @@ msgid ""
"This class contains the shape and other parameters for 3D intersection/"
"collision queries."
msgstr ""
+"Cette classe contient des formes et autres paramètres pour les requêtes "
+"d'intersections/collisions en 3D."
#: doc/classes/PhysicsShapeQueryParameters.xml
msgid "Sets the [Shape] that will be used for collision/intersection queries."
@@ -46799,7 +46861,7 @@ msgstr ""
#: doc/classes/PoolByteArray.xml
msgid "Changes the byte at the given index."
-msgstr ""
+msgstr "Change l'octet à la position donnée."
#: doc/classes/PoolByteArray.xml
msgid ""
@@ -46844,12 +46906,11 @@ msgstr ""
#: doc/classes/PoolColorArray.xml
msgid "Changes the [Color] at the given index."
-msgstr ""
+msgstr "Change la [Color] à la position donnée."
#: doc/classes/PoolIntArray.xml
-#, fuzzy
msgid "A pooled [Array] of integers ([int])."
-msgstr "Un [Array] compacté d'octets."
+msgstr "Un [Array] compacté d'entier ([int])."
#: doc/classes/PoolIntArray.xml
msgid ""
@@ -46885,9 +46946,8 @@ msgid "Changes the int at the given index."
msgstr "Modifie le [int] à l’index donné."
#: doc/classes/PoolRealArray.xml
-#, fuzzy
msgid "A pooled [Array] of reals ([float])."
-msgstr "Un [Array] compacté d'octets."
+msgstr "Un [Array] compacté de flottants ([float])."
#: doc/classes/PoolRealArray.xml
msgid ""
@@ -46916,7 +46976,7 @@ msgstr "Ajoute un [PackedVector3Array] à la fin de ce tableau."
#: doc/classes/PoolRealArray.xml
msgid "Changes the float at the given index."
-msgstr ""
+msgstr "Change la flottant à la position donnée."
#: doc/classes/PoolStringArray.xml
msgid "A pooled [Array] of [String]."
@@ -46953,7 +47013,7 @@ msgstr "Ajoute une chaine de caractère à la fin du tableau."
#: doc/classes/PoolStringArray.xml
msgid "Changes the [String] at the given index."
-msgstr ""
+msgstr "Change la [String] à la position donnée."
#: doc/classes/PoolVector2Array.xml
msgid "A pooled [Array] of [Vector2]."
@@ -46988,7 +47048,7 @@ msgstr "Insère un [Vector2] à la fin."
#: doc/classes/PoolVector2Array.xml
msgid "Changes the [Vector2] at the given index."
-msgstr "Modifie le [Vector2] à l’index donné."
+msgstr "Change la [Vector2] à la position donnée."
#: doc/classes/PoolVector3Array.xml
msgid "A pooled [Array] of [Vector3]."
@@ -47018,7 +47078,7 @@ msgstr "Insère un [Vector3] à la fin."
#: doc/classes/PoolVector3Array.xml
msgid "Changes the [Vector3] at the given index."
-msgstr "Modifie le [Vector3] à l'indice donné."
+msgstr "Change la [Vector3] à la position donnée."
#: doc/classes/Popup.xml
msgid "Base container control for popups and dialogs."
@@ -47119,13 +47179,15 @@ msgstr "[StyleBox] par défaut pour le [Button]."
#: doc/classes/PopupMenu.xml
msgid "PopupMenu displays a list of options."
-msgstr ""
+msgstr "Un PopupMenu affiche une liste d'options."
#: doc/classes/PopupMenu.xml
msgid ""
"[PopupMenu] is a [Control] that displays a list of options. They are popular "
"in toolbars or context menus."
msgstr ""
+"Un [PopupMenu] est un [Control] qui affiche une liste d'options. Souvent "
+"utilisé dans les barres d'outils ou les menus contextuels."
#: doc/classes/PopupMenu.xml
msgid ""
@@ -47278,13 +47340,15 @@ msgstr ""
#: doc/classes/PopupMenu.xml
msgid "Removes all items from the [PopupMenu]."
-msgstr ""
+msgstr "Retire tous les éléments du [PopupMenu]."
#: doc/classes/PopupMenu.xml
msgid ""
"Returns the index of the currently focused item. Returns [code]-1[/code] if "
"no item is focused."
msgstr ""
+"Retourne la position de l’élément qui a actuellement le focus. Ou retourne "
+"[code]-1[/code] si aucun n'a le focus."
#: doc/classes/PopupMenu.xml
msgid ""
@@ -47302,6 +47366,8 @@ msgid ""
"Returns the id of the item at index [code]idx[/code]. [code]id[/code] can be "
"manually assigned, while index can not."
msgstr ""
+"Retourne l'identifiant de l'élément à la position [code]idx[/code]. Un "
+"[code]id[/code] peut être changé manuellement, contrairement à la position."
#: doc/classes/PopupMenu.xml
msgid ""
@@ -47335,13 +47401,12 @@ msgid ""
msgstr ""
#: doc/classes/PopupMenu.xml
-#, fuzzy
msgid ""
"Returns [code]true[/code] if the popup will be hidden when the window loses "
"focus or not."
msgstr ""
-"Retourne [code]true[/code] (vrai) si la chaîne de caractères commence par la "
-"chaîne de caractères donnée."
+"Retourne [code]true[/code] si la fenêtre contextuelle est masquée quand la "
+"fenêtre perd le focus."
#: doc/classes/PopupMenu.xml
msgid ""
@@ -47562,7 +47627,7 @@ msgstr "[Color] utilisée pour le texte des éléments de menu désactivés."
#: doc/classes/PopupMenu.xml
msgid "[Color] used for the hovered text."
-msgstr ""
+msgstr "La [Color] utilisée pour le texte survolé."
#: doc/classes/PopupMenu.xml
msgid "[Color] used for labeled separators' text. See [method add_separator]."
@@ -47580,7 +47645,7 @@ msgstr "L’espace vertical entre chaque élément de menu."
#: doc/classes/PopupMenu.xml
msgid "[Font] used for the menu items."
-msgstr ""
+msgstr "La [Font] utilisée pour les éléments du menu."
#: doc/classes/PopupMenu.xml
msgid "[Texture] icon for the checked checkbox items."
@@ -47596,7 +47661,7 @@ msgstr "La [Texture] de l'icône pour les boutons radios décochés."
#: doc/classes/PopupMenu.xml
msgid "[Texture] icon for the submenu arrow."
-msgstr ""
+msgstr "La [Texture] pour l'icône de la flèche du sous-menu."
#: doc/classes/PopupMenu.xml
msgid "[Texture] icon for the unchecked checkbox items."
@@ -47903,6 +47968,8 @@ msgid ""
"Size of [Texture] that the ProceduralSky will generate. The size is set "
"using [enum TextureSize]."
msgstr ""
+"La taille de la [Texture] que le ProceduralSky va générer. Cette taille doit "
+"correspondre à un des [enum TextureSize]."
#: doc/classes/ProceduralSky.xml
msgid "Sky texture will be 256x128."
@@ -48450,7 +48517,6 @@ msgid ""
msgstr ""
#: doc/classes/ProjectSettings.xml
-#, fuzzy
msgid ""
"Enables [url=https://github.com/facebook/zstd/releases/tag/v1.3.2]long-"
"distance matching[/url] in Zstandard."
@@ -49550,6 +49616,8 @@ msgid ""
"If non-empty, this locale will be used when running the project from the "
"editor."
msgstr ""
+"Si n'est pas vide, ce langage sera utilisé lors du lancement du projet "
+"depuis l'éditeur."
#: doc/classes/ProjectSettings.xml
#, fuzzy
@@ -51190,7 +51258,7 @@ msgstr ""
#: doc/classes/RandomNumberGenerator.xml
msgid "A class for generating pseudo-random numbers."
-msgstr ""
+msgstr "Une classe pour générer des nombres pseudo-aléatoires."
#: doc/classes/RandomNumberGenerator.xml
msgid ""
@@ -51243,16 +51311,20 @@ msgid ""
"Generates a pseudo-random 32-bit unsigned integer between [code]0[/code] and "
"[code]4294967295[/code] (inclusive)."
msgstr ""
+"Génère un entier non signé de 32 bits pseudo-aléatoire compris entre "
+"[code]0[/code] et [code]4294967295[/code] (inclus)."
#: doc/classes/RandomNumberGenerator.xml
msgid ""
"Generates a pseudo-random 32-bit signed integer between [code]from[/code] "
"and [code]to[/code] (inclusive)."
msgstr ""
+"Génère un entier signé de 32 bits pseudo-aléatoire compris entre [code]from[/"
+"code] et [code]to[/code] (inclus)."
#: doc/classes/RandomNumberGenerator.xml
msgid "Setups a time-based seed to generator."
-msgstr ""
+msgstr "Utilise un graine basée sur l'heure pour le générateur."
#: doc/classes/RandomNumberGenerator.xml
msgid ""
@@ -51320,11 +51392,15 @@ msgstr ""
msgid ""
"If [code]true[/code], [member value] may be greater than [member max_value]."
msgstr ""
+"Si [code]true[/code], [member value] peut être supérieure à [member "
+"max_value]."
#: doc/classes/Range.xml
msgid ""
"If [code]true[/code], [member value] may be less than [member min_value]."
msgstr ""
+"Si [code]true[/code], [member value] peut être inférieure à [member "
+"min_value]."
#: doc/classes/Range.xml
msgid ""
@@ -51337,12 +51413,16 @@ msgid ""
"Maximum value. Range is clamped if [code]value[/code] is greater than "
"[code]max_value[/code]."
msgstr ""
+"La valeur maximale. L'intervalle est limitée si [code]value[/code] est "
+"supérieure à [code]max_value[/code]."
#: doc/classes/Range.xml
msgid ""
"Minimum value. Range is clamped if [code]value[/code] is less than "
"[code]min_value[/code]."
msgstr ""
+"La valeur minimale. L'intervalle est limitée si [code]value[/code] est "
+"inférieure à [code]min_value[/code]."
#: doc/classes/Range.xml
msgid ""
@@ -51360,6 +51440,8 @@ msgid ""
"If [code]true[/code], [code]value[/code] will always be rounded to the "
"nearest integer."
msgstr ""
+"Si [code]true[/code], [code]value[/code] sera toujours arrondie au nombre "
+"entier le plus proche."
#: doc/classes/Range.xml
msgid ""
@@ -51473,18 +51555,24 @@ msgid ""
"Returns whether any object is intersecting with the ray's vector "
"(considering the vector length)."
msgstr ""
+"Retourne quand un objet intersecte avec le vecteur du rayon (en prenant en "
+"compte la longueur du vecteur)."
#: doc/classes/RayCast.xml doc/classes/RayCast2D.xml
msgid ""
"Removes a collision exception so the ray does report collisions with the "
"specified node."
msgstr ""
+"Retirer une exception de collision pour que le rayon prenne en compte les "
+"collision avec ce nœud."
#: doc/classes/RayCast.xml doc/classes/RayCast2D.xml
msgid ""
"Removes a collision exception so the ray does report collisions with the "
"specified [RID]."
msgstr ""
+"Retirer une exception de collision pour que le rayon prenne en compte les "
+"collision avec ce [RID]."
#: doc/classes/RayCast.xml
msgid ""
@@ -51582,6 +51670,8 @@ msgid ""
"If [code]true[/code], the parent node will be excluded from collision "
"detection."
msgstr ""
+"Si [code]true[/code], le nœud parent sera exclu lors de la détection des "
+"collisions."
#: doc/classes/RayShape.xml
msgid "Ray shape for 3D collisions."
@@ -51602,6 +51692,8 @@ msgstr "La longueur du rayon."
#: doc/classes/RayShape.xml doc/classes/RayShape2D.xml
msgid "If [code]true[/code], allow the shape to return the correct normal."
msgstr ""
+"Utilisez [code]true[/code] pour autoriser la forme à retourner la normale "
+"correcte."
#: doc/classes/RayShape2D.xml
msgid "Ray shape for 2D collisions."
@@ -51676,6 +51768,8 @@ msgid ""
"Returns the center of the [Rect2], which is equal to [member position] + "
"([member size] / 2)."
msgstr ""
+"Retourne le centre du [Rect2], qui est égal à [member position] + ([member "
+"size] / 2)."
#: doc/classes/Rect2.xml
msgid ""
@@ -51694,6 +51788,8 @@ msgid ""
"Returns a copy of the [Rect2] grown a given amount of units towards the "
"[enum Margin] direction."
msgstr ""
+"Retourne une copie du [Rect2] agrandie de la quantité donnée dans la "
+"direction [enum Margin]."
#: doc/classes/Rect2.xml
msgid ""
@@ -51731,6 +51827,8 @@ msgstr ""
#: doc/classes/Rect2.xml
msgid "Returns a larger [Rect2] that contains this [Rect2] and [code]b[/code]."
msgstr ""
+"Retourne un [Rect2] plus grand qui contient ce [Rect2] ainsi que [code]b[/"
+"code]."
#: doc/classes/RectangleShape2D.xml
msgid "Rectangle shape for 2D collisions."
@@ -51893,6 +51991,8 @@ msgid ""
"Defines the reflection intensity. Intensity modulates the strength of the "
"reflection."
msgstr ""
+"Définit l'intensité de la réflexion. L'intensité modifie l'importance de "
+"l'effet de réflexion."
#: doc/classes/ReflectionProbe.xml
msgid ""
@@ -52070,6 +52170,7 @@ msgstr ""
#: modules/regex/doc_classes/RegEx.xml
msgid "Returns whether this object has a valid search pattern assigned."
msgstr ""
+"Retourne si cet objet à un motif de recherche valide qui lui est assigné."
#: modules/regex/doc_classes/RegEx.xml
msgid ""
@@ -58254,9 +58355,8 @@ msgid ""
msgstr ""
#: doc/classes/StreamPeerBuffer.xml
-#, fuzzy
msgid "Returns the current cursor position."
-msgstr "Retourne la position de défilement actuelle."
+msgstr "Retourne la position actuelle du curseur."
#: doc/classes/StreamPeerBuffer.xml
#, fuzzy
@@ -59120,8 +59220,8 @@ msgid ""
"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"
+"print(some_array[0]) # Prints \"One,Two,Three\"\n"
+"print(some_array[1]) # Prints \"Four\"\n"
"[/codeblock]"
msgstr ""
@@ -60545,7 +60645,7 @@ msgstr ""
#: doc/classes/TextEdit.xml
msgid "Adds a [code]keyword[/code] and its [Color]."
-msgstr ""
+msgstr "Ajoute un mot clé [code]keyword[/code] avec sa [Color]."
#: doc/classes/TextEdit.xml
msgid ""
@@ -62188,9 +62288,8 @@ msgid "Theme's [StyleBox] item type."
msgstr "Le type [StyleBox] du thème."
#: doc/classes/Theme.xml
-#, fuzzy
msgid "Maximum value for the DataType enum."
-msgstr "Valeur maximale pour le mode énumeration."
+msgstr "La valeur maximale pour l’énumération DateType."
#: doc/classes/Thread.xml
msgid "A unit of execution in a process."
@@ -62977,7 +63076,7 @@ msgstr ""
#: doc/classes/Time.xml
msgid "Time singleton for working with time."
-msgstr ""
+msgstr "Une instance unique pour travailler avec les heures."
#: doc/classes/Time.xml
msgid ""
@@ -63047,6 +63146,9 @@ msgid ""
"[code]month[/code], [code]day[/code], [code]weekday[/code], [code]hour[/"
"code], [code]minute[/code], and [code]second[/code]."
msgstr ""
+"Retourne la date actuelle sous forme de dictionnaire avec les clés : "
+"[code]year[/code], [code]month[/code], [code]day[/code], [code]weekday[/"
+"code], [code]hour[/code], [code]minute[/code] et [code]second[/code]."
#: doc/classes/Time.xml
msgid ""
@@ -63723,9 +63825,8 @@ msgstr ""
"Cette méthode ne tient pas compte de la translation (le vecteur d'origine)."
#: doc/classes/Transform2D.xml
-#, fuzzy
msgid "Returns the transform's origin (translation)."
-msgstr "Retourne l’origine du transform (traduction)."
+msgstr "Retourne l’origine de la transformation (position)."
#: doc/classes/Transform2D.xml
#, fuzzy
@@ -63803,7 +63904,7 @@ msgstr ""
#: doc/classes/Translation.xml
msgid "Virtual method to override [method get_message]."
-msgstr ""
+msgstr "La méthode virtuelle [method get_message] à surcharger."
#: doc/classes/Translation.xml
msgid "Adds a message if nonexistent, followed by its translation."
@@ -64275,7 +64376,7 @@ msgstr ""
#: doc/classes/Tree.xml
msgid "Default text [Color] of the title button."
-msgstr ""
+msgstr "La [Color] par défaut du titre du bouton."
#: doc/classes/Tree.xml
msgid "The horizontal space between each button in a cell."
@@ -64517,14 +64618,16 @@ msgstr ""
#: doc/classes/TreeItem.xml
msgid "Returns the custom background color of column [code]column[/code]."
msgstr ""
+"Retourne la couleur personnalisée de l'arrière-plan de la colonne "
+"[code]column[/code]."
#: doc/classes/TreeItem.xml
msgid "Returns the custom color of column [code]column[/code]."
-msgstr ""
+msgstr "Retourne la couleur personnalisée de la colonne [code]column[/code]."
#: doc/classes/TreeItem.xml
msgid "Returns [code]true[/code] if [code]expand_right[/code] is set."
-msgstr ""
+msgstr "Retourne [code]true[/code] si [code]expand_right[/code] est défini."
#: doc/classes/TreeItem.xml
#, fuzzy
@@ -64537,12 +64640,11 @@ msgstr "Retourne la largeur maximale de l'icône de la colonne."
#: doc/classes/TreeItem.xml
msgid "Returns the [Color] modulating the column's icon."
-msgstr ""
+msgstr "Retourne la [Color] modulant l'icône de la colonne."
#: doc/classes/TreeItem.xml
-#, fuzzy
msgid "Returns the icon [Texture] region as [Rect2]."
-msgstr "Retourne la zone du [Rect2]."
+msgstr "Retourne la zone de la [Texture] de l'icône sous forme de [Rect2]."
#: doc/classes/TreeItem.xml
msgid ""
@@ -64961,9 +65063,8 @@ msgid ""
msgstr ""
#: doc/classes/Tween.xml
-#, fuzzy
msgid "Continues animating all stopped tweens."
-msgstr "Continuer à animer tous les tweens arrêtés."
+msgstr "Continuer d'animer tous les tweens arrêtés."
#: doc/classes/Tween.xml
msgid "Sets the interpolation to the given [code]time[/code] in seconds."
@@ -65030,23 +65131,20 @@ msgid ""
msgstr ""
#: doc/classes/Tween.xml
-#, fuzzy
msgid "If [code]true[/code], the tween loops."
-msgstr "Si [code]true[/code], l'interpolation fait une boucle."
+msgstr "Si [code]true[/code], le tween se répète."
#: doc/classes/Tween.xml
msgid "Emitted when all processes in a tween end."
msgstr ""
#: doc/classes/Tween.xml
-#, fuzzy
msgid "Emitted when a tween ends."
-msgstr "Émis à la fin d'une interpolation."
+msgstr "Émis à la fin d'un tween."
#: doc/classes/Tween.xml
-#, fuzzy
msgid "Emitted when a tween starts."
-msgstr "Émis quand une interpolation démarre."
+msgstr "Émis quand un tween démarre."
#: doc/classes/Tween.xml
msgid "Emitted at each step of the animation."
@@ -65890,7 +65988,7 @@ msgstr ""
#: doc/classes/Vector2.xml doc/classes/Vector3.xml
msgid "3Blue1Brown Essence of Linear Algebra"
-msgstr ""
+msgstr "3Blue1Brown Essence of Linear Algebra"
#: doc/classes/Vector2.xml
#, fuzzy
@@ -66205,9 +66303,8 @@ msgid ""
msgstr ""
#: doc/classes/Vector3.xml
-#, fuzzy
msgid "Returns a Vector3 with the given components."
-msgstr "Retourne un caractère avec la valeur ascii donnée."
+msgstr "Retourne un Vector3 avec les coordonnées spécifiées."
#: doc/classes/Vector3.xml
#, fuzzy
@@ -66598,9 +66695,8 @@ msgid ""
msgstr ""
#: doc/classes/VideoPlayer.xml
-#, fuzzy
msgid "Returns the current frame as a [Texture]."
-msgstr "Retourne la [Texture2D] de l'image donnée."
+msgstr "Retourne la trame actuelle de la [Texture]."
#: doc/classes/VideoPlayer.xml
msgid ""
@@ -66668,7 +66764,6 @@ msgid "Audio volume in dB."
msgstr "Volume audio en dB."
#: doc/classes/VideoPlayer.xml
-#, fuzzy
msgid "Emitted when playback is finished."
msgstr "Émis lorsque la lecture est terminée."
@@ -66826,9 +66921,8 @@ msgid "Returns the total transform of the viewport."
msgstr "Retourne la transformation totale de la fenêtre d'affichage."
#: doc/classes/Viewport.xml
-#, fuzzy
msgid "Returns the topmost modal in the stack."
-msgstr "Retourne le mode de mise à jour d'une piste de valeur."
+msgstr "Retourne la vue exclusive la plus en avant dans la pile."
#: doc/classes/Viewport.xml
#, fuzzy
@@ -66864,9 +66958,8 @@ msgid ""
msgstr ""
#: doc/classes/Viewport.xml
-#, fuzzy
msgid "Returns the viewport's RID from the [VisualServer]."
-msgstr "Retourne le RID de la caméra depuis le [RenderingServer]."
+msgstr "Retourne le RID de la caméra depuis le [VisualServer]."
#: doc/classes/Viewport.xml
msgid "Returns the visible rectangle in global screen coordinates."
@@ -67428,9 +67521,8 @@ msgid ""
msgstr ""
#: doc/classes/VisibilityEnabler.xml
-#, fuzzy
msgid "If [code]true[/code], [RigidBody] nodes will be paused."
-msgstr "Si [code]true[/code], les nœuds [RigidBody3D] seront mis en pause."
+msgstr "Si [code]true[/code], les nœuds [RigidBody] seront mis en pause."
#: doc/classes/VisibilityEnabler.xml doc/classes/VisibilityEnabler2D.xml
msgid "If [code]true[/code], [AnimationPlayer] nodes will be paused."
@@ -67468,14 +67560,12 @@ msgid "If [code]true[/code], [RigidBody2D] nodes will be paused."
msgstr "Si [code]true[/code], les nœuds [RigidBody2D] seront mis en pause."
#: doc/classes/VisibilityEnabler2D.xml
-#, fuzzy
msgid "If [code]true[/code], [AnimatedSprite] nodes will be paused."
-msgstr "Si [code]true[/code], les nœuds [GPUParticles2D] seront mis en pause."
+msgstr "Si [code]true[/code], les nœuds [AnimatedSprite] seront mis en pause."
#: doc/classes/VisibilityEnabler2D.xml
-#, fuzzy
msgid "If [code]true[/code], [Particles2D] nodes will be paused."
-msgstr "Si [code]true[/code], les nœuds [GPUParticles2D] seront mis en pause."
+msgstr "Si [code]true[/code], les nœuds [Particles2D] seront mis en pause."
#: doc/classes/VisibilityEnabler2D.xml
msgid ""
@@ -67508,9 +67598,8 @@ msgid "This enabler will stop the parent's _physics_process function."
msgstr "Cet activateur arrêtera la fonction _physics_process du parent."
#: doc/classes/VisibilityEnabler2D.xml
-#, fuzzy
msgid "This enabler will stop [AnimatedSprite] nodes animations."
-msgstr "Cet activateur arrêtera les animations de nœuds [AnimatedSprite2D]."
+msgstr "Cet activateur arrêtera les animations de nœuds [AnimatedSprite]."
#: doc/classes/VisibilityNotifier.xml doc/classes/VisibilityNotifier2D.xml
msgid "Detects approximately when the node is visible on screen."
@@ -67562,14 +67651,12 @@ msgid "Emitted when the VisibilityNotifier exits a [Camera]'s view."
msgstr "Émis lorsque le VisibilityNotifier3D quitte la vue d'un [Camera3D]."
#: doc/classes/VisibilityNotifier.xml
-#, fuzzy
msgid "Emitted when the VisibilityNotifier enters the screen."
-msgstr "Émis lorsque le VisibilityNotifier2D entre dans l'écran."
+msgstr "Émis lorsque le VisibilityNotifier entre dans l'écran."
#: doc/classes/VisibilityNotifier.xml
-#, fuzzy
msgid "Emitted when the VisibilityNotifier exits the screen."
-msgstr "Émis lorsque le VisibilityNotifier2D quitte l’écran."
+msgstr "Émis lorsque le VisibilityNotifier quitte l’écran."
#: doc/classes/VisibilityNotifier2D.xml
msgid ""
@@ -68358,9 +68445,8 @@ msgid ""
msgstr "Renvoie le nom du port d'entrée spécifié."
#: modules/visual_script/doc_classes/VisualScriptCustomNode.xml
-#, fuzzy
msgid "Return the specified input port's hint string."
-msgstr "Renvoie le nom du port d'entrée spécifié."
+msgstr "Renvoie le texte d'indice du port d'entrée spécifié."
#: modules/visual_script/doc_classes/VisualScriptCustomNode.xml
msgid "Return the specified input port's name."
@@ -68390,9 +68476,8 @@ msgid ""
msgstr ""
#: modules/visual_script/doc_classes/VisualScriptCustomNode.xml
-#, fuzzy
msgid "Return the specified output port's hint string."
-msgstr "Renvoie le nom du port d'entrée spécifié."
+msgstr "Renvoie le texte d'indice du port de sortie spécifié."
#: modules/visual_script/doc_classes/VisualScriptCustomNode.xml
msgid "Return the specified output port's name."
@@ -68544,9 +68629,8 @@ msgid ""
msgstr ""
#: modules/visual_script/doc_classes/VisualScriptFunction.xml
-#, fuzzy
msgid "A Visual Script node representing a function."
-msgstr "Un nœud Visual Script utilisé pour annoter le script."
+msgstr "Un nœud Visual Script représentant une fonction."
#: modules/visual_script/doc_classes/VisualScriptFunction.xml
msgid ""
@@ -68653,11 +68737,11 @@ msgstr ""
#: modules/visual_script/doc_classes/VisualScriptFunctionCall.xml
msgid "The method will be called locally."
-msgstr ""
+msgstr "Cette méthode sera appelée localement."
#: modules/visual_script/doc_classes/VisualScriptFunctionCall.xml
msgid "The method will be called remotely."
-msgstr ""
+msgstr "Cette méthode sera appelée à distance."
#: modules/visual_script/doc_classes/VisualScriptFunctionCall.xml
msgid "The method will be called remotely using an unreliable protocol."
@@ -68691,9 +68775,8 @@ msgid ""
msgstr ""
#: modules/visual_script/doc_classes/VisualScriptFunctionState.xml
-#, fuzzy
msgid "Returns whether the function state is valid."
-msgstr "Indique si le quaternion est normalisé ou non."
+msgstr "Retourne si l'état de la fonction est valide."
#: modules/visual_script/doc_classes/VisualScriptFunctionState.xml
msgid "Resumes the function to run from the point it was yielded."
@@ -68822,24 +68905,20 @@ msgid "Removes an output port from the Visual Script node."
msgstr "Supprime un nœud de la sélection."
#: modules/visual_script/doc_classes/VisualScriptLists.xml
-#, fuzzy
msgid "Sets the name of an input port."
-msgstr "Obtient le nom d'un entrée par son index."
+msgstr "Définit le nom d'un port d'entrée."
#: modules/visual_script/doc_classes/VisualScriptLists.xml
-#, fuzzy
msgid "Sets the type of an input port."
-msgstr "Obtient le type d’une piste."
+msgstr "Définit le type d'un port d'entrée."
#: modules/visual_script/doc_classes/VisualScriptLists.xml
-#, fuzzy
msgid "Sets the name of an output port."
-msgstr "Obtient le nom d'un entrée par son index."
+msgstr "Définit le nom d'un port de sortie."
#: modules/visual_script/doc_classes/VisualScriptLists.xml
-#, fuzzy
msgid "Sets the type of an output port."
-msgstr "Obtient le type d’une piste."
+msgstr "Définit le type d'un port de sortie."
#: modules/visual_script/doc_classes/VisualScriptLocalVar.xml
msgid "Gets a local variable's value."
@@ -69162,7 +69241,7 @@ msgstr ""
#: modules/visual_script/doc_classes/VisualScriptPropertySet.xml
msgid "The property will be assigned regularly."
-msgstr ""
+msgstr "La propriété sera assignée régulièrement."
#: modules/visual_script/doc_classes/VisualScriptPropertySet.xml
msgid ""
@@ -69374,9 +69453,8 @@ msgid ""
msgstr ""
#: modules/visual_script/doc_classes/VisualScriptTypeCast.xml
-#, fuzzy
msgid "The target type to be converted to."
-msgstr "Le type à déconstruire."
+msgstr "Le type cible dans lequel convertir la valeur."
#: modules/visual_script/doc_classes/VisualScriptVariableGet.xml
msgid "Gets a variable's value."
@@ -69479,9 +69557,8 @@ msgid ""
msgstr ""
#: modules/visual_script/doc_classes/VisualScriptYieldSignal.xml
-#, fuzzy
msgid "The signal name to be waited for."
-msgstr "Le signal à émettre."
+msgstr "Le nom du signal à attendre."
#: modules/visual_script/doc_classes/VisualScriptYieldSignal.xml
msgid "A signal from this [Object] will be used."
@@ -69581,16 +69658,20 @@ msgid ""
"projection. Objects remain the same size on the screen no matter how far "
"away they are."
msgstr ""
+"Utilise une projection orthogonale pour la caméra. Les objets affichés "
+"apparaissent avec la même taille peu importe leur éloignement de la caméra."
#: doc/classes/VisualServer.xml
msgid ""
"Sets camera to use perspective projection. Objects on the screen becomes "
"smaller when they are far away."
msgstr ""
+"Utilise la perspective comme projection pour la caméra. Ainsi, les objets "
+"affichés apparaissent plus petits quand ils sont plus éloignés."
#: doc/classes/VisualServer.xml
msgid "Sets [Transform] of camera."
-msgstr "Défini [Transform] de la caméra."
+msgstr "Définit la [Transform] de la caméra."
#: doc/classes/VisualServer.xml
msgid ""
@@ -69744,6 +69825,8 @@ msgstr "Définit l’index du [CanvasItem]."
msgid ""
"The light mask. See [LightOccluder2D] for more information on light masks."
msgstr ""
+"Le masque de lumière. Voir [LightOccluder2D] pour plus d'informations sur "
+"les masques de lumière."
#: doc/classes/VisualServer.xml
msgid "Sets a new material to the [CanvasItem]."
@@ -69906,9 +69989,8 @@ msgid ""
msgstr ""
#: doc/classes/VisualServer.xml
-#, fuzzy
msgid "Sets the length of the shadow's gradient."
-msgstr "Retourne la longueur du quaternion."
+msgstr "Définit la longueur du dégradé de l'ombre."
#: doc/classes/VisualServer.xml
msgid "Smoothens the shadow. The lower, the smoother."
@@ -69918,12 +70000,16 @@ msgstr ""
msgid ""
"Sets texture to be used by light. Equivalent to [member Light2D.texture]."
msgstr ""
+"Définit une texture à utiliser pour la lumière. Équivalent à [member Light2D."
+"texture]."
#: doc/classes/VisualServer.xml
msgid ""
"Sets the offset of the light's texture. Equivalent to [member Light2D."
"offset]."
msgstr ""
+"Définit le décalage de la texture de lumière. Équivalent à [member Light2D."
+"offset]."
#: doc/classes/VisualServer.xml
msgid "Sets the canvas light's [Transform2D]."
@@ -69936,7 +70022,6 @@ msgid ""
msgstr ""
#: doc/classes/VisualServer.xml
-#, 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 "
@@ -69944,13 +70029,12 @@ msgid ""
"Once finished with your RID, you will want to free the RID using the "
"VisualServer's [method free_rid] static method."
msgstr ""
-"Crée une lumière spot et l’ajoute au RenderingServer. Il peut être consulté "
-"avec le RID qui est retourné. Ce RID peut être utilisé dans la plupart des "
-"fonctions [code]light_*[/code] RenderingServer.\n"
-"Une fois terminé avec votre RID, vous voudrez libérer le RID à l’aide de la "
-"méthode statique [method free_rid] du RenderingServer.\n"
-"Pour placer dans une scène, attachez cette lumière spot à une instance en "
-"utilisant la [method instance_set_base] utilisant le RID retourné."
+"Crée un nouveau polygone de bloqueur de lumière et l’ajoute au VisualServer. "
+"Il peut être consulté avec le RID qui est retourné. Ce RID peut être utilisé "
+"dans la plupart des fonctions [code]canvas_occluder_polygon_*[/code] "
+"VisualServer.\n"
+"Une fois terminé avec ce RID, vous voudrez libérer le RID à l’aide de la "
+"méthode statique [method free_rid] du VisualServer."
#: doc/classes/VisualServer.xml
msgid ""
@@ -70130,6 +70214,9 @@ 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 ""
+"Force l'affichage une trame à l'appel de cette fonction. Afficher une trame "
+"met à jour tous les [Viewport] qui sont actifs. À utiliser avec beaucoup de "
+"vigilance."
#: doc/classes/VisualServer.xml
msgid "Synchronizes threads."
@@ -70236,9 +70323,8 @@ msgid ""
msgstr ""
#: doc/classes/VisualServer.xml
-#, fuzzy
msgid "Returns the Transform set by [method gi_probe_set_to_cell_xform]."
-msgstr "Restaurer l’état enregistré par [method get_state]."
+msgstr "Retourne la Transform définie par [method gi_probe_set_to_cell_xform]."
#: doc/classes/VisualServer.xml
msgid ""
@@ -70390,9 +70476,8 @@ msgid ""
msgstr ""
#: doc/classes/VisualServer.xml
-#, fuzzy
msgid "Returns the material assigned to the [ImmediateGeometry]."
-msgstr "Retourne le matériel affecté à la [ImmediateGeometry3D]."
+msgstr "Retourne le matériel affecté à la [ImmediateGeometry]."
#: doc/classes/VisualServer.xml
msgid ""
@@ -70916,7 +71001,7 @@ msgstr "Retourne l’aabb personnalisé d’un maillage."
#: doc/classes/VisualServer.xml
msgid "Returns a mesh's number of surfaces."
-msgstr ""
+msgstr "Retourne le nombre de surface du maillage."
#: doc/classes/VisualServer.xml
msgid "Removes a mesh's surface."
@@ -70969,7 +71054,7 @@ msgstr "Retourne le nom de la méthode d'une piste de méthode."
#: doc/classes/VisualServer.xml
msgid "Function is unused in Godot 3.x."
-msgstr ""
+msgstr "Cette fonction n'est pas utilisée dans Godot 3.x."
#: doc/classes/VisualServer.xml
#, fuzzy
@@ -71538,7 +71623,7 @@ msgstr ""
#: doc/classes/VisualServer.xml
msgid "Allocates the GPU buffers for this skeleton."
-msgstr ""
+msgstr "Alloue la mémoire tampon dans le GPU pour ce squelette."
#: doc/classes/VisualServer.xml
msgid "Returns the [Transform] set for a specific bone of this skeleton."
@@ -71661,14 +71746,12 @@ msgid ""
msgstr ""
#: doc/classes/VisualServer.xml
-#, fuzzy
msgid "Returns the depth of the texture."
-msgstr "Retourne la hauteur du contenu."
+msgstr "Retourne la profondeur de la texture."
#: doc/classes/VisualServer.xml
-#, fuzzy
msgid "Returns the flags of a texture."
-msgstr "Retourne la texture de la tuile."
+msgstr "Retourne les drapeaux de la texture."
#: doc/classes/VisualServer.xml
#, fuzzy
@@ -71781,9 +71864,8 @@ msgstr ""
"utilisant la [method instance_set_base] utilisant le RID retourné."
#: doc/classes/VisualServer.xml
-#, fuzzy
msgid "Detaches the viewport from the screen."
-msgstr "Supprime tous les points de la courbe."
+msgstr "Retire la fenêtre d'affichage de l'écran."
#: doc/classes/VisualServer.xml
msgid ""
@@ -71802,6 +71884,8 @@ msgstr ""
#: doc/classes/VisualServer.xml
msgid "If [code]true[/code], sets the viewport active, else sets it inactive."
msgstr ""
+"Si [code]true[/code], définit cette fenêtre d'affichage comme active, sinon "
+"comme inactive."
#: doc/classes/VisualServer.xml
msgid ""
@@ -72961,7 +73045,6 @@ msgid "A fragment shader, operating on fragments (pixels)."
msgstr "Un shader de fragment, s'appliquant sur chacun des pixels (fragments)."
#: doc/classes/VisualShader.xml
-#, fuzzy
msgid "A shader for light calculations."
msgstr "Un shader pour les calculs de lumière."
@@ -73083,9 +73166,8 @@ msgstr ""
#: doc/classes/VisualShaderNodeScalarUniform.xml
#: doc/classes/VisualShaderNodeTransformUniform.xml
#: doc/classes/VisualShaderNodeVec3Uniform.xml
-#, fuzzy
msgid "Enables usage of the [member default_value]."
-msgstr "Activer l'usage de [member default_value]."
+msgstr "Active l'usage de [member default_value]."
#: doc/classes/VisualShaderNodeColorConstant.xml
msgid "A [Color] constant to be used within the visual shader graph."
@@ -73695,27 +73777,33 @@ msgstr ""
#: doc/classes/VisualShaderNodeGroupBase.xml
msgid "Removes all previously specified input ports."
-msgstr ""
+msgstr "Retire tous les ports d'entrées précédemment spécifiés."
#: doc/classes/VisualShaderNodeGroupBase.xml
msgid "Removes all previously specified output ports."
-msgstr ""
+msgstr "Retire tous les ports de sortie précédemment spécifiés."
#: doc/classes/VisualShaderNodeGroupBase.xml
msgid ""
"Returns a free input port ID which can be used in [method add_input_port]."
msgstr ""
+"Retourne un identifiant d'un port d'entrée libre qui peut être utilisé pour "
+"[method add_input_port]."
#: doc/classes/VisualShaderNodeGroupBase.xml
msgid ""
"Returns a free output port ID which can be used in [method add_output_port]."
msgstr ""
+"Retourne un identifiant d'un port de sortie libre qui peut être utilisé pour "
+"[method add_input_port]."
#: doc/classes/VisualShaderNodeGroupBase.xml
msgid ""
"Returns the number of input ports in use. Alternative for [method "
"get_free_input_port_id]."
msgstr ""
+"Retourne le nombre de ports d'entrée utilisés. C'est une alternative à "
+"[method get_free_input_port_id]."
#: doc/classes/VisualShaderNodeGroupBase.xml
msgid ""
@@ -73728,6 +73816,8 @@ msgid ""
"Returns the number of output ports in use. Alternative for [method "
"get_free_output_port_id]."
msgstr ""
+"Retourne le nombre de ports de sortie utilisés. C'est une alternative à "
+"[method get_free_output_port_id]."
#: doc/classes/VisualShaderNodeGroupBase.xml
msgid ""
@@ -73737,11 +73827,11 @@ msgstr ""
#: doc/classes/VisualShaderNodeGroupBase.xml
msgid "Returns [code]true[/code] if the specified input port exists."
-msgstr ""
+msgstr "Retourne [code]true[/code] si le port d'entrée spécifié existe."
#: doc/classes/VisualShaderNodeGroupBase.xml
msgid "Returns [code]true[/code] if the specified output port exists."
-msgstr ""
+msgstr "Retourne [code]true[/code] si le port de sortie spécifié existe."
#: doc/classes/VisualShaderNodeGroupBase.xml
msgid ""
@@ -74256,7 +74346,7 @@ msgstr ""
#: doc/classes/VisualShaderNodeUniformRef.xml
msgid "A reference to an existing [VisualShaderNodeUniform]."
-msgstr ""
+msgstr "Une référence à un [VisualShaderNodeUniform] existant."
#: doc/classes/VisualShaderNodeUniformRef.xml
msgid ""
@@ -74723,7 +74813,7 @@ msgstr ""
#: doc/classes/VSlider.xml
msgid "The background of the area below the grabber."
-msgstr ""
+msgstr "L'arrière plan de l'aire sous le glisseur."
#: doc/classes/VSlider.xml
msgid ""
@@ -74764,6 +74854,8 @@ msgstr ""
#: doc/classes/WeakRef.xml
msgid "Returns the [Object] this weakref is referring to."
msgstr ""
+"Retourne le [Object] que cette référence faible ([code]weakref[/code]) "
+"contient."
#: modules/webrtc/doc_classes/WebRTCDataChannel.xml
msgid "Closes this data channel, notifying the other peer."
diff --git a/doc/translations/gl.po b/doc/translations/gl.po
index 20605af75c..e7142860b2 100644
--- a/doc/translations/gl.po
+++ b/doc/translations/gl.po
@@ -3324,8 +3324,12 @@ msgstr ""
#: doc/classes/@GlobalScope.xml
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]."
+"pick in a list specified via a hint string.\n"
+"The hint string is a comma separated list of names such as [code]\"Hello,"
+"Something,Else\"[/code]. For integer and float properties, the first name in "
+"the list has value 0, the next 1, and so on. Explicit values can also be "
+"specified by appending [code]:integer[/code] to the name, e.g. [code]\"Zero,"
+"One,Three:3,Four,Six:6\"[/code]."
msgstr ""
#: doc/classes/@GlobalScope.xml
@@ -5237,8 +5241,11 @@ msgstr ""
#: doc/classes/AnimationNodeBlendTree.xml
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."
+"This node may contain a sub-tree of any other blend type nodes, such as "
+"[AnimationNodeTransition], [AnimationNodeBlend2], [AnimationNodeBlend3], "
+"[AnimationNodeOneShot], etc. This is one of the most commonly used roots.\n"
+"An [AnimationNodeOutput] node named [code]output[/code] is created by "
+"default."
msgstr ""
#: doc/classes/AnimationNodeBlendTree.xml
@@ -10357,8 +10364,15 @@ msgstr ""
#: doc/classes/BakedLightmap.xml
msgid ""
-"When enabled, the lightmapper will merge the textures for all meshes into a "
-"single large layered texture. Not supported in GLES2."
+"If [code]true[/code], the lightmapper will merge the textures for all meshes "
+"into one or several large layered textures. If [code]false[/code], every "
+"mesh will get its own lightmap texture, which is less efficient.\n"
+"[b]Note:[/b] Atlas lightmap rendering is only supported in GLES3, [i]not[/i] "
+"GLES2. Non-atlas lightmap rendering is supported by both GLES3 and GLES2. If "
+"[member ProjectSettings.rendering/quality/driver/fallback_to_gles2] is "
+"[code]true[/code], consider baking lightmaps with [member atlas_generate] "
+"set to [code]false[/code] so that the resulting lightmap is visible in both "
+"GLES3 and GLES2."
msgstr ""
#: doc/classes/BakedLightmap.xml
@@ -12506,14 +12520,15 @@ msgstr ""
#: doc/classes/CanvasItem.xml
msgid ""
-"If [code]enable[/code] is [code]true[/code], children will be updated with "
-"local transform data."
+"If [code]enable[/code] is [code]true[/code], this node will receive "
+"[constant NOTIFICATION_LOCAL_TRANSFORM_CHANGED] when its local transform "
+"changes."
msgstr ""
#: doc/classes/CanvasItem.xml
msgid ""
-"If [code]enable[/code] is [code]true[/code], children will be updated with "
-"global transform data."
+"If [code]enable[/code] is [code]true[/code], this node will receive "
+"[constant NOTIFICATION_TRANSFORM_CHANGED] when its global transform changes."
msgstr ""
#: doc/classes/CanvasItem.xml
@@ -12627,9 +12642,14 @@ msgstr ""
#: doc/classes/CanvasItem.xml
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]."
+"The [CanvasItem]'s global transform has changed. This notification is only "
+"received if enabled by [method set_notify_transform]."
+msgstr ""
+
+#: doc/classes/CanvasItem.xml
+msgid ""
+"The [CanvasItem]'s local transform has changed. This notification is only "
+"received if enabled by [method set_notify_local_transform]."
msgstr ""
#: doc/classes/CanvasItem.xml
@@ -19591,9 +19611,8 @@ msgid ""
"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"
+"OpenType ([code].otf[/code]), Web Open Font Format 1 ([code].woff[/code]), "
+"and Web Open Font Format 2 ([code].woff2[/code]).\n"
"[codeblock]\n"
"var dynamic_font = DynamicFont.new()\n"
"dynamic_font.font_data = load(\"res://BarlowCondensed-Bold.ttf\")\n"
@@ -22383,12 +22402,13 @@ msgstr ""
#: doc/classes/EditorVCSInterface.xml
msgid ""
"Helper function to create a commit [Dictionary] item. [code]msg[/code] is "
-"the commit message of the commit. [code]author[/code] is a human-readable "
-"string containing the author's details, e.g. the email and name configured "
-"in the VCS. [code]id[/code] is the identifier of the commit, in whichever "
-"format your VCS may provide an identifier to commits. [code]date[/code] is "
-"directly added to the commit item and displayed in the editor, and hence, it "
-"shall be a well-formatted, human-readable date string."
+"the commit message of the commit. [code]author[/code] is a single human-"
+"readable string containing all the author's details, e.g. the email and name "
+"configured in the VCS. [code]id[/code] is the identifier of the commit, in "
+"whichever format your VCS may provide an identifier to commits. "
+"[code]unix_timestamp[/code] is the UTC Unix timestamp of when the commit was "
+"created. [code]offset_minutes[/code] is the timezone offset in minutes, "
+"recorded from the system timezone where the commit was created."
msgstr ""
#: doc/classes/EditorVCSInterface.xml
@@ -28972,9 +28992,9 @@ 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."
+"If [code]exact[/code] is [code]false[/code], it ignores additional input "
+"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the "
+"direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/Input.xml
@@ -28984,9 +29004,9 @@ msgid ""
"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."
+"If [code]exact[/code] is [code]false[/code], it ignores additional input "
+"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the "
+"direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/Input.xml
@@ -29119,9 +29139,9 @@ msgid ""
"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.\n"
+"If [code]exact[/code] is [code]false[/code], it ignores additional input "
+"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the "
+"direction for [InputEventJoypadMotion] events.\n"
"[b]Note:[/b] Due to keyboard ghosting, [method is_action_just_pressed] may "
"return [code]false[/code] even if one of the action's keys is pressed. See "
"[url=$DOCS_URL/tutorials/inputs/input_examples.html#keyboard-events]Input "
@@ -29133,9 +29153,9 @@ 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."
+"If [code]exact[/code] is [code]false[/code], it ignores additional input "
+"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the "
+"direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/Input.xml
@@ -29144,9 +29164,9 @@ msgid ""
"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.\n"
+"If [code]exact[/code] is [code]false[/code], it ignores additional input "
+"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the "
+"direction for [InputEventJoypadMotion] events.\n"
"[b]Note:[/b] Due to keyboard ghosting, [method is_action_pressed] may return "
"[code]false[/code] even if one of the action's keys is pressed. See "
"[url=$DOCS_URL/tutorials/inputs/input_examples.html#keyboard-events]Input "
@@ -29496,18 +29516,18 @@ msgstr ""
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."
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/InputEvent.xml
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."
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/InputEvent.xml
@@ -29516,9 +29536,9 @@ msgid ""
"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.\n"
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events.\n"
"[b]Note:[/b] Due to keyboard ghosting, [method is_action_pressed] may return "
"[code]false[/code] even if one of the action's keys is pressed. See "
"[url=$DOCS_URL/tutorials/inputs/input_examples.html#keyboard-events]Input "
@@ -29530,9 +29550,9 @@ 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."
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/InputEvent.xml
@@ -29563,9 +29583,9 @@ msgid ""
"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."
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/InputEvent.xml
@@ -30095,9 +30115,9 @@ msgid ""
"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."
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/InputMap.xml
@@ -33933,6 +33953,39 @@ msgid "Returns the number of surface materials."
msgstr ""
#: doc/classes/MeshInstance.xml
+msgid ""
+"Returns [code]true[/code] if this [MeshInstance] can be merged with the "
+"specified [code]other_mesh_instance[/code], using the [method MeshInstance."
+"merge_meshes] function.\n"
+"In order to be mergeable, properties of the [MeshInstance] must match, and "
+"each surface must match, in terms of material, attributes and vertex format."
+msgstr ""
+
+#: doc/classes/MeshInstance.xml
+msgid ""
+"This function can merge together the data from several source "
+"[MeshInstance]s into a single destination [MeshInstance] (the MeshInstance "
+"the function is called from). This is primarily useful for improving "
+"performance by reducing the number of drawcalls and [Node]s.\n"
+"Merging should only be attempted for simple meshes that do not contain "
+"animation.\n"
+"The final vertices can either be returned in global space, or in local space "
+"relative to the destination [MeshInstance] global transform (the destination "
+"Node must be inside the [SceneTree] for local space to work).\n"
+"The function will make a final check for compatibility between the "
+"[MeshInstance]s by default, this should always be used unless you have "
+"previously checked for compatibility using [method MeshInstance."
+"is_mergeable_with]. If the compatibility check is omitted and the meshes are "
+"merged, you may see rendering errors.\n"
+"[b]Note:[/b] The requirements for similarity between meshes are quite "
+"stringent. They can be checked using the [method MeshInstance."
+"is_mergeable_with] function prior to calling [method MeshInstance."
+"merge_meshes].\n"
+"Also note that any initial data in the destination [MeshInstance] data will "
+"be discarded."
+msgstr ""
+
+#: doc/classes/MeshInstance.xml
msgid "Sets the [Material] for a surface of the [Mesh] resource."
msgstr ""
@@ -36385,12 +36438,12 @@ msgid ""
"[/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."
+"typically relevant for [url=$DOCS_URL/tutorials/misc/"
+"running_code_in_the_editor.html]tool scripts[/url] and [url=$DOCS_URL/"
+"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
@@ -37097,7 +37150,15 @@ msgid ""
"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."
+"subinstancing.\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=$DOCS_URL/tutorials/misc/"
+"running_code_in_the_editor.html]tool scripts[/url] and [url=$DOCS_URL/"
+"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
@@ -37693,7 +37754,13 @@ msgid ""
msgstr ""
#: doc/classes/Object.xml
-msgid "Called when the object is initialized."
+msgid ""
+"Called when the object is initialized in memory. Can be defined to take in "
+"parameters, that are passed in when constructing.\n"
+"[b]Note:[/b] If [method _init] is defined with required parameters, then "
+"explicit construction is the only valid means of creating an Object of the "
+"class. If any other means (such as [method PackedScene.instance]) is used, "
+"then initialization will fail."
msgstr ""
#: doc/classes/Object.xml
@@ -42937,7 +43004,10 @@ msgid ""
msgstr ""
#: doc/classes/PhysicsServer.xml
-msgid "Returns an Info defined by the [enum ProcessInfo] input given."
+msgid ""
+"Returns information about the current state of the 3D physics engine. See "
+"[enum ProcessInfo] for a list of available states. Only implemented for "
+"Godot Physics."
msgstr ""
#: doc/classes/PhysicsServer.xml
@@ -55861,8 +55931,8 @@ msgid ""
"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"
+"print(some_array[0]) # Prints \"One,Two,Three\"\n"
+"print(some_array[1]) # Prints \"Four\"\n"
"[/codeblock]"
msgstr ""
diff --git a/doc/translations/hi.po b/doc/translations/hi.po
index 8e526e6594..4815357b4d 100644
--- a/doc/translations/hi.po
+++ b/doc/translations/hi.po
@@ -3323,8 +3323,12 @@ msgstr ""
#: doc/classes/@GlobalScope.xml
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]."
+"pick in a list specified via a hint string.\n"
+"The hint string is a comma separated list of names such as [code]\"Hello,"
+"Something,Else\"[/code]. For integer and float properties, the first name in "
+"the list has value 0, the next 1, and so on. Explicit values can also be "
+"specified by appending [code]:integer[/code] to the name, e.g. [code]\"Zero,"
+"One,Three:3,Four,Six:6\"[/code]."
msgstr ""
#: doc/classes/@GlobalScope.xml
@@ -5236,8 +5240,11 @@ msgstr ""
#: doc/classes/AnimationNodeBlendTree.xml
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."
+"This node may contain a sub-tree of any other blend type nodes, such as "
+"[AnimationNodeTransition], [AnimationNodeBlend2], [AnimationNodeBlend3], "
+"[AnimationNodeOneShot], etc. This is one of the most commonly used roots.\n"
+"An [AnimationNodeOutput] node named [code]output[/code] is created by "
+"default."
msgstr ""
#: doc/classes/AnimationNodeBlendTree.xml
@@ -10356,8 +10363,15 @@ msgstr ""
#: doc/classes/BakedLightmap.xml
msgid ""
-"When enabled, the lightmapper will merge the textures for all meshes into a "
-"single large layered texture. Not supported in GLES2."
+"If [code]true[/code], the lightmapper will merge the textures for all meshes "
+"into one or several large layered textures. If [code]false[/code], every "
+"mesh will get its own lightmap texture, which is less efficient.\n"
+"[b]Note:[/b] Atlas lightmap rendering is only supported in GLES3, [i]not[/i] "
+"GLES2. Non-atlas lightmap rendering is supported by both GLES3 and GLES2. If "
+"[member ProjectSettings.rendering/quality/driver/fallback_to_gles2] is "
+"[code]true[/code], consider baking lightmaps with [member atlas_generate] "
+"set to [code]false[/code] so that the resulting lightmap is visible in both "
+"GLES3 and GLES2."
msgstr ""
#: doc/classes/BakedLightmap.xml
@@ -12505,14 +12519,15 @@ msgstr ""
#: doc/classes/CanvasItem.xml
msgid ""
-"If [code]enable[/code] is [code]true[/code], children will be updated with "
-"local transform data."
+"If [code]enable[/code] is [code]true[/code], this node will receive "
+"[constant NOTIFICATION_LOCAL_TRANSFORM_CHANGED] when its local transform "
+"changes."
msgstr ""
#: doc/classes/CanvasItem.xml
msgid ""
-"If [code]enable[/code] is [code]true[/code], children will be updated with "
-"global transform data."
+"If [code]enable[/code] is [code]true[/code], this node will receive "
+"[constant NOTIFICATION_TRANSFORM_CHANGED] when its global transform changes."
msgstr ""
#: doc/classes/CanvasItem.xml
@@ -12626,9 +12641,14 @@ msgstr ""
#: doc/classes/CanvasItem.xml
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]."
+"The [CanvasItem]'s global transform has changed. This notification is only "
+"received if enabled by [method set_notify_transform]."
+msgstr ""
+
+#: doc/classes/CanvasItem.xml
+msgid ""
+"The [CanvasItem]'s local transform has changed. This notification is only "
+"received if enabled by [method set_notify_local_transform]."
msgstr ""
#: doc/classes/CanvasItem.xml
@@ -19590,9 +19610,8 @@ msgid ""
"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"
+"OpenType ([code].otf[/code]), Web Open Font Format 1 ([code].woff[/code]), "
+"and Web Open Font Format 2 ([code].woff2[/code]).\n"
"[codeblock]\n"
"var dynamic_font = DynamicFont.new()\n"
"dynamic_font.font_data = load(\"res://BarlowCondensed-Bold.ttf\")\n"
@@ -22382,12 +22401,13 @@ msgstr ""
#: doc/classes/EditorVCSInterface.xml
msgid ""
"Helper function to create a commit [Dictionary] item. [code]msg[/code] is "
-"the commit message of the commit. [code]author[/code] is a human-readable "
-"string containing the author's details, e.g. the email and name configured "
-"in the VCS. [code]id[/code] is the identifier of the commit, in whichever "
-"format your VCS may provide an identifier to commits. [code]date[/code] is "
-"directly added to the commit item and displayed in the editor, and hence, it "
-"shall be a well-formatted, human-readable date string."
+"the commit message of the commit. [code]author[/code] is a single human-"
+"readable string containing all the author's details, e.g. the email and name "
+"configured in the VCS. [code]id[/code] is the identifier of the commit, in "
+"whichever format your VCS may provide an identifier to commits. "
+"[code]unix_timestamp[/code] is the UTC Unix timestamp of when the commit was "
+"created. [code]offset_minutes[/code] is the timezone offset in minutes, "
+"recorded from the system timezone where the commit was created."
msgstr ""
#: doc/classes/EditorVCSInterface.xml
@@ -28971,9 +28991,9 @@ 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."
+"If [code]exact[/code] is [code]false[/code], it ignores additional input "
+"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the "
+"direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/Input.xml
@@ -28983,9 +29003,9 @@ msgid ""
"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."
+"If [code]exact[/code] is [code]false[/code], it ignores additional input "
+"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the "
+"direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/Input.xml
@@ -29118,9 +29138,9 @@ msgid ""
"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.\n"
+"If [code]exact[/code] is [code]false[/code], it ignores additional input "
+"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the "
+"direction for [InputEventJoypadMotion] events.\n"
"[b]Note:[/b] Due to keyboard ghosting, [method is_action_just_pressed] may "
"return [code]false[/code] even if one of the action's keys is pressed. See "
"[url=$DOCS_URL/tutorials/inputs/input_examples.html#keyboard-events]Input "
@@ -29132,9 +29152,9 @@ 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."
+"If [code]exact[/code] is [code]false[/code], it ignores additional input "
+"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the "
+"direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/Input.xml
@@ -29143,9 +29163,9 @@ msgid ""
"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.\n"
+"If [code]exact[/code] is [code]false[/code], it ignores additional input "
+"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the "
+"direction for [InputEventJoypadMotion] events.\n"
"[b]Note:[/b] Due to keyboard ghosting, [method is_action_pressed] may return "
"[code]false[/code] even if one of the action's keys is pressed. See "
"[url=$DOCS_URL/tutorials/inputs/input_examples.html#keyboard-events]Input "
@@ -29495,18 +29515,18 @@ msgstr ""
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."
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/InputEvent.xml
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."
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/InputEvent.xml
@@ -29515,9 +29535,9 @@ msgid ""
"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.\n"
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events.\n"
"[b]Note:[/b] Due to keyboard ghosting, [method is_action_pressed] may return "
"[code]false[/code] even if one of the action's keys is pressed. See "
"[url=$DOCS_URL/tutorials/inputs/input_examples.html#keyboard-events]Input "
@@ -29529,9 +29549,9 @@ 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."
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/InputEvent.xml
@@ -29562,9 +29582,9 @@ msgid ""
"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."
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/InputEvent.xml
@@ -30094,9 +30114,9 @@ msgid ""
"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."
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/InputMap.xml
@@ -33932,6 +33952,39 @@ msgid "Returns the number of surface materials."
msgstr ""
#: doc/classes/MeshInstance.xml
+msgid ""
+"Returns [code]true[/code] if this [MeshInstance] can be merged with the "
+"specified [code]other_mesh_instance[/code], using the [method MeshInstance."
+"merge_meshes] function.\n"
+"In order to be mergeable, properties of the [MeshInstance] must match, and "
+"each surface must match, in terms of material, attributes and vertex format."
+msgstr ""
+
+#: doc/classes/MeshInstance.xml
+msgid ""
+"This function can merge together the data from several source "
+"[MeshInstance]s into a single destination [MeshInstance] (the MeshInstance "
+"the function is called from). This is primarily useful for improving "
+"performance by reducing the number of drawcalls and [Node]s.\n"
+"Merging should only be attempted for simple meshes that do not contain "
+"animation.\n"
+"The final vertices can either be returned in global space, or in local space "
+"relative to the destination [MeshInstance] global transform (the destination "
+"Node must be inside the [SceneTree] for local space to work).\n"
+"The function will make a final check for compatibility between the "
+"[MeshInstance]s by default, this should always be used unless you have "
+"previously checked for compatibility using [method MeshInstance."
+"is_mergeable_with]. If the compatibility check is omitted and the meshes are "
+"merged, you may see rendering errors.\n"
+"[b]Note:[/b] The requirements for similarity between meshes are quite "
+"stringent. They can be checked using the [method MeshInstance."
+"is_mergeable_with] function prior to calling [method MeshInstance."
+"merge_meshes].\n"
+"Also note that any initial data in the destination [MeshInstance] data will "
+"be discarded."
+msgstr ""
+
+#: doc/classes/MeshInstance.xml
msgid "Sets the [Material] for a surface of the [Mesh] resource."
msgstr ""
@@ -36384,12 +36437,12 @@ msgid ""
"[/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."
+"typically relevant for [url=$DOCS_URL/tutorials/misc/"
+"running_code_in_the_editor.html]tool scripts[/url] and [url=$DOCS_URL/"
+"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
@@ -37096,7 +37149,15 @@ msgid ""
"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."
+"subinstancing.\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=$DOCS_URL/tutorials/misc/"
+"running_code_in_the_editor.html]tool scripts[/url] and [url=$DOCS_URL/"
+"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
@@ -37692,7 +37753,13 @@ msgid ""
msgstr ""
#: doc/classes/Object.xml
-msgid "Called when the object is initialized."
+msgid ""
+"Called when the object is initialized in memory. Can be defined to take in "
+"parameters, that are passed in when constructing.\n"
+"[b]Note:[/b] If [method _init] is defined with required parameters, then "
+"explicit construction is the only valid means of creating an Object of the "
+"class. If any other means (such as [method PackedScene.instance]) is used, "
+"then initialization will fail."
msgstr ""
#: doc/classes/Object.xml
@@ -42936,7 +43003,10 @@ msgid ""
msgstr ""
#: doc/classes/PhysicsServer.xml
-msgid "Returns an Info defined by the [enum ProcessInfo] input given."
+msgid ""
+"Returns information about the current state of the 3D physics engine. See "
+"[enum ProcessInfo] for a list of available states. Only implemented for "
+"Godot Physics."
msgstr ""
#: doc/classes/PhysicsServer.xml
@@ -55860,8 +55930,8 @@ msgid ""
"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"
+"print(some_array[0]) # Prints \"One,Two,Three\"\n"
+"print(some_array[1]) # Prints \"Four\"\n"
"[/codeblock]"
msgstr ""
diff --git a/doc/translations/hu.po b/doc/translations/hu.po
index 7c93fcd2ba..66955be52e 100644
--- a/doc/translations/hu.po
+++ b/doc/translations/hu.po
@@ -3341,8 +3341,12 @@ msgstr ""
#: doc/classes/@GlobalScope.xml
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]."
+"pick in a list specified via a hint string.\n"
+"The hint string is a comma separated list of names such as [code]\"Hello,"
+"Something,Else\"[/code]. For integer and float properties, the first name in "
+"the list has value 0, the next 1, and so on. Explicit values can also be "
+"specified by appending [code]:integer[/code] to the name, e.g. [code]\"Zero,"
+"One,Three:3,Four,Six:6\"[/code]."
msgstr ""
#: doc/classes/@GlobalScope.xml
@@ -5254,8 +5258,11 @@ msgstr ""
#: doc/classes/AnimationNodeBlendTree.xml
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."
+"This node may contain a sub-tree of any other blend type nodes, such as "
+"[AnimationNodeTransition], [AnimationNodeBlend2], [AnimationNodeBlend3], "
+"[AnimationNodeOneShot], etc. This is one of the most commonly used roots.\n"
+"An [AnimationNodeOutput] node named [code]output[/code] is created by "
+"default."
msgstr ""
#: doc/classes/AnimationNodeBlendTree.xml
@@ -10374,8 +10381,15 @@ msgstr ""
#: doc/classes/BakedLightmap.xml
msgid ""
-"When enabled, the lightmapper will merge the textures for all meshes into a "
-"single large layered texture. Not supported in GLES2."
+"If [code]true[/code], the lightmapper will merge the textures for all meshes "
+"into one or several large layered textures. If [code]false[/code], every "
+"mesh will get its own lightmap texture, which is less efficient.\n"
+"[b]Note:[/b] Atlas lightmap rendering is only supported in GLES3, [i]not[/i] "
+"GLES2. Non-atlas lightmap rendering is supported by both GLES3 and GLES2. If "
+"[member ProjectSettings.rendering/quality/driver/fallback_to_gles2] is "
+"[code]true[/code], consider baking lightmaps with [member atlas_generate] "
+"set to [code]false[/code] so that the resulting lightmap is visible in both "
+"GLES3 and GLES2."
msgstr ""
#: doc/classes/BakedLightmap.xml
@@ -12523,14 +12537,15 @@ msgstr ""
#: doc/classes/CanvasItem.xml
msgid ""
-"If [code]enable[/code] is [code]true[/code], children will be updated with "
-"local transform data."
+"If [code]enable[/code] is [code]true[/code], this node will receive "
+"[constant NOTIFICATION_LOCAL_TRANSFORM_CHANGED] when its local transform "
+"changes."
msgstr ""
#: doc/classes/CanvasItem.xml
msgid ""
-"If [code]enable[/code] is [code]true[/code], children will be updated with "
-"global transform data."
+"If [code]enable[/code] is [code]true[/code], this node will receive "
+"[constant NOTIFICATION_TRANSFORM_CHANGED] when its global transform changes."
msgstr ""
#: doc/classes/CanvasItem.xml
@@ -12644,9 +12659,14 @@ msgstr ""
#: doc/classes/CanvasItem.xml
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]."
+"The [CanvasItem]'s global transform has changed. This notification is only "
+"received if enabled by [method set_notify_transform]."
+msgstr ""
+
+#: doc/classes/CanvasItem.xml
+msgid ""
+"The [CanvasItem]'s local transform has changed. This notification is only "
+"received if enabled by [method set_notify_local_transform]."
msgstr ""
#: doc/classes/CanvasItem.xml
@@ -19608,9 +19628,8 @@ msgid ""
"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"
+"OpenType ([code].otf[/code]), Web Open Font Format 1 ([code].woff[/code]), "
+"and Web Open Font Format 2 ([code].woff2[/code]).\n"
"[codeblock]\n"
"var dynamic_font = DynamicFont.new()\n"
"dynamic_font.font_data = load(\"res://BarlowCondensed-Bold.ttf\")\n"
@@ -22400,12 +22419,13 @@ msgstr ""
#: doc/classes/EditorVCSInterface.xml
msgid ""
"Helper function to create a commit [Dictionary] item. [code]msg[/code] is "
-"the commit message of the commit. [code]author[/code] is a human-readable "
-"string containing the author's details, e.g. the email and name configured "
-"in the VCS. [code]id[/code] is the identifier of the commit, in whichever "
-"format your VCS may provide an identifier to commits. [code]date[/code] is "
-"directly added to the commit item and displayed in the editor, and hence, it "
-"shall be a well-formatted, human-readable date string."
+"the commit message of the commit. [code]author[/code] is a single human-"
+"readable string containing all the author's details, e.g. the email and name "
+"configured in the VCS. [code]id[/code] is the identifier of the commit, in "
+"whichever format your VCS may provide an identifier to commits. "
+"[code]unix_timestamp[/code] is the UTC Unix timestamp of when the commit was "
+"created. [code]offset_minutes[/code] is the timezone offset in minutes, "
+"recorded from the system timezone where the commit was created."
msgstr ""
#: doc/classes/EditorVCSInterface.xml
@@ -28989,9 +29009,9 @@ 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."
+"If [code]exact[/code] is [code]false[/code], it ignores additional input "
+"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the "
+"direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/Input.xml
@@ -29001,9 +29021,9 @@ msgid ""
"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."
+"If [code]exact[/code] is [code]false[/code], it ignores additional input "
+"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the "
+"direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/Input.xml
@@ -29136,9 +29156,9 @@ msgid ""
"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.\n"
+"If [code]exact[/code] is [code]false[/code], it ignores additional input "
+"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the "
+"direction for [InputEventJoypadMotion] events.\n"
"[b]Note:[/b] Due to keyboard ghosting, [method is_action_just_pressed] may "
"return [code]false[/code] even if one of the action's keys is pressed. See "
"[url=$DOCS_URL/tutorials/inputs/input_examples.html#keyboard-events]Input "
@@ -29150,9 +29170,9 @@ 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."
+"If [code]exact[/code] is [code]false[/code], it ignores additional input "
+"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the "
+"direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/Input.xml
@@ -29161,9 +29181,9 @@ msgid ""
"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.\n"
+"If [code]exact[/code] is [code]false[/code], it ignores additional input "
+"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the "
+"direction for [InputEventJoypadMotion] events.\n"
"[b]Note:[/b] Due to keyboard ghosting, [method is_action_pressed] may return "
"[code]false[/code] even if one of the action's keys is pressed. See "
"[url=$DOCS_URL/tutorials/inputs/input_examples.html#keyboard-events]Input "
@@ -29513,18 +29533,18 @@ msgstr ""
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."
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/InputEvent.xml
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."
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/InputEvent.xml
@@ -29533,9 +29553,9 @@ msgid ""
"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.\n"
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events.\n"
"[b]Note:[/b] Due to keyboard ghosting, [method is_action_pressed] may return "
"[code]false[/code] even if one of the action's keys is pressed. See "
"[url=$DOCS_URL/tutorials/inputs/input_examples.html#keyboard-events]Input "
@@ -29547,9 +29567,9 @@ 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."
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/InputEvent.xml
@@ -29580,9 +29600,9 @@ msgid ""
"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."
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/InputEvent.xml
@@ -30112,9 +30132,9 @@ msgid ""
"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."
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/InputMap.xml
@@ -33950,6 +33970,39 @@ msgid "Returns the number of surface materials."
msgstr ""
#: doc/classes/MeshInstance.xml
+msgid ""
+"Returns [code]true[/code] if this [MeshInstance] can be merged with the "
+"specified [code]other_mesh_instance[/code], using the [method MeshInstance."
+"merge_meshes] function.\n"
+"In order to be mergeable, properties of the [MeshInstance] must match, and "
+"each surface must match, in terms of material, attributes and vertex format."
+msgstr ""
+
+#: doc/classes/MeshInstance.xml
+msgid ""
+"This function can merge together the data from several source "
+"[MeshInstance]s into a single destination [MeshInstance] (the MeshInstance "
+"the function is called from). This is primarily useful for improving "
+"performance by reducing the number of drawcalls and [Node]s.\n"
+"Merging should only be attempted for simple meshes that do not contain "
+"animation.\n"
+"The final vertices can either be returned in global space, or in local space "
+"relative to the destination [MeshInstance] global transform (the destination "
+"Node must be inside the [SceneTree] for local space to work).\n"
+"The function will make a final check for compatibility between the "
+"[MeshInstance]s by default, this should always be used unless you have "
+"previously checked for compatibility using [method MeshInstance."
+"is_mergeable_with]. If the compatibility check is omitted and the meshes are "
+"merged, you may see rendering errors.\n"
+"[b]Note:[/b] The requirements for similarity between meshes are quite "
+"stringent. They can be checked using the [method MeshInstance."
+"is_mergeable_with] function prior to calling [method MeshInstance."
+"merge_meshes].\n"
+"Also note that any initial data in the destination [MeshInstance] data will "
+"be discarded."
+msgstr ""
+
+#: doc/classes/MeshInstance.xml
msgid "Sets the [Material] for a surface of the [Mesh] resource."
msgstr ""
@@ -36402,12 +36455,12 @@ msgid ""
"[/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."
+"typically relevant for [url=$DOCS_URL/tutorials/misc/"
+"running_code_in_the_editor.html]tool scripts[/url] and [url=$DOCS_URL/"
+"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
@@ -37114,7 +37167,15 @@ msgid ""
"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."
+"subinstancing.\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=$DOCS_URL/tutorials/misc/"
+"running_code_in_the_editor.html]tool scripts[/url] and [url=$DOCS_URL/"
+"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
@@ -37710,7 +37771,13 @@ msgid ""
msgstr ""
#: doc/classes/Object.xml
-msgid "Called when the object is initialized."
+msgid ""
+"Called when the object is initialized in memory. Can be defined to take in "
+"parameters, that are passed in when constructing.\n"
+"[b]Note:[/b] If [method _init] is defined with required parameters, then "
+"explicit construction is the only valid means of creating an Object of the "
+"class. If any other means (such as [method PackedScene.instance]) is used, "
+"then initialization will fail."
msgstr ""
#: doc/classes/Object.xml
@@ -42954,7 +43021,10 @@ msgid ""
msgstr ""
#: doc/classes/PhysicsServer.xml
-msgid "Returns an Info defined by the [enum ProcessInfo] input given."
+msgid ""
+"Returns information about the current state of the 3D physics engine. See "
+"[enum ProcessInfo] for a list of available states. Only implemented for "
+"Godot Physics."
msgstr ""
#: doc/classes/PhysicsServer.xml
@@ -55878,8 +55948,8 @@ msgid ""
"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"
+"print(some_array[0]) # Prints \"One,Two,Three\"\n"
+"print(some_array[1]) # Prints \"Four\"\n"
"[/codeblock]"
msgstr ""
diff --git a/doc/translations/id.po b/doc/translations/id.po
index fc6b486005..8be5906ebd 100644
--- a/doc/translations/id.po
+++ b/doc/translations/id.po
@@ -9,15 +9,16 @@
# Hanz <hanzhaxors@gmail.com>, 2021.
# Naufal Adriansyah <naufaladrn90@gmail.com>, 2021.
# Hilman Hazazi <hafizd.muhammad.kren.403@gmail.com>, 2021.
-# Stephen Gunawan Susilo <gunawanstephen@yahoo.com>, 2021.
+# Stephen Gunawan Susilo <gunawanstephen@yahoo.com>, 2021, 2022.
# Azizkhasyi 11 <azizkhasyi11@gmail.com>, 2021.
# zephyroths <ridho.hikaru@gmail.com>, 2022.
+# ProgrammerIndonesia 44 <elo.jhy@gmail.com>, 2022.
msgid ""
msgstr ""
"Project-Id-Version: Godot Engine class reference\n"
"Report-Msgid-Bugs-To: https://github.com/godotengine/godot\n"
-"PO-Revision-Date: 2022-02-22 15:52+0000\n"
-"Last-Translator: zephyroths <ridho.hikaru@gmail.com>\n"
+"PO-Revision-Date: 2022-03-25 01:54+0000\n"
+"Last-Translator: Stephen Gunawan Susilo <gunawanstephen@yahoo.com>\n"
"Language-Team: Indonesian <https://hosted.weblate.org/projects/godot-engine/"
"godot-class-reference/id/>\n"
"Language: id\n"
@@ -25,7 +26,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8-bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
-"X-Generator: Weblate 4.11-dev\n"
+"X-Generator: Weblate 4.12-dev\n"
#: doc/tools/make_rst.py
msgid "Description"
@@ -68,17 +69,17 @@ msgid "Method Descriptions"
msgstr "Deskripsi Method"
#: doc/tools/make_rst.py
-#, fuzzy
msgid "Theme Property Descriptions"
-msgstr "Deskripsi Properti"
+msgstr "Deskripsi Properti Tema"
#: doc/tools/make_rst.py
msgid "Inherits:"
-msgstr ""
+msgstr "Mewarisi:"
#: doc/tools/make_rst.py
+#, fuzzy
msgid "Inherited By:"
-msgstr ""
+msgstr "Diwariskan oleh:"
#: doc/tools/make_rst.py
msgid "(overrides %s)"
@@ -94,7 +95,7 @@ msgstr ""
#: doc/tools/make_rst.py
msgid "value"
-msgstr ""
+msgstr "nilai"
#: doc/tools/make_rst.py
msgid "Getter"
@@ -103,18 +104,21 @@ msgstr ""
#: doc/tools/make_rst.py
msgid ""
"This method should typically be overridden by the user to have any effect."
-msgstr ""
+msgstr "Metode ini biasanya harus diganti oleh pengguna agar memiliki efek."
#: doc/tools/make_rst.py
+#, fuzzy
msgid ""
"This method has no side effects. It doesn't modify any of the instance's "
"member variables."
msgstr ""
+"Metode ini tidak memiliki efek samping. Itu tidak mengubah variabel anggota "
+"instance."
#: doc/tools/make_rst.py
msgid ""
"This method accepts any number of arguments after the ones described here."
-msgstr ""
+msgstr "Metode ini menerima sejumlah argumen setelah yang dijelaskan di sini."
#: doc/tools/make_rst.py
msgid "This method is used to construct a type."
@@ -125,12 +129,17 @@ msgid ""
"This method doesn't need an instance to be called, so it can be called "
"directly using the class name."
msgstr ""
+"Metode ini tidak memerlukan instance untuk dipanggil, sehingga dapat "
+"dipanggil langsung menggunakan nama class."
#: doc/tools/make_rst.py
+#, fuzzy
msgid ""
"This method describes a valid operator to use with this type as left-hand "
"operand."
msgstr ""
+"Metode ini menjelaskan operator yang valid untuk digunakan dengan jenis ini "
+"sebagai nilai pembilang."
#: modules/gdscript/doc_classes/@GDScript.xml
msgid "Built-in GDScript functions."
@@ -211,10 +220,10 @@ msgid ""
"c = acos(0.866025)\n"
"[/codeblock]"
msgstr ""
-"Hasilkan arc kosinus dari [code]s[/code] dalam bentuk radian. Gunakanlah "
-"untuk mendapatkan sudut kosinusnya [code]s[/code]. \n"
-" [code]s[/code] harus antara [code]-1.0[/code] dan [code]1.0[/code] "
-"(inclusive), jika tidak, [method acos] akan keluar [constant NAN].\n"
+"Memberikan sudut kosinus dari [code]s[/code] dalam bentuk radian. Gunakanlah "
+"untuk mendapatkan sudut kosinus [code]s[/code]. [code]s[/code] harus "
+"bernilai antara [code]-1.0[/code] dan [code]1.0[/code] (inklusif), jika "
+"tidak, [metode acos] akan memberikan [konstanta NAN].\n"
"[codeblock]\n"
"# c adalah 0.523599 atau 30 derajat jika dikonversi dengan rad2deg(s)\n"
"c = acos(0.866025)\n"
@@ -307,6 +316,7 @@ msgstr ""
"[/codeblock]"
#: modules/gdscript/doc_classes/@GDScript.xml
+#, fuzzy
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 "
@@ -316,6 +326,13 @@ msgid ""
"a = atan2(0, -1) # a is 3.141593\n"
"[/codeblock]"
msgstr ""
+"Mengembalikan tangen busur [code]y/x[/code] dalam radian. Gunakan untuk "
+"mendapatkan sudut tangen [kode]y/x[/kode]. Untuk menghitung nilai, metode "
+"memperhitungkan tanda dari kedua argumen untuk menentukan kuadran.\n"
+"Catatan penting: Koordinat Y didahulukan, berdasarkan konvensi.\n"
+"[blok kode]\n"
+"a = atan2(0, -1) # a adalah 3.141593\n"
+"[/blok kode]"
#: modules/gdscript/doc_classes/@GDScript.xml
msgid ""
@@ -558,6 +575,14 @@ msgid ""
"a = exp(2) # Approximately 7.39\n"
"[/codeblock]"
msgstr ""
+"Fungsi eksponensial alami. Ini menaikkan konstanta matematika [b]e[/b] ke "
+"pangkat [code]s[/code] dan mengembalikannya.\n"
+"[b]e[/b] memiliki nilai perkiraan 2,71828, dan dapat diperoleh dengan "
+"[code]exp(1)[/code].\n"
+"Untuk eksponen ke basis lain gunakan metode [metode pow].\n"
+"[codeblock]\n"
+"a = exp(2) # Sekitar 7.39\n"
+"[/codeblock]"
#: modules/gdscript/doc_classes/@GDScript.xml
#, fuzzy
@@ -594,6 +619,16 @@ msgid ""
"[/codeblock]\n"
"For the integer remainder operation, use the % operator."
msgstr ""
+"Mengembalikan sisa titik-desimal [code]a/b[/code], dengan mempertahankan "
+"tanda [code]a[/code].\n"
+"[codeblock]\n"
+"r = fmod(7, 5.5) # r adalah 1,5\n"
+"Mengembalikan sisa titik-desimal [code]a/b[/code], dengan mempertahankan "
+"tanda [code]a[/code].\n"
+"[codeblock]\n"
+"r = fmod(7, 5.5) # r adalah 1,5\n"
+"[/codeblock]\n"
+"Untuk operasi sisa bilangan bulat, gunakan operator %."
#: modules/gdscript/doc_classes/@GDScript.xml
msgid ""
@@ -615,6 +650,23 @@ msgid ""
" 1.5 0.0 0.0\n"
"[/codeblock]"
msgstr ""
+"Mengembalikan modulus titik-desimal [code]a/b[/code] yang membungkus secara "
+"merata dalam positif dan negatif.\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"
+"Menghasilkan:\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]"
#: modules/gdscript/doc_classes/@GDScript.xml
msgid ""
@@ -706,6 +758,7 @@ msgstr ""
"[/codeblock]"
#: modules/gdscript/doc_classes/@GDScript.xml
+#, fuzzy
msgid ""
"Returns the Object that corresponds to [code]instance_id[/code]. All Objects "
"have a unique instance ID.\n"
@@ -717,6 +770,15 @@ msgid ""
" print(inst.foo) # Prints bar\n"
"[/codeblock]"
msgstr ""
+"Mengembalikan Objek yang sesuai dengan [code]instance_id[/code]. Semua Objek "
+"memiliki ID instance unik.\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) # Mencetak bar\n"
+"[/codeblock]"
#: modules/gdscript/doc_classes/@GDScript.xml
msgid ""
@@ -741,6 +803,7 @@ msgid ""
msgstr ""
#: modules/gdscript/doc_classes/@GDScript.xml
+#, fuzzy
msgid ""
"Returns [code]true[/code] if [code]a[/code] and [code]b[/code] are "
"approximately equal to each other.\n"
@@ -749,23 +812,35 @@ msgid ""
"magnitude of the numbers.\n"
"Infinity values of the same sign are considered equal."
msgstr ""
+"Mengembalikan [code]true[/code] jika [code]a[/code] dan [code]b[/code] kira-"
+"kira sama satu sama lain.\n"
+"Di sini, kira-kira sama berarti [code]a[/code] dan [code]b[/code] berada "
+"dalam epsilon internal kecil satu sama lain, yang berskala dengan besarnya "
+"angka.\n"
+"Nilai tak terhingga dari tanda yang sama dianggap sama."
#: modules/gdscript/doc_classes/@GDScript.xml
msgid ""
"Returns whether [code]s[/code] is an infinity value (either positive "
"infinity or negative infinity)."
msgstr ""
+"Mengembalikan apakah [code]s[/code] adalah nilai tak terhingga (tak "
+"terhingga positif atau tak terhingga negatif)."
#: modules/gdscript/doc_classes/@GDScript.xml
msgid ""
"Returns whether [code]instance[/code] is a valid object (e.g. has not been "
"deleted from memory)."
msgstr ""
+"Mengembalikan apakah [code]instance[/code] adalah objek yang valid (mis. "
+"belum dihapus dari memori)."
#: modules/gdscript/doc_classes/@GDScript.xml
msgid ""
"Returns whether [code]s[/code] is a NaN (\"Not a Number\" or invalid) value."
msgstr ""
+"Mengembalikan apakah [code]s[/code] adalah nilai NaN (\"Not a Number\" atau "
+"nilai tidak valid)."
#: modules/gdscript/doc_classes/@GDScript.xml
msgid ""
@@ -773,8 +848,13 @@ msgid ""
"This method is faster than using [method is_equal_approx] with one value as "
"zero."
msgstr ""
+"Mengembalikan [code]true[/code] jika [code]s[/code] bernilai nol atau hampir "
+"nol.\n"
+"Metode ini lebih cepat daripada menggunakan [metode is_equal_approx] dengan "
+"satu nilai sebagai nol."
#: modules/gdscript/doc_classes/@GDScript.xml
+#, fuzzy
msgid ""
"Returns length of Variant [code]var[/code]. Length is the character count of "
"String, element count of Array, size of Dictionary, etc.\n"
@@ -784,6 +864,14 @@ msgid ""
"len(a) # Returns 4\n"
"[/codeblock]"
msgstr ""
+"Mengembalikan panjang Varian [code]var[/code]. Panjang adalah jumlah "
+"karakter String, jumlah elemen Array, ukuran Kamus, dll.\n"
+"[b]Catatan:[/b] Menghasilkan kesalahan fatal jika Variant tidak dapat "
+"memberikan nilai panjang.\n"
+"[codeblock]\n"
+"a = [1, 2, 3, 4]\n"
+"len(a) # Mengembalikan 4\n"
+"[/codeblock]"
#: modules/gdscript/doc_classes/@GDScript.xml
msgid ""
@@ -825,6 +913,7 @@ msgid ""
msgstr ""
#: modules/gdscript/doc_classes/@GDScript.xml
+#, fuzzy
msgid ""
"Converts from linear energy to decibels (audio). This can be used to "
"implement volume sliders that behave as expected (since volume isn't "
@@ -839,6 +928,18 @@ msgid ""
"linear2db($Slider.value))\n"
"[/codeblock]"
msgstr ""
+"Mengonversi dari energi linier ke desibel (audio). Ini dapat digunakan untuk "
+"menerapkan penggeser volume yang berperilaku seperti yang diharapkan (karena "
+"volume tidak linier). Contoh:\n"
+"[codeblock]\n"
+"# \"Penggeser\" mengacu pada node yang mewarisi Range seperti HSlider atau "
+"VSlider.\n"
+"# Rentangnya harus dikonfigurasi untuk beralih dari 0 ke 1.\n"
+"# Ubah nama bus jika Anda ingin mengubah volume bus tertentu saja.Ubah nama "
+"bus jika Anda ingin mengubah volume bus tertentu saja.\n"
+"AudioServer.set_bus_volume_db(AudioServer.get_bus_index(\"Master\"), "
+"linear2db($Slider.value))\n"
+"[/codeblock]"
#: modules/gdscript/doc_classes/@GDScript.xml
msgid ""
@@ -864,6 +965,7 @@ msgid ""
msgstr ""
#: modules/gdscript/doc_classes/@GDScript.xml
+#, fuzzy
msgid ""
"Natural logarithm. The amount of time needed to reach a certain level of "
"continuous growth.\n"
@@ -875,6 +977,15 @@ msgid ""
"[b]Note:[/b] The logarithm of [code]0[/code] returns [code]-inf[/code], "
"while negative values return [code]-nan[/code]."
msgstr ""
+"Logaritma alami. Jumlah waktu yang dibutuhkan untuk mencapai tingkat "
+"pertumbuhan berkelanjutan tertentu.\n"
+"[b]Catatan:[/b] Ini tidak sama dengan fungsi \"log\" pada kebanyakan "
+"kalkulator, yang menggunakan logaritma basis 10.\n"
+"[codeblock]\n"
+"log(10) # Mengembalikan 2.302585\n"
+"[/codeblock]\n"
+"[b]Catatan:[/b] Logaritma dari [code]0[/code] mengembalikan [code]-inf[/"
+"code], sedangkan nilai negatif kembali [code]-nan[/code].p"
#: modules/gdscript/doc_classes/@GDScript.xml
msgid ""
@@ -884,6 +995,11 @@ msgid ""
"max(-3.99, -4) # Returns -3.99\n"
"[/codeblock]"
msgstr ""
+"Mengembalikan maksimal dua nilai.\n"
+"[codeblock]\n"
+"maks(1, 2) # Mengembalikan 2\n"
+"maks(-3,99, -4) # Mengembalikan -3,99\n"
+"[/codeblock]"
#: modules/gdscript/doc_classes/@GDScript.xml
msgid ""
@@ -893,6 +1009,11 @@ msgid ""
"min(-3.99, -4) # Returns -4\n"
"[/codeblock]"
msgstr ""
+"Mengembalikan minimal dua nilai.\n"
+"[codeblock]\n"
+"min(1, 2) # Mengembalikan 1\n"
+"min(-3.99, -4) # Mengembalikan -4\n"
+"[/codeblock]"
#: modules/gdscript/doc_classes/@GDScript.xml
msgid ""
@@ -937,6 +1058,14 @@ msgid ""
"[/codeblock]\n"
"This is the inverse of [method char]."
msgstr ""
+"Mengembalikan bilangan bulat yang mewakili titik kode Unicode dari karakter "
+"Unicode yang diberikan [code]char[/code].\n"
+"[codeblock]\n"
+"a = ord(\"A\") # a adalah 65\n"
+"a = ord(\"a\") # a adalah 97\n"
+"a = ord(\"€\") # a adalah 8364\n"
+"[/codeblock]\n"
+"Ini adalah kebalikan dari [method char]."
#: modules/gdscript/doc_classes/@GDScript.xml
msgid ""
@@ -966,6 +1095,9 @@ msgid ""
"from the origin [code]r[/code] and an angle [code]th[/code]) to the "
"cartesian coordinate system (X and Y axis)."
msgstr ""
+"Mengonversi titik 2D yang dinyatakan dalam sistem koordinat kutub (jarak "
+"dari [code]r[/code] asal dan sudut [code]th[/code]) ke sistem koordinat "
+"kartesius (sumbu X dan Y)."
#: modules/gdscript/doc_classes/@GDScript.xml
msgid ""
@@ -1004,6 +1136,7 @@ msgstr ""
"[/codeblock]"
#: modules/gdscript/doc_classes/@GDScript.xml
+#, fuzzy
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 "
@@ -1018,8 +1151,22 @@ msgid ""
"var diamond = preload(\"res://diamond.tscn\").instance()\n"
"[/codeblock]"
msgstr ""
+"Mengembalikan [Resource] dari sistem file yang terletak di [code]path[/"
+"code]. Sumber daya dimuat selama penguraian skrip, yaitu dimuat dengan skrip "
+"dan [metode preload] secara efektif bertindak sebagai referensi ke sumber "
+"daya itu. Perhatikan bahwa metode ini membutuhkan jalur konstan. Jika Anda "
+"ingin memuat sumber daya dari jalur dinamis/variabel, gunakan [metode "
+"load].\n"
+"[b]Catatan:[/b] Jalur sumber daya dapat diperoleh dengan mengklik kanan "
+"sumber daya di Panel Aset dan memilih \"Salin Alamat\" atau dengan menyeret "
+"file dari dok FileSystem ke dalam skrip.\n"
+"[codeblock]\n"
+"# Instance sebuah skena.\n"
+"var diamond = preload(\"res://diamond.tscn\").instance()\n"
+"[/codeblock]"
#: modules/gdscript/doc_classes/@GDScript.xml
+#, fuzzy
msgid ""
"Converts one or more arguments of any type to string in the best way "
"possible and prints them to the console.\n"
@@ -1032,12 +1179,26 @@ msgid ""
"distinguishes them from print messages used for debugging purposes, while "
"also displaying a stack trace when an error or warning is printed."
msgstr ""
+"Mengonversi satu atau beberapa argumen jenis apa pun menjadi string dengan "
+"cara terbaik dan mencetaknya ke konsol.\n"
+"[codeblock]\n"
+"a = [1, 2, 3]\n"
+"print(\"a\", \"=\", a) # Mencetak a=[1, 2, 3]\n"
+"[/codeblock]\n"
+"[b]Catatan:[/b] Pertimbangkan untuk menggunakan [metode push_error] dan "
+"[metode push_warning] untuk mencetak pesan kesalahan dan peringatan alih-"
+"alih [metode cetak]. Ini membedakannya dari pesan cetak yang digunakan untuk "
+"tujuan debugging, sementara juga menampilkan jejak tumpukan ketika kesalahan "
+"atau peringatan dicetak."
#: modules/gdscript/doc_classes/@GDScript.xml
msgid "Like [method print], but prints only when used in debug mode."
msgstr ""
+"Seperti [metode cetak], tetapi hanya mencetak saat digunakan dalam mode "
+"debug."
#: modules/gdscript/doc_classes/@GDScript.xml
+#, fuzzy
msgid ""
"Prints a stack track at code location, only works when running with debugger "
"turned on.\n"
@@ -1046,8 +1207,15 @@ msgid ""
"Frame 0 - res://test.gd:16 in function '_process'\n"
"[/codeblock]"
msgstr ""
+"Mencetak trek tumpukan di lokasi kode, hanya berfungsi saat dijalankan "
+"dengan debugger dihidupkan.\n"
+"Output di konsol akan terlihat seperti ini:\n"
+"[codeblock]\n"
+"Frame 0 - res://test.gd:16 dalam fungsi '_process'\n"
+"[/codeblock]"
#: modules/gdscript/doc_classes/@GDScript.xml
+#, fuzzy
msgid ""
"Prints one or more arguments to strings in the best way possible to standard "
"error line.\n"
@@ -1055,6 +1223,11 @@ msgid ""
"printerr(\"prints to stderr\")\n"
"[/codeblock]"
msgstr ""
+"Mencetak satu atau lebih argumen ke string dengan cara terbaik ke garis "
+"kesalahan standar.\n"
+"[codeblock]\n"
+"printerr(\"mencetak ke stderr\")\n"
+"[/codeblock]"
#: modules/gdscript/doc_classes/@GDScript.xml
msgid ""
@@ -1069,6 +1242,16 @@ msgid ""
"prints to the terminal. If you need to print in the editor, use another "
"method, such as [method print]."
msgstr ""
+"Mencetak satu atau lebih argumen ke string dengan cara terbaik. Tidak ada "
+"baris baru yang ditambahkan di akhir.\n"
+"[codeblock]\n"
+"printraw(\"A\")\n"
+"printraw(\"B\")\n"
+"# Mencetak AB\n"
+"[/codeblock]\n"
+"[b]Catatan:[/b] Karena keterbatasan dengan konsol bawaan Godot, ini hanya "
+"mencetak ke terminal. Jika Anda perlu mencetak di editor, gunakan metode "
+"lain, seperti [method print]."
#: modules/gdscript/doc_classes/@GDScript.xml
msgid ""
@@ -1078,6 +1261,11 @@ msgid ""
"prints(\"A\", \"B\", \"C\") # Prints A B C\n"
"[/codeblock]"
msgstr ""
+"Mencetak satu atau beberapa argumen ke konsol dengan spasi di antara setiap "
+"argumen.\n"
+"[codeblock]\n"
+"prints(\"A\", \"B\", \"C\") # Mencetak A B C\n"
+"[/codeblock]"
#: modules/gdscript/doc_classes/@GDScript.xml
msgid ""
@@ -1126,6 +1314,7 @@ msgstr ""
"[/codeblock]"
#: modules/gdscript/doc_classes/@GDScript.xml
+#, fuzzy
msgid ""
"Random range, any floating point value between [code]from[/code] and "
"[code]to[/code].\n"
@@ -1133,6 +1322,12 @@ msgid ""
"prints(rand_range(0, 1), rand_range(0, 1)) # Prints e.g. 0.135591 0.405263\n"
"[/codeblock]"
msgstr ""
+"Rentang acak, setiap nilai floating point antara [code]from[/code] dan "
+"[code]to[/code].\n"
+"[codeblock]\n"
+"prints(rand_range(0, 1), rand_range(0, 1)) # Mencetak mis. 0,135591 "
+"0,405263\n"
+"[/codeblock]"
#: modules/gdscript/doc_classes/@GDScript.xml
msgid ""
@@ -1149,6 +1344,10 @@ msgid ""
"randf() # Returns e.g. 0.375671\n"
"[/codeblock]"
msgstr ""
+"Mengembalikan nilai floating point acak pada interval [code][0, 1][/code].\n"
+"[codeblock]\n"
+"randf() # Mengembalikan mis. 0,375671\n"
+"[/codeblock]"
#: modules/gdscript/doc_classes/@GDScript.xml
msgid ""
@@ -1216,6 +1415,7 @@ msgid ""
msgstr ""
#: modules/gdscript/doc_classes/@GDScript.xml
+#, fuzzy
msgid ""
"Maps a [code]value[/code] from range [code][istart, istop][/code] to [code]"
"[ostart, ostop][/code].\n"
@@ -1223,6 +1423,11 @@ msgid ""
"range_lerp(75, 0, 100, -1, 1) # Returns 0.5\n"
"[/codeblock]"
msgstr ""
+"Memetakan sebuah [code] nilai[/code] dari jangkauan [code][istart, istop][/"
+"code] ke [code][ostart, ostop][/code].\n"
+"[codeblock]\n"
+"range_lerp(75, 0, 100, -1, 1) # Mengembalikan 0.5\n"
+"[/codeblock]"
#: modules/gdscript/doc_classes/@GDScript.xml
msgid ""
@@ -3529,8 +3734,12 @@ msgstr ""
#: doc/classes/@GlobalScope.xml
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]."
+"pick in a list specified via a hint string.\n"
+"The hint string is a comma separated list of names such as [code]\"Hello,"
+"Something,Else\"[/code]. For integer and float properties, the first name in "
+"the list has value 0, the next 1, and so on. Explicit values can also be "
+"specified by appending [code]:integer[/code] to the name, e.g. [code]\"Zero,"
+"One,Three:3,Four,Six:6\"[/code]."
msgstr ""
#: doc/classes/@GlobalScope.xml
@@ -5443,8 +5652,11 @@ msgstr ""
#: doc/classes/AnimationNodeBlendTree.xml
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."
+"This node may contain a sub-tree of any other blend type nodes, such as "
+"[AnimationNodeTransition], [AnimationNodeBlend2], [AnimationNodeBlend3], "
+"[AnimationNodeOneShot], etc. This is one of the most commonly used roots.\n"
+"An [AnimationNodeOutput] node named [code]output[/code] is created by "
+"default."
msgstr ""
#: doc/classes/AnimationNodeBlendTree.xml
@@ -10563,8 +10775,15 @@ msgstr ""
#: doc/classes/BakedLightmap.xml
msgid ""
-"When enabled, the lightmapper will merge the textures for all meshes into a "
-"single large layered texture. Not supported in GLES2."
+"If [code]true[/code], the lightmapper will merge the textures for all meshes "
+"into one or several large layered textures. If [code]false[/code], every "
+"mesh will get its own lightmap texture, which is less efficient.\n"
+"[b]Note:[/b] Atlas lightmap rendering is only supported in GLES3, [i]not[/i] "
+"GLES2. Non-atlas lightmap rendering is supported by both GLES3 and GLES2. If "
+"[member ProjectSettings.rendering/quality/driver/fallback_to_gles2] is "
+"[code]true[/code], consider baking lightmaps with [member atlas_generate] "
+"set to [code]false[/code] so that the resulting lightmap is visible in both "
+"GLES3 and GLES2."
msgstr ""
#: doc/classes/BakedLightmap.xml
@@ -12713,14 +12932,15 @@ msgstr ""
#: doc/classes/CanvasItem.xml
msgid ""
-"If [code]enable[/code] is [code]true[/code], children will be updated with "
-"local transform data."
+"If [code]enable[/code] is [code]true[/code], this node will receive "
+"[constant NOTIFICATION_LOCAL_TRANSFORM_CHANGED] when its local transform "
+"changes."
msgstr ""
#: doc/classes/CanvasItem.xml
msgid ""
-"If [code]enable[/code] is [code]true[/code], children will be updated with "
-"global transform data."
+"If [code]enable[/code] is [code]true[/code], this node will receive "
+"[constant NOTIFICATION_TRANSFORM_CHANGED] when its global transform changes."
msgstr ""
#: doc/classes/CanvasItem.xml
@@ -12834,9 +13054,14 @@ msgstr ""
#: doc/classes/CanvasItem.xml
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]."
+"The [CanvasItem]'s global transform has changed. This notification is only "
+"received if enabled by [method set_notify_transform]."
+msgstr ""
+
+#: doc/classes/CanvasItem.xml
+msgid ""
+"The [CanvasItem]'s local transform has changed. This notification is only "
+"received if enabled by [method set_notify_local_transform]."
msgstr ""
#: doc/classes/CanvasItem.xml
@@ -19798,9 +20023,8 @@ msgid ""
"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"
+"OpenType ([code].otf[/code]), Web Open Font Format 1 ([code].woff[/code]), "
+"and Web Open Font Format 2 ([code].woff2[/code]).\n"
"[codeblock]\n"
"var dynamic_font = DynamicFont.new()\n"
"dynamic_font.font_data = load(\"res://BarlowCondensed-Bold.ttf\")\n"
@@ -22591,12 +22815,13 @@ msgstr ""
#: doc/classes/EditorVCSInterface.xml
msgid ""
"Helper function to create a commit [Dictionary] item. [code]msg[/code] is "
-"the commit message of the commit. [code]author[/code] is a human-readable "
-"string containing the author's details, e.g. the email and name configured "
-"in the VCS. [code]id[/code] is the identifier of the commit, in whichever "
-"format your VCS may provide an identifier to commits. [code]date[/code] is "
-"directly added to the commit item and displayed in the editor, and hence, it "
-"shall be a well-formatted, human-readable date string."
+"the commit message of the commit. [code]author[/code] is a single human-"
+"readable string containing all the author's details, e.g. the email and name "
+"configured in the VCS. [code]id[/code] is the identifier of the commit, in "
+"whichever format your VCS may provide an identifier to commits. "
+"[code]unix_timestamp[/code] is the UTC Unix timestamp of when the commit was "
+"created. [code]offset_minutes[/code] is the timezone offset in minutes, "
+"recorded from the system timezone where the commit was created."
msgstr ""
#: doc/classes/EditorVCSInterface.xml
@@ -29186,9 +29411,9 @@ 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."
+"If [code]exact[/code] is [code]false[/code], it ignores additional input "
+"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the "
+"direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/Input.xml
@@ -29198,9 +29423,9 @@ msgid ""
"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."
+"If [code]exact[/code] is [code]false[/code], it ignores additional input "
+"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the "
+"direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/Input.xml
@@ -29333,9 +29558,9 @@ msgid ""
"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.\n"
+"If [code]exact[/code] is [code]false[/code], it ignores additional input "
+"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the "
+"direction for [InputEventJoypadMotion] events.\n"
"[b]Note:[/b] Due to keyboard ghosting, [method is_action_just_pressed] may "
"return [code]false[/code] even if one of the action's keys is pressed. See "
"[url=$DOCS_URL/tutorials/inputs/input_examples.html#keyboard-events]Input "
@@ -29347,9 +29572,9 @@ 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."
+"If [code]exact[/code] is [code]false[/code], it ignores additional input "
+"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the "
+"direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/Input.xml
@@ -29358,9 +29583,9 @@ msgid ""
"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.\n"
+"If [code]exact[/code] is [code]false[/code], it ignores additional input "
+"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the "
+"direction for [InputEventJoypadMotion] events.\n"
"[b]Note:[/b] Due to keyboard ghosting, [method is_action_pressed] may return "
"[code]false[/code] even if one of the action's keys is pressed. See "
"[url=$DOCS_URL/tutorials/inputs/input_examples.html#keyboard-events]Input "
@@ -29710,18 +29935,18 @@ msgstr ""
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."
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/InputEvent.xml
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."
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/InputEvent.xml
@@ -29730,9 +29955,9 @@ msgid ""
"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.\n"
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events.\n"
"[b]Note:[/b] Due to keyboard ghosting, [method is_action_pressed] may return "
"[code]false[/code] even if one of the action's keys is pressed. See "
"[url=$DOCS_URL/tutorials/inputs/input_examples.html#keyboard-events]Input "
@@ -29744,9 +29969,9 @@ 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."
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/InputEvent.xml
@@ -29777,9 +30002,9 @@ msgid ""
"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."
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/InputEvent.xml
@@ -30309,9 +30534,9 @@ msgid ""
"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."
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/InputMap.xml
@@ -34147,6 +34372,39 @@ msgid "Returns the number of surface materials."
msgstr ""
#: doc/classes/MeshInstance.xml
+msgid ""
+"Returns [code]true[/code] if this [MeshInstance] can be merged with the "
+"specified [code]other_mesh_instance[/code], using the [method MeshInstance."
+"merge_meshes] function.\n"
+"In order to be mergeable, properties of the [MeshInstance] must match, and "
+"each surface must match, in terms of material, attributes and vertex format."
+msgstr ""
+
+#: doc/classes/MeshInstance.xml
+msgid ""
+"This function can merge together the data from several source "
+"[MeshInstance]s into a single destination [MeshInstance] (the MeshInstance "
+"the function is called from). This is primarily useful for improving "
+"performance by reducing the number of drawcalls and [Node]s.\n"
+"Merging should only be attempted for simple meshes that do not contain "
+"animation.\n"
+"The final vertices can either be returned in global space, or in local space "
+"relative to the destination [MeshInstance] global transform (the destination "
+"Node must be inside the [SceneTree] for local space to work).\n"
+"The function will make a final check for compatibility between the "
+"[MeshInstance]s by default, this should always be used unless you have "
+"previously checked for compatibility using [method MeshInstance."
+"is_mergeable_with]. If the compatibility check is omitted and the meshes are "
+"merged, you may see rendering errors.\n"
+"[b]Note:[/b] The requirements for similarity between meshes are quite "
+"stringent. They can be checked using the [method MeshInstance."
+"is_mergeable_with] function prior to calling [method MeshInstance."
+"merge_meshes].\n"
+"Also note that any initial data in the destination [MeshInstance] data will "
+"be discarded."
+msgstr ""
+
+#: doc/classes/MeshInstance.xml
msgid "Sets the [Material] for a surface of the [Mesh] resource."
msgstr ""
@@ -36613,12 +36871,12 @@ msgid ""
"[/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."
+"typically relevant for [url=$DOCS_URL/tutorials/misc/"
+"running_code_in_the_editor.html]tool scripts[/url] and [url=$DOCS_URL/"
+"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
@@ -37325,7 +37583,15 @@ msgid ""
"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."
+"subinstancing.\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=$DOCS_URL/tutorials/misc/"
+"running_code_in_the_editor.html]tool scripts[/url] and [url=$DOCS_URL/"
+"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
@@ -37921,7 +38187,13 @@ msgid ""
msgstr ""
#: doc/classes/Object.xml
-msgid "Called when the object is initialized."
+msgid ""
+"Called when the object is initialized in memory. Can be defined to take in "
+"parameters, that are passed in when constructing.\n"
+"[b]Note:[/b] If [method _init] is defined with required parameters, then "
+"explicit construction is the only valid means of creating an Object of the "
+"class. If any other means (such as [method PackedScene.instance]) is used, "
+"then initialization will fail."
msgstr ""
#: doc/classes/Object.xml
@@ -43182,7 +43454,10 @@ msgid ""
msgstr ""
#: doc/classes/PhysicsServer.xml
-msgid "Returns an Info defined by the [enum ProcessInfo] input given."
+msgid ""
+"Returns information about the current state of the 3D physics engine. See "
+"[enum ProcessInfo] for a list of available states. Only implemented for "
+"Godot Physics."
msgstr ""
#: doc/classes/PhysicsServer.xml
@@ -56110,8 +56385,8 @@ msgid ""
"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"
+"print(some_array[0]) # Prints \"One,Two,Three\"\n"
+"print(some_array[1]) # Prints \"Four\"\n"
"[/codeblock]"
msgstr ""
diff --git a/doc/translations/is.po b/doc/translations/is.po
index 704ccfa6bf..a0c23c688b 100644
--- a/doc/translations/is.po
+++ b/doc/translations/is.po
@@ -3323,8 +3323,12 @@ msgstr ""
#: doc/classes/@GlobalScope.xml
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]."
+"pick in a list specified via a hint string.\n"
+"The hint string is a comma separated list of names such as [code]\"Hello,"
+"Something,Else\"[/code]. For integer and float properties, the first name in "
+"the list has value 0, the next 1, and so on. Explicit values can also be "
+"specified by appending [code]:integer[/code] to the name, e.g. [code]\"Zero,"
+"One,Three:3,Four,Six:6\"[/code]."
msgstr ""
#: doc/classes/@GlobalScope.xml
@@ -5236,8 +5240,11 @@ msgstr ""
#: doc/classes/AnimationNodeBlendTree.xml
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."
+"This node may contain a sub-tree of any other blend type nodes, such as "
+"[AnimationNodeTransition], [AnimationNodeBlend2], [AnimationNodeBlend3], "
+"[AnimationNodeOneShot], etc. This is one of the most commonly used roots.\n"
+"An [AnimationNodeOutput] node named [code]output[/code] is created by "
+"default."
msgstr ""
#: doc/classes/AnimationNodeBlendTree.xml
@@ -10356,8 +10363,15 @@ msgstr ""
#: doc/classes/BakedLightmap.xml
msgid ""
-"When enabled, the lightmapper will merge the textures for all meshes into a "
-"single large layered texture. Not supported in GLES2."
+"If [code]true[/code], the lightmapper will merge the textures for all meshes "
+"into one or several large layered textures. If [code]false[/code], every "
+"mesh will get its own lightmap texture, which is less efficient.\n"
+"[b]Note:[/b] Atlas lightmap rendering is only supported in GLES3, [i]not[/i] "
+"GLES2. Non-atlas lightmap rendering is supported by both GLES3 and GLES2. If "
+"[member ProjectSettings.rendering/quality/driver/fallback_to_gles2] is "
+"[code]true[/code], consider baking lightmaps with [member atlas_generate] "
+"set to [code]false[/code] so that the resulting lightmap is visible in both "
+"GLES3 and GLES2."
msgstr ""
#: doc/classes/BakedLightmap.xml
@@ -12505,14 +12519,15 @@ msgstr ""
#: doc/classes/CanvasItem.xml
msgid ""
-"If [code]enable[/code] is [code]true[/code], children will be updated with "
-"local transform data."
+"If [code]enable[/code] is [code]true[/code], this node will receive "
+"[constant NOTIFICATION_LOCAL_TRANSFORM_CHANGED] when its local transform "
+"changes."
msgstr ""
#: doc/classes/CanvasItem.xml
msgid ""
-"If [code]enable[/code] is [code]true[/code], children will be updated with "
-"global transform data."
+"If [code]enable[/code] is [code]true[/code], this node will receive "
+"[constant NOTIFICATION_TRANSFORM_CHANGED] when its global transform changes."
msgstr ""
#: doc/classes/CanvasItem.xml
@@ -12626,9 +12641,14 @@ msgstr ""
#: doc/classes/CanvasItem.xml
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]."
+"The [CanvasItem]'s global transform has changed. This notification is only "
+"received if enabled by [method set_notify_transform]."
+msgstr ""
+
+#: doc/classes/CanvasItem.xml
+msgid ""
+"The [CanvasItem]'s local transform has changed. This notification is only "
+"received if enabled by [method set_notify_local_transform]."
msgstr ""
#: doc/classes/CanvasItem.xml
@@ -19590,9 +19610,8 @@ msgid ""
"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"
+"OpenType ([code].otf[/code]), Web Open Font Format 1 ([code].woff[/code]), "
+"and Web Open Font Format 2 ([code].woff2[/code]).\n"
"[codeblock]\n"
"var dynamic_font = DynamicFont.new()\n"
"dynamic_font.font_data = load(\"res://BarlowCondensed-Bold.ttf\")\n"
@@ -22382,12 +22401,13 @@ msgstr ""
#: doc/classes/EditorVCSInterface.xml
msgid ""
"Helper function to create a commit [Dictionary] item. [code]msg[/code] is "
-"the commit message of the commit. [code]author[/code] is a human-readable "
-"string containing the author's details, e.g. the email and name configured "
-"in the VCS. [code]id[/code] is the identifier of the commit, in whichever "
-"format your VCS may provide an identifier to commits. [code]date[/code] is "
-"directly added to the commit item and displayed in the editor, and hence, it "
-"shall be a well-formatted, human-readable date string."
+"the commit message of the commit. [code]author[/code] is a single human-"
+"readable string containing all the author's details, e.g. the email and name "
+"configured in the VCS. [code]id[/code] is the identifier of the commit, in "
+"whichever format your VCS may provide an identifier to commits. "
+"[code]unix_timestamp[/code] is the UTC Unix timestamp of when the commit was "
+"created. [code]offset_minutes[/code] is the timezone offset in minutes, "
+"recorded from the system timezone where the commit was created."
msgstr ""
#: doc/classes/EditorVCSInterface.xml
@@ -28971,9 +28991,9 @@ 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."
+"If [code]exact[/code] is [code]false[/code], it ignores additional input "
+"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the "
+"direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/Input.xml
@@ -28983,9 +29003,9 @@ msgid ""
"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."
+"If [code]exact[/code] is [code]false[/code], it ignores additional input "
+"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the "
+"direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/Input.xml
@@ -29118,9 +29138,9 @@ msgid ""
"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.\n"
+"If [code]exact[/code] is [code]false[/code], it ignores additional input "
+"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the "
+"direction for [InputEventJoypadMotion] events.\n"
"[b]Note:[/b] Due to keyboard ghosting, [method is_action_just_pressed] may "
"return [code]false[/code] even if one of the action's keys is pressed. See "
"[url=$DOCS_URL/tutorials/inputs/input_examples.html#keyboard-events]Input "
@@ -29132,9 +29152,9 @@ 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."
+"If [code]exact[/code] is [code]false[/code], it ignores additional input "
+"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the "
+"direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/Input.xml
@@ -29143,9 +29163,9 @@ msgid ""
"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.\n"
+"If [code]exact[/code] is [code]false[/code], it ignores additional input "
+"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the "
+"direction for [InputEventJoypadMotion] events.\n"
"[b]Note:[/b] Due to keyboard ghosting, [method is_action_pressed] may return "
"[code]false[/code] even if one of the action's keys is pressed. See "
"[url=$DOCS_URL/tutorials/inputs/input_examples.html#keyboard-events]Input "
@@ -29495,18 +29515,18 @@ msgstr ""
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."
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/InputEvent.xml
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."
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/InputEvent.xml
@@ -29515,9 +29535,9 @@ msgid ""
"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.\n"
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events.\n"
"[b]Note:[/b] Due to keyboard ghosting, [method is_action_pressed] may return "
"[code]false[/code] even if one of the action's keys is pressed. See "
"[url=$DOCS_URL/tutorials/inputs/input_examples.html#keyboard-events]Input "
@@ -29529,9 +29549,9 @@ 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."
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/InputEvent.xml
@@ -29562,9 +29582,9 @@ msgid ""
"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."
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/InputEvent.xml
@@ -30094,9 +30114,9 @@ msgid ""
"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."
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/InputMap.xml
@@ -33932,6 +33952,39 @@ msgid "Returns the number of surface materials."
msgstr ""
#: doc/classes/MeshInstance.xml
+msgid ""
+"Returns [code]true[/code] if this [MeshInstance] can be merged with the "
+"specified [code]other_mesh_instance[/code], using the [method MeshInstance."
+"merge_meshes] function.\n"
+"In order to be mergeable, properties of the [MeshInstance] must match, and "
+"each surface must match, in terms of material, attributes and vertex format."
+msgstr ""
+
+#: doc/classes/MeshInstance.xml
+msgid ""
+"This function can merge together the data from several source "
+"[MeshInstance]s into a single destination [MeshInstance] (the MeshInstance "
+"the function is called from). This is primarily useful for improving "
+"performance by reducing the number of drawcalls and [Node]s.\n"
+"Merging should only be attempted for simple meshes that do not contain "
+"animation.\n"
+"The final vertices can either be returned in global space, or in local space "
+"relative to the destination [MeshInstance] global transform (the destination "
+"Node must be inside the [SceneTree] for local space to work).\n"
+"The function will make a final check for compatibility between the "
+"[MeshInstance]s by default, this should always be used unless you have "
+"previously checked for compatibility using [method MeshInstance."
+"is_mergeable_with]. If the compatibility check is omitted and the meshes are "
+"merged, you may see rendering errors.\n"
+"[b]Note:[/b] The requirements for similarity between meshes are quite "
+"stringent. They can be checked using the [method MeshInstance."
+"is_mergeable_with] function prior to calling [method MeshInstance."
+"merge_meshes].\n"
+"Also note that any initial data in the destination [MeshInstance] data will "
+"be discarded."
+msgstr ""
+
+#: doc/classes/MeshInstance.xml
msgid "Sets the [Material] for a surface of the [Mesh] resource."
msgstr ""
@@ -36384,12 +36437,12 @@ msgid ""
"[/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."
+"typically relevant for [url=$DOCS_URL/tutorials/misc/"
+"running_code_in_the_editor.html]tool scripts[/url] and [url=$DOCS_URL/"
+"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
@@ -37096,7 +37149,15 @@ msgid ""
"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."
+"subinstancing.\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=$DOCS_URL/tutorials/misc/"
+"running_code_in_the_editor.html]tool scripts[/url] and [url=$DOCS_URL/"
+"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
@@ -37692,7 +37753,13 @@ msgid ""
msgstr ""
#: doc/classes/Object.xml
-msgid "Called when the object is initialized."
+msgid ""
+"Called when the object is initialized in memory. Can be defined to take in "
+"parameters, that are passed in when constructing.\n"
+"[b]Note:[/b] If [method _init] is defined with required parameters, then "
+"explicit construction is the only valid means of creating an Object of the "
+"class. If any other means (such as [method PackedScene.instance]) is used, "
+"then initialization will fail."
msgstr ""
#: doc/classes/Object.xml
@@ -42936,7 +43003,10 @@ msgid ""
msgstr ""
#: doc/classes/PhysicsServer.xml
-msgid "Returns an Info defined by the [enum ProcessInfo] input given."
+msgid ""
+"Returns information about the current state of the 3D physics engine. See "
+"[enum ProcessInfo] for a list of available states. Only implemented for "
+"Godot Physics."
msgstr ""
#: doc/classes/PhysicsServer.xml
@@ -55860,8 +55930,8 @@ msgid ""
"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"
+"print(some_array[0]) # Prints \"One,Two,Three\"\n"
+"print(some_array[1]) # Prints \"Four\"\n"
"[/codeblock]"
msgstr ""
diff --git a/doc/translations/it.po b/doc/translations/it.po
index 5953035ec5..1239b8515c 100644
--- a/doc/translations/it.po
+++ b/doc/translations/it.po
@@ -24,12 +24,13 @@
# Andrea Montagna <fullmontis@gmail.com>, 2021.
# Andrea Leganza <neogene@gmail.com>, 2021.
# Federico Caprini <caprinifede@gmail.com>, 2022.
+# Alessandro Casalino <alessandro.casalino93@gmail.com>, 2022.
msgid ""
msgstr ""
"Project-Id-Version: Godot Engine class reference\n"
"Report-Msgid-Bugs-To: https://github.com/godotengine/godot\n"
-"PO-Revision-Date: 2022-02-22 15:52+0000\n"
-"Last-Translator: Mirko <miknsop@gmail.com>\n"
+"PO-Revision-Date: 2022-03-26 23:26+0000\n"
+"Last-Translator: Alessandro Casalino <alessandro.casalino93@gmail.com>\n"
"Language-Team: Italian <https://hosted.weblate.org/projects/godot-engine/"
"godot-class-reference/it/>\n"
"Language: it\n"
@@ -37,7 +38,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8-bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Generator: Weblate 4.11-dev\n"
+"X-Generator: Weblate 4.12-dev\n"
#: doc/tools/make_rst.py
msgid "Description"
@@ -80,38 +81,38 @@ msgid "Method Descriptions"
msgstr "Descrizioni del metodo"
#: doc/tools/make_rst.py
-#, fuzzy
msgid "Theme Property Descriptions"
-msgstr "Descrizioni delle proprietà"
+msgstr "Descrizioni Proprietà dei Temi"
#: doc/tools/make_rst.py
msgid "Inherits:"
msgstr "Eredita:"
#: doc/tools/make_rst.py
-#, fuzzy
msgid "Inherited By:"
-msgstr "Ereditato da:"
+msgstr "Ereditato Da:"
#: doc/tools/make_rst.py
msgid "(overrides %s)"
-msgstr ""
+msgstr "(sovrascrive %s)"
#: doc/tools/make_rst.py
msgid "Default"
-msgstr ""
+msgstr "Predefinito"
#: doc/tools/make_rst.py
+#, fuzzy
msgid "Setter"
-msgstr ""
+msgstr "Impostatore"
#: doc/tools/make_rst.py
msgid "value"
msgstr "valore"
#: doc/tools/make_rst.py
+#, fuzzy
msgid "Getter"
-msgstr ""
+msgstr "Acquisitore"
#: doc/tools/make_rst.py
msgid ""
@@ -125,15 +126,20 @@ msgid ""
"This method has no side effects. It doesn't modify any of the instance's "
"member variables."
msgstr ""
+"Questo metodo non ha effetti collaterali. Non modifica alcuna variabile "
+"appartenente all'istanza."
#: doc/tools/make_rst.py
msgid ""
"This method accepts any number of arguments after the ones described here."
msgstr ""
+"Questo metodo accetta qualsiasi numero di argomenti oltre a quelli descritti "
+"qui."
#: doc/tools/make_rst.py
+#, fuzzy
msgid "This method is used to construct a type."
-msgstr ""
+msgstr "Questo metodo viene utilizzato per creare un tipo di variabile."
#: doc/tools/make_rst.py
msgid ""
@@ -228,16 +234,15 @@ msgid ""
"c = acos(0.866025)\n"
"[/codeblock]"
msgstr ""
-"Restituisce l'arcocoseno di [code]s[/code] in radianti. Usato per prendere "
-"l'angolo del coseno di [code]s[/code].\n"
-"[code]s[/code] deve essere compreso tra [code]1[/code] e [code] -1 [/code]\n"
+"Restituisce l'arcocoseno di [code]s[/code] in radianti. Usato per trovare "
+"l'angolo del coseno di [code]s[/code]. [code]s[/code] deve essere compreso "
+"tra [code]1[/code] e [code] -1 [/code]\n"
"[codeblock]\n"
"# c è uguale a 0.523599 o 30 gradi se convertito con rad2deg(s)\n"
"c = acos(0.866025)\n"
"[/codeblock]"
#: modules/gdscript/doc_classes/@GDScript.xml
-#, fuzzy
msgid ""
"Returns the arc sine of [code]s[/code] in radians. Use to get the angle of "
"sine [code]s[/code]. [code]s[/code] must be between [code]-1.0[/code] and "
@@ -249,7 +254,9 @@ msgid ""
"[/codeblock]"
msgstr ""
"Ritorna l'arcoseno di [code]s[/code] in radianti. Usato per prendere "
-"l'angolo del seno [code]s[/code].\n"
+"l'angolo del seno [code]s[/code]. [code]s[/code] deve essere compreso tra "
+"[code]-1.0[/code] e [code]1.0[/code] (inclusi), altrimenti, [method asin] "
+"ritornerà [constant NAN].\n"
"[codeblock]\n"
"# s è 0.523599 oppure 30 gradi se convertito con rad2deg(s)\n"
"s = asin(0.5)\n"
@@ -500,6 +507,7 @@ msgstr ""
"[/codeblock]"
#: modules/gdscript/doc_classes/@GDScript.xml
+#, fuzzy
msgid ""
"Compares two values by checking their actual contents, recursing into any "
"`Array` or `Dictionary` up to its deepest level.\n"
@@ -519,6 +527,23 @@ msgid ""
"want a true content-aware comparison, you have to use [code]deep_equal[/"
"code]."
msgstr ""
+"Paragona due valori controllando il loro contenuto attuale, ricorrendo in "
+"ogni `Array` o `Dictionary` fino al suo livello più profondo.\n"
+"Questo è simile a [code]==[/code] su molti aspetti:\n"
+"- Per [code]null[/code] , code]int[/code], [code]float[/code], [code]String[/"
+"code], [code]Object[/code] and [code]RID[/code] sia [code]deep_equal[/code] "
+"e [code]==[/code] funzionano allo stesso modo.\n"
+"- Per [code]Dictionary[/code], [code]==[/code] sono considerati uguali solo "
+"e solo se entrambe le variabili puntano allo stesso [code]Dictionary[/code], "
+"senza alcuna ricorsione o consapevolezza di qualunque contenuto.\n"
+"- Per [code]Array[/code], [code]==[/code] sono considerati uguali solo e "
+"solo se ogni oggetto nel primo [code]Array[/code] è uguale alla sua "
+"controparte nel secondo [code]Array[/code], come già fatto da [code]==[/"
+"code]. Questo implica che [code]==[/code] ricorre nell' [code]Array[/code], "
+"ma non nel [code]Dictionary[/code].\n"
+"In breve, quando un [code]Dictionary[/code] è potenzialmente involto, se "
+"vuoi un vero paragone tra i valori contenuti, devi usare [code]deep_equal[/"
+"code]."
#: modules/gdscript/doc_classes/@GDScript.xml
msgid ""
@@ -916,8 +941,9 @@ msgid ""
"To perform eased interpolation with [method lerp], combine it with [method "
"ease] or [method smoothstep]."
msgstr ""
-"Interpola linearmente tra due valori mediante un valore normalizzato. Questo "
-"metodo è l'opposto di [method inverse_lerp].\n"
+"Interpola linearmente tra due valori mediante un valore definito in "
+"[code]weight[/code]. Per interpolare, [code]weight[/code] dovrebbe rimanere "
+"tra [code]0.0[/code] e [code]1.0[/code] (inclusi).\n"
"Se gli argomenti [code]from[/code] e [code]to[/code] sono di tipo [int] o "
"[float], il valore di ritorno è un [float].\n"
"Se entrambi sono dello stesso tipo di vettore ([Vector2], [Vector3] o "
@@ -927,7 +953,10 @@ msgstr ""
"[codeblock].\n"
"lerp(0, 4, 0.75) # Restituisce 3.0\n"
"lerp(Vector2(1, 5), Vector2(3, 2), 0.5) # Restituisce Vector2(2, 3.5)\n"
-"[/codeblock]"
+"[/codeblock]\n"
+"Guarda anche [method inverse_lerp] che esegue l'inverso di questa "
+"operazione. Per eseguire un'interpolazione alleggerita con [method lerp], "
+"combinalo con [method ease] o [method smoothstep]."
#: modules/gdscript/doc_classes/@GDScript.xml
#, fuzzy
@@ -950,7 +979,8 @@ msgstr ""
"Interpola linearmente tra due angoli (in radianti) con un valore "
"normalizzato.\n"
"Simile a [metodo lerp], ma interpola correttamente quando gli angoli sono "
-"attorno [costante @GDScript.TAU].\n"
+"attorno [costante @GDScript.TAU]. Per eseguire un'interpolazione alleggerita "
+"con [method lerp_angle], combinalo con [method ease] o [method smoothstep].\n"
"[codeblock]\n"
"extends Sprite\n"
"var elapsed = 0.0\n"
@@ -1230,28 +1260,21 @@ msgstr ""
"Restituisce il modulo intero di [code]a/b[/code] che si estende in positivo "
"e negativo egualmente.\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"
"[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
-#, fuzzy
msgid ""
"Returns the result of [code]base[/code] raised to the power of [code]exp[/"
"code].\n"
@@ -1259,10 +1282,10 @@ msgid ""
"pow(2, 5) # Returns 32.0\n"
"[/codeblock]"
msgstr ""
-"Ritorna il risultato di [code]x[/code] elevato alla potenza di [code]y[/"
+"Ritorna il risultato di [code]base[/code] elevato alla potenza di [code]esp[/"
"code].\n"
"[codeblock]\n"
-"pow(2, 5) # Ritorna 32\n"
+"pow(2, 5) # Ritorna 32.0\n"
"[/codeblock]"
#: modules/gdscript/doc_classes/@GDScript.xml
@@ -1443,7 +1466,6 @@ msgstr ""
"[/codeblock]"
#: modules/gdscript/doc_classes/@GDScript.xml
-#, fuzzy
msgid ""
"Converts an angle expressed in radians to degrees.\n"
"[codeblock]\n"
@@ -1452,7 +1474,7 @@ msgid ""
msgstr ""
"Converte un angolo espresso in radianti in gradi.\n"
"[codeblock]\n"
-"rad2deg(0.523599) # Ritorna 30\n"
+"rad2deg(0.523599) # Ritorna 30.0\n"
"[/codeblock]"
#: modules/gdscript/doc_classes/@GDScript.xml
@@ -1734,6 +1756,7 @@ msgstr ""
"[/codeblock]"
#: modules/gdscript/doc_classes/@GDScript.xml
+#, 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 "
@@ -1744,9 +1767,16 @@ msgid ""
"[/codeblock]\n"
"See also [method ceil], [method floor], [method round], and [int]."
msgstr ""
+"Arrotonda un valore float [code]s[/code] ad un valore [code]step[/code] su "
+"una scala. Questo può essere anche utilizzato per arrotondare un valore "
+"float ad un numero arbitrario di cifre decimali.\n"
+"[codeblock]\n"
+"stepify(100, 32) # Ritorna 96.0\n"
+"stepify(3.14159, 0.01) # Ritorna3.14\n"
+"[/codeblock]\n"
+"Guarda anche [method ceil], [method floor], [method round] e [int]."
#: modules/gdscript/doc_classes/@GDScript.xml
-#, fuzzy
msgid ""
"Converts one or more arguments of any type to string in the best way "
"possible.\n"
@@ -1760,8 +1790,10 @@ msgstr ""
"Converte uno o più argomenti in stringhe nel miglior modo possibile e li "
"stampa sulla console.\n"
"[codeblock]\n"
-"a = [1, 2, 3]\n"
-"print(\"a\", \"b\", a) # Stampa ab[1, 2, 3]\n"
+"var a = [10, 20, 30]\n"
+"var b = str(a);\n"
+"len(a) # RItorna 3\n"
+"len(b) # Ritorna 12\n"
"[/codeblock]"
#: modules/gdscript/doc_classes/@GDScript.xml
@@ -1795,7 +1827,6 @@ msgstr ""
"[/codeblock]"
#: modules/gdscript/doc_classes/@GDScript.xml
-#, fuzzy
msgid ""
"Returns the hyperbolic tangent of [code]s[/code].\n"
"[codeblock]\n"
@@ -1803,10 +1834,10 @@ msgid ""
"b = tanh(a) # b is 0.6\n"
"[/codeblock]"
msgstr ""
-"Ritorna il coseno iperbolico di [code]s[/code] in radianti.\n"
+"Ritorna la tangente iperbolica di [code]s[/code].\n"
"[codeblock]\n"
-"# Stampa 1.543081\n"
-"print(cosh(1))\n"
+"a = log(2.0) # a is 0.693147\n"
+"b = tanh(a) # b is 0.6\n"
"[/codeblock]"
#: modules/gdscript/doc_classes/@GDScript.xml
@@ -4260,8 +4291,12 @@ msgstr ""
#: doc/classes/@GlobalScope.xml
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]."
+"pick in a list specified via a hint string.\n"
+"The hint string is a comma separated list of names such as [code]\"Hello,"
+"Something,Else\"[/code]. For integer and float properties, the first name in "
+"the list has value 0, the next 1, and so on. Explicit values can also be "
+"specified by appending [code]:integer[/code] to the name, e.g. [code]\"Zero,"
+"One,Three:3,Four,Six:6\"[/code]."
msgstr ""
#: doc/classes/@GlobalScope.xml
@@ -6178,8 +6213,11 @@ msgstr ""
#: doc/classes/AnimationNodeBlendTree.xml
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."
+"This node may contain a sub-tree of any other blend type nodes, such as "
+"[AnimationNodeTransition], [AnimationNodeBlend2], [AnimationNodeBlend3], "
+"[AnimationNodeOneShot], etc. This is one of the most commonly used roots.\n"
+"An [AnimationNodeOutput] node named [code]output[/code] is created by "
+"default."
msgstr ""
#: doc/classes/AnimationNodeBlendTree.xml
@@ -11324,8 +11362,15 @@ msgstr ""
#: doc/classes/BakedLightmap.xml
msgid ""
-"When enabled, the lightmapper will merge the textures for all meshes into a "
-"single large layered texture. Not supported in GLES2."
+"If [code]true[/code], the lightmapper will merge the textures for all meshes "
+"into one or several large layered textures. If [code]false[/code], every "
+"mesh will get its own lightmap texture, which is less efficient.\n"
+"[b]Note:[/b] Atlas lightmap rendering is only supported in GLES3, [i]not[/i] "
+"GLES2. Non-atlas lightmap rendering is supported by both GLES3 and GLES2. If "
+"[member ProjectSettings.rendering/quality/driver/fallback_to_gles2] is "
+"[code]true[/code], consider baking lightmaps with [member atlas_generate] "
+"set to [code]false[/code] so that the resulting lightmap is visible in both "
+"GLES3 and GLES2."
msgstr ""
#: doc/classes/BakedLightmap.xml
@@ -13485,14 +13530,15 @@ msgstr ""
#: doc/classes/CanvasItem.xml
msgid ""
-"If [code]enable[/code] is [code]true[/code], children will be updated with "
-"local transform data."
+"If [code]enable[/code] is [code]true[/code], this node will receive "
+"[constant NOTIFICATION_LOCAL_TRANSFORM_CHANGED] when its local transform "
+"changes."
msgstr ""
#: doc/classes/CanvasItem.xml
msgid ""
-"If [code]enable[/code] is [code]true[/code], children will be updated with "
-"global transform data."
+"If [code]enable[/code] is [code]true[/code], this node will receive "
+"[constant NOTIFICATION_TRANSFORM_CHANGED] when its global transform changes."
msgstr ""
#: doc/classes/CanvasItem.xml
@@ -13606,9 +13652,14 @@ msgstr ""
#: doc/classes/CanvasItem.xml
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]."
+"The [CanvasItem]'s global transform has changed. This notification is only "
+"received if enabled by [method set_notify_transform]."
+msgstr ""
+
+#: doc/classes/CanvasItem.xml
+msgid ""
+"The [CanvasItem]'s local transform has changed. This notification is only "
+"received if enabled by [method set_notify_local_transform]."
msgstr ""
#: doc/classes/CanvasItem.xml
@@ -20671,9 +20722,8 @@ msgid ""
"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"
+"OpenType ([code].otf[/code]), Web Open Font Format 1 ([code].woff[/code]), "
+"and Web Open Font Format 2 ([code].woff2[/code]).\n"
"[codeblock]\n"
"var dynamic_font = DynamicFont.new()\n"
"dynamic_font.font_data = load(\"res://BarlowCondensed-Bold.ttf\")\n"
@@ -23472,12 +23522,13 @@ msgstr ""
#: doc/classes/EditorVCSInterface.xml
msgid ""
"Helper function to create a commit [Dictionary] item. [code]msg[/code] is "
-"the commit message of the commit. [code]author[/code] is a human-readable "
-"string containing the author's details, e.g. the email and name configured "
-"in the VCS. [code]id[/code] is the identifier of the commit, in whichever "
-"format your VCS may provide an identifier to commits. [code]date[/code] is "
-"directly added to the commit item and displayed in the editor, and hence, it "
-"shall be a well-formatted, human-readable date string."
+"the commit message of the commit. [code]author[/code] is a single human-"
+"readable string containing all the author's details, e.g. the email and name "
+"configured in the VCS. [code]id[/code] is the identifier of the commit, in "
+"whichever format your VCS may provide an identifier to commits. "
+"[code]unix_timestamp[/code] is the UTC Unix timestamp of when the commit was "
+"created. [code]offset_minutes[/code] is the timezone offset in minutes, "
+"recorded from the system timezone where the commit was created."
msgstr ""
#: doc/classes/EditorVCSInterface.xml
@@ -30095,9 +30146,9 @@ 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."
+"If [code]exact[/code] is [code]false[/code], it ignores additional input "
+"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the "
+"direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/Input.xml
@@ -30107,9 +30158,9 @@ msgid ""
"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."
+"If [code]exact[/code] is [code]false[/code], it ignores additional input "
+"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the "
+"direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/Input.xml
@@ -30242,9 +30293,9 @@ msgid ""
"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.\n"
+"If [code]exact[/code] is [code]false[/code], it ignores additional input "
+"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the "
+"direction for [InputEventJoypadMotion] events.\n"
"[b]Note:[/b] Due to keyboard ghosting, [method is_action_just_pressed] may "
"return [code]false[/code] even if one of the action's keys is pressed. See "
"[url=$DOCS_URL/tutorials/inputs/input_examples.html#keyboard-events]Input "
@@ -30256,9 +30307,9 @@ 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."
+"If [code]exact[/code] is [code]false[/code], it ignores additional input "
+"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the "
+"direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/Input.xml
@@ -30267,9 +30318,9 @@ msgid ""
"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.\n"
+"If [code]exact[/code] is [code]false[/code], it ignores additional input "
+"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the "
+"direction for [InputEventJoypadMotion] events.\n"
"[b]Note:[/b] Due to keyboard ghosting, [method is_action_pressed] may return "
"[code]false[/code] even if one of the action's keys is pressed. See "
"[url=$DOCS_URL/tutorials/inputs/input_examples.html#keyboard-events]Input "
@@ -30620,18 +30671,18 @@ msgstr ""
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."
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/InputEvent.xml
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."
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/InputEvent.xml
@@ -30640,9 +30691,9 @@ msgid ""
"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.\n"
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events.\n"
"[b]Note:[/b] Due to keyboard ghosting, [method is_action_pressed] may return "
"[code]false[/code] even if one of the action's keys is pressed. See "
"[url=$DOCS_URL/tutorials/inputs/input_examples.html#keyboard-events]Input "
@@ -30654,9 +30705,9 @@ 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."
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/InputEvent.xml
@@ -30687,9 +30738,9 @@ msgid ""
"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."
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/InputEvent.xml
@@ -31221,9 +31272,9 @@ msgid ""
"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."
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/InputMap.xml
@@ -35069,6 +35120,39 @@ msgid "Returns the number of surface materials."
msgstr ""
#: doc/classes/MeshInstance.xml
+msgid ""
+"Returns [code]true[/code] if this [MeshInstance] can be merged with the "
+"specified [code]other_mesh_instance[/code], using the [method MeshInstance."
+"merge_meshes] function.\n"
+"In order to be mergeable, properties of the [MeshInstance] must match, and "
+"each surface must match, in terms of material, attributes and vertex format."
+msgstr ""
+
+#: doc/classes/MeshInstance.xml
+msgid ""
+"This function can merge together the data from several source "
+"[MeshInstance]s into a single destination [MeshInstance] (the MeshInstance "
+"the function is called from). This is primarily useful for improving "
+"performance by reducing the number of drawcalls and [Node]s.\n"
+"Merging should only be attempted for simple meshes that do not contain "
+"animation.\n"
+"The final vertices can either be returned in global space, or in local space "
+"relative to the destination [MeshInstance] global transform (the destination "
+"Node must be inside the [SceneTree] for local space to work).\n"
+"The function will make a final check for compatibility between the "
+"[MeshInstance]s by default, this should always be used unless you have "
+"previously checked for compatibility using [method MeshInstance."
+"is_mergeable_with]. If the compatibility check is omitted and the meshes are "
+"merged, you may see rendering errors.\n"
+"[b]Note:[/b] The requirements for similarity between meshes are quite "
+"stringent. They can be checked using the [method MeshInstance."
+"is_mergeable_with] function prior to calling [method MeshInstance."
+"merge_meshes].\n"
+"Also note that any initial data in the destination [MeshInstance] data will "
+"be discarded."
+msgstr ""
+
+#: doc/classes/MeshInstance.xml
msgid "Sets the [Material] for a surface of the [Mesh] resource."
msgstr ""
@@ -37558,12 +37642,12 @@ msgid ""
"[/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."
+"typically relevant for [url=$DOCS_URL/tutorials/misc/"
+"running_code_in_the_editor.html]tool scripts[/url] and [url=$DOCS_URL/"
+"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
@@ -38270,7 +38354,15 @@ msgid ""
"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."
+"subinstancing.\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=$DOCS_URL/tutorials/misc/"
+"running_code_in_the_editor.html]tool scripts[/url] and [url=$DOCS_URL/"
+"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
@@ -38870,7 +38962,13 @@ msgid ""
msgstr ""
#: doc/classes/Object.xml
-msgid "Called when the object is initialized."
+msgid ""
+"Called when the object is initialized in memory. Can be defined to take in "
+"parameters, that are passed in when constructing.\n"
+"[b]Note:[/b] If [method _init] is defined with required parameters, then "
+"explicit construction is the only valid means of creating an Object of the "
+"class. If any other means (such as [method PackedScene.instance]) is used, "
+"then initialization will fail."
msgstr ""
#: doc/classes/Object.xml
@@ -44159,7 +44257,10 @@ msgid ""
msgstr ""
#: doc/classes/PhysicsServer.xml
-msgid "Returns an Info defined by the [enum ProcessInfo] input given."
+msgid ""
+"Returns information about the current state of the 3D physics engine. See "
+"[enum ProcessInfo] for a list of available states. Only implemented for "
+"Godot Physics."
msgstr ""
#: doc/classes/PhysicsServer.xml
@@ -57112,8 +57213,8 @@ msgid ""
"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"
+"print(some_array[0]) # Prints \"One,Two,Three\"\n"
+"print(some_array[1]) # Prints \"Four\"\n"
"[/codeblock]"
msgstr ""
@@ -73453,10 +73554,13 @@ msgid ""
msgstr ""
#: doc/classes/XMLParser.xml
+#, fuzzy
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 ""
+"Salta la sezione corrente. Se il nodo contiene altri elementi, questi "
+"saranno ignorati e il cursore andrà alla chiusura dell'elemento corrente"
#: doc/classes/XMLParser.xml
#, fuzzy
diff --git a/doc/translations/ja.po b/doc/translations/ja.po
index 64c0815640..d6e4730c4c 100644
--- a/doc/translations/ja.po
+++ b/doc/translations/ja.po
@@ -4296,12 +4296,13 @@ msgstr ""
#: doc/classes/@GlobalScope.xml
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]."
+"pick in a list specified via a hint string.\n"
+"The hint string is a comma separated list of names such as [code]\"Hello,"
+"Something,Else\"[/code]. For integer and float properties, the first name in "
+"the list has value 0, the next 1, and so on. Explicit values can also be "
+"specified by appending [code]:integer[/code] to the name, e.g. [code]\"Zero,"
+"One,Three:3,Four,Six:6\"[/code]."
msgstr ""
-"æ•´æ•°ã€æµ®å‹•å°æ•°ç‚¹æ•°ã€æ–‡å­—列ã®ãƒ—ロパティãŒã€[code]\"Hello,Something,Else\"[/"
-"code]ã®ã‚ˆã†ãªã€ãƒ’ãƒ³ãƒˆæ–‡å­—åˆ—ã§æŒ‡å®šã•れãŸãƒªã‚¹ãƒˆã®ä¸­ã§é¸æŠžã™ã‚‹ãŸã‚ã®åˆ—挙値ã§ã‚ã‚‹"
-"ã¨ã„ã†ãƒ’ント。"
#: doc/classes/@GlobalScope.xml
msgid ""
@@ -6751,9 +6752,13 @@ msgid "[AnimationTree] node resource that contains many blend type nodes."
msgstr "ブレンドタイプã®ãƒŽãƒ¼ãƒ‰ã‚’多数å«ã‚€ [AnimationTree] ノードリソース。"
#: doc/classes/AnimationNodeBlendTree.xml
+#, fuzzy
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."
+"This node may contain a sub-tree of any other blend type nodes, such as "
+"[AnimationNodeTransition], [AnimationNodeBlend2], [AnimationNodeBlend3], "
+"[AnimationNodeOneShot], etc. This is one of the most commonly used roots.\n"
+"An [AnimationNodeOutput] node named [code]output[/code] is created by "
+"default."
msgstr ""
"ã“ã®ãƒŽãƒ¼ãƒ‰ã¯ã€mixã€blend2ã€blend3ã€ãƒ¯ãƒ³ã‚·ãƒ§ãƒƒãƒˆãªã©ã€ä»–ã®ä»»æ„ã®ãƒ–レンドタイプ"
"ã®ãƒŽãƒ¼ãƒ‰ã‚’サブツリーã¨ã—ã¦å«ã‚€ã“ã¨ãŒã§ãã¾ã™ã€‚ã“れã¯ã€ä¸€èˆ¬çš„ã«ã‚ˆã使用ã•れる"
@@ -13168,8 +13173,15 @@ msgstr ""
#: doc/classes/BakedLightmap.xml
msgid ""
-"When enabled, the lightmapper will merge the textures for all meshes into a "
-"single large layered texture. Not supported in GLES2."
+"If [code]true[/code], the lightmapper will merge the textures for all meshes "
+"into one or several large layered textures. If [code]false[/code], every "
+"mesh will get its own lightmap texture, which is less efficient.\n"
+"[b]Note:[/b] Atlas lightmap rendering is only supported in GLES3, [i]not[/i] "
+"GLES2. Non-atlas lightmap rendering is supported by both GLES3 and GLES2. If "
+"[member ProjectSettings.rendering/quality/driver/fallback_to_gles2] is "
+"[code]true[/code], consider baking lightmaps with [member atlas_generate] "
+"set to [code]false[/code] so that the resulting lightmap is visible in both "
+"GLES3 and GLES2."
msgstr ""
#: doc/classes/BakedLightmap.xml
@@ -15504,14 +15516,15 @@ msgstr ""
#: doc/classes/CanvasItem.xml
msgid ""
-"If [code]enable[/code] is [code]true[/code], children will be updated with "
-"local transform data."
+"If [code]enable[/code] is [code]true[/code], this node will receive "
+"[constant NOTIFICATION_LOCAL_TRANSFORM_CHANGED] when its local transform "
+"changes."
msgstr ""
#: doc/classes/CanvasItem.xml
msgid ""
-"If [code]enable[/code] is [code]true[/code], children will be updated with "
-"global transform data."
+"If [code]enable[/code] is [code]true[/code], this node will receive "
+"[constant NOTIFICATION_TRANSFORM_CHANGED] when its global transform changes."
msgstr ""
#: doc/classes/CanvasItem.xml
@@ -15625,9 +15638,14 @@ msgstr ""
#: doc/classes/CanvasItem.xml
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]."
+"The [CanvasItem]'s global transform has changed. This notification is only "
+"received if enabled by [method set_notify_transform]."
+msgstr ""
+
+#: doc/classes/CanvasItem.xml
+msgid ""
+"The [CanvasItem]'s local transform has changed. This notification is only "
+"received if enabled by [method set_notify_local_transform]."
msgstr ""
#: doc/classes/CanvasItem.xml
@@ -22745,9 +22763,8 @@ msgid ""
"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"
+"OpenType ([code].otf[/code]), Web Open Font Format 1 ([code].woff[/code]), "
+"and Web Open Font Format 2 ([code].woff2[/code]).\n"
"[codeblock]\n"
"var dynamic_font = DynamicFont.new()\n"
"dynamic_font.font_data = load(\"res://BarlowCondensed-Bold.ttf\")\n"
@@ -25559,12 +25576,13 @@ msgstr ""
#: doc/classes/EditorVCSInterface.xml
msgid ""
"Helper function to create a commit [Dictionary] item. [code]msg[/code] is "
-"the commit message of the commit. [code]author[/code] is a human-readable "
-"string containing the author's details, e.g. the email and name configured "
-"in the VCS. [code]id[/code] is the identifier of the commit, in whichever "
-"format your VCS may provide an identifier to commits. [code]date[/code] is "
-"directly added to the commit item and displayed in the editor, and hence, it "
-"shall be a well-formatted, human-readable date string."
+"the commit message of the commit. [code]author[/code] is a single human-"
+"readable string containing all the author's details, e.g. the email and name "
+"configured in the VCS. [code]id[/code] is the identifier of the commit, in "
+"whichever format your VCS may provide an identifier to commits. "
+"[code]unix_timestamp[/code] is the UTC Unix timestamp of when the commit was "
+"created. [code]offset_minutes[/code] is the timezone offset in minutes, "
+"recorded from the system timezone where the commit was created."
msgstr ""
#: doc/classes/EditorVCSInterface.xml
@@ -32225,9 +32243,9 @@ 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."
+"If [code]exact[/code] is [code]false[/code], it ignores additional input "
+"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the "
+"direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/Input.xml
@@ -32237,9 +32255,9 @@ msgid ""
"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."
+"If [code]exact[/code] is [code]false[/code], it ignores additional input "
+"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the "
+"direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/Input.xml
@@ -32372,9 +32390,9 @@ msgid ""
"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.\n"
+"If [code]exact[/code] is [code]false[/code], it ignores additional input "
+"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the "
+"direction for [InputEventJoypadMotion] events.\n"
"[b]Note:[/b] Due to keyboard ghosting, [method is_action_just_pressed] may "
"return [code]false[/code] even if one of the action's keys is pressed. See "
"[url=$DOCS_URL/tutorials/inputs/input_examples.html#keyboard-events]Input "
@@ -32386,9 +32404,9 @@ 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."
+"If [code]exact[/code] is [code]false[/code], it ignores additional input "
+"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the "
+"direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/Input.xml
@@ -32397,9 +32415,9 @@ msgid ""
"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.\n"
+"If [code]exact[/code] is [code]false[/code], it ignores additional input "
+"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the "
+"direction for [InputEventJoypadMotion] events.\n"
"[b]Note:[/b] Due to keyboard ghosting, [method is_action_pressed] may return "
"[code]false[/code] even if one of the action's keys is pressed. See "
"[url=$DOCS_URL/tutorials/inputs/input_examples.html#keyboard-events]Input "
@@ -32752,18 +32770,18 @@ msgstr ""
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."
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/InputEvent.xml
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."
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/InputEvent.xml
@@ -32772,9 +32790,9 @@ msgid ""
"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.\n"
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events.\n"
"[b]Note:[/b] Due to keyboard ghosting, [method is_action_pressed] may return "
"[code]false[/code] even if one of the action's keys is pressed. See "
"[url=$DOCS_URL/tutorials/inputs/input_examples.html#keyboard-events]Input "
@@ -32786,9 +32804,9 @@ 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."
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/InputEvent.xml
@@ -32819,9 +32837,9 @@ msgid ""
"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."
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/InputEvent.xml
@@ -33353,9 +33371,9 @@ msgid ""
"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."
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/InputMap.xml
@@ -37235,6 +37253,39 @@ msgid "Returns the number of surface materials."
msgstr ""
#: doc/classes/MeshInstance.xml
+msgid ""
+"Returns [code]true[/code] if this [MeshInstance] can be merged with the "
+"specified [code]other_mesh_instance[/code], using the [method MeshInstance."
+"merge_meshes] function.\n"
+"In order to be mergeable, properties of the [MeshInstance] must match, and "
+"each surface must match, in terms of material, attributes and vertex format."
+msgstr ""
+
+#: doc/classes/MeshInstance.xml
+msgid ""
+"This function can merge together the data from several source "
+"[MeshInstance]s into a single destination [MeshInstance] (the MeshInstance "
+"the function is called from). This is primarily useful for improving "
+"performance by reducing the number of drawcalls and [Node]s.\n"
+"Merging should only be attempted for simple meshes that do not contain "
+"animation.\n"
+"The final vertices can either be returned in global space, or in local space "
+"relative to the destination [MeshInstance] global transform (the destination "
+"Node must be inside the [SceneTree] for local space to work).\n"
+"The function will make a final check for compatibility between the "
+"[MeshInstance]s by default, this should always be used unless you have "
+"previously checked for compatibility using [method MeshInstance."
+"is_mergeable_with]. If the compatibility check is omitted and the meshes are "
+"merged, you may see rendering errors.\n"
+"[b]Note:[/b] The requirements for similarity between meshes are quite "
+"stringent. They can be checked using the [method MeshInstance."
+"is_mergeable_with] function prior to calling [method MeshInstance."
+"merge_meshes].\n"
+"Also note that any initial data in the destination [MeshInstance] data will "
+"be discarded."
+msgstr ""
+
+#: doc/classes/MeshInstance.xml
msgid "Sets the [Material] for a surface of the [Mesh] resource."
msgstr ""
@@ -39751,12 +39802,12 @@ msgid ""
"[/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."
+"typically relevant for [url=$DOCS_URL/tutorials/misc/"
+"running_code_in_the_editor.html]tool scripts[/url] and [url=$DOCS_URL/"
+"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
@@ -40466,7 +40517,15 @@ msgid ""
"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."
+"subinstancing.\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=$DOCS_URL/tutorials/misc/"
+"running_code_in_the_editor.html]tool scripts[/url] and [url=$DOCS_URL/"
+"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
@@ -41063,7 +41122,13 @@ msgid ""
msgstr ""
#: doc/classes/Object.xml
-msgid "Called when the object is initialized."
+msgid ""
+"Called when the object is initialized in memory. Can be defined to take in "
+"parameters, that are passed in when constructing.\n"
+"[b]Note:[/b] If [method _init] is defined with required parameters, then "
+"explicit construction is the only valid means of creating an Object of the "
+"class. If any other means (such as [method PackedScene.instance]) is used, "
+"then initialization will fail."
msgstr ""
#: doc/classes/Object.xml
@@ -46369,7 +46434,10 @@ msgid ""
msgstr ""
#: doc/classes/PhysicsServer.xml
-msgid "Returns an Info defined by the [enum ProcessInfo] input given."
+msgid ""
+"Returns information about the current state of the 3D physics engine. See "
+"[enum ProcessInfo] for a list of available states. Only implemented for "
+"Godot Physics."
msgstr ""
#: doc/classes/PhysicsServer.xml
@@ -59690,8 +59758,8 @@ msgid ""
"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"
+"print(some_array[0]) # Prints \"One,Two,Three\"\n"
+"print(some_array[1]) # Prints \"Four\"\n"
"[/codeblock]"
msgstr ""
diff --git a/doc/translations/ko.po b/doc/translations/ko.po
index 7a5bfa260b..b65860867d 100644
--- a/doc/translations/ko.po
+++ b/doc/translations/ko.po
@@ -3450,8 +3450,12 @@ msgstr ""
#: doc/classes/@GlobalScope.xml
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]."
+"pick in a list specified via a hint string.\n"
+"The hint string is a comma separated list of names such as [code]\"Hello,"
+"Something,Else\"[/code]. For integer and float properties, the first name in "
+"the list has value 0, the next 1, and so on. Explicit values can also be "
+"specified by appending [code]:integer[/code] to the name, e.g. [code]\"Zero,"
+"One,Three:3,Four,Six:6\"[/code]."
msgstr ""
#: doc/classes/@GlobalScope.xml
@@ -5365,8 +5369,11 @@ msgstr ""
#: doc/classes/AnimationNodeBlendTree.xml
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."
+"This node may contain a sub-tree of any other blend type nodes, such as "
+"[AnimationNodeTransition], [AnimationNodeBlend2], [AnimationNodeBlend3], "
+"[AnimationNodeOneShot], etc. This is one of the most commonly used roots.\n"
+"An [AnimationNodeOutput] node named [code]output[/code] is created by "
+"default."
msgstr ""
#: doc/classes/AnimationNodeBlendTree.xml
@@ -10487,8 +10494,15 @@ msgstr ""
#: doc/classes/BakedLightmap.xml
msgid ""
-"When enabled, the lightmapper will merge the textures for all meshes into a "
-"single large layered texture. Not supported in GLES2."
+"If [code]true[/code], the lightmapper will merge the textures for all meshes "
+"into one or several large layered textures. If [code]false[/code], every "
+"mesh will get its own lightmap texture, which is less efficient.\n"
+"[b]Note:[/b] Atlas lightmap rendering is only supported in GLES3, [i]not[/i] "
+"GLES2. Non-atlas lightmap rendering is supported by both GLES3 and GLES2. If "
+"[member ProjectSettings.rendering/quality/driver/fallback_to_gles2] is "
+"[code]true[/code], consider baking lightmaps with [member atlas_generate] "
+"set to [code]false[/code] so that the resulting lightmap is visible in both "
+"GLES3 and GLES2."
msgstr ""
#: doc/classes/BakedLightmap.xml
@@ -12642,14 +12656,15 @@ msgstr ""
#: doc/classes/CanvasItem.xml
msgid ""
-"If [code]enable[/code] is [code]true[/code], children will be updated with "
-"local transform data."
+"If [code]enable[/code] is [code]true[/code], this node will receive "
+"[constant NOTIFICATION_LOCAL_TRANSFORM_CHANGED] when its local transform "
+"changes."
msgstr ""
#: doc/classes/CanvasItem.xml
msgid ""
-"If [code]enable[/code] is [code]true[/code], children will be updated with "
-"global transform data."
+"If [code]enable[/code] is [code]true[/code], this node will receive "
+"[constant NOTIFICATION_TRANSFORM_CHANGED] when its global transform changes."
msgstr ""
#: doc/classes/CanvasItem.xml
@@ -12763,9 +12778,14 @@ msgstr ""
#: doc/classes/CanvasItem.xml
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]."
+"The [CanvasItem]'s global transform has changed. This notification is only "
+"received if enabled by [method set_notify_transform]."
+msgstr ""
+
+#: doc/classes/CanvasItem.xml
+msgid ""
+"The [CanvasItem]'s local transform has changed. This notification is only "
+"received if enabled by [method set_notify_local_transform]."
msgstr ""
#: doc/classes/CanvasItem.xml
@@ -19828,9 +19848,8 @@ msgid ""
"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"
+"OpenType ([code].otf[/code]), Web Open Font Format 1 ([code].woff[/code]), "
+"and Web Open Font Format 2 ([code].woff2[/code]).\n"
"[codeblock]\n"
"var dynamic_font = DynamicFont.new()\n"
"dynamic_font.font_data = load(\"res://BarlowCondensed-Bold.ttf\")\n"
@@ -22621,12 +22640,13 @@ msgstr ""
#: doc/classes/EditorVCSInterface.xml
msgid ""
"Helper function to create a commit [Dictionary] item. [code]msg[/code] is "
-"the commit message of the commit. [code]author[/code] is a human-readable "
-"string containing the author's details, e.g. the email and name configured "
-"in the VCS. [code]id[/code] is the identifier of the commit, in whichever "
-"format your VCS may provide an identifier to commits. [code]date[/code] is "
-"directly added to the commit item and displayed in the editor, and hence, it "
-"shall be a well-formatted, human-readable date string."
+"the commit message of the commit. [code]author[/code] is a single human-"
+"readable string containing all the author's details, e.g. the email and name "
+"configured in the VCS. [code]id[/code] is the identifier of the commit, in "
+"whichever format your VCS may provide an identifier to commits. "
+"[code]unix_timestamp[/code] is the UTC Unix timestamp of when the commit was "
+"created. [code]offset_minutes[/code] is the timezone offset in minutes, "
+"recorded from the system timezone where the commit was created."
msgstr ""
#: doc/classes/EditorVCSInterface.xml
@@ -29226,9 +29246,9 @@ 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."
+"If [code]exact[/code] is [code]false[/code], it ignores additional input "
+"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the "
+"direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/Input.xml
@@ -29238,9 +29258,9 @@ msgid ""
"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."
+"If [code]exact[/code] is [code]false[/code], it ignores additional input "
+"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the "
+"direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/Input.xml
@@ -29373,9 +29393,9 @@ msgid ""
"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.\n"
+"If [code]exact[/code] is [code]false[/code], it ignores additional input "
+"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the "
+"direction for [InputEventJoypadMotion] events.\n"
"[b]Note:[/b] Due to keyboard ghosting, [method is_action_just_pressed] may "
"return [code]false[/code] even if one of the action's keys is pressed. See "
"[url=$DOCS_URL/tutorials/inputs/input_examples.html#keyboard-events]Input "
@@ -29387,9 +29407,9 @@ 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."
+"If [code]exact[/code] is [code]false[/code], it ignores additional input "
+"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the "
+"direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/Input.xml
@@ -29398,9 +29418,9 @@ msgid ""
"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.\n"
+"If [code]exact[/code] is [code]false[/code], it ignores additional input "
+"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the "
+"direction for [InputEventJoypadMotion] events.\n"
"[b]Note:[/b] Due to keyboard ghosting, [method is_action_pressed] may return "
"[code]false[/code] even if one of the action's keys is pressed. See "
"[url=$DOCS_URL/tutorials/inputs/input_examples.html#keyboard-events]Input "
@@ -29750,18 +29770,18 @@ msgstr ""
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."
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/InputEvent.xml
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."
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/InputEvent.xml
@@ -29770,9 +29790,9 @@ msgid ""
"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.\n"
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events.\n"
"[b]Note:[/b] Due to keyboard ghosting, [method is_action_pressed] may return "
"[code]false[/code] even if one of the action's keys is pressed. See "
"[url=$DOCS_URL/tutorials/inputs/input_examples.html#keyboard-events]Input "
@@ -29784,9 +29804,9 @@ 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."
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/InputEvent.xml
@@ -29817,9 +29837,9 @@ msgid ""
"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."
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/InputEvent.xml
@@ -30350,9 +30370,9 @@ msgid ""
"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."
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/InputMap.xml
@@ -34190,6 +34210,39 @@ msgid "Returns the number of surface materials."
msgstr ""
#: doc/classes/MeshInstance.xml
+msgid ""
+"Returns [code]true[/code] if this [MeshInstance] can be merged with the "
+"specified [code]other_mesh_instance[/code], using the [method MeshInstance."
+"merge_meshes] function.\n"
+"In order to be mergeable, properties of the [MeshInstance] must match, and "
+"each surface must match, in terms of material, attributes and vertex format."
+msgstr ""
+
+#: doc/classes/MeshInstance.xml
+msgid ""
+"This function can merge together the data from several source "
+"[MeshInstance]s into a single destination [MeshInstance] (the MeshInstance "
+"the function is called from). This is primarily useful for improving "
+"performance by reducing the number of drawcalls and [Node]s.\n"
+"Merging should only be attempted for simple meshes that do not contain "
+"animation.\n"
+"The final vertices can either be returned in global space, or in local space "
+"relative to the destination [MeshInstance] global transform (the destination "
+"Node must be inside the [SceneTree] for local space to work).\n"
+"The function will make a final check for compatibility between the "
+"[MeshInstance]s by default, this should always be used unless you have "
+"previously checked for compatibility using [method MeshInstance."
+"is_mergeable_with]. If the compatibility check is omitted and the meshes are "
+"merged, you may see rendering errors.\n"
+"[b]Note:[/b] The requirements for similarity between meshes are quite "
+"stringent. They can be checked using the [method MeshInstance."
+"is_mergeable_with] function prior to calling [method MeshInstance."
+"merge_meshes].\n"
+"Also note that any initial data in the destination [MeshInstance] data will "
+"be discarded."
+msgstr ""
+
+#: doc/classes/MeshInstance.xml
msgid "Sets the [Material] for a surface of the [Mesh] resource."
msgstr ""
@@ -36793,12 +36846,12 @@ msgid ""
"[/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."
+"typically relevant for [url=$DOCS_URL/tutorials/misc/"
+"running_code_in_the_editor.html]tool scripts[/url] and [url=$DOCS_URL/"
+"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
@@ -37505,7 +37558,15 @@ msgid ""
"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."
+"subinstancing.\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=$DOCS_URL/tutorials/misc/"
+"running_code_in_the_editor.html]tool scripts[/url] and [url=$DOCS_URL/"
+"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
@@ -38102,7 +38163,13 @@ msgid ""
msgstr ""
#: doc/classes/Object.xml
-msgid "Called when the object is initialized."
+msgid ""
+"Called when the object is initialized in memory. Can be defined to take in "
+"parameters, that are passed in when constructing.\n"
+"[b]Note:[/b] If [method _init] is defined with required parameters, then "
+"explicit construction is the only valid means of creating an Object of the "
+"class. If any other means (such as [method PackedScene.instance]) is used, "
+"then initialization will fail."
msgstr ""
#: doc/classes/Object.xml
@@ -43369,7 +43436,10 @@ msgid ""
msgstr ""
#: doc/classes/PhysicsServer.xml
-msgid "Returns an Info defined by the [enum ProcessInfo] input given."
+msgid ""
+"Returns information about the current state of the 3D physics engine. See "
+"[enum ProcessInfo] for a list of available states. Only implemented for "
+"Godot Physics."
msgstr ""
#: doc/classes/PhysicsServer.xml
@@ -56301,8 +56371,8 @@ msgid ""
"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"
+"print(some_array[0]) # Prints \"One,Two,Three\"\n"
+"print(some_array[1]) # Prints \"Four\"\n"
"[/codeblock]"
msgstr ""
diff --git a/doc/translations/lv.po b/doc/translations/lv.po
index 6b7ee2aeb8..6270b90115 100644
--- a/doc/translations/lv.po
+++ b/doc/translations/lv.po
@@ -3338,8 +3338,12 @@ msgstr ""
#: doc/classes/@GlobalScope.xml
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]."
+"pick in a list specified via a hint string.\n"
+"The hint string is a comma separated list of names such as [code]\"Hello,"
+"Something,Else\"[/code]. For integer and float properties, the first name in "
+"the list has value 0, the next 1, and so on. Explicit values can also be "
+"specified by appending [code]:integer[/code] to the name, e.g. [code]\"Zero,"
+"One,Three:3,Four,Six:6\"[/code]."
msgstr ""
#: doc/classes/@GlobalScope.xml
@@ -5251,8 +5255,11 @@ msgstr ""
#: doc/classes/AnimationNodeBlendTree.xml
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."
+"This node may contain a sub-tree of any other blend type nodes, such as "
+"[AnimationNodeTransition], [AnimationNodeBlend2], [AnimationNodeBlend3], "
+"[AnimationNodeOneShot], etc. This is one of the most commonly used roots.\n"
+"An [AnimationNodeOutput] node named [code]output[/code] is created by "
+"default."
msgstr ""
#: doc/classes/AnimationNodeBlendTree.xml
@@ -10371,8 +10378,15 @@ msgstr ""
#: doc/classes/BakedLightmap.xml
msgid ""
-"When enabled, the lightmapper will merge the textures for all meshes into a "
-"single large layered texture. Not supported in GLES2."
+"If [code]true[/code], the lightmapper will merge the textures for all meshes "
+"into one or several large layered textures. If [code]false[/code], every "
+"mesh will get its own lightmap texture, which is less efficient.\n"
+"[b]Note:[/b] Atlas lightmap rendering is only supported in GLES3, [i]not[/i] "
+"GLES2. Non-atlas lightmap rendering is supported by both GLES3 and GLES2. If "
+"[member ProjectSettings.rendering/quality/driver/fallback_to_gles2] is "
+"[code]true[/code], consider baking lightmaps with [member atlas_generate] "
+"set to [code]false[/code] so that the resulting lightmap is visible in both "
+"GLES3 and GLES2."
msgstr ""
#: doc/classes/BakedLightmap.xml
@@ -12520,14 +12534,15 @@ msgstr ""
#: doc/classes/CanvasItem.xml
msgid ""
-"If [code]enable[/code] is [code]true[/code], children will be updated with "
-"local transform data."
+"If [code]enable[/code] is [code]true[/code], this node will receive "
+"[constant NOTIFICATION_LOCAL_TRANSFORM_CHANGED] when its local transform "
+"changes."
msgstr ""
#: doc/classes/CanvasItem.xml
msgid ""
-"If [code]enable[/code] is [code]true[/code], children will be updated with "
-"global transform data."
+"If [code]enable[/code] is [code]true[/code], this node will receive "
+"[constant NOTIFICATION_TRANSFORM_CHANGED] when its global transform changes."
msgstr ""
#: doc/classes/CanvasItem.xml
@@ -12641,9 +12656,14 @@ msgstr ""
#: doc/classes/CanvasItem.xml
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]."
+"The [CanvasItem]'s global transform has changed. This notification is only "
+"received if enabled by [method set_notify_transform]."
+msgstr ""
+
+#: doc/classes/CanvasItem.xml
+msgid ""
+"The [CanvasItem]'s local transform has changed. This notification is only "
+"received if enabled by [method set_notify_local_transform]."
msgstr ""
#: doc/classes/CanvasItem.xml
@@ -19605,9 +19625,8 @@ msgid ""
"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"
+"OpenType ([code].otf[/code]), Web Open Font Format 1 ([code].woff[/code]), "
+"and Web Open Font Format 2 ([code].woff2[/code]).\n"
"[codeblock]\n"
"var dynamic_font = DynamicFont.new()\n"
"dynamic_font.font_data = load(\"res://BarlowCondensed-Bold.ttf\")\n"
@@ -22397,12 +22416,13 @@ msgstr ""
#: doc/classes/EditorVCSInterface.xml
msgid ""
"Helper function to create a commit [Dictionary] item. [code]msg[/code] is "
-"the commit message of the commit. [code]author[/code] is a human-readable "
-"string containing the author's details, e.g. the email and name configured "
-"in the VCS. [code]id[/code] is the identifier of the commit, in whichever "
-"format your VCS may provide an identifier to commits. [code]date[/code] is "
-"directly added to the commit item and displayed in the editor, and hence, it "
-"shall be a well-formatted, human-readable date string."
+"the commit message of the commit. [code]author[/code] is a single human-"
+"readable string containing all the author's details, e.g. the email and name "
+"configured in the VCS. [code]id[/code] is the identifier of the commit, in "
+"whichever format your VCS may provide an identifier to commits. "
+"[code]unix_timestamp[/code] is the UTC Unix timestamp of when the commit was "
+"created. [code]offset_minutes[/code] is the timezone offset in minutes, "
+"recorded from the system timezone where the commit was created."
msgstr ""
#: doc/classes/EditorVCSInterface.xml
@@ -28989,9 +29009,9 @@ 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."
+"If [code]exact[/code] is [code]false[/code], it ignores additional input "
+"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the "
+"direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/Input.xml
@@ -29001,9 +29021,9 @@ msgid ""
"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."
+"If [code]exact[/code] is [code]false[/code], it ignores additional input "
+"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the "
+"direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/Input.xml
@@ -29136,9 +29156,9 @@ msgid ""
"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.\n"
+"If [code]exact[/code] is [code]false[/code], it ignores additional input "
+"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the "
+"direction for [InputEventJoypadMotion] events.\n"
"[b]Note:[/b] Due to keyboard ghosting, [method is_action_just_pressed] may "
"return [code]false[/code] even if one of the action's keys is pressed. See "
"[url=$DOCS_URL/tutorials/inputs/input_examples.html#keyboard-events]Input "
@@ -29150,9 +29170,9 @@ 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."
+"If [code]exact[/code] is [code]false[/code], it ignores additional input "
+"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the "
+"direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/Input.xml
@@ -29161,9 +29181,9 @@ msgid ""
"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.\n"
+"If [code]exact[/code] is [code]false[/code], it ignores additional input "
+"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the "
+"direction for [InputEventJoypadMotion] events.\n"
"[b]Note:[/b] Due to keyboard ghosting, [method is_action_pressed] may return "
"[code]false[/code] even if one of the action's keys is pressed. See "
"[url=$DOCS_URL/tutorials/inputs/input_examples.html#keyboard-events]Input "
@@ -29513,18 +29533,18 @@ msgstr ""
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."
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/InputEvent.xml
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."
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/InputEvent.xml
@@ -29533,9 +29553,9 @@ msgid ""
"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.\n"
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events.\n"
"[b]Note:[/b] Due to keyboard ghosting, [method is_action_pressed] may return "
"[code]false[/code] even if one of the action's keys is pressed. See "
"[url=$DOCS_URL/tutorials/inputs/input_examples.html#keyboard-events]Input "
@@ -29547,9 +29567,9 @@ 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."
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/InputEvent.xml
@@ -29580,9 +29600,9 @@ msgid ""
"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."
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/InputEvent.xml
@@ -30112,9 +30132,9 @@ msgid ""
"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."
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/InputMap.xml
@@ -33950,6 +33970,39 @@ msgid "Returns the number of surface materials."
msgstr ""
#: doc/classes/MeshInstance.xml
+msgid ""
+"Returns [code]true[/code] if this [MeshInstance] can be merged with the "
+"specified [code]other_mesh_instance[/code], using the [method MeshInstance."
+"merge_meshes] function.\n"
+"In order to be mergeable, properties of the [MeshInstance] must match, and "
+"each surface must match, in terms of material, attributes and vertex format."
+msgstr ""
+
+#: doc/classes/MeshInstance.xml
+msgid ""
+"This function can merge together the data from several source "
+"[MeshInstance]s into a single destination [MeshInstance] (the MeshInstance "
+"the function is called from). This is primarily useful for improving "
+"performance by reducing the number of drawcalls and [Node]s.\n"
+"Merging should only be attempted for simple meshes that do not contain "
+"animation.\n"
+"The final vertices can either be returned in global space, or in local space "
+"relative to the destination [MeshInstance] global transform (the destination "
+"Node must be inside the [SceneTree] for local space to work).\n"
+"The function will make a final check for compatibility between the "
+"[MeshInstance]s by default, this should always be used unless you have "
+"previously checked for compatibility using [method MeshInstance."
+"is_mergeable_with]. If the compatibility check is omitted and the meshes are "
+"merged, you may see rendering errors.\n"
+"[b]Note:[/b] The requirements for similarity between meshes are quite "
+"stringent. They can be checked using the [method MeshInstance."
+"is_mergeable_with] function prior to calling [method MeshInstance."
+"merge_meshes].\n"
+"Also note that any initial data in the destination [MeshInstance] data will "
+"be discarded."
+msgstr ""
+
+#: doc/classes/MeshInstance.xml
msgid "Sets the [Material] for a surface of the [Mesh] resource."
msgstr ""
@@ -36402,12 +36455,12 @@ msgid ""
"[/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."
+"typically relevant for [url=$DOCS_URL/tutorials/misc/"
+"running_code_in_the_editor.html]tool scripts[/url] and [url=$DOCS_URL/"
+"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
@@ -37114,7 +37167,15 @@ msgid ""
"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."
+"subinstancing.\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=$DOCS_URL/tutorials/misc/"
+"running_code_in_the_editor.html]tool scripts[/url] and [url=$DOCS_URL/"
+"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
@@ -37710,7 +37771,13 @@ msgid ""
msgstr ""
#: doc/classes/Object.xml
-msgid "Called when the object is initialized."
+msgid ""
+"Called when the object is initialized in memory. Can be defined to take in "
+"parameters, that are passed in when constructing.\n"
+"[b]Note:[/b] If [method _init] is defined with required parameters, then "
+"explicit construction is the only valid means of creating an Object of the "
+"class. If any other means (such as [method PackedScene.instance]) is used, "
+"then initialization will fail."
msgstr ""
#: doc/classes/Object.xml
@@ -42954,7 +43021,10 @@ msgid ""
msgstr ""
#: doc/classes/PhysicsServer.xml
-msgid "Returns an Info defined by the [enum ProcessInfo] input given."
+msgid ""
+"Returns information about the current state of the 3D physics engine. See "
+"[enum ProcessInfo] for a list of available states. Only implemented for "
+"Godot Physics."
msgstr ""
#: doc/classes/PhysicsServer.xml
@@ -55878,8 +55948,8 @@ msgid ""
"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"
+"print(some_array[0]) # Prints \"One,Two,Three\"\n"
+"print(some_array[1]) # Prints \"Four\"\n"
"[/codeblock]"
msgstr ""
diff --git a/doc/translations/mr.po b/doc/translations/mr.po
index e001339b39..34def67ab1 100644
--- a/doc/translations/mr.po
+++ b/doc/translations/mr.po
@@ -3321,8 +3321,12 @@ msgstr ""
#: doc/classes/@GlobalScope.xml
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]."
+"pick in a list specified via a hint string.\n"
+"The hint string is a comma separated list of names such as [code]\"Hello,"
+"Something,Else\"[/code]. For integer and float properties, the first name in "
+"the list has value 0, the next 1, and so on. Explicit values can also be "
+"specified by appending [code]:integer[/code] to the name, e.g. [code]\"Zero,"
+"One,Three:3,Four,Six:6\"[/code]."
msgstr ""
#: doc/classes/@GlobalScope.xml
@@ -5234,8 +5238,11 @@ msgstr ""
#: doc/classes/AnimationNodeBlendTree.xml
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."
+"This node may contain a sub-tree of any other blend type nodes, such as "
+"[AnimationNodeTransition], [AnimationNodeBlend2], [AnimationNodeBlend3], "
+"[AnimationNodeOneShot], etc. This is one of the most commonly used roots.\n"
+"An [AnimationNodeOutput] node named [code]output[/code] is created by "
+"default."
msgstr ""
#: doc/classes/AnimationNodeBlendTree.xml
@@ -10354,8 +10361,15 @@ msgstr ""
#: doc/classes/BakedLightmap.xml
msgid ""
-"When enabled, the lightmapper will merge the textures for all meshes into a "
-"single large layered texture. Not supported in GLES2."
+"If [code]true[/code], the lightmapper will merge the textures for all meshes "
+"into one or several large layered textures. If [code]false[/code], every "
+"mesh will get its own lightmap texture, which is less efficient.\n"
+"[b]Note:[/b] Atlas lightmap rendering is only supported in GLES3, [i]not[/i] "
+"GLES2. Non-atlas lightmap rendering is supported by both GLES3 and GLES2. If "
+"[member ProjectSettings.rendering/quality/driver/fallback_to_gles2] is "
+"[code]true[/code], consider baking lightmaps with [member atlas_generate] "
+"set to [code]false[/code] so that the resulting lightmap is visible in both "
+"GLES3 and GLES2."
msgstr ""
#: doc/classes/BakedLightmap.xml
@@ -12503,14 +12517,15 @@ msgstr ""
#: doc/classes/CanvasItem.xml
msgid ""
-"If [code]enable[/code] is [code]true[/code], children will be updated with "
-"local transform data."
+"If [code]enable[/code] is [code]true[/code], this node will receive "
+"[constant NOTIFICATION_LOCAL_TRANSFORM_CHANGED] when its local transform "
+"changes."
msgstr ""
#: doc/classes/CanvasItem.xml
msgid ""
-"If [code]enable[/code] is [code]true[/code], children will be updated with "
-"global transform data."
+"If [code]enable[/code] is [code]true[/code], this node will receive "
+"[constant NOTIFICATION_TRANSFORM_CHANGED] when its global transform changes."
msgstr ""
#: doc/classes/CanvasItem.xml
@@ -12624,9 +12639,14 @@ msgstr ""
#: doc/classes/CanvasItem.xml
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]."
+"The [CanvasItem]'s global transform has changed. This notification is only "
+"received if enabled by [method set_notify_transform]."
+msgstr ""
+
+#: doc/classes/CanvasItem.xml
+msgid ""
+"The [CanvasItem]'s local transform has changed. This notification is only "
+"received if enabled by [method set_notify_local_transform]."
msgstr ""
#: doc/classes/CanvasItem.xml
@@ -19588,9 +19608,8 @@ msgid ""
"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"
+"OpenType ([code].otf[/code]), Web Open Font Format 1 ([code].woff[/code]), "
+"and Web Open Font Format 2 ([code].woff2[/code]).\n"
"[codeblock]\n"
"var dynamic_font = DynamicFont.new()\n"
"dynamic_font.font_data = load(\"res://BarlowCondensed-Bold.ttf\")\n"
@@ -22380,12 +22399,13 @@ msgstr ""
#: doc/classes/EditorVCSInterface.xml
msgid ""
"Helper function to create a commit [Dictionary] item. [code]msg[/code] is "
-"the commit message of the commit. [code]author[/code] is a human-readable "
-"string containing the author's details, e.g. the email and name configured "
-"in the VCS. [code]id[/code] is the identifier of the commit, in whichever "
-"format your VCS may provide an identifier to commits. [code]date[/code] is "
-"directly added to the commit item and displayed in the editor, and hence, it "
-"shall be a well-formatted, human-readable date string."
+"the commit message of the commit. [code]author[/code] is a single human-"
+"readable string containing all the author's details, e.g. the email and name "
+"configured in the VCS. [code]id[/code] is the identifier of the commit, in "
+"whichever format your VCS may provide an identifier to commits. "
+"[code]unix_timestamp[/code] is the UTC Unix timestamp of when the commit was "
+"created. [code]offset_minutes[/code] is the timezone offset in minutes, "
+"recorded from the system timezone where the commit was created."
msgstr ""
#: doc/classes/EditorVCSInterface.xml
@@ -28969,9 +28989,9 @@ 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."
+"If [code]exact[/code] is [code]false[/code], it ignores additional input "
+"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the "
+"direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/Input.xml
@@ -28981,9 +29001,9 @@ msgid ""
"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."
+"If [code]exact[/code] is [code]false[/code], it ignores additional input "
+"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the "
+"direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/Input.xml
@@ -29116,9 +29136,9 @@ msgid ""
"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.\n"
+"If [code]exact[/code] is [code]false[/code], it ignores additional input "
+"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the "
+"direction for [InputEventJoypadMotion] events.\n"
"[b]Note:[/b] Due to keyboard ghosting, [method is_action_just_pressed] may "
"return [code]false[/code] even if one of the action's keys is pressed. See "
"[url=$DOCS_URL/tutorials/inputs/input_examples.html#keyboard-events]Input "
@@ -29130,9 +29150,9 @@ 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."
+"If [code]exact[/code] is [code]false[/code], it ignores additional input "
+"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the "
+"direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/Input.xml
@@ -29141,9 +29161,9 @@ msgid ""
"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.\n"
+"If [code]exact[/code] is [code]false[/code], it ignores additional input "
+"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the "
+"direction for [InputEventJoypadMotion] events.\n"
"[b]Note:[/b] Due to keyboard ghosting, [method is_action_pressed] may return "
"[code]false[/code] even if one of the action's keys is pressed. See "
"[url=$DOCS_URL/tutorials/inputs/input_examples.html#keyboard-events]Input "
@@ -29493,18 +29513,18 @@ msgstr ""
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."
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/InputEvent.xml
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."
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/InputEvent.xml
@@ -29513,9 +29533,9 @@ msgid ""
"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.\n"
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events.\n"
"[b]Note:[/b] Due to keyboard ghosting, [method is_action_pressed] may return "
"[code]false[/code] even if one of the action's keys is pressed. See "
"[url=$DOCS_URL/tutorials/inputs/input_examples.html#keyboard-events]Input "
@@ -29527,9 +29547,9 @@ 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."
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/InputEvent.xml
@@ -29560,9 +29580,9 @@ msgid ""
"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."
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/InputEvent.xml
@@ -30092,9 +30112,9 @@ msgid ""
"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."
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/InputMap.xml
@@ -33930,6 +33950,39 @@ msgid "Returns the number of surface materials."
msgstr ""
#: doc/classes/MeshInstance.xml
+msgid ""
+"Returns [code]true[/code] if this [MeshInstance] can be merged with the "
+"specified [code]other_mesh_instance[/code], using the [method MeshInstance."
+"merge_meshes] function.\n"
+"In order to be mergeable, properties of the [MeshInstance] must match, and "
+"each surface must match, in terms of material, attributes and vertex format."
+msgstr ""
+
+#: doc/classes/MeshInstance.xml
+msgid ""
+"This function can merge together the data from several source "
+"[MeshInstance]s into a single destination [MeshInstance] (the MeshInstance "
+"the function is called from). This is primarily useful for improving "
+"performance by reducing the number of drawcalls and [Node]s.\n"
+"Merging should only be attempted for simple meshes that do not contain "
+"animation.\n"
+"The final vertices can either be returned in global space, or in local space "
+"relative to the destination [MeshInstance] global transform (the destination "
+"Node must be inside the [SceneTree] for local space to work).\n"
+"The function will make a final check for compatibility between the "
+"[MeshInstance]s by default, this should always be used unless you have "
+"previously checked for compatibility using [method MeshInstance."
+"is_mergeable_with]. If the compatibility check is omitted and the meshes are "
+"merged, you may see rendering errors.\n"
+"[b]Note:[/b] The requirements for similarity between meshes are quite "
+"stringent. They can be checked using the [method MeshInstance."
+"is_mergeable_with] function prior to calling [method MeshInstance."
+"merge_meshes].\n"
+"Also note that any initial data in the destination [MeshInstance] data will "
+"be discarded."
+msgstr ""
+
+#: doc/classes/MeshInstance.xml
msgid "Sets the [Material] for a surface of the [Mesh] resource."
msgstr ""
@@ -36382,12 +36435,12 @@ msgid ""
"[/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."
+"typically relevant for [url=$DOCS_URL/tutorials/misc/"
+"running_code_in_the_editor.html]tool scripts[/url] and [url=$DOCS_URL/"
+"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
@@ -37094,7 +37147,15 @@ msgid ""
"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."
+"subinstancing.\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=$DOCS_URL/tutorials/misc/"
+"running_code_in_the_editor.html]tool scripts[/url] and [url=$DOCS_URL/"
+"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
@@ -37690,7 +37751,13 @@ msgid ""
msgstr ""
#: doc/classes/Object.xml
-msgid "Called when the object is initialized."
+msgid ""
+"Called when the object is initialized in memory. Can be defined to take in "
+"parameters, that are passed in when constructing.\n"
+"[b]Note:[/b] If [method _init] is defined with required parameters, then "
+"explicit construction is the only valid means of creating an Object of the "
+"class. If any other means (such as [method PackedScene.instance]) is used, "
+"then initialization will fail."
msgstr ""
#: doc/classes/Object.xml
@@ -42934,7 +43001,10 @@ msgid ""
msgstr ""
#: doc/classes/PhysicsServer.xml
-msgid "Returns an Info defined by the [enum ProcessInfo] input given."
+msgid ""
+"Returns information about the current state of the 3D physics engine. See "
+"[enum ProcessInfo] for a list of available states. Only implemented for "
+"Godot Physics."
msgstr ""
#: doc/classes/PhysicsServer.xml
@@ -55858,8 +55928,8 @@ msgid ""
"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"
+"print(some_array[0]) # Prints \"One,Two,Three\"\n"
+"print(some_array[1]) # Prints \"Four\"\n"
"[/codeblock]"
msgstr ""
diff --git a/doc/translations/nb.po b/doc/translations/nb.po
index 4d54bdee6e..6951cf4b7d 100644
--- a/doc/translations/nb.po
+++ b/doc/translations/nb.po
@@ -3333,8 +3333,12 @@ msgstr ""
#: doc/classes/@GlobalScope.xml
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]."
+"pick in a list specified via a hint string.\n"
+"The hint string is a comma separated list of names such as [code]\"Hello,"
+"Something,Else\"[/code]. For integer and float properties, the first name in "
+"the list has value 0, the next 1, and so on. Explicit values can also be "
+"specified by appending [code]:integer[/code] to the name, e.g. [code]\"Zero,"
+"One,Three:3,Four,Six:6\"[/code]."
msgstr ""
#: doc/classes/@GlobalScope.xml
@@ -5246,8 +5250,11 @@ msgstr ""
#: doc/classes/AnimationNodeBlendTree.xml
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."
+"This node may contain a sub-tree of any other blend type nodes, such as "
+"[AnimationNodeTransition], [AnimationNodeBlend2], [AnimationNodeBlend3], "
+"[AnimationNodeOneShot], etc. This is one of the most commonly used roots.\n"
+"An [AnimationNodeOutput] node named [code]output[/code] is created by "
+"default."
msgstr ""
#: doc/classes/AnimationNodeBlendTree.xml
@@ -10366,8 +10373,15 @@ msgstr ""
#: doc/classes/BakedLightmap.xml
msgid ""
-"When enabled, the lightmapper will merge the textures for all meshes into a "
-"single large layered texture. Not supported in GLES2."
+"If [code]true[/code], the lightmapper will merge the textures for all meshes "
+"into one or several large layered textures. If [code]false[/code], every "
+"mesh will get its own lightmap texture, which is less efficient.\n"
+"[b]Note:[/b] Atlas lightmap rendering is only supported in GLES3, [i]not[/i] "
+"GLES2. Non-atlas lightmap rendering is supported by both GLES3 and GLES2. If "
+"[member ProjectSettings.rendering/quality/driver/fallback_to_gles2] is "
+"[code]true[/code], consider baking lightmaps with [member atlas_generate] "
+"set to [code]false[/code] so that the resulting lightmap is visible in both "
+"GLES3 and GLES2."
msgstr ""
#: doc/classes/BakedLightmap.xml
@@ -12515,14 +12529,15 @@ msgstr ""
#: doc/classes/CanvasItem.xml
msgid ""
-"If [code]enable[/code] is [code]true[/code], children will be updated with "
-"local transform data."
+"If [code]enable[/code] is [code]true[/code], this node will receive "
+"[constant NOTIFICATION_LOCAL_TRANSFORM_CHANGED] when its local transform "
+"changes."
msgstr ""
#: doc/classes/CanvasItem.xml
msgid ""
-"If [code]enable[/code] is [code]true[/code], children will be updated with "
-"global transform data."
+"If [code]enable[/code] is [code]true[/code], this node will receive "
+"[constant NOTIFICATION_TRANSFORM_CHANGED] when its global transform changes."
msgstr ""
#: doc/classes/CanvasItem.xml
@@ -12636,9 +12651,14 @@ msgstr ""
#: doc/classes/CanvasItem.xml
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]."
+"The [CanvasItem]'s global transform has changed. This notification is only "
+"received if enabled by [method set_notify_transform]."
+msgstr ""
+
+#: doc/classes/CanvasItem.xml
+msgid ""
+"The [CanvasItem]'s local transform has changed. This notification is only "
+"received if enabled by [method set_notify_local_transform]."
msgstr ""
#: doc/classes/CanvasItem.xml
@@ -19600,9 +19620,8 @@ msgid ""
"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"
+"OpenType ([code].otf[/code]), Web Open Font Format 1 ([code].woff[/code]), "
+"and Web Open Font Format 2 ([code].woff2[/code]).\n"
"[codeblock]\n"
"var dynamic_font = DynamicFont.new()\n"
"dynamic_font.font_data = load(\"res://BarlowCondensed-Bold.ttf\")\n"
@@ -22392,12 +22411,13 @@ msgstr ""
#: doc/classes/EditorVCSInterface.xml
msgid ""
"Helper function to create a commit [Dictionary] item. [code]msg[/code] is "
-"the commit message of the commit. [code]author[/code] is a human-readable "
-"string containing the author's details, e.g. the email and name configured "
-"in the VCS. [code]id[/code] is the identifier of the commit, in whichever "
-"format your VCS may provide an identifier to commits. [code]date[/code] is "
-"directly added to the commit item and displayed in the editor, and hence, it "
-"shall be a well-formatted, human-readable date string."
+"the commit message of the commit. [code]author[/code] is a single human-"
+"readable string containing all the author's details, e.g. the email and name "
+"configured in the VCS. [code]id[/code] is the identifier of the commit, in "
+"whichever format your VCS may provide an identifier to commits. "
+"[code]unix_timestamp[/code] is the UTC Unix timestamp of when the commit was "
+"created. [code]offset_minutes[/code] is the timezone offset in minutes, "
+"recorded from the system timezone where the commit was created."
msgstr ""
#: doc/classes/EditorVCSInterface.xml
@@ -28981,9 +29001,9 @@ 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."
+"If [code]exact[/code] is [code]false[/code], it ignores additional input "
+"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the "
+"direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/Input.xml
@@ -28993,9 +29013,9 @@ msgid ""
"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."
+"If [code]exact[/code] is [code]false[/code], it ignores additional input "
+"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the "
+"direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/Input.xml
@@ -29128,9 +29148,9 @@ msgid ""
"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.\n"
+"If [code]exact[/code] is [code]false[/code], it ignores additional input "
+"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the "
+"direction for [InputEventJoypadMotion] events.\n"
"[b]Note:[/b] Due to keyboard ghosting, [method is_action_just_pressed] may "
"return [code]false[/code] even if one of the action's keys is pressed. See "
"[url=$DOCS_URL/tutorials/inputs/input_examples.html#keyboard-events]Input "
@@ -29142,9 +29162,9 @@ 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."
+"If [code]exact[/code] is [code]false[/code], it ignores additional input "
+"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the "
+"direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/Input.xml
@@ -29153,9 +29173,9 @@ msgid ""
"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.\n"
+"If [code]exact[/code] is [code]false[/code], it ignores additional input "
+"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the "
+"direction for [InputEventJoypadMotion] events.\n"
"[b]Note:[/b] Due to keyboard ghosting, [method is_action_pressed] may return "
"[code]false[/code] even if one of the action's keys is pressed. See "
"[url=$DOCS_URL/tutorials/inputs/input_examples.html#keyboard-events]Input "
@@ -29505,18 +29525,18 @@ msgstr ""
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."
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/InputEvent.xml
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."
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/InputEvent.xml
@@ -29525,9 +29545,9 @@ msgid ""
"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.\n"
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events.\n"
"[b]Note:[/b] Due to keyboard ghosting, [method is_action_pressed] may return "
"[code]false[/code] even if one of the action's keys is pressed. See "
"[url=$DOCS_URL/tutorials/inputs/input_examples.html#keyboard-events]Input "
@@ -29539,9 +29559,9 @@ 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."
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/InputEvent.xml
@@ -29572,9 +29592,9 @@ msgid ""
"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."
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/InputEvent.xml
@@ -30104,9 +30124,9 @@ msgid ""
"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."
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/InputMap.xml
@@ -33942,6 +33962,39 @@ msgid "Returns the number of surface materials."
msgstr ""
#: doc/classes/MeshInstance.xml
+msgid ""
+"Returns [code]true[/code] if this [MeshInstance] can be merged with the "
+"specified [code]other_mesh_instance[/code], using the [method MeshInstance."
+"merge_meshes] function.\n"
+"In order to be mergeable, properties of the [MeshInstance] must match, and "
+"each surface must match, in terms of material, attributes and vertex format."
+msgstr ""
+
+#: doc/classes/MeshInstance.xml
+msgid ""
+"This function can merge together the data from several source "
+"[MeshInstance]s into a single destination [MeshInstance] (the MeshInstance "
+"the function is called from). This is primarily useful for improving "
+"performance by reducing the number of drawcalls and [Node]s.\n"
+"Merging should only be attempted for simple meshes that do not contain "
+"animation.\n"
+"The final vertices can either be returned in global space, or in local space "
+"relative to the destination [MeshInstance] global transform (the destination "
+"Node must be inside the [SceneTree] for local space to work).\n"
+"The function will make a final check for compatibility between the "
+"[MeshInstance]s by default, this should always be used unless you have "
+"previously checked for compatibility using [method MeshInstance."
+"is_mergeable_with]. If the compatibility check is omitted and the meshes are "
+"merged, you may see rendering errors.\n"
+"[b]Note:[/b] The requirements for similarity between meshes are quite "
+"stringent. They can be checked using the [method MeshInstance."
+"is_mergeable_with] function prior to calling [method MeshInstance."
+"merge_meshes].\n"
+"Also note that any initial data in the destination [MeshInstance] data will "
+"be discarded."
+msgstr ""
+
+#: doc/classes/MeshInstance.xml
msgid "Sets the [Material] for a surface of the [Mesh] resource."
msgstr ""
@@ -36394,12 +36447,12 @@ msgid ""
"[/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."
+"typically relevant for [url=$DOCS_URL/tutorials/misc/"
+"running_code_in_the_editor.html]tool scripts[/url] and [url=$DOCS_URL/"
+"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
@@ -37106,7 +37159,15 @@ msgid ""
"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."
+"subinstancing.\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=$DOCS_URL/tutorials/misc/"
+"running_code_in_the_editor.html]tool scripts[/url] and [url=$DOCS_URL/"
+"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
@@ -37702,7 +37763,13 @@ msgid ""
msgstr ""
#: doc/classes/Object.xml
-msgid "Called when the object is initialized."
+msgid ""
+"Called when the object is initialized in memory. Can be defined to take in "
+"parameters, that are passed in when constructing.\n"
+"[b]Note:[/b] If [method _init] is defined with required parameters, then "
+"explicit construction is the only valid means of creating an Object of the "
+"class. If any other means (such as [method PackedScene.instance]) is used, "
+"then initialization will fail."
msgstr ""
#: doc/classes/Object.xml
@@ -42946,7 +43013,10 @@ msgid ""
msgstr ""
#: doc/classes/PhysicsServer.xml
-msgid "Returns an Info defined by the [enum ProcessInfo] input given."
+msgid ""
+"Returns information about the current state of the 3D physics engine. See "
+"[enum ProcessInfo] for a list of available states. Only implemented for "
+"Godot Physics."
msgstr ""
#: doc/classes/PhysicsServer.xml
@@ -55870,8 +55940,8 @@ msgid ""
"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"
+"print(some_array[0]) # Prints \"One,Two,Three\"\n"
+"print(some_array[1]) # Prints \"Four\"\n"
"[/codeblock]"
msgstr ""
diff --git a/doc/translations/ne.po b/doc/translations/ne.po
index b3231caf4d..3f5895e44a 100644
--- a/doc/translations/ne.po
+++ b/doc/translations/ne.po
@@ -3321,8 +3321,12 @@ msgstr ""
#: doc/classes/@GlobalScope.xml
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]."
+"pick in a list specified via a hint string.\n"
+"The hint string is a comma separated list of names such as [code]\"Hello,"
+"Something,Else\"[/code]. For integer and float properties, the first name in "
+"the list has value 0, the next 1, and so on. Explicit values can also be "
+"specified by appending [code]:integer[/code] to the name, e.g. [code]\"Zero,"
+"One,Three:3,Four,Six:6\"[/code]."
msgstr ""
#: doc/classes/@GlobalScope.xml
@@ -5234,8 +5238,11 @@ msgstr ""
#: doc/classes/AnimationNodeBlendTree.xml
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."
+"This node may contain a sub-tree of any other blend type nodes, such as "
+"[AnimationNodeTransition], [AnimationNodeBlend2], [AnimationNodeBlend3], "
+"[AnimationNodeOneShot], etc. This is one of the most commonly used roots.\n"
+"An [AnimationNodeOutput] node named [code]output[/code] is created by "
+"default."
msgstr ""
#: doc/classes/AnimationNodeBlendTree.xml
@@ -10354,8 +10361,15 @@ msgstr ""
#: doc/classes/BakedLightmap.xml
msgid ""
-"When enabled, the lightmapper will merge the textures for all meshes into a "
-"single large layered texture. Not supported in GLES2."
+"If [code]true[/code], the lightmapper will merge the textures for all meshes "
+"into one or several large layered textures. If [code]false[/code], every "
+"mesh will get its own lightmap texture, which is less efficient.\n"
+"[b]Note:[/b] Atlas lightmap rendering is only supported in GLES3, [i]not[/i] "
+"GLES2. Non-atlas lightmap rendering is supported by both GLES3 and GLES2. If "
+"[member ProjectSettings.rendering/quality/driver/fallback_to_gles2] is "
+"[code]true[/code], consider baking lightmaps with [member atlas_generate] "
+"set to [code]false[/code] so that the resulting lightmap is visible in both "
+"GLES3 and GLES2."
msgstr ""
#: doc/classes/BakedLightmap.xml
@@ -12503,14 +12517,15 @@ msgstr ""
#: doc/classes/CanvasItem.xml
msgid ""
-"If [code]enable[/code] is [code]true[/code], children will be updated with "
-"local transform data."
+"If [code]enable[/code] is [code]true[/code], this node will receive "
+"[constant NOTIFICATION_LOCAL_TRANSFORM_CHANGED] when its local transform "
+"changes."
msgstr ""
#: doc/classes/CanvasItem.xml
msgid ""
-"If [code]enable[/code] is [code]true[/code], children will be updated with "
-"global transform data."
+"If [code]enable[/code] is [code]true[/code], this node will receive "
+"[constant NOTIFICATION_TRANSFORM_CHANGED] when its global transform changes."
msgstr ""
#: doc/classes/CanvasItem.xml
@@ -12624,9 +12639,14 @@ msgstr ""
#: doc/classes/CanvasItem.xml
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]."
+"The [CanvasItem]'s global transform has changed. This notification is only "
+"received if enabled by [method set_notify_transform]."
+msgstr ""
+
+#: doc/classes/CanvasItem.xml
+msgid ""
+"The [CanvasItem]'s local transform has changed. This notification is only "
+"received if enabled by [method set_notify_local_transform]."
msgstr ""
#: doc/classes/CanvasItem.xml
@@ -19588,9 +19608,8 @@ msgid ""
"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"
+"OpenType ([code].otf[/code]), Web Open Font Format 1 ([code].woff[/code]), "
+"and Web Open Font Format 2 ([code].woff2[/code]).\n"
"[codeblock]\n"
"var dynamic_font = DynamicFont.new()\n"
"dynamic_font.font_data = load(\"res://BarlowCondensed-Bold.ttf\")\n"
@@ -22380,12 +22399,13 @@ msgstr ""
#: doc/classes/EditorVCSInterface.xml
msgid ""
"Helper function to create a commit [Dictionary] item. [code]msg[/code] is "
-"the commit message of the commit. [code]author[/code] is a human-readable "
-"string containing the author's details, e.g. the email and name configured "
-"in the VCS. [code]id[/code] is the identifier of the commit, in whichever "
-"format your VCS may provide an identifier to commits. [code]date[/code] is "
-"directly added to the commit item and displayed in the editor, and hence, it "
-"shall be a well-formatted, human-readable date string."
+"the commit message of the commit. [code]author[/code] is a single human-"
+"readable string containing all the author's details, e.g. the email and name "
+"configured in the VCS. [code]id[/code] is the identifier of the commit, in "
+"whichever format your VCS may provide an identifier to commits. "
+"[code]unix_timestamp[/code] is the UTC Unix timestamp of when the commit was "
+"created. [code]offset_minutes[/code] is the timezone offset in minutes, "
+"recorded from the system timezone where the commit was created."
msgstr ""
#: doc/classes/EditorVCSInterface.xml
@@ -28969,9 +28989,9 @@ 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."
+"If [code]exact[/code] is [code]false[/code], it ignores additional input "
+"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the "
+"direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/Input.xml
@@ -28981,9 +29001,9 @@ msgid ""
"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."
+"If [code]exact[/code] is [code]false[/code], it ignores additional input "
+"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the "
+"direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/Input.xml
@@ -29116,9 +29136,9 @@ msgid ""
"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.\n"
+"If [code]exact[/code] is [code]false[/code], it ignores additional input "
+"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the "
+"direction for [InputEventJoypadMotion] events.\n"
"[b]Note:[/b] Due to keyboard ghosting, [method is_action_just_pressed] may "
"return [code]false[/code] even if one of the action's keys is pressed. See "
"[url=$DOCS_URL/tutorials/inputs/input_examples.html#keyboard-events]Input "
@@ -29130,9 +29150,9 @@ 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."
+"If [code]exact[/code] is [code]false[/code], it ignores additional input "
+"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the "
+"direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/Input.xml
@@ -29141,9 +29161,9 @@ msgid ""
"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.\n"
+"If [code]exact[/code] is [code]false[/code], it ignores additional input "
+"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the "
+"direction for [InputEventJoypadMotion] events.\n"
"[b]Note:[/b] Due to keyboard ghosting, [method is_action_pressed] may return "
"[code]false[/code] even if one of the action's keys is pressed. See "
"[url=$DOCS_URL/tutorials/inputs/input_examples.html#keyboard-events]Input "
@@ -29493,18 +29513,18 @@ msgstr ""
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."
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/InputEvent.xml
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."
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/InputEvent.xml
@@ -29513,9 +29533,9 @@ msgid ""
"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.\n"
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events.\n"
"[b]Note:[/b] Due to keyboard ghosting, [method is_action_pressed] may return "
"[code]false[/code] even if one of the action's keys is pressed. See "
"[url=$DOCS_URL/tutorials/inputs/input_examples.html#keyboard-events]Input "
@@ -29527,9 +29547,9 @@ 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."
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/InputEvent.xml
@@ -29560,9 +29580,9 @@ msgid ""
"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."
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/InputEvent.xml
@@ -30092,9 +30112,9 @@ msgid ""
"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."
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/InputMap.xml
@@ -33930,6 +33950,39 @@ msgid "Returns the number of surface materials."
msgstr ""
#: doc/classes/MeshInstance.xml
+msgid ""
+"Returns [code]true[/code] if this [MeshInstance] can be merged with the "
+"specified [code]other_mesh_instance[/code], using the [method MeshInstance."
+"merge_meshes] function.\n"
+"In order to be mergeable, properties of the [MeshInstance] must match, and "
+"each surface must match, in terms of material, attributes and vertex format."
+msgstr ""
+
+#: doc/classes/MeshInstance.xml
+msgid ""
+"This function can merge together the data from several source "
+"[MeshInstance]s into a single destination [MeshInstance] (the MeshInstance "
+"the function is called from). This is primarily useful for improving "
+"performance by reducing the number of drawcalls and [Node]s.\n"
+"Merging should only be attempted for simple meshes that do not contain "
+"animation.\n"
+"The final vertices can either be returned in global space, or in local space "
+"relative to the destination [MeshInstance] global transform (the destination "
+"Node must be inside the [SceneTree] for local space to work).\n"
+"The function will make a final check for compatibility between the "
+"[MeshInstance]s by default, this should always be used unless you have "
+"previously checked for compatibility using [method MeshInstance."
+"is_mergeable_with]. If the compatibility check is omitted and the meshes are "
+"merged, you may see rendering errors.\n"
+"[b]Note:[/b] The requirements for similarity between meshes are quite "
+"stringent. They can be checked using the [method MeshInstance."
+"is_mergeable_with] function prior to calling [method MeshInstance."
+"merge_meshes].\n"
+"Also note that any initial data in the destination [MeshInstance] data will "
+"be discarded."
+msgstr ""
+
+#: doc/classes/MeshInstance.xml
msgid "Sets the [Material] for a surface of the [Mesh] resource."
msgstr ""
@@ -36382,12 +36435,12 @@ msgid ""
"[/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."
+"typically relevant for [url=$DOCS_URL/tutorials/misc/"
+"running_code_in_the_editor.html]tool scripts[/url] and [url=$DOCS_URL/"
+"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
@@ -37094,7 +37147,15 @@ msgid ""
"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."
+"subinstancing.\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=$DOCS_URL/tutorials/misc/"
+"running_code_in_the_editor.html]tool scripts[/url] and [url=$DOCS_URL/"
+"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
@@ -37690,7 +37751,13 @@ msgid ""
msgstr ""
#: doc/classes/Object.xml
-msgid "Called when the object is initialized."
+msgid ""
+"Called when the object is initialized in memory. Can be defined to take in "
+"parameters, that are passed in when constructing.\n"
+"[b]Note:[/b] If [method _init] is defined with required parameters, then "
+"explicit construction is the only valid means of creating an Object of the "
+"class. If any other means (such as [method PackedScene.instance]) is used, "
+"then initialization will fail."
msgstr ""
#: doc/classes/Object.xml
@@ -42934,7 +43001,10 @@ msgid ""
msgstr ""
#: doc/classes/PhysicsServer.xml
-msgid "Returns an Info defined by the [enum ProcessInfo] input given."
+msgid ""
+"Returns information about the current state of the 3D physics engine. See "
+"[enum ProcessInfo] for a list of available states. Only implemented for "
+"Godot Physics."
msgstr ""
#: doc/classes/PhysicsServer.xml
@@ -55858,8 +55928,8 @@ msgid ""
"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"
+"print(some_array[0]) # Prints \"One,Two,Three\"\n"
+"print(some_array[1]) # Prints \"Four\"\n"
"[/codeblock]"
msgstr ""
diff --git a/doc/translations/nl.po b/doc/translations/nl.po
index 7af8cd1303..6066f9dcfd 100644
--- a/doc/translations/nl.po
+++ b/doc/translations/nl.po
@@ -3390,8 +3390,12 @@ msgstr ""
#: doc/classes/@GlobalScope.xml
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]."
+"pick in a list specified via a hint string.\n"
+"The hint string is a comma separated list of names such as [code]\"Hello,"
+"Something,Else\"[/code]. For integer and float properties, the first name in "
+"the list has value 0, the next 1, and so on. Explicit values can also be "
+"specified by appending [code]:integer[/code] to the name, e.g. [code]\"Zero,"
+"One,Three:3,Four,Six:6\"[/code]."
msgstr ""
#: doc/classes/@GlobalScope.xml
@@ -5303,8 +5307,11 @@ msgstr ""
#: doc/classes/AnimationNodeBlendTree.xml
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."
+"This node may contain a sub-tree of any other blend type nodes, such as "
+"[AnimationNodeTransition], [AnimationNodeBlend2], [AnimationNodeBlend3], "
+"[AnimationNodeOneShot], etc. This is one of the most commonly used roots.\n"
+"An [AnimationNodeOutput] node named [code]output[/code] is created by "
+"default."
msgstr ""
#: doc/classes/AnimationNodeBlendTree.xml
@@ -10423,8 +10430,15 @@ msgstr ""
#: doc/classes/BakedLightmap.xml
msgid ""
-"When enabled, the lightmapper will merge the textures for all meshes into a "
-"single large layered texture. Not supported in GLES2."
+"If [code]true[/code], the lightmapper will merge the textures for all meshes "
+"into one or several large layered textures. If [code]false[/code], every "
+"mesh will get its own lightmap texture, which is less efficient.\n"
+"[b]Note:[/b] Atlas lightmap rendering is only supported in GLES3, [i]not[/i] "
+"GLES2. Non-atlas lightmap rendering is supported by both GLES3 and GLES2. If "
+"[member ProjectSettings.rendering/quality/driver/fallback_to_gles2] is "
+"[code]true[/code], consider baking lightmaps with [member atlas_generate] "
+"set to [code]false[/code] so that the resulting lightmap is visible in both "
+"GLES3 and GLES2."
msgstr ""
#: doc/classes/BakedLightmap.xml
@@ -12572,14 +12586,15 @@ msgstr ""
#: doc/classes/CanvasItem.xml
msgid ""
-"If [code]enable[/code] is [code]true[/code], children will be updated with "
-"local transform data."
+"If [code]enable[/code] is [code]true[/code], this node will receive "
+"[constant NOTIFICATION_LOCAL_TRANSFORM_CHANGED] when its local transform "
+"changes."
msgstr ""
#: doc/classes/CanvasItem.xml
msgid ""
-"If [code]enable[/code] is [code]true[/code], children will be updated with "
-"global transform data."
+"If [code]enable[/code] is [code]true[/code], this node will receive "
+"[constant NOTIFICATION_TRANSFORM_CHANGED] when its global transform changes."
msgstr ""
#: doc/classes/CanvasItem.xml
@@ -12693,9 +12708,14 @@ msgstr ""
#: doc/classes/CanvasItem.xml
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]."
+"The [CanvasItem]'s global transform has changed. This notification is only "
+"received if enabled by [method set_notify_transform]."
+msgstr ""
+
+#: doc/classes/CanvasItem.xml
+msgid ""
+"The [CanvasItem]'s local transform has changed. This notification is only "
+"received if enabled by [method set_notify_local_transform]."
msgstr ""
#: doc/classes/CanvasItem.xml
@@ -19657,9 +19677,8 @@ msgid ""
"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"
+"OpenType ([code].otf[/code]), Web Open Font Format 1 ([code].woff[/code]), "
+"and Web Open Font Format 2 ([code].woff2[/code]).\n"
"[codeblock]\n"
"var dynamic_font = DynamicFont.new()\n"
"dynamic_font.font_data = load(\"res://BarlowCondensed-Bold.ttf\")\n"
@@ -22449,12 +22468,13 @@ msgstr ""
#: doc/classes/EditorVCSInterface.xml
msgid ""
"Helper function to create a commit [Dictionary] item. [code]msg[/code] is "
-"the commit message of the commit. [code]author[/code] is a human-readable "
-"string containing the author's details, e.g. the email and name configured "
-"in the VCS. [code]id[/code] is the identifier of the commit, in whichever "
-"format your VCS may provide an identifier to commits. [code]date[/code] is "
-"directly added to the commit item and displayed in the editor, and hence, it "
-"shall be a well-formatted, human-readable date string."
+"the commit message of the commit. [code]author[/code] is a single human-"
+"readable string containing all the author's details, e.g. the email and name "
+"configured in the VCS. [code]id[/code] is the identifier of the commit, in "
+"whichever format your VCS may provide an identifier to commits. "
+"[code]unix_timestamp[/code] is the UTC Unix timestamp of when the commit was "
+"created. [code]offset_minutes[/code] is the timezone offset in minutes, "
+"recorded from the system timezone where the commit was created."
msgstr ""
#: doc/classes/EditorVCSInterface.xml
@@ -29041,9 +29061,9 @@ 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."
+"If [code]exact[/code] is [code]false[/code], it ignores additional input "
+"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the "
+"direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/Input.xml
@@ -29053,9 +29073,9 @@ msgid ""
"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."
+"If [code]exact[/code] is [code]false[/code], it ignores additional input "
+"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the "
+"direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/Input.xml
@@ -29188,9 +29208,9 @@ msgid ""
"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.\n"
+"If [code]exact[/code] is [code]false[/code], it ignores additional input "
+"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the "
+"direction for [InputEventJoypadMotion] events.\n"
"[b]Note:[/b] Due to keyboard ghosting, [method is_action_just_pressed] may "
"return [code]false[/code] even if one of the action's keys is pressed. See "
"[url=$DOCS_URL/tutorials/inputs/input_examples.html#keyboard-events]Input "
@@ -29202,9 +29222,9 @@ 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."
+"If [code]exact[/code] is [code]false[/code], it ignores additional input "
+"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the "
+"direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/Input.xml
@@ -29213,9 +29233,9 @@ msgid ""
"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.\n"
+"If [code]exact[/code] is [code]false[/code], it ignores additional input "
+"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the "
+"direction for [InputEventJoypadMotion] events.\n"
"[b]Note:[/b] Due to keyboard ghosting, [method is_action_pressed] may return "
"[code]false[/code] even if one of the action's keys is pressed. See "
"[url=$DOCS_URL/tutorials/inputs/input_examples.html#keyboard-events]Input "
@@ -29565,18 +29585,18 @@ msgstr ""
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."
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/InputEvent.xml
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."
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/InputEvent.xml
@@ -29585,9 +29605,9 @@ msgid ""
"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.\n"
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events.\n"
"[b]Note:[/b] Due to keyboard ghosting, [method is_action_pressed] may return "
"[code]false[/code] even if one of the action's keys is pressed. See "
"[url=$DOCS_URL/tutorials/inputs/input_examples.html#keyboard-events]Input "
@@ -29599,9 +29619,9 @@ 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."
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/InputEvent.xml
@@ -29632,9 +29652,9 @@ msgid ""
"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."
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/InputEvent.xml
@@ -30164,9 +30184,9 @@ msgid ""
"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."
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/InputMap.xml
@@ -34002,6 +34022,39 @@ msgid "Returns the number of surface materials."
msgstr ""
#: doc/classes/MeshInstance.xml
+msgid ""
+"Returns [code]true[/code] if this [MeshInstance] can be merged with the "
+"specified [code]other_mesh_instance[/code], using the [method MeshInstance."
+"merge_meshes] function.\n"
+"In order to be mergeable, properties of the [MeshInstance] must match, and "
+"each surface must match, in terms of material, attributes and vertex format."
+msgstr ""
+
+#: doc/classes/MeshInstance.xml
+msgid ""
+"This function can merge together the data from several source "
+"[MeshInstance]s into a single destination [MeshInstance] (the MeshInstance "
+"the function is called from). This is primarily useful for improving "
+"performance by reducing the number of drawcalls and [Node]s.\n"
+"Merging should only be attempted for simple meshes that do not contain "
+"animation.\n"
+"The final vertices can either be returned in global space, or in local space "
+"relative to the destination [MeshInstance] global transform (the destination "
+"Node must be inside the [SceneTree] for local space to work).\n"
+"The function will make a final check for compatibility between the "
+"[MeshInstance]s by default, this should always be used unless you have "
+"previously checked for compatibility using [method MeshInstance."
+"is_mergeable_with]. If the compatibility check is omitted and the meshes are "
+"merged, you may see rendering errors.\n"
+"[b]Note:[/b] The requirements for similarity between meshes are quite "
+"stringent. They can be checked using the [method MeshInstance."
+"is_mergeable_with] function prior to calling [method MeshInstance."
+"merge_meshes].\n"
+"Also note that any initial data in the destination [MeshInstance] data will "
+"be discarded."
+msgstr ""
+
+#: doc/classes/MeshInstance.xml
msgid "Sets the [Material] for a surface of the [Mesh] resource."
msgstr ""
@@ -36454,12 +36507,12 @@ msgid ""
"[/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."
+"typically relevant for [url=$DOCS_URL/tutorials/misc/"
+"running_code_in_the_editor.html]tool scripts[/url] and [url=$DOCS_URL/"
+"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
@@ -37166,7 +37219,15 @@ msgid ""
"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."
+"subinstancing.\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=$DOCS_URL/tutorials/misc/"
+"running_code_in_the_editor.html]tool scripts[/url] and [url=$DOCS_URL/"
+"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
@@ -37762,7 +37823,13 @@ msgid ""
msgstr ""
#: doc/classes/Object.xml
-msgid "Called when the object is initialized."
+msgid ""
+"Called when the object is initialized in memory. Can be defined to take in "
+"parameters, that are passed in when constructing.\n"
+"[b]Note:[/b] If [method _init] is defined with required parameters, then "
+"explicit construction is the only valid means of creating an Object of the "
+"class. If any other means (such as [method PackedScene.instance]) is used, "
+"then initialization will fail."
msgstr ""
#: doc/classes/Object.xml
@@ -43006,7 +43073,10 @@ msgid ""
msgstr ""
#: doc/classes/PhysicsServer.xml
-msgid "Returns an Info defined by the [enum ProcessInfo] input given."
+msgid ""
+"Returns information about the current state of the 3D physics engine. See "
+"[enum ProcessInfo] for a list of available states. Only implemented for "
+"Godot Physics."
msgstr ""
#: doc/classes/PhysicsServer.xml
@@ -55931,8 +56001,8 @@ msgid ""
"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"
+"print(some_array[0]) # Prints \"One,Two,Three\"\n"
+"print(some_array[1]) # Prints \"Four\"\n"
"[/codeblock]"
msgstr ""
diff --git a/doc/translations/pl.po b/doc/translations/pl.po
index 45e9c8d39c..637579dfe4 100644
--- a/doc/translations/pl.po
+++ b/doc/translations/pl.po
@@ -21,12 +21,13 @@
# Piotr <promantix@gmail.com>, 2022.
# lewando54 <lewando54@gmail.com>, 2022.
# Katarzyna Twardowska <katarina.twardowska@gmail.com>, 2022.
+# Mateusz Zdrzałek <matjozohd@gmail.com>, 2022.
msgid ""
msgstr ""
"Project-Id-Version: Godot Engine class reference\n"
"Report-Msgid-Bugs-To: https://github.com/godotengine/godot\n"
-"PO-Revision-Date: 2022-03-08 06:54+0000\n"
-"Last-Translator: Katarzyna Twardowska <katarina.twardowska@gmail.com>\n"
+"PO-Revision-Date: 2022-03-21 22:22+0000\n"
+"Last-Translator: Mateusz Zdrzałek <matjozohd@gmail.com>\n"
"Language-Team: Polish <https://hosted.weblate.org/projects/godot-engine/"
"godot-class-reference/pl/>\n"
"Language: pl\n"
@@ -78,9 +79,8 @@ msgid "Method Descriptions"
msgstr "Opisy metod"
#: doc/tools/make_rst.py
-#, fuzzy
msgid "Theme Property Descriptions"
-msgstr "Opisy właściwości"
+msgstr "Opisy właściwości motywu"
#: doc/tools/make_rst.py
msgid "Inherits:"
@@ -92,11 +92,11 @@ msgstr "Dziedziczone przez:"
#: doc/tools/make_rst.py
msgid "(overrides %s)"
-msgstr ""
+msgstr "(nadpisuje %s)"
#: doc/tools/make_rst.py
msgid "Default"
-msgstr ""
+msgstr "Domyślny"
#: doc/tools/make_rst.py
msgid "Setter"
@@ -108,7 +108,7 @@ msgstr "wartość"
#: doc/tools/make_rst.py
msgid "Getter"
-msgstr ""
+msgstr "Getter"
#: doc/tools/make_rst.py
msgid ""
@@ -127,10 +127,11 @@ msgstr ""
msgid ""
"This method accepts any number of arguments after the ones described here."
msgstr ""
+"Ta funkcja przyjmują dowolną liczbę argumentów po tych opisanych tutaj."
#: doc/tools/make_rst.py
msgid "This method is used to construct a type."
-msgstr ""
+msgstr "Ta metoda jest używana do konstruowania typu."
#: doc/tools/make_rst.py
msgid ""
@@ -145,6 +146,8 @@ msgid ""
"This method describes a valid operator to use with this type as left-hand "
"operand."
msgstr ""
+"Ta metoda opisuje prawidłowy operator do użycia z tym typem jako operand po "
+"lewej stronie."
#: modules/gdscript/doc_classes/@GDScript.xml
msgid "Built-in GDScript functions."
@@ -3796,8 +3799,12 @@ msgstr ""
#: doc/classes/@GlobalScope.xml
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]."
+"pick in a list specified via a hint string.\n"
+"The hint string is a comma separated list of names such as [code]\"Hello,"
+"Something,Else\"[/code]. For integer and float properties, the first name in "
+"the list has value 0, the next 1, and so on. Explicit values can also be "
+"specified by appending [code]:integer[/code] to the name, e.g. [code]\"Zero,"
+"One,Three:3,Four,Six:6\"[/code]."
msgstr ""
#: doc/classes/@GlobalScope.xml
@@ -5711,8 +5718,11 @@ msgstr ""
#: doc/classes/AnimationNodeBlendTree.xml
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."
+"This node may contain a sub-tree of any other blend type nodes, such as "
+"[AnimationNodeTransition], [AnimationNodeBlend2], [AnimationNodeBlend3], "
+"[AnimationNodeOneShot], etc. This is one of the most commonly used roots.\n"
+"An [AnimationNodeOutput] node named [code]output[/code] is created by "
+"default."
msgstr ""
#: doc/classes/AnimationNodeBlendTree.xml
@@ -10840,8 +10850,15 @@ msgstr ""
#: doc/classes/BakedLightmap.xml
msgid ""
-"When enabled, the lightmapper will merge the textures for all meshes into a "
-"single large layered texture. Not supported in GLES2."
+"If [code]true[/code], the lightmapper will merge the textures for all meshes "
+"into one or several large layered textures. If [code]false[/code], every "
+"mesh will get its own lightmap texture, which is less efficient.\n"
+"[b]Note:[/b] Atlas lightmap rendering is only supported in GLES3, [i]not[/i] "
+"GLES2. Non-atlas lightmap rendering is supported by both GLES3 and GLES2. If "
+"[member ProjectSettings.rendering/quality/driver/fallback_to_gles2] is "
+"[code]true[/code], consider baking lightmaps with [member atlas_generate] "
+"set to [code]false[/code] so that the resulting lightmap is visible in both "
+"GLES3 and GLES2."
msgstr ""
#: doc/classes/BakedLightmap.xml
@@ -13003,14 +13020,15 @@ msgstr ""
#: doc/classes/CanvasItem.xml
msgid ""
-"If [code]enable[/code] is [code]true[/code], children will be updated with "
-"local transform data."
+"If [code]enable[/code] is [code]true[/code], this node will receive "
+"[constant NOTIFICATION_LOCAL_TRANSFORM_CHANGED] when its local transform "
+"changes."
msgstr ""
#: doc/classes/CanvasItem.xml
msgid ""
-"If [code]enable[/code] is [code]true[/code], children will be updated with "
-"global transform data."
+"If [code]enable[/code] is [code]true[/code], this node will receive "
+"[constant NOTIFICATION_TRANSFORM_CHANGED] when its global transform changes."
msgstr ""
#: doc/classes/CanvasItem.xml
@@ -13124,9 +13142,14 @@ msgstr ""
#: doc/classes/CanvasItem.xml
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]."
+"The [CanvasItem]'s global transform has changed. This notification is only "
+"received if enabled by [method set_notify_transform]."
+msgstr ""
+
+#: doc/classes/CanvasItem.xml
+msgid ""
+"The [CanvasItem]'s local transform has changed. This notification is only "
+"received if enabled by [method set_notify_local_transform]."
msgstr ""
#: doc/classes/CanvasItem.xml
@@ -20109,9 +20132,8 @@ msgid ""
"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"
+"OpenType ([code].otf[/code]), Web Open Font Format 1 ([code].woff[/code]), "
+"and Web Open Font Format 2 ([code].woff2[/code]).\n"
"[codeblock]\n"
"var dynamic_font = DynamicFont.new()\n"
"dynamic_font.font_data = load(\"res://BarlowCondensed-Bold.ttf\")\n"
@@ -22905,12 +22927,13 @@ msgstr ""
#: doc/classes/EditorVCSInterface.xml
msgid ""
"Helper function to create a commit [Dictionary] item. [code]msg[/code] is "
-"the commit message of the commit. [code]author[/code] is a human-readable "
-"string containing the author's details, e.g. the email and name configured "
-"in the VCS. [code]id[/code] is the identifier of the commit, in whichever "
-"format your VCS may provide an identifier to commits. [code]date[/code] is "
-"directly added to the commit item and displayed in the editor, and hence, it "
-"shall be a well-formatted, human-readable date string."
+"the commit message of the commit. [code]author[/code] is a single human-"
+"readable string containing all the author's details, e.g. the email and name "
+"configured in the VCS. [code]id[/code] is the identifier of the commit, in "
+"whichever format your VCS may provide an identifier to commits. "
+"[code]unix_timestamp[/code] is the UTC Unix timestamp of when the commit was "
+"created. [code]offset_minutes[/code] is the timezone offset in minutes, "
+"recorded from the system timezone where the commit was created."
msgstr ""
#: doc/classes/EditorVCSInterface.xml
@@ -29517,9 +29540,9 @@ 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."
+"If [code]exact[/code] is [code]false[/code], it ignores additional input "
+"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the "
+"direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/Input.xml
@@ -29529,9 +29552,9 @@ msgid ""
"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."
+"If [code]exact[/code] is [code]false[/code], it ignores additional input "
+"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the "
+"direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/Input.xml
@@ -29664,9 +29687,9 @@ msgid ""
"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.\n"
+"If [code]exact[/code] is [code]false[/code], it ignores additional input "
+"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the "
+"direction for [InputEventJoypadMotion] events.\n"
"[b]Note:[/b] Due to keyboard ghosting, [method is_action_just_pressed] may "
"return [code]false[/code] even if one of the action's keys is pressed. See "
"[url=$DOCS_URL/tutorials/inputs/input_examples.html#keyboard-events]Input "
@@ -29678,9 +29701,9 @@ 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."
+"If [code]exact[/code] is [code]false[/code], it ignores additional input "
+"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the "
+"direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/Input.xml
@@ -29689,9 +29712,9 @@ msgid ""
"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.\n"
+"If [code]exact[/code] is [code]false[/code], it ignores additional input "
+"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the "
+"direction for [InputEventJoypadMotion] events.\n"
"[b]Note:[/b] Due to keyboard ghosting, [method is_action_pressed] may return "
"[code]false[/code] even if one of the action's keys is pressed. See "
"[url=$DOCS_URL/tutorials/inputs/input_examples.html#keyboard-events]Input "
@@ -30041,18 +30064,18 @@ msgstr ""
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."
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/InputEvent.xml
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."
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/InputEvent.xml
@@ -30061,9 +30084,9 @@ msgid ""
"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.\n"
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events.\n"
"[b]Note:[/b] Due to keyboard ghosting, [method is_action_pressed] may return "
"[code]false[/code] even if one of the action's keys is pressed. See "
"[url=$DOCS_URL/tutorials/inputs/input_examples.html#keyboard-events]Input "
@@ -30075,9 +30098,9 @@ 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."
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/InputEvent.xml
@@ -30108,9 +30131,9 @@ msgid ""
"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."
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/InputEvent.xml
@@ -30641,9 +30664,9 @@ msgid ""
"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."
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/InputMap.xml
@@ -34494,6 +34517,39 @@ msgid "Returns the number of surface materials."
msgstr ""
#: doc/classes/MeshInstance.xml
+msgid ""
+"Returns [code]true[/code] if this [MeshInstance] can be merged with the "
+"specified [code]other_mesh_instance[/code], using the [method MeshInstance."
+"merge_meshes] function.\n"
+"In order to be mergeable, properties of the [MeshInstance] must match, and "
+"each surface must match, in terms of material, attributes and vertex format."
+msgstr ""
+
+#: doc/classes/MeshInstance.xml
+msgid ""
+"This function can merge together the data from several source "
+"[MeshInstance]s into a single destination [MeshInstance] (the MeshInstance "
+"the function is called from). This is primarily useful for improving "
+"performance by reducing the number of drawcalls and [Node]s.\n"
+"Merging should only be attempted for simple meshes that do not contain "
+"animation.\n"
+"The final vertices can either be returned in global space, or in local space "
+"relative to the destination [MeshInstance] global transform (the destination "
+"Node must be inside the [SceneTree] for local space to work).\n"
+"The function will make a final check for compatibility between the "
+"[MeshInstance]s by default, this should always be used unless you have "
+"previously checked for compatibility using [method MeshInstance."
+"is_mergeable_with]. If the compatibility check is omitted and the meshes are "
+"merged, you may see rendering errors.\n"
+"[b]Note:[/b] The requirements for similarity between meshes are quite "
+"stringent. They can be checked using the [method MeshInstance."
+"is_mergeable_with] function prior to calling [method MeshInstance."
+"merge_meshes].\n"
+"Also note that any initial data in the destination [MeshInstance] data will "
+"be discarded."
+msgstr ""
+
+#: doc/classes/MeshInstance.xml
msgid "Sets the [Material] for a surface of the [Mesh] resource."
msgstr ""
@@ -36837,7 +36893,7 @@ msgstr ""
#: doc/classes/Node.xml
msgid "Nodes and Scenes"
-msgstr "Węzły i Sceny"
+msgstr "Węzły i sceny"
#: doc/classes/Node.xml
msgid "All Demos"
@@ -36989,12 +37045,12 @@ msgid ""
"[/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."
+"typically relevant for [url=$DOCS_URL/tutorials/misc/"
+"running_code_in_the_editor.html]tool scripts[/url] and [url=$DOCS_URL/"
+"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
@@ -37701,7 +37757,15 @@ msgid ""
"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."
+"subinstancing.\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=$DOCS_URL/tutorials/misc/"
+"running_code_in_the_editor.html]tool scripts[/url] and [url=$DOCS_URL/"
+"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
@@ -38297,7 +38361,13 @@ msgid ""
msgstr ""
#: doc/classes/Object.xml
-msgid "Called when the object is initialized."
+msgid ""
+"Called when the object is initialized in memory. Can be defined to take in "
+"parameters, that are passed in when constructing.\n"
+"[b]Note:[/b] If [method _init] is defined with required parameters, then "
+"explicit construction is the only valid means of creating an Object of the "
+"class. If any other means (such as [method PackedScene.instance]) is used, "
+"then initialization will fail."
msgstr ""
#: doc/classes/Object.xml
@@ -43584,7 +43654,10 @@ msgid ""
msgstr ""
#: doc/classes/PhysicsServer.xml
-msgid "Returns an Info defined by the [enum ProcessInfo] input given."
+msgid ""
+"Returns information about the current state of the 3D physics engine. See "
+"[enum ProcessInfo] for a list of available states. Only implemented for "
+"Godot Physics."
msgstr ""
#: doc/classes/PhysicsServer.xml
@@ -56533,8 +56606,8 @@ msgid ""
"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"
+"print(some_array[0]) # Prints \"One,Two,Three\"\n"
+"print(some_array[1]) # Prints \"Four\"\n"
"[/codeblock]"
msgstr ""
diff --git a/doc/translations/pt.po b/doc/translations/pt.po
index 42b3a739f1..3c820efa23 100644
--- a/doc/translations/pt.po
+++ b/doc/translations/pt.po
@@ -4086,8 +4086,12 @@ msgstr ""
#: doc/classes/@GlobalScope.xml
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]."
+"pick in a list specified via a hint string.\n"
+"The hint string is a comma separated list of names such as [code]\"Hello,"
+"Something,Else\"[/code]. For integer and float properties, the first name in "
+"the list has value 0, the next 1, and so on. Explicit values can also be "
+"specified by appending [code]:integer[/code] to the name, e.g. [code]\"Zero,"
+"One,Three:3,Four,Six:6\"[/code]."
msgstr ""
#: doc/classes/@GlobalScope.xml
@@ -6009,9 +6013,13 @@ msgid "[AnimationTree] node resource that contains many blend type nodes."
msgstr ""
#: doc/classes/AnimationNodeBlendTree.xml
+#, fuzzy
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."
+"This node may contain a sub-tree of any other blend type nodes, such as "
+"[AnimationNodeTransition], [AnimationNodeBlend2], [AnimationNodeBlend3], "
+"[AnimationNodeOneShot], etc. This is one of the most commonly used roots.\n"
+"An [AnimationNodeOutput] node named [code]output[/code] is created by "
+"default."
msgstr ""
"Este nó pode conter uma \"subárvore\" de qualquer outro tipo de nó de "
"mistura, como mix, blend2, blend3, one shot, etc. Esta é uma das raízes mais "
@@ -11137,8 +11145,15 @@ msgstr ""
#: doc/classes/BakedLightmap.xml
msgid ""
-"When enabled, the lightmapper will merge the textures for all meshes into a "
-"single large layered texture. Not supported in GLES2."
+"If [code]true[/code], the lightmapper will merge the textures for all meshes "
+"into one or several large layered textures. If [code]false[/code], every "
+"mesh will get its own lightmap texture, which is less efficient.\n"
+"[b]Note:[/b] Atlas lightmap rendering is only supported in GLES3, [i]not[/i] "
+"GLES2. Non-atlas lightmap rendering is supported by both GLES3 and GLES2. If "
+"[member ProjectSettings.rendering/quality/driver/fallback_to_gles2] is "
+"[code]true[/code], consider baking lightmaps with [member atlas_generate] "
+"set to [code]false[/code] so that the resulting lightmap is visible in both "
+"GLES3 and GLES2."
msgstr ""
#: doc/classes/BakedLightmap.xml
@@ -13294,14 +13309,15 @@ msgstr ""
#: doc/classes/CanvasItem.xml
msgid ""
-"If [code]enable[/code] is [code]true[/code], children will be updated with "
-"local transform data."
+"If [code]enable[/code] is [code]true[/code], this node will receive "
+"[constant NOTIFICATION_LOCAL_TRANSFORM_CHANGED] when its local transform "
+"changes."
msgstr ""
#: doc/classes/CanvasItem.xml
msgid ""
-"If [code]enable[/code] is [code]true[/code], children will be updated with "
-"global transform data."
+"If [code]enable[/code] is [code]true[/code], this node will receive "
+"[constant NOTIFICATION_TRANSFORM_CHANGED] when its global transform changes."
msgstr ""
#: doc/classes/CanvasItem.xml
@@ -13419,9 +13435,14 @@ msgstr ""
#: doc/classes/CanvasItem.xml
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]."
+"The [CanvasItem]'s global transform has changed. This notification is only "
+"received if enabled by [method set_notify_transform]."
+msgstr ""
+
+#: doc/classes/CanvasItem.xml
+msgid ""
+"The [CanvasItem]'s local transform has changed. This notification is only "
+"received if enabled by [method set_notify_local_transform]."
msgstr ""
#: doc/classes/CanvasItem.xml
@@ -20426,9 +20447,8 @@ msgid ""
"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"
+"OpenType ([code].otf[/code]), Web Open Font Format 1 ([code].woff[/code]), "
+"and Web Open Font Format 2 ([code].woff2[/code]).\n"
"[codeblock]\n"
"var dynamic_font = DynamicFont.new()\n"
"dynamic_font.font_data = load(\"res://BarlowCondensed-Bold.ttf\")\n"
@@ -23225,12 +23245,13 @@ msgstr ""
#: doc/classes/EditorVCSInterface.xml
msgid ""
"Helper function to create a commit [Dictionary] item. [code]msg[/code] is "
-"the commit message of the commit. [code]author[/code] is a human-readable "
-"string containing the author's details, e.g. the email and name configured "
-"in the VCS. [code]id[/code] is the identifier of the commit, in whichever "
-"format your VCS may provide an identifier to commits. [code]date[/code] is "
-"directly added to the commit item and displayed in the editor, and hence, it "
-"shall be a well-formatted, human-readable date string."
+"the commit message of the commit. [code]author[/code] is a single human-"
+"readable string containing all the author's details, e.g. the email and name "
+"configured in the VCS. [code]id[/code] is the identifier of the commit, in "
+"whichever format your VCS may provide an identifier to commits. "
+"[code]unix_timestamp[/code] is the UTC Unix timestamp of when the commit was "
+"created. [code]offset_minutes[/code] is the timezone offset in minutes, "
+"recorded from the system timezone where the commit was created."
msgstr ""
#: doc/classes/EditorVCSInterface.xml
@@ -29818,9 +29839,9 @@ 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."
+"If [code]exact[/code] is [code]false[/code], it ignores additional input "
+"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the "
+"direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/Input.xml
@@ -29830,9 +29851,9 @@ msgid ""
"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."
+"If [code]exact[/code] is [code]false[/code], it ignores additional input "
+"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the "
+"direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/Input.xml
@@ -29965,9 +29986,9 @@ msgid ""
"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.\n"
+"If [code]exact[/code] is [code]false[/code], it ignores additional input "
+"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the "
+"direction for [InputEventJoypadMotion] events.\n"
"[b]Note:[/b] Due to keyboard ghosting, [method is_action_just_pressed] may "
"return [code]false[/code] even if one of the action's keys is pressed. See "
"[url=$DOCS_URL/tutorials/inputs/input_examples.html#keyboard-events]Input "
@@ -29979,9 +30000,9 @@ 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."
+"If [code]exact[/code] is [code]false[/code], it ignores additional input "
+"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the "
+"direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/Input.xml
@@ -29990,9 +30011,9 @@ msgid ""
"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.\n"
+"If [code]exact[/code] is [code]false[/code], it ignores additional input "
+"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the "
+"direction for [InputEventJoypadMotion] events.\n"
"[b]Note:[/b] Due to keyboard ghosting, [method is_action_pressed] may return "
"[code]false[/code] even if one of the action's keys is pressed. See "
"[url=$DOCS_URL/tutorials/inputs/input_examples.html#keyboard-events]Input "
@@ -30342,18 +30363,18 @@ msgstr ""
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."
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/InputEvent.xml
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."
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/InputEvent.xml
@@ -30362,9 +30383,9 @@ msgid ""
"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.\n"
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events.\n"
"[b]Note:[/b] Due to keyboard ghosting, [method is_action_pressed] may return "
"[code]false[/code] even if one of the action's keys is pressed. See "
"[url=$DOCS_URL/tutorials/inputs/input_examples.html#keyboard-events]Input "
@@ -30376,9 +30397,9 @@ 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."
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/InputEvent.xml
@@ -30409,9 +30430,9 @@ msgid ""
"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."
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/InputEvent.xml
@@ -30945,9 +30966,9 @@ msgid ""
"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."
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/InputMap.xml
@@ -34784,6 +34805,39 @@ msgid "Returns the number of surface materials."
msgstr ""
#: doc/classes/MeshInstance.xml
+msgid ""
+"Returns [code]true[/code] if this [MeshInstance] can be merged with the "
+"specified [code]other_mesh_instance[/code], using the [method MeshInstance."
+"merge_meshes] function.\n"
+"In order to be mergeable, properties of the [MeshInstance] must match, and "
+"each surface must match, in terms of material, attributes and vertex format."
+msgstr ""
+
+#: doc/classes/MeshInstance.xml
+msgid ""
+"This function can merge together the data from several source "
+"[MeshInstance]s into a single destination [MeshInstance] (the MeshInstance "
+"the function is called from). This is primarily useful for improving "
+"performance by reducing the number of drawcalls and [Node]s.\n"
+"Merging should only be attempted for simple meshes that do not contain "
+"animation.\n"
+"The final vertices can either be returned in global space, or in local space "
+"relative to the destination [MeshInstance] global transform (the destination "
+"Node must be inside the [SceneTree] for local space to work).\n"
+"The function will make a final check for compatibility between the "
+"[MeshInstance]s by default, this should always be used unless you have "
+"previously checked for compatibility using [method MeshInstance."
+"is_mergeable_with]. If the compatibility check is omitted and the meshes are "
+"merged, you may see rendering errors.\n"
+"[b]Note:[/b] The requirements for similarity between meshes are quite "
+"stringent. They can be checked using the [method MeshInstance."
+"is_mergeable_with] function prior to calling [method MeshInstance."
+"merge_meshes].\n"
+"Also note that any initial data in the destination [MeshInstance] data will "
+"be discarded."
+msgstr ""
+
+#: doc/classes/MeshInstance.xml
msgid "Sets the [Material] for a surface of the [Mesh] resource."
msgstr ""
@@ -37259,12 +37313,12 @@ msgid ""
"[/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."
+"typically relevant for [url=$DOCS_URL/tutorials/misc/"
+"running_code_in_the_editor.html]tool scripts[/url] and [url=$DOCS_URL/"
+"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
@@ -37971,7 +38025,15 @@ msgid ""
"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."
+"subinstancing.\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=$DOCS_URL/tutorials/misc/"
+"running_code_in_the_editor.html]tool scripts[/url] and [url=$DOCS_URL/"
+"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
@@ -38567,7 +38629,13 @@ msgid ""
msgstr ""
#: doc/classes/Object.xml
-msgid "Called when the object is initialized."
+msgid ""
+"Called when the object is initialized in memory. Can be defined to take in "
+"parameters, that are passed in when constructing.\n"
+"[b]Note:[/b] If [method _init] is defined with required parameters, then "
+"explicit construction is the only valid means of creating an Object of the "
+"class. If any other means (such as [method PackedScene.instance]) is used, "
+"then initialization will fail."
msgstr ""
#: doc/classes/Object.xml
@@ -43816,7 +43884,10 @@ msgid ""
msgstr ""
#: doc/classes/PhysicsServer.xml
-msgid "Returns an Info defined by the [enum ProcessInfo] input given."
+msgid ""
+"Returns information about the current state of the 3D physics engine. See "
+"[enum ProcessInfo] for a list of available states. Only implemented for "
+"Godot Physics."
msgstr ""
#: doc/classes/PhysicsServer.xml
@@ -56765,8 +56836,8 @@ msgid ""
"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"
+"print(some_array[0]) # Prints \"One,Two,Three\"\n"
+"print(some_array[1]) # Prints \"Four\"\n"
"[/codeblock]"
msgstr ""
diff --git a/doc/translations/pt_BR.po b/doc/translations/pt_BR.po
index b324ecff06..ef73551d07 100644
--- a/doc/translations/pt_BR.po
+++ b/doc/translations/pt_BR.po
@@ -4294,12 +4294,13 @@ msgstr ""
#: doc/classes/@GlobalScope.xml
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]."
+"pick in a list specified via a hint string.\n"
+"The hint string is a comma separated list of names such as [code]\"Hello,"
+"Something,Else\"[/code]. For integer and float properties, the first name in "
+"the list has value 0, the next 1, and so on. Explicit values can also be "
+"specified by appending [code]:integer[/code] to the name, e.g. [code]\"Zero,"
+"One,Three:3,Four,Six:6\"[/code]."
msgstr ""
-"Indica que uma propriedade integer, float ou string é um valor enumerado "
-"para ser selecionado em uma lista especificada por uma string de dica como "
-"[code]\"Hello,Something,Else\"[/code]."
#: doc/classes/@GlobalScope.xml
msgid ""
@@ -6267,9 +6268,13 @@ msgid "[AnimationTree] node resource that contains many blend type nodes."
msgstr ""
#: doc/classes/AnimationNodeBlendTree.xml
+#, fuzzy
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."
+"This node may contain a sub-tree of any other blend type nodes, such as "
+"[AnimationNodeTransition], [AnimationNodeBlend2], [AnimationNodeBlend3], "
+"[AnimationNodeOneShot], etc. This is one of the most commonly used roots.\n"
+"An [AnimationNodeOutput] node named [code]output[/code] is created by "
+"default."
msgstr ""
"Este nó pode conter uma \"subárvore\" de qualquer outro tipo de nó de "
"mistura, como mix, blend2, blend3, one shot, etc. Esta é uma das raízes mais "
@@ -11412,8 +11417,15 @@ msgstr ""
#: doc/classes/BakedLightmap.xml
msgid ""
-"When enabled, the lightmapper will merge the textures for all meshes into a "
-"single large layered texture. Not supported in GLES2."
+"If [code]true[/code], the lightmapper will merge the textures for all meshes "
+"into one or several large layered textures. If [code]false[/code], every "
+"mesh will get its own lightmap texture, which is less efficient.\n"
+"[b]Note:[/b] Atlas lightmap rendering is only supported in GLES3, [i]not[/i] "
+"GLES2. Non-atlas lightmap rendering is supported by both GLES3 and GLES2. If "
+"[member ProjectSettings.rendering/quality/driver/fallback_to_gles2] is "
+"[code]true[/code], consider baking lightmaps with [member atlas_generate] "
+"set to [code]false[/code] so that the resulting lightmap is visible in both "
+"GLES3 and GLES2."
msgstr ""
#: doc/classes/BakedLightmap.xml
@@ -13577,14 +13589,15 @@ msgstr ""
#: doc/classes/CanvasItem.xml
msgid ""
-"If [code]enable[/code] is [code]true[/code], children will be updated with "
-"local transform data."
+"If [code]enable[/code] is [code]true[/code], this node will receive "
+"[constant NOTIFICATION_LOCAL_TRANSFORM_CHANGED] when its local transform "
+"changes."
msgstr ""
#: doc/classes/CanvasItem.xml
msgid ""
-"If [code]enable[/code] is [code]true[/code], children will be updated with "
-"global transform data."
+"If [code]enable[/code] is [code]true[/code], this node will receive "
+"[constant NOTIFICATION_TRANSFORM_CHANGED] when its global transform changes."
msgstr ""
#: doc/classes/CanvasItem.xml
@@ -13702,9 +13715,14 @@ msgstr ""
#: doc/classes/CanvasItem.xml
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]."
+"The [CanvasItem]'s global transform has changed. This notification is only "
+"received if enabled by [method set_notify_transform]."
+msgstr ""
+
+#: doc/classes/CanvasItem.xml
+msgid ""
+"The [CanvasItem]'s local transform has changed. This notification is only "
+"received if enabled by [method set_notify_local_transform]."
msgstr ""
#: doc/classes/CanvasItem.xml
@@ -20748,9 +20766,8 @@ msgid ""
"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"
+"OpenType ([code].otf[/code]), Web Open Font Format 1 ([code].woff[/code]), "
+"and Web Open Font Format 2 ([code].woff2[/code]).\n"
"[codeblock]\n"
"var dynamic_font = DynamicFont.new()\n"
"dynamic_font.font_data = load(\"res://BarlowCondensed-Bold.ttf\")\n"
@@ -23549,12 +23566,13 @@ msgstr ""
#: doc/classes/EditorVCSInterface.xml
msgid ""
"Helper function to create a commit [Dictionary] item. [code]msg[/code] is "
-"the commit message of the commit. [code]author[/code] is a human-readable "
-"string containing the author's details, e.g. the email and name configured "
-"in the VCS. [code]id[/code] is the identifier of the commit, in whichever "
-"format your VCS may provide an identifier to commits. [code]date[/code] is "
-"directly added to the commit item and displayed in the editor, and hence, it "
-"shall be a well-formatted, human-readable date string."
+"the commit message of the commit. [code]author[/code] is a single human-"
+"readable string containing all the author's details, e.g. the email and name "
+"configured in the VCS. [code]id[/code] is the identifier of the commit, in "
+"whichever format your VCS may provide an identifier to commits. "
+"[code]unix_timestamp[/code] is the UTC Unix timestamp of when the commit was "
+"created. [code]offset_minutes[/code] is the timezone offset in minutes, "
+"recorded from the system timezone where the commit was created."
msgstr ""
#: doc/classes/EditorVCSInterface.xml
@@ -30176,9 +30194,9 @@ 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."
+"If [code]exact[/code] is [code]false[/code], it ignores additional input "
+"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the "
+"direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/Input.xml
@@ -30188,9 +30206,9 @@ msgid ""
"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."
+"If [code]exact[/code] is [code]false[/code], it ignores additional input "
+"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the "
+"direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/Input.xml
@@ -30323,9 +30341,9 @@ msgid ""
"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.\n"
+"If [code]exact[/code] is [code]false[/code], it ignores additional input "
+"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the "
+"direction for [InputEventJoypadMotion] events.\n"
"[b]Note:[/b] Due to keyboard ghosting, [method is_action_just_pressed] may "
"return [code]false[/code] even if one of the action's keys is pressed. See "
"[url=$DOCS_URL/tutorials/inputs/input_examples.html#keyboard-events]Input "
@@ -30337,9 +30355,9 @@ 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."
+"If [code]exact[/code] is [code]false[/code], it ignores additional input "
+"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the "
+"direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/Input.xml
@@ -30348,9 +30366,9 @@ msgid ""
"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.\n"
+"If [code]exact[/code] is [code]false[/code], it ignores additional input "
+"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the "
+"direction for [InputEventJoypadMotion] events.\n"
"[b]Note:[/b] Due to keyboard ghosting, [method is_action_pressed] may return "
"[code]false[/code] even if one of the action's keys is pressed. See "
"[url=$DOCS_URL/tutorials/inputs/input_examples.html#keyboard-events]Input "
@@ -30701,18 +30719,18 @@ msgstr ""
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."
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/InputEvent.xml
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."
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/InputEvent.xml
@@ -30721,9 +30739,9 @@ msgid ""
"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.\n"
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events.\n"
"[b]Note:[/b] Due to keyboard ghosting, [method is_action_pressed] may return "
"[code]false[/code] even if one of the action's keys is pressed. See "
"[url=$DOCS_URL/tutorials/inputs/input_examples.html#keyboard-events]Input "
@@ -30735,9 +30753,9 @@ 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."
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/InputEvent.xml
@@ -30768,9 +30786,9 @@ msgid ""
"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."
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/InputEvent.xml
@@ -31305,9 +31323,9 @@ msgid ""
"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."
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/InputMap.xml
@@ -35154,6 +35172,39 @@ msgid "Returns the number of surface materials."
msgstr ""
#: doc/classes/MeshInstance.xml
+msgid ""
+"Returns [code]true[/code] if this [MeshInstance] can be merged with the "
+"specified [code]other_mesh_instance[/code], using the [method MeshInstance."
+"merge_meshes] function.\n"
+"In order to be mergeable, properties of the [MeshInstance] must match, and "
+"each surface must match, in terms of material, attributes and vertex format."
+msgstr ""
+
+#: doc/classes/MeshInstance.xml
+msgid ""
+"This function can merge together the data from several source "
+"[MeshInstance]s into a single destination [MeshInstance] (the MeshInstance "
+"the function is called from). This is primarily useful for improving "
+"performance by reducing the number of drawcalls and [Node]s.\n"
+"Merging should only be attempted for simple meshes that do not contain "
+"animation.\n"
+"The final vertices can either be returned in global space, or in local space "
+"relative to the destination [MeshInstance] global transform (the destination "
+"Node must be inside the [SceneTree] for local space to work).\n"
+"The function will make a final check for compatibility between the "
+"[MeshInstance]s by default, this should always be used unless you have "
+"previously checked for compatibility using [method MeshInstance."
+"is_mergeable_with]. If the compatibility check is omitted and the meshes are "
+"merged, you may see rendering errors.\n"
+"[b]Note:[/b] The requirements for similarity between meshes are quite "
+"stringent. They can be checked using the [method MeshInstance."
+"is_mergeable_with] function prior to calling [method MeshInstance."
+"merge_meshes].\n"
+"Also note that any initial data in the destination [MeshInstance] data will "
+"be discarded."
+msgstr ""
+
+#: doc/classes/MeshInstance.xml
msgid "Sets the [Material] for a surface of the [Mesh] resource."
msgstr ""
@@ -37649,12 +37700,12 @@ msgid ""
"[/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."
+"typically relevant for [url=$DOCS_URL/tutorials/misc/"
+"running_code_in_the_editor.html]tool scripts[/url] and [url=$DOCS_URL/"
+"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
@@ -38361,7 +38412,15 @@ msgid ""
"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."
+"subinstancing.\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=$DOCS_URL/tutorials/misc/"
+"running_code_in_the_editor.html]tool scripts[/url] and [url=$DOCS_URL/"
+"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
@@ -38957,7 +39016,13 @@ msgid ""
msgstr ""
#: doc/classes/Object.xml
-msgid "Called when the object is initialized."
+msgid ""
+"Called when the object is initialized in memory. Can be defined to take in "
+"parameters, that are passed in when constructing.\n"
+"[b]Note:[/b] If [method _init] is defined with required parameters, then "
+"explicit construction is the only valid means of creating an Object of the "
+"class. If any other means (such as [method PackedScene.instance]) is used, "
+"then initialization will fail."
msgstr ""
#: doc/classes/Object.xml
@@ -44245,7 +44310,10 @@ msgid ""
msgstr ""
#: doc/classes/PhysicsServer.xml
-msgid "Returns an Info defined by the [enum ProcessInfo] input given."
+msgid ""
+"Returns information about the current state of the 3D physics engine. See "
+"[enum ProcessInfo] for a list of available states. Only implemented for "
+"Godot Physics."
msgstr ""
#: doc/classes/PhysicsServer.xml
@@ -57219,8 +57287,8 @@ msgid ""
"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"
+"print(some_array[0]) # Prints \"One,Two,Three\"\n"
+"print(some_array[1]) # Prints \"Four\"\n"
"[/codeblock]"
msgstr ""
diff --git a/doc/translations/ro.po b/doc/translations/ro.po
index 5d80a1018e..fe5de66cec 100644
--- a/doc/translations/ro.po
+++ b/doc/translations/ro.po
@@ -3341,8 +3341,12 @@ msgstr ""
#: doc/classes/@GlobalScope.xml
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]."
+"pick in a list specified via a hint string.\n"
+"The hint string is a comma separated list of names such as [code]\"Hello,"
+"Something,Else\"[/code]. For integer and float properties, the first name in "
+"the list has value 0, the next 1, and so on. Explicit values can also be "
+"specified by appending [code]:integer[/code] to the name, e.g. [code]\"Zero,"
+"One,Three:3,Four,Six:6\"[/code]."
msgstr ""
#: doc/classes/@GlobalScope.xml
@@ -5254,8 +5258,11 @@ msgstr ""
#: doc/classes/AnimationNodeBlendTree.xml
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."
+"This node may contain a sub-tree of any other blend type nodes, such as "
+"[AnimationNodeTransition], [AnimationNodeBlend2], [AnimationNodeBlend3], "
+"[AnimationNodeOneShot], etc. This is one of the most commonly used roots.\n"
+"An [AnimationNodeOutput] node named [code]output[/code] is created by "
+"default."
msgstr ""
#: doc/classes/AnimationNodeBlendTree.xml
@@ -10374,8 +10381,15 @@ msgstr ""
#: doc/classes/BakedLightmap.xml
msgid ""
-"When enabled, the lightmapper will merge the textures for all meshes into a "
-"single large layered texture. Not supported in GLES2."
+"If [code]true[/code], the lightmapper will merge the textures for all meshes "
+"into one or several large layered textures. If [code]false[/code], every "
+"mesh will get its own lightmap texture, which is less efficient.\n"
+"[b]Note:[/b] Atlas lightmap rendering is only supported in GLES3, [i]not[/i] "
+"GLES2. Non-atlas lightmap rendering is supported by both GLES3 and GLES2. If "
+"[member ProjectSettings.rendering/quality/driver/fallback_to_gles2] is "
+"[code]true[/code], consider baking lightmaps with [member atlas_generate] "
+"set to [code]false[/code] so that the resulting lightmap is visible in both "
+"GLES3 and GLES2."
msgstr ""
#: doc/classes/BakedLightmap.xml
@@ -12523,14 +12537,15 @@ msgstr ""
#: doc/classes/CanvasItem.xml
msgid ""
-"If [code]enable[/code] is [code]true[/code], children will be updated with "
-"local transform data."
+"If [code]enable[/code] is [code]true[/code], this node will receive "
+"[constant NOTIFICATION_LOCAL_TRANSFORM_CHANGED] when its local transform "
+"changes."
msgstr ""
#: doc/classes/CanvasItem.xml
msgid ""
-"If [code]enable[/code] is [code]true[/code], children will be updated with "
-"global transform data."
+"If [code]enable[/code] is [code]true[/code], this node will receive "
+"[constant NOTIFICATION_TRANSFORM_CHANGED] when its global transform changes."
msgstr ""
#: doc/classes/CanvasItem.xml
@@ -12644,9 +12659,14 @@ msgstr ""
#: doc/classes/CanvasItem.xml
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]."
+"The [CanvasItem]'s global transform has changed. This notification is only "
+"received if enabled by [method set_notify_transform]."
+msgstr ""
+
+#: doc/classes/CanvasItem.xml
+msgid ""
+"The [CanvasItem]'s local transform has changed. This notification is only "
+"received if enabled by [method set_notify_local_transform]."
msgstr ""
#: doc/classes/CanvasItem.xml
@@ -19608,9 +19628,8 @@ msgid ""
"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"
+"OpenType ([code].otf[/code]), Web Open Font Format 1 ([code].woff[/code]), "
+"and Web Open Font Format 2 ([code].woff2[/code]).\n"
"[codeblock]\n"
"var dynamic_font = DynamicFont.new()\n"
"dynamic_font.font_data = load(\"res://BarlowCondensed-Bold.ttf\")\n"
@@ -22400,12 +22419,13 @@ msgstr ""
#: doc/classes/EditorVCSInterface.xml
msgid ""
"Helper function to create a commit [Dictionary] item. [code]msg[/code] is "
-"the commit message of the commit. [code]author[/code] is a human-readable "
-"string containing the author's details, e.g. the email and name configured "
-"in the VCS. [code]id[/code] is the identifier of the commit, in whichever "
-"format your VCS may provide an identifier to commits. [code]date[/code] is "
-"directly added to the commit item and displayed in the editor, and hence, it "
-"shall be a well-formatted, human-readable date string."
+"the commit message of the commit. [code]author[/code] is a single human-"
+"readable string containing all the author's details, e.g. the email and name "
+"configured in the VCS. [code]id[/code] is the identifier of the commit, in "
+"whichever format your VCS may provide an identifier to commits. "
+"[code]unix_timestamp[/code] is the UTC Unix timestamp of when the commit was "
+"created. [code]offset_minutes[/code] is the timezone offset in minutes, "
+"recorded from the system timezone where the commit was created."
msgstr ""
#: doc/classes/EditorVCSInterface.xml
@@ -28992,9 +29012,9 @@ 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."
+"If [code]exact[/code] is [code]false[/code], it ignores additional input "
+"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the "
+"direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/Input.xml
@@ -29004,9 +29024,9 @@ msgid ""
"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."
+"If [code]exact[/code] is [code]false[/code], it ignores additional input "
+"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the "
+"direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/Input.xml
@@ -29139,9 +29159,9 @@ msgid ""
"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.\n"
+"If [code]exact[/code] is [code]false[/code], it ignores additional input "
+"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the "
+"direction for [InputEventJoypadMotion] events.\n"
"[b]Note:[/b] Due to keyboard ghosting, [method is_action_just_pressed] may "
"return [code]false[/code] even if one of the action's keys is pressed. See "
"[url=$DOCS_URL/tutorials/inputs/input_examples.html#keyboard-events]Input "
@@ -29153,9 +29173,9 @@ 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."
+"If [code]exact[/code] is [code]false[/code], it ignores additional input "
+"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the "
+"direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/Input.xml
@@ -29164,9 +29184,9 @@ msgid ""
"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.\n"
+"If [code]exact[/code] is [code]false[/code], it ignores additional input "
+"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the "
+"direction for [InputEventJoypadMotion] events.\n"
"[b]Note:[/b] Due to keyboard ghosting, [method is_action_pressed] may return "
"[code]false[/code] even if one of the action's keys is pressed. See "
"[url=$DOCS_URL/tutorials/inputs/input_examples.html#keyboard-events]Input "
@@ -29516,18 +29536,18 @@ msgstr ""
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."
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/InputEvent.xml
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."
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/InputEvent.xml
@@ -29536,9 +29556,9 @@ msgid ""
"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.\n"
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events.\n"
"[b]Note:[/b] Due to keyboard ghosting, [method is_action_pressed] may return "
"[code]false[/code] even if one of the action's keys is pressed. See "
"[url=$DOCS_URL/tutorials/inputs/input_examples.html#keyboard-events]Input "
@@ -29550,9 +29570,9 @@ 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."
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/InputEvent.xml
@@ -29583,9 +29603,9 @@ msgid ""
"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."
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/InputEvent.xml
@@ -30115,9 +30135,9 @@ msgid ""
"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."
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/InputMap.xml
@@ -33953,6 +33973,39 @@ msgid "Returns the number of surface materials."
msgstr ""
#: doc/classes/MeshInstance.xml
+msgid ""
+"Returns [code]true[/code] if this [MeshInstance] can be merged with the "
+"specified [code]other_mesh_instance[/code], using the [method MeshInstance."
+"merge_meshes] function.\n"
+"In order to be mergeable, properties of the [MeshInstance] must match, and "
+"each surface must match, in terms of material, attributes and vertex format."
+msgstr ""
+
+#: doc/classes/MeshInstance.xml
+msgid ""
+"This function can merge together the data from several source "
+"[MeshInstance]s into a single destination [MeshInstance] (the MeshInstance "
+"the function is called from). This is primarily useful for improving "
+"performance by reducing the number of drawcalls and [Node]s.\n"
+"Merging should only be attempted for simple meshes that do not contain "
+"animation.\n"
+"The final vertices can either be returned in global space, or in local space "
+"relative to the destination [MeshInstance] global transform (the destination "
+"Node must be inside the [SceneTree] for local space to work).\n"
+"The function will make a final check for compatibility between the "
+"[MeshInstance]s by default, this should always be used unless you have "
+"previously checked for compatibility using [method MeshInstance."
+"is_mergeable_with]. If the compatibility check is omitted and the meshes are "
+"merged, you may see rendering errors.\n"
+"[b]Note:[/b] The requirements for similarity between meshes are quite "
+"stringent. They can be checked using the [method MeshInstance."
+"is_mergeable_with] function prior to calling [method MeshInstance."
+"merge_meshes].\n"
+"Also note that any initial data in the destination [MeshInstance] data will "
+"be discarded."
+msgstr ""
+
+#: doc/classes/MeshInstance.xml
msgid "Sets the [Material] for a surface of the [Mesh] resource."
msgstr ""
@@ -36405,12 +36458,12 @@ msgid ""
"[/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."
+"typically relevant for [url=$DOCS_URL/tutorials/misc/"
+"running_code_in_the_editor.html]tool scripts[/url] and [url=$DOCS_URL/"
+"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
@@ -37117,7 +37170,15 @@ msgid ""
"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."
+"subinstancing.\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=$DOCS_URL/tutorials/misc/"
+"running_code_in_the_editor.html]tool scripts[/url] and [url=$DOCS_URL/"
+"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
@@ -37713,7 +37774,13 @@ msgid ""
msgstr ""
#: doc/classes/Object.xml
-msgid "Called when the object is initialized."
+msgid ""
+"Called when the object is initialized in memory. Can be defined to take in "
+"parameters, that are passed in when constructing.\n"
+"[b]Note:[/b] If [method _init] is defined with required parameters, then "
+"explicit construction is the only valid means of creating an Object of the "
+"class. If any other means (such as [method PackedScene.instance]) is used, "
+"then initialization will fail."
msgstr ""
#: doc/classes/Object.xml
@@ -42957,7 +43024,10 @@ msgid ""
msgstr ""
#: doc/classes/PhysicsServer.xml
-msgid "Returns an Info defined by the [enum ProcessInfo] input given."
+msgid ""
+"Returns information about the current state of the 3D physics engine. See "
+"[enum ProcessInfo] for a list of available states. Only implemented for "
+"Godot Physics."
msgstr ""
#: doc/classes/PhysicsServer.xml
@@ -55881,8 +55951,8 @@ msgid ""
"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"
+"print(some_array[0]) # Prints \"One,Two,Three\"\n"
+"print(some_array[1]) # Prints \"Four\"\n"
"[/codeblock]"
msgstr ""
diff --git a/doc/translations/ru.po b/doc/translations/ru.po
index 57001546f3..3205ad2cd3 100644
--- a/doc/translations/ru.po
+++ b/doc/translations/ru.po
@@ -4401,12 +4401,13 @@ msgstr ""
#: doc/classes/@GlobalScope.xml
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]."
+"pick in a list specified via a hint string.\n"
+"The hint string is a comma separated list of names such as [code]\"Hello,"
+"Something,Else\"[/code]. For integer and float properties, the first name in "
+"the list has value 0, the next 1, and so on. Explicit values can also be "
+"specified by appending [code]:integer[/code] to the name, e.g. [code]\"Zero,"
+"One,Three:3,Four,Six:6\"[/code]."
msgstr ""
-"Указывает, что целое, вещеÑтвенное или Ñтроковое ÑвойÑтво ÑвлÑетÑÑ "
-"перечиÑлимым значением Ð´Ð»Ñ Ð²Ñ‹Ð±Ð¾Ñ€Ð° из ÑпиÑка, заданного Ñтрокой подÑказки, "
-"такой как [code]\"Hello,Something,Else\"[/code]."
#: doc/classes/@GlobalScope.xml
msgid ""
@@ -6661,8 +6662,11 @@ msgstr ""
#: doc/classes/AnimationNodeBlendTree.xml
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."
+"This node may contain a sub-tree of any other blend type nodes, such as "
+"[AnimationNodeTransition], [AnimationNodeBlend2], [AnimationNodeBlend3], "
+"[AnimationNodeOneShot], etc. This is one of the most commonly used roots.\n"
+"An [AnimationNodeOutput] node named [code]output[/code] is created by "
+"default."
msgstr ""
#: doc/classes/AnimationNodeBlendTree.xml
@@ -11990,8 +11994,15 @@ msgstr ""
#: doc/classes/BakedLightmap.xml
msgid ""
-"When enabled, the lightmapper will merge the textures for all meshes into a "
-"single large layered texture. Not supported in GLES2."
+"If [code]true[/code], the lightmapper will merge the textures for all meshes "
+"into one or several large layered textures. If [code]false[/code], every "
+"mesh will get its own lightmap texture, which is less efficient.\n"
+"[b]Note:[/b] Atlas lightmap rendering is only supported in GLES3, [i]not[/i] "
+"GLES2. Non-atlas lightmap rendering is supported by both GLES3 and GLES2. If "
+"[member ProjectSettings.rendering/quality/driver/fallback_to_gles2] is "
+"[code]true[/code], consider baking lightmaps with [member atlas_generate] "
+"set to [code]false[/code] so that the resulting lightmap is visible in both "
+"GLES3 and GLES2."
msgstr ""
#: doc/classes/BakedLightmap.xml
@@ -14164,14 +14175,15 @@ msgstr ""
#: doc/classes/CanvasItem.xml
msgid ""
-"If [code]enable[/code] is [code]true[/code], children will be updated with "
-"local transform data."
+"If [code]enable[/code] is [code]true[/code], this node will receive "
+"[constant NOTIFICATION_LOCAL_TRANSFORM_CHANGED] when its local transform "
+"changes."
msgstr ""
#: doc/classes/CanvasItem.xml
msgid ""
-"If [code]enable[/code] is [code]true[/code], children will be updated with "
-"global transform data."
+"If [code]enable[/code] is [code]true[/code], this node will receive "
+"[constant NOTIFICATION_TRANSFORM_CHANGED] when its global transform changes."
msgstr ""
#: doc/classes/CanvasItem.xml
@@ -14285,9 +14297,14 @@ msgstr ""
#: doc/classes/CanvasItem.xml
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]."
+"The [CanvasItem]'s global transform has changed. This notification is only "
+"received if enabled by [method set_notify_transform]."
+msgstr ""
+
+#: doc/classes/CanvasItem.xml
+msgid ""
+"The [CanvasItem]'s local transform has changed. This notification is only "
+"received if enabled by [method set_notify_local_transform]."
msgstr ""
#: doc/classes/CanvasItem.xml
@@ -21386,9 +21403,8 @@ msgid ""
"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"
+"OpenType ([code].otf[/code]), Web Open Font Format 1 ([code].woff[/code]), "
+"and Web Open Font Format 2 ([code].woff2[/code]).\n"
"[codeblock]\n"
"var dynamic_font = DynamicFont.new()\n"
"dynamic_font.font_data = load(\"res://BarlowCondensed-Bold.ttf\")\n"
@@ -24195,12 +24211,13 @@ msgstr ""
#: doc/classes/EditorVCSInterface.xml
msgid ""
"Helper function to create a commit [Dictionary] item. [code]msg[/code] is "
-"the commit message of the commit. [code]author[/code] is a human-readable "
-"string containing the author's details, e.g. the email and name configured "
-"in the VCS. [code]id[/code] is the identifier of the commit, in whichever "
-"format your VCS may provide an identifier to commits. [code]date[/code] is "
-"directly added to the commit item and displayed in the editor, and hence, it "
-"shall be a well-formatted, human-readable date string."
+"the commit message of the commit. [code]author[/code] is a single human-"
+"readable string containing all the author's details, e.g. the email and name "
+"configured in the VCS. [code]id[/code] is the identifier of the commit, in "
+"whichever format your VCS may provide an identifier to commits. "
+"[code]unix_timestamp[/code] is the UTC Unix timestamp of when the commit was "
+"created. [code]offset_minutes[/code] is the timezone offset in minutes, "
+"recorded from the system timezone where the commit was created."
msgstr ""
#: doc/classes/EditorVCSInterface.xml
@@ -30817,9 +30834,9 @@ 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."
+"If [code]exact[/code] is [code]false[/code], it ignores additional input "
+"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the "
+"direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/Input.xml
@@ -30829,9 +30846,9 @@ msgid ""
"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."
+"If [code]exact[/code] is [code]false[/code], it ignores additional input "
+"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the "
+"direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/Input.xml
@@ -30964,9 +30981,9 @@ msgid ""
"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.\n"
+"If [code]exact[/code] is [code]false[/code], it ignores additional input "
+"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the "
+"direction for [InputEventJoypadMotion] events.\n"
"[b]Note:[/b] Due to keyboard ghosting, [method is_action_just_pressed] may "
"return [code]false[/code] even if one of the action's keys is pressed. See "
"[url=$DOCS_URL/tutorials/inputs/input_examples.html#keyboard-events]Input "
@@ -30978,9 +30995,9 @@ 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."
+"If [code]exact[/code] is [code]false[/code], it ignores additional input "
+"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the "
+"direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/Input.xml
@@ -30989,9 +31006,9 @@ msgid ""
"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.\n"
+"If [code]exact[/code] is [code]false[/code], it ignores additional input "
+"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the "
+"direction for [InputEventJoypadMotion] events.\n"
"[b]Note:[/b] Due to keyboard ghosting, [method is_action_pressed] may return "
"[code]false[/code] even if one of the action's keys is pressed. See "
"[url=$DOCS_URL/tutorials/inputs/input_examples.html#keyboard-events]Input "
@@ -31341,18 +31358,18 @@ msgstr ""
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."
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/InputEvent.xml
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."
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/InputEvent.xml
@@ -31361,9 +31378,9 @@ msgid ""
"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.\n"
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events.\n"
"[b]Note:[/b] Due to keyboard ghosting, [method is_action_pressed] may return "
"[code]false[/code] even if one of the action's keys is pressed. See "
"[url=$DOCS_URL/tutorials/inputs/input_examples.html#keyboard-events]Input "
@@ -31375,9 +31392,9 @@ 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."
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/InputEvent.xml
@@ -31408,9 +31425,9 @@ msgid ""
"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."
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/InputEvent.xml
@@ -31941,9 +31958,9 @@ msgid ""
"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."
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/InputMap.xml
@@ -35812,6 +35829,39 @@ msgid "Returns the number of surface materials."
msgstr ""
#: doc/classes/MeshInstance.xml
+msgid ""
+"Returns [code]true[/code] if this [MeshInstance] can be merged with the "
+"specified [code]other_mesh_instance[/code], using the [method MeshInstance."
+"merge_meshes] function.\n"
+"In order to be mergeable, properties of the [MeshInstance] must match, and "
+"each surface must match, in terms of material, attributes and vertex format."
+msgstr ""
+
+#: doc/classes/MeshInstance.xml
+msgid ""
+"This function can merge together the data from several source "
+"[MeshInstance]s into a single destination [MeshInstance] (the MeshInstance "
+"the function is called from). This is primarily useful for improving "
+"performance by reducing the number of drawcalls and [Node]s.\n"
+"Merging should only be attempted for simple meshes that do not contain "
+"animation.\n"
+"The final vertices can either be returned in global space, or in local space "
+"relative to the destination [MeshInstance] global transform (the destination "
+"Node must be inside the [SceneTree] for local space to work).\n"
+"The function will make a final check for compatibility between the "
+"[MeshInstance]s by default, this should always be used unless you have "
+"previously checked for compatibility using [method MeshInstance."
+"is_mergeable_with]. If the compatibility check is omitted and the meshes are "
+"merged, you may see rendering errors.\n"
+"[b]Note:[/b] The requirements for similarity between meshes are quite "
+"stringent. They can be checked using the [method MeshInstance."
+"is_mergeable_with] function prior to calling [method MeshInstance."
+"merge_meshes].\n"
+"Also note that any initial data in the destination [MeshInstance] data will "
+"be discarded."
+msgstr ""
+
+#: doc/classes/MeshInstance.xml
msgid "Sets the [Material] for a surface of the [Mesh] resource."
msgstr ""
@@ -38306,12 +38356,12 @@ msgid ""
"[/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."
+"typically relevant for [url=$DOCS_URL/tutorials/misc/"
+"running_code_in_the_editor.html]tool scripts[/url] and [url=$DOCS_URL/"
+"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
@@ -39021,7 +39071,15 @@ msgid ""
"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."
+"subinstancing.\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=$DOCS_URL/tutorials/misc/"
+"running_code_in_the_editor.html]tool scripts[/url] and [url=$DOCS_URL/"
+"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
@@ -39619,7 +39677,13 @@ msgid ""
msgstr ""
#: doc/classes/Object.xml
-msgid "Called when the object is initialized."
+msgid ""
+"Called when the object is initialized in memory. Can be defined to take in "
+"parameters, that are passed in when constructing.\n"
+"[b]Note:[/b] If [method _init] is defined with required parameters, then "
+"explicit construction is the only valid means of creating an Object of the "
+"class. If any other means (such as [method PackedScene.instance]) is used, "
+"then initialization will fail."
msgstr ""
#: doc/classes/Object.xml
@@ -44914,7 +44978,10 @@ msgid ""
msgstr ""
#: doc/classes/PhysicsServer.xml
-msgid "Returns an Info defined by the [enum ProcessInfo] input given."
+msgid ""
+"Returns information about the current state of the 3D physics engine. See "
+"[enum ProcessInfo] for a list of available states. Only implemented for "
+"Godot Physics."
msgstr ""
#: doc/classes/PhysicsServer.xml
@@ -57978,8 +58045,8 @@ msgid ""
"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"
+"print(some_array[0]) # Prints \"One,Two,Three\"\n"
+"print(some_array[1]) # Prints \"Four\"\n"
"[/codeblock]"
msgstr ""
diff --git a/doc/translations/sk.po b/doc/translations/sk.po
index 607fa7197e..92f360ecd2 100644
--- a/doc/translations/sk.po
+++ b/doc/translations/sk.po
@@ -3324,8 +3324,12 @@ msgstr ""
#: doc/classes/@GlobalScope.xml
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]."
+"pick in a list specified via a hint string.\n"
+"The hint string is a comma separated list of names such as [code]\"Hello,"
+"Something,Else\"[/code]. For integer and float properties, the first name in "
+"the list has value 0, the next 1, and so on. Explicit values can also be "
+"specified by appending [code]:integer[/code] to the name, e.g. [code]\"Zero,"
+"One,Three:3,Four,Six:6\"[/code]."
msgstr ""
#: doc/classes/@GlobalScope.xml
@@ -5237,8 +5241,11 @@ msgstr ""
#: doc/classes/AnimationNodeBlendTree.xml
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."
+"This node may contain a sub-tree of any other blend type nodes, such as "
+"[AnimationNodeTransition], [AnimationNodeBlend2], [AnimationNodeBlend3], "
+"[AnimationNodeOneShot], etc. This is one of the most commonly used roots.\n"
+"An [AnimationNodeOutput] node named [code]output[/code] is created by "
+"default."
msgstr ""
#: doc/classes/AnimationNodeBlendTree.xml
@@ -10357,8 +10364,15 @@ msgstr ""
#: doc/classes/BakedLightmap.xml
msgid ""
-"When enabled, the lightmapper will merge the textures for all meshes into a "
-"single large layered texture. Not supported in GLES2."
+"If [code]true[/code], the lightmapper will merge the textures for all meshes "
+"into one or several large layered textures. If [code]false[/code], every "
+"mesh will get its own lightmap texture, which is less efficient.\n"
+"[b]Note:[/b] Atlas lightmap rendering is only supported in GLES3, [i]not[/i] "
+"GLES2. Non-atlas lightmap rendering is supported by both GLES3 and GLES2. If "
+"[member ProjectSettings.rendering/quality/driver/fallback_to_gles2] is "
+"[code]true[/code], consider baking lightmaps with [member atlas_generate] "
+"set to [code]false[/code] so that the resulting lightmap is visible in both "
+"GLES3 and GLES2."
msgstr ""
#: doc/classes/BakedLightmap.xml
@@ -12506,14 +12520,15 @@ msgstr ""
#: doc/classes/CanvasItem.xml
msgid ""
-"If [code]enable[/code] is [code]true[/code], children will be updated with "
-"local transform data."
+"If [code]enable[/code] is [code]true[/code], this node will receive "
+"[constant NOTIFICATION_LOCAL_TRANSFORM_CHANGED] when its local transform "
+"changes."
msgstr ""
#: doc/classes/CanvasItem.xml
msgid ""
-"If [code]enable[/code] is [code]true[/code], children will be updated with "
-"global transform data."
+"If [code]enable[/code] is [code]true[/code], this node will receive "
+"[constant NOTIFICATION_TRANSFORM_CHANGED] when its global transform changes."
msgstr ""
#: doc/classes/CanvasItem.xml
@@ -12627,9 +12642,14 @@ msgstr ""
#: doc/classes/CanvasItem.xml
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]."
+"The [CanvasItem]'s global transform has changed. This notification is only "
+"received if enabled by [method set_notify_transform]."
+msgstr ""
+
+#: doc/classes/CanvasItem.xml
+msgid ""
+"The [CanvasItem]'s local transform has changed. This notification is only "
+"received if enabled by [method set_notify_local_transform]."
msgstr ""
#: doc/classes/CanvasItem.xml
@@ -19591,9 +19611,8 @@ msgid ""
"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"
+"OpenType ([code].otf[/code]), Web Open Font Format 1 ([code].woff[/code]), "
+"and Web Open Font Format 2 ([code].woff2[/code]).\n"
"[codeblock]\n"
"var dynamic_font = DynamicFont.new()\n"
"dynamic_font.font_data = load(\"res://BarlowCondensed-Bold.ttf\")\n"
@@ -22383,12 +22402,13 @@ msgstr ""
#: doc/classes/EditorVCSInterface.xml
msgid ""
"Helper function to create a commit [Dictionary] item. [code]msg[/code] is "
-"the commit message of the commit. [code]author[/code] is a human-readable "
-"string containing the author's details, e.g. the email and name configured "
-"in the VCS. [code]id[/code] is the identifier of the commit, in whichever "
-"format your VCS may provide an identifier to commits. [code]date[/code] is "
-"directly added to the commit item and displayed in the editor, and hence, it "
-"shall be a well-formatted, human-readable date string."
+"the commit message of the commit. [code]author[/code] is a single human-"
+"readable string containing all the author's details, e.g. the email and name "
+"configured in the VCS. [code]id[/code] is the identifier of the commit, in "
+"whichever format your VCS may provide an identifier to commits. "
+"[code]unix_timestamp[/code] is the UTC Unix timestamp of when the commit was "
+"created. [code]offset_minutes[/code] is the timezone offset in minutes, "
+"recorded from the system timezone where the commit was created."
msgstr ""
#: doc/classes/EditorVCSInterface.xml
@@ -28975,9 +28995,9 @@ 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."
+"If [code]exact[/code] is [code]false[/code], it ignores additional input "
+"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the "
+"direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/Input.xml
@@ -28987,9 +29007,9 @@ msgid ""
"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."
+"If [code]exact[/code] is [code]false[/code], it ignores additional input "
+"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the "
+"direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/Input.xml
@@ -29122,9 +29142,9 @@ msgid ""
"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.\n"
+"If [code]exact[/code] is [code]false[/code], it ignores additional input "
+"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the "
+"direction for [InputEventJoypadMotion] events.\n"
"[b]Note:[/b] Due to keyboard ghosting, [method is_action_just_pressed] may "
"return [code]false[/code] even if one of the action's keys is pressed. See "
"[url=$DOCS_URL/tutorials/inputs/input_examples.html#keyboard-events]Input "
@@ -29136,9 +29156,9 @@ 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."
+"If [code]exact[/code] is [code]false[/code], it ignores additional input "
+"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the "
+"direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/Input.xml
@@ -29147,9 +29167,9 @@ msgid ""
"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.\n"
+"If [code]exact[/code] is [code]false[/code], it ignores additional input "
+"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the "
+"direction for [InputEventJoypadMotion] events.\n"
"[b]Note:[/b] Due to keyboard ghosting, [method is_action_pressed] may return "
"[code]false[/code] even if one of the action's keys is pressed. See "
"[url=$DOCS_URL/tutorials/inputs/input_examples.html#keyboard-events]Input "
@@ -29499,18 +29519,18 @@ msgstr ""
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."
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/InputEvent.xml
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."
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/InputEvent.xml
@@ -29519,9 +29539,9 @@ msgid ""
"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.\n"
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events.\n"
"[b]Note:[/b] Due to keyboard ghosting, [method is_action_pressed] may return "
"[code]false[/code] even if one of the action's keys is pressed. See "
"[url=$DOCS_URL/tutorials/inputs/input_examples.html#keyboard-events]Input "
@@ -29533,9 +29553,9 @@ 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."
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/InputEvent.xml
@@ -29566,9 +29586,9 @@ msgid ""
"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."
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/InputEvent.xml
@@ -30098,9 +30118,9 @@ msgid ""
"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."
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/InputMap.xml
@@ -33936,6 +33956,39 @@ msgid "Returns the number of surface materials."
msgstr ""
#: doc/classes/MeshInstance.xml
+msgid ""
+"Returns [code]true[/code] if this [MeshInstance] can be merged with the "
+"specified [code]other_mesh_instance[/code], using the [method MeshInstance."
+"merge_meshes] function.\n"
+"In order to be mergeable, properties of the [MeshInstance] must match, and "
+"each surface must match, in terms of material, attributes and vertex format."
+msgstr ""
+
+#: doc/classes/MeshInstance.xml
+msgid ""
+"This function can merge together the data from several source "
+"[MeshInstance]s into a single destination [MeshInstance] (the MeshInstance "
+"the function is called from). This is primarily useful for improving "
+"performance by reducing the number of drawcalls and [Node]s.\n"
+"Merging should only be attempted for simple meshes that do not contain "
+"animation.\n"
+"The final vertices can either be returned in global space, or in local space "
+"relative to the destination [MeshInstance] global transform (the destination "
+"Node must be inside the [SceneTree] for local space to work).\n"
+"The function will make a final check for compatibility between the "
+"[MeshInstance]s by default, this should always be used unless you have "
+"previously checked for compatibility using [method MeshInstance."
+"is_mergeable_with]. If the compatibility check is omitted and the meshes are "
+"merged, you may see rendering errors.\n"
+"[b]Note:[/b] The requirements for similarity between meshes are quite "
+"stringent. They can be checked using the [method MeshInstance."
+"is_mergeable_with] function prior to calling [method MeshInstance."
+"merge_meshes].\n"
+"Also note that any initial data in the destination [MeshInstance] data will "
+"be discarded."
+msgstr ""
+
+#: doc/classes/MeshInstance.xml
msgid "Sets the [Material] for a surface of the [Mesh] resource."
msgstr ""
@@ -36388,12 +36441,12 @@ msgid ""
"[/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."
+"typically relevant for [url=$DOCS_URL/tutorials/misc/"
+"running_code_in_the_editor.html]tool scripts[/url] and [url=$DOCS_URL/"
+"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
@@ -37100,7 +37153,15 @@ msgid ""
"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."
+"subinstancing.\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=$DOCS_URL/tutorials/misc/"
+"running_code_in_the_editor.html]tool scripts[/url] and [url=$DOCS_URL/"
+"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
@@ -37696,7 +37757,13 @@ msgid ""
msgstr ""
#: doc/classes/Object.xml
-msgid "Called when the object is initialized."
+msgid ""
+"Called when the object is initialized in memory. Can be defined to take in "
+"parameters, that are passed in when constructing.\n"
+"[b]Note:[/b] If [method _init] is defined with required parameters, then "
+"explicit construction is the only valid means of creating an Object of the "
+"class. If any other means (such as [method PackedScene.instance]) is used, "
+"then initialization will fail."
msgstr ""
#: doc/classes/Object.xml
@@ -42940,7 +43007,10 @@ msgid ""
msgstr ""
#: doc/classes/PhysicsServer.xml
-msgid "Returns an Info defined by the [enum ProcessInfo] input given."
+msgid ""
+"Returns information about the current state of the 3D physics engine. See "
+"[enum ProcessInfo] for a list of available states. Only implemented for "
+"Godot Physics."
msgstr ""
#: doc/classes/PhysicsServer.xml
@@ -55864,8 +55934,8 @@ msgid ""
"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"
+"print(some_array[0]) # Prints \"One,Two,Three\"\n"
+"print(some_array[1]) # Prints \"Four\"\n"
"[/codeblock]"
msgstr ""
diff --git a/doc/translations/sr_Cyrl.po b/doc/translations/sr_Cyrl.po
index 620a2f5b47..731e2c7bef 100644
--- a/doc/translations/sr_Cyrl.po
+++ b/doc/translations/sr_Cyrl.po
@@ -3335,8 +3335,12 @@ msgstr ""
#: doc/classes/@GlobalScope.xml
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]."
+"pick in a list specified via a hint string.\n"
+"The hint string is a comma separated list of names such as [code]\"Hello,"
+"Something,Else\"[/code]. For integer and float properties, the first name in "
+"the list has value 0, the next 1, and so on. Explicit values can also be "
+"specified by appending [code]:integer[/code] to the name, e.g. [code]\"Zero,"
+"One,Three:3,Four,Six:6\"[/code]."
msgstr ""
#: doc/classes/@GlobalScope.xml
@@ -5248,8 +5252,11 @@ msgstr ""
#: doc/classes/AnimationNodeBlendTree.xml
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."
+"This node may contain a sub-tree of any other blend type nodes, such as "
+"[AnimationNodeTransition], [AnimationNodeBlend2], [AnimationNodeBlend3], "
+"[AnimationNodeOneShot], etc. This is one of the most commonly used roots.\n"
+"An [AnimationNodeOutput] node named [code]output[/code] is created by "
+"default."
msgstr ""
#: doc/classes/AnimationNodeBlendTree.xml
@@ -10368,8 +10375,15 @@ msgstr ""
#: doc/classes/BakedLightmap.xml
msgid ""
-"When enabled, the lightmapper will merge the textures for all meshes into a "
-"single large layered texture. Not supported in GLES2."
+"If [code]true[/code], the lightmapper will merge the textures for all meshes "
+"into one or several large layered textures. If [code]false[/code], every "
+"mesh will get its own lightmap texture, which is less efficient.\n"
+"[b]Note:[/b] Atlas lightmap rendering is only supported in GLES3, [i]not[/i] "
+"GLES2. Non-atlas lightmap rendering is supported by both GLES3 and GLES2. If "
+"[member ProjectSettings.rendering/quality/driver/fallback_to_gles2] is "
+"[code]true[/code], consider baking lightmaps with [member atlas_generate] "
+"set to [code]false[/code] so that the resulting lightmap is visible in both "
+"GLES3 and GLES2."
msgstr ""
#: doc/classes/BakedLightmap.xml
@@ -12517,14 +12531,15 @@ msgstr ""
#: doc/classes/CanvasItem.xml
msgid ""
-"If [code]enable[/code] is [code]true[/code], children will be updated with "
-"local transform data."
+"If [code]enable[/code] is [code]true[/code], this node will receive "
+"[constant NOTIFICATION_LOCAL_TRANSFORM_CHANGED] when its local transform "
+"changes."
msgstr ""
#: doc/classes/CanvasItem.xml
msgid ""
-"If [code]enable[/code] is [code]true[/code], children will be updated with "
-"global transform data."
+"If [code]enable[/code] is [code]true[/code], this node will receive "
+"[constant NOTIFICATION_TRANSFORM_CHANGED] when its global transform changes."
msgstr ""
#: doc/classes/CanvasItem.xml
@@ -12638,9 +12653,14 @@ msgstr ""
#: doc/classes/CanvasItem.xml
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]."
+"The [CanvasItem]'s global transform has changed. This notification is only "
+"received if enabled by [method set_notify_transform]."
+msgstr ""
+
+#: doc/classes/CanvasItem.xml
+msgid ""
+"The [CanvasItem]'s local transform has changed. This notification is only "
+"received if enabled by [method set_notify_local_transform]."
msgstr ""
#: doc/classes/CanvasItem.xml
@@ -19602,9 +19622,8 @@ msgid ""
"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"
+"OpenType ([code].otf[/code]), Web Open Font Format 1 ([code].woff[/code]), "
+"and Web Open Font Format 2 ([code].woff2[/code]).\n"
"[codeblock]\n"
"var dynamic_font = DynamicFont.new()\n"
"dynamic_font.font_data = load(\"res://BarlowCondensed-Bold.ttf\")\n"
@@ -22394,12 +22413,13 @@ msgstr ""
#: doc/classes/EditorVCSInterface.xml
msgid ""
"Helper function to create a commit [Dictionary] item. [code]msg[/code] is "
-"the commit message of the commit. [code]author[/code] is a human-readable "
-"string containing the author's details, e.g. the email and name configured "
-"in the VCS. [code]id[/code] is the identifier of the commit, in whichever "
-"format your VCS may provide an identifier to commits. [code]date[/code] is "
-"directly added to the commit item and displayed in the editor, and hence, it "
-"shall be a well-formatted, human-readable date string."
+"the commit message of the commit. [code]author[/code] is a single human-"
+"readable string containing all the author's details, e.g. the email and name "
+"configured in the VCS. [code]id[/code] is the identifier of the commit, in "
+"whichever format your VCS may provide an identifier to commits. "
+"[code]unix_timestamp[/code] is the UTC Unix timestamp of when the commit was "
+"created. [code]offset_minutes[/code] is the timezone offset in minutes, "
+"recorded from the system timezone where the commit was created."
msgstr ""
#: doc/classes/EditorVCSInterface.xml
@@ -28986,9 +29006,9 @@ 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."
+"If [code]exact[/code] is [code]false[/code], it ignores additional input "
+"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the "
+"direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/Input.xml
@@ -28998,9 +29018,9 @@ msgid ""
"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."
+"If [code]exact[/code] is [code]false[/code], it ignores additional input "
+"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the "
+"direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/Input.xml
@@ -29133,9 +29153,9 @@ msgid ""
"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.\n"
+"If [code]exact[/code] is [code]false[/code], it ignores additional input "
+"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the "
+"direction for [InputEventJoypadMotion] events.\n"
"[b]Note:[/b] Due to keyboard ghosting, [method is_action_just_pressed] may "
"return [code]false[/code] even if one of the action's keys is pressed. See "
"[url=$DOCS_URL/tutorials/inputs/input_examples.html#keyboard-events]Input "
@@ -29147,9 +29167,9 @@ 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."
+"If [code]exact[/code] is [code]false[/code], it ignores additional input "
+"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the "
+"direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/Input.xml
@@ -29158,9 +29178,9 @@ msgid ""
"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.\n"
+"If [code]exact[/code] is [code]false[/code], it ignores additional input "
+"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the "
+"direction for [InputEventJoypadMotion] events.\n"
"[b]Note:[/b] Due to keyboard ghosting, [method is_action_pressed] may return "
"[code]false[/code] even if one of the action's keys is pressed. See "
"[url=$DOCS_URL/tutorials/inputs/input_examples.html#keyboard-events]Input "
@@ -29510,18 +29530,18 @@ msgstr ""
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."
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/InputEvent.xml
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."
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/InputEvent.xml
@@ -29530,9 +29550,9 @@ msgid ""
"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.\n"
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events.\n"
"[b]Note:[/b] Due to keyboard ghosting, [method is_action_pressed] may return "
"[code]false[/code] even if one of the action's keys is pressed. See "
"[url=$DOCS_URL/tutorials/inputs/input_examples.html#keyboard-events]Input "
@@ -29544,9 +29564,9 @@ 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."
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/InputEvent.xml
@@ -29577,9 +29597,9 @@ msgid ""
"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."
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/InputEvent.xml
@@ -30109,9 +30129,9 @@ msgid ""
"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."
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/InputMap.xml
@@ -33947,6 +33967,39 @@ msgid "Returns the number of surface materials."
msgstr ""
#: doc/classes/MeshInstance.xml
+msgid ""
+"Returns [code]true[/code] if this [MeshInstance] can be merged with the "
+"specified [code]other_mesh_instance[/code], using the [method MeshInstance."
+"merge_meshes] function.\n"
+"In order to be mergeable, properties of the [MeshInstance] must match, and "
+"each surface must match, in terms of material, attributes and vertex format."
+msgstr ""
+
+#: doc/classes/MeshInstance.xml
+msgid ""
+"This function can merge together the data from several source "
+"[MeshInstance]s into a single destination [MeshInstance] (the MeshInstance "
+"the function is called from). This is primarily useful for improving "
+"performance by reducing the number of drawcalls and [Node]s.\n"
+"Merging should only be attempted for simple meshes that do not contain "
+"animation.\n"
+"The final vertices can either be returned in global space, or in local space "
+"relative to the destination [MeshInstance] global transform (the destination "
+"Node must be inside the [SceneTree] for local space to work).\n"
+"The function will make a final check for compatibility between the "
+"[MeshInstance]s by default, this should always be used unless you have "
+"previously checked for compatibility using [method MeshInstance."
+"is_mergeable_with]. If the compatibility check is omitted and the meshes are "
+"merged, you may see rendering errors.\n"
+"[b]Note:[/b] The requirements for similarity between meshes are quite "
+"stringent. They can be checked using the [method MeshInstance."
+"is_mergeable_with] function prior to calling [method MeshInstance."
+"merge_meshes].\n"
+"Also note that any initial data in the destination [MeshInstance] data will "
+"be discarded."
+msgstr ""
+
+#: doc/classes/MeshInstance.xml
msgid "Sets the [Material] for a surface of the [Mesh] resource."
msgstr ""
@@ -36399,12 +36452,12 @@ msgid ""
"[/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."
+"typically relevant for [url=$DOCS_URL/tutorials/misc/"
+"running_code_in_the_editor.html]tool scripts[/url] and [url=$DOCS_URL/"
+"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
@@ -37111,7 +37164,15 @@ msgid ""
"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."
+"subinstancing.\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=$DOCS_URL/tutorials/misc/"
+"running_code_in_the_editor.html]tool scripts[/url] and [url=$DOCS_URL/"
+"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
@@ -37707,7 +37768,13 @@ msgid ""
msgstr ""
#: doc/classes/Object.xml
-msgid "Called when the object is initialized."
+msgid ""
+"Called when the object is initialized in memory. Can be defined to take in "
+"parameters, that are passed in when constructing.\n"
+"[b]Note:[/b] If [method _init] is defined with required parameters, then "
+"explicit construction is the only valid means of creating an Object of the "
+"class. If any other means (such as [method PackedScene.instance]) is used, "
+"then initialization will fail."
msgstr ""
#: doc/classes/Object.xml
@@ -42951,7 +43018,10 @@ msgid ""
msgstr ""
#: doc/classes/PhysicsServer.xml
-msgid "Returns an Info defined by the [enum ProcessInfo] input given."
+msgid ""
+"Returns information about the current state of the 3D physics engine. See "
+"[enum ProcessInfo] for a list of available states. Only implemented for "
+"Godot Physics."
msgstr ""
#: doc/classes/PhysicsServer.xml
@@ -55875,8 +55945,8 @@ msgid ""
"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"
+"print(some_array[0]) # Prints \"One,Two,Three\"\n"
+"print(some_array[1]) # Prints \"Four\"\n"
"[/codeblock]"
msgstr ""
diff --git a/doc/translations/sv.po b/doc/translations/sv.po
index f6e68b0231..fb7be00495 100644
--- a/doc/translations/sv.po
+++ b/doc/translations/sv.po
@@ -3324,8 +3324,12 @@ msgstr ""
#: doc/classes/@GlobalScope.xml
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]."
+"pick in a list specified via a hint string.\n"
+"The hint string is a comma separated list of names such as [code]\"Hello,"
+"Something,Else\"[/code]. For integer and float properties, the first name in "
+"the list has value 0, the next 1, and so on. Explicit values can also be "
+"specified by appending [code]:integer[/code] to the name, e.g. [code]\"Zero,"
+"One,Three:3,Four,Six:6\"[/code]."
msgstr ""
#: doc/classes/@GlobalScope.xml
@@ -5237,8 +5241,11 @@ msgstr ""
#: doc/classes/AnimationNodeBlendTree.xml
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."
+"This node may contain a sub-tree of any other blend type nodes, such as "
+"[AnimationNodeTransition], [AnimationNodeBlend2], [AnimationNodeBlend3], "
+"[AnimationNodeOneShot], etc. This is one of the most commonly used roots.\n"
+"An [AnimationNodeOutput] node named [code]output[/code] is created by "
+"default."
msgstr ""
#: doc/classes/AnimationNodeBlendTree.xml
@@ -10357,8 +10364,15 @@ msgstr ""
#: doc/classes/BakedLightmap.xml
msgid ""
-"When enabled, the lightmapper will merge the textures for all meshes into a "
-"single large layered texture. Not supported in GLES2."
+"If [code]true[/code], the lightmapper will merge the textures for all meshes "
+"into one or several large layered textures. If [code]false[/code], every "
+"mesh will get its own lightmap texture, which is less efficient.\n"
+"[b]Note:[/b] Atlas lightmap rendering is only supported in GLES3, [i]not[/i] "
+"GLES2. Non-atlas lightmap rendering is supported by both GLES3 and GLES2. If "
+"[member ProjectSettings.rendering/quality/driver/fallback_to_gles2] is "
+"[code]true[/code], consider baking lightmaps with [member atlas_generate] "
+"set to [code]false[/code] so that the resulting lightmap is visible in both "
+"GLES3 and GLES2."
msgstr ""
#: doc/classes/BakedLightmap.xml
@@ -12506,14 +12520,15 @@ msgstr ""
#: doc/classes/CanvasItem.xml
msgid ""
-"If [code]enable[/code] is [code]true[/code], children will be updated with "
-"local transform data."
+"If [code]enable[/code] is [code]true[/code], this node will receive "
+"[constant NOTIFICATION_LOCAL_TRANSFORM_CHANGED] when its local transform "
+"changes."
msgstr ""
#: doc/classes/CanvasItem.xml
msgid ""
-"If [code]enable[/code] is [code]true[/code], children will be updated with "
-"global transform data."
+"If [code]enable[/code] is [code]true[/code], this node will receive "
+"[constant NOTIFICATION_TRANSFORM_CHANGED] when its global transform changes."
msgstr ""
#: doc/classes/CanvasItem.xml
@@ -12627,9 +12642,14 @@ msgstr ""
#: doc/classes/CanvasItem.xml
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]."
+"The [CanvasItem]'s global transform has changed. This notification is only "
+"received if enabled by [method set_notify_transform]."
+msgstr ""
+
+#: doc/classes/CanvasItem.xml
+msgid ""
+"The [CanvasItem]'s local transform has changed. This notification is only "
+"received if enabled by [method set_notify_local_transform]."
msgstr ""
#: doc/classes/CanvasItem.xml
@@ -19591,9 +19611,8 @@ msgid ""
"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"
+"OpenType ([code].otf[/code]), Web Open Font Format 1 ([code].woff[/code]), "
+"and Web Open Font Format 2 ([code].woff2[/code]).\n"
"[codeblock]\n"
"var dynamic_font = DynamicFont.new()\n"
"dynamic_font.font_data = load(\"res://BarlowCondensed-Bold.ttf\")\n"
@@ -22383,12 +22402,13 @@ msgstr ""
#: doc/classes/EditorVCSInterface.xml
msgid ""
"Helper function to create a commit [Dictionary] item. [code]msg[/code] is "
-"the commit message of the commit. [code]author[/code] is a human-readable "
-"string containing the author's details, e.g. the email and name configured "
-"in the VCS. [code]id[/code] is the identifier of the commit, in whichever "
-"format your VCS may provide an identifier to commits. [code]date[/code] is "
-"directly added to the commit item and displayed in the editor, and hence, it "
-"shall be a well-formatted, human-readable date string."
+"the commit message of the commit. [code]author[/code] is a single human-"
+"readable string containing all the author's details, e.g. the email and name "
+"configured in the VCS. [code]id[/code] is the identifier of the commit, in "
+"whichever format your VCS may provide an identifier to commits. "
+"[code]unix_timestamp[/code] is the UTC Unix timestamp of when the commit was "
+"created. [code]offset_minutes[/code] is the timezone offset in minutes, "
+"recorded from the system timezone where the commit was created."
msgstr ""
#: doc/classes/EditorVCSInterface.xml
@@ -28972,9 +28992,9 @@ 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."
+"If [code]exact[/code] is [code]false[/code], it ignores additional input "
+"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the "
+"direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/Input.xml
@@ -28984,9 +29004,9 @@ msgid ""
"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."
+"If [code]exact[/code] is [code]false[/code], it ignores additional input "
+"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the "
+"direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/Input.xml
@@ -29119,9 +29139,9 @@ msgid ""
"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.\n"
+"If [code]exact[/code] is [code]false[/code], it ignores additional input "
+"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the "
+"direction for [InputEventJoypadMotion] events.\n"
"[b]Note:[/b] Due to keyboard ghosting, [method is_action_just_pressed] may "
"return [code]false[/code] even if one of the action's keys is pressed. See "
"[url=$DOCS_URL/tutorials/inputs/input_examples.html#keyboard-events]Input "
@@ -29133,9 +29153,9 @@ 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."
+"If [code]exact[/code] is [code]false[/code], it ignores additional input "
+"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the "
+"direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/Input.xml
@@ -29144,9 +29164,9 @@ msgid ""
"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.\n"
+"If [code]exact[/code] is [code]false[/code], it ignores additional input "
+"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the "
+"direction for [InputEventJoypadMotion] events.\n"
"[b]Note:[/b] Due to keyboard ghosting, [method is_action_pressed] may return "
"[code]false[/code] even if one of the action's keys is pressed. See "
"[url=$DOCS_URL/tutorials/inputs/input_examples.html#keyboard-events]Input "
@@ -29496,18 +29516,18 @@ msgstr ""
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."
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/InputEvent.xml
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."
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/InputEvent.xml
@@ -29516,9 +29536,9 @@ msgid ""
"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.\n"
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events.\n"
"[b]Note:[/b] Due to keyboard ghosting, [method is_action_pressed] may return "
"[code]false[/code] even if one of the action's keys is pressed. See "
"[url=$DOCS_URL/tutorials/inputs/input_examples.html#keyboard-events]Input "
@@ -29530,9 +29550,9 @@ 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."
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/InputEvent.xml
@@ -29563,9 +29583,9 @@ msgid ""
"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."
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/InputEvent.xml
@@ -30095,9 +30115,9 @@ msgid ""
"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."
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/InputMap.xml
@@ -33933,6 +33953,39 @@ msgid "Returns the number of surface materials."
msgstr ""
#: doc/classes/MeshInstance.xml
+msgid ""
+"Returns [code]true[/code] if this [MeshInstance] can be merged with the "
+"specified [code]other_mesh_instance[/code], using the [method MeshInstance."
+"merge_meshes] function.\n"
+"In order to be mergeable, properties of the [MeshInstance] must match, and "
+"each surface must match, in terms of material, attributes and vertex format."
+msgstr ""
+
+#: doc/classes/MeshInstance.xml
+msgid ""
+"This function can merge together the data from several source "
+"[MeshInstance]s into a single destination [MeshInstance] (the MeshInstance "
+"the function is called from). This is primarily useful for improving "
+"performance by reducing the number of drawcalls and [Node]s.\n"
+"Merging should only be attempted for simple meshes that do not contain "
+"animation.\n"
+"The final vertices can either be returned in global space, or in local space "
+"relative to the destination [MeshInstance] global transform (the destination "
+"Node must be inside the [SceneTree] for local space to work).\n"
+"The function will make a final check for compatibility between the "
+"[MeshInstance]s by default, this should always be used unless you have "
+"previously checked for compatibility using [method MeshInstance."
+"is_mergeable_with]. If the compatibility check is omitted and the meshes are "
+"merged, you may see rendering errors.\n"
+"[b]Note:[/b] The requirements for similarity between meshes are quite "
+"stringent. They can be checked using the [method MeshInstance."
+"is_mergeable_with] function prior to calling [method MeshInstance."
+"merge_meshes].\n"
+"Also note that any initial data in the destination [MeshInstance] data will "
+"be discarded."
+msgstr ""
+
+#: doc/classes/MeshInstance.xml
msgid "Sets the [Material] for a surface of the [Mesh] resource."
msgstr ""
@@ -36385,12 +36438,12 @@ msgid ""
"[/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."
+"typically relevant for [url=$DOCS_URL/tutorials/misc/"
+"running_code_in_the_editor.html]tool scripts[/url] and [url=$DOCS_URL/"
+"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
@@ -37097,7 +37150,15 @@ msgid ""
"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."
+"subinstancing.\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=$DOCS_URL/tutorials/misc/"
+"running_code_in_the_editor.html]tool scripts[/url] and [url=$DOCS_URL/"
+"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
@@ -37693,7 +37754,13 @@ msgid ""
msgstr ""
#: doc/classes/Object.xml
-msgid "Called when the object is initialized."
+msgid ""
+"Called when the object is initialized in memory. Can be defined to take in "
+"parameters, that are passed in when constructing.\n"
+"[b]Note:[/b] If [method _init] is defined with required parameters, then "
+"explicit construction is the only valid means of creating an Object of the "
+"class. If any other means (such as [method PackedScene.instance]) is used, "
+"then initialization will fail."
msgstr ""
#: doc/classes/Object.xml
@@ -42937,7 +43004,10 @@ msgid ""
msgstr ""
#: doc/classes/PhysicsServer.xml
-msgid "Returns an Info defined by the [enum ProcessInfo] input given."
+msgid ""
+"Returns information about the current state of the 3D physics engine. See "
+"[enum ProcessInfo] for a list of available states. Only implemented for "
+"Godot Physics."
msgstr ""
#: doc/classes/PhysicsServer.xml
@@ -55861,8 +55931,8 @@ msgid ""
"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"
+"print(some_array[0]) # Prints \"One,Two,Three\"\n"
+"print(some_array[1]) # Prints \"Four\"\n"
"[/codeblock]"
msgstr ""
diff --git a/doc/translations/th.po b/doc/translations/th.po
index ca2ce020a6..924f45c368 100644
--- a/doc/translations/th.po
+++ b/doc/translations/th.po
@@ -3417,8 +3417,12 @@ msgstr ""
#: doc/classes/@GlobalScope.xml
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]."
+"pick in a list specified via a hint string.\n"
+"The hint string is a comma separated list of names such as [code]\"Hello,"
+"Something,Else\"[/code]. For integer and float properties, the first name in "
+"the list has value 0, the next 1, and so on. Explicit values can also be "
+"specified by appending [code]:integer[/code] to the name, e.g. [code]\"Zero,"
+"One,Three:3,Four,Six:6\"[/code]."
msgstr ""
#: doc/classes/@GlobalScope.xml
@@ -5339,8 +5343,11 @@ msgstr ""
#: doc/classes/AnimationNodeBlendTree.xml
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."
+"This node may contain a sub-tree of any other blend type nodes, such as "
+"[AnimationNodeTransition], [AnimationNodeBlend2], [AnimationNodeBlend3], "
+"[AnimationNodeOneShot], etc. This is one of the most commonly used roots.\n"
+"An [AnimationNodeOutput] node named [code]output[/code] is created by "
+"default."
msgstr ""
#: doc/classes/AnimationNodeBlendTree.xml
@@ -10462,8 +10469,15 @@ msgstr ""
#: doc/classes/BakedLightmap.xml
msgid ""
-"When enabled, the lightmapper will merge the textures for all meshes into a "
-"single large layered texture. Not supported in GLES2."
+"If [code]true[/code], the lightmapper will merge the textures for all meshes "
+"into one or several large layered textures. If [code]false[/code], every "
+"mesh will get its own lightmap texture, which is less efficient.\n"
+"[b]Note:[/b] Atlas lightmap rendering is only supported in GLES3, [i]not[/i] "
+"GLES2. Non-atlas lightmap rendering is supported by both GLES3 and GLES2. If "
+"[member ProjectSettings.rendering/quality/driver/fallback_to_gles2] is "
+"[code]true[/code], consider baking lightmaps with [member atlas_generate] "
+"set to [code]false[/code] so that the resulting lightmap is visible in both "
+"GLES3 and GLES2."
msgstr ""
#: doc/classes/BakedLightmap.xml
@@ -12613,14 +12627,15 @@ msgstr ""
#: doc/classes/CanvasItem.xml
msgid ""
-"If [code]enable[/code] is [code]true[/code], children will be updated with "
-"local transform data."
+"If [code]enable[/code] is [code]true[/code], this node will receive "
+"[constant NOTIFICATION_LOCAL_TRANSFORM_CHANGED] when its local transform "
+"changes."
msgstr ""
#: doc/classes/CanvasItem.xml
msgid ""
-"If [code]enable[/code] is [code]true[/code], children will be updated with "
-"global transform data."
+"If [code]enable[/code] is [code]true[/code], this node will receive "
+"[constant NOTIFICATION_TRANSFORM_CHANGED] when its global transform changes."
msgstr ""
#: doc/classes/CanvasItem.xml
@@ -12734,9 +12749,14 @@ msgstr ""
#: doc/classes/CanvasItem.xml
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]."
+"The [CanvasItem]'s global transform has changed. This notification is only "
+"received if enabled by [method set_notify_transform]."
+msgstr ""
+
+#: doc/classes/CanvasItem.xml
+msgid ""
+"The [CanvasItem]'s local transform has changed. This notification is only "
+"received if enabled by [method set_notify_local_transform]."
msgstr ""
#: doc/classes/CanvasItem.xml
@@ -19699,9 +19719,8 @@ msgid ""
"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"
+"OpenType ([code].otf[/code]), Web Open Font Format 1 ([code].woff[/code]), "
+"and Web Open Font Format 2 ([code].woff2[/code]).\n"
"[codeblock]\n"
"var dynamic_font = DynamicFont.new()\n"
"dynamic_font.font_data = load(\"res://BarlowCondensed-Bold.ttf\")\n"
@@ -22492,12 +22511,13 @@ msgstr ""
#: doc/classes/EditorVCSInterface.xml
msgid ""
"Helper function to create a commit [Dictionary] item. [code]msg[/code] is "
-"the commit message of the commit. [code]author[/code] is a human-readable "
-"string containing the author's details, e.g. the email and name configured "
-"in the VCS. [code]id[/code] is the identifier of the commit, in whichever "
-"format your VCS may provide an identifier to commits. [code]date[/code] is "
-"directly added to the commit item and displayed in the editor, and hence, it "
-"shall be a well-formatted, human-readable date string."
+"the commit message of the commit. [code]author[/code] is a single human-"
+"readable string containing all the author's details, e.g. the email and name "
+"configured in the VCS. [code]id[/code] is the identifier of the commit, in "
+"whichever format your VCS may provide an identifier to commits. "
+"[code]unix_timestamp[/code] is the UTC Unix timestamp of when the commit was "
+"created. [code]offset_minutes[/code] is the timezone offset in minutes, "
+"recorded from the system timezone where the commit was created."
msgstr ""
#: doc/classes/EditorVCSInterface.xml
@@ -29084,14 +29104,18 @@ msgid ""
msgstr ""
#: doc/classes/Input.xml
+#, fuzzy
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."
+"If [code]exact[/code] is [code]false[/code], it ignores additional input "
+"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the "
+"direction for [InputEventJoypadMotion] events."
msgstr ""
+"ส่งคืนค่าระหว่าง 0 ถึง 1 à¹à¸—น action ที่à¸à¸³à¸«à¸™à¸” ตัวอย่างเช่นในจอยสติ๊à¸à¹ƒà¸™à¹à¸à¸™ "
+"(อะนาล็อà¸à¸«à¸£à¸·à¸­à¸—ริà¸à¹€à¸à¸­à¸£à¹Œ L2, R2) อยู่ห่างจาภdead zone มาà¸à¹€à¸—่าใดค่าà¸à¹‡à¸ˆà¸°à¸¢à¸´à¹ˆà¸‡à¹ƒà¸à¸¥à¹‰à¹€à¸„ียงà¸à¸±à¸š 1 "
+"มาà¸à¸‚ึ้นเท่านั้น ถ้าà¸à¸²à¸£ action ถูà¸à¸ˆà¸±à¸šà¸„ู่à¸à¸±à¸šà¸•ัวควบคุมที่ไม่มีà¹à¸à¸™à¹€à¸›à¹‡à¸™à¹à¸›à¹‰à¸™à¸žà¸´à¸¡à¸žà¹Œà¸„่าที่ส่งคืนà¸à¹‡à¸ˆà¸°à¹€à¸›à¹‡à¸™ 0 หรือ 1"
#: doc/classes/Input.xml
#, fuzzy
@@ -29101,9 +29125,9 @@ msgid ""
"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."
+"If [code]exact[/code] is [code]false[/code], it ignores additional input "
+"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the "
+"direction for [InputEventJoypadMotion] events."
msgstr ""
"ส่งคืนค่าระหว่าง 0 ถึง 1 à¹à¸—น action ที่à¸à¸³à¸«à¸™à¸” ตัวอย่างเช่นในจอยสติ๊à¸à¹ƒà¸™à¹à¸à¸™ "
"(อะนาล็อà¸à¸«à¸£à¸·à¸­à¸—ริà¸à¹€à¸à¸­à¸£à¹Œ L2, R2) อยู่ห่างจาภdead zone มาà¸à¹€à¸—่าใดค่าà¸à¹‡à¸ˆà¸°à¸¢à¸´à¹ˆà¸‡à¹ƒà¸à¸¥à¹‰à¹€à¸„ียงà¸à¸±à¸š 1 "
@@ -29233,30 +29257,38 @@ msgid ""
msgstr ""
#: doc/classes/Input.xml
+#, fuzzy
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.\n"
+"If [code]exact[/code] is [code]false[/code], it ignores additional input "
+"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the "
+"direction for [InputEventJoypadMotion] events.\n"
"[b]Note:[/b] Due to keyboard ghosting, [method is_action_just_pressed] may "
"return [code]false[/code] even if one of the action's keys is pressed. See "
"[url=$DOCS_URL/tutorials/inputs/input_examples.html#keyboard-events]Input "
"examples[/url] in the documentation for more information."
msgstr ""
+"ส่งคืนค่า [code]true[/code] หาà¸à¸„ุณà¸à¸³à¸¥à¸±à¸‡à¹ƒà¸Šà¹‰à¸à¸²à¸£à¸à¸” action event โปรดทราบไว้ว่าหาภ"
+"action มีà¸à¸²à¸£à¸à¸³à¸«à¸™à¸”ปุ่มไว้หลายปุ่มà¹à¸¥à¸°à¸¡à¸µà¸à¸²à¸£à¸à¸”มาà¸à¸à¸§à¹ˆà¸²à¸«à¸™à¸¶à¹ˆà¸‡à¸›à¸¸à¹ˆà¸¡ à¸à¸²à¸£à¸›à¸¥à¹ˆà¸­à¸¢à¸›à¸¸à¹ˆà¸¡à¸„รั้งเดียวจะเป็นà¸à¸²à¸£à¸¢à¸à¹€à¸¥à¸´à¸ "
+"action นี้à¹à¸¡à¹‰à¸§à¹ˆà¸²à¸ˆà¸°à¸¢à¸±à¸‡à¸à¸”ปุ่มอื่นที่à¸à¸³à¸«à¸™à¸” action นี้อยู่à¸à¹‡à¸•าม"
#: doc/classes/Input.xml
+#, fuzzy
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."
+"If [code]exact[/code] is [code]false[/code], it ignores additional input "
+"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the "
+"direction for [InputEventJoypadMotion] events."
msgstr ""
+"ส่งคืนค่าระหว่าง 0 ถึง 1 à¹à¸—น action ที่à¸à¸³à¸«à¸™à¸” ตัวอย่างเช่นในจอยสติ๊à¸à¹ƒà¸™à¹à¸à¸™ "
+"(อะนาล็อà¸à¸«à¸£à¸·à¸­à¸—ริà¸à¹€à¸à¸­à¸£à¹Œ L2, R2) อยู่ห่างจาภdead zone มาà¸à¹€à¸—่าใดค่าà¸à¹‡à¸ˆà¸°à¸¢à¸´à¹ˆà¸‡à¹ƒà¸à¸¥à¹‰à¹€à¸„ียงà¸à¸±à¸š 1 "
+"มาà¸à¸‚ึ้นเท่านั้น ถ้าà¸à¸²à¸£ action ถูà¸à¸ˆà¸±à¸šà¸„ู่à¸à¸±à¸šà¸•ัวควบคุมที่ไม่มีà¹à¸à¸™à¹€à¸›à¹‡à¸™à¹à¸›à¹‰à¸™à¸žà¸´à¸¡à¸žà¹Œà¸„่าที่ส่งคืนà¸à¹‡à¸ˆà¸°à¹€à¸›à¹‡à¸™ 0 หรือ 1"
#: doc/classes/Input.xml
#, fuzzy
@@ -29265,9 +29297,9 @@ msgid ""
"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.\n"
+"If [code]exact[/code] is [code]false[/code], it ignores additional input "
+"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the "
+"direction for [InputEventJoypadMotion] events.\n"
"[b]Note:[/b] Due to keyboard ghosting, [method is_action_pressed] may return "
"[code]false[/code] even if one of the action's keys is pressed. See "
"[url=$DOCS_URL/tutorials/inputs/input_examples.html#keyboard-events]Input "
@@ -29617,47 +29649,63 @@ msgid "Returns a [String] representation of the event."
msgstr ""
#: doc/classes/InputEvent.xml
+#, fuzzy
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."
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events."
msgstr ""
+"ส่งคืนค่าระหว่าง 0 ถึง 1 à¹à¸—น action ที่à¸à¸³à¸«à¸™à¸” ตัวอย่างเช่นในจอยสติ๊à¸à¹ƒà¸™à¹à¸à¸™ "
+"(อะนาล็อà¸à¸«à¸£à¸·à¸­à¸—ริà¸à¹€à¸à¸­à¸£à¹Œ L2, R2) อยู่ห่างจาภdead zone มาà¸à¹€à¸—่าใดค่าà¸à¹‡à¸ˆà¸°à¸¢à¸´à¹ˆà¸‡à¹ƒà¸à¸¥à¹‰à¹€à¸„ียงà¸à¸±à¸š 1 "
+"มาà¸à¸‚ึ้นเท่านั้น ถ้าà¸à¸²à¸£ action ถูà¸à¸ˆà¸±à¸šà¸„ู่à¸à¸±à¸šà¸•ัวควบคุมที่ไม่มีà¹à¸à¸™à¹€à¸›à¹‡à¸™à¹à¸›à¹‰à¸™à¸žà¸´à¸¡à¸žà¹Œà¸„่าที่ส่งคืนà¸à¹‡à¸ˆà¸°à¹€à¸›à¹‡à¸™ 0 หรือ 1"
#: doc/classes/InputEvent.xml
+#, fuzzy
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."
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events."
msgstr ""
+"ส่งคืนค่าระหว่าง 0 ถึง 1 à¹à¸—น action ที่à¸à¸³à¸«à¸™à¸” ตัวอย่างเช่นในจอยสติ๊à¸à¹ƒà¸™à¹à¸à¸™ "
+"(อะนาล็อà¸à¸«à¸£à¸·à¸­à¸—ริà¸à¹€à¸à¸­à¸£à¹Œ L2, R2) อยู่ห่างจาภdead zone มาà¸à¹€à¸—่าใดค่าà¸à¹‡à¸ˆà¸°à¸¢à¸´à¹ˆà¸‡à¹ƒà¸à¸¥à¹‰à¹€à¸„ียงà¸à¸±à¸š 1 "
+"มาà¸à¸‚ึ้นเท่านั้น ถ้าà¸à¸²à¸£ action ถูà¸à¸ˆà¸±à¸šà¸„ู่à¸à¸±à¸šà¸•ัวควบคุมที่ไม่มีà¹à¸à¸™à¹€à¸›à¹‡à¸™à¹à¸›à¹‰à¸™à¸žà¸´à¸¡à¸žà¹Œà¸„่าที่ส่งคืนà¸à¹‡à¸ˆà¸°à¹€à¸›à¹‡à¸™ 0 หรือ 1"
#: doc/classes/InputEvent.xml
+#, fuzzy
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.\n"
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events.\n"
"[b]Note:[/b] Due to keyboard ghosting, [method is_action_pressed] may return "
"[code]false[/code] even if one of the action's keys is pressed. See "
"[url=$DOCS_URL/tutorials/inputs/input_examples.html#keyboard-events]Input "
"examples[/url] in the documentation for more information."
msgstr ""
+"ส่งคืนค่า [code]true[/code] หาà¸à¸„ุณà¸à¸³à¸¥à¸±à¸‡à¹ƒà¸Šà¹‰à¸à¸²à¸£à¸à¸” action event โปรดทราบไว้ว่าหาภ"
+"action มีà¸à¸²à¸£à¸à¸³à¸«à¸™à¸”ปุ่มไว้หลายปุ่มà¹à¸¥à¸°à¸¡à¸µà¸à¸²à¸£à¸à¸”มาà¸à¸à¸§à¹ˆà¸²à¸«à¸™à¸¶à¹ˆà¸‡à¸›à¸¸à¹ˆà¸¡ à¸à¸²à¸£à¸›à¸¥à¹ˆà¸­à¸¢à¸›à¸¸à¹ˆà¸¡à¸„รั้งเดียวจะเป็นà¸à¸²à¸£à¸¢à¸à¹€à¸¥à¸´à¸ "
+"action นี้à¹à¸¡à¹‰à¸§à¹ˆà¸²à¸ˆà¸°à¸¢à¸±à¸‡à¸à¸”ปุ่มอื่นที่à¸à¸³à¸«à¸™à¸” action นี้อยู่à¸à¹‡à¸•าม"
#: doc/classes/InputEvent.xml
+#, fuzzy
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."
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events."
msgstr ""
+"ส่งคืนค่าระหว่าง 0 ถึง 1 à¹à¸—น action ที่à¸à¸³à¸«à¸™à¸” ตัวอย่างเช่นในจอยสติ๊à¸à¹ƒà¸™à¹à¸à¸™ "
+"(อะนาล็อà¸à¸«à¸£à¸·à¸­à¸—ริà¸à¹€à¸à¸­à¸£à¹Œ L2, R2) อยู่ห่างจาภdead zone มาà¸à¹€à¸—่าใดค่าà¸à¹‡à¸ˆà¸°à¸¢à¸´à¹ˆà¸‡à¹ƒà¸à¸¥à¹‰à¹€à¸„ียงà¸à¸±à¸š 1 "
+"มาà¸à¸‚ึ้นเท่านั้น ถ้าà¸à¸²à¸£ action ถูà¸à¸ˆà¸±à¸šà¸„ู่à¸à¸±à¸šà¸•ัวควบคุมที่ไม่มีà¹à¸à¸™à¹€à¸›à¹‡à¸™à¹à¸›à¹‰à¸™à¸žà¸´à¸¡à¸žà¹Œà¸„่าที่ส่งคืนà¸à¹‡à¸ˆà¸°à¹€à¸›à¹‡à¸™ 0 หรือ 1"
#: doc/classes/InputEvent.xml
msgid ""
@@ -29687,9 +29735,9 @@ msgid ""
"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."
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/InputEvent.xml
@@ -30214,15 +30262,19 @@ msgid "Removes an action from the [InputMap]."
msgstr ""
#: doc/classes/InputMap.xml
+#, 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 "
"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."
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events."
msgstr ""
+"ส่งคืนค่าระหว่าง 0 ถึง 1 à¹à¸—น action ที่à¸à¸³à¸«à¸™à¸” ตัวอย่างเช่นในจอยสติ๊à¸à¹ƒà¸™à¹à¸à¸™ "
+"(อะนาล็อà¸à¸«à¸£à¸·à¸­à¸—ริà¸à¹€à¸à¸­à¸£à¹Œ L2, R2) อยู่ห่างจาภdead zone มาà¸à¹€à¸—่าใดค่าà¸à¹‡à¸ˆà¸°à¸¢à¸´à¹ˆà¸‡à¹ƒà¸à¸¥à¹‰à¹€à¸„ียงà¸à¸±à¸š 1 "
+"มาà¸à¸‚ึ้นเท่านั้น ถ้าà¸à¸²à¸£ action ถูà¸à¸ˆà¸±à¸šà¸„ู่à¸à¸±à¸šà¸•ัวควบคุมที่ไม่มีà¹à¸à¸™à¹€à¸›à¹‡à¸™à¹à¸›à¹‰à¸™à¸žà¸´à¸¡à¸žà¹Œà¸„่าที่ส่งคืนà¸à¹‡à¸ˆà¸°à¹€à¸›à¹‡à¸™ 0 หรือ 1"
#: doc/classes/InputMap.xml
msgid "Returns an array of [InputEvent]s associated with a given action."
@@ -34069,6 +34121,39 @@ msgid "Returns the number of surface materials."
msgstr ""
#: doc/classes/MeshInstance.xml
+msgid ""
+"Returns [code]true[/code] if this [MeshInstance] can be merged with the "
+"specified [code]other_mesh_instance[/code], using the [method MeshInstance."
+"merge_meshes] function.\n"
+"In order to be mergeable, properties of the [MeshInstance] must match, and "
+"each surface must match, in terms of material, attributes and vertex format."
+msgstr ""
+
+#: doc/classes/MeshInstance.xml
+msgid ""
+"This function can merge together the data from several source "
+"[MeshInstance]s into a single destination [MeshInstance] (the MeshInstance "
+"the function is called from). This is primarily useful for improving "
+"performance by reducing the number of drawcalls and [Node]s.\n"
+"Merging should only be attempted for simple meshes that do not contain "
+"animation.\n"
+"The final vertices can either be returned in global space, or in local space "
+"relative to the destination [MeshInstance] global transform (the destination "
+"Node must be inside the [SceneTree] for local space to work).\n"
+"The function will make a final check for compatibility between the "
+"[MeshInstance]s by default, this should always be used unless you have "
+"previously checked for compatibility using [method MeshInstance."
+"is_mergeable_with]. If the compatibility check is omitted and the meshes are "
+"merged, you may see rendering errors.\n"
+"[b]Note:[/b] The requirements for similarity between meshes are quite "
+"stringent. They can be checked using the [method MeshInstance."
+"is_mergeable_with] function prior to calling [method MeshInstance."
+"merge_meshes].\n"
+"Also note that any initial data in the destination [MeshInstance] data will "
+"be discarded."
+msgstr ""
+
+#: doc/classes/MeshInstance.xml
msgid "Sets the [Material] for a surface of the [Mesh] resource."
msgstr ""
@@ -36581,12 +36666,12 @@ msgid ""
"[/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."
+"typically relevant for [url=$DOCS_URL/tutorials/misc/"
+"running_code_in_the_editor.html]tool scripts[/url] and [url=$DOCS_URL/"
+"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
@@ -37293,7 +37378,15 @@ msgid ""
"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."
+"subinstancing.\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=$DOCS_URL/tutorials/misc/"
+"running_code_in_the_editor.html]tool scripts[/url] and [url=$DOCS_URL/"
+"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
@@ -37889,7 +37982,13 @@ msgid ""
msgstr ""
#: doc/classes/Object.xml
-msgid "Called when the object is initialized."
+msgid ""
+"Called when the object is initialized in memory. Can be defined to take in "
+"parameters, that are passed in when constructing.\n"
+"[b]Note:[/b] If [method _init] is defined with required parameters, then "
+"explicit construction is the only valid means of creating an Object of the "
+"class. If any other means (such as [method PackedScene.instance]) is used, "
+"then initialization will fail."
msgstr ""
#: doc/classes/Object.xml
@@ -43141,7 +43240,10 @@ msgid ""
msgstr ""
#: doc/classes/PhysicsServer.xml
-msgid "Returns an Info defined by the [enum ProcessInfo] input given."
+msgid ""
+"Returns information about the current state of the 3D physics engine. See "
+"[enum ProcessInfo] for a list of available states. Only implemented for "
+"Godot Physics."
msgstr ""
#: doc/classes/PhysicsServer.xml
@@ -56076,8 +56178,8 @@ msgid ""
"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"
+"print(some_array[0]) # Prints \"One,Two,Three\"\n"
+"print(some_array[1]) # Prints \"Four\"\n"
"[/codeblock]"
msgstr ""
diff --git a/doc/translations/tl.po b/doc/translations/tl.po
index 385070cca2..961e99a30d 100644
--- a/doc/translations/tl.po
+++ b/doc/translations/tl.po
@@ -3400,8 +3400,12 @@ msgstr ""
#: doc/classes/@GlobalScope.xml
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]."
+"pick in a list specified via a hint string.\n"
+"The hint string is a comma separated list of names such as [code]\"Hello,"
+"Something,Else\"[/code]. For integer and float properties, the first name in "
+"the list has value 0, the next 1, and so on. Explicit values can also be "
+"specified by appending [code]:integer[/code] to the name, e.g. [code]\"Zero,"
+"One,Three:3,Four,Six:6\"[/code]."
msgstr ""
#: doc/classes/@GlobalScope.xml
@@ -5313,8 +5317,11 @@ msgstr ""
#: doc/classes/AnimationNodeBlendTree.xml
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."
+"This node may contain a sub-tree of any other blend type nodes, such as "
+"[AnimationNodeTransition], [AnimationNodeBlend2], [AnimationNodeBlend3], "
+"[AnimationNodeOneShot], etc. This is one of the most commonly used roots.\n"
+"An [AnimationNodeOutput] node named [code]output[/code] is created by "
+"default."
msgstr ""
#: doc/classes/AnimationNodeBlendTree.xml
@@ -10437,8 +10444,15 @@ msgstr ""
#: doc/classes/BakedLightmap.xml
msgid ""
-"When enabled, the lightmapper will merge the textures for all meshes into a "
-"single large layered texture. Not supported in GLES2."
+"If [code]true[/code], the lightmapper will merge the textures for all meshes "
+"into one or several large layered textures. If [code]false[/code], every "
+"mesh will get its own lightmap texture, which is less efficient.\n"
+"[b]Note:[/b] Atlas lightmap rendering is only supported in GLES3, [i]not[/i] "
+"GLES2. Non-atlas lightmap rendering is supported by both GLES3 and GLES2. If "
+"[member ProjectSettings.rendering/quality/driver/fallback_to_gles2] is "
+"[code]true[/code], consider baking lightmaps with [member atlas_generate] "
+"set to [code]false[/code] so that the resulting lightmap is visible in both "
+"GLES3 and GLES2."
msgstr ""
#: doc/classes/BakedLightmap.xml
@@ -12589,14 +12603,15 @@ msgstr ""
#: doc/classes/CanvasItem.xml
msgid ""
-"If [code]enable[/code] is [code]true[/code], children will be updated with "
-"local transform data."
+"If [code]enable[/code] is [code]true[/code], this node will receive "
+"[constant NOTIFICATION_LOCAL_TRANSFORM_CHANGED] when its local transform "
+"changes."
msgstr ""
#: doc/classes/CanvasItem.xml
msgid ""
-"If [code]enable[/code] is [code]true[/code], children will be updated with "
-"global transform data."
+"If [code]enable[/code] is [code]true[/code], this node will receive "
+"[constant NOTIFICATION_TRANSFORM_CHANGED] when its global transform changes."
msgstr ""
#: doc/classes/CanvasItem.xml
@@ -12710,9 +12725,14 @@ msgstr ""
#: doc/classes/CanvasItem.xml
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]."
+"The [CanvasItem]'s global transform has changed. This notification is only "
+"received if enabled by [method set_notify_transform]."
+msgstr ""
+
+#: doc/classes/CanvasItem.xml
+msgid ""
+"The [CanvasItem]'s local transform has changed. This notification is only "
+"received if enabled by [method set_notify_local_transform]."
msgstr ""
#: doc/classes/CanvasItem.xml
@@ -19677,9 +19697,8 @@ msgid ""
"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"
+"OpenType ([code].otf[/code]), Web Open Font Format 1 ([code].woff[/code]), "
+"and Web Open Font Format 2 ([code].woff2[/code]).\n"
"[codeblock]\n"
"var dynamic_font = DynamicFont.new()\n"
"dynamic_font.font_data = load(\"res://BarlowCondensed-Bold.ttf\")\n"
@@ -22469,12 +22488,13 @@ msgstr ""
#: doc/classes/EditorVCSInterface.xml
msgid ""
"Helper function to create a commit [Dictionary] item. [code]msg[/code] is "
-"the commit message of the commit. [code]author[/code] is a human-readable "
-"string containing the author's details, e.g. the email and name configured "
-"in the VCS. [code]id[/code] is the identifier of the commit, in whichever "
-"format your VCS may provide an identifier to commits. [code]date[/code] is "
-"directly added to the commit item and displayed in the editor, and hence, it "
-"shall be a well-formatted, human-readable date string."
+"the commit message of the commit. [code]author[/code] is a single human-"
+"readable string containing all the author's details, e.g. the email and name "
+"configured in the VCS. [code]id[/code] is the identifier of the commit, in "
+"whichever format your VCS may provide an identifier to commits. "
+"[code]unix_timestamp[/code] is the UTC Unix timestamp of when the commit was "
+"created. [code]offset_minutes[/code] is the timezone offset in minutes, "
+"recorded from the system timezone where the commit was created."
msgstr ""
#: doc/classes/EditorVCSInterface.xml
@@ -29058,9 +29078,9 @@ 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."
+"If [code]exact[/code] is [code]false[/code], it ignores additional input "
+"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the "
+"direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/Input.xml
@@ -29070,9 +29090,9 @@ msgid ""
"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."
+"If [code]exact[/code] is [code]false[/code], it ignores additional input "
+"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the "
+"direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/Input.xml
@@ -29205,9 +29225,9 @@ msgid ""
"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.\n"
+"If [code]exact[/code] is [code]false[/code], it ignores additional input "
+"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the "
+"direction for [InputEventJoypadMotion] events.\n"
"[b]Note:[/b] Due to keyboard ghosting, [method is_action_just_pressed] may "
"return [code]false[/code] even if one of the action's keys is pressed. See "
"[url=$DOCS_URL/tutorials/inputs/input_examples.html#keyboard-events]Input "
@@ -29219,9 +29239,9 @@ 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."
+"If [code]exact[/code] is [code]false[/code], it ignores additional input "
+"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the "
+"direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/Input.xml
@@ -29230,9 +29250,9 @@ msgid ""
"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.\n"
+"If [code]exact[/code] is [code]false[/code], it ignores additional input "
+"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the "
+"direction for [InputEventJoypadMotion] events.\n"
"[b]Note:[/b] Due to keyboard ghosting, [method is_action_pressed] may return "
"[code]false[/code] even if one of the action's keys is pressed. See "
"[url=$DOCS_URL/tutorials/inputs/input_examples.html#keyboard-events]Input "
@@ -29582,18 +29602,18 @@ msgstr ""
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."
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/InputEvent.xml
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."
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/InputEvent.xml
@@ -29602,9 +29622,9 @@ msgid ""
"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.\n"
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events.\n"
"[b]Note:[/b] Due to keyboard ghosting, [method is_action_pressed] may return "
"[code]false[/code] even if one of the action's keys is pressed. See "
"[url=$DOCS_URL/tutorials/inputs/input_examples.html#keyboard-events]Input "
@@ -29616,9 +29636,9 @@ 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."
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/InputEvent.xml
@@ -29649,9 +29669,9 @@ msgid ""
"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."
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/InputEvent.xml
@@ -30181,9 +30201,9 @@ msgid ""
"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."
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/InputMap.xml
@@ -34019,6 +34039,39 @@ msgid "Returns the number of surface materials."
msgstr ""
#: doc/classes/MeshInstance.xml
+msgid ""
+"Returns [code]true[/code] if this [MeshInstance] can be merged with the "
+"specified [code]other_mesh_instance[/code], using the [method MeshInstance."
+"merge_meshes] function.\n"
+"In order to be mergeable, properties of the [MeshInstance] must match, and "
+"each surface must match, in terms of material, attributes and vertex format."
+msgstr ""
+
+#: doc/classes/MeshInstance.xml
+msgid ""
+"This function can merge together the data from several source "
+"[MeshInstance]s into a single destination [MeshInstance] (the MeshInstance "
+"the function is called from). This is primarily useful for improving "
+"performance by reducing the number of drawcalls and [Node]s.\n"
+"Merging should only be attempted for simple meshes that do not contain "
+"animation.\n"
+"The final vertices can either be returned in global space, or in local space "
+"relative to the destination [MeshInstance] global transform (the destination "
+"Node must be inside the [SceneTree] for local space to work).\n"
+"The function will make a final check for compatibility between the "
+"[MeshInstance]s by default, this should always be used unless you have "
+"previously checked for compatibility using [method MeshInstance."
+"is_mergeable_with]. If the compatibility check is omitted and the meshes are "
+"merged, you may see rendering errors.\n"
+"[b]Note:[/b] The requirements for similarity between meshes are quite "
+"stringent. They can be checked using the [method MeshInstance."
+"is_mergeable_with] function prior to calling [method MeshInstance."
+"merge_meshes].\n"
+"Also note that any initial data in the destination [MeshInstance] data will "
+"be discarded."
+msgstr ""
+
+#: doc/classes/MeshInstance.xml
msgid "Sets the [Material] for a surface of the [Mesh] resource."
msgstr ""
@@ -36477,12 +36530,12 @@ msgid ""
"[/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."
+"typically relevant for [url=$DOCS_URL/tutorials/misc/"
+"running_code_in_the_editor.html]tool scripts[/url] and [url=$DOCS_URL/"
+"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
@@ -37189,7 +37242,15 @@ msgid ""
"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."
+"subinstancing.\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=$DOCS_URL/tutorials/misc/"
+"running_code_in_the_editor.html]tool scripts[/url] and [url=$DOCS_URL/"
+"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
@@ -37785,7 +37846,13 @@ msgid ""
msgstr ""
#: doc/classes/Object.xml
-msgid "Called when the object is initialized."
+msgid ""
+"Called when the object is initialized in memory. Can be defined to take in "
+"parameters, that are passed in when constructing.\n"
+"[b]Note:[/b] If [method _init] is defined with required parameters, then "
+"explicit construction is the only valid means of creating an Object of the "
+"class. If any other means (such as [method PackedScene.instance]) is used, "
+"then initialization will fail."
msgstr ""
#: doc/classes/Object.xml
@@ -43032,7 +43099,10 @@ msgid ""
msgstr ""
#: doc/classes/PhysicsServer.xml
-msgid "Returns an Info defined by the [enum ProcessInfo] input given."
+msgid ""
+"Returns information about the current state of the 3D physics engine. See "
+"[enum ProcessInfo] for a list of available states. Only implemented for "
+"Godot Physics."
msgstr ""
#: doc/classes/PhysicsServer.xml
@@ -55956,8 +56026,8 @@ msgid ""
"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"
+"print(some_array[0]) # Prints \"One,Two,Three\"\n"
+"print(some_array[1]) # Prints \"Four\"\n"
"[/codeblock]"
msgstr ""
diff --git a/doc/translations/tr.po b/doc/translations/tr.po
index f2eaa55c6c..f4d2314886 100644
--- a/doc/translations/tr.po
+++ b/doc/translations/tr.po
@@ -4095,8 +4095,12 @@ msgstr ""
#: doc/classes/@GlobalScope.xml
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]."
+"pick in a list specified via a hint string.\n"
+"The hint string is a comma separated list of names such as [code]\"Hello,"
+"Something,Else\"[/code]. For integer and float properties, the first name in "
+"the list has value 0, the next 1, and so on. Explicit values can also be "
+"specified by appending [code]:integer[/code] to the name, e.g. [code]\"Zero,"
+"One,Three:3,Four,Six:6\"[/code]."
msgstr ""
#: doc/classes/@GlobalScope.xml
@@ -6010,8 +6014,11 @@ msgstr ""
#: doc/classes/AnimationNodeBlendTree.xml
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."
+"This node may contain a sub-tree of any other blend type nodes, such as "
+"[AnimationNodeTransition], [AnimationNodeBlend2], [AnimationNodeBlend3], "
+"[AnimationNodeOneShot], etc. This is one of the most commonly used roots.\n"
+"An [AnimationNodeOutput] node named [code]output[/code] is created by "
+"default."
msgstr ""
#: doc/classes/AnimationNodeBlendTree.xml
@@ -11131,8 +11138,15 @@ msgstr ""
#: doc/classes/BakedLightmap.xml
msgid ""
-"When enabled, the lightmapper will merge the textures for all meshes into a "
-"single large layered texture. Not supported in GLES2."
+"If [code]true[/code], the lightmapper will merge the textures for all meshes "
+"into one or several large layered textures. If [code]false[/code], every "
+"mesh will get its own lightmap texture, which is less efficient.\n"
+"[b]Note:[/b] Atlas lightmap rendering is only supported in GLES3, [i]not[/i] "
+"GLES2. Non-atlas lightmap rendering is supported by both GLES3 and GLES2. If "
+"[member ProjectSettings.rendering/quality/driver/fallback_to_gles2] is "
+"[code]true[/code], consider baking lightmaps with [member atlas_generate] "
+"set to [code]false[/code] so that the resulting lightmap is visible in both "
+"GLES3 and GLES2."
msgstr ""
#: doc/classes/BakedLightmap.xml
@@ -13293,14 +13307,15 @@ msgstr ""
#: doc/classes/CanvasItem.xml
msgid ""
-"If [code]enable[/code] is [code]true[/code], children will be updated with "
-"local transform data."
+"If [code]enable[/code] is [code]true[/code], this node will receive "
+"[constant NOTIFICATION_LOCAL_TRANSFORM_CHANGED] when its local transform "
+"changes."
msgstr ""
#: doc/classes/CanvasItem.xml
msgid ""
-"If [code]enable[/code] is [code]true[/code], children will be updated with "
-"global transform data."
+"If [code]enable[/code] is [code]true[/code], this node will receive "
+"[constant NOTIFICATION_TRANSFORM_CHANGED] when its global transform changes."
msgstr ""
#: doc/classes/CanvasItem.xml
@@ -13414,9 +13429,14 @@ msgstr ""
#: doc/classes/CanvasItem.xml
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]."
+"The [CanvasItem]'s global transform has changed. This notification is only "
+"received if enabled by [method set_notify_transform]."
+msgstr ""
+
+#: doc/classes/CanvasItem.xml
+msgid ""
+"The [CanvasItem]'s local transform has changed. This notification is only "
+"received if enabled by [method set_notify_local_transform]."
msgstr ""
#: doc/classes/CanvasItem.xml
@@ -20392,9 +20412,8 @@ msgid ""
"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"
+"OpenType ([code].otf[/code]), Web Open Font Format 1 ([code].woff[/code]), "
+"and Web Open Font Format 2 ([code].woff2[/code]).\n"
"[codeblock]\n"
"var dynamic_font = DynamicFont.new()\n"
"dynamic_font.font_data = load(\"res://BarlowCondensed-Bold.ttf\")\n"
@@ -23187,12 +23206,13 @@ msgstr ""
#: doc/classes/EditorVCSInterface.xml
msgid ""
"Helper function to create a commit [Dictionary] item. [code]msg[/code] is "
-"the commit message of the commit. [code]author[/code] is a human-readable "
-"string containing the author's details, e.g. the email and name configured "
-"in the VCS. [code]id[/code] is the identifier of the commit, in whichever "
-"format your VCS may provide an identifier to commits. [code]date[/code] is "
-"directly added to the commit item and displayed in the editor, and hence, it "
-"shall be a well-formatted, human-readable date string."
+"the commit message of the commit. [code]author[/code] is a single human-"
+"readable string containing all the author's details, e.g. the email and name "
+"configured in the VCS. [code]id[/code] is the identifier of the commit, in "
+"whichever format your VCS may provide an identifier to commits. "
+"[code]unix_timestamp[/code] is the UTC Unix timestamp of when the commit was "
+"created. [code]offset_minutes[/code] is the timezone offset in minutes, "
+"recorded from the system timezone where the commit was created."
msgstr ""
#: doc/classes/EditorVCSInterface.xml
@@ -29793,9 +29813,9 @@ 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."
+"If [code]exact[/code] is [code]false[/code], it ignores additional input "
+"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the "
+"direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/Input.xml
@@ -29805,9 +29825,9 @@ msgid ""
"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."
+"If [code]exact[/code] is [code]false[/code], it ignores additional input "
+"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the "
+"direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/Input.xml
@@ -29940,9 +29960,9 @@ msgid ""
"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.\n"
+"If [code]exact[/code] is [code]false[/code], it ignores additional input "
+"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the "
+"direction for [InputEventJoypadMotion] events.\n"
"[b]Note:[/b] Due to keyboard ghosting, [method is_action_just_pressed] may "
"return [code]false[/code] even if one of the action's keys is pressed. See "
"[url=$DOCS_URL/tutorials/inputs/input_examples.html#keyboard-events]Input "
@@ -29954,9 +29974,9 @@ 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."
+"If [code]exact[/code] is [code]false[/code], it ignores additional input "
+"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the "
+"direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/Input.xml
@@ -29965,9 +29985,9 @@ msgid ""
"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.\n"
+"If [code]exact[/code] is [code]false[/code], it ignores additional input "
+"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the "
+"direction for [InputEventJoypadMotion] events.\n"
"[b]Note:[/b] Due to keyboard ghosting, [method is_action_pressed] may return "
"[code]false[/code] even if one of the action's keys is pressed. See "
"[url=$DOCS_URL/tutorials/inputs/input_examples.html#keyboard-events]Input "
@@ -30317,18 +30337,18 @@ msgstr ""
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."
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/InputEvent.xml
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."
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/InputEvent.xml
@@ -30337,9 +30357,9 @@ msgid ""
"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.\n"
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events.\n"
"[b]Note:[/b] Due to keyboard ghosting, [method is_action_pressed] may return "
"[code]false[/code] even if one of the action's keys is pressed. See "
"[url=$DOCS_URL/tutorials/inputs/input_examples.html#keyboard-events]Input "
@@ -30351,9 +30371,9 @@ 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."
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/InputEvent.xml
@@ -30384,9 +30404,9 @@ msgid ""
"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."
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/InputEvent.xml
@@ -30917,9 +30937,9 @@ msgid ""
"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."
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/InputMap.xml
@@ -34760,6 +34780,39 @@ msgid "Returns the number of surface materials."
msgstr ""
#: doc/classes/MeshInstance.xml
+msgid ""
+"Returns [code]true[/code] if this [MeshInstance] can be merged with the "
+"specified [code]other_mesh_instance[/code], using the [method MeshInstance."
+"merge_meshes] function.\n"
+"In order to be mergeable, properties of the [MeshInstance] must match, and "
+"each surface must match, in terms of material, attributes and vertex format."
+msgstr ""
+
+#: doc/classes/MeshInstance.xml
+msgid ""
+"This function can merge together the data from several source "
+"[MeshInstance]s into a single destination [MeshInstance] (the MeshInstance "
+"the function is called from). This is primarily useful for improving "
+"performance by reducing the number of drawcalls and [Node]s.\n"
+"Merging should only be attempted for simple meshes that do not contain "
+"animation.\n"
+"The final vertices can either be returned in global space, or in local space "
+"relative to the destination [MeshInstance] global transform (the destination "
+"Node must be inside the [SceneTree] for local space to work).\n"
+"The function will make a final check for compatibility between the "
+"[MeshInstance]s by default, this should always be used unless you have "
+"previously checked for compatibility using [method MeshInstance."
+"is_mergeable_with]. If the compatibility check is omitted and the meshes are "
+"merged, you may see rendering errors.\n"
+"[b]Note:[/b] The requirements for similarity between meshes are quite "
+"stringent. They can be checked using the [method MeshInstance."
+"is_mergeable_with] function prior to calling [method MeshInstance."
+"merge_meshes].\n"
+"Also note that any initial data in the destination [MeshInstance] data will "
+"be discarded."
+msgstr ""
+
+#: doc/classes/MeshInstance.xml
msgid "Sets the [Material] for a surface of the [Mesh] resource."
msgstr ""
@@ -37244,12 +37297,12 @@ msgid ""
"[/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."
+"typically relevant for [url=$DOCS_URL/tutorials/misc/"
+"running_code_in_the_editor.html]tool scripts[/url] and [url=$DOCS_URL/"
+"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
@@ -37956,7 +38009,15 @@ msgid ""
"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."
+"subinstancing.\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=$DOCS_URL/tutorials/misc/"
+"running_code_in_the_editor.html]tool scripts[/url] and [url=$DOCS_URL/"
+"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
@@ -38552,7 +38613,13 @@ msgid ""
msgstr ""
#: doc/classes/Object.xml
-msgid "Called when the object is initialized."
+msgid ""
+"Called when the object is initialized in memory. Can be defined to take in "
+"parameters, that are passed in when constructing.\n"
+"[b]Note:[/b] If [method _init] is defined with required parameters, then "
+"explicit construction is the only valid means of creating an Object of the "
+"class. If any other means (such as [method PackedScene.instance]) is used, "
+"then initialization will fail."
msgstr ""
#: doc/classes/Object.xml
@@ -43828,7 +43895,10 @@ msgid ""
msgstr ""
#: doc/classes/PhysicsServer.xml
-msgid "Returns an Info defined by the [enum ProcessInfo] input given."
+msgid ""
+"Returns information about the current state of the 3D physics engine. See "
+"[enum ProcessInfo] for a list of available states. Only implemented for "
+"Godot Physics."
msgstr ""
#: doc/classes/PhysicsServer.xml
@@ -56771,8 +56841,8 @@ msgid ""
"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"
+"print(some_array[0]) # Prints \"One,Two,Three\"\n"
+"print(some_array[1]) # Prints \"Four\"\n"
"[/codeblock]"
msgstr ""
diff --git a/doc/translations/uk.po b/doc/translations/uk.po
index dc2e7969b1..e18b49c849 100644
--- a/doc/translations/uk.po
+++ b/doc/translations/uk.po
@@ -11,11 +11,12 @@
# Valerii Bosiak <valerii540@protonmail.com>, 2021.
# KazanskiyMaks <kazanskiy.maks@gmail.com>, 2022.
# Vladyslav Anisimov <uniss@ua.fm>, 2022.
+# МироÑлав <hlopukmyroslav@gmail.com>, 2022.
msgid ""
msgstr ""
"Project-Id-Version: Godot Engine class reference\n"
"Report-Msgid-Bugs-To: https://github.com/godotengine/godot\n"
-"PO-Revision-Date: 2022-02-16 16:37+0000\n"
+"PO-Revision-Date: 2022-03-23 04:18+0000\n"
"Last-Translator: Yuri Chornoivan <yurchor@ukr.net>\n"
"Language-Team: Ukrainian <https://hosted.weblate.org/projects/godot-engine/"
"godot-class-reference/uk/>\n"
@@ -25,7 +26,7 @@ msgstr ""
"Content-Transfer-Encoding: 8-bit\n"
"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
-"X-Generator: Weblate 4.11-dev\n"
+"X-Generator: Weblate 4.12-dev\n"
#: doc/tools/make_rst.py
msgid "Description"
@@ -33,7 +34,7 @@ msgstr "ОпиÑ"
#: doc/tools/make_rst.py
msgid "Tutorials"
-msgstr "Уроки"
+msgstr "ПоÑібники"
#: doc/tools/make_rst.py
msgid "Properties"
@@ -3472,8 +3473,12 @@ msgstr ""
#: doc/classes/@GlobalScope.xml
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]."
+"pick in a list specified via a hint string.\n"
+"The hint string is a comma separated list of names such as [code]\"Hello,"
+"Something,Else\"[/code]. For integer and float properties, the first name in "
+"the list has value 0, the next 1, and so on. Explicit values can also be "
+"specified by appending [code]:integer[/code] to the name, e.g. [code]\"Zero,"
+"One,Three:3,Four,Six:6\"[/code]."
msgstr ""
#: doc/classes/@GlobalScope.xml
@@ -5387,8 +5392,11 @@ msgstr ""
#: doc/classes/AnimationNodeBlendTree.xml
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."
+"This node may contain a sub-tree of any other blend type nodes, such as "
+"[AnimationNodeTransition], [AnimationNodeBlend2], [AnimationNodeBlend3], "
+"[AnimationNodeOneShot], etc. This is one of the most commonly used roots.\n"
+"An [AnimationNodeOutput] node named [code]output[/code] is created by "
+"default."
msgstr ""
#: doc/classes/AnimationNodeBlendTree.xml
@@ -10514,8 +10522,15 @@ msgstr ""
#: doc/classes/BakedLightmap.xml
msgid ""
-"When enabled, the lightmapper will merge the textures for all meshes into a "
-"single large layered texture. Not supported in GLES2."
+"If [code]true[/code], the lightmapper will merge the textures for all meshes "
+"into one or several large layered textures. If [code]false[/code], every "
+"mesh will get its own lightmap texture, which is less efficient.\n"
+"[b]Note:[/b] Atlas lightmap rendering is only supported in GLES3, [i]not[/i] "
+"GLES2. Non-atlas lightmap rendering is supported by both GLES3 and GLES2. If "
+"[member ProjectSettings.rendering/quality/driver/fallback_to_gles2] is "
+"[code]true[/code], consider baking lightmaps with [member atlas_generate] "
+"set to [code]false[/code] so that the resulting lightmap is visible in both "
+"GLES3 and GLES2."
msgstr ""
#: doc/classes/BakedLightmap.xml
@@ -12671,14 +12686,15 @@ msgstr ""
#: doc/classes/CanvasItem.xml
msgid ""
-"If [code]enable[/code] is [code]true[/code], children will be updated with "
-"local transform data."
+"If [code]enable[/code] is [code]true[/code], this node will receive "
+"[constant NOTIFICATION_LOCAL_TRANSFORM_CHANGED] when its local transform "
+"changes."
msgstr ""
#: doc/classes/CanvasItem.xml
msgid ""
-"If [code]enable[/code] is [code]true[/code], children will be updated with "
-"global transform data."
+"If [code]enable[/code] is [code]true[/code], this node will receive "
+"[constant NOTIFICATION_TRANSFORM_CHANGED] when its global transform changes."
msgstr ""
#: doc/classes/CanvasItem.xml
@@ -12792,9 +12808,14 @@ msgstr ""
#: doc/classes/CanvasItem.xml
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]."
+"The [CanvasItem]'s global transform has changed. This notification is only "
+"received if enabled by [method set_notify_transform]."
+msgstr ""
+
+#: doc/classes/CanvasItem.xml
+msgid ""
+"The [CanvasItem]'s local transform has changed. This notification is only "
+"received if enabled by [method set_notify_local_transform]."
msgstr ""
#: doc/classes/CanvasItem.xml
@@ -19768,9 +19789,8 @@ msgid ""
"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"
+"OpenType ([code].otf[/code]), Web Open Font Format 1 ([code].woff[/code]), "
+"and Web Open Font Format 2 ([code].woff2[/code]).\n"
"[codeblock]\n"
"var dynamic_font = DynamicFont.new()\n"
"dynamic_font.font_data = load(\"res://BarlowCondensed-Bold.ttf\")\n"
@@ -22561,12 +22581,13 @@ msgstr ""
#: doc/classes/EditorVCSInterface.xml
msgid ""
"Helper function to create a commit [Dictionary] item. [code]msg[/code] is "
-"the commit message of the commit. [code]author[/code] is a human-readable "
-"string containing the author's details, e.g. the email and name configured "
-"in the VCS. [code]id[/code] is the identifier of the commit, in whichever "
-"format your VCS may provide an identifier to commits. [code]date[/code] is "
-"directly added to the commit item and displayed in the editor, and hence, it "
-"shall be a well-formatted, human-readable date string."
+"the commit message of the commit. [code]author[/code] is a single human-"
+"readable string containing all the author's details, e.g. the email and name "
+"configured in the VCS. [code]id[/code] is the identifier of the commit, in "
+"whichever format your VCS may provide an identifier to commits. "
+"[code]unix_timestamp[/code] is the UTC Unix timestamp of when the commit was "
+"created. [code]offset_minutes[/code] is the timezone offset in minutes, "
+"recorded from the system timezone where the commit was created."
msgstr ""
#: doc/classes/EditorVCSInterface.xml
@@ -29166,9 +29187,9 @@ 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."
+"If [code]exact[/code] is [code]false[/code], it ignores additional input "
+"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the "
+"direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/Input.xml
@@ -29178,9 +29199,9 @@ msgid ""
"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."
+"If [code]exact[/code] is [code]false[/code], it ignores additional input "
+"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the "
+"direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/Input.xml
@@ -29313,9 +29334,9 @@ msgid ""
"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.\n"
+"If [code]exact[/code] is [code]false[/code], it ignores additional input "
+"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the "
+"direction for [InputEventJoypadMotion] events.\n"
"[b]Note:[/b] Due to keyboard ghosting, [method is_action_just_pressed] may "
"return [code]false[/code] even if one of the action's keys is pressed. See "
"[url=$DOCS_URL/tutorials/inputs/input_examples.html#keyboard-events]Input "
@@ -29327,9 +29348,9 @@ 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."
+"If [code]exact[/code] is [code]false[/code], it ignores additional input "
+"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the "
+"direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/Input.xml
@@ -29338,9 +29359,9 @@ msgid ""
"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.\n"
+"If [code]exact[/code] is [code]false[/code], it ignores additional input "
+"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the "
+"direction for [InputEventJoypadMotion] events.\n"
"[b]Note:[/b] Due to keyboard ghosting, [method is_action_pressed] may return "
"[code]false[/code] even if one of the action's keys is pressed. See "
"[url=$DOCS_URL/tutorials/inputs/input_examples.html#keyboard-events]Input "
@@ -29690,18 +29711,18 @@ msgstr ""
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."
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/InputEvent.xml
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."
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/InputEvent.xml
@@ -29710,9 +29731,9 @@ msgid ""
"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.\n"
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events.\n"
"[b]Note:[/b] Due to keyboard ghosting, [method is_action_pressed] may return "
"[code]false[/code] even if one of the action's keys is pressed. See "
"[url=$DOCS_URL/tutorials/inputs/input_examples.html#keyboard-events]Input "
@@ -29724,9 +29745,9 @@ 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."
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/InputEvent.xml
@@ -29757,9 +29778,9 @@ msgid ""
"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."
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/InputEvent.xml
@@ -30290,9 +30311,9 @@ msgid ""
"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."
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/InputMap.xml
@@ -34130,6 +34151,39 @@ msgid "Returns the number of surface materials."
msgstr ""
#: doc/classes/MeshInstance.xml
+msgid ""
+"Returns [code]true[/code] if this [MeshInstance] can be merged with the "
+"specified [code]other_mesh_instance[/code], using the [method MeshInstance."
+"merge_meshes] function.\n"
+"In order to be mergeable, properties of the [MeshInstance] must match, and "
+"each surface must match, in terms of material, attributes and vertex format."
+msgstr ""
+
+#: doc/classes/MeshInstance.xml
+msgid ""
+"This function can merge together the data from several source "
+"[MeshInstance]s into a single destination [MeshInstance] (the MeshInstance "
+"the function is called from). This is primarily useful for improving "
+"performance by reducing the number of drawcalls and [Node]s.\n"
+"Merging should only be attempted for simple meshes that do not contain "
+"animation.\n"
+"The final vertices can either be returned in global space, or in local space "
+"relative to the destination [MeshInstance] global transform (the destination "
+"Node must be inside the [SceneTree] for local space to work).\n"
+"The function will make a final check for compatibility between the "
+"[MeshInstance]s by default, this should always be used unless you have "
+"previously checked for compatibility using [method MeshInstance."
+"is_mergeable_with]. If the compatibility check is omitted and the meshes are "
+"merged, you may see rendering errors.\n"
+"[b]Note:[/b] The requirements for similarity between meshes are quite "
+"stringent. They can be checked using the [method MeshInstance."
+"is_mergeable_with] function prior to calling [method MeshInstance."
+"merge_meshes].\n"
+"Also note that any initial data in the destination [MeshInstance] data will "
+"be discarded."
+msgstr ""
+
+#: doc/classes/MeshInstance.xml
msgid "Sets the [Material] for a surface of the [Mesh] resource."
msgstr ""
@@ -36458,7 +36512,7 @@ msgstr ""
#: doc/classes/Node.xml
msgid "Nodes and Scenes"
-msgstr ""
+msgstr "Вузли та Сцени"
#: doc/classes/Node.xml
msgid "All Demos"
@@ -36610,12 +36664,12 @@ msgid ""
"[/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."
+"typically relevant for [url=$DOCS_URL/tutorials/misc/"
+"running_code_in_the_editor.html]tool scripts[/url] and [url=$DOCS_URL/"
+"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
@@ -37322,7 +37376,15 @@ msgid ""
"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."
+"subinstancing.\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=$DOCS_URL/tutorials/misc/"
+"running_code_in_the_editor.html]tool scripts[/url] and [url=$DOCS_URL/"
+"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
@@ -37918,7 +37980,13 @@ msgid ""
msgstr ""
#: doc/classes/Object.xml
-msgid "Called when the object is initialized."
+msgid ""
+"Called when the object is initialized in memory. Can be defined to take in "
+"parameters, that are passed in when constructing.\n"
+"[b]Note:[/b] If [method _init] is defined with required parameters, then "
+"explicit construction is the only valid means of creating an Object of the "
+"class. If any other means (such as [method PackedScene.instance]) is used, "
+"then initialization will fail."
msgstr ""
#: doc/classes/Object.xml
@@ -43187,7 +43255,10 @@ msgid ""
msgstr ""
#: doc/classes/PhysicsServer.xml
-msgid "Returns an Info defined by the [enum ProcessInfo] input given."
+msgid ""
+"Returns information about the current state of the 3D physics engine. See "
+"[enum ProcessInfo] for a list of available states. Only implemented for "
+"Godot Physics."
msgstr ""
#: doc/classes/PhysicsServer.xml
@@ -56121,8 +56192,8 @@ msgid ""
"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"
+"print(some_array[0]) # Prints \"One,Two,Three\"\n"
+"print(some_array[1]) # Prints \"Four\"\n"
"[/codeblock]"
msgstr ""
diff --git a/doc/translations/vi.po b/doc/translations/vi.po
index 1a98c49ac8..0064bd5593 100644
--- a/doc/translations/vi.po
+++ b/doc/translations/vi.po
@@ -3751,8 +3751,12 @@ msgstr ""
#: doc/classes/@GlobalScope.xml
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]."
+"pick in a list specified via a hint string.\n"
+"The hint string is a comma separated list of names such as [code]\"Hello,"
+"Something,Else\"[/code]. For integer and float properties, the first name in "
+"the list has value 0, the next 1, and so on. Explicit values can also be "
+"specified by appending [code]:integer[/code] to the name, e.g. [code]\"Zero,"
+"One,Three:3,Four,Six:6\"[/code]."
msgstr ""
#: doc/classes/@GlobalScope.xml
@@ -5689,8 +5693,11 @@ msgstr ""
#: doc/classes/AnimationNodeBlendTree.xml
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."
+"This node may contain a sub-tree of any other blend type nodes, such as "
+"[AnimationNodeTransition], [AnimationNodeBlend2], [AnimationNodeBlend3], "
+"[AnimationNodeOneShot], etc. This is one of the most commonly used roots.\n"
+"An [AnimationNodeOutput] node named [code]output[/code] is created by "
+"default."
msgstr ""
#: doc/classes/AnimationNodeBlendTree.xml
@@ -10811,8 +10818,15 @@ msgstr ""
#: doc/classes/BakedLightmap.xml
msgid ""
-"When enabled, the lightmapper will merge the textures for all meshes into a "
-"single large layered texture. Not supported in GLES2."
+"If [code]true[/code], the lightmapper will merge the textures for all meshes "
+"into one or several large layered textures. If [code]false[/code], every "
+"mesh will get its own lightmap texture, which is less efficient.\n"
+"[b]Note:[/b] Atlas lightmap rendering is only supported in GLES3, [i]not[/i] "
+"GLES2. Non-atlas lightmap rendering is supported by both GLES3 and GLES2. If "
+"[member ProjectSettings.rendering/quality/driver/fallback_to_gles2] is "
+"[code]true[/code], consider baking lightmaps with [member atlas_generate] "
+"set to [code]false[/code] so that the resulting lightmap is visible in both "
+"GLES3 and GLES2."
msgstr ""
#: doc/classes/BakedLightmap.xml
@@ -12969,14 +12983,15 @@ msgstr ""
#: doc/classes/CanvasItem.xml
msgid ""
-"If [code]enable[/code] is [code]true[/code], children will be updated with "
-"local transform data."
+"If [code]enable[/code] is [code]true[/code], this node will receive "
+"[constant NOTIFICATION_LOCAL_TRANSFORM_CHANGED] when its local transform "
+"changes."
msgstr ""
#: doc/classes/CanvasItem.xml
msgid ""
-"If [code]enable[/code] is [code]true[/code], children will be updated with "
-"global transform data."
+"If [code]enable[/code] is [code]true[/code], this node will receive "
+"[constant NOTIFICATION_TRANSFORM_CHANGED] when its global transform changes."
msgstr ""
#: doc/classes/CanvasItem.xml
@@ -13090,9 +13105,14 @@ msgstr ""
#: doc/classes/CanvasItem.xml
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]."
+"The [CanvasItem]'s global transform has changed. This notification is only "
+"received if enabled by [method set_notify_transform]."
+msgstr ""
+
+#: doc/classes/CanvasItem.xml
+msgid ""
+"The [CanvasItem]'s local transform has changed. This notification is only "
+"received if enabled by [method set_notify_local_transform]."
msgstr ""
#: doc/classes/CanvasItem.xml
@@ -20069,9 +20089,8 @@ msgid ""
"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"
+"OpenType ([code].otf[/code]), Web Open Font Format 1 ([code].woff[/code]), "
+"and Web Open Font Format 2 ([code].woff2[/code]).\n"
"[codeblock]\n"
"var dynamic_font = DynamicFont.new()\n"
"dynamic_font.font_data = load(\"res://BarlowCondensed-Bold.ttf\")\n"
@@ -22863,12 +22882,13 @@ msgstr ""
#: doc/classes/EditorVCSInterface.xml
msgid ""
"Helper function to create a commit [Dictionary] item. [code]msg[/code] is "
-"the commit message of the commit. [code]author[/code] is a human-readable "
-"string containing the author's details, e.g. the email and name configured "
-"in the VCS. [code]id[/code] is the identifier of the commit, in whichever "
-"format your VCS may provide an identifier to commits. [code]date[/code] is "
-"directly added to the commit item and displayed in the editor, and hence, it "
-"shall be a well-formatted, human-readable date string."
+"the commit message of the commit. [code]author[/code] is a single human-"
+"readable string containing all the author's details, e.g. the email and name "
+"configured in the VCS. [code]id[/code] is the identifier of the commit, in "
+"whichever format your VCS may provide an identifier to commits. "
+"[code]unix_timestamp[/code] is the UTC Unix timestamp of when the commit was "
+"created. [code]offset_minutes[/code] is the timezone offset in minutes, "
+"recorded from the system timezone where the commit was created."
msgstr ""
#: doc/classes/EditorVCSInterface.xml
@@ -29462,9 +29482,9 @@ 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."
+"If [code]exact[/code] is [code]false[/code], it ignores additional input "
+"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the "
+"direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/Input.xml
@@ -29474,9 +29494,9 @@ msgid ""
"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."
+"If [code]exact[/code] is [code]false[/code], it ignores additional input "
+"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the "
+"direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/Input.xml
@@ -29609,9 +29629,9 @@ msgid ""
"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.\n"
+"If [code]exact[/code] is [code]false[/code], it ignores additional input "
+"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the "
+"direction for [InputEventJoypadMotion] events.\n"
"[b]Note:[/b] Due to keyboard ghosting, [method is_action_just_pressed] may "
"return [code]false[/code] even if one of the action's keys is pressed. See "
"[url=$DOCS_URL/tutorials/inputs/input_examples.html#keyboard-events]Input "
@@ -29623,9 +29643,9 @@ 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."
+"If [code]exact[/code] is [code]false[/code], it ignores additional input "
+"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the "
+"direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/Input.xml
@@ -29634,9 +29654,9 @@ msgid ""
"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.\n"
+"If [code]exact[/code] is [code]false[/code], it ignores additional input "
+"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the "
+"direction for [InputEventJoypadMotion] events.\n"
"[b]Note:[/b] Due to keyboard ghosting, [method is_action_pressed] may return "
"[code]false[/code] even if one of the action's keys is pressed. See "
"[url=$DOCS_URL/tutorials/inputs/input_examples.html#keyboard-events]Input "
@@ -29986,18 +30006,18 @@ msgstr ""
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."
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/InputEvent.xml
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."
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/InputEvent.xml
@@ -30006,9 +30026,9 @@ msgid ""
"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.\n"
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events.\n"
"[b]Note:[/b] Due to keyboard ghosting, [method is_action_pressed] may return "
"[code]false[/code] even if one of the action's keys is pressed. See "
"[url=$DOCS_URL/tutorials/inputs/input_examples.html#keyboard-events]Input "
@@ -30020,9 +30040,9 @@ 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."
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/InputEvent.xml
@@ -30053,9 +30073,9 @@ msgid ""
"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."
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/InputEvent.xml
@@ -30586,9 +30606,9 @@ msgid ""
"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."
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/InputMap.xml
@@ -34427,6 +34447,39 @@ msgid "Returns the number of surface materials."
msgstr ""
#: doc/classes/MeshInstance.xml
+msgid ""
+"Returns [code]true[/code] if this [MeshInstance] can be merged with the "
+"specified [code]other_mesh_instance[/code], using the [method MeshInstance."
+"merge_meshes] function.\n"
+"In order to be mergeable, properties of the [MeshInstance] must match, and "
+"each surface must match, in terms of material, attributes and vertex format."
+msgstr ""
+
+#: doc/classes/MeshInstance.xml
+msgid ""
+"This function can merge together the data from several source "
+"[MeshInstance]s into a single destination [MeshInstance] (the MeshInstance "
+"the function is called from). This is primarily useful for improving "
+"performance by reducing the number of drawcalls and [Node]s.\n"
+"Merging should only be attempted for simple meshes that do not contain "
+"animation.\n"
+"The final vertices can either be returned in global space, or in local space "
+"relative to the destination [MeshInstance] global transform (the destination "
+"Node must be inside the [SceneTree] for local space to work).\n"
+"The function will make a final check for compatibility between the "
+"[MeshInstance]s by default, this should always be used unless you have "
+"previously checked for compatibility using [method MeshInstance."
+"is_mergeable_with]. If the compatibility check is omitted and the meshes are "
+"merged, you may see rendering errors.\n"
+"[b]Note:[/b] The requirements for similarity between meshes are quite "
+"stringent. They can be checked using the [method MeshInstance."
+"is_mergeable_with] function prior to calling [method MeshInstance."
+"merge_meshes].\n"
+"Also note that any initial data in the destination [MeshInstance] data will "
+"be discarded."
+msgstr ""
+
+#: doc/classes/MeshInstance.xml
msgid "Sets the [Material] for a surface of the [Mesh] resource."
msgstr ""
@@ -36909,12 +36962,12 @@ msgid ""
"[/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."
+"typically relevant for [url=$DOCS_URL/tutorials/misc/"
+"running_code_in_the_editor.html]tool scripts[/url] and [url=$DOCS_URL/"
+"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
@@ -37621,7 +37674,15 @@ msgid ""
"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."
+"subinstancing.\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=$DOCS_URL/tutorials/misc/"
+"running_code_in_the_editor.html]tool scripts[/url] and [url=$DOCS_URL/"
+"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
@@ -38217,7 +38278,13 @@ msgid ""
msgstr ""
#: doc/classes/Object.xml
-msgid "Called when the object is initialized."
+msgid ""
+"Called when the object is initialized in memory. Can be defined to take in "
+"parameters, that are passed in when constructing.\n"
+"[b]Note:[/b] If [method _init] is defined with required parameters, then "
+"explicit construction is the only valid means of creating an Object of the "
+"class. If any other means (such as [method PackedScene.instance]) is used, "
+"then initialization will fail."
msgstr ""
#: doc/classes/Object.xml
@@ -43490,7 +43557,10 @@ msgid ""
msgstr ""
#: doc/classes/PhysicsServer.xml
-msgid "Returns an Info defined by the [enum ProcessInfo] input given."
+msgid ""
+"Returns information about the current state of the 3D physics engine. See "
+"[enum ProcessInfo] for a list of available states. Only implemented for "
+"Godot Physics."
msgstr ""
#: doc/classes/PhysicsServer.xml
@@ -56439,8 +56509,8 @@ msgid ""
"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"
+"print(some_array[0]) # Prints \"One,Two,Three\"\n"
+"print(some_array[1]) # Prints \"Four\"\n"
"[/codeblock]"
msgstr ""
diff --git a/doc/translations/zh_CN.po b/doc/translations/zh_CN.po
index b902af288f..d3554843d1 100644
--- a/doc/translations/zh_CN.po
+++ b/doc/translations/zh_CN.po
@@ -62,7 +62,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Godot Engine class reference\n"
"Report-Msgid-Bugs-To: https://github.com/godotengine/godot\n"
-"PO-Revision-Date: 2022-03-17 18:46+0000\n"
+"PO-Revision-Date: 2022-03-28 09:56+0000\n"
"Last-Translator: Haoyu Qiu <timothyqiu32@gmail.com>\n"
"Language-Team: Chinese (Simplified) <https://hosted.weblate.org/projects/"
"godot-engine/godot-class-reference/zh_Hans/>\n"
@@ -4174,11 +4174,13 @@ msgstr ""
#: doc/classes/@GlobalScope.xml
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]."
+"pick in a list specified via a hint string.\n"
+"The hint string is a comma separated list of names such as [code]\"Hello,"
+"Something,Else\"[/code]. For integer and float properties, the first name in "
+"the list has value 0, the next 1, and so on. Explicit values can also be "
+"specified by appending [code]:integer[/code] to the name, e.g. [code]\"Zero,"
+"One,Three:3,Four,Six:6\"[/code]."
msgstr ""
-"æç¤ºæ•´æ•°ã€æµ®ç‚¹æ•°æˆ–字符串属性为枚举值,å¯é€‰å€¼åˆ—表通过æç¤ºå­—符串指定,例如 "
-"[code]\"Hello,Something,Else\"[/code]。"
#: doc/classes/@GlobalScope.xml
msgid ""
@@ -6436,9 +6438,13 @@ msgid "[AnimationTree] node resource that contains many blend type nodes."
msgstr "[AnimationTree] 节点资æºï¼Œå…¶ä¸­åŒ…å«è®¸å¤šæ··åˆç±»åž‹èŠ‚ç‚¹ã€‚"
#: doc/classes/AnimationNodeBlendTree.xml
+#, fuzzy
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."
+"This node may contain a sub-tree of any other blend type nodes, such as "
+"[AnimationNodeTransition], [AnimationNodeBlend2], [AnimationNodeBlend3], "
+"[AnimationNodeOneShot], etc. This is one of the most commonly used roots.\n"
+"An [AnimationNodeOutput] node named [code]output[/code] is created by "
+"default."
msgstr ""
"该节点å¯ä»¥åŒ…å«ä»»ä½•å…¶ä»–æ··åˆç±»åž‹èŠ‚ç‚¹çš„å­æ ‘,例如 mixã€blend2ã€blend3ã€one shot "
"等。这是最常用的根之一。"
@@ -9555,15 +9561,15 @@ msgid ""
"However, at this point in time only one interface can render to an HMD."
msgstr ""
"调用这个æ¥åˆå§‹åŒ–这个接å£ã€‚第一个被åˆå§‹åŒ–的接å£ç¡®å®šä¸ºä¸»æŽ¥å£ï¼Œç”¨äºŽæ¸²æŸ“输出。\n"
-"在åˆå§‹åŒ–了接å£ä¹‹åŽï¼Œéœ€è¦å¯ç”¨è§†çª—çš„AR/VR模å¼ï¼Œå°†å¼€å§‹æ¸²æŸ“。\n"
-"[b]注æ„:[/b] 对于任何使用Godot主输出的设备,如移动VR,你必须在主视窗上å¯ç”¨"
-"AR/VR模å¼ã€‚\n"
-"如果你为一个处ç†è‡ªå·±è¾“出的平å°è¿™æ ·åšï¼Œå¦‚OpenVR,Godot就会在å±å¹•ä¸Šåªæ˜¾ç¤ºä¸€åªçœ¼"
-"ç›è€Œä¸å¤±çœŸã€‚å¦å¤–,你å¯ä»¥åœ¨åœºæ™¯ä¸­æ·»åŠ ä¸€ä¸ªå•独的视窗节点,在该视窗上å¯ç”¨AR/VR。"
-"它将被用æ¥è¾“出到HMD,让你在主窗å£ä¸­åšä½ å–œæ¬¢çš„事情,比如用一个å•独的相机作为æ—"
-"观者相机,或者渲染一些完全ä¸åŒçš„东西。\n"
+"在åˆå§‹åŒ–了接å£ä¹‹åŽï¼Œéœ€è¦å¯ç”¨è§†çª—çš„ AR/VR 模å¼ï¼Œå°†å¼€å§‹æ¸²æŸ“。\n"
+"[b]注æ„:[/b] 对于任何使用Godot主输出的设备,如移动VR,你必须在主视窗上å¯ç”¨ "
+"AR/VR 模å¼ã€‚\n"
+"如果你为一个处ç†è‡ªå·±è¾“出的平å°è¿™æ ·åšï¼ˆå¦‚ OpenVR),Godot 就会在å±å¹•ä¸Šåªæ˜¾ç¤ºä¸€"
+"åªçœ¼ç›è€Œä¸å¤±çœŸã€‚å¦å¤–,你å¯ä»¥åœ¨åœºæ™¯ä¸­æ·»åŠ ä¸€ä¸ªå•独的视窗节点,在该视窗上å¯ç”¨ "
+"AR/VR。它将被用æ¥è¾“出到 HMD,让你在主窗å£ä¸­åšä½ å–œæ¬¢çš„事情,比如用一个å•独的相"
+"机作为æ—观者相机,或者渲染一些完全ä¸åŒçš„东西。\n"
"è™½ç„¶ç›®å‰æ²¡æœ‰ä½¿ç”¨ï¼Œä½†ä½ å¯ä»¥æ¿€æ´»å…¶ä»–接å£ã€‚如果你想跟踪其他平å°çš„æŽ§åˆ¶å™¨ï¼Œå¯èƒ½å¸Œ"
-"望这样åšã€‚ç„¶è€Œï¼Œæ­¤æ—¶ï¼Œåªæœ‰ä¸€ä¸ªç•Œé¢å¯ä»¥æ¸²æŸ“到HMD。"
+"望这样åšã€‚ç„¶è€Œï¼Œæ­¤æ—¶ï¼Œåªæœ‰ä¸€ä¸ªç•Œé¢å¯ä»¥æ¸²æŸ“到 HMD。"
#: doc/classes/ARVRInterface.xml
msgid ""
@@ -9612,9 +9618,9 @@ msgid ""
"[method get_render_targetsize]). Using a separate viewport node frees up the "
"main viewport for other purposes."
msgstr ""
-"这个接å£è¾“出到一个外部设备。如果使用主视窗,å±å¹•上的输出是一个未ç»ä¿®æ”¹çš„左眼"
+"这个接å£è¾“出到一个外部设备。如果使用主视区,å±å¹•上的输出是一个未ç»ä¿®æ”¹çš„左眼"
"或å³çœ¼çš„缓冲区,如果没有将视窗尺寸更改为 [method get_render_targetsize] 的相"
-"åŒé•¿å®½æ¯”,则被拉伸。使用一个å•独的视窗节点å¯ä»¥é‡Šæ”¾å‡ºä¸»è§†çª—,用于其他用途。"
+"åŒé•¿å®½æ¯”,则被拉伸。使用一个å•独的视窗节点å¯ä»¥é‡Šæ”¾å‡ºä¸»è§†åŒºï¼Œç”¨äºŽå…¶ä»–用途。"
#: doc/classes/ARVRInterface.xml
msgid ""
@@ -11059,7 +11065,7 @@ msgstr "å馈延迟时间,å•ä½ä¸ºæ¯«ç§’。"
#: doc/classes/AudioEffectDelay.xml
msgid "Sound level for [code]tap1[/code]."
-msgstr "[code]tap1[/code] 的声音级别。"
+msgstr "[code]tap1[/code] 的声音电平。"
#: doc/classes/AudioEffectDelay.xml
msgid ""
@@ -11092,7 +11098,7 @@ msgstr "[b]Tap2[/b] 延迟时间,å•ä½ä¸ºæ¯«ç§’。"
#: doc/classes/AudioEffectDelay.xml
msgid "Sound level for [code]tap2[/code]."
-msgstr "[code]tap2[/code] 的声音级别。"
+msgstr "[code]tap2[/code] 的声音电平。"
#: doc/classes/AudioEffectDelay.xml
msgid ""
@@ -12807,10 +12813,16 @@ msgstr ""
#: doc/classes/BakedLightmap.xml
msgid ""
-"When enabled, the lightmapper will merge the textures for all meshes into a "
-"single large layered texture. Not supported in GLES2."
+"If [code]true[/code], the lightmapper will merge the textures for all meshes "
+"into one or several large layered textures. If [code]false[/code], every "
+"mesh will get its own lightmap texture, which is less efficient.\n"
+"[b]Note:[/b] Atlas lightmap rendering is only supported in GLES3, [i]not[/i] "
+"GLES2. Non-atlas lightmap rendering is supported by both GLES3 and GLES2. If "
+"[member ProjectSettings.rendering/quality/driver/fallback_to_gles2] is "
+"[code]true[/code], consider baking lightmaps with [member atlas_generate] "
+"set to [code]false[/code] so that the resulting lightmap is visible in both "
+"GLES3 and GLES2."
msgstr ""
-"å¯ç”¨åŽï¼Œå…‰ç…§è´´å›¾ä¼šå°†æ‰€æœ‰ç½‘格的纹ç†åˆå¹¶ä¸ºä¸€ä¸ªå¤§çš„分层纹ç†ã€‚ GLES2 䏿”¯æŒã€‚"
#: doc/classes/BakedLightmap.xml
msgid ""
@@ -13301,7 +13313,7 @@ msgid ""
"For more information, read the \"Matrices and transforms\" documentation "
"article."
msgstr ""
-"用于三维旋转和缩放的 3×3 çŸ©é˜µã€‚å‡ ä¹Žæ€»æ˜¯ç”¨ä½œå˜æ¢çš„æ­£äº¤åŸºã€‚\n"
+"用于 3D 旋转和缩放的 3×3 çŸ©é˜µã€‚å‡ ä¹Žæ€»æ˜¯ç”¨ä½œå˜æ¢çš„æ­£äº¤åŸºã€‚\n"
"åŒ…å« 3 个å‘é‡å­—段 Xã€Y å’Œ Z ä½œä¸ºå…¶åˆ—ï¼Œé€šå¸¸è¢«è§£é‡Šä¸ºå˜æ¢çš„局部基å‘é‡ã€‚对于这ç§"
"用途,它由一个缩放矩阵和一个旋转矩阵组æˆï¼Œä¾æ¬¡ä¸º (M=R.S)。\n"
"也å¯ä»¥ä½œä¸ºä¸‰ç»´å‘é‡çš„æ•°ç»„æ¥è®¿é—®ã€‚这些å‘é‡é€šå¸¸æ˜¯ç›¸äº’正交的,但ä¸ä¸€å®šæ˜¯å½’一化的"
@@ -13634,8 +13646,8 @@ msgid ""
"Supports distance fields. For using vector font files like TTF directly, see "
"[DynamicFont]."
msgstr ""
-"使用 [code]*.fnt[/code] 包å«çº¹ç†å›¾åº“çš„å­—ä½“æ¥æ¸²æŸ“文本。支æŒè·ç¦»å­—段。关于直接"
-"使用 TTF 等矢é‡å­—体文件,请å‚阅 [DynamicFont]。"
+"使用 [code]*.fnt[/code] 包å«çº¹ç†å›¾åº“çš„å­—ä½“æ¥æ¸²æŸ“文本。支æŒè·ç¦»åœºã€‚关于直接使"
+"用 TTF 等矢é‡å­—体文件,请å‚阅 [DynamicFont]。"
#: doc/classes/BitmapFont.xml
msgid ""
@@ -13689,7 +13701,7 @@ msgstr "上å‡ï¼ˆåŸºçº¿ä»¥ä¸Šçš„åƒç´ æ•°ï¼‰ã€‚"
#: doc/classes/BitmapFont.xml
msgid "If [code]true[/code], distance field hint is enabled."
-msgstr "如果[code]true[/code],则å¯ç”¨è·ç¦»å­—段æç¤ºã€‚"
+msgstr "如果[code]true[/code],则å¯ç”¨è·ç¦»åœºæç¤ºã€‚"
#: doc/classes/BitmapFont.xml
msgid "The fallback font."
@@ -14183,9 +14195,9 @@ msgid ""
"[Viewport] (or higher viewports) can't be displayed."
msgstr ""
"相机是一个特殊节点,用于显示从其当å‰ä½ç½®å¯è§çš„内容。相机在最近的 [Viewport] "
-"节点中注册自己(当树上行)。æ¯ä¸ªè§†çª—åªèƒ½æ¿€æ´»ä¸€ä¸ªç›¸æœºã€‚如果在树上没有å¯ç”¨çš„视"
-"窗,相机将在全局视窗中注册。æ¢å¥è¯è¯´ï¼Œç›¸æœºåªæ˜¯ä¸º [Viewport] æä¾›3D显示能力,"
-"如果没有,则无法显示在该 [Viewport] 或更高视窗中注册的场景。"
+"节点中注册自己(当树上行)。æ¯ä¸ªè§†åŒºåªèƒ½æ¿€æ´»ä¸€ä¸ªç›¸æœºã€‚如果在树上没有å¯ç”¨çš„视"
+"区,相机将在全局视区中注册。æ¢å¥è¯è¯´ï¼Œç›¸æœºåªæ˜¯ä¸º [Viewport] æä¾› 3D 显示能"
+"力,如果没有,则无法显示在该 [Viewport] 或更高视区中注册的场景。"
#: doc/classes/Camera.xml
msgid ""
@@ -14340,12 +14352,12 @@ msgid ""
"unproject_position(global_transform.origin)\n"
"[/codeblock]"
msgstr ""
-"返回[Viewport]矩形中的2Dåæ ‡ï¼Œè¯¥å标映射到世界空间中给定的3D点。\n"
-"[b]注æ„:[/b]当使用它æ¥å®šä½3D视窗上的GUI元素时,如果3D点在相机åŽé¢ï¼Œè¯·ä½¿ç”¨"
-"[method is_position_behind]æ¥é˜²æ­¢å®ƒä»¬æ˜¾ç¤ºã€‚\n"
+"返回 [Viewport] 矩形中的 2D åæ ‡ï¼Œè¯¥å标映射到世界空间中给定的 3D 点。\n"
+"[b]注æ„:[/b]当使用它æ¥å®šä½ 3D 视区上的 GUI 元素时,如果 3D 点在相机åŽé¢ï¼Œè¯·"
+"使用 [method is_position_behind] æ¥é˜²æ­¢å®ƒä»¬æ˜¾ç¤ºã€‚\n"
"[codeblock]\n"
-"# 这个代ç å—是继承自Spatial的脚本的一部分。\n"
-"# `control`是对继承自Control的节点的引用。\n"
+"# 这个代ç å—是继承自 Spatial 的脚本的一部分。\n"
+"# `control`是对继承自 Control 的节点的引用。\n"
"control.visible = not get_viewport().get_camera()."
"is_position_behind(global_transform.origin)\n"
"control.rect_position = get_viewport().get_camera()."
@@ -14375,12 +14387,12 @@ msgid ""
"Perspective menu in the top-left corner of the 3D viewport and toggle "
"[b]Enable Doppler[/b]."
msgstr ""
-"å¦‚æžœä¸æ˜¯[constant DOPPLER_TRACKING_DISABLED],此相机将模拟[url=https://en."
-"wikipedia.org/wiki/Doppler_effect]多普勒效果[/url]的对象在特定"
-"[code]_process[/code]方法中的å˜åŒ–。多普勒效果åªå¯¹[member AudioStreamPlayer3D."
-"doppler_tracking]设置为[constant AudioStreamPlayer3D."
-"DOPPLER_TRACKING_DISABLED]以外的值的[AudioStreamPlayer3D]节点进行模拟。\n"
-"[b]注æ„:[/b]è¦åœ¨ç¼–辑器中切æ¢å¤šæ™®å‹’效果预览,使用三维视窗左上角的é€è§†èœå•,并"
+"å¦‚æžœä¸æ˜¯ [constant DOPPLER_TRACKING_DISABLED],此相机将模拟[url=https://en."
+"wikipedia.org/wiki/Doppler_effect]多普勒效果[/url]的对象在特定 "
+"[code]_process[/code] 方法中的å˜åŒ–。多普勒效果åªå¯¹ [member "
+"AudioStreamPlayer3D.doppler_tracking] 设置为 [constant AudioStreamPlayer3D."
+"DOPPLER_TRACKING_DISABLED] 以外的值的 [AudioStreamPlayer3D] 节点进行模拟。\n"
+"[b]注æ„:[/b]è¦åœ¨ç¼–辑器中切æ¢å¤šæ™®å‹’效果预览,使用 3D 视区左上角的é€è§†èœå•,并"
"切æ¢ä¸º[b]å¯ç”¨å¤šæ™®å‹’[/b]。"
#: doc/classes/Camera.xml
@@ -14407,7 +14419,7 @@ msgid ""
msgstr ""
"相机的视野角度,以度为å•ä½ã€‚仅适用于é€è§†æ¨¡å¼ã€‚由于 [member keep_aspect] é”定"
"一个轴,因此 [code]fov[/code] 设置å¦ä¸€ä¸ªè½´çš„视角。\n"
-"作为å‚考,默认的垂直视野值 ([code]70.0[/code]) 等效于以下水平 FOV:\n"
+"作为å‚考,默认的垂直视野值([code]70.0[/code])等效于以下水平 FOV:\n"
"- 在 4:3 视窗中约86.07 度\n"
"- 在 16:10 视窗中约 96.50 度\n"
"- 在 16:9 视窗中约102.45 度\n"
@@ -14631,7 +14643,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
msgid ""
@@ -15365,11 +15377,11 @@ msgstr "è¿”å›žæ­¤é¡¹ç›®çš„å˜æ¢çŸ©é˜µã€‚"
#: doc/classes/CanvasItem.xml
msgid "Returns the viewport's boundaries as a [Rect2]."
-msgstr "以[Rect2]å½¢å¼è¿”回视窗的边界。"
+msgstr "以 [Rect2] å½¢å¼è¿”回视区的边界。"
#: doc/classes/CanvasItem.xml
msgid "Returns this item's transform in relation to the viewport."
-msgstr "è¿”å›žè¿™ä¸ªé¡¹ç›®ç›¸å¯¹äºŽè§†çª—çš„å˜æ¢ã€‚"
+msgstr "è¿”å›žè¿™ä¸ªé¡¹ç›®ç›¸å¯¹äºŽè§†åŒºçš„å˜æ¢ã€‚"
#: doc/classes/CanvasItem.xml
msgid "Returns the [World2D] where this item is in."
@@ -15432,16 +15444,19 @@ msgstr ""
"å˜æ¢ã€‚"
#: doc/classes/CanvasItem.xml
+#, fuzzy
msgid ""
-"If [code]enable[/code] is [code]true[/code], children will be updated with "
-"local transform data."
+"If [code]enable[/code] is [code]true[/code], this node will receive "
+"[constant NOTIFICATION_LOCAL_TRANSFORM_CHANGED] when its local transform "
+"changes."
msgstr ""
"如果[code]enable[/code]为[code]true[/code]ï¼Œåˆ™å°†ä½¿ç”¨å±€éƒ¨å˜æ¢æ•°æ®æ›´æ–°å­é¡¹ã€‚"
#: doc/classes/CanvasItem.xml
+#, fuzzy
msgid ""
-"If [code]enable[/code] is [code]true[/code], children will be updated with "
-"global transform data."
+"If [code]enable[/code] is [code]true[/code], this node will receive "
+"[constant NOTIFICATION_TRANSFORM_CHANGED] when its global transform changes."
msgstr ""
"如果[code]enable[/code]为[code]true[/code]ï¼Œåˆ™å°†ä½¿ç”¨å…¨å±€å˜æ¢æ•°æ®æ›´æ–°å­é¡¹ã€‚"
@@ -15573,10 +15588,19 @@ msgstr ""
"用。ä¸ä¼šåº”用任何光照。"
#: doc/classes/CanvasItem.xml
+#, fuzzy
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]."
+"The [CanvasItem]'s global transform has changed. This notification is only "
+"received if enabled by [method set_notify_transform]."
+msgstr ""
+"[CanvasItem]çš„å˜æ¢å·²æ›´æ”¹ã€‚仅当[method set_notify_transform]或[method "
+"set_notify_local_transform]å¯ç”¨æ—¶ï¼Œæ‰ä¼šæ”¶åˆ°æ­¤é€šçŸ¥ã€‚"
+
+#: doc/classes/CanvasItem.xml
+#, fuzzy
+msgid ""
+"The [CanvasItem]'s local transform has changed. This notification is only "
+"received if enabled by [method set_notify_local_transform]."
msgstr ""
"[CanvasItem]çš„å˜æ¢å·²æ›´æ”¹ã€‚仅当[method set_notify_transform]或[method "
"set_notify_local_transform]å¯ç”¨æ—¶ï¼Œæ‰ä¼šæ”¶åˆ°æ­¤é€šçŸ¥ã€‚"
@@ -15736,7 +15760,7 @@ msgstr ""
msgid ""
"Sets the layer to follow the viewport in order to simulate a pseudo 3D "
"effect."
-msgstr "将图层设置为跟éšè§†çª—,以模拟伪3D效果。"
+msgstr "将图层设置为跟éšè§†åŒºï¼Œä»¥æ¨¡æ‹Ÿä¼ª 3D 效果。"
#: doc/classes/CanvasLayer.xml
msgid ""
@@ -19562,9 +19586,8 @@ msgstr ""
"å‚阅 [method add_stylebox_override]。"
#: doc/classes/Control.xml
-#, fuzzy
msgid "Returns [code]true[/code] if drag operation is successful."
-msgstr "如果正在播放动画,返回[code]true[/code]。"
+msgstr "如果拖拽æ“作æˆåŠŸï¼Œåˆ™è¿”å›ž [code]true[/code]。"
#: doc/classes/Control.xml
msgid ""
@@ -20051,8 +20074,8 @@ msgid ""
"handled."
msgstr ""
"å¯ç”¨å½“ä½ å…³é—­æŽ§ä»¶æ¨¡æ€æ—¶ï¼Œè¾“入是å¦ä¼ æ’­ã€‚\n"
-"如果[code]false[/code]ï¼Œåœ¨è§†çª—è¾“å…¥äº‹ä»¶å¤„ç†æ—¶åœæ­¢äº‹ä»¶å¤„ç†ã€‚视窗首先éšè—模æ€ï¼Œ"
-"之åŽå°†è¾“入标记为已处ç†ã€‚"
+"如果为 [code]false[/code]ï¼Œåœ¨è§†åŒºè¾“å…¥äº‹ä»¶å¤„ç†æ—¶å°†åœæ­¢äº‹ä»¶å¤„ç†ã€‚视区首先éšè—模"
+"æ€ï¼Œä¹‹åŽå°†è¾“入标记为已处ç†ã€‚"
#: doc/classes/Control.xml
msgid ""
@@ -20155,16 +20178,15 @@ msgstr ""
"内容,无论是纹ç†è¿˜æ˜¯å­èŠ‚ç‚¹ã€‚"
#: doc/classes/Control.xml
-#, fuzzy
msgid ""
"By default, the node's pivot is its top-left corner. When you change its "
"[member rect_rotation] or [member rect_scale], it will rotate or scale "
"around this pivot. Set this property to [member rect_size] / 2 to pivot "
"around the Control's center."
msgstr ""
-"默认情况下,该节点的轴心ä½äºŽå…¶å·¦ä¸Šè§’。当您更改其 [member rect_scale] 时,它将"
-"围绕此轴心进行缩放。将此属性设置为 [member rect_size] / 2,以将轴心在节点的矩"
-"形中居中。"
+"默认情况下,该节点的轴心ä½äºŽå…¶å·¦ä¸Šè§’。当您更改其 [member rect_rotation] 或 "
+"[member rect_scale] 时,它将围绕此轴心进行旋转或缩放。将此属性设置为 [member "
+"rect_size] / 2,以将轴心在该 Control 内居中。"
#: doc/classes/Control.xml
msgid ""
@@ -22799,7 +22821,7 @@ msgid ""
"When using [Room]s and [Portal]s, this specifies how the [CullInstance] is "
"processed in the system."
msgstr ""
-"当使用 [Room] å’Œ [Portal] 时,这规定了 [CullInstance] åœ¨ç³»ç»Ÿä¸­çš„å¤„ç†æ–¹å¼ã€‚"
+"当使用 [Room] å’Œ [Portal] 时,这指定了 [CullInstance] åœ¨ç³»ç»Ÿä¸­çš„å¤„ç†æ–¹å¼ã€‚"
#: doc/classes/CullInstance.xml
msgid ""
@@ -22834,20 +22856,21 @@ msgstr ""
#: doc/classes/CullInstance.xml
msgid "Use for instances that will move [b]between[/b] [Room]s - e.g. players."
-msgstr "用于在 [Room] [b]之间[/b] 移动的实例 - 例如玩家。"
+msgstr "用于在 [Room] [b]之间[/b]移动的实例——例如玩家。"
#: doc/classes/CullInstance.xml
msgid ""
"Use for instances that will be frustum culled only - e.g. first person "
"weapon, debug."
-msgstr "用于åªä¼šè¢«è§†é”¥å‰”除的实例 - 例如第一人称武器,调试。"
+msgstr "用于åªä¼šè¢«è§†é”¥å‰”除的实例——例如第一人称武器,调试。"
#: doc/classes/CullInstance.xml
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 ""
-"用于根本ä¸ä¼šæ˜¾ç¤ºçš„实例 - 例如[b]手动房间边界[/b],由å‰ç¼€[i]'Bound_'[/i]指定。"
+"用于根本ä¸ä¼šæ˜¾ç¤ºçš„实例——例如[b]手动房间边界[/b](由 [i]'Bound_'[/i] å‰ç¼€æŒ‡"
+"定)。"
#: doc/classes/Curve.xml
msgid "A mathematic curve."
@@ -23006,7 +23029,7 @@ msgstr "å¯ç”¨åˆ‡çº¿æ¨¡å¼çš„æ€»æ•°ã€‚"
#: doc/classes/Curve2D.xml
msgid "Describes a Bézier curve in 2D space."
-msgstr "æè¿°äºŒç»´ç©ºé—´çš„è´å…¹å°”曲线。"
+msgstr "æè¿° 2D 空间的è´å¡žå°”曲线。"
#: doc/classes/Curve2D.xml
msgid ""
@@ -23015,12 +23038,11 @@ msgid ""
"It keeps a cache of precalculated points along the curve, to speed up "
"further calculations."
msgstr ""
-"该类æè¿°äº†äºŒç»´ç©ºé—´ä¸­çš„è´å…¹å°”曲线。它主è¦ç”¨äºŽç»™[Path2D]一个形状,但也å¯ä»¥æ‰‹åЍ"
-"采样用于其他目的。\n"
+"该类æè¿°äº† 2D 空间中的è´å¡žå°”曲线。它主è¦ç”¨äºŽç»™ [Path2D] 一个形状,但也å¯ä»¥æ‰‹"
+"动采样用于其他目的。\n"
"它ä¿ç•™äº†æ²¿æ›²çº¿çš„预计算点的缓存,以加快进一步的计算。"
#: doc/classes/Curve2D.xml
-#, fuzzy
msgid ""
"Adds a point to a curve at [code]position[/code] relative to the [Curve2D]'s "
"position, with control points [code]in[/code] and [code]out[/code].\n"
@@ -23031,13 +23053,13 @@ msgid ""
"get_point_count][/code]), the point will be appended at the end of the point "
"list."
msgstr ""
-"在曲线的 [code]position[/code] 上添加一个点,控制点 [code]in[/code] 和 "
-"[code]out[/code]。\n"
+"在曲线的 [code]position[/code] 上添加一个点,相对于该 [Curve2D] çš„ä½ç½®ï¼Œä»¥åŠ"
+"控制点 [code]in[/code] 和 [code]out[/code]。\n"
"如果给定了 [code]at_position[/code],这个点会被æ’å…¥åˆ°ç‚¹å· [code]at_position[/"
-"code] 之å‰ï¼Œå¹¶å°†è¿™ä¸ªç‚¹ï¼ˆä»¥åŠä¹‹åŽçš„æ¯ä¸€ä¸ªç‚¹ï¼‰ç§»åˆ°è¢«æ’入点之åŽã€‚如果"
-"[code]at_position[/code]æ²¡æœ‰ç»™å®šï¼Œæˆ–è€…æ˜¯ä¸€ä¸ªéžæ³•值([code]at_position <0[/"
-"code]或[code]at_position >= [method get_point_count][/code]),该点将被追加在"
-"点列表的最åŽã€‚"
+"code] 之å‰ï¼Œå¹¶å°†è¿™ä¸ªç‚¹ï¼ˆä»¥åŠä¹‹åŽçš„æ¯ä¸€ä¸ªç‚¹ï¼‰ç§»åˆ°è¢«æ’入点之åŽã€‚如果 "
+"[code]at_position[/code] æ²¡æœ‰ç»™å®šï¼Œæˆ–è€…æ˜¯éžæ³•值([code]at_position <0[/code] "
+"或 [code]at_position >= [method get_point_count][/code]),该点将被追加在点列"
+"表的最åŽã€‚"
#: doc/classes/Curve2D.xml doc/classes/Curve3D.xml
msgid ""
@@ -23234,7 +23256,6 @@ msgstr ""
"它沿曲线ä¿ç•™äº†ä¸€ä¸ªé¢„先计算好的点缓存,以加快进一步的计算。"
#: doc/classes/Curve3D.xml
-#, fuzzy
msgid ""
"Adds a point to a curve at [code]position[/code] relative to the [Curve3D]'s "
"position, with control points [code]in[/code] and [code]out[/code].\n"
@@ -23245,13 +23266,13 @@ msgid ""
"get_point_count][/code]), the point will be appended at the end of the point "
"list."
msgstr ""
-"在曲线的 [code]position[/code] 上添加一个点,控制点 [code]in[/code] 和 "
-"[code]out[/code]。\n"
+"在曲线的 [code]position[/code] 上添加一个点,相对于该 [Curve2D] çš„ä½ç½®ï¼Œä»¥åŠ"
+"控制点 [code]in[/code] 和 [code]out[/code]。\n"
"如果给定了 [code]at_position[/code],这个点会被æ’å…¥åˆ°ç‚¹å· [code]at_position[/"
-"code] 之å‰ï¼Œå¹¶å°†è¿™ä¸ªç‚¹ï¼ˆä»¥åŠä¹‹åŽçš„æ¯ä¸€ä¸ªç‚¹ï¼‰ç§»åˆ°è¢«æ’入点之åŽã€‚如果"
-"[code]at_position[/code]æ²¡æœ‰ç»™å®šï¼Œæˆ–è€…æ˜¯ä¸€ä¸ªéžæ³•值([code]at_position <0[/"
-"code]或[code]at_position >= [method get_point_count][/code]),该点将被追加在"
-"点列表的最åŽã€‚"
+"code] 之å‰ï¼Œå¹¶å°†è¿™ä¸ªç‚¹ï¼ˆä»¥åŠä¹‹åŽçš„æ¯ä¸€ä¸ªç‚¹ï¼‰ç§»åˆ°è¢«æ’入点之åŽã€‚如果 "
+"[code]at_position[/code] æ²¡æœ‰ç»™å®šï¼Œæˆ–è€…æ˜¯éžæ³•值([code]at_position <0[/code] "
+"或 [code]at_position >= [method get_point_count][/code]),该点将被追加在点列"
+"表的最åŽã€‚"
#: doc/classes/Curve3D.xml
msgid "Returns the cache of points as a [PoolVector3Array]."
@@ -24399,6 +24420,7 @@ msgid "DynamicFont renders vector font files at runtime."
msgstr "DynamicFont 在è¿è¡Œæ—¶æ¸²æŸ“矢é‡å­—体文件。"
#: doc/classes/DynamicFont.xml
+#, fuzzy
msgid ""
"DynamicFont renders vector font files dynamically at runtime instead of "
"using a prerendered texture atlas like [BitmapFont]. This trades the faster "
@@ -24409,9 +24431,8 @@ msgid ""
"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"
+"OpenType ([code].otf[/code]), Web Open Font Format 1 ([code].woff[/code]), "
+"and Web Open Font Format 2 ([code].woff2[/code]).\n"
"[codeblock]\n"
"var dynamic_font = DynamicFont.new()\n"
"dynamic_font.font_data = load(\"res://BarlowCondensed-Bold.ttf\")\n"
@@ -28026,14 +28047,16 @@ msgstr ""
"函数。"
#: doc/classes/EditorVCSInterface.xml
+#, fuzzy
msgid ""
"Helper function to create a commit [Dictionary] item. [code]msg[/code] is "
-"the commit message of the commit. [code]author[/code] is a human-readable "
-"string containing the author's details, e.g. the email and name configured "
-"in the VCS. [code]id[/code] is the identifier of the commit, in whichever "
-"format your VCS may provide an identifier to commits. [code]date[/code] is "
-"directly added to the commit item and displayed in the editor, and hence, it "
-"shall be a well-formatted, human-readable date string."
+"the commit message of the commit. [code]author[/code] is a single human-"
+"readable string containing all the author's details, e.g. the email and name "
+"configured in the VCS. [code]id[/code] is the identifier of the commit, in "
+"whichever format your VCS may provide an identifier to commits. "
+"[code]unix_timestamp[/code] is the UTC Unix timestamp of when the commit was "
+"created. [code]offset_minutes[/code] is the timezone offset in minutes, "
+"recorded from the system timezone where the commit was created."
msgstr ""
"创建æäº¤ [Dictionary] 项目的辅助函数。[code]msg[/code] 为该æäº¤çš„æäº¤æ¶ˆæ¯ã€‚"
"[code]author[/code] 为包å«ä½œè€…详情的人类å¯è¯»çš„字符串,例如 VCS 中é…置的邮箱和"
@@ -28529,9 +28552,9 @@ msgstr ""
"用。如果是 “3D Without Effectâ€ï¼Œåˆ™ä»¥ä¸‹é€‰é¡¹ä¸å¯ç”¨ï¼š\n"
"- Ssao(å±å¹•空间环境光é®è”½ï¼‰\n"
"- Ss Reflections(å±å¹•空间å射)\n"
-"根视窗的预期使用方法å¯ä»¥é€šè¿‡ [member ProjectSettings.rendering/quality/"
-"intended_usage/framebuffer_allocation] 调整,其他视窗通过 [member Viewport."
-"usage] 调整。\n"
+"æ ¹ Viewport 的预期使用方法å¯ä»¥é€šè¿‡ [member ProjectSettings.rendering/quality/"
+"intended_usage/framebuffer_allocation] 调整,其他 Viewport 通过 [member "
+"Viewport.usage] 调整。\n"
"请注æ„,[member ProjectSettings.rendering/quality/intended_usage/"
"framebuffer_allocation] 的移动平å°è¦†ç›–项默认使用“3D Without Effectsâ€ã€‚这样å¯"
"以æå‡ç§»åŠ¨è®¾å¤‡ä¸Šçš„æ€§èƒ½ï¼Œä½†åŒæ—¶ä¼šå½±å“移动设备上的å±å¹•显示。"
@@ -29152,7 +29175,6 @@ msgstr ""
"TONE_MAPPER_LINEAR] æ—¶æ‰æœ‰æ•ˆã€‚"
#: doc/classes/Environment.xml
-#, fuzzy
msgid ""
"Keeps on screen every pixel drawn in the background. Only select this mode "
"if you really need to keep the old data. On modern GPUs it will generally "
@@ -29162,9 +29184,11 @@ msgid ""
"reflections). If enabled in a scene where the background is visible, \"ghost "
"trail\" artifacts will be visible when moving the camera."
msgstr ""
-"在å±å¹•上ä¿ç•™èƒŒæ™¯ä¸­ç»˜åˆ¶çš„æ¯ä¸ªåƒç´ ã€‚这是最快的背景模å¼ï¼Œä½†å®ƒåªèƒ½åœ¨å®Œå…¨å®¤å†…场景"
-"(没有å¯è§çš„天空或天空å射)中安全使用。如果在背景å¯è§çš„场景中å¯ç”¨ï¼Œå½“移动相"
-"机时,\"鬼影踪迹 \"伪影将å¯è§ã€‚"
+"在å±å¹•上ä¿ç•™èƒŒæ™¯ä¸­ç»˜åˆ¶çš„æ¯ä¸ªåƒç´ ã€‚请åªåœ¨ä½ çœŸçš„需è¦ä¿ç•™æ—§æ•°æ®æ—¶é€‰æ‹©è¿™ä¸ªæ¨¡å¼ã€‚"
+"在现代 GPU 上一般并ä¸ä¼šæ¯”清除背景更快,å而å¯èƒ½é€ æˆæ˜¾è‘—å‡é€Ÿï¼Œå°¤å…¶åœ¨ç§»åŠ¨è®¾å¤‡"
+"上。\n"
+"åªèƒ½åœ¨å®Œå…¨å®¤å†…场景中安全使用(没有å¯è§çš„天空或天空å射)。如果在背景å¯è§çš„场"
+"景中å¯ç”¨ï¼Œå½“移动相机时,“鬼影踪迹â€ä¼ªå½±å°†å¯è§ã€‚"
#: doc/classes/Environment.xml
msgid ""
@@ -31221,8 +31245,8 @@ msgid ""
"inside the segment ([code]s1[/code], [code]s2[/code]) or outside of it, i.e. "
"somewhere on the line extending from the segment."
msgstr ""
-"返回由([code]s1[/code], [code]s2[/code])定义的三维直线上最接近 "
-"[code]point[/code]的三维点。返回的点å¯ä»¥åœ¨çº¿æ®µå†…([code]s1[/code], [code]s2[/"
+"返回由([code]s1[/code], [code]s2[/code])定义的 3D 直线上最接近 "
+"[code]point[/code]çš„ 3D 点。返回的点å¯ä»¥åœ¨çº¿æ®µå†…([code]s1[/code], [code]s2[/"
"code]),也å¯ä»¥åœ¨çº¿æ®µå¤–,å³åœ¨çº¿æ®µå»¶ä¼¸çš„æŸå¤„ã€‚"
#: doc/classes/Geometry.xml
@@ -33391,18 +33415,16 @@ msgstr ""
"高度图数æ®ï¼Œæ± æ•°ç»„的大å°å¿…须是 [member map_width] * [member map_depth]。"
#: doc/classes/HeightMapShape.xml
-#, fuzzy
msgid ""
"Number of vertices in the depth of the height map. Changing this will resize "
"the [member map_data]."
-msgstr "高度图数æ®çš„æ·±åº¦ã€‚更改此设置将调整 [member map_data] 的大å°ã€‚"
+msgstr "高度图深度的顶点数。更改此设置将调整 [member map_data] 的大å°ã€‚"
#: doc/classes/HeightMapShape.xml
-#, fuzzy
msgid ""
"Number of vertices in the width of the height map. Changing this will resize "
"the [member map_data]."
-msgstr "高度图数æ®çš„宽度。更改此设置将调整 [member map_data] 的大å°ã€‚"
+msgstr "高度图宽度的顶点数。更改此设置将调整 [member map_data] 的大å°ã€‚"
#: doc/classes/HFlowContainer.xml
msgid "Horizontal flow container."
@@ -36331,13 +36353,14 @@ msgstr ""
"上,它是地çƒé‡åŠ›åŠ é€Ÿåº¦çš„å€æ•°[code]g[/code](~9.81 m/s²)。"
#: doc/classes/Input.xml
+#, fuzzy
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."
+"If [code]exact[/code] is [code]false[/code], it ignores additional input "
+"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the "
+"direction for [InputEventJoypadMotion] events."
msgstr ""
"返回介于 0 和 1 之间的值,代表给定动作的原始强度,忽略动作的死区。在大多数情"
"况下,你应该使用 [method get_action_strength] æ¥ä»£æ›¿ã€‚\n"
@@ -36346,15 +36369,16 @@ msgstr ""
"的方å‘。"
#: doc/classes/Input.xml
+#, fuzzy
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."
+"If [code]exact[/code] is [code]false[/code], it ignores additional input "
+"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the "
+"direction for [InputEventJoypadMotion] events."
msgstr ""
"返回介于0å’Œ1之间的值,代表给定动作的强度。例如,在一个æ“纵æ¿ä¸Šï¼Œè½´ï¼ˆæ¨¡æ‹Ÿæ†æˆ–"
"L2ã€R2触å‘器)离死区越远,数值就越接近1。如果动作被映射到一个没有轴作为键盘的"
@@ -36515,15 +36539,16 @@ msgstr ""
"想è¦çš„值(在 0 到 1 的范围内)。"
#: doc/classes/Input.xml
+#, fuzzy
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.\n"
+"If [code]exact[/code] is [code]false[/code], it ignores additional input "
+"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the "
+"direction for [InputEventJoypadMotion] events.\n"
"[b]Note:[/b] Due to keyboard ghosting, [method is_action_just_pressed] may "
"return [code]false[/code] even if one of the action's keys is pressed. See "
"[url=$DOCS_URL/tutorials/inputs/input_examples.html#keyboard-events]Input "
@@ -36541,13 +36566,14 @@ msgstr ""
"inputs/input_examples.html#keyboard-events]《输入示例》[/url]。"
#: doc/classes/Input.xml
+#, fuzzy
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."
+"If [code]exact[/code] is [code]false[/code], it ignores additional input "
+"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the "
+"direction for [InputEventJoypadMotion] events."
msgstr ""
"å½“ç”¨æˆ·åœæ­¢æŒ‰ä¸‹åŠ¨ä½œäº‹ä»¶æ—¶ï¼Œè¿”å›ž[code]true[/code]ï¼Œä¹Ÿå°±æ˜¯è¯´ï¼Œåªæœ‰åœ¨ç”¨æˆ·é‡Šæ”¾æŒ‰é’®"
"çš„é‚£ä¸€å¸§æ‰æ˜¯[code]true[/code]。\n"
@@ -36556,14 +36582,15 @@ msgstr ""
"å‘。"
#: doc/classes/Input.xml
+#, fuzzy
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.\n"
+"If [code]exact[/code] is [code]false[/code], it ignores additional input "
+"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the "
+"direction for [InputEventJoypadMotion] events.\n"
"[b]Note:[/b] Due to keyboard ghosting, [method is_action_pressed] may return "
"[code]false[/code] even if one of the action's keys is pressed. See "
"[url=$DOCS_URL/tutorials/inputs/input_examples.html#keyboard-events]Input "
@@ -37020,12 +37047,13 @@ msgid "Returns a [String] representation of the event."
msgstr "返回事件的 [String] 字符串表示。"
#: doc/classes/InputEvent.xml
+#, fuzzy
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."
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events."
msgstr ""
"æ ¹æ®ç»™å®šçš„动作的状æ€ï¼Œè¿”回0.0到1.0之间的值。对于获å–[InputEventJoypadMotion]"
"类型的事件值时,很有用。\n"
@@ -37034,12 +37062,13 @@ msgstr ""
"å‘。"
#: doc/classes/InputEvent.xml
+#, fuzzy
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."
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events."
msgstr ""
"如果这个输入事件与任何类型的预定义动作匹é…,则返回[code]true[/code]。\n"
"如果[code]exact_match[/code]是[code]false[/code],它将忽略[InputEventKey]和"
@@ -37047,14 +37076,15 @@ msgstr ""
"å‘。"
#: doc/classes/InputEvent.xml
+#, fuzzy
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.\n"
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events.\n"
"[b]Note:[/b] Due to keyboard ghosting, [method is_action_pressed] may return "
"[code]false[/code] even if one of the action's keys is pressed. See "
"[url=$DOCS_URL/tutorials/inputs/input_examples.html#keyboard-events]Input "
@@ -37071,13 +37101,14 @@ msgstr ""
"input_examples.html#keyboard-events]《输入示例》[/url]。"
#: doc/classes/InputEvent.xml
+#, fuzzy
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."
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events."
msgstr ""
"å¦‚æžœç»™å®šçš„åŠ¨ä½œè¢«é‡Šæ”¾ï¼Œå³æœªè¢«æŒ‰ä¸‹ï¼Œåˆ™è¿”回[code]true[/code]。与"
"[InputEventMouseMotion]或[InputEventScreenDrag]类型的事件无关。\n"
@@ -37116,14 +37147,15 @@ msgstr ""
"input_examples.html#keyboard-events]《输入示例》[/url]。"
#: doc/classes/InputEvent.xml
+#, fuzzy
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."
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events."
msgstr ""
"如果指定的 [code]event[/code] 与此事件匹é…,则返回 [code]true[/code]。仅对动"
"作事件有效,å³é”® ([InputEventKey])ã€æŒ‰é’® ([InputEventMouseButton] 或 "
@@ -37776,14 +37808,15 @@ msgid "Removes an action from the [InputMap]."
msgstr "从[InputMap]中删除一个动作。"
#: doc/classes/InputMap.xml
+#, 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 "
"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."
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events."
msgstr ""
"如果给定的事件是现有动作的一部分,返回[code]true[/code]。如果给定的"
"[InputEvent]æ²¡æœ‰è¢«æŒ‰ä¸‹ï¼Œè¿™ä¸ªæ–¹æ³•ä¼šå¿½ç•¥é”®ç›˜ï¼ˆä¸ºäº†æ­£ç¡®åœ°æ£€æµ‹é‡Šæ”¾ï¼‰ã€‚å¦‚æžœä½ ä¸æƒ³"
@@ -39846,14 +39879,14 @@ msgid ""
"characters instead. This will be resolved in Godot 4.0."
msgstr ""
"标签在å±å¹•上显示纯文本。å¯ä»¥æŽ§åˆ¶æ°´å¹³å’Œåž‚ç›´çš„å¯¹é½æ–¹å¼ï¼Œå¹¶ä¸”å¯ä»¥å°†æ–‡æœ¬åŒ…裹在节"
-"ç‚¹çš„è¾¹ç•ŒçŸ©å½¢å†…ã€‚å®ƒä¸æ”¯æŒç²—ä½“ã€æ–œä½“或其他格å¼ã€‚若使用,请改用 "
+"ç‚¹çš„è¾¹ç•ŒçŸ©å½¢å†…ã€‚å®ƒä¸æ”¯æŒç²—ä½“ã€æ–œä½“等格å¼ã€‚如果需è¦ä½¿ç”¨ï¼Œè¯·æ”¹ç”¨ "
"[RichTextLabel]。\n"
-"[b]注æ„:[/b] 与大多数其他 [Control] ä¸åŒï¼ŒLabel çš„ [member Control."
-"mouse_filter] 默认为 [constant Control.MOUSE_FILTER_IGNORE],å³å®ƒä¸å“应鼠标输"
-"入事件。这æ„å‘³ç€æ ‡ç­¾ä¸ä¼šæ˜¾ç¤ºä»»ä½•å·²é…置的 [member Control.hint_tooltip],除éž"
+"[b]注æ„:[/b]与大多数其他 [Control] ä¸åŒï¼ŒLabel çš„ [member Control."
+"mouse_filter] 默认为 [constant Control.MOUSE_FILTER_IGNORE](å³ä¸å“应鼠标输入"
+"事件)。这æ„å‘³ç€æ ‡ç­¾ä¸ä¼šæ˜¾ç¤ºä»»ä½•å·²é…置的 [member Control.hint_tooltip],除éž"
"更改其鼠标过滤器。\n"
"[b]注æ„:[/b]Windows 上[i]䏿”¯æŒ[/i] [code]0xffff[/code] 之åŽçš„ Unicode å­—"
-"符,例如大多数表情符å·ï¼Œå®ƒä»¬å°†æ˜¾ç¤ºä¸ºæœªçŸ¥å­—符。这将在 Godot 4.0 中解决。"
+"符,例如大多数表情符å·ï¼Œå®ƒä»¬å°†æ˜¾ç¤ºä¸ºæœªçŸ¥å­—符。将在 Godot 4.0 中解决。"
#: doc/classes/Label.xml
msgid "Returns the amount of lines of text the Label has."
@@ -39889,15 +39922,16 @@ msgid ""
"If you resize the node, it will change its height automatically to show all "
"the text."
msgstr ""
-"如果[code]true[/code],则将文本包裹在节点的边界矩形内。如果你调整节点的大å°ï¼Œ"
-"它将自动改å˜å…¶é«˜åº¦ä»¥æ˜¾ç¤ºæ‰€æœ‰çš„æ–‡æœ¬ã€‚"
+"如果为 [code]true[/code],文本将在节点的边界矩形内自动æ¢è¡Œã€‚如果你调整节点的"
+"大å°ï¼Œå®ƒå°†è‡ªåŠ¨æ”¹å˜å…¶é«˜åº¦ä»¥æ˜¾ç¤ºæ‰€æœ‰çš„æ–‡æœ¬ã€‚"
#: doc/classes/Label.xml
msgid ""
"If [code]true[/code], the Label only shows the text that fits inside its "
"bounding rectangle and will clip text horizontally."
msgstr ""
-"如果 [code]true[/code],则标签仅显示适åˆå…¶è¾¹ç•ŒçŸ©å½¢çš„æ–‡æœ¬ï¼Œå¹¶å°†æ°´å¹³å‰ªåˆ‡æ–‡æœ¬ã€‚"
+"如果为 [code]true[/code],Label 将仅显示ä½äºŽå…¶è¾¹ç•ŒçŸ©å½¢å†…部的文本,并将水平è£"
+"剪文本。"
#: doc/classes/Label.xml
msgid ""
@@ -39924,7 +39958,7 @@ msgstr "è¦åœ¨å±å¹•上显示的文本。"
#: doc/classes/Label.xml
msgid "If [code]true[/code], all the text displays as UPPERCASE."
-msgstr "如果 [code]true[/code],则所有文本都显示为大写。"
+msgstr "如果为 [code]true[/code],所有文本都将显示为大写。"
#: doc/classes/Label.xml
msgid ""
@@ -40631,45 +40665,45 @@ msgid ""
"The style to render the [code]texture[/code] on the line. Use [enum "
"LineTextureMode] constants."
msgstr ""
-"在线æ¡ä¸Šæ¸²æŸ“[code]texture[/code]的样å¼ã€‚使用[enum LineTextureMode]常é‡ã€‚"
+"在线æ¡ä¸Šæ¸²æŸ“ [code]texture[/code] 的样å¼ã€‚使用 [enum LineTextureMode] 常é‡ã€‚"
#: doc/classes/Line2D.xml
msgid "The line's width."
-msgstr "线的宽度。"
+msgstr "该线æ¡çš„宽度。"
#: doc/classes/Line2D.xml
msgid ""
"The line's width varies with the curve. The original width is simply "
"multiply by the value of the Curve."
-msgstr "线æ¡çš„å®½åº¦éšæ›²çº¿çš„å˜åŒ–而å˜åŒ–。原始宽度åªéœ€ä¹˜ä»¥æ›²çº¿çš„值å³å¯ã€‚"
+msgstr "该线æ¡çš„å®½åº¦éšæ›²çº¿å˜åŒ–。原始宽度åªéœ€ä¹˜ä»¥æ›²çº¿çš„值å³å¯ã€‚"
#: doc/classes/Line2D.xml
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 ""
-"è¿™æ¡çº¿çš„æŽ¥å¤´å°†æ˜¯å°–的。如果[code]sharp_limit[/code]大于关节的旋转,则它将å˜ä¸º"
-"斜角关节。"
+"该线æ¡çš„交点将是尖头。如果 [code]sharp_limit[/code] 大于交点的旋转,它将å˜ä¸º"
+"倒角交点。"
#: doc/classes/Line2D.xml
msgid "The line's joints will be bevelled/chamfered."
-msgstr "线的接头将斜切/倒角。"
+msgstr "该线æ¡çš„交点将为倒角/切角。"
#: doc/classes/Line2D.xml
msgid "The line's joints will be rounded."
-msgstr "该线的接头将为圆形。"
+msgstr "该线æ¡çš„交点将为圆角。"
#: doc/classes/Line2D.xml
msgid "Don't draw a line cap."
-msgstr "ä¸èƒ½åœ¨çº¿å¸½ä¸Šç»˜åˆ¶ã€‚"
+msgstr "ä¸ç»˜åˆ¶çº¿æ¡çš„端点。"
#: doc/classes/Line2D.xml
msgid "Draws the line cap as a box."
-msgstr "将线帽绘制为长方体。"
+msgstr "将线æ¡ç«¯ç‚¹ç»˜åˆ¶ä¸ºçŸ©å½¢ã€‚"
#: doc/classes/Line2D.xml
msgid "Draws the line cap as a circle."
-msgstr "将线帽绘制为圆。"
+msgstr "将线æ¡ç«¯ç‚¹ç»˜åˆ¶ä¸ºåœ†å½¢ã€‚"
#: doc/classes/Line2D.xml
msgid ""
@@ -40680,17 +40714,17 @@ msgstr "获å–纹ç†çš„左侧åƒç´ å¹¶åœ¨æ•´ä¸ªçº¿æ¡ä¸Šæ¸²æŸ“它。"
msgid ""
"Tiles the texture over the line. The texture must be imported with "
"[b]Repeat[/b] enabled for it to work properly."
-msgstr "在线æ¡ä¸Šå¹³é“ºçº¹ç†ã€‚å¯¼å…¥çº¹ç†æ—¶å¿…é¡»å¯ç”¨[b]Repeat[/b]æ‰èƒ½æ­£å¸¸å·¥ä½œã€‚"
+msgstr "在线æ¡ä¸Šå¹³é“ºçº¹ç†ã€‚å¯¼å…¥çº¹ç†æ—¶å¿…é¡»å¯ç”¨ [b]Repeat[/b] æ‰èƒ½æ­£å¸¸å·¥ä½œã€‚"
#: doc/classes/Line2D.xml
msgid ""
"Stretches the texture across the line. Import the texture with [b]Repeat[/b] "
"disabled for best results."
-msgstr "沿直线拉伸纹ç†ã€‚导入ç¦ç”¨[b]é‡å¤[/b]的纹ç†ä»¥èŽ·å¾—æœ€ä½³æ•ˆæžœã€‚"
+msgstr "æ²¿çº¿æ¡æ‹‰ä¼¸çº¹ç†ã€‚导入ç¦ç”¨ [b]Repeat[/b] 的纹ç†ä»¥èŽ·å¾—æœ€ä½³æ•ˆæžœã€‚"
#: doc/classes/LineEdit.xml
msgid "Control that provides single-line string editing."
-msgstr "该控件æä¾›å•行字符串编辑。"
+msgstr "æä¾›å•行字符串编辑功能的控件。"
#: doc/classes/LineEdit.xml
msgid ""
@@ -40850,21 +40884,20 @@ msgstr ""
#: doc/classes/LineEdit.xml
msgid "If [code]true[/code], the context menu will appear when right-clicked."
-msgstr "如果为[code]true[/code],å³é”®å•击将出现上下文èœå•。"
+msgstr "如果为 [code]true[/code],å³é”®å•击将出现上下文èœå•。"
#: doc/classes/LineEdit.xml doc/classes/RichTextLabel.xml
#: doc/classes/TextEdit.xml
-#, fuzzy
msgid ""
"If [code]true[/code], the selected text will be deselected when focus is "
"lost."
-msgstr "如果为[code]true[/code],则å¯ä»¥å†æ¬¡é€‰æ‹©å½“å‰é€‰ä¸­çš„项目。"
+msgstr "如果为 [code]true[/code]ï¼Œåˆ™åœ¨ä¸¢å¤±ç„¦ç‚¹æ—¶ä¼šå–æ¶ˆé€‰ä¸­æ–‡æœ¬ã€‚"
#: doc/classes/LineEdit.xml
msgid ""
"If [code]false[/code], existing text cannot be modified and new text cannot "
"be added."
-msgstr "如果为[code]false[/code],则ä¸èƒ½ä¿®æ”¹çŽ°åœ¨çš„æ–‡æœ¬ï¼Œä¹Ÿä¸èƒ½æ·»åŠ æ–°æ–‡æœ¬ã€‚"
+msgstr "如果为 [code]false[/code],则ä¸èƒ½ä¿®æ”¹çŽ°åœ¨çš„æ–‡æœ¬ï¼Œä¹Ÿä¸èƒ½æ·»åŠ æ–°æ–‡æœ¬ã€‚"
#: doc/classes/LineEdit.xml
msgid ""
@@ -40872,8 +40905,8 @@ msgid ""
"the [member text]. It will [b]not[/b] compress if the [member text] is "
"shortened."
msgstr ""
-"如果[code]true[/code],则[LineEdit]宽度将增加到比[member text]长。如果"
-"[member text]被缩短,它将[b]ä¸[/b]压缩。"
+"如果为 [code]true[/code],则 [LineEdit] 宽度将增加到比 [member text] 长。如"
+"æžœ [member text] 被缩短,它将[b]ä¸[/b]压缩。"
#: doc/classes/LineEdit.xml
msgid ""
@@ -40913,14 +40946,13 @@ msgstr ""
"[/codeblock]"
#: doc/classes/LineEdit.xml doc/classes/TextEdit.xml
-#, fuzzy
msgid ""
"If [code]false[/code], using middle mouse button to paste clipboard will be "
"disabled.\n"
"[b]Note:[/b] This method is only implemented on Linux."
msgstr ""
-"如果本地视频正在播放,返回[code]true[/code]。\n"
-"[b]注æ„:[/b] 这个方法åªåœ¨iOS上实现。"
+"如果为 [code]false[/code],将ç¦ç”¨é¼ æ ‡ä¸­é”®ç²˜è´´å‰ªè´´æ¿ã€‚\n"
+"[b]注æ„:[/b]这个方法åªåœ¨ Linux 上实现。"
#: doc/classes/LineEdit.xml
msgid ""
@@ -42499,6 +42531,39 @@ msgid "Returns the number of surface materials."
msgstr "è¿”å›žè¡¨é¢æè´¨çš„æ•°é‡ã€‚"
#: doc/classes/MeshInstance.xml
+msgid ""
+"Returns [code]true[/code] if this [MeshInstance] can be merged with the "
+"specified [code]other_mesh_instance[/code], using the [method MeshInstance."
+"merge_meshes] function.\n"
+"In order to be mergeable, properties of the [MeshInstance] must match, and "
+"each surface must match, in terms of material, attributes and vertex format."
+msgstr ""
+
+#: doc/classes/MeshInstance.xml
+msgid ""
+"This function can merge together the data from several source "
+"[MeshInstance]s into a single destination [MeshInstance] (the MeshInstance "
+"the function is called from). This is primarily useful for improving "
+"performance by reducing the number of drawcalls and [Node]s.\n"
+"Merging should only be attempted for simple meshes that do not contain "
+"animation.\n"
+"The final vertices can either be returned in global space, or in local space "
+"relative to the destination [MeshInstance] global transform (the destination "
+"Node must be inside the [SceneTree] for local space to work).\n"
+"The function will make a final check for compatibility between the "
+"[MeshInstance]s by default, this should always be used unless you have "
+"previously checked for compatibility using [method MeshInstance."
+"is_mergeable_with]. If the compatibility check is omitted and the meshes are "
+"merged, you may see rendering errors.\n"
+"[b]Note:[/b] The requirements for similarity between meshes are quite "
+"stringent. They can be checked using the [method MeshInstance."
+"is_mergeable_with] function prior to calling [method MeshInstance."
+"merge_meshes].\n"
+"Also note that any initial data in the destination [MeshInstance] data will "
+"be discarded."
+msgstr ""
+
+#: doc/classes/MeshInstance.xml
msgid "Sets the [Material] for a surface of the [Mesh] resource."
msgstr "为[Mesh]资æºçš„表é¢è®¾ç½®[Material]。"
@@ -45549,6 +45614,7 @@ msgstr ""
"是“孤儿â€ï¼‰ã€‚"
#: doc/classes/Node.xml
+#, fuzzy
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 "
@@ -45567,12 +45633,12 @@ msgid ""
"[/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."
+"typically relevant for [url=$DOCS_URL/tutorials/misc/"
+"running_code_in_the_editor.html]tool scripts[/url] and [url=$DOCS_URL/"
+"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 ""
"添加å­èŠ‚ç‚¹ã€‚èŠ‚ç‚¹å¯ä»¥æœ‰ä»»æ„æ•°é‡çš„å­èŠ‚ç‚¹ï¼Œä½†æ˜¯æ¯ä¸ªå­èŠ‚ç‚¹å¿…é¡»æœ‰å”¯ä¸€çš„å字。当父"
"节点被删除时,å­èŠ‚ç‚¹ä¼šè¢«è‡ªåŠ¨åˆ é™¤ï¼Œæ‰€ä»¥æ•´ä¸ªåœºæ™¯å¯ä»¥é€šè¿‡åˆ é™¤å…¶æœ€ä¸Šé¢çš„节点而被"
@@ -46075,7 +46141,7 @@ msgid ""
"Prints all stray nodes (nodes outside the [SceneTree]). Used for debugging. "
"Works only in debug builds."
msgstr ""
-"æ‰“å°æ‰€æœ‰æ•£åœ¨èŠ‚ç‚¹([SceneTree]之外的节点)。用于调试。åªèƒ½åœ¨è°ƒè¯•版本中工作。"
+"æ‰“å°æ‰€æœ‰ç¦»ç¾¤èŠ‚ç‚¹ï¼ˆ[SceneTree] 之外的节点)。用于调试。åªèƒ½åœ¨è°ƒè¯•版本中工作。"
#: doc/classes/Node.xml
msgid ""
@@ -46093,8 +46159,8 @@ msgid ""
"[/codeblock]"
msgstr ""
"将树打å°åˆ°æ ‡å‡†è¾“出。主è¦ç”¨äºŽè°ƒè¯•。这个版本显示相对于当å‰èŠ‚ç‚¹çš„è·¯å¾„ï¼Œé€‚åˆå¤åˆ¶/"
-"粘贴到[method get_node]函数中。\n"
-"[b]示例输出:[/b]\n"
+"粘贴到 [method get_node] 函数中。\n"
+"[b]示例输出:[/b]\n"
"[codeblock]\n"
"TheGame\n"
"TheGame/Menu\n"
@@ -46119,8 +46185,8 @@ msgid ""
" â”–â•´Camera2D\n"
"[/codeblock]"
msgstr ""
-"类似于[method print_tree],它将树打å°åˆ°æ ‡å‡†è¾“出。这个版本显示更多的图形,类似"
-"于在场景检查器中显示的内容。它对于检查较大的树很有用。\n"
+"类似于 [method print_tree],它将树打å°åˆ°æ ‡å‡†è¾“出。这个版本显示更多的图形,类"
+"似于在场景检查器中显示的内容。它对于检查较大的树很有用。\n"
"[b]输出示例:[/b]\n"
"[codeblock]\n"
" â”–â•´TheGame\n"
@@ -46150,7 +46216,7 @@ msgid ""
"Notifies the current node and all its children recursively by calling "
"[method Object.notification] on all of them."
msgstr ""
-"通过对所有节点调用[method Object.notification],递归地通知当å‰èŠ‚ç‚¹å’Œå®ƒçš„æ‰€æœ‰"
+"通过对所有节点调用 [method Object.notification],递归地通知当å‰èŠ‚ç‚¹å’Œå®ƒçš„æ‰€æœ‰"
"å­èŠ‚ç‚¹ã€‚"
#: doc/classes/Node.xml
@@ -46166,12 +46232,13 @@ msgid ""
"[method @GDScript.is_instance_valid] before attempting to call its methods "
"or access its properties."
msgstr ""
-"在当å‰å¸§ç»“æŸæ—¶æŽ’队删除一个节点。当删除时,其所有的å­èŠ‚ç‚¹ä¹Ÿå°†è¢«åˆ é™¤ã€‚è¿™ä¸ªæ–¹æ³•"
-"ç¡®ä¿åˆ é™¤èŠ‚ç‚¹æ˜¯å®‰å…¨çš„ï¼Œä¸Ž[method Object.free]相å。使用[method Object."
-"is_queued_for_deletion]æ¥æ£€æŸ¥ä¸€ä¸ªèŠ‚ç‚¹æ˜¯å¦ä¼šåœ¨å¸§æœ«è¢«åˆ é™¤ã€‚\n"
-"[b]é‡è¦ï¼š[/b] 如果你有å˜é‡æŒ‡å‘节点,一旦节点被释放,它将[i]ä¸ä¼š[/i] 被分é…到"
-"[code]null[/code]。相å,它将指å‘一个[i]å…ˆå‰è¢«é‡Šæ”¾çš„实例[/i],你应该在å°è¯•è°ƒ"
-"用其方法或访问其属性之å‰ç”¨[method @GDScript.is_instance_valid]æ¥éªŒè¯å®ƒã€‚"
+"在当å‰å¸§ç»“æŸæ—¶æŽ’队删除一个节点。被删除时,其所有的å­èŠ‚ç‚¹ä¹Ÿå°†è¢«åˆ é™¤ã€‚è¿™ä¸ªæ–¹æ³•"
+"能够确ä¿åˆ é™¤èŠ‚ç‚¹æ˜¯å®‰å…¨çš„ï¼Œä¸Ž [method Object.free] 相å。å¯ä»¥ä½¿ç”¨ [method "
+"Object.is_queued_for_deletion] æ¥æ£€æŸ¥èŠ‚ç‚¹æ˜¯å¦ä¼šåœ¨å¸§æœ«è¢«åˆ é™¤ã€‚\n"
+"[b]é‡è¦ï¼š[/b]如果你有一个指å‘节点的å˜é‡ï¼Œè¯¥èŠ‚ç‚¹è¢«é‡Šæ”¾åŽï¼Œè¿™ä¸ªå˜é‡[i]ä¸ä¼š[/i]"
+"被赋值为 [code]null[/code]。相å,它将指å‘一个[i]å…ˆå‰è¢«é‡Šæ”¾çš„实例[/i],你应该"
+"在å°è¯•调用其方法或访问其属性之å‰ç”¨ [method @GDScript.is_instance_valid] æ¥æ£€"
+"验其有效性。"
#: doc/classes/Node.xml
msgid ""
@@ -46569,16 +46636,40 @@ msgstr ""
"code]。"
#: doc/classes/Node.xml
+#, fuzzy
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."
+"subinstancing.\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=$DOCS_URL/tutorials/misc/"
+"running_code_in_the_editor.html]tool scripts[/url] and [url=$DOCS_URL/"
+"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 ""
-"节点的所有者。节点å¯ä»¥ä½¿ç”¨ä»»ä½•其他节点作为其所有者(åªè¦æ˜¯èƒ½å¤Ÿæ²¿ç€åœºæ™¯æ ‘å‘上"
-"追溯到的有效父节点ã€ç¥–父节点等)。(使用 [PackedScene])ä¿å­˜èŠ‚ç‚¹æ—¶ï¼Œæ‰€æœ‰å®ƒæ‹¥"
-"有的节点也会éšä¹‹ä¿å­˜ã€‚由此å³å¯é€šè¿‡å®žä¾‹åŒ–å’Œå­å®žä¾‹åŒ–æ¥åˆ›å»ºå¤æ‚çš„ [SceneTree]。"
+"添加å­èŠ‚ç‚¹ã€‚èŠ‚ç‚¹å¯ä»¥æœ‰ä»»æ„æ•°é‡çš„å­èŠ‚ç‚¹ï¼Œä½†æ˜¯æ¯ä¸ªå­èŠ‚ç‚¹å¿…é¡»æœ‰å”¯ä¸€çš„å字。当父"
+"节点被删除时,å­èŠ‚ç‚¹ä¼šè¢«è‡ªåŠ¨åˆ é™¤ï¼Œæ‰€ä»¥æ•´ä¸ªåœºæ™¯å¯ä»¥é€šè¿‡åˆ é™¤å…¶æœ€ä¸Šé¢çš„节点而被"
+"删除。\n"
+"如果[code]legible_unique_name[/code]是[code]true[/code],å­èŠ‚ç‚¹å°†æœ‰ä¸€ä¸ªåŸºäºŽè¢«"
+"实例化的节点的åç§°ï¼Œè€Œä¸æ˜¯å…¶ç±»åž‹å¯è¯»çš„å称。\n"
+"[b]注æ„:[/b] 如果å­èŠ‚ç‚¹å·²ç»æœ‰çˆ¶èŠ‚ç‚¹ï¼Œè¯¥å‡½æ•°å°†å¤±è´¥ã€‚é¦–å…ˆä½¿ç”¨[method "
+"remove_child]将节点从其当å‰çš„父节点中移除。如:\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]注æ„:[/b] 如果你想让一个å­èŠ‚ç‚¹è¢«æŒä¹…化到[PackedScene]中,除了调用[method "
+"add_child]外,还必须设置[member owner]。这通常与[url=https://godot."
+"readthedocs.io/en/3.2/tutorials/misc/running_code_in_the_editor.html]工具脚本"
+"[/url]和[url=https://godot.readthedocs.io/en/latest/tutorials/plugins/editor/"
+"index.html]编辑器æ’ä»¶[/url]有关。如果调用[method add_child]而ä¸è®¾ç½®[member "
+"owner],新添加的[Node]在场景树中是ä¸å¯è§çš„,尽管它在2D/3D视图中å¯è§ã€‚"
#: doc/classes/Node.xml
msgid "Pause mode. How the node will behave if the [SceneTree] is paused."
@@ -47360,8 +47451,14 @@ msgstr ""
"code]ï¼Œä»¥åŠ [code]usage: int[/code]ï¼ˆè§ [enum PropertyUsageFlags])。"
#: doc/classes/Object.xml
-msgid "Called when the object is initialized."
-msgstr "当对象被åˆå§‹åŒ–时被调用。"
+msgid ""
+"Called when the object is initialized in memory. Can be defined to take in "
+"parameters, that are passed in when constructing.\n"
+"[b]Note:[/b] If [method _init] is defined with required parameters, then "
+"explicit construction is the only valid means of creating an Object of the "
+"class. If any other means (such as [method PackedScene.instance]) is used, "
+"then initialization will fail."
+msgstr ""
#: doc/classes/Object.xml
msgid ""
@@ -48392,12 +48489,11 @@ msgstr ""
#: doc/classes/OptionButton.xml doc/classes/PopupMenu.xml
msgid "Returns the text of the item at index [code]idx[/code]."
-msgstr "返回索引[code]idx[/code]处项目的文本。"
+msgstr "返回索引 [code]idx[/code] 处项目的文本。"
#: doc/classes/OptionButton.xml
-#, fuzzy
msgid "Returns the tooltip of the item at index [code]idx[/code]."
-msgstr "返回索引[code]idx[/code]处项目的文本。"
+msgstr "返回索引 [code]idx[/code] 处项目的工具æç¤ºã€‚"
#: doc/classes/OptionButton.xml
msgid ""
@@ -48455,12 +48551,11 @@ msgstr ""
#: doc/classes/OptionButton.xml doc/classes/PopupMenu.xml
msgid "Sets the text of the item at index [code]idx[/code]."
-msgstr "在索引[code]idx[/code]处设置项的文本。"
+msgstr "设置在索引 [code]idx[/code] 处的项目的文本。"
#: doc/classes/OptionButton.xml
-#, fuzzy
msgid "Sets the tooltip of the item at index [code]idx[/code]."
-msgstr "在索引[code]idx[/code]处设置项的文本。"
+msgstr "设置在索引 [code]idx[/code] 处的项目的工具æç¤ºã€‚"
#: doc/classes/OptionButton.xml
msgid ""
@@ -49255,6 +49350,17 @@ msgid ""
" refresh_rate = 60.0\n"
"[/codeblock]"
msgstr ""
+"返回指定å±å¹•的当å‰åˆ·æ–°çŽ‡ã€‚å¦‚æžœ [code]screen[/code] 为 [code]-1[/code](默认"
+"值),则会使用当å‰å±å¹•。\n"
+"[b]注æ„:[/b]如果 Godot 无法获å–给定å±å¹•的刷新率,则会返回 [code]-1.0[/"
+"code]。在 HTML5 上,[method get_screen_refresh_rate] 总是返回 [code]-1.0[/"
+"code],因为在该平å°ä¸Šæ— æ³•获å–刷新率。\n"
+"è¦åœ¨è¯¥æ–¹æ³•失败时回退至默认刷新率,请å°è¯•:\n"
+"[codeblock]\n"
+"var refresh_rate = OS.get_screen_refresh_rate()\n"
+"if refresh_rate < 0:\n"
+" refresh_rate = 60.0\n"
+"[/codeblock]"
#: doc/classes/OS.xml
msgid ""
@@ -53977,8 +54083,14 @@ msgid ""
msgstr "设置 generic_6_DOF_joint傿•°ï¼ˆè¯·å‚阅[enum G6DOFJointAxisParam]常é‡ï¼‰ã€‚"
#: doc/classes/PhysicsServer.xml
-msgid "Returns an Info defined by the [enum ProcessInfo] input given."
-msgstr "返回由给定的[enum ProcessInfo]输入定义的信æ¯ã€‚"
+#, fuzzy
+msgid ""
+"Returns information about the current state of the 3D physics engine. See "
+"[enum ProcessInfo] for a list of available states. Only implemented for "
+"Godot Physics."
+msgstr ""
+"返回关于2D物ç†å¼•擎当å‰çжæ€çš„ä¿¡æ¯ã€‚有关å¯ç”¨çжæ€åˆ—表,请å‚阅[enum "
+"ProcessInfo]。"
#: doc/classes/PhysicsServer.xml
msgid "Gets a hinge_joint flag (see [enum HingeJointFlag] constants)."
@@ -57054,12 +57166,12 @@ msgstr ""
"警告。"
#: doc/classes/ProjectSettings.xml
-#, fuzzy
msgid ""
"If [code]true[/code], enables warnings when the type of the default value "
"set to an exported variable is different than the specified export type."
msgstr ""
-"如果[code]true[/code],则当三元è¿ç®—符å¯èƒ½å‘出类型ä¸å…¼å®¹çš„值时,将å¯ç”¨è­¦å‘Šã€‚"
+"如果为 [code]true[/code],则å¯ç”¨å¯¼å‡ºå˜é‡çš„默认值类型与其导出类型ä¸ä¸€è‡´æ—¶çš„è­¦"
+"告。"
#: doc/classes/ProjectSettings.xml
msgid ""
@@ -57600,6 +57712,12 @@ msgid ""
"[b]Note:[/b] This is set to [code]true[/code] by default for new projects "
"and is the recommended setting."
msgstr ""
+"如果已å¯ç”¨ï¼Œåˆ™ä¼šåœ¨å°† [member Viewport.gui_disable_input] 设为 [code]false[/"
+"code] ç¦ç”¨è§†åŒºçš„ GUI 输入时,将当å‰çš„鼠标悬åœåŠèšç„¦ä¸¢å¼ƒã€‚\n"
+"è¿™æ ·çš„è¡Œä¸ºèƒ½å¤Ÿå¸®åŠ©ä¿æŒ GUI 状æ€çš„å¥å£®ï¼Œè¾“å…¥æ¢å¤æ—¶ï¼Œæ— è®ºå½“æ—¶å‘生了什么都ä¸ä¼šäº§"
+"生æ„外的结果。\n"
+"如果已ç¦ç”¨ï¼Œä¼šä½¿ç”¨æ—§æœ‰è¡Œä¸ºï¼Œé™¤äº†ç¦ç”¨ GUI 输入本身ä¸ä¼šè¿›è¡Œé¢å¤–æ“作。\n"
+"[b]注æ„:[/b]新项目会默认将其设为 [code]true[/code],这也是推è的设置。"
#: doc/classes/ProjectSettings.xml
msgid ""
@@ -57824,7 +57942,7 @@ msgstr ""
msgid ""
"If [code]true[/code], sends mouse input events when tapping or swiping on "
"the touchscreen."
-msgstr "如果[code]true[/code]ï¼Œåˆ™åœ¨ç‚¹å‡»æˆ–æ»‘åŠ¨è§¦æ‘¸å±æ—¶å‘é€é¼ æ ‡è¾“入事件。"
+msgstr "如果为 [code]true[/code]ï¼Œåˆ™åœ¨ç‚¹å‡»æˆ–æ»‘åŠ¨è§¦æ‘¸å±æ—¶å‘é€é¼ æ ‡è¾“入事件。"
#: doc/classes/ProjectSettings.xml
msgid ""
@@ -58769,6 +58887,11 @@ msgid ""
"[code]DEFAULT[/code] or [code]Bullet[/code], [i]not[/i] [code]GodotPhysics[/"
"code]."
msgstr ""
+"如果为 [code]true[/code],会让 Bullet 物ç†å¼•擎为æ¯ä¸€ä¸ªä¸‰è§’网格形状生æˆå†…部边"
+"缘信æ¯ï¼Œè®©ä¸Žä¸‰è§’网格形状([ConcavePolygonShape])的碰撞å˜å¹³æ»‘。\n"
+"[b]注æ„:[/b]仅在 [member physics/3d/physics_engine] 被设为 [code]DEFAULT[/"
+"code] 或 [code]Bullet[/code] 时有效,为 [code]GodotPhysics[/code] 时[i]无效[/"
+"i]。"
#: doc/classes/ProjectSettings.xml
msgid "Enables [member Viewport.physics_object_picking] on the root viewport."
@@ -59354,6 +59477,9 @@ msgid ""
"You may want to do that since mobile GPUs generally won't support "
"ubershaders due to their complexity."
msgstr ""
+"[code]rendering/gles3/shaders/shader_compilation_mode[/code] 的覆盖项,用于为"
+"移动设备ç¦ç”¨å¼‚步编译。\n"
+"移动 GPU 通常ä¸ä¼šæ”¯æŒè¶…级ç€è‰²å™¨ï¼Œå› ä¸ºå…¶å¤æ‚度较高。"
#: doc/classes/ProjectSettings.xml
msgid ""
@@ -59742,10 +59868,10 @@ msgid ""
"recovered by enabling contrast-adaptive sharpening (see [member rendering/"
"quality/filters/sharpen_intensity])."
msgstr ""
-"在根视窗中å¯ç”¨FXAA。FXAAæ˜¯ä¸€ç§æµè¡Œçš„å±å¹•空间抗锯齿方法,它速度快,但会使图åƒ"
-"看起æ¥å¾ˆæ¨¡ç³Šï¼Œç‰¹åˆ«æ˜¯åœ¨ä½Žåˆ†è¾¨çŽ‡ä¸‹ã€‚åœ¨1440på’Œ4K这样的大分辨率下,å¯ä»¥å·¥ä½œå¾—比较"
-"好。一些æŸå¤±çš„é”度å¯ä»¥é€šè¿‡å¯ç”¨å¯¹æ¯”度适应性é”åŒ–æ¥æ¢å¤ï¼Œå‚阅[member rendering/"
-"quality/filters/sharpen_intensity]。"
+"在根 Viewport 中å¯ç”¨ FXAA。FXAA æ˜¯ä¸€ç§æµè¡Œçš„å±å¹•空间抗锯齿方法,它速度快,但"
+"会使图åƒçœ‹èµ·æ¥å¾ˆæ¨¡ç³Šï¼Œç‰¹åˆ«æ˜¯åœ¨ä½Žåˆ†è¾¨çŽ‡ä¸‹ã€‚åœ¨ 1440p å’Œ 4K 这样的大分辨率下,å¯"
+"以工作得比较好。一些æŸå¤±çš„é”度å¯ä»¥é€šè¿‡å¯ç”¨å¯¹æ¯”度适应性é”åŒ–æ¥æ¢å¤ï¼Œå‚阅 "
+"[member rendering/quality/filters/sharpen_intensity]。"
#: doc/classes/ProjectSettings.xml
msgid ""
@@ -60597,19 +60723,18 @@ msgstr ""
"一个浮点[i]值[/i],用于[i]步进[/i]å’Œ[i]页é¢[/i],例如[ScrollBar]。"
#: doc/classes/Range.xml
-#, fuzzy
msgid ""
"Binds two [Range]s 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 ""
-"将两个范围和之å‰ä¸Žå®ƒä»¬ä¸­ä»»ä½•一个分组的任何范围绑定在一起。当任何一个范围的æˆ"
-"员å˜é‡æ”¹å˜æ—¶ï¼Œå®ƒå°†ä¸Žå®ƒçš„组中的所有其他范围共享新的值。"
+"将两个 [Range] 绑定,之å‰å·²ä¸Žä¸¤è€…之中的任何一个组åˆçš„ Range 也会被绑定在一"
+"起。其中任何一个 Range çš„æˆå‘˜å˜é‡æ”¹å˜æ—¶ï¼Œå®ƒå°†ä¸Žå®ƒçš„组中的所有其他 Range 共享"
+"新值。"
#: doc/classes/Range.xml
-#, fuzzy
msgid "Stops the [Range] from sharing its member variables with any other."
-msgstr "åœæ­¢ä¸Žä»»ä½•å…¶ä»–æˆå‘˜å˜é‡å…±äº«å…¶æˆå‘˜å˜é‡çš„范围。"
+msgstr "使该 [Range] åœæ­¢ä¸Žä»»ä½•å…¶ä»– Range 共享其æˆå‘˜å˜é‡ã€‚"
#: doc/classes/Range.xml
msgid ""
@@ -60696,6 +60821,11 @@ msgid ""
"value_changed] is also emitted when [code]value[/code] is set directly via "
"code."
msgstr ""
+"[member value] å˜åŒ–时触å‘。用于 [Slider] 时,拖拽时会连续调用(å¯èƒ½æ¯å¸§éƒ½ä¼šè°ƒ"
+"用)。如果你在与 [signal value_changed] 相连的函数中执行较昂贵的æ“作,请考虑"
+"使用 [Timer] [i]去除抖动[/i],é™ä½Žè¯¥å‡½æ•°çš„调用频率。\n"
+"[b]注æ„:[/b]与 [signal LineEdit.text_changed] 等信å·ä¸åŒï¼Œ[signal "
+"value_changed] 还会在 [code]value[/code] 由代ç ç›´æŽ¥ä¿®æ”¹æ—¶è§¦å‘。"
#: doc/classes/RayCast.xml doc/classes/RayCast2D.xml
msgid "Query the closest object intersecting a ray."
@@ -61879,11 +62009,11 @@ msgid ""
"performs custom logic to properly set the proxy texture and flags in the "
"local viewport."
msgstr ""
-"当å¯ç”¨äº†[member resource_local_to_scene]的资æºä»Ž[PackedScene]实例化中加载时,"
-"这个方法会被调用。它的行为å¯ä»¥é€šè¿‡è¦†ç›–脚本中的[method _setup_local_to_scene]"
-"进行定制。\n"
-"对于大多数资æºï¼Œè¯¥æ–¹æ³•䏿‰§è¡Œä»»ä½•基本逻辑。[ViewportTexture]执行自定义逻辑以正"
-"确设置本地视窗中的代ç†çº¹ç†å’Œæ ‡å¿—。"
+"当å¯ç”¨äº† [member resource_local_to_scene] 的资æºä»Ž [PackedScene] 实例化中加载"
+"时,这个方法会被调用。它的行为å¯ä»¥é€šè¿‡è¦†ç›–脚本中的 [method "
+"_setup_local_to_scene] 进行定制。\n"
+"对于大多数资æºï¼Œè¯¥æ–¹æ³•䏿‰§è¡Œä»»ä½•基本逻辑。[ViewportTexture] 执行自定义逻辑以"
+"正确设置本地视窗中的代ç†çº¹ç†å’Œæ ‡å¿—。"
#: doc/classes/Resource.xml
msgid ""
@@ -66621,8 +66751,8 @@ msgid ""
"its rotation and translation by performing Gram-Schmidt orthonormalization "
"on this node's [Transform]."
msgstr ""
-"通过对该节点的[Transform]进行Gram-Schmidtæ­£åˆ™åŒ–ï¼Œé‡æ–°è®¾ç½®è¯¥èŠ‚ç‚¹çš„å˜æ¢ï¼ˆå¦‚比"
-"例ã€å€¾æ–œå’Œé”¥åº¦ï¼‰ï¼Œä¿ç•™å…¶æ—‹è½¬å’Œå¹³ç§»ã€‚"
+"通过对该节点的 [Transform] 进行 Gram-Schmidt æ­£åˆ™åŒ–ï¼Œé‡æ–°è®¾ç½®è¯¥èŠ‚ç‚¹çš„å˜æ¢ï¼ˆå¦‚"
+"比例ã€å€¾æ–œå’Œé”¥åº¦ï¼‰ï¼Œä¿ç•™å…¶æ—‹è½¬å’Œå¹³ç§»ã€‚"
#: doc/classes/Spatial.xml
msgid ""
@@ -69876,7 +70006,6 @@ msgstr ""
"[code]: / \\ ? * \" | % < >[/code]"
#: doc/classes/String.xml
-#, fuzzy
msgid ""
"Returns [code]true[/code] if this string contains a valid float. This is "
"inclusive of integers, and also supports exponents:\n"
@@ -69891,11 +70020,11 @@ msgstr ""
"å¦‚æžœè¯¥å­—ç¬¦ä¸²åŒ…å«æœ‰æ•ˆçš„æµ®ç‚¹æ•°ï¼Œåˆ™è¿”回 [code]true[/code]ã€‚åŒ…å«æ•´æ•°ï¼Œä¹Ÿæ”¯æŒæŒ‡æ•°"
"幂:\n"
"[codeblock]\n"
-"print(\"1.7\".is_valid_float()) # 输出“trueâ€\n"
-"print(\"24\".is_valid_float()) # 输出“trueâ€\n"
-"print(\"7e3\".is_valid_float()) # 输出“trueâ€\n"
-"print(\"24\".is_valid_float()) # 输出“trueâ€\n"
-"print(\"Hello\".is_valid_float()) # 输出“falseâ€\n"
+"print(\"1.7\".is_valid_float()) # 输出“Trueâ€\n"
+"print(\"24\".is_valid_float()) # 输出“Trueâ€\n"
+"print(\"7e3\".is_valid_float()) # 输出“Trueâ€\n"
+"print(\"24\".is_valid_float()) # 输出“Trueâ€\n"
+"print(\"Hello\".is_valid_float()) # 输出“Falseâ€\n"
"[/codeblock]"
#: doc/classes/String.xml
@@ -69921,7 +70050,6 @@ msgstr ""
"[code]false[/code]。"
#: doc/classes/String.xml
-#, fuzzy
msgid ""
"Returns [code]true[/code] if this string is a valid identifier. A valid "
"identifier may contain only letters, digits and underscores ([code]_[/code]) "
@@ -69935,13 +70063,12 @@ msgstr ""
"该字符串为有效标识符时,返回 [code]true[/code]。有效标识符仅能够包å«å­—æ¯ã€æ•°"
"å­—ã€ä¸‹åˆ’线([code]_[/code]),并且ä¸èƒ½ä»¥æ•°å­—开头。\n"
"[codeblock]\n"
-"print(\"good_ident_1\".is_valid_identifier()) # 输出“trueâ€\n"
-"print(\"1st_bad_ident\".is_valid_identifier()) # 输出“falseâ€\n"
-"print(\"bad_ident_#2\".is_valid_identifier()) # 输出“falseâ€\n"
+"print(\"good_ident_1\".is_valid_identifier()) # 输出“Trueâ€\n"
+"print(\"1st_bad_ident\".is_valid_identifier()) # 输出“Falseâ€\n"
+"print(\"bad_ident_#2\".is_valid_identifier()) # 输出“Falseâ€\n"
"[/codeblock]"
#: doc/classes/String.xml
-#, fuzzy
msgid ""
"Returns [code]true[/code] if this string contains a valid integer.\n"
"[codeblock]\n"
@@ -69954,11 +70081,11 @@ msgid ""
msgstr ""
"å¦‚æžœè¯¥å­—ç¬¦ä¸²åŒ…å«æœ‰æ•ˆçš„æ•´æ•°ï¼Œåˆ™è¿”回 [code]true[/code]\n"
"[codeblock]\n"
-"print(\"7\".is_valid_int()) # 输出“trueâ€\n"
-"print(\"14.6\".is_valid_int()) # 输出“falseâ€\n"
-"print(\"L\".is_valid_int()) # 输出“falseâ€\n"
-"print(\"+3\".is_valid_int()) # 输出“trueâ€\n"
-"print(\"-12\".is_valid_int()) # 输出“trueâ€\n"
+"print(\"7\".is_valid_int()) # 输出“Trueâ€\n"
+"print(\"14.6\".is_valid_int()) # 输出“Falseâ€\n"
+"print(\"L\".is_valid_int()) # 输出“Falseâ€\n"
+"print(\"+3\".is_valid_int()) # 输出“Trueâ€\n"
+"print(\"-12\".is_valid_int()) # 输出“Trueâ€\n"
"[/codeblock]"
#: doc/classes/String.xml
@@ -70193,6 +70320,7 @@ msgid "Returns the right side of the string from a given position."
msgstr "返回该字符串指定ä½ç½®å³ä¾§çš„内容。"
#: doc/classes/String.xml
+#, fuzzy
msgid ""
"Splits the string by a [code]delimiter[/code] string and returns an array of "
"the substrings, starting from right.\n"
@@ -70206,8 +70334,8 @@ msgid ""
"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"
+"print(some_array[0]) # Prints \"One,Two,Three\"\n"
+"print(some_array[1]) # Prints \"Four\"\n"
"[/codeblock]"
msgstr ""
"从å³ä¾§å¼€å§‹ï¼Œé€šè¿‡ [code]delimiter[/code] 字符串拆分字符串并返回å­å­—符串数"
@@ -72152,11 +72280,12 @@ msgid "Returns if the given line is wrapped."
msgstr "è¿”å›žç»™å®šçš„è¡Œæ˜¯å¦æ¢è¡Œã€‚"
#: doc/classes/TextEdit.xml
-#, fuzzy
msgid ""
"Returns whether the mouse is over selection. If [code]edges[/code] is "
"[code]true[/code], the edges are considered part of the selection."
-msgstr "返回节点[code]id[/code]å’Œ[code]dst_id[/code]是å¦åœ¨æŒ‡å®šçš„æ’æ§½ä¸Šè¿žæŽ¥ã€‚"
+msgstr ""
+"返回鼠标是å¦ä½äºŽé€‰åŒºä¹‹ä¸Šã€‚如果 [code]edges[/code] 为 [code]true[/code],则边"
+"界会被认为是选区的一部分。"
#: doc/classes/TextEdit.xml
msgid "Returns [code]true[/code] if the selection is active."
@@ -73239,7 +73368,7 @@ msgstr ""
"用于在用户界é¢ä¸Šç»˜åˆ¶å›¾æ ‡å’Œç²¾çµã€‚纹ç†çš„ä½ç½®å¯ä»¥é€šè¿‡ [member stretch_mode] 属性"
"æ¥æŽ§åˆ¶ã€‚å®ƒå¯ä»¥ç¼©æ”¾ã€å¹³é“ºï¼Œæˆ–è€…åœ¨å…¶è¾¹ç•ŒçŸ©å½¢å†…ä¿æŒå±…中。\n"
"[b]注æ„:[/b]当使用 TextureRect æ¥æ˜¾ç¤º [ViewportTexture] 时,你应该å¯ç”¨ "
-"[member flip_v]。或者,你也å¯ä»¥åœ¨è§†çª—上å¯ç”¨ [member Viewport."
+"[member flip_v]。或者,你也å¯ä»¥åœ¨ Viewport 上å¯ç”¨ [member Viewport."
"render_target_v_flip]。å¦åˆ™ï¼Œå›¾åƒä¼šå‡ºçŽ°ä¸Šä¸‹é¢ å€’çš„æƒ…å†µã€‚"
#: doc/classes/TextureRect.xml
@@ -74885,6 +75014,8 @@ msgid ""
"For example, -480 returns \"-08:00\", 345 returns \"+05:45\", and 0 returns "
"\"+00:00\"."
msgstr ""
+"将给定的时区å移分钟数转æ¢ä¸ºæ—¶åŒºå移字符串。例如,-480 返回 \"-08:00\"ã€345 "
+"返回 \"+05:45\"ã€0 返回 \"+00:00\"。"
#: doc/classes/Time.xml
msgid ""
@@ -78783,10 +78914,11 @@ msgid ""
"[PhysicsBody] class."
msgstr ""
"此节点实现了模拟汽车所需的所有物ç†é€»è¾‘。它是基于物ç†å¼•擎中常è§çš„射线投射的车"
-"辆系统。你需è¦ä¸ºè½¦çš„主体添加一个[CollisionShape],并为车轮添加[VehicleWheel]"
-"节点。还应该为汽车的三维模型添加一个[MeshInstance]节点,但这个模型ä¸åº”该包括"
-"车轮的网格。你应该通过使用[member brake]ã€[member engine_force]å’Œ [member "
-"steering] å±žæ€§æ¥æŽ§åˆ¶è½¦è¾†ï¼Œè€Œä¸æ˜¯ç›´æŽ¥æ”¹å˜è¿™ä¸ªèŠ‚ç‚¹çš„ä½ç½®æˆ–æ–¹å‘。\n"
+"辆系统。你需è¦ä¸ºè½¦çš„主体添加一个 [CollisionShape],并为车轮添加 "
+"[VehicleWheel] 节点。还应该为汽车的 3D 模型添加一个 [MeshInstance] 节点,但这"
+"个模型ä¸åº”该包括车轮的网格。你应该通过使用 [member brake]ã€[member "
+"engine_force] å’Œ [member steering] å±žæ€§æ¥æŽ§åˆ¶è½¦è¾†ï¼Œè€Œä¸æ˜¯ç›´æŽ¥æ”¹å˜è¿™ä¸ªèŠ‚ç‚¹çš„ä½"
+"置或方å‘。\n"
"[b]注æ„:[/b]ä½ çš„ VehicleBody 的原点将决定你的车辆的é‡å¿ƒï¼Œæ‰€ä»¥æœ€å¥½ä¿æŒä½Žä½ï¼Œ"
"并将 [CollisionShape] 和 [MeshInstance] 往上移。\n"
"[b]注æ„:[/b]è¿™ä¸ªç±»æœ‰å·²çŸ¥çš„é—®é¢˜ï¼Œå¹¶ä¸æ˜¯ä¸ºäº†æä¾›çœŸå®žçš„ 3D 车辆物ç†è€Œè®¾è®¡ã€‚如果"
@@ -78848,10 +78980,10 @@ msgid ""
"probably have to write your own physics integration using another "
"[PhysicsBody] class."
msgstr ""
-"此节点需è¦ä½œä¸º[VehicleBody]çš„å­èŠ‚ç‚¹ä½¿ç”¨ï¼Œå¹¶æ¨¡æ‹Ÿå…¶è½¦è½®çš„è¡Œä¸ºã€‚å…¶èŠ‚ç‚¹ä¹Ÿä½œä¸ºç¢°æ’ž"
-"å™¨æ¥æ£€æµ‹è½¦è½®æ˜¯å¦æŽ¥è§¦åˆ°è¡¨é¢ã€‚\n"
-"[b]注æ„:[/b] è¿™ä¸ªç±»æœ‰å·²çŸ¥çš„é—®é¢˜ï¼Œå¹¶ä¸æ˜¯ä¸ºäº†æä¾›çœŸå®žçš„三维车辆物ç†è€Œè®¾è®¡çš„。"
-"如果你想è¦å…ˆè¿›çš„车辆物ç†ï¼Œé¡»ä½¿ç”¨å¦ä¸€ä¸ª[PhysicsBody]ç±»æ¥ç¼–写你自己的物ç†é›†æˆã€‚"
+"此节点需è¦ä½œä¸º [VehicleBody] çš„å­èŠ‚ç‚¹ä½¿ç”¨ï¼Œå¹¶æ¨¡æ‹Ÿå…¶è½¦è½®çš„è¡Œä¸ºã€‚å…¶èŠ‚ç‚¹ä¹Ÿä½œä¸ºç¢°"
+"æ’žå™¨æ¥æ£€æµ‹è½¦è½®æ˜¯å¦æŽ¥è§¦åˆ°è¡¨é¢ã€‚\n"
+"[b]注æ„:[/b]è¿™ä¸ªç±»æœ‰å·²çŸ¥çš„é—®é¢˜ï¼Œå¹¶ä¸æ˜¯ä¸ºäº†æä¾›çœŸå®žçš„ 3D 车辆物ç†è€Œè®¾è®¡çš„。如"
+"果你想è¦å…ˆè¿›çš„车辆物ç†ï¼Œé¡»ä½¿ç”¨å¦ä¸€ä¸ª [PhysicsBody] ç±»æ¥ç¼–写你自己的物ç†é›†æˆã€‚"
#: doc/classes/VehicleWheel.xml
msgid ""
@@ -79378,9 +79510,9 @@ msgid ""
"[/codeblock]"
msgstr ""
"返回视窗的纹ç†ã€‚\n"
-"[b]注æ„:[/b] 由于OpenGL的工作方å¼ï¼Œäº§ç”Ÿçš„[ViewportTexture]是垂直翻转的。你å¯"
-"以在[method Texture.get_data]的结果上使用[method Image.flip_y]æ¥å°†å…¶ç¿»è½¬å›ž"
-"去,例如。\n"
+"[b]注æ„:[/b]由于 OpenGL 的工作方å¼ï¼Œäº§ç”Ÿçš„ [ViewportTexture] 是垂直翻转的。"
+"ä½ å¯ä»¥åœ¨ [method Texture.get_data] 的结果上使用 [method Image.flip_y] æ¥å°†å…¶"
+"翻转回去,例如:\n"
"[codeblock]\n"
"var img = get_viewport().get_texture().get_data()\n"
"img.flip_y()\n"
@@ -79406,9 +79538,8 @@ msgid "Returns [code]true[/code] if there are visible modals on-screen."
msgstr "如果å±å¹•上有å¯è§çš„æ¨¡åž‹ï¼Œè¿”回[code]true[/code]。"
#: doc/classes/Viewport.xml
-#, fuzzy
msgid "Returns [code]true[/code] if the drag operation is successful."
-msgstr "如果选择处于活动状æ€ï¼Œåˆ™è¿”回 [code]true[/code]。"
+msgstr "如果拖拽æ“作æˆåŠŸï¼Œåˆ™è¿”å›ž [code]true[/code]。"
#: doc/classes/Viewport.xml
msgid ""
@@ -79430,8 +79561,8 @@ msgid ""
"[Viewport] but makes you responsible for updating the position of this "
"[Viewport] manually."
msgstr ""
-"用指定的矩形将这个[Viewport]附加到根[Viewport]视窗上。这就绕过了å¦ä¸€ä¸ªèŠ‚ç‚¹æ¥"
-"显示这个[Viewport]的需è¦ï¼Œä½†è®©ä½ è´Ÿè´£æ‰‹åŠ¨æ›´æ–°è¿™ä¸ª[Viewport]çš„åæ ‡ã€‚"
+"用指定的矩形将这个 [Viewport] 附加到根 [Viewport] 上。这就绕过了å¦ä¸€ä¸ªèŠ‚ç‚¹æ¥"
+"显示这个 [Viewport] 的需è¦ï¼Œä½†è®©ä½ è´Ÿè´£æ‰‹åŠ¨æ›´æ–°è¿™ä¸ª [Viewport] çš„åæ ‡ã€‚"
#: doc/classes/Viewport.xml
msgid "Stops the input from propagating further down the [SceneTree]."
@@ -79617,10 +79748,10 @@ 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]。"
+"如果为 [code]true[/code],会直接将 Viewport 渲染到å±å¹•ä¸Šï¼Œè€Œä¸æ˜¯æ¸²æŸ“到根视窗"
+"上。åªåœ¨ GLES2 中å¯ç”¨ã€‚这是一个低级别的优化,在大多数情况下ä¸åº”该使用。如果使"
+"用,从 Viewport 或从 [code]SCREEN_TEXTURE[/code] 读å–å°†å˜å¾—ä¸å¯ç”¨ã€‚更多信æ¯å‚"
+"阅 [method VisualServer.viewport_set_render_direct_to_screen]。"
#: doc/classes/Viewport.xml
msgid ""
@@ -82312,25 +82443,26 @@ msgid ""
"viewport, or it needs to be the child of another canvas item that is "
"eventually attached to the canvas."
msgstr ""
-"任何å¯è§å¯¹è±¡çš„æœåŠ¡ã€‚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"
-"在3D中,所有的视觉对象都必须与一个场景相关è”。场景是世界的一个视觉表现。如果"
-"从一个正在è¿è¡Œçš„æ¸¸æˆä¸­è®¿é—®è§†è§‰æœåŠ¡ï¼Œåœºæ™¯å¯ä»¥é€šè¿‡[method Spatial.get_world]从"
-"场景树中的任何[Spatial]节点访问。å¦å¤–,å¯ä»¥ç”¨[method scenario_create]创建一个"
-"场景。\n"
+"任何å¯è§å¯¹è±¡çš„æœåŠ¡ã€‚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"
+"在 3D 中,所有的视觉对象都必须与一个场景相关è”。场景是世界的一个视觉表现。如"
+"果从一个正在è¿è¡Œçš„æ¸¸æˆä¸­è®¿é—®è§†è§‰æœåŠ¡ï¼Œåœºæ™¯å¯ä»¥é€šè¿‡ [method Spatial."
+"get_world] 从场景树中的任何 [Spatial] 节点访问。å¦å¤–,å¯ä»¥ç”¨ [method "
+"scenario_create] 创建一个场景。\n"
"相类似地,在2D中,需è¦ä¸€ä¸ªç”»å¸ƒæ¥ç»˜åˆ¶æ‰€æœ‰çš„画布项目。\n"
-"在3D中,所有å¯è§çš„对象都是由资æºå’Œå®žä¾‹ç»„æˆã€‚资æºå¯ä»¥æ˜¯ç½‘æ ¼ã€ç²’å­ç³»ç»Ÿã€å…‰æˆ–ä»»"
-"何其他3D对象。为了使资æºå¯è§ï¼Œå¿…须使用[method instance_set_base]连接到一个实"
-"例。实例也必须使用[method instance_set_scenario]附加到场景中,以便å¯è§ã€‚\n"
-"在2D中,所有å¯è§å¯¹è±¡éƒ½æ˜¯æŸç§å½¢å¼çš„画布项目。为了å¯è§ï¼Œä¸€ä¸ªç”»å¸ƒé¡¹éœ€è¦æ˜¯è¿žæŽ¥åˆ°"
-"视窗的画布的å­é¡¹ï¼Œæˆ–è€…å®ƒéœ€è¦æ˜¯æœ€ç»ˆè¿žæŽ¥åˆ°ç”»å¸ƒçš„å¦ä¸€ä¸ªç”»å¸ƒé¡¹çš„å­é¡¹ã€‚"
+"在 3D 中,所有å¯è§çš„对象都是由资æºå’Œå®žä¾‹ç»„æˆã€‚资æºå¯ä»¥æ˜¯ç½‘æ ¼ã€ç²’å­ç³»ç»Ÿã€å…‰æˆ–"
+"任何其他 3D 对象。为了使资æºå¯è§ï¼Œå¿…须使用 [method instance_set_base] 连接到"
+"一个实例。实例也必须使用 [method instance_set_scenario] 附加到场景中,以便å¯"
+"è§ã€‚\n"
+"在 2D 中,所有å¯è§å¯¹è±¡éƒ½æ˜¯æŸç§å½¢å¼çš„画布项目。为了å¯è§ï¼Œä¸€ä¸ªç”»å¸ƒé¡¹éœ€è¦æ˜¯è¿žæŽ¥"
+"到视窗的画布的å­é¡¹ï¼Œæˆ–è€…å®ƒéœ€è¦æ˜¯æœ€ç»ˆè¿žæŽ¥åˆ°ç”»å¸ƒçš„å¦ä¸€ä¸ªç”»å¸ƒé¡¹çš„å­é¡¹ã€‚"
#: doc/classes/VisualServer.xml
msgid "Sets images to be rendered in the window margin."
@@ -82530,7 +82662,7 @@ msgstr "为 [CanvasItem] 定义一个自定义的绘图矩形。"
msgid ""
"Enables the use of distance fields for GUI elements that are rendering "
"distance field based fonts."
-msgstr "为正在渲染基于è·ç¦»å­—段的字体的GUI元素,å¯ç”¨è·ç¦»å­—段。"
+msgstr "为正在渲染基于è·ç¦»å­—段的字体的 GUI 元素,å¯ç”¨è·ç¦»åœºã€‚"
#: doc/classes/VisualServer.xml
msgid "Sets [CanvasItem] to be drawn behind its parent."
@@ -84890,13 +85022,13 @@ msgstr ""
msgid ""
"Emitted at the end of the frame, after the VisualServer has finished "
"updating all the Viewports."
-msgstr "在VisualServerå®Œæˆæ›´æ–°æ‰€æœ‰è§†çª—åŽï¼Œåœ¨å¸§çš„æœ€åŽå‘出。"
+msgstr "在 VisualServer å®Œæˆæ›´æ–°æ‰€æœ‰ Viewport åŽï¼Œåœ¨å¸§çš„æœ€åŽå‘出。"
#: doc/classes/VisualServer.xml
msgid ""
"Emitted at the beginning of the frame, before the VisualServer updates all "
"the Viewports."
-msgstr "在VisualServer更新所有视窗之å‰ï¼Œåœ¨å¸§çš„开始å‘出。"
+msgstr "在 VisualServer 更新所有 Viewport 之å‰ï¼Œåœ¨å¸§çš„开始å‘出。"
#: doc/classes/VisualServer.xml
msgid "Marks an error that shows that the index array is empty."
@@ -84921,7 +85053,7 @@ msgstr "å¯ç”¨äºŽå‘å…‰åŽæœŸå¤„ç†æ•ˆæžœçš„æœ€å¤§å‘光级别数。"
#: doc/classes/VisualServer.xml
msgid "Unused enum in Godot 3.x."
-msgstr "在Godot 3.x中未使用的枚举。"
+msgstr "在 Godot 3.x 中未使用的枚举。"
#: doc/classes/VisualServer.xml
msgid "The minimum renderpriority of all materials."
@@ -84937,15 +85069,15 @@ msgstr "标记立方体贴图的左侧。"
#: doc/classes/VisualServer.xml
msgid "Marks the right side of a cubemap."
-msgstr "标记立方体贴图cubemapçš„å³ä¾§ã€‚"
+msgstr "标记立方体贴图的å³ä¾§ã€‚"
#: doc/classes/VisualServer.xml
msgid "Marks the bottom side of a cubemap."
-msgstr "标记立方体图cubemap的底部。"
+msgstr "标记立方体贴图的底部。"
#: doc/classes/VisualServer.xml
msgid "Marks the top side of a cubemap."
-msgstr "标记cubemap的顶é¢ã€‚"
+msgstr "标记立方体贴图的顶部。"
#: doc/classes/VisualServer.xml
msgid "Marks the front side of a cubemap."
@@ -85325,19 +85457,19 @@ msgstr ""
#: doc/classes/VisualServer.xml
msgid "The Viewport does not render 3D but samples."
-msgstr "è§†çª—å¹¶ä¸æ¸²æŸ“3D,而是渲染采样。"
+msgstr "Viewport 䏿¸²æŸ“ 3D 内容,但进行采样。"
#: doc/classes/VisualServer.xml
msgid "The Viewport does not render 3D and does not sample."
-msgstr "è§†çª—å¹¶ä¸æ¸²æŸ“3D,也ä¸è¿›è¡Œé‡‡æ ·ã€‚"
+msgstr "Viewport 䏿¸²æŸ“ 3D 内容,ä¸è¿›è¡Œé‡‡æ ·ã€‚"
#: doc/classes/VisualServer.xml
msgid "The Viewport renders 3D with effects."
-msgstr "视窗渲染 3D 效果。"
+msgstr "Viewport 渲染 3D 内容,带特效。"
#: doc/classes/VisualServer.xml
msgid "The Viewport renders 3D but without effects."
-msgstr "视窗渲染的是3D,但没有效果。"
+msgstr "Viewport 渲染 3D 内容,ä¸å¸¦ç‰¹æ•ˆã€‚"
#: doc/classes/VisualServer.xml
msgid "Number of objects drawn in a single frame."
diff --git a/doc/translations/zh_TW.po b/doc/translations/zh_TW.po
index 633dc45410..a702f66017 100644
--- a/doc/translations/zh_TW.po
+++ b/doc/translations/zh_TW.po
@@ -3429,8 +3429,12 @@ msgstr ""
#: doc/classes/@GlobalScope.xml
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]."
+"pick in a list specified via a hint string.\n"
+"The hint string is a comma separated list of names such as [code]\"Hello,"
+"Something,Else\"[/code]. For integer and float properties, the first name in "
+"the list has value 0, the next 1, and so on. Explicit values can also be "
+"specified by appending [code]:integer[/code] to the name, e.g. [code]\"Zero,"
+"One,Three:3,Four,Six:6\"[/code]."
msgstr ""
#: doc/classes/@GlobalScope.xml
@@ -5344,8 +5348,11 @@ msgstr ""
#: doc/classes/AnimationNodeBlendTree.xml
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."
+"This node may contain a sub-tree of any other blend type nodes, such as "
+"[AnimationNodeTransition], [AnimationNodeBlend2], [AnimationNodeBlend3], "
+"[AnimationNodeOneShot], etc. This is one of the most commonly used roots.\n"
+"An [AnimationNodeOutput] node named [code]output[/code] is created by "
+"default."
msgstr ""
#: doc/classes/AnimationNodeBlendTree.xml
@@ -10468,8 +10475,15 @@ msgstr ""
#: doc/classes/BakedLightmap.xml
msgid ""
-"When enabled, the lightmapper will merge the textures for all meshes into a "
-"single large layered texture. Not supported in GLES2."
+"If [code]true[/code], the lightmapper will merge the textures for all meshes "
+"into one or several large layered textures. If [code]false[/code], every "
+"mesh will get its own lightmap texture, which is less efficient.\n"
+"[b]Note:[/b] Atlas lightmap rendering is only supported in GLES3, [i]not[/i] "
+"GLES2. Non-atlas lightmap rendering is supported by both GLES3 and GLES2. If "
+"[member ProjectSettings.rendering/quality/driver/fallback_to_gles2] is "
+"[code]true[/code], consider baking lightmaps with [member atlas_generate] "
+"set to [code]false[/code] so that the resulting lightmap is visible in both "
+"GLES3 and GLES2."
msgstr ""
#: doc/classes/BakedLightmap.xml
@@ -12625,14 +12639,15 @@ msgstr ""
#: doc/classes/CanvasItem.xml
msgid ""
-"If [code]enable[/code] is [code]true[/code], children will be updated with "
-"local transform data."
+"If [code]enable[/code] is [code]true[/code], this node will receive "
+"[constant NOTIFICATION_LOCAL_TRANSFORM_CHANGED] when its local transform "
+"changes."
msgstr ""
#: doc/classes/CanvasItem.xml
msgid ""
-"If [code]enable[/code] is [code]true[/code], children will be updated with "
-"global transform data."
+"If [code]enable[/code] is [code]true[/code], this node will receive "
+"[constant NOTIFICATION_TRANSFORM_CHANGED] when its global transform changes."
msgstr ""
#: doc/classes/CanvasItem.xml
@@ -12746,9 +12761,14 @@ msgstr ""
#: doc/classes/CanvasItem.xml
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]."
+"The [CanvasItem]'s global transform has changed. This notification is only "
+"received if enabled by [method set_notify_transform]."
+msgstr ""
+
+#: doc/classes/CanvasItem.xml
+msgid ""
+"The [CanvasItem]'s local transform has changed. This notification is only "
+"received if enabled by [method set_notify_local_transform]."
msgstr ""
#: doc/classes/CanvasItem.xml
@@ -19722,9 +19742,8 @@ msgid ""
"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"
+"OpenType ([code].otf[/code]), Web Open Font Format 1 ([code].woff[/code]), "
+"and Web Open Font Format 2 ([code].woff2[/code]).\n"
"[codeblock]\n"
"var dynamic_font = DynamicFont.new()\n"
"dynamic_font.font_data = load(\"res://BarlowCondensed-Bold.ttf\")\n"
@@ -22515,12 +22534,13 @@ msgstr ""
#: doc/classes/EditorVCSInterface.xml
msgid ""
"Helper function to create a commit [Dictionary] item. [code]msg[/code] is "
-"the commit message of the commit. [code]author[/code] is a human-readable "
-"string containing the author's details, e.g. the email and name configured "
-"in the VCS. [code]id[/code] is the identifier of the commit, in whichever "
-"format your VCS may provide an identifier to commits. [code]date[/code] is "
-"directly added to the commit item and displayed in the editor, and hence, it "
-"shall be a well-formatted, human-readable date string."
+"the commit message of the commit. [code]author[/code] is a single human-"
+"readable string containing all the author's details, e.g. the email and name "
+"configured in the VCS. [code]id[/code] is the identifier of the commit, in "
+"whichever format your VCS may provide an identifier to commits. "
+"[code]unix_timestamp[/code] is the UTC Unix timestamp of when the commit was "
+"created. [code]offset_minutes[/code] is the timezone offset in minutes, "
+"recorded from the system timezone where the commit was created."
msgstr ""
#: doc/classes/EditorVCSInterface.xml
@@ -29120,9 +29140,9 @@ 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."
+"If [code]exact[/code] is [code]false[/code], it ignores additional input "
+"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the "
+"direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/Input.xml
@@ -29132,9 +29152,9 @@ msgid ""
"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."
+"If [code]exact[/code] is [code]false[/code], it ignores additional input "
+"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the "
+"direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/Input.xml
@@ -29267,9 +29287,9 @@ msgid ""
"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.\n"
+"If [code]exact[/code] is [code]false[/code], it ignores additional input "
+"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the "
+"direction for [InputEventJoypadMotion] events.\n"
"[b]Note:[/b] Due to keyboard ghosting, [method is_action_just_pressed] may "
"return [code]false[/code] even if one of the action's keys is pressed. See "
"[url=$DOCS_URL/tutorials/inputs/input_examples.html#keyboard-events]Input "
@@ -29281,9 +29301,9 @@ 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."
+"If [code]exact[/code] is [code]false[/code], it ignores additional input "
+"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the "
+"direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/Input.xml
@@ -29292,9 +29312,9 @@ msgid ""
"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.\n"
+"If [code]exact[/code] is [code]false[/code], it ignores additional input "
+"modifiers for [InputEventKey] and [InputEventMouseButton] events, and the "
+"direction for [InputEventJoypadMotion] events.\n"
"[b]Note:[/b] Due to keyboard ghosting, [method is_action_pressed] may return "
"[code]false[/code] even if one of the action's keys is pressed. See "
"[url=$DOCS_URL/tutorials/inputs/input_examples.html#keyboard-events]Input "
@@ -29644,18 +29664,18 @@ msgstr ""
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."
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/InputEvent.xml
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."
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/InputEvent.xml
@@ -29664,9 +29684,9 @@ msgid ""
"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.\n"
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events.\n"
"[b]Note:[/b] Due to keyboard ghosting, [method is_action_pressed] may return "
"[code]false[/code] even if one of the action's keys is pressed. See "
"[url=$DOCS_URL/tutorials/inputs/input_examples.html#keyboard-events]Input "
@@ -29678,9 +29698,9 @@ 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."
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/InputEvent.xml
@@ -29711,9 +29731,9 @@ msgid ""
"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."
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/InputEvent.xml
@@ -30244,9 +30264,9 @@ msgid ""
"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."
+"If [code]exact_match[/code] is [code]false[/code], it ignores additional "
+"input modifiers for [InputEventKey] and [InputEventMouseButton] events, and "
+"the direction for [InputEventJoypadMotion] events."
msgstr ""
#: doc/classes/InputMap.xml
@@ -34084,6 +34104,39 @@ msgid "Returns the number of surface materials."
msgstr ""
#: doc/classes/MeshInstance.xml
+msgid ""
+"Returns [code]true[/code] if this [MeshInstance] can be merged with the "
+"specified [code]other_mesh_instance[/code], using the [method MeshInstance."
+"merge_meshes] function.\n"
+"In order to be mergeable, properties of the [MeshInstance] must match, and "
+"each surface must match, in terms of material, attributes and vertex format."
+msgstr ""
+
+#: doc/classes/MeshInstance.xml
+msgid ""
+"This function can merge together the data from several source "
+"[MeshInstance]s into a single destination [MeshInstance] (the MeshInstance "
+"the function is called from). This is primarily useful for improving "
+"performance by reducing the number of drawcalls and [Node]s.\n"
+"Merging should only be attempted for simple meshes that do not contain "
+"animation.\n"
+"The final vertices can either be returned in global space, or in local space "
+"relative to the destination [MeshInstance] global transform (the destination "
+"Node must be inside the [SceneTree] for local space to work).\n"
+"The function will make a final check for compatibility between the "
+"[MeshInstance]s by default, this should always be used unless you have "
+"previously checked for compatibility using [method MeshInstance."
+"is_mergeable_with]. If the compatibility check is omitted and the meshes are "
+"merged, you may see rendering errors.\n"
+"[b]Note:[/b] The requirements for similarity between meshes are quite "
+"stringent. They can be checked using the [method MeshInstance."
+"is_mergeable_with] function prior to calling [method MeshInstance."
+"merge_meshes].\n"
+"Also note that any initial data in the destination [MeshInstance] data will "
+"be discarded."
+msgstr ""
+
+#: doc/classes/MeshInstance.xml
msgid "Sets the [Material] for a surface of the [Mesh] resource."
msgstr ""
@@ -36563,12 +36616,12 @@ msgid ""
"[/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."
+"typically relevant for [url=$DOCS_URL/tutorials/misc/"
+"running_code_in_the_editor.html]tool scripts[/url] and [url=$DOCS_URL/"
+"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
@@ -37275,7 +37328,15 @@ msgid ""
"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."
+"subinstancing.\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=$DOCS_URL/tutorials/misc/"
+"running_code_in_the_editor.html]tool scripts[/url] and [url=$DOCS_URL/"
+"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
@@ -37871,7 +37932,13 @@ msgid ""
msgstr ""
#: doc/classes/Object.xml
-msgid "Called when the object is initialized."
+msgid ""
+"Called when the object is initialized in memory. Can be defined to take in "
+"parameters, that are passed in when constructing.\n"
+"[b]Note:[/b] If [method _init] is defined with required parameters, then "
+"explicit construction is the only valid means of creating an Object of the "
+"class. If any other means (such as [method PackedScene.instance]) is used, "
+"then initialization will fail."
msgstr ""
#: doc/classes/Object.xml
@@ -43138,7 +43205,10 @@ msgid ""
msgstr ""
#: doc/classes/PhysicsServer.xml
-msgid "Returns an Info defined by the [enum ProcessInfo] input given."
+msgid ""
+"Returns information about the current state of the 3D physics engine. See "
+"[enum ProcessInfo] for a list of available states. Only implemented for "
+"Godot Physics."
msgstr ""
#: doc/classes/PhysicsServer.xml
@@ -56072,8 +56142,8 @@ msgid ""
"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"
+"print(some_array[0]) # Prints \"One,Two,Three\"\n"
+"print(some_array[1]) # Prints \"Four\"\n"
"[/codeblock]"
msgstr ""
diff --git a/drivers/gles3/rasterizer_canvas_gles3.cpp b/drivers/gles3/rasterizer_canvas_gles3.cpp
index b47d2e08f1..2b8241cd40 100644
--- a/drivers/gles3/rasterizer_canvas_gles3.cpp
+++ b/drivers/gles3/rasterizer_canvas_gles3.cpp
@@ -40,6 +40,7 @@
#include "servers/rendering/rendering_server_default.h"
#include "storage/canvas_texture_storage.h"
#include "storage/config.h"
+#include "storage/material_storage.h"
#ifndef GLES_OVER_GL
#define glClearDepth glClearDepthf
@@ -212,6 +213,8 @@ void RasterizerCanvasGLES3::canvas_render_items(RID p_to_render_target, Item *p_
}
void RasterizerCanvasGLES3::_render_items(RID p_to_render_target, int p_item_count, const Transform2D &p_canvas_transform_inverse, Light *p_lights, bool p_to_backbuffer) {
+ GLES3::TextureStorage *texture_storage = GLES3::TextureStorage::get_singleton();
+ GLES3::MaterialStorage *material_storage = GLES3::MaterialStorage::get_singleton();
Item *current_clip = nullptr;
Transform2D canvas_transform_inverse = p_canvas_transform_inverse;
@@ -228,14 +231,14 @@ void RasterizerCanvasGLES3::_render_items(RID p_to_render_target, int p_item_cou
Item *ci = items[i];
RID material = ci->material_owner == nullptr ? ci->material : ci->material_owner->material;
- RasterizerStorageGLES3::Material *material_ptr = storage->material_owner.get_or_null(material);
+ GLES3::Material *material_ptr = material_storage->get_material(material);
if (material.is_null() && ci->canvas_group != nullptr) {
material = default_canvas_group_material;
}
if (material != prev_material) {
- RasterizerStorageGLES3::Shader *shader_ptr = nullptr;
+ GLES3::Shader *shader_ptr = nullptr;
if (material_ptr) {
shader_ptr = material_ptr->shader;
@@ -906,6 +909,8 @@ void RasterizerCanvasGLES3::canvas_end() {
}
void RasterizerCanvasGLES3::_bind_canvas_texture(RID p_texture, RS::CanvasItemTextureFilter p_base_filter, RS::CanvasItemTextureRepeat p_base_repeat, uint32_t &r_index, RID &r_last_texture, Size2 &r_texpixel_size) {
+ GLES3::TextureStorage *texture_storage = GLES3::TextureStorage::get_singleton();
+
if (p_texture == RID()) {
p_texture = default_canvas_texture;
}
@@ -1251,9 +1256,8 @@ void RasterizerCanvasGLES3::_allocate_instance_data_buffer() {
}
void RasterizerCanvasGLES3::initialize() {
- // !BAS! shouldn't we be obtaining storage here as well?
- canvas_texture_storage = GLES3::CanvasTextureStorage::get_singleton();
- texture_storage = GLES3::TextureStorage::get_singleton();
+ GLES3::CanvasTextureStorage *canvas_texture_storage = GLES3::CanvasTextureStorage::get_singleton();
+ GLES3::MaterialStorage *material_storage = GLES3::MaterialStorage::get_singleton();
// quad buffer
{
@@ -1423,10 +1427,10 @@ void RasterizerCanvasGLES3::initialize() {
//state.canvas_shader.set_conditional(CanvasOldShaderGLES3::USE_PIXEL_SNAP, GLOBAL_DEF("rendering/quality/2d/use_pixel_snap", false));
{
- default_canvas_group_shader = storage->shader_allocate();
- storage->shader_initialize(default_canvas_group_shader);
+ default_canvas_group_shader = material_storage->shader_allocate();
+ material_storage->shader_initialize(default_canvas_group_shader);
- storage->shader_set_code(default_canvas_group_shader, R"(
+ material_storage->shader_set_code(default_canvas_group_shader, R"(
// Default CanvasGroup shader.
shader_type canvas_item;
@@ -1441,10 +1445,10 @@ void fragment() {
COLOR *= c;
}
)");
- default_canvas_group_material = storage->material_allocate();
- storage->material_initialize(default_canvas_group_material);
+ default_canvas_group_material = material_storage->material_allocate();
+ material_storage->material_initialize(default_canvas_group_material);
- storage->material_set_shader(default_canvas_group_material, default_canvas_group_shader);
+ material_storage->material_set_shader(default_canvas_group_material, default_canvas_group_shader);
}
default_canvas_texture = canvas_texture_storage->canvas_texture_allocate();
@@ -1456,13 +1460,25 @@ void fragment() {
state.current_shader_version = state.canvas_shader_default_version;
}
+RasterizerCanvasGLES3 *RasterizerCanvasGLES3::singleton = nullptr;
+
+RasterizerCanvasGLES3 *RasterizerCanvasGLES3::get_singleton() {
+ return singleton;
+}
+
RasterizerCanvasGLES3::RasterizerCanvasGLES3() {
+ singleton = this;
}
+
RasterizerCanvasGLES3::~RasterizerCanvasGLES3() {
+ GLES3::CanvasTextureStorage *canvas_texture_storage = GLES3::CanvasTextureStorage::get_singleton();
+ GLES3::MaterialStorage *material_storage = GLES3::MaterialStorage::get_singleton();
+
state.canvas_shader.version_free(state.canvas_shader_default_version);
- storage->free(default_canvas_group_material);
- storage->free(default_canvas_group_shader);
+ material_storage->material_free(default_canvas_group_material);
+ material_storage->shader_free(default_canvas_group_shader);
canvas_texture_storage->canvas_texture_free(default_canvas_texture);
+ singleton = nullptr;
}
void RasterizerCanvasGLES3::finalize() {
diff --git a/drivers/gles3/rasterizer_canvas_gles3.h b/drivers/gles3/rasterizer_canvas_gles3.h
index 1f57c2b5ea..4e825ab8b2 100644
--- a/drivers/gles3/rasterizer_canvas_gles3.h
+++ b/drivers/gles3/rasterizer_canvas_gles3.h
@@ -38,6 +38,7 @@
#include "servers/rendering/renderer_canvas_render.h"
#include "servers/rendering/renderer_compositor.h"
#include "storage/canvas_texture_storage.h"
+#include "storage/material_storage.h"
#include "storage/texture_storage.h"
#include "shaders/canvas.glsl.gen.h"
@@ -45,6 +46,8 @@
class RasterizerSceneGLES3;
class RasterizerCanvasGLES3 : public RendererCanvasRender {
+ static RasterizerCanvasGLES3 *singleton;
+
_FORCE_INLINE_ void _update_transform_2d_to_mat2x4(const Transform2D &p_transform, float *p_mat2x4);
_FORCE_INLINE_ void _update_transform_2d_to_mat2x3(const Transform2D &p_transform, float *p_mat2x3);
@@ -219,8 +222,6 @@ public:
RasterizerSceneGLES3 *scene_render;
- GLES3::CanvasTextureStorage *canvas_texture_storage;
- GLES3::TextureStorage *texture_storage;
RasterizerStorageGLES3 *storage;
void _set_uniforms();
@@ -277,6 +278,8 @@ public:
void initialize();
void finalize();
+
+ static RasterizerCanvasGLES3 *get_singleton();
RasterizerCanvasGLES3();
~RasterizerCanvasGLES3();
};
diff --git a/drivers/gles3/rasterizer_gles3.cpp b/drivers/gles3/rasterizer_gles3.cpp
index faadb2a4ed..61aefc1192 100644
--- a/drivers/gles3/rasterizer_gles3.cpp
+++ b/drivers/gles3/rasterizer_gles3.cpp
@@ -260,9 +260,9 @@ void RasterizerGLES3::initialize() {
RasterizerGLES3::RasterizerGLES3() {
canvas.storage = &storage;
canvas.scene_render = &scene;
- storage.canvas = &canvas;
+ //storage.canvas = &canvas;
//scene.storage = &storage;
- storage.scene = &scene;
+ //storage.scene = &scene;
}
void RasterizerGLES3::prepare_for_blitting_render_targets() {
diff --git a/drivers/gles3/rasterizer_gles3.h b/drivers/gles3/rasterizer_gles3.h
index 93c58a8d9d..55ee54e992 100644
--- a/drivers/gles3/rasterizer_gles3.h
+++ b/drivers/gles3/rasterizer_gles3.h
@@ -39,6 +39,8 @@
#include "servers/rendering/renderer_compositor.h"
#include "storage/canvas_texture_storage.h"
#include "storage/config.h"
+#include "storage/decal_atlas_storage.h"
+#include "storage/material_storage.h"
#include "storage/render_target_storage.h"
#include "storage/texture_storage.h"
@@ -53,6 +55,8 @@ protected:
GLES3::Config config;
GLES3::CanvasTextureStorage canvas_texture_storage;
GLES3::TextureStorage texture_storage;
+ GLES3::DecalAtlasStorage decal_atlas_storage;
+ GLES3::MaterialStorage material_storage;
RasterizerStorageGLES3 storage;
RasterizerCanvasGLES3 canvas;
RasterizerSceneGLES3 scene;
@@ -61,7 +65,9 @@ protected:
public:
RendererCanvasTextureStorage *get_canvas_texture_storage() { return &canvas_texture_storage; }
+ RendererMaterialStorage *get_material_storage() { return &material_storage; }
RendererTextureStorage *get_texture_storage() { return &texture_storage; }
+ RendererDecalAtlasStorage *get_decal_atlas_storage() { return &decal_atlas_storage; }
RendererStorage *get_storage() { return &storage; }
RendererCanvasRender *get_canvas() { return &canvas; }
RendererSceneRender *get_scene() { return &scene; }
diff --git a/drivers/gles3/rasterizer_storage_gles3.cpp b/drivers/gles3/rasterizer_storage_gles3.cpp
index 158b96ef27..c71423a45d 100644
--- a/drivers/gles3/rasterizer_storage_gles3.cpp
+++ b/drivers/gles3/rasterizer_storage_gles3.cpp
@@ -34,7 +34,7 @@
#include "core/config/project_settings.h"
#include "core/math/transform_3d.h"
-#include "rasterizer_canvas_gles3.h"
+// #include "rasterizer_canvas_gles3.h"
#include "rasterizer_scene_gles3.h"
#include "servers/rendering/shader_language.h"
@@ -58,755 +58,6 @@ RID RasterizerStorageGLES3::sky_create() {
void RasterizerStorageGLES3::sky_set_texture(RID p_sky, RID p_panorama, int p_radiance_size) {
}
-/* SHADER API */
-
-RID RasterizerStorageGLES3::shader_allocate() {
- Shader *shader = memnew(Shader);
- shader->mode = RS::SHADER_CANVAS_ITEM;
- //shader->shader = &scene->state.scene_shader;
- RID rid = shader_owner.make_rid(shader);
- _shader_make_dirty(shader);
- shader->self = rid;
-
- return rid;
-}
-
-void RasterizerStorageGLES3::shader_initialize(RID p_rid) {
- // noop
-}
-
-//RID RasterizerStorageGLES3::shader_create() {
-// Shader *shader = memnew(Shader);
-// shader->mode = RS::SHADER_SPATIAL;
-// shader->shader = &scene->state.scene_shader;
-// RID rid = shader_owner.make_rid(shader);
-// _shader_make_dirty(shader);
-// shader->self = rid;
-
-// return rid;
-//}
-
-void RasterizerStorageGLES3::_shader_make_dirty(Shader *p_shader) {
- if (p_shader->dirty_list.in_list()) {
- return;
- }
-
- _shader_dirty_list.add(&p_shader->dirty_list);
-}
-
-void RasterizerStorageGLES3::shader_set_code(RID p_shader, const String &p_code) {
- Shader *shader = shader_owner.get_or_null(p_shader);
- ERR_FAIL_COND(!shader);
-
- shader->code = p_code;
-
- String mode_string = ShaderLanguage::get_shader_type(p_code);
- RS::ShaderMode mode;
-
- if (mode_string == "canvas_item") {
- mode = RS::SHADER_CANVAS_ITEM;
- } else if (mode_string == "particles") {
- mode = RS::SHADER_PARTICLES;
- } else if (mode_string == "sky") {
- mode = RS::SHADER_SKY;
- } else if (mode_string == "spatial") {
- mode = RS::SHADER_SPATIAL;
- } else {
- mode = RS::SHADER_MAX;
- ERR_PRINT("shader type " + mode_string + " not supported in OpenGL renderer");
- }
-
- if (shader->version.is_valid() && mode != shader->mode) {
- shader->shader->version_free(shader->version);
- shader->version = RID();
- }
-
- shader->mode = mode;
-
- // TODO handle all shader types
- if (mode == RS::SHADER_CANVAS_ITEM) {
- shader->shader = &canvas->state.canvas_shader;
-
- } else if (mode == RS::SHADER_SPATIAL) {
- //shader->shader = &scene->state.scene_shader;
- } else if (mode == RS::SHADER_PARTICLES) {
- } else if (mode == RS::SHADER_SKY) {
- } else {
- return;
- }
-
- if (shader->version.is_null() && shader->shader) {
- shader->version = shader->shader->version_create();
- }
-
- _shader_make_dirty(shader);
-}
-
-String RasterizerStorageGLES3::shader_get_code(RID p_shader) const {
- const Shader *shader = shader_owner.get_or_null(p_shader);
- ERR_FAIL_COND_V(!shader, "");
-
- return shader->code;
-}
-
-void RasterizerStorageGLES3::_update_shader(Shader *p_shader) const {
- _shader_dirty_list.remove(&p_shader->dirty_list);
-
- p_shader->valid = false;
-
- p_shader->uniforms.clear();
-
- if (p_shader->code.is_empty()) {
- return; //just invalid, but no error
- }
-
- ShaderCompiler::GeneratedCode gen_code;
- ShaderCompiler::IdentifierActions *actions = nullptr;
-
- switch (p_shader->mode) {
- case RS::SHADER_CANVAS_ITEM: {
- p_shader->canvas_item.light_mode = Shader::CanvasItem::LIGHT_MODE_NORMAL;
- p_shader->canvas_item.blend_mode = Shader::CanvasItem::BLEND_MODE_MIX;
-
- p_shader->canvas_item.uses_screen_texture = false;
- p_shader->canvas_item.uses_screen_uv = false;
- p_shader->canvas_item.uses_time = false;
- p_shader->canvas_item.uses_modulate = false;
- p_shader->canvas_item.uses_color = false;
- p_shader->canvas_item.uses_vertex = false;
-
- p_shader->canvas_item.uses_model_matrix = false;
- p_shader->canvas_item.uses_extra_matrix = false;
- p_shader->canvas_item.uses_projection_matrix = false;
- p_shader->canvas_item.uses_instance_custom = false;
-
- shaders.actions_canvas.render_mode_values["blend_add"] = Pair<int *, int>(&p_shader->canvas_item.blend_mode, Shader::CanvasItem::BLEND_MODE_ADD);
- shaders.actions_canvas.render_mode_values["blend_mix"] = Pair<int *, int>(&p_shader->canvas_item.blend_mode, Shader::CanvasItem::BLEND_MODE_MIX);
- shaders.actions_canvas.render_mode_values["blend_sub"] = Pair<int *, int>(&p_shader->canvas_item.blend_mode, Shader::CanvasItem::BLEND_MODE_SUB);
- shaders.actions_canvas.render_mode_values["blend_mul"] = Pair<int *, int>(&p_shader->canvas_item.blend_mode, Shader::CanvasItem::BLEND_MODE_MUL);
- shaders.actions_canvas.render_mode_values["blend_premul_alpha"] = Pair<int *, int>(&p_shader->canvas_item.blend_mode, Shader::CanvasItem::BLEND_MODE_PMALPHA);
-
- shaders.actions_canvas.render_mode_values["unshaded"] = Pair<int *, int>(&p_shader->canvas_item.light_mode, Shader::CanvasItem::LIGHT_MODE_UNSHADED);
- shaders.actions_canvas.render_mode_values["light_only"] = Pair<int *, int>(&p_shader->canvas_item.light_mode, Shader::CanvasItem::LIGHT_MODE_LIGHT_ONLY);
-
- shaders.actions_canvas.usage_flag_pointers["SCREEN_UV"] = &p_shader->canvas_item.uses_screen_uv;
- shaders.actions_canvas.usage_flag_pointers["SCREEN_PIXEL_SIZE"] = &p_shader->canvas_item.uses_screen_uv;
- shaders.actions_canvas.usage_flag_pointers["SCREEN_TEXTURE"] = &p_shader->canvas_item.uses_screen_texture;
- shaders.actions_canvas.usage_flag_pointers["TIME"] = &p_shader->canvas_item.uses_time;
- shaders.actions_canvas.usage_flag_pointers["MODULATE"] = &p_shader->canvas_item.uses_modulate;
- shaders.actions_canvas.usage_flag_pointers["COLOR"] = &p_shader->canvas_item.uses_color;
-
- shaders.actions_canvas.usage_flag_pointers["VERTEX"] = &p_shader->canvas_item.uses_vertex;
-
- shaders.actions_canvas.usage_flag_pointers["MODEL_MATRIX"] = &p_shader->canvas_item.uses_model_matrix;
- shaders.actions_canvas.usage_flag_pointers["EXTRA_MATRIX"] = &p_shader->canvas_item.uses_extra_matrix;
- shaders.actions_canvas.usage_flag_pointers["PROJECTION_MATRIX"] = &p_shader->canvas_item.uses_projection_matrix;
- shaders.actions_canvas.usage_flag_pointers["INSTANCE_CUSTOM"] = &p_shader->canvas_item.uses_instance_custom;
-
- actions = &shaders.actions_canvas;
- actions->uniforms = &p_shader->uniforms;
- } break;
-
- case RS::SHADER_SPATIAL: {
- // TODO remove once 3D is added back
- return;
- p_shader->spatial.blend_mode = Shader::Spatial::BLEND_MODE_MIX;
- p_shader->spatial.depth_draw_mode = Shader::Spatial::DEPTH_DRAW_OPAQUE;
- p_shader->spatial.cull_mode = Shader::Spatial::CULL_MODE_BACK;
- p_shader->spatial.uses_alpha = false;
- p_shader->spatial.uses_alpha_scissor = false;
- p_shader->spatial.uses_discard = false;
- p_shader->spatial.unshaded = false;
- p_shader->spatial.no_depth_test = false;
- p_shader->spatial.uses_sss = false;
- p_shader->spatial.uses_time = false;
- p_shader->spatial.uses_vertex_lighting = false;
- p_shader->spatial.uses_screen_texture = false;
- p_shader->spatial.uses_depth_texture = false;
- p_shader->spatial.uses_vertex = false;
- p_shader->spatial.uses_tangent = false;
- p_shader->spatial.uses_ensure_correct_normals = false;
- p_shader->spatial.writes_modelview_or_projection = false;
- p_shader->spatial.uses_world_coordinates = false;
-
- shaders.actions_scene.render_mode_values["blend_add"] = Pair<int *, int>(&p_shader->spatial.blend_mode, Shader::Spatial::BLEND_MODE_ADD);
- shaders.actions_scene.render_mode_values["blend_mix"] = Pair<int *, int>(&p_shader->spatial.blend_mode, Shader::Spatial::BLEND_MODE_MIX);
- shaders.actions_scene.render_mode_values["blend_sub"] = Pair<int *, int>(&p_shader->spatial.blend_mode, Shader::Spatial::BLEND_MODE_SUB);
- shaders.actions_scene.render_mode_values["blend_mul"] = Pair<int *, int>(&p_shader->spatial.blend_mode, Shader::Spatial::BLEND_MODE_MUL);
-
- shaders.actions_scene.render_mode_values["depth_draw_opaque"] = Pair<int *, int>(&p_shader->spatial.depth_draw_mode, Shader::Spatial::DEPTH_DRAW_OPAQUE);
- shaders.actions_scene.render_mode_values["depth_draw_always"] = Pair<int *, int>(&p_shader->spatial.depth_draw_mode, Shader::Spatial::DEPTH_DRAW_ALWAYS);
- shaders.actions_scene.render_mode_values["depth_draw_never"] = Pair<int *, int>(&p_shader->spatial.depth_draw_mode, Shader::Spatial::DEPTH_DRAW_NEVER);
- shaders.actions_scene.render_mode_values["depth_draw_alpha_prepass"] = Pair<int *, int>(&p_shader->spatial.depth_draw_mode, Shader::Spatial::DEPTH_DRAW_ALPHA_PREPASS);
-
- shaders.actions_scene.render_mode_values["cull_front"] = Pair<int *, int>(&p_shader->spatial.cull_mode, Shader::Spatial::CULL_MODE_FRONT);
- shaders.actions_scene.render_mode_values["cull_back"] = Pair<int *, int>(&p_shader->spatial.cull_mode, Shader::Spatial::CULL_MODE_BACK);
- shaders.actions_scene.render_mode_values["cull_disabled"] = Pair<int *, int>(&p_shader->spatial.cull_mode, Shader::Spatial::CULL_MODE_DISABLED);
-
- shaders.actions_scene.render_mode_flags["unshaded"] = &p_shader->spatial.unshaded;
- shaders.actions_scene.render_mode_flags["depth_test_disable"] = &p_shader->spatial.no_depth_test;
-
- shaders.actions_scene.render_mode_flags["vertex_lighting"] = &p_shader->spatial.uses_vertex_lighting;
-
- shaders.actions_scene.render_mode_flags["world_vertex_coords"] = &p_shader->spatial.uses_world_coordinates;
-
- shaders.actions_scene.render_mode_flags["ensure_correct_normals"] = &p_shader->spatial.uses_ensure_correct_normals;
-
- shaders.actions_scene.usage_flag_pointers["ALPHA"] = &p_shader->spatial.uses_alpha;
- shaders.actions_scene.usage_flag_pointers["ALPHA_SCISSOR"] = &p_shader->spatial.uses_alpha_scissor;
-
- shaders.actions_scene.usage_flag_pointers["SSS_STRENGTH"] = &p_shader->spatial.uses_sss;
- shaders.actions_scene.usage_flag_pointers["DISCARD"] = &p_shader->spatial.uses_discard;
- shaders.actions_scene.usage_flag_pointers["SCREEN_TEXTURE"] = &p_shader->spatial.uses_screen_texture;
- shaders.actions_scene.usage_flag_pointers["DEPTH_TEXTURE"] = &p_shader->spatial.uses_depth_texture;
- shaders.actions_scene.usage_flag_pointers["TIME"] = &p_shader->spatial.uses_time;
-
- // Use of any of these BUILTINS indicate the need for transformed tangents.
- // This is needed to know when to transform tangents in software skinning.
- shaders.actions_scene.usage_flag_pointers["TANGENT"] = &p_shader->spatial.uses_tangent;
- shaders.actions_scene.usage_flag_pointers["NORMALMAP"] = &p_shader->spatial.uses_tangent;
-
- shaders.actions_scene.write_flag_pointers["MODELVIEW_MATRIX"] = &p_shader->spatial.writes_modelview_or_projection;
- shaders.actions_scene.write_flag_pointers["PROJECTION_MATRIX"] = &p_shader->spatial.writes_modelview_or_projection;
- shaders.actions_scene.write_flag_pointers["VERTEX"] = &p_shader->spatial.uses_vertex;
-
- actions = &shaders.actions_scene;
- actions->uniforms = &p_shader->uniforms;
- } break;
-
- default: {
- return;
- } break;
- }
-
- Error err = shaders.compiler.compile(p_shader->mode, p_shader->code, actions, p_shader->path, gen_code);
- if (err != OK) {
- return;
- }
-
- Vector<StringName> texture_uniform_names;
- for (int i = 0; i < gen_code.texture_uniforms.size(); i++) {
- texture_uniform_names.push_back(gen_code.texture_uniforms[i].name);
- }
-
- p_shader->shader->version_set_code(p_shader->version, gen_code.code, gen_code.uniforms, gen_code.stage_globals[ShaderCompiler::STAGE_VERTEX], gen_code.stage_globals[ShaderCompiler::STAGE_FRAGMENT], gen_code.defines, texture_uniform_names);
-
- p_shader->texture_uniforms = gen_code.texture_uniforms;
-
- p_shader->uses_vertex_time = gen_code.uses_vertex_time;
- p_shader->uses_fragment_time = gen_code.uses_fragment_time;
-
- for (SelfList<Material> *E = p_shader->materials.first(); E; E = E->next()) {
- _material_make_dirty(E->self());
- }
-
- p_shader->valid = true;
-}
-
-void RasterizerStorageGLES3::update_dirty_shaders() {
- while (_shader_dirty_list.first()) {
- _update_shader(_shader_dirty_list.first()->self());
- }
-}
-
-void RasterizerStorageGLES3::shader_get_param_list(RID p_shader, List<PropertyInfo> *p_param_list) const {
- Shader *shader = shader_owner.get_or_null(p_shader);
- ERR_FAIL_COND(!shader);
-
- if (shader->dirty_list.in_list()) {
- _update_shader(shader);
- }
-
- Map<int, StringName> order;
-
- for (Map<StringName, ShaderLanguage::ShaderNode::Uniform>::Element *E = shader->uniforms.front(); E; E = E->next()) {
- if (E->get().texture_order >= 0) {
- order[E->get().texture_order + 100000] = E->key();
- } else {
- order[E->get().order] = E->key();
- }
- }
-
- for (Map<int, StringName>::Element *E = order.front(); E; E = E->next()) {
- PropertyInfo pi;
- ShaderLanguage::ShaderNode::Uniform &u = shader->uniforms[E->get()];
-
- pi.name = E->get();
-
- switch (u.type) {
- case ShaderLanguage::TYPE_VOID: {
- pi.type = Variant::NIL;
- } break;
-
- case ShaderLanguage::TYPE_BOOL: {
- pi.type = Variant::BOOL;
- } break;
-
- // bool vectors
- case ShaderLanguage::TYPE_BVEC2: {
- pi.type = Variant::INT;
- pi.hint = PROPERTY_HINT_FLAGS;
- pi.hint_string = "x,y";
- } break;
- case ShaderLanguage::TYPE_BVEC3: {
- pi.type = Variant::INT;
- pi.hint = PROPERTY_HINT_FLAGS;
- pi.hint_string = "x,y,z";
- } break;
- case ShaderLanguage::TYPE_BVEC4: {
- pi.type = Variant::INT;
- pi.hint = PROPERTY_HINT_FLAGS;
- pi.hint_string = "x,y,z,w";
- } break;
-
- // int stuff
- case ShaderLanguage::TYPE_UINT:
- case ShaderLanguage::TYPE_INT: {
- pi.type = Variant::INT;
-
- if (u.hint == ShaderLanguage::ShaderNode::Uniform::HINT_RANGE) {
- pi.hint = PROPERTY_HINT_RANGE;
- pi.hint_string = rtos(u.hint_range[0]) + "," + rtos(u.hint_range[1]) + "," + rtos(u.hint_range[2]);
- }
- } break;
-
- case ShaderLanguage::TYPE_IVEC2:
- case ShaderLanguage::TYPE_UVEC2:
- case ShaderLanguage::TYPE_IVEC3:
- case ShaderLanguage::TYPE_UVEC3:
- case ShaderLanguage::TYPE_IVEC4:
- case ShaderLanguage::TYPE_UVEC4: {
- // not sure what this should be in godot 4
- // pi.type = Variant::POOL_INT_ARRAY;
- pi.type = Variant::PACKED_INT32_ARRAY;
- } break;
-
- case ShaderLanguage::TYPE_FLOAT: {
- pi.type = Variant::FLOAT;
- if (u.hint == ShaderLanguage::ShaderNode::Uniform::HINT_RANGE) {
- pi.hint = PROPERTY_HINT_RANGE;
- pi.hint_string = rtos(u.hint_range[0]) + "," + rtos(u.hint_range[1]) + "," + rtos(u.hint_range[2]);
- }
- } break;
-
- case ShaderLanguage::TYPE_VEC2: {
- pi.type = Variant::VECTOR2;
- } break;
- case ShaderLanguage::TYPE_VEC3: {
- pi.type = Variant::VECTOR3;
- } break;
-
- case ShaderLanguage::TYPE_VEC4: {
- if (u.hint == ShaderLanguage::ShaderNode::Uniform::HINT_COLOR) {
- pi.type = Variant::COLOR;
- } else {
- pi.type = Variant::PLANE;
- }
- } break;
-
- case ShaderLanguage::TYPE_MAT2: {
- pi.type = Variant::TRANSFORM2D;
- } break;
-
- case ShaderLanguage::TYPE_MAT3: {
- pi.type = Variant::BASIS;
- } break;
-
- case ShaderLanguage::TYPE_MAT4: {
- pi.type = Variant::TRANSFORM3D;
- } break;
-
- case ShaderLanguage::TYPE_SAMPLER2D:
- // case ShaderLanguage::TYPE_SAMPLEREXT:
- case ShaderLanguage::TYPE_ISAMPLER2D:
- case ShaderLanguage::TYPE_USAMPLER2D: {
- pi.type = Variant::OBJECT;
- pi.hint = PROPERTY_HINT_RESOURCE_TYPE;
- pi.hint_string = "Texture";
- } break;
-
- case ShaderLanguage::TYPE_SAMPLERCUBE: {
- pi.type = Variant::OBJECT;
- pi.hint = PROPERTY_HINT_RESOURCE_TYPE;
- pi.hint_string = "CubeMap";
- } break;
-
- case ShaderLanguage::TYPE_SAMPLER2DARRAY:
- case ShaderLanguage::TYPE_ISAMPLER2DARRAY:
- case ShaderLanguage::TYPE_USAMPLER2DARRAY:
- case ShaderLanguage::TYPE_SAMPLER3D:
- case ShaderLanguage::TYPE_ISAMPLER3D:
- case ShaderLanguage::TYPE_USAMPLER3D: {
- // Not implemented in OpenGL
- } break;
- // new for godot 4
- case ShaderLanguage::TYPE_SAMPLERCUBEARRAY:
- case ShaderLanguage::TYPE_STRUCT:
- case ShaderLanguage::TYPE_MAX: {
- } break;
- }
-
- p_param_list->push_back(pi);
- }
-}
-
-void RasterizerStorageGLES3::shader_set_default_texture_param(RID p_shader, const StringName &p_name, RID p_texture, int p_index) {
- Shader *shader = shader_owner.get_or_null(p_shader);
- ERR_FAIL_COND(!shader);
- ERR_FAIL_COND(p_texture.is_valid() && !GLES3::TextureStorage::get_singleton()->owns_texture(p_texture));
-
- if (!p_texture.is_valid()) {
- if (shader->default_textures.has(p_name) && shader->default_textures[p_name].has(p_index)) {
- shader->default_textures[p_name].erase(p_index);
-
- if (shader->default_textures[p_name].is_empty()) {
- shader->default_textures.erase(p_name);
- }
- }
- } else {
- if (!shader->default_textures.has(p_name)) {
- shader->default_textures[p_name] = Map<int, RID>();
- }
- shader->default_textures[p_name][p_index] = p_texture;
- }
-
- _shader_make_dirty(shader);
-}
-
-RID RasterizerStorageGLES3::shader_get_default_texture_param(RID p_shader, const StringName &p_name, int p_index) const {
- const Shader *shader = shader_owner.get_or_null(p_shader);
- ERR_FAIL_COND_V(!shader, RID());
-
- if (shader->default_textures.has(p_name) && shader->default_textures[p_name].has(p_index)) {
- return shader->default_textures[p_name][p_index];
- }
-
- return RID();
-}
-
-/* COMMON MATERIAL API */
-
-void RasterizerStorageGLES3::_material_make_dirty(Material *p_material) const {
- if (p_material->dirty_list.in_list()) {
- return;
- }
-
- _material_dirty_list.add(&p_material->dirty_list);
-}
-
-RID RasterizerStorageGLES3::material_allocate() {
- Material *material = memnew(Material);
- return material_owner.make_rid(material);
-}
-
-void RasterizerStorageGLES3::material_initialize(RID p_rid) {
-}
-
-//RID RasterizerStorageGLES3::material_create() {
-// Material *material = memnew(Material);
-
-// return material_owner.make_rid(material);
-//}
-
-void RasterizerStorageGLES3::material_set_shader(RID p_material, RID p_shader) {
- Material *material = material_owner.get_or_null(p_material);
- ERR_FAIL_COND(!material);
-
- Shader *shader = shader_owner.get_or_null(p_shader);
-
- if (material->shader) {
- // if a shader is present, remove the old shader
- material->shader->materials.remove(&material->list);
- }
-
- material->shader = shader;
-
- if (shader) {
- shader->materials.add(&material->list);
- }
-
- _material_make_dirty(material);
-}
-
-RID RasterizerStorageGLES3::material_get_shader(RID p_material) const {
- const Material *material = material_owner.get_or_null(p_material);
- ERR_FAIL_COND_V(!material, RID());
-
- if (material->shader) {
- return material->shader->self;
- }
-
- return RID();
-}
-
-void RasterizerStorageGLES3::material_set_param(RID p_material, const StringName &p_param, const Variant &p_value) {
- Material *material = material_owner.get_or_null(p_material);
- ERR_FAIL_COND(!material);
-
- if (p_value.get_type() == Variant::NIL) {
- material->params.erase(p_param);
- } else {
- material->params[p_param] = p_value;
- }
-
- _material_make_dirty(material);
-}
-
-Variant RasterizerStorageGLES3::material_get_param(RID p_material, const StringName &p_param) const {
- const Material *material = material_owner.get_or_null(p_material);
- ERR_FAIL_COND_V(!material, RID());
-
- if (material->params.has(p_param)) {
- return material->params[p_param];
- }
-
- return material_get_param_default(p_material, p_param);
-}
-
-Variant RasterizerStorageGLES3::material_get_param_default(RID p_material, const StringName &p_param) const {
- const Material *material = material_owner.get_or_null(p_material);
- ERR_FAIL_COND_V(!material, Variant());
-
- if (material->shader) {
- if (material->shader->uniforms.has(p_param)) {
- ShaderLanguage::ShaderNode::Uniform uniform = material->shader->uniforms[p_param];
- Vector<ShaderLanguage::ConstantNode::Value> default_value = uniform.default_value;
- return ShaderLanguage::constant_value_to_variant(default_value, uniform.type, uniform.hint);
- }
- }
- return Variant();
-}
-
-void RasterizerStorageGLES3::material_set_line_width(RID p_material, float p_width) {
- Material *material = material_owner.get_or_null(p_material);
- ERR_FAIL_COND(!material);
-
- material->line_width = p_width;
-}
-
-void RasterizerStorageGLES3::material_set_next_pass(RID p_material, RID p_next_material) {
- Material *material = material_owner.get_or_null(p_material);
- ERR_FAIL_COND(!material);
-
- material->next_pass = p_next_material;
-}
-
-bool RasterizerStorageGLES3::material_is_animated(RID p_material) {
- Material *material = material_owner.get_or_null(p_material);
- ERR_FAIL_COND_V(!material, false);
- if (material->dirty_list.in_list()) {
- _update_material(material);
- }
-
- bool animated = material->is_animated_cache;
- if (!animated && material->next_pass.is_valid()) {
- animated = material_is_animated(material->next_pass);
- }
- return animated;
-}
-
-bool RasterizerStorageGLES3::material_casts_shadows(RID p_material) {
- Material *material = material_owner.get_or_null(p_material);
- ERR_FAIL_COND_V(!material, false);
- if (material->dirty_list.in_list()) {
- _update_material(material);
- }
-
- bool casts_shadows = material->can_cast_shadow_cache;
-
- if (!casts_shadows && material->next_pass.is_valid()) {
- casts_shadows = material_casts_shadows(material->next_pass);
- }
-
- return casts_shadows;
-}
-
-bool RasterizerStorageGLES3::material_uses_tangents(RID p_material) {
- Material *material = material_owner.get_or_null(p_material);
- ERR_FAIL_COND_V(!material, false);
-
- if (!material->shader) {
- return false;
- }
-
- if (material->shader->dirty_list.in_list()) {
- _update_shader(material->shader);
- }
-
- return material->shader->spatial.uses_tangent;
-}
-
-bool RasterizerStorageGLES3::material_uses_ensure_correct_normals(RID p_material) {
- Material *material = material_owner.get_or_null(p_material);
- ERR_FAIL_COND_V(!material, false);
-
- if (!material->shader) {
- return false;
- }
-
- if (material->shader->dirty_list.in_list()) {
- _update_shader(material->shader);
- }
-
- return material->shader->spatial.uses_ensure_correct_normals;
-}
-
-void RasterizerStorageGLES3::material_add_instance_owner(RID p_material, DependencyTracker *p_instance) {
- /*
- Material *material = material_owner.get_or_null(p_material);
- ERR_FAIL_COND(!material);
-
- Map<InstanceBaseDependency *, int>::Element *E = material->instance_owners.find(p_instance);
- if (E) {
- E->get()++;
- } else {
- material->instance_owners[p_instance] = 1;
- }
-*/
-}
-
-void RasterizerStorageGLES3::material_remove_instance_owner(RID p_material, DependencyTracker *p_instance) {
- /*
- Material *material = material_owner.get_or_null(p_material);
- ERR_FAIL_COND(!material);
-
- Map<InstanceBaseDependency *, int>::Element *E = material->instance_owners.find(p_instance);
- ERR_FAIL_COND(!E);
-
- E->get()--;
-
- if (E->get() == 0) {
- material->instance_owners.erase(E);
- }
-*/
-}
-
-void RasterizerStorageGLES3::material_set_render_priority(RID p_material, int priority) {
- ERR_FAIL_COND(priority < RS::MATERIAL_RENDER_PRIORITY_MIN);
- ERR_FAIL_COND(priority > RS::MATERIAL_RENDER_PRIORITY_MAX);
-
- Material *material = material_owner.get_or_null(p_material);
- ERR_FAIL_COND(!material);
-
- material->render_priority = priority;
-}
-
-void RasterizerStorageGLES3::_update_material(Material *p_material) {
- if (p_material->dirty_list.in_list()) {
- _material_dirty_list.remove(&p_material->dirty_list);
- }
-
- if (p_material->shader && p_material->shader->dirty_list.in_list()) {
- _update_shader(p_material->shader);
- }
-
- if (p_material->shader && !p_material->shader->valid) {
- return;
- }
-
- {
- bool can_cast_shadow = false;
- bool is_animated = false;
-
- if (p_material->shader && p_material->shader->mode == RS::SHADER_SPATIAL) {
- if (p_material->shader->spatial.blend_mode == Shader::Spatial::BLEND_MODE_MIX &&
- (!p_material->shader->spatial.uses_alpha || p_material->shader->spatial.depth_draw_mode == Shader::Spatial::DEPTH_DRAW_ALPHA_PREPASS)) {
- can_cast_shadow = true;
- }
-
- if (p_material->shader->spatial.uses_discard && p_material->shader->uses_fragment_time) {
- is_animated = true;
- }
-
- if (p_material->shader->spatial.uses_vertex && p_material->shader->uses_vertex_time) {
- is_animated = true;
- }
-
- if (can_cast_shadow != p_material->can_cast_shadow_cache || is_animated != p_material->is_animated_cache) {
- p_material->can_cast_shadow_cache = can_cast_shadow;
- p_material->is_animated_cache = is_animated;
-
- /*
- for (Map<Geometry *, int>::Element *E = p_material->geometry_owners.front(); E; E = E->next()) {
- E->key()->material_changed_notify();
- }
-
- for (Map<InstanceBaseDependency *, int>::Element *E = p_material->instance_owners.front(); E; E = E->next()) {
- E->key()->base_changed(false, true);
- }
- */
- }
- }
- }
-
- // uniforms and other things will be set in the use_material method in ShaderGLES3
-
- if (p_material->shader && p_material->shader->texture_uniforms.size() > 0) {
- p_material->textures.resize(p_material->shader->texture_uniforms.size());
-
- for (Map<StringName, ShaderLanguage::ShaderNode::Uniform>::Element *E = p_material->shader->uniforms.front(); E; E = E->next()) {
- if (E->get().texture_order < 0) {
- continue; // not a texture, does not go here
- }
-
- RID texture;
-
- Map<StringName, Variant>::Element *V = p_material->params.find(E->key());
-
- if (V) {
- texture = V->get();
- }
-
- if (!texture.is_valid()) {
- Map<StringName, Map<int, RID>>::Element *W = p_material->shader->default_textures.find(E->key());
-
- // TODO: make texture uniform array properly works with GLES3
- if (W && W->get().has(0)) {
- texture = W->get()[0];
- }
- }
-
- p_material->textures.write[E->get().texture_order] = Pair<StringName, RID>(E->key(), texture);
- }
- } else {
- p_material->textures.clear();
- }
-}
-/*
-void RasterizerStorageGLES3::_material_add_geometry(RID p_material, Geometry *p_geometry) {
- Material *material = material_owner.get_or_null(p_material);
- ERR_FAIL_COND(!material);
-
- Map<Geometry *, int>::Element *I = material->geometry_owners.find(p_geometry);
-
- if (I) {
- I->get()++;
- } else {
- material->geometry_owners[p_geometry] = 1;
- }
-}
-
-void RasterizerStorageGLES3::_material_remove_geometry(RID p_material, Geometry *p_geometry) {
- Material *material = material_owner.get_or_null(p_material);
- ERR_FAIL_COND(!material);
-
- Map<Geometry *, int>::Element *I = material->geometry_owners.find(p_geometry);
- ERR_FAIL_COND(!I);
-
- I->get()--;
-
- if (I->get() == 0) {
- material->geometry_owners.erase(I);
- }
-}
-*/
-void RasterizerStorageGLES3::update_dirty_materials() {
- while (_material_dirty_list.first()) {
- Material *material = _material_dirty_list.first()->self();
- _update_material(material);
- }
-}
-
/* MESH API */
RID RasterizerStorageGLES3::mesh_allocate() {
@@ -1202,46 +453,6 @@ void RasterizerStorageGLES3::base_update_dependency(RID p_base, DependencyTracke
void RasterizerStorageGLES3::skeleton_update_dependency(RID p_base, DependencyTracker *p_instance) {
}
-/* DECAL API */
-
-RID RasterizerStorageGLES3::decal_allocate() {
- return RID();
-}
-
-void RasterizerStorageGLES3::decal_initialize(RID p_rid) {
-}
-
-void RasterizerStorageGLES3::decal_set_extents(RID p_decal, const Vector3 &p_extents) {
-}
-
-void RasterizerStorageGLES3::decal_set_texture(RID p_decal, RS::DecalTexture p_type, RID p_texture) {
-}
-
-void RasterizerStorageGLES3::decal_set_emission_energy(RID p_decal, float p_energy) {
-}
-
-void RasterizerStorageGLES3::decal_set_albedo_mix(RID p_decal, float p_mix) {
-}
-
-void RasterizerStorageGLES3::decal_set_modulate(RID p_decal, const Color &p_modulate) {
-}
-
-void RasterizerStorageGLES3::decal_set_cull_mask(RID p_decal, uint32_t p_layers) {
-}
-
-void RasterizerStorageGLES3::decal_set_distance_fade(RID p_decal, bool p_enabled, float p_begin, float p_length) {
-}
-
-void RasterizerStorageGLES3::decal_set_fade(RID p_decal, float p_above, float p_below) {
-}
-
-void RasterizerStorageGLES3::decal_set_normal_fade(RID p_decal, float p_fade) {
-}
-
-AABB RasterizerStorageGLES3::decal_get_aabb(RID p_decal) const {
- return AABB();
-}
-
/* VOXEL GI API */
RID RasterizerStorageGLES3::voxel_gi_allocate() {
@@ -1529,6 +740,10 @@ void RasterizerStorageGLES3::particles_set_canvas_sdf_collision(RID p_particles,
void RasterizerStorageGLES3::update_particles() {
}
+bool RasterizerStorageGLES3::particles_is_inactive(RID p_particles) const {
+ return false;
+}
+
/* PARTICLES COLLISION */
RID RasterizerStorageGLES3::particles_collision_allocate() {
@@ -1635,52 +850,6 @@ AABB RasterizerStorageGLES3::visibility_notifier_get_aabb(RID p_notifier) const
void RasterizerStorageGLES3::visibility_notifier_call(RID p_notifier, bool p_enter, bool p_deferred) {
}
-/* GLOBAL VARIABLES */
-
-void RasterizerStorageGLES3::global_variable_add(const StringName &p_name, RS::GlobalVariableType p_type, const Variant &p_value) {
-}
-
-void RasterizerStorageGLES3::global_variable_remove(const StringName &p_name) {
-}
-
-Vector<StringName> RasterizerStorageGLES3::global_variable_get_list() const {
- return Vector<StringName>();
-}
-
-void RasterizerStorageGLES3::global_variable_set(const StringName &p_name, const Variant &p_value) {
-}
-
-void RasterizerStorageGLES3::global_variable_set_override(const StringName &p_name, const Variant &p_value) {
-}
-
-Variant RasterizerStorageGLES3::global_variable_get(const StringName &p_name) const {
- return Variant();
-}
-
-RS::GlobalVariableType RasterizerStorageGLES3::global_variable_get_type(const StringName &p_name) const {
- return RS::GLOBAL_VAR_TYPE_MAX;
-}
-
-void RasterizerStorageGLES3::global_variables_load_settings(bool p_load_textures) {
-}
-
-void RasterizerStorageGLES3::global_variables_clear() {
-}
-
-int32_t RasterizerStorageGLES3::global_variables_instance_allocate(RID p_instance) {
- return 0;
-}
-
-void RasterizerStorageGLES3::global_variables_instance_free(RID p_instance) {
-}
-
-void RasterizerStorageGLES3::global_variables_instance_update(RID p_instance, int p_index, const Variant &p_value) {
-}
-
-bool RasterizerStorageGLES3::particles_is_inactive(RID p_particles) const {
- return false;
-}
-
/* RENDER TARGET */
void RasterizerStorageGLES3::_set_current_render_target(RID p_render_target) {
@@ -2634,63 +1803,12 @@ bool RasterizerStorageGLES3::free(RID p_rid) {
memdelete(sky);
return true;
- } else if (shader_owner.owns(p_rid)) {
- Shader *shader = shader_owner.get_or_null(p_rid);
-
- if (shader->shader && shader->version.is_valid()) {
- shader->shader->version_free(shader->version);
- }
-
- if (shader->dirty_list.in_list()) {
- _shader_dirty_list.remove(&shader->dirty_list);
- }
-
- while (shader->materials.first()) {
- Material *m = shader->materials.first()->self();
-
- m->shader = nullptr;
- _material_make_dirty(m);
-
- shader->materials.remove(shader->materials.first());
- }
-
- shader_owner.free(p_rid);
- memdelete(shader);
-
+ } else if (GLES3::MaterialStorage::get_singleton()->owns_shader(p_rid)) {
+ GLES3::MaterialStorage::get_singleton()->shader_free(p_rid);
return true;
- } else if (material_owner.owns(p_rid)) {
- Material *m = material_owner.get_or_null(p_rid);
-
- if (m->shader) {
- m->shader->materials.remove(&m->list);
- }
-
- /*
- for (Map<Geometry *, int>::Element *E = m->geometry_owners.front(); E; E = E->next()) {
- Geometry *g = E->key();
- g->material = RID();
- }
-
- for (Map<InstanceBaseDependency *, int>::Element *E = m->instance_owners.front(); E; E = E->next()) {
- InstanceBaseDependency *ins = E->key();
-
- if (ins->material_override == p_rid) {
- ins->material_override = RID();
- }
-
- for (int i = 0; i < ins->materials.size(); i++) {
- if (ins->materials[i] == p_rid) {
- ins->materials.write[i] = RID();
- }
- }
- }
-*/
-
- material_owner.free(p_rid);
- memdelete(m);
-
+ } else if (GLES3::MaterialStorage::get_singleton()->owns_material(p_rid)) {
+ GLES3::MaterialStorage::get_singleton()->material_free(p_rid);
return true;
-
} else {
return false;
}
@@ -3015,13 +2133,6 @@ void RasterizerStorageGLES3::initialize() {
// OR max_vertex_texture_image_units is zero
config->use_skeleton_software = (config->float_texture_supported == false) || (config->max_vertex_texture_image_units == 0);
- shaders.copy.initialize();
- shaders.copy_version = shaders.copy.version_create(); //TODO
- shaders.copy.version_bind_shader(shaders.copy_version, CopyShaderGLES3::MODE_COPY_SECTION);
- //shaders.cubemap_filter.init();
- //bool ggx_hq = GLOBAL_GET("rendering/quality/reflections/high_quality_ggx");
- //shaders.cubemap_filter.set_conditional(CubemapFilterShaderGLES3::LOW_QUALITY, !ggx_hq);
-
{
// quad for copying stuff
@@ -3179,8 +2290,8 @@ uint64_t RasterizerStorageGLES3::get_rendering_info(RS::RenderingInfo p_info) {
}
void RasterizerStorageGLES3::update_dirty_resources() {
- update_dirty_shaders();
- update_dirty_materials();
+ GLES3::MaterialStorage::get_singleton()->update_dirty_shaders();
+ GLES3::MaterialStorage::get_singleton()->update_dirty_materials();
// update_dirty_skeletons();
// update_dirty_multimeshes();
}
@@ -3190,7 +2301,6 @@ RasterizerStorageGLES3::RasterizerStorageGLES3() {
}
RasterizerStorageGLES3::~RasterizerStorageGLES3() {
- shaders.copy.version_free(shaders.copy_version);
}
#endif // GLES3_ENABLED
diff --git a/drivers/gles3/rasterizer_storage_gles3.h b/drivers/gles3/rasterizer_storage_gles3.h
index 83b81293c4..b9022142dd 100644
--- a/drivers/gles3/rasterizer_storage_gles3.h
+++ b/drivers/gles3/rasterizer_storage_gles3.h
@@ -42,18 +42,17 @@
#include "servers/rendering/shader_language.h"
#include "storage/canvas_texture_storage.h"
#include "storage/config.h"
+#include "storage/material_storage.h"
#include "storage/render_target_storage.h"
#include "storage/texture_storage.h"
-#include "shaders/copy.glsl.gen.h"
-
-class RasterizerCanvasGLES3;
-class RasterizerSceneGLES3;
+// class RasterizerCanvasGLES3;
+// class RasterizerSceneGLES3;
class RasterizerStorageGLES3 : public RendererStorage {
public:
- RasterizerCanvasGLES3 *canvas;
- RasterizerSceneGLES3 *scene;
+ // RasterizerCanvasGLES3 *canvas;
+ // RasterizerSceneGLES3 *scene;
static GLuint system_fbo;
@@ -79,19 +78,6 @@ public:
} resources;
- mutable struct Shaders {
- ShaderCompiler compiler;
-
- CopyShaderGLES3 copy;
- RID copy_version;
- //CubemapFilterShaderGLES3 cubemap_filter;
-
- ShaderCompiler::IdentifierActions actions_canvas;
- ShaderCompiler::IdentifierActions actions_scene;
- ShaderCompiler::IdentifierActions actions_particles;
-
- } shaders;
-
struct Info {
uint64_t texture_mem = 0;
uint64_t vertex_mem = 0;
@@ -146,231 +132,6 @@ public:
RID sky_create();
void sky_set_texture(RID p_sky, RID p_panorama, int p_radiance_size);
- // SHADER API
-
- struct Material;
-
- struct Shader {
- RID self;
-
- RS::ShaderMode mode;
- ShaderGLES3 *shader;
- String code;
- SelfList<Material>::List materials;
-
- Map<StringName, ShaderLanguage::ShaderNode::Uniform> uniforms;
-
- RID version;
-
- SelfList<Shader> dirty_list;
-
- Map<StringName, Map<int, RID>> default_textures;
-
- Vector<ShaderCompiler::GeneratedCode::Texture> texture_uniforms;
-
- bool valid;
-
- String path;
-
- uint32_t index;
- uint64_t last_pass;
-
- struct CanvasItem {
- enum BlendMode {
- BLEND_MODE_MIX,
- BLEND_MODE_ADD,
- BLEND_MODE_SUB,
- BLEND_MODE_MUL,
- BLEND_MODE_PMALPHA,
- };
-
- int blend_mode;
-
- enum LightMode {
- LIGHT_MODE_NORMAL,
- LIGHT_MODE_UNSHADED,
- LIGHT_MODE_LIGHT_ONLY
- };
-
- int light_mode;
-
- bool uses_screen_texture;
- bool uses_screen_uv;
- bool uses_time;
- bool uses_modulate;
- bool uses_color;
- bool uses_vertex;
-
- // all these should disable item joining if used in a custom shader
- bool uses_model_matrix;
- bool uses_extra_matrix;
- bool uses_projection_matrix;
- bool uses_instance_custom;
-
- } canvas_item;
-
- struct Spatial {
- enum BlendMode {
- BLEND_MODE_MIX,
- BLEND_MODE_ADD,
- BLEND_MODE_SUB,
- BLEND_MODE_MUL,
- };
-
- int blend_mode;
-
- enum DepthDrawMode {
- DEPTH_DRAW_OPAQUE,
- DEPTH_DRAW_ALWAYS,
- DEPTH_DRAW_NEVER,
- DEPTH_DRAW_ALPHA_PREPASS,
- };
-
- int depth_draw_mode;
-
- enum CullMode {
- CULL_MODE_FRONT,
- CULL_MODE_BACK,
- CULL_MODE_DISABLED,
- };
-
- int cull_mode;
-
- bool uses_alpha;
- bool uses_alpha_scissor;
- bool unshaded;
- bool no_depth_test;
- bool uses_vertex;
- bool uses_discard;
- bool uses_sss;
- bool uses_screen_texture;
- bool uses_depth_texture;
- bool uses_time;
- bool uses_tangent;
- bool uses_ensure_correct_normals;
- bool writes_modelview_or_projection;
- bool uses_vertex_lighting;
- bool uses_world_coordinates;
-
- } spatial;
-
- struct Particles {
- } particles;
-
- bool uses_vertex_time;
- bool uses_fragment_time;
-
- Shader() :
- dirty_list(this) {
- shader = nullptr;
- valid = false;
- version = RID();
- last_pass = 0;
- }
- };
-
- mutable RID_PtrOwner<Shader> shader_owner;
- mutable SelfList<Shader>::List _shader_dirty_list;
-
- void _shader_make_dirty(Shader *p_shader);
-
- RID shader_allocate() override;
- void shader_initialize(RID p_rid) override;
-
- //RID shader_create() override;
-
- void shader_set_code(RID p_shader, const String &p_code) override;
- String shader_get_code(RID p_shader) const override;
- void shader_get_param_list(RID p_shader, List<PropertyInfo> *p_param_list) const override;
-
- void shader_set_default_texture_param(RID p_shader, const StringName &p_name, RID p_texture, int p_index) override;
- RID shader_get_default_texture_param(RID p_shader, const StringName &p_name, int p_index) const override;
-
- RS::ShaderNativeSourceCode shader_get_native_source_code(RID p_shader) const override { return RS::ShaderNativeSourceCode(); };
-
- void _update_shader(Shader *p_shader) const;
- void update_dirty_shaders();
-
- // new
- Variant shader_get_param_default(RID p_material, const StringName &p_param) const override { return Variant(); }
-
- // COMMON MATERIAL API
-
- struct Material {
- RID self;
- Shader *shader;
- Map<StringName, Variant> params;
- SelfList<Material> list;
- SelfList<Material> dirty_list;
- Vector<Pair<StringName, RID>> textures;
- float line_width;
- int render_priority;
-
- RID next_pass;
-
- uint32_t index;
- uint64_t last_pass;
-
- // Map<Geometry *, int> geometry_owners;
- // Map<InstanceBaseDependency *, int> instance_owners;
-
- bool can_cast_shadow_cache;
- bool is_animated_cache;
-
- Material() :
- list(this),
- dirty_list(this) {
- can_cast_shadow_cache = false;
- is_animated_cache = false;
- shader = nullptr;
- line_width = 1.0;
- last_pass = 0;
- render_priority = 0;
- }
- };
-
- mutable SelfList<Material>::List _material_dirty_list;
- void _material_make_dirty(Material *p_material) const;
-
- // void _material_add_geometry(RID p_material, Geometry *p_geometry);
- // void _material_remove_geometry(RID p_material, Geometry *p_geometry);
-
- void _update_material(Material *p_material);
-
- mutable RID_PtrOwner<Material> material_owner;
-
- // new
- void material_get_instance_shader_parameters(RID p_material, List<InstanceShaderParam> *r_parameters) override {}
- void material_update_dependency(RID p_material, DependencyTracker *p_instance) override {}
-
- // old
- RID material_allocate() override;
- void material_initialize(RID p_rid) override;
-
- //RID material_create() override;
-
- void material_set_shader(RID p_material, RID p_shader) override;
- RID material_get_shader(RID p_material) const;
-
- void material_set_param(RID p_material, const StringName &p_param, const Variant &p_value) override;
- Variant material_get_param(RID p_material, const StringName &p_param) const override;
- Variant material_get_param_default(RID p_material, const StringName &p_param) const;
-
- void material_set_line_width(RID p_material, float p_width);
- void material_set_next_pass(RID p_material, RID p_next_material) override;
-
- bool material_is_animated(RID p_material) override;
- bool material_casts_shadows(RID p_material) override;
- bool material_uses_tangents(RID p_material);
- bool material_uses_ensure_correct_normals(RID p_material);
-
- void material_add_instance_owner(RID p_material, DependencyTracker *p_instance);
- void material_remove_instance_owner(RID p_material, DependencyTracker *p_instance);
-
- void material_set_render_priority(RID p_material, int priority) override;
-
- void update_dirty_materials();
-
/* MESH API */
RID mesh_allocate() override;
@@ -579,25 +340,6 @@ public:
void base_update_dependency(RID p_base, DependencyTracker *p_instance) override;
void skeleton_update_dependency(RID p_base, DependencyTracker *p_instance) override;
- /* DECAL API */
-
- RID decal_allocate() override;
- void decal_initialize(RID p_rid) override;
- void decal_set_extents(RID p_decal, const Vector3 &p_extents) override;
- void decal_set_texture(RID p_decal, RS::DecalTexture p_type, RID p_texture) override;
- void decal_set_emission_energy(RID p_decal, float p_energy) override;
- void decal_set_albedo_mix(RID p_decal, float p_mix) override;
- void decal_set_modulate(RID p_decal, const Color &p_modulate) override;
- void decal_set_cull_mask(RID p_decal, uint32_t p_layers) override;
- void decal_set_distance_fade(RID p_decal, bool p_enabled, float p_begin, float p_length) override;
- void decal_set_fade(RID p_decal, float p_above, float p_below) override;
- void decal_set_normal_fade(RID p_decal, float p_fade) override;
-
- AABB decal_get_aabb(RID p_decal) const override;
-
- void texture_add_to_decal_atlas(RID p_texture, bool p_panorama_to_dp = false) override {}
- void texture_remove_from_decal_atlas(RID p_texture, bool p_panorama_to_dp = false) override {}
-
/* VOXEL GI API */
RID voxel_gi_allocate() override;
@@ -713,6 +455,7 @@ public:
void particles_set_canvas_sdf_collision(RID p_particles, bool p_enable, const Transform2D &p_xform, const Rect2 &p_to_screen, RID p_texture) override;
void update_particles() override;
+ bool particles_is_inactive(RID p_particles) const override;
/* PARTICLES COLLISION */
@@ -756,26 +499,6 @@ public:
AABB visibility_notifier_get_aabb(RID p_notifier) const override;
void visibility_notifier_call(RID p_notifier, bool p_enter, bool p_deferred) override;
- /* GLOBAL VARIABLES */
-
- void global_variable_add(const StringName &p_name, RS::GlobalVariableType p_type, const Variant &p_value) override;
- void global_variable_remove(const StringName &p_name) override;
- Vector<StringName> global_variable_get_list() const override;
-
- void global_variable_set(const StringName &p_name, const Variant &p_value) override;
- void global_variable_set_override(const StringName &p_name, const Variant &p_value) override;
- Variant global_variable_get(const StringName &p_name) const override;
- RS::GlobalVariableType global_variable_get_type(const StringName &p_name) const override;
-
- void global_variables_load_settings(bool p_load_textures = true) override;
- void global_variables_clear() override;
-
- int32_t global_variables_instance_allocate(RID p_instance) override;
- void global_variables_instance_free(RID p_instance) override;
- void global_variables_instance_update(RID p_instance, int p_index, const Variant &p_value) override;
-
- bool particles_is_inactive(RID p_particles) const override;
-
// RENDER TARGET
mutable RID_PtrOwner<GLES3::RenderTarget> render_target_owner;
diff --git a/modules/fbx/register_types.cpp b/drivers/gles3/storage/decal_atlas_storage.cpp
index 73e15e38b4..7bac34ea19 100644
--- a/modules/fbx/register_types.cpp
+++ b/drivers/gles3/storage/decal_atlas_storage.cpp
@@ -1,5 +1,5 @@
/*************************************************************************/
-/* register_types.cpp */
+/* decal_atlas_storage.cpp */
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
@@ -28,31 +28,48 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
-#include "register_types.h"
+#ifdef GLES3_ENABLED
-#include "editor/editor_node.h"
-#include "modules/fbx/editor_scene_importer_fbx.h"
+#include "decal_atlas_storage.h"
-#ifdef TOOLS_ENABLED
-static void _editor_init() {
- Ref<EditorSceneFormatImporterFBX> import_fbx;
- import_fbx.instantiate();
- ResourceImporterScene::get_singleton()->add_importer(import_fbx);
+using namespace GLES3;
+
+RID DecalAtlasStorage::decal_allocate() {
+ return RID();
}
-#endif
-void register_fbx_types() {
-#ifdef TOOLS_ENABLED
- ClassDB::APIType prev_api = ClassDB::get_current_api();
- ClassDB::set_current_api(ClassDB::API_EDITOR);
+void DecalAtlasStorage::decal_initialize(RID p_rid) {
+}
- GDREGISTER_CLASS(EditorSceneFormatImporterFBX);
+void DecalAtlasStorage::decal_set_extents(RID p_decal, const Vector3 &p_extents) {
+}
- ClassDB::set_current_api(prev_api);
+void DecalAtlasStorage::decal_set_texture(RID p_decal, RS::DecalTexture p_type, RID p_texture) {
+}
- EditorNode::add_init_callback(_editor_init);
-#endif
+void DecalAtlasStorage::decal_set_emission_energy(RID p_decal, float p_energy) {
}
-void unregister_fbx_types() {
+void DecalAtlasStorage::decal_set_albedo_mix(RID p_decal, float p_mix) {
}
+
+void DecalAtlasStorage::decal_set_modulate(RID p_decal, const Color &p_modulate) {
+}
+
+void DecalAtlasStorage::decal_set_cull_mask(RID p_decal, uint32_t p_layers) {
+}
+
+void DecalAtlasStorage::decal_set_distance_fade(RID p_decal, bool p_enabled, float p_begin, float p_length) {
+}
+
+void DecalAtlasStorage::decal_set_fade(RID p_decal, float p_above, float p_below) {
+}
+
+void DecalAtlasStorage::decal_set_normal_fade(RID p_decal, float p_fade) {
+}
+
+AABB DecalAtlasStorage::decal_get_aabb(RID p_decal) const {
+ return AABB();
+}
+
+#endif // !GLES3_ENABLED
diff --git a/modules/fbx/data/fbx_bone.h b/drivers/gles3/storage/decal_atlas_storage.h
index 6c8f7f7cae..f5dc36b1fb 100644
--- a/modules/fbx/data/fbx_bone.h
+++ b/drivers/gles3/storage/decal_atlas_storage.h
@@ -1,5 +1,5 @@
/*************************************************************************/
-/* fbx_bone.h */
+/* decal_atlas_storage.h */
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
@@ -28,63 +28,40 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
-#ifndef FBX_BONE_H
-#define FBX_BONE_H
+#ifndef DECAL_ATLAS_STORAGE_GLES3_H
+#define DECAL_ATLAS_STORAGE_GLES3_H
-#include "fbx_node.h"
-#include "import_state.h"
+#ifdef GLES3_ENABLED
-#include "fbx_parser/FBXDocument.h"
+#include "core/templates/rid_owner.h"
+#include "servers/rendering/storage/decal_atlas_storage.h"
-struct PivotTransform;
+namespace GLES3 {
-struct FBXBone : public RefCounted {
- uint64_t parent_bone_id = 0;
- uint64_t bone_id = 0;
+class DecalAtlasStorage : public RendererDecalAtlasStorage {
+public:
+ virtual RID decal_allocate() override;
+ virtual void decal_initialize(RID p_rid) override;
+ virtual void decal_free(RID p_rid) override{};
- bool valid_parent = false; // if the parent bone id is set up.
- String bone_name = String(); // bone name
+ virtual void decal_set_extents(RID p_decal, const Vector3 &p_extents) override;
+ virtual void decal_set_texture(RID p_decal, RS::DecalTexture p_type, RID p_texture) override;
+ virtual void decal_set_emission_energy(RID p_decal, float p_energy) override;
+ virtual void decal_set_albedo_mix(RID p_decal, float p_mix) override;
+ virtual void decal_set_modulate(RID p_decal, const Color &p_modulate) override;
+ virtual void decal_set_cull_mask(RID p_decal, uint32_t p_layers) override;
+ virtual void decal_set_distance_fade(RID p_decal, bool p_enabled, float p_begin, float p_length) override;
+ virtual void decal_set_fade(RID p_decal, float p_above, float p_below) override;
+ virtual void decal_set_normal_fade(RID p_decal, float p_fade) override;
- bool is_root_bone() const {
- return !valid_parent;
- }
+ virtual AABB decal_get_aabb(RID p_decal) const override;
- // Godot specific data
- int godot_bone_id = -2; // godot internal bone id assigned after import
-
- // if a bone / armature is the root then FBX skeleton will contain the bone not any other skeleton.
- // this is to support joints by themselves in scenes
- bool valid_armature_id = false;
- uint64_t armature_id = 0;
-
- /* link node is the parent bone */
- mutable const FBXDocParser::Geometry *geometry = nullptr;
- mutable const FBXDocParser::ModelLimbNode *limb_node = nullptr;
-
- void set_node(Ref<FBXNode> p_node) {
- node = p_node;
- }
-
- // Stores the pivot xform for this bone
-
- Ref<FBXNode> node = nullptr;
- Ref<FBXBone> parent_bone = nullptr;
- Ref<FBXSkeleton> fbx_skeleton = nullptr;
+ virtual void texture_add_to_decal_atlas(RID p_texture, bool p_panorama_to_dp = false) override {}
+ virtual void texture_remove_from_decal_atlas(RID p_texture, bool p_panorama_to_dp = false) override {}
};
-struct FBXSkinDeformer {
- FBXSkinDeformer(Ref<FBXBone> p_bone, const FBXDocParser::Cluster *p_cluster) :
- cluster(p_cluster), bone(p_bone) {}
- ~FBXSkinDeformer() {}
- const FBXDocParser::Cluster *cluster;
- Ref<FBXBone> bone;
-
- /* get associate model - the model can be invalid sometimes */
- Ref<FBXBone> get_associate_model() const {
- return bone->parent_bone;
- }
+} // namespace GLES3
- Ref<FBXNode> get_link(const ImportState &state) const;
-};
+#endif // !GLES3_ENABLED
-#endif // FBX_BONE_H
+#endif // !DECAL_ATLAS_STORAGE_GLES3_H
diff --git a/drivers/gles3/storage/material_storage.cpp b/drivers/gles3/storage/material_storage.cpp
new file mode 100644
index 0000000000..f773a6160a
--- /dev/null
+++ b/drivers/gles3/storage/material_storage.cpp
@@ -0,0 +1,913 @@
+/*************************************************************************/
+/* material_storage.cpp */
+/*************************************************************************/
+/* This file is part of: */
+/* GODOT ENGINE */
+/* https://godotengine.org */
+/*************************************************************************/
+/* Copyright (c) 2007-2022 Juan Linietsky, Ariel Manzur. */
+/* Copyright (c) 2014-2022 Godot Engine contributors (cf. AUTHORS.md). */
+/* */
+/* Permission is hereby granted, free of charge, to any person obtaining */
+/* a copy of this software and associated documentation files (the */
+/* "Software"), to deal in the Software without restriction, including */
+/* without limitation the rights to use, copy, modify, merge, publish, */
+/* distribute, sublicense, and/or sell copies of the Software, and to */
+/* permit persons to whom the Software is furnished to do so, subject to */
+/* the following conditions: */
+/* */
+/* The above copyright notice and this permission notice shall be */
+/* included in all copies or substantial portions of the Software. */
+/* */
+/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
+/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
+/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
+/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
+/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
+/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
+/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
+/*************************************************************************/
+
+#ifdef GLES3_ENABLED
+
+#include "material_storage.h"
+#include "config.h"
+#include "texture_storage.h"
+
+#include "drivers/gles3/rasterizer_canvas_gles3.h"
+
+using namespace GLES3;
+
+MaterialStorage *MaterialStorage::singleton = nullptr;
+
+MaterialStorage *MaterialStorage::get_singleton() {
+ return singleton;
+}
+
+MaterialStorage::MaterialStorage() {
+ singleton = this;
+
+ shaders.copy.initialize();
+ shaders.copy_version = shaders.copy.version_create(); //TODO
+ shaders.copy.version_bind_shader(shaders.copy_version, CopyShaderGLES3::MODE_COPY_SECTION);
+ //shaders.cubemap_filter.init();
+ //bool ggx_hq = GLOBAL_GET("rendering/quality/reflections/high_quality_ggx");
+ //shaders.cubemap_filter.set_conditional(CubemapFilterShaderGLES3::LOW_QUALITY, !ggx_hq);
+}
+
+MaterialStorage::~MaterialStorage() {
+ shaders.copy.version_free(shaders.copy_version);
+
+ singleton = nullptr;
+}
+
+/* GLOBAL VARIABLE API */
+
+void MaterialStorage::global_variable_add(const StringName &p_name, RS::GlobalVariableType p_type, const Variant &p_value) {
+}
+
+void MaterialStorage::global_variable_remove(const StringName &p_name) {
+}
+
+Vector<StringName> MaterialStorage::global_variable_get_list() const {
+ return Vector<StringName>();
+}
+
+void MaterialStorage::global_variable_set(const StringName &p_name, const Variant &p_value) {
+}
+
+void MaterialStorage::global_variable_set_override(const StringName &p_name, const Variant &p_value) {
+}
+
+Variant MaterialStorage::global_variable_get(const StringName &p_name) const {
+ return Variant();
+}
+
+RS::GlobalVariableType MaterialStorage::global_variable_get_type(const StringName &p_name) const {
+ return RS::GLOBAL_VAR_TYPE_MAX;
+}
+
+void MaterialStorage::global_variables_load_settings(bool p_load_textures) {
+}
+
+void MaterialStorage::global_variables_clear() {
+}
+
+int32_t MaterialStorage::global_variables_instance_allocate(RID p_instance) {
+ return 0;
+}
+
+void MaterialStorage::global_variables_instance_free(RID p_instance) {
+}
+
+void MaterialStorage::global_variables_instance_update(RID p_instance, int p_index, const Variant &p_value) {
+}
+
+/* SHADER API */
+
+void MaterialStorage::_shader_make_dirty(Shader *p_shader) {
+ if (p_shader->dirty_list.in_list()) {
+ return;
+ }
+
+ _shader_dirty_list.add(&p_shader->dirty_list);
+}
+
+RID MaterialStorage::shader_allocate() {
+ Shader *shader = memnew(Shader);
+ shader->mode = RS::SHADER_CANVAS_ITEM;
+ //shader->shader = &scene->state.scene_shader;
+ RID rid = shader_owner.make_rid(shader);
+ _shader_make_dirty(shader);
+ shader->self = rid;
+
+ return rid;
+}
+
+void MaterialStorage::shader_initialize(RID p_rid) {
+ // noop
+}
+
+//RID MaterialStorage::shader_create() {
+// Shader *shader = memnew(Shader);
+// shader->mode = RS::SHADER_SPATIAL;
+// shader->shader = &scene->state.scene_shader;
+// RID rid = shader_owner.make_rid(shader);
+// _shader_make_dirty(shader);
+// shader->self = rid;
+
+// return rid;
+//}
+
+void MaterialStorage::shader_free(RID p_rid) {
+ Shader *shader = shader_owner.get_or_null(p_rid);
+
+ if (shader->shader && shader->version.is_valid()) {
+ shader->shader->version_free(shader->version);
+ }
+
+ if (shader->dirty_list.in_list()) {
+ _shader_dirty_list.remove(&shader->dirty_list);
+ }
+
+ while (shader->materials.first()) {
+ Material *m = shader->materials.first()->self();
+
+ m->shader = nullptr;
+ _material_make_dirty(m);
+
+ shader->materials.remove(shader->materials.first());
+ }
+
+ shader_owner.free(p_rid);
+ memdelete(shader);
+}
+
+void MaterialStorage::shader_set_code(RID p_shader, const String &p_code) {
+ Shader *shader = shader_owner.get_or_null(p_shader);
+ ERR_FAIL_COND(!shader);
+
+ shader->code = p_code;
+
+ String mode_string = ShaderLanguage::get_shader_type(p_code);
+ RS::ShaderMode mode;
+
+ if (mode_string == "canvas_item") {
+ mode = RS::SHADER_CANVAS_ITEM;
+ } else if (mode_string == "particles") {
+ mode = RS::SHADER_PARTICLES;
+ } else if (mode_string == "sky") {
+ mode = RS::SHADER_SKY;
+ } else if (mode_string == "spatial") {
+ mode = RS::SHADER_SPATIAL;
+ } else {
+ mode = RS::SHADER_MAX;
+ ERR_PRINT("shader type " + mode_string + " not supported in OpenGL renderer");
+ }
+
+ if (shader->version.is_valid() && mode != shader->mode) {
+ shader->shader->version_free(shader->version);
+ shader->version = RID();
+ }
+
+ shader->mode = mode;
+
+ // TODO handle all shader types
+ if (mode == RS::SHADER_CANVAS_ITEM) {
+ shader->shader = &RasterizerCanvasGLES3::get_singleton()->state.canvas_shader;
+ } else if (mode == RS::SHADER_SPATIAL) {
+ //shader->shader = &scene->state.scene_shader;
+ } else if (mode == RS::SHADER_PARTICLES) {
+ } else if (mode == RS::SHADER_SKY) {
+ } else {
+ return;
+ }
+
+ if (shader->version.is_null() && shader->shader) {
+ shader->version = shader->shader->version_create();
+ }
+
+ _shader_make_dirty(shader);
+}
+
+String MaterialStorage::shader_get_code(RID p_shader) const {
+ const Shader *shader = shader_owner.get_or_null(p_shader);
+ ERR_FAIL_COND_V(!shader, "");
+
+ return shader->code;
+}
+
+void MaterialStorage::shader_get_param_list(RID p_shader, List<PropertyInfo> *p_param_list) const {
+ Shader *shader = shader_owner.get_or_null(p_shader);
+ ERR_FAIL_COND(!shader);
+
+ if (shader->dirty_list.in_list()) {
+ _update_shader(shader);
+ }
+
+ Map<int, StringName> order;
+
+ for (Map<StringName, ShaderLanguage::ShaderNode::Uniform>::Element *E = shader->uniforms.front(); E; E = E->next()) {
+ if (E->get().texture_order >= 0) {
+ order[E->get().texture_order + 100000] = E->key();
+ } else {
+ order[E->get().order] = E->key();
+ }
+ }
+
+ for (Map<int, StringName>::Element *E = order.front(); E; E = E->next()) {
+ PropertyInfo pi;
+ ShaderLanguage::ShaderNode::Uniform &u = shader->uniforms[E->get()];
+
+ pi.name = E->get();
+
+ switch (u.type) {
+ case ShaderLanguage::TYPE_VOID: {
+ pi.type = Variant::NIL;
+ } break;
+
+ case ShaderLanguage::TYPE_BOOL: {
+ pi.type = Variant::BOOL;
+ } break;
+
+ // bool vectors
+ case ShaderLanguage::TYPE_BVEC2: {
+ pi.type = Variant::INT;
+ pi.hint = PROPERTY_HINT_FLAGS;
+ pi.hint_string = "x,y";
+ } break;
+ case ShaderLanguage::TYPE_BVEC3: {
+ pi.type = Variant::INT;
+ pi.hint = PROPERTY_HINT_FLAGS;
+ pi.hint_string = "x,y,z";
+ } break;
+ case ShaderLanguage::TYPE_BVEC4: {
+ pi.type = Variant::INT;
+ pi.hint = PROPERTY_HINT_FLAGS;
+ pi.hint_string = "x,y,z,w";
+ } break;
+
+ // int stuff
+ case ShaderLanguage::TYPE_UINT:
+ case ShaderLanguage::TYPE_INT: {
+ pi.type = Variant::INT;
+
+ if (u.hint == ShaderLanguage::ShaderNode::Uniform::HINT_RANGE) {
+ pi.hint = PROPERTY_HINT_RANGE;
+ pi.hint_string = rtos(u.hint_range[0]) + "," + rtos(u.hint_range[1]) + "," + rtos(u.hint_range[2]);
+ }
+ } break;
+
+ case ShaderLanguage::TYPE_IVEC2:
+ case ShaderLanguage::TYPE_UVEC2:
+ case ShaderLanguage::TYPE_IVEC3:
+ case ShaderLanguage::TYPE_UVEC3:
+ case ShaderLanguage::TYPE_IVEC4:
+ case ShaderLanguage::TYPE_UVEC4: {
+ // not sure what this should be in godot 4
+ // pi.type = Variant::POOL_INT_ARRAY;
+ pi.type = Variant::PACKED_INT32_ARRAY;
+ } break;
+
+ case ShaderLanguage::TYPE_FLOAT: {
+ pi.type = Variant::FLOAT;
+ if (u.hint == ShaderLanguage::ShaderNode::Uniform::HINT_RANGE) {
+ pi.hint = PROPERTY_HINT_RANGE;
+ pi.hint_string = rtos(u.hint_range[0]) + "," + rtos(u.hint_range[1]) + "," + rtos(u.hint_range[2]);
+ }
+ } break;
+
+ case ShaderLanguage::TYPE_VEC2: {
+ pi.type = Variant::VECTOR2;
+ } break;
+ case ShaderLanguage::TYPE_VEC3: {
+ pi.type = Variant::VECTOR3;
+ } break;
+
+ case ShaderLanguage::TYPE_VEC4: {
+ if (u.hint == ShaderLanguage::ShaderNode::Uniform::HINT_COLOR) {
+ pi.type = Variant::COLOR;
+ } else {
+ pi.type = Variant::PLANE;
+ }
+ } break;
+
+ case ShaderLanguage::TYPE_MAT2: {
+ pi.type = Variant::TRANSFORM2D;
+ } break;
+
+ case ShaderLanguage::TYPE_MAT3: {
+ pi.type = Variant::BASIS;
+ } break;
+
+ case ShaderLanguage::TYPE_MAT4: {
+ pi.type = Variant::TRANSFORM3D;
+ } break;
+
+ case ShaderLanguage::TYPE_SAMPLER2D:
+ // case ShaderLanguage::TYPE_SAMPLEREXT:
+ case ShaderLanguage::TYPE_ISAMPLER2D:
+ case ShaderLanguage::TYPE_USAMPLER2D: {
+ pi.type = Variant::OBJECT;
+ pi.hint = PROPERTY_HINT_RESOURCE_TYPE;
+ pi.hint_string = "Texture";
+ } break;
+
+ case ShaderLanguage::TYPE_SAMPLERCUBE: {
+ pi.type = Variant::OBJECT;
+ pi.hint = PROPERTY_HINT_RESOURCE_TYPE;
+ pi.hint_string = "CubeMap";
+ } break;
+
+ case ShaderLanguage::TYPE_SAMPLER2DARRAY:
+ case ShaderLanguage::TYPE_ISAMPLER2DARRAY:
+ case ShaderLanguage::TYPE_USAMPLER2DARRAY:
+ case ShaderLanguage::TYPE_SAMPLER3D:
+ case ShaderLanguage::TYPE_ISAMPLER3D:
+ case ShaderLanguage::TYPE_USAMPLER3D: {
+ // Not implemented in OpenGL
+ } break;
+ // new for godot 4
+ case ShaderLanguage::TYPE_SAMPLERCUBEARRAY:
+ case ShaderLanguage::TYPE_STRUCT:
+ case ShaderLanguage::TYPE_MAX: {
+ } break;
+ }
+
+ p_param_list->push_back(pi);
+ }
+}
+
+void MaterialStorage::shader_set_default_texture_param(RID p_shader, const StringName &p_name, RID p_texture, int p_index) {
+ Shader *shader = shader_owner.get_or_null(p_shader);
+ ERR_FAIL_COND(!shader);
+ ERR_FAIL_COND(p_texture.is_valid() && !TextureStorage::get_singleton()->owns_texture(p_texture));
+
+ if (!p_texture.is_valid()) {
+ if (shader->default_textures.has(p_name) && shader->default_textures[p_name].has(p_index)) {
+ shader->default_textures[p_name].erase(p_index);
+
+ if (shader->default_textures[p_name].is_empty()) {
+ shader->default_textures.erase(p_name);
+ }
+ }
+ } else {
+ if (!shader->default_textures.has(p_name)) {
+ shader->default_textures[p_name] = Map<int, RID>();
+ }
+ shader->default_textures[p_name][p_index] = p_texture;
+ }
+
+ _shader_make_dirty(shader);
+}
+
+RID MaterialStorage::shader_get_default_texture_param(RID p_shader, const StringName &p_name, int p_index) const {
+ const Shader *shader = shader_owner.get_or_null(p_shader);
+ ERR_FAIL_COND_V(!shader, RID());
+
+ if (shader->default_textures.has(p_name) && shader->default_textures[p_name].has(p_index)) {
+ return shader->default_textures[p_name][p_index];
+ }
+
+ return RID();
+}
+
+void MaterialStorage::_update_shader(Shader *p_shader) const {
+ _shader_dirty_list.remove(&p_shader->dirty_list);
+
+ p_shader->valid = false;
+
+ p_shader->uniforms.clear();
+
+ if (p_shader->code.is_empty()) {
+ return; //just invalid, but no error
+ }
+
+ ShaderCompiler::GeneratedCode gen_code;
+ ShaderCompiler::IdentifierActions *actions = nullptr;
+
+ switch (p_shader->mode) {
+ case RS::SHADER_CANVAS_ITEM: {
+ p_shader->canvas_item.light_mode = Shader::CanvasItem::LIGHT_MODE_NORMAL;
+ p_shader->canvas_item.blend_mode = Shader::CanvasItem::BLEND_MODE_MIX;
+
+ p_shader->canvas_item.uses_screen_texture = false;
+ p_shader->canvas_item.uses_screen_uv = false;
+ p_shader->canvas_item.uses_time = false;
+ p_shader->canvas_item.uses_modulate = false;
+ p_shader->canvas_item.uses_color = false;
+ p_shader->canvas_item.uses_vertex = false;
+
+ p_shader->canvas_item.uses_model_matrix = false;
+ p_shader->canvas_item.uses_extra_matrix = false;
+ p_shader->canvas_item.uses_projection_matrix = false;
+ p_shader->canvas_item.uses_instance_custom = false;
+
+ shaders.actions_canvas.render_mode_values["blend_add"] = Pair<int *, int>(&p_shader->canvas_item.blend_mode, Shader::CanvasItem::BLEND_MODE_ADD);
+ shaders.actions_canvas.render_mode_values["blend_mix"] = Pair<int *, int>(&p_shader->canvas_item.blend_mode, Shader::CanvasItem::BLEND_MODE_MIX);
+ shaders.actions_canvas.render_mode_values["blend_sub"] = Pair<int *, int>(&p_shader->canvas_item.blend_mode, Shader::CanvasItem::BLEND_MODE_SUB);
+ shaders.actions_canvas.render_mode_values["blend_mul"] = Pair<int *, int>(&p_shader->canvas_item.blend_mode, Shader::CanvasItem::BLEND_MODE_MUL);
+ shaders.actions_canvas.render_mode_values["blend_premul_alpha"] = Pair<int *, int>(&p_shader->canvas_item.blend_mode, Shader::CanvasItem::BLEND_MODE_PMALPHA);
+
+ shaders.actions_canvas.render_mode_values["unshaded"] = Pair<int *, int>(&p_shader->canvas_item.light_mode, Shader::CanvasItem::LIGHT_MODE_UNSHADED);
+ shaders.actions_canvas.render_mode_values["light_only"] = Pair<int *, int>(&p_shader->canvas_item.light_mode, Shader::CanvasItem::LIGHT_MODE_LIGHT_ONLY);
+
+ shaders.actions_canvas.usage_flag_pointers["SCREEN_UV"] = &p_shader->canvas_item.uses_screen_uv;
+ shaders.actions_canvas.usage_flag_pointers["SCREEN_PIXEL_SIZE"] = &p_shader->canvas_item.uses_screen_uv;
+ shaders.actions_canvas.usage_flag_pointers["SCREEN_TEXTURE"] = &p_shader->canvas_item.uses_screen_texture;
+ shaders.actions_canvas.usage_flag_pointers["TIME"] = &p_shader->canvas_item.uses_time;
+ shaders.actions_canvas.usage_flag_pointers["MODULATE"] = &p_shader->canvas_item.uses_modulate;
+ shaders.actions_canvas.usage_flag_pointers["COLOR"] = &p_shader->canvas_item.uses_color;
+
+ shaders.actions_canvas.usage_flag_pointers["VERTEX"] = &p_shader->canvas_item.uses_vertex;
+
+ shaders.actions_canvas.usage_flag_pointers["MODEL_MATRIX"] = &p_shader->canvas_item.uses_model_matrix;
+ shaders.actions_canvas.usage_flag_pointers["EXTRA_MATRIX"] = &p_shader->canvas_item.uses_extra_matrix;
+ shaders.actions_canvas.usage_flag_pointers["PROJECTION_MATRIX"] = &p_shader->canvas_item.uses_projection_matrix;
+ shaders.actions_canvas.usage_flag_pointers["INSTANCE_CUSTOM"] = &p_shader->canvas_item.uses_instance_custom;
+
+ actions = &shaders.actions_canvas;
+ actions->uniforms = &p_shader->uniforms;
+ } break;
+
+ case RS::SHADER_SPATIAL: {
+ // TODO remove once 3D is added back
+ return;
+ p_shader->spatial.blend_mode = Shader::Spatial::BLEND_MODE_MIX;
+ p_shader->spatial.depth_draw_mode = Shader::Spatial::DEPTH_DRAW_OPAQUE;
+ p_shader->spatial.cull_mode = Shader::Spatial::CULL_MODE_BACK;
+ p_shader->spatial.uses_alpha = false;
+ p_shader->spatial.uses_alpha_scissor = false;
+ p_shader->spatial.uses_discard = false;
+ p_shader->spatial.unshaded = false;
+ p_shader->spatial.no_depth_test = false;
+ p_shader->spatial.uses_sss = false;
+ p_shader->spatial.uses_time = false;
+ p_shader->spatial.uses_vertex_lighting = false;
+ p_shader->spatial.uses_screen_texture = false;
+ p_shader->spatial.uses_depth_texture = false;
+ p_shader->spatial.uses_vertex = false;
+ p_shader->spatial.uses_tangent = false;
+ p_shader->spatial.uses_ensure_correct_normals = false;
+ p_shader->spatial.writes_modelview_or_projection = false;
+ p_shader->spatial.uses_world_coordinates = false;
+
+ shaders.actions_scene.render_mode_values["blend_add"] = Pair<int *, int>(&p_shader->spatial.blend_mode, Shader::Spatial::BLEND_MODE_ADD);
+ shaders.actions_scene.render_mode_values["blend_mix"] = Pair<int *, int>(&p_shader->spatial.blend_mode, Shader::Spatial::BLEND_MODE_MIX);
+ shaders.actions_scene.render_mode_values["blend_sub"] = Pair<int *, int>(&p_shader->spatial.blend_mode, Shader::Spatial::BLEND_MODE_SUB);
+ shaders.actions_scene.render_mode_values["blend_mul"] = Pair<int *, int>(&p_shader->spatial.blend_mode, Shader::Spatial::BLEND_MODE_MUL);
+
+ shaders.actions_scene.render_mode_values["depth_draw_opaque"] = Pair<int *, int>(&p_shader->spatial.depth_draw_mode, Shader::Spatial::DEPTH_DRAW_OPAQUE);
+ shaders.actions_scene.render_mode_values["depth_draw_always"] = Pair<int *, int>(&p_shader->spatial.depth_draw_mode, Shader::Spatial::DEPTH_DRAW_ALWAYS);
+ shaders.actions_scene.render_mode_values["depth_draw_never"] = Pair<int *, int>(&p_shader->spatial.depth_draw_mode, Shader::Spatial::DEPTH_DRAW_NEVER);
+ shaders.actions_scene.render_mode_values["depth_draw_alpha_prepass"] = Pair<int *, int>(&p_shader->spatial.depth_draw_mode, Shader::Spatial::DEPTH_DRAW_ALPHA_PREPASS);
+
+ shaders.actions_scene.render_mode_values["cull_front"] = Pair<int *, int>(&p_shader->spatial.cull_mode, Shader::Spatial::CULL_MODE_FRONT);
+ shaders.actions_scene.render_mode_values["cull_back"] = Pair<int *, int>(&p_shader->spatial.cull_mode, Shader::Spatial::CULL_MODE_BACK);
+ shaders.actions_scene.render_mode_values["cull_disabled"] = Pair<int *, int>(&p_shader->spatial.cull_mode, Shader::Spatial::CULL_MODE_DISABLED);
+
+ shaders.actions_scene.render_mode_flags["unshaded"] = &p_shader->spatial.unshaded;
+ shaders.actions_scene.render_mode_flags["depth_test_disable"] = &p_shader->spatial.no_depth_test;
+
+ shaders.actions_scene.render_mode_flags["vertex_lighting"] = &p_shader->spatial.uses_vertex_lighting;
+
+ shaders.actions_scene.render_mode_flags["world_vertex_coords"] = &p_shader->spatial.uses_world_coordinates;
+
+ shaders.actions_scene.render_mode_flags["ensure_correct_normals"] = &p_shader->spatial.uses_ensure_correct_normals;
+
+ shaders.actions_scene.usage_flag_pointers["ALPHA"] = &p_shader->spatial.uses_alpha;
+ shaders.actions_scene.usage_flag_pointers["ALPHA_SCISSOR"] = &p_shader->spatial.uses_alpha_scissor;
+
+ shaders.actions_scene.usage_flag_pointers["SSS_STRENGTH"] = &p_shader->spatial.uses_sss;
+ shaders.actions_scene.usage_flag_pointers["DISCARD"] = &p_shader->spatial.uses_discard;
+ shaders.actions_scene.usage_flag_pointers["SCREEN_TEXTURE"] = &p_shader->spatial.uses_screen_texture;
+ shaders.actions_scene.usage_flag_pointers["DEPTH_TEXTURE"] = &p_shader->spatial.uses_depth_texture;
+ shaders.actions_scene.usage_flag_pointers["TIME"] = &p_shader->spatial.uses_time;
+
+ // Use of any of these BUILTINS indicate the need for transformed tangents.
+ // This is needed to know when to transform tangents in software skinning.
+ shaders.actions_scene.usage_flag_pointers["TANGENT"] = &p_shader->spatial.uses_tangent;
+ shaders.actions_scene.usage_flag_pointers["NORMALMAP"] = &p_shader->spatial.uses_tangent;
+
+ shaders.actions_scene.write_flag_pointers["MODELVIEW_MATRIX"] = &p_shader->spatial.writes_modelview_or_projection;
+ shaders.actions_scene.write_flag_pointers["PROJECTION_MATRIX"] = &p_shader->spatial.writes_modelview_or_projection;
+ shaders.actions_scene.write_flag_pointers["VERTEX"] = &p_shader->spatial.uses_vertex;
+
+ actions = &shaders.actions_scene;
+ actions->uniforms = &p_shader->uniforms;
+ } break;
+
+ default: {
+ return;
+ } break;
+ }
+
+ Error err = shaders.compiler.compile(p_shader->mode, p_shader->code, actions, p_shader->path, gen_code);
+ if (err != OK) {
+ return;
+ }
+
+ Vector<StringName> texture_uniform_names;
+ for (int i = 0; i < gen_code.texture_uniforms.size(); i++) {
+ texture_uniform_names.push_back(gen_code.texture_uniforms[i].name);
+ }
+
+ p_shader->shader->version_set_code(p_shader->version, gen_code.code, gen_code.uniforms, gen_code.stage_globals[ShaderCompiler::STAGE_VERTEX], gen_code.stage_globals[ShaderCompiler::STAGE_FRAGMENT], gen_code.defines, texture_uniform_names);
+
+ p_shader->texture_uniforms = gen_code.texture_uniforms;
+
+ p_shader->uses_vertex_time = gen_code.uses_vertex_time;
+ p_shader->uses_fragment_time = gen_code.uses_fragment_time;
+
+ for (SelfList<Material> *E = p_shader->materials.first(); E; E = E->next()) {
+ _material_make_dirty(E->self());
+ }
+
+ p_shader->valid = true;
+}
+
+void MaterialStorage::update_dirty_shaders() {
+ while (_shader_dirty_list.first()) {
+ _update_shader(_shader_dirty_list.first()->self());
+ }
+}
+
+/* MATERIAL API */
+
+void MaterialStorage::_material_make_dirty(Material *p_material) const {
+ if (p_material->dirty_list.in_list()) {
+ return;
+ }
+
+ _material_dirty_list.add(&p_material->dirty_list);
+}
+
+void MaterialStorage::_update_material(Material *p_material) {
+ if (p_material->dirty_list.in_list()) {
+ _material_dirty_list.remove(&p_material->dirty_list);
+ }
+
+ if (p_material->shader && p_material->shader->dirty_list.in_list()) {
+ _update_shader(p_material->shader);
+ }
+
+ if (p_material->shader && !p_material->shader->valid) {
+ return;
+ }
+
+ {
+ bool can_cast_shadow = false;
+ bool is_animated = false;
+
+ if (p_material->shader && p_material->shader->mode == RS::SHADER_SPATIAL) {
+ if (p_material->shader->spatial.blend_mode == Shader::Spatial::BLEND_MODE_MIX &&
+ (!p_material->shader->spatial.uses_alpha || p_material->shader->spatial.depth_draw_mode == Shader::Spatial::DEPTH_DRAW_ALPHA_PREPASS)) {
+ can_cast_shadow = true;
+ }
+
+ if (p_material->shader->spatial.uses_discard && p_material->shader->uses_fragment_time) {
+ is_animated = true;
+ }
+
+ if (p_material->shader->spatial.uses_vertex && p_material->shader->uses_vertex_time) {
+ is_animated = true;
+ }
+
+ if (can_cast_shadow != p_material->can_cast_shadow_cache || is_animated != p_material->is_animated_cache) {
+ p_material->can_cast_shadow_cache = can_cast_shadow;
+ p_material->is_animated_cache = is_animated;
+
+ /*
+ for (Map<Geometry *, int>::Element *E = p_material->geometry_owners.front(); E; E = E->next()) {
+ E->key()->material_changed_notify();
+ }
+
+ for (Map<InstanceBaseDependency *, int>::Element *E = p_material->instance_owners.front(); E; E = E->next()) {
+ E->key()->base_changed(false, true);
+ }
+ */
+ }
+ }
+ }
+
+ // uniforms and other things will be set in the use_material method in ShaderGLES3
+
+ if (p_material->shader && p_material->shader->texture_uniforms.size() > 0) {
+ p_material->textures.resize(p_material->shader->texture_uniforms.size());
+
+ for (Map<StringName, ShaderLanguage::ShaderNode::Uniform>::Element *E = p_material->shader->uniforms.front(); E; E = E->next()) {
+ if (E->get().texture_order < 0) {
+ continue; // not a texture, does not go here
+ }
+
+ RID texture;
+
+ Map<StringName, Variant>::Element *V = p_material->params.find(E->key());
+
+ if (V) {
+ texture = V->get();
+ }
+
+ if (!texture.is_valid()) {
+ Map<StringName, Map<int, RID>>::Element *W = p_material->shader->default_textures.find(E->key());
+
+ // TODO: make texture uniform array properly works with GLES3
+ if (W && W->get().has(0)) {
+ texture = W->get()[0];
+ }
+ }
+
+ p_material->textures.write[E->get().texture_order] = Pair<StringName, RID>(E->key(), texture);
+ }
+ } else {
+ p_material->textures.clear();
+ }
+}
+
+RID MaterialStorage::material_allocate() {
+ Material *material = memnew(Material);
+ return material_owner.make_rid(material);
+}
+
+void MaterialStorage::material_initialize(RID p_rid) {
+}
+
+//RID MaterialStorage::material_create() {
+// Material *material = memnew(Material);
+
+// return material_owner.make_rid(material);
+//}
+
+void MaterialStorage::material_free(RID p_rid) {
+ Material *m = material_owner.get_or_null(p_rid);
+
+ if (m->shader) {
+ m->shader->materials.remove(&m->list);
+ }
+
+ /*
+ for (Map<Geometry *, int>::Element *E = m->geometry_owners.front(); E; E = E->next()) {
+ Geometry *g = E->key();
+ g->material = RID();
+ }
+
+ for (Map<InstanceBaseDependency *, int>::Element *E = m->instance_owners.front(); E; E = E->next()) {
+ InstanceBaseDependency *ins = E->key();
+
+ if (ins->material_override == p_rid) {
+ ins->material_override = RID();
+ }
+
+ for (int i = 0; i < ins->materials.size(); i++) {
+ if (ins->materials[i] == p_rid) {
+ ins->materials.write[i] = RID();
+ }
+ }
+ }
+*/
+
+ material_owner.free(p_rid);
+ memdelete(m);
+}
+
+void MaterialStorage::material_set_shader(RID p_material, RID p_shader) {
+ Material *material = material_owner.get_or_null(p_material);
+ ERR_FAIL_COND(!material);
+
+ Shader *shader = get_shader(p_shader);
+
+ if (material->shader) {
+ // if a shader is present, remove the old shader
+ material->shader->materials.remove(&material->list);
+ }
+
+ material->shader = shader;
+
+ if (shader) {
+ shader->materials.add(&material->list);
+ }
+
+ _material_make_dirty(material);
+}
+
+void MaterialStorage::material_set_param(RID p_material, const StringName &p_param, const Variant &p_value) {
+ Material *material = material_owner.get_or_null(p_material);
+ ERR_FAIL_COND(!material);
+
+ if (p_value.get_type() == Variant::NIL) {
+ material->params.erase(p_param);
+ } else {
+ material->params[p_param] = p_value;
+ }
+
+ _material_make_dirty(material);
+}
+
+Variant MaterialStorage::material_get_param(RID p_material, const StringName &p_param) const {
+ const Material *material = material_owner.get_or_null(p_material);
+ ERR_FAIL_COND_V(!material, RID());
+
+ if (material->params.has(p_param)) {
+ return material->params[p_param];
+ }
+
+ return material_get_param_default(p_material, p_param);
+}
+
+void MaterialStorage::material_set_next_pass(RID p_material, RID p_next_material) {
+ Material *material = material_owner.get_or_null(p_material);
+ ERR_FAIL_COND(!material);
+
+ material->next_pass = p_next_material;
+}
+
+void MaterialStorage::material_set_render_priority(RID p_material, int priority) {
+ ERR_FAIL_COND(priority < RS::MATERIAL_RENDER_PRIORITY_MIN);
+ ERR_FAIL_COND(priority > RS::MATERIAL_RENDER_PRIORITY_MAX);
+
+ Material *material = material_owner.get_or_null(p_material);
+ ERR_FAIL_COND(!material);
+
+ material->render_priority = priority;
+}
+
+bool MaterialStorage::material_is_animated(RID p_material) {
+ Material *material = material_owner.get_or_null(p_material);
+ ERR_FAIL_COND_V(!material, false);
+ if (material->dirty_list.in_list()) {
+ _update_material(material);
+ }
+
+ bool animated = material->is_animated_cache;
+ if (!animated && material->next_pass.is_valid()) {
+ animated = material_is_animated(material->next_pass);
+ }
+ return animated;
+}
+
+bool MaterialStorage::material_casts_shadows(RID p_material) {
+ Material *material = material_owner.get_or_null(p_material);
+ ERR_FAIL_COND_V(!material, false);
+ if (material->dirty_list.in_list()) {
+ _update_material(material);
+ }
+
+ bool casts_shadows = material->can_cast_shadow_cache;
+
+ if (!casts_shadows && material->next_pass.is_valid()) {
+ casts_shadows = material_casts_shadows(material->next_pass);
+ }
+
+ return casts_shadows;
+}
+
+Variant MaterialStorage::material_get_param_default(RID p_material, const StringName &p_param) const {
+ const Material *material = material_owner.get_or_null(p_material);
+ ERR_FAIL_COND_V(!material, Variant());
+
+ if (material->shader) {
+ if (material->shader->uniforms.has(p_param)) {
+ ShaderLanguage::ShaderNode::Uniform uniform = material->shader->uniforms[p_param];
+ Vector<ShaderLanguage::ConstantNode::Value> default_value = uniform.default_value;
+ return ShaderLanguage::constant_value_to_variant(default_value, uniform.type, uniform.hint);
+ }
+ }
+ return Variant();
+}
+
+void MaterialStorage::update_dirty_materials() {
+ while (_material_dirty_list.first()) {
+ Material *material = _material_dirty_list.first()->self();
+ _update_material(material);
+ }
+}
+
+/* are these still used? */
+RID MaterialStorage::material_get_shader(RID p_material) const {
+ const Material *material = material_owner.get_or_null(p_material);
+ ERR_FAIL_COND_V(!material, RID());
+
+ if (material->shader) {
+ return material->shader->self;
+ }
+
+ return RID();
+}
+
+void MaterialStorage::material_set_line_width(RID p_material, float p_width) {
+ Material *material = material_owner.get_or_null(p_material);
+ ERR_FAIL_COND(!material);
+
+ material->line_width = p_width;
+}
+
+bool MaterialStorage::material_uses_tangents(RID p_material) {
+ Material *material = material_owner.get_or_null(p_material);
+ ERR_FAIL_COND_V(!material, false);
+
+ if (!material->shader) {
+ return false;
+ }
+
+ if (material->shader->dirty_list.in_list()) {
+ _update_shader(material->shader);
+ }
+
+ return material->shader->spatial.uses_tangent;
+}
+
+bool MaterialStorage::material_uses_ensure_correct_normals(RID p_material) {
+ Material *material = material_owner.get_or_null(p_material);
+ ERR_FAIL_COND_V(!material, false);
+
+ if (!material->shader) {
+ return false;
+ }
+
+ if (material->shader->dirty_list.in_list()) {
+ _update_shader(material->shader);
+ }
+
+ return material->shader->spatial.uses_ensure_correct_normals;
+}
+
+void MaterialStorage::material_add_instance_owner(RID p_material, RendererStorage::DependencyTracker *p_instance) {
+ /*
+ Material *material = material_owner.get_or_null(p_material);
+ ERR_FAIL_COND(!material);
+
+ Map<InstanceBaseDependency *, int>::Element *E = material->instance_owners.find(p_instance);
+ if (E) {
+ E->get()++;
+ } else {
+ material->instance_owners[p_instance] = 1;
+ }
+*/
+}
+
+void MaterialStorage::material_remove_instance_owner(RID p_material, RendererStorage::DependencyTracker *p_instance) {
+ /*
+ Material *material = material_owner.get_or_null(p_material);
+ ERR_FAIL_COND(!material);
+
+ Map<InstanceBaseDependency *, int>::Element *E = material->instance_owners.find(p_instance);
+ ERR_FAIL_COND(!E);
+
+ E->get()--;
+
+ if (E->get() == 0) {
+ material->instance_owners.erase(E);
+ }
+*/
+}
+
+/*
+void MaterialStorage::_material_add_geometry(RID p_material, Geometry *p_geometry) {
+ Material *material = material_owner.get_or_null(p_material);
+ ERR_FAIL_COND(!material);
+
+ Map<Geometry *, int>::Element *I = material->geometry_owners.find(p_geometry);
+
+ if (I) {
+ I->get()++;
+ } else {
+ material->geometry_owners[p_geometry] = 1;
+ }
+}
+
+void MaterialStorage::_material_remove_geometry(RID p_material, Geometry *p_geometry) {
+ Material *material = material_owner.get_or_null(p_material);
+ ERR_FAIL_COND(!material);
+
+ Map<Geometry *, int>::Element *I = material->geometry_owners.find(p_geometry);
+ ERR_FAIL_COND(!I);
+
+ I->get()--;
+
+ if (I->get() == 0) {
+ material->geometry_owners.erase(I);
+ }
+}
+*/
+
+#endif // !GLES3_ENABLED
diff --git a/drivers/gles3/storage/material_storage.h b/drivers/gles3/storage/material_storage.h
new file mode 100644
index 0000000000..bf17e66c2f
--- /dev/null
+++ b/drivers/gles3/storage/material_storage.h
@@ -0,0 +1,338 @@
+/*************************************************************************/
+/* material_storage.h */
+/*************************************************************************/
+/* This file is part of: */
+/* GODOT ENGINE */
+/* https://godotengine.org */
+/*************************************************************************/
+/* Copyright (c) 2007-2022 Juan Linietsky, Ariel Manzur. */
+/* Copyright (c) 2014-2022 Godot Engine contributors (cf. AUTHORS.md). */
+/* */
+/* Permission is hereby granted, free of charge, to any person obtaining */
+/* a copy of this software and associated documentation files (the */
+/* "Software"), to deal in the Software without restriction, including */
+/* without limitation the rights to use, copy, modify, merge, publish, */
+/* distribute, sublicense, and/or sell copies of the Software, and to */
+/* permit persons to whom the Software is furnished to do so, subject to */
+/* the following conditions: */
+/* */
+/* The above copyright notice and this permission notice shall be */
+/* included in all copies or substantial portions of the Software. */
+/* */
+/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
+/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
+/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
+/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
+/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
+/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
+/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
+/*************************************************************************/
+
+#ifndef MATERIAL_STORAGE_GLES3_H
+#define MATERIAL_STORAGE_GLES3_H
+
+#ifdef GLES3_ENABLED
+
+#include "core/templates/local_vector.h"
+#include "core/templates/rid_owner.h"
+#include "core/templates/self_list.h"
+#include "servers/rendering/renderer_compositor.h"
+#include "servers/rendering/renderer_storage.h"
+#include "servers/rendering/shader_compiler.h"
+#include "servers/rendering/shader_language.h"
+#include "servers/rendering/storage/material_storage.h"
+
+#include "drivers/gles3/shaders/copy.glsl.gen.h"
+
+namespace GLES3 {
+
+/* SHADER Structs */
+
+struct Shaders {
+ ShaderCompiler compiler;
+
+ CopyShaderGLES3 copy;
+ RID copy_version;
+ //CubemapFilterShaderGLES3 cubemap_filter;
+
+ ShaderCompiler::IdentifierActions actions_canvas;
+ ShaderCompiler::IdentifierActions actions_scene;
+ ShaderCompiler::IdentifierActions actions_particles;
+};
+
+struct Material;
+
+struct Shader {
+ RID self;
+
+ RS::ShaderMode mode;
+ ShaderGLES3 *shader;
+ String code;
+ SelfList<Material>::List materials;
+
+ Map<StringName, ShaderLanguage::ShaderNode::Uniform> uniforms;
+
+ RID version;
+
+ SelfList<Shader> dirty_list;
+
+ Map<StringName, Map<int, RID>> default_textures;
+
+ Vector<ShaderCompiler::GeneratedCode::Texture> texture_uniforms;
+
+ bool valid;
+
+ String path;
+
+ uint32_t index;
+ uint64_t last_pass;
+
+ struct CanvasItem {
+ enum BlendMode {
+ BLEND_MODE_MIX,
+ BLEND_MODE_ADD,
+ BLEND_MODE_SUB,
+ BLEND_MODE_MUL,
+ BLEND_MODE_PMALPHA,
+ };
+
+ int blend_mode;
+
+ enum LightMode {
+ LIGHT_MODE_NORMAL,
+ LIGHT_MODE_UNSHADED,
+ LIGHT_MODE_LIGHT_ONLY
+ };
+
+ int light_mode;
+
+ bool uses_screen_texture;
+ bool uses_screen_uv;
+ bool uses_time;
+ bool uses_modulate;
+ bool uses_color;
+ bool uses_vertex;
+
+ // all these should disable item joining if used in a custom shader
+ bool uses_model_matrix;
+ bool uses_extra_matrix;
+ bool uses_projection_matrix;
+ bool uses_instance_custom;
+
+ } canvas_item;
+
+ struct Spatial {
+ enum BlendMode {
+ BLEND_MODE_MIX,
+ BLEND_MODE_ADD,
+ BLEND_MODE_SUB,
+ BLEND_MODE_MUL,
+ };
+
+ int blend_mode;
+
+ enum DepthDrawMode {
+ DEPTH_DRAW_OPAQUE,
+ DEPTH_DRAW_ALWAYS,
+ DEPTH_DRAW_NEVER,
+ DEPTH_DRAW_ALPHA_PREPASS,
+ };
+
+ int depth_draw_mode;
+
+ enum CullMode {
+ CULL_MODE_FRONT,
+ CULL_MODE_BACK,
+ CULL_MODE_DISABLED,
+ };
+
+ int cull_mode;
+
+ bool uses_alpha;
+ bool uses_alpha_scissor;
+ bool unshaded;
+ bool no_depth_test;
+ bool uses_vertex;
+ bool uses_discard;
+ bool uses_sss;
+ bool uses_screen_texture;
+ bool uses_depth_texture;
+ bool uses_time;
+ bool uses_tangent;
+ bool uses_ensure_correct_normals;
+ bool writes_modelview_or_projection;
+ bool uses_vertex_lighting;
+ bool uses_world_coordinates;
+
+ } spatial;
+
+ struct Particles {
+ } particles;
+
+ bool uses_vertex_time;
+ bool uses_fragment_time;
+
+ Shader() :
+ dirty_list(this) {
+ shader = nullptr;
+ valid = false;
+ version = RID();
+ last_pass = 0;
+ }
+};
+
+/* MATERIAL Structs */
+
+struct Material {
+ RID self;
+ Shader *shader;
+ Map<StringName, Variant> params;
+ SelfList<Material> list;
+ SelfList<Material> dirty_list;
+ Vector<Pair<StringName, RID>> textures;
+ float line_width;
+ int render_priority;
+
+ RID next_pass;
+
+ uint32_t index;
+ uint64_t last_pass;
+
+ // Map<Geometry *, int> geometry_owners;
+ // Map<InstanceBaseDependency *, int> instance_owners;
+
+ bool can_cast_shadow_cache;
+ bool is_animated_cache;
+
+ Material() :
+ list(this),
+ dirty_list(this) {
+ can_cast_shadow_cache = false;
+ is_animated_cache = false;
+ shader = nullptr;
+ line_width = 1.0;
+ last_pass = 0;
+ render_priority = 0;
+ }
+};
+
+class MaterialStorage : public RendererMaterialStorage {
+private:
+ static MaterialStorage *singleton;
+
+ /* SHADER API */
+
+ mutable Shaders shaders;
+
+ mutable RID_PtrOwner<Shader> shader_owner;
+ mutable SelfList<Shader>::List _shader_dirty_list;
+
+ /* MATERIAL API */
+
+ mutable SelfList<Material>::List _material_dirty_list;
+ mutable RID_PtrOwner<Material> material_owner;
+
+public:
+ static MaterialStorage *get_singleton();
+
+ MaterialStorage();
+ virtual ~MaterialStorage();
+
+ /* GLOBAL VARIABLE API */
+
+ virtual void global_variable_add(const StringName &p_name, RS::GlobalVariableType p_type, const Variant &p_value) override;
+ virtual void global_variable_remove(const StringName &p_name) override;
+ virtual Vector<StringName> global_variable_get_list() const override;
+
+ virtual void global_variable_set(const StringName &p_name, const Variant &p_value) override;
+ virtual void global_variable_set_override(const StringName &p_name, const Variant &p_value) override;
+ virtual Variant global_variable_get(const StringName &p_name) const override;
+ virtual RS::GlobalVariableType global_variable_get_type(const StringName &p_name) const override;
+
+ virtual void global_variables_load_settings(bool p_load_textures = true) override;
+ virtual void global_variables_clear() override;
+
+ virtual int32_t global_variables_instance_allocate(RID p_instance) override;
+ virtual void global_variables_instance_free(RID p_instance) override;
+ virtual void global_variables_instance_update(RID p_instance, int p_index, const Variant &p_value) override;
+
+ /* SHADER API */
+
+ Shader *get_shader(RID p_rid) { return shader_owner.get_or_null(p_rid); };
+ bool owns_shader(RID p_rid) { return shader_owner.owns(p_rid); };
+
+ void _shader_make_dirty(Shader *p_shader);
+
+ virtual RID shader_allocate() override;
+ virtual void shader_initialize(RID p_rid) override;
+ virtual void shader_free(RID p_rid) override;
+
+ //RID shader_create() override;
+
+ virtual void shader_set_code(RID p_shader, const String &p_code) override;
+ virtual String shader_get_code(RID p_shader) const override;
+ virtual void shader_get_param_list(RID p_shader, List<PropertyInfo> *p_param_list) const override;
+
+ virtual void shader_set_default_texture_param(RID p_shader, const StringName &p_name, RID p_texture, int p_index) override;
+ virtual RID shader_get_default_texture_param(RID p_shader, const StringName &p_name, int p_index) const override;
+
+ virtual RS::ShaderNativeSourceCode shader_get_native_source_code(RID p_shader) const override { return RS::ShaderNativeSourceCode(); };
+
+ void _update_shader(Shader *p_shader) const;
+ void update_dirty_shaders();
+
+ // new
+ Variant shader_get_param_default(RID p_material, const StringName &p_param) const override { return Variant(); }
+
+ /* MATERIAL API */
+
+ Material *get_material(RID p_rid) { return material_owner.get_or_null(p_rid); };
+ bool owns_material(RID p_rid) { return material_owner.owns(p_rid); };
+
+ void _material_make_dirty(Material *p_material) const;
+
+ // void _material_add_geometry(RID p_material, Geometry *p_geometry);
+ // void _material_remove_geometry(RID p_material, Geometry *p_geometry);
+
+ void _update_material(Material *p_material);
+
+ // new
+ virtual void material_get_instance_shader_parameters(RID p_material, List<InstanceShaderParam> *r_parameters) override {}
+ virtual void material_update_dependency(RID p_material, RendererStorage::DependencyTracker *p_instance) override {}
+
+ // old
+ virtual RID material_allocate() override;
+ virtual void material_initialize(RID p_rid) override;
+
+ virtual void material_free(RID p_rid) override;
+
+ //RID material_create() override;
+
+ virtual void material_set_shader(RID p_material, RID p_shader) override;
+ virtual RID material_get_shader(RID p_material) const;
+
+ virtual void material_set_param(RID p_material, const StringName &p_param, const Variant &p_value) override;
+ virtual Variant material_get_param(RID p_material, const StringName &p_param) const override;
+ virtual Variant material_get_param_default(RID p_material, const StringName &p_param) const;
+
+ void material_set_line_width(RID p_material, float p_width);
+ virtual void material_set_next_pass(RID p_material, RID p_next_material) override;
+
+ virtual bool material_is_animated(RID p_material) override;
+ virtual bool material_casts_shadows(RID p_material) override;
+ bool material_uses_tangents(RID p_material);
+ bool material_uses_ensure_correct_normals(RID p_material);
+
+ void material_add_instance_owner(RID p_material, RendererStorage::DependencyTracker *p_instance);
+ void material_remove_instance_owner(RID p_material, RendererStorage::DependencyTracker *p_instance);
+
+ void material_set_render_priority(RID p_material, int priority) override;
+
+ void update_dirty_materials();
+};
+
+} // namespace GLES3
+
+#endif // GLES3_ENABLED
+
+#endif // !MATERIAL_STORAGE_GLES3_H
diff --git a/drivers/vulkan/rendering_device_vulkan.cpp b/drivers/vulkan/rendering_device_vulkan.cpp
index 62de01e8bb..84ca7dbfc2 100644
--- a/drivers/vulkan/rendering_device_vulkan.cpp
+++ b/drivers/vulkan/rendering_device_vulkan.cpp
@@ -1318,7 +1318,7 @@ const VkImageType RenderingDeviceVulkan::vulkan_image_type[RenderingDevice::TEXT
/**** BUFFER MANAGEMENT ****/
/***************************/
-Error RenderingDeviceVulkan::_buffer_allocate(Buffer *p_buffer, uint32_t p_size, uint32_t p_usage, VmaMemoryUsage p_mapping) {
+Error RenderingDeviceVulkan::_buffer_allocate(Buffer *p_buffer, uint32_t p_size, uint32_t p_usage, VmaMemoryUsage p_mem_usage, VmaAllocationCreateFlags p_mem_flags) {
VkBufferCreateInfo bufferInfo;
bufferInfo.sType = VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO;
bufferInfo.pNext = nullptr;
@@ -1330,8 +1330,8 @@ Error RenderingDeviceVulkan::_buffer_allocate(Buffer *p_buffer, uint32_t p_size,
bufferInfo.pQueueFamilyIndices = nullptr;
VmaAllocationCreateInfo allocInfo;
- allocInfo.flags = 0;
- allocInfo.usage = p_mapping;
+ allocInfo.flags = p_mem_flags;
+ allocInfo.usage = p_mem_usage;
allocInfo.requiredFlags = 0;
allocInfo.preferredFlags = 0;
allocInfo.memoryTypeBits = 0;
@@ -1380,8 +1380,8 @@ Error RenderingDeviceVulkan::_insert_staging_block() {
bufferInfo.pQueueFamilyIndices = nullptr;
VmaAllocationCreateInfo allocInfo;
- allocInfo.flags = 0;
- allocInfo.usage = VMA_MEMORY_USAGE_CPU_ONLY;
+ allocInfo.flags = VMA_ALLOCATION_CREATE_HOST_ACCESS_SEQUENTIAL_WRITE_BIT;
+ allocInfo.usage = VMA_MEMORY_USAGE_AUTO_PREFER_HOST;
allocInfo.requiredFlags = 0;
allocInfo.preferredFlags = 0;
allocInfo.memoryTypeBits = 0;
@@ -1847,9 +1847,9 @@ RID RenderingDeviceVulkan::texture_create(const TextureFormat &p_format, const T
uint32_t image_size = get_image_format_required_size(p_format.format, p_format.width, p_format.height, p_format.depth, p_format.mipmaps, &width, &height);
VmaAllocationCreateInfo allocInfo;
- allocInfo.flags = 0;
+ allocInfo.flags = (p_format.usage_bits & TEXTURE_USAGE_CPU_READ_BIT) ? VMA_ALLOCATION_CREATE_HOST_ACCESS_RANDOM_BIT : 0;
allocInfo.pool = nullptr;
- allocInfo.usage = p_format.usage_bits & TEXTURE_USAGE_CPU_READ_BIT ? VMA_MEMORY_USAGE_CPU_ONLY : VMA_MEMORY_USAGE_GPU_ONLY;
+ allocInfo.usage = VMA_MEMORY_USAGE_AUTO_PREFER_DEVICE;
allocInfo.requiredFlags = 0;
allocInfo.preferredFlags = 0;
allocInfo.memoryTypeBits = 0;
@@ -2703,7 +2703,7 @@ Vector<uint8_t> RenderingDeviceVulkan::texture_get_data(RID p_texture, uint32_t
//allocate buffer
VkCommandBuffer command_buffer = frames[frame].draw_command_buffer; //makes more sense to retrieve
Buffer tmp_buffer;
- _buffer_allocate(&tmp_buffer, buffer_size, VK_BUFFER_USAGE_TRANSFER_DST_BIT, VMA_MEMORY_USAGE_CPU_ONLY);
+ _buffer_allocate(&tmp_buffer, buffer_size, VK_BUFFER_USAGE_TRANSFER_DST_BIT, VMA_MEMORY_USAGE_AUTO_PREFER_HOST, VMA_ALLOCATION_CREATE_HOST_ACCESS_RANDOM_BIT);
{ //Source image barrier
VkImageMemoryBarrier image_memory_barrier;
@@ -4097,7 +4097,7 @@ RID RenderingDeviceVulkan::vertex_buffer_create(uint32_t p_size_bytes, const Vec
usage |= VK_BUFFER_USAGE_STORAGE_BUFFER_BIT;
}
Buffer buffer;
- _buffer_allocate(&buffer, p_size_bytes, usage, VMA_MEMORY_USAGE_GPU_ONLY);
+ _buffer_allocate(&buffer, p_size_bytes, usage, VMA_MEMORY_USAGE_AUTO_PREFER_DEVICE, 0);
if (p_data.size()) {
uint64_t data_size = p_data.size();
const uint8_t *r = p_data.ptr();
@@ -4259,7 +4259,7 @@ RID RenderingDeviceVulkan::index_buffer_create(uint32_t p_index_count, IndexBuff
#else
index_buffer.max_index = 0xFFFFFFFF;
#endif
- _buffer_allocate(&index_buffer, size_bytes, VK_BUFFER_USAGE_TRANSFER_SRC_BIT | VK_BUFFER_USAGE_TRANSFER_DST_BIT | VK_BUFFER_USAGE_INDEX_BUFFER_BIT, VMA_MEMORY_USAGE_GPU_ONLY);
+ _buffer_allocate(&index_buffer, size_bytes, VK_BUFFER_USAGE_TRANSFER_SRC_BIT | VK_BUFFER_USAGE_TRANSFER_DST_BIT | VK_BUFFER_USAGE_INDEX_BUFFER_BIT, VMA_MEMORY_USAGE_AUTO_PREFER_DEVICE, 0);
if (p_data.size()) {
uint64_t data_size = p_data.size();
const uint8_t *r = p_data.ptr();
@@ -5371,7 +5371,7 @@ RID RenderingDeviceVulkan::uniform_buffer_create(uint32_t p_size_bytes, const Ve
"Creating buffers with data is forbidden during creation of a draw list");
Buffer buffer;
- Error err = _buffer_allocate(&buffer, p_size_bytes, VK_BUFFER_USAGE_TRANSFER_DST_BIT | VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT, VMA_MEMORY_USAGE_GPU_ONLY);
+ Error err = _buffer_allocate(&buffer, p_size_bytes, VK_BUFFER_USAGE_TRANSFER_DST_BIT | VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT, VMA_MEMORY_USAGE_AUTO_PREFER_DEVICE, 0);
ERR_FAIL_COND_V(err != OK, RID());
if (p_data.size()) {
uint64_t data_size = p_data.size();
@@ -5397,7 +5397,7 @@ RID RenderingDeviceVulkan::storage_buffer_create(uint32_t p_size_bytes, const Ve
if (p_usage & STORAGE_BUFFER_USAGE_DISPATCH_INDIRECT) {
flags |= VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT;
}
- Error err = _buffer_allocate(&buffer, p_size_bytes, flags, VMA_MEMORY_USAGE_GPU_ONLY);
+ Error err = _buffer_allocate(&buffer, p_size_bytes, flags, VMA_MEMORY_USAGE_AUTO_PREFER_DEVICE, 0);
ERR_FAIL_COND_V(err != OK, RID());
if (p_data.size()) {
@@ -5423,7 +5423,7 @@ RID RenderingDeviceVulkan::texture_buffer_create(uint32_t p_size_elements, DataF
ERR_FAIL_COND_V(p_data.size() && (uint32_t)p_data.size() != size_bytes, RID());
TextureBuffer texture_buffer;
- Error err = _buffer_allocate(&texture_buffer.buffer, size_bytes, VK_BUFFER_USAGE_TRANSFER_SRC_BIT | VK_BUFFER_USAGE_TRANSFER_DST_BIT | VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT, VMA_MEMORY_USAGE_GPU_ONLY);
+ Error err = _buffer_allocate(&texture_buffer.buffer, size_bytes, VK_BUFFER_USAGE_TRANSFER_SRC_BIT | VK_BUFFER_USAGE_TRANSFER_DST_BIT | VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT, VMA_MEMORY_USAGE_AUTO_PREFER_DEVICE, 0);
ERR_FAIL_COND_V(err != OK, RID());
if (p_data.size()) {
@@ -6170,7 +6170,7 @@ Vector<uint8_t> RenderingDeviceVulkan::buffer_get_data(RID p_buffer) {
VkCommandBuffer command_buffer = frames[frame].setup_command_buffer;
Buffer tmp_buffer;
- _buffer_allocate(&tmp_buffer, buffer->size, VK_BUFFER_USAGE_TRANSFER_DST_BIT, VMA_MEMORY_USAGE_CPU_ONLY);
+ _buffer_allocate(&tmp_buffer, buffer->size, VK_BUFFER_USAGE_TRANSFER_DST_BIT, VMA_MEMORY_USAGE_AUTO_PREFER_HOST, VMA_ALLOCATION_CREATE_HOST_ACCESS_RANDOM_BIT);
VkBufferCopy region;
region.srcOffset = 0;
region.dstOffset = 0;
diff --git a/drivers/vulkan/rendering_device_vulkan.h b/drivers/vulkan/rendering_device_vulkan.h
index a4d5af91a4..7d9bd19309 100644
--- a/drivers/vulkan/rendering_device_vulkan.h
+++ b/drivers/vulkan/rendering_device_vulkan.h
@@ -219,7 +219,7 @@ class RenderingDeviceVulkan : public RenderingDevice {
}
};
- Error _buffer_allocate(Buffer *p_buffer, uint32_t p_size, uint32_t p_usage, VmaMemoryUsage p_mapping);
+ Error _buffer_allocate(Buffer *p_buffer, uint32_t p_size, uint32_t p_usage, VmaMemoryUsage p_mem_usage, VmaAllocationCreateFlags p_mem_flags);
Error _buffer_free(Buffer *p_buffer);
Error _buffer_update(Buffer *p_buffer, size_t p_offset, const uint8_t *p_data, size_t p_data_size, bool p_use_draw_command_buffer = false, uint32_t p_required_align = 32);
diff --git a/drivers/vulkan/vulkan_context.cpp b/drivers/vulkan/vulkan_context.cpp
index 3551b5d6c4..a09a757842 100644
--- a/drivers/vulkan/vulkan_context.cpp
+++ b/drivers/vulkan/vulkan_context.cpp
@@ -900,7 +900,7 @@ Error VulkanContext::_create_physical_device(VkSurfaceKHR p_surface) {
free(device_queue_props);
print_verbose(" #" + itos(i) + ": " + vendor + " " + name + " - " + (present_supported ? "Supported" : "Unsupported") + ", " + dev_type);
- if (present_supported) { // Select first supported device of preffered type: Discrete > Integrated > Virtual > CPU > Other.
+ if (present_supported) { // Select first supported device of preferred type: Discrete > Integrated > Virtual > CPU > Other.
switch (props.deviceType) {
case VkPhysicalDeviceType::VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU: {
if (type_selected < 4) {
diff --git a/editor/SCsub b/editor/SCsub
index 35c215b663..5dcc253e8b 100644
--- a/editor/SCsub
+++ b/editor/SCsub
@@ -99,6 +99,8 @@ if env["tools"]:
# Fonts
flist = glob.glob(env.Dir("#thirdparty").abspath + "/fonts/*.ttf")
flist.extend(glob.glob(env.Dir("#thirdparty").abspath + "/fonts/*.otf"))
+ flist.extend(glob.glob(env.Dir("#thirdparty").abspath + "/fonts/*.woff"))
+ flist.extend(glob.glob(env.Dir("#thirdparty").abspath + "/fonts/*.woff2"))
flist.sort()
env.Depends("#editor/builtin_fonts.gen.h", flist)
env.CommandNoCache(
diff --git a/editor/action_map_editor.cpp b/editor/action_map_editor.cpp
index ea51e1f399..96931efd3b 100644
--- a/editor/action_map_editor.cpp
+++ b/editor/action_map_editor.cpp
@@ -1100,6 +1100,31 @@ void ActionMapEditor::update_action_list(const Vector<ActionInfo> &p_action_info
event_item->set_meta("__event", event);
event_item->set_meta("__index", evnt_idx);
+ // First Column - Icon
+ Ref<InputEventKey> k = event;
+ if (k.is_valid()) {
+ if (k->get_physical_keycode() == Key::NONE) {
+ event_item->set_icon(0, action_tree->get_theme_icon(SNAME("Keyboard"), SNAME("EditorIcons")));
+ } else {
+ event_item->set_icon(0, action_tree->get_theme_icon(SNAME("KeyboardPhysical"), SNAME("EditorIcons")));
+ }
+ }
+
+ Ref<InputEventMouseButton> mb = event;
+ if (mb.is_valid()) {
+ event_item->set_icon(0, action_tree->get_theme_icon(SNAME("Mouse"), SNAME("EditorIcons")));
+ }
+
+ Ref<InputEventJoypadButton> jb = event;
+ if (jb.is_valid()) {
+ event_item->set_icon(0, action_tree->get_theme_icon(SNAME("JoyButton"), SNAME("EditorIcons")));
+ }
+
+ Ref<InputEventJoypadMotion> jm = event;
+ if (jm.is_valid()) {
+ event_item->set_icon(0, action_tree->get_theme_icon(SNAME("JoyAxis"), SNAME("EditorIcons")));
+ }
+
// Third Column - Buttons
event_item->add_button(2, action_tree->get_theme_icon(SNAME("Edit"), SNAME("EditorIcons")), BUTTON_EDIT_EVENT, false, TTR("Edit Event"));
event_item->add_button(2, action_tree->get_theme_icon(SNAME("Remove"), SNAME("EditorIcons")), BUTTON_REMOVE_EVENT, false, TTR("Remove Event"));
diff --git a/editor/animation_track_editor.cpp b/editor/animation_track_editor.cpp
index e61a1aae9c..dc69a8cb08 100644
--- a/editor/animation_track_editor.cpp
+++ b/editor/animation_track_editor.cpp
@@ -3383,7 +3383,7 @@ Node *AnimationTrackEditor::get_root() const {
void AnimationTrackEditor::update_keying() {
bool keying_enabled = false;
- EditorHistory *editor_history = EditorNode::get_singleton()->get_editor_history();
+ EditorSelectionHistory *editor_history = EditorNode::get_singleton()->get_editor_selection_history();
if (is_visible_in_tree() && animation.is_valid() && editor_history->get_path_size() > 0) {
Object *obj = ObjectDB::get_instance(editor_history->get_path_object(0));
keying_enabled = Object::cast_to<Node>(obj) != nullptr;
@@ -3776,7 +3776,7 @@ void AnimationTrackEditor::insert_node_value_key(Node *p_node, const String &p_p
return;
}
- EditorHistory *history = EditorNode::get_singleton()->get_editor_history();
+ EditorSelectionHistory *history = EditorNode::get_singleton()->get_editor_selection_history();
for (int i = 1; i < history->get_path_size(); i++) {
String prop = history->get_path_property(i);
ERR_FAIL_COND(prop.is_empty());
@@ -3856,7 +3856,7 @@ void AnimationTrackEditor::insert_node_value_key(Node *p_node, const String &p_p
}
void AnimationTrackEditor::insert_value_key(const String &p_property, const Variant &p_value, bool p_advance) {
- EditorHistory *history = EditorNode::get_singleton()->get_editor_history();
+ EditorSelectionHistory *history = EditorNode::get_singleton()->get_editor_selection_history();
ERR_FAIL_COND(!root);
// Let's build a node path.
diff --git a/editor/animation_track_editor_plugins.cpp b/editor/animation_track_editor_plugins.cpp
index 2ad8b2d2a4..d07881e28e 100644
--- a/editor/animation_track_editor_plugins.cpp
+++ b/editor/animation_track_editor_plugins.cpp
@@ -339,11 +339,11 @@ void AnimationTrackEditAudio::draw_key(int p_index, float p_pixels_sec, int p_x,
Rect2 rect(Vector2(p_x, int(get_size().height - fh) / 2), Size2(fh, fh));
Color color = get_theme_color(SNAME("font_color"), SNAME("Label"));
- draw_rect(rect, color);
+ draw_rect_clipped(rect, color);
if (p_selected) {
Color accent = get_theme_color(SNAME("accent_color"), SNAME("Editor"));
- draw_rect(rect, accent, false);
+ draw_rect_clipped(rect, accent, false);
}
}
}
@@ -712,11 +712,11 @@ void AnimationTrackEditSubAnim::draw_key(int p_index, float p_pixels_sec, int p_
Rect2 rect(Vector2(p_x, int(get_size().height - fh) / 2), Size2(fh, fh));
Color color = get_theme_color(SNAME("font_color"), SNAME("Label"));
- draw_rect(rect, color);
+ draw_rect_clipped(rect, color);
if (p_selected) {
Color accent = get_theme_color(SNAME("accent_color"), SNAME("Editor"));
- draw_rect(rect, accent, false);
+ draw_rect_clipped(rect, accent, false);
}
}
}
@@ -1287,11 +1287,11 @@ void AnimationTrackEditTypeAnimation::draw_key(int p_index, float p_pixels_sec,
Rect2 rect(Vector2(p_x, int(get_size().height - fh) / 2), Size2(fh, fh));
Color color = get_theme_color(SNAME("font_color"), SNAME("Label"));
- draw_rect(rect, color);
+ draw_rect_clipped(rect, color);
if (p_selected) {
Color accent = get_theme_color(SNAME("accent_color"), SNAME("Editor"));
- draw_rect(rect, accent, false);
+ draw_rect_clipped(rect, accent, false);
}
}
}
diff --git a/editor/code_editor.cpp b/editor/code_editor.cpp
index 2896fda2d2..b6da21bc79 100644
--- a/editor/code_editor.cpp
+++ b/editor/code_editor.cpp
@@ -854,7 +854,7 @@ void CodeTextEditor::_code_complete_timer_timeout() {
}
void CodeTextEditor::_complete_request() {
- List<ScriptCodeCompletionOption> entries;
+ List<ScriptLanguage::CodeCompletionOption> entries;
String ctext = text_editor->get_text_for_code_completion();
_code_complete_script(ctext, &entries);
bool forced = false;
@@ -865,7 +865,7 @@ void CodeTextEditor::_complete_request() {
return;
}
- for (const ScriptCodeCompletionOption &e : entries) {
+ for (const ScriptLanguage::CodeCompletionOption &e : entries) {
Color font_color = completion_font_color;
if (e.insert_text.begins_with("\"") || e.insert_text.begins_with("\'")) {
font_color = completion_string_color;
@@ -877,41 +877,41 @@ void CodeTextEditor::_complete_request() {
text_editor->update_code_completion_options(forced);
}
-Ref<Texture2D> CodeTextEditor::_get_completion_icon(const ScriptCodeCompletionOption &p_option) {
+Ref<Texture2D> CodeTextEditor::_get_completion_icon(const ScriptLanguage::CodeCompletionOption &p_option) {
Ref<Texture2D> tex;
switch (p_option.kind) {
- case ScriptCodeCompletionOption::KIND_CLASS: {
+ case ScriptLanguage::CODE_COMPLETION_KIND_CLASS: {
if (has_theme_icon(p_option.display, SNAME("EditorIcons"))) {
tex = get_theme_icon(p_option.display, SNAME("EditorIcons"));
} else {
tex = get_theme_icon(SNAME("Object"), SNAME("EditorIcons"));
}
} break;
- case ScriptCodeCompletionOption::KIND_ENUM:
+ case ScriptLanguage::CODE_COMPLETION_KIND_ENUM:
tex = get_theme_icon(SNAME("Enum"), SNAME("EditorIcons"));
break;
- case ScriptCodeCompletionOption::KIND_FILE_PATH:
+ case ScriptLanguage::CODE_COMPLETION_KIND_FILE_PATH:
tex = get_theme_icon(SNAME("File"), SNAME("EditorIcons"));
break;
- case ScriptCodeCompletionOption::KIND_NODE_PATH:
+ case ScriptLanguage::CODE_COMPLETION_KIND_NODE_PATH:
tex = get_theme_icon(SNAME("NodePath"), SNAME("EditorIcons"));
break;
- case ScriptCodeCompletionOption::KIND_VARIABLE:
+ case ScriptLanguage::CODE_COMPLETION_KIND_VARIABLE:
tex = get_theme_icon(SNAME("Variant"), SNAME("EditorIcons"));
break;
- case ScriptCodeCompletionOption::KIND_CONSTANT:
+ case ScriptLanguage::CODE_COMPLETION_KIND_CONSTANT:
tex = get_theme_icon(SNAME("MemberConstant"), SNAME("EditorIcons"));
break;
- case ScriptCodeCompletionOption::KIND_MEMBER:
+ case ScriptLanguage::CODE_COMPLETION_KIND_MEMBER:
tex = get_theme_icon(SNAME("MemberProperty"), SNAME("EditorIcons"));
break;
- case ScriptCodeCompletionOption::KIND_SIGNAL:
+ case ScriptLanguage::CODE_COMPLETION_KIND_SIGNAL:
tex = get_theme_icon(SNAME("MemberSignal"), SNAME("EditorIcons"));
break;
- case ScriptCodeCompletionOption::KIND_FUNCTION:
+ case ScriptLanguage::CODE_COMPLETION_KIND_FUNCTION:
tex = get_theme_icon(SNAME("MemberMethod"), SNAME("EditorIcons"));
break;
- case ScriptCodeCompletionOption::KIND_PLAIN_TEXT:
+ case ScriptLanguage::CODE_COMPLETION_KIND_PLAIN_TEXT:
tex = get_theme_icon(SNAME("BoxMesh"), SNAME("EditorIcons"));
break;
default:
diff --git a/editor/code_editor.h b/editor/code_editor.h
index d7025e7fd9..bbc45d6ec0 100644
--- a/editor/code_editor.h
+++ b/editor/code_editor.h
@@ -134,7 +134,7 @@ public:
FindReplaceBar();
};
-typedef void (*CodeTextEditorCodeCompleteFunc)(void *p_ud, const String &p_code, List<ScriptCodeCompletionOption> *r_options, bool &r_forced);
+typedef void (*CodeTextEditorCodeCompleteFunc)(void *p_ud, const String &p_code, List<ScriptLanguage::CodeCompletionOption> *r_options, bool &r_forced);
class CodeTextEditor : public VBoxContainer {
GDCLASS(CodeTextEditor, VBoxContainer);
@@ -166,7 +166,7 @@ class CodeTextEditor : public VBoxContainer {
void _update_text_editor_theme();
void _complete_request();
- Ref<Texture2D> _get_completion_icon(const ScriptCodeCompletionOption &p_option);
+ Ref<Texture2D> _get_completion_icon(const ScriptLanguage::CodeCompletionOption &p_option);
void _font_resize_timeout();
bool _add_font_size(int p_delta);
@@ -197,7 +197,7 @@ class CodeTextEditor : public VBoxContainer {
protected:
virtual void _load_theme_settings() {}
virtual void _validate_script() {}
- virtual void _code_complete_script(const String &p_code, List<ScriptCodeCompletionOption> *r_options) {}
+ virtual void _code_complete_script(const String &p_code, List<ScriptLanguage::CodeCompletionOption> *r_options) {}
void _text_changed_idle_timeout();
void _code_complete_timer_timeout();
diff --git a/editor/connections_dialog.h b/editor/connections_dialog.h
index a075ff0c55..58c584b8b2 100644
--- a/editor/connections_dialog.h
+++ b/editor/connections_dialog.h
@@ -93,8 +93,11 @@ public:
if (unbinds > 0) {
return Callable(target, method).unbind(unbinds);
} else if (!binds.is_empty()) {
- const Variant *args = binds.ptr();
- return Callable(target, method).bind(&args, binds.size());
+ const Variant **argptrs = (const Variant **)alloca(sizeof(Variant *) * binds.size());
+ for (int i = 0; i < binds.size(); i++) {
+ argptrs[i] = &binds[i];
+ }
+ return Callable(target, method).bind(argptrs, binds.size());
} else {
return Callable(target, method);
}
diff --git a/editor/debugger/editor_debugger_inspector.cpp b/editor/debugger/editor_debugger_inspector.cpp
index c111190ca3..936b8ca626 100644
--- a/editor/debugger/editor_debugger_inspector.cpp
+++ b/editor/debugger/editor_debugger_inspector.cpp
@@ -206,7 +206,7 @@ ObjectID EditorDebuggerInspector::add_object(const Array &p_arr) {
void EditorDebuggerInspector::clear_cache() {
for (const KeyValue<ObjectID, EditorDebuggerRemoteObject *> &E : remote_objects) {
EditorNode *editor = EditorNode::get_singleton();
- if (editor->get_editor_history()->get_current() == E.value->get_instance_id()) {
+ if (editor->get_editor_selection_history()->get_current() == E.value->get_instance_id()) {
editor->push_item(nullptr);
}
memdelete(E.value);
diff --git a/editor/debugger/editor_debugger_node.cpp b/editor/debugger/editor_debugger_node.cpp
index d294858ff8..c0685af572 100644
--- a/editor/debugger/editor_debugger_node.cpp
+++ b/editor/debugger/editor_debugger_node.cpp
@@ -181,7 +181,7 @@ void EditorDebuggerNode::_bind_methods() {
}
EditorDebuggerRemoteObject *EditorDebuggerNode::get_inspected_remote_object() {
- return Object::cast_to<EditorDebuggerRemoteObject>(ObjectDB::get_instance(EditorNode::get_singleton()->get_editor_history()->get_current()));
+ return Object::cast_to<EditorDebuggerRemoteObject>(ObjectDB::get_instance(EditorNode::get_singleton()->get_editor_selection_history()->get_current()));
}
ScriptEditorDebugger *EditorDebuggerNode::get_debugger(int p_id) const {
diff --git a/editor/debugger/editor_performance_profiler.cpp b/editor/debugger/editor_performance_profiler.cpp
index 56d1e7cee9..c821561ca6 100644
--- a/editor/debugger/editor_performance_profiler.cpp
+++ b/editor/debugger/editor_performance_profiler.cpp
@@ -30,6 +30,7 @@
#include "editor_performance_profiler.h"
+#include "editor/editor_property_name_processor.h"
#include "editor/editor_scale.h"
#include "editor/editor_settings.h"
#include "main/performance.h"
@@ -386,8 +387,8 @@ EditorPerformanceProfiler::EditorPerformanceProfiler() {
monitor_draw->add_child(info_message);
for (int i = 0; i < Performance::MONITOR_MAX; i++) {
- String base = Performance::get_singleton()->get_monitor_name(Performance::Monitor(i)).get_slicec('/', 0).capitalize();
- String name = Performance::get_singleton()->get_monitor_name(Performance::Monitor(i)).get_slicec('/', 1).capitalize();
+ String base = EditorPropertyNameProcessor::get_singleton()->process_name(Performance::get_singleton()->get_monitor_name(Performance::Monitor(i)).get_slicec('/', 0), EditorPropertyNameProcessor::STYLE_CAPITALIZED);
+ String name = EditorPropertyNameProcessor::get_singleton()->process_name(Performance::get_singleton()->get_monitor_name(Performance::Monitor(i)).get_slicec('/', 1), EditorPropertyNameProcessor::STYLE_CAPITALIZED);
monitors.insert(Performance::get_singleton()->get_monitor_name(Performance::Monitor(i)), Monitor(name, base, i, Performance::get_singleton()->get_monitor_type(Performance::Monitor(i)), nullptr));
}
diff --git a/editor/debugger/script_editor_debugger.cpp b/editor/debugger/script_editor_debugger.cpp
index 40b53c2636..1e8753acc0 100644
--- a/editor/debugger/script_editor_debugger.cpp
+++ b/editor/debugger/script_editor_debugger.cpp
@@ -44,6 +44,7 @@
#include "editor/editor_file_dialog.h"
#include "editor/editor_log.h"
#include "editor/editor_node.h"
+#include "editor/editor_property_name_processor.h"
#include "editor/editor_scale.h"
#include "editor/editor_settings.h"
#include "editor/plugins/canvas_item_editor_plugin.h"
@@ -647,7 +648,7 @@ void ScriptEditorDebugger::_parse_message(const String &p_msg, const Array &p_da
const ServersDebugger::ServerInfo &srv = frame.servers[i];
EditorProfiler::Metric::Category c;
const String name = srv.name;
- c.name = name.capitalize();
+ c.name = EditorPropertyNameProcessor::get_singleton()->process_name(name, EditorPropertyNameProcessor::STYLE_CAPITALIZED);
c.items.resize(srv.functions.size());
c.total_time = 0;
c.signature = "categ::" + name;
@@ -659,7 +660,7 @@ void ScriptEditorDebugger::_parse_message(const String &p_msg, const Array &p_da
item.self = srv.functions[j].time;
item.total = item.self;
item.signature = "categ::" + name + "::" + item.name;
- item.name = item.name.capitalize();
+ item.name = EditorPropertyNameProcessor::get_singleton()->process_name(item.name, EditorPropertyNameProcessor::STYLE_CAPITALIZED);
c.total_time += item.total;
c.items.write[j] = item;
}
@@ -1763,7 +1764,7 @@ ScriptEditorDebugger::ScriptEditorDebugger() {
inspector = memnew(EditorDebuggerInspector);
inspector->set_h_size_flags(SIZE_EXPAND_FILL);
inspector->set_v_size_flags(SIZE_EXPAND_FILL);
- inspector->set_enable_capitalize_paths(false);
+ inspector->set_property_name_style(EditorPropertyNameProcessor::STYLE_RAW);
inspector->set_read_only(true);
inspector->connect("object_selected", callable_mp(this, &ScriptEditorDebugger::_remote_object_selected));
inspector->connect("object_edited", callable_mp(this, &ScriptEditorDebugger::_remote_object_edited));
diff --git a/editor/editor_about.cpp b/editor/editor_about.cpp
index 9b6e2698b6..5beda7d907 100644
--- a/editor/editor_about.cpp
+++ b/editor/editor_about.cpp
@@ -43,10 +43,10 @@ void EditorAbout::_theme_changed() {
const int font_size = get_theme_font_size(SNAME("source_size"), SNAME("EditorFonts"));
_tpl_text->add_theme_font_override("normal_font", font);
_tpl_text->add_theme_font_size_override("normal_font_size", font_size);
- _tpl_text->add_theme_constant_override("line_separation", 6 * EDSCALE);
+ _tpl_text->add_theme_constant_override("line_separation", 4 * EDSCALE);
_license_text->add_theme_font_override("normal_font", font);
_license_text->add_theme_font_size_override("normal_font_size", font_size);
- _license_text->add_theme_constant_override("line_separation", 6 * EDSCALE);
+ _license_text->add_theme_constant_override("line_separation", 4 * EDSCALE);
_logo->set_texture(get_theme_icon(SNAME("Logo"), SNAME("EditorIcons")));
}
diff --git a/editor/editor_builders.py b/editor/editor_builders.py
index 67d4b8534f..e73fbc6107 100644
--- a/editor/editor_builders.py
+++ b/editor/editor_builders.py
@@ -5,6 +5,10 @@ All such functions are invoked in a subprocess on Windows to prevent build flaki
"""
import os
import os.path
+import shutil
+import subprocess
+import tempfile
+import uuid
from platform_methods import subprocess_main
@@ -89,10 +93,40 @@ def make_translations_header(target, source, env, category):
sorted_paths = sorted(source, key=lambda path: os.path.splitext(os.path.basename(path))[0])
+ msgfmt_available = shutil.which("msgfmt") is not None
+
+ if not msgfmt_available:
+ print("WARNING: msgfmt is not found, using .po files instead of .mo")
+
xl_names = []
for i in range(len(sorted_paths)):
- with open(sorted_paths[i], "rb") as f:
- buf = f.read()
+ if msgfmt_available:
+ mo_path = os.path.join(tempfile.gettempdir(), uuid.uuid4().hex + ".mo")
+ cmd = "msgfmt " + sorted_paths[i] + " --no-hash -o " + mo_path
+ try:
+ subprocess.Popen(cmd, shell=True, stderr=subprocess.PIPE).communicate()
+ with open(mo_path, "rb") as f:
+ buf = f.read()
+ except OSError as e:
+ print(
+ "WARNING: msgfmt execution failed, using .po file instead of .mo: path=%r; [%s] %s"
+ % (sorted_paths[i], e.__class__.__name__, e)
+ )
+ with open(sorted_paths[i], "rb") as f:
+ buf = f.read()
+ finally:
+ try:
+ os.remove(mo_path)
+ except OSError as e:
+ # Do not fail the entire build if it cannot delete a temporary file
+ print(
+ "WARNING: Could not delete temporary .mo file: path=%r; [%s] %s"
+ % (mo_path, e.__class__.__name__, e)
+ )
+ else:
+ with open(sorted_paths[i], "rb") as f:
+ buf = f.read()
+
decomp_size = len(buf)
# Use maximum zlib compression level to further reduce file size
# (at the cost of initial build times).
diff --git a/editor/editor_data.cpp b/editor/editor_data.cpp
index c16451f3c6..a5e76ba0c0 100644
--- a/editor/editor_data.cpp
+++ b/editor/editor_data.cpp
@@ -38,12 +38,13 @@
#include "editor/plugins/script_editor_plugin.h"
#include "scene/resources/packed_scene.h"
-void EditorHistory::cleanup_history() {
+void EditorSelectionHistory::cleanup_history() {
for (int i = 0; i < history.size(); i++) {
bool fail = false;
for (int j = 0; j < history[i].path.size(); j++) {
if (!history[i].path[j].ref.is_null()) {
+ // Reference is not null - object still alive.
continue;
}
@@ -51,21 +52,16 @@ void EditorHistory::cleanup_history() {
if (obj) {
Node *n = Object::cast_to<Node>(obj);
if (n && n->is_inside_tree()) {
+ // Node valid and inside tree - object still alive.
continue;
}
- if (!n) { // Possibly still alive
+ if (!n) {
+ // Node possibly still alive.
continue;
}
- }
-
- if (j <= history[i].level) {
- //before or equal level, complete fail
- fail = true;
- } else {
- //after level, clip
- history.write[i].path.resize(j);
- }
+ } // Else: object not valid - not alive.
+ fail = true;
break;
}
@@ -75,16 +71,16 @@ void EditorHistory::cleanup_history() {
}
}
- if (current >= history.size()) {
- current = history.size() - 1;
+ if (current_elem_idx >= history.size()) {
+ current_elem_idx = history.size() - 1;
}
}
-void EditorHistory::_add_object(ObjectID p_object, const String &p_property, int p_level_change, bool p_inspector_only) {
+void EditorSelectionHistory::add_object(ObjectID p_object, const String &p_property, bool p_inspector_only) {
Object *obj = ObjectDB::get_instance(p_object);
ERR_FAIL_COND(!obj);
RefCounted *r = Object::cast_to<RefCounted>(obj);
- Obj o;
+ _Object o;
if (r) {
o.ref = REF(r);
}
@@ -92,86 +88,64 @@ void EditorHistory::_add_object(ObjectID p_object, const String &p_property, int
o.property = p_property;
o.inspector_only = p_inspector_only;
- History h;
-
- bool has_prev = current >= 0 && current < history.size();
+ bool has_prev = current_elem_idx >= 0 && current_elem_idx < history.size();
if (has_prev) {
- history.resize(current + 1); //clip history to next
+ history.resize(current_elem_idx + 1); // Clip history to next.
}
+ HistoryElement h;
if (!p_property.is_empty() && has_prev) {
- //add a sub property
- History &pr = history.write[current];
- h = pr;
+ // Add a sub property.
+ HistoryElement &prev_element = history.write[current_elem_idx];
+ h = prev_element;
h.path.resize(h.level + 1);
h.path.push_back(o);
h.level++;
- } else if (p_level_change != -1 && has_prev) {
- //add a sub property
- History &pr = history.write[current];
- h = pr;
- ERR_FAIL_INDEX(p_level_change, h.path.size());
- h.level = p_level_change;
+
} else {
- //add a new node
+ // Create a new history item.
h.path.push_back(o);
h.level = 0;
}
history.push_back(h);
- current++;
-}
-
-void EditorHistory::add_object_inspector_only(ObjectID p_object) {
- _add_object(p_object, "", -1, true);
-}
-
-void EditorHistory::add_object(ObjectID p_object) {
- _add_object(p_object, "", -1);
+ current_elem_idx++;
}
-void EditorHistory::add_object(ObjectID p_object, const String &p_subprop) {
- _add_object(p_object, p_subprop, -1);
-}
-
-void EditorHistory::add_object(ObjectID p_object, int p_relevel) {
- _add_object(p_object, "", p_relevel);
-}
-
-int EditorHistory::get_history_len() {
+int EditorSelectionHistory::get_history_len() {
return history.size();
}
-int EditorHistory::get_history_pos() {
- return current;
+int EditorSelectionHistory::get_history_pos() {
+ return current_elem_idx;
}
-bool EditorHistory::is_history_obj_inspector_only(int p_obj) const {
+bool EditorSelectionHistory::is_history_obj_inspector_only(int p_obj) const {
ERR_FAIL_INDEX_V(p_obj, history.size(), false);
ERR_FAIL_INDEX_V(history[p_obj].level, history[p_obj].path.size(), false);
return history[p_obj].path[history[p_obj].level].inspector_only;
}
-ObjectID EditorHistory::get_history_obj(int p_obj) const {
+ObjectID EditorSelectionHistory::get_history_obj(int p_obj) const {
ERR_FAIL_INDEX_V(p_obj, history.size(), ObjectID());
ERR_FAIL_INDEX_V(history[p_obj].level, history[p_obj].path.size(), ObjectID());
return history[p_obj].path[history[p_obj].level].object;
}
-bool EditorHistory::is_at_beginning() const {
- return current <= 0;
+bool EditorSelectionHistory::is_at_beginning() const {
+ return current_elem_idx <= 0;
}
-bool EditorHistory::is_at_end() const {
- return ((current + 1) >= history.size());
+bool EditorSelectionHistory::is_at_end() const {
+ return ((current_elem_idx + 1) >= history.size());
}
-bool EditorHistory::next() {
+bool EditorSelectionHistory::next() {
cleanup_history();
- if ((current + 1) < history.size()) {
- current++;
+ if ((current_elem_idx + 1) < history.size()) {
+ current_elem_idx++;
} else {
return false;
}
@@ -179,11 +153,11 @@ bool EditorHistory::next() {
return true;
}
-bool EditorHistory::previous() {
+bool EditorSelectionHistory::previous() {
cleanup_history();
- if (current > 0) {
- current--;
+ if (current_elem_idx > 0) {
+ current_elem_idx--;
} else {
return false;
}
@@ -191,76 +165,63 @@ bool EditorHistory::previous() {
return true;
}
-bool EditorHistory::is_current_inspector_only() const {
- if (current < 0 || current >= history.size()) {
+bool EditorSelectionHistory::is_current_inspector_only() const {
+ if (current_elem_idx < 0 || current_elem_idx >= history.size()) {
return false;
}
- const History &h = history[current];
+ const HistoryElement &h = history[current_elem_idx];
return h.path[h.level].inspector_only;
}
-ObjectID EditorHistory::get_current() {
- if (current < 0 || current >= history.size()) {
+ObjectID EditorSelectionHistory::get_current() {
+ if (current_elem_idx < 0 || current_elem_idx >= history.size()) {
return ObjectID();
}
- History &h = history.write[current];
- Object *obj = ObjectDB::get_instance(h.path[h.level].object);
- if (!obj) {
- return ObjectID();
- }
-
- return obj->get_instance_id();
+ Object *obj = ObjectDB::get_instance(get_history_obj(current_elem_idx));
+ return obj ? obj->get_instance_id() : ObjectID();
}
-int EditorHistory::get_path_size() const {
- if (current < 0 || current >= history.size()) {
+int EditorSelectionHistory::get_path_size() const {
+ if (current_elem_idx < 0 || current_elem_idx >= history.size()) {
return 0;
}
- const History &h = history[current];
- return h.path.size();
+ return history[current_elem_idx].path.size();
}
-ObjectID EditorHistory::get_path_object(int p_index) const {
- if (current < 0 || current >= history.size()) {
+ObjectID EditorSelectionHistory::get_path_object(int p_index) const {
+ if (current_elem_idx < 0 || current_elem_idx >= history.size()) {
return ObjectID();
}
- const History &h = history[current];
-
- ERR_FAIL_INDEX_V(p_index, h.path.size(), ObjectID());
+ ERR_FAIL_INDEX_V(p_index, history[current_elem_idx].path.size(), ObjectID());
- Object *obj = ObjectDB::get_instance(h.path[p_index].object);
- if (!obj) {
- return ObjectID();
- }
-
- return obj->get_instance_id();
+ Object *obj = ObjectDB::get_instance(history[current_elem_idx].path[p_index].object);
+ return obj ? obj->get_instance_id() : ObjectID();
}
-String EditorHistory::get_path_property(int p_index) const {
- if (current < 0 || current >= history.size()) {
+String EditorSelectionHistory::get_path_property(int p_index) const {
+ if (current_elem_idx < 0 || current_elem_idx >= history.size()) {
return "";
}
- const History &h = history[current];
-
- ERR_FAIL_INDEX_V(p_index, h.path.size(), "");
-
- return h.path[p_index].property;
+ ERR_FAIL_INDEX_V(p_index, history[current_elem_idx].path.size(), "");
+ return history[current_elem_idx].path[p_index].property;
}
-void EditorHistory::clear() {
+void EditorSelectionHistory::clear() {
history.clear();
- current = -1;
+ current_elem_idx = -1;
}
-EditorHistory::EditorHistory() {
- current = -1;
+EditorSelectionHistory::EditorSelectionHistory() {
+ current_elem_idx = -1;
}
+////////////////////////////////////////////////////////////
+
EditorPlugin *EditorData::get_editor(Object *p_object) {
// We need to iterate backwards so that we can check user-created plugins first.
// Otherwise, it would not be possible for plugins to handle CanvasItem and Spatial nodes.
@@ -636,14 +597,14 @@ bool EditorData::check_and_update_scene(int p_idx) {
EditorProgress ep("update_scene", TTR("Updating Scene"), 2);
ep.step(TTR("Storing local changes..."), 0);
- //pack first, so it stores diffs to previous version of saved scene
+ // Pack first, so it stores diffs to previous version of saved scene.
Error err = pscene->pack(edited_scene[p_idx].root);
ERR_FAIL_COND_V(err != OK, false);
ep.step(TTR("Updating scene..."), 1);
Node *new_scene = pscene->instantiate(PackedScene::GEN_EDIT_STATE_MAIN);
ERR_FAIL_COND_V(!new_scene, false);
- //transfer selection
+ // Transfer selection.
List<Node *> new_selection;
for (const Node *E : edited_scene.write[p_idx].selection) {
NodePath p = edited_scene[p_idx].root->get_path_to(E);
@@ -675,7 +636,6 @@ int EditorData::get_edited_scene() const {
void EditorData::set_edited_scene(int p_idx) {
ERR_FAIL_INDEX(p_idx, edited_scene.size());
current_edited_scene = p_idx;
- //swap
}
Node *EditorData::get_edited_scene_root(int p_idx) {
@@ -850,23 +810,23 @@ NodePath EditorData::get_edited_scene_live_edit_root() {
return edited_scene[current_edited_scene].live_edit_root;
}
-void EditorData::save_edited_scene_state(EditorSelection *p_selection, EditorHistory *p_history, const Dictionary &p_custom) {
+void EditorData::save_edited_scene_state(EditorSelection *p_selection, EditorSelectionHistory *p_history, const Dictionary &p_custom) {
ERR_FAIL_INDEX(current_edited_scene, edited_scene.size());
EditedScene &es = edited_scene.write[current_edited_scene];
es.selection = p_selection->get_full_selected_node_list();
- es.history_current = p_history->current;
+ es.history_current = p_history->current_elem_idx;
es.history_stored = p_history->history;
es.editor_states = get_editor_states();
es.custom_state = p_custom;
}
-Dictionary EditorData::restore_edited_scene_state(EditorSelection *p_selection, EditorHistory *p_history) {
+Dictionary EditorData::restore_edited_scene_state(EditorSelection *p_selection, EditorSelectionHistory *p_history) {
ERR_FAIL_INDEX_V(current_edited_scene, edited_scene.size(), Dictionary());
EditedScene &es = edited_scene.write[current_edited_scene];
- p_history->current = es.history_current;
+ p_history->current_elem_idx = es.history_current;
p_history->history = es.history_stored;
p_selection->clear();
@@ -1033,12 +993,11 @@ void EditorData::script_class_load_icon_paths() {
EditorData::EditorData() {
current_edited_scene = -1;
-
- //load_imported_scenes_from_globals();
script_class_load_icon_paths();
}
-///////////
+///////////////////////////////////////////////////////////////////////////////
+
void EditorSelection::_node_removed(Node *p_node) {
if (!selection.has(p_node)) {
return;
@@ -1050,7 +1009,7 @@ void EditorSelection::_node_removed(Node *p_node) {
}
selection.erase(p_node);
changed = true;
- nl_changed = true;
+ node_list_changed = true;
}
void EditorSelection::add_node(Node *p_node) {
@@ -1061,7 +1020,7 @@ void EditorSelection::add_node(Node *p_node) {
}
changed = true;
- nl_changed = true;
+ node_list_changed = true;
Object *meta = nullptr;
for (Object *E : editor_plugins) {
meta = E->call("_get_editor_data", p_node);
@@ -1072,52 +1031,29 @@ void EditorSelection::add_node(Node *p_node) {
selection[p_node] = meta;
p_node->connect("tree_exiting", callable_mp(this, &EditorSelection::_node_removed), varray(p_node), CONNECT_ONESHOT);
-
- //emit_signal(SNAME("selection_changed"));
}
void EditorSelection::remove_node(Node *p_node) {
ERR_FAIL_NULL(p_node);
-
if (!selection.has(p_node)) {
return;
}
changed = true;
- nl_changed = true;
+ node_list_changed = true;
Object *meta = selection[p_node];
if (meta) {
memdelete(meta);
}
selection.erase(p_node);
+
p_node->disconnect("tree_exiting", callable_mp(this, &EditorSelection::_node_removed));
- //emit_signal(SNAME("selection_changed"));
}
bool EditorSelection::is_selected(Node *p_node) const {
return selection.has(p_node);
}
-Array EditorSelection::_get_transformable_selected_nodes() {
- Array ret;
-
- for (const Node *E : selected_node_list) {
- ret.push_back(E);
- }
-
- return ret;
-}
-
-TypedArray<Node> EditorSelection::get_selected_nodes() {
- TypedArray<Node> ret;
-
- for (const KeyValue<Node *, Object *> &E : selection) {
- ret.push_back(E.key);
- }
-
- return ret;
-}
-
void EditorSelection::_bind_methods() {
ClassDB::bind_method(D_METHOD("clear"), &EditorSelection::clear);
ClassDB::bind_method(D_METHOD("add_node", "node"), &EditorSelection::add_node);
@@ -1132,13 +1068,16 @@ void EditorSelection::add_editor_plugin(Object *p_object) {
editor_plugins.push_back(p_object);
}
-void EditorSelection::_update_nl() {
- if (!nl_changed) {
+void EditorSelection::_update_node_list() {
+ if (!node_list_changed) {
return;
}
selected_node_list.clear();
+ // If the selection does not have the parent of the selected node, then add the node to the node list.
+ // However, if the parent is already selected, then adding this node is redundant as
+ // it is included with the parent, so skip it.
for (const KeyValue<Node *, Object *> &E : selection) {
Node *parent = E.key;
parent = parent->get_parent();
@@ -1157,11 +1096,11 @@ void EditorSelection::_update_nl() {
selected_node_list.push_back(E.key);
}
- nl_changed = true;
+ node_list_changed = true;
}
void EditorSelection::update() {
- _update_nl();
+ _update_node_list();
if (!changed) {
return;
@@ -1178,11 +1117,31 @@ void EditorSelection::_emit_change() {
emitted = false;
}
+Array EditorSelection::_get_transformable_selected_nodes() {
+ Array ret;
+
+ for (const Node *E : selected_node_list) {
+ ret.push_back(E);
+ }
+
+ return ret;
+}
+
+TypedArray<Node> EditorSelection::get_selected_nodes() {
+ TypedArray<Node> ret;
+
+ for (const KeyValue<Node *, Object *> &E : selection) {
+ ret.push_back(E.key);
+ }
+
+ return ret;
+}
+
List<Node *> &EditorSelection::get_selected_node_list() {
if (changed) {
update();
} else {
- _update_nl();
+ _update_node_list();
}
return selected_node_list;
}
@@ -1202,7 +1161,7 @@ void EditorSelection::clear() {
}
changed = true;
- nl_changed = true;
+ node_list_changed = true;
}
EditorSelection::EditorSelection() {
diff --git a/editor/editor_data.h b/editor/editor_data.h
index 79f8227e5c..0a9f40b714 100644
--- a/editor/editor_data.h
+++ b/editor/editor_data.h
@@ -38,33 +38,32 @@
class ConfigFile;
class EditorPlugin;
-class EditorHistory {
- enum {
- HISTORY_MAX = 64
- };
-
- struct Obj {
+/**
+ * Stores the history of objects which have been selected for editing in the Editor & the Inspector.
+ *
+ * Used in the editor to set & access the currently edited object, as well as the history of objects which have been edited.
+ */
+class EditorSelectionHistory {
+ // Stores the object & property (if relevant).
+ struct _Object {
REF ref;
ObjectID object;
String property;
bool inspector_only = false;
};
- struct History {
- Vector<Obj> path;
+ // Represents the selection of an object for editing.
+ struct HistoryElement {
+ // The sub-resources of the parent object (first in the path) that have been edited.
+ // For example, Node2D -> nested resource -> nested resource, if edited each individually in their own inspector.
+ Vector<_Object> path;
+ // The current point in the path. This is always equal to the last item in the path - it is never decremented.
int level = 0;
};
friend class EditorData;
- Vector<History> history;
- int current;
-
- struct PropertyData {
- String name;
- Variant value;
- };
-
- void _add_object(ObjectID p_object, const String &p_property, int p_level_change, bool p_inspector_only = false);
+ Vector<HistoryElement> history;
+ int current_elem_idx; // The current history element being edited.
public:
void cleanup_history();
@@ -72,13 +71,14 @@ public:
bool is_at_beginning() const;
bool is_at_end() const;
- void add_object_inspector_only(ObjectID p_object);
- void add_object(ObjectID p_object);
- void add_object(ObjectID p_object, const String &p_subprop);
- void add_object(ObjectID p_object, int p_relevel);
+ // Adds an object to the selection history. A property name can be passed if the target is a subresource of the given object.
+ // If the object should not change the main screen plugin, it can be set as inspector only.
+ void add_object(ObjectID p_object, const String &p_property = String(), bool p_inspector_only = false);
int get_history_len();
int get_history_pos();
+
+ // Gets an object from the history. The most recent object would be the object with p_obj = get_history_len() - 1.
ObjectID get_history_obj(int p_obj) const;
bool is_history_obj_inspector_only(int p_obj) const;
@@ -87,13 +87,16 @@ public:
ObjectID get_current();
bool is_current_inspector_only() const;
+ // Gets the size of the path of the current history item.
int get_path_size() const;
+ // Gets the object of the current history item, if valid.
ObjectID get_path_object(int p_index) const;
+ // Gets the property of the current history item.
String get_path_property(int p_index) const;
void clear();
- EditorHistory();
+ EditorSelectionHistory();
};
class EditorSelection;
@@ -112,7 +115,7 @@ public:
uint64_t file_modified_time = 0;
Dictionary editor_states;
List<Node *> selection;
- Vector<EditorHistory::History> history_stored;
+ Vector<EditorSelectionHistory::HistoryElement> history_stored;
int history_current = 0;
Dictionary custom_state;
uint64_t version = 0;
@@ -210,8 +213,8 @@ public:
void set_plugin_window_layout(Ref<ConfigFile> p_layout);
void get_plugin_window_layout(Ref<ConfigFile> p_layout);
- void save_edited_scene_state(EditorSelection *p_selection, EditorHistory *p_history, const Dictionary &p_custom);
- Dictionary restore_edited_scene_state(EditorSelection *p_selection, EditorHistory *p_history);
+ void save_edited_scene_state(EditorSelection *p_selection, EditorSelectionHistory *p_history, const Dictionary &p_custom);
+ Dictionary restore_edited_scene_state(EditorSelection *p_selection, EditorSelectionHistory *p_history);
void notify_edited_scene_changed();
void notify_resource_saved(const Ref<Resource> &p_resource);
@@ -233,22 +236,33 @@ public:
EditorData();
};
+/**
+ * Stores and provides access to the nodes currently selected in the editor.
+ *
+ * This provides a central location for storing "selected" nodes, as a selection can be triggered from multiple places,
+ * such as the SceneTreeDock or a main screen editor plugin (e.g. CanvasItemEditor).
+ */
class EditorSelection : public Object {
GDCLASS(EditorSelection, Object);
-private:
+ // Contains the selected nodes and corresponding metadata.
+ // Metadata objects come from calling _get_editor_data on the editor_plugins, passing the selected node.
Map<Node *, Object *> selection;
+ // Tracks whether the selection change signal has been emitted.
+ // Prevents multiple signals being called in one frame.
bool emitted = false;
+
bool changed = false;
- bool nl_changed = false;
+ bool node_list_changed = false;
void _node_removed(Node *p_node);
+ // Editor plugins which are related to selection.
List<Object *> editor_plugins;
List<Node *> selected_node_list;
- void _update_nl();
+ void _update_node_list();
Array _get_transformable_selected_nodes();
void _emit_change();
@@ -256,10 +270,9 @@ protected:
static void _bind_methods();
public:
- TypedArray<Node> get_selected_nodes();
void add_node(Node *p_node);
void remove_node(Node *p_node);
- bool is_selected(Node *) const;
+ bool is_selected(Node *p_node) const;
template <class T>
T *get_node_editor_data(Node *p_node) {
@@ -269,13 +282,20 @@ public:
return Object::cast_to<T>(selection[p_node]);
}
+ // Adds an editor plugin which can provide metadata for selected nodes.
void add_editor_plugin(Object *p_object);
void update();
void clear();
+ // Returns all the selected nodes.
+ TypedArray<Node> get_selected_nodes();
+ // Returns only the top level selected nodes.
+ // That is, if the selection includes some node and a child of that node, only the parent is returned.
List<Node *> &get_selected_node_list();
+ // Returns all the selected nodes (list version of "get_selected_nodes").
List<Node *> get_full_selected_node_list();
+ // Returns the map of selected objects and their metadata.
Map<Node *, Object *> &get_selection() { return selection; }
EditorSelection();
diff --git a/editor/editor_dir_dialog.cpp b/editor/editor_dir_dialog.cpp
index 32ef87a4ab..866f28c03b 100644
--- a/editor/editor_dir_dialog.cpp
+++ b/editor/editor_dir_dialog.cpp
@@ -156,10 +156,15 @@ void EditorDirDialog::_make_dir_confirm() {
String dir = ti->get_metadata(0);
+ if (EditorFileSystem::get_singleton()->get_filesystem_path(dir + makedirname->get_text())) {
+ mkdirerr->set_text(TTR("Could not create folder. File with that name already exists."));
+ mkdirerr->popup_centered();
+ return;
+ }
+
DirAccessRef d = DirAccess::open(dir);
ERR_FAIL_COND_MSG(!d, "Cannot open directory '" + dir + "'.");
Error err = d->make_dir(makedirname->get_text());
-
if (err != OK) {
mkdirerr->popup_centered(Size2(250, 80) * EDSCALE);
} else {
diff --git a/editor/editor_export.cpp b/editor/editor_export.cpp
index 3c2c7232f8..a1081fcbfb 100644
--- a/editor/editor_export.cpp
+++ b/editor/editor_export.cpp
@@ -1760,8 +1760,9 @@ void EditorExportPlatformPC::get_preset_features(const Ref<EditorExportPreset> &
}
void EditorExportPlatformPC::get_export_options(List<ExportOption> *r_options) {
- r_options->push_back(ExportOption(PropertyInfo(Variant::STRING, "custom_template/debug", PROPERTY_HINT_GLOBAL_FILE), ""));
- r_options->push_back(ExportOption(PropertyInfo(Variant::STRING, "custom_template/release", PROPERTY_HINT_GLOBAL_FILE), ""));
+ String ext_filter = (get_os_name() == "Windows") ? "*.exe" : "";
+ r_options->push_back(ExportOption(PropertyInfo(Variant::STRING, "custom_template/debug", PROPERTY_HINT_GLOBAL_FILE, ext_filter), ""));
+ r_options->push_back(ExportOption(PropertyInfo(Variant::STRING, "custom_template/release", PROPERTY_HINT_GLOBAL_FILE, ext_filter), ""));
r_options->push_back(ExportOption(PropertyInfo(Variant::INT, "debug/export_console_script", PROPERTY_HINT_ENUM, "No,Debug Only,Debug and Release"), 1));
@@ -1794,8 +1795,8 @@ bool EditorExportPlatformPC::can_export(const Ref<EditorExportPreset> &p_preset,
// Look for export templates (first official, and if defined custom templates).
bool use64 = p_preset->get("binary_format/64_bits");
- bool dvalid = exists_export_template(use64 ? debug_file_64 : debug_file_32, &err);
- bool rvalid = exists_export_template(use64 ? release_file_64 : release_file_32, &err);
+ bool dvalid = exists_export_template(get_template_file_name("debug", use64 ? "64" : "32"), &err);
+ bool rvalid = exists_export_template(get_template_file_name("release", use64 ? "64" : "32"), &err);
if (p_preset->get("custom_template/debug") != "") {
dvalid = FileAccess::exists(p_preset->get("custom_template/debug"));
@@ -1819,23 +1820,6 @@ bool EditorExportPlatformPC::can_export(const Ref<EditorExportPreset> &p_preset,
return valid;
}
-List<String> EditorExportPlatformPC::get_binary_extensions(const Ref<EditorExportPreset> &p_preset) const {
- List<String> list;
- for (const KeyValue<String, String> &E : extensions) {
- if (p_preset->get(E.key)) {
- list.push_back(extensions[E.key]);
- return list;
- }
- }
-
- if (extensions.has("default")) {
- list.push_back(extensions["default"]);
- return list;
- }
-
- return list;
-}
-
Error EditorExportPlatformPC::export_project(const Ref<EditorExportPreset> &p_preset, bool p_debug, const String &p_path, int p_flags) {
ExportNotifier notifier(*this, p_preset, p_debug, p_path, p_flags);
@@ -1847,19 +1831,7 @@ Error EditorExportPlatformPC::export_project(const Ref<EditorExportPreset> &p_pr
template_path = template_path.strip_edges();
if (template_path.is_empty()) {
- if (p_preset->get("binary_format/64_bits")) {
- if (p_debug) {
- template_path = find_export_template(debug_file_64);
- } else {
- template_path = find_export_template(release_file_64);
- }
- } else {
- if (p_debug) {
- template_path = find_export_template(debug_file_32);
- } else {
- template_path = find_export_template(release_file_32);
- }
- }
+ template_path = find_export_template(get_template_file_name(p_debug ? "debug" : "release", p_preset->get("binary_format/64_bits") ? "64" : "32"));
}
if (!template_path.is_empty() && !FileAccess::exists(template_path)) {
@@ -1890,15 +1862,11 @@ Error EditorExportPlatformPC::export_project(const Ref<EditorExportPreset> &p_pr
return ERR_INVALID_PARAMETER;
}
- FixUpEmbeddedPckFunc fixup_func = get_fixup_embedded_pck_func();
- if (fixup_func) {
- err = fixup_func(p_path, embedded_pos, embedded_size);
- }
+ err = fixup_embedded_pck(p_path, embedded_pos, embedded_size);
}
if (err == OK && !so_files.is_empty()) {
// If shared object files, copy them.
- da = DirAccess::create(DirAccess::ACCESS_FILESYSTEM);
for (int i = 0; i < so_files.size() && err == OK; i++) {
String src_path = ProjectSettings::get_singleton()->globalize_path(so_files[i].path);
String target_path;
@@ -1930,10 +1898,6 @@ Error EditorExportPlatformPC::sign_shared_object(const Ref<EditorExportPreset> &
return OK;
}
-void EditorExportPlatformPC::set_extension(const String &p_extension, const String &p_feature_key) {
- extensions[p_feature_key] = p_extension;
-}
-
void EditorExportPlatformPC::set_name(const String &p_name) {
name = p_name;
}
@@ -1946,22 +1910,6 @@ void EditorExportPlatformPC::set_logo(const Ref<Texture2D> &p_logo) {
logo = p_logo;
}
-void EditorExportPlatformPC::set_release_64(const String &p_file) {
- release_file_64 = p_file;
-}
-
-void EditorExportPlatformPC::set_release_32(const String &p_file) {
- release_file_32 = p_file;
-}
-
-void EditorExportPlatformPC::set_debug_64(const String &p_file) {
- debug_file_64 = p_file;
-}
-
-void EditorExportPlatformPC::set_debug_32(const String &p_file) {
- debug_file_32 = p_file;
-}
-
void EditorExportPlatformPC::get_platform_features(List<String> *r_features) {
r_features->push_back("pc"); //all pcs support "pc"
r_features->push_back("s3tc"); //all pcs support "s3tc" compression
@@ -1984,19 +1932,6 @@ void EditorExportPlatformPC::set_chmod_flags(int p_flags) {
chmod_flags = p_flags;
}
-EditorExportPlatformPC::FixUpEmbeddedPckFunc EditorExportPlatformPC::get_fixup_embedded_pck_func() const {
- return fixup_embedded_pck_func;
-}
-
-void EditorExportPlatformPC::set_fixup_embedded_pck_func(FixUpEmbeddedPckFunc p_fixup_embedded_pck_func) {
- fixup_embedded_pck_func = p_fixup_embedded_pck_func;
-}
-
-EditorExportPlatformPC::EditorExportPlatformPC() {
- chmod_flags = -1;
- fixup_embedded_pck_func = nullptr;
-}
-
///////////////////////
void EditorExportTextSceneToBinaryPlugin::_export_file(const String &p_path, const String &p_type, const Set<String> &p_features) {
diff --git a/editor/editor_export.h b/editor/editor_export.h
index d9039f601e..7c61e7cff6 100644
--- a/editor/editor_export.h
+++ b/editor/editor_export.h
@@ -421,23 +421,12 @@ public:
class EditorExportPlatformPC : public EditorExportPlatform {
GDCLASS(EditorExportPlatformPC, EditorExportPlatform);
-public:
- typedef Error (*FixUpEmbeddedPckFunc)(const String &p_path, int64_t p_embedded_start, int64_t p_embedded_size);
-
private:
Ref<ImageTexture> logo;
String name;
String os_name;
- Map<String, String> extensions;
-
- String release_file_32;
- String release_file_64;
- String debug_file_32;
- String debug_file_64;
-
- int chmod_flags;
- FixUpEmbeddedPckFunc fixup_embedded_pck_func;
+ int chmod_flags = -1;
public:
virtual void get_preset_features(const Ref<EditorExportPreset> &p_preset, List<String> *r_features) override;
@@ -449,21 +438,15 @@ public:
virtual Ref<Texture2D> get_logo() const override;
virtual bool can_export(const Ref<EditorExportPreset> &p_preset, String &r_error, bool &r_missing_templates) const override;
- virtual List<String> get_binary_extensions(const Ref<EditorExportPreset> &p_preset) const override;
virtual Error export_project(const Ref<EditorExportPreset> &p_preset, bool p_debug, const String &p_path, int p_flags = 0) override;
virtual Error sign_shared_object(const Ref<EditorExportPreset> &p_preset, bool p_debug, const String &p_path);
+ virtual String get_template_file_name(const String &p_target, const String &p_arch) const = 0;
- void set_extension(const String &p_extension, const String &p_feature_key = "default");
void set_name(const String &p_name);
void set_os_name(const String &p_name);
void set_logo(const Ref<Texture2D> &p_logo);
- void set_release_64(const String &p_file);
- void set_release_32(const String &p_file);
- void set_debug_64(const String &p_file);
- void set_debug_32(const String &p_file);
-
void add_platform_feature(const String &p_feature);
virtual void get_platform_features(List<String> *r_features) override;
virtual void resolve_platform_feature_priorities(const Ref<EditorExportPreset> &p_preset, Set<String> &p_features) override;
@@ -471,10 +454,9 @@ public:
int get_chmod_flags() const;
void set_chmod_flags(int p_flags);
- FixUpEmbeddedPckFunc get_fixup_embedded_pck_func() const;
- void set_fixup_embedded_pck_func(FixUpEmbeddedPckFunc p_fixup_embedded_pck_func);
-
- EditorExportPlatformPC();
+ virtual Error fixup_embedded_pck(const String &p_path, int64_t p_embedded_start, int64_t p_embedded_size) const {
+ return Error::OK;
+ }
};
class EditorExportTextSceneToBinaryPlugin : public EditorExportPlugin {
diff --git a/editor/editor_feature_profile.cpp b/editor/editor_feature_profile.cpp
index 3d5ca7de42..cf45848ed3 100644
--- a/editor/editor_feature_profile.cpp
+++ b/editor/editor_feature_profile.cpp
@@ -608,18 +608,24 @@ void EditorFeatureProfileManager::_class_list_item_selected() {
TreeItem *properties = property_list->create_item(root);
properties->set_text(0, TTR("Class Properties:"));
+ const EditorPropertyNameProcessor::Style text_style = EditorPropertyNameProcessor::get_settings_style();
+ const EditorPropertyNameProcessor::Style tooltip_style = EditorPropertyNameProcessor::get_tooltip_style(text_style);
+
for (const PropertyInfo &E : props) {
String name = E.name;
if (!(E.usage & PROPERTY_USAGE_EDITOR)) {
continue;
}
+ const String text = EditorPropertyNameProcessor::get_singleton()->process_name(name, text_style);
+ const String tooltip = EditorPropertyNameProcessor::get_singleton()->process_name(name, tooltip_style);
+
TreeItem *property = property_list->create_item(properties);
property->set_cell_mode(0, TreeItem::CELL_MODE_CHECK);
property->set_editable(0, true);
property->set_selectable(0, true);
property->set_checked(0, !edited->is_class_property_disabled(class_name, name));
- property->set_text(0, EditorPropertyNameProcessor::get_singleton()->process_name(name));
- property->set_tooltip(0, EditorPropertyNameProcessor::get_singleton()->make_tooltip_for_name(name));
+ property->set_text(0, text);
+ property->set_tooltip(0, tooltip);
property->set_metadata(0, name);
String icon_type = Variant::get_type_name(E.type);
property->set_icon(0, EditorNode::get_singleton()->get_class_icon(icon_type));
diff --git a/editor/editor_file_dialog.cpp b/editor/editor_file_dialog.cpp
index 31f2f24066..ab403c4212 100644
--- a/editor/editor_file_dialog.cpp
+++ b/editor/editor_file_dialog.cpp
@@ -781,12 +781,19 @@ void EditorFileDialog::update_file_list() {
continue;
}
- if (show_hidden_files || !dir_access->current_is_hidden()) {
+ if (show_hidden_files) {
if (!dir_access->current_is_dir()) {
files.push_back(item);
} else {
dirs.push_back(item);
}
+ } else if (!dir_access->current_is_hidden()) {
+ String full_path = cdir == "res://" ? item : dir_access->get_current_dir() + "/" + item;
+ if (dir_access->current_is_dir() && !EditorFileSystem::_should_skip_directory(full_path)) {
+ dirs.push_back(item);
+ } else {
+ files.push_back(item);
+ }
}
item = dir_access->get_next();
}
@@ -1092,6 +1099,13 @@ EditorFileDialog::Access EditorFileDialog::get_access() const {
}
void EditorFileDialog::_make_dir_confirm() {
+ if (EditorFileSystem::get_singleton()->get_filesystem_path(makedirname->get_text().strip_edges())) {
+ error_dialog->set_text(TTR("Could not create folder. File with that name already exists."));
+ error_dialog->popup_centered(Size2(250, 50) * EDSCALE);
+ makedirname->set_text(""); // Reset label.
+ return;
+ }
+
Error err = dir_access->make_dir(makedirname->get_text().strip_edges());
if (err == OK) {
dir_access->change_dir(makedirname->get_text().strip_edges());
@@ -1294,6 +1308,18 @@ void EditorFileDialog::_update_favorites() {
favorite->set_pressed(false);
Vector<String> favorited = EditorSettings::get_singleton()->get_favorites();
+
+ bool fav_changed = false;
+ for (int i = favorited.size() - 1; i >= 0; i--) {
+ if (!dir_access->dir_exists(favorited[i])) {
+ favorited.remove_at(i);
+ fav_changed = true;
+ }
+ }
+ if (fav_changed) {
+ EditorSettings::get_singleton()->set_favorites(favorited);
+ }
+
for (int i = 0; i < favorited.size(); i++) {
bool cres = favorited[i].begins_with("res://");
if (cres != res) {
diff --git a/editor/editor_file_system.cpp b/editor/editor_file_system.cpp
index 98ba3ae3d8..2b98a4b02a 100644
--- a/editor/editor_file_system.cpp
+++ b/editor/editor_file_system.cpp
@@ -520,6 +520,45 @@ bool EditorFileSystem::_test_for_reimport(const String &p_path, bool p_only_impo
return false; //nothing changed
}
+bool EditorFileSystem::_scan_import_support(Vector<String> reimports) {
+ if (import_support_queries.size() == 0) {
+ return false;
+ }
+ Map<String, int> import_support_test;
+ Vector<bool> import_support_tested;
+ import_support_tested.resize(import_support_queries.size());
+ for (int i = 0; i < import_support_queries.size(); i++) {
+ import_support_tested.write[i] = false;
+ if (import_support_queries[i]->is_active()) {
+ Vector<String> extensions = import_support_queries[i]->get_file_extensions();
+ for (int j = 0; j < extensions.size(); j++) {
+ import_support_test.insert(extensions[j], i);
+ }
+ }
+ }
+
+ if (import_support_test.size() == 0) {
+ return false; //well nothing to do
+ }
+
+ for (int i = 0; i < reimports.size(); i++) {
+ Map<String, int>::Element *E = import_support_test.find(reimports[i].get_extension());
+ if (E) {
+ import_support_tested.write[E->get()] = true;
+ }
+ }
+
+ for (int i = 0; i < import_support_tested.size(); i++) {
+ if (import_support_tested[i]) {
+ if (import_support_queries.write[i]->query()) {
+ return true;
+ }
+ }
+ }
+
+ return false;
+}
+
bool EditorFileSystem::_update_scan_actions() {
sources_changed.clear();
@@ -612,7 +651,7 @@ bool EditorFileSystem::_update_scan_actions() {
if (_scan_extensions()) {
//needs editor restart
//extensions also may provide filetypes to be imported, so they must run before importing
- if (EditorNode::immediate_confirmation_dialog(TTR("Some extensions need the editor to restart to take effect."), first_scan ? TTR("Restart") : TTR("Save&Restart"), TTR("Continue"))) {
+ if (EditorNode::immediate_confirmation_dialog(TTR("Some extensions need the editor to restart to take effect."), first_scan ? TTR("Restart") : TTR("Save & Restart"), TTR("Continue"))) {
if (!first_scan) {
EditorNode::get_singleton()->save_all_scenes();
}
@@ -621,7 +660,12 @@ bool EditorFileSystem::_update_scan_actions() {
return true;
}
}
+
if (reimports.size()) {
+ if (_scan_import_support(reimports)) {
+ return true;
+ }
+
reimport_files(reimports);
} else {
//reimport files will update the uid cache file so if nothing was reimported, update it manually
@@ -888,7 +932,7 @@ void EditorFileSystem::_scan_new_dir(EditorFileSystemDirectory *p_dir, DirAccess
if (script == nullptr) {
continue;
}
- const Vector<DocData::ClassDoc> &docs = script->get_documentation();
+ Vector<DocData::ClassDoc> docs = script->get_documentation();
for (int j = 0; j < docs.size(); j++) {
EditorHelp::get_doc_data()->add_doc(docs[j]);
}
@@ -2274,6 +2318,7 @@ static void _scan_extensions_dir(EditorFileSystemDirectory *d, Set<String> &exte
bool EditorFileSystem::_scan_extensions() {
EditorFileSystemDirectory *d = get_filesystem();
Set<String> extensions;
+
_scan_extensions_dir(d, extensions);
//verify against loaded extensions
@@ -2374,6 +2419,14 @@ void EditorFileSystem::_update_extensions() {
}
}
+void EditorFileSystem::add_import_format_support_query(Ref<EditorFileSystemImportFormatSupportQuery> p_query) {
+ ERR_FAIL_COND(import_support_queries.find(p_query) != -1);
+ import_support_queries.push_back(p_query);
+}
+void EditorFileSystem::remove_import_format_support_query(Ref<EditorFileSystemImportFormatSupportQuery> p_query) {
+ import_support_queries.erase(p_query);
+}
+
EditorFileSystem::EditorFileSystem() {
ResourceLoader::import = _resource_import;
reimport_on_missing_imported_files = GLOBAL_DEF("editor/import/reimport_missing_imported_files", true);
diff --git a/editor/editor_file_system.h b/editor/editor_file_system.h
index 0ec0094030..0ddac65839 100644
--- a/editor/editor_file_system.h
+++ b/editor/editor_file_system.h
@@ -109,6 +109,37 @@ public:
~EditorFileSystemDirectory();
};
+class EditorFileSystemImportFormatSupportQuery : public RefCounted {
+ GDCLASS(EditorFileSystemImportFormatSupportQuery, RefCounted);
+
+protected:
+ GDVIRTUAL0RC(bool, _is_active)
+ GDVIRTUAL0RC(Vector<String>, _get_file_extensions)
+ GDVIRTUAL0RC(bool, _query)
+ static void _bind_methods() {
+ GDVIRTUAL_BIND(_is_active);
+ GDVIRTUAL_BIND(_get_file_extensions);
+ GDVIRTUAL_BIND(_query);
+ }
+
+public:
+ virtual bool is_active() const {
+ bool ret = false;
+ GDVIRTUAL_REQUIRED_CALL(_is_active, ret);
+ return ret;
+ }
+ virtual Vector<String> get_file_extensions() const {
+ Vector<String> ret;
+ GDVIRTUAL_REQUIRED_CALL(_get_file_extensions, ret);
+ return ret;
+ }
+ virtual bool query() {
+ bool ret = false;
+ GDVIRTUAL_REQUIRED_CALL(_query, ret);
+ return ret;
+ }
+};
+
class EditorFileSystem : public Node {
GDCLASS(EditorFileSystem, Node);
@@ -257,6 +288,9 @@ class EditorFileSystem : public Node {
static ResourceUID::ID _resource_saver_get_resource_id_for_path(const String &p_path, bool p_generate);
bool _scan_extensions();
+ bool _scan_import_support(Vector<String> reimports);
+
+ Vector<Ref<EditorFileSystemImportFormatSupportQuery>> import_support_queries;
protected:
void _notification(int p_what);
@@ -289,6 +323,8 @@ public:
static bool _should_skip_directory(const String &p_path);
+ void add_import_format_support_query(Ref<EditorFileSystemImportFormatSupportQuery> p_query);
+ void remove_import_format_support_query(Ref<EditorFileSystemImportFormatSupportQuery> p_query);
EditorFileSystem();
~EditorFileSystem();
};
diff --git a/editor/editor_fonts.cpp b/editor/editor_fonts.cpp
index 7b72e09bd7..66fe3c4838 100644
--- a/editor/editor_fonts.cpp
+++ b/editor/editor_fonts.cpp
@@ -52,6 +52,23 @@
m_name->add_data(FontJapanese); \
m_name->add_data(FontFallback);
+// Note: In some languages, the use of italic/slanted fonts is controversial. Therefore, we are limiting simulated slant to the main font (Latin, Cyrillic, and Greek) and using bold fonts for the rest.
+
+#define MAKE_FALLBACKS_SLANTED(m_name) \
+ m_name->add_data(FontArabicBold); \
+ m_name->add_data(FontBengaliBold); \
+ m_name->add_data(FontDevanagariBold); \
+ m_name->add_data(FontGeorgianBold); \
+ m_name->add_data(FontHebrewBold); \
+ m_name->add_data(FontMalayalamBold); \
+ m_name->add_data(FontOriyaBold); \
+ m_name->add_data(FontSinhalaBold); \
+ m_name->add_data(FontTamilBold); \
+ m_name->add_data(FontTeluguBold); \
+ m_name->add_data(FontThaiBold); \
+ m_name->add_data(FontJapaneseBold); \
+ m_name->add_data(FontFallbackBold);
+
#define MAKE_FALLBACKS_BOLD(m_name) \
m_name->add_data(FontArabicBold); \
m_name->add_data(FontBengaliBold); \
@@ -93,6 +110,33 @@
m_name->set_spacing(TextServer::SPACING_BOTTOM, -EDSCALE); \
MAKE_FALLBACKS(m_name);
+#define MAKE_SLANTED_FONT(m_name, m_variations) \
+ Ref<Font> m_name; \
+ m_name.instantiate(); \
+ m_name.instantiate(); \
+ if (CustomFontSlanted.is_valid()) { \
+ m_name->add_data(CustomFontSlanted); \
+ m_name->add_data(DefaultFontSlanted); \
+ } else { \
+ m_name->add_data(DefaultFontSlanted); \
+ } \
+ { \
+ Dictionary variations; \
+ if (!m_variations.is_empty()) { \
+ Vector<String> variation_tags = m_variations.split(","); \
+ for (int i = 0; i < variation_tags.size(); i++) { \
+ Vector<String> tokens = variation_tags[i].split("="); \
+ if (tokens.size() == 2) { \
+ variations[tokens[0]] = tokens[1].to_float(); \
+ } \
+ } \
+ } \
+ m_name->set_variation_coordinates(variations); \
+ } \
+ m_name->set_spacing(TextServer::SPACING_TOP, -EDSCALE); \
+ m_name->set_spacing(TextServer::SPACING_BOTTOM, -EDSCALE); \
+ MAKE_FALLBACKS_SLANTED(m_name);
+
#define MAKE_BOLD_FONT(m_name, m_variations) \
Ref<Font> m_name; \
m_name.instantiate(); \
@@ -217,6 +261,12 @@ void editor_register_fonts(Ref<Theme> p_theme) {
EditorSettings::get_singleton()->set_manually("interface/editor/main_font", "");
}
+ Ref<FontData> CustomFontSlanted;
+ if (CustomFont.is_valid()) {
+ CustomFontSlanted = CustomFont->duplicate();
+ CustomFontSlanted->set_transform(Transform2D(1.0, 0.4, 0.0, 1.0, 0.0, 0.0));
+ }
+
/* Custom Bold font */
String custom_font_path_bold = EditorSettings::get_singleton()->get("interface/editor/main_font_bold");
@@ -269,6 +319,9 @@ void editor_register_fonts(Ref<Theme> p_theme) {
Ref<FontData> FontThai = load_cached_internal_font(_font_NotoSansThaiUI_Regular, _font_NotoSansThaiUI_Regular_size, font_hinting, font_antialiased, true, font_subpixel_positioning);
Ref<FontData> FontThaiBold = load_cached_internal_font(_font_NotoSansThaiUI_Bold, _font_NotoSansThaiUI_Bold_size, font_hinting, font_antialiased, true, font_subpixel_positioning);
+ Ref<FontData> DefaultFontSlanted = DefaultFont->duplicate();
+ DefaultFontSlanted->set_transform(Transform2D(1.0, 0.3, 0.0, 1.0, 0.0, 0.0));
+
/* Droid Sans */
Ref<FontData> FontFallback = load_cached_internal_font(_font_DroidSansFallback, _font_DroidSansFallback_size, font_hinting, font_antialiased, true, font_subpixel_positioning);
@@ -296,6 +349,7 @@ void editor_register_fonts(Ref<Theme> p_theme) {
// Bold font
MAKE_BOLD_FONT(df_bold, String());
+ MAKE_SLANTED_FONT(df_italic, String());
p_theme->set_font_size("bold_size", "EditorFonts", default_font_size);
p_theme->set_font("bold", "EditorFonts", df_bold);
@@ -325,8 +379,8 @@ void editor_register_fonts(Ref<Theme> p_theme) {
MAKE_SOURCE_FONT(df_code, code_font_custom_variations);
p_theme->set_font_size("doc_size", "EditorFonts", int(EDITOR_GET("text_editor/help/help_font_size")) * EDSCALE);
p_theme->set_font("doc", "EditorFonts", df);
- p_theme->set_font_size("doc_bold_size", "EditorFonts", int(EDITOR_GET("text_editor/help/help_font_size")) * EDSCALE);
p_theme->set_font("doc_bold", "EditorFonts", df_bold);
+ p_theme->set_font("doc_italic", "EditorFonts", df_italic);
p_theme->set_font_size("doc_title_size", "EditorFonts", int(EDITOR_GET("text_editor/help/help_title_font_size")) * EDSCALE);
p_theme->set_font("doc_title", "EditorFonts", df_bold);
p_theme->set_font_size("doc_source_size", "EditorFonts", int(EDITOR_GET("text_editor/help/help_source_font_size")) * EDSCALE);
diff --git a/editor/editor_help.cpp b/editor/editor_help.cpp
index 622547f0a8..75dbe74e01 100644
--- a/editor/editor_help.cpp
+++ b/editor/editor_help.cpp
@@ -1476,10 +1476,10 @@ static void _add_text_to_rt(const String &p_bbcode, RichTextLabel *p_rt) {
Ref<Font> doc_font = p_rt->get_theme_font(SNAME("doc"), SNAME("EditorFonts"));
Ref<Font> doc_bold_font = p_rt->get_theme_font(SNAME("doc_bold"), SNAME("EditorFonts"));
+ Ref<Font> doc_italic_font = p_rt->get_theme_font(SNAME("doc_italic"), SNAME("EditorFonts"));
Ref<Font> doc_code_font = p_rt->get_theme_font(SNAME("doc_source"), SNAME("EditorFonts"));
Ref<Font> doc_kbd_font = p_rt->get_theme_font(SNAME("doc_keyboard"), SNAME("EditorFonts"));
- Color headline_color = p_rt->get_theme_color(SNAME("headline_color"), SNAME("EditorHelp"));
Color link_color = p_rt->get_theme_color(SNAME("link_color"), SNAME("EditorHelp"));
Color code_color = p_rt->get_theme_color(SNAME("code_color"), SNAME("EditorHelp"));
Color kbd_color = p_rt->get_theme_color(SNAME("kbd_color"), SNAME("EditorHelp"));
@@ -1633,7 +1633,7 @@ static void _add_text_to_rt(const String &p_bbcode, RichTextLabel *p_rt) {
tag_stack.push_front(tag);
} else if (tag == "i") {
//use italics font
- p_rt->push_color(headline_color);
+ p_rt->push_font(doc_italic_font);
pos = brk_end + 1;
tag_stack.push_front(tag);
} else if (tag == "code" || tag == "codeblock") {
diff --git a/editor/editor_inspector.cpp b/editor/editor_inspector.cpp
index 9601eaf5f5..1449edb58f 100644
--- a/editor/editor_inspector.cpp
+++ b/editor/editor_inspector.cpp
@@ -40,17 +40,18 @@
#include "editor/editor_scale.h"
#include "editor/editor_settings.h"
#include "multi_node_edit.h"
+#include "scene/gui/center_container.h"
#include "scene/property_utils.h"
#include "scene/resources/packed_scene.h"
-static bool _property_path_matches(const String &p_property_path, const String &p_filter) {
+static bool _property_path_matches(const String &p_property_path, const String &p_filter, EditorPropertyNameProcessor::Style p_style) {
if (p_property_path.findn(p_filter) != -1) {
return true;
}
const Vector<String> sections = p_property_path.split("/");
for (int i = 0; i < sections.size(); i++) {
- if (p_filter.is_subsequence_ofn(EditorPropertyNameProcessor::get_singleton()->process_name(sections[i]))) {
+ if (p_filter.is_subsequence_ofn(EditorPropertyNameProcessor::get_singleton()->process_name(sections[i], p_style))) {
return true;
}
}
@@ -2455,6 +2456,8 @@ void EditorInspector::update_tree() {
_parse_added_editors(main_vbox, ped);
}
+ bool in_script_variables = false;
+
// Get the lists of editors for properties.
for (List<PropertyInfo>::Element *E_property = plist.front(); E_property; E_property = E_property->next()) {
PropertyInfo &p = E_property->get();
@@ -2506,7 +2509,7 @@ void EditorInspector::update_tree() {
List<PropertyInfo>::Element *N = E_property->next();
bool valid = true;
while (N) {
- if (N->get().usage & PROPERTY_USAGE_EDITOR && (!restrict_to_basic || (N->get().usage & PROPERTY_USAGE_EDITOR_BASIC_SETTING))) {
+ if (!N->get().name.begins_with("metadata/_") && N->get().usage & PROPERTY_USAGE_EDITOR && (!restrict_to_basic || (N->get().usage & PROPERTY_USAGE_EDITOR_BASIC_SETTING))) {
break;
}
if (N->get().usage & PROPERTY_USAGE_CATEGORY) {
@@ -2546,6 +2549,9 @@ void EditorInspector::update_tree() {
if (category->icon.is_null() && has_theme_icon(base_type, SNAME("EditorIcons"))) {
category->icon = get_theme_icon(base_type, SNAME("EditorIcons"));
}
+ in_script_variables = true;
+ } else {
+ in_script_variables = false;
}
if (category->icon.is_null()) {
if (!type.is_empty()) { // Can happen for built-in scripts.
@@ -2580,7 +2586,7 @@ void EditorInspector::update_tree() {
continue;
- } else if (!(p.usage & PROPERTY_USAGE_EDITOR) || _is_property_disabled_by_feature_profile(p.name) || (restrict_to_basic && !(p.usage & PROPERTY_USAGE_EDITOR_BASIC_SETTING))) {
+ } else if (p.name.begins_with("metadata/_") || !(p.usage & PROPERTY_USAGE_EDITOR) || _is_property_disabled_by_feature_profile(p.name) || (restrict_to_basic && !(p.usage & PROPERTY_USAGE_EDITOR_BASIC_SETTING))) {
// Ignore properties that are not supposed to be in the inspector.
continue;
}
@@ -2672,18 +2678,22 @@ void EditorInspector::update_tree() {
// Get the property label's string.
String name_override = (path.contains("/")) ? path.substr(path.rfind("/") + 1) : path;
- String property_label_string = name_override;
- if (capitalize_paths) {
- // Capitalize paths.
- int dot = property_label_string.find(".");
+ String feature_tag;
+ {
+ const int dot = name_override.find(".");
if (dot != -1) {
+ feature_tag = name_override.right(dot);
name_override = name_override.substr(0, dot);
- property_label_string = EditorPropertyNameProcessor::get_singleton()->process_name(name_override) + property_label_string.substr(dot);
- } else {
- property_label_string = EditorPropertyNameProcessor::get_singleton()->process_name(property_label_string);
}
}
+ // Don't localize properties in Script Variables category.
+ EditorPropertyNameProcessor::Style name_style = property_name_style;
+ if (in_script_variables && name_style == EditorPropertyNameProcessor::STYLE_LOCALIZED) {
+ name_style = EditorPropertyNameProcessor::STYLE_CAPITALIZED;
+ }
+ const String property_label_string = EditorPropertyNameProcessor::get_singleton()->process_name(name_override, name_style) + feature_tag;
+
// Remove the property from the path.
int idx = path.rfind("/");
if (idx > -1) {
@@ -2695,7 +2705,7 @@ void EditorInspector::update_tree() {
// Ignore properties that do not fit the filter.
if (use_filter && !filter.is_empty()) {
const String property_path = property_prefix + (path.is_empty() ? "" : path + "/") + name_override;
- if (!_property_path_matches(property_path, filter)) {
+ if (!_property_path_matches(property_path, filter, property_name_style)) {
continue;
}
}
@@ -2732,15 +2742,27 @@ void EditorInspector::update_tree() {
current_vbox->add_child(section);
sections.push_back(section);
- String label = component;
- if (capitalize_paths) {
- label = EditorPropertyNameProcessor::get_singleton()->process_name(label);
+ String label;
+ String tooltip;
+
+ // Only process group label if this is not the group or subgroup.
+ if ((i == 0 && component == group) || (i == 1 && component == subgroup)) {
+ if (property_name_style == EditorPropertyNameProcessor::STYLE_LOCALIZED) {
+ label = TTRGET(component);
+ tooltip = component;
+ } else {
+ label = component;
+ tooltip = TTRGET(component);
+ }
+ } else {
+ label = EditorPropertyNameProcessor::get_singleton()->process_name(component, property_name_style);
+ tooltip = EditorPropertyNameProcessor::get_singleton()->process_name(component, EditorPropertyNameProcessor::get_tooltip_style(property_name_style));
}
Color c = sscolor;
c.a /= level;
section->setup(acc_path, label, object, c, use_folding, section_depth);
- section->set_tooltip(EditorPropertyNameProcessor::get_singleton()->make_tooltip_for_name(component));
+ section->set_tooltip(tooltip);
// Add editors at the start of a group.
for (Ref<EditorInspectorPlugin> &ped : valid_plugins) {
@@ -2772,7 +2794,7 @@ void EditorInspector::update_tree() {
editor_inspector_array = memnew(EditorInspectorArray);
String array_label = path.contains("/") ? path.substr(path.rfind("/") + 1) : path;
- array_label = EditorPropertyNameProcessor::get_singleton()->process_name(property_label_string);
+ array_label = EditorPropertyNameProcessor::get_singleton()->process_name(property_label_string, property_name_style);
int page = per_array_page.has(array_element_prefix) ? per_array_page[array_element_prefix] : 0;
editor_inspector_array->setup_with_move_element_function(object, array_label, array_element_prefix, page, c, use_folding);
editor_inspector_array->connect("page_change_request", callable_mp(this, &EditorInspector::_page_change_request), varray(array_element_prefix));
@@ -2915,7 +2937,7 @@ void EditorInspector::update_tree() {
ep->set_checked(checked);
ep->set_keying(keying);
ep->set_read_only(property_read_only);
- ep->set_deletable(deletable_properties);
+ ep->set_deletable(deletable_properties || p.name.begins_with("metadata/"));
}
current_vbox->add_child(F.property_editor);
@@ -2956,6 +2978,15 @@ void EditorInspector::update_tree() {
}
}
+ if (!hide_metadata) {
+ Button *add_md = memnew(Button);
+ add_md->set_text(TTR("Add Metadata"));
+ add_md->set_focus_mode(Control::FOCUS_NONE);
+ add_md->set_icon(get_theme_icon("Add", "EditorIcons"));
+ add_md->connect("pressed", callable_mp(this, &EditorInspector::_show_add_meta_dialog));
+ main_vbox->add_child(add_md);
+ }
+
// Get the lists of to add at the end.
for (Ref<EditorInspectorPlugin> &ped : valid_plugins) {
ped->parse_end(object);
@@ -3027,12 +3058,15 @@ void EditorInspector::set_read_only(bool p_read_only) {
update_tree();
}
-bool EditorInspector::is_capitalize_paths_enabled() const {
- return capitalize_paths;
+EditorPropertyNameProcessor::Style EditorInspector::get_property_name_style() const {
+ return property_name_style;
}
-void EditorInspector::set_enable_capitalize_paths(bool p_capitalize) {
- capitalize_paths = p_capitalize;
+void EditorInspector::set_property_name_style(EditorPropertyNameProcessor::Style p_style) {
+ if (property_name_style == p_style) {
+ return;
+ }
+ property_name_style = p_style;
update_tree();
}
@@ -3055,6 +3089,11 @@ void EditorInspector::set_hide_script(bool p_hide) {
update_tree();
}
+void EditorInspector::set_hide_metadata(bool p_hide) {
+ hide_metadata = p_hide;
+ update_tree();
+}
+
void EditorInspector::set_use_filter(bool p_use) {
use_filter = p_use;
update_tree();
@@ -3323,6 +3362,14 @@ void EditorInspector::_property_deleted(const String &p_path) {
return;
}
+ if (p_path.begins_with("metadata/")) {
+ String name = p_path.replace_first("metadata/", "");
+ undo_redo->create_action(vformat(TTR("Remove metadata %s"), name));
+ undo_redo->add_do_method(object, "remove_meta", name);
+ undo_redo->add_undo_method(object, "set_meta", name, object->get_meta(name));
+ undo_redo->commit_action();
+ }
+
emit_signal(SNAME("property_deleted"), p_path);
}
@@ -3650,6 +3697,81 @@ Variant EditorInspector::get_property_clipboard() const {
return property_clipboard;
}
+void EditorInspector::_add_meta_confirm() {
+ String name = add_meta_name->get_text();
+
+ object->editor_set_section_unfold("metadata", true); // Ensure metadata is unfolded when adding a new metadata.
+
+ Variant defval;
+ Callable::CallError ce;
+ Variant::construct(Variant::Type(add_meta_type->get_selected_id()), defval, nullptr, 0, ce);
+ undo_redo->create_action(vformat(TTR("Add metadata %s"), name));
+ undo_redo->add_do_method(object, "set_meta", name, defval);
+ undo_redo->add_undo_method(object, "remove_meta", name);
+ undo_redo->commit_action();
+}
+
+void EditorInspector::_check_meta_name(String name) {
+ String error;
+
+ if (name == "") {
+ error = TTR("Metadata can't be empty.");
+ } else if (!name.is_valid_identifier()) {
+ error = TTR("Invalid metadata identifier.");
+ } else if (object->has_meta(name)) {
+ error = TTR("Metadata already exists.");
+ }
+
+ if (error != "") {
+ add_meta_error->add_theme_color_override("font_color", get_theme_color(SNAME("error_color"), SNAME("Editor")));
+ add_meta_error->set_text(error);
+ add_meta_dialog->get_ok_button()->set_disabled(true);
+ } else {
+ add_meta_error->add_theme_color_override("font_color", get_theme_color(SNAME("success_color"), SNAME("Editor")));
+ add_meta_error->set_text(TTR("Metadata name is valid."));
+ add_meta_dialog->get_ok_button()->set_disabled(false);
+ }
+}
+
+void EditorInspector::_show_add_meta_dialog() {
+ if (!add_meta_dialog) {
+ add_meta_dialog = memnew(ConfirmationDialog);
+ add_meta_dialog->set_title(TTR("Add Metadata Property"));
+ VBoxContainer *vbc = memnew(VBoxContainer);
+ add_meta_dialog->add_child(vbc);
+ HBoxContainer *hbc = memnew(HBoxContainer);
+ vbc->add_child(hbc);
+ hbc->add_child(memnew(Label(TTR("Name:"))));
+ add_meta_name = memnew(LineEdit);
+ add_meta_name->set_custom_minimum_size(Size2(200 * EDSCALE, 1));
+ hbc->add_child(add_meta_name);
+ hbc->add_child(memnew(Label(TTR("Type:"))));
+ add_meta_type = memnew(OptionButton);
+ for (int i = 0; i < Variant::VARIANT_MAX; i++) {
+ if (i == Variant::NIL || i == Variant::RID || i == Variant::CALLABLE || i == Variant::SIGNAL) {
+ continue; //not editable by inspector.
+ }
+ String type = i == Variant::OBJECT ? String("Resource") : Variant::get_type_name(Variant::Type(i));
+
+ add_meta_type->add_icon_item(get_theme_icon(type, "EditorIcons"), type, i);
+ }
+ hbc->add_child(add_meta_type);
+ add_meta_dialog->get_ok_button()->set_text(TTR("Add"));
+ add_child(add_meta_dialog);
+ add_meta_dialog->register_text_enter(add_meta_name);
+ add_meta_dialog->connect("confirmed", callable_mp(this, &EditorInspector::_add_meta_confirm));
+ add_meta_error = memnew(Label);
+ vbc->add_child(add_meta_error);
+
+ add_meta_name->connect("text_changed", callable_mp(this, &EditorInspector::_check_meta_name));
+ }
+
+ add_meta_dialog->popup_centered();
+ add_meta_name->set_text("");
+ _check_meta_name("");
+ add_meta_name->grab_focus();
+}
+
void EditorInspector::_bind_methods() {
ClassDB::bind_method("_edit_request_change", &EditorInspector::_edit_request_change);
diff --git a/editor/editor_inspector.h b/editor/editor_inspector.h
index 3c482a07e7..87703564b9 100644
--- a/editor/editor_inspector.h
+++ b/editor/editor_inspector.h
@@ -31,10 +31,12 @@
#ifndef EDITOR_INSPECTOR_H
#define EDITOR_INSPECTOR_H
+#include "editor_property_name_processor.h"
#include "scene/gui/box_container.h"
#include "scene/gui/button.h"
#include "scene/gui/dialogs.h"
#include "scene/gui/line_edit.h"
+#include "scene/gui/option_button.h"
#include "scene/gui/panel_container.h"
#include "scene/gui/scroll_container.h"
#include "scene/gui/texture_rect.h"
@@ -445,8 +447,9 @@ class EditorInspector : public ScrollContainer {
LineEdit *search_box;
bool show_categories = false;
bool hide_script = true;
+ bool hide_metadata = true;
bool use_doc_hints = false;
- bool capitalize_paths = true;
+ EditorPropertyNameProcessor::Style property_name_style = EditorPropertyNameProcessor::STYLE_CAPITALIZED;
bool use_filter = false;
bool autoclear = false;
bool use_folding = false;
@@ -511,6 +514,15 @@ class EditorInspector : public ScrollContainer {
void _update_inspector_bg();
+ ConfirmationDialog *add_meta_dialog = nullptr;
+ LineEdit *add_meta_name = nullptr;
+ OptionButton *add_meta_type = nullptr;
+ Label *add_meta_error = nullptr;
+
+ void _add_meta_confirm();
+ void _show_add_meta_dialog();
+ void _check_meta_name(String name);
+
protected:
static void _bind_methods();
void _notification(int p_what);
@@ -534,13 +546,15 @@ public:
void set_keying(bool p_active);
void set_read_only(bool p_read_only);
- bool is_capitalize_paths_enabled() const;
- void set_enable_capitalize_paths(bool p_capitalize);
+ EditorPropertyNameProcessor::Style get_property_name_style() const;
+ void set_property_name_style(EditorPropertyNameProcessor::Style p_style);
+
void set_autoclear(bool p_enable);
void set_show_categories(bool p_show);
void set_use_doc_hints(bool p_enable);
void set_hide_script(bool p_hide);
+ void set_hide_metadata(bool p_hide);
void set_use_filter(bool p_use);
void register_text_enter(Node *p_line_edit);
diff --git a/editor/editor_node.cpp b/editor/editor_node.cpp
index d01dfb5361..52f7366dd7 100644
--- a/editor/editor_node.cpp
+++ b/editor/editor_node.cpp
@@ -225,17 +225,17 @@ void EditorNode::disambiguate_filenames(const Vector<String> p_full_paths, Vecto
index_sets.write[scene_name_to_set_index[scene_name]].insert(i);
}
- // For each index set with a size > 1, we need to disambiguate
+ // For each index set with a size > 1, we need to disambiguate.
for (int i = 0; i < index_sets.size(); i++) {
Set<int> iset = index_sets[i];
while (iset.size() > 1) {
- // Append the parent folder to each scene name
+ // Append the parent folder to each scene name.
for (Set<int>::Element *E = iset.front(); E; E = E->next()) {
int set_idx = E->get();
String scene_name = r_filenames[set_idx];
String full_path = p_full_paths[set_idx];
- // Get rid of file extensions and res:// prefixes
+ // Get rid of file extensions and res:// prefixes.
if (scene_name.rfind(".") >= 0) {
scene_name = scene_name.substr(0, scene_name.rfind("."));
}
@@ -263,7 +263,7 @@ void EditorNode::disambiguate_filenames(const Vector<String> p_full_paths, Vecto
}
}
- // Loop back through scene names and remove non-ambiguous names
+ // Loop back through scene names and remove non-ambiguous names.
bool can_proceed = false;
Set<int>::Element *E = iset.front();
while (E) {
@@ -546,6 +546,12 @@ void EditorNode::_update_from_settings() {
RS::get_singleton()->decals_set_filter(RS::DecalFilter(int(GLOBAL_GET("rendering/textures/decals/filter"))));
RS::get_singleton()->light_projectors_set_filter(RS::LightProjectorFilter(int(GLOBAL_GET("rendering/textures/light_projectors/filter"))));
+
+ SceneTree *tree = get_tree();
+ tree->set_debug_collisions_color(GLOBAL_GET("debug/shapes/collision/shape_color"));
+ tree->set_debug_collision_contact_color(GLOBAL_GET("debug/shapes/collision/contact_color"));
+ tree->set_debug_navigation_color(GLOBAL_GET("debug/shapes/navigation/geometry_color"));
+ tree->set_debug_navigation_disabled_color(GLOBAL_GET("debug/shapes/navigation/disabled_geometry_color"));
}
void EditorNode::_select_default_main_screen_plugin() {
@@ -629,6 +635,9 @@ void EditorNode::_notification(int p_what) {
get_tree()->get_root()->set_snap_2d_transforms_to_pixel(false);
get_tree()->get_root()->set_snap_2d_vertices_to_pixel(false);
get_tree()->set_auto_accept_quit(false);
+#ifdef ANDROID_ENABLED
+ get_tree()->set_quit_on_go_back(false);
+#endif
get_tree()->get_root()->connect("files_dropped", callable_mp(this, &EditorNode::_dropped_files));
command_palette->register_shortcuts_as_command();
@@ -639,7 +648,7 @@ void EditorNode::_notification(int p_what) {
case NOTIFICATION_EXIT_TREE: {
editor_data.save_editor_external_data();
FileAccess::set_file_close_fail_notify_callback(nullptr);
- log->deinit(); // do not get messages anymore
+ log->deinit(); // Do not get messages anymore.
editor_data.clear_edited_scenes();
} break;
@@ -649,7 +658,7 @@ void EditorNode::_notification(int p_what) {
case NOTIFICATION_READY: {
{
- _initializing_addons = true;
+ _initializing_plugins = true;
Vector<String> addons;
if (ProjectSettings::get_singleton()->has_setting("editor_plugins/enabled")) {
addons = ProjectSettings::get_singleton()->get("editor_plugins/enabled");
@@ -658,7 +667,7 @@ void EditorNode::_notification(int p_what) {
for (int i = 0; i < addons.size(); i++) {
set_addon_plugin_enabled(addons[i], true);
}
- _initializing_addons = false;
+ _initializing_plugins = false;
}
RenderingServer::get_singleton()->viewport_set_disable_2d(get_scene_root()->get_viewport_rid(), true);
@@ -707,7 +716,10 @@ void EditorNode::_notification(int p_what) {
bool theme_changed =
EditorSettings::get_singleton()->check_changed_settings_in_group("interface/theme") ||
- EditorSettings::get_singleton()->check_changed_settings_in_group("text_editor/theme");
+ EditorSettings::get_singleton()->check_changed_settings_in_group("text_editor/theme") ||
+ EditorSettings::get_singleton()->check_changed_settings_in_group("interface/editor/font") ||
+ EditorSettings::get_singleton()->check_changed_settings_in_group("interface/editor/main_font") ||
+ EditorSettings::get_singleton()->check_changed_settings_in_group("interface/editor/code_font");
if (theme_changed) {
theme = create_custom_theme(theme_base->get_theme());
@@ -733,12 +745,12 @@ void EditorNode::_notification(int p_what) {
recent_scenes->reset_size();
- // debugger area
+ // Update debugger area.
if (EditorDebuggerNode::get_singleton()->is_visible()) {
bottom_panel->add_theme_style_override("panel", gui_base->get_theme_stylebox(SNAME("BottomPanelDebuggerOverride"), SNAME("EditorStyles")));
}
- // update_icons
+ // Update icons.
for (int i = 0; i < singleton->main_editor_buttons.size(); i++) {
Button *tb = singleton->main_editor_buttons[i];
EditorPlugin *p_editor = singleton->editor_table[i];
@@ -881,7 +893,7 @@ void EditorNode::_resources_changed(const Vector<String> &p_resources) {
}
if (!res->get_import_path().is_empty()) {
- // 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;
}
@@ -906,23 +918,23 @@ void EditorNode::_fs_changed() {
_mark_unsaved_scenes();
- // FIXME: Move this to a cleaner location, it's hacky to do this is _fs_changed.
+ // FIXME: Move this to a cleaner location, it's hacky to do this in _fs_changed.
String export_error;
if (!export_defer.preset.is_empty() && !EditorFileSystem::get_singleton()->is_scanning()) {
String preset_name = export_defer.preset;
// Ensures export_project does not loop infinitely, because notifications may
// come during the export.
export_defer.preset = "";
- Ref<EditorExportPreset> preset;
+ Ref<EditorExportPreset> export_preset;
for (int i = 0; i < EditorExport::get_singleton()->get_export_preset_count(); ++i) {
- preset = EditorExport::get_singleton()->get_export_preset(i);
- if (preset->get_name() == preset_name) {
+ export_preset = EditorExport::get_singleton()->get_export_preset(i);
+ if (export_preset->get_name() == preset_name) {
break;
}
- preset.unref();
+ export_preset.unref();
}
- if (preset.is_null()) {
+ if (export_preset.is_null()) {
DirAccessRef da = DirAccess::create(DirAccess::ACCESS_RESOURCES);
if (da->file_exists("res://export_presets.cfg")) {
export_error = vformat(
@@ -936,8 +948,8 @@ void EditorNode::_fs_changed() {
export_error = "This project doesn't have an `export_presets.cfg` file at its root.\nCreate an export preset from the \"Project > Export\" dialog and try again.";
}
} else {
- Ref<EditorExportPlatform> platform = preset->get_platform();
- const String export_path = export_defer.path.is_empty() ? preset->get_export_path() : export_defer.path;
+ Ref<EditorExportPlatform> platform = export_preset->get_platform();
+ const String export_path = export_defer.path.is_empty() ? export_preset->get_export_path() : export_defer.path;
if (export_path.is_empty()) {
export_error = vformat("Export preset \"%s\" doesn't have a default export path, and none was specified.", preset_name);
} else if (platform.is_null()) {
@@ -946,18 +958,18 @@ void EditorNode::_fs_changed() {
Error err = OK;
if (export_defer.pack_only) { // Only export .pck or .zip data pack.
if (export_path.ends_with(".zip")) {
- err = platform->export_zip(preset, export_defer.debug, export_path);
+ err = platform->export_zip(export_preset, export_defer.debug, export_path);
} else if (export_path.ends_with(".pck")) {
- err = platform->export_pack(preset, export_defer.debug, export_path);
+ err = platform->export_pack(export_preset, export_defer.debug, export_path);
}
} else { // Normal project export.
String config_error;
bool missing_templates;
- if (!platform->can_export(preset, config_error, missing_templates)) {
+ if (!platform->can_export(export_preset, config_error, missing_templates)) {
ERR_PRINT(vformat("Cannot export project with preset \"%s\" due to configuration errors:\n%s", preset_name, config_error));
err = missing_templates ? ERR_FILE_NOT_FOUND : ERR_UNCONFIGURED;
} else {
- err = platform->export_project(preset, export_defer.debug, export_path);
+ err = platform->export_project(export_preset, export_defer.debug, export_path);
}
}
switch (err) {
@@ -986,21 +998,22 @@ void EditorNode::_fs_changed() {
}
void EditorNode::_resources_reimported(const Vector<String> &p_resources) {
- List<String> scenes; // will load later
+ List<String> scenes;
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
+ // Not loaded, no need to reload.
+ continue;
}
- // reload normally
+ // Reload normally.
Resource *resource = ResourceCache::get(p_resources[i]);
if (resource) {
resource->reload_from_file();
@@ -1172,7 +1185,6 @@ 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;
Vector<String> errors;
for (Set<String>::Element *E = dependency_errors[p_resource].front(); E; E = E->next()) {
errors.push_back(E->get());
@@ -1239,7 +1251,7 @@ void EditorNode::save_resource_as(const Ref<Resource> &p_resource, const String
file->set_file_mode(EditorFileDialog::FILE_MODE_SAVE_FILE);
saving_resource = p_resource;
- current_option = RESOURCE_SAVE_AS;
+ current_menu_option = RESOURCE_SAVE_AS;
List<String> extensions;
Ref<PackedScene> sd = memnew(PackedScene);
ResourceSaver::get_recognized_extensions(p_resource, &extensions);
@@ -1248,18 +1260,18 @@ 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());
preferred.push_back(E);
}
- // Lowest priority extension
+ // Lowest priority extension.
List<String>::Element *res_element = preferred.find("res");
if (res_element) {
preferred.move_to_back(res_element);
}
- // Highest priority extension
+ // Highest priority extension.
List<String>::Element *tres_element = preferred.find("tres");
if (tres_element) {
preferred.move_to_front(tres_element);
@@ -1302,7 +1314,7 @@ void EditorNode::_menu_option(int p_option) {
}
void EditorNode::_menu_confirm_current() {
- _menu_option_confirm(current_option, true);
+ _menu_option_confirm(current_menu_option, true);
}
void EditorNode::_dialog_display_save_error(String p_file, Error p_error) {
@@ -1357,7 +1369,8 @@ 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
+ // Must not exist.
+ return;
}
List<String> esl;
@@ -1381,9 +1394,6 @@ 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_plugin_states__", Variant());
-
String path = EditorSettings::get_singleton()->get_project_settings_dir().plus_file(p_file.get_file() + "-editstate-" + p_file.md5_text() + ".cfg");
Ref<ConfigFile> cf;
@@ -1424,10 +1434,9 @@ 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
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;
@@ -1525,7 +1534,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.
@@ -1558,13 +1567,13 @@ void EditorNode::_save_scene_with_preview(String p_file, int p_idx) {
int preview_size = EditorSettings::get_singleton()->get("filesystem/file_dialog/thumbnail_size");
preview_size *= EDSCALE;
- // consider a square region
+ // Consider a square region.
int vp_size = MIN(img->get_width(), img->get_height());
int x = (img->get_width() - vp_size) / 2;
int y = (img->get_height() - vp_size) / 2;
if (vp_size < preview_size) {
- // just square it.
+ // Just square it.
img->crop_from_point(x, y, vp_size, vp_size);
} else {
int ratio = vp_size / preview_size;
@@ -1578,13 +1587,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";
post_process_preview(img);
@@ -1631,7 +1639,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)) {
@@ -1644,7 +1652,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")) {
@@ -1667,8 +1675,8 @@ int EditorNode::_save_external_resources() {
}
}
- // clear later, because user may have put the same subresource in two different resources,
- // which will be shared until the next reload
+ // Clear later, because user may have put the same subresource in two different resources,
+ // which will be shared until the next reload.
for (Set<Ref<Resource>>::Element *E = edited_subresources.front(); E; E = E->next()) {
Ref<Resource> res = E->get();
@@ -1716,9 +1724,9 @@ void EditorNode::_save_scene(String p_file, int idx) {
Ref<PackedScene> sdata;
if (ResourceCache::has(p_file)) {
- // something may be referencing this resource and we are good with that.
- // we must update it, but also let the previous scene state go, as
- // old version still work for referencing changes in instantiated or inherited scenes
+ // Something may be referencing this resource and we are good with that.
+ // We must update it, but also let the previous scene state go, as
+ // old version still work for referencing changes in instantiated or inherited scenes.
sdata = Ref<PackedScene>(Object::cast_to<PackedScene>(ResourceCache::get(p_file)));
if (sdata.is_valid()) {
@@ -1855,7 +1863,7 @@ void EditorNode::_mark_unsaved_scenes() {
}
void EditorNode::_dialog_action(String p_file) {
- switch (current_option) {
+ switch (current_menu_option) {
case FILE_NEW_INHERITED_SCENE: {
Node *scene = editor_data.get_edited_scene_root();
// If the previous scene is rootless, just close it in favor of the new one.
@@ -1871,21 +1879,22 @@ 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..
+ // TODO: 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();
} else {
- _run(false, ""); // automatically run the project
+ _run(false, ""); // Automatically run the project.
}
} break;
case FILE_CLOSE:
case FILE_CLOSE_ALL_AND_QUIT:
case FILE_CLOSE_ALL_AND_RUN_PROJECT_MANAGER:
+ case FILE_CLOSE_ALL_AND_RELOAD_CURRENT_PROJECT:
case SCENE_TAB_CLOSE:
case FILE_SAVE_SCENE:
case FILE_SAVE_AS_SCENE: {
- int scene_idx = (current_option == FILE_SAVE_SCENE || current_option == FILE_SAVE_AS_SCENE) ? -1 : tab_closing;
+ int scene_idx = (current_menu_option == FILE_SAVE_SCENE || current_menu_option == FILE_SAVE_AS_SCENE) ? -1 : tab_closing_idx;
if (file->get_file_mode() == EditorFileDialog::FILE_MODE_SAVE_FILE) {
bool same_open_scene = false;
@@ -1965,7 +1974,7 @@ void EditorNode::_dialog_action(String p_file) {
Error err = config->load(EditorSettings::get_singleton()->get_editor_layouts_config());
if (err == ERR_FILE_CANT_OPEN || err == ERR_FILE_NOT_FOUND) {
- config.instantiate(); // new config
+ config.instantiate();
} else if (err != OK) {
show_warning(TTR("An error occurred while trying to save the editor layout.\nMake sure the editor's user data path is writable."));
return;
@@ -1997,11 +2006,11 @@ void EditorNode::_dialog_action(String p_file) {
return;
}
- // erase
+ // Erase key values.
List<String> keys;
config->get_section_keys(p_file, &keys);
- for (const String &E : keys) {
- config->set_value(p_file, E, Variant());
+ for (const String &key : keys) {
+ config->set_value(p_file, key, Variant());
}
config->save(EditorSettings::get_singleton()->get_editor_layouts_config());
@@ -2014,8 +2023,8 @@ 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);
}
@@ -2102,7 +2111,7 @@ void EditorNode::push_item(Object *p_object, const String &p_property, bool p_in
ObjectID id = p_object->get_instance_id();
if (id != editor_history.get_current()) {
if (p_inspector_only) {
- editor_history.add_object_inspector_only(id);
+ editor_history.add_object(id, String(), true);
} else if (p_property.is_empty()) {
editor_history.add_object(id);
} else {
@@ -2183,7 +2192,7 @@ void EditorNode::_edit_current(bool p_skip_foreign) {
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);
@@ -2251,7 +2260,7 @@ void EditorNode::_edit_current(bool p_skip_foreign) {
}
}
if (!multi_nodes.is_empty()) {
- // Pick the top-most node
+ // Pick the top-most node.
multi_nodes.sort_custom<Node::Comparator>();
selected_node = multi_nodes.front()->get();
}
@@ -2276,7 +2285,7 @@ void EditorNode::_edit_current(bool p_skip_foreign) {
InspectorDock::get_inspector_singleton()->set_use_folding(!disable_folding);
}
- /* Take care of PLUGIN EDITOR */
+ // Take care of the main editor plugin.
if (!inspector_only) {
EditorPlugin *main_plugin = editor_data.get_editor(current_obj);
@@ -2285,7 +2294,7 @@ void EditorNode::_edit_current(bool p_skip_foreign) {
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 is active.
}
break;
@@ -2293,7 +2302,7 @@ void EditorNode::_edit_current(bool p_skip_foreign) {
}
if (main_plugin) {
- // special case if use of external editor is true
+ // Special case if use of external editor is true.
Resource *current_res = Object::cast_to<Resource>(current_obj);
if (main_plugin->get_name() == "Script" && current_obj->is_class("VisualScript") && current_res && !current_res->is_built_in() && (bool(EditorSettings::get_singleton()->get("text_editor/external/use_external_editor")) || overrides_external_editor(current_obj))) {
if (!changing_scene) {
@@ -2302,7 +2311,7 @@ void EditorNode::_edit_current(bool p_skip_foreign) {
}
else if (main_plugin != editor_plugin_screen && (!ScriptEditor::get_singleton() || !ScriptEditor::get_singleton()->is_visible_in_tree() || ScriptEditor::get_singleton()->can_take_away_focus())) {
- // update screen main_plugin
+ // Update screen main_plugin.
_editor_select(plugin_index);
main_plugin->edit(current_obj);
} else {
@@ -2355,10 +2364,10 @@ void EditorNode::_run(bool p_current, const String &p_custom) {
}
if (scene->get_scene_file_path().is_empty()) {
- current_option = -1;
+ current_menu_option = -1;
_menu_option(FILE_SAVE_AS_SCENE);
// Set the option to save and run so when the dialog is accepted, the scene runs.
- current_option = FILE_SAVE_AND_RUN;
+ current_menu_option = FILE_SAVE_AND_RUN;
file->set_title(TTR("Save scene before running..."));
return;
}
@@ -2369,7 +2378,7 @@ void EditorNode::_run(bool p_current, const String &p_custom) {
}
if (run_filename.is_empty()) {
- // evidently, run the scene
+ // Evidently, run the scene.
if (!ensure_main_scene(false)) {
return;
}
@@ -2433,7 +2442,7 @@ void EditorNode::_run_native(const Ref<EditorExportPreset> &p_preset) {
_menu_option_confirm(RUN_STOP, true);
if (!call_build()) {
- return; // build failed
+ return; // Build failed.
}
EditorDebuggerNode::get_singleton()->start(p_preset->get_platform()->get_debug_protocol());
@@ -2446,8 +2455,8 @@ 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..
- current_option = (MenuOptions)p_option;
+ if (!p_confirmed) { // FIXME: this may be a hack.
+ current_menu_option = (MenuOptions)p_option;
}
switch (p_option) {
@@ -2500,13 +2509,13 @@ void EditorNode::_menu_option_confirm(int p_option, bool p_confirmed) {
case FILE_CLOSE_OTHERS:
case FILE_CLOSE_RIGHT:
case FILE_CLOSE_ALL: {
- if (editor_data.get_edited_scene_count() > 1 && (current_option != FILE_CLOSE_RIGHT || editor_data.get_edited_scene() < editor_data.get_edited_scene_count() - 1)) {
+ if (editor_data.get_edited_scene_count() > 1 && (current_menu_option != FILE_CLOSE_RIGHT || editor_data.get_edited_scene() < editor_data.get_edited_scene_count() - 1)) {
int next_tab = editor_data.get_edited_scene() + 1;
next_tab %= editor_data.get_edited_scene_count();
- _scene_tab_closed(next_tab, current_option);
+ _scene_tab_closed(next_tab, current_menu_option);
} else {
- if (current_option != FILE_CLOSE_ALL) {
- current_option = -1;
+ if (current_menu_option != FILE_CLOSE_ALL) {
+ current_menu_option = -1;
} else {
_scene_tab_closed(editor_data.get_edited_scene());
}
@@ -2521,25 +2530,31 @@ void EditorNode::_menu_option_confirm(int p_option, bool p_confirmed) {
_scene_tab_closed(editor_data.get_edited_scene());
} break;
case FILE_CLOSE_ALL_AND_QUIT:
- case FILE_CLOSE_ALL_AND_RUN_PROJECT_MANAGER: {
+ case FILE_CLOSE_ALL_AND_RUN_PROJECT_MANAGER:
+ case FILE_CLOSE_ALL_AND_RELOAD_CURRENT_PROJECT: {
if (!p_confirmed) {
- tab_closing = _next_unsaved_scene(false);
- _scene_tab_changed(tab_closing);
+ tab_closing_idx = _next_unsaved_scene(false);
+ _scene_tab_changed(tab_closing_idx);
- if (unsaved_cache || p_option == FILE_CLOSE_ALL_AND_QUIT || p_option == FILE_CLOSE_ALL_AND_RUN_PROJECT_MANAGER) {
- Node *scene_root = editor_data.get_edited_scene_root(tab_closing);
+ if (unsaved_cache || p_option == FILE_CLOSE_ALL_AND_QUIT || p_option == FILE_CLOSE_ALL_AND_RUN_PROJECT_MANAGER || p_option == FILE_CLOSE_ALL_AND_RELOAD_CURRENT_PROJECT) {
+ Node *scene_root = editor_data.get_edited_scene_root(tab_closing_idx);
if (scene_root) {
String scene_filename = scene_root->get_scene_file_path();
- save_confirmation->get_ok_button()->set_text(TTR("Save & Close"));
- save_confirmation->set_text(vformat(TTR("Save changes to '%s' before closing?"), !scene_filename.is_empty() ? scene_filename : "unsaved scene"));
+ if (p_option == FILE_CLOSE_ALL_AND_RELOAD_CURRENT_PROJECT) {
+ save_confirmation->get_ok_button()->set_text(TTR("Save & Reload"));
+ save_confirmation->set_text(vformat(TTR("Save changes to '%s' before reloading?"), !scene_filename.is_empty() ? scene_filename : "unsaved scene"));
+ } else {
+ save_confirmation->get_ok_button()->set_text(TTR("Save & Quit"));
+ save_confirmation->set_text(vformat(TTR("Save changes to '%s' before closing?"), !scene_filename.is_empty() ? scene_filename : "unsaved scene"));
+ }
save_confirmation->popup_centered();
break;
}
}
}
- if (!editor_data.get_edited_scene_root(tab_closing)) {
- // empty tab
- _scene_tab_closed(tab_closing);
+ if (!editor_data.get_edited_scene_root(tab_closing_idx)) {
+ // Empty tab.
+ _scene_tab_closed(tab_closing_idx);
break;
}
@@ -2547,7 +2562,7 @@ void EditorNode::_menu_option_confirm(int p_option, bool p_confirmed) {
}
case SCENE_TAB_CLOSE:
case FILE_SAVE_SCENE: {
- int scene_idx = (p_option == FILE_SAVE_SCENE) ? -1 : tab_closing;
+ int scene_idx = (p_option == FILE_SAVE_SCENE) ? -1 : tab_closing_idx;
Node *scene = editor_data.get_edited_scene_root(scene_idx);
if (scene && !scene->get_scene_file_path().is_empty()) {
if (DirAccess::exists(scene->get_scene_file_path().get_base_dir())) {
@@ -2569,7 +2584,7 @@ void EditorNode::_menu_option_confirm(int p_option, bool p_confirmed) {
[[fallthrough]];
}
case FILE_SAVE_AS_SCENE: {
- int scene_idx = (p_option == FILE_SAVE_SCENE || p_option == FILE_SAVE_AS_SCENE) ? -1 : tab_closing;
+ int scene_idx = (p_option == FILE_SAVE_SCENE || p_option == FILE_SAVE_AS_SCENE) ? -1 : tab_closing_idx;
Node *scene = editor_data.get_edited_scene_root(scene_idx);
@@ -2810,18 +2825,16 @@ void EditorNode::_menu_option_confirm(int p_option, bool p_confirmed) {
}
} break;
case RUN_USER_DATA_FOLDER: {
- // ensure_user_data_dir() to prevent the edge case: "Open User Data Folder" won't work after the project was renamed in ProjectSettingsEditor unless the project is saved
+ // Ensure_user_data_dir() to prevent the edge case: "Open User Data Folder" won't work after the project was renamed in ProjectSettingsEditor unless the project is saved.
OS::get_singleton()->ensure_user_data_dir();
OS::get_singleton()->shell_open(String("file://") + OS::get_singleton()->get_user_data_dir());
} break;
case FILE_EXPLORE_ANDROID_BUILD_TEMPLATES: {
OS::get_singleton()->shell_open("file://" + ProjectSettings::get_singleton()->get_resource_path().plus_file("android"));
} break;
- case RUN_RELOAD_CURRENT_PROJECT: {
- restart_editor();
- } break;
case FILE_QUIT:
- case RUN_PROJECT_MANAGER: {
+ case RUN_PROJECT_MANAGER:
+ case RELOAD_CURRENT_PROJECT: {
if (!p_confirmed) {
bool save_each = EDITOR_GET("interface/editor/save_each_scene_on_quit");
if (_next_unsaved_scene(!save_each) == -1) {
@@ -2829,7 +2842,13 @@ void EditorNode::_menu_option_confirm(int p_option, bool p_confirmed) {
break;
} else {
if (save_each) {
- _menu_option_confirm(p_option == FILE_QUIT ? FILE_CLOSE_ALL_AND_QUIT : FILE_CLOSE_ALL_AND_RUN_PROJECT_MANAGER, false);
+ if (p_option == RELOAD_CURRENT_PROJECT) {
+ _menu_option_confirm(FILE_CLOSE_ALL_AND_RELOAD_CURRENT_PROJECT, false);
+ } else if (p_option == FILE_QUIT) {
+ _menu_option_confirm(FILE_CLOSE_ALL_AND_QUIT, false);
+ } else {
+ _menu_option_confirm(FILE_CLOSE_ALL_AND_RUN_PROJECT_MANAGER, false);
+ }
} else {
String unsaved_scenes;
int i = _next_unsaved_scene(true, 0);
@@ -2837,9 +2856,13 @@ void EditorNode::_menu_option_confirm(int p_option, bool p_confirmed) {
unsaved_scenes += "\n " + editor_data.get_edited_scene_root(i)->get_scene_file_path();
i = _next_unsaved_scene(true, ++i);
}
-
- save_confirmation->get_ok_button()->set_text(TTR("Save & Quit"));
- save_confirmation->set_text((p_option == FILE_QUIT ? TTR("Save changes to the following scene(s) before quitting?") : TTR("Save changes to the following scene(s) before opening Project Manager?")) + unsaved_scenes);
+ if (p_option == RELOAD_CURRENT_PROJECT) {
+ save_confirmation->get_ok_button()->set_text(TTR("Save & Reload"));
+ save_confirmation->set_text(TTR("Save changes to the following scene(s) before reloading?") + unsaved_scenes);
+ } else {
+ save_confirmation->get_ok_button()->set_text(TTR("Save & Quit"));
+ save_confirmation->set_text((p_option == FILE_QUIT ? TTR("Save changes to the following scene(s) before quitting?") : TTR("Save changes to the following scene(s) before opening Project Manager?")) + unsaved_scenes);
+ }
save_confirmation->popup_centered();
}
}
@@ -2940,12 +2963,6 @@ void EditorNode::_menu_option_confirm(int p_option, bool p_confirmed) {
case HELP_SUPPORT_GODOT_DEVELOPMENT: {
OS::get_singleton()->shell_open("https://godotengine.org/donate");
} break;
-
- // case SET_VIDEO_DRIVER_SAVE_AND_RESTART: {
- // ProjectSettings::get_singleton()->set("rendering/driver/driver_name", video_driver_request);
- // save_all_scenes();
- // restart_editor();
- // } break;
case SET_RENDERING_DRIVER_SAVE_AND_RESTART: {
ProjectSettings::get_singleton()->set("rendering/driver/driver_name", rendering_driver_request);
ProjectSettings::get_singleton()->save();
@@ -2998,7 +3015,7 @@ void EditorNode::_tool_menu_option(int p_idx) {
String err = Variant::get_callable_error_text(callback, nullptr, 0, ce);
ERR_PRINT("Error calling function from tool menu: " + err);
}
- } // else it's a submenu so don't do anything.
+ } // Else it's a submenu so don't do anything.
} break;
}
}
@@ -3023,25 +3040,26 @@ int EditorNode::_next_unsaved_scene(bool p_valid_filename, int p_start) {
void EditorNode::_exit_editor(int p_exit_code) {
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
+ // Dim the editor window while it's quitting to make it clearer that it's busy.
dim_editor(true);
get_tree()->quit(p_exit_code);
}
void EditorNode::_discard_changes(const String &p_str) {
- switch (current_option) {
+ switch (current_menu_option) {
case FILE_CLOSE_ALL_AND_QUIT:
case FILE_CLOSE_ALL_AND_RUN_PROJECT_MANAGER:
+ case FILE_CLOSE_ALL_AND_RELOAD_CURRENT_PROJECT:
case FILE_CLOSE:
case FILE_CLOSE_OTHERS:
case FILE_CLOSE_RIGHT:
case FILE_CLOSE_ALL:
case SCENE_TAB_CLOSE: {
- Node *scene = editor_data.get_edited_scene_root(tab_closing);
+ Node *scene = editor_data.get_edited_scene_root(tab_closing_idx);
if (scene != nullptr) {
String scene_filename = scene->get_scene_file_path();
if (!scene_filename.is_empty()) {
@@ -3049,31 +3067,37 @@ void EditorNode::_discard_changes(const String &p_str) {
}
}
- _remove_scene(tab_closing);
+ _remove_scene(tab_closing_idx);
_update_scene_tabs();
- if (current_option == FILE_CLOSE_ALL_AND_QUIT || current_option == FILE_CLOSE_ALL_AND_RUN_PROJECT_MANAGER) {
+ if (current_menu_option == FILE_CLOSE_ALL_AND_QUIT || current_menu_option == FILE_CLOSE_ALL_AND_RUN_PROJECT_MANAGER || current_menu_option == FILE_CLOSE_ALL_AND_RELOAD_CURRENT_PROJECT) {
// If restore tabs is enabled, reopen the scene that has just been closed, so it's remembered properly.
if (bool(EDITOR_GET("interface/scene_tabs/restore_scenes_on_load"))) {
_menu_option_confirm(FILE_OPEN_PREV, true);
}
if (_next_unsaved_scene(false) == -1) {
- current_option = current_option == FILE_CLOSE_ALL_AND_QUIT ? FILE_QUIT : RUN_PROJECT_MANAGER;
+ if (current_menu_option == FILE_CLOSE_ALL_AND_RELOAD_CURRENT_PROJECT) {
+ current_menu_option = RELOAD_CURRENT_PROJECT;
+ } else if (current_menu_option == FILE_CLOSE_ALL_AND_QUIT) {
+ current_menu_option = FILE_QUIT;
+ } else {
+ current_menu_option = RUN_PROJECT_MANAGER;
+ }
_discard_changes();
} else {
- _menu_option_confirm(current_option, false);
+ _menu_option_confirm(current_menu_option, false);
}
- } else if (current_option == FILE_CLOSE_OTHERS || current_option == FILE_CLOSE_RIGHT) {
- if (editor_data.get_edited_scene_count() == 1 || (current_option == FILE_CLOSE_RIGHT && editor_data.get_edited_scene_count() <= editor_data.get_edited_scene() + 1)) {
- current_option = -1;
+ } else if (current_menu_option == FILE_CLOSE_OTHERS || current_menu_option == FILE_CLOSE_RIGHT) {
+ if (editor_data.get_edited_scene_count() == 1 || (current_menu_option == FILE_CLOSE_RIGHT && editor_data.get_edited_scene_count() <= editor_data.get_edited_scene() + 1)) {
+ current_menu_option = -1;
save_confirmation->hide();
} else {
- _menu_option_confirm(current_option, false);
+ _menu_option_confirm(current_menu_option, false);
}
- } else if (current_option == FILE_CLOSE_ALL && editor_data.get_edited_scene_count() > 0) {
- _menu_option_confirm(current_option, false);
+ } else if (current_menu_option == FILE_CLOSE_ALL && editor_data.get_edited_scene_count() > 0) {
+ _menu_option_confirm(current_menu_option, false);
} else {
- current_option = -1;
+ current_menu_option = -1;
save_confirmation->hide();
}
} break;
@@ -3095,6 +3119,9 @@ void EditorNode::_discard_changes(const String &p_str) {
Error err = OS::get_singleton()->create_instance(args);
ERR_FAIL_COND(err);
} break;
+ case RELOAD_CURRENT_PROJECT: {
+ restart_editor();
+ } break;
}
}
@@ -3129,7 +3156,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;
}
@@ -3163,9 +3190,9 @@ void EditorNode::_editor_select(int p_which) {
if (EditorSettings::get_singleton()->get("interface/editor/separate_distraction_mode")) {
if (p_which == EDITOR_SCRIPT) {
- set_distraction_free_mode(script_distraction);
+ set_distraction_free_mode(script_distraction_free);
} else {
- set_distraction_free_mode(scene_distraction);
+ set_distraction_free_mode(scene_distraction_free);
}
}
}
@@ -3245,13 +3272,13 @@ void EditorNode::remove_editor_plugin(EditorPlugin *p_editor, bool p_config_chan
}
void EditorNode::_update_addon_config() {
- if (_initializing_addons) {
+ if (_initializing_plugins) {
return;
}
Vector<String> enabled_addons;
- for (const KeyValue<String, EditorPlugin *> &E : plugin_addons) {
+ for (const KeyValue<String, EditorPlugin *> &E : addon_name_to_plugin) {
enabled_addons.push_back(E.key);
}
@@ -3265,14 +3292,14 @@ void EditorNode::_update_addon_config() {
}
void EditorNode::set_addon_plugin_enabled(const String &p_addon, bool p_enabled, bool p_config_changed) {
- ERR_FAIL_COND(p_enabled && plugin_addons.has(p_addon));
- ERR_FAIL_COND(!p_enabled && !plugin_addons.has(p_addon));
+ ERR_FAIL_COND(p_enabled && addon_name_to_plugin.has(p_addon));
+ ERR_FAIL_COND(!p_enabled && !addon_name_to_plugin.has(p_addon));
if (!p_enabled) {
- EditorPlugin *addon = plugin_addons[p_addon];
+ EditorPlugin *addon = addon_name_to_plugin[p_addon];
remove_editor_plugin(addon, p_config_changed);
- memdelete(addon); // bye
- plugin_addons.erase(p_addon);
+ memdelete(addon);
+ addon_name_to_plugin.erase(p_addon);
_update_addon_config();
return;
}
@@ -3329,14 +3356,14 @@ void EditorNode::set_addon_plugin_enabled(const String &p_addon, bool p_enabled,
EditorPlugin *ep = memnew(EditorPlugin);
ep->set_script(script);
- plugin_addons[p_addon] = ep;
+ addon_name_to_plugin[p_addon] = ep;
add_editor_plugin(ep, p_config_changed);
_update_addon_config();
}
bool EditorNode::is_addon_plugin_enabled(const String &p_addon) const {
- return plugin_addons.has(p_addon);
+ return addon_name_to_plugin.has(p_addon);
}
void EditorNode::_remove_edited_scene(bool p_change_tab) {
@@ -3363,10 +3390,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);
}
}
@@ -3380,7 +3407,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();
}
SceneTreeDock::get_singleton()->set_edited_scene(p_scene);
if (get_tree()) {
@@ -3416,7 +3443,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;
@@ -3431,7 +3458,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);
}
@@ -3440,7 +3467,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) {
@@ -3462,7 +3489,7 @@ void EditorNode::_set_main_scene_state(Dictionary p_state, Node *p_for_scene) {
SceneTreeDock::get_singleton()->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()));
@@ -3511,7 +3538,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();
}
SceneTreeDock::get_singleton()->set_edited_scene(new_scene);
@@ -3530,7 +3557,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) {
@@ -3617,7 +3644,7 @@ Error EditorNode::load_scene(const String &p_scene, bool p_ignore_broken_deps, b
}
if (!p_ignore_broken_deps && dependency_errors.has(lpath)) {
- current_option = -1;
+ current_menu_option = -1;
Vector<String> errors;
for (Set<String>::Element *E = dependency_errors[lpath].front(); E; E = E->next()) {
errors.push_back(E->get());
@@ -3632,7 +3659,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";
@@ -3643,7 +3670,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());
@@ -3652,7 +3679,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(p_set_inherited ? PackedScene::GEN_EDIT_STATE_MAIN_INHERITED : PackedScene::GEN_EDIT_STATE_MAIN);
@@ -3715,7 +3742,12 @@ void EditorNode::open_request(const String &p_path) {
}
}
- load_scene(p_path); // as it will be opened in separate tab
+ load_scene(p_path); // As it will be opened in separate tab.
+}
+
+void EditorNode::edit_foreign_resource(RES p_resource) {
+ load_scene(p_resource->get_path().get_slice("::", 0));
+ InspectorDock::get_singleton()->call_deferred("edit_resource", p_resource);
}
void EditorNode::request_instance_scene(const String &p_path) {
@@ -3727,7 +3759,7 @@ void EditorNode::request_instantiate_scenes(const Vector<String> &p_files) {
}
void EditorNode::_inherit_request(String p_file) {
- current_option = FILE_NEW_INHERITED_SCENE;
+ current_menu_option = FILE_NEW_INHERITED_SCENE;
_dialog_action(p_file);
}
@@ -3888,10 +3920,9 @@ void EditorNode::register_editor_types() {
GDREGISTER_CLASS(EditorScriptPicker);
GDREGISTER_ABSTRACT_CLASS(FileSystemDock);
+ GDREGISTER_VIRTUAL_CLASS(EditorFileSystemImportFormatSupportQuery);
- // FIXME: Is this stuff obsolete, or should it be ported to new APIs?
GDREGISTER_CLASS(EditorScenePostImport);
- //ClassDB::register_type<EditorImportExport>();
GDREGISTER_CLASS(EditorCommandPalette);
GDREGISTER_CLASS(EditorDebuggerPlugin);
@@ -3929,7 +3960,7 @@ Ref<Script> EditorNode::get_object_custom_type_base(const Object *p_object) cons
// return name;
// }
- // should probably be deprecated in 4.x
+ // TODO: Should probably be deprecated in 4.x
StringName base = script->get_instance_base_type();
if (base != StringName() && EditorNode::get_editor_data().get_custom_types().has(base)) {
const Vector<EditorData::CustomType> &types = EditorNode::get_editor_data().get_custom_types()[base];
@@ -3965,7 +3996,7 @@ StringName EditorNode::get_object_custom_type_name(const Object *p_object) const
return name;
}
- // should probably be deprecated in 4.x
+ // TODO: Should probably be deprecated in 4.x.
StringName base = base_script->get_instance_base_type();
if (base != StringName() && EditorNode::get_editor_data().get_custom_types().has(base)) {
const Vector<EditorData::CustomType> &types = EditorNode::get_editor_data().get_custom_types()[base];
@@ -4006,7 +4037,7 @@ void EditorNode::_pick_main_scene_custom_action(const String &p_custom_action_na
}
pick_main_scene->hide();
- current_option = SETTINGS_PICK_MAIN_SCENE;
+ current_menu_option = SETTINGS_PICK_MAIN_SCENE;
_dialog_action(scene->get_scene_file_path());
}
}
@@ -4029,7 +4060,7 @@ Ref<Texture2D> EditorNode::get_object_icon(const Object *p_object, const String
return icon;
}
- // should probably be deprecated in 4.x
+ // TODO: should probably be deprecated in 4.x
StringName base = base_script->get_instance_base_type();
if (base != StringName() && EditorNode::get_editor_data().get_custom_types().has(base)) {
const Vector<EditorData::CustomType> &types = EditorNode::get_editor_data().get_custom_types()[base];
@@ -4043,7 +4074,7 @@ Ref<Texture2D> EditorNode::get_object_icon(const Object *p_object, const String
}
}
- // should probably be deprecated in 4.x
+ // TODO: Should probably be deprecated in 4.x.
if (p_object->has_meta("_editor_icon")) {
return p_object->get_meta("_editor_icon");
}
@@ -4201,14 +4232,14 @@ Error EditorNode::export_preset(const String &p_preset, const String &p_path, bo
}
void EditorNode::show_accept(const String &p_text, const String &p_title) {
- current_option = -1;
+ current_menu_option = -1;
accept->get_ok_button()->set_text(p_title);
accept->set_text(p_text);
accept->popup_centered();
}
void EditorNode::show_save_accept(const String &p_text, const String &p_title) {
- current_option = -1;
+ current_menu_option = -1;
save_accept->get_ok_button()->set_text(p_title);
save_accept->set_text(p_text);
save_accept->popup_centered();
@@ -4248,7 +4279,7 @@ void EditorNode::_dock_floating_close_request(Control *p_control) {
}
void EditorNode::_dock_make_float() {
- Control *dock = dock_slot[dock_popup_selected]->get_current_tab_control();
+ Control *dock = dock_slot[dock_popup_selected_idx]->get_current_tab_control();
ERR_FAIL_COND(!dock);
Size2 borders = Size2(4, 4) * EDSCALE;
@@ -4257,7 +4288,7 @@ void EditorNode::_dock_make_float() {
Point2 dock_screen_pos = dock->get_global_position() + get_tree()->get_root()->get_position() - borders;
int dock_index = dock->get_index();
- dock_slot[dock_popup_selected]->remove_child(dock);
+ dock_slot[dock_popup_selected_idx]->remove_child(dock);
Window *window = memnew(Window);
window->set_title(dock->get_name());
@@ -4279,7 +4310,7 @@ void EditorNode::_dock_make_float() {
window->set_position(dock_screen_pos);
window->set_transient(true);
window->connect("close_requested", callable_mp(this, &EditorNode::_dock_floating_close_request), varray(dock));
- window->set_meta("dock_slot", dock_popup_selected);
+ window->set_meta("dock_slot", dock_popup_selected_idx);
window->set_meta("dock_index", dock_index);
gui_base->add_child(window);
@@ -4331,9 +4362,9 @@ void EditorNode::_dock_select_input(const Ref<InputEvent> &p_input) {
}
}
- if (nrect != dock_select_rect_over) {
+ if (nrect != dock_select_rect_over_idx) {
dock_select->update();
- dock_select_rect_over = nrect;
+ dock_select_rect_over_idx = nrect;
}
if (nrect == -1) {
@@ -4342,20 +4373,20 @@ void EditorNode::_dock_select_input(const Ref<InputEvent> &p_input) {
Ref<InputEventMouseButton> mb = me;
- if (mb.is_valid() && mb->get_button_index() == MouseButton::LEFT && mb->is_pressed() && dock_popup_selected != nrect) {
- Control *dock = dock_slot[dock_popup_selected]->get_current_tab_control();
+ if (mb.is_valid() && mb->get_button_index() == MouseButton::LEFT && mb->is_pressed() && dock_popup_selected_idx != nrect) {
+ Control *dock = dock_slot[dock_popup_selected_idx]->get_current_tab_control();
if (dock) {
- dock_slot[dock_popup_selected]->remove_child(dock);
+ dock_slot[dock_popup_selected_idx]->remove_child(dock);
}
- if (dock_slot[dock_popup_selected]->get_tab_count() == 0) {
- dock_slot[dock_popup_selected]->hide();
+ if (dock_slot[dock_popup_selected_idx]->get_tab_count() == 0) {
+ dock_slot[dock_popup_selected_idx]->hide();
} else {
- dock_slot[dock_popup_selected]->set_current_tab(0);
+ dock_slot[dock_popup_selected_idx]->set_current_tab(0);
}
dock_slot[nrect]->add_child(dock);
- dock_popup_selected = nrect;
+ dock_popup_selected_idx = nrect;
dock_slot[nrect]->set_current_tab(dock_slot[nrect]->get_tab_count() - 1);
dock_slot[nrect]->show();
dock_select->update();
@@ -4369,38 +4400,38 @@ void EditorNode::_dock_select_input(const Ref<InputEvent> &p_input) {
}
void EditorNode::_dock_popup_exit() {
- dock_select_rect_over = -1;
+ dock_select_rect_over_idx = -1;
dock_select->update();
}
void EditorNode::_dock_pre_popup(int p_which) {
- dock_popup_selected = p_which;
+ dock_popup_selected_idx = p_which;
}
void EditorNode::_dock_move_left() {
- if (dock_popup_selected < 0 || dock_popup_selected >= DOCK_SLOT_MAX) {
+ if (dock_popup_selected_idx < 0 || dock_popup_selected_idx >= DOCK_SLOT_MAX) {
return;
}
- Control *current = dock_slot[dock_popup_selected]->get_tab_control(dock_slot[dock_popup_selected]->get_current_tab());
- Control *prev = dock_slot[dock_popup_selected]->get_tab_control(dock_slot[dock_popup_selected]->get_current_tab() - 1);
+ Control *current = dock_slot[dock_popup_selected_idx]->get_tab_control(dock_slot[dock_popup_selected_idx]->get_current_tab());
+ Control *prev = dock_slot[dock_popup_selected_idx]->get_tab_control(dock_slot[dock_popup_selected_idx]->get_current_tab() - 1);
if (!current || !prev) {
return;
}
- dock_slot[dock_popup_selected]->move_child(current, prev->get_index());
- dock_slot[dock_popup_selected]->set_current_tab(dock_slot[dock_popup_selected]->get_current_tab() - 1);
+ dock_slot[dock_popup_selected_idx]->move_child(current, prev->get_index());
+ dock_slot[dock_popup_selected_idx]->set_current_tab(dock_slot[dock_popup_selected_idx]->get_current_tab() - 1);
dock_select->update();
_edit_current();
_save_docks();
}
void EditorNode::_dock_move_right() {
- Control *current = dock_slot[dock_popup_selected]->get_tab_control(dock_slot[dock_popup_selected]->get_current_tab());
- Control *next = dock_slot[dock_popup_selected]->get_tab_control(dock_slot[dock_popup_selected]->get_current_tab() + 1);
+ Control *current = dock_slot[dock_popup_selected_idx]->get_tab_control(dock_slot[dock_popup_selected_idx]->get_current_tab());
+ Control *next = dock_slot[dock_popup_selected_idx]->get_tab_control(dock_slot[dock_popup_selected_idx]->get_current_tab() + 1);
if (!current || !next) {
return;
}
- dock_slot[dock_popup_selected]->move_child(next, current->get_index());
- dock_slot[dock_popup_selected]->set_current_tab(dock_slot[dock_popup_selected]->get_current_tab() + 1);
+ dock_slot[dock_popup_selected_idx]->move_child(next, current->get_index());
+ dock_slot[dock_popup_selected_idx]->set_current_tab(dock_slot[dock_popup_selected_idx]->get_current_tab() + 1);
dock_select->update();
_edit_current();
_save_docks();
@@ -4428,9 +4459,9 @@ void EditorNode::_dock_select_draw() {
dock_tab_move_left->set_disabled(true);
dock_tab_move_right->set_disabled(true);
- if (dock_popup_selected != -1 && dock_slot[dock_popup_selected]->get_tab_count()) {
- dock_tab_move_left->set_disabled(dock_slot[dock_popup_selected]->get_current_tab() == 0);
- dock_tab_move_right->set_disabled(dock_slot[dock_popup_selected]->get_current_tab() >= dock_slot[dock_popup_selected]->get_tab_count() - 1);
+ if (dock_popup_selected_idx != -1 && dock_slot[dock_popup_selected_idx]->get_tab_count()) {
+ dock_tab_move_left->set_disabled(dock_slot[dock_popup_selected_idx]->get_current_tab() == 0);
+ dock_tab_move_right->set_disabled(dock_slot[dock_popup_selected_idx]->get_current_tab() >= dock_slot[dock_popup_selected_idx]->get_tab_count() - 1);
}
for (int i = 0; i < DOCK_SLOT_MAX; i++) {
@@ -4473,7 +4504,7 @@ void EditorNode::_dock_select_draw() {
r.position += Vector2(2, 5);
r.size -= Vector2(4, 7);
- if (i == dock_select_rect_over) {
+ if (i == dock_select_rect_over_idx) {
dock_select->draw_rect(r, used_selected);
} else if (dock_slot[i]->get_tab_count() == 0) {
dock_select->draw_rect(r, unused);
@@ -4484,7 +4515,7 @@ void EditorNode::_dock_select_draw() {
for (int j = 0; j < MIN(3, dock_slot[i]->get_tab_count()); j++) {
int xofs = (r.size.width / 3) * j;
Color c = used;
- if (i == dock_popup_selected && (dock_slot[i]->get_current_tab() > 3 || dock_slot[i]->get_current_tab() == j)) {
+ if (i == dock_popup_selected_idx && (dock_slot[i]->get_current_tab() > 3 || dock_slot[i]->get_current_tab() == j)) {
c = tab_selected;
}
dock_select->draw_rect(Rect2(2 + ofs.x + xofs, ofs.y, r.size.width / 3 - 1, 3), c);
@@ -4494,7 +4525,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();
@@ -4565,7 +4596,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);
}
@@ -4628,7 +4659,7 @@ void EditorNode::_update_dock_slots_visibility() {
}
void EditorNode::_dock_tab_changed(int p_tab) {
- // update visibility but don't set current tab
+ // Update visibility but don't set current tab.
if (!docks_visible) {
for (int i = 0; i < DOCK_SLOT_MAX; i++) {
@@ -4678,7 +4709,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
+ // FIXME: Find it, in a horribly inefficient way.
int atidx = -1;
Control *node = nullptr;
for (int k = 0; k < DOCK_SLOT_MAX; k++) {
@@ -4692,7 +4723,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;
}
@@ -4808,11 +4839,11 @@ 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.is_empty()) {
- current_option = -1;
+ current_menu_option = -1;
pick_main_scene->set_text(TTR("No main scene has ever been defined, select one?\nYou can change it later in \"Project Settings\" under the 'application' category."));
pick_main_scene->popup_centered();
@@ -4827,14 +4858,14 @@ bool EditorNode::ensure_main_scene(bool p_from_native) {
}
if (!FileAccess::exists(main_scene)) {
- current_option = -1;
+ current_menu_option = -1;
pick_main_scene->set_text(vformat(TTR("Selected scene '%s' does not exist, select a valid one?\nYou can change it later in \"Project Settings\" under the 'application' category."), main_scene));
pick_main_scene->popup_centered();
return false;
}
if (ResourceLoader::get_resource_type(main_scene) != "PackedScene") {
- current_option = -1;
+ current_menu_option = -1;
pick_main_scene->set_text(vformat(TTR("Selected scene '%s' is not a scene file, select a valid one?\nYou can change it later in \"Project Settings\" under the 'application' category."), main_scene));
pick_main_scene->popup_centered();
return false;
@@ -4929,7 +4960,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;
@@ -4948,14 +4979,14 @@ void EditorNode::_update_layouts_menu() {
void EditorNode::_layout_menu_option(int p_id) {
switch (p_id) {
case SETTINGS_LAYOUT_SAVE: {
- current_option = p_id;
+ current_menu_option = p_id;
layout_dialog->set_title(TTR("Save Layout"));
layout_dialog->get_ok_button()->set_text(TTR("Save"));
layout_dialog->popup_centered();
layout_dialog->set_name_line_enabled(true);
} break;
case SETTINGS_LAYOUT_DELETE: {
- current_option = p_id;
+ current_menu_option = p_id;
layout_dialog->set_title(TTR("Delete Layout"));
layout_dialog->get_ok_button()->set_text(TTR("Delete"));
layout_dialog->popup_centered();
@@ -4970,7 +5001,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));
@@ -4987,8 +5018,8 @@ void EditorNode::_scene_tab_script_edited(int p_tab) {
}
void EditorNode::_scene_tab_closed(int p_tab, int option) {
- current_option = option;
- tab_closing = p_tab;
+ current_menu_option = option;
+ tab_closing_idx = p_tab;
Node *scene = editor_data.get_edited_scene_root(p_tab);
if (!scene) {
_discard_changes();
@@ -5044,7 +5075,7 @@ void EditorNode::_scene_tab_input(const Ref<InputEvent> &p_input) {
}
}
if (mb->get_button_index() == MouseButton::RIGHT && mb->is_pressed()) {
- // context menu
+ // Context menu.
scene_tabs_context_menu->clear();
scene_tabs_context_menu->reset_size();
@@ -5112,7 +5143,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);
@@ -5214,7 +5245,8 @@ void EditorNode::_bottom_panel_switch(bool p_enable, int p_idx) {
bottom_panel_items[i].button->set_pressed(i == p_idx);
bottom_panel_items[i].control->set_visible(i == p_idx);
}
- if (EditorDebuggerNode::get_singleton() == bottom_panel_items[p_idx].control) { // this is the debug panel which uses tabs, so the top section should be smaller
+ if (EditorDebuggerNode::get_singleton() == bottom_panel_items[p_idx].control) {
+ // This is the debug panel which uses tabs, so the top section should be smaller.
bottom_panel->add_theme_style_override("panel", gui_base->get_theme_stylebox(SNAME("BottomPanelDebuggerOverride"), SNAME("EditorStyles")));
} else {
bottom_panel->add_theme_style_override("panel", gui_base->get_theme_stylebox(SNAME("panel"), SNAME("TabContainer")));
@@ -5259,11 +5291,11 @@ void EditorNode::_toggle_distraction_free_mode() {
}
if (screen == EDITOR_SCRIPT) {
- script_distraction = !script_distraction;
- set_distraction_free_mode(script_distraction);
+ script_distraction_free = !script_distraction_free;
+ set_distraction_free_mode(script_distraction_free);
} else {
- scene_distraction = !scene_distraction;
- set_distraction_free_mode(scene_distraction);
+ scene_distraction_free = !scene_distraction_free;
+ set_distraction_free_mode(scene_distraction_free);
}
} else {
set_distraction_free_mode(distraction_free->is_pressed());
@@ -5315,7 +5347,7 @@ 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();
@@ -5337,7 +5369,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()));
@@ -5391,7 +5423,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";
@@ -5507,7 +5539,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;
@@ -5518,17 +5550,15 @@ void EditorNode::reload_scene(const String &p_path) {
_set_scene_metadata(p_path);
}
- // remove scene
+ // Reload scene.
_remove_scene(scene_idx, false);
-
- // 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);
}
@@ -5627,9 +5657,9 @@ void EditorNode::_update_rendering_driver_color() {
void EditorNode::_rendering_driver_selected(int p_which) {
String driver = rendering_driver->get_item_metadata(p_which);
- String current = ""; // OS::get_singleton()->get_video_driver_name(OS::get_singleton()->get_current_video_driver());
+ String current_driver = OS::get_singleton()->get_current_rendering_driver_name();
- if (driver == current) {
+ if (driver == current_driver) {
return;
}
@@ -5703,6 +5733,7 @@ void EditorNode::_bind_methods() {
ClassDB::bind_method("_get_scene_metadata", &EditorNode::_get_scene_metadata);
ClassDB::bind_method("set_edited_scene", &EditorNode::set_edited_scene);
ClassDB::bind_method("open_request", &EditorNode::open_request);
+ ClassDB::bind_method("edit_foreign_resource", &EditorNode::edit_foreign_resource);
ClassDB::bind_method("_close_messages", &EditorNode::_close_messages);
ClassDB::bind_method("_show_messages", &EditorNode::_show_messages);
@@ -5809,20 +5840,25 @@ EditorNode::EditorNode() {
EditorPropertyNameProcessor *epnp = memnew(EditorPropertyNameProcessor);
add_child(epnp);
+ PortableCompressedTexture2D::set_keep_all_compressed_buffers(true);
Input::get_singleton()->set_use_accumulated_input(true);
Resource::_get_local_scene_func = _resource_get_edited_scene;
RenderingServer::get_singleton()->set_debug_generate_wireframes(true);
- NavigationServer3D::get_singleton()->set_active(false); // no nav by default if editor
+ // No navigation server by default if in editor.
+ NavigationServer3D::get_singleton()->set_active(false);
- PhysicsServer3D::get_singleton()->set_active(false); // no physics by default if editor
- PhysicsServer2D::get_singleton()->set_active(false); // no physics by default if editor
- ScriptServer::set_scripting_enabled(false); // no scripting by default if editor
+ // No physics by default if in editor.
+ PhysicsServer3D::get_singleton()->set_active(false);
+ PhysicsServer2D::get_singleton()->set_active(false);
- EditorHelp::generate_doc(); // before any editor classes are created
+ // No scripting by default if in editor.
+ ScriptServer::set_scripting_enabled(false);
+
+ 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(); // Using no remaps if in editor.
ResourceLoader::clear_path_remaps();
Input *id = Input::get_singleton();
@@ -5836,8 +5872,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, disable emulation just in case.
+ id->set_emulate_touch_from_mouse(false);
}
DisplayServer::get_singleton()->cursor_set_custom_image(RES());
}
@@ -5846,7 +5882,7 @@ EditorNode::EditorNode() {
last_checked_version = 0;
TranslationServer::get_singleton()->set_enabled(false);
- // load settings
+ // Load settings.
if (!EditorSettings::get_singleton()) {
EditorSettings::create();
}
@@ -5885,7 +5921,7 @@ EditorNode::EditorNode() {
}
}
- // Define a minimum window size to prevent UI elements from overlapping or being cut off
+ // Define a minimum window size to prevent UI elements from overlapping or being cut off.
DisplayServer::get_singleton()->window_set_min_size(Size2(1024, 600) * EDSCALE);
ResourceLoader::set_abort_on_missing_resources(false);
@@ -5895,7 +5931,8 @@ 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);
@@ -5998,7 +6035,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;
@@ -6010,20 +6047,20 @@ EditorNode::EditorNode() {
editor_export = memnew(EditorExport);
add_child(editor_export);
- // Exporters might need the theme
+ // Exporters might need the theme.
theme = create_custom_theme();
register_exporters();
ClassDB::set_class_enabled("RootMotionView", true);
- // defs here, use EDITOR_GET in logic
EDITOR_DEF("interface/editor/save_on_focus_loss", false);
EDITOR_DEF("interface/editor/show_update_spinner", false);
EDITOR_DEF("interface/editor/update_continuously", false);
- EDITOR_DEF("interface/editor/translate_properties", true);
+ EDITOR_DEF("interface/editor/localize_settings", true);
EDITOR_DEF_RST("interface/scene_tabs/restore_scenes_on_load", true);
- EDITOR_DEF_RST("interface/inspector/capitalize_properties", true);
+ EDITOR_DEF_RST("interface/inspector/default_property_name_style", EditorPropertyNameProcessor::STYLE_CAPITALIZED);
+ EditorSettings::get_singleton()->add_property_hint(PropertyInfo(Variant::INT, "interface/inspector/default_property_name_style", PROPERTY_HINT_ENUM, "Raw,Capitalized,Localized"));
EDITOR_DEF_RST("interface/inspector/default_float_step", 0.001);
EditorSettings::get_singleton()->add_property_hint(PropertyInfo(Variant::FLOAT, "interface/inspector/default_float_step", PROPERTY_HINT_RANGE, "0,1,0"));
EDITOR_DEF_RST("interface/inspector/disable_folding", false);
@@ -6061,7 +6098,7 @@ EditorNode::EditorNode() {
progress_dialog = memnew(ProgressDialog);
gui_base->add_child(progress_dialog);
- // take up all screen
+ // Take up all screen.
gui_base->set_anchor(SIDE_RIGHT, Control::ANCHOR_END);
gui_base->set_anchor(SIDE_BOTTOM, Control::ANCHOR_END);
gui_base->set_end(Point2(0, 0));
@@ -6123,7 +6160,7 @@ EditorNode::EditorNode() {
dock_slot[DOCK_SLOT_RIGHT_BR] = memnew(TabContainer);
right_r_vsplit->add_child(dock_slot[DOCK_SLOT_RIGHT_BR]);
- // Store them for easier access
+ // Store them for easier access.
vsplits.push_back(left_l_vsplit);
vsplits.push_back(left_r_vsplit);
vsplits.push_back(right_l_vsplit);
@@ -6192,8 +6229,9 @@ EditorNode::EditorNode() {
dock_vb->add_child(dock_float);
dock_select_popup->reset_size();
- dock_select_rect_over = -1;
- dock_popup_selected = -1;
+ dock_select_rect_over_idx = -1;
+ dock_popup_selected_idx = -1;
+
for (int i = 0; i < DOCK_SLOT_MAX; i++) {
dock_slot[i]->set_custom_minimum_size(Size2(170, 0) * EDSCALE);
dock_slot[i]->set_v_size_flags(Control::SIZE_EXPAND_FILL);
@@ -6460,7 +6498,7 @@ EditorNode::EditorNode() {
tool_menu->add_item(TTR("Orphan Resource Explorer..."), TOOLS_ORPHAN_RESOURCES);
p->add_separator();
- p->add_shortcut(ED_SHORTCUT("editor/reload_current_project", TTR("Reload Current Project")), RUN_RELOAD_CURRENT_PROJECT);
+ p->add_shortcut(ED_SHORTCUT("editor/reload_current_project", TTR("Reload Current Project")), RELOAD_CURRENT_PROJECT);
ED_SHORTCUT_AND_COMMAND("editor/quit_to_project_list", TTR("Quit to Project List"), KeyModifierMask::CMD + KeyModifierMask::SHIFT + Key::Q);
ED_SHORTCUT_OVERRIDE("editor/quit_to_project_list", "macos", KeyModifierMask::SHIFT + KeyModifierMask::ALT + Key::Q);
p->add_shortcut(ED_GET_SHORTCUT("editor/quit_to_project_list"), RUN_PROJECT_MANAGER, true);
@@ -6470,7 +6508,7 @@ EditorNode::EditorNode() {
main_editor_button_vb = memnew(HBoxContainer);
menu_hb->add_child(main_editor_button_vb);
- // Options are added and handled by DebuggerEditorPlugin
+ // Options are added and handled by DebuggerEditorPlugin.
debug_menu = memnew(MenuButton);
debug_menu->set_flat(false);
debug_menu->set_switch_on_hover(true);
@@ -6515,10 +6553,10 @@ EditorNode::EditorNode() {
p->add_separator();
if (OS::get_singleton()->get_data_path() == OS::get_singleton()->get_config_path()) {
- // Configuration and data folders are located in the same place (Windows/macos)
+ // Configuration and data folders are located in the same place (Windows/MacOS).
p->add_item(TTR("Open Editor Data/Settings Folder"), SETTINGS_EDITOR_DATA_FOLDER);
} else {
- // Separate configuration and data folders (Linux)
+ // Separate configuration and data folders (Linux).
p->add_item(TTR("Open Editor Data Folder"), SETTINGS_EDITOR_DATA_FOLDER);
p->add_item(TTR("Open Editor Settings Folder"), SETTINGS_EDITOR_CONFIG_FOLDER);
}
@@ -6527,7 +6565,6 @@ EditorNode::EditorNode() {
p->add_item(TTR("Manage Editor Features..."), SETTINGS_MANAGE_FEATURE_PROFILES);
p->add_item(TTR("Manage Export Templates..."), SETTINGS_MANAGE_EXPORT_TEMPLATES);
- // Help Menu
help_menu = memnew(MenuButton);
help_menu->set_flat(false);
help_menu->set_switch_on_hover(true);
@@ -6692,7 +6729,7 @@ EditorNode::EditorNode() {
p->add_item(TTR("Hide Update Spinner"), SETTINGS_UPDATE_SPINNER_HIDE);
_update_update_spinner();
- // Instantiate and place editor docks
+ // Instantiate and place editor docks.
memnew(SceneTreeDock(scene_root, editor_selection, editor_data));
memnew(InspectorDock(editor_data));
@@ -6704,27 +6741,27 @@ EditorNode::EditorNode() {
filesystem_dock->connect("instance", callable_mp(this, &EditorNode::_instantiate_request));
filesystem_dock->connect("display_mode_changed", callable_mp(this, &EditorNode::_save_docks));
- // Scene: Top left
+ // Scene: Top left.
dock_slot[DOCK_SLOT_LEFT_UR]->add_child(SceneTreeDock::get_singleton());
dock_slot[DOCK_SLOT_LEFT_UR]->set_tab_title(dock_slot[DOCK_SLOT_LEFT_UR]->get_tab_idx_from_control(SceneTreeDock::get_singleton()), TTR("Scene"));
- // Import: Top left, behind Scene
+ // Import: Top left, behind Scene.
dock_slot[DOCK_SLOT_LEFT_UR]->add_child(ImportDock::get_singleton());
dock_slot[DOCK_SLOT_LEFT_UR]->set_tab_title(dock_slot[DOCK_SLOT_LEFT_UR]->get_tab_idx_from_control(ImportDock::get_singleton()), TTR("Import"));
- // FileSystem: Bottom left
+ // FileSystem: Bottom left.
dock_slot[DOCK_SLOT_LEFT_BR]->add_child(FileSystemDock::get_singleton());
dock_slot[DOCK_SLOT_LEFT_BR]->set_tab_title(dock_slot[DOCK_SLOT_LEFT_BR]->get_tab_idx_from_control(FileSystemDock::get_singleton()), TTR("FileSystem"));
- // Inspector: Full height right
+ // Inspector: Full height right.
dock_slot[DOCK_SLOT_RIGHT_UL]->add_child(InspectorDock::get_singleton());
dock_slot[DOCK_SLOT_RIGHT_UL]->set_tab_title(dock_slot[DOCK_SLOT_RIGHT_UL]->get_tab_idx_from_control(InspectorDock::get_singleton()), TTR("Inspector"));
- // Node: Full height right, behind Inspector
+ // Node: Full height right, behind Inspector.
dock_slot[DOCK_SLOT_RIGHT_UL]->add_child(NodeDock::get_singleton());
dock_slot[DOCK_SLOT_RIGHT_UL]->set_tab_title(dock_slot[DOCK_SLOT_RIGHT_UL]->get_tab_idx_from_control(NodeDock::get_singleton()), TTR("Node"));
- // Hide unused dock slots and vsplits
+ // Hide unused dock slots and vsplits.
dock_slot[DOCK_SLOT_LEFT_UL]->hide();
dock_slot[DOCK_SLOT_LEFT_BL]->hide();
dock_slot[DOCK_SLOT_RIGHT_BL]->hide();
@@ -6733,16 +6770,16 @@ EditorNode::EditorNode() {
left_l_vsplit->hide();
right_r_vsplit->hide();
- // Add some offsets to left_r and main hsplits to make LEFT_R and RIGHT_L docks wider than minsize
+ // Add some offsets to left_r and main hsplits to make LEFT_R and RIGHT_L docks wider than minsize.
left_r_hsplit->set_split_offset(70 * EDSCALE);
main_hsplit->set_split_offset(-70 * EDSCALE);
- // Define corresponding default layout
+ // Define corresponding default layout.
const String docks_section = "docks";
overridden_default_layout = -1;
default_layout.instantiate();
- // Dock numbers are based on DockSlot enum value + 1
+ // Dock numbers are based on DockSlot enum value + 1.
default_layout->set_value(docks_section, "dock_3", "Scene,Import");
default_layout->set_value(docks_section, "dock_4", "FileSystem");
default_layout->set_value(docks_section, "dock_5", "Inspector,Node");
@@ -6757,7 +6794,7 @@ EditorNode::EditorNode() {
_update_layouts_menu();
- // Bottom panels
+ // Bottom panels.
bottom_panel = memnew(PanelContainer);
bottom_panel->add_theme_style_override("panel", gui_base->get_theme_stylebox(SNAME("panel"), SNAME("TabContainer")));
@@ -6793,7 +6830,7 @@ EditorNode::EditorNode() {
}
// Set the text to copy in metadata as it slightly differs from the button's text.
version_btn->set_meta(META_TEXT_TO_COPY, "v" VERSION_FULL_BUILD + hash);
- // Fade out the version label to be less prominent, but still readable
+ // Fade out the version label to be less prominent, but still readable.
version_btn->set_self_modulate(Color(1, 1, 1, 0.65));
version_btn->set_underline_mode(LinkButton::UNDERLINE_MODE_ON_HOVER);
version_btn->set_tooltip(TTR("Click to copy."));
@@ -6916,8 +6953,8 @@ EditorNode::EditorNode() {
file->connect("file_selected", callable_mp(this, &EditorNode::_dialog_action));
file_templates->connect("file_selected", callable_mp(this, &EditorNode::_dialog_action));
- preview_gen = memnew(AudioStreamPreviewGenerator);
- add_child(preview_gen);
+ audio_preview_gen = memnew(AudioStreamPreviewGenerator);
+ add_child(audio_preview_gen);
add_editor_plugin(memnew(DebuggerEditorPlugin(debug_menu)));
add_editor_plugin(memnew(DebugAdapterServer()));
@@ -6952,7 +6989,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()) {
@@ -6961,12 +6998,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(memnew(ReplicationEditorPlugin));
@@ -7201,7 +7238,8 @@ EditorNode::EditorNode() {
screenshot_timer->set_owner(get_owner());
String exec = OS::get_singleton()->get_executable_path();
- EditorSettings::get_singleton()->set_project_metadata("editor_metadata", "executable_path", exec); // Save editor executable path for third-party tools
+ // Save editor executable path for third-party tools.
+ EditorSettings::get_singleton()->set_project_metadata("editor_metadata", "executable_path", exec);
}
EditorNode::~EditorNode() {
diff --git a/editor/editor_node.h b/editor/editor_node.h
index 0b6dbaec49..7d24cfe758 100644
--- a/editor/editor_node.h
+++ b/editor/editor_node.h
@@ -112,6 +112,13 @@ public:
DOCK_SLOT_MAX
};
+ enum EditorTable {
+ EDITOR_2D = 0,
+ EDITOR_3D,
+ EDITOR_SCRIPT,
+ EDITOR_ASSETLIB
+ };
+
struct ExecuteThreadArgs {
String path;
List<String> args;
@@ -123,10 +130,6 @@ public:
};
private:
- enum {
- HISTORY_SIZE = 64
- };
-
enum MenuOptions {
FILE_NEW_SCENE,
FILE_NEW_INHERITED_SCENE,
@@ -153,6 +156,7 @@ private:
FILE_CLOSE_ALL,
FILE_CLOSE_ALL_AND_QUIT,
FILE_CLOSE_ALL_AND_RUN_PROJECT_MANAGER,
+ FILE_CLOSE_ALL_AND_RELOAD_CURRENT_PROJECT,
FILE_QUIT,
FILE_EXTERNAL_OPEN_SCENE,
EDIT_UNDO,
@@ -169,7 +173,7 @@ private:
RUN_PLAY_CUSTOM_SCENE,
RUN_SETTINGS,
RUN_USER_DATA_FOLDER,
- RUN_RELOAD_CURRENT_PROJECT,
+ RELOAD_CURRENT_PROJECT,
RUN_PROJECT_MANAGER,
RUN_VCS_METADATA,
RUN_VCS_SETTINGS,
@@ -217,13 +221,59 @@ private:
TOOL_MENU_BASE = 1000
};
+ enum {
+ MAX_INIT_CALLBACKS = 128,
+ MAX_BUILD_CALLBACKS = 128
+ };
+
enum ScriptNameCasing {
SCENE_NAME_CASING_AUTO,
SCENE_NAME_CASING_PASCAL_CASE,
SCENE_NAME_CASING_SNAKE_CASE
};
- SubViewport *scene_root; // root of the scene being edited
+ struct BottomPanelItem {
+ String name;
+ Control *control = nullptr;
+ Button *button = nullptr;
+ };
+
+ struct ExportDefer {
+ String preset;
+ String path;
+ bool debug = false;
+ bool pack_only = false;
+ } export_defer;
+
+ static EditorNode *singleton;
+
+ EditorData editor_data;
+ EditorFolding editor_folding;
+ EditorRun editor_run;
+ EditorSelectionHistory editor_history;
+
+ EditorCommandPalette *command_palette = nullptr;
+ EditorExport *editor_export = nullptr;
+ EditorInterface *editor_interface = nullptr;
+ EditorLog *log = nullptr;
+ EditorNativeShaderSourceVisualizer *native_shader_source_visualizer = nullptr;
+ EditorPlugin *editor_plugin_screen = nullptr;
+ EditorPluginList *editor_plugins_force_input_forwarding = nullptr;
+ EditorPluginList *editor_plugins_force_over = nullptr;
+ EditorPluginList *editor_plugins_over = nullptr;
+ EditorQuickOpen *quick_open = nullptr;
+ EditorQuickOpen *quick_run = nullptr;
+ EditorResourcePreview *resource_preview = nullptr;
+ EditorRunNative *run_native = nullptr;
+ EditorSelection *editor_selection = nullptr;
+ EditorSettingsDialog *editor_settings_dialog = nullptr;
+
+ ProjectExportDialog *project_export = nullptr;
+ ProjectSettingsEditor *project_settings_editor = nullptr;
+
+ Vector<EditorPlugin *> editor_plugins;
+ bool _initializing_plugins = false;
+ Map<String, EditorPlugin *> addon_name_to_plugin;
PanelContainer *scene_root_parent;
Control *theme_base;
@@ -235,11 +285,8 @@ private:
int rendering_driver_current;
String rendering_driver_request;
- void _rendering_driver_selected(int);
- void _update_rendering_driver_color();
-
- // Split containers
+ // Split containers.
HSplitContainer *left_l_hsplit;
VSplitContainer *left_l_vsplit;
HSplitContainer *left_r_hsplit;
@@ -248,20 +295,17 @@ private:
HSplitContainer *right_hsplit;
VSplitContainer *right_l_vsplit;
VSplitContainer *right_r_vsplit;
-
VSplitContainer *center_split;
-
- // To access those easily by index
+ // To access those easily by index.
Vector<VSplitContainer *> vsplits;
Vector<HSplitContainer *> hsplits;
- // Main tabs
-
+ // Main tabs.
TabBar *scene_tabs;
PopupMenu *scene_tabs_context_menu;
Panel *tab_preview_panel;
TextureRect *tab_preview;
- int tab_closing;
+ int tab_closing_idx;
bool exiting = false;
bool dimmed = false;
@@ -303,7 +347,10 @@ private:
Ref<Theme> theme;
PopupMenu *recent_scenes;
- EditorRunNative *run_native;
+ String _recent_scene;
+ List<String> previous_scenes;
+ String defer_load_scene;
+ Node *_last_instantiated_scene;
ConfirmationDialog *confirmation;
ConfirmationDialog *save_confirmation;
@@ -324,11 +371,6 @@ private:
ConfirmationDialog *install_android_build_template;
ConfirmationDialog *remove_android_build_template;
- EditorSettingsDialog *editor_settings_dialog;
- ProjectSettingsEditor *project_settings_editor;
- bool settings_changed = true; // make it update settings on first frame
- void _update_from_settings();
-
PopupMenu *vcs_actions_menu;
EditorFileDialog *file;
ExportTemplateManager *export_template_manager;
@@ -342,26 +384,16 @@ private:
String current_path;
MenuButton *update_spinner;
- EditorNativeShaderSourceVisualizer *native_shader_source_visualizer;
-
- String defer_load_scene;
- Node *_last_instantiated_scene;
-
- EditorLog *log;
- CenterContainer *tabs_center;
- EditorQuickOpen *quick_open;
- EditorQuickOpen *quick_run;
- EditorCommandPalette *command_palette;
-
HBoxContainer *main_editor_button_vb;
Vector<Button *> main_editor_buttons;
Vector<EditorPlugin *> editor_table;
- AudioStreamPreviewGenerator *preview_gen;
+ AudioStreamPreviewGenerator *audio_preview_gen;
ProgressDialog *progress_dialog;
BackgroundProgress *progress_hb;
DependencyErrorDialog *dependency_error;
+ Map<String, Set<String>> dependency_errors;
DependencyEditor *dependency_fixer;
OrphanResourcesDialog *orphan_resources;
ConfirmationDialog *open_imported;
@@ -370,91 +402,110 @@ private:
Vector<Control *> floating_docks;
- TabContainer *dock_slot[DOCK_SLOT_MAX];
- Rect2 dock_select_rect[DOCK_SLOT_MAX];
- int dock_select_rect_over;
- PopupPanel *dock_select_popup;
- Control *dock_select;
Button *dock_float;
Button *dock_tab_move_left;
Button *dock_tab_move_right;
- int dock_popup_selected;
+ Control *dock_select;
+ PopupPanel *dock_select_popup;
+ Rect2 dock_select_rect[DOCK_SLOT_MAX];
+ TabContainer *dock_slot[DOCK_SLOT_MAX];
Timer *dock_drag_timer;
bool docks_visible = true;
+ int dock_popup_selected_idx;
+ int dock_select_rect_over_idx;
HBoxContainer *tabbar_container;
Button *distraction_free;
Button *scene_tab_add;
Control *scene_tab_add_ph;
- bool scene_distraction = false;
- bool script_distraction = false;
-
- String _tmp_import_path;
+ Vector<BottomPanelItem> bottom_panel_items;
+ PanelContainer *bottom_panel;
+ HBoxContainer *bottom_panel_hb;
+ HBoxContainer *bottom_panel_hb_editors;
+ VBoxContainer *bottom_panel_vb;
+ EditorToaster *editor_toaster;
+ LinkButton *version_btn;
+ Button *bottom_panel_raise;
- EditorExport *editor_export;
+ Tree *disk_changed_list;
+ ConfirmationDialog *disk_changed;
- Object *current;
- Ref<Resource> saving_resource;
+ bool scene_distraction_free = false;
+ bool script_distraction_free = false;
bool _playing_edited = false;
- String run_custom_filename;
- bool reference_resource_mem = true;
- uint64_t saved_version;
- uint64_t last_checked_version;
- bool unsaved_cache = true;
- String open_navigate;
bool changing_scene = false;
+ bool cmdline_export_mode = false;
+ bool convert_old = false;
+ bool immediate_dialog_confirmed = false;
+ bool opening_prev = false;
+ bool restoring_scenes = false;
+ bool settings_changed = true; // Make it update settings on first frame.
+ bool unsaved_cache = true;
bool waiting_for_first_scan = true;
+ int current_menu_option;
+
+ SubViewport *scene_root; // Root of the scene being edited.
+ Object *current;
+
+ Ref<Resource> saving_resource;
+
uint64_t update_spinner_step_msec;
uint64_t update_spinner_step_frame;
int update_spinner_step;
- Vector<EditorPlugin *> editor_plugins;
- EditorPlugin *editor_plugin_screen;
- EditorPluginList *editor_plugins_over;
- EditorPluginList *editor_plugins_force_over;
- EditorPluginList *editor_plugins_force_input_forwarding;
+ String _tmp_import_path;
+ String external_file;
+ String open_navigate;
+ String run_custom_filename;
- EditorHistory editor_history;
- EditorData editor_data;
- EditorRun editor_run;
- EditorSelection *editor_selection;
- ProjectExportDialog *project_export;
- EditorResourcePreview *resource_preview;
- EditorFolding editor_folding;
+ uint64_t saved_version;
+ uint64_t last_checked_version;
DynamicFontImportSettings *fontdata_import_settings;
SceneImportSettings *scene_import_settings;
- struct BottomPanelItem {
- String name;
- Control *control = nullptr;
- Button *button = nullptr;
- };
- Vector<BottomPanelItem> bottom_panel_items;
+ String import_reload_fn;
- PanelContainer *bottom_panel;
- HBoxContainer *bottom_panel_hb;
- HBoxContainer *bottom_panel_hb_editors;
- VBoxContainer *bottom_panel_vb;
- EditorToaster *editor_toaster;
- LinkButton *version_btn;
- Button *bottom_panel_raise;
+ Set<String> textfile_extensions;
+ Set<FileDialog *> file_dialogs;
+ Set<EditorFileDialog *> editor_file_dialogs;
- Tree *disk_changed_list;
- ConfirmationDialog *disk_changed;
+ Vector<Ref<EditorResourceConversionPlugin>> resource_conversion_plugins;
+ PrintHandlerList print_handler;
- void _bottom_panel_raise_toggled(bool);
+ Map<String, Ref<Texture2D>> icon_type_cache;
- EditorInterface *editor_interface;
+ static EditorBuildCallback build_callbacks[MAX_BUILD_CALLBACKS];
+ static EditorPluginInitializeCallback plugin_init_callbacks[MAX_INIT_CALLBACKS];
+ static int build_callback_count;
+ static int plugin_init_callback_count;
+ static Vector<EditorNodeInitCallback> _init_callbacks;
- void _bottom_panel_switch(bool p_enable, int p_idx);
+ static void _dependency_error_report(void *ud, const String &p_path, const String &p_dep, const String &p_type) {
+ EditorNode *en = (EditorNode *)ud;
+ if (!en->dependency_errors.has(p_path)) {
+ en->dependency_errors[p_path] = Set<String>();
+ }
+ en->dependency_errors[p_path].insert(p_dep + "::" + p_type);
+ }
- String external_file;
- List<String> previous_scenes;
- bool opening_prev = false;
+ static Ref<Texture2D> _file_dialog_get_icon(const String &p_path);
+ static void _file_dialog_register(FileDialog *p_dialog);
+ static void _file_dialog_unregister(FileDialog *p_dialog);
+ static void _editor_file_dialog_register(EditorFileDialog *p_dialog);
+ static void _editor_file_dialog_unregister(EditorFileDialog *p_dialog);
+
+ static void _load_error_notify(void *p_ud, const String &p_text);
+ static void _file_access_close_error_notify(const String &p_str);
+
+ static void _print_handler(void *p_this, const String &p_string, bool p_error);
+ static void _resource_saved(RES p_resource, const String &p_path);
+ static void _resource_loaded(RES p_resource, const String &p_path);
+
+ void _build_icon_type_cache();
void _dialog_action(String p_file);
@@ -462,7 +513,6 @@ private:
void _dialog_display_save_error(String p_file, Error p_error);
void _dialog_display_load_error(String p_file, Error p_error);
- int current_option;
void _menu_option(int p_option);
void _menu_confirm_current();
void _menu_option_confirm(int p_option, bool p_confirmed);
@@ -527,36 +577,18 @@ private:
void _global_menu_new_window(const Variant &p_tag);
void _dropped_files(const Vector<String> &p_files, int p_screen);
void _add_dropped_files_recursive(const Vector<String> &p_files, String to_path);
- String _recent_scene;
- void _exit_editor(int p_exit_code);
+ void _update_from_settings();
- bool convert_old = false;
+ void _rendering_driver_selected(int);
+ void _update_rendering_driver_color();
- virtual void unhandled_input(const Ref<InputEvent> &p_event) override;
+ void _exit_editor(int p_exit_code);
- static void _load_error_notify(void *p_ud, const String &p_text);
+ virtual void unhandled_input(const Ref<InputEvent> &p_event) override;
bool has_main_screen() const { return true; }
- String import_reload_fn;
-
- Set<String> textfile_extensions;
- Set<FileDialog *> file_dialogs;
- Set<EditorFileDialog *> editor_file_dialogs;
-
- Map<String, Ref<Texture2D>> icon_type_cache;
- void _build_icon_type_cache();
-
- bool _initializing_addons = false;
- Map<String, EditorPlugin *> plugin_addons;
-
- static Ref<Texture2D> _file_dialog_get_icon(const String &p_path);
- static void _file_dialog_register(FileDialog *p_dialog);
- static void _file_dialog_unregister(FileDialog *p_dialog);
- static void _editor_file_dialog_register(EditorFileDialog *p_dialog);
- static void _editor_file_dialog_unregister(EditorFileDialog *p_dialog);
-
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);
@@ -567,29 +599,6 @@ private:
void _find_node_types(Node *p_node, int &count_2d, int &count_3d);
void _save_scene_with_preview(String p_file, int p_idx = -1);
- Map<String, Set<String>> dependency_errors;
-
- static void _dependency_error_report(void *ud, const String &p_path, const String &p_dep, const String &p_type) {
- EditorNode *en = (EditorNode *)ud;
- if (!en->dependency_errors.has(p_path)) {
- en->dependency_errors[p_path] = Set<String>();
- }
- en->dependency_errors[p_path].insert(p_dep + "::" + p_type);
- }
-
- struct ExportDefer {
- String preset;
- String path;
- bool debug = false;
- bool pack_only = false;
- } export_defer;
-
- bool cmdline_export_mode = false;
-
- static EditorNode *singleton;
-
- static Vector<EditorNodeInitCallback> _init_callbacks;
-
bool _find_scene_in_use(Node *p_node, const String &p_path) const;
void _update_dock_containers();
@@ -624,7 +633,6 @@ private:
void _update_dock_slots_visibility();
void _dock_tab_changed(int p_tab);
- bool restoring_scenes = false;
void _save_open_scenes_to_config(Ref<ConfigFile> p_layout, const String &p_section);
void _load_open_scenes_from_config(Ref<ConfigFile> p_layout, const String &p_section);
@@ -635,35 +643,14 @@ private:
void _update_addon_config();
- static void _file_access_close_error_notify(const String &p_str);
-
void _toggle_distraction_free_mode();
- enum {
- MAX_INIT_CALLBACKS = 128,
- MAX_BUILD_CALLBACKS = 128
- };
-
void _inherit_imported(const String &p_action);
void _open_imported();
- static int plugin_init_callback_count;
- static EditorPluginInitializeCallback plugin_init_callbacks[MAX_INIT_CALLBACKS];
void _save_default_environment();
-
- static int build_callback_count;
- static EditorBuildCallback build_callbacks[MAX_BUILD_CALLBACKS];
-
void _update_update_spinner();
- Vector<Ref<EditorResourceConversionPlugin>> resource_conversion_plugins;
-
- PrintHandlerList print_handler;
- static void _print_handler(void *p_this, const String &p_string, bool p_error);
-
- static void _resource_saved(RES p_resource, const String &p_path);
- static void _resource_loaded(RES p_resource, const String &p_path);
-
void _resources_changed(const Vector<String> &p_resources);
void _scan_external_changes();
void _reload_modified_scenes();
@@ -676,48 +663,70 @@ private:
void _pick_main_scene_custom_action(const String &p_custom_action_name);
- bool immediate_dialog_confirmed = false;
void _immediate_dialog_confirmed();
void _select_default_main_screen_plugin();
+ void _bottom_panel_switch(bool p_enable, int p_idx);
+ void _bottom_panel_raise_toggled(bool);
+
protected:
- void _notification(int p_what);
+ friend class FileSystemDock;
static void _bind_methods();
-protected:
- friend class FileSystemDock;
+ void _notification(int p_what);
int get_current_tab();
void set_current_tab(int p_tab);
public:
- bool call_build();
+ void set_visible_editor(EditorTable p_table) { _editor_select(p_table); }
- static void add_plugin_init_callback(EditorPluginInitializeCallback p_callback);
+ bool call_build();
- enum EditorTable {
- EDITOR_2D = 0,
- EDITOR_3D,
- EDITOR_SCRIPT,
- EDITOR_ASSETLIB
- };
+ static void register_editor_types();
+ static void unregister_editor_types();
- void set_visible_editor(EditorTable p_table) { _editor_select(p_table); }
static EditorNode *get_singleton() { return singleton; }
- EditorPlugin *get_editor_plugin_screen() { return editor_plugin_screen; }
- EditorPluginList *get_editor_plugins_over() { return editor_plugins_over; }
- EditorPluginList *get_editor_plugins_force_over() { return editor_plugins_force_over; }
- EditorPluginList *get_editor_plugins_force_input_forwarding() { return editor_plugins_force_input_forwarding; }
+ static EditorLog *get_log() { return singleton->log; }
+ static EditorData &get_editor_data() { return singleton->editor_data; }
+ static EditorFolding &get_editor_folding() { return singleton->editor_folding; }
+ static UndoRedo *get_undo_redo() { return &singleton->editor_data.get_undo_redo(); }
- ProjectSettingsEditor *get_project_settings() { return project_settings_editor; }
+ static HBoxContainer *get_menu_hb() { return singleton->menu_hb; }
+ static VSplitContainer *get_top_split() { return singleton->top_split; }
+
+ static bool has_unsaved_changes() { return singleton->unsaved_cache; }
+ static void disambiguate_filenames(const Vector<String> p_full_paths, Vector<String> &r_filenames);
+ static void add_io_error(const String &p_error);
+
+ static void progress_add_task(const String &p_task, const String &p_label, int p_steps, bool p_can_cancel = false);
+ static bool progress_task_step(const String &p_task, const String &p_state, int p_step = -1, bool p_force_refresh = true);
+ static void progress_end_task(const String &p_task);
+
+ static void progress_add_task_bg(const String &p_task, const String &p_label, int p_steps);
+ static void progress_task_step_bg(const String &p_task, int p_step = -1);
+ static void progress_end_task_bg(const String &p_task);
static void add_editor_plugin(EditorPlugin *p_editor, bool p_config_changed = false);
static void remove_editor_plugin(EditorPlugin *p_editor, bool p_config_changed = false);
- static void disambiguate_filenames(const Vector<String> p_full_paths, Vector<String> &r_filenames);
+ static void add_plugin_init_callback(EditorPluginInitializeCallback p_callback);
+ static void add_init_callback(EditorNodeInitCallback p_callback) { _init_callbacks.push_back(p_callback); }
+ static void add_build_callback(EditorBuildCallback p_callback);
+
+ static bool immediate_confirmation_dialog(const String &p_text, const String &p_ok_text = TTR("Ok"), const String &p_cancel_text = TTR("Cancel"));
+
+ EditorPlugin *get_editor_plugin_screen() { return editor_plugin_screen; }
+ EditorPluginList *get_editor_plugins_force_input_forwarding() { return editor_plugins_force_input_forwarding; }
+ EditorPluginList *get_editor_plugins_force_over() { return editor_plugins_force_over; }
+ EditorPluginList *get_editor_plugins_over() { return editor_plugins_over; }
+ EditorSelection *get_editor_selection() { return editor_selection; }
+ EditorSelectionHistory *get_editor_selection_history() { return &editor_history; }
+
+ ProjectSettingsEditor *get_project_settings() { return project_settings_editor; }
void new_inherited_scene() { _menu_option_confirm(FILE_NEW_INHERITED_SCENE, false); }
@@ -742,10 +751,6 @@ public:
void show_about() { _menu_option_confirm(HELP_ABOUT, false); }
- static bool has_unsaved_changes() { return singleton->unsaved_cache; }
-
- static HBoxContainer *get_menu_hb() { return singleton->menu_hb; }
-
void push_item(Object *p_object, const String &p_property = "", bool p_inspector_only = false);
void edit_item(Object *p_object);
void edit_item_resource(RES p_resource);
@@ -755,18 +760,16 @@ public:
void select_editor_by_name(const String &p_name);
void open_request(const String &p_path);
+ void edit_foreign_resource(RES p_resource);
bool is_changing_scene() const;
- static EditorLog *get_log() { return singleton->log; }
Control *get_main_control();
+ SubViewport *get_scene_root() { return scene_root; } // Root of the scene being edited.
void set_edited_scene(Node *p_scene);
-
Node *get_edited_scene() { return editor_data.get_edited_scene_root(); }
- SubViewport *get_scene_root() { return scene_root; } // root of the scene being edited
-
void fix_dependencies(const String &p_for_file);
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);
@@ -777,17 +780,8 @@ public:
void set_current_version(uint64_t p_version);
void set_current_scene(int p_idx);
- static EditorData &get_editor_data() { return singleton->editor_data; }
- static EditorFolding &get_editor_folding() { return singleton->editor_folding; }
- EditorHistory *get_editor_history() { return &editor_history; }
-
- static VSplitContainer *get_top_split() { return singleton->top_split; }
-
void request_instance_scene(const String &p_path);
void request_instantiate_scenes(const Vector<String> &p_files);
- static UndoRedo *get_undo_redo() { return &singleton->editor_data.get_undo_redo(); }
-
- EditorSelection *get_editor_selection() { return editor_selection; }
void set_convert_old_scene(bool p_old) { convert_old = p_old; }
@@ -810,22 +804,9 @@ public:
Error export_preset(const String &p_preset, const String &p_path, bool p_debug, bool p_pack_only);
- static void register_editor_types();
- static void unregister_editor_types();
-
Control *get_gui_base() { return gui_base; }
Control *get_theme_base() { return gui_base->get_parent_control(); }
- static void add_io_error(const String &p_error);
-
- static void progress_add_task(const String &p_task, const String &p_label, int p_steps, bool p_can_cancel = false);
- static bool progress_task_step(const String &p_task, const String &p_state, int p_step = -1, bool p_force_refresh = true);
- static void progress_end_task(const String &p_task);
-
- static void progress_add_task_bg(const String &p_task, const String &p_label, int p_steps);
- static void progress_task_step_bg(const String &p_task, int p_step = -1);
- static void progress_end_task_bg(const String &p_task);
-
void save_scene_to_path(String p_file, bool p_with_preview = true) {
if (p_with_preview) {
_save_scene_with_preview(p_file);
@@ -881,9 +862,6 @@ public:
void remove_resource_conversion_plugin(const Ref<EditorResourceConversionPlugin> &p_plugin);
Vector<Ref<EditorResourceConversionPlugin>> find_resource_conversion_plugin(const Ref<Resource> &p_for_resource);
- static void add_init_callback(EditorNodeInitCallback p_callback) { _init_callbacks.push_back(p_callback); }
- static void add_build_callback(EditorBuildCallback p_callback);
-
bool ensure_main_scene(bool p_from_native);
Error run_play_native(int p_idx, int p_platform);
@@ -893,8 +871,6 @@ public:
void run_stop();
bool is_run_playing() const;
String get_run_playing_scene() const;
-
- static bool immediate_confirmation_dialog(const String &p_text, const String &p_ok_text = TTR("Ok"), const String &p_cancel_text = TTR("Cancel"));
};
struct EditorProgress {
diff --git a/editor/editor_path.cpp b/editor/editor_path.cpp
index 5cb3d0cd75..8747128962 100644
--- a/editor/editor_path.cpp
+++ b/editor/editor_path.cpp
@@ -194,7 +194,7 @@ void EditorPath::_notification(int p_what) {
void EditorPath::_bind_methods() {
}
-EditorPath::EditorPath(EditorHistory *p_history) {
+EditorPath::EditorPath(EditorSelectionHistory *p_history) {
history = p_history;
MarginContainer *main_mc = memnew(MarginContainer);
diff --git a/editor/editor_path.h b/editor/editor_path.h
index 539ae7a11d..1e19344d9e 100644
--- a/editor/editor_path.h
+++ b/editor/editor_path.h
@@ -37,12 +37,12 @@
#include "scene/gui/popup_menu.h"
#include "scene/gui/texture_rect.h"
-class EditorHistory;
+class EditorSelectionHistory;
class EditorPath : public Button {
GDCLASS(EditorPath, Button);
- EditorHistory *history;
+ EditorSelectionHistory *history;
TextureRect *current_object_icon;
Label *current_object_label;
@@ -65,7 +65,7 @@ public:
void clear_path();
void enable_path();
- EditorPath(EditorHistory *p_history);
+ EditorPath(EditorSelectionHistory *p_history);
};
#endif // EDITOR_PATH_H
diff --git a/editor/editor_properties.cpp b/editor/editor_properties.cpp
index b495d29911..d2b8883b8a 100644
--- a/editor/editor_properties.cpp
+++ b/editor/editor_properties.cpp
@@ -2806,8 +2806,8 @@ void EditorPropertyNodePath::_node_selected(const NodePath &p_path) {
if (!base_node) {
//try a base node within history
- if (EditorNode::get_singleton()->get_editor_history()->get_path_size() > 0) {
- Object *base = ObjectDB::get_instance(EditorNode::get_singleton()->get_editor_history()->get_path_object(0));
+ if (EditorNode::get_singleton()->get_editor_selection_history()->get_path_size() > 0) {
+ Object *base = ObjectDB::get_instance(EditorNode::get_singleton()->get_editor_selection_history()->get_path_object(0));
if (base) {
base_node = Object::cast_to<Node>(base);
}
@@ -2975,6 +2975,12 @@ void EditorPropertyResource::_set_read_only(bool p_read_only) {
};
void EditorPropertyResource::_resource_selected(const RES &p_resource, bool p_edit) {
+ if (p_resource->is_built_in() && !p_resource->get_path().is_empty() && p_resource->get_path().get_slice("::", 0) != EditorNode::get_singleton()->get_edited_scene()->get_scene_file_path()) {
+ // If the resource belongs to another scene, edit it in that scene instead.
+ EditorNode::get_singleton()->call_deferred("edit_foreign_resource", p_resource);
+ return;
+ }
+
if (!p_edit && use_sub_inspector) {
bool unfold = !get_edited_object()->editor_is_section_unfolded(get_edited_property());
get_edited_object()->editor_set_section_unfold(get_edited_property(), unfold);
@@ -3172,9 +3178,8 @@ void EditorPropertyResource::_viewport_selected(const NodePath &p_path) {
void EditorPropertyResource::setup(Object *p_object, const String &p_path, const String &p_base_type) {
if (resource_picker) {
- resource_picker->disconnect("resource_selected", callable_mp(this, &EditorPropertyResource::_resource_selected));
- resource_picker->disconnect("resource_changed", callable_mp(this, &EditorPropertyResource::_resource_changed));
memdelete(resource_picker);
+ resource_picker = nullptr;
}
if (p_path == "script" && p_base_type == "Script" && Object::cast_to<Node>(p_object)) {
@@ -3221,7 +3226,7 @@ void EditorPropertyResource::update_property() {
sub_inspector->set_use_doc_hints(true);
sub_inspector->set_sub_inspector(true);
- sub_inspector->set_enable_capitalize_paths(bool(EDITOR_GET("interface/inspector/capitalize_properties")));
+ sub_inspector->set_property_name_style(InspectorDock::get_singleton()->get_property_name_style());
sub_inspector->connect("property_keyed", callable_mp(this, &EditorPropertyResource::_sub_inspector_property_keyed));
sub_inspector->connect("resource_selected", callable_mp(this, &EditorPropertyResource::_sub_inspector_resource_selected));
diff --git a/editor/editor_property_name_processor.cpp b/editor/editor_property_name_processor.cpp
index 49f2f21095..5b5d451df9 100644
--- a/editor/editor_property_name_processor.cpp
+++ b/editor/editor_property_name_processor.cpp
@@ -34,6 +34,28 @@
EditorPropertyNameProcessor *EditorPropertyNameProcessor::singleton = nullptr;
+EditorPropertyNameProcessor::Style EditorPropertyNameProcessor::get_default_inspector_style() {
+ const Style style = (Style)EDITOR_GET("interface/inspector/default_property_name_style").operator int();
+ if (style == STYLE_LOCALIZED && !is_localization_available()) {
+ return STYLE_CAPITALIZED;
+ }
+ return style;
+}
+
+EditorPropertyNameProcessor::Style EditorPropertyNameProcessor::get_settings_style() {
+ const bool translate = EDITOR_GET("interface/editor/localize_settings");
+ return translate ? STYLE_LOCALIZED : STYLE_CAPITALIZED;
+}
+
+EditorPropertyNameProcessor::Style EditorPropertyNameProcessor::get_tooltip_style(Style p_style) {
+ return p_style == STYLE_LOCALIZED ? STYLE_CAPITALIZED : STYLE_LOCALIZED;
+}
+
+bool EditorPropertyNameProcessor::is_localization_available() {
+ const Vector<String> forbidden = String("en").split(",");
+ return forbidden.find(EDITOR_GET("interface/editor/editor_language")) == -1;
+}
+
String EditorPropertyNameProcessor::_capitalize_name(const String &p_name) const {
const Map<String, String>::Element *cached = capitalize_string_cache.find(p_name);
if (cached) {
@@ -55,20 +77,21 @@ String EditorPropertyNameProcessor::_capitalize_name(const String &p_name) const
return capitalized;
}
-String EditorPropertyNameProcessor::process_name(const String &p_name) const {
- const String capitalized_string = _capitalize_name(p_name);
- if (EDITOR_GET("interface/editor/translate_properties")) {
- return TTRGET(capitalized_string);
- }
- return capitalized_string;
-}
+String EditorPropertyNameProcessor::process_name(const String &p_name, Style p_style) const {
+ switch (p_style) {
+ case STYLE_RAW: {
+ return p_name;
+ } break;
-String EditorPropertyNameProcessor::make_tooltip_for_name(const String &p_name) const {
- const String capitalized_string = _capitalize_name(p_name);
- if (EDITOR_GET("interface/editor/translate_properties")) {
- return capitalized_string;
+ case STYLE_CAPITALIZED: {
+ return _capitalize_name(p_name);
+ } break;
+
+ case STYLE_LOCALIZED: {
+ return TTRGET(_capitalize_name(p_name));
+ } break;
}
- return TTRGET(capitalized_string);
+ ERR_FAIL_V_MSG(p_name, "Unexpected property name style.");
}
EditorPropertyNameProcessor::EditorPropertyNameProcessor() {
@@ -83,6 +106,9 @@ EditorPropertyNameProcessor::EditorPropertyNameProcessor() {
capitalize_string_remaps["aabb"] = "AABB";
capitalize_string_remaps["adb"] = "ADB";
capitalize_string_remaps["ao"] = "AO";
+ capitalize_string_remaps["apk"] = "APK";
+ capitalize_string_remaps["arm64-v8a"] = "arm64-v8a";
+ capitalize_string_remaps["armeabi-v7a"] = "armeabi-v7a";
capitalize_string_remaps["arvr"] = "ARVR";
capitalize_string_remaps["bg"] = "BG";
capitalize_string_remaps["bp"] = "BP";
@@ -91,15 +117,23 @@ EditorPropertyNameProcessor::EditorPropertyNameProcessor() {
capitalize_string_remaps["bvh"] = "BVH";
capitalize_string_remaps["ca"] = "CA";
capitalize_string_remaps["cd"] = "CD";
+ capitalize_string_remaps["commentfocus"] = "Comment Focus";
capitalize_string_remaps["cpu"] = "CPU";
capitalize_string_remaps["csg"] = "CSG";
capitalize_string_remaps["db"] = "dB";
+ capitalize_string_remaps["defaultfocus"] = "Default Focus";
+ capitalize_string_remaps["defaultframe"] = "Default Frame";
capitalize_string_remaps["dof"] = "DoF";
capitalize_string_remaps["dpi"] = "DPI";
capitalize_string_remaps["dtls"] = "DTLS";
+ capitalize_string_remaps["eol"] = "EOL";
+ capitalize_string_remaps["erp"] = "ERP";
capitalize_string_remaps["etc"] = "ETC";
capitalize_string_remaps["etc2"] = "ETC2";
+ capitalize_string_remaps["fbx"] = "FBX";
+ capitalize_string_remaps["fbx2gltf"] = "FBX2glTF";
capitalize_string_remaps["fft"] = "FFT";
+ capitalize_string_remaps["fg"] = "FG";
capitalize_string_remaps["fov"] = "FOV";
capitalize_string_remaps["fps"] = "FPS";
capitalize_string_remaps["fs"] = "FS";
@@ -113,37 +147,55 @@ EditorPropertyNameProcessor::EditorPropertyNameProcessor() {
capitalize_string_remaps["gles3"] = "GLES3";
capitalize_string_remaps["gpu"] = "GPU";
capitalize_string_remaps["gui"] = "GUI";
+ capitalize_string_remaps["guid"] = "GUID";
capitalize_string_remaps["hdr"] = "HDR";
capitalize_string_remaps["hidpi"] = "hiDPI";
capitalize_string_remaps["hipass"] = "High-pass";
+ capitalize_string_remaps["hl"] = "HL";
+ capitalize_string_remaps["hseparation"] = "H Separation";
capitalize_string_remaps["hsv"] = "HSV";
+ capitalize_string_remaps["html"] = "HTML";
capitalize_string_remaps["http"] = "HTTP";
capitalize_string_remaps["id"] = "ID";
- capitalize_string_remaps["ik"] = "IK";
capitalize_string_remaps["igd"] = "IGD";
+ capitalize_string_remaps["ik"] = "IK";
+ capitalize_string_remaps["image@2x"] = "Image @2x";
+ capitalize_string_remaps["image@3x"] = "Image @3x";
capitalize_string_remaps["ios"] = "iOS";
capitalize_string_remaps["iod"] = "IOD";
capitalize_string_remaps["ip"] = "IP";
+ capitalize_string_remaps["ipad"] = "iPad";
+ capitalize_string_remaps["iphone"] = "iPhone";
capitalize_string_remaps["ipv6"] = "IPv6";
+ capitalize_string_remaps["ir"] = "IR";
+ capitalize_string_remaps["itunes"] = "iTunes";
+ capitalize_string_remaps["jit"] = "JIT";
capitalize_string_remaps["k1"] = "K1";
capitalize_string_remaps["k2"] = "K2";
capitalize_string_remaps["kb"] = "(KB)"; // Unit.
+ capitalize_string_remaps["ldr"] = "LDR";
capitalize_string_remaps["lod"] = "LOD";
capitalize_string_remaps["lowpass"] = "Low-pass";
capitalize_string_remaps["macos"] = "macOS";
capitalize_string_remaps["mb"] = "(MB)"; // Unit.
+ capitalize_string_remaps["mms"] = "MMS";
capitalize_string_remaps["ms"] = "(ms)"; // Unit
// Not used for now as AudioEffectReverb has a `msec` property.
//capitalize_string_remaps["msec"] = "(msec)"; // Unit.
capitalize_string_remaps["msaa"] = "MSAA";
+ capitalize_string_remaps["nfc"] = "NFC";
capitalize_string_remaps["normalmap"] = "Normal Map";
+ capitalize_string_remaps["ofs"] = "Offset";
+ capitalize_string_remaps["ok"] = "OK";
capitalize_string_remaps["opengl"] = "OpenGL";
capitalize_string_remaps["opentype"] = "OpenType";
capitalize_string_remaps["openxr"] = "OpenXR";
+ capitalize_string_remaps["pck"] = "PCK";
capitalize_string_remaps["png"] = "PNG";
capitalize_string_remaps["po2"] = "(Power of 2)"; // Unit.
capitalize_string_remaps["pvs"] = "PVS";
capitalize_string_remaps["pvrtc"] = "PVRTC";
+ capitalize_string_remaps["rgb"] = "RGB";
capitalize_string_remaps["rid"] = "RID";
capitalize_string_remaps["rmb"] = "RMB";
capitalize_string_remaps["rpc"] = "RPC";
@@ -152,28 +204,41 @@ EditorPropertyNameProcessor::EditorPropertyNameProcessor() {
capitalize_string_remaps["sdfgi"] = "SDFGI";
capitalize_string_remaps["sdk"] = "SDK";
capitalize_string_remaps["sec"] = "(sec)"; // Unit.
+ capitalize_string_remaps["selectedframe"] = "Selected Frame";
+ capitalize_string_remaps["sms"] = "SMS";
+ capitalize_string_remaps["srgb"] = "sRGB";
capitalize_string_remaps["ssao"] = "SSAO";
capitalize_string_remaps["ssh"] = "SSH";
capitalize_string_remaps["ssil"] = "SSIL";
capitalize_string_remaps["ssl"] = "SSL";
capitalize_string_remaps["stderr"] = "stderr";
capitalize_string_remaps["stdout"] = "stdout";
+ capitalize_string_remaps["sv"] = "SV";
+ capitalize_string_remaps["svg"] = "SVG";
capitalize_string_remaps["tcp"] = "TCP";
capitalize_string_remaps["ui"] = "UI";
capitalize_string_remaps["url"] = "URL";
capitalize_string_remaps["urls"] = "URLs";
- capitalize_string_remaps["us"] = "(µs)"; // Unit.
- capitalize_string_remaps["usec"] = "(µsec)"; // Unit.
+ capitalize_string_remaps["us"] = String::utf8("(µs)"); // Unit.
+ capitalize_string_remaps["usb"] = "USB";
+ capitalize_string_remaps["usec"] = String::utf8("(µsec)"); // Unit.
+ capitalize_string_remaps["uuid"] = "UUID";
capitalize_string_remaps["uv"] = "UV";
capitalize_string_remaps["uv1"] = "UV1";
capitalize_string_remaps["uv2"] = "UV2";
capitalize_string_remaps["uwp"] = "UWP";
+ capitalize_string_remaps["vadjust"] = "V Adjust";
capitalize_string_remaps["vector2"] = "Vector2";
+ capitalize_string_remaps["vpn"] = "VPN";
capitalize_string_remaps["vram"] = "VRAM";
+ capitalize_string_remaps["vseparation"] = "V Separation";
capitalize_string_remaps["vsync"] = "V-Sync";
+ capitalize_string_remaps["wap"] = "WAP";
capitalize_string_remaps["webp"] = "WebP";
capitalize_string_remaps["webrtc"] = "WebRTC";
capitalize_string_remaps["websocket"] = "WebSocket";
+ capitalize_string_remaps["wifi"] = "Wi-Fi";
+ capitalize_string_remaps["x86"] = "x86";
capitalize_string_remaps["xr"] = "XR";
capitalize_string_remaps["xy"] = "XY";
capitalize_string_remaps["xz"] = "XZ";
diff --git a/editor/editor_property_name_processor.h b/editor/editor_property_name_processor.h
index 616c4cac46..351736550f 100644
--- a/editor/editor_property_name_processor.h
+++ b/editor/editor_property_name_processor.h
@@ -41,16 +41,27 @@ class EditorPropertyNameProcessor : public Node {
mutable Map<String, String> capitalize_string_cache;
Map<String, String> capitalize_string_remaps;
+ // Capitalizes property path segments.
String _capitalize_name(const String &p_name) const;
public:
+ // Matches `interface/inspector/capitalize_properties` editor setting.
+ enum Style {
+ STYLE_RAW,
+ STYLE_CAPITALIZED,
+ STYLE_LOCALIZED,
+ };
+
static EditorPropertyNameProcessor *get_singleton() { return singleton; }
- // Capitalize & localize property path segments.
- String process_name(const String &p_name) const;
+ static Style get_default_inspector_style();
+ static Style get_settings_style();
+ static Style get_tooltip_style(Style p_style);
+
+ static bool is_localization_available();
- // Make tooltip string for names processed by process_name().
- String make_tooltip_for_name(const String &p_name) const;
+ // Turns property path segment into the given style.
+ String process_name(const String &p_name, Style p_style) const;
EditorPropertyNameProcessor();
~EditorPropertyNameProcessor();
diff --git a/editor/editor_resource_picker.cpp b/editor/editor_resource_picker.cpp
index a7b2a4cfa6..53f1a689d6 100644
--- a/editor/editor_resource_picker.cpp
+++ b/editor/editor_resource_picker.cpp
@@ -327,6 +327,13 @@ void EditorResourcePicker::_edit_menu_cbk(int p_which) {
case OBJ_MENU_PASTE: {
edited_resource = EditorSettings::get_singleton()->get_resource_clipboard();
+ if (edited_resource->is_built_in() && EditorNode::get_singleton()->get_edited_scene() &&
+ edited_resource->get_path().get_slice("::", 0) != EditorNode::get_singleton()->get_edited_scene()->get_scene_file_path()) {
+ // Automatically make resource unique if it belongs to another scene.
+ _edit_menu_cbk(OBJ_MENU_MAKE_UNIQUE);
+ return;
+ }
+
emit_signal(SNAME("resource_changed"), edited_resource);
_update_resource();
} break;
diff --git a/editor/editor_sectioned_inspector.cpp b/editor/editor_sectioned_inspector.cpp
index 627fa0eb35..801a1a4641 100644
--- a/editor/editor_sectioned_inspector.cpp
+++ b/editor/editor_sectioned_inspector.cpp
@@ -32,15 +32,16 @@
#include "editor/editor_property_name_processor.h"
#include "editor/editor_scale.h"
+#include "editor/editor_settings.h"
-static bool _property_path_matches(const String &p_property_path, const String &p_filter) {
+static bool _property_path_matches(const String &p_property_path, const String &p_filter, EditorPropertyNameProcessor::Style p_style) {
if (p_property_path.findn(p_filter) != -1) {
return true;
}
const Vector<String> sections = p_property_path.split("/");
for (int i = 0; i < sections.size(); i++) {
- if (p_filter.is_subsequence_ofn(EditorPropertyNameProcessor::get_singleton()->process_name(sections[i]))) {
+ if (p_filter.is_subsequence_ofn(EditorPropertyNameProcessor::get_singleton()->process_name(sections[i], p_style))) {
return true;
}
}
@@ -235,6 +236,9 @@ void SectionedInspector::update_category_list() {
filter = search_box->get_text();
}
+ const EditorPropertyNameProcessor::Style name_style = EditorPropertyNameProcessor::get_settings_style();
+ const EditorPropertyNameProcessor::Style tooltip_style = EditorPropertyNameProcessor::get_tooltip_style(name_style);
+
for (PropertyInfo &pi : pinfo) {
if (pi.usage & PROPERTY_USAGE_CATEGORY) {
continue;
@@ -246,7 +250,7 @@ void SectionedInspector::update_category_list() {
continue;
}
- if (!filter.is_empty() && !_property_path_matches(pi.name, filter)) {
+ if (!filter.is_empty() && !_property_path_matches(pi.name, filter, name_style)) {
continue;
}
@@ -274,8 +278,12 @@ void SectionedInspector::update_category_list() {
if (!section_map.has(metasection)) {
TreeItem *ms = sections->create_item(parent);
section_map[metasection] = ms;
- ms->set_text(0, EditorPropertyNameProcessor::get_singleton()->process_name(sectionarr[i]));
- ms->set_tooltip(0, EditorPropertyNameProcessor::get_singleton()->make_tooltip_for_name(sectionarr[i]));
+
+ const String text = EditorPropertyNameProcessor::get_singleton()->process_name(sectionarr[i], name_style);
+ const String tooltip = EditorPropertyNameProcessor::get_singleton()->process_name(sectionarr[i], tooltip_style);
+
+ ms->set_text(0, text);
+ ms->set_tooltip(0, tooltip);
ms->set_metadata(0, metasection);
ms->set_selectable(0, false);
}
@@ -304,6 +312,14 @@ void SectionedInspector::_search_changed(const String &p_what) {
update_category_list();
}
+void SectionedInspector::_notification(int p_what) {
+ switch (p_what) {
+ case EditorSettings::NOTIFICATION_EDITOR_SETTINGS_CHANGED: {
+ inspector->set_property_name_style(EditorPropertyNameProcessor::get_settings_style());
+ } break;
+ }
+}
+
EditorInspector *SectionedInspector::get_inspector() {
return inspector;
}
@@ -337,6 +353,7 @@ SectionedInspector::SectionedInspector() :
inspector->set_v_size_flags(SIZE_EXPAND_FILL);
right_vb->add_child(inspector, true);
inspector->set_use_doc_hints(true);
+ inspector->set_property_name_style(EditorPropertyNameProcessor::get_settings_style());
sections->connect("cell_selected", callable_mp(this, &SectionedInspector::_section_selected));
}
diff --git a/editor/editor_sectioned_inspector.h b/editor/editor_sectioned_inspector.h
index f81c4631e4..7c21e00c03 100644
--- a/editor/editor_sectioned_inspector.h
+++ b/editor/editor_sectioned_inspector.h
@@ -58,6 +58,9 @@ class SectionedInspector : public HSplitContainer {
void _search_changed(const String &p_what);
+protected:
+ void _notification(int p_what);
+
public:
void register_search_box(LineEdit *p_box);
EditorInspector *get_inspector();
diff --git a/editor/editor_settings.cpp b/editor/editor_settings.cpp
index 2d80fe85f8..1364f7891e 100644
--- a/editor/editor_settings.cpp
+++ b/editor/editor_settings.cpp
@@ -404,12 +404,12 @@ void EditorSettings::_load_defaults(Ref<ConfigFile> p_extra_config) {
const String display_scale_hint_string = vformat("Auto (%d%%),75%%,100%%,125%%,150%%,175%%,200%%,Custom", Math::round(get_auto_display_scale() * 100));
EDITOR_SETTING_USAGE(Variant::INT, PROPERTY_HINT_ENUM, "interface/editor/display_scale", 0, display_scale_hint_string, PROPERTY_USAGE_DEFAULT | PROPERTY_USAGE_RESTART_IF_CHANGED)
- _initial_set("interface/editor/enable_debugging_pseudolocalization", false);
- set_restart_if_changed("interface/editor/enable_debugging_pseudolocalization", true);
+ _initial_set("interface/editor/debug/enable_pseudolocalization", false);
+ set_restart_if_changed("interface/editor/debug/enable_pseudolocalization", true);
// Use pseudolocalization in editor.
EDITOR_SETTING_USAGE(Variant::FLOAT, PROPERTY_HINT_RANGE, "interface/editor/custom_display_scale", 1.0, "0.5,3,0.01", PROPERTY_USAGE_DEFAULT | PROPERTY_USAGE_RESTART_IF_CHANGED)
- EDITOR_SETTING_USAGE(Variant::INT, PROPERTY_HINT_RANGE, "interface/editor/main_font_size", 14, "8,48,1", PROPERTY_USAGE_DEFAULT | PROPERTY_USAGE_RESTART_IF_CHANGED)
+ EDITOR_SETTING(Variant::INT, PROPERTY_HINT_RANGE, "interface/editor/main_font_size", 14, "8,48,1")
EDITOR_SETTING(Variant::INT, PROPERTY_HINT_RANGE, "interface/editor/code_font_size", 14, "8,48,1")
EDITOR_SETTING(Variant::INT, PROPERTY_HINT_ENUM, "interface/editor/code_font_contextual_ligatures", 0, "Default,Disable Contextual Alternates (Coding Ligatures),Use Custom OpenType Feature Set")
_initial_set("interface/editor/code_font_custom_opentype_features", "");
@@ -422,9 +422,9 @@ void EditorSettings::_load_defaults(Ref<ConfigFile> p_extra_config) {
#endif
EDITOR_SETTING(Variant::INT, PROPERTY_HINT_ENUM, "interface/editor/font_subpixel_positioning", 1, "Disabled,Auto,One half of a pixel,One quarter of a pixel")
- EDITOR_SETTING(Variant::STRING, PROPERTY_HINT_GLOBAL_FILE, "interface/editor/main_font", "", "*.ttf,*.otf")
- EDITOR_SETTING(Variant::STRING, PROPERTY_HINT_GLOBAL_FILE, "interface/editor/main_font_bold", "", "*.ttf,*.otf")
- EDITOR_SETTING(Variant::STRING, PROPERTY_HINT_GLOBAL_FILE, "interface/editor/code_font", "", "*.ttf,*.otf")
+ EDITOR_SETTING(Variant::STRING, PROPERTY_HINT_GLOBAL_FILE, "interface/editor/main_font", "", "*.ttf,*.otf,*.woff,*.woff2,*.pfb,*.pfm")
+ EDITOR_SETTING(Variant::STRING, PROPERTY_HINT_GLOBAL_FILE, "interface/editor/main_font_bold", "", "*.ttf,*.otf,*.woff,*.woff2,*.pfb,*.pfm")
+ EDITOR_SETTING(Variant::STRING, PROPERTY_HINT_GLOBAL_FILE, "interface/editor/code_font", "", "*.ttf,*.otf,*.woff,*.woff2,*.pfb,*.pfm")
EDITOR_SETTING_USAGE(Variant::FLOAT, PROPERTY_HINT_RANGE, "interface/editor/low_processor_mode_sleep_usec", 6900, "1,100000,1", PROPERTY_USAGE_DEFAULT | PROPERTY_USAGE_RESTART_IF_CHANGED)
// Default unfocused usec sleep is for 10 FPS. Allow an unfocused FPS limit
// as low as 1 FPS for those who really need low power usage (but don't need
@@ -535,7 +535,7 @@ void EditorSettings::_load_defaults(Ref<ConfigFile> p_extra_config) {
// Appearance: Whitespace
_initial_set("text_editor/appearance/whitespace/draw_tabs", true);
_initial_set("text_editor/appearance/whitespace/draw_spaces", false);
- EDITOR_SETTING(Variant::INT, PROPERTY_HINT_RANGE, "text_editor/appearance/whitespace/line_spacing", 6, "0,50,1")
+ EDITOR_SETTING(Variant::INT, PROPERTY_HINT_RANGE, "text_editor/appearance/whitespace/line_spacing", 4, "0,50,1")
// Behavior
// Behavior: Navigation
@@ -711,11 +711,15 @@ void EditorSettings::_load_defaults(Ref<ConfigFile> p_extra_config) {
EDITOR_SETTING(Variant::INT, PROPERTY_HINT_RANGE, "network/debug/remote_port", 6007, "1,65535,1")
// SSL
- EDITOR_SETTING(Variant::STRING, PROPERTY_HINT_GLOBAL_FILE, "network/ssl/editor_ssl_certificates", _SYSTEM_CERTS_PATH, "*.crt,*.pem")
+ EDITOR_SETTING_USAGE(Variant::STRING, PROPERTY_HINT_GLOBAL_FILE, "network/ssl/editor_ssl_certificates", _SYSTEM_CERTS_PATH, "*.crt,*.pem", PROPERTY_USAGE_DEFAULT | PROPERTY_USAGE_RESTART_IF_CHANGED);
// Profiler
_initial_set("debugger/profiler_frame_history_size", 600);
+ // HTTP Proxy
+ _initial_set("network/http_proxy/host", "");
+ EDITOR_SETTING(Variant::INT, PROPERTY_HINT_RANGE, "network/http_proxy/port", 8080, "1,65535,1")
+
/* Extra config */
EDITOR_SETTING(Variant::INT, PROPERTY_HINT_ENUM, "project_manager/sorting_order", 0, "Name,Path,Last Edited")
@@ -887,7 +891,7 @@ fail:
}
void EditorSettings::setup_language() {
- TranslationServer::get_singleton()->set_editor_pseudolocalization(get("interface/editor/enable_debugging_pseudolocalization"));
+ TranslationServer::get_singleton()->set_editor_pseudolocalization(get("interface/editor/debug/enable_pseudolocalization"));
String lang = get("interface/editor/editor_language");
if (lang == "en") {
return; // Default, nothing to do.
diff --git a/editor/editor_settings_dialog.cpp b/editor/editor_settings_dialog.cpp
index 63b5b5b803..285b909b66 100644
--- a/editor/editor_settings_dialog.cpp
+++ b/editor/editor_settings_dialog.cpp
@@ -142,6 +142,8 @@ void EditorSettingsDialog::_notification(int p_what) {
if (update_shortcuts_tab) {
_update_shortcuts();
}
+
+ inspector->update_category_list();
} break;
}
}
@@ -415,6 +417,9 @@ void EditorSettingsDialog::_update_shortcuts() {
List<String> slist;
EditorSettings::get_singleton()->get_shortcut_list(&slist);
+ const EditorPropertyNameProcessor::Style name_style = EditorPropertyNameProcessor::get_settings_style();
+ const EditorPropertyNameProcessor::Style tooltip_style = EditorPropertyNameProcessor::get_tooltip_style(name_style);
+
for (const String &E : slist) {
Ref<Shortcut> sc = EditorSettings::get_singleton()->get_shortcut(E);
if (!sc->has_meta("original")) {
@@ -431,9 +436,11 @@ void EditorSettingsDialog::_update_shortcuts() {
} else {
section = shortcuts->create_item(root);
- String item_name = EditorPropertyNameProcessor::get_singleton()->process_name(section_name);
+ const String item_name = EditorPropertyNameProcessor::get_singleton()->process_name(section_name, name_style);
+ const String tooltip = EditorPropertyNameProcessor::get_singleton()->process_name(section_name, tooltip_style);
+
section->set_text(0, item_name);
- section->set_tooltip(0, EditorPropertyNameProcessor::get_singleton()->make_tooltip_for_name(section_name));
+ section->set_tooltip(0, tooltip);
section->set_selectable(0, false);
section->set_selectable(1, false);
section->set_custom_bg_color(0, shortcuts->get_theme_color(SNAME("prop_subsection"), SNAME("Editor")));
diff --git a/editor/editor_spin_slider.cpp b/editor/editor_spin_slider.cpp
index 9bf3c4c590..32d28cd3a7 100644
--- a/editor/editor_spin_slider.cpp
+++ b/editor/editor_spin_slider.cpp
@@ -81,7 +81,7 @@ void EditorSpinSlider::gui_input(const Ref<InputEvent> &p_event) {
if (grabbing_spinner_attempt) {
if (grabbing_spinner) {
Input::get_singleton()->set_mouse_mode(Input::MOUSE_MODE_VISIBLE);
- Input::get_singleton()->warp_mouse_position(grabbing_spinner_mouse_pos);
+ Input::get_singleton()->warp_mouse(grabbing_spinner_mouse_pos);
update();
} else {
_focus_entered();
@@ -414,7 +414,7 @@ void EditorSpinSlider::_draw_spin_slider() {
grabber->set_position(get_global_position() + (grabber_rect.get_center() - grabber->get_size() * 0.5) * scale);
if (mousewheel_over_grabber) {
- Input::get_singleton()->warp_mouse_position(grabber->get_position() + grabber_rect.size);
+ Input::get_singleton()->warp_mouse(grabber->get_position() + grabber_rect.size);
}
grabber_range = width;
diff --git a/editor/editor_themes.cpp b/editor/editor_themes.cpp
index 28feac5d2b..1fea759a90 100644
--- a/editor/editor_themes.cpp
+++ b/editor/editor_themes.cpp
@@ -288,17 +288,40 @@ void editor_register_and_generate_icons(Ref<Theme> p_theme, bool p_dark_theme =
dark_icon_color_dictionary[Color::html("#5fff97")] = success_color;
dark_icon_color_dictionary[Color::html("#ffdd65")] = warning_color;
+ // Use the accent color for some icons (checkbox, radio, toggle, etc.).
+ Dictionary accent_color_icon_color_dictionary;
+ Set<StringName> accent_color_icons;
+
+ const Color accent_color = p_theme->get_color(SNAME("accent_color"), SNAME("Editor"));
+ accent_color_icon_color_dictionary[Color::html("699ce8")] = accent_color;
+ if (accent_color.get_luminance() > 0.75) {
+ accent_color_icon_color_dictionary[Color::html("ffffff")] = Color(0.2, 0.2, 0.2);
+ }
+
+ accent_color_icons.insert("GuiChecked");
+ accent_color_icons.insert("GuiRadioChecked");
+ accent_color_icons.insert("GuiIndeterminate");
+ accent_color_icons.insert("GuiToggleOn");
+ accent_color_icons.insert("GuiToggleOnMirrored");
+ accent_color_icons.insert("PlayOverlay");
+
// Generate icons.
if (!p_only_thumbs) {
for (int i = 0; i < editor_icons_count; i++) {
- float saturation = p_icon_saturation;
+ Ref<ImageTexture> icon;
- if (strcmp(editor_icons_names[i], "DefaultProjectIcon") == 0 || strcmp(editor_icons_names[i], "Godot") == 0 || strcmp(editor_icons_names[i], "Logo") == 0) {
- saturation = 1.0;
- }
+ if (accent_color_icons.has(editor_icons_names[i])) {
+ icon = editor_generate_icon(i, true, EDSCALE, 1.0, accent_color_icon_color_dictionary);
+ } else {
+ float saturation = p_icon_saturation;
- const int is_exception = exceptions.has(editor_icons_names[i]);
- const Ref<ImageTexture> icon = editor_generate_icon(i, !is_exception, EDSCALE, saturation, dark_icon_color_dictionary);
+ if (strcmp(editor_icons_names[i], "DefaultProjectIcon") == 0 || strcmp(editor_icons_names[i], "Godot") == 0 || strcmp(editor_icons_names[i], "Logo") == 0) {
+ saturation = 1.0;
+ }
+
+ const int is_exception = exceptions.has(editor_icons_names[i]);
+ icon = editor_generate_icon(i, !is_exception, EDSCALE, saturation, dark_icon_color_dictionary);
+ }
p_theme->set_icon(editor_icons_names[i], SNAME("EditorIcons"), icon);
}
@@ -514,8 +537,8 @@ Ref<Theme> create_editor_theme(const Ref<Theme> p_theme) {
// Register icons + font
- // The resolution and the icon color (dark_theme bool) has not changed, so we do not regenerate the icons.
- if (p_theme != nullptr && fabs(p_theme->get_constant(SNAME("scale"), SNAME("Editor")) - EDSCALE) < 0.00001 && (bool)p_theme->get_constant(SNAME("dark_theme"), SNAME("Editor")) == dark_theme && prev_icon_saturation == icon_saturation) {
+ // The editor scale, icon color (dark_theme bool), icon saturation, and accent color has not changed, so we do not regenerate the icons.
+ if (p_theme != nullptr && fabs(p_theme->get_constant(SNAME("scale"), SNAME("Editor")) - EDSCALE) < 0.00001 && (bool)p_theme->get_constant(SNAME("dark_theme"), SNAME("Editor")) == dark_theme && prev_icon_saturation == icon_saturation && p_theme->get_color(SNAME("accent_color"), SNAME("Editor")) == accent_color) {
// Register already generated icons.
for (int i = 0; i < editor_icons_count; i++) {
theme->set_icon(editor_icons_names[i], SNAME("EditorIcons"), p_theme->get_icon(editor_icons_names[i], SNAME("EditorIcons")));
@@ -612,7 +635,8 @@ Ref<Theme> create_editor_theme(const Ref<Theme> p_theme) {
style_tab_selected->set_border_width_all(0);
style_tab_selected->set_border_width(SIDE_TOP, Math::round(2 * EDSCALE));
// Make the highlight line prominent, but not too prominent as to not be distracting.
- style_tab_selected->set_border_color(dark_color_2.lerp(accent_color, 0.75));
+ Color tab_highlight = dark_color_2.lerp(accent_color, 0.75);
+ style_tab_selected->set_border_color(tab_highlight);
// Don't round the top corners to avoid creating a small blank space between the tabs and the main panel.
// This also makes the top highlight look better.
style_tab_selected->set_corner_radius_all(0);
@@ -1056,17 +1080,19 @@ Ref<Theme> create_editor_theme(const Ref<Theme> p_theme) {
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_stylebox("button_pressed", "TabBar", style_menu);
+ theme->set_stylebox("button_highlight", "TabBar", style_menu);
+ theme->set_stylebox("SceneTabFG", "EditorStyles", style_tab_selected);
+ theme->set_stylebox("SceneTabBG", "EditorStyles", style_tab_unselected);
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", "TabBar", font_color);
theme->set_color("font_unselected_color", "TabBar", font_disabled_color);
+ theme->set_color("drop_mark_color", "TabContainer", tab_highlight);
+ theme->set_color("drop_mark_color", "TabBar", tab_highlight);
theme->set_icon("menu", "TabContainer", theme->get_icon(SNAME("GuiTabMenu"), SNAME("EditorIcons")));
theme->set_icon("menu_highlight", "TabContainer", theme->get_icon(SNAME("GuiTabMenuHl"), SNAME("EditorIcons")));
- theme->set_stylebox("SceneTabFG", "EditorStyles", style_tab_selected);
- theme->set_stylebox("SceneTabBG", "EditorStyles", style_tab_unselected);
theme->set_icon("close", "TabBar", theme->get_icon(SNAME("GuiClose"), SNAME("EditorIcons")));
- theme->set_stylebox("button_pressed", "TabBar", style_menu);
- theme->set_stylebox("button_highlight", "TabBar", style_menu);
theme->set_icon("increment", "TabContainer", theme->get_icon(SNAME("GuiScrollArrowRight"), SNAME("EditorIcons")));
theme->set_icon("decrement", "TabContainer", theme->get_icon(SNAME("GuiScrollArrowLeft"), SNAME("EditorIcons")));
theme->set_icon("increment", "TabBar", theme->get_icon(SNAME("GuiScrollArrowRight"), SNAME("EditorIcons")));
@@ -1075,6 +1101,8 @@ Ref<Theme> create_editor_theme(const Ref<Theme> p_theme) {
theme->set_icon("decrement_highlight", "TabBar", theme->get_icon(SNAME("GuiScrollArrowLeftHl"), SNAME("EditorIcons")));
theme->set_icon("increment_highlight", "TabContainer", theme->get_icon(SNAME("GuiScrollArrowRightHl"), SNAME("EditorIcons")));
theme->set_icon("decrement_highlight", "TabContainer", theme->get_icon(SNAME("GuiScrollArrowLeftHl"), SNAME("EditorIcons")));
+ theme->set_icon("drop_mark", "TabContainer", theme->get_icon(SNAME("GuiTabDropMark"), SNAME("EditorIcons")));
+ theme->set_icon("drop_mark", "TabBar", theme->get_icon(SNAME("GuiTabDropMark"), SNAME("EditorIcons")));
theme->set_constant("hseparation", "TabBar", 4 * EDSCALE);
// Content of each tab
diff --git a/editor/export_template_manager.cpp b/editor/export_template_manager.cpp
index df3e73267e..7320f957c9 100644
--- a/editor/export_template_manager.cpp
+++ b/editor/export_template_manager.cpp
@@ -147,8 +147,8 @@ void ExportTemplateManager::_download_template(const String &p_url, bool p_skip_
download_templates->set_download_file(EditorPaths::get_singleton()->get_cache_dir().plus_file("tmp_templates.tpz"));
download_templates->set_use_threads(true);
- const String proxy_host = EDITOR_DEF("network/http_proxy/host", "");
- const int proxy_port = EDITOR_DEF("network/http_proxy/port", -1);
+ const String proxy_host = EDITOR_GET("network/http_proxy/host");
+ const int proxy_port = EDITOR_GET("network/http_proxy/port");
download_templates->set_http_proxy(proxy_host, proxy_port);
download_templates->set_https_proxy(proxy_host, proxy_port);
diff --git a/editor/filesystem_dock.cpp b/editor/filesystem_dock.cpp
index 038cc2ab2f..ee7ed77957 100644
--- a/editor/filesystem_dock.cpp
+++ b/editor/filesystem_dock.cpp
@@ -224,6 +224,19 @@ void FileSystemDock::_update_tree(const Vector<String> &p_uncollapsed_paths, boo
favorites->set_collapsed(p_uncollapsed_paths.find("Favorites") < 0);
Vector<String> favorite_paths = EditorSettings::get_singleton()->get_favorites();
+
+ DirAccessRef da = DirAccess::create(DirAccess::ACCESS_RESOURCES);
+ bool fav_changed = false;
+ for (int i = favorite_paths.size() - 1; i >= 0; i--) {
+ if (!da->dir_exists(favorite_paths[i])) {
+ favorite_paths.remove_at(i);
+ fav_changed = true;
+ }
+ }
+ if (fav_changed) {
+ EditorSettings::get_singleton()->set_favorites(favorite_paths);
+ }
+
for (int i = 0; i < favorite_paths.size(); i++) {
String fave = favorite_paths[i];
if (!fave.begins_with("res://")) {
@@ -1413,6 +1426,12 @@ void FileSystemDock::_make_dir_confirm() {
if (!directory.ends_with("/")) {
directory = directory.get_base_dir();
}
+
+ if (EditorFileSystem::get_singleton()->get_filesystem_path(directory + dir_name)) {
+ EditorNode::get_singleton()->show_warning(TTR("Could not create folder. File with that name already exists."));
+ return;
+ }
+
print_verbose("Making folder " + dir_name + " in " + directory);
DirAccessRef da = DirAccess::create(DirAccess::ACCESS_RESOURCES);
Error err = da->change_dir(directory);
diff --git a/editor/groups_editor.cpp b/editor/groups_editor.cpp
index 4b3a7a8313..37d535aed2 100644
--- a/editor/groups_editor.cpp
+++ b/editor/groups_editor.cpp
@@ -416,6 +416,8 @@ void GroupDialog::_bind_methods() {
ClassDB::bind_method("_rename_group_item", &GroupDialog::_rename_group_item);
+ ClassDB::bind_method("_group_selected", &GroupDialog::_group_selected);
+
ADD_SIGNAL(MethodInfo("group_edited"));
}
diff --git a/editor/icons/GuiTabDropMark.svg b/editor/icons/GuiTabDropMark.svg
new file mode 100644
index 0000000000..c85b165c71
--- /dev/null
+++ b/editor/icons/GuiTabDropMark.svg
@@ -0,0 +1 @@
+<svg height="32" viewBox="0 0 16 32" width="16" xmlns="http://www.w3.org/2000/svg"><path d="m5 2h6v30h-6z" fill="#fff"/></svg>
diff --git a/editor/import/editor_import_collada.cpp b/editor/import/editor_import_collada.cpp
index 3b5a82b2c3..69fa64c24c 100644
--- a/editor/import/editor_import_collada.cpp
+++ b/editor/import/editor_import_collada.cpp
@@ -994,13 +994,12 @@ Error ColladaImport::_create_mesh_surfaces(bool p_optimize, Ref<ImporterMesh> &p
Array a = p_morph_meshes[mi]->get_surface_arrays(surface);
//add valid weight and bone arrays if they exist, TODO check if they are unique to shape (generally not)
- if (has_weights) {
- a[Mesh::ARRAY_WEIGHTS] = d[Mesh::ARRAY_WEIGHTS];
- a[Mesh::ARRAY_BONES] = d[Mesh::ARRAY_BONES];
+ // Enforce blend shape mask array format
+ for (int mj = 0; mj < Mesh::ARRAY_MAX; mj++) {
+ if (!(Mesh::ARRAY_FORMAT_BLEND_SHAPE_MASK & (1 << mj))) {
+ a[mj] = Variant();
+ }
}
-
- a[Mesh::ARRAY_INDEX] = Variant();
- //a.resize(Mesh::ARRAY_MAX); //no need for index
mr.push_back(a);
}
diff --git a/editor/import/resource_importer_dynamic_font.cpp b/editor/import/resource_importer_dynamic_font.cpp
index 077b94bb4e..a7f6d09aed 100644
--- a/editor/import/resource_importer_dynamic_font.cpp
+++ b/editor/import/resource_importer_dynamic_font.cpp
@@ -52,7 +52,7 @@ void ResourceImporterDynamicFont::get_recognized_extensions(List<String> *p_exte
p_extensions->push_back("ttf");
p_extensions->push_back("otf");
p_extensions->push_back("woff");
- //p_extensions->push_back("woff2");
+ p_extensions->push_back("woff2");
p_extensions->push_back("pfb");
p_extensions->push_back("pfm");
#endif
diff --git a/editor/import/resource_importer_texture.cpp b/editor/import/resource_importer_texture.cpp
index 8d6db7d1e0..e2fa624fc6 100644
--- a/editor/import/resource_importer_texture.cpp
+++ b/editor/import/resource_importer_texture.cpp
@@ -171,6 +171,11 @@ bool ResourceImporterTexture::get_option_visibility(const String &p_path, const
if (compress_mode < COMPRESS_VRAM_COMPRESSED) {
return false;
}
+ } else if (p_option == "compress/normal_map") {
+ int compress_mode = int(p_options["compress/mode"]);
+ if (compress_mode == COMPRESS_LOSSLESS) {
+ return false;
+ }
} else if (p_option == "mipmaps/limit") {
return p_options["mipmaps/generate"];
diff --git a/editor/import/resource_importer_wav.cpp b/editor/import/resource_importer_wav.cpp
index 8cb9a47fb5..68d1d23dd8 100644
--- a/editor/import/resource_importer_wav.cpp
+++ b/editor/import/resource_importer_wav.cpp
@@ -63,6 +63,11 @@ bool ResourceImporterWAV::get_option_visibility(const String &p_path, const Stri
return false;
}
+ // Don't show begin/end loop points if loop mode is auto-detected or disabled.
+ if ((int)p_options["edit/loop_mode"] < 2 && (p_option == "edit/loop_begin" || p_option == "edit/loop_end")) {
+ return false;
+ }
+
return true;
}
@@ -81,7 +86,10 @@ void ResourceImporterWAV::get_import_options(const String &p_path, List<ImportOp
r_options->push_back(ImportOption(PropertyInfo(Variant::FLOAT, "force/max_rate_hz", PROPERTY_HINT_RANGE, "11025,192000,1,exp"), 44100));
r_options->push_back(ImportOption(PropertyInfo(Variant::BOOL, "edit/trim"), false));
r_options->push_back(ImportOption(PropertyInfo(Variant::BOOL, "edit/normalize"), false));
- r_options->push_back(ImportOption(PropertyInfo(Variant::BOOL, "edit/loop"), false));
+ // Keep the `edit/loop_mode` enum in sync with AudioStreamSample::LoopMode (note: +1 offset due to "Detect From WAV").
+ r_options->push_back(ImportOption(PropertyInfo(Variant::INT, "edit/loop_mode", PROPERTY_HINT_ENUM, "Detect From WAV,Disabled,Forward,Ping-Pong,Backward", PROPERTY_USAGE_DEFAULT | PROPERTY_USAGE_UPDATE_ALL_IF_MODIFIED), 0));
+ r_options->push_back(ImportOption(PropertyInfo(Variant::INT, "edit/loop_begin"), 0));
+ r_options->push_back(ImportOption(PropertyInfo(Variant::INT, "edit/loop_end"), -1));
r_options->push_back(ImportOption(PropertyInfo(Variant::INT, "compress/mode", PROPERTY_HINT_ENUM, "Disabled,RAM (Ima-ADPCM)"), 0));
}
@@ -119,10 +127,14 @@ Error ResourceImporterWAV::import(const String &p_source_file, const String &p_s
ERR_FAIL_V_MSG(ERR_FILE_UNRECOGNIZED, "Not a WAV file (no WAVE RIFF header).");
}
+ // Let users override potential loop points from the WAV.
+ // We parse the WAV loop points only with "Detect From WAV" (0).
+ int import_loop_mode = p_options["edit/loop_mode"];
+
int format_bits = 0;
int format_channels = 0;
- AudioStreamSample::LoopMode loop = AudioStreamSample::LOOP_DISABLED;
+ AudioStreamSample::LoopMode loop_mode = AudioStreamSample::LOOP_DISABLED;
uint16_t compression_code = 1;
bool format_found = false;
bool data_found = false;
@@ -248,8 +260,8 @@ Error ResourceImporterWAV::import(const String &p_source_file, const String &p_s
}
}
- if (chunkID[0] == 's' && chunkID[1] == 'm' && chunkID[2] == 'p' && chunkID[3] == 'l') {
- //loop point info!
+ if (import_loop_mode == 0 && chunkID[0] == 's' && chunkID[1] == 'm' && chunkID[2] == 'p' && chunkID[3] == 'l') {
+ // Loop point info!
/**
* Consider exploring next document:
@@ -270,11 +282,11 @@ Error ResourceImporterWAV::import(const String &p_source_file, const String &p_s
int loop_type = file->get_32();
if (loop_type == 0x00 || loop_type == 0x01 || loop_type == 0x02) {
if (loop_type == 0x00) {
- loop = AudioStreamSample::LOOP_FORWARD;
+ loop_mode = AudioStreamSample::LOOP_FORWARD;
} else if (loop_type == 0x01) {
- loop = AudioStreamSample::LOOP_PINGPONG;
+ loop_mode = AudioStreamSample::LOOP_PINGPONG;
} else if (loop_type == 0x02) {
- loop = AudioStreamSample::LOOP_BACKWARD;
+ loop_mode = AudioStreamSample::LOOP_BACKWARD;
}
loop_begin = file->get_32();
loop_end = file->get_32();
@@ -346,7 +358,7 @@ Error ResourceImporterWAV::import(const String &p_source_file, const String &p_s
}
}
- if (loop) {
+ if (loop_mode) {
loop_begin = (int)(loop_begin * (float)new_data_frames / (float)frames);
loop_end = (int)(loop_end * (float)new_data_frames / (float)frames);
}
@@ -377,7 +389,7 @@ Error ResourceImporterWAV::import(const String &p_source_file, const String &p_s
bool trim = p_options["edit/trim"];
- if (trim && !loop && format_channels > 0) {
+ if (trim && (loop_mode != AudioStreamSample::LOOP_DISABLED) && format_channels > 0) {
int first = 0;
int last = (frames / format_channels) - 1;
bool found = false;
@@ -421,12 +433,17 @@ Error ResourceImporterWAV::import(const String &p_source_file, const String &p_s
}
}
- bool make_loop = p_options["edit/loop"];
-
- if (make_loop && !loop) {
- loop = AudioStreamSample::LOOP_FORWARD;
- loop_begin = 0;
- loop_end = frames;
+ if (import_loop_mode >= 2) {
+ loop_mode = (AudioStreamSample::LoopMode)(import_loop_mode - 1);
+ loop_begin = p_options["edit/loop_begin"];
+ loop_end = p_options["edit/loop_end"];
+ // Wrap around to max frames, so `-1` can be used to select the end, etc.
+ if (loop_begin < 0) {
+ loop_begin = CLAMP(loop_begin + frames + 1, 0, frames);
+ }
+ if (loop_end < 0) {
+ loop_end = CLAMP(loop_end + frames + 1, 0, frames);
+ }
}
int compression = p_options["compress/mode"];
@@ -512,7 +529,7 @@ Error ResourceImporterWAV::import(const String &p_source_file, const String &p_s
sample->set_data(dst_data);
sample->set_format(dst_format);
sample->set_mix_rate(rate);
- sample->set_loop_mode(loop);
+ sample->set_loop_mode(loop_mode);
sample->set_loop_begin(loop_begin);
sample->set_loop_end(loop_end);
sample->set_stereo(format_channels == 2);
diff --git a/editor/import/scene_import_settings.cpp b/editor/import/scene_import_settings.cpp
index a4ae560d35..302bc98499 100644
--- a/editor/import/scene_import_settings.cpp
+++ b/editor/import/scene_import_settings.cpp
@@ -529,6 +529,8 @@ void SceneImportSettings::open_settings(const String &p_path) {
base_viewport->add_child(scene);
+ inspector->edit(nullptr);
+
if (first_aabb) {
contents_aabb = AABB(Vector3(-1, -1, -1), Vector3(2, 2, 2));
first_aabb = false;
@@ -842,6 +844,10 @@ void SceneImportSettings::_notification(int p_what) {
case NOTIFICATION_READY: {
connect("confirmed", callable_mp(this, &SceneImportSettings::_re_import));
} break;
+
+ case EditorSettings::NOTIFICATION_EDITOR_SETTINGS_CHANGED: {
+ inspector->set_property_name_style(EditorPropertyNameProcessor::get_settings_style());
+ } break;
}
}
@@ -1229,6 +1235,7 @@ SceneImportSettings::SceneImportSettings() {
inspector = memnew(EditorInspector);
inspector->set_custom_minimum_size(Size2(300 * EDSCALE, 0));
+ inspector->set_property_name_style(EditorPropertyNameProcessor::get_settings_style());
property_split->add_child(inspector);
diff --git a/editor/import_dock.cpp b/editor/import_dock.cpp
index 9f1daac69f..4df46f2348 100644
--- a/editor/import_dock.cpp
+++ b/editor/import_dock.cpp
@@ -564,6 +564,7 @@ void ImportDock::_notification(int p_what) {
switch (p_what) {
case EditorSettings::NOTIFICATION_EDITOR_SETTINGS_CHANGED: {
imported->add_theme_style_override("normal", get_theme_stylebox(SNAME("normal"), SNAME("LineEdit")));
+ import_opts->set_property_name_style(EditorPropertyNameProcessor::get_settings_style());
} break;
case NOTIFICATION_ENTER_TREE: {
@@ -638,6 +639,7 @@ ImportDock::ImportDock() {
import_opts = memnew(EditorInspector);
content->add_child(import_opts);
import_opts->set_v_size_flags(SIZE_EXPAND_FILL);
+ import_opts->set_property_name_style(EditorPropertyNameProcessor::get_settings_style());
import_opts->connect("property_edited", callable_mp(this, &ImportDock::_property_edited));
import_opts->connect("property_toggled", callable_mp(this, &ImportDock::_property_toggled));
diff --git a/editor/inspector_dock.cpp b/editor/inspector_dock.cpp
index 087e51b0cb..f0fe48f4fc 100644
--- a/editor/inspector_dock.cpp
+++ b/editor/inspector_dock.cpp
@@ -37,6 +37,13 @@
InspectorDock *InspectorDock::singleton = nullptr;
+void InspectorDock::_prepare_menu() {
+ PopupMenu *menu = object_menu->get_popup();
+ for (int i = EditorPropertyNameProcessor::STYLE_RAW; i <= EditorPropertyNameProcessor::STYLE_LOCALIZED; i++) {
+ menu->set_item_checked(menu->get_item_index(PROPERTY_NAME_STYLE_RAW + i), i == property_name_style);
+ }
+}
+
void InspectorDock::_menu_option(int p_option) {
_menu_option_confirm(p_option, false);
}
@@ -175,6 +182,13 @@ void InspectorDock::_menu_option_confirm(int p_option, bool p_confirmed) {
} break;
+ case PROPERTY_NAME_STYLE_RAW:
+ case PROPERTY_NAME_STYLE_CAPITALIZED:
+ case PROPERTY_NAME_STYLE_LOCALIZED: {
+ property_name_style = (EditorPropertyNameProcessor::Style)(p_option - PROPERTY_NAME_STYLE_RAW);
+ inspector->set_property_name_style(property_name_style);
+ } break;
+
default: {
if (p_option >= OBJECT_METHOD_BASE) {
ERR_FAIL_COND(!current);
@@ -236,7 +250,7 @@ void InspectorDock::_resource_file_selected(String p_file) {
}
void InspectorDock::_save_resource(bool save_as) {
- ObjectID current = EditorNode::get_singleton()->get_editor_history()->get_current();
+ ObjectID current = EditorNode::get_singleton()->get_editor_selection_history()->get_current();
Object *current_obj = current.is_valid() ? ObjectDB::get_instance(current) : nullptr;
ERR_FAIL_COND(!Object::cast_to<Resource>(current_obj));
@@ -251,7 +265,7 @@ void InspectorDock::_save_resource(bool save_as) {
}
void InspectorDock::_unref_resource() {
- ObjectID current = EditorNode::get_singleton()->get_editor_history()->get_current();
+ ObjectID current = EditorNode::get_singleton()->get_editor_selection_history()->get_current();
Object *current_obj = current.is_valid() ? ObjectDB::get_instance(current) : nullptr;
ERR_FAIL_COND(!Object::cast_to<Resource>(current_obj));
@@ -262,7 +276,7 @@ void InspectorDock::_unref_resource() {
}
void InspectorDock::_copy_resource() {
- ObjectID current = EditorNode::get_singleton()->get_editor_history()->get_current();
+ ObjectID current = EditorNode::get_singleton()->get_editor_selection_history()->get_current();
Object *current_obj = current.is_valid() ? ObjectDB::get_instance(current) : nullptr;
ERR_FAIL_COND(!Object::cast_to<Resource>(current_obj));
@@ -286,7 +300,7 @@ void InspectorDock::_prepare_resource_extra_popup() {
}
void InspectorDock::_prepare_history() {
- EditorHistory *editor_history = EditorNode::get_singleton()->get_editor_history();
+ EditorSelectionHistory *editor_history = EditorNode::get_singleton()->get_editor_selection_history();
int history_to = MAX(0, editor_history->get_history_len() - 25);
@@ -338,7 +352,7 @@ void InspectorDock::_prepare_history() {
void InspectorDock::_select_history(int p_idx) {
//push it to the top, it is not correct, but it's more useful
- ObjectID id = EditorNode::get_singleton()->get_editor_history()->get_history_obj(p_idx);
+ ObjectID id = EditorNode::get_singleton()->get_editor_selection_history()->get_history_obj(p_idx);
Object *obj = ObjectDB::get_instance(id);
if (!obj) {
return;
@@ -366,13 +380,13 @@ void InspectorDock::_resource_selected(const RES &p_res, const String &p_propert
}
void InspectorDock::_edit_forward() {
- if (EditorNode::get_singleton()->get_editor_history()->next()) {
+ if (EditorNode::get_singleton()->get_editor_selection_history()->next()) {
EditorNode::get_singleton()->edit_current();
}
}
void InspectorDock::_edit_back() {
- EditorHistory *editor_history = EditorNode::get_singleton()->get_editor_history();
+ EditorSelectionHistory *editor_history = EditorNode::get_singleton()->get_editor_selection_history();
if ((current && editor_history->previous()) || editor_history->get_path_size() == 1) {
EditorNode::get_singleton()->edit_current();
}
@@ -437,6 +451,8 @@ void InspectorDock::_bind_methods() {
ClassDB::bind_method("_menu_collapseall", &InspectorDock::_menu_collapseall);
ClassDB::bind_method("_menu_expandall", &InspectorDock::_menu_expandall);
+ ClassDB::bind_method("edit_resource", &InspectorDock::edit_resource);
+
ADD_SIGNAL(MethodInfo("request_help"));
}
@@ -460,7 +476,7 @@ void InspectorDock::clear() {
}
void InspectorDock::update(Object *p_object) {
- EditorHistory *editor_history = EditorNode::get_singleton()->get_editor_history();
+ EditorSelectionHistory *editor_history = EditorNode::get_singleton()->get_editor_selection_history();
backward_button->set_disabled(editor_history->is_at_beginning());
forward_button->set_disabled(editor_history->is_at_end());
@@ -499,8 +515,19 @@ void InspectorDock::update(Object *p_object) {
p->clear();
p->add_icon_shortcut(get_theme_icon(SNAME("GuiTreeArrowDown"), SNAME("EditorIcons")), ED_SHORTCUT("property_editor/expand_all", TTR("Expand All")), EXPAND_ALL);
p->add_icon_shortcut(get_theme_icon(SNAME("GuiTreeArrowRight"), SNAME("EditorIcons")), ED_SHORTCUT("property_editor/collapse_all", TTR("Collapse All")), COLLAPSE_ALL);
- p->add_separator();
+ p->add_separator(TTR("Property Name Style"));
+ p->add_radio_check_item(TTR("Raw"), PROPERTY_NAME_STYLE_RAW);
+ p->add_radio_check_item(TTR("Capitalized"), PROPERTY_NAME_STYLE_CAPITALIZED);
+ p->add_radio_check_item(TTR("Localized"), PROPERTY_NAME_STYLE_LOCALIZED);
+
+ if (!EditorPropertyNameProcessor::is_localization_available()) {
+ const int index = p->get_item_index(PROPERTY_NAME_STYLE_LOCALIZED);
+ p->set_item_disabled(index, true);
+ p->set_item_tooltip(index, TTR("Localization not available for current language."));
+ }
+
+ p->add_separator();
p->add_shortcut(ED_SHORTCUT("property_editor/copy_params", TTR("Copy Properties")), OBJECT_COPY_PARAMS);
p->add_shortcut(ED_SHORTCUT("property_editor/paste_params", TTR("Paste Properties")), OBJECT_PASTE_PARAMS);
@@ -534,12 +561,18 @@ void InspectorDock::go_back() {
_edit_back();
}
+EditorPropertyNameProcessor::Style InspectorDock::get_property_name_style() const {
+ return property_name_style;
+}
+
InspectorDock::InspectorDock(EditorData &p_editor_data) {
singleton = this;
set_name("Inspector");
editor_data = &p_editor_data;
+ property_name_style = EditorPropertyNameProcessor::get_default_inspector_style();
+
HBoxContainer *general_options_hb = memnew(HBoxContainer);
add_child(general_options_hb);
@@ -602,7 +635,7 @@ InspectorDock::InspectorDock(EditorData &p_editor_data) {
HBoxContainer *subresource_hb = memnew(HBoxContainer);
add_child(subresource_hb);
- editor_path = memnew(EditorPath(EditorNode::get_singleton()->get_editor_history()));
+ editor_path = memnew(EditorPath(EditorNode::get_singleton()->get_editor_selection_history()));
editor_path->set_h_size_flags(Control::SIZE_EXPAND_FILL);
subresource_hb->add_child(editor_path);
@@ -632,6 +665,7 @@ InspectorDock::InspectorDock(EditorData &p_editor_data) {
object_menu->set_shortcut_context(this);
property_tools_hb->add_child(object_menu);
object_menu->set_tooltip(TTR("Manage object properties."));
+ object_menu->get_popup()->connect("about_to_popup", callable_mp(this, &InspectorDock::_prepare_menu));
object_menu->get_popup()->connect("id_pressed", callable_mp(this, &InspectorDock::_menu_option));
warning = memnew(Button);
@@ -679,7 +713,8 @@ InspectorDock::InspectorDock(EditorData &p_editor_data) {
inspector->set_v_size_flags(Control::SIZE_EXPAND_FILL);
inspector->set_use_doc_hints(true);
inspector->set_hide_script(false);
- inspector->set_enable_capitalize_paths(bool(EDITOR_GET("interface/inspector/capitalize_properties")));
+ inspector->set_hide_metadata(false);
+ inspector->set_property_name_style(EditorPropertyNameProcessor::get_default_inspector_style());
inspector->set_use_folding(!bool(EDITOR_GET("interface/inspector/disable_folding")));
inspector->register_text_enter(search);
inspector->set_undo_redo(&editor_data->get_undo_redo());
diff --git a/editor/inspector_dock.h b/editor/inspector_dock.h
index 27552407bd..7e653c4750 100644
--- a/editor/inspector_dock.h
+++ b/editor/inspector_dock.h
@@ -62,6 +62,11 @@ class InspectorDock : public VBoxContainer {
COLLAPSE_ALL,
EXPAND_ALL,
+ // Matches `EditorPropertyNameProcessor::Style`.
+ PROPERTY_NAME_STYLE_RAW,
+ PROPERTY_NAME_STYLE_CAPITALIZED,
+ PROPERTY_NAME_STYLE_LOCALIZED,
+
OBJECT_METHOD_BASE = 500
};
@@ -94,6 +99,9 @@ class InspectorDock : public VBoxContainer {
ConfirmationDialog *unique_resources_confirmation;
Tree *unique_resources_list_tree;
+ EditorPropertyNameProcessor::Style property_name_style;
+
+ void _prepare_menu();
void _menu_option(int p_option);
void _menu_confirm_current();
void _menu_option_confirm(int p_option, bool p_confirmed);
@@ -139,6 +147,8 @@ public:
Container *get_addon_area();
EditorInspector *get_inspector() { return inspector; }
+ EditorPropertyNameProcessor::Style get_property_name_style() const;
+
InspectorDock(EditorData &p_editor_data);
~InspectorDock();
};
diff --git a/editor/plugins/asset_library_editor_plugin.cpp b/editor/plugins/asset_library_editor_plugin.cpp
index 1468d63daf..20bd145299 100644
--- a/editor/plugins/asset_library_editor_plugin.cpp
+++ b/editor/plugins/asset_library_editor_plugin.cpp
@@ -997,7 +997,7 @@ HBoxContainer *EditorAssetLibrary::_make_pages(int p_page, int p_page_count, int
hbc->add_theme_constant_override("separation", 5 * EDSCALE);
Button *first = memnew(Button);
- first->set_text(TTR("First"));
+ first->set_text(TTR("First", "Pagination"));
if (p_page != 0) {
first->connect("pressed", callable_mp(this, &EditorAssetLibrary::_search), varray(0));
} else {
@@ -1007,7 +1007,7 @@ HBoxContainer *EditorAssetLibrary::_make_pages(int p_page, int p_page_count, int
hbc->add_child(first);
Button *prev = memnew(Button);
- prev->set_text(TTR("Previous"));
+ prev->set_text(TTR("Previous", "Pagination"));
if (p_page > 0) {
prev->connect("pressed", callable_mp(this, &EditorAssetLibrary::_search), varray(p_page - 1));
} else {
@@ -1037,7 +1037,7 @@ HBoxContainer *EditorAssetLibrary::_make_pages(int p_page, int p_page_count, int
}
Button *next = memnew(Button);
- next->set_text(TTR("Next"));
+ next->set_text(TTR("Next", "Pagination"));
if (p_page < p_page_count - 1) {
next->connect("pressed", callable_mp(this, &EditorAssetLibrary::_search), varray(p_page + 1));
} else {
@@ -1048,7 +1048,7 @@ HBoxContainer *EditorAssetLibrary::_make_pages(int p_page, int p_page_count, int
hbc->add_child(next);
Button *last = memnew(Button);
- last->set_text(TTR("Last"));
+ last->set_text(TTR("Last", "Pagination"));
if (p_page != p_page_count - 1) {
last->connect("pressed", callable_mp(this, &EditorAssetLibrary::_search), varray(p_page_count - 1));
} else {
diff --git a/editor/plugins/canvas_item_editor_plugin.cpp b/editor/plugins/canvas_item_editor_plugin.cpp
index d713e70251..764f467192 100644
--- a/editor/plugins/canvas_item_editor_plugin.cpp
+++ b/editor/plugins/canvas_item_editor_plugin.cpp
@@ -4324,8 +4324,8 @@ void CanvasItemEditor::_popup_callback(int p_op) {
undo_redo->add_do_method(this, "emit_signal", "item_lock_status_changed");
undo_redo->add_undo_method(this, "emit_signal", "item_lock_status_changed");
}
- undo_redo->add_do_method(viewport, "update", Variant());
- undo_redo->add_undo_method(viewport, "update", Variant());
+ undo_redo->add_do_method(viewport, "update");
+ undo_redo->add_undo_method(viewport, "update");
undo_redo->commit_action();
} break;
case UNLOCK_SELECTED: {
@@ -4346,8 +4346,8 @@ void CanvasItemEditor::_popup_callback(int p_op) {
undo_redo->add_do_method(this, "emit_signal", "item_lock_status_changed");
undo_redo->add_undo_method(this, "emit_signal", "item_lock_status_changed");
}
- undo_redo->add_do_method(viewport, "update", Variant());
- undo_redo->add_undo_method(viewport, "update", Variant());
+ undo_redo->add_do_method(viewport, "update");
+ undo_redo->add_undo_method(viewport, "update");
undo_redo->commit_action();
} break;
case GROUP_SELECTED: {
@@ -4368,8 +4368,8 @@ void CanvasItemEditor::_popup_callback(int p_op) {
undo_redo->add_do_method(this, "emit_signal", "item_group_status_changed");
undo_redo->add_undo_method(this, "emit_signal", "item_group_status_changed");
}
- undo_redo->add_do_method(viewport, "update", Variant());
- undo_redo->add_undo_method(viewport, "update", Variant());
+ undo_redo->add_do_method(viewport, "update");
+ undo_redo->add_undo_method(viewport, "update");
undo_redo->commit_action();
} break;
case UNGROUP_SELECTED: {
@@ -4390,8 +4390,8 @@ void CanvasItemEditor::_popup_callback(int p_op) {
undo_redo->add_do_method(this, "emit_signal", "item_group_status_changed");
undo_redo->add_undo_method(this, "emit_signal", "item_group_status_changed");
}
- undo_redo->add_do_method(viewport, "update", Variant());
- undo_redo->add_undo_method(viewport, "update", Variant());
+ undo_redo->add_do_method(viewport, "update");
+ undo_redo->add_undo_method(viewport, "update");
undo_redo->commit_action();
} break;
diff --git a/editor/plugins/control_editor_plugin.cpp b/editor/plugins/control_editor_plugin.cpp
index 7b85fea1e9..5ca8216d4d 100644
--- a/editor/plugins/control_editor_plugin.cpp
+++ b/editor/plugins/control_editor_plugin.cpp
@@ -818,7 +818,7 @@ void ControlEditorToolbar::_notification(int p_what) {
switch (p_what) {
case NOTIFICATION_ENTER_TREE:
case EditorSettings::NOTIFICATION_EDITOR_SETTINGS_CHANGED: {
- anchor_layouts_icon->set_texture(get_theme_icon(SNAME("ControlLayout"), SNAME("EditorIcons")));
+ anchor_presets_menu->set_icon(get_theme_icon(SNAME("ControlLayout"), SNAME("EditorIcons")));
PopupMenu *p = anchor_presets_menu->get_popup();
p->clear();
@@ -871,7 +871,8 @@ void ControlEditorToolbar::_notification(int p_what) {
anchor_mode_button->set_icon(get_theme_icon(SNAME("Anchor"), SNAME("EditorIcons")));
- container_layouts_icon->set_texture(get_theme_icon(SNAME("Container"), SNAME("EditorIcons")));
+ container_h_presets_menu->set_icon(get_theme_icon(SNAME("Container"), SNAME("EditorIcons")));
+ container_v_presets_menu->set_icon(get_theme_icon(SNAME("Container"), SNAME("EditorIcons")));
p = container_h_presets_menu->get_popup();
p->clear();
@@ -925,27 +926,19 @@ void ControlEditorToolbar::_notification(int p_what) {
}
if (enable_anchors) {
- anchor_presets_menu->set_disabled(false);
- anchor_presets_menu->set_tooltip(TTR("Presets for the anchor and offset values of a Control node."));
- anchor_mode_button->set_disabled(false);
- anchor_mode_button->set_tooltip(TTR("When active, moving Control nodes changes their anchors instead of their offsets."));
+ anchor_presets_menu->set_visible(true);
+ anchor_mode_button->set_visible(true);
} else {
- anchor_presets_menu->set_disabled(true);
- anchor_presets_menu->set_tooltip(TTR("Children of containers have their anchors and offsets values controlled by their parent."));
- anchor_mode_button->set_disabled(true);
- anchor_mode_button->set_tooltip(TTR("Children of containers have their anchors and offsets values controlled by their parent."));
+ anchor_presets_menu->set_visible(false);
+ anchor_mode_button->set_visible(false);
}
if (enable_containers) {
- container_h_presets_menu->set_disabled(false);
- container_h_presets_menu->set_tooltip(TTR("Horizontal sizing setting for children of a Container node."));
- container_v_presets_menu->set_disabled(false);
- container_v_presets_menu->set_tooltip(TTR("Vertical sizing setting for children of a Container node."));
+ container_h_presets_menu->set_visible(true);
+ container_v_presets_menu->set_visible(true);
} else {
- container_h_presets_menu->set_disabled(true);
- container_h_presets_menu->set_tooltip(TTR("Children of regular controls are controlled by their anchors and offsets."));
- container_v_presets_menu->set_disabled(true);
- container_v_presets_menu->set_tooltip(TTR("Children of regular controls are controlled by their anchors and offsets."));
+ container_h_presets_menu->set_visible(false);
+ container_v_presets_menu->set_visible(false);
}
} else {
set_visible(false);
@@ -955,18 +948,10 @@ void ControlEditorToolbar::_notification(int p_what) {
}
ControlEditorToolbar::ControlEditorToolbar() {
- anchor_layouts_icon = memnew(TextureRect);
- anchor_layouts_icon->set_stretch_mode(TextureRect::StretchMode::STRETCH_KEEP_CENTERED);
- add_child(anchor_layouts_icon);
-
- Label *l = memnew(Label);
- l->set_text(TTR("Anchors"));
- l->set_vertical_alignment(VerticalAlignment::VERTICAL_ALIGNMENT_CENTER);
- add_child(l);
-
anchor_presets_menu = memnew(MenuButton);
anchor_presets_menu->set_shortcut_context(this);
- anchor_presets_menu->set_text(TTR("Preset"));
+ anchor_presets_menu->set_text(TTR("Anchors"));
+ anchor_presets_menu->set_tooltip(TTR("Presets for the anchor and offset values of a Control node."));
add_child(anchor_presets_menu);
anchor_presets_menu->set_switch_on_hover(true);
@@ -981,23 +966,16 @@ ControlEditorToolbar::ControlEditorToolbar() {
anchor_mode_button = memnew(Button);
anchor_mode_button->set_flat(true);
anchor_mode_button->set_toggle_mode(true);
+ anchor_mode_button->set_tooltip(TTR("When active, moving Control nodes changes their anchors instead of their offsets."));
add_child(anchor_mode_button);
anchor_mode_button->connect("toggled", callable_mp(this, &ControlEditorToolbar::_button_toggle_anchor_mode));
add_child(memnew(VSeparator));
- container_layouts_icon = memnew(TextureRect);
- container_layouts_icon->set_stretch_mode(TextureRect::StretchMode::STRETCH_KEEP_CENTERED);
- add_child(container_layouts_icon);
-
- l = memnew(Label);
- l->set_text(TTR("Containers"));
- l->set_vertical_alignment(VerticalAlignment::VERTICAL_ALIGNMENT_CENTER);
- add_child(l);
-
container_h_presets_menu = memnew(MenuButton);
container_h_presets_menu->set_shortcut_context(this);
container_h_presets_menu->set_text(TTR("Horizontal"));
+ container_h_presets_menu->set_tooltip(TTR("Horizontal sizing setting for children of a Container node."));
add_child(container_h_presets_menu);
container_h_presets_menu->set_switch_on_hover(true);
@@ -1007,6 +985,7 @@ ControlEditorToolbar::ControlEditorToolbar() {
container_v_presets_menu = memnew(MenuButton);
container_v_presets_menu->set_shortcut_context(this);
container_v_presets_menu->set_text(TTR("Vertical"));
+ container_v_presets_menu->set_tooltip(TTR("Vertical sizing setting for children of a Container node."));
add_child(container_v_presets_menu);
container_v_presets_menu->set_switch_on_hover(true);
diff --git a/editor/plugins/control_editor_plugin.h b/editor/plugins/control_editor_plugin.h
index bbbada2b3f..37d218abb9 100644
--- a/editor/plugins/control_editor_plugin.h
+++ b/editor/plugins/control_editor_plugin.h
@@ -198,10 +198,8 @@ class ControlEditorToolbar : public HBoxContainer {
CONTAINERS_V_PRESET_SHRINK_END,
};
- TextureRect *anchor_layouts_icon;
MenuButton *anchor_presets_menu;
PopupMenu *anchors_popup;
- TextureRect *container_layouts_icon;
MenuButton *container_h_presets_menu;
MenuButton *container_v_presets_menu;
diff --git a/editor/plugins/mesh_instance_3d_editor_plugin.cpp b/editor/plugins/mesh_instance_3d_editor_plugin.cpp
index 8f285cb7f9..d33803213a 100644
--- a/editor/plugins/mesh_instance_3d_editor_plugin.cpp
+++ b/editor/plugins/mesh_instance_3d_editor_plugin.cpp
@@ -75,7 +75,7 @@ void MeshInstance3DEditor::_menu_option(int p_option) {
CollisionShape3D *cshape = memnew(CollisionShape3D);
cshape->set_shape(shape);
StaticBody3D *body = memnew(StaticBody3D);
- body->add_child(cshape);
+ body->add_child(cshape, true);
Node *owner = node == get_tree()->get_edited_scene_root() ? node : node->get_owner();
@@ -110,7 +110,7 @@ void MeshInstance3DEditor::_menu_option(int p_option) {
CollisionShape3D *cshape = memnew(CollisionShape3D);
cshape->set_shape(shape);
StaticBody3D *body = memnew(StaticBody3D);
- body->add_child(cshape);
+ body->add_child(cshape, true);
Node *owner = instance == get_tree()->get_edited_scene_root() ? instance : instance->get_owner();
diff --git a/editor/plugins/mesh_library_editor_plugin.cpp b/editor/plugins/mesh_library_editor_plugin.cpp
index 41e3471a78..423ec5f4ed 100644
--- a/editor/plugins/mesh_library_editor_plugin.cpp
+++ b/editor/plugins/mesh_library_editor_plugin.cpp
@@ -271,7 +271,7 @@ MeshLibraryEditor::MeshLibraryEditor() {
menu = memnew(MenuButton);
Node3DEditor::get_singleton()->add_control_to_menu_panel(menu);
menu->set_position(Point2(1, 1));
- menu->set_text(TTR("Mesh Library"));
+ menu->set_text(TTR("MeshLibrary"));
menu->set_icon(EditorNode::get_singleton()->get_gui_base()->get_theme_icon(SNAME("MeshLibrary"), SNAME("EditorIcons")));
menu->get_popup()->add_item(TTR("Add Item"), MENU_OPTION_ADD_ITEM);
menu->get_popup()->add_item(TTR("Remove Selected Item"), MENU_OPTION_REMOVE_ITEM);
diff --git a/editor/plugins/node_3d_editor_plugin.cpp b/editor/plugins/node_3d_editor_plugin.cpp
index 52e60b606c..eab477adb7 100644
--- a/editor/plugins/node_3d_editor_plugin.cpp
+++ b/editor/plugins/node_3d_editor_plugin.cpp
@@ -205,7 +205,7 @@ void ViewportRotationControl::gui_input(const Ref<InputEvent> &p_event) {
orbiting = false;
if (Input::get_singleton()->get_mouse_mode() == Input::MOUSE_MODE_CAPTURED) {
Input::get_singleton()->set_mouse_mode(Input::MOUSE_MODE_VISIBLE);
- Input::get_singleton()->warp_mouse_position(orbiting_mouse_start);
+ Input::get_singleton()->warp_mouse(orbiting_mouse_start);
}
}
}
@@ -2564,7 +2564,7 @@ void Node3DEditorViewport::_notification(int p_what) {
text += "\n";
text += vformat(TTR("Objects: %d\n"), viewport->get_render_info(Viewport::RENDER_INFO_TYPE_VISIBLE, Viewport::RENDER_INFO_OBJECTS_IN_FRAME));
- text += vformat(TTR("Primitives: %d\n"), viewport->get_render_info(Viewport::RENDER_INFO_TYPE_VISIBLE, Viewport::RENDER_INFO_PRIMITIVES_IN_FRAME));
+ text += vformat(TTR("Primitive Indices: %d\n"), viewport->get_render_info(Viewport::RENDER_INFO_TYPE_VISIBLE, Viewport::RENDER_INFO_PRIMITIVES_IN_FRAME));
text += vformat(TTR("Draw Calls: %d"), viewport->get_render_info(Viewport::RENDER_INFO_TYPE_VISIBLE, Viewport::RENDER_INFO_DRAW_CALLS_IN_FRAME));
info_label->set_text(text);
diff --git a/editor/plugins/ot_features_plugin.cpp b/editor/plugins/ot_features_plugin.cpp
index 9cd428a2d4..27b35d803c 100644
--- a/editor/plugins/ot_features_plugin.cpp
+++ b/editor/plugins/ot_features_plugin.cpp
@@ -96,10 +96,19 @@ OpenTypeFeaturesEditor::OpenTypeFeaturesEditor() {
/*************************************************************************/
void OpenTypeFeaturesAdd::_add_feature(int p_option) {
- get_edited_object()->set("opentype_features/" + TS->tag_to_name(p_option), 1);
+ edited_object->set("opentype_features/" + TS->tag_to_name(p_option), 1);
}
-void OpenTypeFeaturesAdd::update_property() {
+void OpenTypeFeaturesAdd::_features_menu() {
+ Size2 size = get_size();
+ menu->set_position(get_screen_position() + Size2(0, size.height * get_global_transform().get_scale().y));
+ menu->reset_size();
+ menu->popup();
+}
+
+void OpenTypeFeaturesAdd::setup(Object *p_object) {
+ edited_object = p_object;
+
menu->clear();
menu_ss->clear();
menu_cv->clear();
@@ -107,7 +116,7 @@ void OpenTypeFeaturesAdd::update_property() {
bool have_ss = false;
bool have_cv = false;
bool have_cu = false;
- Dictionary features = Object::cast_to<Control>(get_edited_object())->get_theme_font(SNAME("font"))->get_feature_list();
+ Dictionary features = Object::cast_to<Control>(edited_object)->get_theme_font(SNAME("font"))->get_feature_list();
for (const Variant *ftr = features.next(nullptr); ftr != nullptr; ftr = features.next(ftr)) {
String ftr_name = TS->tag_to_name(*ftr);
if (ftr_name.begins_with("stylistic_set_")) {
@@ -134,20 +143,11 @@ void OpenTypeFeaturesAdd::update_property() {
}
}
-void OpenTypeFeaturesAdd::_features_menu() {
- Size2 size = get_size();
- menu->set_position(get_screen_position() + Size2(0, size.height * get_global_transform().get_scale().y));
- menu->reset_size();
- menu->popup();
-}
-
void OpenTypeFeaturesAdd::_notification(int p_what) {
switch (p_what) {
case NOTIFICATION_THEME_CHANGED:
case NOTIFICATION_ENTER_TREE: {
- set_label("");
- button->set_icon(get_theme_icon(SNAME("Add"), SNAME("EditorIcons")));
- button->set_size(get_theme_icon(SNAME("Add"), SNAME("EditorIcons"))->get_size());
+ set_icon(get_theme_icon(SNAME("Add"), SNAME("EditorIcons")));
} break;
}
}
@@ -156,6 +156,8 @@ void OpenTypeFeaturesAdd::_bind_methods() {
}
OpenTypeFeaturesAdd::OpenTypeFeaturesAdd() {
+ set_text(TTR("Add Feature..."));
+
menu = memnew(PopupMenu);
add_child(menu);
@@ -171,13 +173,7 @@ OpenTypeFeaturesAdd::OpenTypeFeaturesAdd() {
menu_cu->set_name("CUMenu");
menu->add_child(menu_cu);
- button = memnew(Button);
- button->set_flat(true);
- button->set_text(RTR("Add feature..."));
- button->set_tooltip(RTR("Add feature..."));
- add_child(button);
-
- button->connect("pressed", callable_mp(this, &OpenTypeFeaturesAdd::_features_menu));
+ connect("pressed", callable_mp(this, &OpenTypeFeaturesAdd::_features_menu));
menu->connect("id_pressed", callable_mp(this, &OpenTypeFeaturesAdd::_add_feature));
menu_cv->connect("id_pressed", callable_mp(this, &OpenTypeFeaturesAdd::_add_feature));
menu_ss->connect("id_pressed", callable_mp(this, &OpenTypeFeaturesAdd::_add_feature));
@@ -193,7 +189,8 @@ bool EditorInspectorPluginOpenTypeFeatures::can_handle(Object *p_object) {
bool EditorInspectorPluginOpenTypeFeatures::parse_property(Object *p_object, const Variant::Type p_type, const String &p_path, const PropertyHint p_hint, const String &p_hint_text, const uint32_t p_usage, const bool p_wide) {
if (p_path == "opentype_features/_new") {
OpenTypeFeaturesAdd *editor = memnew(OpenTypeFeaturesAdd);
- add_property_editor(p_path, editor);
+ editor->setup(p_object);
+ add_custom_control(editor);
return true;
} else if (p_path.begins_with("opentype_features")) {
OpenTypeFeaturesEditor *editor = memnew(OpenTypeFeaturesEditor);
diff --git a/editor/plugins/ot_features_plugin.h b/editor/plugins/ot_features_plugin.h
index 8c38d888de..fcbc8692ca 100644
--- a/editor/plugins/ot_features_plugin.h
+++ b/editor/plugins/ot_features_plugin.h
@@ -56,10 +56,10 @@ public:
/*************************************************************************/
-class OpenTypeFeaturesAdd : public EditorProperty {
- GDCLASS(OpenTypeFeaturesAdd, EditorProperty);
+class OpenTypeFeaturesAdd : public Button {
+ GDCLASS(OpenTypeFeaturesAdd, Button);
- Button *button = nullptr;
+ Object *edited_object = nullptr;
PopupMenu *menu = nullptr;
PopupMenu *menu_ss = nullptr;
PopupMenu *menu_cv = nullptr;
@@ -73,7 +73,7 @@ protected:
static void _bind_methods();
public:
- virtual void update_property() override;
+ void setup(Object *p_object);
OpenTypeFeaturesAdd();
};
diff --git a/editor/plugins/replication_editor_plugin.cpp b/editor/plugins/replication_editor_plugin.cpp
index e4c1c69804..2a7b3c7a55 100644
--- a/editor/plugins/replication_editor_plugin.cpp
+++ b/editor/plugins/replication_editor_plugin.cpp
@@ -217,7 +217,7 @@ void ReplicationEditor::update_keying() {
/// TODO make keying usable.
#if 0
bool keying_enabled = false;
- EditorHistory *editor_history = EditorNode::get_singleton()->get_editor_history();
+ EditorSelectionHistory *editor_history = EditorNode::get_singleton()->get_editor_selection_history();
if (is_visible_in_tree() && config.is_valid() && editor_history->get_path_size() > 0) {
Object *obj = ObjectDB::get_instance(editor_history->get_path_object(0));
keying_enabled = Object::cast_to<Node>(obj) != nullptr;
@@ -305,7 +305,7 @@ void ReplicationEditor::property_keyed(const String &p_property) {
ERR_FAIL_COND(!current || config.is_null());
Node *root = current->get_node(current->get_root_path());
ERR_FAIL_COND(!root);
- EditorHistory *history = EditorNode::get_singleton()->get_editor_history();
+ EditorSelectionHistory *history = EditorNode::get_singleton()->get_editor_selection_history();
ERR_FAIL_COND(history->get_path_size() == 0);
Node *node = Object::cast_to<Node>(ObjectDB::get_instance(history->get_path_object(0)));
ERR_FAIL_COND(!node);
diff --git a/editor/plugins/script_editor_plugin.cpp b/editor/plugins/script_editor_plugin.cpp
index 2da5978fab..bbaf2bef98 100644
--- a/editor/plugins/script_editor_plugin.cpp
+++ b/editor/plugins/script_editor_plugin.cpp
@@ -1348,7 +1348,7 @@ void ScriptEditor::_menu_option(int p_option) {
}
if (script != nullptr) {
- const Vector<DocData::ClassDoc> &documentations = script->get_documentation();
+ Vector<DocData::ClassDoc> documentations = script->get_documentation();
for (int j = 0; j < documentations.size(); j++) {
const DocData::ClassDoc &doc = documentations.get(j);
if (EditorHelp::get_doc_data()->has_doc(doc.name)) {
@@ -1361,7 +1361,7 @@ void ScriptEditor::_menu_option(int p_option) {
EditorNode::get_singleton()->save_resource_as(resource);
if (script != nullptr) {
- const Vector<DocData::ClassDoc> &documentations = script->get_documentation();
+ Vector<DocData::ClassDoc> documentations = script->get_documentation();
for (int j = 0; j < documentations.size(); j++) {
const DocData::ClassDoc &doc = documentations.get(j);
EditorHelp::get_doc_data()->add_doc(doc);
@@ -2464,7 +2464,7 @@ void ScriptEditor::save_current_script() {
}
if (script != nullptr) {
- const Vector<DocData::ClassDoc> &documentations = script->get_documentation();
+ Vector<DocData::ClassDoc> documentations = script->get_documentation();
for (int j = 0; j < documentations.size(); j++) {
const DocData::ClassDoc &doc = documentations.get(j);
if (EditorHelp::get_doc_data()->has_doc(doc.name)) {
@@ -2486,7 +2486,7 @@ void ScriptEditor::save_current_script() {
}
if (script != nullptr) {
- const Vector<DocData::ClassDoc> &documentations = script->get_documentation();
+ Vector<DocData::ClassDoc> documentations = script->get_documentation();
for (int j = 0; j < documentations.size(); j++) {
const DocData::ClassDoc &doc = documentations.get(j);
EditorHelp::get_doc_data()->add_doc(doc);
@@ -2537,7 +2537,7 @@ void ScriptEditor::save_all_scripts() {
}
if (script != nullptr) {
- const Vector<DocData::ClassDoc> &documentations = script->get_documentation();
+ Vector<DocData::ClassDoc> documentations = script->get_documentation();
for (int j = 0; j < documentations.size(); j++) {
const DocData::ClassDoc &doc = documentations.get(j);
if (EditorHelp::get_doc_data()->has_doc(doc.name)) {
@@ -2549,7 +2549,7 @@ void ScriptEditor::save_all_scripts() {
EditorNode::get_singleton()->save_resource(edited_res); //external script, save it
if (script != nullptr) {
- const Vector<DocData::ClassDoc> &documentations = script->get_documentation();
+ Vector<DocData::ClassDoc> documentations = script->get_documentation();
for (int j = 0; j < documentations.size(); j++) {
const DocData::ClassDoc &doc = documentations.get(j);
EditorHelp::get_doc_data()->add_doc(doc);
diff --git a/editor/plugins/script_text_editor.cpp b/editor/plugins/script_text_editor.cpp
index 30ca1c605f..c1b0a32fc7 100644
--- a/editor/plugins/script_text_editor.cpp
+++ b/editor/plugins/script_text_editor.cpp
@@ -684,12 +684,12 @@ void ScriptEditor::_update_modified_scripts_for_external_editor(Ref<Script> p_fo
}
}
-void ScriptTextEditor::_code_complete_scripts(void *p_ud, const String &p_code, List<ScriptCodeCompletionOption> *r_options, bool &r_force) {
+void ScriptTextEditor::_code_complete_scripts(void *p_ud, const String &p_code, List<ScriptLanguage::CodeCompletionOption> *r_options, bool &r_force) {
ScriptTextEditor *ste = (ScriptTextEditor *)p_ud;
ste->_code_complete_script(p_code, r_options, r_force);
}
-void ScriptTextEditor::_code_complete_script(const String &p_code, List<ScriptCodeCompletionOption> *r_options, bool &r_force) {
+void ScriptTextEditor::_code_complete_script(const String &p_code, List<ScriptLanguage::CodeCompletionOption> *r_options, bool &r_force) {
if (color_panel->is_visible()) {
return;
}
@@ -771,7 +771,7 @@ void ScriptTextEditor::_lookup_symbol(const String &p_symbol, int p_row, int p_c
_goto_line(p_row);
switch (result.type) {
- case ScriptLanguage::LookupResult::RESULT_SCRIPT_LOCATION: {
+ case ScriptLanguage::LOOKUP_RESULT_SCRIPT_LOCATION: {
if (result.script.is_valid()) {
emit_signal(SNAME("request_open_script_at_line"), result.script, result.location - 1);
} else {
@@ -779,10 +779,10 @@ void ScriptTextEditor::_lookup_symbol(const String &p_symbol, int p_row, int p_c
goto_line_centered(result.location - 1);
}
} break;
- case ScriptLanguage::LookupResult::RESULT_CLASS: {
+ case ScriptLanguage::LOOKUP_RESULT_CLASS: {
emit_signal(SNAME("go_to_help"), "class_name:" + result.class_name);
} break;
- case ScriptLanguage::LookupResult::RESULT_CLASS_CONSTANT: {
+ case ScriptLanguage::LOOKUP_RESULT_CLASS_CONSTANT: {
StringName cname = result.class_name;
bool success;
while (true) {
@@ -798,11 +798,11 @@ void ScriptTextEditor::_lookup_symbol(const String &p_symbol, int p_row, int p_c
emit_signal(SNAME("go_to_help"), "class_constant:" + result.class_name + ":" + result.class_member);
} break;
- case ScriptLanguage::LookupResult::RESULT_CLASS_PROPERTY: {
+ case ScriptLanguage::LOOKUP_RESULT_CLASS_PROPERTY: {
emit_signal(SNAME("go_to_help"), "class_property:" + result.class_name + ":" + result.class_member);
} break;
- case ScriptLanguage::LookupResult::RESULT_CLASS_METHOD: {
+ case ScriptLanguage::LOOKUP_RESULT_CLASS_METHOD: {
StringName cname = result.class_name;
while (true) {
@@ -817,7 +817,7 @@ void ScriptTextEditor::_lookup_symbol(const String &p_symbol, int p_row, int p_c
emit_signal(SNAME("go_to_help"), "class_method:" + result.class_name + ":" + result.class_member);
} break;
- case ScriptLanguage::LookupResult::RESULT_CLASS_ENUM: {
+ case ScriptLanguage::LOOKUP_RESULT_CLASS_ENUM: {
StringName cname = result.class_name;
StringName success;
while (true) {
@@ -833,9 +833,11 @@ void ScriptTextEditor::_lookup_symbol(const String &p_symbol, int p_row, int p_c
emit_signal(SNAME("go_to_help"), "class_enum:" + result.class_name + ":" + result.class_member);
} break;
- case ScriptLanguage::LookupResult::RESULT_CLASS_TBD_GLOBALSCOPE: {
+ case ScriptLanguage::LOOKUP_RESULT_CLASS_TBD_GLOBALSCOPE: {
emit_signal(SNAME("go_to_help"), "class_global:" + result.class_name + ":" + result.class_member);
} break;
+ default: {
+ }
}
} else if (ProjectSettings::get_singleton()->has_autoload(p_symbol)) {
// Check for Autoload scenes.
diff --git a/editor/plugins/script_text_editor.h b/editor/plugins/script_text_editor.h
index 1e2284b403..5c3a66404e 100644
--- a/editor/plugins/script_text_editor.h
+++ b/editor/plugins/script_text_editor.h
@@ -162,8 +162,8 @@ protected:
void _update_bookmark_list();
void _bookmark_item_pressed(int p_idx);
- static void _code_complete_scripts(void *p_ud, const String &p_code, List<ScriptCodeCompletionOption> *r_options, bool &r_force);
- void _code_complete_script(const String &p_code, List<ScriptCodeCompletionOption> *r_options, bool &r_force);
+ static void _code_complete_scripts(void *p_ud, const String &p_code, List<ScriptLanguage::CodeCompletionOption> *r_options, bool &r_force);
+ void _code_complete_script(const String &p_code, List<ScriptLanguage::CodeCompletionOption> *r_options, bool &r_force);
void _load_theme_settings();
void _set_theme_for_script();
diff --git a/editor/plugins/shader_editor_plugin.cpp b/editor/plugins/shader_editor_plugin.cpp
index dbe6ca192c..070f1fac1e 100644
--- a/editor/plugins/shader_editor_plugin.cpp
+++ b/editor/plugins/shader_editor_plugin.cpp
@@ -222,7 +222,7 @@ static ShaderLanguage::DataType _get_global_variable_type(const StringName &p_va
return (ShaderLanguage::DataType)RS::global_variable_type_get_shader_datatype(gvt);
}
-void ShaderTextEditor::_code_complete_script(const String &p_code, List<ScriptCodeCompletionOption> *r_options) {
+void ShaderTextEditor::_code_complete_script(const String &p_code, List<ScriptLanguage::CodeCompletionOption> *r_options) {
_check_shader_mode();
ShaderLanguage sl;
diff --git a/editor/plugins/shader_editor_plugin.h b/editor/plugins/shader_editor_plugin.h
index b1391e4f66..600b14362e 100644
--- a/editor/plugins/shader_editor_plugin.h
+++ b/editor/plugins/shader_editor_plugin.h
@@ -65,7 +65,7 @@ protected:
static void _bind_methods();
virtual void _load_theme_settings() override;
- virtual void _code_complete_script(const String &p_code, List<ScriptCodeCompletionOption> *r_options) override;
+ virtual void _code_complete_script(const String &p_code, List<ScriptLanguage::CodeCompletionOption> *r_options) override;
public:
virtual void _validate_script() override;
diff --git a/editor/plugins/skeleton_3d_editor_plugin.cpp b/editor/plugins/skeleton_3d_editor_plugin.cpp
index ef171e9115..065683d632 100644
--- a/editor/plugins/skeleton_3d_editor_plugin.cpp
+++ b/editor/plugins/skeleton_3d_editor_plugin.cpp
@@ -419,8 +419,14 @@ PhysicalBone3D *Skeleton3DEditor::create_physical_bone(int bone_id, int bone_chi
capsule_transform.basis = Basis(Vector3(1, 0, 0), Vector3(0, 0, 1), Vector3(0, -1, 0));
bone_shape->set_transform(capsule_transform);
+ /// Get an up vector not collinear with child rest origin
+ Vector3 up = Vector3(0, 1, 0);
+ if (up.cross(child_rest.origin).is_equal_approx(Vector3())) {
+ up = Vector3(0, 0, 1);
+ }
+
Transform3D body_transform;
- body_transform.basis = Basis::looking_at(child_rest.origin);
+ body_transform.basis = Basis::looking_at(child_rest.origin, up);
body_transform.origin = body_transform.basis.xform(Vector3(0, 0, -half_height));
Transform3D joint_transform;
diff --git a/editor/plugins/visual_shader_editor_plugin.cpp b/editor/plugins/visual_shader_editor_plugin.cpp
index 50773836db..6b53ce0660 100644
--- a/editor/plugins/visual_shader_editor_plugin.cpp
+++ b/editor/plugins/visual_shader_editor_plugin.cpp
@@ -4945,198 +4945,198 @@ VisualShaderEditor::VisualShaderEditor() {
// INPUT
- const String input_param_shader_modes = TTR("'%s' input parameter for all shader modes.");
+ const String translation_gdsl = "\n\n" + TTR("Translated to '%s' in Godot Shading Language.");
+ const String input_param_shader_modes = TTR("'%s' input parameter for all shader modes.") + translation_gdsl;
// NODE3D-FOR-ALL
- add_options.push_back(AddOption("InvProjectionMatrix", "Input", "All", "VisualShaderNodeInput", vformat(input_param_shader_modes, "inv_projection_matrix"), { "inv_projection_matrix" }, VisualShaderNode::PORT_TYPE_TRANSFORM, -1, Shader::MODE_SPATIAL));
- add_options.push_back(AddOption("InvViewMatrix", "Input", "All", "VisualShaderNodeInput", vformat(input_param_shader_modes, "inv_view_matrix"), { "inv_view_matrix" }, VisualShaderNode::PORT_TYPE_TRANSFORM, -1, Shader::MODE_SPATIAL));
- add_options.push_back(AddOption("ModelMatrix", "Input", "All", "VisualShaderNodeInput", vformat(input_param_shader_modes, "model_matrix"), { "model_matrix" }, VisualShaderNode::PORT_TYPE_TRANSFORM, -1, Shader::MODE_SPATIAL));
- add_options.push_back(AddOption("Normal", "Input", "All", "VisualShaderNodeInput", vformat(input_param_shader_modes, "normal"), { "normal" }, VisualShaderNode::PORT_TYPE_VECTOR_3D, -1, Shader::MODE_SPATIAL));
- add_options.push_back(AddOption("OutputIsSRGB", "Input", "All", "VisualShaderNodeInput", vformat(input_param_shader_modes, "output_is_srgb"), { "output_is_srgb" }, VisualShaderNode::PORT_TYPE_BOOLEAN, -1, Shader::MODE_SPATIAL));
- add_options.push_back(AddOption("ProjectionMatrix", "Input", "All", "VisualShaderNodeInput", vformat(input_param_shader_modes, "projection_matrix"), { "projection_matrix" }, VisualShaderNode::PORT_TYPE_TRANSFORM, -1, Shader::MODE_SPATIAL));
- add_options.push_back(AddOption("Time", "Input", "All", "VisualShaderNodeInput", vformat(input_param_shader_modes, "time"), { "time" }, VisualShaderNode::PORT_TYPE_SCALAR, -1, Shader::MODE_SPATIAL));
- add_options.push_back(AddOption("UV", "Input", "All", "VisualShaderNodeInput", vformat(input_param_shader_modes, "uv"), { "uv" }, VisualShaderNode::PORT_TYPE_VECTOR_2D, -1, Shader::MODE_SPATIAL));
- add_options.push_back(AddOption("UV2", "Input", "All", "VisualShaderNodeInput", vformat(input_param_shader_modes, "uv2"), { "uv2" }, VisualShaderNode::PORT_TYPE_VECTOR_2D, -1, Shader::MODE_SPATIAL));
- add_options.push_back(AddOption("ViewMatrix", "Input", "All", "VisualShaderNodeInput", vformat(input_param_shader_modes, "view_matrix"), { "view_matrix" }, VisualShaderNode::PORT_TYPE_TRANSFORM, -1, Shader::MODE_SPATIAL));
- add_options.push_back(AddOption("ViewportSize", "Input", "All", "VisualShaderNodeInput", vformat(input_param_shader_modes, "viewport_size"), { "viewport_size" }, VisualShaderNode::PORT_TYPE_VECTOR_2D, -1, Shader::MODE_SPATIAL));
+ add_options.push_back(AddOption("InvProjectionMatrix", "Input", "All", "VisualShaderNodeInput", vformat(input_param_shader_modes, "inv_projection_matrix", "INV_PROJECTION_MATRIX"), { "inv_projection_matrix" }, VisualShaderNode::PORT_TYPE_TRANSFORM, -1, Shader::MODE_SPATIAL));
+ add_options.push_back(AddOption("InvViewMatrix", "Input", "All", "VisualShaderNodeInput", vformat(input_param_shader_modes, "inv_view_matrix", "INV_VIEW_MATRIX"), { "inv_view_matrix" }, VisualShaderNode::PORT_TYPE_TRANSFORM, -1, Shader::MODE_SPATIAL));
+ add_options.push_back(AddOption("ModelMatrix", "Input", "All", "VisualShaderNodeInput", vformat(input_param_shader_modes, "model_matrix", "MODEL_MATRIX"), { "model_matrix" }, VisualShaderNode::PORT_TYPE_TRANSFORM, -1, Shader::MODE_SPATIAL));
+ add_options.push_back(AddOption("Normal", "Input", "All", "VisualShaderNodeInput", vformat(input_param_shader_modes, "normal", "NORMAL"), { "normal" }, VisualShaderNode::PORT_TYPE_VECTOR_3D, -1, Shader::MODE_SPATIAL));
+ add_options.push_back(AddOption("OutputIsSRGB", "Input", "All", "VisualShaderNodeInput", vformat(input_param_shader_modes, "output_is_srgb", "OUTPUT_IS_SRGB"), { "output_is_srgb" }, VisualShaderNode::PORT_TYPE_BOOLEAN, -1, Shader::MODE_SPATIAL));
+ add_options.push_back(AddOption("ProjectionMatrix", "Input", "All", "VisualShaderNodeInput", vformat(input_param_shader_modes, "projection_matrix", "PROJECTION_MATRIX"), { "projection_matrix" }, VisualShaderNode::PORT_TYPE_TRANSFORM, -1, Shader::MODE_SPATIAL));
+ add_options.push_back(AddOption("Time", "Input", "All", "VisualShaderNodeInput", vformat(input_param_shader_modes, "time", "TIME"), { "time" }, VisualShaderNode::PORT_TYPE_SCALAR, -1, Shader::MODE_SPATIAL));
+ add_options.push_back(AddOption("UV", "Input", "All", "VisualShaderNodeInput", vformat(input_param_shader_modes, "uv", "UV"), { "uv" }, VisualShaderNode::PORT_TYPE_VECTOR_2D, -1, Shader::MODE_SPATIAL));
+ add_options.push_back(AddOption("UV2", "Input", "All", "VisualShaderNodeInput", vformat(input_param_shader_modes, "uv2", "UV2"), { "uv2" }, VisualShaderNode::PORT_TYPE_VECTOR_2D, -1, Shader::MODE_SPATIAL));
+ add_options.push_back(AddOption("ViewMatrix", "Input", "All", "VisualShaderNodeInput", vformat(input_param_shader_modes, "view_matrix", "VIEW_MATRIX"), { "view_matrix" }, VisualShaderNode::PORT_TYPE_TRANSFORM, -1, Shader::MODE_SPATIAL));
+ add_options.push_back(AddOption("ViewportSize", "Input", "All", "VisualShaderNodeInput", vformat(input_param_shader_modes, "viewport_size", "VIEWPORT_SIZE"), { "viewport_size" }, VisualShaderNode::PORT_TYPE_VECTOR_2D, -1, Shader::MODE_SPATIAL));
// CANVASITEM-FOR-ALL
- add_options.push_back(AddOption("Alpha", "Input", "All", "VisualShaderNodeInput", vformat(input_param_shader_modes, "alpha"), { "alpha" }, VisualShaderNode::PORT_TYPE_SCALAR, -1, Shader::MODE_CANVAS_ITEM));
- add_options.push_back(AddOption("Color", "Input", "All", "VisualShaderNodeInput", vformat(input_param_shader_modes, "color"), { "color" }, VisualShaderNode::PORT_TYPE_VECTOR_3D, -1, Shader::MODE_CANVAS_ITEM));
- add_options.push_back(AddOption("TexturePixelSize", "Input", "All", "VisualShaderNodeInput", vformat(input_param_shader_modes, "texture_pixel_size"), { "texture_pixel_size" }, VisualShaderNode::PORT_TYPE_VECTOR_2D, -1, Shader::MODE_CANVAS_ITEM));
- add_options.push_back(AddOption("Time", "Input", "All", "VisualShaderNodeInput", vformat(input_param_shader_modes, "time"), { "time" }, VisualShaderNode::PORT_TYPE_SCALAR, -1, Shader::MODE_CANVAS_ITEM));
- add_options.push_back(AddOption("UV", "Input", "All", "VisualShaderNodeInput", vformat(input_param_shader_modes, "uv"), { "uv" }, VisualShaderNode::PORT_TYPE_VECTOR_2D, -1, Shader::MODE_CANVAS_ITEM));
+ add_options.push_back(AddOption("Alpha", "Input", "All", "VisualShaderNodeInput", vformat(input_param_shader_modes, "alpha", "COLOR.a"), { "alpha" }, VisualShaderNode::PORT_TYPE_SCALAR, -1, Shader::MODE_CANVAS_ITEM));
+ add_options.push_back(AddOption("Color", "Input", "All", "VisualShaderNodeInput", vformat(input_param_shader_modes, "color", "COLOR.rgb"), { "color" }, VisualShaderNode::PORT_TYPE_VECTOR_3D, -1, Shader::MODE_CANVAS_ITEM));
+ add_options.push_back(AddOption("TexturePixelSize", "Input", "All", "VisualShaderNodeInput", vformat(input_param_shader_modes, "texture_pixel_size", "TEXTURE_PIXEL_SIZE"), { "texture_pixel_size" }, VisualShaderNode::PORT_TYPE_VECTOR_2D, -1, Shader::MODE_CANVAS_ITEM));
+ add_options.push_back(AddOption("Time", "Input", "All", "VisualShaderNodeInput", vformat(input_param_shader_modes, "time", "TIME"), { "time" }, VisualShaderNode::PORT_TYPE_SCALAR, -1, Shader::MODE_CANVAS_ITEM));
+ add_options.push_back(AddOption("UV", "Input", "All", "VisualShaderNodeInput", vformat(input_param_shader_modes, "uv", "UV"), { "uv" }, VisualShaderNode::PORT_TYPE_VECTOR_2D, -1, Shader::MODE_CANVAS_ITEM));
// PARTICLES-FOR-ALL
- add_options.push_back(AddOption("Active", "Input", "All", "VisualShaderNodeInput", vformat(input_param_shader_modes, "active"), { "active" }, VisualShaderNode::PORT_TYPE_BOOLEAN, -1, Shader::MODE_PARTICLES));
- add_options.push_back(AddOption("Alpha", "Input", "All", "VisualShaderNodeInput", vformat(input_param_shader_modes, "alpha"), { "alpha" }, VisualShaderNode::PORT_TYPE_SCALAR, -1, Shader::MODE_PARTICLES));
- add_options.push_back(AddOption("AttractorForce", "Input", "All", "VisualShaderNodeInput", vformat(input_param_shader_modes, "attractor_force"), { "attractor_force" }, VisualShaderNode::PORT_TYPE_VECTOR_3D, -1, Shader::MODE_PARTICLES));
- add_options.push_back(AddOption("Color", "Input", "All", "VisualShaderNodeInput", vformat(input_param_shader_modes, "color"), { "color" }, VisualShaderNode::PORT_TYPE_VECTOR_3D, -1, Shader::MODE_PARTICLES));
- add_options.push_back(AddOption("Custom", "Input", "All", "VisualShaderNodeInput", vformat(input_param_shader_modes, "custom"), { "custom" }, VisualShaderNode::PORT_TYPE_VECTOR_3D, -1, Shader::MODE_PARTICLES));
- add_options.push_back(AddOption("CustomAlpha", "Input", "All", "VisualShaderNodeInput", vformat(input_param_shader_modes, "custom_alpha"), { "custom_alpha" }, VisualShaderNode::PORT_TYPE_SCALAR, -1, Shader::MODE_PARTICLES));
- add_options.push_back(AddOption("Delta", "Input", "All", "VisualShaderNodeInput", vformat(input_param_shader_modes, "delta"), { "delta" }, VisualShaderNode::PORT_TYPE_SCALAR, -1, Shader::MODE_PARTICLES));
- add_options.push_back(AddOption("EmissionTransform", "Input", "All", "VisualShaderNodeInput", vformat(input_param_shader_modes, "emission_transform"), { "emission_transform" }, VisualShaderNode::PORT_TYPE_TRANSFORM, -1, Shader::MODE_PARTICLES));
- add_options.push_back(AddOption("Index", "Input", "All", "VisualShaderNodeInput", vformat(input_param_shader_modes, "index"), { "index" }, VisualShaderNode::PORT_TYPE_SCALAR_INT, -1, Shader::MODE_PARTICLES));
- add_options.push_back(AddOption("LifeTime", "Input", "All", "VisualShaderNodeInput", vformat(input_param_shader_modes, "lifetime"), { "lifetime" }, VisualShaderNode::PORT_TYPE_SCALAR, -1, Shader::MODE_PARTICLES));
- add_options.push_back(AddOption("Restart", "Input", "All", "VisualShaderNodeInput", vformat(input_param_shader_modes, "restart"), { "restart" }, VisualShaderNode::PORT_TYPE_BOOLEAN, -1, Shader::MODE_PARTICLES));
- add_options.push_back(AddOption("Time", "Input", "All", "VisualShaderNodeInput", vformat(input_param_shader_modes, "time"), { "time" }, VisualShaderNode::PORT_TYPE_SCALAR, -1, Shader::MODE_PARTICLES));
- add_options.push_back(AddOption("Transform", "Input", "All", "VisualShaderNodeInput", vformat(input_param_shader_modes, "transform"), { "transform" }, VisualShaderNode::PORT_TYPE_TRANSFORM, -1, Shader::MODE_PARTICLES));
- add_options.push_back(AddOption("Velocity", "Input", "All", "VisualShaderNodeInput", vformat(input_param_shader_modes, "velocity"), { "velocity" }, VisualShaderNode::PORT_TYPE_VECTOR_3D, -1, Shader::MODE_PARTICLES));
+ add_options.push_back(AddOption("Active", "Input", "All", "VisualShaderNodeInput", vformat(input_param_shader_modes, "active", "ACTIVE"), { "active" }, VisualShaderNode::PORT_TYPE_BOOLEAN, -1, Shader::MODE_PARTICLES));
+ add_options.push_back(AddOption("Alpha", "Input", "All", "VisualShaderNodeInput", vformat(input_param_shader_modes, "alpha", "COLOR.a"), { "alpha" }, VisualShaderNode::PORT_TYPE_SCALAR, -1, Shader::MODE_PARTICLES));
+ add_options.push_back(AddOption("AttractorForce", "Input", "All", "VisualShaderNodeInput", vformat(input_param_shader_modes, "attractor_force", "ATTRACTOR_FORCE"), { "attractor_force" }, VisualShaderNode::PORT_TYPE_VECTOR_3D, -1, Shader::MODE_PARTICLES));
+ add_options.push_back(AddOption("Color", "Input", "All", "VisualShaderNodeInput", vformat(input_param_shader_modes, "color", "COLOR.rgb"), { "color" }, VisualShaderNode::PORT_TYPE_VECTOR_3D, -1, Shader::MODE_PARTICLES));
+ add_options.push_back(AddOption("Custom", "Input", "All", "VisualShaderNodeInput", vformat(input_param_shader_modes, "custom", "CUSTOM.rgb"), { "custom" }, VisualShaderNode::PORT_TYPE_VECTOR_3D, -1, Shader::MODE_PARTICLES));
+ add_options.push_back(AddOption("CustomAlpha", "Input", "All", "VisualShaderNodeInput", vformat(input_param_shader_modes, "custom_alpha", "CUSTOM.a"), { "custom_alpha" }, VisualShaderNode::PORT_TYPE_SCALAR, -1, Shader::MODE_PARTICLES));
+ add_options.push_back(AddOption("Delta", "Input", "All", "VisualShaderNodeInput", vformat(input_param_shader_modes, "delta", "DELTA"), { "delta" }, VisualShaderNode::PORT_TYPE_SCALAR, -1, Shader::MODE_PARTICLES));
+ add_options.push_back(AddOption("EmissionTransform", "Input", "All", "VisualShaderNodeInput", vformat(input_param_shader_modes, "emission_transform", "EMISSION_TRANSFORM"), { "emission_transform" }, VisualShaderNode::PORT_TYPE_TRANSFORM, -1, Shader::MODE_PARTICLES));
+ add_options.push_back(AddOption("Index", "Input", "All", "VisualShaderNodeInput", vformat(input_param_shader_modes, "index", "INDEX"), { "index" }, VisualShaderNode::PORT_TYPE_SCALAR_INT, -1, Shader::MODE_PARTICLES));
+ add_options.push_back(AddOption("LifeTime", "Input", "All", "VisualShaderNodeInput", vformat(input_param_shader_modes, "lifetime", "LIFETIME"), { "lifetime" }, VisualShaderNode::PORT_TYPE_SCALAR, -1, Shader::MODE_PARTICLES));
+ add_options.push_back(AddOption("Restart", "Input", "All", "VisualShaderNodeInput", vformat(input_param_shader_modes, "restart", "RESTART"), { "restart" }, VisualShaderNode::PORT_TYPE_BOOLEAN, -1, Shader::MODE_PARTICLES));
+ add_options.push_back(AddOption("Time", "Input", "All", "VisualShaderNodeInput", vformat(input_param_shader_modes, "time", "TIME"), { "time" }, VisualShaderNode::PORT_TYPE_SCALAR, -1, Shader::MODE_PARTICLES));
+ add_options.push_back(AddOption("Transform", "Input", "All", "VisualShaderNodeInput", vformat(input_param_shader_modes, "transform", "TRANSFORM"), { "transform" }, VisualShaderNode::PORT_TYPE_TRANSFORM, -1, Shader::MODE_PARTICLES));
+ add_options.push_back(AddOption("Velocity", "Input", "All", "VisualShaderNodeInput", vformat(input_param_shader_modes, "velocity", "VELOCITY"), { "velocity" }, VisualShaderNode::PORT_TYPE_VECTOR_3D, -1, Shader::MODE_PARTICLES));
/////////////////
add_options.push_back(AddOption("Input", "Input", "Common", "VisualShaderNodeInput", TTR("Input parameter.")));
- const String input_param_for_vertex_and_fragment_shader_modes = TTR("'%s' input parameter for vertex and fragment shader modes.");
- const String input_param_for_fragment_and_light_shader_modes = TTR("'%s' input parameter for fragment and light shader modes.");
- const String input_param_for_fragment_shader_mode = TTR("'%s' input parameter for fragment shader mode.");
- const String input_param_for_sky_shader_mode = TTR("'%s' input parameter for sky shader mode.");
- const String input_param_for_fog_shader_mode = TTR("'%s' input parameter for fog shader mode.");
- const String input_param_for_light_shader_mode = TTR("'%s' input parameter for light shader mode.");
- const String input_param_for_vertex_shader_mode = TTR("'%s' input parameter for vertex shader mode.");
- const String input_param_for_start_shader_mode = TTR("'%s' input parameter for start shader mode.");
- const String input_param_for_process_shader_mode = TTR("'%s' input parameter for process shader mode.");
- const String input_param_for_collide_shader_mode = TTR("'%s' input parameter for collide shader mode.");
- const String input_param_for_start_and_process_shader_mode = TTR("'%s' input parameter for start and process shader modes.");
- const String input_param_for_process_and_collide_shader_mode = TTR("'%s' input parameter for process and collide shader modes.");
- const String input_param_for_vertex_and_fragment_shader_mode = TTR("'%s' input parameter for vertex and fragment shader modes.");
+ const String input_param_for_vertex_and_fragment_shader_modes = TTR("'%s' input parameter for vertex and fragment shader modes.") + translation_gdsl;
+ const String input_param_for_fragment_and_light_shader_modes = TTR("'%s' input parameter for fragment and light shader modes.") + translation_gdsl;
+ const String input_param_for_fragment_shader_mode = TTR("'%s' input parameter for fragment shader mode.") + translation_gdsl;
+ const String input_param_for_sky_shader_mode = TTR("'%s' input parameter for sky shader mode.") + translation_gdsl;
+ const String input_param_for_fog_shader_mode = TTR("'%s' input parameter for fog shader mode.") + translation_gdsl;
+ const String input_param_for_light_shader_mode = TTR("'%s' input parameter for light shader mode.") + translation_gdsl;
+ const String input_param_for_vertex_shader_mode = TTR("'%s' input parameter for vertex shader mode.") + translation_gdsl;
+ const String input_param_for_start_shader_mode = TTR("'%s' input parameter for start shader mode.") + translation_gdsl;
+ const String input_param_for_process_shader_mode = TTR("'%s' input parameter for process shader mode.") + translation_gdsl;
+ const String input_param_for_collide_shader_mode = TTR("'%s' input parameter for collide shader mode." + translation_gdsl);
+ const String input_param_for_start_and_process_shader_mode = TTR("'%s' input parameter for start and process shader modes.") + translation_gdsl;
+ const String input_param_for_process_and_collide_shader_mode = TTR("'%s' input parameter for process and collide shader modes.") + translation_gdsl;
+ const String input_param_for_vertex_and_fragment_shader_mode = TTR("'%s' input parameter for vertex and fragment shader modes.") + translation_gdsl;
// NODE3D INPUTS
- add_options.push_back(AddOption("Alpha", "Input", "Vertex", "VisualShaderNodeInput", vformat(input_param_for_vertex_and_fragment_shader_modes, "alpha"), { "alpha" }, VisualShaderNode::PORT_TYPE_SCALAR, TYPE_FLAGS_VERTEX, Shader::MODE_SPATIAL));
- add_options.push_back(AddOption("Binormal", "Input", "Vertex", "VisualShaderNodeInput", vformat(input_param_for_vertex_and_fragment_shader_modes, "binormal"), { "binormal" }, VisualShaderNode::PORT_TYPE_VECTOR_3D, TYPE_FLAGS_VERTEX, Shader::MODE_SPATIAL));
- add_options.push_back(AddOption("Color", "Input", "Vertex", "VisualShaderNodeInput", vformat(input_param_for_vertex_and_fragment_shader_modes, "color"), { "color" }, VisualShaderNode::PORT_TYPE_VECTOR_3D, TYPE_FLAGS_VERTEX, Shader::MODE_SPATIAL));
- add_options.push_back(AddOption("InstanceId", "Input", "Vertex", "VisualShaderNodeInput", vformat(input_param_for_vertex_shader_mode, "instance_id"), { "instance_id" }, VisualShaderNode::PORT_TYPE_SCALAR_INT, TYPE_FLAGS_VERTEX, Shader::MODE_SPATIAL));
- add_options.push_back(AddOption("InstanceCustom", "Input", "Vertex", "VisualShaderNodeInput", vformat(input_param_for_vertex_shader_mode, "instance_custom"), { "instance_custom" }, VisualShaderNode::PORT_TYPE_VECTOR_3D, TYPE_FLAGS_VERTEX, Shader::MODE_SPATIAL));
- add_options.push_back(AddOption("InstanceCustomAlpha", "Input", "Vertex", "VisualShaderNodeInput", vformat(input_param_for_vertex_shader_mode, "instance_custom_alpha"), { "instance_custom_alpha" }, VisualShaderNode::PORT_TYPE_SCALAR, TYPE_FLAGS_VERTEX, Shader::MODE_SPATIAL));
- add_options.push_back(AddOption("ModelViewMatrix", "Input", "Vertex", "VisualShaderNodeInput", vformat(input_param_for_vertex_shader_mode, "modelview_matrix"), { "modelview_matrix" }, VisualShaderNode::PORT_TYPE_TRANSFORM, TYPE_FLAGS_VERTEX, Shader::MODE_SPATIAL));
- add_options.push_back(AddOption("PointSize", "Input", "Vertex", "VisualShaderNodeInput", vformat(input_param_for_vertex_shader_mode, "point_size"), { "point_size" }, VisualShaderNode::PORT_TYPE_SCALAR, TYPE_FLAGS_VERTEX, Shader::MODE_SPATIAL));
- add_options.push_back(AddOption("Tangent", "Input", "Vertex", "VisualShaderNodeInput", vformat(input_param_for_vertex_and_fragment_shader_mode, "tangent"), { "tangent" }, VisualShaderNode::PORT_TYPE_VECTOR_3D, TYPE_FLAGS_VERTEX, Shader::MODE_SPATIAL));
- add_options.push_back(AddOption("Vertex", "Input", "Vertex", "VisualShaderNodeInput", vformat(input_param_for_vertex_and_fragment_shader_modes, "vertex"), { "vertex" }, VisualShaderNode::PORT_TYPE_VECTOR_3D, TYPE_FLAGS_VERTEX, Shader::MODE_SPATIAL));
- add_options.push_back(AddOption("VertexId", "Input", "Vertex", "VisualShaderNodeInput", vformat(input_param_for_vertex_shader_mode, "vertex_id"), { "vertex_id" }, VisualShaderNode::PORT_TYPE_SCALAR_INT, TYPE_FLAGS_VERTEX, Shader::MODE_SPATIAL));
- add_options.push_back(AddOption("ViewIndex", "Input", "Vertex", "VisualShaderNodeInput", vformat(input_param_for_vertex_and_fragment_shader_modes, "view_index"), { "view_index" }, VisualShaderNode::PORT_TYPE_SCALAR_INT, TYPE_FLAGS_VERTEX, Shader::MODE_SPATIAL));
- add_options.push_back(AddOption("ViewMonoLeft", "Input", "Vertex", "VisualShaderNodeInput", vformat(input_param_for_vertex_and_fragment_shader_modes, "view_mono_left"), { "view_mono_left" }, VisualShaderNode::PORT_TYPE_SCALAR_INT, TYPE_FLAGS_VERTEX, Shader::MODE_SPATIAL));
- add_options.push_back(AddOption("ViewRight", "Input", "Vertex", "VisualShaderNodeInput", vformat(input_param_for_vertex_and_fragment_shader_modes, "view_right"), { "view_right" }, VisualShaderNode::PORT_TYPE_SCALAR_INT, TYPE_FLAGS_VERTEX, Shader::MODE_SPATIAL));
-
- add_options.push_back(AddOption("Alpha", "Input", "Fragment", "VisualShaderNodeInput", vformat(input_param_for_vertex_and_fragment_shader_modes, "alpha"), { "alpha" }, VisualShaderNode::PORT_TYPE_SCALAR, TYPE_FLAGS_FRAGMENT, Shader::MODE_SPATIAL));
- add_options.push_back(AddOption("Binormal", "Input", "Fragment", "VisualShaderNodeInput", vformat(input_param_for_vertex_and_fragment_shader_modes, "binormal"), { "binormal" }, VisualShaderNode::PORT_TYPE_VECTOR_3D, TYPE_FLAGS_FRAGMENT, Shader::MODE_SPATIAL));
- add_options.push_back(AddOption("Color", "Input", "Fragment", "VisualShaderNodeInput", vformat(input_param_for_vertex_and_fragment_shader_modes, "color"), { "color" }, VisualShaderNode::PORT_TYPE_VECTOR_3D, TYPE_FLAGS_FRAGMENT, Shader::MODE_SPATIAL));
- add_options.push_back(AddOption("DepthTexture", "Input", "Fragment", "VisualShaderNodeInput", vformat(input_param_for_fragment_shader_mode, "depth_texture"), { "depth_texture" }, VisualShaderNode::PORT_TYPE_SAMPLER, TYPE_FLAGS_FRAGMENT, Shader::MODE_SPATIAL));
- add_options.push_back(AddOption("FragCoord", "Input", "Fragment", "VisualShaderNodeInput", vformat(input_param_for_fragment_and_light_shader_modes, "fragcoord"), { "fragcoord" }, VisualShaderNode::PORT_TYPE_VECTOR_3D, TYPE_FLAGS_FRAGMENT, Shader::MODE_SPATIAL));
- add_options.push_back(AddOption("FrontFacing", "Input", "Fragment", "VisualShaderNodeInput", vformat(input_param_for_fragment_shader_mode, "front_facing"), { "front_facing" }, VisualShaderNode::PORT_TYPE_BOOLEAN, TYPE_FLAGS_FRAGMENT, Shader::MODE_SPATIAL));
- add_options.push_back(AddOption("PointCoord", "Input", "Fragment", "VisualShaderNodeInput", vformat(input_param_for_fragment_shader_mode, "point_coord"), { "point_coord" }, VisualShaderNode::PORT_TYPE_VECTOR_2D, TYPE_FLAGS_FRAGMENT, Shader::MODE_SPATIAL));
- add_options.push_back(AddOption("ScreenTexture", "Input", "Fragment", "VisualShaderNodeInput", vformat(input_param_for_fragment_shader_mode, "screen_texture"), { "screen_texture" }, VisualShaderNode::PORT_TYPE_SAMPLER, TYPE_FLAGS_FRAGMENT, Shader::MODE_SPATIAL));
- add_options.push_back(AddOption("ScreenUV", "Input", "Fragment", "VisualShaderNodeInput", vformat(input_param_for_fragment_shader_mode, "screen_uv"), { "screen_uv" }, VisualShaderNode::PORT_TYPE_VECTOR_2D, TYPE_FLAGS_FRAGMENT, Shader::MODE_SPATIAL));
- add_options.push_back(AddOption("Tangent", "Input", "Fragment", "VisualShaderNodeInput", vformat(input_param_for_vertex_and_fragment_shader_modes, "tangent"), { "tangent" }, VisualShaderNode::PORT_TYPE_VECTOR_3D, TYPE_FLAGS_FRAGMENT, Shader::MODE_SPATIAL));
- add_options.push_back(AddOption("Vertex", "Input", "Fragment", "VisualShaderNodeInput", vformat(input_param_for_vertex_and_fragment_shader_modes, "vertex"), { "vertex" }, VisualShaderNode::PORT_TYPE_VECTOR_3D, TYPE_FLAGS_FRAGMENT, Shader::MODE_SPATIAL));
- add_options.push_back(AddOption("View", "Input", "Fragment", "VisualShaderNodeInput", vformat(input_param_for_fragment_and_light_shader_modes, "view"), { "view" }, VisualShaderNode::PORT_TYPE_VECTOR_3D, TYPE_FLAGS_FRAGMENT, Shader::MODE_SPATIAL));
- add_options.push_back(AddOption("ViewIndex", "Input", "Vertex", "VisualShaderNodeInput", vformat(input_param_for_vertex_and_fragment_shader_modes, "view_index"), { "view_index" }, VisualShaderNode::PORT_TYPE_SCALAR_INT, TYPE_FLAGS_FRAGMENT, Shader::MODE_SPATIAL));
- add_options.push_back(AddOption("ViewMonoLeft", "Input", "Vertex", "VisualShaderNodeInput", vformat(input_param_for_vertex_and_fragment_shader_modes, "view_mono_left"), { "view_mono_left" }, VisualShaderNode::PORT_TYPE_SCALAR_INT, TYPE_FLAGS_FRAGMENT, Shader::MODE_SPATIAL));
- add_options.push_back(AddOption("ViewRight", "Input", "Vertex", "VisualShaderNodeInput", vformat(input_param_for_vertex_and_fragment_shader_modes, "view_right"), { "view_right" }, VisualShaderNode::PORT_TYPE_SCALAR_INT, TYPE_FLAGS_FRAGMENT, Shader::MODE_SPATIAL));
-
- add_options.push_back(AddOption("Albedo", "Input", "Light", "VisualShaderNodeInput", vformat(input_param_for_light_shader_mode, "albedo"), { "albedo" }, VisualShaderNode::PORT_TYPE_VECTOR_3D, TYPE_FLAGS_LIGHT, Shader::MODE_SPATIAL));
- add_options.push_back(AddOption("Attenuation", "Input", "Light", "VisualShaderNodeInput", vformat(input_param_for_light_shader_mode, "attenuation"), { "attenuation" }, VisualShaderNode::PORT_TYPE_SCALAR, TYPE_FLAGS_LIGHT, Shader::MODE_SPATIAL));
- add_options.push_back(AddOption("Backlight", "Input", "Light", "VisualShaderNodeInput", vformat(input_param_for_light_shader_mode, "backlight"), { "backlight" }, VisualShaderNode::PORT_TYPE_VECTOR_3D, TYPE_FLAGS_LIGHT, Shader::MODE_SPATIAL));
- add_options.push_back(AddOption("Diffuse", "Input", "Light", "VisualShaderNodeInput", vformat(input_param_for_light_shader_mode, "diffuse"), { "diffuse" }, VisualShaderNode::PORT_TYPE_VECTOR_3D, TYPE_FLAGS_LIGHT, Shader::MODE_SPATIAL));
- add_options.push_back(AddOption("FragCoord", "Input", "Light", "VisualShaderNodeInput", vformat(input_param_for_fragment_and_light_shader_modes, "fragcoord"), { "fragcoord" }, VisualShaderNode::PORT_TYPE_VECTOR_3D, TYPE_FLAGS_LIGHT, Shader::MODE_SPATIAL));
- add_options.push_back(AddOption("Light", "Input", "Light", "VisualShaderNodeInput", vformat(input_param_for_light_shader_mode, "light"), { "light" }, VisualShaderNode::PORT_TYPE_VECTOR_3D, TYPE_FLAGS_LIGHT, Shader::MODE_SPATIAL));
- add_options.push_back(AddOption("LightColor", "Input", "Light", "VisualShaderNodeInput", vformat(input_param_for_light_shader_mode, "light_color"), { "light_color" }, VisualShaderNode::PORT_TYPE_VECTOR_3D, TYPE_FLAGS_LIGHT, Shader::MODE_SPATIAL));
- add_options.push_back(AddOption("Metallic", "Input", "Light", "VisualShaderNodeInput", vformat(input_param_for_light_shader_mode, "metallic"), { "metallic" }, VisualShaderNode::PORT_TYPE_SCALAR, TYPE_FLAGS_LIGHT, Shader::MODE_SPATIAL));
- add_options.push_back(AddOption("Roughness", "Input", "Light", "VisualShaderNodeInput", vformat(input_param_for_light_shader_mode, "roughness"), { "roughness" }, VisualShaderNode::PORT_TYPE_SCALAR, TYPE_FLAGS_LIGHT, Shader::MODE_SPATIAL));
- add_options.push_back(AddOption("ShadowAttenuation", "Input", "Light", "VisualShaderNodeInput", vformat(input_param_for_light_shader_mode, "shadow_attenuation"), { "shadow_attenuation" }, VisualShaderNode::PORT_TYPE_VECTOR_3D, TYPE_FLAGS_LIGHT, Shader::MODE_SPATIAL));
- add_options.push_back(AddOption("Specular", "Input", "Light", "VisualShaderNodeInput", vformat(input_param_for_light_shader_mode, "specular"), { "specular" }, VisualShaderNode::PORT_TYPE_VECTOR_3D, TYPE_FLAGS_LIGHT, Shader::MODE_SPATIAL));
- add_options.push_back(AddOption("View", "Input", "Light", "VisualShaderNodeInput", vformat(input_param_for_fragment_and_light_shader_modes, "view"), { "view" }, VisualShaderNode::PORT_TYPE_VECTOR_3D, TYPE_FLAGS_LIGHT, Shader::MODE_SPATIAL));
+ add_options.push_back(AddOption("Alpha", "Input", "Vertex", "VisualShaderNodeInput", vformat(input_param_for_vertex_and_fragment_shader_modes, "alpha", "COLOR.a"), { "alpha" }, VisualShaderNode::PORT_TYPE_SCALAR, TYPE_FLAGS_VERTEX, Shader::MODE_SPATIAL));
+ add_options.push_back(AddOption("Binormal", "Input", "Vertex", "VisualShaderNodeInput", vformat(input_param_for_vertex_and_fragment_shader_modes, "binormal", "BINORMAL"), { "binormal" }, VisualShaderNode::PORT_TYPE_VECTOR_3D, TYPE_FLAGS_VERTEX, Shader::MODE_SPATIAL));
+ add_options.push_back(AddOption("Color", "Input", "Vertex", "VisualShaderNodeInput", vformat(input_param_for_vertex_and_fragment_shader_modes, "color", "COLOR.rgb"), { "color" }, VisualShaderNode::PORT_TYPE_VECTOR_3D, TYPE_FLAGS_VERTEX, Shader::MODE_SPATIAL));
+ add_options.push_back(AddOption("InstanceId", "Input", "Vertex", "VisualShaderNodeInput", vformat(input_param_for_vertex_shader_mode, "instance_id", "INSTANCE_ID"), { "instance_id" }, VisualShaderNode::PORT_TYPE_SCALAR_INT, TYPE_FLAGS_VERTEX, Shader::MODE_SPATIAL));
+ add_options.push_back(AddOption("InstanceCustom", "Input", "Vertex", "VisualShaderNodeInput", vformat(input_param_for_vertex_shader_mode, "instance_custom", "INSTANCE_CUSTOM.rgb"), { "instance_custom" }, VisualShaderNode::PORT_TYPE_VECTOR_3D, TYPE_FLAGS_VERTEX, Shader::MODE_SPATIAL));
+ add_options.push_back(AddOption("InstanceCustomAlpha", "Input", "Vertex", "VisualShaderNodeInput", vformat(input_param_for_vertex_shader_mode, "instance_custom_alpha", "INSTANCE_CUSTOM.a"), { "instance_custom_alpha" }, VisualShaderNode::PORT_TYPE_SCALAR, TYPE_FLAGS_VERTEX, Shader::MODE_SPATIAL));
+ add_options.push_back(AddOption("ModelViewMatrix", "Input", "Vertex", "VisualShaderNodeInput", vformat(input_param_for_vertex_shader_mode, "modelview_matrix", "MODELVIEW_MATRIX"), { "modelview_matrix" }, VisualShaderNode::PORT_TYPE_TRANSFORM, TYPE_FLAGS_VERTEX, Shader::MODE_SPATIAL));
+ add_options.push_back(AddOption("PointSize", "Input", "Vertex", "VisualShaderNodeInput", vformat(input_param_for_vertex_shader_mode, "point_size", "POINT_SIZE"), { "point_size" }, VisualShaderNode::PORT_TYPE_SCALAR, TYPE_FLAGS_VERTEX, Shader::MODE_SPATIAL));
+ add_options.push_back(AddOption("Tangent", "Input", "Vertex", "VisualShaderNodeInput", vformat(input_param_for_vertex_and_fragment_shader_mode, "tangent", "TANGENT"), { "tangent" }, VisualShaderNode::PORT_TYPE_VECTOR_3D, TYPE_FLAGS_VERTEX, Shader::MODE_SPATIAL));
+ add_options.push_back(AddOption("Vertex", "Input", "Vertex", "VisualShaderNodeInput", vformat(input_param_for_vertex_and_fragment_shader_modes, "vertex", "VERTEX"), { "vertex" }, VisualShaderNode::PORT_TYPE_VECTOR_3D, TYPE_FLAGS_VERTEX, Shader::MODE_SPATIAL));
+ add_options.push_back(AddOption("VertexId", "Input", "Vertex", "VisualShaderNodeInput", vformat(input_param_for_vertex_shader_mode, "vertex_id", "VERTEX_ID"), { "vertex_id" }, VisualShaderNode::PORT_TYPE_SCALAR_INT, TYPE_FLAGS_VERTEX, Shader::MODE_SPATIAL));
+ add_options.push_back(AddOption("ViewIndex", "Input", "Vertex", "VisualShaderNodeInput", vformat(input_param_for_vertex_and_fragment_shader_modes, "view_index", "VIEW_INDEX"), { "view_index" }, VisualShaderNode::PORT_TYPE_SCALAR_INT, TYPE_FLAGS_VERTEX, Shader::MODE_SPATIAL));
+ add_options.push_back(AddOption("ViewMonoLeft", "Input", "Vertex", "VisualShaderNodeInput", vformat(input_param_for_vertex_and_fragment_shader_modes, "view_mono_left", "VIEW_MONO_LEFT"), { "view_mono_left" }, VisualShaderNode::PORT_TYPE_SCALAR_INT, TYPE_FLAGS_VERTEX, Shader::MODE_SPATIAL));
+ add_options.push_back(AddOption("ViewRight", "Input", "Vertex", "VisualShaderNodeInput", vformat(input_param_for_vertex_and_fragment_shader_modes, "view_right", "VIEW_RIGHT"), { "view_right" }, VisualShaderNode::PORT_TYPE_SCALAR_INT, TYPE_FLAGS_VERTEX, Shader::MODE_SPATIAL));
+
+ add_options.push_back(AddOption("Alpha", "Input", "Fragment", "VisualShaderNodeInput", vformat(input_param_for_vertex_and_fragment_shader_modes, "alpha", "COLOR.a"), { "alpha" }, VisualShaderNode::PORT_TYPE_SCALAR, TYPE_FLAGS_FRAGMENT, Shader::MODE_SPATIAL));
+ add_options.push_back(AddOption("Binormal", "Input", "Fragment", "VisualShaderNodeInput", vformat(input_param_for_vertex_and_fragment_shader_modes, "binormal", "BINORMAL"), { "binormal" }, VisualShaderNode::PORT_TYPE_VECTOR_3D, TYPE_FLAGS_FRAGMENT, Shader::MODE_SPATIAL));
+ add_options.push_back(AddOption("Color", "Input", "Fragment", "VisualShaderNodeInput", vformat(input_param_for_vertex_and_fragment_shader_modes, "color", "COLOR.rgb"), { "color" }, VisualShaderNode::PORT_TYPE_VECTOR_3D, TYPE_FLAGS_FRAGMENT, Shader::MODE_SPATIAL));
+ add_options.push_back(AddOption("DepthTexture", "Input", "Fragment", "VisualShaderNodeInput", vformat(input_param_for_fragment_shader_mode, "depth_texture", "DEPTH_TEXTURE"), { "depth_texture" }, VisualShaderNode::PORT_TYPE_SAMPLER, TYPE_FLAGS_FRAGMENT, Shader::MODE_SPATIAL));
+ add_options.push_back(AddOption("FragCoord", "Input", "Fragment", "VisualShaderNodeInput", vformat(input_param_for_fragment_and_light_shader_modes, "fragcoord", "FRAGCOORD.xyz"), { "fragcoord" }, VisualShaderNode::PORT_TYPE_VECTOR_3D, TYPE_FLAGS_FRAGMENT, Shader::MODE_SPATIAL));
+ add_options.push_back(AddOption("FrontFacing", "Input", "Fragment", "VisualShaderNodeInput", vformat(input_param_for_fragment_shader_mode, "front_facing", "FRONT_FACING"), { "front_facing" }, VisualShaderNode::PORT_TYPE_BOOLEAN, TYPE_FLAGS_FRAGMENT, Shader::MODE_SPATIAL));
+ add_options.push_back(AddOption("PointCoord", "Input", "Fragment", "VisualShaderNodeInput", vformat(input_param_for_fragment_shader_mode, "point_coord", "POINT_COORD"), { "point_coord" }, VisualShaderNode::PORT_TYPE_VECTOR_2D, TYPE_FLAGS_FRAGMENT, Shader::MODE_SPATIAL));
+ add_options.push_back(AddOption("ScreenTexture", "Input", "Fragment", "VisualShaderNodeInput", vformat(input_param_for_fragment_shader_mode, "screen_texture", "SCREEN_TEXTURE"), { "screen_texture" }, VisualShaderNode::PORT_TYPE_SAMPLER, TYPE_FLAGS_FRAGMENT, Shader::MODE_SPATIAL));
+ add_options.push_back(AddOption("ScreenUV", "Input", "Fragment", "VisualShaderNodeInput", vformat(input_param_for_fragment_shader_mode, "screen_uv", "SCREEN_UV"), { "screen_uv" }, VisualShaderNode::PORT_TYPE_VECTOR_2D, TYPE_FLAGS_FRAGMENT, Shader::MODE_SPATIAL));
+ add_options.push_back(AddOption("Tangent", "Input", "Fragment", "VisualShaderNodeInput", vformat(input_param_for_vertex_and_fragment_shader_modes, "tangent", "TANGENT"), { "tangent" }, VisualShaderNode::PORT_TYPE_VECTOR_3D, TYPE_FLAGS_FRAGMENT, Shader::MODE_SPATIAL));
+ add_options.push_back(AddOption("Vertex", "Input", "Fragment", "VisualShaderNodeInput", vformat(input_param_for_vertex_and_fragment_shader_modes, "vertex", "VERTEX"), { "vertex" }, VisualShaderNode::PORT_TYPE_VECTOR_3D, TYPE_FLAGS_FRAGMENT, Shader::MODE_SPATIAL));
+ add_options.push_back(AddOption("View", "Input", "Fragment", "VisualShaderNodeInput", vformat(input_param_for_fragment_and_light_shader_modes, "view", "VIEW"), { "view" }, VisualShaderNode::PORT_TYPE_VECTOR_3D, TYPE_FLAGS_FRAGMENT, Shader::MODE_SPATIAL));
+ add_options.push_back(AddOption("ViewIndex", "Input", "Vertex", "VisualShaderNodeInput", vformat(input_param_for_vertex_and_fragment_shader_modes, "view_index", "VIEW_INDEX"), { "view_index" }, VisualShaderNode::PORT_TYPE_SCALAR_INT, TYPE_FLAGS_FRAGMENT, Shader::MODE_SPATIAL));
+ add_options.push_back(AddOption("ViewMonoLeft", "Input", "Vertex", "VisualShaderNodeInput", vformat(input_param_for_vertex_and_fragment_shader_modes, "view_mono_left", "VIEW_MONO_LEFT"), { "view_mono_left" }, VisualShaderNode::PORT_TYPE_SCALAR_INT, TYPE_FLAGS_FRAGMENT, Shader::MODE_SPATIAL));
+ add_options.push_back(AddOption("ViewRight", "Input", "Vertex", "VisualShaderNodeInput", vformat(input_param_for_vertex_and_fragment_shader_modes, "view_right", "VIEW_RIGHT"), { "view_right" }, VisualShaderNode::PORT_TYPE_SCALAR_INT, TYPE_FLAGS_FRAGMENT, Shader::MODE_SPATIAL));
+
+ add_options.push_back(AddOption("Albedo", "Input", "Light", "VisualShaderNodeInput", vformat(input_param_for_light_shader_mode, "albedo", "ALBEDO"), { "albedo" }, VisualShaderNode::PORT_TYPE_VECTOR_3D, TYPE_FLAGS_LIGHT, Shader::MODE_SPATIAL));
+ add_options.push_back(AddOption("Attenuation", "Input", "Light", "VisualShaderNodeInput", vformat(input_param_for_light_shader_mode, "attenuation", "ATTENUATION"), { "attenuation" }, VisualShaderNode::PORT_TYPE_SCALAR, TYPE_FLAGS_LIGHT, Shader::MODE_SPATIAL));
+ add_options.push_back(AddOption("Backlight", "Input", "Light", "VisualShaderNodeInput", vformat(input_param_for_light_shader_mode, "backlight", "BACKLIGHT"), { "backlight" }, VisualShaderNode::PORT_TYPE_VECTOR_3D, TYPE_FLAGS_LIGHT, Shader::MODE_SPATIAL));
+ add_options.push_back(AddOption("Diffuse", "Input", "Light", "VisualShaderNodeInput", vformat(input_param_for_light_shader_mode, "diffuse", "DIFFUSE_LIGHT"), { "diffuse" }, VisualShaderNode::PORT_TYPE_VECTOR_3D, TYPE_FLAGS_LIGHT, Shader::MODE_SPATIAL));
+ add_options.push_back(AddOption("FragCoord", "Input", "Light", "VisualShaderNodeInput", vformat(input_param_for_fragment_and_light_shader_modes, "fragcoord", "FRAGCOORD.xyz"), { "fragcoord" }, VisualShaderNode::PORT_TYPE_VECTOR_3D, TYPE_FLAGS_LIGHT, Shader::MODE_SPATIAL));
+ add_options.push_back(AddOption("Light", "Input", "Light", "VisualShaderNodeInput", vformat(input_param_for_light_shader_mode, "light", "LIGHT"), { "light" }, VisualShaderNode::PORT_TYPE_VECTOR_3D, TYPE_FLAGS_LIGHT, Shader::MODE_SPATIAL));
+ add_options.push_back(AddOption("LightColor", "Input", "Light", "VisualShaderNodeInput", vformat(input_param_for_light_shader_mode, "light_color", "LIGHT_COLOR"), { "light_color" }, VisualShaderNode::PORT_TYPE_VECTOR_3D, TYPE_FLAGS_LIGHT, Shader::MODE_SPATIAL));
+ add_options.push_back(AddOption("Metallic", "Input", "Light", "VisualShaderNodeInput", vformat(input_param_for_light_shader_mode, "metallic", "METALLIC"), { "metallic" }, VisualShaderNode::PORT_TYPE_SCALAR, TYPE_FLAGS_LIGHT, Shader::MODE_SPATIAL));
+ add_options.push_back(AddOption("Roughness", "Input", "Light", "VisualShaderNodeInput", vformat(input_param_for_light_shader_mode, "roughness", "ROUGHNESS"), { "roughness" }, VisualShaderNode::PORT_TYPE_SCALAR, TYPE_FLAGS_LIGHT, Shader::MODE_SPATIAL));
+ add_options.push_back(AddOption("Specular", "Input", "Light", "VisualShaderNodeInput", vformat(input_param_for_light_shader_mode, "specular", "SPECULAR_LIGHT"), { "specular" }, VisualShaderNode::PORT_TYPE_VECTOR_3D, TYPE_FLAGS_LIGHT, Shader::MODE_SPATIAL));
+ add_options.push_back(AddOption("View", "Input", "Light", "VisualShaderNodeInput", vformat(input_param_for_fragment_and_light_shader_modes, "view", "VIEW"), { "view" }, VisualShaderNode::PORT_TYPE_VECTOR_3D, TYPE_FLAGS_LIGHT, Shader::MODE_SPATIAL));
// CANVASITEM INPUTS
- add_options.push_back(AddOption("AtLightPass", "Input", "Vertex", "VisualShaderNodeInput", vformat(input_param_for_vertex_and_fragment_shader_modes, "at_light_pass"), { "at_light_pass" }, VisualShaderNode::PORT_TYPE_BOOLEAN, TYPE_FLAGS_VERTEX, Shader::MODE_CANVAS_ITEM));
- add_options.push_back(AddOption("CanvasMatrix", "Input", "Vertex", "VisualShaderNodeInput", vformat(input_param_for_vertex_shader_mode, "canvas_matrix"), { "canvas_matrix" }, VisualShaderNode::PORT_TYPE_TRANSFORM, TYPE_FLAGS_VERTEX, Shader::MODE_CANVAS_ITEM));
- add_options.push_back(AddOption("InstanceCustom", "Input", "Vertex", "VisualShaderNodeInput", vformat(input_param_for_vertex_shader_mode, "instance_custom"), { "instance_custom" }, VisualShaderNode::PORT_TYPE_VECTOR_3D, TYPE_FLAGS_VERTEX, Shader::MODE_CANVAS_ITEM));
- add_options.push_back(AddOption("InstanceCustomAlpha", "Input", "Vertex", "VisualShaderNodeInput", vformat(input_param_for_vertex_shader_mode, "instance_custom_alpha"), { "instance_custom_alpha" }, VisualShaderNode::PORT_TYPE_SCALAR, TYPE_FLAGS_VERTEX, Shader::MODE_CANVAS_ITEM));
- add_options.push_back(AddOption("InstanceId", "Input", "Vertex", "VisualShaderNodeInput", vformat(input_param_for_vertex_shader_mode, "instance_id"), { "instance_id" }, VisualShaderNode::PORT_TYPE_SCALAR_INT, TYPE_FLAGS_VERTEX, Shader::MODE_CANVAS_ITEM));
- add_options.push_back(AddOption("ModelMatrix", "Input", "Vertex", "VisualShaderNodeInput", vformat(input_param_for_vertex_shader_mode, "model_matrix"), { "model_matrix" }, VisualShaderNode::PORT_TYPE_TRANSFORM, TYPE_FLAGS_VERTEX, Shader::MODE_CANVAS_ITEM));
- add_options.push_back(AddOption("PointSize", "Input", "Vertex", "VisualShaderNodeInput", vformat(input_param_for_vertex_shader_mode, "point_size"), { "point_size" }, VisualShaderNode::PORT_TYPE_SCALAR, TYPE_FLAGS_VERTEX, Shader::MODE_CANVAS_ITEM));
- add_options.push_back(AddOption("ScreenMatrix", "Input", "Vertex", "VisualShaderNodeInput", vformat(input_param_for_vertex_shader_mode, "screen_matrix"), { "screen_matrix" }, VisualShaderNode::PORT_TYPE_TRANSFORM, TYPE_FLAGS_VERTEX, Shader::MODE_CANVAS_ITEM));
- add_options.push_back(AddOption("Vertex", "Input", "Vertex", "VisualShaderNodeInput", vformat(input_param_for_vertex_and_fragment_shader_mode, "vertex"), { "vertex" }, VisualShaderNode::PORT_TYPE_VECTOR_2D, TYPE_FLAGS_VERTEX, Shader::MODE_CANVAS_ITEM));
- add_options.push_back(AddOption("VertexId", "Input", "Vertex", "VisualShaderNodeInput", vformat(input_param_for_vertex_shader_mode, "vertex_id"), { "vertex_id" }, VisualShaderNode::PORT_TYPE_SCALAR_INT, TYPE_FLAGS_VERTEX, Shader::MODE_CANVAS_ITEM));
-
- add_options.push_back(AddOption("AtLightPass", "Input", "Fragment", "VisualShaderNodeInput", vformat(input_param_for_vertex_and_fragment_shader_modes, "at_light_pass"), { "at_light_pass" }, VisualShaderNode::PORT_TYPE_BOOLEAN, TYPE_FLAGS_FRAGMENT, Shader::MODE_CANVAS_ITEM));
- add_options.push_back(AddOption("FragCoord", "Input", "Fragment", "VisualShaderNodeInput", vformat(input_param_for_fragment_and_light_shader_modes, "fragcoord"), { "fragcoord" }, VisualShaderNode::PORT_TYPE_VECTOR_3D, TYPE_FLAGS_FRAGMENT, Shader::MODE_CANVAS_ITEM));
- add_options.push_back(AddOption("NormalTexture", "Input", "Fragment", "VisualShaderNodeInput", vformat(input_param_for_fragment_shader_mode, "normal_texture"), { "normal_texture" }, VisualShaderNode::PORT_TYPE_SAMPLER, TYPE_FLAGS_FRAGMENT, Shader::MODE_CANVAS_ITEM));
- add_options.push_back(AddOption("PointCoord", "Input", "Fragment", "VisualShaderNodeInput", vformat(input_param_for_fragment_and_light_shader_modes, "point_coord"), { "point_coord" }, VisualShaderNode::PORT_TYPE_VECTOR_2D, TYPE_FLAGS_FRAGMENT, Shader::MODE_CANVAS_ITEM));
- add_options.push_back(AddOption("ScreenPixelSize", "Input", "Fragment", "VisualShaderNodeInput", vformat(input_param_for_fragment_shader_mode, "screen_pixel_size"), { "screen_pixel_size" }, VisualShaderNode::PORT_TYPE_VECTOR_2D, TYPE_FLAGS_FRAGMENT, Shader::MODE_CANVAS_ITEM));
- add_options.push_back(AddOption("ScreenTexture", "Input", "Fragment", "VisualShaderNodeInput", vformat(input_param_for_fragment_shader_mode, "screen_texture"), { "screen_texture" }, VisualShaderNode::PORT_TYPE_SAMPLER, TYPE_FLAGS_FRAGMENT, Shader::MODE_CANVAS_ITEM));
- add_options.push_back(AddOption("ScreenUV", "Input", "Fragment", "VisualShaderNodeInput", vformat(input_param_for_fragment_and_light_shader_modes, "screen_uv"), { "screen_uv" }, VisualShaderNode::PORT_TYPE_VECTOR_2D, TYPE_FLAGS_FRAGMENT, Shader::MODE_CANVAS_ITEM));
- add_options.push_back(AddOption("SpecularShininess", "Input", "Fragment", "VisualShaderNodeInput", vformat(input_param_for_fragment_and_light_shader_modes, "specular_shininess"), { "specular_shininess" }, VisualShaderNode::PORT_TYPE_VECTOR_3D, TYPE_FLAGS_FRAGMENT, Shader::MODE_CANVAS_ITEM));
- add_options.push_back(AddOption("SpecularShininessAlpha", "Input", "Fragment", "VisualShaderNodeInput", vformat(input_param_for_fragment_and_light_shader_modes, "specular_shininess_alpha"), { "specular_shininess_alpha" }, VisualShaderNode::PORT_TYPE_SCALAR, TYPE_FLAGS_FRAGMENT, Shader::MODE_CANVAS_ITEM));
- add_options.push_back(AddOption("SpecularShininessTexture", "Input", "Fragment", "VisualShaderNodeInput", vformat(input_param_for_fragment_shader_mode, "specular_shininess_texture"), { "specular_shininess_texture" }, VisualShaderNode::PORT_TYPE_SAMPLER, TYPE_FLAGS_FRAGMENT, Shader::MODE_CANVAS_ITEM));
- add_options.push_back(AddOption("Texture", "Input", "Fragment", "VisualShaderNodeInput", vformat(input_param_for_fragment_and_light_shader_modes, "texture"), { "texture" }, VisualShaderNode::PORT_TYPE_SAMPLER, TYPE_FLAGS_FRAGMENT, Shader::MODE_CANVAS_ITEM));
- add_options.push_back(AddOption("Vertex", "Input", "Fragment", "VisualShaderNodeInput", vformat(input_param_for_vertex_and_fragment_shader_mode, "vertex"), { "vertex" }, VisualShaderNode::PORT_TYPE_VECTOR_2D, TYPE_FLAGS_FRAGMENT, Shader::MODE_CANVAS_ITEM));
-
- add_options.push_back(AddOption("FragCoord", "Input", "Light", "VisualShaderNodeInput", vformat(input_param_for_fragment_and_light_shader_modes, "fragcoord"), { "fragcoord" }, VisualShaderNode::PORT_TYPE_VECTOR_3D, TYPE_FLAGS_LIGHT, Shader::MODE_CANVAS_ITEM));
- add_options.push_back(AddOption("Light", "Input", "Light", "VisualShaderNodeInput", vformat(input_param_for_light_shader_mode, "light"), { "light" }, VisualShaderNode::PORT_TYPE_VECTOR_3D, TYPE_FLAGS_LIGHT, Shader::MODE_CANVAS_ITEM));
- add_options.push_back(AddOption("LightAlpha", "Input", "Light", "VisualShaderNodeInput", vformat(input_param_for_light_shader_mode, "light_alpha"), { "light_alpha" }, VisualShaderNode::PORT_TYPE_SCALAR, TYPE_FLAGS_LIGHT, Shader::MODE_CANVAS_ITEM));
- add_options.push_back(AddOption("LightColor", "Input", "Light", "VisualShaderNodeInput", vformat(input_param_for_light_shader_mode, "light_color"), { "light_color" }, VisualShaderNode::PORT_TYPE_VECTOR_3D, TYPE_FLAGS_LIGHT, Shader::MODE_CANVAS_ITEM));
- add_options.push_back(AddOption("LightColorAlpha", "Input", "Light", "VisualShaderNodeInput", vformat(input_param_for_light_shader_mode, "light_color_alpha"), { "light_color_alpha" }, VisualShaderNode::PORT_TYPE_SCALAR, TYPE_FLAGS_LIGHT, Shader::MODE_CANVAS_ITEM));
- add_options.push_back(AddOption("LightPosition", "Input", "Light", "VisualShaderNodeInput", vformat(input_param_for_light_shader_mode, "light_position"), { "light_position" }, VisualShaderNode::PORT_TYPE_VECTOR_3D, TYPE_FLAGS_LIGHT, Shader::MODE_CANVAS_ITEM));
- add_options.push_back(AddOption("LightVertex", "Input", "Light", "VisualShaderNodeInput", vformat(input_param_for_fragment_and_light_shader_modes, "light_vertex"), { "light_vertex" }, VisualShaderNode::PORT_TYPE_VECTOR_3D, TYPE_FLAGS_LIGHT, Shader::MODE_CANVAS_ITEM));
- add_options.push_back(AddOption("Normal", "Input", "Light", "VisualShaderNodeInput", vformat(input_param_for_light_shader_mode, "normal"), { "normal" }, VisualShaderNode::PORT_TYPE_VECTOR_3D, TYPE_FLAGS_LIGHT, Shader::MODE_CANVAS_ITEM));
- add_options.push_back(AddOption("PointCoord", "Input", "Light", "VisualShaderNodeInput", vformat(input_param_for_fragment_and_light_shader_modes, "point_coord"), { "point_coord" }, VisualShaderNode::PORT_TYPE_VECTOR_2D, TYPE_FLAGS_LIGHT, Shader::MODE_CANVAS_ITEM));
- add_options.push_back(AddOption("ScreenUV", "Input", "Light", "VisualShaderNodeInput", vformat(input_param_for_fragment_and_light_shader_modes, "screen_uv"), { "screen_uv" }, VisualShaderNode::PORT_TYPE_VECTOR_2D, TYPE_FLAGS_LIGHT, Shader::MODE_CANVAS_ITEM));
- add_options.push_back(AddOption("Shadow", "Input", "Light", "VisualShaderNodeInput", vformat(input_param_for_light_shader_mode, "shadow"), { "shadow" }, VisualShaderNode::PORT_TYPE_VECTOR_3D, TYPE_FLAGS_LIGHT, Shader::MODE_CANVAS_ITEM));
- add_options.push_back(AddOption("ShadowAlpha", "Input", "Light", "VisualShaderNodeInput", vformat(input_param_for_light_shader_mode, "shadow_alpha"), { "shadow_alpha" }, VisualShaderNode::PORT_TYPE_SCALAR, TYPE_FLAGS_LIGHT, Shader::MODE_CANVAS_ITEM));
- add_options.push_back(AddOption("SpecularShininess", "Input", "Light", "VisualShaderNodeInput", vformat(input_param_for_fragment_and_light_shader_modes, "specular_shininess"), { "specular_shininess" }, VisualShaderNode::PORT_TYPE_VECTOR_3D, TYPE_FLAGS_LIGHT, Shader::MODE_CANVAS_ITEM));
- add_options.push_back(AddOption("SpecularShininessAlpha", "Input", "Light", "VisualShaderNodeInput", vformat(input_param_for_fragment_and_light_shader_modes, "specular_shininess_alpha"), { "specular_shininess_alpha" }, VisualShaderNode::PORT_TYPE_SCALAR, TYPE_FLAGS_LIGHT, Shader::MODE_CANVAS_ITEM));
- add_options.push_back(AddOption("Texture", "Input", "Light", "VisualShaderNodeInput", vformat(input_param_for_fragment_and_light_shader_modes, "texture"), { "texture" }, VisualShaderNode::PORT_TYPE_SAMPLER, TYPE_FLAGS_LIGHT, Shader::MODE_CANVAS_ITEM));
+ add_options.push_back(AddOption("AtLightPass", "Input", "Vertex", "VisualShaderNodeInput", vformat(input_param_for_vertex_and_fragment_shader_modes, "at_light_pass", "AT_LIGHT_PASS"), { "at_light_pass" }, VisualShaderNode::PORT_TYPE_BOOLEAN, TYPE_FLAGS_VERTEX, Shader::MODE_CANVAS_ITEM));
+ add_options.push_back(AddOption("CanvasMatrix", "Input", "Vertex", "VisualShaderNodeInput", vformat(input_param_for_vertex_shader_mode, "canvas_matrix", "CANVAS_MATRIX"), { "canvas_matrix" }, VisualShaderNode::PORT_TYPE_TRANSFORM, TYPE_FLAGS_VERTEX, Shader::MODE_CANVAS_ITEM));
+ add_options.push_back(AddOption("InstanceCustom", "Input", "Vertex", "VisualShaderNodeInput", vformat(input_param_for_vertex_shader_mode, "instance_custom", "INSTANCE_CUSTOM.rgb"), { "instance_custom" }, VisualShaderNode::PORT_TYPE_VECTOR_3D, TYPE_FLAGS_VERTEX, Shader::MODE_CANVAS_ITEM));
+ add_options.push_back(AddOption("InstanceCustomAlpha", "Input", "Vertex", "VisualShaderNodeInput", vformat(input_param_for_vertex_shader_mode, "instance_custom_alpha", "INSTANCE_CUSTOM.a"), { "instance_custom_alpha" }, VisualShaderNode::PORT_TYPE_SCALAR, TYPE_FLAGS_VERTEX, Shader::MODE_CANVAS_ITEM));
+ add_options.push_back(AddOption("InstanceId", "Input", "Vertex", "VisualShaderNodeInput", vformat(input_param_for_vertex_shader_mode, "instance_id", "INSTANCE_ID"), { "instance_id" }, VisualShaderNode::PORT_TYPE_SCALAR_INT, TYPE_FLAGS_VERTEX, Shader::MODE_CANVAS_ITEM));
+ add_options.push_back(AddOption("ModelMatrix", "Input", "Vertex", "VisualShaderNodeInput", vformat(input_param_for_vertex_shader_mode, "model_matrix", "MODEL_MATRIX"), { "model_matrix" }, VisualShaderNode::PORT_TYPE_TRANSFORM, TYPE_FLAGS_VERTEX, Shader::MODE_CANVAS_ITEM));
+ add_options.push_back(AddOption("PointSize", "Input", "Vertex", "VisualShaderNodeInput", vformat(input_param_for_vertex_shader_mode, "point_size", "POINT_SIZE"), { "point_size" }, VisualShaderNode::PORT_TYPE_SCALAR, TYPE_FLAGS_VERTEX, Shader::MODE_CANVAS_ITEM));
+ add_options.push_back(AddOption("ScreenMatrix", "Input", "Vertex", "VisualShaderNodeInput", vformat(input_param_for_vertex_shader_mode, "screen_matrix", "SCREEN_MATRIX"), { "screen_matrix" }, VisualShaderNode::PORT_TYPE_TRANSFORM, TYPE_FLAGS_VERTEX, Shader::MODE_CANVAS_ITEM));
+ add_options.push_back(AddOption("Vertex", "Input", "Vertex", "VisualShaderNodeInput", vformat(input_param_for_vertex_and_fragment_shader_mode, "vertex", "VERTEX"), { "vertex" }, VisualShaderNode::PORT_TYPE_VECTOR_2D, TYPE_FLAGS_VERTEX, Shader::MODE_CANVAS_ITEM));
+ add_options.push_back(AddOption("VertexId", "Input", "Vertex", "VisualShaderNodeInput", vformat(input_param_for_vertex_shader_mode, "vertex_id", "VERTEX_ID"), { "vertex_id" }, VisualShaderNode::PORT_TYPE_SCALAR_INT, TYPE_FLAGS_VERTEX, Shader::MODE_CANVAS_ITEM));
+
+ add_options.push_back(AddOption("AtLightPass", "Input", "Fragment", "VisualShaderNodeInput", vformat(input_param_for_vertex_and_fragment_shader_modes, "at_light_pass", "AT_LIGHT_PASS"), { "at_light_pass" }, VisualShaderNode::PORT_TYPE_BOOLEAN, TYPE_FLAGS_FRAGMENT, Shader::MODE_CANVAS_ITEM));
+ add_options.push_back(AddOption("FragCoord", "Input", "Fragment", "VisualShaderNodeInput", vformat(input_param_for_fragment_and_light_shader_modes, "fragcoord", "FRAGCOORD.xyz"), { "fragcoord" }, VisualShaderNode::PORT_TYPE_VECTOR_3D, TYPE_FLAGS_FRAGMENT, Shader::MODE_CANVAS_ITEM));
+ add_options.push_back(AddOption("NormalTexture", "Input", "Fragment", "VisualShaderNodeInput", vformat(input_param_for_fragment_shader_mode, "normal_texture", "NORMAL_TEXTURE"), { "normal_texture" }, VisualShaderNode::PORT_TYPE_SAMPLER, TYPE_FLAGS_FRAGMENT, Shader::MODE_CANVAS_ITEM));
+ add_options.push_back(AddOption("PointCoord", "Input", "Fragment", "VisualShaderNodeInput", vformat(input_param_for_fragment_and_light_shader_modes, "point_coord", "POINT_COORD"), { "point_coord" }, VisualShaderNode::PORT_TYPE_VECTOR_2D, TYPE_FLAGS_FRAGMENT, Shader::MODE_CANVAS_ITEM));
+ add_options.push_back(AddOption("ScreenPixelSize", "Input", "Fragment", "VisualShaderNodeInput", vformat(input_param_for_fragment_shader_mode, "screen_pixel_size", "SCREEN_PIXEL_SIZE"), { "screen_pixel_size" }, VisualShaderNode::PORT_TYPE_VECTOR_2D, TYPE_FLAGS_FRAGMENT, Shader::MODE_CANVAS_ITEM));
+ add_options.push_back(AddOption("ScreenTexture", "Input", "Fragment", "VisualShaderNodeInput", vformat(input_param_for_fragment_shader_mode, "screen_texture", "SCREEN_TEXTURE"), { "screen_texture" }, VisualShaderNode::PORT_TYPE_SAMPLER, TYPE_FLAGS_FRAGMENT, Shader::MODE_CANVAS_ITEM));
+ add_options.push_back(AddOption("ScreenUV", "Input", "Fragment", "VisualShaderNodeInput", vformat(input_param_for_fragment_and_light_shader_modes, "screen_uv", "SCREEN_UV"), { "screen_uv" }, VisualShaderNode::PORT_TYPE_VECTOR_2D, TYPE_FLAGS_FRAGMENT, Shader::MODE_CANVAS_ITEM));
+ add_options.push_back(AddOption("SpecularShininess", "Input", "Fragment", "VisualShaderNodeInput", vformat(input_param_for_fragment_and_light_shader_modes, "specular_shininess", "SPECULAR_SHININESS.rgb"), { "specular_shininess" }, VisualShaderNode::PORT_TYPE_VECTOR_3D, TYPE_FLAGS_FRAGMENT, Shader::MODE_CANVAS_ITEM));
+ add_options.push_back(AddOption("SpecularShininessAlpha", "Input", "Fragment", "VisualShaderNodeInput", vformat(input_param_for_fragment_and_light_shader_modes, "specular_shininess_alpha", "SPECULAR_SHININESS.a"), { "specular_shininess_alpha" }, VisualShaderNode::PORT_TYPE_SCALAR, TYPE_FLAGS_FRAGMENT, Shader::MODE_CANVAS_ITEM));
+ add_options.push_back(AddOption("SpecularShininessTexture", "Input", "Fragment", "VisualShaderNodeInput", vformat(input_param_for_fragment_shader_mode, "specular_shininess_texture", "SPECULAR_SHININESS_TEXTURE"), { "specular_shininess_texture" }, VisualShaderNode::PORT_TYPE_SAMPLER, TYPE_FLAGS_FRAGMENT, Shader::MODE_CANVAS_ITEM));
+ add_options.push_back(AddOption("Texture", "Input", "Fragment", "VisualShaderNodeInput", vformat(input_param_for_fragment_and_light_shader_modes, "texture", "TEXTURE"), { "texture" }, VisualShaderNode::PORT_TYPE_SAMPLER, TYPE_FLAGS_FRAGMENT, Shader::MODE_CANVAS_ITEM));
+ add_options.push_back(AddOption("Vertex", "Input", "Fragment", "VisualShaderNodeInput", vformat(input_param_for_vertex_and_fragment_shader_mode, "vertex", "VERTEX"), { "vertex" }, VisualShaderNode::PORT_TYPE_VECTOR_2D, TYPE_FLAGS_FRAGMENT, Shader::MODE_CANVAS_ITEM));
+
+ add_options.push_back(AddOption("FragCoord", "Input", "Light", "VisualShaderNodeInput", vformat(input_param_for_fragment_and_light_shader_modes, "fragcoord", "FRAGCOORD.xyz"), { "fragcoord" }, VisualShaderNode::PORT_TYPE_VECTOR_3D, TYPE_FLAGS_LIGHT, Shader::MODE_CANVAS_ITEM));
+ add_options.push_back(AddOption("Light", "Input", "Light", "VisualShaderNodeInput", vformat(input_param_for_light_shader_mode, "light", "LIGHT.rgb"), { "light" }, VisualShaderNode::PORT_TYPE_VECTOR_3D, TYPE_FLAGS_LIGHT, Shader::MODE_CANVAS_ITEM));
+ add_options.push_back(AddOption("LightAlpha", "Input", "Light", "VisualShaderNodeInput", vformat(input_param_for_light_shader_mode, "light_alpha", "LIGHT.a"), { "light_alpha" }, VisualShaderNode::PORT_TYPE_SCALAR, TYPE_FLAGS_LIGHT, Shader::MODE_CANVAS_ITEM));
+ add_options.push_back(AddOption("LightColor", "Input", "Light", "VisualShaderNodeInput", vformat(input_param_for_light_shader_mode, "light_color", "LIGHT_COLOR.rgb"), { "light_color" }, VisualShaderNode::PORT_TYPE_VECTOR_3D, TYPE_FLAGS_LIGHT, Shader::MODE_CANVAS_ITEM));
+ add_options.push_back(AddOption("LightColorAlpha", "Input", "Light", "VisualShaderNodeInput", vformat(input_param_for_light_shader_mode, "light_color_alpha", "LIGHT_COLOR.a"), { "light_color_alpha" }, VisualShaderNode::PORT_TYPE_SCALAR, TYPE_FLAGS_LIGHT, Shader::MODE_CANVAS_ITEM));
+ add_options.push_back(AddOption("LightPosition", "Input", "Light", "VisualShaderNodeInput", vformat(input_param_for_light_shader_mode, "light_position", "LIGHT_POSITION"), { "light_position" }, VisualShaderNode::PORT_TYPE_VECTOR_3D, TYPE_FLAGS_LIGHT, Shader::MODE_CANVAS_ITEM));
+ add_options.push_back(AddOption("LightVertex", "Input", "Light", "VisualShaderNodeInput", vformat(input_param_for_fragment_and_light_shader_modes, "light_vertex", "LIGHT_VERTEX"), { "light_vertex" }, VisualShaderNode::PORT_TYPE_VECTOR_3D, TYPE_FLAGS_LIGHT, Shader::MODE_CANVAS_ITEM));
+ add_options.push_back(AddOption("Normal", "Input", "Light", "VisualShaderNodeInput", vformat(input_param_for_light_shader_mode, "normal", "NORMAL"), { "normal" }, VisualShaderNode::PORT_TYPE_VECTOR_3D, TYPE_FLAGS_LIGHT, Shader::MODE_CANVAS_ITEM));
+ add_options.push_back(AddOption("PointCoord", "Input", "Light", "VisualShaderNodeInput", vformat(input_param_for_fragment_and_light_shader_modes, "point_coord", "POINT_COORD"), { "point_coord" }, VisualShaderNode::PORT_TYPE_VECTOR_2D, TYPE_FLAGS_LIGHT, Shader::MODE_CANVAS_ITEM));
+ add_options.push_back(AddOption("ScreenUV", "Input", "Light", "VisualShaderNodeInput", vformat(input_param_for_fragment_and_light_shader_modes, "screen_uv", "SCREEN_UV"), { "screen_uv" }, VisualShaderNode::PORT_TYPE_VECTOR_2D, TYPE_FLAGS_LIGHT, Shader::MODE_CANVAS_ITEM));
+ add_options.push_back(AddOption("Shadow", "Input", "Light", "VisualShaderNodeInput", vformat(input_param_for_light_shader_mode, "shadow", "SHADOW_MODULATE.rgb"), { "shadow" }, VisualShaderNode::PORT_TYPE_VECTOR_3D, TYPE_FLAGS_LIGHT, Shader::MODE_CANVAS_ITEM));
+ add_options.push_back(AddOption("ShadowAlpha", "Input", "Light", "VisualShaderNodeInput", vformat(input_param_for_light_shader_mode, "shadow_alpha", "SHADOW_MODULATE.a"), { "shadow_alpha" }, VisualShaderNode::PORT_TYPE_SCALAR, TYPE_FLAGS_LIGHT, Shader::MODE_CANVAS_ITEM));
+ add_options.push_back(AddOption("SpecularShininess", "Input", "Light", "VisualShaderNodeInput", vformat(input_param_for_fragment_and_light_shader_modes, "specular_shininess", "SPECULAR_SHININESS.rgb"), { "specular_shininess" }, VisualShaderNode::PORT_TYPE_VECTOR_3D, TYPE_FLAGS_LIGHT, Shader::MODE_CANVAS_ITEM));
+ add_options.push_back(AddOption("SpecularShininessAlpha", "Input", "Light", "VisualShaderNodeInput", vformat(input_param_for_fragment_and_light_shader_modes, "specular_shininess_alpha", "SPECULAR_SHININESS.a"), { "specular_shininess_alpha" }, VisualShaderNode::PORT_TYPE_SCALAR, TYPE_FLAGS_LIGHT, Shader::MODE_CANVAS_ITEM));
+ add_options.push_back(AddOption("Texture", "Input", "Light", "VisualShaderNodeInput", vformat(input_param_for_fragment_and_light_shader_modes, "texture", "TEXTURE"), { "texture" }, VisualShaderNode::PORT_TYPE_SAMPLER, TYPE_FLAGS_LIGHT, Shader::MODE_CANVAS_ITEM));
// SKY INPUTS
- add_options.push_back(AddOption("AtCubeMapPass", "Input", "Sky", "VisualShaderNodeInput", vformat(input_param_for_sky_shader_mode, "at_cubemap_pass"), { "at_cubemap_pass" }, VisualShaderNode::PORT_TYPE_BOOLEAN, TYPE_FLAGS_SKY, Shader::MODE_SKY));
- add_options.push_back(AddOption("AtHalfResPass", "Input", "Sky", "VisualShaderNodeInput", vformat(input_param_for_sky_shader_mode, "at_half_res_pass"), { "at_half_res_pass" }, VisualShaderNode::PORT_TYPE_BOOLEAN, TYPE_FLAGS_SKY, Shader::MODE_SKY));
- add_options.push_back(AddOption("AtQuarterResPass", "Input", "Sky", "VisualShaderNodeInput", vformat(input_param_for_sky_shader_mode, "at_quarter_res_pass"), { "at_quarter_res_pass" }, VisualShaderNode::PORT_TYPE_BOOLEAN, TYPE_FLAGS_SKY, Shader::MODE_SKY));
- add_options.push_back(AddOption("EyeDir", "Input", "Sky", "VisualShaderNodeInput", vformat(input_param_for_sky_shader_mode, "eyedir"), { "eyedir" }, VisualShaderNode::PORT_TYPE_VECTOR_3D, TYPE_FLAGS_SKY, Shader::MODE_SKY));
- add_options.push_back(AddOption("HalfResColor", "Input", "Sky", "VisualShaderNodeInput", vformat(input_param_for_sky_shader_mode, "half_res_color"), { "half_res_color" }, VisualShaderNode::PORT_TYPE_VECTOR_3D, TYPE_FLAGS_SKY, Shader::MODE_SKY));
- add_options.push_back(AddOption("HalfResAlpha", "Input", "Sky", "VisualShaderNodeInput", vformat(input_param_for_sky_shader_mode, "half_res_alpha"), { "half_res_alpha" }, VisualShaderNode::PORT_TYPE_SCALAR, TYPE_FLAGS_SKY, Shader::MODE_SKY));
- add_options.push_back(AddOption("Light0Color", "Input", "Sky", "VisualShaderNodeInput", vformat(input_param_for_sky_shader_mode, "light0_color"), { "light0_color" }, VisualShaderNode::PORT_TYPE_VECTOR_3D, TYPE_FLAGS_SKY, Shader::MODE_SKY));
- add_options.push_back(AddOption("Light0Direction", "Input", "Sky", "VisualShaderNodeInput", vformat(input_param_for_sky_shader_mode, "light0_direction"), { "light0_direction" }, VisualShaderNode::PORT_TYPE_VECTOR_3D, TYPE_FLAGS_SKY, Shader::MODE_SKY));
- add_options.push_back(AddOption("Light0Enabled", "Input", "Sky", "VisualShaderNodeInput", vformat(input_param_for_sky_shader_mode, "light0_enabled"), { "light0_enabled" }, VisualShaderNode::PORT_TYPE_BOOLEAN, TYPE_FLAGS_SKY, Shader::MODE_SKY));
- add_options.push_back(AddOption("Light0Energy", "Input", "Sky", "VisualShaderNodeInput", vformat(input_param_for_sky_shader_mode, "light0_energy"), { "light0_energy" }, VisualShaderNode::PORT_TYPE_SCALAR, TYPE_FLAGS_SKY, Shader::MODE_SKY));
- add_options.push_back(AddOption("Light1Color", "Input", "Sky", "VisualShaderNodeInput", vformat(input_param_for_sky_shader_mode, "light1_color"), { "light1_color" }, VisualShaderNode::PORT_TYPE_VECTOR_3D, TYPE_FLAGS_SKY, Shader::MODE_SKY));
- add_options.push_back(AddOption("Light1Direction", "Input", "Sky", "VisualShaderNodeInput", vformat(input_param_for_sky_shader_mode, "light1_direction"), { "light1_direction" }, VisualShaderNode::PORT_TYPE_VECTOR_3D, TYPE_FLAGS_SKY, Shader::MODE_SKY));
- add_options.push_back(AddOption("Light1Enabled", "Input", "Sky", "VisualShaderNodeInput", vformat(input_param_for_sky_shader_mode, "light1_enabled"), { "light1_enabled" }, VisualShaderNode::PORT_TYPE_BOOLEAN, TYPE_FLAGS_SKY, Shader::MODE_SKY));
- add_options.push_back(AddOption("Light1Energy", "Input", "Sky", "VisualShaderNodeInput", vformat(input_param_for_sky_shader_mode, "light1_energy"), { "light1_energy" }, VisualShaderNode::PORT_TYPE_SCALAR, TYPE_FLAGS_SKY, Shader::MODE_SKY));
- add_options.push_back(AddOption("Light2Color", "Input", "Sky", "VisualShaderNodeInput", vformat(input_param_for_sky_shader_mode, "light2_color"), { "light2_color" }, VisualShaderNode::PORT_TYPE_VECTOR_3D, TYPE_FLAGS_SKY, Shader::MODE_SKY));
- add_options.push_back(AddOption("Light2Direction", "Input", "Sky", "VisualShaderNodeInput", vformat(input_param_for_sky_shader_mode, "light2_direction"), { "light2_direction" }, VisualShaderNode::PORT_TYPE_VECTOR_3D, TYPE_FLAGS_SKY, Shader::MODE_SKY));
- add_options.push_back(AddOption("Light2Enabled", "Input", "Sky", "VisualShaderNodeInput", vformat(input_param_for_sky_shader_mode, "light2_enabled"), { "light2_enabled" }, VisualShaderNode::PORT_TYPE_BOOLEAN, TYPE_FLAGS_SKY, Shader::MODE_SKY));
- add_options.push_back(AddOption("Light2Energy", "Input", "Sky", "VisualShaderNodeInput", vformat(input_param_for_sky_shader_mode, "light2_energy"), { "light2_energy" }, VisualShaderNode::PORT_TYPE_SCALAR, TYPE_FLAGS_SKY, Shader::MODE_SKY));
- add_options.push_back(AddOption("Light3Color", "Input", "Sky", "VisualShaderNodeInput", vformat(input_param_for_sky_shader_mode, "light3_color"), { "light3_color" }, VisualShaderNode::PORT_TYPE_VECTOR_3D, TYPE_FLAGS_SKY, Shader::MODE_SKY));
- add_options.push_back(AddOption("Light3Direction", "Input", "Sky", "VisualShaderNodeInput", vformat(input_param_for_sky_shader_mode, "light3_direction"), { "light3_direction" }, VisualShaderNode::PORT_TYPE_VECTOR_3D, TYPE_FLAGS_SKY, Shader::MODE_SKY));
- add_options.push_back(AddOption("Light3Enabled", "Input", "Sky", "VisualShaderNodeInput", vformat(input_param_for_sky_shader_mode, "light3_enabled"), { "light3_enabled" }, VisualShaderNode::PORT_TYPE_BOOLEAN, TYPE_FLAGS_SKY, Shader::MODE_SKY));
- add_options.push_back(AddOption("Light3Energy", "Input", "Sky", "VisualShaderNodeInput", vformat(input_param_for_sky_shader_mode, "light3_energy"), { "light3_energy" }, VisualShaderNode::PORT_TYPE_SCALAR, TYPE_FLAGS_SKY, Shader::MODE_SKY));
- add_options.push_back(AddOption("Position", "Input", "Sky", "VisualShaderNodeInput", vformat(input_param_for_sky_shader_mode, "position"), { "position" }, VisualShaderNode::PORT_TYPE_VECTOR_3D, TYPE_FLAGS_SKY, Shader::MODE_SKY));
- add_options.push_back(AddOption("QuarterResColor", "Input", "Sky", "VisualShaderNodeInput", vformat(input_param_for_sky_shader_mode, "quarter_res_color"), { "quarter_res_color" }, VisualShaderNode::PORT_TYPE_VECTOR_3D, TYPE_FLAGS_SKY, Shader::MODE_SKY));
- add_options.push_back(AddOption("QuarterResAlpha", "Input", "Sky", "VisualShaderNodeInput", vformat(input_param_for_sky_shader_mode, "quarter_res_alpha"), { "quarter_res_alpha" }, VisualShaderNode::PORT_TYPE_SCALAR, TYPE_FLAGS_SKY, Shader::MODE_SKY));
- add_options.push_back(AddOption("Radiance", "Input", "Sky", "VisualShaderNodeInput", vformat(input_param_for_sky_shader_mode, "radiance"), { "radiance" }, VisualShaderNode::PORT_TYPE_SAMPLER, TYPE_FLAGS_SKY, Shader::MODE_SKY));
- add_options.push_back(AddOption("ScreenUV", "Input", "Sky", "VisualShaderNodeInput", vformat(input_param_for_sky_shader_mode, "screen_uv"), { "screen_uv" }, VisualShaderNode::PORT_TYPE_VECTOR_2D, TYPE_FLAGS_SKY, Shader::MODE_SKY));
- add_options.push_back(AddOption("SkyCoords", "Input", "Sky", "VisualShaderNodeInput", vformat(input_param_for_sky_shader_mode, "sky_coords"), { "sky_coords" }, VisualShaderNode::PORT_TYPE_VECTOR_2D, TYPE_FLAGS_SKY, Shader::MODE_SKY));
- add_options.push_back(AddOption("Time", "Input", "Sky", "VisualShaderNodeInput", vformat(input_param_for_sky_shader_mode, "time"), { "time" }, VisualShaderNode::PORT_TYPE_SCALAR, TYPE_FLAGS_SKY, Shader::MODE_SKY));
+ add_options.push_back(AddOption("AtCubeMapPass", "Input", "Sky", "VisualShaderNodeInput", vformat(input_param_for_sky_shader_mode, "at_cubemap_pass", "AT_CUBEMAP_PASS"), { "at_cubemap_pass" }, VisualShaderNode::PORT_TYPE_BOOLEAN, TYPE_FLAGS_SKY, Shader::MODE_SKY));
+ add_options.push_back(AddOption("AtHalfResPass", "Input", "Sky", "VisualShaderNodeInput", vformat(input_param_for_sky_shader_mode, "at_half_res_pass", "AT_HALF_RES_PASS"), { "at_half_res_pass" }, VisualShaderNode::PORT_TYPE_BOOLEAN, TYPE_FLAGS_SKY, Shader::MODE_SKY));
+ add_options.push_back(AddOption("AtQuarterResPass", "Input", "Sky", "VisualShaderNodeInput", vformat(input_param_for_sky_shader_mode, "at_quarter_res_pass", "AT_QUARTER_RES_PASS"), { "at_quarter_res_pass" }, VisualShaderNode::PORT_TYPE_BOOLEAN, TYPE_FLAGS_SKY, Shader::MODE_SKY));
+ add_options.push_back(AddOption("EyeDir", "Input", "Sky", "VisualShaderNodeInput", vformat(input_param_for_sky_shader_mode, "eyedir", "EYEDIR"), { "eyedir" }, VisualShaderNode::PORT_TYPE_VECTOR_3D, TYPE_FLAGS_SKY, Shader::MODE_SKY));
+ add_options.push_back(AddOption("HalfResColor", "Input", "Sky", "VisualShaderNodeInput", vformat(input_param_for_sky_shader_mode, "half_res_color", "HALF_RES_COLOR.rgb"), { "half_res_color" }, VisualShaderNode::PORT_TYPE_VECTOR_3D, TYPE_FLAGS_SKY, Shader::MODE_SKY));
+ add_options.push_back(AddOption("HalfResAlpha", "Input", "Sky", "VisualShaderNodeInput", vformat(input_param_for_sky_shader_mode, "half_res_alpha", "HALF_RES_COLOR.a"), { "half_res_alpha" }, VisualShaderNode::PORT_TYPE_SCALAR, TYPE_FLAGS_SKY, Shader::MODE_SKY));
+ add_options.push_back(AddOption("Light0Color", "Input", "Sky", "VisualShaderNodeInput", vformat(input_param_for_sky_shader_mode, "light0_color", "LIGHT0_COLOR"), { "light0_color" }, VisualShaderNode::PORT_TYPE_VECTOR_3D, TYPE_FLAGS_SKY, Shader::MODE_SKY));
+ add_options.push_back(AddOption("Light0Direction", "Input", "Sky", "VisualShaderNodeInput", vformat(input_param_for_sky_shader_mode, "light0_direction", "LIGHT0_DIRECTION"), { "light0_direction" }, VisualShaderNode::PORT_TYPE_VECTOR_3D, TYPE_FLAGS_SKY, Shader::MODE_SKY));
+ add_options.push_back(AddOption("Light0Enabled", "Input", "Sky", "VisualShaderNodeInput", vformat(input_param_for_sky_shader_mode, "light0_enabled", "LIGHT0_ENABLED"), { "light0_enabled" }, VisualShaderNode::PORT_TYPE_BOOLEAN, TYPE_FLAGS_SKY, Shader::MODE_SKY));
+ add_options.push_back(AddOption("Light0Energy", "Input", "Sky", "VisualShaderNodeInput", vformat(input_param_for_sky_shader_mode, "light0_energy", "LIGHT0_ENERGY"), { "light0_energy" }, VisualShaderNode::PORT_TYPE_SCALAR, TYPE_FLAGS_SKY, Shader::MODE_SKY));
+ add_options.push_back(AddOption("Light1Color", "Input", "Sky", "VisualShaderNodeInput", vformat(input_param_for_sky_shader_mode, "light1_color", "LIGHT1_COLOR"), { "light1_color" }, VisualShaderNode::PORT_TYPE_VECTOR_3D, TYPE_FLAGS_SKY, Shader::MODE_SKY));
+ add_options.push_back(AddOption("Light1Direction", "Input", "Sky", "VisualShaderNodeInput", vformat(input_param_for_sky_shader_mode, "light1_direction", "LIGHT1_DIRECTION"), { "light1_direction" }, VisualShaderNode::PORT_TYPE_VECTOR_3D, TYPE_FLAGS_SKY, Shader::MODE_SKY));
+ add_options.push_back(AddOption("Light1Enabled", "Input", "Sky", "VisualShaderNodeInput", vformat(input_param_for_sky_shader_mode, "light1_enabled", "LIGHT1_ENABLED"), { "light1_enabled" }, VisualShaderNode::PORT_TYPE_BOOLEAN, TYPE_FLAGS_SKY, Shader::MODE_SKY));
+ add_options.push_back(AddOption("Light1Energy", "Input", "Sky", "VisualShaderNodeInput", vformat(input_param_for_sky_shader_mode, "light1_energy", "LIGHT1_ENERGY"), { "light1_energy" }, VisualShaderNode::PORT_TYPE_SCALAR, TYPE_FLAGS_SKY, Shader::MODE_SKY));
+ add_options.push_back(AddOption("Light2Color", "Input", "Sky", "VisualShaderNodeInput", vformat(input_param_for_sky_shader_mode, "light2_color", "LIGHT2_COLOR"), { "light2_color" }, VisualShaderNode::PORT_TYPE_VECTOR_3D, TYPE_FLAGS_SKY, Shader::MODE_SKY));
+ add_options.push_back(AddOption("Light2Direction", "Input", "Sky", "VisualShaderNodeInput", vformat(input_param_for_sky_shader_mode, "light2_direction", "LIGHT2_DIRECTION"), { "light2_direction" }, VisualShaderNode::PORT_TYPE_VECTOR_3D, TYPE_FLAGS_SKY, Shader::MODE_SKY));
+ add_options.push_back(AddOption("Light2Enabled", "Input", "Sky", "VisualShaderNodeInput", vformat(input_param_for_sky_shader_mode, "light2_enabled", "LIGHT2_ENABLED"), { "light2_enabled" }, VisualShaderNode::PORT_TYPE_BOOLEAN, TYPE_FLAGS_SKY, Shader::MODE_SKY));
+ add_options.push_back(AddOption("Light2Energy", "Input", "Sky", "VisualShaderNodeInput", vformat(input_param_for_sky_shader_mode, "light2_energy", "LIGHT2_ENERGY"), { "light2_energy" }, VisualShaderNode::PORT_TYPE_SCALAR, TYPE_FLAGS_SKY, Shader::MODE_SKY));
+ add_options.push_back(AddOption("Light3Color", "Input", "Sky", "VisualShaderNodeInput", vformat(input_param_for_sky_shader_mode, "light3_color", "LIGHT3_COLOR"), { "light3_color" }, VisualShaderNode::PORT_TYPE_VECTOR_3D, TYPE_FLAGS_SKY, Shader::MODE_SKY));
+ add_options.push_back(AddOption("Light3Direction", "Input", "Sky", "VisualShaderNodeInput", vformat(input_param_for_sky_shader_mode, "light3_direction", "LIGHT3_DIRECTION"), { "light3_direction" }, VisualShaderNode::PORT_TYPE_VECTOR_3D, TYPE_FLAGS_SKY, Shader::MODE_SKY));
+ add_options.push_back(AddOption("Light3Enabled", "Input", "Sky", "VisualShaderNodeInput", vformat(input_param_for_sky_shader_mode, "light3_enabled", "LIGHT3_ENABLED"), { "light3_enabled" }, VisualShaderNode::PORT_TYPE_BOOLEAN, TYPE_FLAGS_SKY, Shader::MODE_SKY));
+ add_options.push_back(AddOption("Light3Energy", "Input", "Sky", "VisualShaderNodeInput", vformat(input_param_for_sky_shader_mode, "light3_energy", "LIGHT3_ENERGY"), { "light3_energy" }, VisualShaderNode::PORT_TYPE_SCALAR, TYPE_FLAGS_SKY, Shader::MODE_SKY));
+ add_options.push_back(AddOption("Position", "Input", "Sky", "VisualShaderNodeInput", vformat(input_param_for_sky_shader_mode, "position", "POSITION"), { "position" }, VisualShaderNode::PORT_TYPE_VECTOR_3D, TYPE_FLAGS_SKY, Shader::MODE_SKY));
+ add_options.push_back(AddOption("QuarterResColor", "Input", "Sky", "VisualShaderNodeInput", vformat(input_param_for_sky_shader_mode, "quarter_res_color", "QUARTER_RES_COLOR.rgb"), { "quarter_res_color" }, VisualShaderNode::PORT_TYPE_VECTOR_3D, TYPE_FLAGS_SKY, Shader::MODE_SKY));
+ add_options.push_back(AddOption("QuarterResAlpha", "Input", "Sky", "VisualShaderNodeInput", vformat(input_param_for_sky_shader_mode, "quarter_res_alpha", "QUARTER_RES_COLOR.a"), { "quarter_res_alpha" }, VisualShaderNode::PORT_TYPE_SCALAR, TYPE_FLAGS_SKY, Shader::MODE_SKY));
+ add_options.push_back(AddOption("Radiance", "Input", "Sky", "VisualShaderNodeInput", vformat(input_param_for_sky_shader_mode, "radiance", "RADIANCE"), { "radiance" }, VisualShaderNode::PORT_TYPE_SAMPLER, TYPE_FLAGS_SKY, Shader::MODE_SKY));
+ add_options.push_back(AddOption("ScreenUV", "Input", "Sky", "VisualShaderNodeInput", vformat(input_param_for_sky_shader_mode, "screen_uv", "SCREEN_UV"), { "screen_uv" }, VisualShaderNode::PORT_TYPE_VECTOR_2D, TYPE_FLAGS_SKY, Shader::MODE_SKY));
+ add_options.push_back(AddOption("SkyCoords", "Input", "Sky", "VisualShaderNodeInput", vformat(input_param_for_sky_shader_mode, "sky_coords", "SKY_COORDS"), { "sky_coords" }, VisualShaderNode::PORT_TYPE_VECTOR_2D, TYPE_FLAGS_SKY, Shader::MODE_SKY));
+ add_options.push_back(AddOption("Time", "Input", "Sky", "VisualShaderNodeInput", vformat(input_param_for_sky_shader_mode, "time", "TIME"), { "time" }, VisualShaderNode::PORT_TYPE_SCALAR, TYPE_FLAGS_SKY, Shader::MODE_SKY));
// FOG INPUTS
- add_options.push_back(AddOption("WorldPosition", "Input", "Fog", "VisualShaderNodeInput", vformat(input_param_for_fog_shader_mode, "world_position"), { "world_position" }, VisualShaderNode::PORT_TYPE_VECTOR_3D, TYPE_FLAGS_FOG, Shader::MODE_FOG));
- add_options.push_back(AddOption("ObjectPosition", "Input", "Fog", "VisualShaderNodeInput", vformat(input_param_for_fog_shader_mode, "object_position"), { "object_position" }, VisualShaderNode::PORT_TYPE_VECTOR_3D, TYPE_FLAGS_FOG, Shader::MODE_FOG));
- add_options.push_back(AddOption("UVW", "Input", "Fog", "VisualShaderNodeInput", vformat(input_param_for_fog_shader_mode, "uvw"), { "uvw" }, VisualShaderNode::PORT_TYPE_VECTOR_3D, TYPE_FLAGS_FOG, Shader::MODE_FOG));
- add_options.push_back(AddOption("Extents", "Input", "Fog", "VisualShaderNodeInput", vformat(input_param_for_fog_shader_mode, "extents"), { "extents" }, VisualShaderNode::PORT_TYPE_VECTOR_3D, TYPE_FLAGS_FOG, Shader::MODE_FOG));
- add_options.push_back(AddOption("SDF", "Input", "Fog", "VisualShaderNodeInput", vformat(input_param_for_fog_shader_mode, "sdf"), { "sdf" }, VisualShaderNode::PORT_TYPE_SCALAR, TYPE_FLAGS_FOG, Shader::MODE_FOG));
- add_options.push_back(AddOption("Time", "Input", "Fog", "VisualShaderNodeInput", vformat(input_param_for_fog_shader_mode, "time"), { "time" }, VisualShaderNode::PORT_TYPE_SCALAR, TYPE_FLAGS_FOG, Shader::MODE_FOG));
+ add_options.push_back(AddOption("WorldPosition", "Input", "Fog", "VisualShaderNodeInput", vformat(input_param_for_fog_shader_mode, "world_position", "WORLD_POSITION"), { "world_position" }, VisualShaderNode::PORT_TYPE_VECTOR_3D, TYPE_FLAGS_FOG, Shader::MODE_FOG));
+ add_options.push_back(AddOption("ObjectPosition", "Input", "Fog", "VisualShaderNodeInput", vformat(input_param_for_fog_shader_mode, "object_position", "OBJECT_POSITION"), { "object_position" }, VisualShaderNode::PORT_TYPE_VECTOR_3D, TYPE_FLAGS_FOG, Shader::MODE_FOG));
+ add_options.push_back(AddOption("UVW", "Input", "Fog", "VisualShaderNodeInput", vformat(input_param_for_fog_shader_mode, "uvw", "UVW"), { "uvw" }, VisualShaderNode::PORT_TYPE_VECTOR_3D, TYPE_FLAGS_FOG, Shader::MODE_FOG));
+ add_options.push_back(AddOption("Extents", "Input", "Fog", "VisualShaderNodeInput", vformat(input_param_for_fog_shader_mode, "extents", "EXTENTS"), { "extents" }, VisualShaderNode::PORT_TYPE_VECTOR_3D, TYPE_FLAGS_FOG, Shader::MODE_FOG));
+ add_options.push_back(AddOption("SDF", "Input", "Fog", "VisualShaderNodeInput", vformat(input_param_for_fog_shader_mode, "sdf", "SDF"), { "sdf" }, VisualShaderNode::PORT_TYPE_SCALAR, TYPE_FLAGS_FOG, Shader::MODE_FOG));
+ add_options.push_back(AddOption("Time", "Input", "Fog", "VisualShaderNodeInput", vformat(input_param_for_fog_shader_mode, "time", "TIME"), { "time" }, VisualShaderNode::PORT_TYPE_SCALAR, TYPE_FLAGS_FOG, Shader::MODE_FOG));
// PARTICLES INPUTS
- add_options.push_back(AddOption("CollisionDepth", "Input", "Collide", "VisualShaderNodeInput", vformat(input_param_for_collide_shader_mode, "collision_depth"), { "collision_depth" }, VisualShaderNode::PORT_TYPE_SCALAR, TYPE_FLAGS_COLLIDE, Shader::MODE_PARTICLES));
- add_options.push_back(AddOption("CollisionNormal", "Input", "Collide", "VisualShaderNodeInput", vformat(input_param_for_collide_shader_mode, "collision_normal"), { "collision_normal" }, VisualShaderNode::PORT_TYPE_VECTOR_3D, TYPE_FLAGS_COLLIDE, Shader::MODE_PARTICLES));
+ add_options.push_back(AddOption("CollisionDepth", "Input", "Collide", "VisualShaderNodeInput", vformat(input_param_for_collide_shader_mode, "collision_depth", "COLLISION_DEPTH"), { "collision_depth" }, VisualShaderNode::PORT_TYPE_SCALAR, TYPE_FLAGS_COLLIDE, Shader::MODE_PARTICLES));
+ add_options.push_back(AddOption("CollisionNormal", "Input", "Collide", "VisualShaderNodeInput", vformat(input_param_for_collide_shader_mode, "collision_normal", "COLLISION_NORMAL"), { "collision_normal" }, VisualShaderNode::PORT_TYPE_VECTOR_3D, TYPE_FLAGS_COLLIDE, Shader::MODE_PARTICLES));
// PARTICLES
@@ -6035,8 +6035,8 @@ void VisualShaderNodePortPreview::_shader_changed() {
//find if a material is also being edited and copy parameters to this one
- for (int i = EditorNode::get_singleton()->get_editor_history()->get_path_size() - 1; i >= 0; i--) {
- Object *object = ObjectDB::get_instance(EditorNode::get_singleton()->get_editor_history()->get_path_object(i));
+ for (int i = EditorNode::get_singleton()->get_editor_selection_history()->get_path_size() - 1; i >= 0; i--) {
+ Object *object = ObjectDB::get_instance(EditorNode::get_singleton()->get_editor_selection_history()->get_path_object(i));
ShaderMaterial *src_mat;
if (!object) {
continue;
diff --git a/editor/project_export.cpp b/editor/project_export.cpp
index cd9aef1e99..1344afbd3a 100644
--- a/editor/project_export.cpp
+++ b/editor/project_export.cpp
@@ -68,6 +68,10 @@ void ProjectExportDialog::_notification(int p_what) {
connect("confirmed", callable_mp(this, &ProjectExportDialog::_export_pck_zip));
_update_export_all();
} break;
+
+ case EditorSettings::NOTIFICATION_EDITOR_SETTINGS_CHANGED: {
+ parameters->set_property_name_style(EditorPropertyNameProcessor::get_settings_style());
+ } break;
}
}
@@ -1066,6 +1070,7 @@ ProjectExportDialog::ProjectExportDialog() {
sections->add_child(parameters);
parameters->set_name(TTR("Options"));
parameters->set_v_size_flags(Control::SIZE_EXPAND_FILL);
+ parameters->set_property_name_style(EditorPropertyNameProcessor::get_settings_style());
parameters->connect("property_edited", callable_mp(this, &ProjectExportDialog::_update_parameters));
EditorExport::get_singleton()->connect("export_presets_updated", callable_mp(this, &ProjectExportDialog::_force_update_current_preset_parameters));
diff --git a/editor/project_manager.cpp b/editor/project_manager.cpp
index d011d7a7e7..cd95f97286 100644
--- a/editor/project_manager.cpp
+++ b/editor/project_manager.cpp
@@ -2872,10 +2872,17 @@ ProjectManager::ProjectManager() {
if (scale_factor > 1.0) {
Vector2i window_size = DisplayServer::get_singleton()->window_get_size();
Vector2i screen_size = DisplayServer::get_singleton()->screen_get_size();
- window_size *= scale_factor;
+ Vector2i screen_position = DisplayServer::get_singleton()->screen_get_position();
+
+ // Consider the editor display scale.
+ window_size.x = round((float)window_size.x * scale_factor);
+ window_size.y = round((float)window_size.y * scale_factor);
+
+ // Make the window centered on the screen.
Vector2i window_position;
- window_position.x = (screen_size.x - window_size.x) / 2;
- window_position.y = (screen_size.y - window_size.y) / 2;
+ window_position.x = screen_position.x + (screen_size.x - window_size.x) / 2;
+ window_position.y = screen_position.y + (screen_size.y - window_size.y) / 2;
+
DisplayServer::get_singleton()->window_set_size(window_size);
DisplayServer::get_singleton()->window_set_position(window_position);
}
diff --git a/editor/project_manager.h b/editor/project_manager.h
index 2965dc7d2e..4f053793fd 100644
--- a/editor/project_manager.h
+++ b/editor/project_manager.h
@@ -55,46 +55,46 @@ class ProjectManager : public Control {
static ProjectManager *singleton;
- TabContainer *tabs;
+ TabContainer *tabs = nullptr;
- ProjectList *_project_list;
+ ProjectList *_project_list = nullptr;
- LineEdit *search_box;
- Label *loading_label;
- OptionButton *filter_option;
+ LineEdit *search_box = nullptr;
+ Label *loading_label = nullptr;
+ OptionButton *filter_option = nullptr;
- Button *run_btn;
- Button *open_btn;
- Button *rename_btn;
- Button *erase_btn;
- Button *erase_missing_btn;
- Button *about_btn;
+ Button *run_btn = nullptr;
+ Button *open_btn = nullptr;
+ Button *rename_btn = nullptr;
+ Button *erase_btn = nullptr;
+ Button *erase_missing_btn = nullptr;
+ Button *about_btn = nullptr;
- EditorAssetLibrary *asset_library;
+ EditorAssetLibrary *asset_library = nullptr;
- EditorFileDialog *scan_dir;
- ConfirmationDialog *language_restart_ask;
+ EditorFileDialog *scan_dir = nullptr;
+ ConfirmationDialog *language_restart_ask = nullptr;
- ConfirmationDialog *erase_ask;
- Label *erase_ask_label;
- CheckBox *delete_project_contents;
+ ConfirmationDialog *erase_ask = nullptr;
+ Label *erase_ask_label = nullptr;
+ CheckBox *delete_project_contents = nullptr;
- ConfirmationDialog *erase_missing_ask;
- ConfirmationDialog *multi_open_ask;
- ConfirmationDialog *multi_run_ask;
- ConfirmationDialog *multi_scan_ask;
- ConfirmationDialog *ask_update_settings;
- ConfirmationDialog *open_templates;
- EditorAbout *about;
+ ConfirmationDialog *erase_missing_ask = nullptr;
+ ConfirmationDialog *multi_open_ask = nullptr;
+ ConfirmationDialog *multi_run_ask = nullptr;
+ ConfirmationDialog *multi_scan_ask = nullptr;
+ ConfirmationDialog *ask_update_settings = nullptr;
+ ConfirmationDialog *open_templates = nullptr;
+ EditorAbout *about = nullptr;
- HBoxContainer *settings_hb;
+ HBoxContainer *settings_hb = nullptr;
- AcceptDialog *run_error_diag;
- AcceptDialog *dialog_error;
- ProjectDialog *npdialog;
+ AcceptDialog *run_error_diag = nullptr;
+ AcceptDialog *dialog_error = nullptr;
+ ProjectDialog *npdialog = nullptr;
- OptionButton *language_btn;
- LinkButton *version_btn;
+ OptionButton *language_btn = nullptr;
+ LinkButton *version_btn = nullptr;
void _open_asset_library();
void _scan_projects();
diff --git a/editor/scene_tree_dock.cpp b/editor/scene_tree_dock.cpp
index 13ece9011b..551a0ff9c8 100644
--- a/editor/scene_tree_dock.cpp
+++ b/editor/scene_tree_dock.cpp
@@ -2075,8 +2075,8 @@ void SceneTreeDock::_delete_confirm(bool p_cut) {
_push_item(nullptr);
- // Fixes the EditorHistory from still offering deleted notes
- EditorHistory *editor_history = EditorNode::get_singleton()->get_editor_history();
+ // Fixes the EditorSelectionHistory from still offering deleted notes
+ EditorSelectionHistory *editor_history = EditorNode::get_singleton()->get_editor_selection_history();
editor_history->cleanup_history();
InspectorDock::get_singleton()->call("_prepare_history");
}
@@ -2547,10 +2547,10 @@ void SceneTreeDock::_files_dropped(Vector<String> p_files, NodePath p_to, int p_
property_drop_node = node;
resource_drop_path = res_path;
- bool capitalize = bool(EDITOR_GET("interface/inspector/capitalize_properties"));
+ const EditorPropertyNameProcessor::Style style = InspectorDock::get_singleton()->get_property_name_style();
menu_properties->clear();
for (const String &p : valid_properties) {
- menu_properties->add_item(capitalize ? p.capitalize() : p);
+ menu_properties->add_item(EditorPropertyNameProcessor::get_singleton()->process_name(p, style));
menu_properties->set_item_metadata(-1, p);
}
diff --git a/editor/scene_tree_editor.cpp b/editor/scene_tree_editor.cpp
index 3b8c540592..44eb5c670d 100644
--- a/editor/scene_tree_editor.cpp
+++ b/editor/scene_tree_editor.cpp
@@ -96,8 +96,8 @@ void SceneTreeEditor::_cell_button_pressed(Object *p_item, int p_column, int p_i
if (n->is_class("CanvasItem") || n->is_class("Node3D")) {
undo_redo->add_do_method(n, "remove_meta", "_edit_lock_");
undo_redo->add_undo_method(n, "set_meta", "_edit_lock_", true);
- undo_redo->add_do_method(this, "_update_tree", Variant());
- undo_redo->add_undo_method(this, "_update_tree", Variant());
+ undo_redo->add_do_method(this, "_update_tree");
+ undo_redo->add_undo_method(this, "_update_tree");
undo_redo->add_do_method(this, "emit_signal", "node_changed");
undo_redo->add_undo_method(this, "emit_signal", "node_changed");
}
@@ -114,8 +114,8 @@ void SceneTreeEditor::_cell_button_pressed(Object *p_item, int p_column, int p_i
if (n->is_class("CanvasItem") || n->is_class("Node3D")) {
undo_redo->add_do_method(n, "remove_meta", "_edit_group_");
undo_redo->add_undo_method(n, "set_meta", "_edit_group_", true);
- undo_redo->add_do_method(this, "_update_tree", Variant());
- undo_redo->add_undo_method(this, "_update_tree", Variant());
+ undo_redo->add_do_method(this, "_update_tree");
+ undo_redo->add_undo_method(this, "_update_tree");
undo_redo->add_do_method(this, "emit_signal", "node_changed");
undo_redo->add_undo_method(this, "emit_signal", "node_changed");
}
diff --git a/editor/script_create_dialog.cpp b/editor/script_create_dialog.cpp
index baafef8639..72f77c859b 100644
--- a/editor/script_create_dialog.cpp
+++ b/editor/script_create_dialog.cpp
@@ -106,15 +106,7 @@ static Vector<String> _get_hierarchy(String p_class_name) {
void ScriptCreateDialog::_notification(int p_what) {
switch (p_what) {
- case NOTIFICATION_ENTER_TREE:
- case NOTIFICATION_THEME_CHANGED: {
- for (int i = 0; i < ScriptServer::get_language_count(); i++) {
- Ref<Texture2D> language_icon = get_theme_icon(ScriptServer::get_language(i)->get_type(), SNAME("EditorIcons"));
- if (language_icon.is_valid()) {
- language_menu->set_item_icon(i, language_icon);
- }
- }
-
+ case NOTIFICATION_ENTER_TREE: {
String last_language = EditorSettings::get_singleton()->get_project_metadata("script_setup", "last_selected_language", "");
if (!last_language.is_empty()) {
for (int i = 0; i < language_menu->get_item_count(); i++) {
@@ -127,9 +119,15 @@ void ScriptCreateDialog::_notification(int p_what) {
} else {
language_menu->select(default_language);
}
- if (EditorSettings::get_singleton()->has_meta("script_setup/use_script_templates")) {
- is_using_templates = bool(EditorSettings::get_singleton()->get_meta("script_setup/use_script_templates"));
- use_templates->set_pressed(is_using_templates);
+
+ [[fallthrough]];
+ }
+ case NOTIFICATION_THEME_CHANGED: {
+ for (int i = 0; i < ScriptServer::get_language_count(); i++) {
+ Ref<Texture2D> language_icon = get_theme_icon(ScriptServer::get_language(i)->get_type(), SNAME("EditorIcons"));
+ if (language_icon.is_valid()) {
+ language_menu->set_item_icon(i, language_icon);
+ }
}
path_button->set_icon(get_theme_icon(SNAME("Folder"), SNAME("EditorIcons")));
@@ -332,13 +330,8 @@ void ScriptCreateDialog::_template_changed(int p_template) {
dic_templates_project[parent_name->get_text()] = sinfo.get_hash();
EditorSettings::get_singleton()->set_project_metadata("script_setup", "templates_dictionary", dic_templates_project);
} else {
- // Save template into to editor dictionary (not a project template).
- Dictionary dic_templates;
- if (EditorSettings::get_singleton()->has_meta("script_setup/templates_dictionary")) {
- dic_templates = (Dictionary)EditorSettings::get_singleton()->get_meta("script_setup/templates_dictionary");
- }
- dic_templates[parent_name->get_text()] = sinfo.get_hash();
- EditorSettings::get_singleton()->set_meta("script_setup/templates_dictionary", dic_templates);
+ // Save template info to editor dictionary (not a project template).
+ templates_dictionary[parent_name->get_text()] = sinfo.get_hash();
// Remove template from project dictionary as we last used an editor level template.
Dictionary dic_templates_project = EditorSettings::get_singleton()->get_project_metadata("script_setup", "templates_dictionary", Dictionary());
if (dic_templates_project.has(parent_name->get_text())) {
@@ -479,7 +472,6 @@ void ScriptCreateDialog::_built_in_pressed() {
void ScriptCreateDialog::_use_template_pressed() {
is_using_templates = use_templates->is_pressed();
- EditorSettings::get_singleton()->set_meta("script_setup/use_script_templates", is_using_templates);
_update_dialog();
}
@@ -597,10 +589,6 @@ void ScriptCreateDialog::_update_template_menu() {
if (is_language_using_templates) {
// Get the latest templates used for each type of node from project settings then global settings.
Dictionary last_local_templates = EditorSettings::get_singleton()->get_project_metadata("script_setup", "templates_dictionary", Dictionary());
- Dictionary last_global_templates;
- if (EditorSettings::get_singleton()->has_meta("script_setup/templates_dictionary")) {
- last_global_templates = (Dictionary)EditorSettings::get_singleton()->get_meta("script_setup/templates_dictionary");
- }
String inherits_base_type = parent_name->get_text();
// If it inherits from a script, get its parent class first.
@@ -655,7 +643,7 @@ void ScriptCreateDialog::_update_template_menu() {
// Check for last used template for this node in project settings then in global settings.
if (last_local_templates.has(parent_name->get_text()) && t.get_hash() == String(last_local_templates[parent_name->get_text()])) {
last_used_template = id;
- } else if (last_used_template == -1 && last_global_templates.has(parent_name->get_text()) && t.get_hash() == String(last_global_templates[parent_name->get_text()])) {
+ } else if (last_used_template == -1 && templates_dictionary.has(parent_name->get_text()) && t.get_hash() == String(templates_dictionary[parent_name->get_text()])) {
last_used_template = id;
}
t.id = id;
diff --git a/editor/script_create_dialog.h b/editor/script_create_dialog.h
index d7c43f322c..e9f634e2c0 100644
--- a/editor/script_create_dialog.h
+++ b/editor/script_create_dialog.h
@@ -83,6 +83,7 @@ class ScriptCreateDialog : public ConfirmationDialog {
int current_language;
int default_language;
bool re_check_path = false;
+ Dictionary templates_dictionary;
Control *path_controls[2];
Control *name_controls[2];
diff --git a/editor/shader_globals_editor.cpp b/editor/shader_globals_editor.cpp
index 70a43d24ba..864afa5c1c 100644
--- a/editor/shader_globals_editor.cpp
+++ b/editor/shader_globals_editor.cpp
@@ -477,7 +477,7 @@ ShaderGlobalsEditor::ShaderGlobalsEditor() {
inspector->set_v_size_flags(SIZE_EXPAND_FILL);
add_child(inspector);
inspector->set_use_wide_editors(true);
- inspector->set_enable_capitalize_paths(false);
+ inspector->set_property_name_style(EditorPropertyNameProcessor::STYLE_RAW);
inspector->set_use_deletable_properties(true);
inspector->connect("property_deleted", callable_mp(this, &ShaderGlobalsEditor::_variable_deleted), varray(), CONNECT_DEFERRED);
diff --git a/editor/translations/af.po b/editor/translations/af.po
index fa1552da44..ca4e9a4fd1 100644
--- a/editor/translations/af.po
+++ b/editor/translations/af.po
@@ -2,7 +2,7 @@
# Copyright (c) 2007-2022 Juan Linietsky, Ariel Manzur.
# Copyright (c) 2014-2022 Godot Engine contributors (cf. AUTHORS.md).
# This file is distributed under the same license as the Godot source code.
-# Ray West <the.raxar@gmail.com>, 2017.
+# Ray West <the.raxar@gmail.com>, 2017, 2022.
# Julius Stopforth <jjstopforth@gmail.com>, 2018.
# Isa Tippens <isatippens2@gmail.com>, 2019.
# Henry Geyser <thegoat187@gmail.com>, 2020.
@@ -12,8 +12,8 @@ msgstr ""
"Project-Id-Version: Godot Engine editor\n"
"Report-Msgid-Bugs-To: https://github.com/godotengine/godot\n"
"POT-Creation-Date: \n"
-"PO-Revision-Date: 2021-04-05 14:28+0000\n"
-"Last-Translator: Henry LeRoux <henry.leroux@ocsbstudent.ca>\n"
+"PO-Revision-Date: 2022-03-25 01:53+0000\n"
+"Last-Translator: Ray West <the.raxar@gmail.com>\n"
"Language-Team: Afrikaans <https://hosted.weblate.org/projects/godot-engine/"
"godot/af/>\n"
"Language: af\n"
@@ -21,9 +21,9 @@ 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.12-dev\n"
-#: core/bind/core_bind.cpp
+#: core/bind/core_bind.cpp main/main.cpp
msgid "Tablet Driver"
msgstr ""
@@ -121,8 +121,8 @@ msgstr "Skep Nuwe"
#: core/bind/core_bind.cpp editor/editor_settings.cpp main/main.cpp
#: modules/gdscript/gdscript_editor.cpp modules/gridmap/grid_map.cpp
#: modules/mono/csharp_script.cpp modules/visual_script/visual_script_nodes.cpp
-#: scene/2d/tile_map.cpp scene/3d/camera.cpp scene/gui/control.cpp
-#: scene/gui/graph_edit.cpp scene/main/viewport.cpp
+#: scene/2d/tile_map.cpp scene/3d/camera.cpp scene/3d/light.cpp
+#: scene/gui/control.cpp scene/gui/graph_edit.cpp scene/main/viewport.cpp
#: scene/resources/dynamic_font.cpp scene/resources/navigation_mesh.cpp
#: scene/resources/primitive_meshes.cpp scene/resources/sky.cpp
#: scene/resources/style_box.cpp scene/resources/texture.cpp
@@ -221,8 +221,7 @@ msgid "Data"
msgstr ""
#: core/io/file_access_network.cpp core/register_core_types.cpp
-#: editor/editor_settings.cpp editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp main/main.cpp
+#: editor/editor_settings.cpp main/main.cpp
#: modules/gdscript/language_server/gdscript_language_server.cpp
#, fuzzy
msgid "Network"
@@ -494,9 +493,10 @@ msgstr "Herset Zoem"
msgid "Relative"
msgstr ""
-#: core/os/input_event.cpp scene/2d/camera_2d.cpp
-#: scene/3d/interpolated_camera.cpp scene/animation/animation_player.cpp
-#: scene/resources/environment.cpp
+#: core/os/input_event.cpp scene/2d/camera_2d.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/interpolated_camera.cpp
+#: scene/animation/animation_player.cpp scene/resources/environment.cpp
+#: scene/resources/particles_material.cpp
#, fuzzy
msgid "Speed"
msgstr "Wissel Modus"
@@ -545,8 +545,9 @@ msgstr ""
msgid "Pitch"
msgstr "Wissel Modus"
-#: core/os/input_event.cpp scene/2d/physics_body_2d.cpp
-#: scene/3d/physics_body.cpp
+#: core/os/input_event.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/physics_body_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/3d/physics_body.cpp scene/resources/particles_material.cpp
msgid "Velocity"
msgstr ""
@@ -564,6 +565,8 @@ msgid "Controller Value"
msgstr ""
#: core/project_settings.cpp editor/editor_node.cpp main/main.cpp
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/windows/export/export.cpp
#, fuzzy
msgid "Application"
msgstr "Alle Seleksie"
@@ -581,13 +584,16 @@ msgstr "Projek Bestuurder"
#: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp
#: editor/editor_plugin_settings.cpp editor/editor_profiler.cpp
#: editor/project_manager.cpp editor/settings_config_dialog.cpp
-#: modules/gdnative/nativescript/nativescript.cpp scene/2d/area_2d.cpp
-#: scene/3d/area.cpp scene/main/node.cpp
+#: modules/gdnative/nativescript/nativescript.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/osx/export/export.cpp scene/2d/area_2d.cpp scene/3d/area.cpp
+#: scene/main/node.cpp
msgid "Name"
msgstr "Naam"
#: core/project_settings.cpp editor/editor_help.cpp
-#: modules/visual_script/visual_script_nodes.cpp
+#: modules/visual_script/visual_script_nodes.cpp platform/uwp/export/export.cpp
+#: platform/windows/export/export.cpp
#, fuzzy
msgid "Description"
msgstr "Beskrywing:"
@@ -626,7 +632,7 @@ msgid "Custom User Dir Name"
msgstr ""
#: core/project_settings.cpp editor/animation_track_editor.cpp
-#: editor/editor_audio_buses.cpp servers/audio_server.cpp
+#: editor/editor_audio_buses.cpp main/main.cpp servers/audio_server.cpp
msgid "Audio"
msgstr ""
@@ -783,10 +789,13 @@ msgstr "Eienskappe"
msgid "Sharpen Intensity"
msgstr ""
-#: core/project_settings.cpp editor/editor_node.cpp editor/editor_settings.cpp
-#: editor/plugins/script_editor_plugin.cpp editor/project_export.cpp
-#: main/main.cpp modules/gdscript/gdscript.cpp
-#: modules/visual_script/visual_script.cpp scene/3d/room_manager.cpp
+#: core/project_settings.cpp editor/editor_export.cpp editor/editor_node.cpp
+#: editor/editor_settings.cpp editor/plugins/script_editor_plugin.cpp
+#: editor/project_export.cpp main/main.cpp modules/gdscript/gdscript.cpp
+#: modules/visual_script/visual_script.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp scene/3d/room_manager.cpp
#: scene/main/scene_tree.cpp scene/resources/shape_2d.cpp
#: servers/visual_server.cpp
msgid "Debug"
@@ -1015,6 +1024,7 @@ msgid "Subsurface Scattering"
msgstr ""
#: drivers/gles3/rasterizer_scene_gles3.cpp
+#: editor/import/resource_importer_texture.cpp
#: editor/plugins/spatial_editor_plugin.cpp modules/gltf/gltf_node.cpp
#: modules/gridmap/grid_map.cpp scene/2d/cpu_particles_2d.cpp
#: scene/2d/node_2d.cpp scene/2d/parallax_layer.cpp scene/2d/polygon_2d.cpp
@@ -1323,6 +1333,7 @@ msgid "Editors"
msgstr "Afhanklikheid Bewerker"
#: editor/animation_track_editor.cpp editor/editor_settings.cpp
+#: editor/import/resource_importer_scene.cpp
#: editor/plugins/animation_player_editor_plugin.cpp editor/scene_tree_dock.cpp
#: scene/2d/animated_sprite.cpp scene/2d/cpu_particles_2d.cpp
#: scene/2d/sprite.cpp scene/3d/cpu_particles.cpp scene/3d/sprite_3d.cpp
@@ -1553,14 +1564,14 @@ msgstr "Animasie Zoem."
msgid "Seconds"
msgstr ""
-#: editor/animation_track_editor.cpp
+#: editor/animation_track_editor.cpp editor/import/resource_importer_scene.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp main/main.cpp
#: scene/resources/texture.cpp
msgid "FPS"
msgstr ""
#: editor/animation_track_editor.cpp editor/editor_plugin_settings.cpp
-#: editor/editor_resource_picker.cpp
+#: editor/editor_resource_picker.cpp editor/import/resource_importer_wav.cpp
#: editor/plugins/polygon_2d_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
@@ -2571,7 +2582,9 @@ msgid "Remove Autoload"
msgstr "Hernoem AutoLaai"
#: editor/editor_autoload_settings.cpp editor/editor_plugin_settings.cpp
-#: modules/gdscript/gdscript.cpp scene/2d/polygon_2d.cpp scene/3d/area.cpp
+#: modules/gdscript/gdscript.cpp platform/android/export/export_plugin.cpp
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#: scene/2d/polygon_2d.cpp scene/3d/area.cpp scene/3d/physics_joint.cpp
#: scene/3d/reflection_probe.cpp scene/main/canvas_layer.cpp
#: scene/resources/material.cpp servers/visual_server.cpp
msgid "Enable"
@@ -2727,6 +2740,58 @@ msgstr ""
#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
#, fuzzy
+msgid "Custom Template"
+msgstr "Lede"
+
+#: editor/editor_export.cpp editor/project_export.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp
+msgid "Release"
+msgstr ""
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Binary Format"
+msgstr "Anim Verander Transform"
+
+#: editor/editor_export.cpp
+msgid "64 Bits"
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Embed PCK"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Texture Format"
+msgstr "Wissel Modus"
+
+#: editor/editor_export.cpp
+msgid "BPTC"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "S3TC"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "ETC"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "ETC2"
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "No BPTC Fallbacks"
+msgstr ""
+
+#: editor/editor_export.cpp platform/android/export/export_plugin.cpp
+#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
+#, fuzzy
msgid "Custom debug template not found."
msgstr "Sjabloon lêer nie gevind nie:\n"
@@ -2918,9 +2983,10 @@ msgid "Make Current"
msgstr "Maak Funksie"
#: editor/editor_feature_profile.cpp editor/editor_node.cpp
+#: editor/import/resource_importer_scene.cpp
#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
msgid "Import"
-msgstr ""
+msgstr "Invoer"
#: editor/editor_feature_profile.cpp editor/project_export.cpp
#: platform/android/export/export.cpp platform/javascript/export/export.cpp
@@ -3053,8 +3119,11 @@ msgstr "Sukses!"
msgid "Display Mode"
msgstr "Pad na Nodus:"
-#: editor/editor_file_dialog.cpp main/main.cpp modules/csg/csg_shape.cpp
-#: modules/visual_script/visual_script_nodes.cpp
+#: editor/editor_file_dialog.cpp
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+#: editor/import/resource_importer_wav.cpp main/main.cpp
+#: modules/csg/csg_shape.cpp modules/visual_script/visual_script_nodes.cpp
#: modules/visual_script/visual_script_yield_nodes.cpp scene/2d/light_2d.cpp
#: scene/2d/physics_body_2d.cpp scene/2d/tile_map.cpp
#: scene/3d/baked_lightmap.cpp scene/3d/light.cpp scene/3d/physics_body.cpp
@@ -3197,7 +3266,9 @@ msgstr "(Her)Invoer van Bates"
msgid "Reimport Missing Imported Files"
msgstr ""
-#: editor/editor_help.cpp
+#: editor/editor_help.cpp scene/2d/camera_2d.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/resources/dynamic_font.cpp
+#: scene/resources/style_box.cpp
msgid "Top"
msgstr "Bo"
@@ -3251,6 +3322,7 @@ msgid "Fonts"
msgstr ""
#: editor/editor_help.cpp editor/plugins/theme_editor_plugin.cpp
+#: platform/iphone/export/export.cpp
msgid "Icons"
msgstr ""
@@ -3429,7 +3501,9 @@ msgstr ""
msgid "Pin value [Disabled because '%s' is editor-only]"
msgstr ""
-#: editor/editor_inspector.cpp editor/scene_tree_dock.cpp
+#: editor/editor_inspector.cpp
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+#: editor/scene_tree_dock.cpp
#: modules/visual_script/visual_script_func_nodes.cpp
#: modules/visual_script/visual_script_nodes.cpp
#: modules/visual_script/visual_script_property_selector.cpp
@@ -3747,6 +3821,14 @@ msgid "Quick Open Script..."
msgstr ""
#: editor/editor_node.cpp
+msgid "Save & Reload"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Save changes to '%s' before reloading?"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "Save & Close"
msgstr ""
@@ -3858,6 +3940,10 @@ msgid "Open Project Manager?"
msgstr ""
#: editor/editor_node.cpp
+msgid "Save changes to the following scene(s) before reloading?"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "Save & Quit"
msgstr ""
@@ -4108,8 +4194,8 @@ msgstr "Plaaslike veranderinge word gebêre..."
#: editor/editor_node.cpp
#, fuzzy
-msgid "Translate Properties"
-msgstr "Eienskappe"
+msgid "Localize Settings"
+msgstr "Oorgange"
#: editor/editor_node.cpp
#, fuzzy
@@ -4126,8 +4212,8 @@ msgstr ""
#: editor/editor_node.cpp
#, fuzzy
-msgid "Capitalize Properties"
-msgstr "Eienskappe"
+msgid "Default Property Name Style"
+msgstr "Voorskou:"
#: editor/editor_node.cpp
msgid "Default Float Step"
@@ -4703,7 +4789,9 @@ msgstr ""
msgid "Update"
msgstr ""
-#: editor/editor_plugin_settings.cpp
+#: editor/editor_plugin_settings.cpp platform/android/export/export_plugin.cpp
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp
msgid "Version"
msgstr ""
@@ -5694,7 +5782,7 @@ msgstr ""
msgid "Rect Custom Position"
msgstr "Hernoem AutoLaai"
-#: editor/editor_settings.cpp
+#: editor/editor_settings.cpp platform/android/export/export_plugin.cpp
msgid "Screen"
msgstr ""
@@ -5719,6 +5807,19 @@ msgid "Editor SSL Certificates"
msgstr ""
#: editor/editor_settings.cpp
+msgid "HTTP Proxy"
+msgstr ""
+
+#: editor/editor_settings.cpp
+msgid "Host"
+msgstr ""
+
+#: editor/editor_settings.cpp editor/fileserver/editor_file_server.cpp
+#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp
+msgid "Port"
+msgstr ""
+
+#: editor/editor_settings.cpp
msgid "Project Manager"
msgstr "Projek Bestuurder"
@@ -5761,7 +5862,8 @@ msgstr ""
msgid "String Color"
msgstr "Leêr word gebêre:"
-#: editor/editor_settings.cpp
+#: editor/editor_settings.cpp platform/javascript/export/export.cpp
+#: platform/uwp/export/export.cpp
#, fuzzy
msgid "Background Color"
msgstr "Ongeldige naam."
@@ -5932,22 +6034,6 @@ msgid "Starting the download..."
msgstr ""
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "HTTP Proxy"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Host"
-msgstr ""
-
-#: editor/export_template_manager.cpp editor/fileserver/editor_file_server.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp main/main.cpp
-#: modules/mono/mono_gd/gd_mono.cpp
-msgid "Port"
-msgstr ""
-
-#: editor/export_template_manager.cpp
#, fuzzy
msgid "Error requesting URL:"
msgstr "Fout terwyl laai:"
@@ -6198,6 +6284,7 @@ msgstr ""
#: editor/fileserver/editor_file_server.cpp
#: editor/plugins/version_control_editor_plugin.cpp
+#: platform/uwp/export/export.cpp platform/windows/export/export.cpp
msgid "Password"
msgstr ""
@@ -6599,6 +6686,114 @@ msgstr ""
msgid "Use Ambient"
msgstr ""
+#: editor/import/resource_importer_bitmask.cpp
+#, fuzzy
+msgid "Create From"
+msgstr "Skep Vouer"
+
+#: editor/import/resource_importer_bitmask.cpp
+#: servers/audio/effects/audio_effect_compressor.cpp
+msgid "Threshold"
+msgstr ""
+
+#: editor/import/resource_importer_csv_translation.cpp
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_scene.cpp
+#: editor/import/resource_importer_texture.cpp
+#: editor/import/resource_importer_wav.cpp scene/3d/gi_probe.cpp
+#, fuzzy
+msgid "Compress"
+msgstr "Komponente"
+
+#: editor/import/resource_importer_csv_translation.cpp
+msgid "Delimiter"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+msgid "No BPTC If RGB"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/sprite_3d.cpp
+#: scene/resources/material.cpp scene/resources/particles_material.cpp
+#: scene/resources/texture.cpp
+msgid "Flags"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/animation/tween.cpp
+#: scene/resources/texture.cpp
+msgid "Repeat"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/2d/light_2d.cpp
+#: scene/gui/control.cpp scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Filter"
+msgstr "Eienskappe"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Mipmaps"
+msgstr "Seine"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+msgid "Anisotropic"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+msgid "sRGB"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+msgid "Slices"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
+#: scene/resources/style_box.cpp
+#, fuzzy
+msgid "Horizontal"
+msgstr "Skep Vouer"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
+#: scene/resources/style_box.cpp
+#, fuzzy
+msgid "Vertical"
+msgstr "Eienskappe"
+
+#: editor/import/resource_importer_obj.cpp
+#, fuzzy
+msgid "Generate Tangents"
+msgstr "Skep"
+
+#: editor/import/resource_importer_obj.cpp
+#, fuzzy
+msgid "Scale Mesh"
+msgstr "Wissel Modus"
+
+#: editor/import/resource_importer_obj.cpp
+msgid "Offset Mesh"
+msgstr ""
+
+#: editor/import/resource_importer_obj.cpp
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Octahedral Compression"
+msgstr "Skep Intekening"
+
+#: editor/import/resource_importer_obj.cpp
+msgid "Optimize Mesh Flags"
+msgstr ""
+
#: editor/import/resource_importer_scene.cpp
msgid "Import as Single Scene"
msgstr ""
@@ -6639,6 +6834,151 @@ msgstr ""
msgid "Import as Multiple Scenes+Materials"
msgstr ""
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Nodes"
+msgstr "Anim Dupliseer Sleutels"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Root Type"
+msgstr "Lede"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Root Name"
+msgstr "Nodus Naam:"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Root Scale"
+msgstr "Wissel Modus"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Custom Script"
+msgstr "Anim Dupliseer Sleutels"
+
+#: editor/import/resource_importer_scene.cpp scene/resources/texture.cpp
+#, fuzzy
+msgid "Storage"
+msgstr "Leêr word gebêre:"
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Use Legacy Names"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+msgid "Materials"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Location"
+msgstr "Alle Seleksie"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Keep On Reimport"
+msgstr "Skaal Verhouding:"
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+msgid "Meshes"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Ensure Tangents"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Light Baking"
+msgstr "Lineêr"
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Lightmap Texel Size"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+msgid "Skins"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Use Named Skins"
+msgstr "Seine"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "External Files"
+msgstr "Open 'n Lêer"
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Store In Subdir"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Filter Script"
+msgstr "Eienskappe"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Keep Custom Tracks"
+msgstr "Anim Verander Transform"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Optimizer"
+msgstr "Optimaliseer"
+
+#: editor/import/resource_importer_scene.cpp main/main.cpp
+#: modules/mono/mono_gd/gd_mono.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp scene/2d/camera_2d.cpp scene/2d/light_2d.cpp
+#: scene/2d/navigation_polygon.cpp scene/2d/ray_cast_2d.cpp scene/2d/sprite.cpp
+#: scene/2d/y_sort.cpp scene/3d/audio_stream_player_3d.cpp
+#: scene/3d/baked_lightmap.cpp scene/3d/interpolated_camera.cpp
+#: scene/3d/light.cpp scene/3d/navigation_mesh_instance.cpp
+#: scene/3d/physics_joint.cpp scene/3d/ray_cast.cpp scene/3d/sprite_3d.cpp
+#: scene/gui/graph_edit.cpp scene/gui/rich_text_label.cpp
+#: scene/resources/curve.cpp scene/resources/environment.cpp
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Enabled"
+msgstr "Aktiveer"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Max Linear Error"
+msgstr "Max. Lineêre Fout:"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Max Angular Error"
+msgstr "Max. Hoekige Fout:"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Max Angle"
+msgstr "Waarde:"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Remove Unused Tracks"
+msgstr "Verwyder Anim Baan"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Clips"
+msgstr "Anim Voeg Baan By"
+
+#: editor/import/resource_importer_scene.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/particles_2d.cpp scene/3d/area.cpp scene/3d/cpu_particles.cpp
+#: scene/3d/particles.cpp scene/resources/environment.cpp
+msgid "Amount"
+msgstr ""
+
#: editor/import/resource_importer_scene.cpp
#: editor/plugins/mesh_library_editor_plugin.cpp
msgid "Import Scene"
@@ -6680,12 +7020,144 @@ msgstr ""
msgid "Saving..."
msgstr ""
+#: editor/import/resource_importer_texture.cpp scene/resources/texture.cpp
+msgid "Lossy Quality"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "HDR Mode"
+msgstr "Wissel Modus"
+
+#: editor/import/resource_importer_texture.cpp
+msgid "BPTC LDR"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/mesh_instance_2d.cpp scene/2d/multimesh_instance_2d.cpp
+#: scene/2d/particles_2d.cpp scene/2d/sprite.cpp scene/resources/style_box.cpp
+msgid "Normal Map"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Process"
+msgstr "Wissel Modus"
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Fix Alpha Border"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Premult Alpha"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Hdr As Srgb"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Invert Color"
+msgstr "Hernoem AutoLaai"
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Normal Map Invert Y"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
+#: scene/audio/audio_stream_player.cpp scene/gui/video_player.cpp
+msgid "Stream"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Size Limit"
+msgstr "Pad na Nodus:"
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Detect 3D"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "SVG"
+msgstr ""
+
#: editor/import/resource_importer_texture.cpp
msgid ""
"Warning, no suitable PC VRAM compression enabled in Project Settings. This "
"texture will not display correctly on PC."
msgstr ""
+#: editor/import/resource_importer_texture_atlas.cpp
+#, fuzzy
+msgid "Atlas File"
+msgstr "Alle Lêers (*)"
+
+#: editor/import/resource_importer_texture_atlas.cpp
+#, fuzzy
+msgid "Import Mode"
+msgstr "Pad na Nodus:"
+
+#: editor/import/resource_importer_texture_atlas.cpp
+msgid "Crop To Region"
+msgstr ""
+
+#: editor/import/resource_importer_texture_atlas.cpp
+msgid "Trim Alpha Border From Region"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp scene/2d/physics_body_2d.cpp
+msgid "Force"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+msgid "8 Bit"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp main/main.cpp
+#: modules/mono/editor/csharp_project.cpp modules/mono/mono_gd/gd_mono.cpp
+msgid "Mono"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+#, fuzzy
+msgid "Max Rate"
+msgstr "Waarde:"
+
+#: editor/import/resource_importer_wav.cpp
+#, fuzzy
+msgid "Max Rate Hz"
+msgstr "Waarde:"
+
+#: editor/import/resource_importer_wav.cpp
+msgid "Trim"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+#, fuzzy
+msgid "Normalize"
+msgstr "Verwyder Seleksie"
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+#, fuzzy
+msgid "Loop Mode"
+msgstr "Wissel Modus"
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+#, fuzzy
+msgid "Loop Begin"
+msgstr "Wissel Modus"
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+#, fuzzy
+msgid "Loop End"
+msgstr "Wissel Modus"
+
#: editor/import_defaults_editor.cpp
#, fuzzy
msgid "Select Importer"
@@ -6758,6 +7230,27 @@ msgid "Failed to load resource."
msgstr ""
#: editor/inspector_dock.cpp
+msgid "Property Name Style"
+msgstr ""
+
+#: editor/inspector_dock.cpp scene/gui/color_picker.cpp
+msgid "Raw"
+msgstr ""
+
+#: editor/inspector_dock.cpp
+#, fuzzy
+msgid "Capitalized"
+msgstr "Eienskappe"
+
+#: editor/inspector_dock.cpp
+msgid "Localized"
+msgstr ""
+
+#: editor/inspector_dock.cpp
+msgid "Localization not available for current language."
+msgstr ""
+
+#: editor/inspector_dock.cpp
#, fuzzy
msgid "Copy Properties"
msgstr "Eienskappe"
@@ -7843,19 +8336,24 @@ msgid "License (Z-A)"
msgstr "Lisensie"
#: editor/plugins/asset_library_editor_plugin.cpp
+msgctxt "Pagination"
msgid "First"
msgstr ""
-#: editor/plugins/asset_library_editor_plugin.cpp scene/gui/control.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
#, fuzzy
+msgctxt "Pagination"
msgid "Previous"
msgstr "Voorskou:"
-#: editor/plugins/asset_library_editor_plugin.cpp scene/gui/control.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgctxt "Pagination"
msgid "Next"
msgstr "Volgende"
#: editor/plugins/asset_library_editor_plugin.cpp
+msgctxt "Pagination"
msgid "Last"
msgstr ""
@@ -8098,19 +8596,19 @@ msgid ""
"margins."
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Top Left"
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Top Right"
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Bottom Right"
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Bottom Left"
msgstr ""
@@ -8842,6 +9340,19 @@ msgstr ""
msgid "Gradient Edited"
msgstr ""
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+msgid "Swap GradientTexture2D Fill Points"
+msgstr ""
+
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+msgid "Swap Gradient Fill Points"
+msgstr ""
+
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+#, fuzzy
+msgid "Toggle Grid Snap"
+msgstr "Wissel Modus"
+
#: editor/plugins/item_list_editor_plugin.cpp
msgid "Item %d"
msgstr ""
@@ -9063,8 +9574,8 @@ msgid ""
"%s"
msgstr ""
-#: editor/plugins/mesh_library_editor_plugin.cpp modules/gridmap/grid_map.cpp
-msgid "Mesh Library"
+#: editor/plugins/mesh_library_editor_plugin.cpp
+msgid "MeshLibrary"
msgstr ""
#: editor/plugins/mesh_library_editor_plugin.cpp
@@ -10077,8 +10588,8 @@ msgstr "Koppel aan Nodus:"
msgid "Source"
msgstr "Hulpbron"
-#: editor/plugins/script_text_editor.cpp scene/3d/interpolated_camera.cpp
-#: scene/animation/skeleton_ik.cpp
+#: editor/plugins/script_text_editor.cpp platform/uwp/export/export.cpp
+#: scene/3d/interpolated_camera.cpp scene/animation/skeleton_ik.cpp
msgid "Target"
msgstr ""
@@ -11077,7 +11588,9 @@ msgstr ""
#: editor/plugins/sprite_frames_editor_plugin.cpp
#: modules/gltf/gltf_animation.cpp modules/minimp3/audio_stream_mp3.cpp
-#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp scene/2d/path_2d.cpp
+#: modules/minimp3/resource_importer_mp3.cpp
+#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp
+#: modules/stb_vorbis/resource_importer_ogg_vorbis.cpp scene/2d/path_2d.cpp
#: scene/3d/path.cpp scene/resources/animation.cpp scene/resources/material.cpp
msgid "Loop"
msgstr ""
@@ -12005,8 +12518,9 @@ msgstr ""
msgid "Priority"
msgstr ""
-#: editor/plugins/tile_set_editor_plugin.cpp main/main.cpp scene/gui/button.cpp
-#: scene/gui/item_list.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp main/main.cpp
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#: scene/gui/button.cpp scene/gui/item_list.cpp
msgid "Icon"
msgstr ""
@@ -13353,10 +13867,6 @@ msgid ""
msgstr ""
#: editor/project_export.cpp
-msgid "Release"
-msgstr ""
-
-#: editor/project_export.cpp
msgid "Exporting All"
msgstr ""
@@ -15180,6 +15690,7 @@ msgid "Change AudioStreamPlayer3D Emission Angle"
msgstr ""
#: editor/spatial_editor_gizmos.cpp modules/gltf/gltf_node.cpp
+#: platform/osx/export/export.cpp
msgid "Camera"
msgstr ""
@@ -15452,7 +15963,8 @@ msgstr ""
msgid "Use Nvidia Rect Flicker Workaround"
msgstr ""
-#: main/main.cpp platform/uwp/os_uwp.cpp
+#: main/main.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp platform/uwp/os_uwp.cpp
#, fuzzy
msgid "Display"
msgstr "Vervang Alles"
@@ -15509,19 +16021,6 @@ msgstr ""
msgid "Allowed"
msgstr ""
-#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp scene/2d/camera_2d.cpp
-#: scene/2d/light_2d.cpp scene/2d/navigation_polygon.cpp
-#: scene/2d/ray_cast_2d.cpp scene/2d/sprite.cpp scene/2d/y_sort.cpp
-#: scene/3d/audio_stream_player_3d.cpp scene/3d/baked_lightmap.cpp
-#: scene/3d/interpolated_camera.cpp scene/3d/light.cpp
-#: scene/3d/navigation_mesh_instance.cpp scene/3d/ray_cast.cpp
-#: scene/3d/sprite_3d.cpp scene/gui/graph_edit.cpp
-#: scene/gui/rich_text_label.cpp scene/resources/curve.cpp
-#: scene/resources/environment.cpp
-#, fuzzy
-msgid "Enabled"
-msgstr "Aktiveer"
-
#: main/main.cpp
msgid "Intended Usage"
msgstr ""
@@ -15552,13 +16051,14 @@ msgstr ""
msgid "Handheld"
msgstr ""
-#: main/main.cpp
+#: main/main.cpp platform/javascript/export/export.cpp
+#: platform/uwp/export/export.cpp
#, fuzzy
msgid "Orientation"
msgstr "Opnoemings"
#: main/main.cpp scene/gui/scroll_container.cpp scene/gui/text_edit.cpp
-#: scene/main/scene_tree.cpp
+#: scene/main/scene_tree.cpp scene/register_scene_types.cpp
msgid "Common"
msgstr ""
@@ -15598,7 +16098,7 @@ msgstr ""
#: main/main.cpp
#, fuzzy
-msgid "Frame Delay (msec)"
+msgid "Frame Delay Msec"
msgstr "Tree (s):"
#: main/main.cpp
@@ -15720,11 +16220,6 @@ msgstr ""
msgid "Tooltip Position Offset"
msgstr ""
-#: main/main.cpp modules/mono/editor/csharp_project.cpp
-#: modules/mono/mono_gd/gd_mono.cpp
-msgid "Mono"
-msgstr ""
-
#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp
msgid "Debugger Agent"
msgstr ""
@@ -16273,7 +16768,7 @@ msgstr ""
msgid "Intensity"
msgstr ""
-#: modules/gltf/gltf_light.cpp scene/2d/light_2d.cpp
+#: modules/gltf/gltf_light.cpp scene/2d/light_2d.cpp scene/3d/light.cpp
msgid "Range"
msgstr ""
@@ -16409,11 +16904,6 @@ msgstr ""
msgid "Use Named Skin Binds"
msgstr ""
-#: modules/gltf/gltf_state.cpp scene/3d/physics_joint.cpp
-#, fuzzy
-msgid "Nodes"
-msgstr "Anim Dupliseer Sleutels"
-
#: modules/gltf/gltf_state.cpp
msgid "Buffer Views"
msgstr ""
@@ -16423,14 +16913,6 @@ msgid "Accessors"
msgstr ""
#: modules/gltf/gltf_state.cpp
-msgid "Meshes"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp
-msgid "Materials"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp
#, fuzzy
msgid "Scene Name"
msgstr "Skep Vouer"
@@ -16447,15 +16929,11 @@ msgstr "Skep Vouer"
msgid "Textures"
msgstr "Verwyder Seleksie"
-#: modules/gltf/gltf_state.cpp
+#: modules/gltf/gltf_state.cpp platform/uwp/export/export.cpp
msgid "Images"
msgstr ""
#: modules/gltf/gltf_state.cpp
-msgid "Skins"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp
msgid "Cameras"
msgstr ""
@@ -16488,10 +16966,14 @@ msgid "Src Image"
msgstr ""
#: modules/gridmap/grid_map.cpp
-msgid "Physics Material"
+msgid "Mesh Library"
msgstr ""
#: modules/gridmap/grid_map.cpp
+msgid "Physics Material"
+msgstr ""
+
+#: modules/gridmap/grid_map.cpp scene/3d/visual_instance.cpp
msgid "Use In Baked Light"
msgstr ""
@@ -16522,6 +17004,7 @@ msgstr "Skrap"
#: modules/gridmap/grid_map.cpp scene/2d/collision_object_2d.cpp
#: scene/2d/tile_map.cpp scene/3d/collision_object.cpp scene/3d/soft_body.cpp
+#: scene/resources/material.cpp
msgid "Mask"
msgstr ""
@@ -16709,7 +17192,9 @@ msgid "Ultra Quality Ray Count"
msgstr ""
#: modules/minimp3/audio_stream_mp3.cpp
+#: modules/minimp3/resource_importer_mp3.cpp
#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp
+#: modules/stb_vorbis/resource_importer_ogg_vorbis.cpp
#, fuzzy
msgid "Loop Offset"
msgstr "Wissel Modus"
@@ -17796,6 +18281,180 @@ msgid "The package must have at least one '.' separator."
msgstr ""
#: platform/android/export/export_plugin.cpp
+msgid "Use Custom Build"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Export Format"
+msgstr "Anim Verander Transform"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Keystore"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Debug User"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+msgid "Debug Password"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Release User"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Release Password"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "One Click Deploy"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Clear Previous Install"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp scene/resources/shader.cpp
+msgid "Code"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Min SDK"
+msgstr "Afhanklikheid Bewerker"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Target SDK"
+msgstr "Skrap"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Package"
+msgstr "Verpak"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Unique Name"
+msgstr "Nodus Naam:"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Signed"
+msgstr "Seine"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Classify As Game"
+msgstr "Klas:"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Retain Data On Uninstall"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Exclude From Recents"
+msgstr "Skrap"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Graphics"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "OpenGL Debug"
+msgstr "Oop"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "XR Features"
+msgstr "Verwyder Seleksie"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "XR Mode"
+msgstr "Wissel Modus"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Hand Tracking"
+msgstr "Verpak"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Hand Tracking Frequency"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Passthrough"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Immersive Mode"
+msgstr "Wissel Modus"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Support Small"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Support Normal"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Support Large"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Support Xlarge"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "User Data Backup"
+msgstr "Projek Stigters"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Allow"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+msgid "Command Line"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Extra Args"
+msgstr "Ekstra Roep Argumente:"
+
+#: platform/android/export/export_plugin.cpp
+msgid "APK Expansion"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Salt"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Public Key"
+msgstr "Anim Dupliseer Sleutels"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Permissions"
+msgstr "Oorgang"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Custom Permissions"
+msgstr "Hernoem AutoLaai"
+
+#: platform/android/export/export_plugin.cpp
msgid "Select device from the list"
msgstr ""
@@ -18092,6 +18751,174 @@ msgid "The character '%s' is not allowed in Identifier."
msgstr ""
#: platform/iphone/export/export.cpp
+msgid "App Store Team ID"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Provisioning Profile UUID Debug"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Code Sign Identity Debug"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Export Method Debug"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Provisioning Profile UUID Release"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Code Sign Identity Release"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Export Method Release"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Targeted Device Family"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Info"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Identifier"
+msgstr "Ongeldige naam."
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Signature"
+msgstr "Seine"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Short Version"
+msgstr "Deursoek Klasse"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/windows/export/export.cpp
+msgid "Copyright"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Capabilities"
+msgstr "Eienskappe"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Access Wi-Fi"
+msgstr "Sukses!"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Push Notifications"
+msgstr "Konstant"
+
+#: platform/iphone/export/export.cpp scene/3d/baked_lightmap.cpp
+#, fuzzy
+msgid "User Data"
+msgstr "Projek Stigters"
+
+#: platform/iphone/export/export.cpp
+msgid "Accessible From Files App"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Accessible From Itunes Sharing"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Privacy"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Camera Usage Description"
+msgstr "Beskrywing:"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Microphone Usage Description"
+msgstr "Eienskap Beskrywing:"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Photolibrary Usage Description"
+msgstr "Eienskap Beskrywing:"
+
+#: platform/iphone/export/export.cpp
+msgid "iPhone 120 X 120"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPhone 180 X 180"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 76 X 76"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 152 X 152"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 167 X 167"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "App Store 1024 X 1024"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Spotlight 40 X 40"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Spotlight 80 X 80"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Storyboard"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Use Launch Screen Storyboard"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Image Scale Mode"
+msgstr "Wissel Modus"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Custom Image @2x"
+msgstr "Anim Dupliseer Sleutels"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Custom Image @3x"
+msgstr "Anim Dupliseer Sleutels"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Use Custom BG Color"
+msgstr "Anim Dupliseer Sleutels"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Custom BG Color"
+msgstr "Anim Dupliseer Sleutels"
+
+#: platform/iphone/export/export.cpp
msgid "App Store Team ID not specified - cannot configure the project."
msgstr ""
@@ -18133,6 +18960,79 @@ msgstr "Kon nie vouer skep nie."
#: platform/javascript/export/export.cpp
#, fuzzy
+msgid "Variant"
+msgstr "Opnoemings:"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Export Type"
+msgstr "Ek sien..."
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "VRAM Texture Compression"
+msgstr "Skep Intekening"
+
+#: platform/javascript/export/export.cpp
+msgid "For Desktop"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "For Mobile"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Html"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Export Icon"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Custom Html Shell"
+msgstr "Anim Dupliseer Sleutels"
+
+#: platform/javascript/export/export.cpp
+msgid "Head Include"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Canvas Resize Policy"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Focus Canvas On Start"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Experimental Virtual Keyboard"
+msgstr "Eienskappe"
+
+#: platform/javascript/export/export.cpp
+msgid "Progressive Web App"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Offline Page"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 144 X 144"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 180 X 180"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 512 X 512"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
msgid "Could not read HTML shell:"
msgstr "Kon nie vouer skep nie."
@@ -18245,6 +19145,194 @@ msgid "Unknown object type."
msgstr ""
#: platform/osx/export/export.cpp
+msgid "App Category"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "High Res"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Location Usage Description"
+msgstr "Beskrywing:"
+
+#: platform/osx/export/export.cpp
+msgid "Address Book Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Calendar Usage Description"
+msgstr "Beskrywing:"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Photos Library Usage Description"
+msgstr "Eienskap Beskrywing:"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Desktop Folder Usage Description"
+msgstr "Metode Beskrywing:"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Documents Folder Usage Description"
+msgstr "Metode Beskrywing:"
+
+#: platform/osx/export/export.cpp
+msgid "Downloads Folder Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Network Volumes Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Removable Volumes Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#, fuzzy
+msgid "Codesign"
+msgstr "Anim Dupliseer Sleutels"
+
+#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
+#: platform/windows/export/export.cpp
+msgid "Identity"
+msgstr ""
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#, fuzzy
+msgid "Timestamp"
+msgstr "Tyd:"
+
+#: platform/osx/export/export.cpp
+msgid "Hardened Runtime"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Replace Existing Signature"
+msgstr "Vervang Alles"
+
+#: platform/osx/export/export.cpp
+msgid "Entitlements"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Custom File"
+msgstr "Anim Dupliseer Sleutels"
+
+#: platform/osx/export/export.cpp
+msgid "Allow JIT Code Execution"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Allow Unsigned Executable Memory"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Allow Dyld Environment Variables"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Disable Library Validation"
+msgstr "Afgeskaskel"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Audio Input"
+msgstr "Hernoem Oudio-Bus"
+
+#: platform/osx/export/export.cpp
+msgid "Address Book"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Calendars"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Photos Library"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Apple Events"
+msgstr "Herset Zoem"
+
+#: platform/osx/export/export.cpp
+msgid "Debugging"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "App Sandbox"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Network Server"
+msgstr "Skep Vouer"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Network Client"
+msgstr "Skep Vouer"
+
+#: platform/osx/export/export.cpp
+msgid "Device Usb"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Device Bluetooth"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Files Downloads"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Files Pictures"
+msgstr "Eienskappe"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Files Music"
+msgstr "Lêer:"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Files Movies"
+msgstr "Eienskappe"
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#, fuzzy
+msgid "Custom Options"
+msgstr "Bus opsies"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Notarization"
+msgstr "Skep Intekening"
+
+#: platform/osx/export/export.cpp
+msgid "Apple ID Name"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Apple ID Password"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Apple Team ID"
+msgstr ""
+
+#: platform/osx/export/export.cpp
msgid ""
"Note: The notarization process generally takes less than an hour. When the "
"process is completed, you'll receive an email."
@@ -18437,6 +19525,131 @@ msgid "Force Builtin Codesign"
msgstr ""
#: platform/uwp/export/export.cpp
+msgid "Architecture"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Display Name"
+msgstr "Vervang Alles"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Short Name"
+msgstr "Verander Woordeboek Waarde"
+
+#: platform/uwp/export/export.cpp
+msgid "Publisher"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Publisher Display Name"
+msgstr "Ongeldige naam."
+
+#: platform/uwp/export/export.cpp
+msgid "Product Guid"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Publisher Guid"
+msgstr "Vee uit"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Signing"
+msgstr "Seine"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Certificate"
+msgstr "Eienskappe"
+
+#: platform/uwp/export/export.cpp
+msgid "Algorithm"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Major"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Minor"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Build"
+msgstr "Wissel Modus"
+
+#: platform/uwp/export/export.cpp
+msgid "Revision"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Landscape"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Portrait"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Landscape Flipped"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Portrait Flipped"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Store Logo"
+msgstr "Wissel Modus"
+
+#: platform/uwp/export/export.cpp
+msgid "Square 44 X 44 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 71 X 71 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 150 X 150 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 310 X 310 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Wide 310 X 150 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Splash Screen"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Tiles"
+msgstr "Lêer:"
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Square 150 X 150"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Wide 310 X 150"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Square 310 X 310"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
#, fuzzy
msgid "Invalid package short name."
msgstr "Ongeldige naam."
@@ -18508,11 +19721,48 @@ msgid "Debug Certificate"
msgstr ""
#: platform/uwp/export/export.cpp
-msgid "Debug Password"
+msgid "Debug Algorithm"
msgstr ""
-#: platform/uwp/export/export.cpp
-msgid "Debug Algorithm"
+#: platform/windows/export/export.cpp
+msgid "Identity Type"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Timestamp Server URL"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Digest Algorithm"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "File Version"
+msgstr "Moet 'n geldige uitbreiding gebruik."
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Product Version"
+msgstr "Ongeldige naam."
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Company Name"
+msgstr "Nodus Naam:"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Product Name"
+msgstr "Verwyder Seleksie"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "File Description"
+msgstr "Beskrywing:"
+
+#: platform/windows/export/export.cpp
+msgid "Trademarks"
msgstr ""
#: platform/windows/export/export.cpp
@@ -18586,12 +19836,14 @@ msgstr ""
msgid "Centered"
msgstr "Skrap"
-#: scene/2d/animated_sprite.cpp scene/2d/camera_2d.cpp scene/2d/light_2d.cpp
+#: scene/2d/animated_sprite.cpp scene/2d/camera_2d.cpp
+#: scene/2d/cpu_particles_2d.cpp scene/2d/light_2d.cpp
#: scene/2d/parallax_background.cpp scene/2d/parallax_layer.cpp
#: scene/2d/path_2d.cpp scene/2d/polygon_2d.cpp scene/2d/sprite.cpp
-#: scene/3d/path.cpp scene/3d/physics_body.cpp scene/3d/sprite_3d.cpp
-#: scene/gui/graph_node.cpp scene/gui/rich_text_effect.cpp
-#: scene/main/canvas_layer.cpp scene/resources/material.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/path.cpp scene/3d/physics_body.cpp
+#: scene/3d/sprite_3d.cpp scene/gui/graph_node.cpp
+#: scene/gui/rich_text_effect.cpp scene/main/canvas_layer.cpp
+#: scene/resources/material.cpp scene/resources/particles_material.cpp
#: scene/resources/style_box.cpp
msgid "Offset"
msgstr ""
@@ -18659,11 +19911,6 @@ msgstr "Voeg Oudio-Bus By"
msgid "Override"
msgstr ""
-#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
-#: scene/audio/audio_stream_player.cpp scene/gui/video_player.cpp
-msgid "Stream"
-msgstr ""
-
#: scene/2d/audio_stream_player_2d.cpp scene/audio/audio_stream_player.cpp
#: scene/gui/video_player.cpp servers/audio/effects/audio_effect_amplify.cpp
msgid "Volume dB"
@@ -18688,12 +19935,12 @@ msgid "Stream Paused"
msgstr ""
#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
-#: scene/3d/reflection_probe.cpp scene/3d/visual_instance.cpp
-#: scene/resources/material.cpp
+#: scene/3d/light.cpp scene/3d/reflection_probe.cpp
+#: scene/3d/visual_instance.cpp scene/resources/material.cpp
msgid "Max Distance"
msgstr ""
-#: scene/2d/audio_stream_player_2d.cpp
+#: scene/2d/audio_stream_player_2d.cpp scene/3d/light.cpp
#, fuzzy
msgid "Attenuation"
msgstr "Animasie Zoem."
@@ -18748,6 +19995,24 @@ msgstr "Wissel Modus"
msgid "Limit"
msgstr ""
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/style_box.cpp
+#, fuzzy
+msgid "Left"
+msgstr "Lineêr"
+
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/style_box.cpp
+#, fuzzy
+msgid "Right"
+msgstr "Lineêr"
+
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/dynamic_font.cpp scene/resources/style_box.cpp
+#, fuzzy
+msgid "Bottom"
+msgstr "Hernoem AutoLaai"
+
#: scene/2d/camera_2d.cpp
msgid "Smoothed"
msgstr ""
@@ -18953,12 +20218,6 @@ msgstr ""
msgid "Emitting"
msgstr "Oorgange"
-#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp scene/3d/area.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
-#: scene/resources/environment.cpp
-msgid "Amount"
-msgstr ""
-
#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp
#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
msgid "Lifetime"
@@ -19019,18 +20278,13 @@ msgstr ""
#: scene/2d/mesh_instance_2d.cpp scene/2d/multimesh_instance_2d.cpp
#: scene/2d/particles_2d.cpp scene/2d/polygon_2d.cpp scene/2d/sprite.cpp
#: scene/3d/sprite_3d.cpp scene/gui/nine_patch_rect.cpp
-#: scene/gui/texture_rect.cpp scene/resources/sky.cpp
-#: scene/resources/style_box.cpp scene/resources/visual_shader_nodes.cpp
+#: scene/gui/texture_rect.cpp scene/resources/material.cpp
+#: scene/resources/sky.cpp scene/resources/style_box.cpp
+#: scene/resources/visual_shader_nodes.cpp
#, fuzzy
msgid "Texture"
msgstr "Verwyder Seleksie"
-#: scene/2d/cpu_particles_2d.cpp scene/2d/mesh_instance_2d.cpp
-#: scene/2d/multimesh_instance_2d.cpp scene/2d/particles_2d.cpp
-#: scene/2d/sprite.cpp scene/resources/style_box.cpp
-msgid "Normal Map"
-msgstr ""
-
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
msgid "Emission Shape"
@@ -19050,9 +20304,8 @@ msgid "Normals"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/3d/sprite_3d.cpp scene/resources/material.cpp
-#: scene/resources/particles_material.cpp scene/resources/texture.cpp
-msgid "Flags"
+#: scene/resources/particles_material.cpp
+msgid "Align Y"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
@@ -19073,6 +20326,11 @@ msgid "Initial Velocity"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Velocity Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp servers/physics_2d_server.cpp
#: servers/physics_server.cpp
msgid "Angular Velocity"
@@ -19080,6 +20338,12 @@ msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Velocity Curve"
+msgstr "Wysig Nodus Kurwe"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
msgid "Orbit Velocity"
msgstr ""
@@ -19091,6 +20355,23 @@ msgstr "Lineêr"
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Accel"
+msgstr "Sukses!"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Accel Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Accel Curve"
+msgstr "Wysig Nodus Kurwe"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
msgid "Radial Accel"
msgstr ""
@@ -19100,19 +20381,55 @@ msgid "Tangential Accel"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/2d/joints_2d.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/vehicle_body.cpp
-#: scene/resources/particles_material.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/physics_joint.cpp
+#: scene/3d/vehicle_body.cpp scene/resources/particles_material.cpp
#: servers/audio/effects/audio_effect_reverb.cpp
msgid "Damping"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+msgid "Damping Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Damping Curve"
+msgstr "Wysig Nodus Kurwe"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp scene/3d/light.cpp
+#: scene/resources/particles_material.cpp
msgid "Angle"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+msgid "Angle Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Angle Curve"
+msgstr "Wysig Nodus Kurwe"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#, fuzzy
+msgid "Scale Amount"
+msgstr "Voeg Sleutel Hier"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+msgid "Scale Amount Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#, fuzzy
+msgid "Scale Amount Curve"
+msgstr "Skaal van Wyser"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
msgid "Color Ramp"
msgstr ""
@@ -19127,6 +20444,47 @@ msgstr ""
msgid "Hue Variation"
msgstr "Opnoemings:"
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Variation"
+msgstr "Opnoemings:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Variation Random"
+msgstr "Opnoemings:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Variation Curve"
+msgstr "Opnoemings:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Speed Random"
+msgstr "Wissel Modus"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Speed Curve"
+msgstr "Wysig Nodus Kurwe"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Offset Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Offset Curve"
+msgstr "Wysig Nodus Kurwe"
+
#: scene/2d/joints_2d.cpp
msgid "Node A and Node B must be PhysicsBody2Ds"
msgstr ""
@@ -19158,6 +20516,7 @@ msgid "Node B"
msgstr "Anim Dupliseer Sleutels"
#: scene/2d/joints_2d.cpp scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp
+#: scene/3d/light.cpp scene/3d/physics_joint.cpp
#: scene/resources/environment.cpp
msgid "Bias"
msgstr ""
@@ -19167,7 +20526,7 @@ msgstr ""
msgid "Disable Collision"
msgstr "Afgeskaskel"
-#: scene/2d/joints_2d.cpp
+#: scene/2d/joints_2d.cpp scene/3d/physics_joint.cpp
msgid "Softness"
msgstr ""
@@ -19184,7 +20543,7 @@ msgstr ""
msgid "Rest Length"
msgstr ""
-#: scene/2d/joints_2d.cpp scene/3d/vehicle_body.cpp
+#: scene/2d/joints_2d.cpp scene/3d/physics_joint.cpp scene/3d/vehicle_body.cpp
msgid "Stiffness"
msgstr ""
@@ -19204,7 +20563,7 @@ msgid "Texture Scale"
msgstr ""
#: scene/2d/light_2d.cpp scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp
-#: scene/resources/environment.cpp scene/resources/sky.cpp
+#: scene/3d/light.cpp scene/resources/environment.cpp scene/resources/sky.cpp
msgid "Energy"
msgstr ""
@@ -19241,12 +20600,6 @@ msgstr ""
msgid "Gradient Length"
msgstr "Verander Skikking Waarde-Soort"
-#: scene/2d/light_2d.cpp scene/gui/control.cpp
-#: scene/resources/navigation_mesh.cpp
-#, fuzzy
-msgid "Filter"
-msgstr "Eienskappe"
-
#: scene/2d/light_2d.cpp
#, fuzzy
msgid "Filter Smooth"
@@ -19644,10 +20997,6 @@ msgid "Applied Forces"
msgstr ""
#: scene/2d/physics_body_2d.cpp
-msgid "Force"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp
msgid "Torque"
msgstr ""
@@ -19660,7 +21009,7 @@ msgid "Sync To Physics"
msgstr ""
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-msgid "Moving platform"
+msgid "Moving Platform"
msgstr ""
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
@@ -19669,7 +21018,7 @@ msgstr ""
#: scene/2d/physics_body_2d.cpp scene/2d/touch_screen_button.cpp
#: scene/3d/physics_body.cpp scene/gui/texture_button.cpp
-#: scene/resources/line_shape_2d.cpp
+#: scene/resources/line_shape_2d.cpp scene/resources/material.cpp
msgid "Normal"
msgstr ""
@@ -19892,6 +21241,34 @@ msgid ""
"as parent."
msgstr ""
+#: scene/2d/visibility_notifier_2d.cpp scene/3d/visibility_notifier.cpp
+#, fuzzy
+msgid "Pause Animations"
+msgstr "Animasie Zoem."
+
+#: scene/2d/visibility_notifier_2d.cpp scene/3d/visibility_notifier.cpp
+msgid "Freeze Bodies"
+msgstr ""
+
+#: scene/2d/visibility_notifier_2d.cpp
+#, fuzzy
+msgid "Pause Particles"
+msgstr "Eienskappe"
+
+#: scene/2d/visibility_notifier_2d.cpp
+#, fuzzy
+msgid "Pause Animated Sprites"
+msgstr "Verander Anim Lente"
+
+#: scene/2d/visibility_notifier_2d.cpp
+#, fuzzy
+msgid "Process Parent"
+msgstr "Wissel Modus"
+
+#: scene/2d/visibility_notifier_2d.cpp
+msgid "Physics Process Parent"
+msgstr ""
+
#: scene/3d/area.cpp
msgid "Reverb Bus"
msgstr ""
@@ -19985,6 +21362,7 @@ msgid "Attenuation Filter"
msgstr ""
#: scene/3d/audio_stream_player_3d.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
#: servers/audio/effects/audio_effect_filter.cpp
msgid "Cutoff Hz"
msgstr ""
@@ -20028,11 +21406,6 @@ msgid "Octree"
msgstr ""
#: scene/3d/baked_lightmap.cpp
-#, fuzzy
-msgid "User Data"
-msgstr "Projek Stigters"
-
-#: scene/3d/baked_lightmap.cpp
msgid "Finding meshes and lights"
msgstr ""
@@ -20273,6 +21646,16 @@ msgid "Ring Axis"
msgstr ""
#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Rotate Y"
+msgstr "Konstant"
+
+#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Disable Z"
+msgstr "Afgeskaskel"
+
+#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
msgid "Flatness"
msgstr ""
@@ -20309,16 +21692,11 @@ msgstr ""
msgid "Dynamic Range"
msgstr ""
-#: scene/3d/gi_probe.cpp
+#: scene/3d/gi_probe.cpp scene/3d/light.cpp
msgid "Normal Bias"
msgstr ""
#: scene/3d/gi_probe.cpp
-#, fuzzy
-msgid "Compress"
-msgstr "Komponente"
-
-#: scene/3d/gi_probe.cpp
msgid "Plotting Meshes"
msgstr ""
@@ -20344,15 +21722,28 @@ msgid "Subdiv"
msgstr ""
#: scene/3d/light.cpp
+msgid "Indirect Energy"
+msgstr ""
+
+#: scene/3d/light.cpp
msgid "Negative"
msgstr ""
#: scene/3d/light.cpp
#, fuzzy
+msgid "Specular"
+msgstr "Wissel Modus"
+
+#: scene/3d/light.cpp
+#, fuzzy
msgid "Bake Mode"
msgstr "Wissel Modus"
#: scene/3d/light.cpp
+msgid "Contact"
+msgstr ""
+
+#: scene/3d/light.cpp
#, fuzzy
msgid "Reverse Cull Face"
msgstr "Herstel Bus Volume"
@@ -20363,11 +21754,31 @@ msgid "Directional Shadow"
msgstr "Beskrywing"
#: scene/3d/light.cpp
+#, fuzzy
+msgid "Split 1"
+msgstr "Wysig Nodus Kurwe"
+
+#: scene/3d/light.cpp
+#, fuzzy
+msgid "Split 2"
+msgstr "Wysig Nodus Kurwe"
+
+#: scene/3d/light.cpp
+#, fuzzy
+msgid "Split 3"
+msgstr "Wysig Nodus Kurwe"
+
+#: scene/3d/light.cpp
msgid "Blend Splits"
msgstr ""
#: scene/3d/light.cpp
#, fuzzy
+msgid "Bias Split Scale"
+msgstr "Deursoek Hulp"
+
+#: scene/3d/light.cpp
+#, fuzzy
msgid "Depth Range"
msgstr "Wissel Modus"
@@ -20393,6 +21804,11 @@ msgstr ""
msgid "Spot"
msgstr ""
+#: scene/3d/light.cpp
+#, fuzzy
+msgid "Angle Attenuation"
+msgstr "Animasie Zoem."
+
#: scene/3d/mesh_instance.cpp
msgid "Software Skinning"
msgstr ""
@@ -20512,6 +21928,63 @@ msgid "Axis Lock"
msgstr ""
#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Linear X"
+msgstr "Lineêr"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Linear Y"
+msgstr "Lineêr"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Linear Z"
+msgstr "Lineêr"
+
+#: scene/3d/physics_body.cpp
+msgid "Angular X"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Angular Y"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Angular Z"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Motion X"
+msgstr "Alle Seleksie"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Motion Y"
+msgstr "Alle Seleksie"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Motion Z"
+msgstr "Alle Seleksie"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Move Lock X"
+msgstr "Skuif Byvoeg Sleutel"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Move Lock Y"
+msgstr "Skuif Byvoeg Sleutel"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Move Lock Z"
+msgstr "Skuif Byvoeg Sleutel"
+
+#: scene/3d/physics_body.cpp
msgid "Body Offset"
msgstr ""
@@ -20545,6 +22018,14 @@ msgid "Exclude Nodes"
msgstr "Skrap"
#: scene/3d/physics_joint.cpp
+msgid "Params"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Impulse Clamp"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit"
msgstr ""
@@ -20556,6 +22037,55 @@ msgstr ""
msgid "Lower"
msgstr ""
+#: scene/3d/physics_joint.cpp scene/3d/vehicle_body.cpp
+#, fuzzy
+msgid "Relaxation"
+msgstr "Opnoemings:"
+
+#: scene/3d/physics_joint.cpp
+msgid "Motor"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Target Velocity"
+msgstr "Lineêr"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Max Impulse"
+msgstr "Waarde:"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit"
+msgstr "Lineêr"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Upper Distance"
+msgstr "Installeer"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Lower Distance"
+msgstr "Installeer"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Restitution"
+msgstr "Beskrywing:"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motion"
+msgstr "Lineêr"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Ortho"
+msgstr "Lineêr"
+
#: scene/3d/physics_joint.cpp
msgid "Upper Angle"
msgstr ""
@@ -20565,6 +22095,16 @@ msgid "Lower Angle"
msgstr ""
#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Angular Motion"
+msgstr "Animasie Zoem."
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Angular Ortho"
+msgstr "Max. Hoekige Fout:"
+
+#: scene/3d/physics_joint.cpp
msgid "Swing Span"
msgstr ""
@@ -20573,17 +22113,98 @@ msgid "Twist Span"
msgstr ""
#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit X"
+msgstr "Lineêr"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motor X"
+msgstr "Lineêr"
+
+#: scene/3d/physics_joint.cpp
+msgid "Force Limit"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Spring X"
+msgstr "Lineêr"
+
+#: scene/3d/physics_joint.cpp
+msgid "Equilibrium Point"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit X"
msgstr ""
#: scene/3d/physics_joint.cpp
+msgid "Erp"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Motor X"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Spring X"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit Y"
+msgstr "Lineêr"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motor Y"
+msgstr "Lineêr"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Spring Y"
+msgstr "Lineêr"
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit Y"
msgstr ""
#: scene/3d/physics_joint.cpp
+msgid "Angular Motor Y"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Spring Y"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit Z"
+msgstr "Lineêr"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motor Z"
+msgstr "Lineêr"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Spring Z"
+msgstr "Lineêr"
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit Z"
msgstr ""
+#: scene/3d/physics_joint.cpp
+msgid "Angular Motor Z"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Spring Z"
+msgstr ""
+
#: scene/3d/portal.cpp
msgid "The RoomManager should not be a child or grandchild of a Portal."
msgstr ""
@@ -20696,7 +22317,7 @@ msgstr ""
msgid "Use Default Simplify"
msgstr ""
-#: scene/3d/room.cpp
+#: scene/3d/room.cpp scene/3d/room_manager.cpp
msgid "Room Simplify"
msgstr ""
@@ -20734,6 +22355,13 @@ msgstr ""
msgid "Main"
msgstr ""
+#: scene/3d/room_manager.cpp scene/animation/animation_player.cpp
+#: scene/animation/animation_tree.cpp scene/animation/animation_tree_player.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+#, fuzzy
+msgid "Active"
+msgstr "Alle Seleksie"
+
#: scene/3d/room_manager.cpp
msgid "Roomlist"
msgstr ""
@@ -20757,6 +22385,50 @@ msgid "Gameplay"
msgstr ""
#: scene/3d/room_manager.cpp
+msgid "Gameplay Monitor"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "Use Secondary PVS"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Merge Meshes"
+msgstr "Eienskappe"
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Show Margins"
+msgstr "Deursoek Klasse"
+
+#: scene/3d/room_manager.cpp
+msgid "Debug Sprawl"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "Overlap Warning Threshold"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Preview Camera"
+msgstr "Voorskou:"
+
+#: scene/3d/room_manager.cpp
+msgid "Portal Depth Limit"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Default Portal Margin"
+msgstr "Voorskou:"
+
+#: scene/3d/room_manager.cpp
+msgid "Roaming Expansion Margin"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
msgid ""
"RoomList path is invalid.\n"
"Please check the RoomList branch has been assigned in the RoomManager."
@@ -20877,6 +22549,20 @@ msgstr ""
msgid "Billboard"
msgstr ""
+#: scene/3d/sprite_3d.cpp scene/resources/material.cpp
+#, fuzzy
+msgid "Transparent"
+msgstr "Oorgang"
+
+#: scene/3d/sprite_3d.cpp
+#, fuzzy
+msgid "Shaded"
+msgstr "Verander Skikking Waarde-Soort"
+
+#: scene/3d/sprite_3d.cpp
+msgid "Double Sided"
+msgstr ""
+
#: scene/3d/sprite_3d.cpp
msgid "Alpha Cut"
msgstr ""
@@ -20944,11 +22630,6 @@ msgstr ""
msgid "Max Force"
msgstr "Fout terwyl laai:"
-#: scene/3d/vehicle_body.cpp
-#, fuzzy
-msgid "Relaxation"
-msgstr "Opnoemings:"
-
#: scene/3d/visibility_notifier.cpp
msgid "AABB"
msgstr ""
@@ -21078,8 +22759,9 @@ msgid "Fadeout Time"
msgstr ""
#: scene/animation/animation_blend_tree.cpp
-msgid "autorestart_"
-msgstr ""
+#, fuzzy
+msgid "Auto Restart"
+msgstr "Anim Voeg Sleutel by"
#: scene/animation/animation_blend_tree.cpp
#, fuzzy
@@ -21162,13 +22844,6 @@ msgstr "Beskrywing:"
msgid "Default Blend Time"
msgstr "Verander Skikking Waarde-Soort"
-#: scene/animation/animation_player.cpp scene/animation/animation_tree.cpp
-#: scene/animation/animation_tree_player.cpp
-#: servers/audio/effects/audio_effect_delay.cpp
-#, fuzzy
-msgid "Active"
-msgstr "Alle Seleksie"
-
#: scene/animation/animation_player.cpp
msgid "Method Call Mode"
msgstr ""
@@ -21290,10 +22965,6 @@ msgstr "Skrap"
msgid "Max Iterations"
msgstr "Maak Funksie"
-#: scene/animation/tween.cpp scene/resources/texture.cpp
-msgid "Repeat"
-msgstr ""
-
#: scene/animation/tween.cpp
msgid "Playback Process Mode"
msgstr ""
@@ -21322,20 +22993,6 @@ msgstr "Wissel Modus"
msgid "Alignment"
msgstr ""
-#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
-#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
-#: scene/resources/style_box.cpp
-#, fuzzy
-msgid "Horizontal"
-msgstr "Skep Vouer"
-
-#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
-#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
-#: scene/resources/style_box.cpp
-#, fuzzy
-msgid "Vertical"
-msgstr "Eienskappe"
-
#: scene/gui/base_button.cpp
msgid "Shortcut In Tooltip"
msgstr ""
@@ -21429,10 +23086,6 @@ msgid "HSV"
msgstr ""
#: scene/gui/color_picker.cpp
-msgid "Raw"
-msgstr ""
-
-#: scene/gui/color_picker.cpp
msgid "Switch between hexadecimal and code values."
msgstr ""
@@ -21490,6 +23143,31 @@ msgid "Focus"
msgstr "Fokus Pad"
#: scene/gui/control.cpp
+msgid "Neighbour Left"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Neighbour Top"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Neighbour Right"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Neighbour Bottom"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Next"
+msgstr "Volgende"
+
+#: scene/gui/control.cpp
+#, fuzzy
+msgid "Previous"
+msgstr "Voorskou:"
+
+#: scene/gui/control.cpp
msgid "Mouse"
msgstr ""
@@ -21525,7 +23203,7 @@ msgid "Dialog"
msgstr ""
#: scene/gui/dialogs.cpp
-msgid "Hide On Ok"
+msgid "Hide On OK"
msgstr ""
#: scene/gui/dialogs.cpp scene/gui/label.cpp
@@ -21618,7 +23296,7 @@ msgid "Timers"
msgstr "Tyd:"
#: scene/gui/item_list.cpp scene/gui/popup_menu.cpp scene/gui/tree.cpp
-msgid "Incremental Search Max Interval (msec)"
+msgid "Incremental Search Max Interval Msec"
msgstr ""
#: scene/gui/item_list.cpp scene/gui/tree.cpp
@@ -22168,6 +23846,26 @@ msgstr "Skrap"
msgid "Nine Patch Stretch"
msgstr "Skep Intekening"
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Left"
+msgstr "Wissel Modus"
+
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Top"
+msgstr "Wissel Modus"
+
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Right"
+msgstr "Wissel Modus"
+
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Bottom"
+msgstr "Wissel Modus"
+
#: scene/gui/tree.cpp
msgid "Custom Minimum Height"
msgstr ""
@@ -22205,7 +23903,7 @@ msgid "Paused"
msgstr ""
#: scene/gui/video_player.cpp
-msgid "Buffering (msec)"
+msgid "Buffering Msec"
msgstr ""
#: scene/gui/video_player.cpp
@@ -22532,6 +24230,22 @@ msgid "Shadow Atlas"
msgstr ""
#: scene/main/viewport.cpp
+msgid "Quad 0"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 1"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 2"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 3"
+msgstr ""
+
+#: scene/main/viewport.cpp
#, fuzzy
msgid "Canvas Transform"
msgstr "Anim Verander Transform"
@@ -22546,6 +24260,10 @@ msgid "Tooltip Delay (sec)"
msgstr ""
#: scene/register_scene_types.cpp
+msgid "Swap OK Cancel"
+msgstr ""
+
+#: scene/register_scene_types.cpp
msgid "Use hiDPI"
msgstr ""
@@ -22560,21 +24278,6 @@ msgid "Custom Font"
msgstr "Anim Dupliseer Sleutels"
#: scene/resources/audio_stream_sample.cpp
-#, fuzzy
-msgid "Loop Mode"
-msgstr "Wissel Modus"
-
-#: scene/resources/audio_stream_sample.cpp
-#, fuzzy
-msgid "Loop Begin"
-msgstr "Wissel Modus"
-
-#: scene/resources/audio_stream_sample.cpp
-#, fuzzy
-msgid "Loop End"
-msgstr "Wissel Modus"
-
-#: scene/resources/audio_stream_sample.cpp
#: servers/audio/effects/audio_stream_generator.cpp servers/audio_server.cpp
msgid "Mix Rate"
msgstr ""
@@ -22629,6 +24332,16 @@ msgid "Extra Spacing"
msgstr "Beskrywing:"
#: scene/resources/dynamic_font.cpp
+#, fuzzy
+msgid "Char"
+msgstr "Geldige karakters:"
+
+#: scene/resources/dynamic_font.cpp scene/resources/world.cpp
+#: scene/resources/world_2d.cpp
+msgid "Space"
+msgstr ""
+
+#: scene/resources/dynamic_font.cpp
msgid "Font"
msgstr ""
@@ -22848,6 +24561,43 @@ msgid "Glow"
msgstr ""
#: scene/resources/environment.cpp
+#, fuzzy
+msgid "Levels"
+msgstr "Ontwikkelaars"
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "1"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "2"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "3"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "4"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "5"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "6"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "7"
+msgstr ""
+
+#: scene/resources/environment.cpp
msgid "Bloom"
msgstr ""
@@ -22935,9 +24685,66 @@ msgid "Next Pass"
msgstr "Skuif Byvoeg Sleutel"
#: scene/resources/material.cpp
+msgid "Use Shadow To Opacity"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Unshaded"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Vertex Lighting"
+msgstr "Beskrywing"
+
+#: scene/resources/material.cpp
+msgid "No Depth Test"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Use Point Size"
+msgstr "Afhanklikheid Bewerker"
+
+#: scene/resources/material.cpp
+msgid "World Triplanar"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Fixed Size"
+msgstr "Afhanklikheid Bewerker"
+
+#: scene/resources/material.cpp
+msgid "Albedo Tex Force sRGB"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Do Not Receive Shadows"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Disable Ambient Light"
+msgstr "Afgeskaskel"
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Ensure Correct Normals"
+msgstr "Skep Intekening"
+
+#: scene/resources/material.cpp
msgid "Vertex Color"
msgstr ""
+#: scene/resources/material.cpp
+msgid "Use As Albedo"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Is sRGB"
+msgstr ""
+
#: scene/resources/material.cpp servers/visual_server.cpp
msgid "Parameters"
msgstr ""
@@ -22973,6 +24780,11 @@ msgid "Billboard Mode"
msgstr "Wissel Modus"
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Billboard Keep Scale"
+msgstr "Wissel Modus"
+
+#: scene/resources/material.cpp
msgid "Grow"
msgstr ""
@@ -22982,6 +24794,10 @@ msgid "Grow Amount"
msgstr "Skep Vouer"
#: scene/resources/material.cpp
+msgid "Use Alpha Scissor"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Alpha Scissor Threshold"
msgstr ""
@@ -23012,10 +24828,20 @@ msgid "Metallic Specular"
msgstr ""
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Metallic Texture"
+msgstr "Verwyder Seleksie"
+
+#: scene/resources/material.cpp
msgid "Metallic Texture Channel"
msgstr ""
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Roughness Texture"
+msgstr "Verwyder Seleksie"
+
+#: scene/resources/material.cpp
msgid "Roughness Texture Channel"
msgstr ""
@@ -23032,6 +24858,15 @@ msgid "Emission Operator"
msgstr ""
#: scene/resources/material.cpp
+msgid "Emission On UV2"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Emission Texture"
+msgstr "Verwyder Seleksie"
+
+#: scene/resources/material.cpp
msgid "NormalMap"
msgstr ""
@@ -23045,6 +24880,11 @@ msgstr ""
#: scene/resources/material.cpp
#, fuzzy
+msgid "Rim Texture"
+msgstr "Verwyder Seleksie"
+
+#: scene/resources/material.cpp
+#, fuzzy
msgid "Clearcoat"
msgstr "Vee uit"
@@ -23054,15 +24894,28 @@ msgid "Clearcoat Gloss"
msgstr "Vee uit"
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Clearcoat Texture"
+msgstr "Lede"
+
+#: scene/resources/material.cpp
msgid "Anisotropy"
msgstr ""
#: scene/resources/material.cpp
+msgid "Anisotropy Flowmap"
+msgstr ""
+
+#: scene/resources/material.cpp
#, fuzzy
msgid "Ambient Occlusion"
msgstr "Skep Intekening"
#: scene/resources/material.cpp
+msgid "On UV2"
+msgstr ""
+
+#: scene/resources/material.cpp
#, fuzzy
msgid "Texture Channel"
msgstr "Wissel Modus"
@@ -23100,6 +24953,11 @@ msgstr "Oorgang"
#: scene/resources/material.cpp
#, fuzzy
+msgid "Transmission Texture"
+msgstr "Oorgang"
+
+#: scene/resources/material.cpp
+#, fuzzy
msgid "Refraction"
msgstr "Opnoemings:"
@@ -23116,6 +24974,10 @@ msgid "UV1"
msgstr ""
#: scene/resources/material.cpp
+msgid "Triplanar"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Triplanar Sharpness"
msgstr ""
@@ -23319,6 +25181,16 @@ msgstr "Lede"
msgid "Point Count"
msgstr "Gunstelinge:"
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Scale Random"
+msgstr "Skaal Verhouding:"
+
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Scale Curve"
+msgstr "Wysig Nodus Kurwe"
+
#: scene/resources/physics_material.cpp
msgid "Rough"
msgstr ""
@@ -23376,10 +25248,6 @@ msgid "A"
msgstr ""
#: scene/resources/shader.cpp
-msgid "Code"
-msgstr ""
-
-#: scene/resources/shader.cpp
msgid "Custom Defines"
msgstr ""
@@ -23469,15 +25337,6 @@ msgstr ""
#: scene/resources/texture.cpp
#, fuzzy
-msgid "Storage"
-msgstr "Leêr word gebêre:"
-
-#: scene/resources/texture.cpp
-msgid "Lossy Quality"
-msgstr ""
-
-#: scene/resources/texture.cpp
-#, fuzzy
msgid "Load Path"
msgstr "Laai Verstek"
@@ -23600,10 +25459,6 @@ msgstr ""
msgid "Fallback Environment"
msgstr ""
-#: scene/resources/world.cpp scene/resources/world_2d.cpp
-msgid "Space"
-msgstr ""
-
#: scene/resources/world.cpp
msgid "Scenario"
msgstr ""
@@ -23679,10 +25534,37 @@ msgstr ""
msgid "Wet"
msgstr ""
-#: servers/audio/effects/audio_effect_compressor.cpp
-msgid "Threshold"
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "Voice"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+msgid "Delay (ms)"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_phaser.cpp
+msgid "Rate Hz"
msgstr ""
+#: servers/audio/effects/audio_effect_chorus.cpp
+#, fuzzy
+msgid "Depth (ms)"
+msgstr "Wissel Modus"
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+msgid "Level dB"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+#: servers/audio/effects/audio_effect_panner.cpp
+#, fuzzy
+msgid "Pan"
+msgstr "Verpak"
+
#: servers/audio/effects/audio_effect_compressor.cpp
#: servers/audio/effects/audio_effect_filter.cpp
msgid "Gain"
@@ -23705,20 +25587,6 @@ msgid "Tap 1"
msgstr ""
#: servers/audio/effects/audio_effect_delay.cpp
-msgid "Delay (ms)"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_delay.cpp
-msgid "Level dB"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_delay.cpp
-#: servers/audio/effects/audio_effect_panner.cpp
-#, fuzzy
-msgid "Pan"
-msgstr "Verpak"
-
-#: servers/audio/effects/audio_effect_delay.cpp
msgid "Tap 2"
msgstr ""
@@ -23778,10 +25646,6 @@ msgstr ""
msgid "Range Max Hz"
msgstr ""
-#: servers/audio/effects/audio_effect_phaser.cpp
-msgid "Rate Hz"
-msgstr ""
-
#: servers/audio/effects/audio_effect_pitch_shift.cpp
msgid "Oversampling"
msgstr ""
@@ -23797,7 +25661,7 @@ msgid "Predelay"
msgstr ""
#: servers/audio/effects/audio_effect_reverb.cpp
-msgid "(msec)"
+msgid "Msec"
msgstr ""
#: servers/audio/effects/audio_effect_reverb.cpp
diff --git a/editor/translations/ar.po b/editor/translations/ar.po
index 439ed3f36d..fb42e100df 100644
--- a/editor/translations/ar.po
+++ b/editor/translations/ar.po
@@ -79,7 +79,7 @@ msgstr ""
"&& n%100<=10 ? 3 : n%100>=11 ? 4 : 5;\n"
"X-Generator: Weblate 4.12-dev\n"
-#: core/bind/core_bind.cpp
+#: core/bind/core_bind.cpp main/main.cpp
msgid "Tablet Driver"
msgstr ""
@@ -183,8 +183,8 @@ msgstr "مكان الرصيÙ"
#: core/bind/core_bind.cpp editor/editor_settings.cpp main/main.cpp
#: modules/gdscript/gdscript_editor.cpp modules/gridmap/grid_map.cpp
#: modules/mono/csharp_script.cpp modules/visual_script/visual_script_nodes.cpp
-#: scene/2d/tile_map.cpp scene/3d/camera.cpp scene/gui/control.cpp
-#: scene/gui/graph_edit.cpp scene/main/viewport.cpp
+#: scene/2d/tile_map.cpp scene/3d/camera.cpp scene/3d/light.cpp
+#: scene/gui/control.cpp scene/gui/graph_edit.cpp scene/main/viewport.cpp
#: scene/resources/dynamic_font.cpp scene/resources/navigation_mesh.cpp
#: scene/resources/primitive_meshes.cpp scene/resources/sky.cpp
#: scene/resources/style_box.cpp scene/resources/texture.cpp
@@ -289,8 +289,7 @@ msgid "Data"
msgstr "مع البيانات"
#: core/io/file_access_network.cpp core/register_core_types.cpp
-#: editor/editor_settings.cpp editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp main/main.cpp
+#: editor/editor_settings.cpp main/main.cpp
#: modules/gdscript/language_server/gdscript_language_server.cpp
#, fuzzy
msgid "Network"
@@ -574,9 +573,10 @@ msgstr "إعداد Ù…ÙØ³Ø¨Ù‚"
msgid "Relative"
msgstr "نسبية المحاذاة"
-#: core/os/input_event.cpp scene/2d/camera_2d.cpp
-#: scene/3d/interpolated_camera.cpp scene/animation/animation_player.cpp
-#: scene/resources/environment.cpp
+#: core/os/input_event.cpp scene/2d/camera_2d.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/interpolated_camera.cpp
+#: scene/animation/animation_player.cpp scene/resources/environment.cpp
+#: scene/resources/particles_material.cpp
#, fuzzy
msgid "Speed"
msgstr "السرعة:"
@@ -626,8 +626,9 @@ msgstr "اقترا٠التعديلا"
msgid "Pitch"
msgstr "حدّة:"
-#: core/os/input_event.cpp scene/2d/physics_body_2d.cpp
-#: scene/3d/physics_body.cpp
+#: core/os/input_event.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/physics_body_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/3d/physics_body.cpp scene/resources/particles_material.cpp
#, fuzzy
msgid "Velocity"
msgstr "تحريك المسار لليمين"
@@ -646,6 +647,8 @@ msgid "Controller Value"
msgstr ""
#: core/project_settings.cpp editor/editor_node.cpp main/main.cpp
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/windows/export/export.cpp
#, fuzzy
msgid "Application"
msgstr "إجراء"
@@ -664,13 +667,16 @@ msgstr "إعدادات المشروع..."
#: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp
#: editor/editor_plugin_settings.cpp editor/editor_profiler.cpp
#: editor/project_manager.cpp editor/settings_config_dialog.cpp
-#: modules/gdnative/nativescript/nativescript.cpp scene/2d/area_2d.cpp
-#: scene/3d/area.cpp scene/main/node.cpp
+#: modules/gdnative/nativescript/nativescript.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/osx/export/export.cpp scene/2d/area_2d.cpp scene/3d/area.cpp
+#: scene/main/node.cpp
msgid "Name"
msgstr "الأسم"
#: core/project_settings.cpp editor/editor_help.cpp
-#: modules/visual_script/visual_script_nodes.cpp
+#: modules/visual_script/visual_script_nodes.cpp platform/uwp/export/export.cpp
+#: platform/windows/export/export.cpp
msgid "Description"
msgstr "الوصÙ"
@@ -708,7 +714,7 @@ msgid "Custom User Dir Name"
msgstr ""
#: core/project_settings.cpp editor/animation_track_editor.cpp
-#: editor/editor_audio_buses.cpp servers/audio_server.cpp
+#: editor/editor_audio_buses.cpp main/main.cpp servers/audio_server.cpp
msgid "Audio"
msgstr "الصوت"
@@ -876,10 +882,13 @@ msgstr "مرشحات:"
msgid "Sharpen Intensity"
msgstr ""
-#: core/project_settings.cpp editor/editor_node.cpp editor/editor_settings.cpp
-#: editor/plugins/script_editor_plugin.cpp editor/project_export.cpp
-#: main/main.cpp modules/gdscript/gdscript.cpp
-#: modules/visual_script/visual_script.cpp scene/3d/room_manager.cpp
+#: core/project_settings.cpp editor/editor_export.cpp editor/editor_node.cpp
+#: editor/editor_settings.cpp editor/plugins/script_editor_plugin.cpp
+#: editor/project_export.cpp main/main.cpp modules/gdscript/gdscript.cpp
+#: modules/visual_script/visual_script.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp scene/3d/room_manager.cpp
#: scene/main/scene_tree.cpp scene/resources/shape_2d.cpp
#: servers/visual_server.cpp
msgid "Debug"
@@ -1115,6 +1124,7 @@ msgid "Subsurface Scattering"
msgstr ""
#: drivers/gles3/rasterizer_scene_gles3.cpp
+#: editor/import/resource_importer_texture.cpp
#: editor/plugins/spatial_editor_plugin.cpp modules/gltf/gltf_node.cpp
#: modules/gridmap/grid_map.cpp scene/2d/cpu_particles_2d.cpp
#: scene/2d/node_2d.cpp scene/2d/parallax_layer.cpp scene/2d/polygon_2d.cpp
@@ -1413,6 +1423,7 @@ msgid "Editors"
msgstr "المحرّر"
#: editor/animation_track_editor.cpp editor/editor_settings.cpp
+#: editor/import/resource_importer_scene.cpp
#: editor/plugins/animation_player_editor_plugin.cpp editor/scene_tree_dock.cpp
#: scene/2d/animated_sprite.cpp scene/2d/cpu_particles_2d.cpp
#: scene/2d/sprite.cpp scene/3d/cpu_particles.cpp scene/3d/sprite_3d.cpp
@@ -1643,14 +1654,14 @@ msgstr "قيمة خطوة الحركة."
msgid "Seconds"
msgstr "ثواني"
-#: editor/animation_track_editor.cpp
+#: editor/animation_track_editor.cpp editor/import/resource_importer_scene.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp main/main.cpp
#: scene/resources/texture.cpp
msgid "FPS"
msgstr "إطار خلال ثانية"
#: editor/animation_track_editor.cpp editor/editor_plugin_settings.cpp
-#: editor/editor_resource_picker.cpp
+#: editor/editor_resource_picker.cpp editor/import/resource_importer_wav.cpp
#: editor/plugins/polygon_2d_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
@@ -2610,7 +2621,9 @@ msgid "Remove Autoload"
msgstr "ازالة التحميل التلقائي"
#: editor/editor_autoload_settings.cpp editor/editor_plugin_settings.cpp
-#: modules/gdscript/gdscript.cpp scene/2d/polygon_2d.cpp scene/3d/area.cpp
+#: modules/gdscript/gdscript.cpp platform/android/export/export_plugin.cpp
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#: scene/2d/polygon_2d.cpp scene/3d/area.cpp scene/3d/physics_joint.cpp
#: scene/3d/reflection_probe.cpp scene/main/canvas_layer.cpp
#: scene/resources/material.cpp servers/visual_server.cpp
msgid "Enable"
@@ -2779,6 +2792,59 @@ msgstr ""
#: editor/editor_export.cpp platform/android/export/export_plugin.cpp
#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Custom Template"
+msgstr "مظهر المحرر/برنامج-جودوه"
+
+#: editor/editor_export.cpp editor/project_export.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp
+msgid "Release"
+msgstr "الإصدار"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Binary Format"
+msgstr "Ù…ÙØ´ØºÙ‘Ù„ اللون."
+
+#: editor/editor_export.cpp
+msgid "64 Bits"
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Embed PCK"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Texture Format"
+msgstr "منطقة النقش TextureRegion"
+
+#: editor/editor_export.cpp
+msgid "BPTC"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "S3TC"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "ETC"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "ETC2"
+msgstr ""
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "No BPTC Fallbacks"
+msgstr "اجبار ارتداد(احتياط) التظليل"
+
+#: editor/editor_export.cpp platform/android/export/export_plugin.cpp
+#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
msgid "Custom debug template not found."
msgstr "نمودج تصحيح الأخطاء غير موجود."
@@ -2954,6 +3020,7 @@ msgid "Make Current"
msgstr "إجعل الحالي"
#: editor/editor_feature_profile.cpp editor/editor_node.cpp
+#: editor/import/resource_importer_scene.cpp
#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
msgid "Import"
msgstr "استيراد"
@@ -3081,8 +3148,11 @@ msgstr "تم بشكل ناجح!"
msgid "Display Mode"
msgstr "وضع التشغيل:"
-#: editor/editor_file_dialog.cpp main/main.cpp modules/csg/csg_shape.cpp
-#: modules/visual_script/visual_script_nodes.cpp
+#: editor/editor_file_dialog.cpp
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+#: editor/import/resource_importer_wav.cpp main/main.cpp
+#: modules/csg/csg_shape.cpp modules/visual_script/visual_script_nodes.cpp
#: modules/visual_script/visual_script_yield_nodes.cpp scene/2d/light_2d.cpp
#: scene/2d/physics_body_2d.cpp scene/2d/tile_map.cpp
#: scene/3d/baked_lightmap.cpp scene/3d/light.cpp scene/3d/physics_body.cpp
@@ -3219,7 +3289,9 @@ msgstr "إعادة إستيراد الأصول"
msgid "Reimport Missing Imported Files"
msgstr ""
-#: editor/editor_help.cpp
+#: editor/editor_help.cpp scene/2d/camera_2d.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/resources/dynamic_font.cpp
+#: scene/resources/style_box.cpp
msgid "Top"
msgstr "Ùوق"
@@ -3271,6 +3343,7 @@ msgid "Fonts"
msgstr "الخطوط"
#: editor/editor_help.cpp editor/plugins/theme_editor_plugin.cpp
+#: platform/iphone/export/export.cpp
msgid "Icons"
msgstr "الأيقونات"
@@ -3439,7 +3512,9 @@ msgstr "تثبيت القيمة ÙŠØ¬Ù’Ø¨ÙØ±ÙŽÙ‡Ù على Ø­ÙØ¸Ù‡Ø§ حتى لو
msgid "Pin value [Disabled because '%s' is editor-only]"
msgstr "القيمة المثبتة [معطلة لان '%s' هو/هي ÙÙŠ المحرر-Ùقط]"
-#: editor/editor_inspector.cpp editor/scene_tree_dock.cpp
+#: editor/editor_inspector.cpp
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+#: editor/scene_tree_dock.cpp
#: modules/visual_script/visual_script_func_nodes.cpp
#: modules/visual_script/visual_script_nodes.cpp
#: modules/visual_script/visual_script_property_selector.cpp
@@ -3776,6 +3851,16 @@ msgid "Quick Open Script..."
msgstr "ÙØªØ­ سريع للكود..."
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Save & Reload"
+msgstr "Ø­ÙØ¸ Ùˆ إعادة تشغيل"
+
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Save changes to '%s' before reloading?"
+msgstr "هل تريد Ø­ÙØ¸ التغييرات إلي'%s' قبل الإغلاق؟"
+
+#: editor/editor_node.cpp
msgid "Save & Close"
msgstr "Ø­ÙØ¸ Ùˆ إغلاق"
@@ -3892,6 +3977,11 @@ msgid "Open Project Manager?"
msgstr "ÙØªØ­ مدير المشروع؟"
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Save changes to the following scene(s) before reloading?"
+msgstr "هل تريد Ø­ÙØ¸ التغييرات للمشاهد التالية قبل الخروج؟"
+
+#: editor/editor_node.cpp
msgid "Save & Quit"
msgstr "Ø­ÙØ¸ Ùˆ خروج"
@@ -4164,8 +4254,8 @@ msgstr "تحديث التغيرات المهمة"
#: editor/editor_node.cpp
#, fuzzy
-msgid "Translate Properties"
-msgstr "إلصق الخاصيات"
+msgid "Localize Settings"
+msgstr "توطين"
#: editor/editor_node.cpp
#, fuzzy
@@ -4182,8 +4272,8 @@ msgstr "Ù…ÙØªÙحص"
#: editor/editor_node.cpp
#, fuzzy
-msgid "Capitalize Properties"
-msgstr "إلصق الخاصيات"
+msgid "Default Property Name Style"
+msgstr "مسار المشروع:"
#: editor/editor_node.cpp
msgid "Default Float Step"
@@ -4785,7 +4875,9 @@ msgstr "Ø§Ù„Ø¥Ø¶Ø§ÙØ§Øª Ø§Ù„Ù…ÙØ«Ø¨ØªØ©:"
msgid "Update"
msgstr "تحديث"
-#: editor/editor_plugin_settings.cpp
+#: editor/editor_plugin_settings.cpp platform/android/export/export_plugin.cpp
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp
msgid "Version"
msgstr "الإصدار"
@@ -5819,7 +5911,7 @@ msgstr "على كامل المستطيل"
msgid "Rect Custom Position"
msgstr "حدد موقع خروج الإنحناء"
-#: editor/editor_settings.cpp
+#: editor/editor_settings.cpp platform/android/export/export_plugin.cpp
msgid "Screen"
msgstr ""
@@ -5846,6 +5938,19 @@ msgid "Editor SSL Certificates"
msgstr "إعدادات Ø§Ù„Ù…ÙØ¹Ø¯Ù„"
#: editor/editor_settings.cpp
+msgid "HTTP Proxy"
+msgstr ""
+
+#: editor/editor_settings.cpp
+msgid "Host"
+msgstr ""
+
+#: editor/editor_settings.cpp editor/fileserver/editor_file_server.cpp
+#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp
+msgid "Port"
+msgstr ""
+
+#: editor/editor_settings.cpp
msgid "Project Manager"
msgstr "مدير المشروع"
@@ -5888,7 +5993,8 @@ msgstr ""
msgid "String Color"
msgstr "تخزين الملÙ:"
-#: editor/editor_settings.cpp
+#: editor/editor_settings.cpp platform/javascript/export/export.cpp
+#: platform/uwp/export/export.cpp
#, fuzzy
msgid "Background Color"
msgstr "لون خلÙية غير صالح."
@@ -6067,22 +6173,6 @@ msgid "Starting the download..."
msgstr "الشروع بالتنزيل..."
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "HTTP Proxy"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Host"
-msgstr ""
-
-#: editor/export_template_manager.cpp editor/fileserver/editor_file_server.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp main/main.cpp
-#: modules/mono/mono_gd/gd_mono.cpp
-msgid "Port"
-msgstr ""
-
-#: editor/export_template_manager.cpp
msgid "Error requesting URL:"
msgstr "خطأ ÙÙŠ طلب الرابط:"
@@ -6332,6 +6422,7 @@ msgstr ""
#: editor/fileserver/editor_file_server.cpp
#: editor/plugins/version_control_editor_plugin.cpp
+#: platform/uwp/export/export.cpp platform/windows/export/export.cpp
msgid "Password"
msgstr "كلمة المرور"
@@ -6707,6 +6798,117 @@ msgstr ""
msgid "Use Ambient"
msgstr ""
+#: editor/import/resource_importer_bitmask.cpp
+#, fuzzy
+msgid "Create From"
+msgstr "أنشئ مجلد"
+
+#: editor/import/resource_importer_bitmask.cpp
+#: servers/audio/effects/audio_effect_compressor.cpp
+msgid "Threshold"
+msgstr ""
+
+#: editor/import/resource_importer_csv_translation.cpp
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_scene.cpp
+#: editor/import/resource_importer_texture.cpp
+#: editor/import/resource_importer_wav.cpp scene/3d/gi_probe.cpp
+#, fuzzy
+msgid "Compress"
+msgstr "مكونات"
+
+#: editor/import/resource_importer_csv_translation.cpp
+msgid "Delimiter"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+msgid "No BPTC If RGB"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/sprite_3d.cpp
+#: scene/resources/material.cpp scene/resources/particles_material.cpp
+#: scene/resources/texture.cpp
+msgid "Flags"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/animation/tween.cpp
+#: scene/resources/texture.cpp
+msgid "Repeat"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/2d/light_2d.cpp
+#: scene/gui/control.cpp scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Filter"
+msgstr "مرشحات:"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Mipmaps"
+msgstr "الإشارات"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+msgid "Anisotropic"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+msgid "sRGB"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#, fuzzy
+msgid "Slices"
+msgstr "الاقتطاع التلقائي"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
+#: scene/resources/style_box.cpp
+#, fuzzy
+msgid "Horizontal"
+msgstr "عَرضياً:"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
+#: scene/resources/style_box.cpp
+#, fuzzy
+msgid "Vertical"
+msgstr "شاقولياً:"
+
+#: editor/import/resource_importer_obj.cpp
+#, fuzzy
+msgid "Generate Tangents"
+msgstr "قم بتوليد نقاط"
+
+#: editor/import/resource_importer_obj.cpp
+#, fuzzy
+msgid "Scale Mesh"
+msgstr "وضع التحجيم"
+
+#: editor/import/resource_importer_obj.cpp
+#, fuzzy
+msgid "Offset Mesh"
+msgstr "Ø§Ù„Ù…ÙØ¹Ø§Ø¯Ù„:"
+
+#: editor/import/resource_importer_obj.cpp
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Octahedral Compression"
+msgstr "تحديد التعبير"
+
+#: editor/import/resource_importer_obj.cpp
+#, fuzzy
+msgid "Optimize Mesh Flags"
+msgstr "الحجم: "
+
#: editor/import/resource_importer_scene.cpp
msgid "Import as Single Scene"
msgstr "إستيراد كمشهد واحد"
@@ -6747,6 +6949,156 @@ msgstr "إستيراد علي هيئة مشاهد متعددة"
msgid "Import as Multiple Scenes+Materials"
msgstr "إستيراد علي هيئة مشاهد + موارد متعددة"
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Nodes"
+msgstr "وحدة"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Root Type"
+msgstr "أرجعْ"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Root Name"
+msgstr "من Ø¨ÙØ¹Ø¯"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Root Scale"
+msgstr "المقياس"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Custom Script"
+msgstr "قص العÙقد"
+
+#: editor/import/resource_importer_scene.cpp scene/resources/texture.cpp
+#, fuzzy
+msgid "Storage"
+msgstr "تخزين الملÙ:"
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Use Legacy Names"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+#, fuzzy
+msgid "Materials"
+msgstr "تغيرات المادة:"
+
+#: editor/import/resource_importer_scene.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Location"
+msgstr "توطين"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Keep On Reimport"
+msgstr "إعادة الاستيراد"
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+#, fuzzy
+msgid "Meshes"
+msgstr "مجسّم"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Ensure Tangents"
+msgstr "تعديل مماس الإنحناء"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Light Baking"
+msgstr "طبخ (إعداد) خرائط الضوء"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Lightmap Texel Size"
+msgstr "طبخ/تجهيز-خريطة-الاضاءة"
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+msgid "Skins"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Use Named Skins"
+msgstr "استخدام محاذاة التحجيم"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "External Files"
+msgstr "Ø¥ÙØªØ­ ملÙ"
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Store In Subdir"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Filter Script"
+msgstr "تشريح النصوص البرمجية"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Keep Custom Tracks"
+msgstr "التحوّل"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Optimizer"
+msgstr "تحسين"
+
+#: editor/import/resource_importer_scene.cpp main/main.cpp
+#: modules/mono/mono_gd/gd_mono.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp scene/2d/camera_2d.cpp scene/2d/light_2d.cpp
+#: scene/2d/navigation_polygon.cpp scene/2d/ray_cast_2d.cpp scene/2d/sprite.cpp
+#: scene/2d/y_sort.cpp scene/3d/audio_stream_player_3d.cpp
+#: scene/3d/baked_lightmap.cpp scene/3d/interpolated_camera.cpp
+#: scene/3d/light.cpp scene/3d/navigation_mesh_instance.cpp
+#: scene/3d/physics_joint.cpp scene/3d/ray_cast.cpp scene/3d/sprite_3d.cpp
+#: scene/gui/graph_edit.cpp scene/gui/rich_text_label.cpp
+#: scene/resources/curve.cpp scene/resources/environment.cpp
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Enabled"
+msgstr "ØªÙØ¹ÙŠÙ„"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Max Linear Error"
+msgstr "أقصي أخطاء خطية:"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Max Angular Error"
+msgstr "أقصي أخطاء زواية:"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Max Angle"
+msgstr "القيمة"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Remove Unused Tracks"
+msgstr "إزالة مسار التحريك"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Clips"
+msgstr "مقاطع الرسوم المتحركة"
+
+#: editor/import/resource_importer_scene.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/particles_2d.cpp scene/3d/area.cpp scene/3d/cpu_particles.cpp
+#: scene/3d/particles.cpp scene/resources/environment.cpp
+#, fuzzy
+msgid "Amount"
+msgstr "الكمية:"
+
#: editor/import/resource_importer_scene.cpp
#: editor/plugins/mesh_library_editor_plugin.cpp
msgid "Import Scene"
@@ -6788,12 +7140,149 @@ msgstr "هل قمت بإرجاع كائن مشتق من العقدة ÙÙŠ دال
msgid "Saving..."
msgstr "جاري Ø§Ù„Ø­ÙØ¸..."
+#: editor/import/resource_importer_texture.cpp scene/resources/texture.cpp
+msgid "Lossy Quality"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "HDR Mode"
+msgstr "تحديد الوضع"
+
+#: editor/import/resource_importer_texture.cpp
+msgid "BPTC LDR"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/mesh_instance_2d.cpp scene/2d/multimesh_instance_2d.cpp
+#: scene/2d/particles_2d.cpp scene/2d/sprite.cpp scene/resources/style_box.cpp
+msgid "Normal Map"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Process"
+msgstr "المعالجة-اللاحقة Post-Process"
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Fix Alpha Border"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Premult Alpha"
+msgstr "تعديل Ù…ÙØªØ¹Ø¯Ø¯ السطوح"
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Hdr As Srgb"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Invert Color"
+msgstr "رأس"
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Normal Map Invert Y"
+msgstr "حجم عشوائي:"
+
+#: editor/import/resource_importer_texture.cpp
+#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
+#: scene/audio/audio_stream_player.cpp scene/gui/video_player.cpp
+msgid "Stream"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Size Limit"
+msgstr "الحجم: "
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Detect 3D"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "SVG"
+msgstr "HSV"
+
#: editor/import/resource_importer_texture.cpp
msgid ""
"Warning, no suitable PC VRAM compression enabled in Project Settings. This "
"texture will not display correctly on PC."
msgstr ""
+#: editor/import/resource_importer_texture_atlas.cpp
+#, fuzzy
+msgid "Atlas File"
+msgstr "حجم الخطوط:"
+
+#: editor/import/resource_importer_texture_atlas.cpp
+#, fuzzy
+msgid "Import Mode"
+msgstr "وضع التصدير:"
+
+#: editor/import/resource_importer_texture_atlas.cpp
+#, fuzzy
+msgid "Crop To Region"
+msgstr "تحديد منطقة البلاط"
+
+#: editor/import/resource_importer_texture_atlas.cpp
+msgid "Trim Alpha Border From Region"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp scene/2d/physics_body_2d.cpp
+#, fuzzy
+msgid "Force"
+msgstr "أنشر بإجبار"
+
+#: editor/import/resource_importer_wav.cpp
+msgid "8 Bit"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp main/main.cpp
+#: modules/mono/editor/csharp_project.cpp modules/mono/mono_gd/gd_mono.cpp
+msgid "Mono"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+#, fuzzy
+msgid "Max Rate"
+msgstr "عقدة الخلط"
+
+#: editor/import/resource_importer_wav.cpp
+#, fuzzy
+msgid "Max Rate Hz"
+msgstr "عقدة الخلط"
+
+#: editor/import/resource_importer_wav.cpp
+msgid "Trim"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+#, fuzzy
+msgid "Normalize"
+msgstr "البنية (اللاحقة)"
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+#, fuzzy
+msgid "Loop Mode"
+msgstr "وضع التحريك"
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+#, fuzzy
+msgid "Loop Begin"
+msgstr "وضع التحريك"
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+#, fuzzy
+msgid "Loop End"
+msgstr "وضع التحريك"
+
#: editor/import_defaults_editor.cpp
msgid "Select Importer"
msgstr "حدد المستورد"
@@ -6866,6 +7355,29 @@ msgid "Failed to load resource."
msgstr "ÙØ´Ù„ تحميل المورد."
#: editor/inspector_dock.cpp
+#, fuzzy
+msgid "Property Name Style"
+msgstr "اسم المشروع:"
+
+#: editor/inspector_dock.cpp scene/gui/color_picker.cpp
+msgid "Raw"
+msgstr "خام"
+
+#: editor/inspector_dock.cpp
+#, fuzzy
+msgid "Capitalized"
+msgstr "تكبير الحرو٠Capitalize"
+
+#: editor/inspector_dock.cpp
+#, fuzzy
+msgid "Localized"
+msgstr "محلي"
+
+#: editor/inspector_dock.cpp
+msgid "Localization not available for current language."
+msgstr ""
+
+#: editor/inspector_dock.cpp
msgid "Copy Properties"
msgstr "إنسخ الخاصيات"
@@ -7914,18 +8426,26 @@ msgid "License (Z-A)"
msgstr "الرخصة (ي-أ)"
#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgctxt "Pagination"
msgid "First"
msgstr "الأول"
-#: editor/plugins/asset_library_editor_plugin.cpp scene/gui/control.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgctxt "Pagination"
msgid "Previous"
msgstr "السابق"
-#: editor/plugins/asset_library_editor_plugin.cpp scene/gui/control.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgctxt "Pagination"
msgid "Next"
msgstr "التالي"
#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgctxt "Pagination"
msgid "Last"
msgstr "الأخير"
@@ -8168,19 +8688,19 @@ msgstr ""
"عندما يكون ÙØ¹Ø§Ù„اً، إن تحريك عÙقد التحكم سيغير نقطة التثبيت anchors الخاص بها "
"بدلاً من الهوامش."
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Top Left"
msgstr "ÙÙŠ الأعلى يساراً"
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Top Right"
msgstr "ÙÙŠ الأعلى يميناً"
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Bottom Right"
msgstr "ÙÙŠ الأسÙÙ„ يميناً"
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Bottom Left"
msgstr "ÙÙŠ الأسÙÙ„ يساراً"
@@ -8891,6 +9411,19 @@ msgstr "طبخ مجس GI"
msgid "Gradient Edited"
msgstr "التدرج Ø§Ù„Ù…ÙØ­Ø±Ø±"
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+msgid "Swap GradientTexture2D Fill Points"
+msgstr ""
+
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+msgid "Swap Gradient Fill Points"
+msgstr ""
+
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+#, fuzzy
+msgid "Toggle Grid Snap"
+msgstr "أظهر المود"
+
#: editor/plugins/item_list_editor_plugin.cpp
msgid "Item %d"
msgstr "العنصر %d"
@@ -9121,8 +9654,9 @@ msgstr ""
"التحديث من المشهد المتواجد؟:\n"
"%s"
-#: editor/plugins/mesh_library_editor_plugin.cpp modules/gridmap/grid_map.cpp
-msgid "Mesh Library"
+#: editor/plugins/mesh_library_editor_plugin.cpp
+#, fuzzy
+msgid "MeshLibrary"
msgstr "مكتبة المجسم"
#: editor/plugins/mesh_library_editor_plugin.cpp
@@ -10114,8 +10648,8 @@ msgstr "الاتصالات لدالة:"
msgid "Source"
msgstr "مصدر"
-#: editor/plugins/script_text_editor.cpp scene/3d/interpolated_camera.cpp
-#: scene/animation/skeleton_ik.cpp
+#: editor/plugins/script_text_editor.cpp platform/uwp/export/export.cpp
+#: scene/3d/interpolated_camera.cpp scene/animation/skeleton_ik.cpp
msgid "Target"
msgstr "الهدÙ"
@@ -11092,7 +11626,9 @@ msgstr "السرعة:"
#: editor/plugins/sprite_frames_editor_plugin.cpp
#: modules/gltf/gltf_animation.cpp modules/minimp3/audio_stream_mp3.cpp
-#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp scene/2d/path_2d.cpp
+#: modules/minimp3/resource_importer_mp3.cpp
+#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp
+#: modules/stb_vorbis/resource_importer_ogg_vorbis.cpp scene/2d/path_2d.cpp
#: scene/3d/path.cpp scene/resources/animation.cpp scene/resources/material.cpp
msgid "Loop"
msgstr "حلقة Loop"
@@ -11983,8 +12519,9 @@ msgstr "قناع-Ø§Ù„Ø¨ÙØª"
msgid "Priority"
msgstr "الأولية"
-#: editor/plugins/tile_set_editor_plugin.cpp main/main.cpp scene/gui/button.cpp
-#: scene/gui/item_list.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp main/main.cpp
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#: scene/gui/button.cpp scene/gui/item_list.cpp
msgid "Icon"
msgstr "الأيقونة"
@@ -13380,10 +13917,6 @@ msgstr ""
"بك."
#: editor/project_export.cpp
-msgid "Release"
-msgstr "الإصدار"
-
-#: editor/project_export.cpp
msgid "Exporting All"
msgstr "تصدير الكÙÙ„"
@@ -15261,6 +15794,7 @@ msgstr ""
"تعديل زاوية انبعاث (إصدار) Ù…ÙØ´ØºÙ„ الصوت ثلاثي الأبعاد AudioStreamPlayer3D"
#: editor/spatial_editor_gizmos.cpp modules/gltf/gltf_node.cpp
+#: platform/osx/export/export.cpp
msgid "Camera"
msgstr ""
@@ -15548,7 +16082,8 @@ msgstr ""
msgid "Use Nvidia Rect Flicker Workaround"
msgstr ""
-#: main/main.cpp platform/uwp/os_uwp.cpp
+#: main/main.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp platform/uwp/os_uwp.cpp
#, fuzzy
msgid "Display"
msgstr "إظهار الكل"
@@ -15609,19 +16144,6 @@ msgstr ""
msgid "Allowed"
msgstr ""
-#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp scene/2d/camera_2d.cpp
-#: scene/2d/light_2d.cpp scene/2d/navigation_polygon.cpp
-#: scene/2d/ray_cast_2d.cpp scene/2d/sprite.cpp scene/2d/y_sort.cpp
-#: scene/3d/audio_stream_player_3d.cpp scene/3d/baked_lightmap.cpp
-#: scene/3d/interpolated_camera.cpp scene/3d/light.cpp
-#: scene/3d/navigation_mesh_instance.cpp scene/3d/ray_cast.cpp
-#: scene/3d/sprite_3d.cpp scene/gui/graph_edit.cpp
-#: scene/gui/rich_text_label.cpp scene/resources/curve.cpp
-#: scene/resources/environment.cpp
-#, fuzzy
-msgid "Enabled"
-msgstr "ØªÙØ¹ÙŠÙ„"
-
#: main/main.cpp
msgid "Intended Usage"
msgstr ""
@@ -15653,13 +16175,14 @@ msgstr ""
msgid "Handheld"
msgstr ""
-#: main/main.cpp
+#: main/main.cpp platform/javascript/export/export.cpp
+#: platform/uwp/export/export.cpp
#, fuzzy
msgid "Orientation"
msgstr "الوثائق الإلكترونية"
#: main/main.cpp scene/gui/scroll_container.cpp scene/gui/text_edit.cpp
-#: scene/main/scene_tree.cpp
+#: scene/main/scene_tree.cpp scene/register_scene_types.cpp
#, fuzzy
msgid "Common"
msgstr "المجتمع"
@@ -15702,7 +16225,7 @@ msgstr ""
#: main/main.cpp
#, fuzzy
-msgid "Frame Delay (msec)"
+msgid "Frame Delay Msec"
msgstr "تحديد الإطار"
#: main/main.cpp
@@ -15831,11 +16354,6 @@ msgstr ""
msgid "Tooltip Position Offset"
msgstr "مقدار إزاحة الدوران:"
-#: main/main.cpp modules/mono/editor/csharp_project.cpp
-#: modules/mono/mono_gd/gd_mono.cpp
-msgid "Mono"
-msgstr ""
-
#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp
#, fuzzy
msgid "Debugger Agent"
@@ -16415,7 +16933,7 @@ msgstr "الألوان"
msgid "Intensity"
msgstr ""
-#: modules/gltf/gltf_light.cpp scene/2d/light_2d.cpp
+#: modules/gltf/gltf_light.cpp scene/2d/light_2d.cpp scene/3d/light.cpp
#, fuzzy
msgid "Range"
msgstr "تغير"
@@ -16562,11 +17080,6 @@ msgstr "مع البيانات"
msgid "Use Named Skin Binds"
msgstr ""
-#: modules/gltf/gltf_state.cpp scene/3d/physics_joint.cpp
-#, fuzzy
-msgid "Nodes"
-msgstr "وحدة"
-
#: modules/gltf/gltf_state.cpp
#, fuzzy
msgid "Buffer Views"
@@ -16578,16 +17091,6 @@ msgstr ""
#: modules/gltf/gltf_state.cpp
#, fuzzy
-msgid "Meshes"
-msgstr "مجسّم"
-
-#: modules/gltf/gltf_state.cpp
-#, fuzzy
-msgid "Materials"
-msgstr "تغيرات المادة:"
-
-#: modules/gltf/gltf_state.cpp
-#, fuzzy
msgid "Scene Name"
msgstr "المسار للمشهد:"
@@ -16603,15 +17106,11 @@ msgstr "اسم العÙقدة الرئيسة (الجذر)"
msgid "Textures"
msgstr "المزايا"
-#: modules/gltf/gltf_state.cpp
+#: modules/gltf/gltf_state.cpp platform/uwp/export/export.cpp
msgid "Images"
msgstr ""
#: modules/gltf/gltf_state.cpp
-msgid "Skins"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp
msgid "Cameras"
msgstr ""
@@ -16646,11 +17145,15 @@ msgid "Src Image"
msgstr "إظهار العظام"
#: modules/gridmap/grid_map.cpp
+msgid "Mesh Library"
+msgstr "مكتبة المجسم"
+
+#: modules/gridmap/grid_map.cpp
#, fuzzy
msgid "Physics Material"
msgstr "نسبة الإطار الÙيزيائي %"
-#: modules/gridmap/grid_map.cpp
+#: modules/gridmap/grid_map.cpp scene/3d/visual_instance.cpp
#, fuzzy
msgid "Use In Baked Light"
msgstr "طبخ (إعداد) خرائط الضوء"
@@ -16682,6 +17185,7 @@ msgstr "المنتصÙ"
#: modules/gridmap/grid_map.cpp scene/2d/collision_object_2d.cpp
#: scene/2d/tile_map.cpp scene/3d/collision_object.cpp scene/3d/soft_body.cpp
+#: scene/resources/material.cpp
msgid "Mask"
msgstr ""
@@ -16870,7 +17374,9 @@ msgid "Ultra Quality Ray Count"
msgstr ""
#: modules/minimp3/audio_stream_mp3.cpp
+#: modules/minimp3/resource_importer_mp3.cpp
#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp
+#: modules/stb_vorbis/resource_importer_ogg_vorbis.cpp
#, fuzzy
msgid "Loop Offset"
msgstr "Ø§Ù„Ù…ÙØ¹Ø§Ø¯Ù„:"
@@ -17985,6 +18491,193 @@ msgid "The package must have at least one '.' separator."
msgstr "يجب أن تتضمن الرزمة على الأقل واحد من الÙواصل '.' ."
#: platform/android/export/export_plugin.cpp
+msgid "Use Custom Build"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Export Format"
+msgstr "مسار التصدير"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Keystore"
+msgstr "Ù…Ùنقح الأخطاء"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Debug User"
+msgstr "Ù…Ùنقح الأخطاء"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Debug Password"
+msgstr "كلمة المرور"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Release User"
+msgstr "الإصدار"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Release Password"
+msgstr "كلمة المرور"
+
+#: platform/android/export/export_plugin.cpp
+msgid "One Click Deploy"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Clear Previous Install"
+msgstr "ØªÙØ­Øµ النمذجة السابقة"
+
+#: platform/android/export/export_plugin.cpp scene/resources/shader.cpp
+msgid "Code"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Min SDK"
+msgstr "حجم الخطوط:"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Target SDK"
+msgstr "الهدÙ"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Package"
+msgstr "يَحزم\"ينتج المل٠المضغوط\""
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Unique Name"
+msgstr "إسم العقدة:"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Signed"
+msgstr "الإشاراة"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Classify As Game"
+msgstr "اسم Ø§Ù„ÙØ¦Ø©:"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Retain Data On Uninstall"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Exclude From Recents"
+msgstr "حذ٠العÙقد"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Graphics"
+msgstr "مقدار إزاحة الشبكة:"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "OpenGL Debug"
+msgstr "Ø¥ÙØªØ­"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "XR Features"
+msgstr "المزايا"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "XR Mode"
+msgstr "وضع السحب"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Hand Tracking"
+msgstr "يَحزم\"ينتج المل٠المضغوط\""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Hand Tracking Frequency"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Passthrough"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Immersive Mode"
+msgstr "وضع الأولية"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Support Small"
+msgstr "الدعم"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Support Normal"
+msgstr "الدعم"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Support Large"
+msgstr "الدعم"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Support Xlarge"
+msgstr "الدعم"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "User Data Backup"
+msgstr "واجهة المستخدم"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Allow"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Command Line"
+msgstr "المجتمع"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Extra Args"
+msgstr "وسائط إستدعاء إضاÙية :"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "APK Expansion"
+msgstr "تحديد التعبير"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Salt"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Public Key"
+msgstr "مسار Ø§Ù„Ù…ÙØªØ§Ø­ العام Ù„SSH"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Permissions"
+msgstr "قناع الانبعاث"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Custom Permissions"
+msgstr "تشغيل المشهد المخصص"
+
+#: platform/android/export/export_plugin.cpp
msgid "Select device from the list"
msgstr "اختر جهازاً من القائمة"
@@ -18328,6 +19021,178 @@ msgid "The character '%s' is not allowed in Identifier."
msgstr "إن الحر٠'%s' غير مسموح ÙÙŠ Ø§Ù„Ù…ÙØ­Ø¯Ø¯ Identifier."
#: platform/iphone/export/export.cpp
+msgid "App Store Team ID"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Provisioning Profile UUID Debug"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Code Sign Identity Debug"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Export Method Debug"
+msgstr "التصدير مع Ù…Ùنقح الأخطاء"
+
+#: platform/iphone/export/export.cpp
+msgid "Provisioning Profile UUID Release"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Code Sign Identity Release"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Export Method Release"
+msgstr "وضع التصدير:"
+
+#: platform/iphone/export/export.cpp
+msgid "Targeted Device Family"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Info"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Identifier"
+msgstr "Ù…ÙØ­Ø¯Ø¯ غير صالح:"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Signature"
+msgstr "الإشاراة"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Short Version"
+msgstr "الإصدار"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Copyright"
+msgstr "ÙÙŠ الأعلى يميناً"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Capabilities"
+msgstr "إلصق الخاصيات"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Access Wi-Fi"
+msgstr "تم بشكل ناجح!"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Push Notifications"
+msgstr "دوران عشوائي:"
+
+#: platform/iphone/export/export.cpp scene/3d/baked_lightmap.cpp
+#, fuzzy
+msgid "User Data"
+msgstr "واجهة المستخدم"
+
+#: platform/iphone/export/export.cpp
+msgid "Accessible From Files App"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Accessible From Itunes Sharing"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Privacy"
+msgstr "مسار Ø§Ù„Ù…ÙØªØ§Ø­ الخاص Ù„SSH"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Camera Usage Description"
+msgstr "الوصÙ"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Microphone Usage Description"
+msgstr "أوصا٠المÙلكية"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Photolibrary Usage Description"
+msgstr "أوصا٠المÙلكية"
+
+#: platform/iphone/export/export.cpp
+msgid "iPhone 120 X 120"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPhone 180 X 180"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 76 X 76"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 152 X 152"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 167 X 167"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "App Store 1024 X 1024"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Spotlight 40 X 40"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Spotlight 80 X 80"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Storyboard"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Use Launch Screen Storyboard"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Image Scale Mode"
+msgstr "وضع التحجيم"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Custom Image @2x"
+msgstr "قص العÙقد"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Custom Image @3x"
+msgstr "قص العÙقد"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Use Custom BG Color"
+msgstr "قص العÙقد"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Custom BG Color"
+msgstr "قص العÙقد"
+
+#: platform/iphone/export/export.cpp
msgid "App Store Team ID not specified - cannot configure the project."
msgstr ""
"لم يتم تحديد ID الÙÙØ±Ù‚ الخاص بمتجر التطبيقات - لا يمكن تهيئة configure "
@@ -18368,6 +19233,80 @@ msgstr "لا يمكن كتابة الملÙ:"
#: platform/javascript/export/export.cpp
#, fuzzy
+msgid "Variant"
+msgstr "Ø§Ù„ØªØ¨Ø§Ø¹ÙØ¯Ø§Øª:"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Export Type"
+msgstr "تصدير"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "VRAM Texture Compression"
+msgstr "تحديد التعبير"
+
+#: platform/javascript/export/export.cpp
+msgid "For Desktop"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "For Mobile"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Html"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Export Icon"
+msgstr "توسيع الكل"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Custom Html Shell"
+msgstr "قص العÙقد"
+
+#: platform/javascript/export/export.cpp
+msgid "Head Include"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Canvas Resize Policy"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Focus Canvas On Start"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Experimental Virtual Keyboard"
+msgstr "تنقية الإشارات"
+
+#: platform/javascript/export/export.cpp
+msgid "Progressive Web App"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Offline Page"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 144 X 144"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 180 X 180"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 512 X 512"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
msgid "Could not read HTML shell:"
msgstr "لا يمكن قراءة مل٠HTML مخصص:"
@@ -18481,6 +19420,202 @@ msgid "Unknown object type."
msgstr ""
#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "App Category"
+msgstr "Ø§Ù„ÙØ¦Ø©:"
+
+#: platform/osx/export/export.cpp
+msgid "High Res"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Location Usage Description"
+msgstr "الوصÙ"
+
+#: platform/osx/export/export.cpp
+msgid "Address Book Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Calendar Usage Description"
+msgstr "الوصÙ"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Photos Library Usage Description"
+msgstr "أوصا٠المÙلكية"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Desktop Folder Usage Description"
+msgstr "أوصا٠الدوال"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Documents Folder Usage Description"
+msgstr "أوصا٠الدوال"
+
+#: platform/osx/export/export.cpp
+msgid "Downloads Folder Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Network Volumes Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Removable Volumes Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#, fuzzy
+msgid "Codesign"
+msgstr "وحدة"
+
+#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Identity"
+msgstr "Ø§Ù„Ù…Ø³Ø§ÙØ© البادئة يساراً"
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#, fuzzy
+msgid "Timestamp"
+msgstr "الوقت"
+
+#: platform/osx/export/export.cpp
+msgid "Hardened Runtime"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Replace Existing Signature"
+msgstr "إستبدل ÙÙŠ كل Ø§Ù„Ù…ÙØ§Øª"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Entitlements"
+msgstr "الأدوات Gizmos"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Custom File"
+msgstr "قص العÙقد"
+
+#: platform/osx/export/export.cpp
+msgid "Allow JIT Code Execution"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Allow Unsigned Executable Memory"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Allow Dyld Environment Variables"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Disable Library Validation"
+msgstr "زر معطّل"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Audio Input"
+msgstr "أض٠مدخله"
+
+#: platform/osx/export/export.cpp
+msgid "Address Book"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Calendars"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Photos Library"
+msgstr "تصدير المكتبة"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Apple Events"
+msgstr "Ø¥Ø¶Ø§ÙØ© حَدث"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Debugging"
+msgstr "تصحيح الأخطاء"
+
+#: platform/osx/export/export.cpp
+msgid "App Sandbox"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Network Server"
+msgstr "مل٠تعري٠الشبكة Network Profiler"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Network Client"
+msgstr "مل٠تعري٠الشبكة Network Profiler"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Device Usb"
+msgstr "الجهاز"
+
+#: platform/osx/export/export.cpp
+msgid "Device Bluetooth"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Files Downloads"
+msgstr "تنزيل"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Files Pictures"
+msgstr "المزايا"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Files Music"
+msgstr "ملÙ"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Files Movies"
+msgstr "تنقية البلاطات"
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#, fuzzy
+msgid "Custom Options"
+msgstr "‎خيارات مسار الصوت (BUS)"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Notarization"
+msgstr "توطين"
+
+#: platform/osx/export/export.cpp
+msgid "Apple ID Name"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Apple ID Password"
+msgstr "كلمة المرور"
+
+#: platform/osx/export/export.cpp
+msgid "Apple Team ID"
+msgstr ""
+
+#: platform/osx/export/export.cpp
msgid ""
"Note: The notarization process generally takes less than an hour. When the "
"process is completed, you'll receive an email."
@@ -18676,6 +19811,136 @@ msgid "Force Builtin Codesign"
msgstr ""
#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Architecture"
+msgstr "Ø¥Ø¶Ø§ÙØ© إدخال معماري architecture entry"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Display Name"
+msgstr "إظهار الكل"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Short Name"
+msgstr "اسم النص البرمجي:"
+
+#: platform/uwp/export/export.cpp
+msgid "Publisher"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Publisher Display Name"
+msgstr "اسم الناشر المعروض Ù„Ù„Ø±ÙØ²Ù…Ø© غير صالح."
+
+#: platform/uwp/export/export.cpp
+msgid "Product Guid"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Publisher Guid"
+msgstr "مسح الموجهات"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Signing"
+msgstr "الإشاراة"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Certificate"
+msgstr "القمم:"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Algorithm"
+msgstr "Ù…Ùنقح الأخطاء"
+
+#: platform/uwp/export/export.cpp
+msgid "Major"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Minor"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Build"
+msgstr "وضع المسطرة"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Revision"
+msgstr "تحديد التعبير"
+
+#: platform/uwp/export/export.cpp
+msgid "Landscape"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Portrait"
+msgstr "إقلبْ البوابات"
+
+#: platform/uwp/export/export.cpp
+msgid "Landscape Flipped"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Portrait Flipped"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Store Logo"
+msgstr "وضع التحجيم"
+
+#: platform/uwp/export/export.cpp
+msgid "Square 44 X 44 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 71 X 71 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 150 X 150 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 310 X 310 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Wide 310 X 150 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Splash Screen"
+msgstr "استدعاءات الرسم:"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Tiles"
+msgstr "ملÙ"
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Square 150 X 150"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Wide 310 X 150"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Square 310 X 310"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
msgid "Invalid package short name."
msgstr "اسم Ø§Ù„Ø±ÙØ²Ù…Ø© القصير غير صالح."
@@ -18742,15 +20007,52 @@ msgstr ""
#: platform/uwp/export/export.cpp
#, fuzzy
-msgid "Debug Password"
-msgstr "كلمة المرور"
+msgid "Debug Algorithm"
+msgstr "Ù…Ùنقح الأخطاء"
-#: platform/uwp/export/export.cpp
+#: platform/windows/export/export.cpp
+msgid "Identity Type"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Timestamp Server URL"
+msgstr ""
+
+#: platform/windows/export/export.cpp
#, fuzzy
-msgid "Debug Algorithm"
+msgid "Digest Algorithm"
msgstr "Ù…Ùنقح الأخطاء"
#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "File Version"
+msgstr "الإصدار"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Product Version"
+msgstr "Ù…ÙØ¹Ø±Ù GUID (Ø§Ù„Ù…ÙØ¹Ø±Ù‘Ù Ø§Ù„ÙØ±ÙŠØ¯ العالمي) للمنتج غير صالح:"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Company Name"
+msgstr "إسم العقدة:"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Product Name"
+msgstr "اسم المشروع:"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "File Description"
+msgstr "الوصÙ"
+
+#: platform/windows/export/export.cpp
+msgid "Trademarks"
+msgstr ""
+
+#: platform/windows/export/export.cpp
msgid ""
"The rcedit tool must be configured in the Editor Settings (Export > Windows "
"> Rcedit) to change the icon or app information data."
@@ -18822,12 +20124,14 @@ msgstr "تشغيل"
msgid "Centered"
msgstr "المنتصÙ"
-#: scene/2d/animated_sprite.cpp scene/2d/camera_2d.cpp scene/2d/light_2d.cpp
+#: scene/2d/animated_sprite.cpp scene/2d/camera_2d.cpp
+#: scene/2d/cpu_particles_2d.cpp scene/2d/light_2d.cpp
#: scene/2d/parallax_background.cpp scene/2d/parallax_layer.cpp
#: scene/2d/path_2d.cpp scene/2d/polygon_2d.cpp scene/2d/sprite.cpp
-#: scene/3d/path.cpp scene/3d/physics_body.cpp scene/3d/sprite_3d.cpp
-#: scene/gui/graph_node.cpp scene/gui/rich_text_effect.cpp
-#: scene/main/canvas_layer.cpp scene/resources/material.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/path.cpp scene/3d/physics_body.cpp
+#: scene/3d/sprite_3d.cpp scene/gui/graph_node.cpp
+#: scene/gui/rich_text_effect.cpp scene/main/canvas_layer.cpp
+#: scene/resources/material.cpp scene/resources/particles_material.cpp
#: scene/resources/style_box.cpp
#, fuzzy
msgid "Offset"
@@ -18902,11 +20206,6 @@ msgstr "أض٠مسار الصوت"
msgid "Override"
msgstr "يتجاوز"
-#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
-#: scene/audio/audio_stream_player.cpp scene/gui/video_player.cpp
-msgid "Stream"
-msgstr ""
-
#: scene/2d/audio_stream_player_2d.cpp scene/audio/audio_stream_player.cpp
#: scene/gui/video_player.cpp servers/audio/effects/audio_effect_amplify.cpp
#, fuzzy
@@ -18933,13 +20232,13 @@ msgid "Stream Paused"
msgstr ""
#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
-#: scene/3d/reflection_probe.cpp scene/3d/visual_instance.cpp
-#: scene/resources/material.cpp
+#: scene/3d/light.cpp scene/3d/reflection_probe.cpp
+#: scene/3d/visual_instance.cpp scene/resources/material.cpp
#, fuzzy
msgid "Max Distance"
msgstr "اختر Ø§Ù„Ù…Ø³Ø§ÙØ©:"
-#: scene/2d/audio_stream_player_2d.cpp
+#: scene/2d/audio_stream_player_2d.cpp scene/3d/light.cpp
#, fuzzy
msgid "Attenuation"
msgstr "رسوم متحركة"
@@ -18995,6 +20294,24 @@ msgstr "وضع التحريك"
msgid "Limit"
msgstr ""
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/style_box.cpp
+#, fuzzy
+msgid "Left"
+msgstr "ÙÙŠ الأعلى يساراً"
+
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/style_box.cpp
+#, fuzzy
+msgid "Right"
+msgstr "ضوء"
+
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/dynamic_font.cpp scene/resources/style_box.cpp
+#, fuzzy
+msgid "Bottom"
+msgstr "ÙÙŠ الأسÙÙ„ يساراً"
+
#: scene/2d/camera_2d.cpp
#, fuzzy
msgid "Smoothed"
@@ -19246,13 +20563,6 @@ msgstr ""
msgid "Emitting"
msgstr "الإعدادات:"
-#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp scene/3d/area.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
-#: scene/resources/environment.cpp
-#, fuzzy
-msgid "Amount"
-msgstr "الكمية:"
-
#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp
#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
msgid "Lifetime"
@@ -19317,18 +20627,13 @@ msgstr ""
#: scene/2d/mesh_instance_2d.cpp scene/2d/multimesh_instance_2d.cpp
#: scene/2d/particles_2d.cpp scene/2d/polygon_2d.cpp scene/2d/sprite.cpp
#: scene/3d/sprite_3d.cpp scene/gui/nine_patch_rect.cpp
-#: scene/gui/texture_rect.cpp scene/resources/sky.cpp
-#: scene/resources/style_box.cpp scene/resources/visual_shader_nodes.cpp
+#: scene/gui/texture_rect.cpp scene/resources/material.cpp
+#: scene/resources/sky.cpp scene/resources/style_box.cpp
+#: scene/resources/visual_shader_nodes.cpp
#, fuzzy
msgid "Texture"
msgstr "نص"
-#: scene/2d/cpu_particles_2d.cpp scene/2d/mesh_instance_2d.cpp
-#: scene/2d/multimesh_instance_2d.cpp scene/2d/particles_2d.cpp
-#: scene/2d/sprite.cpp scene/resources/style_box.cpp
-msgid "Normal Map"
-msgstr ""
-
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
#, fuzzy
@@ -19352,10 +20657,10 @@ msgid "Normals"
msgstr "البنية (اللاحقة)"
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/3d/sprite_3d.cpp scene/resources/material.cpp
-#: scene/resources/particles_material.cpp scene/resources/texture.cpp
-msgid "Flags"
-msgstr ""
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Align Y"
+msgstr "ألحق"
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
@@ -19376,6 +20681,12 @@ msgid "Initial Velocity"
msgstr "الشروع"
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Velocity Random"
+msgstr "تحريك المسار لليمين"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp servers/physics_2d_server.cpp
#: servers/physics_server.cpp
msgid "Angular Velocity"
@@ -19384,6 +20695,12 @@ msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
#, fuzzy
+msgid "Velocity Curve"
+msgstr "تحريك المسار لليمين"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
msgid "Orbit Velocity"
msgstr "تحريك المسار لليمين"
@@ -19395,6 +20712,23 @@ msgstr "خطي"
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Accel"
+msgstr "تم بشكل ناجح!"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Accel Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Accel Curve"
+msgstr "تقسيم المنحنى"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
msgid "Radial Accel"
msgstr ""
@@ -19404,19 +20738,55 @@ msgid "Tangential Accel"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/2d/joints_2d.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/vehicle_body.cpp
-#: scene/resources/particles_material.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/physics_joint.cpp
+#: scene/3d/vehicle_body.cpp scene/resources/particles_material.cpp
#: servers/audio/effects/audio_effect_reverb.cpp
msgid "Damping"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+msgid "Damping Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Damping Curve"
+msgstr "تقسيم المنحنى"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp scene/3d/light.cpp
+#: scene/resources/particles_material.cpp
msgid "Angle"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+msgid "Angle Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Angle Curve"
+msgstr "إغلاق المنحنى"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#, fuzzy
+msgid "Scale Amount"
+msgstr "الكمية:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+msgid "Scale Amount Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#, fuzzy
+msgid "Scale Amount Curve"
+msgstr "تكبير من المؤشر"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
#, fuzzy
msgid "Color Ramp"
msgstr "الألوان"
@@ -19432,6 +20802,48 @@ msgstr ""
msgid "Hue Variation"
msgstr "Ø§Ù„ØªØ¨Ø§Ø¹ÙØ¯Ø§Øª:"
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Variation"
+msgstr "Ø§Ù„ØªØ¨Ø§Ø¹ÙØ¯Ø§Øª:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Variation Random"
+msgstr "Ø§Ù„ØªØ¨Ø§Ø¹ÙØ¯Ø§Øª:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Variation Curve"
+msgstr "Ø§Ù„ØªØ¨Ø§Ø¹ÙØ¯Ø§Øª:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Speed Random"
+msgstr "المقياس"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Speed Curve"
+msgstr "تقسيم المنحنى"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Offset Random"
+msgstr "Ø§Ù„Ù…ÙØ¹Ø§Ø¯Ù„:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Offset Curve"
+msgstr "إغلاق المنحنى"
+
#: scene/2d/joints_2d.cpp
msgid "Node A and Node B must be PhysicsBody2Ds"
msgstr ""
@@ -19466,6 +20878,7 @@ msgid "Node B"
msgstr "وحدة"
#: scene/2d/joints_2d.cpp scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp
+#: scene/3d/light.cpp scene/3d/physics_joint.cpp
#: scene/resources/environment.cpp
msgid "Bias"
msgstr ""
@@ -19475,7 +20888,7 @@ msgstr ""
msgid "Disable Collision"
msgstr "زر معطّل"
-#: scene/2d/joints_2d.cpp
+#: scene/2d/joints_2d.cpp scene/3d/physics_joint.cpp
msgid "Softness"
msgstr ""
@@ -19493,7 +20906,7 @@ msgstr "الشروع"
msgid "Rest Length"
msgstr ""
-#: scene/2d/joints_2d.cpp scene/3d/vehicle_body.cpp
+#: scene/2d/joints_2d.cpp scene/3d/physics_joint.cpp scene/3d/vehicle_body.cpp
msgid "Stiffness"
msgstr ""
@@ -19514,7 +20927,7 @@ msgid "Texture Scale"
msgstr "منطقة النقش TextureRegion"
#: scene/2d/light_2d.cpp scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp
-#: scene/resources/environment.cpp scene/resources/sky.cpp
+#: scene/3d/light.cpp scene/resources/environment.cpp scene/resources/sky.cpp
msgid "Energy"
msgstr ""
@@ -19555,12 +20968,6 @@ msgstr "الواجهة View الخلÙية"
msgid "Gradient Length"
msgstr "التدرج Ø§Ù„Ù…ÙØ­Ø±Ø±"
-#: scene/2d/light_2d.cpp scene/gui/control.cpp
-#: scene/resources/navigation_mesh.cpp
-#, fuzzy
-msgid "Filter"
-msgstr "مرشحات:"
-
#: scene/2d/light_2d.cpp
#, fuzzy
msgid "Filter Smooth"
@@ -19999,11 +21406,6 @@ msgid "Applied Forces"
msgstr ""
#: scene/2d/physics_body_2d.cpp
-#, fuzzy
-msgid "Force"
-msgstr "أنشر بإجبار"
-
-#: scene/2d/physics_body_2d.cpp
msgid "Torque"
msgstr ""
@@ -20019,7 +21421,7 @@ msgstr " (Ùيزيائي)"
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
#, fuzzy
-msgid "Moving platform"
+msgid "Moving Platform"
msgstr "نقل المخرجات"
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
@@ -20028,7 +21430,7 @@ msgstr ""
#: scene/2d/physics_body_2d.cpp scene/2d/touch_screen_button.cpp
#: scene/3d/physics_body.cpp scene/gui/texture_button.cpp
-#: scene/resources/line_shape_2d.cpp
+#: scene/resources/line_shape_2d.cpp scene/resources/material.cpp
#, fuzzy
msgid "Normal"
msgstr "البنية (اللاحقة)"
@@ -20280,6 +21682,34 @@ msgstr ""
"يعمل Ù…ÙÙ…ÙŽÙƒÙÙ†-الرؤية-ثنائي-Ø§Ù„Ø¨ÙØ¹Ø¯ (VisibilityEnabler2D) بشكل Ø£ÙØ¶Ù„ عند استخدامه مع "
"المشهد الرئيس الذي تم تحريره مباشرةً باعتباره الأصل."
+#: scene/2d/visibility_notifier_2d.cpp scene/3d/visibility_notifier.cpp
+#, fuzzy
+msgid "Pause Animations"
+msgstr "لصق الرسوم المتحركة"
+
+#: scene/2d/visibility_notifier_2d.cpp scene/3d/visibility_notifier.cpp
+msgid "Freeze Bodies"
+msgstr ""
+
+#: scene/2d/visibility_notifier_2d.cpp
+#, fuzzy
+msgid "Pause Particles"
+msgstr "جسيمات"
+
+#: scene/2d/visibility_notifier_2d.cpp
+#, fuzzy
+msgid "Pause Animated Sprites"
+msgstr "لصق الرسوم المتحركة"
+
+#: scene/2d/visibility_notifier_2d.cpp
+#, fuzzy
+msgid "Process Parent"
+msgstr "تمكين الأولوية"
+
+#: scene/2d/visibility_notifier_2d.cpp
+msgid "Physics Process Parent"
+msgstr ""
+
#: scene/3d/area.cpp
msgid "Reverb Bus"
msgstr ""
@@ -20385,6 +21815,7 @@ msgid "Attenuation Filter"
msgstr ""
#: scene/3d/audio_stream_player_3d.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
#: servers/audio/effects/audio_effect_filter.cpp
msgid "Cutoff Hz"
msgstr ""
@@ -20429,11 +21860,6 @@ msgid "Octree"
msgstr "الشجرة Ø§Ù„ÙØ±Ø¹ÙŠØ©"
#: scene/3d/baked_lightmap.cpp
-#, fuzzy
-msgid "User Data"
-msgstr "واجهة المستخدم"
-
-#: scene/3d/baked_lightmap.cpp
msgid "Finding meshes and lights"
msgstr "إيجاد السطوح meshes والأضواء"
@@ -20712,6 +22138,16 @@ msgid "Ring Axis"
msgstr "تحذيرات"
#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Rotate Y"
+msgstr "تدوير"
+
+#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Disable Z"
+msgstr "عنصر معطّل"
+
+#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
msgid "Flatness"
msgstr ""
@@ -20752,16 +22188,11 @@ msgstr "مكتبة مطاوعة (ديناميكية)"
msgid "Dynamic Range"
msgstr "مكتبة مطاوعة (ديناميكية)"
-#: scene/3d/gi_probe.cpp
+#: scene/3d/gi_probe.cpp scene/3d/light.cpp
msgid "Normal Bias"
msgstr ""
#: scene/3d/gi_probe.cpp
-#, fuzzy
-msgid "Compress"
-msgstr "مكونات"
-
-#: scene/3d/gi_probe.cpp
msgid "Plotting Meshes"
msgstr "تخطيط المجسمات"
@@ -20792,16 +22223,31 @@ msgstr ""
#: scene/3d/light.cpp
#, fuzzy
+msgid "Indirect Energy"
+msgstr "الوان الإنبعاث"
+
+#: scene/3d/light.cpp
+#, fuzzy
msgid "Negative"
msgstr "لغة البرمجة GDNative"
#: scene/3d/light.cpp
#, fuzzy
+msgid "Specular"
+msgstr "وضع المسطرة"
+
+#: scene/3d/light.cpp
+#, fuzzy
msgid "Bake Mode"
msgstr "وضع قناع-Ø§Ù„Ø¨ÙØª"
#: scene/3d/light.cpp
#, fuzzy
+msgid "Contact"
+msgstr "اختر لوناً"
+
+#: scene/3d/light.cpp
+#, fuzzy
msgid "Reverse Cull Face"
msgstr "إرجاع صوت المسار"
@@ -20812,11 +22258,31 @@ msgstr "الاتجاهات"
#: scene/3d/light.cpp
#, fuzzy
+msgid "Split 1"
+msgstr "ÙØµÙ„ المسار"
+
+#: scene/3d/light.cpp
+#, fuzzy
+msgid "Split 2"
+msgstr "ÙØµÙ„ المسار"
+
+#: scene/3d/light.cpp
+#, fuzzy
+msgid "Split 3"
+msgstr "ÙØµÙ„ المسار"
+
+#: scene/3d/light.cpp
+#, fuzzy
msgid "Blend Splits"
msgstr "أوقات الدمج:"
#: scene/3d/light.cpp
#, fuzzy
+msgid "Bias Split Scale"
+msgstr "استخدام محاذاة التحجيم"
+
+#: scene/3d/light.cpp
+#, fuzzy
msgid "Depth Range"
msgstr "العمق"
@@ -20842,6 +22308,11 @@ msgstr "بقعة الضوء بزاوية أكبر من 90 درجة لا يمكن
msgid "Spot"
msgstr ""
+#: scene/3d/light.cpp
+#, fuzzy
+msgid "Angle Attenuation"
+msgstr "رسوم متحركة"
+
#: scene/3d/mesh_instance.cpp
msgid "Software Skinning"
msgstr ""
@@ -20982,6 +22453,63 @@ msgstr "محاور"
#: scene/3d/physics_body.cpp
#, fuzzy
+msgid "Linear X"
+msgstr "خطي"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Linear Y"
+msgstr "خطي"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Linear Z"
+msgstr "خطي"
+
+#: scene/3d/physics_body.cpp
+msgid "Angular X"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Angular Y"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Angular Z"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Motion X"
+msgstr "إجراء"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Motion Y"
+msgstr "إجراء"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Motion Z"
+msgstr "إجراء"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Move Lock X"
+msgstr "تحريك العÙقدة"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Move Lock Y"
+msgstr "تحريك العÙقدة"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Move Lock Z"
+msgstr "تحريك العÙقدة"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
msgid "Body Offset"
msgstr "Ø§Ù„Ù…ÙØ¹Ø§Ø¯Ù„:"
@@ -21015,6 +22543,15 @@ msgid "Exclude Nodes"
msgstr "حذ٠العÙقد"
#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Params"
+msgstr "لقد تم تغيير المَعلم:"
+
+#: scene/3d/physics_joint.cpp
+msgid "Impulse Clamp"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit"
msgstr ""
@@ -21028,6 +22565,55 @@ msgstr "الأحر٠الكبيرة (Uppercase)"
msgid "Lower"
msgstr "الأحر٠الصغيرة (Lowercase)"
+#: scene/3d/physics_joint.cpp scene/3d/vehicle_body.cpp
+#, fuzzy
+msgid "Relaxation"
+msgstr "Ø§Ù„ØªØ¨Ø§Ø¹ÙØ¯Ø§Øª:"
+
+#: scene/3d/physics_joint.cpp
+msgid "Motor"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Target Velocity"
+msgstr "تحريك المسار لليمين"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Max Impulse"
+msgstr "السرعة:"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit"
+msgstr "خطي"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Upper Distance"
+msgstr "اختر Ø§Ù„Ù…Ø³Ø§ÙØ©:"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Lower Distance"
+msgstr "اختر Ø§Ù„Ù…Ø³Ø§ÙØ©:"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Restitution"
+msgstr "الوصÙ"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motion"
+msgstr "الشروع"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Ortho"
+msgstr "نظر من الخل٠(متعامد/ليس له بعد ثالث)"
+
#: scene/3d/physics_joint.cpp
#, fuzzy
msgid "Upper Angle"
@@ -21040,6 +22626,16 @@ msgstr "الأحر٠الصغيرة (Lowercase)"
#: scene/3d/physics_joint.cpp
#, fuzzy
+msgid "Angular Motion"
+msgstr "رسوم متحركة"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Angular Ortho"
+msgstr "أقصي أخطاء زواية:"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
msgid "Swing Span"
msgstr "Ø­ÙØ¸ المشهد"
@@ -21048,17 +22644,99 @@ msgid "Twist Span"
msgstr ""
#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit X"
+msgstr "خطي"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motor X"
+msgstr "الشروع"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Force Limit"
+msgstr "استدعاءات الرسم:"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Spring X"
+msgstr "خطي"
+
+#: scene/3d/physics_joint.cpp
+msgid "Equilibrium Point"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit X"
msgstr ""
#: scene/3d/physics_joint.cpp
+msgid "Erp"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Motor X"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Spring X"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit Y"
+msgstr "خطي"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motor Y"
+msgstr "الشروع"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Spring Y"
+msgstr "خطي"
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit Y"
msgstr ""
#: scene/3d/physics_joint.cpp
+msgid "Angular Motor Y"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Spring Y"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit Z"
+msgstr "خطي"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motor Z"
+msgstr "الشروع"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Spring Z"
+msgstr "خطي"
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit Z"
msgstr ""
+#: scene/3d/physics_joint.cpp
+msgid "Angular Motor Z"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Spring Z"
+msgstr ""
+
#: scene/3d/portal.cpp
msgid "The RoomManager should not be a child or grandchild of a Portal."
msgstr ""
@@ -21178,7 +22856,7 @@ msgstr ""
msgid "Use Default Simplify"
msgstr ""
-#: scene/3d/room.cpp
+#: scene/3d/room.cpp scene/3d/room_manager.cpp
msgid "Room Simplify"
msgstr ""
@@ -21217,6 +22895,13 @@ msgstr "يجب ØªÙˆØ§ÙØ± مدير-غر٠(RoomManager) واحد Ùقط ÙÙŠ Ø´Ø
msgid "Main"
msgstr ""
+#: scene/3d/room_manager.cpp scene/animation/animation_player.cpp
+#: scene/animation/animation_tree.cpp scene/animation/animation_tree_player.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+#, fuzzy
+msgid "Active"
+msgstr "إجراء"
+
#: scene/3d/room_manager.cpp
msgid "Roomlist"
msgstr ""
@@ -21241,6 +22926,54 @@ msgid "Gameplay"
msgstr ""
#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Gameplay Monitor"
+msgstr "المراقب Monitor"
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Use Secondary PVS"
+msgstr "استخدام محاذاة التحجيم"
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Merge Meshes"
+msgstr "مجسّم"
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Show Margins"
+msgstr "إظهار المركز"
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Debug Sprawl"
+msgstr "تصحيح الأخطاء"
+
+#: scene/3d/room_manager.cpp
+msgid "Overlap Warning Threshold"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Preview Camera"
+msgstr "عرض"
+
+#: scene/3d/room_manager.cpp
+msgid "Portal Depth Limit"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Default Portal Margin"
+msgstr "تحديد الهامش"
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Roaming Expansion Margin"
+msgstr "توسيع الكل"
+
+#: scene/3d/room_manager.cpp
msgid ""
"RoomList path is invalid.\n"
"Please check the RoomList branch has been assigned in the RoomManager."
@@ -21369,6 +23102,20 @@ msgstr "محاذاة البكسل"
msgid "Billboard"
msgstr ""
+#: scene/3d/sprite_3d.cpp scene/resources/material.cpp
+#, fuzzy
+msgid "Transparent"
+msgstr "المصÙÙˆÙØ© المنقولة Transpose"
+
+#: scene/3d/sprite_3d.cpp
+#, fuzzy
+msgid "Shaded"
+msgstr "Ù…ÙØ¸Ù„Ù„"
+
+#: scene/3d/sprite_3d.cpp
+msgid "Double Sided"
+msgstr ""
+
#: scene/3d/sprite_3d.cpp
msgid "Alpha Cut"
msgstr ""
@@ -21445,11 +23192,6 @@ msgstr "تحديد التعبير"
msgid "Max Force"
msgstr "خطأ"
-#: scene/3d/vehicle_body.cpp
-#, fuzzy
-msgid "Relaxation"
-msgstr "Ø§Ù„ØªØ¨Ø§Ø¹ÙØ¯Ø§Øª:"
-
#: scene/3d/visibility_notifier.cpp
msgid "AABB"
msgstr ""
@@ -21594,7 +23336,7 @@ msgstr "وقت التلاشي X (ثواني):"
#: scene/animation/animation_blend_tree.cpp
#, fuzzy
-msgid "autorestart_"
+msgid "Auto Restart"
msgstr "إعادة تشغيل تلقائية:"
#: scene/animation/animation_blend_tree.cpp
@@ -21680,13 +23422,6 @@ msgstr "إعدادات الص٠(Class):"
msgid "Default Blend Time"
msgstr "المظهر الكلي الاساسي"
-#: scene/animation/animation_player.cpp scene/animation/animation_tree.cpp
-#: scene/animation/animation_tree_player.cpp
-#: servers/audio/effects/audio_effect_delay.cpp
-#, fuzzy
-msgid "Active"
-msgstr "إجراء"
-
#: scene/animation/animation_player.cpp
msgid "Method Call Mode"
msgstr ""
@@ -21813,10 +23548,6 @@ msgstr "إعادة اختيار أبوة العÙقدة"
msgid "Max Iterations"
msgstr "عمل دالة"
-#: scene/animation/tween.cpp scene/resources/texture.cpp
-msgid "Repeat"
-msgstr ""
-
#: scene/animation/tween.cpp
msgid "Playback Process Mode"
msgstr ""
@@ -21847,20 +23578,6 @@ msgstr "تحديد الوضع"
msgid "Alignment"
msgstr ""
-#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
-#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
-#: scene/resources/style_box.cpp
-#, fuzzy
-msgid "Horizontal"
-msgstr "عَرضياً:"
-
-#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
-#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
-#: scene/resources/style_box.cpp
-#, fuzzy
-msgid "Vertical"
-msgstr "شاقولياً:"
-
#: scene/gui/base_button.cpp
#, fuzzy
msgid "Shortcut In Tooltip"
@@ -21963,10 +23680,6 @@ msgid "HSV"
msgstr "HSV"
#: scene/gui/color_picker.cpp
-msgid "Raw"
-msgstr "خام"
-
-#: scene/gui/color_picker.cpp
msgid "Switch between hexadecimal and code values."
msgstr "بدّل بين القيم البرمجية والسداسية العشرية."
@@ -22033,6 +23746,31 @@ msgid "Focus"
msgstr "مسار التركيز"
#: scene/gui/control.cpp
+msgid "Neighbour Left"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Neighbour Top"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Neighbour Right"
+msgstr ""
+
+#: scene/gui/control.cpp
+#, fuzzy
+msgid "Neighbour Bottom"
+msgstr "ÙÙŠ أسÙÙ„ المنتصÙ"
+
+#: scene/gui/control.cpp
+msgid "Next"
+msgstr "التالي"
+
+#: scene/gui/control.cpp
+msgid "Previous"
+msgstr "السابق"
+
+#: scene/gui/control.cpp
msgid "Mouse"
msgstr ""
@@ -22070,7 +23808,7 @@ msgid "Dialog"
msgstr "Ù†Ø§ÙØ°Ø© XForm"
#: scene/gui/dialogs.cpp
-msgid "Hide On Ok"
+msgid "Hide On OK"
msgstr ""
#: scene/gui/dialogs.cpp scene/gui/label.cpp
@@ -22169,7 +23907,7 @@ msgid "Timers"
msgstr "الوقت"
#: scene/gui/item_list.cpp scene/gui/popup_menu.cpp scene/gui/tree.cpp
-msgid "Incremental Search Max Interval (msec)"
+msgid "Incremental Search Max Interval Msec"
msgstr ""
#: scene/gui/item_list.cpp scene/gui/tree.cpp
@@ -22751,6 +24489,26 @@ msgstr "ÙÙŠ المنتص٠يساراً"
msgid "Nine Patch Stretch"
msgstr "وضعية Ø§Ù„Ø£Ø³ØªÙŠÙØ§Ø¡"
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Left"
+msgstr "تحديد الهامش"
+
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Top"
+msgstr "تحديد الهامش"
+
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Right"
+msgstr "تحديد الهامش"
+
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Bottom"
+msgstr "تحديد الوضع"
+
#: scene/gui/tree.cpp
msgid "Custom Minimum Height"
msgstr ""
@@ -22788,8 +24546,9 @@ msgid "Paused"
msgstr ""
#: scene/gui/video_player.cpp
-msgid "Buffering (msec)"
-msgstr ""
+#, fuzzy
+msgid "Buffering Msec"
+msgstr "الواجهة View الخلÙية"
#: scene/gui/video_player.cpp
#, fuzzy
@@ -23144,6 +24903,22 @@ msgid "Shadow Atlas"
msgstr "أطلس جديد"
#: scene/main/viewport.cpp
+msgid "Quad 0"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 1"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 2"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 3"
+msgstr ""
+
+#: scene/main/viewport.cpp
#, fuzzy
msgid "Canvas Transform"
msgstr "محو التَحَوّل"
@@ -23158,6 +24933,11 @@ msgid "Tooltip Delay (sec)"
msgstr ""
#: scene/register_scene_types.cpp
+#, fuzzy
+msgid "Swap OK Cancel"
+msgstr "إلغاء"
+
+#: scene/register_scene_types.cpp
msgid "Use hiDPI"
msgstr ""
@@ -23172,21 +24952,6 @@ msgid "Custom Font"
msgstr "قص العÙقد"
#: scene/resources/audio_stream_sample.cpp
-#, fuzzy
-msgid "Loop Mode"
-msgstr "وضع التحريك"
-
-#: scene/resources/audio_stream_sample.cpp
-#, fuzzy
-msgid "Loop Begin"
-msgstr "وضع التحريك"
-
-#: scene/resources/audio_stream_sample.cpp
-#, fuzzy
-msgid "Loop End"
-msgstr "وضع التحريك"
-
-#: scene/resources/audio_stream_sample.cpp
#: servers/audio/effects/audio_stream_generator.cpp servers/audio_server.cpp
#, fuzzy
msgid "Mix Rate"
@@ -23246,6 +25011,17 @@ msgstr "خيارات إضاÙية:"
#: scene/resources/dynamic_font.cpp
#, fuzzy
+msgid "Char"
+msgstr "الأحر٠الصالحة:"
+
+#: scene/resources/dynamic_font.cpp scene/resources/world.cpp
+#: scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Space"
+msgstr "المشهد الرئيس"
+
+#: scene/resources/dynamic_font.cpp
+#, fuzzy
msgid "Font"
msgstr "الخطوط"
@@ -23473,6 +25249,43 @@ msgid "Glow"
msgstr ""
#: scene/resources/environment.cpp
+#, fuzzy
+msgid "Levels"
+msgstr "المطورون"
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "1"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "2"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "3"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "4"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "5"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "6"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "7"
+msgstr ""
+
+#: scene/resources/environment.cpp
msgid "Bloom"
msgstr ""
@@ -23565,10 +25378,68 @@ msgid "Next Pass"
msgstr "التبويب التالي"
#: scene/resources/material.cpp
+msgid "Use Shadow To Opacity"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Unshaded"
+msgstr "عرض من غير ظلال"
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Vertex Lighting"
+msgstr "الاتجاهات"
+
+#: scene/resources/material.cpp
+msgid "No Depth Test"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Use Point Size"
+msgstr "الواجهة View الأمامية"
+
+#: scene/resources/material.cpp
+msgid "World Triplanar"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Fixed Size"
+msgstr "الواجهة View الأمامية"
+
+#: scene/resources/material.cpp
+msgid "Albedo Tex Force sRGB"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Do Not Receive Shadows"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Disable Ambient Light"
+msgstr "Ø§Ù„Ù…Ø³Ø§ÙØ© البادئة يميناً"
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Ensure Correct Normals"
+msgstr "أجهض التحول."
+
+#: scene/resources/material.cpp
#, fuzzy
msgid "Vertex Color"
msgstr "رأس"
+#: scene/resources/material.cpp
+msgid "Use As Albedo"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Is sRGB"
+msgstr ""
+
#: scene/resources/material.cpp servers/visual_server.cpp
#, fuzzy
msgid "Parameters"
@@ -23605,6 +25476,11 @@ msgid "Billboard Mode"
msgstr "وضع المسطرة"
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Billboard Keep Scale"
+msgstr "وضع المسطرة"
+
+#: scene/resources/material.cpp
msgid "Grow"
msgstr ""
@@ -23614,6 +25490,10 @@ msgid "Grow Amount"
msgstr "الكمية:"
#: scene/resources/material.cpp
+msgid "Use Alpha Scissor"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Alpha Scissor Threshold"
msgstr ""
@@ -23645,10 +25525,20 @@ msgid "Metallic Specular"
msgstr ""
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Metallic Texture"
+msgstr "مصدر الانبعاث: "
+
+#: scene/resources/material.cpp
msgid "Metallic Texture Channel"
msgstr ""
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Roughness Texture"
+msgstr "إزالة النقش"
+
+#: scene/resources/material.cpp
msgid "Roughness Texture Channel"
msgstr ""
@@ -23668,6 +25558,16 @@ msgid "Emission Operator"
msgstr "الوان الإنبعاث"
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Emission On UV2"
+msgstr "قناع الانبعاث"
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Emission Texture"
+msgstr "مصدر الانبعاث: "
+
+#: scene/resources/material.cpp
msgid "NormalMap"
msgstr ""
@@ -23682,6 +25582,11 @@ msgstr "إمالة عشوائية:"
#: scene/resources/material.cpp
#, fuzzy
+msgid "Rim Texture"
+msgstr "إزالة النقش"
+
+#: scene/resources/material.cpp
+#, fuzzy
msgid "Clearcoat"
msgstr "مسح"
@@ -23691,15 +25596,28 @@ msgid "Clearcoat Gloss"
msgstr "إخلاء الوضع"
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Clearcoat Texture"
+msgstr "مظهر المحرر/برنامج-جودوه"
+
+#: scene/resources/material.cpp
msgid "Anisotropy"
msgstr ""
#: scene/resources/material.cpp
+msgid "Anisotropy Flowmap"
+msgstr ""
+
+#: scene/resources/material.cpp
#, fuzzy
msgid "Ambient Occlusion"
msgstr "الإطباق Occlusion"
#: scene/resources/material.cpp
+msgid "On UV2"
+msgstr ""
+
+#: scene/resources/material.cpp
#, fuzzy
msgid "Texture Channel"
msgstr "منطقة النقش TextureRegion"
@@ -23738,6 +25656,11 @@ msgstr "الانتقال: "
#: scene/resources/material.cpp
#, fuzzy
+msgid "Transmission Texture"
+msgstr "الانتقال: "
+
+#: scene/resources/material.cpp
+#, fuzzy
msgid "Refraction"
msgstr "Ø§Ù„ØªØ¨Ø§Ø¹ÙØ¯Ø§Øª:"
@@ -23756,6 +25679,10 @@ msgid "UV1"
msgstr "ال UV"
#: scene/resources/material.cpp
+msgid "Triplanar"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Triplanar Sharpness"
msgstr ""
@@ -23966,6 +25893,16 @@ msgstr "مظهر المحرر/برنامج-جودوه"
msgid "Point Count"
msgstr "Ø£Ø¶Ù Ù…Ù†ÙØ° أدخال"
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Scale Random"
+msgstr "نسبة التكبير:"
+
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Scale Curve"
+msgstr "إغلاق المنحنى"
+
#: scene/resources/physics_material.cpp
msgid "Rough"
msgstr ""
@@ -24028,10 +25965,6 @@ msgid "A"
msgstr ""
#: scene/resources/shader.cpp
-msgid "Code"
-msgstr ""
-
-#: scene/resources/shader.cpp
#, fuzzy
msgid "Custom Defines"
msgstr "تشغيل المشهد المخصص"
@@ -24128,15 +26061,6 @@ msgstr ""
#: scene/resources/texture.cpp
#, fuzzy
-msgid "Storage"
-msgstr "تخزين الملÙ:"
-
-#: scene/resources/texture.cpp
-msgid "Lossy Quality"
-msgstr ""
-
-#: scene/resources/texture.cpp
-#, fuzzy
msgid "Load Path"
msgstr "تحميل إعداد مسبق"
@@ -24265,11 +26189,6 @@ msgstr "ÙˆØ¸ÙŠÙØ© برمجية Ù…ÙقارÙنة غير صالحة لأجل ذل
msgid "Fallback Environment"
msgstr "عرض البيئة"
-#: scene/resources/world.cpp scene/resources/world_2d.cpp
-#, fuzzy
-msgid "Space"
-msgstr "المشهد الرئيس"
-
#: scene/resources/world.cpp
#, fuzzy
msgid "Scenario"
@@ -24350,10 +26269,37 @@ msgstr ""
msgid "Wet"
msgstr ""
-#: servers/audio/effects/audio_effect_compressor.cpp
-msgid "Threshold"
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "Voice"
msgstr ""
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+msgid "Delay (ms)"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_phaser.cpp
+msgid "Rate Hz"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#, fuzzy
+msgid "Depth (ms)"
+msgstr "العمق"
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+msgid "Level dB"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+#: servers/audio/effects/audio_effect_panner.cpp
+#, fuzzy
+msgid "Pan"
+msgstr "التبويت:"
+
#: servers/audio/effects/audio_effect_compressor.cpp
#: servers/audio/effects/audio_effect_filter.cpp
msgid "Gain"
@@ -24377,20 +26323,6 @@ msgid "Tap 1"
msgstr ""
#: servers/audio/effects/audio_effect_delay.cpp
-msgid "Delay (ms)"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_delay.cpp
-msgid "Level dB"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_delay.cpp
-#: servers/audio/effects/audio_effect_panner.cpp
-#, fuzzy
-msgid "Pan"
-msgstr "التبويت:"
-
-#: servers/audio/effects/audio_effect_delay.cpp
msgid "Tap 2"
msgstr ""
@@ -24452,10 +26384,6 @@ msgstr ""
msgid "Range Max Hz"
msgstr ""
-#: servers/audio/effects/audio_effect_phaser.cpp
-msgid "Rate Hz"
-msgstr ""
-
#: servers/audio/effects/audio_effect_pitch_shift.cpp
msgid "Oversampling"
msgstr ""
@@ -24471,7 +26399,7 @@ msgid "Predelay"
msgstr ""
#: servers/audio/effects/audio_effect_reverb.cpp
-msgid "(msec)"
+msgid "Msec"
msgstr ""
#: servers/audio/effects/audio_effect_reverb.cpp
diff --git a/editor/translations/az.po b/editor/translations/az.po
index ba17aea4c3..7323b532c7 100644
--- a/editor/translations/az.po
+++ b/editor/translations/az.po
@@ -19,7 +19,7 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 4.9-dev\n"
-#: core/bind/core_bind.cpp
+#: core/bind/core_bind.cpp main/main.cpp
msgid "Tablet Driver"
msgstr ""
@@ -113,8 +113,8 @@ msgstr "Animasiyanı Təmizləmə"
#: core/bind/core_bind.cpp editor/editor_settings.cpp main/main.cpp
#: modules/gdscript/gdscript_editor.cpp modules/gridmap/grid_map.cpp
#: modules/mono/csharp_script.cpp modules/visual_script/visual_script_nodes.cpp
-#: scene/2d/tile_map.cpp scene/3d/camera.cpp scene/gui/control.cpp
-#: scene/gui/graph_edit.cpp scene/main/viewport.cpp
+#: scene/2d/tile_map.cpp scene/3d/camera.cpp scene/3d/light.cpp
+#: scene/gui/control.cpp scene/gui/graph_edit.cpp scene/main/viewport.cpp
#: scene/resources/dynamic_font.cpp scene/resources/navigation_mesh.cpp
#: scene/resources/primitive_meshes.cpp scene/resources/sky.cpp
#: scene/resources/style_box.cpp scene/resources/texture.cpp
@@ -213,8 +213,7 @@ msgid "Data"
msgstr ""
#: core/io/file_access_network.cpp core/register_core_types.cpp
-#: editor/editor_settings.cpp editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp main/main.cpp
+#: editor/editor_settings.cpp main/main.cpp
#: modules/gdscript/language_server/gdscript_language_server.cpp
msgid "Network"
msgstr ""
@@ -484,9 +483,10 @@ msgstr ""
msgid "Relative"
msgstr ""
-#: core/os/input_event.cpp scene/2d/camera_2d.cpp
-#: scene/3d/interpolated_camera.cpp scene/animation/animation_player.cpp
-#: scene/resources/environment.cpp
+#: core/os/input_event.cpp scene/2d/camera_2d.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/interpolated_camera.cpp
+#: scene/animation/animation_player.cpp scene/resources/environment.cpp
+#: scene/resources/particles_material.cpp
msgid "Speed"
msgstr ""
@@ -532,8 +532,9 @@ msgstr ""
msgid "Pitch"
msgstr ""
-#: core/os/input_event.cpp scene/2d/physics_body_2d.cpp
-#: scene/3d/physics_body.cpp
+#: core/os/input_event.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/physics_body_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/3d/physics_body.cpp scene/resources/particles_material.cpp
msgid "Velocity"
msgstr ""
@@ -551,6 +552,8 @@ msgid "Controller Value"
msgstr ""
#: core/project_settings.cpp editor/editor_node.cpp main/main.cpp
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/windows/export/export.cpp
#, fuzzy
msgid "Application"
msgstr "Seçiləni Çoxalt"
@@ -567,13 +570,16 @@ msgstr ""
#: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp
#: editor/editor_plugin_settings.cpp editor/editor_profiler.cpp
#: editor/project_manager.cpp editor/settings_config_dialog.cpp
-#: modules/gdnative/nativescript/nativescript.cpp scene/2d/area_2d.cpp
-#: scene/3d/area.cpp scene/main/node.cpp
+#: modules/gdnative/nativescript/nativescript.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/osx/export/export.cpp scene/2d/area_2d.cpp scene/3d/area.cpp
+#: scene/main/node.cpp
msgid "Name"
msgstr ""
#: core/project_settings.cpp editor/editor_help.cpp
-#: modules/visual_script/visual_script_nodes.cpp
+#: modules/visual_script/visual_script_nodes.cpp platform/uwp/export/export.cpp
+#: platform/windows/export/export.cpp
msgid "Description"
msgstr ""
@@ -609,7 +615,7 @@ msgid "Custom User Dir Name"
msgstr ""
#: core/project_settings.cpp editor/animation_track_editor.cpp
-#: editor/editor_audio_buses.cpp servers/audio_server.cpp
+#: editor/editor_audio_buses.cpp main/main.cpp servers/audio_server.cpp
msgid "Audio"
msgstr ""
@@ -761,10 +767,13 @@ msgstr "Siqnalları filtirlə"
msgid "Sharpen Intensity"
msgstr ""
-#: core/project_settings.cpp editor/editor_node.cpp editor/editor_settings.cpp
-#: editor/plugins/script_editor_plugin.cpp editor/project_export.cpp
-#: main/main.cpp modules/gdscript/gdscript.cpp
-#: modules/visual_script/visual_script.cpp scene/3d/room_manager.cpp
+#: core/project_settings.cpp editor/editor_export.cpp editor/editor_node.cpp
+#: editor/editor_settings.cpp editor/plugins/script_editor_plugin.cpp
+#: editor/project_export.cpp main/main.cpp modules/gdscript/gdscript.cpp
+#: modules/visual_script/visual_script.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp scene/3d/room_manager.cpp
#: scene/main/scene_tree.cpp scene/resources/shape_2d.cpp
#: servers/visual_server.cpp
msgid "Debug"
@@ -989,6 +998,7 @@ msgid "Subsurface Scattering"
msgstr ""
#: drivers/gles3/rasterizer_scene_gles3.cpp
+#: editor/import/resource_importer_texture.cpp
#: editor/plugins/spatial_editor_plugin.cpp modules/gltf/gltf_node.cpp
#: modules/gridmap/grid_map.cpp scene/2d/cpu_particles_2d.cpp
#: scene/2d/node_2d.cpp scene/2d/parallax_layer.cpp scene/2d/polygon_2d.cpp
@@ -1300,6 +1310,7 @@ msgid "Editors"
msgstr "RedaktÉ™ et"
#: editor/animation_track_editor.cpp editor/editor_settings.cpp
+#: editor/import/resource_importer_scene.cpp
#: editor/plugins/animation_player_editor_plugin.cpp editor/scene_tree_dock.cpp
#: scene/2d/animated_sprite.cpp scene/2d/cpu_particles_2d.cpp
#: scene/2d/sprite.cpp scene/3d/cpu_particles.cpp scene/3d/sprite_3d.cpp
@@ -1544,14 +1555,14 @@ msgstr "Animasiya addım dəyəri."
msgid "Seconds"
msgstr "SaniyÉ™"
-#: editor/animation_track_editor.cpp
+#: editor/animation_track_editor.cpp editor/import/resource_importer_scene.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp main/main.cpp
#: scene/resources/texture.cpp
msgid "FPS"
msgstr "FPS"
#: editor/animation_track_editor.cpp editor/editor_plugin_settings.cpp
-#: editor/editor_resource_picker.cpp
+#: editor/editor_resource_picker.cpp editor/import/resource_importer_wav.cpp
#: editor/plugins/polygon_2d_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
@@ -2527,7 +2538,9 @@ msgid "Remove Autoload"
msgstr ""
#: editor/editor_autoload_settings.cpp editor/editor_plugin_settings.cpp
-#: modules/gdscript/gdscript.cpp scene/2d/polygon_2d.cpp scene/3d/area.cpp
+#: modules/gdscript/gdscript.cpp platform/android/export/export_plugin.cpp
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#: scene/2d/polygon_2d.cpp scene/3d/area.cpp scene/3d/physics_joint.cpp
#: scene/3d/reflection_probe.cpp scene/main/canvas_layer.cpp
#: scene/resources/material.cpp servers/visual_server.cpp
msgid "Enable"
@@ -2680,6 +2693,57 @@ msgstr ""
#: editor/editor_export.cpp platform/android/export/export_plugin.cpp
#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
+msgid "Custom Template"
+msgstr ""
+
+#: editor/editor_export.cpp editor/project_export.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp
+msgid "Release"
+msgstr ""
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Binary Format"
+msgstr "3D Transformasya izi"
+
+#: editor/editor_export.cpp
+msgid "64 Bits"
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Embed PCK"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Texture Format"
+msgstr "3D Transformasya izi"
+
+#: editor/editor_export.cpp
+msgid "BPTC"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "S3TC"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "ETC"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "ETC2"
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "No BPTC Fallbacks"
+msgstr ""
+
+#: editor/editor_export.cpp platform/android/export/export_plugin.cpp
+#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
msgid "Custom debug template not found."
msgstr ""
@@ -2855,6 +2919,7 @@ msgid "Make Current"
msgstr ""
#: editor/editor_feature_profile.cpp editor/editor_node.cpp
+#: editor/import/resource_importer_scene.cpp
#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
msgid "Import"
msgstr ""
@@ -2981,8 +3046,11 @@ msgstr "UÄŸur!"
msgid "Display Mode"
msgstr ""
-#: editor/editor_file_dialog.cpp main/main.cpp modules/csg/csg_shape.cpp
-#: modules/visual_script/visual_script_nodes.cpp
+#: editor/editor_file_dialog.cpp
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+#: editor/import/resource_importer_wav.cpp main/main.cpp
+#: modules/csg/csg_shape.cpp modules/visual_script/visual_script_nodes.cpp
#: modules/visual_script/visual_script_yield_nodes.cpp scene/2d/light_2d.cpp
#: scene/2d/physics_body_2d.cpp scene/2d/tile_map.cpp
#: scene/3d/baked_lightmap.cpp scene/3d/light.cpp scene/3d/physics_body.cpp
@@ -3116,7 +3184,9 @@ msgstr ""
msgid "Reimport Missing Imported Files"
msgstr ""
-#: editor/editor_help.cpp
+#: editor/editor_help.cpp scene/2d/camera_2d.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/resources/dynamic_font.cpp
+#: scene/resources/style_box.cpp
msgid "Top"
msgstr ""
@@ -3168,6 +3238,7 @@ msgid "Fonts"
msgstr ""
#: editor/editor_help.cpp editor/plugins/theme_editor_plugin.cpp
+#: platform/iphone/export/export.cpp
msgid "Icons"
msgstr ""
@@ -3326,7 +3397,9 @@ msgstr ""
msgid "Pin value [Disabled because '%s' is editor-only]"
msgstr ""
-#: editor/editor_inspector.cpp editor/scene_tree_dock.cpp
+#: editor/editor_inspector.cpp
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+#: editor/scene_tree_dock.cpp
#: modules/visual_script/visual_script_func_nodes.cpp
#: modules/visual_script/visual_script_nodes.cpp
#: modules/visual_script/visual_script_property_selector.cpp
@@ -3640,6 +3713,14 @@ msgid "Quick Open Script..."
msgstr ""
#: editor/editor_node.cpp
+msgid "Save & Reload"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Save changes to '%s' before reloading?"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "Save & Close"
msgstr ""
@@ -3750,6 +3831,10 @@ msgid "Open Project Manager?"
msgstr ""
#: editor/editor_node.cpp
+msgid "Save changes to the following scene(s) before reloading?"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "Save & Quit"
msgstr ""
@@ -3991,8 +4076,8 @@ msgstr ""
#: editor/editor_node.cpp
#, fuzzy
-msgid "Translate Properties"
-msgstr "Animasiya xüsusiyyətləri."
+msgid "Localize Settings"
+msgstr "Ölçmə seçimi"
#: editor/editor_node.cpp
msgid "Restore Scenes On Load"
@@ -4007,9 +4092,8 @@ msgid "Inspector"
msgstr ""
#: editor/editor_node.cpp
-#, fuzzy
-msgid "Capitalize Properties"
-msgstr "Animasiya xüsusiyyətləri."
+msgid "Default Property Name Style"
+msgstr ""
#: editor/editor_node.cpp
msgid "Default Float Step"
@@ -4569,7 +4653,9 @@ msgstr ""
msgid "Update"
msgstr ""
-#: editor/editor_plugin_settings.cpp
+#: editor/editor_plugin_settings.cpp platform/android/export/export_plugin.cpp
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp
msgid "Version"
msgstr ""
@@ -5529,7 +5615,7 @@ msgstr ""
msgid "Rect Custom Position"
msgstr ""
-#: editor/editor_settings.cpp
+#: editor/editor_settings.cpp platform/android/export/export_plugin.cpp
msgid "Screen"
msgstr ""
@@ -5554,6 +5640,19 @@ msgid "Editor SSL Certificates"
msgstr ""
#: editor/editor_settings.cpp
+msgid "HTTP Proxy"
+msgstr ""
+
+#: editor/editor_settings.cpp
+msgid "Host"
+msgstr ""
+
+#: editor/editor_settings.cpp editor/fileserver/editor_file_server.cpp
+#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp
+msgid "Port"
+msgstr ""
+
+#: editor/editor_settings.cpp
msgid "Project Manager"
msgstr ""
@@ -5594,7 +5693,8 @@ msgstr ""
msgid "String Color"
msgstr ""
-#: editor/editor_settings.cpp
+#: editor/editor_settings.cpp platform/javascript/export/export.cpp
+#: platform/uwp/export/export.cpp
msgid "Background Color"
msgstr ""
@@ -5757,22 +5857,6 @@ msgid "Starting the download..."
msgstr ""
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "HTTP Proxy"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Host"
-msgstr ""
-
-#: editor/export_template_manager.cpp editor/fileserver/editor_file_server.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp main/main.cpp
-#: modules/mono/mono_gd/gd_mono.cpp
-msgid "Port"
-msgstr ""
-
-#: editor/export_template_manager.cpp
msgid "Error requesting URL:"
msgstr ""
@@ -6014,6 +6098,7 @@ msgstr ""
#: editor/fileserver/editor_file_server.cpp
#: editor/plugins/version_control_editor_plugin.cpp
+#: platform/uwp/export/export.cpp platform/windows/export/export.cpp
msgid "Password"
msgstr ""
@@ -6379,6 +6464,111 @@ msgstr ""
msgid "Use Ambient"
msgstr ""
+#: editor/import/resource_importer_bitmask.cpp
+#, fuzzy
+msgid "Create From"
+msgstr "Yarat"
+
+#: editor/import/resource_importer_bitmask.cpp
+#: servers/audio/effects/audio_effect_compressor.cpp
+msgid "Threshold"
+msgstr ""
+
+#: editor/import/resource_importer_csv_translation.cpp
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_scene.cpp
+#: editor/import/resource_importer_texture.cpp
+#: editor/import/resource_importer_wav.cpp scene/3d/gi_probe.cpp
+#, fuzzy
+msgid "Compress"
+msgstr "Komponentlər"
+
+#: editor/import/resource_importer_csv_translation.cpp
+msgid "Delimiter"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+msgid "No BPTC If RGB"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/sprite_3d.cpp
+#: scene/resources/material.cpp scene/resources/particles_material.cpp
+#: scene/resources/texture.cpp
+msgid "Flags"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/animation/tween.cpp
+#: scene/resources/texture.cpp
+msgid "Repeat"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/2d/light_2d.cpp
+#: scene/gui/control.cpp scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Filter"
+msgstr "Siqnalları filtirlə"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Mipmaps"
+msgstr "Siqnallar"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+msgid "Anisotropic"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+msgid "sRGB"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+msgid "Slices"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
+#: scene/resources/style_box.cpp
+msgid "Horizontal"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
+#: scene/resources/style_box.cpp
+msgid "Vertical"
+msgstr ""
+
+#: editor/import/resource_importer_obj.cpp
+#, fuzzy
+msgid "Generate Tangents"
+msgstr "Bezier Nöqtələrini Köçür"
+
+#: editor/import/resource_importer_obj.cpp
+#, fuzzy
+msgid "Scale Mesh"
+msgstr "Animasya Açarlarını Ölçülə"
+
+#: editor/import/resource_importer_obj.cpp
+msgid "Offset Mesh"
+msgstr ""
+
+#: editor/import/resource_importer_obj.cpp
+#: editor/import/resource_importer_scene.cpp
+msgid "Octahedral Compression"
+msgstr ""
+
+#: editor/import/resource_importer_obj.cpp
+msgid "Optimize Mesh Flags"
+msgstr ""
+
#: editor/import/resource_importer_scene.cpp
msgid "Import as Single Scene"
msgstr ""
@@ -6419,6 +6609,144 @@ msgstr ""
msgid "Import as Multiple Scenes+Materials"
msgstr ""
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+#: scene/3d/physics_joint.cpp
+msgid "Nodes"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Root Type"
+msgstr "%s növünü dəyişdirin"
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Root Name"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Root Scale"
+msgstr "Animasya Açarlarını Ölçülə"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Custom Script"
+msgstr "SkriptÉ™ qoÅŸulun:"
+
+#: editor/import/resource_importer_scene.cpp scene/resources/texture.cpp
+msgid "Storage"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Use Legacy Names"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+msgid "Materials"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Location"
+msgstr "Animasiyanı Təmizləmə"
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Keep On Reimport"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+msgid "Meshes"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Ensure Tangents"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Light Baking"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Lightmap Texel Size"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+msgid "Skins"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Use Named Skins"
+msgstr "Siqnallar"
+
+#: editor/import/resource_importer_scene.cpp
+msgid "External Files"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Store In Subdir"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Filter Script"
+msgstr "Siqnalları filtirlə"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Keep Custom Tracks"
+msgstr "Animasya transformasiyasını dəyiş"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Optimizer"
+msgstr "Optimallaşdır"
+
+#: editor/import/resource_importer_scene.cpp main/main.cpp
+#: modules/mono/mono_gd/gd_mono.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp scene/2d/camera_2d.cpp scene/2d/light_2d.cpp
+#: scene/2d/navigation_polygon.cpp scene/2d/ray_cast_2d.cpp scene/2d/sprite.cpp
+#: scene/2d/y_sort.cpp scene/3d/audio_stream_player_3d.cpp
+#: scene/3d/baked_lightmap.cpp scene/3d/interpolated_camera.cpp
+#: scene/3d/light.cpp scene/3d/navigation_mesh_instance.cpp
+#: scene/3d/physics_joint.cpp scene/3d/ray_cast.cpp scene/3d/sprite_3d.cpp
+#: scene/gui/graph_edit.cpp scene/gui/rich_text_label.cpp
+#: scene/resources/curve.cpp scene/resources/environment.cpp
+#: scene/resources/material.cpp
+msgid "Enabled"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Max Linear Error"
+msgstr "Maks. Xətti Xəta:"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Max Angular Error"
+msgstr "Maks.Bucaqlı Xəta:"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Max Angle"
+msgstr "Dəyər:"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Remove Unused Tracks"
+msgstr "Animasya İzini Sil"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Clips"
+msgstr "Animasiyalar:"
+
+#: editor/import/resource_importer_scene.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/particles_2d.cpp scene/3d/area.cpp scene/3d/cpu_particles.cpp
+#: scene/3d/particles.cpp scene/resources/environment.cpp
+msgid "Amount"
+msgstr ""
+
#: editor/import/resource_importer_scene.cpp
#: editor/plugins/mesh_library_editor_plugin.cpp
msgid "Import Scene"
@@ -6460,12 +6788,139 @@ msgstr ""
msgid "Saving..."
msgstr ""
+#: editor/import/resource_importer_texture.cpp scene/resources/texture.cpp
+msgid "Lossy Quality"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "HDR Mode"
+msgstr "İnterpolasiya rejimi"
+
+#: editor/import/resource_importer_texture.cpp
+msgid "BPTC LDR"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/mesh_instance_2d.cpp scene/2d/multimesh_instance_2d.cpp
+#: scene/2d/particles_2d.cpp scene/2d/sprite.cpp scene/resources/style_box.cpp
+msgid "Normal Map"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Process"
+msgstr "UÄŸur!"
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Fix Alpha Border"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Premult Alpha"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Hdr As Srgb"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Invert Color"
+msgstr "%s növünü dəyişdirin"
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Normal Map Invert Y"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
+#: scene/audio/audio_stream_player.cpp scene/gui/video_player.cpp
+msgid "Stream"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Size Limit"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Detect 3D"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "SVG"
+msgstr ""
+
#: editor/import/resource_importer_texture.cpp
msgid ""
"Warning, no suitable PC VRAM compression enabled in Project Settings. This "
"texture will not display correctly on PC."
msgstr ""
+#: editor/import/resource_importer_texture_atlas.cpp
+msgid "Atlas File"
+msgstr ""
+
+#: editor/import/resource_importer_texture_atlas.cpp
+#, fuzzy
+msgid "Import Mode"
+msgstr "Yol"
+
+#: editor/import/resource_importer_texture_atlas.cpp
+msgid "Crop To Region"
+msgstr ""
+
+#: editor/import/resource_importer_texture_atlas.cpp
+msgid "Trim Alpha Border From Region"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp scene/2d/physics_body_2d.cpp
+msgid "Force"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+msgid "8 Bit"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp main/main.cpp
+#: modules/mono/editor/csharp_project.cpp modules/mono/mono_gd/gd_mono.cpp
+msgid "Mono"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+#, fuzzy
+msgid "Max Rate"
+msgstr "Dəyər:"
+
+#: editor/import/resource_importer_wav.cpp
+#, fuzzy
+msgid "Max Rate Hz"
+msgstr "Dəyər:"
+
+#: editor/import/resource_importer_wav.cpp
+msgid "Trim"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+#, fuzzy
+msgid "Normalize"
+msgstr "%s növünü dəyişdirin"
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+msgid "Loop Mode"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+msgid "Loop Begin"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+msgid "Loop End"
+msgstr ""
+
#: editor/import_defaults_editor.cpp
msgid "Select Importer"
msgstr ""
@@ -6535,6 +6990,28 @@ msgstr ""
#: editor/inspector_dock.cpp
#, fuzzy
+msgid "Property Name Style"
+msgstr "XassÉ™"
+
+#: editor/inspector_dock.cpp scene/gui/color_picker.cpp
+msgid "Raw"
+msgstr ""
+
+#: editor/inspector_dock.cpp
+#, fuzzy
+msgid "Capitalized"
+msgstr "Animasiya xüsusiyyətləri."
+
+#: editor/inspector_dock.cpp
+msgid "Localized"
+msgstr ""
+
+#: editor/inspector_dock.cpp
+msgid "Localization not available for current language."
+msgstr ""
+
+#: editor/inspector_dock.cpp
+#, fuzzy
msgid "Copy Properties"
msgstr "Animasiya xüsusiyyətləri."
@@ -7565,18 +8042,23 @@ msgid "License (Z-A)"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
+msgctxt "Pagination"
msgid "First"
msgstr ""
-#: editor/plugins/asset_library_editor_plugin.cpp scene/gui/control.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgctxt "Pagination"
msgid "Previous"
-msgstr ""
+msgstr "ÆvvÉ™lki addıma keç"
-#: editor/plugins/asset_library_editor_plugin.cpp scene/gui/control.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgctxt "Pagination"
msgid "Next"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
+msgctxt "Pagination"
msgid "Last"
msgstr ""
@@ -7810,19 +8292,19 @@ msgid ""
"margins."
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Top Left"
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Top Right"
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Bottom Right"
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Bottom Left"
msgstr ""
@@ -8526,6 +9008,19 @@ msgstr ""
msgid "Gradient Edited"
msgstr ""
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+msgid "Swap GradientTexture2D Fill Points"
+msgstr ""
+
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+msgid "Swap Gradient Fill Points"
+msgstr ""
+
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+#, fuzzy
+msgid "Toggle Grid Snap"
+msgstr "İz funksiyasını aktiv edin"
+
#: editor/plugins/item_list_editor_plugin.cpp
msgid "Item %d"
msgstr ""
@@ -8739,8 +9234,8 @@ msgid ""
"%s"
msgstr ""
-#: editor/plugins/mesh_library_editor_plugin.cpp modules/gridmap/grid_map.cpp
-msgid "Mesh Library"
+#: editor/plugins/mesh_library_editor_plugin.cpp
+msgid "MeshLibrary"
msgstr ""
#: editor/plugins/mesh_library_editor_plugin.cpp
@@ -9716,8 +10211,8 @@ msgstr ""
msgid "Source"
msgstr ""
-#: editor/plugins/script_text_editor.cpp scene/3d/interpolated_camera.cpp
-#: scene/animation/skeleton_ik.cpp
+#: editor/plugins/script_text_editor.cpp platform/uwp/export/export.cpp
+#: scene/3d/interpolated_camera.cpp scene/animation/skeleton_ik.cpp
msgid "Target"
msgstr ""
@@ -10676,7 +11171,9 @@ msgstr ""
#: editor/plugins/sprite_frames_editor_plugin.cpp
#: modules/gltf/gltf_animation.cpp modules/minimp3/audio_stream_mp3.cpp
-#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp scene/2d/path_2d.cpp
+#: modules/minimp3/resource_importer_mp3.cpp
+#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp
+#: modules/stb_vorbis/resource_importer_ogg_vorbis.cpp scene/2d/path_2d.cpp
#: scene/3d/path.cpp scene/resources/animation.cpp scene/resources/material.cpp
msgid "Loop"
msgstr ""
@@ -11543,8 +12040,9 @@ msgstr ""
msgid "Priority"
msgstr ""
-#: editor/plugins/tile_set_editor_plugin.cpp main/main.cpp scene/gui/button.cpp
-#: scene/gui/item_list.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp main/main.cpp
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#: scene/gui/button.cpp scene/gui/item_list.cpp
msgid "Icon"
msgstr ""
@@ -12834,10 +13332,6 @@ msgid ""
msgstr ""
#: editor/project_export.cpp
-msgid "Release"
-msgstr ""
-
-#: editor/project_export.cpp
msgid "Exporting All"
msgstr ""
@@ -14601,6 +15095,7 @@ msgid "Change AudioStreamPlayer3D Emission Angle"
msgstr ""
#: editor/spatial_editor_gizmos.cpp modules/gltf/gltf_node.cpp
+#: platform/osx/export/export.cpp
msgid "Camera"
msgstr ""
@@ -14863,7 +15358,8 @@ msgstr ""
msgid "Use Nvidia Rect Flicker Workaround"
msgstr ""
-#: main/main.cpp platform/uwp/os_uwp.cpp
+#: main/main.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp platform/uwp/os_uwp.cpp
msgid "Display"
msgstr ""
@@ -14918,18 +15414,6 @@ msgstr ""
msgid "Allowed"
msgstr ""
-#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp scene/2d/camera_2d.cpp
-#: scene/2d/light_2d.cpp scene/2d/navigation_polygon.cpp
-#: scene/2d/ray_cast_2d.cpp scene/2d/sprite.cpp scene/2d/y_sort.cpp
-#: scene/3d/audio_stream_player_3d.cpp scene/3d/baked_lightmap.cpp
-#: scene/3d/interpolated_camera.cpp scene/3d/light.cpp
-#: scene/3d/navigation_mesh_instance.cpp scene/3d/ray_cast.cpp
-#: scene/3d/sprite_3d.cpp scene/gui/graph_edit.cpp
-#: scene/gui/rich_text_label.cpp scene/resources/curve.cpp
-#: scene/resources/environment.cpp
-msgid "Enabled"
-msgstr ""
-
#: main/main.cpp
msgid "Intended Usage"
msgstr ""
@@ -14958,13 +15442,14 @@ msgstr ""
msgid "Handheld"
msgstr ""
-#: main/main.cpp
+#: main/main.cpp platform/javascript/export/export.cpp
+#: platform/uwp/export/export.cpp
#, fuzzy
msgid "Orientation"
msgstr "Animasiyanı Optimallaşdırma"
#: main/main.cpp scene/gui/scroll_container.cpp scene/gui/text_edit.cpp
-#: scene/main/scene_tree.cpp
+#: scene/main/scene_tree.cpp scene/register_scene_types.cpp
msgid "Common"
msgstr ""
@@ -15004,7 +15489,7 @@ msgstr ""
#: main/main.cpp
#, fuzzy
-msgid "Frame Delay (msec)"
+msgid "Frame Delay Msec"
msgstr "Vaxt (sn): "
#: main/main.cpp
@@ -15122,11 +15607,6 @@ msgstr ""
msgid "Tooltip Position Offset"
msgstr ""
-#: main/main.cpp modules/mono/editor/csharp_project.cpp
-#: modules/mono/mono_gd/gd_mono.cpp
-msgid "Mono"
-msgstr ""
-
#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp
msgid "Debugger Agent"
msgstr ""
@@ -15657,7 +16137,7 @@ msgstr ""
msgid "Intensity"
msgstr ""
-#: modules/gltf/gltf_light.cpp scene/2d/light_2d.cpp
+#: modules/gltf/gltf_light.cpp scene/2d/light_2d.cpp scene/3d/light.cpp
#, fuzzy
msgid "Range"
msgstr "Dəyişdir"
@@ -15790,10 +16270,6 @@ msgstr ""
msgid "Use Named Skin Binds"
msgstr ""
-#: modules/gltf/gltf_state.cpp scene/3d/physics_joint.cpp
-msgid "Nodes"
-msgstr ""
-
#: modules/gltf/gltf_state.cpp
msgid "Buffer Views"
msgstr ""
@@ -15803,14 +16279,6 @@ msgid "Accessors"
msgstr ""
#: modules/gltf/gltf_state.cpp
-msgid "Meshes"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp
-msgid "Materials"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp
#, fuzzy
msgid "Scene Name"
msgstr "Açar sözü buraya daxil edin"
@@ -15825,15 +16293,11 @@ msgstr ""
msgid "Textures"
msgstr ""
-#: modules/gltf/gltf_state.cpp
+#: modules/gltf/gltf_state.cpp platform/uwp/export/export.cpp
msgid "Images"
msgstr ""
#: modules/gltf/gltf_state.cpp
-msgid "Skins"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp
msgid "Cameras"
msgstr ""
@@ -15864,10 +16328,14 @@ msgid "Src Image"
msgstr ""
#: modules/gridmap/grid_map.cpp
-msgid "Physics Material"
+msgid "Mesh Library"
msgstr ""
#: modules/gridmap/grid_map.cpp
+msgid "Physics Material"
+msgstr ""
+
+#: modules/gridmap/grid_map.cpp scene/3d/visual_instance.cpp
msgid "Use In Baked Light"
msgstr ""
@@ -15894,6 +16362,7 @@ msgstr ""
#: modules/gridmap/grid_map.cpp scene/2d/collision_object_2d.cpp
#: scene/2d/tile_map.cpp scene/3d/collision_object.cpp scene/3d/soft_body.cpp
+#: scene/resources/material.cpp
msgid "Mask"
msgstr ""
@@ -16075,7 +16544,9 @@ msgid "Ultra Quality Ray Count"
msgstr ""
#: modules/minimp3/audio_stream_mp3.cpp
+#: modules/minimp3/resource_importer_mp3.cpp
#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp
+#: modules/stb_vorbis/resource_importer_ogg_vorbis.cpp
msgid "Loop Offset"
msgstr ""
@@ -17117,6 +17588,171 @@ msgid "The package must have at least one '.' separator."
msgstr ""
#: platform/android/export/export_plugin.cpp
+msgid "Use Custom Build"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Export Format"
+msgstr "3D Transformasya izi"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Keystore"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Debug User"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+msgid "Debug Password"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Release User"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Release Password"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "One Click Deploy"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Clear Previous Install"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp scene/resources/shader.cpp
+msgid "Code"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Min SDK"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Target SDK"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+msgid "Package"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Unique Name"
+msgstr "Animasiya Addımını Dəyişdirin"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Signed"
+msgstr "Siqnal:"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Classify As Game"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Retain Data On Uninstall"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Exclude From Recents"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Graphics"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "OpenGL Debug"
+msgstr "Aç"
+
+#: platform/android/export/export_plugin.cpp
+msgid "XR Features"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "XR Mode"
+msgstr "Metod çağırma izi"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Hand Tracking"
+msgstr "XassÉ™"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Hand Tracking Frequency"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Passthrough"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Immersive Mode"
+msgstr "İnterpolasiya rejimi"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Support Small"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Support Normal"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Support Large"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Support Xlarge"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "User Data Backup"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Allow"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+msgid "Command Line"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Extra Args"
+msgstr "Ekstra Çağırış Arqumentləri:"
+
+#: platform/android/export/export_plugin.cpp
+msgid "APK Expansion"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Salt"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Public Key"
+msgstr "Açar(lar)ı çoxalt"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Permissions"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Custom Permissions"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
msgid "Select device from the list"
msgstr ""
@@ -17402,6 +18038,169 @@ msgid "The character '%s' is not allowed in Identifier."
msgstr ""
#: platform/iphone/export/export.cpp
+msgid "App Store Team ID"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Provisioning Profile UUID Debug"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Code Sign Identity Debug"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Export Method Debug"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Provisioning Profile UUID Release"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Code Sign Identity Release"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Export Method Release"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Targeted Device Family"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Info"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Identifier"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Signature"
+msgstr "Siqnal:"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Short Version"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Copyright"
+msgstr "Kopyala"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Capabilities"
+msgstr "Animasiya xüsusiyyətləri."
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Access Wi-Fi"
+msgstr "UÄŸur!"
+
+#: platform/iphone/export/export.cpp
+msgid "Push Notifications"
+msgstr ""
+
+#: platform/iphone/export/export.cpp scene/3d/baked_lightmap.cpp
+msgid "User Data"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Accessible From Files App"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Accessible From Itunes Sharing"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Privacy"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Camera Usage Description"
+msgstr "İzah:"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Microphone Usage Description"
+msgstr "İzah:"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Photolibrary Usage Description"
+msgstr "İzah:"
+
+#: platform/iphone/export/export.cpp
+msgid "iPhone 120 X 120"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPhone 180 X 180"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 76 X 76"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 152 X 152"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 167 X 167"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "App Store 1024 X 1024"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Spotlight 40 X 40"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Spotlight 80 X 80"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Storyboard"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Use Launch Screen Storyboard"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Image Scale Mode"
+msgstr "Animasya Açarlarını Ölçülə"
+
+#: platform/iphone/export/export.cpp
+msgid "Custom Image @2x"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Custom Image @3x"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Use Custom BG Color"
+msgstr "Funksiyalar:"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Custom BG Color"
+msgstr "Funksiyalar:"
+
+#: platform/iphone/export/export.cpp
msgid "App Store Team ID not specified - cannot configure the project."
msgstr ""
@@ -17438,6 +18237,77 @@ msgid "Could not read file:"
msgstr ""
#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Variant"
+msgstr "İzah:"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Export Type"
+msgstr "Komponentlər"
+
+#: platform/javascript/export/export.cpp
+msgid "VRAM Texture Compression"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "For Desktop"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "For Mobile"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Html"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Export Icon"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Custom Html Shell"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Head Include"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Canvas Resize Policy"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Focus Canvas On Start"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Experimental Virtual Keyboard"
+msgstr "Siqnalları filtirlə"
+
+#: platform/javascript/export/export.cpp
+msgid "Progressive Web App"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Offline Page"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 144 X 144"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 180 X 180"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 512 X 512"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
msgid "Could not read HTML shell:"
msgstr ""
@@ -17542,6 +18412,186 @@ msgid "Unknown object type."
msgstr ""
#: platform/osx/export/export.cpp
+msgid "App Category"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "High Res"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Location Usage Description"
+msgstr "İzah:"
+
+#: platform/osx/export/export.cpp
+msgid "Address Book Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Calendar Usage Description"
+msgstr "İzah:"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Photos Library Usage Description"
+msgstr "İzah:"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Desktop Folder Usage Description"
+msgstr "İzah:"
+
+#: platform/osx/export/export.cpp
+msgid "Documents Folder Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Downloads Folder Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Network Volumes Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Removable Volumes Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+msgid "Codesign"
+msgstr ""
+
+#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
+#: platform/windows/export/export.cpp
+msgid "Identity"
+msgstr ""
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#, fuzzy
+msgid "Timestamp"
+msgstr "Vaxt:"
+
+#: platform/osx/export/export.cpp
+msgid "Hardened Runtime"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Replace Existing Signature"
+msgstr "Hamısını ÆvÉ™z Et"
+
+#: platform/osx/export/export.cpp
+msgid "Entitlements"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Custom File"
+msgstr "Funksiyalar:"
+
+#: platform/osx/export/export.cpp
+msgid "Allow JIT Code Execution"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Allow Unsigned Executable Memory"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Allow Dyld Environment Variables"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Disable Library Validation"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Audio Input"
+msgstr "Audio kliplər:"
+
+#: platform/osx/export/export.cpp
+msgid "Address Book"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Calendars"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Photos Library"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Apple Events"
+msgstr "Sıfırla"
+
+#: platform/osx/export/export.cpp
+msgid "Debugging"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "App Sandbox"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Network Server"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Network Client"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Device Usb"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Device Bluetooth"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Files Downloads"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Files Pictures"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Files Music"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Files Movies"
+msgstr ""
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#, fuzzy
+msgid "Custom Options"
+msgstr "Animasiyanı Təmizləmə"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Notarization"
+msgstr "Animasiyanı Təmizləmə"
+
+#: platform/osx/export/export.cpp
+msgid "Apple ID Name"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Apple ID Password"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Apple Team ID"
+msgstr ""
+
+#: platform/osx/export/export.cpp
msgid ""
"Note: The notarization process generally takes less than an hour. When the "
"process is completed, you'll receive an email."
@@ -17731,6 +18781,123 @@ msgid "Force Builtin Codesign"
msgstr ""
#: platform/uwp/export/export.cpp
+msgid "Architecture"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Display Name"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Short Name"
+msgstr "Massiv dəyərini dəyiş"
+
+#: platform/uwp/export/export.cpp
+msgid "Publisher"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Publisher Display Name"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Product Guid"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Publisher Guid"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Signing"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Certificate"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Algorithm"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Major"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Minor"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Build"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Revision"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Landscape"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Portrait"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Landscape Flipped"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Portrait Flipped"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Store Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 44 X 44 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 71 X 71 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 150 X 150 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 310 X 310 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Wide 310 X 150 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Splash Screen"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Tiles"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Square 150 X 150"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Wide 310 X 150"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Square 310 X 310"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
msgid "Invalid package short name."
msgstr ""
@@ -17796,11 +18963,44 @@ msgid "Debug Certificate"
msgstr ""
#: platform/uwp/export/export.cpp
-msgid "Debug Password"
+msgid "Debug Algorithm"
msgstr ""
-#: platform/uwp/export/export.cpp
-msgid "Debug Algorithm"
+#: platform/windows/export/export.cpp
+msgid "Identity Type"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Timestamp Server URL"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Digest Algorithm"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "File Version"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Product Version"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Company Name"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Product Name"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "File Description"
+msgstr "İzah:"
+
+#: platform/windows/export/export.cpp
+msgid "Trademarks"
msgstr ""
#: platform/windows/export/export.cpp
@@ -17867,12 +19067,14 @@ msgstr ""
msgid "Centered"
msgstr ""
-#: scene/2d/animated_sprite.cpp scene/2d/camera_2d.cpp scene/2d/light_2d.cpp
+#: scene/2d/animated_sprite.cpp scene/2d/camera_2d.cpp
+#: scene/2d/cpu_particles_2d.cpp scene/2d/light_2d.cpp
#: scene/2d/parallax_background.cpp scene/2d/parallax_layer.cpp
#: scene/2d/path_2d.cpp scene/2d/polygon_2d.cpp scene/2d/sprite.cpp
-#: scene/3d/path.cpp scene/3d/physics_body.cpp scene/3d/sprite_3d.cpp
-#: scene/gui/graph_node.cpp scene/gui/rich_text_effect.cpp
-#: scene/main/canvas_layer.cpp scene/resources/material.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/path.cpp scene/3d/physics_body.cpp
+#: scene/3d/sprite_3d.cpp scene/gui/graph_node.cpp
+#: scene/gui/rich_text_effect.cpp scene/main/canvas_layer.cpp
+#: scene/resources/material.cpp scene/resources/particles_material.cpp
#: scene/resources/style_box.cpp
msgid "Offset"
msgstr ""
@@ -17939,11 +19141,6 @@ msgstr "Audio kliplər:"
msgid "Override"
msgstr ""
-#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
-#: scene/audio/audio_stream_player.cpp scene/gui/video_player.cpp
-msgid "Stream"
-msgstr ""
-
#: scene/2d/audio_stream_player_2d.cpp scene/audio/audio_stream_player.cpp
#: scene/gui/video_player.cpp servers/audio/effects/audio_effect_amplify.cpp
msgid "Volume dB"
@@ -17967,12 +19164,12 @@ msgid "Stream Paused"
msgstr ""
#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
-#: scene/3d/reflection_probe.cpp scene/3d/visual_instance.cpp
-#: scene/resources/material.cpp
+#: scene/3d/light.cpp scene/3d/reflection_probe.cpp
+#: scene/3d/visual_instance.cpp scene/resources/material.cpp
msgid "Max Distance"
msgstr ""
-#: scene/2d/audio_stream_player_2d.cpp
+#: scene/2d/audio_stream_player_2d.cpp scene/3d/light.cpp
#, fuzzy
msgid "Attenuation"
msgstr "Animasiyanı Təmizləmə"
@@ -18024,6 +19221,22 @@ msgstr ""
msgid "Limit"
msgstr ""
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/style_box.cpp
+msgid "Left"
+msgstr ""
+
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/style_box.cpp
+msgid "Right"
+msgstr ""
+
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/dynamic_font.cpp scene/resources/style_box.cpp
+#, fuzzy
+msgid "Bottom"
+msgstr "Funksiyalar:"
+
#: scene/2d/camera_2d.cpp
msgid "Smoothed"
msgstr ""
@@ -18220,12 +19433,6 @@ msgstr ""
msgid "Emitting"
msgstr ""
-#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp scene/3d/area.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
-#: scene/resources/environment.cpp
-msgid "Amount"
-msgstr ""
-
#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp
#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
msgid "Lifetime"
@@ -18286,17 +19493,12 @@ msgstr ""
#: scene/2d/mesh_instance_2d.cpp scene/2d/multimesh_instance_2d.cpp
#: scene/2d/particles_2d.cpp scene/2d/polygon_2d.cpp scene/2d/sprite.cpp
#: scene/3d/sprite_3d.cpp scene/gui/nine_patch_rect.cpp
-#: scene/gui/texture_rect.cpp scene/resources/sky.cpp
-#: scene/resources/style_box.cpp scene/resources/visual_shader_nodes.cpp
+#: scene/gui/texture_rect.cpp scene/resources/material.cpp
+#: scene/resources/sky.cpp scene/resources/style_box.cpp
+#: scene/resources/visual_shader_nodes.cpp
msgid "Texture"
msgstr ""
-#: scene/2d/cpu_particles_2d.cpp scene/2d/mesh_instance_2d.cpp
-#: scene/2d/multimesh_instance_2d.cpp scene/2d/particles_2d.cpp
-#: scene/2d/sprite.cpp scene/resources/style_box.cpp
-msgid "Normal Map"
-msgstr ""
-
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
msgid "Emission Shape"
@@ -18316,9 +19518,8 @@ msgid "Normals"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/3d/sprite_3d.cpp scene/resources/material.cpp
-#: scene/resources/particles_material.cpp scene/resources/texture.cpp
-msgid "Flags"
+#: scene/resources/particles_material.cpp
+msgid "Align Y"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
@@ -18339,6 +19540,11 @@ msgid "Initial Velocity"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Velocity Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp servers/physics_2d_server.cpp
#: servers/physics_server.cpp
msgid "Angular Velocity"
@@ -18346,6 +19552,11 @@ msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+msgid "Velocity Curve"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
msgid "Orbit Velocity"
msgstr ""
@@ -18357,6 +19568,22 @@ msgstr "Xətti"
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Accel"
+msgstr "UÄŸur!"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Accel Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Accel Curve"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
msgid "Radial Accel"
msgstr ""
@@ -18366,19 +19593,53 @@ msgid "Tangential Accel"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/2d/joints_2d.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/vehicle_body.cpp
-#: scene/resources/particles_material.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/physics_joint.cpp
+#: scene/3d/vehicle_body.cpp scene/resources/particles_material.cpp
#: servers/audio/effects/audio_effect_reverb.cpp
msgid "Damping"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+msgid "Damping Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Damping Curve"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp scene/3d/light.cpp
+#: scene/resources/particles_material.cpp
msgid "Angle"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+msgid "Angle Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Angle Curve"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#, fuzzy
+msgid "Scale Amount"
+msgstr "Açar sözü buraya daxil edin"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+msgid "Scale Amount Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#, fuzzy
+msgid "Scale Amount Curve"
+msgstr "Kursordan Ölçülə"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
msgid "Color Ramp"
msgstr ""
@@ -18393,6 +19654,44 @@ msgstr ""
msgid "Hue Variation"
msgstr "İzah:"
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Variation"
+msgstr "İzah:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Variation Random"
+msgstr "İzah:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Variation Curve"
+msgstr "İzah:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Speed Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Speed Curve"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Offset Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Offset Curve"
+msgstr ""
+
#: scene/2d/joints_2d.cpp
msgid "Node A and Node B must be PhysicsBody2Ds"
msgstr ""
@@ -18422,6 +19721,7 @@ msgid "Node B"
msgstr ""
#: scene/2d/joints_2d.cpp scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp
+#: scene/3d/light.cpp scene/3d/physics_joint.cpp
#: scene/resources/environment.cpp
msgid "Bias"
msgstr ""
@@ -18430,7 +19730,7 @@ msgstr ""
msgid "Disable Collision"
msgstr ""
-#: scene/2d/joints_2d.cpp
+#: scene/2d/joints_2d.cpp scene/3d/physics_joint.cpp
msgid "Softness"
msgstr ""
@@ -18447,7 +19747,7 @@ msgstr ""
msgid "Rest Length"
msgstr ""
-#: scene/2d/joints_2d.cpp scene/3d/vehicle_body.cpp
+#: scene/2d/joints_2d.cpp scene/3d/physics_joint.cpp scene/3d/vehicle_body.cpp
msgid "Stiffness"
msgstr ""
@@ -18467,7 +19767,7 @@ msgid "Texture Scale"
msgstr ""
#: scene/2d/light_2d.cpp scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp
-#: scene/resources/environment.cpp scene/resources/sky.cpp
+#: scene/3d/light.cpp scene/resources/environment.cpp scene/resources/sky.cpp
msgid "Energy"
msgstr ""
@@ -18503,12 +19803,6 @@ msgstr ""
msgid "Gradient Length"
msgstr ""
-#: scene/2d/light_2d.cpp scene/gui/control.cpp
-#: scene/resources/navigation_mesh.cpp
-#, fuzzy
-msgid "Filter"
-msgstr "Siqnalları filtirlə"
-
#: scene/2d/light_2d.cpp
#, fuzzy
msgid "Filter Smooth"
@@ -18891,10 +20185,6 @@ msgid "Applied Forces"
msgstr ""
#: scene/2d/physics_body_2d.cpp
-msgid "Force"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp
msgid "Torque"
msgstr ""
@@ -18907,7 +20197,7 @@ msgid "Sync To Physics"
msgstr ""
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-msgid "Moving platform"
+msgid "Moving Platform"
msgstr ""
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
@@ -18916,7 +20206,7 @@ msgstr ""
#: scene/2d/physics_body_2d.cpp scene/2d/touch_screen_button.cpp
#: scene/3d/physics_body.cpp scene/gui/texture_button.cpp
-#: scene/resources/line_shape_2d.cpp
+#: scene/resources/line_shape_2d.cpp scene/resources/material.cpp
msgid "Normal"
msgstr ""
@@ -19128,6 +20418,32 @@ msgid ""
"as parent."
msgstr ""
+#: scene/2d/visibility_notifier_2d.cpp scene/3d/visibility_notifier.cpp
+#, fuzzy
+msgid "Pause Animations"
+msgstr "Animasiyanı Təmizləmə"
+
+#: scene/2d/visibility_notifier_2d.cpp scene/3d/visibility_notifier.cpp
+msgid "Freeze Bodies"
+msgstr ""
+
+#: scene/2d/visibility_notifier_2d.cpp
+msgid "Pause Particles"
+msgstr ""
+
+#: scene/2d/visibility_notifier_2d.cpp
+#, fuzzy
+msgid "Pause Animated Sprites"
+msgstr "Animasiya Addımını Dəyişdirin"
+
+#: scene/2d/visibility_notifier_2d.cpp
+msgid "Process Parent"
+msgstr ""
+
+#: scene/2d/visibility_notifier_2d.cpp
+msgid "Physics Process Parent"
+msgstr ""
+
#: scene/3d/area.cpp
msgid "Reverb Bus"
msgstr ""
@@ -19219,6 +20535,7 @@ msgid "Attenuation Filter"
msgstr ""
#: scene/3d/audio_stream_player_3d.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
#: servers/audio/effects/audio_effect_filter.cpp
msgid "Cutoff Hz"
msgstr ""
@@ -19261,10 +20578,6 @@ msgid "Octree"
msgstr ""
#: scene/3d/baked_lightmap.cpp
-msgid "User Data"
-msgstr ""
-
-#: scene/3d/baked_lightmap.cpp
msgid "Finding meshes and lights"
msgstr ""
@@ -19504,6 +20817,15 @@ msgid "Ring Axis"
msgstr "Xəbərdarlıqlar"
#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Rotate Y"
+msgstr "İnterpolasiya rejimi"
+
+#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
+msgid "Disable Z"
+msgstr ""
+
+#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
msgid "Flatness"
msgstr ""
@@ -19539,16 +20861,11 @@ msgstr ""
msgid "Dynamic Range"
msgstr ""
-#: scene/3d/gi_probe.cpp
+#: scene/3d/gi_probe.cpp scene/3d/light.cpp
msgid "Normal Bias"
msgstr ""
#: scene/3d/gi_probe.cpp
-#, fuzzy
-msgid "Compress"
-msgstr "Komponentlər"
-
-#: scene/3d/gi_probe.cpp
msgid "Plotting Meshes"
msgstr ""
@@ -19574,15 +20891,27 @@ msgid "Subdiv"
msgstr ""
#: scene/3d/light.cpp
+msgid "Indirect Energy"
+msgstr ""
+
+#: scene/3d/light.cpp
msgid "Negative"
msgstr ""
#: scene/3d/light.cpp
+msgid "Specular"
+msgstr ""
+
+#: scene/3d/light.cpp
#, fuzzy
msgid "Bake Mode"
msgstr "Metod çağırma izi"
#: scene/3d/light.cpp
+msgid "Contact"
+msgstr ""
+
+#: scene/3d/light.cpp
msgid "Reverse Cull Face"
msgstr ""
@@ -19591,11 +20920,28 @@ msgid "Directional Shadow"
msgstr ""
#: scene/3d/light.cpp
+msgid "Split 1"
+msgstr ""
+
+#: scene/3d/light.cpp
+msgid "Split 2"
+msgstr ""
+
+#: scene/3d/light.cpp
+msgid "Split 3"
+msgstr ""
+
+#: scene/3d/light.cpp
msgid "Blend Splits"
msgstr ""
#: scene/3d/light.cpp
#, fuzzy
+msgid "Bias Split Scale"
+msgstr "SkriptÉ™ qoÅŸulun:"
+
+#: scene/3d/light.cpp
+#, fuzzy
msgid "Depth Range"
msgstr "Dəyişdir"
@@ -19620,6 +20966,11 @@ msgstr ""
msgid "Spot"
msgstr ""
+#: scene/3d/light.cpp
+#, fuzzy
+msgid "Angle Attenuation"
+msgstr "Animasiyanı Təmizləmə"
+
#: scene/3d/mesh_instance.cpp
msgid "Software Skinning"
msgstr ""
@@ -19738,6 +21089,60 @@ msgid "Axis Lock"
msgstr ""
#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Linear X"
+msgstr "Xətti"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Linear Y"
+msgstr "Xətti"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Linear Z"
+msgstr "Xətti"
+
+#: scene/3d/physics_body.cpp
+msgid "Angular X"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Angular Y"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Angular Z"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Motion X"
+msgstr "Animasiyanı Təmizləmə"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Motion Y"
+msgstr "Animasiyanı Təmizləmə"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Motion Z"
+msgstr "Animasiyanı Təmizləmə"
+
+#: scene/3d/physics_body.cpp
+msgid "Move Lock X"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Move Lock Y"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Move Lock Z"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
msgid "Body Offset"
msgstr ""
@@ -19770,6 +21175,14 @@ msgid "Exclude Nodes"
msgstr ""
#: scene/3d/physics_joint.cpp
+msgid "Params"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Impulse Clamp"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit"
msgstr ""
@@ -19781,6 +21194,55 @@ msgstr ""
msgid "Lower"
msgstr ""
+#: scene/3d/physics_joint.cpp scene/3d/vehicle_body.cpp
+#, fuzzy
+msgid "Relaxation"
+msgstr "İzah:"
+
+#: scene/3d/physics_joint.cpp
+msgid "Motor"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Target Velocity"
+msgstr "Xətti"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Max Impulse"
+msgstr "Dəyər:"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit"
+msgstr "Xətti"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Upper Distance"
+msgstr "Quraşdır"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Lower Distance"
+msgstr "Quraşdır"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Restitution"
+msgstr "Animasiyanı Təmizləmə"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motion"
+msgstr "Xətti"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Ortho"
+msgstr "Xətti"
+
#: scene/3d/physics_joint.cpp
msgid "Upper Angle"
msgstr ""
@@ -19790,6 +21252,16 @@ msgid "Lower Angle"
msgstr ""
#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Angular Motion"
+msgstr "Animasiyanı Təmizləmə"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Angular Ortho"
+msgstr "Maks.Bucaqlı Xəta:"
+
+#: scene/3d/physics_joint.cpp
msgid "Swing Span"
msgstr ""
@@ -19798,17 +21270,98 @@ msgid "Twist Span"
msgstr ""
#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit X"
+msgstr "Xətti"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motor X"
+msgstr "Xətti"
+
+#: scene/3d/physics_joint.cpp
+msgid "Force Limit"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Spring X"
+msgstr "Xətti"
+
+#: scene/3d/physics_joint.cpp
+msgid "Equilibrium Point"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit X"
msgstr ""
#: scene/3d/physics_joint.cpp
+msgid "Erp"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Motor X"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Spring X"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit Y"
+msgstr "Xətti"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motor Y"
+msgstr "Xətti"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Spring Y"
+msgstr "Xətti"
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit Y"
msgstr ""
#: scene/3d/physics_joint.cpp
+msgid "Angular Motor Y"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Spring Y"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit Z"
+msgstr "Xətti"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motor Z"
+msgstr "Xətti"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Spring Z"
+msgstr "Xətti"
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit Z"
msgstr ""
+#: scene/3d/physics_joint.cpp
+msgid "Angular Motor Z"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Spring Z"
+msgstr ""
+
#: scene/3d/portal.cpp
msgid "The RoomManager should not be a child or grandchild of a Portal."
msgstr ""
@@ -19915,7 +21468,7 @@ msgstr ""
msgid "Use Default Simplify"
msgstr ""
-#: scene/3d/room.cpp
+#: scene/3d/room.cpp scene/3d/room_manager.cpp
msgid "Room Simplify"
msgstr ""
@@ -19953,6 +21506,12 @@ msgstr ""
msgid "Main"
msgstr ""
+#: scene/3d/room_manager.cpp scene/animation/animation_player.cpp
+#: scene/animation/animation_tree.cpp scene/animation/animation_tree_player.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+msgid "Active"
+msgstr ""
+
#: scene/3d/room_manager.cpp
msgid "Roomlist"
msgstr ""
@@ -19975,6 +21534,47 @@ msgid "Gameplay"
msgstr ""
#: scene/3d/room_manager.cpp
+msgid "Gameplay Monitor"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "Use Secondary PVS"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "Merge Meshes"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "Show Margins"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "Debug Sprawl"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "Overlap Warning Threshold"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "Preview Camera"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "Portal Depth Limit"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Default Portal Margin"
+msgstr "Ekstra Çağırış Arqumentləri:"
+
+#: scene/3d/room_manager.cpp
+msgid "Roaming Expansion Margin"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
msgid ""
"RoomList path is invalid.\n"
"Please check the RoomList branch has been assigned in the RoomManager."
@@ -20094,6 +21694,19 @@ msgstr ""
msgid "Billboard"
msgstr ""
+#: scene/3d/sprite_3d.cpp scene/resources/material.cpp
+#, fuzzy
+msgid "Transparent"
+msgstr "Animasiyanı Təmizləmə"
+
+#: scene/3d/sprite_3d.cpp
+msgid "Shaded"
+msgstr ""
+
+#: scene/3d/sprite_3d.cpp
+msgid "Double Sided"
+msgstr ""
+
#: scene/3d/sprite_3d.cpp
msgid "Alpha Cut"
msgstr ""
@@ -20161,11 +21774,6 @@ msgstr ""
msgid "Max Force"
msgstr "Maks. Xətti Xəta:"
-#: scene/3d/vehicle_body.cpp
-#, fuzzy
-msgid "Relaxation"
-msgstr "İzah:"
-
#: scene/3d/visibility_notifier.cpp
msgid "AABB"
msgstr ""
@@ -20291,7 +21899,7 @@ msgid "Fadeout Time"
msgstr ""
#: scene/animation/animation_blend_tree.cpp
-msgid "autorestart_"
+msgid "Auto Restart"
msgstr ""
#: scene/animation/animation_blend_tree.cpp
@@ -20369,12 +21977,6 @@ msgstr ""
msgid "Default Blend Time"
msgstr ""
-#: scene/animation/animation_player.cpp scene/animation/animation_tree.cpp
-#: scene/animation/animation_tree_player.cpp
-#: servers/audio/effects/audio_effect_delay.cpp
-msgid "Active"
-msgstr ""
-
#: scene/animation/animation_player.cpp
msgid "Method Call Mode"
msgstr ""
@@ -20490,10 +22092,6 @@ msgstr ""
msgid "Max Iterations"
msgstr "Funksiyalar:"
-#: scene/animation/tween.cpp scene/resources/texture.cpp
-msgid "Repeat"
-msgstr ""
-
#: scene/animation/tween.cpp
msgid "Playback Process Mode"
msgstr ""
@@ -20520,18 +22118,6 @@ msgstr ""
msgid "Alignment"
msgstr ""
-#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
-#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
-#: scene/resources/style_box.cpp
-msgid "Horizontal"
-msgstr ""
-
-#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
-#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
-#: scene/resources/style_box.cpp
-msgid "Vertical"
-msgstr ""
-
#: scene/gui/base_button.cpp
msgid "Shortcut In Tooltip"
msgstr ""
@@ -20622,10 +22208,6 @@ msgid "HSV"
msgstr ""
#: scene/gui/color_picker.cpp
-msgid "Raw"
-msgstr ""
-
-#: scene/gui/color_picker.cpp
msgid "Switch between hexadecimal and code values."
msgstr ""
@@ -20679,6 +22261,30 @@ msgid "Focus"
msgstr ""
#: scene/gui/control.cpp
+msgid "Neighbour Left"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Neighbour Top"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Neighbour Right"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Neighbour Bottom"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Next"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Previous"
+msgstr ""
+
+#: scene/gui/control.cpp
msgid "Mouse"
msgstr ""
@@ -20712,7 +22318,7 @@ msgid "Dialog"
msgstr ""
#: scene/gui/dialogs.cpp
-msgid "Hide On Ok"
+msgid "Hide On OK"
msgstr ""
#: scene/gui/dialogs.cpp scene/gui/label.cpp
@@ -20805,7 +22411,7 @@ msgid "Timers"
msgstr "Vaxt:"
#: scene/gui/item_list.cpp scene/gui/popup_menu.cpp scene/gui/tree.cpp
-msgid "Incremental Search Max Interval (msec)"
+msgid "Incremental Search Max Interval Msec"
msgstr ""
#: scene/gui/item_list.cpp scene/gui/tree.cpp
@@ -21327,6 +22933,26 @@ msgstr ""
msgid "Nine Patch Stretch"
msgstr "İnterpolasiya rejimi"
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Left"
+msgstr "Ölçüm Nisbəti:"
+
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Top"
+msgstr "Ölçüm Nisbəti:"
+
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Right"
+msgstr "Ölçüm Nisbəti:"
+
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Bottom"
+msgstr "Ölçüm Nisbəti:"
+
#: scene/gui/tree.cpp
msgid "Custom Minimum Height"
msgstr ""
@@ -21361,7 +22987,7 @@ msgid "Paused"
msgstr ""
#: scene/gui/video_player.cpp
-msgid "Buffering (msec)"
+msgid "Buffering Msec"
msgstr ""
#: scene/gui/video_player.cpp
@@ -21675,6 +23301,22 @@ msgid "Shadow Atlas"
msgstr ""
#: scene/main/viewport.cpp
+msgid "Quad 0"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 1"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 2"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 3"
+msgstr ""
+
+#: scene/main/viewport.cpp
#, fuzzy
msgid "Canvas Transform"
msgstr "Animasya transformasiyasını dəyiş"
@@ -21689,6 +23331,10 @@ msgid "Tooltip Delay (sec)"
msgstr ""
#: scene/register_scene_types.cpp
+msgid "Swap OK Cancel"
+msgstr ""
+
+#: scene/register_scene_types.cpp
msgid "Use hiDPI"
msgstr ""
@@ -21701,18 +23347,6 @@ msgid "Custom Font"
msgstr ""
#: scene/resources/audio_stream_sample.cpp
-msgid "Loop Mode"
-msgstr ""
-
-#: scene/resources/audio_stream_sample.cpp
-msgid "Loop Begin"
-msgstr ""
-
-#: scene/resources/audio_stream_sample.cpp
-msgid "Loop End"
-msgstr ""
-
-#: scene/resources/audio_stream_sample.cpp
#: servers/audio/effects/audio_stream_generator.cpp servers/audio_server.cpp
msgid "Mix Rate"
msgstr ""
@@ -21766,6 +23400,15 @@ msgid "Extra Spacing"
msgstr ""
#: scene/resources/dynamic_font.cpp
+msgid "Char"
+msgstr ""
+
+#: scene/resources/dynamic_font.cpp scene/resources/world.cpp
+#: scene/resources/world_2d.cpp
+msgid "Space"
+msgstr ""
+
+#: scene/resources/dynamic_font.cpp
msgid "Font"
msgstr ""
@@ -21973,6 +23616,43 @@ msgid "Glow"
msgstr ""
#: scene/resources/environment.cpp
+#, fuzzy
+msgid "Levels"
+msgstr "Developers"
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "1"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "2"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "3"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "4"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "5"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "6"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "7"
+msgstr ""
+
+#: scene/resources/environment.cpp
msgid "Bloom"
msgstr ""
@@ -22058,9 +23738,63 @@ msgid "Next Pass"
msgstr ""
#: scene/resources/material.cpp
+msgid "Use Shadow To Opacity"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Unshaded"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Vertex Lighting"
+msgstr "Bezier Nöqtələrini Köçür"
+
+#: scene/resources/material.cpp
+msgid "No Depth Test"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Use Point Size"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "World Triplanar"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Fixed Size"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Albedo Tex Force sRGB"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Do Not Receive Shadows"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Disable Ambient Light"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Ensure Correct Normals"
+msgstr "3D Transformasya izi"
+
+#: scene/resources/material.cpp
msgid "Vertex Color"
msgstr ""
+#: scene/resources/material.cpp
+msgid "Use As Albedo"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Is sRGB"
+msgstr ""
+
#: scene/resources/material.cpp servers/visual_server.cpp
msgid "Parameters"
msgstr ""
@@ -22092,6 +23826,11 @@ msgid "Billboard Mode"
msgstr "Metod çağırma izi"
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Billboard Keep Scale"
+msgstr "Metod çağırma izi"
+
+#: scene/resources/material.cpp
msgid "Grow"
msgstr ""
@@ -22100,6 +23839,10 @@ msgid "Grow Amount"
msgstr ""
#: scene/resources/material.cpp
+msgid "Use Alpha Scissor"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Alpha Scissor Threshold"
msgstr ""
@@ -22128,10 +23871,20 @@ msgid "Metallic Specular"
msgstr ""
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Metallic Texture"
+msgstr "%s növünü dəyişdirin"
+
+#: scene/resources/material.cpp
msgid "Metallic Texture Channel"
msgstr ""
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Roughness Texture"
+msgstr "%s növünü dəyişdirin"
+
+#: scene/resources/material.cpp
msgid "Roughness Texture Channel"
msgstr ""
@@ -22148,6 +23901,15 @@ msgid "Emission Operator"
msgstr ""
#: scene/resources/material.cpp
+msgid "Emission On UV2"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Emission Texture"
+msgstr "%s növünü dəyişdirin"
+
+#: scene/resources/material.cpp
msgid "NormalMap"
msgstr ""
@@ -22160,6 +23922,11 @@ msgid "Rim Tint"
msgstr ""
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Rim Texture"
+msgstr "%s növünü dəyişdirin"
+
+#: scene/resources/material.cpp
msgid "Clearcoat"
msgstr ""
@@ -22168,14 +23935,27 @@ msgid "Clearcoat Gloss"
msgstr ""
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Clearcoat Texture"
+msgstr "%s növünü dəyişdirin"
+
+#: scene/resources/material.cpp
msgid "Anisotropy"
msgstr ""
#: scene/resources/material.cpp
+msgid "Anisotropy Flowmap"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Ambient Occlusion"
msgstr ""
#: scene/resources/material.cpp
+msgid "On UV2"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Texture Channel"
msgstr ""
@@ -22211,6 +23991,11 @@ msgstr ""
#: scene/resources/material.cpp
#, fuzzy
+msgid "Transmission Texture"
+msgstr "%s növünü dəyişdirin"
+
+#: scene/resources/material.cpp
+#, fuzzy
msgid "Refraction"
msgstr "İzah:"
@@ -22227,6 +24012,10 @@ msgid "UV1"
msgstr ""
#: scene/resources/material.cpp
+msgid "Triplanar"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Triplanar Sharpness"
msgstr ""
@@ -22423,6 +24212,16 @@ msgstr "%s növünü dəyişdirin"
msgid "Point Count"
msgstr "Açar sözü buraya daxil edin"
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Scale Random"
+msgstr "Ölçüm Nisbəti:"
+
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Scale Curve"
+msgstr "Kursordan Ölçülə"
+
#: scene/resources/physics_material.cpp
msgid "Rough"
msgstr ""
@@ -22480,10 +24279,6 @@ msgid "A"
msgstr ""
#: scene/resources/shader.cpp
-msgid "Code"
-msgstr ""
-
-#: scene/resources/shader.cpp
msgid "Custom Defines"
msgstr ""
@@ -22571,14 +24366,6 @@ msgid "Grow End"
msgstr ""
#: scene/resources/texture.cpp
-msgid "Storage"
-msgstr ""
-
-#: scene/resources/texture.cpp
-msgid "Lossy Quality"
-msgstr ""
-
-#: scene/resources/texture.cpp
#, fuzzy
msgid "Load Path"
msgstr "Yol"
@@ -22694,10 +24481,6 @@ msgstr ""
msgid "Fallback Environment"
msgstr ""
-#: scene/resources/world.cpp scene/resources/world_2d.cpp
-msgid "Space"
-msgstr ""
-
#: scene/resources/world.cpp
msgid "Scenario"
msgstr ""
@@ -22771,8 +24554,33 @@ msgstr ""
msgid "Wet"
msgstr ""
-#: servers/audio/effects/audio_effect_compressor.cpp
-msgid "Threshold"
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "Voice"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+msgid "Delay (ms)"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_phaser.cpp
+msgid "Rate Hz"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "Depth (ms)"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+msgid "Level dB"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+#: servers/audio/effects/audio_effect_panner.cpp
+msgid "Pan"
msgstr ""
#: servers/audio/effects/audio_effect_compressor.cpp
@@ -22797,19 +24605,6 @@ msgid "Tap 1"
msgstr ""
#: servers/audio/effects/audio_effect_delay.cpp
-msgid "Delay (ms)"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_delay.cpp
-msgid "Level dB"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_delay.cpp
-#: servers/audio/effects/audio_effect_panner.cpp
-msgid "Pan"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_delay.cpp
msgid "Tap 2"
msgstr ""
@@ -22868,10 +24663,6 @@ msgstr ""
msgid "Range Max Hz"
msgstr ""
-#: servers/audio/effects/audio_effect_phaser.cpp
-msgid "Rate Hz"
-msgstr ""
-
#: servers/audio/effects/audio_effect_pitch_shift.cpp
msgid "Oversampling"
msgstr ""
@@ -22886,7 +24677,7 @@ msgid "Predelay"
msgstr ""
#: servers/audio/effects/audio_effect_reverb.cpp
-msgid "(msec)"
+msgid "Msec"
msgstr ""
#: servers/audio/effects/audio_effect_reverb.cpp
diff --git a/editor/translations/bg.po b/editor/translations/bg.po
index 5f116275a9..34589abcaa 100644
--- a/editor/translations/bg.po
+++ b/editor/translations/bg.po
@@ -30,7 +30,7 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 4.11-dev\n"
-#: core/bind/core_bind.cpp
+#: core/bind/core_bind.cpp main/main.cpp
msgid "Tablet Driver"
msgstr ""
@@ -131,8 +131,8 @@ msgstr "Създаване на функциÑ"
#: core/bind/core_bind.cpp editor/editor_settings.cpp main/main.cpp
#: modules/gdscript/gdscript_editor.cpp modules/gridmap/grid_map.cpp
#: modules/mono/csharp_script.cpp modules/visual_script/visual_script_nodes.cpp
-#: scene/2d/tile_map.cpp scene/3d/camera.cpp scene/gui/control.cpp
-#: scene/gui/graph_edit.cpp scene/main/viewport.cpp
+#: scene/2d/tile_map.cpp scene/3d/camera.cpp scene/3d/light.cpp
+#: scene/gui/control.cpp scene/gui/graph_edit.cpp scene/main/viewport.cpp
#: scene/resources/dynamic_font.cpp scene/resources/navigation_mesh.cpp
#: scene/resources/primitive_meshes.cpp scene/resources/sky.cpp
#: scene/resources/style_box.cpp scene/resources/texture.cpp
@@ -234,8 +234,7 @@ msgid "Data"
msgstr ""
#: core/io/file_access_network.cpp core/register_core_types.cpp
-#: editor/editor_settings.cpp editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp main/main.cpp
+#: editor/editor_settings.cpp main/main.cpp
#: modules/gdscript/language_server/gdscript_language_server.cpp
#, fuzzy
msgid "Network"
@@ -518,9 +517,10 @@ msgstr "КонфигурациÑ…"
msgid "Relative"
msgstr ""
-#: core/os/input_event.cpp scene/2d/camera_2d.cpp
-#: scene/3d/interpolated_camera.cpp scene/animation/animation_player.cpp
-#: scene/resources/environment.cpp
+#: core/os/input_event.cpp scene/2d/camera_2d.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/interpolated_camera.cpp
+#: scene/animation/animation_player.cpp scene/resources/environment.cpp
+#: scene/resources/particles_material.cpp
#, fuzzy
msgid "Speed"
msgstr "СкороÑÑ‚:"
@@ -570,8 +570,9 @@ msgstr "Съобщение за подаването"
msgid "Pitch"
msgstr "Скалиране"
-#: core/os/input_event.cpp scene/2d/physics_body_2d.cpp
-#: scene/3d/physics_body.cpp
+#: core/os/input_event.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/physics_body_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/3d/physics_body.cpp scene/resources/particles_material.cpp
#, fuzzy
msgid "Velocity"
msgstr "Орбитален изглед отдÑÑно"
@@ -590,6 +591,8 @@ msgid "Controller Value"
msgstr ""
#: core/project_settings.cpp editor/editor_node.cpp main/main.cpp
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/windows/export/export.cpp
#, fuzzy
msgid "Application"
msgstr "ДейÑтвие"
@@ -608,13 +611,16 @@ msgstr "ÐаÑтройки на проекта..."
#: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp
#: editor/editor_plugin_settings.cpp editor/editor_profiler.cpp
#: editor/project_manager.cpp editor/settings_config_dialog.cpp
-#: modules/gdnative/nativescript/nativescript.cpp scene/2d/area_2d.cpp
-#: scene/3d/area.cpp scene/main/node.cpp
+#: modules/gdnative/nativescript/nativescript.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/osx/export/export.cpp scene/2d/area_2d.cpp scene/3d/area.cpp
+#: scene/main/node.cpp
msgid "Name"
msgstr "Име"
#: core/project_settings.cpp editor/editor_help.cpp
-#: modules/visual_script/visual_script_nodes.cpp
+#: modules/visual_script/visual_script_nodes.cpp platform/uwp/export/export.cpp
+#: platform/windows/export/export.cpp
msgid "Description"
msgstr "ОпиÑание"
@@ -652,7 +658,7 @@ msgid "Custom User Dir Name"
msgstr ""
#: core/project_settings.cpp editor/animation_track_editor.cpp
-#: editor/editor_audio_buses.cpp servers/audio_server.cpp
+#: editor/editor_audio_buses.cpp main/main.cpp servers/audio_server.cpp
msgid "Audio"
msgstr ""
@@ -811,10 +817,13 @@ msgstr "Филтри:"
msgid "Sharpen Intensity"
msgstr ""
-#: core/project_settings.cpp editor/editor_node.cpp editor/editor_settings.cpp
-#: editor/plugins/script_editor_plugin.cpp editor/project_export.cpp
-#: main/main.cpp modules/gdscript/gdscript.cpp
-#: modules/visual_script/visual_script.cpp scene/3d/room_manager.cpp
+#: core/project_settings.cpp editor/editor_export.cpp editor/editor_node.cpp
+#: editor/editor_settings.cpp editor/plugins/script_editor_plugin.cpp
+#: editor/project_export.cpp main/main.cpp modules/gdscript/gdscript.cpp
+#: modules/visual_script/visual_script.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp scene/3d/room_manager.cpp
#: scene/main/scene_tree.cpp scene/resources/shape_2d.cpp
#: servers/visual_server.cpp
msgid "Debug"
@@ -1049,6 +1058,7 @@ msgid "Subsurface Scattering"
msgstr ""
#: drivers/gles3/rasterizer_scene_gles3.cpp
+#: editor/import/resource_importer_texture.cpp
#: editor/plugins/spatial_editor_plugin.cpp modules/gltf/gltf_node.cpp
#: modules/gridmap/grid_map.cpp scene/2d/cpu_particles_2d.cpp
#: scene/2d/node_2d.cpp scene/2d/parallax_layer.cpp scene/2d/polygon_2d.cpp
@@ -1347,6 +1357,7 @@ msgid "Editors"
msgstr "3-измерен редактор"
#: editor/animation_track_editor.cpp editor/editor_settings.cpp
+#: editor/import/resource_importer_scene.cpp
#: editor/plugins/animation_player_editor_plugin.cpp editor/scene_tree_dock.cpp
#: scene/2d/animated_sprite.cpp scene/2d/cpu_particles_2d.cpp
#: scene/2d/sprite.cpp scene/3d/cpu_particles.cpp scene/3d/sprite_3d.cpp
@@ -1571,14 +1582,14 @@ msgstr "СтойноÑÑ‚ за Ñтъпката на анимациÑта."
msgid "Seconds"
msgstr ""
-#: editor/animation_track_editor.cpp
+#: editor/animation_track_editor.cpp editor/import/resource_importer_scene.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp main/main.cpp
#: scene/resources/texture.cpp
msgid "FPS"
msgstr ""
#: editor/animation_track_editor.cpp editor/editor_plugin_settings.cpp
-#: editor/editor_resource_picker.cpp
+#: editor/editor_resource_picker.cpp editor/import/resource_importer_wav.cpp
#: editor/plugins/polygon_2d_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
@@ -2532,7 +2543,9 @@ msgid "Remove Autoload"
msgstr "Премахване на автозареждането"
#: editor/editor_autoload_settings.cpp editor/editor_plugin_settings.cpp
-#: modules/gdscript/gdscript.cpp scene/2d/polygon_2d.cpp scene/3d/area.cpp
+#: modules/gdscript/gdscript.cpp platform/android/export/export_plugin.cpp
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#: scene/2d/polygon_2d.cpp scene/3d/area.cpp scene/3d/physics_joint.cpp
#: scene/3d/reflection_probe.cpp scene/main/canvas_layer.cpp
#: scene/resources/material.cpp servers/visual_server.cpp
msgid "Enable"
@@ -2686,6 +2699,58 @@ msgstr ""
#: editor/editor_export.cpp platform/android/export/export_plugin.cpp
#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Custom Template"
+msgstr "Тема на редактора"
+
+#: editor/editor_export.cpp editor/project_export.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp
+msgid "Release"
+msgstr ""
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Binary Format"
+msgstr "Uniform за цвÑÑ‚."
+
+#: editor/editor_export.cpp
+msgid "64 Bits"
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Embed PCK"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Texture Format"
+msgstr "ТекÑтурна облаÑÑ‚"
+
+#: editor/editor_export.cpp
+msgid "BPTC"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "S3TC"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "ETC"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "ETC2"
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "No BPTC Fallbacks"
+msgstr ""
+
+#: editor/editor_export.cpp platform/android/export/export_plugin.cpp
+#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
msgid "Custom debug template not found."
msgstr ""
@@ -2859,6 +2924,7 @@ msgid "Make Current"
msgstr ""
#: editor/editor_feature_profile.cpp editor/editor_node.cpp
+#: editor/import/resource_importer_scene.cpp
#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
msgid "Import"
msgstr "ВнаÑÑне"
@@ -2986,8 +3052,11 @@ msgstr "Готово!"
msgid "Display Mode"
msgstr "Режим на възпроизвеждане:"
-#: editor/editor_file_dialog.cpp main/main.cpp modules/csg/csg_shape.cpp
-#: modules/visual_script/visual_script_nodes.cpp
+#: editor/editor_file_dialog.cpp
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+#: editor/import/resource_importer_wav.cpp main/main.cpp
+#: modules/csg/csg_shape.cpp modules/visual_script/visual_script_nodes.cpp
#: modules/visual_script/visual_script_yield_nodes.cpp scene/2d/light_2d.cpp
#: scene/2d/physics_body_2d.cpp scene/2d/tile_map.cpp
#: scene/3d/baked_lightmap.cpp scene/3d/light.cpp scene/3d/physics_body.cpp
@@ -3124,7 +3193,9 @@ msgstr "(Повторно) внаÑÑне на реÑурÑите"
msgid "Reimport Missing Imported Files"
msgstr ""
-#: editor/editor_help.cpp
+#: editor/editor_help.cpp scene/2d/camera_2d.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/resources/dynamic_font.cpp
+#: scene/resources/style_box.cpp
msgid "Top"
msgstr ""
@@ -3176,6 +3247,7 @@ msgid "Fonts"
msgstr "Шрифтове"
#: editor/editor_help.cpp editor/plugins/theme_editor_plugin.cpp
+#: platform/iphone/export/export.cpp
msgid "Icons"
msgstr "Иконки"
@@ -3339,7 +3411,9 @@ msgstr ""
msgid "Pin value [Disabled because '%s' is editor-only]"
msgstr ""
-#: editor/editor_inspector.cpp editor/scene_tree_dock.cpp
+#: editor/editor_inspector.cpp
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+#: editor/scene_tree_dock.cpp
#: modules/visual_script/visual_script_func_nodes.cpp
#: modules/visual_script/visual_script_nodes.cpp
#: modules/visual_script/visual_script_property_selector.cpp
@@ -3650,6 +3724,15 @@ msgid "Quick Open Script..."
msgstr ""
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Save & Reload"
+msgstr "Запазване и реÑтартиране"
+
+#: editor/editor_node.cpp
+msgid "Save changes to '%s' before reloading?"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "Save & Close"
msgstr "Запазване и затварÑне"
@@ -3760,6 +3843,10 @@ msgid "Open Project Manager?"
msgstr "Да Ñе отвори ли мениджърът на проекти?"
#: editor/editor_node.cpp
+msgid "Save changes to the following scene(s) before reloading?"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "Save & Quit"
msgstr "Запазване и изход"
@@ -4030,8 +4117,8 @@ msgstr "Промени в материала:"
#: editor/editor_node.cpp
#, fuzzy
-msgid "Translate Properties"
-msgstr "ПоÑтавÑне на ÑвойÑтвата"
+msgid "Localize Settings"
+msgstr "ÐаÑтройки на решетката"
#: editor/editor_node.cpp
#, fuzzy
@@ -4048,8 +4135,8 @@ msgstr "ИнÑпектор"
#: editor/editor_node.cpp
#, fuzzy
-msgid "Capitalize Properties"
-msgstr "ПоÑтавÑне на ÑвойÑтвата"
+msgid "Default Property Name Style"
+msgstr "Път до проекта:"
#: editor/editor_node.cpp
msgid "Default Float Step"
@@ -4630,7 +4717,9 @@ msgstr "ИнÑталирани приÑтавки:"
msgid "Update"
msgstr ""
-#: editor/editor_plugin_settings.cpp
+#: editor/editor_plugin_settings.cpp platform/android/export/export_plugin.cpp
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp
msgid "Version"
msgstr "ВерÑиÑ"
@@ -5639,7 +5728,7 @@ msgstr ""
msgid "Rect Custom Position"
msgstr "Премахване на перÑÐ¾Ð½Ð°Ð»Ð¸Ð·Ð¸Ñ€Ð°Ð½Ð¸Ñ Ð¿Ð¾Ð»Ð¸Ð³Ð¾Ð½"
-#: editor/editor_settings.cpp
+#: editor/editor_settings.cpp platform/android/export/export_plugin.cpp
msgid "Screen"
msgstr ""
@@ -5666,6 +5755,19 @@ msgid "Editor SSL Certificates"
msgstr "ÐаÑтройки на редактора"
#: editor/editor_settings.cpp
+msgid "HTTP Proxy"
+msgstr ""
+
+#: editor/editor_settings.cpp
+msgid "Host"
+msgstr ""
+
+#: editor/editor_settings.cpp editor/fileserver/editor_file_server.cpp
+#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp
+msgid "Port"
+msgstr ""
+
+#: editor/editor_settings.cpp
msgid "Project Manager"
msgstr "Управление на проектите"
@@ -5706,7 +5808,8 @@ msgstr ""
msgid "String Color"
msgstr ""
-#: editor/editor_settings.cpp
+#: editor/editor_settings.cpp platform/javascript/export/export.cpp
+#: platform/uwp/export/export.cpp
#, fuzzy
msgid "Background Color"
msgstr "Ðеправилен фонов цвÑÑ‚."
@@ -5880,22 +5983,6 @@ msgid "Starting the download..."
msgstr ""
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "HTTP Proxy"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Host"
-msgstr ""
-
-#: editor/export_template_manager.cpp editor/fileserver/editor_file_server.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp main/main.cpp
-#: modules/mono/mono_gd/gd_mono.cpp
-msgid "Port"
-msgstr ""
-
-#: editor/export_template_manager.cpp
msgid "Error requesting URL:"
msgstr "Грешка при заÑвката за адреÑ:"
@@ -6137,6 +6224,7 @@ msgstr ""
#: editor/fileserver/editor_file_server.cpp
#: editor/plugins/version_control_editor_plugin.cpp
+#: platform/uwp/export/export.cpp platform/windows/export/export.cpp
msgid "Password"
msgstr "Парола"
@@ -6500,6 +6588,116 @@ msgstr ""
msgid "Use Ambient"
msgstr ""
+#: editor/import/resource_importer_bitmask.cpp
+#, fuzzy
+msgid "Create From"
+msgstr "Създаване на папка"
+
+#: editor/import/resource_importer_bitmask.cpp
+#: servers/audio/effects/audio_effect_compressor.cpp
+msgid "Threshold"
+msgstr ""
+
+#: editor/import/resource_importer_csv_translation.cpp
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_scene.cpp
+#: editor/import/resource_importer_texture.cpp
+#: editor/import/resource_importer_wav.cpp scene/3d/gi_probe.cpp
+#, fuzzy
+msgid "Compress"
+msgstr "Компоненти"
+
+#: editor/import/resource_importer_csv_translation.cpp
+msgid "Delimiter"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+msgid "No BPTC If RGB"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/sprite_3d.cpp
+#: scene/resources/material.cpp scene/resources/particles_material.cpp
+#: scene/resources/texture.cpp
+msgid "Flags"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/animation/tween.cpp
+#: scene/resources/texture.cpp
+msgid "Repeat"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/2d/light_2d.cpp
+#: scene/gui/control.cpp scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Filter"
+msgstr "Филтри:"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Mipmaps"
+msgstr "Сигнали:"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+msgid "Anisotropic"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+msgid "sRGB"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#, fuzzy
+msgid "Slices"
+msgstr "Ðвтоматично отрÑзване"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
+#: scene/resources/style_box.cpp
+#, fuzzy
+msgid "Horizontal"
+msgstr "Хоризонтала:"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
+#: scene/resources/style_box.cpp
+#, fuzzy
+msgid "Vertical"
+msgstr "Вертикала:"
+
+#: editor/import/resource_importer_obj.cpp
+#, fuzzy
+msgid "Generate Tangents"
+msgstr "Генериране на точки"
+
+#: editor/import/resource_importer_obj.cpp
+#, fuzzy
+msgid "Scale Mesh"
+msgstr "Режим на Ñкалиране"
+
+#: editor/import/resource_importer_obj.cpp
+#, fuzzy
+msgid "Offset Mesh"
+msgstr "ОтмеÑтване:"
+
+#: editor/import/resource_importer_obj.cpp
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Octahedral Compression"
+msgstr "Израз"
+
+#: editor/import/resource_importer_obj.cpp
+msgid "Optimize Mesh Flags"
+msgstr ""
+
#: editor/import/resource_importer_scene.cpp
msgid "Import as Single Scene"
msgstr "ВнаÑÑне като ÑамоÑтоÑтелна Ñцена"
@@ -6540,6 +6738,153 @@ msgstr "ВнаÑÑне като нÑколко Ñцени"
msgid "Import as Multiple Scenes+Materials"
msgstr "ВнаÑÑне като нÑколко Ñцени и материали"
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Nodes"
+msgstr "Обект"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Root Type"
+msgstr "Компоненти"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Root Name"
+msgstr "Име на отдалеченото хранилище"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Root Scale"
+msgstr "Скалиране"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Custom Script"
+msgstr "ПерÑонализиран обект"
+
+#: editor/import/resource_importer_scene.cpp scene/resources/texture.cpp
+msgid "Storage"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Use Legacy Names"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+#, fuzzy
+msgid "Materials"
+msgstr "Промени в материала:"
+
+#: editor/import/resource_importer_scene.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Location"
+msgstr "Стъпка при завъртане:"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Keep On Reimport"
+msgstr "Повторно внаÑÑне"
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+#, fuzzy
+msgid "Meshes"
+msgstr "Полигонна мрежа"
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Ensure Tangents"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Light Baking"
+msgstr "Изпичане на карти на оÑветеноÑÑ‚"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Lightmap Texel Size"
+msgstr "Изпичане на карти на оÑветеноÑÑ‚"
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+msgid "Skins"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Use Named Skins"
+msgstr "Сигнали:"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "External Files"
+msgstr "ОтварÑне на файл"
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Store In Subdir"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Filter Script"
+msgstr "Филтриране на Ñкриптовете"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Keep Custom Tracks"
+msgstr "ТранÑформиране"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Optimizer"
+msgstr "Оптимизиране"
+
+#: editor/import/resource_importer_scene.cpp main/main.cpp
+#: modules/mono/mono_gd/gd_mono.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp scene/2d/camera_2d.cpp scene/2d/light_2d.cpp
+#: scene/2d/navigation_polygon.cpp scene/2d/ray_cast_2d.cpp scene/2d/sprite.cpp
+#: scene/2d/y_sort.cpp scene/3d/audio_stream_player_3d.cpp
+#: scene/3d/baked_lightmap.cpp scene/3d/interpolated_camera.cpp
+#: scene/3d/light.cpp scene/3d/navigation_mesh_instance.cpp
+#: scene/3d/physics_joint.cpp scene/3d/ray_cast.cpp scene/3d/sprite_3d.cpp
+#: scene/gui/graph_edit.cpp scene/gui/rich_text_label.cpp
+#: scene/resources/curve.cpp scene/resources/environment.cpp
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Enabled"
+msgstr "Включване"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Max Linear Error"
+msgstr "Грешка от %s"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Max Angular Error"
+msgstr "Грешка от %s"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Max Angle"
+msgstr "СтойноÑÑ‚"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Remove Unused Tracks"
+msgstr "Премахване на анимационната пътечка"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Clips"
+msgstr "Ðнимационни клипове"
+
+#: editor/import/resource_importer_scene.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/particles_2d.cpp scene/3d/area.cpp scene/3d/cpu_particles.cpp
+#: scene/3d/particles.cpp scene/resources/environment.cpp
+msgid "Amount"
+msgstr ""
+
#: editor/import/resource_importer_scene.cpp
#: editor/plugins/mesh_library_editor_plugin.cpp
msgid "Import Scene"
@@ -6581,12 +6926,146 @@ msgstr ""
msgid "Saving..."
msgstr "Запазване..."
+#: editor/import/resource_importer_texture.cpp scene/resources/texture.cpp
+msgid "Lossy Quality"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "HDR Mode"
+msgstr "Режим на избиране"
+
+#: editor/import/resource_importer_texture.cpp
+msgid "BPTC LDR"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/mesh_instance_2d.cpp scene/2d/multimesh_instance_2d.cpp
+#: scene/2d/particles_2d.cpp scene/2d/sprite.cpp scene/resources/style_box.cpp
+msgid "Normal Map"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Process"
+msgstr "ПоÑтобработка"
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Fix Alpha Border"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Premult Alpha"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Hdr As Srgb"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Invert Color"
+msgstr "Следващ под"
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Normal Map Invert Y"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
+#: scene/audio/audio_stream_player.cpp scene/gui/video_player.cpp
+msgid "Stream"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Size Limit"
+msgstr "Модификатор за ÑкороÑтта на ÑÐ²Ð¾Ð±Ð¾Ð´Ð½Ð¸Ñ Ð¸Ð·Ð³Ð»ÐµÐ´"
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Detect 3D"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "SVG"
+msgstr ""
+
#: editor/import/resource_importer_texture.cpp
msgid ""
"Warning, no suitable PC VRAM compression enabled in Project Settings. This "
"texture will not display correctly on PC."
msgstr ""
+#: editor/import/resource_importer_texture_atlas.cpp
+#, fuzzy
+msgid "Atlas File"
+msgstr "Размер на контура:"
+
+#: editor/import/resource_importer_texture_atlas.cpp
+#, fuzzy
+msgid "Import Mode"
+msgstr "Режим на изнаÑÑне:"
+
+#: editor/import/resource_importer_texture_atlas.cpp
+#, fuzzy
+msgid "Crop To Region"
+msgstr "Задаване на регион от плочки"
+
+#: editor/import/resource_importer_texture_atlas.cpp
+msgid "Trim Alpha Border From Region"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp scene/2d/physics_body_2d.cpp
+#, fuzzy
+msgid "Force"
+msgstr "Принудително изпращане"
+
+#: editor/import/resource_importer_wav.cpp
+msgid "8 Bit"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp main/main.cpp
+#: modules/mono/editor/csharp_project.cpp modules/mono/mono_gd/gd_mono.cpp
+msgid "Mono"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+#, fuzzy
+msgid "Max Rate"
+msgstr "СтойноÑÑ‚"
+
+#: editor/import/resource_importer_wav.cpp
+#, fuzzy
+msgid "Max Rate Hz"
+msgstr "СтойноÑÑ‚"
+
+#: editor/import/resource_importer_wav.cpp
+msgid "Trim"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+#, fuzzy
+msgid "Normalize"
+msgstr "Източник на излъчването: "
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+#, fuzzy
+msgid "Loop Mode"
+msgstr "Режим на премеÑтване"
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+#, fuzzy
+msgid "Loop Begin"
+msgstr "Режим на премеÑтване"
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+#, fuzzy
+msgid "Loop End"
+msgstr "Режим на премеÑтване"
+
#: editor/import_defaults_editor.cpp
msgid "Select Importer"
msgstr "Изберете вид внаÑÑне"
@@ -6655,6 +7134,29 @@ msgid "Failed to load resource."
msgstr "РеÑурÑÑŠÑ‚ не може да бъде зареден."
#: editor/inspector_dock.cpp
+#, fuzzy
+msgid "Property Name Style"
+msgstr "Име на проекта:"
+
+#: editor/inspector_dock.cpp scene/gui/color_picker.cpp
+msgid "Raw"
+msgstr ""
+
+#: editor/inspector_dock.cpp
+#, fuzzy
+msgid "Capitalized"
+msgstr "Ð’ÑÑка дума Ñ Ð³Ð»Ð°Ð²Ð½Ð° буква"
+
+#: editor/inspector_dock.cpp
+#, fuzzy
+msgid "Localized"
+msgstr "Инициализиране"
+
+#: editor/inspector_dock.cpp
+msgid "Localization not available for current language."
+msgstr ""
+
+#: editor/inspector_dock.cpp
msgid "Copy Properties"
msgstr "Копиране на ÑвойÑтвата"
@@ -7695,18 +8197,26 @@ msgid "License (Z-A)"
msgstr "Лиценз (Я-Ð)"
#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgctxt "Pagination"
msgid "First"
msgstr "Първа"
-#: editor/plugins/asset_library_editor_plugin.cpp scene/gui/control.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgctxt "Pagination"
msgid "Previous"
msgstr "Предишна"
-#: editor/plugins/asset_library_editor_plugin.cpp scene/gui/control.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgctxt "Pagination"
msgid "Next"
msgstr "Следваща"
#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgctxt "Pagination"
msgid "Last"
msgstr "ПоÑледна"
@@ -7954,19 +8464,19 @@ msgid ""
"margins."
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Top Left"
msgstr "Горе влÑво"
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Top Right"
msgstr "Горе вдÑÑно"
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Bottom Right"
msgstr "Долу вдÑÑно"
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Bottom Left"
msgstr "Долу влÑво"
@@ -8664,6 +9174,19 @@ msgstr ""
msgid "Gradient Edited"
msgstr ""
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+msgid "Swap GradientTexture2D Fill Points"
+msgstr ""
+
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+msgid "Swap Gradient Fill Points"
+msgstr ""
+
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+#, fuzzy
+msgid "Toggle Grid Snap"
+msgstr "Превключване на любимите"
+
#: editor/plugins/item_list_editor_plugin.cpp
msgid "Item %d"
msgstr ""
@@ -8889,8 +9412,9 @@ msgstr ""
"ОбновÑване от ÑъщеÑтвуващата Ñцена?:\n"
"%s"
-#: editor/plugins/mesh_library_editor_plugin.cpp modules/gridmap/grid_map.cpp
-msgid "Mesh Library"
+#: editor/plugins/mesh_library_editor_plugin.cpp
+#, fuzzy
+msgid "MeshLibrary"
msgstr "Библиотека Ñ Ð¿Ð¾Ð»Ð¸Ð³Ð¾Ð½Ð½Ð¸ мрежи"
#: editor/plugins/mesh_library_editor_plugin.cpp
@@ -9877,8 +10401,8 @@ msgstr "Връзки към метода:"
msgid "Source"
msgstr ""
-#: editor/plugins/script_text_editor.cpp scene/3d/interpolated_camera.cpp
-#: scene/animation/skeleton_ik.cpp
+#: editor/plugins/script_text_editor.cpp platform/uwp/export/export.cpp
+#: scene/3d/interpolated_camera.cpp scene/animation/skeleton_ik.cpp
msgid "Target"
msgstr ""
@@ -10856,7 +11380,9 @@ msgstr "СкороÑÑ‚:"
#: editor/plugins/sprite_frames_editor_plugin.cpp
#: modules/gltf/gltf_animation.cpp modules/minimp3/audio_stream_mp3.cpp
-#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp scene/2d/path_2d.cpp
+#: modules/minimp3/resource_importer_mp3.cpp
+#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp
+#: modules/stb_vorbis/resource_importer_ogg_vorbis.cpp scene/2d/path_2d.cpp
#: scene/3d/path.cpp scene/resources/animation.cpp scene/resources/material.cpp
msgid "Loop"
msgstr "ПовтарÑне"
@@ -11725,8 +12251,9 @@ msgstr "Побитова маÑка"
msgid "Priority"
msgstr "Приоритет"
-#: editor/plugins/tile_set_editor_plugin.cpp main/main.cpp scene/gui/button.cpp
-#: scene/gui/item_list.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp main/main.cpp
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#: scene/gui/button.cpp scene/gui/item_list.cpp
msgid "Icon"
msgstr "Иконка"
@@ -13015,10 +13542,6 @@ msgid ""
msgstr ""
#: editor/project_export.cpp
-msgid "Release"
-msgstr ""
-
-#: editor/project_export.cpp
msgid "Exporting All"
msgstr "ИзнаÑÑне на вÑичко"
@@ -14795,6 +15318,7 @@ msgid "Change AudioStreamPlayer3D Emission Angle"
msgstr ""
#: editor/spatial_editor_gizmos.cpp modules/gltf/gltf_node.cpp
+#: platform/osx/export/export.cpp
msgid "Camera"
msgstr ""
@@ -15070,7 +15594,8 @@ msgstr ""
msgid "Use Nvidia Rect Flicker Workaround"
msgstr ""
-#: main/main.cpp platform/uwp/os_uwp.cpp
+#: main/main.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp platform/uwp/os_uwp.cpp
#, fuzzy
msgid "Display"
msgstr "Показване на вÑичко"
@@ -15129,19 +15654,6 @@ msgstr ""
msgid "Allowed"
msgstr ""
-#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp scene/2d/camera_2d.cpp
-#: scene/2d/light_2d.cpp scene/2d/navigation_polygon.cpp
-#: scene/2d/ray_cast_2d.cpp scene/2d/sprite.cpp scene/2d/y_sort.cpp
-#: scene/3d/audio_stream_player_3d.cpp scene/3d/baked_lightmap.cpp
-#: scene/3d/interpolated_camera.cpp scene/3d/light.cpp
-#: scene/3d/navigation_mesh_instance.cpp scene/3d/ray_cast.cpp
-#: scene/3d/sprite_3d.cpp scene/gui/graph_edit.cpp
-#: scene/gui/rich_text_label.cpp scene/resources/curve.cpp
-#: scene/resources/environment.cpp
-#, fuzzy
-msgid "Enabled"
-msgstr "Включване"
-
#: main/main.cpp
msgid "Intended Usage"
msgstr ""
@@ -15173,13 +15685,14 @@ msgstr ""
msgid "Handheld"
msgstr ""
-#: main/main.cpp
+#: main/main.cpp platform/javascript/export/export.cpp
+#: platform/uwp/export/export.cpp
#, fuzzy
msgid "Orientation"
msgstr "Ð”Ð¾ÐºÑƒÐ¼ÐµÐ½Ñ‚Ð°Ñ†Ð¸Ñ Ð² Интернет"
#: main/main.cpp scene/gui/scroll_container.cpp scene/gui/text_edit.cpp
-#: scene/main/scene_tree.cpp
+#: scene/main/scene_tree.cpp scene/register_scene_types.cpp
msgid "Common"
msgstr ""
@@ -15221,7 +15734,7 @@ msgstr ""
#: main/main.cpp
#, fuzzy
-msgid "Frame Delay (msec)"
+msgid "Frame Delay Msec"
msgstr "Мащабиране до побиране на избраното в изгледа"
#: main/main.cpp
@@ -15346,11 +15859,6 @@ msgstr ""
msgid "Tooltip Position Offset"
msgstr "ОтмеÑтване при завъртане:"
-#: main/main.cpp modules/mono/editor/csharp_project.cpp
-#: modules/mono/mono_gd/gd_mono.cpp
-msgid "Mono"
-msgstr ""
-
#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp
#, fuzzy
msgid "Debugger Agent"
@@ -15920,7 +16428,7 @@ msgstr "Цветове"
msgid "Intensity"
msgstr ""
-#: modules/gltf/gltf_light.cpp scene/2d/light_2d.cpp
+#: modules/gltf/gltf_light.cpp scene/2d/light_2d.cpp scene/3d/light.cpp
msgid "Range"
msgstr ""
@@ -16062,11 +16570,6 @@ msgstr ""
msgid "Use Named Skin Binds"
msgstr ""
-#: modules/gltf/gltf_state.cpp scene/3d/physics_joint.cpp
-#, fuzzy
-msgid "Nodes"
-msgstr "Обект"
-
#: modules/gltf/gltf_state.cpp
#, fuzzy
msgid "Buffer Views"
@@ -16078,16 +16581,6 @@ msgstr ""
#: modules/gltf/gltf_state.cpp
#, fuzzy
-msgid "Meshes"
-msgstr "Полигонна мрежа"
-
-#: modules/gltf/gltf_state.cpp
-#, fuzzy
-msgid "Materials"
-msgstr "Промени в материала:"
-
-#: modules/gltf/gltf_state.cpp
-#, fuzzy
msgid "Scene Name"
msgstr "Път на Ñцената:"
@@ -16103,15 +16596,11 @@ msgstr "Име на ÐºÐ¾Ñ€ÐµÐ½Ð½Ð¸Ñ Ð¾Ð±ÐµÐºÑ‚"
msgid "Textures"
msgstr "ТекÑтурна облаÑÑ‚"
-#: modules/gltf/gltf_state.cpp
+#: modules/gltf/gltf_state.cpp platform/uwp/export/export.cpp
msgid "Images"
msgstr ""
#: modules/gltf/gltf_state.cpp
-msgid "Skins"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp
msgid "Cameras"
msgstr ""
@@ -16145,10 +16634,14 @@ msgid "Src Image"
msgstr ""
#: modules/gridmap/grid_map.cpp
+msgid "Mesh Library"
+msgstr "Библиотека Ñ Ð¿Ð¾Ð»Ð¸Ð³Ð¾Ð½Ð½Ð¸ мрежи"
+
+#: modules/gridmap/grid_map.cpp
msgid "Physics Material"
msgstr ""
-#: modules/gridmap/grid_map.cpp
+#: modules/gridmap/grid_map.cpp scene/3d/visual_instance.cpp
#, fuzzy
msgid "Use In Baked Light"
msgstr "Изпичане на карти на оÑветеноÑÑ‚"
@@ -16180,6 +16673,7 @@ msgstr "По Ñредата горе"
#: modules/gridmap/grid_map.cpp scene/2d/collision_object_2d.cpp
#: scene/2d/tile_map.cpp scene/3d/collision_object.cpp scene/3d/soft_body.cpp
+#: scene/resources/material.cpp
msgid "Mask"
msgstr ""
@@ -16367,7 +16861,9 @@ msgid "Ultra Quality Ray Count"
msgstr ""
#: modules/minimp3/audio_stream_mp3.cpp
+#: modules/minimp3/resource_importer_mp3.cpp
#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp
+#: modules/stb_vorbis/resource_importer_ogg_vorbis.cpp
#, fuzzy
msgid "Loop Offset"
msgstr "ОтмеÑтване:"
@@ -17423,6 +17919,192 @@ msgid "The package must have at least one '.' separator."
msgstr "Пакетът трÑбва да има поне един разделител „.“ (точка)."
#: platform/android/export/export_plugin.cpp
+msgid "Use Custom Build"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Export Format"
+msgstr "Път за изнаÑÑне"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Keystore"
+msgstr "Дебъгер"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Debug User"
+msgstr "Дебъгер"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Debug Password"
+msgstr "Парола"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Release User"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Release Password"
+msgstr "Парола"
+
+#: platform/android/export/export_plugin.cpp
+msgid "One Click Deploy"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Clear Previous Install"
+msgstr "Предишен раздел"
+
+#: platform/android/export/export_plugin.cpp scene/resources/shader.cpp
+msgid "Code"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Min SDK"
+msgstr "Размер на контура:"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Target SDK"
+msgstr "Принудително изпращане"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Package"
+msgstr "Пакет Ñ ÑˆÐ°Ð±Ð»Ð¾Ð½Ð¸"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Unique Name"
+msgstr "Име на обекта:"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Signed"
+msgstr "Сигнал"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Classify As Game"
+msgstr "Име на клаÑа:"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Retain Data On Uninstall"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Exclude From Recents"
+msgstr "Изтриване на обектите"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Graphics"
+msgstr "ОтмеÑтване на мрежата:"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "OpenGL Debug"
+msgstr "ОтварÑне"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "XR Features"
+msgstr "ТекÑтурна облаÑÑ‚"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "XR Mode"
+msgstr "Панорамен режим"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Hand Tracking"
+msgstr "Пътечка за ÑвойÑтво"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Hand Tracking Frequency"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Passthrough"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Immersive Mode"
+msgstr "Режим на приоритет"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Support Small"
+msgstr "Поддръжка"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Support Normal"
+msgstr "Поддръжка"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Support Large"
+msgstr "Поддръжка"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Support Xlarge"
+msgstr "Поддръжка"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "User Data Backup"
+msgstr "ОтварÑне на папката Ñ Ð´Ð°Ð½Ð½Ð¸ на потребителÑ"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Allow"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Command Line"
+msgstr "Command: завъртане"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Extra Args"
+msgstr "Допълнителни наÑтройки:"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "APK Expansion"
+msgstr "Израз"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Salt"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Public Key"
+msgstr "Път до Ð¿ÑƒÐ±Ð»Ð¸Ñ‡Ð½Ð¸Ñ SSH ключ"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Permissions"
+msgstr "Излъчващи точки:"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Custom Permissions"
+msgstr "ПуÑкане на перÑонализирана Ñцена"
+
+#: platform/android/export/export_plugin.cpp
msgid "Select device from the list"
msgstr "Изберете уÑтройÑтво от ÑпиÑъка"
@@ -17739,6 +18421,178 @@ msgid "The character '%s' is not allowed in Identifier."
msgstr ""
#: platform/iphone/export/export.cpp
+msgid "App Store Team ID"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Provisioning Profile UUID Debug"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Code Sign Identity Debug"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Export Method Debug"
+msgstr "ИзнаÑÑне Ñ Ð´Ð°Ð½Ð½Ð¸ за дебъгване"
+
+#: platform/iphone/export/export.cpp
+msgid "Provisioning Profile UUID Release"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Code Sign Identity Release"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Export Method Release"
+msgstr "Режим на изнаÑÑне:"
+
+#: platform/iphone/export/export.cpp
+msgid "Targeted Device Family"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Info"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Identifier"
+msgstr "Ð˜Ð½Ð´ÐµÐºÑ Ð¿Ð¾ Z"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Signature"
+msgstr "Сигнал"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Short Version"
+msgstr "ВерÑиÑ"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Copyright"
+msgstr "Горе вдÑÑно"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Capabilities"
+msgstr "ПоÑтавÑне на ÑвойÑтвата"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Access Wi-Fi"
+msgstr "Готово!"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Push Notifications"
+msgstr "ПоÑтавÑне на анимациÑ"
+
+#: platform/iphone/export/export.cpp scene/3d/baked_lightmap.cpp
+#, fuzzy
+msgid "User Data"
+msgstr "ОтварÑне на папката Ñ Ð´Ð°Ð½Ð½Ð¸ на потребителÑ"
+
+#: platform/iphone/export/export.cpp
+msgid "Accessible From Files App"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Accessible From Itunes Sharing"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Privacy"
+msgstr "Път до чаÑÑ‚Ð½Ð¸Ñ SSH ключ"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Camera Usage Description"
+msgstr "ОпиÑание"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Microphone Usage Description"
+msgstr "ОпиÑÐ°Ð½Ð¸Ñ Ð½Ð° ÑвойÑтвата"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Photolibrary Usage Description"
+msgstr "ОпиÑÐ°Ð½Ð¸Ñ Ð½Ð° ÑвойÑтвата"
+
+#: platform/iphone/export/export.cpp
+msgid "iPhone 120 X 120"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPhone 180 X 180"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 76 X 76"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 152 X 152"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 167 X 167"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "App Store 1024 X 1024"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Spotlight 40 X 40"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Spotlight 80 X 80"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Storyboard"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Use Launch Screen Storyboard"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Image Scale Mode"
+msgstr "Режим на Ñкалиране"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Custom Image @2x"
+msgstr "ПерÑонализиран обект"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Custom Image @3x"
+msgstr "ПерÑонализиран обект"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Use Custom BG Color"
+msgstr "ПерÑонализиран обект"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Custom BG Color"
+msgstr "ПерÑонализиран обект"
+
+#: platform/iphone/export/export.cpp
msgid "App Store Team ID not specified - cannot configure the project."
msgstr ""
@@ -17775,6 +18629,80 @@ msgid "Could not read file:"
msgstr "Файлът не може да бъде прочетен:"
#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Variant"
+msgstr "Разделение:"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Export Type"
+msgstr "ИзнаÑÑне"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "VRAM Texture Compression"
+msgstr "Израз"
+
+#: platform/javascript/export/export.cpp
+msgid "For Desktop"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "For Mobile"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Html"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Export Icon"
+msgstr "Задаване на отÑтъп"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Custom Html Shell"
+msgstr "ПерÑонализиран обект"
+
+#: platform/javascript/export/export.cpp
+msgid "Head Include"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Canvas Resize Policy"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Focus Canvas On Start"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Experimental Virtual Keyboard"
+msgstr "Филтриране на Ñигналите"
+
+#: platform/javascript/export/export.cpp
+msgid "Progressive Web App"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Offline Page"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 144 X 144"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 180 X 180"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 512 X 512"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
msgid "Could not read HTML shell:"
msgstr "ПерÑонализираната HTML-обвивка не може да бъде прочетена:"
@@ -17888,6 +18816,201 @@ msgid "Unknown object type."
msgstr ""
#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "App Category"
+msgstr "КатегориÑ:"
+
+#: platform/osx/export/export.cpp
+msgid "High Res"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Location Usage Description"
+msgstr "ОпиÑание"
+
+#: platform/osx/export/export.cpp
+msgid "Address Book Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Calendar Usage Description"
+msgstr "ОпиÑание"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Photos Library Usage Description"
+msgstr "ОпиÑÐ°Ð½Ð¸Ñ Ð½Ð° ÑвойÑтвата"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Desktop Folder Usage Description"
+msgstr "ОпиÑÐ°Ð½Ð¸Ñ Ð½Ð° методите"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Documents Folder Usage Description"
+msgstr "ОпиÑÐ°Ð½Ð¸Ñ Ð½Ð° методите"
+
+#: platform/osx/export/export.cpp
+msgid "Downloads Folder Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Network Volumes Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Removable Volumes Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#, fuzzy
+msgid "Codesign"
+msgstr "Обект"
+
+#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Identity"
+msgstr "Ð˜Ð½Ð´ÐµÐºÑ Ð¿Ð¾ Z"
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#, fuzzy
+msgid "Timestamp"
+msgstr "Време:"
+
+#: platform/osx/export/export.cpp
+msgid "Hardened Runtime"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Replace Existing Signature"
+msgstr "ЗамÑна във файловете"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Entitlements"
+msgstr "Гизмота"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Custom File"
+msgstr "ПерÑонализиран обект"
+
+#: platform/osx/export/export.cpp
+msgid "Allow JIT Code Execution"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Allow Unsigned Executable Memory"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Allow Dyld Environment Variables"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Disable Library Validation"
+msgstr "Заключен бутон"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Audio Input"
+msgstr "Включване на приоритета"
+
+#: platform/osx/export/export.cpp
+msgid "Address Book"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Calendars"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Photos Library"
+msgstr "ИзнаÑÑне на библиотеката"
+
+#: platform/osx/export/export.cpp
+msgid "Apple Events"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Debugging"
+msgstr "Дебъгване"
+
+#: platform/osx/export/export.cpp
+msgid "App Sandbox"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Network Server"
+msgstr "Профилиране на мрежата"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Network Client"
+msgstr "Профилиране на мрежата"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Device Usb"
+msgstr "УÑтройÑтво"
+
+#: platform/osx/export/export.cpp
+msgid "Device Bluetooth"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Files Downloads"
+msgstr "ИзтеглÑне"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Files Pictures"
+msgstr "Филтриране на плочките"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Files Music"
+msgstr "Файл"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Files Movies"
+msgstr "Филтриране на плочките"
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#, fuzzy
+msgid "Custom Options"
+msgstr "ÐаÑтройки на шината"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Notarization"
+msgstr "ÐавигациÑ"
+
+#: platform/osx/export/export.cpp
+msgid "Apple ID Name"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Apple ID Password"
+msgstr "Парола"
+
+#: platform/osx/export/export.cpp
+msgid "Apple Team ID"
+msgstr ""
+
+#: platform/osx/export/export.cpp
msgid ""
"Note: The notarization process generally takes less than an hour. When the "
"process is completed, you'll receive an email."
@@ -18082,6 +19205,134 @@ msgid "Force Builtin Codesign"
msgstr ""
#: platform/uwp/export/export.cpp
+msgid "Architecture"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Display Name"
+msgstr "Показване на вÑичко"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Short Name"
+msgstr "Име на Ñкрипта:"
+
+#: platform/uwp/export/export.cpp
+msgid "Publisher"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Publisher Display Name"
+msgstr "Ðеправилно име за показване на Ð¸Ð·Ð´Ð°Ñ‚ÐµÐ»Ñ Ð½Ð° пакет."
+
+#: platform/uwp/export/export.cpp
+msgid "Product Guid"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Publisher Guid"
+msgstr "ИзчиÑтване на водачите"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Signing"
+msgstr "Сигнал"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Certificate"
+msgstr "ВертекÑи:"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Algorithm"
+msgstr "Дебъгер"
+
+#: platform/uwp/export/export.cpp
+msgid "Major"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Minor"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Build"
+msgstr "Режим на линиÑта"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Revision"
+msgstr "Израз"
+
+#: platform/uwp/export/export.cpp
+msgid "Landscape"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Portrait"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Landscape Flipped"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Portrait Flipped"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Store Logo"
+msgstr "Режим на Ñкалиране"
+
+#: platform/uwp/export/export.cpp
+msgid "Square 44 X 44 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 71 X 71 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 150 X 150 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 310 X 310 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Wide 310 X 150 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Splash Screen"
+msgstr "Ð˜Ð·Ð²Ð¸ÐºÐ²Ð°Ð½Ð¸Ñ Ð·Ð° изчертаване:"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Tiles"
+msgstr "Файл"
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Square 150 X 150"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Wide 310 X 150"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Square 310 X 310"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
msgid "Invalid package short name."
msgstr "Ðеправилно кратко име на пакет."
@@ -18148,15 +19399,52 @@ msgstr ""
#: platform/uwp/export/export.cpp
#, fuzzy
-msgid "Debug Password"
-msgstr "Парола"
+msgid "Debug Algorithm"
+msgstr "Дебъгер"
-#: platform/uwp/export/export.cpp
+#: platform/windows/export/export.cpp
+msgid "Identity Type"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Timestamp Server URL"
+msgstr ""
+
+#: platform/windows/export/export.cpp
#, fuzzy
-msgid "Debug Algorithm"
+msgid "Digest Algorithm"
msgstr "Дебъгер"
#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "File Version"
+msgstr "ВерÑиÑ"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Product Version"
+msgstr "Ðеправилен продуктов GUID."
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Company Name"
+msgstr "Име на обекта:"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Product Name"
+msgstr "Име на проекта:"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "File Description"
+msgstr "ОпиÑание"
+
+#: platform/windows/export/export.cpp
+msgid "Trademarks"
+msgstr ""
+
+#: platform/windows/export/export.cpp
msgid ""
"The rcedit tool must be configured in the Editor Settings (Export > Windows "
"> Rcedit) to change the icon or app information data."
@@ -18229,12 +19517,14 @@ msgstr ""
msgid "Centered"
msgstr "По Ñредата влÑво"
-#: scene/2d/animated_sprite.cpp scene/2d/camera_2d.cpp scene/2d/light_2d.cpp
+#: scene/2d/animated_sprite.cpp scene/2d/camera_2d.cpp
+#: scene/2d/cpu_particles_2d.cpp scene/2d/light_2d.cpp
#: scene/2d/parallax_background.cpp scene/2d/parallax_layer.cpp
#: scene/2d/path_2d.cpp scene/2d/polygon_2d.cpp scene/2d/sprite.cpp
-#: scene/3d/path.cpp scene/3d/physics_body.cpp scene/3d/sprite_3d.cpp
-#: scene/gui/graph_node.cpp scene/gui/rich_text_effect.cpp
-#: scene/main/canvas_layer.cpp scene/resources/material.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/path.cpp scene/3d/physics_body.cpp
+#: scene/3d/sprite_3d.cpp scene/gui/graph_node.cpp
+#: scene/gui/rich_text_effect.cpp scene/main/canvas_layer.cpp
+#: scene/resources/material.cpp scene/resources/particles_material.cpp
#: scene/resources/style_box.cpp
#, fuzzy
msgid "Offset"
@@ -18306,11 +19596,6 @@ msgstr "Изтриване на звуковата шина"
msgid "Override"
msgstr "ЗамÑна на вÑичко"
-#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
-#: scene/audio/audio_stream_player.cpp scene/gui/video_player.cpp
-msgid "Stream"
-msgstr ""
-
#: scene/2d/audio_stream_player_2d.cpp scene/audio/audio_stream_player.cpp
#: scene/gui/video_player.cpp servers/audio/effects/audio_effect_amplify.cpp
#, fuzzy
@@ -18337,12 +19622,12 @@ msgid "Stream Paused"
msgstr ""
#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
-#: scene/3d/reflection_probe.cpp scene/3d/visual_instance.cpp
-#: scene/resources/material.cpp
+#: scene/3d/light.cpp scene/3d/reflection_probe.cpp
+#: scene/3d/visual_instance.cpp scene/resources/material.cpp
msgid "Max Distance"
msgstr ""
-#: scene/2d/audio_stream_player_2d.cpp
+#: scene/2d/audio_stream_player_2d.cpp scene/3d/light.cpp
#, fuzzy
msgid "Attenuation"
msgstr "ÐнимациÑ"
@@ -18397,6 +19682,24 @@ msgstr "Режим на премеÑтване"
msgid "Limit"
msgstr ""
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/style_box.cpp
+#, fuzzy
+msgid "Left"
+msgstr "Горе влÑво"
+
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/style_box.cpp
+#, fuzzy
+msgid "Right"
+msgstr "Горе вдÑÑно"
+
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/dynamic_font.cpp scene/resources/style_box.cpp
+#, fuzzy
+msgid "Bottom"
+msgstr "Долу влÑво"
+
#: scene/2d/camera_2d.cpp
msgid "Smoothed"
msgstr ""
@@ -18622,12 +19925,6 @@ msgstr ""
msgid "Emitting"
msgstr "ÐаÑтройки:"
-#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp scene/3d/area.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
-#: scene/resources/environment.cpp
-msgid "Amount"
-msgstr ""
-
#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp
#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
msgid "Lifetime"
@@ -18690,18 +19987,13 @@ msgstr ""
#: scene/2d/mesh_instance_2d.cpp scene/2d/multimesh_instance_2d.cpp
#: scene/2d/particles_2d.cpp scene/2d/polygon_2d.cpp scene/2d/sprite.cpp
#: scene/3d/sprite_3d.cpp scene/gui/nine_patch_rect.cpp
-#: scene/gui/texture_rect.cpp scene/resources/sky.cpp
-#: scene/resources/style_box.cpp scene/resources/visual_shader_nodes.cpp
+#: scene/gui/texture_rect.cpp scene/resources/material.cpp
+#: scene/resources/sky.cpp scene/resources/style_box.cpp
+#: scene/resources/visual_shader_nodes.cpp
#, fuzzy
msgid "Texture"
msgstr "Като текÑÑ‚"
-#: scene/2d/cpu_particles_2d.cpp scene/2d/mesh_instance_2d.cpp
-#: scene/2d/multimesh_instance_2d.cpp scene/2d/particles_2d.cpp
-#: scene/2d/sprite.cpp scene/resources/style_box.cpp
-msgid "Normal Map"
-msgstr ""
-
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
#, fuzzy
@@ -18724,10 +20016,10 @@ msgid "Normals"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/3d/sprite_3d.cpp scene/resources/material.cpp
-#: scene/resources/particles_material.cpp scene/resources/texture.cpp
-msgid "Flags"
-msgstr ""
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Align Y"
+msgstr "Задаване"
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
@@ -18748,6 +20040,12 @@ msgid "Initial Velocity"
msgstr "Инициализиране"
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Velocity Random"
+msgstr "Орбитален изглед отдÑÑно"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp servers/physics_2d_server.cpp
#: servers/physics_server.cpp
msgid "Angular Velocity"
@@ -18756,6 +20054,12 @@ msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
#, fuzzy
+msgid "Velocity Curve"
+msgstr "Орбитален изглед отдÑÑно"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
msgid "Orbit Velocity"
msgstr "Орбитален изглед отдÑÑно"
@@ -18767,6 +20071,23 @@ msgstr "Линейно"
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Accel"
+msgstr "Готово!"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Accel Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Accel Curve"
+msgstr "Дълбочина"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
msgid "Radial Accel"
msgstr ""
@@ -18776,19 +20097,54 @@ msgid "Tangential Accel"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/2d/joints_2d.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/vehicle_body.cpp
-#: scene/resources/particles_material.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/physics_joint.cpp
+#: scene/3d/vehicle_body.cpp scene/resources/particles_material.cpp
#: servers/audio/effects/audio_effect_reverb.cpp
msgid "Damping"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+msgid "Damping Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Damping Curve"
+msgstr "Дълбочина"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp scene/3d/light.cpp
+#: scene/resources/particles_material.cpp
msgid "Angle"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+msgid "Angle Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Angle Curve"
+msgstr "Дълбочина"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#, fuzzy
+msgid "Scale Amount"
+msgstr "ИнÑтанциране на Ñцена тук"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+msgid "Scale Amount Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+msgid "Scale Amount Curve"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
#, fuzzy
msgid "Color Ramp"
msgstr "Цветове"
@@ -18804,6 +20160,48 @@ msgstr ""
msgid "Hue Variation"
msgstr "Разделение:"
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Variation"
+msgstr "Разделение:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Variation Random"
+msgstr "Разделение:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Variation Curve"
+msgstr "Разделение:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Speed Random"
+msgstr "Скалиране"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Speed Curve"
+msgstr "Избиране на текущото"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Offset Random"
+msgstr "ОтмеÑтване:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Offset Curve"
+msgstr "Дълбочина"
+
#: scene/2d/joints_2d.cpp
msgid "Node A and Node B must be PhysicsBody2Ds"
msgstr ""
@@ -18835,6 +20233,7 @@ msgid "Node B"
msgstr "Обект"
#: scene/2d/joints_2d.cpp scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp
+#: scene/3d/light.cpp scene/3d/physics_joint.cpp
#: scene/resources/environment.cpp
msgid "Bias"
msgstr ""
@@ -18844,7 +20243,7 @@ msgstr ""
msgid "Disable Collision"
msgstr "Заключен бутон"
-#: scene/2d/joints_2d.cpp
+#: scene/2d/joints_2d.cpp scene/3d/physics_joint.cpp
msgid "Softness"
msgstr ""
@@ -18862,7 +20261,7 @@ msgstr "Инициализиране"
msgid "Rest Length"
msgstr ""
-#: scene/2d/joints_2d.cpp scene/3d/vehicle_body.cpp
+#: scene/2d/joints_2d.cpp scene/3d/physics_joint.cpp scene/3d/vehicle_body.cpp
msgid "Stiffness"
msgstr ""
@@ -18885,7 +20284,7 @@ msgid "Texture Scale"
msgstr "ТекÑтурна облаÑÑ‚"
#: scene/2d/light_2d.cpp scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp
-#: scene/resources/environment.cpp scene/resources/sky.cpp
+#: scene/3d/light.cpp scene/resources/environment.cpp scene/resources/sky.cpp
msgid "Energy"
msgstr ""
@@ -18923,12 +20322,6 @@ msgstr "Изглед отзад"
msgid "Gradient Length"
msgstr "Тема по подразбиране"
-#: scene/2d/light_2d.cpp scene/gui/control.cpp
-#: scene/resources/navigation_mesh.cpp
-#, fuzzy
-msgid "Filter"
-msgstr "Филтри:"
-
#: scene/2d/light_2d.cpp
#, fuzzy
msgid "Filter Smooth"
@@ -19349,11 +20742,6 @@ msgid "Applied Forces"
msgstr ""
#: scene/2d/physics_body_2d.cpp
-#, fuzzy
-msgid "Force"
-msgstr "Принудително изпращане"
-
-#: scene/2d/physics_body_2d.cpp
msgid "Torque"
msgstr ""
@@ -19368,7 +20756,7 @@ msgstr ""
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
#, fuzzy
-msgid "Moving platform"
+msgid "Moving Platform"
msgstr "ПремеÑтване на изходÑщите данни"
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
@@ -19377,7 +20765,7 @@ msgstr ""
#: scene/2d/physics_body_2d.cpp scene/2d/touch_screen_button.cpp
#: scene/3d/physics_body.cpp scene/gui/texture_button.cpp
-#: scene/resources/line_shape_2d.cpp
+#: scene/resources/line_shape_2d.cpp scene/resources/material.cpp
msgid "Normal"
msgstr ""
@@ -19617,6 +21005,34 @@ msgid ""
"as parent."
msgstr ""
+#: scene/2d/visibility_notifier_2d.cpp scene/3d/visibility_notifier.cpp
+#, fuzzy
+msgid "Pause Animations"
+msgstr "ПоÑтавÑне на анимациÑ"
+
+#: scene/2d/visibility_notifier_2d.cpp scene/3d/visibility_notifier.cpp
+msgid "Freeze Bodies"
+msgstr ""
+
+#: scene/2d/visibility_notifier_2d.cpp
+#, fuzzy
+msgid "Pause Particles"
+msgstr "ПоÑтавÑне на параметрите"
+
+#: scene/2d/visibility_notifier_2d.cpp
+#, fuzzy
+msgid "Pause Animated Sprites"
+msgstr "ПоÑтавÑне на анимациÑ"
+
+#: scene/2d/visibility_notifier_2d.cpp
+#, fuzzy
+msgid "Process Parent"
+msgstr "Включване на приоритета"
+
+#: scene/2d/visibility_notifier_2d.cpp
+msgid "Physics Process Parent"
+msgstr ""
+
#: scene/3d/area.cpp
msgid "Reverb Bus"
msgstr ""
@@ -19712,6 +21128,7 @@ msgid "Attenuation Filter"
msgstr ""
#: scene/3d/audio_stream_player_3d.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
#: servers/audio/effects/audio_effect_filter.cpp
msgid "Cutoff Hz"
msgstr ""
@@ -19756,11 +21173,6 @@ msgid "Octree"
msgstr "Поддърво"
#: scene/3d/baked_lightmap.cpp
-#, fuzzy
-msgid "User Data"
-msgstr "ОтварÑне на папката Ñ Ð´Ð°Ð½Ð½Ð¸ на потребителÑ"
-
-#: scene/3d/baked_lightmap.cpp
msgid "Finding meshes and lights"
msgstr "ТърÑене на полигонни мрежи и Ñветлини"
@@ -20016,6 +21428,16 @@ msgid "Ring Axis"
msgstr "ОÑ"
#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Rotate Y"
+msgstr "РотациÑ"
+
+#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Disable Z"
+msgstr "Заключен елемент"
+
+#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
msgid "Flatness"
msgstr ""
@@ -20055,16 +21477,11 @@ msgstr "Динамична библиотека"
msgid "Dynamic Range"
msgstr "Динамична библиотека"
-#: scene/3d/gi_probe.cpp
+#: scene/3d/gi_probe.cpp scene/3d/light.cpp
msgid "Normal Bias"
msgstr ""
#: scene/3d/gi_probe.cpp
-#, fuzzy
-msgid "Compress"
-msgstr "Компоненти"
-
-#: scene/3d/gi_probe.cpp
msgid "Plotting Meshes"
msgstr "ПоÑтроÑване на полигонните мрежи"
@@ -20090,16 +21507,31 @@ msgid "Subdiv"
msgstr ""
#: scene/3d/light.cpp
+#, fuzzy
+msgid "Indirect Energy"
+msgstr "Излъчващи точки:"
+
+#: scene/3d/light.cpp
msgid "Negative"
msgstr ""
#: scene/3d/light.cpp
#, fuzzy
+msgid "Specular"
+msgstr "Режим на линиÑта"
+
+#: scene/3d/light.cpp
+#, fuzzy
msgid "Bake Mode"
msgstr "Режим на побитова маÑка"
#: scene/3d/light.cpp
#, fuzzy
+msgid "Contact"
+msgstr "Съдържание:"
+
+#: scene/3d/light.cpp
+#, fuzzy
msgid "Reverse Cull Face"
msgstr "Име на отдалеченото хранилище"
@@ -20110,11 +21542,31 @@ msgstr "ÐаправлениÑ"
#: scene/3d/light.cpp
#, fuzzy
+msgid "Split 1"
+msgstr "Разделен"
+
+#: scene/3d/light.cpp
+#, fuzzy
+msgid "Split 2"
+msgstr "Разделен"
+
+#: scene/3d/light.cpp
+#, fuzzy
+msgid "Split 3"
+msgstr "Разделен"
+
+#: scene/3d/light.cpp
+#, fuzzy
msgid "Blend Splits"
msgstr "Времена на ÑмеÑване:"
#: scene/3d/light.cpp
#, fuzzy
+msgid "Bias Split Scale"
+msgstr "Ðов Ñкрипт"
+
+#: scene/3d/light.cpp
+#, fuzzy
msgid "Depth Range"
msgstr "Дълбочина"
@@ -20140,6 +21592,11 @@ msgstr ""
msgid "Spot"
msgstr ""
+#: scene/3d/light.cpp
+#, fuzzy
+msgid "Angle Attenuation"
+msgstr "ÐнимациÑ"
+
#: scene/3d/mesh_instance.cpp
msgid "Software Skinning"
msgstr ""
@@ -20269,6 +21726,63 @@ msgstr "ОÑ"
#: scene/3d/physics_body.cpp
#, fuzzy
+msgid "Linear X"
+msgstr "Линейно"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Linear Y"
+msgstr "Линейно"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Linear Z"
+msgstr "Линейно"
+
+#: scene/3d/physics_body.cpp
+msgid "Angular X"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Angular Y"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Angular Z"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Motion X"
+msgstr "ДейÑтвие"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Motion Y"
+msgstr "ДейÑтвие"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Motion Z"
+msgstr "ДейÑтвие"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Move Lock X"
+msgstr "ПремеÑтване на обекта"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Move Lock Y"
+msgstr "ПремеÑтване на обекта"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Move Lock Z"
+msgstr "ПремеÑтване на обекта"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
msgid "Body Offset"
msgstr "ОтмеÑтване:"
@@ -20302,6 +21816,15 @@ msgid "Exclude Nodes"
msgstr "Изтриване на обектите"
#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Params"
+msgstr "Параметърът е променен:"
+
+#: scene/3d/physics_joint.cpp
+msgid "Impulse Clamp"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit"
msgstr ""
@@ -20315,6 +21838,55 @@ msgstr "Главни букви"
msgid "Lower"
msgstr "Малки букви"
+#: scene/3d/physics_joint.cpp scene/3d/vehicle_body.cpp
+#, fuzzy
+msgid "Relaxation"
+msgstr "Разделение:"
+
+#: scene/3d/physics_joint.cpp
+msgid "Motor"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Target Velocity"
+msgstr "Орбитален изглед отдÑÑно"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Max Impulse"
+msgstr "СкороÑÑ‚:"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit"
+msgstr "Линейно"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Upper Distance"
+msgstr "Изберете главна Ñцена"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Lower Distance"
+msgstr "Изберете главна Ñцена"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Restitution"
+msgstr "ОпиÑание"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motion"
+msgstr "Инициализиране"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Ortho"
+msgstr "Линейно"
+
#: scene/3d/physics_joint.cpp
#, fuzzy
msgid "Upper Angle"
@@ -20327,6 +21899,15 @@ msgstr "Малки букви"
#: scene/3d/physics_joint.cpp
#, fuzzy
+msgid "Angular Motion"
+msgstr "ÐнимациÑ"
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Ortho"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
msgid "Swing Span"
msgstr "Запазване на Ñцената"
@@ -20335,17 +21916,99 @@ msgid "Twist Span"
msgstr ""
#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit X"
+msgstr "Линейно"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motor X"
+msgstr "Инициализиране"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Force Limit"
+msgstr "Ð˜Ð·Ð²Ð¸ÐºÐ²Ð°Ð½Ð¸Ñ Ð·Ð° изчертаване:"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Spring X"
+msgstr "Линейно"
+
+#: scene/3d/physics_joint.cpp
+msgid "Equilibrium Point"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit X"
msgstr ""
#: scene/3d/physics_joint.cpp
+msgid "Erp"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Motor X"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Spring X"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit Y"
+msgstr "Линейно"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motor Y"
+msgstr "Инициализиране"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Spring Y"
+msgstr "Линейно"
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit Y"
msgstr ""
#: scene/3d/physics_joint.cpp
+msgid "Angular Motor Y"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Spring Y"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit Z"
+msgstr "Линейно"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motor Z"
+msgstr "Инициализиране"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Spring Z"
+msgstr "Линейно"
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit Z"
msgstr ""
+#: scene/3d/physics_joint.cpp
+msgid "Angular Motor Z"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Spring Z"
+msgstr ""
+
#: scene/3d/portal.cpp
msgid "The RoomManager should not be a child or grandchild of a Portal."
msgstr ""
@@ -20464,7 +22127,7 @@ msgstr ""
msgid "Use Default Simplify"
msgstr ""
-#: scene/3d/room.cpp
+#: scene/3d/room.cpp scene/3d/room_manager.cpp
msgid "Room Simplify"
msgstr ""
@@ -20503,6 +22166,13 @@ msgstr ""
msgid "Main"
msgstr ""
+#: scene/3d/room_manager.cpp scene/animation/animation_player.cpp
+#: scene/animation/animation_tree.cpp scene/animation/animation_tree_player.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+#, fuzzy
+msgid "Active"
+msgstr "ДейÑтвие"
+
#: scene/3d/room_manager.cpp
msgid "Roomlist"
msgstr ""
@@ -20526,6 +22196,52 @@ msgid "Gameplay"
msgstr ""
#: scene/3d/room_manager.cpp
+msgid "Gameplay Monitor"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "Use Secondary PVS"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Merge Meshes"
+msgstr "Полигонна мрежа"
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Show Margins"
+msgstr "Задаване на отÑтъп"
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Debug Sprawl"
+msgstr "Дебъгване"
+
+#: scene/3d/room_manager.cpp
+msgid "Overlap Warning Threshold"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Preview Camera"
+msgstr "Преглед"
+
+#: scene/3d/room_manager.cpp
+msgid "Portal Depth Limit"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Default Portal Margin"
+msgstr "Задаване на отÑтъп"
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Roaming Expansion Margin"
+msgstr "Задаване на отÑтъп"
+
+#: scene/3d/room_manager.cpp
msgid ""
"RoomList path is invalid.\n"
"Please check the RoomList branch has been assigned in the RoomManager."
@@ -20649,6 +22365,20 @@ msgstr "Прилепване към пикÑелите"
msgid "Billboard"
msgstr ""
+#: scene/3d/sprite_3d.cpp scene/resources/material.cpp
+#, fuzzy
+msgid "Transparent"
+msgstr "ТранÑлиране"
+
+#: scene/3d/sprite_3d.cpp
+#, fuzzy
+msgid "Shaded"
+msgstr "Промени в шейдъра:"
+
+#: scene/3d/sprite_3d.cpp
+msgid "Double Sided"
+msgstr ""
+
#: scene/3d/sprite_3d.cpp
msgid "Alpha Cut"
msgstr ""
@@ -20721,11 +22451,6 @@ msgstr "Израз"
msgid "Max Force"
msgstr "Грешка от %s"
-#: scene/3d/vehicle_body.cpp
-#, fuzzy
-msgid "Relaxation"
-msgstr "Разделение:"
-
#: scene/3d/visibility_notifier.cpp
msgid "AABB"
msgstr ""
@@ -20859,7 +22584,7 @@ msgstr ""
#: scene/animation/animation_blend_tree.cpp
#, fuzzy
-msgid "autorestart_"
+msgid "Auto Restart"
msgstr "Ðвтоматично реÑтартиране:"
#: scene/animation/animation_blend_tree.cpp
@@ -20944,13 +22669,6 @@ msgstr "ÐаÑтройки на клаÑа:"
msgid "Default Blend Time"
msgstr "Тема по подразбиране"
-#: scene/animation/animation_player.cpp scene/animation/animation_tree.cpp
-#: scene/animation/animation_tree_player.cpp
-#: servers/audio/effects/audio_effect_delay.cpp
-#, fuzzy
-msgid "Active"
-msgstr "ДейÑтвие"
-
#: scene/animation/animation_player.cpp
msgid "Method Call Mode"
msgstr ""
@@ -21072,10 +22790,6 @@ msgstr "Създаване на обект"
msgid "Max Iterations"
msgstr "Преобразуване във функциÑ"
-#: scene/animation/tween.cpp scene/resources/texture.cpp
-msgid "Repeat"
-msgstr ""
-
#: scene/animation/tween.cpp
msgid "Playback Process Mode"
msgstr ""
@@ -21104,20 +22818,6 @@ msgstr "Режим на избиране"
msgid "Alignment"
msgstr ""
-#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
-#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
-#: scene/resources/style_box.cpp
-#, fuzzy
-msgid "Horizontal"
-msgstr "Хоризонтала:"
-
-#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
-#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
-#: scene/resources/style_box.cpp
-#, fuzzy
-msgid "Vertical"
-msgstr "Вертикала:"
-
#: scene/gui/base_button.cpp
msgid "Shortcut In Tooltip"
msgstr ""
@@ -21213,10 +22913,6 @@ msgid "HSV"
msgstr ""
#: scene/gui/color_picker.cpp
-msgid "Raw"
-msgstr ""
-
-#: scene/gui/color_picker.cpp
msgid "Switch between hexadecimal and code values."
msgstr ""
@@ -21275,6 +22971,31 @@ msgid "Focus"
msgstr ""
#: scene/gui/control.cpp
+msgid "Neighbour Left"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Neighbour Top"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Neighbour Right"
+msgstr ""
+
+#: scene/gui/control.cpp
+#, fuzzy
+msgid "Neighbour Bottom"
+msgstr "По Ñредата долу"
+
+#: scene/gui/control.cpp
+msgid "Next"
+msgstr "Следваща"
+
+#: scene/gui/control.cpp
+msgid "Previous"
+msgstr "Предишна"
+
+#: scene/gui/control.cpp
msgid "Mouse"
msgstr ""
@@ -21311,7 +23032,7 @@ msgid "Dialog"
msgstr "Диалогов прозорец XForm"
#: scene/gui/dialogs.cpp
-msgid "Hide On Ok"
+msgid "Hide On OK"
msgstr ""
#: scene/gui/dialogs.cpp scene/gui/label.cpp
@@ -21409,7 +23130,7 @@ msgid "Timers"
msgstr "Време:"
#: scene/gui/item_list.cpp scene/gui/popup_menu.cpp scene/gui/tree.cpp
-msgid "Incremental Search Max Interval (msec)"
+msgid "Incremental Search Max Interval Msec"
msgstr ""
#: scene/gui/item_list.cpp scene/gui/tree.cpp
@@ -21968,6 +23689,26 @@ msgstr "По Ñредата влÑво"
msgid "Nine Patch Stretch"
msgstr "Режим на интерполациÑ"
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Left"
+msgstr "Задаване на отÑтъп"
+
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Top"
+msgstr "Задаване на отÑтъп"
+
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Right"
+msgstr "Задаване на отÑтъп"
+
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Bottom"
+msgstr "Режим на избиране"
+
#: scene/gui/tree.cpp
msgid "Custom Minimum Height"
msgstr ""
@@ -22004,8 +23745,9 @@ msgid "Paused"
msgstr ""
#: scene/gui/video_player.cpp
-msgid "Buffering (msec)"
-msgstr ""
+#, fuzzy
+msgid "Buffering Msec"
+msgstr "Изглед отзад"
#: scene/gui/video_player.cpp
msgid "Stream Position"
@@ -22347,6 +24089,22 @@ msgid "Shadow Atlas"
msgstr "Показване на вÑички езици"
#: scene/main/viewport.cpp
+msgid "Quad 0"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 1"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 2"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 3"
+msgstr ""
+
+#: scene/main/viewport.cpp
#, fuzzy
msgid "Canvas Transform"
msgstr "ИзчиÑтване на транÑформациÑта"
@@ -22361,6 +24119,11 @@ msgid "Tooltip Delay (sec)"
msgstr ""
#: scene/register_scene_types.cpp
+#, fuzzy
+msgid "Swap OK Cancel"
+msgstr "Отказ"
+
+#: scene/register_scene_types.cpp
msgid "Use hiDPI"
msgstr ""
@@ -22375,21 +24138,6 @@ msgid "Custom Font"
msgstr "ПерÑонализиран обект"
#: scene/resources/audio_stream_sample.cpp
-#, fuzzy
-msgid "Loop Mode"
-msgstr "Режим на премеÑтване"
-
-#: scene/resources/audio_stream_sample.cpp
-#, fuzzy
-msgid "Loop Begin"
-msgstr "Режим на премеÑтване"
-
-#: scene/resources/audio_stream_sample.cpp
-#, fuzzy
-msgid "Loop End"
-msgstr "Режим на премеÑтване"
-
-#: scene/resources/audio_stream_sample.cpp
#: servers/audio/effects/audio_stream_generator.cpp servers/audio_server.cpp
msgid "Mix Rate"
msgstr ""
@@ -22447,6 +24195,17 @@ msgstr "Допълнителни наÑтройки:"
#: scene/resources/dynamic_font.cpp
#, fuzzy
+msgid "Char"
+msgstr "Позволени знаци:"
+
+#: scene/resources/dynamic_font.cpp scene/resources/world.cpp
+#: scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Space"
+msgstr "Ð˜Ð·Ð²Ð¸ÐºÐ²Ð°Ð½Ð¸Ñ Ð·Ð° изчертаване:"
+
+#: scene/resources/dynamic_font.cpp
+#, fuzzy
msgid "Font"
msgstr "Шрифтове"
@@ -22668,6 +24427,42 @@ msgid "Glow"
msgstr ""
#: scene/resources/environment.cpp
+msgid "Levels"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "1"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "2"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "3"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "4"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "5"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "6"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "7"
+msgstr ""
+
+#: scene/resources/environment.cpp
msgid "Bloom"
msgstr ""
@@ -22760,9 +24555,66 @@ msgid "Next Pass"
msgstr "Следваща равнина"
#: scene/resources/material.cpp
+msgid "Use Shadow To Opacity"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Unshaded"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Vertex Lighting"
+msgstr "Директно оÑветÑване"
+
+#: scene/resources/material.cpp
+msgid "No Depth Test"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Use Point Size"
+msgstr "Изглед отпред"
+
+#: scene/resources/material.cpp
+msgid "World Triplanar"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Fixed Size"
+msgstr "Изглед отпред"
+
+#: scene/resources/material.cpp
+msgid "Albedo Tex Force sRGB"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Do Not Receive Shadows"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Disable Ambient Light"
+msgstr "По Ñредата вдÑÑно"
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Ensure Correct Normals"
+msgstr "КонÑтанта за транÑформациÑ."
+
+#: scene/resources/material.cpp
msgid "Vertex Color"
msgstr ""
+#: scene/resources/material.cpp
+msgid "Use As Albedo"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Is sRGB"
+msgstr ""
+
#: scene/resources/material.cpp servers/visual_server.cpp
#, fuzzy
msgid "Parameters"
@@ -22799,6 +24651,11 @@ msgid "Billboard Mode"
msgstr "Режим на линиÑта"
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Billboard Keep Scale"
+msgstr "Режим на линиÑта"
+
+#: scene/resources/material.cpp
msgid "Grow"
msgstr ""
@@ -22808,6 +24665,10 @@ msgid "Grow Amount"
msgstr "Хоризонтала:"
#: scene/resources/material.cpp
+msgid "Use Alpha Scissor"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Alpha Scissor Threshold"
msgstr ""
@@ -22839,10 +24700,20 @@ msgid "Metallic Specular"
msgstr ""
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Metallic Texture"
+msgstr "Източник на излъчването: "
+
+#: scene/resources/material.cpp
msgid "Metallic Texture Channel"
msgstr ""
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Roughness Texture"
+msgstr "Премахване на текÑтурата"
+
+#: scene/resources/material.cpp
msgid "Roughness Texture Channel"
msgstr ""
@@ -22862,6 +24733,16 @@ msgid "Emission Operator"
msgstr "Източник на излъчването: "
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Emission On UV2"
+msgstr "Излъчващи точки:"
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Emission Texture"
+msgstr "Източник на излъчването: "
+
+#: scene/resources/material.cpp
msgid "NormalMap"
msgstr ""
@@ -22875,6 +24756,11 @@ msgstr ""
#: scene/resources/material.cpp
#, fuzzy
+msgid "Rim Texture"
+msgstr "Премахване на текÑтурата"
+
+#: scene/resources/material.cpp
+#, fuzzy
msgid "Clearcoat"
msgstr "ИзчиÑтване"
@@ -22884,15 +24770,28 @@ msgid "Clearcoat Gloss"
msgstr "ИзчиÑтване на коÑтите"
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Clearcoat Texture"
+msgstr "Тема на редактора"
+
+#: scene/resources/material.cpp
msgid "Anisotropy"
msgstr ""
#: scene/resources/material.cpp
+msgid "Anisotropy Flowmap"
+msgstr ""
+
+#: scene/resources/material.cpp
#, fuzzy
msgid "Ambient Occlusion"
msgstr "Прикриване"
#: scene/resources/material.cpp
+msgid "On UV2"
+msgstr ""
+
+#: scene/resources/material.cpp
#, fuzzy
msgid "Texture Channel"
msgstr "ТекÑтурна облаÑÑ‚"
@@ -22930,6 +24829,11 @@ msgstr "Преход: "
#: scene/resources/material.cpp
#, fuzzy
+msgid "Transmission Texture"
+msgstr "Преход: "
+
+#: scene/resources/material.cpp
+#, fuzzy
msgid "Refraction"
msgstr "Разделение:"
@@ -22946,6 +24850,10 @@ msgid "UV1"
msgstr ""
#: scene/resources/material.cpp
+msgid "Triplanar"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Triplanar Sharpness"
msgstr ""
@@ -23150,6 +25058,16 @@ msgstr "Тема на редактора"
msgid "Point Count"
msgstr "ДобавÑне на входÑщ порт"
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Scale Random"
+msgstr "Режим на Ñкалиране"
+
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Scale Curve"
+msgstr "Режим на Ñкалиране"
+
#: scene/resources/physics_material.cpp
msgid "Rough"
msgstr ""
@@ -23211,10 +25129,6 @@ msgid "A"
msgstr ""
#: scene/resources/shader.cpp
-msgid "Code"
-msgstr ""
-
-#: scene/resources/shader.cpp
#, fuzzy
msgid "Custom Defines"
msgstr "ПуÑкане на перÑонализирана Ñцена"
@@ -23310,14 +25224,6 @@ msgid "Grow End"
msgstr ""
#: scene/resources/texture.cpp
-msgid "Storage"
-msgstr ""
-
-#: scene/resources/texture.cpp
-msgid "Lossy Quality"
-msgstr ""
-
-#: scene/resources/texture.cpp
#, fuzzy
msgid "Load Path"
msgstr "Път"
@@ -23444,11 +25350,6 @@ msgstr ""
msgid "Fallback Environment"
msgstr "Показване на обкръжението"
-#: scene/resources/world.cpp scene/resources/world_2d.cpp
-#, fuzzy
-msgid "Space"
-msgstr "Ð˜Ð·Ð²Ð¸ÐºÐ²Ð°Ð½Ð¸Ñ Ð·Ð° изчертаване:"
-
#: scene/resources/world.cpp
#, fuzzy
msgid "Scenario"
@@ -23527,10 +25428,37 @@ msgstr ""
msgid "Wet"
msgstr ""
-#: servers/audio/effects/audio_effect_compressor.cpp
-msgid "Threshold"
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "Voice"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+msgid "Delay (ms)"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_phaser.cpp
+msgid "Rate Hz"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#, fuzzy
+msgid "Depth (ms)"
+msgstr "Дълбочина"
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+msgid "Level dB"
msgstr ""
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+#: servers/audio/effects/audio_effect_panner.cpp
+#, fuzzy
+msgid "Pan"
+msgstr "Равнина:"
+
#: servers/audio/effects/audio_effect_compressor.cpp
#: servers/audio/effects/audio_effect_filter.cpp
msgid "Gain"
@@ -23553,20 +25481,6 @@ msgid "Tap 1"
msgstr ""
#: servers/audio/effects/audio_effect_delay.cpp
-msgid "Delay (ms)"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_delay.cpp
-msgid "Level dB"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_delay.cpp
-#: servers/audio/effects/audio_effect_panner.cpp
-#, fuzzy
-msgid "Pan"
-msgstr "Равнина:"
-
-#: servers/audio/effects/audio_effect_delay.cpp
msgid "Tap 2"
msgstr ""
@@ -23625,10 +25539,6 @@ msgstr ""
msgid "Range Max Hz"
msgstr ""
-#: servers/audio/effects/audio_effect_phaser.cpp
-msgid "Rate Hz"
-msgstr ""
-
#: servers/audio/effects/audio_effect_pitch_shift.cpp
msgid "Oversampling"
msgstr ""
@@ -23644,7 +25554,7 @@ msgid "Predelay"
msgstr ""
#: servers/audio/effects/audio_effect_reverb.cpp
-msgid "(msec)"
+msgid "Msec"
msgstr ""
#: servers/audio/effects/audio_effect_reverb.cpp
diff --git a/editor/translations/bn.po b/editor/translations/bn.po
index 5a8e9476ea..501f201651 100644
--- a/editor/translations/bn.po
+++ b/editor/translations/bn.po
@@ -27,7 +27,7 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Weblate 4.8-dev\n"
-#: core/bind/core_bind.cpp
+#: core/bind/core_bind.cpp main/main.cpp
msgid "Tablet Driver"
msgstr ""
@@ -130,8 +130,8 @@ msgstr "ডà§à¦• পজিশন"
#: core/bind/core_bind.cpp editor/editor_settings.cpp main/main.cpp
#: modules/gdscript/gdscript_editor.cpp modules/gridmap/grid_map.cpp
#: modules/mono/csharp_script.cpp modules/visual_script/visual_script_nodes.cpp
-#: scene/2d/tile_map.cpp scene/3d/camera.cpp scene/gui/control.cpp
-#: scene/gui/graph_edit.cpp scene/main/viewport.cpp
+#: scene/2d/tile_map.cpp scene/3d/camera.cpp scene/3d/light.cpp
+#: scene/gui/control.cpp scene/gui/graph_edit.cpp scene/main/viewport.cpp
#: scene/resources/dynamic_font.cpp scene/resources/navigation_mesh.cpp
#: scene/resources/primitive_meshes.cpp scene/resources/sky.cpp
#: scene/resources/style_box.cpp scene/resources/texture.cpp
@@ -235,8 +235,7 @@ msgid "Data"
msgstr ""
#: core/io/file_access_network.cpp core/register_core_types.cpp
-#: editor/editor_settings.cpp editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp main/main.cpp
+#: editor/editor_settings.cpp main/main.cpp
#: modules/gdscript/language_server/gdscript_language_server.cpp
#, fuzzy
msgid "Network"
@@ -517,9 +516,10 @@ msgstr "পà§à¦°à¦¿à¦¸à§‡à¦Ÿ..."
msgid "Relative"
msgstr "আপেকà§à¦·à¦¿à¦• সà§à¦¨à§à¦¯à¦¾à¦ª"
-#: core/os/input_event.cpp scene/2d/camera_2d.cpp
-#: scene/3d/interpolated_camera.cpp scene/animation/animation_player.cpp
-#: scene/resources/environment.cpp
+#: core/os/input_event.cpp scene/2d/camera_2d.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/interpolated_camera.cpp
+#: scene/animation/animation_player.cpp scene/resources/environment.cpp
+#: scene/resources/particles_material.cpp
#, fuzzy
msgid "Speed"
msgstr "গতি (FPS):"
@@ -569,8 +569,9 @@ msgstr "সà§à¦•à§à¦°à¦¿à¦ªà§à¦Ÿà§‡à¦° পরিবরà§à¦¤à¦¨à¦¸à¦®à§‚হ à
msgid "Pitch"
msgstr "পিচà§â€Œ"
-#: core/os/input_event.cpp scene/2d/physics_body_2d.cpp
-#: scene/3d/physics_body.cpp
+#: core/os/input_event.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/physics_body_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/3d/physics_body.cpp scene/resources/particles_material.cpp
#, fuzzy
msgid "Velocity"
msgstr "বড় হাতের অকà§à¦·à¦°à§‡ পরিবরà§à¦¤à¦¨à§‡ করà§à¦¨"
@@ -589,6 +590,8 @@ msgid "Controller Value"
msgstr ""
#: core/project_settings.cpp editor/editor_node.cpp main/main.cpp
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/windows/export/export.cpp
#, fuzzy
msgid "Application"
msgstr "পà§à¦°à¦•à§à¦°à¦¿à¦¯à¦¼à¦¾/অà§à¦¯à¦¾à¦•শন"
@@ -607,13 +610,16 @@ msgstr "পà§à¦°à¦•লà§à¦ªà§‡à¦° সেটিংস"
#: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp
#: editor/editor_plugin_settings.cpp editor/editor_profiler.cpp
#: editor/project_manager.cpp editor/settings_config_dialog.cpp
-#: modules/gdnative/nativescript/nativescript.cpp scene/2d/area_2d.cpp
-#: scene/3d/area.cpp scene/main/node.cpp
+#: modules/gdnative/nativescript/nativescript.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/osx/export/export.cpp scene/2d/area_2d.cpp scene/3d/area.cpp
+#: scene/main/node.cpp
msgid "Name"
msgstr "নাম"
#: core/project_settings.cpp editor/editor_help.cpp
-#: modules/visual_script/visual_script_nodes.cpp
+#: modules/visual_script/visual_script_nodes.cpp platform/uwp/export/export.cpp
+#: platform/windows/export/export.cpp
#, fuzzy
msgid "Description"
msgstr "বরà§à¦£à¦¨à¦¾:"
@@ -652,7 +658,7 @@ msgid "Custom User Dir Name"
msgstr ""
#: core/project_settings.cpp editor/animation_track_editor.cpp
-#: editor/editor_audio_buses.cpp servers/audio_server.cpp
+#: editor/editor_audio_buses.cpp main/main.cpp servers/audio_server.cpp
msgid "Audio"
msgstr "শবà§à¦¦"
@@ -820,10 +826,13 @@ msgstr "ফিলà§à¦Ÿà¦¾à¦°à¦¸à¦®à§‚হ"
msgid "Sharpen Intensity"
msgstr ""
-#: core/project_settings.cpp editor/editor_node.cpp editor/editor_settings.cpp
-#: editor/plugins/script_editor_plugin.cpp editor/project_export.cpp
-#: main/main.cpp modules/gdscript/gdscript.cpp
-#: modules/visual_script/visual_script.cpp scene/3d/room_manager.cpp
+#: core/project_settings.cpp editor/editor_export.cpp editor/editor_node.cpp
+#: editor/editor_settings.cpp editor/plugins/script_editor_plugin.cpp
+#: editor/project_export.cpp main/main.cpp modules/gdscript/gdscript.cpp
+#: modules/visual_script/visual_script.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp scene/3d/room_manager.cpp
#: scene/main/scene_tree.cpp scene/resources/shape_2d.cpp
#: servers/visual_server.cpp
msgid "Debug"
@@ -1059,6 +1068,7 @@ msgid "Subsurface Scattering"
msgstr ""
#: drivers/gles3/rasterizer_scene_gles3.cpp
+#: editor/import/resource_importer_texture.cpp
#: editor/plugins/spatial_editor_plugin.cpp modules/gltf/gltf_node.cpp
#: modules/gridmap/grid_map.cpp scene/2d/cpu_particles_2d.cpp
#: scene/2d/node_2d.cpp scene/2d/parallax_layer.cpp scene/2d/polygon_2d.cpp
@@ -1358,6 +1368,7 @@ msgid "Editors"
msgstr "সমà§à¦ªà¦¾à¦¦à¦¨ করà§à¦¨ (Edit)"
#: editor/animation_track_editor.cpp editor/editor_settings.cpp
+#: editor/import/resource_importer_scene.cpp
#: editor/plugins/animation_player_editor_plugin.cpp editor/scene_tree_dock.cpp
#: scene/2d/animated_sprite.cpp scene/2d/cpu_particles_2d.cpp
#: scene/2d/sprite.cpp scene/3d/cpu_particles.cpp scene/3d/sprite_3d.cpp
@@ -1596,14 +1607,14 @@ msgstr "অà§à¦¯à¦¾à¦¨à¦¿à¦®à§‡à¦¶à¦¨ পদকà§à¦·à§‡à¦ªà§‡à¦° মান।"
msgid "Seconds"
msgstr "সেকেনà§à¦¡"
-#: editor/animation_track_editor.cpp
+#: editor/animation_track_editor.cpp editor/import/resource_importer_scene.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp main/main.cpp
#: scene/resources/texture.cpp
msgid "FPS"
msgstr "à¦à¦«à¦ªà¦¿à¦à¦¸"
#: editor/animation_track_editor.cpp editor/editor_plugin_settings.cpp
-#: editor/editor_resource_picker.cpp
+#: editor/editor_resource_picker.cpp editor/import/resource_importer_wav.cpp
#: editor/plugins/polygon_2d_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
@@ -2613,7 +2624,9 @@ msgid "Remove Autoload"
msgstr "Autoload অপসারণ করà§à¦¨"
#: editor/editor_autoload_settings.cpp editor/editor_plugin_settings.cpp
-#: modules/gdscript/gdscript.cpp scene/2d/polygon_2d.cpp scene/3d/area.cpp
+#: modules/gdscript/gdscript.cpp platform/android/export/export_plugin.cpp
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#: scene/2d/polygon_2d.cpp scene/3d/area.cpp scene/3d/physics_joint.cpp
#: scene/3d/reflection_probe.cpp scene/main/canvas_layer.cpp
#: scene/resources/material.cpp servers/visual_server.cpp
msgid "Enable"
@@ -2774,6 +2787,59 @@ msgstr ""
#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
#, fuzzy
+msgid "Custom Template"
+msgstr "থিম à¦à¦¡à¦¿à¦Ÿ করà§à¦¨..."
+
+#: editor/editor_export.cpp editor/project_export.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Release"
+msgstr "à¦à¦‡à¦®à¦¾à¦¤à§à¦° অবà§à¦¯à¦¾à¦¹à¦¿à¦¤/মà§à¦•à§à¦¤"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Binary Format"
+msgstr "রà§à¦ªà¦¾à¦¨à§à¦¤à¦°"
+
+#: editor/editor_export.cpp
+msgid "64 Bits"
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Embed PCK"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Texture Format"
+msgstr "গঠনবিনà§à¦¯à¦¾à¦¸à§‡à¦° à¦à¦²à¦¾à¦•া"
+
+#: editor/editor_export.cpp
+msgid "BPTC"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "S3TC"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "ETC"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "ETC2"
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "No BPTC Fallbacks"
+msgstr ""
+
+#: editor/editor_export.cpp platform/android/export/export_plugin.cpp
+#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
+#, fuzzy
msgid "Custom debug template not found."
msgstr "সà§à¦¬à¦¨à¦¿à¦°à§à¦®à¦¿à¦¤ ডিবাগ (debug) পà§à¦¯à¦¾à¦•েজ খà§à¦à¦œà§‡ পাওয়া যায়নি।"
@@ -2972,6 +3038,7 @@ msgid "Make Current"
msgstr "বরà§à¦¤à¦®à¦¾à¦¨:"
#: editor/editor_feature_profile.cpp editor/editor_node.cpp
+#: editor/import/resource_importer_scene.cpp
#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
msgid "Import"
msgstr "ইমà§à¦ªà§‹à¦°à§à¦Ÿ"
@@ -3112,8 +3179,11 @@ msgstr "সমà§à¦ªà¦¨à§à¦¨ হয়েছে!"
msgid "Display Mode"
msgstr "পà§à¦¯à¦¾à¦¨ মোড"
-#: editor/editor_file_dialog.cpp main/main.cpp modules/csg/csg_shape.cpp
-#: modules/visual_script/visual_script_nodes.cpp
+#: editor/editor_file_dialog.cpp
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+#: editor/import/resource_importer_wav.cpp main/main.cpp
+#: modules/csg/csg_shape.cpp modules/visual_script/visual_script_nodes.cpp
#: modules/visual_script/visual_script_yield_nodes.cpp scene/2d/light_2d.cpp
#: scene/2d/physics_body_2d.cpp scene/2d/tile_map.cpp
#: scene/3d/baked_lightmap.cpp scene/3d/light.cpp scene/3d/physics_body.cpp
@@ -3259,7 +3329,9 @@ msgstr "পà§à¦¨à¦°à¦¾à§Ÿ ইমà§à¦ªà§‹à¦°à§à¦Ÿ হচà§à¦›à§‡"
msgid "Reimport Missing Imported Files"
msgstr ""
-#: editor/editor_help.cpp
+#: editor/editor_help.cpp scene/2d/camera_2d.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/resources/dynamic_font.cpp
+#: scene/resources/style_box.cpp
msgid "Top"
msgstr "শীরà§à¦·"
@@ -3319,6 +3391,7 @@ msgid "Fonts"
msgstr "ফনà§à¦Ÿ"
#: editor/editor_help.cpp editor/plugins/theme_editor_plugin.cpp
+#: platform/iphone/export/export.cpp
#, fuzzy
msgid "Icons"
msgstr "আইকন"
@@ -3510,7 +3583,9 @@ msgstr ""
msgid "Pin value [Disabled because '%s' is editor-only]"
msgstr ""
-#: editor/editor_inspector.cpp editor/scene_tree_dock.cpp
+#: editor/editor_inspector.cpp
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+#: editor/scene_tree_dock.cpp
#: modules/visual_script/visual_script_func_nodes.cpp
#: modules/visual_script/visual_script_nodes.cpp
#: modules/visual_script/visual_script_property_selector.cpp
@@ -3855,6 +3930,16 @@ msgstr "দà§à¦°à§à¦¤ সà§à¦•à§à¦°à¦¿à¦ªà§à¦Ÿ খà§à¦²à§à¦¨..."
#: editor/editor_node.cpp
#, fuzzy
+msgid "Save & Reload"
+msgstr "সংরকà§à¦·à¦£ à¦à¦¬à¦‚ পà§à¦¨-ইমà§à¦ªà§‹à¦°à§à¦Ÿ করà§à¦¨"
+
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Save changes to '%s' before reloading?"
+msgstr "'%s' বনà§à¦§ করার পূরà§à¦¬à§‡ পরিবরà§à¦¤à¦¨à¦¸à¦®à§‚হ সংরকà§à¦·à¦£ করবেন?"
+
+#: editor/editor_node.cpp
+#, fuzzy
msgid "Save & Close"
msgstr "ফাইল সংরকà§à¦·à¦¨ করà§à¦¨"
@@ -3972,6 +4057,11 @@ msgstr "Open পà§à¦°à¦•লà§à¦ª মà§à¦¯à¦¾à¦¨à§‡à¦œà¦¾à¦°?"
#: editor/editor_node.cpp
#, fuzzy
+msgid "Save changes to the following scene(s) before reloading?"
+msgstr "বনà§à¦§ করার পূরà§à¦¬à§‡ পরিবরà§à¦¤à¦¨à¦¸à¦®à§‚হ (সিন) সংরকà§à¦·à¦£ করবেন?"
+
+#: editor/editor_node.cpp
+#, fuzzy
msgid "Save & Quit"
msgstr "ফাইল সংরকà§à¦·à¦¨ করà§à¦¨"
@@ -4256,8 +4346,8 @@ msgstr "পরিবরà§à¦¤à¦¨à¦¸à¦®à§‚হ হাল-নাগাদ করà§
#: editor/editor_node.cpp
#, fuzzy
-msgid "Translate Properties"
-msgstr "পà§à¦°à§‹à¦ªà¦¾à¦°à§à¦Ÿà¦¿-সমূহ:"
+msgid "Localize Settings"
+msgstr "সà§à¦¥à¦¾à¦¨à§€à¦¯à¦¼à¦•রণ"
#: editor/editor_node.cpp
#, fuzzy
@@ -4274,8 +4364,8 @@ msgstr "পরিদরà§à¦¶à¦•/পরীকà§à¦·à¦•"
#: editor/editor_node.cpp
#, fuzzy
-msgid "Capitalize Properties"
-msgstr "পà§à¦°à§‹à¦ªà¦¾à¦°à§à¦Ÿà¦¿-সমূহ:"
+msgid "Default Property Name Style"
+msgstr "পà§à¦°à¦•লà§à¦ªà§‡à¦° পথ:"
#: editor/editor_node.cpp
msgid "Default Float Step"
@@ -4910,7 +5000,9 @@ msgstr "ইনà§à¦¸à¦Ÿà¦²-কৃত পà§à¦²à¦¾à¦—ইন-সমূহ:"
msgid "Update"
msgstr "হালনাগাদ"
-#: editor/editor_plugin_settings.cpp
+#: editor/editor_plugin_settings.cpp platform/android/export/export_plugin.cpp
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp
#, fuzzy
msgid "Version"
msgstr "সংসà§à¦•রণ:"
@@ -5959,7 +6051,7 @@ msgstr "পূরà§à¦£ নাম"
msgid "Rect Custom Position"
msgstr "বহিঃ-বকà§à¦°à¦°à§‡à¦–ার সà§à¦¥à¦¾à¦¨ নিরà§à¦§à¦¾à¦°à¦£ করà§à¦¨"
-#: editor/editor_settings.cpp
+#: editor/editor_settings.cpp platform/android/export/export_plugin.cpp
msgid "Screen"
msgstr ""
@@ -5986,6 +6078,19 @@ msgid "Editor SSL Certificates"
msgstr "à¦à¦¡à¦¿à¦Ÿà¦°à§‡à¦° সেটিংস"
#: editor/editor_settings.cpp
+msgid "HTTP Proxy"
+msgstr ""
+
+#: editor/editor_settings.cpp
+msgid "Host"
+msgstr ""
+
+#: editor/editor_settings.cpp editor/fileserver/editor_file_server.cpp
+#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp
+msgid "Port"
+msgstr ""
+
+#: editor/editor_settings.cpp
msgid "Project Manager"
msgstr "পà§à¦°à¦œà§‡à¦•à§à¦Ÿ মà§à¦¯à¦¾à¦¨à§‡à¦œà¦¾à¦°"
@@ -6028,7 +6133,8 @@ msgstr ""
msgid "String Color"
msgstr "সংরকà§à¦·à¦¿à¦¤ ফাইল:"
-#: editor/editor_settings.cpp
+#: editor/editor_settings.cpp platform/javascript/export/export.cpp
+#: platform/uwp/export/export.cpp
#, fuzzy
msgid "Background Color"
msgstr "পটভূমির (background) অগà§à¦°à¦¹à¦¨à¦¯à§‹à¦—à§à¦¯ রঙ।"
@@ -6208,22 +6314,6 @@ msgid "Starting the download..."
msgstr ""
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "HTTP Proxy"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Host"
-msgstr ""
-
-#: editor/export_template_manager.cpp editor/fileserver/editor_file_server.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp main/main.cpp
-#: modules/mono/mono_gd/gd_mono.cpp
-msgid "Port"
-msgstr ""
-
-#: editor/export_template_manager.cpp
#, fuzzy
msgid "Error requesting URL:"
msgstr "à¦à¦Ÿà¦²à¦¾à¦¸/মানচিতà§à¦°à¦¾à¦¬à¦²à§€ সংরকà§à¦·à¦£à§‡ সমসà§à¦¯à¦¾ হয়েছে:"
@@ -6506,6 +6596,7 @@ msgstr ""
#: editor/fileserver/editor_file_server.cpp
#: editor/plugins/version_control_editor_plugin.cpp
+#: platform/uwp/export/export.cpp platform/windows/export/export.cpp
msgid "Password"
msgstr ""
@@ -6929,6 +7020,117 @@ msgstr ""
msgid "Use Ambient"
msgstr ""
+#: editor/import/resource_importer_bitmask.cpp
+#, fuzzy
+msgid "Create From"
+msgstr "ফোলà§à¦¡à¦¾à¦° তৈরি করà§à¦¨"
+
+#: editor/import/resource_importer_bitmask.cpp
+#: servers/audio/effects/audio_effect_compressor.cpp
+msgid "Threshold"
+msgstr ""
+
+#: editor/import/resource_importer_csv_translation.cpp
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_scene.cpp
+#: editor/import/resource_importer_texture.cpp
+#: editor/import/resource_importer_wav.cpp scene/3d/gi_probe.cpp
+#, fuzzy
+msgid "Compress"
+msgstr "কমà§à¦ªà¦¨à§‡à¦¨à§à¦Ÿà¦¸"
+
+#: editor/import/resource_importer_csv_translation.cpp
+msgid "Delimiter"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+msgid "No BPTC If RGB"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/sprite_3d.cpp
+#: scene/resources/material.cpp scene/resources/particles_material.cpp
+#: scene/resources/texture.cpp
+msgid "Flags"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/animation/tween.cpp
+#: scene/resources/texture.cpp
+msgid "Repeat"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/2d/light_2d.cpp
+#: scene/gui/control.cpp scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Filter"
+msgstr "ফিলà§à¦Ÿà¦¾à¦°à¦¸à¦®à§‚হ"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Mipmaps"
+msgstr "সংকেতসমূহ"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+msgid "Anisotropic"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+msgid "sRGB"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#, fuzzy
+msgid "Slices"
+msgstr "সà§à¦¬à§Ÿà¦‚কà§à¦°à¦¿à§Ÿ টà§à¦•রো"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
+#: scene/resources/style_box.cpp
+#, fuzzy
+msgid "Horizontal"
+msgstr "বকà§à¦°à¦°à§‡à¦–ায় বিনà§à¦¦à§ সরান"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
+#: scene/resources/style_box.cpp
+#, fuzzy
+msgid "Vertical"
+msgstr "ভারটেকà§à¦¸"
+
+#: editor/import/resource_importer_obj.cpp
+#, fuzzy
+msgid "Generate Tangents"
+msgstr "উৎপাদিত বিনà§à¦¦à§à¦° সংখà§à¦¯à¦¾:"
+
+#: editor/import/resource_importer_obj.cpp
+#, fuzzy
+msgid "Scale Mesh"
+msgstr "মাপের মোড করà§à¦¨ (R)"
+
+#: editor/import/resource_importer_obj.cpp
+#, fuzzy
+msgid "Offset Mesh"
+msgstr "অফসেট/ভারসামà§à¦¯:"
+
+#: editor/import/resource_importer_obj.cpp
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Octahedral Compression"
+msgstr "অভিবà§à¦¯à¦•à§à¦¤à¦¿ (Expression) পরিবরà§à¦¤à¦¨ করà§à¦¨"
+
+#: editor/import/resource_importer_obj.cpp
+#, fuzzy
+msgid "Optimize Mesh Flags"
+msgstr "সেল (Cell)-à¦à¦° আকার:"
+
#: editor/import/resource_importer_scene.cpp
#, fuzzy
msgid "Import as Single Scene"
@@ -6972,6 +7174,156 @@ msgstr "3D দৃশà§à¦¯ ইমà§à¦ªà§‹à¦°à§à¦Ÿ করà§à¦¨"
msgid "Import as Multiple Scenes+Materials"
msgstr "মালà§à¦Ÿà¦¿à¦ªà¦² সিন + মà§à¦¯à¦¾à¦Ÿà§‡à¦°à¦¿à§Ÿà¦¾à¦² হিসেবে ইমà§à¦ªà§‹à¦°à§à¦Ÿ করà§à¦¨"
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Nodes"
+msgstr "শাখা"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Root Type"
+msgstr "সদসà§à¦¯à¦—ণ (Members):"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Root Name"
+msgstr "অপসারণ করà§à¦¨"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Root Scale"
+msgstr "সà§à¦•েল/মাপ:"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Custom Script"
+msgstr "নোড-সমূহ করà§à¦¤à¦¨/কাট করà§à¦¨"
+
+#: editor/import/resource_importer_scene.cpp scene/resources/texture.cpp
+#, fuzzy
+msgid "Storage"
+msgstr "সংরকà§à¦·à¦¿à¦¤ ফাইল:"
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Use Legacy Names"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+#, fuzzy
+msgid "Materials"
+msgstr "পরিবরà§à¦¤à¦¨à¦¸à¦®à§‚হ হাল-নাগাদ করà§à¦¨"
+
+#: editor/import/resource_importer_scene.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Location"
+msgstr "সà§à¦¥à¦¾à¦¨à§€à¦¯à¦¼à¦•রণ"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Keep On Reimport"
+msgstr "পà§à¦¨-ইমà§à¦ªà§‹à¦°à§à¦Ÿ"
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+#, fuzzy
+msgid "Meshes"
+msgstr "মেস"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Ensure Tangents"
+msgstr "Curve Map পরিবরà§à¦¤à¦¨ করà§à¦¨"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Light Baking"
+msgstr "লাইটà§à¦®à§à¦¯à¦¾à¦ªà§‡ হসà§à¦¤à¦¾à¦¨à§à¦¤à¦° করà§à¦¨:"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Lightmap Texel Size"
+msgstr "লাইটà§à¦®à§à¦¯à¦¾à¦ªà§‡ হসà§à¦¤à¦¾à¦¨à§à¦¤à¦° করà§à¦¨:"
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+msgid "Skins"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Use Named Skins"
+msgstr "সà§à¦¨à§à¦¯à¦¾à¦ª বà§à¦¯à¦¬à¦¹à¦¾à¦° করà§à¦¨"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "External Files"
+msgstr "à¦à¦•টি ফাইল খà§à¦²à§à¦¨"
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Store In Subdir"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Filter Script"
+msgstr "ফিলà§à¦Ÿà¦¾à¦°à¦¸à¦®à§‚হ"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Keep Custom Tracks"
+msgstr "রà§à¦ªà¦¾à¦¨à§à¦¤à¦°"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Optimizer"
+msgstr "পরিমারà§à¦œà¦¨ করà§à¦¨"
+
+#: editor/import/resource_importer_scene.cpp main/main.cpp
+#: modules/mono/mono_gd/gd_mono.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp scene/2d/camera_2d.cpp scene/2d/light_2d.cpp
+#: scene/2d/navigation_polygon.cpp scene/2d/ray_cast_2d.cpp scene/2d/sprite.cpp
+#: scene/2d/y_sort.cpp scene/3d/audio_stream_player_3d.cpp
+#: scene/3d/baked_lightmap.cpp scene/3d/interpolated_camera.cpp
+#: scene/3d/light.cpp scene/3d/navigation_mesh_instance.cpp
+#: scene/3d/physics_joint.cpp scene/3d/ray_cast.cpp scene/3d/sprite_3d.cpp
+#: scene/gui/graph_edit.cpp scene/gui/rich_text_label.cpp
+#: scene/resources/curve.cpp scene/resources/environment.cpp
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Enabled"
+msgstr "সকà§à¦°à¦¿à¦¯à¦¼ করà§à¦¨"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Max Linear Error"
+msgstr "সরà§à¦¬à§‡à¦¾à¦šà§à¦š রৈখিক ভà§à¦²/সমসà§à¦¯à¦¾:"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Max Angular Error"
+msgstr "সরà§à¦¬à§‡à¦¾à¦šà§à¦š কৌণিক ভà§à¦²/সমসà§à¦¯à¦¾:"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Max Angle"
+msgstr "মান"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Remove Unused Tracks"
+msgstr "অà§à¦¯à¦¾à¦¨à¦¿à¦®à§‡à¦¶à¦¨ (Anim) টà§à¦°à§à¦¯à¦¾à¦• রিমà§à¦­ করà§à¦¨"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Clips"
+msgstr "কà§à¦²à¦¿à¦ªà¦¸à¦®à§‚হ"
+
+#: editor/import/resource_importer_scene.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/particles_2d.cpp scene/3d/area.cpp scene/3d/cpu_particles.cpp
+#: scene/3d/particles.cpp scene/resources/environment.cpp
+#, fuzzy
+msgid "Amount"
+msgstr "পরিমাণ:"
+
#: editor/import/resource_importer_scene.cpp
#: editor/plugins/mesh_library_editor_plugin.cpp
msgid "Import Scene"
@@ -7015,12 +7367,148 @@ msgstr ""
msgid "Saving..."
msgstr "সংরকà§à¦·à¦¿à¦¤ হচà§à¦›à§‡..."
+#: editor/import/resource_importer_texture.cpp scene/resources/texture.cpp
+msgid "Lossy Quality"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "HDR Mode"
+msgstr "মোড (Mode) বাছাই করà§à¦¨"
+
+#: editor/import/resource_importer_texture.cpp
+msgid "BPTC LDR"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/mesh_instance_2d.cpp scene/2d/multimesh_instance_2d.cpp
+#: scene/2d/particles_2d.cpp scene/2d/sprite.cpp scene/resources/style_box.cpp
+msgid "Normal Map"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Process"
+msgstr "পà§à¦°à¦•à§à¦°à¦¿à¦¯à¦¼à¦¾-পরবরà§à¦¤à§€ সà§à¦•à§à¦°à¦¿à¦ªà§à¦Ÿ:"
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Fix Alpha Border"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Premult Alpha"
+msgstr "Poly সমà§à¦ªà¦¾à¦¦à¦¨ করà§à¦¨"
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Hdr As Srgb"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Invert Color"
+msgstr "ভারটেকà§à¦¸"
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Normal Map Invert Y"
+msgstr "যথেচà§à¦› মাপ:"
+
+#: editor/import/resource_importer_texture.cpp
+#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
+#: scene/audio/audio_stream_player.cpp scene/gui/video_player.cpp
+msgid "Stream"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Size Limit"
+msgstr "সেল (Cell)-à¦à¦° আকার:"
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Detect 3D"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "SVG"
+msgstr ""
+
#: editor/import/resource_importer_texture.cpp
msgid ""
"Warning, no suitable PC VRAM compression enabled in Project Settings. This "
"texture will not display correctly on PC."
msgstr ""
+#: editor/import/resource_importer_texture_atlas.cpp
+#, fuzzy
+msgid "Atlas File"
+msgstr "পà§à¦°à¦¾à¦¨à§à¦¤à¦°à§‡à¦–ার আকার:"
+
+#: editor/import/resource_importer_texture_atlas.cpp
+#, fuzzy
+msgid "Import Mode"
+msgstr "à¦à¦•à§à¦¸à¦ªà§‹à¦°à§à¦Ÿ মোড:"
+
+#: editor/import/resource_importer_texture_atlas.cpp
+#, fuzzy
+msgid "Crop To Region"
+msgstr "গঠনবিনà§à¦¯à¦¾à¦¸à§‡à¦° à¦à¦²à¦¾à¦•া"
+
+#: editor/import/resource_importer_texture_atlas.cpp
+msgid "Trim Alpha Border From Region"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp scene/2d/physics_body_2d.cpp
+#, fuzzy
+msgid "Force"
+msgstr "উৎস Mesh:"
+
+#: editor/import/resource_importer_wav.cpp
+msgid "8 Bit"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp main/main.cpp
+#: modules/mono/editor/csharp_project.cpp modules/mono/mono_gd/gd_mono.cpp
+msgid "Mono"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+#, fuzzy
+msgid "Max Rate"
+msgstr "মিশà§à¦° নোড"
+
+#: editor/import/resource_importer_wav.cpp
+#, fuzzy
+msgid "Max Rate Hz"
+msgstr "মিশà§à¦° নোড"
+
+#: editor/import/resource_importer_wav.cpp
+msgid "Trim"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+#, fuzzy
+msgid "Normalize"
+msgstr "ফরমà§à¦¯à¦¾à¦Ÿ"
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+#, fuzzy
+msgid "Loop Mode"
+msgstr "মোড (Mode) সরান"
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+#, fuzzy
+msgid "Loop Begin"
+msgstr "মোড (Mode) সরান"
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+#, fuzzy
+msgid "Loop End"
+msgstr "মোড (Mode) সরান"
+
#: editor/import_defaults_editor.cpp
#, fuzzy
msgid "Select Importer"
@@ -7096,6 +7584,29 @@ msgstr "রিসোরà§à¦¸ লোড বà§à¦¯à¦°à§à¦¥ হয়েছে।"
#: editor/inspector_dock.cpp
#, fuzzy
+msgid "Property Name Style"
+msgstr "পà§à¦°à¦•লà§à¦ªà§‡à¦° নাম:"
+
+#: editor/inspector_dock.cpp scene/gui/color_picker.cpp
+msgid "Raw"
+msgstr ""
+
+#: editor/inspector_dock.cpp
+#, fuzzy
+msgid "Capitalized"
+msgstr "বড় হাতের অকà§à¦·à¦°à§‡ পরিবরà§à¦¤à¦¨à§‡ করà§à¦¨"
+
+#: editor/inspector_dock.cpp
+#, fuzzy
+msgid "Localized"
+msgstr "ঘটনাসà§à¦¥à¦²"
+
+#: editor/inspector_dock.cpp
+msgid "Localization not available for current language."
+msgstr ""
+
+#: editor/inspector_dock.cpp
+#, fuzzy
msgid "Copy Properties"
msgstr "পà§à¦°à§‹à¦ªà¦¾à¦°à§à¦Ÿà¦¿-সমূহ:"
@@ -8232,19 +8743,25 @@ msgstr "লাইসেনà§à¦¸"
#: editor/plugins/asset_library_editor_plugin.cpp
#, fuzzy
+msgctxt "Pagination"
msgid "First"
msgstr "পà§à¦°à¦¥à¦®"
-#: editor/plugins/asset_library_editor_plugin.cpp scene/gui/control.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
#, fuzzy
+msgctxt "Pagination"
msgid "Previous"
msgstr "পূরà§à¦¬à§‡à¦° টà§à¦¯à¦¾à¦¬"
-#: editor/plugins/asset_library_editor_plugin.cpp scene/gui/control.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgctxt "Pagination"
msgid "Next"
msgstr "পরবরà§à¦¤à§€"
#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgctxt "Pagination"
msgid "Last"
msgstr "শেষ"
@@ -8500,22 +9017,22 @@ msgid ""
"margins."
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
#, fuzzy
msgid "Top Left"
msgstr "বাম"
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
#, fuzzy
msgid "Top Right"
msgstr "ডান"
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
#, fuzzy
msgid "Bottom Right"
msgstr "ডানে সরান"
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
#, fuzzy
msgid "Bottom Left"
msgstr "নিমà§à¦¨ দরà§à¦¶à¦¨"
@@ -9307,6 +9824,19 @@ msgstr "জি আই পà§à¦°à§‹à¦¬ বেক করà§à¦¨"
msgid "Gradient Edited"
msgstr ""
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+msgid "Swap GradientTexture2D Fill Points"
+msgstr ""
+
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+msgid "Swap Gradient Fill Points"
+msgstr ""
+
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+#, fuzzy
+msgid "Toggle Grid Snap"
+msgstr "মোড অদলবদল/টগল করà§à¦¨"
+
#: editor/plugins/item_list_editor_plugin.cpp
msgid "Item %d"
msgstr "বসà§à¦¤à§ %d"
@@ -9532,9 +10062,9 @@ msgid ""
"%s"
msgstr "দৃশà§à¦¯ হতে হালনাগাদ করà§à¦¨"
-#: editor/plugins/mesh_library_editor_plugin.cpp modules/gridmap/grid_map.cpp
+#: editor/plugins/mesh_library_editor_plugin.cpp
#, fuzzy
-msgid "Mesh Library"
+msgid "MeshLibrary"
msgstr "MeshLibrary (মেস-লাইবà§à¦°à§‡à¦°à¦¿)..."
#: editor/plugins/mesh_library_editor_plugin.cpp
@@ -10599,8 +11129,8 @@ msgstr "নোডের সাথে সংযà§à¦•à§à¦¤ করà§à¦¨:"
msgid "Source"
msgstr "উৎস:"
-#: editor/plugins/script_text_editor.cpp scene/3d/interpolated_camera.cpp
-#: scene/animation/skeleton_ik.cpp
+#: editor/plugins/script_text_editor.cpp platform/uwp/export/export.cpp
+#: scene/3d/interpolated_camera.cpp scene/animation/skeleton_ik.cpp
msgid "Target"
msgstr "টারà§à¦—েট"
@@ -11669,7 +12199,9 @@ msgstr "গতি (FPS):"
#: editor/plugins/sprite_frames_editor_plugin.cpp
#: modules/gltf/gltf_animation.cpp modules/minimp3/audio_stream_mp3.cpp
-#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp scene/2d/path_2d.cpp
+#: modules/minimp3/resource_importer_mp3.cpp
+#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp
+#: modules/stb_vorbis/resource_importer_ogg_vorbis.cpp scene/2d/path_2d.cpp
#: scene/3d/path.cpp scene/resources/animation.cpp scene/resources/material.cpp
msgid "Loop"
msgstr "লà§à¦ª"
@@ -12660,8 +13192,9 @@ msgstr "ঘূরà§à¦£à¦¾à§Ÿà¦¨ মোড"
msgid "Priority"
msgstr "à¦à¦•à§à¦¸à¦ªà§‹à¦°à§à¦Ÿ মোড:"
-#: editor/plugins/tile_set_editor_plugin.cpp main/main.cpp scene/gui/button.cpp
-#: scene/gui/item_list.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp main/main.cpp
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#: scene/gui/button.cpp scene/gui/item_list.cpp
msgid "Icon"
msgstr "আইকন"
@@ -14064,11 +14597,6 @@ msgstr ""
#: editor/project_export.cpp
#, fuzzy
-msgid "Release"
-msgstr "à¦à¦‡à¦®à¦¾à¦¤à§à¦° অবà§à¦¯à¦¾à¦¹à¦¿à¦¤/মà§à¦•à§à¦¤"
-
-#: editor/project_export.cpp
-#, fuzzy
msgid "Exporting All"
msgstr "%s à¦à¦° জনà§à¦¯ à¦à¦•à§à¦¸à¦ªà§‹à¦°à§à¦Ÿ (export) হচà§à¦›à§‡"
@@ -16045,6 +16573,7 @@ msgid "Change AudioStreamPlayer3D Emission Angle"
msgstr "অডিওসà§à¦Ÿà§à¦°à¦¿à¦® পà§à¦²à§‡à¦¯à¦¼à¦¾à¦° 3 ডি ইমিশন à¦à¦™à§à¦—েল পরিবরà§à¦¤à¦¨ করà§à¦¨"
#: editor/spatial_editor_gizmos.cpp modules/gltf/gltf_node.cpp
+#: platform/osx/export/export.cpp
msgid "Camera"
msgstr ""
@@ -16335,7 +16864,8 @@ msgstr ""
msgid "Use Nvidia Rect Flicker Workaround"
msgstr ""
-#: main/main.cpp platform/uwp/os_uwp.cpp
+#: main/main.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp platform/uwp/os_uwp.cpp
#, fuzzy
msgid "Display"
msgstr "Normal পà§à¦°à¦¦à¦°à§à¦¶à¦¨"
@@ -16396,19 +16926,6 @@ msgstr ""
msgid "Allowed"
msgstr ""
-#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp scene/2d/camera_2d.cpp
-#: scene/2d/light_2d.cpp scene/2d/navigation_polygon.cpp
-#: scene/2d/ray_cast_2d.cpp scene/2d/sprite.cpp scene/2d/y_sort.cpp
-#: scene/3d/audio_stream_player_3d.cpp scene/3d/baked_lightmap.cpp
-#: scene/3d/interpolated_camera.cpp scene/3d/light.cpp
-#: scene/3d/navigation_mesh_instance.cpp scene/3d/ray_cast.cpp
-#: scene/3d/sprite_3d.cpp scene/gui/graph_edit.cpp
-#: scene/gui/rich_text_label.cpp scene/resources/curve.cpp
-#: scene/resources/environment.cpp
-#, fuzzy
-msgid "Enabled"
-msgstr "সকà§à¦°à¦¿à¦¯à¦¼ করà§à¦¨"
-
#: main/main.cpp
msgid "Intended Usage"
msgstr ""
@@ -16440,13 +16957,14 @@ msgstr ""
msgid "Handheld"
msgstr ""
-#: main/main.cpp
+#: main/main.cpp platform/javascript/export/export.cpp
+#: platform/uwp/export/export.cpp
#, fuzzy
msgid "Orientation"
msgstr "রেফারেনà§à¦¸à§‡à¦° ডকà§à¦®à§‡à¦¨à§à¦Ÿà§‡à¦¶à¦¨à§‡ খà§à¦à¦œà§à¦¨à¥¤"
#: main/main.cpp scene/gui/scroll_container.cpp scene/gui/text_edit.cpp
-#: scene/main/scene_tree.cpp
+#: scene/main/scene_tree.cpp scene/register_scene_types.cpp
#, fuzzy
msgid "Common"
msgstr "সমà§à¦ªà§à¦°à¦¦à¦¾à§Ÿ"
@@ -16489,7 +17007,7 @@ msgstr ""
#: main/main.cpp
#, fuzzy
-msgid "Frame Delay (msec)"
+msgid "Frame Delay Msec"
msgstr "নিরà§à¦¬à¦¾à¦šà¦¨à¦•ে ফà§à¦°à§‡à¦®à¦­à§‚কà§à¦¤ করà§à¦¨"
#: main/main.cpp
@@ -16616,11 +17134,6 @@ msgstr ""
msgid "Tooltip Position Offset"
msgstr "ঘূরà§à¦£à¦¾à§Ÿà¦¨à§‡à¦° অফসেট/ভারসামà§à¦¯:"
-#: main/main.cpp modules/mono/editor/csharp_project.cpp
-#: modules/mono/mono_gd/gd_mono.cpp
-msgid "Mono"
-msgstr ""
-
#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp
#, fuzzy
msgid "Debugger Agent"
@@ -17210,7 +17723,7 @@ msgstr "রঙ"
msgid "Intensity"
msgstr ""
-#: modules/gltf/gltf_light.cpp scene/2d/light_2d.cpp
+#: modules/gltf/gltf_light.cpp scene/2d/light_2d.cpp scene/3d/light.cpp
#, fuzzy
msgid "Range"
msgstr "পরিবরà§à¦¤à¦¨ করà§à¦¨"
@@ -17357,11 +17870,6 @@ msgstr "ডান"
msgid "Use Named Skin Binds"
msgstr ""
-#: modules/gltf/gltf_state.cpp scene/3d/physics_joint.cpp
-#, fuzzy
-msgid "Nodes"
-msgstr "শাখা"
-
#: modules/gltf/gltf_state.cpp
#, fuzzy
msgid "Buffer Views"
@@ -17373,16 +17881,6 @@ msgstr ""
#: modules/gltf/gltf_state.cpp
#, fuzzy
-msgid "Meshes"
-msgstr "মেস"
-
-#: modules/gltf/gltf_state.cpp
-#, fuzzy
-msgid "Materials"
-msgstr "পরিবরà§à¦¤à¦¨à¦¸à¦®à§‚হ হাল-নাগাদ করà§à¦¨"
-
-#: modules/gltf/gltf_state.cpp
-#, fuzzy
msgid "Scene Name"
msgstr "দৃশà§à¦¯à§‡à¦° পথ:"
@@ -17398,15 +17896,11 @@ msgstr "মূল নোডের নাম:"
msgid "Textures"
msgstr "গঠনবিনà§à¦¯à¦¾à¦¸"
-#: modules/gltf/gltf_state.cpp
+#: modules/gltf/gltf_state.cpp platform/uwp/export/export.cpp
msgid "Images"
msgstr ""
#: modules/gltf/gltf_state.cpp
-msgid "Skins"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp
msgid "Cameras"
msgstr ""
@@ -17442,10 +17936,15 @@ msgstr "বোনà§â€Œ/হাড় দেখান"
#: modules/gridmap/grid_map.cpp
#, fuzzy
+msgid "Mesh Library"
+msgstr "MeshLibrary (মেস-লাইবà§à¦°à§‡à¦°à¦¿)..."
+
+#: modules/gridmap/grid_map.cpp
+#, fuzzy
msgid "Physics Material"
msgstr "সà§à¦¥à¦¿à¦°/বদà§à¦§ ফà§à¦°à§‡à¦® %"
-#: modules/gridmap/grid_map.cpp
+#: modules/gridmap/grid_map.cpp scene/3d/visual_instance.cpp
#, fuzzy
msgid "Use In Baked Light"
msgstr "লাইটà§à¦®à§à¦¯à¦¾à¦ªà§‡ হসà§à¦¤à¦¾à¦¨à§à¦¤à¦° করà§à¦¨:"
@@ -17477,6 +17976,7 @@ msgstr "নিরà§à¦¬à¦¾à¦šà¦¨à¦•ে কেনà§à¦¦à§à¦°à§€à¦­à§‚ত করà
#: modules/gridmap/grid_map.cpp scene/2d/collision_object_2d.cpp
#: scene/2d/tile_map.cpp scene/3d/collision_object.cpp scene/3d/soft_body.cpp
+#: scene/resources/material.cpp
msgid "Mask"
msgstr ""
@@ -17682,7 +18182,9 @@ msgid "Ultra Quality Ray Count"
msgstr ""
#: modules/minimp3/audio_stream_mp3.cpp
+#: modules/minimp3/resource_importer_mp3.cpp
#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp
+#: modules/stb_vorbis/resource_importer_ogg_vorbis.cpp
#, fuzzy
msgid "Loop Offset"
msgstr "অফসেট/ভারসামà§à¦¯:"
@@ -18849,6 +19351,192 @@ msgid "The package must have at least one '.' separator."
msgstr ""
#: platform/android/export/export_plugin.cpp
+msgid "Use Custom Build"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Export Format"
+msgstr "à¦à¦•à§à¦¸à¦ªà§‹à¦°à§à¦Ÿà§‡à¦° পà§à¦°à¦¿à¦¸à§‡à¦Ÿ:"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Keystore"
+msgstr "ডিবাগার"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Debug User"
+msgstr "ডিবাগার"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+msgid "Debug Password"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Release User"
+msgstr "à¦à¦‡à¦®à¦¾à¦¤à§à¦° অবà§à¦¯à¦¾à¦¹à¦¿à¦¤/মà§à¦•à§à¦¤"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Release Password"
+msgstr "à¦à¦‡à¦®à¦¾à¦¤à§à¦° অবà§à¦¯à¦¾à¦¹à¦¿à¦¤/মà§à¦•à§à¦¤"
+
+#: platform/android/export/export_plugin.cpp
+msgid "One Click Deploy"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Clear Previous Install"
+msgstr "পূরà§à¦¬à¦¬à¦°à§à¦¤à§€ ইনà§à¦¸à¦Ÿà§à¦¯à¦¾à¦¨à§à¦¸ পরীকà§à¦·à¦¾ করà§à¦¨"
+
+#: platform/android/export/export_plugin.cpp scene/resources/shader.cpp
+msgid "Code"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Min SDK"
+msgstr "পà§à¦°à¦¾à¦¨à§à¦¤à¦°à§‡à¦–ার আকার:"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Target SDK"
+msgstr "টারà§à¦—েট"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Package"
+msgstr "পà§à¦¯à¦¾à¦•/গà§à¦šà§à¦›à¦¿à¦¤ করা"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Unique Name"
+msgstr "নোডের নাম:"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Signed"
+msgstr "সংকেতসমূহ"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Classify As Game"
+msgstr "কà§à¦²à¦¾à¦¸ নাম:"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Retain Data On Uninstall"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Exclude From Recents"
+msgstr "নোড(সমূহ) অপসারণ করà§à¦¨"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Graphics"
+msgstr "গà§à¦°à¦¿à¦¡à§‡à¦° অফসেট/ভারসামà§à¦¯:"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "OpenGL Debug"
+msgstr "খà§à¦²à§à¦¨"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "XR Features"
+msgstr "গঠনবিনà§à¦¯à¦¾à¦¸"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "XR Mode"
+msgstr "পà§à¦¯à¦¾à¦¨ মোড"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Hand Tracking"
+msgstr "পà§à¦¯à¦¾à¦•/গà§à¦šà§à¦›à¦¿à¦¤ করা"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Hand Tracking Frequency"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Passthrough"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Immersive Mode"
+msgstr "à¦à¦•à§à¦¸à¦ªà§‹à¦°à§à¦Ÿ মোড:"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Support Small"
+msgstr "সমরà§à¦¥à¦¨..."
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Support Normal"
+msgstr "সমরà§à¦¥à¦¨..."
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Support Large"
+msgstr "সমরà§à¦¥à¦¨..."
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Support Xlarge"
+msgstr "সমরà§à¦¥à¦¨..."
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "User Data Backup"
+msgstr "উতà§à¦¤à¦°à¦¾à¦§à¦¿à¦•ারতà§à¦¬ পরিসà§à¦•ার করà§à¦¨"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Allow"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Command Line"
+msgstr "সমà§à¦ªà§à¦°à¦¦à¦¾à§Ÿ"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Extra Args"
+msgstr "ডাকযোগà§à¦¯ অতিরিকà§à¦¤ মান/আরà§à¦—à§à¦®à§‡à¦¨à§à¦Ÿ-সমূহ:"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "APK Expansion"
+msgstr "অভিবà§à¦¯à¦•à§à¦¤à¦¿ (Expression) পরিবরà§à¦¤à¦¨ করà§à¦¨"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Salt"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Public Key"
+msgstr "কী (সমূহ) পà§à¦°à¦¤à¦¿à¦²à¦¿à¦ªà¦¿ করà§à¦¨"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Permissions"
+msgstr "Emission Mask সà§à¦¥à¦¾à¦ªà¦¨ করà§à¦¨"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Custom Permissions"
+msgstr "সà§à¦¬à¦¨à¦¿à¦°à§à¦¬à¦¾à¦šà¦¿à¦¤ দৃশà§à¦¯ চালান"
+
+#: platform/android/export/export_plugin.cpp
msgid "Select device from the list"
msgstr "লিসà§à¦Ÿ থেকে ডিভাইস সিলেকà§à¦Ÿ করà§à¦¨"
@@ -19155,6 +19843,177 @@ msgid "The character '%s' is not allowed in Identifier."
msgstr "নামটি কারà§à¦¯à¦•র সনাকà§à¦¤à¦•ারী নয়:"
#: platform/iphone/export/export.cpp
+msgid "App Store Team ID"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Provisioning Profile UUID Debug"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Code Sign Identity Debug"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Export Method Debug"
+msgstr "Tile Set à¦à¦•à§à¦¸à¦ªà§‹à¦°à§à¦Ÿ করà§à¦¨"
+
+#: platform/iphone/export/export.cpp
+msgid "Provisioning Profile UUID Release"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Code Sign Identity Release"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Export Method Release"
+msgstr "à¦à¦•à§à¦¸à¦ªà§‹à¦°à§à¦Ÿ মোড:"
+
+#: platform/iphone/export/export.cpp
+msgid "Targeted Device Family"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Info"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Identifier"
+msgstr "নামটি কারà§à¦¯à¦•র সনাকà§à¦¤à¦•ারী নয়:"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Signature"
+msgstr "সংকেতসমূহ"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Short Version"
+msgstr "সংসà§à¦•রণ:"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Copyright"
+msgstr "ডান"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Capabilities"
+msgstr "পà§à¦°à§‹à¦ªà¦¾à¦°à§à¦Ÿà¦¿-সমূহ:"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Access Wi-Fi"
+msgstr "সমà§à¦ªà¦¨à§à¦¨ হয়েছে!"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Push Notifications"
+msgstr "যথেচà§à¦› ঘূরà§à¦£à¦¾à§Ÿà¦¨:"
+
+#: platform/iphone/export/export.cpp scene/3d/baked_lightmap.cpp
+#, fuzzy
+msgid "User Data"
+msgstr "উতà§à¦¤à¦°à¦¾à¦§à¦¿à¦•ারতà§à¦¬ পরিসà§à¦•ার করà§à¦¨"
+
+#: platform/iphone/export/export.cpp
+msgid "Accessible From Files App"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Accessible From Itunes Sharing"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Privacy"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Camera Usage Description"
+msgstr "বরà§à¦£à¦¨à¦¾:"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Microphone Usage Description"
+msgstr "মান/পà§à¦°à§‹à¦ªà¦¾à¦°à§à¦Ÿà¦¿à¦° বরà§à¦£à¦¨à¦¾:"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Photolibrary Usage Description"
+msgstr "মান/পà§à¦°à§‹à¦ªà¦¾à¦°à§à¦Ÿà¦¿à¦° বরà§à¦£à¦¨à¦¾:"
+
+#: platform/iphone/export/export.cpp
+msgid "iPhone 120 X 120"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPhone 180 X 180"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 76 X 76"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 152 X 152"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 167 X 167"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "App Store 1024 X 1024"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Spotlight 40 X 40"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Spotlight 80 X 80"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Storyboard"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Use Launch Screen Storyboard"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Image Scale Mode"
+msgstr "মাপের মোড করà§à¦¨ (R)"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Custom Image @2x"
+msgstr "নোড-সমূহ করà§à¦¤à¦¨/কাট করà§à¦¨"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Custom Image @3x"
+msgstr "নোড-সমূহ করà§à¦¤à¦¨/কাট করà§à¦¨"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Use Custom BG Color"
+msgstr "নোড-সমূহ করà§à¦¤à¦¨/কাট করà§à¦¨"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Custom BG Color"
+msgstr "নোড-সমূহ করà§à¦¤à¦¨/কাট করà§à¦¨"
+
+#: platform/iphone/export/export.cpp
msgid "App Store Team ID not specified - cannot configure the project."
msgstr ""
@@ -19198,6 +20057,80 @@ msgstr "টাইলটি খà§à¦à¦œà§‡ পাওয়া যায়নি:"
#: platform/javascript/export/export.cpp
#, fuzzy
+msgid "Variant"
+msgstr "বিচà§à¦›à§‡à¦¦:"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Export Type"
+msgstr "à¦à¦•à§à¦¸à¦ªà§‹à¦°à§à¦Ÿ"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "VRAM Texture Compression"
+msgstr "অভিবà§à¦¯à¦•à§à¦¤à¦¿ (Expression) পরিবরà§à¦¤à¦¨ করà§à¦¨"
+
+#: platform/javascript/export/export.cpp
+msgid "For Desktop"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "For Mobile"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Html"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Export Icon"
+msgstr "ধারক/বাহক পরà§à¦¯à¦¨à§à¦¤ বিসà§à¦¤à§ƒà¦¤ করà§à¦¨"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Custom Html Shell"
+msgstr "নোড-সমূহ করà§à¦¤à¦¨/কাট করà§à¦¨"
+
+#: platform/javascript/export/export.cpp
+msgid "Head Include"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Canvas Resize Policy"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Focus Canvas On Start"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Experimental Virtual Keyboard"
+msgstr "দà§à¦°à§à¦¤ ফাইলসমূহ ফিলà§à¦Ÿà¦¾à¦° করà§à¦¨..."
+
+#: platform/javascript/export/export.cpp
+msgid "Progressive Web App"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Offline Page"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 144 X 144"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 180 X 180"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 512 X 512"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
msgid "Could not read HTML shell:"
msgstr "টাইলটি খà§à¦à¦œà§‡ পাওয়া যায়নি:"
@@ -19312,6 +20245,201 @@ msgid "Unknown object type."
msgstr ""
#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "App Category"
+msgstr "বিভাগ:"
+
+#: platform/osx/export/export.cpp
+msgid "High Res"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Location Usage Description"
+msgstr "বরà§à¦£à¦¨à¦¾:"
+
+#: platform/osx/export/export.cpp
+msgid "Address Book Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Calendar Usage Description"
+msgstr "বরà§à¦£à¦¨à¦¾:"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Photos Library Usage Description"
+msgstr "মান/পà§à¦°à§‹à¦ªà¦¾à¦°à§à¦Ÿà¦¿à¦° বরà§à¦£à¦¨à¦¾:"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Desktop Folder Usage Description"
+msgstr "মেথডের বরà§à¦£à§à¦¨à¦¾:"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Documents Folder Usage Description"
+msgstr "মেথডের বরà§à¦£à§à¦¨à¦¾:"
+
+#: platform/osx/export/export.cpp
+msgid "Downloads Folder Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Network Volumes Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Removable Volumes Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#, fuzzy
+msgid "Codesign"
+msgstr "শাখা"
+
+#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Identity"
+msgstr "বামে মাতà§à¦°à¦¾ দিন"
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#, fuzzy
+msgid "Timestamp"
+msgstr "সময়:"
+
+#: platform/osx/export/export.cpp
+msgid "Hardened Runtime"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Replace Existing Signature"
+msgstr "সমসà§à¦¤à¦—à§à¦²à¦¿ পà§à¦°à¦¤à¦¿à¦¸à§à¦¥à¦¾à¦ªà¦¨ করà§à¦¨"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Entitlements"
+msgstr "গিজমোস"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Custom File"
+msgstr "নোড-সমূহ করà§à¦¤à¦¨/কাট করà§à¦¨"
+
+#: platform/osx/export/export.cpp
+msgid "Allow JIT Code Execution"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Allow Unsigned Executable Memory"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Allow Dyld Environment Variables"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Disable Library Validation"
+msgstr "মধà§à¦¯ বোতাম"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Audio Input"
+msgstr "ইনপà§à¦Ÿ যোগ করà§à¦¨"
+
+#: platform/osx/export/export.cpp
+msgid "Address Book"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Calendars"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Photos Library"
+msgstr "লাইবà§à¦°à§‡à¦°à¦¿ à¦à¦•à§à¦¸à¦ªà§‹à¦°à§à¦Ÿ করà§à¦¨"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Apple Events"
+msgstr "খালি বসà§à¦¤à§ যোগ করà§à¦¨"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Debugging"
+msgstr "ডিবাগ"
+
+#: platform/osx/export/export.cpp
+msgid "App Sandbox"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Network Server"
+msgstr "পà§à¦°à¦•লà§à¦ª à¦à¦•à§à¦¸à¦ªà§‹à¦°à§à¦Ÿ করà§à¦¨"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Network Client"
+msgstr "পà§à¦°à¦•লà§à¦ª à¦à¦•à§à¦¸à¦ªà§‹à¦°à§à¦Ÿ করà§à¦¨"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Device Usb"
+msgstr "ডিভাইস/যনà§à¦¤à§à¦°"
+
+#: platform/osx/export/export.cpp
+msgid "Device Bluetooth"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Files Downloads"
+msgstr "নীচে"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Files Pictures"
+msgstr "গঠনবিনà§à¦¯à¦¾à¦¸"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Files Music"
+msgstr "ফাইল"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Files Movies"
+msgstr "দà§à¦°à§à¦¤ ফাইলসমূহ ফিলà§à¦Ÿà¦¾à¦° করà§à¦¨..."
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#, fuzzy
+msgid "Custom Options"
+msgstr "বাস অপশন"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Notarization"
+msgstr "সà§à¦¥à¦¾à¦¨à§€à¦¯à¦¼à¦•রণ"
+
+#: platform/osx/export/export.cpp
+msgid "Apple ID Name"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Apple ID Password"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Apple Team ID"
+msgstr ""
+
+#: platform/osx/export/export.cpp
msgid ""
"Note: The notarization process generally takes less than an hour. When the "
"process is completed, you'll receive an email."
@@ -19505,6 +20633,134 @@ msgid "Force Builtin Codesign"
msgstr ""
#: platform/uwp/export/export.cpp
+msgid "Architecture"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Display Name"
+msgstr "Normal পà§à¦°à¦¦à¦°à§à¦¶à¦¨"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Short Name"
+msgstr "সà§à¦•à§à¦°à¦¿à¦ªà§à¦Ÿ"
+
+#: platform/uwp/export/export.cpp
+msgid "Publisher"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Publisher Display Name"
+msgstr "à¦à¦•ক (অননà§à¦¯) নামটি অগà§à¦°à¦¹à¦¨à¦¯à§‹à¦—à§à¦¯à¥¤"
+
+#: platform/uwp/export/export.cpp
+msgid "Product Guid"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Publisher Guid"
+msgstr "ভঙà§à¦—ি পরিষà§à¦•ার করà§à¦¨"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Signing"
+msgstr "সংকেতসমূহ"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Certificate"
+msgstr "ভারটেকà§à¦¸"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Algorithm"
+msgstr "ডিবাগার"
+
+#: platform/uwp/export/export.cpp
+msgid "Major"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Minor"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Build"
+msgstr "চালানোর মোড:"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Revision"
+msgstr "অভিবà§à¦¯à¦•à§à¦¤à¦¿ (Expression) পরিবরà§à¦¤à¦¨ করà§à¦¨"
+
+#: platform/uwp/export/export.cpp
+msgid "Landscape"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Portrait"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Landscape Flipped"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Portrait Flipped"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Store Logo"
+msgstr "মাপের মোড করà§à¦¨ (R)"
+
+#: platform/uwp/export/export.cpp
+msgid "Square 44 X 44 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 71 X 71 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 150 X 150 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 310 X 310 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Wide 310 X 150 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Splash Screen"
+msgstr "ডà§à¦° কলস"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Tiles"
+msgstr "ফাইল"
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Square 150 X 150"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Wide 310 X 150"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Square 310 X 310"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
#, fuzzy
msgid "Invalid package short name."
msgstr "অগà§à¦°à¦¹à¦£à¦¯à§‹à¦—à§à¦¯ কà§à¦²à¦¾à¦¸ নাম"
@@ -19573,15 +20829,53 @@ msgid "Debug Certificate"
msgstr ""
#: platform/uwp/export/export.cpp
-msgid "Debug Password"
+#, fuzzy
+msgid "Debug Algorithm"
+msgstr "ডিবাগার"
+
+#: platform/windows/export/export.cpp
+msgid "Identity Type"
msgstr ""
-#: platform/uwp/export/export.cpp
+#: platform/windows/export/export.cpp
+msgid "Timestamp Server URL"
+msgstr ""
+
+#: platform/windows/export/export.cpp
#, fuzzy
-msgid "Debug Algorithm"
+msgid "Digest Algorithm"
msgstr "ডিবাগার"
#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "File Version"
+msgstr "সংসà§à¦•রণ:"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Product Version"
+msgstr "পণà§à¦¯à§‡à¦° অগà§à¦°à¦¹à¦¨à¦¯à§‹à¦—à§à¦¯ GUID।"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Company Name"
+msgstr "নোডের নাম:"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Product Name"
+msgstr "পà§à¦°à¦•লà§à¦ªà§‡à¦° নাম:"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "File Description"
+msgstr "বরà§à¦£à¦¨à¦¾:"
+
+#: platform/windows/export/export.cpp
+msgid "Trademarks"
+msgstr ""
+
+#: platform/windows/export/export.cpp
msgid ""
"The rcedit tool must be configured in the Editor Settings (Export > Windows "
"> Rcedit) to change the icon or app information data."
@@ -19657,12 +20951,14 @@ msgstr "চালান"
msgid "Centered"
msgstr "বামে মাতà§à¦°à¦¾ দিন"
-#: scene/2d/animated_sprite.cpp scene/2d/camera_2d.cpp scene/2d/light_2d.cpp
+#: scene/2d/animated_sprite.cpp scene/2d/camera_2d.cpp
+#: scene/2d/cpu_particles_2d.cpp scene/2d/light_2d.cpp
#: scene/2d/parallax_background.cpp scene/2d/parallax_layer.cpp
#: scene/2d/path_2d.cpp scene/2d/polygon_2d.cpp scene/2d/sprite.cpp
-#: scene/3d/path.cpp scene/3d/physics_body.cpp scene/3d/sprite_3d.cpp
-#: scene/gui/graph_node.cpp scene/gui/rich_text_effect.cpp
-#: scene/main/canvas_layer.cpp scene/resources/material.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/path.cpp scene/3d/physics_body.cpp
+#: scene/3d/sprite_3d.cpp scene/gui/graph_node.cpp
+#: scene/gui/rich_text_effect.cpp scene/main/canvas_layer.cpp
+#: scene/resources/material.cpp scene/resources/particles_material.cpp
#: scene/resources/style_box.cpp
#, fuzzy
msgid "Offset"
@@ -19737,11 +21033,6 @@ msgstr "অডিও বাস যোগ করà§à¦¨"
msgid "Override"
msgstr "ওভাররাইড..."
-#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
-#: scene/audio/audio_stream_player.cpp scene/gui/video_player.cpp
-msgid "Stream"
-msgstr ""
-
#: scene/2d/audio_stream_player_2d.cpp scene/audio/audio_stream_player.cpp
#: scene/gui/video_player.cpp servers/audio/effects/audio_effect_amplify.cpp
#, fuzzy
@@ -19768,13 +21059,13 @@ msgid "Stream Paused"
msgstr ""
#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
-#: scene/3d/reflection_probe.cpp scene/3d/visual_instance.cpp
-#: scene/resources/material.cpp
+#: scene/3d/light.cpp scene/3d/reflection_probe.cpp
+#: scene/3d/visual_instance.cpp scene/resources/material.cpp
#, fuzzy
msgid "Max Distance"
msgstr "ইনà§à¦¸à¦Ÿà§à¦¯à¦¾à¦¨à§à¦¸:"
-#: scene/2d/audio_stream_player_2d.cpp
+#: scene/2d/audio_stream_player_2d.cpp scene/3d/light.cpp
#, fuzzy
msgid "Attenuation"
msgstr "অà§à¦¯à¦¾à¦¨à¦¿à¦®à§‡à¦¶à¦¨"
@@ -19830,6 +21121,24 @@ msgstr "মোড (Mode) সরান"
msgid "Limit"
msgstr ""
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/style_box.cpp
+#, fuzzy
+msgid "Left"
+msgstr "বাম"
+
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/style_box.cpp
+#, fuzzy
+msgid "Right"
+msgstr "ডান"
+
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/dynamic_font.cpp scene/resources/style_box.cpp
+#, fuzzy
+msgid "Bottom"
+msgstr "নিমà§à¦¨ দরà§à¦¶à¦¨"
+
#: scene/2d/camera_2d.cpp
#, fuzzy
msgid "Smoothed"
@@ -20059,13 +21368,6 @@ msgstr ""
msgid "Emitting"
msgstr "সেটিংস"
-#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp scene/3d/area.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
-#: scene/resources/environment.cpp
-#, fuzzy
-msgid "Amount"
-msgstr "পরিমাণ:"
-
#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp
#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
msgid "Lifetime"
@@ -20130,18 +21432,13 @@ msgstr ""
#: scene/2d/mesh_instance_2d.cpp scene/2d/multimesh_instance_2d.cpp
#: scene/2d/particles_2d.cpp scene/2d/polygon_2d.cpp scene/2d/sprite.cpp
#: scene/3d/sprite_3d.cpp scene/gui/nine_patch_rect.cpp
-#: scene/gui/texture_rect.cpp scene/resources/sky.cpp
-#: scene/resources/style_box.cpp scene/resources/visual_shader_nodes.cpp
+#: scene/gui/texture_rect.cpp scene/resources/material.cpp
+#: scene/resources/sky.cpp scene/resources/style_box.cpp
+#: scene/resources/visual_shader_nodes.cpp
#, fuzzy
msgid "Texture"
msgstr "টেকà§à¦¸à¦Ÿ"
-#: scene/2d/cpu_particles_2d.cpp scene/2d/mesh_instance_2d.cpp
-#: scene/2d/multimesh_instance_2d.cpp scene/2d/particles_2d.cpp
-#: scene/2d/sprite.cpp scene/resources/style_box.cpp
-msgid "Normal Map"
-msgstr ""
-
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
#, fuzzy
@@ -20165,10 +21462,10 @@ msgid "Normals"
msgstr "ফরমà§à¦¯à¦¾à¦Ÿ"
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/3d/sprite_3d.cpp scene/resources/material.cpp
-#: scene/resources/particles_material.cpp scene/resources/texture.cpp
-msgid "Flags"
-msgstr ""
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Align Y"
+msgstr "নিযà§à¦•à§à¦¤"
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
@@ -20189,6 +21486,12 @@ msgid "Initial Velocity"
msgstr "বড় হাতের অকà§à¦·à¦°à§‡ পরিবরà§à¦¤à¦¨à§‡ করà§à¦¨"
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Velocity Random"
+msgstr "বড় হাতের অকà§à¦·à¦°à§‡ পরিবরà§à¦¤à¦¨à§‡ করà§à¦¨"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp servers/physics_2d_server.cpp
#: servers/physics_server.cpp
msgid "Angular Velocity"
@@ -20196,6 +21499,12 @@ msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Velocity Curve"
+msgstr "বড় হাতের অকà§à¦·à¦°à§‡ পরিবরà§à¦¤à¦¨à§‡ করà§à¦¨"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
msgid "Orbit Velocity"
msgstr ""
@@ -20207,6 +21516,23 @@ msgstr "রৈখিক/লিনিয়ার"
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Accel"
+msgstr "সমà§à¦ªà¦¨à§à¦¨ হয়েছে!"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Accel Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Accel Curve"
+msgstr "বকà§à¦°à¦°à§‡à¦–া বনà§à¦§ করà§à¦¨"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
msgid "Radial Accel"
msgstr ""
@@ -20216,19 +21542,55 @@ msgid "Tangential Accel"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/2d/joints_2d.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/vehicle_body.cpp
-#: scene/resources/particles_material.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/physics_joint.cpp
+#: scene/3d/vehicle_body.cpp scene/resources/particles_material.cpp
#: servers/audio/effects/audio_effect_reverb.cpp
msgid "Damping"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+msgid "Damping Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Damping Curve"
+msgstr "বকà§à¦°à¦°à§‡à¦–া বনà§à¦§ করà§à¦¨"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp scene/3d/light.cpp
+#: scene/resources/particles_material.cpp
msgid "Angle"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+msgid "Angle Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Angle Curve"
+msgstr "বকà§à¦°à¦°à§‡à¦–া বনà§à¦§ করà§à¦¨"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#, fuzzy
+msgid "Scale Amount"
+msgstr "পরিমাণ:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+msgid "Scale Amount Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#, fuzzy
+msgid "Scale Amount Curve"
+msgstr "কারà§à¦¸à¦° হতে আকার পরিবরà§à¦¤à¦¨ করà§à¦¨"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
#, fuzzy
msgid "Color Ramp"
msgstr "রঙ"
@@ -20244,6 +21606,48 @@ msgstr ""
msgid "Hue Variation"
msgstr "বিচà§à¦›à§‡à¦¦:"
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Variation"
+msgstr "বিচà§à¦›à§‡à¦¦:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Variation Random"
+msgstr "বিচà§à¦›à§‡à¦¦:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Variation Curve"
+msgstr "বিচà§à¦›à§‡à¦¦:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Speed Random"
+msgstr "সà§à¦•েল/মাপ:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Speed Curve"
+msgstr "বকà§à¦°à¦°à§‡à¦–া বনà§à¦§ করà§à¦¨"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Offset Random"
+msgstr "অফসেট/ভারসামà§à¦¯:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Offset Curve"
+msgstr "বকà§à¦°à¦°à§‡à¦–া বনà§à¦§ করà§à¦¨"
+
#: scene/2d/joints_2d.cpp
msgid "Node A and Node B must be PhysicsBody2Ds"
msgstr ""
@@ -20275,6 +21679,7 @@ msgid "Node B"
msgstr "শাখা"
#: scene/2d/joints_2d.cpp scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp
+#: scene/3d/light.cpp scene/3d/physics_joint.cpp
#: scene/resources/environment.cpp
msgid "Bias"
msgstr ""
@@ -20284,7 +21689,7 @@ msgstr ""
msgid "Disable Collision"
msgstr "মধà§à¦¯ বোতাম"
-#: scene/2d/joints_2d.cpp
+#: scene/2d/joints_2d.cpp scene/3d/physics_joint.cpp
msgid "Softness"
msgstr ""
@@ -20302,7 +21707,7 @@ msgstr "বড় হাতের অকà§à¦·à¦°à§‡ পরিবরà§à¦¤à¦¨à§‡ à¦
msgid "Rest Length"
msgstr ""
-#: scene/2d/joints_2d.cpp scene/3d/vehicle_body.cpp
+#: scene/2d/joints_2d.cpp scene/3d/physics_joint.cpp scene/3d/vehicle_body.cpp
msgid "Stiffness"
msgstr ""
@@ -20325,7 +21730,7 @@ msgid "Texture Scale"
msgstr "গঠনবিনà§à¦¯à¦¾à¦¸à§‡à¦° à¦à¦²à¦¾à¦•া"
#: scene/2d/light_2d.cpp scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp
-#: scene/resources/environment.cpp scene/resources/sky.cpp
+#: scene/3d/light.cpp scene/resources/environment.cpp scene/resources/sky.cpp
msgid "Energy"
msgstr ""
@@ -20366,12 +21771,6 @@ msgstr "পশà§à¦šà¦¾à§Ž দরà§à¦¶à¦¨"
msgid "Gradient Length"
msgstr "সাধারণ/ডিফলà§à¦Ÿ"
-#: scene/2d/light_2d.cpp scene/gui/control.cpp
-#: scene/resources/navigation_mesh.cpp
-#, fuzzy
-msgid "Filter"
-msgstr "ফিলà§à¦Ÿà¦¾à¦°à¦¸à¦®à§‚হ"
-
#: scene/2d/light_2d.cpp
#, fuzzy
msgid "Filter Smooth"
@@ -20794,11 +22193,6 @@ msgid "Applied Forces"
msgstr ""
#: scene/2d/physics_body_2d.cpp
-#, fuzzy
-msgid "Force"
-msgstr "উৎস Mesh:"
-
-#: scene/2d/physics_body_2d.cpp
msgid "Torque"
msgstr ""
@@ -20814,7 +22208,7 @@ msgstr "সà§à¦¥à¦¿à¦°/বদà§à¦§ ফà§à¦°à§‡à¦® %"
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
#, fuzzy
-msgid "Moving platform"
+msgid "Moving Platform"
msgstr "পà§à¦²à¦¾à¦Ÿà¦«à¦°à§à¦®à§‡ পà§à¦°à¦¤à¦¿à¦²à¦¿à¦ªà¦¿ করà§à¦¨..."
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
@@ -20823,7 +22217,7 @@ msgstr ""
#: scene/2d/physics_body_2d.cpp scene/2d/touch_screen_button.cpp
#: scene/3d/physics_body.cpp scene/gui/texture_button.cpp
-#: scene/resources/line_shape_2d.cpp
+#: scene/resources/line_shape_2d.cpp scene/resources/material.cpp
#, fuzzy
msgid "Normal"
msgstr "ফরমà§à¦¯à¦¾à¦Ÿ"
@@ -21067,6 +22461,34 @@ msgstr ""
"VisibilityEnable2D সরà§à¦¬à§‹à¦¤à§à¦¤à¦® কারà§à¦¯à¦•র হয় যখন সমà§à¦ªà¦¾à¦¦à¦¿à¦¤ দৃশà§à¦¯ মূল দৃশà§à¦¯ হিসেবে সরাসরি "
"বà§à¦¯à¦¬à¦¹à§ƒà¦¤ হয়।"
+#: scene/2d/visibility_notifier_2d.cpp scene/3d/visibility_notifier.cpp
+#, fuzzy
+msgid "Pause Animations"
+msgstr "অà§à¦¯à¦¾à¦¨à¦¿à¦®à§‡à¦¶à¦¨ পà§à¦°à¦¤à¦¿à¦²à§‡à¦ªà¦¨ করà§à¦¨"
+
+#: scene/2d/visibility_notifier_2d.cpp scene/3d/visibility_notifier.cpp
+msgid "Freeze Bodies"
+msgstr ""
+
+#: scene/2d/visibility_notifier_2d.cpp
+#, fuzzy
+msgid "Pause Particles"
+msgstr "ভারটেকà§à¦¸"
+
+#: scene/2d/visibility_notifier_2d.cpp
+#, fuzzy
+msgid "Pause Animated Sprites"
+msgstr "অà§à¦¯à¦¾à¦¨à¦¿à¦®à§‡à¦¶à¦¨ পà§à¦°à¦¤à¦¿à¦²à§‡à¦ªà¦¨ করà§à¦¨"
+
+#: scene/2d/visibility_notifier_2d.cpp
+#, fuzzy
+msgid "Process Parent"
+msgstr "নোড ফিলà§à¦Ÿà¦¾à¦°à¦¸à¦®à§‚হ সমà§à¦ªà¦¾à¦¦à¦¨ করà§à¦¨"
+
+#: scene/2d/visibility_notifier_2d.cpp
+msgid "Physics Process Parent"
+msgstr ""
+
#: scene/3d/area.cpp
msgid "Reverb Bus"
msgstr ""
@@ -21163,6 +22585,7 @@ msgid "Attenuation Filter"
msgstr ""
#: scene/3d/audio_stream_player_3d.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
#: servers/audio/effects/audio_effect_filter.cpp
msgid "Cutoff Hz"
msgstr ""
@@ -21206,11 +22629,6 @@ msgid "Octree"
msgstr ""
#: scene/3d/baked_lightmap.cpp
-#, fuzzy
-msgid "User Data"
-msgstr "উতà§à¦¤à¦°à¦¾à¦§à¦¿à¦•ারতà§à¦¬ পরিসà§à¦•ার করà§à¦¨"
-
-#: scene/3d/baked_lightmap.cpp
msgid "Finding meshes and lights"
msgstr ""
@@ -21480,6 +22898,16 @@ msgid "Ring Axis"
msgstr "সতরà§à¦•তা"
#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Rotate Y"
+msgstr "পà§à¦°à¦¦à§‡à¦¶/রাজà§à¦¯"
+
+#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Disable Z"
+msgstr "অসমরà§à¦¥"
+
+#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
msgid "Flatness"
msgstr ""
@@ -21519,17 +22947,12 @@ msgstr "MeshLibrary (মেস-লাইবà§à¦°à§‡à¦°à¦¿)..."
msgid "Dynamic Range"
msgstr "MeshLibrary (মেস-লাইবà§à¦°à§‡à¦°à¦¿)..."
-#: scene/3d/gi_probe.cpp
+#: scene/3d/gi_probe.cpp scene/3d/light.cpp
msgid "Normal Bias"
msgstr ""
#: scene/3d/gi_probe.cpp
#, fuzzy
-msgid "Compress"
-msgstr "কমà§à¦ªà¦¨à§‡à¦¨à§à¦Ÿà¦¸"
-
-#: scene/3d/gi_probe.cpp
-#, fuzzy
msgid "Plotting Meshes"
msgstr "ছবিসমূহ বà§à¦²à¦¿à¦Ÿà¦¿à¦‚ (Blitting) করা হচà§à¦›à§‡"
@@ -21556,16 +22979,31 @@ msgstr ""
#: scene/3d/light.cpp
#, fuzzy
+msgid "Indirect Energy"
+msgstr "Emission-à¦à¦° সà§à¦¥à¦¾à¦¨à¦¸à¦®à§‚হ:"
+
+#: scene/3d/light.cpp
+#, fuzzy
msgid "Negative"
msgstr "জিডিনà§à¦¯à¦¾à¦Ÿà¦¿à¦­"
#: scene/3d/light.cpp
#, fuzzy
+msgid "Specular"
+msgstr "চালানোর মোড:"
+
+#: scene/3d/light.cpp
+#, fuzzy
msgid "Bake Mode"
msgstr "ঘূরà§à¦£à¦¾à§Ÿà¦¨ মোড"
#: scene/3d/light.cpp
#, fuzzy
+msgid "Contact"
+msgstr "রঙ পছনà§à¦¦ করà§à¦¨"
+
+#: scene/3d/light.cpp
+#, fuzzy
msgid "Reverse Cull Face"
msgstr "বাস ভলিউম রিসেট করà§à¦¨"
@@ -21576,11 +23014,31 @@ msgstr "অংশাদি:"
#: scene/3d/light.cpp
#, fuzzy
+msgid "Split 1"
+msgstr "পথ বিভকà§à¦¤ করà§à¦¨"
+
+#: scene/3d/light.cpp
+#, fuzzy
+msgid "Split 2"
+msgstr "পথ বিভকà§à¦¤ করà§à¦¨"
+
+#: scene/3d/light.cpp
+#, fuzzy
+msgid "Split 3"
+msgstr "পথ বিভকà§à¦¤ করà§à¦¨"
+
+#: scene/3d/light.cpp
+#, fuzzy
msgid "Blend Splits"
msgstr "বà§à¦²à§‡à¦¨à§à¦¡-à¦à¦° সময়সমূহ:"
#: scene/3d/light.cpp
#, fuzzy
+msgid "Bias Split Scale"
+msgstr "সà§à¦¨à§à¦¯à¦¾à¦ª বà§à¦¯à¦¬à¦¹à¦¾à¦° করà§à¦¨"
+
+#: scene/3d/light.cpp
+#, fuzzy
msgid "Depth Range"
msgstr "গভীরতা"
@@ -21606,6 +23064,11 @@ msgstr ""
msgid "Spot"
msgstr ""
+#: scene/3d/light.cpp
+#, fuzzy
+msgid "Angle Attenuation"
+msgstr "অà§à¦¯à¦¾à¦¨à¦¿à¦®à§‡à¦¶à¦¨"
+
#: scene/3d/mesh_instance.cpp
msgid "Software Skinning"
msgstr ""
@@ -21734,6 +23197,63 @@ msgstr "অকà§à¦·"
#: scene/3d/physics_body.cpp
#, fuzzy
+msgid "Linear X"
+msgstr "রৈখিক/লিনিয়ার"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Linear Y"
+msgstr "রৈখিক/লিনিয়ার"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Linear Z"
+msgstr "রৈখিক/লিনিয়ার"
+
+#: scene/3d/physics_body.cpp
+msgid "Angular X"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Angular Y"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Angular Z"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Motion X"
+msgstr "পà§à¦°à¦•à§à¦°à¦¿à¦¯à¦¼à¦¾/অà§à¦¯à¦¾à¦•শন"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Motion Y"
+msgstr "পà§à¦°à¦•à§à¦°à¦¿à¦¯à¦¼à¦¾/অà§à¦¯à¦¾à¦•শন"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Motion Z"
+msgstr "পà§à¦°à¦•à§à¦°à¦¿à¦¯à¦¼à¦¾/অà§à¦¯à¦¾à¦•শন"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Move Lock X"
+msgstr "মোড (Mode) সরান"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Move Lock Y"
+msgstr "মোড (Mode) সরান"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Move Lock Z"
+msgstr "মোড (Mode) সরান"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
msgid "Body Offset"
msgstr "অফসেট/ভারসামà§à¦¯:"
@@ -21767,6 +23287,15 @@ msgid "Exclude Nodes"
msgstr "নোড(সমূহ) অপসারণ করà§à¦¨"
#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Params"
+msgstr "পরিবরà§à¦¤à¦¨à¦¸à¦®à§‚হ হাল-নাগাদ করà§à¦¨"
+
+#: scene/3d/physics_joint.cpp
+msgid "Impulse Clamp"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit"
msgstr ""
@@ -21780,6 +23309,55 @@ msgstr "বড় হাতের অকà§à¦·à¦°"
msgid "Lower"
msgstr "ছোট হাতের অকà§à¦·à¦°"
+#: scene/3d/physics_joint.cpp scene/3d/vehicle_body.cpp
+#, fuzzy
+msgid "Relaxation"
+msgstr "বিচà§à¦›à§‡à¦¦:"
+
+#: scene/3d/physics_joint.cpp
+msgid "Motor"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Target Velocity"
+msgstr "বড় হাতের অকà§à¦·à¦°à§‡ পরিবরà§à¦¤à¦¨à§‡ করà§à¦¨"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Max Impulse"
+msgstr "গতি (FPS):"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit"
+msgstr "রৈখিক/লিনিয়ার"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Upper Distance"
+msgstr "ইনà§à¦¸à¦Ÿà§à¦¯à¦¾à¦¨à§à¦¸:"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Lower Distance"
+msgstr "ইনà§à¦¸à¦Ÿà§à¦¯à¦¾à¦¨à§à¦¸:"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Restitution"
+msgstr "বরà§à¦£à¦¨à¦¾:"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motion"
+msgstr "বড় হাতের অকà§à¦·à¦°à§‡ পরিবরà§à¦¤à¦¨à§‡ করà§à¦¨"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Ortho"
+msgstr "সমকোণীয় (Orthogonal)"
+
#: scene/3d/physics_joint.cpp
#, fuzzy
msgid "Upper Angle"
@@ -21792,6 +23370,16 @@ msgstr "ছোট হাতের অকà§à¦·à¦°"
#: scene/3d/physics_joint.cpp
#, fuzzy
+msgid "Angular Motion"
+msgstr "অà§à¦¯à¦¾à¦¨à¦¿à¦®à§‡à¦¶à¦¨"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Angular Ortho"
+msgstr "সরà§à¦¬à§‡à¦¾à¦šà§à¦š কৌণিক ভà§à¦²/সমসà§à¦¯à¦¾:"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
msgid "Swing Span"
msgstr "দৃশà§à¦¯ সংরকà§à¦·à¦¿à¦¤ হচà§à¦›à§‡"
@@ -21800,17 +23388,99 @@ msgid "Twist Span"
msgstr ""
#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit X"
+msgstr "রৈখিক/লিনিয়ার"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motor X"
+msgstr "বড় হাতের অকà§à¦·à¦°à§‡ পরিবরà§à¦¤à¦¨à§‡ করà§à¦¨"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Force Limit"
+msgstr "ডà§à¦° কলস"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Spring X"
+msgstr "রৈখিক/লিনিয়ার"
+
+#: scene/3d/physics_joint.cpp
+msgid "Equilibrium Point"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit X"
msgstr ""
#: scene/3d/physics_joint.cpp
+msgid "Erp"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Motor X"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Spring X"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit Y"
+msgstr "রৈখিক/লিনিয়ার"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motor Y"
+msgstr "বড় হাতের অকà§à¦·à¦°à§‡ পরিবরà§à¦¤à¦¨à§‡ করà§à¦¨"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Spring Y"
+msgstr "রৈখিক/লিনিয়ার"
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit Y"
msgstr ""
#: scene/3d/physics_joint.cpp
+msgid "Angular Motor Y"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Spring Y"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit Z"
+msgstr "রৈখিক/লিনিয়ার"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motor Z"
+msgstr "বড় হাতের অকà§à¦·à¦°à§‡ পরিবরà§à¦¤à¦¨à§‡ করà§à¦¨"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Spring Z"
+msgstr "রৈখিক/লিনিয়ার"
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit Z"
msgstr ""
+#: scene/3d/physics_joint.cpp
+msgid "Angular Motor Z"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Spring Z"
+msgstr ""
+
#: scene/3d/portal.cpp
msgid "The RoomManager should not be a child or grandchild of a Portal."
msgstr ""
@@ -21929,7 +23599,7 @@ msgstr ""
msgid "Use Default Simplify"
msgstr ""
-#: scene/3d/room.cpp
+#: scene/3d/room.cpp scene/3d/room_manager.cpp
msgid "Room Simplify"
msgstr ""
@@ -21968,6 +23638,13 @@ msgstr ""
msgid "Main"
msgstr ""
+#: scene/3d/room_manager.cpp scene/animation/animation_player.cpp
+#: scene/animation/animation_tree.cpp scene/animation/animation_tree_player.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+#, fuzzy
+msgid "Active"
+msgstr "পà§à¦°à¦•à§à¦°à¦¿à¦¯à¦¼à¦¾/অà§à¦¯à¦¾à¦•শন"
+
#: scene/3d/room_manager.cpp
msgid "Roomlist"
msgstr ""
@@ -21992,6 +23669,54 @@ msgid "Gameplay"
msgstr ""
#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Gameplay Monitor"
+msgstr "মনিটর"
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Use Secondary PVS"
+msgstr "সà§à¦¨à§à¦¯à¦¾à¦ª বà§à¦¯à¦¬à¦¹à¦¾à¦° করà§à¦¨"
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Merge Meshes"
+msgstr "মেস"
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Show Margins"
+msgstr "অরিজিন দেখà§à¦¨"
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Debug Sprawl"
+msgstr "ডিবাগ"
+
+#: scene/3d/room_manager.cpp
+msgid "Overlap Warning Threshold"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Preview Camera"
+msgstr "পà§à¦°à¦¿à¦­à¦¿à¦‰"
+
+#: scene/3d/room_manager.cpp
+msgid "Portal Depth Limit"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Default Portal Margin"
+msgstr "হà§à¦¯à¦¾à¦¨à§à¦¡à§‡à¦² সà§à¦¥à¦¾à¦ªà¦¨ করà§à¦¨"
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Roaming Expansion Margin"
+msgstr "ধারক/বাহক পরà§à¦¯à¦¨à§à¦¤ বিসà§à¦¤à§ƒà¦¤ করà§à¦¨"
+
+#: scene/3d/room_manager.cpp
msgid ""
"RoomList path is invalid.\n"
"Please check the RoomList branch has been assigned in the RoomManager."
@@ -22117,6 +23842,20 @@ msgstr "পিকà§à¦¸à§‡à¦² সà§à¦¨à§à¦¯à¦¾à¦ª"
msgid "Billboard"
msgstr ""
+#: scene/3d/sprite_3d.cpp scene/resources/material.cpp
+#, fuzzy
+msgid "Transparent"
+msgstr "পকà§à¦·à¦¾à¦¨à§à¦¤à¦°à¦¿à¦¤ করà§à¦¨"
+
+#: scene/3d/sprite_3d.cpp
+#, fuzzy
+msgid "Shaded"
+msgstr "শেডার"
+
+#: scene/3d/sprite_3d.cpp
+msgid "Double Sided"
+msgstr ""
+
#: scene/3d/sprite_3d.cpp
msgid "Alpha Cut"
msgstr ""
@@ -22191,11 +23930,6 @@ msgstr "অভিবà§à¦¯à¦•à§à¦¤à¦¿ (Expression) পরিবরà§à¦¤à¦¨ ক
msgid "Max Force"
msgstr "সমসà§à¦¯à¦¾/ভà§à¦²"
-#: scene/3d/vehicle_body.cpp
-#, fuzzy
-msgid "Relaxation"
-msgstr "বিচà§à¦›à§‡à¦¦:"
-
#: scene/3d/visibility_notifier.cpp
msgid "AABB"
msgstr ""
@@ -22336,7 +24070,7 @@ msgstr "X-ফেড/বিলীন সময় (সেঃ):"
#: scene/animation/animation_blend_tree.cpp
#, fuzzy
-msgid "autorestart_"
+msgid "Auto Restart"
msgstr "সà§à¦¬à§Ÿà¦‚কà§à¦°à¦¿à§Ÿà¦­à¦¾à¦¬à§‡ পà§à¦¨à¦°à¦¾à¦°à¦®à§à¦­ করà§à¦¨:"
#: scene/animation/animation_blend_tree.cpp
@@ -22422,13 +24156,6 @@ msgstr "বরà§à¦£à¦¨à¦¾:"
msgid "Default Blend Time"
msgstr "সাধারণ/ডিফলà§à¦Ÿ"
-#: scene/animation/animation_player.cpp scene/animation/animation_tree.cpp
-#: scene/animation/animation_tree_player.cpp
-#: servers/audio/effects/audio_effect_delay.cpp
-#, fuzzy
-msgid "Active"
-msgstr "পà§à¦°à¦•à§à¦°à¦¿à¦¯à¦¼à¦¾/অà§à¦¯à¦¾à¦•শন"
-
#: scene/animation/animation_player.cpp
msgid "Method Call Mode"
msgstr ""
@@ -22557,10 +24284,6 @@ msgstr "নোডের নতà§à¦¨ অভিভাবক দান করà§à¦
msgid "Max Iterations"
msgstr "ফাংশনের (Function) নতà§à¦¨ নামকরণ করà§à¦¨"
-#: scene/animation/tween.cpp scene/resources/texture.cpp
-msgid "Repeat"
-msgstr ""
-
#: scene/animation/tween.cpp
msgid "Playback Process Mode"
msgstr ""
@@ -22591,20 +24314,6 @@ msgstr "মোড (Mode) বাছাই করà§à¦¨"
msgid "Alignment"
msgstr ""
-#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
-#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
-#: scene/resources/style_box.cpp
-#, fuzzy
-msgid "Horizontal"
-msgstr "বকà§à¦°à¦°à§‡à¦–ায় বিনà§à¦¦à§ সরান"
-
-#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
-#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
-#: scene/resources/style_box.cpp
-#, fuzzy
-msgid "Vertical"
-msgstr "ভারটেকà§à¦¸"
-
#: scene/gui/base_button.cpp
#, fuzzy
msgid "Shortcut In Tooltip"
@@ -22703,10 +24412,6 @@ msgid "HSV"
msgstr ""
#: scene/gui/color_picker.cpp
-msgid "Raw"
-msgstr ""
-
-#: scene/gui/color_picker.cpp
msgid "Switch between hexadecimal and code values."
msgstr ""
@@ -22767,6 +24472,32 @@ msgid "Focus"
msgstr "পথের উপর ফোকাস করà§à¦¨"
#: scene/gui/control.cpp
+msgid "Neighbour Left"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Neighbour Top"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Neighbour Right"
+msgstr ""
+
+#: scene/gui/control.cpp
+#, fuzzy
+msgid "Neighbour Bottom"
+msgstr "নিমà§à¦¨"
+
+#: scene/gui/control.cpp
+msgid "Next"
+msgstr "পরবরà§à¦¤à§€"
+
+#: scene/gui/control.cpp
+#, fuzzy
+msgid "Previous"
+msgstr "পূরà§à¦¬à§‡à¦° টà§à¦¯à¦¾à¦¬"
+
+#: scene/gui/control.cpp
msgid "Mouse"
msgstr ""
@@ -22804,7 +24535,7 @@ msgid "Dialog"
msgstr "XForm à¦à¦° সংলাপ"
#: scene/gui/dialogs.cpp
-msgid "Hide On Ok"
+msgid "Hide On OK"
msgstr ""
#: scene/gui/dialogs.cpp scene/gui/label.cpp
@@ -22904,7 +24635,7 @@ msgid "Timers"
msgstr "সময়:"
#: scene/gui/item_list.cpp scene/gui/popup_menu.cpp scene/gui/tree.cpp
-msgid "Incremental Search Max Interval (msec)"
+msgid "Incremental Search Max Interval Msec"
msgstr ""
#: scene/gui/item_list.cpp scene/gui/tree.cpp
@@ -23480,6 +25211,26 @@ msgstr "বামে মাতà§à¦°à¦¾ দিন"
msgid "Nine Patch Stretch"
msgstr "ইনà§à¦Ÿà¦¾à¦°à¦ªà§‹à¦²à§‡à¦¶à¦¨ মোড"
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Left"
+msgstr "হà§à¦¯à¦¾à¦¨à§à¦¡à§‡à¦² সà§à¦¥à¦¾à¦ªà¦¨ করà§à¦¨"
+
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Top"
+msgstr "হà§à¦¯à¦¾à¦¨à§à¦¡à§‡à¦² সà§à¦¥à¦¾à¦ªà¦¨ করà§à¦¨"
+
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Right"
+msgstr "হà§à¦¯à¦¾à¦¨à§à¦¡à§‡à¦² সà§à¦¥à¦¾à¦ªà¦¨ করà§à¦¨"
+
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Bottom"
+msgstr "মোড (Mode) বাছাই করà§à¦¨"
+
#: scene/gui/tree.cpp
msgid "Custom Minimum Height"
msgstr ""
@@ -23517,8 +25268,9 @@ msgid "Paused"
msgstr ""
#: scene/gui/video_player.cpp
-msgid "Buffering (msec)"
-msgstr ""
+#, fuzzy
+msgid "Buffering Msec"
+msgstr "পশà§à¦šà¦¾à§Ž দরà§à¦¶à¦¨"
#: scene/gui/video_player.cpp
#, fuzzy
@@ -23866,6 +25618,22 @@ msgid "Shadow Atlas"
msgstr "à¦à¦Ÿà¦²à¦¾à¦¸/মানচিতà§à¦°à¦¾à¦¬à¦²à§€:"
#: scene/main/viewport.cpp
+msgid "Quad 0"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 1"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 2"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 3"
+msgstr ""
+
+#: scene/main/viewport.cpp
#, fuzzy
msgid "Canvas Transform"
msgstr "রà§à¦ªà¦¾à¦¨à§à¦¤à¦°"
@@ -23880,6 +25648,11 @@ msgid "Tooltip Delay (sec)"
msgstr ""
#: scene/register_scene_types.cpp
+#, fuzzy
+msgid "Swap OK Cancel"
+msgstr "বাতিল"
+
+#: scene/register_scene_types.cpp
msgid "Use hiDPI"
msgstr ""
@@ -23894,21 +25667,6 @@ msgid "Custom Font"
msgstr "নোড-সমূহ করà§à¦¤à¦¨/কাট করà§à¦¨"
#: scene/resources/audio_stream_sample.cpp
-#, fuzzy
-msgid "Loop Mode"
-msgstr "মোড (Mode) সরান"
-
-#: scene/resources/audio_stream_sample.cpp
-#, fuzzy
-msgid "Loop Begin"
-msgstr "মোড (Mode) সরান"
-
-#: scene/resources/audio_stream_sample.cpp
-#, fuzzy
-msgid "Loop End"
-msgstr "মোড (Mode) সরান"
-
-#: scene/resources/audio_stream_sample.cpp
#: servers/audio/effects/audio_stream_generator.cpp servers/audio_server.cpp
#, fuzzy
msgid "Mix Rate"
@@ -23968,6 +25726,17 @@ msgstr "গঠনবিনà§à¦¯à¦¾à¦¸à§‡à¦° সিদà§à¦§à¦¾à¦¨à§à¦¤ (অপ
#: scene/resources/dynamic_font.cpp
#, fuzzy
+msgid "Char"
+msgstr "গà§à¦°à¦¹à¦¨à¦¯à§‹à¦—à§à¦¯ অকà§à¦·à¦°à¦¸à¦®à§‚হ:"
+
+#: scene/resources/dynamic_font.cpp scene/resources/world.cpp
+#: scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Space"
+msgstr "পà§à¦°à¦§à¦¾à¦¨ দৃশà§à¦¯"
+
+#: scene/resources/dynamic_font.cpp
+#, fuzzy
msgid "Font"
msgstr "ফনà§à¦Ÿ"
@@ -24194,6 +25963,43 @@ msgid "Glow"
msgstr ""
#: scene/resources/environment.cpp
+#, fuzzy
+msgid "Levels"
+msgstr "ডেভেলপার"
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "1"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "2"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "3"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "4"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "5"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "6"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "7"
+msgstr ""
+
+#: scene/resources/environment.cpp
msgid "Bloom"
msgstr ""
@@ -24286,10 +26092,68 @@ msgid "Next Pass"
msgstr "পরের টà§à¦¯à¦¾à¦¬"
#: scene/resources/material.cpp
+msgid "Use Shadow To Opacity"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Unshaded"
+msgstr "Shadeless পà§à¦°à¦¦à¦°à§à¦¶à¦¨"
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Vertex Lighting"
+msgstr "অংশাদি:"
+
+#: scene/resources/material.cpp
+msgid "No Depth Test"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Use Point Size"
+msgstr "সনà§à¦®à§à¦– দরà§à¦¶à¦¨"
+
+#: scene/resources/material.cpp
+msgid "World Triplanar"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Fixed Size"
+msgstr "সনà§à¦®à§à¦– দরà§à¦¶à¦¨"
+
+#: scene/resources/material.cpp
+msgid "Albedo Tex Force sRGB"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Do Not Receive Shadows"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Disable Ambient Light"
+msgstr "ডানে মাতà§à¦°à¦¾ দিন"
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Ensure Correct Normals"
+msgstr "রà§à¦ªà¦¾à¦¨à§à¦¤à¦° নিষà§à¦«à¦²à¦¾ করা হয়েছে।"
+
+#: scene/resources/material.cpp
#, fuzzy
msgid "Vertex Color"
msgstr "ভারটেকà§à¦¸"
+#: scene/resources/material.cpp
+msgid "Use As Albedo"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Is sRGB"
+msgstr ""
+
#: scene/resources/material.cpp servers/visual_server.cpp
#, fuzzy
msgid "Parameters"
@@ -24326,6 +26190,11 @@ msgid "Billboard Mode"
msgstr "চালানোর মোড:"
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Billboard Keep Scale"
+msgstr "চালানোর মোড:"
+
+#: scene/resources/material.cpp
msgid "Grow"
msgstr ""
@@ -24335,6 +26204,10 @@ msgid "Grow Amount"
msgstr "পরিমাণ:"
#: scene/resources/material.cpp
+msgid "Use Alpha Scissor"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Alpha Scissor Threshold"
msgstr ""
@@ -24366,10 +26239,20 @@ msgid "Metallic Specular"
msgstr ""
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Metallic Texture"
+msgstr "Emission পূরণ:"
+
+#: scene/resources/material.cpp
msgid "Metallic Texture Channel"
msgstr ""
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Roughness Texture"
+msgstr "বসà§à¦¤à§ অপসারণ করà§à¦¨"
+
+#: scene/resources/material.cpp
msgid "Roughness Texture Channel"
msgstr ""
@@ -24389,6 +26272,16 @@ msgid "Emission Operator"
msgstr "Emission-à¦à¦° সà§à¦¥à¦¾à¦¨à¦¸à¦®à§‚হ:"
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Emission On UV2"
+msgstr "Emission Mask সà§à¦¥à¦¾à¦ªà¦¨ করà§à¦¨"
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Emission Texture"
+msgstr "Emission পূরণ:"
+
+#: scene/resources/material.cpp
msgid "NormalMap"
msgstr ""
@@ -24403,6 +26296,11 @@ msgstr "যথেচà§à¦› ঢাল:"
#: scene/resources/material.cpp
#, fuzzy
+msgid "Rim Texture"
+msgstr "বসà§à¦¤à§ অপসারণ করà§à¦¨"
+
+#: scene/resources/material.cpp
+#, fuzzy
msgid "Clearcoat"
msgstr "পরিসà§à¦•ার করà§à¦¨/কà§à¦²à§€à§Ÿà¦¾à¦°"
@@ -24412,15 +26310,28 @@ msgid "Clearcoat Gloss"
msgstr "ভঙà§à¦—ি পরিষà§à¦•ার করà§à¦¨"
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Clearcoat Texture"
+msgstr "থিম à¦à¦¡à¦¿à¦Ÿ করà§à¦¨..."
+
+#: scene/resources/material.cpp
msgid "Anisotropy"
msgstr ""
#: scene/resources/material.cpp
+msgid "Anisotropy Flowmap"
+msgstr ""
+
+#: scene/resources/material.cpp
#, fuzzy
msgid "Ambient Occlusion"
msgstr "Poly সমà§à¦ªà¦¾à¦¦à¦¨ করà§à¦¨"
#: scene/resources/material.cpp
+msgid "On UV2"
+msgstr ""
+
+#: scene/resources/material.cpp
#, fuzzy
msgid "Texture Channel"
msgstr "গঠনবিনà§à¦¯à¦¾à¦¸à§‡à¦° à¦à¦²à¦¾à¦•া"
@@ -24458,6 +26369,11 @@ msgstr "টà§à¦°à§à¦¯à¦¾à¦¨à¦œà¦¿à¦¶à¦¨/সà§à¦¥à¦¾à¦¨à¦¾à¦¨à§à¦¤à¦°à¦£"
#: scene/resources/material.cpp
#, fuzzy
+msgid "Transmission Texture"
+msgstr "টà§à¦°à§à¦¯à¦¾à¦¨à¦œà¦¿à¦¶à¦¨/সà§à¦¥à¦¾à¦¨à¦¾à¦¨à§à¦¤à¦°à¦£"
+
+#: scene/resources/material.cpp
+#, fuzzy
msgid "Refraction"
msgstr "বিচà§à¦›à§‡à¦¦:"
@@ -24476,6 +26392,10 @@ msgid "UV1"
msgstr "অতিবেগà§à¦¨à§€"
#: scene/resources/material.cpp
+msgid "Triplanar"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Triplanar Sharpness"
msgstr ""
@@ -24686,6 +26606,16 @@ msgstr "থিম à¦à¦¡à¦¿à¦Ÿ করà§à¦¨..."
msgid "Point Count"
msgstr "ইনপà§à¦Ÿ যোগ করà§à¦¨"
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Scale Random"
+msgstr "সà§à¦•েল/মাপের অনà§à¦ªà¦¾à¦¤:"
+
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Scale Curve"
+msgstr "বকà§à¦°à¦°à§‡à¦–া বনà§à¦§ করà§à¦¨"
+
#: scene/resources/physics_material.cpp
msgid "Rough"
msgstr ""
@@ -24747,10 +26677,6 @@ msgid "A"
msgstr ""
#: scene/resources/shader.cpp
-msgid "Code"
-msgstr ""
-
-#: scene/resources/shader.cpp
#, fuzzy
msgid "Custom Defines"
msgstr "সà§à¦¬à¦¨à¦¿à¦°à§à¦¬à¦¾à¦šà¦¿à¦¤ দৃশà§à¦¯ চালান"
@@ -24847,15 +26773,6 @@ msgstr ""
#: scene/resources/texture.cpp
#, fuzzy
-msgid "Storage"
-msgstr "সংরকà§à¦·à¦¿à¦¤ ফাইল:"
-
-#: scene/resources/texture.cpp
-msgid "Lossy Quality"
-msgstr ""
-
-#: scene/resources/texture.cpp
-#, fuzzy
msgid "Load Path"
msgstr "রিসোরà§à¦¸ লোড করà§à¦¨"
@@ -24987,11 +26904,6 @@ msgstr "অকারà§à¦¯à¦•র উৎস!"
msgid "Fallback Environment"
msgstr "পরিবেশ (Environment)"
-#: scene/resources/world.cpp scene/resources/world_2d.cpp
-#, fuzzy
-msgid "Space"
-msgstr "পà§à¦°à¦§à¦¾à¦¨ দৃশà§à¦¯"
-
#: scene/resources/world.cpp
#, fuzzy
msgid "Scenario"
@@ -25072,10 +26984,37 @@ msgstr ""
msgid "Wet"
msgstr ""
-#: servers/audio/effects/audio_effect_compressor.cpp
-msgid "Threshold"
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "Voice"
msgstr ""
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+msgid "Delay (ms)"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_phaser.cpp
+msgid "Rate Hz"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#, fuzzy
+msgid "Depth (ms)"
+msgstr "গভীরতা"
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+msgid "Level dB"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+#: servers/audio/effects/audio_effect_panner.cpp
+#, fuzzy
+msgid "Pan"
+msgstr "সমতল:"
+
#: servers/audio/effects/audio_effect_compressor.cpp
#: servers/audio/effects/audio_effect_filter.cpp
msgid "Gain"
@@ -25099,20 +27038,6 @@ msgid "Tap 1"
msgstr ""
#: servers/audio/effects/audio_effect_delay.cpp
-msgid "Delay (ms)"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_delay.cpp
-msgid "Level dB"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_delay.cpp
-#: servers/audio/effects/audio_effect_panner.cpp
-#, fuzzy
-msgid "Pan"
-msgstr "সমতল:"
-
-#: servers/audio/effects/audio_effect_delay.cpp
msgid "Tap 2"
msgstr ""
@@ -25173,10 +27098,6 @@ msgstr ""
msgid "Range Max Hz"
msgstr ""
-#: servers/audio/effects/audio_effect_phaser.cpp
-msgid "Rate Hz"
-msgstr ""
-
#: servers/audio/effects/audio_effect_pitch_shift.cpp
msgid "Oversampling"
msgstr ""
@@ -25192,7 +27113,7 @@ msgid "Predelay"
msgstr ""
#: servers/audio/effects/audio_effect_reverb.cpp
-msgid "(msec)"
+msgid "Msec"
msgstr ""
#: servers/audio/effects/audio_effect_reverb.cpp
diff --git a/editor/translations/br.po b/editor/translations/br.po
index cfcfaad56b..f235e3b87c 100644
--- a/editor/translations/br.po
+++ b/editor/translations/br.po
@@ -22,7 +22,7 @@ msgstr ""
"< 90 || n % 100 > 99)) ? 2 : ((n != 0 && n % 1000000 == 0) ? 3 : 4)));\n"
"X-Generator: Weblate 4.4.1-dev\n"
-#: core/bind/core_bind.cpp
+#: core/bind/core_bind.cpp main/main.cpp
msgid "Tablet Driver"
msgstr ""
@@ -115,8 +115,8 @@ msgstr "Tro Fiñvskeudenn"
#: core/bind/core_bind.cpp editor/editor_settings.cpp main/main.cpp
#: modules/gdscript/gdscript_editor.cpp modules/gridmap/grid_map.cpp
#: modules/mono/csharp_script.cpp modules/visual_script/visual_script_nodes.cpp
-#: scene/2d/tile_map.cpp scene/3d/camera.cpp scene/gui/control.cpp
-#: scene/gui/graph_edit.cpp scene/main/viewport.cpp
+#: scene/2d/tile_map.cpp scene/3d/camera.cpp scene/3d/light.cpp
+#: scene/gui/control.cpp scene/gui/graph_edit.cpp scene/main/viewport.cpp
#: scene/resources/dynamic_font.cpp scene/resources/navigation_mesh.cpp
#: scene/resources/primitive_meshes.cpp scene/resources/sky.cpp
#: scene/resources/style_box.cpp scene/resources/texture.cpp
@@ -212,8 +212,7 @@ msgid "Data"
msgstr ""
#: core/io/file_access_network.cpp core/register_core_types.cpp
-#: editor/editor_settings.cpp editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp main/main.cpp
+#: editor/editor_settings.cpp main/main.cpp
#: modules/gdscript/language_server/gdscript_language_server.cpp
msgid "Network"
msgstr ""
@@ -474,9 +473,10 @@ msgstr ""
msgid "Relative"
msgstr ""
-#: core/os/input_event.cpp scene/2d/camera_2d.cpp
-#: scene/3d/interpolated_camera.cpp scene/animation/animation_player.cpp
-#: scene/resources/environment.cpp
+#: core/os/input_event.cpp scene/2d/camera_2d.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/interpolated_camera.cpp
+#: scene/animation/animation_player.cpp scene/resources/environment.cpp
+#: scene/resources/particles_material.cpp
msgid "Speed"
msgstr ""
@@ -521,8 +521,9 @@ msgstr ""
msgid "Pitch"
msgstr ""
-#: core/os/input_event.cpp scene/2d/physics_body_2d.cpp
-#: scene/3d/physics_body.cpp
+#: core/os/input_event.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/physics_body_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/3d/physics_body.cpp scene/resources/particles_material.cpp
msgid "Velocity"
msgstr ""
@@ -539,6 +540,8 @@ msgid "Controller Value"
msgstr ""
#: core/project_settings.cpp editor/editor_node.cpp main/main.cpp
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/windows/export/export.cpp
#, fuzzy
msgid "Application"
msgstr "Tro Fiñvskeudenn"
@@ -555,13 +558,16 @@ msgstr ""
#: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp
#: editor/editor_plugin_settings.cpp editor/editor_profiler.cpp
#: editor/project_manager.cpp editor/settings_config_dialog.cpp
-#: modules/gdnative/nativescript/nativescript.cpp scene/2d/area_2d.cpp
-#: scene/3d/area.cpp scene/main/node.cpp
+#: modules/gdnative/nativescript/nativescript.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/osx/export/export.cpp scene/2d/area_2d.cpp scene/3d/area.cpp
+#: scene/main/node.cpp
msgid "Name"
msgstr ""
#: core/project_settings.cpp editor/editor_help.cpp
-#: modules/visual_script/visual_script_nodes.cpp
+#: modules/visual_script/visual_script_nodes.cpp platform/uwp/export/export.cpp
+#: platform/windows/export/export.cpp
msgid "Description"
msgstr ""
@@ -597,7 +603,7 @@ msgid "Custom User Dir Name"
msgstr ""
#: core/project_settings.cpp editor/animation_track_editor.cpp
-#: editor/editor_audio_buses.cpp servers/audio_server.cpp
+#: editor/editor_audio_buses.cpp main/main.cpp servers/audio_server.cpp
msgid "Audio"
msgstr ""
@@ -748,10 +754,13 @@ msgstr ""
msgid "Sharpen Intensity"
msgstr ""
-#: core/project_settings.cpp editor/editor_node.cpp editor/editor_settings.cpp
-#: editor/plugins/script_editor_plugin.cpp editor/project_export.cpp
-#: main/main.cpp modules/gdscript/gdscript.cpp
-#: modules/visual_script/visual_script.cpp scene/3d/room_manager.cpp
+#: core/project_settings.cpp editor/editor_export.cpp editor/editor_node.cpp
+#: editor/editor_settings.cpp editor/plugins/script_editor_plugin.cpp
+#: editor/project_export.cpp main/main.cpp modules/gdscript/gdscript.cpp
+#: modules/visual_script/visual_script.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp scene/3d/room_manager.cpp
#: scene/main/scene_tree.cpp scene/resources/shape_2d.cpp
#: servers/visual_server.cpp
msgid "Debug"
@@ -974,6 +983,7 @@ msgid "Subsurface Scattering"
msgstr ""
#: drivers/gles3/rasterizer_scene_gles3.cpp
+#: editor/import/resource_importer_texture.cpp
#: editor/plugins/spatial_editor_plugin.cpp modules/gltf/gltf_node.cpp
#: modules/gridmap/grid_map.cpp scene/2d/cpu_particles_2d.cpp
#: scene/2d/node_2d.cpp scene/2d/parallax_layer.cpp scene/2d/polygon_2d.cpp
@@ -1269,6 +1279,7 @@ msgid "Editors"
msgstr ""
#: editor/animation_track_editor.cpp editor/editor_settings.cpp
+#: editor/import/resource_importer_scene.cpp
#: editor/plugins/animation_player_editor_plugin.cpp editor/scene_tree_dock.cpp
#: scene/2d/animated_sprite.cpp scene/2d/cpu_particles_2d.cpp
#: scene/2d/sprite.cpp scene/3d/cpu_particles.cpp scene/3d/sprite_3d.cpp
@@ -1499,14 +1510,14 @@ msgstr ""
msgid "Seconds"
msgstr ""
-#: editor/animation_track_editor.cpp
+#: editor/animation_track_editor.cpp editor/import/resource_importer_scene.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp main/main.cpp
#: scene/resources/texture.cpp
msgid "FPS"
msgstr ""
#: editor/animation_track_editor.cpp editor/editor_plugin_settings.cpp
-#: editor/editor_resource_picker.cpp
+#: editor/editor_resource_picker.cpp editor/import/resource_importer_wav.cpp
#: editor/plugins/polygon_2d_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
@@ -2449,7 +2460,9 @@ msgid "Remove Autoload"
msgstr ""
#: editor/editor_autoload_settings.cpp editor/editor_plugin_settings.cpp
-#: modules/gdscript/gdscript.cpp scene/2d/polygon_2d.cpp scene/3d/area.cpp
+#: modules/gdscript/gdscript.cpp platform/android/export/export_plugin.cpp
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#: scene/2d/polygon_2d.cpp scene/3d/area.cpp scene/3d/physics_joint.cpp
#: scene/3d/reflection_probe.cpp scene/main/canvas_layer.cpp
#: scene/resources/material.cpp servers/visual_server.cpp
msgid "Enable"
@@ -2602,6 +2615,57 @@ msgstr ""
#: editor/editor_export.cpp platform/android/export/export_plugin.cpp
#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
+msgid "Custom Template"
+msgstr ""
+
+#: editor/editor_export.cpp editor/project_export.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp
+msgid "Release"
+msgstr ""
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Binary Format"
+msgstr "Roudenn Treuzfurmadur 3D"
+
+#: editor/editor_export.cpp
+msgid "64 Bits"
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Embed PCK"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Texture Format"
+msgstr "Roudenn Treuzfurmadur 3D"
+
+#: editor/editor_export.cpp
+msgid "BPTC"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "S3TC"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "ETC"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "ETC2"
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "No BPTC Fallbacks"
+msgstr ""
+
+#: editor/editor_export.cpp platform/android/export/export_plugin.cpp
+#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
msgid "Custom debug template not found."
msgstr ""
@@ -2776,6 +2840,7 @@ msgid "Make Current"
msgstr ""
#: editor/editor_feature_profile.cpp editor/editor_node.cpp
+#: editor/import/resource_importer_scene.cpp
#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
msgid "Import"
msgstr ""
@@ -2901,8 +2966,11 @@ msgstr ""
msgid "Display Mode"
msgstr ""
-#: editor/editor_file_dialog.cpp main/main.cpp modules/csg/csg_shape.cpp
-#: modules/visual_script/visual_script_nodes.cpp
+#: editor/editor_file_dialog.cpp
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+#: editor/import/resource_importer_wav.cpp main/main.cpp
+#: modules/csg/csg_shape.cpp modules/visual_script/visual_script_nodes.cpp
#: modules/visual_script/visual_script_yield_nodes.cpp scene/2d/light_2d.cpp
#: scene/2d/physics_body_2d.cpp scene/2d/tile_map.cpp
#: scene/3d/baked_lightmap.cpp scene/3d/light.cpp scene/3d/physics_body.cpp
@@ -3035,7 +3103,9 @@ msgstr ""
msgid "Reimport Missing Imported Files"
msgstr ""
-#: editor/editor_help.cpp
+#: editor/editor_help.cpp scene/2d/camera_2d.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/resources/dynamic_font.cpp
+#: scene/resources/style_box.cpp
msgid "Top"
msgstr ""
@@ -3087,6 +3157,7 @@ msgid "Fonts"
msgstr ""
#: editor/editor_help.cpp editor/plugins/theme_editor_plugin.cpp
+#: platform/iphone/export/export.cpp
msgid "Icons"
msgstr ""
@@ -3245,7 +3316,9 @@ msgstr ""
msgid "Pin value [Disabled because '%s' is editor-only]"
msgstr ""
-#: editor/editor_inspector.cpp editor/scene_tree_dock.cpp
+#: editor/editor_inspector.cpp
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+#: editor/scene_tree_dock.cpp
#: modules/visual_script/visual_script_func_nodes.cpp
#: modules/visual_script/visual_script_nodes.cpp
#: modules/visual_script/visual_script_property_selector.cpp
@@ -3557,6 +3630,14 @@ msgid "Quick Open Script..."
msgstr ""
#: editor/editor_node.cpp
+msgid "Save & Reload"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Save changes to '%s' before reloading?"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "Save & Close"
msgstr ""
@@ -3667,6 +3748,10 @@ msgid "Open Project Manager?"
msgstr ""
#: editor/editor_node.cpp
+msgid "Save changes to the following scene(s) before reloading?"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "Save & Quit"
msgstr ""
@@ -3907,7 +3992,7 @@ msgid "Update Vital Only"
msgstr ""
#: editor/editor_node.cpp
-msgid "Translate Properties"
+msgid "Localize Settings"
msgstr ""
#: editor/editor_node.cpp
@@ -3923,7 +4008,7 @@ msgid "Inspector"
msgstr ""
#: editor/editor_node.cpp
-msgid "Capitalize Properties"
+msgid "Default Property Name Style"
msgstr ""
#: editor/editor_node.cpp
@@ -4483,7 +4568,9 @@ msgstr ""
msgid "Update"
msgstr ""
-#: editor/editor_plugin_settings.cpp
+#: editor/editor_plugin_settings.cpp platform/android/export/export_plugin.cpp
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp
msgid "Version"
msgstr ""
@@ -5430,7 +5517,7 @@ msgstr ""
msgid "Rect Custom Position"
msgstr ""
-#: editor/editor_settings.cpp
+#: editor/editor_settings.cpp platform/android/export/export_plugin.cpp
msgid "Screen"
msgstr ""
@@ -5453,6 +5540,19 @@ msgid "Editor SSL Certificates"
msgstr ""
#: editor/editor_settings.cpp
+msgid "HTTP Proxy"
+msgstr ""
+
+#: editor/editor_settings.cpp
+msgid "Host"
+msgstr ""
+
+#: editor/editor_settings.cpp editor/fileserver/editor_file_server.cpp
+#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp
+msgid "Port"
+msgstr ""
+
+#: editor/editor_settings.cpp
msgid "Project Manager"
msgstr ""
@@ -5492,7 +5592,8 @@ msgstr ""
msgid "String Color"
msgstr ""
-#: editor/editor_settings.cpp
+#: editor/editor_settings.cpp platform/javascript/export/export.cpp
+#: platform/uwp/export/export.cpp
msgid "Background Color"
msgstr ""
@@ -5651,22 +5752,6 @@ msgid "Starting the download..."
msgstr ""
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "HTTP Proxy"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Host"
-msgstr ""
-
-#: editor/export_template_manager.cpp editor/fileserver/editor_file_server.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp main/main.cpp
-#: modules/mono/mono_gd/gd_mono.cpp
-msgid "Port"
-msgstr ""
-
-#: editor/export_template_manager.cpp
msgid "Error requesting URL:"
msgstr ""
@@ -5908,6 +5993,7 @@ msgstr ""
#: editor/fileserver/editor_file_server.cpp
#: editor/plugins/version_control_editor_plugin.cpp
+#: platform/uwp/export/export.cpp platform/windows/export/export.cpp
msgid "Password"
msgstr ""
@@ -6271,6 +6357,109 @@ msgstr ""
msgid "Use Ambient"
msgstr ""
+#: editor/import/resource_importer_bitmask.cpp
+#, fuzzy
+msgid "Create From"
+msgstr "Krouiñ"
+
+#: editor/import/resource_importer_bitmask.cpp
+#: servers/audio/effects/audio_effect_compressor.cpp
+msgid "Threshold"
+msgstr ""
+
+#: editor/import/resource_importer_csv_translation.cpp
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_scene.cpp
+#: editor/import/resource_importer_texture.cpp
+#: editor/import/resource_importer_wav.cpp scene/3d/gi_probe.cpp
+msgid "Compress"
+msgstr ""
+
+#: editor/import/resource_importer_csv_translation.cpp
+msgid "Delimiter"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+msgid "No BPTC If RGB"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/sprite_3d.cpp
+#: scene/resources/material.cpp scene/resources/particles_material.cpp
+#: scene/resources/texture.cpp
+msgid "Flags"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/animation/tween.cpp
+#: scene/resources/texture.cpp
+msgid "Repeat"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/2d/light_2d.cpp
+#: scene/gui/control.cpp scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Filter"
+msgstr "Aktivañ ar Roudenn"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+msgid "Mipmaps"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+msgid "Anisotropic"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+msgid "sRGB"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+msgid "Slices"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
+#: scene/resources/style_box.cpp
+msgid "Horizontal"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
+#: scene/resources/style_box.cpp
+msgid "Vertical"
+msgstr ""
+
+#: editor/import/resource_importer_obj.cpp
+#, fuzzy
+msgid "Generate Tangents"
+msgstr "Fiñval ar Poentoù Bezier"
+
+#: editor/import/resource_importer_obj.cpp
+#, fuzzy
+msgid "Scale Mesh"
+msgstr "Cheñch Skeul Alc'hwezioù Fiñvskeudenn"
+
+#: editor/import/resource_importer_obj.cpp
+msgid "Offset Mesh"
+msgstr ""
+
+#: editor/import/resource_importer_obj.cpp
+#: editor/import/resource_importer_scene.cpp
+msgid "Octahedral Compression"
+msgstr ""
+
+#: editor/import/resource_importer_obj.cpp
+msgid "Optimize Mesh Flags"
+msgstr ""
+
#: editor/import/resource_importer_scene.cpp
msgid "Import as Single Scene"
msgstr ""
@@ -6311,6 +6500,141 @@ msgstr ""
msgid "Import as Multiple Scenes+Materials"
msgstr ""
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+#: scene/3d/physics_joint.cpp
+msgid "Nodes"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Root Type"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Root Name"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Root Scale"
+msgstr "Cheñch Skeul Alc'hwezioù Fiñvskeudenn"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Custom Script"
+msgstr "Fonksionoù :"
+
+#: editor/import/resource_importer_scene.cpp scene/resources/texture.cpp
+msgid "Storage"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Use Legacy Names"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+msgid "Materials"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Location"
+msgstr "Tro Fiñvskeudenn"
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Keep On Reimport"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+msgid "Meshes"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Ensure Tangents"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Light Baking"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Lightmap Texel Size"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+msgid "Skins"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Use Named Skins"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "External Files"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Store In Subdir"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Filter Script"
+msgstr "Aktivañ ar Roudenn"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Keep Custom Tracks"
+msgstr "Cheñch Treuzfurmadur ar Fiñvskeudenn"
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Optimizer"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp main/main.cpp
+#: modules/mono/mono_gd/gd_mono.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp scene/2d/camera_2d.cpp scene/2d/light_2d.cpp
+#: scene/2d/navigation_polygon.cpp scene/2d/ray_cast_2d.cpp scene/2d/sprite.cpp
+#: scene/2d/y_sort.cpp scene/3d/audio_stream_player_3d.cpp
+#: scene/3d/baked_lightmap.cpp scene/3d/interpolated_camera.cpp
+#: scene/3d/light.cpp scene/3d/navigation_mesh_instance.cpp
+#: scene/3d/physics_joint.cpp scene/3d/ray_cast.cpp scene/3d/sprite_3d.cpp
+#: scene/gui/graph_edit.cpp scene/gui/rich_text_label.cpp
+#: scene/resources/curve.cpp scene/resources/environment.cpp
+#: scene/resources/material.cpp
+msgid "Enabled"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Max Linear Error"
+msgstr "Melezour"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Max Angular Error"
+msgstr "Melezour"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Max Angle"
+msgstr "Talvoud :"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Remove Unused Tracks"
+msgstr "Dilemel ar Roudenn Fiñvskeudenn"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Clips"
+msgstr "Lodennoù Fiñvskeudenn :"
+
+#: editor/import/resource_importer_scene.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/particles_2d.cpp scene/3d/area.cpp scene/3d/cpu_particles.cpp
+#: scene/3d/particles.cpp scene/resources/environment.cpp
+msgid "Amount"
+msgstr ""
+
#: editor/import/resource_importer_scene.cpp
#: editor/plugins/mesh_library_editor_plugin.cpp
msgid "Import Scene"
@@ -6352,12 +6676,137 @@ msgstr ""
msgid "Saving..."
msgstr ""
+#: editor/import/resource_importer_texture.cpp scene/resources/texture.cpp
+msgid "Lossy Quality"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "HDR Mode"
+msgstr "Mod Interpoladur"
+
+#: editor/import/resource_importer_texture.cpp
+msgid "BPTC LDR"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/mesh_instance_2d.cpp scene/2d/multimesh_instance_2d.cpp
+#: scene/2d/particles_2d.cpp scene/2d/sprite.cpp scene/resources/style_box.cpp
+msgid "Normal Map"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Process"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Fix Alpha Border"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Premult Alpha"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Hdr As Srgb"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Invert Color"
+msgstr "Fonksionoù :"
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Normal Map Invert Y"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
+#: scene/audio/audio_stream_player.cpp scene/gui/video_player.cpp
+msgid "Stream"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Size Limit"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Detect 3D"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "SVG"
+msgstr ""
+
#: editor/import/resource_importer_texture.cpp
msgid ""
"Warning, no suitable PC VRAM compression enabled in Project Settings. This "
"texture will not display correctly on PC."
msgstr ""
+#: editor/import/resource_importer_texture_atlas.cpp
+msgid "Atlas File"
+msgstr ""
+
+#: editor/import/resource_importer_texture_atlas.cpp
+#, fuzzy
+msgid "Import Mode"
+msgstr "Roudenn Perzhioù"
+
+#: editor/import/resource_importer_texture_atlas.cpp
+msgid "Crop To Region"
+msgstr ""
+
+#: editor/import/resource_importer_texture_atlas.cpp
+msgid "Trim Alpha Border From Region"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp scene/2d/physics_body_2d.cpp
+msgid "Force"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+msgid "8 Bit"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp main/main.cpp
+#: modules/mono/editor/csharp_project.cpp modules/mono/mono_gd/gd_mono.cpp
+msgid "Mono"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+#, fuzzy
+msgid "Max Rate"
+msgstr "Talvoud :"
+
+#: editor/import/resource_importer_wav.cpp
+#, fuzzy
+msgid "Max Rate Hz"
+msgstr "Talvoud :"
+
+#: editor/import/resource_importer_wav.cpp
+msgid "Trim"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+msgid "Normalize"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+msgid "Loop Mode"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+msgid "Loop Begin"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+msgid "Loop End"
+msgstr ""
+
#: editor/import_defaults_editor.cpp
msgid "Select Importer"
msgstr ""
@@ -6426,6 +6875,27 @@ msgid "Failed to load resource."
msgstr ""
#: editor/inspector_dock.cpp
+#, fuzzy
+msgid "Property Name Style"
+msgstr "Roudenn Perzhioù"
+
+#: editor/inspector_dock.cpp scene/gui/color_picker.cpp
+msgid "Raw"
+msgstr ""
+
+#: editor/inspector_dock.cpp
+msgid "Capitalized"
+msgstr ""
+
+#: editor/inspector_dock.cpp
+msgid "Localized"
+msgstr ""
+
+#: editor/inspector_dock.cpp
+msgid "Localization not available for current language."
+msgstr ""
+
+#: editor/inspector_dock.cpp
msgid "Copy Properties"
msgstr ""
@@ -7454,18 +7924,22 @@ msgid "License (Z-A)"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
+msgctxt "Pagination"
msgid "First"
msgstr ""
-#: editor/plugins/asset_library_editor_plugin.cpp scene/gui/control.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgctxt "Pagination"
msgid "Previous"
msgstr ""
-#: editor/plugins/asset_library_editor_plugin.cpp scene/gui/control.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgctxt "Pagination"
msgid "Next"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
+msgctxt "Pagination"
msgid "Last"
msgstr ""
@@ -7699,19 +8173,19 @@ msgid ""
"margins."
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Top Left"
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Top Right"
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Bottom Right"
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Bottom Left"
msgstr ""
@@ -8409,6 +8883,19 @@ msgstr ""
msgid "Gradient Edited"
msgstr ""
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+msgid "Swap GradientTexture2D Fill Points"
+msgstr ""
+
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+msgid "Swap Gradient Fill Points"
+msgstr ""
+
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+#, fuzzy
+msgid "Toggle Grid Snap"
+msgstr "Aktivañ ar Roudenn"
+
#: editor/plugins/item_list_editor_plugin.cpp
msgid "Item %d"
msgstr ""
@@ -8622,8 +9109,8 @@ msgid ""
"%s"
msgstr ""
-#: editor/plugins/mesh_library_editor_plugin.cpp modules/gridmap/grid_map.cpp
-msgid "Mesh Library"
+#: editor/plugins/mesh_library_editor_plugin.cpp
+msgid "MeshLibrary"
msgstr ""
#: editor/plugins/mesh_library_editor_plugin.cpp
@@ -9595,8 +10082,8 @@ msgstr ""
msgid "Source"
msgstr ""
-#: editor/plugins/script_text_editor.cpp scene/3d/interpolated_camera.cpp
-#: scene/animation/skeleton_ik.cpp
+#: editor/plugins/script_text_editor.cpp platform/uwp/export/export.cpp
+#: scene/3d/interpolated_camera.cpp scene/animation/skeleton_ik.cpp
msgid "Target"
msgstr ""
@@ -10553,7 +11040,9 @@ msgstr ""
#: editor/plugins/sprite_frames_editor_plugin.cpp
#: modules/gltf/gltf_animation.cpp modules/minimp3/audio_stream_mp3.cpp
-#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp scene/2d/path_2d.cpp
+#: modules/minimp3/resource_importer_mp3.cpp
+#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp
+#: modules/stb_vorbis/resource_importer_ogg_vorbis.cpp scene/2d/path_2d.cpp
#: scene/3d/path.cpp scene/resources/animation.cpp scene/resources/material.cpp
msgid "Loop"
msgstr ""
@@ -11413,8 +11902,9 @@ msgstr ""
msgid "Priority"
msgstr ""
-#: editor/plugins/tile_set_editor_plugin.cpp main/main.cpp scene/gui/button.cpp
-#: scene/gui/item_list.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp main/main.cpp
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#: scene/gui/button.cpp scene/gui/item_list.cpp
msgid "Icon"
msgstr ""
@@ -12694,10 +13184,6 @@ msgid ""
msgstr ""
#: editor/project_export.cpp
-msgid "Release"
-msgstr ""
-
-#: editor/project_export.cpp
msgid "Exporting All"
msgstr ""
@@ -14457,6 +14943,7 @@ msgid "Change AudioStreamPlayer3D Emission Angle"
msgstr ""
#: editor/spatial_editor_gizmos.cpp modules/gltf/gltf_node.cpp
+#: platform/osx/export/export.cpp
msgid "Camera"
msgstr ""
@@ -14717,7 +15204,8 @@ msgstr ""
msgid "Use Nvidia Rect Flicker Workaround"
msgstr ""
-#: main/main.cpp platform/uwp/os_uwp.cpp
+#: main/main.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp platform/uwp/os_uwp.cpp
msgid "Display"
msgstr ""
@@ -14772,18 +15260,6 @@ msgstr ""
msgid "Allowed"
msgstr ""
-#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp scene/2d/camera_2d.cpp
-#: scene/2d/light_2d.cpp scene/2d/navigation_polygon.cpp
-#: scene/2d/ray_cast_2d.cpp scene/2d/sprite.cpp scene/2d/y_sort.cpp
-#: scene/3d/audio_stream_player_3d.cpp scene/3d/baked_lightmap.cpp
-#: scene/3d/interpolated_camera.cpp scene/3d/light.cpp
-#: scene/3d/navigation_mesh_instance.cpp scene/3d/ray_cast.cpp
-#: scene/3d/sprite_3d.cpp scene/gui/graph_edit.cpp
-#: scene/gui/rich_text_label.cpp scene/resources/curve.cpp
-#: scene/resources/environment.cpp
-msgid "Enabled"
-msgstr ""
-
#: main/main.cpp
msgid "Intended Usage"
msgstr ""
@@ -14812,13 +15288,14 @@ msgstr ""
msgid "Handheld"
msgstr ""
-#: main/main.cpp
+#: main/main.cpp platform/javascript/export/export.cpp
+#: platform/uwp/export/export.cpp
#, fuzzy
msgid "Orientation"
msgstr "Tro Fiñvskeudenn"
#: main/main.cpp scene/gui/scroll_container.cpp scene/gui/text_edit.cpp
-#: scene/main/scene_tree.cpp
+#: scene/main/scene_tree.cpp scene/register_scene_types.cpp
msgid "Common"
msgstr ""
@@ -14858,7 +15335,7 @@ msgstr ""
#: main/main.cpp
#, fuzzy
-msgid "Frame Delay (msec)"
+msgid "Frame Delay Msec"
msgstr "Amzer (s) : "
#: main/main.cpp
@@ -14975,11 +15452,6 @@ msgstr ""
msgid "Tooltip Position Offset"
msgstr ""
-#: main/main.cpp modules/mono/editor/csharp_project.cpp
-#: modules/mono/mono_gd/gd_mono.cpp
-msgid "Mono"
-msgstr ""
-
#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp
msgid "Debugger Agent"
msgstr ""
@@ -15503,7 +15975,7 @@ msgstr ""
msgid "Intensity"
msgstr ""
-#: modules/gltf/gltf_light.cpp scene/2d/light_2d.cpp
+#: modules/gltf/gltf_light.cpp scene/2d/light_2d.cpp scene/3d/light.cpp
msgid "Range"
msgstr ""
@@ -15635,10 +16107,6 @@ msgstr ""
msgid "Use Named Skin Binds"
msgstr ""
-#: modules/gltf/gltf_state.cpp scene/3d/physics_joint.cpp
-msgid "Nodes"
-msgstr ""
-
#: modules/gltf/gltf_state.cpp
msgid "Buffer Views"
msgstr ""
@@ -15648,14 +16116,6 @@ msgid "Accessors"
msgstr ""
#: modules/gltf/gltf_state.cpp
-msgid "Meshes"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp
-msgid "Materials"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp
#, fuzzy
msgid "Scene Name"
msgstr "Enlakaat an Alc'hwezh Amañ"
@@ -15670,15 +16130,11 @@ msgstr ""
msgid "Textures"
msgstr ""
-#: modules/gltf/gltf_state.cpp
+#: modules/gltf/gltf_state.cpp platform/uwp/export/export.cpp
msgid "Images"
msgstr ""
#: modules/gltf/gltf_state.cpp
-msgid "Skins"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp
msgid "Cameras"
msgstr ""
@@ -15709,10 +16165,14 @@ msgid "Src Image"
msgstr ""
#: modules/gridmap/grid_map.cpp
-msgid "Physics Material"
+msgid "Mesh Library"
msgstr ""
#: modules/gridmap/grid_map.cpp
+msgid "Physics Material"
+msgstr ""
+
+#: modules/gridmap/grid_map.cpp scene/3d/visual_instance.cpp
msgid "Use In Baked Light"
msgstr ""
@@ -15739,6 +16199,7 @@ msgstr ""
#: modules/gridmap/grid_map.cpp scene/2d/collision_object_2d.cpp
#: scene/2d/tile_map.cpp scene/3d/collision_object.cpp scene/3d/soft_body.cpp
+#: scene/resources/material.cpp
msgid "Mask"
msgstr ""
@@ -15919,7 +16380,9 @@ msgid "Ultra Quality Ray Count"
msgstr ""
#: modules/minimp3/audio_stream_mp3.cpp
+#: modules/minimp3/resource_importer_mp3.cpp
#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp
+#: modules/stb_vorbis/resource_importer_ogg_vorbis.cpp
msgid "Loop Offset"
msgstr ""
@@ -16949,6 +17412,168 @@ msgid "The package must have at least one '.' separator."
msgstr ""
#: platform/android/export/export_plugin.cpp
+msgid "Use Custom Build"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Export Format"
+msgstr "Roudenn Treuzfurmadur 3D"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Keystore"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Debug User"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+msgid "Debug Password"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Release User"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Release Password"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "One Click Deploy"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Clear Previous Install"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp scene/resources/shader.cpp
+msgid "Code"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Min SDK"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Target SDK"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+msgid "Package"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Unique Name"
+msgstr "Cheñch Pazenn ar Fiñvskeudenn"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Signed"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Classify As Game"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Retain Data On Uninstall"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Exclude From Recents"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Graphics"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "OpenGL Debug"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "XR Features"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "XR Mode"
+msgstr "Roudenn Galv Metodenn"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Hand Tracking"
+msgstr "Roudenn Perzhioù"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Hand Tracking Frequency"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Passthrough"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Immersive Mode"
+msgstr "Mod Interpoladur"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Support Small"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Support Normal"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Support Large"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Support Xlarge"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "User Data Backup"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Allow"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+msgid "Command Line"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+msgid "Extra Args"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "APK Expansion"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Salt"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Public Key"
+msgstr "Eilskoueriañ Alc'hwez(ioù)"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Permissions"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Custom Permissions"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
msgid "Select device from the list"
msgstr ""
@@ -17234,6 +17859,163 @@ msgid "The character '%s' is not allowed in Identifier."
msgstr ""
#: platform/iphone/export/export.cpp
+msgid "App Store Team ID"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Provisioning Profile UUID Debug"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Code Sign Identity Debug"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Export Method Debug"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Provisioning Profile UUID Release"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Code Sign Identity Release"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Export Method Release"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Targeted Device Family"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Info"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Identifier"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Signature"
+msgstr "Tapout"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Short Version"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/windows/export/export.cpp
+msgid "Copyright"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Capabilities"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Access Wi-Fi"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Push Notifications"
+msgstr ""
+
+#: platform/iphone/export/export.cpp scene/3d/baked_lightmap.cpp
+msgid "User Data"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Accessible From Files App"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Accessible From Itunes Sharing"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Privacy"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Camera Usage Description"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Microphone Usage Description"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Photolibrary Usage Description"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPhone 120 X 120"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPhone 180 X 180"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 76 X 76"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 152 X 152"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 167 X 167"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "App Store 1024 X 1024"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Spotlight 40 X 40"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Spotlight 80 X 80"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Storyboard"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Use Launch Screen Storyboard"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Image Scale Mode"
+msgstr "Cheñch Skeul Alc'hwezioù Fiñvskeudenn"
+
+#: platform/iphone/export/export.cpp
+msgid "Custom Image @2x"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Custom Image @3x"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Use Custom BG Color"
+msgstr "Fonksionoù :"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Custom BG Color"
+msgstr "Fonksionoù :"
+
+#: platform/iphone/export/export.cpp
msgid "App Store Team ID not specified - cannot configure the project."
msgstr ""
@@ -17270,6 +18052,76 @@ msgid "Could not read file:"
msgstr ""
#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Variant"
+msgstr "Tro Fiñvskeudenn"
+
+#: platform/javascript/export/export.cpp
+msgid "Export Type"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "VRAM Texture Compression"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "For Desktop"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "For Mobile"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Html"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Export Icon"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Custom Html Shell"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Head Include"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Canvas Resize Policy"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Focus Canvas On Start"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Experimental Virtual Keyboard"
+msgstr "Aktivañ ar Roudenn"
+
+#: platform/javascript/export/export.cpp
+msgid "Progressive Web App"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Offline Page"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 144 X 144"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 180 X 180"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 512 X 512"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
msgid "Could not read HTML shell:"
msgstr ""
@@ -17374,6 +18226,180 @@ msgid "Unknown object type."
msgstr ""
#: platform/osx/export/export.cpp
+msgid "App Category"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "High Res"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Location Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Address Book Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Calendar Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Photos Library Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Desktop Folder Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Documents Folder Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Downloads Folder Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Network Volumes Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Removable Volumes Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+msgid "Codesign"
+msgstr ""
+
+#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
+#: platform/windows/export/export.cpp
+msgid "Identity"
+msgstr ""
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#, fuzzy
+msgid "Timestamp"
+msgstr "Amzer :"
+
+#: platform/osx/export/export.cpp
+msgid "Hardened Runtime"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Replace Existing Signature"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Entitlements"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Custom File"
+msgstr "Fonksionoù :"
+
+#: platform/osx/export/export.cpp
+msgid "Allow JIT Code Execution"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Allow Unsigned Executable Memory"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Allow Dyld Environment Variables"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Disable Library Validation"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Audio Input"
+msgstr "Lodenn Audio :"
+
+#: platform/osx/export/export.cpp
+msgid "Address Book"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Calendars"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Photos Library"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Apple Events"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Debugging"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "App Sandbox"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Network Server"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Network Client"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Device Usb"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Device Bluetooth"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Files Downloads"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Files Pictures"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Files Music"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Files Movies"
+msgstr ""
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#, fuzzy
+msgid "Custom Options"
+msgstr "Tro Fiñvskeudenn"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Notarization"
+msgstr "Tro Fiñvskeudenn"
+
+#: platform/osx/export/export.cpp
+msgid "Apple ID Name"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Apple ID Password"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Apple Team ID"
+msgstr ""
+
+#: platform/osx/export/export.cpp
msgid ""
"Note: The notarization process generally takes less than an hour. When the "
"process is completed, you'll receive an email."
@@ -17563,6 +18589,123 @@ msgid "Force Builtin Codesign"
msgstr ""
#: platform/uwp/export/export.cpp
+msgid "Architecture"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Display Name"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Short Name"
+msgstr "Cheñch Hent ar Roudenn"
+
+#: platform/uwp/export/export.cpp
+msgid "Publisher"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Publisher Display Name"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Product Guid"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Publisher Guid"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Signing"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Certificate"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Algorithm"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Major"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Minor"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Build"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Revision"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Landscape"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Portrait"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Landscape Flipped"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Portrait Flipped"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Store Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 44 X 44 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 71 X 71 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 150 X 150 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 310 X 310 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Wide 310 X 150 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Splash Screen"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Tiles"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Square 150 X 150"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Wide 310 X 150"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Square 310 X 310"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
msgid "Invalid package short name."
msgstr ""
@@ -17627,11 +18770,43 @@ msgid "Debug Certificate"
msgstr ""
#: platform/uwp/export/export.cpp
-msgid "Debug Password"
+msgid "Debug Algorithm"
msgstr ""
-#: platform/uwp/export/export.cpp
-msgid "Debug Algorithm"
+#: platform/windows/export/export.cpp
+msgid "Identity Type"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Timestamp Server URL"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Digest Algorithm"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "File Version"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Product Version"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Company Name"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Product Name"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "File Description"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Trademarks"
msgstr ""
#: platform/windows/export/export.cpp
@@ -17698,12 +18873,14 @@ msgstr ""
msgid "Centered"
msgstr ""
-#: scene/2d/animated_sprite.cpp scene/2d/camera_2d.cpp scene/2d/light_2d.cpp
+#: scene/2d/animated_sprite.cpp scene/2d/camera_2d.cpp
+#: scene/2d/cpu_particles_2d.cpp scene/2d/light_2d.cpp
#: scene/2d/parallax_background.cpp scene/2d/parallax_layer.cpp
#: scene/2d/path_2d.cpp scene/2d/polygon_2d.cpp scene/2d/sprite.cpp
-#: scene/3d/path.cpp scene/3d/physics_body.cpp scene/3d/sprite_3d.cpp
-#: scene/gui/graph_node.cpp scene/gui/rich_text_effect.cpp
-#: scene/main/canvas_layer.cpp scene/resources/material.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/path.cpp scene/3d/physics_body.cpp
+#: scene/3d/sprite_3d.cpp scene/gui/graph_node.cpp
+#: scene/gui/rich_text_effect.cpp scene/main/canvas_layer.cpp
+#: scene/resources/material.cpp scene/resources/particles_material.cpp
#: scene/resources/style_box.cpp
msgid "Offset"
msgstr ""
@@ -17770,11 +18947,6 @@ msgstr "Lodenn Audio :"
msgid "Override"
msgstr ""
-#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
-#: scene/audio/audio_stream_player.cpp scene/gui/video_player.cpp
-msgid "Stream"
-msgstr ""
-
#: scene/2d/audio_stream_player_2d.cpp scene/audio/audio_stream_player.cpp
#: scene/gui/video_player.cpp servers/audio/effects/audio_effect_amplify.cpp
msgid "Volume dB"
@@ -17798,12 +18970,12 @@ msgid "Stream Paused"
msgstr ""
#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
-#: scene/3d/reflection_probe.cpp scene/3d/visual_instance.cpp
-#: scene/resources/material.cpp
+#: scene/3d/light.cpp scene/3d/reflection_probe.cpp
+#: scene/3d/visual_instance.cpp scene/resources/material.cpp
msgid "Max Distance"
msgstr ""
-#: scene/2d/audio_stream_player_2d.cpp
+#: scene/2d/audio_stream_player_2d.cpp scene/3d/light.cpp
#, fuzzy
msgid "Attenuation"
msgstr "Tro Fiñvskeudenn"
@@ -17853,6 +19025,22 @@ msgstr ""
msgid "Limit"
msgstr ""
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/style_box.cpp
+msgid "Left"
+msgstr ""
+
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/style_box.cpp
+msgid "Right"
+msgstr ""
+
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/dynamic_font.cpp scene/resources/style_box.cpp
+#, fuzzy
+msgid "Bottom"
+msgstr "Fonksionoù :"
+
#: scene/2d/camera_2d.cpp
msgid "Smoothed"
msgstr ""
@@ -18048,12 +19236,6 @@ msgstr ""
msgid "Emitting"
msgstr ""
-#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp scene/3d/area.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
-#: scene/resources/environment.cpp
-msgid "Amount"
-msgstr ""
-
#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp
#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
msgid "Lifetime"
@@ -18113,17 +19295,12 @@ msgstr ""
#: scene/2d/mesh_instance_2d.cpp scene/2d/multimesh_instance_2d.cpp
#: scene/2d/particles_2d.cpp scene/2d/polygon_2d.cpp scene/2d/sprite.cpp
#: scene/3d/sprite_3d.cpp scene/gui/nine_patch_rect.cpp
-#: scene/gui/texture_rect.cpp scene/resources/sky.cpp
-#: scene/resources/style_box.cpp scene/resources/visual_shader_nodes.cpp
+#: scene/gui/texture_rect.cpp scene/resources/material.cpp
+#: scene/resources/sky.cpp scene/resources/style_box.cpp
+#: scene/resources/visual_shader_nodes.cpp
msgid "Texture"
msgstr ""
-#: scene/2d/cpu_particles_2d.cpp scene/2d/mesh_instance_2d.cpp
-#: scene/2d/multimesh_instance_2d.cpp scene/2d/particles_2d.cpp
-#: scene/2d/sprite.cpp scene/resources/style_box.cpp
-msgid "Normal Map"
-msgstr ""
-
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
msgid "Emission Shape"
@@ -18143,9 +19320,8 @@ msgid "Normals"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/3d/sprite_3d.cpp scene/resources/material.cpp
-#: scene/resources/particles_material.cpp scene/resources/texture.cpp
-msgid "Flags"
+#: scene/resources/particles_material.cpp
+msgid "Align Y"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
@@ -18165,6 +19341,11 @@ msgid "Initial Velocity"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Velocity Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp servers/physics_2d_server.cpp
#: servers/physics_server.cpp
msgid "Angular Velocity"
@@ -18172,6 +19353,11 @@ msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+msgid "Velocity Curve"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
msgid "Orbit Velocity"
msgstr ""
@@ -18183,6 +19369,21 @@ msgstr "Lineel"
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+msgid "Accel"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Accel Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Accel Curve"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
msgid "Radial Accel"
msgstr ""
@@ -18192,19 +19393,52 @@ msgid "Tangential Accel"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/2d/joints_2d.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/vehicle_body.cpp
-#: scene/resources/particles_material.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/physics_joint.cpp
+#: scene/3d/vehicle_body.cpp scene/resources/particles_material.cpp
#: servers/audio/effects/audio_effect_reverb.cpp
msgid "Damping"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+msgid "Damping Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Damping Curve"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp scene/3d/light.cpp
+#: scene/resources/particles_material.cpp
msgid "Angle"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+msgid "Angle Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Angle Curve"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#, fuzzy
+msgid "Scale Amount"
+msgstr "Enlakaat an Alc'hwezh Amañ"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+msgid "Scale Amount Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+msgid "Scale Amount Curve"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
msgid "Color Ramp"
msgstr ""
@@ -18219,6 +19453,44 @@ msgstr ""
msgid "Hue Variation"
msgstr "Tro Fiñvskeudenn"
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Variation"
+msgstr "Tro Fiñvskeudenn"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Variation Random"
+msgstr "Tro Fiñvskeudenn"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Variation Curve"
+msgstr "Tro Fiñvskeudenn"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Speed Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Speed Curve"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Offset Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Offset Curve"
+msgstr ""
+
#: scene/2d/joints_2d.cpp
msgid "Node A and Node B must be PhysicsBody2Ds"
msgstr ""
@@ -18248,6 +19520,7 @@ msgid "Node B"
msgstr ""
#: scene/2d/joints_2d.cpp scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp
+#: scene/3d/light.cpp scene/3d/physics_joint.cpp
#: scene/resources/environment.cpp
msgid "Bias"
msgstr ""
@@ -18256,7 +19529,7 @@ msgstr ""
msgid "Disable Collision"
msgstr ""
-#: scene/2d/joints_2d.cpp
+#: scene/2d/joints_2d.cpp scene/3d/physics_joint.cpp
msgid "Softness"
msgstr ""
@@ -18273,7 +19546,7 @@ msgstr ""
msgid "Rest Length"
msgstr ""
-#: scene/2d/joints_2d.cpp scene/3d/vehicle_body.cpp
+#: scene/2d/joints_2d.cpp scene/3d/physics_joint.cpp scene/3d/vehicle_body.cpp
msgid "Stiffness"
msgstr ""
@@ -18292,7 +19565,7 @@ msgid "Texture Scale"
msgstr ""
#: scene/2d/light_2d.cpp scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp
-#: scene/resources/environment.cpp scene/resources/sky.cpp
+#: scene/3d/light.cpp scene/resources/environment.cpp scene/resources/sky.cpp
msgid "Energy"
msgstr ""
@@ -18328,12 +19601,6 @@ msgstr ""
msgid "Gradient Length"
msgstr ""
-#: scene/2d/light_2d.cpp scene/gui/control.cpp
-#: scene/resources/navigation_mesh.cpp
-#, fuzzy
-msgid "Filter"
-msgstr "Aktivañ ar Roudenn"
-
#: scene/2d/light_2d.cpp
msgid "Filter Smooth"
msgstr ""
@@ -18710,10 +19977,6 @@ msgid "Applied Forces"
msgstr ""
#: scene/2d/physics_body_2d.cpp
-msgid "Force"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp
msgid "Torque"
msgstr ""
@@ -18726,7 +19989,7 @@ msgid "Sync To Physics"
msgstr ""
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-msgid "Moving platform"
+msgid "Moving Platform"
msgstr ""
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
@@ -18735,7 +19998,7 @@ msgstr ""
#: scene/2d/physics_body_2d.cpp scene/2d/touch_screen_button.cpp
#: scene/3d/physics_body.cpp scene/gui/texture_button.cpp
-#: scene/resources/line_shape_2d.cpp
+#: scene/resources/line_shape_2d.cpp scene/resources/material.cpp
msgid "Normal"
msgstr ""
@@ -18945,6 +20208,32 @@ msgid ""
"as parent."
msgstr ""
+#: scene/2d/visibility_notifier_2d.cpp scene/3d/visibility_notifier.cpp
+#, fuzzy
+msgid "Pause Animations"
+msgstr "Tro Fiñvskeudenn"
+
+#: scene/2d/visibility_notifier_2d.cpp scene/3d/visibility_notifier.cpp
+msgid "Freeze Bodies"
+msgstr ""
+
+#: scene/2d/visibility_notifier_2d.cpp
+msgid "Pause Particles"
+msgstr ""
+
+#: scene/2d/visibility_notifier_2d.cpp
+#, fuzzy
+msgid "Pause Animated Sprites"
+msgstr "Cheñch Pazenn ar Fiñvskeudenn"
+
+#: scene/2d/visibility_notifier_2d.cpp
+msgid "Process Parent"
+msgstr ""
+
+#: scene/2d/visibility_notifier_2d.cpp
+msgid "Physics Process Parent"
+msgstr ""
+
#: scene/3d/area.cpp
msgid "Reverb Bus"
msgstr ""
@@ -19036,6 +20325,7 @@ msgid "Attenuation Filter"
msgstr ""
#: scene/3d/audio_stream_player_3d.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
#: servers/audio/effects/audio_effect_filter.cpp
msgid "Cutoff Hz"
msgstr ""
@@ -19078,10 +20368,6 @@ msgid "Octree"
msgstr ""
#: scene/3d/baked_lightmap.cpp
-msgid "User Data"
-msgstr ""
-
-#: scene/3d/baked_lightmap.cpp
msgid "Finding meshes and lights"
msgstr ""
@@ -19317,6 +20603,15 @@ msgid "Ring Axis"
msgstr ""
#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Rotate Y"
+msgstr "Mod Interpoladur"
+
+#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
+msgid "Disable Z"
+msgstr ""
+
+#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
msgid "Flatness"
msgstr ""
@@ -19352,15 +20647,11 @@ msgstr ""
msgid "Dynamic Range"
msgstr ""
-#: scene/3d/gi_probe.cpp
+#: scene/3d/gi_probe.cpp scene/3d/light.cpp
msgid "Normal Bias"
msgstr ""
#: scene/3d/gi_probe.cpp
-msgid "Compress"
-msgstr ""
-
-#: scene/3d/gi_probe.cpp
msgid "Plotting Meshes"
msgstr ""
@@ -19386,15 +20677,27 @@ msgid "Subdiv"
msgstr ""
#: scene/3d/light.cpp
+msgid "Indirect Energy"
+msgstr ""
+
+#: scene/3d/light.cpp
msgid "Negative"
msgstr ""
#: scene/3d/light.cpp
+msgid "Specular"
+msgstr ""
+
+#: scene/3d/light.cpp
#, fuzzy
msgid "Bake Mode"
msgstr "Roudenn Galv Metodenn"
#: scene/3d/light.cpp
+msgid "Contact"
+msgstr ""
+
+#: scene/3d/light.cpp
msgid "Reverse Cull Face"
msgstr ""
@@ -19403,10 +20706,26 @@ msgid "Directional Shadow"
msgstr ""
#: scene/3d/light.cpp
+msgid "Split 1"
+msgstr ""
+
+#: scene/3d/light.cpp
+msgid "Split 2"
+msgstr ""
+
+#: scene/3d/light.cpp
+msgid "Split 3"
+msgstr ""
+
+#: scene/3d/light.cpp
msgid "Blend Splits"
msgstr ""
#: scene/3d/light.cpp
+msgid "Bias Split Scale"
+msgstr ""
+
+#: scene/3d/light.cpp
msgid "Depth Range"
msgstr ""
@@ -19431,6 +20750,11 @@ msgstr ""
msgid "Spot"
msgstr ""
+#: scene/3d/light.cpp
+#, fuzzy
+msgid "Angle Attenuation"
+msgstr "Tro Fiñvskeudenn"
+
#: scene/3d/mesh_instance.cpp
msgid "Software Skinning"
msgstr ""
@@ -19549,6 +20873,60 @@ msgid "Axis Lock"
msgstr ""
#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Linear X"
+msgstr "Lineel"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Linear Y"
+msgstr "Lineel"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Linear Z"
+msgstr "Lineel"
+
+#: scene/3d/physics_body.cpp
+msgid "Angular X"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Angular Y"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Angular Z"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Motion X"
+msgstr "Tro Fiñvskeudenn"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Motion Y"
+msgstr "Tro Fiñvskeudenn"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Motion Z"
+msgstr "Tro Fiñvskeudenn"
+
+#: scene/3d/physics_body.cpp
+msgid "Move Lock X"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Move Lock Y"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Move Lock Z"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
msgid "Body Offset"
msgstr ""
@@ -19581,6 +20959,14 @@ msgid "Exclude Nodes"
msgstr ""
#: scene/3d/physics_joint.cpp
+msgid "Params"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Impulse Clamp"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit"
msgstr ""
@@ -19592,6 +20978,53 @@ msgstr ""
msgid "Lower"
msgstr ""
+#: scene/3d/physics_joint.cpp scene/3d/vehicle_body.cpp
+#, fuzzy
+msgid "Relaxation"
+msgstr "Fonksionoù :"
+
+#: scene/3d/physics_joint.cpp
+msgid "Motor"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Target Velocity"
+msgstr "Lineel"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Max Impulse"
+msgstr "Talvoud :"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit"
+msgstr "Lineel"
+
+#: scene/3d/physics_joint.cpp
+msgid "Upper Distance"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Lower Distance"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Restitution"
+msgstr "Tro Fiñvskeudenn"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motion"
+msgstr "Lineel"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Ortho"
+msgstr "Lineel"
+
#: scene/3d/physics_joint.cpp
msgid "Upper Angle"
msgstr ""
@@ -19601,6 +21034,15 @@ msgid "Lower Angle"
msgstr ""
#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Angular Motion"
+msgstr "Tro Fiñvskeudenn"
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Ortho"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
msgid "Swing Span"
msgstr ""
@@ -19609,17 +21051,98 @@ msgid "Twist Span"
msgstr ""
#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit X"
+msgstr "Lineel"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motor X"
+msgstr "Lineel"
+
+#: scene/3d/physics_joint.cpp
+msgid "Force Limit"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Spring X"
+msgstr "Lineel"
+
+#: scene/3d/physics_joint.cpp
+msgid "Equilibrium Point"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit X"
msgstr ""
#: scene/3d/physics_joint.cpp
+msgid "Erp"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Motor X"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Spring X"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit Y"
+msgstr "Lineel"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motor Y"
+msgstr "Lineel"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Spring Y"
+msgstr "Lineel"
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit Y"
msgstr ""
#: scene/3d/physics_joint.cpp
+msgid "Angular Motor Y"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Spring Y"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit Z"
+msgstr "Lineel"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motor Z"
+msgstr "Lineel"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Spring Z"
+msgstr "Lineel"
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit Z"
msgstr ""
+#: scene/3d/physics_joint.cpp
+msgid "Angular Motor Z"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Spring Z"
+msgstr ""
+
#: scene/3d/portal.cpp
msgid "The RoomManager should not be a child or grandchild of a Portal."
msgstr ""
@@ -19724,7 +21247,7 @@ msgstr ""
msgid "Use Default Simplify"
msgstr ""
-#: scene/3d/room.cpp
+#: scene/3d/room.cpp scene/3d/room_manager.cpp
msgid "Room Simplify"
msgstr ""
@@ -19762,6 +21285,12 @@ msgstr ""
msgid "Main"
msgstr ""
+#: scene/3d/room_manager.cpp scene/animation/animation_player.cpp
+#: scene/animation/animation_tree.cpp scene/animation/animation_tree_player.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+msgid "Active"
+msgstr ""
+
#: scene/3d/room_manager.cpp
msgid "Roomlist"
msgstr ""
@@ -19783,6 +21312,46 @@ msgid "Gameplay"
msgstr ""
#: scene/3d/room_manager.cpp
+msgid "Gameplay Monitor"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "Use Secondary PVS"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "Merge Meshes"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "Show Margins"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "Debug Sprawl"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "Overlap Warning Threshold"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "Preview Camera"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "Portal Depth Limit"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "Default Portal Margin"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "Roaming Expansion Margin"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
msgid ""
"RoomList path is invalid.\n"
"Please check the RoomList branch has been assigned in the RoomManager."
@@ -19902,6 +21471,19 @@ msgstr ""
msgid "Billboard"
msgstr ""
+#: scene/3d/sprite_3d.cpp scene/resources/material.cpp
+#, fuzzy
+msgid "Transparent"
+msgstr "Tro Fiñvskeudenn"
+
+#: scene/3d/sprite_3d.cpp
+msgid "Shaded"
+msgstr ""
+
+#: scene/3d/sprite_3d.cpp
+msgid "Double Sided"
+msgstr ""
+
#: scene/3d/sprite_3d.cpp
msgid "Alpha Cut"
msgstr ""
@@ -19968,11 +21550,6 @@ msgstr ""
msgid "Max Force"
msgstr "Melezour"
-#: scene/3d/vehicle_body.cpp
-#, fuzzy
-msgid "Relaxation"
-msgstr "Fonksionoù :"
-
#: scene/3d/visibility_notifier.cpp
msgid "AABB"
msgstr ""
@@ -20096,7 +21673,7 @@ msgid "Fadeout Time"
msgstr ""
#: scene/animation/animation_blend_tree.cpp
-msgid "autorestart_"
+msgid "Auto Restart"
msgstr ""
#: scene/animation/animation_blend_tree.cpp
@@ -20173,12 +21750,6 @@ msgstr ""
msgid "Default Blend Time"
msgstr ""
-#: scene/animation/animation_player.cpp scene/animation/animation_tree.cpp
-#: scene/animation/animation_tree_player.cpp
-#: servers/audio/effects/audio_effect_delay.cpp
-msgid "Active"
-msgstr ""
-
#: scene/animation/animation_player.cpp
msgid "Method Call Mode"
msgstr ""
@@ -20293,10 +21864,6 @@ msgstr ""
msgid "Max Iterations"
msgstr "Fonksionoù :"
-#: scene/animation/tween.cpp scene/resources/texture.cpp
-msgid "Repeat"
-msgstr ""
-
#: scene/animation/tween.cpp
msgid "Playback Process Mode"
msgstr ""
@@ -20323,18 +21890,6 @@ msgstr ""
msgid "Alignment"
msgstr ""
-#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
-#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
-#: scene/resources/style_box.cpp
-msgid "Horizontal"
-msgstr ""
-
-#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
-#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
-#: scene/resources/style_box.cpp
-msgid "Vertical"
-msgstr ""
-
#: scene/gui/base_button.cpp
msgid "Shortcut In Tooltip"
msgstr ""
@@ -20424,10 +21979,6 @@ msgid "HSV"
msgstr ""
#: scene/gui/color_picker.cpp
-msgid "Raw"
-msgstr ""
-
-#: scene/gui/color_picker.cpp
msgid "Switch between hexadecimal and code values."
msgstr ""
@@ -20481,6 +22032,30 @@ msgid "Focus"
msgstr ""
#: scene/gui/control.cpp
+msgid "Neighbour Left"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Neighbour Top"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Neighbour Right"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Neighbour Bottom"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Next"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Previous"
+msgstr ""
+
+#: scene/gui/control.cpp
msgid "Mouse"
msgstr ""
@@ -20513,7 +22088,7 @@ msgid "Dialog"
msgstr ""
#: scene/gui/dialogs.cpp
-msgid "Hide On Ok"
+msgid "Hide On OK"
msgstr ""
#: scene/gui/dialogs.cpp scene/gui/label.cpp
@@ -20601,7 +22176,7 @@ msgid "Timers"
msgstr "Amzer :"
#: scene/gui/item_list.cpp scene/gui/popup_menu.cpp scene/gui/tree.cpp
-msgid "Incremental Search Max Interval (msec)"
+msgid "Incremental Search Max Interval Msec"
msgstr ""
#: scene/gui/item_list.cpp scene/gui/tree.cpp
@@ -21115,6 +22690,22 @@ msgstr ""
msgid "Nine Patch Stretch"
msgstr "Mod Interpoladur"
+#: scene/gui/texture_progress.cpp
+msgid "Stretch Margin Left"
+msgstr ""
+
+#: scene/gui/texture_progress.cpp
+msgid "Stretch Margin Top"
+msgstr ""
+
+#: scene/gui/texture_progress.cpp
+msgid "Stretch Margin Right"
+msgstr ""
+
+#: scene/gui/texture_progress.cpp
+msgid "Stretch Margin Bottom"
+msgstr ""
+
#: scene/gui/tree.cpp
msgid "Custom Minimum Height"
msgstr ""
@@ -21149,7 +22740,7 @@ msgid "Paused"
msgstr ""
#: scene/gui/video_player.cpp
-msgid "Buffering (msec)"
+msgid "Buffering Msec"
msgstr ""
#: scene/gui/video_player.cpp
@@ -21460,6 +23051,22 @@ msgid "Shadow Atlas"
msgstr ""
#: scene/main/viewport.cpp
+msgid "Quad 0"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 1"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 2"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 3"
+msgstr ""
+
+#: scene/main/viewport.cpp
#, fuzzy
msgid "Canvas Transform"
msgstr "Cheñch Treuzfurmadur ar Fiñvskeudenn"
@@ -21474,6 +23081,10 @@ msgid "Tooltip Delay (sec)"
msgstr ""
#: scene/register_scene_types.cpp
+msgid "Swap OK Cancel"
+msgstr ""
+
+#: scene/register_scene_types.cpp
msgid "Use hiDPI"
msgstr ""
@@ -21486,18 +23097,6 @@ msgid "Custom Font"
msgstr ""
#: scene/resources/audio_stream_sample.cpp
-msgid "Loop Mode"
-msgstr ""
-
-#: scene/resources/audio_stream_sample.cpp
-msgid "Loop Begin"
-msgstr ""
-
-#: scene/resources/audio_stream_sample.cpp
-msgid "Loop End"
-msgstr ""
-
-#: scene/resources/audio_stream_sample.cpp
#: servers/audio/effects/audio_stream_generator.cpp servers/audio_server.cpp
msgid "Mix Rate"
msgstr ""
@@ -21548,6 +23147,15 @@ msgid "Extra Spacing"
msgstr ""
#: scene/resources/dynamic_font.cpp
+msgid "Char"
+msgstr ""
+
+#: scene/resources/dynamic_font.cpp scene/resources/world.cpp
+#: scene/resources/world_2d.cpp
+msgid "Space"
+msgstr ""
+
+#: scene/resources/dynamic_font.cpp
msgid "Font"
msgstr ""
@@ -21753,6 +23361,42 @@ msgid "Glow"
msgstr ""
#: scene/resources/environment.cpp
+msgid "Levels"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "1"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "2"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "3"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "4"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "5"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "6"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "7"
+msgstr ""
+
+#: scene/resources/environment.cpp
msgid "Bloom"
msgstr ""
@@ -21835,9 +23479,63 @@ msgid "Next Pass"
msgstr ""
#: scene/resources/material.cpp
+msgid "Use Shadow To Opacity"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Unshaded"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Vertex Lighting"
+msgstr "Fiñval ar Poentoù Bezier"
+
+#: scene/resources/material.cpp
+msgid "No Depth Test"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Use Point Size"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "World Triplanar"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Fixed Size"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Albedo Tex Force sRGB"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Do Not Receive Shadows"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Disable Ambient Light"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Ensure Correct Normals"
+msgstr "Roudenn Treuzfurmadur 3D"
+
+#: scene/resources/material.cpp
msgid "Vertex Color"
msgstr ""
+#: scene/resources/material.cpp
+msgid "Use As Albedo"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Is sRGB"
+msgstr ""
+
#: scene/resources/material.cpp servers/visual_server.cpp
msgid "Parameters"
msgstr ""
@@ -21869,6 +23567,11 @@ msgid "Billboard Mode"
msgstr "Roudenn Galv Metodenn"
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Billboard Keep Scale"
+msgstr "Roudenn Galv Metodenn"
+
+#: scene/resources/material.cpp
msgid "Grow"
msgstr ""
@@ -21877,6 +23580,10 @@ msgid "Grow Amount"
msgstr ""
#: scene/resources/material.cpp
+msgid "Use Alpha Scissor"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Alpha Scissor Threshold"
msgstr ""
@@ -21905,10 +23612,18 @@ msgid "Metallic Specular"
msgstr ""
#: scene/resources/material.cpp
+msgid "Metallic Texture"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Metallic Texture Channel"
msgstr ""
#: scene/resources/material.cpp
+msgid "Roughness Texture"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Roughness Texture Channel"
msgstr ""
@@ -21925,6 +23640,14 @@ msgid "Emission Operator"
msgstr ""
#: scene/resources/material.cpp
+msgid "Emission On UV2"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Emission Texture"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "NormalMap"
msgstr ""
@@ -21937,6 +23660,10 @@ msgid "Rim Tint"
msgstr ""
#: scene/resources/material.cpp
+msgid "Rim Texture"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Clearcoat"
msgstr ""
@@ -21945,14 +23672,26 @@ msgid "Clearcoat Gloss"
msgstr ""
#: scene/resources/material.cpp
+msgid "Clearcoat Texture"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Anisotropy"
msgstr ""
#: scene/resources/material.cpp
+msgid "Anisotropy Flowmap"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Ambient Occlusion"
msgstr ""
#: scene/resources/material.cpp
+msgid "On UV2"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Texture Channel"
msgstr ""
@@ -21987,6 +23726,11 @@ msgid "Transmission"
msgstr ""
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Transmission Texture"
+msgstr "Tro Fiñvskeudenn"
+
+#: scene/resources/material.cpp
msgid "Refraction"
msgstr ""
@@ -22003,6 +23747,10 @@ msgid "UV1"
msgstr ""
#: scene/resources/material.cpp
+msgid "Triplanar"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Triplanar Sharpness"
msgstr ""
@@ -22194,6 +23942,14 @@ msgstr ""
msgid "Point Count"
msgstr "Enlakaat an Alc'hwezh Amañ"
+#: scene/resources/particles_material.cpp
+msgid "Scale Random"
+msgstr ""
+
+#: scene/resources/particles_material.cpp
+msgid "Scale Curve"
+msgstr ""
+
#: scene/resources/physics_material.cpp
msgid "Rough"
msgstr ""
@@ -22251,10 +24007,6 @@ msgid "A"
msgstr ""
#: scene/resources/shader.cpp
-msgid "Code"
-msgstr ""
-
-#: scene/resources/shader.cpp
msgid "Custom Defines"
msgstr ""
@@ -22342,14 +24094,6 @@ msgid "Grow End"
msgstr ""
#: scene/resources/texture.cpp
-msgid "Storage"
-msgstr ""
-
-#: scene/resources/texture.cpp
-msgid "Lossy Quality"
-msgstr ""
-
-#: scene/resources/texture.cpp
msgid "Load Path"
msgstr ""
@@ -22462,10 +24206,6 @@ msgstr ""
msgid "Fallback Environment"
msgstr ""
-#: scene/resources/world.cpp scene/resources/world_2d.cpp
-msgid "Space"
-msgstr ""
-
#: scene/resources/world.cpp
msgid "Scenario"
msgstr ""
@@ -22539,8 +24279,33 @@ msgstr ""
msgid "Wet"
msgstr ""
-#: servers/audio/effects/audio_effect_compressor.cpp
-msgid "Threshold"
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "Voice"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+msgid "Delay (ms)"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_phaser.cpp
+msgid "Rate Hz"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "Depth (ms)"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+msgid "Level dB"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+#: servers/audio/effects/audio_effect_panner.cpp
+msgid "Pan"
msgstr ""
#: servers/audio/effects/audio_effect_compressor.cpp
@@ -22565,19 +24330,6 @@ msgid "Tap 1"
msgstr ""
#: servers/audio/effects/audio_effect_delay.cpp
-msgid "Delay (ms)"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_delay.cpp
-msgid "Level dB"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_delay.cpp
-#: servers/audio/effects/audio_effect_panner.cpp
-msgid "Pan"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_delay.cpp
msgid "Tap 2"
msgstr ""
@@ -22635,10 +24387,6 @@ msgstr ""
msgid "Range Max Hz"
msgstr ""
-#: servers/audio/effects/audio_effect_phaser.cpp
-msgid "Rate Hz"
-msgstr ""
-
#: servers/audio/effects/audio_effect_pitch_shift.cpp
msgid "Oversampling"
msgstr ""
@@ -22653,7 +24401,7 @@ msgid "Predelay"
msgstr ""
#: servers/audio/effects/audio_effect_reverb.cpp
-msgid "(msec)"
+msgid "Msec"
msgstr ""
#: servers/audio/effects/audio_effect_reverb.cpp
diff --git a/editor/translations/ca.po b/editor/translations/ca.po
index f93392b76d..90804de49f 100644
--- a/editor/translations/ca.po
+++ b/editor/translations/ca.po
@@ -21,7 +21,7 @@ msgstr ""
"Project-Id-Version: Godot Engine editor\n"
"Report-Msgid-Bugs-To: https://github.com/godotengine/godot\n"
"POT-Creation-Date: \n"
-"PO-Revision-Date: 2022-01-12 16:52+0000\n"
+"PO-Revision-Date: 2022-03-28 05:19+0000\n"
"Last-Translator: roger <616steam@gmail.com>\n"
"Language-Team: Catalan <https://hosted.weblate.org/projects/godot-engine/"
"godot/ca/>\n"
@@ -30,19 +30,17 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Generator: Weblate 4.10.1\n"
+"X-Generator: Weblate 4.12-dev\n"
-#: core/bind/core_bind.cpp
+#: core/bind/core_bind.cpp main/main.cpp
msgid "Tablet Driver"
msgstr ""
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Clipboard"
-msgstr "El porta-retalls és buit!"
+msgstr "Porta-retalls"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Current Screen"
msgstr "Escena Actual"
@@ -53,7 +51,7 @@ msgstr ""
#: core/bind/core_bind.cpp
#, fuzzy
msgid "V-Sync Enabled"
-msgstr "Activar"
+msgstr "V-Sync Activat"
#: core/bind/core_bind.cpp main/main.cpp
msgid "V-Sync Via Compositor"
@@ -64,61 +62,53 @@ msgid "Delta Smoothing"
msgstr ""
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Low Processor Usage Mode"
-msgstr "Mode de moviment"
+msgstr "Mode de Baix Us del Processador"
#: core/bind/core_bind.cpp
msgid "Low Processor Usage Mode Sleep (µsec)"
msgstr ""
#: core/bind/core_bind.cpp main/main.cpp platform/uwp/os_uwp.cpp
-#, fuzzy
msgid "Keep Screen On"
-msgstr "Manté el Depurador Obert"
+msgstr "Manté la Pantalla Activa"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Min Window Size"
-msgstr "Mida del Contorn:"
+msgstr "Mida Mínima de la Finestra"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Max Window Size"
-msgstr "Mida del Contorn:"
+msgstr "Mida Màxima de la Finestra"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Screen Orientation"
-msgstr "Operador Screen (trama)."
+msgstr "Orientació de la Pantalla"
#: core/bind/core_bind.cpp main/main.cpp platform/uwp/os_uwp.cpp
-#, fuzzy
msgid "Window"
-msgstr "Finestra nova"
+msgstr "Finestra"
#: core/bind/core_bind.cpp main/main.cpp
#, fuzzy
msgid "Borderless"
-msgstr "Píxels de la Vora"
+msgstr "Sense Vores"
#: core/bind/core_bind.cpp
msgid "Per Pixel Transparency Enabled"
msgstr ""
#: core/bind/core_bind.cpp main/main.cpp
-#, fuzzy
msgid "Fullscreen"
-msgstr "Mode Pantalla Completa"
+msgstr "Pantalla Completa"
#: core/bind/core_bind.cpp
msgid "Maximized"
msgstr ""
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Minimized"
-msgstr "Converteix a Majúscules"
+msgstr "Minimitzat"
#: core/bind/core_bind.cpp main/main.cpp scene/gui/dialogs.cpp
#: scene/gui/graph_node.cpp
@@ -129,40 +119,36 @@ msgstr ""
#: scene/2d/physics_body_2d.cpp scene/2d/remote_transform_2d.cpp
#: scene/3d/physics_body.cpp scene/3d/remote_transform.cpp
#: scene/gui/control.cpp scene/gui/line_edit.cpp
-#, fuzzy
msgid "Position"
-msgstr "Posició de l'Acoblador"
+msgstr "Posició"
#: core/bind/core_bind.cpp editor/editor_settings.cpp main/main.cpp
#: modules/gdscript/gdscript_editor.cpp modules/gridmap/grid_map.cpp
#: modules/mono/csharp_script.cpp modules/visual_script/visual_script_nodes.cpp
-#: scene/2d/tile_map.cpp scene/3d/camera.cpp scene/gui/control.cpp
-#: scene/gui/graph_edit.cpp scene/main/viewport.cpp
+#: scene/2d/tile_map.cpp scene/3d/camera.cpp scene/3d/light.cpp
+#: scene/gui/control.cpp scene/gui/graph_edit.cpp scene/main/viewport.cpp
#: scene/resources/dynamic_font.cpp scene/resources/navigation_mesh.cpp
#: scene/resources/primitive_meshes.cpp scene/resources/sky.cpp
#: scene/resources/style_box.cpp scene/resources/texture.cpp
#: scene/resources/visual_shader.cpp servers/visual_server.cpp
-#, fuzzy
msgid "Size"
-msgstr "Mida:"
+msgstr "Mida"
#: core/bind/core_bind.cpp
msgid "Endian Swap"
msgstr ""
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Editor Hint"
-msgstr "Editor"
+msgstr "Suggeriment de l'Editor"
#: core/bind/core_bind.cpp
msgid "Print Error Messages"
msgstr ""
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Iterations Per Second"
-msgstr "Mode d'Interpolació"
+msgstr "Iteracions Per Segon"
#: core/bind/core_bind.cpp
#, fuzzy
@@ -170,9 +156,8 @@ msgid "Target FPS"
msgstr "Objectiu"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Time Scale"
-msgstr "Node escalaTemps"
+msgstr "Escala de Temps"
#: core/bind/core_bind.cpp main/main.cpp
#, fuzzy
@@ -184,19 +169,16 @@ msgid "Error"
msgstr "Error"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Error String"
-msgstr "Error en Desar"
+msgstr "Cadena d'Error"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Error Line"
-msgstr "Error en Desar"
+msgstr "Línia d'Error"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Result"
-msgstr "Resultats de cerca"
+msgstr "Resultat"
#: core/command_queue_mt.cpp core/message_queue.cpp main/main.cpp
msgid "Memory"
@@ -213,9 +195,8 @@ msgid "Limits"
msgstr ""
#: core/command_queue_mt.cpp
-#, fuzzy
msgid "Command Queue"
-msgstr "Arrossega: gira"
+msgstr "Cua de Comandes"
#: core/command_queue_mt.cpp
msgid "Multithreading Queue Size (KB)"
@@ -225,9 +206,8 @@ msgstr ""
#: modules/visual_script/visual_script_func_nodes.cpp
#: modules/visual_script/visual_script_nodes.cpp
#: scene/resources/visual_shader_nodes.cpp
-#, fuzzy
msgid "Function"
-msgstr "Funcions"
+msgstr "Funció"
#: core/image.cpp core/packed_data_container.cpp
#: modules/minimp3/audio_stream_mp3.cpp
@@ -241,12 +221,10 @@ msgid "Data"
msgstr ""
#: core/io/file_access_network.cpp core/register_core_types.cpp
-#: editor/editor_settings.cpp editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp main/main.cpp
+#: editor/editor_settings.cpp main/main.cpp
#: modules/gdscript/language_server/gdscript_language_server.cpp
-#, fuzzy
msgid "Network"
-msgstr "Perfilador de Xarxa"
+msgstr "Xarxa"
#: core/io/file_access_network.cpp
#, fuzzy
@@ -254,9 +232,8 @@ msgid "Remote FS"
msgstr "Remot "
#: core/io/file_access_network.cpp
-#, fuzzy
msgid "Page Size"
-msgstr "Pàgina: "
+msgstr "Mida de la Pàgina"
#: core/io/file_access_network.cpp
msgid "Page Read Ahead"
@@ -267,18 +244,16 @@ msgid "Blocking Mode Enabled"
msgstr ""
#: core/io/http_client.cpp
-#, fuzzy
msgid "Connection"
-msgstr "Connectar"
+msgstr "Connexió"
#: core/io/http_client.cpp
msgid "Read Chunk Size"
msgstr ""
#: core/io/marshalls.cpp
-#, fuzzy
msgid "Object ID"
-msgstr "Objectes Dibuixats:"
+msgstr "ID de l'Objecte"
#: core/io/multiplayer_api.cpp core/io/packet_peer.cpp
#, fuzzy
@@ -295,14 +270,12 @@ msgid "Network Peer"
msgstr "Perfilador de Xarxa"
#: core/io/multiplayer_api.cpp scene/animation/animation_player.cpp
-#, fuzzy
msgid "Root Node"
-msgstr "Nom del node arrel"
+msgstr "Node Arrel"
#: core/io/networked_multiplayer_peer.cpp
-#, fuzzy
msgid "Refuse New Connections"
-msgstr "Connectar"
+msgstr "Rebutjar Noves Connexions"
#: core/io/networked_multiplayer_peer.cpp
#, fuzzy
@@ -391,7 +364,6 @@ msgid "Seed"
msgstr ""
#: core/math/random_number_generator.cpp
-#, fuzzy
msgid "State"
msgstr "Estat"
@@ -413,9 +385,8 @@ msgstr ""
#: modules/mono/csharp_script.cpp scene/animation/animation_player.cpp
#: scene/gui/control.cpp scene/gui/line_edit.cpp scene/main/node.cpp
#: scene/resources/material.cpp
-#, fuzzy
msgid "Text Editor"
-msgstr "Obre l'Editor"
+msgstr "Editor de Text"
#: core/os/input.cpp editor/editor_settings.cpp
#: editor/plugins/script_text_editor.cpp modules/gdscript/gdscript.cpp
@@ -434,7 +405,7 @@ msgstr "Copiar Selecció"
#: scene/main/node.cpp scene/resources/material.cpp
#, fuzzy
msgid "Use Single Quotes"
-msgstr "Nova peça individual"
+msgstr "Utilitzar Cometes Simples"
#: core/os/input_event.cpp editor/project_settings_editor.cpp
#: servers/audio_server.cpp
@@ -451,9 +422,8 @@ msgid "Shift"
msgstr ""
#: core/os/input_event.cpp
-#, fuzzy
msgid "Control"
-msgstr "Control de Versions"
+msgstr "Control"
#: core/os/input_event.cpp
msgid "Meta"
@@ -466,9 +436,8 @@ msgstr "Comunitat"
#: core/os/input_event.cpp scene/2d/touch_screen_button.cpp
#: scene/gui/base_button.cpp scene/gui/texture_button.cpp
-#, fuzzy
msgid "Pressed"
-msgstr "Configuracions prestablertes"
+msgstr "Premut"
#: core/os/input_event.cpp
#, fuzzy
@@ -493,14 +462,12 @@ msgid "Button Mask"
msgstr "Botó"
#: core/os/input_event.cpp scene/2d/node_2d.cpp scene/gui/control.cpp
-#, fuzzy
msgid "Global Position"
-msgstr "Constant"
+msgstr "Posició Global"
#: core/os/input_event.cpp
-#, fuzzy
msgid "Factor"
-msgstr "Vector"
+msgstr "Factor"
#: core/os/input_event.cpp
#, fuzzy
@@ -521,16 +488,15 @@ msgid "Pressure"
msgstr "Configuracions prestablertes"
#: core/os/input_event.cpp
-#, fuzzy
msgid "Relative"
-msgstr "Ajustament Relatiu"
+msgstr "Relatiu"
-#: core/os/input_event.cpp scene/2d/camera_2d.cpp
-#: scene/3d/interpolated_camera.cpp scene/animation/animation_player.cpp
-#: scene/resources/environment.cpp
-#, fuzzy
+#: core/os/input_event.cpp scene/2d/camera_2d.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/interpolated_camera.cpp
+#: scene/animation/animation_player.cpp scene/resources/environment.cpp
+#: scene/resources/particles_material.cpp
msgid "Speed"
-msgstr "Velocitat (FPS):"
+msgstr "Velocitat"
#: core/os/input_event.cpp editor/project_settings_editor.cpp
#: scene/3d/sprite_3d.cpp
@@ -543,9 +509,8 @@ msgid "Axis Value"
msgstr "(valor)"
#: core/os/input_event.cpp modules/visual_script/visual_script_func_nodes.cpp
-#, fuzzy
msgid "Index"
-msgstr "Ãndex:"
+msgstr "Ãndex"
#: core/os/input_event.cpp editor/project_settings_editor.cpp
#: modules/visual_script/visual_script_nodes.cpp
@@ -563,22 +528,21 @@ msgid "Delta"
msgstr ""
#: core/os/input_event.cpp
-#, fuzzy
msgid "Channel"
-msgstr "Modifica"
+msgstr "Canal"
#: core/os/input_event.cpp main/main.cpp
-#, fuzzy
msgid "Message"
-msgstr "Sincronitzar Canvis en Scripts"
+msgstr "Missatge"
#: core/os/input_event.cpp
#, fuzzy
msgid "Pitch"
msgstr "commutador:"
-#: core/os/input_event.cpp scene/2d/physics_body_2d.cpp
-#: scene/3d/physics_body.cpp
+#: core/os/input_event.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/physics_body_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/3d/physics_body.cpp scene/resources/particles_material.cpp
#, fuzzy
msgid "Velocity"
msgstr "Converteix a Majúscules"
@@ -590,21 +554,21 @@ msgstr ""
#: core/os/input_event.cpp
#, fuzzy
msgid "Controller Number"
-msgstr "Línia:"
+msgstr "Nombre de controlador"
#: core/os/input_event.cpp
msgid "Controller Value"
msgstr ""
#: core/project_settings.cpp editor/editor_node.cpp main/main.cpp
-#, fuzzy
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/windows/export/export.cpp
msgid "Application"
-msgstr "Acció"
+msgstr "Aplicació"
#: core/project_settings.cpp main/main.cpp
-#, fuzzy
msgid "Config"
-msgstr "Configurar Ajustament"
+msgstr "Configuració"
#: core/project_settings.cpp
#, fuzzy
@@ -615,13 +579,16 @@ msgstr "Configuració del Projecte..."
#: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp
#: editor/editor_plugin_settings.cpp editor/editor_profiler.cpp
#: editor/project_manager.cpp editor/settings_config_dialog.cpp
-#: modules/gdnative/nativescript/nativescript.cpp scene/2d/area_2d.cpp
-#: scene/3d/area.cpp scene/main/node.cpp
+#: modules/gdnative/nativescript/nativescript.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/osx/export/export.cpp scene/2d/area_2d.cpp scene/3d/area.cpp
+#: scene/main/node.cpp
msgid "Name"
msgstr "Nom"
#: core/project_settings.cpp editor/editor_help.cpp
-#: modules/visual_script/visual_script_nodes.cpp
+#: modules/visual_script/visual_script_nodes.cpp platform/uwp/export/export.cpp
+#: platform/windows/export/export.cpp
msgid "Description"
msgstr "Descripció"
@@ -659,7 +626,7 @@ msgid "Custom User Dir Name"
msgstr ""
#: core/project_settings.cpp editor/animation_track_editor.cpp
-#: editor/editor_audio_buses.cpp servers/audio_server.cpp
+#: editor/editor_audio_buses.cpp main/main.cpp servers/audio_server.cpp
msgid "Audio"
msgstr "Àudio"
@@ -698,15 +665,13 @@ msgid "Autoload On Startup"
msgstr ""
#: core/project_settings.cpp
-#, fuzzy
msgid "Plugin Name"
-msgstr "Nom del Connector:"
+msgstr "Nom del Connector"
#: core/project_settings.cpp scene/2d/collision_object_2d.cpp
#: scene/3d/collision_object.cpp scene/gui/control.cpp
-#, fuzzy
msgid "Input"
-msgstr "Afegeix una Entrada"
+msgstr "Entrada"
#: core/project_settings.cpp
msgid "UI Accept"
@@ -802,9 +767,8 @@ msgstr "Crea una Col·lisió entre malles de triangles germanes"
#: modules/lightmapper_cpu/register_types.cpp scene/main/scene_tree.cpp
#: scene/main/viewport.cpp servers/visual/visual_server_scene.cpp
#: servers/visual_server.cpp
-#, fuzzy
msgid "Rendering"
-msgstr "Renderitzador:"
+msgstr "Renderitzat"
#: core/project_settings.cpp drivers/gles2/rasterizer_storage_gles2.cpp
#: drivers/gles3/rasterizer_scene_gles3.cpp
@@ -819,18 +783,20 @@ msgstr ""
#: core/project_settings.cpp scene/animation/animation_tree.cpp
#: scene/gui/file_dialog.cpp scene/main/scene_tree.cpp
#: servers/visual_server.cpp
-#, fuzzy
msgid "Filters"
-msgstr "Filtres:"
+msgstr "Filtres"
#: core/project_settings.cpp scene/main/viewport.cpp
msgid "Sharpen Intensity"
msgstr ""
-#: core/project_settings.cpp editor/editor_node.cpp editor/editor_settings.cpp
-#: editor/plugins/script_editor_plugin.cpp editor/project_export.cpp
-#: main/main.cpp modules/gdscript/gdscript.cpp
-#: modules/visual_script/visual_script.cpp scene/3d/room_manager.cpp
+#: core/project_settings.cpp editor/editor_export.cpp editor/editor_node.cpp
+#: editor/editor_settings.cpp editor/plugins/script_editor_plugin.cpp
+#: editor/project_export.cpp main/main.cpp modules/gdscript/gdscript.cpp
+#: modules/visual_script/visual_script.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp scene/3d/room_manager.cpp
#: scene/main/scene_tree.cpp scene/resources/shape_2d.cpp
#: servers/visual_server.cpp
msgid "Debug"
@@ -838,9 +804,8 @@ msgstr "Depurar"
#: core/project_settings.cpp main/main.cpp modules/gdscript/gdscript.cpp
#: modules/visual_script/visual_script.cpp scene/resources/dynamic_font.cpp
-#, fuzzy
msgid "Settings"
-msgstr "Configuració:"
+msgstr "Configuració"
#: core/project_settings.cpp editor/script_editor_debugger.cpp main/main.cpp
#: modules/mono/mono_gd/gd_mono.cpp
@@ -853,14 +818,12 @@ msgid "Max Functions"
msgstr "Reanomena Funció"
#: core/project_settings.cpp scene/3d/vehicle_body.cpp
-#, fuzzy
msgid "Compression"
-msgstr "Canviar Expressió"
+msgstr "Compressió"
#: core/project_settings.cpp
-#, fuzzy
msgid "Formats"
-msgstr "Format"
+msgstr "Formats"
#: core/project_settings.cpp
msgid "Zstd"
@@ -916,9 +879,8 @@ msgid "SSL"
msgstr ""
#: core/register_core_types.cpp main/main.cpp
-#, fuzzy
msgid "Certificates"
-msgstr "Vèrtexs:"
+msgstr "Certificats"
#: core/resource.cpp editor/dependency_editor.cpp
#: editor/editor_resource_picker.cpp
@@ -939,23 +901,20 @@ msgid "Path"
msgstr "Camí"
#: core/script_language.cpp
-#, fuzzy
msgid "Source Code"
-msgstr "Font"
+msgstr "Codi Font"
#: core/translation.cpp
-#, fuzzy
msgid "Messages"
-msgstr "Sincronitzar Canvis en Scripts"
+msgstr "Missatges"
#: core/translation.cpp editor/project_settings_editor.cpp
msgid "Locale"
msgstr "Idioma"
#: core/translation.cpp
-#, fuzzy
msgid "Test"
-msgstr "Provant"
+msgstr "Prova"
#: core/translation.cpp scene/resources/font.cpp
msgid "Fallback"
@@ -1066,6 +1025,7 @@ msgid "Subsurface Scattering"
msgstr ""
#: drivers/gles3/rasterizer_scene_gles3.cpp
+#: editor/import/resource_importer_texture.cpp
#: editor/plugins/spatial_editor_plugin.cpp modules/gltf/gltf_node.cpp
#: modules/gridmap/grid_map.cpp scene/2d/cpu_particles_2d.cpp
#: scene/2d/node_2d.cpp scene/2d/parallax_layer.cpp scene/2d/polygon_2d.cpp
@@ -1073,7 +1033,6 @@ msgstr ""
#: scene/3d/remote_transform.cpp scene/3d/spatial.cpp scene/gui/control.cpp
#: scene/main/canvas_layer.cpp scene/resources/environment.cpp
#: scene/resources/material.cpp scene/resources/particles_material.cpp
-#, fuzzy
msgid "Scale"
msgstr "Escala"
@@ -1360,11 +1319,11 @@ msgstr "Treu la Pista"
#: editor/plugins/tile_map_editor_plugin.cpp editor/scene_tree_dock.cpp
#: editor/spatial_editor_gizmos.cpp modules/csg/csg_gizmos.cpp
#: modules/gridmap/grid_map_editor_plugin.cpp
-#, fuzzy
msgid "Editors"
-msgstr "Editor"
+msgstr "Editors"
#: editor/animation_track_editor.cpp editor/editor_settings.cpp
+#: editor/import/resource_importer_scene.cpp
#: editor/plugins/animation_player_editor_plugin.cpp editor/scene_tree_dock.cpp
#: scene/2d/animated_sprite.cpp scene/2d/cpu_particles_2d.cpp
#: scene/2d/sprite.cpp scene/3d/cpu_particles.cpp scene/3d/sprite_3d.cpp
@@ -1600,14 +1559,14 @@ msgstr "Valor del pas d'Animació."
msgid "Seconds"
msgstr "Segons"
-#: editor/animation_track_editor.cpp
+#: editor/animation_track_editor.cpp editor/import/resource_importer_scene.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp main/main.cpp
#: scene/resources/texture.cpp
msgid "FPS"
msgstr "FPS"
#: editor/animation_track_editor.cpp editor/editor_plugin_settings.cpp
-#: editor/editor_resource_picker.cpp
+#: editor/editor_resource_picker.cpp editor/import/resource_importer_wav.cpp
#: editor/plugins/polygon_2d_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
@@ -2006,7 +1965,6 @@ msgid "Edit..."
msgstr "Edita..."
#: editor/connections_dialog.cpp
-#, fuzzy
msgid "Go to Method"
msgstr "Vés al Mètode"
@@ -2228,10 +2186,9 @@ msgstr "Desenvolupador Principal"
#. TRANSLATORS: This refers to a job title.
#: editor/editor_about.cpp
-#, fuzzy
msgctxt "Job Title"
msgid "Project Manager"
-msgstr "Gestor del Projecte"
+msgstr "Gestor de Projectes"
#: editor/editor_about.cpp
msgid "Developers"
@@ -2587,7 +2544,9 @@ msgid "Remove Autoload"
msgstr "Treu Autocàrrega"
#: editor/editor_autoload_settings.cpp editor/editor_plugin_settings.cpp
-#: modules/gdscript/gdscript.cpp scene/2d/polygon_2d.cpp scene/3d/area.cpp
+#: modules/gdscript/gdscript.cpp platform/android/export/export_plugin.cpp
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#: scene/2d/polygon_2d.cpp scene/3d/area.cpp scene/3d/physics_joint.cpp
#: scene/3d/reflection_probe.cpp scene/main/canvas_layer.cpp
#: scene/resources/material.cpp servers/visual_server.cpp
msgid "Enable"
@@ -2760,6 +2719,59 @@ msgstr ""
#: editor/editor_export.cpp platform/android/export/export_plugin.cpp
#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Custom Template"
+msgstr "Editar Tema"
+
+#: editor/editor_export.cpp editor/project_export.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Release"
+msgstr "alliberat"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Binary Format"
+msgstr "Operador Color."
+
+#: editor/editor_export.cpp
+msgid "64 Bits"
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Embed PCK"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Texture Format"
+msgstr "Regió de Textura"
+
+#: editor/editor_export.cpp
+msgid "BPTC"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "S3TC"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "ETC"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "ETC2"
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "No BPTC Fallbacks"
+msgstr ""
+
+#: editor/editor_export.cpp platform/android/export/export_plugin.cpp
+#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
msgid "Custom debug template not found."
msgstr "No s'ha trobat cap plantilla de depuració personalitzada."
@@ -2945,6 +2957,7 @@ msgid "Make Current"
msgstr "Fer Actual"
#: editor/editor_feature_profile.cpp editor/editor_node.cpp
+#: editor/import/resource_importer_scene.cpp
#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
msgid "Import"
msgstr "Importar"
@@ -3075,8 +3088,11 @@ msgstr "Èxit!"
msgid "Display Mode"
msgstr "Mode de Reproducció:"
-#: editor/editor_file_dialog.cpp main/main.cpp modules/csg/csg_shape.cpp
-#: modules/visual_script/visual_script_nodes.cpp
+#: editor/editor_file_dialog.cpp
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+#: editor/import/resource_importer_wav.cpp main/main.cpp
+#: modules/csg/csg_shape.cpp modules/visual_script/visual_script_nodes.cpp
#: modules/visual_script/visual_script_yield_nodes.cpp scene/2d/light_2d.cpp
#: scene/2d/physics_body_2d.cpp scene/2d/tile_map.cpp
#: scene/3d/baked_lightmap.cpp scene/3d/light.cpp scene/3d/physics_body.cpp
@@ -3215,7 +3231,9 @@ msgstr "(Re)Important Recursos"
msgid "Reimport Missing Imported Files"
msgstr ""
-#: editor/editor_help.cpp
+#: editor/editor_help.cpp scene/2d/camera_2d.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/resources/dynamic_font.cpp
+#: scene/resources/style_box.cpp
msgid "Top"
msgstr "Dalt"
@@ -3270,6 +3288,7 @@ msgid "Fonts"
msgstr "Lletra"
#: editor/editor_help.cpp editor/plugins/theme_editor_plugin.cpp
+#: platform/iphone/export/export.cpp
#, fuzzy
msgid "Icons"
msgstr "Icona"
@@ -3441,7 +3460,9 @@ msgstr ""
msgid "Pin value [Disabled because '%s' is editor-only]"
msgstr ""
-#: editor/editor_inspector.cpp editor/scene_tree_dock.cpp
+#: editor/editor_inspector.cpp
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+#: editor/scene_tree_dock.cpp
#: modules/visual_script/visual_script_func_nodes.cpp
#: modules/visual_script/visual_script_nodes.cpp
#: modules/visual_script/visual_script_property_selector.cpp
@@ -3785,6 +3806,16 @@ msgid "Quick Open Script..."
msgstr "Obertura Ràpida d'Scripts..."
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Save & Reload"
+msgstr "Desa i Reinicia"
+
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Save changes to '%s' before reloading?"
+msgstr "Desar els canvis a '%s' abans de tancar?"
+
+#: editor/editor_node.cpp
msgid "Save & Close"
msgstr "Desar i Tancar"
@@ -3904,6 +3935,11 @@ msgid "Open Project Manager?"
msgstr "Obre el Gestor de Projectes?"
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Save changes to the following scene(s) before reloading?"
+msgstr "Voleu Desar els canvis en les escenes següents abans de Sortir?"
+
+#: editor/editor_node.cpp
msgid "Save & Quit"
msgstr "Desar i Sortir"
@@ -4182,8 +4218,8 @@ msgstr "Canvis de Material:"
#: editor/editor_node.cpp
#, fuzzy
-msgid "Translate Properties"
-msgstr "Propietats"
+msgid "Localize Settings"
+msgstr "Localització"
#: editor/editor_node.cpp
#, fuzzy
@@ -4200,8 +4236,8 @@ msgstr "Inspector"
#: editor/editor_node.cpp
#, fuzzy
-msgid "Capitalize Properties"
-msgstr "Propietats"
+msgid "Default Property Name Style"
+msgstr "Camí del Projecte:"
#: editor/editor_node.cpp
msgid "Default Float Step"
@@ -4813,7 +4849,9 @@ msgstr "Connectors Instal·lats:"
msgid "Update"
msgstr "Actualitza"
-#: editor/editor_plugin_settings.cpp
+#: editor/editor_plugin_settings.cpp platform/android/export/export_plugin.cpp
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp
msgid "Version"
msgstr "Versió"
@@ -5854,7 +5892,7 @@ msgstr "Rect. Complet"
msgid "Rect Custom Position"
msgstr "Estableix la Posició de Sortida de la Corba"
-#: editor/editor_settings.cpp
+#: editor/editor_settings.cpp platform/android/export/export_plugin.cpp
msgid "Screen"
msgstr ""
@@ -5881,6 +5919,19 @@ msgid "Editor SSL Certificates"
msgstr "Configuració de l'Editor"
#: editor/editor_settings.cpp
+msgid "HTTP Proxy"
+msgstr ""
+
+#: editor/editor_settings.cpp
+msgid "Host"
+msgstr ""
+
+#: editor/editor_settings.cpp editor/fileserver/editor_file_server.cpp
+#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp
+msgid "Port"
+msgstr ""
+
+#: editor/editor_settings.cpp
msgid "Project Manager"
msgstr "Gestor del Projecte"
@@ -5923,7 +5974,8 @@ msgstr ""
msgid "String Color"
msgstr "Emmagatzemant Fitxer:"
-#: editor/editor_settings.cpp
+#: editor/editor_settings.cpp platform/javascript/export/export.cpp
+#: platform/uwp/export/export.cpp
#, fuzzy
msgid "Background Color"
msgstr "Color de fons no vàlid."
@@ -6108,22 +6160,6 @@ msgid "Starting the download..."
msgstr "Començant la descarrega..."
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "HTTP Proxy"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Host"
-msgstr ""
-
-#: editor/export_template_manager.cpp editor/fileserver/editor_file_server.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp main/main.cpp
-#: modules/mono/mono_gd/gd_mono.cpp
-msgid "Port"
-msgstr ""
-
-#: editor/export_template_manager.cpp
msgid "Error requesting URL:"
msgstr "Error en sol·licitar l'URL:"
@@ -6403,6 +6439,7 @@ msgstr ""
#: editor/fileserver/editor_file_server.cpp
#: editor/plugins/version_control_editor_plugin.cpp
+#: platform/uwp/export/export.cpp platform/windows/export/export.cpp
msgid "Password"
msgstr ""
@@ -6789,6 +6826,117 @@ msgstr ""
msgid "Use Ambient"
msgstr ""
+#: editor/import/resource_importer_bitmask.cpp
+#, fuzzy
+msgid "Create From"
+msgstr "Crea un Directori"
+
+#: editor/import/resource_importer_bitmask.cpp
+#: servers/audio/effects/audio_effect_compressor.cpp
+msgid "Threshold"
+msgstr ""
+
+#: editor/import/resource_importer_csv_translation.cpp
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_scene.cpp
+#: editor/import/resource_importer_texture.cpp
+#: editor/import/resource_importer_wav.cpp scene/3d/gi_probe.cpp
+#, fuzzy
+msgid "Compress"
+msgstr "Components"
+
+#: editor/import/resource_importer_csv_translation.cpp
+msgid "Delimiter"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+msgid "No BPTC If RGB"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/sprite_3d.cpp
+#: scene/resources/material.cpp scene/resources/particles_material.cpp
+#: scene/resources/texture.cpp
+msgid "Flags"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/animation/tween.cpp
+#: scene/resources/texture.cpp
+msgid "Repeat"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/2d/light_2d.cpp
+#: scene/gui/control.cpp scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Filter"
+msgstr "Filtres:"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Mipmaps"
+msgstr "Senyals"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+msgid "Anisotropic"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+msgid "sRGB"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#, fuzzy
+msgid "Slices"
+msgstr "Auto Tall"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
+#: scene/resources/style_box.cpp
+#, fuzzy
+msgid "Horizontal"
+msgstr "Horitzontal:"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
+#: scene/resources/style_box.cpp
+#, fuzzy
+msgid "Vertical"
+msgstr "Vertical:"
+
+#: editor/import/resource_importer_obj.cpp
+#, fuzzy
+msgid "Generate Tangents"
+msgstr "Recompte de punts generats"
+
+#: editor/import/resource_importer_obj.cpp
+#, fuzzy
+msgid "Scale Mesh"
+msgstr "Mode d'Escalat"
+
+#: editor/import/resource_importer_obj.cpp
+#, fuzzy
+msgid "Offset Mesh"
+msgstr "òfset:"
+
+#: editor/import/resource_importer_obj.cpp
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Octahedral Compression"
+msgstr "Compressió"
+
+#: editor/import/resource_importer_obj.cpp
+#, fuzzy
+msgid "Optimize Mesh Flags"
+msgstr "Mida: "
+
#: editor/import/resource_importer_scene.cpp
msgid "Import as Single Scene"
msgstr "Importar com a Única Escena"
@@ -6829,6 +6977,156 @@ msgstr "Importa en Múltiples Escenes"
msgid "Import as Multiple Scenes+Materials"
msgstr "Importar com a Múltiples Escenes+Materials"
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Nodes"
+msgstr "Node"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Root Type"
+msgstr "Tipus de Membre"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Root Name"
+msgstr "Remot "
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Root Scale"
+msgstr "Escala"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Custom Script"
+msgstr "Talla els Nodes"
+
+#: editor/import/resource_importer_scene.cpp scene/resources/texture.cpp
+#, fuzzy
+msgid "Storage"
+msgstr "Emmagatzemant Fitxer:"
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Use Legacy Names"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+#, fuzzy
+msgid "Materials"
+msgstr "Canvis de Material:"
+
+#: editor/import/resource_importer_scene.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Location"
+msgstr "Localització"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Keep On Reimport"
+msgstr "ReImportar"
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+#, fuzzy
+msgid "Meshes"
+msgstr "Malla"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Ensure Tangents"
+msgstr "Modifica la Tangent de la Corba"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Light Baking"
+msgstr "Precalcular Lightmaps"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Lightmap Texel Size"
+msgstr "Precalcular Lightmaps"
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+msgid "Skins"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Use Named Skins"
+msgstr "Utilitzar Ajustament d'Escalat"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "External Files"
+msgstr "Obre un Fitxer"
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Store In Subdir"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Filter Script"
+msgstr "Filtra les propietats"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Keep Custom Tracks"
+msgstr "Transformar"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Optimizer"
+msgstr "Optimitza"
+
+#: editor/import/resource_importer_scene.cpp main/main.cpp
+#: modules/mono/mono_gd/gd_mono.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp scene/2d/camera_2d.cpp scene/2d/light_2d.cpp
+#: scene/2d/navigation_polygon.cpp scene/2d/ray_cast_2d.cpp scene/2d/sprite.cpp
+#: scene/2d/y_sort.cpp scene/3d/audio_stream_player_3d.cpp
+#: scene/3d/baked_lightmap.cpp scene/3d/interpolated_camera.cpp
+#: scene/3d/light.cpp scene/3d/navigation_mesh_instance.cpp
+#: scene/3d/physics_joint.cpp scene/3d/ray_cast.cpp scene/3d/sprite_3d.cpp
+#: scene/gui/graph_edit.cpp scene/gui/rich_text_label.cpp
+#: scene/resources/curve.cpp scene/resources/environment.cpp
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Enabled"
+msgstr "Activar"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Max Linear Error"
+msgstr "Error Lineal Max.:"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Max Angular Error"
+msgstr "Error Angular Max.:"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Max Angle"
+msgstr "Valor"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Remove Unused Tracks"
+msgstr "Treu la Pista"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Clips"
+msgstr "Talls d'Animació"
+
+#: editor/import/resource_importer_scene.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/particles_2d.cpp scene/3d/area.cpp scene/3d/cpu_particles.cpp
+#: scene/3d/particles.cpp scene/resources/environment.cpp
+#, fuzzy
+msgid "Amount"
+msgstr "Quantitat:"
+
#: editor/import/resource_importer_scene.cpp
#: editor/plugins/mesh_library_editor_plugin.cpp
msgid "Import Scene"
@@ -6870,12 +7168,149 @@ msgstr ""
msgid "Saving..."
msgstr "Desant..."
+#: editor/import/resource_importer_texture.cpp scene/resources/texture.cpp
+msgid "Lossy Quality"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "HDR Mode"
+msgstr "Mode de selecció"
+
+#: editor/import/resource_importer_texture.cpp
+msgid "BPTC LDR"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/mesh_instance_2d.cpp scene/2d/multimesh_instance_2d.cpp
+#: scene/2d/particles_2d.cpp scene/2d/sprite.cpp scene/resources/style_box.cpp
+msgid "Normal Map"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Process"
+msgstr "Post-Processat"
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Fix Alpha Border"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Premult Alpha"
+msgstr "Edita Polígon"
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Hdr As Srgb"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Invert Color"
+msgstr "Vèrtex"
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Normal Map Invert Y"
+msgstr "Escala aleatòria:"
+
+#: editor/import/resource_importer_texture.cpp
+#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
+#: scene/audio/audio_stream_player.cpp scene/gui/video_player.cpp
+msgid "Stream"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Size Limit"
+msgstr "Mida: "
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Detect 3D"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "SVG"
+msgstr "HSV"
+
#: editor/import/resource_importer_texture.cpp
msgid ""
"Warning, no suitable PC VRAM compression enabled in Project Settings. This "
"texture will not display correctly on PC."
msgstr ""
+#: editor/import/resource_importer_texture_atlas.cpp
+#, fuzzy
+msgid "Atlas File"
+msgstr "Mida del Contorn:"
+
+#: editor/import/resource_importer_texture_atlas.cpp
+#, fuzzy
+msgid "Import Mode"
+msgstr "Mode d'Exportació:"
+
+#: editor/import/resource_importer_texture_atlas.cpp
+#, fuzzy
+msgid "Crop To Region"
+msgstr "Definir Regió de Rajola"
+
+#: editor/import/resource_importer_texture_atlas.cpp
+msgid "Trim Alpha Border From Region"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp scene/2d/physics_body_2d.cpp
+#, fuzzy
+msgid "Force"
+msgstr "Malla d'Origen:"
+
+#: editor/import/resource_importer_wav.cpp
+msgid "8 Bit"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp main/main.cpp
+#: modules/mono/editor/csharp_project.cpp modules/mono/mono_gd/gd_mono.cpp
+msgid "Mono"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+#, fuzzy
+msgid "Max Rate"
+msgstr "Node de Mescla"
+
+#: editor/import/resource_importer_wav.cpp
+#, fuzzy
+msgid "Max Rate Hz"
+msgstr "Node de Mescla"
+
+#: editor/import/resource_importer_wav.cpp
+msgid "Trim"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+#, fuzzy
+msgid "Normalize"
+msgstr "Format"
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+#, fuzzy
+msgid "Loop Mode"
+msgstr "Mode de moviment"
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+#, fuzzy
+msgid "Loop Begin"
+msgstr "Mode de moviment"
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+#, fuzzy
+msgid "Loop End"
+msgstr "Mode de moviment"
+
#: editor/import_defaults_editor.cpp
#, fuzzy
msgid "Select Importer"
@@ -6950,6 +7385,29 @@ msgstr "No s'ha pogut carregar el recurs."
#: editor/inspector_dock.cpp
#, fuzzy
+msgid "Property Name Style"
+msgstr "Nom del Projecte:"
+
+#: editor/inspector_dock.cpp scene/gui/color_picker.cpp
+msgid "Raw"
+msgstr ""
+
+#: editor/inspector_dock.cpp
+#, fuzzy
+msgid "Capitalized"
+msgstr "Converteix a Majúscules"
+
+#: editor/inspector_dock.cpp
+#, fuzzy
+msgid "Localized"
+msgstr "Idioma"
+
+#: editor/inspector_dock.cpp
+msgid "Localization not available for current language."
+msgstr ""
+
+#: editor/inspector_dock.cpp
+#, fuzzy
msgid "Copy Properties"
msgstr "Propietats"
@@ -8010,18 +8468,26 @@ msgid "License (Z-A)"
msgstr "Llicència (Z-A)"
#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgctxt "Pagination"
msgid "First"
msgstr "Primer"
-#: editor/plugins/asset_library_editor_plugin.cpp scene/gui/control.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgctxt "Pagination"
msgid "Previous"
msgstr "Anterior"
-#: editor/plugins/asset_library_editor_plugin.cpp scene/gui/control.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgctxt "Pagination"
msgid "Next"
msgstr "Següent"
#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgctxt "Pagination"
msgid "Last"
msgstr "Últim"
@@ -8281,22 +8747,22 @@ msgid ""
msgstr ""
"En activar-se, els nodes de Control afectaren les àncores enlloc dels marges."
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
#, fuzzy
msgid "Top Left"
msgstr "Esquerra"
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
#, fuzzy
msgid "Top Right"
msgstr "Dreta"
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
#, fuzzy
msgid "Bottom Right"
msgstr "Girar a la Dreta"
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
#, fuzzy
msgid "Bottom Left"
msgstr "Vista Inferior"
@@ -9041,6 +9507,19 @@ msgstr "Precalcula la Sonda d'IG"
msgid "Gradient Edited"
msgstr "Degradat Editat"
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+msgid "Swap GradientTexture2D Fill Points"
+msgstr ""
+
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+msgid "Swap Gradient Fill Points"
+msgstr ""
+
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+#, fuzzy
+msgid "Toggle Grid Snap"
+msgstr "Commuta Mode"
+
#: editor/plugins/item_list_editor_plugin.cpp
msgid "Item %d"
msgstr "Element %d"
@@ -9268,8 +9747,9 @@ msgstr ""
"Actualitzar des de l'Escena existent?:\n"
"%s"
-#: editor/plugins/mesh_library_editor_plugin.cpp modules/gridmap/grid_map.cpp
-msgid "Mesh Library"
+#: editor/plugins/mesh_library_editor_plugin.cpp
+#, fuzzy
+msgid "MeshLibrary"
msgstr "Biblioteca de Malles"
#: editor/plugins/mesh_library_editor_plugin.cpp
@@ -10282,8 +10762,8 @@ msgstr "Connexions al mètode:"
msgid "Source"
msgstr "Font"
-#: editor/plugins/script_text_editor.cpp scene/3d/interpolated_camera.cpp
-#: scene/animation/skeleton_ik.cpp
+#: editor/plugins/script_text_editor.cpp platform/uwp/export/export.cpp
+#: scene/3d/interpolated_camera.cpp scene/animation/skeleton_ik.cpp
msgid "Target"
msgstr "Objectiu"
@@ -11295,7 +11775,9 @@ msgstr "Velocitat (FPS):"
#: editor/plugins/sprite_frames_editor_plugin.cpp
#: modules/gltf/gltf_animation.cpp modules/minimp3/audio_stream_mp3.cpp
-#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp scene/2d/path_2d.cpp
+#: modules/minimp3/resource_importer_mp3.cpp
+#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp
+#: modules/stb_vorbis/resource_importer_ogg_vorbis.cpp scene/2d/path_2d.cpp
#: scene/3d/path.cpp scene/resources/animation.cpp scene/resources/material.cpp
msgid "Loop"
msgstr "Bucle"
@@ -12247,8 +12729,9 @@ msgstr "Mode màscara de bits"
msgid "Priority"
msgstr "Mode Prioritat"
-#: editor/plugins/tile_set_editor_plugin.cpp main/main.cpp scene/gui/button.cpp
-#: scene/gui/item_list.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp main/main.cpp
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#: scene/gui/button.cpp scene/gui/item_list.cpp
msgid "Icon"
msgstr "Icona"
@@ -13711,11 +14194,6 @@ msgstr ""
#: editor/project_export.cpp
#, fuzzy
-msgid "Release"
-msgstr "alliberat"
-
-#: editor/project_export.cpp
-#, fuzzy
msgid "Exporting All"
msgstr "Exportant tot"
@@ -15639,6 +16117,7 @@ msgid "Change AudioStreamPlayer3D Emission Angle"
msgstr "Modifica l'angle d'emissió de l'AudioStreamPlayer3D"
#: editor/spatial_editor_gizmos.cpp modules/gltf/gltf_node.cpp
+#: platform/osx/export/export.cpp
msgid "Camera"
msgstr ""
@@ -15928,7 +16407,8 @@ msgstr ""
msgid "Use Nvidia Rect Flicker Workaround"
msgstr ""
-#: main/main.cpp platform/uwp/os_uwp.cpp
+#: main/main.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp platform/uwp/os_uwp.cpp
#, fuzzy
msgid "Display"
msgstr "Mostra-ho tot"
@@ -15989,19 +16469,6 @@ msgstr ""
msgid "Allowed"
msgstr ""
-#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp scene/2d/camera_2d.cpp
-#: scene/2d/light_2d.cpp scene/2d/navigation_polygon.cpp
-#: scene/2d/ray_cast_2d.cpp scene/2d/sprite.cpp scene/2d/y_sort.cpp
-#: scene/3d/audio_stream_player_3d.cpp scene/3d/baked_lightmap.cpp
-#: scene/3d/interpolated_camera.cpp scene/3d/light.cpp
-#: scene/3d/navigation_mesh_instance.cpp scene/3d/ray_cast.cpp
-#: scene/3d/sprite_3d.cpp scene/gui/graph_edit.cpp
-#: scene/gui/rich_text_label.cpp scene/resources/curve.cpp
-#: scene/resources/environment.cpp
-#, fuzzy
-msgid "Enabled"
-msgstr "Activar"
-
#: main/main.cpp
msgid "Intended Usage"
msgstr ""
@@ -16033,13 +16500,14 @@ msgstr ""
msgid "Handheld"
msgstr ""
-#: main/main.cpp
+#: main/main.cpp platform/javascript/export/export.cpp
+#: platform/uwp/export/export.cpp
#, fuzzy
msgid "Orientation"
msgstr "Documentació en Línia"
#: main/main.cpp scene/gui/scroll_container.cpp scene/gui/text_edit.cpp
-#: scene/main/scene_tree.cpp
+#: scene/main/scene_tree.cpp scene/register_scene_types.cpp
#, fuzzy
msgid "Common"
msgstr "Comunitat"
@@ -16082,7 +16550,7 @@ msgstr ""
#: main/main.cpp
#, fuzzy
-msgid "Frame Delay (msec)"
+msgid "Frame Delay Msec"
msgstr "Enquadra la Selecció"
#: main/main.cpp
@@ -16210,11 +16678,6 @@ msgstr ""
msgid "Tooltip Position Offset"
msgstr "òfset de la Rotació:"
-#: main/main.cpp modules/mono/editor/csharp_project.cpp
-#: modules/mono/mono_gd/gd_mono.cpp
-msgid "Mono"
-msgstr ""
-
#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp
#, fuzzy
msgid "Debugger Agent"
@@ -16801,7 +17264,7 @@ msgstr "Color"
msgid "Intensity"
msgstr ""
-#: modules/gltf/gltf_light.cpp scene/2d/light_2d.cpp
+#: modules/gltf/gltf_light.cpp scene/2d/light_2d.cpp scene/3d/light.cpp
#, fuzzy
msgid "Range"
msgstr "Modifica"
@@ -16948,11 +17411,6 @@ msgstr "Llum"
msgid "Use Named Skin Binds"
msgstr ""
-#: modules/gltf/gltf_state.cpp scene/3d/physics_joint.cpp
-#, fuzzy
-msgid "Nodes"
-msgstr "Node"
-
#: modules/gltf/gltf_state.cpp
#, fuzzy
msgid "Buffer Views"
@@ -16964,16 +17422,6 @@ msgstr ""
#: modules/gltf/gltf_state.cpp
#, fuzzy
-msgid "Meshes"
-msgstr "Malla"
-
-#: modules/gltf/gltf_state.cpp
-#, fuzzy
-msgid "Materials"
-msgstr "Canvis de Material:"
-
-#: modules/gltf/gltf_state.cpp
-#, fuzzy
msgid "Scene Name"
msgstr "Camí de l'Escena:"
@@ -16989,15 +17437,11 @@ msgstr "Nom del node arrel"
msgid "Textures"
msgstr "Característiques"
-#: modules/gltf/gltf_state.cpp
+#: modules/gltf/gltf_state.cpp platform/uwp/export/export.cpp
msgid "Images"
msgstr ""
#: modules/gltf/gltf_state.cpp
-msgid "Skins"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp
msgid "Cameras"
msgstr ""
@@ -17032,11 +17476,15 @@ msgid "Src Image"
msgstr "Mostra els Ossos"
#: modules/gridmap/grid_map.cpp
+msgid "Mesh Library"
+msgstr "Biblioteca de Malles"
+
+#: modules/gridmap/grid_map.cpp
#, fuzzy
msgid "Physics Material"
msgstr "Fotograma de Física %"
-#: modules/gridmap/grid_map.cpp
+#: modules/gridmap/grid_map.cpp scene/3d/visual_instance.cpp
#, fuzzy
msgid "Use In Baked Light"
msgstr "Precalcular Lightmaps"
@@ -17068,6 +17516,7 @@ msgstr "Centre"
#: modules/gridmap/grid_map.cpp scene/2d/collision_object_2d.cpp
#: scene/2d/tile_map.cpp scene/3d/collision_object.cpp scene/3d/soft_body.cpp
+#: scene/resources/material.cpp
msgid "Mask"
msgstr ""
@@ -17260,7 +17709,9 @@ msgid "Ultra Quality Ray Count"
msgstr ""
#: modules/minimp3/audio_stream_mp3.cpp
+#: modules/minimp3/resource_importer_mp3.cpp
#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp
+#: modules/stb_vorbis/resource_importer_ogg_vorbis.cpp
#, fuzzy
msgid "Loop Offset"
msgstr "òfset:"
@@ -18411,6 +18862,192 @@ msgid "The package must have at least one '.' separator."
msgstr "El paquet ha de tenir com a mínim un separador '. '."
#: platform/android/export/export_plugin.cpp
+msgid "Use Custom Build"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Export Format"
+msgstr "Camí d'exportació"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Keystore"
+msgstr "Depurador"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Debug User"
+msgstr "Depurador"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+msgid "Debug Password"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Release User"
+msgstr "alliberat"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Release Password"
+msgstr "alliberat"
+
+#: platform/android/export/export_plugin.cpp
+msgid "One Click Deploy"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Clear Previous Install"
+msgstr "Inspecciona la Instància anterior"
+
+#: platform/android/export/export_plugin.cpp scene/resources/shader.cpp
+msgid "Code"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Min SDK"
+msgstr "Mida del Contorn:"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Target SDK"
+msgstr "Objectiu"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Package"
+msgstr "Compressió"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Unique Name"
+msgstr "Nom del node:"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Signed"
+msgstr "Senyal"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Classify As Game"
+msgstr "Nom de la Classe:"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Retain Data On Uninstall"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Exclude From Recents"
+msgstr "Eliminar Nodes"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Graphics"
+msgstr "òfset de la quadrícula:"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "OpenGL Debug"
+msgstr "OpenGL"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "XR Features"
+msgstr "Característiques"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "XR Mode"
+msgstr "Mode d'Escombratge lateral"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Hand Tracking"
+msgstr "Compressió"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Hand Tracking Frequency"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Passthrough"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Immersive Mode"
+msgstr "Mode Prioritat"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Support Small"
+msgstr "Assistència"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Support Normal"
+msgstr "Assistència"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Support Large"
+msgstr "Assistència"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Support Xlarge"
+msgstr "Assistència"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "User Data Backup"
+msgstr "Interfície d'usuari"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Allow"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Command Line"
+msgstr "Comunitat"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Extra Args"
+msgstr "Arguments de Crida addicionals:"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "APK Expansion"
+msgstr "Canviar Expressió"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Salt"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Public Key"
+msgstr "Duplica les Claus"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Permissions"
+msgstr "Màscara d'Emissió"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Custom Permissions"
+msgstr "Reprodueix Escena Personalitzada"
+
+#: platform/android/export/export_plugin.cpp
msgid "Select device from the list"
msgstr "Selecciona un dispositiu de la llista"
@@ -18735,6 +19372,177 @@ msgid "The character '%s' is not allowed in Identifier."
msgstr "No es permet el caràcter '%s' en l'Identificador."
#: platform/iphone/export/export.cpp
+msgid "App Store Team ID"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Provisioning Profile UUID Debug"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Code Sign Identity Debug"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Export Method Debug"
+msgstr "Exporta en mode Depuració"
+
+#: platform/iphone/export/export.cpp
+msgid "Provisioning Profile UUID Release"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Code Sign Identity Release"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Export Method Release"
+msgstr "Mode d'Exportació:"
+
+#: platform/iphone/export/export.cpp
+msgid "Targeted Device Family"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Info"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Identifier"
+msgstr "Identificador no vàlid:"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Signature"
+msgstr "Senyal"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Short Version"
+msgstr "Versió"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Copyright"
+msgstr "Dreta"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Capabilities"
+msgstr "Propietats"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Access Wi-Fi"
+msgstr "Èxit!"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Push Notifications"
+msgstr "Rotació aleatòria:"
+
+#: platform/iphone/export/export.cpp scene/3d/baked_lightmap.cpp
+#, fuzzy
+msgid "User Data"
+msgstr "Interfície d'usuari"
+
+#: platform/iphone/export/export.cpp
+msgid "Accessible From Files App"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Accessible From Itunes Sharing"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Privacy"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Camera Usage Description"
+msgstr "Descripció"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Microphone Usage Description"
+msgstr "Descripcions de la Propietat"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Photolibrary Usage Description"
+msgstr "Descripcions de la Propietat"
+
+#: platform/iphone/export/export.cpp
+msgid "iPhone 120 X 120"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPhone 180 X 180"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 76 X 76"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 152 X 152"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 167 X 167"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "App Store 1024 X 1024"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Spotlight 40 X 40"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Spotlight 80 X 80"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Storyboard"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Use Launch Screen Storyboard"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Image Scale Mode"
+msgstr "Mode d'Escalat"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Custom Image @2x"
+msgstr "Talla els Nodes"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Custom Image @3x"
+msgstr "Talla els Nodes"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Use Custom BG Color"
+msgstr "Talla els Nodes"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Custom BG Color"
+msgstr "Talla els Nodes"
+
+#: platform/iphone/export/export.cpp
msgid "App Store Team ID not specified - cannot configure the project."
msgstr ""
@@ -18773,6 +19581,80 @@ msgstr "No s'ha pogut escriure el fitxer:"
#: platform/javascript/export/export.cpp
#, fuzzy
+msgid "Variant"
+msgstr "Separació:"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Export Type"
+msgstr "Exportar"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "VRAM Texture Compression"
+msgstr "Canviar Expressió"
+
+#: platform/javascript/export/export.cpp
+msgid "For Desktop"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "For Mobile"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Html"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Export Icon"
+msgstr "Expandir tot"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Custom Html Shell"
+msgstr "Talla els Nodes"
+
+#: platform/javascript/export/export.cpp
+msgid "Head Include"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Canvas Resize Policy"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Focus Canvas On Start"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Experimental Virtual Keyboard"
+msgstr "Filtrat de senyals"
+
+#: platform/javascript/export/export.cpp
+msgid "Progressive Web App"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Offline Page"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 144 X 144"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 180 X 180"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 512 X 512"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
msgid "Could not read HTML shell:"
msgstr "No es pot llegir l'intèrpret personalitzat d’ordres HTML:"
@@ -18888,6 +19770,201 @@ msgid "Unknown object type."
msgstr ""
#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "App Category"
+msgstr "Categoria:"
+
+#: platform/osx/export/export.cpp
+msgid "High Res"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Location Usage Description"
+msgstr "Descripció"
+
+#: platform/osx/export/export.cpp
+msgid "Address Book Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Calendar Usage Description"
+msgstr "Descripció"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Photos Library Usage Description"
+msgstr "Descripcions de la Propietat"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Desktop Folder Usage Description"
+msgstr "Descripcions dels Mètodes"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Documents Folder Usage Description"
+msgstr "Descripcions dels Mètodes"
+
+#: platform/osx/export/export.cpp
+msgid "Downloads Folder Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Network Volumes Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Removable Volumes Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#, fuzzy
+msgid "Codesign"
+msgstr "Node"
+
+#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Identity"
+msgstr "Sagnia Esquerra"
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#, fuzzy
+msgid "Timestamp"
+msgstr "Temps"
+
+#: platform/osx/export/export.cpp
+msgid "Hardened Runtime"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Replace Existing Signature"
+msgstr "Reemplaça-hoTot"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Entitlements"
+msgstr "Gizmos"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Custom File"
+msgstr "Talla els Nodes"
+
+#: platform/osx/export/export.cpp
+msgid "Allow JIT Code Execution"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Allow Unsigned Executable Memory"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Allow Dyld Environment Variables"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Disable Library Validation"
+msgstr "Botó Desactivat"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Audio Input"
+msgstr "Afegeix una Entrada"
+
+#: platform/osx/export/export.cpp
+msgid "Address Book"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Calendars"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Photos Library"
+msgstr "Exporta Biblioteca"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Apple Events"
+msgstr "Afegeix una Incidència"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Debugging"
+msgstr "Depurar"
+
+#: platform/osx/export/export.cpp
+msgid "App Sandbox"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Network Server"
+msgstr "Perfilador de Xarxa"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Network Client"
+msgstr "Perfilador de Xarxa"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Device Usb"
+msgstr "Dispositiu"
+
+#: platform/osx/export/export.cpp
+msgid "Device Bluetooth"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Files Downloads"
+msgstr "Baixa"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Files Pictures"
+msgstr "Característiques"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Files Music"
+msgstr "Fitxer"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Files Movies"
+msgstr "Filtrar tiles"
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#, fuzzy
+msgid "Custom Options"
+msgstr "Opcions del Bus"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Notarization"
+msgstr "Localització"
+
+#: platform/osx/export/export.cpp
+msgid "Apple ID Name"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Apple ID Password"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Apple Team ID"
+msgstr ""
+
+#: platform/osx/export/export.cpp
msgid ""
"Note: The notarization process generally takes less than an hour. When the "
"process is completed, you'll receive an email."
@@ -19084,6 +20161,136 @@ msgstr ""
#: platform/uwp/export/export.cpp
#, fuzzy
+msgid "Architecture"
+msgstr "Afegeix una entrada d'arquitectura"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Display Name"
+msgstr "Mostra-ho tot"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Short Name"
+msgstr "Nom de l'script:"
+
+#: platform/uwp/export/export.cpp
+msgid "Publisher"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Publisher Display Name"
+msgstr "El nom únic del paquet no és vàlid."
+
+#: platform/uwp/export/export.cpp
+msgid "Product Guid"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Publisher Guid"
+msgstr "Reestableix la Postura"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Signing"
+msgstr "Senyal"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Certificate"
+msgstr "Certificats"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Algorithm"
+msgstr "Depurador"
+
+#: platform/uwp/export/export.cpp
+msgid "Major"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Minor"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Build"
+msgstr "Mode Regla"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Revision"
+msgstr "Canviar Expressió"
+
+#: platform/uwp/export/export.cpp
+msgid "Landscape"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Portrait"
+msgstr "Invertir Horitzontalment"
+
+#: platform/uwp/export/export.cpp
+msgid "Landscape Flipped"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Portrait Flipped"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Store Logo"
+msgstr "Mode d'Escalat"
+
+#: platform/uwp/export/export.cpp
+msgid "Square 44 X 44 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 71 X 71 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 150 X 150 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 310 X 310 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Wide 310 X 150 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Splash Screen"
+msgstr "Crides de Dibuix:"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Tiles"
+msgstr "Fitxer"
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Square 150 X 150"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Wide 310 X 150"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Square 310 X 310"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
msgid "Invalid package short name."
msgstr "El nom curt del paquet no és vàlid."
@@ -19152,15 +20359,53 @@ msgid "Debug Certificate"
msgstr ""
#: platform/uwp/export/export.cpp
-msgid "Debug Password"
+#, fuzzy
+msgid "Debug Algorithm"
+msgstr "Depurador"
+
+#: platform/windows/export/export.cpp
+msgid "Identity Type"
msgstr ""
-#: platform/uwp/export/export.cpp
+#: platform/windows/export/export.cpp
+msgid "Timestamp Server URL"
+msgstr ""
+
+#: platform/windows/export/export.cpp
#, fuzzy
-msgid "Debug Algorithm"
+msgid "Digest Algorithm"
msgstr "Depurador"
#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "File Version"
+msgstr "Versió"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Product Version"
+msgstr "GUID del producte no vàlid."
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Company Name"
+msgstr "Nom del node:"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Product Name"
+msgstr "Nom del Projecte:"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "File Description"
+msgstr "Descripció"
+
+#: platform/windows/export/export.cpp
+msgid "Trademarks"
+msgstr ""
+
+#: platform/windows/export/export.cpp
msgid ""
"The rcedit tool must be configured in the Editor Settings (Export > Windows "
"> Rcedit) to change the icon or app information data."
@@ -19237,12 +20482,14 @@ msgstr "Reprodueix"
msgid "Centered"
msgstr "Centre"
-#: scene/2d/animated_sprite.cpp scene/2d/camera_2d.cpp scene/2d/light_2d.cpp
+#: scene/2d/animated_sprite.cpp scene/2d/camera_2d.cpp
+#: scene/2d/cpu_particles_2d.cpp scene/2d/light_2d.cpp
#: scene/2d/parallax_background.cpp scene/2d/parallax_layer.cpp
#: scene/2d/path_2d.cpp scene/2d/polygon_2d.cpp scene/2d/sprite.cpp
-#: scene/3d/path.cpp scene/3d/physics_body.cpp scene/3d/sprite_3d.cpp
-#: scene/gui/graph_node.cpp scene/gui/rich_text_effect.cpp
-#: scene/main/canvas_layer.cpp scene/resources/material.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/path.cpp scene/3d/physics_body.cpp
+#: scene/3d/sprite_3d.cpp scene/gui/graph_node.cpp
+#: scene/gui/rich_text_effect.cpp scene/main/canvas_layer.cpp
+#: scene/resources/material.cpp scene/resources/particles_material.cpp
#: scene/resources/style_box.cpp
#, fuzzy
msgid "Offset"
@@ -19317,11 +20564,6 @@ msgstr "Afegeix un Bus d'Àudio"
msgid "Override"
msgstr "Sobreescriu"
-#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
-#: scene/audio/audio_stream_player.cpp scene/gui/video_player.cpp
-msgid "Stream"
-msgstr ""
-
#: scene/2d/audio_stream_player_2d.cpp scene/audio/audio_stream_player.cpp
#: scene/gui/video_player.cpp servers/audio/effects/audio_effect_amplify.cpp
#, fuzzy
@@ -19348,13 +20590,13 @@ msgid "Stream Paused"
msgstr ""
#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
-#: scene/3d/reflection_probe.cpp scene/3d/visual_instance.cpp
-#: scene/resources/material.cpp
+#: scene/3d/light.cpp scene/3d/reflection_probe.cpp
+#: scene/3d/visual_instance.cpp scene/resources/material.cpp
#, fuzzy
msgid "Max Distance"
msgstr "Trieu la distància:"
-#: scene/2d/audio_stream_player_2d.cpp
+#: scene/2d/audio_stream_player_2d.cpp scene/3d/light.cpp
#, fuzzy
msgid "Attenuation"
msgstr "Animació"
@@ -19410,6 +20652,24 @@ msgstr "Mode de moviment"
msgid "Limit"
msgstr ""
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/style_box.cpp
+#, fuzzy
+msgid "Left"
+msgstr "Esquerra"
+
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/style_box.cpp
+#, fuzzy
+msgid "Right"
+msgstr "Llum"
+
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/dynamic_font.cpp scene/resources/style_box.cpp
+#, fuzzy
+msgid "Bottom"
+msgstr "Vista Inferior"
+
#: scene/2d/camera_2d.cpp
#, fuzzy
msgid "Smoothed"
@@ -19644,13 +20904,6 @@ msgstr ""
msgid "Emitting"
msgstr "Configuració:"
-#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp scene/3d/area.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
-#: scene/resources/environment.cpp
-#, fuzzy
-msgid "Amount"
-msgstr "Quantitat:"
-
#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp
#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
msgid "Lifetime"
@@ -19715,18 +20968,13 @@ msgstr ""
#: scene/2d/mesh_instance_2d.cpp scene/2d/multimesh_instance_2d.cpp
#: scene/2d/particles_2d.cpp scene/2d/polygon_2d.cpp scene/2d/sprite.cpp
#: scene/3d/sprite_3d.cpp scene/gui/nine_patch_rect.cpp
-#: scene/gui/texture_rect.cpp scene/resources/sky.cpp
-#: scene/resources/style_box.cpp scene/resources/visual_shader_nodes.cpp
+#: scene/gui/texture_rect.cpp scene/resources/material.cpp
+#: scene/resources/sky.cpp scene/resources/style_box.cpp
+#: scene/resources/visual_shader_nodes.cpp
#, fuzzy
msgid "Texture"
msgstr "Text"
-#: scene/2d/cpu_particles_2d.cpp scene/2d/mesh_instance_2d.cpp
-#: scene/2d/multimesh_instance_2d.cpp scene/2d/particles_2d.cpp
-#: scene/2d/sprite.cpp scene/resources/style_box.cpp
-msgid "Normal Map"
-msgstr ""
-
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
#, fuzzy
@@ -19750,10 +20998,10 @@ msgid "Normals"
msgstr "Format"
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/3d/sprite_3d.cpp scene/resources/material.cpp
-#: scene/resources/particles_material.cpp scene/resources/texture.cpp
-msgid "Flags"
-msgstr ""
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Align Y"
+msgstr "Assigna"
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
@@ -19774,6 +21022,12 @@ msgid "Initial Velocity"
msgstr "Converteix a Majúscules"
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Velocity Random"
+msgstr "Converteix a Majúscules"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp servers/physics_2d_server.cpp
#: servers/physics_server.cpp
msgid "Angular Velocity"
@@ -19781,6 +21035,12 @@ msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Velocity Curve"
+msgstr "Converteix a Majúscules"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
msgid "Orbit Velocity"
msgstr ""
@@ -19792,6 +21052,23 @@ msgstr "Lineal"
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Accel"
+msgstr "Èxit!"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Accel Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Accel Curve"
+msgstr "Partir Corba"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
msgid "Radial Accel"
msgstr ""
@@ -19801,19 +21078,55 @@ msgid "Tangential Accel"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/2d/joints_2d.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/vehicle_body.cpp
-#: scene/resources/particles_material.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/physics_joint.cpp
+#: scene/3d/vehicle_body.cpp scene/resources/particles_material.cpp
#: servers/audio/effects/audio_effect_reverb.cpp
msgid "Damping"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+msgid "Damping Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Damping Curve"
+msgstr "Partir Corba"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp scene/3d/light.cpp
+#: scene/resources/particles_material.cpp
msgid "Angle"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+msgid "Angle Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Angle Curve"
+msgstr "Tanca la Corba"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#, fuzzy
+msgid "Scale Amount"
+msgstr "Quantitat:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+msgid "Scale Amount Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#, fuzzy
+msgid "Scale Amount Curve"
+msgstr "Escala amb el Cursor"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
#, fuzzy
msgid "Color Ramp"
msgstr "Color"
@@ -19829,6 +21142,48 @@ msgstr ""
msgid "Hue Variation"
msgstr "Separació:"
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Variation"
+msgstr "Separació:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Variation Random"
+msgstr "Separació:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Variation Curve"
+msgstr "Separació:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Speed Random"
+msgstr "Escala"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Speed Curve"
+msgstr "Partir Corba"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Offset Random"
+msgstr "òfset:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Offset Curve"
+msgstr "Tanca la Corba"
+
#: scene/2d/joints_2d.cpp
msgid "Node A and Node B must be PhysicsBody2Ds"
msgstr ""
@@ -19860,6 +21215,7 @@ msgid "Node B"
msgstr "Node"
#: scene/2d/joints_2d.cpp scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp
+#: scene/3d/light.cpp scene/3d/physics_joint.cpp
#: scene/resources/environment.cpp
msgid "Bias"
msgstr ""
@@ -19869,7 +21225,7 @@ msgstr ""
msgid "Disable Collision"
msgstr "Botó Desactivat"
-#: scene/2d/joints_2d.cpp
+#: scene/2d/joints_2d.cpp scene/3d/physics_joint.cpp
msgid "Softness"
msgstr ""
@@ -19887,7 +21243,7 @@ msgstr "Converteix a Majúscules"
msgid "Rest Length"
msgstr ""
-#: scene/2d/joints_2d.cpp scene/3d/vehicle_body.cpp
+#: scene/2d/joints_2d.cpp scene/3d/physics_joint.cpp scene/3d/vehicle_body.cpp
msgid "Stiffness"
msgstr ""
@@ -19911,7 +21267,7 @@ msgid "Texture Scale"
msgstr "Regió de Textura"
#: scene/2d/light_2d.cpp scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp
-#: scene/resources/environment.cpp scene/resources/sky.cpp
+#: scene/3d/light.cpp scene/resources/environment.cpp scene/resources/sky.cpp
msgid "Energy"
msgstr ""
@@ -19952,12 +21308,6 @@ msgstr "Vista Posterior"
msgid "Gradient Length"
msgstr "Degradat Editat"
-#: scene/2d/light_2d.cpp scene/gui/control.cpp
-#: scene/resources/navigation_mesh.cpp
-#, fuzzy
-msgid "Filter"
-msgstr "Filtres:"
-
#: scene/2d/light_2d.cpp
#, fuzzy
msgid "Filter Smooth"
@@ -20392,11 +21742,6 @@ msgid "Applied Forces"
msgstr ""
#: scene/2d/physics_body_2d.cpp
-#, fuzzy
-msgid "Force"
-msgstr "Malla d'Origen:"
-
-#: scene/2d/physics_body_2d.cpp
msgid "Torque"
msgstr ""
@@ -20412,7 +21757,7 @@ msgstr "Fotograma de Física %"
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
#, fuzzy
-msgid "Moving platform"
+msgid "Moving Platform"
msgstr "Plataforma"
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
@@ -20421,7 +21766,7 @@ msgstr ""
#: scene/2d/physics_body_2d.cpp scene/2d/touch_screen_button.cpp
#: scene/3d/physics_body.cpp scene/gui/texture_button.cpp
-#: scene/resources/line_shape_2d.cpp
+#: scene/resources/line_shape_2d.cpp scene/resources/material.cpp
#, fuzzy
msgid "Normal"
msgstr "Format"
@@ -20669,6 +22014,34 @@ msgstr ""
"Un node VisibilityEnable2D funcionarà millor en ser emparentat directament "
"amb l'arrel de l'escena."
+#: scene/2d/visibility_notifier_2d.cpp scene/3d/visibility_notifier.cpp
+#, fuzzy
+msgid "Pause Animations"
+msgstr "Enganxa l'Animació"
+
+#: scene/2d/visibility_notifier_2d.cpp scene/3d/visibility_notifier.cpp
+msgid "Freeze Bodies"
+msgstr ""
+
+#: scene/2d/visibility_notifier_2d.cpp
+#, fuzzy
+msgid "Pause Particles"
+msgstr "Partícules"
+
+#: scene/2d/visibility_notifier_2d.cpp
+#, fuzzy
+msgid "Pause Animated Sprites"
+msgstr "Enganxa l'Animació"
+
+#: scene/2d/visibility_notifier_2d.cpp
+#, fuzzy
+msgid "Process Parent"
+msgstr "Habilitar Prioritat"
+
+#: scene/2d/visibility_notifier_2d.cpp
+msgid "Physics Process Parent"
+msgstr ""
+
#: scene/3d/area.cpp
msgid "Reverb Bus"
msgstr ""
@@ -20773,6 +22146,7 @@ msgid "Attenuation Filter"
msgstr ""
#: scene/3d/audio_stream_player_3d.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
#: servers/audio/effects/audio_effect_filter.cpp
msgid "Cutoff Hz"
msgstr ""
@@ -20817,11 +22191,6 @@ msgid "Octree"
msgstr "Subarbre"
#: scene/3d/baked_lightmap.cpp
-#, fuzzy
-msgid "User Data"
-msgstr "Interfície d'usuari"
-
-#: scene/3d/baked_lightmap.cpp
msgid "Finding meshes and lights"
msgstr ""
@@ -21097,6 +22466,16 @@ msgid "Ring Axis"
msgstr "Avisos"
#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Rotate Y"
+msgstr "Rotar"
+
+#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Disable Z"
+msgstr "Element Desactivat"
+
+#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
msgid "Flatness"
msgstr ""
@@ -21137,16 +22516,11 @@ msgstr "Biblioteca Dinàmica"
msgid "Dynamic Range"
msgstr "Biblioteca Dinàmica"
-#: scene/3d/gi_probe.cpp
+#: scene/3d/gi_probe.cpp scene/3d/light.cpp
msgid "Normal Bias"
msgstr ""
#: scene/3d/gi_probe.cpp
-#, fuzzy
-msgid "Compress"
-msgstr "Components"
-
-#: scene/3d/gi_probe.cpp
msgid "Plotting Meshes"
msgstr "S'estàn traçant les Malles"
@@ -21176,16 +22550,31 @@ msgstr ""
#: scene/3d/light.cpp
#, fuzzy
+msgid "Indirect Energy"
+msgstr "Colors d'Emissió"
+
+#: scene/3d/light.cpp
+#, fuzzy
msgid "Negative"
msgstr "GDNative"
#: scene/3d/light.cpp
#, fuzzy
+msgid "Specular"
+msgstr "Mode Regla"
+
+#: scene/3d/light.cpp
+#, fuzzy
msgid "Bake Mode"
msgstr "Mode màscara de bits"
#: scene/3d/light.cpp
#, fuzzy
+msgid "Contact"
+msgstr "Tria un Color"
+
+#: scene/3d/light.cpp
+#, fuzzy
msgid "Reverse Cull Face"
msgstr "Restableix el Volum del Bus"
@@ -21196,11 +22585,31 @@ msgstr "Direccions"
#: scene/3d/light.cpp
#, fuzzy
+msgid "Split 1"
+msgstr "Parteix el Camí"
+
+#: scene/3d/light.cpp
+#, fuzzy
+msgid "Split 2"
+msgstr "Parteix el Camí"
+
+#: scene/3d/light.cpp
+#, fuzzy
+msgid "Split 3"
+msgstr "Parteix el Camí"
+
+#: scene/3d/light.cpp
+#, fuzzy
msgid "Blend Splits"
msgstr "Temps de mescla:"
#: scene/3d/light.cpp
#, fuzzy
+msgid "Bias Split Scale"
+msgstr "Utilitzar Ajustament d'Escalat"
+
+#: scene/3d/light.cpp
+#, fuzzy
msgid "Depth Range"
msgstr "Profunditat"
@@ -21228,6 +22637,11 @@ msgstr ""
msgid "Spot"
msgstr ""
+#: scene/3d/light.cpp
+#, fuzzy
+msgid "Angle Attenuation"
+msgstr "Animació"
+
#: scene/3d/mesh_instance.cpp
msgid "Software Skinning"
msgstr ""
@@ -21361,6 +22775,63 @@ msgstr "Eix"
#: scene/3d/physics_body.cpp
#, fuzzy
+msgid "Linear X"
+msgstr "Lineal"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Linear Y"
+msgstr "Lineal"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Linear Z"
+msgstr "Lineal"
+
+#: scene/3d/physics_body.cpp
+msgid "Angular X"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Angular Y"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Angular Z"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Motion X"
+msgstr "Acció"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Motion Y"
+msgstr "Acció"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Motion Z"
+msgstr "Acció"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Move Lock X"
+msgstr "Moure Node"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Move Lock Y"
+msgstr "Moure Node"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Move Lock Z"
+msgstr "Moure Node"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
msgid "Body Offset"
msgstr "òfset:"
@@ -21394,6 +22865,15 @@ msgid "Exclude Nodes"
msgstr "Eliminar Nodes"
#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Params"
+msgstr "Paràmetre Canviat:"
+
+#: scene/3d/physics_joint.cpp
+msgid "Impulse Clamp"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit"
msgstr ""
@@ -21407,6 +22887,55 @@ msgstr "Majúscules"
msgid "Lower"
msgstr "Minúscula"
+#: scene/3d/physics_joint.cpp scene/3d/vehicle_body.cpp
+#, fuzzy
+msgid "Relaxation"
+msgstr "Separació:"
+
+#: scene/3d/physics_joint.cpp
+msgid "Motor"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Target Velocity"
+msgstr "Converteix a Majúscules"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Max Impulse"
+msgstr "Velocitat (FPS):"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit"
+msgstr "Lineal"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Upper Distance"
+msgstr "Trieu la distància:"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Lower Distance"
+msgstr "Trieu la distància:"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Restitution"
+msgstr "Descripció"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motion"
+msgstr "Converteix a Majúscules"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Ortho"
+msgstr "Ortogonal"
+
#: scene/3d/physics_joint.cpp
#, fuzzy
msgid "Upper Angle"
@@ -21419,6 +22948,16 @@ msgstr "Minúscula"
#: scene/3d/physics_joint.cpp
#, fuzzy
+msgid "Angular Motion"
+msgstr "Animació"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Angular Ortho"
+msgstr "Error Angular Max.:"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
msgid "Swing Span"
msgstr "S'està desant l'Escena"
@@ -21427,17 +22966,99 @@ msgid "Twist Span"
msgstr ""
#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit X"
+msgstr "Lineal"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motor X"
+msgstr "Converteix a Majúscules"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Force Limit"
+msgstr "Crides de Dibuix:"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Spring X"
+msgstr "Lineal"
+
+#: scene/3d/physics_joint.cpp
+msgid "Equilibrium Point"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit X"
msgstr ""
#: scene/3d/physics_joint.cpp
+msgid "Erp"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Motor X"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Spring X"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit Y"
+msgstr "Lineal"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motor Y"
+msgstr "Converteix a Majúscules"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Spring Y"
+msgstr "Lineal"
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit Y"
msgstr ""
#: scene/3d/physics_joint.cpp
+msgid "Angular Motor Y"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Spring Y"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit Z"
+msgstr "Lineal"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motor Z"
+msgstr "Converteix a Majúscules"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Spring Z"
+msgstr "Lineal"
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit Z"
msgstr ""
+#: scene/3d/physics_joint.cpp
+msgid "Angular Motor Z"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Spring Z"
+msgstr ""
+
#: scene/3d/portal.cpp
msgid "The RoomManager should not be a child or grandchild of a Portal."
msgstr ""
@@ -21556,7 +23177,7 @@ msgstr ""
msgid "Use Default Simplify"
msgstr ""
-#: scene/3d/room.cpp
+#: scene/3d/room.cpp scene/3d/room_manager.cpp
msgid "Room Simplify"
msgstr ""
@@ -21595,6 +23216,13 @@ msgstr ""
msgid "Main"
msgstr ""
+#: scene/3d/room_manager.cpp scene/animation/animation_player.cpp
+#: scene/animation/animation_tree.cpp scene/animation/animation_tree_player.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+#, fuzzy
+msgid "Active"
+msgstr "Acció"
+
#: scene/3d/room_manager.cpp
msgid "Roomlist"
msgstr ""
@@ -21619,6 +23247,54 @@ msgid "Gameplay"
msgstr ""
#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Gameplay Monitor"
+msgstr "Monitor"
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Use Secondary PVS"
+msgstr "Utilitzar Ajustament d'Escalat"
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Merge Meshes"
+msgstr "Malla"
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Show Margins"
+msgstr "Mostra l'Origen"
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Debug Sprawl"
+msgstr "Depurar"
+
+#: scene/3d/room_manager.cpp
+msgid "Overlap Warning Threshold"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Preview Camera"
+msgstr "Previsualització"
+
+#: scene/3d/room_manager.cpp
+msgid "Portal Depth Limit"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Default Portal Margin"
+msgstr "Establir Marge"
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Roaming Expansion Margin"
+msgstr "Expandir tot"
+
+#: scene/3d/room_manager.cpp
msgid ""
"RoomList path is invalid.\n"
"Please check the RoomList branch has been assigned in the RoomManager."
@@ -21749,6 +23425,20 @@ msgstr "Ajustament de Píxels"
msgid "Billboard"
msgstr ""
+#: scene/3d/sprite_3d.cpp scene/resources/material.cpp
+#, fuzzy
+msgid "Transparent"
+msgstr "Transposa"
+
+#: scene/3d/sprite_3d.cpp
+#, fuzzy
+msgid "Shaded"
+msgstr "Shader"
+
+#: scene/3d/sprite_3d.cpp
+msgid "Double Sided"
+msgstr ""
+
#: scene/3d/sprite_3d.cpp
msgid "Alpha Cut"
msgstr ""
@@ -21825,11 +23515,6 @@ msgstr "Canviar Expressió"
msgid "Max Force"
msgstr "Error"
-#: scene/3d/vehicle_body.cpp
-#, fuzzy
-msgid "Relaxation"
-msgstr "Separació:"
-
#: scene/3d/visibility_notifier.cpp
msgid "AABB"
msgstr ""
@@ -21971,7 +23656,7 @@ msgstr "Durada de la fosa (s):"
#: scene/animation/animation_blend_tree.cpp
#, fuzzy
-msgid "autorestart_"
+msgid "Auto Restart"
msgstr "Reinici automàtic :"
#: scene/animation/animation_blend_tree.cpp
@@ -22057,13 +23742,6 @@ msgstr "Opcions de Classe:"
msgid "Default Blend Time"
msgstr "Predeterminat"
-#: scene/animation/animation_player.cpp scene/animation/animation_tree.cpp
-#: scene/animation/animation_tree_player.cpp
-#: servers/audio/effects/audio_effect_delay.cpp
-#, fuzzy
-msgid "Active"
-msgstr "Acció"
-
#: scene/animation/animation_player.cpp
msgid "Method Call Mode"
msgstr ""
@@ -22191,10 +23869,6 @@ msgstr "Torna a Parentar el Node"
msgid "Max Iterations"
msgstr "Reanomena Funció"
-#: scene/animation/tween.cpp scene/resources/texture.cpp
-msgid "Repeat"
-msgstr ""
-
#: scene/animation/tween.cpp
msgid "Playback Process Mode"
msgstr ""
@@ -22225,20 +23899,6 @@ msgstr "Mode de selecció"
msgid "Alignment"
msgstr ""
-#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
-#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
-#: scene/resources/style_box.cpp
-#, fuzzy
-msgid "Horizontal"
-msgstr "Horitzontal:"
-
-#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
-#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
-#: scene/resources/style_box.cpp
-#, fuzzy
-msgid "Vertical"
-msgstr "Vertical:"
-
#: scene/gui/base_button.cpp
#, fuzzy
msgid "Shortcut In Tooltip"
@@ -22342,10 +24002,6 @@ msgid "HSV"
msgstr "HSV"
#: scene/gui/color_picker.cpp
-msgid "Raw"
-msgstr ""
-
-#: scene/gui/color_picker.cpp
msgid "Switch between hexadecimal and code values."
msgstr "Canviar entre valors hexadecimals i de codi."
@@ -22407,6 +24063,31 @@ msgid "Focus"
msgstr "Enfoca Camí"
#: scene/gui/control.cpp
+msgid "Neighbour Left"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Neighbour Top"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Neighbour Right"
+msgstr ""
+
+#: scene/gui/control.cpp
+#, fuzzy
+msgid "Neighbour Bottom"
+msgstr "Part inferior"
+
+#: scene/gui/control.cpp
+msgid "Next"
+msgstr "Següent"
+
+#: scene/gui/control.cpp
+msgid "Previous"
+msgstr "Anterior"
+
+#: scene/gui/control.cpp
msgid "Mouse"
msgstr ""
@@ -22444,7 +24125,7 @@ msgid "Dialog"
msgstr "Diàleg XForm"
#: scene/gui/dialogs.cpp
-msgid "Hide On Ok"
+msgid "Hide On OK"
msgstr ""
#: scene/gui/dialogs.cpp scene/gui/label.cpp
@@ -22543,7 +24224,7 @@ msgid "Timers"
msgstr "Temps"
#: scene/gui/item_list.cpp scene/gui/popup_menu.cpp scene/gui/tree.cpp
-msgid "Incremental Search Max Interval (msec)"
+msgid "Incremental Search Max Interval Msec"
msgstr ""
#: scene/gui/item_list.cpp scene/gui/tree.cpp
@@ -23129,6 +24810,26 @@ msgstr "Sagnia Esquerra"
msgid "Nine Patch Stretch"
msgstr "Mode d'Interpolació"
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Left"
+msgstr "Establir Marge"
+
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Top"
+msgstr "Establir Marge"
+
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Right"
+msgstr "Establir Marge"
+
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Bottom"
+msgstr "Mode de selecció"
+
#: scene/gui/tree.cpp
msgid "Custom Minimum Height"
msgstr ""
@@ -23166,8 +24867,9 @@ msgid "Paused"
msgstr ""
#: scene/gui/video_player.cpp
-msgid "Buffering (msec)"
-msgstr ""
+#, fuzzy
+msgid "Buffering Msec"
+msgstr "Vista Posterior"
#: scene/gui/video_player.cpp
#, fuzzy
@@ -23522,6 +25224,22 @@ msgid "Shadow Atlas"
msgstr "Nou %s"
#: scene/main/viewport.cpp
+msgid "Quad 0"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 1"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 2"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 3"
+msgstr ""
+
+#: scene/main/viewport.cpp
#, fuzzy
msgid "Canvas Transform"
msgstr "Restablir Transformació"
@@ -23536,6 +25254,11 @@ msgid "Tooltip Delay (sec)"
msgstr ""
#: scene/register_scene_types.cpp
+#, fuzzy
+msgid "Swap OK Cancel"
+msgstr "Cancel·la"
+
+#: scene/register_scene_types.cpp
msgid "Use hiDPI"
msgstr ""
@@ -23550,21 +25273,6 @@ msgid "Custom Font"
msgstr "Talla els Nodes"
#: scene/resources/audio_stream_sample.cpp
-#, fuzzy
-msgid "Loop Mode"
-msgstr "Mode de moviment"
-
-#: scene/resources/audio_stream_sample.cpp
-#, fuzzy
-msgid "Loop Begin"
-msgstr "Mode de moviment"
-
-#: scene/resources/audio_stream_sample.cpp
-#, fuzzy
-msgid "Loop End"
-msgstr "Mode de moviment"
-
-#: scene/resources/audio_stream_sample.cpp
#: servers/audio/effects/audio_stream_generator.cpp servers/audio_server.cpp
#, fuzzy
msgid "Mix Rate"
@@ -23624,6 +25332,17 @@ msgstr "Opcions Extra:"
#: scene/resources/dynamic_font.cpp
#, fuzzy
+msgid "Char"
+msgstr "Caràcters vàlids:"
+
+#: scene/resources/dynamic_font.cpp scene/resources/world.cpp
+#: scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Space"
+msgstr "Escena Principal"
+
+#: scene/resources/dynamic_font.cpp
+#, fuzzy
msgid "Font"
msgstr "Lletra"
@@ -23851,6 +25570,43 @@ msgid "Glow"
msgstr ""
#: scene/resources/environment.cpp
+#, fuzzy
+msgid "Levels"
+msgstr "Desenvolupadors"
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "1"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "2"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "3"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "4"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "5"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "6"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "7"
+msgstr ""
+
+#: scene/resources/environment.cpp
msgid "Bloom"
msgstr ""
@@ -23943,10 +25699,68 @@ msgid "Next Pass"
msgstr "Pla següent"
#: scene/resources/material.cpp
+msgid "Use Shadow To Opacity"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Unshaded"
+msgstr "Mostra sense Ombreig"
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Vertex Lighting"
+msgstr "Direccions"
+
+#: scene/resources/material.cpp
+msgid "No Depth Test"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Use Point Size"
+msgstr "Vista Frontal"
+
+#: scene/resources/material.cpp
+msgid "World Triplanar"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Fixed Size"
+msgstr "Vista Frontal"
+
+#: scene/resources/material.cpp
+msgid "Albedo Tex Force sRGB"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Do Not Receive Shadows"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Disable Ambient Light"
+msgstr "Sagnia Dreta"
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Ensure Correct Normals"
+msgstr "S'ha interromput la Transformació ."
+
+#: scene/resources/material.cpp
#, fuzzy
msgid "Vertex Color"
msgstr "Vèrtex"
+#: scene/resources/material.cpp
+msgid "Use As Albedo"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Is sRGB"
+msgstr ""
+
#: scene/resources/material.cpp servers/visual_server.cpp
#, fuzzy
msgid "Parameters"
@@ -23983,6 +25797,11 @@ msgid "Billboard Mode"
msgstr "Mode Regla"
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Billboard Keep Scale"
+msgstr "Mode Regla"
+
+#: scene/resources/material.cpp
msgid "Grow"
msgstr ""
@@ -23992,6 +25811,10 @@ msgid "Grow Amount"
msgstr "Quantitat:"
#: scene/resources/material.cpp
+msgid "Use Alpha Scissor"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Alpha Scissor Threshold"
msgstr ""
@@ -24023,10 +25846,20 @@ msgid "Metallic Specular"
msgstr ""
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Metallic Texture"
+msgstr "Font d'Emissió: "
+
+#: scene/resources/material.cpp
msgid "Metallic Texture Channel"
msgstr ""
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Roughness Texture"
+msgstr "Eliminar Textura"
+
+#: scene/resources/material.cpp
msgid "Roughness Texture Channel"
msgstr ""
@@ -24046,6 +25879,16 @@ msgid "Emission Operator"
msgstr "Colors d'Emissió"
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Emission On UV2"
+msgstr "Màscara d'Emissió"
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Emission Texture"
+msgstr "Font d'Emissió: "
+
+#: scene/resources/material.cpp
msgid "NormalMap"
msgstr ""
@@ -24060,6 +25903,11 @@ msgstr "Inclinació aleatòria:"
#: scene/resources/material.cpp
#, fuzzy
+msgid "Rim Texture"
+msgstr "Eliminar Textura"
+
+#: scene/resources/material.cpp
+#, fuzzy
msgid "Clearcoat"
msgstr "Neteja"
@@ -24069,15 +25917,28 @@ msgid "Clearcoat Gloss"
msgstr "Reestableix la Postura"
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Clearcoat Texture"
+msgstr "Editar Tema"
+
+#: scene/resources/material.cpp
msgid "Anisotropy"
msgstr ""
#: scene/resources/material.cpp
+msgid "Anisotropy Flowmap"
+msgstr ""
+
+#: scene/resources/material.cpp
#, fuzzy
msgid "Ambient Occlusion"
msgstr "Mode Oclusió"
#: scene/resources/material.cpp
+msgid "On UV2"
+msgstr ""
+
+#: scene/resources/material.cpp
#, fuzzy
msgid "Texture Channel"
msgstr "Regió de Textura"
@@ -24116,6 +25977,11 @@ msgstr "Transició: "
#: scene/resources/material.cpp
#, fuzzy
+msgid "Transmission Texture"
+msgstr "Transició: "
+
+#: scene/resources/material.cpp
+#, fuzzy
msgid "Refraction"
msgstr "Separació:"
@@ -24134,6 +26000,10 @@ msgid "UV1"
msgstr "UV"
#: scene/resources/material.cpp
+msgid "Triplanar"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Triplanar Sharpness"
msgstr ""
@@ -24344,6 +26214,16 @@ msgstr "Editar Tema"
msgid "Point Count"
msgstr "Afegeix una Entrada"
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Scale Random"
+msgstr "Relació d'Escala:"
+
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Scale Curve"
+msgstr "Tanca la Corba"
+
#: scene/resources/physics_material.cpp
msgid "Rough"
msgstr ""
@@ -24406,10 +26286,6 @@ msgid "A"
msgstr ""
#: scene/resources/shader.cpp
-msgid "Code"
-msgstr ""
-
-#: scene/resources/shader.cpp
#, fuzzy
msgid "Custom Defines"
msgstr "Reprodueix Escena Personalitzada"
@@ -24506,15 +26382,6 @@ msgstr ""
#: scene/resources/texture.cpp
#, fuzzy
-msgid "Storage"
-msgstr "Emmagatzemant Fitxer:"
-
-#: scene/resources/texture.cpp
-msgid "Lossy Quality"
-msgstr ""
-
-#: scene/resources/texture.cpp
-#, fuzzy
msgid "Load Path"
msgstr "Carrega un ajustament"
@@ -24645,11 +26512,6 @@ msgstr "Font no vàlida pel Shader."
msgid "Fallback Environment"
msgstr "Mostra l'Entorn"
-#: scene/resources/world.cpp scene/resources/world_2d.cpp
-#, fuzzy
-msgid "Space"
-msgstr "Escena Principal"
-
#: scene/resources/world.cpp
#, fuzzy
msgid "Scenario"
@@ -24730,10 +26592,37 @@ msgstr ""
msgid "Wet"
msgstr ""
-#: servers/audio/effects/audio_effect_compressor.cpp
-msgid "Threshold"
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "Voice"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+msgid "Delay (ms)"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_phaser.cpp
+msgid "Rate Hz"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#, fuzzy
+msgid "Depth (ms)"
+msgstr "Profunditat"
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+msgid "Level dB"
msgstr ""
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+#: servers/audio/effects/audio_effect_panner.cpp
+#, fuzzy
+msgid "Pan"
+msgstr "Pla:"
+
#: servers/audio/effects/audio_effect_compressor.cpp
#: servers/audio/effects/audio_effect_filter.cpp
msgid "Gain"
@@ -24757,20 +26646,6 @@ msgid "Tap 1"
msgstr ""
#: servers/audio/effects/audio_effect_delay.cpp
-msgid "Delay (ms)"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_delay.cpp
-msgid "Level dB"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_delay.cpp
-#: servers/audio/effects/audio_effect_panner.cpp
-#, fuzzy
-msgid "Pan"
-msgstr "Pla:"
-
-#: servers/audio/effects/audio_effect_delay.cpp
msgid "Tap 2"
msgstr ""
@@ -24832,10 +26707,6 @@ msgstr ""
msgid "Range Max Hz"
msgstr ""
-#: servers/audio/effects/audio_effect_phaser.cpp
-msgid "Rate Hz"
-msgstr ""
-
#: servers/audio/effects/audio_effect_pitch_shift.cpp
msgid "Oversampling"
msgstr ""
@@ -24851,7 +26722,7 @@ msgid "Predelay"
msgstr ""
#: servers/audio/effects/audio_effect_reverb.cpp
-msgid "(msec)"
+msgid "Msec"
msgstr ""
#: servers/audio/effects/audio_effect_reverb.cpp
@@ -25228,9 +27099,8 @@ msgid "Ninepatch Mode"
msgstr "Mode d'Interpolació"
#: servers/visual_server.cpp
-#, fuzzy
msgid "OpenGL"
-msgstr "Obre"
+msgstr "OpenGL"
#: servers/visual_server.cpp
msgid "Batching Send Null"
diff --git a/editor/translations/cs.po b/editor/translations/cs.po
index b5ffff54cc..29a045d39c 100644
--- a/editor/translations/cs.po
+++ b/editor/translations/cs.po
@@ -35,8 +35,8 @@ msgstr ""
"Project-Id-Version: Godot Engine editor\n"
"Report-Msgid-Bugs-To: https://github.com/godotengine/godot\n"
"POT-Creation-Date: \n"
-"PO-Revision-Date: 2022-03-17 13:58+0000\n"
-"Last-Translator: JoeMoos <josephmoose13@gmail.com>\n"
+"PO-Revision-Date: 2022-03-21 22:22+0000\n"
+"Last-Translator: Petr Voparil <voparil.petr96@gmail.com>\n"
"Language-Team: Czech <https://hosted.weblate.org/projects/godot-engine/godot/"
"cs/>\n"
"Language: cs\n"
@@ -46,23 +46,21 @@ msgstr ""
"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
"X-Generator: Weblate 4.12-dev\n"
-#: core/bind/core_bind.cpp
+#: core/bind/core_bind.cpp main/main.cpp
msgid "Tablet Driver"
msgstr ""
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Clipboard"
-msgstr "Schránka je prázdná!"
+msgstr "Schránka"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Current Screen"
-msgstr "Aktuální scéna"
+msgstr "Aktuální obrazovka"
#: core/bind/core_bind.cpp
msgid "Exit Code"
-msgstr ""
+msgstr "Kód pro ukonÄení (exit code)"
#: core/bind/core_bind.cpp
#, fuzzy
@@ -150,15 +148,14 @@ msgstr "Pozice doku"
#: core/bind/core_bind.cpp editor/editor_settings.cpp main/main.cpp
#: modules/gdscript/gdscript_editor.cpp modules/gridmap/grid_map.cpp
#: modules/mono/csharp_script.cpp modules/visual_script/visual_script_nodes.cpp
-#: scene/2d/tile_map.cpp scene/3d/camera.cpp scene/gui/control.cpp
-#: scene/gui/graph_edit.cpp scene/main/viewport.cpp
+#: scene/2d/tile_map.cpp scene/3d/camera.cpp scene/3d/light.cpp
+#: scene/gui/control.cpp scene/gui/graph_edit.cpp scene/main/viewport.cpp
#: scene/resources/dynamic_font.cpp scene/resources/navigation_mesh.cpp
#: scene/resources/primitive_meshes.cpp scene/resources/sky.cpp
#: scene/resources/style_box.cpp scene/resources/texture.cpp
#: scene/resources/visual_shader.cpp servers/visual_server.cpp
-#, fuzzy
msgid "Size"
-msgstr "Velikost:"
+msgstr "Velikost"
#: core/bind/core_bind.cpp
msgid "Endian Swap"
@@ -256,8 +253,7 @@ msgid "Data"
msgstr "S daty"
#: core/io/file_access_network.cpp core/register_core_types.cpp
-#: editor/editor_settings.cpp editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp main/main.cpp
+#: editor/editor_settings.cpp main/main.cpp
#: modules/gdscript/language_server/gdscript_language_server.cpp
#, fuzzy
msgid "Network"
@@ -542,9 +538,10 @@ msgstr "Profil"
msgid "Relative"
msgstr "Přichytávat relativně"
-#: core/os/input_event.cpp scene/2d/camera_2d.cpp
-#: scene/3d/interpolated_camera.cpp scene/animation/animation_player.cpp
-#: scene/resources/environment.cpp
+#: core/os/input_event.cpp scene/2d/camera_2d.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/interpolated_camera.cpp
+#: scene/animation/animation_player.cpp scene/resources/environment.cpp
+#: scene/resources/particles_material.cpp
#, fuzzy
msgid "Speed"
msgstr "Rychlost:"
@@ -594,8 +591,9 @@ msgstr "Commitnout změny"
msgid "Pitch"
msgstr "Stoupání:"
-#: core/os/input_event.cpp scene/2d/physics_body_2d.cpp
-#: scene/3d/physics_body.cpp
+#: core/os/input_event.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/physics_body_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/3d/physics_body.cpp scene/resources/particles_material.cpp
#, fuzzy
msgid "Velocity"
msgstr "Inicializovat"
@@ -614,6 +612,8 @@ msgid "Controller Value"
msgstr ""
#: core/project_settings.cpp editor/editor_node.cpp main/main.cpp
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/windows/export/export.cpp
#, fuzzy
msgid "Application"
msgstr "Akce"
@@ -632,13 +632,16 @@ msgstr "Nastavení projektu..."
#: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp
#: editor/editor_plugin_settings.cpp editor/editor_profiler.cpp
#: editor/project_manager.cpp editor/settings_config_dialog.cpp
-#: modules/gdnative/nativescript/nativescript.cpp scene/2d/area_2d.cpp
-#: scene/3d/area.cpp scene/main/node.cpp
+#: modules/gdnative/nativescript/nativescript.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/osx/export/export.cpp scene/2d/area_2d.cpp scene/3d/area.cpp
+#: scene/main/node.cpp
msgid "Name"
msgstr "Název"
#: core/project_settings.cpp editor/editor_help.cpp
-#: modules/visual_script/visual_script_nodes.cpp
+#: modules/visual_script/visual_script_nodes.cpp platform/uwp/export/export.cpp
+#: platform/windows/export/export.cpp
msgid "Description"
msgstr "Popis"
@@ -676,7 +679,7 @@ msgid "Custom User Dir Name"
msgstr ""
#: core/project_settings.cpp editor/animation_track_editor.cpp
-#: editor/editor_audio_buses.cpp servers/audio_server.cpp
+#: editor/editor_audio_buses.cpp main/main.cpp servers/audio_server.cpp
msgid "Audio"
msgstr "Zvuk"
@@ -844,10 +847,13 @@ msgstr "Filtry:"
msgid "Sharpen Intensity"
msgstr ""
-#: core/project_settings.cpp editor/editor_node.cpp editor/editor_settings.cpp
-#: editor/plugins/script_editor_plugin.cpp editor/project_export.cpp
-#: main/main.cpp modules/gdscript/gdscript.cpp
-#: modules/visual_script/visual_script.cpp scene/3d/room_manager.cpp
+#: core/project_settings.cpp editor/editor_export.cpp editor/editor_node.cpp
+#: editor/editor_settings.cpp editor/plugins/script_editor_plugin.cpp
+#: editor/project_export.cpp main/main.cpp modules/gdscript/gdscript.cpp
+#: modules/visual_script/visual_script.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp scene/3d/room_manager.cpp
#: scene/main/scene_tree.cpp scene/resources/shape_2d.cpp
#: servers/visual_server.cpp
msgid "Debug"
@@ -1083,6 +1089,7 @@ msgid "Subsurface Scattering"
msgstr ""
#: drivers/gles3/rasterizer_scene_gles3.cpp
+#: editor/import/resource_importer_texture.cpp
#: editor/plugins/spatial_editor_plugin.cpp modules/gltf/gltf_node.cpp
#: modules/gridmap/grid_map.cpp scene/2d/cpu_particles_2d.cpp
#: scene/2d/node_2d.cpp scene/2d/parallax_layer.cpp scene/2d/polygon_2d.cpp
@@ -1383,6 +1390,7 @@ msgid "Editors"
msgstr "Editor"
#: editor/animation_track_editor.cpp editor/editor_settings.cpp
+#: editor/import/resource_importer_scene.cpp
#: editor/plugins/animation_player_editor_plugin.cpp editor/scene_tree_dock.cpp
#: scene/2d/animated_sprite.cpp scene/2d/cpu_particles_2d.cpp
#: scene/2d/sprite.cpp scene/3d/cpu_particles.cpp scene/3d/sprite_3d.cpp
@@ -1617,14 +1625,14 @@ msgstr "Hodnota animaÄního kroku."
msgid "Seconds"
msgstr "Sekundy"
-#: editor/animation_track_editor.cpp
+#: editor/animation_track_editor.cpp editor/import/resource_importer_scene.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp main/main.cpp
#: scene/resources/texture.cpp
msgid "FPS"
msgstr "FPS"
#: editor/animation_track_editor.cpp editor/editor_plugin_settings.cpp
-#: editor/editor_resource_picker.cpp
+#: editor/editor_resource_picker.cpp editor/import/resource_importer_wav.cpp
#: editor/plugins/polygon_2d_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
@@ -2587,7 +2595,9 @@ msgid "Remove Autoload"
msgstr "Odstranit Autoload"
#: editor/editor_autoload_settings.cpp editor/editor_plugin_settings.cpp
-#: modules/gdscript/gdscript.cpp scene/2d/polygon_2d.cpp scene/3d/area.cpp
+#: modules/gdscript/gdscript.cpp platform/android/export/export_plugin.cpp
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#: scene/2d/polygon_2d.cpp scene/3d/area.cpp scene/3d/physics_joint.cpp
#: scene/3d/reflection_probe.cpp scene/main/canvas_layer.cpp
#: scene/resources/material.cpp servers/visual_server.cpp
msgid "Enable"
@@ -2756,6 +2766,58 @@ msgstr ""
#: editor/editor_export.cpp platform/android/export/export_plugin.cpp
#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Custom Template"
+msgstr "Motiv editoru"
+
+#: editor/editor_export.cpp editor/project_export.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp
+msgid "Release"
+msgstr "Vydání"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Binary Format"
+msgstr "Operátor barvy."
+
+#: editor/editor_export.cpp
+msgid "64 Bits"
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Embed PCK"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Texture Format"
+msgstr "Oblast textury"
+
+#: editor/editor_export.cpp
+msgid "BPTC"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "S3TC"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "ETC"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "ETC2"
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "No BPTC Fallbacks"
+msgstr ""
+
+#: editor/editor_export.cpp platform/android/export/export_plugin.cpp
+#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
msgid "Custom debug template not found."
msgstr "Vlastní ladící šablona nebyla nalezena."
@@ -2932,6 +2994,7 @@ msgid "Make Current"
msgstr "Zvolit jako aktuální"
#: editor/editor_feature_profile.cpp editor/editor_node.cpp
+#: editor/import/resource_importer_scene.cpp
#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
msgid "Import"
msgstr "Import"
@@ -3059,8 +3122,11 @@ msgstr "Úspěch!"
msgid "Display Mode"
msgstr "Režim přehrávání:"
-#: editor/editor_file_dialog.cpp main/main.cpp modules/csg/csg_shape.cpp
-#: modules/visual_script/visual_script_nodes.cpp
+#: editor/editor_file_dialog.cpp
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+#: editor/import/resource_importer_wav.cpp main/main.cpp
+#: modules/csg/csg_shape.cpp modules/visual_script/visual_script_nodes.cpp
#: modules/visual_script/visual_script_yield_nodes.cpp scene/2d/light_2d.cpp
#: scene/2d/physics_body_2d.cpp scene/2d/tile_map.cpp
#: scene/3d/baked_lightmap.cpp scene/3d/light.cpp scene/3d/physics_body.cpp
@@ -3199,7 +3265,9 @@ msgstr "(Re)Importování assetů"
msgid "Reimport Missing Imported Files"
msgstr ""
-#: editor/editor_help.cpp
+#: editor/editor_help.cpp scene/2d/camera_2d.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/resources/dynamic_font.cpp
+#: scene/resources/style_box.cpp
msgid "Top"
msgstr "Horní"
@@ -3252,6 +3320,7 @@ msgid "Fonts"
msgstr "Fonty"
#: editor/editor_help.cpp editor/plugins/theme_editor_plugin.cpp
+#: platform/iphone/export/export.cpp
msgid "Icons"
msgstr "Ikony"
@@ -3421,7 +3490,9 @@ msgstr ""
msgid "Pin value [Disabled because '%s' is editor-only]"
msgstr ""
-#: editor/editor_inspector.cpp editor/scene_tree_dock.cpp
+#: editor/editor_inspector.cpp
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+#: editor/scene_tree_dock.cpp
#: modules/visual_script/visual_script_func_nodes.cpp
#: modules/visual_script/visual_script_nodes.cpp
#: modules/visual_script/visual_script_property_selector.cpp
@@ -3763,6 +3834,16 @@ msgid "Quick Open Script..."
msgstr "Rychle otevřít skript..."
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Save & Reload"
+msgstr "Uložit a restartovat"
+
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Save changes to '%s' before reloading?"
+msgstr "Uložit změny '%s' před zavřením?"
+
+#: editor/editor_node.cpp
msgid "Save & Close"
msgstr "Uložit a zavřít"
@@ -3879,6 +3960,11 @@ msgid "Open Project Manager?"
msgstr "Otevřít Správce projektu?"
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Save changes to the following scene(s) before reloading?"
+msgstr "Uložit zmÄ›ny následujících scén pÅ™ed ukonÄením?"
+
+#: editor/editor_node.cpp
msgid "Save & Quit"
msgstr "Uložit a ukonÄit"
@@ -4150,8 +4236,8 @@ msgstr "Změny materiálu:"
#: editor/editor_node.cpp
#, fuzzy
-msgid "Translate Properties"
-msgstr "Vložit vlastnosti"
+msgid "Localize Settings"
+msgstr "Lokalizace"
#: editor/editor_node.cpp
#, fuzzy
@@ -4168,8 +4254,8 @@ msgstr "Inspektor"
#: editor/editor_node.cpp
#, fuzzy
-msgid "Capitalize Properties"
-msgstr "Vložit vlastnosti"
+msgid "Default Property Name Style"
+msgstr "Cesta k projektu:"
#: editor/editor_node.cpp
msgid "Default Float Step"
@@ -4769,7 +4855,9 @@ msgstr "Nainstalované pluginy:"
msgid "Update"
msgstr "Aktualizovat"
-#: editor/editor_plugin_settings.cpp
+#: editor/editor_plugin_settings.cpp platform/android/export/export_plugin.cpp
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp
msgid "Version"
msgstr "Verze"
@@ -5811,7 +5899,7 @@ msgstr "Celý obdélník"
msgid "Rect Custom Position"
msgstr "Nastavit bod z křivky"
-#: editor/editor_settings.cpp
+#: editor/editor_settings.cpp platform/android/export/export_plugin.cpp
msgid "Screen"
msgstr ""
@@ -5838,6 +5926,19 @@ msgid "Editor SSL Certificates"
msgstr "Nastavení editoru"
#: editor/editor_settings.cpp
+msgid "HTTP Proxy"
+msgstr ""
+
+#: editor/editor_settings.cpp
+msgid "Host"
+msgstr ""
+
+#: editor/editor_settings.cpp editor/fileserver/editor_file_server.cpp
+#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp
+msgid "Port"
+msgstr ""
+
+#: editor/editor_settings.cpp
msgid "Project Manager"
msgstr "Správce projektů"
@@ -5880,7 +5981,8 @@ msgstr ""
msgid "String Color"
msgstr "Ukládám soubor:"
-#: editor/editor_settings.cpp
+#: editor/editor_settings.cpp platform/javascript/export/export.cpp
+#: platform/uwp/export/export.cpp
#, fuzzy
msgid "Background Color"
msgstr "Neplatná barva pozadí."
@@ -6059,22 +6161,6 @@ msgid "Starting the download..."
msgstr "Zahájení stahování..."
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "HTTP Proxy"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Host"
-msgstr ""
-
-#: editor/export_template_manager.cpp editor/fileserver/editor_file_server.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp main/main.cpp
-#: modules/mono/mono_gd/gd_mono.cpp
-msgid "Port"
-msgstr ""
-
-#: editor/export_template_manager.cpp
msgid "Error requesting URL:"
msgstr "Chyba žádosti o URL:"
@@ -6325,6 +6411,7 @@ msgstr ""
#: editor/fileserver/editor_file_server.cpp
#: editor/plugins/version_control_editor_plugin.cpp
+#: platform/uwp/export/export.cpp platform/windows/export/export.cpp
msgid "Password"
msgstr ""
@@ -6707,6 +6794,117 @@ msgstr ""
msgid "Use Ambient"
msgstr ""
+#: editor/import/resource_importer_bitmask.cpp
+#, fuzzy
+msgid "Create From"
+msgstr "Vytvořit složku"
+
+#: editor/import/resource_importer_bitmask.cpp
+#: servers/audio/effects/audio_effect_compressor.cpp
+msgid "Threshold"
+msgstr ""
+
+#: editor/import/resource_importer_csv_translation.cpp
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_scene.cpp
+#: editor/import/resource_importer_texture.cpp
+#: editor/import/resource_importer_wav.cpp scene/3d/gi_probe.cpp
+#, fuzzy
+msgid "Compress"
+msgstr "Komponenty"
+
+#: editor/import/resource_importer_csv_translation.cpp
+msgid "Delimiter"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+msgid "No BPTC If RGB"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/sprite_3d.cpp
+#: scene/resources/material.cpp scene/resources/particles_material.cpp
+#: scene/resources/texture.cpp
+msgid "Flags"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/animation/tween.cpp
+#: scene/resources/texture.cpp
+msgid "Repeat"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/2d/light_2d.cpp
+#: scene/gui/control.cpp scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Filter"
+msgstr "Filtry:"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Mipmaps"
+msgstr "Signály"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+msgid "Anisotropic"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+msgid "sRGB"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#, fuzzy
+msgid "Slices"
+msgstr "Automatický řez"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
+#: scene/resources/style_box.cpp
+#, fuzzy
+msgid "Horizontal"
+msgstr "Horizonálně:"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
+#: scene/resources/style_box.cpp
+#, fuzzy
+msgid "Vertical"
+msgstr "Vertikálně:"
+
+#: editor/import/resource_importer_obj.cpp
+#, fuzzy
+msgid "Generate Tangents"
+msgstr "Generovat body"
+
+#: editor/import/resource_importer_obj.cpp
+#, fuzzy
+msgid "Scale Mesh"
+msgstr "Režim škálování"
+
+#: editor/import/resource_importer_obj.cpp
+#, fuzzy
+msgid "Offset Mesh"
+msgstr "Offset(Posun):"
+
+#: editor/import/resource_importer_obj.cpp
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Octahedral Compression"
+msgstr "Nastavit výraz"
+
+#: editor/import/resource_importer_obj.cpp
+#, fuzzy
+msgid "Optimize Mesh Flags"
+msgstr "Velikost: "
+
#: editor/import/resource_importer_scene.cpp
msgid "Import as Single Scene"
msgstr "Importovat jako jednu scénu"
@@ -6747,6 +6945,156 @@ msgstr "Importovat jako více scén"
msgid "Import as Multiple Scenes+Materials"
msgstr "Importovat jako více scén a materiálů"
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Nodes"
+msgstr "Uzel"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Root Type"
+msgstr "Typ Älena"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Root Name"
+msgstr "Vzdálené Jméno"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Root Scale"
+msgstr "Měřítko"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Custom Script"
+msgstr "Vyjmout uzly"
+
+#: editor/import/resource_importer_scene.cpp scene/resources/texture.cpp
+#, fuzzy
+msgid "Storage"
+msgstr "Ukládám soubor:"
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Use Legacy Names"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+#, fuzzy
+msgid "Materials"
+msgstr "Změny materiálu:"
+
+#: editor/import/resource_importer_scene.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Location"
+msgstr "Lokalizace"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Keep On Reimport"
+msgstr "Znovu importovat"
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+#, fuzzy
+msgid "Meshes"
+msgstr "Sítě (Mesh)"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Ensure Tangents"
+msgstr "Upravit teÄnu kÅ™ivky"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Light Baking"
+msgstr "Zapéct lightmapy"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Lightmap Texel Size"
+msgstr "Zapéct lightmapy"
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+msgid "Skins"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Use Named Skins"
+msgstr "Použít škálovací přichytávání"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "External Files"
+msgstr "Otevřít soubor"
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Store In Subdir"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Filter Script"
+msgstr "Filtrovat skripty"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Keep Custom Tracks"
+msgstr "Transformace"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Optimizer"
+msgstr "Optimalizuj"
+
+#: editor/import/resource_importer_scene.cpp main/main.cpp
+#: modules/mono/mono_gd/gd_mono.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp scene/2d/camera_2d.cpp scene/2d/light_2d.cpp
+#: scene/2d/navigation_polygon.cpp scene/2d/ray_cast_2d.cpp scene/2d/sprite.cpp
+#: scene/2d/y_sort.cpp scene/3d/audio_stream_player_3d.cpp
+#: scene/3d/baked_lightmap.cpp scene/3d/interpolated_camera.cpp
+#: scene/3d/light.cpp scene/3d/navigation_mesh_instance.cpp
+#: scene/3d/physics_joint.cpp scene/3d/ray_cast.cpp scene/3d/sprite_3d.cpp
+#: scene/gui/graph_edit.cpp scene/gui/rich_text_label.cpp
+#: scene/resources/curve.cpp scene/resources/environment.cpp
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Enabled"
+msgstr "Povolit"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Max Linear Error"
+msgstr "Maximální lineární chyba:"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Max Angular Error"
+msgstr "Maximální úhlová chyba:"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Max Angle"
+msgstr "Hodnota"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Remove Unused Tracks"
+msgstr "Odstranit stopu animace"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Clips"
+msgstr "AnimaÄní klipy"
+
+#: editor/import/resource_importer_scene.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/particles_2d.cpp scene/3d/area.cpp scene/3d/cpu_particles.cpp
+#: scene/3d/particles.cpp scene/resources/environment.cpp
+#, fuzzy
+msgid "Amount"
+msgstr "Množství:"
+
#: editor/import/resource_importer_scene.cpp
#: editor/plugins/mesh_library_editor_plugin.cpp
msgid "Import Scene"
@@ -6788,12 +7136,149 @@ msgstr "Vrátili jste objekt, který dědí z Node metodou `post_import()`?"
msgid "Saving..."
msgstr "Ukládání..."
+#: editor/import/resource_importer_texture.cpp scene/resources/texture.cpp
+msgid "Lossy Quality"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "HDR Mode"
+msgstr "Režim výběru"
+
+#: editor/import/resource_importer_texture.cpp
+msgid "BPTC LDR"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/mesh_instance_2d.cpp scene/2d/multimesh_instance_2d.cpp
+#: scene/2d/particles_2d.cpp scene/2d/sprite.cpp scene/resources/style_box.cpp
+msgid "Normal Map"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Process"
+msgstr "Následné zpracování"
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Fix Alpha Border"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Premult Alpha"
+msgstr "Editovat polygon"
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Hdr As Srgb"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Invert Color"
+msgstr "Vrchol"
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Normal Map Invert Y"
+msgstr "Náhodné měřítko:"
+
+#: editor/import/resource_importer_texture.cpp
+#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
+#: scene/audio/audio_stream_player.cpp scene/gui/video_player.cpp
+msgid "Stream"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Size Limit"
+msgstr "Velikost: "
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Detect 3D"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "SVG"
+msgstr "HSV"
+
#: editor/import/resource_importer_texture.cpp
msgid ""
"Warning, no suitable PC VRAM compression enabled in Project Settings. This "
"texture will not display correctly on PC."
msgstr ""
+#: editor/import/resource_importer_texture_atlas.cpp
+#, fuzzy
+msgid "Atlas File"
+msgstr "Velikost obrysu:"
+
+#: editor/import/resource_importer_texture_atlas.cpp
+#, fuzzy
+msgid "Import Mode"
+msgstr "Expertní režim:"
+
+#: editor/import/resource_importer_texture_atlas.cpp
+#, fuzzy
+msgid "Crop To Region"
+msgstr "Nastavit oblast textury"
+
+#: editor/import/resource_importer_texture_atlas.cpp
+msgid "Trim Alpha Border From Region"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp scene/2d/physics_body_2d.cpp
+#, fuzzy
+msgid "Force"
+msgstr "Vnutit nahrátí"
+
+#: editor/import/resource_importer_wav.cpp
+msgid "8 Bit"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp main/main.cpp
+#: modules/mono/editor/csharp_project.cpp modules/mono/mono_gd/gd_mono.cpp
+msgid "Mono"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+#, fuzzy
+msgid "Max Rate"
+msgstr "Uzel Mix"
+
+#: editor/import/resource_importer_wav.cpp
+#, fuzzy
+msgid "Max Rate Hz"
+msgstr "Uzel Mix"
+
+#: editor/import/resource_importer_wav.cpp
+msgid "Trim"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+#, fuzzy
+msgid "Normalize"
+msgstr "Formát"
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+#, fuzzy
+msgid "Loop Mode"
+msgstr "Režim přesouvání"
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+#, fuzzy
+msgid "Loop Begin"
+msgstr "Režim přesouvání"
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+#, fuzzy
+msgid "Loop End"
+msgstr "Režim přesouvání"
+
#: editor/import_defaults_editor.cpp
msgid "Select Importer"
msgstr "Vybrat Importér"
@@ -6868,6 +7353,29 @@ msgid "Failed to load resource."
msgstr "Selhalo nahrání zdroje."
#: editor/inspector_dock.cpp
+#, fuzzy
+msgid "Property Name Style"
+msgstr "Jméno projektu:"
+
+#: editor/inspector_dock.cpp scene/gui/color_picker.cpp
+msgid "Raw"
+msgstr "Surový"
+
+#: editor/inspector_dock.cpp
+#, fuzzy
+msgid "Capitalized"
+msgstr "Velká Písmena"
+
+#: editor/inspector_dock.cpp
+#, fuzzy
+msgid "Localized"
+msgstr "Jazyky"
+
+#: editor/inspector_dock.cpp
+msgid "Localization not available for current language."
+msgstr ""
+
+#: editor/inspector_dock.cpp
msgid "Copy Properties"
msgstr "Kopírovat vlastnosti"
@@ -7910,18 +8418,26 @@ msgid "License (Z-A)"
msgstr "Licence (Z-A)"
#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgctxt "Pagination"
msgid "First"
msgstr "První"
-#: editor/plugins/asset_library_editor_plugin.cpp scene/gui/control.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgctxt "Pagination"
msgid "Previous"
msgstr "Předchozí"
-#: editor/plugins/asset_library_editor_plugin.cpp scene/gui/control.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgctxt "Pagination"
msgid "Next"
msgstr "Další"
#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgctxt "Pagination"
msgid "Last"
msgstr "Poslední"
@@ -8170,19 +8686,19 @@ msgstr ""
"Když je aktivní, pohybující se Control uzly mění svoje ukotvení, namísto "
"jejich okrajů."
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Top Left"
msgstr "Vlevo nahoře"
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Top Right"
msgstr "Vpravo nahoře"
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Bottom Right"
msgstr "Vpravo dole"
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Bottom Left"
msgstr "Vlevo dole"
@@ -8900,6 +9416,19 @@ msgstr "Zapéct GI probe"
msgid "Gradient Edited"
msgstr "Gradient upraven"
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+msgid "Swap GradientTexture2D Fill Points"
+msgstr ""
+
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+msgid "Swap Gradient Fill Points"
+msgstr ""
+
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+#, fuzzy
+msgid "Toggle Grid Snap"
+msgstr "Přepnout režim"
+
#: editor/plugins/item_list_editor_plugin.cpp
msgid "Item %d"
msgstr "Položka %d"
@@ -9132,8 +9661,9 @@ msgstr ""
"Aktualizovat z existující scény?:\n"
"%s"
-#: editor/plugins/mesh_library_editor_plugin.cpp modules/gridmap/grid_map.cpp
-msgid "Mesh Library"
+#: editor/plugins/mesh_library_editor_plugin.cpp
+#, fuzzy
+msgid "MeshLibrary"
msgstr "Knihovna modelů"
#: editor/plugins/mesh_library_editor_plugin.cpp
@@ -10123,8 +10653,8 @@ msgstr "Připojení k metodě:"
msgid "Source"
msgstr "Zdroj"
-#: editor/plugins/script_text_editor.cpp scene/3d/interpolated_camera.cpp
-#: scene/animation/skeleton_ik.cpp
+#: editor/plugins/script_text_editor.cpp platform/uwp/export/export.cpp
+#: scene/3d/interpolated_camera.cpp scene/animation/skeleton_ik.cpp
msgid "Target"
msgstr "Cíl"
@@ -11113,7 +11643,9 @@ msgstr "Rychlost:"
#: editor/plugins/sprite_frames_editor_plugin.cpp
#: modules/gltf/gltf_animation.cpp modules/minimp3/audio_stream_mp3.cpp
-#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp scene/2d/path_2d.cpp
+#: modules/minimp3/resource_importer_mp3.cpp
+#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp
+#: modules/stb_vorbis/resource_importer_ogg_vorbis.cpp scene/2d/path_2d.cpp
#: scene/3d/path.cpp scene/resources/animation.cpp scene/resources/material.cpp
msgid "Loop"
msgstr "SmyÄka"
@@ -12030,8 +12562,9 @@ msgstr "Bitmaska"
msgid "Priority"
msgstr "Priorita"
-#: editor/plugins/tile_set_editor_plugin.cpp main/main.cpp scene/gui/button.cpp
-#: scene/gui/item_list.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp main/main.cpp
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#: scene/gui/button.cpp scene/gui/item_list.cpp
msgid "Icon"
msgstr "Ikona"
@@ -13417,10 +13950,6 @@ msgstr ""
"nastavení exportu."
#: editor/project_export.cpp
-msgid "Release"
-msgstr "Vydání"
-
-#: editor/project_export.cpp
msgid "Exporting All"
msgstr "Exportování všeho"
@@ -15281,6 +15810,7 @@ msgid "Change AudioStreamPlayer3D Emission Angle"
msgstr "Změnit úhel vysílání uzlu AudioStreamPlayer3D"
#: editor/spatial_editor_gizmos.cpp modules/gltf/gltf_node.cpp
+#: platform/osx/export/export.cpp
msgid "Camera"
msgstr ""
@@ -15568,7 +16098,8 @@ msgstr ""
msgid "Use Nvidia Rect Flicker Workaround"
msgstr ""
-#: main/main.cpp platform/uwp/os_uwp.cpp
+#: main/main.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp platform/uwp/os_uwp.cpp
#, fuzzy
msgid "Display"
msgstr "Zobrazit všechny"
@@ -15629,19 +16160,6 @@ msgstr ""
msgid "Allowed"
msgstr ""
-#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp scene/2d/camera_2d.cpp
-#: scene/2d/light_2d.cpp scene/2d/navigation_polygon.cpp
-#: scene/2d/ray_cast_2d.cpp scene/2d/sprite.cpp scene/2d/y_sort.cpp
-#: scene/3d/audio_stream_player_3d.cpp scene/3d/baked_lightmap.cpp
-#: scene/3d/interpolated_camera.cpp scene/3d/light.cpp
-#: scene/3d/navigation_mesh_instance.cpp scene/3d/ray_cast.cpp
-#: scene/3d/sprite_3d.cpp scene/gui/graph_edit.cpp
-#: scene/gui/rich_text_label.cpp scene/resources/curve.cpp
-#: scene/resources/environment.cpp
-#, fuzzy
-msgid "Enabled"
-msgstr "Povolit"
-
#: main/main.cpp
msgid "Intended Usage"
msgstr ""
@@ -15673,13 +16191,14 @@ msgstr ""
msgid "Handheld"
msgstr ""
-#: main/main.cpp
+#: main/main.cpp platform/javascript/export/export.cpp
+#: platform/uwp/export/export.cpp
#, fuzzy
msgid "Orientation"
msgstr "Online dokumentace"
#: main/main.cpp scene/gui/scroll_container.cpp scene/gui/text_edit.cpp
-#: scene/main/scene_tree.cpp
+#: scene/main/scene_tree.cpp scene/register_scene_types.cpp
#, fuzzy
msgid "Common"
msgstr "Komunita"
@@ -15722,7 +16241,7 @@ msgstr ""
#: main/main.cpp
#, fuzzy
-msgid "Frame Delay (msec)"
+msgid "Frame Delay Msec"
msgstr "Výběr snímku"
#: main/main.cpp
@@ -15850,11 +16369,6 @@ msgstr ""
msgid "Tooltip Position Offset"
msgstr "Offset rotace:"
-#: main/main.cpp modules/mono/editor/csharp_project.cpp
-#: modules/mono/mono_gd/gd_mono.cpp
-msgid "Mono"
-msgstr ""
-
#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp
#, fuzzy
msgid "Debugger Agent"
@@ -16433,7 +16947,7 @@ msgstr "Barvy"
msgid "Intensity"
msgstr ""
-#: modules/gltf/gltf_light.cpp scene/2d/light_2d.cpp
+#: modules/gltf/gltf_light.cpp scene/2d/light_2d.cpp scene/3d/light.cpp
#, fuzzy
msgid "Range"
msgstr "Změnit"
@@ -16580,11 +17094,6 @@ msgstr "S daty"
msgid "Use Named Skin Binds"
msgstr ""
-#: modules/gltf/gltf_state.cpp scene/3d/physics_joint.cpp
-#, fuzzy
-msgid "Nodes"
-msgstr "Uzel"
-
#: modules/gltf/gltf_state.cpp
#, fuzzy
msgid "Buffer Views"
@@ -16596,16 +17105,6 @@ msgstr ""
#: modules/gltf/gltf_state.cpp
#, fuzzy
-msgid "Meshes"
-msgstr "Sítě (Mesh)"
-
-#: modules/gltf/gltf_state.cpp
-#, fuzzy
-msgid "Materials"
-msgstr "Změny materiálu:"
-
-#: modules/gltf/gltf_state.cpp
-#, fuzzy
msgid "Scene Name"
msgstr "Cesta ke scéně:"
@@ -16621,15 +17120,11 @@ msgstr "Název kořenového uzlu"
msgid "Textures"
msgstr "Vlastnosti"
-#: modules/gltf/gltf_state.cpp
+#: modules/gltf/gltf_state.cpp platform/uwp/export/export.cpp
msgid "Images"
msgstr ""
#: modules/gltf/gltf_state.cpp
-msgid "Skins"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp
msgid "Cameras"
msgstr ""
@@ -16664,11 +17159,15 @@ msgid "Src Image"
msgstr "Zobrazit kosti"
#: modules/gridmap/grid_map.cpp
+msgid "Mesh Library"
+msgstr "Knihovna modelů"
+
+#: modules/gridmap/grid_map.cpp
#, fuzzy
msgid "Physics Material"
msgstr "Fyzikální snímek %"
-#: modules/gridmap/grid_map.cpp
+#: modules/gridmap/grid_map.cpp scene/3d/visual_instance.cpp
#, fuzzy
msgid "Use In Baked Light"
msgstr "Zapéct lightmapy"
@@ -16700,6 +17199,7 @@ msgstr "Uprostřed"
#: modules/gridmap/grid_map.cpp scene/2d/collision_object_2d.cpp
#: scene/2d/tile_map.cpp scene/3d/collision_object.cpp scene/3d/soft_body.cpp
+#: scene/resources/material.cpp
msgid "Mask"
msgstr ""
@@ -16882,7 +17382,9 @@ msgid "Ultra Quality Ray Count"
msgstr ""
#: modules/minimp3/audio_stream_mp3.cpp
+#: modules/minimp3/resource_importer_mp3.cpp
#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp
+#: modules/stb_vorbis/resource_importer_ogg_vorbis.cpp
#, fuzzy
msgid "Loop Offset"
msgstr "Offset(Posun):"
@@ -17996,6 +18498,192 @@ msgid "The package must have at least one '.' separator."
msgstr "BalíÄek musí mít alespoň jeden '.' oddÄ›lovaÄ."
#: platform/android/export/export_plugin.cpp
+msgid "Use Custom Build"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Export Format"
+msgstr "Exportovat cestu"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Keystore"
+msgstr "Ladicí program"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Debug User"
+msgstr "Ladicí program"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+msgid "Debug Password"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Release User"
+msgstr "Vydání"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Release Password"
+msgstr "Vydání"
+
+#: platform/android/export/export_plugin.cpp
+msgid "One Click Deploy"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Clear Previous Install"
+msgstr "Zkontrolovat předchozí instanci"
+
+#: platform/android/export/export_plugin.cpp scene/resources/shader.cpp
+msgid "Code"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Min SDK"
+msgstr "Velikost obrysu:"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Target SDK"
+msgstr "Cíl"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Package"
+msgstr "Balím"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Unique Name"
+msgstr "Název uzlu:"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Signed"
+msgstr "Signál"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Classify As Game"
+msgstr "Jméno třídy:"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Retain Data On Uninstall"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Exclude From Recents"
+msgstr "Smazat uzly"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Graphics"
+msgstr "Offset mřížky:"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "OpenGL Debug"
+msgstr "Otevřít"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "XR Features"
+msgstr "Vlastnosti"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "XR Mode"
+msgstr "Režim posouvání"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Hand Tracking"
+msgstr "Balím"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Hand Tracking Frequency"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Passthrough"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Immersive Mode"
+msgstr "Prioritní mód"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Support Small"
+msgstr "Podpora"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Support Normal"
+msgstr "Podpora"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Support Large"
+msgstr "Podpora"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Support Xlarge"
+msgstr "Podpora"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "User Data Backup"
+msgstr "Uživatelské rozhraní"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Allow"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Command Line"
+msgstr "Komunita"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Extra Args"
+msgstr "Další argumenty volání:"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "APK Expansion"
+msgstr "Nastavit výraz"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Salt"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Public Key"
+msgstr "Fyzická Klávesa"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Permissions"
+msgstr "Emisní maska"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Custom Permissions"
+msgstr "Přehrát upravenou scénu"
+
+#: platform/android/export/export_plugin.cpp
msgid "Select device from the list"
msgstr "Vyberte zařízení ze seznamu"
@@ -18317,6 +19005,178 @@ msgid "The character '%s' is not allowed in Identifier."
msgstr "Znak '%s' není dovolen v identifikátoru."
#: platform/iphone/export/export.cpp
+msgid "App Store Team ID"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Provisioning Profile UUID Debug"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Code Sign Identity Debug"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Export Method Debug"
+msgstr "Exportovat s laděním"
+
+#: platform/iphone/export/export.cpp
+msgid "Provisioning Profile UUID Release"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Code Sign Identity Release"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Export Method Release"
+msgstr "Expertní režim:"
+
+#: platform/iphone/export/export.cpp
+msgid "Targeted Device Family"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Info"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Identifier"
+msgstr "Neplatný identifikátor:"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Signature"
+msgstr "Signál"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Short Version"
+msgstr "Verze"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Copyright"
+msgstr "Vpravo nahoře"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Capabilities"
+msgstr "Vložit vlastnosti"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Access Wi-Fi"
+msgstr "Úspěch!"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Push Notifications"
+msgstr "Náhodná rotace:"
+
+#: platform/iphone/export/export.cpp scene/3d/baked_lightmap.cpp
+#, fuzzy
+msgid "User Data"
+msgstr "Uživatelské rozhraní"
+
+#: platform/iphone/export/export.cpp
+msgid "Accessible From Files App"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Accessible From Itunes Sharing"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Privacy"
+msgstr "Fyzická Klávesa"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Camera Usage Description"
+msgstr "Popis"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Microphone Usage Description"
+msgstr "Popisy vlastnosti"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Photolibrary Usage Description"
+msgstr "Popisy vlastnosti"
+
+#: platform/iphone/export/export.cpp
+msgid "iPhone 120 X 120"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPhone 180 X 180"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 76 X 76"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 152 X 152"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 167 X 167"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "App Store 1024 X 1024"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Spotlight 40 X 40"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Spotlight 80 X 80"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Storyboard"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Use Launch Screen Storyboard"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Image Scale Mode"
+msgstr "Režim škálování"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Custom Image @2x"
+msgstr "Vyjmout uzly"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Custom Image @3x"
+msgstr "Vyjmout uzly"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Use Custom BG Color"
+msgstr "Vyjmout uzly"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Custom BG Color"
+msgstr "Vyjmout uzly"
+
+#: platform/iphone/export/export.cpp
msgid "App Store Team ID not specified - cannot configure the project."
msgstr "App Store Team ID nebyla poskytnuta - projekt nelze konfigurovat."
@@ -18354,6 +19214,80 @@ msgstr "Nelze pÅ™eÄíst soubor:"
#: platform/javascript/export/export.cpp
#, fuzzy
+msgid "Variant"
+msgstr "Oddělení:"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Export Type"
+msgstr "Export"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "VRAM Texture Compression"
+msgstr "Nastavit výraz"
+
+#: platform/javascript/export/export.cpp
+msgid "For Desktop"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "For Mobile"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Html"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Export Icon"
+msgstr "Rozbalit vše"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Custom Html Shell"
+msgstr "Vyjmout uzly"
+
+#: platform/javascript/export/export.cpp
+msgid "Head Include"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Canvas Resize Policy"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Focus Canvas On Start"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Experimental Virtual Keyboard"
+msgstr "Filtrovat signály"
+
+#: platform/javascript/export/export.cpp
+msgid "Progressive Web App"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Offline Page"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 144 X 144"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 180 X 180"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 512 X 512"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
msgid "Could not read HTML shell:"
msgstr "Nebylo možné pÅ™eÄíst HTML shell:"
@@ -18467,6 +19401,201 @@ msgid "Unknown object type."
msgstr ""
#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "App Category"
+msgstr "Kategorie:"
+
+#: platform/osx/export/export.cpp
+msgid "High Res"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Location Usage Description"
+msgstr "Popis"
+
+#: platform/osx/export/export.cpp
+msgid "Address Book Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Calendar Usage Description"
+msgstr "Popis"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Photos Library Usage Description"
+msgstr "Popisy vlastnosti"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Desktop Folder Usage Description"
+msgstr "Popisy metod"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Documents Folder Usage Description"
+msgstr "Popisy metod"
+
+#: platform/osx/export/export.cpp
+msgid "Downloads Folder Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Network Volumes Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Removable Volumes Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#, fuzzy
+msgid "Codesign"
+msgstr "Uzel"
+
+#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Identity"
+msgstr "Odsadit zleva"
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#, fuzzy
+msgid "Timestamp"
+msgstr "ÄŒas"
+
+#: platform/osx/export/export.cpp
+msgid "Hardened Runtime"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Replace Existing Signature"
+msgstr "Nahradit všechny"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Entitlements"
+msgstr "Gizma"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Custom File"
+msgstr "Vyjmout uzly"
+
+#: platform/osx/export/export.cpp
+msgid "Allow JIT Code Execution"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Allow Unsigned Executable Memory"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Allow Dyld Environment Variables"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Disable Library Validation"
+msgstr "Deaktivované tlaÄítko"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Audio Input"
+msgstr "Přidat vstup"
+
+#: platform/osx/export/export.cpp
+msgid "Address Book"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Calendars"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Photos Library"
+msgstr "Exportovat knihovnu"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Apple Events"
+msgstr "Přidat akci"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Debugging"
+msgstr "Ladění"
+
+#: platform/osx/export/export.cpp
+msgid "App Sandbox"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Network Server"
+msgstr "Síťový profiler"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Network Client"
+msgstr "Síťový profiler"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Device Usb"
+msgstr "Zařízení"
+
+#: platform/osx/export/export.cpp
+msgid "Device Bluetooth"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Files Downloads"
+msgstr "Stáhnout"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Files Pictures"
+msgstr "Vlastnosti"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Files Music"
+msgstr "Soubor"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Files Movies"
+msgstr "Filtrovat dlaždice"
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#, fuzzy
+msgid "Custom Options"
+msgstr "Možnosti sběrnice"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Notarization"
+msgstr "Lokalizace"
+
+#: platform/osx/export/export.cpp
+msgid "Apple ID Name"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Apple ID Password"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Apple Team ID"
+msgstr ""
+
+#: platform/osx/export/export.cpp
msgid ""
"Note: The notarization process generally takes less than an hour. When the "
"process is completed, you'll receive an email."
@@ -18659,6 +19788,136 @@ msgid "Force Builtin Codesign"
msgstr ""
#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Architecture"
+msgstr "Přidat záznam architektury"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Display Name"
+msgstr "Zobrazit všechny"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Short Name"
+msgstr "Název skriptu:"
+
+#: platform/uwp/export/export.cpp
+msgid "Publisher"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Publisher Display Name"
+msgstr "Neplatný unikátní název vydavatele balíÄku."
+
+#: platform/uwp/export/export.cpp
+msgid "Product Guid"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Publisher Guid"
+msgstr "Vymazat vodítka"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Signing"
+msgstr "Signál"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Certificate"
+msgstr "Vrcholy:"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Algorithm"
+msgstr "Ladicí program"
+
+#: platform/uwp/export/export.cpp
+msgid "Major"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Minor"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Build"
+msgstr "Režim pravítka"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Revision"
+msgstr "Nastavit výraz"
+
+#: platform/uwp/export/export.cpp
+msgid "Landscape"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Portrait"
+msgstr "Převrátit portály"
+
+#: platform/uwp/export/export.cpp
+msgid "Landscape Flipped"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Portrait Flipped"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Store Logo"
+msgstr "Režim škálování"
+
+#: platform/uwp/export/export.cpp
+msgid "Square 44 X 44 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 71 X 71 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 150 X 150 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 310 X 310 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Wide 310 X 150 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Splash Screen"
+msgstr "Vykreslovací volání:"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Tiles"
+msgstr "Soubor"
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Square 150 X 150"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Wide 310 X 150"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Square 310 X 310"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
msgid "Invalid package short name."
msgstr "Neplatné krátké jméno balíÄku."
@@ -18724,15 +19983,53 @@ msgid "Debug Certificate"
msgstr ""
#: platform/uwp/export/export.cpp
-msgid "Debug Password"
+#, fuzzy
+msgid "Debug Algorithm"
+msgstr "Ladicí program"
+
+#: platform/windows/export/export.cpp
+msgid "Identity Type"
msgstr ""
-#: platform/uwp/export/export.cpp
+#: platform/windows/export/export.cpp
+msgid "Timestamp Server URL"
+msgstr ""
+
+#: platform/windows/export/export.cpp
#, fuzzy
-msgid "Debug Algorithm"
+msgid "Digest Algorithm"
msgstr "Ladicí program"
#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "File Version"
+msgstr "Verze"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Product Version"
+msgstr "Neplatné GUID produktu."
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Company Name"
+msgstr "Název uzlu:"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Product Name"
+msgstr "Jméno projektu:"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "File Description"
+msgstr "Popis"
+
+#: platform/windows/export/export.cpp
+msgid "Trademarks"
+msgstr ""
+
+#: platform/windows/export/export.cpp
msgid ""
"The rcedit tool must be configured in the Editor Settings (Export > Windows "
"> Rcedit) to change the icon or app information data."
@@ -18805,12 +20102,14 @@ msgstr "Hrát"
msgid "Centered"
msgstr "Uprostřed"
-#: scene/2d/animated_sprite.cpp scene/2d/camera_2d.cpp scene/2d/light_2d.cpp
+#: scene/2d/animated_sprite.cpp scene/2d/camera_2d.cpp
+#: scene/2d/cpu_particles_2d.cpp scene/2d/light_2d.cpp
#: scene/2d/parallax_background.cpp scene/2d/parallax_layer.cpp
#: scene/2d/path_2d.cpp scene/2d/polygon_2d.cpp scene/2d/sprite.cpp
-#: scene/3d/path.cpp scene/3d/physics_body.cpp scene/3d/sprite_3d.cpp
-#: scene/gui/graph_node.cpp scene/gui/rich_text_effect.cpp
-#: scene/main/canvas_layer.cpp scene/resources/material.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/path.cpp scene/3d/physics_body.cpp
+#: scene/3d/sprite_3d.cpp scene/gui/graph_node.cpp
+#: scene/gui/rich_text_effect.cpp scene/main/canvas_layer.cpp
+#: scene/resources/material.cpp scene/resources/particles_material.cpp
#: scene/resources/style_box.cpp
#, fuzzy
msgid "Offset"
@@ -18885,11 +20184,6 @@ msgstr "Přidat audio sběrnici"
msgid "Override"
msgstr "Přepisuje"
-#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
-#: scene/audio/audio_stream_player.cpp scene/gui/video_player.cpp
-msgid "Stream"
-msgstr ""
-
#: scene/2d/audio_stream_player_2d.cpp scene/audio/audio_stream_player.cpp
#: scene/gui/video_player.cpp servers/audio/effects/audio_effect_amplify.cpp
#, fuzzy
@@ -18916,13 +20210,13 @@ msgid "Stream Paused"
msgstr ""
#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
-#: scene/3d/reflection_probe.cpp scene/3d/visual_instance.cpp
-#: scene/resources/material.cpp
+#: scene/3d/light.cpp scene/3d/reflection_probe.cpp
+#: scene/3d/visual_instance.cpp scene/resources/material.cpp
#, fuzzy
msgid "Max Distance"
msgstr "Vybrat vzdálenost:"
-#: scene/2d/audio_stream_player_2d.cpp
+#: scene/2d/audio_stream_player_2d.cpp scene/3d/light.cpp
#, fuzzy
msgid "Attenuation"
msgstr "Animace"
@@ -18978,6 +20272,24 @@ msgstr "Režim přesouvání"
msgid "Limit"
msgstr ""
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/style_box.cpp
+#, fuzzy
+msgid "Left"
+msgstr "Vlevo nahoře"
+
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/style_box.cpp
+#, fuzzy
+msgid "Right"
+msgstr "Světlo"
+
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/dynamic_font.cpp scene/resources/style_box.cpp
+#, fuzzy
+msgid "Bottom"
+msgstr "Vlevo dole"
+
#: scene/2d/camera_2d.cpp
#, fuzzy
msgid "Smoothed"
@@ -19217,13 +20529,6 @@ msgstr ""
msgid "Emitting"
msgstr "Nastavení:"
-#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp scene/3d/area.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
-#: scene/resources/environment.cpp
-#, fuzzy
-msgid "Amount"
-msgstr "Množství:"
-
#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp
#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
msgid "Lifetime"
@@ -19288,18 +20593,13 @@ msgstr ""
#: scene/2d/mesh_instance_2d.cpp scene/2d/multimesh_instance_2d.cpp
#: scene/2d/particles_2d.cpp scene/2d/polygon_2d.cpp scene/2d/sprite.cpp
#: scene/3d/sprite_3d.cpp scene/gui/nine_patch_rect.cpp
-#: scene/gui/texture_rect.cpp scene/resources/sky.cpp
-#: scene/resources/style_box.cpp scene/resources/visual_shader_nodes.cpp
+#: scene/gui/texture_rect.cpp scene/resources/material.cpp
+#: scene/resources/sky.cpp scene/resources/style_box.cpp
+#: scene/resources/visual_shader_nodes.cpp
#, fuzzy
msgid "Texture"
msgstr "Text"
-#: scene/2d/cpu_particles_2d.cpp scene/2d/mesh_instance_2d.cpp
-#: scene/2d/multimesh_instance_2d.cpp scene/2d/particles_2d.cpp
-#: scene/2d/sprite.cpp scene/resources/style_box.cpp
-msgid "Normal Map"
-msgstr ""
-
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
#, fuzzy
@@ -19323,10 +20623,10 @@ msgid "Normals"
msgstr "Formát"
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/3d/sprite_3d.cpp scene/resources/material.cpp
-#: scene/resources/particles_material.cpp scene/resources/texture.cpp
-msgid "Flags"
-msgstr ""
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Align Y"
+msgstr "Přiřadit"
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
@@ -19347,6 +20647,12 @@ msgid "Initial Velocity"
msgstr "Inicializovat"
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Velocity Random"
+msgstr "Inicializovat"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp servers/physics_2d_server.cpp
#: servers/physics_server.cpp
msgid "Angular Velocity"
@@ -19354,6 +20660,12 @@ msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Velocity Curve"
+msgstr "Inicializovat"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
msgid "Orbit Velocity"
msgstr ""
@@ -19365,6 +20677,23 @@ msgstr "Lineární"
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Accel"
+msgstr "Úspěch!"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Accel Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Accel Curve"
+msgstr "Rozdělit křivku"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
msgid "Radial Accel"
msgstr ""
@@ -19374,19 +20703,55 @@ msgid "Tangential Accel"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/2d/joints_2d.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/vehicle_body.cpp
-#: scene/resources/particles_material.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/physics_joint.cpp
+#: scene/3d/vehicle_body.cpp scene/resources/particles_material.cpp
#: servers/audio/effects/audio_effect_reverb.cpp
msgid "Damping"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+msgid "Damping Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Damping Curve"
+msgstr "Rozdělit křivku"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp scene/3d/light.cpp
+#: scene/resources/particles_material.cpp
msgid "Angle"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+msgid "Angle Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Angle Curve"
+msgstr "Uzavřít křivku"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#, fuzzy
+msgid "Scale Amount"
+msgstr "Množství:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+msgid "Scale Amount Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#, fuzzy
+msgid "Scale Amount Curve"
+msgstr "Změnit měřítko od kurzoru"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
#, fuzzy
msgid "Color Ramp"
msgstr "Barvy"
@@ -19402,6 +20767,48 @@ msgstr ""
msgid "Hue Variation"
msgstr "Oddělení:"
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Variation"
+msgstr "Oddělení:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Variation Random"
+msgstr "Oddělení:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Variation Curve"
+msgstr "Oddělení:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Speed Random"
+msgstr "Měřítko"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Speed Curve"
+msgstr "Rozdělit křivku"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Offset Random"
+msgstr "Offset(Posun):"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Offset Curve"
+msgstr "Uzavřít křivku"
+
#: scene/2d/joints_2d.cpp
msgid "Node A and Node B must be PhysicsBody2Ds"
msgstr "Uzel A a uzel B musí být PhysicsBody2D"
@@ -19433,6 +20840,7 @@ msgid "Node B"
msgstr "Uzel"
#: scene/2d/joints_2d.cpp scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp
+#: scene/3d/light.cpp scene/3d/physics_joint.cpp
#: scene/resources/environment.cpp
msgid "Bias"
msgstr ""
@@ -19442,7 +20850,7 @@ msgstr ""
msgid "Disable Collision"
msgstr "Deaktivované tlaÄítko"
-#: scene/2d/joints_2d.cpp
+#: scene/2d/joints_2d.cpp scene/3d/physics_joint.cpp
msgid "Softness"
msgstr ""
@@ -19460,7 +20868,7 @@ msgstr "Inicializovat"
msgid "Rest Length"
msgstr ""
-#: scene/2d/joints_2d.cpp scene/3d/vehicle_body.cpp
+#: scene/2d/joints_2d.cpp scene/3d/physics_joint.cpp scene/3d/vehicle_body.cpp
msgid "Stiffness"
msgstr ""
@@ -19481,7 +20889,7 @@ msgid "Texture Scale"
msgstr "Oblast textury"
#: scene/2d/light_2d.cpp scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp
-#: scene/resources/environment.cpp scene/resources/sky.cpp
+#: scene/3d/light.cpp scene/resources/environment.cpp scene/resources/sky.cpp
msgid "Energy"
msgstr ""
@@ -19522,12 +20930,6 @@ msgstr "Pohled zezadu"
msgid "Gradient Length"
msgstr "Gradient upraven"
-#: scene/2d/light_2d.cpp scene/gui/control.cpp
-#: scene/resources/navigation_mesh.cpp
-#, fuzzy
-msgid "Filter"
-msgstr "Filtry:"
-
#: scene/2d/light_2d.cpp
#, fuzzy
msgid "Filter Smooth"
@@ -19963,11 +21365,6 @@ msgid "Applied Forces"
msgstr ""
#: scene/2d/physics_body_2d.cpp
-#, fuzzy
-msgid "Force"
-msgstr "Vnutit nahrátí"
-
-#: scene/2d/physics_body_2d.cpp
msgid "Torque"
msgstr ""
@@ -19983,7 +21380,7 @@ msgstr "Fyzikální snímek %"
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
#, fuzzy
-msgid "Moving platform"
+msgid "Moving Platform"
msgstr "Přesunout výstup"
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
@@ -19992,7 +21389,7 @@ msgstr ""
#: scene/2d/physics_body_2d.cpp scene/2d/touch_screen_button.cpp
#: scene/3d/physics_body.cpp scene/gui/texture_button.cpp
-#: scene/resources/line_shape_2d.cpp
+#: scene/resources/line_shape_2d.cpp scene/resources/material.cpp
#, fuzzy
msgid "Normal"
msgstr "Formát"
@@ -20239,6 +21636,34 @@ msgstr ""
"VisibilityEnable2D funguje nejlépe, když je přímo pod kořenem aktuálně "
"upravované scény."
+#: scene/2d/visibility_notifier_2d.cpp scene/3d/visibility_notifier.cpp
+#, fuzzy
+msgid "Pause Animations"
+msgstr "Vložit animaci"
+
+#: scene/2d/visibility_notifier_2d.cpp scene/3d/visibility_notifier.cpp
+msgid "Freeze Bodies"
+msgstr ""
+
+#: scene/2d/visibility_notifier_2d.cpp
+#, fuzzy
+msgid "Pause Particles"
+msgstr "Částice"
+
+#: scene/2d/visibility_notifier_2d.cpp
+#, fuzzy
+msgid "Pause Animated Sprites"
+msgstr "Vložit animaci"
+
+#: scene/2d/visibility_notifier_2d.cpp
+#, fuzzy
+msgid "Process Parent"
+msgstr "Zapnout priority"
+
+#: scene/2d/visibility_notifier_2d.cpp
+msgid "Physics Process Parent"
+msgstr ""
+
#: scene/3d/area.cpp
msgid "Reverb Bus"
msgstr ""
@@ -20338,6 +21763,7 @@ msgid "Attenuation Filter"
msgstr ""
#: scene/3d/audio_stream_player_3d.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
#: servers/audio/effects/audio_effect_filter.cpp
msgid "Cutoff Hz"
msgstr ""
@@ -20382,11 +21808,6 @@ msgid "Octree"
msgstr "Podstrom"
#: scene/3d/baked_lightmap.cpp
-#, fuzzy
-msgid "User Data"
-msgstr "Uživatelské rozhraní"
-
-#: scene/3d/baked_lightmap.cpp
msgid "Finding meshes and lights"
msgstr "Hledat mřížky a světla"
@@ -20659,6 +22080,16 @@ msgid "Ring Axis"
msgstr "Varování"
#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Rotate Y"
+msgstr "OtoÄit"
+
+#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Disable Z"
+msgstr "Deaktivovaná položka"
+
+#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
msgid "Flatness"
msgstr ""
@@ -20699,16 +22130,11 @@ msgstr "Dynamická knihovna"
msgid "Dynamic Range"
msgstr "Dynamická knihovna"
-#: scene/3d/gi_probe.cpp
+#: scene/3d/gi_probe.cpp scene/3d/light.cpp
msgid "Normal Bias"
msgstr ""
#: scene/3d/gi_probe.cpp
-#, fuzzy
-msgid "Compress"
-msgstr "Komponenty"
-
-#: scene/3d/gi_probe.cpp
msgid "Plotting Meshes"
msgstr "Vykreslení sítí"
@@ -20737,16 +22163,31 @@ msgstr ""
#: scene/3d/light.cpp
#, fuzzy
+msgid "Indirect Energy"
+msgstr "Emisní barvy"
+
+#: scene/3d/light.cpp
+#, fuzzy
msgid "Negative"
msgstr "GDNative"
#: scene/3d/light.cpp
#, fuzzy
+msgid "Specular"
+msgstr "Režim pravítka"
+
+#: scene/3d/light.cpp
+#, fuzzy
msgid "Bake Mode"
msgstr "Režim bitové masky"
#: scene/3d/light.cpp
#, fuzzy
+msgid "Contact"
+msgstr "Vyberte barvu"
+
+#: scene/3d/light.cpp
+#, fuzzy
msgid "Reverse Cull Face"
msgstr "Obnovit hlasitost sběrnice"
@@ -20757,11 +22198,31 @@ msgstr "Směry"
#: scene/3d/light.cpp
#, fuzzy
+msgid "Split 1"
+msgstr "Rozdělit cestu"
+
+#: scene/3d/light.cpp
+#, fuzzy
+msgid "Split 2"
+msgstr "Rozdělit cestu"
+
+#: scene/3d/light.cpp
+#, fuzzy
+msgid "Split 3"
+msgstr "Rozdělit cestu"
+
+#: scene/3d/light.cpp
+#, fuzzy
msgid "Blend Splits"
msgstr "Blend Äasy:"
#: scene/3d/light.cpp
#, fuzzy
+msgid "Bias Split Scale"
+msgstr "Použít škálovací přichytávání"
+
+#: scene/3d/light.cpp
+#, fuzzy
msgid "Depth Range"
msgstr "Hloubka"
@@ -20787,6 +22248,11 @@ msgstr "SpotLight s úhlem širším než 90 stupňů nemůže vrhat stíny."
msgid "Spot"
msgstr ""
+#: scene/3d/light.cpp
+#, fuzzy
+msgid "Angle Attenuation"
+msgstr "Animace"
+
#: scene/3d/mesh_instance.cpp
msgid "Software Skinning"
msgstr ""
@@ -20927,6 +22393,63 @@ msgstr "Osa"
#: scene/3d/physics_body.cpp
#, fuzzy
+msgid "Linear X"
+msgstr "Lineární"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Linear Y"
+msgstr "Lineární"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Linear Z"
+msgstr "Lineární"
+
+#: scene/3d/physics_body.cpp
+msgid "Angular X"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Angular Y"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Angular Z"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Motion X"
+msgstr "Akce"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Motion Y"
+msgstr "Akce"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Motion Z"
+msgstr "Akce"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Move Lock X"
+msgstr "Přesunout uzel"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Move Lock Y"
+msgstr "Přesunout uzel"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Move Lock Z"
+msgstr "Přesunout uzel"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
msgid "Body Offset"
msgstr "Offset(Posun):"
@@ -20960,6 +22483,15 @@ msgid "Exclude Nodes"
msgstr "Smazat uzly"
#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Params"
+msgstr "Změněný parametr:"
+
+#: scene/3d/physics_joint.cpp
+msgid "Impulse Clamp"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit"
msgstr ""
@@ -20973,6 +22505,55 @@ msgstr "Velká písmena"
msgid "Lower"
msgstr "Malá písmena"
+#: scene/3d/physics_joint.cpp scene/3d/vehicle_body.cpp
+#, fuzzy
+msgid "Relaxation"
+msgstr "Oddělení:"
+
+#: scene/3d/physics_joint.cpp
+msgid "Motor"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Target Velocity"
+msgstr "Inicializovat"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Max Impulse"
+msgstr "Rychlost:"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit"
+msgstr "Lineární"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Upper Distance"
+msgstr "Vybrat vzdálenost:"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Lower Distance"
+msgstr "Vybrat vzdálenost:"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Restitution"
+msgstr "Popis"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motion"
+msgstr "Inicializovat"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Ortho"
+msgstr "Ortogonální"
+
#: scene/3d/physics_joint.cpp
#, fuzzy
msgid "Upper Angle"
@@ -20985,6 +22566,16 @@ msgstr "Malá písmena"
#: scene/3d/physics_joint.cpp
#, fuzzy
+msgid "Angular Motion"
+msgstr "Animace"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Angular Ortho"
+msgstr "Maximální úhlová chyba:"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
msgid "Swing Span"
msgstr "Ukládám scénu"
@@ -20993,17 +22584,99 @@ msgid "Twist Span"
msgstr ""
#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit X"
+msgstr "Lineární"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motor X"
+msgstr "Inicializovat"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Force Limit"
+msgstr "Vykreslovací volání:"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Spring X"
+msgstr "Lineární"
+
+#: scene/3d/physics_joint.cpp
+msgid "Equilibrium Point"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit X"
msgstr ""
#: scene/3d/physics_joint.cpp
+msgid "Erp"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Motor X"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Spring X"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit Y"
+msgstr "Lineární"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motor Y"
+msgstr "Inicializovat"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Spring Y"
+msgstr "Lineární"
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit Y"
msgstr ""
#: scene/3d/physics_joint.cpp
+msgid "Angular Motor Y"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Spring Y"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit Z"
+msgstr "Lineární"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motor Z"
+msgstr "Inicializovat"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Spring Z"
+msgstr "Lineární"
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit Z"
msgstr ""
+#: scene/3d/physics_joint.cpp
+msgid "Angular Motor Z"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Spring Z"
+msgstr ""
+
#: scene/3d/portal.cpp
msgid "The RoomManager should not be a child or grandchild of a Portal."
msgstr ""
@@ -21123,7 +22796,7 @@ msgstr ""
msgid "Use Default Simplify"
msgstr ""
-#: scene/3d/room.cpp
+#: scene/3d/room.cpp scene/3d/room_manager.cpp
msgid "Room Simplify"
msgstr ""
@@ -21162,6 +22835,13 @@ msgstr ""
msgid "Main"
msgstr ""
+#: scene/3d/room_manager.cpp scene/animation/animation_player.cpp
+#: scene/animation/animation_tree.cpp scene/animation/animation_tree_player.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+#, fuzzy
+msgid "Active"
+msgstr "Akce"
+
#: scene/3d/room_manager.cpp
msgid "Roomlist"
msgstr ""
@@ -21186,6 +22866,54 @@ msgid "Gameplay"
msgstr ""
#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Gameplay Monitor"
+msgstr "Monitor"
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Use Secondary PVS"
+msgstr "Použít škálovací přichytávání"
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Merge Meshes"
+msgstr "Sítě (Mesh)"
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Show Margins"
+msgstr "Zobrazit poÄátek"
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Debug Sprawl"
+msgstr "Ladění"
+
+#: scene/3d/room_manager.cpp
+msgid "Overlap Warning Threshold"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Preview Camera"
+msgstr "Náhled"
+
+#: scene/3d/room_manager.cpp
+msgid "Portal Depth Limit"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Default Portal Margin"
+msgstr "Nastavit okraj"
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Roaming Expansion Margin"
+msgstr "Rozbalit vše"
+
+#: scene/3d/room_manager.cpp
msgid ""
"RoomList path is invalid.\n"
"Please check the RoomList branch has been assigned in the RoomManager."
@@ -21313,6 +23041,20 @@ msgstr "Přichycení na pixely"
msgid "Billboard"
msgstr ""
+#: scene/3d/sprite_3d.cpp scene/resources/material.cpp
+#, fuzzy
+msgid "Transparent"
+msgstr "Transponovat"
+
+#: scene/3d/sprite_3d.cpp
+#, fuzzy
+msgid "Shaded"
+msgstr "Shader"
+
+#: scene/3d/sprite_3d.cpp
+msgid "Double Sided"
+msgstr ""
+
#: scene/3d/sprite_3d.cpp
msgid "Alpha Cut"
msgstr ""
@@ -21388,11 +23130,6 @@ msgstr "Nastavit výraz"
msgid "Max Force"
msgstr "Chyba"
-#: scene/3d/vehicle_body.cpp
-#, fuzzy
-msgid "Relaxation"
-msgstr "Oddělení:"
-
#: scene/3d/visibility_notifier.cpp
msgid "AABB"
msgstr ""
@@ -21536,7 +23273,7 @@ msgstr "X-Fade Äas (s):"
#: scene/animation/animation_blend_tree.cpp
#, fuzzy
-msgid "autorestart_"
+msgid "Auto Restart"
msgstr "Auto-restart:"
#: scene/animation/animation_blend_tree.cpp
@@ -21622,13 +23359,6 @@ msgstr "Možnosti třídy:"
msgid "Default Blend Time"
msgstr "Výchozí motiv"
-#: scene/animation/animation_player.cpp scene/animation/animation_tree.cpp
-#: scene/animation/animation_tree_player.cpp
-#: servers/audio/effects/audio_effect_delay.cpp
-#, fuzzy
-msgid "Active"
-msgstr "Akce"
-
#: scene/animation/animation_player.cpp
msgid "Method Call Mode"
msgstr ""
@@ -21752,10 +23482,6 @@ msgstr "ZmÄ›nit rodiÄe uzlu"
msgid "Max Iterations"
msgstr "Vytvořit funkci"
-#: scene/animation/tween.cpp scene/resources/texture.cpp
-msgid "Repeat"
-msgstr ""
-
#: scene/animation/tween.cpp
msgid "Playback Process Mode"
msgstr ""
@@ -21786,20 +23512,6 @@ msgstr "Režim výběru"
msgid "Alignment"
msgstr ""
-#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
-#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
-#: scene/resources/style_box.cpp
-#, fuzzy
-msgid "Horizontal"
-msgstr "Horizonálně:"
-
-#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
-#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
-#: scene/resources/style_box.cpp
-#, fuzzy
-msgid "Vertical"
-msgstr "Vertikálně:"
-
#: scene/gui/base_button.cpp
#, fuzzy
msgid "Shortcut In Tooltip"
@@ -21902,10 +23614,6 @@ msgid "HSV"
msgstr "HSV"
#: scene/gui/color_picker.cpp
-msgid "Raw"
-msgstr "Surový"
-
-#: scene/gui/color_picker.cpp
msgid "Switch between hexadecimal and code values."
msgstr "Přepni mezi hexadecimálními a kódovými hodnotami."
@@ -21972,6 +23680,31 @@ msgid "Focus"
msgstr "Zvýraznit cestu"
#: scene/gui/control.cpp
+msgid "Neighbour Left"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Neighbour Top"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Neighbour Right"
+msgstr ""
+
+#: scene/gui/control.cpp
+#, fuzzy
+msgid "Neighbour Bottom"
+msgstr "Uprostřed dole"
+
+#: scene/gui/control.cpp
+msgid "Next"
+msgstr "Další"
+
+#: scene/gui/control.cpp
+msgid "Previous"
+msgstr "Předchozí"
+
+#: scene/gui/control.cpp
msgid "Mouse"
msgstr ""
@@ -22009,7 +23742,7 @@ msgid "Dialog"
msgstr "XForm dialog"
#: scene/gui/dialogs.cpp
-msgid "Hide On Ok"
+msgid "Hide On OK"
msgstr ""
#: scene/gui/dialogs.cpp scene/gui/label.cpp
@@ -22108,7 +23841,7 @@ msgid "Timers"
msgstr "ÄŒas"
#: scene/gui/item_list.cpp scene/gui/popup_menu.cpp scene/gui/tree.cpp
-msgid "Incremental Search Max Interval (msec)"
+msgid "Incremental Search Max Interval Msec"
msgstr ""
#: scene/gui/item_list.cpp scene/gui/tree.cpp
@@ -22692,6 +24425,26 @@ msgstr "Vlevo uprostřed"
msgid "Nine Patch Stretch"
msgstr "InterpolaÄní režim"
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Left"
+msgstr "Nastavit okraj"
+
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Top"
+msgstr "Nastavit okraj"
+
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Right"
+msgstr "Nastavit okraj"
+
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Bottom"
+msgstr "Režim výběru"
+
#: scene/gui/tree.cpp
msgid "Custom Minimum Height"
msgstr ""
@@ -22729,8 +24482,9 @@ msgid "Paused"
msgstr ""
#: scene/gui/video_player.cpp
-msgid "Buffering (msec)"
-msgstr ""
+#, fuzzy
+msgid "Buffering Msec"
+msgstr "Pohled zezadu"
#: scene/gui/video_player.cpp
#, fuzzy
@@ -23087,6 +24841,22 @@ msgid "Shadow Atlas"
msgstr "Nový Atlas"
#: scene/main/viewport.cpp
+msgid "Quad 0"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 1"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 2"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 3"
+msgstr ""
+
+#: scene/main/viewport.cpp
#, fuzzy
msgid "Canvas Transform"
msgstr "Promazat transformaci"
@@ -23101,6 +24871,11 @@ msgid "Tooltip Delay (sec)"
msgstr ""
#: scene/register_scene_types.cpp
+#, fuzzy
+msgid "Swap OK Cancel"
+msgstr "Zrušit"
+
+#: scene/register_scene_types.cpp
msgid "Use hiDPI"
msgstr ""
@@ -23115,21 +24890,6 @@ msgid "Custom Font"
msgstr "Vyjmout uzly"
#: scene/resources/audio_stream_sample.cpp
-#, fuzzy
-msgid "Loop Mode"
-msgstr "Režim přesouvání"
-
-#: scene/resources/audio_stream_sample.cpp
-#, fuzzy
-msgid "Loop Begin"
-msgstr "Režim přesouvání"
-
-#: scene/resources/audio_stream_sample.cpp
-#, fuzzy
-msgid "Loop End"
-msgstr "Režim přesouvání"
-
-#: scene/resources/audio_stream_sample.cpp
#: servers/audio/effects/audio_stream_generator.cpp servers/audio_server.cpp
#, fuzzy
msgid "Mix Rate"
@@ -23189,6 +24949,17 @@ msgstr "Další možnosti:"
#: scene/resources/dynamic_font.cpp
#, fuzzy
+msgid "Char"
+msgstr "Platné znaky:"
+
+#: scene/resources/dynamic_font.cpp scene/resources/world.cpp
+#: scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Space"
+msgstr "Hlavní scéna"
+
+#: scene/resources/dynamic_font.cpp
+#, fuzzy
msgid "Font"
msgstr "Fonty"
@@ -23416,6 +25187,43 @@ msgid "Glow"
msgstr ""
#: scene/resources/environment.cpp
+#, fuzzy
+msgid "Levels"
+msgstr "Vývojáři"
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "1"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "2"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "3"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "4"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "5"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "6"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "7"
+msgstr ""
+
+#: scene/resources/environment.cpp
msgid "Bloom"
msgstr ""
@@ -23508,10 +25316,68 @@ msgid "Next Pass"
msgstr "Další rovina"
#: scene/resources/material.cpp
+msgid "Use Shadow To Opacity"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Unshaded"
+msgstr "Bezestínový pohled"
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Vertex Lighting"
+msgstr "Přímé osvětlení"
+
+#: scene/resources/material.cpp
+msgid "No Depth Test"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Use Point Size"
+msgstr "Pohled zepředu"
+
+#: scene/resources/material.cpp
+msgid "World Triplanar"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Fixed Size"
+msgstr "Pohled zepředu"
+
+#: scene/resources/material.cpp
+msgid "Albedo Tex Force sRGB"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Do Not Receive Shadows"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Disable Ambient Light"
+msgstr "Odsadit zprava"
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Ensure Correct Normals"
+msgstr "Transformace zrušena."
+
+#: scene/resources/material.cpp
#, fuzzy
msgid "Vertex Color"
msgstr "Vrchol"
+#: scene/resources/material.cpp
+msgid "Use As Albedo"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Is sRGB"
+msgstr ""
+
#: scene/resources/material.cpp servers/visual_server.cpp
#, fuzzy
msgid "Parameters"
@@ -23548,6 +25414,11 @@ msgid "Billboard Mode"
msgstr "Režim pravítka"
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Billboard Keep Scale"
+msgstr "Režim pravítka"
+
+#: scene/resources/material.cpp
msgid "Grow"
msgstr ""
@@ -23557,6 +25428,10 @@ msgid "Grow Amount"
msgstr "Množství:"
#: scene/resources/material.cpp
+msgid "Use Alpha Scissor"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Alpha Scissor Threshold"
msgstr ""
@@ -23588,10 +25463,20 @@ msgid "Metallic Specular"
msgstr ""
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Metallic Texture"
+msgstr "Zdroje emisí: "
+
+#: scene/resources/material.cpp
msgid "Metallic Texture Channel"
msgstr ""
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Roughness Texture"
+msgstr "Odstranit texturu"
+
+#: scene/resources/material.cpp
msgid "Roughness Texture Channel"
msgstr ""
@@ -23611,6 +25496,16 @@ msgid "Emission Operator"
msgstr "Emisní barvy"
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Emission On UV2"
+msgstr "Emisní maska"
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Emission Texture"
+msgstr "Zdroje emisí: "
+
+#: scene/resources/material.cpp
msgid "NormalMap"
msgstr ""
@@ -23625,6 +25520,11 @@ msgstr "Náhodné naklonění:"
#: scene/resources/material.cpp
#, fuzzy
+msgid "Rim Texture"
+msgstr "Odstranit texturu"
+
+#: scene/resources/material.cpp
+#, fuzzy
msgid "Clearcoat"
msgstr "Promazat"
@@ -23634,15 +25534,28 @@ msgid "Clearcoat Gloss"
msgstr "Vymazat pózu"
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Clearcoat Texture"
+msgstr "Motiv editoru"
+
+#: scene/resources/material.cpp
msgid "Anisotropy"
msgstr ""
#: scene/resources/material.cpp
+msgid "Anisotropy Flowmap"
+msgstr ""
+
+#: scene/resources/material.cpp
#, fuzzy
msgid "Ambient Occlusion"
msgstr "Okluze"
#: scene/resources/material.cpp
+msgid "On UV2"
+msgstr ""
+
+#: scene/resources/material.cpp
#, fuzzy
msgid "Texture Channel"
msgstr "Oblast textury"
@@ -23681,6 +25594,11 @@ msgstr "Přechod: "
#: scene/resources/material.cpp
#, fuzzy
+msgid "Transmission Texture"
+msgstr "Přechod: "
+
+#: scene/resources/material.cpp
+#, fuzzy
msgid "Refraction"
msgstr "Oddělení:"
@@ -23699,6 +25617,10 @@ msgid "UV1"
msgstr "UV"
#: scene/resources/material.cpp
+msgid "Triplanar"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Triplanar Sharpness"
msgstr ""
@@ -23910,6 +25832,16 @@ msgstr "Motiv editoru"
msgid "Point Count"
msgstr "Přidat vstupní port"
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Scale Random"
+msgstr "Poměr zvětšení:"
+
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Scale Curve"
+msgstr "Uzavřít křivku"
+
#: scene/resources/physics_material.cpp
msgid "Rough"
msgstr ""
@@ -23972,10 +25904,6 @@ msgid "A"
msgstr ""
#: scene/resources/shader.cpp
-msgid "Code"
-msgstr ""
-
-#: scene/resources/shader.cpp
#, fuzzy
msgid "Custom Defines"
msgstr "Přehrát upravenou scénu"
@@ -24072,15 +26000,6 @@ msgstr ""
#: scene/resources/texture.cpp
#, fuzzy
-msgid "Storage"
-msgstr "Ukládám soubor:"
-
-#: scene/resources/texture.cpp
-msgid "Lossy Quality"
-msgstr ""
-
-#: scene/resources/texture.cpp
-#, fuzzy
msgid "Load Path"
msgstr "NaÄíst pÅ™ednastavení"
@@ -24211,11 +26130,6 @@ msgstr "Neplatná funkce pro porovnání tohoto typu."
msgid "Fallback Environment"
msgstr "Zobrazit prostředí"
-#: scene/resources/world.cpp scene/resources/world_2d.cpp
-#, fuzzy
-msgid "Space"
-msgstr "Hlavní scéna"
-
#: scene/resources/world.cpp
#, fuzzy
msgid "Scenario"
@@ -24296,10 +26210,37 @@ msgstr ""
msgid "Wet"
msgstr ""
-#: servers/audio/effects/audio_effect_compressor.cpp
-msgid "Threshold"
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "Voice"
msgstr ""
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+msgid "Delay (ms)"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_phaser.cpp
+msgid "Rate Hz"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#, fuzzy
+msgid "Depth (ms)"
+msgstr "Hloubka"
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+msgid "Level dB"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+#: servers/audio/effects/audio_effect_panner.cpp
+#, fuzzy
+msgid "Pan"
+msgstr "Rovina:"
+
#: servers/audio/effects/audio_effect_compressor.cpp
#: servers/audio/effects/audio_effect_filter.cpp
msgid "Gain"
@@ -24323,20 +26264,6 @@ msgid "Tap 1"
msgstr ""
#: servers/audio/effects/audio_effect_delay.cpp
-msgid "Delay (ms)"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_delay.cpp
-msgid "Level dB"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_delay.cpp
-#: servers/audio/effects/audio_effect_panner.cpp
-#, fuzzy
-msgid "Pan"
-msgstr "Rovina:"
-
-#: servers/audio/effects/audio_effect_delay.cpp
msgid "Tap 2"
msgstr ""
@@ -24398,10 +26325,6 @@ msgstr ""
msgid "Range Max Hz"
msgstr ""
-#: servers/audio/effects/audio_effect_phaser.cpp
-msgid "Rate Hz"
-msgstr ""
-
#: servers/audio/effects/audio_effect_pitch_shift.cpp
msgid "Oversampling"
msgstr ""
@@ -24417,7 +26340,7 @@ msgid "Predelay"
msgstr ""
#: servers/audio/effects/audio_effect_reverb.cpp
-msgid "(msec)"
+msgid "Msec"
msgstr ""
#: servers/audio/effects/audio_effect_reverb.cpp
diff --git a/editor/translations/da.po b/editor/translations/da.po
index 5491797ec3..dcc218bd93 100644
--- a/editor/translations/da.po
+++ b/editor/translations/da.po
@@ -34,7 +34,7 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 4.9-dev\n"
-#: core/bind/core_bind.cpp
+#: core/bind/core_bind.cpp main/main.cpp
msgid "Tablet Driver"
msgstr ""
@@ -133,8 +133,8 @@ msgstr "Dok Position"
#: core/bind/core_bind.cpp editor/editor_settings.cpp main/main.cpp
#: modules/gdscript/gdscript_editor.cpp modules/gridmap/grid_map.cpp
#: modules/mono/csharp_script.cpp modules/visual_script/visual_script_nodes.cpp
-#: scene/2d/tile_map.cpp scene/3d/camera.cpp scene/gui/control.cpp
-#: scene/gui/graph_edit.cpp scene/main/viewport.cpp
+#: scene/2d/tile_map.cpp scene/3d/camera.cpp scene/3d/light.cpp
+#: scene/gui/control.cpp scene/gui/graph_edit.cpp scene/main/viewport.cpp
#: scene/resources/dynamic_font.cpp scene/resources/navigation_mesh.cpp
#: scene/resources/primitive_meshes.cpp scene/resources/sky.cpp
#: scene/resources/style_box.cpp scene/resources/texture.cpp
@@ -236,8 +236,7 @@ msgid "Data"
msgstr ""
#: core/io/file_access_network.cpp core/register_core_types.cpp
-#: editor/editor_settings.cpp editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp main/main.cpp
+#: editor/editor_settings.cpp main/main.cpp
#: modules/gdscript/language_server/gdscript_language_server.cpp
#, fuzzy
msgid "Network"
@@ -515,9 +514,10 @@ msgstr "Forudindstillet..."
msgid "Relative"
msgstr ""
-#: core/os/input_event.cpp scene/2d/camera_2d.cpp
-#: scene/3d/interpolated_camera.cpp scene/animation/animation_player.cpp
-#: scene/resources/environment.cpp
+#: core/os/input_event.cpp scene/2d/camera_2d.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/interpolated_camera.cpp
+#: scene/animation/animation_player.cpp scene/resources/environment.cpp
+#: scene/resources/particles_material.cpp
#, fuzzy
msgid "Speed"
msgstr "Skalér:"
@@ -567,8 +567,9 @@ msgstr "Synkroniser Script Ændringer"
msgid "Pitch"
msgstr "Skalér:"
-#: core/os/input_event.cpp scene/2d/physics_body_2d.cpp
-#: scene/3d/physics_body.cpp
+#: core/os/input_event.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/physics_body_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/3d/physics_body.cpp scene/resources/particles_material.cpp
msgid "Velocity"
msgstr ""
@@ -586,6 +587,8 @@ msgid "Controller Value"
msgstr ""
#: core/project_settings.cpp editor/editor_node.cpp main/main.cpp
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/windows/export/export.cpp
#, fuzzy
msgid "Application"
msgstr "Tilføj Funktion"
@@ -603,13 +606,16 @@ msgstr "Projekt Indstillinger"
#: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp
#: editor/editor_plugin_settings.cpp editor/editor_profiler.cpp
#: editor/project_manager.cpp editor/settings_config_dialog.cpp
-#: modules/gdnative/nativescript/nativescript.cpp scene/2d/area_2d.cpp
-#: scene/3d/area.cpp scene/main/node.cpp
+#: modules/gdnative/nativescript/nativescript.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/osx/export/export.cpp scene/2d/area_2d.cpp scene/3d/area.cpp
+#: scene/main/node.cpp
msgid "Name"
msgstr "Navn"
#: core/project_settings.cpp editor/editor_help.cpp
-#: modules/visual_script/visual_script_nodes.cpp
+#: modules/visual_script/visual_script_nodes.cpp platform/uwp/export/export.cpp
+#: platform/windows/export/export.cpp
msgid "Description"
msgstr "Beskrivelse"
@@ -647,7 +653,7 @@ msgid "Custom User Dir Name"
msgstr ""
#: core/project_settings.cpp editor/animation_track_editor.cpp
-#: editor/editor_audio_buses.cpp servers/audio_server.cpp
+#: editor/editor_audio_buses.cpp main/main.cpp servers/audio_server.cpp
msgid "Audio"
msgstr "Lyd"
@@ -810,10 +816,13 @@ msgstr "Filter:"
msgid "Sharpen Intensity"
msgstr ""
-#: core/project_settings.cpp editor/editor_node.cpp editor/editor_settings.cpp
-#: editor/plugins/script_editor_plugin.cpp editor/project_export.cpp
-#: main/main.cpp modules/gdscript/gdscript.cpp
-#: modules/visual_script/visual_script.cpp scene/3d/room_manager.cpp
+#: core/project_settings.cpp editor/editor_export.cpp editor/editor_node.cpp
+#: editor/editor_settings.cpp editor/plugins/script_editor_plugin.cpp
+#: editor/project_export.cpp main/main.cpp modules/gdscript/gdscript.cpp
+#: modules/visual_script/visual_script.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp scene/3d/room_manager.cpp
#: scene/main/scene_tree.cpp scene/resources/shape_2d.cpp
#: servers/visual_server.cpp
msgid "Debug"
@@ -1046,6 +1055,7 @@ msgid "Subsurface Scattering"
msgstr ""
#: drivers/gles3/rasterizer_scene_gles3.cpp
+#: editor/import/resource_importer_texture.cpp
#: editor/plugins/spatial_editor_plugin.cpp modules/gltf/gltf_node.cpp
#: modules/gridmap/grid_map.cpp scene/2d/cpu_particles_2d.cpp
#: scene/2d/node_2d.cpp scene/2d/parallax_layer.cpp scene/2d/polygon_2d.cpp
@@ -1352,6 +1362,7 @@ msgid "Editors"
msgstr "Redaktør"
#: editor/animation_track_editor.cpp editor/editor_settings.cpp
+#: editor/import/resource_importer_scene.cpp
#: editor/plugins/animation_player_editor_plugin.cpp editor/scene_tree_dock.cpp
#: scene/2d/animated_sprite.cpp scene/2d/cpu_particles_2d.cpp
#: scene/2d/sprite.cpp scene/3d/cpu_particles.cpp scene/3d/sprite_3d.cpp
@@ -1597,14 +1608,14 @@ msgstr "Animation trin værdi."
msgid "Seconds"
msgstr "Sekunder"
-#: editor/animation_track_editor.cpp
+#: editor/animation_track_editor.cpp editor/import/resource_importer_scene.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp main/main.cpp
#: scene/resources/texture.cpp
msgid "FPS"
msgstr "FPS"
#: editor/animation_track_editor.cpp editor/editor_plugin_settings.cpp
-#: editor/editor_resource_picker.cpp
+#: editor/editor_resource_picker.cpp editor/import/resource_importer_wav.cpp
#: editor/plugins/polygon_2d_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
@@ -2611,7 +2622,9 @@ msgid "Remove Autoload"
msgstr "Fjern Autoload"
#: editor/editor_autoload_settings.cpp editor/editor_plugin_settings.cpp
-#: modules/gdscript/gdscript.cpp scene/2d/polygon_2d.cpp scene/3d/area.cpp
+#: modules/gdscript/gdscript.cpp platform/android/export/export_plugin.cpp
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#: scene/2d/polygon_2d.cpp scene/3d/area.cpp scene/3d/physics_joint.cpp
#: scene/3d/reflection_probe.cpp scene/main/canvas_layer.cpp
#: scene/resources/material.cpp servers/visual_server.cpp
msgid "Enable"
@@ -2781,6 +2794,58 @@ msgstr ""
#: editor/editor_export.cpp platform/android/export/export_plugin.cpp
#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Custom Template"
+msgstr "Medlemmer"
+
+#: editor/editor_export.cpp editor/project_export.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp
+msgid "Release"
+msgstr ""
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Binary Format"
+msgstr "Anim Skift Transformering"
+
+#: editor/editor_export.cpp
+msgid "64 Bits"
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Embed PCK"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Texture Format"
+msgstr "Skifter Modus"
+
+#: editor/editor_export.cpp
+msgid "BPTC"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "S3TC"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "ETC"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "ETC2"
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "No BPTC Fallbacks"
+msgstr ""
+
+#: editor/editor_export.cpp platform/android/export/export_plugin.cpp
+#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
msgid "Custom debug template not found."
msgstr "Brugerdefineret debug skabelonfil ikke fundet."
@@ -2976,6 +3041,7 @@ msgid "Make Current"
msgstr "(Nuværende)"
#: editor/editor_feature_profile.cpp editor/editor_node.cpp
+#: editor/import/resource_importer_scene.cpp
#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
msgid "Import"
msgstr "Importer"
@@ -3111,8 +3177,11 @@ msgstr "Succes!"
msgid "Display Mode"
msgstr "Afspil Mode:"
-#: editor/editor_file_dialog.cpp main/main.cpp modules/csg/csg_shape.cpp
-#: modules/visual_script/visual_script_nodes.cpp
+#: editor/editor_file_dialog.cpp
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+#: editor/import/resource_importer_wav.cpp main/main.cpp
+#: modules/csg/csg_shape.cpp modules/visual_script/visual_script_nodes.cpp
#: modules/visual_script/visual_script_yield_nodes.cpp scene/2d/light_2d.cpp
#: scene/2d/physics_body_2d.cpp scene/2d/tile_map.cpp
#: scene/3d/baked_lightmap.cpp scene/3d/light.cpp scene/3d/physics_body.cpp
@@ -3257,7 +3326,9 @@ msgstr "(Gen)Importér Aktiver"
msgid "Reimport Missing Imported Files"
msgstr ""
-#: editor/editor_help.cpp
+#: editor/editor_help.cpp scene/2d/camera_2d.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/resources/dynamic_font.cpp
+#: scene/resources/style_box.cpp
msgid "Top"
msgstr "Top"
@@ -3310,6 +3381,7 @@ msgid "Fonts"
msgstr ""
#: editor/editor_help.cpp editor/plugins/theme_editor_plugin.cpp
+#: platform/iphone/export/export.cpp
msgid "Icons"
msgstr ""
@@ -3483,7 +3555,9 @@ msgstr ""
msgid "Pin value [Disabled because '%s' is editor-only]"
msgstr ""
-#: editor/editor_inspector.cpp editor/scene_tree_dock.cpp
+#: editor/editor_inspector.cpp
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+#: editor/scene_tree_dock.cpp
#: modules/visual_script/visual_script_func_nodes.cpp
#: modules/visual_script/visual_script_nodes.cpp
#: modules/visual_script/visual_script_property_selector.cpp
@@ -3823,6 +3897,16 @@ msgid "Quick Open Script..."
msgstr "Hurtig Ã…bn Script..."
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Save & Reload"
+msgstr "Gem & genstart"
+
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Save changes to '%s' before reloading?"
+msgstr "Gem ændringer til '%s' før lukning?"
+
+#: editor/editor_node.cpp
msgid "Save & Close"
msgstr "Gem & Luk"
@@ -3936,6 +4020,11 @@ msgid "Open Project Manager?"
msgstr "Ã…bn Projekt Manager?"
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Save changes to the following scene(s) before reloading?"
+msgstr "Gem ændringer i følgende scene(r) før du afslutter?"
+
+#: editor/editor_node.cpp
msgid "Save & Quit"
msgstr "Gem & Afslut"
@@ -4212,8 +4301,8 @@ msgstr "Skift Shader"
#: editor/editor_node.cpp
#, fuzzy
-msgid "Translate Properties"
-msgstr "Egenskaber"
+msgid "Localize Settings"
+msgstr "Editor Indstillinger"
#: editor/editor_node.cpp
#, fuzzy
@@ -4230,8 +4319,8 @@ msgstr "Inspektør"
#: editor/editor_node.cpp
#, fuzzy
-msgid "Capitalize Properties"
-msgstr "Egenskaber"
+msgid "Default Property Name Style"
+msgstr "Forhåndsvisning:"
#: editor/editor_node.cpp
msgid "Default Float Step"
@@ -4846,7 +4935,9 @@ msgstr "Installerede Plugins:"
msgid "Update"
msgstr "Opdater"
-#: editor/editor_plugin_settings.cpp
+#: editor/editor_plugin_settings.cpp platform/android/export/export_plugin.cpp
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp
#, fuzzy
msgid "Version"
msgstr "Version:"
@@ -5855,7 +5946,7 @@ msgstr ""
msgid "Rect Custom Position"
msgstr "Fjern Signal"
-#: editor/editor_settings.cpp
+#: editor/editor_settings.cpp platform/android/export/export_plugin.cpp
msgid "Screen"
msgstr ""
@@ -5881,6 +5972,19 @@ msgid "Editor SSL Certificates"
msgstr "Editor Indstillinger"
#: editor/editor_settings.cpp
+msgid "HTTP Proxy"
+msgstr ""
+
+#: editor/editor_settings.cpp
+msgid "Host"
+msgstr ""
+
+#: editor/editor_settings.cpp editor/fileserver/editor_file_server.cpp
+#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp
+msgid "Port"
+msgstr ""
+
+#: editor/editor_settings.cpp
msgid "Project Manager"
msgstr "Projekt Manager"
@@ -5923,7 +6027,8 @@ msgstr ""
msgid "String Color"
msgstr "Lagrings Fil:"
-#: editor/editor_settings.cpp
+#: editor/editor_settings.cpp platform/javascript/export/export.cpp
+#: platform/uwp/export/export.cpp
#, fuzzy
msgid "Background Color"
msgstr "Ugyldigt navn."
@@ -6098,22 +6203,6 @@ msgid "Starting the download..."
msgstr ""
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "HTTP Proxy"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Host"
-msgstr ""
-
-#: editor/export_template_manager.cpp editor/fileserver/editor_file_server.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp main/main.cpp
-#: modules/mono/mono_gd/gd_mono.cpp
-msgid "Port"
-msgstr ""
-
-#: editor/export_template_manager.cpp
#, fuzzy
msgid "Error requesting URL:"
msgstr "Fejl ved anmodning af url: "
@@ -6381,6 +6470,7 @@ msgstr ""
#: editor/fileserver/editor_file_server.cpp
#: editor/plugins/version_control_editor_plugin.cpp
+#: platform/uwp/export/export.cpp platform/windows/export/export.cpp
msgid "Password"
msgstr ""
@@ -6793,6 +6883,115 @@ msgstr ""
msgid "Use Ambient"
msgstr ""
+#: editor/import/resource_importer_bitmask.cpp
+#, fuzzy
+msgid "Create From"
+msgstr "Opret Mappe"
+
+#: editor/import/resource_importer_bitmask.cpp
+#: servers/audio/effects/audio_effect_compressor.cpp
+msgid "Threshold"
+msgstr ""
+
+#: editor/import/resource_importer_csv_translation.cpp
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_scene.cpp
+#: editor/import/resource_importer_texture.cpp
+#: editor/import/resource_importer_wav.cpp scene/3d/gi_probe.cpp
+#, fuzzy
+msgid "Compress"
+msgstr "Komponenter"
+
+#: editor/import/resource_importer_csv_translation.cpp
+msgid "Delimiter"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+msgid "No BPTC If RGB"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/sprite_3d.cpp
+#: scene/resources/material.cpp scene/resources/particles_material.cpp
+#: scene/resources/texture.cpp
+msgid "Flags"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/animation/tween.cpp
+#: scene/resources/texture.cpp
+msgid "Repeat"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/2d/light_2d.cpp
+#: scene/gui/control.cpp scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Filter"
+msgstr "Filter:"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Mipmaps"
+msgstr "Signaler"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+msgid "Anisotropic"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+msgid "sRGB"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#, fuzzy
+msgid "Slices"
+msgstr "Enhed"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
+#: scene/resources/style_box.cpp
+#, fuzzy
+msgid "Horizontal"
+msgstr "Fjern horisontal guide"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
+#: scene/resources/style_box.cpp
+#, fuzzy
+msgid "Vertical"
+msgstr "Fjern vertikal guide"
+
+#: editor/import/resource_importer_obj.cpp
+#, fuzzy
+msgid "Generate Tangents"
+msgstr "Indsæt Punkt"
+
+#: editor/import/resource_importer_obj.cpp
+#, fuzzy
+msgid "Scale Mesh"
+msgstr "Skifter Modus"
+
+#: editor/import/resource_importer_obj.cpp
+msgid "Offset Mesh"
+msgstr ""
+
+#: editor/import/resource_importer_obj.cpp
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Octahedral Compression"
+msgstr "Skift udtryk"
+
+#: editor/import/resource_importer_obj.cpp
+msgid "Optimize Mesh Flags"
+msgstr ""
+
#: editor/import/resource_importer_scene.cpp
msgid "Import as Single Scene"
msgstr "Importer som Enkelt Scene"
@@ -6833,6 +7032,153 @@ msgstr "Importer som Adskillige Scener"
msgid "Import as Multiple Scenes+Materials"
msgstr "Importer som Adskillige Scener+Materialer"
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Nodes"
+msgstr "Node"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Root Type"
+msgstr "Medlemstype"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Root Name"
+msgstr "Fjern"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Root Scale"
+msgstr "Skalér:"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Custom Script"
+msgstr "Indsæt Node"
+
+#: editor/import/resource_importer_scene.cpp scene/resources/texture.cpp
+#, fuzzy
+msgid "Storage"
+msgstr "Lagrings Fil:"
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Use Legacy Names"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+#, fuzzy
+msgid "Materials"
+msgstr "Skift Shader"
+
+#: editor/import/resource_importer_scene.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Location"
+msgstr "Tilføj Funktion"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Keep On Reimport"
+msgstr "Genimporter"
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+msgid "Meshes"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Ensure Tangents"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Light Baking"
+msgstr "Lineær"
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Lightmap Texel Size"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+msgid "Skins"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Use Named Skins"
+msgstr "Signaler"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "External Files"
+msgstr "Ã…ben en Fil"
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Store In Subdir"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Filter Script"
+msgstr "Filtrer noder"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Keep Custom Tracks"
+msgstr "Anim Skift Transformering"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Optimizer"
+msgstr "Optimér"
+
+#: editor/import/resource_importer_scene.cpp main/main.cpp
+#: modules/mono/mono_gd/gd_mono.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp scene/2d/camera_2d.cpp scene/2d/light_2d.cpp
+#: scene/2d/navigation_polygon.cpp scene/2d/ray_cast_2d.cpp scene/2d/sprite.cpp
+#: scene/2d/y_sort.cpp scene/3d/audio_stream_player_3d.cpp
+#: scene/3d/baked_lightmap.cpp scene/3d/interpolated_camera.cpp
+#: scene/3d/light.cpp scene/3d/navigation_mesh_instance.cpp
+#: scene/3d/physics_joint.cpp scene/3d/ray_cast.cpp scene/3d/sprite_3d.cpp
+#: scene/gui/graph_edit.cpp scene/gui/rich_text_label.cpp
+#: scene/resources/curve.cpp scene/resources/environment.cpp
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Enabled"
+msgstr "Aktivér"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Max Linear Error"
+msgstr "Max. Lineær Fejl:"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Max Angular Error"
+msgstr "Max. Azimutal fejl:"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Max Angle"
+msgstr "Værdi:"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Remove Unused Tracks"
+msgstr "Fjern Anim Spor"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Clips"
+msgstr "Anim klip:"
+
+#: editor/import/resource_importer_scene.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/particles_2d.cpp scene/3d/area.cpp scene/3d/cpu_particles.cpp
+#: scene/3d/particles.cpp scene/resources/environment.cpp
+#, fuzzy
+msgid "Amount"
+msgstr "Mængde:"
+
#: editor/import/resource_importer_scene.cpp
#: editor/plugins/mesh_library_editor_plugin.cpp
msgid "Import Scene"
@@ -6874,12 +7220,146 @@ msgstr ""
msgid "Saving..."
msgstr "Gemmer..."
+#: editor/import/resource_importer_texture.cpp scene/resources/texture.cpp
+msgid "Lossy Quality"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "HDR Mode"
+msgstr "Skifter Modus"
+
+#: editor/import/resource_importer_texture.cpp
+msgid "BPTC LDR"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/mesh_instance_2d.cpp scene/2d/multimesh_instance_2d.cpp
+#: scene/2d/particles_2d.cpp scene/2d/sprite.cpp scene/resources/style_box.cpp
+msgid "Normal Map"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Process"
+msgstr "Skift udtryk"
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Fix Alpha Border"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Premult Alpha"
+msgstr "Rediger Poly"
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Hdr As Srgb"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Invert Color"
+msgstr "Fjern Alt"
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Normal Map Invert Y"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
+#: scene/audio/audio_stream_player.cpp scene/gui/video_player.cpp
+msgid "Stream"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Size Limit"
+msgstr "Afspil Mode:"
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Detect 3D"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "SVG"
+msgstr ""
+
#: editor/import/resource_importer_texture.cpp
msgid ""
"Warning, no suitable PC VRAM compression enabled in Project Settings. This "
"texture will not display correctly on PC."
msgstr ""
+#: editor/import/resource_importer_texture_atlas.cpp
+#, fuzzy
+msgid "Atlas File"
+msgstr "Assets zipfil"
+
+#: editor/import/resource_importer_texture_atlas.cpp
+#, fuzzy
+msgid "Import Mode"
+msgstr "Importer"
+
+#: editor/import/resource_importer_texture_atlas.cpp
+#, fuzzy
+msgid "Crop To Region"
+msgstr "Interpolationsmetode"
+
+#: editor/import/resource_importer_texture_atlas.cpp
+msgid "Trim Alpha Border From Region"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp scene/2d/physics_body_2d.cpp
+msgid "Force"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+msgid "8 Bit"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp main/main.cpp
+#: modules/mono/editor/csharp_project.cpp modules/mono/mono_gd/gd_mono.cpp
+msgid "Mono"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+#, fuzzy
+msgid "Max Rate"
+msgstr "Værdi:"
+
+#: editor/import/resource_importer_wav.cpp
+#, fuzzy
+msgid "Max Rate Hz"
+msgstr "Værdi:"
+
+#: editor/import/resource_importer_wav.cpp
+msgid "Trim"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+#, fuzzy
+msgid "Normalize"
+msgstr "Fjern Template"
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+#, fuzzy
+msgid "Loop Mode"
+msgstr "Skifter Modus"
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+#, fuzzy
+msgid "Loop Begin"
+msgstr "Skifter Modus"
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+#, fuzzy
+msgid "Loop End"
+msgstr "Skifter Modus"
+
#: editor/import_defaults_editor.cpp
#, fuzzy
msgid "Select Importer"
@@ -6952,6 +7432,28 @@ msgstr "Fejler med at indlæse ressource."
#: editor/inspector_dock.cpp
#, fuzzy
+msgid "Property Name Style"
+msgstr "Egenskabsbane"
+
+#: editor/inspector_dock.cpp scene/gui/color_picker.cpp
+msgid "Raw"
+msgstr ""
+
+#: editor/inspector_dock.cpp
+#, fuzzy
+msgid "Capitalized"
+msgstr "Egenskaber"
+
+#: editor/inspector_dock.cpp
+msgid "Localized"
+msgstr ""
+
+#: editor/inspector_dock.cpp
+msgid "Localization not available for current language."
+msgstr ""
+
+#: editor/inspector_dock.cpp
+#, fuzzy
msgid "Copy Properties"
msgstr "Egenskaber"
@@ -8055,18 +8557,26 @@ msgid "License (Z-A)"
msgstr "Licens (Z-A)"
#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgctxt "Pagination"
msgid "First"
msgstr "Første"
-#: editor/plugins/asset_library_editor_plugin.cpp scene/gui/control.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgctxt "Pagination"
msgid "Previous"
msgstr "Forrige"
-#: editor/plugins/asset_library_editor_plugin.cpp scene/gui/control.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgctxt "Pagination"
msgid "Next"
msgstr "Næste"
#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgctxt "Pagination"
msgid "Last"
msgstr "Sidste"
@@ -8316,19 +8826,19 @@ msgid ""
"margins."
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Top Left"
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Top Right"
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Bottom Right"
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Bottom Left"
msgstr ""
@@ -9070,6 +9580,19 @@ msgstr ""
msgid "Gradient Edited"
msgstr ""
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+msgid "Swap GradientTexture2D Fill Points"
+msgstr ""
+
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+msgid "Swap Gradient Fill Points"
+msgstr ""
+
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+#, fuzzy
+msgid "Toggle Grid Snap"
+msgstr "Skifter Modus"
+
#: editor/plugins/item_list_editor_plugin.cpp
msgid "Item %d"
msgstr ""
@@ -9293,9 +9816,9 @@ msgid ""
"%s"
msgstr ""
-#: editor/plugins/mesh_library_editor_plugin.cpp modules/gridmap/grid_map.cpp
+#: editor/plugins/mesh_library_editor_plugin.cpp
#, fuzzy
-msgid "Mesh Library"
+msgid "MeshLibrary"
msgstr "MaskeBibliotek..."
#: editor/plugins/mesh_library_editor_plugin.cpp
@@ -10323,8 +10846,8 @@ msgstr "Forbind Til Node:"
msgid "Source"
msgstr "Ressource"
-#: editor/plugins/script_text_editor.cpp scene/3d/interpolated_camera.cpp
-#: scene/animation/skeleton_ik.cpp
+#: editor/plugins/script_text_editor.cpp platform/uwp/export/export.cpp
+#: scene/3d/interpolated_camera.cpp scene/animation/skeleton_ik.cpp
msgid "Target"
msgstr ""
@@ -11339,7 +11862,9 @@ msgstr ""
#: editor/plugins/sprite_frames_editor_plugin.cpp
#: modules/gltf/gltf_animation.cpp modules/minimp3/audio_stream_mp3.cpp
-#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp scene/2d/path_2d.cpp
+#: modules/minimp3/resource_importer_mp3.cpp
+#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp
+#: modules/stb_vorbis/resource_importer_ogg_vorbis.cpp scene/2d/path_2d.cpp
#: scene/3d/path.cpp scene/resources/animation.cpp scene/resources/material.cpp
msgid "Loop"
msgstr ""
@@ -12291,8 +12816,9 @@ msgstr ""
msgid "Priority"
msgstr "Eksporter Projekt"
-#: editor/plugins/tile_set_editor_plugin.cpp main/main.cpp scene/gui/button.cpp
-#: scene/gui/item_list.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp main/main.cpp
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#: scene/gui/button.cpp scene/gui/item_list.cpp
msgid "Icon"
msgstr ""
@@ -13669,10 +14195,6 @@ msgid ""
msgstr ""
#: editor/project_export.cpp
-msgid "Release"
-msgstr ""
-
-#: editor/project_export.cpp
#, fuzzy
msgid "Exporting All"
msgstr "Eksporter"
@@ -15547,6 +16069,7 @@ msgid "Change AudioStreamPlayer3D Emission Angle"
msgstr ""
#: editor/spatial_editor_gizmos.cpp modules/gltf/gltf_node.cpp
+#: platform/osx/export/export.cpp
msgid "Camera"
msgstr ""
@@ -15826,7 +16349,8 @@ msgstr ""
msgid "Use Nvidia Rect Flicker Workaround"
msgstr ""
-#: main/main.cpp platform/uwp/os_uwp.cpp
+#: main/main.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp platform/uwp/os_uwp.cpp
#, fuzzy
msgid "Display"
msgstr "Vis alle"
@@ -15885,19 +16409,6 @@ msgstr ""
msgid "Allowed"
msgstr ""
-#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp scene/2d/camera_2d.cpp
-#: scene/2d/light_2d.cpp scene/2d/navigation_polygon.cpp
-#: scene/2d/ray_cast_2d.cpp scene/2d/sprite.cpp scene/2d/y_sort.cpp
-#: scene/3d/audio_stream_player_3d.cpp scene/3d/baked_lightmap.cpp
-#: scene/3d/interpolated_camera.cpp scene/3d/light.cpp
-#: scene/3d/navigation_mesh_instance.cpp scene/3d/ray_cast.cpp
-#: scene/3d/sprite_3d.cpp scene/gui/graph_edit.cpp
-#: scene/gui/rich_text_label.cpp scene/resources/curve.cpp
-#: scene/resources/environment.cpp
-#, fuzzy
-msgid "Enabled"
-msgstr "Aktivér"
-
#: main/main.cpp
msgid "Intended Usage"
msgstr ""
@@ -15928,13 +16439,14 @@ msgstr ""
msgid "Handheld"
msgstr ""
-#: main/main.cpp
+#: main/main.cpp platform/javascript/export/export.cpp
+#: platform/uwp/export/export.cpp
#, fuzzy
msgid "Orientation"
msgstr "Ã…ben Seneste"
#: main/main.cpp scene/gui/scroll_container.cpp scene/gui/text_edit.cpp
-#: scene/main/scene_tree.cpp
+#: scene/main/scene_tree.cpp scene/register_scene_types.cpp
#, fuzzy
msgid "Common"
msgstr "Fællesskab"
@@ -15976,7 +16488,7 @@ msgstr ""
#: main/main.cpp
#, fuzzy
-msgid "Frame Delay (msec)"
+msgid "Frame Delay Msec"
msgstr "Frame Tid (sek)"
#: main/main.cpp
@@ -16099,11 +16611,6 @@ msgstr ""
msgid "Tooltip Position Offset"
msgstr ""
-#: main/main.cpp modules/mono/editor/csharp_project.cpp
-#: modules/mono/mono_gd/gd_mono.cpp
-msgid "Mono"
-msgstr ""
-
#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp
msgid "Debugger Agent"
msgstr ""
@@ -16665,7 +17172,7 @@ msgstr ""
msgid "Intensity"
msgstr ""
-#: modules/gltf/gltf_light.cpp scene/2d/light_2d.cpp
+#: modules/gltf/gltf_light.cpp scene/2d/light_2d.cpp scene/3d/light.cpp
#, fuzzy
msgid "Range"
msgstr "Skift"
@@ -16805,11 +17312,6 @@ msgstr ""
msgid "Use Named Skin Binds"
msgstr ""
-#: modules/gltf/gltf_state.cpp scene/3d/physics_joint.cpp
-#, fuzzy
-msgid "Nodes"
-msgstr "Node"
-
#: modules/gltf/gltf_state.cpp
msgid "Buffer Views"
msgstr ""
@@ -16819,15 +17321,6 @@ msgid "Accessors"
msgstr ""
#: modules/gltf/gltf_state.cpp
-msgid "Meshes"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp
-#, fuzzy
-msgid "Materials"
-msgstr "Skift Shader"
-
-#: modules/gltf/gltf_state.cpp
#, fuzzy
msgid "Scene Name"
msgstr "Scene Sti:"
@@ -16844,15 +17337,11 @@ msgstr "Omdøb"
msgid "Textures"
msgstr "Fjern Template"
-#: modules/gltf/gltf_state.cpp
+#: modules/gltf/gltf_state.cpp platform/uwp/export/export.cpp
msgid "Images"
msgstr ""
#: modules/gltf/gltf_state.cpp
-msgid "Skins"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp
msgid "Cameras"
msgstr ""
@@ -16886,10 +17375,15 @@ msgstr ""
#: modules/gridmap/grid_map.cpp
#, fuzzy
+msgid "Mesh Library"
+msgstr "MaskeBibliotek..."
+
+#: modules/gridmap/grid_map.cpp
+#, fuzzy
msgid "Physics Material"
msgstr "Fysik Frame %"
-#: modules/gridmap/grid_map.cpp
+#: modules/gridmap/grid_map.cpp scene/3d/visual_instance.cpp
msgid "Use In Baked Light"
msgstr ""
@@ -16920,6 +17414,7 @@ msgstr "Vælg Node"
#: modules/gridmap/grid_map.cpp scene/2d/collision_object_2d.cpp
#: scene/2d/tile_map.cpp scene/3d/collision_object.cpp scene/3d/soft_body.cpp
+#: scene/resources/material.cpp
msgid "Mask"
msgstr ""
@@ -17112,7 +17607,9 @@ msgid "Ultra Quality Ray Count"
msgstr ""
#: modules/minimp3/audio_stream_mp3.cpp
+#: modules/minimp3/resource_importer_mp3.cpp
#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp
+#: modules/stb_vorbis/resource_importer_ogg_vorbis.cpp
#, fuzzy
msgid "Loop Offset"
msgstr "Skifter Modus"
@@ -18232,6 +18729,188 @@ msgid "The package must have at least one '.' separator."
msgstr ""
#: platform/android/export/export_plugin.cpp
+msgid "Use Custom Build"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Export Format"
+msgstr "Eksporter Projekt"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Keystore"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Debug User"
+msgstr "Fejlfinde"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+msgid "Debug Password"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Release User"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Release Password"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "One Click Deploy"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Clear Previous Install"
+msgstr "Forrige fane"
+
+#: platform/android/export/export_plugin.cpp scene/resources/shader.cpp
+msgid "Code"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Min SDK"
+msgstr "Skrifttype Størrelse:"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Target SDK"
+msgstr "Tidsskala Node"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Package"
+msgstr "Pakker"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Unique Name"
+msgstr "Node Navn:"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Signed"
+msgstr "Signaler"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Classify As Game"
+msgstr "Klasse:"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Retain Data On Uninstall"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Exclude From Recents"
+msgstr "Vælg Node"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Graphics"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "OpenGL Debug"
+msgstr "Ã…ben"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "XR Features"
+msgstr "Funktions Liste:"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "XR Mode"
+msgstr "Skifter Modus"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Hand Tracking"
+msgstr "Pakker"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Hand Tracking Frequency"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Passthrough"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Immersive Mode"
+msgstr "Eksporter Projekt"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Support Small"
+msgstr "Support"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Support Normal"
+msgstr "Support"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Support Large"
+msgstr "Support"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Support Xlarge"
+msgstr "Support"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "User Data Backup"
+msgstr "Ã…bn Projekt datamappe"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Allow"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Command Line"
+msgstr "Fællesskab"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Extra Args"
+msgstr "Ekstra Call Argumenter:"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "APK Expansion"
+msgstr "Skift udtryk"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Salt"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Public Key"
+msgstr "Dublikér nøgle(r)"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Permissions"
+msgstr "Skift udtryk"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Custom Permissions"
+msgstr "Spil Brugerdefineret Scene"
+
+#: platform/android/export/export_plugin.cpp
msgid "Select device from the list"
msgstr "Vælg enhed fra listen"
@@ -18537,6 +19216,177 @@ msgid "The character '%s' is not allowed in Identifier."
msgstr "Navnet er ikke et gyldigt id:"
#: platform/iphone/export/export.cpp
+msgid "App Store Team ID"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Provisioning Profile UUID Debug"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Code Sign Identity Debug"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Export Method Debug"
+msgstr "Eksporter Projekt"
+
+#: platform/iphone/export/export.cpp
+msgid "Provisioning Profile UUID Release"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Code Sign Identity Release"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Export Method Release"
+msgstr "Eksporter Projekt"
+
+#: platform/iphone/export/export.cpp
+msgid "Targeted Device Family"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Info"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Identifier"
+msgstr "Navnet er ikke et gyldigt id:"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Signature"
+msgstr "Signaler"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Short Version"
+msgstr "Version:"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Copyright"
+msgstr "Kopier"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Capabilities"
+msgstr "Egenskaber"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Access Wi-Fi"
+msgstr "Succes!"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Push Notifications"
+msgstr "Konstant"
+
+#: platform/iphone/export/export.cpp scene/3d/baked_lightmap.cpp
+#, fuzzy
+msgid "User Data"
+msgstr "Ã…bn Projekt datamappe"
+
+#: platform/iphone/export/export.cpp
+msgid "Accessible From Files App"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Accessible From Itunes Sharing"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Privacy"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Camera Usage Description"
+msgstr "Beskrivelse"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Microphone Usage Description"
+msgstr "Egenskab beskrivelser"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Photolibrary Usage Description"
+msgstr "Egenskab beskrivelser"
+
+#: platform/iphone/export/export.cpp
+msgid "iPhone 120 X 120"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPhone 180 X 180"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 76 X 76"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 152 X 152"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 167 X 167"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "App Store 1024 X 1024"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Spotlight 40 X 40"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Spotlight 80 X 80"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Storyboard"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Use Launch Screen Storyboard"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Image Scale Mode"
+msgstr "Skifter Modus"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Custom Image @2x"
+msgstr "Indsæt Node"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Custom Image @3x"
+msgstr "Indsæt Node"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Use Custom BG Color"
+msgstr "Indsæt Node"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Custom BG Color"
+msgstr "Indsæt Node"
+
+#: platform/iphone/export/export.cpp
msgid "App Store Team ID not specified - cannot configure the project."
msgstr ""
@@ -18579,6 +19429,80 @@ msgstr "Kunne ikke skrive til fil:\n"
#: platform/javascript/export/export.cpp
#, fuzzy
+msgid "Variant"
+msgstr "Tællinger:"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Export Type"
+msgstr "Eksport"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "VRAM Texture Compression"
+msgstr "Skift udtryk"
+
+#: platform/javascript/export/export.cpp
+msgid "For Desktop"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "For Mobile"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Html"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Export Icon"
+msgstr "Udvid alle"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Custom Html Shell"
+msgstr "Indsæt Node"
+
+#: platform/javascript/export/export.cpp
+msgid "Head Include"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Canvas Resize Policy"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Focus Canvas On Start"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Experimental Virtual Keyboard"
+msgstr "Filtrer filer..."
+
+#: platform/javascript/export/export.cpp
+msgid "Progressive Web App"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Offline Page"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 144 X 144"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 180 X 180"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 512 X 512"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
msgid "Could not read HTML shell:"
msgstr "Kan ikke læse brugerdefineret HTML shell:\n"
@@ -18692,6 +19616,200 @@ msgid "Unknown object type."
msgstr ""
#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "App Category"
+msgstr "Kategori:"
+
+#: platform/osx/export/export.cpp
+msgid "High Res"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Location Usage Description"
+msgstr "Beskrivelse"
+
+#: platform/osx/export/export.cpp
+msgid "Address Book Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Calendar Usage Description"
+msgstr "Beskrivelse"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Photos Library Usage Description"
+msgstr "Egenskab beskrivelser"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Desktop Folder Usage Description"
+msgstr "Metode beskrivelser"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Documents Folder Usage Description"
+msgstr "Metode beskrivelser"
+
+#: platform/osx/export/export.cpp
+msgid "Downloads Folder Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Network Volumes Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Removable Volumes Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#, fuzzy
+msgid "Codesign"
+msgstr "Node"
+
+#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
+#: platform/windows/export/export.cpp
+msgid "Identity"
+msgstr ""
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#, fuzzy
+msgid "Timestamp"
+msgstr "Tid"
+
+#: platform/osx/export/export.cpp
+msgid "Hardened Runtime"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Replace Existing Signature"
+msgstr "Erstat Alle"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Entitlements"
+msgstr "Indhold:"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Custom File"
+msgstr "Indsæt Node"
+
+#: platform/osx/export/export.cpp
+msgid "Allow JIT Code Execution"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Allow Unsigned Executable Memory"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Allow Dyld Environment Variables"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Disable Library Validation"
+msgstr "Deaktiveret"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Audio Input"
+msgstr "Tilføj Input"
+
+#: platform/osx/export/export.cpp
+msgid "Address Book"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Calendars"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Photos Library"
+msgstr "Eksporter Bibliotek"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Apple Events"
+msgstr "Anvende nulstilling"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Debugging"
+msgstr "Fejlfinde"
+
+#: platform/osx/export/export.cpp
+msgid "App Sandbox"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Network Server"
+msgstr "Eksporter Projekt"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Network Client"
+msgstr "Eksporter Projekt"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Device Usb"
+msgstr "Enhed"
+
+#: platform/osx/export/export.cpp
+msgid "Device Bluetooth"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Files Downloads"
+msgstr "Download"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Files Pictures"
+msgstr "Filtrer filer..."
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Files Music"
+msgstr "Fil:"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Files Movies"
+msgstr "Filtrer filer..."
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#, fuzzy
+msgid "Custom Options"
+msgstr "Bus muligheder"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Notarization"
+msgstr "Rediger Poly"
+
+#: platform/osx/export/export.cpp
+msgid "Apple ID Name"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Apple ID Password"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Apple Team ID"
+msgstr ""
+
+#: platform/osx/export/export.cpp
msgid ""
"Note: The notarization process generally takes less than an hour. When the "
"process is completed, you'll receive an email."
@@ -18885,6 +20003,133 @@ msgid "Force Builtin Codesign"
msgstr ""
#: platform/uwp/export/export.cpp
+msgid "Architecture"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Display Name"
+msgstr "Vis alle"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Short Name"
+msgstr "Ændre Input Værdi"
+
+#: platform/uwp/export/export.cpp
+msgid "Publisher"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Publisher Display Name"
+msgstr "Ugyldigt index egenskabsnavn."
+
+#: platform/uwp/export/export.cpp
+msgid "Product Guid"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Publisher Guid"
+msgstr "Spil Brugerdefineret Scene"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Signing"
+msgstr "Signaler"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Certificate"
+msgstr "Egenskaber"
+
+#: platform/uwp/export/export.cpp
+msgid "Algorithm"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Major"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Minor"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Build"
+msgstr "Skifter Modus"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Revision"
+msgstr "Skift udtryk"
+
+#: platform/uwp/export/export.cpp
+msgid "Landscape"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Portrait"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Landscape Flipped"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Portrait Flipped"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Store Logo"
+msgstr "Skifter Modus"
+
+#: platform/uwp/export/export.cpp
+msgid "Square 44 X 44 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 71 X 71 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 150 X 150 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 310 X 310 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Wide 310 X 150 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Splash Screen"
+msgstr "Kald"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Tiles"
+msgstr "Fil:"
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Square 150 X 150"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Wide 310 X 150"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Square 310 X 310"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
#, fuzzy
msgid "Invalid package short name."
msgstr "Ugyldigt navn."
@@ -18956,11 +20201,48 @@ msgid "Debug Certificate"
msgstr ""
#: platform/uwp/export/export.cpp
-msgid "Debug Password"
+msgid "Debug Algorithm"
msgstr ""
-#: platform/uwp/export/export.cpp
-msgid "Debug Algorithm"
+#: platform/windows/export/export.cpp
+msgid "Identity Type"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Timestamp Server URL"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Digest Algorithm"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "File Version"
+msgstr "Version:"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Product Version"
+msgstr "Ugyldig skriftstørrelse."
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Company Name"
+msgstr "Node Navn:"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Product Name"
+msgstr "Grupper"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "File Description"
+msgstr "Beskrivelse"
+
+#: platform/windows/export/export.cpp
+msgid "Trademarks"
msgstr ""
#: platform/windows/export/export.cpp
@@ -19038,12 +20320,14 @@ msgstr "Spil"
msgid "Centered"
msgstr "Vælg Node"
-#: scene/2d/animated_sprite.cpp scene/2d/camera_2d.cpp scene/2d/light_2d.cpp
+#: scene/2d/animated_sprite.cpp scene/2d/camera_2d.cpp
+#: scene/2d/cpu_particles_2d.cpp scene/2d/light_2d.cpp
#: scene/2d/parallax_background.cpp scene/2d/parallax_layer.cpp
#: scene/2d/path_2d.cpp scene/2d/polygon_2d.cpp scene/2d/sprite.cpp
-#: scene/3d/path.cpp scene/3d/physics_body.cpp scene/3d/sprite_3d.cpp
-#: scene/gui/graph_node.cpp scene/gui/rich_text_effect.cpp
-#: scene/main/canvas_layer.cpp scene/resources/material.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/path.cpp scene/3d/physics_body.cpp
+#: scene/3d/sprite_3d.cpp scene/gui/graph_node.cpp
+#: scene/gui/rich_text_effect.cpp scene/main/canvas_layer.cpp
+#: scene/resources/material.cpp scene/resources/particles_material.cpp
#: scene/resources/style_box.cpp
msgid "Offset"
msgstr ""
@@ -19114,11 +20398,6 @@ msgstr "Tilføj Audio Bus"
msgid "Override"
msgstr "Fysik Frame %"
-#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
-#: scene/audio/audio_stream_player.cpp scene/gui/video_player.cpp
-msgid "Stream"
-msgstr ""
-
#: scene/2d/audio_stream_player_2d.cpp scene/audio/audio_stream_player.cpp
#: scene/gui/video_player.cpp servers/audio/effects/audio_effect_amplify.cpp
msgid "Volume dB"
@@ -19144,13 +20423,13 @@ msgid "Stream Paused"
msgstr ""
#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
-#: scene/3d/reflection_probe.cpp scene/3d/visual_instance.cpp
-#: scene/resources/material.cpp
+#: scene/3d/light.cpp scene/3d/reflection_probe.cpp
+#: scene/3d/visual_instance.cpp scene/resources/material.cpp
#, fuzzy
msgid "Max Distance"
msgstr "Instans"
-#: scene/2d/audio_stream_player_2d.cpp
+#: scene/2d/audio_stream_player_2d.cpp scene/3d/light.cpp
#, fuzzy
msgid "Attenuation"
msgstr "Animation"
@@ -19205,6 +20484,24 @@ msgstr "Eksporter Projekt"
msgid "Limit"
msgstr ""
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/style_box.cpp
+#, fuzzy
+msgid "Left"
+msgstr "Lineær"
+
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/style_box.cpp
+#, fuzzy
+msgid "Right"
+msgstr "Lineær"
+
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/dynamic_font.cpp scene/resources/style_box.cpp
+#, fuzzy
+msgid "Bottom"
+msgstr "Fjern Alt"
+
#: scene/2d/camera_2d.cpp
msgid "Smoothed"
msgstr ""
@@ -19424,13 +20721,6 @@ msgstr ""
msgid "Emitting"
msgstr "Tester"
-#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp scene/3d/area.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
-#: scene/resources/environment.cpp
-#, fuzzy
-msgid "Amount"
-msgstr "Mængde:"
-
#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp
#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
msgid "Lifetime"
@@ -19493,18 +20783,13 @@ msgstr ""
#: scene/2d/mesh_instance_2d.cpp scene/2d/multimesh_instance_2d.cpp
#: scene/2d/particles_2d.cpp scene/2d/polygon_2d.cpp scene/2d/sprite.cpp
#: scene/3d/sprite_3d.cpp scene/gui/nine_patch_rect.cpp
-#: scene/gui/texture_rect.cpp scene/resources/sky.cpp
-#: scene/resources/style_box.cpp scene/resources/visual_shader_nodes.cpp
+#: scene/gui/texture_rect.cpp scene/resources/material.cpp
+#: scene/resources/sky.cpp scene/resources/style_box.cpp
+#: scene/resources/visual_shader_nodes.cpp
#, fuzzy
msgid "Texture"
msgstr "Fjern Template"
-#: scene/2d/cpu_particles_2d.cpp scene/2d/mesh_instance_2d.cpp
-#: scene/2d/multimesh_instance_2d.cpp scene/2d/particles_2d.cpp
-#: scene/2d/sprite.cpp scene/resources/style_box.cpp
-msgid "Normal Map"
-msgstr ""
-
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
#, fuzzy
@@ -19525,9 +20810,8 @@ msgid "Normals"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/3d/sprite_3d.cpp scene/resources/material.cpp
-#: scene/resources/particles_material.cpp scene/resources/texture.cpp
-msgid "Flags"
+#: scene/resources/particles_material.cpp
+msgid "Align Y"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
@@ -19548,6 +20832,11 @@ msgid "Initial Velocity"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Velocity Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp servers/physics_2d_server.cpp
#: servers/physics_server.cpp
msgid "Angular Velocity"
@@ -19555,6 +20844,12 @@ msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Velocity Curve"
+msgstr "Rediger Node Kurve"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
msgid "Orbit Velocity"
msgstr ""
@@ -19566,6 +20861,23 @@ msgstr "Lineær"
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Accel"
+msgstr "Succes!"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Accel Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Accel Curve"
+msgstr "Rediger Node Kurve"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
msgid "Radial Accel"
msgstr ""
@@ -19575,19 +20887,55 @@ msgid "Tangential Accel"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/2d/joints_2d.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/vehicle_body.cpp
-#: scene/resources/particles_material.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/physics_joint.cpp
+#: scene/3d/vehicle_body.cpp scene/resources/particles_material.cpp
#: servers/audio/effects/audio_effect_reverb.cpp
msgid "Damping"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+msgid "Damping Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Damping Curve"
+msgstr "Rediger Node Kurve"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp scene/3d/light.cpp
+#: scene/resources/particles_material.cpp
msgid "Angle"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+msgid "Angle Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Angle Curve"
+msgstr "Rediger Node Kurve"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#, fuzzy
+msgid "Scale Amount"
+msgstr "Mængde:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+msgid "Scale Amount Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#, fuzzy
+msgid "Scale Amount Curve"
+msgstr "Skaler Fra Cursor"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
msgid "Color Ramp"
msgstr ""
@@ -19602,6 +20950,47 @@ msgstr ""
msgid "Hue Variation"
msgstr "Tællinger:"
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Variation"
+msgstr "Tællinger:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Variation Random"
+msgstr "Tællinger:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Variation Curve"
+msgstr "Tællinger:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Speed Random"
+msgstr "Skalér:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Speed Curve"
+msgstr "Rediger Node Kurve"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Offset Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Offset Curve"
+msgstr "Rediger Node Kurve"
+
#: scene/2d/joints_2d.cpp
msgid "Node A and Node B must be PhysicsBody2Ds"
msgstr ""
@@ -19633,6 +21022,7 @@ msgid "Node B"
msgstr "Node"
#: scene/2d/joints_2d.cpp scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp
+#: scene/3d/light.cpp scene/3d/physics_joint.cpp
#: scene/resources/environment.cpp
msgid "Bias"
msgstr ""
@@ -19642,7 +21032,7 @@ msgstr ""
msgid "Disable Collision"
msgstr "Deaktiveret"
-#: scene/2d/joints_2d.cpp
+#: scene/2d/joints_2d.cpp scene/3d/physics_joint.cpp
msgid "Softness"
msgstr ""
@@ -19659,7 +21049,7 @@ msgstr ""
msgid "Rest Length"
msgstr ""
-#: scene/2d/joints_2d.cpp scene/3d/vehicle_body.cpp
+#: scene/2d/joints_2d.cpp scene/3d/physics_joint.cpp scene/3d/vehicle_body.cpp
msgid "Stiffness"
msgstr ""
@@ -19680,7 +21070,7 @@ msgid "Texture Scale"
msgstr ""
#: scene/2d/light_2d.cpp scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp
-#: scene/resources/environment.cpp scene/resources/sky.cpp
+#: scene/3d/light.cpp scene/resources/environment.cpp scene/resources/sky.cpp
msgid "Energy"
msgstr ""
@@ -19718,12 +21108,6 @@ msgstr "Skrifttype Størrelse:"
msgid "Gradient Length"
msgstr "Standard"
-#: scene/2d/light_2d.cpp scene/gui/control.cpp
-#: scene/resources/navigation_mesh.cpp
-#, fuzzy
-msgid "Filter"
-msgstr "Filter:"
-
#: scene/2d/light_2d.cpp
#, fuzzy
msgid "Filter Smooth"
@@ -20134,10 +21518,6 @@ msgid "Applied Forces"
msgstr ""
#: scene/2d/physics_body_2d.cpp
-msgid "Force"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp
msgid "Torque"
msgstr ""
@@ -20151,7 +21531,7 @@ msgid "Sync To Physics"
msgstr "Fysik Frame %"
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-msgid "Moving platform"
+msgid "Moving Platform"
msgstr ""
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
@@ -20160,7 +21540,7 @@ msgstr ""
#: scene/2d/physics_body_2d.cpp scene/2d/touch_screen_button.cpp
#: scene/3d/physics_body.cpp scene/gui/texture_button.cpp
-#: scene/resources/line_shape_2d.cpp
+#: scene/resources/line_shape_2d.cpp scene/resources/material.cpp
msgid "Normal"
msgstr ""
@@ -20395,6 +21775,34 @@ msgstr ""
"VisibilityEnable2D fungerer bedst, når det bruges med den redigerede "
"scenerod direkte som parent."
+#: scene/2d/visibility_notifier_2d.cpp scene/3d/visibility_notifier.cpp
+#, fuzzy
+msgid "Pause Animations"
+msgstr "Tilføj animation"
+
+#: scene/2d/visibility_notifier_2d.cpp scene/3d/visibility_notifier.cpp
+msgid "Freeze Bodies"
+msgstr ""
+
+#: scene/2d/visibility_notifier_2d.cpp
+#, fuzzy
+msgid "Pause Particles"
+msgstr "Indsæt Parametre"
+
+#: scene/2d/visibility_notifier_2d.cpp
+#, fuzzy
+msgid "Pause Animated Sprites"
+msgstr "Ændre animationsskridt"
+
+#: scene/2d/visibility_notifier_2d.cpp
+#, fuzzy
+msgid "Process Parent"
+msgstr "Rediger filtre"
+
+#: scene/2d/visibility_notifier_2d.cpp
+msgid "Physics Process Parent"
+msgstr ""
+
#: scene/3d/area.cpp
msgid "Reverb Bus"
msgstr ""
@@ -20489,6 +21897,7 @@ msgid "Attenuation Filter"
msgstr ""
#: scene/3d/audio_stream_player_3d.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
#: servers/audio/effects/audio_effect_filter.cpp
msgid "Cutoff Hz"
msgstr ""
@@ -20532,11 +21941,6 @@ msgid "Octree"
msgstr ""
#: scene/3d/baked_lightmap.cpp
-#, fuzzy
-msgid "User Data"
-msgstr "Ã…bn Projekt datamappe"
-
-#: scene/3d/baked_lightmap.cpp
msgid "Finding meshes and lights"
msgstr ""
@@ -20796,6 +22200,16 @@ msgid "Ring Axis"
msgstr "Advarsler"
#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Rotate Y"
+msgstr "Konstant"
+
+#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Disable Z"
+msgstr "Deaktiveret"
+
+#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
msgid "Flatness"
msgstr ""
@@ -20833,16 +22247,11 @@ msgstr ""
msgid "Dynamic Range"
msgstr ""
-#: scene/3d/gi_probe.cpp
+#: scene/3d/gi_probe.cpp scene/3d/light.cpp
msgid "Normal Bias"
msgstr ""
#: scene/3d/gi_probe.cpp
-#, fuzzy
-msgid "Compress"
-msgstr "Komponenter"
-
-#: scene/3d/gi_probe.cpp
msgid "Plotting Meshes"
msgstr ""
@@ -20868,16 +22277,30 @@ msgid "Subdiv"
msgstr ""
#: scene/3d/light.cpp
+msgid "Indirect Energy"
+msgstr ""
+
+#: scene/3d/light.cpp
msgid "Negative"
msgstr ""
#: scene/3d/light.cpp
#, fuzzy
+msgid "Specular"
+msgstr "Skifter Modus"
+
+#: scene/3d/light.cpp
+#, fuzzy
msgid "Bake Mode"
msgstr "Skifter Modus"
#: scene/3d/light.cpp
#, fuzzy
+msgid "Contact"
+msgstr "Indhold:"
+
+#: scene/3d/light.cpp
+#, fuzzy
msgid "Reverse Cull Face"
msgstr "Nulstil Bus Volume"
@@ -20887,11 +22310,31 @@ msgid "Directional Shadow"
msgstr "Retninger"
#: scene/3d/light.cpp
+#, fuzzy
+msgid "Split 1"
+msgstr "Rediger Node Kurve"
+
+#: scene/3d/light.cpp
+#, fuzzy
+msgid "Split 2"
+msgstr "Rediger Node Kurve"
+
+#: scene/3d/light.cpp
+#, fuzzy
+msgid "Split 3"
+msgstr "Rediger Node Kurve"
+
+#: scene/3d/light.cpp
msgid "Blend Splits"
msgstr ""
#: scene/3d/light.cpp
#, fuzzy
+msgid "Bias Split Scale"
+msgstr "Ã…ben script"
+
+#: scene/3d/light.cpp
+#, fuzzy
msgid "Depth Range"
msgstr "Dybde"
@@ -20917,6 +22360,11 @@ msgstr ""
msgid "Spot"
msgstr ""
+#: scene/3d/light.cpp
+#, fuzzy
+msgid "Angle Attenuation"
+msgstr "Animation"
+
#: scene/3d/mesh_instance.cpp
msgid "Software Skinning"
msgstr ""
@@ -21045,6 +22493,63 @@ msgid "Axis Lock"
msgstr "Akse"
#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Linear X"
+msgstr "Lineær"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Linear Y"
+msgstr "Lineær"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Linear Z"
+msgstr "Lineær"
+
+#: scene/3d/physics_body.cpp
+msgid "Angular X"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Angular Y"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Angular Z"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Motion X"
+msgstr "Tilføj Funktion"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Motion Y"
+msgstr "Tilføj Funktion"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Motion Z"
+msgstr "Tilføj Funktion"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Move Lock X"
+msgstr "Flyt Node"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Move Lock Y"
+msgstr "Flyt Node"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Move Lock Z"
+msgstr "Flyt Node"
+
+#: scene/3d/physics_body.cpp
msgid "Body Offset"
msgstr ""
@@ -21078,6 +22583,15 @@ msgid "Exclude Nodes"
msgstr "Vælg Node"
#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Params"
+msgstr "Skift Shader"
+
+#: scene/3d/physics_joint.cpp
+msgid "Impulse Clamp"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit"
msgstr ""
@@ -21089,6 +22603,55 @@ msgstr ""
msgid "Lower"
msgstr ""
+#: scene/3d/physics_joint.cpp scene/3d/vehicle_body.cpp
+#, fuzzy
+msgid "Relaxation"
+msgstr "Tællinger:"
+
+#: scene/3d/physics_joint.cpp
+msgid "Motor"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Target Velocity"
+msgstr "Lineær"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Max Impulse"
+msgstr "Værdi:"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit"
+msgstr "Lineær"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Upper Distance"
+msgstr "Instans"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Lower Distance"
+msgstr "Instans"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Restitution"
+msgstr "Beskrivelse"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motion"
+msgstr "Lineær"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Ortho"
+msgstr "Lineær"
+
#: scene/3d/physics_joint.cpp
msgid "Upper Angle"
msgstr ""
@@ -21099,6 +22662,16 @@ msgstr ""
#: scene/3d/physics_joint.cpp
#, fuzzy
+msgid "Angular Motion"
+msgstr "Animation"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Angular Ortho"
+msgstr "Max. Azimutal fejl:"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
msgid "Swing Span"
msgstr "Gemmer Scene"
@@ -21107,17 +22680,99 @@ msgid "Twist Span"
msgstr ""
#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit X"
+msgstr "Lineær"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motor X"
+msgstr "Lineær"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Force Limit"
+msgstr "Kald"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Spring X"
+msgstr "Lineær"
+
+#: scene/3d/physics_joint.cpp
+msgid "Equilibrium Point"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit X"
msgstr ""
#: scene/3d/physics_joint.cpp
+msgid "Erp"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Motor X"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Spring X"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit Y"
+msgstr "Lineær"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motor Y"
+msgstr "Lineær"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Spring Y"
+msgstr "Lineær"
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit Y"
msgstr ""
#: scene/3d/physics_joint.cpp
+msgid "Angular Motor Y"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Spring Y"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit Z"
+msgstr "Lineær"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motor Z"
+msgstr "Lineær"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Spring Z"
+msgstr "Lineær"
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit Z"
msgstr ""
+#: scene/3d/physics_joint.cpp
+msgid "Angular Motor Z"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Spring Z"
+msgstr ""
+
#: scene/3d/portal.cpp
msgid "The RoomManager should not be a child or grandchild of a Portal."
msgstr ""
@@ -21233,7 +22888,7 @@ msgstr ""
msgid "Use Default Simplify"
msgstr ""
-#: scene/3d/room.cpp
+#: scene/3d/room.cpp scene/3d/room_manager.cpp
msgid "Room Simplify"
msgstr ""
@@ -21272,6 +22927,13 @@ msgstr ""
msgid "Main"
msgstr ""
+#: scene/3d/room_manager.cpp scene/animation/animation_player.cpp
+#: scene/animation/animation_tree.cpp scene/animation/animation_tree_player.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+#, fuzzy
+msgid "Active"
+msgstr "Tilføj Funktion"
+
#: scene/3d/room_manager.cpp
msgid "Roomlist"
msgstr ""
@@ -21296,6 +22958,52 @@ msgid "Gameplay"
msgstr ""
#: scene/3d/room_manager.cpp
+msgid "Gameplay Monitor"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "Use Secondary PVS"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Merge Meshes"
+msgstr "Filter mode:"
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Show Margins"
+msgstr "Vis i Filsystem"
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Debug Sprawl"
+msgstr "Fejlfinde"
+
+#: scene/3d/room_manager.cpp
+msgid "Overlap Warning Threshold"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Preview Camera"
+msgstr "Forhåndsvisning:"
+
+#: scene/3d/room_manager.cpp
+msgid "Portal Depth Limit"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Default Portal Margin"
+msgstr "Standard"
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Roaming Expansion Margin"
+msgstr "Udvid alle"
+
+#: scene/3d/room_manager.cpp
msgid ""
"RoomList path is invalid.\n"
"Please check the RoomList branch has been assigned in the RoomManager."
@@ -21418,6 +23126,20 @@ msgstr ""
msgid "Billboard"
msgstr ""
+#: scene/3d/sprite_3d.cpp scene/resources/material.cpp
+#, fuzzy
+msgid "Transparent"
+msgstr "Oversætter: "
+
+#: scene/3d/sprite_3d.cpp
+#, fuzzy
+msgid "Shaded"
+msgstr "Skift Shader"
+
+#: scene/3d/sprite_3d.cpp
+msgid "Double Sided"
+msgstr ""
+
#: scene/3d/sprite_3d.cpp
msgid "Alpha Cut"
msgstr ""
@@ -21491,11 +23213,6 @@ msgstr "Skift udtryk"
msgid "Max Force"
msgstr "Fejl!"
-#: scene/3d/vehicle_body.cpp
-#, fuzzy
-msgid "Relaxation"
-msgstr "Tællinger:"
-
#: scene/3d/visibility_notifier.cpp
msgid "AABB"
msgstr ""
@@ -21631,7 +23348,7 @@ msgstr ""
#: scene/animation/animation_blend_tree.cpp
#, fuzzy
-msgid "autorestart_"
+msgid "Auto Restart"
msgstr "Auto Genstart:"
#: scene/animation/animation_blend_tree.cpp
@@ -21715,13 +23432,6 @@ msgstr "Klasse beskrivelse:"
msgid "Default Blend Time"
msgstr "Standard"
-#: scene/animation/animation_player.cpp scene/animation/animation_tree.cpp
-#: scene/animation/animation_tree_player.cpp
-#: servers/audio/effects/audio_effect_delay.cpp
-#, fuzzy
-msgid "Active"
-msgstr "Tilføj Funktion"
-
#: scene/animation/animation_player.cpp
msgid "Method Call Mode"
msgstr ""
@@ -21846,10 +23556,6 @@ msgstr "Tidsskala Node"
msgid "Max Iterations"
msgstr "Omdøb Funktion"
-#: scene/animation/tween.cpp scene/resources/texture.cpp
-msgid "Repeat"
-msgstr ""
-
#: scene/animation/tween.cpp
msgid "Playback Process Mode"
msgstr ""
@@ -21879,20 +23585,6 @@ msgstr "Skifter Modus"
msgid "Alignment"
msgstr ""
-#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
-#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
-#: scene/resources/style_box.cpp
-#, fuzzy
-msgid "Horizontal"
-msgstr "Fjern horisontal guide"
-
-#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
-#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
-#: scene/resources/style_box.cpp
-#, fuzzy
-msgid "Vertical"
-msgstr "Fjern vertikal guide"
-
#: scene/gui/base_button.cpp
msgid "Shortcut In Tooltip"
msgstr ""
@@ -21989,10 +23681,6 @@ msgid "HSV"
msgstr ""
#: scene/gui/color_picker.cpp
-msgid "Raw"
-msgstr ""
-
-#: scene/gui/color_picker.cpp
msgid "Switch between hexadecimal and code values."
msgstr ""
@@ -22051,6 +23739,30 @@ msgid "Focus"
msgstr "Fokus Sti"
#: scene/gui/control.cpp
+msgid "Neighbour Left"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Neighbour Top"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Neighbour Right"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Neighbour Bottom"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Next"
+msgstr "Næste"
+
+#: scene/gui/control.cpp
+msgid "Previous"
+msgstr "Forrige"
+
+#: scene/gui/control.cpp
msgid "Mouse"
msgstr ""
@@ -22086,7 +23798,7 @@ msgid "Dialog"
msgstr ""
#: scene/gui/dialogs.cpp
-msgid "Hide On Ok"
+msgid "Hide On OK"
msgstr ""
#: scene/gui/dialogs.cpp scene/gui/label.cpp
@@ -22181,7 +23893,7 @@ msgid "Timers"
msgstr "Tid"
#: scene/gui/item_list.cpp scene/gui/popup_menu.cpp scene/gui/tree.cpp
-msgid "Incremental Search Max Interval (msec)"
+msgid "Incremental Search Max Interval Msec"
msgstr ""
#: scene/gui/item_list.cpp scene/gui/tree.cpp
@@ -22745,6 +24457,26 @@ msgstr "Vælg Node"
msgid "Nine Patch Stretch"
msgstr "Interpolationsmetode"
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Left"
+msgstr "Skifter Modus"
+
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Top"
+msgstr "Skifter Modus"
+
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Right"
+msgstr "Skifter Modus"
+
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Bottom"
+msgstr "Skifter Modus"
+
#: scene/gui/tree.cpp
msgid "Custom Minimum Height"
msgstr ""
@@ -22782,8 +24514,9 @@ msgid "Paused"
msgstr ""
#: scene/gui/video_player.cpp
-msgid "Buffering (msec)"
-msgstr ""
+#, fuzzy
+msgid "Buffering Msec"
+msgstr "Skrifttype Størrelse:"
#: scene/gui/video_player.cpp
#, fuzzy
@@ -23125,6 +24858,22 @@ msgid "Shadow Atlas"
msgstr ""
#: scene/main/viewport.cpp
+msgid "Quad 0"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 1"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 2"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 3"
+msgstr ""
+
+#: scene/main/viewport.cpp
#, fuzzy
msgid "Canvas Transform"
msgstr "Anim Skift Transformering"
@@ -23139,6 +24888,11 @@ msgid "Tooltip Delay (sec)"
msgstr ""
#: scene/register_scene_types.cpp
+#, fuzzy
+msgid "Swap OK Cancel"
+msgstr "Annuller"
+
+#: scene/register_scene_types.cpp
msgid "Use hiDPI"
msgstr ""
@@ -23153,21 +24907,6 @@ msgid "Custom Font"
msgstr "Indsæt Node"
#: scene/resources/audio_stream_sample.cpp
-#, fuzzy
-msgid "Loop Mode"
-msgstr "Skifter Modus"
-
-#: scene/resources/audio_stream_sample.cpp
-#, fuzzy
-msgid "Loop Begin"
-msgstr "Skifter Modus"
-
-#: scene/resources/audio_stream_sample.cpp
-#, fuzzy
-msgid "Loop End"
-msgstr "Skifter Modus"
-
-#: scene/resources/audio_stream_sample.cpp
#: servers/audio/effects/audio_stream_generator.cpp servers/audio_server.cpp
msgid "Mix Rate"
msgstr ""
@@ -23223,6 +24962,17 @@ msgid "Extra Spacing"
msgstr "Klasse beskrivelse:"
#: scene/resources/dynamic_font.cpp
+#, fuzzy
+msgid "Char"
+msgstr "Gyldige karakterer:"
+
+#: scene/resources/dynamic_font.cpp scene/resources/world.cpp
+#: scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Space"
+msgstr "Kald"
+
+#: scene/resources/dynamic_font.cpp
msgid "Font"
msgstr ""
@@ -23446,6 +25196,43 @@ msgid "Glow"
msgstr ""
#: scene/resources/environment.cpp
+#, fuzzy
+msgid "Levels"
+msgstr "Udviklere"
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "1"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "2"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "3"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "4"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "5"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "6"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "7"
+msgstr ""
+
+#: scene/resources/environment.cpp
msgid "Bloom"
msgstr ""
@@ -23536,9 +25323,66 @@ msgid "Next Pass"
msgstr "Næste fane"
#: scene/resources/material.cpp
+msgid "Use Shadow To Opacity"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Unshaded"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Vertex Lighting"
+msgstr "Beskrivelse"
+
+#: scene/resources/material.cpp
+msgid "No Depth Test"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Use Point Size"
+msgstr "Skrifttype Størrelse:"
+
+#: scene/resources/material.cpp
+msgid "World Triplanar"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Fixed Size"
+msgstr "Skrifttype Størrelse:"
+
+#: scene/resources/material.cpp
+msgid "Albedo Tex Force sRGB"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Do Not Receive Shadows"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Disable Ambient Light"
+msgstr "Deaktiveret"
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Ensure Correct Normals"
+msgstr "Opret Poly"
+
+#: scene/resources/material.cpp
msgid "Vertex Color"
msgstr ""
+#: scene/resources/material.cpp
+msgid "Use As Albedo"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Is sRGB"
+msgstr ""
+
#: scene/resources/material.cpp servers/visual_server.cpp
#, fuzzy
msgid "Parameters"
@@ -23575,6 +25419,11 @@ msgid "Billboard Mode"
msgstr "Skifter Modus"
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Billboard Keep Scale"
+msgstr "Skifter Modus"
+
+#: scene/resources/material.cpp
msgid "Grow"
msgstr ""
@@ -23584,6 +25433,10 @@ msgid "Grow Amount"
msgstr "Mængde:"
#: scene/resources/material.cpp
+msgid "Use Alpha Scissor"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Alpha Scissor Threshold"
msgstr ""
@@ -23614,10 +25467,20 @@ msgid "Metallic Specular"
msgstr ""
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Metallic Texture"
+msgstr "Fjern Template"
+
+#: scene/resources/material.cpp
msgid "Metallic Texture Channel"
msgstr ""
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Roughness Texture"
+msgstr "Fjern Template"
+
+#: scene/resources/material.cpp
msgid "Roughness Texture Channel"
msgstr ""
@@ -23635,6 +25498,16 @@ msgid "Emission Operator"
msgstr ""
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Emission On UV2"
+msgstr "Skift udtryk"
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Emission Texture"
+msgstr "Fjern Template"
+
+#: scene/resources/material.cpp
msgid "NormalMap"
msgstr ""
@@ -23648,6 +25521,11 @@ msgstr ""
#: scene/resources/material.cpp
#, fuzzy
+msgid "Rim Texture"
+msgstr "Fjern Template"
+
+#: scene/resources/material.cpp
+#, fuzzy
msgid "Clearcoat"
msgstr "Clear"
@@ -23657,15 +25535,28 @@ msgid "Clearcoat Gloss"
msgstr "Spil Brugerdefineret Scene"
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Clearcoat Texture"
+msgstr "Medlemmer"
+
+#: scene/resources/material.cpp
msgid "Anisotropy"
msgstr ""
#: scene/resources/material.cpp
+msgid "Anisotropy Flowmap"
+msgstr ""
+
+#: scene/resources/material.cpp
#, fuzzy
msgid "Ambient Occlusion"
msgstr "Rediger Poly"
#: scene/resources/material.cpp
+msgid "On UV2"
+msgstr ""
+
+#: scene/resources/material.cpp
#, fuzzy
msgid "Texture Channel"
msgstr "Skifter Modus"
@@ -23703,6 +25594,11 @@ msgstr "Overgang: "
#: scene/resources/material.cpp
#, fuzzy
+msgid "Transmission Texture"
+msgstr "Overgang: "
+
+#: scene/resources/material.cpp
+#, fuzzy
msgid "Refraction"
msgstr "Tællinger:"
@@ -23719,6 +25615,10 @@ msgid "UV1"
msgstr ""
#: scene/resources/material.cpp
+msgid "Triplanar"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Triplanar Sharpness"
msgstr ""
@@ -23923,6 +25823,16 @@ msgstr "Medlemmer"
msgid "Point Count"
msgstr "Tilføj punkt"
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Scale Random"
+msgstr "Skalaforhold:"
+
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Scale Curve"
+msgstr "Rediger Node Kurve"
+
#: scene/resources/physics_material.cpp
msgid "Rough"
msgstr ""
@@ -23981,10 +25891,6 @@ msgid "A"
msgstr ""
#: scene/resources/shader.cpp
-msgid "Code"
-msgstr ""
-
-#: scene/resources/shader.cpp
#, fuzzy
msgid "Custom Defines"
msgstr "Spil Brugerdefineret Scene"
@@ -24077,15 +25983,6 @@ msgstr ""
#: scene/resources/texture.cpp
#, fuzzy
-msgid "Storage"
-msgstr "Lagrings Fil:"
-
-#: scene/resources/texture.cpp
-msgid "Lossy Quality"
-msgstr ""
-
-#: scene/resources/texture.cpp
-#, fuzzy
msgid "Load Path"
msgstr "Indlæs Fejl"
@@ -24214,11 +26111,6 @@ msgstr "Ugyldig skriftstørrelse."
msgid "Fallback Environment"
msgstr ""
-#: scene/resources/world.cpp scene/resources/world_2d.cpp
-#, fuzzy
-msgid "Space"
-msgstr "Kald"
-
#: scene/resources/world.cpp
#, fuzzy
msgid "Scenario"
@@ -24295,10 +26187,37 @@ msgstr ""
msgid "Wet"
msgstr ""
-#: servers/audio/effects/audio_effect_compressor.cpp
-msgid "Threshold"
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "Voice"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+msgid "Delay (ms)"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_phaser.cpp
+msgid "Rate Hz"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#, fuzzy
+msgid "Depth (ms)"
+msgstr "Dybde"
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+msgid "Level dB"
msgstr ""
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+#: servers/audio/effects/audio_effect_panner.cpp
+#, fuzzy
+msgid "Pan"
+msgstr "Pakker"
+
#: servers/audio/effects/audio_effect_compressor.cpp
#: servers/audio/effects/audio_effect_filter.cpp
msgid "Gain"
@@ -24321,20 +26240,6 @@ msgid "Tap 1"
msgstr ""
#: servers/audio/effects/audio_effect_delay.cpp
-msgid "Delay (ms)"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_delay.cpp
-msgid "Level dB"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_delay.cpp
-#: servers/audio/effects/audio_effect_panner.cpp
-#, fuzzy
-msgid "Pan"
-msgstr "Pakker"
-
-#: servers/audio/effects/audio_effect_delay.cpp
msgid "Tap 2"
msgstr ""
@@ -24394,10 +26299,6 @@ msgstr ""
msgid "Range Max Hz"
msgstr ""
-#: servers/audio/effects/audio_effect_phaser.cpp
-msgid "Rate Hz"
-msgstr ""
-
#: servers/audio/effects/audio_effect_pitch_shift.cpp
msgid "Oversampling"
msgstr ""
@@ -24413,7 +26314,7 @@ msgid "Predelay"
msgstr ""
#: servers/audio/effects/audio_effect_reverb.cpp
-msgid "(msec)"
+msgid "Msec"
msgstr ""
#: servers/audio/effects/audio_effect_reverb.cpp
diff --git a/editor/translations/de.po b/editor/translations/de.po
index 71f340e477..4360469a70 100644
--- a/editor/translations/de.po
+++ b/editor/translations/de.po
@@ -77,13 +77,14 @@
# Antonio Noack <corperateraider@gmail.com>, 2022.
# ‎ <artism90@googlemail.com>, 2022.
# Coxcopi70f00b67b61542fe <hn_vogel@gmx.net>, 2022.
+# Andreas <self@andreasbresser.de>, 2022.
msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
"Report-Msgid-Bugs-To: https://github.com/godotengine/godot\n"
"POT-Creation-Date: \n"
-"PO-Revision-Date: 2022-03-11 18:47+0000\n"
-"Last-Translator: ‎ <artism90@googlemail.com>\n"
+"PO-Revision-Date: 2022-03-28 05:19+0000\n"
+"Last-Translator: So Wieso <sowieso@dukun.de>\n"
"Language-Team: German <https://hosted.weblate.org/projects/godot-engine/"
"godot/de/>\n"
"Language: de\n"
@@ -93,175 +94,153 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 4.12-dev\n"
-#: core/bind/core_bind.cpp
+#: core/bind/core_bind.cpp main/main.cpp
msgid "Tablet Driver"
-msgstr ""
+msgstr "Tablet-Treiber"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Clipboard"
-msgstr "Zwischenablage ist leer!"
+msgstr "Zwischenablage"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Current Screen"
-msgstr "Aktuelle Szene"
+msgstr "Aktueller Bildschirm"
#: core/bind/core_bind.cpp
msgid "Exit Code"
-msgstr ""
+msgstr "Exit-Code"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "V-Sync Enabled"
-msgstr "Aktivieren"
+msgstr "V-Sync aktiviert"
#: core/bind/core_bind.cpp main/main.cpp
msgid "V-Sync Via Compositor"
-msgstr ""
+msgstr "V-Sync durch Compositor"
#: core/bind/core_bind.cpp main/main.cpp
msgid "Delta Smoothing"
-msgstr ""
+msgstr "Deltaglättung"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Low Processor Usage Mode"
-msgstr "Bewegungsmodus"
+msgstr "Niedrige-Prozessorauslastungsmodus"
#: core/bind/core_bind.cpp
msgid "Low Processor Usage Mode Sleep (µsec)"
-msgstr ""
+msgstr "Niedrige-Prozessorauslastungsmodus-Leerlaufzeit (μs)"
#: core/bind/core_bind.cpp main/main.cpp platform/uwp/os_uwp.cpp
-#, fuzzy
msgid "Keep Screen On"
-msgstr "Debugger offen halten"
+msgstr "Bildschirm an lassen"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Min Window Size"
-msgstr "Umrissgröße:"
+msgstr "Minimale Fenstergröße"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Max Window Size"
-msgstr "Umrissgröße:"
+msgstr "Maximale Fenstergröße"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Screen Orientation"
-msgstr "Bildschirm-Opertor."
+msgstr "Bildschirmausrichtung"
#: core/bind/core_bind.cpp main/main.cpp platform/uwp/os_uwp.cpp
-#, fuzzy
msgid "Window"
-msgstr "Neues Fenster"
+msgstr "Fenster"
#: core/bind/core_bind.cpp main/main.cpp
-#, fuzzy
msgid "Borderless"
-msgstr "Rand-Pixel"
+msgstr "Rahmenlos"
#: core/bind/core_bind.cpp
msgid "Per Pixel Transparency Enabled"
-msgstr ""
+msgstr "Pixelweise Transparenz aktiviert"
#: core/bind/core_bind.cpp main/main.cpp
-#, fuzzy
msgid "Fullscreen"
-msgstr "Vollbildmodus umschalten"
+msgstr "Vollbildmodus"
#: core/bind/core_bind.cpp
msgid "Maximized"
-msgstr ""
+msgstr "Maximiert"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Minimized"
-msgstr "Initialisieren"
+msgstr "Minimiert"
#: core/bind/core_bind.cpp main/main.cpp scene/gui/dialogs.cpp
#: scene/gui/graph_node.cpp
msgid "Resizable"
-msgstr ""
+msgstr "Verstellbar"
#: core/bind/core_bind.cpp core/os/input_event.cpp scene/2d/node_2d.cpp
#: scene/2d/physics_body_2d.cpp scene/2d/remote_transform_2d.cpp
#: scene/3d/physics_body.cpp scene/3d/remote_transform.cpp
#: scene/gui/control.cpp scene/gui/line_edit.cpp
-#, fuzzy
msgid "Position"
-msgstr "Leistenanordnung"
+msgstr "Position"
#: core/bind/core_bind.cpp editor/editor_settings.cpp main/main.cpp
#: modules/gdscript/gdscript_editor.cpp modules/gridmap/grid_map.cpp
#: modules/mono/csharp_script.cpp modules/visual_script/visual_script_nodes.cpp
-#: scene/2d/tile_map.cpp scene/3d/camera.cpp scene/gui/control.cpp
-#: scene/gui/graph_edit.cpp scene/main/viewport.cpp
+#: scene/2d/tile_map.cpp scene/3d/camera.cpp scene/3d/light.cpp
+#: scene/gui/control.cpp scene/gui/graph_edit.cpp scene/main/viewport.cpp
#: scene/resources/dynamic_font.cpp scene/resources/navigation_mesh.cpp
#: scene/resources/primitive_meshes.cpp scene/resources/sky.cpp
#: scene/resources/style_box.cpp scene/resources/texture.cpp
#: scene/resources/visual_shader.cpp servers/visual_server.cpp
-#, fuzzy
msgid "Size"
-msgstr "Größe:"
+msgstr "Größe"
#: core/bind/core_bind.cpp
msgid "Endian Swap"
-msgstr ""
+msgstr "Endian-Vertauschung"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Editor Hint"
-msgstr "Editor"
+msgstr "Editorhinweis"
#: core/bind/core_bind.cpp
msgid "Print Error Messages"
-msgstr ""
+msgstr "Fehlermeldungen ausgeben"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Iterations Per Second"
-msgstr "Interpolationsmodus"
+msgstr "Durchläufe pro Sekunde"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Target FPS"
-msgstr "Ziel"
+msgstr "Ziel-FPS"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Time Scale"
-msgstr "Zeitskalier-Node"
+msgstr "Zeitskalierung"
#: core/bind/core_bind.cpp main/main.cpp
-#, fuzzy
msgid "Physics Jitter Fix"
-msgstr "Physik-relative Renderzeit %"
+msgstr "Physik-Flacker-Behebung"
#: core/bind/core_bind.cpp editor/plugins/version_control_editor_plugin.cpp
msgid "Error"
msgstr "Fehler"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Error String"
-msgstr "Fehler beim Speichern"
+msgstr "Fehlertext"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Error Line"
-msgstr "Fehler beim Speichern"
+msgstr "Fehlerzeile"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Result"
-msgstr "Suchergebnisse"
+msgstr "Ergebnis"
#: core/command_queue_mt.cpp core/message_queue.cpp main/main.cpp
msgid "Memory"
-msgstr ""
+msgstr "Speicher"
#: core/command_queue_mt.cpp core/message_queue.cpp
#: core/register_core_types.cpp drivers/gles2/rasterizer_canvas_base_gles2.cpp
@@ -271,16 +250,15 @@ msgstr ""
#: drivers/gles3/rasterizer_storage_gles3.cpp main/main.cpp
#: servers/visual_server.cpp
msgid "Limits"
-msgstr ""
+msgstr "Grenzen"
#: core/command_queue_mt.cpp
-#, fuzzy
msgid "Command Queue"
-msgstr "Strg: Rotieren"
+msgstr "Befehlswarteschlange"
#: core/command_queue_mt.cpp
msgid "Multithreading Queue Size (KB)"
-msgstr ""
+msgstr "Multithread-Warteschlangengröße (KB)"
#: core/func_ref.cpp modules/visual_script/visual_script_builtin_funcs.cpp
#: modules/visual_script/visual_script_func_nodes.cpp
@@ -297,111 +275,98 @@ msgstr "Funktion"
#: scene/resources/audio_stream_sample.cpp scene/resources/bit_map.cpp
#: scene/resources/concave_polygon_shape.cpp scene/resources/curve.cpp
#: scene/resources/polygon_path_finder.cpp scene/resources/texture.cpp
-#, fuzzy
msgid "Data"
-msgstr "Mit Daten"
+msgstr "Daten"
#: core/io/file_access_network.cpp core/register_core_types.cpp
-#: editor/editor_settings.cpp editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp main/main.cpp
+#: editor/editor_settings.cpp main/main.cpp
#: modules/gdscript/language_server/gdscript_language_server.cpp
-#, fuzzy
msgid "Network"
-msgstr "Netzwerk-Profiler"
+msgstr "Netzwerk"
#: core/io/file_access_network.cpp
-#, fuzzy
msgid "Remote FS"
-msgstr "Fern "
+msgstr "Ferndateisystem"
#: core/io/file_access_network.cpp
-#, fuzzy
msgid "Page Size"
-msgstr "Seite: "
+msgstr "Page-Größe"
#: core/io/file_access_network.cpp
msgid "Page Read Ahead"
-msgstr ""
+msgstr "Page-Read-Ahead"
#: core/io/http_client.cpp
msgid "Blocking Mode Enabled"
-msgstr ""
+msgstr "Blockierender Modus aktiviert"
#: core/io/http_client.cpp
-#, fuzzy
msgid "Connection"
-msgstr "Verbinden"
+msgstr "Verbindung"
#: core/io/http_client.cpp
msgid "Read Chunk Size"
-msgstr ""
+msgstr "Lese-Chunk-Größe"
#: core/io/marshalls.cpp
-#, fuzzy
msgid "Object ID"
-msgstr "Gezeichnete Objekte:"
+msgstr "Objekt-ID"
#: core/io/multiplayer_api.cpp core/io/packet_peer.cpp
-#, fuzzy
msgid "Allow Object Decoding"
-msgstr "Zwiebelhaut aktivieren"
+msgstr "Objektdekodierung erlauben"
#: core/io/multiplayer_api.cpp scene/main/scene_tree.cpp
msgid "Refuse New Network Connections"
-msgstr ""
+msgstr "Neue Netzwerkverbindungen ablehnen"
#: core/io/multiplayer_api.cpp scene/main/scene_tree.cpp
-#, fuzzy
msgid "Network Peer"
-msgstr "Netzwerk-Profiler"
+msgstr "Netzwerkpartner"
#: core/io/multiplayer_api.cpp scene/animation/animation_player.cpp
-#, fuzzy
msgid "Root Node"
-msgstr "Name des Wurzel-Nodes"
+msgstr "Wurzel-Node"
#: core/io/networked_multiplayer_peer.cpp
-#, fuzzy
msgid "Refuse New Connections"
-msgstr "Verbinden"
+msgstr "Neue Verbindungen ablehnen"
#: core/io/networked_multiplayer_peer.cpp
-#, fuzzy
msgid "Transfer Mode"
-msgstr "Typ der Transformation"
+msgstr "Übertragungsmodus"
#: core/io/packet_peer.cpp
msgid "Encode Buffer Max Size"
-msgstr ""
+msgstr "Maximalgröße des Enkodierungspuffers"
#: core/io/packet_peer.cpp
msgid "Input Buffer Max Size"
-msgstr ""
+msgstr "Maximalgröße des Eingabepuffers"
#: core/io/packet_peer.cpp
msgid "Output Buffer Max Size"
-msgstr ""
+msgstr "Maximalgröße des Ausgabepuffers"
#: core/io/packet_peer.cpp
msgid "Stream Peer"
-msgstr ""
+msgstr "Streampartner"
#: core/io/stream_peer.cpp
msgid "Big Endian"
-msgstr ""
+msgstr "Big-Endian"
#: core/io/stream_peer.cpp
msgid "Data Array"
-msgstr ""
+msgstr "Datenliste"
#: core/io/stream_peer_ssl.cpp
msgid "Blocking Handshake"
-msgstr ""
+msgstr "Blockierender Handshake"
#: core/io/udp_server.cpp
-#, fuzzy
msgid "Max Pending Connections"
-msgstr "Verbindung bearbeiten:"
+msgstr "Maximale Anzahl hängender Verbindungen"
#: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp
#: modules/visual_script/visual_script_builtin_funcs.cpp
@@ -450,20 +415,19 @@ msgstr "Im Aufruf von ‚%s‘:"
#: core/math/random_number_generator.cpp
#: modules/opensimplex/open_simplex_noise.cpp
msgid "Seed"
-msgstr ""
+msgstr "Seed"
#: core/math/random_number_generator.cpp
-#, fuzzy
msgid "State"
msgstr "Status"
#: core/message_queue.cpp
msgid "Message Queue"
-msgstr ""
+msgstr "Nachrichtenwarteschlange"
#: core/message_queue.cpp
msgid "Max Size (KB)"
-msgstr ""
+msgstr "Maximalgröße (KB)"
#: core/os/input.cpp editor/editor_help.cpp editor/editor_settings.cpp
#: editor/plugins/script_editor_plugin.cpp
@@ -475,9 +439,8 @@ msgstr ""
#: modules/mono/csharp_script.cpp scene/animation/animation_player.cpp
#: scene/gui/control.cpp scene/gui/line_edit.cpp scene/main/node.cpp
#: scene/resources/material.cpp
-#, fuzzy
msgid "Text Editor"
-msgstr "Editor öffnen"
+msgstr "Texteditor"
#: core/os/input.cpp editor/editor_settings.cpp
#: editor/plugins/script_text_editor.cpp modules/gdscript/gdscript.cpp
@@ -485,18 +448,16 @@ msgstr "Editor öffnen"
#: modules/gdscript/language_server/gdscript_text_document.cpp
#: scene/animation/animation_player.cpp scene/gui/control.cpp
#: scene/main/node.cpp scene/resources/material.cpp
-#, fuzzy
msgid "Completion"
-msgstr "Auswahl kopieren"
+msgstr "Vervollständigung"
#: core/os/input.cpp editor/editor_settings.cpp
#: editor/plugins/script_text_editor.cpp modules/gdscript/gdscript_editor.cpp
#: modules/gdscript/language_server/gdscript_text_document.cpp
#: scene/animation/animation_player.cpp scene/gui/control.cpp
#: scene/main/node.cpp scene/resources/material.cpp
-#, fuzzy
msgid "Use Single Quotes"
-msgstr "Neue Einzel-Kachel"
+msgstr "Einfache Anführungsstriche verwenden"
#: core/os/input_event.cpp editor/project_settings_editor.cpp
#: servers/audio_server.cpp
@@ -504,96 +465,84 @@ msgid "Device"
msgstr "Gerät"
#: core/os/input_event.cpp
-#, fuzzy
msgid "Alt"
-msgstr "Alle"
+msgstr "Alt"
#: core/os/input_event.cpp
msgid "Shift"
-msgstr ""
+msgstr "Umschalt"
#: core/os/input_event.cpp
-#, fuzzy
msgid "Control"
-msgstr "Versionsverwaltung"
+msgstr "Steuerung"
#: core/os/input_event.cpp
msgid "Meta"
-msgstr ""
+msgstr "Meta"
#: core/os/input_event.cpp
-#, fuzzy
msgid "Command"
-msgstr "Community"
+msgstr "Befehl"
#: core/os/input_event.cpp scene/2d/touch_screen_button.cpp
#: scene/gui/base_button.cpp scene/gui/texture_button.cpp
-#, fuzzy
msgid "Pressed"
-msgstr "Vorlage"
+msgstr "Gedrückt"
#: core/os/input_event.cpp
-#, fuzzy
msgid "Scancode"
-msgstr "Durchsuchen"
+msgstr "Tastencode"
#: core/os/input_event.cpp
-#, fuzzy
msgid "Physical Scancode"
-msgstr "Physische Taste"
+msgstr "Physischer Tastencode"
#: core/os/input_event.cpp
msgid "Unicode"
-msgstr ""
+msgstr "Unicode"
#: core/os/input_event.cpp
msgid "Echo"
-msgstr ""
+msgstr "Echo"
#: core/os/input_event.cpp scene/gui/base_button.cpp
-#, fuzzy
msgid "Button Mask"
-msgstr "Button"
+msgstr "Tastenmaske"
#: core/os/input_event.cpp scene/2d/node_2d.cpp scene/gui/control.cpp
-#, fuzzy
msgid "Global Position"
-msgstr "Globale Konstante"
+msgstr "Globale Position"
#: core/os/input_event.cpp
-#, fuzzy
msgid "Factor"
-msgstr "Vektor"
+msgstr "Faktor"
#: core/os/input_event.cpp
-#, fuzzy
msgid "Button Index"
-msgstr "Maustasten-Index:"
+msgstr "Tastenindex"
#: core/os/input_event.cpp
msgid "Doubleclick"
-msgstr ""
+msgstr "Doppelklick"
#: core/os/input_event.cpp
msgid "Tilt"
-msgstr ""
+msgstr "Neigung"
#: core/os/input_event.cpp
-#, fuzzy
msgid "Pressure"
-msgstr "Vorlage"
+msgstr "Druck"
#: core/os/input_event.cpp
-#, fuzzy
msgid "Relative"
-msgstr "Relatives Einrasten benutzen"
+msgstr "Relativ"
-#: core/os/input_event.cpp scene/2d/camera_2d.cpp
-#: scene/3d/interpolated_camera.cpp scene/animation/animation_player.cpp
-#: scene/resources/environment.cpp
-#, fuzzy
+#: core/os/input_event.cpp scene/2d/camera_2d.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/interpolated_camera.cpp
+#: scene/animation/animation_player.cpp scene/resources/environment.cpp
+#: scene/resources/particles_material.cpp
msgid "Speed"
-msgstr "Geschwindigkeit:"
+msgstr "Geschwindigkeit"
#: core/os/input_event.cpp editor/project_settings_editor.cpp
#: scene/3d/sprite_3d.cpp
@@ -601,14 +550,12 @@ msgid "Axis"
msgstr "Achse"
#: core/os/input_event.cpp
-#, fuzzy
msgid "Axis Value"
-msgstr "Wert anheften"
+msgstr "Achsenwert"
#: core/os/input_event.cpp modules/visual_script/visual_script_func_nodes.cpp
-#, fuzzy
msgid "Index"
-msgstr "Index:"
+msgstr "Index"
#: core/os/input_event.cpp editor/project_settings_editor.cpp
#: modules/visual_script/visual_script_nodes.cpp
@@ -619,72 +566,70 @@ msgstr "Aktion"
#: core/os/input_event.cpp scene/resources/environment.cpp
#: scene/resources/material.cpp
msgid "Strength"
-msgstr ""
+msgstr "Stärke"
#: core/os/input_event.cpp
msgid "Delta"
-msgstr ""
+msgstr "Delta"
#: core/os/input_event.cpp
-#, fuzzy
msgid "Channel"
-msgstr "Ändern"
+msgstr "Kanal"
#: core/os/input_event.cpp main/main.cpp
-#, fuzzy
msgid "Message"
-msgstr "Commit-Nachricht"
+msgstr "Nachricht"
#: core/os/input_event.cpp
-#, fuzzy
msgid "Pitch"
-msgstr "Neigung:"
+msgstr "Anstellwinkel"
-#: core/os/input_event.cpp scene/2d/physics_body_2d.cpp
-#: scene/3d/physics_body.cpp
-#, fuzzy
+#: core/os/input_event.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/physics_body_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/3d/physics_body.cpp scene/resources/particles_material.cpp
msgid "Velocity"
-msgstr "Orbitsicht rechts"
+msgstr "Geschwindigkeit"
#: core/os/input_event.cpp
msgid "Instrument"
-msgstr ""
+msgstr "Gerät"
#: core/os/input_event.cpp
-#, fuzzy
msgid "Controller Number"
-msgstr "Zeilennummer:"
+msgstr "Controllernummer"
#: core/os/input_event.cpp
msgid "Controller Value"
-msgstr ""
+msgstr "Controllerwert"
#: core/project_settings.cpp editor/editor_node.cpp main/main.cpp
-#, fuzzy
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/windows/export/export.cpp
msgid "Application"
-msgstr "Aktion"
+msgstr "Anwendung"
#: core/project_settings.cpp main/main.cpp
-#, fuzzy
msgid "Config"
-msgstr "Einrasten konfigurieren"
+msgstr "Konfiguration"
#: core/project_settings.cpp
-#, fuzzy
msgid "Project Settings Override"
-msgstr "Projekteinstellungen..."
+msgstr "Projekteinstellungsüberbrückung"
#: core/project_settings.cpp core/resource.cpp
#: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp
#: editor/editor_plugin_settings.cpp editor/editor_profiler.cpp
#: editor/project_manager.cpp editor/settings_config_dialog.cpp
-#: modules/gdnative/nativescript/nativescript.cpp scene/2d/area_2d.cpp
-#: scene/3d/area.cpp scene/main/node.cpp
+#: modules/gdnative/nativescript/nativescript.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/osx/export/export.cpp scene/2d/area_2d.cpp scene/3d/area.cpp
+#: scene/main/node.cpp
msgid "Name"
msgstr "Name"
#: core/project_settings.cpp editor/editor_help.cpp
-#: modules/visual_script/visual_script_nodes.cpp
+#: modules/visual_script/visual_script_nodes.cpp platform/uwp/export/export.cpp
+#: platform/windows/export/export.cpp
msgid "Description"
msgstr "Beschreibung"
@@ -700,36 +645,33 @@ msgid "Main Scene"
msgstr "Hauptszene"
#: core/project_settings.cpp
-#, fuzzy
msgid "Disable stdout"
-msgstr "Autokacheln deaktivieren"
+msgstr "Stdout deaktivieren"
#: core/project_settings.cpp
-#, fuzzy
msgid "Disable stderr"
-msgstr "Deaktiviertes Objekt"
+msgstr "Stderr deaktivieren"
#: core/project_settings.cpp
msgid "Use Hidden Project Data Directory"
-msgstr ""
+msgstr "Verstecktes Projektdatenverzeichnis verwenden"
#: core/project_settings.cpp
msgid "Use Custom User Dir"
-msgstr ""
+msgstr "Eigenes Nutzerverzeichnis verwenden"
#: core/project_settings.cpp
msgid "Custom User Dir Name"
-msgstr ""
+msgstr "Eigener Nutzerverzeichnisname"
#: core/project_settings.cpp editor/animation_track_editor.cpp
-#: editor/editor_audio_buses.cpp servers/audio_server.cpp
+#: editor/editor_audio_buses.cpp main/main.cpp servers/audio_server.cpp
msgid "Audio"
msgstr "Audio"
#: core/project_settings.cpp
-#, fuzzy
msgid "Default Bus Layout"
-msgstr "Standard Bus-Layout laden."
+msgstr "Standard Bus-Layout"
#: core/project_settings.cpp editor/editor_export.cpp
#: editor/editor_file_system.cpp editor/editor_node.cpp
@@ -741,15 +683,15 @@ msgstr "Editor"
#: core/project_settings.cpp
#, fuzzy
msgid "Main Run Args"
-msgstr "Hauptszenen Parameter:"
+msgstr "Laufzeitargumente für Main"
#: core/project_settings.cpp
msgid "Search In File Extensions"
-msgstr ""
+msgstr "In Dateierweiterungen suchen"
#: core/project_settings.cpp
msgid "Script Templates Search Path"
-msgstr ""
+msgstr "Suchpfad für Skriptvorlagen"
#: core/project_settings.cpp editor/editor_node.cpp
#: editor/plugins/version_control_editor_plugin.cpp
@@ -758,79 +700,68 @@ msgstr "Versionsverwaltung"
#: core/project_settings.cpp
msgid "Autoload On Startup"
-msgstr ""
+msgstr "Autoladen beim Start"
#: core/project_settings.cpp
-#, fuzzy
msgid "Plugin Name"
-msgstr "Pluginname:"
+msgstr "Pluginname"
#: core/project_settings.cpp scene/2d/collision_object_2d.cpp
#: scene/3d/collision_object.cpp scene/gui/control.cpp
-#, fuzzy
msgid "Input"
-msgstr "Eingang hinzufügen"
+msgstr "Eingabe"
#: core/project_settings.cpp
msgid "UI Accept"
-msgstr ""
+msgstr "UI Annahme"
#: core/project_settings.cpp
-#, fuzzy
msgid "UI Select"
-msgstr "Auswählen"
+msgstr "UI Auswahl"
#: core/project_settings.cpp
-#, fuzzy
msgid "UI Cancel"
-msgstr "Abbrechen"
+msgstr "UI Abbruch"
#: core/project_settings.cpp
-#, fuzzy
msgid "UI Focus Next"
-msgstr "Zu Pfad springen"
+msgstr "UI Nächster Fokus"
#: core/project_settings.cpp
-#, fuzzy
msgid "UI Focus Prev"
-msgstr "Zu Pfad springen"
+msgstr "UI Vorheriger Fokus"
#: core/project_settings.cpp
-#, fuzzy
msgid "UI Left"
-msgstr "Oben links"
+msgstr "UI Links"
#: core/project_settings.cpp
-#, fuzzy
msgid "UI Right"
-msgstr "Oben rechts"
+msgstr "UI Rechts"
#: core/project_settings.cpp
msgid "UI Up"
-msgstr ""
+msgstr "UI Hoch"
#: core/project_settings.cpp
-#, fuzzy
msgid "UI Down"
-msgstr "Runter"
+msgstr "UI Herab"
#: core/project_settings.cpp
-#, fuzzy
msgid "UI Page Up"
-msgstr "Seite: "
+msgstr "UI Bild Auf"
#: core/project_settings.cpp
msgid "UI Page Down"
-msgstr ""
+msgstr "UI Bild Ab"
#: core/project_settings.cpp
msgid "UI Home"
-msgstr ""
+msgstr "UI Pos1"
#: core/project_settings.cpp
-#, fuzzy
msgid "UI End"
-msgstr "Am Ende"
+msgstr "UI Ende"
#: core/project_settings.cpp main/main.cpp modules/bullet/register_types.cpp
#: modules/bullet/space_bullet.cpp scene/2d/physics_body_2d.cpp
@@ -839,9 +770,8 @@ msgstr "Am Ende"
#: servers/physics/space_sw.cpp servers/physics_2d/physics_2d_server_sw.cpp
#: servers/physics_2d/physics_2d_server_wrap_mt.h
#: servers/physics_2d/space_2d_sw.cpp
-#, fuzzy
msgid "Physics"
-msgstr " (physisch)"
+msgstr "Physik"
#: core/project_settings.cpp editor/editor_settings.cpp
#: editor/plugins/spatial_editor_plugin.cpp main/main.cpp
@@ -849,12 +779,11 @@ msgstr " (physisch)"
#: scene/3d/physics_body.cpp scene/resources/world.cpp
#: servers/physics/space_sw.cpp
msgid "3D"
-msgstr ""
+msgstr "3D"
#: core/project_settings.cpp
-#, fuzzy
msgid "Smooth Trimesh Collision"
-msgstr "Trimesh-Kollisionselement erzeugen"
+msgstr "Glatte Trimesh-Kollision"
#: core/project_settings.cpp drivers/gles2/rasterizer_canvas_base_gles2.cpp
#: drivers/gles2/rasterizer_scene_gles2.cpp
@@ -865,9 +794,8 @@ msgstr "Trimesh-Kollisionselement erzeugen"
#: modules/lightmapper_cpu/register_types.cpp scene/main/scene_tree.cpp
#: scene/main/viewport.cpp servers/visual/visual_server_scene.cpp
#: servers/visual_server.cpp
-#, fuzzy
msgid "Rendering"
-msgstr "Renderer:"
+msgstr "Am Rendern"
#: core/project_settings.cpp drivers/gles2/rasterizer_storage_gles2.cpp
#: drivers/gles3/rasterizer_scene_gles3.cpp
@@ -877,23 +805,25 @@ msgstr "Renderer:"
#: scene/resources/multimesh.cpp servers/visual/visual_server_scene.cpp
#: servers/visual_server.cpp
msgid "Quality"
-msgstr ""
+msgstr "Qualität"
#: core/project_settings.cpp scene/animation/animation_tree.cpp
#: scene/gui/file_dialog.cpp scene/main/scene_tree.cpp
#: servers/visual_server.cpp
-#, fuzzy
msgid "Filters"
-msgstr "Filter:"
+msgstr "Filter"
#: core/project_settings.cpp scene/main/viewport.cpp
msgid "Sharpen Intensity"
-msgstr ""
+msgstr "Intensität des Schärfens"
-#: core/project_settings.cpp editor/editor_node.cpp editor/editor_settings.cpp
-#: editor/plugins/script_editor_plugin.cpp editor/project_export.cpp
-#: main/main.cpp modules/gdscript/gdscript.cpp
-#: modules/visual_script/visual_script.cpp scene/3d/room_manager.cpp
+#: core/project_settings.cpp editor/editor_export.cpp editor/editor_node.cpp
+#: editor/editor_settings.cpp editor/plugins/script_editor_plugin.cpp
+#: editor/project_export.cpp main/main.cpp modules/gdscript/gdscript.cpp
+#: modules/visual_script/visual_script.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp scene/3d/room_manager.cpp
#: scene/main/scene_tree.cpp scene/resources/shape_2d.cpp
#: servers/visual_server.cpp
msgid "Debug"
@@ -901,9 +831,8 @@ msgstr "Debuggen"
#: core/project_settings.cpp main/main.cpp modules/gdscript/gdscript.cpp
#: modules/visual_script/visual_script.cpp scene/resources/dynamic_font.cpp
-#, fuzzy
msgid "Settings"
-msgstr "Einstellungen:"
+msgstr "Einstellungen"
#: core/project_settings.cpp editor/script_editor_debugger.cpp main/main.cpp
#: modules/mono/mono_gd/gd_mono.cpp
@@ -911,77 +840,72 @@ msgid "Profiler"
msgstr "Profiler"
#: core/project_settings.cpp
-#, fuzzy
msgid "Max Functions"
-msgstr "Funktion erstellen"
+msgstr "Max Funktionen"
#: core/project_settings.cpp scene/3d/vehicle_body.cpp
-#, fuzzy
msgid "Compression"
-msgstr "Ausdruck"
+msgstr "Kompression"
#: core/project_settings.cpp
-#, fuzzy
msgid "Formats"
-msgstr "Format"
+msgstr "Formate"
#: core/project_settings.cpp
msgid "Zstd"
-msgstr ""
+msgstr "Zstd"
#: core/project_settings.cpp
msgid "Long Distance Matching"
-msgstr ""
+msgstr "Weitdistanzvergleich"
#: core/project_settings.cpp
msgid "Compression Level"
-msgstr ""
+msgstr "Kompressionsgrad"
#: core/project_settings.cpp
msgid "Window Log Size"
-msgstr ""
+msgstr "Fensterloggröße"
#: core/project_settings.cpp
msgid "Zlib"
-msgstr ""
+msgstr "Zlib"
#: core/project_settings.cpp
msgid "Gzip"
-msgstr ""
+msgstr "Gzip"
#: core/project_settings.cpp platform/android/export/export.cpp
msgid "Android"
-msgstr ""
+msgstr "Android"
#: core/project_settings.cpp
msgid "Modules"
-msgstr ""
+msgstr "Module"
#: core/register_core_types.cpp
msgid "TCP"
-msgstr ""
+msgstr "TCP"
#: core/register_core_types.cpp
-#, fuzzy
msgid "Connect Timeout Seconds"
-msgstr "Verbindungen mit Methode:"
+msgstr "Verbindungszeitüberschreitung in Sekunden"
#: core/register_core_types.cpp
msgid "Packet Peer Stream"
-msgstr ""
+msgstr "Paket-Peer-Stream"
#: core/register_core_types.cpp
msgid "Max Buffer (Power of 2)"
-msgstr ""
+msgstr "Max Puffer (Potenz von 2)"
#: core/register_core_types.cpp editor/editor_settings.cpp main/main.cpp
msgid "SSL"
-msgstr ""
+msgstr "SSL"
#: core/register_core_types.cpp main/main.cpp
-#, fuzzy
msgid "Certificates"
-msgstr "Eckpunkte:"
+msgstr "Zertifikate"
#: core/resource.cpp editor/dependency_editor.cpp
#: editor/editor_resource_picker.cpp
@@ -990,9 +914,8 @@ msgid "Resource"
msgstr "Ressource"
#: core/resource.cpp
-#, fuzzy
msgid "Local To Scene"
-msgstr "Szene schließen"
+msgstr "Lokale Variable zu Szene"
#: core/resource.cpp editor/dependency_editor.cpp
#: editor/editor_autoload_settings.cpp editor/plugins/path_editor_plugin.cpp
@@ -1002,27 +925,24 @@ msgid "Path"
msgstr "Pfad"
#: core/script_language.cpp
-#, fuzzy
msgid "Source Code"
-msgstr "Quelle"
+msgstr "Quellcode"
#: core/translation.cpp
-#, fuzzy
msgid "Messages"
-msgstr "Commit-Nachricht"
+msgstr "Nachrichten"
#: core/translation.cpp editor/project_settings_editor.cpp
msgid "Locale"
msgstr "Gebietsschema"
#: core/translation.cpp
-#, fuzzy
msgid "Test"
-msgstr "Testphase"
+msgstr "Test"
#: core/translation.cpp scene/resources/font.cpp
msgid "Fallback"
-msgstr ""
+msgstr "Ausweichlösung"
#: core/ustring.cpp scene/resources/segment_shape_2d.cpp
msgid "B"
@@ -1058,17 +978,17 @@ msgstr "EiB"
#: drivers/gles3/rasterizer_scene_gles3.cpp
#: drivers/gles3/rasterizer_storage_gles3.cpp modules/gltf/gltf_state.cpp
msgid "Buffers"
-msgstr ""
+msgstr "Puffer"
#: drivers/gles2/rasterizer_canvas_base_gles2.cpp
#: drivers/gles3/rasterizer_canvas_base_gles3.cpp
msgid "Canvas Polygon Buffer Size (KB)"
-msgstr ""
+msgstr "Canvaspolygon-Puffergröße (KB)"
#: drivers/gles2/rasterizer_canvas_base_gles2.cpp
#: drivers/gles3/rasterizer_canvas_base_gles3.cpp
msgid "Canvas Polygon Index Buffer Size (KB)"
-msgstr ""
+msgstr "Canvaspolygonindex-Puffergröße (KB)"
#: drivers/gles2/rasterizer_canvas_base_gles2.cpp
#: drivers/gles3/rasterizer_canvas_base_gles3.cpp editor/editor_settings.cpp
@@ -1077,58 +997,55 @@ msgstr ""
#: servers/physics_2d/physics_2d_server_wrap_mt.h
#: servers/physics_2d/space_2d_sw.cpp servers/visual_server.cpp
msgid "2D"
-msgstr ""
+msgstr "2D"
#: drivers/gles2/rasterizer_canvas_base_gles2.cpp
#: drivers/gles3/rasterizer_canvas_base_gles3.cpp
-#, fuzzy
msgid "Snapping"
-msgstr "Intelligentes Einrasten"
+msgstr "Einrasten"
#: drivers/gles2/rasterizer_canvas_base_gles2.cpp
#: drivers/gles3/rasterizer_canvas_base_gles3.cpp
-#, fuzzy
msgid "Use GPU Pixel Snap"
-msgstr "Pixelraster benutzen"
+msgstr "GPU-Pixeleinrastung verwenden"
#: drivers/gles2/rasterizer_scene_gles2.cpp
#: drivers/gles3/rasterizer_scene_gles3.cpp
msgid "Immediate Buffer Size (KB)"
-msgstr ""
+msgstr "Direktpuffergröße (KB)"
#: drivers/gles2/rasterizer_storage_gles2.cpp
#: drivers/gles3/rasterizer_storage_gles3.cpp
-#, fuzzy
msgid "Lightmapping"
-msgstr "Lightmaps vorrendern"
+msgstr "Lightmapping"
#: drivers/gles2/rasterizer_storage_gles2.cpp
#: drivers/gles3/rasterizer_storage_gles3.cpp
msgid "Use Bicubic Sampling"
-msgstr ""
+msgstr "Bikubisches Abtasten verwenden"
#: drivers/gles3/rasterizer_scene_gles3.cpp
msgid "Max Renderable Elements"
-msgstr ""
+msgstr "Max Anzahl renderbarer Elemente"
#: drivers/gles3/rasterizer_scene_gles3.cpp
msgid "Max Renderable Lights"
-msgstr ""
+msgstr "Max Anzahl renderbarer Lichter"
#: drivers/gles3/rasterizer_scene_gles3.cpp
-#, fuzzy
msgid "Max Renderable Reflections"
-msgstr "Auswahl zentrieren"
+msgstr "Max Anzahl renderbarer Reflexionen"
#: drivers/gles3/rasterizer_scene_gles3.cpp
msgid "Max Lights Per Object"
-msgstr ""
+msgstr "Max Anzahl an Lichtern pro Objekt"
#: drivers/gles3/rasterizer_scene_gles3.cpp
msgid "Subsurface Scattering"
-msgstr ""
+msgstr "Subsurface-Streuung"
#: drivers/gles3/rasterizer_scene_gles3.cpp
+#: editor/import/resource_importer_texture.cpp
#: editor/plugins/spatial_editor_plugin.cpp modules/gltf/gltf_node.cpp
#: modules/gridmap/grid_map.cpp scene/2d/cpu_particles_2d.cpp
#: scene/2d/node_2d.cpp scene/2d/parallax_layer.cpp scene/2d/polygon_2d.cpp
@@ -1140,25 +1057,24 @@ msgid "Scale"
msgstr "Skalierung"
#: drivers/gles3/rasterizer_scene_gles3.cpp
-#, fuzzy
msgid "Follow Surface"
-msgstr "Oberfläche füllen"
+msgstr "Oberfläche folgen"
#: drivers/gles3/rasterizer_scene_gles3.cpp
msgid "Weight Samples"
-msgstr ""
+msgstr "Weight-Samples"
#: drivers/gles3/rasterizer_scene_gles3.cpp
msgid "Voxel Cone Tracing"
-msgstr ""
+msgstr "Voxelkegelverfolgung"
#: drivers/gles3/rasterizer_scene_gles3.cpp scene/resources/environment.cpp
msgid "High Quality"
-msgstr ""
+msgstr "Hohe Qualität"
#: drivers/gles3/rasterizer_storage_gles3.cpp
msgid "Blend Shape Max Buffer Size (KB)"
-msgstr ""
+msgstr "Blend-Shape Maximale Puffergröße (KB)"
#: editor/animation_bezier_editor.cpp
msgid "Free"
@@ -1421,11 +1337,11 @@ msgstr "Spur entfernen"
#: editor/plugins/tile_map_editor_plugin.cpp editor/scene_tree_dock.cpp
#: editor/spatial_editor_gizmos.cpp modules/csg/csg_gizmos.cpp
#: modules/gridmap/grid_map_editor_plugin.cpp
-#, fuzzy
msgid "Editors"
-msgstr "Editor"
+msgstr "Editoren"
#: editor/animation_track_editor.cpp editor/editor_settings.cpp
+#: editor/import/resource_importer_scene.cpp
#: editor/plugins/animation_player_editor_plugin.cpp editor/scene_tree_dock.cpp
#: scene/2d/animated_sprite.cpp scene/2d/cpu_particles_2d.cpp
#: scene/2d/sprite.cpp scene/3d/cpu_particles.cpp scene/3d/sprite_3d.cpp
@@ -1435,9 +1351,8 @@ msgid "Animation"
msgstr "Animation"
#: editor/animation_track_editor.cpp editor/editor_settings.cpp
-#, fuzzy
msgid "Confirm Insert Track"
-msgstr "Spur & Schlüsselbild einfügen"
+msgstr "Eingabespur bestätigen"
#. TRANSLATORS: %s will be replaced by a phrase describing the target of track.
#: editor/animation_track_editor.cpp
@@ -1584,7 +1499,7 @@ msgstr "Methoden"
#: editor/animation_track_editor.cpp
msgid "Bezier"
-msgstr ""
+msgstr "Bezier"
#: editor/animation_track_editor.cpp
#: modules/visual_script/visual_script_editor.cpp
@@ -1662,14 +1577,14 @@ msgstr "Animationsschrittwert."
msgid "Seconds"
msgstr "Sekunden"
-#: editor/animation_track_editor.cpp
+#: editor/animation_track_editor.cpp editor/import/resource_importer_scene.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp main/main.cpp
#: scene/resources/texture.cpp
msgid "FPS"
msgstr "FPS"
#: editor/animation_track_editor.cpp editor/editor_plugin_settings.cpp
-#: editor/editor_resource_picker.cpp
+#: editor/editor_resource_picker.cpp editor/import/resource_importer_wav.cpp
#: editor/plugins/polygon_2d_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
@@ -2288,10 +2203,9 @@ msgstr "Hauptentwickler"
#. TRANSLATORS: This refers to a job title.
#: editor/editor_about.cpp
-#, fuzzy
msgctxt "Job Title"
msgid "Project Manager"
-msgstr "Projektverwaltung"
+msgstr "Projektverwalter"
#: editor/editor_about.cpp
msgid "Developers"
@@ -2638,7 +2552,9 @@ msgid "Remove Autoload"
msgstr "Autoload entfernen"
#: editor/editor_autoload_settings.cpp editor/editor_plugin_settings.cpp
-#: modules/gdscript/gdscript.cpp scene/2d/polygon_2d.cpp scene/3d/area.cpp
+#: modules/gdscript/gdscript.cpp platform/android/export/export_plugin.cpp
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#: scene/2d/polygon_2d.cpp scene/3d/area.cpp scene/3d/physics_joint.cpp
#: scene/3d/reflection_probe.cpp scene/main/canvas_layer.cpp
#: scene/resources/material.cpp servers/visual_server.cpp
msgid "Enable"
@@ -2808,6 +2724,60 @@ msgstr ""
#: editor/editor_export.cpp platform/android/export/export_plugin.cpp
#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Custom Template"
+msgstr "Eigenes Motiv"
+
+#: editor/editor_export.cpp editor/project_export.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp
+msgid "Release"
+msgstr "Veröffentlichung"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Binary Format"
+msgstr "Farboperator."
+
+#: editor/editor_export.cpp
+msgid "64 Bits"
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Embed PCK"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Texture Format"
+msgstr "Texturbereich"
+
+#: editor/editor_export.cpp
+msgid "BPTC"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "S3TC"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "ETC"
+msgstr "TCP"
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "ETC2"
+msgstr ""
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "No BPTC Fallbacks"
+msgstr "Ausweichlösung"
+
+#: editor/editor_export.cpp platform/android/export/export_plugin.cpp
+#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
msgid "Custom debug template not found."
msgstr "Selbst konfigurierte Debug-Exportvorlage nicht gefunden."
@@ -2828,7 +2798,7 @@ msgstr ""
#: editor/editor_export.cpp
msgid "Convert Text Resources To Binary On Export"
-msgstr ""
+msgstr "Textressourcen in Binärdarstellung konvertieren bei Export"
#: editor/editor_feature_profile.cpp
msgid "3D Editor"
@@ -2994,6 +2964,7 @@ msgid "Make Current"
msgstr "Als aktuell auswählen"
#: editor/editor_feature_profile.cpp editor/editor_node.cpp
+#: editor/import/resource_importer_scene.cpp
#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
msgid "Import"
msgstr "Importieren"
@@ -3037,12 +3008,11 @@ msgstr "Profil exportieren"
#: editor/editor_feature_profile.cpp
msgid "Manage Editor Feature Profiles"
-msgstr "Verwalte Editorfunktionenprofile"
+msgstr "Editorfunktionenprofile verwalten"
#: editor/editor_feature_profile.cpp
-#, fuzzy
msgid "Default Feature Profile"
-msgstr "Godot-Funktionsprofil"
+msgstr "Standardfunktionsprofil"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
msgid "Select Current Folder"
@@ -3114,51 +3084,47 @@ msgid "Save a File"
msgstr "Datei speichern"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-#, fuzzy
msgid "Access"
-msgstr "Geschafft!"
+msgstr "Zugriff"
#: editor/editor_file_dialog.cpp editor/editor_settings.cpp
-#, fuzzy
msgid "Display Mode"
-msgstr "Abspielmodus:"
+msgstr "Darstellungsmodus"
-#: editor/editor_file_dialog.cpp main/main.cpp modules/csg/csg_shape.cpp
-#: modules/visual_script/visual_script_nodes.cpp
+#: editor/editor_file_dialog.cpp
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+#: editor/import/resource_importer_wav.cpp main/main.cpp
+#: modules/csg/csg_shape.cpp modules/visual_script/visual_script_nodes.cpp
#: modules/visual_script/visual_script_yield_nodes.cpp scene/2d/light_2d.cpp
#: scene/2d/physics_body_2d.cpp scene/2d/tile_map.cpp
#: scene/3d/baked_lightmap.cpp scene/3d/light.cpp scene/3d/physics_body.cpp
#: scene/gui/control.cpp scene/gui/file_dialog.cpp
#: scene/resources/environment.cpp scene/resources/material.cpp
#: servers/audio/effects/audio_effect_distortion.cpp
-#, fuzzy
msgid "Mode"
-msgstr "Schwenkmodus"
+msgstr "Modus"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-#, fuzzy
msgid "Current Dir"
-msgstr "Laufend:"
+msgstr "Aktuelles Verzeichnis"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-#, fuzzy
msgid "Current File"
-msgstr "Aktuelles Profil:"
+msgstr "Aktuelle Datei"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-#, fuzzy
msgid "Current Path"
-msgstr "Laufend:"
+msgstr "Aktueller Pfad"
#: editor/editor_file_dialog.cpp editor/editor_settings.cpp
#: scene/gui/file_dialog.cpp
-#, fuzzy
msgid "Show Hidden Files"
-msgstr "Versteckte Dateien ein- und ausblenden"
+msgstr "Versteckte Dateien anzeigen"
#: editor/editor_file_dialog.cpp
msgid "Disable Overwrite Warning"
-msgstr ""
+msgstr "Überschreibenwarnung deaktivieren"
#: editor/editor_file_dialog.cpp
msgid "Go Back"
@@ -3261,9 +3227,11 @@ msgstr "Importiere Nutzerinhalte erneut"
#: editor/editor_file_system.cpp
msgid "Reimport Missing Imported Files"
-msgstr ""
+msgstr "Fehlende importierte Dateien reimportieren"
-#: editor/editor_help.cpp
+#: editor/editor_help.cpp scene/2d/camera_2d.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/resources/dynamic_font.cpp
+#: scene/resources/style_box.cpp
msgid "Top"
msgstr "Oben"
@@ -3315,6 +3283,7 @@ msgid "Fonts"
msgstr "Schriftarten"
#: editor/editor_help.cpp editor/plugins/theme_editor_plugin.cpp
+#: platform/iphone/export/export.cpp
msgid "Icons"
msgstr "Symbole"
@@ -3363,7 +3332,7 @@ msgstr "Hilfe"
#: editor/editor_help.cpp
msgid "Sort Functions Alphabetically"
-msgstr ""
+msgstr "Funktionen alphabetisch sortieren"
#: editor/editor_help_search.cpp editor/editor_node.cpp
#: editor/plugins/script_editor_plugin.cpp
@@ -3443,34 +3412,28 @@ msgid "Property:"
msgstr "Eigenschaft:"
#: editor/editor_inspector.cpp editor/editor_spin_slider.cpp
-#, fuzzy
msgid "Label"
-msgstr "Wert"
+msgstr "Bezeichner"
#: editor/editor_inspector.cpp editor/editor_spin_slider.cpp
-#, fuzzy
msgid "Read Only"
-msgstr "Nur Methoden"
+msgstr "Nur Lesezugriff"
#: editor/editor_inspector.cpp
-#, fuzzy
msgid "Checkable"
-msgstr "Überprüfe Element"
+msgstr "Auswählbar"
#: editor/editor_inspector.cpp
-#, fuzzy
msgid "Checked"
-msgstr "Überprüftes Element"
+msgstr "Ausgewählt"
#: editor/editor_inspector.cpp
-#, fuzzy
msgid "Draw Red"
-msgstr "Zeichenaufrufe:"
+msgstr "Rot zeichnen"
#: editor/editor_inspector.cpp
-#, fuzzy
msgid "Keying"
-msgstr "Abspielen"
+msgstr "Schlüsselwerte erzeugen"
#: editor/editor_inspector.cpp
msgid "Pin value"
@@ -3487,7 +3450,9 @@ msgstr ""
msgid "Pin value [Disabled because '%s' is editor-only]"
msgstr "Wert anheften [deaktiviert da ‚%s‘ Editor-exclusiv ist]"
-#: editor/editor_inspector.cpp editor/scene_tree_dock.cpp
+#: editor/editor_inspector.cpp
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+#: editor/scene_tree_dock.cpp
#: modules/visual_script/visual_script_func_nodes.cpp
#: modules/visual_script/visual_script_nodes.cpp
#: modules/visual_script/visual_script_property_selector.cpp
@@ -3830,6 +3795,16 @@ msgid "Quick Open Script..."
msgstr "Schnell Skripte öffnen..."
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Save & Reload"
+msgstr "Speichern & Neu starten"
+
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Save changes to '%s' before reloading?"
+msgstr "Änderungen in ‚%s‘ vor dem Schließen speichern?"
+
+#: editor/editor_node.cpp
msgid "Save & Close"
msgstr "Speichern und schließen"
@@ -3948,6 +3923,11 @@ msgid "Open Project Manager?"
msgstr "Aktuelles Projekt schließen und zur Projektverwaltung zurückkehren?"
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Save changes to the following scene(s) before reloading?"
+msgstr "Änderungen in den folgenden Szenen vor dem Schließen speichern?"
+
+#: editor/editor_node.cpp
msgid "Save & Quit"
msgstr "Speichern und beenden"
@@ -4141,108 +4121,98 @@ msgstr "%d weitere Datei(en)"
msgid ""
"Unable to write to file '%s', file in use, locked or lacking permissions."
msgstr ""
+"In Datei ‚%s‘ kann nicht geschrieben werden. Die Datei wird bereits "
+"verwendet, sie ist gesperrt, oder es ist keine Schreibberechtigung vorhanden."
#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
msgid "Scene"
msgstr "Szene"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Scene Naming"
-msgstr "Szenenpfad:"
+msgstr "Szenenbenennung"
#: editor/editor_node.cpp editor/editor_settings.cpp editor/scene_tree_dock.cpp
#: servers/arvr/arvr_interface.cpp
-#, fuzzy
msgid "Interface"
-msgstr "Benutzerschnittstelle"
+msgstr "Schnittstelle"
#: editor/editor_node.cpp editor/editor_settings.cpp
-#, fuzzy
msgid "Scene Tabs"
-msgstr "Szenentab wechseln"
+msgstr "Szenen-Tabs"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Always Show Close Button"
-msgstr "Raster immer anzeigen"
+msgstr "Schließenknopf immer anzeigen"
#: editor/editor_node.cpp editor/editor_settings.cpp
msgid "Resize If Many Tabs"
-msgstr ""
+msgstr "Größe bei vielen Tabs anpassen"
#: editor/editor_node.cpp editor/editor_settings.cpp
msgid "Minimum Width"
-msgstr ""
+msgstr "Minimalbreite"
#: editor/editor_node.cpp editor/editor_settings.cpp
msgid "Output"
msgstr "Ausgabe"
#: editor/editor_node.cpp editor/editor_settings.cpp
-#, fuzzy
msgid "Always Clear Output On Play"
-msgstr "Ausgabe löschen"
+msgstr "Ausgabe immer vor Starten des Programms löschen"
#: editor/editor_node.cpp editor/editor_settings.cpp
msgid "Always Open Output On Play"
-msgstr ""
+msgstr "Ausgabe immer vor Starten des Programms öffnen"
#: editor/editor_node.cpp editor/editor_settings.cpp
msgid "Always Close Output On Stop"
-msgstr ""
+msgstr "Ausgabe immer nach Beenden des Programms schließen"
#: editor/editor_node.cpp editor/editor_settings.cpp
-#, fuzzy
msgid "Auto Save"
-msgstr "Autoschnitt"
+msgstr "Autospeichern"
#: editor/editor_node.cpp editor/editor_settings.cpp
-#, fuzzy
msgid "Save Before Running"
-msgstr "Szene vor dem Abspielen speichern..."
+msgstr "Speichern vor Wiedergabe"
#: editor/editor_node.cpp
msgid "Save On Focus Loss"
-msgstr ""
+msgstr "Speichern bei Verlust des Fokus"
#: editor/editor_node.cpp editor/editor_settings.cpp
-#, fuzzy
msgid "Save Each Scene On Quit"
-msgstr "Speichere Verzweigung als Szene"
+msgstr "Alle Szenen beim Beenden speichern"
#: editor/editor_node.cpp editor/editor_settings.cpp
-#, fuzzy
msgid "Quit Confirmation"
-msgstr "Sicht-Informationen"
+msgstr "Rückfrage beim Beenden"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Show Update Spinner"
-msgstr "Aktualisierungsanzeigerad ausblenden"
+msgstr "Aktualisierungsrad anzeigen"
#: editor/editor_node.cpp
msgid "Update Continuously"
msgstr "Fortlaufend aktualisieren"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Update Vital Only"
msgstr "Nur bei wichtigen Änderungen aktualisieren"
#: editor/editor_node.cpp
#, fuzzy
-msgid "Translate Properties"
-msgstr "Eigenschaften einfügen"
+msgid "Localize Settings"
+msgstr "Lokalisierung"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Restore Scenes On Load"
-msgstr "Szenen-Node erhalten"
+msgstr "Szenen beim Laden wiederherstellen"
#: editor/editor_node.cpp editor/editor_settings.cpp
msgid "Show Thumbnail On Hover"
-msgstr ""
+msgstr "Vorschau bei Mausüberfahren anzeigen"
#: editor/editor_node.cpp editor/editor_settings.cpp
msgid "Inspector"
@@ -4250,43 +4220,40 @@ msgstr "Inspektor"
#: editor/editor_node.cpp
#, fuzzy
-msgid "Capitalize Properties"
-msgstr "Eigenschaften einfügen"
+msgid "Default Property Name Style"
+msgstr "Standardprojektpfad"
#: editor/editor_node.cpp
msgid "Default Float Step"
-msgstr ""
+msgstr "Standard Gleitkommaschritte"
#: editor/editor_node.cpp scene/gui/tree.cpp
-#, fuzzy
msgid "Disable Folding"
-msgstr "Deaktivierter Knopf"
+msgstr "Einfalten deaktivieren"
#: editor/editor_node.cpp
msgid "Auto Unfold Foreign Scenes"
-msgstr ""
+msgstr "Fremde Szenen automatisch auffalten"
#: editor/editor_node.cpp
msgid "Horizontal Vector2 Editing"
-msgstr ""
+msgstr "Horizontales Vector2-Bearbeiten"
#: editor/editor_node.cpp
msgid "Horizontal Vector Types Editing"
-msgstr ""
+msgstr "Horizontales Vektortyp-Bearbeiten"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Open Resources In Current Inspector"
-msgstr "Im Inspektor öffnen"
+msgstr "Ressourcen in aktuellem Inspektor öffnen"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Resources To Open In New Inspector"
-msgstr "Im Inspektor öffnen"
+msgstr "Ressourcen in neuem Inspektor öffnen"
#: editor/editor_node.cpp
msgid "Default Color Picker Mode"
-msgstr ""
+msgstr "Standard Farbwahlmodus"
#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
msgid "Username"
@@ -4858,7 +4825,9 @@ msgstr "Installierte Erweiterungen:"
msgid "Update"
msgstr "Update"
-#: editor/editor_plugin_settings.cpp
+#: editor/editor_plugin_settings.cpp platform/android/export/export_plugin.cpp
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp
msgid "Version"
msgstr "Version"
@@ -4937,12 +4906,11 @@ msgstr "Debugger"
#: editor/editor_profiler.cpp
msgid "Profiler Frame History Size"
-msgstr ""
+msgstr "Profiler-Frame-Verlaufsgröße"
#: editor/editor_profiler.cpp
-#, fuzzy
msgid "Profiler Frame Max Functions"
-msgstr "Funktion umbenennen"
+msgstr "Profile-Frame Maximale Funktionen"
#: editor/editor_properties.cpp
msgid "Edit Text:"
@@ -5076,15 +5044,13 @@ msgid "Base Type"
msgstr "Basistyp"
#: editor/editor_resource_picker.cpp
-#, fuzzy
msgid "Edited Resource"
-msgstr "Ressource hinzufügen"
+msgstr "Bearbeitete Ressource"
#: editor/editor_resource_picker.cpp scene/gui/line_edit.cpp
#: scene/gui/slider.cpp scene/gui/spin_box.cpp
-#, fuzzy
msgid "Editable"
-msgstr "Bearbeitbares Element"
+msgstr "Bearbeitbar"
#: editor/editor_resource_picker.cpp editor/property_editor.cpp
msgid "New Script"
@@ -5095,9 +5061,8 @@ msgid "Extend Script"
msgstr "Skript erweitern"
#: editor/editor_resource_picker.cpp
-#, fuzzy
msgid "Script Owner"
-msgstr "Skriptname:"
+msgstr "Skripteigentümer"
#: editor/editor_run_native.cpp
msgid ""
@@ -5133,80 +5098,76 @@ msgid "Did you forget the '_run' method?"
msgstr "Hast du die '_run' Methode vergessen?"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Editor Language"
-msgstr "Editorlayout"
+msgstr "Editorsprache"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Display Scale"
-msgstr "Alles anzeigen"
+msgstr "Anzeigeskalierung"
#: editor/editor_settings.cpp
msgid "Custom Display Scale"
-msgstr ""
+msgstr "Eigene Anzeigeskalierung"
#: editor/editor_settings.cpp
msgid "Main Font Size"
-msgstr ""
+msgstr "Hauptschriftgröße"
#: editor/editor_settings.cpp
msgid "Code Font Size"
-msgstr ""
+msgstr "Quellcodeschriftgröße"
#: editor/editor_settings.cpp
msgid "Font Antialiased"
-msgstr ""
+msgstr "Schriftart ist Antialias"
#: editor/editor_settings.cpp
msgid "Font Hinting"
-msgstr ""
+msgstr "Font-Hinting"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Main Font"
-msgstr "Hauptszene"
+msgstr "Hauptschriftart"
#: editor/editor_settings.cpp
msgid "Main Font Bold"
-msgstr ""
+msgstr "Hauptschriftart Fett"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Code Font"
-msgstr "Node-Punkt hinzufügen"
+msgstr "Quellcodeschriftart"
#: editor/editor_settings.cpp
msgid "Dim Editor On Dialog Popup"
-msgstr ""
+msgstr "Editor bei Dialoghervorhebung dimmen"
#: editor/editor_settings.cpp main/main.cpp
msgid "Low Processor Mode Sleep (µsec)"
-msgstr ""
+msgstr "Leerlaufzeit im Prozessorenergiesparmodus (μs)"
#: editor/editor_settings.cpp
msgid "Unfocused Low Processor Mode Sleep (µsec)"
-msgstr ""
+msgstr "Leerlaufzeit im Prozessorenergiesparmodus bei fehlendem Fokus (μs)"
#: editor/editor_settings.cpp
#, fuzzy
msgid "Separate Distraction Mode"
-msgstr "Ablenkungsfreier Modus"
+msgstr "Ablenkungsfreien Modus abtrennen"
#: editor/editor_settings.cpp
msgid "Automatically Open Screenshots"
-msgstr ""
+msgstr "Bildschirmfotos automatisch öffnen"
#: editor/editor_settings.cpp
msgid "Max Array Dictionary Items Per Page"
-msgstr ""
+msgstr "Maximale Einträge pro Seite in Array Dictionary"
#: editor/editor_settings.cpp editor/plugins/script_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp editor/plugins/text_editor.cpp
#: editor/plugins/theme_editor_plugin.cpp scene/gui/control.cpp
#: scene/register_scene_types.cpp
msgid "Theme"
-msgstr "Designvorlagen (Thema)"
+msgstr "Theme"
#: editor/editor_settings.cpp editor/import_dock.cpp
msgid "Preset"
@@ -5214,169 +5175,146 @@ msgstr "Vorlage"
#: editor/editor_settings.cpp
msgid "Icon And Font Color"
-msgstr ""
+msgstr "Icon- und Schriftart-Farbe"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Base Color"
-msgstr "Farben"
+msgstr "Basisfarbe"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Accent Color"
-msgstr "Farbe auswählen"
+msgstr "Akzentfarbe"
#: editor/editor_settings.cpp scene/resources/environment.cpp
msgid "Contrast"
-msgstr ""
+msgstr "Kontrast"
#: editor/editor_settings.cpp
msgid "Relationship Line Opacity"
-msgstr ""
+msgstr "Liniendeckkraft von Verbindungen"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Highlight Tabs"
-msgstr "Am Speichern der Lightmaps"
+msgstr "Tabs hervorheben"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Border Size"
-msgstr "Rand-Pixel"
+msgstr "Randgröße"
#: editor/editor_settings.cpp
msgid "Use Graph Node Headers"
-msgstr ""
+msgstr "Kopfzeilen für Graph-Nodes verwenden"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Additional Spacing"
-msgstr "Animationswiederholung"
+msgstr "Zusätzlicher Zwischenraum"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Custom Theme"
-msgstr "Editor-Motiv"
+msgstr "Eigenes Motiv"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Show Script Button"
-msgstr "Mausrad rechts"
+msgstr "Skriptknopf anzeigen"
#: editor/editor_settings.cpp editor/fileserver/editor_file_server.cpp
-#, fuzzy
msgid "Filesystem"
msgstr "Dateisystem"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Directories"
-msgstr "Richtungen"
+msgstr "Verzeichnisse"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Autoscan Project Path"
-msgstr "Projektpfad:"
+msgstr "Projektpfad automatisch durchsuchen"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Default Project Path"
-msgstr "Projektpfad:"
+msgstr "Standardprojektpfad"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "On Save"
-msgstr "Speichern"
+msgstr "Beim Speichern"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Compress Binary Resources"
-msgstr "Ressource kopieren"
+msgstr "Binäre Ressourcen komprimieren"
#: editor/editor_settings.cpp
msgid "Safe Save On Backup Then Rename"
-msgstr ""
+msgstr "Sicheres „Als Sicherung speichern und dann umbenennen“ nutzen"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "File Dialog"
-msgstr "Transformationsdialog"
+msgstr "Dateidialog"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Thumbnail Size"
-msgstr "Vorschau..."
+msgstr "Vorschaubildgröße"
#: editor/editor_settings.cpp
msgid "Docks"
-msgstr ""
+msgstr "Leisten"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Scene Tree"
-msgstr "Szenenbaum erhalten"
+msgstr "Szenenbaum"
#: editor/editor_settings.cpp
msgid "Start Create Dialog Fully Expanded"
-msgstr ""
+msgstr "Erstellen-Dialog beim Start wird vollständig aufgeklappt"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Always Show Folders"
-msgstr "Raster immer anzeigen"
+msgstr "Verzeichnisse immer anzeigen"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Property Editor"
-msgstr "Gruppeneditor"
+msgstr "Eigenschafteneditor"
#: editor/editor_settings.cpp
msgid "Auto Refresh Interval"
-msgstr ""
+msgstr "Autoaktualisierungsintervall"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Subresource Hue Tint"
-msgstr "Unter-Ressourcen"
+msgstr "Farbton von Subressourcen"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Color Theme"
-msgstr "Editor-Motiv"
+msgstr "Farbthema"
#: editor/editor_settings.cpp editor/plugins/script_text_editor.cpp
#: editor/plugins/text_editor.cpp
msgid "Line Spacing"
-msgstr ""
+msgstr "Zeilenzwischenraum"
#: editor/editor_settings.cpp editor/plugins/script_text_editor.cpp
#: modules/gdscript/editor/gdscript_highlighter.cpp
-#, fuzzy
msgid "Highlighting"
-msgstr "Direct-Lighting"
+msgstr "Hervorhebung"
#: editor/editor_settings.cpp scene/gui/text_edit.cpp
-#, fuzzy
msgid "Syntax Highlighting"
msgstr "Syntaxhervorhebung"
#: editor/editor_settings.cpp scene/gui/text_edit.cpp
msgid "Highlight All Occurrences"
-msgstr ""
+msgstr "Alle Vorkommen hervorheben"
#: editor/editor_settings.cpp scene/gui/text_edit.cpp
msgid "Highlight Current Line"
-msgstr ""
+msgstr "Aktuelle Zeile hervorheben"
#: editor/editor_settings.cpp editor/plugins/script_text_editor.cpp
msgid "Highlight Type Safe Lines"
-msgstr ""
+msgstr "Typsichere Zeilen hervorheben"
#: editor/editor_settings.cpp modules/gdscript/gdscript_editor.cpp
#: modules/mono/csharp_script.cpp
-#, fuzzy
msgid "Indent"
-msgstr "Nach links einrücken"
+msgstr "Einrücken"
#: editor/editor_settings.cpp editor/script_editor_debugger.cpp
#: modules/gdscript/gdscript_editor.cpp modules/gltf/gltf_accessor.cpp
@@ -5391,19 +5329,16 @@ msgid "Auto Indent"
msgstr "Automatische Einrückung"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Convert Indent On Save"
-msgstr "Konvertiere Einrückung zu Leerzeichen"
+msgstr "Einrückung beim Speichern umwandeln"
#: editor/editor_settings.cpp scene/gui/text_edit.cpp
-#, fuzzy
msgid "Draw Tabs"
-msgstr "Zeichenaufrufe:"
+msgstr "Tabulatoren anzeigen"
#: editor/editor_settings.cpp scene/gui/text_edit.cpp
-#, fuzzy
msgid "Draw Spaces"
-msgstr "Zeichenaufrufe:"
+msgstr "Leerzeichen anzeigen"
#: editor/editor_settings.cpp editor/plugins/spatial_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/main/scene_tree.cpp
@@ -5412,180 +5347,168 @@ msgstr "Navigation"
#: editor/editor_settings.cpp scene/gui/text_edit.cpp
msgid "Smooth Scrolling"
-msgstr ""
+msgstr "Glattes Skrollen"
#: editor/editor_settings.cpp scene/gui/text_edit.cpp
msgid "V Scroll Speed"
-msgstr ""
+msgstr "Vertikale Skrollgeschwindigkeit"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Show Minimap"
-msgstr "Zeige Ursprung"
+msgstr "Minikarte anzeigen"
#: editor/editor_settings.cpp
msgid "Minimap Width"
-msgstr ""
+msgstr "Breite der Minikarte"
#: editor/editor_settings.cpp
msgid "Mouse Extra Buttons Navigate History"
-msgstr ""
+msgstr "Extramaustasten blättern durch Verlauf"
#: editor/editor_settings.cpp
msgid "Appearance"
-msgstr ""
+msgstr "Aussehen"
#: editor/editor_settings.cpp scene/gui/text_edit.cpp
-#, fuzzy
msgid "Show Line Numbers"
-msgstr "Zeilennummer:"
+msgstr "Zeilennummern anzeigen"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Line Numbers Zero Padded"
-msgstr "Zeilennummer:"
+msgstr "Zeilennummer mit Nullen auffüllen"
#: editor/editor_settings.cpp
msgid "Show Bookmark Gutter"
-msgstr ""
+msgstr "Lesezeichenspalte anzeigen"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Show Breakpoint Gutter"
-msgstr "Haltepunkte auslassen"
+msgstr "Breakpointspalte anzeigen"
#: editor/editor_settings.cpp
msgid "Show Info Gutter"
-msgstr ""
+msgstr "Informationsspalte anzeigen"
#: editor/editor_settings.cpp
msgid "Code Folding"
-msgstr ""
+msgstr "Codeeinklappen"
#: editor/editor_settings.cpp
msgid "Word Wrap"
-msgstr ""
+msgstr "Wörter umbrechen"
#: editor/editor_settings.cpp
msgid "Show Line Length Guidelines"
-msgstr ""
+msgstr "Zeilenlängenhinweislinien anzeigen"
#: editor/editor_settings.cpp
msgid "Line Length Guideline Soft Column"
-msgstr ""
+msgstr "Weiche Grenze für Zeilenlängehinweislinie"
#: editor/editor_settings.cpp
msgid "Line Length Guideline Hard Column"
-msgstr ""
+msgstr "Harte Grenze für Zeilenlängehinweislinie"
#: editor/editor_settings.cpp editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "Script List"
-msgstr "Skript Editor"
+msgstr "Skriptliste"
#: editor/editor_settings.cpp
msgid "Show Members Overview"
-msgstr ""
+msgstr "Übersicht der Elemente anzeigen"
#: editor/editor_settings.cpp editor/plugins/script_editor_plugin.cpp
#: editor/plugins/shader_editor_plugin.cpp
-#, fuzzy
msgid "Files"
-msgstr "Datei"
+msgstr "Dateien"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Trim Trailing Whitespace On Save"
-msgstr "Kürze Leerraum am Zeilenende"
+msgstr "Abschließende Leerzeichen beim Speichern entfernen"
#: editor/editor_settings.cpp
msgid "Autosave Interval Secs"
-msgstr ""
+msgstr "Autospeicherinterval (s)"
#: editor/editor_settings.cpp editor/plugins/script_editor_plugin.cpp
msgid "Restore Scripts On Load"
-msgstr ""
+msgstr "Skripte beim Laden wiederherstellen"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Create Signal Callbacks"
-msgstr "Shader-Fallbacks forcieren"
+msgstr "Signalcallbacks erstellen"
#: editor/editor_settings.cpp
msgid "Sort Members Outline Alphabetically"
-msgstr ""
+msgstr "Übersicht der Elemente alphabetisch sortieren"
#: editor/editor_settings.cpp scene/gui/line_edit.cpp
msgid "Cursor"
-msgstr ""
+msgstr "Mauszeiger"
#: editor/editor_settings.cpp
msgid "Scroll Past End Of File"
-msgstr ""
+msgstr "Über das Dateiende hinaus scrollen"
#: editor/editor_settings.cpp
msgid "Block Caret"
-msgstr ""
+msgstr "Blockeinfügemarke"
#: editor/editor_settings.cpp scene/gui/line_edit.cpp
msgid "Caret Blink"
-msgstr ""
+msgstr "Einfügemarkeblinken"
#: editor/editor_settings.cpp scene/gui/line_edit.cpp
msgid "Caret Blink Speed"
-msgstr ""
+msgstr "Einfügemarkeblinkgeschwindigkeit"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Right Click Moves Caret"
-msgstr "Rechtsklicken um Punkt hinzuzufügen"
+msgstr "Rechtsklick bewegt Einfügemarke"
#: editor/editor_settings.cpp
msgid "Idle Parse Delay"
-msgstr ""
+msgstr "Leerlaufparsenverzögerung"
#: editor/editor_settings.cpp
msgid "Auto Brace Complete"
-msgstr ""
+msgstr "Automatisches Klammervervollständigen"
#: editor/editor_settings.cpp
msgid "Code Complete Delay"
-msgstr ""
+msgstr "Verzögerung des automatischen Klammervervollständigen"
#: editor/editor_settings.cpp
msgid "Put Callhint Tooltip Below Current Line"
-msgstr ""
+msgstr "Funktionsaufrufshinweis unter aktueller Zeile platzieren"
#: editor/editor_settings.cpp
msgid "Callhint Tooltip Offset"
-msgstr ""
+msgstr "Abstand des Funktionsaufrufshinweis"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Complete File Paths"
-msgstr "Node-Pfad kopieren"
+msgstr "Dateipfade vervollständigen"
#: editor/editor_settings.cpp modules/gdscript/gdscript_editor.cpp
-#, fuzzy
msgid "Add Type Hints"
-msgstr "Typ hinzufügen"
+msgstr "Typhinweise hinzufügen"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Show Help Index"
-msgstr "Helfer anzeigen"
+msgstr "Hilfeindex anzeigen"
#: editor/editor_settings.cpp
msgid "Help Font Size"
-msgstr ""
+msgstr "Schriftgröße der Hilfe"
#: editor/editor_settings.cpp
msgid "Help Source Font Size"
-msgstr ""
+msgstr "Schriftgröße von Quellcode in der Hilfe"
#: editor/editor_settings.cpp
msgid "Help Title Font Size"
-msgstr ""
+msgstr "Schriftgröße von Titeln der Hilfe"
#: editor/editor_settings.cpp editor/plugins/mesh_library_editor_plugin.cpp
#: modules/gridmap/grid_map_editor_plugin.cpp
@@ -5593,507 +5516,454 @@ msgid "Grid Map"
msgstr "Gitterkarte"
#: editor/editor_settings.cpp modules/gridmap/grid_map_editor_plugin.cpp
-#, fuzzy
msgid "Pick Distance"
-msgstr "Auswahlradius:"
+msgstr "Auswahldistanz"
#: editor/editor_settings.cpp
msgid "Primary Grid Color"
-msgstr ""
+msgstr "Primäre Gitterfarbe"
#: editor/editor_settings.cpp
msgid "Secondary Grid Color"
-msgstr ""
+msgstr "Sekundäre Gitterfarbe"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Selection Box Color"
-msgstr "Nur Auswahl"
+msgstr "Auswahlrechtecksfarbe"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Primary Grid Steps"
-msgstr "Gitterabstand:"
+msgstr "Primäre Gitterschritte"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Grid Size"
-msgstr "Gitterabstand:"
+msgstr "Gittergröße"
#: editor/editor_settings.cpp
msgid "Grid Division Level Max"
-msgstr ""
+msgstr "Maximale Gitterteilung"
#: editor/editor_settings.cpp
msgid "Grid Division Level Min"
-msgstr ""
+msgstr "Minimale Gitterteilung"
#: editor/editor_settings.cpp
msgid "Grid Division Level Bias"
-msgstr ""
+msgstr "Gitterteilungsneigung"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Grid XZ Plane"
-msgstr "GridMap zeichnen"
+msgstr "XZ-Gitterebene"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Grid XY Plane"
-msgstr "GridMap zeichnen"
+msgstr "XY-Gitterebene"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Grid YZ Plane"
-msgstr "GridMap zeichnen"
+msgstr "XZ-Gitterebene"
#: editor/editor_settings.cpp editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Default FOV"
-msgstr "Standard"
+msgstr "Standard Blickfeld"
#: editor/editor_settings.cpp editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Default Z Near"
-msgstr "Standard-Thema"
+msgstr "Standard Z-Nahlimit"
#: editor/editor_settings.cpp editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Default Z Far"
-msgstr "Standard"
+msgstr "Standard Z-Fernlimit"
#: editor/editor_settings.cpp
msgid "Lightmap Baking Number Of CPU Threads"
-msgstr ""
+msgstr "Anzahl CPU-Threads für Lightmap-Baking"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Navigation Scheme"
-msgstr "Navigationsmodus"
+msgstr "Navigationsschema"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Invert Y Axis"
-msgstr "Y-Achse bearbeiten"
+msgstr "Y-Achse invertieren"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Invert X Axis"
-msgstr "X-Achse bearbeiten"
+msgstr "X-Achse invertieren"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Zoom Style"
-msgstr "Verkleinern"
+msgstr "Vergrößerungsstil"
#: editor/editor_settings.cpp
msgid "Emulate Numpad"
-msgstr ""
+msgstr "Nummernblock emulieren"
#: editor/editor_settings.cpp
msgid "Emulate 3 Button Mouse"
-msgstr ""
+msgstr "Dreitastenmaus emulieren"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Orbit Modifier"
-msgstr "Nach Bearbeitungszeit sortieren (Aktuelles zuletzt)"
+msgstr "Orbit-Modus"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Pan Modifier"
msgstr "Schwenkmodus"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Zoom Modifier"
-msgstr "Bearbeitet"
+msgstr "Vergrößerungsmodus"
#: editor/editor_settings.cpp editor/plugins/spatial_editor_plugin.cpp
msgid "Warped Mouse Panning"
-msgstr ""
+msgstr "Verzerrtes Mausschwenken"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Navigation Feel"
-msgstr "Navigationsmodus"
+msgstr "Navigationsgefühl"
#: editor/editor_settings.cpp
msgid "Orbit Sensitivity"
-msgstr ""
+msgstr "Orbitempfindlichkeit"
#: editor/editor_settings.cpp
msgid "Orbit Inertia"
-msgstr ""
+msgstr "Orbitschwerfälligkeit"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Translation Inertia"
-msgstr "Übersetzungen"
+msgstr "Verschiebeschwerfälligkeit"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Zoom Inertia"
-msgstr "Vergrößern"
+msgstr "Vergrößerungsschwerfälligkeit"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Freelook"
-msgstr "Freisicht Hoch"
+msgstr "Freisicht"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Freelook Navigation Scheme"
-msgstr "Navigations-Mesh erzeugen"
+msgstr "Freisichtnavigationsschema"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Freelook Sensitivity"
-msgstr "Freisicht Links"
+msgstr "Freisichtempfindlichkeit"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Freelook Inertia"
-msgstr "Freisicht Links"
+msgstr "Freisichtschwerfälligkeit"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Freelook Base Speed"
-msgstr "Freisicht Geschwindigkeitsregler"
+msgstr "Freisichtgrundgeschwindigkeit"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Freelook Activation Modifier"
-msgstr "Freisicht Trägheitsregler"
+msgstr "Freisichtaktivierungsmodus"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Freelook Speed Zoom Link"
-msgstr "Freisicht Geschwindigkeitsregler"
+msgstr "Freisicht-Schnellvergrößerung-Link"
#: editor/editor_settings.cpp editor/plugins/tile_map_editor_plugin.cpp
-#, fuzzy
msgid "Grid Color"
-msgstr "Farbe auswählen"
+msgstr "Gitterfarbe"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Guides Color"
-msgstr "Farbe auswählen"
+msgstr "Hilfslinienfarbe"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Smart Snapping Line Color"
-msgstr "Intelligentes Einrasten"
+msgstr "Farbe für intelligentes Einrasten"
#: editor/editor_settings.cpp
msgid "Bone Width"
-msgstr ""
+msgstr "Knochenbreite"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Bone Color 1"
-msgstr "Farbelement umbenennen"
+msgstr "Knochenfarbe 1"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Bone Color 2"
-msgstr "Farbelement umbenennen"
+msgstr "Knochenfarbe 2"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Bone Selected Color"
-msgstr "Ausgewähltes Profil bearbeiten:"
+msgstr "Farbe des ausgewählten Knochens"
#: editor/editor_settings.cpp
msgid "Bone IK Color"
-msgstr ""
+msgstr "Knochen IK Farbe"
#: editor/editor_settings.cpp
msgid "Bone Outline Color"
-msgstr ""
+msgstr "Farbe der Knochen-Umrandung"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Bone Outline Size"
-msgstr "Umrissgröße:"
+msgstr "Größe des Knochenumrisses"
#: editor/editor_settings.cpp
msgid "Viewport Border Color"
-msgstr ""
+msgstr "Randfarbe des Ansichtsfensters"
#: editor/editor_settings.cpp
msgid "Constrain Editor View"
-msgstr ""
+msgstr "Eingeschränkter-Editor-Ansicht"
#: editor/editor_settings.cpp
msgid "Simple Panning"
-msgstr ""
+msgstr "Einfaches Schwenken"
#: editor/editor_settings.cpp
msgid "Scroll To Pan"
-msgstr ""
+msgstr "Schwenk durch Scrollen"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Pan Speed"
-msgstr "Geschwindigkeit:"
+msgstr "Schwenkgeschwindigkeit"
#: editor/editor_settings.cpp editor/plugins/polygon_2d_editor_plugin.cpp
-#, fuzzy
msgid "Poly Editor"
-msgstr "Polygon2D-UV-Editor"
+msgstr "Poly-Editor"
#: editor/editor_settings.cpp
msgid "Point Grab Radius"
-msgstr ""
+msgstr "Punktauswahlsradius"
#: editor/editor_settings.cpp editor/plugins/polygon_2d_editor_plugin.cpp
-#, fuzzy
msgid "Show Previous Outline"
-msgstr "Vorherige Ebene"
+msgstr "Vorigen Umriss anzeigen"
#: editor/editor_settings.cpp editor/scene_tree_dock.cpp
-#, fuzzy
msgid "Autorename Animation Tracks"
-msgstr "Animation umbenennen"
+msgstr "Animationsspuren automatisch umbenennen"
#: editor/editor_settings.cpp
msgid "Default Create Bezier Tracks"
-msgstr ""
+msgstr "Bezierspuren-Erstellen-Standard"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Default Create Reset Tracks"
-msgstr "RESET Spur(en) erstellen"
+msgstr "Resetspuren-Erstellen-Standard"
#: editor/editor_settings.cpp
msgid "Onion Layers Past Color"
-msgstr ""
+msgstr "Zwiebelhautfarbe Vergangenheit"
#: editor/editor_settings.cpp
msgid "Onion Layers Future Color"
-msgstr ""
+msgstr "Zwiebelhautfarbe Zukunft"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Visual Editors"
-msgstr "Gruppeneditor"
+msgstr "Visuelle Editoren"
#: editor/editor_settings.cpp
msgid "Minimap Opacity"
-msgstr ""
+msgstr "Deckkraft Minikarte"
#: editor/editor_settings.cpp
msgid "Window Placement"
-msgstr ""
+msgstr "Fensterplatzierung"
#: editor/editor_settings.cpp scene/2d/back_buffer_copy.cpp scene/2d/sprite.cpp
#: scene/2d/visibility_notifier_2d.cpp scene/3d/sprite_3d.cpp
#: scene/gui/control.cpp
-#, fuzzy
msgid "Rect"
-msgstr "Vollständiges Rechteck"
+msgstr "Rechteck"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Rect Custom Position"
-msgstr "Kurven-Ausgangsposition festlegen"
+msgstr "Eigene Position Rechteck"
-#: editor/editor_settings.cpp
+#: editor/editor_settings.cpp platform/android/export/export_plugin.cpp
msgid "Screen"
-msgstr ""
+msgstr "Bildschirm"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Font Size"
-msgstr "Sicht von vorne"
+msgstr "Schriftgröße"
#: editor/editor_settings.cpp
#: modules/gdscript/language_server/gdscript_language_server.cpp
-#, fuzzy
msgid "Remote Host"
-msgstr "Fern "
+msgstr "Fern-Hostname"
#: editor/editor_settings.cpp
#: modules/gdscript/language_server/gdscript_language_server.cpp
-#, fuzzy
msgid "Remote Port"
-msgstr "Punkt entfernen"
+msgstr "Fern-Port"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Editor SSL Certificates"
-msgstr "Editoreinstellungen"
+msgstr "Editor SSL-Zertifikate"
+
+#: editor/editor_settings.cpp
+msgid "HTTP Proxy"
+msgstr "HTTP-Proxy"
+
+#: editor/editor_settings.cpp
+msgid "Host"
+msgstr "Hostname"
+
+#: editor/editor_settings.cpp editor/fileserver/editor_file_server.cpp
+#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp
+msgid "Port"
+msgstr "Port"
#: editor/editor_settings.cpp
msgid "Project Manager"
msgstr "Projektverwaltung"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Sorting Order"
-msgstr "in Reihenfolge:"
+msgstr "Sortierreihenfolge"
#: editor/editor_settings.cpp
msgid "Symbol Color"
-msgstr ""
+msgstr "Symbolfarbe"
#: editor/editor_settings.cpp
msgid "Keyword Color"
-msgstr ""
+msgstr "Schlüsselwortfarbe"
#: editor/editor_settings.cpp
msgid "Control Flow Keyword Color"
-msgstr ""
+msgstr "Kontrollflussschlüsselwortfarbe"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Base Type Color"
-msgstr "Basistyp"
+msgstr "Grundtypfarbe"
#: editor/editor_settings.cpp
msgid "Engine Type Color"
-msgstr ""
+msgstr "Enginetypfarbe"
#: editor/editor_settings.cpp
msgid "User Type Color"
-msgstr ""
+msgstr "Nutzertypfarbe"
#: editor/editor_settings.cpp
msgid "Comment Color"
-msgstr ""
+msgstr "Kommentarfarbe"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "String Color"
-msgstr "Speichere Datei:"
+msgstr "Zeichenkettenfarbe"
-#: editor/editor_settings.cpp
-#, fuzzy
+#: editor/editor_settings.cpp platform/javascript/export/export.cpp
+#: platform/uwp/export/export.cpp
msgid "Background Color"
-msgstr "Ungültige Hintergrundfarbe."
+msgstr "Hintergrundfarbe"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Completion Background Color"
-msgstr "Ungültige Hintergrundfarbe."
+msgstr "Vervollständigung Hintergrundfarbe"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Completion Selected Color"
-msgstr "Ausgewähltes importieren"
+msgstr "Vervollständigung Auswahlfarbe"
#: editor/editor_settings.cpp
msgid "Completion Existing Color"
-msgstr ""
+msgstr "Vervollständigung Existierend-Farbe"
#: editor/editor_settings.cpp
msgid "Completion Scroll Color"
-msgstr ""
+msgstr "Vervollständigung Scrollen-Farbe"
#: editor/editor_settings.cpp
msgid "Completion Font Color"
-msgstr ""
+msgstr "Vervollständigung Schriftfarbe"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Text Color"
-msgstr "Nächste Ebene"
+msgstr "Textfarbe"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Line Number Color"
-msgstr "Zeilennummer:"
+msgstr "Zeilennummerfarbe"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Safe Line Number Color"
-msgstr "Zeilennummer:"
+msgstr "Sichere Zeilennummer-Farbe"
#: editor/editor_settings.cpp
msgid "Caret Color"
-msgstr ""
+msgstr "Einfügemarkefarbe"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Caret Background Color"
-msgstr "Ungültige Hintergrundfarbe."
+msgstr "Einfügemarke-Hintergrundfarbe"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Text Selected Color"
-msgstr "Auswahl löschen"
+msgstr "Ausgewählter Text-Farbe"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Selection Color"
-msgstr "Nur Auswahl"
+msgstr "Auswahlfarbe"
#: editor/editor_settings.cpp
msgid "Brace Mismatch Color"
-msgstr ""
+msgstr "Klammerfehlerfarbe"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Current Line Color"
-msgstr "Aktuelle Szene"
+msgstr "Aktuellezeilenfarbe"
#: editor/editor_settings.cpp
msgid "Line Length Guideline Color"
-msgstr ""
+msgstr "Zeilenlängehilfslinienfarbe"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Word Highlighted Color"
-msgstr "Syntaxhervorhebung"
+msgstr "Worthervorhebungsfarbe"
#: editor/editor_settings.cpp
msgid "Number Color"
-msgstr ""
+msgstr "Nummernfarbe"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Function Color"
-msgstr "Funktion"
+msgstr "Funktionenfarbe"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Member Variable Color"
-msgstr "Variable umbenennen"
+msgstr "Instanzvariablenfarbe"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Mark Color"
-msgstr "Farbe auswählen"
+msgstr "Markierungsfarbe"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Bookmark Color"
-msgstr "Lesezeichen"
+msgstr "Lesezeichenfarbe"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Breakpoint Color"
-msgstr "Haltepunkte"
+msgstr "Haltepunktfarbe"
#: editor/editor_settings.cpp
msgid "Executing Line Color"
-msgstr ""
+msgstr "Ausführende Zeile-Farbe"
#: editor/editor_settings.cpp
msgid "Code Folding Color"
-msgstr ""
+msgstr "Codeeinklappen-Farbe"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Search Result Color"
-msgstr "Suchergebnisse"
+msgstr "Suchergebnisfarbe"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Search Result Border Color"
-msgstr "Suchergebnisse"
+msgstr "Suchergebnisrahmenfarbe"
#: editor/editor_spin_slider.cpp
msgid "Hold %s to round to integers. Hold Shift for more precise changes."
@@ -6102,9 +5972,8 @@ msgstr ""
"präzisere Änderungen."
#: editor/editor_spin_slider.cpp scene/gui/button.cpp
-#, fuzzy
msgid "Flat"
-msgstr "Flach 0"
+msgstr "Flach"
#: editor/editor_sub_scene.cpp
msgid "Select Node(s) to Import"
@@ -6148,22 +6017,6 @@ msgid "Starting the download..."
msgstr "Download wird begonnen…"
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "HTTP Proxy"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Host"
-msgstr ""
-
-#: editor/export_template_manager.cpp editor/fileserver/editor_file_server.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp main/main.cpp
-#: modules/mono/mono_gd/gd_mono.cpp
-msgid "Port"
-msgstr ""
-
-#: editor/export_template_manager.cpp
msgid "Error requesting URL:"
msgstr "Fehler beim Abrufen der URL:"
@@ -6414,10 +6267,11 @@ msgstr ""
#: editor/fileserver/editor_file_server.cpp
msgid "File Server"
-msgstr ""
+msgstr "Dateiserver"
#: editor/fileserver/editor_file_server.cpp
#: editor/plugins/version_control_editor_plugin.cpp
+#: platform/uwp/export/export.cpp platform/windows/export/export.cpp
msgid "Password"
msgstr "Passwort"
@@ -6793,12 +6647,123 @@ msgstr "Gruppen verwalten"
#: editor/import/editor_import_collada.cpp
msgid "Collada"
-msgstr ""
+msgstr "Collada"
#: editor/import/editor_import_collada.cpp
msgid "Use Ambient"
+msgstr "Ambient verwenden"
+
+#: editor/import/resource_importer_bitmask.cpp
+#, fuzzy
+msgid "Create From"
+msgstr "Ordner erstellen"
+
+#: editor/import/resource_importer_bitmask.cpp
+#: servers/audio/effects/audio_effect_compressor.cpp
+msgid "Threshold"
+msgstr ""
+
+#: editor/import/resource_importer_csv_translation.cpp
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_scene.cpp
+#: editor/import/resource_importer_texture.cpp
+#: editor/import/resource_importer_wav.cpp scene/3d/gi_probe.cpp
+#, fuzzy
+msgid "Compress"
+msgstr "Komponenten"
+
+#: editor/import/resource_importer_csv_translation.cpp
+msgid "Delimiter"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+msgid "No BPTC If RGB"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/sprite_3d.cpp
+#: scene/resources/material.cpp scene/resources/particles_material.cpp
+#: scene/resources/texture.cpp
+msgid "Flags"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/animation/tween.cpp
+#: scene/resources/texture.cpp
+msgid "Repeat"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/2d/light_2d.cpp
+#: scene/gui/control.cpp scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Filter"
+msgstr "Filter:"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Mipmaps"
+msgstr "Signale"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+msgid "Anisotropic"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+msgid "sRGB"
msgstr ""
+#: editor/import/resource_importer_layered_texture.cpp
+#, fuzzy
+msgid "Slices"
+msgstr "Autoschnitt"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
+#: scene/resources/style_box.cpp
+#, fuzzy
+msgid "Horizontal"
+msgstr "Horizontal:"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
+#: scene/resources/style_box.cpp
+#, fuzzy
+msgid "Vertical"
+msgstr "Vertikal:"
+
+#: editor/import/resource_importer_obj.cpp
+#, fuzzy
+msgid "Generate Tangents"
+msgstr "Generiere Punkte"
+
+#: editor/import/resource_importer_obj.cpp
+#, fuzzy
+msgid "Scale Mesh"
+msgstr "Skalierungsmodus"
+
+#: editor/import/resource_importer_obj.cpp
+#, fuzzy
+msgid "Offset Mesh"
+msgstr "Versatz:"
+
+#: editor/import/resource_importer_obj.cpp
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Octahedral Compression"
+msgstr "Kompression"
+
+#: editor/import/resource_importer_obj.cpp
+#, fuzzy
+msgid "Optimize Mesh Flags"
+msgstr "Größe: "
+
#: editor/import/resource_importer_scene.cpp
msgid "Import as Single Scene"
msgstr "Als einzelne Szene importieren"
@@ -6839,6 +6804,156 @@ msgstr "Als mehrere Szenen importieren"
msgid "Import as Multiple Scenes+Materials"
msgstr "Import als mehrere Szenen und Materialien"
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Nodes"
+msgstr "Node"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Root Type"
+msgstr "Rückgabewert"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Root Name"
+msgstr "Remote-Name"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Root Scale"
+msgstr "Skalierung"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Custom Script"
+msgstr "Benutzerdefiniertes Node"
+
+#: editor/import/resource_importer_scene.cpp scene/resources/texture.cpp
+#, fuzzy
+msgid "Storage"
+msgstr "Speichere Datei:"
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Use Legacy Names"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+#, fuzzy
+msgid "Materials"
+msgstr "Materialänderungen:"
+
+#: editor/import/resource_importer_scene.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Location"
+msgstr "Lokalisierung"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Keep On Reimport"
+msgstr "Neuimport"
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+#, fuzzy
+msgid "Meshes"
+msgstr "Mesh"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Ensure Tangents"
+msgstr "Kurventangente ändern"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Light Baking"
+msgstr "Lightmapping"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Lightmap Texel Size"
+msgstr "LightMap-Bake"
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+msgid "Skins"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Use Named Skins"
+msgstr "Einrasten verwenden"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "External Files"
+msgstr "Extern"
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Store In Subdir"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Filter Script"
+msgstr "Skripte filtern"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Keep Custom Tracks"
+msgstr "Transformation"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Optimizer"
+msgstr "Optimieren"
+
+#: editor/import/resource_importer_scene.cpp main/main.cpp
+#: modules/mono/mono_gd/gd_mono.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp scene/2d/camera_2d.cpp scene/2d/light_2d.cpp
+#: scene/2d/navigation_polygon.cpp scene/2d/ray_cast_2d.cpp scene/2d/sprite.cpp
+#: scene/2d/y_sort.cpp scene/3d/audio_stream_player_3d.cpp
+#: scene/3d/baked_lightmap.cpp scene/3d/interpolated_camera.cpp
+#: scene/3d/light.cpp scene/3d/navigation_mesh_instance.cpp
+#: scene/3d/physics_joint.cpp scene/3d/ray_cast.cpp scene/3d/sprite_3d.cpp
+#: scene/gui/graph_edit.cpp scene/gui/rich_text_label.cpp
+#: scene/resources/curve.cpp scene/resources/environment.cpp
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Enabled"
+msgstr "Aktivieren"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Max Linear Error"
+msgstr "Max. Linearer Fehler:"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Max Angular Error"
+msgstr "Max. Winkel-Fehler:"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Max Angle"
+msgstr "Wert"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Remove Unused Tracks"
+msgstr "Spur entfernen"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Clips"
+msgstr "Animationsausschnitt"
+
+#: editor/import/resource_importer_scene.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/particles_2d.cpp scene/3d/area.cpp scene/3d/cpu_particles.cpp
+#: scene/3d/particles.cpp scene/resources/environment.cpp
+#, fuzzy
+msgid "Amount"
+msgstr "Menge:"
+
#: editor/import/resource_importer_scene.cpp
#: editor/plugins/mesh_library_editor_plugin.cpp
msgid "Import Scene"
@@ -6882,11 +6997,151 @@ msgstr ""
msgid "Saving..."
msgstr "Speichere..."
+#: editor/import/resource_importer_texture.cpp scene/resources/texture.cpp
+msgid "Lossy Quality"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "HDR Mode"
+msgstr "Auswahlmodus"
+
+#: editor/import/resource_importer_texture.cpp
+msgid "BPTC LDR"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/mesh_instance_2d.cpp scene/2d/multimesh_instance_2d.cpp
+#: scene/2d/particles_2d.cpp scene/2d/sprite.cpp scene/resources/style_box.cpp
+msgid "Normal Map"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Process"
+msgstr "Nachbearbeitung"
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Fix Alpha Border"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Premult Alpha"
+msgstr "Polygon bearbeiten"
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Hdr As Srgb"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Invert Color"
+msgstr "Vertex"
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Normal Map Invert Y"
+msgstr "Zufälliges Skalieren:"
+
+#: editor/import/resource_importer_texture.cpp
+#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
+#: scene/audio/audio_stream_player.cpp scene/gui/video_player.cpp
+msgid "Stream"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Size Limit"
+msgstr "Grenzen"
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Detect 3D"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "SVG"
+msgstr "HSV"
+
#: editor/import/resource_importer_texture.cpp
msgid ""
"Warning, no suitable PC VRAM compression enabled in Project Settings. This "
"texture will not display correctly on PC."
msgstr ""
+"Achtung, es wurde keine geeignete PC-VRAM-Kompression in den "
+"Projekteinstellungen aktiviert. Die Textur wird auf PCs nicht korrekt "
+"darstellbar sein."
+
+#: editor/import/resource_importer_texture_atlas.cpp
+#, fuzzy
+msgid "Atlas File"
+msgstr "Umrissgröße:"
+
+#: editor/import/resource_importer_texture_atlas.cpp
+#, fuzzy
+msgid "Import Mode"
+msgstr "Export-Modus:"
+
+#: editor/import/resource_importer_texture_atlas.cpp
+#, fuzzy
+msgid "Crop To Region"
+msgstr "Kachelregion setzen"
+
+#: editor/import/resource_importer_texture_atlas.cpp
+msgid "Trim Alpha Border From Region"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp scene/2d/physics_body_2d.cpp
+#, fuzzy
+msgid "Force"
+msgstr "Force Push"
+
+#: editor/import/resource_importer_wav.cpp
+msgid "8 Bit"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp main/main.cpp
+#: modules/mono/editor/csharp_project.cpp modules/mono/mono_gd/gd_mono.cpp
+msgid "Mono"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+#, fuzzy
+msgid "Max Rate"
+msgstr "Misch-Node"
+
+#: editor/import/resource_importer_wav.cpp
+#, fuzzy
+msgid "Max Rate Hz"
+msgstr "Misch-Node"
+
+#: editor/import/resource_importer_wav.cpp
+msgid "Trim"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+#, fuzzy
+msgid "Normalize"
+msgstr "Format"
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+#, fuzzy
+msgid "Loop Mode"
+msgstr "Bewegungsmodus"
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+#, fuzzy
+msgid "Loop Begin"
+msgstr "Bewegungsmodus"
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+#, fuzzy
+msgid "Loop End"
+msgstr "Bewegungsmodus"
#: editor/import_defaults_editor.cpp
msgid "Select Importer"
@@ -6968,6 +7223,29 @@ msgid "Failed to load resource."
msgstr "Laden der Ressource gescheitert."
#: editor/inspector_dock.cpp
+#, fuzzy
+msgid "Property Name Style"
+msgstr "Projektname:"
+
+#: editor/inspector_dock.cpp scene/gui/color_picker.cpp
+msgid "Raw"
+msgstr "Roh"
+
+#: editor/inspector_dock.cpp
+#, fuzzy
+msgid "Capitalized"
+msgstr "Kapitalisiere"
+
+#: editor/inspector_dock.cpp
+#, fuzzy
+msgid "Localized"
+msgstr "Gebietsschema"
+
+#: editor/inspector_dock.cpp
+msgid "Localization not available for current language."
+msgstr ""
+
+#: editor/inspector_dock.cpp
msgid "Copy Properties"
msgstr "Eigenschaften kopieren"
@@ -7856,7 +8134,7 @@ msgstr "Filter..."
#: editor/plugins/asset_library_editor_plugin.cpp scene/main/http_request.cpp
msgid "Use Threads"
-msgstr ""
+msgstr "Threads verwenden"
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Contents:"
@@ -7983,9 +8261,8 @@ msgid "Download Error"
msgstr "Downloadfehler"
#: editor/plugins/asset_library_editor_plugin.cpp
-#, fuzzy
msgid "Available URLs"
-msgstr "Verfügbare Profile:"
+msgstr "Verfügbare URLs"
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Download for this asset is already in progress!"
@@ -8016,18 +8293,26 @@ msgid "License (Z-A)"
msgstr "Lizenz (Z-A)"
#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgctxt "Pagination"
msgid "First"
msgstr "Erste"
-#: editor/plugins/asset_library_editor_plugin.cpp scene/gui/control.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgctxt "Pagination"
msgid "Previous"
msgstr "Vorherige"
-#: editor/plugins/asset_library_editor_plugin.cpp scene/gui/control.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgctxt "Pagination"
msgid "Next"
msgstr "Nächste"
#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgctxt "Pagination"
msgid "Last"
msgstr "Letzte"
@@ -8278,19 +8563,19 @@ msgstr ""
"Wenn aktiviert, ändert das Verschieben von Control-Nodes deren Bezugspunkte "
"statt ihre Randabstände."
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Top Left"
msgstr "Oben links"
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Top Right"
msgstr "Oben rechts"
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Bottom Right"
msgstr "Unten rechts"
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Bottom Left"
msgstr "Unten links"
@@ -8645,23 +8930,20 @@ msgid "View"
msgstr "Ansicht"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#, fuzzy
msgid "Show"
-msgstr "Raster anzeigen"
+msgstr "Anzeigen"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#, fuzzy
msgid "Show When Snapping"
-msgstr "Intelligentes Einrasten"
+msgstr "Anzeigen beim Einrasten"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Hide"
-msgstr ""
+msgstr "Verbergen"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#, fuzzy
msgid "Toggle Grid"
-msgstr "Modus umschalten"
+msgstr "Gitter umschalten"
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/polygon_2d_editor_plugin.cpp
@@ -9007,6 +9289,19 @@ msgstr "GI Sonde vorrendern"
msgid "Gradient Edited"
msgstr "Gradient bearbeitet"
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+msgid "Swap GradientTexture2D Fill Points"
+msgstr ""
+
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+msgid "Swap Gradient Fill Points"
+msgstr ""
+
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+#, fuzzy
+msgid "Toggle Grid Snap"
+msgstr "Gitter umschalten"
+
#: editor/plugins/item_list_editor_plugin.cpp
msgid "Item %d"
msgstr "Element %d"
@@ -9244,8 +9539,9 @@ msgstr ""
"Aus bestehender Szene aktualisieren?:\n"
"%s"
-#: editor/plugins/mesh_library_editor_plugin.cpp modules/gridmap/grid_map.cpp
-msgid "Mesh Library"
+#: editor/plugins/mesh_library_editor_plugin.cpp
+#, fuzzy
+msgid "MeshLibrary"
msgstr "Mesh-Bibliothek"
#: editor/plugins/mesh_library_editor_plugin.cpp
@@ -9269,21 +9565,18 @@ msgid "Update from Scene"
msgstr "Aus Szene aktualisieren"
#: editor/plugins/mesh_library_editor_plugin.cpp
-#, fuzzy
msgid "Apply without Transforms"
-msgstr "MeshInstance-Transforms anwenden"
+msgstr "Ohne Transforms anwenden"
#: editor/plugins/mesh_library_editor_plugin.cpp
-#, fuzzy
msgid "Apply with Transforms"
-msgstr "MeshInstance-Transforms anwenden"
+msgstr "Mit Transforms anwenden"
#: editor/plugins/mesh_library_editor_plugin.cpp
#: editor/plugins/tile_map_editor_plugin.cpp
#: modules/gridmap/grid_map_editor_plugin.cpp
-#, fuzzy
msgid "Preview Size"
-msgstr "Vorschau"
+msgstr "Vorschaugröße"
#: editor/plugins/multimesh_editor_plugin.cpp
msgid "No mesh source specified (and no MultiMesh set in node)."
@@ -9600,16 +9893,14 @@ msgstr "Segment aufteilen (in Kurve)"
#: editor/plugins/path_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp editor/spatial_editor_gizmos.cpp
#: modules/csg/csg_gizmos.cpp
-#, fuzzy
msgid "3D Gizmos"
-msgstr "Manipulator"
+msgstr "3D-Griffe"
#: editor/plugins/path_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp editor/spatial_editor_gizmos.cpp
#: modules/csg/csg_gizmos.cpp
-#, fuzzy
msgid "Gizmo Colors"
-msgstr "Emissionsfarben"
+msgstr "Grifffarben"
#: editor/plugins/physical_bone_plugin.cpp
msgid "Move Joint"
@@ -9917,7 +10208,7 @@ msgstr "Schließen und Änderungen speichern?"
#: editor/plugins/script_editor_plugin.cpp
#: editor/plugins/shader_editor_plugin.cpp
msgid "Auto Reload Scripts On External Change"
-msgstr ""
+msgstr "Skripte automatisch bei externen Änderungen neuladen"
#: editor/plugins/script_editor_plugin.cpp
msgid "Error writing TextFile:"
@@ -10000,7 +10291,7 @@ msgstr "%s Klassenreferenz"
#: editor/plugins/script_editor_plugin.cpp
msgid "Auto Reload And Parse Scripts On Save"
-msgstr ""
+msgstr "Skripte automatisch neuladen und parsen beim Speichern"
#: editor/plugins/script_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
@@ -10174,58 +10465,51 @@ msgstr "Suchergebnisse"
#: editor/plugins/script_editor_plugin.cpp
msgid "Open Dominant Script On Scene Change"
-msgstr ""
+msgstr "Hauptskript bei Szenenwechsel öffnen"
#: editor/plugins/script_editor_plugin.cpp
msgid "External"
-msgstr ""
+msgstr "Extern"
#: editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "Use External Editor"
-msgstr "Mit externem Editor debuggen"
+msgstr "Externen Editor nutzen"
#: editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "Exec Path"
-msgstr "Exportpfad"
+msgstr "Ausführungspfad"
#: editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "Script Temperature Enabled"
-msgstr "Vorlagendatei auswählen"
+msgstr "Skript-Temperatur aktiviert"
#: editor/plugins/script_editor_plugin.cpp
msgid "Highlight Current Script"
-msgstr ""
+msgstr "Aktuelles Skript hervorheben"
#: editor/plugins/script_editor_plugin.cpp
msgid "Script Temperature History Size"
-msgstr ""
+msgstr "Skript-Temperatur-Verlaufsgröße"
#: editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "Current Script Background Color"
-msgstr "Ungültige Hintergrundfarbe."
+msgstr "Hintergrundfarbe des aktuellen Skripts"
#: editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "Group Help Pages"
-msgstr "Auswahl gruppieren"
+msgstr "Hilfeseiten gruppieren"
#: editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "Sort Scripts By"
-msgstr "Erstelle Skript"
+msgstr "Skripte sortieren nach"
#: editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "List Script Names As"
-msgstr "Skriptname:"
+msgstr "Skriptnamen auflisten als"
#: editor/plugins/script_editor_plugin.cpp
msgid "Exec Flags"
-msgstr ""
+msgstr "Ausführungsparameter"
#: editor/plugins/script_editor_plugin.cpp
msgid "Clear Recent Scripts"
@@ -10240,8 +10524,8 @@ msgstr "Verbindungen mit Methode:"
msgid "Source"
msgstr "Quelle"
-#: editor/plugins/script_text_editor.cpp scene/3d/interpolated_camera.cpp
-#: scene/animation/skeleton_ik.cpp
+#: editor/plugins/script_text_editor.cpp platform/uwp/export/export.cpp
+#: scene/3d/interpolated_camera.cpp scene/animation/skeleton_ik.cpp
msgid "Target"
msgstr "Ziel"
@@ -11048,21 +11332,19 @@ msgstr "Nachher"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Manipulator Gizmo Size"
-msgstr ""
+msgstr "Anpassgriffgröße"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Manipulator Gizmo Opacity"
-msgstr ""
+msgstr "Anpassgriffdeckgraft"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Show Viewport Rotation Gizmo"
-msgstr "Sichtrotation sperren"
+msgstr "Ansichtsfensterrotationsgriff anzeigen"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Instanced"
-msgstr "Instanz"
+msgstr "Instantiiert"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Unnamed Gizmo"
@@ -11224,7 +11506,9 @@ msgstr "Geschwindigkeit:"
#: editor/plugins/sprite_frames_editor_plugin.cpp
#: modules/gltf/gltf_animation.cpp modules/minimp3/audio_stream_mp3.cpp
-#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp scene/2d/path_2d.cpp
+#: modules/minimp3/resource_importer_mp3.cpp
+#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp
+#: modules/stb_vorbis/resource_importer_ogg_vorbis.cpp scene/2d/path_2d.cpp
#: scene/3d/path.cpp scene/resources/animation.cpp scene/resources/material.cpp
msgid "Loop"
msgstr "Wiederholung"
@@ -11985,65 +12269,57 @@ msgstr "Nach rechts rotieren"
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Flip Horizontally"
-msgstr "Horizontal umdrehen"
+msgstr "Horizontal spiegeln"
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Flip Vertically"
-msgstr "Vertikal umdrehen"
+msgstr "Vertikal spiegeln"
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Clear Transform"
msgstr "Transform leeren"
#: editor/plugins/tile_map_editor_plugin.cpp
-#, fuzzy
msgid "Tile Map"
-msgstr "Zeichne TileMap"
+msgstr "Tilemap"
#: editor/plugins/tile_map_editor_plugin.cpp
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Palette Min Width"
-msgstr ""
+msgstr "Minimale Palettenbreite"
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Palette Item Hseparation"
-msgstr ""
+msgstr "Hseparation eines Elements der Palette"
#: editor/plugins/tile_map_editor_plugin.cpp
-#, fuzzy
msgid "Show Tile Names"
-msgstr "Alle Sprachen anzeigen"
+msgstr "Kachelnamen anzeigen"
#: editor/plugins/tile_map_editor_plugin.cpp
-#, fuzzy
msgid "Show Tile Ids"
-msgstr "Lineale anzeigen"
+msgstr "Kachel-IDs anzeigen"
#: editor/plugins/tile_map_editor_plugin.cpp
-#, fuzzy
msgid "Sort Tiles By Name"
-msgstr "Dateien sortieren"
+msgstr "Kacheln nach Name sortieren"
#: editor/plugins/tile_map_editor_plugin.cpp
-#, fuzzy
msgid "Bucket Fill Preview"
-msgstr "Fülleimer"
+msgstr "Fülleimer-Vorschau"
#: editor/plugins/tile_map_editor_plugin.cpp
#: modules/gridmap/grid_map_editor_plugin.cpp
-#, fuzzy
msgid "Editor Side"
-msgstr "Editor"
+msgstr "Editorseite"
#: editor/plugins/tile_map_editor_plugin.cpp
-#, fuzzy
msgid "Display Grid"
-msgstr "Overdraw-Ansicht"
+msgstr "Gitter anzeigen"
#: editor/plugins/tile_map_editor_plugin.cpp
-#, fuzzy
msgid "Axis Color"
-msgstr "Farbe auswählen"
+msgstr "Achsenfarbe"
#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Add Texture(s) to TileSet."
@@ -12118,8 +12394,9 @@ msgstr "Bitmaske"
msgid "Priority"
msgstr "Priorität"
-#: editor/plugins/tile_set_editor_plugin.cpp main/main.cpp scene/gui/button.cpp
-#: scene/gui/item_list.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp main/main.cpp
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#: scene/gui/button.cpp scene/gui/item_list.cpp
msgid "Icon"
msgstr "Symbol"
@@ -13498,10 +13775,6 @@ msgstr ""
"individuellen Exporteinstellugen liegen."
#: editor/project_export.cpp
-msgid "Release"
-msgstr "Veröffentlichung"
-
-#: editor/project_export.cpp
msgid "Exporting All"
msgstr "Exportiere alles"
@@ -13622,11 +13895,12 @@ msgid ""
"Note: Encryption key needs to be stored in the binary,\n"
"you need to build the export templates from source."
msgstr ""
+"Hinweis: Um den Schlüssel wie erforderlich in der Binärdatei zu speichern,\n"
+"muss die Exportvorlage aus dem Quelltext gebaut werden."
#: editor/project_export.cpp
-#, fuzzy
msgid "More Info..."
-msgstr "Verschiebe zu..."
+msgstr "Mehr Infos…"
#: editor/project_export.cpp
msgid "Export PCK/Zip"
@@ -13961,7 +14235,6 @@ msgstr ""
#. TRANSLATORS: This refers to the application where users manage their Godot projects.
#: editor/project_manager.cpp
-#, fuzzy
msgctxt "Application"
msgid "Project Manager"
msgstr "Projektverwaltung"
@@ -14954,9 +15227,8 @@ msgid "Clear Inheritance? (No Undo!)"
msgstr "Vererbung wirklich lösen? (Lässt sich nicht rückgängig machen!)"
#: editor/scene_tree_dock.cpp
-#, fuzzy
msgid "Show Scene Tree Root Selection"
-msgstr "Auswahl zentrieren"
+msgstr "Szenenbaumwurzelauswahl anzeigen"
#: editor/scene_tree_dock.cpp
msgid "Derive Script Globals By Name"
@@ -15396,6 +15668,7 @@ msgid "Change AudioStreamPlayer3D Emission Angle"
msgstr "Emissionswinkel für AudioStreamPlayer3D ändern"
#: editor/spatial_editor_gizmos.cpp modules/gltf/gltf_node.cpp
+#: platform/osx/export/export.cpp
msgid "Camera"
msgstr ""
@@ -15677,7 +15950,8 @@ msgstr ""
msgid "Use Nvidia Rect Flicker Workaround"
msgstr ""
-#: main/main.cpp platform/uwp/os_uwp.cpp
+#: main/main.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp platform/uwp/os_uwp.cpp
#, fuzzy
msgid "Display"
msgstr "Alles anzeigen"
@@ -15738,19 +16012,6 @@ msgstr ""
msgid "Allowed"
msgstr ""
-#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp scene/2d/camera_2d.cpp
-#: scene/2d/light_2d.cpp scene/2d/navigation_polygon.cpp
-#: scene/2d/ray_cast_2d.cpp scene/2d/sprite.cpp scene/2d/y_sort.cpp
-#: scene/3d/audio_stream_player_3d.cpp scene/3d/baked_lightmap.cpp
-#: scene/3d/interpolated_camera.cpp scene/3d/light.cpp
-#: scene/3d/navigation_mesh_instance.cpp scene/3d/ray_cast.cpp
-#: scene/3d/sprite_3d.cpp scene/gui/graph_edit.cpp
-#: scene/gui/rich_text_label.cpp scene/resources/curve.cpp
-#: scene/resources/environment.cpp
-#, fuzzy
-msgid "Enabled"
-msgstr "Aktivieren"
-
#: main/main.cpp
msgid "Intended Usage"
msgstr ""
@@ -15782,13 +16043,14 @@ msgstr ""
msgid "Handheld"
msgstr ""
-#: main/main.cpp
+#: main/main.cpp platform/javascript/export/export.cpp
+#: platform/uwp/export/export.cpp
#, fuzzy
msgid "Orientation"
msgstr "Internet-Dokumentation"
#: main/main.cpp scene/gui/scroll_container.cpp scene/gui/text_edit.cpp
-#: scene/main/scene_tree.cpp
+#: scene/main/scene_tree.cpp scene/register_scene_types.cpp
#, fuzzy
msgid "Common"
msgstr "Community"
@@ -15831,7 +16093,7 @@ msgstr ""
#: main/main.cpp
#, fuzzy
-msgid "Frame Delay (msec)"
+msgid "Frame Delay Msec"
msgstr "Auswahl einrahmen"
#: main/main.cpp
@@ -15960,11 +16222,6 @@ msgstr ""
msgid "Tooltip Position Offset"
msgstr "Rotationsversatz:"
-#: main/main.cpp modules/mono/editor/csharp_project.cpp
-#: modules/mono/mono_gd/gd_mono.cpp
-msgid "Mono"
-msgstr ""
-
#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp
#, fuzzy
msgid "Debugger Agent"
@@ -16545,7 +16802,7 @@ msgstr "Farben"
msgid "Intensity"
msgstr ""
-#: modules/gltf/gltf_light.cpp scene/2d/light_2d.cpp
+#: modules/gltf/gltf_light.cpp scene/2d/light_2d.cpp scene/3d/light.cpp
#, fuzzy
msgid "Range"
msgstr "Ändern"
@@ -16692,11 +16949,6 @@ msgstr "Mit Daten"
msgid "Use Named Skin Binds"
msgstr ""
-#: modules/gltf/gltf_state.cpp scene/3d/physics_joint.cpp
-#, fuzzy
-msgid "Nodes"
-msgstr "Node"
-
#: modules/gltf/gltf_state.cpp
#, fuzzy
msgid "Buffer Views"
@@ -16708,16 +16960,6 @@ msgstr ""
#: modules/gltf/gltf_state.cpp
#, fuzzy
-msgid "Meshes"
-msgstr "Mesh"
-
-#: modules/gltf/gltf_state.cpp
-#, fuzzy
-msgid "Materials"
-msgstr "Materialänderungen:"
-
-#: modules/gltf/gltf_state.cpp
-#, fuzzy
msgid "Scene Name"
msgstr "Szenenpfad:"
@@ -16733,15 +16975,11 @@ msgstr "Name des Wurzel-Nodes"
msgid "Textures"
msgstr "Eigenschaften und Merkmale"
-#: modules/gltf/gltf_state.cpp
+#: modules/gltf/gltf_state.cpp platform/uwp/export/export.cpp
msgid "Images"
msgstr ""
#: modules/gltf/gltf_state.cpp
-msgid "Skins"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp
msgid "Cameras"
msgstr ""
@@ -16776,11 +17014,15 @@ msgid "Src Image"
msgstr "Knochen anzeigen"
#: modules/gridmap/grid_map.cpp
+msgid "Mesh Library"
+msgstr "Mesh-Bibliothek"
+
+#: modules/gridmap/grid_map.cpp
#, fuzzy
msgid "Physics Material"
msgstr "Physik-relative Renderzeit %"
-#: modules/gridmap/grid_map.cpp
+#: modules/gridmap/grid_map.cpp scene/3d/visual_instance.cpp
#, fuzzy
msgid "Use In Baked Light"
msgstr "Lightmaps vorrendern"
@@ -16812,6 +17054,7 @@ msgstr "Mitte"
#: modules/gridmap/grid_map.cpp scene/2d/collision_object_2d.cpp
#: scene/2d/tile_map.cpp scene/3d/collision_object.cpp scene/3d/soft_body.cpp
+#: scene/resources/material.cpp
msgid "Mask"
msgstr ""
@@ -16993,7 +17236,9 @@ msgid "Ultra Quality Ray Count"
msgstr ""
#: modules/minimp3/audio_stream_mp3.cpp
+#: modules/minimp3/resource_importer_mp3.cpp
#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp
+#: modules/stb_vorbis/resource_importer_ogg_vorbis.cpp
#, fuzzy
msgid "Loop Offset"
msgstr "Versatz:"
@@ -18083,6 +18328,194 @@ msgid "The package must have at least one '.' separator."
msgstr "Das Paket muss mindestens einen Punkt-Unterteiler ‚.‘ haben."
#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Use Custom Build"
+msgstr "Eigenes Nutzerverzeichnis verwenden"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Export Format"
+msgstr "Exportpfad"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Keystore"
+msgstr "Debugger"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Debug User"
+msgstr "Debugger"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Debug Password"
+msgstr "Passwort"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Release User"
+msgstr "Veröffentlichung"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Release Password"
+msgstr "Passwort"
+
+#: platform/android/export/export_plugin.cpp
+msgid "One Click Deploy"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Clear Previous Install"
+msgstr "Vorherige Instanz untersuchen"
+
+#: platform/android/export/export_plugin.cpp scene/resources/shader.cpp
+msgid "Code"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Min SDK"
+msgstr "Umrissgröße:"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Target SDK"
+msgstr "Ziel-FPS"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Package"
+msgstr "Packe"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Unique Name"
+msgstr "Node-Name:"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Signed"
+msgstr "Ereignis"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Classify As Game"
+msgstr "Klassenname:"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Retain Data On Uninstall"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Exclude From Recents"
+msgstr "Nodes löschen"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Graphics"
+msgstr "Gitterversatz:"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "OpenGL Debug"
+msgstr "Öffnen"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "XR Features"
+msgstr "Eigenschaften und Merkmale"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "XR Mode"
+msgstr "Schwenkmodus"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Hand Tracking"
+msgstr "Packe"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Hand Tracking Frequency"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Passthrough"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Immersive Mode"
+msgstr "Prioritätsmodus"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Support Small"
+msgstr "Stabilität"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Support Normal"
+msgstr "Stabilität"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Support Large"
+msgstr "Stabilität"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Support Xlarge"
+msgstr "Stabilität"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "User Data Backup"
+msgstr "Benutzerschnittstelle"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Allow"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Command Line"
+msgstr "Befehl"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Extra Args"
+msgstr "Zusätzliche Aufrufparameter:"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "APK Expansion"
+msgstr "Ausdruck"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Salt"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Public Key"
+msgstr "Pfad des öffentlichen SSH-Schlüssels"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Permissions"
+msgstr "Emissionsmaske"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Custom Permissions"
+msgstr "Angepasste Szene abspielen"
+
+#: platform/android/export/export_plugin.cpp
msgid "Select device from the list"
msgstr "Gerät aus Liste auswählen"
@@ -18425,6 +18858,178 @@ msgid "The character '%s' is not allowed in Identifier."
msgstr "Das Zeichen ‚%s‘ ist in Bezeichnern nicht gestattet."
#: platform/iphone/export/export.cpp
+msgid "App Store Team ID"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Provisioning Profile UUID Debug"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Code Sign Identity Debug"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Export Method Debug"
+msgstr "Exportiere mit Debuginformationen"
+
+#: platform/iphone/export/export.cpp
+msgid "Provisioning Profile UUID Release"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Code Sign Identity Release"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Export Method Release"
+msgstr "Export-Modus:"
+
+#: platform/iphone/export/export.cpp
+msgid "Targeted Device Family"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Info"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Identifier"
+msgstr "Ungültiger Bezeichner:"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Signature"
+msgstr "Ereignis"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Short Version"
+msgstr "Version"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Copyright"
+msgstr "Oben rechts"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Capabilities"
+msgstr "Eigenschaften kapitalisieren"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Access Wi-Fi"
+msgstr "Zugriff"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Push Notifications"
+msgstr "Zufälliges Drehen:"
+
+#: platform/iphone/export/export.cpp scene/3d/baked_lightmap.cpp
+#, fuzzy
+msgid "User Data"
+msgstr "Benutzerschnittstelle"
+
+#: platform/iphone/export/export.cpp
+msgid "Accessible From Files App"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Accessible From Itunes Sharing"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Privacy"
+msgstr "Pfad des privaten SSH-Schlüssels"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Camera Usage Description"
+msgstr "Beschreibung"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Microphone Usage Description"
+msgstr "Eigenschaften-Beschreibung"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Photolibrary Usage Description"
+msgstr "Eigenschaften-Beschreibung"
+
+#: platform/iphone/export/export.cpp
+msgid "iPhone 120 X 120"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPhone 180 X 180"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 76 X 76"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 152 X 152"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 167 X 167"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "App Store 1024 X 1024"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Spotlight 40 X 40"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Spotlight 80 X 80"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Storyboard"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Use Launch Screen Storyboard"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Image Scale Mode"
+msgstr "Skalierungsmodus"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Custom Image @2x"
+msgstr "Benutzerdefiniertes Node"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Custom Image @3x"
+msgstr "Benutzerdefiniertes Node"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Use Custom BG Color"
+msgstr "Benutzerdefiniertes Node"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Custom BG Color"
+msgstr "Benutzerdefiniertes Node"
+
+#: platform/iphone/export/export.cpp
msgid "App Store Team ID not specified - cannot configure the project."
msgstr ""
"App-Store-Team-ID nicht festgelegt – Projekt kann nicht konfiguriert werden."
@@ -18462,6 +19067,80 @@ msgid "Could not read file:"
msgstr "Konnte Datei nicht lesen:"
#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Variant"
+msgstr "Trennung:"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Export Type"
+msgstr "Exportieren"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "VRAM Texture Compression"
+msgstr "Ausdruck"
+
+#: platform/javascript/export/export.cpp
+msgid "For Desktop"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "For Mobile"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Html"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Export Icon"
+msgstr "Alle ausklappen"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Custom Html Shell"
+msgstr "Benutzerdefiniertes Node"
+
+#: platform/javascript/export/export.cpp
+msgid "Head Include"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Canvas Resize Policy"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Focus Canvas On Start"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Experimental Virtual Keyboard"
+msgstr "Signale filtern"
+
+#: platform/javascript/export/export.cpp
+msgid "Progressive Web App"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Offline Page"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 144 X 144"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 180 X 180"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 512 X 512"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
msgid "Could not read HTML shell:"
msgstr "Konnte HTML-Shell nicht lesen:"
@@ -18567,6 +19246,202 @@ msgid "Unknown object type."
msgstr "Unbekannter Objekttyp."
#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "App Category"
+msgstr "Kategorie:"
+
+#: platform/osx/export/export.cpp
+msgid "High Res"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Location Usage Description"
+msgstr "Beschreibung"
+
+#: platform/osx/export/export.cpp
+msgid "Address Book Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Calendar Usage Description"
+msgstr "Beschreibung"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Photos Library Usage Description"
+msgstr "Eigenschaften-Beschreibung"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Desktop Folder Usage Description"
+msgstr "Methoden-Beschreibung"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Documents Folder Usage Description"
+msgstr "Methoden-Beschreibung"
+
+#: platform/osx/export/export.cpp
+msgid "Downloads Folder Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Network Volumes Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Removable Volumes Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#, fuzzy
+msgid "Codesign"
+msgstr "Codesignierendes DMG"
+
+#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Identity"
+msgstr "Einrücken"
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#, fuzzy
+msgid "Timestamp"
+msgstr "Zeit"
+
+#: platform/osx/export/export.cpp
+msgid "Hardened Runtime"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Replace Existing Signature"
+msgstr "In Dateien ersetzen"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Entitlements"
+msgstr "Manipulator"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Custom File"
+msgstr "Benutzerdefiniertes Node"
+
+#: platform/osx/export/export.cpp
+msgid "Allow JIT Code Execution"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Allow Unsigned Executable Memory"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Allow Dyld Environment Variables"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Disable Library Validation"
+msgstr "Deaktivierter Knopf"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Audio Input"
+msgstr "Eingang hinzufügen"
+
+#: platform/osx/export/export.cpp
+msgid "Address Book"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Calendars"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Photos Library"
+msgstr "Bibliothek exportieren"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Apple Events"
+msgstr "Ereignis hinzufügen"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Debugging"
+msgstr "Debuggen"
+
+#: platform/osx/export/export.cpp
+msgid "App Sandbox"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Network Server"
+msgstr "Netzwerkpartner"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Network Client"
+msgstr "Netzwerkpartner"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Device Usb"
+msgstr "Gerät"
+
+#: platform/osx/export/export.cpp
+msgid "Device Bluetooth"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Files Downloads"
+msgstr "Herunterladen"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Files Pictures"
+msgstr "Eigenschaften und Merkmale"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Files Music"
+msgstr "Dateien"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Files Movies"
+msgstr "Kacheln filtern"
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#, fuzzy
+msgid "Custom Options"
+msgstr "Audiobusoptionen"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Notarization"
+msgstr "Lokalisierung"
+
+#: platform/osx/export/export.cpp
+msgid "Apple ID Name"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Apple ID Password"
+msgstr "Passwort"
+
+#: platform/osx/export/export.cpp
+msgid "Apple Team ID"
+msgstr ""
+
+#: platform/osx/export/export.cpp
msgid ""
"Note: The notarization process generally takes less than an hour. When the "
"process is completed, you'll receive an email."
@@ -18802,6 +19677,136 @@ msgid "Force Builtin Codesign"
msgstr ""
#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Architecture"
+msgstr "Einen Architektureintrag hinzufügen"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Display Name"
+msgstr "Anzeigeskalierung"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Short Name"
+msgstr "Skriptname:"
+
+#: platform/uwp/export/export.cpp
+msgid "Publisher"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Publisher Display Name"
+msgstr "Ungültiger Paket-Autor-Name."
+
+#: platform/uwp/export/export.cpp
+msgid "Product Guid"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Publisher Guid"
+msgstr "Hilfslinien löschen"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Signing"
+msgstr "Ereignis"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Certificate"
+msgstr "Zertifikate"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Algorithm"
+msgstr "Debugger"
+
+#: platform/uwp/export/export.cpp
+msgid "Major"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Minor"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Build"
+msgstr "Linealmodus"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Revision"
+msgstr "Ausdruck"
+
+#: platform/uwp/export/export.cpp
+msgid "Landscape"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Portrait"
+msgstr "Port"
+
+#: platform/uwp/export/export.cpp
+msgid "Landscape Flipped"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Portrait Flipped"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Store Logo"
+msgstr "Skalierungsmodus"
+
+#: platform/uwp/export/export.cpp
+msgid "Square 44 X 44 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 71 X 71 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 150 X 150 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 310 X 310 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Wide 310 X 150 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Splash Screen"
+msgstr "Zeichenaufrufe:"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Tiles"
+msgstr "Dateien"
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Square 150 X 150"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Wide 310 X 150"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Square 310 X 310"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
msgid "Invalid package short name."
msgstr "Ungültiger Paket-Kurzname."
@@ -18868,15 +19873,52 @@ msgstr ""
#: platform/uwp/export/export.cpp
#, fuzzy
-msgid "Debug Password"
-msgstr "Passwort"
+msgid "Debug Algorithm"
+msgstr "Debugger"
-#: platform/uwp/export/export.cpp
+#: platform/windows/export/export.cpp
+msgid "Identity Type"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Timestamp Server URL"
+msgstr ""
+
+#: platform/windows/export/export.cpp
#, fuzzy
-msgid "Debug Algorithm"
+msgid "Digest Algorithm"
msgstr "Debugger"
#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "File Version"
+msgstr "Version"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Product Version"
+msgstr "Ungültige Produktversion:"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Company Name"
+msgstr "Node-Name:"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Product Name"
+msgstr "Projektname:"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "File Description"
+msgstr "Beschreibung"
+
+#: platform/windows/export/export.cpp
+msgid "Trademarks"
+msgstr ""
+
+#: platform/windows/export/export.cpp
msgid ""
"The rcedit tool must be configured in the Editor Settings (Export > Windows "
"> Rcedit) to change the icon or app information data."
@@ -18951,12 +19993,14 @@ msgstr "Abspielen"
msgid "Centered"
msgstr "Mitte"
-#: scene/2d/animated_sprite.cpp scene/2d/camera_2d.cpp scene/2d/light_2d.cpp
+#: scene/2d/animated_sprite.cpp scene/2d/camera_2d.cpp
+#: scene/2d/cpu_particles_2d.cpp scene/2d/light_2d.cpp
#: scene/2d/parallax_background.cpp scene/2d/parallax_layer.cpp
#: scene/2d/path_2d.cpp scene/2d/polygon_2d.cpp scene/2d/sprite.cpp
-#: scene/3d/path.cpp scene/3d/physics_body.cpp scene/3d/sprite_3d.cpp
-#: scene/gui/graph_node.cpp scene/gui/rich_text_effect.cpp
-#: scene/main/canvas_layer.cpp scene/resources/material.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/path.cpp scene/3d/physics_body.cpp
+#: scene/3d/sprite_3d.cpp scene/gui/graph_node.cpp
+#: scene/gui/rich_text_effect.cpp scene/main/canvas_layer.cpp
+#: scene/resources/material.cpp scene/resources/particles_material.cpp
#: scene/resources/style_box.cpp
#, fuzzy
msgid "Offset"
@@ -19031,11 +20075,6 @@ msgstr "Audiobus hinzufügen"
msgid "Override"
msgstr "Überschreibungen"
-#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
-#: scene/audio/audio_stream_player.cpp scene/gui/video_player.cpp
-msgid "Stream"
-msgstr ""
-
#: scene/2d/audio_stream_player_2d.cpp scene/audio/audio_stream_player.cpp
#: scene/gui/video_player.cpp servers/audio/effects/audio_effect_amplify.cpp
#, fuzzy
@@ -19062,13 +20101,13 @@ msgid "Stream Paused"
msgstr ""
#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
-#: scene/3d/reflection_probe.cpp scene/3d/visual_instance.cpp
-#: scene/resources/material.cpp
+#: scene/3d/light.cpp scene/3d/reflection_probe.cpp
+#: scene/3d/visual_instance.cpp scene/resources/material.cpp
#, fuzzy
msgid "Max Distance"
msgstr "Auswahlradius:"
-#: scene/2d/audio_stream_player_2d.cpp
+#: scene/2d/audio_stream_player_2d.cpp scene/3d/light.cpp
#, fuzzy
msgid "Attenuation"
msgstr "Animation"
@@ -19124,6 +20163,24 @@ msgstr "Bewegungsmodus"
msgid "Limit"
msgstr ""
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/style_box.cpp
+#, fuzzy
+msgid "Left"
+msgstr "UI Links"
+
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/style_box.cpp
+#, fuzzy
+msgid "Right"
+msgstr "Licht"
+
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/dynamic_font.cpp scene/resources/style_box.cpp
+#, fuzzy
+msgid "Bottom"
+msgstr "Unten links"
+
#: scene/2d/camera_2d.cpp
#, fuzzy
msgid "Smoothed"
@@ -19369,13 +20426,6 @@ msgstr ""
msgid "Emitting"
msgstr "Einstellungen:"
-#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp scene/3d/area.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
-#: scene/resources/environment.cpp
-#, fuzzy
-msgid "Amount"
-msgstr "Menge:"
-
#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp
#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
msgid "Lifetime"
@@ -19440,18 +20490,13 @@ msgstr ""
#: scene/2d/mesh_instance_2d.cpp scene/2d/multimesh_instance_2d.cpp
#: scene/2d/particles_2d.cpp scene/2d/polygon_2d.cpp scene/2d/sprite.cpp
#: scene/3d/sprite_3d.cpp scene/gui/nine_patch_rect.cpp
-#: scene/gui/texture_rect.cpp scene/resources/sky.cpp
-#: scene/resources/style_box.cpp scene/resources/visual_shader_nodes.cpp
+#: scene/gui/texture_rect.cpp scene/resources/material.cpp
+#: scene/resources/sky.cpp scene/resources/style_box.cpp
+#: scene/resources/visual_shader_nodes.cpp
#, fuzzy
msgid "Texture"
msgstr "Text"
-#: scene/2d/cpu_particles_2d.cpp scene/2d/mesh_instance_2d.cpp
-#: scene/2d/multimesh_instance_2d.cpp scene/2d/particles_2d.cpp
-#: scene/2d/sprite.cpp scene/resources/style_box.cpp
-msgid "Normal Map"
-msgstr ""
-
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
#, fuzzy
@@ -19475,10 +20520,10 @@ msgid "Normals"
msgstr "Format"
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/3d/sprite_3d.cpp scene/resources/material.cpp
-#: scene/resources/particles_material.cpp scene/resources/texture.cpp
-msgid "Flags"
-msgstr ""
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Align Y"
+msgstr "Zuweisen"
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
@@ -19499,6 +20544,12 @@ msgid "Initial Velocity"
msgstr "Initialisieren"
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Velocity Random"
+msgstr "Geschwindigkeit"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp servers/physics_2d_server.cpp
#: servers/physics_server.cpp
msgid "Angular Velocity"
@@ -19507,6 +20558,12 @@ msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
#, fuzzy
+msgid "Velocity Curve"
+msgstr "Geschwindigkeit"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
msgid "Orbit Velocity"
msgstr "Orbitsicht rechts"
@@ -19518,6 +20575,23 @@ msgstr "Linear"
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Accel"
+msgstr "Zugriff"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Accel Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Accel Curve"
+msgstr "Kurve Teilen"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
msgid "Radial Accel"
msgstr ""
@@ -19527,19 +20601,55 @@ msgid "Tangential Accel"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/2d/joints_2d.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/vehicle_body.cpp
-#: scene/resources/particles_material.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/physics_joint.cpp
+#: scene/3d/vehicle_body.cpp scene/resources/particles_material.cpp
#: servers/audio/effects/audio_effect_reverb.cpp
msgid "Damping"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+msgid "Damping Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Damping Curve"
+msgstr "Kurve Teilen"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp scene/3d/light.cpp
+#: scene/resources/particles_material.cpp
msgid "Angle"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+msgid "Angle Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Angle Curve"
+msgstr "Kurve schließen"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#, fuzzy
+msgid "Scale Amount"
+msgstr "Menge:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+msgid "Scale Amount Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#, fuzzy
+msgid "Scale Amount Curve"
+msgstr "Vom Cursor skalieren"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
#, fuzzy
msgid "Color Ramp"
msgstr "Farben"
@@ -19555,6 +20665,48 @@ msgstr ""
msgid "Hue Variation"
msgstr "Trennung:"
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Variation"
+msgstr "Trennung:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Variation Random"
+msgstr "Trennung:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Variation Curve"
+msgstr "Trennung:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Speed Random"
+msgstr "Skalierung"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Speed Curve"
+msgstr "Kurve Teilen"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Offset Random"
+msgstr "Versatz:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Offset Curve"
+msgstr "Kurve schließen"
+
#: scene/2d/joints_2d.cpp
msgid "Node A and Node B must be PhysicsBody2Ds"
msgstr "Node A und Node B müssen PhysicsBody2D-Nodes sein"
@@ -19586,6 +20738,7 @@ msgid "Node B"
msgstr "Node"
#: scene/2d/joints_2d.cpp scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp
+#: scene/3d/light.cpp scene/3d/physics_joint.cpp
#: scene/resources/environment.cpp
msgid "Bias"
msgstr ""
@@ -19595,7 +20748,7 @@ msgstr ""
msgid "Disable Collision"
msgstr "Deaktivierter Knopf"
-#: scene/2d/joints_2d.cpp
+#: scene/2d/joints_2d.cpp scene/3d/physics_joint.cpp
msgid "Softness"
msgstr ""
@@ -19613,7 +20766,7 @@ msgstr "Initialisieren"
msgid "Rest Length"
msgstr ""
-#: scene/2d/joints_2d.cpp scene/3d/vehicle_body.cpp
+#: scene/2d/joints_2d.cpp scene/3d/physics_joint.cpp scene/3d/vehicle_body.cpp
msgid "Stiffness"
msgstr ""
@@ -19636,7 +20789,7 @@ msgid "Texture Scale"
msgstr "Texturbereich"
#: scene/2d/light_2d.cpp scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp
-#: scene/resources/environment.cpp scene/resources/sky.cpp
+#: scene/3d/light.cpp scene/resources/environment.cpp scene/resources/sky.cpp
msgid "Energy"
msgstr ""
@@ -19677,12 +20830,6 @@ msgstr "Sicht von hinten"
msgid "Gradient Length"
msgstr "Gradient bearbeitet"
-#: scene/2d/light_2d.cpp scene/gui/control.cpp
-#: scene/resources/navigation_mesh.cpp
-#, fuzzy
-msgid "Filter"
-msgstr "Filter:"
-
#: scene/2d/light_2d.cpp
#, fuzzy
msgid "Filter Smooth"
@@ -20135,11 +21282,6 @@ msgid "Applied Forces"
msgstr ""
#: scene/2d/physics_body_2d.cpp
-#, fuzzy
-msgid "Force"
-msgstr "Force Push"
-
-#: scene/2d/physics_body_2d.cpp
msgid "Torque"
msgstr ""
@@ -20155,7 +21297,7 @@ msgstr " (physisch)"
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
#, fuzzy
-msgid "Moving platform"
+msgid "Moving Platform"
msgstr "Verschiebe Ausgabe"
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
@@ -20164,7 +21306,7 @@ msgstr ""
#: scene/2d/physics_body_2d.cpp scene/2d/touch_screen_button.cpp
#: scene/3d/physics_body.cpp scene/gui/texture_button.cpp
-#: scene/resources/line_shape_2d.cpp
+#: scene/resources/line_shape_2d.cpp scene/resources/material.cpp
#, fuzzy
msgid "Normal"
msgstr "Format"
@@ -20414,6 +21556,34 @@ msgstr ""
"VisibilityEnabler2D funktioniert am besten, wenn es hierarchisch direkt "
"unter dem Wurzelobjekt der bearbeiteten Szene liegt."
+#: scene/2d/visibility_notifier_2d.cpp scene/3d/visibility_notifier.cpp
+#, fuzzy
+msgid "Pause Animations"
+msgstr "Animation einfügen"
+
+#: scene/2d/visibility_notifier_2d.cpp scene/3d/visibility_notifier.cpp
+msgid "Freeze Bodies"
+msgstr ""
+
+#: scene/2d/visibility_notifier_2d.cpp
+#, fuzzy
+msgid "Pause Particles"
+msgstr "Partikel"
+
+#: scene/2d/visibility_notifier_2d.cpp
+#, fuzzy
+msgid "Pause Animated Sprites"
+msgstr "Animation einfügen"
+
+#: scene/2d/visibility_notifier_2d.cpp
+#, fuzzy
+msgid "Process Parent"
+msgstr "Priorität aktivieren"
+
+#: scene/2d/visibility_notifier_2d.cpp
+msgid "Physics Process Parent"
+msgstr ""
+
#: scene/3d/area.cpp
msgid "Reverb Bus"
msgstr ""
@@ -20514,6 +21684,7 @@ msgid "Attenuation Filter"
msgstr ""
#: scene/3d/audio_stream_player_3d.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
#: servers/audio/effects/audio_effect_filter.cpp
msgid "Cutoff Hz"
msgstr ""
@@ -20558,11 +21729,6 @@ msgid "Octree"
msgstr "Unterbaum"
#: scene/3d/baked_lightmap.cpp
-#, fuzzy
-msgid "User Data"
-msgstr "Benutzerschnittstelle"
-
-#: scene/3d/baked_lightmap.cpp
msgid "Finding meshes and lights"
msgstr "Am Suchen nach Meshes und Lichtern"
@@ -20837,6 +22003,16 @@ msgid "Ring Axis"
msgstr "Warnungen"
#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Rotate Y"
+msgstr "Rotierung"
+
+#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Disable Z"
+msgstr "Deaktiviertes Objekt"
+
+#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
msgid "Flatness"
msgstr ""
@@ -20877,16 +22053,11 @@ msgstr "Dynamische Bibliothek"
msgid "Dynamic Range"
msgstr "Dynamische Bibliothek"
-#: scene/3d/gi_probe.cpp
+#: scene/3d/gi_probe.cpp scene/3d/light.cpp
msgid "Normal Bias"
msgstr ""
#: scene/3d/gi_probe.cpp
-#, fuzzy
-msgid "Compress"
-msgstr "Komponenten"
-
-#: scene/3d/gi_probe.cpp
msgid "Plotting Meshes"
msgstr "Plotte Mesh"
@@ -20918,16 +22089,31 @@ msgstr ""
#: scene/3d/light.cpp
#, fuzzy
+msgid "Indirect Energy"
+msgstr "Emissionsfarben"
+
+#: scene/3d/light.cpp
+#, fuzzy
msgid "Negative"
msgstr "GDNativ"
#: scene/3d/light.cpp
#, fuzzy
+msgid "Specular"
+msgstr "Linealmodus"
+
+#: scene/3d/light.cpp
+#, fuzzy
msgid "Bake Mode"
msgstr "Bitmaskenmodus"
#: scene/3d/light.cpp
#, fuzzy
+msgid "Contact"
+msgstr "Kontrast"
+
+#: scene/3d/light.cpp
+#, fuzzy
msgid "Reverse Cull Face"
msgstr "Bus-Lautstärke zurücksetzen"
@@ -20938,11 +22124,31 @@ msgstr "Richtungen"
#: scene/3d/light.cpp
#, fuzzy
+msgid "Split 1"
+msgstr "Teilen"
+
+#: scene/3d/light.cpp
+#, fuzzy
+msgid "Split 2"
+msgstr "Teilen"
+
+#: scene/3d/light.cpp
+#, fuzzy
+msgid "Split 3"
+msgstr "Teilen"
+
+#: scene/3d/light.cpp
+#, fuzzy
msgid "Blend Splits"
msgstr "Übergangszeiten:"
#: scene/3d/light.cpp
#, fuzzy
+msgid "Bias Split Scale"
+msgstr "Einrasten verwenden"
+
+#: scene/3d/light.cpp
+#, fuzzy
msgid "Depth Range"
msgstr "Tiefe"
@@ -20970,6 +22176,11 @@ msgstr ""
msgid "Spot"
msgstr ""
+#: scene/3d/light.cpp
+#, fuzzy
+msgid "Angle Attenuation"
+msgstr "Animation"
+
#: scene/3d/mesh_instance.cpp
msgid "Software Skinning"
msgstr ""
@@ -21120,6 +22331,63 @@ msgstr "Achse"
#: scene/3d/physics_body.cpp
#, fuzzy
+msgid "Linear X"
+msgstr "Linear"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Linear Y"
+msgstr "Linear"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Linear Z"
+msgstr "Linear"
+
+#: scene/3d/physics_body.cpp
+msgid "Angular X"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Angular Y"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Angular Z"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Motion X"
+msgstr "Aktion"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Motion Y"
+msgstr "Aktion"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Motion Z"
+msgstr "Aktion"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Move Lock X"
+msgstr "Node verschieben"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Move Lock Y"
+msgstr "Node verschieben"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Move Lock Z"
+msgstr "Node verschieben"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
msgid "Body Offset"
msgstr "Versatz:"
@@ -21153,6 +22421,15 @@ msgid "Exclude Nodes"
msgstr "Nodes löschen"
#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Params"
+msgstr "Parameter geändert:"
+
+#: scene/3d/physics_joint.cpp
+msgid "Impulse Clamp"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit"
msgstr ""
@@ -21166,6 +22443,55 @@ msgstr "Großbuchstaben"
msgid "Lower"
msgstr "Kleinbuchstaben"
+#: scene/3d/physics_joint.cpp scene/3d/vehicle_body.cpp
+#, fuzzy
+msgid "Relaxation"
+msgstr "Trennung:"
+
+#: scene/3d/physics_joint.cpp
+msgid "Motor"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Target Velocity"
+msgstr "Orbitsicht rechts"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Max Impulse"
+msgstr "Geschwindigkeit:"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit"
+msgstr "Linear"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Upper Distance"
+msgstr "Auswahlradius:"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Lower Distance"
+msgstr "Auswahlradius:"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Restitution"
+msgstr "Beschreibung"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motion"
+msgstr "Initialisieren"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Ortho"
+msgstr "Hinten orthogonal"
+
#: scene/3d/physics_joint.cpp
#, fuzzy
msgid "Upper Angle"
@@ -21178,6 +22504,16 @@ msgstr "Kleinbuchstaben"
#: scene/3d/physics_joint.cpp
#, fuzzy
+msgid "Angular Motion"
+msgstr "Animation"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Angular Ortho"
+msgstr "Max. Winkel-Fehler:"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
msgid "Swing Span"
msgstr "Speichere Szene"
@@ -21186,17 +22522,99 @@ msgid "Twist Span"
msgstr ""
#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit X"
+msgstr "Linear"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motor X"
+msgstr "Initialisieren"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Force Limit"
+msgstr "Zeichenaufrufe:"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Spring X"
+msgstr "Zeilenzwischenraum"
+
+#: scene/3d/physics_joint.cpp
+msgid "Equilibrium Point"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit X"
msgstr ""
#: scene/3d/physics_joint.cpp
+msgid "Erp"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Motor X"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Spring X"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit Y"
+msgstr "Linear"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motor Y"
+msgstr "Initialisieren"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Spring Y"
+msgstr "Zeilenzwischenraum"
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit Y"
msgstr ""
#: scene/3d/physics_joint.cpp
+msgid "Angular Motor Y"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Spring Y"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit Z"
+msgstr "Linear"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motor Z"
+msgstr "Initialisieren"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Spring Z"
+msgstr "Zeilenzwischenraum"
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit Z"
msgstr ""
+#: scene/3d/physics_joint.cpp
+msgid "Angular Motor Z"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Spring Z"
+msgstr ""
+
#: scene/3d/portal.cpp
msgid "The RoomManager should not be a child or grandchild of a Portal."
msgstr ""
@@ -21322,7 +22740,7 @@ msgstr ""
msgid "Use Default Simplify"
msgstr ""
-#: scene/3d/room.cpp
+#: scene/3d/room.cpp scene/3d/room_manager.cpp
msgid "Room Simplify"
msgstr ""
@@ -21365,6 +22783,13 @@ msgstr "Es darf nur ein RoomManager im Szenenbaum vorhanden sein."
msgid "Main"
msgstr ""
+#: scene/3d/room_manager.cpp scene/animation/animation_player.cpp
+#: scene/animation/animation_tree.cpp scene/animation/animation_tree_player.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+#, fuzzy
+msgid "Active"
+msgstr "Aktion"
+
#: scene/3d/room_manager.cpp
msgid "Roomlist"
msgstr ""
@@ -21389,6 +22814,54 @@ msgid "Gameplay"
msgstr ""
#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Gameplay Monitor"
+msgstr "Monitor"
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Use Secondary PVS"
+msgstr "Einrasten verwenden"
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Merge Meshes"
+msgstr "Mesh"
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Show Margins"
+msgstr "Zeige Ursprung"
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Debug Sprawl"
+msgstr "Debuggen"
+
+#: scene/3d/room_manager.cpp
+msgid "Overlap Warning Threshold"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Preview Camera"
+msgstr "Vorschaugröße"
+
+#: scene/3d/room_manager.cpp
+msgid "Portal Depth Limit"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Default Portal Margin"
+msgstr "Rand einstellen"
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Roaming Expansion Margin"
+msgstr "Alle ausklappen"
+
+#: scene/3d/room_manager.cpp
msgid ""
"RoomList path is invalid.\n"
"Please check the RoomList branch has been assigned in the RoomManager."
@@ -21529,6 +23002,21 @@ msgstr "Pixel-Einrasten"
msgid "Billboard"
msgstr ""
+#: scene/3d/sprite_3d.cpp scene/resources/material.cpp
+#, fuzzy
+msgid "Transparent"
+msgstr "Transponieren"
+
+#: scene/3d/sprite_3d.cpp
+#, fuzzy
+msgid "Shaded"
+msgstr "Shader"
+
+#: scene/3d/sprite_3d.cpp
+#, fuzzy
+msgid "Double Sided"
+msgstr "Doppelklick"
+
#: scene/3d/sprite_3d.cpp
msgid "Alpha Cut"
msgstr ""
@@ -21605,11 +23093,6 @@ msgstr "Ausdruck"
msgid "Max Force"
msgstr "Fehler"
-#: scene/3d/vehicle_body.cpp
-#, fuzzy
-msgid "Relaxation"
-msgstr "Trennung:"
-
#: scene/3d/visibility_notifier.cpp
msgid "AABB"
msgstr ""
@@ -21755,7 +23238,7 @@ msgstr "Überblendungszeit (s):"
#: scene/animation/animation_blend_tree.cpp
#, fuzzy
-msgid "autorestart_"
+msgid "Auto Restart"
msgstr "Automatisch neu starten:"
#: scene/animation/animation_blend_tree.cpp
@@ -21841,13 +23324,6 @@ msgstr "Klassen-Optionen:"
msgid "Default Blend Time"
msgstr "Standard-Thema"
-#: scene/animation/animation_player.cpp scene/animation/animation_tree.cpp
-#: scene/animation/animation_tree_player.cpp
-#: servers/audio/effects/audio_effect_delay.cpp
-#, fuzzy
-msgid "Active"
-msgstr "Aktion"
-
#: scene/animation/animation_player.cpp
msgid "Method Call Mode"
msgstr ""
@@ -21977,10 +23453,6 @@ msgstr "Node umhängen"
msgid "Max Iterations"
msgstr "Funktion erstellen"
-#: scene/animation/tween.cpp scene/resources/texture.cpp
-msgid "Repeat"
-msgstr ""
-
#: scene/animation/tween.cpp
msgid "Playback Process Mode"
msgstr ""
@@ -22011,20 +23483,6 @@ msgstr "Auswahlmodus"
msgid "Alignment"
msgstr ""
-#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
-#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
-#: scene/resources/style_box.cpp
-#, fuzzy
-msgid "Horizontal"
-msgstr "Horizontal:"
-
-#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
-#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
-#: scene/resources/style_box.cpp
-#, fuzzy
-msgid "Vertical"
-msgstr "Vertikal:"
-
#: scene/gui/base_button.cpp
#, fuzzy
msgid "Shortcut In Tooltip"
@@ -22126,10 +23584,6 @@ msgid "HSV"
msgstr "HSV"
#: scene/gui/color_picker.cpp
-msgid "Raw"
-msgstr "Roh"
-
-#: scene/gui/color_picker.cpp
msgid "Switch between hexadecimal and code values."
msgstr "Wechselt zwischen Hexadezimal- und Zahlenwerten."
@@ -22197,6 +23651,31 @@ msgid "Focus"
msgstr "Zu Pfad springen"
#: scene/gui/control.cpp
+msgid "Neighbour Left"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Neighbour Top"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Neighbour Right"
+msgstr ""
+
+#: scene/gui/control.cpp
+#, fuzzy
+msgid "Neighbour Bottom"
+msgstr "Mitte unten"
+
+#: scene/gui/control.cpp
+msgid "Next"
+msgstr "Nächste"
+
+#: scene/gui/control.cpp
+msgid "Previous"
+msgstr "Vorherige"
+
+#: scene/gui/control.cpp
msgid "Mouse"
msgstr ""
@@ -22234,7 +23713,7 @@ msgid "Dialog"
msgstr "Transformationsdialog"
#: scene/gui/dialogs.cpp
-msgid "Hide On Ok"
+msgid "Hide On OK"
msgstr ""
#: scene/gui/dialogs.cpp scene/gui/label.cpp
@@ -22333,7 +23812,7 @@ msgid "Timers"
msgstr "Zeit"
#: scene/gui/item_list.cpp scene/gui/popup_menu.cpp scene/gui/tree.cpp
-msgid "Incremental Search Max Interval (msec)"
+msgid "Incremental Search Max Interval Msec"
msgstr ""
#: scene/gui/item_list.cpp scene/gui/tree.cpp
@@ -22923,6 +24402,26 @@ msgstr "Mitte links"
msgid "Nine Patch Stretch"
msgstr "Interpolationsmodus"
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Left"
+msgstr "Rand einstellen"
+
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Top"
+msgstr "Rand einstellen"
+
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Right"
+msgstr "Rand einstellen"
+
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Bottom"
+msgstr "Auswahlmodus"
+
#: scene/gui/tree.cpp
msgid "Custom Minimum Height"
msgstr ""
@@ -22960,8 +24459,9 @@ msgid "Paused"
msgstr ""
#: scene/gui/video_player.cpp
-msgid "Buffering (msec)"
-msgstr ""
+#, fuzzy
+msgid "Buffering Msec"
+msgstr "Puffer"
#: scene/gui/video_player.cpp
#, fuzzy
@@ -23323,6 +24823,22 @@ msgid "Shadow Atlas"
msgstr "Neuer Atlas"
#: scene/main/viewport.cpp
+msgid "Quad 0"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 1"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 2"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 3"
+msgstr ""
+
+#: scene/main/viewport.cpp
#, fuzzy
msgid "Canvas Transform"
msgstr "Transform leeren"
@@ -23337,6 +24853,11 @@ msgid "Tooltip Delay (sec)"
msgstr ""
#: scene/register_scene_types.cpp
+#, fuzzy
+msgid "Swap OK Cancel"
+msgstr "UI Abbruch"
+
+#: scene/register_scene_types.cpp
msgid "Use hiDPI"
msgstr ""
@@ -23351,21 +24872,6 @@ msgid "Custom Font"
msgstr "Benutzerdefiniertes Node"
#: scene/resources/audio_stream_sample.cpp
-#, fuzzy
-msgid "Loop Mode"
-msgstr "Bewegungsmodus"
-
-#: scene/resources/audio_stream_sample.cpp
-#, fuzzy
-msgid "Loop Begin"
-msgstr "Bewegungsmodus"
-
-#: scene/resources/audio_stream_sample.cpp
-#, fuzzy
-msgid "Loop End"
-msgstr "Bewegungsmodus"
-
-#: scene/resources/audio_stream_sample.cpp
#: servers/audio/effects/audio_stream_generator.cpp servers/audio_server.cpp
#, fuzzy
msgid "Mix Rate"
@@ -23425,6 +24931,17 @@ msgstr "Zusatzoptionen:"
#: scene/resources/dynamic_font.cpp
#, fuzzy
+msgid "Char"
+msgstr "Gültige Zeichen:"
+
+#: scene/resources/dynamic_font.cpp scene/resources/world.cpp
+#: scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Space"
+msgstr "Hauptszene"
+
+#: scene/resources/dynamic_font.cpp
+#, fuzzy
msgid "Font"
msgstr "Schriftarten"
@@ -23652,6 +25169,45 @@ msgid "Glow"
msgstr ""
#: scene/resources/environment.cpp
+#, fuzzy
+msgid "Levels"
+msgstr "Entwickler"
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "1"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+#, fuzzy
+msgid "2"
+msgstr "2D"
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+#, fuzzy
+msgid "3"
+msgstr "3D"
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "4"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "5"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "6"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "7"
+msgstr ""
+
+#: scene/resources/environment.cpp
msgid "Bloom"
msgstr ""
@@ -23744,10 +25300,68 @@ msgid "Next Pass"
msgstr "Nächste Ebene"
#: scene/resources/material.cpp
+msgid "Use Shadow To Opacity"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Unshaded"
+msgstr "Nicht Schattiertes anzeigen"
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Vertex Lighting"
+msgstr "Direct-Lighting"
+
+#: scene/resources/material.cpp
+msgid "No Depth Test"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Use Point Size"
+msgstr "Sicht von vorne"
+
+#: scene/resources/material.cpp
+msgid "World Triplanar"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Fixed Size"
+msgstr "Sicht von vorne"
+
+#: scene/resources/material.cpp
+msgid "Albedo Tex Force sRGB"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Do Not Receive Shadows"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Disable Ambient Light"
+msgstr "Nach rechts einrücken"
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Ensure Correct Normals"
+msgstr "Transformation abgebrochen."
+
+#: scene/resources/material.cpp
#, fuzzy
msgid "Vertex Color"
msgstr "Vertex"
+#: scene/resources/material.cpp
+msgid "Use As Albedo"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Is sRGB"
+msgstr ""
+
#: scene/resources/material.cpp servers/visual_server.cpp
#, fuzzy
msgid "Parameters"
@@ -23784,6 +25398,11 @@ msgid "Billboard Mode"
msgstr "Linealmodus"
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Billboard Keep Scale"
+msgstr "Linealmodus"
+
+#: scene/resources/material.cpp
msgid "Grow"
msgstr ""
@@ -23793,6 +25412,10 @@ msgid "Grow Amount"
msgstr "Menge:"
#: scene/resources/material.cpp
+msgid "Use Alpha Scissor"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Alpha Scissor Threshold"
msgstr ""
@@ -23824,10 +25447,20 @@ msgid "Metallic Specular"
msgstr ""
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Metallic Texture"
+msgstr "Emissionsquelle: "
+
+#: scene/resources/material.cpp
msgid "Metallic Texture Channel"
msgstr ""
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Roughness Texture"
+msgstr "Textur entfernen"
+
+#: scene/resources/material.cpp
msgid "Roughness Texture Channel"
msgstr ""
@@ -23847,6 +25480,16 @@ msgid "Emission Operator"
msgstr "Emissionsfarben"
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Emission On UV2"
+msgstr "Emissionsmaske"
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Emission Texture"
+msgstr "Emissionsquelle: "
+
+#: scene/resources/material.cpp
msgid "NormalMap"
msgstr ""
@@ -23861,6 +25504,11 @@ msgstr "Zufälliges Kippen:"
#: scene/resources/material.cpp
#, fuzzy
+msgid "Rim Texture"
+msgstr "Textur entfernen"
+
+#: scene/resources/material.cpp
+#, fuzzy
msgid "Clearcoat"
msgstr "Löschen"
@@ -23870,15 +25518,28 @@ msgid "Clearcoat Gloss"
msgstr "Pose/Stellung löschen"
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Clearcoat Texture"
+msgstr "Editor-Motiv"
+
+#: scene/resources/material.cpp
msgid "Anisotropy"
msgstr ""
#: scene/resources/material.cpp
+msgid "Anisotropy Flowmap"
+msgstr ""
+
+#: scene/resources/material.cpp
#, fuzzy
msgid "Ambient Occlusion"
msgstr "Verdeckung"
#: scene/resources/material.cpp
+msgid "On UV2"
+msgstr ""
+
+#: scene/resources/material.cpp
#, fuzzy
msgid "Texture Channel"
msgstr "Texturbereich"
@@ -23917,6 +25578,11 @@ msgstr "Übergang: "
#: scene/resources/material.cpp
#, fuzzy
+msgid "Transmission Texture"
+msgstr "Übergang: "
+
+#: scene/resources/material.cpp
+#, fuzzy
msgid "Refraction"
msgstr "Trennung:"
@@ -23935,6 +25601,10 @@ msgid "UV1"
msgstr "UV"
#: scene/resources/material.cpp
+msgid "Triplanar"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Triplanar Sharpness"
msgstr ""
@@ -24146,6 +25816,16 @@ msgstr "Editor-Motiv"
msgid "Point Count"
msgstr "Eingangsschnittstelle hinzufügen"
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Scale Random"
+msgstr "Skalierungsverhältnis:"
+
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Scale Curve"
+msgstr "Kurve schließen"
+
#: scene/resources/physics_material.cpp
msgid "Rough"
msgstr ""
@@ -24208,10 +25888,6 @@ msgid "A"
msgstr ""
#: scene/resources/shader.cpp
-msgid "Code"
-msgstr ""
-
-#: scene/resources/shader.cpp
#, fuzzy
msgid "Custom Defines"
msgstr "Angepasste Szene abspielen"
@@ -24308,15 +25984,6 @@ msgstr ""
#: scene/resources/texture.cpp
#, fuzzy
-msgid "Storage"
-msgstr "Speichere Datei:"
-
-#: scene/resources/texture.cpp
-msgid "Lossy Quality"
-msgstr ""
-
-#: scene/resources/texture.cpp
-#, fuzzy
msgid "Load Path"
msgstr "Vorlage laden"
@@ -24447,11 +26114,6 @@ msgstr "Ungültige Vergleichsfunktion für diesen Typ."
msgid "Fallback Environment"
msgstr "Umgebung anzeigen"
-#: scene/resources/world.cpp scene/resources/world_2d.cpp
-#, fuzzy
-msgid "Space"
-msgstr "Hauptszene"
-
#: scene/resources/world.cpp
#, fuzzy
msgid "Scenario"
@@ -24532,10 +26194,37 @@ msgstr ""
msgid "Wet"
msgstr ""
-#: servers/audio/effects/audio_effect_compressor.cpp
-msgid "Threshold"
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "Voice"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+msgid "Delay (ms)"
msgstr ""
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_phaser.cpp
+msgid "Rate Hz"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#, fuzzy
+msgid "Depth (ms)"
+msgstr "Tiefe"
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+msgid "Level dB"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+#: servers/audio/effects/audio_effect_panner.cpp
+#, fuzzy
+msgid "Pan"
+msgstr "Ebene:"
+
#: servers/audio/effects/audio_effect_compressor.cpp
#: servers/audio/effects/audio_effect_filter.cpp
msgid "Gain"
@@ -24559,20 +26248,6 @@ msgid "Tap 1"
msgstr ""
#: servers/audio/effects/audio_effect_delay.cpp
-msgid "Delay (ms)"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_delay.cpp
-msgid "Level dB"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_delay.cpp
-#: servers/audio/effects/audio_effect_panner.cpp
-#, fuzzy
-msgid "Pan"
-msgstr "Ebene:"
-
-#: servers/audio/effects/audio_effect_delay.cpp
msgid "Tap 2"
msgstr ""
@@ -24634,10 +26309,6 @@ msgstr ""
msgid "Range Max Hz"
msgstr ""
-#: servers/audio/effects/audio_effect_phaser.cpp
-msgid "Rate Hz"
-msgstr ""
-
#: servers/audio/effects/audio_effect_pitch_shift.cpp
msgid "Oversampling"
msgstr ""
@@ -24653,7 +26324,7 @@ msgid "Predelay"
msgstr ""
#: servers/audio/effects/audio_effect_reverb.cpp
-msgid "(msec)"
+msgid "Msec"
msgstr ""
#: servers/audio/effects/audio_effect_reverb.cpp
diff --git a/editor/translations/editor.pot b/editor/translations/editor.pot
index 61af831bd5..fcbd427e2b 100644
--- a/editor/translations/editor.pot
+++ b/editor/translations/editor.pot
@@ -14,7 +14,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8-bit\n"
-#: core/bind/core_bind.cpp
+#: core/bind/core_bind.cpp main/main.cpp
msgid "Tablet Driver"
msgstr ""
@@ -105,8 +105,8 @@ msgstr ""
#: core/bind/core_bind.cpp editor/editor_settings.cpp main/main.cpp
#: modules/gdscript/gdscript_editor.cpp modules/gridmap/grid_map.cpp
#: modules/mono/csharp_script.cpp modules/visual_script/visual_script_nodes.cpp
-#: scene/2d/tile_map.cpp scene/3d/camera.cpp scene/gui/control.cpp
-#: scene/gui/graph_edit.cpp scene/main/viewport.cpp
+#: scene/2d/tile_map.cpp scene/3d/camera.cpp scene/3d/light.cpp
+#: scene/gui/control.cpp scene/gui/graph_edit.cpp scene/main/viewport.cpp
#: scene/resources/dynamic_font.cpp scene/resources/navigation_mesh.cpp
#: scene/resources/primitive_meshes.cpp scene/resources/sky.cpp
#: scene/resources/style_box.cpp scene/resources/texture.cpp
@@ -199,8 +199,7 @@ msgid "Data"
msgstr ""
#: core/io/file_access_network.cpp core/register_core_types.cpp
-#: editor/editor_settings.cpp editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp main/main.cpp
+#: editor/editor_settings.cpp main/main.cpp
#: modules/gdscript/language_server/gdscript_language_server.cpp
msgid "Network"
msgstr ""
@@ -457,9 +456,10 @@ msgstr ""
msgid "Relative"
msgstr ""
-#: core/os/input_event.cpp scene/2d/camera_2d.cpp
-#: scene/3d/interpolated_camera.cpp scene/animation/animation_player.cpp
-#: scene/resources/environment.cpp
+#: core/os/input_event.cpp scene/2d/camera_2d.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/interpolated_camera.cpp
+#: scene/animation/animation_player.cpp scene/resources/environment.cpp
+#: scene/resources/particles_material.cpp
msgid "Speed"
msgstr ""
@@ -503,8 +503,9 @@ msgstr ""
msgid "Pitch"
msgstr ""
-#: core/os/input_event.cpp scene/2d/physics_body_2d.cpp
-#: scene/3d/physics_body.cpp
+#: core/os/input_event.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/physics_body_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/3d/physics_body.cpp scene/resources/particles_material.cpp
msgid "Velocity"
msgstr ""
@@ -521,6 +522,8 @@ msgid "Controller Value"
msgstr ""
#: core/project_settings.cpp editor/editor_node.cpp main/main.cpp
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/windows/export/export.cpp
msgid "Application"
msgstr ""
@@ -536,13 +539,16 @@ msgstr ""
#: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp
#: editor/editor_plugin_settings.cpp editor/editor_profiler.cpp
#: editor/project_manager.cpp editor/settings_config_dialog.cpp
-#: modules/gdnative/nativescript/nativescript.cpp scene/2d/area_2d.cpp
-#: scene/3d/area.cpp scene/main/node.cpp
+#: modules/gdnative/nativescript/nativescript.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/osx/export/export.cpp scene/2d/area_2d.cpp scene/3d/area.cpp
+#: scene/main/node.cpp
msgid "Name"
msgstr ""
#: core/project_settings.cpp editor/editor_help.cpp
-#: modules/visual_script/visual_script_nodes.cpp
+#: modules/visual_script/visual_script_nodes.cpp platform/uwp/export/export.cpp
+#: platform/windows/export/export.cpp
msgid "Description"
msgstr ""
@@ -578,7 +584,7 @@ msgid "Custom User Dir Name"
msgstr ""
#: core/project_settings.cpp editor/animation_track_editor.cpp
-#: editor/editor_audio_buses.cpp servers/audio_server.cpp
+#: editor/editor_audio_buses.cpp main/main.cpp servers/audio_server.cpp
msgid "Audio"
msgstr ""
@@ -729,10 +735,13 @@ msgstr ""
msgid "Sharpen Intensity"
msgstr ""
-#: core/project_settings.cpp editor/editor_node.cpp editor/editor_settings.cpp
-#: editor/plugins/script_editor_plugin.cpp editor/project_export.cpp
-#: main/main.cpp modules/gdscript/gdscript.cpp
-#: modules/visual_script/visual_script.cpp scene/3d/room_manager.cpp
+#: core/project_settings.cpp editor/editor_export.cpp editor/editor_node.cpp
+#: editor/editor_settings.cpp editor/plugins/script_editor_plugin.cpp
+#: editor/project_export.cpp main/main.cpp modules/gdscript/gdscript.cpp
+#: modules/visual_script/visual_script.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp scene/3d/room_manager.cpp
#: scene/main/scene_tree.cpp scene/resources/shape_2d.cpp
#: servers/visual_server.cpp
msgid "Debug"
@@ -954,6 +963,7 @@ msgid "Subsurface Scattering"
msgstr ""
#: drivers/gles3/rasterizer_scene_gles3.cpp
+#: editor/import/resource_importer_texture.cpp
#: editor/plugins/spatial_editor_plugin.cpp modules/gltf/gltf_node.cpp
#: modules/gridmap/grid_map.cpp scene/2d/cpu_particles_2d.cpp
#: scene/2d/node_2d.cpp scene/2d/parallax_layer.cpp scene/2d/polygon_2d.cpp
@@ -1249,6 +1259,7 @@ msgid "Editors"
msgstr ""
#: editor/animation_track_editor.cpp editor/editor_settings.cpp
+#: editor/import/resource_importer_scene.cpp
#: editor/plugins/animation_player_editor_plugin.cpp editor/scene_tree_dock.cpp
#: scene/2d/animated_sprite.cpp scene/2d/cpu_particles_2d.cpp
#: scene/2d/sprite.cpp scene/3d/cpu_particles.cpp scene/3d/sprite_3d.cpp
@@ -1465,14 +1476,14 @@ msgstr ""
msgid "Seconds"
msgstr ""
-#: editor/animation_track_editor.cpp
+#: editor/animation_track_editor.cpp editor/import/resource_importer_scene.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp main/main.cpp
#: scene/resources/texture.cpp
msgid "FPS"
msgstr ""
#: editor/animation_track_editor.cpp editor/editor_plugin_settings.cpp
-#: editor/editor_resource_picker.cpp
+#: editor/editor_resource_picker.cpp editor/import/resource_importer_wav.cpp
#: editor/plugins/polygon_2d_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
@@ -2414,7 +2425,9 @@ msgid "Remove Autoload"
msgstr ""
#: editor/editor_autoload_settings.cpp editor/editor_plugin_settings.cpp
-#: modules/gdscript/gdscript.cpp scene/2d/polygon_2d.cpp scene/3d/area.cpp
+#: modules/gdscript/gdscript.cpp platform/android/export/export_plugin.cpp
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#: scene/2d/polygon_2d.cpp scene/3d/area.cpp scene/3d/physics_joint.cpp
#: scene/3d/reflection_probe.cpp scene/main/canvas_layer.cpp
#: scene/resources/material.cpp servers/visual_server.cpp
msgid "Enable"
@@ -2567,6 +2580,55 @@ msgstr ""
#: editor/editor_export.cpp platform/android/export/export_plugin.cpp
#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
+msgid "Custom Template"
+msgstr ""
+
+#: editor/editor_export.cpp editor/project_export.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp
+msgid "Release"
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Binary Format"
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "64 Bits"
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Embed PCK"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "Texture Format"
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "BPTC"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "S3TC"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "ETC"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "ETC2"
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "No BPTC Fallbacks"
+msgstr ""
+
+#: editor/editor_export.cpp platform/android/export/export_plugin.cpp
+#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
msgid "Custom debug template not found."
msgstr ""
@@ -2740,6 +2802,7 @@ msgid "Make Current"
msgstr ""
#: editor/editor_feature_profile.cpp editor/editor_node.cpp
+#: editor/import/resource_importer_scene.cpp
#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
msgid "Import"
msgstr ""
@@ -2864,8 +2927,11 @@ msgstr ""
msgid "Display Mode"
msgstr ""
-#: editor/editor_file_dialog.cpp main/main.cpp modules/csg/csg_shape.cpp
-#: modules/visual_script/visual_script_nodes.cpp
+#: editor/editor_file_dialog.cpp
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+#: editor/import/resource_importer_wav.cpp main/main.cpp
+#: modules/csg/csg_shape.cpp modules/visual_script/visual_script_nodes.cpp
#: modules/visual_script/visual_script_yield_nodes.cpp scene/2d/light_2d.cpp
#: scene/2d/physics_body_2d.cpp scene/2d/tile_map.cpp
#: scene/3d/baked_lightmap.cpp scene/3d/light.cpp scene/3d/physics_body.cpp
@@ -2997,7 +3063,9 @@ msgstr ""
msgid "Reimport Missing Imported Files"
msgstr ""
-#: editor/editor_help.cpp
+#: editor/editor_help.cpp scene/2d/camera_2d.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/resources/dynamic_font.cpp
+#: scene/resources/style_box.cpp
msgid "Top"
msgstr ""
@@ -3049,6 +3117,7 @@ msgid "Fonts"
msgstr ""
#: editor/editor_help.cpp editor/plugins/theme_editor_plugin.cpp
+#: platform/iphone/export/export.cpp
msgid "Icons"
msgstr ""
@@ -3207,7 +3276,9 @@ msgstr ""
msgid "Pin value [Disabled because '%s' is editor-only]"
msgstr ""
-#: editor/editor_inspector.cpp editor/scene_tree_dock.cpp
+#: editor/editor_inspector.cpp
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+#: editor/scene_tree_dock.cpp
#: modules/visual_script/visual_script_func_nodes.cpp
#: modules/visual_script/visual_script_nodes.cpp
#: modules/visual_script/visual_script_property_selector.cpp
@@ -3518,6 +3589,14 @@ msgid "Quick Open Script..."
msgstr ""
#: editor/editor_node.cpp
+msgid "Save & Reload"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Save changes to '%s' before reloading?"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "Save & Close"
msgstr ""
@@ -3628,6 +3707,10 @@ msgid "Open Project Manager?"
msgstr ""
#: editor/editor_node.cpp
+msgid "Save changes to the following scene(s) before reloading?"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "Save & Quit"
msgstr ""
@@ -3867,7 +3950,7 @@ msgid "Update Vital Only"
msgstr ""
#: editor/editor_node.cpp
-msgid "Translate Properties"
+msgid "Localize Settings"
msgstr ""
#: editor/editor_node.cpp
@@ -3883,7 +3966,7 @@ msgid "Inspector"
msgstr ""
#: editor/editor_node.cpp
-msgid "Capitalize Properties"
+msgid "Default Property Name Style"
msgstr ""
#: editor/editor_node.cpp
@@ -4442,7 +4525,9 @@ msgstr ""
msgid "Update"
msgstr ""
-#: editor/editor_plugin_settings.cpp
+#: editor/editor_plugin_settings.cpp platform/android/export/export_plugin.cpp
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp
msgid "Version"
msgstr ""
@@ -5377,7 +5462,7 @@ msgstr ""
msgid "Rect Custom Position"
msgstr ""
-#: editor/editor_settings.cpp
+#: editor/editor_settings.cpp platform/android/export/export_plugin.cpp
msgid "Screen"
msgstr ""
@@ -5400,6 +5485,19 @@ msgid "Editor SSL Certificates"
msgstr ""
#: editor/editor_settings.cpp
+msgid "HTTP Proxy"
+msgstr ""
+
+#: editor/editor_settings.cpp
+msgid "Host"
+msgstr ""
+
+#: editor/editor_settings.cpp editor/fileserver/editor_file_server.cpp
+#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp
+msgid "Port"
+msgstr ""
+
+#: editor/editor_settings.cpp
msgid "Project Manager"
msgstr ""
@@ -5439,7 +5537,8 @@ msgstr ""
msgid "String Color"
msgstr ""
-#: editor/editor_settings.cpp
+#: editor/editor_settings.cpp platform/javascript/export/export.cpp
+#: platform/uwp/export/export.cpp
msgid "Background Color"
msgstr ""
@@ -5597,22 +5696,6 @@ msgid "Starting the download..."
msgstr ""
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "HTTP Proxy"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Host"
-msgstr ""
-
-#: editor/export_template_manager.cpp editor/fileserver/editor_file_server.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp main/main.cpp
-#: modules/mono/mono_gd/gd_mono.cpp
-msgid "Port"
-msgstr ""
-
-#: editor/export_template_manager.cpp
msgid "Error requesting URL:"
msgstr ""
@@ -5854,6 +5937,7 @@ msgstr ""
#: editor/fileserver/editor_file_server.cpp
#: editor/plugins/version_control_editor_plugin.cpp
+#: platform/uwp/export/export.cpp platform/windows/export/export.cpp
msgid "Password"
msgstr ""
@@ -6217,6 +6301,105 @@ msgstr ""
msgid "Use Ambient"
msgstr ""
+#: editor/import/resource_importer_bitmask.cpp
+msgid "Create From"
+msgstr ""
+
+#: editor/import/resource_importer_bitmask.cpp
+#: servers/audio/effects/audio_effect_compressor.cpp
+msgid "Threshold"
+msgstr ""
+
+#: editor/import/resource_importer_csv_translation.cpp
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_scene.cpp
+#: editor/import/resource_importer_texture.cpp
+#: editor/import/resource_importer_wav.cpp scene/3d/gi_probe.cpp
+msgid "Compress"
+msgstr ""
+
+#: editor/import/resource_importer_csv_translation.cpp
+msgid "Delimiter"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+msgid "No BPTC If RGB"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/sprite_3d.cpp
+#: scene/resources/material.cpp scene/resources/particles_material.cpp
+#: scene/resources/texture.cpp
+msgid "Flags"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/animation/tween.cpp
+#: scene/resources/texture.cpp
+msgid "Repeat"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/2d/light_2d.cpp
+#: scene/gui/control.cpp scene/resources/navigation_mesh.cpp
+msgid "Filter"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+msgid "Mipmaps"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+msgid "Anisotropic"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+msgid "sRGB"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+msgid "Slices"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
+#: scene/resources/style_box.cpp
+msgid "Horizontal"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
+#: scene/resources/style_box.cpp
+msgid "Vertical"
+msgstr ""
+
+#: editor/import/resource_importer_obj.cpp
+msgid "Generate Tangents"
+msgstr ""
+
+#: editor/import/resource_importer_obj.cpp
+msgid "Scale Mesh"
+msgstr ""
+
+#: editor/import/resource_importer_obj.cpp
+msgid "Offset Mesh"
+msgstr ""
+
+#: editor/import/resource_importer_obj.cpp
+#: editor/import/resource_importer_scene.cpp
+msgid "Octahedral Compression"
+msgstr ""
+
+#: editor/import/resource_importer_obj.cpp
+msgid "Optimize Mesh Flags"
+msgstr ""
+
#: editor/import/resource_importer_scene.cpp
msgid "Import as Single Scene"
msgstr ""
@@ -6257,6 +6440,131 @@ msgstr ""
msgid "Import as Multiple Scenes+Materials"
msgstr ""
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+#: scene/3d/physics_joint.cpp
+msgid "Nodes"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Root Type"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Root Name"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Root Scale"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Custom Script"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp scene/resources/texture.cpp
+msgid "Storage"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Use Legacy Names"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+msgid "Materials"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp platform/osx/export/export.cpp
+msgid "Location"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Keep On Reimport"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+msgid "Meshes"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Ensure Tangents"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Light Baking"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Lightmap Texel Size"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+msgid "Skins"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Use Named Skins"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "External Files"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Store In Subdir"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Filter Script"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Keep Custom Tracks"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Optimizer"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp main/main.cpp
+#: modules/mono/mono_gd/gd_mono.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp scene/2d/camera_2d.cpp scene/2d/light_2d.cpp
+#: scene/2d/navigation_polygon.cpp scene/2d/ray_cast_2d.cpp scene/2d/sprite.cpp
+#: scene/2d/y_sort.cpp scene/3d/audio_stream_player_3d.cpp
+#: scene/3d/baked_lightmap.cpp scene/3d/interpolated_camera.cpp
+#: scene/3d/light.cpp scene/3d/navigation_mesh_instance.cpp
+#: scene/3d/physics_joint.cpp scene/3d/ray_cast.cpp scene/3d/sprite_3d.cpp
+#: scene/gui/graph_edit.cpp scene/gui/rich_text_label.cpp
+#: scene/resources/curve.cpp scene/resources/environment.cpp
+#: scene/resources/material.cpp
+msgid "Enabled"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Max Linear Error"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Max Angular Error"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Max Angle"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Remove Unused Tracks"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Clips"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/particles_2d.cpp scene/3d/area.cpp scene/3d/cpu_particles.cpp
+#: scene/3d/particles.cpp scene/resources/environment.cpp
+msgid "Amount"
+msgstr ""
+
#: editor/import/resource_importer_scene.cpp
#: editor/plugins/mesh_library_editor_plugin.cpp
msgid "Import Scene"
@@ -6298,12 +6606,132 @@ msgstr ""
msgid "Saving..."
msgstr ""
+#: editor/import/resource_importer_texture.cpp scene/resources/texture.cpp
+msgid "Lossy Quality"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "HDR Mode"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "BPTC LDR"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/mesh_instance_2d.cpp scene/2d/multimesh_instance_2d.cpp
+#: scene/2d/particles_2d.cpp scene/2d/sprite.cpp scene/resources/style_box.cpp
+msgid "Normal Map"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Process"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Fix Alpha Border"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Premult Alpha"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Hdr As Srgb"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Invert Color"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Normal Map Invert Y"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
+#: scene/audio/audio_stream_player.cpp scene/gui/video_player.cpp
+msgid "Stream"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Size Limit"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Detect 3D"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "SVG"
+msgstr ""
+
#: editor/import/resource_importer_texture.cpp
msgid ""
"Warning, no suitable PC VRAM compression enabled in Project Settings. This "
"texture will not display correctly on PC."
msgstr ""
+#: editor/import/resource_importer_texture_atlas.cpp
+msgid "Atlas File"
+msgstr ""
+
+#: editor/import/resource_importer_texture_atlas.cpp
+msgid "Import Mode"
+msgstr ""
+
+#: editor/import/resource_importer_texture_atlas.cpp
+msgid "Crop To Region"
+msgstr ""
+
+#: editor/import/resource_importer_texture_atlas.cpp
+msgid "Trim Alpha Border From Region"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp scene/2d/physics_body_2d.cpp
+msgid "Force"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+msgid "8 Bit"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp main/main.cpp
+#: modules/mono/editor/csharp_project.cpp modules/mono/mono_gd/gd_mono.cpp
+msgid "Mono"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+msgid "Max Rate"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+msgid "Max Rate Hz"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+msgid "Trim"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+msgid "Normalize"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+msgid "Loop Mode"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+msgid "Loop Begin"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+msgid "Loop End"
+msgstr ""
+
#: editor/import_defaults_editor.cpp
msgid "Select Importer"
msgstr ""
@@ -6372,6 +6800,26 @@ msgid "Failed to load resource."
msgstr ""
#: editor/inspector_dock.cpp
+msgid "Property Name Style"
+msgstr ""
+
+#: editor/inspector_dock.cpp scene/gui/color_picker.cpp
+msgid "Raw"
+msgstr ""
+
+#: editor/inspector_dock.cpp
+msgid "Capitalized"
+msgstr ""
+
+#: editor/inspector_dock.cpp
+msgid "Localized"
+msgstr ""
+
+#: editor/inspector_dock.cpp
+msgid "Localization not available for current language."
+msgstr ""
+
+#: editor/inspector_dock.cpp
msgid "Copy Properties"
msgstr ""
@@ -7400,18 +7848,22 @@ msgid "License (Z-A)"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
+msgctxt "Pagination"
msgid "First"
msgstr ""
-#: editor/plugins/asset_library_editor_plugin.cpp scene/gui/control.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgctxt "Pagination"
msgid "Previous"
msgstr ""
-#: editor/plugins/asset_library_editor_plugin.cpp scene/gui/control.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgctxt "Pagination"
msgid "Next"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
+msgctxt "Pagination"
msgid "Last"
msgstr ""
@@ -7645,19 +8097,19 @@ msgid ""
"margins."
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Top Left"
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Top Right"
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Bottom Right"
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Bottom Left"
msgstr ""
@@ -8350,6 +8802,18 @@ msgstr ""
msgid "Gradient Edited"
msgstr ""
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+msgid "Swap GradientTexture2D Fill Points"
+msgstr ""
+
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+msgid "Swap Gradient Fill Points"
+msgstr ""
+
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+msgid "Toggle Grid Snap"
+msgstr ""
+
#: editor/plugins/item_list_editor_plugin.cpp
msgid "Item %d"
msgstr ""
@@ -8563,8 +9027,8 @@ msgid ""
"%s"
msgstr ""
-#: editor/plugins/mesh_library_editor_plugin.cpp modules/gridmap/grid_map.cpp
-msgid "Mesh Library"
+#: editor/plugins/mesh_library_editor_plugin.cpp
+msgid "MeshLibrary"
msgstr ""
#: editor/plugins/mesh_library_editor_plugin.cpp
@@ -9532,8 +9996,8 @@ msgstr ""
msgid "Source"
msgstr ""
-#: editor/plugins/script_text_editor.cpp scene/3d/interpolated_camera.cpp
-#: scene/animation/skeleton_ik.cpp
+#: editor/plugins/script_text_editor.cpp platform/uwp/export/export.cpp
+#: scene/3d/interpolated_camera.cpp scene/animation/skeleton_ik.cpp
msgid "Target"
msgstr ""
@@ -10490,7 +10954,9 @@ msgstr ""
#: editor/plugins/sprite_frames_editor_plugin.cpp
#: modules/gltf/gltf_animation.cpp modules/minimp3/audio_stream_mp3.cpp
-#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp scene/2d/path_2d.cpp
+#: modules/minimp3/resource_importer_mp3.cpp
+#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp
+#: modules/stb_vorbis/resource_importer_ogg_vorbis.cpp scene/2d/path_2d.cpp
#: scene/3d/path.cpp scene/resources/animation.cpp scene/resources/material.cpp
msgid "Loop"
msgstr ""
@@ -11350,8 +11816,9 @@ msgstr ""
msgid "Priority"
msgstr ""
-#: editor/plugins/tile_set_editor_plugin.cpp main/main.cpp scene/gui/button.cpp
-#: scene/gui/item_list.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp main/main.cpp
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#: scene/gui/button.cpp scene/gui/item_list.cpp
msgid "Icon"
msgstr ""
@@ -12630,10 +13097,6 @@ msgid ""
msgstr ""
#: editor/project_export.cpp
-msgid "Release"
-msgstr ""
-
-#: editor/project_export.cpp
msgid "Exporting All"
msgstr ""
@@ -14393,6 +14856,7 @@ msgid "Change AudioStreamPlayer3D Emission Angle"
msgstr ""
#: editor/spatial_editor_gizmos.cpp modules/gltf/gltf_node.cpp
+#: platform/osx/export/export.cpp
msgid "Camera"
msgstr ""
@@ -14653,7 +15117,8 @@ msgstr ""
msgid "Use Nvidia Rect Flicker Workaround"
msgstr ""
-#: main/main.cpp platform/uwp/os_uwp.cpp
+#: main/main.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp platform/uwp/os_uwp.cpp
msgid "Display"
msgstr ""
@@ -14708,18 +15173,6 @@ msgstr ""
msgid "Allowed"
msgstr ""
-#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp scene/2d/camera_2d.cpp
-#: scene/2d/light_2d.cpp scene/2d/navigation_polygon.cpp
-#: scene/2d/ray_cast_2d.cpp scene/2d/sprite.cpp scene/2d/y_sort.cpp
-#: scene/3d/audio_stream_player_3d.cpp scene/3d/baked_lightmap.cpp
-#: scene/3d/interpolated_camera.cpp scene/3d/light.cpp
-#: scene/3d/navigation_mesh_instance.cpp scene/3d/ray_cast.cpp
-#: scene/3d/sprite_3d.cpp scene/gui/graph_edit.cpp
-#: scene/gui/rich_text_label.cpp scene/resources/curve.cpp
-#: scene/resources/environment.cpp
-msgid "Enabled"
-msgstr ""
-
#: main/main.cpp
msgid "Intended Usage"
msgstr ""
@@ -14748,12 +15201,13 @@ msgstr ""
msgid "Handheld"
msgstr ""
-#: main/main.cpp
+#: main/main.cpp platform/javascript/export/export.cpp
+#: platform/uwp/export/export.cpp
msgid "Orientation"
msgstr ""
#: main/main.cpp scene/gui/scroll_container.cpp scene/gui/text_edit.cpp
-#: scene/main/scene_tree.cpp
+#: scene/main/scene_tree.cpp scene/register_scene_types.cpp
msgid "Common"
msgstr ""
@@ -14792,7 +15246,7 @@ msgid "Verbose stdout"
msgstr ""
#: main/main.cpp
-msgid "Frame Delay (msec)"
+msgid "Frame Delay Msec"
msgstr ""
#: main/main.cpp
@@ -14909,11 +15363,6 @@ msgstr ""
msgid "Tooltip Position Offset"
msgstr ""
-#: main/main.cpp modules/mono/editor/csharp_project.cpp
-#: modules/mono/mono_gd/gd_mono.cpp
-msgid "Mono"
-msgstr ""
-
#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp
msgid "Debugger Agent"
msgstr ""
@@ -15431,7 +15880,7 @@ msgstr ""
msgid "Intensity"
msgstr ""
-#: modules/gltf/gltf_light.cpp scene/2d/light_2d.cpp
+#: modules/gltf/gltf_light.cpp scene/2d/light_2d.cpp scene/3d/light.cpp
msgid "Range"
msgstr ""
@@ -15561,10 +16010,6 @@ msgstr ""
msgid "Use Named Skin Binds"
msgstr ""
-#: modules/gltf/gltf_state.cpp scene/3d/physics_joint.cpp
-msgid "Nodes"
-msgstr ""
-
#: modules/gltf/gltf_state.cpp
msgid "Buffer Views"
msgstr ""
@@ -15574,14 +16019,6 @@ msgid "Accessors"
msgstr ""
#: modules/gltf/gltf_state.cpp
-msgid "Meshes"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp
-msgid "Materials"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp
msgid "Scene Name"
msgstr ""
@@ -15595,15 +16032,11 @@ msgstr ""
msgid "Textures"
msgstr ""
-#: modules/gltf/gltf_state.cpp
+#: modules/gltf/gltf_state.cpp platform/uwp/export/export.cpp
msgid "Images"
msgstr ""
#: modules/gltf/gltf_state.cpp
-msgid "Skins"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp
msgid "Cameras"
msgstr ""
@@ -15632,10 +16065,14 @@ msgid "Src Image"
msgstr ""
#: modules/gridmap/grid_map.cpp
-msgid "Physics Material"
+msgid "Mesh Library"
msgstr ""
#: modules/gridmap/grid_map.cpp
+msgid "Physics Material"
+msgstr ""
+
+#: modules/gridmap/grid_map.cpp scene/3d/visual_instance.cpp
msgid "Use In Baked Light"
msgstr ""
@@ -15662,6 +16099,7 @@ msgstr ""
#: modules/gridmap/grid_map.cpp scene/2d/collision_object_2d.cpp
#: scene/2d/tile_map.cpp scene/3d/collision_object.cpp scene/3d/soft_body.cpp
+#: scene/resources/material.cpp
msgid "Mask"
msgstr ""
@@ -15842,7 +16280,9 @@ msgid "Ultra Quality Ray Count"
msgstr ""
#: modules/minimp3/audio_stream_mp3.cpp
+#: modules/minimp3/resource_importer_mp3.cpp
#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp
+#: modules/stb_vorbis/resource_importer_ogg_vorbis.cpp
msgid "Loop Offset"
msgstr ""
@@ -16864,6 +17304,162 @@ msgid "The package must have at least one '.' separator."
msgstr ""
#: platform/android/export/export_plugin.cpp
+msgid "Use Custom Build"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Export Format"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Keystore"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Debug User"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+msgid "Debug Password"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Release User"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Release Password"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "One Click Deploy"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Clear Previous Install"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp scene/resources/shader.cpp
+msgid "Code"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Min SDK"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Target SDK"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+msgid "Package"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+msgid "Unique Name"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Signed"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Classify As Game"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Retain Data On Uninstall"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Exclude From Recents"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Graphics"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "OpenGL Debug"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "XR Features"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "XR Mode"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Hand Tracking"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Hand Tracking Frequency"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Passthrough"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Immersive Mode"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Support Small"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Support Normal"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Support Large"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Support Xlarge"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "User Data Backup"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Allow"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+msgid "Command Line"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+msgid "Extra Args"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "APK Expansion"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Salt"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Public Key"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Permissions"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Custom Permissions"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
msgid "Select device from the list"
msgstr ""
@@ -17149,6 +17745,159 @@ msgid "The character '%s' is not allowed in Identifier."
msgstr ""
#: platform/iphone/export/export.cpp
+msgid "App Store Team ID"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Provisioning Profile UUID Debug"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Code Sign Identity Debug"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Export Method Debug"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Provisioning Profile UUID Release"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Code Sign Identity Release"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Export Method Release"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Targeted Device Family"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Info"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Identifier"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Signature"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Short Version"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/windows/export/export.cpp
+msgid "Copyright"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Capabilities"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Access Wi-Fi"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Push Notifications"
+msgstr ""
+
+#: platform/iphone/export/export.cpp scene/3d/baked_lightmap.cpp
+msgid "User Data"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Accessible From Files App"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Accessible From Itunes Sharing"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Privacy"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Camera Usage Description"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Microphone Usage Description"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Photolibrary Usage Description"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPhone 120 X 120"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPhone 180 X 180"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 76 X 76"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 152 X 152"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 167 X 167"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "App Store 1024 X 1024"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Spotlight 40 X 40"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Spotlight 80 X 80"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Storyboard"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Use Launch Screen Storyboard"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Image Scale Mode"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Custom Image @2x"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Custom Image @3x"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Use Custom BG Color"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Custom BG Color"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
msgid "App Store Team ID not specified - cannot configure the project."
msgstr ""
@@ -17185,6 +17934,74 @@ msgid "Could not read file:"
msgstr ""
#: platform/javascript/export/export.cpp
+msgid "Variant"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Export Type"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "VRAM Texture Compression"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "For Desktop"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "For Mobile"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Html"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Export Icon"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Custom Html Shell"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Head Include"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Canvas Resize Policy"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Focus Canvas On Start"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Experimental Virtual Keyboard"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Progressive Web App"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Offline Page"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 144 X 144"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 180 X 180"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 512 X 512"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
msgid "Could not read HTML shell:"
msgstr ""
@@ -17289,6 +18106,175 @@ msgid "Unknown object type."
msgstr ""
#: platform/osx/export/export.cpp
+msgid "App Category"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "High Res"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Location Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Address Book Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Calendar Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Photos Library Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Desktop Folder Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Documents Folder Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Downloads Folder Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Network Volumes Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Removable Volumes Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+msgid "Codesign"
+msgstr ""
+
+#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
+#: platform/windows/export/export.cpp
+msgid "Identity"
+msgstr ""
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+msgid "Timestamp"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Hardened Runtime"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Replace Existing Signature"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Entitlements"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Custom File"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Allow JIT Code Execution"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Allow Unsigned Executable Memory"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Allow Dyld Environment Variables"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Disable Library Validation"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Audio Input"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Address Book"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Calendars"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Photos Library"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Apple Events"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Debugging"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "App Sandbox"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Network Server"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Network Client"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Device Usb"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Device Bluetooth"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Files Downloads"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Files Pictures"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Files Music"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Files Movies"
+msgstr ""
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+msgid "Custom Options"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Apple ID Name"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Apple ID Password"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Apple Team ID"
+msgstr ""
+
+#: platform/osx/export/export.cpp
msgid ""
"Note: The notarization process generally takes less than an hour. When the "
"process is completed, you'll receive an email."
@@ -17478,6 +18464,122 @@ msgid "Force Builtin Codesign"
msgstr ""
#: platform/uwp/export/export.cpp
+msgid "Architecture"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Display Name"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Short Name"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Publisher"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Publisher Display Name"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Product Guid"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Publisher Guid"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Signing"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Certificate"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Algorithm"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Major"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Minor"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Build"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Revision"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Landscape"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Portrait"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Landscape Flipped"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Portrait Flipped"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Store Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 44 X 44 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 71 X 71 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 150 X 150 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 310 X 310 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Wide 310 X 150 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Splash Screen"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Tiles"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Square 150 X 150"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Wide 310 X 150"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Square 310 X 310"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
msgid "Invalid package short name."
msgstr ""
@@ -17542,11 +18644,43 @@ msgid "Debug Certificate"
msgstr ""
#: platform/uwp/export/export.cpp
-msgid "Debug Password"
+msgid "Debug Algorithm"
msgstr ""
-#: platform/uwp/export/export.cpp
-msgid "Debug Algorithm"
+#: platform/windows/export/export.cpp
+msgid "Identity Type"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Timestamp Server URL"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Digest Algorithm"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "File Version"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Product Version"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Company Name"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Product Name"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "File Description"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Trademarks"
msgstr ""
#: platform/windows/export/export.cpp
@@ -17613,12 +18747,14 @@ msgstr ""
msgid "Centered"
msgstr ""
-#: scene/2d/animated_sprite.cpp scene/2d/camera_2d.cpp scene/2d/light_2d.cpp
+#: scene/2d/animated_sprite.cpp scene/2d/camera_2d.cpp
+#: scene/2d/cpu_particles_2d.cpp scene/2d/light_2d.cpp
#: scene/2d/parallax_background.cpp scene/2d/parallax_layer.cpp
#: scene/2d/path_2d.cpp scene/2d/polygon_2d.cpp scene/2d/sprite.cpp
-#: scene/3d/path.cpp scene/3d/physics_body.cpp scene/3d/sprite_3d.cpp
-#: scene/gui/graph_node.cpp scene/gui/rich_text_effect.cpp
-#: scene/main/canvas_layer.cpp scene/resources/material.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/path.cpp scene/3d/physics_body.cpp
+#: scene/3d/sprite_3d.cpp scene/gui/graph_node.cpp
+#: scene/gui/rich_text_effect.cpp scene/main/canvas_layer.cpp
+#: scene/resources/material.cpp scene/resources/particles_material.cpp
#: scene/resources/style_box.cpp
msgid "Offset"
msgstr ""
@@ -17682,11 +18818,6 @@ msgstr ""
msgid "Override"
msgstr ""
-#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
-#: scene/audio/audio_stream_player.cpp scene/gui/video_player.cpp
-msgid "Stream"
-msgstr ""
-
#: scene/2d/audio_stream_player_2d.cpp scene/audio/audio_stream_player.cpp
#: scene/gui/video_player.cpp servers/audio/effects/audio_effect_amplify.cpp
msgid "Volume dB"
@@ -17710,12 +18841,12 @@ msgid "Stream Paused"
msgstr ""
#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
-#: scene/3d/reflection_probe.cpp scene/3d/visual_instance.cpp
-#: scene/resources/material.cpp
+#: scene/3d/light.cpp scene/3d/reflection_probe.cpp
+#: scene/3d/visual_instance.cpp scene/resources/material.cpp
msgid "Max Distance"
msgstr ""
-#: scene/2d/audio_stream_player_2d.cpp
+#: scene/2d/audio_stream_player_2d.cpp scene/3d/light.cpp
msgid "Attenuation"
msgstr ""
@@ -17762,6 +18893,21 @@ msgstr ""
msgid "Limit"
msgstr ""
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/style_box.cpp
+msgid "Left"
+msgstr ""
+
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/style_box.cpp
+msgid "Right"
+msgstr ""
+
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/dynamic_font.cpp scene/resources/style_box.cpp
+msgid "Bottom"
+msgstr ""
+
#: scene/2d/camera_2d.cpp
msgid "Smoothed"
msgstr ""
@@ -17955,12 +19101,6 @@ msgstr ""
msgid "Emitting"
msgstr ""
-#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp scene/3d/area.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
-#: scene/resources/environment.cpp
-msgid "Amount"
-msgstr ""
-
#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp
#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
msgid "Lifetime"
@@ -18020,17 +19160,12 @@ msgstr ""
#: scene/2d/mesh_instance_2d.cpp scene/2d/multimesh_instance_2d.cpp
#: scene/2d/particles_2d.cpp scene/2d/polygon_2d.cpp scene/2d/sprite.cpp
#: scene/3d/sprite_3d.cpp scene/gui/nine_patch_rect.cpp
-#: scene/gui/texture_rect.cpp scene/resources/sky.cpp
-#: scene/resources/style_box.cpp scene/resources/visual_shader_nodes.cpp
+#: scene/gui/texture_rect.cpp scene/resources/material.cpp
+#: scene/resources/sky.cpp scene/resources/style_box.cpp
+#: scene/resources/visual_shader_nodes.cpp
msgid "Texture"
msgstr ""
-#: scene/2d/cpu_particles_2d.cpp scene/2d/mesh_instance_2d.cpp
-#: scene/2d/multimesh_instance_2d.cpp scene/2d/particles_2d.cpp
-#: scene/2d/sprite.cpp scene/resources/style_box.cpp
-msgid "Normal Map"
-msgstr ""
-
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
msgid "Emission Shape"
@@ -18050,9 +19185,8 @@ msgid "Normals"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/3d/sprite_3d.cpp scene/resources/material.cpp
-#: scene/resources/particles_material.cpp scene/resources/texture.cpp
-msgid "Flags"
+#: scene/resources/particles_material.cpp
+msgid "Align Y"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
@@ -18072,6 +19206,11 @@ msgid "Initial Velocity"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Velocity Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp servers/physics_2d_server.cpp
#: servers/physics_server.cpp
msgid "Angular Velocity"
@@ -18079,6 +19218,11 @@ msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+msgid "Velocity Curve"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
msgid "Orbit Velocity"
msgstr ""
@@ -18089,6 +19233,21 @@ msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+msgid "Accel"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Accel Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Accel Curve"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
msgid "Radial Accel"
msgstr ""
@@ -18098,19 +19257,51 @@ msgid "Tangential Accel"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/2d/joints_2d.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/vehicle_body.cpp
-#: scene/resources/particles_material.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/physics_joint.cpp
+#: scene/3d/vehicle_body.cpp scene/resources/particles_material.cpp
#: servers/audio/effects/audio_effect_reverb.cpp
msgid "Damping"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+msgid "Damping Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Damping Curve"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp scene/3d/light.cpp
+#: scene/resources/particles_material.cpp
msgid "Angle"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+msgid "Angle Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Angle Curve"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+msgid "Scale Amount"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+msgid "Scale Amount Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+msgid "Scale Amount Curve"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
msgid "Color Ramp"
msgstr ""
@@ -18124,6 +19315,41 @@ msgstr ""
msgid "Hue Variation"
msgstr ""
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Variation"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Variation Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Variation Curve"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Speed Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Speed Curve"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Offset Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Offset Curve"
+msgstr ""
+
#: scene/2d/joints_2d.cpp
msgid "Node A and Node B must be PhysicsBody2Ds"
msgstr ""
@@ -18153,6 +19379,7 @@ msgid "Node B"
msgstr ""
#: scene/2d/joints_2d.cpp scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp
+#: scene/3d/light.cpp scene/3d/physics_joint.cpp
#: scene/resources/environment.cpp
msgid "Bias"
msgstr ""
@@ -18161,7 +19388,7 @@ msgstr ""
msgid "Disable Collision"
msgstr ""
-#: scene/2d/joints_2d.cpp
+#: scene/2d/joints_2d.cpp scene/3d/physics_joint.cpp
msgid "Softness"
msgstr ""
@@ -18178,7 +19405,7 @@ msgstr ""
msgid "Rest Length"
msgstr ""
-#: scene/2d/joints_2d.cpp scene/3d/vehicle_body.cpp
+#: scene/2d/joints_2d.cpp scene/3d/physics_joint.cpp scene/3d/vehicle_body.cpp
msgid "Stiffness"
msgstr ""
@@ -18197,7 +19424,7 @@ msgid "Texture Scale"
msgstr ""
#: scene/2d/light_2d.cpp scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp
-#: scene/resources/environment.cpp scene/resources/sky.cpp
+#: scene/3d/light.cpp scene/resources/environment.cpp scene/resources/sky.cpp
msgid "Energy"
msgstr ""
@@ -18233,11 +19460,6 @@ msgstr ""
msgid "Gradient Length"
msgstr ""
-#: scene/2d/light_2d.cpp scene/gui/control.cpp
-#: scene/resources/navigation_mesh.cpp
-msgid "Filter"
-msgstr ""
-
#: scene/2d/light_2d.cpp
msgid "Filter Smooth"
msgstr ""
@@ -18609,10 +19831,6 @@ msgid "Applied Forces"
msgstr ""
#: scene/2d/physics_body_2d.cpp
-msgid "Force"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp
msgid "Torque"
msgstr ""
@@ -18625,7 +19843,7 @@ msgid "Sync To Physics"
msgstr ""
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-msgid "Moving platform"
+msgid "Moving Platform"
msgstr ""
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
@@ -18634,7 +19852,7 @@ msgstr ""
#: scene/2d/physics_body_2d.cpp scene/2d/touch_screen_button.cpp
#: scene/3d/physics_body.cpp scene/gui/texture_button.cpp
-#: scene/resources/line_shape_2d.cpp
+#: scene/resources/line_shape_2d.cpp scene/resources/material.cpp
msgid "Normal"
msgstr ""
@@ -18841,6 +20059,30 @@ msgid ""
"as parent."
msgstr ""
+#: scene/2d/visibility_notifier_2d.cpp scene/3d/visibility_notifier.cpp
+msgid "Pause Animations"
+msgstr ""
+
+#: scene/2d/visibility_notifier_2d.cpp scene/3d/visibility_notifier.cpp
+msgid "Freeze Bodies"
+msgstr ""
+
+#: scene/2d/visibility_notifier_2d.cpp
+msgid "Pause Particles"
+msgstr ""
+
+#: scene/2d/visibility_notifier_2d.cpp
+msgid "Pause Animated Sprites"
+msgstr ""
+
+#: scene/2d/visibility_notifier_2d.cpp
+msgid "Process Parent"
+msgstr ""
+
+#: scene/2d/visibility_notifier_2d.cpp
+msgid "Physics Process Parent"
+msgstr ""
+
#: scene/3d/area.cpp
msgid "Reverb Bus"
msgstr ""
@@ -18930,6 +20172,7 @@ msgid "Attenuation Filter"
msgstr ""
#: scene/3d/audio_stream_player_3d.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
#: servers/audio/effects/audio_effect_filter.cpp
msgid "Cutoff Hz"
msgstr ""
@@ -18969,10 +20212,6 @@ msgid "Octree"
msgstr ""
#: scene/3d/baked_lightmap.cpp
-msgid "User Data"
-msgstr ""
-
-#: scene/3d/baked_lightmap.cpp
msgid "Finding meshes and lights"
msgstr ""
@@ -19202,6 +20441,14 @@ msgid "Ring Axis"
msgstr ""
#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
+msgid "Rotate Y"
+msgstr ""
+
+#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
+msgid "Disable Z"
+msgstr ""
+
+#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
msgid "Flatness"
msgstr ""
@@ -19237,15 +20484,11 @@ msgstr ""
msgid "Dynamic Range"
msgstr ""
-#: scene/3d/gi_probe.cpp
+#: scene/3d/gi_probe.cpp scene/3d/light.cpp
msgid "Normal Bias"
msgstr ""
#: scene/3d/gi_probe.cpp
-msgid "Compress"
-msgstr ""
-
-#: scene/3d/gi_probe.cpp
msgid "Plotting Meshes"
msgstr ""
@@ -19271,14 +20514,26 @@ msgid "Subdiv"
msgstr ""
#: scene/3d/light.cpp
+msgid "Indirect Energy"
+msgstr ""
+
+#: scene/3d/light.cpp
msgid "Negative"
msgstr ""
#: scene/3d/light.cpp
+msgid "Specular"
+msgstr ""
+
+#: scene/3d/light.cpp
msgid "Bake Mode"
msgstr ""
#: scene/3d/light.cpp
+msgid "Contact"
+msgstr ""
+
+#: scene/3d/light.cpp
msgid "Reverse Cull Face"
msgstr ""
@@ -19287,10 +20542,26 @@ msgid "Directional Shadow"
msgstr ""
#: scene/3d/light.cpp
+msgid "Split 1"
+msgstr ""
+
+#: scene/3d/light.cpp
+msgid "Split 2"
+msgstr ""
+
+#: scene/3d/light.cpp
+msgid "Split 3"
+msgstr ""
+
+#: scene/3d/light.cpp
msgid "Blend Splits"
msgstr ""
#: scene/3d/light.cpp
+msgid "Bias Split Scale"
+msgstr ""
+
+#: scene/3d/light.cpp
msgid "Depth Range"
msgstr ""
@@ -19314,6 +20585,10 @@ msgstr ""
msgid "Spot"
msgstr ""
+#: scene/3d/light.cpp
+msgid "Angle Attenuation"
+msgstr ""
+
#: scene/3d/mesh_instance.cpp
msgid "Software Skinning"
msgstr ""
@@ -19430,6 +20705,54 @@ msgid "Axis Lock"
msgstr ""
#: scene/3d/physics_body.cpp
+msgid "Linear X"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Linear Y"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Linear Z"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Angular X"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Angular Y"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Angular Z"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Motion X"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Motion Y"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Motion Z"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Move Lock X"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Move Lock Y"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Move Lock Z"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
msgid "Body Offset"
msgstr ""
@@ -19462,6 +20785,14 @@ msgid "Exclude Nodes"
msgstr ""
#: scene/3d/physics_joint.cpp
+msgid "Params"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Impulse Clamp"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit"
msgstr ""
@@ -19473,6 +20804,46 @@ msgstr ""
msgid "Lower"
msgstr ""
+#: scene/3d/physics_joint.cpp scene/3d/vehicle_body.cpp
+msgid "Relaxation"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Motor"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Target Velocity"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Max Impulse"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Linear Limit"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Upper Distance"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Lower Distance"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Restitution"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Linear Motion"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Linear Ortho"
+msgstr ""
+
#: scene/3d/physics_joint.cpp
msgid "Upper Angle"
msgstr ""
@@ -19482,6 +20853,14 @@ msgid "Lower Angle"
msgstr ""
#: scene/3d/physics_joint.cpp
+msgid "Angular Motion"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Ortho"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
msgid "Swing Span"
msgstr ""
@@ -19490,17 +20869,89 @@ msgid "Twist Span"
msgstr ""
#: scene/3d/physics_joint.cpp
+msgid "Linear Limit X"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Linear Motor X"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Force Limit"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Linear Spring X"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Equilibrium Point"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit X"
msgstr ""
#: scene/3d/physics_joint.cpp
+msgid "Erp"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Motor X"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Spring X"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Linear Limit Y"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Linear Motor Y"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Linear Spring Y"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit Y"
msgstr ""
#: scene/3d/physics_joint.cpp
+msgid "Angular Motor Y"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Spring Y"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Linear Limit Z"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Linear Motor Z"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Linear Spring Z"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit Z"
msgstr ""
+#: scene/3d/physics_joint.cpp
+msgid "Angular Motor Z"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Spring Z"
+msgstr ""
+
#: scene/3d/portal.cpp
msgid "The RoomManager should not be a child or grandchild of a Portal."
msgstr ""
@@ -19605,7 +21056,7 @@ msgstr ""
msgid "Use Default Simplify"
msgstr ""
-#: scene/3d/room.cpp
+#: scene/3d/room.cpp scene/3d/room_manager.cpp
msgid "Room Simplify"
msgstr ""
@@ -19643,6 +21094,12 @@ msgstr ""
msgid "Main"
msgstr ""
+#: scene/3d/room_manager.cpp scene/animation/animation_player.cpp
+#: scene/animation/animation_tree.cpp scene/animation/animation_tree_player.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+msgid "Active"
+msgstr ""
+
#: scene/3d/room_manager.cpp
msgid "Roomlist"
msgstr ""
@@ -19664,6 +21121,46 @@ msgid "Gameplay"
msgstr ""
#: scene/3d/room_manager.cpp
+msgid "Gameplay Monitor"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "Use Secondary PVS"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "Merge Meshes"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "Show Margins"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "Debug Sprawl"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "Overlap Warning Threshold"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "Preview Camera"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "Portal Depth Limit"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "Default Portal Margin"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "Roaming Expansion Margin"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
msgid ""
"RoomList path is invalid.\n"
"Please check the RoomList branch has been assigned in the RoomManager."
@@ -19782,6 +21279,18 @@ msgstr ""
msgid "Billboard"
msgstr ""
+#: scene/3d/sprite_3d.cpp scene/resources/material.cpp
+msgid "Transparent"
+msgstr ""
+
+#: scene/3d/sprite_3d.cpp
+msgid "Shaded"
+msgstr ""
+
+#: scene/3d/sprite_3d.cpp
+msgid "Double Sided"
+msgstr ""
+
#: scene/3d/sprite_3d.cpp
msgid "Alpha Cut"
msgstr ""
@@ -19846,10 +21355,6 @@ msgstr ""
msgid "Max Force"
msgstr ""
-#: scene/3d/vehicle_body.cpp
-msgid "Relaxation"
-msgstr ""
-
#: scene/3d/visibility_notifier.cpp
msgid "AABB"
msgstr ""
@@ -19971,7 +21476,7 @@ msgid "Fadeout Time"
msgstr ""
#: scene/animation/animation_blend_tree.cpp
-msgid "autorestart_"
+msgid "Auto Restart"
msgstr ""
#: scene/animation/animation_blend_tree.cpp
@@ -20043,12 +21548,6 @@ msgstr ""
msgid "Default Blend Time"
msgstr ""
-#: scene/animation/animation_player.cpp scene/animation/animation_tree.cpp
-#: scene/animation/animation_tree_player.cpp
-#: servers/audio/effects/audio_effect_delay.cpp
-msgid "Active"
-msgstr ""
-
#: scene/animation/animation_player.cpp
msgid "Method Call Mode"
msgstr ""
@@ -20157,10 +21656,6 @@ msgstr ""
msgid "Max Iterations"
msgstr ""
-#: scene/animation/tween.cpp scene/resources/texture.cpp
-msgid "Repeat"
-msgstr ""
-
#: scene/animation/tween.cpp
msgid "Playback Process Mode"
msgstr ""
@@ -20187,18 +21682,6 @@ msgstr ""
msgid "Alignment"
msgstr ""
-#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
-#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
-#: scene/resources/style_box.cpp
-msgid "Horizontal"
-msgstr ""
-
-#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
-#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
-#: scene/resources/style_box.cpp
-msgid "Vertical"
-msgstr ""
-
#: scene/gui/base_button.cpp
msgid "Shortcut In Tooltip"
msgstr ""
@@ -20284,10 +21767,6 @@ msgid "HSV"
msgstr ""
#: scene/gui/color_picker.cpp
-msgid "Raw"
-msgstr ""
-
-#: scene/gui/color_picker.cpp
msgid "Switch between hexadecimal and code values."
msgstr ""
@@ -20341,6 +21820,30 @@ msgid "Focus"
msgstr ""
#: scene/gui/control.cpp
+msgid "Neighbour Left"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Neighbour Top"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Neighbour Right"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Neighbour Bottom"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Next"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Previous"
+msgstr ""
+
+#: scene/gui/control.cpp
msgid "Mouse"
msgstr ""
@@ -20373,7 +21876,7 @@ msgid "Dialog"
msgstr ""
#: scene/gui/dialogs.cpp
-msgid "Hide On Ok"
+msgid "Hide On OK"
msgstr ""
#: scene/gui/dialogs.cpp scene/gui/label.cpp
@@ -20458,7 +21961,7 @@ msgid "Timers"
msgstr ""
#: scene/gui/item_list.cpp scene/gui/popup_menu.cpp scene/gui/tree.cpp
-msgid "Incremental Search Max Interval (msec)"
+msgid "Incremental Search Max Interval Msec"
msgstr ""
#: scene/gui/item_list.cpp scene/gui/tree.cpp
@@ -20957,6 +22460,22 @@ msgstr ""
msgid "Nine Patch Stretch"
msgstr ""
+#: scene/gui/texture_progress.cpp
+msgid "Stretch Margin Left"
+msgstr ""
+
+#: scene/gui/texture_progress.cpp
+msgid "Stretch Margin Top"
+msgstr ""
+
+#: scene/gui/texture_progress.cpp
+msgid "Stretch Margin Right"
+msgstr ""
+
+#: scene/gui/texture_progress.cpp
+msgid "Stretch Margin Bottom"
+msgstr ""
+
#: scene/gui/tree.cpp
msgid "Custom Minimum Height"
msgstr ""
@@ -20990,7 +22509,7 @@ msgid "Paused"
msgstr ""
#: scene/gui/video_player.cpp
-msgid "Buffering (msec)"
+msgid "Buffering Msec"
msgstr ""
#: scene/gui/video_player.cpp
@@ -21294,6 +22813,22 @@ msgid "Shadow Atlas"
msgstr ""
#: scene/main/viewport.cpp
+msgid "Quad 0"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 1"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 2"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 3"
+msgstr ""
+
+#: scene/main/viewport.cpp
msgid "Canvas Transform"
msgstr ""
@@ -21306,6 +22841,10 @@ msgid "Tooltip Delay (sec)"
msgstr ""
#: scene/register_scene_types.cpp
+msgid "Swap OK Cancel"
+msgstr ""
+
+#: scene/register_scene_types.cpp
msgid "Use hiDPI"
msgstr ""
@@ -21318,18 +22857,6 @@ msgid "Custom Font"
msgstr ""
#: scene/resources/audio_stream_sample.cpp
-msgid "Loop Mode"
-msgstr ""
-
-#: scene/resources/audio_stream_sample.cpp
-msgid "Loop Begin"
-msgstr ""
-
-#: scene/resources/audio_stream_sample.cpp
-msgid "Loop End"
-msgstr ""
-
-#: scene/resources/audio_stream_sample.cpp
#: servers/audio/effects/audio_stream_generator.cpp servers/audio_server.cpp
msgid "Mix Rate"
msgstr ""
@@ -21379,6 +22906,15 @@ msgid "Extra Spacing"
msgstr ""
#: scene/resources/dynamic_font.cpp
+msgid "Char"
+msgstr ""
+
+#: scene/resources/dynamic_font.cpp scene/resources/world.cpp
+#: scene/resources/world_2d.cpp
+msgid "Space"
+msgstr ""
+
+#: scene/resources/dynamic_font.cpp
msgid "Font"
msgstr ""
@@ -21575,6 +23111,42 @@ msgid "Glow"
msgstr ""
#: scene/resources/environment.cpp
+msgid "Levels"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "1"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "2"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "3"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "4"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "5"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "6"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "7"
+msgstr ""
+
+#: scene/resources/environment.cpp
msgid "Bloom"
msgstr ""
@@ -21655,9 +23227,61 @@ msgid "Next Pass"
msgstr ""
#: scene/resources/material.cpp
+msgid "Use Shadow To Opacity"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Unshaded"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Vertex Lighting"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "No Depth Test"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Use Point Size"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "World Triplanar"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Fixed Size"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Albedo Tex Force sRGB"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Do Not Receive Shadows"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Disable Ambient Light"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Ensure Correct Normals"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Vertex Color"
msgstr ""
+#: scene/resources/material.cpp
+msgid "Use As Albedo"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Is sRGB"
+msgstr ""
+
#: scene/resources/material.cpp servers/visual_server.cpp
msgid "Parameters"
msgstr ""
@@ -21687,6 +23311,10 @@ msgid "Billboard Mode"
msgstr ""
#: scene/resources/material.cpp
+msgid "Billboard Keep Scale"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Grow"
msgstr ""
@@ -21695,6 +23323,10 @@ msgid "Grow Amount"
msgstr ""
#: scene/resources/material.cpp
+msgid "Use Alpha Scissor"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Alpha Scissor Threshold"
msgstr ""
@@ -21723,10 +23355,18 @@ msgid "Metallic Specular"
msgstr ""
#: scene/resources/material.cpp
+msgid "Metallic Texture"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Metallic Texture Channel"
msgstr ""
#: scene/resources/material.cpp
+msgid "Roughness Texture"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Roughness Texture Channel"
msgstr ""
@@ -21743,6 +23383,14 @@ msgid "Emission Operator"
msgstr ""
#: scene/resources/material.cpp
+msgid "Emission On UV2"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Emission Texture"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "NormalMap"
msgstr ""
@@ -21755,6 +23403,10 @@ msgid "Rim Tint"
msgstr ""
#: scene/resources/material.cpp
+msgid "Rim Texture"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Clearcoat"
msgstr ""
@@ -21763,14 +23415,26 @@ msgid "Clearcoat Gloss"
msgstr ""
#: scene/resources/material.cpp
+msgid "Clearcoat Texture"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Anisotropy"
msgstr ""
#: scene/resources/material.cpp
+msgid "Anisotropy Flowmap"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Ambient Occlusion"
msgstr ""
#: scene/resources/material.cpp
+msgid "On UV2"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Texture Channel"
msgstr ""
@@ -21803,6 +23467,10 @@ msgid "Transmission"
msgstr ""
#: scene/resources/material.cpp
+msgid "Transmission Texture"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Refraction"
msgstr ""
@@ -21819,6 +23487,10 @@ msgid "UV1"
msgstr ""
#: scene/resources/material.cpp
+msgid "Triplanar"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Triplanar Sharpness"
msgstr ""
@@ -22002,6 +23674,14 @@ msgstr ""
msgid "Point Count"
msgstr ""
+#: scene/resources/particles_material.cpp
+msgid "Scale Random"
+msgstr ""
+
+#: scene/resources/particles_material.cpp
+msgid "Scale Curve"
+msgstr ""
+
#: scene/resources/physics_material.cpp
msgid "Rough"
msgstr ""
@@ -22059,10 +23739,6 @@ msgid "A"
msgstr ""
#: scene/resources/shader.cpp
-msgid "Code"
-msgstr ""
-
-#: scene/resources/shader.cpp
msgid "Custom Defines"
msgstr ""
@@ -22147,14 +23823,6 @@ msgid "Grow End"
msgstr ""
#: scene/resources/texture.cpp
-msgid "Storage"
-msgstr ""
-
-#: scene/resources/texture.cpp
-msgid "Lossy Quality"
-msgstr ""
-
-#: scene/resources/texture.cpp
msgid "Load Path"
msgstr ""
@@ -22264,10 +23932,6 @@ msgstr ""
msgid "Fallback Environment"
msgstr ""
-#: scene/resources/world.cpp scene/resources/world_2d.cpp
-msgid "Space"
-msgstr ""
-
#: scene/resources/world.cpp
msgid "Scenario"
msgstr ""
@@ -22341,8 +24005,33 @@ msgstr ""
msgid "Wet"
msgstr ""
-#: servers/audio/effects/audio_effect_compressor.cpp
-msgid "Threshold"
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "Voice"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+msgid "Delay (ms)"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_phaser.cpp
+msgid "Rate Hz"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "Depth (ms)"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+msgid "Level dB"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+#: servers/audio/effects/audio_effect_panner.cpp
+msgid "Pan"
msgstr ""
#: servers/audio/effects/audio_effect_compressor.cpp
@@ -22367,19 +24056,6 @@ msgid "Tap 1"
msgstr ""
#: servers/audio/effects/audio_effect_delay.cpp
-msgid "Delay (ms)"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_delay.cpp
-msgid "Level dB"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_delay.cpp
-#: servers/audio/effects/audio_effect_panner.cpp
-msgid "Pan"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_delay.cpp
msgid "Tap 2"
msgstr ""
@@ -22437,10 +24113,6 @@ msgstr ""
msgid "Range Max Hz"
msgstr ""
-#: servers/audio/effects/audio_effect_phaser.cpp
-msgid "Rate Hz"
-msgstr ""
-
#: servers/audio/effects/audio_effect_pitch_shift.cpp
msgid "Oversampling"
msgstr ""
@@ -22455,7 +24127,7 @@ msgid "Predelay"
msgstr ""
#: servers/audio/effects/audio_effect_reverb.cpp
-msgid "(msec)"
+msgid "Msec"
msgstr ""
#: servers/audio/effects/audio_effect_reverb.cpp
diff --git a/editor/translations/el.po b/editor/translations/el.po
index d4e6a25fc0..c80cb15b11 100644
--- a/editor/translations/el.po
+++ b/editor/translations/el.po
@@ -31,7 +31,7 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 4.11-dev\n"
-#: core/bind/core_bind.cpp
+#: core/bind/core_bind.cpp main/main.cpp
msgid "Tablet Driver"
msgstr ""
@@ -135,8 +135,8 @@ msgstr "Θέση αγκÏÏωσης"
#: core/bind/core_bind.cpp editor/editor_settings.cpp main/main.cpp
#: modules/gdscript/gdscript_editor.cpp modules/gridmap/grid_map.cpp
#: modules/mono/csharp_script.cpp modules/visual_script/visual_script_nodes.cpp
-#: scene/2d/tile_map.cpp scene/3d/camera.cpp scene/gui/control.cpp
-#: scene/gui/graph_edit.cpp scene/main/viewport.cpp
+#: scene/2d/tile_map.cpp scene/3d/camera.cpp scene/3d/light.cpp
+#: scene/gui/control.cpp scene/gui/graph_edit.cpp scene/main/viewport.cpp
#: scene/resources/dynamic_font.cpp scene/resources/navigation_mesh.cpp
#: scene/resources/primitive_meshes.cpp scene/resources/sky.cpp
#: scene/resources/style_box.cpp scene/resources/texture.cpp
@@ -240,8 +240,7 @@ msgid "Data"
msgstr ""
#: core/io/file_access_network.cpp core/register_core_types.cpp
-#: editor/editor_settings.cpp editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp main/main.cpp
+#: editor/editor_settings.cpp main/main.cpp
#: modules/gdscript/language_server/gdscript_language_server.cpp
#, fuzzy
msgid "Network"
@@ -527,9 +526,10 @@ msgstr "ΠÏοÏÏθμιση"
msgid "Relative"
msgstr "Σχετική ΠÏοσκόλληση"
-#: core/os/input_event.cpp scene/2d/camera_2d.cpp
-#: scene/3d/interpolated_camera.cpp scene/animation/animation_player.cpp
-#: scene/resources/environment.cpp
+#: core/os/input_event.cpp scene/2d/camera_2d.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/interpolated_camera.cpp
+#: scene/animation/animation_player.cpp scene/resources/environment.cpp
+#: scene/resources/particles_material.cpp
#, fuzzy
msgid "Speed"
msgstr "ΤαχÏτητα:"
@@ -579,8 +579,9 @@ msgstr "Αλλαγές Δέσμευσης"
msgid "Pitch"
msgstr "Τόνος"
-#: core/os/input_event.cpp scene/2d/physics_body_2d.cpp
-#: scene/3d/physics_body.cpp
+#: core/os/input_event.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/physics_body_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/3d/physics_body.cpp scene/resources/particles_material.cpp
#, fuzzy
msgid "Velocity"
msgstr "ΑÏχικοποιήστε"
@@ -599,6 +600,8 @@ msgid "Controller Value"
msgstr ""
#: core/project_settings.cpp editor/editor_node.cpp main/main.cpp
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/windows/export/export.cpp
#, fuzzy
msgid "Application"
msgstr "ΕνέÏγεια"
@@ -617,13 +620,16 @@ msgstr "Ρυθμίσεις ΈÏγου..."
#: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp
#: editor/editor_plugin_settings.cpp editor/editor_profiler.cpp
#: editor/project_manager.cpp editor/settings_config_dialog.cpp
-#: modules/gdnative/nativescript/nativescript.cpp scene/2d/area_2d.cpp
-#: scene/3d/area.cpp scene/main/node.cpp
+#: modules/gdnative/nativescript/nativescript.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/osx/export/export.cpp scene/2d/area_2d.cpp scene/3d/area.cpp
+#: scene/main/node.cpp
msgid "Name"
msgstr "Όνομα"
#: core/project_settings.cpp editor/editor_help.cpp
-#: modules/visual_script/visual_script_nodes.cpp
+#: modules/visual_script/visual_script_nodes.cpp platform/uwp/export/export.cpp
+#: platform/windows/export/export.cpp
msgid "Description"
msgstr "ΠεÏιγÏαφή"
@@ -661,7 +667,7 @@ msgid "Custom User Dir Name"
msgstr ""
#: core/project_settings.cpp editor/animation_track_editor.cpp
-#: editor/editor_audio_buses.cpp servers/audio_server.cpp
+#: editor/editor_audio_buses.cpp main/main.cpp servers/audio_server.cpp
msgid "Audio"
msgstr "Ήχος"
@@ -829,10 +835,13 @@ msgstr "ΦίλτÏα:"
msgid "Sharpen Intensity"
msgstr ""
-#: core/project_settings.cpp editor/editor_node.cpp editor/editor_settings.cpp
-#: editor/plugins/script_editor_plugin.cpp editor/project_export.cpp
-#: main/main.cpp modules/gdscript/gdscript.cpp
-#: modules/visual_script/visual_script.cpp scene/3d/room_manager.cpp
+#: core/project_settings.cpp editor/editor_export.cpp editor/editor_node.cpp
+#: editor/editor_settings.cpp editor/plugins/script_editor_plugin.cpp
+#: editor/project_export.cpp main/main.cpp modules/gdscript/gdscript.cpp
+#: modules/visual_script/visual_script.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp scene/3d/room_manager.cpp
#: scene/main/scene_tree.cpp scene/resources/shape_2d.cpp
#: servers/visual_server.cpp
msgid "Debug"
@@ -1068,6 +1077,7 @@ msgid "Subsurface Scattering"
msgstr ""
#: drivers/gles3/rasterizer_scene_gles3.cpp
+#: editor/import/resource_importer_texture.cpp
#: editor/plugins/spatial_editor_plugin.cpp modules/gltf/gltf_node.cpp
#: modules/gridmap/grid_map.cpp scene/2d/cpu_particles_2d.cpp
#: scene/2d/node_2d.cpp scene/2d/parallax_layer.cpp scene/2d/polygon_2d.cpp
@@ -1367,6 +1377,7 @@ msgid "Editors"
msgstr "ΕπεξεÏγαστής"
#: editor/animation_track_editor.cpp editor/editor_settings.cpp
+#: editor/import/resource_importer_scene.cpp
#: editor/plugins/animation_player_editor_plugin.cpp editor/scene_tree_dock.cpp
#: scene/2d/animated_sprite.cpp scene/2d/cpu_particles_2d.cpp
#: scene/2d/sprite.cpp scene/3d/cpu_particles.cpp scene/3d/sprite_3d.cpp
@@ -1607,14 +1618,14 @@ msgstr "Τιμή βήματος κίνησης."
msgid "Seconds"
msgstr "ΔευτεÏόλεπτα"
-#: editor/animation_track_editor.cpp
+#: editor/animation_track_editor.cpp editor/import/resource_importer_scene.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp main/main.cpp
#: scene/resources/texture.cpp
msgid "FPS"
msgstr "FPS"
#: editor/animation_track_editor.cpp editor/editor_plugin_settings.cpp
-#: editor/editor_resource_picker.cpp
+#: editor/editor_resource_picker.cpp editor/import/resource_importer_wav.cpp
#: editor/plugins/polygon_2d_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
@@ -2594,7 +2605,9 @@ msgid "Remove Autoload"
msgstr "ΑφαίÏεση AutoLoad"
#: editor/editor_autoload_settings.cpp editor/editor_plugin_settings.cpp
-#: modules/gdscript/gdscript.cpp scene/2d/polygon_2d.cpp scene/3d/area.cpp
+#: modules/gdscript/gdscript.cpp platform/android/export/export_plugin.cpp
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#: scene/2d/polygon_2d.cpp scene/3d/area.cpp scene/3d/physics_joint.cpp
#: scene/3d/reflection_probe.cpp scene/main/canvas_layer.cpp
#: scene/resources/material.cpp servers/visual_server.cpp
msgid "Enable"
@@ -2765,6 +2778,58 @@ msgstr ""
#: editor/editor_export.cpp platform/android/export/export_plugin.cpp
#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Custom Template"
+msgstr "ΕπεξεÏγασία Θέματος"
+
+#: editor/editor_export.cpp editor/project_export.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp
+msgid "Release"
+msgstr "Διανομή"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Binary Format"
+msgstr "Τελεστής χÏώματος."
+
+#: editor/editor_export.cpp
+msgid "64 Bits"
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Embed PCK"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Texture Format"
+msgstr "TextureRegion"
+
+#: editor/editor_export.cpp
+msgid "BPTC"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "S3TC"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "ETC"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "ETC2"
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "No BPTC Fallbacks"
+msgstr ""
+
+#: editor/editor_export.cpp platform/android/export/export_plugin.cpp
+#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
msgid "Custom debug template not found."
msgstr "Δεν βÏέθηκε Ï€ÏοσαÏμοσμένο πακέτο αποσφαλμάτωσης."
@@ -2947,6 +3012,7 @@ msgid "Make Current"
msgstr "Κάνε ΤÏέχων"
#: editor/editor_feature_profile.cpp editor/editor_node.cpp
+#: editor/import/resource_importer_scene.cpp
#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
msgid "Import"
msgstr "Εισαγωγή"
@@ -3077,8 +3143,11 @@ msgstr "Επιτυχία!"
msgid "Display Mode"
msgstr "ΛειτουÏγία ΑναπαÏαγωγής:"
-#: editor/editor_file_dialog.cpp main/main.cpp modules/csg/csg_shape.cpp
-#: modules/visual_script/visual_script_nodes.cpp
+#: editor/editor_file_dialog.cpp
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+#: editor/import/resource_importer_wav.cpp main/main.cpp
+#: modules/csg/csg_shape.cpp modules/visual_script/visual_script_nodes.cpp
#: modules/visual_script/visual_script_yield_nodes.cpp scene/2d/light_2d.cpp
#: scene/2d/physics_body_2d.cpp scene/2d/tile_map.cpp
#: scene/3d/baked_lightmap.cpp scene/3d/light.cpp scene/3d/physics_body.cpp
@@ -3217,7 +3286,9 @@ msgstr "(Επαν)εισαγωγή"
msgid "Reimport Missing Imported Files"
msgstr ""
-#: editor/editor_help.cpp
+#: editor/editor_help.cpp scene/2d/camera_2d.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/resources/dynamic_font.cpp
+#: scene/resources/style_box.cpp
msgid "Top"
msgstr "ΚοÏυφή"
@@ -3272,6 +3343,7 @@ msgid "Fonts"
msgstr "ΓÏαμματοσειÏά"
#: editor/editor_help.cpp editor/plugins/theme_editor_plugin.cpp
+#: platform/iphone/export/export.cpp
#, fuzzy
msgid "Icons"
msgstr "Εικονίδιο"
@@ -3443,7 +3515,9 @@ msgstr ""
msgid "Pin value [Disabled because '%s' is editor-only]"
msgstr ""
-#: editor/editor_inspector.cpp editor/scene_tree_dock.cpp
+#: editor/editor_inspector.cpp
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+#: editor/scene_tree_dock.cpp
#: modules/visual_script/visual_script_func_nodes.cpp
#: modules/visual_script/visual_script_nodes.cpp
#: modules/visual_script/visual_script_property_selector.cpp
@@ -3790,6 +3864,16 @@ msgid "Quick Open Script..."
msgstr "ΓÏήγοÏη άνοιγμα δέσμης ενεÏγειών..."
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Save & Reload"
+msgstr "Αποθήκευση & Επανεκκίνηση"
+
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Save changes to '%s' before reloading?"
+msgstr "Αποθήκευση αλλαγών στο '%s' Ï€Ïιν το κλείσιμο;"
+
+#: editor/editor_node.cpp
msgid "Save & Close"
msgstr "Αποθήκευση & Κλείσιμο"
@@ -3907,6 +3991,11 @@ msgid "Open Project Manager?"
msgstr "Άνοιγμα του διαχειÏιστή έÏγων;"
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Save changes to the following scene(s) before reloading?"
+msgstr "Αποθήκευση αλλαγών στις ακόλουθες σκηνές Ï€Ïιν την έξοδο;"
+
+#: editor/editor_node.cpp
msgid "Save & Quit"
msgstr "Αποθήκευση & Έξοδος"
@@ -4188,8 +4277,8 @@ msgstr "Αλλαγές υλικοÏ"
#: editor/editor_node.cpp
#, fuzzy
-msgid "Translate Properties"
-msgstr "Ιδιότητες"
+msgid "Localize Settings"
+msgstr "Τοπική Ï€ÏοσαÏμογή"
#: editor/editor_node.cpp
#, fuzzy
@@ -4206,8 +4295,8 @@ msgstr "ΕπιθεωÏητής"
#: editor/editor_node.cpp
#, fuzzy
-msgid "Capitalize Properties"
-msgstr "Ιδιότητες"
+msgid "Default Property Name Style"
+msgstr "ΔιαδÏομή έÏγου:"
#: editor/editor_node.cpp
msgid "Default Float Step"
@@ -4825,7 +4914,9 @@ msgstr "Εγκατεστημένα Ï€Ïόσθετα:"
msgid "Update"
msgstr "ΕνημέÏωση"
-#: editor/editor_plugin_settings.cpp
+#: editor/editor_plugin_settings.cpp platform/android/export/export_plugin.cpp
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp
#, fuzzy
msgid "Version"
msgstr "Έκδοση:"
@@ -5864,7 +5955,7 @@ msgstr "Γεμάτο ΟÏθογώνιο ΠαÏαλληλόγÏαμμο"
msgid "Rect Custom Position"
msgstr "ΟÏισμός θέσης εξόδου καμπÏλης"
-#: editor/editor_settings.cpp
+#: editor/editor_settings.cpp platform/android/export/export_plugin.cpp
msgid "Screen"
msgstr ""
@@ -5891,6 +5982,19 @@ msgid "Editor SSL Certificates"
msgstr "Ρυθμίσεις επεξεÏγαστή"
#: editor/editor_settings.cpp
+msgid "HTTP Proxy"
+msgstr ""
+
+#: editor/editor_settings.cpp
+msgid "Host"
+msgstr ""
+
+#: editor/editor_settings.cpp editor/fileserver/editor_file_server.cpp
+#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp
+msgid "Port"
+msgstr ""
+
+#: editor/editor_settings.cpp
msgid "Project Manager"
msgstr "ΔιαχειÏιστής"
@@ -5933,7 +6037,8 @@ msgstr ""
msgid "String Color"
msgstr "ΑÏχείο αποθήκευσης:"
-#: editor/editor_settings.cpp
+#: editor/editor_settings.cpp platform/javascript/export/export.cpp
+#: platform/uwp/export/export.cpp
#, fuzzy
msgid "Background Color"
msgstr "ΆκυÏο χÏώμα παÏασκηνίου."
@@ -6116,22 +6221,6 @@ msgid "Starting the download..."
msgstr ""
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "HTTP Proxy"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Host"
-msgstr ""
-
-#: editor/export_template_manager.cpp editor/fileserver/editor_file_server.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp main/main.cpp
-#: modules/mono/mono_gd/gd_mono.cpp
-msgid "Port"
-msgstr ""
-
-#: editor/export_template_manager.cpp
msgid "Error requesting URL:"
msgstr "Σφάλμα αίτησης URL:"
@@ -6402,6 +6491,7 @@ msgstr ""
#: editor/fileserver/editor_file_server.cpp
#: editor/plugins/version_control_editor_plugin.cpp
+#: platform/uwp/export/export.cpp platform/windows/export/export.cpp
msgid "Password"
msgstr ""
@@ -6785,6 +6875,117 @@ msgstr ""
msgid "Use Ambient"
msgstr ""
+#: editor/import/resource_importer_bitmask.cpp
+#, fuzzy
+msgid "Create From"
+msgstr "ΔημιουÏγία φακέλου"
+
+#: editor/import/resource_importer_bitmask.cpp
+#: servers/audio/effects/audio_effect_compressor.cpp
+msgid "Threshold"
+msgstr ""
+
+#: editor/import/resource_importer_csv_translation.cpp
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_scene.cpp
+#: editor/import/resource_importer_texture.cpp
+#: editor/import/resource_importer_wav.cpp scene/3d/gi_probe.cpp
+#, fuzzy
+msgid "Compress"
+msgstr "Συστατικά"
+
+#: editor/import/resource_importer_csv_translation.cpp
+msgid "Delimiter"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+msgid "No BPTC If RGB"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/sprite_3d.cpp
+#: scene/resources/material.cpp scene/resources/particles_material.cpp
+#: scene/resources/texture.cpp
+msgid "Flags"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/animation/tween.cpp
+#: scene/resources/texture.cpp
+msgid "Repeat"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/2d/light_2d.cpp
+#: scene/gui/control.cpp scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Filter"
+msgstr "ΦίλτÏα:"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Mipmaps"
+msgstr "Σήματα"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+msgid "Anisotropic"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+msgid "sRGB"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#, fuzzy
+msgid "Slices"
+msgstr "Αυτόματο κόψιμο"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
+#: scene/resources/style_box.cpp
+#, fuzzy
+msgid "Horizontal"
+msgstr "ΟÏιζόντια:"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
+#: scene/resources/style_box.cpp
+#, fuzzy
+msgid "Vertical"
+msgstr "Κάθετα:"
+
+#: editor/import/resource_importer_obj.cpp
+#, fuzzy
+msgid "Generate Tangents"
+msgstr "ΑÏιθμός δημιουÏγημένων σημείων:"
+
+#: editor/import/resource_importer_obj.cpp
+#, fuzzy
+msgid "Scale Mesh"
+msgstr "ΛειτουÏγία Κλιμάκωσης"
+
+#: editor/import/resource_importer_obj.cpp
+#, fuzzy
+msgid "Offset Mesh"
+msgstr "Μετατόπιση:"
+
+#: editor/import/resource_importer_obj.cpp
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Octahedral Compression"
+msgstr "ΟÏισμός έκφÏασης"
+
+#: editor/import/resource_importer_obj.cpp
+#, fuzzy
+msgid "Optimize Mesh Flags"
+msgstr "Μέγεθος: "
+
#: editor/import/resource_importer_scene.cpp
msgid "Import as Single Scene"
msgstr "Εισαγωγή ως μονή σκηνή"
@@ -6825,6 +7026,156 @@ msgstr "Εισαγωγή ως πολλαπλές σκηνές"
msgid "Import as Multiple Scenes+Materials"
msgstr "Εισαγωγή ως πολλαπλές σκηνές και υλικά"
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Nodes"
+msgstr "Κόμβος"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Root Type"
+msgstr "Είδος μέλους"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Root Name"
+msgstr "ΑπομακÏυσμένο "
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Root Scale"
+msgstr "Κλιμάκωση:"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Custom Script"
+msgstr "Αποκοπή κόμβων"
+
+#: editor/import/resource_importer_scene.cpp scene/resources/texture.cpp
+#, fuzzy
+msgid "Storage"
+msgstr "ΑÏχείο αποθήκευσης:"
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Use Legacy Names"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+#, fuzzy
+msgid "Materials"
+msgstr "Αλλαγές υλικοÏ"
+
+#: editor/import/resource_importer_scene.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Location"
+msgstr "Τοπική Ï€ÏοσαÏμογή"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Keep On Reimport"
+msgstr "Επανεισαγωγή"
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+#, fuzzy
+msgid "Meshes"
+msgstr "Πλέγμα..."
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Ensure Tangents"
+msgstr "ΤÏοποπίηση εφαπτομένης καμπÏλης"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Light Baking"
+msgstr "ΠÏοετοιμασία Lightmaps"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Lightmap Texel Size"
+msgstr "ΠÏοετοιμασία Lightmaps"
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+msgid "Skins"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Use Named Skins"
+msgstr "ΧÏήση Κλιμακωτής ΠÏοσκόλλησης"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "External Files"
+msgstr "Άνοιγμα αÏχείου"
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Store In Subdir"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Filter Script"
+msgstr "ΦιλτÏάÏισμα δεσμών ενεÏγειών"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Keep Custom Tracks"
+msgstr "Μετασχηματισμός"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Optimizer"
+msgstr "Βελτιστοποίησε"
+
+#: editor/import/resource_importer_scene.cpp main/main.cpp
+#: modules/mono/mono_gd/gd_mono.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp scene/2d/camera_2d.cpp scene/2d/light_2d.cpp
+#: scene/2d/navigation_polygon.cpp scene/2d/ray_cast_2d.cpp scene/2d/sprite.cpp
+#: scene/2d/y_sort.cpp scene/3d/audio_stream_player_3d.cpp
+#: scene/3d/baked_lightmap.cpp scene/3d/interpolated_camera.cpp
+#: scene/3d/light.cpp scene/3d/navigation_mesh_instance.cpp
+#: scene/3d/physics_joint.cpp scene/3d/ray_cast.cpp scene/3d/sprite_3d.cpp
+#: scene/gui/graph_edit.cpp scene/gui/rich_text_label.cpp
+#: scene/resources/curve.cpp scene/resources/environment.cpp
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Enabled"
+msgstr "ΕνεÏγοποίηση"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Max Linear Error"
+msgstr "Μέγιστο γÏαμμικό σφάλμα:"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Max Angular Error"
+msgstr "Μέγιστο γωνιώδες σφάλμα:"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Max Angle"
+msgstr "Τιμή"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Remove Unused Tracks"
+msgstr "ΑφαίÏεση ÎšÎ¿Î¼Î¼Î±Ï„Î¹Î¿Ï ÎšÎ¯Î½Î·ÏƒÎ·Ï‚"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Clips"
+msgstr "Κλιπ Απεικόνισης"
+
+#: editor/import/resource_importer_scene.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/particles_2d.cpp scene/3d/area.cpp scene/3d/cpu_particles.cpp
+#: scene/3d/particles.cpp scene/resources/environment.cpp
+#, fuzzy
+msgid "Amount"
+msgstr "Ποσότητα:"
+
#: editor/import/resource_importer_scene.cpp
#: editor/plugins/mesh_library_editor_plugin.cpp
msgid "Import Scene"
@@ -6869,12 +7220,149 @@ msgstr ""
msgid "Saving..."
msgstr "Αποθήκευση..."
+#: editor/import/resource_importer_texture.cpp scene/resources/texture.cpp
+msgid "Lossy Quality"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "HDR Mode"
+msgstr "Επιλογή ΛειτουÏγίας"
+
+#: editor/import/resource_importer_texture.cpp
+msgid "BPTC LDR"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/mesh_instance_2d.cpp scene/2d/multimesh_instance_2d.cpp
+#: scene/2d/particles_2d.cpp scene/2d/sprite.cpp scene/resources/style_box.cpp
+msgid "Normal Map"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Process"
+msgstr "ΜετεπεξεÏγασία"
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Fix Alpha Border"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Premult Alpha"
+msgstr "ΕπεγεÏγασία πολυγώνου"
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Hdr As Srgb"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Invert Color"
+msgstr "ΚοÏυφή"
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Normal Map Invert Y"
+msgstr "Τυχαία κλιμάκωση:"
+
+#: editor/import/resource_importer_texture.cpp
+#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
+#: scene/audio/audio_stream_player.cpp scene/gui/video_player.cpp
+msgid "Stream"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Size Limit"
+msgstr "Μέγεθος: "
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Detect 3D"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "SVG"
+msgstr "HSV"
+
#: editor/import/resource_importer_texture.cpp
msgid ""
"Warning, no suitable PC VRAM compression enabled in Project Settings. This "
"texture will not display correctly on PC."
msgstr ""
+#: editor/import/resource_importer_texture_atlas.cpp
+#, fuzzy
+msgid "Atlas File"
+msgstr "Μέγεθος πεÏιγÏάμματος:"
+
+#: editor/import/resource_importer_texture_atlas.cpp
+#, fuzzy
+msgid "Import Mode"
+msgstr "ΛειτουÏγία εξαγωγής:"
+
+#: editor/import/resource_importer_texture_atlas.cpp
+#, fuzzy
+msgid "Crop To Region"
+msgstr "ΟÏισμός ΠεÏιοχής Πλακιδίου"
+
+#: editor/import/resource_importer_texture_atlas.cpp
+msgid "Trim Alpha Border From Region"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp scene/2d/physics_body_2d.cpp
+#, fuzzy
+msgid "Force"
+msgstr "Πηγαίο πλέγμα:"
+
+#: editor/import/resource_importer_wav.cpp
+msgid "8 Bit"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp main/main.cpp
+#: modules/mono/editor/csharp_project.cpp modules/mono/mono_gd/gd_mono.cpp
+msgid "Mono"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+#, fuzzy
+msgid "Max Rate"
+msgstr "Κόμβος μείξης"
+
+#: editor/import/resource_importer_wav.cpp
+#, fuzzy
+msgid "Max Rate Hz"
+msgstr "Κόμβος μείξης"
+
+#: editor/import/resource_importer_wav.cpp
+msgid "Trim"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+#, fuzzy
+msgid "Normalize"
+msgstr "ΜοÏφή"
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+#, fuzzy
+msgid "Loop Mode"
+msgstr "ΛειτουÏγία Μετακίνησης"
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+#, fuzzy
+msgid "Loop Begin"
+msgstr "ΛειτουÏγία Μετακίνησης"
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+#, fuzzy
+msgid "Loop End"
+msgstr "ΛειτουÏγία Μετακίνησης"
+
#: editor/import_defaults_editor.cpp
msgid "Select Importer"
msgstr "Επιλογή Εισαγωγέα"
@@ -6945,6 +7433,29 @@ msgstr "Απέτυχε η φόÏτωση πόÏου."
#: editor/inspector_dock.cpp
#, fuzzy
+msgid "Property Name Style"
+msgstr "Όνομα έÏγου:"
+
+#: editor/inspector_dock.cpp scene/gui/color_picker.cpp
+msgid "Raw"
+msgstr "Ωμό"
+
+#: editor/inspector_dock.cpp
+#, fuzzy
+msgid "Capitalized"
+msgstr "Κεφαλαιοποίηση"
+
+#: editor/inspector_dock.cpp
+#, fuzzy
+msgid "Localized"
+msgstr "ΠεÏιοχή"
+
+#: editor/inspector_dock.cpp
+msgid "Localization not available for current language."
+msgstr ""
+
+#: editor/inspector_dock.cpp
+#, fuzzy
msgid "Copy Properties"
msgstr "Ιδιότητες"
@@ -8003,18 +8514,26 @@ msgid "License (Z-A)"
msgstr "Άδεια (Z-A)"
#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgctxt "Pagination"
msgid "First"
msgstr "ΠÏώτο"
-#: editor/plugins/asset_library_editor_plugin.cpp scene/gui/control.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgctxt "Pagination"
msgid "Previous"
msgstr "ΠÏοηγοÏμενο"
-#: editor/plugins/asset_library_editor_plugin.cpp scene/gui/control.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgctxt "Pagination"
msgid "Next"
msgstr "Επόμενο"
#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgctxt "Pagination"
msgid "Last"
msgstr "Τελευταίο"
@@ -8272,19 +8791,19 @@ msgstr ""
"Όταν ενεÏγό, η μετακίνηση των κόμβων Control αλλάζει τις άγκυÏες, αντί για "
"τα πεÏιθώÏια τους."
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Top Left"
msgstr "Πάνω ΑÏιστεÏά"
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Top Right"
msgstr "Πάνω Δεξιά"
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Bottom Right"
msgstr "Κάτω Δεξιά"
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Bottom Left"
msgstr "Κάτω ΑÏιστεÏά"
@@ -9016,6 +9535,19 @@ msgstr "ΠÏοετοιμασία διεÏεÏνησης GI"
msgid "Gradient Edited"
msgstr "ΕπεξεÏγασία Διαβάθμισης"
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+msgid "Swap GradientTexture2D Fill Points"
+msgstr ""
+
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+msgid "Swap Gradient Fill Points"
+msgstr ""
+
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+#, fuzzy
+msgid "Toggle Grid Snap"
+msgstr "Εναλλαγή λειτουÏγίας"
+
#: editor/plugins/item_list_editor_plugin.cpp
msgid "Item %d"
msgstr "Στοιχείο %d"
@@ -9252,8 +9784,9 @@ msgstr ""
"Ανανέωση από υπαÏκτό δέντÏο; :\n"
"%s"
-#: editor/plugins/mesh_library_editor_plugin.cpp modules/gridmap/grid_map.cpp
-msgid "Mesh Library"
+#: editor/plugins/mesh_library_editor_plugin.cpp
+#, fuzzy
+msgid "MeshLibrary"
msgstr "Βιβλιοθήκη Πλεγμάτων"
#: editor/plugins/mesh_library_editor_plugin.cpp
@@ -10268,8 +10801,8 @@ msgstr "ΣÏνδεση σε μέθοδο:"
msgid "Source"
msgstr "Πηγή"
-#: editor/plugins/script_text_editor.cpp scene/3d/interpolated_camera.cpp
-#: scene/animation/skeleton_ik.cpp
+#: editor/plugins/script_text_editor.cpp platform/uwp/export/export.cpp
+#: scene/3d/interpolated_camera.cpp scene/animation/skeleton_ik.cpp
msgid "Target"
msgstr "Στόχος"
@@ -11280,7 +11813,9 @@ msgstr "ΤαχÏτητα:"
#: editor/plugins/sprite_frames_editor_plugin.cpp
#: modules/gltf/gltf_animation.cpp modules/minimp3/audio_stream_mp3.cpp
-#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp scene/2d/path_2d.cpp
+#: modules/minimp3/resource_importer_mp3.cpp
+#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp
+#: modules/stb_vorbis/resource_importer_ogg_vorbis.cpp scene/2d/path_2d.cpp
#: scene/3d/path.cpp scene/resources/animation.cpp scene/resources/material.cpp
msgid "Loop"
msgstr "Επανάληψη"
@@ -12231,8 +12766,9 @@ msgstr "Μάσκα Bit"
msgid "Priority"
msgstr "ΠÏοτεÏαιότητα"
-#: editor/plugins/tile_set_editor_plugin.cpp main/main.cpp scene/gui/button.cpp
-#: scene/gui/item_list.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp main/main.cpp
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#: scene/gui/button.cpp scene/gui/item_list.cpp
msgid "Icon"
msgstr "Εικονίδιο"
@@ -13638,10 +14174,6 @@ msgstr ""
"εξαγωγής σας."
#: editor/project_export.cpp
-msgid "Release"
-msgstr "Διανομή"
-
-#: editor/project_export.cpp
msgid "Exporting All"
msgstr "Εξαγωγή Όλων"
@@ -15531,6 +16063,7 @@ msgid "Change AudioStreamPlayer3D Emission Angle"
msgstr "Αλλαγή γωνίας εκπομπής του AudioStreamPlayer3D"
#: editor/spatial_editor_gizmos.cpp modules/gltf/gltf_node.cpp
+#: platform/osx/export/export.cpp
msgid "Camera"
msgstr ""
@@ -15818,7 +16351,8 @@ msgstr ""
msgid "Use Nvidia Rect Flicker Workaround"
msgstr ""
-#: main/main.cpp platform/uwp/os_uwp.cpp
+#: main/main.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp platform/uwp/os_uwp.cpp
#, fuzzy
msgid "Display"
msgstr "Εμφάνιση όλων"
@@ -15879,19 +16413,6 @@ msgstr ""
msgid "Allowed"
msgstr ""
-#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp scene/2d/camera_2d.cpp
-#: scene/2d/light_2d.cpp scene/2d/navigation_polygon.cpp
-#: scene/2d/ray_cast_2d.cpp scene/2d/sprite.cpp scene/2d/y_sort.cpp
-#: scene/3d/audio_stream_player_3d.cpp scene/3d/baked_lightmap.cpp
-#: scene/3d/interpolated_camera.cpp scene/3d/light.cpp
-#: scene/3d/navigation_mesh_instance.cpp scene/3d/ray_cast.cpp
-#: scene/3d/sprite_3d.cpp scene/gui/graph_edit.cpp
-#: scene/gui/rich_text_label.cpp scene/resources/curve.cpp
-#: scene/resources/environment.cpp
-#, fuzzy
-msgid "Enabled"
-msgstr "ΕνεÏγοποίηση"
-
#: main/main.cpp
msgid "Intended Usage"
msgstr ""
@@ -15923,13 +16444,14 @@ msgstr ""
msgid "Handheld"
msgstr ""
-#: main/main.cpp
+#: main/main.cpp platform/javascript/export/export.cpp
+#: platform/uwp/export/export.cpp
#, fuzzy
msgid "Orientation"
msgstr "Άνοιγμα ΤεκμηÏίωσης"
#: main/main.cpp scene/gui/scroll_container.cpp scene/gui/text_edit.cpp
-#: scene/main/scene_tree.cpp
+#: scene/main/scene_tree.cpp scene/register_scene_types.cpp
#, fuzzy
msgid "Common"
msgstr "Κοινότητα"
@@ -15972,7 +16494,7 @@ msgstr ""
#: main/main.cpp
#, fuzzy
-msgid "Frame Delay (msec)"
+msgid "Frame Delay Msec"
msgstr "ΚαÏέ Επιλογής"
#: main/main.cpp
@@ -16100,11 +16622,6 @@ msgstr ""
msgid "Tooltip Position Offset"
msgstr "Μετατόπιση ΠεÏιστÏοφής:"
-#: main/main.cpp modules/mono/editor/csharp_project.cpp
-#: modules/mono/mono_gd/gd_mono.cpp
-msgid "Mono"
-msgstr ""
-
#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp
#, fuzzy
msgid "Debugger Agent"
@@ -16686,7 +17203,7 @@ msgstr "ΧÏώμα"
msgid "Intensity"
msgstr ""
-#: modules/gltf/gltf_light.cpp scene/2d/light_2d.cpp
+#: modules/gltf/gltf_light.cpp scene/2d/light_2d.cpp scene/3d/light.cpp
#, fuzzy
msgid "Range"
msgstr "Αλλαγή"
@@ -16833,11 +17350,6 @@ msgstr "Φως"
msgid "Use Named Skin Binds"
msgstr ""
-#: modules/gltf/gltf_state.cpp scene/3d/physics_joint.cpp
-#, fuzzy
-msgid "Nodes"
-msgstr "Κόμβος"
-
#: modules/gltf/gltf_state.cpp
#, fuzzy
msgid "Buffer Views"
@@ -16849,16 +17361,6 @@ msgstr ""
#: modules/gltf/gltf_state.cpp
#, fuzzy
-msgid "Meshes"
-msgstr "Πλέγμα..."
-
-#: modules/gltf/gltf_state.cpp
-#, fuzzy
-msgid "Materials"
-msgstr "Αλλαγές υλικοÏ"
-
-#: modules/gltf/gltf_state.cpp
-#, fuzzy
msgid "Scene Name"
msgstr "ΔιαδÏομή σκηνής:"
@@ -16874,15 +17376,11 @@ msgstr "Όνομα ÏÎ¹Î¶Î¹ÎºÎ¿Ï ÎºÏŒÎ¼Î²Î¿Ï…"
msgid "Textures"
msgstr "Δυνατότητες"
-#: modules/gltf/gltf_state.cpp
+#: modules/gltf/gltf_state.cpp platform/uwp/export/export.cpp
msgid "Images"
msgstr ""
#: modules/gltf/gltf_state.cpp
-msgid "Skins"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp
msgid "Cameras"
msgstr ""
@@ -16917,11 +17415,15 @@ msgid "Src Image"
msgstr "Εμφάνιση Οστών"
#: modules/gridmap/grid_map.cpp
+msgid "Mesh Library"
+msgstr "Βιβλιοθήκη Πλεγμάτων"
+
+#: modules/gridmap/grid_map.cpp
#, fuzzy
msgid "Physics Material"
msgstr "KαÏέ φυσικής %"
-#: modules/gridmap/grid_map.cpp
+#: modules/gridmap/grid_map.cpp scene/3d/visual_instance.cpp
#, fuzzy
msgid "Use In Baked Light"
msgstr "ΠÏοετοιμασία Lightmaps"
@@ -16953,6 +17455,7 @@ msgstr "ΚέντÏο"
#: modules/gridmap/grid_map.cpp scene/2d/collision_object_2d.cpp
#: scene/2d/tile_map.cpp scene/3d/collision_object.cpp scene/3d/soft_body.cpp
+#: scene/resources/material.cpp
msgid "Mask"
msgstr ""
@@ -17140,7 +17643,9 @@ msgid "Ultra Quality Ray Count"
msgstr ""
#: modules/minimp3/audio_stream_mp3.cpp
+#: modules/minimp3/resource_importer_mp3.cpp
#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp
+#: modules/stb_vorbis/resource_importer_ogg_vorbis.cpp
#, fuzzy
msgid "Loop Offset"
msgstr "Μετατόπιση:"
@@ -18270,6 +18775,192 @@ msgid "The package must have at least one '.' separator."
msgstr "Το πακέτο Ï€Ïέπει να έχει τουλάχιστον έναν '.' διαχωÏιστή."
#: platform/android/export/export_plugin.cpp
+msgid "Use Custom Build"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Export Format"
+msgstr "ΔιαδÏομή Εξαγωγής"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Keystore"
+msgstr "Αποσφαλματωτής"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Debug User"
+msgstr "Αποσφαλματωτής"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+msgid "Debug Password"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Release User"
+msgstr "Διανομή"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Release Password"
+msgstr "Διανομή"
+
+#: platform/android/export/export_plugin.cpp
+msgid "One Click Deploy"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Clear Previous Install"
+msgstr "ΕπιθεώÏηση του Ï€ÏοηγοÏμενου στιγμιοτÏπου"
+
+#: platform/android/export/export_plugin.cpp scene/resources/shader.cpp
+msgid "Code"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Min SDK"
+msgstr "Μέγεθος πεÏιγÏάμματος:"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Target SDK"
+msgstr "Στόχος"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Package"
+msgstr "ΠακετάÏισμα"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Unique Name"
+msgstr "Όνομα κόμβου:"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Signed"
+msgstr "Σήμα"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Classify As Game"
+msgstr "Όνομα Κλάσης:"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Retain Data On Uninstall"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Exclude From Recents"
+msgstr "ΔιαγÏαφή Κόμβων"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Graphics"
+msgstr "Μετατόπιση Πλέγματος:"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "OpenGL Debug"
+msgstr "Άνοιγμα"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "XR Features"
+msgstr "Δυνατότητες"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "XR Mode"
+msgstr "ΛειτουÏγία Μετακίνησης ΚάμεÏας"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Hand Tracking"
+msgstr "ΠακετάÏισμα"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Hand Tracking Frequency"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Passthrough"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Immersive Mode"
+msgstr "ΛειτουÏγία ΠÏοτεÏαιότητας"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Support Small"
+msgstr "ΥποστήÏιξη"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Support Normal"
+msgstr "ΥποστήÏιξη"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Support Large"
+msgstr "ΥποστήÏιξη"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Support Xlarge"
+msgstr "ΥποστήÏιξη"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "User Data Backup"
+msgstr "ΠεÏιβάλλον χÏήστη"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Allow"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Command Line"
+msgstr "Κοινότητα"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Extra Args"
+msgstr "Επιπλέον παÏάμετÏοι κλήσης:"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "APK Expansion"
+msgstr "ΟÏισμός έκφÏασης"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Salt"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Public Key"
+msgstr "ΑναπαÏαγωγή Κλειδιών"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Permissions"
+msgstr "Μάσκα εκπομπής"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Custom Permissions"
+msgstr "ΑναπαÏαγωγή Ï€ÏοσαÏμοσμένης σκηνής"
+
+#: platform/android/export/export_plugin.cpp
msgid "Select device from the list"
msgstr "Επιλέξτε συσκευή από την λίστα"
@@ -18605,6 +19296,177 @@ msgid "The character '%s' is not allowed in Identifier."
msgstr "Ο χαÏακτήÏας «%s» είναι άκυÏος σε αναγνωÏιστικό."
#: platform/iphone/export/export.cpp
+msgid "App Store Team ID"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Provisioning Profile UUID Debug"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Code Sign Identity Debug"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Export Method Debug"
+msgstr "Εξαγωγή με αποσφαλμάτωση"
+
+#: platform/iphone/export/export.cpp
+msgid "Provisioning Profile UUID Release"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Code Sign Identity Release"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Export Method Release"
+msgstr "ΛειτουÏγία εξαγωγής:"
+
+#: platform/iphone/export/export.cpp
+msgid "Targeted Device Family"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Info"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Identifier"
+msgstr "ΆκυÏο ΑναγνωÏιστικό:"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Signature"
+msgstr "Σήμα"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Short Version"
+msgstr "Έκδοση:"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Copyright"
+msgstr "Πάνω Δεξιά"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Capabilities"
+msgstr "Ιδιότητες"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Access Wi-Fi"
+msgstr "Επιτυχία!"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Push Notifications"
+msgstr "Τυχαία πεÏιστÏοφή:"
+
+#: platform/iphone/export/export.cpp scene/3d/baked_lightmap.cpp
+#, fuzzy
+msgid "User Data"
+msgstr "ΠεÏιβάλλον χÏήστη"
+
+#: platform/iphone/export/export.cpp
+msgid "Accessible From Files App"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Accessible From Itunes Sharing"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Privacy"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Camera Usage Description"
+msgstr "ΠεÏιγÏαφή"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Microphone Usage Description"
+msgstr "ΠεÏιγÏαφές ιδιοτήτων"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Photolibrary Usage Description"
+msgstr "ΠεÏιγÏαφές ιδιοτήτων"
+
+#: platform/iphone/export/export.cpp
+msgid "iPhone 120 X 120"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPhone 180 X 180"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 76 X 76"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 152 X 152"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 167 X 167"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "App Store 1024 X 1024"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Spotlight 40 X 40"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Spotlight 80 X 80"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Storyboard"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Use Launch Screen Storyboard"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Image Scale Mode"
+msgstr "ΛειτουÏγία Κλιμάκωσης"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Custom Image @2x"
+msgstr "Αποκοπή κόμβων"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Custom Image @3x"
+msgstr "Αποκοπή κόμβων"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Use Custom BG Color"
+msgstr "Αποκοπή κόμβων"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Custom BG Color"
+msgstr "Αποκοπή κόμβων"
+
+#: platform/iphone/export/export.cpp
msgid "App Store Team ID not specified - cannot configure the project."
msgstr ""
"Δεν έχει καθοÏιστεί αναγνωÏιστικό ομάδας (Team ID) του App Store - αδυναμία "
@@ -18645,6 +19507,80 @@ msgstr "Απέτυχε η εγγÏαφή σε αÏχείο:"
#: platform/javascript/export/export.cpp
#, fuzzy
+msgid "Variant"
+msgstr "ΔιαχωÏισμός:"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Export Type"
+msgstr "Εξαγωγή"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "VRAM Texture Compression"
+msgstr "ΟÏισμός έκφÏασης"
+
+#: platform/javascript/export/export.cpp
+msgid "For Desktop"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "For Mobile"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Html"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Export Icon"
+msgstr "Ανάπτυξη Όλων"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Custom Html Shell"
+msgstr "Αποκοπή κόμβων"
+
+#: platform/javascript/export/export.cpp
+msgid "Head Include"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Canvas Resize Policy"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Focus Canvas On Start"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Experimental Virtual Keyboard"
+msgstr "ΦιλτÏάÏισμα σημάτων"
+
+#: platform/javascript/export/export.cpp
+msgid "Progressive Web App"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Offline Page"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 144 X 144"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 180 X 180"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 512 X 512"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
msgid "Could not read HTML shell:"
msgstr "Σφάλμα κατά την ανάγνωση Ï€ÏοσαÏμοσμένου κελÏφους HTML:"
@@ -18760,6 +19696,201 @@ msgid "Unknown object type."
msgstr ""
#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "App Category"
+msgstr "ΚατηγοÏία:"
+
+#: platform/osx/export/export.cpp
+msgid "High Res"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Location Usage Description"
+msgstr "ΠεÏιγÏαφή"
+
+#: platform/osx/export/export.cpp
+msgid "Address Book Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Calendar Usage Description"
+msgstr "ΠεÏιγÏαφή"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Photos Library Usage Description"
+msgstr "ΠεÏιγÏαφές ιδιοτήτων"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Desktop Folder Usage Description"
+msgstr "ΠεÏιγÏαφές μεθόδων"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Documents Folder Usage Description"
+msgstr "ΠεÏιγÏαφές μεθόδων"
+
+#: platform/osx/export/export.cpp
+msgid "Downloads Folder Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Network Volumes Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Removable Volumes Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#, fuzzy
+msgid "Codesign"
+msgstr "Κόμβος"
+
+#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Identity"
+msgstr "Στοιχειοθέτηση ΑÏιστεÏά"
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#, fuzzy
+msgid "Timestamp"
+msgstr "ΧÏόνος"
+
+#: platform/osx/export/export.cpp
+msgid "Hardened Runtime"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Replace Existing Signature"
+msgstr "Αντικατάσταση όλων"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Entitlements"
+msgstr "ΜαÏαφέτια"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Custom File"
+msgstr "Αποκοπή κόμβων"
+
+#: platform/osx/export/export.cpp
+msgid "Allow JIT Code Execution"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Allow Unsigned Executable Memory"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Allow Dyld Environment Variables"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Disable Library Validation"
+msgstr "ΑπενεÏγοποιημένο Κουμπί"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Audio Input"
+msgstr "ΠÏοσθήκη εισόδου"
+
+#: platform/osx/export/export.cpp
+msgid "Address Book"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Calendars"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Photos Library"
+msgstr "Εξαγωγή βιβλιοθήκης"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Apple Events"
+msgstr "ΠÏοσθήκη συμβάντος"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Debugging"
+msgstr "Αποσφαλμάτωση"
+
+#: platform/osx/export/export.cpp
+msgid "App Sandbox"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Network Server"
+msgstr "ΠÏόγÏαμμα ΔημιουÏγίας Î”Î¹ÎºÏ„Ï…Î±ÎºÎ¿Ï Î Ïοφίλ"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Network Client"
+msgstr "ΠÏόγÏαμμα ΔημιουÏγίας Î”Î¹ÎºÏ„Ï…Î±ÎºÎ¿Ï Î Ïοφίλ"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Device Usb"
+msgstr "Συσκευή"
+
+#: platform/osx/export/export.cpp
+msgid "Device Bluetooth"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Files Downloads"
+msgstr "Λήψη"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Files Pictures"
+msgstr "Δυνατότητες"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Files Music"
+msgstr "ΑÏχείο"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Files Movies"
+msgstr "ΦιλτÏάÏισμα πλακιδίων"
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#, fuzzy
+msgid "Custom Options"
+msgstr "Επιλογές διαÏλου"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Notarization"
+msgstr "Τοπική Ï€ÏοσαÏμογή"
+
+#: platform/osx/export/export.cpp
+msgid "Apple ID Name"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Apple ID Password"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Apple Team ID"
+msgstr ""
+
+#: platform/osx/export/export.cpp
msgid ""
"Note: The notarization process generally takes less than an hour. When the "
"process is completed, you'll receive an email."
@@ -18953,6 +20084,136 @@ msgid "Force Builtin Codesign"
msgstr ""
#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Architecture"
+msgstr "ΠÏοσθέστε ένα πεδίο αÏχιτεκτονικής"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Display Name"
+msgstr "Εμφάνιση όλων"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Short Name"
+msgstr "Όνομα Δέσμης ΕνεÏγειών:"
+
+#: platform/uwp/export/export.cpp
+msgid "Publisher"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Publisher Display Name"
+msgstr "ΆκυÏο όνομα εμφάνισης εκδότη πακέτου."
+
+#: platform/uwp/export/export.cpp
+msgid "Product Guid"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Publisher Guid"
+msgstr "ΕκκαθάÏιση Οδηγών"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Signing"
+msgstr "Σήμα"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Certificate"
+msgstr "ΚοÏυφές"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Algorithm"
+msgstr "Αποσφαλματωτής"
+
+#: platform/uwp/export/export.cpp
+msgid "Major"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Minor"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Build"
+msgstr "ΛειτουÏγία ΧάÏακα"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Revision"
+msgstr "ΟÏισμός έκφÏασης"
+
+#: platform/uwp/export/export.cpp
+msgid "Landscape"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Portrait"
+msgstr "ΑναστÏοφή ΟÏιζόντια"
+
+#: platform/uwp/export/export.cpp
+msgid "Landscape Flipped"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Portrait Flipped"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Store Logo"
+msgstr "ΛειτουÏγία Κλιμάκωσης"
+
+#: platform/uwp/export/export.cpp
+msgid "Square 44 X 44 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 71 X 71 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 150 X 150 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 310 X 310 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Wide 310 X 150 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Splash Screen"
+msgstr "Κλήσεις σχεδίασης"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Tiles"
+msgstr "ΑÏχείο"
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Square 150 X 150"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Wide 310 X 150"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Square 310 X 310"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
msgid "Invalid package short name."
msgstr "ΆκυÏο σÏντομο όνομα πακέτου."
@@ -19018,15 +20279,53 @@ msgid "Debug Certificate"
msgstr ""
#: platform/uwp/export/export.cpp
-msgid "Debug Password"
+#, fuzzy
+msgid "Debug Algorithm"
+msgstr "Αποσφαλματωτής"
+
+#: platform/windows/export/export.cpp
+msgid "Identity Type"
msgstr ""
-#: platform/uwp/export/export.cpp
+#: platform/windows/export/export.cpp
+msgid "Timestamp Server URL"
+msgstr ""
+
+#: platform/windows/export/export.cpp
#, fuzzy
-msgid "Debug Algorithm"
+msgid "Digest Algorithm"
msgstr "Αποσφαλματωτής"
#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "File Version"
+msgstr "Έκδοση:"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Product Version"
+msgstr "ΆκυÏο GUID Ï€Ïοϊόντος."
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Company Name"
+msgstr "Όνομα κόμβου:"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Product Name"
+msgstr "Όνομα έÏγου:"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "File Description"
+msgstr "ΠεÏιγÏαφή"
+
+#: platform/windows/export/export.cpp
+msgid "Trademarks"
+msgstr ""
+
+#: platform/windows/export/export.cpp
msgid ""
"The rcedit tool must be configured in the Editor Settings (Export > Windows "
"> Rcedit) to change the icon or app information data."
@@ -19101,12 +20400,14 @@ msgstr "ΑναπαÏαγωγή"
msgid "Centered"
msgstr "ΚέντÏο"
-#: scene/2d/animated_sprite.cpp scene/2d/camera_2d.cpp scene/2d/light_2d.cpp
+#: scene/2d/animated_sprite.cpp scene/2d/camera_2d.cpp
+#: scene/2d/cpu_particles_2d.cpp scene/2d/light_2d.cpp
#: scene/2d/parallax_background.cpp scene/2d/parallax_layer.cpp
#: scene/2d/path_2d.cpp scene/2d/polygon_2d.cpp scene/2d/sprite.cpp
-#: scene/3d/path.cpp scene/3d/physics_body.cpp scene/3d/sprite_3d.cpp
-#: scene/gui/graph_node.cpp scene/gui/rich_text_effect.cpp
-#: scene/main/canvas_layer.cpp scene/resources/material.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/path.cpp scene/3d/physics_body.cpp
+#: scene/3d/sprite_3d.cpp scene/gui/graph_node.cpp
+#: scene/gui/rich_text_effect.cpp scene/main/canvas_layer.cpp
+#: scene/resources/material.cpp scene/resources/particles_material.cpp
#: scene/resources/style_box.cpp
#, fuzzy
msgid "Offset"
@@ -19181,11 +20482,6 @@ msgstr "ΠÏοσθήκη διαÏλου ήχου"
msgid "Override"
msgstr "ΠαÏακάμπτει"
-#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
-#: scene/audio/audio_stream_player.cpp scene/gui/video_player.cpp
-msgid "Stream"
-msgstr ""
-
#: scene/2d/audio_stream_player_2d.cpp scene/audio/audio_stream_player.cpp
#: scene/gui/video_player.cpp servers/audio/effects/audio_effect_amplify.cpp
#, fuzzy
@@ -19212,13 +20508,13 @@ msgid "Stream Paused"
msgstr ""
#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
-#: scene/3d/reflection_probe.cpp scene/3d/visual_instance.cpp
-#: scene/resources/material.cpp
+#: scene/3d/light.cpp scene/3d/reflection_probe.cpp
+#: scene/3d/visual_instance.cpp scene/resources/material.cpp
#, fuzzy
msgid "Max Distance"
msgstr "Επιλογή απόστασης:"
-#: scene/2d/audio_stream_player_2d.cpp
+#: scene/2d/audio_stream_player_2d.cpp scene/3d/light.cpp
#, fuzzy
msgid "Attenuation"
msgstr "Κίνηση"
@@ -19274,6 +20570,24 @@ msgstr "ΛειτουÏγία Μετακίνησης"
msgid "Limit"
msgstr ""
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/style_box.cpp
+#, fuzzy
+msgid "Left"
+msgstr "Πάνω ΑÏιστεÏά"
+
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/style_box.cpp
+#, fuzzy
+msgid "Right"
+msgstr "Φως"
+
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/dynamic_font.cpp scene/resources/style_box.cpp
+#, fuzzy
+msgid "Bottom"
+msgstr "Κάτω ΑÏιστεÏά"
+
#: scene/2d/camera_2d.cpp
#, fuzzy
msgid "Smoothed"
@@ -19514,13 +20828,6 @@ msgstr ""
msgid "Emitting"
msgstr "Ρυθμίσεις:"
-#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp scene/3d/area.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
-#: scene/resources/environment.cpp
-#, fuzzy
-msgid "Amount"
-msgstr "Ποσότητα:"
-
#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp
#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
msgid "Lifetime"
@@ -19585,18 +20892,13 @@ msgstr ""
#: scene/2d/mesh_instance_2d.cpp scene/2d/multimesh_instance_2d.cpp
#: scene/2d/particles_2d.cpp scene/2d/polygon_2d.cpp scene/2d/sprite.cpp
#: scene/3d/sprite_3d.cpp scene/gui/nine_patch_rect.cpp
-#: scene/gui/texture_rect.cpp scene/resources/sky.cpp
-#: scene/resources/style_box.cpp scene/resources/visual_shader_nodes.cpp
+#: scene/gui/texture_rect.cpp scene/resources/material.cpp
+#: scene/resources/sky.cpp scene/resources/style_box.cpp
+#: scene/resources/visual_shader_nodes.cpp
#, fuzzy
msgid "Texture"
msgstr "Κείμενο"
-#: scene/2d/cpu_particles_2d.cpp scene/2d/mesh_instance_2d.cpp
-#: scene/2d/multimesh_instance_2d.cpp scene/2d/particles_2d.cpp
-#: scene/2d/sprite.cpp scene/resources/style_box.cpp
-msgid "Normal Map"
-msgstr ""
-
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
#, fuzzy
@@ -19620,10 +20922,10 @@ msgid "Normals"
msgstr "ΜοÏφή"
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/3d/sprite_3d.cpp scene/resources/material.cpp
-#: scene/resources/particles_material.cpp scene/resources/texture.cpp
-msgid "Flags"
-msgstr ""
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Align Y"
+msgstr "Ανάθεση"
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
@@ -19644,6 +20946,12 @@ msgid "Initial Velocity"
msgstr "ΑÏχικοποιήστε"
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Velocity Random"
+msgstr "ΑÏχικοποιήστε"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp servers/physics_2d_server.cpp
#: servers/physics_server.cpp
msgid "Angular Velocity"
@@ -19651,6 +20959,12 @@ msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Velocity Curve"
+msgstr "ΑÏχικοποιήστε"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
msgid "Orbit Velocity"
msgstr ""
@@ -19662,6 +20976,23 @@ msgstr "ΓÏαμμική"
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Accel"
+msgstr "Επιτυχία!"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Accel Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Accel Curve"
+msgstr "ΔιαίÏεση ΚαμπÏλης"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
msgid "Radial Accel"
msgstr ""
@@ -19671,19 +21002,55 @@ msgid "Tangential Accel"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/2d/joints_2d.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/vehicle_body.cpp
-#: scene/resources/particles_material.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/physics_joint.cpp
+#: scene/3d/vehicle_body.cpp scene/resources/particles_material.cpp
#: servers/audio/effects/audio_effect_reverb.cpp
msgid "Damping"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+msgid "Damping Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Damping Curve"
+msgstr "ΔιαίÏεση ΚαμπÏλης"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp scene/3d/light.cpp
+#: scene/resources/particles_material.cpp
msgid "Angle"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+msgid "Angle Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Angle Curve"
+msgstr "κλείσιμο καμπÏλης"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#, fuzzy
+msgid "Scale Amount"
+msgstr "Ποσότητα:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+msgid "Scale Amount Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#, fuzzy
+msgid "Scale Amount Curve"
+msgstr "Μεγέθυνση από τον δείκτη"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
#, fuzzy
msgid "Color Ramp"
msgstr "ΧÏώμα"
@@ -19699,6 +21066,48 @@ msgstr ""
msgid "Hue Variation"
msgstr "ΔιαχωÏισμός:"
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Variation"
+msgstr "ΔιαχωÏισμός:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Variation Random"
+msgstr "ΔιαχωÏισμός:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Variation Curve"
+msgstr "ΔιαχωÏισμός:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Speed Random"
+msgstr "Κλιμάκωση:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Speed Curve"
+msgstr "ΔιαίÏεση ΚαμπÏλης"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Offset Random"
+msgstr "Μετατόπιση:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Offset Curve"
+msgstr "κλείσιμο καμπÏλης"
+
#: scene/2d/joints_2d.cpp
msgid "Node A and Node B must be PhysicsBody2Ds"
msgstr ""
@@ -19730,6 +21139,7 @@ msgid "Node B"
msgstr "Κόμβος"
#: scene/2d/joints_2d.cpp scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp
+#: scene/3d/light.cpp scene/3d/physics_joint.cpp
#: scene/resources/environment.cpp
msgid "Bias"
msgstr ""
@@ -19739,7 +21149,7 @@ msgstr ""
msgid "Disable Collision"
msgstr "ΑπενεÏγοποιημένο Κουμπί"
-#: scene/2d/joints_2d.cpp
+#: scene/2d/joints_2d.cpp scene/3d/physics_joint.cpp
msgid "Softness"
msgstr ""
@@ -19757,7 +21167,7 @@ msgstr "ΑÏχικοποιήστε"
msgid "Rest Length"
msgstr ""
-#: scene/2d/joints_2d.cpp scene/3d/vehicle_body.cpp
+#: scene/2d/joints_2d.cpp scene/3d/physics_joint.cpp scene/3d/vehicle_body.cpp
msgid "Stiffness"
msgstr ""
@@ -19778,7 +21188,7 @@ msgid "Texture Scale"
msgstr "TextureRegion"
#: scene/2d/light_2d.cpp scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp
-#: scene/resources/environment.cpp scene/resources/sky.cpp
+#: scene/3d/light.cpp scene/resources/environment.cpp scene/resources/sky.cpp
msgid "Energy"
msgstr ""
@@ -19819,12 +21229,6 @@ msgstr "Πίσω όψη"
msgid "Gradient Length"
msgstr "ΕπεξεÏγασία Διαβάθμισης"
-#: scene/2d/light_2d.cpp scene/gui/control.cpp
-#: scene/resources/navigation_mesh.cpp
-#, fuzzy
-msgid "Filter"
-msgstr "ΦίλτÏα:"
-
#: scene/2d/light_2d.cpp
#, fuzzy
msgid "Filter Smooth"
@@ -20264,11 +21668,6 @@ msgid "Applied Forces"
msgstr ""
#: scene/2d/physics_body_2d.cpp
-#, fuzzy
-msgid "Force"
-msgstr "Πηγαίο πλέγμα:"
-
-#: scene/2d/physics_body_2d.cpp
msgid "Torque"
msgstr ""
@@ -20284,7 +21683,7 @@ msgstr "KαÏέ φυσικής %"
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
#, fuzzy
-msgid "Moving platform"
+msgid "Moving Platform"
msgstr "ΠλατφόÏμα"
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
@@ -20293,7 +21692,7 @@ msgstr ""
#: scene/2d/physics_body_2d.cpp scene/2d/touch_screen_button.cpp
#: scene/3d/physics_body.cpp scene/gui/texture_button.cpp
-#: scene/resources/line_shape_2d.cpp
+#: scene/resources/line_shape_2d.cpp scene/resources/material.cpp
#, fuzzy
msgid "Normal"
msgstr "ΜοÏφή"
@@ -20543,6 +21942,34 @@ msgstr ""
"Το VisibilityEnabler2D δουλεÏει καλÏτεÏα όταν η Ïίζα της Ï„Ïέχουσας σκηνής "
"είναι ο άμεσος γονέας του."
+#: scene/2d/visibility_notifier_2d.cpp scene/3d/visibility_notifier.cpp
+#, fuzzy
+msgid "Pause Animations"
+msgstr "Επικόλληση κίνησης"
+
+#: scene/2d/visibility_notifier_2d.cpp scene/3d/visibility_notifier.cpp
+msgid "Freeze Bodies"
+msgstr ""
+
+#: scene/2d/visibility_notifier_2d.cpp
+#, fuzzy
+msgid "Pause Particles"
+msgstr "Σωματίδια"
+
+#: scene/2d/visibility_notifier_2d.cpp
+#, fuzzy
+msgid "Pause Animated Sprites"
+msgstr "Επικόλληση κίνησης"
+
+#: scene/2d/visibility_notifier_2d.cpp
+#, fuzzy
+msgid "Process Parent"
+msgstr "ΕπεξεÏγασία ΠÏοτεÏαιότητας"
+
+#: scene/2d/visibility_notifier_2d.cpp
+msgid "Physics Process Parent"
+msgstr ""
+
#: scene/3d/area.cpp
msgid "Reverb Bus"
msgstr ""
@@ -20643,6 +22070,7 @@ msgid "Attenuation Filter"
msgstr ""
#: scene/3d/audio_stream_player_3d.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
#: servers/audio/effects/audio_effect_filter.cpp
msgid "Cutoff Hz"
msgstr ""
@@ -20687,11 +22115,6 @@ msgid "Octree"
msgstr "ΥπόδεντÏο"
#: scene/3d/baked_lightmap.cpp
-#, fuzzy
-msgid "User Data"
-msgstr "ΠεÏιβάλλον χÏήστη"
-
-#: scene/3d/baked_lightmap.cpp
msgid "Finding meshes and lights"
msgstr ""
@@ -20971,6 +22394,16 @@ msgid "Ring Axis"
msgstr "ΠÏοειδοποιήσεις"
#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Rotate Y"
+msgstr "ΛειτουÏγία ΠεÏιστÏοφής"
+
+#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Disable Z"
+msgstr "ΑπενεÏγοποιημένο Στοιχείο"
+
+#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
msgid "Flatness"
msgstr ""
@@ -21011,16 +22444,11 @@ msgstr "Δυναμική Βιβλιοθήκη"
msgid "Dynamic Range"
msgstr "Δυναμική Βιβλιοθήκη"
-#: scene/3d/gi_probe.cpp
+#: scene/3d/gi_probe.cpp scene/3d/light.cpp
msgid "Normal Bias"
msgstr ""
#: scene/3d/gi_probe.cpp
-#, fuzzy
-msgid "Compress"
-msgstr "Συστατικά"
-
-#: scene/3d/gi_probe.cpp
msgid "Plotting Meshes"
msgstr "Τοποθέτηση πλεγμάτων"
@@ -21049,16 +22477,31 @@ msgstr ""
#: scene/3d/light.cpp
#, fuzzy
+msgid "Indirect Energy"
+msgstr "ΧÏώματα εκπομπής"
+
+#: scene/3d/light.cpp
+#, fuzzy
msgid "Negative"
msgstr "GDNative"
#: scene/3d/light.cpp
#, fuzzy
+msgid "Specular"
+msgstr "ΛειτουÏγία ΧάÏακα"
+
+#: scene/3d/light.cpp
+#, fuzzy
msgid "Bake Mode"
msgstr "ΛειτουÏγία Μάσκας Bit"
#: scene/3d/light.cpp
#, fuzzy
+msgid "Contact"
+msgstr "Επιλογή χÏώματος"
+
+#: scene/3d/light.cpp
+#, fuzzy
msgid "Reverse Cull Face"
msgstr "ΕπαναφοÏά Έντασης ΔιαÏλου"
@@ -21069,11 +22512,31 @@ msgstr "Κατευθήνσεις"
#: scene/3d/light.cpp
#, fuzzy
+msgid "Split 1"
+msgstr "ΔιαχωÏισμός διαδÏομής"
+
+#: scene/3d/light.cpp
+#, fuzzy
+msgid "Split 2"
+msgstr "ΔιαχωÏισμός διαδÏομής"
+
+#: scene/3d/light.cpp
+#, fuzzy
+msgid "Split 3"
+msgstr "ΔιαχωÏισμός διαδÏομής"
+
+#: scene/3d/light.cpp
+#, fuzzy
msgid "Blend Splits"
msgstr "ΧÏόνοι ανάμειξης:"
#: scene/3d/light.cpp
#, fuzzy
+msgid "Bias Split Scale"
+msgstr "ΧÏήση Κλιμακωτής ΠÏοσκόλλησης"
+
+#: scene/3d/light.cpp
+#, fuzzy
msgid "Depth Range"
msgstr "Βάθος"
@@ -21101,6 +22564,11 @@ msgstr ""
msgid "Spot"
msgstr ""
+#: scene/3d/light.cpp
+#, fuzzy
+msgid "Angle Attenuation"
+msgstr "Κίνηση"
+
#: scene/3d/mesh_instance.cpp
msgid "Software Skinning"
msgstr ""
@@ -21241,6 +22709,63 @@ msgstr "Άξονας"
#: scene/3d/physics_body.cpp
#, fuzzy
+msgid "Linear X"
+msgstr "ΓÏαμμική"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Linear Y"
+msgstr "ΓÏαμμική"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Linear Z"
+msgstr "ΓÏαμμική"
+
+#: scene/3d/physics_body.cpp
+msgid "Angular X"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Angular Y"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Angular Z"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Motion X"
+msgstr "ΕνέÏγεια"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Motion Y"
+msgstr "ΕνέÏγεια"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Motion Z"
+msgstr "ΕνέÏγεια"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Move Lock X"
+msgstr "Μετακίνηση Κόμβου"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Move Lock Y"
+msgstr "Μετακίνηση Κόμβου"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Move Lock Z"
+msgstr "Μετακίνηση Κόμβου"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
msgid "Body Offset"
msgstr "Μετατόπιση:"
@@ -21274,6 +22799,15 @@ msgid "Exclude Nodes"
msgstr "ΔιαγÏαφή Κόμβων"
#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Params"
+msgstr "Αλλαγη ΠαÏαμέτÏου"
+
+#: scene/3d/physics_joint.cpp
+msgid "Impulse Clamp"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit"
msgstr ""
@@ -21287,6 +22821,55 @@ msgstr "Κεφαλαία"
msgid "Lower"
msgstr "Πεζά"
+#: scene/3d/physics_joint.cpp scene/3d/vehicle_body.cpp
+#, fuzzy
+msgid "Relaxation"
+msgstr "ΔιαχωÏισμός:"
+
+#: scene/3d/physics_joint.cpp
+msgid "Motor"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Target Velocity"
+msgstr "ΑÏχικοποιήστε"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Max Impulse"
+msgstr "ΤαχÏτητα:"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit"
+msgstr "ΓÏαμμική"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Upper Distance"
+msgstr "Επιλογή απόστασης:"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Lower Distance"
+msgstr "Επιλογή απόστασης:"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Restitution"
+msgstr "ΠεÏιγÏαφή"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motion"
+msgstr "ΑÏχικοποιήστε"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Ortho"
+msgstr "ΑξονομετÏική"
+
#: scene/3d/physics_joint.cpp
#, fuzzy
msgid "Upper Angle"
@@ -21299,6 +22882,16 @@ msgstr "Πεζά"
#: scene/3d/physics_joint.cpp
#, fuzzy
+msgid "Angular Motion"
+msgstr "Κίνηση"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Angular Ortho"
+msgstr "Μέγιστο γωνιώδες σφάλμα:"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
msgid "Swing Span"
msgstr "Αποθήκευση σκηνής"
@@ -21307,17 +22900,99 @@ msgid "Twist Span"
msgstr ""
#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit X"
+msgstr "ΓÏαμμική"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motor X"
+msgstr "ΑÏχικοποιήστε"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Force Limit"
+msgstr "Κλήσεις σχεδίασης"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Spring X"
+msgstr "ΓÏαμμική"
+
+#: scene/3d/physics_joint.cpp
+msgid "Equilibrium Point"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit X"
msgstr ""
#: scene/3d/physics_joint.cpp
+msgid "Erp"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Motor X"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Spring X"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit Y"
+msgstr "ΓÏαμμική"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motor Y"
+msgstr "ΑÏχικοποιήστε"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Spring Y"
+msgstr "ΓÏαμμική"
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit Y"
msgstr ""
#: scene/3d/physics_joint.cpp
+msgid "Angular Motor Y"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Spring Y"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit Z"
+msgstr "ΓÏαμμική"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motor Z"
+msgstr "ΑÏχικοποιήστε"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Spring Z"
+msgstr "ΓÏαμμική"
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit Z"
msgstr ""
+#: scene/3d/physics_joint.cpp
+msgid "Angular Motor Z"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Spring Z"
+msgstr ""
+
#: scene/3d/portal.cpp
msgid "The RoomManager should not be a child or grandchild of a Portal."
msgstr ""
@@ -21437,7 +23112,7 @@ msgstr ""
msgid "Use Default Simplify"
msgstr ""
-#: scene/3d/room.cpp
+#: scene/3d/room.cpp scene/3d/room_manager.cpp
msgid "Room Simplify"
msgstr ""
@@ -21476,6 +23151,13 @@ msgstr ""
msgid "Main"
msgstr ""
+#: scene/3d/room_manager.cpp scene/animation/animation_player.cpp
+#: scene/animation/animation_tree.cpp scene/animation/animation_tree_player.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+#, fuzzy
+msgid "Active"
+msgstr "ΕνέÏγεια"
+
#: scene/3d/room_manager.cpp
msgid "Roomlist"
msgstr ""
@@ -21500,6 +23182,54 @@ msgid "Gameplay"
msgstr ""
#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Gameplay Monitor"
+msgstr "Κλειδί"
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Use Secondary PVS"
+msgstr "ΧÏήση Κλιμακωτής ΠÏοσκόλλησης"
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Merge Meshes"
+msgstr "Πλέγμα..."
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Show Margins"
+msgstr "ΠÏοβολή ΠÏοέλευσης"
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Debug Sprawl"
+msgstr "Αποσφαλμάτωση"
+
+#: scene/3d/room_manager.cpp
+msgid "Overlap Warning Threshold"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Preview Camera"
+msgstr "ΠÏοεπισκόπηση"
+
+#: scene/3d/room_manager.cpp
+msgid "Portal Depth Limit"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Default Portal Margin"
+msgstr "ΟÏισμός ΠεÏιθωÏίου"
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Roaming Expansion Margin"
+msgstr "Ανάπτυξη Όλων"
+
+#: scene/3d/room_manager.cpp
msgid ""
"RoomList path is invalid.\n"
"Please check the RoomList branch has been assigned in the RoomManager."
@@ -21628,6 +23358,20 @@ msgstr "ΚοÏμπωμα στα εικονοστοιχεία"
msgid "Billboard"
msgstr ""
+#: scene/3d/sprite_3d.cpp scene/resources/material.cpp
+#, fuzzy
+msgid "Transparent"
+msgstr "Μετατόπιση"
+
+#: scene/3d/sprite_3d.cpp
+#, fuzzy
+msgid "Shaded"
+msgstr "ΠÏόγÏαμμα Σκίασης"
+
+#: scene/3d/sprite_3d.cpp
+msgid "Double Sided"
+msgstr ""
+
#: scene/3d/sprite_3d.cpp
msgid "Alpha Cut"
msgstr ""
@@ -21703,11 +23447,6 @@ msgstr "ΟÏισμός έκφÏασης"
msgid "Max Force"
msgstr "Σφάλμα"
-#: scene/3d/vehicle_body.cpp
-#, fuzzy
-msgid "Relaxation"
-msgstr "ΔιαχωÏισμός:"
-
#: scene/3d/visibility_notifier.cpp
msgid "AABB"
msgstr ""
@@ -21851,7 +23590,7 @@ msgstr "ΧÏόνος ÏƒÏ…Î½Î´Î¹Î±ÏƒÎ¼Î¿Ï (s):"
#: scene/animation/animation_blend_tree.cpp
#, fuzzy
-msgid "autorestart_"
+msgid "Auto Restart"
msgstr "Αυτόματη επανεκκίνηση:"
#: scene/animation/animation_blend_tree.cpp
@@ -21937,13 +23676,6 @@ msgstr "Επιλογές Κλάσης:"
msgid "Default Blend Time"
msgstr "ΠÏοεπιλογή"
-#: scene/animation/animation_player.cpp scene/animation/animation_tree.cpp
-#: scene/animation/animation_tree_player.cpp
-#: servers/audio/effects/audio_effect_delay.cpp
-#, fuzzy
-msgid "Active"
-msgstr "ΕνέÏγεια"
-
#: scene/animation/animation_player.cpp
msgid "Method Call Mode"
msgstr ""
@@ -22069,10 +23801,6 @@ msgstr "ΕπαναπÏοσδιοÏισμός Γονέα Κόμβου"
msgid "Max Iterations"
msgstr "Κάνε ΣυνάÏτηση"
-#: scene/animation/tween.cpp scene/resources/texture.cpp
-msgid "Repeat"
-msgstr ""
-
#: scene/animation/tween.cpp
msgid "Playback Process Mode"
msgstr ""
@@ -22103,20 +23831,6 @@ msgstr "Επιλογή ΛειτουÏγίας"
msgid "Alignment"
msgstr ""
-#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
-#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
-#: scene/resources/style_box.cpp
-#, fuzzy
-msgid "Horizontal"
-msgstr "ΟÏιζόντια:"
-
-#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
-#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
-#: scene/resources/style_box.cpp
-#, fuzzy
-msgid "Vertical"
-msgstr "Κάθετα:"
-
#: scene/gui/base_button.cpp
#, fuzzy
msgid "Shortcut In Tooltip"
@@ -22219,10 +23933,6 @@ msgid "HSV"
msgstr "HSV"
#: scene/gui/color_picker.cpp
-msgid "Raw"
-msgstr "Ωμό"
-
-#: scene/gui/color_picker.cpp
msgid "Switch between hexadecimal and code values."
msgstr "Εναλλαγή δεκαεξαδικών και κωδικοποιημένων τιμών."
@@ -22290,6 +24000,31 @@ msgid "Focus"
msgstr "Εστίαση στη διαδÏομή"
#: scene/gui/control.cpp
+msgid "Neighbour Left"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Neighbour Top"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Neighbour Right"
+msgstr ""
+
+#: scene/gui/control.cpp
+#, fuzzy
+msgid "Neighbour Bottom"
+msgstr "ΚέντÏο Κάτω"
+
+#: scene/gui/control.cpp
+msgid "Next"
+msgstr "Επόμενο"
+
+#: scene/gui/control.cpp
+msgid "Previous"
+msgstr "ΠÏοηγοÏμενο"
+
+#: scene/gui/control.cpp
msgid "Mouse"
msgstr ""
@@ -22327,7 +24062,7 @@ msgid "Dialog"
msgstr "Διάλογος XForm"
#: scene/gui/dialogs.cpp
-msgid "Hide On Ok"
+msgid "Hide On OK"
msgstr ""
#: scene/gui/dialogs.cpp scene/gui/label.cpp
@@ -22427,7 +24162,7 @@ msgid "Timers"
msgstr "ΧÏόνος"
#: scene/gui/item_list.cpp scene/gui/popup_menu.cpp scene/gui/tree.cpp
-msgid "Incremental Search Max Interval (msec)"
+msgid "Incremental Search Max Interval Msec"
msgstr ""
#: scene/gui/item_list.cpp scene/gui/tree.cpp
@@ -23013,6 +24748,26 @@ msgstr "ΚέντÏο ΑÏιστεÏά"
msgid "Nine Patch Stretch"
msgstr "Μέθοδος παÏεμβολής"
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Left"
+msgstr "ΟÏισμός ΠεÏιθωÏίου"
+
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Top"
+msgstr "ΟÏισμός ΠεÏιθωÏίου"
+
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Right"
+msgstr "ΟÏισμός ΠεÏιθωÏίου"
+
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Bottom"
+msgstr "Επιλογή ΛειτουÏγίας"
+
#: scene/gui/tree.cpp
msgid "Custom Minimum Height"
msgstr ""
@@ -23050,8 +24805,9 @@ msgid "Paused"
msgstr ""
#: scene/gui/video_player.cpp
-msgid "Buffering (msec)"
-msgstr ""
+#, fuzzy
+msgid "Buffering Msec"
+msgstr "Πίσω όψη"
#: scene/gui/video_player.cpp
#, fuzzy
@@ -23409,6 +25165,22 @@ msgid "Shadow Atlas"
msgstr "Îέος Άτλαντας"
#: scene/main/viewport.cpp
+msgid "Quad 0"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 1"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 2"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 3"
+msgstr ""
+
+#: scene/main/viewport.cpp
#, fuzzy
msgid "Canvas Transform"
msgstr "ΕκκαθάÏιση ΜετασχηματισμοÏ"
@@ -23423,6 +25195,11 @@ msgid "Tooltip Delay (sec)"
msgstr ""
#: scene/register_scene_types.cpp
+#, fuzzy
+msgid "Swap OK Cancel"
+msgstr "ΆκυÏο"
+
+#: scene/register_scene_types.cpp
msgid "Use hiDPI"
msgstr ""
@@ -23437,21 +25214,6 @@ msgid "Custom Font"
msgstr "Αποκοπή κόμβων"
#: scene/resources/audio_stream_sample.cpp
-#, fuzzy
-msgid "Loop Mode"
-msgstr "ΛειτουÏγία Μετακίνησης"
-
-#: scene/resources/audio_stream_sample.cpp
-#, fuzzy
-msgid "Loop Begin"
-msgstr "ΛειτουÏγία Μετακίνησης"
-
-#: scene/resources/audio_stream_sample.cpp
-#, fuzzy
-msgid "Loop End"
-msgstr "ΛειτουÏγία Μετακίνησης"
-
-#: scene/resources/audio_stream_sample.cpp
#: servers/audio/effects/audio_stream_generator.cpp servers/audio_server.cpp
#, fuzzy
msgid "Mix Rate"
@@ -23511,6 +25273,17 @@ msgstr "Επιλογές υφής"
#: scene/resources/dynamic_font.cpp
#, fuzzy
+msgid "Char"
+msgstr "ΈγκυÏοι χαÏακτήÏες:"
+
+#: scene/resources/dynamic_font.cpp scene/resources/world.cpp
+#: scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Space"
+msgstr "ΚÏÏια σκηνή"
+
+#: scene/resources/dynamic_font.cpp
+#, fuzzy
msgid "Font"
msgstr "ΓÏαμματοσειÏά"
@@ -23738,6 +25511,43 @@ msgid "Glow"
msgstr ""
#: scene/resources/environment.cpp
+#, fuzzy
+msgid "Levels"
+msgstr "ΠÏογÏαμματιστές"
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "1"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "2"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "3"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "4"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "5"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "6"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "7"
+msgstr ""
+
+#: scene/resources/environment.cpp
msgid "Bloom"
msgstr ""
@@ -23830,10 +25640,68 @@ msgid "Next Pass"
msgstr "Επόμενο επίπεδο"
#: scene/resources/material.cpp
+msgid "Use Shadow To Opacity"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Unshaded"
+msgstr "Εμφάνιση χωÏίς σκιές"
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Vertex Lighting"
+msgstr "Κατευθήνσεις"
+
+#: scene/resources/material.cpp
+msgid "No Depth Test"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Use Point Size"
+msgstr "ΕμπÏόσθια όψη"
+
+#: scene/resources/material.cpp
+msgid "World Triplanar"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Fixed Size"
+msgstr "ΕμπÏόσθια όψη"
+
+#: scene/resources/material.cpp
+msgid "Albedo Tex Force sRGB"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Do Not Receive Shadows"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Disable Ambient Light"
+msgstr "Στοιχειοθέτηση Δεξιά"
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Ensure Correct Normals"
+msgstr "Ο μετασχηματισμός ματαιώθηκε."
+
+#: scene/resources/material.cpp
#, fuzzy
msgid "Vertex Color"
msgstr "ΚοÏυφή"
+#: scene/resources/material.cpp
+msgid "Use As Albedo"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Is sRGB"
+msgstr ""
+
#: scene/resources/material.cpp servers/visual_server.cpp
#, fuzzy
msgid "Parameters"
@@ -23870,6 +25738,11 @@ msgid "Billboard Mode"
msgstr "ΛειτουÏγία ΧάÏακα"
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Billboard Keep Scale"
+msgstr "ΛειτουÏγία ΧάÏακα"
+
+#: scene/resources/material.cpp
msgid "Grow"
msgstr ""
@@ -23879,6 +25752,10 @@ msgid "Grow Amount"
msgstr "Ποσότητα:"
#: scene/resources/material.cpp
+msgid "Use Alpha Scissor"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Alpha Scissor Threshold"
msgstr ""
@@ -23910,10 +25787,20 @@ msgid "Metallic Specular"
msgstr ""
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Metallic Texture"
+msgstr "Πηγή εκπομπής: "
+
+#: scene/resources/material.cpp
msgid "Metallic Texture Channel"
msgstr ""
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Roughness Texture"
+msgstr "ΑφαίÏεση Υφής"
+
+#: scene/resources/material.cpp
msgid "Roughness Texture Channel"
msgstr ""
@@ -23933,6 +25820,16 @@ msgid "Emission Operator"
msgstr "ΧÏώματα εκπομπής"
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Emission On UV2"
+msgstr "Μάσκα εκπομπής"
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Emission Texture"
+msgstr "Πηγή εκπομπής: "
+
+#: scene/resources/material.cpp
msgid "NormalMap"
msgstr ""
@@ -23947,6 +25844,11 @@ msgstr "Τυχαία κλίση:"
#: scene/resources/material.cpp
#, fuzzy
+msgid "Rim Texture"
+msgstr "ΑφαίÏεση Υφής"
+
+#: scene/resources/material.cpp
+#, fuzzy
msgid "Clearcoat"
msgstr "ΕκκαθάÏιση"
@@ -23956,15 +25858,28 @@ msgid "Clearcoat Gloss"
msgstr "ΕκκαθάÏιση Στάσης"
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Clearcoat Texture"
+msgstr "ΕπεξεÏγασία Θέματος"
+
+#: scene/resources/material.cpp
msgid "Anisotropy"
msgstr ""
#: scene/resources/material.cpp
+msgid "Anisotropy Flowmap"
+msgstr ""
+
+#: scene/resources/material.cpp
#, fuzzy
msgid "Ambient Occlusion"
msgstr "ΈμφÏαξη"
#: scene/resources/material.cpp
+msgid "On UV2"
+msgstr ""
+
+#: scene/resources/material.cpp
#, fuzzy
msgid "Texture Channel"
msgstr "TextureRegion"
@@ -24003,6 +25918,11 @@ msgstr "Μετάβαση: "
#: scene/resources/material.cpp
#, fuzzy
+msgid "Transmission Texture"
+msgstr "Μετάβαση: "
+
+#: scene/resources/material.cpp
+#, fuzzy
msgid "Refraction"
msgstr "ΔιαχωÏισμός:"
@@ -24021,6 +25941,10 @@ msgid "UV1"
msgstr "UV"
#: scene/resources/material.cpp
+msgid "Triplanar"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Triplanar Sharpness"
msgstr ""
@@ -24231,6 +26155,16 @@ msgstr "ΕπεξεÏγασία Θέματος"
msgid "Point Count"
msgstr "ΠÏοσθήκη ΘÏÏας Εισόδου"
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Scale Random"
+msgstr "Λόγος μεγέθυνσης:"
+
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Scale Curve"
+msgstr "κλείσιμο καμπÏλης"
+
#: scene/resources/physics_material.cpp
msgid "Rough"
msgstr ""
@@ -24293,10 +26227,6 @@ msgid "A"
msgstr ""
#: scene/resources/shader.cpp
-msgid "Code"
-msgstr ""
-
-#: scene/resources/shader.cpp
#, fuzzy
msgid "Custom Defines"
msgstr "ΑναπαÏαγωγή Ï€ÏοσαÏμοσμένης σκηνής"
@@ -24393,15 +26323,6 @@ msgstr ""
#: scene/resources/texture.cpp
#, fuzzy
-msgid "Storage"
-msgstr "ΑÏχείο αποθήκευσης:"
-
-#: scene/resources/texture.cpp
-msgid "Lossy Quality"
-msgstr ""
-
-#: scene/resources/texture.cpp
-#, fuzzy
msgid "Load Path"
msgstr "ΦόÏτωση ΔιαμόÏφωσης"
@@ -24530,11 +26451,6 @@ msgstr "ΆκυÏη συνάÏτηση σÏγκÏισης για αυτόν τοÎ
msgid "Fallback Environment"
msgstr "Εμφάνιση πεÏιβάλλοντος"
-#: scene/resources/world.cpp scene/resources/world_2d.cpp
-#, fuzzy
-msgid "Space"
-msgstr "ΚÏÏια σκηνή"
-
#: scene/resources/world.cpp
#, fuzzy
msgid "Scenario"
@@ -24615,10 +26531,37 @@ msgstr ""
msgid "Wet"
msgstr ""
-#: servers/audio/effects/audio_effect_compressor.cpp
-msgid "Threshold"
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "Voice"
msgstr ""
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+msgid "Delay (ms)"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_phaser.cpp
+msgid "Rate Hz"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#, fuzzy
+msgid "Depth (ms)"
+msgstr "Βάθος"
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+msgid "Level dB"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+#: servers/audio/effects/audio_effect_panner.cpp
+#, fuzzy
+msgid "Pan"
+msgstr "Επίπεδο:"
+
#: servers/audio/effects/audio_effect_compressor.cpp
#: servers/audio/effects/audio_effect_filter.cpp
msgid "Gain"
@@ -24642,20 +26585,6 @@ msgid "Tap 1"
msgstr ""
#: servers/audio/effects/audio_effect_delay.cpp
-msgid "Delay (ms)"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_delay.cpp
-msgid "Level dB"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_delay.cpp
-#: servers/audio/effects/audio_effect_panner.cpp
-#, fuzzy
-msgid "Pan"
-msgstr "Επίπεδο:"
-
-#: servers/audio/effects/audio_effect_delay.cpp
msgid "Tap 2"
msgstr ""
@@ -24717,10 +26646,6 @@ msgstr ""
msgid "Range Max Hz"
msgstr ""
-#: servers/audio/effects/audio_effect_phaser.cpp
-msgid "Rate Hz"
-msgstr ""
-
#: servers/audio/effects/audio_effect_pitch_shift.cpp
msgid "Oversampling"
msgstr ""
@@ -24736,7 +26661,7 @@ msgid "Predelay"
msgstr ""
#: servers/audio/effects/audio_effect_reverb.cpp
-msgid "(msec)"
+msgid "Msec"
msgstr ""
#: servers/audio/effects/audio_effect_reverb.cpp
diff --git a/editor/translations/en_Shaw.po b/editor/translations/en_Shaw.po
index 493817d333..0dd4c0401b 100644
--- a/editor/translations/en_Shaw.po
+++ b/editor/translations/en_Shaw.po
@@ -19,7 +19,7 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 4.11.1-dev\n"
-#: core/bind/core_bind.cpp
+#: core/bind/core_bind.cpp main/main.cpp
msgid "Tablet Driver"
msgstr ""
@@ -111,8 +111,8 @@ msgstr "ð‘“ð‘³ð‘™ð‘’ð‘–ð‘©ð‘¯ð‘Ÿ:"
#: core/bind/core_bind.cpp editor/editor_settings.cpp main/main.cpp
#: modules/gdscript/gdscript_editor.cpp modules/gridmap/grid_map.cpp
#: modules/mono/csharp_script.cpp modules/visual_script/visual_script_nodes.cpp
-#: scene/2d/tile_map.cpp scene/3d/camera.cpp scene/gui/control.cpp
-#: scene/gui/graph_edit.cpp scene/main/viewport.cpp
+#: scene/2d/tile_map.cpp scene/3d/camera.cpp scene/3d/light.cpp
+#: scene/gui/control.cpp scene/gui/graph_edit.cpp scene/main/viewport.cpp
#: scene/resources/dynamic_font.cpp scene/resources/navigation_mesh.cpp
#: scene/resources/primitive_meshes.cpp scene/resources/sky.cpp
#: scene/resources/style_box.cpp scene/resources/texture.cpp
@@ -206,8 +206,7 @@ msgid "Data"
msgstr ""
#: core/io/file_access_network.cpp core/register_core_types.cpp
-#: editor/editor_settings.cpp editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp main/main.cpp
+#: editor/editor_settings.cpp main/main.cpp
#: modules/gdscript/language_server/gdscript_language_server.cpp
msgid "Network"
msgstr ""
@@ -466,9 +465,10 @@ msgstr ""
msgid "Relative"
msgstr ""
-#: core/os/input_event.cpp scene/2d/camera_2d.cpp
-#: scene/3d/interpolated_camera.cpp scene/animation/animation_player.cpp
-#: scene/resources/environment.cpp
+#: core/os/input_event.cpp scene/2d/camera_2d.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/interpolated_camera.cpp
+#: scene/animation/animation_player.cpp scene/resources/environment.cpp
+#: scene/resources/particles_material.cpp
msgid "Speed"
msgstr ""
@@ -513,8 +513,9 @@ msgstr ""
msgid "Pitch"
msgstr ""
-#: core/os/input_event.cpp scene/2d/physics_body_2d.cpp
-#: scene/3d/physics_body.cpp
+#: core/os/input_event.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/physics_body_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/3d/physics_body.cpp scene/resources/particles_material.cpp
msgid "Velocity"
msgstr ""
@@ -531,6 +532,8 @@ msgid "Controller Value"
msgstr ""
#: core/project_settings.cpp editor/editor_node.cpp main/main.cpp
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/windows/export/export.cpp
msgid "Application"
msgstr ""
@@ -546,13 +549,16 @@ msgstr ""
#: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp
#: editor/editor_plugin_settings.cpp editor/editor_profiler.cpp
#: editor/project_manager.cpp editor/settings_config_dialog.cpp
-#: modules/gdnative/nativescript/nativescript.cpp scene/2d/area_2d.cpp
-#: scene/3d/area.cpp scene/main/node.cpp
+#: modules/gdnative/nativescript/nativescript.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/osx/export/export.cpp scene/2d/area_2d.cpp scene/3d/area.cpp
+#: scene/main/node.cpp
msgid "Name"
msgstr ""
#: core/project_settings.cpp editor/editor_help.cpp
-#: modules/visual_script/visual_script_nodes.cpp
+#: modules/visual_script/visual_script_nodes.cpp platform/uwp/export/export.cpp
+#: platform/windows/export/export.cpp
msgid "Description"
msgstr ""
@@ -588,7 +594,7 @@ msgid "Custom User Dir Name"
msgstr ""
#: core/project_settings.cpp editor/animation_track_editor.cpp
-#: editor/editor_audio_buses.cpp servers/audio_server.cpp
+#: editor/editor_audio_buses.cpp main/main.cpp servers/audio_server.cpp
msgid "Audio"
msgstr ""
@@ -739,10 +745,13 @@ msgstr ""
msgid "Sharpen Intensity"
msgstr ""
-#: core/project_settings.cpp editor/editor_node.cpp editor/editor_settings.cpp
-#: editor/plugins/script_editor_plugin.cpp editor/project_export.cpp
-#: main/main.cpp modules/gdscript/gdscript.cpp
-#: modules/visual_script/visual_script.cpp scene/3d/room_manager.cpp
+#: core/project_settings.cpp editor/editor_export.cpp editor/editor_node.cpp
+#: editor/editor_settings.cpp editor/plugins/script_editor_plugin.cpp
+#: editor/project_export.cpp main/main.cpp modules/gdscript/gdscript.cpp
+#: modules/visual_script/visual_script.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp scene/3d/room_manager.cpp
#: scene/main/scene_tree.cpp scene/resources/shape_2d.cpp
#: servers/visual_server.cpp
msgid "Debug"
@@ -965,6 +974,7 @@ msgid "Subsurface Scattering"
msgstr ""
#: drivers/gles3/rasterizer_scene_gles3.cpp
+#: editor/import/resource_importer_texture.cpp
#: editor/plugins/spatial_editor_plugin.cpp modules/gltf/gltf_node.cpp
#: modules/gridmap/grid_map.cpp scene/2d/cpu_particles_2d.cpp
#: scene/2d/node_2d.cpp scene/2d/parallax_layer.cpp scene/2d/polygon_2d.cpp
@@ -1260,6 +1270,7 @@ msgid "Editors"
msgstr ""
#: editor/animation_track_editor.cpp editor/editor_settings.cpp
+#: editor/import/resource_importer_scene.cpp
#: editor/plugins/animation_player_editor_plugin.cpp editor/scene_tree_dock.cpp
#: scene/2d/animated_sprite.cpp scene/2d/cpu_particles_2d.cpp
#: scene/2d/sprite.cpp scene/3d/cpu_particles.cpp scene/3d/sprite_3d.cpp
@@ -1476,14 +1487,14 @@ msgstr ""
msgid "Seconds"
msgstr ""
-#: editor/animation_track_editor.cpp
+#: editor/animation_track_editor.cpp editor/import/resource_importer_scene.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp main/main.cpp
#: scene/resources/texture.cpp
msgid "FPS"
msgstr ""
#: editor/animation_track_editor.cpp editor/editor_plugin_settings.cpp
-#: editor/editor_resource_picker.cpp
+#: editor/editor_resource_picker.cpp editor/import/resource_importer_wav.cpp
#: editor/plugins/polygon_2d_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
@@ -2425,7 +2436,9 @@ msgid "Remove Autoload"
msgstr ""
#: editor/editor_autoload_settings.cpp editor/editor_plugin_settings.cpp
-#: modules/gdscript/gdscript.cpp scene/2d/polygon_2d.cpp scene/3d/area.cpp
+#: modules/gdscript/gdscript.cpp platform/android/export/export_plugin.cpp
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#: scene/2d/polygon_2d.cpp scene/3d/area.cpp scene/3d/physics_joint.cpp
#: scene/3d/reflection_probe.cpp scene/main/canvas_layer.cpp
#: scene/resources/material.cpp servers/visual_server.cpp
msgid "Enable"
@@ -2578,6 +2591,57 @@ msgstr ""
#: editor/editor_export.cpp platform/android/export/export_plugin.cpp
#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
+msgid "Custom Template"
+msgstr ""
+
+#: editor/editor_export.cpp editor/project_export.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp
+msgid "Release"
+msgstr ""
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Binary Format"
+msgstr "3-ð‘› ð‘‘ð‘®ð‘¨ð‘¯ð‘•ð‘“ð‘¹ð‘¥ ð‘‘ð‘®ð‘¨ð‘’"
+
+#: editor/editor_export.cpp
+msgid "64 Bits"
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Embed PCK"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Texture Format"
+msgstr "3-ð‘› ð‘‘ð‘®ð‘¨ð‘¯ð‘•ð‘“ð‘¹ð‘¥ ð‘‘ð‘®ð‘¨ð‘’"
+
+#: editor/editor_export.cpp
+msgid "BPTC"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "S3TC"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "ETC"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "ETC2"
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "No BPTC Fallbacks"
+msgstr ""
+
+#: editor/editor_export.cpp platform/android/export/export_plugin.cpp
+#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
msgid "Custom debug template not found."
msgstr ""
@@ -2751,6 +2815,7 @@ msgid "Make Current"
msgstr ""
#: editor/editor_feature_profile.cpp editor/editor_node.cpp
+#: editor/import/resource_importer_scene.cpp
#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
msgid "Import"
msgstr ""
@@ -2875,8 +2940,11 @@ msgstr ""
msgid "Display Mode"
msgstr ""
-#: editor/editor_file_dialog.cpp main/main.cpp modules/csg/csg_shape.cpp
-#: modules/visual_script/visual_script_nodes.cpp
+#: editor/editor_file_dialog.cpp
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+#: editor/import/resource_importer_wav.cpp main/main.cpp
+#: modules/csg/csg_shape.cpp modules/visual_script/visual_script_nodes.cpp
#: modules/visual_script/visual_script_yield_nodes.cpp scene/2d/light_2d.cpp
#: scene/2d/physics_body_2d.cpp scene/2d/tile_map.cpp
#: scene/3d/baked_lightmap.cpp scene/3d/light.cpp scene/3d/physics_body.cpp
@@ -3008,7 +3076,9 @@ msgstr ""
msgid "Reimport Missing Imported Files"
msgstr ""
-#: editor/editor_help.cpp
+#: editor/editor_help.cpp scene/2d/camera_2d.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/resources/dynamic_font.cpp
+#: scene/resources/style_box.cpp
msgid "Top"
msgstr ""
@@ -3060,6 +3130,7 @@ msgid "Fonts"
msgstr ""
#: editor/editor_help.cpp editor/plugins/theme_editor_plugin.cpp
+#: platform/iphone/export/export.cpp
msgid "Icons"
msgstr ""
@@ -3218,7 +3289,9 @@ msgstr ""
msgid "Pin value [Disabled because '%s' is editor-only]"
msgstr ""
-#: editor/editor_inspector.cpp editor/scene_tree_dock.cpp
+#: editor/editor_inspector.cpp
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+#: editor/scene_tree_dock.cpp
#: modules/visual_script/visual_script_func_nodes.cpp
#: modules/visual_script/visual_script_nodes.cpp
#: modules/visual_script/visual_script_property_selector.cpp
@@ -3529,6 +3602,14 @@ msgid "Quick Open Script..."
msgstr ""
#: editor/editor_node.cpp
+msgid "Save & Reload"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Save changes to '%s' before reloading?"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "Save & Close"
msgstr ""
@@ -3639,6 +3720,10 @@ msgid "Open Project Manager?"
msgstr ""
#: editor/editor_node.cpp
+msgid "Save changes to the following scene(s) before reloading?"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "Save & Quit"
msgstr ""
@@ -3878,7 +3963,7 @@ msgid "Update Vital Only"
msgstr ""
#: editor/editor_node.cpp
-msgid "Translate Properties"
+msgid "Localize Settings"
msgstr ""
#: editor/editor_node.cpp
@@ -3894,7 +3979,7 @@ msgid "Inspector"
msgstr ""
#: editor/editor_node.cpp
-msgid "Capitalize Properties"
+msgid "Default Property Name Style"
msgstr ""
#: editor/editor_node.cpp
@@ -4453,7 +4538,9 @@ msgstr ""
msgid "Update"
msgstr ""
-#: editor/editor_plugin_settings.cpp
+#: editor/editor_plugin_settings.cpp platform/android/export/export_plugin.cpp
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp
msgid "Version"
msgstr ""
@@ -5393,7 +5480,7 @@ msgstr ""
msgid "Rect Custom Position"
msgstr ""
-#: editor/editor_settings.cpp
+#: editor/editor_settings.cpp platform/android/export/export_plugin.cpp
msgid "Screen"
msgstr ""
@@ -5416,6 +5503,19 @@ msgid "Editor SSL Certificates"
msgstr ""
#: editor/editor_settings.cpp
+msgid "HTTP Proxy"
+msgstr ""
+
+#: editor/editor_settings.cpp
+msgid "Host"
+msgstr ""
+
+#: editor/editor_settings.cpp editor/fileserver/editor_file_server.cpp
+#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp
+msgid "Port"
+msgstr ""
+
+#: editor/editor_settings.cpp
msgid "Project Manager"
msgstr ""
@@ -5455,7 +5555,8 @@ msgstr ""
msgid "String Color"
msgstr ""
-#: editor/editor_settings.cpp
+#: editor/editor_settings.cpp platform/javascript/export/export.cpp
+#: platform/uwp/export/export.cpp
msgid "Background Color"
msgstr ""
@@ -5614,22 +5715,6 @@ msgid "Starting the download..."
msgstr ""
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "HTTP Proxy"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Host"
-msgstr ""
-
-#: editor/export_template_manager.cpp editor/fileserver/editor_file_server.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp main/main.cpp
-#: modules/mono/mono_gd/gd_mono.cpp
-msgid "Port"
-msgstr ""
-
-#: editor/export_template_manager.cpp
msgid "Error requesting URL:"
msgstr ""
@@ -5871,6 +5956,7 @@ msgstr ""
#: editor/fileserver/editor_file_server.cpp
#: editor/plugins/version_control_editor_plugin.cpp
+#: platform/uwp/export/export.cpp platform/windows/export/export.cpp
msgid "Password"
msgstr ""
@@ -6234,6 +6320,106 @@ msgstr ""
msgid "Use Ambient"
msgstr ""
+#: editor/import/resource_importer_bitmask.cpp
+msgid "Create From"
+msgstr ""
+
+#: editor/import/resource_importer_bitmask.cpp
+#: servers/audio/effects/audio_effect_compressor.cpp
+msgid "Threshold"
+msgstr ""
+
+#: editor/import/resource_importer_csv_translation.cpp
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_scene.cpp
+#: editor/import/resource_importer_texture.cpp
+#: editor/import/resource_importer_wav.cpp scene/3d/gi_probe.cpp
+msgid "Compress"
+msgstr ""
+
+#: editor/import/resource_importer_csv_translation.cpp
+msgid "Delimiter"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+msgid "No BPTC If RGB"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/sprite_3d.cpp
+#: scene/resources/material.cpp scene/resources/particles_material.cpp
+#: scene/resources/texture.cpp
+msgid "Flags"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/animation/tween.cpp
+#: scene/resources/texture.cpp
+msgid "Repeat"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/2d/light_2d.cpp
+#: scene/gui/control.cpp scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Filter"
+msgstr "ð‘‘ð‘ªð‘œð‘©ð‘¤ ð‘‘ð‘®ð‘¨ð‘’ ð‘¦ð‘¯ð‘±ð‘šð‘©ð‘¤ð‘›"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+msgid "Mipmaps"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+msgid "Anisotropic"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+msgid "sRGB"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+msgid "Slices"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
+#: scene/resources/style_box.cpp
+msgid "Horizontal"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
+#: scene/resources/style_box.cpp
+msgid "Vertical"
+msgstr ""
+
+#: editor/import/resource_importer_obj.cpp
+msgid "Generate Tangents"
+msgstr ""
+
+#: editor/import/resource_importer_obj.cpp
+msgid "Scale Mesh"
+msgstr ""
+
+#: editor/import/resource_importer_obj.cpp
+msgid "Offset Mesh"
+msgstr ""
+
+#: editor/import/resource_importer_obj.cpp
+#: editor/import/resource_importer_scene.cpp
+msgid "Octahedral Compression"
+msgstr ""
+
+#: editor/import/resource_importer_obj.cpp
+msgid "Optimize Mesh Flags"
+msgstr ""
+
#: editor/import/resource_importer_scene.cpp
msgid "Import as Single Scene"
msgstr ""
@@ -6274,6 +6460,140 @@ msgstr ""
msgid "Import as Multiple Scenes+Materials"
msgstr ""
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+#: scene/3d/physics_joint.cpp
+msgid "Nodes"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Root Type"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Root Name"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Root Scale"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Custom Script"
+msgstr "ð‘“ð‘³ð‘™ð‘’ð‘–ð‘©ð‘¯ð‘Ÿ:"
+
+#: editor/import/resource_importer_scene.cpp scene/resources/texture.cpp
+msgid "Storage"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Use Legacy Names"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+msgid "Materials"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Location"
+msgstr "ð‘“ð‘³ð‘™ð‘’ð‘–ð‘©ð‘¯ð‘Ÿ:"
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Keep On Reimport"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+msgid "Meshes"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Ensure Tangents"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Light Baking"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Lightmap Texel Size"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+msgid "Skins"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Use Named Skins"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "External Files"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Store In Subdir"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Filter Script"
+msgstr "ð‘‘ð‘ªð‘œð‘©ð‘¤ ð‘‘ð‘®ð‘¨ð‘’ ð‘¦ð‘¯ð‘±ð‘šð‘©ð‘¤ð‘›"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Keep Custom Tracks"
+msgstr "ð‘—ð‘±ð‘¯ð‘¡ ð‘¨ð‘¯ð‘¦ð‘¥ð‘±ð‘–ð‘©ð‘¯ ð‘‘ð‘®ð‘¨ð‘¯ð‘•ð‘“ð‘¹ð‘¥"
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Optimizer"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp main/main.cpp
+#: modules/mono/mono_gd/gd_mono.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp scene/2d/camera_2d.cpp scene/2d/light_2d.cpp
+#: scene/2d/navigation_polygon.cpp scene/2d/ray_cast_2d.cpp scene/2d/sprite.cpp
+#: scene/2d/y_sort.cpp scene/3d/audio_stream_player_3d.cpp
+#: scene/3d/baked_lightmap.cpp scene/3d/interpolated_camera.cpp
+#: scene/3d/light.cpp scene/3d/navigation_mesh_instance.cpp
+#: scene/3d/physics_joint.cpp scene/3d/ray_cast.cpp scene/3d/sprite_3d.cpp
+#: scene/gui/graph_edit.cpp scene/gui/rich_text_label.cpp
+#: scene/resources/curve.cpp scene/resources/environment.cpp
+#: scene/resources/material.cpp
+msgid "Enabled"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Max Linear Error"
+msgstr "ð‘¥ð‘¦ð‘®ð‘¼"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Max Angular Error"
+msgstr "ð‘¥ð‘¦ð‘®ð‘¼"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Max Angle"
+msgstr "ð‘ð‘¨ð‘¤ð‘¿:"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Remove Unused Tracks"
+msgstr "ð‘®ð‘¦ð‘¥ð‘µð‘ ð‘žð‘¦ð‘• ð‘‘ð‘®ð‘¨ð‘’."
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Clips"
+msgstr "ð‘¨ð‘¯ð‘¦ð‘¥ð‘±ð‘–ð‘©ð‘¯ ð‘’ð‘¤ð‘¦ð‘ð‘•:"
+
+#: editor/import/resource_importer_scene.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/particles_2d.cpp scene/3d/area.cpp scene/3d/cpu_particles.cpp
+#: scene/3d/particles.cpp scene/resources/environment.cpp
+msgid "Amount"
+msgstr ""
+
#: editor/import/resource_importer_scene.cpp
#: editor/plugins/mesh_library_editor_plugin.cpp
msgid "Import Scene"
@@ -6315,12 +6635,137 @@ msgstr ""
msgid "Saving..."
msgstr ""
+#: editor/import/resource_importer_texture.cpp scene/resources/texture.cpp
+msgid "Lossy Quality"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "HDR Mode"
+msgstr "ð‘¦ð‘¯ð‘‘ð‘»ð‘ð‘©ð‘¤ð‘±ð‘–ð‘©ð‘¯ ð‘¥ð‘´ð‘›"
+
+#: editor/import/resource_importer_texture.cpp
+msgid "BPTC LDR"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/mesh_instance_2d.cpp scene/2d/multimesh_instance_2d.cpp
+#: scene/2d/particles_2d.cpp scene/2d/sprite.cpp scene/resources/style_box.cpp
+msgid "Normal Map"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Process"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Fix Alpha Border"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Premult Alpha"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Hdr As Srgb"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Invert Color"
+msgstr "ð‘“ð‘³ð‘™ð‘’ð‘–ð‘©ð‘¯ð‘Ÿ:"
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Normal Map Invert Y"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
+#: scene/audio/audio_stream_player.cpp scene/gui/video_player.cpp
+msgid "Stream"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Size Limit"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Detect 3D"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "SVG"
+msgstr ""
+
#: editor/import/resource_importer_texture.cpp
msgid ""
"Warning, no suitable PC VRAM compression enabled in Project Settings. This "
"texture will not display correctly on PC."
msgstr ""
+#: editor/import/resource_importer_texture_atlas.cpp
+msgid "Atlas File"
+msgstr ""
+
+#: editor/import/resource_importer_texture_atlas.cpp
+#, fuzzy
+msgid "Import Mode"
+msgstr "ð‘¦ð‘¯ð‘‘ð‘»ð‘ð‘©ð‘¤ð‘±ð‘–ð‘©ð‘¯ ð‘¥ð‘´ð‘›"
+
+#: editor/import/resource_importer_texture_atlas.cpp
+msgid "Crop To Region"
+msgstr ""
+
+#: editor/import/resource_importer_texture_atlas.cpp
+msgid "Trim Alpha Border From Region"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp scene/2d/physics_body_2d.cpp
+msgid "Force"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+msgid "8 Bit"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp main/main.cpp
+#: modules/mono/editor/csharp_project.cpp modules/mono/mono_gd/gd_mono.cpp
+msgid "Mono"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+#, fuzzy
+msgid "Max Rate"
+msgstr "ð‘ð‘¨ð‘¤ð‘¿:"
+
+#: editor/import/resource_importer_wav.cpp
+#, fuzzy
+msgid "Max Rate Hz"
+msgstr "ð‘ð‘¨ð‘¤ð‘¿:"
+
+#: editor/import/resource_importer_wav.cpp
+msgid "Trim"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+msgid "Normalize"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+msgid "Loop Mode"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+msgid "Loop Begin"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+msgid "Loop End"
+msgstr ""
+
#: editor/import_defaults_editor.cpp
msgid "Select Importer"
msgstr ""
@@ -6389,6 +6834,27 @@ msgid "Failed to load resource."
msgstr ""
#: editor/inspector_dock.cpp
+#, fuzzy
+msgid "Property Name Style"
+msgstr "ð‘ð‘®ð‘ªð‘ð‘¼ð‘‘𑦠ð‘‘ð‘®ð‘¨ð‘’"
+
+#: editor/inspector_dock.cpp scene/gui/color_picker.cpp
+msgid "Raw"
+msgstr ""
+
+#: editor/inspector_dock.cpp
+msgid "Capitalized"
+msgstr ""
+
+#: editor/inspector_dock.cpp
+msgid "Localized"
+msgstr ""
+
+#: editor/inspector_dock.cpp
+msgid "Localization not available for current language."
+msgstr ""
+
+#: editor/inspector_dock.cpp
msgid "Copy Properties"
msgstr ""
@@ -7417,18 +7883,22 @@ msgid "License (Z-A)"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
+msgctxt "Pagination"
msgid "First"
msgstr ""
-#: editor/plugins/asset_library_editor_plugin.cpp scene/gui/control.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgctxt "Pagination"
msgid "Previous"
msgstr ""
-#: editor/plugins/asset_library_editor_plugin.cpp scene/gui/control.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgctxt "Pagination"
msgid "Next"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
+msgctxt "Pagination"
msgid "Last"
msgstr ""
@@ -7662,19 +8132,19 @@ msgid ""
"margins."
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Top Left"
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Top Right"
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Bottom Right"
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Bottom Left"
msgstr ""
@@ -8367,6 +8837,19 @@ msgstr ""
msgid "Gradient Edited"
msgstr ""
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+msgid "Swap GradientTexture2D Fill Points"
+msgstr ""
+
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+msgid "Swap Gradient Fill Points"
+msgstr ""
+
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+#, fuzzy
+msgid "Toggle Grid Snap"
+msgstr "ð‘‘ð‘ªð‘œð‘©ð‘¤ ð‘‘ð‘®ð‘¨ð‘’ ð‘¦ð‘¯ð‘±ð‘šð‘©ð‘¤ð‘›"
+
#: editor/plugins/item_list_editor_plugin.cpp
msgid "Item %d"
msgstr ""
@@ -8580,8 +9063,8 @@ msgid ""
"%s"
msgstr ""
-#: editor/plugins/mesh_library_editor_plugin.cpp modules/gridmap/grid_map.cpp
-msgid "Mesh Library"
+#: editor/plugins/mesh_library_editor_plugin.cpp
+msgid "MeshLibrary"
msgstr ""
#: editor/plugins/mesh_library_editor_plugin.cpp
@@ -9550,8 +10033,8 @@ msgstr ""
msgid "Source"
msgstr ""
-#: editor/plugins/script_text_editor.cpp scene/3d/interpolated_camera.cpp
-#: scene/animation/skeleton_ik.cpp
+#: editor/plugins/script_text_editor.cpp platform/uwp/export/export.cpp
+#: scene/3d/interpolated_camera.cpp scene/animation/skeleton_ik.cpp
msgid "Target"
msgstr ""
@@ -10508,7 +10991,9 @@ msgstr ""
#: editor/plugins/sprite_frames_editor_plugin.cpp
#: modules/gltf/gltf_animation.cpp modules/minimp3/audio_stream_mp3.cpp
-#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp scene/2d/path_2d.cpp
+#: modules/minimp3/resource_importer_mp3.cpp
+#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp
+#: modules/stb_vorbis/resource_importer_ogg_vorbis.cpp scene/2d/path_2d.cpp
#: scene/3d/path.cpp scene/resources/animation.cpp scene/resources/material.cpp
msgid "Loop"
msgstr ""
@@ -11368,8 +11853,9 @@ msgstr ""
msgid "Priority"
msgstr ""
-#: editor/plugins/tile_set_editor_plugin.cpp main/main.cpp scene/gui/button.cpp
-#: scene/gui/item_list.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp main/main.cpp
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#: scene/gui/button.cpp scene/gui/item_list.cpp
msgid "Icon"
msgstr ""
@@ -12648,10 +13134,6 @@ msgid ""
msgstr ""
#: editor/project_export.cpp
-msgid "Release"
-msgstr ""
-
-#: editor/project_export.cpp
msgid "Exporting All"
msgstr ""
@@ -14411,6 +14893,7 @@ msgid "Change AudioStreamPlayer3D Emission Angle"
msgstr ""
#: editor/spatial_editor_gizmos.cpp modules/gltf/gltf_node.cpp
+#: platform/osx/export/export.cpp
msgid "Camera"
msgstr ""
@@ -14671,7 +15154,8 @@ msgstr ""
msgid "Use Nvidia Rect Flicker Workaround"
msgstr ""
-#: main/main.cpp platform/uwp/os_uwp.cpp
+#: main/main.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp platform/uwp/os_uwp.cpp
msgid "Display"
msgstr ""
@@ -14726,18 +15210,6 @@ msgstr ""
msgid "Allowed"
msgstr ""
-#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp scene/2d/camera_2d.cpp
-#: scene/2d/light_2d.cpp scene/2d/navigation_polygon.cpp
-#: scene/2d/ray_cast_2d.cpp scene/2d/sprite.cpp scene/2d/y_sort.cpp
-#: scene/3d/audio_stream_player_3d.cpp scene/3d/baked_lightmap.cpp
-#: scene/3d/interpolated_camera.cpp scene/3d/light.cpp
-#: scene/3d/navigation_mesh_instance.cpp scene/3d/ray_cast.cpp
-#: scene/3d/sprite_3d.cpp scene/gui/graph_edit.cpp
-#: scene/gui/rich_text_label.cpp scene/resources/curve.cpp
-#: scene/resources/environment.cpp
-msgid "Enabled"
-msgstr ""
-
#: main/main.cpp
msgid "Intended Usage"
msgstr ""
@@ -14766,12 +15238,13 @@ msgstr ""
msgid "Handheld"
msgstr ""
-#: main/main.cpp
+#: main/main.cpp platform/javascript/export/export.cpp
+#: platform/uwp/export/export.cpp
msgid "Orientation"
msgstr ""
#: main/main.cpp scene/gui/scroll_container.cpp scene/gui/text_edit.cpp
-#: scene/main/scene_tree.cpp
+#: scene/main/scene_tree.cpp scene/register_scene_types.cpp
msgid "Common"
msgstr ""
@@ -14810,7 +15283,7 @@ msgid "Verbose stdout"
msgstr ""
#: main/main.cpp
-msgid "Frame Delay (msec)"
+msgid "Frame Delay Msec"
msgstr ""
#: main/main.cpp
@@ -14927,11 +15400,6 @@ msgstr ""
msgid "Tooltip Position Offset"
msgstr ""
-#: main/main.cpp modules/mono/editor/csharp_project.cpp
-#: modules/mono/mono_gd/gd_mono.cpp
-msgid "Mono"
-msgstr ""
-
#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp
msgid "Debugger Agent"
msgstr ""
@@ -15451,7 +15919,7 @@ msgstr ""
msgid "Intensity"
msgstr ""
-#: modules/gltf/gltf_light.cpp scene/2d/light_2d.cpp
+#: modules/gltf/gltf_light.cpp scene/2d/light_2d.cpp scene/3d/light.cpp
msgid "Range"
msgstr ""
@@ -15581,10 +16049,6 @@ msgstr ""
msgid "Use Named Skin Binds"
msgstr ""
-#: modules/gltf/gltf_state.cpp scene/3d/physics_joint.cpp
-msgid "Nodes"
-msgstr ""
-
#: modules/gltf/gltf_state.cpp
msgid "Buffer Views"
msgstr ""
@@ -15594,14 +16058,6 @@ msgid "Accessors"
msgstr ""
#: modules/gltf/gltf_state.cpp
-msgid "Meshes"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp
-msgid "Materials"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp
msgid "Scene Name"
msgstr ""
@@ -15615,15 +16071,11 @@ msgstr ""
msgid "Textures"
msgstr ""
-#: modules/gltf/gltf_state.cpp
+#: modules/gltf/gltf_state.cpp platform/uwp/export/export.cpp
msgid "Images"
msgstr ""
#: modules/gltf/gltf_state.cpp
-msgid "Skins"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp
msgid "Cameras"
msgstr ""
@@ -15654,10 +16106,14 @@ msgid "Src Image"
msgstr ""
#: modules/gridmap/grid_map.cpp
-msgid "Physics Material"
+msgid "Mesh Library"
msgstr ""
#: modules/gridmap/grid_map.cpp
+msgid "Physics Material"
+msgstr ""
+
+#: modules/gridmap/grid_map.cpp scene/3d/visual_instance.cpp
msgid "Use In Baked Light"
msgstr ""
@@ -15684,6 +16140,7 @@ msgstr ""
#: modules/gridmap/grid_map.cpp scene/2d/collision_object_2d.cpp
#: scene/2d/tile_map.cpp scene/3d/collision_object.cpp scene/3d/soft_body.cpp
+#: scene/resources/material.cpp
msgid "Mask"
msgstr ""
@@ -15864,7 +16321,9 @@ msgid "Ultra Quality Ray Count"
msgstr ""
#: modules/minimp3/audio_stream_mp3.cpp
+#: modules/minimp3/resource_importer_mp3.cpp
#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp
+#: modules/stb_vorbis/resource_importer_ogg_vorbis.cpp
msgid "Loop Offset"
msgstr ""
@@ -16890,6 +17349,167 @@ msgid "The package must have at least one '.' separator."
msgstr ""
#: platform/android/export/export_plugin.cpp
+msgid "Use Custom Build"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Export Format"
+msgstr "3-ð‘› ð‘‘ð‘®ð‘¨ð‘¯ð‘•ð‘“ð‘¹ð‘¥ ð‘‘ð‘®ð‘¨ð‘’"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Keystore"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Debug User"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+msgid "Debug Password"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Release User"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Release Password"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "One Click Deploy"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Clear Previous Install"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp scene/resources/shader.cpp
+msgid "Code"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Min SDK"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Target SDK"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+msgid "Package"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Unique Name"
+msgstr "ð‘—ð‘±ð‘¯ð‘¡ ð‘¨ð‘¯ð‘¦ð‘¥ð‘±ð‘–ð‘©ð‘¯ ð‘¤ð‘§ð‘™ð‘’ð‘”"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Signed"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Classify As Game"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Retain Data On Uninstall"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Exclude From Recents"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Graphics"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "OpenGL Debug"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "XR Features"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "XR Mode"
+msgstr "ð‘’ð‘·ð‘¤ ð‘¥ð‘§ð‘”ð‘©ð‘› ð‘‘ð‘®ð‘¨ð‘’"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Hand Tracking"
+msgstr "ð‘ð‘®ð‘ªð‘ð‘¼ð‘‘𑦠ð‘‘ð‘®ð‘¨ð‘’"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Hand Tracking Frequency"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Passthrough"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Immersive Mode"
+msgstr "ð‘¦ð‘¯ð‘‘ð‘»ð‘ð‘©ð‘¤ð‘±ð‘–ð‘©ð‘¯ ð‘¥ð‘´ð‘›"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Support Small"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Support Normal"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Support Large"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Support Xlarge"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "User Data Backup"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Allow"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+msgid "Command Line"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+msgid "Extra Args"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "APK Expansion"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Salt"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Public Key"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Permissions"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Custom Permissions"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
msgid "Select device from the list"
msgstr ""
@@ -17175,6 +17795,162 @@ msgid "The character '%s' is not allowed in Identifier."
msgstr ""
#: platform/iphone/export/export.cpp
+msgid "App Store Team ID"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Provisioning Profile UUID Debug"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Code Sign Identity Debug"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Export Method Debug"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Provisioning Profile UUID Release"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Code Sign Identity Release"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Export Method Release"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Targeted Device Family"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Info"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Identifier"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Signature"
+msgstr "ð‘’ð‘¨ð‘ð‘—ð‘¼"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Short Version"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/windows/export/export.cpp
+msgid "Copyright"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Capabilities"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Access Wi-Fi"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Push Notifications"
+msgstr ""
+
+#: platform/iphone/export/export.cpp scene/3d/baked_lightmap.cpp
+msgid "User Data"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Accessible From Files App"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Accessible From Itunes Sharing"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Privacy"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Camera Usage Description"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Microphone Usage Description"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Photolibrary Usage Description"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPhone 120 X 120"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPhone 180 X 180"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 76 X 76"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 152 X 152"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 167 X 167"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "App Store 1024 X 1024"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Spotlight 40 X 40"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Spotlight 80 X 80"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Storyboard"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Use Launch Screen Storyboard"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Image Scale Mode"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Custom Image @2x"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Custom Image @3x"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Use Custom BG Color"
+msgstr "ð‘“ð‘³ð‘™ð‘’ð‘–ð‘©ð‘¯ð‘Ÿ:"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Custom BG Color"
+msgstr "ð‘“ð‘³ð‘™ð‘’ð‘–ð‘©ð‘¯ð‘Ÿ:"
+
+#: platform/iphone/export/export.cpp
msgid "App Store Team ID not specified - cannot configure the project."
msgstr ""
@@ -17211,6 +17987,75 @@ msgid "Could not read file:"
msgstr ""
#: platform/javascript/export/export.cpp
+msgid "Variant"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Export Type"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "VRAM Texture Compression"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "For Desktop"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "For Mobile"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Html"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Export Icon"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Custom Html Shell"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Head Include"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Canvas Resize Policy"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Focus Canvas On Start"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Experimental Virtual Keyboard"
+msgstr "ð‘‘ð‘ªð‘œð‘©ð‘¤ ð‘‘ð‘®ð‘¨ð‘’ ð‘¦ð‘¯ð‘±ð‘šð‘©ð‘¤ð‘›"
+
+#: platform/javascript/export/export.cpp
+msgid "Progressive Web App"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Offline Page"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 144 X 144"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 180 X 180"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 512 X 512"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
msgid "Could not read HTML shell:"
msgstr ""
@@ -17315,6 +18160,180 @@ msgid "Unknown object type."
msgstr ""
#: platform/osx/export/export.cpp
+msgid "App Category"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "High Res"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Location Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Address Book Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Calendar Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Photos Library Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Desktop Folder Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Documents Folder Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Downloads Folder Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Network Volumes Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Removable Volumes Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+msgid "Codesign"
+msgstr ""
+
+#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
+#: platform/windows/export/export.cpp
+msgid "Identity"
+msgstr ""
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#, fuzzy
+msgid "Timestamp"
+msgstr "ð‘‘ð‘²ð‘¥:"
+
+#: platform/osx/export/export.cpp
+msgid "Hardened Runtime"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Replace Existing Signature"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Entitlements"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Custom File"
+msgstr "ð‘“ð‘³ð‘™ð‘’ð‘–ð‘©ð‘¯ð‘Ÿ:"
+
+#: platform/osx/export/export.cpp
+msgid "Allow JIT Code Execution"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Allow Unsigned Executable Memory"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Allow Dyld Environment Variables"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Disable Library Validation"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Audio Input"
+msgstr "ð‘·ð‘›ð‘¦ð‘´ ð‘’ð‘¤ð‘¦ð‘ð‘•:"
+
+#: platform/osx/export/export.cpp
+msgid "Address Book"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Calendars"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Photos Library"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Apple Events"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Debugging"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "App Sandbox"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Network Server"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Network Client"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Device Usb"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Device Bluetooth"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Files Downloads"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Files Pictures"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Files Music"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Files Movies"
+msgstr ""
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#, fuzzy
+msgid "Custom Options"
+msgstr "ð‘“ð‘³ð‘™ð‘’ð‘–ð‘©ð‘¯ð‘Ÿ:"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Notarization"
+msgstr "ð‘¦ð‘¯ð‘‘ð‘»ð‘ð‘©ð‘¤ð‘±ð‘–ð‘©ð‘¯ ð‘¥ð‘´ð‘›"
+
+#: platform/osx/export/export.cpp
+msgid "Apple ID Name"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Apple ID Password"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Apple Team ID"
+msgstr ""
+
+#: platform/osx/export/export.cpp
msgid ""
"Note: The notarization process generally takes less than an hour. When the "
"process is completed, you'll receive an email."
@@ -17504,6 +18523,122 @@ msgid "Force Builtin Codesign"
msgstr ""
#: platform/uwp/export/export.cpp
+msgid "Architecture"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Display Name"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Short Name"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Publisher"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Publisher Display Name"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Product Guid"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Publisher Guid"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Signing"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Certificate"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Algorithm"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Major"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Minor"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Build"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Revision"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Landscape"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Portrait"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Landscape Flipped"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Portrait Flipped"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Store Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 44 X 44 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 71 X 71 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 150 X 150 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 310 X 310 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Wide 310 X 150 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Splash Screen"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Tiles"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Square 150 X 150"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Wide 310 X 150"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Square 310 X 310"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
msgid "Invalid package short name."
msgstr ""
@@ -17568,11 +18703,43 @@ msgid "Debug Certificate"
msgstr ""
#: platform/uwp/export/export.cpp
-msgid "Debug Password"
+msgid "Debug Algorithm"
msgstr ""
-#: platform/uwp/export/export.cpp
-msgid "Debug Algorithm"
+#: platform/windows/export/export.cpp
+msgid "Identity Type"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Timestamp Server URL"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Digest Algorithm"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "File Version"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Product Version"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Company Name"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Product Name"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "File Description"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Trademarks"
msgstr ""
#: platform/windows/export/export.cpp
@@ -17639,12 +18806,14 @@ msgstr ""
msgid "Centered"
msgstr ""
-#: scene/2d/animated_sprite.cpp scene/2d/camera_2d.cpp scene/2d/light_2d.cpp
+#: scene/2d/animated_sprite.cpp scene/2d/camera_2d.cpp
+#: scene/2d/cpu_particles_2d.cpp scene/2d/light_2d.cpp
#: scene/2d/parallax_background.cpp scene/2d/parallax_layer.cpp
#: scene/2d/path_2d.cpp scene/2d/polygon_2d.cpp scene/2d/sprite.cpp
-#: scene/3d/path.cpp scene/3d/physics_body.cpp scene/3d/sprite_3d.cpp
-#: scene/gui/graph_node.cpp scene/gui/rich_text_effect.cpp
-#: scene/main/canvas_layer.cpp scene/resources/material.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/path.cpp scene/3d/physics_body.cpp
+#: scene/3d/sprite_3d.cpp scene/gui/graph_node.cpp
+#: scene/gui/rich_text_effect.cpp scene/main/canvas_layer.cpp
+#: scene/resources/material.cpp scene/resources/particles_material.cpp
#: scene/resources/style_box.cpp
msgid "Offset"
msgstr ""
@@ -17710,11 +18879,6 @@ msgstr "ð‘·ð‘›ð‘¦ð‘´ ð‘’ð‘¤ð‘¦ð‘ð‘•:"
msgid "Override"
msgstr ""
-#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
-#: scene/audio/audio_stream_player.cpp scene/gui/video_player.cpp
-msgid "Stream"
-msgstr ""
-
#: scene/2d/audio_stream_player_2d.cpp scene/audio/audio_stream_player.cpp
#: scene/gui/video_player.cpp servers/audio/effects/audio_effect_amplify.cpp
msgid "Volume dB"
@@ -17738,12 +18902,12 @@ msgid "Stream Paused"
msgstr ""
#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
-#: scene/3d/reflection_probe.cpp scene/3d/visual_instance.cpp
-#: scene/resources/material.cpp
+#: scene/3d/light.cpp scene/3d/reflection_probe.cpp
+#: scene/3d/visual_instance.cpp scene/resources/material.cpp
msgid "Max Distance"
msgstr ""
-#: scene/2d/audio_stream_player_2d.cpp
+#: scene/2d/audio_stream_player_2d.cpp scene/3d/light.cpp
msgid "Attenuation"
msgstr ""
@@ -17791,6 +18955,22 @@ msgstr ""
msgid "Limit"
msgstr ""
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/style_box.cpp
+msgid "Left"
+msgstr ""
+
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/style_box.cpp
+msgid "Right"
+msgstr ""
+
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/dynamic_font.cpp scene/resources/style_box.cpp
+#, fuzzy
+msgid "Bottom"
+msgstr "ð‘“ð‘³ð‘™ð‘’ð‘–ð‘©ð‘¯ð‘Ÿ:"
+
#: scene/2d/camera_2d.cpp
msgid "Smoothed"
msgstr ""
@@ -17986,12 +19166,6 @@ msgstr ""
msgid "Emitting"
msgstr ""
-#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp scene/3d/area.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
-#: scene/resources/environment.cpp
-msgid "Amount"
-msgstr ""
-
#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp
#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
msgid "Lifetime"
@@ -18051,17 +19225,12 @@ msgstr ""
#: scene/2d/mesh_instance_2d.cpp scene/2d/multimesh_instance_2d.cpp
#: scene/2d/particles_2d.cpp scene/2d/polygon_2d.cpp scene/2d/sprite.cpp
#: scene/3d/sprite_3d.cpp scene/gui/nine_patch_rect.cpp
-#: scene/gui/texture_rect.cpp scene/resources/sky.cpp
-#: scene/resources/style_box.cpp scene/resources/visual_shader_nodes.cpp
+#: scene/gui/texture_rect.cpp scene/resources/material.cpp
+#: scene/resources/sky.cpp scene/resources/style_box.cpp
+#: scene/resources/visual_shader_nodes.cpp
msgid "Texture"
msgstr ""
-#: scene/2d/cpu_particles_2d.cpp scene/2d/mesh_instance_2d.cpp
-#: scene/2d/multimesh_instance_2d.cpp scene/2d/particles_2d.cpp
-#: scene/2d/sprite.cpp scene/resources/style_box.cpp
-msgid "Normal Map"
-msgstr ""
-
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
msgid "Emission Shape"
@@ -18081,9 +19250,8 @@ msgid "Normals"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/3d/sprite_3d.cpp scene/resources/material.cpp
-#: scene/resources/particles_material.cpp scene/resources/texture.cpp
-msgid "Flags"
+#: scene/resources/particles_material.cpp
+msgid "Align Y"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
@@ -18103,6 +19271,11 @@ msgid "Initial Velocity"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Velocity Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp servers/physics_2d_server.cpp
#: servers/physics_server.cpp
msgid "Angular Velocity"
@@ -18110,6 +19283,11 @@ msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+msgid "Velocity Curve"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
msgid "Orbit Velocity"
msgstr ""
@@ -18121,6 +19299,21 @@ msgstr "ð‘¤ð‘¦ð‘¯ð‘½"
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+msgid "Accel"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Accel Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Accel Curve"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
msgid "Radial Accel"
msgstr ""
@@ -18130,19 +19323,51 @@ msgid "Tangential Accel"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/2d/joints_2d.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/vehicle_body.cpp
-#: scene/resources/particles_material.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/physics_joint.cpp
+#: scene/3d/vehicle_body.cpp scene/resources/particles_material.cpp
#: servers/audio/effects/audio_effect_reverb.cpp
msgid "Damping"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+msgid "Damping Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Damping Curve"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp scene/3d/light.cpp
+#: scene/resources/particles_material.cpp
msgid "Angle"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+msgid "Angle Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Angle Curve"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+msgid "Scale Amount"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+msgid "Scale Amount Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+msgid "Scale Amount Curve"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
msgid "Color Ramp"
msgstr ""
@@ -18156,6 +19381,42 @@ msgstr ""
msgid "Hue Variation"
msgstr ""
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Variation"
+msgstr "ð‘¦ð‘¯ð‘‘ð‘»ð‘ð‘©ð‘¤ð‘±ð‘–ð‘©ð‘¯ ð‘¥ð‘´ð‘›"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Variation Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Variation Curve"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Speed Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Speed Curve"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Offset Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Offset Curve"
+msgstr ""
+
#: scene/2d/joints_2d.cpp
msgid "Node A and Node B must be PhysicsBody2Ds"
msgstr ""
@@ -18185,6 +19446,7 @@ msgid "Node B"
msgstr ""
#: scene/2d/joints_2d.cpp scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp
+#: scene/3d/light.cpp scene/3d/physics_joint.cpp
#: scene/resources/environment.cpp
msgid "Bias"
msgstr ""
@@ -18193,7 +19455,7 @@ msgstr ""
msgid "Disable Collision"
msgstr ""
-#: scene/2d/joints_2d.cpp
+#: scene/2d/joints_2d.cpp scene/3d/physics_joint.cpp
msgid "Softness"
msgstr ""
@@ -18210,7 +19472,7 @@ msgstr ""
msgid "Rest Length"
msgstr ""
-#: scene/2d/joints_2d.cpp scene/3d/vehicle_body.cpp
+#: scene/2d/joints_2d.cpp scene/3d/physics_joint.cpp scene/3d/vehicle_body.cpp
msgid "Stiffness"
msgstr ""
@@ -18229,7 +19491,7 @@ msgid "Texture Scale"
msgstr ""
#: scene/2d/light_2d.cpp scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp
-#: scene/resources/environment.cpp scene/resources/sky.cpp
+#: scene/3d/light.cpp scene/resources/environment.cpp scene/resources/sky.cpp
msgid "Energy"
msgstr ""
@@ -18265,12 +19527,6 @@ msgstr ""
msgid "Gradient Length"
msgstr ""
-#: scene/2d/light_2d.cpp scene/gui/control.cpp
-#: scene/resources/navigation_mesh.cpp
-#, fuzzy
-msgid "Filter"
-msgstr "ð‘‘ð‘ªð‘œð‘©ð‘¤ ð‘‘ð‘®ð‘¨ð‘’ ð‘¦ð‘¯ð‘±ð‘šð‘©ð‘¤ð‘›"
-
#: scene/2d/light_2d.cpp
msgid "Filter Smooth"
msgstr ""
@@ -18646,10 +19902,6 @@ msgid "Applied Forces"
msgstr ""
#: scene/2d/physics_body_2d.cpp
-msgid "Force"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp
msgid "Torque"
msgstr ""
@@ -18662,7 +19914,7 @@ msgid "Sync To Physics"
msgstr ""
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-msgid "Moving platform"
+msgid "Moving Platform"
msgstr ""
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
@@ -18671,7 +19923,7 @@ msgstr ""
#: scene/2d/physics_body_2d.cpp scene/2d/touch_screen_button.cpp
#: scene/3d/physics_body.cpp scene/gui/texture_button.cpp
-#: scene/resources/line_shape_2d.cpp
+#: scene/resources/line_shape_2d.cpp scene/resources/material.cpp
msgid "Normal"
msgstr ""
@@ -18880,6 +20132,31 @@ msgid ""
"as parent."
msgstr ""
+#: scene/2d/visibility_notifier_2d.cpp scene/3d/visibility_notifier.cpp
+#, fuzzy
+msgid "Pause Animations"
+msgstr "ð‘¨ð‘¯ð‘¦ð‘¥ð‘±ð‘–ð‘©ð‘¯ ð‘¤ð‘µð‘ð‘¦ð‘™"
+
+#: scene/2d/visibility_notifier_2d.cpp scene/3d/visibility_notifier.cpp
+msgid "Freeze Bodies"
+msgstr ""
+
+#: scene/2d/visibility_notifier_2d.cpp
+msgid "Pause Particles"
+msgstr ""
+
+#: scene/2d/visibility_notifier_2d.cpp
+msgid "Pause Animated Sprites"
+msgstr ""
+
+#: scene/2d/visibility_notifier_2d.cpp
+msgid "Process Parent"
+msgstr ""
+
+#: scene/2d/visibility_notifier_2d.cpp
+msgid "Physics Process Parent"
+msgstr ""
+
#: scene/3d/area.cpp
msgid "Reverb Bus"
msgstr ""
@@ -18971,6 +20248,7 @@ msgid "Attenuation Filter"
msgstr ""
#: scene/3d/audio_stream_player_3d.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
#: servers/audio/effects/audio_effect_filter.cpp
msgid "Cutoff Hz"
msgstr ""
@@ -19012,10 +20290,6 @@ msgid "Octree"
msgstr ""
#: scene/3d/baked_lightmap.cpp
-msgid "User Data"
-msgstr ""
-
-#: scene/3d/baked_lightmap.cpp
msgid "Finding meshes and lights"
msgstr ""
@@ -19249,6 +20523,15 @@ msgid "Ring Axis"
msgstr ""
#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Rotate Y"
+msgstr "ð‘¦ð‘¯ð‘‘ð‘»ð‘ð‘©ð‘¤ð‘±ð‘–ð‘©ð‘¯ ð‘¥ð‘´ð‘›"
+
+#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
+msgid "Disable Z"
+msgstr ""
+
+#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
msgid "Flatness"
msgstr ""
@@ -19284,15 +20567,11 @@ msgstr ""
msgid "Dynamic Range"
msgstr ""
-#: scene/3d/gi_probe.cpp
+#: scene/3d/gi_probe.cpp scene/3d/light.cpp
msgid "Normal Bias"
msgstr ""
#: scene/3d/gi_probe.cpp
-msgid "Compress"
-msgstr ""
-
-#: scene/3d/gi_probe.cpp
msgid "Plotting Meshes"
msgstr ""
@@ -19318,15 +20597,27 @@ msgid "Subdiv"
msgstr ""
#: scene/3d/light.cpp
+msgid "Indirect Energy"
+msgstr ""
+
+#: scene/3d/light.cpp
msgid "Negative"
msgstr ""
#: scene/3d/light.cpp
+msgid "Specular"
+msgstr ""
+
+#: scene/3d/light.cpp
#, fuzzy
msgid "Bake Mode"
msgstr "ð‘’ð‘·ð‘¤ ð‘¥ð‘§ð‘”ð‘©ð‘› ð‘‘ð‘®ð‘¨ð‘’"
#: scene/3d/light.cpp
+msgid "Contact"
+msgstr ""
+
+#: scene/3d/light.cpp
msgid "Reverse Cull Face"
msgstr ""
@@ -19335,10 +20626,26 @@ msgid "Directional Shadow"
msgstr ""
#: scene/3d/light.cpp
+msgid "Split 1"
+msgstr ""
+
+#: scene/3d/light.cpp
+msgid "Split 2"
+msgstr ""
+
+#: scene/3d/light.cpp
+msgid "Split 3"
+msgstr ""
+
+#: scene/3d/light.cpp
msgid "Blend Splits"
msgstr ""
#: scene/3d/light.cpp
+msgid "Bias Split Scale"
+msgstr ""
+
+#: scene/3d/light.cpp
msgid "Depth Range"
msgstr ""
@@ -19363,6 +20670,11 @@ msgstr ""
msgid "Spot"
msgstr ""
+#: scene/3d/light.cpp
+#, fuzzy
+msgid "Angle Attenuation"
+msgstr "ð‘¦ð‘¯ð‘‘ð‘»ð‘ð‘©ð‘¤ð‘±ð‘–ð‘©ð‘¯ ð‘¥ð‘´ð‘›"
+
#: scene/3d/mesh_instance.cpp
msgid "Software Skinning"
msgstr ""
@@ -19481,6 +20793,60 @@ msgid "Axis Lock"
msgstr ""
#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Linear X"
+msgstr "ð‘¤ð‘¦ð‘¯ð‘½"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Linear Y"
+msgstr "ð‘¤ð‘¦ð‘¯ð‘½"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Linear Z"
+msgstr "ð‘¤ð‘¦ð‘¯ð‘½"
+
+#: scene/3d/physics_body.cpp
+msgid "Angular X"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Angular Y"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Angular Z"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Motion X"
+msgstr "ð‘“ð‘³ð‘™ð‘’ð‘–ð‘©ð‘¯ð‘Ÿ:"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Motion Y"
+msgstr "ð‘“ð‘³ð‘™ð‘’ð‘–ð‘©ð‘¯ð‘Ÿ:"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Motion Z"
+msgstr "ð‘“ð‘³ð‘™ð‘’ð‘–ð‘©ð‘¯ð‘Ÿ:"
+
+#: scene/3d/physics_body.cpp
+msgid "Move Lock X"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Move Lock Y"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Move Lock Z"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
msgid "Body Offset"
msgstr ""
@@ -19513,6 +20879,14 @@ msgid "Exclude Nodes"
msgstr ""
#: scene/3d/physics_joint.cpp
+msgid "Params"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Impulse Clamp"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit"
msgstr ""
@@ -19524,6 +20898,53 @@ msgstr ""
msgid "Lower"
msgstr ""
+#: scene/3d/physics_joint.cpp scene/3d/vehicle_body.cpp
+#, fuzzy
+msgid "Relaxation"
+msgstr "ð‘¦ð‘¯ð‘‘ð‘»ð‘ð‘©ð‘¤ð‘±ð‘–ð‘©ð‘¯ ð‘¥ð‘´ð‘›"
+
+#: scene/3d/physics_joint.cpp
+msgid "Motor"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Target Velocity"
+msgstr "ð‘¤ð‘¦ð‘¯ð‘½"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Max Impulse"
+msgstr "ð‘ð‘¨ð‘¤ð‘¿:"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit"
+msgstr "ð‘¤ð‘¦ð‘¯ð‘½"
+
+#: scene/3d/physics_joint.cpp
+msgid "Upper Distance"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Lower Distance"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Restitution"
+msgstr "ð‘“ð‘³ð‘™ð‘’ð‘–ð‘©ð‘¯ð‘Ÿ:"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motion"
+msgstr "ð‘¤ð‘¦ð‘¯ð‘½"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Ortho"
+msgstr "ð‘¤ð‘¦ð‘¯ð‘½"
+
#: scene/3d/physics_joint.cpp
msgid "Upper Angle"
msgstr ""
@@ -19533,6 +20954,14 @@ msgid "Lower Angle"
msgstr ""
#: scene/3d/physics_joint.cpp
+msgid "Angular Motion"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Ortho"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
msgid "Swing Span"
msgstr ""
@@ -19541,17 +20970,98 @@ msgid "Twist Span"
msgstr ""
#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit X"
+msgstr "ð‘¤ð‘¦ð‘¯ð‘½"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motor X"
+msgstr "ð‘¤ð‘¦ð‘¯ð‘½"
+
+#: scene/3d/physics_joint.cpp
+msgid "Force Limit"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Spring X"
+msgstr "ð‘¤ð‘¦ð‘¯ð‘½"
+
+#: scene/3d/physics_joint.cpp
+msgid "Equilibrium Point"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit X"
msgstr ""
#: scene/3d/physics_joint.cpp
+msgid "Erp"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Motor X"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Spring X"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit Y"
+msgstr "ð‘¤ð‘¦ð‘¯ð‘½"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motor Y"
+msgstr "ð‘¤ð‘¦ð‘¯ð‘½"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Spring Y"
+msgstr "ð‘¤ð‘¦ð‘¯ð‘½"
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit Y"
msgstr ""
#: scene/3d/physics_joint.cpp
+msgid "Angular Motor Y"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Spring Y"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit Z"
+msgstr "ð‘¤ð‘¦ð‘¯ð‘½"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motor Z"
+msgstr "ð‘¤ð‘¦ð‘¯ð‘½"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Spring Z"
+msgstr "ð‘¤ð‘¦ð‘¯ð‘½"
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit Z"
msgstr ""
+#: scene/3d/physics_joint.cpp
+msgid "Angular Motor Z"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Spring Z"
+msgstr ""
+
#: scene/3d/portal.cpp
msgid "The RoomManager should not be a child or grandchild of a Portal."
msgstr ""
@@ -19656,7 +21166,7 @@ msgstr ""
msgid "Use Default Simplify"
msgstr ""
-#: scene/3d/room.cpp
+#: scene/3d/room.cpp scene/3d/room_manager.cpp
msgid "Room Simplify"
msgstr ""
@@ -19694,6 +21204,12 @@ msgstr ""
msgid "Main"
msgstr ""
+#: scene/3d/room_manager.cpp scene/animation/animation_player.cpp
+#: scene/animation/animation_tree.cpp scene/animation/animation_tree_player.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+msgid "Active"
+msgstr ""
+
#: scene/3d/room_manager.cpp
msgid "Roomlist"
msgstr ""
@@ -19715,6 +21231,46 @@ msgid "Gameplay"
msgstr ""
#: scene/3d/room_manager.cpp
+msgid "Gameplay Monitor"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "Use Secondary PVS"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "Merge Meshes"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "Show Margins"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "Debug Sprawl"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "Overlap Warning Threshold"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "Preview Camera"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "Portal Depth Limit"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "Default Portal Margin"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "Roaming Expansion Margin"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
msgid ""
"RoomList path is invalid.\n"
"Please check the RoomList branch has been assigned in the RoomManager."
@@ -19834,6 +21390,18 @@ msgstr ""
msgid "Billboard"
msgstr ""
+#: scene/3d/sprite_3d.cpp scene/resources/material.cpp
+msgid "Transparent"
+msgstr ""
+
+#: scene/3d/sprite_3d.cpp
+msgid "Shaded"
+msgstr ""
+
+#: scene/3d/sprite_3d.cpp
+msgid "Double Sided"
+msgstr ""
+
#: scene/3d/sprite_3d.cpp
msgid "Alpha Cut"
msgstr ""
@@ -19900,11 +21468,6 @@ msgstr ""
msgid "Max Force"
msgstr "ð‘¥ð‘¦ð‘®ð‘¼"
-#: scene/3d/vehicle_body.cpp
-#, fuzzy
-msgid "Relaxation"
-msgstr "ð‘¦ð‘¯ð‘‘ð‘»ð‘ð‘©ð‘¤ð‘±ð‘–ð‘©ð‘¯ ð‘¥ð‘´ð‘›"
-
#: scene/3d/visibility_notifier.cpp
msgid "AABB"
msgstr ""
@@ -20026,7 +21589,7 @@ msgid "Fadeout Time"
msgstr ""
#: scene/animation/animation_blend_tree.cpp
-msgid "autorestart_"
+msgid "Auto Restart"
msgstr ""
#: scene/animation/animation_blend_tree.cpp
@@ -20102,12 +21665,6 @@ msgstr ""
msgid "Default Blend Time"
msgstr ""
-#: scene/animation/animation_player.cpp scene/animation/animation_tree.cpp
-#: scene/animation/animation_tree_player.cpp
-#: servers/audio/effects/audio_effect_delay.cpp
-msgid "Active"
-msgstr ""
-
#: scene/animation/animation_player.cpp
msgid "Method Call Mode"
msgstr ""
@@ -20221,10 +21778,6 @@ msgstr ""
msgid "Max Iterations"
msgstr "ð‘“ð‘³ð‘™ð‘’ð‘–ð‘©ð‘¯ð‘Ÿ:"
-#: scene/animation/tween.cpp scene/resources/texture.cpp
-msgid "Repeat"
-msgstr ""
-
#: scene/animation/tween.cpp
msgid "Playback Process Mode"
msgstr ""
@@ -20251,18 +21804,6 @@ msgstr ""
msgid "Alignment"
msgstr ""
-#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
-#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
-#: scene/resources/style_box.cpp
-msgid "Horizontal"
-msgstr ""
-
-#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
-#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
-#: scene/resources/style_box.cpp
-msgid "Vertical"
-msgstr ""
-
#: scene/gui/base_button.cpp
msgid "Shortcut In Tooltip"
msgstr ""
@@ -20352,10 +21893,6 @@ msgid "HSV"
msgstr ""
#: scene/gui/color_picker.cpp
-msgid "Raw"
-msgstr ""
-
-#: scene/gui/color_picker.cpp
msgid "Switch between hexadecimal and code values."
msgstr ""
@@ -20409,6 +21946,30 @@ msgid "Focus"
msgstr ""
#: scene/gui/control.cpp
+msgid "Neighbour Left"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Neighbour Top"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Neighbour Right"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Neighbour Bottom"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Next"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Previous"
+msgstr ""
+
+#: scene/gui/control.cpp
msgid "Mouse"
msgstr ""
@@ -20441,7 +22002,7 @@ msgid "Dialog"
msgstr ""
#: scene/gui/dialogs.cpp
-msgid "Hide On Ok"
+msgid "Hide On OK"
msgstr ""
#: scene/gui/dialogs.cpp scene/gui/label.cpp
@@ -20527,7 +22088,7 @@ msgid "Timers"
msgstr "ð‘‘ð‘²ð‘¥:"
#: scene/gui/item_list.cpp scene/gui/popup_menu.cpp scene/gui/tree.cpp
-msgid "Incremental Search Max Interval (msec)"
+msgid "Incremental Search Max Interval Msec"
msgstr ""
#: scene/gui/item_list.cpp scene/gui/tree.cpp
@@ -21039,6 +22600,22 @@ msgstr ""
msgid "Nine Patch Stretch"
msgstr "ð‘¦ð‘¯ð‘‘ð‘»ð‘ð‘©ð‘¤ð‘±ð‘–ð‘©ð‘¯ ð‘¥ð‘´ð‘›"
+#: scene/gui/texture_progress.cpp
+msgid "Stretch Margin Left"
+msgstr ""
+
+#: scene/gui/texture_progress.cpp
+msgid "Stretch Margin Top"
+msgstr ""
+
+#: scene/gui/texture_progress.cpp
+msgid "Stretch Margin Right"
+msgstr ""
+
+#: scene/gui/texture_progress.cpp
+msgid "Stretch Margin Bottom"
+msgstr ""
+
#: scene/gui/tree.cpp
msgid "Custom Minimum Height"
msgstr ""
@@ -21073,7 +22650,7 @@ msgid "Paused"
msgstr ""
#: scene/gui/video_player.cpp
-msgid "Buffering (msec)"
+msgid "Buffering Msec"
msgstr ""
#: scene/gui/video_player.cpp
@@ -21382,6 +22959,22 @@ msgid "Shadow Atlas"
msgstr ""
#: scene/main/viewport.cpp
+msgid "Quad 0"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 1"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 2"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 3"
+msgstr ""
+
+#: scene/main/viewport.cpp
#, fuzzy
msgid "Canvas Transform"
msgstr "ð‘—ð‘±ð‘¯ð‘¡ ð‘¨ð‘¯ð‘¦ð‘¥ð‘±ð‘–ð‘©ð‘¯ ð‘‘ð‘®ð‘¨ð‘¯ð‘•ð‘“ð‘¹ð‘¥"
@@ -21396,6 +22989,10 @@ msgid "Tooltip Delay (sec)"
msgstr ""
#: scene/register_scene_types.cpp
+msgid "Swap OK Cancel"
+msgstr ""
+
+#: scene/register_scene_types.cpp
msgid "Use hiDPI"
msgstr ""
@@ -21408,18 +23005,6 @@ msgid "Custom Font"
msgstr ""
#: scene/resources/audio_stream_sample.cpp
-msgid "Loop Mode"
-msgstr ""
-
-#: scene/resources/audio_stream_sample.cpp
-msgid "Loop Begin"
-msgstr ""
-
-#: scene/resources/audio_stream_sample.cpp
-msgid "Loop End"
-msgstr ""
-
-#: scene/resources/audio_stream_sample.cpp
#: servers/audio/effects/audio_stream_generator.cpp servers/audio_server.cpp
msgid "Mix Rate"
msgstr ""
@@ -21470,6 +23055,15 @@ msgid "Extra Spacing"
msgstr ""
#: scene/resources/dynamic_font.cpp
+msgid "Char"
+msgstr ""
+
+#: scene/resources/dynamic_font.cpp scene/resources/world.cpp
+#: scene/resources/world_2d.cpp
+msgid "Space"
+msgstr ""
+
+#: scene/resources/dynamic_font.cpp
msgid "Font"
msgstr ""
@@ -21673,6 +23267,42 @@ msgid "Glow"
msgstr ""
#: scene/resources/environment.cpp
+msgid "Levels"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "1"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "2"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "3"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "4"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "5"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "6"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "7"
+msgstr ""
+
+#: scene/resources/environment.cpp
msgid "Bloom"
msgstr ""
@@ -21755,9 +23385,62 @@ msgid "Next Pass"
msgstr ""
#: scene/resources/material.cpp
+msgid "Use Shadow To Opacity"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Unshaded"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Vertex Lighting"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "No Depth Test"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Use Point Size"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "World Triplanar"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Fixed Size"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Albedo Tex Force sRGB"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Do Not Receive Shadows"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Disable Ambient Light"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Ensure Correct Normals"
+msgstr "3-ð‘› ð‘‘ð‘®ð‘¨ð‘¯ð‘•ð‘“ð‘¹ð‘¥ ð‘‘ð‘®ð‘¨ð‘’"
+
+#: scene/resources/material.cpp
msgid "Vertex Color"
msgstr ""
+#: scene/resources/material.cpp
+msgid "Use As Albedo"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Is sRGB"
+msgstr ""
+
#: scene/resources/material.cpp servers/visual_server.cpp
msgid "Parameters"
msgstr ""
@@ -21789,6 +23472,11 @@ msgid "Billboard Mode"
msgstr "ð‘’ð‘·ð‘¤ ð‘¥ð‘§ð‘”ð‘©ð‘› ð‘‘ð‘®ð‘¨ð‘’"
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Billboard Keep Scale"
+msgstr "ð‘’ð‘·ð‘¤ ð‘¥ð‘§ð‘”ð‘©ð‘› ð‘‘ð‘®ð‘¨ð‘’"
+
+#: scene/resources/material.cpp
msgid "Grow"
msgstr ""
@@ -21797,6 +23485,10 @@ msgid "Grow Amount"
msgstr ""
#: scene/resources/material.cpp
+msgid "Use Alpha Scissor"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Alpha Scissor Threshold"
msgstr ""
@@ -21825,10 +23517,18 @@ msgid "Metallic Specular"
msgstr ""
#: scene/resources/material.cpp
+msgid "Metallic Texture"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Metallic Texture Channel"
msgstr ""
#: scene/resources/material.cpp
+msgid "Roughness Texture"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Roughness Texture Channel"
msgstr ""
@@ -21845,6 +23545,14 @@ msgid "Emission Operator"
msgstr ""
#: scene/resources/material.cpp
+msgid "Emission On UV2"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Emission Texture"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "NormalMap"
msgstr ""
@@ -21857,6 +23565,10 @@ msgid "Rim Tint"
msgstr ""
#: scene/resources/material.cpp
+msgid "Rim Texture"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Clearcoat"
msgstr ""
@@ -21865,14 +23577,26 @@ msgid "Clearcoat Gloss"
msgstr ""
#: scene/resources/material.cpp
+msgid "Clearcoat Texture"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Anisotropy"
msgstr ""
#: scene/resources/material.cpp
+msgid "Anisotropy Flowmap"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Ambient Occlusion"
msgstr ""
#: scene/resources/material.cpp
+msgid "On UV2"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Texture Channel"
msgstr ""
@@ -21907,6 +23631,11 @@ msgid "Transmission"
msgstr ""
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Transmission Texture"
+msgstr "ð‘“ð‘³ð‘™ð‘’ð‘–ð‘©ð‘¯ð‘Ÿ:"
+
+#: scene/resources/material.cpp
msgid "Refraction"
msgstr ""
@@ -21923,6 +23652,10 @@ msgid "UV1"
msgstr ""
#: scene/resources/material.cpp
+msgid "Triplanar"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Triplanar Sharpness"
msgstr ""
@@ -22112,6 +23845,14 @@ msgstr ""
msgid "Point Count"
msgstr ""
+#: scene/resources/particles_material.cpp
+msgid "Scale Random"
+msgstr ""
+
+#: scene/resources/particles_material.cpp
+msgid "Scale Curve"
+msgstr ""
+
#: scene/resources/physics_material.cpp
msgid "Rough"
msgstr ""
@@ -22169,10 +23910,6 @@ msgid "A"
msgstr ""
#: scene/resources/shader.cpp
-msgid "Code"
-msgstr ""
-
-#: scene/resources/shader.cpp
msgid "Custom Defines"
msgstr ""
@@ -22260,14 +23997,6 @@ msgid "Grow End"
msgstr ""
#: scene/resources/texture.cpp
-msgid "Storage"
-msgstr ""
-
-#: scene/resources/texture.cpp
-msgid "Lossy Quality"
-msgstr ""
-
-#: scene/resources/texture.cpp
msgid "Load Path"
msgstr ""
@@ -22380,10 +24109,6 @@ msgstr ""
msgid "Fallback Environment"
msgstr ""
-#: scene/resources/world.cpp scene/resources/world_2d.cpp
-msgid "Space"
-msgstr ""
-
#: scene/resources/world.cpp
msgid "Scenario"
msgstr ""
@@ -22457,8 +24182,33 @@ msgstr ""
msgid "Wet"
msgstr ""
-#: servers/audio/effects/audio_effect_compressor.cpp
-msgid "Threshold"
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "Voice"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+msgid "Delay (ms)"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_phaser.cpp
+msgid "Rate Hz"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "Depth (ms)"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+msgid "Level dB"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+#: servers/audio/effects/audio_effect_panner.cpp
+msgid "Pan"
msgstr ""
#: servers/audio/effects/audio_effect_compressor.cpp
@@ -22483,19 +24233,6 @@ msgid "Tap 1"
msgstr ""
#: servers/audio/effects/audio_effect_delay.cpp
-msgid "Delay (ms)"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_delay.cpp
-msgid "Level dB"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_delay.cpp
-#: servers/audio/effects/audio_effect_panner.cpp
-msgid "Pan"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_delay.cpp
msgid "Tap 2"
msgstr ""
@@ -22553,10 +24290,6 @@ msgstr ""
msgid "Range Max Hz"
msgstr ""
-#: servers/audio/effects/audio_effect_phaser.cpp
-msgid "Rate Hz"
-msgstr ""
-
#: servers/audio/effects/audio_effect_pitch_shift.cpp
msgid "Oversampling"
msgstr ""
@@ -22571,7 +24304,7 @@ msgid "Predelay"
msgstr ""
#: servers/audio/effects/audio_effect_reverb.cpp
-msgid "(msec)"
+msgid "Msec"
msgstr ""
#: servers/audio/effects/audio_effect_reverb.cpp
diff --git a/editor/translations/eo.po b/editor/translations/eo.po
index 485f81265c..cf7f2d269d 100644
--- a/editor/translations/eo.po
+++ b/editor/translations/eo.po
@@ -28,7 +28,7 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 4.9-dev\n"
-#: core/bind/core_bind.cpp
+#: core/bind/core_bind.cpp main/main.cpp
msgid "Tablet Driver"
msgstr ""
@@ -131,8 +131,8 @@ msgstr "Pozicio de doko"
#: core/bind/core_bind.cpp editor/editor_settings.cpp main/main.cpp
#: modules/gdscript/gdscript_editor.cpp modules/gridmap/grid_map.cpp
#: modules/mono/csharp_script.cpp modules/visual_script/visual_script_nodes.cpp
-#: scene/2d/tile_map.cpp scene/3d/camera.cpp scene/gui/control.cpp
-#: scene/gui/graph_edit.cpp scene/main/viewport.cpp
+#: scene/2d/tile_map.cpp scene/3d/camera.cpp scene/3d/light.cpp
+#: scene/gui/control.cpp scene/gui/graph_edit.cpp scene/main/viewport.cpp
#: scene/resources/dynamic_font.cpp scene/resources/navigation_mesh.cpp
#: scene/resources/primitive_meshes.cpp scene/resources/sky.cpp
#: scene/resources/style_box.cpp scene/resources/texture.cpp
@@ -235,8 +235,7 @@ msgid "Data"
msgstr ""
#: core/io/file_access_network.cpp core/register_core_types.cpp
-#: editor/editor_settings.cpp editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp main/main.cpp
+#: editor/editor_settings.cpp main/main.cpp
#: modules/gdscript/language_server/gdscript_language_server.cpp
#, fuzzy
msgid "Network"
@@ -516,9 +515,10 @@ msgstr "AntaÅ­agordo"
msgid "Relative"
msgstr "Kapti relative"
-#: core/os/input_event.cpp scene/2d/camera_2d.cpp
-#: scene/3d/interpolated_camera.cpp scene/animation/animation_player.cpp
-#: scene/resources/environment.cpp
+#: core/os/input_event.cpp scene/2d/camera_2d.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/interpolated_camera.cpp
+#: scene/animation/animation_player.cpp scene/resources/environment.cpp
+#: scene/resources/particles_material.cpp
#, fuzzy
msgid "Speed"
msgstr "Skalo:"
@@ -568,8 +568,9 @@ msgstr "ÅœanÄu"
msgid "Pitch"
msgstr "Skalo:"
-#: core/os/input_event.cpp scene/2d/physics_body_2d.cpp
-#: scene/3d/physics_body.cpp
+#: core/os/input_event.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/physics_body_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/3d/physics_body.cpp scene/resources/particles_material.cpp
msgid "Velocity"
msgstr ""
@@ -587,6 +588,8 @@ msgid "Controller Value"
msgstr ""
#: core/project_settings.cpp editor/editor_node.cpp main/main.cpp
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/windows/export/export.cpp
#, fuzzy
msgid "Application"
msgstr "Faro"
@@ -605,13 +608,16 @@ msgstr "Projektaj agordoj..."
#: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp
#: editor/editor_plugin_settings.cpp editor/editor_profiler.cpp
#: editor/project_manager.cpp editor/settings_config_dialog.cpp
-#: modules/gdnative/nativescript/nativescript.cpp scene/2d/area_2d.cpp
-#: scene/3d/area.cpp scene/main/node.cpp
+#: modules/gdnative/nativescript/nativescript.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/osx/export/export.cpp scene/2d/area_2d.cpp scene/3d/area.cpp
+#: scene/main/node.cpp
msgid "Name"
msgstr "Nomo"
#: core/project_settings.cpp editor/editor_help.cpp
-#: modules/visual_script/visual_script_nodes.cpp
+#: modules/visual_script/visual_script_nodes.cpp platform/uwp/export/export.cpp
+#: platform/windows/export/export.cpp
msgid "Description"
msgstr "Priskribo"
@@ -647,7 +653,7 @@ msgid "Custom User Dir Name"
msgstr ""
#: core/project_settings.cpp editor/animation_track_editor.cpp
-#: editor/editor_audio_buses.cpp servers/audio_server.cpp
+#: editor/editor_audio_buses.cpp main/main.cpp servers/audio_server.cpp
msgid "Audio"
msgstr "AÅ­dio"
@@ -815,10 +821,13 @@ msgstr "Filtriloj:"
msgid "Sharpen Intensity"
msgstr ""
-#: core/project_settings.cpp editor/editor_node.cpp editor/editor_settings.cpp
-#: editor/plugins/script_editor_plugin.cpp editor/project_export.cpp
-#: main/main.cpp modules/gdscript/gdscript.cpp
-#: modules/visual_script/visual_script.cpp scene/3d/room_manager.cpp
+#: core/project_settings.cpp editor/editor_export.cpp editor/editor_node.cpp
+#: editor/editor_settings.cpp editor/plugins/script_editor_plugin.cpp
+#: editor/project_export.cpp main/main.cpp modules/gdscript/gdscript.cpp
+#: modules/visual_script/visual_script.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp scene/3d/room_manager.cpp
#: scene/main/scene_tree.cpp scene/resources/shape_2d.cpp
#: servers/visual_server.cpp
msgid "Debug"
@@ -1054,6 +1063,7 @@ msgid "Subsurface Scattering"
msgstr ""
#: drivers/gles3/rasterizer_scene_gles3.cpp
+#: editor/import/resource_importer_texture.cpp
#: editor/plugins/spatial_editor_plugin.cpp modules/gltf/gltf_node.cpp
#: modules/gridmap/grid_map.cpp scene/2d/cpu_particles_2d.cpp
#: scene/2d/node_2d.cpp scene/2d/parallax_layer.cpp scene/2d/polygon_2d.cpp
@@ -1351,6 +1361,7 @@ msgid "Editors"
msgstr "Redaktilo"
#: editor/animation_track_editor.cpp editor/editor_settings.cpp
+#: editor/import/resource_importer_scene.cpp
#: editor/plugins/animation_player_editor_plugin.cpp editor/scene_tree_dock.cpp
#: scene/2d/animated_sprite.cpp scene/2d/cpu_particles_2d.cpp
#: scene/2d/sprite.cpp scene/3d/cpu_particles.cpp scene/3d/sprite_3d.cpp
@@ -1584,14 +1595,14 @@ msgstr "Animado paÅo valoro."
msgid "Seconds"
msgstr "Sekundoj"
-#: editor/animation_track_editor.cpp
+#: editor/animation_track_editor.cpp editor/import/resource_importer_scene.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp main/main.cpp
#: scene/resources/texture.cpp
msgid "FPS"
msgstr "FPS"
#: editor/animation_track_editor.cpp editor/editor_plugin_settings.cpp
-#: editor/editor_resource_picker.cpp
+#: editor/editor_resource_picker.cpp editor/import/resource_importer_wav.cpp
#: editor/plugins/polygon_2d_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
@@ -2557,7 +2568,9 @@ msgid "Remove Autoload"
msgstr "Forigi aÅ­toÅargon"
#: editor/editor_autoload_settings.cpp editor/editor_plugin_settings.cpp
-#: modules/gdscript/gdscript.cpp scene/2d/polygon_2d.cpp scene/3d/area.cpp
+#: modules/gdscript/gdscript.cpp platform/android/export/export_plugin.cpp
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#: scene/2d/polygon_2d.cpp scene/3d/area.cpp scene/3d/physics_joint.cpp
#: scene/3d/reflection_probe.cpp scene/main/canvas_layer.cpp
#: scene/resources/material.cpp servers/visual_server.cpp
msgid "Enable"
@@ -2727,6 +2740,58 @@ msgstr ""
#: editor/editor_export.cpp platform/android/export/export_plugin.cpp
#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Custom Template"
+msgstr "Redaktilo"
+
+#: editor/editor_export.cpp editor/project_export.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp
+msgid "Release"
+msgstr ""
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Binary Format"
+msgstr "Formo"
+
+#: editor/editor_export.cpp
+msgid "64 Bits"
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Embed PCK"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Texture Format"
+msgstr "Mezurado reÄimo"
+
+#: editor/editor_export.cpp
+msgid "BPTC"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "S3TC"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "ETC"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "ETC2"
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "No BPTC Fallbacks"
+msgstr ""
+
+#: editor/editor_export.cpp platform/android/export/export_plugin.cpp
+#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
msgid "Custom debug template not found."
msgstr "Propra sencimiga Åablonon ne trovitis."
@@ -2905,6 +2970,7 @@ msgid "Make Current"
msgstr "Farigi aktuale"
#: editor/editor_feature_profile.cpp editor/editor_node.cpp
+#: editor/import/resource_importer_scene.cpp
#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
msgid "Import"
msgstr "Enporti"
@@ -3033,8 +3099,11 @@ msgstr "Sukceso!"
msgid "Display Mode"
msgstr "ReÄimo de ludado:"
-#: editor/editor_file_dialog.cpp main/main.cpp modules/csg/csg_shape.cpp
-#: modules/visual_script/visual_script_nodes.cpp
+#: editor/editor_file_dialog.cpp
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+#: editor/import/resource_importer_wav.cpp main/main.cpp
+#: modules/csg/csg_shape.cpp modules/visual_script/visual_script_nodes.cpp
#: modules/visual_script/visual_script_yield_nodes.cpp scene/2d/light_2d.cpp
#: scene/2d/physics_body_2d.cpp scene/2d/tile_map.cpp
#: scene/3d/baked_lightmap.cpp scene/3d/light.cpp scene/3d/physics_body.cpp
@@ -3173,7 +3242,9 @@ msgstr "(Re)enportas havaĵoj"
msgid "Reimport Missing Imported Files"
msgstr ""
-#: editor/editor_help.cpp
+#: editor/editor_help.cpp scene/2d/camera_2d.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/resources/dynamic_font.cpp
+#: scene/resources/style_box.cpp
msgid "Top"
msgstr "Supro"
@@ -3227,6 +3298,7 @@ msgid "Fonts"
msgstr ""
#: editor/editor_help.cpp editor/plugins/theme_editor_plugin.cpp
+#: platform/iphone/export/export.cpp
msgid "Icons"
msgstr ""
@@ -3395,7 +3467,9 @@ msgstr ""
msgid "Pin value [Disabled because '%s' is editor-only]"
msgstr ""
-#: editor/editor_inspector.cpp editor/scene_tree_dock.cpp
+#: editor/editor_inspector.cpp
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+#: editor/scene_tree_dock.cpp
#: modules/visual_script/visual_script_func_nodes.cpp
#: modules/visual_script/visual_script_nodes.cpp
#: modules/visual_script/visual_script_property_selector.cpp
@@ -3738,6 +3812,16 @@ msgid "Quick Open Script..."
msgstr "Rapide malfermi skripton..."
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Save & Reload"
+msgstr "Konservi kaj rekomenci"
+
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Save changes to '%s' before reloading?"
+msgstr "Konservi ÅanÄojn al '%s' antaÅ­ fermo?"
+
+#: editor/editor_node.cpp
msgid "Save & Close"
msgstr "Konservi kaj fermi"
@@ -3856,6 +3940,11 @@ msgid "Open Project Manager?"
msgstr "Malfermi projekton mastrumilon?"
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Save changes to the following scene(s) before reloading?"
+msgstr "Konservi ÅanÄojn al la jena(j) sceno(j) antaÅ­ foriri?"
+
+#: editor/editor_node.cpp
msgid "Save & Quit"
msgstr "Konservi kaj foriri"
@@ -4129,8 +4218,8 @@ msgstr "Parametro ÅanÄiÄis"
#: editor/editor_node.cpp
#, fuzzy
-msgid "Translate Properties"
-msgstr "Atributoj"
+msgid "Localize Settings"
+msgstr "Lokaĵigado"
#: editor/editor_node.cpp
#, fuzzy
@@ -4147,8 +4236,8 @@ msgstr "Inspektoro"
#: editor/editor_node.cpp
#, fuzzy
-msgid "Capitalize Properties"
-msgstr "Atributoj"
+msgid "Default Property Name Style"
+msgstr "Projekta vojo:"
#: editor/editor_node.cpp
msgid "Default Float Step"
@@ -4748,7 +4837,9 @@ msgstr "Instalitaj kromprogramoj:"
msgid "Update"
msgstr "Äœisdatigi"
-#: editor/editor_plugin_settings.cpp
+#: editor/editor_plugin_settings.cpp platform/android/export/export_plugin.cpp
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp
#, fuzzy
msgid "Version"
msgstr "Versio:"
@@ -5776,7 +5867,7 @@ msgstr "Plene rektangula"
msgid "Rect Custom Position"
msgstr "Pozicio de doko"
-#: editor/editor_settings.cpp
+#: editor/editor_settings.cpp platform/android/export/export_plugin.cpp
msgid "Screen"
msgstr ""
@@ -5801,6 +5892,19 @@ msgid "Editor SSL Certificates"
msgstr ""
#: editor/editor_settings.cpp
+msgid "HTTP Proxy"
+msgstr ""
+
+#: editor/editor_settings.cpp
+msgid "Host"
+msgstr ""
+
+#: editor/editor_settings.cpp editor/fileserver/editor_file_server.cpp
+#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp
+msgid "Port"
+msgstr ""
+
+#: editor/editor_settings.cpp
msgid "Project Manager"
msgstr "Mastrumilo de Projektoj"
@@ -5843,7 +5947,8 @@ msgstr ""
msgid "String Color"
msgstr "Memoras dosieron:"
-#: editor/editor_settings.cpp
+#: editor/editor_settings.cpp platform/javascript/export/export.cpp
+#: platform/uwp/export/export.cpp
#, fuzzy
msgid "Background Color"
msgstr "Elekti koloron"
@@ -6025,22 +6130,6 @@ msgid "Starting the download..."
msgstr ""
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "HTTP Proxy"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Host"
-msgstr ""
-
-#: editor/export_template_manager.cpp editor/fileserver/editor_file_server.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp main/main.cpp
-#: modules/mono/mono_gd/gd_mono.cpp
-msgid "Port"
-msgstr ""
-
-#: editor/export_template_manager.cpp
msgid "Error requesting URL:"
msgstr "Eraro dum demandi la URL:"
@@ -6309,6 +6398,7 @@ msgstr ""
#: editor/fileserver/editor_file_server.cpp
#: editor/plugins/version_control_editor_plugin.cpp
+#: platform/uwp/export/export.cpp platform/windows/export/export.cpp
msgid "Password"
msgstr ""
@@ -6692,6 +6782,117 @@ msgstr ""
msgid "Use Ambient"
msgstr ""
+#: editor/import/resource_importer_bitmask.cpp
+#, fuzzy
+msgid "Create From"
+msgstr "Krei dosierujon"
+
+#: editor/import/resource_importer_bitmask.cpp
+#: servers/audio/effects/audio_effect_compressor.cpp
+msgid "Threshold"
+msgstr ""
+
+#: editor/import/resource_importer_csv_translation.cpp
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_scene.cpp
+#: editor/import/resource_importer_texture.cpp
+#: editor/import/resource_importer_wav.cpp scene/3d/gi_probe.cpp
+#, fuzzy
+msgid "Compress"
+msgstr "Komponantoj"
+
+#: editor/import/resource_importer_csv_translation.cpp
+msgid "Delimiter"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+msgid "No BPTC If RGB"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/sprite_3d.cpp
+#: scene/resources/material.cpp scene/resources/particles_material.cpp
+#: scene/resources/texture.cpp
+msgid "Flags"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/animation/tween.cpp
+#: scene/resources/texture.cpp
+msgid "Repeat"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/2d/light_2d.cpp
+#: scene/gui/control.cpp scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Filter"
+msgstr "Filtriloj:"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Mipmaps"
+msgstr "Signaloj"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+msgid "Anisotropic"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+msgid "sRGB"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#, fuzzy
+msgid "Slices"
+msgstr "Ĉiuj aparatoj"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
+#: scene/resources/style_box.cpp
+#, fuzzy
+msgid "Horizontal"
+msgstr "Movi horizontalan gvidilon"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
+#: scene/resources/style_box.cpp
+#, fuzzy
+msgid "Vertical"
+msgstr "Movi vertikalan gvidilon"
+
+#: editor/import/resource_importer_obj.cpp
+#, fuzzy
+msgid "Generate Tangents"
+msgstr "Nombrado de generintaj punktoj:"
+
+#: editor/import/resource_importer_obj.cpp
+#, fuzzy
+msgid "Scale Mesh"
+msgstr "Skalada reÄimo"
+
+#: editor/import/resource_importer_obj.cpp
+#, fuzzy
+msgid "Offset Mesh"
+msgstr "Krada deÅovo:"
+
+#: editor/import/resource_importer_obj.cpp
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Octahedral Compression"
+msgstr "Uzi regulesprimojn"
+
+#: editor/import/resource_importer_obj.cpp
+#, fuzzy
+msgid "Optimize Mesh Flags"
+msgstr "Grando: "
+
#: editor/import/resource_importer_scene.cpp
msgid "Import as Single Scene"
msgstr "Enporti kiel unuopa sceno"
@@ -6732,6 +6933,155 @@ msgstr "Enporti kiel multoblaj scenoj"
msgid "Import as Multiple Scenes+Materials"
msgstr "Enporti kiel multoblaj scenoj+materialoj"
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Nodes"
+msgstr "Nodo"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Root Type"
+msgstr "Tipo de membro"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Root Name"
+msgstr "Fora "
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Root Scale"
+msgstr "Skalo:"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Custom Script"
+msgstr "Eltondi nodo(j)n"
+
+#: editor/import/resource_importer_scene.cpp scene/resources/texture.cpp
+#, fuzzy
+msgid "Storage"
+msgstr "Memoras dosieron:"
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Use Legacy Names"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+#, fuzzy
+msgid "Materials"
+msgstr "Parametro ÅanÄiÄis"
+
+#: editor/import/resource_importer_scene.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Location"
+msgstr "Lokaĵigado"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Keep On Reimport"
+msgstr "Reenporti"
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+#, fuzzy
+msgid "Meshes"
+msgstr "MaÅo"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Ensure Tangents"
+msgstr "ÅœanÄi tanÄanton de kurbo"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Light Baking"
+msgstr "Baki lummapojn"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Lightmap Texel Size"
+msgstr "Baki lummapojn"
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+msgid "Skins"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Use Named Skins"
+msgstr "Uzi skalan kaptadon"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "External Files"
+msgstr "Malfermi dosieron"
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Store In Subdir"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Filter Script"
+msgstr "Filtriloj:"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Keep Custom Tracks"
+msgstr "Transformo"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Optimizer"
+msgstr "Optimigi"
+
+#: editor/import/resource_importer_scene.cpp main/main.cpp
+#: modules/mono/mono_gd/gd_mono.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp scene/2d/camera_2d.cpp scene/2d/light_2d.cpp
+#: scene/2d/navigation_polygon.cpp scene/2d/ray_cast_2d.cpp scene/2d/sprite.cpp
+#: scene/2d/y_sort.cpp scene/3d/audio_stream_player_3d.cpp
+#: scene/3d/baked_lightmap.cpp scene/3d/interpolated_camera.cpp
+#: scene/3d/light.cpp scene/3d/navigation_mesh_instance.cpp
+#: scene/3d/physics_joint.cpp scene/3d/ray_cast.cpp scene/3d/sprite_3d.cpp
+#: scene/gui/graph_edit.cpp scene/gui/rich_text_label.cpp
+#: scene/resources/curve.cpp scene/resources/environment.cpp
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Enabled"
+msgstr "Åœaltita"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Max Linear Error"
+msgstr "Maks. Lineara Eraro:"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Max Angular Error"
+msgstr "Maks. Angula Eraro:"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Max Angle"
+msgstr "Valoro"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Remove Unused Tracks"
+msgstr "Forigi animacian trakon"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Clips"
+msgstr "Animado Filmitaĵero:"
+
+#: editor/import/resource_importer_scene.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/particles_2d.cpp scene/3d/area.cpp scene/3d/cpu_particles.cpp
+#: scene/3d/particles.cpp scene/resources/environment.cpp
+msgid "Amount"
+msgstr ""
+
#: editor/import/resource_importer_scene.cpp
#: editor/plugins/mesh_library_editor_plugin.cpp
msgid "Import Scene"
@@ -6773,12 +7123,147 @@ msgstr "Ĉu vi revenis Nodo-devenitan objekton en la metodo `post_import()`?"
msgid "Saving..."
msgstr "Konservas..."
+#: editor/import/resource_importer_texture.cpp scene/resources/texture.cpp
+msgid "Lossy Quality"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "HDR Mode"
+msgstr "Elektada reÄimo"
+
+#: editor/import/resource_importer_texture.cpp
+msgid "BPTC LDR"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/mesh_instance_2d.cpp scene/2d/multimesh_instance_2d.cpp
+#: scene/2d/particles_2d.cpp scene/2d/sprite.cpp scene/resources/style_box.cpp
+msgid "Normal Map"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Process"
+msgstr "Movada reÄimo"
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Fix Alpha Border"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Premult Alpha"
+msgstr "Redakti plurlateron"
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Hdr As Srgb"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Invert Color"
+msgstr "Elekti koloron"
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Normal Map Invert Y"
+msgstr "Formo"
+
+#: editor/import/resource_importer_texture.cpp
+#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
+#: scene/audio/audio_stream_player.cpp scene/gui/video_player.cpp
+msgid "Stream"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Size Limit"
+msgstr "Grando: "
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Detect 3D"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "SVG"
+msgstr ""
+
#: editor/import/resource_importer_texture.cpp
msgid ""
"Warning, no suitable PC VRAM compression enabled in Project Settings. This "
"texture will not display correctly on PC."
msgstr ""
+#: editor/import/resource_importer_texture_atlas.cpp
+#, fuzzy
+msgid "Atlas File"
+msgstr "Grando de konturo:"
+
+#: editor/import/resource_importer_texture_atlas.cpp
+#, fuzzy
+msgid "Import Mode"
+msgstr "Doko de enporto"
+
+#: editor/import/resource_importer_texture_atlas.cpp
+msgid "Crop To Region"
+msgstr ""
+
+#: editor/import/resource_importer_texture_atlas.cpp
+msgid "Trim Alpha Border From Region"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp scene/2d/physics_body_2d.cpp
+#, fuzzy
+msgid "Force"
+msgstr "Risurca Vojo"
+
+#: editor/import/resource_importer_wav.cpp
+msgid "8 Bit"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp main/main.cpp
+#: modules/mono/editor/csharp_project.cpp modules/mono/mono_gd/gd_mono.cpp
+msgid "Mono"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+#, fuzzy
+msgid "Max Rate"
+msgstr "Valoro"
+
+#: editor/import/resource_importer_wav.cpp
+#, fuzzy
+msgid "Max Rate Hz"
+msgstr "Valoro"
+
+#: editor/import/resource_importer_wav.cpp
+msgid "Trim"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+#, fuzzy
+msgid "Normalize"
+msgstr "Formo"
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+#, fuzzy
+msgid "Loop Mode"
+msgstr "Movada reÄimo"
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+#, fuzzy
+msgid "Loop Begin"
+msgstr "Movada reÄimo"
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+#, fuzzy
+msgid "Loop End"
+msgstr "Movada reÄimo"
+
#: editor/import_defaults_editor.cpp
msgid "Select Importer"
msgstr "Elektu enportilon"
@@ -6852,6 +7337,29 @@ msgstr "Ne eblas Åargi risurcon."
#: editor/inspector_dock.cpp
#, fuzzy
+msgid "Property Name Style"
+msgstr "Projekta nomo:"
+
+#: editor/inspector_dock.cpp scene/gui/color_picker.cpp
+msgid "Raw"
+msgstr ""
+
+#: editor/inspector_dock.cpp
+#, fuzzy
+msgid "Capitalized"
+msgstr "Kapitaligi"
+
+#: editor/inspector_dock.cpp
+#, fuzzy
+msgid "Localized"
+msgstr "Lokaĵaro"
+
+#: editor/inspector_dock.cpp
+msgid "Localization not available for current language."
+msgstr ""
+
+#: editor/inspector_dock.cpp
+#, fuzzy
msgid "Copy Properties"
msgstr "Atributoj"
@@ -7908,18 +8416,26 @@ msgid "License (Z-A)"
msgstr "Permesilo (Z-A)"
#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgctxt "Pagination"
msgid "First"
msgstr "Unua"
-#: editor/plugins/asset_library_editor_plugin.cpp scene/gui/control.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgctxt "Pagination"
msgid "Previous"
msgstr "AntaÅ­a"
-#: editor/plugins/asset_library_editor_plugin.cpp scene/gui/control.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgctxt "Pagination"
msgid "Next"
msgstr "Sekva"
#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgctxt "Pagination"
msgid "Last"
msgstr "Lasta"
@@ -8161,19 +8677,19 @@ msgstr ""
"Kiam aktive, movado de Control-nodoj ÅanÄas iliajn ankrojn anstataÅ­ iliajn "
"marÄenojn."
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Top Left"
msgstr "Supre maldekstre"
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Top Right"
msgstr "Supre dekstre"
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Bottom Right"
msgstr "Malsupre dekstre"
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Bottom Left"
msgstr "Malsupre maldekstre"
@@ -8901,6 +9417,19 @@ msgstr "Baki malloka-iluminada (GI) sondilon"
msgid "Gradient Edited"
msgstr "Gradienton redaktis"
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+msgid "Swap GradientTexture2D Fill Points"
+msgstr ""
+
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+msgid "Swap Gradient Fill Points"
+msgstr ""
+
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+#, fuzzy
+msgid "Toggle Grid Snap"
+msgstr "Baskuli reÄimon"
+
#: editor/plugins/item_list_editor_plugin.cpp
msgid "Item %d"
msgstr "Elemento %d"
@@ -9132,9 +9661,9 @@ msgid ""
"%s"
msgstr ""
-#: editor/plugins/mesh_library_editor_plugin.cpp modules/gridmap/grid_map.cpp
+#: editor/plugins/mesh_library_editor_plugin.cpp
#, fuzzy
-msgid "Mesh Library"
+msgid "MeshLibrary"
msgstr "MaÅo biblioteko..."
#: editor/plugins/mesh_library_editor_plugin.cpp
@@ -10120,8 +10649,8 @@ msgstr "Konektoj al metodo:"
msgid "Source"
msgstr "Fonto"
-#: editor/plugins/script_text_editor.cpp scene/3d/interpolated_camera.cpp
-#: scene/animation/skeleton_ik.cpp
+#: editor/plugins/script_text_editor.cpp platform/uwp/export/export.cpp
+#: scene/3d/interpolated_camera.cpp scene/animation/skeleton_ik.cpp
msgid "Target"
msgstr "Celo"
@@ -11107,7 +11636,9 @@ msgstr ""
#: editor/plugins/sprite_frames_editor_plugin.cpp
#: modules/gltf/gltf_animation.cpp modules/minimp3/audio_stream_mp3.cpp
-#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp scene/2d/path_2d.cpp
+#: modules/minimp3/resource_importer_mp3.cpp
+#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp
+#: modules/stb_vorbis/resource_importer_ogg_vorbis.cpp scene/2d/path_2d.cpp
#: scene/3d/path.cpp scene/resources/animation.cpp scene/resources/material.cpp
msgid "Loop"
msgstr ""
@@ -12034,8 +12565,9 @@ msgstr ""
msgid "Priority"
msgstr ""
-#: editor/plugins/tile_set_editor_plugin.cpp main/main.cpp scene/gui/button.cpp
-#: scene/gui/item_list.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp main/main.cpp
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#: scene/gui/button.cpp scene/gui/item_list.cpp
msgid "Icon"
msgstr ""
@@ -13344,10 +13876,6 @@ msgid ""
msgstr ""
#: editor/project_export.cpp
-msgid "Release"
-msgstr ""
-
-#: editor/project_export.cpp
msgid "Exporting All"
msgstr ""
@@ -15185,6 +15713,7 @@ msgid "Change AudioStreamPlayer3D Emission Angle"
msgstr ""
#: editor/spatial_editor_gizmos.cpp modules/gltf/gltf_node.cpp
+#: platform/osx/export/export.cpp
msgid "Camera"
msgstr ""
@@ -15464,7 +15993,8 @@ msgstr ""
msgid "Use Nvidia Rect Flicker Workaround"
msgstr ""
-#: main/main.cpp platform/uwp/os_uwp.cpp
+#: main/main.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp platform/uwp/os_uwp.cpp
#, fuzzy
msgid "Display"
msgstr "Vidigi tutan"
@@ -15524,19 +16054,6 @@ msgstr ""
msgid "Allowed"
msgstr ""
-#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp scene/2d/camera_2d.cpp
-#: scene/2d/light_2d.cpp scene/2d/navigation_polygon.cpp
-#: scene/2d/ray_cast_2d.cpp scene/2d/sprite.cpp scene/2d/y_sort.cpp
-#: scene/3d/audio_stream_player_3d.cpp scene/3d/baked_lightmap.cpp
-#: scene/3d/interpolated_camera.cpp scene/3d/light.cpp
-#: scene/3d/navigation_mesh_instance.cpp scene/3d/ray_cast.cpp
-#: scene/3d/sprite_3d.cpp scene/gui/graph_edit.cpp
-#: scene/gui/rich_text_label.cpp scene/resources/curve.cpp
-#: scene/resources/environment.cpp
-#, fuzzy
-msgid "Enabled"
-msgstr "Åœaltita"
-
#: main/main.cpp
msgid "Intended Usage"
msgstr ""
@@ -15567,13 +16084,14 @@ msgstr ""
msgid "Handheld"
msgstr ""
-#: main/main.cpp
+#: main/main.cpp platform/javascript/export/export.cpp
+#: platform/uwp/export/export.cpp
#, fuzzy
msgid "Orientation"
msgstr "Malfermi dokumentaron"
#: main/main.cpp scene/gui/scroll_container.cpp scene/gui/text_edit.cpp
-#: scene/main/scene_tree.cpp
+#: scene/main/scene_tree.cpp scene/register_scene_types.cpp
#, fuzzy
msgid "Common"
msgstr "Komunumo"
@@ -15616,7 +16134,7 @@ msgstr ""
#: main/main.cpp
#, fuzzy
-msgid "Frame Delay (msec)"
+msgid "Frame Delay Msec"
msgstr "Enkadrigi elekton"
#: main/main.cpp
@@ -15742,11 +16260,6 @@ msgstr ""
msgid "Tooltip Position Offset"
msgstr "Rotacia deÅovo:"
-#: main/main.cpp modules/mono/editor/csharp_project.cpp
-#: modules/mono/mono_gd/gd_mono.cpp
-msgid "Mono"
-msgstr ""
-
#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp
#, fuzzy
msgid "Debugger Agent"
@@ -16316,7 +16829,7 @@ msgstr "Elekti koloron"
msgid "Intensity"
msgstr ""
-#: modules/gltf/gltf_light.cpp scene/2d/light_2d.cpp
+#: modules/gltf/gltf_light.cpp scene/2d/light_2d.cpp scene/3d/light.cpp
#, fuzzy
msgid "Range"
msgstr "ÅœanÄu"
@@ -16460,11 +16973,6 @@ msgstr ""
msgid "Use Named Skin Binds"
msgstr ""
-#: modules/gltf/gltf_state.cpp scene/3d/physics_joint.cpp
-#, fuzzy
-msgid "Nodes"
-msgstr "Nodo"
-
#: modules/gltf/gltf_state.cpp
msgid "Buffer Views"
msgstr ""
@@ -16475,16 +16983,6 @@ msgstr ""
#: modules/gltf/gltf_state.cpp
#, fuzzy
-msgid "Meshes"
-msgstr "MaÅo"
-
-#: modules/gltf/gltf_state.cpp
-#, fuzzy
-msgid "Materials"
-msgstr "Parametro ÅanÄiÄis"
-
-#: modules/gltf/gltf_state.cpp
-#, fuzzy
msgid "Scene Name"
msgstr "Scena dosierindiko:"
@@ -16499,15 +16997,11 @@ msgstr "Krei radikan nodon:"
msgid "Textures"
msgstr ""
-#: modules/gltf/gltf_state.cpp
+#: modules/gltf/gltf_state.cpp platform/uwp/export/export.cpp
msgid "Images"
msgstr ""
#: modules/gltf/gltf_state.cpp
-msgid "Skins"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp
msgid "Cameras"
msgstr ""
@@ -16543,10 +17037,15 @@ msgstr "Montri ostojn"
#: modules/gridmap/grid_map.cpp
#, fuzzy
+msgid "Mesh Library"
+msgstr "MaÅo biblioteko..."
+
+#: modules/gridmap/grid_map.cpp
+#, fuzzy
msgid "Physics Material"
msgstr "Fiziko-kadro %"
-#: modules/gridmap/grid_map.cpp
+#: modules/gridmap/grid_map.cpp scene/3d/visual_instance.cpp
#, fuzzy
msgid "Use In Baked Light"
msgstr "Baki lummapojn"
@@ -16578,6 +17077,7 @@ msgstr "Centre"
#: modules/gridmap/grid_map.cpp scene/2d/collision_object_2d.cpp
#: scene/2d/tile_map.cpp scene/3d/collision_object.cpp scene/3d/soft_body.cpp
+#: scene/resources/material.cpp
msgid "Mask"
msgstr ""
@@ -16761,7 +17261,9 @@ msgid "Ultra Quality Ray Count"
msgstr ""
#: modules/minimp3/audio_stream_mp3.cpp
+#: modules/minimp3/resource_importer_mp3.cpp
#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp
+#: modules/stb_vorbis/resource_importer_ogg_vorbis.cpp
#, fuzzy
msgid "Loop Offset"
msgstr "Krada deÅovo:"
@@ -17863,6 +18365,190 @@ msgid "The package must have at least one '.' separator."
msgstr ""
#: platform/android/export/export_plugin.cpp
+msgid "Use Custom Build"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Export Format"
+msgstr "Formo"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Keystore"
+msgstr "Sencimigilo"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Debug User"
+msgstr "Sencimigilo"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+msgid "Debug Password"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Release User"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Release Password"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "One Click Deploy"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Clear Previous Install"
+msgstr "Inspekti antaÅ­an ekzemplon"
+
+#: platform/android/export/export_plugin.cpp scene/resources/shader.cpp
+msgid "Code"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Min SDK"
+msgstr "Grando de konturo:"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Target SDK"
+msgstr "Celo"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Package"
+msgstr "Pakas"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Unique Name"
+msgstr "Nomo de nodo:"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Signed"
+msgstr "Signalo"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Classify As Game"
+msgstr "Klasa nomo:"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Retain Data On Uninstall"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Exclude From Recents"
+msgstr "Krei okludan plurlateron"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Graphics"
+msgstr "Krada deÅovo:"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "OpenGL Debug"
+msgstr "Malfermi"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "XR Features"
+msgstr "Ĉefa eblaĵoj:"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "XR Mode"
+msgstr "Panoramada reÄimo"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Hand Tracking"
+msgstr "Pakas"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Hand Tracking Frequency"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Passthrough"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Immersive Mode"
+msgstr "Rotaciada reÄimo"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Support Small"
+msgstr "Helpo"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Support Normal"
+msgstr "Helpo"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Support Large"
+msgstr "Helpo"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Support Xlarge"
+msgstr "Helpo"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "User Data Backup"
+msgstr "Uzanta Interfaco"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Allow"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Command Line"
+msgstr "Komunumo"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Extra Args"
+msgstr "Aldona argumentoj de alvoko:"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "APK Expansion"
+msgstr "Uzi regulesprimojn"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Salt"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Public Key"
+msgstr "Duobligi Åœlosilo(j)n"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Permissions"
+msgstr "Emisia masko"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Custom Permissions"
+msgstr "Ludi laÅ­mendan scenon"
+
+#: platform/android/export/export_plugin.cpp
msgid "Select device from the list"
msgstr ""
@@ -18163,6 +18849,177 @@ msgid "The character '%s' is not allowed in Identifier."
msgstr ""
#: platform/iphone/export/export.cpp
+msgid "App Store Team ID"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Provisioning Profile UUID Debug"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Code Sign Identity Debug"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Export Method Debug"
+msgstr "Eksporti bibliotekon de maÅoj"
+
+#: platform/iphone/export/export.cpp
+msgid "Provisioning Profile UUID Release"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Code Sign Identity Release"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Export Method Release"
+msgstr "Eksporti bibliotekon de maÅoj"
+
+#: platform/iphone/export/export.cpp
+msgid "Targeted Device Family"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Info"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Identifier"
+msgstr "KrommarÄeni maldekstren"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Signature"
+msgstr "Signalo"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Short Version"
+msgstr "Versio:"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Copyright"
+msgstr "Supre dekstre"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Capabilities"
+msgstr "Atributoj"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Access Wi-Fi"
+msgstr "Sukceso!"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Push Notifications"
+msgstr "Alglui animacion"
+
+#: platform/iphone/export/export.cpp scene/3d/baked_lightmap.cpp
+#, fuzzy
+msgid "User Data"
+msgstr "Uzanta Interfaco"
+
+#: platform/iphone/export/export.cpp
+msgid "Accessible From Files App"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Accessible From Itunes Sharing"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Privacy"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Camera Usage Description"
+msgstr "Priskribo"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Microphone Usage Description"
+msgstr "Priskribo de atributoj"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Photolibrary Usage Description"
+msgstr "Priskribo de atributoj"
+
+#: platform/iphone/export/export.cpp
+msgid "iPhone 120 X 120"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPhone 180 X 180"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 76 X 76"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 152 X 152"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 167 X 167"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "App Store 1024 X 1024"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Spotlight 40 X 40"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Spotlight 80 X 80"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Storyboard"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Use Launch Screen Storyboard"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Image Scale Mode"
+msgstr "Skalada reÄimo"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Custom Image @2x"
+msgstr "Eltondi nodo(j)n"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Custom Image @3x"
+msgstr "Eltondi nodo(j)n"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Use Custom BG Color"
+msgstr "Eltondi nodo(j)n"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Custom BG Color"
+msgstr "Eltondi nodo(j)n"
+
+#: platform/iphone/export/export.cpp
msgid "App Store Team ID not specified - cannot configure the project."
msgstr ""
@@ -18201,6 +19058,80 @@ msgstr "Ne povis krei dosierujon."
#: platform/javascript/export/export.cpp
#, fuzzy
+msgid "Variant"
+msgstr "Versio:"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Export Type"
+msgstr "Eksporti"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "VRAM Texture Compression"
+msgstr "Uzi regulesprimojn"
+
+#: platform/javascript/export/export.cpp
+msgid "For Desktop"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "For Mobile"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Html"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Export Icon"
+msgstr "Etendi tuton"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Custom Html Shell"
+msgstr "Eltondi nodo(j)n"
+
+#: platform/javascript/export/export.cpp
+msgid "Head Include"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Canvas Resize Policy"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Focus Canvas On Start"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Experimental Virtual Keyboard"
+msgstr "Filtri signalojn"
+
+#: platform/javascript/export/export.cpp
+msgid "Progressive Web App"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Offline Page"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 144 X 144"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 180 X 180"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 512 X 512"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
msgid "Could not read HTML shell:"
msgstr "Ne povis krei dosierujon."
@@ -18315,6 +19246,199 @@ msgid "Unknown object type."
msgstr ""
#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "App Category"
+msgstr "Kategorio:"
+
+#: platform/osx/export/export.cpp
+msgid "High Res"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Location Usage Description"
+msgstr "Priskribo"
+
+#: platform/osx/export/export.cpp
+msgid "Address Book Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Calendar Usage Description"
+msgstr "Priskribo"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Photos Library Usage Description"
+msgstr "Priskribo de atributoj"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Desktop Folder Usage Description"
+msgstr "Metodaj priskriboj"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Documents Folder Usage Description"
+msgstr "Metodaj priskriboj"
+
+#: platform/osx/export/export.cpp
+msgid "Downloads Folder Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Network Volumes Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Removable Volumes Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#, fuzzy
+msgid "Codesign"
+msgstr "Nodo"
+
+#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Identity"
+msgstr "KrommarÄeni maldekstren"
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#, fuzzy
+msgid "Timestamp"
+msgstr "Tempo"
+
+#: platform/osx/export/export.cpp
+msgid "Hardened Runtime"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Replace Existing Signature"
+msgstr "Anstataŭigi Ĉiujn"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Entitlements"
+msgstr "Enhavo:"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Custom File"
+msgstr "Eltondi nodo(j)n"
+
+#: platform/osx/export/export.cpp
+msgid "Allow JIT Code Execution"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Allow Unsigned Executable Memory"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Allow Dyld Environment Variables"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Disable Library Validation"
+msgstr "Åœalti filtradon"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Audio Input"
+msgstr "Renomi aÅ­dia buso"
+
+#: platform/osx/export/export.cpp
+msgid "Address Book"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Calendars"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Photos Library"
+msgstr "Eksporti bibliotekon"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Apple Events"
+msgstr "Aldoni eventon"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Debugging"
+msgstr "Sencimigi"
+
+#: platform/osx/export/export.cpp
+msgid "App Sandbox"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Network Server"
+msgstr "Reta Profililo"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Network Client"
+msgstr "Reta Profililo"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Device Usb"
+msgstr "Aparato"
+
+#: platform/osx/export/export.cpp
+msgid "Device Bluetooth"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Files Downloads"
+msgstr "ElÅuti"
+
+#: platform/osx/export/export.cpp
+msgid "Files Pictures"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Files Music"
+msgstr "Dosiero"
+
+#: platform/osx/export/export.cpp
+msgid "Files Movies"
+msgstr ""
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#, fuzzy
+msgid "Custom Options"
+msgstr "Agordoj de buso"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Notarization"
+msgstr "Lokaĵigado"
+
+#: platform/osx/export/export.cpp
+msgid "Apple ID Name"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Apple ID Password"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Apple Team ID"
+msgstr ""
+
+#: platform/osx/export/export.cpp
msgid ""
"Note: The notarization process generally takes less than an hour. When the "
"process is completed, you'll receive an email."
@@ -18506,6 +19630,133 @@ msgid "Force Builtin Codesign"
msgstr ""
#: platform/uwp/export/export.cpp
+msgid "Architecture"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Display Name"
+msgstr "Vidigi tutan"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Short Name"
+msgstr "Nomo de skripto:"
+
+#: platform/uwp/export/export.cpp
+msgid "Publisher"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Publisher Display Name"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Product Guid"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Publisher Guid"
+msgstr "Vakigi gvidilojn"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Signing"
+msgstr "Signalo"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Certificate"
+msgstr "Partikloj"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Algorithm"
+msgstr "Sencimigilo"
+
+#: platform/uwp/export/export.cpp
+msgid "Major"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Minor"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Build"
+msgstr "Mezurado reÄimo"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Revision"
+msgstr "Uzi regulesprimojn"
+
+#: platform/uwp/export/export.cpp
+msgid "Landscape"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Portrait"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Landscape Flipped"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Portrait Flipped"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Store Logo"
+msgstr "Skalada reÄimo"
+
+#: platform/uwp/export/export.cpp
+msgid "Square 44 X 44 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 71 X 71 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 150 X 150 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 310 X 310 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Wide 310 X 150 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Splash Screen"
+msgstr "Alvokoj"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Tiles"
+msgstr "Dosiero"
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Square 150 X 150"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Wide 310 X 150"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Square 310 X 310"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
#, fuzzy
msgid "Invalid package short name."
msgstr "Nevalida grupa nomo."
@@ -18572,15 +19823,53 @@ msgid "Debug Certificate"
msgstr ""
#: platform/uwp/export/export.cpp
-msgid "Debug Password"
+#, fuzzy
+msgid "Debug Algorithm"
+msgstr "Sencimigilo"
+
+#: platform/windows/export/export.cpp
+msgid "Identity Type"
msgstr ""
-#: platform/uwp/export/export.cpp
+#: platform/windows/export/export.cpp
+msgid "Timestamp Server URL"
+msgstr ""
+
+#: platform/windows/export/export.cpp
#, fuzzy
-msgid "Debug Algorithm"
+msgid "Digest Algorithm"
msgstr "Sencimigilo"
#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "File Version"
+msgstr "Versio:"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Product Version"
+msgstr "Nevalida nomo de projekto."
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Company Name"
+msgstr "Nomo de nodo:"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Product Name"
+msgstr "Projekta nomo:"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "File Description"
+msgstr "Priskribo"
+
+#: platform/windows/export/export.cpp
+msgid "Trademarks"
+msgstr ""
+
+#: platform/windows/export/export.cpp
msgid ""
"The rcedit tool must be configured in the Editor Settings (Export > Windows "
"> Rcedit) to change the icon or app information data."
@@ -18653,12 +19942,14 @@ msgstr "Ludi"
msgid "Centered"
msgstr "Centre"
-#: scene/2d/animated_sprite.cpp scene/2d/camera_2d.cpp scene/2d/light_2d.cpp
+#: scene/2d/animated_sprite.cpp scene/2d/camera_2d.cpp
+#: scene/2d/cpu_particles_2d.cpp scene/2d/light_2d.cpp
#: scene/2d/parallax_background.cpp scene/2d/parallax_layer.cpp
#: scene/2d/path_2d.cpp scene/2d/polygon_2d.cpp scene/2d/sprite.cpp
-#: scene/3d/path.cpp scene/3d/physics_body.cpp scene/3d/sprite_3d.cpp
-#: scene/gui/graph_node.cpp scene/gui/rich_text_effect.cpp
-#: scene/main/canvas_layer.cpp scene/resources/material.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/path.cpp scene/3d/physics_body.cpp
+#: scene/3d/sprite_3d.cpp scene/gui/graph_node.cpp
+#: scene/gui/rich_text_effect.cpp scene/main/canvas_layer.cpp
+#: scene/resources/material.cpp scene/resources/particles_material.cpp
#: scene/resources/style_box.cpp
#, fuzzy
msgid "Offset"
@@ -18733,11 +20024,6 @@ msgstr "Aldoni aÅ­dian buson"
msgid "Override"
msgstr "Redifinoj"
-#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
-#: scene/audio/audio_stream_player.cpp scene/gui/video_player.cpp
-msgid "Stream"
-msgstr ""
-
#: scene/2d/audio_stream_player_2d.cpp scene/audio/audio_stream_player.cpp
#: scene/gui/video_player.cpp servers/audio/effects/audio_effect_amplify.cpp
msgid "Volume dB"
@@ -18763,13 +20049,13 @@ msgid "Stream Paused"
msgstr ""
#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
-#: scene/3d/reflection_probe.cpp scene/3d/visual_instance.cpp
-#: scene/resources/material.cpp
+#: scene/3d/light.cpp scene/3d/reflection_probe.cpp
+#: scene/3d/visual_instance.cpp scene/resources/material.cpp
#, fuzzy
msgid "Max Distance"
msgstr "Ekzemplodoni"
-#: scene/2d/audio_stream_player_2d.cpp
+#: scene/2d/audio_stream_player_2d.cpp scene/3d/light.cpp
#, fuzzy
msgid "Attenuation"
msgstr "Animacio"
@@ -18825,6 +20111,24 @@ msgstr "Movada reÄimo"
msgid "Limit"
msgstr ""
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/style_box.cpp
+#, fuzzy
+msgid "Left"
+msgstr "Supre maldekstre"
+
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/style_box.cpp
+#, fuzzy
+msgid "Right"
+msgstr "Supre dekstre"
+
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/dynamic_font.cpp scene/resources/style_box.cpp
+#, fuzzy
+msgid "Bottom"
+msgstr "Malsupre maldekstre"
+
#: scene/2d/camera_2d.cpp
#, fuzzy
msgid "Smoothed"
@@ -19035,12 +20339,6 @@ msgstr ""
msgid "Emitting"
msgstr "Testada"
-#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp scene/3d/area.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
-#: scene/resources/environment.cpp
-msgid "Amount"
-msgstr ""
-
#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp
#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
msgid "Lifetime"
@@ -19101,18 +20399,13 @@ msgstr ""
#: scene/2d/mesh_instance_2d.cpp scene/2d/multimesh_instance_2d.cpp
#: scene/2d/particles_2d.cpp scene/2d/polygon_2d.cpp scene/2d/sprite.cpp
#: scene/3d/sprite_3d.cpp scene/gui/nine_patch_rect.cpp
-#: scene/gui/texture_rect.cpp scene/resources/sky.cpp
-#: scene/resources/style_box.cpp scene/resources/visual_shader_nodes.cpp
+#: scene/gui/texture_rect.cpp scene/resources/material.cpp
+#: scene/resources/sky.cpp scene/resources/style_box.cpp
+#: scene/resources/visual_shader_nodes.cpp
#, fuzzy
msgid "Texture"
msgstr "Estonteco"
-#: scene/2d/cpu_particles_2d.cpp scene/2d/mesh_instance_2d.cpp
-#: scene/2d/multimesh_instance_2d.cpp scene/2d/particles_2d.cpp
-#: scene/2d/sprite.cpp scene/resources/style_box.cpp
-msgid "Normal Map"
-msgstr ""
-
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
#, fuzzy
@@ -19135,10 +20428,10 @@ msgid "Normals"
msgstr "Formo"
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/3d/sprite_3d.cpp scene/resources/material.cpp
-#: scene/resources/particles_material.cpp scene/resources/texture.cpp
-msgid "Flags"
-msgstr ""
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Align Y"
+msgstr "Valorizi"
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
@@ -19158,6 +20451,11 @@ msgid "Initial Velocity"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Velocity Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp servers/physics_2d_server.cpp
#: servers/physics_server.cpp
msgid "Angular Velocity"
@@ -19165,6 +20463,12 @@ msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Velocity Curve"
+msgstr "Elekti koloron"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
msgid "Orbit Velocity"
msgstr ""
@@ -19176,6 +20480,23 @@ msgstr "Lineara"
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Accel"
+msgstr "Sukceso!"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Accel Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Accel Curve"
+msgstr "Profundo"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
msgid "Radial Accel"
msgstr ""
@@ -19185,19 +20506,55 @@ msgid "Tangential Accel"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/2d/joints_2d.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/vehicle_body.cpp
-#: scene/resources/particles_material.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/physics_joint.cpp
+#: scene/3d/vehicle_body.cpp scene/resources/particles_material.cpp
#: servers/audio/effects/audio_effect_reverb.cpp
msgid "Damping"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+msgid "Damping Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Damping Curve"
+msgstr "Profundo"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp scene/3d/light.cpp
+#: scene/resources/particles_material.cpp
msgid "Angle"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+msgid "Angle Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Angle Curve"
+msgstr "Profundo"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#, fuzzy
+msgid "Scale Amount"
+msgstr "Ekzemplodoni"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+msgid "Scale Amount Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#, fuzzy
+msgid "Scale Amount Curve"
+msgstr "Skali El Kursoron"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
#, fuzzy
msgid "Color Ramp"
msgstr "Elekti koloron"
@@ -19213,6 +20570,48 @@ msgstr ""
msgid "Hue Variation"
msgstr "Versio:"
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Variation"
+msgstr "Versio:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Variation Random"
+msgstr "Versio:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Variation Curve"
+msgstr "Versio:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Speed Random"
+msgstr "Skalo:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Speed Curve"
+msgstr "Elekti aktualan dosierujon"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Offset Random"
+msgstr "Krada deÅovo:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Offset Curve"
+msgstr "Profundo"
+
#: scene/2d/joints_2d.cpp
msgid "Node A and Node B must be PhysicsBody2Ds"
msgstr ""
@@ -19244,6 +20643,7 @@ msgid "Node B"
msgstr "Nodo"
#: scene/2d/joints_2d.cpp scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp
+#: scene/3d/light.cpp scene/3d/physics_joint.cpp
#: scene/resources/environment.cpp
msgid "Bias"
msgstr ""
@@ -19253,7 +20653,7 @@ msgstr ""
msgid "Disable Collision"
msgstr "Åœalti filtradon"
-#: scene/2d/joints_2d.cpp
+#: scene/2d/joints_2d.cpp scene/3d/physics_joint.cpp
msgid "Softness"
msgstr ""
@@ -19271,7 +20671,7 @@ msgstr "Krada deÅovo:"
msgid "Rest Length"
msgstr ""
-#: scene/2d/joints_2d.cpp scene/3d/vehicle_body.cpp
+#: scene/2d/joints_2d.cpp scene/3d/physics_joint.cpp scene/3d/vehicle_body.cpp
msgid "Stiffness"
msgstr ""
@@ -19291,7 +20691,7 @@ msgid "Texture Scale"
msgstr ""
#: scene/2d/light_2d.cpp scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp
-#: scene/resources/environment.cpp scene/resources/sky.cpp
+#: scene/3d/light.cpp scene/resources/environment.cpp scene/resources/sky.cpp
msgid "Energy"
msgstr ""
@@ -19331,12 +20731,6 @@ msgstr "Rastumeroj de bordero"
msgid "Gradient Length"
msgstr "Gradienton redaktis"
-#: scene/2d/light_2d.cpp scene/gui/control.cpp
-#: scene/resources/navigation_mesh.cpp
-#, fuzzy
-msgid "Filter"
-msgstr "Filtriloj:"
-
#: scene/2d/light_2d.cpp
#, fuzzy
msgid "Filter Smooth"
@@ -19745,11 +21139,6 @@ msgid "Applied Forces"
msgstr ""
#: scene/2d/physics_body_2d.cpp
-#, fuzzy
-msgid "Force"
-msgstr "Risurca Vojo"
-
-#: scene/2d/physics_body_2d.cpp
msgid "Torque"
msgstr ""
@@ -19763,7 +21152,7 @@ msgid "Sync To Physics"
msgstr "Fiziko-kadro %"
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-msgid "Moving platform"
+msgid "Moving Platform"
msgstr ""
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
@@ -19772,7 +21161,7 @@ msgstr ""
#: scene/2d/physics_body_2d.cpp scene/2d/touch_screen_button.cpp
#: scene/3d/physics_body.cpp scene/gui/texture_button.cpp
-#: scene/resources/line_shape_2d.cpp
+#: scene/resources/line_shape_2d.cpp scene/resources/material.cpp
#, fuzzy
msgid "Normal"
msgstr "Formo"
@@ -20004,6 +21393,34 @@ msgid ""
"as parent."
msgstr ""
+#: scene/2d/visibility_notifier_2d.cpp scene/3d/visibility_notifier.cpp
+#, fuzzy
+msgid "Pause Animations"
+msgstr "Alglui animacion"
+
+#: scene/2d/visibility_notifier_2d.cpp scene/3d/visibility_notifier.cpp
+msgid "Freeze Bodies"
+msgstr ""
+
+#: scene/2d/visibility_notifier_2d.cpp
+#, fuzzy
+msgid "Pause Particles"
+msgstr "Partikloj"
+
+#: scene/2d/visibility_notifier_2d.cpp
+#, fuzzy
+msgid "Pause Animated Sprites"
+msgstr "Alglui animacion"
+
+#: scene/2d/visibility_notifier_2d.cpp
+#, fuzzy
+msgid "Process Parent"
+msgstr "Movada reÄimo"
+
+#: scene/2d/visibility_notifier_2d.cpp
+msgid "Physics Process Parent"
+msgstr ""
+
#: scene/3d/area.cpp
msgid "Reverb Bus"
msgstr ""
@@ -20099,6 +21516,7 @@ msgid "Attenuation Filter"
msgstr ""
#: scene/3d/audio_stream_player_3d.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
#: servers/audio/effects/audio_effect_filter.cpp
msgid "Cutoff Hz"
msgstr ""
@@ -20141,11 +21559,6 @@ msgid "Octree"
msgstr ""
#: scene/3d/baked_lightmap.cpp
-#, fuzzy
-msgid "User Data"
-msgstr "Uzanta Interfaco"
-
-#: scene/3d/baked_lightmap.cpp
msgid "Finding meshes and lights"
msgstr ""
@@ -20398,6 +21811,16 @@ msgid "Ring Axis"
msgstr "Avertoj"
#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Rotate Y"
+msgstr "Rotaciada reÄimo"
+
+#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Disable Z"
+msgstr "Åœalti filtradon"
+
+#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
msgid "Flatness"
msgstr ""
@@ -20434,16 +21857,11 @@ msgstr ""
msgid "Dynamic Range"
msgstr ""
-#: scene/3d/gi_probe.cpp
+#: scene/3d/gi_probe.cpp scene/3d/light.cpp
msgid "Normal Bias"
msgstr ""
#: scene/3d/gi_probe.cpp
-#, fuzzy
-msgid "Compress"
-msgstr "Komponantoj"
-
-#: scene/3d/gi_probe.cpp
msgid "Plotting Meshes"
msgstr ""
@@ -20469,16 +21887,31 @@ msgid "Subdiv"
msgstr ""
#: scene/3d/light.cpp
+#, fuzzy
+msgid "Indirect Energy"
+msgstr "Emisiaj koloroj"
+
+#: scene/3d/light.cpp
msgid "Negative"
msgstr ""
#: scene/3d/light.cpp
#, fuzzy
+msgid "Specular"
+msgstr "Mezurado reÄimo"
+
+#: scene/3d/light.cpp
+#, fuzzy
msgid "Bake Mode"
msgstr "Rotaciada reÄimo"
#: scene/3d/light.cpp
#, fuzzy
+msgid "Contact"
+msgstr "Elekti koloron"
+
+#: scene/3d/light.cpp
+#, fuzzy
msgid "Reverse Cull Face"
msgstr "Rekomencigi la laÅ­tecon de buso"
@@ -20489,11 +21922,31 @@ msgstr "Direktoj"
#: scene/3d/light.cpp
#, fuzzy
+msgid "Split 1"
+msgstr "Krada deÅovo:"
+
+#: scene/3d/light.cpp
+#, fuzzy
+msgid "Split 2"
+msgstr "Krada deÅovo:"
+
+#: scene/3d/light.cpp
+#, fuzzy
+msgid "Split 3"
+msgstr "Krada deÅovo:"
+
+#: scene/3d/light.cpp
+#, fuzzy
msgid "Blend Splits"
msgstr "Tempoj de mikso:"
#: scene/3d/light.cpp
#, fuzzy
+msgid "Bias Split Scale"
+msgstr "Uzi skalan kaptadon"
+
+#: scene/3d/light.cpp
+#, fuzzy
msgid "Depth Range"
msgstr "Profundo"
@@ -20519,6 +21972,11 @@ msgstr ""
msgid "Spot"
msgstr ""
+#: scene/3d/light.cpp
+#, fuzzy
+msgid "Angle Attenuation"
+msgstr "Animacio"
+
#: scene/3d/mesh_instance.cpp
msgid "Software Skinning"
msgstr ""
@@ -20644,6 +22102,63 @@ msgstr "Akso"
#: scene/3d/physics_body.cpp
#, fuzzy
+msgid "Linear X"
+msgstr "Lineara"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Linear Y"
+msgstr "Lineara"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Linear Z"
+msgstr "Lineara"
+
+#: scene/3d/physics_body.cpp
+msgid "Angular X"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Angular Y"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Angular Z"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Motion X"
+msgstr "Faro"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Motion Y"
+msgstr "Faro"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Motion Z"
+msgstr "Faro"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Move Lock X"
+msgstr "Movi nodon"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Move Lock Y"
+msgstr "Movi nodon"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Move Lock Z"
+msgstr "Movi nodon"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
msgid "Body Offset"
msgstr "Krada deÅovo:"
@@ -20677,6 +22192,15 @@ msgid "Exclude Nodes"
msgstr "Krei okludan plurlateron"
#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Params"
+msgstr "Parametro ÅanÄiÄis"
+
+#: scene/3d/physics_joint.cpp
+msgid "Impulse Clamp"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit"
msgstr ""
@@ -20690,6 +22214,55 @@ msgstr "Majuskla"
msgid "Lower"
msgstr "Minuskla"
+#: scene/3d/physics_joint.cpp scene/3d/vehicle_body.cpp
+#, fuzzy
+msgid "Relaxation"
+msgstr "Versio:"
+
+#: scene/3d/physics_joint.cpp
+msgid "Motor"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Target Velocity"
+msgstr "Lineara"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Max Impulse"
+msgstr "Valoro"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit"
+msgstr "Lineara"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Upper Distance"
+msgstr "Ekzemplodoni"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Lower Distance"
+msgstr "Ekzemplodoni"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Restitution"
+msgstr "Priskribo"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motion"
+msgstr "Lineara"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Ortho"
+msgstr "Lineara"
+
#: scene/3d/physics_joint.cpp
#, fuzzy
msgid "Upper Angle"
@@ -20702,6 +22275,16 @@ msgstr "Minuskla"
#: scene/3d/physics_joint.cpp
#, fuzzy
+msgid "Angular Motion"
+msgstr "Animacio"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Angular Ortho"
+msgstr "Maks. Angula Eraro:"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
msgid "Swing Span"
msgstr "Konservas scenon"
@@ -20710,17 +22293,99 @@ msgid "Twist Span"
msgstr ""
#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit X"
+msgstr "Lineara"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motor X"
+msgstr "Lineara"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Force Limit"
+msgstr "Alvokoj"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Spring X"
+msgstr "Lineara"
+
+#: scene/3d/physics_joint.cpp
+msgid "Equilibrium Point"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit X"
msgstr ""
#: scene/3d/physics_joint.cpp
+msgid "Erp"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Motor X"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Spring X"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit Y"
+msgstr "Lineara"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motor Y"
+msgstr "Lineara"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Spring Y"
+msgstr "Lineara"
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit Y"
msgstr ""
#: scene/3d/physics_joint.cpp
+msgid "Angular Motor Y"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Spring Y"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit Z"
+msgstr "Lineara"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motor Z"
+msgstr "Lineara"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Spring Z"
+msgstr "Lineara"
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit Z"
msgstr ""
+#: scene/3d/physics_joint.cpp
+msgid "Angular Motor Z"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Spring Z"
+msgstr ""
+
#: scene/3d/portal.cpp
msgid "The RoomManager should not be a child or grandchild of a Portal."
msgstr ""
@@ -20838,7 +22503,7 @@ msgstr ""
msgid "Use Default Simplify"
msgstr ""
-#: scene/3d/room.cpp
+#: scene/3d/room.cpp scene/3d/room_manager.cpp
msgid "Room Simplify"
msgstr ""
@@ -20876,6 +22541,13 @@ msgstr ""
msgid "Main"
msgstr ""
+#: scene/3d/room_manager.cpp scene/animation/animation_player.cpp
+#: scene/animation/animation_tree.cpp scene/animation/animation_tree_player.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+#, fuzzy
+msgid "Active"
+msgstr "Faro"
+
#: scene/3d/room_manager.cpp
msgid "Roomlist"
msgstr ""
@@ -20899,6 +22571,54 @@ msgid "Gameplay"
msgstr ""
#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Gameplay Monitor"
+msgstr "Monitoro"
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Use Secondary PVS"
+msgstr "Uzi skalan kaptadon"
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Merge Meshes"
+msgstr "MaÅo"
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Show Margins"
+msgstr "Montri originon"
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Debug Sprawl"
+msgstr "Sencimigi"
+
+#: scene/3d/room_manager.cpp
+msgid "Overlap Warning Threshold"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Preview Camera"
+msgstr "AntaÅ­rigardo:"
+
+#: scene/3d/room_manager.cpp
+msgid "Portal Depth Limit"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Default Portal Margin"
+msgstr "DefaÅ­lto"
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Roaming Expansion Margin"
+msgstr "Etendi tuton"
+
+#: scene/3d/room_manager.cpp
msgid ""
"RoomList path is invalid.\n"
"Please check the RoomList branch has been assigned in the RoomManager."
@@ -21021,6 +22741,20 @@ msgstr "Grando de konturo:"
msgid "Billboard"
msgstr ""
+#: scene/3d/sprite_3d.cpp scene/resources/material.cpp
+#, fuzzy
+msgid "Transparent"
+msgstr "Tradukoj"
+
+#: scene/3d/sprite_3d.cpp
+#, fuzzy
+msgid "Shaded"
+msgstr "ÅœanÄu"
+
+#: scene/3d/sprite_3d.cpp
+msgid "Double Sided"
+msgstr ""
+
#: scene/3d/sprite_3d.cpp
msgid "Alpha Cut"
msgstr ""
@@ -21092,11 +22826,6 @@ msgstr "Uzi regulesprimojn"
msgid "Max Force"
msgstr "Eraro!"
-#: scene/3d/vehicle_body.cpp
-#, fuzzy
-msgid "Relaxation"
-msgstr "Versio:"
-
#: scene/3d/visibility_notifier.cpp
msgid "AABB"
msgstr ""
@@ -21232,7 +22961,7 @@ msgstr ""
#: scene/animation/animation_blend_tree.cpp
#, fuzzy
-msgid "autorestart_"
+msgid "Auto Restart"
msgstr "Rekomencigi"
#: scene/animation/animation_blend_tree.cpp
@@ -21317,13 +23046,6 @@ msgstr "Agordoj de klaso:"
msgid "Default Blend Time"
msgstr "DefaÅ­lto"
-#: scene/animation/animation_player.cpp scene/animation/animation_tree.cpp
-#: scene/animation/animation_tree_player.cpp
-#: servers/audio/effects/audio_effect_delay.cpp
-#, fuzzy
-msgid "Active"
-msgstr "Faro"
-
#: scene/animation/animation_player.cpp
msgid "Method Call Mode"
msgstr ""
@@ -21445,10 +23167,6 @@ msgstr "Krei nodon"
msgid "Max Iterations"
msgstr "Renomi funkcion"
-#: scene/animation/tween.cpp scene/resources/texture.cpp
-msgid "Repeat"
-msgstr ""
-
#: scene/animation/tween.cpp
msgid "Playback Process Mode"
msgstr ""
@@ -21479,20 +23197,6 @@ msgstr "Elektada reÄimo"
msgid "Alignment"
msgstr ""
-#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
-#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
-#: scene/resources/style_box.cpp
-#, fuzzy
-msgid "Horizontal"
-msgstr "Movi horizontalan gvidilon"
-
-#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
-#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
-#: scene/resources/style_box.cpp
-#, fuzzy
-msgid "Vertical"
-msgstr "Movi vertikalan gvidilon"
-
#: scene/gui/base_button.cpp
#, fuzzy
msgid "Shortcut In Tooltip"
@@ -21590,10 +23294,6 @@ msgid "HSV"
msgstr ""
#: scene/gui/color_picker.cpp
-msgid "Raw"
-msgstr ""
-
-#: scene/gui/color_picker.cpp
msgid "Switch between hexadecimal and code values."
msgstr ""
@@ -21654,6 +23354,31 @@ msgid "Focus"
msgstr "Fokusi al dosierindiko"
#: scene/gui/control.cpp
+msgid "Neighbour Left"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Neighbour Top"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Neighbour Right"
+msgstr ""
+
+#: scene/gui/control.cpp
+#, fuzzy
+msgid "Neighbour Bottom"
+msgstr "Centre malsupre"
+
+#: scene/gui/control.cpp
+msgid "Next"
+msgstr "Sekva"
+
+#: scene/gui/control.cpp
+msgid "Previous"
+msgstr "AntaÅ­a"
+
+#: scene/gui/control.cpp
msgid "Mouse"
msgstr ""
@@ -21690,7 +23415,7 @@ msgid "Dialog"
msgstr ""
#: scene/gui/dialogs.cpp
-msgid "Hide On Ok"
+msgid "Hide On OK"
msgstr ""
#: scene/gui/dialogs.cpp scene/gui/label.cpp
@@ -21788,7 +23513,7 @@ msgid "Timers"
msgstr "Tempo"
#: scene/gui/item_list.cpp scene/gui/popup_menu.cpp scene/gui/tree.cpp
-msgid "Incremental Search Max Interval (msec)"
+msgid "Incremental Search Max Interval Msec"
msgstr ""
#: scene/gui/item_list.cpp scene/gui/tree.cpp
@@ -22360,6 +24085,26 @@ msgstr "Centre maldekstre"
msgid "Nine Patch Stretch"
msgstr "Interpolado Modo"
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Left"
+msgstr "Elektada reÄimo"
+
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Top"
+msgstr "Elektada reÄimo"
+
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Right"
+msgstr "Elektada reÄimo"
+
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Bottom"
+msgstr "Elektada reÄimo"
+
#: scene/gui/tree.cpp
msgid "Custom Minimum Height"
msgstr ""
@@ -22397,8 +24142,9 @@ msgid "Paused"
msgstr ""
#: scene/gui/video_player.cpp
-msgid "Buffering (msec)"
-msgstr ""
+#, fuzzy
+msgid "Buffering Msec"
+msgstr "Rastumeroj de bordero"
#: scene/gui/video_player.cpp
#, fuzzy
@@ -22743,6 +24489,22 @@ msgid "Shadow Atlas"
msgstr "Vidigi ĉiajn lokaĵarojn"
#: scene/main/viewport.cpp
+msgid "Quad 0"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 1"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 2"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 3"
+msgstr ""
+
+#: scene/main/viewport.cpp
#, fuzzy
msgid "Canvas Transform"
msgstr "Transformo"
@@ -22757,6 +24519,11 @@ msgid "Tooltip Delay (sec)"
msgstr ""
#: scene/register_scene_types.cpp
+#, fuzzy
+msgid "Swap OK Cancel"
+msgstr "Rezigni"
+
+#: scene/register_scene_types.cpp
msgid "Use hiDPI"
msgstr ""
@@ -22771,21 +24538,6 @@ msgid "Custom Font"
msgstr "Eltondi nodo(j)n"
#: scene/resources/audio_stream_sample.cpp
-#, fuzzy
-msgid "Loop Mode"
-msgstr "Movada reÄimo"
-
-#: scene/resources/audio_stream_sample.cpp
-#, fuzzy
-msgid "Loop Begin"
-msgstr "Movada reÄimo"
-
-#: scene/resources/audio_stream_sample.cpp
-#, fuzzy
-msgid "Loop End"
-msgstr "Movada reÄimo"
-
-#: scene/resources/audio_stream_sample.cpp
#: servers/audio/effects/audio_stream_generator.cpp servers/audio_server.cpp
msgid "Mix Rate"
msgstr ""
@@ -22843,6 +24595,17 @@ msgid "Extra Spacing"
msgstr "Pli agordoj:"
#: scene/resources/dynamic_font.cpp
+#, fuzzy
+msgid "Char"
+msgstr "Validaj signoj:"
+
+#: scene/resources/dynamic_font.cpp scene/resources/world.cpp
+#: scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Space"
+msgstr "Ĉefa sceno"
+
+#: scene/resources/dynamic_font.cpp
msgid "Font"
msgstr ""
@@ -23068,6 +24831,43 @@ msgid "Glow"
msgstr ""
#: scene/resources/environment.cpp
+#, fuzzy
+msgid "Levels"
+msgstr "Programistoj"
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "1"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "2"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "3"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "4"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "5"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "6"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "7"
+msgstr ""
+
+#: scene/resources/environment.cpp
msgid "Bloom"
msgstr ""
@@ -23159,9 +24959,66 @@ msgid "Next Pass"
msgstr "Posta tabo"
#: scene/resources/material.cpp
+msgid "Use Shadow To Opacity"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Unshaded"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Vertex Lighting"
+msgstr "Naskas lummapojn"
+
+#: scene/resources/material.cpp
+msgid "No Depth Test"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Use Point Size"
+msgstr "Grando de konturo:"
+
+#: scene/resources/material.cpp
+msgid "World Triplanar"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Fixed Size"
+msgstr "Grando de konturo:"
+
+#: scene/resources/material.cpp
+msgid "Albedo Tex Force sRGB"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Do Not Receive Shadows"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Disable Ambient Light"
+msgstr "KrommarÄeni dekstren"
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Ensure Correct Normals"
+msgstr "Transformo"
+
+#: scene/resources/material.cpp
msgid "Vertex Color"
msgstr ""
+#: scene/resources/material.cpp
+msgid "Use As Albedo"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Is sRGB"
+msgstr ""
+
#: scene/resources/material.cpp servers/visual_server.cpp
#, fuzzy
msgid "Parameters"
@@ -23198,6 +25055,11 @@ msgid "Billboard Mode"
msgstr "Mezurado reÄimo"
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Billboard Keep Scale"
+msgstr "Mezurado reÄimo"
+
+#: scene/resources/material.cpp
msgid "Grow"
msgstr ""
@@ -23207,6 +25069,10 @@ msgid "Grow Amount"
msgstr "Movi horizontalan gvidilon"
#: scene/resources/material.cpp
+msgid "Use Alpha Scissor"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Alpha Scissor Threshold"
msgstr ""
@@ -23238,10 +25104,20 @@ msgid "Metallic Specular"
msgstr ""
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Metallic Texture"
+msgstr "Emisiaj koloroj"
+
+#: scene/resources/material.cpp
msgid "Metallic Texture Channel"
msgstr ""
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Roughness Texture"
+msgstr "Krei emisiajn punktojn el la maÅo"
+
+#: scene/resources/material.cpp
msgid "Roughness Texture Channel"
msgstr ""
@@ -23261,6 +25137,16 @@ msgid "Emission Operator"
msgstr "Emisiaj koloroj"
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Emission On UV2"
+msgstr "Emisia masko"
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Emission Texture"
+msgstr "Emisiaj koloroj"
+
+#: scene/resources/material.cpp
msgid "NormalMap"
msgstr ""
@@ -23274,6 +25160,11 @@ msgstr ""
#: scene/resources/material.cpp
#, fuzzy
+msgid "Rim Texture"
+msgstr "Estonteco"
+
+#: scene/resources/material.cpp
+#, fuzzy
msgid "Clearcoat"
msgstr "Vakigi"
@@ -23283,14 +25174,27 @@ msgid "Clearcoat Gloss"
msgstr "Vakigi la pozon"
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Clearcoat Texture"
+msgstr "Redaktilo"
+
+#: scene/resources/material.cpp
msgid "Anisotropy"
msgstr ""
#: scene/resources/material.cpp
+msgid "Anisotropy Flowmap"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Ambient Occlusion"
msgstr ""
#: scene/resources/material.cpp
+msgid "On UV2"
+msgstr ""
+
+#: scene/resources/material.cpp
#, fuzzy
msgid "Texture Channel"
msgstr "Mezurado reÄimo"
@@ -23328,6 +25232,11 @@ msgstr "Transpaso: "
#: scene/resources/material.cpp
#, fuzzy
+msgid "Transmission Texture"
+msgstr "Transpaso: "
+
+#: scene/resources/material.cpp
+#, fuzzy
msgid "Refraction"
msgstr "Versio:"
@@ -23345,6 +25254,10 @@ msgid "UV1"
msgstr ""
#: scene/resources/material.cpp
+msgid "Triplanar"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Triplanar Sharpness"
msgstr ""
@@ -23550,6 +25463,16 @@ msgstr "Redaktilo"
msgid "Point Count"
msgstr "Eniga mapo"
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Scale Random"
+msgstr "Skali RejÅo:"
+
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Scale Curve"
+msgstr "Skalada reÄimo"
+
#: scene/resources/physics_material.cpp
msgid "Rough"
msgstr ""
@@ -23610,10 +25533,6 @@ msgid "A"
msgstr ""
#: scene/resources/shader.cpp
-msgid "Code"
-msgstr ""
-
-#: scene/resources/shader.cpp
#, fuzzy
msgid "Custom Defines"
msgstr "Ludi laÅ­mendan scenon"
@@ -23709,15 +25628,6 @@ msgstr ""
#: scene/resources/texture.cpp
#, fuzzy
-msgid "Storage"
-msgstr "Memoras dosieron:"
-
-#: scene/resources/texture.cpp
-msgid "Lossy Quality"
-msgstr ""
-
-#: scene/resources/texture.cpp
-#, fuzzy
msgid "Load Path"
msgstr "Åœargi antaÅ­agordon"
@@ -23846,11 +25756,6 @@ msgstr "Nevalida fonto por ombrigilo."
msgid "Fallback Environment"
msgstr ""
-#: scene/resources/world.cpp scene/resources/world_2d.cpp
-#, fuzzy
-msgid "Space"
-msgstr "Ĉefa sceno"
-
#: scene/resources/world.cpp
#, fuzzy
msgid "Scenario"
@@ -23929,10 +25834,37 @@ msgstr ""
msgid "Wet"
msgstr ""
-#: servers/audio/effects/audio_effect_compressor.cpp
-msgid "Threshold"
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "Voice"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+msgid "Delay (ms)"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_phaser.cpp
+msgid "Rate Hz"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#, fuzzy
+msgid "Depth (ms)"
+msgstr "Profundo"
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+msgid "Level dB"
msgstr ""
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+#: servers/audio/effects/audio_effect_panner.cpp
+#, fuzzy
+msgid "Pan"
+msgstr "Pakas"
+
#: servers/audio/effects/audio_effect_compressor.cpp
#: servers/audio/effects/audio_effect_filter.cpp
msgid "Gain"
@@ -23955,20 +25887,6 @@ msgid "Tap 1"
msgstr ""
#: servers/audio/effects/audio_effect_delay.cpp
-msgid "Delay (ms)"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_delay.cpp
-msgid "Level dB"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_delay.cpp
-#: servers/audio/effects/audio_effect_panner.cpp
-#, fuzzy
-msgid "Pan"
-msgstr "Pakas"
-
-#: servers/audio/effects/audio_effect_delay.cpp
msgid "Tap 2"
msgstr ""
@@ -24029,10 +25947,6 @@ msgstr ""
msgid "Range Max Hz"
msgstr ""
-#: servers/audio/effects/audio_effect_phaser.cpp
-msgid "Rate Hz"
-msgstr ""
-
#: servers/audio/effects/audio_effect_pitch_shift.cpp
msgid "Oversampling"
msgstr ""
@@ -24048,7 +25962,7 @@ msgid "Predelay"
msgstr ""
#: servers/audio/effects/audio_effect_reverb.cpp
-msgid "(msec)"
+msgid "Msec"
msgstr ""
#: servers/audio/effects/audio_effect_reverb.cpp
diff --git a/editor/translations/es.po b/editor/translations/es.po
index d896f220f3..f98ce3578e 100644
--- a/editor/translations/es.po
+++ b/editor/translations/es.po
@@ -80,8 +80,8 @@ msgstr ""
"Project-Id-Version: Godot Engine editor\n"
"Report-Msgid-Bugs-To: https://github.com/godotengine/godot\n"
"POT-Creation-Date: \n"
-"PO-Revision-Date: 2022-03-10 22:01+0000\n"
-"Last-Translator: flamenco687 <flamenco687@protonmail.com>\n"
+"PO-Revision-Date: 2022-03-28 05:19+0000\n"
+"Last-Translator: Javier Ocampos <xavier.ocampos@gmail.com>\n"
"Language-Team: Spanish <https://hosted.weblate.org/projects/godot-engine/"
"godot/es/>\n"
"Language: es\n"
@@ -91,175 +91,153 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 4.12-dev\n"
-#: core/bind/core_bind.cpp
+#: core/bind/core_bind.cpp main/main.cpp
msgid "Tablet Driver"
-msgstr ""
+msgstr "Driver de la Tablet"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Clipboard"
-msgstr "¡El portapapeles está vacío!"
+msgstr "Portapapeles"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Current Screen"
-msgstr "Escena Actual"
+msgstr "Pantalla actual"
#: core/bind/core_bind.cpp
msgid "Exit Code"
-msgstr ""
+msgstr "Código de Salida"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "V-Sync Enabled"
-msgstr "Activar"
+msgstr "V-Sync Activado"
#: core/bind/core_bind.cpp main/main.cpp
msgid "V-Sync Via Compositor"
-msgstr ""
+msgstr "V-Sync Vía Compositor"
#: core/bind/core_bind.cpp main/main.cpp
msgid "Delta Smoothing"
-msgstr ""
+msgstr "Suavizado Delta"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Low Processor Usage Mode"
-msgstr "Modo de Movimiento"
+msgstr "Modo de Bajo Uso del Procesador"
#: core/bind/core_bind.cpp
msgid "Low Processor Usage Mode Sleep (µsec)"
-msgstr ""
+msgstr "Modo de Bajo Uso del Procesador en Reposo (µseg)"
#: core/bind/core_bind.cpp main/main.cpp platform/uwp/os_uwp.cpp
-#, fuzzy
msgid "Keep Screen On"
-msgstr "Mantener el Depurador Abierto"
+msgstr "Mantener la Pantalla Activa"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Min Window Size"
-msgstr "Tamaño del Outline:"
+msgstr "Tamaño Mínimo de la Ventana"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Max Window Size"
-msgstr "Tamaño del Outline:"
+msgstr "Tamaño Máximo de la Ventana"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Screen Orientation"
-msgstr "Operador Screen."
+msgstr "Orientación de la Pantalla"
#: core/bind/core_bind.cpp main/main.cpp platform/uwp/os_uwp.cpp
-#, fuzzy
msgid "Window"
-msgstr "Nueva Ventana"
+msgstr "Ventana"
#: core/bind/core_bind.cpp main/main.cpp
-#, fuzzy
msgid "Borderless"
-msgstr "Píxeles del Borde"
+msgstr "Sin bordes"
#: core/bind/core_bind.cpp
msgid "Per Pixel Transparency Enabled"
-msgstr ""
+msgstr "Transparencia Por Píxel Activada"
#: core/bind/core_bind.cpp main/main.cpp
-#, fuzzy
msgid "Fullscreen"
-msgstr "Cambiar a Pantalla Completa"
+msgstr "Pantalla Completa"
#: core/bind/core_bind.cpp
msgid "Maximized"
-msgstr ""
+msgstr "Maximizada"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Minimized"
-msgstr "Inicializar"
+msgstr "Minimizada"
#: core/bind/core_bind.cpp main/main.cpp scene/gui/dialogs.cpp
#: scene/gui/graph_node.cpp
msgid "Resizable"
-msgstr ""
+msgstr "Redimensionable"
#: core/bind/core_bind.cpp core/os/input_event.cpp scene/2d/node_2d.cpp
#: scene/2d/physics_body_2d.cpp scene/2d/remote_transform_2d.cpp
#: scene/3d/physics_body.cpp scene/3d/remote_transform.cpp
#: scene/gui/control.cpp scene/gui/line_edit.cpp
-#, fuzzy
msgid "Position"
-msgstr "Posición del Dock"
+msgstr "Posición"
#: core/bind/core_bind.cpp editor/editor_settings.cpp main/main.cpp
#: modules/gdscript/gdscript_editor.cpp modules/gridmap/grid_map.cpp
#: modules/mono/csharp_script.cpp modules/visual_script/visual_script_nodes.cpp
-#: scene/2d/tile_map.cpp scene/3d/camera.cpp scene/gui/control.cpp
-#: scene/gui/graph_edit.cpp scene/main/viewport.cpp
+#: scene/2d/tile_map.cpp scene/3d/camera.cpp scene/3d/light.cpp
+#: scene/gui/control.cpp scene/gui/graph_edit.cpp scene/main/viewport.cpp
#: scene/resources/dynamic_font.cpp scene/resources/navigation_mesh.cpp
#: scene/resources/primitive_meshes.cpp scene/resources/sky.cpp
#: scene/resources/style_box.cpp scene/resources/texture.cpp
#: scene/resources/visual_shader.cpp servers/visual_server.cpp
-#, fuzzy
msgid "Size"
-msgstr "Tamaño:"
+msgstr "Tamaño"
#: core/bind/core_bind.cpp
msgid "Endian Swap"
-msgstr ""
+msgstr "Intercambio de Endian"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Editor Hint"
-msgstr "Editor"
+msgstr "Sugerencia del Editor"
#: core/bind/core_bind.cpp
msgid "Print Error Messages"
-msgstr ""
+msgstr "Imprimir Mensajes de Error"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Iterations Per Second"
-msgstr "Modo de Interpolación"
+msgstr "Iteraciones Por Segundo"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Target FPS"
-msgstr "Objetivo"
+msgstr "Objetivo de FPS"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Time Scale"
-msgstr "Nodo TimeScale"
+msgstr "Escala de Tiempo"
#: core/bind/core_bind.cpp main/main.cpp
-#, fuzzy
msgid "Physics Jitter Fix"
-msgstr "Fotogramas de Física %"
+msgstr "Arreglo de las Fluctuaciones Físicas"
#: core/bind/core_bind.cpp editor/plugins/version_control_editor_plugin.cpp
msgid "Error"
msgstr "Error"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Error String"
-msgstr "Error al Guardar"
+msgstr "Cadena de Error"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Error Line"
-msgstr "Error al Guardar"
+msgstr "Línea de Error"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Result"
-msgstr "Resultados de la Búsqueda"
+msgstr "Resultado"
#: core/command_queue_mt.cpp core/message_queue.cpp main/main.cpp
msgid "Memory"
-msgstr ""
+msgstr "Memoria"
#: core/command_queue_mt.cpp core/message_queue.cpp
#: core/register_core_types.cpp drivers/gles2/rasterizer_canvas_base_gles2.cpp
@@ -269,16 +247,15 @@ msgstr ""
#: drivers/gles3/rasterizer_storage_gles3.cpp main/main.cpp
#: servers/visual_server.cpp
msgid "Limits"
-msgstr ""
+msgstr "Límites"
#: core/command_queue_mt.cpp
-#, fuzzy
msgid "Command Queue"
-msgstr "Command: Rotar"
+msgstr "Cola de Comandos"
#: core/command_queue_mt.cpp
msgid "Multithreading Queue Size (KB)"
-msgstr ""
+msgstr "Tamaño de la Cola Multihilo (KB)"
#: core/func_ref.cpp modules/visual_script/visual_script_builtin_funcs.cpp
#: modules/visual_script/visual_script_func_nodes.cpp
@@ -295,82 +272,70 @@ msgstr "Función"
#: scene/resources/audio_stream_sample.cpp scene/resources/bit_map.cpp
#: scene/resources/concave_polygon_shape.cpp scene/resources/curve.cpp
#: scene/resources/polygon_path_finder.cpp scene/resources/texture.cpp
-#, fuzzy
msgid "Data"
-msgstr "Con Datos"
+msgstr "Datos"
#: core/io/file_access_network.cpp core/register_core_types.cpp
-#: editor/editor_settings.cpp editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp main/main.cpp
+#: editor/editor_settings.cpp main/main.cpp
#: modules/gdscript/language_server/gdscript_language_server.cpp
-#, fuzzy
msgid "Network"
-msgstr "Profiler de Red"
+msgstr "Red"
#: core/io/file_access_network.cpp
-#, fuzzy
msgid "Remote FS"
-msgstr "Remoto "
+msgstr "FS Remoto"
#: core/io/file_access_network.cpp
-#, fuzzy
msgid "Page Size"
-msgstr "Página: "
+msgstr "Tamaño de Página"
#: core/io/file_access_network.cpp
msgid "Page Read Ahead"
-msgstr ""
+msgstr "Página Leída por Adelantado"
#: core/io/http_client.cpp
msgid "Blocking Mode Enabled"
-msgstr ""
+msgstr "Modo de Bloqueo Activado"
#: core/io/http_client.cpp
-#, fuzzy
msgid "Connection"
-msgstr "Conectar"
+msgstr "Conexión"
#: core/io/http_client.cpp
msgid "Read Chunk Size"
-msgstr ""
+msgstr "Leer Tamaño del Fragmento"
#: core/io/marshalls.cpp
-#, fuzzy
msgid "Object ID"
-msgstr "Objetos Dibujados:"
+msgstr "ID del Objeto"
#: core/io/multiplayer_api.cpp core/io/packet_peer.cpp
-#, fuzzy
msgid "Allow Object Decoding"
-msgstr "Activar Papel Cebolla"
+msgstr "Permitir la Decodificación de Objetos"
#: core/io/multiplayer_api.cpp scene/main/scene_tree.cpp
msgid "Refuse New Network Connections"
-msgstr ""
+msgstr "Rechazar Nuevas Conexiones de Red"
#: core/io/multiplayer_api.cpp scene/main/scene_tree.cpp
-#, fuzzy
msgid "Network Peer"
-msgstr "Profiler de Red"
+msgstr "Red de Pares"
#: core/io/multiplayer_api.cpp scene/animation/animation_player.cpp
-#, fuzzy
msgid "Root Node"
-msgstr "Nombre del nodo raíz"
+msgstr "Nodo Raíz"
#: core/io/networked_multiplayer_peer.cpp
-#, fuzzy
msgid "Refuse New Connections"
-msgstr "Conectar"
+msgstr "Rechazar Nuevas Conexiones"
#: core/io/networked_multiplayer_peer.cpp
-#, fuzzy
msgid "Transfer Mode"
-msgstr "Tipo de Transformación"
+msgstr "Modo de Transferencia"
#: core/io/packet_peer.cpp
msgid "Encode Buffer Max Size"
-msgstr ""
+msgstr "Tamaño Máximo del Buffer de Codificación"
#: core/io/packet_peer.cpp
msgid "Input Buffer Max Size"
@@ -397,9 +362,8 @@ msgid "Blocking Handshake"
msgstr ""
#: core/io/udp_server.cpp
-#, fuzzy
msgid "Max Pending Connections"
-msgstr "Editar Conexión:"
+msgstr "Máximo de Conexiones Pendientes"
#: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp
#: modules/visual_script/visual_script_builtin_funcs.cpp
@@ -453,7 +417,6 @@ msgid "Seed"
msgstr ""
#: core/math/random_number_generator.cpp
-#, fuzzy
msgid "State"
msgstr "Estado"
@@ -475,9 +438,8 @@ msgstr ""
#: modules/mono/csharp_script.cpp scene/animation/animation_player.cpp
#: scene/gui/control.cpp scene/gui/line_edit.cpp scene/main/node.cpp
#: scene/resources/material.cpp
-#, fuzzy
msgid "Text Editor"
-msgstr "Abrir Editor"
+msgstr "Editor de Textos"
#: core/os/input.cpp editor/editor_settings.cpp
#: editor/plugins/script_text_editor.cpp modules/gdscript/gdscript.cpp
@@ -485,18 +447,16 @@ msgstr "Abrir Editor"
#: modules/gdscript/language_server/gdscript_text_document.cpp
#: scene/animation/animation_player.cpp scene/gui/control.cpp
#: scene/main/node.cpp scene/resources/material.cpp
-#, fuzzy
msgid "Completion"
-msgstr "Copiar Selección"
+msgstr "Completar"
#: core/os/input.cpp editor/editor_settings.cpp
#: editor/plugins/script_text_editor.cpp modules/gdscript/gdscript_editor.cpp
#: modules/gdscript/language_server/gdscript_text_document.cpp
#: scene/animation/animation_player.cpp scene/gui/control.cpp
#: scene/main/node.cpp scene/resources/material.cpp
-#, fuzzy
msgid "Use Single Quotes"
-msgstr "Nuevo Tile Individual"
+msgstr "Utilizar Comillas Simples"
#: core/os/input_event.cpp editor/project_settings_editor.cpp
#: servers/audio_server.cpp
@@ -504,43 +464,37 @@ msgid "Device"
msgstr "Dispositivo"
#: core/os/input_event.cpp
-#, fuzzy
msgid "Alt"
-msgstr "Todos"
+msgstr "Alt"
#: core/os/input_event.cpp
msgid "Shift"
msgstr ""
#: core/os/input_event.cpp
-#, fuzzy
msgid "Control"
-msgstr "Control de Versiones"
+msgstr "Control"
#: core/os/input_event.cpp
msgid "Meta"
msgstr ""
#: core/os/input_event.cpp
-#, fuzzy
msgid "Command"
-msgstr "Comunidad"
+msgstr "Command"
#: core/os/input_event.cpp scene/2d/touch_screen_button.cpp
#: scene/gui/base_button.cpp scene/gui/texture_button.cpp
-#, fuzzy
msgid "Pressed"
-msgstr "Preajuste"
+msgstr "Preset"
#: core/os/input_event.cpp
-#, fuzzy
msgid "Scancode"
-msgstr "Escanear"
+msgstr "Código de Escaneo"
#: core/os/input_event.cpp
-#, fuzzy
msgid "Physical Scancode"
-msgstr "Tecla Física"
+msgstr "Código de Escaneo Físico"
#: core/os/input_event.cpp
msgid "Unicode"
@@ -551,24 +505,20 @@ msgid "Echo"
msgstr ""
#: core/os/input_event.cpp scene/gui/base_button.cpp
-#, fuzzy
msgid "Button Mask"
-msgstr "Botón"
+msgstr "Máscara de Botones"
#: core/os/input_event.cpp scene/2d/node_2d.cpp scene/gui/control.cpp
-#, fuzzy
msgid "Global Position"
-msgstr "Constante Global"
+msgstr "Posición Global"
#: core/os/input_event.cpp
-#, fuzzy
msgid "Factor"
-msgstr "Vector"
+msgstr "Factor"
#: core/os/input_event.cpp
-#, fuzzy
msgid "Button Index"
-msgstr "Ãndice de Botones del Mouse:"
+msgstr "Ãndice de Botones"
#: core/os/input_event.cpp
msgid "Doubleclick"
@@ -579,21 +529,19 @@ msgid "Tilt"
msgstr ""
#: core/os/input_event.cpp
-#, fuzzy
msgid "Pressure"
-msgstr "Preajuste"
+msgstr "Presionado"
#: core/os/input_event.cpp
-#, fuzzy
msgid "Relative"
-msgstr "Ajuste Relativo"
+msgstr "Relativo"
-#: core/os/input_event.cpp scene/2d/camera_2d.cpp
-#: scene/3d/interpolated_camera.cpp scene/animation/animation_player.cpp
-#: scene/resources/environment.cpp
-#, fuzzy
+#: core/os/input_event.cpp scene/2d/camera_2d.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/interpolated_camera.cpp
+#: scene/animation/animation_player.cpp scene/resources/environment.cpp
+#: scene/resources/particles_material.cpp
msgid "Speed"
-msgstr "Velocidad:"
+msgstr "Velocidad"
#: core/os/input_event.cpp editor/project_settings_editor.cpp
#: scene/3d/sprite_3d.cpp
@@ -601,14 +549,12 @@ msgid "Axis"
msgstr "Eje"
#: core/os/input_event.cpp
-#, fuzzy
msgid "Axis Value"
-msgstr "Fijar Valor"
+msgstr "Valor de los Ejes"
#: core/os/input_event.cpp modules/visual_script/visual_script_func_nodes.cpp
-#, fuzzy
msgid "Index"
-msgstr "Ãndice:"
+msgstr "Ãndice"
#: core/os/input_event.cpp editor/project_settings_editor.cpp
#: modules/visual_script/visual_script_nodes.cpp
@@ -626,65 +572,63 @@ msgid "Delta"
msgstr ""
#: core/os/input_event.cpp
-#, fuzzy
msgid "Channel"
-msgstr "Cambiar"
+msgstr "Canal"
#: core/os/input_event.cpp main/main.cpp
-#, fuzzy
msgid "Message"
-msgstr "Mensaje de Confirmación"
+msgstr "Mensaje"
#: core/os/input_event.cpp
-#, fuzzy
msgid "Pitch"
-msgstr "Eje de paso:"
+msgstr "Pitch"
-#: core/os/input_event.cpp scene/2d/physics_body_2d.cpp
-#: scene/3d/physics_body.cpp
-#, fuzzy
+#: core/os/input_event.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/physics_body_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/3d/physics_body.cpp scene/resources/particles_material.cpp
msgid "Velocity"
-msgstr "Vista de Órbita Derecha"
+msgstr "Velocidad"
#: core/os/input_event.cpp
msgid "Instrument"
msgstr ""
#: core/os/input_event.cpp
-#, fuzzy
msgid "Controller Number"
-msgstr "Número de Línea:"
+msgstr "Número de Controlador"
#: core/os/input_event.cpp
msgid "Controller Value"
msgstr ""
#: core/project_settings.cpp editor/editor_node.cpp main/main.cpp
-#, fuzzy
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/windows/export/export.cpp
msgid "Application"
-msgstr "Acción"
+msgstr "Aplicación"
#: core/project_settings.cpp main/main.cpp
-#, fuzzy
msgid "Config"
-msgstr "Configurar Ajuste"
+msgstr "Configurar"
#: core/project_settings.cpp
-#, fuzzy
msgid "Project Settings Override"
-msgstr "Configuración del Proyecto..."
+msgstr "Anulación de la Configuración del Proyecto"
#: core/project_settings.cpp core/resource.cpp
#: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp
#: editor/editor_plugin_settings.cpp editor/editor_profiler.cpp
#: editor/project_manager.cpp editor/settings_config_dialog.cpp
-#: modules/gdnative/nativescript/nativescript.cpp scene/2d/area_2d.cpp
-#: scene/3d/area.cpp scene/main/node.cpp
+#: modules/gdnative/nativescript/nativescript.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/osx/export/export.cpp scene/2d/area_2d.cpp scene/3d/area.cpp
+#: scene/main/node.cpp
msgid "Name"
msgstr "Nombre"
#: core/project_settings.cpp editor/editor_help.cpp
-#: modules/visual_script/visual_script_nodes.cpp
+#: modules/visual_script/visual_script_nodes.cpp platform/uwp/export/export.cpp
+#: platform/windows/export/export.cpp
msgid "Description"
msgstr "Descripción"
@@ -700,14 +644,12 @@ msgid "Main Scene"
msgstr "Escena Principal"
#: core/project_settings.cpp
-#, fuzzy
msgid "Disable stdout"
-msgstr "Desactivar Autotile"
+msgstr "Desactivar stdout"
#: core/project_settings.cpp
-#, fuzzy
msgid "Disable stderr"
-msgstr "Desactivar Elemento"
+msgstr "Desactivar stderr"
#: core/project_settings.cpp
msgid "Use Hidden Project Data Directory"
@@ -722,14 +664,13 @@ msgid "Custom User Dir Name"
msgstr ""
#: core/project_settings.cpp editor/animation_track_editor.cpp
-#: editor/editor_audio_buses.cpp servers/audio_server.cpp
+#: editor/editor_audio_buses.cpp main/main.cpp servers/audio_server.cpp
msgid "Audio"
msgstr "Audio"
#: core/project_settings.cpp
-#, fuzzy
msgid "Default Bus Layout"
-msgstr "Cargar el Bus Layout predeterminado."
+msgstr "Layout de Bus por Defecto"
#: core/project_settings.cpp editor/editor_export.cpp
#: editor/editor_file_system.cpp editor/editor_node.cpp
@@ -739,9 +680,8 @@ msgid "Editor"
msgstr "Editor"
#: core/project_settings.cpp
-#, fuzzy
msgid "Main Run Args"
-msgstr "Argumentos de Escena Principal:"
+msgstr "Argumentos de la Ejecución Principal"
#: core/project_settings.cpp
msgid "Search In File Extensions"
@@ -761,76 +701,65 @@ msgid "Autoload On Startup"
msgstr ""
#: core/project_settings.cpp
-#, fuzzy
msgid "Plugin Name"
-msgstr "Nombre del Plugin:"
+msgstr "Nombre del Plugin"
#: core/project_settings.cpp scene/2d/collision_object_2d.cpp
#: scene/3d/collision_object.cpp scene/gui/control.cpp
-#, fuzzy
msgid "Input"
-msgstr "Añadir Entrada"
+msgstr "Entrada"
#: core/project_settings.cpp
msgid "UI Accept"
-msgstr ""
+msgstr "Aceptar UI"
#: core/project_settings.cpp
-#, fuzzy
msgid "UI Select"
-msgstr "Seleccionar"
+msgstr "Seleccionar UI"
#: core/project_settings.cpp
-#, fuzzy
msgid "UI Cancel"
-msgstr "Cancelar"
+msgstr "Cancelar UI"
#: core/project_settings.cpp
-#, fuzzy
msgid "UI Focus Next"
-msgstr "Foco en Ruta"
+msgstr "Foco en la UI Siguiente"
#: core/project_settings.cpp
-#, fuzzy
msgid "UI Focus Prev"
-msgstr "Foco en Ruta"
+msgstr "Foco en la UI Anterior"
#: core/project_settings.cpp
-#, fuzzy
msgid "UI Left"
-msgstr "Superior Izquierda"
+msgstr "UI Izquierda"
#: core/project_settings.cpp
-#, fuzzy
msgid "UI Right"
-msgstr "Superior Derecha"
+msgstr "UI Derecha"
#: core/project_settings.cpp
msgid "UI Up"
-msgstr ""
+msgstr "UI Superior"
#: core/project_settings.cpp
-#, fuzzy
msgid "UI Down"
-msgstr "Abajo"
+msgstr "UI Inferior"
#: core/project_settings.cpp
-#, fuzzy
msgid "UI Page Up"
-msgstr "Página: "
+msgstr "UI Página Superior"
#: core/project_settings.cpp
msgid "UI Page Down"
-msgstr ""
+msgstr "UI Página Inferior"
#: core/project_settings.cpp
msgid "UI Home"
msgstr ""
#: core/project_settings.cpp
-#, fuzzy
msgid "UI End"
-msgstr "Al Final"
+msgstr "UI Final"
#: core/project_settings.cpp main/main.cpp modules/bullet/register_types.cpp
#: modules/bullet/space_bullet.cpp scene/2d/physics_body_2d.cpp
@@ -839,9 +768,8 @@ msgstr "Al Final"
#: servers/physics/space_sw.cpp servers/physics_2d/physics_2d_server_sw.cpp
#: servers/physics_2d/physics_2d_server_wrap_mt.h
#: servers/physics_2d/space_2d_sw.cpp
-#, fuzzy
msgid "Physics"
-msgstr " (Física)"
+msgstr "Física"
#: core/project_settings.cpp editor/editor_settings.cpp
#: editor/plugins/spatial_editor_plugin.cpp main/main.cpp
@@ -849,12 +777,11 @@ msgstr " (Física)"
#: scene/3d/physics_body.cpp scene/resources/world.cpp
#: servers/physics/space_sw.cpp
msgid "3D"
-msgstr ""
+msgstr "3D"
#: core/project_settings.cpp
-#, fuzzy
msgid "Smooth Trimesh Collision"
-msgstr "Crear Collider Triangular Hermano"
+msgstr "Colisión Suave de Trimesh"
#: core/project_settings.cpp drivers/gles2/rasterizer_canvas_base_gles2.cpp
#: drivers/gles2/rasterizer_scene_gles2.cpp
@@ -865,9 +792,8 @@ msgstr "Crear Collider Triangular Hermano"
#: modules/lightmapper_cpu/register_types.cpp scene/main/scene_tree.cpp
#: scene/main/viewport.cpp servers/visual/visual_server_scene.cpp
#: servers/visual_server.cpp
-#, fuzzy
msgid "Rendering"
-msgstr "Renderizador:"
+msgstr "Renderización"
#: core/project_settings.cpp drivers/gles2/rasterizer_storage_gles2.cpp
#: drivers/gles3/rasterizer_scene_gles3.cpp
@@ -877,23 +803,25 @@ msgstr "Renderizador:"
#: scene/resources/multimesh.cpp servers/visual/visual_server_scene.cpp
#: servers/visual_server.cpp
msgid "Quality"
-msgstr ""
+msgstr "Calidad"
#: core/project_settings.cpp scene/animation/animation_tree.cpp
#: scene/gui/file_dialog.cpp scene/main/scene_tree.cpp
#: servers/visual_server.cpp
-#, fuzzy
msgid "Filters"
-msgstr "Filtros:"
+msgstr "Filtros"
#: core/project_settings.cpp scene/main/viewport.cpp
msgid "Sharpen Intensity"
-msgstr ""
+msgstr "Enfocar con Intensidad"
-#: core/project_settings.cpp editor/editor_node.cpp editor/editor_settings.cpp
-#: editor/plugins/script_editor_plugin.cpp editor/project_export.cpp
-#: main/main.cpp modules/gdscript/gdscript.cpp
-#: modules/visual_script/visual_script.cpp scene/3d/room_manager.cpp
+#: core/project_settings.cpp editor/editor_export.cpp editor/editor_node.cpp
+#: editor/editor_settings.cpp editor/plugins/script_editor_plugin.cpp
+#: editor/project_export.cpp main/main.cpp modules/gdscript/gdscript.cpp
+#: modules/visual_script/visual_script.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp scene/3d/room_manager.cpp
#: scene/main/scene_tree.cpp scene/resources/shape_2d.cpp
#: servers/visual_server.cpp
msgid "Debug"
@@ -901,9 +829,8 @@ msgstr "Depurar"
#: core/project_settings.cpp main/main.cpp modules/gdscript/gdscript.cpp
#: modules/visual_script/visual_script.cpp scene/resources/dynamic_font.cpp
-#, fuzzy
msgid "Settings"
-msgstr "Configuración:"
+msgstr "Configuración"
#: core/project_settings.cpp editor/script_editor_debugger.cpp main/main.cpp
#: modules/mono/mono_gd/gd_mono.cpp
@@ -911,19 +838,16 @@ msgid "Profiler"
msgstr "Perfilador"
#: core/project_settings.cpp
-#, fuzzy
msgid "Max Functions"
-msgstr "Crear Función"
+msgstr "Funciones Máximas"
#: core/project_settings.cpp scene/3d/vehicle_body.cpp
-#, fuzzy
msgid "Compression"
-msgstr "Expresión"
+msgstr "Compresión"
#: core/project_settings.cpp
-#, fuzzy
msgid "Formats"
-msgstr "Formato"
+msgstr "Formatos"
#: core/project_settings.cpp
msgid "Zstd"
@@ -962,9 +886,8 @@ msgid "TCP"
msgstr ""
#: core/register_core_types.cpp
-#, fuzzy
msgid "Connect Timeout Seconds"
-msgstr "Conexiones al método:"
+msgstr "Tiempo de Espera de Conexión en Segundos"
#: core/register_core_types.cpp
msgid "Packet Peer Stream"
@@ -979,9 +902,8 @@ msgid "SSL"
msgstr ""
#: core/register_core_types.cpp main/main.cpp
-#, fuzzy
msgid "Certificates"
-msgstr "Vértices:"
+msgstr "Certificados"
#: core/resource.cpp editor/dependency_editor.cpp
#: editor/editor_resource_picker.cpp
@@ -990,9 +912,8 @@ msgid "Resource"
msgstr "Recursos"
#: core/resource.cpp
-#, fuzzy
msgid "Local To Scene"
-msgstr "Cerrar Escena"
+msgstr "Local a la Escena"
#: core/resource.cpp editor/dependency_editor.cpp
#: editor/editor_autoload_settings.cpp editor/plugins/path_editor_plugin.cpp
@@ -1002,23 +923,20 @@ msgid "Path"
msgstr "Ruta"
#: core/script_language.cpp
-#, fuzzy
msgid "Source Code"
-msgstr "Fuente"
+msgstr "Código Fuente"
#: core/translation.cpp
-#, fuzzy
msgid "Messages"
-msgstr "Mensaje de Confirmación"
+msgstr "Mensajes"
#: core/translation.cpp editor/project_settings_editor.cpp
msgid "Locale"
msgstr "Idioma"
#: core/translation.cpp
-#, fuzzy
msgid "Test"
-msgstr "Prueba"
+msgstr "Probar"
#: core/translation.cpp scene/resources/font.cpp
msgid "Fallback"
@@ -1081,15 +999,13 @@ msgstr ""
#: drivers/gles2/rasterizer_canvas_base_gles2.cpp
#: drivers/gles3/rasterizer_canvas_base_gles3.cpp
-#, fuzzy
msgid "Snapping"
-msgstr "Ajuste Inteligente"
+msgstr "Snapping"
#: drivers/gles2/rasterizer_canvas_base_gles2.cpp
#: drivers/gles3/rasterizer_canvas_base_gles3.cpp
-#, fuzzy
msgid "Use GPU Pixel Snap"
-msgstr "Usar Ajuste de Píxeles"
+msgstr "Usar GPU Pixel Snap"
#: drivers/gles2/rasterizer_scene_gles2.cpp
#: drivers/gles3/rasterizer_scene_gles3.cpp
@@ -1098,9 +1014,8 @@ msgstr ""
#: drivers/gles2/rasterizer_storage_gles2.cpp
#: drivers/gles3/rasterizer_storage_gles3.cpp
-#, fuzzy
msgid "Lightmapping"
-msgstr "Calcular Lightmaps"
+msgstr "Lightmapping"
#: drivers/gles2/rasterizer_storage_gles2.cpp
#: drivers/gles3/rasterizer_storage_gles3.cpp
@@ -1116,9 +1031,8 @@ msgid "Max Renderable Lights"
msgstr ""
#: drivers/gles3/rasterizer_scene_gles3.cpp
-#, fuzzy
msgid "Max Renderable Reflections"
-msgstr "Centrar Selección"
+msgstr "Reflejos Renderizables Máximos"
#: drivers/gles3/rasterizer_scene_gles3.cpp
msgid "Max Lights Per Object"
@@ -1129,6 +1043,7 @@ msgid "Subsurface Scattering"
msgstr ""
#: drivers/gles3/rasterizer_scene_gles3.cpp
+#: editor/import/resource_importer_texture.cpp
#: editor/plugins/spatial_editor_plugin.cpp modules/gltf/gltf_node.cpp
#: modules/gridmap/grid_map.cpp scene/2d/cpu_particles_2d.cpp
#: scene/2d/node_2d.cpp scene/2d/parallax_layer.cpp scene/2d/polygon_2d.cpp
@@ -1140,9 +1055,8 @@ msgid "Scale"
msgstr "Escala"
#: drivers/gles3/rasterizer_scene_gles3.cpp
-#, fuzzy
msgid "Follow Surface"
-msgstr "Llenar superficie"
+msgstr "Seguir la Superficie"
#: drivers/gles3/rasterizer_scene_gles3.cpp
msgid "Weight Samples"
@@ -1421,11 +1335,11 @@ msgstr "Eliminar Pista de Animación"
#: editor/plugins/tile_map_editor_plugin.cpp editor/scene_tree_dock.cpp
#: editor/spatial_editor_gizmos.cpp modules/csg/csg_gizmos.cpp
#: modules/gridmap/grid_map_editor_plugin.cpp
-#, fuzzy
msgid "Editors"
-msgstr "Editor"
+msgstr "Editores"
#: editor/animation_track_editor.cpp editor/editor_settings.cpp
+#: editor/import/resource_importer_scene.cpp
#: editor/plugins/animation_player_editor_plugin.cpp editor/scene_tree_dock.cpp
#: scene/2d/animated_sprite.cpp scene/2d/cpu_particles_2d.cpp
#: scene/2d/sprite.cpp scene/3d/cpu_particles.cpp scene/3d/sprite_3d.cpp
@@ -1435,9 +1349,8 @@ msgid "Animation"
msgstr "Animación"
#: editor/animation_track_editor.cpp editor/editor_settings.cpp
-#, fuzzy
msgid "Confirm Insert Track"
-msgstr "Insertar Pista y Clave de Animación"
+msgstr "Confirmar Pista de Inserción"
#. TRANSLATORS: %s will be replaced by a phrase describing the target of track.
#: editor/animation_track_editor.cpp
@@ -1662,14 +1575,14 @@ msgstr "Valor de step de animación."
msgid "Seconds"
msgstr "Segundos"
-#: editor/animation_track_editor.cpp
+#: editor/animation_track_editor.cpp editor/import/resource_importer_scene.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp main/main.cpp
#: scene/resources/texture.cpp
msgid "FPS"
msgstr "FPS"
#: editor/animation_track_editor.cpp editor/editor_plugin_settings.cpp
-#: editor/editor_resource_picker.cpp
+#: editor/editor_resource_picker.cpp editor/import/resource_importer_wav.cpp
#: editor/plugins/polygon_2d_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
@@ -2287,7 +2200,6 @@ msgstr "Desarrollador Principal"
#. TRANSLATORS: This refers to a job title.
#: editor/editor_about.cpp
-#, fuzzy
msgctxt "Job Title"
msgid "Project Manager"
msgstr "Administrador de Proyectos"
@@ -2585,7 +2497,7 @@ msgstr "Crear un nuevo Bus Layout."
#: editor/editor_audio_buses.cpp
msgid "Audio Bus Layout"
-msgstr "Layout de Bus de Audio"
+msgstr "Layout del Bus de Audio"
#: editor/editor_autoload_settings.cpp
msgid "Invalid name."
@@ -2636,7 +2548,9 @@ msgid "Remove Autoload"
msgstr "Eliminar Autoload"
#: editor/editor_autoload_settings.cpp editor/editor_plugin_settings.cpp
-#: modules/gdscript/gdscript.cpp scene/2d/polygon_2d.cpp scene/3d/area.cpp
+#: modules/gdscript/gdscript.cpp platform/android/export/export_plugin.cpp
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#: scene/2d/polygon_2d.cpp scene/3d/area.cpp scene/3d/physics_joint.cpp
#: scene/3d/reflection_probe.cpp scene/main/canvas_layer.cpp
#: scene/resources/material.cpp servers/visual_server.cpp
msgid "Enable"
@@ -2807,6 +2721,59 @@ msgstr ""
#: editor/editor_export.cpp platform/android/export/export_plugin.cpp
#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Custom Template"
+msgstr "Tema Personalizado"
+
+#: editor/editor_export.cpp editor/project_export.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp
+msgid "Release"
+msgstr "Release"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Binary Format"
+msgstr "Formato de Color"
+
+#: editor/editor_export.cpp
+msgid "64 Bits"
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Embed PCK"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Texture Format"
+msgstr "Región de Textura"
+
+#: editor/editor_export.cpp
+msgid "BPTC"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "S3TC"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "ETC"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "ETC2"
+msgstr ""
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "No BPTC Fallbacks"
+msgstr "Forzar Shader Fallbacks"
+
+#: editor/editor_export.cpp platform/android/export/export_plugin.cpp
+#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
msgid "Custom debug template not found."
msgstr "No se encontró la plantilla de depuración personalizada."
@@ -2992,6 +2959,7 @@ msgid "Make Current"
msgstr "Hacer Actual"
#: editor/editor_feature_profile.cpp editor/editor_node.cpp
+#: editor/import/resource_importer_scene.cpp
#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
msgid "Import"
msgstr "Importar"
@@ -3037,9 +3005,8 @@ msgid "Manage Editor Feature Profiles"
msgstr "Administrar Perfiles de Características del Editor"
#: editor/editor_feature_profile.cpp
-#, fuzzy
msgid "Default Feature Profile"
-msgstr "Perfil de Características de Godot"
+msgstr "Perfil de Características por Defecto"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
msgid "Select Current Folder"
@@ -3111,47 +3078,43 @@ msgid "Save a File"
msgstr "Guardar un Archivo"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-#, fuzzy
msgid "Access"
-msgstr "¡Éxito!"
+msgstr "Acceso"
#: editor/editor_file_dialog.cpp editor/editor_settings.cpp
-#, fuzzy
msgid "Display Mode"
-msgstr "Modo de Reproducción:"
+msgstr "Modo de Visualización"
-#: editor/editor_file_dialog.cpp main/main.cpp modules/csg/csg_shape.cpp
-#: modules/visual_script/visual_script_nodes.cpp
+#: editor/editor_file_dialog.cpp
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+#: editor/import/resource_importer_wav.cpp main/main.cpp
+#: modules/csg/csg_shape.cpp modules/visual_script/visual_script_nodes.cpp
#: modules/visual_script/visual_script_yield_nodes.cpp scene/2d/light_2d.cpp
#: scene/2d/physics_body_2d.cpp scene/2d/tile_map.cpp
#: scene/3d/baked_lightmap.cpp scene/3d/light.cpp scene/3d/physics_body.cpp
#: scene/gui/control.cpp scene/gui/file_dialog.cpp
#: scene/resources/environment.cpp scene/resources/material.cpp
#: servers/audio/effects/audio_effect_distortion.cpp
-#, fuzzy
msgid "Mode"
-msgstr "Modo desplazamiento lateral"
+msgstr "Modo"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-#, fuzzy
msgid "Current Dir"
-msgstr "Actual:"
+msgstr "Dirección Actual"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-#, fuzzy
msgid "Current File"
-msgstr "Perfil Actual:"
+msgstr "Archivo Actual"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-#, fuzzy
msgid "Current Path"
-msgstr "Actual:"
+msgstr "Ruta Actual"
#: editor/editor_file_dialog.cpp editor/editor_settings.cpp
#: scene/gui/file_dialog.cpp
-#, fuzzy
msgid "Show Hidden Files"
-msgstr "Act./Desact. Archivos Ocultos"
+msgstr "Mostrar Archivos Ocultos"
#: editor/editor_file_dialog.cpp
msgid "Disable Overwrite Warning"
@@ -3260,7 +3223,9 @@ msgstr "(Re)Importación de Assets"
msgid "Reimport Missing Imported Files"
msgstr ""
-#: editor/editor_help.cpp
+#: editor/editor_help.cpp scene/2d/camera_2d.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/resources/dynamic_font.cpp
+#: scene/resources/style_box.cpp
msgid "Top"
msgstr "Superior"
@@ -3312,6 +3277,7 @@ msgid "Fonts"
msgstr "Fuentes"
#: editor/editor_help.cpp editor/plugins/theme_editor_plugin.cpp
+#: platform/iphone/export/export.cpp
msgid "Icons"
msgstr "Iconos"
@@ -3438,34 +3404,28 @@ msgid "Property:"
msgstr "Propiedad:"
#: editor/editor_inspector.cpp editor/editor_spin_slider.cpp
-#, fuzzy
msgid "Label"
-msgstr "Valor"
+msgstr "Etiqueta"
#: editor/editor_inspector.cpp editor/editor_spin_slider.cpp
-#, fuzzy
msgid "Read Only"
-msgstr "Solo Métodos"
+msgstr "Sólo Lectura"
#: editor/editor_inspector.cpp
-#, fuzzy
msgid "Checkable"
-msgstr "Activar Elemento"
+msgstr "Chequeable"
#: editor/editor_inspector.cpp
-#, fuzzy
msgid "Checked"
-msgstr "Elemento Activado"
+msgstr "Chequeado"
#: editor/editor_inspector.cpp
-#, fuzzy
msgid "Draw Red"
-msgstr "Llamadas de Dibujado:"
+msgstr "Dibujar en Rojo"
#: editor/editor_inspector.cpp
-#, fuzzy
msgid "Keying"
-msgstr "Reproducir"
+msgstr "Teclear"
#: editor/editor_inspector.cpp
msgid "Pin value"
@@ -3480,7 +3440,9 @@ msgstr "Fijar un valor obliga a guardarlo aunque sea igual al predeterminado."
msgid "Pin value [Disabled because '%s' is editor-only]"
msgstr "Fijar Valor [Desactivado porque '%s' es solo para el editor]"
-#: editor/editor_inspector.cpp editor/scene_tree_dock.cpp
+#: editor/editor_inspector.cpp
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+#: editor/scene_tree_dock.cpp
#: modules/visual_script/visual_script_func_nodes.cpp
#: modules/visual_script/visual_script_nodes.cpp
#: modules/visual_script/visual_script_property_selector.cpp
@@ -3823,6 +3785,16 @@ msgid "Quick Open Script..."
msgstr "Apertura Rápida de Script..."
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Save & Reload"
+msgstr "Guardar y Reiniciar"
+
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Save changes to '%s' before reloading?"
+msgstr "¿Guardar cambios de '%s' antes de cerrar?"
+
+#: editor/editor_node.cpp
msgid "Save & Close"
msgstr "Guardar y Cerrar"
@@ -3941,6 +3913,11 @@ msgid "Open Project Manager?"
msgstr "¿Abrir el Administrador de Proyectos?"
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Save changes to the following scene(s) before reloading?"
+msgstr "¿Guardar los cambios en las siguientes escenas antes de salir?"
+
+#: editor/editor_node.cpp
msgid "Save & Quit"
msgstr "Guardar y salir"
@@ -4136,25 +4113,21 @@ msgid "Scene"
msgstr "Escena"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Scene Naming"
-msgstr "Ruta de la Escena:"
+msgstr "Nombres de Escenas"
#: editor/editor_node.cpp editor/editor_settings.cpp editor/scene_tree_dock.cpp
#: servers/arvr/arvr_interface.cpp
-#, fuzzy
msgid "Interface"
-msgstr "Interfaz de usuario"
+msgstr "Interfaz"
#: editor/editor_node.cpp editor/editor_settings.cpp
-#, fuzzy
msgid "Scene Tabs"
-msgstr "Cambiar Pestaña de Escena"
+msgstr "Pestaña de Escena"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Always Show Close Button"
-msgstr "Mostrar Siempre la Cuadrícula"
+msgstr "Mostrar Siempre el Botón de Cierre"
#: editor/editor_node.cpp editor/editor_settings.cpp
msgid "Resize If Many Tabs"
@@ -4169,9 +4142,8 @@ msgid "Output"
msgstr "Salida"
#: editor/editor_node.cpp editor/editor_settings.cpp
-#, fuzzy
msgid "Always Clear Output On Play"
-msgstr "Limpiar Salida"
+msgstr "Limpiar Siempre la Salida en la Reproducción"
#: editor/editor_node.cpp editor/editor_settings.cpp
msgid "Always Open Output On Play"
@@ -4182,52 +4154,45 @@ msgid "Always Close Output On Stop"
msgstr ""
#: editor/editor_node.cpp editor/editor_settings.cpp
-#, fuzzy
msgid "Auto Save"
-msgstr "Corte Automático"
+msgstr "Guardado Automático"
#: editor/editor_node.cpp editor/editor_settings.cpp
-#, fuzzy
msgid "Save Before Running"
-msgstr "Guarda escena antes de ejecutar..."
+msgstr "Guardar Antes de Ejecutar"
#: editor/editor_node.cpp
msgid "Save On Focus Loss"
msgstr ""
#: editor/editor_node.cpp editor/editor_settings.cpp
-#, fuzzy
msgid "Save Each Scene On Quit"
-msgstr "Guardar Rama como Escena"
+msgstr "Guardar Cada Escena Al Salir"
#: editor/editor_node.cpp editor/editor_settings.cpp
-#, fuzzy
msgid "Quit Confirmation"
-msgstr "Ver Información"
+msgstr "Confirmación de Salida"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Show Update Spinner"
-msgstr "Ocultar Spinner de Actualización"
+msgstr "Mostrar Spinner de Actualización"
#: editor/editor_node.cpp
msgid "Update Continuously"
msgstr "Actualizar Continuamente"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Update Vital Only"
-msgstr "Actualizar cambios vitales"
+msgstr "Actualizar Solo lo Vital"
#: editor/editor_node.cpp
#, fuzzy
-msgid "Translate Properties"
-msgstr "Pegar Propiedades"
+msgid "Localize Settings"
+msgstr "Traducciones"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Restore Scenes On Load"
-msgstr "Obtener Nodo de Escena"
+msgstr "Restaurar Escenas al Cargar"
#: editor/editor_node.cpp editor/editor_settings.cpp
msgid "Show Thumbnail On Hover"
@@ -4239,17 +4204,16 @@ msgstr "Inspector"
#: editor/editor_node.cpp
#, fuzzy
-msgid "Capitalize Properties"
-msgstr "Pegar Propiedades"
+msgid "Default Property Name Style"
+msgstr "Ruta del Proyecto por Defecto"
#: editor/editor_node.cpp
msgid "Default Float Step"
msgstr ""
#: editor/editor_node.cpp scene/gui/tree.cpp
-#, fuzzy
msgid "Disable Folding"
-msgstr "Botón Desactivado"
+msgstr "Desactivar Plegado"
#: editor/editor_node.cpp
msgid "Auto Unfold Foreign Scenes"
@@ -4264,14 +4228,12 @@ msgid "Horizontal Vector Types Editing"
msgstr ""
#: editor/editor_node.cpp
-#, fuzzy
msgid "Open Resources In Current Inspector"
-msgstr "Abrir en el Inspector"
+msgstr "Recursos Abiertos en el Inspector Actual"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Resources To Open In New Inspector"
-msgstr "Abrir en el Inspector"
+msgstr "Recursos Para Abrir En Nuevo Inspector"
#: editor/editor_node.cpp
msgid "Default Color Picker Mode"
@@ -4850,7 +4812,9 @@ msgstr "Plugins Instalados:"
msgid "Update"
msgstr "Actualizar"
-#: editor/editor_plugin_settings.cpp
+#: editor/editor_plugin_settings.cpp platform/android/export/export_plugin.cpp
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp
msgid "Version"
msgstr "Versión"
@@ -4933,7 +4897,7 @@ msgstr ""
#: editor/editor_profiler.cpp
#, fuzzy
msgid "Profiler Frame Max Functions"
-msgstr "Cambiar nombre de función"
+msgstr "Funciones Máximas del Cuadro del Profiler"
#: editor/editor_properties.cpp
msgid "Edit Text:"
@@ -5067,15 +5031,13 @@ msgid "Base Type"
msgstr "Tipo Base"
#: editor/editor_resource_picker.cpp
-#, fuzzy
msgid "Edited Resource"
-msgstr "Añadir Recurso"
+msgstr "Recurso Editado"
#: editor/editor_resource_picker.cpp scene/gui/line_edit.cpp
#: scene/gui/slider.cpp scene/gui/spin_box.cpp
-#, fuzzy
msgid "Editable"
-msgstr "Elemento Editable"
+msgstr "Editable"
#: editor/editor_resource_picker.cpp editor/property_editor.cpp
msgid "New Script"
@@ -5086,9 +5048,8 @@ msgid "Extend Script"
msgstr "Extender Script"
#: editor/editor_resource_picker.cpp
-#, fuzzy
msgid "Script Owner"
-msgstr "Nombre del Script:"
+msgstr "Propietario del Script"
#: editor/editor_run_native.cpp
msgid ""
@@ -5126,14 +5087,12 @@ msgid "Did you forget the '_run' method?"
msgstr "Te olvidaste del método '_run'?"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Editor Language"
-msgstr "Layout del Editor"
+msgstr "Idioma del Editor"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Display Scale"
-msgstr "Mostrar Todos"
+msgstr "Escala de Visualización"
#: editor/editor_settings.cpp
msgid "Custom Display Scale"
@@ -5156,18 +5115,16 @@ msgid "Font Hinting"
msgstr ""
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Main Font"
-msgstr "Escena Principal"
+msgstr "Fuente Principal"
#: editor/editor_settings.cpp
msgid "Main Font Bold"
msgstr ""
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Code Font"
-msgstr "Añadir Punto de Nodo"
+msgstr "Código Fuente"
#: editor/editor_settings.cpp
msgid "Dim Editor On Dialog Popup"
@@ -5182,9 +5139,8 @@ msgid "Unfocused Low Processor Mode Sleep (µsec)"
msgstr ""
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Separate Distraction Mode"
-msgstr "Modo Sin Distracciones"
+msgstr "Modo de Distracción Separado"
#: editor/editor_settings.cpp
msgid "Automatically Open Screenshots"
@@ -5210,14 +5166,12 @@ msgid "Icon And Font Color"
msgstr ""
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Base Color"
-msgstr "Colores"
+msgstr "Color Base"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Accent Color"
-msgstr "Seleccionar Color"
+msgstr "Color de Acento"
#: editor/editor_settings.cpp scene/resources/environment.cpp
msgid "Contrast"
@@ -5228,53 +5182,44 @@ msgid "Relationship Line Opacity"
msgstr ""
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Highlight Tabs"
-msgstr "Guardar lightmaps"
+msgstr "Pestañas Destacadas"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Border Size"
-msgstr "Píxeles del Borde"
+msgstr "Tamaño del Borde"
#: editor/editor_settings.cpp
msgid "Use Graph Node Headers"
msgstr ""
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Additional Spacing"
-msgstr "Loop de Animación"
+msgstr "Espacio Adicional"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Custom Theme"
-msgstr "Editor de Themes"
+msgstr "Tema Personalizado"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Show Script Button"
-msgstr "Botón Rueda Derecha"
+msgstr "Mostrar Botón de Script"
#: editor/editor_settings.cpp editor/fileserver/editor_file_server.cpp
-#, fuzzy
msgid "Filesystem"
msgstr "Sistema de Archivos"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Directories"
-msgstr "Direcciones"
+msgstr "Directorios"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Autoscan Project Path"
-msgstr "Ruta del Proyecto:"
+msgstr "Autoescaneo de la Ruta del Proyecto"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Default Project Path"
-msgstr "Ruta del Proyecto:"
+msgstr "Ruta del Proyecto por Defecto"
#: editor/editor_settings.cpp
#, fuzzy
@@ -5296,9 +5241,8 @@ msgid "File Dialog"
msgstr "Diálogo XForm"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Thumbnail Size"
-msgstr "Miniatura..."
+msgstr "Tamaño de las Miniaturas"
#: editor/editor_settings.cpp
msgid "Docks"
@@ -5389,14 +5333,12 @@ msgid "Convert Indent On Save"
msgstr "Convertir Sangría en Espacios"
#: editor/editor_settings.cpp scene/gui/text_edit.cpp
-#, fuzzy
msgid "Draw Tabs"
-msgstr "Llamadas de Dibujado:"
+msgstr "Dibujar Pestañas"
#: editor/editor_settings.cpp scene/gui/text_edit.cpp
-#, fuzzy
msgid "Draw Spaces"
-msgstr "Llamadas de Dibujado:"
+msgstr "Dibujar Espacios"
#: editor/editor_settings.cpp editor/plugins/spatial_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/main/scene_tree.cpp
@@ -5429,14 +5371,12 @@ msgid "Appearance"
msgstr ""
#: editor/editor_settings.cpp scene/gui/text_edit.cpp
-#, fuzzy
msgid "Show Line Numbers"
-msgstr "Número de Línea:"
+msgstr "Mostrar Números de Línea"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Line Numbers Zero Padded"
-msgstr "Número de Línea:"
+msgstr "Números de Línea con Cero Relleno"
#: editor/editor_settings.cpp
msgid "Show Bookmark Gutter"
@@ -5893,7 +5833,7 @@ msgstr "Completo"
msgid "Rect Custom Position"
msgstr "Establecer Posición de Salida de Curva"
-#: editor/editor_settings.cpp
+#: editor/editor_settings.cpp platform/android/export/export_plugin.cpp
msgid "Screen"
msgstr ""
@@ -5904,9 +5844,8 @@ msgstr "Vista Frontal"
#: editor/editor_settings.cpp
#: modules/gdscript/language_server/gdscript_language_server.cpp
-#, fuzzy
msgid "Remote Host"
-msgstr "Remoto "
+msgstr "Host Remoto"
#: editor/editor_settings.cpp
#: modules/gdscript/language_server/gdscript_language_server.cpp
@@ -5920,6 +5859,19 @@ msgid "Editor SSL Certificates"
msgstr "Configuración del Editor"
#: editor/editor_settings.cpp
+msgid "HTTP Proxy"
+msgstr ""
+
+#: editor/editor_settings.cpp
+msgid "Host"
+msgstr ""
+
+#: editor/editor_settings.cpp editor/fileserver/editor_file_server.cpp
+#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp
+msgid "Port"
+msgstr ""
+
+#: editor/editor_settings.cpp
msgid "Project Manager"
msgstr "Administrador de Proyectos"
@@ -5962,15 +5914,14 @@ msgstr ""
msgid "String Color"
msgstr "Archivo de Almacenamiento:"
-#: editor/editor_settings.cpp
-#, fuzzy
+#: editor/editor_settings.cpp platform/javascript/export/export.cpp
+#: platform/uwp/export/export.cpp
msgid "Background Color"
-msgstr "Color de fondo inválido."
+msgstr "Color de Fondo"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Completion Background Color"
-msgstr "Color de fondo inválido."
+msgstr "Completar Color de Fondo"
#: editor/editor_settings.cpp
#, fuzzy
@@ -6009,9 +5960,8 @@ msgid "Caret Color"
msgstr ""
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Caret Background Color"
-msgstr "Color de fondo inválido."
+msgstr "Color de Fondo del Caret"
#: editor/editor_settings.cpp
#, fuzzy
@@ -6141,22 +6091,6 @@ msgid "Starting the download..."
msgstr "Comenzando la descarga..."
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "HTTP Proxy"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Host"
-msgstr ""
-
-#: editor/export_template_manager.cpp editor/fileserver/editor_file_server.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp main/main.cpp
-#: modules/mono/mono_gd/gd_mono.cpp
-msgid "Port"
-msgstr ""
-
-#: editor/export_template_manager.cpp
msgid "Error requesting URL:"
msgstr "Error al solicitar la URL:"
@@ -6415,6 +6349,7 @@ msgstr ""
#: editor/fileserver/editor_file_server.cpp
#: editor/plugins/version_control_editor_plugin.cpp
+#: platform/uwp/export/export.cpp platform/windows/export/export.cpp
msgid "Password"
msgstr "Contraseña"
@@ -6797,6 +6732,117 @@ msgstr ""
msgid "Use Ambient"
msgstr ""
+#: editor/import/resource_importer_bitmask.cpp
+#, fuzzy
+msgid "Create From"
+msgstr "Crear Carpeta"
+
+#: editor/import/resource_importer_bitmask.cpp
+#: servers/audio/effects/audio_effect_compressor.cpp
+msgid "Threshold"
+msgstr ""
+
+#: editor/import/resource_importer_csv_translation.cpp
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_scene.cpp
+#: editor/import/resource_importer_texture.cpp
+#: editor/import/resource_importer_wav.cpp scene/3d/gi_probe.cpp
+#, fuzzy
+msgid "Compress"
+msgstr "Componentes"
+
+#: editor/import/resource_importer_csv_translation.cpp
+msgid "Delimiter"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+msgid "No BPTC If RGB"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/sprite_3d.cpp
+#: scene/resources/material.cpp scene/resources/particles_material.cpp
+#: scene/resources/texture.cpp
+msgid "Flags"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/animation/tween.cpp
+#: scene/resources/texture.cpp
+msgid "Repeat"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/2d/light_2d.cpp
+#: scene/gui/control.cpp scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Filter"
+msgstr "Filtros:"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Mipmaps"
+msgstr "Señales"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+msgid "Anisotropic"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+msgid "sRGB"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#, fuzzy
+msgid "Slices"
+msgstr "Corte Automático"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
+#: scene/resources/style_box.cpp
+#, fuzzy
+msgid "Horizontal"
+msgstr "Horizontal:"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
+#: scene/resources/style_box.cpp
+#, fuzzy
+msgid "Vertical"
+msgstr "Vertical:"
+
+#: editor/import/resource_importer_obj.cpp
+#, fuzzy
+msgid "Generate Tangents"
+msgstr "Generar puntos"
+
+#: editor/import/resource_importer_obj.cpp
+#, fuzzy
+msgid "Scale Mesh"
+msgstr "Modo de Escalado"
+
+#: editor/import/resource_importer_obj.cpp
+#, fuzzy
+msgid "Offset Mesh"
+msgstr "Offset:"
+
+#: editor/import/resource_importer_obj.cpp
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Octahedral Compression"
+msgstr "Compresión"
+
+#: editor/import/resource_importer_obj.cpp
+#, fuzzy
+msgid "Optimize Mesh Flags"
+msgstr "Tamaño de los Indicadores"
+
#: editor/import/resource_importer_scene.cpp
msgid "Import as Single Scene"
msgstr "Importar como Escena Individual"
@@ -6837,6 +6883,156 @@ msgstr "Importar como Múltiples Escenas"
msgid "Import as Multiple Scenes+Materials"
msgstr "Importar como Escenas y Materiales Múltiples"
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Nodes"
+msgstr "Nodos"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Root Type"
+msgstr "Regresar"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Root Name"
+msgstr "Nombre Remoto"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Root Scale"
+msgstr "Escala"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Custom Script"
+msgstr "CustomNode"
+
+#: editor/import/resource_importer_scene.cpp scene/resources/texture.cpp
+#, fuzzy
+msgid "Storage"
+msgstr "Archivo de Almacenamiento:"
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Use Legacy Names"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+#, fuzzy
+msgid "Materials"
+msgstr "Cambios del Material:"
+
+#: editor/import/resource_importer_scene.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Location"
+msgstr "Traducciones"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Keep On Reimport"
+msgstr "Reimportar"
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+#, fuzzy
+msgid "Meshes"
+msgstr "Malla"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Ensure Tangents"
+msgstr "Modificar Tangente de Curva"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Light Baking"
+msgstr "Lightmapping"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Lightmap Texel Size"
+msgstr "Calcular Lightmaps"
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+msgid "Skins"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Use Named Skins"
+msgstr "Usar Ajuste de Escalado"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "External Files"
+msgstr "Abrir un Archivo"
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Store In Subdir"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Filter Script"
+msgstr "Filtrar scripts"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Keep Custom Tracks"
+msgstr "Transformar"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Optimizer"
+msgstr "Optimizar"
+
+#: editor/import/resource_importer_scene.cpp main/main.cpp
+#: modules/mono/mono_gd/gd_mono.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp scene/2d/camera_2d.cpp scene/2d/light_2d.cpp
+#: scene/2d/navigation_polygon.cpp scene/2d/ray_cast_2d.cpp scene/2d/sprite.cpp
+#: scene/2d/y_sort.cpp scene/3d/audio_stream_player_3d.cpp
+#: scene/3d/baked_lightmap.cpp scene/3d/interpolated_camera.cpp
+#: scene/3d/light.cpp scene/3d/navigation_mesh_instance.cpp
+#: scene/3d/physics_joint.cpp scene/3d/ray_cast.cpp scene/3d/sprite_3d.cpp
+#: scene/gui/graph_edit.cpp scene/gui/rich_text_label.cpp
+#: scene/resources/curve.cpp scene/resources/environment.cpp
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Enabled"
+msgstr "Activar"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Max Linear Error"
+msgstr "Error Lineal Máximo:"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Max Angular Error"
+msgstr "Error Angular Máximo:"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Max Angle"
+msgstr "Valor"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Remove Unused Tracks"
+msgstr "Eliminar Pista de Animación"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Clips"
+msgstr "Clips de Animación"
+
+#: editor/import/resource_importer_scene.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/particles_2d.cpp scene/3d/area.cpp scene/3d/cpu_particles.cpp
+#: scene/3d/particles.cpp scene/resources/environment.cpp
+#, fuzzy
+msgid "Amount"
+msgstr "Cantidad:"
+
#: editor/import/resource_importer_scene.cpp
#: editor/plugins/mesh_library_editor_plugin.cpp
msgid "Import Scene"
@@ -6879,12 +7075,149 @@ msgstr "¿Devolviste un objeto derivado de Node en el método `post_import()`?"
msgid "Saving..."
msgstr "Guardando..."
+#: editor/import/resource_importer_texture.cpp scene/resources/texture.cpp
+msgid "Lossy Quality"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "HDR Mode"
+msgstr "Modo de Selección"
+
+#: editor/import/resource_importer_texture.cpp
+msgid "BPTC LDR"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/mesh_instance_2d.cpp scene/2d/multimesh_instance_2d.cpp
+#: scene/2d/particles_2d.cpp scene/2d/sprite.cpp scene/resources/style_box.cpp
+msgid "Normal Map"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Process"
+msgstr "Post procesado"
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Fix Alpha Border"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Premult Alpha"
+msgstr "Editar Polígono"
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Hdr As Srgb"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Invert Color"
+msgstr "Vértice"
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Normal Map Invert Y"
+msgstr "Escala al azar:"
+
+#: editor/import/resource_importer_texture.cpp
+#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
+#: scene/audio/audio_stream_player.cpp scene/gui/video_player.cpp
+msgid "Stream"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Size Limit"
+msgstr "Límites"
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Detect 3D"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "SVG"
+msgstr "HSV"
+
#: editor/import/resource_importer_texture.cpp
msgid ""
"Warning, no suitable PC VRAM compression enabled in Project Settings. This "
"texture will not display correctly on PC."
msgstr ""
+#: editor/import/resource_importer_texture_atlas.cpp
+#, fuzzy
+msgid "Atlas File"
+msgstr "Tamaño del Outline:"
+
+#: editor/import/resource_importer_texture_atlas.cpp
+#, fuzzy
+msgid "Import Mode"
+msgstr "Modo de Exportación:"
+
+#: editor/import/resource_importer_texture_atlas.cpp
+#, fuzzy
+msgid "Crop To Region"
+msgstr "Establecer Región de Tile"
+
+#: editor/import/resource_importer_texture_atlas.cpp
+msgid "Trim Alpha Border From Region"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp scene/2d/physics_body_2d.cpp
+#, fuzzy
+msgid "Force"
+msgstr "Forzar Push"
+
+#: editor/import/resource_importer_wav.cpp
+msgid "8 Bit"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp main/main.cpp
+#: modules/mono/editor/csharp_project.cpp modules/mono/mono_gd/gd_mono.cpp
+msgid "Mono"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+#, fuzzy
+msgid "Max Rate"
+msgstr "Nodo Mix"
+
+#: editor/import/resource_importer_wav.cpp
+#, fuzzy
+msgid "Max Rate Hz"
+msgstr "Nodo Mix"
+
+#: editor/import/resource_importer_wav.cpp
+msgid "Trim"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+#, fuzzy
+msgid "Normalize"
+msgstr "Formato"
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+#, fuzzy
+msgid "Loop Mode"
+msgstr "Modo de Movimiento"
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+#, fuzzy
+msgid "Loop Begin"
+msgstr "Modo de Movimiento"
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+#, fuzzy
+msgid "Loop End"
+msgstr "Modo de Movimiento"
+
#: editor/import_defaults_editor.cpp
msgid "Select Importer"
msgstr "Seleccionar Importador"
@@ -6962,6 +7295,29 @@ msgid "Failed to load resource."
msgstr "Error al cargar el recurso."
#: editor/inspector_dock.cpp
+#, fuzzy
+msgid "Property Name Style"
+msgstr "Nombre del Proyecto:"
+
+#: editor/inspector_dock.cpp scene/gui/color_picker.cpp
+msgid "Raw"
+msgstr "Raw"
+
+#: editor/inspector_dock.cpp
+#, fuzzy
+msgid "Capitalized"
+msgstr "Capitalizar"
+
+#: editor/inspector_dock.cpp
+#, fuzzy
+msgid "Localized"
+msgstr "Idioma"
+
+#: editor/inspector_dock.cpp
+msgid "Localization not available for current language."
+msgstr ""
+
+#: editor/inspector_dock.cpp
msgid "Copy Properties"
msgstr "Copiar Propiedades"
@@ -8014,18 +8370,26 @@ msgid "License (Z-A)"
msgstr "Licencia (Z-A)"
#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgctxt "Pagination"
msgid "First"
msgstr "Primero"
-#: editor/plugins/asset_library_editor_plugin.cpp scene/gui/control.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgctxt "Pagination"
msgid "Previous"
msgstr "Anterior"
-#: editor/plugins/asset_library_editor_plugin.cpp scene/gui/control.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgctxt "Pagination"
msgid "Next"
msgstr "Siguiente"
#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgctxt "Pagination"
msgid "Last"
msgstr "Último"
@@ -8135,7 +8499,7 @@ msgstr "Calcular Lightmaps"
#: editor/plugins/baked_lightmap_editor_plugin.cpp
msgid "LightMap Bake"
-msgstr ""
+msgstr "Bake de LightMap"
#: editor/plugins/baked_lightmap_editor_plugin.cpp
msgid "Select lightmap bake file:"
@@ -8276,19 +8640,19 @@ msgstr ""
"Cuando está activo, al mover los nodos de Control se cambian sus anclajes en "
"lugar de sus márgenes."
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Top Left"
msgstr "Superior Izquierda"
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Top Right"
msgstr "Superior Derecha"
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Bottom Right"
msgstr "Inferior Derecha"
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Bottom Left"
msgstr "Inferior Izquierda"
@@ -9004,6 +9368,19 @@ msgstr "Calcular GI Probe"
msgid "Gradient Edited"
msgstr "Degradado Editado"
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+msgid "Swap GradientTexture2D Fill Points"
+msgstr ""
+
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+msgid "Swap Gradient Fill Points"
+msgstr ""
+
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+#, fuzzy
+msgid "Toggle Grid Snap"
+msgstr "Cambiar Modo"
+
#: editor/plugins/item_list_editor_plugin.cpp
msgid "Item %d"
msgstr "Elemento %d"
@@ -9240,8 +9617,9 @@ msgstr ""
"¿Actualizar desde la escena existente?\n"
"%s"
-#: editor/plugins/mesh_library_editor_plugin.cpp modules/gridmap/grid_map.cpp
-msgid "Mesh Library"
+#: editor/plugins/mesh_library_editor_plugin.cpp
+#, fuzzy
+msgid "MeshLibrary"
msgstr "Librería de Mallas"
#: editor/plugins/mesh_library_editor_plugin.cpp
@@ -10203,9 +10581,8 @@ msgid "Script Temperature History Size"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "Current Script Background Color"
-msgstr "Color de fondo inválido."
+msgstr "Color de Fondo del Script Actual"
#: editor/plugins/script_editor_plugin.cpp
#, fuzzy
@@ -10239,8 +10616,8 @@ msgstr "Conexiones al método:"
msgid "Source"
msgstr "Fuente"
-#: editor/plugins/script_text_editor.cpp scene/3d/interpolated_camera.cpp
-#: scene/animation/skeleton_ik.cpp
+#: editor/plugins/script_text_editor.cpp platform/uwp/export/export.cpp
+#: scene/3d/interpolated_camera.cpp scene/animation/skeleton_ik.cpp
msgid "Target"
msgstr "Objetivo"
@@ -11217,7 +11594,9 @@ msgstr "Velocidad:"
#: editor/plugins/sprite_frames_editor_plugin.cpp
#: modules/gltf/gltf_animation.cpp modules/minimp3/audio_stream_mp3.cpp
-#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp scene/2d/path_2d.cpp
+#: modules/minimp3/resource_importer_mp3.cpp
+#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp
+#: modules/stb_vorbis/resource_importer_ogg_vorbis.cpp scene/2d/path_2d.cpp
#: scene/3d/path.cpp scene/resources/animation.cpp scene/resources/material.cpp
msgid "Loop"
msgstr "Bucle"
@@ -11328,7 +11707,7 @@ msgstr "No se encontraron colores."
#: editor/plugins/theme_editor_plugin.cpp
msgid "{num} constant(s)"
-msgstr "{num} constant(s)"
+msgstr "{num} constante(s)"
#: editor/plugins/theme_editor_plugin.cpp
msgid "No constants found."
@@ -12111,8 +12490,9 @@ msgstr "Bitmask"
msgid "Priority"
msgstr "Prioridad"
-#: editor/plugins/tile_set_editor_plugin.cpp main/main.cpp scene/gui/button.cpp
-#: scene/gui/item_list.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp main/main.cpp
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#: scene/gui/button.cpp scene/gui/item_list.cpp
msgid "Icon"
msgstr "Icono"
@@ -13491,10 +13871,6 @@ msgstr ""
"exportación o en la configuración de exportación."
#: editor/project_export.cpp
-msgid "Release"
-msgstr "Release"
-
-#: editor/project_export.cpp
msgid "Exporting All"
msgstr "Exportar Todo"
@@ -15262,9 +15638,8 @@ msgid "Stack Frames"
msgstr "Fotogramas Apilados"
#: editor/script_editor_debugger.cpp
-#, fuzzy
msgid "Filter stack variables"
-msgstr "Filtrar tiles"
+msgstr "Filtrar variables apiladas"
#: editor/script_editor_debugger.cpp
msgid "Auto Switch To Remote Scene Tree"
@@ -15386,6 +15761,7 @@ msgid "Change AudioStreamPlayer3D Emission Angle"
msgstr "Cambiar Ãngulo de Emisión de AudioStreamPlayer3D"
#: editor/spatial_editor_gizmos.cpp modules/gltf/gltf_node.cpp
+#: platform/osx/export/export.cpp
msgid "Camera"
msgstr ""
@@ -15667,7 +16043,8 @@ msgstr ""
msgid "Use Nvidia Rect Flicker Workaround"
msgstr ""
-#: main/main.cpp platform/uwp/os_uwp.cpp
+#: main/main.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp platform/uwp/os_uwp.cpp
#, fuzzy
msgid "Display"
msgstr "Mostrar Todos"
@@ -15728,19 +16105,6 @@ msgstr ""
msgid "Allowed"
msgstr ""
-#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp scene/2d/camera_2d.cpp
-#: scene/2d/light_2d.cpp scene/2d/navigation_polygon.cpp
-#: scene/2d/ray_cast_2d.cpp scene/2d/sprite.cpp scene/2d/y_sort.cpp
-#: scene/3d/audio_stream_player_3d.cpp scene/3d/baked_lightmap.cpp
-#: scene/3d/interpolated_camera.cpp scene/3d/light.cpp
-#: scene/3d/navigation_mesh_instance.cpp scene/3d/ray_cast.cpp
-#: scene/3d/sprite_3d.cpp scene/gui/graph_edit.cpp
-#: scene/gui/rich_text_label.cpp scene/resources/curve.cpp
-#: scene/resources/environment.cpp
-#, fuzzy
-msgid "Enabled"
-msgstr "Activar"
-
#: main/main.cpp
msgid "Intended Usage"
msgstr ""
@@ -15772,13 +16136,14 @@ msgstr ""
msgid "Handheld"
msgstr ""
-#: main/main.cpp
+#: main/main.cpp platform/javascript/export/export.cpp
+#: platform/uwp/export/export.cpp
#, fuzzy
msgid "Orientation"
msgstr "Documentación en línea"
#: main/main.cpp scene/gui/scroll_container.cpp scene/gui/text_edit.cpp
-#: scene/main/scene_tree.cpp
+#: scene/main/scene_tree.cpp scene/register_scene_types.cpp
#, fuzzy
msgid "Common"
msgstr "Comunidad"
@@ -15821,7 +16186,7 @@ msgstr ""
#: main/main.cpp
#, fuzzy
-msgid "Frame Delay (msec)"
+msgid "Frame Delay Msec"
msgstr "Seleccionar Fotogramas"
#: main/main.cpp
@@ -15950,11 +16315,6 @@ msgstr ""
msgid "Tooltip Position Offset"
msgstr "Offset de Rotación:"
-#: main/main.cpp modules/mono/editor/csharp_project.cpp
-#: modules/mono/mono_gd/gd_mono.cpp
-msgid "Mono"
-msgstr ""
-
#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp
#, fuzzy
msgid "Debugger Agent"
@@ -15966,9 +16326,8 @@ msgid "Wait For Debugger"
msgstr "Depurador"
#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp
-#, fuzzy
msgid "Wait Timeout"
-msgstr "Tiempo de espera."
+msgstr "Tiempo de Espera"
#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp
msgid "Args"
@@ -16475,9 +16834,8 @@ msgid "Sparse Indices Byte Offset"
msgstr ""
#: modules/gltf/gltf_accessor.cpp
-#, fuzzy
msgid "Sparse Indices Component Type"
-msgstr "Analizando geometría..."
+msgstr "Ãndices Dispersos de Tipo de Componente"
#: modules/gltf/gltf_accessor.cpp
msgid "Sparse Values Buffer View"
@@ -16537,7 +16895,7 @@ msgstr "Colores"
msgid "Intensity"
msgstr ""
-#: modules/gltf/gltf_light.cpp scene/2d/light_2d.cpp
+#: modules/gltf/gltf_light.cpp scene/2d/light_2d.cpp scene/3d/light.cpp
#, fuzzy
msgid "Range"
msgstr "Cambiar"
@@ -16653,9 +17011,8 @@ msgid "Gloss Factor"
msgstr ""
#: modules/gltf/gltf_spec_gloss.cpp
-#, fuzzy
msgid "Specular Factor"
-msgstr "Operador de Scalar."
+msgstr "Factor Specular"
#: modules/gltf/gltf_spec_gloss.cpp
msgid "Spec Gloss Img"
@@ -16684,11 +17041,6 @@ msgstr "Con Datos"
msgid "Use Named Skin Binds"
msgstr ""
-#: modules/gltf/gltf_state.cpp scene/3d/physics_joint.cpp
-#, fuzzy
-msgid "Nodes"
-msgstr "Nodos"
-
#: modules/gltf/gltf_state.cpp
#, fuzzy
msgid "Buffer Views"
@@ -16700,16 +17052,6 @@ msgstr ""
#: modules/gltf/gltf_state.cpp
#, fuzzy
-msgid "Meshes"
-msgstr "Malla"
-
-#: modules/gltf/gltf_state.cpp
-#, fuzzy
-msgid "Materials"
-msgstr "Cambios del Material:"
-
-#: modules/gltf/gltf_state.cpp
-#, fuzzy
msgid "Scene Name"
msgstr "Ruta de la Escena:"
@@ -16725,15 +17067,11 @@ msgstr "Nombre del nodo raíz"
msgid "Textures"
msgstr "Características"
-#: modules/gltf/gltf_state.cpp
+#: modules/gltf/gltf_state.cpp platform/uwp/export/export.cpp
msgid "Images"
msgstr ""
#: modules/gltf/gltf_state.cpp
-msgid "Skins"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp
msgid "Cameras"
msgstr ""
@@ -16768,11 +17106,15 @@ msgid "Src Image"
msgstr "Mostrar Huesos"
#: modules/gridmap/grid_map.cpp
+msgid "Mesh Library"
+msgstr "Librería de Mallas"
+
+#: modules/gridmap/grid_map.cpp
#, fuzzy
msgid "Physics Material"
msgstr "Fotogramas de Física %"
-#: modules/gridmap/grid_map.cpp
+#: modules/gridmap/grid_map.cpp scene/3d/visual_instance.cpp
#, fuzzy
msgid "Use In Baked Light"
msgstr "Calcular Lightmaps"
@@ -16804,6 +17146,7 @@ msgstr "Centro"
#: modules/gridmap/grid_map.cpp scene/2d/collision_object_2d.cpp
#: scene/2d/tile_map.cpp scene/3d/collision_object.cpp scene/3d/soft_body.cpp
+#: scene/resources/material.cpp
msgid "Mask"
msgstr ""
@@ -16986,7 +17329,9 @@ msgid "Ultra Quality Ray Count"
msgstr ""
#: modules/minimp3/audio_stream_mp3.cpp
+#: modules/minimp3/resource_importer_mp3.cpp
#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp
+#: modules/stb_vorbis/resource_importer_ogg_vorbis.cpp
#, fuzzy
msgid "Loop Offset"
msgstr "Offset:"
@@ -17986,9 +18331,8 @@ msgid "CA Chain"
msgstr "Reestrablecer cadena IK"
#: modules/websocket/websocket_server.cpp
-#, fuzzy
msgid "Handshake Timeout"
-msgstr "Tiempo de espera."
+msgstr "Tiempo de Espera del Handshake"
#: modules/webxr/webxr_interface.cpp
#, fuzzy
@@ -18076,6 +18420,193 @@ msgid "The package must have at least one '.' separator."
msgstr "El paquete debe tener al menos un '.' como separador."
#: platform/android/export/export_plugin.cpp
+msgid "Use Custom Build"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Export Format"
+msgstr "Ruta de Exportación"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Keystore"
+msgstr "Depurador"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Debug User"
+msgstr "Depurador"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Debug Password"
+msgstr "Contraseña"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Release User"
+msgstr "Release"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Release Password"
+msgstr "Contraseña"
+
+#: platform/android/export/export_plugin.cpp
+msgid "One Click Deploy"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Clear Previous Install"
+msgstr "Inspeccionar Instancia Anterior"
+
+#: platform/android/export/export_plugin.cpp scene/resources/shader.cpp
+msgid "Code"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Min SDK"
+msgstr "Tamaño del Outline:"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Target SDK"
+msgstr "Objetivo de FPS"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Package"
+msgstr "Empaquetando"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Unique Name"
+msgstr "Nombre del Nodo:"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Signed"
+msgstr "Señal"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Classify As Game"
+msgstr "Nombre de Clase:"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Retain Data On Uninstall"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Exclude From Recents"
+msgstr "Eliminar Nodos"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Graphics"
+msgstr "Desplazamiento de Cuadrícula:"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "OpenGL Debug"
+msgstr "Abrir"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "XR Features"
+msgstr "Características"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "XR Mode"
+msgstr "Modo desplazamiento lateral"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Hand Tracking"
+msgstr "Empaquetando"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Hand Tracking Frequency"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Passthrough"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Immersive Mode"
+msgstr "Modo de Prioridad"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Support Small"
+msgstr "Soporte"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Support Normal"
+msgstr "Soporte"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Support Large"
+msgstr "Soporte"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Support Xlarge"
+msgstr "Soporte"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "User Data Backup"
+msgstr "Interfaz de usuario"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Allow"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Command Line"
+msgstr "Command"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Extra Args"
+msgstr "Argumentos extras de llamada:"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "APK Expansion"
+msgstr "Expresión"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Salt"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Public Key"
+msgstr "Ruta de la clave pública SSH"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Permissions"
+msgstr "Máscara de Emisión"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Custom Permissions"
+msgstr "Reproducir Escena Personalizada"
+
+#: platform/android/export/export_plugin.cpp
msgid "Select device from the list"
msgstr "Seleccionar dispositivo de la lista"
@@ -18198,6 +18729,11 @@ msgid ""
"Note that the singleton was also renamed from \"GodotPayments\" to "
"\"GodotGooglePlayBilling\"."
msgstr ""
+"Módulo \"GodotPaymentV3\" inválido incluido en la configuración del proyecto "
+"\"android/modules\" (cambiado en Godot 3.2.2).\n"
+"Reemplázalo con el plugin first-party \"GodotGooglePlayBilling\".\n"
+"Toma en cuenta que el singleton también fue renombrado de \"GodotPayments\" "
+"a \"GodotGooglePlayBilling\"."
#: platform/android/export/export_plugin.cpp
msgid "\"Use Custom Build\" must be enabled to use the plugins."
@@ -18413,6 +18949,178 @@ msgid "The character '%s' is not allowed in Identifier."
msgstr "El carácter '% s' no está permitido en el Identificador."
#: platform/iphone/export/export.cpp
+msgid "App Store Team ID"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Provisioning Profile UUID Debug"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Code Sign Identity Debug"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Export Method Debug"
+msgstr "Exportar Con Depuración"
+
+#: platform/iphone/export/export.cpp
+msgid "Provisioning Profile UUID Release"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Code Sign Identity Release"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Export Method Release"
+msgstr "Modo de Exportación:"
+
+#: platform/iphone/export/export.cpp
+msgid "Targeted Device Family"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Info"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Identifier"
+msgstr "Identificador inválido:"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Signature"
+msgstr "Señal"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Short Version"
+msgstr "Versión"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Copyright"
+msgstr "Superior Derecha"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Capabilities"
+msgstr "Capitalizar Propiedades"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Access Wi-Fi"
+msgstr "Acceso"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Push Notifications"
+msgstr "Rotación al azar:"
+
+#: platform/iphone/export/export.cpp scene/3d/baked_lightmap.cpp
+#, fuzzy
+msgid "User Data"
+msgstr "Interfaz de usuario"
+
+#: platform/iphone/export/export.cpp
+msgid "Accessible From Files App"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Accessible From Itunes Sharing"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Privacy"
+msgstr "Ruta de la Clave Privada SSH"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Camera Usage Description"
+msgstr "Descripción"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Microphone Usage Description"
+msgstr "Descripciones de Propiedades"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Photolibrary Usage Description"
+msgstr "Descripciones de Propiedades"
+
+#: platform/iphone/export/export.cpp
+msgid "iPhone 120 X 120"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPhone 180 X 180"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 76 X 76"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 152 X 152"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 167 X 167"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "App Store 1024 X 1024"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Spotlight 40 X 40"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Spotlight 80 X 80"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Storyboard"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Use Launch Screen Storyboard"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Image Scale Mode"
+msgstr "Modo de Escalado"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Custom Image @2x"
+msgstr "CustomNode"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Custom Image @3x"
+msgstr "CustomNode"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Use Custom BG Color"
+msgstr "CustomNode"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Custom BG Color"
+msgstr "CustomNode"
+
+#: platform/iphone/export/export.cpp
msgid "App Store Team ID not specified - cannot configure the project."
msgstr ""
"App Store Team ID no especificado - no se puede configurar el proyecto."
@@ -18450,6 +19158,80 @@ msgid "Could not read file:"
msgstr "No se pudo leer el archivo:"
#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Variant"
+msgstr "Separación:"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Export Type"
+msgstr "Exportar"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "VRAM Texture Compression"
+msgstr "Expresión"
+
+#: platform/javascript/export/export.cpp
+msgid "For Desktop"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "For Mobile"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Html"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Export Icon"
+msgstr "Expandir Todo"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Custom Html Shell"
+msgstr "CustomNode"
+
+#: platform/javascript/export/export.cpp
+msgid "Head Include"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Canvas Resize Policy"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Focus Canvas On Start"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Experimental Virtual Keyboard"
+msgstr "Filtrar señales"
+
+#: platform/javascript/export/export.cpp
+msgid "Progressive Web App"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Offline Page"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 144 X 144"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 180 X 180"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 512 X 512"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
msgid "Could not read HTML shell:"
msgstr "No se pudo leer el shell HTML:"
@@ -18555,6 +19337,202 @@ msgid "Unknown object type."
msgstr "Tipo de objeto desconocido."
#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "App Category"
+msgstr "Categoría:"
+
+#: platform/osx/export/export.cpp
+msgid "High Res"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Location Usage Description"
+msgstr "Descripción"
+
+#: platform/osx/export/export.cpp
+msgid "Address Book Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Calendar Usage Description"
+msgstr "Descripción"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Photos Library Usage Description"
+msgstr "Descripciones de Propiedades"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Desktop Folder Usage Description"
+msgstr "Descripciones de Métodos"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Documents Folder Usage Description"
+msgstr "Descripciones de Métodos"
+
+#: platform/osx/export/export.cpp
+msgid "Downloads Folder Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Network Volumes Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Removable Volumes Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#, fuzzy
+msgid "Codesign"
+msgstr "Firma de código DMG"
+
+#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Identity"
+msgstr "Indentar a la Izquierda"
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#, fuzzy
+msgid "Timestamp"
+msgstr "Tiempo"
+
+#: platform/osx/export/export.cpp
+msgid "Hardened Runtime"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Replace Existing Signature"
+msgstr "Reemplazar en Archivos"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Entitlements"
+msgstr "Gizmos"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Custom File"
+msgstr "CustomNode"
+
+#: platform/osx/export/export.cpp
+msgid "Allow JIT Code Execution"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Allow Unsigned Executable Memory"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Allow Dyld Environment Variables"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Disable Library Validation"
+msgstr "Botón Desactivado"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Audio Input"
+msgstr "Añadir Entrada"
+
+#: platform/osx/export/export.cpp
+msgid "Address Book"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Calendars"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Photos Library"
+msgstr "Exportar Librería"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Apple Events"
+msgstr "Añadir Evento"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Debugging"
+msgstr "Depurar"
+
+#: platform/osx/export/export.cpp
+msgid "App Sandbox"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Network Server"
+msgstr "Red de Pares"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Network Client"
+msgstr "Red de Pares"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Device Usb"
+msgstr "Dispositivo"
+
+#: platform/osx/export/export.cpp
+msgid "Device Bluetooth"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Files Downloads"
+msgstr "Descargar"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Files Pictures"
+msgstr "Características"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Files Music"
+msgstr "Archivo"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Files Movies"
+msgstr "Filtrar tiles"
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#, fuzzy
+msgid "Custom Options"
+msgstr "Opciones de Bus"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Notarization"
+msgstr "Traducciones"
+
+#: platform/osx/export/export.cpp
+msgid "Apple ID Name"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Apple ID Password"
+msgstr "Contraseña"
+
+#: platform/osx/export/export.cpp
+msgid "Apple Team ID"
+msgstr ""
+
+#: platform/osx/export/export.cpp
msgid ""
"Note: The notarization process generally takes less than an hour. When the "
"process is completed, you'll receive an email."
@@ -18790,6 +19768,136 @@ msgid "Force Builtin Codesign"
msgstr ""
#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Architecture"
+msgstr "Añadir una entrada de arquitectura"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Display Name"
+msgstr "Escala de Visualización"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Short Name"
+msgstr "Nombre del Script:"
+
+#: platform/uwp/export/export.cpp
+msgid "Publisher"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Publisher Display Name"
+msgstr "Nombre para mostrar del editor inválido."
+
+#: platform/uwp/export/export.cpp
+msgid "Product Guid"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Publisher Guid"
+msgstr "Limpiar Guías"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Signing"
+msgstr "Señal"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Certificate"
+msgstr "Certificados"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Algorithm"
+msgstr "Depurador"
+
+#: platform/uwp/export/export.cpp
+msgid "Major"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Minor"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Build"
+msgstr "Modo de Regla"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Revision"
+msgstr "Expresión"
+
+#: platform/uwp/export/export.cpp
+msgid "Landscape"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Portrait"
+msgstr "Voltear Portales"
+
+#: platform/uwp/export/export.cpp
+msgid "Landscape Flipped"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Portrait Flipped"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Store Logo"
+msgstr "Modo de Escalado"
+
+#: platform/uwp/export/export.cpp
+msgid "Square 44 X 44 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 71 X 71 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 150 X 150 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 310 X 310 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Wide 310 X 150 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Splash Screen"
+msgstr "Llamadas de Dibujado:"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Tiles"
+msgstr "Archivo"
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Square 150 X 150"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Wide 310 X 150"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Square 310 X 310"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
msgid "Invalid package short name."
msgstr "Nombre corto del paquete inválido."
@@ -18869,15 +19977,52 @@ msgstr ""
#: platform/uwp/export/export.cpp
#, fuzzy
-msgid "Debug Password"
-msgstr "Contraseña"
+msgid "Debug Algorithm"
+msgstr "Depurador"
-#: platform/uwp/export/export.cpp
+#: platform/windows/export/export.cpp
+msgid "Identity Type"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Timestamp Server URL"
+msgstr ""
+
+#: platform/windows/export/export.cpp
#, fuzzy
-msgid "Debug Algorithm"
+msgid "Digest Algorithm"
msgstr "Depurador"
#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "File Version"
+msgstr "Versión"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Product Version"
+msgstr "Versión de producto no válida:"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Company Name"
+msgstr "Nombre del Nodo:"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Product Name"
+msgstr "Nombre del Proyecto:"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "File Description"
+msgstr "Descripción"
+
+#: platform/windows/export/export.cpp
+msgid "Trademarks"
+msgstr ""
+
+#: platform/windows/export/export.cpp
msgid ""
"The rcedit tool must be configured in the Editor Settings (Export > Windows "
"> Rcedit) to change the icon or app information data."
@@ -18952,12 +20097,14 @@ msgstr "Reproducir"
msgid "Centered"
msgstr "Centro"
-#: scene/2d/animated_sprite.cpp scene/2d/camera_2d.cpp scene/2d/light_2d.cpp
+#: scene/2d/animated_sprite.cpp scene/2d/camera_2d.cpp
+#: scene/2d/cpu_particles_2d.cpp scene/2d/light_2d.cpp
#: scene/2d/parallax_background.cpp scene/2d/parallax_layer.cpp
#: scene/2d/path_2d.cpp scene/2d/polygon_2d.cpp scene/2d/sprite.cpp
-#: scene/3d/path.cpp scene/3d/physics_body.cpp scene/3d/sprite_3d.cpp
-#: scene/gui/graph_node.cpp scene/gui/rich_text_effect.cpp
-#: scene/main/canvas_layer.cpp scene/resources/material.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/path.cpp scene/3d/physics_body.cpp
+#: scene/3d/sprite_3d.cpp scene/gui/graph_node.cpp
+#: scene/gui/rich_text_effect.cpp scene/main/canvas_layer.cpp
+#: scene/resources/material.cpp scene/resources/particles_material.cpp
#: scene/resources/style_box.cpp
#, fuzzy
msgid "Offset"
@@ -19032,11 +20179,6 @@ msgstr "Añadir Bus de Audio"
msgid "Override"
msgstr "Anulaciones"
-#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
-#: scene/audio/audio_stream_player.cpp scene/gui/video_player.cpp
-msgid "Stream"
-msgstr ""
-
#: scene/2d/audio_stream_player_2d.cpp scene/audio/audio_stream_player.cpp
#: scene/gui/video_player.cpp servers/audio/effects/audio_effect_amplify.cpp
#, fuzzy
@@ -19063,13 +20205,13 @@ msgid "Stream Paused"
msgstr ""
#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
-#: scene/3d/reflection_probe.cpp scene/3d/visual_instance.cpp
-#: scene/resources/material.cpp
+#: scene/3d/light.cpp scene/3d/reflection_probe.cpp
+#: scene/3d/visual_instance.cpp scene/resources/material.cpp
#, fuzzy
msgid "Max Distance"
msgstr "Seleccionar Distancia:"
-#: scene/2d/audio_stream_player_2d.cpp
+#: scene/2d/audio_stream_player_2d.cpp scene/3d/light.cpp
#, fuzzy
msgid "Attenuation"
msgstr "Animación"
@@ -19125,6 +20267,24 @@ msgstr "Modo de Movimiento"
msgid "Limit"
msgstr ""
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/style_box.cpp
+#, fuzzy
+msgid "Left"
+msgstr "UI Izquierda"
+
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/style_box.cpp
+#, fuzzy
+msgid "Right"
+msgstr "Luz"
+
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/dynamic_font.cpp scene/resources/style_box.cpp
+#, fuzzy
+msgid "Bottom"
+msgstr "Inferior Izquierda"
+
#: scene/2d/camera_2d.cpp
#, fuzzy
msgid "Smoothed"
@@ -19369,13 +20529,6 @@ msgstr ""
msgid "Emitting"
msgstr "Configuración:"
-#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp scene/3d/area.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
-#: scene/resources/environment.cpp
-#, fuzzy
-msgid "Amount"
-msgstr "Cantidad:"
-
#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp
#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
msgid "Lifetime"
@@ -19440,18 +20593,13 @@ msgstr ""
#: scene/2d/mesh_instance_2d.cpp scene/2d/multimesh_instance_2d.cpp
#: scene/2d/particles_2d.cpp scene/2d/polygon_2d.cpp scene/2d/sprite.cpp
#: scene/3d/sprite_3d.cpp scene/gui/nine_patch_rect.cpp
-#: scene/gui/texture_rect.cpp scene/resources/sky.cpp
-#: scene/resources/style_box.cpp scene/resources/visual_shader_nodes.cpp
+#: scene/gui/texture_rect.cpp scene/resources/material.cpp
+#: scene/resources/sky.cpp scene/resources/style_box.cpp
+#: scene/resources/visual_shader_nodes.cpp
#, fuzzy
msgid "Texture"
msgstr "Texto"
-#: scene/2d/cpu_particles_2d.cpp scene/2d/mesh_instance_2d.cpp
-#: scene/2d/multimesh_instance_2d.cpp scene/2d/particles_2d.cpp
-#: scene/2d/sprite.cpp scene/resources/style_box.cpp
-msgid "Normal Map"
-msgstr ""
-
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
#, fuzzy
@@ -19460,9 +20608,8 @@ msgstr "Máscara de Emisión"
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
-#, fuzzy
msgid "Sphere Radius"
-msgstr "Fuente de Emisión: "
+msgstr "Radio de la Esfera"
#: scene/2d/cpu_particles_2d.cpp
#, fuzzy
@@ -19475,10 +20622,10 @@ msgid "Normals"
msgstr "Formato"
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/3d/sprite_3d.cpp scene/resources/material.cpp
-#: scene/resources/particles_material.cpp scene/resources/texture.cpp
-msgid "Flags"
-msgstr ""
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Align Y"
+msgstr "Asignar"
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
@@ -19499,6 +20646,12 @@ msgid "Initial Velocity"
msgstr "Inicializar"
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Velocity Random"
+msgstr "Velocidad"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp servers/physics_2d_server.cpp
#: servers/physics_server.cpp
msgid "Angular Velocity"
@@ -19507,6 +20660,12 @@ msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
#, fuzzy
+msgid "Velocity Curve"
+msgstr "Velocidad"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
msgid "Orbit Velocity"
msgstr "Vista de Órbita Derecha"
@@ -19518,6 +20677,23 @@ msgstr "Lineal"
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Accel"
+msgstr "Acceso"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Accel Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Accel Curve"
+msgstr "Partir Curva"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
msgid "Radial Accel"
msgstr ""
@@ -19527,19 +20703,55 @@ msgid "Tangential Accel"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/2d/joints_2d.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/vehicle_body.cpp
-#: scene/resources/particles_material.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/physics_joint.cpp
+#: scene/3d/vehicle_body.cpp scene/resources/particles_material.cpp
#: servers/audio/effects/audio_effect_reverb.cpp
msgid "Damping"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+msgid "Damping Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Damping Curve"
+msgstr "Partir Curva"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp scene/3d/light.cpp
+#: scene/resources/particles_material.cpp
msgid "Angle"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+msgid "Angle Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Angle Curve"
+msgstr "Cerrar Curva"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#, fuzzy
+msgid "Scale Amount"
+msgstr "Cantidad:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+msgid "Scale Amount Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#, fuzzy
+msgid "Scale Amount Curve"
+msgstr "Escalar Desde Cursor"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
#, fuzzy
msgid "Color Ramp"
msgstr "Colores"
@@ -19555,6 +20767,48 @@ msgstr ""
msgid "Hue Variation"
msgstr "Separación:"
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Variation"
+msgstr "Separación:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Variation Random"
+msgstr "Separación:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Variation Curve"
+msgstr "Separación:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Speed Random"
+msgstr "Escala"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Speed Curve"
+msgstr "Partir Curva"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Offset Random"
+msgstr "Offset:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Offset Curve"
+msgstr "Cerrar Curva"
+
#: scene/2d/joints_2d.cpp
msgid "Node A and Node B must be PhysicsBody2Ds"
msgstr "El nodo A y el nodo B deben ser PhysicsBody2D"
@@ -19586,6 +20840,7 @@ msgid "Node B"
msgstr "Nodos"
#: scene/2d/joints_2d.cpp scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp
+#: scene/3d/light.cpp scene/3d/physics_joint.cpp
#: scene/resources/environment.cpp
msgid "Bias"
msgstr ""
@@ -19595,7 +20850,7 @@ msgstr ""
msgid "Disable Collision"
msgstr "Botón Desactivado"
-#: scene/2d/joints_2d.cpp
+#: scene/2d/joints_2d.cpp scene/3d/physics_joint.cpp
msgid "Softness"
msgstr ""
@@ -19613,7 +20868,7 @@ msgstr "Inicializar"
msgid "Rest Length"
msgstr ""
-#: scene/2d/joints_2d.cpp scene/3d/vehicle_body.cpp
+#: scene/2d/joints_2d.cpp scene/3d/physics_joint.cpp scene/3d/vehicle_body.cpp
msgid "Stiffness"
msgstr ""
@@ -19636,7 +20891,7 @@ msgid "Texture Scale"
msgstr "Región de Textura"
#: scene/2d/light_2d.cpp scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp
-#: scene/resources/environment.cpp scene/resources/sky.cpp
+#: scene/3d/light.cpp scene/resources/environment.cpp scene/resources/sky.cpp
msgid "Energy"
msgstr ""
@@ -19677,12 +20932,6 @@ msgstr "Vista Trasera"
msgid "Gradient Length"
msgstr "Degradado Editado"
-#: scene/2d/light_2d.cpp scene/gui/control.cpp
-#: scene/resources/navigation_mesh.cpp
-#, fuzzy
-msgid "Filter"
-msgstr "Filtros:"
-
#: scene/2d/light_2d.cpp
#, fuzzy
msgid "Filter Smooth"
@@ -19865,9 +21114,8 @@ msgstr ""
#: scene/2d/node_2d.cpp scene/2d/polygon_2d.cpp scene/3d/spatial.cpp
#: scene/main/canvas_layer.cpp
-#, fuzzy
msgid "Rotation Degrees"
-msgstr "Rotando %s grados."
+msgstr "Grados de Rotación"
#: scene/2d/node_2d.cpp
#, fuzzy
@@ -19875,9 +21123,8 @@ msgid "Global Rotation"
msgstr "Constante Global"
#: scene/2d/node_2d.cpp
-#, fuzzy
msgid "Global Rotation Degrees"
-msgstr "Rotando %s grados."
+msgstr "Grados de Rotación Global"
#: scene/2d/node_2d.cpp
#, fuzzy
@@ -20132,11 +21379,6 @@ msgid "Applied Forces"
msgstr ""
#: scene/2d/physics_body_2d.cpp
-#, fuzzy
-msgid "Force"
-msgstr "Forzar Push"
-
-#: scene/2d/physics_body_2d.cpp
msgid "Torque"
msgstr ""
@@ -20146,13 +21388,12 @@ msgid "Safe Margin"
msgstr "Asignar Margen"
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-#, fuzzy
msgid "Sync To Physics"
-msgstr " (Física)"
+msgstr "Sincronización Con La Física"
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
#, fuzzy
-msgid "Moving platform"
+msgid "Moving Platform"
msgstr "Moviendo salida"
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
@@ -20161,7 +21402,7 @@ msgstr ""
#: scene/2d/physics_body_2d.cpp scene/2d/touch_screen_button.cpp
#: scene/3d/physics_body.cpp scene/gui/texture_button.cpp
-#: scene/resources/line_shape_2d.cpp
+#: scene/resources/line_shape_2d.cpp scene/resources/material.cpp
#, fuzzy
msgid "Normal"
msgstr "Formato"
@@ -20407,6 +21648,34 @@ msgstr ""
"VisibilityEnabler2D funciona mejor cuando se usa con la raíz de la escena "
"editada directamente como padre."
+#: scene/2d/visibility_notifier_2d.cpp scene/3d/visibility_notifier.cpp
+#, fuzzy
+msgid "Pause Animations"
+msgstr "Pegar Animación"
+
+#: scene/2d/visibility_notifier_2d.cpp scene/3d/visibility_notifier.cpp
+msgid "Freeze Bodies"
+msgstr ""
+
+#: scene/2d/visibility_notifier_2d.cpp
+#, fuzzy
+msgid "Pause Particles"
+msgstr "Partículas"
+
+#: scene/2d/visibility_notifier_2d.cpp
+#, fuzzy
+msgid "Pause Animated Sprites"
+msgstr "Pegar Animación"
+
+#: scene/2d/visibility_notifier_2d.cpp
+#, fuzzy
+msgid "Process Parent"
+msgstr "Activar Prioridad"
+
+#: scene/2d/visibility_notifier_2d.cpp
+msgid "Physics Process Parent"
+msgstr ""
+
#: scene/3d/area.cpp
msgid "Reverb Bus"
msgstr ""
@@ -20493,9 +21762,8 @@ msgid "Emission Angle"
msgstr "Colores de Emisión"
#: scene/3d/audio_stream_player_3d.cpp
-#, fuzzy
msgid "Degrees"
-msgstr "Rotando %s grados."
+msgstr "Grados"
#: scene/3d/audio_stream_player_3d.cpp
#, fuzzy
@@ -20507,6 +21775,7 @@ msgid "Attenuation Filter"
msgstr ""
#: scene/3d/audio_stream_player_3d.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
#: servers/audio/effects/audio_effect_filter.cpp
msgid "Cutoff Hz"
msgstr ""
@@ -20551,11 +21820,6 @@ msgid "Octree"
msgstr "Subárbol"
#: scene/3d/baked_lightmap.cpp
-#, fuzzy
-msgid "User Data"
-msgstr "Interfaz de usuario"
-
-#: scene/3d/baked_lightmap.cpp
msgid "Finding meshes and lights"
msgstr "Encontrando mallas y luces"
@@ -20638,9 +21902,8 @@ msgid "Custom Sky"
msgstr "CustomNode"
#: scene/3d/baked_lightmap.cpp
-#, fuzzy
msgid "Custom Sky Rotation Degrees"
-msgstr "Rotando %s grados."
+msgstr "Grados de Rotación del Cielo Personalizados"
#: scene/3d/baked_lightmap.cpp scene/3d/ray_cast.cpp
#, fuzzy
@@ -20829,6 +22092,16 @@ msgid "Ring Axis"
msgstr "Advertencias"
#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Rotate Y"
+msgstr "Rotar"
+
+#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Disable Z"
+msgstr "Desactivar Elemento"
+
+#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
msgid "Flatness"
msgstr ""
@@ -20869,16 +22142,11 @@ msgstr "Librería Dinámica"
msgid "Dynamic Range"
msgstr "Librería Dinámica"
-#: scene/3d/gi_probe.cpp
+#: scene/3d/gi_probe.cpp scene/3d/light.cpp
msgid "Normal Bias"
msgstr ""
#: scene/3d/gi_probe.cpp
-#, fuzzy
-msgid "Compress"
-msgstr "Componentes"
-
-#: scene/3d/gi_probe.cpp
msgid "Plotting Meshes"
msgstr "Trazando Mallas"
@@ -20910,16 +22178,31 @@ msgstr ""
#: scene/3d/light.cpp
#, fuzzy
+msgid "Indirect Energy"
+msgstr "Colores de Emisión"
+
+#: scene/3d/light.cpp
+#, fuzzy
msgid "Negative"
msgstr "GDNative"
#: scene/3d/light.cpp
#, fuzzy
+msgid "Specular"
+msgstr "Modo de Regla"
+
+#: scene/3d/light.cpp
+#, fuzzy
msgid "Bake Mode"
msgstr "Modo de Bitmask"
#: scene/3d/light.cpp
#, fuzzy
+msgid "Contact"
+msgstr "Seleccionar Color"
+
+#: scene/3d/light.cpp
+#, fuzzy
msgid "Reverse Cull Face"
msgstr "Restablecer Volumen de Bus"
@@ -20930,11 +22213,31 @@ msgstr "Direcciones"
#: scene/3d/light.cpp
#, fuzzy
+msgid "Split 1"
+msgstr "Dividir"
+
+#: scene/3d/light.cpp
+#, fuzzy
+msgid "Split 2"
+msgstr "Dividir"
+
+#: scene/3d/light.cpp
+#, fuzzy
+msgid "Split 3"
+msgstr "Dividir"
+
+#: scene/3d/light.cpp
+#, fuzzy
msgid "Blend Splits"
msgstr "Tiempos de Mezcla:"
#: scene/3d/light.cpp
#, fuzzy
+msgid "Bias Split Scale"
+msgstr "Usar Ajuste de Escalado"
+
+#: scene/3d/light.cpp
+#, fuzzy
msgid "Depth Range"
msgstr "Profundidad"
@@ -20961,14 +22264,18 @@ msgstr ""
msgid "Spot"
msgstr ""
+#: scene/3d/light.cpp
+#, fuzzy
+msgid "Angle Attenuation"
+msgstr "Animación"
+
#: scene/3d/mesh_instance.cpp
msgid "Software Skinning"
msgstr ""
#: scene/3d/mesh_instance.cpp
-#, fuzzy
msgid "Transform Normals"
-msgstr "Transformación Abortada."
+msgstr "Transformar Normales"
#: scene/3d/navigation.cpp scene/resources/curve.cpp
#, fuzzy
@@ -21111,6 +22418,63 @@ msgstr "Eje"
#: scene/3d/physics_body.cpp
#, fuzzy
+msgid "Linear X"
+msgstr "Lineal"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Linear Y"
+msgstr "Lineal"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Linear Z"
+msgstr "Lineal"
+
+#: scene/3d/physics_body.cpp
+msgid "Angular X"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Angular Y"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Angular Z"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Motion X"
+msgstr "Acción"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Motion Y"
+msgstr "Acción"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Motion Z"
+msgstr "Acción"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Move Lock X"
+msgstr "Mover Nodo"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Move Lock Y"
+msgstr "Mover Nodo"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Move Lock Z"
+msgstr "Mover Nodo"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
msgid "Body Offset"
msgstr "Offset:"
@@ -21144,6 +22508,15 @@ msgid "Exclude Nodes"
msgstr "Eliminar Nodos"
#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Params"
+msgstr "Parámetro Modificado:"
+
+#: scene/3d/physics_joint.cpp
+msgid "Impulse Clamp"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit"
msgstr ""
@@ -21157,6 +22530,55 @@ msgstr "Mayúsculas"
msgid "Lower"
msgstr "Minúsculas"
+#: scene/3d/physics_joint.cpp scene/3d/vehicle_body.cpp
+#, fuzzy
+msgid "Relaxation"
+msgstr "Separación:"
+
+#: scene/3d/physics_joint.cpp
+msgid "Motor"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Target Velocity"
+msgstr "Vista de Órbita Derecha"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Max Impulse"
+msgstr "Velocidad:"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit"
+msgstr "Lineal"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Upper Distance"
+msgstr "Seleccionar Distancia:"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Lower Distance"
+msgstr "Seleccionar Distancia:"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Restitution"
+msgstr "Descripción"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motion"
+msgstr "Inicializar"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Ortho"
+msgstr "Ortogonal Trasera"
+
#: scene/3d/physics_joint.cpp
#, fuzzy
msgid "Upper Angle"
@@ -21169,6 +22591,16 @@ msgstr "Minúsculas"
#: scene/3d/physics_joint.cpp
#, fuzzy
+msgid "Angular Motion"
+msgstr "Animación"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Angular Ortho"
+msgstr "Error Angular Máximo:"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
msgid "Swing Span"
msgstr "Guardar Escena"
@@ -21177,17 +22609,99 @@ msgid "Twist Span"
msgstr ""
#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit X"
+msgstr "Lineal"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motor X"
+msgstr "Inicializar"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Force Limit"
+msgstr "Llamadas de Dibujado:"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Spring X"
+msgstr "Lineal"
+
+#: scene/3d/physics_joint.cpp
+msgid "Equilibrium Point"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit X"
msgstr ""
#: scene/3d/physics_joint.cpp
+msgid "Erp"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Motor X"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Spring X"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit Y"
+msgstr "Lineal"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motor Y"
+msgstr "Inicializar"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Spring Y"
+msgstr "Lineal"
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit Y"
msgstr ""
#: scene/3d/physics_joint.cpp
+msgid "Angular Motor Y"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Spring Y"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit Z"
+msgstr "Lineal"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motor Z"
+msgstr "Inicializar"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Spring Z"
+msgstr "Lineal"
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit Z"
msgstr ""
+#: scene/3d/physics_joint.cpp
+msgid "Angular Motor Z"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Spring Z"
+msgstr ""
+
#: scene/3d/portal.cpp
msgid "The RoomManager should not be a child or grandchild of a Portal."
msgstr "El RoomManager no debe ser hijo o nieto de un Portal."
@@ -21201,9 +22715,8 @@ msgid "A RoomGroup should not be a child or grandchild of a Portal."
msgstr "Un RoomGroup no debe ser hijo o nieto de un Portal."
#: scene/3d/portal.cpp
-#, fuzzy
msgid "Portal Active"
-msgstr " [portales activos]"
+msgstr "Portal Activo"
#: scene/3d/portal.cpp scene/resources/occluder_shape_polygon.cpp
msgid "Two Way"
@@ -21310,7 +22823,7 @@ msgstr ""
msgid "Use Default Simplify"
msgstr ""
-#: scene/3d/room.cpp
+#: scene/3d/room.cpp scene/3d/room_manager.cpp
msgid "Room Simplify"
msgstr ""
@@ -21351,6 +22864,13 @@ msgstr "Sólo debe haber un RoomManager en el SceneTree."
msgid "Main"
msgstr ""
+#: scene/3d/room_manager.cpp scene/animation/animation_player.cpp
+#: scene/animation/animation_tree.cpp scene/animation/animation_tree_player.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+#, fuzzy
+msgid "Active"
+msgstr "Acción"
+
#: scene/3d/room_manager.cpp
msgid "Roomlist"
msgstr ""
@@ -21375,6 +22895,54 @@ msgid "Gameplay"
msgstr ""
#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Gameplay Monitor"
+msgstr "Monitor"
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Use Secondary PVS"
+msgstr "Usar Ajuste de Escalado"
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Merge Meshes"
+msgstr "Malla"
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Show Margins"
+msgstr "Mostrar Origen"
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Debug Sprawl"
+msgstr "Depurar"
+
+#: scene/3d/room_manager.cpp
+msgid "Overlap Warning Threshold"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Preview Camera"
+msgstr "Vista Previa"
+
+#: scene/3d/room_manager.cpp
+msgid "Portal Depth Limit"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Default Portal Margin"
+msgstr "Asignar Margen"
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Roaming Expansion Margin"
+msgstr "Expandir Todo"
+
+#: scene/3d/room_manager.cpp
msgid ""
"RoomList path is invalid.\n"
"Please check the RoomList branch has been assigned in the RoomManager."
@@ -21435,9 +23003,8 @@ msgid "Parent Collision Ignore"
msgstr "Crear Polígono de Colisión"
#: scene/3d/soft_body.cpp
-#, fuzzy
msgid "Simulation Precision"
-msgstr "El árbol de animación no es correcto."
+msgstr "Simulación de Precisión"
#: scene/3d/soft_body.cpp
#, fuzzy
@@ -21517,6 +23084,20 @@ msgstr "Ajuste de Píxeles"
msgid "Billboard"
msgstr ""
+#: scene/3d/sprite_3d.cpp scene/resources/material.cpp
+#, fuzzy
+msgid "Transparent"
+msgstr "Transponer"
+
+#: scene/3d/sprite_3d.cpp
+#, fuzzy
+msgid "Shaded"
+msgstr "Shader"
+
+#: scene/3d/sprite_3d.cpp
+msgid "Double Sided"
+msgstr ""
+
#: scene/3d/sprite_3d.cpp
msgid "Alpha Cut"
msgstr ""
@@ -21569,9 +23150,8 @@ msgid "Use As Steering"
msgstr ""
#: scene/3d/vehicle_body.cpp
-#, fuzzy
msgid "Wheel"
-msgstr "Rueda Hacia Arriba."
+msgstr "Rueda"
#: scene/3d/vehicle_body.cpp
msgid "Roll Influence"
@@ -21592,11 +23172,6 @@ msgstr "Expresión"
msgid "Max Force"
msgstr "Error"
-#: scene/3d/vehicle_body.cpp
-#, fuzzy
-msgid "Relaxation"
-msgstr "Separación:"
-
#: scene/3d/visibility_notifier.cpp
msgid "AABB"
msgstr ""
@@ -21741,7 +23316,7 @@ msgstr "Tiempo de Crossfade (s):"
#: scene/animation/animation_blend_tree.cpp
#, fuzzy
-msgid "autorestart_"
+msgid "Auto Restart"
msgstr "Reinicio automático:"
#: scene/animation/animation_blend_tree.cpp
@@ -21827,13 +23402,6 @@ msgstr "Opciones de Clase:"
msgid "Default Blend Time"
msgstr "Theme Predeterminado"
-#: scene/animation/animation_player.cpp scene/animation/animation_tree.cpp
-#: scene/animation/animation_tree_player.cpp
-#: servers/audio/effects/audio_effect_delay.cpp
-#, fuzzy
-msgid "Active"
-msgstr "Acción"
-
#: scene/animation/animation_player.cpp
msgid "Method Call Mode"
msgstr ""
@@ -21959,10 +23527,6 @@ msgstr "Reemparentar nodo"
msgid "Max Iterations"
msgstr "Crear Función"
-#: scene/animation/tween.cpp scene/resources/texture.cpp
-msgid "Repeat"
-msgstr ""
-
#: scene/animation/tween.cpp
msgid "Playback Process Mode"
msgstr ""
@@ -21993,20 +23557,6 @@ msgstr "Modo de Selección"
msgid "Alignment"
msgstr ""
-#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
-#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
-#: scene/resources/style_box.cpp
-#, fuzzy
-msgid "Horizontal"
-msgstr "Horizontal:"
-
-#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
-#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
-#: scene/resources/style_box.cpp
-#, fuzzy
-msgid "Vertical"
-msgstr "Vertical:"
-
#: scene/gui/base_button.cpp
#, fuzzy
msgid "Shortcut In Tooltip"
@@ -22108,10 +23658,6 @@ msgid "HSV"
msgstr "HSV"
#: scene/gui/color_picker.cpp
-msgid "Raw"
-msgstr "Raw"
-
-#: scene/gui/color_picker.cpp
msgid "Switch between hexadecimal and code values."
msgstr "Cambiar entre valores hexadecimales y de código."
@@ -22179,22 +23725,45 @@ msgid "Focus"
msgstr "Foco en Ruta"
#: scene/gui/control.cpp
-msgid "Mouse"
+msgid "Neighbour Left"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Neighbour Top"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Neighbour Right"
msgstr ""
#: scene/gui/control.cpp
#, fuzzy
+msgid "Neighbour Bottom"
+msgstr "Centro Inferior"
+
+#: scene/gui/control.cpp
+msgid "Next"
+msgstr "Siguiente"
+
+#: scene/gui/control.cpp
+msgid "Previous"
+msgstr "Anterior"
+
+#: scene/gui/control.cpp
+msgid "Mouse"
+msgstr ""
+
+#: scene/gui/control.cpp
msgid "Default Cursor Shape"
-msgstr "Cargar el Bus Layout predeterminado."
+msgstr "Forma del Cursor por Defecto"
#: scene/gui/control.cpp
msgid "Pass On Modal Close Click"
msgstr ""
#: scene/gui/control.cpp
-#, fuzzy
msgid "Size Flags"
-msgstr "Tamaño: "
+msgstr "Tamaño de los Indicadores"
#: scene/gui/control.cpp
#, fuzzy
@@ -22216,7 +23785,7 @@ msgid "Dialog"
msgstr "Diálogo XForm"
#: scene/gui/dialogs.cpp
-msgid "Hide On Ok"
+msgid "Hide On OK"
msgstr ""
#: scene/gui/dialogs.cpp scene/gui/label.cpp
@@ -22315,7 +23884,7 @@ msgid "Timers"
msgstr "Tiempo"
#: scene/gui/item_list.cpp scene/gui/popup_menu.cpp scene/gui/tree.cpp
-msgid "Incremental Search Max Interval (msec)"
+msgid "Incremental Search Max Interval Msec"
msgstr ""
#: scene/gui/item_list.cpp scene/gui/tree.cpp
@@ -22564,9 +24133,8 @@ msgid "Max Value"
msgstr "Valor"
#: scene/gui/range.cpp
-#, fuzzy
msgid "Page"
-msgstr "Página: "
+msgstr "Página"
#: scene/gui/range.cpp
#, fuzzy
@@ -22754,9 +24322,8 @@ msgid "All Tabs In Front"
msgstr ""
#: scene/gui/tab_container.cpp scene/gui/tabs.cpp
-#, fuzzy
msgid "Drag To Rearrange Enabled"
-msgstr "Arrastrar y soltar para reordenar."
+msgstr "Arrastrar Para Reordenar Habilitado"
#: scene/gui/tab_container.cpp
msgid "Use Hidden Tabs For Min Size"
@@ -22888,9 +24455,8 @@ msgid "Initial Angle"
msgstr "Inicializar"
#: scene/gui/texture_progress.cpp
-#, fuzzy
msgid "Fill Degrees"
-msgstr "Rotando %s grados."
+msgstr "Completar Grados"
#: scene/gui/texture_progress.cpp scene/resources/primitive_meshes.cpp
#, fuzzy
@@ -22902,6 +24468,26 @@ msgstr "Centro Izquierda"
msgid "Nine Patch Stretch"
msgstr "Modo de Interpolación"
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Left"
+msgstr "Asignar Margen"
+
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Top"
+msgstr "Asignar Margen"
+
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Right"
+msgstr "Asignar Margen"
+
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Bottom"
+msgstr "Modo de Selección"
+
#: scene/gui/tree.cpp
msgid "Custom Minimum Height"
msgstr ""
@@ -22939,8 +24525,9 @@ msgid "Paused"
msgstr ""
#: scene/gui/video_player.cpp
-msgid "Buffering (msec)"
-msgstr ""
+#, fuzzy
+msgid "Buffering Msec"
+msgstr "Vista Trasera"
#: scene/gui/video_player.cpp
#, fuzzy
@@ -22976,9 +24563,8 @@ msgid "Max Redirects"
msgstr ""
#: scene/main/http_request.cpp
-#, fuzzy
msgid "Timeout"
-msgstr "Tiempo de espera."
+msgstr "Tiempo de Espera"
#: scene/main/node.cpp
#, fuzzy
@@ -23303,6 +24889,22 @@ msgid "Shadow Atlas"
msgstr "Nuevo Atlas"
#: scene/main/viewport.cpp
+msgid "Quad 0"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 1"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 2"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 3"
+msgstr ""
+
+#: scene/main/viewport.cpp
#, fuzzy
msgid "Canvas Transform"
msgstr "Reestablecer Transformación"
@@ -23317,6 +24919,11 @@ msgid "Tooltip Delay (sec)"
msgstr ""
#: scene/register_scene_types.cpp
+#, fuzzy
+msgid "Swap OK Cancel"
+msgstr "Cancelar UI"
+
+#: scene/register_scene_types.cpp
msgid "Use hiDPI"
msgstr ""
@@ -23331,21 +24938,6 @@ msgid "Custom Font"
msgstr "CustomNode"
#: scene/resources/audio_stream_sample.cpp
-#, fuzzy
-msgid "Loop Mode"
-msgstr "Modo de Movimiento"
-
-#: scene/resources/audio_stream_sample.cpp
-#, fuzzy
-msgid "Loop Begin"
-msgstr "Modo de Movimiento"
-
-#: scene/resources/audio_stream_sample.cpp
-#, fuzzy
-msgid "Loop End"
-msgstr "Modo de Movimiento"
-
-#: scene/resources/audio_stream_sample.cpp
#: servers/audio/effects/audio_stream_generator.cpp servers/audio_server.cpp
#, fuzzy
msgid "Mix Rate"
@@ -23405,6 +24997,17 @@ msgstr "Opciones adicionales:"
#: scene/resources/dynamic_font.cpp
#, fuzzy
+msgid "Char"
+msgstr "Caracteres válidos:"
+
+#: scene/resources/dynamic_font.cpp scene/resources/world.cpp
+#: scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Space"
+msgstr "Escena Principal"
+
+#: scene/resources/dynamic_font.cpp
+#, fuzzy
msgid "Font"
msgstr "Fuentes"
@@ -23437,9 +25040,8 @@ msgid "Sky Rotation"
msgstr "Step de Rotación:"
#: scene/resources/environment.cpp
-#, fuzzy
msgid "Sky Rotation Degrees"
-msgstr "Rotando %s grados."
+msgstr "Grados de Rotación del Cielo"
#: scene/resources/environment.cpp
msgid "Canvas Max Layer"
@@ -23619,9 +25221,8 @@ msgid "Distance"
msgstr "Seleccionar Distancia:"
#: scene/resources/environment.cpp
-#, fuzzy
msgid "Transition"
-msgstr "Transición: "
+msgstr "Transición"
#: scene/resources/environment.cpp
msgid "DOF Near Blur"
@@ -23632,6 +25233,44 @@ msgid "Glow"
msgstr ""
#: scene/resources/environment.cpp
+#, fuzzy
+msgid "Levels"
+msgstr "Desarrolladores"
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "1"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "2"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+#, fuzzy
+msgid "3"
+msgstr "3D"
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "4"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "5"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "6"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "7"
+msgstr ""
+
+#: scene/resources/environment.cpp
msgid "Bloom"
msgstr ""
@@ -23667,9 +25306,8 @@ msgid "Saturation"
msgstr "Separación:"
#: scene/resources/environment.cpp
-#, fuzzy
msgid "Color Correction"
-msgstr "Función Color."
+msgstr "Corrección del Color"
#: scene/resources/font.cpp
msgid "Chars"
@@ -23724,10 +25362,68 @@ msgid "Next Pass"
msgstr "Siguiente Plano"
#: scene/resources/material.cpp
+msgid "Use Shadow To Opacity"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Unshaded"
+msgstr "Mostrar Sin Sombreado"
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Vertex Lighting"
+msgstr "Iluminación directa"
+
+#: scene/resources/material.cpp
+msgid "No Depth Test"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Use Point Size"
+msgstr "Vista Frontal"
+
+#: scene/resources/material.cpp
+msgid "World Triplanar"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Fixed Size"
+msgstr "Vista Frontal"
+
+#: scene/resources/material.cpp
+msgid "Albedo Tex Force sRGB"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Do Not Receive Shadows"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Disable Ambient Light"
+msgstr "Indentar a la Derecha"
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Ensure Correct Normals"
+msgstr "Transformar Normales"
+
+#: scene/resources/material.cpp
#, fuzzy
msgid "Vertex Color"
msgstr "Vértice"
+#: scene/resources/material.cpp
+msgid "Use As Albedo"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Is sRGB"
+msgstr ""
+
#: scene/resources/material.cpp servers/visual_server.cpp
#, fuzzy
msgid "Parameters"
@@ -23764,6 +25460,11 @@ msgid "Billboard Mode"
msgstr "Modo de Regla"
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Billboard Keep Scale"
+msgstr "Modo de Regla"
+
+#: scene/resources/material.cpp
msgid "Grow"
msgstr ""
@@ -23773,6 +25474,10 @@ msgid "Grow Amount"
msgstr "Cantidad:"
#: scene/resources/material.cpp
+msgid "Use Alpha Scissor"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Alpha Scissor Threshold"
msgstr ""
@@ -23804,10 +25509,20 @@ msgid "Metallic Specular"
msgstr ""
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Metallic Texture"
+msgstr "Textura Normal"
+
+#: scene/resources/material.cpp
msgid "Metallic Texture Channel"
msgstr ""
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Roughness Texture"
+msgstr "Eliminar Textura"
+
+#: scene/resources/material.cpp
msgid "Roughness Texture Channel"
msgstr ""
@@ -23827,6 +25542,16 @@ msgid "Emission Operator"
msgstr "Colores de Emisión"
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Emission On UV2"
+msgstr "Máscara de Emisión"
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Emission Texture"
+msgstr "Fuente de Emisión: "
+
+#: scene/resources/material.cpp
msgid "NormalMap"
msgstr ""
@@ -23841,6 +25566,11 @@ msgstr "Inclinación al azar:"
#: scene/resources/material.cpp
#, fuzzy
+msgid "Rim Texture"
+msgstr "Eliminar Textura"
+
+#: scene/resources/material.cpp
+#, fuzzy
msgid "Clearcoat"
msgstr "Limpiar"
@@ -23850,15 +25580,28 @@ msgid "Clearcoat Gloss"
msgstr "Limpiar Pose"
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Clearcoat Texture"
+msgstr "Editor de Themes"
+
+#: scene/resources/material.cpp
msgid "Anisotropy"
msgstr ""
#: scene/resources/material.cpp
+msgid "Anisotropy Flowmap"
+msgstr ""
+
+#: scene/resources/material.cpp
#, fuzzy
msgid "Ambient Occlusion"
msgstr "Oclusión"
#: scene/resources/material.cpp
+msgid "On UV2"
+msgstr ""
+
+#: scene/resources/material.cpp
#, fuzzy
msgid "Texture Channel"
msgstr "Región de Textura"
@@ -23891,9 +25634,13 @@ msgid "Subsurf Scatter"
msgstr ""
#: scene/resources/material.cpp
-#, fuzzy
msgid "Transmission"
-msgstr "Transición: "
+msgstr "Transmisión"
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Transmission Texture"
+msgstr "Transmisión"
#: scene/resources/material.cpp
#, fuzzy
@@ -23915,6 +25662,10 @@ msgid "UV1"
msgstr "UV"
#: scene/resources/material.cpp
+msgid "Triplanar"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Triplanar Sharpness"
msgstr ""
@@ -23952,14 +25703,12 @@ msgid "Custom AABB"
msgstr ""
#: scene/resources/multimesh.cpp
-#, fuzzy
msgid "Color Format"
-msgstr "Operador Color."
+msgstr "Formato de Color"
#: scene/resources/multimesh.cpp
-#, fuzzy
msgid "Transform Format"
-msgstr "Transformación Abortada."
+msgstr "Formato de Transformación"
#: scene/resources/multimesh.cpp
msgid "Custom Data Format"
@@ -23975,9 +25724,8 @@ msgid "Visible Instance Count"
msgstr ""
#: scene/resources/multimesh.cpp
-#, fuzzy
msgid "Transform Array"
-msgstr "Transformación Abortada."
+msgstr "Array de Transformación"
#: scene/resources/multimesh.cpp
#, fuzzy
@@ -24000,9 +25748,8 @@ msgid "Sample Partition Type"
msgstr "Establecer tipo de base de variación"
#: scene/resources/navigation_mesh.cpp
-#, fuzzy
msgid "Parsed Geometry Type"
-msgstr "Analizando geometría..."
+msgstr "Tipo de Geometría Parseada"
#: scene/resources/navigation_mesh.cpp
msgid "Source Geometry Mode"
@@ -24112,9 +25859,8 @@ msgid "Point Texture"
msgstr "Puntos de Emisión:"
#: scene/resources/particles_material.cpp
-#, fuzzy
msgid "Normal Texture"
-msgstr "Fuente de Emisión: "
+msgstr "Textura Normal"
#: scene/resources/particles_material.cpp
#, fuzzy
@@ -24126,6 +25872,16 @@ msgstr "Editor de Themes"
msgid "Point Count"
msgstr "Añadir Puerto de Entrada"
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Scale Random"
+msgstr "Relación de Escala:"
+
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Scale Curve"
+msgstr "Cerrar Curva"
+
#: scene/resources/physics_material.cpp
msgid "Rough"
msgstr ""
@@ -24188,10 +25944,6 @@ msgid "A"
msgstr ""
#: scene/resources/shader.cpp
-msgid "Code"
-msgstr ""
-
-#: scene/resources/shader.cpp
#, fuzzy
msgid "Custom Defines"
msgstr "Reproducir Escena Personalizada"
@@ -24288,15 +26040,6 @@ msgstr ""
#: scene/resources/texture.cpp
#, fuzzy
-msgid "Storage"
-msgstr "Archivo de Almacenamiento:"
-
-#: scene/resources/texture.cpp
-msgid "Lossy Quality"
-msgstr ""
-
-#: scene/resources/texture.cpp
-#, fuzzy
msgid "Load Path"
msgstr "Cargar Ajuste Predeterminado"
@@ -24306,9 +26049,8 @@ msgid "Base Texture"
msgstr "Eliminar Textura"
#: scene/resources/texture.cpp
-#, fuzzy
msgid "Image Size"
-msgstr "Página: "
+msgstr "Tamaño de la Imagen"
#: scene/resources/texture.cpp
#, fuzzy
@@ -24427,11 +26169,6 @@ msgstr "Función de comparación inválida para este tipo."
msgid "Fallback Environment"
msgstr "Ver Entorno"
-#: scene/resources/world.cpp scene/resources/world_2d.cpp
-#, fuzzy
-msgid "Space"
-msgstr "Escena Principal"
-
#: scene/resources/world.cpp
#, fuzzy
msgid "Scenario"
@@ -24512,10 +26249,37 @@ msgstr ""
msgid "Wet"
msgstr ""
-#: servers/audio/effects/audio_effect_compressor.cpp
-msgid "Threshold"
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "Voice"
msgstr ""
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+msgid "Delay (ms)"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_phaser.cpp
+msgid "Rate Hz"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#, fuzzy
+msgid "Depth (ms)"
+msgstr "Profundidad"
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+msgid "Level dB"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+#: servers/audio/effects/audio_effect_panner.cpp
+#, fuzzy
+msgid "Pan"
+msgstr "Plano:"
+
#: servers/audio/effects/audio_effect_compressor.cpp
#: servers/audio/effects/audio_effect_filter.cpp
msgid "Gain"
@@ -24539,20 +26303,6 @@ msgid "Tap 1"
msgstr ""
#: servers/audio/effects/audio_effect_delay.cpp
-msgid "Delay (ms)"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_delay.cpp
-msgid "Level dB"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_delay.cpp
-#: servers/audio/effects/audio_effect_panner.cpp
-#, fuzzy
-msgid "Pan"
-msgstr "Plano:"
-
-#: servers/audio/effects/audio_effect_delay.cpp
msgid "Tap 2"
msgstr ""
@@ -24614,10 +26364,6 @@ msgstr ""
msgid "Range Max Hz"
msgstr ""
-#: servers/audio/effects/audio_effect_phaser.cpp
-msgid "Rate Hz"
-msgstr ""
-
#: servers/audio/effects/audio_effect_pitch_shift.cpp
msgid "Oversampling"
msgstr ""
@@ -24633,7 +26379,7 @@ msgid "Predelay"
msgstr ""
#: servers/audio/effects/audio_effect_reverb.cpp
-msgid "(msec)"
+msgid "Msec"
msgstr ""
#: servers/audio/effects/audio_effect_reverb.cpp
@@ -24654,9 +26400,8 @@ msgid "Pan Pullout"
msgstr ""
#: servers/audio/effects/audio_effect_stereo_enhance.cpp
-#, fuzzy
msgid "Time Pullout (ms)"
-msgstr "Tiempo de espera."
+msgstr "Tiempo de Extracción (ms)"
#: servers/audio/effects/audio_effect_stereo_enhance.cpp
msgid "Surround"
@@ -24846,9 +26591,8 @@ msgid "Constants cannot be modified."
msgstr "Las constantes no pueden modificarse."
#: servers/visual/visual_server_scene.cpp
-#, fuzzy
msgid "Spatial Partitioning"
-msgstr "Particionando..."
+msgstr "Partición de Espacios"
#: servers/visual_server.cpp
#, fuzzy
@@ -25036,9 +26780,8 @@ msgid "Legacy Stream"
msgstr ""
#: servers/visual_server.cpp
-#, fuzzy
msgid "Batching"
-msgstr "Buscando..."
+msgstr "Puesta en marcha"
#: servers/visual_server.cpp
msgid "Use Batching"
@@ -25066,9 +26809,8 @@ msgid "Scissor Area Threshold"
msgstr ""
#: servers/visual_server.cpp
-#, fuzzy
msgid "Max Join Items"
-msgstr "Administrar Elementos..."
+msgstr "Elementos de Unión Máximos"
#: servers/visual_server.cpp
msgid "Batch Buffer Size"
diff --git a/editor/translations/es_AR.po b/editor/translations/es_AR.po
index 01286d65fc..8c2f755e49 100644
--- a/editor/translations/es_AR.po
+++ b/editor/translations/es_AR.po
@@ -35,7 +35,7 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 4.11.1-dev\n"
-#: core/bind/core_bind.cpp
+#: core/bind/core_bind.cpp main/main.cpp
msgid "Tablet Driver"
msgstr ""
@@ -139,8 +139,8 @@ msgstr "Posición del Panel"
#: core/bind/core_bind.cpp editor/editor_settings.cpp main/main.cpp
#: modules/gdscript/gdscript_editor.cpp modules/gridmap/grid_map.cpp
#: modules/mono/csharp_script.cpp modules/visual_script/visual_script_nodes.cpp
-#: scene/2d/tile_map.cpp scene/3d/camera.cpp scene/gui/control.cpp
-#: scene/gui/graph_edit.cpp scene/main/viewport.cpp
+#: scene/2d/tile_map.cpp scene/3d/camera.cpp scene/3d/light.cpp
+#: scene/gui/control.cpp scene/gui/graph_edit.cpp scene/main/viewport.cpp
#: scene/resources/dynamic_font.cpp scene/resources/navigation_mesh.cpp
#: scene/resources/primitive_meshes.cpp scene/resources/sky.cpp
#: scene/resources/style_box.cpp scene/resources/texture.cpp
@@ -244,8 +244,7 @@ msgid "Data"
msgstr "Con Data"
#: core/io/file_access_network.cpp core/register_core_types.cpp
-#: editor/editor_settings.cpp editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp main/main.cpp
+#: editor/editor_settings.cpp main/main.cpp
#: modules/gdscript/language_server/gdscript_language_server.cpp
#, fuzzy
msgid "Network"
@@ -531,9 +530,10 @@ msgstr "Preset"
msgid "Relative"
msgstr "Ajuste Relativo"
-#: core/os/input_event.cpp scene/2d/camera_2d.cpp
-#: scene/3d/interpolated_camera.cpp scene/animation/animation_player.cpp
-#: scene/resources/environment.cpp
+#: core/os/input_event.cpp scene/2d/camera_2d.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/interpolated_camera.cpp
+#: scene/animation/animation_player.cpp scene/resources/environment.cpp
+#: scene/resources/particles_material.cpp
#, fuzzy
msgid "Speed"
msgstr "Velocidad:"
@@ -583,8 +583,9 @@ msgstr "Mensaje de Commit"
msgid "Pitch"
msgstr "Cabeceo:"
-#: core/os/input_event.cpp scene/2d/physics_body_2d.cpp
-#: scene/3d/physics_body.cpp
+#: core/os/input_event.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/physics_body_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/3d/physics_body.cpp scene/resources/particles_material.cpp
#, fuzzy
msgid "Velocity"
msgstr "Orbitar Vista Hacia La Derecha"
@@ -603,6 +604,8 @@ msgid "Controller Value"
msgstr ""
#: core/project_settings.cpp editor/editor_node.cpp main/main.cpp
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/windows/export/export.cpp
#, fuzzy
msgid "Application"
msgstr "Acción"
@@ -621,13 +624,16 @@ msgstr "Ajustes del Proyecto..."
#: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp
#: editor/editor_plugin_settings.cpp editor/editor_profiler.cpp
#: editor/project_manager.cpp editor/settings_config_dialog.cpp
-#: modules/gdnative/nativescript/nativescript.cpp scene/2d/area_2d.cpp
-#: scene/3d/area.cpp scene/main/node.cpp
+#: modules/gdnative/nativescript/nativescript.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/osx/export/export.cpp scene/2d/area_2d.cpp scene/3d/area.cpp
+#: scene/main/node.cpp
msgid "Name"
msgstr "Nombre"
#: core/project_settings.cpp editor/editor_help.cpp
-#: modules/visual_script/visual_script_nodes.cpp
+#: modules/visual_script/visual_script_nodes.cpp platform/uwp/export/export.cpp
+#: platform/windows/export/export.cpp
msgid "Description"
msgstr "Descripción"
@@ -665,7 +671,7 @@ msgid "Custom User Dir Name"
msgstr ""
#: core/project_settings.cpp editor/animation_track_editor.cpp
-#: editor/editor_audio_buses.cpp servers/audio_server.cpp
+#: editor/editor_audio_buses.cpp main/main.cpp servers/audio_server.cpp
msgid "Audio"
msgstr "Audio"
@@ -833,10 +839,13 @@ msgstr "Filtros:"
msgid "Sharpen Intensity"
msgstr ""
-#: core/project_settings.cpp editor/editor_node.cpp editor/editor_settings.cpp
-#: editor/plugins/script_editor_plugin.cpp editor/project_export.cpp
-#: main/main.cpp modules/gdscript/gdscript.cpp
-#: modules/visual_script/visual_script.cpp scene/3d/room_manager.cpp
+#: core/project_settings.cpp editor/editor_export.cpp editor/editor_node.cpp
+#: editor/editor_settings.cpp editor/plugins/script_editor_plugin.cpp
+#: editor/project_export.cpp main/main.cpp modules/gdscript/gdscript.cpp
+#: modules/visual_script/visual_script.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp scene/3d/room_manager.cpp
#: scene/main/scene_tree.cpp scene/resources/shape_2d.cpp
#: servers/visual_server.cpp
msgid "Debug"
@@ -1072,6 +1081,7 @@ msgid "Subsurface Scattering"
msgstr ""
#: drivers/gles3/rasterizer_scene_gles3.cpp
+#: editor/import/resource_importer_texture.cpp
#: editor/plugins/spatial_editor_plugin.cpp modules/gltf/gltf_node.cpp
#: modules/gridmap/grid_map.cpp scene/2d/cpu_particles_2d.cpp
#: scene/2d/node_2d.cpp scene/2d/parallax_layer.cpp scene/2d/polygon_2d.cpp
@@ -1369,6 +1379,7 @@ msgid "Editors"
msgstr "Editor"
#: editor/animation_track_editor.cpp editor/editor_settings.cpp
+#: editor/import/resource_importer_scene.cpp
#: editor/plugins/animation_player_editor_plugin.cpp editor/scene_tree_dock.cpp
#: scene/2d/animated_sprite.cpp scene/2d/cpu_particles_2d.cpp
#: scene/2d/sprite.cpp scene/3d/cpu_particles.cpp scene/3d/sprite_3d.cpp
@@ -1603,14 +1614,14 @@ msgstr "Valor de paso de animación."
msgid "Seconds"
msgstr "Segundos"
-#: editor/animation_track_editor.cpp
+#: editor/animation_track_editor.cpp editor/import/resource_importer_scene.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp main/main.cpp
#: scene/resources/texture.cpp
msgid "FPS"
msgstr "FPS"
#: editor/animation_track_editor.cpp editor/editor_plugin_settings.cpp
-#: editor/editor_resource_picker.cpp
+#: editor/editor_resource_picker.cpp editor/import/resource_importer_wav.cpp
#: editor/plugins/polygon_2d_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
@@ -2579,7 +2590,9 @@ msgid "Remove Autoload"
msgstr "Quitar Autoload"
#: editor/editor_autoload_settings.cpp editor/editor_plugin_settings.cpp
-#: modules/gdscript/gdscript.cpp scene/2d/polygon_2d.cpp scene/3d/area.cpp
+#: modules/gdscript/gdscript.cpp platform/android/export/export_plugin.cpp
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#: scene/2d/polygon_2d.cpp scene/3d/area.cpp scene/3d/physics_joint.cpp
#: scene/3d/reflection_probe.cpp scene/main/canvas_layer.cpp
#: scene/resources/material.cpp servers/visual_server.cpp
msgid "Enable"
@@ -2749,6 +2762,59 @@ msgstr ""
#: editor/editor_export.cpp platform/android/export/export_plugin.cpp
#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Custom Template"
+msgstr "Editar Tema"
+
+#: editor/editor_export.cpp editor/project_export.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp
+msgid "Release"
+msgstr "Release"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Binary Format"
+msgstr "Operador Color."
+
+#: editor/editor_export.cpp
+msgid "64 Bits"
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Embed PCK"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Texture Format"
+msgstr "Región de Textura"
+
+#: editor/editor_export.cpp
+msgid "BPTC"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "S3TC"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "ETC"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "ETC2"
+msgstr ""
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "No BPTC Fallbacks"
+msgstr "Forzar Shader Fallbacks"
+
+#: editor/editor_export.cpp platform/android/export/export_plugin.cpp
+#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
msgid "Custom debug template not found."
msgstr "Plantilla debug personalizada no encontrada."
@@ -2932,6 +2998,7 @@ msgid "Make Current"
msgstr "Hacer Actual"
#: editor/editor_feature_profile.cpp editor/editor_node.cpp
+#: editor/import/resource_importer_scene.cpp
#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
msgid "Import"
msgstr "Importar"
@@ -3060,8 +3127,11 @@ msgstr "¡Éxito!"
msgid "Display Mode"
msgstr "Modo de Reproducción:"
-#: editor/editor_file_dialog.cpp main/main.cpp modules/csg/csg_shape.cpp
-#: modules/visual_script/visual_script_nodes.cpp
+#: editor/editor_file_dialog.cpp
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+#: editor/import/resource_importer_wav.cpp main/main.cpp
+#: modules/csg/csg_shape.cpp modules/visual_script/visual_script_nodes.cpp
#: modules/visual_script/visual_script_yield_nodes.cpp scene/2d/light_2d.cpp
#: scene/2d/physics_body_2d.cpp scene/2d/tile_map.cpp
#: scene/3d/baked_lightmap.cpp scene/3d/light.cpp scene/3d/physics_body.cpp
@@ -3200,7 +3270,9 @@ msgstr "(Re)Importando Assets"
msgid "Reimport Missing Imported Files"
msgstr ""
-#: editor/editor_help.cpp
+#: editor/editor_help.cpp scene/2d/camera_2d.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/resources/dynamic_font.cpp
+#: scene/resources/style_box.cpp
msgid "Top"
msgstr "Cima"
@@ -3252,6 +3324,7 @@ msgid "Fonts"
msgstr "Fuentes"
#: editor/editor_help.cpp editor/plugins/theme_editor_plugin.cpp
+#: platform/iphone/export/export.cpp
msgid "Icons"
msgstr "Iconos"
@@ -3421,7 +3494,9 @@ msgstr ""
msgid "Pin value [Disabled because '%s' is editor-only]"
msgstr "Fijar Valor [Desactivado porque '%s' es solo para el editor]"
-#: editor/editor_inspector.cpp editor/scene_tree_dock.cpp
+#: editor/editor_inspector.cpp
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+#: editor/scene_tree_dock.cpp
#: modules/visual_script/visual_script_func_nodes.cpp
#: modules/visual_script/visual_script_nodes.cpp
#: modules/visual_script/visual_script_property_selector.cpp
@@ -3765,6 +3840,16 @@ msgid "Quick Open Script..."
msgstr "Apertura Rápida de Script..."
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Save & Reload"
+msgstr "Guardar y Reiniciar"
+
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Save changes to '%s' before reloading?"
+msgstr "Guardar cambios a '%s' antes de cerrar?"
+
+#: editor/editor_node.cpp
msgid "Save & Close"
msgstr "Guardar y Cerrar"
@@ -3883,6 +3968,11 @@ msgid "Open Project Manager?"
msgstr "Abrir Gestor de Proyectos?"
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Save changes to the following scene(s) before reloading?"
+msgstr "Guardar cambios a la(s) siguiente(s) escena(s) antes de salir?"
+
+#: editor/editor_node.cpp
msgid "Save & Quit"
msgstr "Guardar y Salir"
@@ -4163,8 +4253,8 @@ msgstr "Actualizar Cambios Vitales"
#: editor/editor_node.cpp
#, fuzzy
-msgid "Translate Properties"
-msgstr "Pegar Propiedades"
+msgid "Localize Settings"
+msgstr "Localización"
#: editor/editor_node.cpp
#, fuzzy
@@ -4181,8 +4271,8 @@ msgstr "Inspector"
#: editor/editor_node.cpp
#, fuzzy
-msgid "Capitalize Properties"
-msgstr "Pegar Propiedades"
+msgid "Default Property Name Style"
+msgstr "Ruta del Proyecto:"
#: editor/editor_node.cpp
msgid "Default Float Step"
@@ -4790,7 +4880,9 @@ msgstr "Plugins Instalados:"
msgid "Update"
msgstr "Actualizar"
-#: editor/editor_plugin_settings.cpp
+#: editor/editor_plugin_settings.cpp platform/android/export/export_plugin.cpp
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp
msgid "Version"
msgstr "Version"
@@ -5833,7 +5925,7 @@ msgstr "Todo el Rect"
msgid "Rect Custom Position"
msgstr "Setear Posición de Salida de Curva"
-#: editor/editor_settings.cpp
+#: editor/editor_settings.cpp platform/android/export/export_plugin.cpp
msgid "Screen"
msgstr ""
@@ -5860,6 +5952,19 @@ msgid "Editor SSL Certificates"
msgstr "Configuración del Editor"
#: editor/editor_settings.cpp
+msgid "HTTP Proxy"
+msgstr ""
+
+#: editor/editor_settings.cpp
+msgid "Host"
+msgstr ""
+
+#: editor/editor_settings.cpp editor/fileserver/editor_file_server.cpp
+#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp
+msgid "Port"
+msgstr ""
+
+#: editor/editor_settings.cpp
msgid "Project Manager"
msgstr "Gestor de Proyectos"
@@ -5902,7 +6007,8 @@ msgstr ""
msgid "String Color"
msgstr "Almacenando Archivo:"
-#: editor/editor_settings.cpp
+#: editor/editor_settings.cpp platform/javascript/export/export.cpp
+#: platform/uwp/export/export.cpp
#, fuzzy
msgid "Background Color"
msgstr "Color de fondo inválido."
@@ -6081,22 +6187,6 @@ msgid "Starting the download..."
msgstr "Iniciando la descarga..."
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "HTTP Proxy"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Host"
-msgstr ""
-
-#: editor/export_template_manager.cpp editor/fileserver/editor_file_server.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp main/main.cpp
-#: modules/mono/mono_gd/gd_mono.cpp
-msgid "Port"
-msgstr ""
-
-#: editor/export_template_manager.cpp
msgid "Error requesting URL:"
msgstr "Error al solicitar la URL:"
@@ -6356,6 +6446,7 @@ msgstr ""
#: editor/fileserver/editor_file_server.cpp
#: editor/plugins/version_control_editor_plugin.cpp
+#: platform/uwp/export/export.cpp platform/windows/export/export.cpp
msgid "Password"
msgstr "Contraseña"
@@ -6738,6 +6829,117 @@ msgstr ""
msgid "Use Ambient"
msgstr ""
+#: editor/import/resource_importer_bitmask.cpp
+#, fuzzy
+msgid "Create From"
+msgstr "Crear Carpeta"
+
+#: editor/import/resource_importer_bitmask.cpp
+#: servers/audio/effects/audio_effect_compressor.cpp
+msgid "Threshold"
+msgstr ""
+
+#: editor/import/resource_importer_csv_translation.cpp
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_scene.cpp
+#: editor/import/resource_importer_texture.cpp
+#: editor/import/resource_importer_wav.cpp scene/3d/gi_probe.cpp
+#, fuzzy
+msgid "Compress"
+msgstr "Componentes"
+
+#: editor/import/resource_importer_csv_translation.cpp
+msgid "Delimiter"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+msgid "No BPTC If RGB"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/sprite_3d.cpp
+#: scene/resources/material.cpp scene/resources/particles_material.cpp
+#: scene/resources/texture.cpp
+msgid "Flags"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/animation/tween.cpp
+#: scene/resources/texture.cpp
+msgid "Repeat"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/2d/light_2d.cpp
+#: scene/gui/control.cpp scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Filter"
+msgstr "Filtros:"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Mipmaps"
+msgstr "Señales"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+msgid "Anisotropic"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+msgid "sRGB"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#, fuzzy
+msgid "Slices"
+msgstr "Corte Automático"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
+#: scene/resources/style_box.cpp
+#, fuzzy
+msgid "Horizontal"
+msgstr "Horizontal:"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
+#: scene/resources/style_box.cpp
+#, fuzzy
+msgid "Vertical"
+msgstr "Vertical:"
+
+#: editor/import/resource_importer_obj.cpp
+#, fuzzy
+msgid "Generate Tangents"
+msgstr "Generar puntos"
+
+#: editor/import/resource_importer_obj.cpp
+#, fuzzy
+msgid "Scale Mesh"
+msgstr "Modo de Escalado"
+
+#: editor/import/resource_importer_obj.cpp
+#, fuzzy
+msgid "Offset Mesh"
+msgstr "Offset:"
+
+#: editor/import/resource_importer_obj.cpp
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Octahedral Compression"
+msgstr "Expresión"
+
+#: editor/import/resource_importer_obj.cpp
+#, fuzzy
+msgid "Optimize Mesh Flags"
+msgstr "Tamaño: "
+
#: editor/import/resource_importer_scene.cpp
msgid "Import as Single Scene"
msgstr "Importar como Escena Única"
@@ -6778,6 +6980,156 @@ msgstr "Importar como Escenas Múltiples"
msgid "Import as Multiple Scenes+Materials"
msgstr "Importar como Escenas+Materiales Múltiples"
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Nodes"
+msgstr "Nodo"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Root Type"
+msgstr "Retornar"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Root Name"
+msgstr "Nombre del Remote"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Root Scale"
+msgstr "Escalar"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Custom Script"
+msgstr "CustomNode"
+
+#: editor/import/resource_importer_scene.cpp scene/resources/texture.cpp
+#, fuzzy
+msgid "Storage"
+msgstr "Almacenando Archivo:"
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Use Legacy Names"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+#, fuzzy
+msgid "Materials"
+msgstr "Cambios de Material:"
+
+#: editor/import/resource_importer_scene.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Location"
+msgstr "Localización"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Keep On Reimport"
+msgstr "Reimportar"
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+#, fuzzy
+msgid "Meshes"
+msgstr "Mesh"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Ensure Tangents"
+msgstr "Modificar Tangente de Curva"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Light Baking"
+msgstr "Bake Lightmaps"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Lightmap Texel Size"
+msgstr "Bake Lightmaps"
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+msgid "Skins"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Use Named Skins"
+msgstr "Usar Ajuste de Escalado"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "External Files"
+msgstr "Abrir un Archivo"
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Store In Subdir"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Filter Script"
+msgstr "Filtrar scripts"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Keep Custom Tracks"
+msgstr "Transform"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Optimizer"
+msgstr "Optimizar"
+
+#: editor/import/resource_importer_scene.cpp main/main.cpp
+#: modules/mono/mono_gd/gd_mono.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp scene/2d/camera_2d.cpp scene/2d/light_2d.cpp
+#: scene/2d/navigation_polygon.cpp scene/2d/ray_cast_2d.cpp scene/2d/sprite.cpp
+#: scene/2d/y_sort.cpp scene/3d/audio_stream_player_3d.cpp
+#: scene/3d/baked_lightmap.cpp scene/3d/interpolated_camera.cpp
+#: scene/3d/light.cpp scene/3d/navigation_mesh_instance.cpp
+#: scene/3d/physics_joint.cpp scene/3d/ray_cast.cpp scene/3d/sprite_3d.cpp
+#: scene/gui/graph_edit.cpp scene/gui/rich_text_label.cpp
+#: scene/resources/curve.cpp scene/resources/environment.cpp
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Enabled"
+msgstr "Activar"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Max Linear Error"
+msgstr "Error Lineal Max.:"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Max Angular Error"
+msgstr "Error Angular Max.:"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Max Angle"
+msgstr "Valor"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Remove Unused Tracks"
+msgstr "Quitar pista de animación"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Clips"
+msgstr "Clips de Anim"
+
+#: editor/import/resource_importer_scene.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/particles_2d.cpp scene/3d/area.cpp scene/3d/cpu_particles.cpp
+#: scene/3d/particles.cpp scene/resources/environment.cpp
+#, fuzzy
+msgid "Amount"
+msgstr "Cantidad:"
+
#: editor/import/resource_importer_scene.cpp
#: editor/plugins/mesh_library_editor_plugin.cpp
msgid "Import Scene"
@@ -6819,12 +7171,149 @@ msgstr "¿Devolviste un objeto derivado de Node en el método `post_import()`?"
msgid "Saving..."
msgstr "Guardando..."
+#: editor/import/resource_importer_texture.cpp scene/resources/texture.cpp
+msgid "Lossy Quality"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "HDR Mode"
+msgstr "Modo Seleccionar"
+
+#: editor/import/resource_importer_texture.cpp
+msgid "BPTC LDR"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/mesh_instance_2d.cpp scene/2d/multimesh_instance_2d.cpp
+#: scene/2d/particles_2d.cpp scene/2d/sprite.cpp scene/resources/style_box.cpp
+msgid "Normal Map"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Process"
+msgstr "Post procesado"
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Fix Alpha Border"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Premult Alpha"
+msgstr "Editar Polígono"
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Hdr As Srgb"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Invert Color"
+msgstr "Vértice"
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Normal Map Invert Y"
+msgstr "Escala al Azar:"
+
+#: editor/import/resource_importer_texture.cpp
+#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
+#: scene/audio/audio_stream_player.cpp scene/gui/video_player.cpp
+msgid "Stream"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Size Limit"
+msgstr "Tamaño: "
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Detect 3D"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "SVG"
+msgstr "HSV"
+
#: editor/import/resource_importer_texture.cpp
msgid ""
"Warning, no suitable PC VRAM compression enabled in Project Settings. This "
"texture will not display correctly on PC."
msgstr ""
+#: editor/import/resource_importer_texture_atlas.cpp
+#, fuzzy
+msgid "Atlas File"
+msgstr "Tamaño de Outline:"
+
+#: editor/import/resource_importer_texture_atlas.cpp
+#, fuzzy
+msgid "Import Mode"
+msgstr "Modo de Exportación:"
+
+#: editor/import/resource_importer_texture_atlas.cpp
+#, fuzzy
+msgid "Crop To Region"
+msgstr "Asignar Región de Tile"
+
+#: editor/import/resource_importer_texture_atlas.cpp
+msgid "Trim Alpha Border From Region"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp scene/2d/physics_body_2d.cpp
+#, fuzzy
+msgid "Force"
+msgstr "Forzar Push"
+
+#: editor/import/resource_importer_wav.cpp
+msgid "8 Bit"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp main/main.cpp
+#: modules/mono/editor/csharp_project.cpp modules/mono/mono_gd/gd_mono.cpp
+msgid "Mono"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+#, fuzzy
+msgid "Max Rate"
+msgstr "Nodo Mix"
+
+#: editor/import/resource_importer_wav.cpp
+#, fuzzy
+msgid "Max Rate Hz"
+msgstr "Nodo Mix"
+
+#: editor/import/resource_importer_wav.cpp
+msgid "Trim"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+#, fuzzy
+msgid "Normalize"
+msgstr "Formato"
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+#, fuzzy
+msgid "Loop Mode"
+msgstr "Modo Mover"
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+#, fuzzy
+msgid "Loop Begin"
+msgstr "Modo Mover"
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+#, fuzzy
+msgid "Loop End"
+msgstr "Modo Mover"
+
#: editor/import_defaults_editor.cpp
msgid "Select Importer"
msgstr "Seleccionar Importador"
@@ -6904,6 +7393,29 @@ msgid "Failed to load resource."
msgstr "Fallo al cargar recurso."
#: editor/inspector_dock.cpp
+#, fuzzy
+msgid "Property Name Style"
+msgstr "Nombre del Proyecto:"
+
+#: editor/inspector_dock.cpp scene/gui/color_picker.cpp
+msgid "Raw"
+msgstr "Raw"
+
+#: editor/inspector_dock.cpp
+#, fuzzy
+msgid "Capitalized"
+msgstr "Capitalizar"
+
+#: editor/inspector_dock.cpp
+#, fuzzy
+msgid "Localized"
+msgstr "Idioma"
+
+#: editor/inspector_dock.cpp
+msgid "Localization not available for current language."
+msgstr ""
+
+#: editor/inspector_dock.cpp
msgid "Copy Properties"
msgstr "Copiar Propiedades"
@@ -7955,18 +8467,26 @@ msgid "License (Z-A)"
msgstr "Licencia (Z-A)"
#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgctxt "Pagination"
msgid "First"
msgstr "Primero"
-#: editor/plugins/asset_library_editor_plugin.cpp scene/gui/control.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgctxt "Pagination"
msgid "Previous"
msgstr "Anterior"
-#: editor/plugins/asset_library_editor_plugin.cpp scene/gui/control.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgctxt "Pagination"
msgid "Next"
msgstr "Siguiente"
#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgctxt "Pagination"
msgid "Last"
msgstr "Ultimo"
@@ -8217,19 +8737,19 @@ msgstr ""
"Cuando está activo, mover nodos Control cambia sus anclajes en vez de sus "
"márgenes."
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Top Left"
msgstr "Superior Izquierda"
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Top Right"
msgstr "Superior Derecha"
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Bottom Right"
msgstr "Inferior Derecha"
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Bottom Left"
msgstr "Inferior Izquierda"
@@ -8944,6 +9464,19 @@ msgstr "Bake GI Probe"
msgid "Gradient Edited"
msgstr "Degradado Editado"
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+msgid "Swap GradientTexture2D Fill Points"
+msgstr ""
+
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+msgid "Swap Gradient Fill Points"
+msgstr ""
+
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+#, fuzzy
+msgid "Toggle Grid Snap"
+msgstr "Act/Desact. Modo"
+
#: editor/plugins/item_list_editor_plugin.cpp
msgid "Item %d"
msgstr "Item %d"
@@ -9179,8 +9712,9 @@ msgstr ""
"¿Actualizar desde escena existente?\n"
"%s"
-#: editor/plugins/mesh_library_editor_plugin.cpp modules/gridmap/grid_map.cpp
-msgid "Mesh Library"
+#: editor/plugins/mesh_library_editor_plugin.cpp
+#, fuzzy
+msgid "MeshLibrary"
msgstr "Biblioteca de Meshes"
#: editor/plugins/mesh_library_editor_plugin.cpp
@@ -10174,8 +10708,8 @@ msgstr "Conexiones al método:"
msgid "Source"
msgstr "Fuente"
-#: editor/plugins/script_text_editor.cpp scene/3d/interpolated_camera.cpp
-#: scene/animation/skeleton_ik.cpp
+#: editor/plugins/script_text_editor.cpp platform/uwp/export/export.cpp
+#: scene/3d/interpolated_camera.cpp scene/animation/skeleton_ik.cpp
msgid "Target"
msgstr "Objetivo"
@@ -11150,7 +11684,9 @@ msgstr "Velocidad:"
#: editor/plugins/sprite_frames_editor_plugin.cpp
#: modules/gltf/gltf_animation.cpp modules/minimp3/audio_stream_mp3.cpp
-#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp scene/2d/path_2d.cpp
+#: modules/minimp3/resource_importer_mp3.cpp
+#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp
+#: modules/stb_vorbis/resource_importer_ogg_vorbis.cpp scene/2d/path_2d.cpp
#: scene/3d/path.cpp scene/resources/animation.cpp scene/resources/material.cpp
msgid "Loop"
msgstr "Loop"
@@ -12043,8 +12579,9 @@ msgstr "Bitmask"
msgid "Priority"
msgstr "Prioridad"
-#: editor/plugins/tile_set_editor_plugin.cpp main/main.cpp scene/gui/button.cpp
-#: scene/gui/item_list.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp main/main.cpp
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#: scene/gui/button.cpp scene/gui/item_list.cpp
msgid "Icon"
msgstr "Icono"
@@ -13421,10 +13958,6 @@ msgstr ""
"exportación o en los ajustes de exportación."
#: editor/project_export.cpp
-msgid "Release"
-msgstr "Release"
-
-#: editor/project_export.cpp
msgid "Exporting All"
msgstr "Exportar Todo"
@@ -15320,6 +15853,7 @@ msgid "Change AudioStreamPlayer3D Emission Angle"
msgstr "Cambiar el Ãngulo de Emisión del AudioStreamPlayer3D"
#: editor/spatial_editor_gizmos.cpp modules/gltf/gltf_node.cpp
+#: platform/osx/export/export.cpp
msgid "Camera"
msgstr ""
@@ -15601,7 +16135,8 @@ msgstr ""
msgid "Use Nvidia Rect Flicker Workaround"
msgstr ""
-#: main/main.cpp platform/uwp/os_uwp.cpp
+#: main/main.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp platform/uwp/os_uwp.cpp
#, fuzzy
msgid "Display"
msgstr "Mostrar Todo"
@@ -15662,19 +16197,6 @@ msgstr ""
msgid "Allowed"
msgstr ""
-#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp scene/2d/camera_2d.cpp
-#: scene/2d/light_2d.cpp scene/2d/navigation_polygon.cpp
-#: scene/2d/ray_cast_2d.cpp scene/2d/sprite.cpp scene/2d/y_sort.cpp
-#: scene/3d/audio_stream_player_3d.cpp scene/3d/baked_lightmap.cpp
-#: scene/3d/interpolated_camera.cpp scene/3d/light.cpp
-#: scene/3d/navigation_mesh_instance.cpp scene/3d/ray_cast.cpp
-#: scene/3d/sprite_3d.cpp scene/gui/graph_edit.cpp
-#: scene/gui/rich_text_label.cpp scene/resources/curve.cpp
-#: scene/resources/environment.cpp
-#, fuzzy
-msgid "Enabled"
-msgstr "Activar"
-
#: main/main.cpp
msgid "Intended Usage"
msgstr ""
@@ -15706,13 +16228,14 @@ msgstr ""
msgid "Handheld"
msgstr ""
-#: main/main.cpp
+#: main/main.cpp platform/javascript/export/export.cpp
+#: platform/uwp/export/export.cpp
#, fuzzy
msgid "Orientation"
msgstr "Documentación En Línea"
#: main/main.cpp scene/gui/scroll_container.cpp scene/gui/text_edit.cpp
-#: scene/main/scene_tree.cpp
+#: scene/main/scene_tree.cpp scene/register_scene_types.cpp
#, fuzzy
msgid "Common"
msgstr "Comunidad"
@@ -15755,7 +16278,7 @@ msgstr ""
#: main/main.cpp
#, fuzzy
-msgid "Frame Delay (msec)"
+msgid "Frame Delay Msec"
msgstr "Encuadrar Selección"
#: main/main.cpp
@@ -15884,11 +16407,6 @@ msgstr ""
msgid "Tooltip Position Offset"
msgstr "Offset de Rotación:"
-#: main/main.cpp modules/mono/editor/csharp_project.cpp
-#: modules/mono/mono_gd/gd_mono.cpp
-msgid "Mono"
-msgstr ""
-
#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp
#, fuzzy
msgid "Debugger Agent"
@@ -16470,7 +16988,7 @@ msgstr "Colores"
msgid "Intensity"
msgstr ""
-#: modules/gltf/gltf_light.cpp scene/2d/light_2d.cpp
+#: modules/gltf/gltf_light.cpp scene/2d/light_2d.cpp scene/3d/light.cpp
#, fuzzy
msgid "Range"
msgstr "Cambiar"
@@ -16617,11 +17135,6 @@ msgstr "Con Data"
msgid "Use Named Skin Binds"
msgstr ""
-#: modules/gltf/gltf_state.cpp scene/3d/physics_joint.cpp
-#, fuzzy
-msgid "Nodes"
-msgstr "Nodo"
-
#: modules/gltf/gltf_state.cpp
#, fuzzy
msgid "Buffer Views"
@@ -16633,16 +17146,6 @@ msgstr ""
#: modules/gltf/gltf_state.cpp
#, fuzzy
-msgid "Meshes"
-msgstr "Mesh"
-
-#: modules/gltf/gltf_state.cpp
-#, fuzzy
-msgid "Materials"
-msgstr "Cambios de Material:"
-
-#: modules/gltf/gltf_state.cpp
-#, fuzzy
msgid "Scene Name"
msgstr "Ruta a la Escena:"
@@ -16658,15 +17161,11 @@ msgstr "Nombre del nodo raíz"
msgid "Textures"
msgstr "Características"
-#: modules/gltf/gltf_state.cpp
+#: modules/gltf/gltf_state.cpp platform/uwp/export/export.cpp
msgid "Images"
msgstr ""
#: modules/gltf/gltf_state.cpp
-msgid "Skins"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp
msgid "Cameras"
msgstr ""
@@ -16701,11 +17200,15 @@ msgid "Src Image"
msgstr "Mostrar Huesos"
#: modules/gridmap/grid_map.cpp
+msgid "Mesh Library"
+msgstr "Biblioteca de Meshes"
+
+#: modules/gridmap/grid_map.cpp
#, fuzzy
msgid "Physics Material"
msgstr "Frames de Física %"
-#: modules/gridmap/grid_map.cpp
+#: modules/gridmap/grid_map.cpp scene/3d/visual_instance.cpp
#, fuzzy
msgid "Use In Baked Light"
msgstr "Bake Lightmaps"
@@ -16737,6 +17240,7 @@ msgstr "Centro"
#: modules/gridmap/grid_map.cpp scene/2d/collision_object_2d.cpp
#: scene/2d/tile_map.cpp scene/3d/collision_object.cpp scene/3d/soft_body.cpp
+#: scene/resources/material.cpp
msgid "Mask"
msgstr ""
@@ -16918,7 +17422,9 @@ msgid "Ultra Quality Ray Count"
msgstr ""
#: modules/minimp3/audio_stream_mp3.cpp
+#: modules/minimp3/resource_importer_mp3.cpp
#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp
+#: modules/stb_vorbis/resource_importer_ogg_vorbis.cpp
#, fuzzy
msgid "Loop Offset"
msgstr "Offset:"
@@ -18006,6 +18512,193 @@ msgid "The package must have at least one '.' separator."
msgstr "El paquete debe tener al menos un '.' como separador."
#: platform/android/export/export_plugin.cpp
+msgid "Use Custom Build"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Export Format"
+msgstr "Ruta de Exportación"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Keystore"
+msgstr "Depurador"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Debug User"
+msgstr "Depurador"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Debug Password"
+msgstr "Contraseña"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Release User"
+msgstr "Release"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Release Password"
+msgstr "Contraseña"
+
+#: platform/android/export/export_plugin.cpp
+msgid "One Click Deploy"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Clear Previous Install"
+msgstr "Inspeccionar Instancia Previa"
+
+#: platform/android/export/export_plugin.cpp scene/resources/shader.cpp
+msgid "Code"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Min SDK"
+msgstr "Tamaño de Outline:"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Target SDK"
+msgstr "Objetivo"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Package"
+msgstr "Empaquetando"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Unique Name"
+msgstr "Nombre de Nodo:"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Signed"
+msgstr "Señal"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Classify As Game"
+msgstr "Nombre de Clase:"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Retain Data On Uninstall"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Exclude From Recents"
+msgstr "Eliminar Nodos"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Graphics"
+msgstr "Offset de Grilla:"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "OpenGL Debug"
+msgstr "Abrir"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "XR Features"
+msgstr "Características"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "XR Mode"
+msgstr "Modo Paneo"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Hand Tracking"
+msgstr "Empaquetando"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Hand Tracking Frequency"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Passthrough"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Immersive Mode"
+msgstr "Modo Prioridad"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Support Small"
+msgstr "Soporte"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Support Normal"
+msgstr "Soporte"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Support Large"
+msgstr "Soporte"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Support Xlarge"
+msgstr "Soporte"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "User Data Backup"
+msgstr "Interfaz de Usuario"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Allow"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Command Line"
+msgstr "Comunidad"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Extra Args"
+msgstr "Argumentos de Llamada Extras:"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "APK Expansion"
+msgstr "Expresión"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Salt"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Public Key"
+msgstr "Ruta de la clave pública SSH"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Permissions"
+msgstr "Máscara de Emisión"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Custom Permissions"
+msgstr "Reproducir Escena Personalizada"
+
+#: platform/android/export/export_plugin.cpp
msgid "Select device from the list"
msgstr "Seleccionar dispositivo de la lista"
@@ -18340,6 +19033,178 @@ msgid "The character '%s' is not allowed in Identifier."
msgstr "El caracter '%s' no esta permitido como identificador."
#: platform/iphone/export/export.cpp
+msgid "App Store Team ID"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Provisioning Profile UUID Debug"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Code Sign Identity Debug"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Export Method Debug"
+msgstr "Exportar Con Depuración"
+
+#: platform/iphone/export/export.cpp
+msgid "Provisioning Profile UUID Release"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Code Sign Identity Release"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Export Method Release"
+msgstr "Modo de Exportación:"
+
+#: platform/iphone/export/export.cpp
+msgid "Targeted Device Family"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Info"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Identifier"
+msgstr "Identificador inválido:"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Signature"
+msgstr "Señal"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Short Version"
+msgstr "Version"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Copyright"
+msgstr "Superior Derecha"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Capabilities"
+msgstr "Pegar Propiedades"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Access Wi-Fi"
+msgstr "¡Éxito!"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Push Notifications"
+msgstr "Rotación al Azar:"
+
+#: platform/iphone/export/export.cpp scene/3d/baked_lightmap.cpp
+#, fuzzy
+msgid "User Data"
+msgstr "Interfaz de Usuario"
+
+#: platform/iphone/export/export.cpp
+msgid "Accessible From Files App"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Accessible From Itunes Sharing"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Privacy"
+msgstr "Ruta de la Clave Privada SSH"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Camera Usage Description"
+msgstr "Descripción"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Microphone Usage Description"
+msgstr "Descripción de Propiedades"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Photolibrary Usage Description"
+msgstr "Descripción de Propiedades"
+
+#: platform/iphone/export/export.cpp
+msgid "iPhone 120 X 120"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPhone 180 X 180"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 76 X 76"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 152 X 152"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 167 X 167"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "App Store 1024 X 1024"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Spotlight 40 X 40"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Spotlight 80 X 80"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Storyboard"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Use Launch Screen Storyboard"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Image Scale Mode"
+msgstr "Modo de Escalado"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Custom Image @2x"
+msgstr "CustomNode"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Custom Image @3x"
+msgstr "CustomNode"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Use Custom BG Color"
+msgstr "CustomNode"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Custom BG Color"
+msgstr "CustomNode"
+
+#: platform/iphone/export/export.cpp
msgid "App Store Team ID not specified - cannot configure the project."
msgstr ""
"App Store Team ID no especificado - no se puede configurar el proyecto."
@@ -18377,6 +19242,80 @@ msgid "Could not read file:"
msgstr "No se pudo leer el archivo:"
#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Variant"
+msgstr "Separación:"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Export Type"
+msgstr "Exportar"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "VRAM Texture Compression"
+msgstr "Expresión"
+
+#: platform/javascript/export/export.cpp
+msgid "For Desktop"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "For Mobile"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Html"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Export Icon"
+msgstr "Expandir Todos"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Custom Html Shell"
+msgstr "CustomNode"
+
+#: platform/javascript/export/export.cpp
+msgid "Head Include"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Canvas Resize Policy"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Focus Canvas On Start"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Experimental Virtual Keyboard"
+msgstr "Filtrar señales"
+
+#: platform/javascript/export/export.cpp
+msgid "Progressive Web App"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Offline Page"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 144 X 144"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 180 X 180"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 512 X 512"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
msgid "Could not read HTML shell:"
msgstr "No se pudo leer el shell HTML:"
@@ -18482,6 +19421,202 @@ msgid "Unknown object type."
msgstr "Tipo de objeto desconocido."
#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "App Category"
+msgstr "Categoría:"
+
+#: platform/osx/export/export.cpp
+msgid "High Res"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Location Usage Description"
+msgstr "Descripción"
+
+#: platform/osx/export/export.cpp
+msgid "Address Book Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Calendar Usage Description"
+msgstr "Descripción"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Photos Library Usage Description"
+msgstr "Descripción de Propiedades"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Desktop Folder Usage Description"
+msgstr "Descripción de Método"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Documents Folder Usage Description"
+msgstr "Descripción de Método"
+
+#: platform/osx/export/export.cpp
+msgid "Downloads Folder Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Network Volumes Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Removable Volumes Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#, fuzzy
+msgid "Codesign"
+msgstr "Firmando código de DMG"
+
+#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Identity"
+msgstr "Indentar a la Izq"
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#, fuzzy
+msgid "Timestamp"
+msgstr "Tiempo"
+
+#: platform/osx/export/export.cpp
+msgid "Hardened Runtime"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Replace Existing Signature"
+msgstr "eemplazar en Archivos"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Entitlements"
+msgstr "Gizmos"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Custom File"
+msgstr "CustomNode"
+
+#: platform/osx/export/export.cpp
+msgid "Allow JIT Code Execution"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Allow Unsigned Executable Memory"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Allow Dyld Environment Variables"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Disable Library Validation"
+msgstr "Botón Desactivado"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Audio Input"
+msgstr "Agregar Entrada"
+
+#: platform/osx/export/export.cpp
+msgid "Address Book"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Calendars"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Photos Library"
+msgstr "Exportar Libreria"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Apple Events"
+msgstr "Agregar Evento"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Debugging"
+msgstr "Depurar"
+
+#: platform/osx/export/export.cpp
+msgid "App Sandbox"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Network Server"
+msgstr "Profiler de Red"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Network Client"
+msgstr "Profiler de Red"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Device Usb"
+msgstr "Dispositivo"
+
+#: platform/osx/export/export.cpp
+msgid "Device Bluetooth"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Files Downloads"
+msgstr "Descargar"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Files Pictures"
+msgstr "Características"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Files Music"
+msgstr "Archivo"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Files Movies"
+msgstr "Filtrar tiles"
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#, fuzzy
+msgid "Custom Options"
+msgstr "Opciones de Bus"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Notarization"
+msgstr "Localización"
+
+#: platform/osx/export/export.cpp
+msgid "Apple ID Name"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Apple ID Password"
+msgstr "Contraseña"
+
+#: platform/osx/export/export.cpp
+msgid "Apple Team ID"
+msgstr ""
+
+#: platform/osx/export/export.cpp
msgid ""
"Note: The notarization process generally takes less than an hour. When the "
"process is completed, you'll receive an email."
@@ -18712,6 +19847,136 @@ msgid "Force Builtin Codesign"
msgstr ""
#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Architecture"
+msgstr "Agregar una entrada de arquitectura"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Display Name"
+msgstr "Mostrar Todo"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Short Name"
+msgstr "Nombre del Script:"
+
+#: platform/uwp/export/export.cpp
+msgid "Publisher"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Publisher Display Name"
+msgstr "Nombre de paquete de editor inválido."
+
+#: platform/uwp/export/export.cpp
+msgid "Product Guid"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Publisher Guid"
+msgstr "Restablecer Guías"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Signing"
+msgstr "Señal"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Certificate"
+msgstr "Vértices:"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Algorithm"
+msgstr "Depurador"
+
+#: platform/uwp/export/export.cpp
+msgid "Major"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Minor"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Build"
+msgstr "Modo Regla"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Revision"
+msgstr "Expresión"
+
+#: platform/uwp/export/export.cpp
+msgid "Landscape"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Portrait"
+msgstr "Invertir Portales"
+
+#: platform/uwp/export/export.cpp
+msgid "Landscape Flipped"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Portrait Flipped"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Store Logo"
+msgstr "Modo de Escalado"
+
+#: platform/uwp/export/export.cpp
+msgid "Square 44 X 44 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 71 X 71 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 150 X 150 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 310 X 310 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Wide 310 X 150 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Splash Screen"
+msgstr "Llamadas de Dibujado:"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Tiles"
+msgstr "Archivo"
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Square 150 X 150"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Wide 310 X 150"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Square 310 X 310"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
msgid "Invalid package short name."
msgstr "Nombre corto de paquete inválido."
@@ -18789,15 +20054,52 @@ msgstr ""
#: platform/uwp/export/export.cpp
#, fuzzy
-msgid "Debug Password"
-msgstr "Contraseña"
+msgid "Debug Algorithm"
+msgstr "Depurador"
-#: platform/uwp/export/export.cpp
+#: platform/windows/export/export.cpp
+msgid "Identity Type"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Timestamp Server URL"
+msgstr ""
+
+#: platform/windows/export/export.cpp
#, fuzzy
-msgid "Debug Algorithm"
+msgid "Digest Algorithm"
msgstr "Depurador"
#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "File Version"
+msgstr "Version"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Product Version"
+msgstr "versión de producto inválida."
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Company Name"
+msgstr "Nombre de Nodo:"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Product Name"
+msgstr "Nombre del Proyecto:"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "File Description"
+msgstr "Descripción"
+
+#: platform/windows/export/export.cpp
+msgid "Trademarks"
+msgstr ""
+
+#: platform/windows/export/export.cpp
msgid ""
"The rcedit tool must be configured in the Editor Settings (Export > Windows "
"> Rcedit) to change the icon or app information data."
@@ -18869,12 +20171,14 @@ msgstr "Reproducir"
msgid "Centered"
msgstr "Centro"
-#: scene/2d/animated_sprite.cpp scene/2d/camera_2d.cpp scene/2d/light_2d.cpp
+#: scene/2d/animated_sprite.cpp scene/2d/camera_2d.cpp
+#: scene/2d/cpu_particles_2d.cpp scene/2d/light_2d.cpp
#: scene/2d/parallax_background.cpp scene/2d/parallax_layer.cpp
#: scene/2d/path_2d.cpp scene/2d/polygon_2d.cpp scene/2d/sprite.cpp
-#: scene/3d/path.cpp scene/3d/physics_body.cpp scene/3d/sprite_3d.cpp
-#: scene/gui/graph_node.cpp scene/gui/rich_text_effect.cpp
-#: scene/main/canvas_layer.cpp scene/resources/material.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/path.cpp scene/3d/physics_body.cpp
+#: scene/3d/sprite_3d.cpp scene/gui/graph_node.cpp
+#: scene/gui/rich_text_effect.cpp scene/main/canvas_layer.cpp
+#: scene/resources/material.cpp scene/resources/particles_material.cpp
#: scene/resources/style_box.cpp
#, fuzzy
msgid "Offset"
@@ -18949,11 +20253,6 @@ msgstr "Agregar Bus de Audio"
msgid "Override"
msgstr "Reemplazos(Overrides)"
-#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
-#: scene/audio/audio_stream_player.cpp scene/gui/video_player.cpp
-msgid "Stream"
-msgstr ""
-
#: scene/2d/audio_stream_player_2d.cpp scene/audio/audio_stream_player.cpp
#: scene/gui/video_player.cpp servers/audio/effects/audio_effect_amplify.cpp
#, fuzzy
@@ -18980,13 +20279,13 @@ msgid "Stream Paused"
msgstr ""
#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
-#: scene/3d/reflection_probe.cpp scene/3d/visual_instance.cpp
-#: scene/resources/material.cpp
+#: scene/3d/light.cpp scene/3d/reflection_probe.cpp
+#: scene/3d/visual_instance.cpp scene/resources/material.cpp
#, fuzzy
msgid "Max Distance"
msgstr "Elegir Instancia:"
-#: scene/2d/audio_stream_player_2d.cpp
+#: scene/2d/audio_stream_player_2d.cpp scene/3d/light.cpp
#, fuzzy
msgid "Attenuation"
msgstr "Animación"
@@ -19042,6 +20341,24 @@ msgstr "Modo Mover"
msgid "Limit"
msgstr ""
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/style_box.cpp
+#, fuzzy
+msgid "Left"
+msgstr "Superior Izquierda"
+
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/style_box.cpp
+#, fuzzy
+msgid "Right"
+msgstr "Luz"
+
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/dynamic_font.cpp scene/resources/style_box.cpp
+#, fuzzy
+msgid "Bottom"
+msgstr "Inferior Izquierda"
+
#: scene/2d/camera_2d.cpp
#, fuzzy
msgid "Smoothed"
@@ -19285,13 +20602,6 @@ msgstr ""
msgid "Emitting"
msgstr "Configuración:"
-#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp scene/3d/area.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
-#: scene/resources/environment.cpp
-#, fuzzy
-msgid "Amount"
-msgstr "Cantidad:"
-
#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp
#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
msgid "Lifetime"
@@ -19356,18 +20666,13 @@ msgstr ""
#: scene/2d/mesh_instance_2d.cpp scene/2d/multimesh_instance_2d.cpp
#: scene/2d/particles_2d.cpp scene/2d/polygon_2d.cpp scene/2d/sprite.cpp
#: scene/3d/sprite_3d.cpp scene/gui/nine_patch_rect.cpp
-#: scene/gui/texture_rect.cpp scene/resources/sky.cpp
-#: scene/resources/style_box.cpp scene/resources/visual_shader_nodes.cpp
+#: scene/gui/texture_rect.cpp scene/resources/material.cpp
+#: scene/resources/sky.cpp scene/resources/style_box.cpp
+#: scene/resources/visual_shader_nodes.cpp
#, fuzzy
msgid "Texture"
msgstr "Texto"
-#: scene/2d/cpu_particles_2d.cpp scene/2d/mesh_instance_2d.cpp
-#: scene/2d/multimesh_instance_2d.cpp scene/2d/particles_2d.cpp
-#: scene/2d/sprite.cpp scene/resources/style_box.cpp
-msgid "Normal Map"
-msgstr ""
-
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
#, fuzzy
@@ -19391,10 +20696,10 @@ msgid "Normals"
msgstr "Formato"
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/3d/sprite_3d.cpp scene/resources/material.cpp
-#: scene/resources/particles_material.cpp scene/resources/texture.cpp
-msgid "Flags"
-msgstr ""
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Align Y"
+msgstr "Asignar"
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
@@ -19415,6 +20720,12 @@ msgid "Initial Velocity"
msgstr "Inicializar"
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Velocity Random"
+msgstr "Orbitar Vista Hacia La Derecha"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp servers/physics_2d_server.cpp
#: servers/physics_server.cpp
msgid "Angular Velocity"
@@ -19423,6 +20734,12 @@ msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
#, fuzzy
+msgid "Velocity Curve"
+msgstr "Orbitar Vista Hacia La Derecha"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
msgid "Orbit Velocity"
msgstr "Orbitar Vista Hacia La Derecha"
@@ -19434,6 +20751,23 @@ msgstr "Lineal"
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Accel"
+msgstr "¡Éxito!"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Accel Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Accel Curve"
+msgstr "Partir Curva"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
msgid "Radial Accel"
msgstr ""
@@ -19443,19 +20777,55 @@ msgid "Tangential Accel"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/2d/joints_2d.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/vehicle_body.cpp
-#: scene/resources/particles_material.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/physics_joint.cpp
+#: scene/3d/vehicle_body.cpp scene/resources/particles_material.cpp
#: servers/audio/effects/audio_effect_reverb.cpp
msgid "Damping"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+msgid "Damping Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Damping Curve"
+msgstr "Partir Curva"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp scene/3d/light.cpp
+#: scene/resources/particles_material.cpp
msgid "Angle"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+msgid "Angle Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Angle Curve"
+msgstr "Cerrar Curva"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#, fuzzy
+msgid "Scale Amount"
+msgstr "Cantidad:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+msgid "Scale Amount Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#, fuzzy
+msgid "Scale Amount Curve"
+msgstr "Escalar Desde Cursor"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
#, fuzzy
msgid "Color Ramp"
msgstr "Colores"
@@ -19471,6 +20841,48 @@ msgstr ""
msgid "Hue Variation"
msgstr "Separación:"
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Variation"
+msgstr "Separación:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Variation Random"
+msgstr "Separación:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Variation Curve"
+msgstr "Separación:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Speed Random"
+msgstr "Escalar"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Speed Curve"
+msgstr "Partir Curva"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Offset Random"
+msgstr "Offset:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Offset Curve"
+msgstr "Cerrar Curva"
+
#: scene/2d/joints_2d.cpp
msgid "Node A and Node B must be PhysicsBody2Ds"
msgstr "El nodo A y el nodo B deben ser PhysicsBody2D"
@@ -19502,6 +20914,7 @@ msgid "Node B"
msgstr "Nodo"
#: scene/2d/joints_2d.cpp scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp
+#: scene/3d/light.cpp scene/3d/physics_joint.cpp
#: scene/resources/environment.cpp
msgid "Bias"
msgstr ""
@@ -19511,7 +20924,7 @@ msgstr ""
msgid "Disable Collision"
msgstr "Botón Desactivado"
-#: scene/2d/joints_2d.cpp
+#: scene/2d/joints_2d.cpp scene/3d/physics_joint.cpp
msgid "Softness"
msgstr ""
@@ -19529,7 +20942,7 @@ msgstr "Inicializar"
msgid "Rest Length"
msgstr ""
-#: scene/2d/joints_2d.cpp scene/3d/vehicle_body.cpp
+#: scene/2d/joints_2d.cpp scene/3d/physics_joint.cpp scene/3d/vehicle_body.cpp
msgid "Stiffness"
msgstr ""
@@ -19552,7 +20965,7 @@ msgid "Texture Scale"
msgstr "Región de Textura"
#: scene/2d/light_2d.cpp scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp
-#: scene/resources/environment.cpp scene/resources/sky.cpp
+#: scene/3d/light.cpp scene/resources/environment.cpp scene/resources/sky.cpp
msgid "Energy"
msgstr ""
@@ -19593,12 +21006,6 @@ msgstr "Vista Anterior"
msgid "Gradient Length"
msgstr "Degradado Editado"
-#: scene/2d/light_2d.cpp scene/gui/control.cpp
-#: scene/resources/navigation_mesh.cpp
-#, fuzzy
-msgid "Filter"
-msgstr "Filtros:"
-
#: scene/2d/light_2d.cpp
#, fuzzy
msgid "Filter Smooth"
@@ -20041,11 +21448,6 @@ msgid "Applied Forces"
msgstr ""
#: scene/2d/physics_body_2d.cpp
-#, fuzzy
-msgid "Force"
-msgstr "Forzar Push"
-
-#: scene/2d/physics_body_2d.cpp
msgid "Torque"
msgstr ""
@@ -20061,7 +21463,7 @@ msgstr " (Física)"
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
#, fuzzy
-msgid "Moving platform"
+msgid "Moving Platform"
msgstr "Moviendo salida"
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
@@ -20070,7 +21472,7 @@ msgstr ""
#: scene/2d/physics_body_2d.cpp scene/2d/touch_screen_button.cpp
#: scene/3d/physics_body.cpp scene/gui/texture_button.cpp
-#: scene/resources/line_shape_2d.cpp
+#: scene/resources/line_shape_2d.cpp scene/resources/material.cpp
#, fuzzy
msgid "Normal"
msgstr "Formato"
@@ -20316,6 +21718,34 @@ msgstr ""
"VisibilityEnabler2D funciona mejor cuando se usa con la raíz de la escena "
"editada directamente como padre."
+#: scene/2d/visibility_notifier_2d.cpp scene/3d/visibility_notifier.cpp
+#, fuzzy
+msgid "Pause Animations"
+msgstr "Pegar Animación"
+
+#: scene/2d/visibility_notifier_2d.cpp scene/3d/visibility_notifier.cpp
+msgid "Freeze Bodies"
+msgstr ""
+
+#: scene/2d/visibility_notifier_2d.cpp
+#, fuzzy
+msgid "Pause Particles"
+msgstr "Partículas"
+
+#: scene/2d/visibility_notifier_2d.cpp
+#, fuzzy
+msgid "Pause Animated Sprites"
+msgstr "Pegar Animación"
+
+#: scene/2d/visibility_notifier_2d.cpp
+#, fuzzy
+msgid "Process Parent"
+msgstr "Activar Prioridad"
+
+#: scene/2d/visibility_notifier_2d.cpp
+msgid "Physics Process Parent"
+msgstr ""
+
#: scene/3d/area.cpp
msgid "Reverb Bus"
msgstr ""
@@ -20416,6 +21846,7 @@ msgid "Attenuation Filter"
msgstr ""
#: scene/3d/audio_stream_player_3d.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
#: servers/audio/effects/audio_effect_filter.cpp
msgid "Cutoff Hz"
msgstr ""
@@ -20460,11 +21891,6 @@ msgid "Octree"
msgstr "Subárbol"
#: scene/3d/baked_lightmap.cpp
-#, fuzzy
-msgid "User Data"
-msgstr "Interfaz de Usuario"
-
-#: scene/3d/baked_lightmap.cpp
msgid "Finding meshes and lights"
msgstr "Encontrar mallas y luces"
@@ -20738,6 +22164,16 @@ msgid "Ring Axis"
msgstr "Advertencias"
#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Rotate Y"
+msgstr "Rotar"
+
+#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Disable Z"
+msgstr "Desactivar Ãtem"
+
+#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
msgid "Flatness"
msgstr ""
@@ -20778,16 +22214,11 @@ msgstr "Biblioteca Dinámica"
msgid "Dynamic Range"
msgstr "Biblioteca Dinámica"
-#: scene/3d/gi_probe.cpp
+#: scene/3d/gi_probe.cpp scene/3d/light.cpp
msgid "Normal Bias"
msgstr ""
#: scene/3d/gi_probe.cpp
-#, fuzzy
-msgid "Compress"
-msgstr "Componentes"
-
-#: scene/3d/gi_probe.cpp
msgid "Plotting Meshes"
msgstr "Trazando Meshes"
@@ -20819,16 +22250,31 @@ msgstr ""
#: scene/3d/light.cpp
#, fuzzy
+msgid "Indirect Energy"
+msgstr "Colores de Emisión"
+
+#: scene/3d/light.cpp
+#, fuzzy
msgid "Negative"
msgstr "GDNative"
#: scene/3d/light.cpp
#, fuzzy
+msgid "Specular"
+msgstr "Modo Regla"
+
+#: scene/3d/light.cpp
+#, fuzzy
msgid "Bake Mode"
msgstr "Modo Bitmask"
#: scene/3d/light.cpp
#, fuzzy
+msgid "Contact"
+msgstr "Seleccionar Color"
+
+#: scene/3d/light.cpp
+#, fuzzy
msgid "Reverse Cull Face"
msgstr "Resetear Volumen de Bus"
@@ -20839,11 +22285,31 @@ msgstr "Direcciones"
#: scene/3d/light.cpp
#, fuzzy
+msgid "Split 1"
+msgstr "Dividida"
+
+#: scene/3d/light.cpp
+#, fuzzy
+msgid "Split 2"
+msgstr "Dividida"
+
+#: scene/3d/light.cpp
+#, fuzzy
+msgid "Split 3"
+msgstr "Dividida"
+
+#: scene/3d/light.cpp
+#, fuzzy
msgid "Blend Splits"
msgstr "Tiempos de Blending:"
#: scene/3d/light.cpp
#, fuzzy
+msgid "Bias Split Scale"
+msgstr "Usar Ajuste de Escalado"
+
+#: scene/3d/light.cpp
+#, fuzzy
msgid "Depth Range"
msgstr "Profundidad"
@@ -20871,6 +22337,11 @@ msgstr ""
msgid "Spot"
msgstr ""
+#: scene/3d/light.cpp
+#, fuzzy
+msgid "Angle Attenuation"
+msgstr "Animación"
+
#: scene/3d/mesh_instance.cpp
msgid "Software Skinning"
msgstr ""
@@ -21012,6 +22483,63 @@ msgstr "Eje"
#: scene/3d/physics_body.cpp
#, fuzzy
+msgid "Linear X"
+msgstr "Lineal"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Linear Y"
+msgstr "Lineal"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Linear Z"
+msgstr "Lineal"
+
+#: scene/3d/physics_body.cpp
+msgid "Angular X"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Angular Y"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Angular Z"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Motion X"
+msgstr "Acción"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Motion Y"
+msgstr "Acción"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Motion Z"
+msgstr "Acción"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Move Lock X"
+msgstr "Mover Nodo"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Move Lock Y"
+msgstr "Mover Nodo"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Move Lock Z"
+msgstr "Mover Nodo"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
msgid "Body Offset"
msgstr "Offset:"
@@ -21045,6 +22573,15 @@ msgid "Exclude Nodes"
msgstr "Eliminar Nodos"
#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Params"
+msgstr "Parámetro Modificado:"
+
+#: scene/3d/physics_joint.cpp
+msgid "Impulse Clamp"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit"
msgstr ""
@@ -21058,6 +22595,55 @@ msgstr "Mayúsculas"
msgid "Lower"
msgstr "Minúsculas"
+#: scene/3d/physics_joint.cpp scene/3d/vehicle_body.cpp
+#, fuzzy
+msgid "Relaxation"
+msgstr "Separación:"
+
+#: scene/3d/physics_joint.cpp
+msgid "Motor"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Target Velocity"
+msgstr "Orbitar Vista Hacia La Derecha"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Max Impulse"
+msgstr "Velocidad:"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit"
+msgstr "Lineal"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Upper Distance"
+msgstr "Elegir Instancia:"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Lower Distance"
+msgstr "Elegir Instancia:"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Restitution"
+msgstr "Descripción"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motion"
+msgstr "Inicializar"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Ortho"
+msgstr "Ortogonal Trasera"
+
#: scene/3d/physics_joint.cpp
#, fuzzy
msgid "Upper Angle"
@@ -21070,6 +22656,16 @@ msgstr "Minúsculas"
#: scene/3d/physics_joint.cpp
#, fuzzy
+msgid "Angular Motion"
+msgstr "Animación"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Angular Ortho"
+msgstr "Error Angular Max.:"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
msgid "Swing Span"
msgstr "Guardar Escena"
@@ -21078,17 +22674,99 @@ msgid "Twist Span"
msgstr ""
#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit X"
+msgstr "Lineal"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motor X"
+msgstr "Inicializar"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Force Limit"
+msgstr "Llamadas de Dibujado:"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Spring X"
+msgstr "Lineal"
+
+#: scene/3d/physics_joint.cpp
+msgid "Equilibrium Point"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit X"
msgstr ""
#: scene/3d/physics_joint.cpp
+msgid "Erp"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Motor X"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Spring X"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit Y"
+msgstr "Lineal"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motor Y"
+msgstr "Inicializar"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Spring Y"
+msgstr "Lineal"
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit Y"
msgstr ""
#: scene/3d/physics_joint.cpp
+msgid "Angular Motor Y"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Spring Y"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit Z"
+msgstr "Lineal"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motor Z"
+msgstr "Inicializar"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Spring Z"
+msgstr "Lineal"
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit Z"
msgstr ""
+#: scene/3d/physics_joint.cpp
+msgid "Angular Motor Z"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Spring Z"
+msgstr ""
+
#: scene/3d/portal.cpp
msgid "The RoomManager should not be a child or grandchild of a Portal."
msgstr "El RoomManager no debe ser hijo o nieto de un Portal."
@@ -21211,7 +22889,7 @@ msgstr ""
msgid "Use Default Simplify"
msgstr ""
-#: scene/3d/room.cpp
+#: scene/3d/room.cpp scene/3d/room_manager.cpp
msgid "Room Simplify"
msgstr ""
@@ -21252,6 +22930,13 @@ msgstr "Sólo debe haber un RoomManager en el SceneTree."
msgid "Main"
msgstr ""
+#: scene/3d/room_manager.cpp scene/animation/animation_player.cpp
+#: scene/animation/animation_tree.cpp scene/animation/animation_tree_player.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+#, fuzzy
+msgid "Active"
+msgstr "Acción"
+
#: scene/3d/room_manager.cpp
msgid "Roomlist"
msgstr ""
@@ -21276,6 +22961,54 @@ msgid "Gameplay"
msgstr ""
#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Gameplay Monitor"
+msgstr "Monitor"
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Use Secondary PVS"
+msgstr "Usar Ajuste de Escalado"
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Merge Meshes"
+msgstr "Mesh"
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Show Margins"
+msgstr "Mostrar Orígen"
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Debug Sprawl"
+msgstr "Depurar"
+
+#: scene/3d/room_manager.cpp
+msgid "Overlap Warning Threshold"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Preview Camera"
+msgstr "Vista Previa"
+
+#: scene/3d/room_manager.cpp
+msgid "Portal Depth Limit"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Default Portal Margin"
+msgstr "Asignar Margen"
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Roaming Expansion Margin"
+msgstr "Expandir Todos"
+
+#: scene/3d/room_manager.cpp
msgid ""
"RoomList path is invalid.\n"
"Please check the RoomList branch has been assigned in the RoomManager."
@@ -21418,6 +23151,20 @@ msgstr "Ajustar a Pixeles"
msgid "Billboard"
msgstr ""
+#: scene/3d/sprite_3d.cpp scene/resources/material.cpp
+#, fuzzy
+msgid "Transparent"
+msgstr "Transponer"
+
+#: scene/3d/sprite_3d.cpp
+#, fuzzy
+msgid "Shaded"
+msgstr "Shader"
+
+#: scene/3d/sprite_3d.cpp
+msgid "Double Sided"
+msgstr ""
+
#: scene/3d/sprite_3d.cpp
msgid "Alpha Cut"
msgstr ""
@@ -21493,11 +23240,6 @@ msgstr "Expresión"
msgid "Max Force"
msgstr "Error"
-#: scene/3d/vehicle_body.cpp
-#, fuzzy
-msgid "Relaxation"
-msgstr "Separación:"
-
#: scene/3d/visibility_notifier.cpp
msgid "AABB"
msgstr ""
@@ -21642,7 +23384,7 @@ msgstr "Tiempo de Crossfade (s):"
#: scene/animation/animation_blend_tree.cpp
#, fuzzy
-msgid "autorestart_"
+msgid "Auto Restart"
msgstr "Auto Reiniciar:"
#: scene/animation/animation_blend_tree.cpp
@@ -21728,13 +23470,6 @@ msgstr "Opciones de Clase:"
msgid "Default Blend Time"
msgstr "Theme Predeterminado"
-#: scene/animation/animation_player.cpp scene/animation/animation_tree.cpp
-#: scene/animation/animation_tree_player.cpp
-#: servers/audio/effects/audio_effect_delay.cpp
-#, fuzzy
-msgid "Active"
-msgstr "Acción"
-
#: scene/animation/animation_player.cpp
msgid "Method Call Mode"
msgstr ""
@@ -21860,10 +23595,6 @@ msgstr "Reemparentar Nodo"
msgid "Max Iterations"
msgstr "Crear Función"
-#: scene/animation/tween.cpp scene/resources/texture.cpp
-msgid "Repeat"
-msgstr ""
-
#: scene/animation/tween.cpp
msgid "Playback Process Mode"
msgstr ""
@@ -21894,20 +23625,6 @@ msgstr "Modo Seleccionar"
msgid "Alignment"
msgstr ""
-#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
-#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
-#: scene/resources/style_box.cpp
-#, fuzzy
-msgid "Horizontal"
-msgstr "Horizontal:"
-
-#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
-#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
-#: scene/resources/style_box.cpp
-#, fuzzy
-msgid "Vertical"
-msgstr "Vertical:"
-
#: scene/gui/base_button.cpp
#, fuzzy
msgid "Shortcut In Tooltip"
@@ -22010,10 +23727,6 @@ msgid "HSV"
msgstr "HSV"
#: scene/gui/color_picker.cpp
-msgid "Raw"
-msgstr "Raw"
-
-#: scene/gui/color_picker.cpp
msgid "Switch between hexadecimal and code values."
msgstr "Cambiar entre valores hexadecimales y de código."
@@ -22081,6 +23794,31 @@ msgid "Focus"
msgstr "Foco en Ruta"
#: scene/gui/control.cpp
+msgid "Neighbour Left"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Neighbour Top"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Neighbour Right"
+msgstr ""
+
+#: scene/gui/control.cpp
+#, fuzzy
+msgid "Neighbour Bottom"
+msgstr "Centro Inferior"
+
+#: scene/gui/control.cpp
+msgid "Next"
+msgstr "Siguiente"
+
+#: scene/gui/control.cpp
+msgid "Previous"
+msgstr "Anterior"
+
+#: scene/gui/control.cpp
msgid "Mouse"
msgstr ""
@@ -22118,7 +23856,7 @@ msgid "Dialog"
msgstr "Dialogo XForm"
#: scene/gui/dialogs.cpp
-msgid "Hide On Ok"
+msgid "Hide On OK"
msgstr ""
#: scene/gui/dialogs.cpp scene/gui/label.cpp
@@ -22217,7 +23955,7 @@ msgid "Timers"
msgstr "Tiempo"
#: scene/gui/item_list.cpp scene/gui/popup_menu.cpp scene/gui/tree.cpp
-msgid "Incremental Search Max Interval (msec)"
+msgid "Incremental Search Max Interval Msec"
msgstr ""
#: scene/gui/item_list.cpp scene/gui/tree.cpp
@@ -22804,6 +24542,26 @@ msgstr "Centro Izquierda"
msgid "Nine Patch Stretch"
msgstr "Modo de Interpolación"
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Left"
+msgstr "Asignar Margen"
+
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Top"
+msgstr "Asignar Margen"
+
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Right"
+msgstr "Asignar Margen"
+
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Bottom"
+msgstr "Modo Seleccionar"
+
#: scene/gui/tree.cpp
msgid "Custom Minimum Height"
msgstr ""
@@ -22841,8 +24599,9 @@ msgid "Paused"
msgstr ""
#: scene/gui/video_player.cpp
-msgid "Buffering (msec)"
-msgstr ""
+#, fuzzy
+msgid "Buffering Msec"
+msgstr "Vista Anterior"
#: scene/gui/video_player.cpp
#, fuzzy
@@ -23204,6 +24963,22 @@ msgid "Shadow Atlas"
msgstr "Nuevo Atlas"
#: scene/main/viewport.cpp
+msgid "Quad 0"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 1"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 2"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 3"
+msgstr ""
+
+#: scene/main/viewport.cpp
#, fuzzy
msgid "Canvas Transform"
msgstr "Reestablecer Transform"
@@ -23218,6 +24993,11 @@ msgid "Tooltip Delay (sec)"
msgstr ""
#: scene/register_scene_types.cpp
+#, fuzzy
+msgid "Swap OK Cancel"
+msgstr "Cancelar"
+
+#: scene/register_scene_types.cpp
msgid "Use hiDPI"
msgstr ""
@@ -23232,21 +25012,6 @@ msgid "Custom Font"
msgstr "CustomNode"
#: scene/resources/audio_stream_sample.cpp
-#, fuzzy
-msgid "Loop Mode"
-msgstr "Modo Mover"
-
-#: scene/resources/audio_stream_sample.cpp
-#, fuzzy
-msgid "Loop Begin"
-msgstr "Modo Mover"
-
-#: scene/resources/audio_stream_sample.cpp
-#, fuzzy
-msgid "Loop End"
-msgstr "Modo Mover"
-
-#: scene/resources/audio_stream_sample.cpp
#: servers/audio/effects/audio_stream_generator.cpp servers/audio_server.cpp
#, fuzzy
msgid "Mix Rate"
@@ -23306,6 +25071,17 @@ msgstr "Opciones Extra:"
#: scene/resources/dynamic_font.cpp
#, fuzzy
+msgid "Char"
+msgstr "Caracteres válidos:"
+
+#: scene/resources/dynamic_font.cpp scene/resources/world.cpp
+#: scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Space"
+msgstr "Escena Principal"
+
+#: scene/resources/dynamic_font.cpp
+#, fuzzy
msgid "Font"
msgstr "Fuentes"
@@ -23533,6 +25309,43 @@ msgid "Glow"
msgstr ""
#: scene/resources/environment.cpp
+#, fuzzy
+msgid "Levels"
+msgstr "Desarrolladores"
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "1"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "2"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "3"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "4"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "5"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "6"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "7"
+msgstr ""
+
+#: scene/resources/environment.cpp
msgid "Bloom"
msgstr ""
@@ -23625,10 +25438,68 @@ msgid "Next Pass"
msgstr "Plano siguiente"
#: scene/resources/material.cpp
+msgid "Use Shadow To Opacity"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Unshaded"
+msgstr "Mostrar Sin Sombreado"
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Vertex Lighting"
+msgstr "Iluminación directa"
+
+#: scene/resources/material.cpp
+msgid "No Depth Test"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Use Point Size"
+msgstr "Vista Frontal"
+
+#: scene/resources/material.cpp
+msgid "World Triplanar"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Fixed Size"
+msgstr "Vista Frontal"
+
+#: scene/resources/material.cpp
+msgid "Albedo Tex Force sRGB"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Do Not Receive Shadows"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Disable Ambient Light"
+msgstr "Indentar a la Der"
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Ensure Correct Normals"
+msgstr "Transformación Abortada."
+
+#: scene/resources/material.cpp
#, fuzzy
msgid "Vertex Color"
msgstr "Vértice"
+#: scene/resources/material.cpp
+msgid "Use As Albedo"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Is sRGB"
+msgstr ""
+
#: scene/resources/material.cpp servers/visual_server.cpp
#, fuzzy
msgid "Parameters"
@@ -23665,6 +25536,11 @@ msgid "Billboard Mode"
msgstr "Modo Regla"
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Billboard Keep Scale"
+msgstr "Modo Regla"
+
+#: scene/resources/material.cpp
msgid "Grow"
msgstr ""
@@ -23674,6 +25550,10 @@ msgid "Grow Amount"
msgstr "Cantidad:"
#: scene/resources/material.cpp
+msgid "Use Alpha Scissor"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Alpha Scissor Threshold"
msgstr ""
@@ -23705,10 +25585,20 @@ msgid "Metallic Specular"
msgstr ""
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Metallic Texture"
+msgstr "Fuente de Emisión: "
+
+#: scene/resources/material.cpp
msgid "Metallic Texture Channel"
msgstr ""
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Roughness Texture"
+msgstr "Remover Textura"
+
+#: scene/resources/material.cpp
msgid "Roughness Texture Channel"
msgstr ""
@@ -23728,6 +25618,16 @@ msgid "Emission Operator"
msgstr "Colores de Emisión"
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Emission On UV2"
+msgstr "Máscara de Emisión"
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Emission Texture"
+msgstr "Fuente de Emisión: "
+
+#: scene/resources/material.cpp
msgid "NormalMap"
msgstr ""
@@ -23742,6 +25642,11 @@ msgstr "Inclinación al Azar:"
#: scene/resources/material.cpp
#, fuzzy
+msgid "Rim Texture"
+msgstr "Remover Textura"
+
+#: scene/resources/material.cpp
+#, fuzzy
msgid "Clearcoat"
msgstr "Limpiar"
@@ -23751,15 +25656,28 @@ msgid "Clearcoat Gloss"
msgstr "Restablecer Pose"
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Clearcoat Texture"
+msgstr "Editar Tema"
+
+#: scene/resources/material.cpp
msgid "Anisotropy"
msgstr ""
#: scene/resources/material.cpp
+msgid "Anisotropy Flowmap"
+msgstr ""
+
+#: scene/resources/material.cpp
#, fuzzy
msgid "Ambient Occlusion"
msgstr "Oclusión"
#: scene/resources/material.cpp
+msgid "On UV2"
+msgstr ""
+
+#: scene/resources/material.cpp
#, fuzzy
msgid "Texture Channel"
msgstr "Región de Textura"
@@ -23798,6 +25716,11 @@ msgstr "Transición: "
#: scene/resources/material.cpp
#, fuzzy
+msgid "Transmission Texture"
+msgstr "Transición: "
+
+#: scene/resources/material.cpp
+#, fuzzy
msgid "Refraction"
msgstr "Separación:"
@@ -23816,6 +25739,10 @@ msgid "UV1"
msgstr "UV"
#: scene/resources/material.cpp
+msgid "Triplanar"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Triplanar Sharpness"
msgstr ""
@@ -24027,6 +25954,16 @@ msgstr "Editar Tema"
msgid "Point Count"
msgstr "Agregar Puerto de Entrada"
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Scale Random"
+msgstr "Ratio de Escala:"
+
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Scale Curve"
+msgstr "Cerrar Curva"
+
#: scene/resources/physics_material.cpp
msgid "Rough"
msgstr ""
@@ -24089,10 +26026,6 @@ msgid "A"
msgstr ""
#: scene/resources/shader.cpp
-msgid "Code"
-msgstr ""
-
-#: scene/resources/shader.cpp
#, fuzzy
msgid "Custom Defines"
msgstr "Reproducir Escena Personalizada"
@@ -24189,15 +26122,6 @@ msgstr ""
#: scene/resources/texture.cpp
#, fuzzy
-msgid "Storage"
-msgstr "Almacenando Archivo:"
-
-#: scene/resources/texture.cpp
-msgid "Lossy Quality"
-msgstr ""
-
-#: scene/resources/texture.cpp
-#, fuzzy
msgid "Load Path"
msgstr "Cargar Preset"
@@ -24328,11 +26252,6 @@ msgstr "Función de comparación inválida para este tipo."
msgid "Fallback Environment"
msgstr "Ver Entorno"
-#: scene/resources/world.cpp scene/resources/world_2d.cpp
-#, fuzzy
-msgid "Space"
-msgstr "Escena Principal"
-
#: scene/resources/world.cpp
#, fuzzy
msgid "Scenario"
@@ -24413,10 +26332,37 @@ msgstr ""
msgid "Wet"
msgstr ""
-#: servers/audio/effects/audio_effect_compressor.cpp
-msgid "Threshold"
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "Voice"
msgstr ""
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+msgid "Delay (ms)"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_phaser.cpp
+msgid "Rate Hz"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#, fuzzy
+msgid "Depth (ms)"
+msgstr "Profundidad"
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+msgid "Level dB"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+#: servers/audio/effects/audio_effect_panner.cpp
+#, fuzzy
+msgid "Pan"
+msgstr "Plano:"
+
#: servers/audio/effects/audio_effect_compressor.cpp
#: servers/audio/effects/audio_effect_filter.cpp
msgid "Gain"
@@ -24440,20 +26386,6 @@ msgid "Tap 1"
msgstr ""
#: servers/audio/effects/audio_effect_delay.cpp
-msgid "Delay (ms)"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_delay.cpp
-msgid "Level dB"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_delay.cpp
-#: servers/audio/effects/audio_effect_panner.cpp
-#, fuzzy
-msgid "Pan"
-msgstr "Plano:"
-
-#: servers/audio/effects/audio_effect_delay.cpp
msgid "Tap 2"
msgstr ""
@@ -24515,10 +26447,6 @@ msgstr ""
msgid "Range Max Hz"
msgstr ""
-#: servers/audio/effects/audio_effect_phaser.cpp
-msgid "Rate Hz"
-msgstr ""
-
#: servers/audio/effects/audio_effect_pitch_shift.cpp
msgid "Oversampling"
msgstr ""
@@ -24534,7 +26462,7 @@ msgid "Predelay"
msgstr ""
#: servers/audio/effects/audio_effect_reverb.cpp
-msgid "(msec)"
+msgid "Msec"
msgstr ""
#: servers/audio/effects/audio_effect_reverb.cpp
diff --git a/editor/translations/et.po b/editor/translations/et.po
index 2aa61272ad..2a0a9cc58d 100644
--- a/editor/translations/et.po
+++ b/editor/translations/et.po
@@ -21,7 +21,7 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 4.7.2-dev\n"
-#: core/bind/core_bind.cpp
+#: core/bind/core_bind.cpp main/main.cpp
msgid "Tablet Driver"
msgstr ""
@@ -120,8 +120,8 @@ msgstr "Doki asukoht"
#: core/bind/core_bind.cpp editor/editor_settings.cpp main/main.cpp
#: modules/gdscript/gdscript_editor.cpp modules/gridmap/grid_map.cpp
#: modules/mono/csharp_script.cpp modules/visual_script/visual_script_nodes.cpp
-#: scene/2d/tile_map.cpp scene/3d/camera.cpp scene/gui/control.cpp
-#: scene/gui/graph_edit.cpp scene/main/viewport.cpp
+#: scene/2d/tile_map.cpp scene/3d/camera.cpp scene/3d/light.cpp
+#: scene/gui/control.cpp scene/gui/graph_edit.cpp scene/main/viewport.cpp
#: scene/resources/dynamic_font.cpp scene/resources/navigation_mesh.cpp
#: scene/resources/primitive_meshes.cpp scene/resources/sky.cpp
#: scene/resources/style_box.cpp scene/resources/texture.cpp
@@ -222,8 +222,7 @@ msgid "Data"
msgstr ""
#: core/io/file_access_network.cpp core/register_core_types.cpp
-#: editor/editor_settings.cpp editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp main/main.cpp
+#: editor/editor_settings.cpp main/main.cpp
#: modules/gdscript/language_server/gdscript_language_server.cpp
#, fuzzy
msgid "Network"
@@ -498,9 +497,10 @@ msgstr "Eelseadistus"
msgid "Relative"
msgstr ""
-#: core/os/input_event.cpp scene/2d/camera_2d.cpp
-#: scene/3d/interpolated_camera.cpp scene/animation/animation_player.cpp
-#: scene/resources/environment.cpp
+#: core/os/input_event.cpp scene/2d/camera_2d.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/interpolated_camera.cpp
+#: scene/animation/animation_player.cpp scene/resources/environment.cpp
+#: scene/resources/particles_material.cpp
#, fuzzy
msgid "Speed"
msgstr "Skaleerimisrežiim"
@@ -549,8 +549,9 @@ msgstr "Kasutus"
msgid "Pitch"
msgstr "Frontaal"
-#: core/os/input_event.cpp scene/2d/physics_body_2d.cpp
-#: scene/3d/physics_body.cpp
+#: core/os/input_event.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/physics_body_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/3d/physics_body.cpp scene/resources/particles_material.cpp
msgid "Velocity"
msgstr ""
@@ -567,6 +568,8 @@ msgid "Controller Value"
msgstr ""
#: core/project_settings.cpp editor/editor_node.cpp main/main.cpp
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/windows/export/export.cpp
#, fuzzy
msgid "Application"
msgstr "Animatsioon"
@@ -584,13 +587,16 @@ msgstr "Projekti sätted..."
#: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp
#: editor/editor_plugin_settings.cpp editor/editor_profiler.cpp
#: editor/project_manager.cpp editor/settings_config_dialog.cpp
-#: modules/gdnative/nativescript/nativescript.cpp scene/2d/area_2d.cpp
-#: scene/3d/area.cpp scene/main/node.cpp
+#: modules/gdnative/nativescript/nativescript.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/osx/export/export.cpp scene/2d/area_2d.cpp scene/3d/area.cpp
+#: scene/main/node.cpp
msgid "Name"
msgstr "Nimi"
#: core/project_settings.cpp editor/editor_help.cpp
-#: modules/visual_script/visual_script_nodes.cpp
+#: modules/visual_script/visual_script_nodes.cpp platform/uwp/export/export.cpp
+#: platform/windows/export/export.cpp
msgid "Description"
msgstr "Kirjeldus"
@@ -626,7 +632,7 @@ msgid "Custom User Dir Name"
msgstr ""
#: core/project_settings.cpp editor/animation_track_editor.cpp
-#: editor/editor_audio_buses.cpp servers/audio_server.cpp
+#: editor/editor_audio_buses.cpp main/main.cpp servers/audio_server.cpp
msgid "Audio"
msgstr "Heli"
@@ -785,10 +791,13 @@ msgstr "Filtreeri sõlmed"
msgid "Sharpen Intensity"
msgstr ""
-#: core/project_settings.cpp editor/editor_node.cpp editor/editor_settings.cpp
-#: editor/plugins/script_editor_plugin.cpp editor/project_export.cpp
-#: main/main.cpp modules/gdscript/gdscript.cpp
-#: modules/visual_script/visual_script.cpp scene/3d/room_manager.cpp
+#: core/project_settings.cpp editor/editor_export.cpp editor/editor_node.cpp
+#: editor/editor_settings.cpp editor/plugins/script_editor_plugin.cpp
+#: editor/project_export.cpp main/main.cpp modules/gdscript/gdscript.cpp
+#: modules/visual_script/visual_script.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp scene/3d/room_manager.cpp
#: scene/main/scene_tree.cpp scene/resources/shape_2d.cpp
#: servers/visual_server.cpp
msgid "Debug"
@@ -1019,6 +1028,7 @@ msgid "Subsurface Scattering"
msgstr ""
#: drivers/gles3/rasterizer_scene_gles3.cpp
+#: editor/import/resource_importer_texture.cpp
#: editor/plugins/spatial_editor_plugin.cpp modules/gltf/gltf_node.cpp
#: modules/gridmap/grid_map.cpp scene/2d/cpu_particles_2d.cpp
#: scene/2d/node_2d.cpp scene/2d/parallax_layer.cpp scene/2d/polygon_2d.cpp
@@ -1316,6 +1326,7 @@ msgid "Editors"
msgstr "Redaktor"
#: editor/animation_track_editor.cpp editor/editor_settings.cpp
+#: editor/import/resource_importer_scene.cpp
#: editor/plugins/animation_player_editor_plugin.cpp editor/scene_tree_dock.cpp
#: scene/2d/animated_sprite.cpp scene/2d/cpu_particles_2d.cpp
#: scene/2d/sprite.cpp scene/3d/cpu_particles.cpp scene/3d/sprite_3d.cpp
@@ -1540,14 +1551,14 @@ msgstr "Animatsiooni sammu väärtus."
msgid "Seconds"
msgstr "Sekundid"
-#: editor/animation_track_editor.cpp
+#: editor/animation_track_editor.cpp editor/import/resource_importer_scene.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp main/main.cpp
#: scene/resources/texture.cpp
msgid "FPS"
msgstr "K/S"
#: editor/animation_track_editor.cpp editor/editor_plugin_settings.cpp
-#: editor/editor_resource_picker.cpp
+#: editor/editor_resource_picker.cpp editor/import/resource_importer_wav.cpp
#: editor/plugins/polygon_2d_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
@@ -2500,7 +2511,9 @@ msgid "Remove Autoload"
msgstr ""
#: editor/editor_autoload_settings.cpp editor/editor_plugin_settings.cpp
-#: modules/gdscript/gdscript.cpp scene/2d/polygon_2d.cpp scene/3d/area.cpp
+#: modules/gdscript/gdscript.cpp platform/android/export/export_plugin.cpp
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#: scene/2d/polygon_2d.cpp scene/3d/area.cpp scene/3d/physics_joint.cpp
#: scene/3d/reflection_probe.cpp scene/main/canvas_layer.cpp
#: scene/resources/material.cpp servers/visual_server.cpp
msgid "Enable"
@@ -2671,6 +2684,58 @@ msgstr ""
#: editor/editor_export.cpp platform/android/export/export_plugin.cpp
#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Custom Template"
+msgstr "Redaktor"
+
+#: editor/editor_export.cpp editor/project_export.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp
+msgid "Release"
+msgstr ""
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Binary Format"
+msgstr "Formaat"
+
+#: editor/editor_export.cpp
+msgid "64 Bits"
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Embed PCK"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Texture Format"
+msgstr "Pööramisrežiim"
+
+#: editor/editor_export.cpp
+msgid "BPTC"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "S3TC"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "ETC"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "ETC2"
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "No BPTC Fallbacks"
+msgstr ""
+
+#: editor/editor_export.cpp platform/android/export/export_plugin.cpp
+#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
msgid "Custom debug template not found."
msgstr ""
@@ -2855,6 +2920,7 @@ msgid "Make Current"
msgstr ""
#: editor/editor_feature_profile.cpp editor/editor_node.cpp
+#: editor/import/resource_importer_scene.cpp
#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
msgid "Import"
msgstr "Impordi"
@@ -2985,8 +3051,11 @@ msgstr "Õnnestus!"
msgid "Display Mode"
msgstr "Kuva varjutamata"
-#: editor/editor_file_dialog.cpp main/main.cpp modules/csg/csg_shape.cpp
-#: modules/visual_script/visual_script_nodes.cpp
+#: editor/editor_file_dialog.cpp
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+#: editor/import/resource_importer_wav.cpp main/main.cpp
+#: modules/csg/csg_shape.cpp modules/visual_script/visual_script_nodes.cpp
#: modules/visual_script/visual_script_yield_nodes.cpp scene/2d/light_2d.cpp
#: scene/2d/physics_body_2d.cpp scene/2d/tile_map.cpp
#: scene/3d/baked_lightmap.cpp scene/3d/light.cpp scene/3d/physics_body.cpp
@@ -3125,7 +3194,9 @@ msgstr "(Taas)impordin varasid"
msgid "Reimport Missing Imported Files"
msgstr ""
-#: editor/editor_help.cpp
+#: editor/editor_help.cpp scene/2d/camera_2d.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/resources/dynamic_font.cpp
+#: scene/resources/style_box.cpp
msgid "Top"
msgstr "Ülaosa"
@@ -3178,6 +3249,7 @@ msgid "Fonts"
msgstr ""
#: editor/editor_help.cpp editor/plugins/theme_editor_plugin.cpp
+#: platform/iphone/export/export.cpp
msgid "Icons"
msgstr ""
@@ -3341,7 +3413,9 @@ msgstr ""
msgid "Pin value [Disabled because '%s' is editor-only]"
msgstr ""
-#: editor/editor_inspector.cpp editor/scene_tree_dock.cpp
+#: editor/editor_inspector.cpp
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+#: editor/scene_tree_dock.cpp
#: modules/visual_script/visual_script_func_nodes.cpp
#: modules/visual_script/visual_script_nodes.cpp
#: modules/visual_script/visual_script_property_selector.cpp
@@ -3660,6 +3734,14 @@ msgid "Quick Open Script..."
msgstr "Ava kiiresti skript..."
#: editor/editor_node.cpp
+msgid "Save & Reload"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Save changes to '%s' before reloading?"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "Save & Close"
msgstr ""
@@ -3772,6 +3854,10 @@ msgid "Open Project Manager?"
msgstr "Ava projekti juht?"
#: editor/editor_node.cpp
+msgid "Save changes to the following scene(s) before reloading?"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "Save & Quit"
msgstr "Salvesta ja välju"
@@ -4028,8 +4114,8 @@ msgstr "Materjali muutused"
#: editor/editor_node.cpp
#, fuzzy
-msgid "Translate Properties"
-msgstr "Atribuudid"
+msgid "Localize Settings"
+msgstr "Tõlked"
#: editor/editor_node.cpp
#, fuzzy
@@ -4046,8 +4132,8 @@ msgstr "Ülevaataja"
#: editor/editor_node.cpp
#, fuzzy
-msgid "Capitalize Properties"
-msgstr "Atribuudid"
+msgid "Default Property Name Style"
+msgstr "Kinemaatiline eelvaade"
#: editor/editor_node.cpp
msgid "Default Float Step"
@@ -4616,7 +4702,9 @@ msgstr "Paigaldatud pistikprogrammid:"
msgid "Update"
msgstr "Uuenda"
-#: editor/editor_plugin_settings.cpp
+#: editor/editor_plugin_settings.cpp platform/android/export/export_plugin.cpp
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp
#, fuzzy
msgid "Version"
msgstr "Versioon:"
@@ -5600,7 +5688,7 @@ msgstr ""
msgid "Rect Custom Position"
msgstr "Doki asukoht"
-#: editor/editor_settings.cpp
+#: editor/editor_settings.cpp platform/android/export/export_plugin.cpp
msgid "Screen"
msgstr ""
@@ -5627,6 +5715,19 @@ msgid "Editor SSL Certificates"
msgstr "Redaktori sätted"
#: editor/editor_settings.cpp
+msgid "HTTP Proxy"
+msgstr ""
+
+#: editor/editor_settings.cpp
+msgid "Host"
+msgstr ""
+
+#: editor/editor_settings.cpp editor/fileserver/editor_file_server.cpp
+#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp
+msgid "Port"
+msgstr ""
+
+#: editor/editor_settings.cpp
msgid "Project Manager"
msgstr "projektihaldur"
@@ -5669,7 +5770,8 @@ msgstr ""
msgid "String Color"
msgstr "Salvestan faili:"
-#: editor/editor_settings.cpp
+#: editor/editor_settings.cpp platform/javascript/export/export.cpp
+#: platform/uwp/export/export.cpp
msgid "Background Color"
msgstr ""
@@ -5835,22 +5937,6 @@ msgid "Starting the download..."
msgstr ""
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "HTTP Proxy"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Host"
-msgstr ""
-
-#: editor/export_template_manager.cpp editor/fileserver/editor_file_server.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp main/main.cpp
-#: modules/mono/mono_gd/gd_mono.cpp
-msgid "Port"
-msgstr ""
-
-#: editor/export_template_manager.cpp
msgid "Error requesting URL:"
msgstr ""
@@ -6096,6 +6182,7 @@ msgstr ""
#: editor/fileserver/editor_file_server.cpp
#: editor/plugins/version_control_editor_plugin.cpp
+#: platform/uwp/export/export.cpp platform/windows/export/export.cpp
msgid "Password"
msgstr ""
@@ -6461,6 +6548,114 @@ msgstr ""
msgid "Use Ambient"
msgstr ""
+#: editor/import/resource_importer_bitmask.cpp
+#, fuzzy
+msgid "Create From"
+msgstr "Loo kaust"
+
+#: editor/import/resource_importer_bitmask.cpp
+#: servers/audio/effects/audio_effect_compressor.cpp
+msgid "Threshold"
+msgstr ""
+
+#: editor/import/resource_importer_csv_translation.cpp
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_scene.cpp
+#: editor/import/resource_importer_texture.cpp
+#: editor/import/resource_importer_wav.cpp scene/3d/gi_probe.cpp
+#, fuzzy
+msgid "Compress"
+msgstr "Komponendid"
+
+#: editor/import/resource_importer_csv_translation.cpp
+msgid "Delimiter"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+msgid "No BPTC If RGB"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/sprite_3d.cpp
+#: scene/resources/material.cpp scene/resources/particles_material.cpp
+#: scene/resources/texture.cpp
+msgid "Flags"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/animation/tween.cpp
+#: scene/resources/texture.cpp
+msgid "Repeat"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/2d/light_2d.cpp
+#: scene/gui/control.cpp scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Filter"
+msgstr "Filtreeri sõlmed"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Mipmaps"
+msgstr "Signaalid"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+msgid "Anisotropic"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+msgid "sRGB"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+msgid "Slices"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
+#: scene/resources/style_box.cpp
+#, fuzzy
+msgid "Horizontal"
+msgstr "Eemalda horisontaalne juht"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
+#: scene/resources/style_box.cpp
+#, fuzzy
+msgid "Vertical"
+msgstr "Tipud"
+
+#: editor/import/resource_importer_obj.cpp
+#, fuzzy
+msgid "Generate Tangents"
+msgstr "Liiguta Bezieri punkte"
+
+#: editor/import/resource_importer_obj.cpp
+#, fuzzy
+msgid "Scale Mesh"
+msgstr "Skaleerimisrežiim"
+
+#: editor/import/resource_importer_obj.cpp
+msgid "Offset Mesh"
+msgstr ""
+
+#: editor/import/resource_importer_obj.cpp
+#: editor/import/resource_importer_scene.cpp
+msgid "Octahedral Compression"
+msgstr ""
+
+#: editor/import/resource_importer_obj.cpp
+#, fuzzy
+msgid "Optimize Mesh Flags"
+msgstr "Suurus: "
+
#: editor/import/resource_importer_scene.cpp
msgid "Import as Single Scene"
msgstr ""
@@ -6501,6 +6696,152 @@ msgstr ""
msgid "Import as Multiple Scenes+Materials"
msgstr ""
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Nodes"
+msgstr "Sõlm"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Root Type"
+msgstr "Muuda tüüpi"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Root Name"
+msgstr "Sõlme nimi:"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Root Scale"
+msgstr "Skaleerimisrežiim"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Custom Script"
+msgstr "Kustuta sõlm(ed)"
+
+#: editor/import/resource_importer_scene.cpp scene/resources/texture.cpp
+#, fuzzy
+msgid "Storage"
+msgstr "Salvestan faili:"
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Use Legacy Names"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+#, fuzzy
+msgid "Materials"
+msgstr "Materjali muutused"
+
+#: editor/import/resource_importer_scene.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Location"
+msgstr "Tõlked"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Keep On Reimport"
+msgstr "Taasimpordi"
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+msgid "Meshes"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Ensure Tangents"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Light Baking"
+msgstr "Paremvaade"
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Lightmap Texel Size"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+msgid "Skins"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Use Named Skins"
+msgstr "Signaalid"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "External Files"
+msgstr "Ava fail"
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Store In Subdir"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Filter Script"
+msgstr "Filtreeri sõlmed"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Keep Custom Tracks"
+msgstr "Redaktor"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Optimizer"
+msgstr "Optimiseeri"
+
+#: editor/import/resource_importer_scene.cpp main/main.cpp
+#: modules/mono/mono_gd/gd_mono.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp scene/2d/camera_2d.cpp scene/2d/light_2d.cpp
+#: scene/2d/navigation_polygon.cpp scene/2d/ray_cast_2d.cpp scene/2d/sprite.cpp
+#: scene/2d/y_sort.cpp scene/3d/audio_stream_player_3d.cpp
+#: scene/3d/baked_lightmap.cpp scene/3d/interpolated_camera.cpp
+#: scene/3d/light.cpp scene/3d/navigation_mesh_instance.cpp
+#: scene/3d/physics_joint.cpp scene/3d/ray_cast.cpp scene/3d/sprite_3d.cpp
+#: scene/gui/graph_edit.cpp scene/gui/rich_text_label.cpp
+#: scene/resources/curve.cpp scene/resources/environment.cpp
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Enabled"
+msgstr "Luba"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Max Linear Error"
+msgstr "Viga:"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Max Angular Error"
+msgstr "Viga:"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Max Angle"
+msgstr "Väärtus"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Remove Unused Tracks"
+msgstr "Eemalda animatsiooni rada"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Clips"
+msgstr "Animatsiooniklipid"
+
+#: editor/import/resource_importer_scene.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/particles_2d.cpp scene/3d/area.cpp scene/3d/cpu_particles.cpp
+#: scene/3d/particles.cpp scene/resources/environment.cpp
+msgid "Amount"
+msgstr ""
+
#: editor/import/resource_importer_scene.cpp
#: editor/plugins/mesh_library_editor_plugin.cpp
msgid "Import Scene"
@@ -6542,12 +6883,146 @@ msgstr ""
msgid "Saving..."
msgstr ""
+#: editor/import/resource_importer_texture.cpp scene/resources/texture.cpp
+msgid "Lossy Quality"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "HDR Mode"
+msgstr "Valimisrežiim"
+
+#: editor/import/resource_importer_texture.cpp
+msgid "BPTC LDR"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/mesh_instance_2d.cpp scene/2d/multimesh_instance_2d.cpp
+#: scene/2d/particles_2d.cpp scene/2d/sprite.cpp scene/resources/style_box.cpp
+msgid "Normal Map"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Process"
+msgstr "Liigutamisrežiim"
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Fix Alpha Border"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Premult Alpha"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Hdr As Srgb"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Invert Color"
+msgstr "Muuda tüüpi"
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Normal Map Invert Y"
+msgstr "Formaat"
+
+#: editor/import/resource_importer_texture.cpp
+#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
+#: scene/audio/audio_stream_player.cpp scene/gui/video_player.cpp
+msgid "Stream"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Size Limit"
+msgstr "Suurus: "
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Detect 3D"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "SVG"
+msgstr ""
+
#: editor/import/resource_importer_texture.cpp
msgid ""
"Warning, no suitable PC VRAM compression enabled in Project Settings. This "
"texture will not display correctly on PC."
msgstr ""
+#: editor/import/resource_importer_texture_atlas.cpp
+#, fuzzy
+msgid "Atlas File"
+msgstr "Kõik failid (*)"
+
+#: editor/import/resource_importer_texture_atlas.cpp
+#, fuzzy
+msgid "Import Mode"
+msgstr "Pööramisrežiim"
+
+#: editor/import/resource_importer_texture_atlas.cpp
+msgid "Crop To Region"
+msgstr ""
+
+#: editor/import/resource_importer_texture_atlas.cpp
+msgid "Trim Alpha Border From Region"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp scene/2d/physics_body_2d.cpp
+#, fuzzy
+msgid "Force"
+msgstr "Ressursi tee"
+
+#: editor/import/resource_importer_wav.cpp
+msgid "8 Bit"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp main/main.cpp
+#: modules/mono/editor/csharp_project.cpp modules/mono/mono_gd/gd_mono.cpp
+msgid "Mono"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+#, fuzzy
+msgid "Max Rate"
+msgstr "Väärtus"
+
+#: editor/import/resource_importer_wav.cpp
+#, fuzzy
+msgid "Max Rate Hz"
+msgstr "Väärtus"
+
+#: editor/import/resource_importer_wav.cpp
+msgid "Trim"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+#, fuzzy
+msgid "Normalize"
+msgstr "Formaat"
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+#, fuzzy
+msgid "Loop Mode"
+msgstr "Liigutamisrežiim"
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+#, fuzzy
+msgid "Loop Begin"
+msgstr "Liigutamisrežiim"
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+#, fuzzy
+msgid "Loop End"
+msgstr "Liigutamisrežiim"
+
#: editor/import_defaults_editor.cpp
#, fuzzy
msgid "Select Importer"
@@ -6620,6 +7095,29 @@ msgstr ""
#: editor/inspector_dock.cpp
#, fuzzy
+msgid "Property Name Style"
+msgstr "Atribuudi rada"
+
+#: editor/inspector_dock.cpp scene/gui/color_picker.cpp
+msgid "Raw"
+msgstr ""
+
+#: editor/inspector_dock.cpp
+#, fuzzy
+msgid "Capitalized"
+msgstr "Atribuudid"
+
+#: editor/inspector_dock.cpp
+#, fuzzy
+msgid "Localized"
+msgstr "Formaat"
+
+#: editor/inspector_dock.cpp
+msgid "Localization not available for current language."
+msgstr ""
+
+#: editor/inspector_dock.cpp
+#, fuzzy
msgid "Copy Properties"
msgstr "Atribuudid"
@@ -7654,18 +8152,24 @@ msgid "License (Z-A)"
msgstr "Litsents (Z-A)"
#: editor/plugins/asset_library_editor_plugin.cpp
+msgctxt "Pagination"
msgid "First"
msgstr ""
-#: editor/plugins/asset_library_editor_plugin.cpp scene/gui/control.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgctxt "Pagination"
msgid "Previous"
-msgstr ""
+msgstr "Eelmine skript"
-#: editor/plugins/asset_library_editor_plugin.cpp scene/gui/control.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgctxt "Pagination"
msgid "Next"
-msgstr ""
+msgstr "Virnakaadrid"
#: editor/plugins/asset_library_editor_plugin.cpp
+msgctxt "Pagination"
msgid "Last"
msgstr ""
@@ -7900,19 +8404,19 @@ msgid ""
"margins."
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Top Left"
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Top Right"
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Bottom Right"
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Bottom Left"
msgstr ""
@@ -8611,6 +9115,19 @@ msgstr ""
msgid "Gradient Edited"
msgstr ""
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+msgid "Swap GradientTexture2D Fill Points"
+msgstr ""
+
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+msgid "Swap Gradient Fill Points"
+msgstr ""
+
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+#, fuzzy
+msgid "Toggle Grid Snap"
+msgstr "Lülita jagamisrežiim sisse/välja"
+
#: editor/plugins/item_list_editor_plugin.cpp
msgid "Item %d"
msgstr ""
@@ -8824,9 +9341,10 @@ msgid ""
"%s"
msgstr ""
-#: editor/plugins/mesh_library_editor_plugin.cpp modules/gridmap/grid_map.cpp
-msgid "Mesh Library"
-msgstr ""
+#: editor/plugins/mesh_library_editor_plugin.cpp
+#, fuzzy
+msgid "MeshLibrary"
+msgstr "Teek"
#: editor/plugins/mesh_library_editor_plugin.cpp
msgid "Add Item"
@@ -9804,8 +10322,8 @@ msgstr ""
msgid "Source"
msgstr ""
-#: editor/plugins/script_text_editor.cpp scene/3d/interpolated_camera.cpp
-#: scene/animation/skeleton_ik.cpp
+#: editor/plugins/script_text_editor.cpp platform/uwp/export/export.cpp
+#: scene/3d/interpolated_camera.cpp scene/animation/skeleton_ik.cpp
msgid "Target"
msgstr ""
@@ -10787,7 +11305,9 @@ msgstr ""
#: editor/plugins/sprite_frames_editor_plugin.cpp
#: modules/gltf/gltf_animation.cpp modules/minimp3/audio_stream_mp3.cpp
-#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp scene/2d/path_2d.cpp
+#: modules/minimp3/resource_importer_mp3.cpp
+#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp
+#: modules/stb_vorbis/resource_importer_ogg_vorbis.cpp scene/2d/path_2d.cpp
#: scene/3d/path.cpp scene/resources/animation.cpp scene/resources/material.cpp
msgid "Loop"
msgstr "Kordus"
@@ -11688,8 +12208,9 @@ msgstr ""
msgid "Priority"
msgstr ""
-#: editor/plugins/tile_set_editor_plugin.cpp main/main.cpp scene/gui/button.cpp
-#: scene/gui/item_list.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp main/main.cpp
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#: scene/gui/button.cpp scene/gui/item_list.cpp
msgid "Icon"
msgstr ""
@@ -12989,10 +13510,6 @@ msgid ""
msgstr ""
#: editor/project_export.cpp
-msgid "Release"
-msgstr ""
-
-#: editor/project_export.cpp
msgid "Exporting All"
msgstr ""
@@ -14776,6 +15293,7 @@ msgid "Change AudioStreamPlayer3D Emission Angle"
msgstr ""
#: editor/spatial_editor_gizmos.cpp modules/gltf/gltf_node.cpp
+#: platform/osx/export/export.cpp
msgid "Camera"
msgstr ""
@@ -15040,7 +15558,8 @@ msgstr ""
msgid "Use Nvidia Rect Flicker Workaround"
msgstr ""
-#: main/main.cpp platform/uwp/os_uwp.cpp
+#: main/main.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp platform/uwp/os_uwp.cpp
#, fuzzy
msgid "Display"
msgstr "Kuva kõik"
@@ -15098,19 +15617,6 @@ msgstr ""
msgid "Allowed"
msgstr ""
-#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp scene/2d/camera_2d.cpp
-#: scene/2d/light_2d.cpp scene/2d/navigation_polygon.cpp
-#: scene/2d/ray_cast_2d.cpp scene/2d/sprite.cpp scene/2d/y_sort.cpp
-#: scene/3d/audio_stream_player_3d.cpp scene/3d/baked_lightmap.cpp
-#: scene/3d/interpolated_camera.cpp scene/3d/light.cpp
-#: scene/3d/navigation_mesh_instance.cpp scene/3d/ray_cast.cpp
-#: scene/3d/sprite_3d.cpp scene/gui/graph_edit.cpp
-#: scene/gui/rich_text_label.cpp scene/resources/curve.cpp
-#: scene/resources/environment.cpp
-#, fuzzy
-msgid "Enabled"
-msgstr "Luba"
-
#: main/main.cpp
msgid "Intended Usage"
msgstr ""
@@ -15139,13 +15645,14 @@ msgstr ""
msgid "Handheld"
msgstr ""
-#: main/main.cpp
+#: main/main.cpp platform/javascript/export/export.cpp
+#: platform/uwp/export/export.cpp
#, fuzzy
msgid "Orientation"
msgstr "Ava dokumentatsioon"
#: main/main.cpp scene/gui/scroll_container.cpp scene/gui/text_edit.cpp
-#: scene/main/scene_tree.cpp
+#: scene/main/scene_tree.cpp scene/register_scene_types.cpp
#, fuzzy
msgid "Common"
msgstr "Kogukond"
@@ -15187,7 +15694,7 @@ msgstr ""
#: main/main.cpp
#, fuzzy
-msgid "Frame Delay (msec)"
+msgid "Frame Delay Msec"
msgstr "Kaadri aeg (sek)"
#: main/main.cpp
@@ -15310,11 +15817,6 @@ msgstr ""
msgid "Tooltip Position Offset"
msgstr ""
-#: main/main.cpp modules/mono/editor/csharp_project.cpp
-#: modules/mono/mono_gd/gd_mono.cpp
-msgid "Mono"
-msgstr ""
-
#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp
#, fuzzy
msgid "Debugger Agent"
@@ -15868,7 +16370,7 @@ msgstr ""
msgid "Intensity"
msgstr ""
-#: modules/gltf/gltf_light.cpp scene/2d/light_2d.cpp
+#: modules/gltf/gltf_light.cpp scene/2d/light_2d.cpp scene/3d/light.cpp
#, fuzzy
msgid "Range"
msgstr "Muuda"
@@ -16008,11 +16510,6 @@ msgstr ""
msgid "Use Named Skin Binds"
msgstr ""
-#: modules/gltf/gltf_state.cpp scene/3d/physics_joint.cpp
-#, fuzzy
-msgid "Nodes"
-msgstr "Sõlm"
-
#: modules/gltf/gltf_state.cpp
#, fuzzy
msgid "Buffer Views"
@@ -16023,15 +16520,6 @@ msgid "Accessors"
msgstr ""
#: modules/gltf/gltf_state.cpp
-msgid "Meshes"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp
-#, fuzzy
-msgid "Materials"
-msgstr "Materjali muutused"
-
-#: modules/gltf/gltf_state.cpp
#, fuzzy
msgid "Scene Name"
msgstr "Stseeni tee:"
@@ -16047,15 +16535,11 @@ msgstr "Sõlm"
msgid "Textures"
msgstr ""
-#: modules/gltf/gltf_state.cpp
+#: modules/gltf/gltf_state.cpp platform/uwp/export/export.cpp
msgid "Images"
msgstr ""
#: modules/gltf/gltf_state.cpp
-msgid "Skins"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp
msgid "Cameras"
msgstr ""
@@ -16087,10 +16571,14 @@ msgid "Src Image"
msgstr ""
#: modules/gridmap/grid_map.cpp
-msgid "Physics Material"
+msgid "Mesh Library"
msgstr ""
#: modules/gridmap/grid_map.cpp
+msgid "Physics Material"
+msgstr ""
+
+#: modules/gridmap/grid_map.cpp scene/3d/visual_instance.cpp
msgid "Use In Baked Light"
msgstr ""
@@ -16121,6 +16609,7 @@ msgstr "Kustuta sõlm(ed)"
#: modules/gridmap/grid_map.cpp scene/2d/collision_object_2d.cpp
#: scene/2d/tile_map.cpp scene/3d/collision_object.cpp scene/3d/soft_body.cpp
+#: scene/resources/material.cpp
msgid "Mask"
msgstr ""
@@ -16302,7 +16791,9 @@ msgid "Ultra Quality Ray Count"
msgstr ""
#: modules/minimp3/audio_stream_mp3.cpp
+#: modules/minimp3/resource_importer_mp3.cpp
#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp
+#: modules/stb_vorbis/resource_importer_ogg_vorbis.cpp
#, fuzzy
msgid "Loop Offset"
msgstr "Liigutamisrežiim"
@@ -17380,6 +17871,186 @@ msgid "The package must have at least one '.' separator."
msgstr ""
#: platform/android/export/export_plugin.cpp
+msgid "Use Custom Build"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Export Format"
+msgstr "Formaat"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Keystore"
+msgstr "Siluja"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Debug User"
+msgstr "Siluja"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+msgid "Debug Password"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Release User"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Release Password"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "One Click Deploy"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Clear Previous Install"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp scene/resources/shader.cpp
+msgid "Code"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Min SDK"
+msgstr "Suurus: "
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Target SDK"
+msgstr "Ressursi tee"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Package"
+msgstr "Pakin"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Unique Name"
+msgstr "Sõlme nimi:"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Signed"
+msgstr "Signaal"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Classify As Game"
+msgstr "Klass"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Retain Data On Uninstall"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Exclude From Recents"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Graphics"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "OpenGL Debug"
+msgstr "Ava"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "XR Features"
+msgstr "Lubatud funktsioonid:"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "XR Mode"
+msgstr "Pööramisrežiim"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Hand Tracking"
+msgstr "Pakin"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Hand Tracking Frequency"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Passthrough"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Immersive Mode"
+msgstr "Pööramisrežiim"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Support Small"
+msgstr "Toetus"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Support Normal"
+msgstr "Toetus"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Support Large"
+msgstr "Toetus"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Support Xlarge"
+msgstr "Toetus"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "User Data Backup"
+msgstr "Kasutajaliides"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Allow"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Command Line"
+msgstr "Kogukond"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Extra Args"
+msgstr "Klassi valikud:"
+
+#: platform/android/export/export_plugin.cpp
+msgid "APK Expansion"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Salt"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Public Key"
+msgstr "Paljunda võti (võtmed)"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Permissions"
+msgstr "Versioon:"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Custom Permissions"
+msgstr "Mängi kohandatud stseeni"
+
+#: platform/android/export/export_plugin.cpp
msgid "Select device from the list"
msgstr ""
@@ -17671,6 +18342,176 @@ msgid "The character '%s' is not allowed in Identifier."
msgstr ""
#: platform/iphone/export/export.cpp
+msgid "App Store Team ID"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Provisioning Profile UUID Debug"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Code Sign Identity Debug"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Export Method Debug"
+msgstr "Ekspordi võrgu kogum"
+
+#: platform/iphone/export/export.cpp
+msgid "Provisioning Profile UUID Release"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Code Sign Identity Release"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Export Method Release"
+msgstr "Ekspordi võrgu kogum"
+
+#: platform/iphone/export/export.cpp
+msgid "Targeted Device Family"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Info"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Identifier"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Signature"
+msgstr "Signaal"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Short Version"
+msgstr "Versioon:"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Copyright"
+msgstr "Kopeeri"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Capabilities"
+msgstr "Atribuudid"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Access Wi-Fi"
+msgstr "Õnnestus!"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Push Notifications"
+msgstr "Konstant"
+
+#: platform/iphone/export/export.cpp scene/3d/baked_lightmap.cpp
+#, fuzzy
+msgid "User Data"
+msgstr "Kasutajaliides"
+
+#: platform/iphone/export/export.cpp
+msgid "Accessible From Files App"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Accessible From Itunes Sharing"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Privacy"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Camera Usage Description"
+msgstr "Kirjeldus"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Microphone Usage Description"
+msgstr "Atribuutide kirjeldused"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Photolibrary Usage Description"
+msgstr "Atribuutide kirjeldused"
+
+#: platform/iphone/export/export.cpp
+msgid "iPhone 120 X 120"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPhone 180 X 180"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 76 X 76"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 152 X 152"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 167 X 167"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "App Store 1024 X 1024"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Spotlight 40 X 40"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Spotlight 80 X 80"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Storyboard"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Use Launch Screen Storyboard"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Image Scale Mode"
+msgstr "Skaleerimisrežiim"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Custom Image @2x"
+msgstr "Kustuta sõlm(ed)"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Custom Image @3x"
+msgstr "Kustuta sõlm(ed)"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Use Custom BG Color"
+msgstr "Kustuta sõlm(ed)"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Custom BG Color"
+msgstr "Kustuta sõlm(ed)"
+
+#: platform/iphone/export/export.cpp
msgid "App Store Team ID not specified - cannot configure the project."
msgstr ""
@@ -17709,6 +18550,79 @@ msgstr "Ei saanud luua kausta."
#: platform/javascript/export/export.cpp
#, fuzzy
+msgid "Variant"
+msgstr "Versioon:"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Export Type"
+msgstr "Ekspordi"
+
+#: platform/javascript/export/export.cpp
+msgid "VRAM Texture Compression"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "For Desktop"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "For Mobile"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Html"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Export Icon"
+msgstr "Laienda kõik"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Custom Html Shell"
+msgstr "Kustuta sõlm(ed)"
+
+#: platform/javascript/export/export.cpp
+msgid "Head Include"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Canvas Resize Policy"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Focus Canvas On Start"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Experimental Virtual Keyboard"
+msgstr "Filtreeri sõlmed"
+
+#: platform/javascript/export/export.cpp
+msgid "Progressive Web App"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Offline Page"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 144 X 144"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 180 X 180"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 512 X 512"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
msgid "Could not read HTML shell:"
msgstr "Ei saanud luua kausta."
@@ -17822,6 +18736,194 @@ msgid "Unknown object type."
msgstr ""
#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "App Category"
+msgstr "Kategooria:"
+
+#: platform/osx/export/export.cpp
+msgid "High Res"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Location Usage Description"
+msgstr "Kirjeldus"
+
+#: platform/osx/export/export.cpp
+msgid "Address Book Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Calendar Usage Description"
+msgstr "Kirjeldus"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Photos Library Usage Description"
+msgstr "Atribuutide kirjeldused"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Desktop Folder Usage Description"
+msgstr "Meetodi kirjeldused"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Documents Folder Usage Description"
+msgstr "Meetodi kirjeldused"
+
+#: platform/osx/export/export.cpp
+msgid "Downloads Folder Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Network Volumes Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Removable Volumes Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#, fuzzy
+msgid "Codesign"
+msgstr "Sõlm"
+
+#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
+#: platform/windows/export/export.cpp
+msgid "Identity"
+msgstr ""
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#, fuzzy
+msgid "Timestamp"
+msgstr "Aeg"
+
+#: platform/osx/export/export.cpp
+msgid "Hardened Runtime"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Replace Existing Signature"
+msgstr "Ava fail(id)"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Entitlements"
+msgstr "Vidinad"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Custom File"
+msgstr "Kustuta sõlm(ed)"
+
+#: platform/osx/export/export.cpp
+msgid "Allow JIT Code Execution"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Allow Unsigned Executable Memory"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Allow Dyld Environment Variables"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Disable Library Validation"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Audio Input"
+msgstr "Lisa siin"
+
+#: platform/osx/export/export.cpp
+msgid "Address Book"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Calendars"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Photos Library"
+msgstr "Vadade kogum"
+
+#: platform/osx/export/export.cpp
+msgid "Apple Events"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Debugging"
+msgstr "Silumine"
+
+#: platform/osx/export/export.cpp
+msgid "App Sandbox"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Network Server"
+msgstr "Võrgu profileerija"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Network Client"
+msgstr "Võrgu profileerija"
+
+#: platform/osx/export/export.cpp
+msgid "Device Usb"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Device Bluetooth"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Files Downloads"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Files Pictures"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Files Music"
+msgstr "Fail"
+
+#: platform/osx/export/export.cpp
+msgid "Files Movies"
+msgstr ""
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#, fuzzy
+msgid "Custom Options"
+msgstr "Klassi valikud"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Notarization"
+msgstr "Tõlked"
+
+#: platform/osx/export/export.cpp
+msgid "Apple ID Name"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Apple ID Password"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Apple Team ID"
+msgstr ""
+
+#: platform/osx/export/export.cpp
msgid ""
"Note: The notarization process generally takes less than an hour. When the "
"process is completed, you'll receive an email."
@@ -18013,6 +19115,132 @@ msgid "Force Builtin Codesign"
msgstr ""
#: platform/uwp/export/export.cpp
+msgid "Architecture"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Display Name"
+msgstr "Kuva kõik"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Short Name"
+msgstr "Skripti nimi:"
+
+#: platform/uwp/export/export.cpp
+msgid "Publisher"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Publisher Display Name"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Product Guid"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Publisher Guid"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Signing"
+msgstr "Signaal"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Certificate"
+msgstr "Tipud"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Algorithm"
+msgstr "Siluja"
+
+#: platform/uwp/export/export.cpp
+msgid "Major"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Minor"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Build"
+msgstr "Skaleerimisrežiim"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Revision"
+msgstr "Versioon:"
+
+#: platform/uwp/export/export.cpp
+msgid "Landscape"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Portrait"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Landscape Flipped"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Portrait Flipped"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Store Logo"
+msgstr "Skaleerimisrežiim"
+
+#: platform/uwp/export/export.cpp
+msgid "Square 44 X 44 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 71 X 71 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 150 X 150 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 310 X 310 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Wide 310 X 150 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Splash Screen"
+msgstr "Kuvamise kutsungid"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Tiles"
+msgstr "Fail"
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Square 150 X 150"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Wide 310 X 150"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Square 310 X 310"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
msgid "Invalid package short name."
msgstr ""
@@ -18078,15 +19306,53 @@ msgid "Debug Certificate"
msgstr ""
#: platform/uwp/export/export.cpp
-msgid "Debug Password"
+#, fuzzy
+msgid "Debug Algorithm"
+msgstr "Siluja"
+
+#: platform/windows/export/export.cpp
+msgid "Identity Type"
msgstr ""
-#: platform/uwp/export/export.cpp
+#: platform/windows/export/export.cpp
+msgid "Timestamp Server URL"
+msgstr ""
+
+#: platform/windows/export/export.cpp
#, fuzzy
-msgid "Debug Algorithm"
+msgid "Digest Algorithm"
msgstr "Siluja"
#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "File Version"
+msgstr "Versioon:"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Product Version"
+msgstr "Vigane nimi."
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Company Name"
+msgstr "Sõlme nimi:"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Product Name"
+msgstr "Rühmad"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "File Description"
+msgstr "Kirjeldus"
+
+#: platform/windows/export/export.cpp
+msgid "Trademarks"
+msgstr ""
+
+#: platform/windows/export/export.cpp
msgid ""
"The rcedit tool must be configured in the Editor Settings (Export > Windows "
"> Rcedit) to change the icon or app information data."
@@ -18159,12 +19425,14 @@ msgstr "Mängi"
msgid "Centered"
msgstr "Kustuta sõlm(ed)"
-#: scene/2d/animated_sprite.cpp scene/2d/camera_2d.cpp scene/2d/light_2d.cpp
+#: scene/2d/animated_sprite.cpp scene/2d/camera_2d.cpp
+#: scene/2d/cpu_particles_2d.cpp scene/2d/light_2d.cpp
#: scene/2d/parallax_background.cpp scene/2d/parallax_layer.cpp
#: scene/2d/path_2d.cpp scene/2d/polygon_2d.cpp scene/2d/sprite.cpp
-#: scene/3d/path.cpp scene/3d/physics_body.cpp scene/3d/sprite_3d.cpp
-#: scene/gui/graph_node.cpp scene/gui/rich_text_effect.cpp
-#: scene/main/canvas_layer.cpp scene/resources/material.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/path.cpp scene/3d/physics_body.cpp
+#: scene/3d/sprite_3d.cpp scene/gui/graph_node.cpp
+#: scene/gui/rich_text_effect.cpp scene/main/canvas_layer.cpp
+#: scene/resources/material.cpp scene/resources/particles_material.cpp
#: scene/resources/style_box.cpp
msgid "Offset"
msgstr ""
@@ -18236,11 +19504,6 @@ msgstr "Lisa siin"
msgid "Override"
msgstr "Salvesta kõik"
-#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
-#: scene/audio/audio_stream_player.cpp scene/gui/video_player.cpp
-msgid "Stream"
-msgstr ""
-
#: scene/2d/audio_stream_player_2d.cpp scene/audio/audio_stream_player.cpp
#: scene/gui/video_player.cpp servers/audio/effects/audio_effect_amplify.cpp
msgid "Volume dB"
@@ -18265,12 +19528,12 @@ msgid "Stream Paused"
msgstr ""
#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
-#: scene/3d/reflection_probe.cpp scene/3d/visual_instance.cpp
-#: scene/resources/material.cpp
+#: scene/3d/light.cpp scene/3d/reflection_probe.cpp
+#: scene/3d/visual_instance.cpp scene/resources/material.cpp
msgid "Max Distance"
msgstr ""
-#: scene/2d/audio_stream_player_2d.cpp
+#: scene/2d/audio_stream_player_2d.cpp scene/3d/light.cpp
#, fuzzy
msgid "Attenuation"
msgstr "Animatsioon"
@@ -18325,6 +19588,24 @@ msgstr "Liigutamisrežiim"
msgid "Limit"
msgstr ""
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/style_box.cpp
+#, fuzzy
+msgid "Left"
+msgstr "Vasakvaade"
+
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/style_box.cpp
+#, fuzzy
+msgid "Right"
+msgstr "Paremvaade"
+
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/dynamic_font.cpp scene/resources/style_box.cpp
+#, fuzzy
+msgid "Bottom"
+msgstr "Altvaade"
+
#: scene/2d/camera_2d.cpp
msgid "Smoothed"
msgstr ""
@@ -18530,12 +19811,6 @@ msgstr ""
msgid "Emitting"
msgstr "Sätted..."
-#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp scene/3d/area.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
-#: scene/resources/environment.cpp
-msgid "Amount"
-msgstr ""
-
#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp
#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
msgid "Lifetime"
@@ -18597,17 +19872,12 @@ msgstr ""
#: scene/2d/mesh_instance_2d.cpp scene/2d/multimesh_instance_2d.cpp
#: scene/2d/particles_2d.cpp scene/2d/polygon_2d.cpp scene/2d/sprite.cpp
#: scene/3d/sprite_3d.cpp scene/gui/nine_patch_rect.cpp
-#: scene/gui/texture_rect.cpp scene/resources/sky.cpp
-#: scene/resources/style_box.cpp scene/resources/visual_shader_nodes.cpp
+#: scene/gui/texture_rect.cpp scene/resources/material.cpp
+#: scene/resources/sky.cpp scene/resources/style_box.cpp
+#: scene/resources/visual_shader_nodes.cpp
msgid "Texture"
msgstr ""
-#: scene/2d/cpu_particles_2d.cpp scene/2d/mesh_instance_2d.cpp
-#: scene/2d/multimesh_instance_2d.cpp scene/2d/particles_2d.cpp
-#: scene/2d/sprite.cpp scene/resources/style_box.cpp
-msgid "Normal Map"
-msgstr ""
-
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
msgid "Emission Shape"
@@ -18629,10 +19899,10 @@ msgid "Normals"
msgstr "Formaat"
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/3d/sprite_3d.cpp scene/resources/material.cpp
-#: scene/resources/particles_material.cpp scene/resources/texture.cpp
-msgid "Flags"
-msgstr ""
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Align Y"
+msgstr "Määra..."
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
@@ -18652,6 +19922,11 @@ msgid "Initial Velocity"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Velocity Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp servers/physics_2d_server.cpp
#: servers/physics_server.cpp
msgid "Angular Velocity"
@@ -18659,6 +19934,12 @@ msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Velocity Curve"
+msgstr "Valige praegune kaust"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
msgid "Orbit Velocity"
msgstr ""
@@ -18670,6 +19951,23 @@ msgstr "Sirgjooneline"
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Accel"
+msgstr "Õnnestus!"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Accel Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Accel Curve"
+msgstr "Skaleerimisrežiim"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
msgid "Radial Accel"
msgstr ""
@@ -18679,19 +19977,54 @@ msgid "Tangential Accel"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/2d/joints_2d.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/vehicle_body.cpp
-#: scene/resources/particles_material.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/physics_joint.cpp
+#: scene/3d/vehicle_body.cpp scene/resources/particles_material.cpp
#: servers/audio/effects/audio_effect_reverb.cpp
msgid "Damping"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+msgid "Damping Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Damping Curve"
+msgstr "Skaleerimisrežiim"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp scene/3d/light.cpp
+#: scene/resources/particles_material.cpp
msgid "Angle"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+msgid "Angle Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Angle Curve"
+msgstr "Skaleerimisrežiim"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#, fuzzy
+msgid "Scale Amount"
+msgstr "Sisesta võti siia"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+msgid "Scale Amount Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+msgid "Scale Amount Curve"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
msgid "Color Ramp"
msgstr ""
@@ -18706,6 +20039,47 @@ msgstr ""
msgid "Hue Variation"
msgstr "Versioon:"
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Variation"
+msgstr "Versioon:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Variation Random"
+msgstr "Versioon:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Variation Curve"
+msgstr "Versioon:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Speed Random"
+msgstr "Skaleerimisrežiim"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Speed Curve"
+msgstr "Valige praegune kaust"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Offset Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Offset Curve"
+msgstr "Skaleerimisrežiim"
+
#: scene/2d/joints_2d.cpp
msgid "Node A and Node B must be PhysicsBody2Ds"
msgstr ""
@@ -18737,6 +20111,7 @@ msgid "Node B"
msgstr "Sõlm"
#: scene/2d/joints_2d.cpp scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp
+#: scene/3d/light.cpp scene/3d/physics_joint.cpp
#: scene/resources/environment.cpp
msgid "Bias"
msgstr ""
@@ -18745,7 +20120,7 @@ msgstr ""
msgid "Disable Collision"
msgstr ""
-#: scene/2d/joints_2d.cpp
+#: scene/2d/joints_2d.cpp scene/3d/physics_joint.cpp
msgid "Softness"
msgstr ""
@@ -18762,7 +20137,7 @@ msgstr ""
msgid "Rest Length"
msgstr ""
-#: scene/2d/joints_2d.cpp scene/3d/vehicle_body.cpp
+#: scene/2d/joints_2d.cpp scene/3d/physics_joint.cpp scene/3d/vehicle_body.cpp
msgid "Stiffness"
msgstr ""
@@ -18782,7 +20157,7 @@ msgid "Texture Scale"
msgstr ""
#: scene/2d/light_2d.cpp scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp
-#: scene/resources/environment.cpp scene/resources/sky.cpp
+#: scene/3d/light.cpp scene/resources/environment.cpp scene/resources/sky.cpp
msgid "Energy"
msgstr ""
@@ -18822,12 +20197,6 @@ msgstr "Tagavaade"
msgid "Gradient Length"
msgstr "Vaikimisi"
-#: scene/2d/light_2d.cpp scene/gui/control.cpp
-#: scene/resources/navigation_mesh.cpp
-#, fuzzy
-msgid "Filter"
-msgstr "Filtreeri sõlmed"
-
#: scene/2d/light_2d.cpp
#, fuzzy
msgid "Filter Smooth"
@@ -19225,11 +20594,6 @@ msgid "Applied Forces"
msgstr ""
#: scene/2d/physics_body_2d.cpp
-#, fuzzy
-msgid "Force"
-msgstr "Ressursi tee"
-
-#: scene/2d/physics_body_2d.cpp
msgid "Torque"
msgstr ""
@@ -19242,7 +20606,7 @@ msgid "Sync To Physics"
msgstr ""
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-msgid "Moving platform"
+msgid "Moving Platform"
msgstr ""
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
@@ -19251,7 +20615,7 @@ msgstr ""
#: scene/2d/physics_body_2d.cpp scene/2d/touch_screen_button.cpp
#: scene/3d/physics_body.cpp scene/gui/texture_button.cpp
-#: scene/resources/line_shape_2d.cpp
+#: scene/resources/line_shape_2d.cpp scene/resources/material.cpp
#, fuzzy
msgid "Normal"
msgstr "Formaat"
@@ -19474,6 +20838,34 @@ msgid ""
"as parent."
msgstr ""
+#: scene/2d/visibility_notifier_2d.cpp scene/3d/visibility_notifier.cpp
+#, fuzzy
+msgid "Pause Animations"
+msgstr "Animatsioon"
+
+#: scene/2d/visibility_notifier_2d.cpp scene/3d/visibility_notifier.cpp
+msgid "Freeze Bodies"
+msgstr ""
+
+#: scene/2d/visibility_notifier_2d.cpp
+#, fuzzy
+msgid "Pause Particles"
+msgstr "Kleebi parameetrid"
+
+#: scene/2d/visibility_notifier_2d.cpp
+#, fuzzy
+msgid "Pause Animated Sprites"
+msgstr "Muuda animatsiooni sammu"
+
+#: scene/2d/visibility_notifier_2d.cpp
+#, fuzzy
+msgid "Process Parent"
+msgstr "Liigutamisrežiim"
+
+#: scene/2d/visibility_notifier_2d.cpp
+msgid "Physics Process Parent"
+msgstr ""
+
#: scene/3d/area.cpp
msgid "Reverb Bus"
msgstr ""
@@ -19567,6 +20959,7 @@ msgid "Attenuation Filter"
msgstr ""
#: scene/3d/audio_stream_player_3d.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
#: servers/audio/effects/audio_effect_filter.cpp
msgid "Cutoff Hz"
msgstr ""
@@ -19608,11 +21001,6 @@ msgid "Octree"
msgstr ""
#: scene/3d/baked_lightmap.cpp
-#, fuzzy
-msgid "User Data"
-msgstr "Kasutajaliides"
-
-#: scene/3d/baked_lightmap.cpp
msgid "Finding meshes and lights"
msgstr ""
@@ -19860,6 +21248,16 @@ msgid "Ring Axis"
msgstr ""
#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Rotate Y"
+msgstr "Pööramisrežiim"
+
+#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Disable Z"
+msgstr "(Redaktor keelatud)"
+
+#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
msgid "Flatness"
msgstr ""
@@ -19896,16 +21294,11 @@ msgstr ""
msgid "Dynamic Range"
msgstr ""
-#: scene/3d/gi_probe.cpp
+#: scene/3d/gi_probe.cpp scene/3d/light.cpp
msgid "Normal Bias"
msgstr ""
#: scene/3d/gi_probe.cpp
-#, fuzzy
-msgid "Compress"
-msgstr "Komponendid"
-
-#: scene/3d/gi_probe.cpp
msgid "Plotting Meshes"
msgstr ""
@@ -19931,16 +21324,30 @@ msgid "Subdiv"
msgstr ""
#: scene/3d/light.cpp
+msgid "Indirect Energy"
+msgstr ""
+
+#: scene/3d/light.cpp
msgid "Negative"
msgstr ""
#: scene/3d/light.cpp
#, fuzzy
+msgid "Specular"
+msgstr "Skaleerimisrežiim"
+
+#: scene/3d/light.cpp
+#, fuzzy
msgid "Bake Mode"
msgstr "Pööramisrežiim"
#: scene/3d/light.cpp
#, fuzzy
+msgid "Contact"
+msgstr "Jälgija"
+
+#: scene/3d/light.cpp
+#, fuzzy
msgid "Reverse Cull Face"
msgstr "Lähtesta siini valjus"
@@ -19949,11 +21356,28 @@ msgid "Directional Shadow"
msgstr ""
#: scene/3d/light.cpp
+msgid "Split 1"
+msgstr ""
+
+#: scene/3d/light.cpp
+msgid "Split 2"
+msgstr ""
+
+#: scene/3d/light.cpp
+msgid "Split 3"
+msgstr ""
+
+#: scene/3d/light.cpp
msgid "Blend Splits"
msgstr ""
#: scene/3d/light.cpp
#, fuzzy
+msgid "Bias Split Scale"
+msgstr "Uus skript"
+
+#: scene/3d/light.cpp
+#, fuzzy
msgid "Depth Range"
msgstr "Skaleerimisrežiim"
@@ -19979,6 +21403,11 @@ msgstr ""
msgid "Spot"
msgstr ""
+#: scene/3d/light.cpp
+#, fuzzy
+msgid "Angle Attenuation"
+msgstr "Animatsioon"
+
#: scene/3d/mesh_instance.cpp
msgid "Software Skinning"
msgstr ""
@@ -20102,6 +21531,63 @@ msgid "Axis Lock"
msgstr ""
#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Linear X"
+msgstr "Sirgjooneline"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Linear Y"
+msgstr "Sirgjooneline"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Linear Z"
+msgstr "Sirgjooneline"
+
+#: scene/3d/physics_body.cpp
+msgid "Angular X"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Angular Y"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Angular Z"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Motion X"
+msgstr "Animatsioon"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Motion Y"
+msgstr "Animatsioon"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Motion Z"
+msgstr "Animatsioon"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Move Lock X"
+msgstr "Liigutamisrežiim"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Move Lock Y"
+msgstr "Liigutamisrežiim"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Move Lock Z"
+msgstr "Liigutamisrežiim"
+
+#: scene/3d/physics_body.cpp
msgid "Body Offset"
msgstr ""
@@ -20134,6 +21620,15 @@ msgid "Exclude Nodes"
msgstr ""
#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Params"
+msgstr "Materjali muutused"
+
+#: scene/3d/physics_joint.cpp
+msgid "Impulse Clamp"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit"
msgstr ""
@@ -20145,6 +21640,55 @@ msgstr ""
msgid "Lower"
msgstr ""
+#: scene/3d/physics_joint.cpp scene/3d/vehicle_body.cpp
+#, fuzzy
+msgid "Relaxation"
+msgstr "Versioon:"
+
+#: scene/3d/physics_joint.cpp
+msgid "Motor"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Target Velocity"
+msgstr "Sirgjooneline"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Max Impulse"
+msgstr "Väärtus"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit"
+msgstr "Sirgjooneline"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Upper Distance"
+msgstr "Paigalda"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Lower Distance"
+msgstr "Paigalda"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Restitution"
+msgstr "Kirjeldus"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motion"
+msgstr "Sirgjooneline"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Ortho"
+msgstr "Sirgjooneline"
+
#: scene/3d/physics_joint.cpp
msgid "Upper Angle"
msgstr ""
@@ -20155,6 +21699,15 @@ msgstr ""
#: scene/3d/physics_joint.cpp
#, fuzzy
+msgid "Angular Motion"
+msgstr "Animatsioon"
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Ortho"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
msgid "Swing Span"
msgstr "Stseeni salvestamine"
@@ -20163,17 +21716,99 @@ msgid "Twist Span"
msgstr ""
#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit X"
+msgstr "Sirgjooneline"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motor X"
+msgstr "Sirgjooneline"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Force Limit"
+msgstr "Kuvamise kutsungid"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Spring X"
+msgstr "Sirgjooneline"
+
+#: scene/3d/physics_joint.cpp
+msgid "Equilibrium Point"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit X"
msgstr ""
#: scene/3d/physics_joint.cpp
+msgid "Erp"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Motor X"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Spring X"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit Y"
+msgstr "Sirgjooneline"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motor Y"
+msgstr "Sirgjooneline"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Spring Y"
+msgstr "Sirgjooneline"
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit Y"
msgstr ""
#: scene/3d/physics_joint.cpp
+msgid "Angular Motor Y"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Spring Y"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit Z"
+msgstr "Sirgjooneline"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motor Z"
+msgstr "Sirgjooneline"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Spring Z"
+msgstr "Sirgjooneline"
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit Z"
msgstr ""
+#: scene/3d/physics_joint.cpp
+msgid "Angular Motor Z"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Spring Z"
+msgstr ""
+
#: scene/3d/portal.cpp
msgid "The RoomManager should not be a child or grandchild of a Portal."
msgstr ""
@@ -20287,7 +21922,7 @@ msgstr ""
msgid "Use Default Simplify"
msgstr ""
-#: scene/3d/room.cpp
+#: scene/3d/room.cpp scene/3d/room_manager.cpp
msgid "Room Simplify"
msgstr ""
@@ -20325,6 +21960,12 @@ msgstr ""
msgid "Main"
msgstr ""
+#: scene/3d/room_manager.cpp scene/animation/animation_player.cpp
+#: scene/animation/animation_tree.cpp scene/animation/animation_tree_player.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+msgid "Active"
+msgstr ""
+
#: scene/3d/room_manager.cpp
msgid "Roomlist"
msgstr ""
@@ -20348,6 +21989,53 @@ msgid "Gameplay"
msgstr ""
#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Gameplay Monitor"
+msgstr "Jälgija"
+
+#: scene/3d/room_manager.cpp
+msgid "Use Secondary PVS"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Merge Meshes"
+msgstr "Liida stseenist"
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Show Margins"
+msgstr "Kuva failikuvajas"
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Debug Sprawl"
+msgstr "Silumine"
+
+#: scene/3d/room_manager.cpp
+msgid "Overlap Warning Threshold"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Preview Camera"
+msgstr "Eelvaade"
+
+#: scene/3d/room_manager.cpp
+msgid "Portal Depth Limit"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Default Portal Margin"
+msgstr "Vaikimisi"
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Roaming Expansion Margin"
+msgstr "Laienda kõik"
+
+#: scene/3d/room_manager.cpp
msgid ""
"RoomList path is invalid.\n"
"Please check the RoomList branch has been assigned in the RoomManager."
@@ -20468,6 +22156,20 @@ msgstr ""
msgid "Billboard"
msgstr ""
+#: scene/3d/sprite_3d.cpp scene/resources/material.cpp
+#, fuzzy
+msgid "Transparent"
+msgstr "Tõlked"
+
+#: scene/3d/sprite_3d.cpp
+#, fuzzy
+msgid "Shaded"
+msgstr "Varjutaja muutused"
+
+#: scene/3d/sprite_3d.cpp
+msgid "Double Sided"
+msgstr ""
+
#: scene/3d/sprite_3d.cpp
msgid "Alpha Cut"
msgstr ""
@@ -20536,11 +22238,6 @@ msgstr ""
msgid "Max Force"
msgstr "Viga:"
-#: scene/3d/vehicle_body.cpp
-#, fuzzy
-msgid "Relaxation"
-msgstr "Versioon:"
-
#: scene/3d/visibility_notifier.cpp
msgid "AABB"
msgstr ""
@@ -20668,8 +22365,9 @@ msgid "Fadeout Time"
msgstr ""
#: scene/animation/animation_blend_tree.cpp
-msgid "autorestart_"
-msgstr ""
+#, fuzzy
+msgid "Auto Restart"
+msgstr "Testimine"
#: scene/animation/animation_blend_tree.cpp
msgid "Autorestart"
@@ -20749,12 +22447,6 @@ msgstr "Klassi valikud:"
msgid "Default Blend Time"
msgstr "Vaikimisi"
-#: scene/animation/animation_player.cpp scene/animation/animation_tree.cpp
-#: scene/animation/animation_tree_player.cpp
-#: servers/audio/effects/audio_effect_delay.cpp
-msgid "Active"
-msgstr ""
-
#: scene/animation/animation_player.cpp
msgid "Method Call Mode"
msgstr ""
@@ -20875,10 +22567,6 @@ msgstr "Kustuta sõlm(ed)"
msgid "Max Iterations"
msgstr "Loo funktsioon"
-#: scene/animation/tween.cpp scene/resources/texture.cpp
-msgid "Repeat"
-msgstr ""
-
#: scene/animation/tween.cpp
msgid "Playback Process Mode"
msgstr ""
@@ -20907,20 +22595,6 @@ msgstr "Valimisrežiim"
msgid "Alignment"
msgstr ""
-#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
-#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
-#: scene/resources/style_box.cpp
-#, fuzzy
-msgid "Horizontal"
-msgstr "Eemalda horisontaalne juht"
-
-#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
-#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
-#: scene/resources/style_box.cpp
-#, fuzzy
-msgid "Vertical"
-msgstr "Tipud"
-
#: scene/gui/base_button.cpp
msgid "Shortcut In Tooltip"
msgstr ""
@@ -21015,10 +22689,6 @@ msgid "HSV"
msgstr ""
#: scene/gui/color_picker.cpp
-msgid "Raw"
-msgstr ""
-
-#: scene/gui/color_picker.cpp
msgid "Switch between hexadecimal and code values."
msgstr ""
@@ -21076,6 +22746,30 @@ msgid "Focus"
msgstr "Fookuse tee"
#: scene/gui/control.cpp
+msgid "Neighbour Left"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Neighbour Top"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Neighbour Right"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Neighbour Bottom"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Next"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Previous"
+msgstr ""
+
+#: scene/gui/control.cpp
msgid "Mouse"
msgstr ""
@@ -21112,7 +22806,7 @@ msgid "Dialog"
msgstr ""
#: scene/gui/dialogs.cpp
-msgid "Hide On Ok"
+msgid "Hide On OK"
msgstr ""
#: scene/gui/dialogs.cpp scene/gui/label.cpp
@@ -21207,7 +22901,7 @@ msgid "Timers"
msgstr "Aeg"
#: scene/gui/item_list.cpp scene/gui/popup_menu.cpp scene/gui/tree.cpp
-msgid "Incremental Search Max Interval (msec)"
+msgid "Incremental Search Max Interval Msec"
msgstr ""
#: scene/gui/item_list.cpp scene/gui/tree.cpp
@@ -21757,6 +23451,26 @@ msgstr "Kustuta sõlm(ed)"
msgid "Nine Patch Stretch"
msgstr "Interpolatsiooni režiim"
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Left"
+msgstr "Valimisrežiim"
+
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Top"
+msgstr "Valimisrežiim"
+
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Right"
+msgstr "Valimisrežiim"
+
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Bottom"
+msgstr "Valimisrežiim"
+
#: scene/gui/tree.cpp
msgid "Custom Minimum Height"
msgstr ""
@@ -21792,8 +23506,9 @@ msgid "Paused"
msgstr ""
#: scene/gui/video_player.cpp
-msgid "Buffering (msec)"
-msgstr ""
+#, fuzzy
+msgid "Buffering Msec"
+msgstr "Tagavaade"
#: scene/gui/video_player.cpp
#, fuzzy
@@ -22125,6 +23840,22 @@ msgid "Shadow Atlas"
msgstr ""
#: scene/main/viewport.cpp
+msgid "Quad 0"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 1"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 2"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 3"
+msgstr ""
+
+#: scene/main/viewport.cpp
msgid "Canvas Transform"
msgstr ""
@@ -22138,6 +23869,11 @@ msgid "Tooltip Delay (sec)"
msgstr ""
#: scene/register_scene_types.cpp
+#, fuzzy
+msgid "Swap OK Cancel"
+msgstr "Tühista"
+
+#: scene/register_scene_types.cpp
msgid "Use hiDPI"
msgstr ""
@@ -22152,21 +23888,6 @@ msgid "Custom Font"
msgstr "Kustuta sõlm(ed)"
#: scene/resources/audio_stream_sample.cpp
-#, fuzzy
-msgid "Loop Mode"
-msgstr "Liigutamisrežiim"
-
-#: scene/resources/audio_stream_sample.cpp
-#, fuzzy
-msgid "Loop Begin"
-msgstr "Liigutamisrežiim"
-
-#: scene/resources/audio_stream_sample.cpp
-#, fuzzy
-msgid "Loop End"
-msgstr "Liigutamisrežiim"
-
-#: scene/resources/audio_stream_sample.cpp
#: servers/audio/effects/audio_stream_generator.cpp servers/audio_server.cpp
msgid "Mix Rate"
msgstr ""
@@ -22222,6 +23943,17 @@ msgid "Extra Spacing"
msgstr "Klassi valikud:"
#: scene/resources/dynamic_font.cpp
+#, fuzzy
+msgid "Char"
+msgstr "Kehtivad märgid:"
+
+#: scene/resources/dynamic_font.cpp scene/resources/world.cpp
+#: scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Space"
+msgstr "Kuvamise kutsungid"
+
+#: scene/resources/dynamic_font.cpp
msgid "Font"
msgstr ""
@@ -22439,6 +24171,43 @@ msgid "Glow"
msgstr ""
#: scene/resources/environment.cpp
+#, fuzzy
+msgid "Levels"
+msgstr "Arendajad"
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "1"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "2"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "3"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "4"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "5"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "6"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "7"
+msgstr ""
+
+#: scene/resources/environment.cpp
msgid "Bloom"
msgstr ""
@@ -22526,9 +24295,66 @@ msgid "Next Pass"
msgstr "Virnakaadrid"
#: scene/resources/material.cpp
+msgid "Use Shadow To Opacity"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Unshaded"
+msgstr "Kuva varjutamata"
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Vertex Lighting"
+msgstr "Liiguta Bezieri punkte"
+
+#: scene/resources/material.cpp
+msgid "No Depth Test"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Use Point Size"
+msgstr "Eesvaade"
+
+#: scene/resources/material.cpp
+msgid "World Triplanar"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Fixed Size"
+msgstr "Eesvaade"
+
+#: scene/resources/material.cpp
+msgid "Albedo Tex Force sRGB"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Do Not Receive Shadows"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Disable Ambient Light"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Ensure Correct Normals"
+msgstr "3D muundus rada"
+
+#: scene/resources/material.cpp
msgid "Vertex Color"
msgstr ""
+#: scene/resources/material.cpp
+msgid "Use As Albedo"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Is sRGB"
+msgstr ""
+
#: scene/resources/material.cpp servers/visual_server.cpp
#, fuzzy
msgid "Parameters"
@@ -22565,6 +24391,11 @@ msgid "Billboard Mode"
msgstr "Skaleerimisrežiim"
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Billboard Keep Scale"
+msgstr "Skaleerimisrežiim"
+
+#: scene/resources/material.cpp
msgid "Grow"
msgstr ""
@@ -22574,6 +24405,10 @@ msgid "Grow Amount"
msgstr "Eemalda horisontaalne juht"
#: scene/resources/material.cpp
+msgid "Use Alpha Scissor"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Alpha Scissor Threshold"
msgstr ""
@@ -22604,10 +24439,20 @@ msgid "Metallic Specular"
msgstr ""
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Metallic Texture"
+msgstr "Muuda tüüpi"
+
+#: scene/resources/material.cpp
msgid "Metallic Texture Channel"
msgstr ""
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Roughness Texture"
+msgstr "Muuda tüüpi"
+
+#: scene/resources/material.cpp
msgid "Roughness Texture Channel"
msgstr ""
@@ -22624,6 +24469,15 @@ msgid "Emission Operator"
msgstr ""
#: scene/resources/material.cpp
+msgid "Emission On UV2"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Emission Texture"
+msgstr "Muuda tüüpi"
+
+#: scene/resources/material.cpp
msgid "NormalMap"
msgstr ""
@@ -22637,6 +24491,11 @@ msgstr ""
#: scene/resources/material.cpp
#, fuzzy
+msgid "Rim Texture"
+msgstr "Muuda tüüpi"
+
+#: scene/resources/material.cpp
+#, fuzzy
msgid "Clearcoat"
msgstr "Puhasta"
@@ -22645,15 +24504,28 @@ msgid "Clearcoat Gloss"
msgstr ""
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Clearcoat Texture"
+msgstr "Redaktor"
+
+#: scene/resources/material.cpp
msgid "Anisotropy"
msgstr ""
#: scene/resources/material.cpp
+msgid "Anisotropy Flowmap"
+msgstr ""
+
+#: scene/resources/material.cpp
#, fuzzy
msgid "Ambient Occlusion"
msgstr "Vaateakna sätted"
#: scene/resources/material.cpp
+msgid "On UV2"
+msgstr ""
+
+#: scene/resources/material.cpp
#, fuzzy
msgid "Texture Channel"
msgstr "Pööramisrežiim"
@@ -22691,6 +24563,11 @@ msgstr "Tõlked"
#: scene/resources/material.cpp
#, fuzzy
+msgid "Transmission Texture"
+msgstr "Tõlked"
+
+#: scene/resources/material.cpp
+#, fuzzy
msgid "Refraction"
msgstr "Versioon:"
@@ -22708,6 +24585,10 @@ msgid "UV1"
msgstr ""
#: scene/resources/material.cpp
+msgid "Triplanar"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Triplanar Sharpness"
msgstr ""
@@ -22909,6 +24790,16 @@ msgstr "Redaktor"
msgid "Point Count"
msgstr "Sisesta võti siia"
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Scale Random"
+msgstr "Skaleerimisrežiim"
+
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Scale Curve"
+msgstr "Skaleerimisrežiim"
+
#: scene/resources/physics_material.cpp
msgid "Rough"
msgstr ""
@@ -22967,10 +24858,6 @@ msgid "A"
msgstr ""
#: scene/resources/shader.cpp
-msgid "Code"
-msgstr ""
-
-#: scene/resources/shader.cpp
#, fuzzy
msgid "Custom Defines"
msgstr "Mängi kohandatud stseeni"
@@ -23063,15 +24950,6 @@ msgstr ""
#: scene/resources/texture.cpp
#, fuzzy
-msgid "Storage"
-msgstr "Salvestan faili:"
-
-#: scene/resources/texture.cpp
-msgid "Lossy Quality"
-msgstr ""
-
-#: scene/resources/texture.cpp
-#, fuzzy
msgid "Load Path"
msgstr "Laadi vaikimisi"
@@ -23197,11 +25075,6 @@ msgstr "Vigane võrdlusfinktsioon selle tüübi jaoks."
msgid "Fallback Environment"
msgstr "Kuva keskkond"
-#: scene/resources/world.cpp scene/resources/world_2d.cpp
-#, fuzzy
-msgid "Space"
-msgstr "Kuvamise kutsungid"
-
#: scene/resources/world.cpp
#, fuzzy
msgid "Scenario"
@@ -23280,10 +25153,37 @@ msgstr ""
msgid "Wet"
msgstr ""
-#: servers/audio/effects/audio_effect_compressor.cpp
-msgid "Threshold"
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "Voice"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+msgid "Delay (ms)"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_phaser.cpp
+msgid "Rate Hz"
msgstr ""
+#: servers/audio/effects/audio_effect_chorus.cpp
+#, fuzzy
+msgid "Depth (ms)"
+msgstr "Skaleerimisrežiim"
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+msgid "Level dB"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+#: servers/audio/effects/audio_effect_panner.cpp
+#, fuzzy
+msgid "Pan"
+msgstr "Pakin"
+
#: servers/audio/effects/audio_effect_compressor.cpp
#: servers/audio/effects/audio_effect_filter.cpp
msgid "Gain"
@@ -23306,20 +25206,6 @@ msgid "Tap 1"
msgstr ""
#: servers/audio/effects/audio_effect_delay.cpp
-msgid "Delay (ms)"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_delay.cpp
-msgid "Level dB"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_delay.cpp
-#: servers/audio/effects/audio_effect_panner.cpp
-#, fuzzy
-msgid "Pan"
-msgstr "Pakin"
-
-#: servers/audio/effects/audio_effect_delay.cpp
msgid "Tap 2"
msgstr ""
@@ -23380,10 +25266,6 @@ msgstr ""
msgid "Range Max Hz"
msgstr ""
-#: servers/audio/effects/audio_effect_phaser.cpp
-msgid "Rate Hz"
-msgstr ""
-
#: servers/audio/effects/audio_effect_pitch_shift.cpp
msgid "Oversampling"
msgstr ""
@@ -23399,7 +25281,7 @@ msgid "Predelay"
msgstr ""
#: servers/audio/effects/audio_effect_reverb.cpp
-msgid "(msec)"
+msgid "Msec"
msgstr ""
#: servers/audio/effects/audio_effect_reverb.cpp
diff --git a/editor/translations/eu.po b/editor/translations/eu.po
index fbc74dbab4..581f3adf97 100644
--- a/editor/translations/eu.po
+++ b/editor/translations/eu.po
@@ -20,7 +20,7 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 4.7.2-dev\n"
-#: core/bind/core_bind.cpp
+#: core/bind/core_bind.cpp main/main.cpp
msgid "Tablet Driver"
msgstr ""
@@ -116,8 +116,8 @@ msgstr "Kargatu animazioa"
#: core/bind/core_bind.cpp editor/editor_settings.cpp main/main.cpp
#: modules/gdscript/gdscript_editor.cpp modules/gridmap/grid_map.cpp
#: modules/mono/csharp_script.cpp modules/visual_script/visual_script_nodes.cpp
-#: scene/2d/tile_map.cpp scene/3d/camera.cpp scene/gui/control.cpp
-#: scene/gui/graph_edit.cpp scene/main/viewport.cpp
+#: scene/2d/tile_map.cpp scene/3d/camera.cpp scene/3d/light.cpp
+#: scene/gui/control.cpp scene/gui/graph_edit.cpp scene/main/viewport.cpp
#: scene/resources/dynamic_font.cpp scene/resources/navigation_mesh.cpp
#: scene/resources/primitive_meshes.cpp scene/resources/sky.cpp
#: scene/resources/style_box.cpp scene/resources/texture.cpp
@@ -216,8 +216,7 @@ msgid "Data"
msgstr ""
#: core/io/file_access_network.cpp core/register_core_types.cpp
-#: editor/editor_settings.cpp editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp main/main.cpp
+#: editor/editor_settings.cpp main/main.cpp
#: modules/gdscript/language_server/gdscript_language_server.cpp
msgid "Network"
msgstr ""
@@ -486,9 +485,10 @@ msgstr ""
msgid "Relative"
msgstr "Atxikitze erlatiboa"
-#: core/os/input_event.cpp scene/2d/camera_2d.cpp
-#: scene/3d/interpolated_camera.cpp scene/animation/animation_player.cpp
-#: scene/resources/environment.cpp
+#: core/os/input_event.cpp scene/2d/camera_2d.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/interpolated_camera.cpp
+#: scene/animation/animation_player.cpp scene/resources/environment.cpp
+#: scene/resources/particles_material.cpp
msgid "Speed"
msgstr ""
@@ -533,8 +533,9 @@ msgstr ""
msgid "Pitch"
msgstr ""
-#: core/os/input_event.cpp scene/2d/physics_body_2d.cpp
-#: scene/3d/physics_body.cpp
+#: core/os/input_event.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/physics_body_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/3d/physics_body.cpp scene/resources/particles_material.cpp
msgid "Velocity"
msgstr ""
@@ -551,6 +552,8 @@ msgid "Controller Value"
msgstr ""
#: core/project_settings.cpp editor/editor_node.cpp main/main.cpp
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/windows/export/export.cpp
#, fuzzy
msgid "Application"
msgstr "Bikoiztu animazioa"
@@ -569,13 +572,16 @@ msgstr "Proiektuaren ezarpenak..."
#: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp
#: editor/editor_plugin_settings.cpp editor/editor_profiler.cpp
#: editor/project_manager.cpp editor/settings_config_dialog.cpp
-#: modules/gdnative/nativescript/nativescript.cpp scene/2d/area_2d.cpp
-#: scene/3d/area.cpp scene/main/node.cpp
+#: modules/gdnative/nativescript/nativescript.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/osx/export/export.cpp scene/2d/area_2d.cpp scene/3d/area.cpp
+#: scene/main/node.cpp
msgid "Name"
msgstr ""
#: core/project_settings.cpp editor/editor_help.cpp
-#: modules/visual_script/visual_script_nodes.cpp
+#: modules/visual_script/visual_script_nodes.cpp platform/uwp/export/export.cpp
+#: platform/windows/export/export.cpp
msgid "Description"
msgstr "Deskripzioa"
@@ -611,7 +617,7 @@ msgid "Custom User Dir Name"
msgstr ""
#: core/project_settings.cpp editor/animation_track_editor.cpp
-#: editor/editor_audio_buses.cpp servers/audio_server.cpp
+#: editor/editor_audio_buses.cpp main/main.cpp servers/audio_server.cpp
msgid "Audio"
msgstr "Audioa"
@@ -764,10 +770,13 @@ msgstr "Iragazkiak..."
msgid "Sharpen Intensity"
msgstr ""
-#: core/project_settings.cpp editor/editor_node.cpp editor/editor_settings.cpp
-#: editor/plugins/script_editor_plugin.cpp editor/project_export.cpp
-#: main/main.cpp modules/gdscript/gdscript.cpp
-#: modules/visual_script/visual_script.cpp scene/3d/room_manager.cpp
+#: core/project_settings.cpp editor/editor_export.cpp editor/editor_node.cpp
+#: editor/editor_settings.cpp editor/plugins/script_editor_plugin.cpp
+#: editor/project_export.cpp main/main.cpp modules/gdscript/gdscript.cpp
+#: modules/visual_script/visual_script.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp scene/3d/room_manager.cpp
#: scene/main/scene_tree.cpp scene/resources/shape_2d.cpp
#: servers/visual_server.cpp
msgid "Debug"
@@ -995,6 +1004,7 @@ msgid "Subsurface Scattering"
msgstr ""
#: drivers/gles3/rasterizer_scene_gles3.cpp
+#: editor/import/resource_importer_texture.cpp
#: editor/plugins/spatial_editor_plugin.cpp modules/gltf/gltf_node.cpp
#: modules/gridmap/grid_map.cpp scene/2d/cpu_particles_2d.cpp
#: scene/2d/node_2d.cpp scene/2d/parallax_layer.cpp scene/2d/polygon_2d.cpp
@@ -1291,6 +1301,7 @@ msgid "Editors"
msgstr "Editatu azala"
#: editor/animation_track_editor.cpp editor/editor_settings.cpp
+#: editor/import/resource_importer_scene.cpp
#: editor/plugins/animation_player_editor_plugin.cpp editor/scene_tree_dock.cpp
#: scene/2d/animated_sprite.cpp scene/2d/cpu_particles_2d.cpp
#: scene/2d/sprite.cpp scene/3d/cpu_particles.cpp scene/3d/sprite_3d.cpp
@@ -1516,14 +1527,14 @@ msgstr ""
msgid "Seconds"
msgstr ""
-#: editor/animation_track_editor.cpp
+#: editor/animation_track_editor.cpp editor/import/resource_importer_scene.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp main/main.cpp
#: scene/resources/texture.cpp
msgid "FPS"
msgstr ""
#: editor/animation_track_editor.cpp editor/editor_plugin_settings.cpp
-#: editor/editor_resource_picker.cpp
+#: editor/editor_resource_picker.cpp editor/import/resource_importer_wav.cpp
#: editor/plugins/polygon_2d_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
@@ -2482,7 +2493,9 @@ msgid "Remove Autoload"
msgstr ""
#: editor/editor_autoload_settings.cpp editor/editor_plugin_settings.cpp
-#: modules/gdscript/gdscript.cpp scene/2d/polygon_2d.cpp scene/3d/area.cpp
+#: modules/gdscript/gdscript.cpp platform/android/export/export_plugin.cpp
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#: scene/2d/polygon_2d.cpp scene/3d/area.cpp scene/3d/physics_joint.cpp
#: scene/3d/reflection_probe.cpp scene/main/canvas_layer.cpp
#: scene/resources/material.cpp servers/visual_server.cpp
msgid "Enable"
@@ -2635,6 +2648,58 @@ msgstr ""
#: editor/editor_export.cpp platform/android/export/export_plugin.cpp
#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Custom Template"
+msgstr "Editatu azala"
+
+#: editor/editor_export.cpp editor/project_export.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp
+msgid "Release"
+msgstr ""
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Binary Format"
+msgstr "3D Transformazioaren pista"
+
+#: editor/editor_export.cpp
+msgid "64 Bits"
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Embed PCK"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Texture Format"
+msgstr "Txandakatu modua"
+
+#: editor/editor_export.cpp
+msgid "BPTC"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "S3TC"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "ETC"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "ETC2"
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "No BPTC Fallbacks"
+msgstr ""
+
+#: editor/editor_export.cpp platform/android/export/export_plugin.cpp
+#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
msgid "Custom debug template not found."
msgstr ""
@@ -2813,6 +2878,7 @@ msgid "Make Current"
msgstr ""
#: editor/editor_feature_profile.cpp editor/editor_node.cpp
+#: editor/import/resource_importer_scene.cpp
#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
msgid "Import"
msgstr ""
@@ -2942,8 +3008,11 @@ msgstr "Arrakasta!"
msgid "Display Mode"
msgstr "Erakutsi guztiak"
-#: editor/editor_file_dialog.cpp main/main.cpp modules/csg/csg_shape.cpp
-#: modules/visual_script/visual_script_nodes.cpp
+#: editor/editor_file_dialog.cpp
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+#: editor/import/resource_importer_wav.cpp main/main.cpp
+#: modules/csg/csg_shape.cpp modules/visual_script/visual_script_nodes.cpp
#: modules/visual_script/visual_script_yield_nodes.cpp scene/2d/light_2d.cpp
#: scene/2d/physics_body_2d.cpp scene/2d/tile_map.cpp
#: scene/3d/baked_lightmap.cpp scene/3d/light.cpp scene/3d/physics_body.cpp
@@ -3079,7 +3148,9 @@ msgstr "Aktiboak (bir)inportatzen"
msgid "Reimport Missing Imported Files"
msgstr ""
-#: editor/editor_help.cpp
+#: editor/editor_help.cpp scene/2d/camera_2d.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/resources/dynamic_font.cpp
+#: scene/resources/style_box.cpp
msgid "Top"
msgstr ""
@@ -3132,6 +3203,7 @@ msgid "Fonts"
msgstr ""
#: editor/editor_help.cpp editor/plugins/theme_editor_plugin.cpp
+#: platform/iphone/export/export.cpp
msgid "Icons"
msgstr ""
@@ -3292,7 +3364,9 @@ msgstr ""
msgid "Pin value [Disabled because '%s' is editor-only]"
msgstr ""
-#: editor/editor_inspector.cpp editor/scene_tree_dock.cpp
+#: editor/editor_inspector.cpp
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+#: editor/scene_tree_dock.cpp
#: modules/visual_script/visual_script_func_nodes.cpp
#: modules/visual_script/visual_script_nodes.cpp
#: modules/visual_script/visual_script_property_selector.cpp
@@ -3606,6 +3680,14 @@ msgid "Quick Open Script..."
msgstr ""
#: editor/editor_node.cpp
+msgid "Save & Reload"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Save changes to '%s' before reloading?"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "Save & Close"
msgstr ""
@@ -3719,6 +3801,10 @@ msgid "Open Project Manager?"
msgstr ""
#: editor/editor_node.cpp
+msgid "Save changes to the following scene(s) before reloading?"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "Save & Quit"
msgstr ""
@@ -3963,8 +4049,8 @@ msgstr ""
#: editor/editor_node.cpp
#, fuzzy
-msgid "Translate Properties"
-msgstr "Propietateak"
+msgid "Localize Settings"
+msgstr "Atxikitze ezarpenak"
#: editor/editor_node.cpp
#, fuzzy
@@ -3981,8 +4067,8 @@ msgstr ""
#: editor/editor_node.cpp
#, fuzzy
-msgid "Capitalize Properties"
-msgstr "Propietateak"
+msgid "Default Property Name Style"
+msgstr "Aurrebista:"
#: editor/editor_node.cpp
msgid "Default Float Step"
@@ -4548,7 +4634,9 @@ msgstr ""
msgid "Update"
msgstr ""
-#: editor/editor_plugin_settings.cpp
+#: editor/editor_plugin_settings.cpp platform/android/export/export_plugin.cpp
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp
#, fuzzy
msgid "Version"
msgstr "Bertsio kontrola"
@@ -5518,7 +5606,7 @@ msgstr ""
msgid "Rect Custom Position"
msgstr ""
-#: editor/editor_settings.cpp
+#: editor/editor_settings.cpp platform/android/export/export_plugin.cpp
msgid "Screen"
msgstr ""
@@ -5543,6 +5631,19 @@ msgid "Editor SSL Certificates"
msgstr ""
#: editor/editor_settings.cpp
+msgid "HTTP Proxy"
+msgstr ""
+
+#: editor/editor_settings.cpp
+msgid "Host"
+msgstr ""
+
+#: editor/editor_settings.cpp editor/fileserver/editor_file_server.cpp
+#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp
+msgid "Port"
+msgstr ""
+
+#: editor/editor_settings.cpp
msgid "Project Manager"
msgstr ""
@@ -5583,7 +5684,8 @@ msgstr ""
msgid "String Color"
msgstr ""
-#: editor/editor_settings.cpp
+#: editor/editor_settings.cpp platform/javascript/export/export.cpp
+#: platform/uwp/export/export.cpp
msgid "Background Color"
msgstr ""
@@ -5746,22 +5848,6 @@ msgid "Starting the download..."
msgstr ""
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "HTTP Proxy"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Host"
-msgstr ""
-
-#: editor/export_template_manager.cpp editor/fileserver/editor_file_server.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp main/main.cpp
-#: modules/mono/mono_gd/gd_mono.cpp
-msgid "Port"
-msgstr ""
-
-#: editor/export_template_manager.cpp
msgid "Error requesting URL:"
msgstr ""
@@ -6017,6 +6103,7 @@ msgstr ""
#: editor/fileserver/editor_file_server.cpp
#: editor/plugins/version_control_editor_plugin.cpp
+#: platform/uwp/export/export.cpp platform/windows/export/export.cpp
msgid "Password"
msgstr ""
@@ -6384,6 +6471,112 @@ msgstr ""
msgid "Use Ambient"
msgstr ""
+#: editor/import/resource_importer_bitmask.cpp
+#, fuzzy
+msgid "Create From"
+msgstr "Ezabatu profila"
+
+#: editor/import/resource_importer_bitmask.cpp
+#: servers/audio/effects/audio_effect_compressor.cpp
+msgid "Threshold"
+msgstr ""
+
+#: editor/import/resource_importer_csv_translation.cpp
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_scene.cpp
+#: editor/import/resource_importer_texture.cpp
+#: editor/import/resource_importer_wav.cpp scene/3d/gi_probe.cpp
+#, fuzzy
+msgid "Compress"
+msgstr "Osagaiak"
+
+#: editor/import/resource_importer_csv_translation.cpp
+msgid "Delimiter"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+msgid "No BPTC If RGB"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/sprite_3d.cpp
+#: scene/resources/material.cpp scene/resources/particles_material.cpp
+#: scene/resources/texture.cpp
+msgid "Flags"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/animation/tween.cpp
+#: scene/resources/texture.cpp
+msgid "Repeat"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/2d/light_2d.cpp
+#: scene/gui/control.cpp scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Filter"
+msgstr "Iragazkiak..."
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Mipmaps"
+msgstr "Erabili atxikitzea"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+msgid "Anisotropic"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+msgid "sRGB"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+msgid "Slices"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
+#: scene/resources/style_box.cpp
+msgid "Horizontal"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
+#: scene/resources/style_box.cpp
+#, fuzzy
+msgid "Vertical"
+msgstr "Propietateak"
+
+#: editor/import/resource_importer_obj.cpp
+#, fuzzy
+msgid "Generate Tangents"
+msgstr "Mugitu Bezier puntuak"
+
+#: editor/import/resource_importer_obj.cpp
+msgid "Scale Mesh"
+msgstr ""
+
+#: editor/import/resource_importer_obj.cpp
+msgid "Offset Mesh"
+msgstr ""
+
+#: editor/import/resource_importer_obj.cpp
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Octahedral Compression"
+msgstr "Erabili adierazpen erregularrak"
+
+#: editor/import/resource_importer_obj.cpp
+msgid "Optimize Mesh Flags"
+msgstr ""
+
#: editor/import/resource_importer_scene.cpp
msgid "Import as Single Scene"
msgstr ""
@@ -6424,6 +6617,147 @@ msgstr ""
msgid "Import as Multiple Scenes+Materials"
msgstr ""
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+#: scene/3d/physics_joint.cpp
+msgid "Nodes"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Root Type"
+msgstr "Kide mota"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Root Name"
+msgstr "Blend4 nodoa"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Root Scale"
+msgstr "Erakutsi guztiak"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Custom Script"
+msgstr "Kendu elementu guztiak"
+
+#: editor/import/resource_importer_scene.cpp scene/resources/texture.cpp
+msgid "Storage"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Use Legacy Names"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+msgid "Materials"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Location"
+msgstr "Erabili biraketa atxikitzea"
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Keep On Reimport"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+msgid "Meshes"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Ensure Tangents"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Light Baking"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Lightmap Texel Size"
+msgstr "Pixel atxikitzea"
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+msgid "Skins"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Use Named Skins"
+msgstr "Erabili eskala atxikitzea"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "External Files"
+msgstr "Ireki fitxategi bat"
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Store In Subdir"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Filter Script"
+msgstr "Iragazkiak..."
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Keep Custom Tracks"
+msgstr "Editatu azala"
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Optimizer"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp main/main.cpp
+#: modules/mono/mono_gd/gd_mono.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp scene/2d/camera_2d.cpp scene/2d/light_2d.cpp
+#: scene/2d/navigation_polygon.cpp scene/2d/ray_cast_2d.cpp scene/2d/sprite.cpp
+#: scene/2d/y_sort.cpp scene/3d/audio_stream_player_3d.cpp
+#: scene/3d/baked_lightmap.cpp scene/3d/interpolated_camera.cpp
+#: scene/3d/light.cpp scene/3d/navigation_mesh_instance.cpp
+#: scene/3d/physics_joint.cpp scene/3d/ray_cast.cpp scene/3d/sprite_3d.cpp
+#: scene/gui/graph_edit.cpp scene/gui/rich_text_label.cpp
+#: scene/resources/curve.cpp scene/resources/environment.cpp
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Enabled"
+msgstr "Gaitu atxikitzea"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Max Linear Error"
+msgstr "Ispilua"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Max Angular Error"
+msgstr "Ispilua"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Max Angle"
+msgstr "Balioa:"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Remove Unused Tracks"
+msgstr "Ezabatu Animazio Pista"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Clips"
+msgstr "Animazio klipak:"
+
+#: editor/import/resource_importer_scene.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/particles_2d.cpp scene/3d/area.cpp scene/3d/cpu_particles.cpp
+#: scene/3d/particles.cpp scene/resources/environment.cpp
+msgid "Amount"
+msgstr ""
+
#: editor/import/resource_importer_scene.cpp
#: editor/plugins/mesh_library_editor_plugin.cpp
msgid "Import Scene"
@@ -6465,12 +6799,144 @@ msgstr ""
msgid "Saving..."
msgstr ""
+#: editor/import/resource_importer_texture.cpp scene/resources/texture.cpp
+msgid "Lossy Quality"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "HDR Mode"
+msgstr "Atxikitze modua:"
+
+#: editor/import/resource_importer_texture.cpp
+msgid "BPTC LDR"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/mesh_instance_2d.cpp scene/2d/multimesh_instance_2d.cpp
+#: scene/2d/particles_2d.cpp scene/2d/sprite.cpp scene/resources/style_box.cpp
+msgid "Normal Map"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Process"
+msgstr "Txandakatu modua"
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Fix Alpha Border"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Premult Alpha"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Hdr As Srgb"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Invert Color"
+msgstr "Kendu elementu guztiak"
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Normal Map Invert Y"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
+#: scene/audio/audio_stream_player.cpp scene/gui/video_player.cpp
+msgid "Stream"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Size Limit"
+msgstr "Atxikitze modua:"
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Detect 3D"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "SVG"
+msgstr ""
+
#: editor/import/resource_importer_texture.cpp
msgid ""
"Warning, no suitable PC VRAM compression enabled in Project Settings. This "
"texture will not display correctly on PC."
msgstr ""
+#: editor/import/resource_importer_texture_atlas.cpp
+#, fuzzy
+msgid "Atlas File"
+msgstr "Aktiboen ZIP fitxategia"
+
+#: editor/import/resource_importer_texture_atlas.cpp
+#, fuzzy
+msgid "Import Mode"
+msgstr "Txandakatu modua"
+
+#: editor/import/resource_importer_texture_atlas.cpp
+msgid "Crop To Region"
+msgstr ""
+
+#: editor/import/resource_importer_texture_atlas.cpp
+msgid "Trim Alpha Border From Region"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp scene/2d/physics_body_2d.cpp
+msgid "Force"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+msgid "8 Bit"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp main/main.cpp
+#: modules/mono/editor/csharp_project.cpp modules/mono/mono_gd/gd_mono.cpp
+msgid "Mono"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+#, fuzzy
+msgid "Max Rate"
+msgstr "Balioa:"
+
+#: editor/import/resource_importer_wav.cpp
+#, fuzzy
+msgid "Max Rate Hz"
+msgstr "Balioa:"
+
+#: editor/import/resource_importer_wav.cpp
+msgid "Trim"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+#, fuzzy
+msgid "Normalize"
+msgstr "Kide mota"
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+#, fuzzy
+msgid "Loop Mode"
+msgstr "Atxikitze modua:"
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+#, fuzzy
+msgid "Loop Begin"
+msgstr "Atxikitze modua:"
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+#, fuzzy
+msgid "Loop End"
+msgstr "Atxikitze modua:"
+
#: editor/import_defaults_editor.cpp
#, fuzzy
msgid "Select Importer"
@@ -6544,6 +7010,28 @@ msgstr ""
#: editor/inspector_dock.cpp
#, fuzzy
+msgid "Property Name Style"
+msgstr "Propietateen pista"
+
+#: editor/inspector_dock.cpp scene/gui/color_picker.cpp
+msgid "Raw"
+msgstr ""
+
+#: editor/inspector_dock.cpp
+#, fuzzy
+msgid "Capitalized"
+msgstr "Propietateak"
+
+#: editor/inspector_dock.cpp
+msgid "Localized"
+msgstr ""
+
+#: editor/inspector_dock.cpp
+msgid "Localization not available for current language."
+msgstr ""
+
+#: editor/inspector_dock.cpp
+#, fuzzy
msgid "Copy Properties"
msgstr "Propietateak"
@@ -7575,18 +8063,24 @@ msgid "License (Z-A)"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
+msgctxt "Pagination"
msgid "First"
msgstr ""
-#: editor/plugins/asset_library_editor_plugin.cpp scene/gui/control.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgctxt "Pagination"
msgid "Previous"
-msgstr ""
+msgstr "Aurrebista:"
-#: editor/plugins/asset_library_editor_plugin.cpp scene/gui/control.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgctxt "Pagination"
msgid "Next"
-msgstr ""
+msgstr "Hurrengo karpeta/fitxategia"
#: editor/plugins/asset_library_editor_plugin.cpp
+msgctxt "Pagination"
msgid "Last"
msgstr ""
@@ -7821,19 +8315,19 @@ msgid ""
"margins."
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Top Left"
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Top Right"
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Bottom Right"
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Bottom Left"
msgstr ""
@@ -8534,6 +9028,19 @@ msgstr ""
msgid "Gradient Edited"
msgstr ""
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+msgid "Swap GradientTexture2D Fill Points"
+msgstr ""
+
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+msgid "Swap Gradient Fill Points"
+msgstr ""
+
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+#, fuzzy
+msgid "Toggle Grid Snap"
+msgstr "Txandakatu modua"
+
#: editor/plugins/item_list_editor_plugin.cpp
msgid "Item %d"
msgstr ""
@@ -8747,9 +9254,10 @@ msgid ""
"%s"
msgstr ""
-#: editor/plugins/mesh_library_editor_plugin.cpp modules/gridmap/grid_map.cpp
-msgid "Mesh Library"
-msgstr ""
+#: editor/plugins/mesh_library_editor_plugin.cpp
+#, fuzzy
+msgid "MeshLibrary"
+msgstr "Aktiboen liburutegia"
#: editor/plugins/mesh_library_editor_plugin.cpp
msgid "Add Item"
@@ -9726,8 +10234,8 @@ msgstr ""
msgid "Source"
msgstr ""
-#: editor/plugins/script_text_editor.cpp scene/3d/interpolated_camera.cpp
-#: scene/animation/skeleton_ik.cpp
+#: editor/plugins/script_text_editor.cpp platform/uwp/export/export.cpp
+#: scene/3d/interpolated_camera.cpp scene/animation/skeleton_ik.cpp
msgid "Target"
msgstr ""
@@ -10690,7 +11198,9 @@ msgstr ""
#: editor/plugins/sprite_frames_editor_plugin.cpp
#: modules/gltf/gltf_animation.cpp modules/minimp3/audio_stream_mp3.cpp
-#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp scene/2d/path_2d.cpp
+#: modules/minimp3/resource_importer_mp3.cpp
+#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp
+#: modules/stb_vorbis/resource_importer_ogg_vorbis.cpp scene/2d/path_2d.cpp
#: scene/3d/path.cpp scene/resources/animation.cpp scene/resources/material.cpp
msgid "Loop"
msgstr ""
@@ -11591,8 +12101,9 @@ msgstr ""
msgid "Priority"
msgstr ""
-#: editor/plugins/tile_set_editor_plugin.cpp main/main.cpp scene/gui/button.cpp
-#: scene/gui/item_list.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp main/main.cpp
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#: scene/gui/button.cpp scene/gui/item_list.cpp
msgid "Icon"
msgstr ""
@@ -12881,10 +13392,6 @@ msgid ""
msgstr ""
#: editor/project_export.cpp
-msgid "Release"
-msgstr ""
-
-#: editor/project_export.cpp
msgid "Exporting All"
msgstr ""
@@ -14665,6 +15172,7 @@ msgid "Change AudioStreamPlayer3D Emission Angle"
msgstr ""
#: editor/spatial_editor_gizmos.cpp modules/gltf/gltf_node.cpp
+#: platform/osx/export/export.cpp
msgid "Camera"
msgstr ""
@@ -14929,7 +15437,8 @@ msgstr ""
msgid "Use Nvidia Rect Flicker Workaround"
msgstr ""
-#: main/main.cpp platform/uwp/os_uwp.cpp
+#: main/main.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp platform/uwp/os_uwp.cpp
#, fuzzy
msgid "Display"
msgstr "Erakutsi guztiak"
@@ -14986,19 +15495,6 @@ msgstr ""
msgid "Allowed"
msgstr ""
-#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp scene/2d/camera_2d.cpp
-#: scene/2d/light_2d.cpp scene/2d/navigation_polygon.cpp
-#: scene/2d/ray_cast_2d.cpp scene/2d/sprite.cpp scene/2d/y_sort.cpp
-#: scene/3d/audio_stream_player_3d.cpp scene/3d/baked_lightmap.cpp
-#: scene/3d/interpolated_camera.cpp scene/3d/light.cpp
-#: scene/3d/navigation_mesh_instance.cpp scene/3d/ray_cast.cpp
-#: scene/3d/sprite_3d.cpp scene/gui/graph_edit.cpp
-#: scene/gui/rich_text_label.cpp scene/resources/curve.cpp
-#: scene/resources/environment.cpp
-#, fuzzy
-msgid "Enabled"
-msgstr "Gaitu atxikitzea"
-
#: main/main.cpp
msgid "Intended Usage"
msgstr ""
@@ -15028,13 +15524,14 @@ msgstr ""
msgid "Handheld"
msgstr ""
-#: main/main.cpp
+#: main/main.cpp platform/javascript/export/export.cpp
+#: platform/uwp/export/export.cpp
#, fuzzy
msgid "Orientation"
msgstr "Lineako dokumentuak"
#: main/main.cpp scene/gui/scroll_container.cpp scene/gui/text_edit.cpp
-#: scene/main/scene_tree.cpp
+#: scene/main/scene_tree.cpp scene/register_scene_types.cpp
#, fuzzy
msgid "Common"
msgstr "Komunitatea"
@@ -15075,7 +15572,7 @@ msgstr ""
#: main/main.cpp
#, fuzzy
-msgid "Frame Delay (msec)"
+msgid "Frame Delay Msec"
msgstr "Denbora (s): "
#: main/main.cpp
@@ -15194,11 +15691,6 @@ msgstr ""
msgid "Tooltip Position Offset"
msgstr ""
-#: main/main.cpp modules/mono/editor/csharp_project.cpp
-#: modules/mono/mono_gd/gd_mono.cpp
-msgid "Mono"
-msgstr ""
-
#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp
msgid "Debugger Agent"
msgstr ""
@@ -15744,7 +16236,7 @@ msgstr ""
msgid "Intensity"
msgstr ""
-#: modules/gltf/gltf_light.cpp scene/2d/light_2d.cpp
+#: modules/gltf/gltf_light.cpp scene/2d/light_2d.cpp scene/3d/light.cpp
msgid "Range"
msgstr ""
@@ -15883,10 +16375,6 @@ msgstr ""
msgid "Use Named Skin Binds"
msgstr ""
-#: modules/gltf/gltf_state.cpp scene/3d/physics_joint.cpp
-msgid "Nodes"
-msgstr ""
-
#: modules/gltf/gltf_state.cpp
msgid "Buffer Views"
msgstr ""
@@ -15896,14 +16384,6 @@ msgid "Accessors"
msgstr ""
#: modules/gltf/gltf_state.cpp
-msgid "Meshes"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp
-msgid "Materials"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp
#, fuzzy
msgid "Scene Name"
msgstr "Eszenaren bidea:"
@@ -15920,15 +16400,11 @@ msgstr "Blend4 nodoa"
msgid "Textures"
msgstr "Ezaugarriak"
-#: modules/gltf/gltf_state.cpp
+#: modules/gltf/gltf_state.cpp platform/uwp/export/export.cpp
msgid "Images"
msgstr ""
#: modules/gltf/gltf_state.cpp
-msgid "Skins"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp
msgid "Cameras"
msgstr ""
@@ -15959,10 +16435,14 @@ msgid "Src Image"
msgstr ""
#: modules/gridmap/grid_map.cpp
-msgid "Physics Material"
+msgid "Mesh Library"
msgstr ""
#: modules/gridmap/grid_map.cpp
+msgid "Physics Material"
+msgstr ""
+
+#: modules/gridmap/grid_map.cpp scene/3d/visual_instance.cpp
msgid "Use In Baked Light"
msgstr ""
@@ -15992,6 +16472,7 @@ msgstr "Blend4 nodoa"
#: modules/gridmap/grid_map.cpp scene/2d/collision_object_2d.cpp
#: scene/2d/tile_map.cpp scene/3d/collision_object.cpp scene/3d/soft_body.cpp
+#: scene/resources/material.cpp
msgid "Mask"
msgstr ""
@@ -16172,7 +16653,9 @@ msgid "Ultra Quality Ray Count"
msgstr ""
#: modules/minimp3/audio_stream_mp3.cpp
+#: modules/minimp3/resource_importer_mp3.cpp
#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp
+#: modules/stb_vorbis/resource_importer_ogg_vorbis.cpp
#, fuzzy
msgid "Loop Offset"
msgstr "Atxikitze modua:"
@@ -17230,6 +17713,180 @@ msgid "The package must have at least one '.' separator."
msgstr ""
#: platform/android/export/export_plugin.cpp
+msgid "Use Custom Build"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Export Format"
+msgstr "Esportatu"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Keystore"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Debug User"
+msgstr "Araztu"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+msgid "Debug Password"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Release User"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Release Password"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "One Click Deploy"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Clear Previous Install"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp scene/resources/shader.cpp
+msgid "Code"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Min SDK"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Target SDK"
+msgstr "Blend4 nodoa"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+msgid "Package"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Unique Name"
+msgstr "Animazio berriaren izena:"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Signed"
+msgstr "Seinalea"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Classify As Game"
+msgstr "Klasea"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Retain Data On Uninstall"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Exclude From Recents"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Graphics"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "OpenGL Debug"
+msgstr "Ireki"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "XR Features"
+msgstr "Ezaugarriak"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "XR Mode"
+msgstr "Atxikitze modua:"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Hand Tracking"
+msgstr "Propietateen pista"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Hand Tracking Frequency"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Passthrough"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Immersive Mode"
+msgstr "Txandakatu modua"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Support Small"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Support Normal"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Support Large"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Support Xlarge"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "User Data Backup"
+msgstr "Ireki editorearen datu karpeta"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Allow"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Command Line"
+msgstr "Komunitatea"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Extra Args"
+msgstr "Klaseko aukerak"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "APK Expansion"
+msgstr "Erabili adierazpen erregularrak"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Salt"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Public Key"
+msgstr "Bikoiztu Giltza(k)"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Permissions"
+msgstr "Erabili adierazpen erregularrak"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Custom Permissions"
+msgstr "Erabili adierazpen erregularrak"
+
+#: platform/android/export/export_plugin.cpp
msgid "Select device from the list"
msgstr ""
@@ -17524,6 +18181,173 @@ msgid "The character '%s' is not allowed in Identifier."
msgstr ""
#: platform/iphone/export/export.cpp
+msgid "App Store Team ID"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Provisioning Profile UUID Debug"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Code Sign Identity Debug"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Export Method Debug"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Provisioning Profile UUID Release"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Code Sign Identity Release"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Export Method Release"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Targeted Device Family"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Info"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Identifier"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Signature"
+msgstr "Seinalea"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Short Version"
+msgstr "Bertsio kontrola"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/windows/export/export.cpp
+msgid "Copyright"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Capabilities"
+msgstr "Propietateak"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Access Wi-Fi"
+msgstr "Arrakasta!"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Push Notifications"
+msgstr "Itsatsi animazioa"
+
+#: platform/iphone/export/export.cpp scene/3d/baked_lightmap.cpp
+#, fuzzy
+msgid "User Data"
+msgstr "Ireki editorearen datu karpeta"
+
+#: platform/iphone/export/export.cpp
+msgid "Accessible From Files App"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Accessible From Itunes Sharing"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Privacy"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Camera Usage Description"
+msgstr "Deskripzioa"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Microphone Usage Description"
+msgstr "Metodo-deskripzioak"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Photolibrary Usage Description"
+msgstr "Deskripzioa"
+
+#: platform/iphone/export/export.cpp
+msgid "iPhone 120 X 120"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPhone 180 X 180"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 76 X 76"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 152 X 152"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 167 X 167"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "App Store 1024 X 1024"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Spotlight 40 X 40"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Spotlight 80 X 80"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Storyboard"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Use Launch Screen Storyboard"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Image Scale Mode"
+msgstr "Blend4 nodoa"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Custom Image @2x"
+msgstr "Editatu azala"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Custom Image @3x"
+msgstr "Editatu azala"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Use Custom BG Color"
+msgstr "Funtzioak:"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Custom BG Color"
+msgstr "Funtzioak:"
+
+#: platform/iphone/export/export.cpp
msgid "App Store Team ID not specified - cannot configure the project."
msgstr ""
@@ -17561,6 +18385,80 @@ msgid "Could not read file:"
msgstr "Ezin izan da scripta exekutatu:"
#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Variant"
+msgstr "Enumerazioak"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Export Type"
+msgstr "Esportatu"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "VRAM Texture Compression"
+msgstr "Erabili adierazpen erregularrak"
+
+#: platform/javascript/export/export.cpp
+msgid "For Desktop"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "For Mobile"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Html"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Export Icon"
+msgstr "Esportatu"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Custom Html Shell"
+msgstr "Kendu elementu guztiak"
+
+#: platform/javascript/export/export.cpp
+msgid "Head Include"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Canvas Resize Policy"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Focus Canvas On Start"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Experimental Virtual Keyboard"
+msgstr "Pista Akt./Desakt."
+
+#: platform/javascript/export/export.cpp
+msgid "Progressive Web App"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Offline Page"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 144 X 144"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 180 X 180"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 512 X 512"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
msgid "Could not read HTML shell:"
msgstr ""
@@ -17668,6 +18566,193 @@ msgid "Unknown object type."
msgstr ""
#: platform/osx/export/export.cpp
+msgid "App Category"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "High Res"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Location Usage Description"
+msgstr "Deskripzioa"
+
+#: platform/osx/export/export.cpp
+msgid "Address Book Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Calendar Usage Description"
+msgstr "Deskripzioa"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Photos Library Usage Description"
+msgstr "Deskripzioa"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Desktop Folder Usage Description"
+msgstr "Metodo-deskripzioak"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Documents Folder Usage Description"
+msgstr "Metodo-deskripzioak"
+
+#: platform/osx/export/export.cpp
+msgid "Downloads Folder Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Network Volumes Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Removable Volumes Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+msgid "Codesign"
+msgstr ""
+
+#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
+#: platform/windows/export/export.cpp
+msgid "Identity"
+msgstr ""
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#, fuzzy
+msgid "Timestamp"
+msgstr "Denbora:"
+
+#: platform/osx/export/export.cpp
+msgid "Hardened Runtime"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Replace Existing Signature"
+msgstr "Ireki fitxategia(k)"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Entitlements"
+msgstr "Edukiak:"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Custom File"
+msgstr "Kendu elementu guztiak"
+
+#: platform/osx/export/export.cpp
+msgid "Allow JIT Code Execution"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Allow Unsigned Executable Memory"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Allow Dyld Environment Variables"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Disable Library Validation"
+msgstr "Gaitu iragazkia"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Audio Input"
+msgstr "Gaitu atxikitzea"
+
+#: platform/osx/export/export.cpp
+msgid "Address Book"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Calendars"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Photos Library"
+msgstr "Aktiboen liburutegia"
+
+#: platform/osx/export/export.cpp
+msgid "Apple Events"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Debugging"
+msgstr "Araztu"
+
+#: platform/osx/export/export.cpp
+msgid "App Sandbox"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Network Server"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Network Client"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Device Usb"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Device Bluetooth"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Files Downloads"
+msgstr "Jaitsi"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Files Pictures"
+msgstr "Ezaugarriak"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Files Music"
+msgstr "Fitxategia:"
+
+#: platform/osx/export/export.cpp
+msgid "Files Movies"
+msgstr ""
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#, fuzzy
+msgid "Custom Options"
+msgstr "Klaseko aukerak"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Notarization"
+msgstr "Erabili biraketa atxikitzea"
+
+#: platform/osx/export/export.cpp
+msgid "Apple ID Name"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Apple ID Password"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Apple Team ID"
+msgstr ""
+
+#: platform/osx/export/export.cpp
msgid ""
"Note: The notarization process generally takes less than an hour. When the "
"process is completed, you'll receive an email."
@@ -17858,6 +18943,130 @@ msgid "Force Builtin Codesign"
msgstr ""
#: platform/uwp/export/export.cpp
+msgid "Architecture"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Display Name"
+msgstr "Erakutsi guztiak"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Short Name"
+msgstr "Aldatu animazioaren izena:"
+
+#: platform/uwp/export/export.cpp
+msgid "Publisher"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Publisher Display Name"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Product Guid"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Publisher Guid"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Signing"
+msgstr "Seinalea"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Certificate"
+msgstr "Propietateak"
+
+#: platform/uwp/export/export.cpp
+msgid "Algorithm"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Major"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Minor"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Build"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Revision"
+msgstr "Erabili adierazpen erregularrak"
+
+#: platform/uwp/export/export.cpp
+msgid "Landscape"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Portrait"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Landscape Flipped"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Portrait Flipped"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Store Logo"
+msgstr "Txandakatu modua"
+
+#: platform/uwp/export/export.cpp
+msgid "Square 44 X 44 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 71 X 71 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 150 X 150 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 310 X 310 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Wide 310 X 150 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Splash Screen"
+msgstr "Txandakatu pantaila osoa"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Tiles"
+msgstr "Fitxategia:"
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Square 150 X 150"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Wide 310 X 150"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Square 310 X 310"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
msgid "Invalid package short name."
msgstr ""
@@ -17923,11 +19132,47 @@ msgid "Debug Certificate"
msgstr ""
#: platform/uwp/export/export.cpp
-msgid "Debug Password"
+msgid "Debug Algorithm"
msgstr ""
-#: platform/uwp/export/export.cpp
-msgid "Debug Algorithm"
+#: platform/windows/export/export.cpp
+msgid "Identity Type"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Timestamp Server URL"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Digest Algorithm"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "File Version"
+msgstr "Bertsio kontrola"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Product Version"
+msgstr "Animazio izen baliogabea!"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Company Name"
+msgstr "Klasea"
+
+#: platform/windows/export/export.cpp
+msgid "Product Name"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "File Description"
+msgstr "Deskripzioa"
+
+#: platform/windows/export/export.cpp
+msgid "Trademarks"
msgstr ""
#: platform/windows/export/export.cpp
@@ -18000,12 +19245,14 @@ msgstr ""
msgid "Centered"
msgstr "Blend4 nodoa"
-#: scene/2d/animated_sprite.cpp scene/2d/camera_2d.cpp scene/2d/light_2d.cpp
+#: scene/2d/animated_sprite.cpp scene/2d/camera_2d.cpp
+#: scene/2d/cpu_particles_2d.cpp scene/2d/light_2d.cpp
#: scene/2d/parallax_background.cpp scene/2d/parallax_layer.cpp
#: scene/2d/path_2d.cpp scene/2d/polygon_2d.cpp scene/2d/sprite.cpp
-#: scene/3d/path.cpp scene/3d/physics_body.cpp scene/3d/sprite_3d.cpp
-#: scene/gui/graph_node.cpp scene/gui/rich_text_effect.cpp
-#: scene/main/canvas_layer.cpp scene/resources/material.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/path.cpp scene/3d/physics_body.cpp
+#: scene/3d/sprite_3d.cpp scene/gui/graph_node.cpp
+#: scene/gui/rich_text_effect.cpp scene/main/canvas_layer.cpp
+#: scene/resources/material.cpp scene/resources/particles_material.cpp
#: scene/resources/style_box.cpp
msgid "Offset"
msgstr ""
@@ -18075,11 +19322,6 @@ msgstr "Audioa"
msgid "Override"
msgstr "gainidatzi:"
-#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
-#: scene/audio/audio_stream_player.cpp scene/gui/video_player.cpp
-msgid "Stream"
-msgstr ""
-
#: scene/2d/audio_stream_player_2d.cpp scene/audio/audio_stream_player.cpp
#: scene/gui/video_player.cpp servers/audio/effects/audio_effect_amplify.cpp
msgid "Volume dB"
@@ -18103,12 +19345,12 @@ msgid "Stream Paused"
msgstr ""
#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
-#: scene/3d/reflection_probe.cpp scene/3d/visual_instance.cpp
-#: scene/resources/material.cpp
+#: scene/3d/light.cpp scene/3d/reflection_probe.cpp
+#: scene/3d/visual_instance.cpp scene/resources/material.cpp
msgid "Max Distance"
msgstr ""
-#: scene/2d/audio_stream_player_2d.cpp
+#: scene/2d/audio_stream_player_2d.cpp scene/3d/light.cpp
#, fuzzy
msgid "Attenuation"
msgstr "Itsatsi animazioa"
@@ -18160,6 +19402,22 @@ msgstr "Txandakatu modua"
msgid "Limit"
msgstr ""
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/style_box.cpp
+msgid "Left"
+msgstr ""
+
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/style_box.cpp
+msgid "Right"
+msgstr ""
+
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/dynamic_font.cpp scene/resources/style_box.cpp
+#, fuzzy
+msgid "Bottom"
+msgstr "Kendu elementu guztiak"
+
#: scene/2d/camera_2d.cpp
msgid "Smoothed"
msgstr ""
@@ -18359,12 +19617,6 @@ msgstr ""
msgid "Emitting"
msgstr "Atxikitze ezarpenak"
-#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp scene/3d/area.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
-#: scene/resources/environment.cpp
-msgid "Amount"
-msgstr ""
-
#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp
#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
msgid "Lifetime"
@@ -18425,18 +19677,13 @@ msgstr ""
#: scene/2d/mesh_instance_2d.cpp scene/2d/multimesh_instance_2d.cpp
#: scene/2d/particles_2d.cpp scene/2d/polygon_2d.cpp scene/2d/sprite.cpp
#: scene/3d/sprite_3d.cpp scene/gui/nine_patch_rect.cpp
-#: scene/gui/texture_rect.cpp scene/resources/sky.cpp
-#: scene/resources/style_box.cpp scene/resources/visual_shader_nodes.cpp
+#: scene/gui/texture_rect.cpp scene/resources/material.cpp
+#: scene/resources/sky.cpp scene/resources/style_box.cpp
+#: scene/resources/visual_shader_nodes.cpp
#, fuzzy
msgid "Texture"
msgstr "Testua"
-#: scene/2d/cpu_particles_2d.cpp scene/2d/mesh_instance_2d.cpp
-#: scene/2d/multimesh_instance_2d.cpp scene/2d/particles_2d.cpp
-#: scene/2d/sprite.cpp scene/resources/style_box.cpp
-msgid "Normal Map"
-msgstr ""
-
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
#, fuzzy
@@ -18457,9 +19704,8 @@ msgid "Normals"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/3d/sprite_3d.cpp scene/resources/material.cpp
-#: scene/resources/particles_material.cpp scene/resources/texture.cpp
-msgid "Flags"
+#: scene/resources/particles_material.cpp
+msgid "Align Y"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
@@ -18480,6 +19726,11 @@ msgid "Initial Velocity"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Velocity Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp servers/physics_2d_server.cpp
#: servers/physics_server.cpp
msgid "Angular Velocity"
@@ -18487,6 +19738,12 @@ msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Velocity Curve"
+msgstr "Hautatu uneko karpeta"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
msgid "Orbit Velocity"
msgstr ""
@@ -18498,6 +19755,22 @@ msgstr "Lineal"
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Accel"
+msgstr "Arrakasta!"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Accel Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Accel Curve"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
msgid "Radial Accel"
msgstr ""
@@ -18507,19 +19780,53 @@ msgid "Tangential Accel"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/2d/joints_2d.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/vehicle_body.cpp
-#: scene/resources/particles_material.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/physics_joint.cpp
+#: scene/3d/vehicle_body.cpp scene/resources/particles_material.cpp
#: servers/audio/effects/audio_effect_reverb.cpp
msgid "Damping"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+msgid "Damping Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Damping Curve"
+msgstr "Trantsizio nodoa"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp scene/3d/light.cpp
+#: scene/resources/particles_material.cpp
msgid "Angle"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+msgid "Angle Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Angle Curve"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#, fuzzy
+msgid "Scale Amount"
+msgstr "Txertatu gakoa hemen"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+msgid "Scale Amount Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+msgid "Scale Amount Curve"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
msgid "Color Ramp"
msgstr ""
@@ -18534,6 +19841,46 @@ msgstr ""
msgid "Hue Variation"
msgstr "Enumerazioak"
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Variation"
+msgstr "Enumerazioak"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Variation Random"
+msgstr "Enumerazioak"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Variation Curve"
+msgstr "Enumerazioak"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Speed Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Speed Curve"
+msgstr "Hautatu uneko karpeta"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Offset Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Offset Curve"
+msgstr "Trantsizio nodoa"
+
#: scene/2d/joints_2d.cpp
msgid "Node A and Node B must be PhysicsBody2Ds"
msgstr ""
@@ -18563,6 +19910,7 @@ msgid "Node B"
msgstr ""
#: scene/2d/joints_2d.cpp scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp
+#: scene/3d/light.cpp scene/3d/physics_joint.cpp
#: scene/resources/environment.cpp
msgid "Bias"
msgstr ""
@@ -18572,7 +19920,7 @@ msgstr ""
msgid "Disable Collision"
msgstr "Gaitu iragazkia"
-#: scene/2d/joints_2d.cpp
+#: scene/2d/joints_2d.cpp scene/3d/physics_joint.cpp
msgid "Softness"
msgstr ""
@@ -18589,7 +19937,7 @@ msgstr ""
msgid "Rest Length"
msgstr ""
-#: scene/2d/joints_2d.cpp scene/3d/vehicle_body.cpp
+#: scene/2d/joints_2d.cpp scene/3d/physics_joint.cpp scene/3d/vehicle_body.cpp
msgid "Stiffness"
msgstr ""
@@ -18609,7 +19957,7 @@ msgid "Texture Scale"
msgstr ""
#: scene/2d/light_2d.cpp scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp
-#: scene/resources/environment.cpp scene/resources/sky.cpp
+#: scene/3d/light.cpp scene/resources/environment.cpp scene/resources/sky.cpp
msgid "Energy"
msgstr ""
@@ -18647,12 +19995,6 @@ msgstr "Sareta atxikitzea"
msgid "Gradient Length"
msgstr "Birkargatu azala"
-#: scene/2d/light_2d.cpp scene/gui/control.cpp
-#: scene/resources/navigation_mesh.cpp
-#, fuzzy
-msgid "Filter"
-msgstr "Iragazkiak..."
-
#: scene/2d/light_2d.cpp
#, fuzzy
msgid "Filter Smooth"
@@ -19048,10 +20390,6 @@ msgid "Applied Forces"
msgstr ""
#: scene/2d/physics_body_2d.cpp
-msgid "Force"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp
msgid "Torque"
msgstr ""
@@ -19064,7 +20402,7 @@ msgid "Sync To Physics"
msgstr ""
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-msgid "Moving platform"
+msgid "Moving Platform"
msgstr ""
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
@@ -19073,7 +20411,7 @@ msgstr ""
#: scene/2d/physics_body_2d.cpp scene/2d/touch_screen_button.cpp
#: scene/3d/physics_body.cpp scene/gui/texture_button.cpp
-#: scene/resources/line_shape_2d.cpp
+#: scene/resources/line_shape_2d.cpp scene/resources/material.cpp
msgid "Normal"
msgstr ""
@@ -19292,6 +20630,34 @@ msgid ""
"as parent."
msgstr ""
+#: scene/2d/visibility_notifier_2d.cpp scene/3d/visibility_notifier.cpp
+#, fuzzy
+msgid "Pause Animations"
+msgstr "Itsatsi animazioa"
+
+#: scene/2d/visibility_notifier_2d.cpp scene/3d/visibility_notifier.cpp
+msgid "Freeze Bodies"
+msgstr ""
+
+#: scene/2d/visibility_notifier_2d.cpp
+#, fuzzy
+msgid "Pause Particles"
+msgstr "Itsatsi animazioa"
+
+#: scene/2d/visibility_notifier_2d.cpp
+#, fuzzy
+msgid "Pause Animated Sprites"
+msgstr "Itsatsi animazioa"
+
+#: scene/2d/visibility_notifier_2d.cpp
+#, fuzzy
+msgid "Process Parent"
+msgstr "Txandakatu modua"
+
+#: scene/2d/visibility_notifier_2d.cpp
+msgid "Physics Process Parent"
+msgstr ""
+
#: scene/3d/area.cpp
msgid "Reverb Bus"
msgstr ""
@@ -19383,6 +20749,7 @@ msgid "Attenuation Filter"
msgstr ""
#: scene/3d/audio_stream_player_3d.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
#: servers/audio/effects/audio_effect_filter.cpp
msgid "Cutoff Hz"
msgstr ""
@@ -19425,11 +20792,6 @@ msgid "Octree"
msgstr ""
#: scene/3d/baked_lightmap.cpp
-#, fuzzy
-msgid "User Data"
-msgstr "Ireki editorearen datu karpeta"
-
-#: scene/3d/baked_lightmap.cpp
msgid "Finding meshes and lights"
msgstr ""
@@ -19674,6 +21036,16 @@ msgid "Ring Axis"
msgstr ""
#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Rotate Y"
+msgstr "Erabili biraketa atxikitzea"
+
+#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Disable Z"
+msgstr "Gaitu iragazkia"
+
+#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
msgid "Flatness"
msgstr ""
@@ -19710,16 +21082,11 @@ msgstr ""
msgid "Dynamic Range"
msgstr ""
-#: scene/3d/gi_probe.cpp
+#: scene/3d/gi_probe.cpp scene/3d/light.cpp
msgid "Normal Bias"
msgstr ""
#: scene/3d/gi_probe.cpp
-#, fuzzy
-msgid "Compress"
-msgstr "Osagaiak"
-
-#: scene/3d/gi_probe.cpp
msgid "Plotting Meshes"
msgstr ""
@@ -19745,15 +21112,29 @@ msgid "Subdiv"
msgstr ""
#: scene/3d/light.cpp
+msgid "Indirect Energy"
+msgstr ""
+
+#: scene/3d/light.cpp
msgid "Negative"
msgstr ""
#: scene/3d/light.cpp
#, fuzzy
+msgid "Specular"
+msgstr "Atxikitze modua:"
+
+#: scene/3d/light.cpp
+#, fuzzy
msgid "Bake Mode"
msgstr "Atxikitze modua:"
#: scene/3d/light.cpp
+#, fuzzy
+msgid "Contact"
+msgstr "Edukiak:"
+
+#: scene/3d/light.cpp
msgid "Reverse Cull Face"
msgstr ""
@@ -19762,10 +21143,27 @@ msgid "Directional Shadow"
msgstr ""
#: scene/3d/light.cpp
+msgid "Split 1"
+msgstr ""
+
+#: scene/3d/light.cpp
+msgid "Split 2"
+msgstr ""
+
+#: scene/3d/light.cpp
+msgid "Split 3"
+msgstr ""
+
+#: scene/3d/light.cpp
msgid "Blend Splits"
msgstr ""
#: scene/3d/light.cpp
+#, fuzzy
+msgid "Bias Split Scale"
+msgstr "Erabili eskala atxikitzea"
+
+#: scene/3d/light.cpp
msgid "Depth Range"
msgstr ""
@@ -19791,6 +21189,11 @@ msgstr ""
msgid "Spot"
msgstr ""
+#: scene/3d/light.cpp
+#, fuzzy
+msgid "Angle Attenuation"
+msgstr "Itsatsi animazioa"
+
#: scene/3d/mesh_instance.cpp
msgid "Software Skinning"
msgstr ""
@@ -19909,6 +21312,60 @@ msgid "Axis Lock"
msgstr ""
#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Linear X"
+msgstr "Lineal"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Linear Y"
+msgstr "Lineal"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Linear Z"
+msgstr "Lineal"
+
+#: scene/3d/physics_body.cpp
+msgid "Angular X"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Angular Y"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Angular Z"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Motion X"
+msgstr "Kargatu animazioa"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Motion Y"
+msgstr "Kargatu animazioa"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Motion Z"
+msgstr "Kargatu animazioa"
+
+#: scene/3d/physics_body.cpp
+msgid "Move Lock X"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Move Lock Y"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Move Lock Z"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
msgid "Body Offset"
msgstr ""
@@ -19941,6 +21398,14 @@ msgid "Exclude Nodes"
msgstr ""
#: scene/3d/physics_joint.cpp
+msgid "Params"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Impulse Clamp"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit"
msgstr ""
@@ -19952,6 +21417,55 @@ msgstr ""
msgid "Lower"
msgstr ""
+#: scene/3d/physics_joint.cpp scene/3d/vehicle_body.cpp
+#, fuzzy
+msgid "Relaxation"
+msgstr "Enumerazioak"
+
+#: scene/3d/physics_joint.cpp
+msgid "Motor"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Target Velocity"
+msgstr "Lineal"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Max Impulse"
+msgstr "Balioa:"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit"
+msgstr "Lineal"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Upper Distance"
+msgstr "Instalatu"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Lower Distance"
+msgstr "Instalatu"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Restitution"
+msgstr "Deskripzioa"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motion"
+msgstr "Lineal"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Ortho"
+msgstr "Lineal"
+
#: scene/3d/physics_joint.cpp
msgid "Upper Angle"
msgstr ""
@@ -19961,6 +21475,15 @@ msgid "Lower Angle"
msgstr ""
#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Angular Motion"
+msgstr "Itsatsi animazioa"
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Ortho"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
msgid "Swing Span"
msgstr ""
@@ -19969,17 +21492,98 @@ msgid "Twist Span"
msgstr ""
#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit X"
+msgstr "Lineal"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motor X"
+msgstr "Lineal"
+
+#: scene/3d/physics_joint.cpp
+msgid "Force Limit"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Spring X"
+msgstr "Lineal"
+
+#: scene/3d/physics_joint.cpp
+msgid "Equilibrium Point"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit X"
msgstr ""
#: scene/3d/physics_joint.cpp
+msgid "Erp"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Motor X"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Spring X"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit Y"
+msgstr "Lineal"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motor Y"
+msgstr "Lineal"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Spring Y"
+msgstr "Lineal"
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit Y"
msgstr ""
#: scene/3d/physics_joint.cpp
+msgid "Angular Motor Y"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Spring Y"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit Z"
+msgstr "Lineal"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motor Z"
+msgstr "Lineal"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Spring Z"
+msgstr "Lineal"
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit Z"
msgstr ""
+#: scene/3d/physics_joint.cpp
+msgid "Angular Motor Z"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Spring Z"
+msgstr ""
+
#: scene/3d/portal.cpp
msgid "The RoomManager should not be a child or grandchild of a Portal."
msgstr ""
@@ -20090,7 +21694,7 @@ msgstr ""
msgid "Use Default Simplify"
msgstr ""
-#: scene/3d/room.cpp
+#: scene/3d/room.cpp scene/3d/room_manager.cpp
msgid "Room Simplify"
msgstr ""
@@ -20128,6 +21732,12 @@ msgstr ""
msgid "Main"
msgstr ""
+#: scene/3d/room_manager.cpp scene/animation/animation_player.cpp
+#: scene/animation/animation_tree.cpp scene/animation/animation_tree_player.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+msgid "Active"
+msgstr ""
+
#: scene/3d/room_manager.cpp
msgid "Roomlist"
msgstr ""
@@ -20150,6 +21760,51 @@ msgid "Gameplay"
msgstr ""
#: scene/3d/room_manager.cpp
+msgid "Gameplay Monitor"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Use Secondary PVS"
+msgstr "Erabili eskala atxikitzea"
+
+#: scene/3d/room_manager.cpp
+msgid "Merge Meshes"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Show Margins"
+msgstr "Edukiak:"
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Debug Sprawl"
+msgstr "Araztu"
+
+#: scene/3d/room_manager.cpp
+msgid "Overlap Warning Threshold"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Preview Camera"
+msgstr "Aurrebista:"
+
+#: scene/3d/room_manager.cpp
+msgid "Portal Depth Limit"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Default Portal Margin"
+msgstr "Aurrebista:"
+
+#: scene/3d/room_manager.cpp
+msgid "Roaming Expansion Margin"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
msgid ""
"RoomList path is invalid.\n"
"Please check the RoomList branch has been assigned in the RoomManager."
@@ -20270,6 +21925,19 @@ msgstr "Pixel atxikitzea"
msgid "Billboard"
msgstr ""
+#: scene/3d/sprite_3d.cpp scene/resources/material.cpp
+#, fuzzy
+msgid "Transparent"
+msgstr "Translazio atzikitzea:"
+
+#: scene/3d/sprite_3d.cpp
+msgid "Shaded"
+msgstr ""
+
+#: scene/3d/sprite_3d.cpp
+msgid "Double Sided"
+msgstr ""
+
#: scene/3d/sprite_3d.cpp
msgid "Alpha Cut"
msgstr ""
@@ -20339,11 +22007,6 @@ msgstr "Erabili adierazpen erregularrak"
msgid "Max Force"
msgstr "Ispilua"
-#: scene/3d/vehicle_body.cpp
-#, fuzzy
-msgid "Relaxation"
-msgstr "Enumerazioak"
-
#: scene/3d/visibility_notifier.cpp
msgid "AABB"
msgstr ""
@@ -20468,8 +22131,9 @@ msgid "Fadeout Time"
msgstr ""
#: scene/animation/animation_blend_tree.cpp
-msgid "autorestart_"
-msgstr ""
+#, fuzzy
+msgid "Auto Restart"
+msgstr "Gorde"
#: scene/animation/animation_blend_tree.cpp
msgid "Autorestart"
@@ -20548,12 +22212,6 @@ msgstr "Klaseko aukerak"
msgid "Default Blend Time"
msgstr "Birkargatu azala"
-#: scene/animation/animation_player.cpp scene/animation/animation_tree.cpp
-#: scene/animation/animation_tree_player.cpp
-#: servers/audio/effects/audio_effect_delay.cpp
-msgid "Active"
-msgstr ""
-
#: scene/animation/animation_player.cpp
msgid "Method Call Mode"
msgstr ""
@@ -20672,10 +22330,6 @@ msgstr "Blend4 nodoa"
msgid "Max Iterations"
msgstr "Funtzioak:"
-#: scene/animation/tween.cpp scene/resources/texture.cpp
-msgid "Repeat"
-msgstr ""
-
#: scene/animation/tween.cpp
msgid "Playback Process Mode"
msgstr ""
@@ -20702,19 +22356,6 @@ msgstr ""
msgid "Alignment"
msgstr ""
-#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
-#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
-#: scene/resources/style_box.cpp
-msgid "Horizontal"
-msgstr ""
-
-#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
-#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
-#: scene/resources/style_box.cpp
-#, fuzzy
-msgid "Vertical"
-msgstr "Propietateak"
-
#: scene/gui/base_button.cpp
msgid "Shortcut In Tooltip"
msgstr ""
@@ -20806,10 +22447,6 @@ msgid "HSV"
msgstr ""
#: scene/gui/color_picker.cpp
-msgid "Raw"
-msgstr ""
-
-#: scene/gui/color_picker.cpp
msgid "Switch between hexadecimal and code values."
msgstr ""
@@ -20865,6 +22502,30 @@ msgid "Focus"
msgstr ""
#: scene/gui/control.cpp
+msgid "Neighbour Left"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Neighbour Top"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Neighbour Right"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Neighbour Bottom"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Next"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Previous"
+msgstr ""
+
+#: scene/gui/control.cpp
msgid "Mouse"
msgstr ""
@@ -20900,7 +22561,7 @@ msgid "Dialog"
msgstr ""
#: scene/gui/dialogs.cpp
-msgid "Hide On Ok"
+msgid "Hide On OK"
msgstr ""
#: scene/gui/dialogs.cpp scene/gui/label.cpp
@@ -20994,7 +22655,7 @@ msgid "Timers"
msgstr "Denbora:"
#: scene/gui/item_list.cpp scene/gui/popup_menu.cpp scene/gui/tree.cpp
-msgid "Incremental Search Max Interval (msec)"
+msgid "Incremental Search Max Interval Msec"
msgstr ""
#: scene/gui/item_list.cpp scene/gui/tree.cpp
@@ -21522,6 +23183,26 @@ msgstr "Blend4 nodoa"
msgid "Nine Patch Stretch"
msgstr "Interpolazio mota"
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Left"
+msgstr "Erabili biraketa atxikitzea"
+
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Top"
+msgstr "Erabili biraketa atxikitzea"
+
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Right"
+msgstr "Erabili biraketa atxikitzea"
+
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Bottom"
+msgstr "Erabili biraketa atxikitzea"
+
#: scene/gui/tree.cpp
msgid "Custom Minimum Height"
msgstr ""
@@ -21557,8 +23238,9 @@ msgid "Paused"
msgstr ""
#: scene/gui/video_player.cpp
-msgid "Buffering (msec)"
-msgstr ""
+#, fuzzy
+msgid "Buffering Msec"
+msgstr "Sareta atxikitzea"
#: scene/gui/video_player.cpp
msgid "Stream Position"
@@ -21887,6 +23569,22 @@ msgid "Shadow Atlas"
msgstr ""
#: scene/main/viewport.cpp
+msgid "Quad 0"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 1"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 2"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 3"
+msgstr ""
+
+#: scene/main/viewport.cpp
#, fuzzy
msgid "Canvas Transform"
msgstr "Animazioaren transformazioa aldatu"
@@ -21901,6 +23599,10 @@ msgid "Tooltip Delay (sec)"
msgstr ""
#: scene/register_scene_types.cpp
+msgid "Swap OK Cancel"
+msgstr ""
+
+#: scene/register_scene_types.cpp
msgid "Use hiDPI"
msgstr ""
@@ -21913,21 +23615,6 @@ msgid "Custom Font"
msgstr ""
#: scene/resources/audio_stream_sample.cpp
-#, fuzzy
-msgid "Loop Mode"
-msgstr "Atxikitze modua:"
-
-#: scene/resources/audio_stream_sample.cpp
-#, fuzzy
-msgid "Loop Begin"
-msgstr "Atxikitze modua:"
-
-#: scene/resources/audio_stream_sample.cpp
-#, fuzzy
-msgid "Loop End"
-msgstr "Atxikitze modua:"
-
-#: scene/resources/audio_stream_sample.cpp
#: servers/audio/effects/audio_stream_generator.cpp servers/audio_server.cpp
msgid "Mix Rate"
msgstr ""
@@ -21982,6 +23669,16 @@ msgid "Extra Spacing"
msgstr "Klaseko aukerak"
#: scene/resources/dynamic_font.cpp
+#, fuzzy
+msgid "Char"
+msgstr "Talka formak ikusgai"
+
+#: scene/resources/dynamic_font.cpp scene/resources/world.cpp
+#: scene/resources/world_2d.cpp
+msgid "Space"
+msgstr ""
+
+#: scene/resources/dynamic_font.cpp
msgid "Font"
msgstr ""
@@ -22191,6 +23888,43 @@ msgid "Glow"
msgstr ""
#: scene/resources/environment.cpp
+#, fuzzy
+msgid "Levels"
+msgstr "Garatzaileak"
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "1"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "2"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "3"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "4"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "5"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "6"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "7"
+msgstr ""
+
+#: scene/resources/environment.cpp
msgid "Bloom"
msgstr ""
@@ -22277,9 +24011,66 @@ msgid "Next Pass"
msgstr "Hurrengo karpeta/fitxategia"
#: scene/resources/material.cpp
+msgid "Use Shadow To Opacity"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Unshaded"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Vertex Lighting"
+msgstr "Mugitu Bezier puntuak"
+
+#: scene/resources/material.cpp
+msgid "No Depth Test"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Use Point Size"
+msgstr "Pixel atxikitzea"
+
+#: scene/resources/material.cpp
+msgid "World Triplanar"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Fixed Size"
+msgstr "Pixel atxikitzea"
+
+#: scene/resources/material.cpp
+msgid "Albedo Tex Force sRGB"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Do Not Receive Shadows"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Disable Ambient Light"
+msgstr "Gaitu iragazkia"
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Ensure Correct Normals"
+msgstr "3D Transformazioaren pista"
+
+#: scene/resources/material.cpp
msgid "Vertex Color"
msgstr ""
+#: scene/resources/material.cpp
+msgid "Use As Albedo"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Is sRGB"
+msgstr ""
+
#: scene/resources/material.cpp servers/visual_server.cpp
msgid "Parameters"
msgstr ""
@@ -22315,6 +24106,11 @@ msgid "Billboard Mode"
msgstr "Txandakatu modua"
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Billboard Keep Scale"
+msgstr "Txandakatu modua"
+
+#: scene/resources/material.cpp
msgid "Grow"
msgstr ""
@@ -22323,6 +24119,10 @@ msgid "Grow Amount"
msgstr ""
#: scene/resources/material.cpp
+msgid "Use Alpha Scissor"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Alpha Scissor Threshold"
msgstr ""
@@ -22354,10 +24154,20 @@ msgid "Metallic Specular"
msgstr ""
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Metallic Texture"
+msgstr "Kide mota"
+
+#: scene/resources/material.cpp
msgid "Metallic Texture Channel"
msgstr ""
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Roughness Texture"
+msgstr "Testua"
+
+#: scene/resources/material.cpp
msgid "Roughness Texture Channel"
msgstr ""
@@ -22375,6 +24185,16 @@ msgid "Emission Operator"
msgstr ""
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Emission On UV2"
+msgstr "Erabili adierazpen erregularrak"
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Emission Texture"
+msgstr "Testua"
+
+#: scene/resources/material.cpp
msgid "NormalMap"
msgstr ""
@@ -22387,6 +24207,11 @@ msgid "Rim Tint"
msgstr ""
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Rim Texture"
+msgstr "Testua"
+
+#: scene/resources/material.cpp
msgid "Clearcoat"
msgstr ""
@@ -22395,14 +24220,27 @@ msgid "Clearcoat Gloss"
msgstr ""
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Clearcoat Texture"
+msgstr "Editatu azala"
+
+#: scene/resources/material.cpp
msgid "Anisotropy"
msgstr ""
#: scene/resources/material.cpp
+msgid "Anisotropy Flowmap"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Ambient Occlusion"
msgstr ""
#: scene/resources/material.cpp
+msgid "On UV2"
+msgstr ""
+
+#: scene/resources/material.cpp
#, fuzzy
msgid "Texture Channel"
msgstr "Txandakatu modua"
@@ -22440,6 +24278,11 @@ msgstr "Trantsizio nodoa"
#: scene/resources/material.cpp
#, fuzzy
+msgid "Transmission Texture"
+msgstr "Trantsizio nodoa"
+
+#: scene/resources/material.cpp
+#, fuzzy
msgid "Refraction"
msgstr "Enumerazioak"
@@ -22456,6 +24299,10 @@ msgid "UV1"
msgstr ""
#: scene/resources/material.cpp
+msgid "Triplanar"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Triplanar Sharpness"
msgstr ""
@@ -22653,6 +24500,15 @@ msgstr "Editatu azala"
msgid "Point Count"
msgstr "Txertatu gakoa hemen"
+#: scene/resources/particles_material.cpp
+msgid "Scale Random"
+msgstr ""
+
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Scale Curve"
+msgstr "Hautatu uneko karpeta"
+
#: scene/resources/physics_material.cpp
msgid "Rough"
msgstr ""
@@ -22710,10 +24566,6 @@ msgid "A"
msgstr ""
#: scene/resources/shader.cpp
-msgid "Code"
-msgstr ""
-
-#: scene/resources/shader.cpp
msgid "Custom Defines"
msgstr ""
@@ -22802,14 +24654,6 @@ msgid "Grow End"
msgstr ""
#: scene/resources/texture.cpp
-msgid "Storage"
-msgstr ""
-
-#: scene/resources/texture.cpp
-msgid "Lossy Quality"
-msgstr ""
-
-#: scene/resources/texture.cpp
#, fuzzy
msgid "Load Path"
msgstr "Kopiatu bidea"
@@ -22935,10 +24779,6 @@ msgstr ""
msgid "Fallback Environment"
msgstr ""
-#: scene/resources/world.cpp scene/resources/world_2d.cpp
-msgid "Space"
-msgstr ""
-
#: scene/resources/world.cpp
#, fuzzy
msgid "Scenario"
@@ -23015,8 +24855,33 @@ msgstr ""
msgid "Wet"
msgstr ""
-#: servers/audio/effects/audio_effect_compressor.cpp
-msgid "Threshold"
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "Voice"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+msgid "Delay (ms)"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_phaser.cpp
+msgid "Rate Hz"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "Depth (ms)"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+msgid "Level dB"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+#: servers/audio/effects/audio_effect_panner.cpp
+msgid "Pan"
msgstr ""
#: servers/audio/effects/audio_effect_compressor.cpp
@@ -23041,19 +24906,6 @@ msgid "Tap 1"
msgstr ""
#: servers/audio/effects/audio_effect_delay.cpp
-msgid "Delay (ms)"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_delay.cpp
-msgid "Level dB"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_delay.cpp
-#: servers/audio/effects/audio_effect_panner.cpp
-msgid "Pan"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_delay.cpp
msgid "Tap 2"
msgstr ""
@@ -23112,10 +24964,6 @@ msgstr ""
msgid "Range Max Hz"
msgstr ""
-#: servers/audio/effects/audio_effect_phaser.cpp
-msgid "Rate Hz"
-msgstr ""
-
#: servers/audio/effects/audio_effect_pitch_shift.cpp
msgid "Oversampling"
msgstr ""
@@ -23130,7 +24978,7 @@ msgid "Predelay"
msgstr ""
#: servers/audio/effects/audio_effect_reverb.cpp
-msgid "(msec)"
+msgid "Msec"
msgstr ""
#: servers/audio/effects/audio_effect_reverb.cpp
diff --git a/editor/translations/extract.py b/editor/translations/extract.py
index dd86bd1c1f..bd32fc01c7 100755
--- a/editor/translations/extract.py
+++ b/editor/translations/extract.py
@@ -3,12 +3,47 @@
import enum
import fnmatch
import os
+import os.path
import re
import shutil
import subprocess
import sys
+class Message:
+ __slots__ = ("msgid", "msgid_plural", "msgctxt", "comments", "locations")
+
+ def format(self):
+ lines = []
+
+ if self.comments:
+ for i, content in enumerate(self.comments):
+ prefix = "#. TRANSLATORS:" if i == 0 else "#."
+ lines.append(prefix + content)
+
+ lines.append("#: " + " ".join(self.locations))
+
+ if self.msgctxt:
+ lines.append('msgctxt "{}"'.format(self.msgctxt))
+
+ if self.msgid_plural:
+ lines += [
+ 'msgid "{}"'.format(self.msgid),
+ 'msgid_plural "{}"'.format(self.msgid_plural),
+ 'msgstr[0] ""',
+ 'msgstr[1] ""',
+ ]
+ else:
+ lines += [
+ 'msgid "{}"'.format(self.msgid),
+ 'msgstr ""',
+ ]
+
+ return "\n".join(lines)
+
+
+messages_map = {} # (id, context) -> Message.
+
line_nb = False
for arg in sys.argv[1:]:
@@ -34,17 +69,14 @@ matches.sort()
remaps = {}
-remap_re = re.compile(r'capitalize_string_remaps\["(.+)"\] = "(.+)";')
+remap_re = re.compile(r'^\t*capitalize_string_remaps\["(?P<from>.+)"\] = (String::utf8\()?"(?P<to>.+)"')
with open("editor/editor_property_name_processor.cpp") as f:
for line in f:
m = remap_re.search(line)
if m:
- remaps[m.group(1)] = m.group(2)
+ remaps[m.group("from")] = m.group("to")
-unique_str = []
-unique_loc = {}
-ctx_group = {} # Store msgctx, msg, and locations.
main_po = """
# LANGUAGE translation of the Godot Engine editor.
# Copyright (c) 2007-2022 Juan Linietsky, Ariel Manzur.
@@ -70,24 +102,35 @@ class ExtractType(enum.IntEnum):
GROUP = 3
-# Regex "(?P<name>(?:[^"\\]|\\.)*)" creates a group named `name` that matches a string.
+# Regex "(?P<name>([^"\\]|\\.)*)" creates a group named `name` that matches a string.
message_patterns = {
- re.compile(r'RTR\("(?P<message>(?:[^"\\]|\\.)*)"(?:, "(?P<context>(?:[^"\\]|\\.)*)")?\)'): ExtractType.TEXT,
- re.compile(r'TTR\("(?P<message>(?:[^"\\]|\\.)*)"(?:, "(?P<context>(?:[^"\\]|\\.)*)")?\)'): ExtractType.TEXT,
- re.compile(r'TTRC\("(?P<message>(?:[^"\\]|\\.)*)"\)'): ExtractType.TEXT,
+ re.compile(r'RTR\("(?P<message>([^"\\]|\\.)*)"(, "(?P<context>([^"\\]|\\.)*)")?\)'): ExtractType.TEXT,
+ re.compile(r'TTR\("(?P<message>([^"\\]|\\.)*)"(, "(?P<context>([^"\\]|\\.)*)")?\)'): ExtractType.TEXT,
+ re.compile(r'TTRC\("(?P<message>([^"\\]|\\.)*)"\)'): ExtractType.TEXT,
re.compile(
- r'TTRN\("(?P<message>(?:[^"\\]|\\.)*)", "(?P<plural_message>(?:[^"\\]|\\.)*)",[^,)]+?(?:, "(?P<context>(?:[^"\\]|\\.)*)")?\)'
+ r'TTRN\("(?P<message>([^"\\]|\\.)*)", "(?P<plural_message>([^"\\]|\\.)*)",[^,)]+?(, "(?P<context>([^"\\]|\\.)*)")?\)'
): ExtractType.TEXT,
re.compile(
- r'RTRN\("(?P<message>(?:[^"\\]|\\.)*)", "(?P<plural_message>(?:[^"\\]|\\.)*)",[^,)]+?(?:, "(?P<context>(?:[^"\\]|\\.)*)")?\)'
+ r'RTRN\("(?P<message>([^"\\]|\\.)*)", "(?P<plural_message>([^"\\]|\\.)*)",[^,)]+?(, "(?P<context>([^"\\]|\\.)*)")?\)'
): ExtractType.TEXT,
re.compile(r'_initial_set\("(?P<message>[^"]+?)",'): ExtractType.PROPERTY_PATH,
- re.compile(r'GLOBAL_DEF(?:_RST)?\("(?P<message>[^".]+?)",'): ExtractType.PROPERTY_PATH,
- re.compile(r'EDITOR_DEF(?:_RST)?\("(?P<message>[^"]+?)",'): ExtractType.PROPERTY_PATH,
+ re.compile(r'GLOBAL_DEF(_RST)?(_NOVAL)?(_BASIC)?\("(?P<message>[^"]+?)",'): ExtractType.PROPERTY_PATH,
+ re.compile(r'GLOBAL_DEF_BASIC\(vformat\("(?P<message>layer_names/\w+)/layer_%d"'): ExtractType.PROPERTY_PATH,
+ re.compile(r'EDITOR_DEF(_RST)?\("(?P<message>[^"]+?)",'): ExtractType.PROPERTY_PATH,
+ re.compile(
+ r'EDITOR_SETTING(_USAGE)?\(Variant::[_A-Z0-9]+, [_A-Z0-9]+, "(?P<message>[^"]+?)",'
+ ): ExtractType.PROPERTY_PATH,
+ re.compile(
+ r'(ADD_PROPERTYI?|ImportOption|ExportOption)\(PropertyInfo\(Variant::[_A-Z0-9]+, "(?P<message>[^"]+?)"[,)]'
+ ): ExtractType.PROPERTY_PATH,
re.compile(
- r'ADD_PROPERTY\(PropertyInfo\(Variant::[_A-Z0-9]+, "(?P<message>[^"]+?)"[,)]'
+ r"(?!#define )LIMPL_PROPERTY(_RANGE)?\(Variant::[_A-Z0-9]+, (?P<message>[^,]+?),"
): ExtractType.PROPERTY_PATH,
re.compile(r'ADD_GROUP\("(?P<message>[^"]+?)", "(?P<prefix>[^"]*?)"\)'): ExtractType.GROUP,
+ re.compile(r'#define WRTC_\w+ "(?P<message>[^"]+?)"'): ExtractType.PROPERTY_PATH,
+}
+theme_property_patterns = {
+ re.compile(r'set_(constant|font|font_size|stylebox|color|icon)\("(?P<message>[^"]+)", '): ExtractType.PROPERTY_PATH,
}
@@ -116,95 +159,6 @@ def _process_editor_string(name):
return " ".join(capitalized_parts)
-def _write_message(msgctx, msg, msg_plural, location):
- global main_po
- main_po += "#: " + location + "\n"
- if msgctx != "":
- main_po += 'msgctxt "' + msgctx + '"\n'
- main_po += 'msgid "' + msg + '"\n'
- if msg_plural != "":
- main_po += 'msgid_plural "' + msg_plural + '"\n'
- main_po += 'msgstr[0] ""\n'
- main_po += 'msgstr[1] ""\n\n'
- else:
- main_po += 'msgstr ""\n\n'
-
-
-def _add_additional_location(msgctx, msg, location):
- global main_po
- # Add additional location to previous occurrence.
- if msgctx != "":
- msg_pos = main_po.find('\nmsgctxt "' + msgctx + '"\nmsgid "' + msg + '"')
- else:
- msg_pos = main_po.find('\nmsgid "' + msg + '"')
-
- if msg_pos == -1:
- print("Someone apparently thought writing Python was as easy as GDScript. Ping Akien.")
- main_po = main_po[:msg_pos] + " " + location + main_po[msg_pos:]
-
-
-def _write_translator_comment(msgctx, msg, translator_comment):
- if translator_comment == "":
- return
-
- global main_po
- if msgctx != "":
- msg_pos = main_po.find('\nmsgctxt "' + msgctx + '"\nmsgid "' + msg + '"')
- else:
- msg_pos = main_po.find('\nmsgid "' + msg + '"')
-
- # If it's a new message, just append comment to the end of PO file.
- if msg_pos == -1:
- main_po += _format_translator_comment(translator_comment, True)
- return
-
- # Find position just before location. Translator comment will be added there.
- translator_comment_pos = main_po.rfind("\n\n#", 0, msg_pos) + 2
- if translator_comment_pos - 2 == -1:
- print("translator_comment_pos not found")
- return
-
- # Check if a previous translator comment already exists. If so, merge them together.
- if main_po.find("TRANSLATORS:", translator_comment_pos, msg_pos) != -1:
- translator_comment_pos = main_po.find("\n#:", translator_comment_pos, msg_pos) + 1
- if translator_comment_pos == 0:
- print('translator_comment_pos after "TRANSLATORS:" not found')
- return
- main_po = (
- main_po[:translator_comment_pos]
- + _format_translator_comment(translator_comment, False)
- + main_po[translator_comment_pos:]
- )
- return
-
- main_po = (
- main_po[:translator_comment_pos]
- + _format_translator_comment(translator_comment, True)
- + main_po[translator_comment_pos:]
- )
-
-
-def _format_translator_comment(comment, new):
- if not comment:
- return ""
-
- comment_lines = comment.split("\n")
-
- formatted_comment = ""
- if not new:
- for comment in comment_lines:
- formatted_comment += "#. " + comment.strip() + "\n"
- return formatted_comment
-
- formatted_comment = "#. TRANSLATORS: "
- for i in range(len(comment_lines)):
- if i == 0:
- formatted_comment += comment_lines[i].strip() + "\n"
- else:
- formatted_comment += "#. " + comment_lines[i].strip() + "\n"
- return formatted_comment
-
-
def _is_block_translator_comment(translator_line):
line = translator_line.strip()
if line.find("//") == 0:
@@ -250,6 +204,10 @@ def process_file(f, fname):
translator_comment = ""
current_group = ""
+ patterns = message_patterns
+ if os.path.basename(fname) == "default_theme.cpp":
+ patterns = {**message_patterns, **theme_property_patterns}
+
while l:
# Detect translator comments.
@@ -267,7 +225,7 @@ def process_file(f, fname):
translator_comment = translator_comment[:-1] # Remove extra \n at the end.
if not reading_translator_comment:
- for pattern, extract_type in message_patterns.items():
+ for pattern, extract_type in patterns.items():
for m in pattern.finditer(l):
location = os.path.relpath(fname).replace("\\", "/")
if line_nb:
@@ -286,6 +244,8 @@ def process_file(f, fname):
msg = msg[len(current_group) :]
else:
current_group = ""
+ if "." in msg: # Strip feature tag.
+ msg = msg.split(".", 1)[0]
for part in msg.split("/"):
_add_message(_process_editor_string(part), msg_plural, msgctx, location, translator_comment)
elif extract_type == ExtractType.GROUP:
@@ -298,32 +258,20 @@ def process_file(f, fname):
def _add_message(msg, msg_plural, msgctx, location, translator_comment):
- global main_po, unique_str, unique_loc
-
- # Write translator comment.
- _write_translator_comment(msgctx, msg, translator_comment)
- translator_comment = ""
-
- if msgctx != "":
- # If it's a new context or a new message within an existing context, then write new msgid.
- # Else add location to existing msgid.
- if not msgctx in ctx_group:
- _write_message(msgctx, msg, msg_plural, location)
- ctx_group[msgctx] = {msg: [location]}
- elif not msg in ctx_group[msgctx]:
- _write_message(msgctx, msg, msg_plural, location)
- ctx_group[msgctx][msg] = [location]
- elif not location in ctx_group[msgctx][msg]:
- _add_additional_location(msgctx, msg, location)
- ctx_group[msgctx][msg].append(location)
- else:
- if not msg in unique_str:
- _write_message(msgctx, msg, msg_plural, location)
- unique_str.append(msg)
- unique_loc[msg] = [location]
- elif not location in unique_loc[msg]:
- _add_additional_location(msgctx, msg, location)
- unique_loc[msg].append(location)
+ key = (msg, msgctx)
+ message = messages_map.get(key)
+ if not message:
+ message = Message()
+ message.msgid = msg
+ message.msgid_plural = msg_plural
+ message.msgctxt = msgctx
+ message.locations = []
+ message.comments = []
+ messages_map[key] = message
+ if location not in message.locations:
+ message.locations.append(location)
+ if translator_comment and translator_comment not in message.comments:
+ message.comments.append(translator_comment)
print("Updating the editor.pot template...")
@@ -332,6 +280,8 @@ for fname in matches:
with open(fname, "r", encoding="utf8") as f:
process_file(f, fname)
+main_po += "\n\n".join(message.format() for message in messages_map.values())
+
with open("editor.pot", "w") as f:
f.write(main_po)
diff --git a/editor/translations/fa.po b/editor/translations/fa.po
index 723704ab97..c8e03f9f1e 100644
--- a/editor/translations/fa.po
+++ b/editor/translations/fa.po
@@ -40,7 +40,7 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=n > 1;\n"
"X-Generator: Weblate 4.10.1\n"
-#: core/bind/core_bind.cpp
+#: core/bind/core_bind.cpp main/main.cpp
msgid "Tablet Driver"
msgstr ""
@@ -141,8 +141,8 @@ msgstr "برداشتن موج"
#: core/bind/core_bind.cpp editor/editor_settings.cpp main/main.cpp
#: modules/gdscript/gdscript_editor.cpp modules/gridmap/grid_map.cpp
#: modules/mono/csharp_script.cpp modules/visual_script/visual_script_nodes.cpp
-#: scene/2d/tile_map.cpp scene/3d/camera.cpp scene/gui/control.cpp
-#: scene/gui/graph_edit.cpp scene/main/viewport.cpp
+#: scene/2d/tile_map.cpp scene/3d/camera.cpp scene/3d/light.cpp
+#: scene/gui/control.cpp scene/gui/graph_edit.cpp scene/main/viewport.cpp
#: scene/resources/dynamic_font.cpp scene/resources/navigation_mesh.cpp
#: scene/resources/primitive_meshes.cpp scene/resources/sky.cpp
#: scene/resources/style_box.cpp scene/resources/texture.cpp
@@ -242,8 +242,7 @@ msgid "Data"
msgstr ""
#: core/io/file_access_network.cpp core/register_core_types.cpp
-#: editor/editor_settings.cpp editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp main/main.cpp
+#: editor/editor_settings.cpp main/main.cpp
#: modules/gdscript/language_server/gdscript_language_server.cpp
#, fuzzy
msgid "Network"
@@ -523,9 +522,10 @@ msgstr "بازنشانی بزرگنمایی"
msgid "Relative"
msgstr "GDNative"
-#: core/os/input_event.cpp scene/2d/camera_2d.cpp
-#: scene/3d/interpolated_camera.cpp scene/animation/animation_player.cpp
-#: scene/resources/environment.cpp
+#: core/os/input_event.cpp scene/2d/camera_2d.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/interpolated_camera.cpp
+#: scene/animation/animation_player.cpp scene/resources/environment.cpp
+#: scene/resources/particles_material.cpp
#, fuzzy
msgid "Speed"
msgstr "بومی"
@@ -576,8 +576,9 @@ msgstr "تغییر بده"
msgid "Pitch"
msgstr "سوییچ"
-#: core/os/input_event.cpp scene/2d/physics_body_2d.cpp
-#: scene/3d/physics_body.cpp
+#: core/os/input_event.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/physics_body_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/3d/physics_body.cpp scene/resources/particles_material.cpp
msgid "Velocity"
msgstr ""
@@ -595,6 +596,8 @@ msgid "Controller Value"
msgstr ""
#: core/project_settings.cpp editor/editor_node.cpp main/main.cpp
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/windows/export/export.cpp
#, fuzzy
msgid "Application"
msgstr "Ø§ÙØ²ÙˆØ¯Ù† وظیÙÙ‡"
@@ -612,13 +615,16 @@ msgstr "تنظیمات طرح…"
#: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp
#: editor/editor_plugin_settings.cpp editor/editor_profiler.cpp
#: editor/project_manager.cpp editor/settings_config_dialog.cpp
-#: modules/gdnative/nativescript/nativescript.cpp scene/2d/area_2d.cpp
-#: scene/3d/area.cpp scene/main/node.cpp
+#: modules/gdnative/nativescript/nativescript.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/osx/export/export.cpp scene/2d/area_2d.cpp scene/3d/area.cpp
+#: scene/main/node.cpp
msgid "Name"
msgstr "نام"
#: core/project_settings.cpp editor/editor_help.cpp
-#: modules/visual_script/visual_script_nodes.cpp
+#: modules/visual_script/visual_script_nodes.cpp platform/uwp/export/export.cpp
+#: platform/windows/export/export.cpp
msgid "Description"
msgstr "تعریÙ"
@@ -656,7 +662,7 @@ msgid "Custom User Dir Name"
msgstr ""
#: core/project_settings.cpp editor/animation_track_editor.cpp
-#: editor/editor_audio_buses.cpp servers/audio_server.cpp
+#: editor/editor_audio_buses.cpp main/main.cpp servers/audio_server.cpp
msgid "Audio"
msgstr "صدا"
@@ -813,10 +819,13 @@ msgstr "صاÙÛŒ:"
msgid "Sharpen Intensity"
msgstr ""
-#: core/project_settings.cpp editor/editor_node.cpp editor/editor_settings.cpp
-#: editor/plugins/script_editor_plugin.cpp editor/project_export.cpp
-#: main/main.cpp modules/gdscript/gdscript.cpp
-#: modules/visual_script/visual_script.cpp scene/3d/room_manager.cpp
+#: core/project_settings.cpp editor/editor_export.cpp editor/editor_node.cpp
+#: editor/editor_settings.cpp editor/plugins/script_editor_plugin.cpp
+#: editor/project_export.cpp main/main.cpp modules/gdscript/gdscript.cpp
+#: modules/visual_script/visual_script.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp scene/3d/room_manager.cpp
#: scene/main/scene_tree.cpp scene/resources/shape_2d.cpp
#: servers/visual_server.cpp
msgid "Debug"
@@ -1049,6 +1058,7 @@ msgid "Subsurface Scattering"
msgstr ""
#: drivers/gles3/rasterizer_scene_gles3.cpp
+#: editor/import/resource_importer_texture.cpp
#: editor/plugins/spatial_editor_plugin.cpp modules/gltf/gltf_node.cpp
#: modules/gridmap/grid_map.cpp scene/2d/cpu_particles_2d.cpp
#: scene/2d/node_2d.cpp scene/2d/parallax_layer.cpp scene/2d/polygon_2d.cpp
@@ -1346,6 +1356,7 @@ msgid "Editors"
msgstr "ویرایشگر"
#: editor/animation_track_editor.cpp editor/editor_settings.cpp
+#: editor/import/resource_importer_scene.cpp
#: editor/plugins/animation_player_editor_plugin.cpp editor/scene_tree_dock.cpp
#: scene/2d/animated_sprite.cpp scene/2d/cpu_particles_2d.cpp
#: scene/2d/sprite.cpp scene/3d/cpu_particles.cpp scene/3d/sprite_3d.cpp
@@ -1576,14 +1587,14 @@ msgstr "مقدار مرحله انیمیشن."
msgid "Seconds"
msgstr "ثانیه ها"
-#: editor/animation_track_editor.cpp
+#: editor/animation_track_editor.cpp editor/import/resource_importer_scene.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp main/main.cpp
#: scene/resources/texture.cpp
msgid "FPS"
msgstr "لحظه بر ثانیه"
#: editor/animation_track_editor.cpp editor/editor_plugin_settings.cpp
-#: editor/editor_resource_picker.cpp
+#: editor/editor_resource_picker.cpp editor/import/resource_importer_wav.cpp
#: editor/plugins/polygon_2d_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
@@ -2546,7 +2557,9 @@ msgid "Remove Autoload"
msgstr "بارگیری خودکار را حذ٠کنید"
#: editor/editor_autoload_settings.cpp editor/editor_plugin_settings.cpp
-#: modules/gdscript/gdscript.cpp scene/2d/polygon_2d.cpp scene/3d/area.cpp
+#: modules/gdscript/gdscript.cpp platform/android/export/export_plugin.cpp
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#: scene/2d/polygon_2d.cpp scene/3d/area.cpp scene/3d/physics_joint.cpp
#: scene/3d/reflection_probe.cpp scene/main/canvas_layer.cpp
#: scene/resources/material.cpp servers/visual_server.cpp
msgid "Enable"
@@ -2711,6 +2724,58 @@ msgstr ""
#: editor/editor_export.cpp platform/android/export/export_plugin.cpp
#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Custom Template"
+msgstr "عضوها"
+
+#: editor/editor_export.cpp editor/project_export.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp
+msgid "Release"
+msgstr ""
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Binary Format"
+msgstr "انتقال را در انیمیشن تغییر بده"
+
+#: editor/editor_export.cpp
+msgid "64 Bits"
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Embed PCK"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Texture Format"
+msgstr "انتخاب حالت"
+
+#: editor/editor_export.cpp
+msgid "BPTC"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "S3TC"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "ETC"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "ETC2"
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "No BPTC Fallbacks"
+msgstr ""
+
+#: editor/editor_export.cpp platform/android/export/export_plugin.cpp
+#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
msgid "Custom debug template not found."
msgstr ""
@@ -2891,6 +2956,7 @@ msgid "Make Current"
msgstr "ساختن جریان"
#: editor/editor_feature_profile.cpp editor/editor_node.cpp
+#: editor/import/resource_importer_scene.cpp
#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
msgid "Import"
msgstr "وارد کردن"
@@ -3021,8 +3087,11 @@ msgstr "موÙقیت!"
msgid "Display Mode"
msgstr "حالت صدور:"
-#: editor/editor_file_dialog.cpp main/main.cpp modules/csg/csg_shape.cpp
-#: modules/visual_script/visual_script_nodes.cpp
+#: editor/editor_file_dialog.cpp
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+#: editor/import/resource_importer_wav.cpp main/main.cpp
+#: modules/csg/csg_shape.cpp modules/visual_script/visual_script_nodes.cpp
#: modules/visual_script/visual_script_yield_nodes.cpp scene/2d/light_2d.cpp
#: scene/2d/physics_body_2d.cpp scene/2d/tile_map.cpp
#: scene/3d/baked_lightmap.cpp scene/3d/light.cpp scene/3d/physics_body.cpp
@@ -3159,7 +3228,9 @@ msgstr "(در حال) وارد کردن دوباره عست ها"
msgid "Reimport Missing Imported Files"
msgstr ""
-#: editor/editor_help.cpp
+#: editor/editor_help.cpp scene/2d/camera_2d.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/resources/dynamic_font.cpp
+#: scene/resources/style_box.cpp
msgid "Top"
msgstr ""
@@ -3211,6 +3282,7 @@ msgid "Fonts"
msgstr ""
#: editor/editor_help.cpp editor/plugins/theme_editor_plugin.cpp
+#: platform/iphone/export/export.cpp
msgid "Icons"
msgstr ""
@@ -3374,7 +3446,9 @@ msgstr ""
msgid "Pin value [Disabled because '%s' is editor-only]"
msgstr ""
-#: editor/editor_inspector.cpp editor/scene_tree_dock.cpp
+#: editor/editor_inspector.cpp
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+#: editor/scene_tree_dock.cpp
#: modules/visual_script/visual_script_func_nodes.cpp
#: modules/visual_script/visual_script_nodes.cpp
#: modules/visual_script/visual_script_property_selector.cpp
@@ -3688,6 +3762,15 @@ msgid "Quick Open Script..."
msgstr "گشودن سریع اسکریپت..."
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Save & Reload"
+msgstr "ذخیره و خروج"
+
+#: editor/editor_node.cpp
+msgid "Save changes to '%s' before reloading?"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "Save & Close"
msgstr "ذخیره و بستن"
@@ -3800,6 +3883,10 @@ msgid "Open Project Manager?"
msgstr "باز شدن مدیر پروژه؟"
#: editor/editor_node.cpp
+msgid "Save changes to the following scene(s) before reloading?"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "Save & Quit"
msgstr "ذخیره و خروج"
@@ -4049,8 +4136,8 @@ msgstr "تغییر بده"
#: editor/editor_node.cpp
#, fuzzy
-msgid "Translate Properties"
-msgstr "خصوصیات"
+msgid "Localize Settings"
+msgstr "بومی‌سازی"
#: editor/editor_node.cpp
#, fuzzy
@@ -4067,8 +4154,8 @@ msgstr ""
#: editor/editor_node.cpp
#, fuzzy
-msgid "Capitalize Properties"
-msgstr "خصوصیات"
+msgid "Default Property Name Style"
+msgstr "مسیر پروژه:"
#: editor/editor_node.cpp
msgid "Default Float Step"
@@ -4656,7 +4743,9 @@ msgstr "Ø§ÙØ²ÙˆÙ†Ù‡ های نصب شده:"
msgid "Update"
msgstr "بروز رسانی"
-#: editor/editor_plugin_settings.cpp
+#: editor/editor_plugin_settings.cpp platform/android/export/export_plugin.cpp
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp
#, fuzzy
msgid "Version"
msgstr "نسخه:"
@@ -5671,7 +5760,7 @@ msgstr ""
msgid "Rect Custom Position"
msgstr "برداشتن موج"
-#: editor/editor_settings.cpp
+#: editor/editor_settings.cpp platform/android/export/export_plugin.cpp
msgid "Screen"
msgstr ""
@@ -5697,6 +5786,19 @@ msgid "Editor SSL Certificates"
msgstr "ویرایشگر ترجیحات"
#: editor/editor_settings.cpp
+msgid "HTTP Proxy"
+msgstr ""
+
+#: editor/editor_settings.cpp
+msgid "Host"
+msgstr ""
+
+#: editor/editor_settings.cpp editor/fileserver/editor_file_server.cpp
+#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp
+msgid "Port"
+msgstr ""
+
+#: editor/editor_settings.cpp
msgid "Project Manager"
msgstr "مدیر پروژه"
@@ -5739,7 +5841,8 @@ msgstr ""
msgid "String Color"
msgstr "ذخیره ÙØ§ÛŒÙ„:"
-#: editor/editor_settings.cpp
+#: editor/editor_settings.cpp platform/javascript/export/export.cpp
+#: platform/uwp/export/export.cpp
#, fuzzy
msgid "Background Color"
msgstr "نام نامعتبر."
@@ -5914,22 +6017,6 @@ msgid "Starting the download..."
msgstr ""
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "HTTP Proxy"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Host"
-msgstr ""
-
-#: editor/export_template_manager.cpp editor/fileserver/editor_file_server.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp main/main.cpp
-#: modules/mono/mono_gd/gd_mono.cpp
-msgid "Port"
-msgstr ""
-
-#: editor/export_template_manager.cpp
#, fuzzy
msgid "Error requesting URL:"
msgstr "خطای آدرس درخواستی: "
@@ -6193,6 +6280,7 @@ msgstr ""
#: editor/fileserver/editor_file_server.cpp
#: editor/plugins/version_control_editor_plugin.cpp
+#: platform/uwp/export/export.cpp platform/windows/export/export.cpp
msgid "Password"
msgstr ""
@@ -6598,6 +6686,115 @@ msgstr ""
msgid "Use Ambient"
msgstr ""
+#: editor/import/resource_importer_bitmask.cpp
+#, fuzzy
+msgid "Create From"
+msgstr "ایجاد پوشه"
+
+#: editor/import/resource_importer_bitmask.cpp
+#: servers/audio/effects/audio_effect_compressor.cpp
+msgid "Threshold"
+msgstr ""
+
+#: editor/import/resource_importer_csv_translation.cpp
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_scene.cpp
+#: editor/import/resource_importer_texture.cpp
+#: editor/import/resource_importer_wav.cpp scene/3d/gi_probe.cpp
+#, fuzzy
+msgid "Compress"
+msgstr "اجزا"
+
+#: editor/import/resource_importer_csv_translation.cpp
+msgid "Delimiter"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+msgid "No BPTC If RGB"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/sprite_3d.cpp
+#: scene/resources/material.cpp scene/resources/particles_material.cpp
+#: scene/resources/texture.cpp
+msgid "Flags"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/animation/tween.cpp
+#: scene/resources/texture.cpp
+msgid "Repeat"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/2d/light_2d.cpp
+#: scene/gui/control.cpp scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Filter"
+msgstr "صاÙÛŒ:"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Mipmaps"
+msgstr "سیگنال ها"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+msgid "Anisotropic"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+msgid "sRGB"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#, fuzzy
+msgid "Slices"
+msgstr "دستگاه"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
+#: scene/resources/style_box.cpp
+#, fuzzy
+msgid "Horizontal"
+msgstr "کلیدهای نامعتبر را حذ٠کن"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
+#: scene/resources/style_box.cpp
+#, fuzzy
+msgid "Vertical"
+msgstr "برداشتن متغیر"
+
+#: editor/import/resource_importer_obj.cpp
+#, fuzzy
+msgid "Generate Tangents"
+msgstr "حذ٠کن"
+
+#: editor/import/resource_importer_obj.cpp
+#, fuzzy
+msgid "Scale Mesh"
+msgstr "انتخاب حالت"
+
+#: editor/import/resource_importer_obj.cpp
+msgid "Offset Mesh"
+msgstr ""
+
+#: editor/import/resource_importer_obj.cpp
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Octahedral Compression"
+msgstr "انتقال را در انیمیشن تغییر بده"
+
+#: editor/import/resource_importer_obj.cpp
+msgid "Optimize Mesh Flags"
+msgstr ""
+
#: editor/import/resource_importer_scene.cpp
msgid "Import as Single Scene"
msgstr ""
@@ -6638,6 +6835,153 @@ msgstr "وارد کردن به عنوان صحنه های چندگانه"
msgid "Import as Multiple Scenes+Materials"
msgstr ""
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Nodes"
+msgstr "گره"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Root Type"
+msgstr "نوع عضو"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Root Name"
+msgstr "برداشتن"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Root Scale"
+msgstr "بومی"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Custom Script"
+msgstr "ساختن گره"
+
+#: editor/import/resource_importer_scene.cpp scene/resources/texture.cpp
+#, fuzzy
+msgid "Storage"
+msgstr "ذخیره ÙØ§ÛŒÙ„:"
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Use Legacy Names"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+#, fuzzy
+msgid "Materials"
+msgstr "تغییر بده"
+
+#: editor/import/resource_importer_scene.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Location"
+msgstr "بومی‌سازی"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Keep On Reimport"
+msgstr "وارد کردن دوباره"
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+msgid "Meshes"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Ensure Tangents"
+msgstr "ویرایش مماس منحنی"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Light Baking"
+msgstr "خطی"
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Lightmap Texel Size"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+msgid "Skins"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Use Named Skins"
+msgstr "سیگنال ها"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "External Files"
+msgstr "یک پرونده را باز کن"
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Store In Subdir"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Filter Script"
+msgstr "صاÙÛŒ کردن گره‌ها"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Keep Custom Tracks"
+msgstr "انتقال را در انیمیشن تغییر بده"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Optimizer"
+msgstr "بهینه‌سازی کن"
+
+#: editor/import/resource_importer_scene.cpp main/main.cpp
+#: modules/mono/mono_gd/gd_mono.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp scene/2d/camera_2d.cpp scene/2d/light_2d.cpp
+#: scene/2d/navigation_polygon.cpp scene/2d/ray_cast_2d.cpp scene/2d/sprite.cpp
+#: scene/2d/y_sort.cpp scene/3d/audio_stream_player_3d.cpp
+#: scene/3d/baked_lightmap.cpp scene/3d/interpolated_camera.cpp
+#: scene/3d/light.cpp scene/3d/navigation_mesh_instance.cpp
+#: scene/3d/physics_joint.cpp scene/3d/ray_cast.cpp scene/3d/sprite_3d.cpp
+#: scene/gui/graph_edit.cpp scene/gui/rich_text_label.cpp
+#: scene/resources/curve.cpp scene/resources/environment.cpp
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Enabled"
+msgstr "روشن"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Max Linear Error"
+msgstr "خطای Max. Linear:"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Max Angular Error"
+msgstr "خطای Max. Angular:"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Max Angle"
+msgstr "مقدار:"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Remove Unused Tracks"
+msgstr "حذ٠ترک انیمشین"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Clips"
+msgstr "کلیپ های انیمیشن:"
+
+#: editor/import/resource_importer_scene.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/particles_2d.cpp scene/3d/area.cpp scene/3d/cpu_particles.cpp
+#: scene/3d/particles.cpp scene/resources/environment.cpp
+msgid "Amount"
+msgstr ""
+
#: editor/import/resource_importer_scene.cpp
#: editor/plugins/mesh_library_editor_plugin.cpp
msgid "Import Scene"
@@ -6679,12 +7023,145 @@ msgstr ""
msgid "Saving..."
msgstr ""
+#: editor/import/resource_importer_texture.cpp scene/resources/texture.cpp
+msgid "Lossy Quality"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "HDR Mode"
+msgstr "انتخاب حالت"
+
+#: editor/import/resource_importer_texture.cpp
+msgid "BPTC LDR"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/mesh_instance_2d.cpp scene/2d/multimesh_instance_2d.cpp
+#: scene/2d/particles_2d.cpp scene/2d/sprite.cpp scene/resources/style_box.cpp
+msgid "Normal Map"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Process"
+msgstr "انتقال را در انیمیشن تغییر بده"
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Fix Alpha Border"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Premult Alpha"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Hdr As Srgb"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Invert Color"
+msgstr "برداشتن انتخاب شده"
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Normal Map Invert Y"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
+#: scene/audio/audio_stream_player.cpp scene/gui/video_player.cpp
+msgid "Stream"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Size Limit"
+msgstr "غلطاندن به پایین."
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Detect 3D"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "SVG"
+msgstr ""
+
#: editor/import/resource_importer_texture.cpp
msgid ""
"Warning, no suitable PC VRAM compression enabled in Project Settings. This "
"texture will not display correctly on PC."
msgstr ""
+#: editor/import/resource_importer_texture_atlas.cpp
+#, fuzzy
+msgid "Atlas File"
+msgstr "ÙØ§ÛŒÙ„ های ZIP‌ منابع بازی"
+
+#: editor/import/resource_importer_texture_atlas.cpp
+#, fuzzy
+msgid "Import Mode"
+msgstr "حالت صدور:"
+
+#: editor/import/resource_importer_texture_atlas.cpp
+#, fuzzy
+msgid "Crop To Region"
+msgstr "گره انیمیشن"
+
+#: editor/import/resource_importer_texture_atlas.cpp
+msgid "Trim Alpha Border From Region"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp scene/2d/physics_body_2d.cpp
+msgid "Force"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+msgid "8 Bit"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp main/main.cpp
+#: modules/mono/editor/csharp_project.cpp modules/mono/mono_gd/gd_mono.cpp
+msgid "Mono"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+#, fuzzy
+msgid "Max Rate"
+msgstr "گره ترکیب"
+
+#: editor/import/resource_importer_wav.cpp
+#, fuzzy
+msgid "Max Rate Hz"
+msgstr "گره ترکیب"
+
+#: editor/import/resource_importer_wav.cpp
+msgid "Trim"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+#, fuzzy
+msgid "Normalize"
+msgstr "حذ٠قالب"
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+#, fuzzy
+msgid "Loop Mode"
+msgstr "انتخاب حالت"
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+#, fuzzy
+msgid "Loop Begin"
+msgstr "انتخاب حالت"
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+#, fuzzy
+msgid "Loop End"
+msgstr "انتخاب حالت"
+
#: editor/import_defaults_editor.cpp
#, fuzzy
msgid "Select Importer"
@@ -6758,6 +7235,29 @@ msgstr ""
#: editor/inspector_dock.cpp
#, fuzzy
+msgid "Property Name Style"
+msgstr "نام پروژه:"
+
+#: editor/inspector_dock.cpp scene/gui/color_picker.cpp
+msgid "Raw"
+msgstr "خام"
+
+#: editor/inspector_dock.cpp
+#, fuzzy
+msgid "Capitalized"
+msgstr "خصوصیات"
+
+#: editor/inspector_dock.cpp
+#, fuzzy
+msgid "Localized"
+msgstr "بومی"
+
+#: editor/inspector_dock.cpp
+msgid "Localization not available for current language."
+msgstr ""
+
+#: editor/inspector_dock.cpp
+#, fuzzy
msgid "Copy Properties"
msgstr "خصوصیات"
@@ -7858,19 +8358,24 @@ msgid "License (Z-A)"
msgstr "مجوز"
#: editor/plugins/asset_library_editor_plugin.cpp
+msgctxt "Pagination"
msgid "First"
msgstr ""
-#: editor/plugins/asset_library_editor_plugin.cpp scene/gui/control.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
#, fuzzy
+msgctxt "Pagination"
msgid "Previous"
msgstr "زبانه قبلی"
-#: editor/plugins/asset_library_editor_plugin.cpp scene/gui/control.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgctxt "Pagination"
msgid "Next"
msgstr "بعدی"
#: editor/plugins/asset_library_editor_plugin.cpp
+msgctxt "Pagination"
msgid "Last"
msgstr ""
@@ -8118,19 +8623,19 @@ msgid ""
"margins."
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Top Left"
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Top Right"
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Bottom Right"
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Bottom Left"
msgstr ""
@@ -8872,6 +9377,19 @@ msgstr ""
msgid "Gradient Edited"
msgstr ""
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+msgid "Swap GradientTexture2D Fill Points"
+msgstr ""
+
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+msgid "Swap Gradient Fill Points"
+msgstr ""
+
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+#, fuzzy
+msgid "Toggle Grid Snap"
+msgstr "یک Breakpoint درج کن"
+
#: editor/plugins/item_list_editor_plugin.cpp
msgid "Item %d"
msgstr ""
@@ -9096,9 +9614,9 @@ msgid ""
"%s"
msgstr "به‌روزرسانی از صحنه"
-#: editor/plugins/mesh_library_editor_plugin.cpp modules/gridmap/grid_map.cpp
+#: editor/plugins/mesh_library_editor_plugin.cpp
#, fuzzy
-msgid "Mesh Library"
+msgid "MeshLibrary"
msgstr "صادکردن ÙØ§ÛŒÙ„ کتابخانه ای"
#: editor/plugins/mesh_library_editor_plugin.cpp
@@ -10130,8 +10648,8 @@ msgstr "اتصال به گره:"
msgid "Source"
msgstr "منبع"
-#: editor/plugins/script_text_editor.cpp scene/3d/interpolated_camera.cpp
-#: scene/animation/skeleton_ik.cpp
+#: editor/plugins/script_text_editor.cpp platform/uwp/export/export.cpp
+#: scene/3d/interpolated_camera.cpp scene/animation/skeleton_ik.cpp
msgid "Target"
msgstr ""
@@ -11155,7 +11673,9 @@ msgstr ""
#: editor/plugins/sprite_frames_editor_plugin.cpp
#: modules/gltf/gltf_animation.cpp modules/minimp3/audio_stream_mp3.cpp
-#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp scene/2d/path_2d.cpp
+#: modules/minimp3/resource_importer_mp3.cpp
+#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp
+#: modules/stb_vorbis/resource_importer_ogg_vorbis.cpp scene/2d/path_2d.cpp
#: scene/3d/path.cpp scene/resources/animation.cpp scene/resources/material.cpp
msgid "Loop"
msgstr ""
@@ -12118,8 +12638,9 @@ msgstr ""
msgid "Priority"
msgstr "حالت صدور:"
-#: editor/plugins/tile_set_editor_plugin.cpp main/main.cpp scene/gui/button.cpp
-#: scene/gui/item_list.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp main/main.cpp
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#: scene/gui/button.cpp scene/gui/item_list.cpp
msgid "Icon"
msgstr ""
@@ -13495,10 +14016,6 @@ msgid ""
msgstr ""
#: editor/project_export.cpp
-msgid "Release"
-msgstr ""
-
-#: editor/project_export.cpp
#, fuzzy
msgid "Exporting All"
msgstr "صدور"
@@ -15384,6 +15901,7 @@ msgid "Change AudioStreamPlayer3D Emission Angle"
msgstr ""
#: editor/spatial_editor_gizmos.cpp modules/gltf/gltf_node.cpp
+#: platform/osx/export/export.cpp
msgid "Camera"
msgstr ""
@@ -15662,7 +16180,8 @@ msgstr ""
msgid "Use Nvidia Rect Flicker Workaround"
msgstr ""
-#: main/main.cpp platform/uwp/os_uwp.cpp
+#: main/main.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp platform/uwp/os_uwp.cpp
#, fuzzy
msgid "Display"
msgstr "نشان دادن همه"
@@ -15720,19 +16239,6 @@ msgstr ""
msgid "Allowed"
msgstr ""
-#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp scene/2d/camera_2d.cpp
-#: scene/2d/light_2d.cpp scene/2d/navigation_polygon.cpp
-#: scene/2d/ray_cast_2d.cpp scene/2d/sprite.cpp scene/2d/y_sort.cpp
-#: scene/3d/audio_stream_player_3d.cpp scene/3d/baked_lightmap.cpp
-#: scene/3d/interpolated_camera.cpp scene/3d/light.cpp
-#: scene/3d/navigation_mesh_instance.cpp scene/3d/ray_cast.cpp
-#: scene/3d/sprite_3d.cpp scene/gui/graph_edit.cpp
-#: scene/gui/rich_text_label.cpp scene/resources/curve.cpp
-#: scene/resources/environment.cpp
-#, fuzzy
-msgid "Enabled"
-msgstr "روشن"
-
#: main/main.cpp
msgid "Intended Usage"
msgstr ""
@@ -15762,13 +16268,14 @@ msgstr ""
msgid "Handheld"
msgstr ""
-#: main/main.cpp
+#: main/main.cpp platform/javascript/export/export.cpp
+#: platform/uwp/export/export.cpp
#, fuzzy
msgid "Orientation"
msgstr "شمارش ها"
#: main/main.cpp scene/gui/scroll_container.cpp scene/gui/text_edit.cpp
-#: scene/main/scene_tree.cpp
+#: scene/main/scene_tree.cpp scene/register_scene_types.cpp
#, fuzzy
msgid "Common"
msgstr "جامعه"
@@ -15809,7 +16316,7 @@ msgstr ""
#: main/main.cpp
#, fuzzy
-msgid "Frame Delay (msec)"
+msgid "Frame Delay Msec"
msgstr "زمان(s): "
#: main/main.cpp
@@ -15932,11 +16439,6 @@ msgstr ""
msgid "Tooltip Position Offset"
msgstr ""
-#: main/main.cpp modules/mono/editor/csharp_project.cpp
-#: modules/mono/mono_gd/gd_mono.cpp
-msgid "Mono"
-msgstr ""
-
#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp
msgid "Debugger Agent"
msgstr ""
@@ -16502,7 +17004,7 @@ msgstr ""
msgid "Intensity"
msgstr ""
-#: modules/gltf/gltf_light.cpp scene/2d/light_2d.cpp
+#: modules/gltf/gltf_light.cpp scene/2d/light_2d.cpp scene/3d/light.cpp
#, fuzzy
msgid "Range"
msgstr "تغییر بده"
@@ -16644,11 +17146,6 @@ msgstr ""
msgid "Use Named Skin Binds"
msgstr ""
-#: modules/gltf/gltf_state.cpp scene/3d/physics_joint.cpp
-#, fuzzy
-msgid "Nodes"
-msgstr "گره"
-
#: modules/gltf/gltf_state.cpp
msgid "Buffer Views"
msgstr ""
@@ -16658,15 +17155,6 @@ msgid "Accessors"
msgstr ""
#: modules/gltf/gltf_state.cpp
-msgid "Meshes"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp
-#, fuzzy
-msgid "Materials"
-msgstr "تغییر بده"
-
-#: modules/gltf/gltf_state.cpp
#, fuzzy
msgid "Scene Name"
msgstr "جاگرداندن زبانه صحنه"
@@ -16683,15 +17171,11 @@ msgstr "تغییر نام"
msgid "Textures"
msgstr "ویژگی‌ها"
-#: modules/gltf/gltf_state.cpp
+#: modules/gltf/gltf_state.cpp platform/uwp/export/export.cpp
msgid "Images"
msgstr ""
#: modules/gltf/gltf_state.cpp
-msgid "Skins"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp
msgid "Cameras"
msgstr ""
@@ -16724,10 +17208,15 @@ msgid "Src Image"
msgstr ""
#: modules/gridmap/grid_map.cpp
+#, fuzzy
+msgid "Mesh Library"
+msgstr "صادکردن ÙØ§ÛŒÙ„ کتابخانه ای"
+
+#: modules/gridmap/grid_map.cpp
msgid "Physics Material"
msgstr ""
-#: modules/gridmap/grid_map.cpp
+#: modules/gridmap/grid_map.cpp scene/3d/visual_instance.cpp
msgid "Use In Baked Light"
msgstr ""
@@ -16758,6 +17247,7 @@ msgstr "ساختن گره"
#: modules/gridmap/grid_map.cpp scene/2d/collision_object_2d.cpp
#: scene/2d/tile_map.cpp scene/3d/collision_object.cpp scene/3d/soft_body.cpp
+#: scene/resources/material.cpp
msgid "Mask"
msgstr ""
@@ -16954,7 +17444,9 @@ msgid "Ultra Quality Ray Count"
msgstr ""
#: modules/minimp3/audio_stream_mp3.cpp
+#: modules/minimp3/resource_importer_mp3.cpp
#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp
+#: modules/stb_vorbis/resource_importer_ogg_vorbis.cpp
#, fuzzy
msgid "Loop Offset"
msgstr "انتخاب حالت"
@@ -18084,6 +18576,188 @@ msgid "The package must have at least one '.' separator."
msgstr ""
#: platform/android/export/export_plugin.cpp
+msgid "Use Custom Build"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Export Format"
+msgstr "صدور پروژه"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Keystore"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Debug User"
+msgstr "اشکال یابی"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+msgid "Debug Password"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Release User"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Release Password"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "One Click Deploy"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Clear Previous Install"
+msgstr "زبانه قبلی"
+
+#: platform/android/export/export_plugin.cpp scene/resources/shader.cpp
+msgid "Code"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Min SDK"
+msgstr "باز کردن و اجرای یک اسکریپت"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Target SDK"
+msgstr "گره تغییر والد"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Package"
+msgstr "بسته بندی"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Unique Name"
+msgstr "نام گره:"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Signed"
+msgstr "سیگنال‌"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Classify As Game"
+msgstr "کلاس:"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Retain Data On Uninstall"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Exclude From Recents"
+msgstr "حذ٠گره(ها)"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Graphics"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "OpenGL Debug"
+msgstr "باز کن"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "XR Features"
+msgstr "ویژگی‌ها"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "XR Mode"
+msgstr "انتخاب حالت"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Hand Tracking"
+msgstr "بسته بندی"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Hand Tracking Frequency"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Passthrough"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Immersive Mode"
+msgstr "حالت صدور:"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Support Small"
+msgstr "پشتیبانی..."
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Support Normal"
+msgstr "پشتیبانی..."
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Support Large"
+msgstr "پشتیبانی..."
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Support Xlarge"
+msgstr "پشتیبانی..."
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "User Data Backup"
+msgstr "پاک کردن ارث‌بری"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Allow"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Command Line"
+msgstr "جامعه"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Extra Args"
+msgstr "آرگومان‌های اضاÙÛŒ ÙØ±Ø§Ø®ÙˆØ§Ù†ÛŒ:"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "APK Expansion"
+msgstr "انتقال را در انیمیشن تغییر بده"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Salt"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Public Key"
+msgstr "تکرار کلید(ها)"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Permissions"
+msgstr "انتقال را در انیمیشن تغییر بده"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Custom Permissions"
+msgstr "اجرای صحنه دلخواه"
+
+#: platform/android/export/export_plugin.cpp
msgid "Select device from the list"
msgstr ""
@@ -18385,6 +19059,177 @@ msgid "The character '%s' is not allowed in Identifier."
msgstr "نام یک شناسه‌ی معتبر نیست:"
#: platform/iphone/export/export.cpp
+msgid "App Store Team ID"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Provisioning Profile UUID Debug"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Code Sign Identity Debug"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Export Method Debug"
+msgstr "صدور با اشکال زدا"
+
+#: platform/iphone/export/export.cpp
+msgid "Provisioning Profile UUID Release"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Code Sign Identity Release"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Export Method Release"
+msgstr "حالت صدور:"
+
+#: platform/iphone/export/export.cpp
+msgid "Targeted Device Family"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Info"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Identifier"
+msgstr "نام یک شناسه‌ی معتبر نیست:"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Signature"
+msgstr "سیگنال‌"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Short Version"
+msgstr "نسخه:"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Copyright"
+msgstr "کپی"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Capabilities"
+msgstr "خصوصیات"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Access Wi-Fi"
+msgstr "موÙقیت!"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Push Notifications"
+msgstr "ثابت"
+
+#: platform/iphone/export/export.cpp scene/3d/baked_lightmap.cpp
+#, fuzzy
+msgid "User Data"
+msgstr "پاک کردن ارث‌بری"
+
+#: platform/iphone/export/export.cpp
+msgid "Accessible From Files App"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Accessible From Itunes Sharing"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Privacy"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Camera Usage Description"
+msgstr "تعریÙ"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Microphone Usage Description"
+msgstr "توضیحات خصیصه"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Photolibrary Usage Description"
+msgstr "توضیحات خصیصه"
+
+#: platform/iphone/export/export.cpp
+msgid "iPhone 120 X 120"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPhone 180 X 180"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 76 X 76"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 152 X 152"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 167 X 167"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "App Store 1024 X 1024"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Spotlight 40 X 40"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Spotlight 80 X 80"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Storyboard"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Use Launch Screen Storyboard"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Image Scale Mode"
+msgstr "انتخاب حالت"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Custom Image @2x"
+msgstr "ساختن گره"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Custom Image @3x"
+msgstr "ساختن گره"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Use Custom BG Color"
+msgstr "ساختن گره"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Custom BG Color"
+msgstr "ساختن گره"
+
+#: platform/iphone/export/export.cpp
msgid "App Store Team ID not specified - cannot configure the project."
msgstr ""
@@ -18427,6 +19272,80 @@ msgstr "نمی‌تواند یک پوشه ایجاد شود."
#: platform/javascript/export/export.cpp
#, fuzzy
+msgid "Variant"
+msgstr "شمارش ها:"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Export Type"
+msgstr "خروجی"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "VRAM Texture Compression"
+msgstr "انتقال را در انیمیشن تغییر بده"
+
+#: platform/javascript/export/export.cpp
+msgid "For Desktop"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "For Mobile"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Html"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Export Icon"
+msgstr "خروجی"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Custom Html Shell"
+msgstr "ساختن گره"
+
+#: platform/javascript/export/export.cpp
+msgid "Head Include"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Canvas Resize Policy"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Focus Canvas On Start"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Experimental Virtual Keyboard"
+msgstr "صاÙÛŒ کردن گره‌هاسیگنال ها را Ùیلتر کنید"
+
+#: platform/javascript/export/export.cpp
+msgid "Progressive Web App"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Offline Page"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 144 X 144"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 180 X 180"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 512 X 512"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
msgid "Could not read HTML shell:"
msgstr "نمی‌تواند یک پوشه ایجاد شود."
@@ -18539,6 +19458,201 @@ msgid "Unknown object type."
msgstr ""
#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "App Category"
+msgstr "طبقه‌بندی:"
+
+#: platform/osx/export/export.cpp
+msgid "High Res"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Location Usage Description"
+msgstr "تعریÙ"
+
+#: platform/osx/export/export.cpp
+msgid "Address Book Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Calendar Usage Description"
+msgstr "تعریÙ"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Photos Library Usage Description"
+msgstr "توضیحات خصیصه"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Desktop Folder Usage Description"
+msgstr "توضیحات تابع"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Documents Folder Usage Description"
+msgstr "توضیحات تابع"
+
+#: platform/osx/export/export.cpp
+msgid "Downloads Folder Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Network Volumes Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Removable Volumes Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#, fuzzy
+msgid "Codesign"
+msgstr "گره"
+
+#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Identity"
+msgstr "اندیس:"
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#, fuzzy
+msgid "Timestamp"
+msgstr "زمان:"
+
+#: platform/osx/export/export.cpp
+msgid "Hardened Runtime"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Replace Existing Signature"
+msgstr "جایگزینی همه"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Entitlements"
+msgstr "محتواها:"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Custom File"
+msgstr "ساختن گره"
+
+#: platform/osx/export/export.cpp
+msgid "Allow JIT Code Execution"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Allow Unsigned Executable Memory"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Allow Dyld Environment Variables"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Disable Library Validation"
+msgstr "ØºÛŒØ±ÙØ¹Ø§Ù„ شده"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Audio Input"
+msgstr "تغییر نام صوت گذرا"
+
+#: platform/osx/export/export.cpp
+msgid "Address Book"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Calendars"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Photos Library"
+msgstr "صدور کتابخانه"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Apple Events"
+msgstr "Ø§ÙØ²ÙˆØ¯Ù† رویداد"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Debugging"
+msgstr "اشکال یابی"
+
+#: platform/osx/export/export.cpp
+msgid "App Sandbox"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Network Server"
+msgstr "صدور پروژه"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Network Client"
+msgstr "صدور پروژه"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Device Usb"
+msgstr "دستگاه"
+
+#: platform/osx/export/export.cpp
+msgid "Device Bluetooth"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Files Downloads"
+msgstr "در حال بارگیری"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Files Pictures"
+msgstr "ویژگی‌ها"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Files Music"
+msgstr "پرونده:"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Files Movies"
+msgstr "صاÙÛŒ کردن گره‌ها"
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#, fuzzy
+msgid "Custom Options"
+msgstr "گزینه های اتوبوس"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Notarization"
+msgstr "بومی‌سازی"
+
+#: platform/osx/export/export.cpp
+msgid "Apple ID Name"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Apple ID Password"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Apple Team ID"
+msgstr ""
+
+#: platform/osx/export/export.cpp
msgid ""
"Note: The notarization process generally takes less than an hour. When the "
"process is completed, you'll receive an email."
@@ -18731,6 +19845,133 @@ msgid "Force Builtin Codesign"
msgstr ""
#: platform/uwp/export/export.cpp
+msgid "Architecture"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Display Name"
+msgstr "نشان دادن همه"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Short Name"
+msgstr "نام پروژه:"
+
+#: platform/uwp/export/export.cpp
+msgid "Publisher"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Publisher Display Name"
+msgstr "نام نامعتبر."
+
+#: platform/uwp/export/export.cpp
+msgid "Product Guid"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Publisher Guid"
+msgstr "پخش Ø³ÙØ§Ø±Ø´ÛŒ صحنه"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Signing"
+msgstr "سیگنال‌"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Certificate"
+msgstr "خصوصیات"
+
+#: platform/uwp/export/export.cpp
+msgid "Algorithm"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Major"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Minor"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Build"
+msgstr "انتخاب حالت"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Revision"
+msgstr "انتقال را در انیمیشن تغییر بده"
+
+#: platform/uwp/export/export.cpp
+msgid "Landscape"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Portrait"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Landscape Flipped"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Portrait Flipped"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Store Logo"
+msgstr "انتخاب حالت"
+
+#: platform/uwp/export/export.cpp
+msgid "Square 44 X 44 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 71 X 71 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 150 X 150 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 310 X 310 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Wide 310 X 150 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Splash Screen"
+msgstr "ÙØ±Ø§Ø®ÙˆØ§Ù†ÛŒ"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Tiles"
+msgstr "پرونده:"
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Square 150 X 150"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Wide 310 X 150"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Square 310 X 310"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
#, fuzzy
msgid "Invalid package short name."
msgstr "نام نامعتبر."
@@ -18802,11 +20043,48 @@ msgid "Debug Certificate"
msgstr ""
#: platform/uwp/export/export.cpp
-msgid "Debug Password"
+msgid "Debug Algorithm"
msgstr ""
-#: platform/uwp/export/export.cpp
-msgid "Debug Algorithm"
+#: platform/windows/export/export.cpp
+msgid "Identity Type"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Timestamp Server URL"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Digest Algorithm"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "File Version"
+msgstr "نسخه:"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Product Version"
+msgstr "اندازه‌ی قلم نامعتبر."
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Company Name"
+msgstr "نام گره:"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Product Name"
+msgstr "نام پروژه:"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "File Description"
+msgstr "تعریÙ"
+
+#: platform/windows/export/export.cpp
+msgid "Trademarks"
msgstr ""
#: platform/windows/export/export.cpp
@@ -18885,12 +20163,14 @@ msgstr "پخش"
msgid "Centered"
msgstr "ساختن گره"
-#: scene/2d/animated_sprite.cpp scene/2d/camera_2d.cpp scene/2d/light_2d.cpp
+#: scene/2d/animated_sprite.cpp scene/2d/camera_2d.cpp
+#: scene/2d/cpu_particles_2d.cpp scene/2d/light_2d.cpp
#: scene/2d/parallax_background.cpp scene/2d/parallax_layer.cpp
#: scene/2d/path_2d.cpp scene/2d/polygon_2d.cpp scene/2d/sprite.cpp
-#: scene/3d/path.cpp scene/3d/physics_body.cpp scene/3d/sprite_3d.cpp
-#: scene/gui/graph_node.cpp scene/gui/rich_text_effect.cpp
-#: scene/main/canvas_layer.cpp scene/resources/material.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/path.cpp scene/3d/physics_body.cpp
+#: scene/3d/sprite_3d.cpp scene/gui/graph_node.cpp
+#: scene/gui/rich_text_effect.cpp scene/main/canvas_layer.cpp
+#: scene/resources/material.cpp scene/resources/particles_material.cpp
#: scene/resources/style_box.cpp
msgid "Offset"
msgstr ""
@@ -18958,11 +20238,6 @@ msgstr "Ø§ÙØ²ÙˆØ¯Ù† کانل صوتی"
msgid "Override"
msgstr ""
-#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
-#: scene/audio/audio_stream_player.cpp scene/gui/video_player.cpp
-msgid "Stream"
-msgstr ""
-
#: scene/2d/audio_stream_player_2d.cpp scene/audio/audio_stream_player.cpp
#: scene/gui/video_player.cpp servers/audio/effects/audio_effect_amplify.cpp
msgid "Volume dB"
@@ -18988,12 +20263,12 @@ msgid "Stream Paused"
msgstr ""
#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
-#: scene/3d/reflection_probe.cpp scene/3d/visual_instance.cpp
-#: scene/resources/material.cpp
+#: scene/3d/light.cpp scene/3d/reflection_probe.cpp
+#: scene/3d/visual_instance.cpp scene/resources/material.cpp
msgid "Max Distance"
msgstr ""
-#: scene/2d/audio_stream_player_2d.cpp
+#: scene/2d/audio_stream_player_2d.cpp scene/3d/light.cpp
#, fuzzy
msgid "Attenuation"
msgstr "انیمیشن"
@@ -19048,6 +20323,24 @@ msgstr "حالت صدور:"
msgid "Limit"
msgstr ""
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/style_box.cpp
+#, fuzzy
+msgid "Left"
+msgstr "خطی"
+
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/style_box.cpp
+#, fuzzy
+msgid "Right"
+msgstr "خطی"
+
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/dynamic_font.cpp scene/resources/style_box.cpp
+#, fuzzy
+msgid "Bottom"
+msgstr "برداشتن انتخاب شده"
+
#: scene/2d/camera_2d.cpp
#, fuzzy
msgid "Smoothed"
@@ -19271,12 +20564,6 @@ msgstr ""
msgid "Emitting"
msgstr "ترجیحات"
-#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp scene/3d/area.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
-#: scene/resources/environment.cpp
-msgid "Amount"
-msgstr ""
-
#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp
#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
msgid "Lifetime"
@@ -19339,18 +20626,13 @@ msgstr ""
#: scene/2d/mesh_instance_2d.cpp scene/2d/multimesh_instance_2d.cpp
#: scene/2d/particles_2d.cpp scene/2d/polygon_2d.cpp scene/2d/sprite.cpp
#: scene/3d/sprite_3d.cpp scene/gui/nine_patch_rect.cpp
-#: scene/gui/texture_rect.cpp scene/resources/sky.cpp
-#: scene/resources/style_box.cpp scene/resources/visual_shader_nodes.cpp
+#: scene/gui/texture_rect.cpp scene/resources/material.cpp
+#: scene/resources/sky.cpp scene/resources/style_box.cpp
+#: scene/resources/visual_shader_nodes.cpp
#, fuzzy
msgid "Texture"
msgstr "حذ٠قالب"
-#: scene/2d/cpu_particles_2d.cpp scene/2d/mesh_instance_2d.cpp
-#: scene/2d/multimesh_instance_2d.cpp scene/2d/particles_2d.cpp
-#: scene/2d/sprite.cpp scene/resources/style_box.cpp
-msgid "Normal Map"
-msgstr ""
-
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
msgid "Emission Shape"
@@ -19370,9 +20652,8 @@ msgid "Normals"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/3d/sprite_3d.cpp scene/resources/material.cpp
-#: scene/resources/particles_material.cpp scene/resources/texture.cpp
-msgid "Flags"
+#: scene/resources/particles_material.cpp
+msgid "Align Y"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
@@ -19393,6 +20674,11 @@ msgid "Initial Velocity"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Velocity Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp servers/physics_2d_server.cpp
#: servers/physics_server.cpp
msgid "Angular Velocity"
@@ -19400,6 +20686,12 @@ msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Velocity Curve"
+msgstr "ویرایش منحنی گره"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
msgid "Orbit Velocity"
msgstr ""
@@ -19411,6 +20703,23 @@ msgstr "خطی"
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Accel"
+msgstr "موÙقیت!"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Accel Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Accel Curve"
+msgstr "ویرایش منحنی گره"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
msgid "Radial Accel"
msgstr ""
@@ -19420,19 +20729,55 @@ msgid "Tangential Accel"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/2d/joints_2d.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/vehicle_body.cpp
-#: scene/resources/particles_material.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/physics_joint.cpp
+#: scene/3d/vehicle_body.cpp scene/resources/particles_material.cpp
#: servers/audio/effects/audio_effect_reverb.cpp
msgid "Damping"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+msgid "Damping Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Damping Curve"
+msgstr "ویرایش منحنی گره"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp scene/3d/light.cpp
+#: scene/resources/particles_material.cpp
msgid "Angle"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+msgid "Angle Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Angle Curve"
+msgstr "ویرایش منحنی گره"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#, fuzzy
+msgid "Scale Amount"
+msgstr "ارث‌بری صحنهٔ ÙØ±Ø²Ù†Ø¯"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+msgid "Scale Amount Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#, fuzzy
+msgid "Scale Amount Curve"
+msgstr "از مکان‌نما تغییر مقیاس بده"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
msgid "Color Ramp"
msgstr ""
@@ -19447,6 +20792,47 @@ msgstr ""
msgid "Hue Variation"
msgstr "شمارش ها:"
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Variation"
+msgstr "شمارش ها:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Variation Random"
+msgstr "شمارش ها:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Variation Curve"
+msgstr "شمارش ها:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Speed Random"
+msgstr "بومی"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Speed Curve"
+msgstr "ویرایش منحنی گره"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Offset Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Offset Curve"
+msgstr "ویرایش منحنی گره"
+
#: scene/2d/joints_2d.cpp
msgid "Node A and Node B must be PhysicsBody2Ds"
msgstr ""
@@ -19478,6 +20864,7 @@ msgid "Node B"
msgstr "گره"
#: scene/2d/joints_2d.cpp scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp
+#: scene/3d/light.cpp scene/3d/physics_joint.cpp
#: scene/resources/environment.cpp
msgid "Bias"
msgstr ""
@@ -19487,7 +20874,7 @@ msgstr ""
msgid "Disable Collision"
msgstr "ØºÛŒØ±ÙØ¹Ø§Ù„ شده"
-#: scene/2d/joints_2d.cpp
+#: scene/2d/joints_2d.cpp scene/3d/physics_joint.cpp
msgid "Softness"
msgstr ""
@@ -19504,7 +20891,7 @@ msgstr ""
msgid "Rest Length"
msgstr ""
-#: scene/2d/joints_2d.cpp scene/3d/vehicle_body.cpp
+#: scene/2d/joints_2d.cpp scene/3d/physics_joint.cpp scene/3d/vehicle_body.cpp
msgid "Stiffness"
msgstr ""
@@ -19525,7 +20912,7 @@ msgid "Texture Scale"
msgstr ""
#: scene/2d/light_2d.cpp scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp
-#: scene/resources/environment.cpp scene/resources/sky.cpp
+#: scene/3d/light.cpp scene/resources/environment.cpp scene/resources/sky.cpp
msgid "Energy"
msgstr ""
@@ -19563,12 +20950,6 @@ msgstr "ادغام از صحنه"
msgid "Gradient Length"
msgstr "Ù¾ÛŒØ´ÙØ±Ø¶"
-#: scene/2d/light_2d.cpp scene/gui/control.cpp
-#: scene/resources/navigation_mesh.cpp
-#, fuzzy
-msgid "Filter"
-msgstr "صاÙÛŒ:"
-
#: scene/2d/light_2d.cpp
#, fuzzy
msgid "Filter Smooth"
@@ -19976,10 +21357,6 @@ msgid "Applied Forces"
msgstr ""
#: scene/2d/physics_body_2d.cpp
-msgid "Force"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp
msgid "Torque"
msgstr ""
@@ -19992,7 +21369,7 @@ msgid "Sync To Physics"
msgstr ""
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-msgid "Moving platform"
+msgid "Moving Platform"
msgstr ""
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
@@ -20001,7 +21378,7 @@ msgstr ""
#: scene/2d/physics_body_2d.cpp scene/2d/touch_screen_button.cpp
#: scene/3d/physics_body.cpp scene/gui/texture_button.cpp
-#: scene/resources/line_shape_2d.cpp
+#: scene/resources/line_shape_2d.cpp scene/resources/material.cpp
msgid "Normal"
msgstr ""
@@ -20238,6 +21615,34 @@ msgstr ""
"VisibilityEnable2D زمانی بهتر کار می‌کند که در یک ریشه‌ی صحنه‌ی ویرایش شده به "
"صورت پدر (parent) Ø§Ø³ØªÙØ§Ø¯Ù‡ شود."
+#: scene/2d/visibility_notifier_2d.cpp scene/3d/visibility_notifier.cpp
+#, fuzzy
+msgid "Pause Animations"
+msgstr "گره انیمیشن"
+
+#: scene/2d/visibility_notifier_2d.cpp scene/3d/visibility_notifier.cpp
+msgid "Freeze Bodies"
+msgstr ""
+
+#: scene/2d/visibility_notifier_2d.cpp
+#, fuzzy
+msgid "Pause Particles"
+msgstr "چسباندن پارام ها"
+
+#: scene/2d/visibility_notifier_2d.cpp
+#, fuzzy
+msgid "Pause Animated Sprites"
+msgstr "تغییر گام(Step)انیمیشن"
+
+#: scene/2d/visibility_notifier_2d.cpp
+#, fuzzy
+msgid "Process Parent"
+msgstr "ویرایش صاÙÛŒ ها"
+
+#: scene/2d/visibility_notifier_2d.cpp
+msgid "Physics Process Parent"
+msgstr ""
+
#: scene/3d/area.cpp
msgid "Reverb Bus"
msgstr ""
@@ -20332,6 +21737,7 @@ msgid "Attenuation Filter"
msgstr ""
#: scene/3d/audio_stream_player_3d.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
#: servers/audio/effects/audio_effect_filter.cpp
msgid "Cutoff Hz"
msgstr ""
@@ -20375,11 +21781,6 @@ msgid "Octree"
msgstr ""
#: scene/3d/baked_lightmap.cpp
-#, fuzzy
-msgid "User Data"
-msgstr "پاک کردن ارث‌بری"
-
-#: scene/3d/baked_lightmap.cpp
msgid "Finding meshes and lights"
msgstr ""
@@ -20639,6 +22040,16 @@ msgid "Ring Axis"
msgstr "هشدارها"
#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Rotate Y"
+msgstr "وضعیت:"
+
+#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Disable Z"
+msgstr "ØºÛŒØ±ÙØ¹Ø§Ù„ شده"
+
+#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
msgid "Flatness"
msgstr ""
@@ -20678,16 +22089,11 @@ msgstr "صادکردن ÙØ§ÛŒÙ„ کتابخانه ای"
msgid "Dynamic Range"
msgstr "صادکردن ÙØ§ÛŒÙ„ کتابخانه ای"
-#: scene/3d/gi_probe.cpp
+#: scene/3d/gi_probe.cpp scene/3d/light.cpp
msgid "Normal Bias"
msgstr ""
#: scene/3d/gi_probe.cpp
-#, fuzzy
-msgid "Compress"
-msgstr "اجزا"
-
-#: scene/3d/gi_probe.cpp
msgid "Plotting Meshes"
msgstr ""
@@ -20713,17 +22119,31 @@ msgid "Subdiv"
msgstr ""
#: scene/3d/light.cpp
+msgid "Indirect Energy"
+msgstr ""
+
+#: scene/3d/light.cpp
#, fuzzy
msgid "Negative"
msgstr "GDNative"
#: scene/3d/light.cpp
#, fuzzy
+msgid "Specular"
+msgstr "انتخاب حالت"
+
+#: scene/3d/light.cpp
+#, fuzzy
msgid "Bake Mode"
msgstr "انتخاب حالت"
#: scene/3d/light.cpp
#, fuzzy
+msgid "Contact"
+msgstr "محتواها:"
+
+#: scene/3d/light.cpp
+#, fuzzy
msgid "Reverse Cull Face"
msgstr "باز‌نشانی مقدار خطی"
@@ -20733,11 +22153,31 @@ msgid "Directional Shadow"
msgstr "توضیح"
#: scene/3d/light.cpp
+#, fuzzy
+msgid "Split 1"
+msgstr "ویرایش منحنی گره"
+
+#: scene/3d/light.cpp
+#, fuzzy
+msgid "Split 2"
+msgstr "ویرایش منحنی گره"
+
+#: scene/3d/light.cpp
+#, fuzzy
+msgid "Split 3"
+msgstr "ویرایش منحنی گره"
+
+#: scene/3d/light.cpp
msgid "Blend Splits"
msgstr ""
#: scene/3d/light.cpp
#, fuzzy
+msgid "Bias Split Scale"
+msgstr "صحنه جدید"
+
+#: scene/3d/light.cpp
+#, fuzzy
msgid "Depth Range"
msgstr "بومی"
@@ -20763,6 +22203,11 @@ msgstr ""
msgid "Spot"
msgstr ""
+#: scene/3d/light.cpp
+#, fuzzy
+msgid "Angle Attenuation"
+msgstr "انیمیشن"
+
#: scene/3d/mesh_instance.cpp
msgid "Software Skinning"
msgstr ""
@@ -20891,6 +22336,63 @@ msgid "Axis Lock"
msgstr "محور"
#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Linear X"
+msgstr "خطی"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Linear Y"
+msgstr "خطی"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Linear Z"
+msgstr "خطی"
+
+#: scene/3d/physics_body.cpp
+msgid "Angular X"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Angular Y"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Angular Z"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Motion X"
+msgstr "Ø§ÙØ²ÙˆØ¯Ù† وظیÙÙ‡"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Motion Y"
+msgstr "Ø§ÙØ²ÙˆØ¯Ù† وظیÙÙ‡"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Motion Z"
+msgstr "Ø§ÙØ²ÙˆØ¯Ù† وظیÙÙ‡"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Move Lock X"
+msgstr "حرکت دادن گره(ها)"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Move Lock Y"
+msgstr "حرکت دادن گره(ها)"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Move Lock Z"
+msgstr "حرکت دادن گره(ها)"
+
+#: scene/3d/physics_body.cpp
msgid "Body Offset"
msgstr ""
@@ -20924,6 +22426,15 @@ msgid "Exclude Nodes"
msgstr "حذ٠گره(ها)"
#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Params"
+msgstr "تغییر بده"
+
+#: scene/3d/physics_joint.cpp
+msgid "Impulse Clamp"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit"
msgstr ""
@@ -20935,6 +22446,55 @@ msgstr ""
msgid "Lower"
msgstr ""
+#: scene/3d/physics_joint.cpp scene/3d/vehicle_body.cpp
+#, fuzzy
+msgid "Relaxation"
+msgstr "شمارش ها:"
+
+#: scene/3d/physics_joint.cpp
+msgid "Motor"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Target Velocity"
+msgstr "خطی"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Max Impulse"
+msgstr "مقدار:"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit"
+msgstr "خطی"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Upper Distance"
+msgstr "نصب کردن"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Lower Distance"
+msgstr "نصب کردن"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Restitution"
+msgstr "تعریÙ"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motion"
+msgstr "خطی"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Ortho"
+msgstr "خطی"
+
#: scene/3d/physics_joint.cpp
msgid "Upper Angle"
msgstr ""
@@ -20945,6 +22505,16 @@ msgstr ""
#: scene/3d/physics_joint.cpp
#, fuzzy
+msgid "Angular Motion"
+msgstr "انیمیشن"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Angular Ortho"
+msgstr "خطای Max. Angular:"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
msgid "Swing Span"
msgstr "ذخیره سازی صحنه"
@@ -20953,17 +22523,99 @@ msgid "Twist Span"
msgstr ""
#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit X"
+msgstr "خطی"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motor X"
+msgstr "خطی"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Force Limit"
+msgstr "ÙØ±Ø§Ø®ÙˆØ§Ù†ÛŒ"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Spring X"
+msgstr "خطی"
+
+#: scene/3d/physics_joint.cpp
+msgid "Equilibrium Point"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit X"
msgstr ""
#: scene/3d/physics_joint.cpp
+msgid "Erp"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Motor X"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Spring X"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit Y"
+msgstr "خطی"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motor Y"
+msgstr "خطی"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Spring Y"
+msgstr "خطی"
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit Y"
msgstr ""
#: scene/3d/physics_joint.cpp
+msgid "Angular Motor Y"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Spring Y"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit Z"
+msgstr "خطی"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motor Z"
+msgstr "خطی"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Spring Z"
+msgstr "خطی"
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit Z"
msgstr ""
+#: scene/3d/physics_joint.cpp
+msgid "Angular Motor Z"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Spring Z"
+msgstr ""
+
#: scene/3d/portal.cpp
msgid "The RoomManager should not be a child or grandchild of a Portal."
msgstr ""
@@ -21079,7 +22731,7 @@ msgstr ""
msgid "Use Default Simplify"
msgstr ""
-#: scene/3d/room.cpp
+#: scene/3d/room.cpp scene/3d/room_manager.cpp
msgid "Room Simplify"
msgstr ""
@@ -21118,6 +22770,13 @@ msgstr ""
msgid "Main"
msgstr ""
+#: scene/3d/room_manager.cpp scene/animation/animation_player.cpp
+#: scene/animation/animation_tree.cpp scene/animation/animation_tree_player.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+#, fuzzy
+msgid "Active"
+msgstr "Ø§ÙØ²ÙˆØ¯Ù† وظیÙÙ‡"
+
#: scene/3d/room_manager.cpp
msgid "Roomlist"
msgstr ""
@@ -21142,6 +22801,51 @@ msgid "Gameplay"
msgstr ""
#: scene/3d/room_manager.cpp
+msgid "Gameplay Monitor"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "Use Secondary PVS"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Merge Meshes"
+msgstr "حالت صاÙÛŒ:"
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Show Margins"
+msgstr "نمایش در ÙØ§ÛŒÙ„‌سیستم"
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Debug Sprawl"
+msgstr "اشکال یابی"
+
+#: scene/3d/room_manager.cpp
+msgid "Overlap Warning Threshold"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Preview Camera"
+msgstr "به‌روزرسانی از صحنه"
+
+#: scene/3d/room_manager.cpp
+msgid "Portal Depth Limit"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Default Portal Margin"
+msgstr "Ù¾ÛŒØ´ÙØ±Ø¶"
+
+#: scene/3d/room_manager.cpp
+msgid "Roaming Expansion Margin"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
msgid ""
"RoomList path is invalid.\n"
"Please check the RoomList branch has been assigned in the RoomManager."
@@ -21262,6 +22966,20 @@ msgstr ""
msgid "Billboard"
msgstr ""
+#: scene/3d/sprite_3d.cpp scene/resources/material.cpp
+#, fuzzy
+msgid "Transparent"
+msgstr "ترجمه‌ها"
+
+#: scene/3d/sprite_3d.cpp
+#, fuzzy
+msgid "Shaded"
+msgstr "تغییر بده"
+
+#: scene/3d/sprite_3d.cpp
+msgid "Double Sided"
+msgstr ""
+
#: scene/3d/sprite_3d.cpp
msgid "Alpha Cut"
msgstr ""
@@ -21334,11 +23052,6 @@ msgstr "انتقال را در انیمیشن تغییر بده"
msgid "Max Force"
msgstr "بازتاب"
-#: scene/3d/vehicle_body.cpp
-#, fuzzy
-msgid "Relaxation"
-msgstr "شمارش ها:"
-
#: scene/3d/visibility_notifier.cpp
msgid "AABB"
msgstr ""
@@ -21475,7 +23188,7 @@ msgstr ""
#: scene/animation/animation_blend_tree.cpp
#, fuzzy
-msgid "autorestart_"
+msgid "Auto Restart"
msgstr "راه اندازی دوباره"
#: scene/animation/animation_blend_tree.cpp
@@ -21559,13 +23272,6 @@ msgstr "گزینه‌های کلاس:"
msgid "Default Blend Time"
msgstr "Ù¾ÛŒØ´ÙØ±Ø¶"
-#: scene/animation/animation_player.cpp scene/animation/animation_tree.cpp
-#: scene/animation/animation_tree_player.cpp
-#: servers/audio/effects/audio_effect_delay.cpp
-#, fuzzy
-msgid "Active"
-msgstr "Ø§ÙØ²ÙˆØ¯Ù† وظیÙÙ‡"
-
#: scene/animation/animation_player.cpp
msgid "Method Call Mode"
msgstr ""
@@ -21689,10 +23395,6 @@ msgstr "گره تغییر والد"
msgid "Max Iterations"
msgstr "تغییر نام نقش"
-#: scene/animation/tween.cpp scene/resources/texture.cpp
-msgid "Repeat"
-msgstr ""
-
#: scene/animation/tween.cpp
msgid "Playback Process Mode"
msgstr ""
@@ -21722,20 +23424,6 @@ msgstr "انتخاب حالت"
msgid "Alignment"
msgstr ""
-#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
-#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
-#: scene/resources/style_box.cpp
-#, fuzzy
-msgid "Horizontal"
-msgstr "کلیدهای نامعتبر را حذ٠کن"
-
-#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
-#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
-#: scene/resources/style_box.cpp
-#, fuzzy
-msgid "Vertical"
-msgstr "برداشتن متغیر"
-
#: scene/gui/base_button.cpp
msgid "Shortcut In Tooltip"
msgstr ""
@@ -21830,10 +23518,6 @@ msgid "HSV"
msgstr ""
#: scene/gui/color_picker.cpp
-msgid "Raw"
-msgstr "خام"
-
-#: scene/gui/color_picker.cpp
msgid "Switch between hexadecimal and code values."
msgstr ""
@@ -21891,6 +23575,31 @@ msgid "Focus"
msgstr ""
#: scene/gui/control.cpp
+msgid "Neighbour Left"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Neighbour Top"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Neighbour Right"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Neighbour Bottom"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Next"
+msgstr "بعدی"
+
+#: scene/gui/control.cpp
+#, fuzzy
+msgid "Previous"
+msgstr "زبانه قبلی"
+
+#: scene/gui/control.cpp
msgid "Mouse"
msgstr ""
@@ -21926,7 +23635,7 @@ msgid "Dialog"
msgstr ""
#: scene/gui/dialogs.cpp
-msgid "Hide On Ok"
+msgid "Hide On OK"
msgstr ""
#: scene/gui/dialogs.cpp scene/gui/label.cpp
@@ -22021,7 +23730,7 @@ msgid "Timers"
msgstr "زمان:"
#: scene/gui/item_list.cpp scene/gui/popup_menu.cpp scene/gui/tree.cpp
-msgid "Incremental Search Max Interval (msec)"
+msgid "Incremental Search Max Interval Msec"
msgstr ""
#: scene/gui/item_list.cpp scene/gui/tree.cpp
@@ -22584,6 +24293,26 @@ msgstr "ساختن گره"
msgid "Nine Patch Stretch"
msgstr "حالت درون یابی(درون‌یابی روشی است برای ÛŒØ§ÙØªÙ† مقدار تابع درون یک بازه)"
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Left"
+msgstr "انتخاب حالت"
+
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Top"
+msgstr "انتخاب حالت"
+
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Right"
+msgstr "انتخاب حالت"
+
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Bottom"
+msgstr "انتخاب حالت"
+
#: scene/gui/tree.cpp
msgid "Custom Minimum Height"
msgstr ""
@@ -22621,8 +24350,9 @@ msgid "Paused"
msgstr ""
#: scene/gui/video_player.cpp
-msgid "Buffering (msec)"
-msgstr ""
+#, fuzzy
+msgid "Buffering Msec"
+msgstr "ادغام از صحنه"
#: scene/gui/video_player.cpp
#, fuzzy
@@ -22966,6 +24696,22 @@ msgid "Shadow Atlas"
msgstr "نشان دادن همهٔ بومی‌سازی‌ها"
#: scene/main/viewport.cpp
+msgid "Quad 0"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 1"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 2"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 3"
+msgstr ""
+
+#: scene/main/viewport.cpp
#, fuzzy
msgid "Canvas Transform"
msgstr "انتقال را در انیمیشن تغییر بده"
@@ -22980,6 +24726,11 @@ msgid "Tooltip Delay (sec)"
msgstr ""
#: scene/register_scene_types.cpp
+#, fuzzy
+msgid "Swap OK Cancel"
+msgstr "لغو"
+
+#: scene/register_scene_types.cpp
msgid "Use hiDPI"
msgstr ""
@@ -22994,21 +24745,6 @@ msgid "Custom Font"
msgstr "ساختن گره"
#: scene/resources/audio_stream_sample.cpp
-#, fuzzy
-msgid "Loop Mode"
-msgstr "انتخاب حالت"
-
-#: scene/resources/audio_stream_sample.cpp
-#, fuzzy
-msgid "Loop Begin"
-msgstr "انتخاب حالت"
-
-#: scene/resources/audio_stream_sample.cpp
-#, fuzzy
-msgid "Loop End"
-msgstr "انتخاب حالت"
-
-#: scene/resources/audio_stream_sample.cpp
#: servers/audio/effects/audio_stream_generator.cpp servers/audio_server.cpp
#, fuzzy
msgid "Mix Rate"
@@ -23065,6 +24801,17 @@ msgid "Extra Spacing"
msgstr "گزینه‌های کلاس:"
#: scene/resources/dynamic_font.cpp
+#, fuzzy
+msgid "Char"
+msgstr "کاراکترهای معتبر:"
+
+#: scene/resources/dynamic_font.cpp scene/resources/world.cpp
+#: scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Space"
+msgstr "ÙØ±Ø§Ø®ÙˆØ§Ù†ÛŒ"
+
+#: scene/resources/dynamic_font.cpp
msgid "Font"
msgstr ""
@@ -23286,6 +25033,43 @@ msgid "Glow"
msgstr ""
#: scene/resources/environment.cpp
+#, fuzzy
+msgid "Levels"
+msgstr "توسعه دهندگان"
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "1"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "2"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "3"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "4"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "5"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "6"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "7"
+msgstr ""
+
+#: scene/resources/environment.cpp
msgid "Bloom"
msgstr ""
@@ -23374,9 +25158,66 @@ msgid "Next Pass"
msgstr "زبانه بعدی"
#: scene/resources/material.cpp
+msgid "Use Shadow To Opacity"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Unshaded"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Vertex Lighting"
+msgstr "توضیح"
+
+#: scene/resources/material.cpp
+msgid "No Depth Test"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Use Point Size"
+msgstr "باز کردن و اجرای یک اسکریپت"
+
+#: scene/resources/material.cpp
+msgid "World Triplanar"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Fixed Size"
+msgstr "باز کردن و اجرای یک اسکریپت"
+
+#: scene/resources/material.cpp
+msgid "Albedo Tex Force sRGB"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Do Not Receive Shadows"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Disable Ambient Light"
+msgstr "ØºÛŒØ±ÙØ¹Ø§Ù„ شده"
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Ensure Correct Normals"
+msgstr "انتخاب شده را تغییر مقیاس بده"
+
+#: scene/resources/material.cpp
msgid "Vertex Color"
msgstr ""
+#: scene/resources/material.cpp
+msgid "Use As Albedo"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Is sRGB"
+msgstr ""
+
#: scene/resources/material.cpp servers/visual_server.cpp
#, fuzzy
msgid "Parameters"
@@ -23413,6 +25254,11 @@ msgid "Billboard Mode"
msgstr "انتخاب حالت"
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Billboard Keep Scale"
+msgstr "انتخاب حالت"
+
+#: scene/resources/material.cpp
msgid "Grow"
msgstr ""
@@ -23422,6 +25268,10 @@ msgid "Grow Amount"
msgstr "کلیدهای نامعتبر را حذ٠کن"
#: scene/resources/material.cpp
+msgid "Use Alpha Scissor"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Alpha Scissor Threshold"
msgstr ""
@@ -23452,10 +25302,20 @@ msgid "Metallic Specular"
msgstr ""
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Metallic Texture"
+msgstr "حذ٠قالب"
+
+#: scene/resources/material.cpp
msgid "Metallic Texture Channel"
msgstr ""
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Roughness Texture"
+msgstr "حذ٠قالب"
+
+#: scene/resources/material.cpp
msgid "Roughness Texture Channel"
msgstr ""
@@ -23473,6 +25333,16 @@ msgid "Emission Operator"
msgstr ""
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Emission On UV2"
+msgstr "انتقال را در انیمیشن تغییر بده"
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Emission Texture"
+msgstr "حذ٠قالب"
+
+#: scene/resources/material.cpp
msgid "NormalMap"
msgstr ""
@@ -23486,6 +25356,11 @@ msgstr ""
#: scene/resources/material.cpp
#, fuzzy
+msgid "Rim Texture"
+msgstr "حذ٠قالب"
+
+#: scene/resources/material.cpp
+#, fuzzy
msgid "Clearcoat"
msgstr "پاک کردن"
@@ -23495,15 +25370,28 @@ msgid "Clearcoat Gloss"
msgstr "پخش Ø³ÙØ§Ø±Ø´ÛŒ صحنه"
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Clearcoat Texture"
+msgstr "عضوها"
+
+#: scene/resources/material.cpp
msgid "Anisotropy"
msgstr ""
#: scene/resources/material.cpp
+msgid "Anisotropy Flowmap"
+msgstr ""
+
+#: scene/resources/material.cpp
#, fuzzy
msgid "Ambient Occlusion"
msgstr "ویرایش سیگنال"
#: scene/resources/material.cpp
+msgid "On UV2"
+msgstr ""
+
+#: scene/resources/material.cpp
#, fuzzy
msgid "Texture Channel"
msgstr "انتخاب حالت"
@@ -23541,6 +25429,11 @@ msgstr "انتقال"
#: scene/resources/material.cpp
#, fuzzy
+msgid "Transmission Texture"
+msgstr "انتقال"
+
+#: scene/resources/material.cpp
+#, fuzzy
msgid "Refraction"
msgstr "شمارش ها:"
@@ -23557,6 +25450,10 @@ msgid "UV1"
msgstr ""
#: scene/resources/material.cpp
+msgid "Triplanar"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Triplanar Sharpness"
msgstr ""
@@ -23763,6 +25660,16 @@ msgstr "عضوها"
msgid "Point Count"
msgstr "Ø§ÙØ²ÙˆØ¯Ù† عمل ورودی"
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Scale Random"
+msgstr "نسبت تغییر مقیاس:"
+
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Scale Curve"
+msgstr "ویرایش منحنی گره"
+
#: scene/resources/physics_material.cpp
msgid "Rough"
msgstr ""
@@ -23821,10 +25728,6 @@ msgid "A"
msgstr ""
#: scene/resources/shader.cpp
-msgid "Code"
-msgstr ""
-
-#: scene/resources/shader.cpp
#, fuzzy
msgid "Custom Defines"
msgstr "اجرای صحنه دلخواه"
@@ -23917,15 +25820,6 @@ msgstr ""
#: scene/resources/texture.cpp
#, fuzzy
-msgid "Storage"
-msgstr "ذخیره ÙØ§ÛŒÙ„:"
-
-#: scene/resources/texture.cpp
-msgid "Lossy Quality"
-msgstr ""
-
-#: scene/resources/texture.cpp
-#, fuzzy
msgid "Load Path"
msgstr "خطاهای بارگذاری"
@@ -24052,11 +25946,6 @@ msgstr "عمل مقایسه نامعتبر بزای این نوع."
msgid "Fallback Environment"
msgstr ""
-#: scene/resources/world.cpp scene/resources/world_2d.cpp
-#, fuzzy
-msgid "Space"
-msgstr "ÙØ±Ø§Ø®ÙˆØ§Ù†ÛŒ"
-
#: scene/resources/world.cpp
#, fuzzy
msgid "Scenario"
@@ -24135,10 +26024,37 @@ msgstr ""
msgid "Wet"
msgstr ""
-#: servers/audio/effects/audio_effect_compressor.cpp
-msgid "Threshold"
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "Voice"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+msgid "Delay (ms)"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_phaser.cpp
+msgid "Rate Hz"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#, fuzzy
+msgid "Depth (ms)"
+msgstr "بومی"
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+msgid "Level dB"
msgstr ""
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+#: servers/audio/effects/audio_effect_panner.cpp
+#, fuzzy
+msgid "Pan"
+msgstr "بسته بندی"
+
#: servers/audio/effects/audio_effect_compressor.cpp
#: servers/audio/effects/audio_effect_filter.cpp
msgid "Gain"
@@ -24161,20 +26077,6 @@ msgid "Tap 1"
msgstr ""
#: servers/audio/effects/audio_effect_delay.cpp
-msgid "Delay (ms)"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_delay.cpp
-msgid "Level dB"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_delay.cpp
-#: servers/audio/effects/audio_effect_panner.cpp
-#, fuzzy
-msgid "Pan"
-msgstr "بسته بندی"
-
-#: servers/audio/effects/audio_effect_delay.cpp
msgid "Tap 2"
msgstr ""
@@ -24234,10 +26136,6 @@ msgstr ""
msgid "Range Max Hz"
msgstr ""
-#: servers/audio/effects/audio_effect_phaser.cpp
-msgid "Rate Hz"
-msgstr ""
-
#: servers/audio/effects/audio_effect_pitch_shift.cpp
msgid "Oversampling"
msgstr ""
@@ -24253,7 +26151,7 @@ msgid "Predelay"
msgstr ""
#: servers/audio/effects/audio_effect_reverb.cpp
-msgid "(msec)"
+msgid "Msec"
msgstr ""
#: servers/audio/effects/audio_effect_reverb.cpp
diff --git a/editor/translations/fi.po b/editor/translations/fi.po
index 216309f2b1..3a9618d02c 100644
--- a/editor/translations/fi.po
+++ b/editor/translations/fi.po
@@ -28,7 +28,7 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 4.12-dev\n"
-#: core/bind/core_bind.cpp
+#: core/bind/core_bind.cpp main/main.cpp
msgid "Tablet Driver"
msgstr ""
@@ -132,8 +132,8 @@ msgstr "Telakan sijainti"
#: core/bind/core_bind.cpp editor/editor_settings.cpp main/main.cpp
#: modules/gdscript/gdscript_editor.cpp modules/gridmap/grid_map.cpp
#: modules/mono/csharp_script.cpp modules/visual_script/visual_script_nodes.cpp
-#: scene/2d/tile_map.cpp scene/3d/camera.cpp scene/gui/control.cpp
-#: scene/gui/graph_edit.cpp scene/main/viewport.cpp
+#: scene/2d/tile_map.cpp scene/3d/camera.cpp scene/3d/light.cpp
+#: scene/gui/control.cpp scene/gui/graph_edit.cpp scene/main/viewport.cpp
#: scene/resources/dynamic_font.cpp scene/resources/navigation_mesh.cpp
#: scene/resources/primitive_meshes.cpp scene/resources/sky.cpp
#: scene/resources/style_box.cpp scene/resources/texture.cpp
@@ -237,8 +237,7 @@ msgid "Data"
msgstr "Datan kanssa"
#: core/io/file_access_network.cpp core/register_core_types.cpp
-#: editor/editor_settings.cpp editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp main/main.cpp
+#: editor/editor_settings.cpp main/main.cpp
#: modules/gdscript/language_server/gdscript_language_server.cpp
#, fuzzy
msgid "Network"
@@ -523,9 +522,10 @@ msgstr "Esiasetukset"
msgid "Relative"
msgstr "Suhteellinen tarttuminen"
-#: core/os/input_event.cpp scene/2d/camera_2d.cpp
-#: scene/3d/interpolated_camera.cpp scene/animation/animation_player.cpp
-#: scene/resources/environment.cpp
+#: core/os/input_event.cpp scene/2d/camera_2d.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/interpolated_camera.cpp
+#: scene/animation/animation_player.cpp scene/resources/environment.cpp
+#: scene/resources/particles_material.cpp
#, fuzzy
msgid "Speed"
msgstr "Nopeus:"
@@ -575,8 +575,9 @@ msgstr "Muutosten vahvistusviesti"
msgid "Pitch"
msgstr "Nyökkäyskulma:"
-#: core/os/input_event.cpp scene/2d/physics_body_2d.cpp
-#: scene/3d/physics_body.cpp
+#: core/os/input_event.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/physics_body_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/3d/physics_body.cpp scene/resources/particles_material.cpp
#, fuzzy
msgid "Velocity"
msgstr "Kiertoratanäkymä oikealle"
@@ -595,6 +596,8 @@ msgid "Controller Value"
msgstr ""
#: core/project_settings.cpp editor/editor_node.cpp main/main.cpp
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/windows/export/export.cpp
#, fuzzy
msgid "Application"
msgstr "Toiminto"
@@ -613,13 +616,16 @@ msgstr "Projektin asetukset..."
#: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp
#: editor/editor_plugin_settings.cpp editor/editor_profiler.cpp
#: editor/project_manager.cpp editor/settings_config_dialog.cpp
-#: modules/gdnative/nativescript/nativescript.cpp scene/2d/area_2d.cpp
-#: scene/3d/area.cpp scene/main/node.cpp
+#: modules/gdnative/nativescript/nativescript.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/osx/export/export.cpp scene/2d/area_2d.cpp scene/3d/area.cpp
+#: scene/main/node.cpp
msgid "Name"
msgstr "Nimi"
#: core/project_settings.cpp editor/editor_help.cpp
-#: modules/visual_script/visual_script_nodes.cpp
+#: modules/visual_script/visual_script_nodes.cpp platform/uwp/export/export.cpp
+#: platform/windows/export/export.cpp
msgid "Description"
msgstr "Kuvaus"
@@ -657,7 +663,7 @@ msgid "Custom User Dir Name"
msgstr ""
#: core/project_settings.cpp editor/animation_track_editor.cpp
-#: editor/editor_audio_buses.cpp servers/audio_server.cpp
+#: editor/editor_audio_buses.cpp main/main.cpp servers/audio_server.cpp
msgid "Audio"
msgstr "Äänet"
@@ -825,10 +831,13 @@ msgstr "Suodattimet:"
msgid "Sharpen Intensity"
msgstr ""
-#: core/project_settings.cpp editor/editor_node.cpp editor/editor_settings.cpp
-#: editor/plugins/script_editor_plugin.cpp editor/project_export.cpp
-#: main/main.cpp modules/gdscript/gdscript.cpp
-#: modules/visual_script/visual_script.cpp scene/3d/room_manager.cpp
+#: core/project_settings.cpp editor/editor_export.cpp editor/editor_node.cpp
+#: editor/editor_settings.cpp editor/plugins/script_editor_plugin.cpp
+#: editor/project_export.cpp main/main.cpp modules/gdscript/gdscript.cpp
+#: modules/visual_script/visual_script.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp scene/3d/room_manager.cpp
#: scene/main/scene_tree.cpp scene/resources/shape_2d.cpp
#: servers/visual_server.cpp
msgid "Debug"
@@ -1064,6 +1073,7 @@ msgid "Subsurface Scattering"
msgstr ""
#: drivers/gles3/rasterizer_scene_gles3.cpp
+#: editor/import/resource_importer_texture.cpp
#: editor/plugins/spatial_editor_plugin.cpp modules/gltf/gltf_node.cpp
#: modules/gridmap/grid_map.cpp scene/2d/cpu_particles_2d.cpp
#: scene/2d/node_2d.cpp scene/2d/parallax_layer.cpp scene/2d/polygon_2d.cpp
@@ -1361,6 +1371,7 @@ msgid "Editors"
msgstr "Editori"
#: editor/animation_track_editor.cpp editor/editor_settings.cpp
+#: editor/import/resource_importer_scene.cpp
#: editor/plugins/animation_player_editor_plugin.cpp editor/scene_tree_dock.cpp
#: scene/2d/animated_sprite.cpp scene/2d/cpu_particles_2d.cpp
#: scene/2d/sprite.cpp scene/3d/cpu_particles.cpp scene/3d/sprite_3d.cpp
@@ -1591,14 +1602,14 @@ msgstr "Animaation askelluksen arvo."
msgid "Seconds"
msgstr "Sekunnit"
-#: editor/animation_track_editor.cpp
+#: editor/animation_track_editor.cpp editor/import/resource_importer_scene.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp main/main.cpp
#: scene/resources/texture.cpp
msgid "FPS"
msgstr "FPS"
#: editor/animation_track_editor.cpp editor/editor_plugin_settings.cpp
-#: editor/editor_resource_picker.cpp
+#: editor/editor_resource_picker.cpp editor/import/resource_importer_wav.cpp
#: editor/plugins/polygon_2d_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
@@ -2565,7 +2576,9 @@ msgid "Remove Autoload"
msgstr "Poista automaattinen lataus"
#: editor/editor_autoload_settings.cpp editor/editor_plugin_settings.cpp
-#: modules/gdscript/gdscript.cpp scene/2d/polygon_2d.cpp scene/3d/area.cpp
+#: modules/gdscript/gdscript.cpp platform/android/export/export_plugin.cpp
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#: scene/2d/polygon_2d.cpp scene/3d/area.cpp scene/3d/physics_joint.cpp
#: scene/3d/reflection_probe.cpp scene/main/canvas_layer.cpp
#: scene/resources/material.cpp servers/visual_server.cpp
msgid "Enable"
@@ -2732,6 +2745,59 @@ msgstr ""
#: editor/editor_export.cpp platform/android/export/export_plugin.cpp
#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Custom Template"
+msgstr "Editorin teema"
+
+#: editor/editor_export.cpp editor/project_export.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp
+msgid "Release"
+msgstr "Julkaisuversio"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Binary Format"
+msgstr "Värioperaattori."
+
+#: editor/editor_export.cpp
+msgid "64 Bits"
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Embed PCK"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Texture Format"
+msgstr "Tekstuurialue"
+
+#: editor/editor_export.cpp
+msgid "BPTC"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "S3TC"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "ETC"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "ETC2"
+msgstr ""
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "No BPTC Fallbacks"
+msgstr "Pakota varasävyttimien käyttö"
+
+#: editor/editor_export.cpp platform/android/export/export_plugin.cpp
+#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
msgid "Custom debug template not found."
msgstr "Mukautettua debug-vientimallia ei löytynyt."
@@ -2914,6 +2980,7 @@ msgid "Make Current"
msgstr "Aseta nykyiseksi"
#: editor/editor_feature_profile.cpp editor/editor_node.cpp
+#: editor/import/resource_importer_scene.cpp
#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
msgid "Import"
msgstr "Tuo"
@@ -3042,8 +3109,11 @@ msgstr "Onnistui!"
msgid "Display Mode"
msgstr "Toistotila:"
-#: editor/editor_file_dialog.cpp main/main.cpp modules/csg/csg_shape.cpp
-#: modules/visual_script/visual_script_nodes.cpp
+#: editor/editor_file_dialog.cpp
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+#: editor/import/resource_importer_wav.cpp main/main.cpp
+#: modules/csg/csg_shape.cpp modules/visual_script/visual_script_nodes.cpp
#: modules/visual_script/visual_script_yield_nodes.cpp scene/2d/light_2d.cpp
#: scene/2d/physics_body_2d.cpp scene/2d/tile_map.cpp
#: scene/3d/baked_lightmap.cpp scene/3d/light.cpp scene/3d/physics_body.cpp
@@ -3181,7 +3251,9 @@ msgstr "Tuodaan (uudelleen) assetteja"
msgid "Reimport Missing Imported Files"
msgstr ""
-#: editor/editor_help.cpp
+#: editor/editor_help.cpp scene/2d/camera_2d.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/resources/dynamic_font.cpp
+#: scene/resources/style_box.cpp
msgid "Top"
msgstr "Alku"
@@ -3233,6 +3305,7 @@ msgid "Fonts"
msgstr "Fontit"
#: editor/editor_help.cpp editor/plugins/theme_editor_plugin.cpp
+#: platform/iphone/export/export.cpp
msgid "Icons"
msgstr "Kuvakkeet"
@@ -3404,7 +3477,9 @@ msgid "Pin value [Disabled because '%s' is editor-only]"
msgstr ""
"Kiinnitä arvo [Poistettu käytöstä, koska '%s' on käytössä vain editorissa]"
-#: editor/editor_inspector.cpp editor/scene_tree_dock.cpp
+#: editor/editor_inspector.cpp
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+#: editor/scene_tree_dock.cpp
#: modules/visual_script/visual_script_func_nodes.cpp
#: modules/visual_script/visual_script_nodes.cpp
#: modules/visual_script/visual_script_property_selector.cpp
@@ -3743,6 +3818,16 @@ msgid "Quick Open Script..."
msgstr "Skriptin pika-avaus..."
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Save & Reload"
+msgstr "Tallenna & käynnistä uudelleen"
+
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Save changes to '%s' before reloading?"
+msgstr "Tallennetaanko muutokset tiedostoon '%s' ennen sulkemista?"
+
+#: editor/editor_node.cpp
msgid "Save & Close"
msgstr "Tallenna ja sulje"
@@ -3861,6 +3946,13 @@ msgid "Open Project Manager?"
msgstr "Avataanko projektinhallinta?"
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Save changes to the following scene(s) before reloading?"
+msgstr ""
+"Tallenna muutokset seuraavaan kohtaukseen (seuraaviin kohtauksiin) ennen "
+"lopettamista?"
+
+#: editor/editor_node.cpp
msgid "Save & Quit"
msgstr "Tallenna ja lopeta"
@@ -4135,8 +4227,8 @@ msgstr "Päivitä olennaiset muutokset"
#: editor/editor_node.cpp
#, fuzzy
-msgid "Translate Properties"
-msgstr "Liitä ominaisuudet"
+msgid "Localize Settings"
+msgstr "Kääntäminen"
#: editor/editor_node.cpp
#, fuzzy
@@ -4153,8 +4245,8 @@ msgstr "Tarkastelu"
#: editor/editor_node.cpp
#, fuzzy
-msgid "Capitalize Properties"
-msgstr "Liitä ominaisuudet"
+msgid "Default Property Name Style"
+msgstr "Projektin polku:"
#: editor/editor_node.cpp
msgid "Default Float Step"
@@ -4758,7 +4850,9 @@ msgstr "Asennetut lisäosat:"
msgid "Update"
msgstr "Päivitä"
-#: editor/editor_plugin_settings.cpp
+#: editor/editor_plugin_settings.cpp platform/android/export/export_plugin.cpp
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp
msgid "Version"
msgstr "Versio"
@@ -5800,7 +5894,7 @@ msgstr "Täysi ruutu"
msgid "Rect Custom Position"
msgstr "Aseta käyrän lopetussijainti"
-#: editor/editor_settings.cpp
+#: editor/editor_settings.cpp platform/android/export/export_plugin.cpp
msgid "Screen"
msgstr ""
@@ -5827,6 +5921,19 @@ msgid "Editor SSL Certificates"
msgstr "Editorin asetukset"
#: editor/editor_settings.cpp
+msgid "HTTP Proxy"
+msgstr ""
+
+#: editor/editor_settings.cpp
+msgid "Host"
+msgstr ""
+
+#: editor/editor_settings.cpp editor/fileserver/editor_file_server.cpp
+#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp
+msgid "Port"
+msgstr ""
+
+#: editor/editor_settings.cpp
msgid "Project Manager"
msgstr "Projektinhallinta"
@@ -5869,7 +5976,8 @@ msgstr ""
msgid "String Color"
msgstr "Varastoidaan tiedostoa:"
-#: editor/editor_settings.cpp
+#: editor/editor_settings.cpp platform/javascript/export/export.cpp
+#: platform/uwp/export/export.cpp
#, fuzzy
msgid "Background Color"
msgstr "Virheellinen taustaväri."
@@ -6048,22 +6156,6 @@ msgid "Starting the download..."
msgstr "Aloitetaan lataus..."
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "HTTP Proxy"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Host"
-msgstr ""
-
-#: editor/export_template_manager.cpp editor/fileserver/editor_file_server.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp main/main.cpp
-#: modules/mono/mono_gd/gd_mono.cpp
-msgid "Port"
-msgstr ""
-
-#: editor/export_template_manager.cpp
msgid "Error requesting URL:"
msgstr "Virhe pyydettäessä osoitetta:"
@@ -6315,6 +6407,7 @@ msgstr ""
#: editor/fileserver/editor_file_server.cpp
#: editor/plugins/version_control_editor_plugin.cpp
+#: platform/uwp/export/export.cpp platform/windows/export/export.cpp
msgid "Password"
msgstr "Salasana"
@@ -6696,6 +6789,117 @@ msgstr ""
msgid "Use Ambient"
msgstr ""
+#: editor/import/resource_importer_bitmask.cpp
+#, fuzzy
+msgid "Create From"
+msgstr "Luo kansio"
+
+#: editor/import/resource_importer_bitmask.cpp
+#: servers/audio/effects/audio_effect_compressor.cpp
+msgid "Threshold"
+msgstr ""
+
+#: editor/import/resource_importer_csv_translation.cpp
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_scene.cpp
+#: editor/import/resource_importer_texture.cpp
+#: editor/import/resource_importer_wav.cpp scene/3d/gi_probe.cpp
+#, fuzzy
+msgid "Compress"
+msgstr "Komponentit"
+
+#: editor/import/resource_importer_csv_translation.cpp
+msgid "Delimiter"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+msgid "No BPTC If RGB"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/sprite_3d.cpp
+#: scene/resources/material.cpp scene/resources/particles_material.cpp
+#: scene/resources/texture.cpp
+msgid "Flags"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/animation/tween.cpp
+#: scene/resources/texture.cpp
+msgid "Repeat"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/2d/light_2d.cpp
+#: scene/gui/control.cpp scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Filter"
+msgstr "Suodattimet:"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Mipmaps"
+msgstr "Signaalit"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+msgid "Anisotropic"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+msgid "sRGB"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#, fuzzy
+msgid "Slices"
+msgstr "Jaa automaattisesti"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
+#: scene/resources/style_box.cpp
+#, fuzzy
+msgid "Horizontal"
+msgstr "Vaakasuora:"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
+#: scene/resources/style_box.cpp
+#, fuzzy
+msgid "Vertical"
+msgstr "Pystysuora:"
+
+#: editor/import/resource_importer_obj.cpp
+#, fuzzy
+msgid "Generate Tangents"
+msgstr "Luo pisteet"
+
+#: editor/import/resource_importer_obj.cpp
+#, fuzzy
+msgid "Scale Mesh"
+msgstr "Skaalaustila"
+
+#: editor/import/resource_importer_obj.cpp
+#, fuzzy
+msgid "Offset Mesh"
+msgstr "Siirtymä:"
+
+#: editor/import/resource_importer_obj.cpp
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Octahedral Compression"
+msgstr "Lauseke"
+
+#: editor/import/resource_importer_obj.cpp
+#, fuzzy
+msgid "Optimize Mesh Flags"
+msgstr "Koko: "
+
#: editor/import/resource_importer_scene.cpp
msgid "Import as Single Scene"
msgstr "Tuo yksittäisenä kohtauksena"
@@ -6736,6 +6940,156 @@ msgstr "Tuo useina kohtauksina"
msgid "Import as Multiple Scenes+Materials"
msgstr "Tuo useana kohtauksena +materiaaleina"
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Nodes"
+msgstr "Solmu"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Root Type"
+msgstr "Palauta"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Root Name"
+msgstr "Etäsäilön nimi"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Root Scale"
+msgstr "Skaalaa"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Custom Script"
+msgstr "Mukautettu solmu"
+
+#: editor/import/resource_importer_scene.cpp scene/resources/texture.cpp
+#, fuzzy
+msgid "Storage"
+msgstr "Varastoidaan tiedostoa:"
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Use Legacy Names"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+#, fuzzy
+msgid "Materials"
+msgstr "Materiaalimuutokset:"
+
+#: editor/import/resource_importer_scene.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Location"
+msgstr "Kääntäminen"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Keep On Reimport"
+msgstr "Tuo uudelleen"
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+#, fuzzy
+msgid "Meshes"
+msgstr "Mesh"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Ensure Tangents"
+msgstr "Muokkaa käyrän tangenttia"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Light Baking"
+msgstr "Kehitä Lightmapit"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Lightmap Texel Size"
+msgstr "LightMapin kehitys"
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+msgid "Skins"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Use Named Skins"
+msgstr "Käytä skaalauksen tarttumista"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "External Files"
+msgstr "Avaa tiedosto"
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Store In Subdir"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Filter Script"
+msgstr "Suodata skriptejä"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Keep Custom Tracks"
+msgstr "Muunna"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Optimizer"
+msgstr "Optimoi"
+
+#: editor/import/resource_importer_scene.cpp main/main.cpp
+#: modules/mono/mono_gd/gd_mono.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp scene/2d/camera_2d.cpp scene/2d/light_2d.cpp
+#: scene/2d/navigation_polygon.cpp scene/2d/ray_cast_2d.cpp scene/2d/sprite.cpp
+#: scene/2d/y_sort.cpp scene/3d/audio_stream_player_3d.cpp
+#: scene/3d/baked_lightmap.cpp scene/3d/interpolated_camera.cpp
+#: scene/3d/light.cpp scene/3d/navigation_mesh_instance.cpp
+#: scene/3d/physics_joint.cpp scene/3d/ray_cast.cpp scene/3d/sprite_3d.cpp
+#: scene/gui/graph_edit.cpp scene/gui/rich_text_label.cpp
+#: scene/resources/curve.cpp scene/resources/environment.cpp
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Enabled"
+msgstr "Ota käyttöön"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Max Linear Error"
+msgstr "Max. lineaarinen virhe:"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Max Angular Error"
+msgstr "Max. kulmavirhe:"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Max Angle"
+msgstr "Arvo"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Remove Unused Tracks"
+msgstr "Poista animaatioraita"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Clips"
+msgstr "Animaatioleikkeet"
+
+#: editor/import/resource_importer_scene.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/particles_2d.cpp scene/3d/area.cpp scene/3d/cpu_particles.cpp
+#: scene/3d/particles.cpp scene/resources/environment.cpp
+#, fuzzy
+msgid "Amount"
+msgstr "Määrä:"
+
#: editor/import/resource_importer_scene.cpp
#: editor/plugins/mesh_library_editor_plugin.cpp
msgid "Import Scene"
@@ -6779,12 +7133,149 @@ msgstr ""
msgid "Saving..."
msgstr "Tallennetaan..."
+#: editor/import/resource_importer_texture.cpp scene/resources/texture.cpp
+msgid "Lossy Quality"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "HDR Mode"
+msgstr "Valintatila"
+
+#: editor/import/resource_importer_texture.cpp
+msgid "BPTC LDR"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/mesh_instance_2d.cpp scene/2d/multimesh_instance_2d.cpp
+#: scene/2d/particles_2d.cpp scene/2d/sprite.cpp scene/resources/style_box.cpp
+msgid "Normal Map"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Process"
+msgstr "Jälkikäsittely"
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Fix Alpha Border"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Premult Alpha"
+msgstr "Muokkaa polygonia"
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Hdr As Srgb"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Invert Color"
+msgstr "Kärkipiste"
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Normal Map Invert Y"
+msgstr "Satunnainen skaalaus:"
+
+#: editor/import/resource_importer_texture.cpp
+#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
+#: scene/audio/audio_stream_player.cpp scene/gui/video_player.cpp
+msgid "Stream"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Size Limit"
+msgstr "Koko: "
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Detect 3D"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "SVG"
+msgstr "HSV"
+
#: editor/import/resource_importer_texture.cpp
msgid ""
"Warning, no suitable PC VRAM compression enabled in Project Settings. This "
"texture will not display correctly on PC."
msgstr ""
+#: editor/import/resource_importer_texture_atlas.cpp
+#, fuzzy
+msgid "Atlas File"
+msgstr "Ääriviivojen koko:"
+
+#: editor/import/resource_importer_texture_atlas.cpp
+#, fuzzy
+msgid "Import Mode"
+msgstr "Vientitila:"
+
+#: editor/import/resource_importer_texture_atlas.cpp
+#, fuzzy
+msgid "Crop To Region"
+msgstr "Aseta laatan alue"
+
+#: editor/import/resource_importer_texture_atlas.cpp
+msgid "Trim Alpha Border From Region"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp scene/2d/physics_body_2d.cpp
+#, fuzzy
+msgid "Force"
+msgstr "Työnnä väkisin"
+
+#: editor/import/resource_importer_wav.cpp
+msgid "8 Bit"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp main/main.cpp
+#: modules/mono/editor/csharp_project.cpp modules/mono/mono_gd/gd_mono.cpp
+msgid "Mono"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+#, fuzzy
+msgid "Max Rate"
+msgstr "Sekoitussolmu"
+
+#: editor/import/resource_importer_wav.cpp
+#, fuzzy
+msgid "Max Rate Hz"
+msgstr "Sekoitussolmu"
+
+#: editor/import/resource_importer_wav.cpp
+msgid "Trim"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+#, fuzzy
+msgid "Normalize"
+msgstr "Muoto"
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+#, fuzzy
+msgid "Loop Mode"
+msgstr "Siirtotila"
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+#, fuzzy
+msgid "Loop Begin"
+msgstr "Siirtotila"
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+#, fuzzy
+msgid "Loop End"
+msgstr "Siirtotila"
+
#: editor/import_defaults_editor.cpp
msgid "Select Importer"
msgstr "Valitse tuoja"
@@ -6864,6 +7355,29 @@ msgid "Failed to load resource."
msgstr "Resurssin lataaminen epäonnistui."
#: editor/inspector_dock.cpp
+#, fuzzy
+msgid "Property Name Style"
+msgstr "Projektin nimi:"
+
+#: editor/inspector_dock.cpp scene/gui/color_picker.cpp
+msgid "Raw"
+msgstr "Raaka"
+
+#: editor/inspector_dock.cpp
+#, fuzzy
+msgid "Capitalized"
+msgstr "Isot alkukirjaimet"
+
+#: editor/inspector_dock.cpp
+#, fuzzy
+msgid "Localized"
+msgstr "Kielialue"
+
+#: editor/inspector_dock.cpp
+msgid "Localization not available for current language."
+msgstr ""
+
+#: editor/inspector_dock.cpp
msgid "Copy Properties"
msgstr "Kopioi ominaisuudet"
@@ -7911,18 +8425,26 @@ msgid "License (Z-A)"
msgstr "Lisenssi (Z-A)"
#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgctxt "Pagination"
msgid "First"
msgstr "Ensimmäinen"
-#: editor/plugins/asset_library_editor_plugin.cpp scene/gui/control.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgctxt "Pagination"
msgid "Previous"
msgstr "Edellinen"
-#: editor/plugins/asset_library_editor_plugin.cpp scene/gui/control.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgctxt "Pagination"
msgid "Next"
msgstr "Seuraava"
#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgctxt "Pagination"
msgid "Last"
msgstr "Viimeinen"
@@ -8172,19 +8694,19 @@ msgstr ""
"Aktiivisena ollessaan, Control solmujen siirtäminen muuttaa niiden "
"ankkureita marginaalien sijaan."
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Top Left"
msgstr "Ylävasen"
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Top Right"
msgstr "Yläoikea"
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Bottom Right"
msgstr "Alaoikea"
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Bottom Left"
msgstr "Alavasen"
@@ -8898,6 +9420,19 @@ msgstr "Kehitä GI Probe"
msgid "Gradient Edited"
msgstr "Liukuväriä muokattu"
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+msgid "Swap GradientTexture2D Fill Points"
+msgstr ""
+
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+msgid "Swap Gradient Fill Points"
+msgstr ""
+
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+#, fuzzy
+msgid "Toggle Grid Snap"
+msgstr "Aseta tila"
+
#: editor/plugins/item_list_editor_plugin.cpp
msgid "Item %d"
msgstr "Kohde %d"
@@ -9131,8 +9666,9 @@ msgstr ""
"Päivitys olemassa olevasta kohtauksesta?:\n"
"%s"
-#: editor/plugins/mesh_library_editor_plugin.cpp modules/gridmap/grid_map.cpp
-msgid "Mesh Library"
+#: editor/plugins/mesh_library_editor_plugin.cpp
+#, fuzzy
+msgid "MeshLibrary"
msgstr "Mesh-kirjasto"
#: editor/plugins/mesh_library_editor_plugin.cpp
@@ -10127,8 +10663,8 @@ msgstr "Yhteydet metodiin:"
msgid "Source"
msgstr "Lähde"
-#: editor/plugins/script_text_editor.cpp scene/3d/interpolated_camera.cpp
-#: scene/animation/skeleton_ik.cpp
+#: editor/plugins/script_text_editor.cpp platform/uwp/export/export.cpp
+#: scene/3d/interpolated_camera.cpp scene/animation/skeleton_ik.cpp
msgid "Target"
msgstr "Kohde"
@@ -11103,7 +11639,9 @@ msgstr "Nopeus:"
#: editor/plugins/sprite_frames_editor_plugin.cpp
#: modules/gltf/gltf_animation.cpp modules/minimp3/audio_stream_mp3.cpp
-#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp scene/2d/path_2d.cpp
+#: modules/minimp3/resource_importer_mp3.cpp
+#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp
+#: modules/stb_vorbis/resource_importer_ogg_vorbis.cpp scene/2d/path_2d.cpp
#: scene/3d/path.cpp scene/resources/animation.cpp scene/resources/material.cpp
msgid "Loop"
msgstr "Toista"
@@ -11996,8 +12534,9 @@ msgstr "Bittimaski"
msgid "Priority"
msgstr "Prioriteetti"
-#: editor/plugins/tile_set_editor_plugin.cpp main/main.cpp scene/gui/button.cpp
-#: scene/gui/item_list.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp main/main.cpp
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#: scene/gui/button.cpp scene/gui/item_list.cpp
msgid "Icon"
msgstr "Kuvake"
@@ -13368,10 +13907,6 @@ msgstr ""
"asetuksissa."
#: editor/project_export.cpp
-msgid "Release"
-msgstr "Julkaisuversio"
-
-#: editor/project_export.cpp
msgid "Exporting All"
msgstr "Viedään kaikki"
@@ -15255,6 +15790,7 @@ msgid "Change AudioStreamPlayer3D Emission Angle"
msgstr "Muuta AudioStreamPlayer3D solmun suuntausta"
#: editor/spatial_editor_gizmos.cpp modules/gltf/gltf_node.cpp
+#: platform/osx/export/export.cpp
msgid "Camera"
msgstr ""
@@ -15536,7 +16072,8 @@ msgstr ""
msgid "Use Nvidia Rect Flicker Workaround"
msgstr ""
-#: main/main.cpp platform/uwp/os_uwp.cpp
+#: main/main.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp platform/uwp/os_uwp.cpp
#, fuzzy
msgid "Display"
msgstr "Näytä kaikki"
@@ -15597,19 +16134,6 @@ msgstr ""
msgid "Allowed"
msgstr ""
-#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp scene/2d/camera_2d.cpp
-#: scene/2d/light_2d.cpp scene/2d/navigation_polygon.cpp
-#: scene/2d/ray_cast_2d.cpp scene/2d/sprite.cpp scene/2d/y_sort.cpp
-#: scene/3d/audio_stream_player_3d.cpp scene/3d/baked_lightmap.cpp
-#: scene/3d/interpolated_camera.cpp scene/3d/light.cpp
-#: scene/3d/navigation_mesh_instance.cpp scene/3d/ray_cast.cpp
-#: scene/3d/sprite_3d.cpp scene/gui/graph_edit.cpp
-#: scene/gui/rich_text_label.cpp scene/resources/curve.cpp
-#: scene/resources/environment.cpp
-#, fuzzy
-msgid "Enabled"
-msgstr "Ota käyttöön"
-
#: main/main.cpp
msgid "Intended Usage"
msgstr ""
@@ -15641,13 +16165,14 @@ msgstr ""
msgid "Handheld"
msgstr ""
-#: main/main.cpp
+#: main/main.cpp platform/javascript/export/export.cpp
+#: platform/uwp/export/export.cpp
#, fuzzy
msgid "Orientation"
msgstr "Online-dokumentaatio"
#: main/main.cpp scene/gui/scroll_container.cpp scene/gui/text_edit.cpp
-#: scene/main/scene_tree.cpp
+#: scene/main/scene_tree.cpp scene/register_scene_types.cpp
#, fuzzy
msgid "Common"
msgstr "Yhteisö"
@@ -15690,7 +16215,7 @@ msgstr ""
#: main/main.cpp
#, fuzzy
-msgid "Frame Delay (msec)"
+msgid "Frame Delay Msec"
msgstr "Rajaa valintaan"
#: main/main.cpp
@@ -15819,11 +16344,6 @@ msgstr ""
msgid "Tooltip Position Offset"
msgstr "Kierron siirtymä:"
-#: main/main.cpp modules/mono/editor/csharp_project.cpp
-#: modules/mono/mono_gd/gd_mono.cpp
-msgid "Mono"
-msgstr ""
-
#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp
#, fuzzy
msgid "Debugger Agent"
@@ -16406,7 +16926,7 @@ msgstr "Värit"
msgid "Intensity"
msgstr ""
-#: modules/gltf/gltf_light.cpp scene/2d/light_2d.cpp
+#: modules/gltf/gltf_light.cpp scene/2d/light_2d.cpp scene/3d/light.cpp
#, fuzzy
msgid "Range"
msgstr "Muuta"
@@ -16553,11 +17073,6 @@ msgstr "Datan kanssa"
msgid "Use Named Skin Binds"
msgstr ""
-#: modules/gltf/gltf_state.cpp scene/3d/physics_joint.cpp
-#, fuzzy
-msgid "Nodes"
-msgstr "Solmu"
-
#: modules/gltf/gltf_state.cpp
#, fuzzy
msgid "Buffer Views"
@@ -16569,16 +17084,6 @@ msgstr ""
#: modules/gltf/gltf_state.cpp
#, fuzzy
-msgid "Meshes"
-msgstr "Mesh"
-
-#: modules/gltf/gltf_state.cpp
-#, fuzzy
-msgid "Materials"
-msgstr "Materiaalimuutokset:"
-
-#: modules/gltf/gltf_state.cpp
-#, fuzzy
msgid "Scene Name"
msgstr "Kohtauspolku:"
@@ -16594,15 +17099,11 @@ msgstr "Juurisolmun nimi"
msgid "Textures"
msgstr "Ominaisuudet"
-#: modules/gltf/gltf_state.cpp
+#: modules/gltf/gltf_state.cpp platform/uwp/export/export.cpp
msgid "Images"
msgstr ""
#: modules/gltf/gltf_state.cpp
-msgid "Skins"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp
msgid "Cameras"
msgstr ""
@@ -16637,11 +17138,15 @@ msgid "Src Image"
msgstr "Näytä luut"
#: modules/gridmap/grid_map.cpp
+msgid "Mesh Library"
+msgstr "Mesh-kirjasto"
+
+#: modules/gridmap/grid_map.cpp
#, fuzzy
msgid "Physics Material"
msgstr "Fysiikkaruutujen %"
-#: modules/gridmap/grid_map.cpp
+#: modules/gridmap/grid_map.cpp scene/3d/visual_instance.cpp
#, fuzzy
msgid "Use In Baked Light"
msgstr "Kehitä Lightmapit"
@@ -16673,6 +17178,7 @@ msgstr "Keskitä"
#: modules/gridmap/grid_map.cpp scene/2d/collision_object_2d.cpp
#: scene/2d/tile_map.cpp scene/3d/collision_object.cpp scene/3d/soft_body.cpp
+#: scene/resources/material.cpp
msgid "Mask"
msgstr ""
@@ -16855,7 +17361,9 @@ msgid "Ultra Quality Ray Count"
msgstr ""
#: modules/minimp3/audio_stream_mp3.cpp
+#: modules/minimp3/resource_importer_mp3.cpp
#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp
+#: modules/stb_vorbis/resource_importer_ogg_vorbis.cpp
#, fuzzy
msgid "Loop Offset"
msgstr "Siirtymä:"
@@ -17939,6 +18447,193 @@ msgid "The package must have at least one '.' separator."
msgstr "Paketilla on oltava ainakin yksi '.' erotinmerkki."
#: platform/android/export/export_plugin.cpp
+msgid "Use Custom Build"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Export Format"
+msgstr "Vientipolku"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Keystore"
+msgstr "Debuggeri"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Debug User"
+msgstr "Debuggeri"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Debug Password"
+msgstr "Salasana"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Release User"
+msgstr "Julkaisuversio"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Release Password"
+msgstr "Salasana"
+
+#: platform/android/export/export_plugin.cpp
+msgid "One Click Deploy"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Clear Previous Install"
+msgstr "Tarkastele edellistä ilmentymää"
+
+#: platform/android/export/export_plugin.cpp scene/resources/shader.cpp
+msgid "Code"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Min SDK"
+msgstr "Ääriviivojen koko:"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Target SDK"
+msgstr "Kohde"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Package"
+msgstr "Pakataan"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Unique Name"
+msgstr "Solmun nimi:"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Signed"
+msgstr "Signaali"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Classify As Game"
+msgstr "Luokan nimi:"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Retain Data On Uninstall"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Exclude From Recents"
+msgstr "Poista solmut"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Graphics"
+msgstr "Ruudukon siirtymä:"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "OpenGL Debug"
+msgstr "Avaa"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "XR Features"
+msgstr "Ominaisuudet"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "XR Mode"
+msgstr "Panorointitila"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Hand Tracking"
+msgstr "Pakataan"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Hand Tracking Frequency"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Passthrough"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Immersive Mode"
+msgstr "Prioriteettitila"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Support Small"
+msgstr "Tuki"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Support Normal"
+msgstr "Tuki"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Support Large"
+msgstr "Tuki"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Support Xlarge"
+msgstr "Tuki"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "User Data Backup"
+msgstr "Käyttöliittymä"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Allow"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Command Line"
+msgstr "Yhteisö"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Extra Args"
+msgstr "Ylimääräiset argumentit:"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "APK Expansion"
+msgstr "Lauseke"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Salt"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Public Key"
+msgstr "Julkisen SSH-avaimen polku"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Permissions"
+msgstr "Emissiomaski"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Custom Permissions"
+msgstr "Toista mukautettu kohtaus"
+
+#: platform/android/export/export_plugin.cpp
msgid "Select device from the list"
msgstr "Valitse laite listasta"
@@ -18276,6 +18971,178 @@ msgid "The character '%s' is not allowed in Identifier."
msgstr "Merkki '%s' ei ole sallittu Identifier osiossa."
#: platform/iphone/export/export.cpp
+msgid "App Store Team ID"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Provisioning Profile UUID Debug"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Code Sign Identity Debug"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Export Method Debug"
+msgstr "Vie debugaten"
+
+#: platform/iphone/export/export.cpp
+msgid "Provisioning Profile UUID Release"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Code Sign Identity Release"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Export Method Release"
+msgstr "Vientitila:"
+
+#: platform/iphone/export/export.cpp
+msgid "Targeted Device Family"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Info"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Identifier"
+msgstr "Virheellinen Identifier osio:"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Signature"
+msgstr "Signaali"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Short Version"
+msgstr "Versio"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Copyright"
+msgstr "Yläoikea"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Capabilities"
+msgstr "Liitä ominaisuudet"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Access Wi-Fi"
+msgstr "Onnistui!"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Push Notifications"
+msgstr "Satunnainen kierto:"
+
+#: platform/iphone/export/export.cpp scene/3d/baked_lightmap.cpp
+#, fuzzy
+msgid "User Data"
+msgstr "Käyttöliittymä"
+
+#: platform/iphone/export/export.cpp
+msgid "Accessible From Files App"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Accessible From Itunes Sharing"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Privacy"
+msgstr "Yksityisen SSH-avaimen polku"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Camera Usage Description"
+msgstr "Kuvaus"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Microphone Usage Description"
+msgstr "Ominaisuuksien kuvaukset"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Photolibrary Usage Description"
+msgstr "Ominaisuuksien kuvaukset"
+
+#: platform/iphone/export/export.cpp
+msgid "iPhone 120 X 120"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPhone 180 X 180"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 76 X 76"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 152 X 152"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 167 X 167"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "App Store 1024 X 1024"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Spotlight 40 X 40"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Spotlight 80 X 80"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Storyboard"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Use Launch Screen Storyboard"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Image Scale Mode"
+msgstr "Skaalaustila"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Custom Image @2x"
+msgstr "Mukautettu solmu"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Custom Image @3x"
+msgstr "Mukautettu solmu"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Use Custom BG Color"
+msgstr "Mukautettu solmu"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Custom BG Color"
+msgstr "Mukautettu solmu"
+
+#: platform/iphone/export/export.cpp
msgid "App Store Team ID not specified - cannot configure the project."
msgstr "App Store Team ID ei ole määritetty - ei voida konfiguroida projektia."
@@ -18312,6 +19179,80 @@ msgid "Could not read file:"
msgstr "Ei voitu lukea tiedostoa:"
#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Variant"
+msgstr "Erotus:"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Export Type"
+msgstr "Vie"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "VRAM Texture Compression"
+msgstr "Lauseke"
+
+#: platform/javascript/export/export.cpp
+msgid "For Desktop"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "For Mobile"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Html"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Export Icon"
+msgstr "Laajenna kaikki"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Custom Html Shell"
+msgstr "Mukautettu solmu"
+
+#: platform/javascript/export/export.cpp
+msgid "Head Include"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Canvas Resize Policy"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Focus Canvas On Start"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Experimental Virtual Keyboard"
+msgstr "Suodata signaaleja"
+
+#: platform/javascript/export/export.cpp
+msgid "Progressive Web App"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Offline Page"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 144 X 144"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 180 X 180"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 512 X 512"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
msgid "Could not read HTML shell:"
msgstr "Ei voitu lukea HTML tulkkia:"
@@ -18417,6 +19358,202 @@ msgid "Unknown object type."
msgstr "Tuntematon objektityyppi."
#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "App Category"
+msgstr "Kategoria:"
+
+#: platform/osx/export/export.cpp
+msgid "High Res"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Location Usage Description"
+msgstr "Kuvaus"
+
+#: platform/osx/export/export.cpp
+msgid "Address Book Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Calendar Usage Description"
+msgstr "Kuvaus"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Photos Library Usage Description"
+msgstr "Ominaisuuksien kuvaukset"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Desktop Folder Usage Description"
+msgstr "Metodien kuvaukset"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Documents Folder Usage Description"
+msgstr "Metodien kuvaukset"
+
+#: platform/osx/export/export.cpp
+msgid "Downloads Folder Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Network Volumes Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Removable Volumes Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#, fuzzy
+msgid "Codesign"
+msgstr "Allekirjoitetaan DMG-koodi"
+
+#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Identity"
+msgstr "Sisennä vasemmalle"
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#, fuzzy
+msgid "Timestamp"
+msgstr "Aika"
+
+#: platform/osx/export/export.cpp
+msgid "Hardened Runtime"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Replace Existing Signature"
+msgstr "Korvaa tiedostoissa"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Entitlements"
+msgstr "Vempaimet"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Custom File"
+msgstr "Mukautettu solmu"
+
+#: platform/osx/export/export.cpp
+msgid "Allow JIT Code Execution"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Allow Unsigned Executable Memory"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Allow Dyld Environment Variables"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Disable Library Validation"
+msgstr "Toimintakyvytön painike"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Audio Input"
+msgstr "Lisää syöte"
+
+#: platform/osx/export/export.cpp
+msgid "Address Book"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Calendars"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Photos Library"
+msgstr "Vie kirjasto"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Apple Events"
+msgstr "Lisää tapahtuma"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Debugging"
+msgstr "Virheenkorjaus"
+
+#: platform/osx/export/export.cpp
+msgid "App Sandbox"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Network Server"
+msgstr "Verkkoprofiloija"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Network Client"
+msgstr "Verkkoprofiloija"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Device Usb"
+msgstr "Laite"
+
+#: platform/osx/export/export.cpp
+msgid "Device Bluetooth"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Files Downloads"
+msgstr "Lataa"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Files Pictures"
+msgstr "Ominaisuudet"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Files Music"
+msgstr "Tiedosto"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Files Movies"
+msgstr "Suodata laattoja"
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#, fuzzy
+msgid "Custom Options"
+msgstr "Väylän asetukset"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Notarization"
+msgstr "Kääntäminen"
+
+#: platform/osx/export/export.cpp
+msgid "Apple ID Name"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Apple ID Password"
+msgstr "Salasana"
+
+#: platform/osx/export/export.cpp
+msgid "Apple Team ID"
+msgstr ""
+
+#: platform/osx/export/export.cpp
msgid ""
"Note: The notarization process generally takes less than an hour. When the "
"process is completed, you'll receive an email."
@@ -18648,6 +19785,136 @@ msgid "Force Builtin Codesign"
msgstr ""
#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Architecture"
+msgstr "Lisää arkkitehtuurikohde"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Display Name"
+msgstr "Näytä kaikki"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Short Name"
+msgstr "Skriptin nimi:"
+
+#: platform/uwp/export/export.cpp
+msgid "Publisher"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Publisher Display Name"
+msgstr "Paketin julkaisijan näyttönimi on virheellinen."
+
+#: platform/uwp/export/export.cpp
+msgid "Product Guid"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Publisher Guid"
+msgstr "Poista apuviivat"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Signing"
+msgstr "Signaali"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Certificate"
+msgstr "Kärkipisteitä:"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Algorithm"
+msgstr "Debuggeri"
+
+#: platform/uwp/export/export.cpp
+msgid "Major"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Minor"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Build"
+msgstr "Viivaintila"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Revision"
+msgstr "Lauseke"
+
+#: platform/uwp/export/export.cpp
+msgid "Landscape"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Portrait"
+msgstr "Käännä portaalit"
+
+#: platform/uwp/export/export.cpp
+msgid "Landscape Flipped"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Portrait Flipped"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Store Logo"
+msgstr "Skaalaustila"
+
+#: platform/uwp/export/export.cpp
+msgid "Square 44 X 44 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 71 X 71 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 150 X 150 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 310 X 310 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Wide 310 X 150 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Splash Screen"
+msgstr "Piirtokutsuja:"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Tiles"
+msgstr "Tiedosto"
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Square 150 X 150"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Wide 310 X 150"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Square 310 X 310"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
msgid "Invalid package short name."
msgstr "Paketin lyhyt nimi on virheellinen."
@@ -18716,15 +19983,52 @@ msgstr ""
#: platform/uwp/export/export.cpp
#, fuzzy
-msgid "Debug Password"
-msgstr "Salasana"
+msgid "Debug Algorithm"
+msgstr "Debuggeri"
-#: platform/uwp/export/export.cpp
+#: platform/windows/export/export.cpp
+msgid "Identity Type"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Timestamp Server URL"
+msgstr ""
+
+#: platform/windows/export/export.cpp
#, fuzzy
-msgid "Debug Algorithm"
+msgid "Digest Algorithm"
msgstr "Debuggeri"
#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "File Version"
+msgstr "Versio"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Product Version"
+msgstr "Virheellinen tuotteen versio:"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Company Name"
+msgstr "Solmun nimi:"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Product Name"
+msgstr "Projektin nimi:"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "File Description"
+msgstr "Kuvaus"
+
+#: platform/windows/export/export.cpp
+msgid "Trademarks"
+msgstr ""
+
+#: platform/windows/export/export.cpp
msgid ""
"The rcedit tool must be configured in the Editor Settings (Export > Windows "
"> Rcedit) to change the icon or app information data."
@@ -18798,12 +20102,14 @@ msgstr "Pelaa"
msgid "Centered"
msgstr "Keskitä"
-#: scene/2d/animated_sprite.cpp scene/2d/camera_2d.cpp scene/2d/light_2d.cpp
+#: scene/2d/animated_sprite.cpp scene/2d/camera_2d.cpp
+#: scene/2d/cpu_particles_2d.cpp scene/2d/light_2d.cpp
#: scene/2d/parallax_background.cpp scene/2d/parallax_layer.cpp
#: scene/2d/path_2d.cpp scene/2d/polygon_2d.cpp scene/2d/sprite.cpp
-#: scene/3d/path.cpp scene/3d/physics_body.cpp scene/3d/sprite_3d.cpp
-#: scene/gui/graph_node.cpp scene/gui/rich_text_effect.cpp
-#: scene/main/canvas_layer.cpp scene/resources/material.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/path.cpp scene/3d/physics_body.cpp
+#: scene/3d/sprite_3d.cpp scene/gui/graph_node.cpp
+#: scene/gui/rich_text_effect.cpp scene/main/canvas_layer.cpp
+#: scene/resources/material.cpp scene/resources/particles_material.cpp
#: scene/resources/style_box.cpp
#, fuzzy
msgid "Offset"
@@ -18878,11 +20184,6 @@ msgstr "Lisää ääniväylä"
msgid "Override"
msgstr "Ylikirjoittaa"
-#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
-#: scene/audio/audio_stream_player.cpp scene/gui/video_player.cpp
-msgid "Stream"
-msgstr ""
-
#: scene/2d/audio_stream_player_2d.cpp scene/audio/audio_stream_player.cpp
#: scene/gui/video_player.cpp servers/audio/effects/audio_effect_amplify.cpp
#, fuzzy
@@ -18909,13 +20210,13 @@ msgid "Stream Paused"
msgstr ""
#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
-#: scene/3d/reflection_probe.cpp scene/3d/visual_instance.cpp
-#: scene/resources/material.cpp
+#: scene/3d/light.cpp scene/3d/reflection_probe.cpp
+#: scene/3d/visual_instance.cpp scene/resources/material.cpp
#, fuzzy
msgid "Max Distance"
msgstr "Poimintaetäisyys:"
-#: scene/2d/audio_stream_player_2d.cpp
+#: scene/2d/audio_stream_player_2d.cpp scene/3d/light.cpp
#, fuzzy
msgid "Attenuation"
msgstr "Animaatio"
@@ -18971,6 +20272,24 @@ msgstr "Siirtotila"
msgid "Limit"
msgstr ""
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/style_box.cpp
+#, fuzzy
+msgid "Left"
+msgstr "Ylävasen"
+
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/style_box.cpp
+#, fuzzy
+msgid "Right"
+msgstr "Valo"
+
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/dynamic_font.cpp scene/resources/style_box.cpp
+#, fuzzy
+msgid "Bottom"
+msgstr "Alavasen"
+
#: scene/2d/camera_2d.cpp
#, fuzzy
msgid "Smoothed"
@@ -19214,13 +20533,6 @@ msgstr ""
msgid "Emitting"
msgstr "Asetukset:"
-#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp scene/3d/area.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
-#: scene/resources/environment.cpp
-#, fuzzy
-msgid "Amount"
-msgstr "Määrä:"
-
#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp
#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
msgid "Lifetime"
@@ -19285,18 +20597,13 @@ msgstr ""
#: scene/2d/mesh_instance_2d.cpp scene/2d/multimesh_instance_2d.cpp
#: scene/2d/particles_2d.cpp scene/2d/polygon_2d.cpp scene/2d/sprite.cpp
#: scene/3d/sprite_3d.cpp scene/gui/nine_patch_rect.cpp
-#: scene/gui/texture_rect.cpp scene/resources/sky.cpp
-#: scene/resources/style_box.cpp scene/resources/visual_shader_nodes.cpp
+#: scene/gui/texture_rect.cpp scene/resources/material.cpp
+#: scene/resources/sky.cpp scene/resources/style_box.cpp
+#: scene/resources/visual_shader_nodes.cpp
#, fuzzy
msgid "Texture"
msgstr "Teksti"
-#: scene/2d/cpu_particles_2d.cpp scene/2d/mesh_instance_2d.cpp
-#: scene/2d/multimesh_instance_2d.cpp scene/2d/particles_2d.cpp
-#: scene/2d/sprite.cpp scene/resources/style_box.cpp
-msgid "Normal Map"
-msgstr ""
-
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
#, fuzzy
@@ -19320,10 +20627,10 @@ msgid "Normals"
msgstr "Muoto"
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/3d/sprite_3d.cpp scene/resources/material.cpp
-#: scene/resources/particles_material.cpp scene/resources/texture.cpp
-msgid "Flags"
-msgstr ""
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Align Y"
+msgstr "Aseta"
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
@@ -19344,6 +20651,12 @@ msgid "Initial Velocity"
msgstr "Alusta"
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Velocity Random"
+msgstr "Kiertoratanäkymä oikealle"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp servers/physics_2d_server.cpp
#: servers/physics_server.cpp
msgid "Angular Velocity"
@@ -19352,6 +20665,12 @@ msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
#, fuzzy
+msgid "Velocity Curve"
+msgstr "Kiertoratanäkymä oikealle"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
msgid "Orbit Velocity"
msgstr "Kiertoratanäkymä oikealle"
@@ -19363,6 +20682,23 @@ msgstr "Lineaarinen"
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Accel"
+msgstr "Onnistui!"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Accel Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Accel Curve"
+msgstr "Puolita käyrä"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
msgid "Radial Accel"
msgstr ""
@@ -19372,19 +20708,55 @@ msgid "Tangential Accel"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/2d/joints_2d.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/vehicle_body.cpp
-#: scene/resources/particles_material.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/physics_joint.cpp
+#: scene/3d/vehicle_body.cpp scene/resources/particles_material.cpp
#: servers/audio/effects/audio_effect_reverb.cpp
msgid "Damping"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+msgid "Damping Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Damping Curve"
+msgstr "Puolita käyrä"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp scene/3d/light.cpp
+#: scene/resources/particles_material.cpp
msgid "Angle"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+msgid "Angle Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Angle Curve"
+msgstr "Sulje käyrä"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#, fuzzy
+msgid "Scale Amount"
+msgstr "Määrä:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+msgid "Scale Amount Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#, fuzzy
+msgid "Scale Amount Curve"
+msgstr "Skaalaa kursorista"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
#, fuzzy
msgid "Color Ramp"
msgstr "Värit"
@@ -19400,6 +20772,48 @@ msgstr ""
msgid "Hue Variation"
msgstr "Erotus:"
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Variation"
+msgstr "Erotus:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Variation Random"
+msgstr "Erotus:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Variation Curve"
+msgstr "Erotus:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Speed Random"
+msgstr "Skaalaa"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Speed Curve"
+msgstr "Puolita käyrä"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Offset Random"
+msgstr "Siirtymä:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Offset Curve"
+msgstr "Sulje käyrä"
+
#: scene/2d/joints_2d.cpp
msgid "Node A and Node B must be PhysicsBody2Ds"
msgstr "Solmujen A ja B tulee olla PhysicsBody2D tyyppisiä"
@@ -19431,6 +20845,7 @@ msgid "Node B"
msgstr "Solmu"
#: scene/2d/joints_2d.cpp scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp
+#: scene/3d/light.cpp scene/3d/physics_joint.cpp
#: scene/resources/environment.cpp
msgid "Bias"
msgstr ""
@@ -19440,7 +20855,7 @@ msgstr ""
msgid "Disable Collision"
msgstr "Toimintakyvytön painike"
-#: scene/2d/joints_2d.cpp
+#: scene/2d/joints_2d.cpp scene/3d/physics_joint.cpp
msgid "Softness"
msgstr ""
@@ -19458,7 +20873,7 @@ msgstr "Alusta"
msgid "Rest Length"
msgstr ""
-#: scene/2d/joints_2d.cpp scene/3d/vehicle_body.cpp
+#: scene/2d/joints_2d.cpp scene/3d/physics_joint.cpp scene/3d/vehicle_body.cpp
msgid "Stiffness"
msgstr ""
@@ -19480,7 +20895,7 @@ msgid "Texture Scale"
msgstr "Tekstuurialue"
#: scene/2d/light_2d.cpp scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp
-#: scene/resources/environment.cpp scene/resources/sky.cpp
+#: scene/3d/light.cpp scene/resources/environment.cpp scene/resources/sky.cpp
msgid "Energy"
msgstr ""
@@ -19521,12 +20936,6 @@ msgstr "Takanäkymä"
msgid "Gradient Length"
msgstr "Liukuväriä muokattu"
-#: scene/2d/light_2d.cpp scene/gui/control.cpp
-#: scene/resources/navigation_mesh.cpp
-#, fuzzy
-msgid "Filter"
-msgstr "Suodattimet:"
-
#: scene/2d/light_2d.cpp
#, fuzzy
msgid "Filter Smooth"
@@ -19973,11 +21382,6 @@ msgid "Applied Forces"
msgstr ""
#: scene/2d/physics_body_2d.cpp
-#, fuzzy
-msgid "Force"
-msgstr "Työnnä väkisin"
-
-#: scene/2d/physics_body_2d.cpp
msgid "Torque"
msgstr ""
@@ -19993,7 +21397,7 @@ msgstr " (fyysinen)"
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
#, fuzzy
-msgid "Moving platform"
+msgid "Moving Platform"
msgstr "Siirretään tulostetta"
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
@@ -20002,7 +21406,7 @@ msgstr ""
#: scene/2d/physics_body_2d.cpp scene/2d/touch_screen_button.cpp
#: scene/3d/physics_body.cpp scene/gui/texture_button.cpp
-#: scene/resources/line_shape_2d.cpp
+#: scene/resources/line_shape_2d.cpp scene/resources/material.cpp
#, fuzzy
msgid "Normal"
msgstr "Muoto"
@@ -20250,6 +21654,34 @@ msgstr ""
"VisibilityEnabler2D toimii parhaiten, kun sitä käytetään muokattua "
"kohtauksen juurta suoraan vanhempana."
+#: scene/2d/visibility_notifier_2d.cpp scene/3d/visibility_notifier.cpp
+#, fuzzy
+msgid "Pause Animations"
+msgstr "Liitä animaatio"
+
+#: scene/2d/visibility_notifier_2d.cpp scene/3d/visibility_notifier.cpp
+msgid "Freeze Bodies"
+msgstr ""
+
+#: scene/2d/visibility_notifier_2d.cpp
+#, fuzzy
+msgid "Pause Particles"
+msgstr "Partikkelit"
+
+#: scene/2d/visibility_notifier_2d.cpp
+#, fuzzy
+msgid "Pause Animated Sprites"
+msgstr "Liitä animaatio"
+
+#: scene/2d/visibility_notifier_2d.cpp
+#, fuzzy
+msgid "Process Parent"
+msgstr "Ota prioriteetti käyttöön"
+
+#: scene/2d/visibility_notifier_2d.cpp
+msgid "Physics Process Parent"
+msgstr ""
+
#: scene/3d/area.cpp
msgid "Reverb Bus"
msgstr ""
@@ -20350,6 +21782,7 @@ msgid "Attenuation Filter"
msgstr ""
#: scene/3d/audio_stream_player_3d.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
#: servers/audio/effects/audio_effect_filter.cpp
msgid "Cutoff Hz"
msgstr ""
@@ -20394,11 +21827,6 @@ msgid "Octree"
msgstr "Alipuu"
#: scene/3d/baked_lightmap.cpp
-#, fuzzy
-msgid "User Data"
-msgstr "Käyttöliittymä"
-
-#: scene/3d/baked_lightmap.cpp
msgid "Finding meshes and lights"
msgstr "Etsitään meshejä ja valoja"
@@ -20672,6 +22100,16 @@ msgid "Ring Axis"
msgstr "Varoitukset"
#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Rotate Y"
+msgstr "Kierrä"
+
+#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Disable Z"
+msgstr "Toimintakyvytön osanen"
+
+#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
msgid "Flatness"
msgstr ""
@@ -20712,16 +22150,11 @@ msgstr "Dynaaminen kirjasto"
msgid "Dynamic Range"
msgstr "Dynaaminen kirjasto"
-#: scene/3d/gi_probe.cpp
+#: scene/3d/gi_probe.cpp scene/3d/light.cpp
msgid "Normal Bias"
msgstr ""
#: scene/3d/gi_probe.cpp
-#, fuzzy
-msgid "Compress"
-msgstr "Komponentit"
-
-#: scene/3d/gi_probe.cpp
msgid "Plotting Meshes"
msgstr "Piirretään meshejä"
@@ -20753,16 +22186,31 @@ msgstr ""
#: scene/3d/light.cpp
#, fuzzy
+msgid "Indirect Energy"
+msgstr "Emissiovärit"
+
+#: scene/3d/light.cpp
+#, fuzzy
msgid "Negative"
msgstr "GDNative"
#: scene/3d/light.cpp
#, fuzzy
+msgid "Specular"
+msgstr "Viivaintila"
+
+#: scene/3d/light.cpp
+#, fuzzy
msgid "Bake Mode"
msgstr "Bittimaskitila"
#: scene/3d/light.cpp
#, fuzzy
+msgid "Contact"
+msgstr "Poimi väri"
+
+#: scene/3d/light.cpp
+#, fuzzy
msgid "Reverse Cull Face"
msgstr "Palauta väylän äänenvoimakkuus"
@@ -20773,11 +22221,31 @@ msgstr "Suunnat"
#: scene/3d/light.cpp
#, fuzzy
+msgid "Split 1"
+msgstr "Osita"
+
+#: scene/3d/light.cpp
+#, fuzzy
+msgid "Split 2"
+msgstr "Osita"
+
+#: scene/3d/light.cpp
+#, fuzzy
+msgid "Split 3"
+msgstr "Osita"
+
+#: scene/3d/light.cpp
+#, fuzzy
msgid "Blend Splits"
msgstr "Sulautusajat:"
#: scene/3d/light.cpp
#, fuzzy
+msgid "Bias Split Scale"
+msgstr "Käytä skaalauksen tarttumista"
+
+#: scene/3d/light.cpp
+#, fuzzy
msgid "Depth Range"
msgstr "Syvyys"
@@ -20804,6 +22272,11 @@ msgstr ""
msgid "Spot"
msgstr ""
+#: scene/3d/light.cpp
+#, fuzzy
+msgid "Angle Attenuation"
+msgstr "Animaatio"
+
#: scene/3d/mesh_instance.cpp
msgid "Software Skinning"
msgstr ""
@@ -20951,6 +22424,63 @@ msgstr "Akseli"
#: scene/3d/physics_body.cpp
#, fuzzy
+msgid "Linear X"
+msgstr "Lineaarinen"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Linear Y"
+msgstr "Lineaarinen"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Linear Z"
+msgstr "Lineaarinen"
+
+#: scene/3d/physics_body.cpp
+msgid "Angular X"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Angular Y"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Angular Z"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Motion X"
+msgstr "Toiminto"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Motion Y"
+msgstr "Toiminto"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Motion Z"
+msgstr "Toiminto"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Move Lock X"
+msgstr "Siirrä solmua"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Move Lock Y"
+msgstr "Siirrä solmua"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Move Lock Z"
+msgstr "Siirrä solmua"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
msgid "Body Offset"
msgstr "Siirtymä:"
@@ -20984,6 +22514,15 @@ msgid "Exclude Nodes"
msgstr "Poista solmut"
#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Params"
+msgstr "Parametri muutettu:"
+
+#: scene/3d/physics_joint.cpp
+msgid "Impulse Clamp"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit"
msgstr ""
@@ -20997,6 +22536,55 @@ msgstr "Isot kirjaimet"
msgid "Lower"
msgstr "Pienet kirjaimet"
+#: scene/3d/physics_joint.cpp scene/3d/vehicle_body.cpp
+#, fuzzy
+msgid "Relaxation"
+msgstr "Erotus:"
+
+#: scene/3d/physics_joint.cpp
+msgid "Motor"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Target Velocity"
+msgstr "Kiertoratanäkymä oikealle"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Max Impulse"
+msgstr "Nopeus:"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit"
+msgstr "Lineaarinen"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Upper Distance"
+msgstr "Poimintaetäisyys:"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Lower Distance"
+msgstr "Poimintaetäisyys:"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Restitution"
+msgstr "Kuvaus"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motion"
+msgstr "Alusta"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Ortho"
+msgstr "Takaortogonaalinen"
+
#: scene/3d/physics_joint.cpp
#, fuzzy
msgid "Upper Angle"
@@ -21009,6 +22597,16 @@ msgstr "Pienet kirjaimet"
#: scene/3d/physics_joint.cpp
#, fuzzy
+msgid "Angular Motion"
+msgstr "Animaatio"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Angular Ortho"
+msgstr "Max. kulmavirhe:"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
msgid "Swing Span"
msgstr "Tallennetaan kohtaus"
@@ -21017,17 +22615,99 @@ msgid "Twist Span"
msgstr ""
#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit X"
+msgstr "Lineaarinen"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motor X"
+msgstr "Alusta"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Force Limit"
+msgstr "Piirtokutsuja:"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Spring X"
+msgstr "Lineaarinen"
+
+#: scene/3d/physics_joint.cpp
+msgid "Equilibrium Point"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit X"
msgstr ""
#: scene/3d/physics_joint.cpp
+msgid "Erp"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Motor X"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Spring X"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit Y"
+msgstr "Lineaarinen"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motor Y"
+msgstr "Alusta"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Spring Y"
+msgstr "Lineaarinen"
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit Y"
msgstr ""
#: scene/3d/physics_joint.cpp
+msgid "Angular Motor Y"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Spring Y"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit Z"
+msgstr "Lineaarinen"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motor Z"
+msgstr "Alusta"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Spring Z"
+msgstr "Lineaarinen"
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit Z"
msgstr ""
+#: scene/3d/physics_joint.cpp
+msgid "Angular Motor Z"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Spring Z"
+msgstr ""
+
#: scene/3d/portal.cpp
msgid "The RoomManager should not be a child or grandchild of a Portal."
msgstr "RoomManager solmun ei pitäisi sijaita Portal solmun alla."
@@ -21149,7 +22829,7 @@ msgstr ""
msgid "Use Default Simplify"
msgstr ""
-#: scene/3d/room.cpp
+#: scene/3d/room.cpp scene/3d/room_manager.cpp
msgid "Room Simplify"
msgstr ""
@@ -21190,6 +22870,13 @@ msgstr "Kohtauspuussa pitäisi olla vain yksi huonemanageri."
msgid "Main"
msgstr ""
+#: scene/3d/room_manager.cpp scene/animation/animation_player.cpp
+#: scene/animation/animation_tree.cpp scene/animation/animation_tree_player.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+#, fuzzy
+msgid "Active"
+msgstr "Toiminto"
+
#: scene/3d/room_manager.cpp
msgid "Roomlist"
msgstr ""
@@ -21214,6 +22901,54 @@ msgid "Gameplay"
msgstr ""
#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Gameplay Monitor"
+msgstr "Monitoroija"
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Use Secondary PVS"
+msgstr "Käytä skaalauksen tarttumista"
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Merge Meshes"
+msgstr "Mesh"
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Show Margins"
+msgstr "Näytä origo"
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Debug Sprawl"
+msgstr "Virheenkorjaus"
+
+#: scene/3d/room_manager.cpp
+msgid "Overlap Warning Threshold"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Preview Camera"
+msgstr "Esikatselu"
+
+#: scene/3d/room_manager.cpp
+msgid "Portal Depth Limit"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Default Portal Margin"
+msgstr "Aseta marginaali"
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Roaming Expansion Margin"
+msgstr "Laajenna kaikki"
+
+#: scene/3d/room_manager.cpp
msgid ""
"RoomList path is invalid.\n"
"Please check the RoomList branch has been assigned in the RoomManager."
@@ -21354,6 +23089,20 @@ msgstr "Tartu pikseleihin"
msgid "Billboard"
msgstr ""
+#: scene/3d/sprite_3d.cpp scene/resources/material.cpp
+#, fuzzy
+msgid "Transparent"
+msgstr "Transponoi"
+
+#: scene/3d/sprite_3d.cpp
+#, fuzzy
+msgid "Shaded"
+msgstr "Sävytin"
+
+#: scene/3d/sprite_3d.cpp
+msgid "Double Sided"
+msgstr ""
+
#: scene/3d/sprite_3d.cpp
msgid "Alpha Cut"
msgstr ""
@@ -21429,11 +23178,6 @@ msgstr "Lauseke"
msgid "Max Force"
msgstr "Virhe"
-#: scene/3d/vehicle_body.cpp
-#, fuzzy
-msgid "Relaxation"
-msgstr "Erotus:"
-
#: scene/3d/visibility_notifier.cpp
msgid "AABB"
msgstr ""
@@ -21579,7 +23323,7 @@ msgstr "Ristihäivytyksen aika (s):"
#: scene/animation/animation_blend_tree.cpp
#, fuzzy
-msgid "autorestart_"
+msgid "Auto Restart"
msgstr "Automaattinen uudelleenaloitus:"
#: scene/animation/animation_blend_tree.cpp
@@ -21665,13 +23409,6 @@ msgstr "Luokan valinnat:"
msgid "Default Blend Time"
msgstr "Oletusteema"
-#: scene/animation/animation_player.cpp scene/animation/animation_tree.cpp
-#: scene/animation/animation_tree_player.cpp
-#: servers/audio/effects/audio_effect_delay.cpp
-#, fuzzy
-msgid "Active"
-msgstr "Toiminto"
-
#: scene/animation/animation_player.cpp
msgid "Method Call Mode"
msgstr ""
@@ -21796,10 +23533,6 @@ msgstr "Vaihda solmun isäntää"
msgid "Max Iterations"
msgstr "Tee funktio"
-#: scene/animation/tween.cpp scene/resources/texture.cpp
-msgid "Repeat"
-msgstr ""
-
#: scene/animation/tween.cpp
msgid "Playback Process Mode"
msgstr ""
@@ -21830,20 +23563,6 @@ msgstr "Valintatila"
msgid "Alignment"
msgstr ""
-#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
-#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
-#: scene/resources/style_box.cpp
-#, fuzzy
-msgid "Horizontal"
-msgstr "Vaakasuora:"
-
-#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
-#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
-#: scene/resources/style_box.cpp
-#, fuzzy
-msgid "Vertical"
-msgstr "Pystysuora:"
-
#: scene/gui/base_button.cpp
#, fuzzy
msgid "Shortcut In Tooltip"
@@ -21945,10 +23664,6 @@ msgid "HSV"
msgstr "HSV"
#: scene/gui/color_picker.cpp
-msgid "Raw"
-msgstr "Raaka"
-
-#: scene/gui/color_picker.cpp
msgid "Switch between hexadecimal and code values."
msgstr "Vaihda heksadesimaali- ja koodiarvojen välillä."
@@ -22016,6 +23731,31 @@ msgid "Focus"
msgstr "Kohdista polkuun"
#: scene/gui/control.cpp
+msgid "Neighbour Left"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Neighbour Top"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Neighbour Right"
+msgstr ""
+
+#: scene/gui/control.cpp
+#, fuzzy
+msgid "Neighbour Bottom"
+msgstr "Keskitä alas"
+
+#: scene/gui/control.cpp
+msgid "Next"
+msgstr "Seuraava"
+
+#: scene/gui/control.cpp
+msgid "Previous"
+msgstr "Edellinen"
+
+#: scene/gui/control.cpp
msgid "Mouse"
msgstr ""
@@ -22053,7 +23793,7 @@ msgid "Dialog"
msgstr "XForm-ikkuna"
#: scene/gui/dialogs.cpp
-msgid "Hide On Ok"
+msgid "Hide On OK"
msgstr ""
#: scene/gui/dialogs.cpp scene/gui/label.cpp
@@ -22152,7 +23892,7 @@ msgid "Timers"
msgstr "Aika"
#: scene/gui/item_list.cpp scene/gui/popup_menu.cpp scene/gui/tree.cpp
-msgid "Incremental Search Max Interval (msec)"
+msgid "Incremental Search Max Interval Msec"
msgstr ""
#: scene/gui/item_list.cpp scene/gui/tree.cpp
@@ -22739,6 +24479,26 @@ msgstr "Keskitä vasemmalle"
msgid "Nine Patch Stretch"
msgstr "Interpolaatiotila"
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Left"
+msgstr "Aseta marginaali"
+
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Top"
+msgstr "Aseta marginaali"
+
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Right"
+msgstr "Aseta marginaali"
+
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Bottom"
+msgstr "Valintatila"
+
#: scene/gui/tree.cpp
msgid "Custom Minimum Height"
msgstr ""
@@ -22776,8 +24536,9 @@ msgid "Paused"
msgstr ""
#: scene/gui/video_player.cpp
-msgid "Buffering (msec)"
-msgstr ""
+#, fuzzy
+msgid "Buffering Msec"
+msgstr "Takanäkymä"
#: scene/gui/video_player.cpp
#, fuzzy
@@ -23139,6 +24900,22 @@ msgid "Shadow Atlas"
msgstr "Uusi Atlas"
#: scene/main/viewport.cpp
+msgid "Quad 0"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 1"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 2"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 3"
+msgstr ""
+
+#: scene/main/viewport.cpp
#, fuzzy
msgid "Canvas Transform"
msgstr "Tyhjennä muunnos"
@@ -23153,6 +24930,11 @@ msgid "Tooltip Delay (sec)"
msgstr ""
#: scene/register_scene_types.cpp
+#, fuzzy
+msgid "Swap OK Cancel"
+msgstr "Peruuta"
+
+#: scene/register_scene_types.cpp
msgid "Use hiDPI"
msgstr ""
@@ -23167,21 +24949,6 @@ msgid "Custom Font"
msgstr "Mukautettu solmu"
#: scene/resources/audio_stream_sample.cpp
-#, fuzzy
-msgid "Loop Mode"
-msgstr "Siirtotila"
-
-#: scene/resources/audio_stream_sample.cpp
-#, fuzzy
-msgid "Loop Begin"
-msgstr "Siirtotila"
-
-#: scene/resources/audio_stream_sample.cpp
-#, fuzzy
-msgid "Loop End"
-msgstr "Siirtotila"
-
-#: scene/resources/audio_stream_sample.cpp
#: servers/audio/effects/audio_stream_generator.cpp servers/audio_server.cpp
#, fuzzy
msgid "Mix Rate"
@@ -23241,6 +25008,17 @@ msgstr "Ylimääräiset asetukset:"
#: scene/resources/dynamic_font.cpp
#, fuzzy
+msgid "Char"
+msgstr "Kelvolliset merkit:"
+
+#: scene/resources/dynamic_font.cpp scene/resources/world.cpp
+#: scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Space"
+msgstr "Pääkohtaus"
+
+#: scene/resources/dynamic_font.cpp
+#, fuzzy
msgid "Font"
msgstr "Fontit"
@@ -23468,6 +25246,43 @@ msgid "Glow"
msgstr ""
#: scene/resources/environment.cpp
+#, fuzzy
+msgid "Levels"
+msgstr "Kehittäjät"
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "1"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "2"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "3"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "4"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "5"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "6"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "7"
+msgstr ""
+
+#: scene/resources/environment.cpp
msgid "Bloom"
msgstr ""
@@ -23560,10 +25375,68 @@ msgid "Next Pass"
msgstr "Seuraava taso"
#: scene/resources/material.cpp
+msgid "Use Shadow To Opacity"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Unshaded"
+msgstr "Näytä sävyttämätön"
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Vertex Lighting"
+msgstr "Suora valaistus"
+
+#: scene/resources/material.cpp
+msgid "No Depth Test"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Use Point Size"
+msgstr "Etunäkymä"
+
+#: scene/resources/material.cpp
+msgid "World Triplanar"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Fixed Size"
+msgstr "Etunäkymä"
+
+#: scene/resources/material.cpp
+msgid "Albedo Tex Force sRGB"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Do Not Receive Shadows"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Disable Ambient Light"
+msgstr "Sisennä oikealle"
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Ensure Correct Normals"
+msgstr "Muunnos keskeytetty."
+
+#: scene/resources/material.cpp
#, fuzzy
msgid "Vertex Color"
msgstr "Kärkipiste"
+#: scene/resources/material.cpp
+msgid "Use As Albedo"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Is sRGB"
+msgstr ""
+
#: scene/resources/material.cpp servers/visual_server.cpp
#, fuzzy
msgid "Parameters"
@@ -23600,6 +25473,11 @@ msgid "Billboard Mode"
msgstr "Viivaintila"
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Billboard Keep Scale"
+msgstr "Viivaintila"
+
+#: scene/resources/material.cpp
msgid "Grow"
msgstr ""
@@ -23609,6 +25487,10 @@ msgid "Grow Amount"
msgstr "Määrä:"
#: scene/resources/material.cpp
+msgid "Use Alpha Scissor"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Alpha Scissor Threshold"
msgstr ""
@@ -23640,10 +25522,20 @@ msgid "Metallic Specular"
msgstr ""
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Metallic Texture"
+msgstr "Emission lähde: "
+
+#: scene/resources/material.cpp
msgid "Metallic Texture Channel"
msgstr ""
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Roughness Texture"
+msgstr "Poista tekstuuri"
+
+#: scene/resources/material.cpp
msgid "Roughness Texture Channel"
msgstr ""
@@ -23663,6 +25555,16 @@ msgid "Emission Operator"
msgstr "Emissiovärit"
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Emission On UV2"
+msgstr "Emissiomaski"
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Emission Texture"
+msgstr "Emission lähde: "
+
+#: scene/resources/material.cpp
msgid "NormalMap"
msgstr ""
@@ -23677,6 +25579,11 @@ msgstr "Satunnainen kallistus:"
#: scene/resources/material.cpp
#, fuzzy
+msgid "Rim Texture"
+msgstr "Poista tekstuuri"
+
+#: scene/resources/material.cpp
+#, fuzzy
msgid "Clearcoat"
msgstr "Tyhjennä"
@@ -23686,15 +25593,28 @@ msgid "Clearcoat Gloss"
msgstr "Tyhjennä asento"
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Clearcoat Texture"
+msgstr "Editorin teema"
+
+#: scene/resources/material.cpp
msgid "Anisotropy"
msgstr ""
#: scene/resources/material.cpp
+msgid "Anisotropy Flowmap"
+msgstr ""
+
+#: scene/resources/material.cpp
#, fuzzy
msgid "Ambient Occlusion"
msgstr "Peitto"
#: scene/resources/material.cpp
+msgid "On UV2"
+msgstr ""
+
+#: scene/resources/material.cpp
#, fuzzy
msgid "Texture Channel"
msgstr "Tekstuurialue"
@@ -23733,6 +25653,11 @@ msgstr "Siirtymä: "
#: scene/resources/material.cpp
#, fuzzy
+msgid "Transmission Texture"
+msgstr "Siirtymä: "
+
+#: scene/resources/material.cpp
+#, fuzzy
msgid "Refraction"
msgstr "Erotus:"
@@ -23751,6 +25676,10 @@ msgid "UV1"
msgstr "UV"
#: scene/resources/material.cpp
+msgid "Triplanar"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Triplanar Sharpness"
msgstr ""
@@ -23962,6 +25891,16 @@ msgstr "Editorin teema"
msgid "Point Count"
msgstr "Lisää tuloportti"
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Scale Random"
+msgstr "Skaalaussuhde:"
+
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Scale Curve"
+msgstr "Sulje käyrä"
+
#: scene/resources/physics_material.cpp
msgid "Rough"
msgstr ""
@@ -24024,10 +25963,6 @@ msgid "A"
msgstr ""
#: scene/resources/shader.cpp
-msgid "Code"
-msgstr ""
-
-#: scene/resources/shader.cpp
#, fuzzy
msgid "Custom Defines"
msgstr "Toista mukautettu kohtaus"
@@ -24124,15 +26059,6 @@ msgstr ""
#: scene/resources/texture.cpp
#, fuzzy
-msgid "Storage"
-msgstr "Varastoidaan tiedostoa:"
-
-#: scene/resources/texture.cpp
-msgid "Lossy Quality"
-msgstr ""
-
-#: scene/resources/texture.cpp
-#, fuzzy
msgid "Load Path"
msgstr "Lataa esiasetus"
@@ -24263,11 +26189,6 @@ msgstr "Virheellinen vertailufunktio tälle tyypille."
msgid "Fallback Environment"
msgstr "Näytä ympäristö"
-#: scene/resources/world.cpp scene/resources/world_2d.cpp
-#, fuzzy
-msgid "Space"
-msgstr "Pääkohtaus"
-
#: scene/resources/world.cpp
#, fuzzy
msgid "Scenario"
@@ -24348,10 +26269,37 @@ msgstr ""
msgid "Wet"
msgstr ""
-#: servers/audio/effects/audio_effect_compressor.cpp
-msgid "Threshold"
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "Voice"
msgstr ""
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+msgid "Delay (ms)"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_phaser.cpp
+msgid "Rate Hz"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#, fuzzy
+msgid "Depth (ms)"
+msgstr "Syvyys"
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+msgid "Level dB"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+#: servers/audio/effects/audio_effect_panner.cpp
+#, fuzzy
+msgid "Pan"
+msgstr "Taso:"
+
#: servers/audio/effects/audio_effect_compressor.cpp
#: servers/audio/effects/audio_effect_filter.cpp
msgid "Gain"
@@ -24375,20 +26323,6 @@ msgid "Tap 1"
msgstr ""
#: servers/audio/effects/audio_effect_delay.cpp
-msgid "Delay (ms)"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_delay.cpp
-msgid "Level dB"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_delay.cpp
-#: servers/audio/effects/audio_effect_panner.cpp
-#, fuzzy
-msgid "Pan"
-msgstr "Taso:"
-
-#: servers/audio/effects/audio_effect_delay.cpp
msgid "Tap 2"
msgstr ""
@@ -24450,10 +26384,6 @@ msgstr ""
msgid "Range Max Hz"
msgstr ""
-#: servers/audio/effects/audio_effect_phaser.cpp
-msgid "Rate Hz"
-msgstr ""
-
#: servers/audio/effects/audio_effect_pitch_shift.cpp
msgid "Oversampling"
msgstr ""
@@ -24469,7 +26399,7 @@ msgid "Predelay"
msgstr ""
#: servers/audio/effects/audio_effect_reverb.cpp
-msgid "(msec)"
+msgid "Msec"
msgstr ""
#: servers/audio/effects/audio_effect_reverb.cpp
diff --git a/editor/translations/fil.po b/editor/translations/fil.po
index 9b6ecaea18..95df5eebb9 100644
--- a/editor/translations/fil.po
+++ b/editor/translations/fil.po
@@ -23,7 +23,7 @@ msgstr ""
"|| n % 10 == 6 || n % 10 == 9);\n"
"X-Generator: Weblate 4.12-dev\n"
-#: core/bind/core_bind.cpp
+#: core/bind/core_bind.cpp main/main.cpp
msgid "Tablet Driver"
msgstr ""
@@ -116,8 +116,8 @@ msgstr "Pagulit ng Animation"
#: core/bind/core_bind.cpp editor/editor_settings.cpp main/main.cpp
#: modules/gdscript/gdscript_editor.cpp modules/gridmap/grid_map.cpp
#: modules/mono/csharp_script.cpp modules/visual_script/visual_script_nodes.cpp
-#: scene/2d/tile_map.cpp scene/3d/camera.cpp scene/gui/control.cpp
-#: scene/gui/graph_edit.cpp scene/main/viewport.cpp
+#: scene/2d/tile_map.cpp scene/3d/camera.cpp scene/3d/light.cpp
+#: scene/gui/control.cpp scene/gui/graph_edit.cpp scene/main/viewport.cpp
#: scene/resources/dynamic_font.cpp scene/resources/navigation_mesh.cpp
#: scene/resources/primitive_meshes.cpp scene/resources/sky.cpp
#: scene/resources/style_box.cpp scene/resources/texture.cpp
@@ -213,8 +213,7 @@ msgid "Data"
msgstr ""
#: core/io/file_access_network.cpp core/register_core_types.cpp
-#: editor/editor_settings.cpp editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp main/main.cpp
+#: editor/editor_settings.cpp main/main.cpp
#: modules/gdscript/language_server/gdscript_language_server.cpp
msgid "Network"
msgstr ""
@@ -480,9 +479,10 @@ msgstr ""
msgid "Relative"
msgstr ""
-#: core/os/input_event.cpp scene/2d/camera_2d.cpp
-#: scene/3d/interpolated_camera.cpp scene/animation/animation_player.cpp
-#: scene/resources/environment.cpp
+#: core/os/input_event.cpp scene/2d/camera_2d.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/interpolated_camera.cpp
+#: scene/animation/animation_player.cpp scene/resources/environment.cpp
+#: scene/resources/particles_material.cpp
msgid "Speed"
msgstr ""
@@ -528,8 +528,9 @@ msgstr ""
msgid "Pitch"
msgstr ""
-#: core/os/input_event.cpp scene/2d/physics_body_2d.cpp
-#: scene/3d/physics_body.cpp
+#: core/os/input_event.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/physics_body_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/3d/physics_body.cpp scene/resources/particles_material.cpp
msgid "Velocity"
msgstr ""
@@ -546,6 +547,8 @@ msgid "Controller Value"
msgstr ""
#: core/project_settings.cpp editor/editor_node.cpp main/main.cpp
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/windows/export/export.cpp
#, fuzzy
msgid "Application"
msgstr "Pagulit ng Animation"
@@ -562,13 +565,16 @@ msgstr ""
#: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp
#: editor/editor_plugin_settings.cpp editor/editor_profiler.cpp
#: editor/project_manager.cpp editor/settings_config_dialog.cpp
-#: modules/gdnative/nativescript/nativescript.cpp scene/2d/area_2d.cpp
-#: scene/3d/area.cpp scene/main/node.cpp
+#: modules/gdnative/nativescript/nativescript.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/osx/export/export.cpp scene/2d/area_2d.cpp scene/3d/area.cpp
+#: scene/main/node.cpp
msgid "Name"
msgstr ""
#: core/project_settings.cpp editor/editor_help.cpp
-#: modules/visual_script/visual_script_nodes.cpp
+#: modules/visual_script/visual_script_nodes.cpp platform/uwp/export/export.cpp
+#: platform/windows/export/export.cpp
msgid "Description"
msgstr "Paglalarawan"
@@ -604,7 +610,7 @@ msgid "Custom User Dir Name"
msgstr ""
#: core/project_settings.cpp editor/animation_track_editor.cpp
-#: editor/editor_audio_buses.cpp servers/audio_server.cpp
+#: editor/editor_audio_buses.cpp main/main.cpp servers/audio_server.cpp
msgid "Audio"
msgstr ""
@@ -757,10 +763,13 @@ msgstr ""
msgid "Sharpen Intensity"
msgstr ""
-#: core/project_settings.cpp editor/editor_node.cpp editor/editor_settings.cpp
-#: editor/plugins/script_editor_plugin.cpp editor/project_export.cpp
-#: main/main.cpp modules/gdscript/gdscript.cpp
-#: modules/visual_script/visual_script.cpp scene/3d/room_manager.cpp
+#: core/project_settings.cpp editor/editor_export.cpp editor/editor_node.cpp
+#: editor/editor_settings.cpp editor/plugins/script_editor_plugin.cpp
+#: editor/project_export.cpp main/main.cpp modules/gdscript/gdscript.cpp
+#: modules/visual_script/visual_script.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp scene/3d/room_manager.cpp
#: scene/main/scene_tree.cpp scene/resources/shape_2d.cpp
#: servers/visual_server.cpp
msgid "Debug"
@@ -983,6 +992,7 @@ msgid "Subsurface Scattering"
msgstr ""
#: drivers/gles3/rasterizer_scene_gles3.cpp
+#: editor/import/resource_importer_texture.cpp
#: editor/plugins/spatial_editor_plugin.cpp modules/gltf/gltf_node.cpp
#: modules/gridmap/grid_map.cpp scene/2d/cpu_particles_2d.cpp
#: scene/2d/node_2d.cpp scene/2d/parallax_layer.cpp scene/2d/polygon_2d.cpp
@@ -1279,6 +1289,7 @@ msgid "Editors"
msgstr "I-edit"
#: editor/animation_track_editor.cpp editor/editor_settings.cpp
+#: editor/import/resource_importer_scene.cpp
#: editor/plugins/animation_player_editor_plugin.cpp editor/scene_tree_dock.cpp
#: scene/2d/animated_sprite.cpp scene/2d/cpu_particles_2d.cpp
#: scene/2d/sprite.cpp scene/3d/cpu_particles.cpp scene/3d/sprite_3d.cpp
@@ -1496,14 +1507,14 @@ msgstr ""
msgid "Seconds"
msgstr "Segundo"
-#: editor/animation_track_editor.cpp
+#: editor/animation_track_editor.cpp editor/import/resource_importer_scene.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp main/main.cpp
#: scene/resources/texture.cpp
msgid "FPS"
msgstr "FPS"
#: editor/animation_track_editor.cpp editor/editor_plugin_settings.cpp
-#: editor/editor_resource_picker.cpp
+#: editor/editor_resource_picker.cpp editor/import/resource_importer_wav.cpp
#: editor/plugins/polygon_2d_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
@@ -2446,7 +2457,9 @@ msgid "Remove Autoload"
msgstr ""
#: editor/editor_autoload_settings.cpp editor/editor_plugin_settings.cpp
-#: modules/gdscript/gdscript.cpp scene/2d/polygon_2d.cpp scene/3d/area.cpp
+#: modules/gdscript/gdscript.cpp platform/android/export/export_plugin.cpp
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#: scene/2d/polygon_2d.cpp scene/3d/area.cpp scene/3d/physics_joint.cpp
#: scene/3d/reflection_probe.cpp scene/main/canvas_layer.cpp
#: scene/resources/material.cpp servers/visual_server.cpp
msgid "Enable"
@@ -2599,6 +2612,58 @@ msgstr ""
#: editor/editor_export.cpp platform/android/export/export_plugin.cpp
#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Custom Template"
+msgstr "Ilipat Ang Mga Bezier Points"
+
+#: editor/editor_export.cpp editor/project_export.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp
+msgid "Release"
+msgstr ""
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Binary Format"
+msgstr "3D Transform Track"
+
+#: editor/editor_export.cpp
+msgid "64 Bits"
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Embed PCK"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Texture Format"
+msgstr "3D Transform Track"
+
+#: editor/editor_export.cpp
+msgid "BPTC"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "S3TC"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "ETC"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "ETC2"
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "No BPTC Fallbacks"
+msgstr ""
+
+#: editor/editor_export.cpp platform/android/export/export_plugin.cpp
+#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
msgid "Custom debug template not found."
msgstr ""
@@ -2774,6 +2839,7 @@ msgid "Make Current"
msgstr ""
#: editor/editor_feature_profile.cpp editor/editor_node.cpp
+#: editor/import/resource_importer_scene.cpp
#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
msgid "Import"
msgstr ""
@@ -2899,8 +2965,11 @@ msgstr ""
msgid "Display Mode"
msgstr ""
-#: editor/editor_file_dialog.cpp main/main.cpp modules/csg/csg_shape.cpp
-#: modules/visual_script/visual_script_nodes.cpp
+#: editor/editor_file_dialog.cpp
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+#: editor/import/resource_importer_wav.cpp main/main.cpp
+#: modules/csg/csg_shape.cpp modules/visual_script/visual_script_nodes.cpp
#: modules/visual_script/visual_script_yield_nodes.cpp scene/2d/light_2d.cpp
#: scene/2d/physics_body_2d.cpp scene/2d/tile_map.cpp
#: scene/3d/baked_lightmap.cpp scene/3d/light.cpp scene/3d/physics_body.cpp
@@ -3033,7 +3102,9 @@ msgstr ""
msgid "Reimport Missing Imported Files"
msgstr ""
-#: editor/editor_help.cpp
+#: editor/editor_help.cpp scene/2d/camera_2d.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/resources/dynamic_font.cpp
+#: scene/resources/style_box.cpp
msgid "Top"
msgstr ""
@@ -3085,6 +3156,7 @@ msgid "Fonts"
msgstr ""
#: editor/editor_help.cpp editor/plugins/theme_editor_plugin.cpp
+#: platform/iphone/export/export.cpp
msgid "Icons"
msgstr ""
@@ -3245,7 +3317,9 @@ msgstr ""
msgid "Pin value [Disabled because '%s' is editor-only]"
msgstr ""
-#: editor/editor_inspector.cpp editor/scene_tree_dock.cpp
+#: editor/editor_inspector.cpp
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+#: editor/scene_tree_dock.cpp
#: modules/visual_script/visual_script_func_nodes.cpp
#: modules/visual_script/visual_script_nodes.cpp
#: modules/visual_script/visual_script_property_selector.cpp
@@ -3558,6 +3632,14 @@ msgid "Quick Open Script..."
msgstr ""
#: editor/editor_node.cpp
+msgid "Save & Reload"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Save changes to '%s' before reloading?"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "Save & Close"
msgstr ""
@@ -3668,6 +3750,10 @@ msgid "Open Project Manager?"
msgstr ""
#: editor/editor_node.cpp
+msgid "Save changes to the following scene(s) before reloading?"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "Save & Quit"
msgstr ""
@@ -3910,9 +3996,8 @@ msgid "Update Vital Only"
msgstr "Tuloy-tuloy"
#: editor/editor_node.cpp
-#, fuzzy
-msgid "Translate Properties"
-msgstr "Burahin ang (mga) Napiling Key"
+msgid "Localize Settings"
+msgstr ""
#: editor/editor_node.cpp
msgid "Restore Scenes On Load"
@@ -3927,9 +4012,8 @@ msgid "Inspector"
msgstr ""
#: editor/editor_node.cpp
-#, fuzzy
-msgid "Capitalize Properties"
-msgstr "Burahin ang (mga) Napiling Key"
+msgid "Default Property Name Style"
+msgstr ""
#: editor/editor_node.cpp
msgid "Default Float Step"
@@ -4491,7 +4575,9 @@ msgstr ""
msgid "Update"
msgstr ""
-#: editor/editor_plugin_settings.cpp
+#: editor/editor_plugin_settings.cpp platform/android/export/export_plugin.cpp
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp
msgid "Version"
msgstr ""
@@ -5436,7 +5522,7 @@ msgstr ""
msgid "Rect Custom Position"
msgstr ""
-#: editor/editor_settings.cpp
+#: editor/editor_settings.cpp platform/android/export/export_plugin.cpp
msgid "Screen"
msgstr ""
@@ -5461,6 +5547,19 @@ msgid "Editor SSL Certificates"
msgstr ""
#: editor/editor_settings.cpp
+msgid "HTTP Proxy"
+msgstr ""
+
+#: editor/editor_settings.cpp
+msgid "Host"
+msgstr ""
+
+#: editor/editor_settings.cpp editor/fileserver/editor_file_server.cpp
+#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp
+msgid "Port"
+msgstr ""
+
+#: editor/editor_settings.cpp
msgid "Project Manager"
msgstr ""
@@ -5500,7 +5599,8 @@ msgstr ""
msgid "String Color"
msgstr ""
-#: editor/editor_settings.cpp
+#: editor/editor_settings.cpp platform/javascript/export/export.cpp
+#: platform/uwp/export/export.cpp
msgid "Background Color"
msgstr ""
@@ -5662,22 +5762,6 @@ msgid "Starting the download..."
msgstr ""
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "HTTP Proxy"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Host"
-msgstr ""
-
-#: editor/export_template_manager.cpp editor/fileserver/editor_file_server.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp main/main.cpp
-#: modules/mono/mono_gd/gd_mono.cpp
-msgid "Port"
-msgstr ""
-
-#: editor/export_template_manager.cpp
msgid "Error requesting URL:"
msgstr ""
@@ -5921,6 +6005,7 @@ msgstr ""
#: editor/fileserver/editor_file_server.cpp
#: editor/plugins/version_control_editor_plugin.cpp
+#: platform/uwp/export/export.cpp platform/windows/export/export.cpp
msgid "Password"
msgstr ""
@@ -6287,6 +6372,108 @@ msgstr ""
msgid "Use Ambient"
msgstr ""
+#: editor/import/resource_importer_bitmask.cpp
+#, fuzzy
+msgid "Create From"
+msgstr "Lumikha"
+
+#: editor/import/resource_importer_bitmask.cpp
+#: servers/audio/effects/audio_effect_compressor.cpp
+msgid "Threshold"
+msgstr ""
+
+#: editor/import/resource_importer_csv_translation.cpp
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_scene.cpp
+#: editor/import/resource_importer_texture.cpp
+#: editor/import/resource_importer_wav.cpp scene/3d/gi_probe.cpp
+msgid "Compress"
+msgstr ""
+
+#: editor/import/resource_importer_csv_translation.cpp
+msgid "Delimiter"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+msgid "No BPTC If RGB"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/sprite_3d.cpp
+#: scene/resources/material.cpp scene/resources/particles_material.cpp
+#: scene/resources/texture.cpp
+msgid "Flags"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/animation/tween.cpp
+#: scene/resources/texture.cpp
+msgid "Repeat"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/2d/light_2d.cpp
+#: scene/gui/control.cpp scene/resources/navigation_mesh.cpp
+msgid "Filter"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+msgid "Mipmaps"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+msgid "Anisotropic"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+msgid "sRGB"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+msgid "Slices"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
+#: scene/resources/style_box.cpp
+#, fuzzy
+msgid "Horizontal"
+msgstr "Ilipat Ang Mga Bezier Points"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
+#: scene/resources/style_box.cpp
+msgid "Vertical"
+msgstr ""
+
+#: editor/import/resource_importer_obj.cpp
+#, fuzzy
+msgid "Generate Tangents"
+msgstr "Maglipat ng (mga) Bezier Point"
+
+#: editor/import/resource_importer_obj.cpp
+msgid "Scale Mesh"
+msgstr ""
+
+#: editor/import/resource_importer_obj.cpp
+msgid "Offset Mesh"
+msgstr ""
+
+#: editor/import/resource_importer_obj.cpp
+#: editor/import/resource_importer_scene.cpp
+msgid "Octahedral Compression"
+msgstr ""
+
+#: editor/import/resource_importer_obj.cpp
+msgid "Optimize Mesh Flags"
+msgstr ""
+
#: editor/import/resource_importer_scene.cpp
msgid "Import as Single Scene"
msgstr ""
@@ -6327,6 +6514,143 @@ msgstr ""
msgid "Import as Multiple Scenes+Materials"
msgstr ""
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Nodes"
+msgstr "Burahin ang (mga) Napiling Key"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Root Type"
+msgstr "Baguhin ang Type ng Nilalaman ng Array"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Root Name"
+msgstr "Burahin ang (mga) Napiling Key"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Root Scale"
+msgstr "Burahin ang (mga) Napiling Key"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Custom Script"
+msgstr "Ilipat Ang Mga Bezier Points"
+
+#: editor/import/resource_importer_scene.cpp scene/resources/texture.cpp
+msgid "Storage"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Use Legacy Names"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+msgid "Materials"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Location"
+msgstr "Pagulit ng Animation"
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Keep On Reimport"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+msgid "Meshes"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Ensure Tangents"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Light Baking"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Lightmap Texel Size"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+msgid "Skins"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Use Named Skins"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "External Files"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Store In Subdir"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Filter Script"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Keep Custom Tracks"
+msgstr "3D Transform Track"
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Optimizer"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp main/main.cpp
+#: modules/mono/mono_gd/gd_mono.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp scene/2d/camera_2d.cpp scene/2d/light_2d.cpp
+#: scene/2d/navigation_polygon.cpp scene/2d/ray_cast_2d.cpp scene/2d/sprite.cpp
+#: scene/2d/y_sort.cpp scene/3d/audio_stream_player_3d.cpp
+#: scene/3d/baked_lightmap.cpp scene/3d/interpolated_camera.cpp
+#: scene/3d/light.cpp scene/3d/navigation_mesh_instance.cpp
+#: scene/3d/physics_joint.cpp scene/3d/ray_cast.cpp scene/3d/sprite_3d.cpp
+#: scene/gui/graph_edit.cpp scene/gui/rich_text_label.cpp
+#: scene/resources/curve.cpp scene/resources/environment.cpp
+#: scene/resources/material.cpp
+msgid "Enabled"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Max Linear Error"
+msgstr "Salamin"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Max Angular Error"
+msgstr "Salamin"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Max Angle"
+msgstr "Halaga:"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Remove Unused Tracks"
+msgstr "Tanggalin ang track na ito."
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Clips"
+msgstr "Mga clip ng Anim:"
+
+#: editor/import/resource_importer_scene.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/particles_2d.cpp scene/3d/area.cpp scene/3d/cpu_particles.cpp
+#: scene/3d/particles.cpp scene/resources/environment.cpp
+msgid "Amount"
+msgstr ""
+
#: editor/import/resource_importer_scene.cpp
#: editor/plugins/mesh_library_editor_plugin.cpp
msgid "Import Scene"
@@ -6368,12 +6692,137 @@ msgstr ""
msgid "Saving..."
msgstr ""
+#: editor/import/resource_importer_texture.cpp scene/resources/texture.cpp
+msgid "Lossy Quality"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "HDR Mode"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "BPTC LDR"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/mesh_instance_2d.cpp scene/2d/multimesh_instance_2d.cpp
+#: scene/2d/particles_2d.cpp scene/2d/sprite.cpp scene/resources/style_box.cpp
+msgid "Normal Map"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Process"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Fix Alpha Border"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Premult Alpha"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Hdr As Srgb"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Invert Color"
+msgstr "Mga Functions:"
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Normal Map Invert Y"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
+#: scene/audio/audio_stream_player.cpp scene/gui/video_player.cpp
+msgid "Stream"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Size Limit"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Detect 3D"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "SVG"
+msgstr ""
+
#: editor/import/resource_importer_texture.cpp
msgid ""
"Warning, no suitable PC VRAM compression enabled in Project Settings. This "
"texture will not display correctly on PC."
msgstr ""
+#: editor/import/resource_importer_texture_atlas.cpp
+#, fuzzy
+msgid "Atlas File"
+msgstr "Kumpleto ang pag-Download."
+
+#: editor/import/resource_importer_texture_atlas.cpp
+#, fuzzy
+msgid "Import Mode"
+msgstr "Burahin ang (mga) Napiling Key"
+
+#: editor/import/resource_importer_texture_atlas.cpp
+msgid "Crop To Region"
+msgstr ""
+
+#: editor/import/resource_importer_texture_atlas.cpp
+msgid "Trim Alpha Border From Region"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp scene/2d/physics_body_2d.cpp
+msgid "Force"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+msgid "8 Bit"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp main/main.cpp
+#: modules/mono/editor/csharp_project.cpp modules/mono/mono_gd/gd_mono.cpp
+msgid "Mono"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+#, fuzzy
+msgid "Max Rate"
+msgstr "Halaga:"
+
+#: editor/import/resource_importer_wav.cpp
+#, fuzzy
+msgid "Max Rate Hz"
+msgstr "Halaga:"
+
+#: editor/import/resource_importer_wav.cpp
+msgid "Trim"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+msgid "Normalize"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+msgid "Loop Mode"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+msgid "Loop Begin"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+msgid "Loop End"
+msgstr ""
+
#: editor/import_defaults_editor.cpp
msgid "Select Importer"
msgstr ""
@@ -6442,6 +6891,28 @@ msgid "Failed to load resource."
msgstr ""
#: editor/inspector_dock.cpp
+#, fuzzy
+msgid "Property Name Style"
+msgstr "Property Track"
+
+#: editor/inspector_dock.cpp scene/gui/color_picker.cpp
+msgid "Raw"
+msgstr ""
+
+#: editor/inspector_dock.cpp
+#, fuzzy
+msgid "Capitalized"
+msgstr "Burahin ang (mga) Napiling Key"
+
+#: editor/inspector_dock.cpp
+msgid "Localized"
+msgstr ""
+
+#: editor/inspector_dock.cpp
+msgid "Localization not available for current language."
+msgstr ""
+
+#: editor/inspector_dock.cpp
msgid "Copy Properties"
msgstr ""
@@ -7472,18 +7943,22 @@ msgid "License (Z-A)"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
+msgctxt "Pagination"
msgid "First"
msgstr ""
-#: editor/plugins/asset_library_editor_plugin.cpp scene/gui/control.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgctxt "Pagination"
msgid "Previous"
msgstr ""
-#: editor/plugins/asset_library_editor_plugin.cpp scene/gui/control.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgctxt "Pagination"
msgid "Next"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
+msgctxt "Pagination"
msgid "Last"
msgstr ""
@@ -7718,19 +8193,19 @@ msgid ""
"margins."
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Top Left"
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Top Right"
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Bottom Right"
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Bottom Left"
msgstr ""
@@ -8430,6 +8905,18 @@ msgstr ""
msgid "Gradient Edited"
msgstr ""
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+msgid "Swap GradientTexture2D Fill Points"
+msgstr ""
+
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+msgid "Swap Gradient Fill Points"
+msgstr ""
+
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+msgid "Toggle Grid Snap"
+msgstr ""
+
#: editor/plugins/item_list_editor_plugin.cpp
msgid "Item %d"
msgstr ""
@@ -8643,8 +9130,8 @@ msgid ""
"%s"
msgstr ""
-#: editor/plugins/mesh_library_editor_plugin.cpp modules/gridmap/grid_map.cpp
-msgid "Mesh Library"
+#: editor/plugins/mesh_library_editor_plugin.cpp
+msgid "MeshLibrary"
msgstr ""
#: editor/plugins/mesh_library_editor_plugin.cpp
@@ -9619,8 +10106,8 @@ msgstr ""
msgid "Source"
msgstr ""
-#: editor/plugins/script_text_editor.cpp scene/3d/interpolated_camera.cpp
-#: scene/animation/skeleton_ik.cpp
+#: editor/plugins/script_text_editor.cpp platform/uwp/export/export.cpp
+#: scene/3d/interpolated_camera.cpp scene/animation/skeleton_ik.cpp
msgid "Target"
msgstr ""
@@ -10578,7 +11065,9 @@ msgstr ""
#: editor/plugins/sprite_frames_editor_plugin.cpp
#: modules/gltf/gltf_animation.cpp modules/minimp3/audio_stream_mp3.cpp
-#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp scene/2d/path_2d.cpp
+#: modules/minimp3/resource_importer_mp3.cpp
+#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp
+#: modules/stb_vorbis/resource_importer_ogg_vorbis.cpp scene/2d/path_2d.cpp
#: scene/3d/path.cpp scene/resources/animation.cpp scene/resources/material.cpp
msgid "Loop"
msgstr ""
@@ -11448,8 +11937,9 @@ msgstr ""
msgid "Priority"
msgstr ""
-#: editor/plugins/tile_set_editor_plugin.cpp main/main.cpp scene/gui/button.cpp
-#: scene/gui/item_list.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp main/main.cpp
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#: scene/gui/button.cpp scene/gui/item_list.cpp
msgid "Icon"
msgstr ""
@@ -12738,10 +13228,6 @@ msgid ""
msgstr ""
#: editor/project_export.cpp
-msgid "Release"
-msgstr ""
-
-#: editor/project_export.cpp
msgid "Exporting All"
msgstr ""
@@ -14504,6 +14990,7 @@ msgid "Change AudioStreamPlayer3D Emission Angle"
msgstr ""
#: editor/spatial_editor_gizmos.cpp modules/gltf/gltf_node.cpp
+#: platform/osx/export/export.cpp
msgid "Camera"
msgstr ""
@@ -14765,7 +15252,8 @@ msgstr ""
msgid "Use Nvidia Rect Flicker Workaround"
msgstr ""
-#: main/main.cpp platform/uwp/os_uwp.cpp
+#: main/main.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp platform/uwp/os_uwp.cpp
msgid "Display"
msgstr ""
@@ -14820,18 +15308,6 @@ msgstr ""
msgid "Allowed"
msgstr ""
-#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp scene/2d/camera_2d.cpp
-#: scene/2d/light_2d.cpp scene/2d/navigation_polygon.cpp
-#: scene/2d/ray_cast_2d.cpp scene/2d/sprite.cpp scene/2d/y_sort.cpp
-#: scene/3d/audio_stream_player_3d.cpp scene/3d/baked_lightmap.cpp
-#: scene/3d/interpolated_camera.cpp scene/3d/light.cpp
-#: scene/3d/navigation_mesh_instance.cpp scene/3d/ray_cast.cpp
-#: scene/3d/sprite_3d.cpp scene/gui/graph_edit.cpp
-#: scene/gui/rich_text_label.cpp scene/resources/curve.cpp
-#: scene/resources/environment.cpp
-msgid "Enabled"
-msgstr ""
-
#: main/main.cpp
msgid "Intended Usage"
msgstr ""
@@ -14860,13 +15336,14 @@ msgstr ""
msgid "Handheld"
msgstr ""
-#: main/main.cpp
+#: main/main.cpp platform/javascript/export/export.cpp
+#: platform/uwp/export/export.cpp
#, fuzzy
msgid "Orientation"
msgstr "Pagulit ng Animation"
#: main/main.cpp scene/gui/scroll_container.cpp scene/gui/text_edit.cpp
-#: scene/main/scene_tree.cpp
+#: scene/main/scene_tree.cpp scene/register_scene_types.cpp
#, fuzzy
msgid "Common"
msgstr "Komunidad"
@@ -14907,7 +15384,7 @@ msgstr ""
#: main/main.cpp
#, fuzzy
-msgid "Frame Delay (msec)"
+msgid "Frame Delay Msec"
msgstr "Oras (s): "
#: main/main.cpp
@@ -15024,11 +15501,6 @@ msgstr ""
msgid "Tooltip Position Offset"
msgstr ""
-#: main/main.cpp modules/mono/editor/csharp_project.cpp
-#: modules/mono/mono_gd/gd_mono.cpp
-msgid "Mono"
-msgstr ""
-
#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp
msgid "Debugger Agent"
msgstr ""
@@ -15559,7 +16031,7 @@ msgstr ""
msgid "Intensity"
msgstr ""
-#: modules/gltf/gltf_light.cpp scene/2d/light_2d.cpp
+#: modules/gltf/gltf_light.cpp scene/2d/light_2d.cpp scene/3d/light.cpp
#, fuzzy
msgid "Range"
msgstr "Baguhin"
@@ -15694,11 +16166,6 @@ msgstr ""
msgid "Use Named Skin Binds"
msgstr ""
-#: modules/gltf/gltf_state.cpp scene/3d/physics_joint.cpp
-#, fuzzy
-msgid "Nodes"
-msgstr "Burahin ang (mga) Napiling Key"
-
#: modules/gltf/gltf_state.cpp
msgid "Buffer Views"
msgstr ""
@@ -15708,14 +16175,6 @@ msgid "Accessors"
msgstr ""
#: modules/gltf/gltf_state.cpp
-msgid "Meshes"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp
-msgid "Materials"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp
#, fuzzy
msgid "Scene Name"
msgstr "Mag-insert ng Key dito"
@@ -15731,15 +16190,11 @@ msgstr "Burahin ang (mga) Napiling Key"
msgid "Textures"
msgstr ""
-#: modules/gltf/gltf_state.cpp
+#: modules/gltf/gltf_state.cpp platform/uwp/export/export.cpp
msgid "Images"
msgstr ""
#: modules/gltf/gltf_state.cpp
-msgid "Skins"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp
msgid "Cameras"
msgstr ""
@@ -15770,10 +16225,14 @@ msgid "Src Image"
msgstr ""
#: modules/gridmap/grid_map.cpp
-msgid "Physics Material"
+msgid "Mesh Library"
msgstr ""
#: modules/gridmap/grid_map.cpp
+msgid "Physics Material"
+msgstr ""
+
+#: modules/gridmap/grid_map.cpp scene/3d/visual_instance.cpp
msgid "Use In Baked Light"
msgstr ""
@@ -15801,6 +16260,7 @@ msgstr ""
#: modules/gridmap/grid_map.cpp scene/2d/collision_object_2d.cpp
#: scene/2d/tile_map.cpp scene/3d/collision_object.cpp scene/3d/soft_body.cpp
+#: scene/resources/material.cpp
msgid "Mask"
msgstr ""
@@ -15982,7 +16442,9 @@ msgid "Ultra Quality Ray Count"
msgstr ""
#: modules/minimp3/audio_stream_mp3.cpp
+#: modules/minimp3/resource_importer_mp3.cpp
#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp
+#: modules/stb_vorbis/resource_importer_ogg_vorbis.cpp
msgid "Loop Offset"
msgstr ""
@@ -17018,6 +17480,169 @@ msgid "The package must have at least one '.' separator."
msgstr ""
#: platform/android/export/export_plugin.cpp
+msgid "Use Custom Build"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Export Format"
+msgstr "3D Transform Track"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Keystore"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Debug User"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+msgid "Debug Password"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Release User"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Release Password"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "One Click Deploy"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Clear Previous Install"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp scene/resources/shader.cpp
+msgid "Code"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Min SDK"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Target SDK"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+msgid "Package"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Unique Name"
+msgstr "Pagbago ng Haba ng Animation"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Signed"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Classify As Game"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Retain Data On Uninstall"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Exclude From Recents"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Graphics"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "OpenGL Debug"
+msgstr "I-buksan"
+
+#: platform/android/export/export_plugin.cpp
+msgid "XR Features"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "XR Mode"
+msgstr "Kopya"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Hand Tracking"
+msgstr "Property Track"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Hand Tracking Frequency"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Passthrough"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Immersive Mode"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Support Small"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Support Normal"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Support Large"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Support Xlarge"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "User Data Backup"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Allow"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Command Line"
+msgstr "Komunidad"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+msgid "Extra Args"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "APK Expansion"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Salt"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Public Key"
+msgstr "Kopyahin Ang (Mga) Key(s)"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Permissions"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Custom Permissions"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
msgid "Select device from the list"
msgstr ""
@@ -17303,6 +17928,167 @@ msgid "The character '%s' is not allowed in Identifier."
msgstr ""
#: platform/iphone/export/export.cpp
+msgid "App Store Team ID"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Provisioning Profile UUID Debug"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Code Sign Identity Debug"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Export Method Debug"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Provisioning Profile UUID Release"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Code Sign Identity Release"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Export Method Release"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Targeted Device Family"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Info"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Identifier"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Signature"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Short Version"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Copyright"
+msgstr "Kopya"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Capabilities"
+msgstr "Burahin ang (mga) Napiling Key"
+
+#: platform/iphone/export/export.cpp
+msgid "Access Wi-Fi"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Push Notifications"
+msgstr ""
+
+#: platform/iphone/export/export.cpp scene/3d/baked_lightmap.cpp
+msgid "User Data"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Accessible From Files App"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Accessible From Itunes Sharing"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Privacy"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Camera Usage Description"
+msgstr "Paglalarawan"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Microphone Usage Description"
+msgstr "Paglalarawan"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Photolibrary Usage Description"
+msgstr "Paglalarawan"
+
+#: platform/iphone/export/export.cpp
+msgid "iPhone 120 X 120"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPhone 180 X 180"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 76 X 76"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 152 X 152"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 167 X 167"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "App Store 1024 X 1024"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Spotlight 40 X 40"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Spotlight 80 X 80"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Storyboard"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Use Launch Screen Storyboard"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Image Scale Mode"
+msgstr "Pahina: "
+
+#: platform/iphone/export/export.cpp
+msgid "Custom Image @2x"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Custom Image @3x"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Use Custom BG Color"
+msgstr "Mga Functions:"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Custom BG Color"
+msgstr "Mga Functions:"
+
+#: platform/iphone/export/export.cpp
msgid "App Store Team ID not specified - cannot configure the project."
msgstr ""
@@ -17339,6 +18125,77 @@ msgid "Could not read file:"
msgstr ""
#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Variant"
+msgstr "Pagulit ng Animation"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Export Type"
+msgstr "Baguhin ang Type ng Nilalaman ng Array"
+
+#: platform/javascript/export/export.cpp
+msgid "VRAM Texture Compression"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "For Desktop"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "For Mobile"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Html"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Export Icon"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Custom Html Shell"
+msgstr "Ilipat Ang Mga Bezier Points"
+
+#: platform/javascript/export/export.cpp
+msgid "Head Include"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Canvas Resize Policy"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Focus Canvas On Start"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Experimental Virtual Keyboard"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Progressive Web App"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Offline Page"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 144 X 144"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 180 X 180"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 512 X 512"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
msgid "Could not read HTML shell:"
msgstr ""
@@ -17443,6 +18300,186 @@ msgid "Unknown object type."
msgstr ""
#: platform/osx/export/export.cpp
+msgid "App Category"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "High Res"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Location Usage Description"
+msgstr "Paglalarawan"
+
+#: platform/osx/export/export.cpp
+msgid "Address Book Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Calendar Usage Description"
+msgstr "Paglalarawan"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Photos Library Usage Description"
+msgstr "Paglalarawan"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Desktop Folder Usage Description"
+msgstr "Paglalarawan"
+
+#: platform/osx/export/export.cpp
+msgid "Documents Folder Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Downloads Folder Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Network Volumes Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Removable Volumes Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#, fuzzy
+msgid "Codesign"
+msgstr "Burahin ang (mga) Napiling Key"
+
+#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
+#: platform/windows/export/export.cpp
+msgid "Identity"
+msgstr ""
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#, fuzzy
+msgid "Timestamp"
+msgstr "Oras:"
+
+#: platform/osx/export/export.cpp
+msgid "Hardened Runtime"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Replace Existing Signature"
+msgstr "Palitan ang Lahat"
+
+#: platform/osx/export/export.cpp
+msgid "Entitlements"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Custom File"
+msgstr "Ilipat Ang Mga Bezier Points"
+
+#: platform/osx/export/export.cpp
+msgid "Allow JIT Code Execution"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Allow Unsigned Executable Memory"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Allow Dyld Environment Variables"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Disable Library Validation"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Audio Input"
+msgstr "Mga clip ng tunog:"
+
+#: platform/osx/export/export.cpp
+msgid "Address Book"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Calendars"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Photos Library"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Apple Events"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Debugging"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "App Sandbox"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Network Server"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Network Client"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Device Usb"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Device Bluetooth"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Files Downloads"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Files Pictures"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Files Music"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Files Movies"
+msgstr ""
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#, fuzzy
+msgid "Custom Options"
+msgstr "Pagulit ng Animation"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Notarization"
+msgstr "Pagulit ng Animation"
+
+#: platform/osx/export/export.cpp
+msgid "Apple ID Name"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Apple ID Password"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Apple Team ID"
+msgstr ""
+
+#: platform/osx/export/export.cpp
msgid ""
"Note: The notarization process generally takes less than an hour. When the "
"process is completed, you'll receive an email."
@@ -17632,6 +18669,123 @@ msgid "Force Builtin Codesign"
msgstr ""
#: platform/uwp/export/export.cpp
+msgid "Architecture"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Display Name"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Short Name"
+msgstr "Baguhin ang Nilalaman ng Array"
+
+#: platform/uwp/export/export.cpp
+msgid "Publisher"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Publisher Display Name"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Product Guid"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Publisher Guid"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Signing"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Certificate"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Algorithm"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Major"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Minor"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Build"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Revision"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Landscape"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Portrait"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Landscape Flipped"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Portrait Flipped"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Store Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 44 X 44 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 71 X 71 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 150 X 150 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 310 X 310 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Wide 310 X 150 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Splash Screen"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Tiles"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Square 150 X 150"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Wide 310 X 150"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Square 310 X 310"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
msgid "Invalid package short name."
msgstr ""
@@ -17696,11 +18850,44 @@ msgid "Debug Certificate"
msgstr ""
#: platform/uwp/export/export.cpp
-msgid "Debug Password"
+msgid "Debug Algorithm"
msgstr ""
-#: platform/uwp/export/export.cpp
-msgid "Debug Algorithm"
+#: platform/windows/export/export.cpp
+msgid "Identity Type"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Timestamp Server URL"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Digest Algorithm"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "File Version"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Product Version"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Company Name"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Product Name"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "File Description"
+msgstr "Paglalarawan"
+
+#: platform/windows/export/export.cpp
+msgid "Trademarks"
msgstr ""
#: platform/windows/export/export.cpp
@@ -17767,12 +18954,14 @@ msgstr ""
msgid "Centered"
msgstr ""
-#: scene/2d/animated_sprite.cpp scene/2d/camera_2d.cpp scene/2d/light_2d.cpp
+#: scene/2d/animated_sprite.cpp scene/2d/camera_2d.cpp
+#: scene/2d/cpu_particles_2d.cpp scene/2d/light_2d.cpp
#: scene/2d/parallax_background.cpp scene/2d/parallax_layer.cpp
#: scene/2d/path_2d.cpp scene/2d/polygon_2d.cpp scene/2d/sprite.cpp
-#: scene/3d/path.cpp scene/3d/physics_body.cpp scene/3d/sprite_3d.cpp
-#: scene/gui/graph_node.cpp scene/gui/rich_text_effect.cpp
-#: scene/main/canvas_layer.cpp scene/resources/material.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/path.cpp scene/3d/physics_body.cpp
+#: scene/3d/sprite_3d.cpp scene/gui/graph_node.cpp
+#: scene/gui/rich_text_effect.cpp scene/main/canvas_layer.cpp
+#: scene/resources/material.cpp scene/resources/particles_material.cpp
#: scene/resources/style_box.cpp
msgid "Offset"
msgstr ""
@@ -17838,11 +19027,6 @@ msgstr "Mga clip ng tunog:"
msgid "Override"
msgstr ""
-#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
-#: scene/audio/audio_stream_player.cpp scene/gui/video_player.cpp
-msgid "Stream"
-msgstr ""
-
#: scene/2d/audio_stream_player_2d.cpp scene/audio/audio_stream_player.cpp
#: scene/gui/video_player.cpp servers/audio/effects/audio_effect_amplify.cpp
msgid "Volume dB"
@@ -17866,12 +19050,12 @@ msgid "Stream Paused"
msgstr ""
#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
-#: scene/3d/reflection_probe.cpp scene/3d/visual_instance.cpp
-#: scene/resources/material.cpp
+#: scene/3d/light.cpp scene/3d/reflection_probe.cpp
+#: scene/3d/visual_instance.cpp scene/resources/material.cpp
msgid "Max Distance"
msgstr ""
-#: scene/2d/audio_stream_player_2d.cpp
+#: scene/2d/audio_stream_player_2d.cpp scene/3d/light.cpp
#, fuzzy
msgid "Attenuation"
msgstr "Pagulit ng Animation"
@@ -17921,6 +19105,22 @@ msgstr ""
msgid "Limit"
msgstr ""
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/style_box.cpp
+msgid "Left"
+msgstr ""
+
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/style_box.cpp
+msgid "Right"
+msgstr ""
+
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/dynamic_font.cpp scene/resources/style_box.cpp
+#, fuzzy
+msgid "Bottom"
+msgstr "Mga Functions:"
+
#: scene/2d/camera_2d.cpp
msgid "Smoothed"
msgstr ""
@@ -18116,12 +19316,6 @@ msgstr ""
msgid "Emitting"
msgstr ""
-#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp scene/3d/area.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
-#: scene/resources/environment.cpp
-msgid "Amount"
-msgstr ""
-
#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp
#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
msgid "Lifetime"
@@ -18181,17 +19375,12 @@ msgstr ""
#: scene/2d/mesh_instance_2d.cpp scene/2d/multimesh_instance_2d.cpp
#: scene/2d/particles_2d.cpp scene/2d/polygon_2d.cpp scene/2d/sprite.cpp
#: scene/3d/sprite_3d.cpp scene/gui/nine_patch_rect.cpp
-#: scene/gui/texture_rect.cpp scene/resources/sky.cpp
-#: scene/resources/style_box.cpp scene/resources/visual_shader_nodes.cpp
+#: scene/gui/texture_rect.cpp scene/resources/material.cpp
+#: scene/resources/sky.cpp scene/resources/style_box.cpp
+#: scene/resources/visual_shader_nodes.cpp
msgid "Texture"
msgstr ""
-#: scene/2d/cpu_particles_2d.cpp scene/2d/mesh_instance_2d.cpp
-#: scene/2d/multimesh_instance_2d.cpp scene/2d/particles_2d.cpp
-#: scene/2d/sprite.cpp scene/resources/style_box.cpp
-msgid "Normal Map"
-msgstr ""
-
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
msgid "Emission Shape"
@@ -18211,9 +19400,8 @@ msgid "Normals"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/3d/sprite_3d.cpp scene/resources/material.cpp
-#: scene/resources/particles_material.cpp scene/resources/texture.cpp
-msgid "Flags"
+#: scene/resources/particles_material.cpp
+msgid "Align Y"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
@@ -18234,6 +19422,11 @@ msgid "Initial Velocity"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Velocity Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp servers/physics_2d_server.cpp
#: servers/physics_server.cpp
msgid "Angular Velocity"
@@ -18241,6 +19434,11 @@ msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+msgid "Velocity Curve"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
msgid "Orbit Velocity"
msgstr ""
@@ -18251,6 +19449,21 @@ msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+msgid "Accel"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Accel Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Accel Curve"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
msgid "Radial Accel"
msgstr ""
@@ -18260,19 +19473,52 @@ msgid "Tangential Accel"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/2d/joints_2d.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/vehicle_body.cpp
-#: scene/resources/particles_material.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/physics_joint.cpp
+#: scene/3d/vehicle_body.cpp scene/resources/particles_material.cpp
#: servers/audio/effects/audio_effect_reverb.cpp
msgid "Damping"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+msgid "Damping Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Damping Curve"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp scene/3d/light.cpp
+#: scene/resources/particles_material.cpp
msgid "Angle"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+msgid "Angle Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Angle Curve"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#, fuzzy
+msgid "Scale Amount"
+msgstr "Mag-insert ng Key dito"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+msgid "Scale Amount Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+msgid "Scale Amount Curve"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
msgid "Color Ramp"
msgstr ""
@@ -18287,6 +19533,44 @@ msgstr ""
msgid "Hue Variation"
msgstr "Pagulit ng Animation"
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Variation"
+msgstr "Pagulit ng Animation"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Variation Random"
+msgstr "Pagulit ng Animation"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Variation Curve"
+msgstr "Pagulit ng Animation"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Speed Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Speed Curve"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Offset Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Offset Curve"
+msgstr ""
+
#: scene/2d/joints_2d.cpp
msgid "Node A and Node B must be PhysicsBody2Ds"
msgstr ""
@@ -18318,6 +19602,7 @@ msgid "Node B"
msgstr "Burahin ang (mga) Napiling Key"
#: scene/2d/joints_2d.cpp scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp
+#: scene/3d/light.cpp scene/3d/physics_joint.cpp
#: scene/resources/environment.cpp
msgid "Bias"
msgstr ""
@@ -18326,7 +19611,7 @@ msgstr ""
msgid "Disable Collision"
msgstr ""
-#: scene/2d/joints_2d.cpp
+#: scene/2d/joints_2d.cpp scene/3d/physics_joint.cpp
msgid "Softness"
msgstr ""
@@ -18343,7 +19628,7 @@ msgstr ""
msgid "Rest Length"
msgstr ""
-#: scene/2d/joints_2d.cpp scene/3d/vehicle_body.cpp
+#: scene/2d/joints_2d.cpp scene/3d/physics_joint.cpp scene/3d/vehicle_body.cpp
msgid "Stiffness"
msgstr ""
@@ -18363,7 +19648,7 @@ msgid "Texture Scale"
msgstr ""
#: scene/2d/light_2d.cpp scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp
-#: scene/resources/environment.cpp scene/resources/sky.cpp
+#: scene/3d/light.cpp scene/resources/environment.cpp scene/resources/sky.cpp
msgid "Energy"
msgstr ""
@@ -18400,11 +19685,6 @@ msgstr "Pahina: "
msgid "Gradient Length"
msgstr ""
-#: scene/2d/light_2d.cpp scene/gui/control.cpp
-#: scene/resources/navigation_mesh.cpp
-msgid "Filter"
-msgstr ""
-
#: scene/2d/light_2d.cpp
msgid "Filter Smooth"
msgstr ""
@@ -18784,10 +20064,6 @@ msgid "Applied Forces"
msgstr ""
#: scene/2d/physics_body_2d.cpp
-msgid "Force"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp
msgid "Torque"
msgstr ""
@@ -18800,7 +20076,7 @@ msgid "Sync To Physics"
msgstr ""
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-msgid "Moving platform"
+msgid "Moving Platform"
msgstr ""
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
@@ -18809,7 +20085,7 @@ msgstr ""
#: scene/2d/physics_body_2d.cpp scene/2d/touch_screen_button.cpp
#: scene/3d/physics_body.cpp scene/gui/texture_button.cpp
-#: scene/resources/line_shape_2d.cpp
+#: scene/resources/line_shape_2d.cpp scene/resources/material.cpp
msgid "Normal"
msgstr ""
@@ -19019,6 +20295,31 @@ msgid ""
"as parent."
msgstr ""
+#: scene/2d/visibility_notifier_2d.cpp scene/3d/visibility_notifier.cpp
+#, fuzzy
+msgid "Pause Animations"
+msgstr "Pagulit ng Animation"
+
+#: scene/2d/visibility_notifier_2d.cpp scene/3d/visibility_notifier.cpp
+msgid "Freeze Bodies"
+msgstr ""
+
+#: scene/2d/visibility_notifier_2d.cpp
+msgid "Pause Particles"
+msgstr ""
+
+#: scene/2d/visibility_notifier_2d.cpp
+msgid "Pause Animated Sprites"
+msgstr ""
+
+#: scene/2d/visibility_notifier_2d.cpp
+msgid "Process Parent"
+msgstr ""
+
+#: scene/2d/visibility_notifier_2d.cpp
+msgid "Physics Process Parent"
+msgstr ""
+
#: scene/3d/area.cpp
msgid "Reverb Bus"
msgstr ""
@@ -19109,6 +20410,7 @@ msgid "Attenuation Filter"
msgstr ""
#: scene/3d/audio_stream_player_3d.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
#: servers/audio/effects/audio_effect_filter.cpp
msgid "Cutoff Hz"
msgstr ""
@@ -19151,10 +20453,6 @@ msgid "Octree"
msgstr ""
#: scene/3d/baked_lightmap.cpp
-msgid "User Data"
-msgstr ""
-
-#: scene/3d/baked_lightmap.cpp
msgid "Finding meshes and lights"
msgstr ""
@@ -19394,6 +20692,14 @@ msgid "Ring Axis"
msgstr "Mga Babala"
#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
+msgid "Rotate Y"
+msgstr ""
+
+#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
+msgid "Disable Z"
+msgstr ""
+
+#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
msgid "Flatness"
msgstr ""
@@ -19429,15 +20735,11 @@ msgstr ""
msgid "Dynamic Range"
msgstr ""
-#: scene/3d/gi_probe.cpp
+#: scene/3d/gi_probe.cpp scene/3d/light.cpp
msgid "Normal Bias"
msgstr ""
#: scene/3d/gi_probe.cpp
-msgid "Compress"
-msgstr ""
-
-#: scene/3d/gi_probe.cpp
msgid "Plotting Meshes"
msgstr ""
@@ -19463,14 +20765,26 @@ msgid "Subdiv"
msgstr ""
#: scene/3d/light.cpp
+msgid "Indirect Energy"
+msgstr ""
+
+#: scene/3d/light.cpp
msgid "Negative"
msgstr ""
#: scene/3d/light.cpp
+msgid "Specular"
+msgstr ""
+
+#: scene/3d/light.cpp
msgid "Bake Mode"
msgstr ""
#: scene/3d/light.cpp
+msgid "Contact"
+msgstr ""
+
+#: scene/3d/light.cpp
msgid "Reverse Cull Face"
msgstr ""
@@ -19479,10 +20793,26 @@ msgid "Directional Shadow"
msgstr ""
#: scene/3d/light.cpp
+msgid "Split 1"
+msgstr ""
+
+#: scene/3d/light.cpp
+msgid "Split 2"
+msgstr ""
+
+#: scene/3d/light.cpp
+msgid "Split 3"
+msgstr ""
+
+#: scene/3d/light.cpp
msgid "Blend Splits"
msgstr ""
#: scene/3d/light.cpp
+msgid "Bias Split Scale"
+msgstr ""
+
+#: scene/3d/light.cpp
#, fuzzy
msgid "Depth Range"
msgstr "Baguhin"
@@ -19508,6 +20838,11 @@ msgstr ""
msgid "Spot"
msgstr ""
+#: scene/3d/light.cpp
+#, fuzzy
+msgid "Angle Attenuation"
+msgstr "Pagulit ng Animation"
+
#: scene/3d/mesh_instance.cpp
msgid "Software Skinning"
msgstr ""
@@ -19625,6 +20960,57 @@ msgid "Axis Lock"
msgstr ""
#: scene/3d/physics_body.cpp
+msgid "Linear X"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Linear Y"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Linear Z"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Angular X"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Angular Y"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Angular Z"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Motion X"
+msgstr "Pagulit ng Animation"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Motion Y"
+msgstr "Pagulit ng Animation"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Motion Z"
+msgstr "Pagulit ng Animation"
+
+#: scene/3d/physics_body.cpp
+msgid "Move Lock X"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Move Lock Y"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Move Lock Z"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
msgid "Body Offset"
msgstr ""
@@ -19657,6 +21043,14 @@ msgid "Exclude Nodes"
msgstr ""
#: scene/3d/physics_joint.cpp
+msgid "Params"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Impulse Clamp"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit"
msgstr ""
@@ -19668,6 +21062,50 @@ msgstr ""
msgid "Lower"
msgstr ""
+#: scene/3d/physics_joint.cpp scene/3d/vehicle_body.cpp
+#, fuzzy
+msgid "Relaxation"
+msgstr "Mga Functions:"
+
+#: scene/3d/physics_joint.cpp
+msgid "Motor"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Target Velocity"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Max Impulse"
+msgstr "Halaga:"
+
+#: scene/3d/physics_joint.cpp
+msgid "Linear Limit"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Upper Distance"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Lower Distance"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Restitution"
+msgstr "Paglalarawan"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motion"
+msgstr "Pagulit ng Animation"
+
+#: scene/3d/physics_joint.cpp
+msgid "Linear Ortho"
+msgstr ""
+
#: scene/3d/physics_joint.cpp
msgid "Upper Angle"
msgstr ""
@@ -19677,6 +21115,15 @@ msgid "Lower Angle"
msgstr ""
#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Angular Motion"
+msgstr "Pagulit ng Animation"
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Ortho"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
msgid "Swing Span"
msgstr ""
@@ -19685,17 +21132,89 @@ msgid "Twist Span"
msgstr ""
#: scene/3d/physics_joint.cpp
+msgid "Linear Limit X"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Linear Motor X"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Force Limit"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Linear Spring X"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Equilibrium Point"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit X"
msgstr ""
#: scene/3d/physics_joint.cpp
+msgid "Erp"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Motor X"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Spring X"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Linear Limit Y"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Linear Motor Y"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Linear Spring Y"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit Y"
msgstr ""
#: scene/3d/physics_joint.cpp
+msgid "Angular Motor Y"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Spring Y"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Linear Limit Z"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Linear Motor Z"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Linear Spring Z"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit Z"
msgstr ""
+#: scene/3d/physics_joint.cpp
+msgid "Angular Motor Z"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Spring Z"
+msgstr ""
+
#: scene/3d/portal.cpp
msgid "The RoomManager should not be a child or grandchild of a Portal."
msgstr ""
@@ -19801,7 +21320,7 @@ msgstr ""
msgid "Use Default Simplify"
msgstr ""
-#: scene/3d/room.cpp
+#: scene/3d/room.cpp scene/3d/room_manager.cpp
msgid "Room Simplify"
msgstr ""
@@ -19839,6 +21358,12 @@ msgstr ""
msgid "Main"
msgstr ""
+#: scene/3d/room_manager.cpp scene/animation/animation_player.cpp
+#: scene/animation/animation_tree.cpp scene/animation/animation_tree_player.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+msgid "Active"
+msgstr ""
+
#: scene/3d/room_manager.cpp
msgid "Roomlist"
msgstr ""
@@ -19861,6 +21386,47 @@ msgid "Gameplay"
msgstr ""
#: scene/3d/room_manager.cpp
+msgid "Gameplay Monitor"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "Use Secondary PVS"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "Merge Meshes"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "Show Margins"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "Debug Sprawl"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "Overlap Warning Threshold"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Preview Camera"
+msgstr "Idagdag Ang Bezier Point"
+
+#: scene/3d/room_manager.cpp
+msgid "Portal Depth Limit"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "Default Portal Margin"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "Roaming Expansion Margin"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
msgid ""
"RoomList path is invalid.\n"
"Please check the RoomList branch has been assigned in the RoomManager."
@@ -19979,6 +21545,19 @@ msgstr ""
msgid "Billboard"
msgstr ""
+#: scene/3d/sprite_3d.cpp scene/resources/material.cpp
+#, fuzzy
+msgid "Transparent"
+msgstr "Pagulit ng Animation"
+
+#: scene/3d/sprite_3d.cpp
+msgid "Shaded"
+msgstr ""
+
+#: scene/3d/sprite_3d.cpp
+msgid "Double Sided"
+msgstr ""
+
#: scene/3d/sprite_3d.cpp
msgid "Alpha Cut"
msgstr ""
@@ -20045,11 +21624,6 @@ msgstr ""
msgid "Max Force"
msgstr "Salamin"
-#: scene/3d/vehicle_body.cpp
-#, fuzzy
-msgid "Relaxation"
-msgstr "Mga Functions:"
-
#: scene/3d/visibility_notifier.cpp
msgid "AABB"
msgstr ""
@@ -20173,7 +21747,7 @@ msgid "Fadeout Time"
msgstr ""
#: scene/animation/animation_blend_tree.cpp
-msgid "autorestart_"
+msgid "Auto Restart"
msgstr ""
#: scene/animation/animation_blend_tree.cpp
@@ -20251,12 +21825,6 @@ msgstr ""
msgid "Default Blend Time"
msgstr ""
-#: scene/animation/animation_player.cpp scene/animation/animation_tree.cpp
-#: scene/animation/animation_tree_player.cpp
-#: servers/audio/effects/audio_effect_delay.cpp
-msgid "Active"
-msgstr ""
-
#: scene/animation/animation_player.cpp
msgid "Method Call Mode"
msgstr ""
@@ -20368,10 +21936,6 @@ msgstr ""
msgid "Max Iterations"
msgstr "Mga Functions:"
-#: scene/animation/tween.cpp scene/resources/texture.cpp
-msgid "Repeat"
-msgstr ""
-
#: scene/animation/tween.cpp
msgid "Playback Process Mode"
msgstr ""
@@ -20398,19 +21962,6 @@ msgstr ""
msgid "Alignment"
msgstr ""
-#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
-#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
-#: scene/resources/style_box.cpp
-#, fuzzy
-msgid "Horizontal"
-msgstr "Ilipat Ang Mga Bezier Points"
-
-#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
-#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
-#: scene/resources/style_box.cpp
-msgid "Vertical"
-msgstr ""
-
#: scene/gui/base_button.cpp
msgid "Shortcut In Tooltip"
msgstr ""
@@ -20497,10 +22048,6 @@ msgid "HSV"
msgstr ""
#: scene/gui/color_picker.cpp
-msgid "Raw"
-msgstr ""
-
-#: scene/gui/color_picker.cpp
msgid "Switch between hexadecimal and code values."
msgstr ""
@@ -20554,6 +22101,30 @@ msgid "Focus"
msgstr ""
#: scene/gui/control.cpp
+msgid "Neighbour Left"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Neighbour Top"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Neighbour Right"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Neighbour Bottom"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Next"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Previous"
+msgstr ""
+
+#: scene/gui/control.cpp
msgid "Mouse"
msgstr ""
@@ -20586,7 +22157,7 @@ msgid "Dialog"
msgstr ""
#: scene/gui/dialogs.cpp
-msgid "Hide On Ok"
+msgid "Hide On OK"
msgstr ""
#: scene/gui/dialogs.cpp scene/gui/label.cpp
@@ -20676,7 +22247,7 @@ msgid "Timers"
msgstr "Oras:"
#: scene/gui/item_list.cpp scene/gui/popup_menu.cpp scene/gui/tree.cpp
-msgid "Incremental Search Max Interval (msec)"
+msgid "Incremental Search Max Interval Msec"
msgstr ""
#: scene/gui/item_list.cpp scene/gui/tree.cpp
@@ -21187,6 +22758,22 @@ msgstr ""
msgid "Nine Patch Stretch"
msgstr ""
+#: scene/gui/texture_progress.cpp
+msgid "Stretch Margin Left"
+msgstr ""
+
+#: scene/gui/texture_progress.cpp
+msgid "Stretch Margin Top"
+msgstr ""
+
+#: scene/gui/texture_progress.cpp
+msgid "Stretch Margin Right"
+msgstr ""
+
+#: scene/gui/texture_progress.cpp
+msgid "Stretch Margin Bottom"
+msgstr ""
+
#: scene/gui/tree.cpp
msgid "Custom Minimum Height"
msgstr ""
@@ -21221,8 +22808,9 @@ msgid "Paused"
msgstr ""
#: scene/gui/video_player.cpp
-msgid "Buffering (msec)"
-msgstr ""
+#, fuzzy
+msgid "Buffering Msec"
+msgstr "Pahina: "
#: scene/gui/video_player.cpp
msgid "Stream Position"
@@ -21531,6 +23119,22 @@ msgid "Shadow Atlas"
msgstr ""
#: scene/main/viewport.cpp
+msgid "Quad 0"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 1"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 2"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 3"
+msgstr ""
+
+#: scene/main/viewport.cpp
#, fuzzy
msgid "Canvas Transform"
msgstr "3D Transform Track"
@@ -21545,6 +23149,10 @@ msgid "Tooltip Delay (sec)"
msgstr ""
#: scene/register_scene_types.cpp
+msgid "Swap OK Cancel"
+msgstr ""
+
+#: scene/register_scene_types.cpp
msgid "Use hiDPI"
msgstr ""
@@ -21557,18 +23165,6 @@ msgid "Custom Font"
msgstr ""
#: scene/resources/audio_stream_sample.cpp
-msgid "Loop Mode"
-msgstr ""
-
-#: scene/resources/audio_stream_sample.cpp
-msgid "Loop Begin"
-msgstr ""
-
-#: scene/resources/audio_stream_sample.cpp
-msgid "Loop End"
-msgstr ""
-
-#: scene/resources/audio_stream_sample.cpp
#: servers/audio/effects/audio_stream_generator.cpp servers/audio_server.cpp
msgid "Mix Rate"
msgstr ""
@@ -21619,6 +23215,15 @@ msgid "Extra Spacing"
msgstr ""
#: scene/resources/dynamic_font.cpp
+msgid "Char"
+msgstr ""
+
+#: scene/resources/dynamic_font.cpp scene/resources/world.cpp
+#: scene/resources/world_2d.cpp
+msgid "Space"
+msgstr ""
+
+#: scene/resources/dynamic_font.cpp
msgid "Font"
msgstr ""
@@ -21819,6 +23424,42 @@ msgid "Glow"
msgstr ""
#: scene/resources/environment.cpp
+msgid "Levels"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "1"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "2"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "3"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "4"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "5"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "6"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "7"
+msgstr ""
+
+#: scene/resources/environment.cpp
msgid "Bloom"
msgstr ""
@@ -21903,9 +23544,65 @@ msgid "Next Pass"
msgstr ""
#: scene/resources/material.cpp
+msgid "Use Shadow To Opacity"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Unshaded"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Vertex Lighting"
+msgstr "Maglipat ng (mga) Bezier Point"
+
+#: scene/resources/material.cpp
+msgid "No Depth Test"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Use Point Size"
+msgstr "Idagdag Ang Bezier Point"
+
+#: scene/resources/material.cpp
+msgid "World Triplanar"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Fixed Size"
+msgstr "Pahina: "
+
+#: scene/resources/material.cpp
+msgid "Albedo Tex Force sRGB"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Do Not Receive Shadows"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Disable Ambient Light"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Ensure Correct Normals"
+msgstr "3D Transform Track"
+
+#: scene/resources/material.cpp
msgid "Vertex Color"
msgstr ""
+#: scene/resources/material.cpp
+msgid "Use As Albedo"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Is sRGB"
+msgstr ""
+
#: scene/resources/material.cpp servers/visual_server.cpp
msgid "Parameters"
msgstr ""
@@ -21936,6 +23633,10 @@ msgid "Billboard Mode"
msgstr ""
#: scene/resources/material.cpp
+msgid "Billboard Keep Scale"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Grow"
msgstr ""
@@ -21945,6 +23646,10 @@ msgid "Grow Amount"
msgstr "Ilipat Ang Mga Bezier Points"
#: scene/resources/material.cpp
+msgid "Use Alpha Scissor"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Alpha Scissor Threshold"
msgstr ""
@@ -21973,10 +23678,18 @@ msgid "Metallic Specular"
msgstr ""
#: scene/resources/material.cpp
+msgid "Metallic Texture"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Metallic Texture Channel"
msgstr ""
#: scene/resources/material.cpp
+msgid "Roughness Texture"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Roughness Texture Channel"
msgstr ""
@@ -21993,6 +23706,14 @@ msgid "Emission Operator"
msgstr ""
#: scene/resources/material.cpp
+msgid "Emission On UV2"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Emission Texture"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "NormalMap"
msgstr ""
@@ -22005,6 +23726,10 @@ msgid "Rim Tint"
msgstr ""
#: scene/resources/material.cpp
+msgid "Rim Texture"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Clearcoat"
msgstr ""
@@ -22013,14 +23738,26 @@ msgid "Clearcoat Gloss"
msgstr ""
#: scene/resources/material.cpp
+msgid "Clearcoat Texture"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Anisotropy"
msgstr ""
#: scene/resources/material.cpp
+msgid "Anisotropy Flowmap"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Ambient Occlusion"
msgstr ""
#: scene/resources/material.cpp
+msgid "On UV2"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Texture Channel"
msgstr ""
@@ -22055,6 +23792,11 @@ msgid "Transmission"
msgstr ""
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Transmission Texture"
+msgstr "Pagulit ng Animation"
+
+#: scene/resources/material.cpp
msgid "Refraction"
msgstr ""
@@ -22071,6 +23813,10 @@ msgid "UV1"
msgstr ""
#: scene/resources/material.cpp
+msgid "Triplanar"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Triplanar Sharpness"
msgstr ""
@@ -22264,6 +24010,14 @@ msgstr ""
msgid "Point Count"
msgstr "Idagdag Ang Bezier Point"
+#: scene/resources/particles_material.cpp
+msgid "Scale Random"
+msgstr ""
+
+#: scene/resources/particles_material.cpp
+msgid "Scale Curve"
+msgstr ""
+
#: scene/resources/physics_material.cpp
msgid "Rough"
msgstr ""
@@ -22321,10 +24075,6 @@ msgid "A"
msgstr ""
#: scene/resources/shader.cpp
-msgid "Code"
-msgstr ""
-
-#: scene/resources/shader.cpp
msgid "Custom Defines"
msgstr ""
@@ -22412,14 +24162,6 @@ msgid "Grow End"
msgstr ""
#: scene/resources/texture.cpp
-msgid "Storage"
-msgstr ""
-
-#: scene/resources/texture.cpp
-msgid "Lossy Quality"
-msgstr ""
-
-#: scene/resources/texture.cpp
msgid "Load Path"
msgstr ""
@@ -22532,10 +24274,6 @@ msgstr ""
msgid "Fallback Environment"
msgstr ""
-#: scene/resources/world.cpp scene/resources/world_2d.cpp
-msgid "Space"
-msgstr ""
-
#: scene/resources/world.cpp
msgid "Scenario"
msgstr ""
@@ -22609,8 +24347,33 @@ msgstr ""
msgid "Wet"
msgstr ""
-#: servers/audio/effects/audio_effect_compressor.cpp
-msgid "Threshold"
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "Voice"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+msgid "Delay (ms)"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_phaser.cpp
+msgid "Rate Hz"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "Depth (ms)"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+msgid "Level dB"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+#: servers/audio/effects/audio_effect_panner.cpp
+msgid "Pan"
msgstr ""
#: servers/audio/effects/audio_effect_compressor.cpp
@@ -22635,19 +24398,6 @@ msgid "Tap 1"
msgstr ""
#: servers/audio/effects/audio_effect_delay.cpp
-msgid "Delay (ms)"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_delay.cpp
-msgid "Level dB"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_delay.cpp
-#: servers/audio/effects/audio_effect_panner.cpp
-msgid "Pan"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_delay.cpp
msgid "Tap 2"
msgstr ""
@@ -22705,10 +24455,6 @@ msgstr ""
msgid "Range Max Hz"
msgstr ""
-#: servers/audio/effects/audio_effect_phaser.cpp
-msgid "Rate Hz"
-msgstr ""
-
#: servers/audio/effects/audio_effect_pitch_shift.cpp
msgid "Oversampling"
msgstr ""
@@ -22723,7 +24469,7 @@ msgid "Predelay"
msgstr ""
#: servers/audio/effects/audio_effect_reverb.cpp
-msgid "(msec)"
+msgid "Msec"
msgstr ""
#: servers/audio/effects/audio_effect_reverb.cpp
diff --git a/editor/translations/fr.po b/editor/translations/fr.po
index 0865df5dac..87c471678f 100644
--- a/editor/translations/fr.po
+++ b/editor/translations/fr.po
@@ -90,13 +90,15 @@
# MinusKube <minuskube@gmail.com>, 2022.
# Alexandre <alexandre.blanquero00@gmail.com>, 2022.
# Erwan Loisant <erwan@loisant.com>, 2022.
+# SmolBabby <loicboiteux4@gmail.com>, 2022.
+# Maxim Lopez <maxim.lopez.02@gmail.com>, 2022.
msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
"Report-Msgid-Bugs-To: https://github.com/godotengine/godot\n"
"POT-Creation-Date: \n"
-"PO-Revision-Date: 2022-03-13 22:12+0000\n"
-"Last-Translator: Erwan Loisant <erwan@loisant.com>\n"
+"PO-Revision-Date: 2022-03-28 23:07+0000\n"
+"Last-Translator: Maxim Lopez <maxim.lopez.02@gmail.com>\n"
"Language-Team: French <https://hosted.weblate.org/projects/godot-engine/"
"godot/fr/>\n"
"Language: fr\n"
@@ -106,36 +108,33 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=n > 1;\n"
"X-Generator: Weblate 4.12-dev\n"
-#: core/bind/core_bind.cpp
+#: core/bind/core_bind.cpp main/main.cpp
msgid "Tablet Driver"
msgstr ""
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Clipboard"
-msgstr "Le presse-papiers est vide !"
+msgstr "Presse-papiers"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Current Screen"
-msgstr "Scène actuelle"
+msgstr "Écran actuel"
#: core/bind/core_bind.cpp
msgid "Exit Code"
-msgstr ""
+msgstr "Code de sortie"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "V-Sync Enabled"
-msgstr "Activer"
+msgstr "V-Sync activé"
#: core/bind/core_bind.cpp main/main.cpp
msgid "V-Sync Via Compositor"
-msgstr ""
+msgstr "V-Sync via le compositeur"
#: core/bind/core_bind.cpp main/main.cpp
msgid "Delta Smoothing"
-msgstr ""
+msgstr "Lissage Delta"
#: core/bind/core_bind.cpp
#, fuzzy
@@ -196,8 +195,9 @@ msgstr "Initialiser"
#: core/bind/core_bind.cpp main/main.cpp scene/gui/dialogs.cpp
#: scene/gui/graph_node.cpp
+#, fuzzy
msgid "Resizable"
-msgstr ""
+msgstr "Reajustable"
#: core/bind/core_bind.cpp core/os/input_event.cpp scene/2d/node_2d.cpp
#: scene/2d/physics_body_2d.cpp scene/2d/remote_transform_2d.cpp
@@ -210,8 +210,8 @@ msgstr "Position du dock"
#: core/bind/core_bind.cpp editor/editor_settings.cpp main/main.cpp
#: modules/gdscript/gdscript_editor.cpp modules/gridmap/grid_map.cpp
#: modules/mono/csharp_script.cpp modules/visual_script/visual_script_nodes.cpp
-#: scene/2d/tile_map.cpp scene/3d/camera.cpp scene/gui/control.cpp
-#: scene/gui/graph_edit.cpp scene/main/viewport.cpp
+#: scene/2d/tile_map.cpp scene/3d/camera.cpp scene/3d/light.cpp
+#: scene/gui/control.cpp scene/gui/graph_edit.cpp scene/main/viewport.cpp
#: scene/resources/dynamic_font.cpp scene/resources/navigation_mesh.cpp
#: scene/resources/primitive_meshes.cpp scene/resources/sky.cpp
#: scene/resources/style_box.cpp scene/resources/texture.cpp
@@ -274,7 +274,7 @@ msgstr "Résultats de recherche"
#: core/command_queue_mt.cpp core/message_queue.cpp main/main.cpp
msgid "Memory"
-msgstr ""
+msgstr "Mémoire"
#: core/command_queue_mt.cpp core/message_queue.cpp
#: core/register_core_types.cpp drivers/gles2/rasterizer_canvas_base_gles2.cpp
@@ -284,7 +284,7 @@ msgstr ""
#: drivers/gles3/rasterizer_storage_gles3.cpp main/main.cpp
#: servers/visual_server.cpp
msgid "Limits"
-msgstr ""
+msgstr "Limites"
#: core/command_queue_mt.cpp
#, fuzzy
@@ -310,13 +310,11 @@ msgstr "Fonction"
#: scene/resources/audio_stream_sample.cpp scene/resources/bit_map.cpp
#: scene/resources/concave_polygon_shape.cpp scene/resources/curve.cpp
#: scene/resources/polygon_path_finder.cpp scene/resources/texture.cpp
-#, fuzzy
msgid "Data"
-msgstr "Avec données"
+msgstr "Données"
#: core/io/file_access_network.cpp core/register_core_types.cpp
-#: editor/editor_settings.cpp editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp main/main.cpp
+#: editor/editor_settings.cpp main/main.cpp
#: modules/gdscript/language_server/gdscript_language_server.cpp
#, fuzzy
msgid "Network"
@@ -463,7 +461,7 @@ msgstr "Lors de l’appel à '%s' :"
#: core/math/random_number_generator.cpp
#: modules/opensimplex/open_simplex_noise.cpp
msgid "Seed"
-msgstr ""
+msgstr "Graine"
#: core/math/random_number_generator.cpp
#, fuzzy
@@ -476,7 +474,7 @@ msgstr ""
#: core/message_queue.cpp
msgid "Max Size (KB)"
-msgstr ""
+msgstr "Taille Maximale (KB)"
#: core/os/input.cpp editor/editor_help.cpp editor/editor_settings.cpp
#: editor/plugins/script_editor_plugin.cpp
@@ -488,9 +486,8 @@ msgstr ""
#: modules/mono/csharp_script.cpp scene/animation/animation_player.cpp
#: scene/gui/control.cpp scene/gui/line_edit.cpp scene/main/node.cpp
#: scene/resources/material.cpp
-#, fuzzy
msgid "Text Editor"
-msgstr "Ouvrir l'éditeur"
+msgstr "Éditeur de texte"
#: core/os/input.cpp editor/editor_settings.cpp
#: editor/plugins/script_text_editor.cpp modules/gdscript/gdscript.cpp
@@ -557,7 +554,7 @@ msgstr "Touche physique"
#: core/os/input_event.cpp
msgid "Unicode"
-msgstr ""
+msgstr "Unicode"
#: core/os/input_event.cpp
msgid "Echo"
@@ -601,9 +598,10 @@ msgstr "Préréglage"
msgid "Relative"
msgstr "Alignement relatif"
-#: core/os/input_event.cpp scene/2d/camera_2d.cpp
-#: scene/3d/interpolated_camera.cpp scene/animation/animation_player.cpp
-#: scene/resources/environment.cpp
+#: core/os/input_event.cpp scene/2d/camera_2d.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/interpolated_camera.cpp
+#: scene/animation/animation_player.cpp scene/resources/environment.cpp
+#: scene/resources/particles_material.cpp
#, fuzzy
msgid "Speed"
msgstr "Vitesse :"
@@ -653,8 +651,9 @@ msgstr "Message du commit"
msgid "Pitch"
msgstr "Tangage :"
-#: core/os/input_event.cpp scene/2d/physics_body_2d.cpp
-#: scene/3d/physics_body.cpp
+#: core/os/input_event.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/physics_body_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/3d/physics_body.cpp scene/resources/particles_material.cpp
#, fuzzy
msgid "Velocity"
msgstr "Vue de l'orbite vers la droite"
@@ -673,6 +672,8 @@ msgid "Controller Value"
msgstr ""
#: core/project_settings.cpp editor/editor_node.cpp main/main.cpp
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/windows/export/export.cpp
#, fuzzy
msgid "Application"
msgstr "Action"
@@ -691,13 +692,16 @@ msgstr "Paramètres du projet..."
#: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp
#: editor/editor_plugin_settings.cpp editor/editor_profiler.cpp
#: editor/project_manager.cpp editor/settings_config_dialog.cpp
-#: modules/gdnative/nativescript/nativescript.cpp scene/2d/area_2d.cpp
-#: scene/3d/area.cpp scene/main/node.cpp
+#: modules/gdnative/nativescript/nativescript.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/osx/export/export.cpp scene/2d/area_2d.cpp scene/3d/area.cpp
+#: scene/main/node.cpp
msgid "Name"
msgstr "Nom"
#: core/project_settings.cpp editor/editor_help.cpp
-#: modules/visual_script/visual_script_nodes.cpp
+#: modules/visual_script/visual_script_nodes.cpp platform/uwp/export/export.cpp
+#: platform/windows/export/export.cpp
msgid "Description"
msgstr "Description"
@@ -735,7 +739,7 @@ msgid "Custom User Dir Name"
msgstr ""
#: core/project_settings.cpp editor/animation_track_editor.cpp
-#: editor/editor_audio_buses.cpp servers/audio_server.cpp
+#: editor/editor_audio_buses.cpp main/main.cpp servers/audio_server.cpp
msgid "Audio"
msgstr "Audio"
@@ -903,10 +907,13 @@ msgstr "Filtres :"
msgid "Sharpen Intensity"
msgstr ""
-#: core/project_settings.cpp editor/editor_node.cpp editor/editor_settings.cpp
-#: editor/plugins/script_editor_plugin.cpp editor/project_export.cpp
-#: main/main.cpp modules/gdscript/gdscript.cpp
-#: modules/visual_script/visual_script.cpp scene/3d/room_manager.cpp
+#: core/project_settings.cpp editor/editor_export.cpp editor/editor_node.cpp
+#: editor/editor_settings.cpp editor/plugins/script_editor_plugin.cpp
+#: editor/project_export.cpp main/main.cpp modules/gdscript/gdscript.cpp
+#: modules/visual_script/visual_script.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp scene/3d/room_manager.cpp
#: scene/main/scene_tree.cpp scene/resources/shape_2d.cpp
#: servers/visual_server.cpp
msgid "Debug"
@@ -1142,6 +1149,7 @@ msgid "Subsurface Scattering"
msgstr ""
#: drivers/gles3/rasterizer_scene_gles3.cpp
+#: editor/import/resource_importer_texture.cpp
#: editor/plugins/spatial_editor_plugin.cpp modules/gltf/gltf_node.cpp
#: modules/gridmap/grid_map.cpp scene/2d/cpu_particles_2d.cpp
#: scene/2d/node_2d.cpp scene/2d/parallax_layer.cpp scene/2d/polygon_2d.cpp
@@ -1439,6 +1447,7 @@ msgid "Editors"
msgstr "Éditeur"
#: editor/animation_track_editor.cpp editor/editor_settings.cpp
+#: editor/import/resource_importer_scene.cpp
#: editor/plugins/animation_player_editor_plugin.cpp editor/scene_tree_dock.cpp
#: scene/2d/animated_sprite.cpp scene/2d/cpu_particles_2d.cpp
#: scene/2d/sprite.cpp scene/3d/cpu_particles.cpp scene/3d/sprite_3d.cpp
@@ -1679,14 +1688,14 @@ msgstr "Valeur du pas d'animation."
msgid "Seconds"
msgstr "Secondes"
-#: editor/animation_track_editor.cpp
+#: editor/animation_track_editor.cpp editor/import/resource_importer_scene.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp main/main.cpp
#: scene/resources/texture.cpp
msgid "FPS"
msgstr "IPS"
#: editor/animation_track_editor.cpp editor/editor_plugin_settings.cpp
-#: editor/editor_resource_picker.cpp
+#: editor/editor_resource_picker.cpp editor/import/resource_importer_wav.cpp
#: editor/plugins/polygon_2d_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
@@ -2656,7 +2665,9 @@ msgid "Remove Autoload"
msgstr "Supprimer l'AutoLoad"
#: editor/editor_autoload_settings.cpp editor/editor_plugin_settings.cpp
-#: modules/gdscript/gdscript.cpp scene/2d/polygon_2d.cpp scene/3d/area.cpp
+#: modules/gdscript/gdscript.cpp platform/android/export/export_plugin.cpp
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#: scene/2d/polygon_2d.cpp scene/3d/area.cpp scene/3d/physics_joint.cpp
#: scene/3d/reflection_probe.cpp scene/main/canvas_layer.cpp
#: scene/resources/material.cpp servers/visual_server.cpp
msgid "Enable"
@@ -2827,6 +2838,59 @@ msgstr ""
#: editor/editor_export.cpp platform/android/export/export_plugin.cpp
#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Custom Template"
+msgstr "Thème de l'éditeur"
+
+#: editor/editor_export.cpp editor/project_export.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp
+msgid "Release"
+msgstr "Publication (release)"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Binary Format"
+msgstr "Opérateur de couleur."
+
+#: editor/editor_export.cpp
+msgid "64 Bits"
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Embed PCK"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Texture Format"
+msgstr "RegionDeTexture"
+
+#: editor/editor_export.cpp
+msgid "BPTC"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "S3TC"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "ETC"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "ETC2"
+msgstr ""
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "No BPTC Fallbacks"
+msgstr "Forcer les replis du shader"
+
+#: editor/editor_export.cpp platform/android/export/export_plugin.cpp
+#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
msgid "Custom debug template not found."
msgstr "Modèle de débogage personnalisé introuvable."
@@ -3011,6 +3075,7 @@ msgid "Make Current"
msgstr "Rendre actuel"
#: editor/editor_feature_profile.cpp editor/editor_node.cpp
+#: editor/import/resource_importer_scene.cpp
#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
msgid "Import"
msgstr "Importation"
@@ -3140,8 +3205,11 @@ msgstr "Ça marche !"
msgid "Display Mode"
msgstr "Mode d'exécution :"
-#: editor/editor_file_dialog.cpp main/main.cpp modules/csg/csg_shape.cpp
-#: modules/visual_script/visual_script_nodes.cpp
+#: editor/editor_file_dialog.cpp
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+#: editor/import/resource_importer_wav.cpp main/main.cpp
+#: modules/csg/csg_shape.cpp modules/visual_script/visual_script_nodes.cpp
#: modules/visual_script/visual_script_yield_nodes.cpp scene/2d/light_2d.cpp
#: scene/2d/physics_body_2d.cpp scene/2d/tile_map.cpp
#: scene/3d/baked_lightmap.cpp scene/3d/light.cpp scene/3d/physics_body.cpp
@@ -3280,7 +3348,9 @@ msgstr "Ré-importation des assets"
msgid "Reimport Missing Imported Files"
msgstr ""
-#: editor/editor_help.cpp
+#: editor/editor_help.cpp scene/2d/camera_2d.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/resources/dynamic_font.cpp
+#: scene/resources/style_box.cpp
msgid "Top"
msgstr "Dessus"
@@ -3332,6 +3402,7 @@ msgid "Fonts"
msgstr "Polices"
#: editor/editor_help.cpp editor/plugins/theme_editor_plugin.cpp
+#: platform/iphone/export/export.cpp
msgid "Icons"
msgstr "Icônes"
@@ -3502,7 +3573,9 @@ msgstr ""
msgid "Pin value [Disabled because '%s' is editor-only]"
msgstr "Épingler la valeur [Désativé par '%s' n'est que dans l'éditeur]"
-#: editor/editor_inspector.cpp editor/scene_tree_dock.cpp
+#: editor/editor_inspector.cpp
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+#: editor/scene_tree_dock.cpp
#: modules/visual_script/visual_script_func_nodes.cpp
#: modules/visual_script/visual_script_nodes.cpp
#: modules/visual_script/visual_script_property_selector.cpp
@@ -3849,6 +3922,16 @@ msgid "Quick Open Script..."
msgstr "Ouvrir un script rapidement…"
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Save & Reload"
+msgstr "Enregistrer et redémarrer"
+
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Save changes to '%s' before reloading?"
+msgstr "Sauvegarder les modifications effectuées à « %s » avant de quitter ?"
+
+#: editor/editor_node.cpp
msgid "Save & Close"
msgstr "Enregistrer & fermer"
@@ -3965,6 +4048,13 @@ msgid "Open Project Manager?"
msgstr "Ouvrir le gestionnaire de projets ?"
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Save changes to the following scene(s) before reloading?"
+msgstr ""
+"Sauvegarder les modifications sur la (les) scène(s) suivante(s) avant de "
+"quitter ?"
+
+#: editor/editor_node.cpp
msgid "Save & Quit"
msgstr "Sauvegarder & quitter"
@@ -4249,8 +4339,8 @@ msgstr "Changements de matériau"
#: editor/editor_node.cpp
#, fuzzy
-msgid "Translate Properties"
-msgstr "Coller les propriétés"
+msgid "Localize Settings"
+msgstr "Localisation"
#: editor/editor_node.cpp
#, fuzzy
@@ -4267,8 +4357,8 @@ msgstr "Inspecteur"
#: editor/editor_node.cpp
#, fuzzy
-msgid "Capitalize Properties"
-msgstr "Coller les propriétés"
+msgid "Default Property Name Style"
+msgstr "Chemin du projet :"
#: editor/editor_node.cpp
msgid "Default Float Step"
@@ -4879,7 +4969,9 @@ msgstr "Extensions installées :"
msgid "Update"
msgstr "Mettre à jour"
-#: editor/editor_plugin_settings.cpp
+#: editor/editor_plugin_settings.cpp platform/android/export/export_plugin.cpp
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp
msgid "Version"
msgstr "Version"
@@ -5922,7 +6014,7 @@ msgstr "Rectangle complet"
msgid "Rect Custom Position"
msgstr "Définir la position de sortie de la courbe"
-#: editor/editor_settings.cpp
+#: editor/editor_settings.cpp platform/android/export/export_plugin.cpp
msgid "Screen"
msgstr ""
@@ -5949,6 +6041,19 @@ msgid "Editor SSL Certificates"
msgstr "Paramètres de l'éditeur"
#: editor/editor_settings.cpp
+msgid "HTTP Proxy"
+msgstr ""
+
+#: editor/editor_settings.cpp
+msgid "Host"
+msgstr ""
+
+#: editor/editor_settings.cpp editor/fileserver/editor_file_server.cpp
+#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp
+msgid "Port"
+msgstr ""
+
+#: editor/editor_settings.cpp
msgid "Project Manager"
msgstr "Gestionnaire de projets"
@@ -5991,7 +6096,8 @@ msgstr ""
msgid "String Color"
msgstr "Stockage du fichier :"
-#: editor/editor_settings.cpp
+#: editor/editor_settings.cpp platform/javascript/export/export.cpp
+#: platform/uwp/export/export.cpp
#, fuzzy
msgid "Background Color"
msgstr "Couleur de fond invalide."
@@ -6170,22 +6276,6 @@ msgid "Starting the download..."
msgstr "Démarrage du téléchargement…"
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "HTTP Proxy"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Host"
-msgstr ""
-
-#: editor/export_template_manager.cpp editor/fileserver/editor_file_server.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp main/main.cpp
-#: modules/mono/mono_gd/gd_mono.cpp
-msgid "Port"
-msgstr ""
-
-#: editor/export_template_manager.cpp
msgid "Error requesting URL:"
msgstr "Erreur lors de la demande de l’URL :"
@@ -6445,6 +6535,7 @@ msgstr ""
#: editor/fileserver/editor_file_server.cpp
#: editor/plugins/version_control_editor_plugin.cpp
+#: platform/uwp/export/export.cpp platform/windows/export/export.cpp
msgid "Password"
msgstr "Mot de passe"
@@ -6827,6 +6918,117 @@ msgstr ""
msgid "Use Ambient"
msgstr ""
+#: editor/import/resource_importer_bitmask.cpp
+#, fuzzy
+msgid "Create From"
+msgstr "Créer un dossier"
+
+#: editor/import/resource_importer_bitmask.cpp
+#: servers/audio/effects/audio_effect_compressor.cpp
+msgid "Threshold"
+msgstr ""
+
+#: editor/import/resource_importer_csv_translation.cpp
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_scene.cpp
+#: editor/import/resource_importer_texture.cpp
+#: editor/import/resource_importer_wav.cpp scene/3d/gi_probe.cpp
+#, fuzzy
+msgid "Compress"
+msgstr "Composants"
+
+#: editor/import/resource_importer_csv_translation.cpp
+msgid "Delimiter"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+msgid "No BPTC If RGB"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/sprite_3d.cpp
+#: scene/resources/material.cpp scene/resources/particles_material.cpp
+#: scene/resources/texture.cpp
+msgid "Flags"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/animation/tween.cpp
+#: scene/resources/texture.cpp
+msgid "Repeat"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/2d/light_2d.cpp
+#: scene/gui/control.cpp scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Filter"
+msgstr "Filtres :"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Mipmaps"
+msgstr "Signaux"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+msgid "Anisotropic"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+msgid "sRGB"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#, fuzzy
+msgid "Slices"
+msgstr "Coupe automatique"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
+#: scene/resources/style_box.cpp
+#, fuzzy
+msgid "Horizontal"
+msgstr "Horizontal :"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
+#: scene/resources/style_box.cpp
+#, fuzzy
+msgid "Vertical"
+msgstr "Vertical :"
+
+#: editor/import/resource_importer_obj.cpp
+#, fuzzy
+msgid "Generate Tangents"
+msgstr "Générer des points"
+
+#: editor/import/resource_importer_obj.cpp
+#, fuzzy
+msgid "Scale Mesh"
+msgstr "Mode mise à l'échelle"
+
+#: editor/import/resource_importer_obj.cpp
+#, fuzzy
+msgid "Offset Mesh"
+msgstr "Décalage :"
+
+#: editor/import/resource_importer_obj.cpp
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Octahedral Compression"
+msgstr "Expression"
+
+#: editor/import/resource_importer_obj.cpp
+#, fuzzy
+msgid "Optimize Mesh Flags"
+msgstr "Taille : "
+
#: editor/import/resource_importer_scene.cpp
msgid "Import as Single Scene"
msgstr "Importer comme scène unique"
@@ -6867,6 +7069,155 @@ msgstr "Importer comme scènes multiples"
msgid "Import as Multiple Scenes+Materials"
msgstr "Importer comme scènes+matériaux multiples"
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Nodes"
+msgstr "Nœud"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Root Type"
+msgstr "Retour"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Root Name"
+msgstr "Nom du dépôt distant"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Root Scale"
+msgstr "Mode mise à l'échelle"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Custom Script"
+msgstr "Nœud Personnalisé"
+
+#: editor/import/resource_importer_scene.cpp scene/resources/texture.cpp
+#, fuzzy
+msgid "Storage"
+msgstr "Stockage du fichier :"
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Use Legacy Names"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+#, fuzzy
+msgid "Materials"
+msgstr "Changements de matériau :"
+
+#: editor/import/resource_importer_scene.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Location"
+msgstr "Localisation"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Keep On Reimport"
+msgstr "Réimporter"
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+#, fuzzy
+msgid "Meshes"
+msgstr "Maillages"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Ensure Tangents"
+msgstr "Modifier la tangente de courbes"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Light Baking"
+msgstr "Précalculer les lightmaps"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Lightmap Texel Size"
+msgstr "LightMap Bake"
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+msgid "Skins"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Use Named Skins"
+msgstr "Utiliser le magnétisme d'échelle"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "External Files"
+msgstr "Ouvrir un fichier"
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Store In Subdir"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Filter Script"
+msgstr "Filtrer les scripts"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Keep Custom Tracks"
+msgstr "Transformation"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Optimizer"
+msgstr "Optimiser"
+
+#: editor/import/resource_importer_scene.cpp main/main.cpp
+#: modules/mono/mono_gd/gd_mono.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp scene/2d/camera_2d.cpp scene/2d/light_2d.cpp
+#: scene/2d/navigation_polygon.cpp scene/2d/ray_cast_2d.cpp scene/2d/sprite.cpp
+#: scene/2d/y_sort.cpp scene/3d/audio_stream_player_3d.cpp
+#: scene/3d/baked_lightmap.cpp scene/3d/interpolated_camera.cpp
+#: scene/3d/light.cpp scene/3d/navigation_mesh_instance.cpp
+#: scene/3d/physics_joint.cpp scene/3d/ray_cast.cpp scene/3d/sprite_3d.cpp
+#: scene/gui/graph_edit.cpp scene/gui/rich_text_label.cpp
+#: scene/resources/curve.cpp scene/resources/environment.cpp
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Enabled"
+msgstr "Activer"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Max Linear Error"
+msgstr "Erreur linéaire max. :"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Max Angular Error"
+msgstr "Erreur angulaire max. :"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Max Angle"
+msgstr "Valeur"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Remove Unused Tracks"
+msgstr "Supprimer la piste d’animation"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Clips"
+msgstr "Clips d'animation"
+
+#: editor/import/resource_importer_scene.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/particles_2d.cpp scene/3d/area.cpp scene/3d/cpu_particles.cpp
+#: scene/3d/particles.cpp scene/resources/environment.cpp
+msgid "Amount"
+msgstr "Amount"
+
#: editor/import/resource_importer_scene.cpp
#: editor/plugins/mesh_library_editor_plugin.cpp
msgid "Import Scene"
@@ -6909,12 +7260,149 @@ msgstr ""
msgid "Saving..."
msgstr "Enregistrement…"
+#: editor/import/resource_importer_texture.cpp scene/resources/texture.cpp
+msgid "Lossy Quality"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "HDR Mode"
+msgstr "Mode sélection"
+
+#: editor/import/resource_importer_texture.cpp
+msgid "BPTC LDR"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/mesh_instance_2d.cpp scene/2d/multimesh_instance_2d.cpp
+#: scene/2d/particles_2d.cpp scene/2d/sprite.cpp scene/resources/style_box.cpp
+msgid "Normal Map"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Process"
+msgstr "Post-traitement"
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Fix Alpha Border"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Premult Alpha"
+msgstr "Modifier le polygone"
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Hdr As Srgb"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Invert Color"
+msgstr "Vertex"
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Normal Map Invert Y"
+msgstr "Échelle aléatoire :"
+
+#: editor/import/resource_importer_texture.cpp
+#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
+#: scene/audio/audio_stream_player.cpp scene/gui/video_player.cpp
+msgid "Stream"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Size Limit"
+msgstr "Limites"
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Detect 3D"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "SVG"
+msgstr "HSV"
+
#: editor/import/resource_importer_texture.cpp
msgid ""
"Warning, no suitable PC VRAM compression enabled in Project Settings. This "
"texture will not display correctly on PC."
msgstr ""
+#: editor/import/resource_importer_texture_atlas.cpp
+#, fuzzy
+msgid "Atlas File"
+msgstr "Taille du contour :"
+
+#: editor/import/resource_importer_texture_atlas.cpp
+#, fuzzy
+msgid "Import Mode"
+msgstr "Mode d'exportation :"
+
+#: editor/import/resource_importer_texture_atlas.cpp
+#, fuzzy
+msgid "Crop To Region"
+msgstr "Définir la région de la tuile"
+
+#: editor/import/resource_importer_texture_atlas.cpp
+msgid "Trim Alpha Border From Region"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp scene/2d/physics_body_2d.cpp
+#, fuzzy
+msgid "Force"
+msgstr "Force-pousser"
+
+#: editor/import/resource_importer_wav.cpp
+msgid "8 Bit"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp main/main.cpp
+#: modules/mono/editor/csharp_project.cpp modules/mono/mono_gd/gd_mono.cpp
+msgid "Mono"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+#, fuzzy
+msgid "Max Rate"
+msgstr "Mélanger le nœud"
+
+#: editor/import/resource_importer_wav.cpp
+#, fuzzy
+msgid "Max Rate Hz"
+msgstr "Mélanger le nœud"
+
+#: editor/import/resource_importer_wav.cpp
+msgid "Trim"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+#, fuzzy
+msgid "Normalize"
+msgstr "Format"
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+#, fuzzy
+msgid "Loop Mode"
+msgstr "Mode déplacement"
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+#, fuzzy
+msgid "Loop Begin"
+msgstr "Mode déplacement"
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+#, fuzzy
+msgid "Loop End"
+msgstr "Mode déplacement"
+
#: editor/import_defaults_editor.cpp
msgid "Select Importer"
msgstr "Sélectionnez un importeur"
@@ -6994,6 +7482,29 @@ msgid "Failed to load resource."
msgstr "Impossible de charger la ressource."
#: editor/inspector_dock.cpp
+#, fuzzy
+msgid "Property Name Style"
+msgstr "Nom du projet :"
+
+#: editor/inspector_dock.cpp scene/gui/color_picker.cpp
+msgid "Raw"
+msgstr "Brut"
+
+#: editor/inspector_dock.cpp
+#, fuzzy
+msgid "Capitalized"
+msgstr "Majuscule à chaque mot"
+
+#: editor/inspector_dock.cpp
+#, fuzzy
+msgid "Localized"
+msgstr "Localisation"
+
+#: editor/inspector_dock.cpp
+msgid "Localization not available for current language."
+msgstr ""
+
+#: editor/inspector_dock.cpp
msgid "Copy Properties"
msgstr "Copier les propriétés"
@@ -8048,18 +8559,26 @@ msgid "License (Z-A)"
msgstr "Licence (Z-A)"
#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgctxt "Pagination"
msgid "First"
msgstr "Premier"
-#: editor/plugins/asset_library_editor_plugin.cpp scene/gui/control.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgctxt "Pagination"
msgid "Previous"
msgstr "Précédent"
-#: editor/plugins/asset_library_editor_plugin.cpp scene/gui/control.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgctxt "Pagination"
msgid "Next"
msgstr "Suivant"
#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgctxt "Pagination"
msgid "Last"
msgstr "Dernier"
@@ -8310,19 +8829,19 @@ msgstr ""
"Lorsqu'ils sont actifs, les nœuds Control en mouvement changent leur ancrage "
"au lieu de leur marges."
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Top Left"
msgstr "En haut à gauche"
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Top Right"
msgstr "En haut à droite"
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Bottom Right"
msgstr "En bas à droite"
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Bottom Left"
msgstr "En bas à gauche"
@@ -9037,6 +9556,19 @@ msgstr "Créer sonde IG (Illumination Globale)"
msgid "Gradient Edited"
msgstr "Dégradé édité"
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+msgid "Swap GradientTexture2D Fill Points"
+msgstr ""
+
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+msgid "Swap Gradient Fill Points"
+msgstr ""
+
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+#, fuzzy
+msgid "Toggle Grid Snap"
+msgstr "Basculer le mode"
+
#: editor/plugins/item_list_editor_plugin.cpp
msgid "Item %d"
msgstr "Objet %d"
@@ -9279,8 +9811,9 @@ msgstr ""
"Mettre à jour depuis la scène existante ?\n"
"%s"
-#: editor/plugins/mesh_library_editor_plugin.cpp modules/gridmap/grid_map.cpp
-msgid "Mesh Library"
+#: editor/plugins/mesh_library_editor_plugin.cpp
+#, fuzzy
+msgid "MeshLibrary"
msgstr "Librairie de maillages"
#: editor/plugins/mesh_library_editor_plugin.cpp
@@ -10278,8 +10811,8 @@ msgstr "Connexions à la méthode :"
msgid "Source"
msgstr "Source"
-#: editor/plugins/script_text_editor.cpp scene/3d/interpolated_camera.cpp
-#: scene/animation/skeleton_ik.cpp
+#: editor/plugins/script_text_editor.cpp platform/uwp/export/export.cpp
+#: scene/3d/interpolated_camera.cpp scene/animation/skeleton_ik.cpp
msgid "Target"
msgstr "Cible"
@@ -10523,7 +11056,7 @@ msgstr "Jouer IK"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Orthogonal"
-msgstr "Orthogonale"
+msgstr "Orthogonal"
#: editor/plugins/spatial_editor_plugin.cpp modules/gltf/gltf_camera.cpp
msgid "Perspective"
@@ -11260,7 +11793,9 @@ msgstr "Vitesse :"
#: editor/plugins/sprite_frames_editor_plugin.cpp
#: modules/gltf/gltf_animation.cpp modules/minimp3/audio_stream_mp3.cpp
-#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp scene/2d/path_2d.cpp
+#: modules/minimp3/resource_importer_mp3.cpp
+#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp
+#: modules/stb_vorbis/resource_importer_ogg_vorbis.cpp scene/2d/path_2d.cpp
#: scene/3d/path.cpp scene/resources/animation.cpp scene/resources/material.cpp
msgid "Loop"
msgstr "Boucle"
@@ -12162,8 +12697,9 @@ msgstr "Bitmask"
msgid "Priority"
msgstr "Priorité"
-#: editor/plugins/tile_set_editor_plugin.cpp main/main.cpp scene/gui/button.cpp
-#: scene/gui/item_list.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp main/main.cpp
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#: scene/gui/button.cpp scene/gui/item_list.cpp
msgid "Icon"
msgstr "Icône"
@@ -13545,10 +14081,6 @@ msgstr ""
"d'exportation ou dans vos paramètres d'exportation."
#: editor/project_export.cpp
-msgid "Release"
-msgstr "Publication (release)"
-
-#: editor/project_export.cpp
msgid "Exporting All"
msgstr "Tout exporter"
@@ -15448,6 +15980,7 @@ msgid "Change AudioStreamPlayer3D Emission Angle"
msgstr "Changer l'angle d'émission AudioStreamPlayer3D"
#: editor/spatial_editor_gizmos.cpp modules/gltf/gltf_node.cpp
+#: platform/osx/export/export.cpp
msgid "Camera"
msgstr ""
@@ -15731,7 +16264,8 @@ msgstr ""
msgid "Use Nvidia Rect Flicker Workaround"
msgstr ""
-#: main/main.cpp platform/uwp/os_uwp.cpp
+#: main/main.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp platform/uwp/os_uwp.cpp
#, fuzzy
msgid "Display"
msgstr "Tout afficher"
@@ -15792,19 +16326,6 @@ msgstr ""
msgid "Allowed"
msgstr ""
-#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp scene/2d/camera_2d.cpp
-#: scene/2d/light_2d.cpp scene/2d/navigation_polygon.cpp
-#: scene/2d/ray_cast_2d.cpp scene/2d/sprite.cpp scene/2d/y_sort.cpp
-#: scene/3d/audio_stream_player_3d.cpp scene/3d/baked_lightmap.cpp
-#: scene/3d/interpolated_camera.cpp scene/3d/light.cpp
-#: scene/3d/navigation_mesh_instance.cpp scene/3d/ray_cast.cpp
-#: scene/3d/sprite_3d.cpp scene/gui/graph_edit.cpp
-#: scene/gui/rich_text_label.cpp scene/resources/curve.cpp
-#: scene/resources/environment.cpp
-#, fuzzy
-msgid "Enabled"
-msgstr "Activer"
-
#: main/main.cpp
msgid "Intended Usage"
msgstr ""
@@ -15836,13 +16357,14 @@ msgstr ""
msgid "Handheld"
msgstr ""
-#: main/main.cpp
+#: main/main.cpp platform/javascript/export/export.cpp
+#: platform/uwp/export/export.cpp
#, fuzzy
msgid "Orientation"
msgstr "Documentation en ligne"
#: main/main.cpp scene/gui/scroll_container.cpp scene/gui/text_edit.cpp
-#: scene/main/scene_tree.cpp
+#: scene/main/scene_tree.cpp scene/register_scene_types.cpp
#, fuzzy
msgid "Common"
msgstr "Communauté"
@@ -15885,7 +16407,7 @@ msgstr ""
#: main/main.cpp
#, fuzzy
-msgid "Frame Delay (msec)"
+msgid "Frame Delay Msec"
msgstr "Encadrer la sélection"
#: main/main.cpp
@@ -16014,11 +16536,6 @@ msgstr ""
msgid "Tooltip Position Offset"
msgstr "Décalage de la rotation :"
-#: main/main.cpp modules/mono/editor/csharp_project.cpp
-#: modules/mono/mono_gd/gd_mono.cpp
-msgid "Mono"
-msgstr ""
-
#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp
#, fuzzy
msgid "Debugger Agent"
@@ -16601,7 +17118,7 @@ msgstr "Couleurs"
msgid "Intensity"
msgstr ""
-#: modules/gltf/gltf_light.cpp scene/2d/light_2d.cpp
+#: modules/gltf/gltf_light.cpp scene/2d/light_2d.cpp scene/3d/light.cpp
#, fuzzy
msgid "Range"
msgstr "Changer"
@@ -16748,11 +17265,6 @@ msgstr "Avec données"
msgid "Use Named Skin Binds"
msgstr ""
-#: modules/gltf/gltf_state.cpp scene/3d/physics_joint.cpp
-#, fuzzy
-msgid "Nodes"
-msgstr "Nœud"
-
#: modules/gltf/gltf_state.cpp
#, fuzzy
msgid "Buffer Views"
@@ -16764,16 +17276,6 @@ msgstr ""
#: modules/gltf/gltf_state.cpp
#, fuzzy
-msgid "Meshes"
-msgstr "Maillages"
-
-#: modules/gltf/gltf_state.cpp
-#, fuzzy
-msgid "Materials"
-msgstr "Changements de matériau :"
-
-#: modules/gltf/gltf_state.cpp
-#, fuzzy
msgid "Scene Name"
msgstr "Chemin de la scène :"
@@ -16789,15 +17291,11 @@ msgstr "Nom de nœud racine"
msgid "Textures"
msgstr "Fonctionnalités"
-#: modules/gltf/gltf_state.cpp
+#: modules/gltf/gltf_state.cpp platform/uwp/export/export.cpp
msgid "Images"
msgstr ""
#: modules/gltf/gltf_state.cpp
-msgid "Skins"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp
msgid "Cameras"
msgstr ""
@@ -16832,11 +17330,15 @@ msgid "Src Image"
msgstr "Afficher les os"
#: modules/gridmap/grid_map.cpp
+msgid "Mesh Library"
+msgstr "Librairie de maillages"
+
+#: modules/gridmap/grid_map.cpp
#, fuzzy
msgid "Physics Material"
msgstr "Image physique %"
-#: modules/gridmap/grid_map.cpp
+#: modules/gridmap/grid_map.cpp scene/3d/visual_instance.cpp
#, fuzzy
msgid "Use In Baked Light"
msgstr "Précalculer les lightmaps"
@@ -16868,6 +17370,7 @@ msgstr "Centre"
#: modules/gridmap/grid_map.cpp scene/2d/collision_object_2d.cpp
#: scene/2d/tile_map.cpp scene/3d/collision_object.cpp scene/3d/soft_body.cpp
+#: scene/resources/material.cpp
msgid "Mask"
msgstr ""
@@ -17050,7 +17553,9 @@ msgid "Ultra Quality Ray Count"
msgstr ""
#: modules/minimp3/audio_stream_mp3.cpp
+#: modules/minimp3/resource_importer_mp3.cpp
#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp
+#: modules/stb_vorbis/resource_importer_ogg_vorbis.cpp
#, fuzzy
msgid "Loop Offset"
msgstr "Décalage :"
@@ -18143,6 +18648,193 @@ msgid "The package must have at least one '.' separator."
msgstr "Le paquet doit comporter au moins un séparateur « . »."
#: platform/android/export/export_plugin.cpp
+msgid "Use Custom Build"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Export Format"
+msgstr "Chemin d'exportation"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Keystore"
+msgstr "Débogueur"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Debug User"
+msgstr "Débogueur"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Debug Password"
+msgstr "Mot de passe"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Release User"
+msgstr "Publication (release)"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Release Password"
+msgstr "Mot de passe"
+
+#: platform/android/export/export_plugin.cpp
+msgid "One Click Deploy"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Clear Previous Install"
+msgstr "Inspecter l'instance précédente"
+
+#: platform/android/export/export_plugin.cpp scene/resources/shader.cpp
+msgid "Code"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Min SDK"
+msgstr "Taille du contour :"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Target SDK"
+msgstr "Cible"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Package"
+msgstr "Empaquetage"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Unique Name"
+msgstr "Nom de nœud :"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Signed"
+msgstr "Signaux"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Classify As Game"
+msgstr "Nom de la classe :"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Retain Data On Uninstall"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Exclude From Recents"
+msgstr "Supprimer des nœuds"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Graphics"
+msgstr "Décalage de la grille :"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "OpenGL Debug"
+msgstr "Ouvrir"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "XR Features"
+msgstr "Fonctionnalités"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "XR Mode"
+msgstr "Mode navigation"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Hand Tracking"
+msgstr "Empaquetage"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Hand Tracking Frequency"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Passthrough"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Immersive Mode"
+msgstr "Mode prioritaire"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Support Small"
+msgstr "Support"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Support Normal"
+msgstr "Support"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Support Large"
+msgstr "Support"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Support Xlarge"
+msgstr "Support"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "User Data Backup"
+msgstr "Interface utilisateur"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Allow"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Command Line"
+msgstr "Communauté"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Extra Args"
+msgstr "Arguments supplémentaires :"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "APK Expansion"
+msgstr "Expression"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Salt"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Public Key"
+msgstr "Chemin de la clé publique SSH"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Permissions"
+msgstr "Masque d'émission"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Custom Permissions"
+msgstr "Jouer une scène personnalisée"
+
+#: platform/android/export/export_plugin.cpp
msgid "Select device from the list"
msgstr "Sélectionner appareil depuis la liste"
@@ -18487,6 +19179,178 @@ msgid "The character '%s' is not allowed in Identifier."
msgstr "Le caractère « %s » n'est pas autorisé dans l'identifiant."
#: platform/iphone/export/export.cpp
+msgid "App Store Team ID"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Provisioning Profile UUID Debug"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Code Sign Identity Debug"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Export Method Debug"
+msgstr "Exporter avec debug"
+
+#: platform/iphone/export/export.cpp
+msgid "Provisioning Profile UUID Release"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Code Sign Identity Release"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Export Method Release"
+msgstr "Mode d'exportation :"
+
+#: platform/iphone/export/export.cpp
+msgid "Targeted Device Family"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Info"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Identifier"
+msgstr "Identifiant invalide :"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Signature"
+msgstr "Signaux"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Short Version"
+msgstr "Version"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Copyright"
+msgstr "En haut à droite"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Capabilities"
+msgstr "Coller les propriétés"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Access Wi-Fi"
+msgstr "Ça marche !"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Push Notifications"
+msgstr "Rotation aléatoire :"
+
+#: platform/iphone/export/export.cpp scene/3d/baked_lightmap.cpp
+#, fuzzy
+msgid "User Data"
+msgstr "Interface utilisateur"
+
+#: platform/iphone/export/export.cpp
+msgid "Accessible From Files App"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Accessible From Itunes Sharing"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Privacy"
+msgstr "Chemin de la clé privée SSH"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Camera Usage Description"
+msgstr "Description"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Microphone Usage Description"
+msgstr "Description des propriétés"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Photolibrary Usage Description"
+msgstr "Description des propriétés"
+
+#: platform/iphone/export/export.cpp
+msgid "iPhone 120 X 120"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPhone 180 X 180"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 76 X 76"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 152 X 152"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 167 X 167"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "App Store 1024 X 1024"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Spotlight 40 X 40"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Spotlight 80 X 80"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Storyboard"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Use Launch Screen Storyboard"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Image Scale Mode"
+msgstr "Mode mise à l'échelle"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Custom Image @2x"
+msgstr "Nœud Personnalisé"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Custom Image @3x"
+msgstr "Nœud Personnalisé"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Use Custom BG Color"
+msgstr "Nœud Personnalisé"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Custom BG Color"
+msgstr "Nœud Personnalisé"
+
+#: platform/iphone/export/export.cpp
msgid "App Store Team ID not specified - cannot configure the project."
msgstr "App Store Team ID non spécifié - ne peut pas configurer le projet."
@@ -18523,6 +19387,80 @@ msgid "Could not read file:"
msgstr "Impossible de lire le fichier :"
#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Variant"
+msgstr "Séparation :"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Export Type"
+msgstr "Exporter"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "VRAM Texture Compression"
+msgstr "Expression"
+
+#: platform/javascript/export/export.cpp
+msgid "For Desktop"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "For Mobile"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Html"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Export Icon"
+msgstr "Développer tout"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Custom Html Shell"
+msgstr "Nœud Personnalisé"
+
+#: platform/javascript/export/export.cpp
+msgid "Head Include"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Canvas Resize Policy"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Focus Canvas On Start"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Experimental Virtual Keyboard"
+msgstr "Filtrer les signaux"
+
+#: platform/javascript/export/export.cpp
+msgid "Progressive Web App"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Offline Page"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 144 X 144"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 180 X 180"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 512 X 512"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
msgid "Could not read HTML shell:"
msgstr "Impossible de lire le shell HTML :"
@@ -18632,6 +19570,202 @@ msgid "Unknown object type."
msgstr "Type d'objet inconnu."
#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "App Category"
+msgstr "Catégorie :"
+
+#: platform/osx/export/export.cpp
+msgid "High Res"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Location Usage Description"
+msgstr "Description"
+
+#: platform/osx/export/export.cpp
+msgid "Address Book Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Calendar Usage Description"
+msgstr "Description"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Photos Library Usage Description"
+msgstr "Description des propriétés"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Desktop Folder Usage Description"
+msgstr "Descriptions des méthodes"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Documents Folder Usage Description"
+msgstr "Descriptions des méthodes"
+
+#: platform/osx/export/export.cpp
+msgid "Downloads Folder Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Network Volumes Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Removable Volumes Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#, fuzzy
+msgid "Codesign"
+msgstr "Nœud"
+
+#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Identity"
+msgstr "Indenter vers la gauche"
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#, fuzzy
+msgid "Timestamp"
+msgstr "Temps"
+
+#: platform/osx/export/export.cpp
+msgid "Hardened Runtime"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Replace Existing Signature"
+msgstr "Remplacer dans les fichiers"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Entitlements"
+msgstr "Gadgets"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Custom File"
+msgstr "Nœud Personnalisé"
+
+#: platform/osx/export/export.cpp
+msgid "Allow JIT Code Execution"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Allow Unsigned Executable Memory"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Allow Dyld Environment Variables"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Disable Library Validation"
+msgstr "Bouton désactivé"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Audio Input"
+msgstr "Ajouter une entrée"
+
+#: platform/osx/export/export.cpp
+msgid "Address Book"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Calendars"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Photos Library"
+msgstr "Bibliothèque d'exportation"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Apple Events"
+msgstr "Ajouter évènement"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Debugging"
+msgstr "Débogage"
+
+#: platform/osx/export/export.cpp
+msgid "App Sandbox"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Network Server"
+msgstr "Profileur réseau"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Network Client"
+msgstr "Profileur réseau"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Device Usb"
+msgstr "Périphérique"
+
+#: platform/osx/export/export.cpp
+msgid "Device Bluetooth"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Files Downloads"
+msgstr "Télécharger"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Files Pictures"
+msgstr "Fonctionnalités"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Files Music"
+msgstr "Fichier"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Files Movies"
+msgstr "Filtrer les tuiles"
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#, fuzzy
+msgid "Custom Options"
+msgstr "Options de bus"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Notarization"
+msgstr "Localisation"
+
+#: platform/osx/export/export.cpp
+msgid "Apple ID Name"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Apple ID Password"
+msgstr "Mot de passe"
+
+#: platform/osx/export/export.cpp
+msgid "Apple Team ID"
+msgstr ""
+
+#: platform/osx/export/export.cpp
msgid ""
"Note: The notarization process generally takes less than an hour. When the "
"process is completed, you'll receive an email."
@@ -18840,6 +19974,136 @@ msgid "Force Builtin Codesign"
msgstr ""
#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Architecture"
+msgstr "Ajouter une entrée architecture"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Display Name"
+msgstr "Tout afficher"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Short Name"
+msgstr "Nom du script :"
+
+#: platform/uwp/export/export.cpp
+msgid "Publisher"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Publisher Display Name"
+msgstr "Nom d'affichage d'éditeur du paquet invalide."
+
+#: platform/uwp/export/export.cpp
+msgid "Product Guid"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Publisher Guid"
+msgstr "Effacé Guides"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Signing"
+msgstr "Signaux"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Certificate"
+msgstr "Sommets :"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Algorithm"
+msgstr "Débogueur"
+
+#: platform/uwp/export/export.cpp
+msgid "Major"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Minor"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Build"
+msgstr "Mode Règle"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Revision"
+msgstr "Expression"
+
+#: platform/uwp/export/export.cpp
+msgid "Landscape"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Portrait"
+msgstr "Retourner les Portals"
+
+#: platform/uwp/export/export.cpp
+msgid "Landscape Flipped"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Portrait Flipped"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Store Logo"
+msgstr "Mode mise à l'échelle"
+
+#: platform/uwp/export/export.cpp
+msgid "Square 44 X 44 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 71 X 71 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 150 X 150 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 310 X 310 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Wide 310 X 150 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Splash Screen"
+msgstr "Appels de dessin :"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Tiles"
+msgstr "Fichier"
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Square 150 X 150"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Wide 310 X 150"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Square 310 X 310"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
msgid "Invalid package short name."
msgstr "Nom abrégé du paquet invalide."
@@ -18919,15 +20183,52 @@ msgstr ""
#: platform/uwp/export/export.cpp
#, fuzzy
-msgid "Debug Password"
-msgstr "Mot de passe"
+msgid "Debug Algorithm"
+msgstr "Débogueur"
-#: platform/uwp/export/export.cpp
+#: platform/windows/export/export.cpp
+msgid "Identity Type"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Timestamp Server URL"
+msgstr ""
+
+#: platform/windows/export/export.cpp
#, fuzzy
-msgid "Debug Algorithm"
+msgid "Digest Algorithm"
msgstr "Débogueur"
#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "File Version"
+msgstr "Version"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Product Version"
+msgstr "Version du produit invalide :"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Company Name"
+msgstr "Nom de nœud :"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Product Name"
+msgstr "Nom du projet :"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "File Description"
+msgstr "Description"
+
+#: platform/windows/export/export.cpp
+msgid "Trademarks"
+msgstr ""
+
+#: platform/windows/export/export.cpp
msgid ""
"The rcedit tool must be configured in the Editor Settings (Export > Windows "
"> Rcedit) to change the icon or app information data."
@@ -19002,12 +20303,14 @@ msgstr "Jouer"
msgid "Centered"
msgstr "Centre"
-#: scene/2d/animated_sprite.cpp scene/2d/camera_2d.cpp scene/2d/light_2d.cpp
+#: scene/2d/animated_sprite.cpp scene/2d/camera_2d.cpp
+#: scene/2d/cpu_particles_2d.cpp scene/2d/light_2d.cpp
#: scene/2d/parallax_background.cpp scene/2d/parallax_layer.cpp
#: scene/2d/path_2d.cpp scene/2d/polygon_2d.cpp scene/2d/sprite.cpp
-#: scene/3d/path.cpp scene/3d/physics_body.cpp scene/3d/sprite_3d.cpp
-#: scene/gui/graph_node.cpp scene/gui/rich_text_effect.cpp
-#: scene/main/canvas_layer.cpp scene/resources/material.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/path.cpp scene/3d/physics_body.cpp
+#: scene/3d/sprite_3d.cpp scene/gui/graph_node.cpp
+#: scene/gui/rich_text_effect.cpp scene/main/canvas_layer.cpp
+#: scene/resources/material.cpp scene/resources/particles_material.cpp
#: scene/resources/style_box.cpp
#, fuzzy
msgid "Offset"
@@ -19082,11 +20385,6 @@ msgstr "Ajouter un bus audio"
msgid "Override"
msgstr "Redéfinition"
-#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
-#: scene/audio/audio_stream_player.cpp scene/gui/video_player.cpp
-msgid "Stream"
-msgstr ""
-
#: scene/2d/audio_stream_player_2d.cpp scene/audio/audio_stream_player.cpp
#: scene/gui/video_player.cpp servers/audio/effects/audio_effect_amplify.cpp
#, fuzzy
@@ -19113,13 +20411,13 @@ msgid "Stream Paused"
msgstr ""
#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
-#: scene/3d/reflection_probe.cpp scene/3d/visual_instance.cpp
-#: scene/resources/material.cpp
+#: scene/3d/light.cpp scene/3d/reflection_probe.cpp
+#: scene/3d/visual_instance.cpp scene/resources/material.cpp
#, fuzzy
msgid "Max Distance"
msgstr "Choisissez distance :"
-#: scene/2d/audio_stream_player_2d.cpp
+#: scene/2d/audio_stream_player_2d.cpp scene/3d/light.cpp
#, fuzzy
msgid "Attenuation"
msgstr "Animation"
@@ -19175,6 +20473,24 @@ msgstr "Mode déplacement"
msgid "Limit"
msgstr ""
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/style_box.cpp
+#, fuzzy
+msgid "Left"
+msgstr "En haut à gauche"
+
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/style_box.cpp
+#, fuzzy
+msgid "Right"
+msgstr "Lumière"
+
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/dynamic_font.cpp scene/resources/style_box.cpp
+#, fuzzy
+msgid "Bottom"
+msgstr "En bas à gauche"
+
#: scene/2d/camera_2d.cpp
#, fuzzy
msgid "Smoothed"
@@ -19417,13 +20733,6 @@ msgstr ""
msgid "Emitting"
msgstr "Paramètres :"
-#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp scene/3d/area.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
-#: scene/resources/environment.cpp
-#, fuzzy
-msgid "Amount"
-msgstr "Quantité :"
-
#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp
#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
msgid "Lifetime"
@@ -19488,18 +20797,13 @@ msgstr ""
#: scene/2d/mesh_instance_2d.cpp scene/2d/multimesh_instance_2d.cpp
#: scene/2d/particles_2d.cpp scene/2d/polygon_2d.cpp scene/2d/sprite.cpp
#: scene/3d/sprite_3d.cpp scene/gui/nine_patch_rect.cpp
-#: scene/gui/texture_rect.cpp scene/resources/sky.cpp
-#: scene/resources/style_box.cpp scene/resources/visual_shader_nodes.cpp
+#: scene/gui/texture_rect.cpp scene/resources/material.cpp
+#: scene/resources/sky.cpp scene/resources/style_box.cpp
+#: scene/resources/visual_shader_nodes.cpp
#, fuzzy
msgid "Texture"
msgstr "Texte"
-#: scene/2d/cpu_particles_2d.cpp scene/2d/mesh_instance_2d.cpp
-#: scene/2d/multimesh_instance_2d.cpp scene/2d/particles_2d.cpp
-#: scene/2d/sprite.cpp scene/resources/style_box.cpp
-msgid "Normal Map"
-msgstr ""
-
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
#, fuzzy
@@ -19523,10 +20827,10 @@ msgid "Normals"
msgstr "Format"
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/3d/sprite_3d.cpp scene/resources/material.cpp
-#: scene/resources/particles_material.cpp scene/resources/texture.cpp
-msgid "Flags"
-msgstr ""
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Align Y"
+msgstr "Assigner"
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
@@ -19547,6 +20851,12 @@ msgid "Initial Velocity"
msgstr "Initialiser"
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Velocity Random"
+msgstr "Vue de l'orbite vers la droite"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp servers/physics_2d_server.cpp
#: servers/physics_server.cpp
msgid "Angular Velocity"
@@ -19555,6 +20865,12 @@ msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
#, fuzzy
+msgid "Velocity Curve"
+msgstr "Vue de l'orbite vers la droite"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
msgid "Orbit Velocity"
msgstr "Vue de l'orbite vers la droite"
@@ -19566,6 +20882,23 @@ msgstr "Linéaire"
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Accel"
+msgstr "Ça marche !"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Accel Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Accel Curve"
+msgstr "Scinder la courbe"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
msgid "Radial Accel"
msgstr ""
@@ -19575,19 +20908,55 @@ msgid "Tangential Accel"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/2d/joints_2d.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/vehicle_body.cpp
-#: scene/resources/particles_material.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/physics_joint.cpp
+#: scene/3d/vehicle_body.cpp scene/resources/particles_material.cpp
#: servers/audio/effects/audio_effect_reverb.cpp
msgid "Damping"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+msgid "Damping Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Damping Curve"
+msgstr "Scinder la courbe"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp scene/3d/light.cpp
+#: scene/resources/particles_material.cpp
msgid "Angle"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+msgid "Angle Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Angle Curve"
+msgstr "Fermer la courbe"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#, fuzzy
+msgid "Scale Amount"
+msgstr "Quantité :"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+msgid "Scale Amount Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#, fuzzy
+msgid "Scale Amount Curve"
+msgstr "Agrandir/Rétrécir à partir du curseur"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
#, fuzzy
msgid "Color Ramp"
msgstr "Couleurs"
@@ -19603,6 +20972,48 @@ msgstr ""
msgid "Hue Variation"
msgstr "Séparation :"
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Variation"
+msgstr "Séparation :"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Variation Random"
+msgstr "Séparation :"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Variation Curve"
+msgstr "Séparation :"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Speed Random"
+msgstr "Mode mise à l'échelle"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Speed Curve"
+msgstr "Scinder la courbe"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Offset Random"
+msgstr "Décalage :"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Offset Curve"
+msgstr "Fermer la courbe"
+
#: scene/2d/joints_2d.cpp
msgid "Node A and Node B must be PhysicsBody2Ds"
msgstr "Node A et Node B doivent être des PhysicsBody2D"
@@ -19634,6 +21045,7 @@ msgid "Node B"
msgstr "Nœud"
#: scene/2d/joints_2d.cpp scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp
+#: scene/3d/light.cpp scene/3d/physics_joint.cpp
#: scene/resources/environment.cpp
msgid "Bias"
msgstr ""
@@ -19643,7 +21055,7 @@ msgstr ""
msgid "Disable Collision"
msgstr "Bouton désactivé"
-#: scene/2d/joints_2d.cpp
+#: scene/2d/joints_2d.cpp scene/3d/physics_joint.cpp
msgid "Softness"
msgstr ""
@@ -19661,7 +21073,7 @@ msgstr "Initialiser"
msgid "Rest Length"
msgstr ""
-#: scene/2d/joints_2d.cpp scene/3d/vehicle_body.cpp
+#: scene/2d/joints_2d.cpp scene/3d/physics_joint.cpp scene/3d/vehicle_body.cpp
msgid "Stiffness"
msgstr ""
@@ -19684,7 +21096,7 @@ msgid "Texture Scale"
msgstr "RegionDeTexture"
#: scene/2d/light_2d.cpp scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp
-#: scene/resources/environment.cpp scene/resources/sky.cpp
+#: scene/3d/light.cpp scene/resources/environment.cpp scene/resources/sky.cpp
msgid "Energy"
msgstr ""
@@ -19725,12 +21137,6 @@ msgstr "Vue de derrière"
msgid "Gradient Length"
msgstr "Dégradé édité"
-#: scene/2d/light_2d.cpp scene/gui/control.cpp
-#: scene/resources/navigation_mesh.cpp
-#, fuzzy
-msgid "Filter"
-msgstr "Filtres :"
-
#: scene/2d/light_2d.cpp
#, fuzzy
msgid "Filter Smooth"
@@ -20181,11 +21587,6 @@ msgid "Applied Forces"
msgstr ""
#: scene/2d/physics_body_2d.cpp
-#, fuzzy
-msgid "Force"
-msgstr "Force-pousser"
-
-#: scene/2d/physics_body_2d.cpp
msgid "Torque"
msgstr ""
@@ -20201,7 +21602,7 @@ msgstr " (physique)"
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
#, fuzzy
-msgid "Moving platform"
+msgid "Moving Platform"
msgstr "Déplacement du résultat"
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
@@ -20210,7 +21611,7 @@ msgstr ""
#: scene/2d/physics_body_2d.cpp scene/2d/touch_screen_button.cpp
#: scene/3d/physics_body.cpp scene/gui/texture_button.cpp
-#: scene/resources/line_shape_2d.cpp
+#: scene/resources/line_shape_2d.cpp scene/resources/material.cpp
#, fuzzy
msgid "Normal"
msgstr "Format"
@@ -20459,6 +21860,34 @@ msgstr ""
"Un VisibilityEnabler2D fonctionne mieux lorsqu'il est directement enfant du "
"nœud racine de la scène éditée."
+#: scene/2d/visibility_notifier_2d.cpp scene/3d/visibility_notifier.cpp
+#, fuzzy
+msgid "Pause Animations"
+msgstr "Coller l'animation"
+
+#: scene/2d/visibility_notifier_2d.cpp scene/3d/visibility_notifier.cpp
+msgid "Freeze Bodies"
+msgstr ""
+
+#: scene/2d/visibility_notifier_2d.cpp
+#, fuzzy
+msgid "Pause Particles"
+msgstr "Particules"
+
+#: scene/2d/visibility_notifier_2d.cpp
+#, fuzzy
+msgid "Pause Animated Sprites"
+msgstr "Coller l'animation"
+
+#: scene/2d/visibility_notifier_2d.cpp
+#, fuzzy
+msgid "Process Parent"
+msgstr "Activer la priorité"
+
+#: scene/2d/visibility_notifier_2d.cpp
+msgid "Physics Process Parent"
+msgstr ""
+
#: scene/3d/area.cpp
msgid "Reverb Bus"
msgstr ""
@@ -20559,6 +21988,7 @@ msgid "Attenuation Filter"
msgstr ""
#: scene/3d/audio_stream_player_3d.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
#: servers/audio/effects/audio_effect_filter.cpp
msgid "Cutoff Hz"
msgstr ""
@@ -20603,11 +22033,6 @@ msgid "Octree"
msgstr "Sous-arbre"
#: scene/3d/baked_lightmap.cpp
-#, fuzzy
-msgid "User Data"
-msgstr "Interface utilisateur"
-
-#: scene/3d/baked_lightmap.cpp
msgid "Finding meshes and lights"
msgstr "Recherche de maillages et de lumières"
@@ -20880,6 +22305,16 @@ msgid "Ring Axis"
msgstr "Avertissements"
#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Rotate Y"
+msgstr "Rotation"
+
+#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Disable Z"
+msgstr "Item désactivé"
+
+#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
msgid "Flatness"
msgstr ""
@@ -20920,16 +22355,11 @@ msgstr "Bibliothèque dynamique"
msgid "Dynamic Range"
msgstr "Bibliothèque dynamique"
-#: scene/3d/gi_probe.cpp
+#: scene/3d/gi_probe.cpp scene/3d/light.cpp
msgid "Normal Bias"
msgstr ""
#: scene/3d/gi_probe.cpp
-#, fuzzy
-msgid "Compress"
-msgstr "Composants"
-
-#: scene/3d/gi_probe.cpp
msgid "Plotting Meshes"
msgstr "Tracer les maillages"
@@ -20962,16 +22392,31 @@ msgstr ""
#: scene/3d/light.cpp
#, fuzzy
+msgid "Indirect Energy"
+msgstr "Couleurs d'émission"
+
+#: scene/3d/light.cpp
+#, fuzzy
msgid "Negative"
msgstr "GDNative"
#: scene/3d/light.cpp
#, fuzzy
+msgid "Specular"
+msgstr "Mode Règle"
+
+#: scene/3d/light.cpp
+#, fuzzy
msgid "Bake Mode"
msgstr "Mode Bitmask"
#: scene/3d/light.cpp
#, fuzzy
+msgid "Contact"
+msgstr "Prélever une couleur"
+
+#: scene/3d/light.cpp
+#, fuzzy
msgid "Reverse Cull Face"
msgstr "Réinitialiser le volume de bus"
@@ -20982,11 +22427,31 @@ msgstr "Directions"
#: scene/3d/light.cpp
#, fuzzy
+msgid "Split 1"
+msgstr "Divisé"
+
+#: scene/3d/light.cpp
+#, fuzzy
+msgid "Split 2"
+msgstr "Divisé"
+
+#: scene/3d/light.cpp
+#, fuzzy
+msgid "Split 3"
+msgstr "Divisé"
+
+#: scene/3d/light.cpp
+#, fuzzy
msgid "Blend Splits"
msgstr "Temps de mélange :"
#: scene/3d/light.cpp
#, fuzzy
+msgid "Bias Split Scale"
+msgstr "Utiliser le magnétisme d'échelle"
+
+#: scene/3d/light.cpp
+#, fuzzy
msgid "Depth Range"
msgstr "Profondeur"
@@ -21014,6 +22479,11 @@ msgstr ""
msgid "Spot"
msgstr ""
+#: scene/3d/light.cpp
+#, fuzzy
+msgid "Angle Attenuation"
+msgstr "Animation"
+
#: scene/3d/mesh_instance.cpp
msgid "Software Skinning"
msgstr ""
@@ -21165,6 +22635,63 @@ msgstr "Axe"
#: scene/3d/physics_body.cpp
#, fuzzy
+msgid "Linear X"
+msgstr "Linéaire"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Linear Y"
+msgstr "Linéaire"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Linear Z"
+msgstr "Linéaire"
+
+#: scene/3d/physics_body.cpp
+msgid "Angular X"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Angular Y"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Angular Z"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Motion X"
+msgstr "Action"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Motion Y"
+msgstr "Action"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Motion Z"
+msgstr "Action"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Move Lock X"
+msgstr "Déplacer le nœud"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Move Lock Y"
+msgstr "Déplacer le nœud"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Move Lock Z"
+msgstr "Déplacer le nœud"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
msgid "Body Offset"
msgstr "Décalage :"
@@ -21198,6 +22725,15 @@ msgid "Exclude Nodes"
msgstr "Supprimer des nœuds"
#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Params"
+msgstr "Paramètre modifié :"
+
+#: scene/3d/physics_joint.cpp
+msgid "Impulse Clamp"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit"
msgstr ""
@@ -21211,6 +22747,55 @@ msgstr "Tout en majuscule"
msgid "Lower"
msgstr "Tout en minuscule"
+#: scene/3d/physics_joint.cpp scene/3d/vehicle_body.cpp
+#, fuzzy
+msgid "Relaxation"
+msgstr "Séparation :"
+
+#: scene/3d/physics_joint.cpp
+msgid "Motor"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Target Velocity"
+msgstr "Vue de l'orbite vers la droite"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Max Impulse"
+msgstr "Vitesse :"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit"
+msgstr "Linéaire"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Upper Distance"
+msgstr "Choisissez distance :"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Lower Distance"
+msgstr "Choisissez distance :"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Restitution"
+msgstr "Description"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motion"
+msgstr "Initialiser"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Ortho"
+msgstr "Orthogonale arrière"
+
#: scene/3d/physics_joint.cpp
#, fuzzy
msgid "Upper Angle"
@@ -21223,6 +22808,16 @@ msgstr "Tout en minuscule"
#: scene/3d/physics_joint.cpp
#, fuzzy
+msgid "Angular Motion"
+msgstr "Animation"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Angular Ortho"
+msgstr "Erreur angulaire max. :"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
msgid "Swing Span"
msgstr "Enregistrement de la scène"
@@ -21231,17 +22826,99 @@ msgid "Twist Span"
msgstr ""
#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit X"
+msgstr "Linéaire"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motor X"
+msgstr "Initialiser"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Force Limit"
+msgstr "Appels de dessin :"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Spring X"
+msgstr "Linéaire"
+
+#: scene/3d/physics_joint.cpp
+msgid "Equilibrium Point"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit X"
msgstr ""
#: scene/3d/physics_joint.cpp
+msgid "Erp"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Motor X"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Spring X"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit Y"
+msgstr "Linéaire"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motor Y"
+msgstr "Initialiser"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Spring Y"
+msgstr "Linéaire"
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit Y"
msgstr ""
#: scene/3d/physics_joint.cpp
+msgid "Angular Motor Y"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Spring Y"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit Z"
+msgstr "Linéaire"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motor Z"
+msgstr "Initialiser"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Spring Z"
+msgstr "Linéaire"
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit Z"
msgstr ""
+#: scene/3d/physics_joint.cpp
+msgid "Angular Motor Z"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Spring Z"
+msgstr ""
+
#: scene/3d/portal.cpp
msgid "The RoomManager should not be a child or grandchild of a Portal."
msgstr "Le RoomManager ne doit pas être enfant ou grand-enfant d'un Portal."
@@ -21365,7 +23042,7 @@ msgstr ""
msgid "Use Default Simplify"
msgstr ""
-#: scene/3d/room.cpp
+#: scene/3d/room.cpp scene/3d/room_manager.cpp
msgid "Room Simplify"
msgstr ""
@@ -21406,6 +23083,13 @@ msgstr "Il ne doit y avoir qu'un seul RoomManager dans le SceneTree."
msgid "Main"
msgstr ""
+#: scene/3d/room_manager.cpp scene/animation/animation_player.cpp
+#: scene/animation/animation_tree.cpp scene/animation/animation_tree_player.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+#, fuzzy
+msgid "Active"
+msgstr "Action"
+
#: scene/3d/room_manager.cpp
msgid "Roomlist"
msgstr ""
@@ -21430,6 +23114,54 @@ msgid "Gameplay"
msgstr ""
#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Gameplay Monitor"
+msgstr "Moniteur"
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Use Secondary PVS"
+msgstr "Utiliser le magnétisme d'échelle"
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Merge Meshes"
+msgstr "Maillages"
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Show Margins"
+msgstr "Afficher l'origine"
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Debug Sprawl"
+msgstr "Débogage"
+
+#: scene/3d/room_manager.cpp
+msgid "Overlap Warning Threshold"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Preview Camera"
+msgstr "Aperçu"
+
+#: scene/3d/room_manager.cpp
+msgid "Portal Depth Limit"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Default Portal Margin"
+msgstr "Définir la marge"
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Roaming Expansion Margin"
+msgstr "Développer tout"
+
+#: scene/3d/room_manager.cpp
msgid ""
"RoomList path is invalid.\n"
"Please check the RoomList branch has been assigned in the RoomManager."
@@ -21574,6 +23306,20 @@ msgstr "Aimanter au pixel"
msgid "Billboard"
msgstr ""
+#: scene/3d/sprite_3d.cpp scene/resources/material.cpp
+#, fuzzy
+msgid "Transparent"
+msgstr "Transposer"
+
+#: scene/3d/sprite_3d.cpp
+#, fuzzy
+msgid "Shaded"
+msgstr "Ombrage"
+
+#: scene/3d/sprite_3d.cpp
+msgid "Double Sided"
+msgstr ""
+
#: scene/3d/sprite_3d.cpp
msgid "Alpha Cut"
msgstr ""
@@ -21649,11 +23395,6 @@ msgstr "Expression"
msgid "Max Force"
msgstr "Erreur"
-#: scene/3d/vehicle_body.cpp
-#, fuzzy
-msgid "Relaxation"
-msgstr "Séparation :"
-
#: scene/3d/visibility_notifier.cpp
msgid "AABB"
msgstr ""
@@ -21799,7 +23540,7 @@ msgstr "Durée du fondu (s) :"
#: scene/animation/animation_blend_tree.cpp
#, fuzzy
-msgid "autorestart_"
+msgid "Auto Restart"
msgstr "Redémarrage automatique :"
#: scene/animation/animation_blend_tree.cpp
@@ -21885,13 +23626,6 @@ msgstr "Options de classe :"
msgid "Default Blend Time"
msgstr "Thème par défaut"
-#: scene/animation/animation_player.cpp scene/animation/animation_tree.cpp
-#: scene/animation/animation_tree_player.cpp
-#: servers/audio/effects/audio_effect_delay.cpp
-#, fuzzy
-msgid "Active"
-msgstr "Action"
-
#: scene/animation/animation_player.cpp
msgid "Method Call Mode"
msgstr ""
@@ -22018,10 +23752,6 @@ msgstr "Re-parenter le nœud"
msgid "Max Iterations"
msgstr "Faire fonction"
-#: scene/animation/tween.cpp scene/resources/texture.cpp
-msgid "Repeat"
-msgstr ""
-
#: scene/animation/tween.cpp
msgid "Playback Process Mode"
msgstr ""
@@ -22052,20 +23782,6 @@ msgstr "Mode sélection"
msgid "Alignment"
msgstr ""
-#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
-#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
-#: scene/resources/style_box.cpp
-#, fuzzy
-msgid "Horizontal"
-msgstr "Horizontal :"
-
-#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
-#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
-#: scene/resources/style_box.cpp
-#, fuzzy
-msgid "Vertical"
-msgstr "Vertical :"
-
#: scene/gui/base_button.cpp
#, fuzzy
msgid "Shortcut In Tooltip"
@@ -22167,10 +23883,6 @@ msgid "HSV"
msgstr "HSV"
#: scene/gui/color_picker.cpp
-msgid "Raw"
-msgstr "Brut"
-
-#: scene/gui/color_picker.cpp
msgid "Switch between hexadecimal and code values."
msgstr "Alterner entre les valeurs hexadécimales ou brutes."
@@ -22238,6 +23950,31 @@ msgid "Focus"
msgstr "Focaliser le chemin"
#: scene/gui/control.cpp
+msgid "Neighbour Left"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Neighbour Top"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Neighbour Right"
+msgstr ""
+
+#: scene/gui/control.cpp
+#, fuzzy
+msgid "Neighbour Bottom"
+msgstr "Centrée en bas"
+
+#: scene/gui/control.cpp
+msgid "Next"
+msgstr "Suivant"
+
+#: scene/gui/control.cpp
+msgid "Previous"
+msgstr "Précédent"
+
+#: scene/gui/control.cpp
msgid "Mouse"
msgstr ""
@@ -22275,7 +24012,7 @@ msgid "Dialog"
msgstr "Dialogue XForm"
#: scene/gui/dialogs.cpp
-msgid "Hide On Ok"
+msgid "Hide On OK"
msgstr ""
#: scene/gui/dialogs.cpp scene/gui/label.cpp
@@ -22374,7 +24111,7 @@ msgid "Timers"
msgstr "Temps"
#: scene/gui/item_list.cpp scene/gui/popup_menu.cpp scene/gui/tree.cpp
-msgid "Incremental Search Max Interval (msec)"
+msgid "Incremental Search Max Interval Msec"
msgstr ""
#: scene/gui/item_list.cpp scene/gui/tree.cpp
@@ -22963,6 +24700,26 @@ msgstr "Centré à Gauche"
msgid "Nine Patch Stretch"
msgstr "Mode d’interpolation"
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Left"
+msgstr "Définir la marge"
+
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Top"
+msgstr "Définir la marge"
+
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Right"
+msgstr "Définir la marge"
+
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Bottom"
+msgstr "Mode sélection"
+
#: scene/gui/tree.cpp
msgid "Custom Minimum Height"
msgstr ""
@@ -23000,8 +24757,9 @@ msgid "Paused"
msgstr ""
#: scene/gui/video_player.cpp
-msgid "Buffering (msec)"
-msgstr ""
+#, fuzzy
+msgid "Buffering Msec"
+msgstr "Vue de derrière"
#: scene/gui/video_player.cpp
#, fuzzy
@@ -23170,9 +24928,8 @@ msgid "Draw 2D Outlines"
msgstr "Créer le contour"
#: scene/main/scene_tree.cpp servers/visual_server.cpp
-#, fuzzy
msgid "Reflections"
-msgstr "Directions"
+msgstr "Réflexions"
#: scene/main/scene_tree.cpp
#, fuzzy
@@ -23362,6 +25119,22 @@ msgid "Shadow Atlas"
msgstr "Nouvel Atlas"
#: scene/main/viewport.cpp
+msgid "Quad 0"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 1"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 2"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 3"
+msgstr ""
+
+#: scene/main/viewport.cpp
#, fuzzy
msgid "Canvas Transform"
msgstr "Supprimer la transformation"
@@ -23376,6 +25149,11 @@ msgid "Tooltip Delay (sec)"
msgstr ""
#: scene/register_scene_types.cpp
+#, fuzzy
+msgid "Swap OK Cancel"
+msgstr "Annuler"
+
+#: scene/register_scene_types.cpp
msgid "Use hiDPI"
msgstr ""
@@ -23390,21 +25168,6 @@ msgid "Custom Font"
msgstr "Nœud Personnalisé"
#: scene/resources/audio_stream_sample.cpp
-#, fuzzy
-msgid "Loop Mode"
-msgstr "Mode déplacement"
-
-#: scene/resources/audio_stream_sample.cpp
-#, fuzzy
-msgid "Loop Begin"
-msgstr "Mode déplacement"
-
-#: scene/resources/audio_stream_sample.cpp
-#, fuzzy
-msgid "Loop End"
-msgstr "Mode déplacement"
-
-#: scene/resources/audio_stream_sample.cpp
#: servers/audio/effects/audio_stream_generator.cpp servers/audio_server.cpp
#, fuzzy
msgid "Mix Rate"
@@ -23464,6 +25227,17 @@ msgstr "Options additionnelles :"
#: scene/resources/dynamic_font.cpp
#, fuzzy
+msgid "Char"
+msgstr "Caractères valides :"
+
+#: scene/resources/dynamic_font.cpp scene/resources/world.cpp
+#: scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Space"
+msgstr "Scène principale"
+
+#: scene/resources/dynamic_font.cpp
+#, fuzzy
msgid "Font"
msgstr "Polices"
@@ -23583,9 +25357,8 @@ msgid "Height Curve"
msgstr "Scinder la courbe"
#: scene/resources/environment.cpp
-#, fuzzy
msgid "Tonemap"
-msgstr "Réaffectation"
+msgstr "Tonemap"
#: scene/resources/environment.cpp
#, fuzzy
@@ -23691,6 +25464,43 @@ msgid "Glow"
msgstr ""
#: scene/resources/environment.cpp
+#, fuzzy
+msgid "Levels"
+msgstr "Développeurs"
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "1"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "2"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "3"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "4"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "5"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "6"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "7"
+msgstr ""
+
+#: scene/resources/environment.cpp
msgid "Bloom"
msgstr ""
@@ -23783,10 +25593,68 @@ msgid "Next Pass"
msgstr "Plan suivant"
#: scene/resources/material.cpp
+msgid "Use Shadow To Opacity"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Unshaded"
+msgstr "Afficher sans ombrage"
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Vertex Lighting"
+msgstr "Éclairage direct"
+
+#: scene/resources/material.cpp
+msgid "No Depth Test"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Use Point Size"
+msgstr "Vue de devant"
+
+#: scene/resources/material.cpp
+msgid "World Triplanar"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Fixed Size"
+msgstr "Vue de devant"
+
+#: scene/resources/material.cpp
+msgid "Albedo Tex Force sRGB"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Do Not Receive Shadows"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Disable Ambient Light"
+msgstr "Indenter vers la droite"
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Ensure Correct Normals"
+msgstr "Transformation annulée."
+
+#: scene/resources/material.cpp
#, fuzzy
msgid "Vertex Color"
msgstr "Vertex"
+#: scene/resources/material.cpp
+msgid "Use As Albedo"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Is sRGB"
+msgstr ""
+
#: scene/resources/material.cpp servers/visual_server.cpp
#, fuzzy
msgid "Parameters"
@@ -23823,6 +25691,11 @@ msgid "Billboard Mode"
msgstr "Mode Règle"
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Billboard Keep Scale"
+msgstr "Mode Règle"
+
+#: scene/resources/material.cpp
msgid "Grow"
msgstr ""
@@ -23832,6 +25705,10 @@ msgid "Grow Amount"
msgstr "Quantité :"
#: scene/resources/material.cpp
+msgid "Use Alpha Scissor"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Alpha Scissor Threshold"
msgstr ""
@@ -23863,10 +25740,20 @@ msgid "Metallic Specular"
msgstr ""
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Metallic Texture"
+msgstr "Source d'émission : "
+
+#: scene/resources/material.cpp
msgid "Metallic Texture Channel"
msgstr ""
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Roughness Texture"
+msgstr "Supprimer la texture"
+
+#: scene/resources/material.cpp
msgid "Roughness Texture Channel"
msgstr ""
@@ -23886,6 +25773,16 @@ msgid "Emission Operator"
msgstr "Couleurs d'émission"
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Emission On UV2"
+msgstr "Masque d'émission"
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Emission Texture"
+msgstr "Source d'émission : "
+
+#: scene/resources/material.cpp
msgid "NormalMap"
msgstr ""
@@ -23900,6 +25797,11 @@ msgstr "Inclinaison aléatoire :"
#: scene/resources/material.cpp
#, fuzzy
+msgid "Rim Texture"
+msgstr "Supprimer la texture"
+
+#: scene/resources/material.cpp
+#, fuzzy
msgid "Clearcoat"
msgstr "Effacer"
@@ -23909,15 +25811,28 @@ msgid "Clearcoat Gloss"
msgstr "Vider la pose"
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Clearcoat Texture"
+msgstr "Thème de l'éditeur"
+
+#: scene/resources/material.cpp
msgid "Anisotropy"
msgstr ""
#: scene/resources/material.cpp
+msgid "Anisotropy Flowmap"
+msgstr ""
+
+#: scene/resources/material.cpp
#, fuzzy
msgid "Ambient Occlusion"
msgstr "Occlusion"
#: scene/resources/material.cpp
+msgid "On UV2"
+msgstr ""
+
+#: scene/resources/material.cpp
#, fuzzy
msgid "Texture Channel"
msgstr "RegionDeTexture"
@@ -23956,6 +25871,11 @@ msgstr "Transition : "
#: scene/resources/material.cpp
#, fuzzy
+msgid "Transmission Texture"
+msgstr "Transition : "
+
+#: scene/resources/material.cpp
+#, fuzzy
msgid "Refraction"
msgstr "Séparation :"
@@ -23974,6 +25894,10 @@ msgid "UV1"
msgstr "UV"
#: scene/resources/material.cpp
+msgid "Triplanar"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Triplanar Sharpness"
msgstr ""
@@ -24185,6 +26109,16 @@ msgstr "Thème de l'éditeur"
msgid "Point Count"
msgstr "Ajouter un port d'entrée"
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Scale Random"
+msgstr "Ratio d'échelle :"
+
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Scale Curve"
+msgstr "Fermer la courbe"
+
#: scene/resources/physics_material.cpp
msgid "Rough"
msgstr ""
@@ -24247,10 +26181,6 @@ msgid "A"
msgstr ""
#: scene/resources/shader.cpp
-msgid "Code"
-msgstr ""
-
-#: scene/resources/shader.cpp
#, fuzzy
msgid "Custom Defines"
msgstr "Jouer une scène personnalisée"
@@ -24347,15 +26277,6 @@ msgstr ""
#: scene/resources/texture.cpp
#, fuzzy
-msgid "Storage"
-msgstr "Stockage du fichier :"
-
-#: scene/resources/texture.cpp
-msgid "Lossy Quality"
-msgstr ""
-
-#: scene/resources/texture.cpp
-#, fuzzy
msgid "Load Path"
msgstr "Charger un préréglage"
@@ -24486,11 +26407,6 @@ msgstr "Fonction de comparaison invalide pour ce type."
msgid "Fallback Environment"
msgstr "Voir environnement"
-#: scene/resources/world.cpp scene/resources/world_2d.cpp
-#, fuzzy
-msgid "Space"
-msgstr "Scène principale"
-
#: scene/resources/world.cpp
#, fuzzy
msgid "Scenario"
@@ -24571,10 +26487,37 @@ msgstr ""
msgid "Wet"
msgstr ""
-#: servers/audio/effects/audio_effect_compressor.cpp
-msgid "Threshold"
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "Voice"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+msgid "Delay (ms)"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_phaser.cpp
+msgid "Rate Hz"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#, fuzzy
+msgid "Depth (ms)"
+msgstr "Profondeur"
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+msgid "Level dB"
msgstr ""
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+#: servers/audio/effects/audio_effect_panner.cpp
+#, fuzzy
+msgid "Pan"
+msgstr "Plan :"
+
#: servers/audio/effects/audio_effect_compressor.cpp
#: servers/audio/effects/audio_effect_filter.cpp
msgid "Gain"
@@ -24598,20 +26541,6 @@ msgid "Tap 1"
msgstr ""
#: servers/audio/effects/audio_effect_delay.cpp
-msgid "Delay (ms)"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_delay.cpp
-msgid "Level dB"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_delay.cpp
-#: servers/audio/effects/audio_effect_panner.cpp
-#, fuzzy
-msgid "Pan"
-msgstr "Plan :"
-
-#: servers/audio/effects/audio_effect_delay.cpp
msgid "Tap 2"
msgstr ""
@@ -24673,10 +26602,6 @@ msgstr ""
msgid "Range Max Hz"
msgstr ""
-#: servers/audio/effects/audio_effect_phaser.cpp
-msgid "Rate Hz"
-msgstr ""
-
#: servers/audio/effects/audio_effect_pitch_shift.cpp
msgid "Oversampling"
msgstr ""
@@ -24692,7 +26617,7 @@ msgid "Predelay"
msgstr ""
#: servers/audio/effects/audio_effect_reverb.cpp
-msgid "(msec)"
+msgid "Msec"
msgstr ""
#: servers/audio/effects/audio_effect_reverb.cpp
diff --git a/editor/translations/ga.po b/editor/translations/ga.po
index 0b725a1022..94b13705e6 100644
--- a/editor/translations/ga.po
+++ b/editor/translations/ga.po
@@ -18,7 +18,7 @@ msgstr ""
"(n>6 && n<11) ? 3 : 4;\n"
"X-Generator: Weblate 4.1-dev\n"
-#: core/bind/core_bind.cpp
+#: core/bind/core_bind.cpp main/main.cpp
msgid "Tablet Driver"
msgstr ""
@@ -110,8 +110,8 @@ msgstr "Cruthaigh"
#: core/bind/core_bind.cpp editor/editor_settings.cpp main/main.cpp
#: modules/gdscript/gdscript_editor.cpp modules/gridmap/grid_map.cpp
#: modules/mono/csharp_script.cpp modules/visual_script/visual_script_nodes.cpp
-#: scene/2d/tile_map.cpp scene/3d/camera.cpp scene/gui/control.cpp
-#: scene/gui/graph_edit.cpp scene/main/viewport.cpp
+#: scene/2d/tile_map.cpp scene/3d/camera.cpp scene/3d/light.cpp
+#: scene/gui/control.cpp scene/gui/graph_edit.cpp scene/main/viewport.cpp
#: scene/resources/dynamic_font.cpp scene/resources/navigation_mesh.cpp
#: scene/resources/primitive_meshes.cpp scene/resources/sky.cpp
#: scene/resources/style_box.cpp scene/resources/texture.cpp
@@ -207,8 +207,7 @@ msgid "Data"
msgstr ""
#: core/io/file_access_network.cpp core/register_core_types.cpp
-#: editor/editor_settings.cpp editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp main/main.cpp
+#: editor/editor_settings.cpp main/main.cpp
#: modules/gdscript/language_server/gdscript_language_server.cpp
msgid "Network"
msgstr ""
@@ -470,9 +469,10 @@ msgstr ""
msgid "Relative"
msgstr ""
-#: core/os/input_event.cpp scene/2d/camera_2d.cpp
-#: scene/3d/interpolated_camera.cpp scene/animation/animation_player.cpp
-#: scene/resources/environment.cpp
+#: core/os/input_event.cpp scene/2d/camera_2d.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/interpolated_camera.cpp
+#: scene/animation/animation_player.cpp scene/resources/environment.cpp
+#: scene/resources/particles_material.cpp
#, fuzzy
msgid "Speed"
msgstr "Scála:"
@@ -518,8 +518,9 @@ msgstr ""
msgid "Pitch"
msgstr "Scála:"
-#: core/os/input_event.cpp scene/2d/physics_body_2d.cpp
-#: scene/3d/physics_body.cpp
+#: core/os/input_event.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/physics_body_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/3d/physics_body.cpp scene/resources/particles_material.cpp
msgid "Velocity"
msgstr ""
@@ -536,6 +537,8 @@ msgid "Controller Value"
msgstr ""
#: core/project_settings.cpp editor/editor_node.cpp main/main.cpp
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/windows/export/export.cpp
#, fuzzy
msgid "Application"
msgstr "CrannBeochan"
@@ -552,13 +555,16 @@ msgstr ""
#: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp
#: editor/editor_plugin_settings.cpp editor/editor_profiler.cpp
#: editor/project_manager.cpp editor/settings_config_dialog.cpp
-#: modules/gdnative/nativescript/nativescript.cpp scene/2d/area_2d.cpp
-#: scene/3d/area.cpp scene/main/node.cpp
+#: modules/gdnative/nativescript/nativescript.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/osx/export/export.cpp scene/2d/area_2d.cpp scene/3d/area.cpp
+#: scene/main/node.cpp
msgid "Name"
msgstr ""
#: core/project_settings.cpp editor/editor_help.cpp
-#: modules/visual_script/visual_script_nodes.cpp
+#: modules/visual_script/visual_script_nodes.cpp platform/uwp/export/export.cpp
+#: platform/windows/export/export.cpp
#, fuzzy
msgid "Description"
msgstr "Cuntas:"
@@ -595,7 +601,7 @@ msgid "Custom User Dir Name"
msgstr ""
#: core/project_settings.cpp editor/animation_track_editor.cpp
-#: editor/editor_audio_buses.cpp servers/audio_server.cpp
+#: editor/editor_audio_buses.cpp main/main.cpp servers/audio_server.cpp
msgid "Audio"
msgstr ""
@@ -748,10 +754,13 @@ msgstr "Scagairí..."
msgid "Sharpen Intensity"
msgstr ""
-#: core/project_settings.cpp editor/editor_node.cpp editor/editor_settings.cpp
-#: editor/plugins/script_editor_plugin.cpp editor/project_export.cpp
-#: main/main.cpp modules/gdscript/gdscript.cpp
-#: modules/visual_script/visual_script.cpp scene/3d/room_manager.cpp
+#: core/project_settings.cpp editor/editor_export.cpp editor/editor_node.cpp
+#: editor/editor_settings.cpp editor/plugins/script_editor_plugin.cpp
+#: editor/project_export.cpp main/main.cpp modules/gdscript/gdscript.cpp
+#: modules/visual_script/visual_script.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp scene/3d/room_manager.cpp
#: scene/main/scene_tree.cpp scene/resources/shape_2d.cpp
#: servers/visual_server.cpp
msgid "Debug"
@@ -976,6 +985,7 @@ msgid "Subsurface Scattering"
msgstr ""
#: drivers/gles3/rasterizer_scene_gles3.cpp
+#: editor/import/resource_importer_texture.cpp
#: editor/plugins/spatial_editor_plugin.cpp modules/gltf/gltf_node.cpp
#: modules/gridmap/grid_map.cpp scene/2d/cpu_particles_2d.cpp
#: scene/2d/node_2d.cpp scene/2d/parallax_layer.cpp scene/2d/polygon_2d.cpp
@@ -1272,6 +1282,7 @@ msgid "Editors"
msgstr ""
#: editor/animation_track_editor.cpp editor/editor_settings.cpp
+#: editor/import/resource_importer_scene.cpp
#: editor/plugins/animation_player_editor_plugin.cpp editor/scene_tree_dock.cpp
#: scene/2d/animated_sprite.cpp scene/2d/cpu_particles_2d.cpp
#: scene/2d/sprite.cpp scene/3d/cpu_particles.cpp scene/3d/sprite_3d.cpp
@@ -1489,14 +1500,14 @@ msgstr ""
msgid "Seconds"
msgstr ""
-#: editor/animation_track_editor.cpp
+#: editor/animation_track_editor.cpp editor/import/resource_importer_scene.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp main/main.cpp
#: scene/resources/texture.cpp
msgid "FPS"
msgstr ""
#: editor/animation_track_editor.cpp editor/editor_plugin_settings.cpp
-#: editor/editor_resource_picker.cpp
+#: editor/editor_resource_picker.cpp editor/import/resource_importer_wav.cpp
#: editor/plugins/polygon_2d_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
@@ -2440,7 +2451,9 @@ msgid "Remove Autoload"
msgstr ""
#: editor/editor_autoload_settings.cpp editor/editor_plugin_settings.cpp
-#: modules/gdscript/gdscript.cpp scene/2d/polygon_2d.cpp scene/3d/area.cpp
+#: modules/gdscript/gdscript.cpp platform/android/export/export_plugin.cpp
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#: scene/2d/polygon_2d.cpp scene/3d/area.cpp scene/3d/physics_joint.cpp
#: scene/3d/reflection_probe.cpp scene/main/canvas_layer.cpp
#: scene/resources/material.cpp servers/visual_server.cpp
msgid "Enable"
@@ -2593,6 +2606,55 @@ msgstr ""
#: editor/editor_export.cpp platform/android/export/export_plugin.cpp
#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
+msgid "Custom Template"
+msgstr ""
+
+#: editor/editor_export.cpp editor/project_export.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp
+msgid "Release"
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Binary Format"
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "64 Bits"
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Embed PCK"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "Texture Format"
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "BPTC"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "S3TC"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "ETC"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "ETC2"
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "No BPTC Fallbacks"
+msgstr ""
+
+#: editor/editor_export.cpp platform/android/export/export_plugin.cpp
+#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
msgid "Custom debug template not found."
msgstr ""
@@ -2767,6 +2829,7 @@ msgid "Make Current"
msgstr ""
#: editor/editor_feature_profile.cpp editor/editor_node.cpp
+#: editor/import/resource_importer_scene.cpp
#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
msgid "Import"
msgstr ""
@@ -2892,8 +2955,11 @@ msgstr ""
msgid "Display Mode"
msgstr ""
-#: editor/editor_file_dialog.cpp main/main.cpp modules/csg/csg_shape.cpp
-#: modules/visual_script/visual_script_nodes.cpp
+#: editor/editor_file_dialog.cpp
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+#: editor/import/resource_importer_wav.cpp main/main.cpp
+#: modules/csg/csg_shape.cpp modules/visual_script/visual_script_nodes.cpp
#: modules/visual_script/visual_script_yield_nodes.cpp scene/2d/light_2d.cpp
#: scene/2d/physics_body_2d.cpp scene/2d/tile_map.cpp
#: scene/3d/baked_lightmap.cpp scene/3d/light.cpp scene/3d/physics_body.cpp
@@ -3025,7 +3091,9 @@ msgstr ""
msgid "Reimport Missing Imported Files"
msgstr ""
-#: editor/editor_help.cpp
+#: editor/editor_help.cpp scene/2d/camera_2d.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/resources/dynamic_font.cpp
+#: scene/resources/style_box.cpp
msgid "Top"
msgstr ""
@@ -3077,6 +3145,7 @@ msgid "Fonts"
msgstr ""
#: editor/editor_help.cpp editor/plugins/theme_editor_plugin.cpp
+#: platform/iphone/export/export.cpp
msgid "Icons"
msgstr ""
@@ -3235,7 +3304,9 @@ msgstr ""
msgid "Pin value [Disabled because '%s' is editor-only]"
msgstr ""
-#: editor/editor_inspector.cpp editor/scene_tree_dock.cpp
+#: editor/editor_inspector.cpp
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+#: editor/scene_tree_dock.cpp
#: modules/visual_script/visual_script_func_nodes.cpp
#: modules/visual_script/visual_script_nodes.cpp
#: modules/visual_script/visual_script_property_selector.cpp
@@ -3546,6 +3617,14 @@ msgid "Quick Open Script..."
msgstr ""
#: editor/editor_node.cpp
+msgid "Save & Reload"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Save changes to '%s' before reloading?"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "Save & Close"
msgstr ""
@@ -3657,6 +3736,10 @@ msgid "Open Project Manager?"
msgstr ""
#: editor/editor_node.cpp
+msgid "Save changes to the following scene(s) before reloading?"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "Save & Quit"
msgstr ""
@@ -3897,7 +3980,7 @@ msgid "Update Vital Only"
msgstr ""
#: editor/editor_node.cpp
-msgid "Translate Properties"
+msgid "Localize Settings"
msgstr ""
#: editor/editor_node.cpp
@@ -3914,7 +3997,7 @@ msgid "Inspector"
msgstr ""
#: editor/editor_node.cpp
-msgid "Capitalize Properties"
+msgid "Default Property Name Style"
msgstr ""
#: editor/editor_node.cpp
@@ -4474,7 +4557,9 @@ msgstr ""
msgid "Update"
msgstr ""
-#: editor/editor_plugin_settings.cpp
+#: editor/editor_plugin_settings.cpp platform/android/export/export_plugin.cpp
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp
msgid "Version"
msgstr ""
@@ -5415,7 +5500,7 @@ msgstr ""
msgid "Rect Custom Position"
msgstr ""
-#: editor/editor_settings.cpp
+#: editor/editor_settings.cpp platform/android/export/export_plugin.cpp
msgid "Screen"
msgstr ""
@@ -5438,6 +5523,19 @@ msgid "Editor SSL Certificates"
msgstr ""
#: editor/editor_settings.cpp
+msgid "HTTP Proxy"
+msgstr ""
+
+#: editor/editor_settings.cpp
+msgid "Host"
+msgstr ""
+
+#: editor/editor_settings.cpp editor/fileserver/editor_file_server.cpp
+#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp
+msgid "Port"
+msgstr ""
+
+#: editor/editor_settings.cpp
msgid "Project Manager"
msgstr ""
@@ -5477,7 +5575,8 @@ msgstr ""
msgid "String Color"
msgstr ""
-#: editor/editor_settings.cpp
+#: editor/editor_settings.cpp platform/javascript/export/export.cpp
+#: platform/uwp/export/export.cpp
msgid "Background Color"
msgstr ""
@@ -5636,22 +5735,6 @@ msgid "Starting the download..."
msgstr ""
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "HTTP Proxy"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Host"
-msgstr ""
-
-#: editor/export_template_manager.cpp editor/fileserver/editor_file_server.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp main/main.cpp
-#: modules/mono/mono_gd/gd_mono.cpp
-msgid "Port"
-msgstr ""
-
-#: editor/export_template_manager.cpp
msgid "Error requesting URL:"
msgstr ""
@@ -5893,6 +5976,7 @@ msgstr ""
#: editor/fileserver/editor_file_server.cpp
#: editor/plugins/version_control_editor_plugin.cpp
+#: platform/uwp/export/export.cpp platform/windows/export/export.cpp
msgid "Password"
msgstr ""
@@ -6258,6 +6342,109 @@ msgstr ""
msgid "Use Ambient"
msgstr ""
+#: editor/import/resource_importer_bitmask.cpp
+#, fuzzy
+msgid "Create From"
+msgstr "Cruthaigh"
+
+#: editor/import/resource_importer_bitmask.cpp
+#: servers/audio/effects/audio_effect_compressor.cpp
+msgid "Threshold"
+msgstr ""
+
+#: editor/import/resource_importer_csv_translation.cpp
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_scene.cpp
+#: editor/import/resource_importer_texture.cpp
+#: editor/import/resource_importer_wav.cpp scene/3d/gi_probe.cpp
+msgid "Compress"
+msgstr ""
+
+#: editor/import/resource_importer_csv_translation.cpp
+msgid "Delimiter"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+msgid "No BPTC If RGB"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/sprite_3d.cpp
+#: scene/resources/material.cpp scene/resources/particles_material.cpp
+#: scene/resources/texture.cpp
+msgid "Flags"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/animation/tween.cpp
+#: scene/resources/texture.cpp
+msgid "Repeat"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/2d/light_2d.cpp
+#: scene/gui/control.cpp scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Filter"
+msgstr "Scagairí..."
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Mipmaps"
+msgstr "Scagairí..."
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+msgid "Anisotropic"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+msgid "sRGB"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+msgid "Slices"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
+#: scene/resources/style_box.cpp
+msgid "Horizontal"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
+#: scene/resources/style_box.cpp
+msgid "Vertical"
+msgstr ""
+
+#: editor/import/resource_importer_obj.cpp
+msgid "Generate Tangents"
+msgstr ""
+
+#: editor/import/resource_importer_obj.cpp
+#, fuzzy
+msgid "Scale Mesh"
+msgstr "Scála:"
+
+#: editor/import/resource_importer_obj.cpp
+msgid "Offset Mesh"
+msgstr ""
+
+#: editor/import/resource_importer_obj.cpp
+#: editor/import/resource_importer_scene.cpp
+msgid "Octahedral Compression"
+msgstr ""
+
+#: editor/import/resource_importer_obj.cpp
+msgid "Optimize Mesh Flags"
+msgstr ""
+
#: editor/import/resource_importer_scene.cpp
msgid "Import as Single Scene"
msgstr ""
@@ -6298,6 +6485,141 @@ msgstr ""
msgid "Import as Multiple Scenes+Materials"
msgstr ""
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Nodes"
+msgstr "Nód Measc"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Root Type"
+msgstr "Nód UrcharAmháin"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Root Name"
+msgstr "Nód UrcharAmháin"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Root Scale"
+msgstr "Scála:"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Custom Script"
+msgstr "Cruthaigh"
+
+#: editor/import/resource_importer_scene.cpp scene/resources/texture.cpp
+msgid "Storage"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Use Legacy Names"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+msgid "Materials"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Location"
+msgstr "CrannBeochan"
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Keep On Reimport"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+msgid "Meshes"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Ensure Tangents"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Light Baking"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Lightmap Texel Size"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+msgid "Skins"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Use Named Skins"
+msgstr "Scagairí..."
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "External Files"
+msgstr "Scagairí..."
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Store In Subdir"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Filter Script"
+msgstr "Scagairí..."
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Keep Custom Tracks"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Optimizer"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp main/main.cpp
+#: modules/mono/mono_gd/gd_mono.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp scene/2d/camera_2d.cpp scene/2d/light_2d.cpp
+#: scene/2d/navigation_polygon.cpp scene/2d/ray_cast_2d.cpp scene/2d/sprite.cpp
+#: scene/2d/y_sort.cpp scene/3d/audio_stream_player_3d.cpp
+#: scene/3d/baked_lightmap.cpp scene/3d/interpolated_camera.cpp
+#: scene/3d/light.cpp scene/3d/navigation_mesh_instance.cpp
+#: scene/3d/physics_joint.cpp scene/3d/ray_cast.cpp scene/3d/sprite_3d.cpp
+#: scene/gui/graph_edit.cpp scene/gui/rich_text_label.cpp
+#: scene/resources/curve.cpp scene/resources/environment.cpp
+#: scene/resources/material.cpp
+msgid "Enabled"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Max Linear Error"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Max Angular Error"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Max Angle"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Remove Unused Tracks"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Clips"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/particles_2d.cpp scene/3d/area.cpp scene/3d/cpu_particles.cpp
+#: scene/3d/particles.cpp scene/resources/environment.cpp
+#, fuzzy
+msgid "Amount"
+msgstr "Méid:"
+
#: editor/import/resource_importer_scene.cpp
#: editor/plugins/mesh_library_editor_plugin.cpp
msgid "Import Scene"
@@ -6339,12 +6661,138 @@ msgstr ""
msgid "Saving..."
msgstr ""
+#: editor/import/resource_importer_texture.cpp scene/resources/texture.cpp
+msgid "Lossy Quality"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "HDR Mode"
+msgstr "Nód Measc"
+
+#: editor/import/resource_importer_texture.cpp
+msgid "BPTC LDR"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/mesh_instance_2d.cpp scene/2d/multimesh_instance_2d.cpp
+#: scene/2d/particles_2d.cpp scene/2d/sprite.cpp scene/resources/style_box.cpp
+msgid "Normal Map"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Process"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Fix Alpha Border"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Premult Alpha"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Hdr As Srgb"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Invert Color"
+msgstr "Scagairí..."
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Normal Map Invert Y"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
+#: scene/audio/audio_stream_player.cpp scene/gui/video_player.cpp
+msgid "Stream"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Size Limit"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Detect 3D"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "SVG"
+msgstr ""
+
#: editor/import/resource_importer_texture.cpp
msgid ""
"Warning, no suitable PC VRAM compression enabled in Project Settings. This "
"texture will not display correctly on PC."
msgstr ""
+#: editor/import/resource_importer_texture_atlas.cpp
+#, fuzzy
+msgid "Atlas File"
+msgstr "Scagairí..."
+
+#: editor/import/resource_importer_texture_atlas.cpp
+#, fuzzy
+msgid "Import Mode"
+msgstr "Cosán"
+
+#: editor/import/resource_importer_texture_atlas.cpp
+msgid "Crop To Region"
+msgstr ""
+
+#: editor/import/resource_importer_texture_atlas.cpp
+msgid "Trim Alpha Border From Region"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp scene/2d/physics_body_2d.cpp
+msgid "Force"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+msgid "8 Bit"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp main/main.cpp
+#: modules/mono/editor/csharp_project.cpp modules/mono/mono_gd/gd_mono.cpp
+msgid "Mono"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+#, fuzzy
+msgid "Max Rate"
+msgstr "Nód Measc"
+
+#: editor/import/resource_importer_wav.cpp
+#, fuzzy
+msgid "Max Rate Hz"
+msgstr "Nód Measc"
+
+#: editor/import/resource_importer_wav.cpp
+msgid "Trim"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+msgid "Normalize"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+msgid "Loop Mode"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+msgid "Loop Begin"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+msgid "Loop End"
+msgstr ""
+
#: editor/import_defaults_editor.cpp
msgid "Select Importer"
msgstr ""
@@ -6414,6 +6862,26 @@ msgid "Failed to load resource."
msgstr ""
#: editor/inspector_dock.cpp
+msgid "Property Name Style"
+msgstr ""
+
+#: editor/inspector_dock.cpp scene/gui/color_picker.cpp
+msgid "Raw"
+msgstr ""
+
+#: editor/inspector_dock.cpp
+msgid "Capitalized"
+msgstr ""
+
+#: editor/inspector_dock.cpp
+msgid "Localized"
+msgstr ""
+
+#: editor/inspector_dock.cpp
+msgid "Localization not available for current language."
+msgstr ""
+
+#: editor/inspector_dock.cpp
msgid "Copy Properties"
msgstr ""
@@ -7444,18 +7912,22 @@ msgid "License (Z-A)"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
+msgctxt "Pagination"
msgid "First"
msgstr ""
-#: editor/plugins/asset_library_editor_plugin.cpp scene/gui/control.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgctxt "Pagination"
msgid "Previous"
msgstr ""
-#: editor/plugins/asset_library_editor_plugin.cpp scene/gui/control.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgctxt "Pagination"
msgid "Next"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
+msgctxt "Pagination"
msgid "Last"
msgstr ""
@@ -7690,19 +8162,19 @@ msgid ""
"margins."
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Top Left"
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Top Right"
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Bottom Right"
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Bottom Left"
msgstr ""
@@ -8395,6 +8867,18 @@ msgstr ""
msgid "Gradient Edited"
msgstr ""
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+msgid "Swap GradientTexture2D Fill Points"
+msgstr ""
+
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+msgid "Swap Gradient Fill Points"
+msgstr ""
+
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+msgid "Toggle Grid Snap"
+msgstr ""
+
#: editor/plugins/item_list_editor_plugin.cpp
msgid "Item %d"
msgstr ""
@@ -8608,8 +9092,8 @@ msgid ""
"%s"
msgstr ""
-#: editor/plugins/mesh_library_editor_plugin.cpp modules/gridmap/grid_map.cpp
-msgid "Mesh Library"
+#: editor/plugins/mesh_library_editor_plugin.cpp
+msgid "MeshLibrary"
msgstr ""
#: editor/plugins/mesh_library_editor_plugin.cpp
@@ -9579,8 +10063,8 @@ msgstr ""
msgid "Source"
msgstr ""
-#: editor/plugins/script_text_editor.cpp scene/3d/interpolated_camera.cpp
-#: scene/animation/skeleton_ik.cpp
+#: editor/plugins/script_text_editor.cpp platform/uwp/export/export.cpp
+#: scene/3d/interpolated_camera.cpp scene/animation/skeleton_ik.cpp
msgid "Target"
msgstr ""
@@ -10537,7 +11021,9 @@ msgstr ""
#: editor/plugins/sprite_frames_editor_plugin.cpp
#: modules/gltf/gltf_animation.cpp modules/minimp3/audio_stream_mp3.cpp
-#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp scene/2d/path_2d.cpp
+#: modules/minimp3/resource_importer_mp3.cpp
+#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp
+#: modules/stb_vorbis/resource_importer_ogg_vorbis.cpp scene/2d/path_2d.cpp
#: scene/3d/path.cpp scene/resources/animation.cpp scene/resources/material.cpp
msgid "Loop"
msgstr ""
@@ -11405,8 +11891,9 @@ msgstr ""
msgid "Priority"
msgstr ""
-#: editor/plugins/tile_set_editor_plugin.cpp main/main.cpp scene/gui/button.cpp
-#: scene/gui/item_list.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp main/main.cpp
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#: scene/gui/button.cpp scene/gui/item_list.cpp
msgid "Icon"
msgstr ""
@@ -12690,10 +13177,6 @@ msgid ""
msgstr ""
#: editor/project_export.cpp
-msgid "Release"
-msgstr ""
-
-#: editor/project_export.cpp
msgid "Exporting All"
msgstr ""
@@ -14457,6 +14940,7 @@ msgid "Change AudioStreamPlayer3D Emission Angle"
msgstr ""
#: editor/spatial_editor_gizmos.cpp modules/gltf/gltf_node.cpp
+#: platform/osx/export/export.cpp
msgid "Camera"
msgstr ""
@@ -14720,7 +15204,8 @@ msgstr ""
msgid "Use Nvidia Rect Flicker Workaround"
msgstr ""
-#: main/main.cpp platform/uwp/os_uwp.cpp
+#: main/main.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp platform/uwp/os_uwp.cpp
msgid "Display"
msgstr ""
@@ -14775,18 +15260,6 @@ msgstr ""
msgid "Allowed"
msgstr ""
-#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp scene/2d/camera_2d.cpp
-#: scene/2d/light_2d.cpp scene/2d/navigation_polygon.cpp
-#: scene/2d/ray_cast_2d.cpp scene/2d/sprite.cpp scene/2d/y_sort.cpp
-#: scene/3d/audio_stream_player_3d.cpp scene/3d/baked_lightmap.cpp
-#: scene/3d/interpolated_camera.cpp scene/3d/light.cpp
-#: scene/3d/navigation_mesh_instance.cpp scene/3d/ray_cast.cpp
-#: scene/3d/sprite_3d.cpp scene/gui/graph_edit.cpp
-#: scene/gui/rich_text_label.cpp scene/resources/curve.cpp
-#: scene/resources/environment.cpp
-msgid "Enabled"
-msgstr ""
-
#: main/main.cpp
msgid "Intended Usage"
msgstr ""
@@ -14815,13 +15288,14 @@ msgstr ""
msgid "Handheld"
msgstr ""
-#: main/main.cpp
+#: main/main.cpp platform/javascript/export/export.cpp
+#: platform/uwp/export/export.cpp
#, fuzzy
msgid "Orientation"
msgstr "CrannBeochan"
#: main/main.cpp scene/gui/scroll_container.cpp scene/gui/text_edit.cpp
-#: scene/main/scene_tree.cpp
+#: scene/main/scene_tree.cpp scene/register_scene_types.cpp
msgid "Common"
msgstr ""
@@ -14860,7 +15334,7 @@ msgid "Verbose stdout"
msgstr ""
#: main/main.cpp
-msgid "Frame Delay (msec)"
+msgid "Frame Delay Msec"
msgstr ""
#: main/main.cpp
@@ -14978,11 +15452,6 @@ msgstr ""
msgid "Tooltip Position Offset"
msgstr ""
-#: main/main.cpp modules/mono/editor/csharp_project.cpp
-#: modules/mono/mono_gd/gd_mono.cpp
-msgid "Mono"
-msgstr ""
-
#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp
msgid "Debugger Agent"
msgstr ""
@@ -15508,7 +15977,7 @@ msgstr ""
msgid "Intensity"
msgstr ""
-#: modules/gltf/gltf_light.cpp scene/2d/light_2d.cpp
+#: modules/gltf/gltf_light.cpp scene/2d/light_2d.cpp scene/3d/light.cpp
msgid "Range"
msgstr ""
@@ -15641,11 +16110,6 @@ msgstr ""
msgid "Use Named Skin Binds"
msgstr ""
-#: modules/gltf/gltf_state.cpp scene/3d/physics_joint.cpp
-#, fuzzy
-msgid "Nodes"
-msgstr "Nód Measc"
-
#: modules/gltf/gltf_state.cpp
msgid "Buffer Views"
msgstr ""
@@ -15655,14 +16119,6 @@ msgid "Accessors"
msgstr ""
#: modules/gltf/gltf_state.cpp
-msgid "Meshes"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp
-msgid "Materials"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp
#, fuzzy
msgid "Scene Name"
msgstr "Cruthaigh"
@@ -15678,15 +16134,11 @@ msgstr "Nód UrcharAmháin"
msgid "Textures"
msgstr ""
-#: modules/gltf/gltf_state.cpp
+#: modules/gltf/gltf_state.cpp platform/uwp/export/export.cpp
msgid "Images"
msgstr ""
#: modules/gltf/gltf_state.cpp
-msgid "Skins"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp
msgid "Cameras"
msgstr ""
@@ -15717,10 +16169,14 @@ msgid "Src Image"
msgstr ""
#: modules/gridmap/grid_map.cpp
-msgid "Physics Material"
+msgid "Mesh Library"
msgstr ""
#: modules/gridmap/grid_map.cpp
+msgid "Physics Material"
+msgstr ""
+
+#: modules/gridmap/grid_map.cpp scene/3d/visual_instance.cpp
msgid "Use In Baked Light"
msgstr ""
@@ -15750,6 +16206,7 @@ msgstr "Nód Cumaisc2"
#: modules/gridmap/grid_map.cpp scene/2d/collision_object_2d.cpp
#: scene/2d/tile_map.cpp scene/3d/collision_object.cpp scene/3d/soft_body.cpp
+#: scene/resources/material.cpp
msgid "Mask"
msgstr ""
@@ -15931,7 +16388,9 @@ msgid "Ultra Quality Ray Count"
msgstr ""
#: modules/minimp3/audio_stream_mp3.cpp
+#: modules/minimp3/resource_importer_mp3.cpp
#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp
+#: modules/stb_vorbis/resource_importer_ogg_vorbis.cpp
msgid "Loop Offset"
msgstr ""
@@ -16965,6 +17424,167 @@ msgid "The package must have at least one '.' separator."
msgstr ""
#: platform/android/export/export_plugin.cpp
+msgid "Use Custom Build"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Export Format"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Keystore"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Debug User"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+msgid "Debug Password"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Release User"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Release Password"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "One Click Deploy"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Clear Previous Install"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp scene/resources/shader.cpp
+msgid "Code"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Min SDK"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Target SDK"
+msgstr "Nód Cumaisc2"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+msgid "Package"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Unique Name"
+msgstr "Nód Beochana"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Signed"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Classify As Game"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Retain Data On Uninstall"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Exclude From Recents"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Graphics"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "OpenGL Debug"
+msgstr "Oscailte"
+
+#: platform/android/export/export_plugin.cpp
+msgid "XR Features"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "XR Mode"
+msgstr "Nód Beochana"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Hand Tracking"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Hand Tracking Frequency"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Passthrough"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Immersive Mode"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Support Small"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Support Normal"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Support Large"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Support Xlarge"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "User Data Backup"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Allow"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+msgid "Command Line"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+msgid "Extra Args"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "APK Expansion"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Salt"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Public Key"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Permissions"
+msgstr "Athrú: "
+
+#: platform/android/export/export_plugin.cpp
+msgid "Custom Permissions"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
msgid "Select device from the list"
msgstr ""
@@ -17251,6 +17871,166 @@ msgid "The character '%s' is not allowed in Identifier."
msgstr ""
#: platform/iphone/export/export.cpp
+msgid "App Store Team ID"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Provisioning Profile UUID Debug"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Code Sign Identity Debug"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Export Method Debug"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Provisioning Profile UUID Release"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Code Sign Identity Release"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Export Method Release"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Targeted Device Family"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Info"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Identifier"
+msgstr "Tá aitheantóir ar iarraidh."
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Signature"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Short Version"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/windows/export/export.cpp
+msgid "Copyright"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Capabilities"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Access Wi-Fi"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Push Notifications"
+msgstr ""
+
+#: platform/iphone/export/export.cpp scene/3d/baked_lightmap.cpp
+msgid "User Data"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Accessible From Files App"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Accessible From Itunes Sharing"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Privacy"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Camera Usage Description"
+msgstr "Cuntas:"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Microphone Usage Description"
+msgstr "Cuntas:"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Photolibrary Usage Description"
+msgstr "Cuntas:"
+
+#: platform/iphone/export/export.cpp
+msgid "iPhone 120 X 120"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPhone 180 X 180"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 76 X 76"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 152 X 152"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 167 X 167"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "App Store 1024 X 1024"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Spotlight 40 X 40"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Spotlight 80 X 80"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Storyboard"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Use Launch Screen Storyboard"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Image Scale Mode"
+msgstr "Nód Cumaisc2"
+
+#: platform/iphone/export/export.cpp
+msgid "Custom Image @2x"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Custom Image @3x"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Use Custom BG Color"
+msgstr "Cruthaigh"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Custom BG Color"
+msgstr "Cruthaigh"
+
+#: platform/iphone/export/export.cpp
msgid "App Store Team ID not specified - cannot configure the project."
msgstr ""
@@ -17287,6 +18067,76 @@ msgid "Could not read file:"
msgstr ""
#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Variant"
+msgstr "Cuntas:"
+
+#: platform/javascript/export/export.cpp
+msgid "Export Type"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "VRAM Texture Compression"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "For Desktop"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "For Mobile"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Html"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Export Icon"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Custom Html Shell"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Head Include"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Canvas Resize Policy"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Focus Canvas On Start"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Experimental Virtual Keyboard"
+msgstr "Scagairí..."
+
+#: platform/javascript/export/export.cpp
+msgid "Progressive Web App"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Offline Page"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 144 X 144"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 180 X 180"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 512 X 512"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
msgid "Could not read HTML shell:"
msgstr ""
@@ -17391,6 +18241,188 @@ msgid "Unknown object type."
msgstr ""
#: platform/osx/export/export.cpp
+msgid "App Category"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "High Res"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Location Usage Description"
+msgstr "Cuntas:"
+
+#: platform/osx/export/export.cpp
+msgid "Address Book Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Calendar Usage Description"
+msgstr "Cuntas:"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Photos Library Usage Description"
+msgstr "Cuntas:"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Desktop Folder Usage Description"
+msgstr "Cuntas:"
+
+#: platform/osx/export/export.cpp
+msgid "Documents Folder Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Downloads Folder Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Network Volumes Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Removable Volumes Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#, fuzzy
+msgid "Codesign"
+msgstr "Nód Measc"
+
+#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
+#: platform/windows/export/export.cpp
+msgid "Identity"
+msgstr ""
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+msgid "Timestamp"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Hardened Runtime"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Replace Existing Signature"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Entitlements"
+msgstr "Ãbhar:"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Custom File"
+msgstr "Cruthaigh"
+
+#: platform/osx/export/export.cpp
+msgid "Allow JIT Code Execution"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Allow Unsigned Executable Memory"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Allow Dyld Environment Variables"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Disable Library Validation"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Audio Input"
+msgstr "Cuir ionchur leis"
+
+#: platform/osx/export/export.cpp
+msgid "Address Book"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Calendars"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Photos Library"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Apple Events"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Debugging"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "App Sandbox"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Network Server"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Network Client"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Device Usb"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Device Bluetooth"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Files Downloads"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Files Pictures"
+msgstr "Scagairí..."
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Files Music"
+msgstr "Amharc ar Chomhaid"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Files Movies"
+msgstr "Scagairí..."
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#, fuzzy
+msgid "Custom Options"
+msgstr "Cruthaigh"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Notarization"
+msgstr "CrannBeochan"
+
+#: platform/osx/export/export.cpp
+msgid "Apple ID Name"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Apple ID Password"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Apple Team ID"
+msgstr ""
+
+#: platform/osx/export/export.cpp
msgid ""
"Note: The notarization process generally takes less than an hour. When the "
"process is completed, you'll receive an email."
@@ -17580,6 +18612,124 @@ msgid "Force Builtin Codesign"
msgstr ""
#: platform/uwp/export/export.cpp
+msgid "Architecture"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Display Name"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Short Name"
+msgstr "Cruthaigh"
+
+#: platform/uwp/export/export.cpp
+msgid "Publisher"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Publisher Display Name"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Product Guid"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Publisher Guid"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Signing"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Certificate"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Algorithm"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Major"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Minor"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Build"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Revision"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Landscape"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Portrait"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Landscape Flipped"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Portrait Flipped"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Store Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 44 X 44 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 71 X 71 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 150 X 150 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 310 X 310 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Wide 310 X 150 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Splash Screen"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Tiles"
+msgstr "Amharc ar Chomhaid"
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Square 150 X 150"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Wide 310 X 150"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Square 310 X 310"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
msgid "Invalid package short name."
msgstr ""
@@ -17644,11 +18794,44 @@ msgid "Debug Certificate"
msgstr ""
#: platform/uwp/export/export.cpp
-msgid "Debug Password"
+msgid "Debug Algorithm"
msgstr ""
-#: platform/uwp/export/export.cpp
-msgid "Debug Algorithm"
+#: platform/windows/export/export.cpp
+msgid "Identity Type"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Timestamp Server URL"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Digest Algorithm"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "File Version"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Product Version"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Company Name"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Product Name"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "File Description"
+msgstr "Cuntas:"
+
+#: platform/windows/export/export.cpp
+msgid "Trademarks"
msgstr ""
#: platform/windows/export/export.cpp
@@ -17717,12 +18900,14 @@ msgstr ""
msgid "Centered"
msgstr "Nód Cumaisc2"
-#: scene/2d/animated_sprite.cpp scene/2d/camera_2d.cpp scene/2d/light_2d.cpp
+#: scene/2d/animated_sprite.cpp scene/2d/camera_2d.cpp
+#: scene/2d/cpu_particles_2d.cpp scene/2d/light_2d.cpp
#: scene/2d/parallax_background.cpp scene/2d/parallax_layer.cpp
#: scene/2d/path_2d.cpp scene/2d/polygon_2d.cpp scene/2d/sprite.cpp
-#: scene/3d/path.cpp scene/3d/physics_body.cpp scene/3d/sprite_3d.cpp
-#: scene/gui/graph_node.cpp scene/gui/rich_text_effect.cpp
-#: scene/main/canvas_layer.cpp scene/resources/material.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/path.cpp scene/3d/physics_body.cpp
+#: scene/3d/sprite_3d.cpp scene/gui/graph_node.cpp
+#: scene/gui/rich_text_effect.cpp scene/main/canvas_layer.cpp
+#: scene/resources/material.cpp scene/resources/particles_material.cpp
#: scene/resources/style_box.cpp
msgid "Offset"
msgstr ""
@@ -17786,11 +18971,6 @@ msgstr ""
msgid "Override"
msgstr ""
-#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
-#: scene/audio/audio_stream_player.cpp scene/gui/video_player.cpp
-msgid "Stream"
-msgstr ""
-
#: scene/2d/audio_stream_player_2d.cpp scene/audio/audio_stream_player.cpp
#: scene/gui/video_player.cpp servers/audio/effects/audio_effect_amplify.cpp
msgid "Volume dB"
@@ -17815,12 +18995,12 @@ msgid "Stream Paused"
msgstr ""
#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
-#: scene/3d/reflection_probe.cpp scene/3d/visual_instance.cpp
-#: scene/resources/material.cpp
+#: scene/3d/light.cpp scene/3d/reflection_probe.cpp
+#: scene/3d/visual_instance.cpp scene/resources/material.cpp
msgid "Max Distance"
msgstr ""
-#: scene/2d/audio_stream_player_2d.cpp
+#: scene/2d/audio_stream_player_2d.cpp scene/3d/light.cpp
#, fuzzy
msgid "Attenuation"
msgstr "CrannBeochan"
@@ -17869,6 +19049,22 @@ msgstr ""
msgid "Limit"
msgstr ""
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/style_box.cpp
+msgid "Left"
+msgstr ""
+
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/style_box.cpp
+msgid "Right"
+msgstr ""
+
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/dynamic_font.cpp scene/resources/style_box.cpp
+#, fuzzy
+msgid "Bottom"
+msgstr "Cruthaigh"
+
#: scene/2d/camera_2d.cpp
msgid "Smoothed"
msgstr ""
@@ -18064,13 +19260,6 @@ msgstr ""
msgid "Emitting"
msgstr ""
-#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp scene/3d/area.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
-#: scene/resources/environment.cpp
-#, fuzzy
-msgid "Amount"
-msgstr "Méid:"
-
#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp
#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
msgid "Lifetime"
@@ -18131,17 +19320,12 @@ msgstr ""
#: scene/2d/mesh_instance_2d.cpp scene/2d/multimesh_instance_2d.cpp
#: scene/2d/particles_2d.cpp scene/2d/polygon_2d.cpp scene/2d/sprite.cpp
#: scene/3d/sprite_3d.cpp scene/gui/nine_patch_rect.cpp
-#: scene/gui/texture_rect.cpp scene/resources/sky.cpp
-#: scene/resources/style_box.cpp scene/resources/visual_shader_nodes.cpp
+#: scene/gui/texture_rect.cpp scene/resources/material.cpp
+#: scene/resources/sky.cpp scene/resources/style_box.cpp
+#: scene/resources/visual_shader_nodes.cpp
msgid "Texture"
msgstr ""
-#: scene/2d/cpu_particles_2d.cpp scene/2d/mesh_instance_2d.cpp
-#: scene/2d/multimesh_instance_2d.cpp scene/2d/particles_2d.cpp
-#: scene/2d/sprite.cpp scene/resources/style_box.cpp
-msgid "Normal Map"
-msgstr ""
-
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
msgid "Emission Shape"
@@ -18161,9 +19345,8 @@ msgid "Normals"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/3d/sprite_3d.cpp scene/resources/material.cpp
-#: scene/resources/particles_material.cpp scene/resources/texture.cpp
-msgid "Flags"
+#: scene/resources/particles_material.cpp
+msgid "Align Y"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
@@ -18184,6 +19367,11 @@ msgid "Initial Velocity"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Velocity Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp servers/physics_2d_server.cpp
#: servers/physics_server.cpp
msgid "Angular Velocity"
@@ -18191,6 +19379,12 @@ msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Velocity Curve"
+msgstr "Scála:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
msgid "Orbit Velocity"
msgstr ""
@@ -18201,6 +19395,22 @@ msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+msgid "Accel"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Accel Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Accel Curve"
+msgstr "Scála:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
msgid "Radial Accel"
msgstr ""
@@ -18210,19 +19420,54 @@ msgid "Tangential Accel"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/2d/joints_2d.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/vehicle_body.cpp
-#: scene/resources/particles_material.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/physics_joint.cpp
+#: scene/3d/vehicle_body.cpp scene/resources/particles_material.cpp
#: servers/audio/effects/audio_effect_reverb.cpp
msgid "Damping"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+msgid "Damping Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Damping Curve"
+msgstr "Scála:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp scene/3d/light.cpp
+#: scene/resources/particles_material.cpp
msgid "Angle"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+msgid "Angle Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Angle Curve"
+msgstr "Scála:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#, fuzzy
+msgid "Scale Amount"
+msgstr "Méid:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+msgid "Scale Amount Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+msgid "Scale Amount Curve"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
msgid "Color Ramp"
msgstr ""
@@ -18237,6 +19482,47 @@ msgstr ""
msgid "Hue Variation"
msgstr "Cuntas:"
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Variation"
+msgstr "Cuntas:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Variation Random"
+msgstr "Cuntas:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Variation Curve"
+msgstr "Cuntas:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Speed Random"
+msgstr "Scála:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Speed Curve"
+msgstr "Scála:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Offset Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Offset Curve"
+msgstr "Scála:"
+
#: scene/2d/joints_2d.cpp
msgid "Node A and Node B must be PhysicsBody2Ds"
msgstr ""
@@ -18268,6 +19554,7 @@ msgid "Node B"
msgstr "Nód Measc"
#: scene/2d/joints_2d.cpp scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp
+#: scene/3d/light.cpp scene/3d/physics_joint.cpp
#: scene/resources/environment.cpp
msgid "Bias"
msgstr ""
@@ -18276,7 +19563,7 @@ msgstr ""
msgid "Disable Collision"
msgstr ""
-#: scene/2d/joints_2d.cpp
+#: scene/2d/joints_2d.cpp scene/3d/physics_joint.cpp
msgid "Softness"
msgstr ""
@@ -18293,7 +19580,7 @@ msgstr ""
msgid "Rest Length"
msgstr ""
-#: scene/2d/joints_2d.cpp scene/3d/vehicle_body.cpp
+#: scene/2d/joints_2d.cpp scene/3d/physics_joint.cpp scene/3d/vehicle_body.cpp
msgid "Stiffness"
msgstr ""
@@ -18312,7 +19599,7 @@ msgid "Texture Scale"
msgstr ""
#: scene/2d/light_2d.cpp scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp
-#: scene/resources/environment.cpp scene/resources/sky.cpp
+#: scene/3d/light.cpp scene/resources/environment.cpp scene/resources/sky.cpp
msgid "Energy"
msgstr ""
@@ -18348,12 +19635,6 @@ msgstr ""
msgid "Gradient Length"
msgstr ""
-#: scene/2d/light_2d.cpp scene/gui/control.cpp
-#: scene/resources/navigation_mesh.cpp
-#, fuzzy
-msgid "Filter"
-msgstr "Scagairí..."
-
#: scene/2d/light_2d.cpp
#, fuzzy
msgid "Filter Smooth"
@@ -18730,10 +20011,6 @@ msgid "Applied Forces"
msgstr ""
#: scene/2d/physics_body_2d.cpp
-msgid "Force"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp
msgid "Torque"
msgstr ""
@@ -18746,7 +20023,7 @@ msgid "Sync To Physics"
msgstr ""
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-msgid "Moving platform"
+msgid "Moving Platform"
msgstr ""
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
@@ -18755,7 +20032,7 @@ msgstr ""
#: scene/2d/physics_body_2d.cpp scene/2d/touch_screen_button.cpp
#: scene/3d/physics_body.cpp scene/gui/texture_button.cpp
-#: scene/resources/line_shape_2d.cpp
+#: scene/resources/line_shape_2d.cpp scene/resources/material.cpp
msgid "Normal"
msgstr ""
@@ -18965,6 +20242,31 @@ msgid ""
"as parent."
msgstr ""
+#: scene/2d/visibility_notifier_2d.cpp scene/3d/visibility_notifier.cpp
+#, fuzzy
+msgid "Pause Animations"
+msgstr "CrannBeochan"
+
+#: scene/2d/visibility_notifier_2d.cpp scene/3d/visibility_notifier.cpp
+msgid "Freeze Bodies"
+msgstr ""
+
+#: scene/2d/visibility_notifier_2d.cpp
+msgid "Pause Particles"
+msgstr ""
+
+#: scene/2d/visibility_notifier_2d.cpp
+msgid "Pause Animated Sprites"
+msgstr ""
+
+#: scene/2d/visibility_notifier_2d.cpp
+msgid "Process Parent"
+msgstr ""
+
+#: scene/2d/visibility_notifier_2d.cpp
+msgid "Physics Process Parent"
+msgstr ""
+
#: scene/3d/area.cpp
msgid "Reverb Bus"
msgstr ""
@@ -19057,6 +20359,7 @@ msgid "Attenuation Filter"
msgstr ""
#: scene/3d/audio_stream_player_3d.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
#: servers/audio/effects/audio_effect_filter.cpp
msgid "Cutoff Hz"
msgstr ""
@@ -19096,10 +20399,6 @@ msgid "Octree"
msgstr ""
#: scene/3d/baked_lightmap.cpp
-msgid "User Data"
-msgstr ""
-
-#: scene/3d/baked_lightmap.cpp
msgid "Finding meshes and lights"
msgstr ""
@@ -19335,6 +20634,16 @@ msgid "Ring Axis"
msgstr ""
#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Rotate Y"
+msgstr "Nód Beochana"
+
+#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Disable Z"
+msgstr "Scrios ionchur"
+
+#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
msgid "Flatness"
msgstr ""
@@ -19370,15 +20679,11 @@ msgstr ""
msgid "Dynamic Range"
msgstr ""
-#: scene/3d/gi_probe.cpp
+#: scene/3d/gi_probe.cpp scene/3d/light.cpp
msgid "Normal Bias"
msgstr ""
#: scene/3d/gi_probe.cpp
-msgid "Compress"
-msgstr ""
-
-#: scene/3d/gi_probe.cpp
msgid "Plotting Meshes"
msgstr ""
@@ -19404,15 +20709,28 @@ msgid "Subdiv"
msgstr ""
#: scene/3d/light.cpp
+msgid "Indirect Energy"
+msgstr ""
+
+#: scene/3d/light.cpp
msgid "Negative"
msgstr ""
#: scene/3d/light.cpp
+msgid "Specular"
+msgstr ""
+
+#: scene/3d/light.cpp
#, fuzzy
msgid "Bake Mode"
msgstr "Nód Cumaisc2"
#: scene/3d/light.cpp
+#, fuzzy
+msgid "Contact"
+msgstr "Ãbhar:"
+
+#: scene/3d/light.cpp
msgid "Reverse Cull Face"
msgstr ""
@@ -19421,12 +20739,29 @@ msgid "Directional Shadow"
msgstr ""
#: scene/3d/light.cpp
+msgid "Split 1"
+msgstr ""
+
+#: scene/3d/light.cpp
+msgid "Split 2"
+msgstr ""
+
+#: scene/3d/light.cpp
+msgid "Split 3"
+msgstr ""
+
+#: scene/3d/light.cpp
#, fuzzy
msgid "Blend Splits"
msgstr "Cumaisc 0:"
#: scene/3d/light.cpp
#, fuzzy
+msgid "Bias Split Scale"
+msgstr "Scála:"
+
+#: scene/3d/light.cpp
+#, fuzzy
msgid "Depth Range"
msgstr "Scála:"
@@ -19452,6 +20787,11 @@ msgstr ""
msgid "Spot"
msgstr ""
+#: scene/3d/light.cpp
+#, fuzzy
+msgid "Angle Attenuation"
+msgstr "CrannBeochan"
+
#: scene/3d/mesh_instance.cpp
msgid "Software Skinning"
msgstr ""
@@ -19569,6 +20909,57 @@ msgid "Axis Lock"
msgstr ""
#: scene/3d/physics_body.cpp
+msgid "Linear X"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Linear Y"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Linear Z"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Angular X"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Angular Y"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Angular Z"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Motion X"
+msgstr "CrannBeochan"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Motion Y"
+msgstr "CrannBeochan"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Motion Z"
+msgstr "CrannBeochan"
+
+#: scene/3d/physics_body.cpp
+msgid "Move Lock X"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Move Lock Y"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Move Lock Z"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
msgid "Body Offset"
msgstr ""
@@ -19601,6 +20992,14 @@ msgid "Exclude Nodes"
msgstr ""
#: scene/3d/physics_joint.cpp
+msgid "Params"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Impulse Clamp"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit"
msgstr ""
@@ -19612,6 +21011,51 @@ msgstr ""
msgid "Lower"
msgstr ""
+#: scene/3d/physics_joint.cpp scene/3d/vehicle_body.cpp
+#, fuzzy
+msgid "Relaxation"
+msgstr "Cuntas:"
+
+#: scene/3d/physics_joint.cpp
+msgid "Motor"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Target Velocity"
+msgstr "Nód Cumaisc2"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Max Impulse"
+msgstr "Scála:"
+
+#: scene/3d/physics_joint.cpp
+msgid "Linear Limit"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Upper Distance"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Lower Distance"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Restitution"
+msgstr "Cuntas:"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motion"
+msgstr "CrannBeochan"
+
+#: scene/3d/physics_joint.cpp
+msgid "Linear Ortho"
+msgstr ""
+
#: scene/3d/physics_joint.cpp
msgid "Upper Angle"
msgstr ""
@@ -19621,6 +21065,15 @@ msgid "Lower Angle"
msgstr ""
#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Angular Motion"
+msgstr "CrannBeochan"
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Ortho"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
msgid "Swing Span"
msgstr ""
@@ -19629,17 +21082,89 @@ msgid "Twist Span"
msgstr ""
#: scene/3d/physics_joint.cpp
+msgid "Linear Limit X"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Linear Motor X"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Force Limit"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Linear Spring X"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Equilibrium Point"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit X"
msgstr ""
#: scene/3d/physics_joint.cpp
+msgid "Erp"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Motor X"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Spring X"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Linear Limit Y"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Linear Motor Y"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Linear Spring Y"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit Y"
msgstr ""
#: scene/3d/physics_joint.cpp
+msgid "Angular Motor Y"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Spring Y"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Linear Limit Z"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Linear Motor Z"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Linear Spring Z"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit Z"
msgstr ""
+#: scene/3d/physics_joint.cpp
+msgid "Angular Motor Z"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Spring Z"
+msgstr ""
+
#: scene/3d/portal.cpp
msgid "The RoomManager should not be a child or grandchild of a Portal."
msgstr ""
@@ -19745,7 +21270,7 @@ msgstr ""
msgid "Use Default Simplify"
msgstr ""
-#: scene/3d/room.cpp
+#: scene/3d/room.cpp scene/3d/room_manager.cpp
msgid "Room Simplify"
msgstr ""
@@ -19783,6 +21308,12 @@ msgstr ""
msgid "Main"
msgstr ""
+#: scene/3d/room_manager.cpp scene/animation/animation_player.cpp
+#: scene/animation/animation_tree.cpp scene/animation/animation_tree_player.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+msgid "Active"
+msgstr ""
+
#: scene/3d/room_manager.cpp
msgid "Roomlist"
msgstr ""
@@ -19804,6 +21335,48 @@ msgid "Gameplay"
msgstr ""
#: scene/3d/room_manager.cpp
+msgid "Gameplay Monitor"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "Use Secondary PVS"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Merge Meshes"
+msgstr "Scagairí..."
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Show Margins"
+msgstr "Ãbhar:"
+
+#: scene/3d/room_manager.cpp
+msgid "Debug Sprawl"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "Overlap Warning Threshold"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "Preview Camera"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "Portal Depth Limit"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "Default Portal Margin"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "Roaming Expansion Margin"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
msgid ""
"RoomList path is invalid.\n"
"Please check the RoomList branch has been assigned in the RoomManager."
@@ -19924,6 +21497,19 @@ msgstr ""
msgid "Billboard"
msgstr ""
+#: scene/3d/sprite_3d.cpp scene/resources/material.cpp
+#, fuzzy
+msgid "Transparent"
+msgstr "Athrú: "
+
+#: scene/3d/sprite_3d.cpp
+msgid "Shaded"
+msgstr ""
+
+#: scene/3d/sprite_3d.cpp
+msgid "Double Sided"
+msgstr ""
+
#: scene/3d/sprite_3d.cpp
msgid "Alpha Cut"
msgstr ""
@@ -19990,11 +21576,6 @@ msgstr ""
msgid "Max Force"
msgstr ""
-#: scene/3d/vehicle_body.cpp
-#, fuzzy
-msgid "Relaxation"
-msgstr "Cuntas:"
-
#: scene/3d/visibility_notifier.cpp
msgid "AABB"
msgstr ""
@@ -20117,7 +21698,7 @@ msgid "Fadeout Time"
msgstr ""
#: scene/animation/animation_blend_tree.cpp
-msgid "autorestart_"
+msgid "Auto Restart"
msgstr ""
#: scene/animation/animation_blend_tree.cpp
@@ -20193,12 +21774,6 @@ msgstr ""
msgid "Default Blend Time"
msgstr "Nód Cumaisc2"
-#: scene/animation/animation_player.cpp scene/animation/animation_tree.cpp
-#: scene/animation/animation_tree_player.cpp
-#: servers/audio/effects/audio_effect_delay.cpp
-msgid "Active"
-msgstr ""
-
#: scene/animation/animation_player.cpp
msgid "Method Call Mode"
msgstr ""
@@ -20313,10 +21888,6 @@ msgstr "Nód Cumaisc2"
msgid "Max Iterations"
msgstr "Cruthaigh"
-#: scene/animation/tween.cpp scene/resources/texture.cpp
-msgid "Repeat"
-msgstr ""
-
#: scene/animation/tween.cpp
msgid "Playback Process Mode"
msgstr ""
@@ -20343,18 +21914,6 @@ msgstr ""
msgid "Alignment"
msgstr ""
-#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
-#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
-#: scene/resources/style_box.cpp
-msgid "Horizontal"
-msgstr ""
-
-#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
-#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
-#: scene/resources/style_box.cpp
-msgid "Vertical"
-msgstr ""
-
#: scene/gui/base_button.cpp
msgid "Shortcut In Tooltip"
msgstr ""
@@ -20445,10 +22004,6 @@ msgid "HSV"
msgstr ""
#: scene/gui/color_picker.cpp
-msgid "Raw"
-msgstr ""
-
-#: scene/gui/color_picker.cpp
msgid "Switch between hexadecimal and code values."
msgstr ""
@@ -20503,6 +22058,30 @@ msgid "Focus"
msgstr ""
#: scene/gui/control.cpp
+msgid "Neighbour Left"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Neighbour Top"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Neighbour Right"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Neighbour Bottom"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Next"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Previous"
+msgstr ""
+
+#: scene/gui/control.cpp
msgid "Mouse"
msgstr ""
@@ -20536,7 +22115,7 @@ msgid "Dialog"
msgstr ""
#: scene/gui/dialogs.cpp
-msgid "Hide On Ok"
+msgid "Hide On OK"
msgstr ""
#: scene/gui/dialogs.cpp scene/gui/label.cpp
@@ -20621,7 +22200,7 @@ msgid "Timers"
msgstr ""
#: scene/gui/item_list.cpp scene/gui/popup_menu.cpp scene/gui/tree.cpp
-msgid "Incremental Search Max Interval (msec)"
+msgid "Incremental Search Max Interval Msec"
msgstr ""
#: scene/gui/item_list.cpp scene/gui/tree.cpp
@@ -21133,6 +22712,24 @@ msgstr "Nód Cumaisc2"
msgid "Nine Patch Stretch"
msgstr ""
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Left"
+msgstr "Ãbhar:"
+
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Top"
+msgstr "Ãbhar:"
+
+#: scene/gui/texture_progress.cpp
+msgid "Stretch Margin Right"
+msgstr ""
+
+#: scene/gui/texture_progress.cpp
+msgid "Stretch Margin Bottom"
+msgstr ""
+
#: scene/gui/tree.cpp
msgid "Custom Minimum Height"
msgstr ""
@@ -21166,7 +22763,7 @@ msgid "Paused"
msgstr ""
#: scene/gui/video_player.cpp
-msgid "Buffering (msec)"
+msgid "Buffering Msec"
msgstr ""
#: scene/gui/video_player.cpp
@@ -21478,6 +23075,22 @@ msgid "Shadow Atlas"
msgstr ""
#: scene/main/viewport.cpp
+msgid "Quad 0"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 1"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 2"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 3"
+msgstr ""
+
+#: scene/main/viewport.cpp
msgid "Canvas Transform"
msgstr ""
@@ -21490,6 +23103,10 @@ msgid "Tooltip Delay (sec)"
msgstr ""
#: scene/register_scene_types.cpp
+msgid "Swap OK Cancel"
+msgstr ""
+
+#: scene/register_scene_types.cpp
msgid "Use hiDPI"
msgstr ""
@@ -21502,18 +23119,6 @@ msgid "Custom Font"
msgstr ""
#: scene/resources/audio_stream_sample.cpp
-msgid "Loop Mode"
-msgstr ""
-
-#: scene/resources/audio_stream_sample.cpp
-msgid "Loop Begin"
-msgstr ""
-
-#: scene/resources/audio_stream_sample.cpp
-msgid "Loop End"
-msgstr ""
-
-#: scene/resources/audio_stream_sample.cpp
#: servers/audio/effects/audio_stream_generator.cpp servers/audio_server.cpp
#, fuzzy
msgid "Mix Rate"
@@ -21567,6 +23172,15 @@ msgid "Extra Spacing"
msgstr ""
#: scene/resources/dynamic_font.cpp
+msgid "Char"
+msgstr ""
+
+#: scene/resources/dynamic_font.cpp scene/resources/world.cpp
+#: scene/resources/world_2d.cpp
+msgid "Space"
+msgstr ""
+
+#: scene/resources/dynamic_font.cpp
msgid "Font"
msgstr ""
@@ -21779,6 +23393,42 @@ msgid "Glow"
msgstr ""
#: scene/resources/environment.cpp
+msgid "Levels"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "1"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "2"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "3"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "4"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "5"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "6"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "7"
+msgstr ""
+
+#: scene/resources/environment.cpp
msgid "Bloom"
msgstr ""
@@ -21862,9 +23512,61 @@ msgid "Next Pass"
msgstr ""
#: scene/resources/material.cpp
+msgid "Use Shadow To Opacity"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Unshaded"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Vertex Lighting"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "No Depth Test"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Use Point Size"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "World Triplanar"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Fixed Size"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Albedo Tex Force sRGB"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Do Not Receive Shadows"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Disable Ambient Light"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Ensure Correct Normals"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Vertex Color"
msgstr ""
+#: scene/resources/material.cpp
+msgid "Use As Albedo"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Is sRGB"
+msgstr ""
+
#: scene/resources/material.cpp servers/visual_server.cpp
msgid "Parameters"
msgstr ""
@@ -21897,6 +23599,11 @@ msgid "Billboard Mode"
msgstr "Nód Cumaisc2"
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Billboard Keep Scale"
+msgstr "Nód Cumaisc2"
+
+#: scene/resources/material.cpp
msgid "Grow"
msgstr ""
@@ -21906,6 +23613,10 @@ msgid "Grow Amount"
msgstr "Méid:"
#: scene/resources/material.cpp
+msgid "Use Alpha Scissor"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Alpha Scissor Threshold"
msgstr ""
@@ -21934,10 +23645,18 @@ msgid "Metallic Specular"
msgstr ""
#: scene/resources/material.cpp
+msgid "Metallic Texture"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Metallic Texture Channel"
msgstr ""
#: scene/resources/material.cpp
+msgid "Roughness Texture"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Roughness Texture Channel"
msgstr ""
@@ -21954,6 +23673,14 @@ msgid "Emission Operator"
msgstr ""
#: scene/resources/material.cpp
+msgid "Emission On UV2"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Emission Texture"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "NormalMap"
msgstr ""
@@ -21966,6 +23693,10 @@ msgid "Rim Tint"
msgstr ""
#: scene/resources/material.cpp
+msgid "Rim Texture"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Clearcoat"
msgstr ""
@@ -21974,14 +23705,26 @@ msgid "Clearcoat Gloss"
msgstr ""
#: scene/resources/material.cpp
+msgid "Clearcoat Texture"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Anisotropy"
msgstr ""
#: scene/resources/material.cpp
+msgid "Anisotropy Flowmap"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Ambient Occlusion"
msgstr ""
#: scene/resources/material.cpp
+msgid "On UV2"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Texture Channel"
msgstr ""
@@ -22016,6 +23759,11 @@ msgstr "Athrú: "
#: scene/resources/material.cpp
#, fuzzy
+msgid "Transmission Texture"
+msgstr "Athrú: "
+
+#: scene/resources/material.cpp
+#, fuzzy
msgid "Refraction"
msgstr "Cuntas:"
@@ -22032,6 +23780,10 @@ msgid "UV1"
msgstr ""
#: scene/resources/material.cpp
+msgid "Triplanar"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Triplanar Sharpness"
msgstr ""
@@ -22218,6 +23970,15 @@ msgstr ""
msgid "Point Count"
msgstr "Cuir ionchur leis"
+#: scene/resources/particles_material.cpp
+msgid "Scale Random"
+msgstr ""
+
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Scale Curve"
+msgstr "Scála:"
+
#: scene/resources/physics_material.cpp
msgid "Rough"
msgstr ""
@@ -22275,10 +24036,6 @@ msgid "A"
msgstr ""
#: scene/resources/shader.cpp
-msgid "Code"
-msgstr ""
-
-#: scene/resources/shader.cpp
msgid "Custom Defines"
msgstr ""
@@ -22367,14 +24124,6 @@ msgid "Grow End"
msgstr ""
#: scene/resources/texture.cpp
-msgid "Storage"
-msgstr ""
-
-#: scene/resources/texture.cpp
-msgid "Lossy Quality"
-msgstr ""
-
-#: scene/resources/texture.cpp
#, fuzzy
msgid "Load Path"
msgstr "Cosán"
@@ -22487,10 +24236,6 @@ msgstr ""
msgid "Fallback Environment"
msgstr ""
-#: scene/resources/world.cpp scene/resources/world_2d.cpp
-msgid "Space"
-msgstr ""
-
#: scene/resources/world.cpp
msgid "Scenario"
msgstr ""
@@ -22564,8 +24309,34 @@ msgstr ""
msgid "Wet"
msgstr ""
-#: servers/audio/effects/audio_effect_compressor.cpp
-msgid "Threshold"
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "Voice"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+msgid "Delay (ms)"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_phaser.cpp
+msgid "Rate Hz"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#, fuzzy
+msgid "Depth (ms)"
+msgstr "Scála:"
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+msgid "Level dB"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+#: servers/audio/effects/audio_effect_panner.cpp
+msgid "Pan"
msgstr ""
#: servers/audio/effects/audio_effect_compressor.cpp
@@ -22590,19 +24361,6 @@ msgid "Tap 1"
msgstr ""
#: servers/audio/effects/audio_effect_delay.cpp
-msgid "Delay (ms)"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_delay.cpp
-msgid "Level dB"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_delay.cpp
-#: servers/audio/effects/audio_effect_panner.cpp
-msgid "Pan"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_delay.cpp
msgid "Tap 2"
msgstr ""
@@ -22661,10 +24419,6 @@ msgstr ""
msgid "Range Max Hz"
msgstr ""
-#: servers/audio/effects/audio_effect_phaser.cpp
-msgid "Rate Hz"
-msgstr ""
-
#: servers/audio/effects/audio_effect_pitch_shift.cpp
msgid "Oversampling"
msgstr ""
@@ -22679,7 +24433,7 @@ msgid "Predelay"
msgstr ""
#: servers/audio/effects/audio_effect_reverb.cpp
-msgid "(msec)"
+msgid "Msec"
msgstr ""
#: servers/audio/effects/audio_effect_reverb.cpp
diff --git a/editor/translations/gl.po b/editor/translations/gl.po
index 7971450244..49ffe9cf85 100644
--- a/editor/translations/gl.po
+++ b/editor/translations/gl.po
@@ -21,7 +21,7 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 4.8-dev\n"
-#: core/bind/core_bind.cpp
+#: core/bind/core_bind.cpp main/main.cpp
msgid "Tablet Driver"
msgstr ""
@@ -122,8 +122,8 @@ msgstr "Posición do Panel"
#: core/bind/core_bind.cpp editor/editor_settings.cpp main/main.cpp
#: modules/gdscript/gdscript_editor.cpp modules/gridmap/grid_map.cpp
#: modules/mono/csharp_script.cpp modules/visual_script/visual_script_nodes.cpp
-#: scene/2d/tile_map.cpp scene/3d/camera.cpp scene/gui/control.cpp
-#: scene/gui/graph_edit.cpp scene/main/viewport.cpp
+#: scene/2d/tile_map.cpp scene/3d/camera.cpp scene/3d/light.cpp
+#: scene/gui/control.cpp scene/gui/graph_edit.cpp scene/main/viewport.cpp
#: scene/resources/dynamic_font.cpp scene/resources/navigation_mesh.cpp
#: scene/resources/primitive_meshes.cpp scene/resources/sky.cpp
#: scene/resources/style_box.cpp scene/resources/texture.cpp
@@ -226,8 +226,7 @@ msgid "Data"
msgstr ""
#: core/io/file_access_network.cpp core/register_core_types.cpp
-#: editor/editor_settings.cpp editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp main/main.cpp
+#: editor/editor_settings.cpp main/main.cpp
#: modules/gdscript/language_server/gdscript_language_server.cpp
#, fuzzy
msgid "Network"
@@ -509,9 +508,10 @@ msgstr "Axustes de Importación"
msgid "Relative"
msgstr "Axuste Relativo"
-#: core/os/input_event.cpp scene/2d/camera_2d.cpp
-#: scene/3d/interpolated_camera.cpp scene/animation/animation_player.cpp
-#: scene/resources/environment.cpp
+#: core/os/input_event.cpp scene/2d/camera_2d.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/interpolated_camera.cpp
+#: scene/animation/animation_player.cpp scene/resources/environment.cpp
+#: scene/resources/particles_material.cpp
#, fuzzy
msgid "Speed"
msgstr "Velocidade:"
@@ -561,8 +561,9 @@ msgstr "Uso"
msgid "Pitch"
msgstr "Cabeceo"
-#: core/os/input_event.cpp scene/2d/physics_body_2d.cpp
-#: scene/3d/physics_body.cpp
+#: core/os/input_event.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/physics_body_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/3d/physics_body.cpp scene/resources/particles_material.cpp
#, fuzzy
msgid "Velocity"
msgstr "Inicializar"
@@ -581,6 +582,8 @@ msgid "Controller Value"
msgstr ""
#: core/project_settings.cpp editor/editor_node.cpp main/main.cpp
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/windows/export/export.cpp
#, fuzzy
msgid "Application"
msgstr "Acción"
@@ -599,13 +602,16 @@ msgstr "Axustes do Proxecto..."
#: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp
#: editor/editor_plugin_settings.cpp editor/editor_profiler.cpp
#: editor/project_manager.cpp editor/settings_config_dialog.cpp
-#: modules/gdnative/nativescript/nativescript.cpp scene/2d/area_2d.cpp
-#: scene/3d/area.cpp scene/main/node.cpp
+#: modules/gdnative/nativescript/nativescript.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/osx/export/export.cpp scene/2d/area_2d.cpp scene/3d/area.cpp
+#: scene/main/node.cpp
msgid "Name"
msgstr "Nome"
#: core/project_settings.cpp editor/editor_help.cpp
-#: modules/visual_script/visual_script_nodes.cpp
+#: modules/visual_script/visual_script_nodes.cpp platform/uwp/export/export.cpp
+#: platform/windows/export/export.cpp
msgid "Description"
msgstr "Descrición"
@@ -641,7 +647,7 @@ msgid "Custom User Dir Name"
msgstr ""
#: core/project_settings.cpp editor/animation_track_editor.cpp
-#: editor/editor_audio_buses.cpp servers/audio_server.cpp
+#: editor/editor_audio_buses.cpp main/main.cpp servers/audio_server.cpp
msgid "Audio"
msgstr "Son"
@@ -805,10 +811,13 @@ msgstr "Filtros:"
msgid "Sharpen Intensity"
msgstr ""
-#: core/project_settings.cpp editor/editor_node.cpp editor/editor_settings.cpp
-#: editor/plugins/script_editor_plugin.cpp editor/project_export.cpp
-#: main/main.cpp modules/gdscript/gdscript.cpp
-#: modules/visual_script/visual_script.cpp scene/3d/room_manager.cpp
+#: core/project_settings.cpp editor/editor_export.cpp editor/editor_node.cpp
+#: editor/editor_settings.cpp editor/plugins/script_editor_plugin.cpp
+#: editor/project_export.cpp main/main.cpp modules/gdscript/gdscript.cpp
+#: modules/visual_script/visual_script.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp scene/3d/room_manager.cpp
#: scene/main/scene_tree.cpp scene/resources/shape_2d.cpp
#: servers/visual_server.cpp
msgid "Debug"
@@ -1043,6 +1052,7 @@ msgid "Subsurface Scattering"
msgstr ""
#: drivers/gles3/rasterizer_scene_gles3.cpp
+#: editor/import/resource_importer_texture.cpp
#: editor/plugins/spatial_editor_plugin.cpp modules/gltf/gltf_node.cpp
#: modules/gridmap/grid_map.cpp scene/2d/cpu_particles_2d.cpp
#: scene/2d/node_2d.cpp scene/2d/parallax_layer.cpp scene/2d/polygon_2d.cpp
@@ -1340,6 +1350,7 @@ msgid "Editors"
msgstr "Editor"
#: editor/animation_track_editor.cpp editor/editor_settings.cpp
+#: editor/import/resource_importer_scene.cpp
#: editor/plugins/animation_player_editor_plugin.cpp editor/scene_tree_dock.cpp
#: scene/2d/animated_sprite.cpp scene/2d/cpu_particles_2d.cpp
#: scene/2d/sprite.cpp scene/3d/cpu_particles.cpp scene/3d/sprite_3d.cpp
@@ -1573,14 +1584,14 @@ msgstr "Valor de paso de animación."
msgid "Seconds"
msgstr "Segundos"
-#: editor/animation_track_editor.cpp
+#: editor/animation_track_editor.cpp editor/import/resource_importer_scene.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp main/main.cpp
#: scene/resources/texture.cpp
msgid "FPS"
msgstr "FPS"
#: editor/animation_track_editor.cpp editor/editor_plugin_settings.cpp
-#: editor/editor_resource_picker.cpp
+#: editor/editor_resource_picker.cpp editor/import/resource_importer_wav.cpp
#: editor/plugins/polygon_2d_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
@@ -2556,7 +2567,9 @@ msgid "Remove Autoload"
msgstr "Eliminar AutoCargador"
#: editor/editor_autoload_settings.cpp editor/editor_plugin_settings.cpp
-#: modules/gdscript/gdscript.cpp scene/2d/polygon_2d.cpp scene/3d/area.cpp
+#: modules/gdscript/gdscript.cpp platform/android/export/export_plugin.cpp
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#: scene/2d/polygon_2d.cpp scene/3d/area.cpp scene/3d/physics_joint.cpp
#: scene/3d/reflection_probe.cpp scene/main/canvas_layer.cpp
#: scene/resources/material.cpp servers/visual_server.cpp
msgid "Enable"
@@ -2728,6 +2741,58 @@ msgstr ""
#: editor/editor_export.cpp platform/android/export/export_plugin.cpp
#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Custom Template"
+msgstr "Editar Membro"
+
+#: editor/editor_export.cpp editor/project_export.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp
+msgid "Release"
+msgstr ""
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Binary Format"
+msgstr "Formato"
+
+#: editor/editor_export.cpp
+msgid "64 Bits"
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Embed PCK"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Texture Format"
+msgstr "Modo Regra"
+
+#: editor/editor_export.cpp
+msgid "BPTC"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "S3TC"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "ETC"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "ETC2"
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "No BPTC Fallbacks"
+msgstr ""
+
+#: editor/editor_export.cpp platform/android/export/export_plugin.cpp
+#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
msgid "Custom debug template not found."
msgstr "Non se encontrou un modelo de depuración personalizado."
@@ -2909,6 +2974,7 @@ msgid "Make Current"
msgstr "Convertelo no Actual"
#: editor/editor_feature_profile.cpp editor/editor_node.cpp
+#: editor/import/resource_importer_scene.cpp
#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
msgid "Import"
msgstr "Importar"
@@ -3039,8 +3105,11 @@ msgstr "Éxito!"
msgid "Display Mode"
msgstr "Modo de Reprodución:"
-#: editor/editor_file_dialog.cpp main/main.cpp modules/csg/csg_shape.cpp
-#: modules/visual_script/visual_script_nodes.cpp
+#: editor/editor_file_dialog.cpp
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+#: editor/import/resource_importer_wav.cpp main/main.cpp
+#: modules/csg/csg_shape.cpp modules/visual_script/visual_script_nodes.cpp
#: modules/visual_script/visual_script_yield_nodes.cpp scene/2d/light_2d.cpp
#: scene/2d/physics_body_2d.cpp scene/2d/tile_map.cpp
#: scene/3d/baked_lightmap.cpp scene/3d/light.cpp scene/3d/physics_body.cpp
@@ -3177,7 +3246,9 @@ msgstr "(Re)Importando Assets"
msgid "Reimport Missing Imported Files"
msgstr ""
-#: editor/editor_help.cpp
+#: editor/editor_help.cpp scene/2d/camera_2d.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/resources/dynamic_font.cpp
+#: scene/resources/style_box.cpp
msgid "Top"
msgstr "Superior"
@@ -3232,6 +3303,7 @@ msgid "Fonts"
msgstr "Fonte"
#: editor/editor_help.cpp editor/plugins/theme_editor_plugin.cpp
+#: platform/iphone/export/export.cpp
#, fuzzy
msgid "Icons"
msgstr "Icona"
@@ -3401,7 +3473,9 @@ msgstr ""
msgid "Pin value [Disabled because '%s' is editor-only]"
msgstr ""
-#: editor/editor_inspector.cpp editor/scene_tree_dock.cpp
+#: editor/editor_inspector.cpp
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+#: editor/scene_tree_dock.cpp
#: modules/visual_script/visual_script_func_nodes.cpp
#: modules/visual_script/visual_script_nodes.cpp
#: modules/visual_script/visual_script_property_selector.cpp
@@ -3745,6 +3819,16 @@ msgid "Quick Open Script..."
msgstr "Apertura Rápida de Script..."
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Save & Reload"
+msgstr "Gardar e Reinicar"
+
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Save changes to '%s' before reloading?"
+msgstr "Gardar os cambios de '%s' antes de pechar?"
+
+#: editor/editor_node.cpp
msgid "Save & Close"
msgstr "Gardar e Pechar"
@@ -3861,6 +3945,11 @@ msgid "Open Project Manager?"
msgstr "Abrir o Administrador de Proxectos?"
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Save changes to the following scene(s) before reloading?"
+msgstr "Gardar os cambios nas seguintes escenas antes de saír?"
+
+#: editor/editor_node.cpp
msgid "Save & Quit"
msgstr "Gardar e Saír"
@@ -4141,8 +4230,8 @@ msgstr "Parámetro Cambiado"
#: editor/editor_node.cpp
#, fuzzy
-msgid "Translate Properties"
-msgstr "Propiedades"
+msgid "Localize Settings"
+msgstr "Linguaxe"
#: editor/editor_node.cpp
#, fuzzy
@@ -4159,8 +4248,8 @@ msgstr "Inspector"
#: editor/editor_node.cpp
#, fuzzy
-msgid "Capitalize Properties"
-msgstr "Propiedades"
+msgid "Default Property Name Style"
+msgstr "Ruta do Proxecto:"
#: editor/editor_node.cpp
msgid "Default Float Step"
@@ -4757,7 +4846,9 @@ msgstr "Características Adicionais (Plugins) Instalados:"
msgid "Update"
msgstr "Actualizar"
-#: editor/editor_plugin_settings.cpp
+#: editor/editor_plugin_settings.cpp platform/android/export/export_plugin.cpp
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp
#, fuzzy
msgid "Version"
msgstr "Versión:"
@@ -5777,7 +5868,7 @@ msgstr "Recta Completa"
msgid "Rect Custom Position"
msgstr "Eliminar Polígono Personalizado"
-#: editor/editor_settings.cpp
+#: editor/editor_settings.cpp platform/android/export/export_plugin.cpp
msgid "Screen"
msgstr ""
@@ -5803,6 +5894,19 @@ msgid "Editor SSL Certificates"
msgstr ""
#: editor/editor_settings.cpp
+msgid "HTTP Proxy"
+msgstr ""
+
+#: editor/editor_settings.cpp
+msgid "Host"
+msgstr ""
+
+#: editor/editor_settings.cpp editor/fileserver/editor_file_server.cpp
+#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp
+msgid "Port"
+msgstr ""
+
+#: editor/editor_settings.cpp
msgid "Project Manager"
msgstr "Administrador de Proxectos"
@@ -5845,7 +5949,8 @@ msgstr ""
msgid "String Color"
msgstr "Almacenando Arquivo:"
-#: editor/editor_settings.cpp
+#: editor/editor_settings.cpp platform/javascript/export/export.cpp
+#: platform/uwp/export/export.cpp
#, fuzzy
msgid "Background Color"
msgstr "Elexir Cor"
@@ -6023,22 +6128,6 @@ msgid "Starting the download..."
msgstr ""
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "HTTP Proxy"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Host"
-msgstr ""
-
-#: editor/export_template_manager.cpp editor/fileserver/editor_file_server.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp main/main.cpp
-#: modules/mono/mono_gd/gd_mono.cpp
-msgid "Port"
-msgstr ""
-
-#: editor/export_template_manager.cpp
msgid "Error requesting URL:"
msgstr "Erro ao solicitar a URL:"
@@ -6290,6 +6379,7 @@ msgstr ""
#: editor/fileserver/editor_file_server.cpp
#: editor/plugins/version_control_editor_plugin.cpp
+#: platform/uwp/export/export.cpp platform/windows/export/export.cpp
msgid "Password"
msgstr ""
@@ -6670,6 +6760,117 @@ msgstr ""
msgid "Use Ambient"
msgstr ""
+#: editor/import/resource_importer_bitmask.cpp
+#, fuzzy
+msgid "Create From"
+msgstr "Crear Cartafol"
+
+#: editor/import/resource_importer_bitmask.cpp
+#: servers/audio/effects/audio_effect_compressor.cpp
+msgid "Threshold"
+msgstr ""
+
+#: editor/import/resource_importer_csv_translation.cpp
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_scene.cpp
+#: editor/import/resource_importer_texture.cpp
+#: editor/import/resource_importer_wav.cpp scene/3d/gi_probe.cpp
+#, fuzzy
+msgid "Compress"
+msgstr "Compoñentes"
+
+#: editor/import/resource_importer_csv_translation.cpp
+msgid "Delimiter"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+msgid "No BPTC If RGB"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/sprite_3d.cpp
+#: scene/resources/material.cpp scene/resources/particles_material.cpp
+#: scene/resources/texture.cpp
+msgid "Flags"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/animation/tween.cpp
+#: scene/resources/texture.cpp
+msgid "Repeat"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/2d/light_2d.cpp
+#: scene/gui/control.cpp scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Filter"
+msgstr "Filtros:"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Mipmaps"
+msgstr "Sinais"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+msgid "Anisotropic"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+msgid "sRGB"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#, fuzzy
+msgid "Slices"
+msgstr "Tódolos Dispositivos"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
+#: scene/resources/style_box.cpp
+#, fuzzy
+msgid "Horizontal"
+msgstr "Horizontal:"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
+#: scene/resources/style_box.cpp
+#, fuzzy
+msgid "Vertical"
+msgstr "Vertical:"
+
+#: editor/import/resource_importer_obj.cpp
+#, fuzzy
+msgid "Generate Tangents"
+msgstr "Número de Puntos Xerados:"
+
+#: editor/import/resource_importer_obj.cpp
+#, fuzzy
+msgid "Scale Mesh"
+msgstr "Modo Escalado"
+
+#: editor/import/resource_importer_obj.cpp
+#, fuzzy
+msgid "Offset Mesh"
+msgstr "Offset:"
+
+#: editor/import/resource_importer_obj.cpp
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Octahedral Compression"
+msgstr "Colisión"
+
+#: editor/import/resource_importer_obj.cpp
+#, fuzzy
+msgid "Optimize Mesh Flags"
+msgstr "Tamaño: "
+
#: editor/import/resource_importer_scene.cpp
msgid "Import as Single Scene"
msgstr ""
@@ -6710,6 +6911,155 @@ msgstr ""
msgid "Import as Multiple Scenes+Materials"
msgstr "Importar como Escenas e Materiales Múltiples"
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Nodes"
+msgstr "Nodo"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Root Type"
+msgstr "Tipo do Membro"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Root Name"
+msgstr "Remoto "
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Root Scale"
+msgstr "Escala:"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Custom Script"
+msgstr "Cortar Nodos"
+
+#: editor/import/resource_importer_scene.cpp scene/resources/texture.cpp
+#, fuzzy
+msgid "Storage"
+msgstr "Almacenando Arquivo:"
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Use Legacy Names"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+#, fuzzy
+msgid "Materials"
+msgstr "Parámetro Cambiado"
+
+#: editor/import/resource_importer_scene.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Location"
+msgstr "Linguaxe"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Keep On Reimport"
+msgstr "Reimportar"
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+#, fuzzy
+msgid "Meshes"
+msgstr "Malla"
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Ensure Tangents"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Light Baking"
+msgstr "Marcador de Sintaxe"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Lightmap Texel Size"
+msgstr "Axustar aos Píxeles"
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+msgid "Skins"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Use Named Skins"
+msgstr "Empregar Axuste de Escalado"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "External Files"
+msgstr "Abrir un Arquivo"
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Store In Subdir"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Filter Script"
+msgstr "Filtrar scripts"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Keep Custom Tracks"
+msgstr "Transformación"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Optimizer"
+msgstr "Optimizar"
+
+#: editor/import/resource_importer_scene.cpp main/main.cpp
+#: modules/mono/mono_gd/gd_mono.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp scene/2d/camera_2d.cpp scene/2d/light_2d.cpp
+#: scene/2d/navigation_polygon.cpp scene/2d/ray_cast_2d.cpp scene/2d/sprite.cpp
+#: scene/2d/y_sort.cpp scene/3d/audio_stream_player_3d.cpp
+#: scene/3d/baked_lightmap.cpp scene/3d/interpolated_camera.cpp
+#: scene/3d/light.cpp scene/3d/navigation_mesh_instance.cpp
+#: scene/3d/physics_joint.cpp scene/3d/ray_cast.cpp scene/3d/sprite_3d.cpp
+#: scene/gui/graph_edit.cpp scene/gui/rich_text_label.cpp
+#: scene/resources/curve.cpp scene/resources/environment.cpp
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Enabled"
+msgstr "Activar"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Max Linear Error"
+msgstr "Erro Lineal Máximo:"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Max Angular Error"
+msgstr "Erro Angular Máximo:"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Max Angle"
+msgstr "Valor"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Remove Unused Tracks"
+msgstr "Eliminar Pista de Animación"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Clips"
+msgstr "Clips de Animación"
+
+#: editor/import/resource_importer_scene.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/particles_2d.cpp scene/3d/area.cpp scene/3d/cpu_particles.cpp
+#: scene/3d/particles.cpp scene/resources/environment.cpp
+#, fuzzy
+msgid "Amount"
+msgstr "Cantidade:"
+
#: editor/import/resource_importer_scene.cpp
#: editor/plugins/mesh_library_editor_plugin.cpp
msgid "Import Scene"
@@ -6751,12 +7101,148 @@ msgstr ""
msgid "Saving..."
msgstr "Gardando..."
+#: editor/import/resource_importer_texture.cpp scene/resources/texture.cpp
+msgid "Lossy Quality"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "HDR Mode"
+msgstr "Elixir Modo"
+
+#: editor/import/resource_importer_texture.cpp
+msgid "BPTC LDR"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/mesh_instance_2d.cpp scene/2d/multimesh_instance_2d.cpp
+#: scene/2d/particles_2d.cpp scene/2d/sprite.cpp scene/resources/style_box.cpp
+msgid "Normal Map"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Process"
+msgstr "Mover Modo"
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Fix Alpha Border"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Premult Alpha"
+msgstr "Editar Polígono"
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Hdr As Srgb"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Invert Color"
+msgstr "Vertex"
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Normal Map Invert Y"
+msgstr "Formato"
+
+#: editor/import/resource_importer_texture.cpp
+#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
+#: scene/audio/audio_stream_player.cpp scene/gui/video_player.cpp
+msgid "Stream"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Size Limit"
+msgstr "Tamaño: "
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Detect 3D"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "SVG"
+msgstr "HSV"
+
#: editor/import/resource_importer_texture.cpp
msgid ""
"Warning, no suitable PC VRAM compression enabled in Project Settings. This "
"texture will not display correctly on PC."
msgstr ""
+#: editor/import/resource_importer_texture_atlas.cpp
+#, fuzzy
+msgid "Atlas File"
+msgstr "Todos os Arquivos (*)"
+
+#: editor/import/resource_importer_texture_atlas.cpp
+#, fuzzy
+msgid "Import Mode"
+msgstr "Importación"
+
+#: editor/import/resource_importer_texture_atlas.cpp
+#, fuzzy
+msgid "Crop To Region"
+msgstr "Rexión"
+
+#: editor/import/resource_importer_texture_atlas.cpp
+msgid "Trim Alpha Border From Region"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp scene/2d/physics_body_2d.cpp
+msgid "Force"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+msgid "8 Bit"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp main/main.cpp
+#: modules/mono/editor/csharp_project.cpp modules/mono/mono_gd/gd_mono.cpp
+msgid "Mono"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+#, fuzzy
+msgid "Max Rate"
+msgstr "Valor"
+
+#: editor/import/resource_importer_wav.cpp
+#, fuzzy
+msgid "Max Rate Hz"
+msgstr "Valor"
+
+#: editor/import/resource_importer_wav.cpp
+msgid "Trim"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+#, fuzzy
+msgid "Normalize"
+msgstr "Formato"
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+#, fuzzy
+msgid "Loop Mode"
+msgstr "Mover Modo"
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+#, fuzzy
+msgid "Loop Begin"
+msgstr "Mover Modo"
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+#, fuzzy
+msgid "Loop End"
+msgstr "Mover Modo"
+
#: editor/import_defaults_editor.cpp
#, fuzzy
msgid "Select Importer"
@@ -6828,6 +7314,29 @@ msgstr "Fallou a carga do Recurso."
#: editor/inspector_dock.cpp
#, fuzzy
+msgid "Property Name Style"
+msgstr "Nome do Proxecto:"
+
+#: editor/inspector_dock.cpp scene/gui/color_picker.cpp
+msgid "Raw"
+msgstr "Sen Procesar (Raw)"
+
+#: editor/inspector_dock.cpp
+#, fuzzy
+msgid "Capitalized"
+msgstr "Capitalizar"
+
+#: editor/inspector_dock.cpp
+#, fuzzy
+msgid "Localized"
+msgstr "Linguaxe"
+
+#: editor/inspector_dock.cpp
+msgid "Localization not available for current language."
+msgstr ""
+
+#: editor/inspector_dock.cpp
+#, fuzzy
msgid "Copy Properties"
msgstr "Propiedades"
@@ -7867,18 +8376,26 @@ msgid "License (Z-A)"
msgstr "Licenza (Z-A)"
#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgctxt "Pagination"
msgid "First"
msgstr "Primeiro"
-#: editor/plugins/asset_library_editor_plugin.cpp scene/gui/control.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgctxt "Pagination"
msgid "Previous"
msgstr "Anterior"
-#: editor/plugins/asset_library_editor_plugin.cpp scene/gui/control.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgctxt "Pagination"
msgid "Next"
msgstr "Seguinte"
#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgctxt "Pagination"
msgid "Last"
msgstr "Derradeiro"
@@ -8115,19 +8632,19 @@ msgid ""
"margins."
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Top Left"
msgstr "Arriba á Esquerda"
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Top Right"
msgstr "Arriba á Dereita"
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Bottom Right"
msgstr "Abaixo á Dereita"
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Bottom Left"
msgstr "Abaixo á Esquerda"
@@ -8854,6 +9371,19 @@ msgstr ""
msgid "Gradient Edited"
msgstr ""
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+msgid "Swap GradientTexture2D Fill Points"
+msgstr ""
+
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+msgid "Swap Gradient Fill Points"
+msgstr ""
+
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+#, fuzzy
+msgid "Toggle Grid Snap"
+msgstr "Act./Desact. Modo"
+
#: editor/plugins/item_list_editor_plugin.cpp
msgid "Item %d"
msgstr "Elemento %d"
@@ -9082,9 +9612,10 @@ msgid ""
"%s"
msgstr ""
-#: editor/plugins/mesh_library_editor_plugin.cpp modules/gridmap/grid_map.cpp
-msgid "Mesh Library"
-msgstr ""
+#: editor/plugins/mesh_library_editor_plugin.cpp
+#, fuzzy
+msgid "MeshLibrary"
+msgstr "Biblioteca"
#: editor/plugins/mesh_library_editor_plugin.cpp
msgid "Add Item"
@@ -10070,8 +10601,8 @@ msgstr ""
msgid "Source"
msgstr "Fonte"
-#: editor/plugins/script_text_editor.cpp scene/3d/interpolated_camera.cpp
-#: scene/animation/skeleton_ik.cpp
+#: editor/plugins/script_text_editor.cpp platform/uwp/export/export.cpp
+#: scene/3d/interpolated_camera.cpp scene/animation/skeleton_ik.cpp
msgid "Target"
msgstr "Obxectivo"
@@ -11074,7 +11605,9 @@ msgstr "Velocidade:"
#: editor/plugins/sprite_frames_editor_plugin.cpp
#: modules/gltf/gltf_animation.cpp modules/minimp3/audio_stream_mp3.cpp
-#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp scene/2d/path_2d.cpp
+#: modules/minimp3/resource_importer_mp3.cpp
+#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp
+#: modules/stb_vorbis/resource_importer_ogg_vorbis.cpp scene/2d/path_2d.cpp
#: scene/3d/path.cpp scene/resources/animation.cpp scene/resources/material.cpp
msgid "Loop"
msgstr "Bucle"
@@ -12012,8 +12545,9 @@ msgstr "Máscara de Bits"
msgid "Priority"
msgstr "Prioridade"
-#: editor/plugins/tile_set_editor_plugin.cpp main/main.cpp scene/gui/button.cpp
-#: scene/gui/item_list.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp main/main.cpp
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#: scene/gui/button.cpp scene/gui/item_list.cpp
msgid "Icon"
msgstr "Icona"
@@ -13356,10 +13890,6 @@ msgstr ""
"Esto pode deberse a un problema cos axustes de exportación."
#: editor/project_export.cpp
-msgid "Release"
-msgstr ""
-
-#: editor/project_export.cpp
msgid "Exporting All"
msgstr ""
@@ -15188,6 +15718,7 @@ msgid "Change AudioStreamPlayer3D Emission Angle"
msgstr ""
#: editor/spatial_editor_gizmos.cpp modules/gltf/gltf_node.cpp
+#: platform/osx/export/export.cpp
msgid "Camera"
msgstr ""
@@ -15460,7 +15991,8 @@ msgstr ""
msgid "Use Nvidia Rect Flicker Workaround"
msgstr ""
-#: main/main.cpp platform/uwp/os_uwp.cpp
+#: main/main.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp platform/uwp/os_uwp.cpp
#, fuzzy
msgid "Display"
msgstr "Amosar Todo"
@@ -15520,19 +16052,6 @@ msgstr ""
msgid "Allowed"
msgstr ""
-#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp scene/2d/camera_2d.cpp
-#: scene/2d/light_2d.cpp scene/2d/navigation_polygon.cpp
-#: scene/2d/ray_cast_2d.cpp scene/2d/sprite.cpp scene/2d/y_sort.cpp
-#: scene/3d/audio_stream_player_3d.cpp scene/3d/baked_lightmap.cpp
-#: scene/3d/interpolated_camera.cpp scene/3d/light.cpp
-#: scene/3d/navigation_mesh_instance.cpp scene/3d/ray_cast.cpp
-#: scene/3d/sprite_3d.cpp scene/gui/graph_edit.cpp
-#: scene/gui/rich_text_label.cpp scene/resources/curve.cpp
-#: scene/resources/environment.cpp
-#, fuzzy
-msgid "Enabled"
-msgstr "Activar"
-
#: main/main.cpp
msgid "Intended Usage"
msgstr ""
@@ -15564,13 +16083,14 @@ msgstr ""
msgid "Handheld"
msgstr ""
-#: main/main.cpp
+#: main/main.cpp platform/javascript/export/export.cpp
+#: platform/uwp/export/export.cpp
#, fuzzy
msgid "Orientation"
msgstr "Documentación En Liña"
#: main/main.cpp scene/gui/scroll_container.cpp scene/gui/text_edit.cpp
-#: scene/main/scene_tree.cpp
+#: scene/main/scene_tree.cpp scene/register_scene_types.cpp
#, fuzzy
msgid "Common"
msgstr "Comunidade"
@@ -15612,7 +16132,7 @@ msgstr ""
#: main/main.cpp
#, fuzzy
-msgid "Frame Delay (msec)"
+msgid "Frame Delay Msec"
msgstr "Encadrar Selección"
#: main/main.cpp
@@ -15738,11 +16258,6 @@ msgstr ""
msgid "Tooltip Position Offset"
msgstr ""
-#: main/main.cpp modules/mono/editor/csharp_project.cpp
-#: modules/mono/mono_gd/gd_mono.cpp
-msgid "Mono"
-msgstr ""
-
#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp
#, fuzzy
msgid "Debugger Agent"
@@ -16317,7 +16832,7 @@ msgstr "Cor"
msgid "Intensity"
msgstr ""
-#: modules/gltf/gltf_light.cpp scene/2d/light_2d.cpp
+#: modules/gltf/gltf_light.cpp scene/2d/light_2d.cpp scene/3d/light.cpp
#, fuzzy
msgid "Range"
msgstr "Cambiar"
@@ -16460,11 +16975,6 @@ msgstr ""
msgid "Use Named Skin Binds"
msgstr ""
-#: modules/gltf/gltf_state.cpp scene/3d/physics_joint.cpp
-#, fuzzy
-msgid "Nodes"
-msgstr "Nodo"
-
#: modules/gltf/gltf_state.cpp
#, fuzzy
msgid "Buffer Views"
@@ -16476,16 +16986,6 @@ msgstr ""
#: modules/gltf/gltf_state.cpp
#, fuzzy
-msgid "Meshes"
-msgstr "Malla"
-
-#: modules/gltf/gltf_state.cpp
-#, fuzzy
-msgid "Materials"
-msgstr "Parámetro Cambiado"
-
-#: modules/gltf/gltf_state.cpp
-#, fuzzy
msgid "Scene Name"
msgstr "Ruta da Escena:"
@@ -16501,15 +17001,11 @@ msgstr "Nome do nodo raíz"
msgid "Textures"
msgstr "Características"
-#: modules/gltf/gltf_state.cpp
+#: modules/gltf/gltf_state.cpp platform/uwp/export/export.cpp
msgid "Images"
msgstr ""
#: modules/gltf/gltf_state.cpp
-msgid "Skins"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp
msgid "Cameras"
msgstr ""
@@ -16543,11 +17039,15 @@ msgid "Src Image"
msgstr "Amosar Ósos"
#: modules/gridmap/grid_map.cpp
+msgid "Mesh Library"
+msgstr ""
+
+#: modules/gridmap/grid_map.cpp
#, fuzzy
msgid "Physics Material"
msgstr "Fotograma de Física %"
-#: modules/gridmap/grid_map.cpp
+#: modules/gridmap/grid_map.cpp scene/3d/visual_instance.cpp
msgid "Use In Baked Light"
msgstr ""
@@ -16578,6 +17078,7 @@ msgstr "Centro"
#: modules/gridmap/grid_map.cpp scene/2d/collision_object_2d.cpp
#: scene/2d/tile_map.cpp scene/3d/collision_object.cpp scene/3d/soft_body.cpp
+#: scene/resources/material.cpp
msgid "Mask"
msgstr ""
@@ -16759,7 +17260,9 @@ msgid "Ultra Quality Ray Count"
msgstr ""
#: modules/minimp3/audio_stream_mp3.cpp
+#: modules/minimp3/resource_importer_mp3.cpp
#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp
+#: modules/stb_vorbis/resource_importer_ogg_vorbis.cpp
#, fuzzy
msgid "Loop Offset"
msgstr "Offset:"
@@ -17851,6 +18354,189 @@ msgid "The package must have at least one '.' separator."
msgstr ""
#: platform/android/export/export_plugin.cpp
+msgid "Use Custom Build"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Export Format"
+msgstr "Formato"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Keystore"
+msgstr "Depurador"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Debug User"
+msgstr "Depurador"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+msgid "Debug Password"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Release User"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Release Password"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "One Click Deploy"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Clear Previous Install"
+msgstr "Anterior Pestana"
+
+#: platform/android/export/export_plugin.cpp scene/resources/shader.cpp
+msgid "Code"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Min SDK"
+msgstr "Tamaño: "
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Target SDK"
+msgstr "Obxectivo"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Package"
+msgstr "Empaquetando"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Unique Name"
+msgstr "Nome do Nodo:"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Signed"
+msgstr "Sinal"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Classify As Game"
+msgstr "Nome da Clase:"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Retain Data On Uninstall"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Exclude From Recents"
+msgstr "Eliminar Nodos"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Graphics"
+msgstr "Offset:"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "OpenGL Debug"
+msgstr "Abrir"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "XR Features"
+msgstr "Características"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "XR Mode"
+msgstr "Modo Rotación"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Hand Tracking"
+msgstr "Empaquetando"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Hand Tracking Frequency"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Passthrough"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Immersive Mode"
+msgstr "Modo Rotación"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Support Small"
+msgstr "Soporte"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Support Normal"
+msgstr "Soporte"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Support Large"
+msgstr "Soporte"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Support Xlarge"
+msgstr "Soporte"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "User Data Backup"
+msgstr "Abrir Cartafol de Datos do Editor"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Allow"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Command Line"
+msgstr "Comunidade"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Extra Args"
+msgstr "Argumentos Extra da Chamada:"
+
+#: platform/android/export/export_plugin.cpp
+msgid "APK Expansion"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Salt"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Public Key"
+msgstr "Duplicar Chave(s)"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Permissions"
+msgstr "Versión:"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Custom Permissions"
+msgstr "Executar Escena a Elixir"
+
+#: platform/android/export/export_plugin.cpp
msgid "Select device from the list"
msgstr ""
@@ -18160,6 +18846,177 @@ msgid "The character '%s' is not allowed in Identifier."
msgstr ""
#: platform/iphone/export/export.cpp
+msgid "App Store Team ID"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Provisioning Profile UUID Debug"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Code Sign Identity Debug"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Export Method Debug"
+msgstr "Exportar Biblioteca de Mallas"
+
+#: platform/iphone/export/export.cpp
+msgid "Provisioning Profile UUID Release"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Code Sign Identity Release"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Export Method Release"
+msgstr "Exportar Biblioteca de Mallas"
+
+#: platform/iphone/export/export.cpp
+msgid "Targeted Device Family"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Info"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Identifier"
+msgstr "Sangrado á Esquerda"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Signature"
+msgstr "Sinal"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Short Version"
+msgstr "Versión:"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Copyright"
+msgstr "Arriba á Dereita"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Capabilities"
+msgstr "Propiedades"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Access Wi-Fi"
+msgstr "Éxito!"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Push Notifications"
+msgstr "Pegar Animación"
+
+#: platform/iphone/export/export.cpp scene/3d/baked_lightmap.cpp
+#, fuzzy
+msgid "User Data"
+msgstr "Abrir Cartafol de Datos do Editor"
+
+#: platform/iphone/export/export.cpp
+msgid "Accessible From Files App"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Accessible From Itunes Sharing"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Privacy"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Camera Usage Description"
+msgstr "Descrición"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Microphone Usage Description"
+msgstr "Descrición de Propiedades"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Photolibrary Usage Description"
+msgstr "Descrición de Propiedades"
+
+#: platform/iphone/export/export.cpp
+msgid "iPhone 120 X 120"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPhone 180 X 180"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 76 X 76"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 152 X 152"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 167 X 167"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "App Store 1024 X 1024"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Spotlight 40 X 40"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Spotlight 80 X 80"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Storyboard"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Use Launch Screen Storyboard"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Image Scale Mode"
+msgstr "Modo Escalado"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Custom Image @2x"
+msgstr "Cortar Nodos"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Custom Image @3x"
+msgstr "Cortar Nodos"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Use Custom BG Color"
+msgstr "Cortar Nodos"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Custom BG Color"
+msgstr "Cortar Nodos"
+
+#: platform/iphone/export/export.cpp
msgid "App Store Team ID not specified - cannot configure the project."
msgstr ""
"ID de App Store Team non especificado - non se pode configurar o proxecto."
@@ -18199,6 +19056,80 @@ msgstr "Non se puido crear cartafol."
#: platform/javascript/export/export.cpp
#, fuzzy
+msgid "Variant"
+msgstr "Escalar (Razón):"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Export Type"
+msgstr "Exportación"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "VRAM Texture Compression"
+msgstr "Colisión"
+
+#: platform/javascript/export/export.cpp
+msgid "For Desktop"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "For Mobile"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Html"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Export Icon"
+msgstr "Expandir Todo"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Custom Html Shell"
+msgstr "Cortar Nodos"
+
+#: platform/javascript/export/export.cpp
+msgid "Head Include"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Canvas Resize Policy"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Focus Canvas On Start"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Experimental Virtual Keyboard"
+msgstr "Filtrar sinais"
+
+#: platform/javascript/export/export.cpp
+msgid "Progressive Web App"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Offline Page"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 144 X 144"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 180 X 180"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 512 X 512"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
msgid "Could not read HTML shell:"
msgstr "Non se puido crear cartafol."
@@ -18313,6 +19244,200 @@ msgid "Unknown object type."
msgstr ""
#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "App Category"
+msgstr "Categoría:"
+
+#: platform/osx/export/export.cpp
+msgid "High Res"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Location Usage Description"
+msgstr "Descrición"
+
+#: platform/osx/export/export.cpp
+msgid "Address Book Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Calendar Usage Description"
+msgstr "Descrición"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Photos Library Usage Description"
+msgstr "Descrición de Propiedades"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Desktop Folder Usage Description"
+msgstr "Descrición de Métodos"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Documents Folder Usage Description"
+msgstr "Descrición de Métodos"
+
+#: platform/osx/export/export.cpp
+msgid "Downloads Folder Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Network Volumes Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Removable Volumes Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#, fuzzy
+msgid "Codesign"
+msgstr "Nodo"
+
+#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Identity"
+msgstr "Sangrado á Esquerda"
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#, fuzzy
+msgid "Timestamp"
+msgstr "Tempo"
+
+#: platform/osx/export/export.cpp
+msgid "Hardened Runtime"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Replace Existing Signature"
+msgstr "Substituír Todo"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Entitlements"
+msgstr "Contidos:"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Custom File"
+msgstr "Cortar Nodos"
+
+#: platform/osx/export/export.cpp
+msgid "Allow JIT Code Execution"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Allow Unsigned Executable Memory"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Allow Dyld Environment Variables"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Disable Library Validation"
+msgstr "Colisión"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Audio Input"
+msgstr "Engadir Entrada"
+
+#: platform/osx/export/export.cpp
+msgid "Address Book"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Calendars"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Photos Library"
+msgstr "Biblioteca de Exportación"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Apple Events"
+msgstr "Engadir Evento"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Debugging"
+msgstr "Depuración"
+
+#: platform/osx/export/export.cpp
+msgid "App Sandbox"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Network Server"
+msgstr "Analítica de Rendemento de Rede"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Network Client"
+msgstr "Analítica de Rendemento de Rede"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Device Usb"
+msgstr "Dispositivo"
+
+#: platform/osx/export/export.cpp
+msgid "Device Bluetooth"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Files Downloads"
+msgstr "Descargar"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Files Pictures"
+msgstr "Características"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Files Music"
+msgstr "Arquivo"
+
+#: platform/osx/export/export.cpp
+msgid "Files Movies"
+msgstr ""
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#, fuzzy
+msgid "Custom Options"
+msgstr "Opcións de Bus"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Notarization"
+msgstr "Linguaxe"
+
+#: platform/osx/export/export.cpp
+msgid "Apple ID Name"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Apple ID Password"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Apple Team ID"
+msgstr ""
+
+#: platform/osx/export/export.cpp
msgid ""
"Note: The notarization process generally takes less than an hour. When the "
"process is completed, you'll receive an email."
@@ -18504,6 +19629,133 @@ msgid "Force Builtin Codesign"
msgstr ""
#: platform/uwp/export/export.cpp
+msgid "Architecture"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Display Name"
+msgstr "Amosar Todo"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Short Name"
+msgstr "Nome do Script:"
+
+#: platform/uwp/export/export.cpp
+msgid "Publisher"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Publisher Display Name"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Product Guid"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Publisher Guid"
+msgstr "Limpar Guías"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Signing"
+msgstr "Sinal"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Certificate"
+msgstr "Vértices"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Algorithm"
+msgstr "Depurador"
+
+#: platform/uwp/export/export.cpp
+msgid "Major"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Minor"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Build"
+msgstr "Modo Regra"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Revision"
+msgstr "Versión:"
+
+#: platform/uwp/export/export.cpp
+msgid "Landscape"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Portrait"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Landscape Flipped"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Portrait Flipped"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Store Logo"
+msgstr "Modo Escalado"
+
+#: platform/uwp/export/export.cpp
+msgid "Square 44 X 44 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 71 X 71 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 150 X 150 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 310 X 310 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Wide 310 X 150 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Splash Screen"
+msgstr "Chamadas"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Tiles"
+msgstr "Arquivo"
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Square 150 X 150"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Wide 310 X 150"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Square 310 X 310"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
msgid "Invalid package short name."
msgstr ""
@@ -18569,15 +19821,53 @@ msgid "Debug Certificate"
msgstr ""
#: platform/uwp/export/export.cpp
-msgid "Debug Password"
+#, fuzzy
+msgid "Debug Algorithm"
+msgstr "Depurador"
+
+#: platform/windows/export/export.cpp
+msgid "Identity Type"
msgstr ""
-#: platform/uwp/export/export.cpp
+#: platform/windows/export/export.cpp
+msgid "Timestamp Server URL"
+msgstr ""
+
+#: platform/windows/export/export.cpp
#, fuzzy
-msgid "Debug Algorithm"
+msgid "Digest Algorithm"
msgstr "Depurador"
#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "File Version"
+msgstr "Versión:"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Product Version"
+msgstr "Nome de Proxecto Inválido."
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Company Name"
+msgstr "Nome do Nodo:"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Product Name"
+msgstr "Nome do Proxecto:"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "File Description"
+msgstr "Descrición"
+
+#: platform/windows/export/export.cpp
+msgid "Trademarks"
+msgstr ""
+
+#: platform/windows/export/export.cpp
msgid ""
"The rcedit tool must be configured in the Editor Settings (Export > Windows "
"> Rcedit) to change the icon or app information data."
@@ -18650,12 +19940,14 @@ msgstr "Executar"
msgid "Centered"
msgstr "Centro"
-#: scene/2d/animated_sprite.cpp scene/2d/camera_2d.cpp scene/2d/light_2d.cpp
+#: scene/2d/animated_sprite.cpp scene/2d/camera_2d.cpp
+#: scene/2d/cpu_particles_2d.cpp scene/2d/light_2d.cpp
#: scene/2d/parallax_background.cpp scene/2d/parallax_layer.cpp
#: scene/2d/path_2d.cpp scene/2d/polygon_2d.cpp scene/2d/sprite.cpp
-#: scene/3d/path.cpp scene/3d/physics_body.cpp scene/3d/sprite_3d.cpp
-#: scene/gui/graph_node.cpp scene/gui/rich_text_effect.cpp
-#: scene/main/canvas_layer.cpp scene/resources/material.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/path.cpp scene/3d/physics_body.cpp
+#: scene/3d/sprite_3d.cpp scene/gui/graph_node.cpp
+#: scene/gui/rich_text_effect.cpp scene/main/canvas_layer.cpp
+#: scene/resources/material.cpp scene/resources/particles_material.cpp
#: scene/resources/style_box.cpp
#, fuzzy
msgid "Offset"
@@ -18730,11 +20022,6 @@ msgstr "Engadir Bus de Son"
msgid "Override"
msgstr "Sobreescribir"
-#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
-#: scene/audio/audio_stream_player.cpp scene/gui/video_player.cpp
-msgid "Stream"
-msgstr ""
-
#: scene/2d/audio_stream_player_2d.cpp scene/audio/audio_stream_player.cpp
#: scene/gui/video_player.cpp servers/audio/effects/audio_effect_amplify.cpp
#, fuzzy
@@ -18761,13 +20048,13 @@ msgid "Stream Paused"
msgstr ""
#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
-#: scene/3d/reflection_probe.cpp scene/3d/visual_instance.cpp
-#: scene/resources/material.cpp
+#: scene/3d/light.cpp scene/3d/reflection_probe.cpp
+#: scene/3d/visual_instance.cpp scene/resources/material.cpp
#, fuzzy
msgid "Max Distance"
msgstr "Instanciar"
-#: scene/2d/audio_stream_player_2d.cpp
+#: scene/2d/audio_stream_player_2d.cpp scene/3d/light.cpp
#, fuzzy
msgid "Attenuation"
msgstr "Animación"
@@ -18823,6 +20110,24 @@ msgstr "Mover Modo"
msgid "Limit"
msgstr ""
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/style_box.cpp
+#, fuzzy
+msgid "Left"
+msgstr "Arriba á Esquerda"
+
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/style_box.cpp
+#, fuzzy
+msgid "Right"
+msgstr "Arriba á Dereita"
+
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/dynamic_font.cpp scene/resources/style_box.cpp
+#, fuzzy
+msgid "Bottom"
+msgstr "Abaixo á Esquerda"
+
#: scene/2d/camera_2d.cpp
msgid "Smoothed"
msgstr ""
@@ -19045,13 +20350,6 @@ msgstr ""
msgid "Emitting"
msgstr "Axustes:"
-#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp scene/3d/area.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
-#: scene/resources/environment.cpp
-#, fuzzy
-msgid "Amount"
-msgstr "Cantidade:"
-
#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp
#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
msgid "Lifetime"
@@ -19114,18 +20412,13 @@ msgstr ""
#: scene/2d/mesh_instance_2d.cpp scene/2d/multimesh_instance_2d.cpp
#: scene/2d/particles_2d.cpp scene/2d/polygon_2d.cpp scene/2d/sprite.cpp
#: scene/3d/sprite_3d.cpp scene/gui/nine_patch_rect.cpp
-#: scene/gui/texture_rect.cpp scene/resources/sky.cpp
-#: scene/resources/style_box.cpp scene/resources/visual_shader_nodes.cpp
+#: scene/gui/texture_rect.cpp scene/resources/material.cpp
+#: scene/resources/sky.cpp scene/resources/style_box.cpp
+#: scene/resources/visual_shader_nodes.cpp
#, fuzzy
msgid "Texture"
msgstr "Texto"
-#: scene/2d/cpu_particles_2d.cpp scene/2d/mesh_instance_2d.cpp
-#: scene/2d/multimesh_instance_2d.cpp scene/2d/particles_2d.cpp
-#: scene/2d/sprite.cpp scene/resources/style_box.cpp
-msgid "Normal Map"
-msgstr ""
-
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
msgid "Emission Shape"
@@ -19147,10 +20440,10 @@ msgid "Normals"
msgstr "Formato"
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/3d/sprite_3d.cpp scene/resources/material.cpp
-#: scene/resources/particles_material.cpp scene/resources/texture.cpp
-msgid "Flags"
-msgstr ""
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Align Y"
+msgstr "Asignar"
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
@@ -19171,6 +20464,12 @@ msgid "Initial Velocity"
msgstr "Inicializar"
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Velocity Random"
+msgstr "Inicializar"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp servers/physics_2d_server.cpp
#: servers/physics_server.cpp
msgid "Angular Velocity"
@@ -19178,6 +20477,12 @@ msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Velocity Curve"
+msgstr "Inicializar"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
msgid "Orbit Velocity"
msgstr ""
@@ -19189,6 +20494,23 @@ msgstr "Lineal"
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Accel"
+msgstr "Éxito!"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Accel Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Accel Curve"
+msgstr "Profundidad"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
msgid "Radial Accel"
msgstr ""
@@ -19198,19 +20520,55 @@ msgid "Tangential Accel"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/2d/joints_2d.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/vehicle_body.cpp
-#: scene/resources/particles_material.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/physics_joint.cpp
+#: scene/3d/vehicle_body.cpp scene/resources/particles_material.cpp
#: servers/audio/effects/audio_effect_reverb.cpp
msgid "Damping"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+msgid "Damping Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Damping Curve"
+msgstr "Profundidad"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp scene/3d/light.cpp
+#: scene/resources/particles_material.cpp
msgid "Angle"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+msgid "Angle Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Angle Curve"
+msgstr "Profundidad"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#, fuzzy
+msgid "Scale Amount"
+msgstr "Cantidade:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+msgid "Scale Amount Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#, fuzzy
+msgid "Scale Amount Curve"
+msgstr "Escalar desde o Cursor"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
#, fuzzy
msgid "Color Ramp"
msgstr "Cor"
@@ -19226,6 +20584,48 @@ msgstr ""
msgid "Hue Variation"
msgstr "Escalar (Razón):"
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Variation"
+msgstr "Escalar (Razón):"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Variation Random"
+msgstr "Escalar (Razón):"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Variation Curve"
+msgstr "Escalar (Razón):"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Speed Random"
+msgstr "Escala:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Speed Curve"
+msgstr "Seleccionar Cartafol Actual"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Offset Random"
+msgstr "Offset:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Offset Curve"
+msgstr "Profundidad"
+
#: scene/2d/joints_2d.cpp
msgid "Node A and Node B must be PhysicsBody2Ds"
msgstr "Os nodo A e B teñen que ser do tipo PhysicsBody2D"
@@ -19257,6 +20657,7 @@ msgid "Node B"
msgstr "Nodo"
#: scene/2d/joints_2d.cpp scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp
+#: scene/3d/light.cpp scene/3d/physics_joint.cpp
#: scene/resources/environment.cpp
msgid "Bias"
msgstr ""
@@ -19266,7 +20667,7 @@ msgstr ""
msgid "Disable Collision"
msgstr "Colisión"
-#: scene/2d/joints_2d.cpp
+#: scene/2d/joints_2d.cpp scene/3d/physics_joint.cpp
msgid "Softness"
msgstr ""
@@ -19284,7 +20685,7 @@ msgstr "Inicializar"
msgid "Rest Length"
msgstr ""
-#: scene/2d/joints_2d.cpp scene/3d/vehicle_body.cpp
+#: scene/2d/joints_2d.cpp scene/3d/physics_joint.cpp scene/3d/vehicle_body.cpp
msgid "Stiffness"
msgstr ""
@@ -19304,7 +20705,7 @@ msgid "Texture Scale"
msgstr ""
#: scene/2d/light_2d.cpp scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp
-#: scene/resources/environment.cpp scene/resources/sky.cpp
+#: scene/3d/light.cpp scene/resources/environment.cpp scene/resources/sky.cpp
msgid "Energy"
msgstr ""
@@ -19345,12 +20746,6 @@ msgstr "Vista Traseira"
msgid "Gradient Length"
msgstr "Por Defecto"
-#: scene/2d/light_2d.cpp scene/gui/control.cpp
-#: scene/resources/navigation_mesh.cpp
-#, fuzzy
-msgid "Filter"
-msgstr "Filtros:"
-
#: scene/2d/light_2d.cpp
#, fuzzy
msgid "Filter Smooth"
@@ -19772,10 +21167,6 @@ msgid "Applied Forces"
msgstr ""
#: scene/2d/physics_body_2d.cpp
-msgid "Force"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp
msgid "Torque"
msgstr ""
@@ -19790,7 +21181,7 @@ msgstr "Fotograma de Física %"
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
#, fuzzy
-msgid "Moving platform"
+msgid "Moving Platform"
msgstr "Plataforma"
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
@@ -19799,7 +21190,7 @@ msgstr ""
#: scene/2d/physics_body_2d.cpp scene/2d/touch_screen_button.cpp
#: scene/3d/physics_body.cpp scene/gui/texture_button.cpp
-#: scene/resources/line_shape_2d.cpp
+#: scene/resources/line_shape_2d.cpp scene/resources/material.cpp
#, fuzzy
msgid "Normal"
msgstr "Formato"
@@ -20030,6 +21421,34 @@ msgid ""
"as parent."
msgstr ""
+#: scene/2d/visibility_notifier_2d.cpp scene/3d/visibility_notifier.cpp
+#, fuzzy
+msgid "Pause Animations"
+msgstr "Pegar Animación"
+
+#: scene/2d/visibility_notifier_2d.cpp scene/3d/visibility_notifier.cpp
+msgid "Freeze Bodies"
+msgstr ""
+
+#: scene/2d/visibility_notifier_2d.cpp
+#, fuzzy
+msgid "Pause Particles"
+msgstr "Partículas"
+
+#: scene/2d/visibility_notifier_2d.cpp
+#, fuzzy
+msgid "Pause Animated Sprites"
+msgstr "Pegar Animación"
+
+#: scene/2d/visibility_notifier_2d.cpp
+#, fuzzy
+msgid "Process Parent"
+msgstr "Prioridade"
+
+#: scene/2d/visibility_notifier_2d.cpp
+msgid "Physics Process Parent"
+msgstr ""
+
#: scene/3d/area.cpp
msgid "Reverb Bus"
msgstr ""
@@ -20128,6 +21547,7 @@ msgid "Attenuation Filter"
msgstr ""
#: scene/3d/audio_stream_player_3d.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
#: servers/audio/effects/audio_effect_filter.cpp
msgid "Cutoff Hz"
msgstr ""
@@ -20172,11 +21592,6 @@ msgid "Octree"
msgstr "Subárbore"
#: scene/3d/baked_lightmap.cpp
-#, fuzzy
-msgid "User Data"
-msgstr "Abrir Cartafol de Datos do Editor"
-
-#: scene/3d/baked_lightmap.cpp
msgid "Finding meshes and lights"
msgstr ""
@@ -20441,6 +21856,16 @@ msgid "Ring Axis"
msgstr "Avisos"
#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Rotate Y"
+msgstr "Modo Rotación"
+
+#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Disable Z"
+msgstr "(Editor Desactivado)"
+
+#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
msgid "Flatness"
msgstr ""
@@ -20478,16 +21903,11 @@ msgstr ""
msgid "Dynamic Range"
msgstr ""
-#: scene/3d/gi_probe.cpp
+#: scene/3d/gi_probe.cpp scene/3d/light.cpp
msgid "Normal Bias"
msgstr ""
#: scene/3d/gi_probe.cpp
-#, fuzzy
-msgid "Compress"
-msgstr "Compoñentes"
-
-#: scene/3d/gi_probe.cpp
msgid "Plotting Meshes"
msgstr ""
@@ -20514,16 +21934,31 @@ msgstr ""
#: scene/3d/light.cpp
#, fuzzy
+msgid "Indirect Energy"
+msgstr "Sangrado á Dereita"
+
+#: scene/3d/light.cpp
+#, fuzzy
msgid "Negative"
msgstr "GDNative"
#: scene/3d/light.cpp
#, fuzzy
+msgid "Specular"
+msgstr "Modo Regra"
+
+#: scene/3d/light.cpp
+#, fuzzy
msgid "Bake Mode"
msgstr "Modo Rotación"
#: scene/3d/light.cpp
#, fuzzy
+msgid "Contact"
+msgstr "Elexir Cor"
+
+#: scene/3d/light.cpp
+#, fuzzy
msgid "Reverse Cull Face"
msgstr "Restablecer Volume do Bus"
@@ -20533,11 +21968,31 @@ msgid "Directional Shadow"
msgstr "Direccións"
#: scene/3d/light.cpp
+#, fuzzy
+msgid "Split 1"
+msgstr "Offset:"
+
+#: scene/3d/light.cpp
+#, fuzzy
+msgid "Split 2"
+msgstr "Offset:"
+
+#: scene/3d/light.cpp
+#, fuzzy
+msgid "Split 3"
+msgstr "Offset:"
+
+#: scene/3d/light.cpp
msgid "Blend Splits"
msgstr ""
#: scene/3d/light.cpp
#, fuzzy
+msgid "Bias Split Scale"
+msgstr "Empregar Axuste de Escalado"
+
+#: scene/3d/light.cpp
+#, fuzzy
msgid "Depth Range"
msgstr "Profundidad"
@@ -20563,6 +22018,11 @@ msgstr ""
msgid "Spot"
msgstr ""
+#: scene/3d/light.cpp
+#, fuzzy
+msgid "Angle Attenuation"
+msgstr "Animación"
+
#: scene/3d/mesh_instance.cpp
msgid "Software Skinning"
msgstr ""
@@ -20697,6 +22157,63 @@ msgstr "Eixe"
#: scene/3d/physics_body.cpp
#, fuzzy
+msgid "Linear X"
+msgstr "Lineal"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Linear Y"
+msgstr "Lineal"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Linear Z"
+msgstr "Lineal"
+
+#: scene/3d/physics_body.cpp
+msgid "Angular X"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Angular Y"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Angular Z"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Motion X"
+msgstr "Acción"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Motion Y"
+msgstr "Acción"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Motion Z"
+msgstr "Acción"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Move Lock X"
+msgstr "Mover Nodo"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Move Lock Y"
+msgstr "Mover Nodo"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Move Lock Z"
+msgstr "Mover Nodo"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
msgid "Body Offset"
msgstr "Offset:"
@@ -20730,6 +22247,15 @@ msgid "Exclude Nodes"
msgstr "Eliminar Nodos"
#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Params"
+msgstr "Parámetro Cambiado"
+
+#: scene/3d/physics_joint.cpp
+msgid "Impulse Clamp"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit"
msgstr ""
@@ -20743,6 +22269,55 @@ msgstr "Maiúscula"
msgid "Lower"
msgstr "Minúscula"
+#: scene/3d/physics_joint.cpp scene/3d/vehicle_body.cpp
+#, fuzzy
+msgid "Relaxation"
+msgstr "Escalar (Razón):"
+
+#: scene/3d/physics_joint.cpp
+msgid "Motor"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Target Velocity"
+msgstr "Inicializar"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Max Impulse"
+msgstr "Velocidade:"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit"
+msgstr "Lineal"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Upper Distance"
+msgstr "Instanciar"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Lower Distance"
+msgstr "Instanciar"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Restitution"
+msgstr "Descrición"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motion"
+msgstr "Inicializar"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Ortho"
+msgstr "Ortogonal"
+
#: scene/3d/physics_joint.cpp
#, fuzzy
msgid "Upper Angle"
@@ -20755,6 +22330,16 @@ msgstr "Minúscula"
#: scene/3d/physics_joint.cpp
#, fuzzy
+msgid "Angular Motion"
+msgstr "Animación"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Angular Ortho"
+msgstr "Erro Angular Máximo:"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
msgid "Swing Span"
msgstr "Gardando Escena"
@@ -20763,17 +22348,99 @@ msgid "Twist Span"
msgstr ""
#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit X"
+msgstr "Lineal"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motor X"
+msgstr "Inicializar"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Force Limit"
+msgstr "Chamadas"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Spring X"
+msgstr "Lineal"
+
+#: scene/3d/physics_joint.cpp
+msgid "Equilibrium Point"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit X"
msgstr ""
#: scene/3d/physics_joint.cpp
+msgid "Erp"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Motor X"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Spring X"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit Y"
+msgstr "Lineal"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motor Y"
+msgstr "Inicializar"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Spring Y"
+msgstr "Lineal"
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit Y"
msgstr ""
#: scene/3d/physics_joint.cpp
+msgid "Angular Motor Y"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Spring Y"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit Z"
+msgstr "Lineal"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motor Z"
+msgstr "Inicializar"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Spring Z"
+msgstr "Lineal"
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit Z"
msgstr ""
+#: scene/3d/physics_joint.cpp
+msgid "Angular Motor Z"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Spring Z"
+msgstr ""
+
#: scene/3d/portal.cpp
msgid "The RoomManager should not be a child or grandchild of a Portal."
msgstr ""
@@ -20890,7 +22557,7 @@ msgstr ""
msgid "Use Default Simplify"
msgstr ""
-#: scene/3d/room.cpp
+#: scene/3d/room.cpp scene/3d/room_manager.cpp
msgid "Room Simplify"
msgstr ""
@@ -20929,6 +22596,13 @@ msgstr ""
msgid "Main"
msgstr ""
+#: scene/3d/room_manager.cpp scene/animation/animation_player.cpp
+#: scene/animation/animation_tree.cpp scene/animation/animation_tree_player.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+#, fuzzy
+msgid "Active"
+msgstr "Acción"
+
#: scene/3d/room_manager.cpp
msgid "Roomlist"
msgstr ""
@@ -20952,6 +22626,54 @@ msgid "Gameplay"
msgstr ""
#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Gameplay Monitor"
+msgstr "Monitor"
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Use Secondary PVS"
+msgstr "Empregar Axuste de Escalado"
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Merge Meshes"
+msgstr "Malla"
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Show Margins"
+msgstr "Amosar Orixe"
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Debug Sprawl"
+msgstr "Depuración"
+
+#: scene/3d/room_manager.cpp
+msgid "Overlap Warning Threshold"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Preview Camera"
+msgstr "Vista Previa"
+
+#: scene/3d/room_manager.cpp
+msgid "Portal Depth Limit"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Default Portal Margin"
+msgstr "Por Defecto"
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Roaming Expansion Margin"
+msgstr "Expandir Todo"
+
+#: scene/3d/room_manager.cpp
msgid ""
"RoomList path is invalid.\n"
"Please check the RoomList branch has been assigned in the RoomManager."
@@ -21080,6 +22802,20 @@ msgstr "Axustar aos Píxeles"
msgid "Billboard"
msgstr ""
+#: scene/3d/sprite_3d.cpp scene/resources/material.cpp
+#, fuzzy
+msgid "Transparent"
+msgstr "Transpoñer"
+
+#: scene/3d/sprite_3d.cpp
+#, fuzzy
+msgid "Shaded"
+msgstr "Shader"
+
+#: scene/3d/sprite_3d.cpp
+msgid "Double Sided"
+msgstr ""
+
#: scene/3d/sprite_3d.cpp
msgid "Alpha Cut"
msgstr ""
@@ -21152,11 +22888,6 @@ msgstr ""
msgid "Max Force"
msgstr "Erro"
-#: scene/3d/vehicle_body.cpp
-#, fuzzy
-msgid "Relaxation"
-msgstr "Escalar (Razón):"
-
#: scene/3d/visibility_notifier.cpp
msgid "AABB"
msgstr ""
@@ -21289,7 +23020,7 @@ msgstr ""
#: scene/animation/animation_blend_tree.cpp
#, fuzzy
-msgid "autorestart_"
+msgid "Auto Restart"
msgstr "Auto Reinicio:"
#: scene/animation/animation_blend_tree.cpp
@@ -21374,13 +23105,6 @@ msgstr "Opcións de Clase:"
msgid "Default Blend Time"
msgstr "Por Defecto"
-#: scene/animation/animation_player.cpp scene/animation/animation_tree.cpp
-#: scene/animation/animation_tree_player.cpp
-#: servers/audio/effects/audio_effect_delay.cpp
-#, fuzzy
-msgid "Active"
-msgstr "Acción"
-
#: scene/animation/animation_player.cpp
msgid "Method Call Mode"
msgstr ""
@@ -21504,10 +23228,6 @@ msgstr "Remparentar Nodo"
msgid "Max Iterations"
msgstr "Funcións"
-#: scene/animation/tween.cpp scene/resources/texture.cpp
-msgid "Repeat"
-msgstr ""
-
#: scene/animation/tween.cpp
msgid "Playback Process Mode"
msgstr ""
@@ -21538,20 +23258,6 @@ msgstr "Elixir Modo"
msgid "Alignment"
msgstr ""
-#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
-#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
-#: scene/resources/style_box.cpp
-#, fuzzy
-msgid "Horizontal"
-msgstr "Horizontal:"
-
-#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
-#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
-#: scene/resources/style_box.cpp
-#, fuzzy
-msgid "Vertical"
-msgstr "Vertical:"
-
#: scene/gui/base_button.cpp
#, fuzzy
msgid "Shortcut In Tooltip"
@@ -21650,10 +23356,6 @@ msgid "HSV"
msgstr "HSV"
#: scene/gui/color_picker.cpp
-msgid "Raw"
-msgstr "Sen Procesar (Raw)"
-
-#: scene/gui/color_picker.cpp
msgid "Switch between hexadecimal and code values."
msgstr ""
@@ -21717,6 +23419,31 @@ msgid "Focus"
msgstr ""
#: scene/gui/control.cpp
+msgid "Neighbour Left"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Neighbour Top"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Neighbour Right"
+msgstr ""
+
+#: scene/gui/control.cpp
+#, fuzzy
+msgid "Neighbour Bottom"
+msgstr "Centro Abaixo"
+
+#: scene/gui/control.cpp
+msgid "Next"
+msgstr "Seguinte"
+
+#: scene/gui/control.cpp
+msgid "Previous"
+msgstr "Anterior"
+
+#: scene/gui/control.cpp
msgid "Mouse"
msgstr ""
@@ -21753,7 +23480,7 @@ msgid "Dialog"
msgstr ""
#: scene/gui/dialogs.cpp
-msgid "Hide On Ok"
+msgid "Hide On OK"
msgstr ""
#: scene/gui/dialogs.cpp scene/gui/label.cpp
@@ -21852,7 +23579,7 @@ msgid "Timers"
msgstr "Tempo"
#: scene/gui/item_list.cpp scene/gui/popup_menu.cpp scene/gui/tree.cpp
-msgid "Incremental Search Max Interval (msec)"
+msgid "Incremental Search Max Interval Msec"
msgstr ""
#: scene/gui/item_list.cpp scene/gui/tree.cpp
@@ -22424,6 +24151,26 @@ msgstr "Centro á Esquerda"
msgid "Nine Patch Stretch"
msgstr "Modo de Interpolación"
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Left"
+msgstr "Elixir Modo"
+
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Top"
+msgstr "Elixir Modo"
+
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Right"
+msgstr "Elixir Modo"
+
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Bottom"
+msgstr "Elixir Modo"
+
#: scene/gui/tree.cpp
msgid "Custom Minimum Height"
msgstr ""
@@ -22459,8 +24206,9 @@ msgid "Paused"
msgstr ""
#: scene/gui/video_player.cpp
-msgid "Buffering (msec)"
-msgstr ""
+#, fuzzy
+msgid "Buffering Msec"
+msgstr "Vista Traseira"
#: scene/gui/video_player.cpp
#, fuzzy
@@ -22808,6 +24556,22 @@ msgid "Shadow Atlas"
msgstr "Amosar Tódolos Linguaxes"
#: scene/main/viewport.cpp
+msgid "Quad 0"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 1"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 2"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 3"
+msgstr ""
+
+#: scene/main/viewport.cpp
#, fuzzy
msgid "Canvas Transform"
msgstr "Transformación"
@@ -22822,6 +24586,11 @@ msgid "Tooltip Delay (sec)"
msgstr ""
#: scene/register_scene_types.cpp
+#, fuzzy
+msgid "Swap OK Cancel"
+msgstr "Cancelar"
+
+#: scene/register_scene_types.cpp
msgid "Use hiDPI"
msgstr ""
@@ -22836,21 +24605,6 @@ msgid "Custom Font"
msgstr "Cortar Nodos"
#: scene/resources/audio_stream_sample.cpp
-#, fuzzy
-msgid "Loop Mode"
-msgstr "Mover Modo"
-
-#: scene/resources/audio_stream_sample.cpp
-#, fuzzy
-msgid "Loop Begin"
-msgstr "Mover Modo"
-
-#: scene/resources/audio_stream_sample.cpp
-#, fuzzy
-msgid "Loop End"
-msgstr "Mover Modo"
-
-#: scene/resources/audio_stream_sample.cpp
#: servers/audio/effects/audio_stream_generator.cpp servers/audio_server.cpp
msgid "Mix Rate"
msgstr ""
@@ -22908,6 +24662,17 @@ msgstr "Opcións de Clase:"
#: scene/resources/dynamic_font.cpp
#, fuzzy
+msgid "Char"
+msgstr "Caracteres válidos:"
+
+#: scene/resources/dynamic_font.cpp scene/resources/world.cpp
+#: scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Space"
+msgstr "Chamadas"
+
+#: scene/resources/dynamic_font.cpp
+#, fuzzy
msgid "Font"
msgstr "Fonte"
@@ -23131,6 +24896,43 @@ msgid "Glow"
msgstr ""
#: scene/resources/environment.cpp
+#, fuzzy
+msgid "Levels"
+msgstr "Desenvolvedores"
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "1"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "2"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "3"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "4"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "5"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "6"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "7"
+msgstr ""
+
+#: scene/resources/environment.cpp
msgid "Bloom"
msgstr ""
@@ -23222,10 +25024,68 @@ msgid "Next Pass"
msgstr "Seguinte pestana"
#: scene/resources/material.cpp
+msgid "Use Shadow To Opacity"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Unshaded"
+msgstr "Mostrar Sen Sombreado"
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Vertex Lighting"
+msgstr "Número de Puntos Xerados:"
+
+#: scene/resources/material.cpp
+msgid "No Depth Test"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Use Point Size"
+msgstr "Vista Frontal"
+
+#: scene/resources/material.cpp
+msgid "World Triplanar"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Fixed Size"
+msgstr "Vista Frontal"
+
+#: scene/resources/material.cpp
+msgid "Albedo Tex Force sRGB"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Do Not Receive Shadows"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Disable Ambient Light"
+msgstr "Sangrado á Dereita"
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Ensure Correct Normals"
+msgstr "Transformación"
+
+#: scene/resources/material.cpp
#, fuzzy
msgid "Vertex Color"
msgstr "Vertex"
+#: scene/resources/material.cpp
+msgid "Use As Albedo"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Is sRGB"
+msgstr ""
+
#: scene/resources/material.cpp servers/visual_server.cpp
#, fuzzy
msgid "Parameters"
@@ -23262,6 +25122,11 @@ msgid "Billboard Mode"
msgstr "Modo Regra"
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Billboard Keep Scale"
+msgstr "Modo Regra"
+
+#: scene/resources/material.cpp
msgid "Grow"
msgstr ""
@@ -23271,6 +25136,10 @@ msgid "Grow Amount"
msgstr "Cantidade:"
#: scene/resources/material.cpp
+msgid "Use Alpha Scissor"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Alpha Scissor Threshold"
msgstr ""
@@ -23302,10 +25171,20 @@ msgid "Metallic Specular"
msgstr ""
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Metallic Texture"
+msgstr "Cambiar Tipo Base:"
+
+#: scene/resources/material.cpp
msgid "Metallic Texture Channel"
msgstr ""
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Roughness Texture"
+msgstr "Texto"
+
+#: scene/resources/material.cpp
msgid "Roughness Texture Channel"
msgstr ""
@@ -23322,6 +25201,15 @@ msgid "Emission Operator"
msgstr ""
#: scene/resources/material.cpp
+msgid "Emission On UV2"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Emission Texture"
+msgstr "Texto"
+
+#: scene/resources/material.cpp
msgid "NormalMap"
msgstr ""
@@ -23335,6 +25223,11 @@ msgstr ""
#: scene/resources/material.cpp
#, fuzzy
+msgid "Rim Texture"
+msgstr "Texto"
+
+#: scene/resources/material.cpp
+#, fuzzy
msgid "Clearcoat"
msgstr "Limpar"
@@ -23344,15 +25237,28 @@ msgid "Clearcoat Gloss"
msgstr "Restablecer Pose"
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Clearcoat Texture"
+msgstr "Editar Membro"
+
+#: scene/resources/material.cpp
msgid "Anisotropy"
msgstr ""
#: scene/resources/material.cpp
+msgid "Anisotropy Flowmap"
+msgstr ""
+
+#: scene/resources/material.cpp
#, fuzzy
msgid "Ambient Occlusion"
msgstr "Oclusión"
#: scene/resources/material.cpp
+msgid "On UV2"
+msgstr ""
+
+#: scene/resources/material.cpp
#, fuzzy
msgid "Texture Channel"
msgstr "Modo Regra"
@@ -23390,6 +25296,11 @@ msgstr "Transición: "
#: scene/resources/material.cpp
#, fuzzy
+msgid "Transmission Texture"
+msgstr "Transición: "
+
+#: scene/resources/material.cpp
+#, fuzzy
msgid "Refraction"
msgstr "Escalar (Razón):"
@@ -23408,6 +25319,10 @@ msgid "UV1"
msgstr "UV"
#: scene/resources/material.cpp
+msgid "Triplanar"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Triplanar Sharpness"
msgstr ""
@@ -23612,6 +25527,16 @@ msgstr "Editar Membro"
msgid "Point Count"
msgstr "Mapeado de Entradas"
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Scale Random"
+msgstr "Relación de Escalado:"
+
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Scale Curve"
+msgstr "Modo Escalado"
+
#: scene/resources/physics_material.cpp
msgid "Rough"
msgstr ""
@@ -23673,10 +25598,6 @@ msgid "A"
msgstr ""
#: scene/resources/shader.cpp
-msgid "Code"
-msgstr ""
-
-#: scene/resources/shader.cpp
#, fuzzy
msgid "Custom Defines"
msgstr "Executar Escena a Elixir"
@@ -23772,15 +25693,6 @@ msgstr ""
#: scene/resources/texture.cpp
#, fuzzy
-msgid "Storage"
-msgstr "Almacenando Arquivo:"
-
-#: scene/resources/texture.cpp
-msgid "Lossy Quality"
-msgstr ""
-
-#: scene/resources/texture.cpp
-#, fuzzy
msgid "Load Path"
msgstr "Cargar Valores por Defecto"
@@ -23908,11 +25820,6 @@ msgstr ""
msgid "Fallback Environment"
msgstr "Amosar Entorno"
-#: scene/resources/world.cpp scene/resources/world_2d.cpp
-#, fuzzy
-msgid "Space"
-msgstr "Chamadas"
-
#: scene/resources/world.cpp
#, fuzzy
msgid "Scenario"
@@ -23991,10 +25898,37 @@ msgstr ""
msgid "Wet"
msgstr ""
-#: servers/audio/effects/audio_effect_compressor.cpp
-msgid "Threshold"
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "Voice"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+msgid "Delay (ms)"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_phaser.cpp
+msgid "Rate Hz"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#, fuzzy
+msgid "Depth (ms)"
+msgstr "Profundidad"
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+msgid "Level dB"
msgstr ""
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+#: servers/audio/effects/audio_effect_panner.cpp
+#, fuzzy
+msgid "Pan"
+msgstr "Plano:"
+
#: servers/audio/effects/audio_effect_compressor.cpp
#: servers/audio/effects/audio_effect_filter.cpp
msgid "Gain"
@@ -24017,20 +25951,6 @@ msgid "Tap 1"
msgstr ""
#: servers/audio/effects/audio_effect_delay.cpp
-msgid "Delay (ms)"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_delay.cpp
-msgid "Level dB"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_delay.cpp
-#: servers/audio/effects/audio_effect_panner.cpp
-#, fuzzy
-msgid "Pan"
-msgstr "Plano:"
-
-#: servers/audio/effects/audio_effect_delay.cpp
msgid "Tap 2"
msgstr ""
@@ -24092,10 +26012,6 @@ msgstr ""
msgid "Range Max Hz"
msgstr ""
-#: servers/audio/effects/audio_effect_phaser.cpp
-msgid "Rate Hz"
-msgstr ""
-
#: servers/audio/effects/audio_effect_pitch_shift.cpp
msgid "Oversampling"
msgstr ""
@@ -24111,7 +26027,7 @@ msgid "Predelay"
msgstr ""
#: servers/audio/effects/audio_effect_reverb.cpp
-msgid "(msec)"
+msgid "Msec"
msgstr ""
#: servers/audio/effects/audio_effect_reverb.cpp
diff --git a/editor/translations/he.po b/editor/translations/he.po
index 3447cee261..b4a1611aeb 100644
--- a/editor/translations/he.po
+++ b/editor/translations/he.po
@@ -38,7 +38,7 @@ msgstr ""
"n % 10 == 0) ? 2 : 3));\n"
"X-Generator: Weblate 4.10-dev\n"
-#: core/bind/core_bind.cpp
+#: core/bind/core_bind.cpp main/main.cpp
msgid "Tablet Driver"
msgstr ""
@@ -141,8 +141,8 @@ msgstr "×ž×™×§×•× ×”×¤× ×œ"
#: core/bind/core_bind.cpp editor/editor_settings.cpp main/main.cpp
#: modules/gdscript/gdscript_editor.cpp modules/gridmap/grid_map.cpp
#: modules/mono/csharp_script.cpp modules/visual_script/visual_script_nodes.cpp
-#: scene/2d/tile_map.cpp scene/3d/camera.cpp scene/gui/control.cpp
-#: scene/gui/graph_edit.cpp scene/main/viewport.cpp
+#: scene/2d/tile_map.cpp scene/3d/camera.cpp scene/3d/light.cpp
+#: scene/gui/control.cpp scene/gui/graph_edit.cpp scene/main/viewport.cpp
#: scene/resources/dynamic_font.cpp scene/resources/navigation_mesh.cpp
#: scene/resources/primitive_meshes.cpp scene/resources/sky.cpp
#: scene/resources/style_box.cpp scene/resources/texture.cpp
@@ -246,8 +246,7 @@ msgid "Data"
msgstr ""
#: core/io/file_access_network.cpp core/register_core_types.cpp
-#: editor/editor_settings.cpp editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp main/main.cpp
+#: editor/editor_settings.cpp main/main.cpp
#: modules/gdscript/language_server/gdscript_language_server.cpp
#, fuzzy
msgid "Network"
@@ -527,9 +526,10 @@ msgstr "ערכה מוגדרת…"
msgid "Relative"
msgstr "GDNative"
-#: core/os/input_event.cpp scene/2d/camera_2d.cpp
-#: scene/3d/interpolated_camera.cpp scene/animation/animation_player.cpp
-#: scene/resources/environment.cpp
+#: core/os/input_event.cpp scene/2d/camera_2d.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/interpolated_camera.cpp
+#: scene/animation/animation_player.cpp scene/resources/environment.cpp
+#: scene/resources/particles_material.cpp
#, fuzzy
msgid "Speed"
msgstr "מהירות (FPS):"
@@ -580,8 +580,9 @@ msgstr "סנכרון ×”×©×™× ×•×™×™× ×‘×¡×§×¨×™×¤×˜"
msgid "Pitch"
msgstr "קנה מידה:"
-#: core/os/input_event.cpp scene/2d/physics_body_2d.cpp
-#: scene/3d/physics_body.cpp
+#: core/os/input_event.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/physics_body_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/3d/physics_body.cpp scene/resources/particles_material.cpp
#, fuzzy
msgid "Velocity"
msgstr "הגדלת ×ות ר×שונה"
@@ -600,6 +601,8 @@ msgid "Controller Value"
msgstr ""
#: core/project_settings.cpp editor/editor_node.cpp main/main.cpp
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/windows/export/export.cpp
#, fuzzy
msgid "Application"
msgstr "כל הבחירה"
@@ -618,13 +621,16 @@ msgstr "הגדרות מיז×..."
#: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp
#: editor/editor_plugin_settings.cpp editor/editor_profiler.cpp
#: editor/project_manager.cpp editor/settings_config_dialog.cpp
-#: modules/gdnative/nativescript/nativescript.cpp scene/2d/area_2d.cpp
-#: scene/3d/area.cpp scene/main/node.cpp
+#: modules/gdnative/nativescript/nativescript.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/osx/export/export.cpp scene/2d/area_2d.cpp scene/3d/area.cpp
+#: scene/main/node.cpp
msgid "Name"
msgstr "ש×"
#: core/project_settings.cpp editor/editor_help.cpp
-#: modules/visual_script/visual_script_nodes.cpp
+#: modules/visual_script/visual_script_nodes.cpp platform/uwp/export/export.cpp
+#: platform/windows/export/export.cpp
msgid "Description"
msgstr "תי×ור"
@@ -662,7 +668,7 @@ msgid "Custom User Dir Name"
msgstr ""
#: core/project_settings.cpp editor/animation_track_editor.cpp
-#: editor/editor_audio_buses.cpp servers/audio_server.cpp
+#: editor/editor_audio_buses.cpp main/main.cpp servers/audio_server.cpp
msgid "Audio"
msgstr "שמע"
@@ -825,10 +831,13 @@ msgstr "מסנני×..."
msgid "Sharpen Intensity"
msgstr ""
-#: core/project_settings.cpp editor/editor_node.cpp editor/editor_settings.cpp
-#: editor/plugins/script_editor_plugin.cpp editor/project_export.cpp
-#: main/main.cpp modules/gdscript/gdscript.cpp
-#: modules/visual_script/visual_script.cpp scene/3d/room_manager.cpp
+#: core/project_settings.cpp editor/editor_export.cpp editor/editor_node.cpp
+#: editor/editor_settings.cpp editor/plugins/script_editor_plugin.cpp
+#: editor/project_export.cpp main/main.cpp modules/gdscript/gdscript.cpp
+#: modules/visual_script/visual_script.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp scene/3d/room_manager.cpp
#: scene/main/scene_tree.cpp scene/resources/shape_2d.cpp
#: servers/visual_server.cpp
msgid "Debug"
@@ -1064,6 +1073,7 @@ msgid "Subsurface Scattering"
msgstr ""
#: drivers/gles3/rasterizer_scene_gles3.cpp
+#: editor/import/resource_importer_texture.cpp
#: editor/plugins/spatial_editor_plugin.cpp modules/gltf/gltf_node.cpp
#: modules/gridmap/grid_map.cpp scene/2d/cpu_particles_2d.cpp
#: scene/2d/node_2d.cpp scene/2d/parallax_layer.cpp scene/2d/polygon_2d.cpp
@@ -1361,6 +1371,7 @@ msgid "Editors"
msgstr "עורך"
#: editor/animation_track_editor.cpp editor/editor_settings.cpp
+#: editor/import/resource_importer_scene.cpp
#: editor/plugins/animation_player_editor_plugin.cpp editor/scene_tree_dock.cpp
#: scene/2d/animated_sprite.cpp scene/2d/cpu_particles_2d.cpp
#: scene/2d/sprite.cpp scene/3d/cpu_particles.cpp scene/3d/sprite_3d.cpp
@@ -1590,14 +1601,14 @@ msgstr "ערך צעד של הנפשה."
msgid "Seconds"
msgstr "שניות"
-#: editor/animation_track_editor.cpp
+#: editor/animation_track_editor.cpp editor/import/resource_importer_scene.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp main/main.cpp
#: scene/resources/texture.cpp
msgid "FPS"
msgstr "FPS"
#: editor/animation_track_editor.cpp editor/editor_plugin_settings.cpp
-#: editor/editor_resource_picker.cpp
+#: editor/editor_resource_picker.cpp editor/import/resource_importer_wav.cpp
#: editor/plugins/polygon_2d_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
@@ -2553,7 +2564,9 @@ msgid "Remove Autoload"
msgstr "הסרת טעינה ×וטומטית"
#: editor/editor_autoload_settings.cpp editor/editor_plugin_settings.cpp
-#: modules/gdscript/gdscript.cpp scene/2d/polygon_2d.cpp scene/3d/area.cpp
+#: modules/gdscript/gdscript.cpp platform/android/export/export_plugin.cpp
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#: scene/2d/polygon_2d.cpp scene/3d/area.cpp scene/3d/physics_joint.cpp
#: scene/3d/reflection_probe.cpp scene/main/canvas_layer.cpp
#: scene/resources/material.cpp servers/visual_server.cpp
msgid "Enable"
@@ -2718,6 +2731,58 @@ msgstr ""
#: editor/editor_export.cpp platform/android/export/export_plugin.cpp
#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Custom Template"
+msgstr "חברי×"
+
+#: editor/editor_export.cpp editor/project_export.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp
+msgid "Release"
+msgstr ""
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Binary Format"
+msgstr "התמרה"
+
+#: editor/editor_export.cpp
+msgid "64 Bits"
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Embed PCK"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Texture Format"
+msgstr "מצב שינוי קנה מידה (R)"
+
+#: editor/editor_export.cpp
+msgid "BPTC"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "S3TC"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "ETC"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "ETC2"
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "No BPTC Fallbacks"
+msgstr ""
+
+#: editor/editor_export.cpp platform/android/export/export_plugin.cpp
+#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
msgid "Custom debug template not found."
msgstr "תבנית ניפוי שגי×ות מות×מת ×ישית ×œ× × ×ž×¦××”."
@@ -2893,6 +2958,7 @@ msgid "Make Current"
msgstr "הפוך לנוכחי"
#: editor/editor_feature_profile.cpp editor/editor_node.cpp
+#: editor/import/resource_importer_scene.cpp
#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
msgid "Import"
msgstr "ייבו×"
@@ -3021,8 +3087,11 @@ msgstr "הצלחה!"
msgid "Display Mode"
msgstr "מצב ניגון:"
-#: editor/editor_file_dialog.cpp main/main.cpp modules/csg/csg_shape.cpp
-#: modules/visual_script/visual_script_nodes.cpp
+#: editor/editor_file_dialog.cpp
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+#: editor/import/resource_importer_wav.cpp main/main.cpp
+#: modules/csg/csg_shape.cpp modules/visual_script/visual_script_nodes.cpp
#: modules/visual_script/visual_script_yield_nodes.cpp scene/2d/light_2d.cpp
#: scene/2d/physics_body_2d.cpp scene/2d/tile_map.cpp
#: scene/3d/baked_lightmap.cpp scene/3d/light.cpp scene/3d/physics_body.cpp
@@ -3159,7 +3228,9 @@ msgstr "×™×™×‘×•× ×ž×©××‘×™× (מחדש)"
msgid "Reimport Missing Imported Files"
msgstr ""
-#: editor/editor_help.cpp
+#: editor/editor_help.cpp scene/2d/camera_2d.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/resources/dynamic_font.cpp
+#: scene/resources/style_box.cpp
msgid "Top"
msgstr "עליון"
@@ -3213,6 +3284,7 @@ msgid "Fonts"
msgstr ""
#: editor/editor_help.cpp editor/plugins/theme_editor_plugin.cpp
+#: platform/iphone/export/export.cpp
msgid "Icons"
msgstr ""
@@ -3381,7 +3453,9 @@ msgstr ""
msgid "Pin value [Disabled because '%s' is editor-only]"
msgstr ""
-#: editor/editor_inspector.cpp editor/scene_tree_dock.cpp
+#: editor/editor_inspector.cpp
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+#: editor/scene_tree_dock.cpp
#: modules/visual_script/visual_script_func_nodes.cpp
#: modules/visual_script/visual_script_nodes.cpp
#: modules/visual_script/visual_script_property_selector.cpp
@@ -3711,6 +3785,16 @@ msgid "Quick Open Script..."
msgstr "פתיחת סקריפט מהירה…"
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Save & Reload"
+msgstr "שמירה והפעלה מחדש"
+
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Save changes to '%s' before reloading?"
+msgstr "לשמור ×ת ×”×©×™× ×•×™×™× ×œÖ¾'%s' לפני הסגירה?"
+
+#: editor/editor_node.cpp
msgid "Save & Close"
msgstr "שמירה וסגירה"
@@ -3826,6 +3910,11 @@ msgid "Open Project Manager?"
msgstr "לפתוח ×ת מנהל המיזמי×?"
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Save changes to the following scene(s) before reloading?"
+msgstr "לשמור ×ת ×”×©×™× ×•×™×™× ×œ×¡×¦× ×•×ª הב×ות לפני היצי××”?"
+
+#: editor/editor_node.cpp
msgid "Save & Quit"
msgstr "לשמור ולצ×ת"
@@ -4091,8 +4180,8 @@ msgstr "שינויי חומרי×"
#: editor/editor_node.cpp
#, fuzzy
-msgid "Translate Properties"
-msgstr "מ×פייני×"
+msgid "Localize Settings"
+msgstr "הגדרות"
#: editor/editor_node.cpp
#, fuzzy
@@ -4109,8 +4198,8 @@ msgstr "מפקח"
#: editor/editor_node.cpp
#, fuzzy
-msgid "Capitalize Properties"
-msgstr "מ×פייני×"
+msgid "Default Property Name Style"
+msgstr "תצוגה מקדימה:"
#: editor/editor_node.cpp
msgid "Default Float Step"
@@ -4711,7 +4800,9 @@ msgstr "×ª×•×¡×¤×™× ×ž×•×ª×§× ×™×:"
msgid "Update"
msgstr "עדכון"
-#: editor/editor_plugin_settings.cpp
+#: editor/editor_plugin_settings.cpp platform/android/export/export_plugin.cpp
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp
#, fuzzy
msgid "Version"
msgstr "גרסה:"
@@ -5729,7 +5820,7 @@ msgstr ""
msgid "Rect Custom Position"
msgstr "הסרת מצולע ונקודה"
-#: editor/editor_settings.cpp
+#: editor/editor_settings.cpp platform/android/export/export_plugin.cpp
msgid "Screen"
msgstr ""
@@ -5756,6 +5847,19 @@ msgid "Editor SSL Certificates"
msgstr "הגדרות עורך"
#: editor/editor_settings.cpp
+msgid "HTTP Proxy"
+msgstr ""
+
+#: editor/editor_settings.cpp
+msgid "Host"
+msgstr ""
+
+#: editor/editor_settings.cpp editor/fileserver/editor_file_server.cpp
+#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp
+msgid "Port"
+msgstr ""
+
+#: editor/editor_settings.cpp
msgid "Project Manager"
msgstr "מנהל המיזמי×"
@@ -5798,7 +5902,8 @@ msgstr ""
msgid "String Color"
msgstr "קובץ ×חסון:"
-#: editor/editor_settings.cpp
+#: editor/editor_settings.cpp platform/javascript/export/export.cpp
+#: platform/uwp/export/export.cpp
#, fuzzy
msgid "Background Color"
msgstr "צבע רקע ×œ× ×—×•×§×™."
@@ -5975,22 +6080,6 @@ msgid "Starting the download..."
msgstr ""
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "HTTP Proxy"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Host"
-msgstr ""
-
-#: editor/export_template_manager.cpp editor/fileserver/editor_file_server.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp main/main.cpp
-#: modules/mono/mono_gd/gd_mono.cpp
-msgid "Port"
-msgstr ""
-
-#: editor/export_template_manager.cpp
msgid "Error requesting URL:"
msgstr "שגי××” בבקשת כתובת:"
@@ -6255,6 +6344,7 @@ msgstr ""
#: editor/fileserver/editor_file_server.cpp
#: editor/plugins/version_control_editor_plugin.cpp
+#: platform/uwp/export/export.cpp platform/windows/export/export.cpp
msgid "Password"
msgstr ""
@@ -6653,6 +6743,116 @@ msgstr ""
msgid "Use Ambient"
msgstr ""
+#: editor/import/resource_importer_bitmask.cpp
+#, fuzzy
+msgid "Create From"
+msgstr "יצירת תיקייה"
+
+#: editor/import/resource_importer_bitmask.cpp
+#: servers/audio/effects/audio_effect_compressor.cpp
+msgid "Threshold"
+msgstr ""
+
+#: editor/import/resource_importer_csv_translation.cpp
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_scene.cpp
+#: editor/import/resource_importer_texture.cpp
+#: editor/import/resource_importer_wav.cpp scene/3d/gi_probe.cpp
+#, fuzzy
+msgid "Compress"
+msgstr "רכיבי×"
+
+#: editor/import/resource_importer_csv_translation.cpp
+msgid "Delimiter"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+msgid "No BPTC If RGB"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/sprite_3d.cpp
+#: scene/resources/material.cpp scene/resources/particles_material.cpp
+#: scene/resources/texture.cpp
+msgid "Flags"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/animation/tween.cpp
+#: scene/resources/texture.cpp
+msgid "Repeat"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/2d/light_2d.cpp
+#: scene/gui/control.cpp scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Filter"
+msgstr "מסנני×..."
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Mipmaps"
+msgstr "×ותות"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+msgid "Anisotropic"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+msgid "sRGB"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#, fuzzy
+msgid "Slices"
+msgstr "התקן"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
+#: scene/resources/style_box.cpp
+#, fuzzy
+msgid "Horizontal"
+msgstr "יצירת תיקייה"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
+#: scene/resources/style_box.cpp
+#, fuzzy
+msgid "Vertical"
+msgstr "קודקודי×"
+
+#: editor/import/resource_importer_obj.cpp
+#, fuzzy
+msgid "Generate Tangents"
+msgstr "מחיקת נקודה"
+
+#: editor/import/resource_importer_obj.cpp
+#, fuzzy
+msgid "Scale Mesh"
+msgstr "מצב שינוי קנה מידה (R)"
+
+#: editor/import/resource_importer_obj.cpp
+#, fuzzy
+msgid "Offset Mesh"
+msgstr "היסט רשת:"
+
+#: editor/import/resource_importer_obj.cpp
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Octahedral Compression"
+msgstr "גרסה נוכחית:"
+
+#: editor/import/resource_importer_obj.cpp
+msgid "Optimize Mesh Flags"
+msgstr ""
+
#: editor/import/resource_importer_scene.cpp
msgid "Import as Single Scene"
msgstr "×™×™×‘×•× ×›×¡×¦× ×” בודדת"
@@ -6693,6 +6893,154 @@ msgstr "×™×™×‘×•× ×›×ž×¡×¤×¨ סצנות"
msgid "Import as Multiple Scenes+Materials"
msgstr "×™×™×‘×•× ×›×ž×¡×¤×¨ סצנות+חומרי×"
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Nodes"
+msgstr "מפרק"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Root Type"
+msgstr "סוג שדה"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Root Name"
+msgstr "מרוחק "
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Root Scale"
+msgstr "קנה מידה:"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Custom Script"
+msgstr "גזירת מפרקי×"
+
+#: editor/import/resource_importer_scene.cpp scene/resources/texture.cpp
+#, fuzzy
+msgid "Storage"
+msgstr "קובץ ×חסון:"
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Use Legacy Names"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+#, fuzzy
+msgid "Materials"
+msgstr "שינויי חומרי×"
+
+#: editor/import/resource_importer_scene.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Location"
+msgstr "צעד סיבוב:"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Keep On Reimport"
+msgstr "×™×™×‘×•× ×ž×—×“×©"
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+msgid "Meshes"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Ensure Tangents"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Light Baking"
+msgstr "×פיית Lightmaps"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Lightmap Texel Size"
+msgstr "×פיית Lightmaps"
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+msgid "Skins"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Use Named Skins"
+msgstr "מצב מרחב מקומי (%s)"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "External Files"
+msgstr "פתיחת קובץ"
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Store In Subdir"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Filter Script"
+msgstr "סינון סקריפטי×"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Keep Custom Tracks"
+msgstr "התמרה"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Optimizer"
+msgstr "מיטוב"
+
+#: editor/import/resource_importer_scene.cpp main/main.cpp
+#: modules/mono/mono_gd/gd_mono.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp scene/2d/camera_2d.cpp scene/2d/light_2d.cpp
+#: scene/2d/navigation_polygon.cpp scene/2d/ray_cast_2d.cpp scene/2d/sprite.cpp
+#: scene/2d/y_sort.cpp scene/3d/audio_stream_player_3d.cpp
+#: scene/3d/baked_lightmap.cpp scene/3d/interpolated_camera.cpp
+#: scene/3d/light.cpp scene/3d/navigation_mesh_instance.cpp
+#: scene/3d/physics_joint.cpp scene/3d/ray_cast.cpp scene/3d/sprite_3d.cpp
+#: scene/gui/graph_edit.cpp scene/gui/rich_text_label.cpp
+#: scene/resources/curve.cpp scene/resources/environment.cpp
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Enabled"
+msgstr "הפעלה"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Max Linear Error"
+msgstr "שגי××” ליני×רית מקסימלית:"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Max Angular Error"
+msgstr "שגי×ת זווית מקסימלית:"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Max Angle"
+msgstr "ערך"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Remove Unused Tracks"
+msgstr "מחיקת רצועת הנפשה"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Clips"
+msgstr "קטעי הנפשה"
+
+#: editor/import/resource_importer_scene.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/particles_2d.cpp scene/3d/area.cpp scene/3d/cpu_particles.cpp
+#: scene/3d/particles.cpp scene/resources/environment.cpp
+#, fuzzy
+msgid "Amount"
+msgstr "כמות:"
+
#: editor/import/resource_importer_scene.cpp
#: editor/plugins/mesh_library_editor_plugin.cpp
msgid "Import Scene"
@@ -6734,12 +7082,149 @@ msgstr ""
msgid "Saving..."
msgstr "שמירה…"
+#: editor/import/resource_importer_texture.cpp scene/resources/texture.cpp
+msgid "Lossy Quality"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "HDR Mode"
+msgstr "מצב שינוי קנה מידה (R)"
+
+#: editor/import/resource_importer_texture.cpp
+msgid "BPTC LDR"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/mesh_instance_2d.cpp scene/2d/multimesh_instance_2d.cpp
+#: scene/2d/particles_2d.cpp scene/2d/sprite.cpp scene/resources/style_box.cpp
+msgid "Normal Map"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Process"
+msgstr "גרסה נוכחית:"
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Fix Alpha Border"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Premult Alpha"
+msgstr "עריכת מצולע"
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Hdr As Srgb"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Invert Color"
+msgstr "קודקודי×"
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Normal Map Invert Y"
+msgstr "תבנית"
+
+#: editor/import/resource_importer_texture.cpp
+#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
+#: scene/audio/audio_stream_player.cpp scene/gui/video_player.cpp
+msgid "Stream"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Size Limit"
+msgstr "מצב ניגון:"
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Detect 3D"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "SVG"
+msgstr "HSV"
+
#: editor/import/resource_importer_texture.cpp
msgid ""
"Warning, no suitable PC VRAM compression enabled in Project Settings. This "
"texture will not display correctly on PC."
msgstr ""
+#: editor/import/resource_importer_texture_atlas.cpp
+#, fuzzy
+msgid "Atlas File"
+msgstr "קובץ ZIP של נכסי×"
+
+#: editor/import/resource_importer_texture_atlas.cpp
+#, fuzzy
+msgid "Import Mode"
+msgstr "חלון ייבו×"
+
+#: editor/import/resource_importer_texture_atlas.cpp
+#, fuzzy
+msgid "Crop To Region"
+msgstr "מצב גולמי"
+
+#: editor/import/resource_importer_texture_atlas.cpp
+msgid "Trim Alpha Border From Region"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp scene/2d/physics_body_2d.cpp
+#, fuzzy
+msgid "Force"
+msgstr "נתיב המש×ב"
+
+#: editor/import/resource_importer_wav.cpp
+msgid "8 Bit"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp main/main.cpp
+#: modules/mono/editor/csharp_project.cpp modules/mono/mono_gd/gd_mono.cpp
+msgid "Mono"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+#, fuzzy
+msgid "Max Rate"
+msgstr "מפרק ערבוב"
+
+#: editor/import/resource_importer_wav.cpp
+#, fuzzy
+msgid "Max Rate Hz"
+msgstr "מפרק ערבוב"
+
+#: editor/import/resource_importer_wav.cpp
+msgid "Trim"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+#, fuzzy
+msgid "Normalize"
+msgstr "תבנית"
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+#, fuzzy
+msgid "Loop Mode"
+msgstr "מצב שינוי קנה מידה (R)"
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+#, fuzzy
+msgid "Loop Begin"
+msgstr "מצב שינוי קנה מידה (R)"
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+#, fuzzy
+msgid "Loop End"
+msgstr "מצב שינוי קנה מידה (R)"
+
#: editor/import_defaults_editor.cpp
#, fuzzy
msgid "Select Importer"
@@ -6812,6 +7297,29 @@ msgstr "טעינת המש×ב נכשלה."
#: editor/inspector_dock.cpp
#, fuzzy
+msgid "Property Name Style"
+msgstr "רצועת מ×פיין"
+
+#: editor/inspector_dock.cpp scene/gui/color_picker.cpp
+msgid "Raw"
+msgstr "Raw"
+
+#: editor/inspector_dock.cpp
+#, fuzzy
+msgid "Capitalized"
+msgstr "הגדלת ×ות ר×שונה"
+
+#: editor/inspector_dock.cpp
+#, fuzzy
+msgid "Localized"
+msgstr "תבנית"
+
+#: editor/inspector_dock.cpp
+msgid "Localization not available for current language."
+msgstr ""
+
+#: editor/inspector_dock.cpp
+#, fuzzy
msgid "Copy Properties"
msgstr "מ×פייני×"
@@ -7882,18 +8390,26 @@ msgid "License (Z-A)"
msgstr "רישיון (ת-×)"
#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgctxt "Pagination"
msgid "First"
msgstr "ר×שון"
-#: editor/plugins/asset_library_editor_plugin.cpp scene/gui/control.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgctxt "Pagination"
msgid "Previous"
msgstr "הקוד×"
-#: editor/plugins/asset_library_editor_plugin.cpp scene/gui/control.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgctxt "Pagination"
msgid "Next"
msgstr "הב×"
#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgctxt "Pagination"
msgid "Last"
msgstr "×חרון"
@@ -8140,22 +8656,22 @@ msgid ""
"margins."
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
#, fuzzy
msgid "Top Left"
msgstr "שמ×ל"
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
#, fuzzy
msgid "Top Right"
msgstr "ימין"
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
#, fuzzy
msgid "Bottom Right"
msgstr "הטיית מצולע"
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
#, fuzzy
msgid "Bottom Left"
msgstr "מבט תחתי"
@@ -8905,6 +9421,19 @@ msgstr ""
msgid "Gradient Edited"
msgstr ""
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+msgid "Swap GradientTexture2D Fill Points"
+msgstr ""
+
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+msgid "Swap Gradient Fill Points"
+msgstr ""
+
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+#, fuzzy
+msgid "Toggle Grid Snap"
+msgstr "שינוי מצב"
+
#: editor/plugins/item_list_editor_plugin.cpp
msgid "Item %d"
msgstr ""
@@ -9125,9 +9654,9 @@ msgid ""
"%s"
msgstr ""
-#: editor/plugins/mesh_library_editor_plugin.cpp modules/gridmap/grid_map.cpp
+#: editor/plugins/mesh_library_editor_plugin.cpp
#, fuzzy
-msgid "Mesh Library"
+msgid "MeshLibrary"
msgstr "×™×™×¦×•× ×¡×¤×¨×™×”"
#: editor/plugins/mesh_library_editor_plugin.cpp
@@ -10144,8 +10673,8 @@ msgstr "התחברות למפרק:"
msgid "Source"
msgstr "מש×ב"
-#: editor/plugins/script_text_editor.cpp scene/3d/interpolated_camera.cpp
-#: scene/animation/skeleton_ik.cpp
+#: editor/plugins/script_text_editor.cpp platform/uwp/export/export.cpp
+#: scene/3d/interpolated_camera.cpp scene/animation/skeleton_ik.cpp
msgid "Target"
msgstr ""
@@ -11171,7 +11700,9 @@ msgstr "מהירות (FPS):"
#: editor/plugins/sprite_frames_editor_plugin.cpp
#: modules/gltf/gltf_animation.cpp modules/minimp3/audio_stream_mp3.cpp
-#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp scene/2d/path_2d.cpp
+#: modules/minimp3/resource_importer_mp3.cpp
+#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp
+#: modules/stb_vorbis/resource_importer_ogg_vorbis.cpp scene/2d/path_2d.cpp
#: scene/3d/path.cpp scene/resources/animation.cpp scene/resources/material.cpp
msgid "Loop"
msgstr "לול××”"
@@ -12130,8 +12661,9 @@ msgstr "מצב גולמי"
msgid "Priority"
msgstr "×™×™×¦×•× ×ž×™×–×"
-#: editor/plugins/tile_set_editor_plugin.cpp main/main.cpp scene/gui/button.cpp
-#: scene/gui/item_list.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp main/main.cpp
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#: scene/gui/button.cpp scene/gui/item_list.cpp
msgid "Icon"
msgstr ""
@@ -13501,10 +14033,6 @@ msgid ""
msgstr ""
#: editor/project_export.cpp
-msgid "Release"
-msgstr ""
-
-#: editor/project_export.cpp
#, fuzzy
msgid "Exporting All"
msgstr "ייצו×"
@@ -15343,6 +15871,7 @@ msgid "Change AudioStreamPlayer3D Emission Angle"
msgstr "שינוי זווית הפליטה של AudioStreamPlayer3D"
#: editor/spatial_editor_gizmos.cpp modules/gltf/gltf_node.cpp
+#: platform/osx/export/export.cpp
msgid "Camera"
msgstr ""
@@ -15619,7 +16148,8 @@ msgstr ""
msgid "Use Nvidia Rect Flicker Workaround"
msgstr ""
-#: main/main.cpp platform/uwp/os_uwp.cpp
+#: main/main.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp platform/uwp/os_uwp.cpp
#, fuzzy
msgid "Display"
msgstr "הצג הכל"
@@ -15679,19 +16209,6 @@ msgstr ""
msgid "Allowed"
msgstr ""
-#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp scene/2d/camera_2d.cpp
-#: scene/2d/light_2d.cpp scene/2d/navigation_polygon.cpp
-#: scene/2d/ray_cast_2d.cpp scene/2d/sprite.cpp scene/2d/y_sort.cpp
-#: scene/3d/audio_stream_player_3d.cpp scene/3d/baked_lightmap.cpp
-#: scene/3d/interpolated_camera.cpp scene/3d/light.cpp
-#: scene/3d/navigation_mesh_instance.cpp scene/3d/ray_cast.cpp
-#: scene/3d/sprite_3d.cpp scene/gui/graph_edit.cpp
-#: scene/gui/rich_text_label.cpp scene/resources/curve.cpp
-#: scene/resources/environment.cpp
-#, fuzzy
-msgid "Enabled"
-msgstr "הפעלה"
-
#: main/main.cpp
msgid "Intended Usage"
msgstr ""
@@ -15722,13 +16239,14 @@ msgstr ""
msgid "Handheld"
msgstr ""
-#: main/main.cpp
+#: main/main.cpp platform/javascript/export/export.cpp
+#: platform/uwp/export/export.cpp
#, fuzzy
msgid "Orientation"
msgstr "פתיחת התיעוד"
#: main/main.cpp scene/gui/scroll_container.cpp scene/gui/text_edit.cpp
-#: scene/main/scene_tree.cpp
+#: scene/main/scene_tree.cpp scene/register_scene_types.cpp
#, fuzzy
msgid "Common"
msgstr "קהילה"
@@ -15771,7 +16289,7 @@ msgstr ""
#: main/main.cpp
#, fuzzy
-msgid "Frame Delay (msec)"
+msgid "Frame Delay Msec"
msgstr "זמן שקופית (שניות)"
#: main/main.cpp
@@ -15897,11 +16415,6 @@ msgstr ""
msgid "Tooltip Position Offset"
msgstr "היסט סיבוב:"
-#: main/main.cpp modules/mono/editor/csharp_project.cpp
-#: modules/mono/mono_gd/gd_mono.cpp
-msgid "Mono"
-msgstr ""
-
#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp
#, fuzzy
msgid "Debugger Agent"
@@ -16472,7 +16985,7 @@ msgstr "בחירת צבע"
msgid "Intensity"
msgstr ""
-#: modules/gltf/gltf_light.cpp scene/2d/light_2d.cpp
+#: modules/gltf/gltf_light.cpp scene/2d/light_2d.cpp scene/3d/light.cpp
#, fuzzy
msgid "Range"
msgstr "שינוי"
@@ -16617,11 +17130,6 @@ msgstr "ימין"
msgid "Use Named Skin Binds"
msgstr ""
-#: modules/gltf/gltf_state.cpp scene/3d/physics_joint.cpp
-#, fuzzy
-msgid "Nodes"
-msgstr "מפרק"
-
#: modules/gltf/gltf_state.cpp
#, fuzzy
msgid "Buffer Views"
@@ -16632,15 +17140,6 @@ msgid "Accessors"
msgstr ""
#: modules/gltf/gltf_state.cpp
-msgid "Meshes"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp
-#, fuzzy
-msgid "Materials"
-msgstr "שינויי חומרי×"
-
-#: modules/gltf/gltf_state.cpp
#, fuzzy
msgid "Scene Name"
msgstr "נתיב סצנות:"
@@ -16657,15 +17156,11 @@ msgstr "שינוי ×©× ×ž×¤×¨×§ השורש"
msgid "Textures"
msgstr "הסרת תבנית"
-#: modules/gltf/gltf_state.cpp
+#: modules/gltf/gltf_state.cpp platform/uwp/export/export.cpp
msgid "Images"
msgstr ""
#: modules/gltf/gltf_state.cpp
-msgid "Skins"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp
msgid "Cameras"
msgstr ""
@@ -16700,10 +17195,15 @@ msgstr ""
#: modules/gridmap/grid_map.cpp
#, fuzzy
+msgid "Mesh Library"
+msgstr "×™×™×¦×•× ×¡×¤×¨×™×”"
+
+#: modules/gridmap/grid_map.cpp
+#, fuzzy
msgid "Physics Material"
msgstr "שקופית פיזיקלית %"
-#: modules/gridmap/grid_map.cpp
+#: modules/gridmap/grid_map.cpp scene/3d/visual_instance.cpp
#, fuzzy
msgid "Use In Baked Light"
msgstr "×פיית Lightmaps"
@@ -16735,6 +17235,7 @@ msgstr "×”×–×—×” משמ×ל"
#: modules/gridmap/grid_map.cpp scene/2d/collision_object_2d.cpp
#: scene/2d/tile_map.cpp scene/3d/collision_object.cpp scene/3d/soft_body.cpp
+#: scene/resources/material.cpp
msgid "Mask"
msgstr ""
@@ -16921,7 +17422,9 @@ msgid "Ultra Quality Ray Count"
msgstr ""
#: modules/minimp3/audio_stream_mp3.cpp
+#: modules/minimp3/resource_importer_mp3.cpp
#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp
+#: modules/stb_vorbis/resource_importer_ogg_vorbis.cpp
#, fuzzy
msgid "Loop Offset"
msgstr "היסט רשת:"
@@ -18023,6 +18526,190 @@ msgid "The package must have at least one '.' separator."
msgstr "החבילה חייבת לכלול לפחות מפריד '.' ×חד."
#: platform/android/export/export_plugin.cpp
+msgid "Use Custom Build"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Export Format"
+msgstr "×™×™×¦×•× ×ž×™×–×"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Keystore"
+msgstr "ניפוי שגי×ות"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Debug User"
+msgstr "ניפוי שגי×ות"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+msgid "Debug Password"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Release User"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Release Password"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "One Click Deploy"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Clear Previous Install"
+msgstr "בדיקת המופע הקוד×"
+
+#: platform/android/export/export_plugin.cpp scene/resources/shader.cpp
+msgid "Code"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Min SDK"
+msgstr "מבט קדמי"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Target SDK"
+msgstr "נתיב המש×ב"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Package"
+msgstr "×ורז"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Unique Name"
+msgstr "×©× ×”×ž×¤×¨×§:"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Signed"
+msgstr "×ות"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Classify As Game"
+msgstr "×©× ×ž×—×œ×§×”:"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Retain Data On Uninstall"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Exclude From Recents"
+msgstr "מחיקת שורה"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Graphics"
+msgstr "היסט רשת:"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "OpenGL Debug"
+msgstr "פתיחה"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "XR Features"
+msgstr "תכונות מרכזיות:"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "XR Mode"
+msgstr "מצב שינוי קנה מידה (R)"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Hand Tracking"
+msgstr "×ורז"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Hand Tracking Frequency"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Passthrough"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Immersive Mode"
+msgstr "×™×™×¦×•× ×ž×™×–×"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Support Small"
+msgstr "תמיכה"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Support Normal"
+msgstr "תמיכה"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Support Large"
+msgstr "תמיכה"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Support Xlarge"
+msgstr "תמיכה"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "User Data Backup"
+msgstr "ממשק משתמש"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Allow"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Command Line"
+msgstr "קהילה"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Extra Args"
+msgstr "פרמטרי קרי××” נוספי×:"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "APK Expansion"
+msgstr "גרסה נוכחית:"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Salt"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Public Key"
+msgstr "שכפול מפתח(ות)"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Permissions"
+msgstr "גרסה נוכחית:"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Custom Permissions"
+msgstr "הרצת סצנה בהת×מה ×ישית"
+
+#: platform/android/export/export_plugin.cpp
msgid "Select device from the list"
msgstr "× × ×œ×‘×—×•×¨ התקן מהרשימה"
@@ -18345,6 +19032,177 @@ msgid "The character '%s' is not allowed in Identifier."
msgstr "התו '%s' ×ינו מותר במזהה."
#: platform/iphone/export/export.cpp
+msgid "App Store Team ID"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Provisioning Profile UUID Debug"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Code Sign Identity Debug"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Export Method Debug"
+msgstr "מצב הייצו×?"
+
+#: platform/iphone/export/export.cpp
+msgid "Provisioning Profile UUID Release"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Code Sign Identity Release"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Export Method Release"
+msgstr "מצב הייצו×?"
+
+#: platform/iphone/export/export.cpp
+msgid "Targeted Device Family"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Info"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Identifier"
+msgstr "מזהה ×œ× ×—×•×§×™:"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Signature"
+msgstr "×ות"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Short Version"
+msgstr "גרסה:"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Copyright"
+msgstr "ימין"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Capabilities"
+msgstr "מ×פייני×"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Access Wi-Fi"
+msgstr "הצלחה!"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Push Notifications"
+msgstr "הדבקת הנפשה"
+
+#: platform/iphone/export/export.cpp scene/3d/baked_lightmap.cpp
+#, fuzzy
+msgid "User Data"
+msgstr "ממשק משתמש"
+
+#: platform/iphone/export/export.cpp
+msgid "Accessible From Files App"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Accessible From Itunes Sharing"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Privacy"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Camera Usage Description"
+msgstr "תי×ור"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Microphone Usage Description"
+msgstr "תי×ורי מ×פייני×"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Photolibrary Usage Description"
+msgstr "תי×ורי מ×פייני×"
+
+#: platform/iphone/export/export.cpp
+msgid "iPhone 120 X 120"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPhone 180 X 180"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 76 X 76"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 152 X 152"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 167 X 167"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "App Store 1024 X 1024"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Spotlight 40 X 40"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Spotlight 80 X 80"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Storyboard"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Use Launch Screen Storyboard"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Image Scale Mode"
+msgstr "מצב שינוי קנה מידה (R)"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Custom Image @2x"
+msgstr "גזירת מפרקי×"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Custom Image @3x"
+msgstr "גזירת מפרקי×"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Use Custom BG Color"
+msgstr "גזירת מפרקי×"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Custom BG Color"
+msgstr "גזירת מפרקי×"
+
+#: platform/iphone/export/export.cpp
msgid "App Store Team ID not specified - cannot configure the project."
msgstr "×œ× ×¦×•×™×Ÿ App Store Team ID - ×œ× × ×™×ª×Ÿ להגדיר ×ת המיז×."
@@ -18383,6 +19241,80 @@ msgstr "×œ× × ×™×ª×Ÿ לכתוב קובץ:"
#: platform/javascript/export/export.cpp
#, fuzzy
+msgid "Variant"
+msgstr "מוני×:"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Export Type"
+msgstr "ייצו×"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "VRAM Texture Compression"
+msgstr "גרסה נוכחית:"
+
+#: platform/javascript/export/export.cpp
+msgid "For Desktop"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "For Mobile"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Html"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Export Icon"
+msgstr "להרחיב הכול"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Custom Html Shell"
+msgstr "גזירת מפרקי×"
+
+#: platform/javascript/export/export.cpp
+msgid "Head Include"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Canvas Resize Policy"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Focus Canvas On Start"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Experimental Virtual Keyboard"
+msgstr "סנן ×ותות"
+
+#: platform/javascript/export/export.cpp
+msgid "Progressive Web App"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Offline Page"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 144 X 144"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 180 X 180"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 512 X 512"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
msgid "Could not read HTML shell:"
msgstr "×œ× × ×™×ª×Ÿ ×œ×§×¨×•× ×ž×¢×˜×¤×ª HTML מות×מת:"
@@ -18496,6 +19428,201 @@ msgid "Unknown object type."
msgstr ""
#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "App Category"
+msgstr "קטגוריה:"
+
+#: platform/osx/export/export.cpp
+msgid "High Res"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Location Usage Description"
+msgstr "תי×ור"
+
+#: platform/osx/export/export.cpp
+msgid "Address Book Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Calendar Usage Description"
+msgstr "תי×ור"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Photos Library Usage Description"
+msgstr "תי×ורי מ×פייני×"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Desktop Folder Usage Description"
+msgstr "תי×ורי מתודות"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Documents Folder Usage Description"
+msgstr "תי×ורי מתודות"
+
+#: platform/osx/export/export.cpp
+msgid "Downloads Folder Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Network Volumes Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Removable Volumes Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#, fuzzy
+msgid "Codesign"
+msgstr "מפרק"
+
+#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Identity"
+msgstr "×”×–×—×” משמ×ל"
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#, fuzzy
+msgid "Timestamp"
+msgstr "זמן"
+
+#: platform/osx/export/export.cpp
+msgid "Hardened Runtime"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Replace Existing Signature"
+msgstr "להחליף הכול"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Entitlements"
+msgstr "תוכן:"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Custom File"
+msgstr "גזירת מפרקי×"
+
+#: platform/osx/export/export.cpp
+msgid "Allow JIT Code Execution"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Allow Unsigned Executable Memory"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Allow Dyld Environment Variables"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Disable Library Validation"
+msgstr "כפתור ×מצעי"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Audio Input"
+msgstr "הוספת קלט"
+
+#: platform/osx/export/export.cpp
+msgid "Address Book"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Calendars"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Photos Library"
+msgstr "×™×™×¦×•× ×¡×¤×¨×™×”"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Apple Events"
+msgstr "הוספת ×ירוע"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Debugging"
+msgstr "ניפוי שגי×ות"
+
+#: platform/osx/export/export.cpp
+msgid "App Sandbox"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Network Server"
+msgstr "מ×פיין רשת"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Network Client"
+msgstr "מ×פיין רשת"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Device Usb"
+msgstr "התקן"
+
+#: platform/osx/export/export.cpp
+msgid "Device Bluetooth"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Files Downloads"
+msgstr "הורדה"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Files Pictures"
+msgstr "מ×פייני פריט."
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Files Music"
+msgstr "קובץ"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Files Movies"
+msgstr "מ×פייני פריט."
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#, fuzzy
+msgid "Custom Options"
+msgstr "×פשרויות ×פיק"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Notarization"
+msgstr "עריכת מצולע"
+
+#: platform/osx/export/export.cpp
+msgid "Apple ID Name"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Apple ID Password"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Apple Team ID"
+msgstr ""
+
+#: platform/osx/export/export.cpp
msgid ""
"Note: The notarization process generally takes less than an hour. When the "
"process is completed, you'll receive an email."
@@ -18689,6 +19816,135 @@ msgid "Force Builtin Codesign"
msgstr ""
#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Architecture"
+msgstr "הוספת ערך ×רכיטקטורה"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Display Name"
+msgstr "הצג הכל"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Short Name"
+msgstr "שינוי ×©× ×§×œ×˜"
+
+#: platform/uwp/export/export.cpp
+msgid "Publisher"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Publisher Display Name"
+msgstr "×©× ×ª×¦×•×’×” של ×ž×¤×¨×¡× ×”×—×‘×™×œ×” ×œ× ×—×•×§×™."
+
+#: platform/uwp/export/export.cpp
+msgid "Product Guid"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Publisher Guid"
+msgstr "נגינת סצנה בהת×מה ×ישית"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Signing"
+msgstr "×ות"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Certificate"
+msgstr "קודקודי×"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Algorithm"
+msgstr "ניפוי שגי×ות"
+
+#: platform/uwp/export/export.cpp
+msgid "Major"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Minor"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Build"
+msgstr "מצב שינוי קנה מידה (R)"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Revision"
+msgstr "גרסה נוכחית:"
+
+#: platform/uwp/export/export.cpp
+msgid "Landscape"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Portrait"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Landscape Flipped"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Portrait Flipped"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Store Logo"
+msgstr "מצב שינוי קנה מידה (R)"
+
+#: platform/uwp/export/export.cpp
+msgid "Square 44 X 44 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 71 X 71 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 150 X 150 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 310 X 310 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Wide 310 X 150 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Splash Screen"
+msgstr "קרי×ות"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Tiles"
+msgstr "קובץ"
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Square 150 X 150"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Wide 310 X 150"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Square 310 X 310"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
msgid "Invalid package short name."
msgstr "×©× ×§×¦×¨ של חבילה ×œ× ×—×•×§×™."
@@ -18756,15 +20012,53 @@ msgid "Debug Certificate"
msgstr ""
#: platform/uwp/export/export.cpp
-msgid "Debug Password"
+#, fuzzy
+msgid "Debug Algorithm"
+msgstr "ניפוי שגי×ות"
+
+#: platform/windows/export/export.cpp
+msgid "Identity Type"
msgstr ""
-#: platform/uwp/export/export.cpp
+#: platform/windows/export/export.cpp
+msgid "Timestamp Server URL"
+msgstr ""
+
+#: platform/windows/export/export.cpp
#, fuzzy
-msgid "Debug Algorithm"
+msgid "Digest Algorithm"
msgstr "ניפוי שגי×ות"
#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "File Version"
+msgstr "גרסה:"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Product Version"
+msgstr "GUID מוצר ×œ× ×—×•×§×™."
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Company Name"
+msgstr "×©× ×”×ž×¤×¨×§:"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Product Name"
+msgstr "קבוצות"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "File Description"
+msgstr "תי×ור"
+
+#: platform/windows/export/export.cpp
+msgid "Trademarks"
+msgstr ""
+
+#: platform/windows/export/export.cpp
msgid ""
"The rcedit tool must be configured in the Editor Settings (Export > Windows "
"> Rcedit) to change the icon or app information data."
@@ -18839,12 +20133,14 @@ msgstr "הרצה"
msgid "Centered"
msgstr "×”×–×—×” משמ×ל"
-#: scene/2d/animated_sprite.cpp scene/2d/camera_2d.cpp scene/2d/light_2d.cpp
+#: scene/2d/animated_sprite.cpp scene/2d/camera_2d.cpp
+#: scene/2d/cpu_particles_2d.cpp scene/2d/light_2d.cpp
#: scene/2d/parallax_background.cpp scene/2d/parallax_layer.cpp
#: scene/2d/path_2d.cpp scene/2d/polygon_2d.cpp scene/2d/sprite.cpp
-#: scene/3d/path.cpp scene/3d/physics_body.cpp scene/3d/sprite_3d.cpp
-#: scene/gui/graph_node.cpp scene/gui/rich_text_effect.cpp
-#: scene/main/canvas_layer.cpp scene/resources/material.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/path.cpp scene/3d/physics_body.cpp
+#: scene/3d/sprite_3d.cpp scene/gui/graph_node.cpp
+#: scene/gui/rich_text_effect.cpp scene/main/canvas_layer.cpp
+#: scene/resources/material.cpp scene/resources/particles_material.cpp
#: scene/resources/style_box.cpp
#, fuzzy
msgid "Offset"
@@ -18919,11 +20215,6 @@ msgstr "הוספת ×פיק שמע"
msgid "Override"
msgstr "דריסה"
-#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
-#: scene/audio/audio_stream_player.cpp scene/gui/video_player.cpp
-msgid "Stream"
-msgstr ""
-
#: scene/2d/audio_stream_player_2d.cpp scene/audio/audio_stream_player.cpp
#: scene/gui/video_player.cpp servers/audio/effects/audio_effect_amplify.cpp
msgid "Volume dB"
@@ -18949,13 +20240,13 @@ msgid "Stream Paused"
msgstr ""
#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
-#: scene/3d/reflection_probe.cpp scene/3d/visual_instance.cpp
-#: scene/resources/material.cpp
+#: scene/3d/light.cpp scene/3d/reflection_probe.cpp
+#: scene/3d/visual_instance.cpp scene/resources/material.cpp
#, fuzzy
msgid "Max Distance"
msgstr "בחירת מרחק:"
-#: scene/2d/audio_stream_player_2d.cpp
+#: scene/2d/audio_stream_player_2d.cpp scene/3d/light.cpp
#, fuzzy
msgid "Attenuation"
msgstr "הנפשה"
@@ -19011,6 +20302,24 @@ msgstr "×™×™×¦×•× ×ž×™×–×"
msgid "Limit"
msgstr ""
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/style_box.cpp
+#, fuzzy
+msgid "Left"
+msgstr "שמ×ל"
+
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/style_box.cpp
+#, fuzzy
+msgid "Right"
+msgstr "ימין"
+
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/dynamic_font.cpp scene/resources/style_box.cpp
+#, fuzzy
+msgid "Bottom"
+msgstr "מבט תחתי"
+
#: scene/2d/camera_2d.cpp
msgid "Smoothed"
msgstr ""
@@ -19235,13 +20544,6 @@ msgstr ""
msgid "Emitting"
msgstr "הגדרות"
-#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp scene/3d/area.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
-#: scene/resources/environment.cpp
-#, fuzzy
-msgid "Amount"
-msgstr "כמות:"
-
#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp
#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
msgid "Lifetime"
@@ -19305,18 +20607,13 @@ msgstr ""
#: scene/2d/mesh_instance_2d.cpp scene/2d/multimesh_instance_2d.cpp
#: scene/2d/particles_2d.cpp scene/2d/polygon_2d.cpp scene/2d/sprite.cpp
#: scene/3d/sprite_3d.cpp scene/gui/nine_patch_rect.cpp
-#: scene/gui/texture_rect.cpp scene/resources/sky.cpp
-#: scene/resources/style_box.cpp scene/resources/visual_shader_nodes.cpp
+#: scene/gui/texture_rect.cpp scene/resources/material.cpp
+#: scene/resources/sky.cpp scene/resources/style_box.cpp
+#: scene/resources/visual_shader_nodes.cpp
#, fuzzy
msgid "Texture"
msgstr "הסרת תבנית"
-#: scene/2d/cpu_particles_2d.cpp scene/2d/mesh_instance_2d.cpp
-#: scene/2d/multimesh_instance_2d.cpp scene/2d/particles_2d.cpp
-#: scene/2d/sprite.cpp scene/resources/style_box.cpp
-msgid "Normal Map"
-msgstr ""
-
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
#, fuzzy
@@ -19339,9 +20636,8 @@ msgid "Normals"
msgstr "תבנית"
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/3d/sprite_3d.cpp scene/resources/material.cpp
-#: scene/resources/particles_material.cpp scene/resources/texture.cpp
-msgid "Flags"
+#: scene/resources/particles_material.cpp
+msgid "Align Y"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
@@ -19363,6 +20659,12 @@ msgid "Initial Velocity"
msgstr "הגדלת ×ות ר×שונה"
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Velocity Random"
+msgstr "הגדלת ×ות ר×שונה"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp servers/physics_2d_server.cpp
#: servers/physics_server.cpp
msgid "Angular Velocity"
@@ -19370,6 +20672,12 @@ msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Velocity Curve"
+msgstr "הגדלת ×ות ר×שונה"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
msgid "Orbit Velocity"
msgstr ""
@@ -19381,6 +20689,23 @@ msgstr "ליני×רי"
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Accel"
+msgstr "הצלחה!"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Accel Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Accel Curve"
+msgstr "עומק"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
msgid "Radial Accel"
msgstr ""
@@ -19390,19 +20715,55 @@ msgid "Tangential Accel"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/2d/joints_2d.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/vehicle_body.cpp
-#: scene/resources/particles_material.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/physics_joint.cpp
+#: scene/3d/vehicle_body.cpp scene/resources/particles_material.cpp
#: servers/audio/effects/audio_effect_reverb.cpp
msgid "Damping"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+msgid "Damping Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Damping Curve"
+msgstr "עומק"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp scene/3d/light.cpp
+#: scene/resources/particles_material.cpp
msgid "Angle"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+msgid "Angle Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Angle Curve"
+msgstr "עומק"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#, fuzzy
+msgid "Scale Amount"
+msgstr "כמות:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+msgid "Scale Amount Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#, fuzzy
+msgid "Scale Amount Curve"
+msgstr "שינוי גודל מהמצביע"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
#, fuzzy
msgid "Color Ramp"
msgstr "בחירת צבע"
@@ -19418,6 +20779,48 @@ msgstr ""
msgid "Hue Variation"
msgstr "מוני×:"
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Variation"
+msgstr "מוני×:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Variation Random"
+msgstr "מוני×:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Variation Curve"
+msgstr "מוני×:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Speed Random"
+msgstr "קנה מידה:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Speed Curve"
+msgstr "× × ×œ×‘×—×•×¨ ×ת התיקייה הנוכחית"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Offset Random"
+msgstr "היסט רשת:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Offset Curve"
+msgstr "עומק"
+
#: scene/2d/joints_2d.cpp
msgid "Node A and Node B must be PhysicsBody2Ds"
msgstr ""
@@ -19449,6 +20852,7 @@ msgid "Node B"
msgstr "מפרק"
#: scene/2d/joints_2d.cpp scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp
+#: scene/3d/light.cpp scene/3d/physics_joint.cpp
#: scene/resources/environment.cpp
msgid "Bias"
msgstr ""
@@ -19458,7 +20862,7 @@ msgstr ""
msgid "Disable Collision"
msgstr "כפתור ×מצעי"
-#: scene/2d/joints_2d.cpp
+#: scene/2d/joints_2d.cpp scene/3d/physics_joint.cpp
msgid "Softness"
msgstr ""
@@ -19476,7 +20880,7 @@ msgstr "הגדלת ×ות ר×שונה"
msgid "Rest Length"
msgstr ""
-#: scene/2d/joints_2d.cpp scene/3d/vehicle_body.cpp
+#: scene/2d/joints_2d.cpp scene/3d/physics_joint.cpp scene/3d/vehicle_body.cpp
msgid "Stiffness"
msgstr ""
@@ -19496,7 +20900,7 @@ msgid "Texture Scale"
msgstr ""
#: scene/2d/light_2d.cpp scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp
-#: scene/resources/environment.cpp scene/resources/sky.cpp
+#: scene/3d/light.cpp scene/resources/environment.cpp scene/resources/sky.cpp
msgid "Energy"
msgstr ""
@@ -19535,12 +20939,6 @@ msgstr "מבט ×חורי"
msgid "Gradient Length"
msgstr "בחירת מחדל"
-#: scene/2d/light_2d.cpp scene/gui/control.cpp
-#: scene/resources/navigation_mesh.cpp
-#, fuzzy
-msgid "Filter"
-msgstr "מסנני×..."
-
#: scene/2d/light_2d.cpp
#, fuzzy
msgid "Filter Smooth"
@@ -19966,11 +21364,6 @@ msgid "Applied Forces"
msgstr ""
#: scene/2d/physics_body_2d.cpp
-#, fuzzy
-msgid "Force"
-msgstr "נתיב המש×ב"
-
-#: scene/2d/physics_body_2d.cpp
msgid "Torque"
msgstr ""
@@ -19985,7 +21378,7 @@ msgstr "שקופית פיזיקלית %"
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
#, fuzzy
-msgid "Moving platform"
+msgid "Moving Platform"
msgstr "פלטפורמה"
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
@@ -19994,7 +21387,7 @@ msgstr ""
#: scene/2d/physics_body_2d.cpp scene/2d/touch_screen_button.cpp
#: scene/3d/physics_body.cpp scene/gui/texture_button.cpp
-#: scene/resources/line_shape_2d.cpp
+#: scene/resources/line_shape_2d.cpp scene/resources/material.cpp
#, fuzzy
msgid "Normal"
msgstr "תבנית"
@@ -20232,6 +21625,34 @@ msgstr ""
"VisibilityEnabler2D פועל בצורה הטובה ביותר בשימוש ×¢× ×”×ž×¤×¨×§ העליון בסצינה "
"שנערכה כהורה."
+#: scene/2d/visibility_notifier_2d.cpp scene/3d/visibility_notifier.cpp
+#, fuzzy
+msgid "Pause Animations"
+msgstr "הדבקת הנפשה"
+
+#: scene/2d/visibility_notifier_2d.cpp scene/3d/visibility_notifier.cpp
+msgid "Freeze Bodies"
+msgstr ""
+
+#: scene/2d/visibility_notifier_2d.cpp
+#, fuzzy
+msgid "Pause Particles"
+msgstr "קודקודי×"
+
+#: scene/2d/visibility_notifier_2d.cpp
+#, fuzzy
+msgid "Pause Animated Sprites"
+msgstr "הדבקת הנפשה"
+
+#: scene/2d/visibility_notifier_2d.cpp
+#, fuzzy
+msgid "Process Parent"
+msgstr "×™×™×¦×•× ×ž×™×–×"
+
+#: scene/2d/visibility_notifier_2d.cpp
+msgid "Physics Process Parent"
+msgstr ""
+
#: scene/3d/area.cpp
msgid "Reverb Bus"
msgstr ""
@@ -20327,6 +21748,7 @@ msgid "Attenuation Filter"
msgstr ""
#: scene/3d/audio_stream_player_3d.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
#: servers/audio/effects/audio_effect_filter.cpp
msgid "Cutoff Hz"
msgstr ""
@@ -20370,11 +21792,6 @@ msgid "Octree"
msgstr ""
#: scene/3d/baked_lightmap.cpp
-#, fuzzy
-msgid "User Data"
-msgstr "ממשק משתמש"
-
-#: scene/3d/baked_lightmap.cpp
msgid "Finding meshes and lights"
msgstr ""
@@ -20644,6 +22061,16 @@ msgid "Ring Axis"
msgstr "×זהרות"
#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Rotate Y"
+msgstr "הטיית מצולע"
+
+#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Disable Z"
+msgstr "מושבת"
+
+#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
msgid "Flatness"
msgstr ""
@@ -20683,16 +22110,11 @@ msgstr "ספריה דינ×מית"
msgid "Dynamic Range"
msgstr "ספריה דינ×מית"
-#: scene/3d/gi_probe.cpp
+#: scene/3d/gi_probe.cpp scene/3d/light.cpp
msgid "Normal Bias"
msgstr ""
#: scene/3d/gi_probe.cpp
-#, fuzzy
-msgid "Compress"
-msgstr "רכיבי×"
-
-#: scene/3d/gi_probe.cpp
msgid "Plotting Meshes"
msgstr "הדפסת רשתות"
@@ -20721,16 +22143,31 @@ msgstr ""
#: scene/3d/light.cpp
#, fuzzy
+msgid "Indirect Energy"
+msgstr "הזחה מימין"
+
+#: scene/3d/light.cpp
+#, fuzzy
msgid "Negative"
msgstr "GDNative"
#: scene/3d/light.cpp
#, fuzzy
+msgid "Specular"
+msgstr "מצב שינוי קנה מידה (R)"
+
+#: scene/3d/light.cpp
+#, fuzzy
msgid "Bake Mode"
msgstr "מצב גולמי"
#: scene/3d/light.cpp
#, fuzzy
+msgid "Contact"
+msgstr "בחירת צבע"
+
+#: scene/3d/light.cpp
+#, fuzzy
msgid "Reverse Cull Face"
msgstr "×יפוס עצמת שמע ×”×פיק"
@@ -20741,11 +22178,31 @@ msgstr "כיווני×"
#: scene/3d/light.cpp
#, fuzzy
+msgid "Split 1"
+msgstr "פיצול נתיב"
+
+#: scene/3d/light.cpp
+#, fuzzy
+msgid "Split 2"
+msgstr "פיצול נתיב"
+
+#: scene/3d/light.cpp
+#, fuzzy
+msgid "Split 3"
+msgstr "פיצול נתיב"
+
+#: scene/3d/light.cpp
+#, fuzzy
msgid "Blend Splits"
msgstr "זמני מיזוג:"
#: scene/3d/light.cpp
#, fuzzy
+msgid "Bias Split Scale"
+msgstr "מצב מרחב מקומי (%s)"
+
+#: scene/3d/light.cpp
+#, fuzzy
msgid "Depth Range"
msgstr "עומק"
@@ -20771,6 +22228,11 @@ msgstr "SpotLight ×¢× ×–×•×•×™×ª רחבה מ-90 מעלות ×ינו יכול ל
msgid "Spot"
msgstr ""
+#: scene/3d/light.cpp
+#, fuzzy
+msgid "Angle Attenuation"
+msgstr "הנפשה"
+
#: scene/3d/mesh_instance.cpp
msgid "Software Skinning"
msgstr ""
@@ -20908,6 +22370,63 @@ msgstr ""
#: scene/3d/physics_body.cpp
#, fuzzy
+msgid "Linear X"
+msgstr "ליני×רי"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Linear Y"
+msgstr "ליני×רי"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Linear Z"
+msgstr "ליני×רי"
+
+#: scene/3d/physics_body.cpp
+msgid "Angular X"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Angular Y"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Angular Z"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Motion X"
+msgstr "כל הבחירה"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Motion Y"
+msgstr "כל הבחירה"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Motion Z"
+msgstr "כל הבחירה"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Move Lock X"
+msgstr "הזזת מפרק"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Move Lock Y"
+msgstr "הזזת מפרק"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Move Lock Z"
+msgstr "הזזת מפרק"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
msgid "Body Offset"
msgstr "היסט רשת:"
@@ -20941,6 +22460,15 @@ msgid "Exclude Nodes"
msgstr "מחיקת שורה"
#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Params"
+msgstr "משתנה השתנה"
+
+#: scene/3d/physics_joint.cpp
+msgid "Impulse Clamp"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit"
msgstr ""
@@ -20954,6 +22482,55 @@ msgstr "×ותיות גדולות"
msgid "Lower"
msgstr "×ותיות קטנות"
+#: scene/3d/physics_joint.cpp scene/3d/vehicle_body.cpp
+#, fuzzy
+msgid "Relaxation"
+msgstr "מוני×:"
+
+#: scene/3d/physics_joint.cpp
+msgid "Motor"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Target Velocity"
+msgstr "הגדלת ×ות ר×שונה"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Max Impulse"
+msgstr "מהירות (FPS):"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit"
+msgstr "ליני×רי"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Upper Distance"
+msgstr "בחירת מרחק:"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Lower Distance"
+msgstr "בחירת מרחק:"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Restitution"
+msgstr "תי×ור"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motion"
+msgstr "הגדלת ×ות ר×שונה"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Ortho"
+msgstr "ליני×רי"
+
#: scene/3d/physics_joint.cpp
#, fuzzy
msgid "Upper Angle"
@@ -20966,6 +22543,16 @@ msgstr "×ותיות קטנות"
#: scene/3d/physics_joint.cpp
#, fuzzy
+msgid "Angular Motion"
+msgstr "הנפשה"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Angular Ortho"
+msgstr "שגי×ת זווית מקסימלית:"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
msgid "Swing Span"
msgstr "שומר סצנה"
@@ -20974,17 +22561,99 @@ msgid "Twist Span"
msgstr ""
#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit X"
+msgstr "ליני×רי"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motor X"
+msgstr "הגדלת ×ות ר×שונה"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Force Limit"
+msgstr "קרי×ות"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Spring X"
+msgstr "ליני×רי"
+
+#: scene/3d/physics_joint.cpp
+msgid "Equilibrium Point"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit X"
msgstr ""
#: scene/3d/physics_joint.cpp
+msgid "Erp"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Motor X"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Spring X"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit Y"
+msgstr "ליני×רי"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motor Y"
+msgstr "הגדלת ×ות ר×שונה"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Spring Y"
+msgstr "ליני×רי"
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit Y"
msgstr ""
#: scene/3d/physics_joint.cpp
+msgid "Angular Motor Y"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Spring Y"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit Z"
+msgstr "ליני×רי"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motor Z"
+msgstr "הגדלת ×ות ר×שונה"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Spring Z"
+msgstr "ליני×רי"
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit Z"
msgstr ""
+#: scene/3d/physics_joint.cpp
+msgid "Angular Motor Z"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Spring Z"
+msgstr ""
+
#: scene/3d/portal.cpp
msgid "The RoomManager should not be a child or grandchild of a Portal."
msgstr ""
@@ -21104,7 +22773,7 @@ msgstr ""
msgid "Use Default Simplify"
msgstr ""
-#: scene/3d/room.cpp
+#: scene/3d/room.cpp scene/3d/room_manager.cpp
msgid "Room Simplify"
msgstr ""
@@ -21143,6 +22812,13 @@ msgstr ""
msgid "Main"
msgstr ""
+#: scene/3d/room_manager.cpp scene/animation/animation_player.cpp
+#: scene/animation/animation_tree.cpp scene/animation/animation_tree_player.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+#, fuzzy
+msgid "Active"
+msgstr "כל הבחירה"
+
#: scene/3d/room_manager.cpp
msgid "Roomlist"
msgstr ""
@@ -21167,6 +22843,54 @@ msgid "Gameplay"
msgstr ""
#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Gameplay Monitor"
+msgstr "צג"
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Use Secondary PVS"
+msgstr "מצב מרחב מקומי (%s)"
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Merge Meshes"
+msgstr "סינון רשתות"
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Show Margins"
+msgstr "הצגה בחלון הקבצי×"
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Debug Sprawl"
+msgstr "ניפוי שגי×ות"
+
+#: scene/3d/room_manager.cpp
+msgid "Overlap Warning Threshold"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Preview Camera"
+msgstr "תצוגה מקדימה"
+
+#: scene/3d/room_manager.cpp
+msgid "Portal Depth Limit"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Default Portal Margin"
+msgstr "בחירת מחדל"
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Roaming Expansion Margin"
+msgstr "להרחיב הכול"
+
+#: scene/3d/room_manager.cpp
msgid ""
"RoomList path is invalid.\n"
"Please check the RoomList branch has been assigned in the RoomManager."
@@ -21292,6 +23016,20 @@ msgstr ""
msgid "Billboard"
msgstr ""
+#: scene/3d/sprite_3d.cpp scene/resources/material.cpp
+#, fuzzy
+msgid "Transparent"
+msgstr "מעברון: "
+
+#: scene/3d/sprite_3d.cpp
+#, fuzzy
+msgid "Shaded"
+msgstr "שינויי חומרי×"
+
+#: scene/3d/sprite_3d.cpp
+msgid "Double Sided"
+msgstr ""
+
#: scene/3d/sprite_3d.cpp
msgid "Alpha Cut"
msgstr ""
@@ -21367,11 +23105,6 @@ msgstr "גרסה נוכחית:"
msgid "Max Force"
msgstr "שגי××”!"
-#: scene/3d/vehicle_body.cpp
-#, fuzzy
-msgid "Relaxation"
-msgstr "מוני×:"
-
#: scene/3d/visibility_notifier.cpp
msgid "AABB"
msgstr ""
@@ -21512,7 +23245,7 @@ msgstr "זמן עמעו×/×™× (X-Fade):"
#: scene/animation/animation_blend_tree.cpp
#, fuzzy
-msgid "autorestart_"
+msgid "Auto Restart"
msgstr "התחלה מחדש ×וטומטית:"
#: scene/animation/animation_blend_tree.cpp
@@ -21598,13 +23331,6 @@ msgstr "×פשרויות מחלקה:"
msgid "Default Blend Time"
msgstr "בחירת מחדל"
-#: scene/animation/animation_player.cpp scene/animation/animation_tree.cpp
-#: scene/animation/animation_tree_player.cpp
-#: servers/audio/effects/audio_effect_delay.cpp
-#, fuzzy
-msgid "Active"
-msgstr "כל הבחירה"
-
#: scene/animation/animation_player.cpp
msgid "Method Call Mode"
msgstr ""
@@ -21726,10 +23452,6 @@ msgstr "מפרק TimeScale"
msgid "Max Iterations"
msgstr "יצירת פונקציה"
-#: scene/animation/tween.cpp scene/resources/texture.cpp
-msgid "Repeat"
-msgstr ""
-
#: scene/animation/tween.cpp
msgid "Playback Process Mode"
msgstr ""
@@ -21759,20 +23481,6 @@ msgstr "מצב שינוי קנה מידה (R)"
msgid "Alignment"
msgstr ""
-#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
-#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
-#: scene/resources/style_box.cpp
-#, fuzzy
-msgid "Horizontal"
-msgstr "יצירת תיקייה"
-
-#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
-#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
-#: scene/resources/style_box.cpp
-#, fuzzy
-msgid "Vertical"
-msgstr "קודקודי×"
-
#: scene/gui/base_button.cpp
msgid "Shortcut In Tooltip"
msgstr ""
@@ -21874,10 +23582,6 @@ msgid "HSV"
msgstr "HSV"
#: scene/gui/color_picker.cpp
-msgid "Raw"
-msgstr "Raw"
-
-#: scene/gui/color_picker.cpp
msgid "Switch between hexadecimal and code values."
msgstr "מעבר בין ×¢×¨×›×™× ×”×§×¡×“×¦×™×ž×œ×™× ×œ×¢×¨×›×™ קוד."
@@ -21941,6 +23645,31 @@ msgid "Focus"
msgstr "מיקוד נתיב"
#: scene/gui/control.cpp
+msgid "Neighbour Left"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Neighbour Top"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Neighbour Right"
+msgstr ""
+
+#: scene/gui/control.cpp
+#, fuzzy
+msgid "Neighbour Bottom"
+msgstr "מתחת"
+
+#: scene/gui/control.cpp
+msgid "Next"
+msgstr "הב×"
+
+#: scene/gui/control.cpp
+msgid "Previous"
+msgstr "הקוד×"
+
+#: scene/gui/control.cpp
msgid "Mouse"
msgstr ""
@@ -21976,7 +23705,7 @@ msgid "Dialog"
msgstr ""
#: scene/gui/dialogs.cpp
-msgid "Hide On Ok"
+msgid "Hide On OK"
msgstr ""
#: scene/gui/dialogs.cpp scene/gui/label.cpp
@@ -22074,7 +23803,7 @@ msgid "Timers"
msgstr "זמן"
#: scene/gui/item_list.cpp scene/gui/popup_menu.cpp scene/gui/tree.cpp
-msgid "Incremental Search Max Interval (msec)"
+msgid "Incremental Search Max Interval Msec"
msgstr ""
#: scene/gui/item_list.cpp scene/gui/tree.cpp
@@ -22646,6 +24375,26 @@ msgstr "×”×–×—×” משמ×ל"
msgid "Nine Patch Stretch"
msgstr "מצב ×ינטרפולציה"
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Left"
+msgstr "מצב שינוי קנה מידה (R)"
+
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Top"
+msgstr "מצב שינוי קנה מידה (R)"
+
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Right"
+msgstr "מצב שינוי קנה מידה (R)"
+
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Bottom"
+msgstr "מצב שינוי קנה מידה (R)"
+
#: scene/gui/tree.cpp
msgid "Custom Minimum Height"
msgstr ""
@@ -22683,8 +24432,9 @@ msgid "Paused"
msgstr ""
#: scene/gui/video_player.cpp
-msgid "Buffering (msec)"
-msgstr ""
+#, fuzzy
+msgid "Buffering Msec"
+msgstr "מבט ×חורי"
#: scene/gui/video_player.cpp
#, fuzzy
@@ -23033,6 +24783,22 @@ msgid "Shadow Atlas"
msgstr "×¦×ž×¦×•× ×›×œ השורות"
#: scene/main/viewport.cpp
+msgid "Quad 0"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 1"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 2"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 3"
+msgstr ""
+
+#: scene/main/viewport.cpp
#, fuzzy
msgid "Canvas Transform"
msgstr "התמרה"
@@ -23047,6 +24813,10 @@ msgid "Tooltip Delay (sec)"
msgstr ""
#: scene/register_scene_types.cpp
+msgid "Swap OK Cancel"
+msgstr ""
+
+#: scene/register_scene_types.cpp
msgid "Use hiDPI"
msgstr ""
@@ -23061,21 +24831,6 @@ msgid "Custom Font"
msgstr "גזירת מפרקי×"
#: scene/resources/audio_stream_sample.cpp
-#, fuzzy
-msgid "Loop Mode"
-msgstr "מצב שינוי קנה מידה (R)"
-
-#: scene/resources/audio_stream_sample.cpp
-#, fuzzy
-msgid "Loop Begin"
-msgstr "מצב שינוי קנה מידה (R)"
-
-#: scene/resources/audio_stream_sample.cpp
-#, fuzzy
-msgid "Loop End"
-msgstr "מצב שינוי קנה מידה (R)"
-
-#: scene/resources/audio_stream_sample.cpp
#: servers/audio/effects/audio_stream_generator.cpp servers/audio_server.cpp
#, fuzzy
msgid "Mix Rate"
@@ -23132,6 +24887,17 @@ msgid "Extra Spacing"
msgstr "×פשרויות נוספות:"
#: scene/resources/dynamic_font.cpp
+#, fuzzy
+msgid "Char"
+msgstr "×ª×•×•×™× ×ª×§×¤×™×:"
+
+#: scene/resources/dynamic_font.cpp scene/resources/world.cpp
+#: scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Space"
+msgstr "קרי×ות"
+
+#: scene/resources/dynamic_font.cpp
msgid "Font"
msgstr ""
@@ -23357,6 +25123,43 @@ msgid "Glow"
msgstr ""
#: scene/resources/environment.cpp
+#, fuzzy
+msgid "Levels"
+msgstr "מפתחי×"
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "1"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "2"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "3"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "4"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "5"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "6"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "7"
+msgstr ""
+
+#: scene/resources/environment.cpp
msgid "Bloom"
msgstr ""
@@ -23449,10 +25252,67 @@ msgid "Next Pass"
msgstr "המישור הב×"
#: scene/resources/material.cpp
+msgid "Use Shadow To Opacity"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Unshaded"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Vertex Lighting"
+msgstr "כיווני×"
+
+#: scene/resources/material.cpp
+msgid "No Depth Test"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Use Point Size"
+msgstr "מבט קדמי"
+
+#: scene/resources/material.cpp
+msgid "World Triplanar"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Fixed Size"
+msgstr "מבט קדמי"
+
+#: scene/resources/material.cpp
+msgid "Albedo Tex Force sRGB"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Do Not Receive Shadows"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Disable Ambient Light"
+msgstr "הזחה מימין"
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Ensure Correct Normals"
+msgstr "התמרה"
+
+#: scene/resources/material.cpp
#, fuzzy
msgid "Vertex Color"
msgstr "קודקודי×"
+#: scene/resources/material.cpp
+msgid "Use As Albedo"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Is sRGB"
+msgstr ""
+
#: scene/resources/material.cpp servers/visual_server.cpp
#, fuzzy
msgid "Parameters"
@@ -23489,6 +25349,11 @@ msgid "Billboard Mode"
msgstr "מצב שינוי קנה מידה (R)"
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Billboard Keep Scale"
+msgstr "מצב שינוי קנה מידה (R)"
+
+#: scene/resources/material.cpp
msgid "Grow"
msgstr ""
@@ -23498,6 +25363,10 @@ msgid "Grow Amount"
msgstr "כמות:"
#: scene/resources/material.cpp
+msgid "Use Alpha Scissor"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Alpha Scissor Threshold"
msgstr ""
@@ -23529,10 +25398,20 @@ msgid "Metallic Specular"
msgstr ""
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Metallic Texture"
+msgstr "הסרת תבנית"
+
+#: scene/resources/material.cpp
msgid "Metallic Texture Channel"
msgstr ""
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Roughness Texture"
+msgstr "הסרת תבנית"
+
+#: scene/resources/material.cpp
msgid "Roughness Texture Channel"
msgstr ""
@@ -23550,6 +25429,16 @@ msgid "Emission Operator"
msgstr ""
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Emission On UV2"
+msgstr "גרסה נוכחית:"
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Emission Texture"
+msgstr "הסרת תבנית"
+
+#: scene/resources/material.cpp
msgid "NormalMap"
msgstr ""
@@ -23563,6 +25452,11 @@ msgstr ""
#: scene/resources/material.cpp
#, fuzzy
+msgid "Rim Texture"
+msgstr "הסרת תבנית"
+
+#: scene/resources/material.cpp
+#, fuzzy
msgid "Clearcoat"
msgstr "ניקוי"
@@ -23572,15 +25466,28 @@ msgid "Clearcoat Gloss"
msgstr "נגינת סצנה בהת×מה ×ישית"
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Clearcoat Texture"
+msgstr "חברי×"
+
+#: scene/resources/material.cpp
msgid "Anisotropy"
msgstr ""
#: scene/resources/material.cpp
+msgid "Anisotropy Flowmap"
+msgstr ""
+
+#: scene/resources/material.cpp
#, fuzzy
msgid "Ambient Occlusion"
msgstr "עריכת מצולע"
#: scene/resources/material.cpp
+msgid "On UV2"
+msgstr ""
+
+#: scene/resources/material.cpp
#, fuzzy
msgid "Texture Channel"
msgstr "מצב שינוי קנה מידה (R)"
@@ -23618,6 +25525,11 @@ msgstr "מעברון: "
#: scene/resources/material.cpp
#, fuzzy
+msgid "Transmission Texture"
+msgstr "מעברון: "
+
+#: scene/resources/material.cpp
+#, fuzzy
msgid "Refraction"
msgstr "מוני×:"
@@ -23634,6 +25546,10 @@ msgid "UV1"
msgstr ""
#: scene/resources/material.cpp
+msgid "Triplanar"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Triplanar Sharpness"
msgstr ""
@@ -23842,6 +25758,16 @@ msgstr "חברי×"
msgid "Point Count"
msgstr "הוספת פורט כניסה"
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Scale Random"
+msgstr "יחס מתיחה:"
+
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Scale Curve"
+msgstr "מצב שינוי קנה מידה (R)"
+
#: scene/resources/physics_material.cpp
msgid "Rough"
msgstr ""
@@ -23903,10 +25829,6 @@ msgid "A"
msgstr ""
#: scene/resources/shader.cpp
-msgid "Code"
-msgstr ""
-
-#: scene/resources/shader.cpp
#, fuzzy
msgid "Custom Defines"
msgstr "הרצת סצנה בהת×מה ×ישית"
@@ -24001,15 +25923,6 @@ msgstr ""
#: scene/resources/texture.cpp
#, fuzzy
-msgid "Storage"
-msgstr "קובץ ×חסון:"
-
-#: scene/resources/texture.cpp
-msgid "Lossy Quality"
-msgstr ""
-
-#: scene/resources/texture.cpp
-#, fuzzy
msgid "Load Path"
msgstr "טעינת מש×ב"
@@ -24137,11 +26050,6 @@ msgstr "פונקציית השוו××” ×œ× ×—×•×§×™×ª לסוג ×–×”."
msgid "Fallback Environment"
msgstr "צפייה בסביבה"
-#: scene/resources/world.cpp scene/resources/world_2d.cpp
-#, fuzzy
-msgid "Space"
-msgstr "קרי×ות"
-
#: scene/resources/world.cpp
#, fuzzy
msgid "Scenario"
@@ -24221,10 +26129,37 @@ msgstr ""
msgid "Wet"
msgstr ""
-#: servers/audio/effects/audio_effect_compressor.cpp
-msgid "Threshold"
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "Voice"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+msgid "Delay (ms)"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_phaser.cpp
+msgid "Rate Hz"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#, fuzzy
+msgid "Depth (ms)"
+msgstr "עומק"
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+msgid "Level dB"
msgstr ""
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+#: servers/audio/effects/audio_effect_panner.cpp
+#, fuzzy
+msgid "Pan"
+msgstr "מישור:"
+
#: servers/audio/effects/audio_effect_compressor.cpp
#: servers/audio/effects/audio_effect_filter.cpp
msgid "Gain"
@@ -24247,20 +26182,6 @@ msgid "Tap 1"
msgstr ""
#: servers/audio/effects/audio_effect_delay.cpp
-msgid "Delay (ms)"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_delay.cpp
-msgid "Level dB"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_delay.cpp
-#: servers/audio/effects/audio_effect_panner.cpp
-#, fuzzy
-msgid "Pan"
-msgstr "מישור:"
-
-#: servers/audio/effects/audio_effect_delay.cpp
msgid "Tap 2"
msgstr ""
@@ -24321,10 +26242,6 @@ msgstr ""
msgid "Range Max Hz"
msgstr ""
-#: servers/audio/effects/audio_effect_phaser.cpp
-msgid "Rate Hz"
-msgstr ""
-
#: servers/audio/effects/audio_effect_pitch_shift.cpp
msgid "Oversampling"
msgstr ""
@@ -24340,7 +26257,7 @@ msgid "Predelay"
msgstr ""
#: servers/audio/effects/audio_effect_reverb.cpp
-msgid "(msec)"
+msgid "Msec"
msgstr ""
#: servers/audio/effects/audio_effect_reverb.cpp
diff --git a/editor/translations/hi.po b/editor/translations/hi.po
index d9c7456e40..517470294f 100644
--- a/editor/translations/hi.po
+++ b/editor/translations/hi.po
@@ -31,7 +31,7 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 4.9-dev\n"
-#: core/bind/core_bind.cpp
+#: core/bind/core_bind.cpp main/main.cpp
msgid "Tablet Driver"
msgstr ""
@@ -130,8 +130,8 @@ msgstr "डॉक पोजीशन"
#: core/bind/core_bind.cpp editor/editor_settings.cpp main/main.cpp
#: modules/gdscript/gdscript_editor.cpp modules/gridmap/grid_map.cpp
#: modules/mono/csharp_script.cpp modules/visual_script/visual_script_nodes.cpp
-#: scene/2d/tile_map.cpp scene/3d/camera.cpp scene/gui/control.cpp
-#: scene/gui/graph_edit.cpp scene/main/viewport.cpp
+#: scene/2d/tile_map.cpp scene/3d/camera.cpp scene/3d/light.cpp
+#: scene/gui/control.cpp scene/gui/graph_edit.cpp scene/main/viewport.cpp
#: scene/resources/dynamic_font.cpp scene/resources/navigation_mesh.cpp
#: scene/resources/primitive_meshes.cpp scene/resources/sky.cpp
#: scene/resources/style_box.cpp scene/resources/texture.cpp
@@ -233,8 +233,7 @@ msgid "Data"
msgstr ""
#: core/io/file_access_network.cpp core/register_core_types.cpp
-#: editor/editor_settings.cpp editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp main/main.cpp
+#: editor/editor_settings.cpp main/main.cpp
#: modules/gdscript/language_server/gdscript_language_server.cpp
msgid "Network"
msgstr ""
@@ -506,9 +505,10 @@ msgstr "पà¥à¤°à¥€à¤¸à¥‡à¤Ÿ"
msgid "Relative"
msgstr ""
-#: core/os/input_event.cpp scene/2d/camera_2d.cpp
-#: scene/3d/interpolated_camera.cpp scene/animation/animation_player.cpp
-#: scene/resources/environment.cpp
+#: core/os/input_event.cpp scene/2d/camera_2d.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/interpolated_camera.cpp
+#: scene/animation/animation_player.cpp scene/resources/environment.cpp
+#: scene/resources/particles_material.cpp
msgid "Speed"
msgstr ""
@@ -555,8 +555,9 @@ msgstr "समà¥à¤¦à¤¾à¤¯"
msgid "Pitch"
msgstr ""
-#: core/os/input_event.cpp scene/2d/physics_body_2d.cpp
-#: scene/3d/physics_body.cpp
+#: core/os/input_event.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/physics_body_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/3d/physics_body.cpp scene/resources/particles_material.cpp
msgid "Velocity"
msgstr ""
@@ -574,6 +575,8 @@ msgid "Controller Value"
msgstr ""
#: core/project_settings.cpp editor/editor_node.cpp main/main.cpp
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/windows/export/export.cpp
#, fuzzy
msgid "Application"
msgstr "कारà¥à¤¯"
@@ -591,13 +594,16 @@ msgstr "पà¥à¤°à¥‹à¤œà¥‡à¤•à¥à¤Ÿ सेटिंग ..."
#: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp
#: editor/editor_plugin_settings.cpp editor/editor_profiler.cpp
#: editor/project_manager.cpp editor/settings_config_dialog.cpp
-#: modules/gdnative/nativescript/nativescript.cpp scene/2d/area_2d.cpp
-#: scene/3d/area.cpp scene/main/node.cpp
+#: modules/gdnative/nativescript/nativescript.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/osx/export/export.cpp scene/2d/area_2d.cpp scene/3d/area.cpp
+#: scene/main/node.cpp
msgid "Name"
msgstr "नाम"
#: core/project_settings.cpp editor/editor_help.cpp
-#: modules/visual_script/visual_script_nodes.cpp
+#: modules/visual_script/visual_script_nodes.cpp platform/uwp/export/export.cpp
+#: platform/windows/export/export.cpp
msgid "Description"
msgstr "विवरण"
@@ -635,7 +641,7 @@ msgid "Custom User Dir Name"
msgstr ""
#: core/project_settings.cpp editor/animation_track_editor.cpp
-#: editor/editor_audio_buses.cpp servers/audio_server.cpp
+#: editor/editor_audio_buses.cpp main/main.cpp servers/audio_server.cpp
msgid "Audio"
msgstr "ऑडियो"
@@ -796,10 +802,13 @@ msgstr "फिलà¥à¤Ÿà¤°:"
msgid "Sharpen Intensity"
msgstr ""
-#: core/project_settings.cpp editor/editor_node.cpp editor/editor_settings.cpp
-#: editor/plugins/script_editor_plugin.cpp editor/project_export.cpp
-#: main/main.cpp modules/gdscript/gdscript.cpp
-#: modules/visual_script/visual_script.cpp scene/3d/room_manager.cpp
+#: core/project_settings.cpp editor/editor_export.cpp editor/editor_node.cpp
+#: editor/editor_settings.cpp editor/plugins/script_editor_plugin.cpp
+#: editor/project_export.cpp main/main.cpp modules/gdscript/gdscript.cpp
+#: modules/visual_script/visual_script.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp scene/3d/room_manager.cpp
#: scene/main/scene_tree.cpp scene/resources/shape_2d.cpp
#: servers/visual_server.cpp
msgid "Debug"
@@ -1030,6 +1039,7 @@ msgid "Subsurface Scattering"
msgstr ""
#: drivers/gles3/rasterizer_scene_gles3.cpp
+#: editor/import/resource_importer_texture.cpp
#: editor/plugins/spatial_editor_plugin.cpp modules/gltf/gltf_node.cpp
#: modules/gridmap/grid_map.cpp scene/2d/cpu_particles_2d.cpp
#: scene/2d/node_2d.cpp scene/2d/parallax_layer.cpp scene/2d/polygon_2d.cpp
@@ -1326,6 +1336,7 @@ msgid "Editors"
msgstr "संपादक"
#: editor/animation_track_editor.cpp editor/editor_settings.cpp
+#: editor/import/resource_importer_scene.cpp
#: editor/plugins/animation_player_editor_plugin.cpp editor/scene_tree_dock.cpp
#: scene/2d/animated_sprite.cpp scene/2d/cpu_particles_2d.cpp
#: scene/2d/sprite.cpp scene/3d/cpu_particles.cpp scene/3d/sprite_3d.cpp
@@ -1558,14 +1569,14 @@ msgstr "à¤à¤¨à¥€à¤®à¥‡à¤¶à¤¨ सà¥à¤Ÿà¥‡à¤ª वैलà¥à¤¯à¥‚।"
msgid "Seconds"
msgstr "सेकंड"
-#: editor/animation_track_editor.cpp
+#: editor/animation_track_editor.cpp editor/import/resource_importer_scene.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp main/main.cpp
#: scene/resources/texture.cpp
msgid "FPS"
msgstr "à¤à¤«à¤ªà¥€à¤à¤¸"
#: editor/animation_track_editor.cpp editor/editor_plugin_settings.cpp
-#: editor/editor_resource_picker.cpp
+#: editor/editor_resource_picker.cpp editor/import/resource_importer_wav.cpp
#: editor/plugins/polygon_2d_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
@@ -2535,7 +2546,9 @@ msgid "Remove Autoload"
msgstr "औटोलोड हटा दीजिये"
#: editor/editor_autoload_settings.cpp editor/editor_plugin_settings.cpp
-#: modules/gdscript/gdscript.cpp scene/2d/polygon_2d.cpp scene/3d/area.cpp
+#: modules/gdscript/gdscript.cpp platform/android/export/export_plugin.cpp
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#: scene/2d/polygon_2d.cpp scene/3d/area.cpp scene/3d/physics_joint.cpp
#: scene/3d/reflection_probe.cpp scene/main/canvas_layer.cpp
#: scene/resources/material.cpp servers/visual_server.cpp
msgid "Enable"
@@ -2703,6 +2716,58 @@ msgstr ""
#: editor/editor_export.cpp platform/android/export/export_plugin.cpp
#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Custom Template"
+msgstr "संपादक"
+
+#: editor/editor_export.cpp editor/project_export.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp
+msgid "Release"
+msgstr ""
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Binary Format"
+msgstr "à¤à¤¨à¥€à¤®à¥‡à¤¶à¤¨ परिवरà¥à¤¤à¤¨ परिणत"
+
+#: editor/editor_export.cpp
+msgid "64 Bits"
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Embed PCK"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Texture Format"
+msgstr "मोड टॉगल कीजिये"
+
+#: editor/editor_export.cpp
+msgid "BPTC"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "S3TC"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "ETC"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "ETC2"
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "No BPTC Fallbacks"
+msgstr ""
+
+#: editor/editor_export.cpp platform/android/export/export_plugin.cpp
+#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
msgid "Custom debug template not found."
msgstr "कसà¥à¤Ÿà¤® डिबग टेमà¥à¤ªà¥à¤²à¥‡à¤Ÿ नहीं मिला."
@@ -2883,6 +2948,7 @@ msgid "Make Current"
msgstr "वरà¥à¤¤à¤®à¤¾à¤¨ बनाय"
#: editor/editor_feature_profile.cpp editor/editor_node.cpp
+#: editor/import/resource_importer_scene.cpp
#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
msgid "Import"
msgstr "आयात"
@@ -3013,8 +3079,11 @@ msgstr "सफलता!"
msgid "Display Mode"
msgstr "सब दिखाइà¤"
-#: editor/editor_file_dialog.cpp main/main.cpp modules/csg/csg_shape.cpp
-#: modules/visual_script/visual_script_nodes.cpp
+#: editor/editor_file_dialog.cpp
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+#: editor/import/resource_importer_wav.cpp main/main.cpp
+#: modules/csg/csg_shape.cpp modules/visual_script/visual_script_nodes.cpp
#: modules/visual_script/visual_script_yield_nodes.cpp scene/2d/light_2d.cpp
#: scene/2d/physics_body_2d.cpp scene/2d/tile_map.cpp
#: scene/3d/baked_lightmap.cpp scene/3d/light.cpp scene/3d/physics_body.cpp
@@ -3151,7 +3220,9 @@ msgstr "असà¥à¤¸à¥‡à¤Ÿ (पà¥à¤¨:) इंपोरà¥à¤Ÿ"
msgid "Reimport Missing Imported Files"
msgstr ""
-#: editor/editor_help.cpp
+#: editor/editor_help.cpp scene/2d/camera_2d.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/resources/dynamic_font.cpp
+#: scene/resources/style_box.cpp
msgid "Top"
msgstr "सरà¥à¤µà¥‹à¤šà¥à¤š"
@@ -3204,6 +3275,7 @@ msgid "Fonts"
msgstr ""
#: editor/editor_help.cpp editor/plugins/theme_editor_plugin.cpp
+#: platform/iphone/export/export.cpp
msgid "Icons"
msgstr ""
@@ -3370,7 +3442,9 @@ msgstr ""
msgid "Pin value [Disabled because '%s' is editor-only]"
msgstr ""
-#: editor/editor_inspector.cpp editor/scene_tree_dock.cpp
+#: editor/editor_inspector.cpp
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+#: editor/scene_tree_dock.cpp
#: modules/visual_script/visual_script_func_nodes.cpp
#: modules/visual_script/visual_script_nodes.cpp
#: modules/visual_script/visual_script_property_selector.cpp
@@ -3705,6 +3779,16 @@ msgid "Quick Open Script..."
msgstr "कà¥à¤µà¤¿à¤• ओपन सà¥à¤•à¥à¤°à¤¿à¤ªà¥à¤Ÿ..."
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Save & Reload"
+msgstr "सहेजें और पà¥à¤¨à¤ƒ आरंभ करें"
+
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Save changes to '%s' before reloading?"
+msgstr "बंद करने से पहले '%' में परिवरà¥à¤¤à¤¨ सहेजें?"
+
+#: editor/editor_node.cpp
msgid "Save & Close"
msgstr "सहेजें और बंद"
@@ -3820,6 +3904,11 @@ msgid "Open Project Manager?"
msgstr "ओपन पà¥à¤°à¥‹à¤œà¥‡à¤•à¥à¤Ÿ मैनेजर?"
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Save changes to the following scene(s) before reloading?"
+msgstr "छोड़ने से पहले निमà¥à¤¨à¤²à¤¿à¤–ित दृशà¥à¤¯ (ओं) में परिवरà¥à¤¤à¤¨ सहेजें?"
+
+#: editor/editor_node.cpp
msgid "Save & Quit"
msgstr "सहेजें और छोड़ो"
@@ -4084,8 +4173,8 @@ msgstr "जब बदला अदà¥à¤¯à¤¤à¤¨"
#: editor/editor_node.cpp
#, fuzzy
-msgid "Translate Properties"
-msgstr "विशेषता"
+msgid "Localize Settings"
+msgstr "à¤à¤¡à¥€à¤Ÿà¤° सेटिनà¥à¤—स..."
#: editor/editor_node.cpp
#, fuzzy
@@ -4102,8 +4191,8 @@ msgstr "निरीकà¥à¤·à¤•"
#: editor/editor_node.cpp
#, fuzzy
-msgid "Capitalize Properties"
-msgstr "विशेषता"
+msgid "Default Property Name Style"
+msgstr "चूक"
#: editor/editor_node.cpp
msgid "Default Float Step"
@@ -4706,7 +4795,9 @@ msgstr "सà¥à¤¥à¤¾à¤ªà¤¿à¤¤ पà¥à¤²à¤—इनà¥à¤¸:"
msgid "Update"
msgstr "अदà¥à¤¯à¤¤à¤¨"
-#: editor/editor_plugin_settings.cpp
+#: editor/editor_plugin_settings.cpp platform/android/export/export_plugin.cpp
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp
#, fuzzy
msgid "Version"
msgstr "संसà¥à¤•रण:"
@@ -5711,7 +5802,7 @@ msgstr ""
msgid "Rect Custom Position"
msgstr "सदसà¥à¤¯à¤¤à¤¾ बनाà¤à¤‚"
-#: editor/editor_settings.cpp
+#: editor/editor_settings.cpp platform/android/export/export_plugin.cpp
msgid "Screen"
msgstr ""
@@ -5736,6 +5827,19 @@ msgid "Editor SSL Certificates"
msgstr ""
#: editor/editor_settings.cpp
+msgid "HTTP Proxy"
+msgstr ""
+
+#: editor/editor_settings.cpp
+msgid "Host"
+msgstr ""
+
+#: editor/editor_settings.cpp editor/fileserver/editor_file_server.cpp
+#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp
+msgid "Port"
+msgstr ""
+
+#: editor/editor_settings.cpp
msgid "Project Manager"
msgstr "पà¥à¤°à¥‹à¤œà¥‡à¤•à¥à¤Ÿ मैनेजर"
@@ -5778,7 +5882,8 @@ msgstr ""
msgid "String Color"
msgstr "फ़ाइल सà¥à¤Ÿà¥‹à¤° कर रहा है:"
-#: editor/editor_settings.cpp
+#: editor/editor_settings.cpp platform/javascript/export/export.cpp
+#: platform/uwp/export/export.cpp
#, fuzzy
msgid "Background Color"
msgstr "गलत फॉणà¥à¤Ÿ का आकार |"
@@ -5952,22 +6057,6 @@ msgid "Starting the download..."
msgstr ""
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "HTTP Proxy"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Host"
-msgstr ""
-
-#: editor/export_template_manager.cpp editor/fileserver/editor_file_server.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp main/main.cpp
-#: modules/mono/mono_gd/gd_mono.cpp
-msgid "Port"
-msgstr ""
-
-#: editor/export_template_manager.cpp
msgid "Error requesting URL:"
msgstr "लोड होने मे तà¥à¤°à¥à¤Ÿà¤¿:"
@@ -6229,6 +6318,7 @@ msgstr ""
#: editor/fileserver/editor_file_server.cpp
#: editor/plugins/version_control_editor_plugin.cpp
+#: platform/uwp/export/export.cpp platform/windows/export/export.cpp
msgid "Password"
msgstr ""
@@ -6606,6 +6696,115 @@ msgstr ""
msgid "Use Ambient"
msgstr ""
+#: editor/import/resource_importer_bitmask.cpp
+#, fuzzy
+msgid "Create From"
+msgstr "फ़ोलà¥à¤¡à¤° बनाइये"
+
+#: editor/import/resource_importer_bitmask.cpp
+#: servers/audio/effects/audio_effect_compressor.cpp
+msgid "Threshold"
+msgstr ""
+
+#: editor/import/resource_importer_csv_translation.cpp
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_scene.cpp
+#: editor/import/resource_importer_texture.cpp
+#: editor/import/resource_importer_wav.cpp scene/3d/gi_probe.cpp
+#, fuzzy
+msgid "Compress"
+msgstr "अवयव"
+
+#: editor/import/resource_importer_csv_translation.cpp
+msgid "Delimiter"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+msgid "No BPTC If RGB"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/sprite_3d.cpp
+#: scene/resources/material.cpp scene/resources/particles_material.cpp
+#: scene/resources/texture.cpp
+msgid "Flags"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/animation/tween.cpp
+#: scene/resources/texture.cpp
+msgid "Repeat"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/2d/light_2d.cpp
+#: scene/gui/control.cpp scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Filter"
+msgstr "फिलà¥à¤Ÿà¤°:"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Mipmaps"
+msgstr "संकेत"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+msgid "Anisotropic"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+msgid "sRGB"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+msgid "Slices"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
+#: scene/resources/style_box.cpp
+#, fuzzy
+msgid "Horizontal"
+msgstr "कà¥à¤·à¥ˆà¤¤à¤¿à¤œ गाइड बनाà¤à¤‚"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
+#: scene/resources/style_box.cpp
+#, fuzzy
+msgid "Vertical"
+msgstr "विशेषता"
+
+#: editor/import/resource_importer_obj.cpp
+#, fuzzy
+msgid "Generate Tangents"
+msgstr "अंक बनाà¤à¤‚।"
+
+#: editor/import/resource_importer_obj.cpp
+#, fuzzy
+msgid "Scale Mesh"
+msgstr "à¤à¤¨à¤¿à¤®à¥‡à¤Ÿà¥‡à¤¡ सà¥à¤•ेल कà¥à¤‚जी"
+
+#: editor/import/resource_importer_obj.cpp
+msgid "Offset Mesh"
+msgstr ""
+
+#: editor/import/resource_importer_obj.cpp
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Octahedral Compression"
+msgstr "सदसà¥à¤¯à¤¤à¤¾ बनाà¤à¤‚"
+
+#: editor/import/resource_importer_obj.cpp
+#, fuzzy
+msgid "Optimize Mesh Flags"
+msgstr "आकार: "
+
#: editor/import/resource_importer_scene.cpp
msgid "Import as Single Scene"
msgstr "अकेले सीन कि तरह इंपोरà¥à¤Ÿ किजिये"
@@ -6646,6 +6845,150 @@ msgstr "अनेक सीन के रà¥à¤ª इंपोरà¥à¤Ÿ किजà
msgid "Import as Multiple Scenes+Materials"
msgstr "अनेक सीन+मटेरियल के रà¥à¤ª इंपोरà¥à¤Ÿ किजिये"
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Nodes"
+msgstr "नोड"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Root Type"
+msgstr "मेंबर टाइप"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Root Name"
+msgstr "नोड का नाम:"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Root Scale"
+msgstr "सब दिखाइà¤"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Custom Script"
+msgstr "पà¥à¤°à¤¤à¤¿à¤²à¤¿à¤ªà¤¿"
+
+#: editor/import/resource_importer_scene.cpp scene/resources/texture.cpp
+#, fuzzy
+msgid "Storage"
+msgstr "फ़ाइल सà¥à¤Ÿà¥‹à¤° कर रहा है:"
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Use Legacy Names"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+msgid "Materials"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Location"
+msgstr "कारà¥à¤¯"
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Keep On Reimport"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+msgid "Meshes"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Ensure Tangents"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Light Baking"
+msgstr "निरà¥à¤¦à¥‡à¤¶à¥‹à¤‚"
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Lightmap Texel Size"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+msgid "Skins"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Use Named Skins"
+msgstr "संकेत"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "External Files"
+msgstr "फ़ाइल खोलिये"
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Store In Subdir"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Filter Script"
+msgstr "फिलà¥à¤Ÿà¤°:"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Keep Custom Tracks"
+msgstr "à¤à¤¨à¥€à¤®à¥‡à¤¶à¤¨ परिवरà¥à¤¤à¤¨ परिणत"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Optimizer"
+msgstr "ऑपà¥à¤Ÿà¤¿à¤®à¤¾à¤‡à¤œà¤¼"
+
+#: editor/import/resource_importer_scene.cpp main/main.cpp
+#: modules/mono/mono_gd/gd_mono.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp scene/2d/camera_2d.cpp scene/2d/light_2d.cpp
+#: scene/2d/navigation_polygon.cpp scene/2d/ray_cast_2d.cpp scene/2d/sprite.cpp
+#: scene/2d/y_sort.cpp scene/3d/audio_stream_player_3d.cpp
+#: scene/3d/baked_lightmap.cpp scene/3d/interpolated_camera.cpp
+#: scene/3d/light.cpp scene/3d/navigation_mesh_instance.cpp
+#: scene/3d/physics_joint.cpp scene/3d/ray_cast.cpp scene/3d/sprite_3d.cpp
+#: scene/gui/graph_edit.cpp scene/gui/rich_text_label.cpp
+#: scene/resources/curve.cpp scene/resources/environment.cpp
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Enabled"
+msgstr "सकà¥à¤°à¤¿à¤¯ करे"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Max Linear Error"
+msgstr "अधिकतम. रैखिक तà¥à¤°à¥à¤Ÿà¤¿:"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Max Angular Error"
+msgstr "अधिकतम. कोणीय तà¥à¤°à¥à¤Ÿà¤¿:"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Max Angle"
+msgstr "मूलà¥à¤¯ :"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Remove Unused Tracks"
+msgstr "अनीम टà¥à¤°à¥ˆà¤• निकालें"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Clips"
+msgstr "अनीम कà¥à¤²à¤¿à¤ªà¥à¤¸:"
+
+#: editor/import/resource_importer_scene.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/particles_2d.cpp scene/3d/area.cpp scene/3d/cpu_particles.cpp
+#: scene/3d/particles.cpp scene/resources/environment.cpp
+msgid "Amount"
+msgstr ""
+
#: editor/import/resource_importer_scene.cpp
#: editor/plugins/mesh_library_editor_plugin.cpp
msgid "Import Scene"
@@ -6687,12 +7030,144 @@ msgstr ""
msgid "Saving..."
msgstr ""
+#: editor/import/resource_importer_texture.cpp scene/resources/texture.cpp
+msgid "Lossy Quality"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "HDR Mode"
+msgstr "मोड टॉगल कीजिये"
+
+#: editor/import/resource_importer_texture.cpp
+msgid "BPTC LDR"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/mesh_instance_2d.cpp scene/2d/multimesh_instance_2d.cpp
+#: scene/2d/particles_2d.cpp scene/2d/sprite.cpp scene/resources/style_box.cpp
+msgid "Normal Map"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Process"
+msgstr "मोड टॉगल कीजिये"
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Fix Alpha Border"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Premult Alpha"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Hdr As Srgb"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Invert Color"
+msgstr "आइटम निकालें"
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Normal Map Invert Y"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
+#: scene/audio/audio_stream_player.cpp scene/gui/video_player.cpp
+msgid "Stream"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Size Limit"
+msgstr "आकार: "
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Detect 3D"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "SVG"
+msgstr ""
+
#: editor/import/resource_importer_texture.cpp
msgid ""
"Warning, no suitable PC VRAM compression enabled in Project Settings. This "
"texture will not display correctly on PC."
msgstr ""
+#: editor/import/resource_importer_texture_atlas.cpp
+#, fuzzy
+msgid "Atlas File"
+msgstr "सभी फ़ाइल (*)"
+
+#: editor/import/resource_importer_texture_atlas.cpp
+#, fuzzy
+msgid "Import Mode"
+msgstr "इंपोरà¥à¤Ÿ डॉक"
+
+#: editor/import/resource_importer_texture_atlas.cpp
+msgid "Crop To Region"
+msgstr ""
+
+#: editor/import/resource_importer_texture_atlas.cpp
+msgid "Trim Alpha Border From Region"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp scene/2d/physics_body_2d.cpp
+msgid "Force"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+msgid "8 Bit"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp main/main.cpp
+#: modules/mono/editor/csharp_project.cpp modules/mono/mono_gd/gd_mono.cpp
+msgid "Mono"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+#, fuzzy
+msgid "Max Rate"
+msgstr "मूलà¥à¤¯ :"
+
+#: editor/import/resource_importer_wav.cpp
+#, fuzzy
+msgid "Max Rate Hz"
+msgstr "मूलà¥à¤¯ :"
+
+#: editor/import/resource_importer_wav.cpp
+msgid "Trim"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+#, fuzzy
+msgid "Normalize"
+msgstr "मिटाना"
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+#, fuzzy
+msgid "Loop Mode"
+msgstr "सदसà¥à¤¯à¤¤à¤¾ बनाà¤à¤‚"
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+#, fuzzy
+msgid "Loop Begin"
+msgstr "सदसà¥à¤¯à¤¤à¤¾ बनाà¤à¤‚"
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+#, fuzzy
+msgid "Loop End"
+msgstr "सदसà¥à¤¯à¤¤à¤¾ बनाà¤à¤‚"
+
#: editor/import_defaults_editor.cpp
#, fuzzy
msgid "Select Importer"
@@ -6765,6 +7240,28 @@ msgstr ""
#: editor/inspector_dock.cpp
#, fuzzy
+msgid "Property Name Style"
+msgstr "गà¥à¤£(Property) टà¥à¤°à¥ˆà¤•"
+
+#: editor/inspector_dock.cpp scene/gui/color_picker.cpp
+msgid "Raw"
+msgstr ""
+
+#: editor/inspector_dock.cpp
+#, fuzzy
+msgid "Capitalized"
+msgstr "विशेषता"
+
+#: editor/inspector_dock.cpp
+msgid "Localized"
+msgstr ""
+
+#: editor/inspector_dock.cpp
+msgid "Localization not available for current language."
+msgstr ""
+
+#: editor/inspector_dock.cpp
+#, fuzzy
msgid "Copy Properties"
msgstr "विशेषता"
@@ -7798,18 +8295,24 @@ msgid "License (Z-A)"
msgstr "लाइसेंस (जेड-à¤)"
#: editor/plugins/asset_library_editor_plugin.cpp
+msgctxt "Pagination"
msgid "First"
msgstr ""
-#: editor/plugins/asset_library_editor_plugin.cpp scene/gui/control.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgctxt "Pagination"
msgid "Previous"
-msgstr ""
+msgstr "पिछला टैब"
-#: editor/plugins/asset_library_editor_plugin.cpp scene/gui/control.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgctxt "Pagination"
msgid "Next"
-msgstr ""
+msgstr "अगला टैब"
#: editor/plugins/asset_library_editor_plugin.cpp
+msgctxt "Pagination"
msgid "Last"
msgstr ""
@@ -8045,19 +8548,19 @@ msgid ""
"margins."
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Top Left"
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Top Right"
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Bottom Right"
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Bottom Left"
msgstr ""
@@ -8768,6 +9271,19 @@ msgstr ""
msgid "Gradient Edited"
msgstr ""
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+msgid "Swap GradientTexture2D Fill Points"
+msgstr ""
+
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+msgid "Swap Gradient Fill Points"
+msgstr ""
+
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+#, fuzzy
+msgid "Toggle Grid Snap"
+msgstr "मोड टॉगल कीजिये"
+
#: editor/plugins/item_list_editor_plugin.cpp
msgid "Item %d"
msgstr ""
@@ -8987,9 +9503,10 @@ msgid ""
"%s"
msgstr ""
-#: editor/plugins/mesh_library_editor_plugin.cpp modules/gridmap/grid_map.cpp
-msgid "Mesh Library"
-msgstr ""
+#: editor/plugins/mesh_library_editor_plugin.cpp
+#, fuzzy
+msgid "MeshLibrary"
+msgstr "मेष लाइबà¥à¤°à¥‡à¤°à¥€..."
#: editor/plugins/mesh_library_editor_plugin.cpp
msgid "Add Item"
@@ -9986,8 +10503,8 @@ msgstr ""
msgid "Source"
msgstr "संसाधन"
-#: editor/plugins/script_text_editor.cpp scene/3d/interpolated_camera.cpp
-#: scene/animation/skeleton_ik.cpp
+#: editor/plugins/script_text_editor.cpp platform/uwp/export/export.cpp
+#: scene/3d/interpolated_camera.cpp scene/animation/skeleton_ik.cpp
msgid "Target"
msgstr ""
@@ -10972,7 +11489,9 @@ msgstr ""
#: editor/plugins/sprite_frames_editor_plugin.cpp
#: modules/gltf/gltf_animation.cpp modules/minimp3/audio_stream_mp3.cpp
-#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp scene/2d/path_2d.cpp
+#: modules/minimp3/resource_importer_mp3.cpp
+#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp
+#: modules/stb_vorbis/resource_importer_ogg_vorbis.cpp scene/2d/path_2d.cpp
#: scene/3d/path.cpp scene/resources/animation.cpp scene/resources/material.cpp
msgid "Loop"
msgstr ""
@@ -11898,8 +12417,9 @@ msgstr ""
msgid "Priority"
msgstr ""
-#: editor/plugins/tile_set_editor_plugin.cpp main/main.cpp scene/gui/button.cpp
-#: scene/gui/item_list.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp main/main.cpp
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#: scene/gui/button.cpp scene/gui/item_list.cpp
msgid "Icon"
msgstr ""
@@ -13241,10 +13761,6 @@ msgid ""
msgstr ""
#: editor/project_export.cpp
-msgid "Release"
-msgstr ""
-
-#: editor/project_export.cpp
msgid "Exporting All"
msgstr ""
@@ -15050,6 +15566,7 @@ msgid "Change AudioStreamPlayer3D Emission Angle"
msgstr ""
#: editor/spatial_editor_gizmos.cpp modules/gltf/gltf_node.cpp
+#: platform/osx/export/export.cpp
msgid "Camera"
msgstr ""
@@ -15320,7 +15837,8 @@ msgstr ""
msgid "Use Nvidia Rect Flicker Workaround"
msgstr ""
-#: main/main.cpp platform/uwp/os_uwp.cpp
+#: main/main.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp platform/uwp/os_uwp.cpp
#, fuzzy
msgid "Display"
msgstr "सब दिखाइà¤"
@@ -15376,19 +15894,6 @@ msgstr ""
msgid "Allowed"
msgstr ""
-#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp scene/2d/camera_2d.cpp
-#: scene/2d/light_2d.cpp scene/2d/navigation_polygon.cpp
-#: scene/2d/ray_cast_2d.cpp scene/2d/sprite.cpp scene/2d/y_sort.cpp
-#: scene/3d/audio_stream_player_3d.cpp scene/3d/baked_lightmap.cpp
-#: scene/3d/interpolated_camera.cpp scene/3d/light.cpp
-#: scene/3d/navigation_mesh_instance.cpp scene/3d/ray_cast.cpp
-#: scene/3d/sprite_3d.cpp scene/gui/graph_edit.cpp
-#: scene/gui/rich_text_label.cpp scene/resources/curve.cpp
-#: scene/resources/environment.cpp
-#, fuzzy
-msgid "Enabled"
-msgstr "सकà¥à¤°à¤¿à¤¯ करे"
-
#: main/main.cpp
msgid "Intended Usage"
msgstr ""
@@ -15419,13 +15924,14 @@ msgstr ""
msgid "Handheld"
msgstr ""
-#: main/main.cpp
+#: main/main.cpp platform/javascript/export/export.cpp
+#: platform/uwp/export/export.cpp
#, fuzzy
msgid "Orientation"
msgstr "ऑनलाइन डॉकà¥à¤¸"
#: main/main.cpp scene/gui/scroll_container.cpp scene/gui/text_edit.cpp
-#: scene/main/scene_tree.cpp
+#: scene/main/scene_tree.cpp scene/register_scene_types.cpp
#, fuzzy
msgid "Common"
msgstr "समà¥à¤¦à¤¾à¤¯"
@@ -15467,7 +15973,7 @@ msgstr ""
#: main/main.cpp
#, fuzzy
-msgid "Frame Delay (msec)"
+msgid "Frame Delay Msec"
msgstr "फà¥à¤°à¥‡à¤® समय (सेकंड)"
#: main/main.cpp
@@ -15587,11 +16093,6 @@ msgstr ""
msgid "Tooltip Position Offset"
msgstr ""
-#: main/main.cpp modules/mono/editor/csharp_project.cpp
-#: modules/mono/mono_gd/gd_mono.cpp
-msgid "Mono"
-msgstr ""
-
#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp
msgid "Debugger Agent"
msgstr ""
@@ -16143,7 +16644,7 @@ msgstr ""
msgid "Intensity"
msgstr ""
-#: modules/gltf/gltf_light.cpp scene/2d/light_2d.cpp
+#: modules/gltf/gltf_light.cpp scene/2d/light_2d.cpp scene/3d/light.cpp
#, fuzzy
msgid "Range"
msgstr "बदली"
@@ -16281,11 +16782,6 @@ msgstr ""
msgid "Use Named Skin Binds"
msgstr ""
-#: modules/gltf/gltf_state.cpp scene/3d/physics_joint.cpp
-#, fuzzy
-msgid "Nodes"
-msgstr "नोड"
-
#: modules/gltf/gltf_state.cpp
msgid "Buffer Views"
msgstr ""
@@ -16295,14 +16791,6 @@ msgid "Accessors"
msgstr ""
#: modules/gltf/gltf_state.cpp
-msgid "Meshes"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp
-msgid "Materials"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp
#, fuzzy
msgid "Scene Name"
msgstr "दृशà¥à¤¯ पथ:"
@@ -16319,15 +16807,11 @@ msgstr "à¤à¤• नया बनाà¤à¤‚"
msgid "Textures"
msgstr "सà¥à¤µà¤¿à¤§à¤¾à¤à¤‚"
-#: modules/gltf/gltf_state.cpp
+#: modules/gltf/gltf_state.cpp platform/uwp/export/export.cpp
msgid "Images"
msgstr ""
#: modules/gltf/gltf_state.cpp
-msgid "Skins"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp
msgid "Cameras"
msgstr ""
@@ -16359,11 +16843,15 @@ msgid "Src Image"
msgstr ""
#: modules/gridmap/grid_map.cpp
+msgid "Mesh Library"
+msgstr ""
+
+#: modules/gridmap/grid_map.cpp
#, fuzzy
msgid "Physics Material"
msgstr "फिजिकà¥à¤¸ फà¥à¤°à¥‡à¤® %"
-#: modules/gridmap/grid_map.cpp
+#: modules/gridmap/grid_map.cpp scene/3d/visual_instance.cpp
msgid "Use In Baked Light"
msgstr ""
@@ -16394,6 +16882,7 @@ msgstr "को हटा दें"
#: modules/gridmap/grid_map.cpp scene/2d/collision_object_2d.cpp
#: scene/2d/tile_map.cpp scene/3d/collision_object.cpp scene/3d/soft_body.cpp
+#: scene/resources/material.cpp
msgid "Mask"
msgstr ""
@@ -16581,7 +17070,9 @@ msgid "Ultra Quality Ray Count"
msgstr ""
#: modules/minimp3/audio_stream_mp3.cpp
+#: modules/minimp3/resource_importer_mp3.cpp
#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp
+#: modules/stb_vorbis/resource_importer_ogg_vorbis.cpp
#, fuzzy
msgid "Loop Offset"
msgstr "सदसà¥à¤¯à¤¤à¤¾ बनाà¤à¤‚"
@@ -17669,6 +18160,183 @@ msgid "The package must have at least one '.' separator."
msgstr ""
#: platform/android/export/export_plugin.cpp
+msgid "Use Custom Build"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Export Format"
+msgstr "à¤à¤¨à¥€à¤®à¥‡à¤¶à¤¨ परिवरà¥à¤¤à¤¨ परिणत"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Keystore"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Debug User"
+msgstr "डीबग करें"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+msgid "Debug Password"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Release User"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Release Password"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "One Click Deploy"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Clear Previous Install"
+msgstr "पिछला टैब"
+
+#: platform/android/export/export_plugin.cpp scene/resources/shader.cpp
+msgid "Code"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Min SDK"
+msgstr "आकार: "
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Target SDK"
+msgstr "नोड हटाà¤à¤‚"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Package"
+msgstr "पैक कर रहा है"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Unique Name"
+msgstr "नोड का नाम:"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Signed"
+msgstr "सिगà¥à¤¨à¤²"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Classify As Game"
+msgstr "कà¥à¤²à¤¾à¤¸"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Retain Data On Uninstall"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Exclude From Recents"
+msgstr "को हटा दें"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Graphics"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "OpenGL Debug"
+msgstr "खोलो इसे"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "XR Features"
+msgstr "सà¥à¤µà¤¿à¤§à¤¾à¤à¤‚"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "XR Mode"
+msgstr "सदसà¥à¤¯à¤¤à¤¾ बनाà¤à¤‚"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Hand Tracking"
+msgstr "पैक कर रहा है"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Hand Tracking Frequency"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Passthrough"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Immersive Mode"
+msgstr "मोड टॉगल कीजिये"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Support Small"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Support Normal"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Support Large"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Support Xlarge"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "User Data Backup"
+msgstr "संपादक डेटा फ़ोलà¥à¤¡à¤° खोलें"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Allow"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Command Line"
+msgstr "समà¥à¤¦à¤¾à¤¯"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Extra Args"
+msgstr "अतिरिकà¥à¤¤ Call Arguments:"
+
+#: platform/android/export/export_plugin.cpp
+msgid "APK Expansion"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Salt"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Public Key"
+msgstr "डà¥à¤ªà¥à¤²à¥€à¤•ेट कà¥à¤‚जी (ओं)"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Permissions"
+msgstr "संसà¥à¤•रण:"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Custom Permissions"
+msgstr "कसà¥à¤Ÿà¤® दृशà¥à¤¯ बजाना"
+
+#: platform/android/export/export_plugin.cpp
msgid "Select device from the list"
msgstr ""
@@ -17968,6 +18636,177 @@ msgid "The character '%s' is not allowed in Identifier."
msgstr ""
#: platform/iphone/export/export.cpp
+msgid "App Store Team ID"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Provisioning Profile UUID Debug"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Code Sign Identity Debug"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Export Method Debug"
+msgstr "निरà¥à¤¯à¤¾à¤¤ मेष पà¥à¤¸à¥à¤¤à¤•ालय"
+
+#: platform/iphone/export/export.cpp
+msgid "Provisioning Profile UUID Release"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Code Sign Identity Release"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Export Method Release"
+msgstr "निरà¥à¤¯à¤¾à¤¤ मेष पà¥à¤¸à¥à¤¤à¤•ालय"
+
+#: platform/iphone/export/export.cpp
+msgid "Targeted Device Family"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Info"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Identifier"
+msgstr "गलत फॉणà¥à¤Ÿ का आकार |"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Signature"
+msgstr "सिगà¥à¤¨à¤²"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Short Version"
+msgstr "संसà¥à¤•रण:"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Copyright"
+msgstr "कॉपी"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Capabilities"
+msgstr "विशेषता"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Access Wi-Fi"
+msgstr "सफलता!"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Push Notifications"
+msgstr "कोनà¥à¤¸à¥à¤Ÿà¤¨à¥à¤Ÿ"
+
+#: platform/iphone/export/export.cpp scene/3d/baked_lightmap.cpp
+#, fuzzy
+msgid "User Data"
+msgstr "संपादक डेटा फ़ोलà¥à¤¡à¤° खोलें"
+
+#: platform/iphone/export/export.cpp
+msgid "Accessible From Files App"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Accessible From Itunes Sharing"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Privacy"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Camera Usage Description"
+msgstr "विवरण"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Microphone Usage Description"
+msgstr "पà¥à¤°à¥‹à¤ªà¤°à¥à¤Ÿà¥€ का विवरण"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Photolibrary Usage Description"
+msgstr "पà¥à¤°à¥‹à¤ªà¤°à¥à¤Ÿà¥€ का विवरण"
+
+#: platform/iphone/export/export.cpp
+msgid "iPhone 120 X 120"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPhone 180 X 180"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 76 X 76"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 152 X 152"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 167 X 167"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "App Store 1024 X 1024"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Spotlight 40 X 40"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Spotlight 80 X 80"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Storyboard"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Use Launch Screen Storyboard"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Image Scale Mode"
+msgstr "सà¥à¤ªà¥à¤²à¤¿à¤Ÿ मोड टॉगल कीजिये"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Custom Image @2x"
+msgstr "पà¥à¤°à¤¤à¤¿à¤²à¤¿à¤ªà¤¿"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Custom Image @3x"
+msgstr "पà¥à¤°à¤¤à¤¿à¤²à¤¿à¤ªà¤¿"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Use Custom BG Color"
+msgstr "पà¥à¤°à¤¤à¤¿à¤²à¤¿à¤ªà¤¿"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Custom BG Color"
+msgstr "पà¥à¤°à¤¤à¤¿à¤²à¤¿à¤ªà¤¿"
+
+#: platform/iphone/export/export.cpp
msgid "App Store Team ID not specified - cannot configure the project."
msgstr ""
@@ -18007,6 +18846,80 @@ msgstr "फ़ोलà¥à¤¡à¤° नही बना सकते."
#: platform/javascript/export/export.cpp
#, fuzzy
+msgid "Variant"
+msgstr "संसà¥à¤•रण:"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Export Type"
+msgstr "â€à¤à¤•à¥à¤¸à¤ªà¥‹à¤°à¥à¤Ÿ"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "VRAM Texture Compression"
+msgstr "सदसà¥à¤¯à¤¤à¤¾ बनाà¤à¤‚"
+
+#: platform/javascript/export/export.cpp
+msgid "For Desktop"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "For Mobile"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Html"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Export Icon"
+msgstr "सभी बढाय"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Custom Html Shell"
+msgstr "पà¥à¤°à¤¤à¤¿à¤²à¤¿à¤ªà¤¿"
+
+#: platform/javascript/export/export.cpp
+msgid "Head Include"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Canvas Resize Policy"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Focus Canvas On Start"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Experimental Virtual Keyboard"
+msgstr "सà¥à¤•à¥à¤°à¥€à¤¨à¤¿à¤‚ग सिगà¥à¤¨à¤²"
+
+#: platform/javascript/export/export.cpp
+msgid "Progressive Web App"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Offline Page"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 144 X 144"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 180 X 180"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 512 X 512"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
msgid "Could not read HTML shell:"
msgstr "फ़ोलà¥à¤¡à¤° नही बना सकते."
@@ -18119,6 +19032,195 @@ msgid "Unknown object type."
msgstr ""
#: platform/osx/export/export.cpp
+msgid "App Category"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "High Res"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Location Usage Description"
+msgstr "विवरण"
+
+#: platform/osx/export/export.cpp
+msgid "Address Book Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Calendar Usage Description"
+msgstr "विवरण"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Photos Library Usage Description"
+msgstr "पà¥à¤°à¥‹à¤ªà¤°à¥à¤Ÿà¥€ का विवरण"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Desktop Folder Usage Description"
+msgstr "मेथड विवरण"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Documents Folder Usage Description"
+msgstr "मेथड विवरण"
+
+#: platform/osx/export/export.cpp
+msgid "Downloads Folder Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Network Volumes Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Removable Volumes Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#, fuzzy
+msgid "Codesign"
+msgstr "नोड"
+
+#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
+#: platform/windows/export/export.cpp
+msgid "Identity"
+msgstr ""
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#, fuzzy
+msgid "Timestamp"
+msgstr "समय"
+
+#: platform/osx/export/export.cpp
+msgid "Hardened Runtime"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Replace Existing Signature"
+msgstr "सबको बदली करें"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Entitlements"
+msgstr "सà¥à¤•à¥à¤°à¤¿à¤ªà¥à¤Ÿ बढ़ाà¤à¤"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Custom File"
+msgstr "पà¥à¤°à¤¤à¤¿à¤²à¤¿à¤ªà¤¿"
+
+#: platform/osx/export/export.cpp
+msgid "Allow JIT Code Execution"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Allow Unsigned Executable Memory"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Allow Dyld Environment Variables"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Disable Library Validation"
+msgstr "बंद कर दिया गया है"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Audio Input"
+msgstr "ऑडियो बस का नाम बदलें"
+
+#: platform/osx/export/export.cpp
+msgid "Address Book"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Calendars"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Photos Library"
+msgstr "à¤à¤•à¥à¤¸à¤ªà¥‹à¤°à¥à¤Ÿ लाइबà¥à¤°à¥‡à¤°à¥€"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Apple Events"
+msgstr "रीसेट आकार"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Debugging"
+msgstr "डीबग करें"
+
+#: platform/osx/export/export.cpp
+msgid "App Sandbox"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Network Server"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Network Client"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Device Usb"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Device Bluetooth"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Files Downloads"
+msgstr "डाउनलोड"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Files Pictures"
+msgstr "सà¥à¤µà¤¿à¤§à¤¾à¤à¤‚"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Files Music"
+msgstr "फ़ाइल:"
+
+#: platform/osx/export/export.cpp
+msgid "Files Movies"
+msgstr ""
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#, fuzzy
+msgid "Custom Options"
+msgstr "बस विकलà¥à¤ª"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Notarization"
+msgstr "सदसà¥à¤¯à¤¤à¤¾ बनाà¤à¤‚"
+
+#: platform/osx/export/export.cpp
+msgid "Apple ID Name"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Apple ID Password"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Apple Team ID"
+msgstr ""
+
+#: platform/osx/export/export.cpp
msgid ""
"Note: The notarization process generally takes less than an hour. When the "
"process is completed, you'll receive an email."
@@ -18311,6 +19413,132 @@ msgid "Force Builtin Codesign"
msgstr ""
#: platform/uwp/export/export.cpp
+msgid "Architecture"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Display Name"
+msgstr "सब दिखाइà¤"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Short Name"
+msgstr "शबà¥à¤¦ बदलें मूलà¥à¤¯"
+
+#: platform/uwp/export/export.cpp
+msgid "Publisher"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Publisher Display Name"
+msgstr "गलत फॉणà¥à¤Ÿ का आकार |"
+
+#: platform/uwp/export/export.cpp
+msgid "Product Guid"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Publisher Guid"
+msgstr "सà¥à¤ªà¤·à¥à¤Ÿ गाइड"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Signing"
+msgstr "सिगà¥à¤¨à¤²"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Certificate"
+msgstr "विशेषता"
+
+#: platform/uwp/export/export.cpp
+msgid "Algorithm"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Major"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Minor"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Build"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Revision"
+msgstr "संसà¥à¤•रण:"
+
+#: platform/uwp/export/export.cpp
+msgid "Landscape"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Portrait"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Landscape Flipped"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Portrait Flipped"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Store Logo"
+msgstr "मोड टॉगल कीजिये"
+
+#: platform/uwp/export/export.cpp
+msgid "Square 44 X 44 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 71 X 71 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 150 X 150 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 310 X 310 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Wide 310 X 150 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Splash Screen"
+msgstr "कॉल"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Tiles"
+msgstr "फ़ाइल:"
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Square 150 X 150"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Wide 310 X 150"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Square 310 X 310"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
#, fuzzy
msgid "Invalid package short name."
msgstr "गलत फॉणà¥à¤Ÿ का आकार |"
@@ -18381,11 +19609,48 @@ msgid "Debug Certificate"
msgstr ""
#: platform/uwp/export/export.cpp
-msgid "Debug Password"
+msgid "Debug Algorithm"
msgstr ""
-#: platform/uwp/export/export.cpp
-msgid "Debug Algorithm"
+#: platform/windows/export/export.cpp
+msgid "Identity Type"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Timestamp Server URL"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Digest Algorithm"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "File Version"
+msgstr "संसà¥à¤•रण:"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Product Version"
+msgstr "गलत फॉणà¥à¤Ÿ का आकार |"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Company Name"
+msgstr "नोड का नाम:"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Product Name"
+msgstr "अनेक गà¥à¤°à¥à¤ª"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "File Description"
+msgstr "विवरण"
+
+#: platform/windows/export/export.cpp
+msgid "Trademarks"
msgstr ""
#: platform/windows/export/export.cpp
@@ -18460,12 +19725,14 @@ msgstr "खेल"
msgid "Centered"
msgstr "को हटा दें"
-#: scene/2d/animated_sprite.cpp scene/2d/camera_2d.cpp scene/2d/light_2d.cpp
+#: scene/2d/animated_sprite.cpp scene/2d/camera_2d.cpp
+#: scene/2d/cpu_particles_2d.cpp scene/2d/light_2d.cpp
#: scene/2d/parallax_background.cpp scene/2d/parallax_layer.cpp
#: scene/2d/path_2d.cpp scene/2d/polygon_2d.cpp scene/2d/sprite.cpp
-#: scene/3d/path.cpp scene/3d/physics_body.cpp scene/3d/sprite_3d.cpp
-#: scene/gui/graph_node.cpp scene/gui/rich_text_effect.cpp
-#: scene/main/canvas_layer.cpp scene/resources/material.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/path.cpp scene/3d/physics_body.cpp
+#: scene/3d/sprite_3d.cpp scene/gui/graph_node.cpp
+#: scene/gui/rich_text_effect.cpp scene/main/canvas_layer.cpp
+#: scene/resources/material.cpp scene/resources/particles_material.cpp
#: scene/resources/style_box.cpp
msgid "Offset"
msgstr ""
@@ -18537,11 +19804,6 @@ msgstr "ऑडियो बस à¤à¤¡ कीजिà¤"
msgid "Override"
msgstr "मौजूदा के ऊपर लिखे"
-#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
-#: scene/audio/audio_stream_player.cpp scene/gui/video_player.cpp
-msgid "Stream"
-msgstr ""
-
#: scene/2d/audio_stream_player_2d.cpp scene/audio/audio_stream_player.cpp
#: scene/gui/video_player.cpp servers/audio/effects/audio_effect_amplify.cpp
msgid "Volume dB"
@@ -18565,13 +19827,13 @@ msgid "Stream Paused"
msgstr ""
#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
-#: scene/3d/reflection_probe.cpp scene/3d/visual_instance.cpp
-#: scene/resources/material.cpp
+#: scene/3d/light.cpp scene/3d/reflection_probe.cpp
+#: scene/3d/visual_instance.cpp scene/resources/material.cpp
#, fuzzy
msgid "Max Distance"
msgstr "इनसà¥à¤Ÿà¤¨à¥à¤¸"
-#: scene/2d/audio_stream_player_2d.cpp
+#: scene/2d/audio_stream_player_2d.cpp scene/3d/light.cpp
#, fuzzy
msgid "Attenuation"
msgstr "कारà¥à¤¯à¥‹à¤‚:"
@@ -18626,6 +19888,23 @@ msgstr "मोड टॉगल कीजिये"
msgid "Limit"
msgstr ""
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/style_box.cpp
+#, fuzzy
+msgid "Left"
+msgstr "समय"
+
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/style_box.cpp
+msgid "Right"
+msgstr ""
+
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/dynamic_font.cpp scene/resources/style_box.cpp
+#, fuzzy
+msgid "Bottom"
+msgstr "आइटम निकालें"
+
#: scene/2d/camera_2d.cpp
msgid "Smoothed"
msgstr ""
@@ -18831,12 +20110,6 @@ msgstr ""
msgid "Emitting"
msgstr "à¤à¤¡à¥€à¤Ÿà¤° सेटिनà¥à¤—स..."
-#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp scene/3d/area.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
-#: scene/resources/environment.cpp
-msgid "Amount"
-msgstr ""
-
#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp
#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
msgid "Lifetime"
@@ -18897,18 +20170,13 @@ msgstr ""
#: scene/2d/mesh_instance_2d.cpp scene/2d/multimesh_instance_2d.cpp
#: scene/2d/particles_2d.cpp scene/2d/polygon_2d.cpp scene/2d/sprite.cpp
#: scene/3d/sprite_3d.cpp scene/gui/nine_patch_rect.cpp
-#: scene/gui/texture_rect.cpp scene/resources/sky.cpp
-#: scene/resources/style_box.cpp scene/resources/visual_shader_nodes.cpp
+#: scene/gui/texture_rect.cpp scene/resources/material.cpp
+#: scene/resources/sky.cpp scene/resources/style_box.cpp
+#: scene/resources/visual_shader_nodes.cpp
#, fuzzy
msgid "Texture"
msgstr "मिटाना"
-#: scene/2d/cpu_particles_2d.cpp scene/2d/mesh_instance_2d.cpp
-#: scene/2d/multimesh_instance_2d.cpp scene/2d/particles_2d.cpp
-#: scene/2d/sprite.cpp scene/resources/style_box.cpp
-msgid "Normal Map"
-msgstr ""
-
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
#, fuzzy
@@ -18929,10 +20197,10 @@ msgid "Normals"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/3d/sprite_3d.cpp scene/resources/material.cpp
-#: scene/resources/particles_material.cpp scene/resources/texture.cpp
-msgid "Flags"
-msgstr ""
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Align Y"
+msgstr "सौंपना..."
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
@@ -18952,6 +20220,11 @@ msgid "Initial Velocity"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Velocity Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp servers/physics_2d_server.cpp
#: servers/physics_server.cpp
msgid "Angular Velocity"
@@ -18959,6 +20232,12 @@ msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Velocity Curve"
+msgstr "नोड वकà¥à¤° संपादित करें"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
msgid "Orbit Velocity"
msgstr ""
@@ -18970,6 +20249,23 @@ msgstr "रैखिक"
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Accel"
+msgstr "सफलता!"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Accel Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Accel Curve"
+msgstr "नोड वकà¥à¤° संपादित करें"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
msgid "Radial Accel"
msgstr ""
@@ -18979,19 +20275,55 @@ msgid "Tangential Accel"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/2d/joints_2d.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/vehicle_body.cpp
-#: scene/resources/particles_material.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/physics_joint.cpp
+#: scene/3d/vehicle_body.cpp scene/resources/particles_material.cpp
#: servers/audio/effects/audio_effect_reverb.cpp
msgid "Damping"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+msgid "Damping Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Damping Curve"
+msgstr "नोड वकà¥à¤° संपादित करें"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp scene/3d/light.cpp
+#: scene/resources/particles_material.cpp
msgid "Angle"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+msgid "Angle Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Angle Curve"
+msgstr "नोड वकà¥à¤° संपादित करें"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#, fuzzy
+msgid "Scale Amount"
+msgstr "इनसà¥à¤Ÿà¤¨à¥à¤¸"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+msgid "Scale Amount Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#, fuzzy
+msgid "Scale Amount Curve"
+msgstr "करà¥à¤¸à¤° से सà¥à¤•ेल"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
msgid "Color Ramp"
msgstr ""
@@ -19006,6 +20338,46 @@ msgstr ""
msgid "Hue Variation"
msgstr "संसà¥à¤•रण:"
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Variation"
+msgstr "संसà¥à¤•रण:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Variation Random"
+msgstr "संसà¥à¤•रण:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Variation Curve"
+msgstr "संसà¥à¤•रण:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Speed Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Speed Curve"
+msgstr "नोड वकà¥à¤° संपादित करें"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Offset Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Offset Curve"
+msgstr "नोड वकà¥à¤° संपादित करें"
+
#: scene/2d/joints_2d.cpp
msgid "Node A and Node B must be PhysicsBody2Ds"
msgstr ""
@@ -19037,6 +20409,7 @@ msgid "Node B"
msgstr "नोड"
#: scene/2d/joints_2d.cpp scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp
+#: scene/3d/light.cpp scene/3d/physics_joint.cpp
#: scene/resources/environment.cpp
msgid "Bias"
msgstr ""
@@ -19046,7 +20419,7 @@ msgstr ""
msgid "Disable Collision"
msgstr "बंद कर दिया गया है"
-#: scene/2d/joints_2d.cpp
+#: scene/2d/joints_2d.cpp scene/3d/physics_joint.cpp
msgid "Softness"
msgstr ""
@@ -19063,7 +20436,7 @@ msgstr ""
msgid "Rest Length"
msgstr ""
-#: scene/2d/joints_2d.cpp scene/3d/vehicle_body.cpp
+#: scene/2d/joints_2d.cpp scene/3d/physics_joint.cpp scene/3d/vehicle_body.cpp
msgid "Stiffness"
msgstr ""
@@ -19083,7 +20456,7 @@ msgid "Texture Scale"
msgstr ""
#: scene/2d/light_2d.cpp scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp
-#: scene/resources/environment.cpp scene/resources/sky.cpp
+#: scene/3d/light.cpp scene/resources/environment.cpp scene/resources/sky.cpp
msgid "Energy"
msgstr ""
@@ -19123,12 +20496,6 @@ msgstr "आकार: "
msgid "Gradient Length"
msgstr "चूक"
-#: scene/2d/light_2d.cpp scene/gui/control.cpp
-#: scene/resources/navigation_mesh.cpp
-#, fuzzy
-msgid "Filter"
-msgstr "फिलà¥à¤Ÿà¤°:"
-
#: scene/2d/light_2d.cpp
#, fuzzy
msgid "Filter Smooth"
@@ -19527,10 +20894,6 @@ msgid "Applied Forces"
msgstr ""
#: scene/2d/physics_body_2d.cpp
-msgid "Force"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp
msgid "Torque"
msgstr ""
@@ -19544,7 +20907,7 @@ msgid "Sync To Physics"
msgstr "फिजिकà¥à¤¸ फà¥à¤°à¥‡à¤® %"
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-msgid "Moving platform"
+msgid "Moving Platform"
msgstr ""
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
@@ -19553,7 +20916,7 @@ msgstr ""
#: scene/2d/physics_body_2d.cpp scene/2d/touch_screen_button.cpp
#: scene/3d/physics_body.cpp scene/gui/texture_button.cpp
-#: scene/resources/line_shape_2d.cpp
+#: scene/resources/line_shape_2d.cpp scene/resources/material.cpp
msgid "Normal"
msgstr ""
@@ -19776,6 +21139,34 @@ msgid ""
"as parent."
msgstr ""
+#: scene/2d/visibility_notifier_2d.cpp scene/3d/visibility_notifier.cpp
+#, fuzzy
+msgid "Pause Animations"
+msgstr "कारà¥à¤¯à¥‹à¤‚:"
+
+#: scene/2d/visibility_notifier_2d.cpp scene/3d/visibility_notifier.cpp
+msgid "Freeze Bodies"
+msgstr ""
+
+#: scene/2d/visibility_notifier_2d.cpp
+#, fuzzy
+msgid "Pause Particles"
+msgstr "पैरैमिटरà¥à¤¸ पेसà¥à¤Ÿ कीजिये"
+
+#: scene/2d/visibility_notifier_2d.cpp
+#, fuzzy
+msgid "Pause Animated Sprites"
+msgstr "à¤à¤¨à¤¿à¤®à¥‡à¤¶à¤¨ सà¥à¤Ÿà¥‡à¤ª बदलें"
+
+#: scene/2d/visibility_notifier_2d.cpp
+#, fuzzy
+msgid "Process Parent"
+msgstr "मोड टॉगल कीजिये"
+
+#: scene/2d/visibility_notifier_2d.cpp
+msgid "Physics Process Parent"
+msgstr ""
+
#: scene/3d/area.cpp
msgid "Reverb Bus"
msgstr ""
@@ -19867,6 +21258,7 @@ msgid "Attenuation Filter"
msgstr ""
#: scene/3d/audio_stream_player_3d.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
#: servers/audio/effects/audio_effect_filter.cpp
msgid "Cutoff Hz"
msgstr ""
@@ -19909,11 +21301,6 @@ msgid "Octree"
msgstr ""
#: scene/3d/baked_lightmap.cpp
-#, fuzzy
-msgid "User Data"
-msgstr "संपादक डेटा फ़ोलà¥à¤¡à¤° खोलें"
-
-#: scene/3d/baked_lightmap.cpp
msgid "Finding meshes and lights"
msgstr ""
@@ -20162,6 +21549,16 @@ msgid "Ring Axis"
msgstr "चेतावनियाà¤"
#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Rotate Y"
+msgstr "कोनà¥à¤¸à¥à¤Ÿà¤¨à¥à¤Ÿ"
+
+#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Disable Z"
+msgstr "बंद कर दिया गया है"
+
+#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
msgid "Flatness"
msgstr ""
@@ -20198,16 +21595,11 @@ msgstr ""
msgid "Dynamic Range"
msgstr ""
-#: scene/3d/gi_probe.cpp
+#: scene/3d/gi_probe.cpp scene/3d/light.cpp
msgid "Normal Bias"
msgstr ""
#: scene/3d/gi_probe.cpp
-#, fuzzy
-msgid "Compress"
-msgstr "अवयव"
-
-#: scene/3d/gi_probe.cpp
msgid "Plotting Meshes"
msgstr ""
@@ -20233,15 +21625,28 @@ msgid "Subdiv"
msgstr ""
#: scene/3d/light.cpp
+msgid "Indirect Energy"
+msgstr ""
+
+#: scene/3d/light.cpp
msgid "Negative"
msgstr ""
#: scene/3d/light.cpp
#, fuzzy
+msgid "Specular"
+msgstr "मोड टॉगल कीजिये"
+
+#: scene/3d/light.cpp
+#, fuzzy
msgid "Bake Mode"
msgstr "दृशà¥à¤¯ रोकें"
#: scene/3d/light.cpp
+msgid "Contact"
+msgstr ""
+
+#: scene/3d/light.cpp
#, fuzzy
msgid "Reverse Cull Face"
msgstr "बस की धà¥à¤µà¤¨à¤¿ मातà¥à¤°à¤¾ पूरà¥à¤µà¤°à¥‚प करे"
@@ -20252,11 +21657,31 @@ msgid "Directional Shadow"
msgstr "निरà¥à¤¦à¥‡à¤¶à¥‹à¤‚"
#: scene/3d/light.cpp
+#, fuzzy
+msgid "Split 1"
+msgstr "नोड वकà¥à¤° संपादित करें"
+
+#: scene/3d/light.cpp
+#, fuzzy
+msgid "Split 2"
+msgstr "नोड वकà¥à¤° संपादित करें"
+
+#: scene/3d/light.cpp
+#, fuzzy
+msgid "Split 3"
+msgstr "नोड वकà¥à¤° संपादित करें"
+
+#: scene/3d/light.cpp
msgid "Blend Splits"
msgstr ""
#: scene/3d/light.cpp
#, fuzzy
+msgid "Bias Split Scale"
+msgstr "नई सà¥à¤•à¥à¤°à¤¿à¤ªà¥à¤Ÿ"
+
+#: scene/3d/light.cpp
+#, fuzzy
msgid "Depth Range"
msgstr "बदली"
@@ -20282,6 +21707,11 @@ msgstr ""
msgid "Spot"
msgstr ""
+#: scene/3d/light.cpp
+#, fuzzy
+msgid "Angle Attenuation"
+msgstr "कारà¥à¤¯à¥‹à¤‚:"
+
#: scene/3d/mesh_instance.cpp
msgid "Software Skinning"
msgstr ""
@@ -20403,6 +21833,60 @@ msgid "Axis Lock"
msgstr ""
#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Linear X"
+msgstr "रैखिक"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Linear Y"
+msgstr "रैखिक"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Linear Z"
+msgstr "रैखिक"
+
+#: scene/3d/physics_body.cpp
+msgid "Angular X"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Angular Y"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Angular Z"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Motion X"
+msgstr "कारà¥à¤¯"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Motion Y"
+msgstr "कारà¥à¤¯"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Motion Z"
+msgstr "कारà¥à¤¯"
+
+#: scene/3d/physics_body.cpp
+msgid "Move Lock X"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Move Lock Y"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Move Lock Z"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
msgid "Body Offset"
msgstr ""
@@ -20436,6 +21920,15 @@ msgid "Exclude Nodes"
msgstr "को हटा दें"
#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Params"
+msgstr "पैरैमिटरà¥à¤¸ पेसà¥à¤Ÿ कीजिये"
+
+#: scene/3d/physics_joint.cpp
+msgid "Impulse Clamp"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit"
msgstr ""
@@ -20447,6 +21940,55 @@ msgstr ""
msgid "Lower"
msgstr ""
+#: scene/3d/physics_joint.cpp scene/3d/vehicle_body.cpp
+#, fuzzy
+msgid "Relaxation"
+msgstr "संसà¥à¤•रण:"
+
+#: scene/3d/physics_joint.cpp
+msgid "Motor"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Target Velocity"
+msgstr "रैखिक"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Max Impulse"
+msgstr "मूलà¥à¤¯ :"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit"
+msgstr "रैखिक"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Upper Distance"
+msgstr "इनसà¥à¤Ÿà¤¨à¥à¤¸"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Lower Distance"
+msgstr "इनसà¥à¤Ÿà¤¨à¥à¤¸"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Restitution"
+msgstr "विवरण"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motion"
+msgstr "रैखिक"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Ortho"
+msgstr "रैखिक"
+
#: scene/3d/physics_joint.cpp
msgid "Upper Angle"
msgstr ""
@@ -20457,6 +21999,16 @@ msgstr ""
#: scene/3d/physics_joint.cpp
#, fuzzy
+msgid "Angular Motion"
+msgstr "कारà¥à¤¯à¥‹à¤‚:"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Angular Ortho"
+msgstr "अधिकतम. कोणीय तà¥à¤°à¥à¤Ÿà¤¿:"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
msgid "Swing Span"
msgstr "सीन सेव कर रहा है"
@@ -20465,17 +22017,99 @@ msgid "Twist Span"
msgstr ""
#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit X"
+msgstr "रैखिक"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motor X"
+msgstr "रैखिक"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Force Limit"
+msgstr "कॉल"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Spring X"
+msgstr "रैखिक"
+
+#: scene/3d/physics_joint.cpp
+msgid "Equilibrium Point"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit X"
msgstr ""
#: scene/3d/physics_joint.cpp
+msgid "Erp"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Motor X"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Spring X"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit Y"
+msgstr "रैखिक"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motor Y"
+msgstr "रैखिक"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Spring Y"
+msgstr "रैखिक"
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit Y"
msgstr ""
#: scene/3d/physics_joint.cpp
+msgid "Angular Motor Y"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Spring Y"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit Z"
+msgstr "रैखिक"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motor Z"
+msgstr "रैखिक"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Spring Z"
+msgstr "रैखिक"
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit Z"
msgstr ""
+#: scene/3d/physics_joint.cpp
+msgid "Angular Motor Z"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Spring Z"
+msgstr ""
+
#: scene/3d/portal.cpp
msgid "The RoomManager should not be a child or grandchild of a Portal."
msgstr ""
@@ -20589,7 +22223,7 @@ msgstr ""
msgid "Use Default Simplify"
msgstr ""
-#: scene/3d/room.cpp
+#: scene/3d/room.cpp scene/3d/room_manager.cpp
msgid "Room Simplify"
msgstr ""
@@ -20627,6 +22261,13 @@ msgstr ""
msgid "Main"
msgstr ""
+#: scene/3d/room_manager.cpp scene/animation/animation_player.cpp
+#: scene/animation/animation_tree.cpp scene/animation/animation_tree_player.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+#, fuzzy
+msgid "Active"
+msgstr "कारà¥à¤¯"
+
#: scene/3d/room_manager.cpp
msgid "Roomlist"
msgstr ""
@@ -20649,6 +22290,51 @@ msgid "Gameplay"
msgstr ""
#: scene/3d/room_manager.cpp
+msgid "Gameplay Monitor"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "Use Secondary PVS"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "Merge Meshes"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Show Margins"
+msgstr "शो में फाइल सिसà¥à¤Ÿà¤®"
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Debug Sprawl"
+msgstr "डीबग करें"
+
+#: scene/3d/room_manager.cpp
+msgid "Overlap Warning Threshold"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Preview Camera"
+msgstr "पूरà¥à¤µ दरà¥à¤¶à¤¨:"
+
+#: scene/3d/room_manager.cpp
+msgid "Portal Depth Limit"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Default Portal Margin"
+msgstr "चूक"
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Roaming Expansion Margin"
+msgstr "सभी बढाय"
+
+#: scene/3d/room_manager.cpp
msgid ""
"RoomList path is invalid.\n"
"Please check the RoomList branch has been assigned in the RoomManager."
@@ -20770,6 +22456,19 @@ msgstr ""
msgid "Billboard"
msgstr ""
+#: scene/3d/sprite_3d.cpp scene/resources/material.cpp
+#, fuzzy
+msgid "Transparent"
+msgstr "संकà¥à¤°à¤®à¤£: "
+
+#: scene/3d/sprite_3d.cpp
+msgid "Shaded"
+msgstr ""
+
+#: scene/3d/sprite_3d.cpp
+msgid "Double Sided"
+msgstr ""
+
#: scene/3d/sprite_3d.cpp
msgid "Alpha Cut"
msgstr ""
@@ -20838,11 +22537,6 @@ msgstr ""
msgid "Max Force"
msgstr "पà¥à¤°à¤¤à¤¿à¤®à¤¾"
-#: scene/3d/vehicle_body.cpp
-#, fuzzy
-msgid "Relaxation"
-msgstr "संसà¥à¤•रण:"
-
#: scene/3d/visibility_notifier.cpp
msgid "AABB"
msgstr ""
@@ -20971,8 +22665,9 @@ msgid "Fadeout Time"
msgstr ""
#: scene/animation/animation_blend_tree.cpp
-msgid "autorestart_"
-msgstr ""
+#, fuzzy
+msgid "Auto Restart"
+msgstr "ऑटो डालें कà¥à¤‚जी"
#: scene/animation/animation_blend_tree.cpp
#, fuzzy
@@ -21054,13 +22749,6 @@ msgstr "कà¥à¤²à¤¾à¤¸ विकलà¥à¤ª:"
msgid "Default Blend Time"
msgstr "चूक"
-#: scene/animation/animation_player.cpp scene/animation/animation_tree.cpp
-#: scene/animation/animation_tree_player.cpp
-#: servers/audio/effects/audio_effect_delay.cpp
-#, fuzzy
-msgid "Active"
-msgstr "कारà¥à¤¯"
-
#: scene/animation/animation_player.cpp
msgid "Method Call Mode"
msgstr ""
@@ -21184,10 +22872,6 @@ msgstr "नोड हटाà¤à¤‚"
msgid "Max Iterations"
msgstr "कारà¥à¤¯à¥‹à¤‚:"
-#: scene/animation/tween.cpp scene/resources/texture.cpp
-msgid "Repeat"
-msgstr ""
-
#: scene/animation/tween.cpp
msgid "Playback Process Mode"
msgstr ""
@@ -21215,20 +22899,6 @@ msgstr ""
msgid "Alignment"
msgstr ""
-#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
-#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
-#: scene/resources/style_box.cpp
-#, fuzzy
-msgid "Horizontal"
-msgstr "कà¥à¤·à¥ˆà¤¤à¤¿à¤œ गाइड बनाà¤à¤‚"
-
-#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
-#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
-#: scene/resources/style_box.cpp
-#, fuzzy
-msgid "Vertical"
-msgstr "विशेषता"
-
#: scene/gui/base_button.cpp
msgid "Shortcut In Tooltip"
msgstr ""
@@ -21322,10 +22992,6 @@ msgid "HSV"
msgstr ""
#: scene/gui/color_picker.cpp
-msgid "Raw"
-msgstr ""
-
-#: scene/gui/color_picker.cpp
msgid "Switch between hexadecimal and code values."
msgstr ""
@@ -21384,6 +23050,30 @@ msgid "Focus"
msgstr "फ़ोकस पाथ"
#: scene/gui/control.cpp
+msgid "Neighbour Left"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Neighbour Top"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Neighbour Right"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Neighbour Bottom"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Next"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Previous"
+msgstr ""
+
+#: scene/gui/control.cpp
msgid "Mouse"
msgstr ""
@@ -21420,7 +23110,7 @@ msgid "Dialog"
msgstr ""
#: scene/gui/dialogs.cpp
-msgid "Hide On Ok"
+msgid "Hide On OK"
msgstr ""
#: scene/gui/dialogs.cpp scene/gui/label.cpp
@@ -21515,7 +23205,7 @@ msgid "Timers"
msgstr "समय"
#: scene/gui/item_list.cpp scene/gui/popup_menu.cpp scene/gui/tree.cpp
-msgid "Incremental Search Max Interval (msec)"
+msgid "Incremental Search Max Interval Msec"
msgstr ""
#: scene/gui/item_list.cpp scene/gui/tree.cpp
@@ -22067,6 +23757,26 @@ msgstr "को हटा दें"
msgid "Nine Patch Stretch"
msgstr "इंटरपोलेशन मोड"
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Left"
+msgstr "सà¥à¤•ेल अनà¥à¤ªà¤¾à¤¤:"
+
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Top"
+msgstr "सà¥à¤•ेल अनà¥à¤ªà¤¾à¤¤:"
+
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Right"
+msgstr "सà¥à¤•ेल अनà¥à¤ªà¤¾à¤¤:"
+
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Bottom"
+msgstr "सà¥à¤•ेल अनà¥à¤ªà¤¾à¤¤:"
+
#: scene/gui/tree.cpp
msgid "Custom Minimum Height"
msgstr ""
@@ -22103,8 +23813,9 @@ msgid "Paused"
msgstr ""
#: scene/gui/video_player.cpp
-msgid "Buffering (msec)"
-msgstr ""
+#, fuzzy
+msgid "Buffering Msec"
+msgstr "आकार: "
#: scene/gui/video_player.cpp
#, fuzzy
@@ -22441,6 +24152,22 @@ msgid "Shadow Atlas"
msgstr ""
#: scene/main/viewport.cpp
+msgid "Quad 0"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 1"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 2"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 3"
+msgstr ""
+
+#: scene/main/viewport.cpp
#, fuzzy
msgid "Canvas Transform"
msgstr "à¤à¤¨à¥€à¤®à¥‡à¤¶à¤¨ परिवरà¥à¤¤à¤¨ परिणत"
@@ -22455,6 +24182,11 @@ msgid "Tooltip Delay (sec)"
msgstr ""
#: scene/register_scene_types.cpp
+#, fuzzy
+msgid "Swap OK Cancel"
+msgstr "रदà¥à¤¦ करें"
+
+#: scene/register_scene_types.cpp
msgid "Use hiDPI"
msgstr ""
@@ -22469,21 +24201,6 @@ msgid "Custom Font"
msgstr "पà¥à¤°à¤¤à¤¿à¤²à¤¿à¤ªà¤¿"
#: scene/resources/audio_stream_sample.cpp
-#, fuzzy
-msgid "Loop Mode"
-msgstr "सदसà¥à¤¯à¤¤à¤¾ बनाà¤à¤‚"
-
-#: scene/resources/audio_stream_sample.cpp
-#, fuzzy
-msgid "Loop Begin"
-msgstr "सदसà¥à¤¯à¤¤à¤¾ बनाà¤à¤‚"
-
-#: scene/resources/audio_stream_sample.cpp
-#, fuzzy
-msgid "Loop End"
-msgstr "सदसà¥à¤¯à¤¤à¤¾ बनाà¤à¤‚"
-
-#: scene/resources/audio_stream_sample.cpp
#: servers/audio/effects/audio_stream_generator.cpp servers/audio_server.cpp
msgid "Mix Rate"
msgstr ""
@@ -22539,6 +24256,17 @@ msgid "Extra Spacing"
msgstr "कà¥à¤²à¤¾à¤¸ विकलà¥à¤ª:"
#: scene/resources/dynamic_font.cpp
+#, fuzzy
+msgid "Char"
+msgstr "मानà¥à¤¯ अकà¥à¤·à¤°:"
+
+#: scene/resources/dynamic_font.cpp scene/resources/world.cpp
+#: scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Space"
+msgstr "कॉल"
+
+#: scene/resources/dynamic_font.cpp
msgid "Font"
msgstr ""
@@ -22755,6 +24483,43 @@ msgid "Glow"
msgstr ""
#: scene/resources/environment.cpp
+#, fuzzy
+msgid "Levels"
+msgstr "डेवलपरà¥à¤¸"
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "1"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "2"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "3"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "4"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "5"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "6"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "7"
+msgstr ""
+
+#: scene/resources/environment.cpp
msgid "Bloom"
msgstr ""
@@ -22842,9 +24607,66 @@ msgid "Next Pass"
msgstr "अगला टैब"
#: scene/resources/material.cpp
+msgid "Use Shadow To Opacity"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Unshaded"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Vertex Lighting"
+msgstr "निरà¥à¤¦à¥‡à¤¶à¥‹à¤‚"
+
+#: scene/resources/material.cpp
+msgid "No Depth Test"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Use Point Size"
+msgstr "आकार: "
+
+#: scene/resources/material.cpp
+msgid "World Triplanar"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Fixed Size"
+msgstr "आकार: "
+
+#: scene/resources/material.cpp
+msgid "Albedo Tex Force sRGB"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Do Not Receive Shadows"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Disable Ambient Light"
+msgstr "बंद कर दिया गया है"
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Ensure Correct Normals"
+msgstr "सदसà¥à¤¯à¤¤à¤¾ बनाà¤à¤‚"
+
+#: scene/resources/material.cpp
msgid "Vertex Color"
msgstr ""
+#: scene/resources/material.cpp
+msgid "Use As Albedo"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Is sRGB"
+msgstr ""
+
#: scene/resources/material.cpp servers/visual_server.cpp
msgid "Parameters"
msgstr ""
@@ -22880,6 +24702,11 @@ msgid "Billboard Mode"
msgstr "सदसà¥à¤¯à¤¤à¤¾ बनाà¤à¤‚"
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Billboard Keep Scale"
+msgstr "सदसà¥à¤¯à¤¤à¤¾ बनाà¤à¤‚"
+
+#: scene/resources/material.cpp
msgid "Grow"
msgstr ""
@@ -22889,6 +24716,10 @@ msgid "Grow Amount"
msgstr "कà¥à¤·à¥ˆà¤¤à¤¿à¤œ गाइड बनाà¤à¤‚"
#: scene/resources/material.cpp
+msgid "Use Alpha Scissor"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Alpha Scissor Threshold"
msgstr ""
@@ -22919,10 +24750,20 @@ msgid "Metallic Specular"
msgstr ""
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Metallic Texture"
+msgstr "मिटाना"
+
+#: scene/resources/material.cpp
msgid "Metallic Texture Channel"
msgstr ""
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Roughness Texture"
+msgstr "मिटाना"
+
+#: scene/resources/material.cpp
msgid "Roughness Texture Channel"
msgstr ""
@@ -22939,6 +24780,16 @@ msgid "Emission Operator"
msgstr ""
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Emission On UV2"
+msgstr "दृशà¥à¤¯à¤®à¤¾à¤¨ टकराव आकार"
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Emission Texture"
+msgstr "मिटाना"
+
+#: scene/resources/material.cpp
msgid "NormalMap"
msgstr ""
@@ -22952,6 +24803,11 @@ msgstr ""
#: scene/resources/material.cpp
#, fuzzy
+msgid "Rim Texture"
+msgstr "मिटाना"
+
+#: scene/resources/material.cpp
+#, fuzzy
msgid "Clearcoat"
msgstr "साफ़"
@@ -22961,15 +24817,28 @@ msgid "Clearcoat Gloss"
msgstr "साफ हडà¥à¤¡à¤¿à¤¯à¤¾à¤‚"
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Clearcoat Texture"
+msgstr "संपादक"
+
+#: scene/resources/material.cpp
msgid "Anisotropy"
msgstr ""
#: scene/resources/material.cpp
+msgid "Anisotropy Flowmap"
+msgstr ""
+
+#: scene/resources/material.cpp
#, fuzzy
msgid "Ambient Occlusion"
msgstr "सदसà¥à¤¯à¤¤à¤¾ बनाà¤à¤‚"
#: scene/resources/material.cpp
+msgid "On UV2"
+msgstr ""
+
+#: scene/resources/material.cpp
#, fuzzy
msgid "Texture Channel"
msgstr "मोड टॉगल कीजिये"
@@ -23007,6 +24876,11 @@ msgstr "संकà¥à¤°à¤®à¤£: "
#: scene/resources/material.cpp
#, fuzzy
+msgid "Transmission Texture"
+msgstr "संकà¥à¤°à¤®à¤£: "
+
+#: scene/resources/material.cpp
+#, fuzzy
msgid "Refraction"
msgstr "संसà¥à¤•रण:"
@@ -23024,6 +24898,10 @@ msgid "UV1"
msgstr ""
#: scene/resources/material.cpp
+msgid "Triplanar"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Triplanar Sharpness"
msgstr ""
@@ -23225,6 +25103,16 @@ msgstr "संपादक"
msgid "Point Count"
msgstr "पसंदीदा:"
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Scale Random"
+msgstr "सà¥à¤•ेल अनà¥à¤ªà¤¾à¤¤:"
+
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Scale Curve"
+msgstr "नोड वकà¥à¤° संपादित करें"
+
#: scene/resources/physics_material.cpp
msgid "Rough"
msgstr ""
@@ -23282,10 +25170,6 @@ msgid "A"
msgstr ""
#: scene/resources/shader.cpp
-msgid "Code"
-msgstr ""
-
-#: scene/resources/shader.cpp
#, fuzzy
msgid "Custom Defines"
msgstr "कसà¥à¤Ÿà¤® दृशà¥à¤¯ बजाना"
@@ -23377,15 +25261,6 @@ msgstr ""
#: scene/resources/texture.cpp
#, fuzzy
-msgid "Storage"
-msgstr "फ़ाइल सà¥à¤Ÿà¥‹à¤° कर रहा है:"
-
-#: scene/resources/texture.cpp
-msgid "Lossy Quality"
-msgstr ""
-
-#: scene/resources/texture.cpp
-#, fuzzy
msgid "Load Path"
msgstr "पà¥à¤°à¤¾à¤¯à¤¿à¤• लोड कीजिये"
@@ -23513,11 +25388,6 @@ msgstr "गलत फॉणà¥à¤Ÿ का आकार |"
msgid "Fallback Environment"
msgstr ""
-#: scene/resources/world.cpp scene/resources/world_2d.cpp
-#, fuzzy
-msgid "Space"
-msgstr "कॉल"
-
#: scene/resources/world.cpp
#, fuzzy
msgid "Scenario"
@@ -23594,10 +25464,36 @@ msgstr ""
msgid "Wet"
msgstr ""
-#: servers/audio/effects/audio_effect_compressor.cpp
-msgid "Threshold"
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "Voice"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+msgid "Delay (ms)"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_phaser.cpp
+msgid "Rate Hz"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "Depth (ms)"
msgstr ""
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+msgid "Level dB"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+#: servers/audio/effects/audio_effect_panner.cpp
+#, fuzzy
+msgid "Pan"
+msgstr "पैक कर रहा है"
+
#: servers/audio/effects/audio_effect_compressor.cpp
#: servers/audio/effects/audio_effect_filter.cpp
msgid "Gain"
@@ -23620,20 +25516,6 @@ msgid "Tap 1"
msgstr ""
#: servers/audio/effects/audio_effect_delay.cpp
-msgid "Delay (ms)"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_delay.cpp
-msgid "Level dB"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_delay.cpp
-#: servers/audio/effects/audio_effect_panner.cpp
-#, fuzzy
-msgid "Pan"
-msgstr "पैक कर रहा है"
-
-#: servers/audio/effects/audio_effect_delay.cpp
msgid "Tap 2"
msgstr ""
@@ -23694,10 +25576,6 @@ msgstr ""
msgid "Range Max Hz"
msgstr ""
-#: servers/audio/effects/audio_effect_phaser.cpp
-msgid "Rate Hz"
-msgstr ""
-
#: servers/audio/effects/audio_effect_pitch_shift.cpp
msgid "Oversampling"
msgstr ""
@@ -23713,7 +25591,7 @@ msgid "Predelay"
msgstr ""
#: servers/audio/effects/audio_effect_reverb.cpp
-msgid "(msec)"
+msgid "Msec"
msgstr ""
#: servers/audio/effects/audio_effect_reverb.cpp
diff --git a/editor/translations/hr.po b/editor/translations/hr.po
index 07c2ed68e3..9214ae366b 100644
--- a/editor/translations/hr.po
+++ b/editor/translations/hr.po
@@ -21,7 +21,7 @@ msgstr ""
"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
"X-Generator: Weblate 4.8-dev\n"
-#: core/bind/core_bind.cpp
+#: core/bind/core_bind.cpp main/main.cpp
msgid "Tablet Driver"
msgstr ""
@@ -117,8 +117,8 @@ msgstr "Stvori"
#: core/bind/core_bind.cpp editor/editor_settings.cpp main/main.cpp
#: modules/gdscript/gdscript_editor.cpp modules/gridmap/grid_map.cpp
#: modules/mono/csharp_script.cpp modules/visual_script/visual_script_nodes.cpp
-#: scene/2d/tile_map.cpp scene/3d/camera.cpp scene/gui/control.cpp
-#: scene/gui/graph_edit.cpp scene/main/viewport.cpp
+#: scene/2d/tile_map.cpp scene/3d/camera.cpp scene/3d/light.cpp
+#: scene/gui/control.cpp scene/gui/graph_edit.cpp scene/main/viewport.cpp
#: scene/resources/dynamic_font.cpp scene/resources/navigation_mesh.cpp
#: scene/resources/primitive_meshes.cpp scene/resources/sky.cpp
#: scene/resources/style_box.cpp scene/resources/texture.cpp
@@ -217,8 +217,7 @@ msgid "Data"
msgstr ""
#: core/io/file_access_network.cpp core/register_core_types.cpp
-#: editor/editor_settings.cpp editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp main/main.cpp
+#: editor/editor_settings.cpp main/main.cpp
#: modules/gdscript/language_server/gdscript_language_server.cpp
msgid "Network"
msgstr ""
@@ -485,9 +484,10 @@ msgstr ""
msgid "Relative"
msgstr ""
-#: core/os/input_event.cpp scene/2d/camera_2d.cpp
-#: scene/3d/interpolated_camera.cpp scene/animation/animation_player.cpp
-#: scene/resources/environment.cpp
+#: core/os/input_event.cpp scene/2d/camera_2d.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/interpolated_camera.cpp
+#: scene/animation/animation_player.cpp scene/resources/environment.cpp
+#: scene/resources/particles_material.cpp
msgid "Speed"
msgstr ""
@@ -534,8 +534,9 @@ msgstr "Promijeni"
msgid "Pitch"
msgstr ""
-#: core/os/input_event.cpp scene/2d/physics_body_2d.cpp
-#: scene/3d/physics_body.cpp
+#: core/os/input_event.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/physics_body_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/3d/physics_body.cpp scene/resources/particles_material.cpp
msgid "Velocity"
msgstr ""
@@ -553,6 +554,8 @@ msgid "Controller Value"
msgstr ""
#: core/project_settings.cpp editor/editor_node.cpp main/main.cpp
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/windows/export/export.cpp
#, fuzzy
msgid "Application"
msgstr "Animacija"
@@ -569,13 +572,16 @@ msgstr ""
#: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp
#: editor/editor_plugin_settings.cpp editor/editor_profiler.cpp
#: editor/project_manager.cpp editor/settings_config_dialog.cpp
-#: modules/gdnative/nativescript/nativescript.cpp scene/2d/area_2d.cpp
-#: scene/3d/area.cpp scene/main/node.cpp
+#: modules/gdnative/nativescript/nativescript.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/osx/export/export.cpp scene/2d/area_2d.cpp scene/3d/area.cpp
+#: scene/main/node.cpp
msgid "Name"
msgstr "Ime"
#: core/project_settings.cpp editor/editor_help.cpp
-#: modules/visual_script/visual_script_nodes.cpp
+#: modules/visual_script/visual_script_nodes.cpp platform/uwp/export/export.cpp
+#: platform/windows/export/export.cpp
msgid "Description"
msgstr "Opis"
@@ -611,7 +617,7 @@ msgid "Custom User Dir Name"
msgstr ""
#: core/project_settings.cpp editor/animation_track_editor.cpp
-#: editor/editor_audio_buses.cpp servers/audio_server.cpp
+#: editor/editor_audio_buses.cpp main/main.cpp servers/audio_server.cpp
msgid "Audio"
msgstr "Audio"
@@ -766,10 +772,13 @@ msgstr "Filtriraj signale"
msgid "Sharpen Intensity"
msgstr ""
-#: core/project_settings.cpp editor/editor_node.cpp editor/editor_settings.cpp
-#: editor/plugins/script_editor_plugin.cpp editor/project_export.cpp
-#: main/main.cpp modules/gdscript/gdscript.cpp
-#: modules/visual_script/visual_script.cpp scene/3d/room_manager.cpp
+#: core/project_settings.cpp editor/editor_export.cpp editor/editor_node.cpp
+#: editor/editor_settings.cpp editor/plugins/script_editor_plugin.cpp
+#: editor/project_export.cpp main/main.cpp modules/gdscript/gdscript.cpp
+#: modules/visual_script/visual_script.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp scene/3d/room_manager.cpp
#: scene/main/scene_tree.cpp scene/resources/shape_2d.cpp
#: servers/visual_server.cpp
msgid "Debug"
@@ -996,6 +1005,7 @@ msgid "Subsurface Scattering"
msgstr ""
#: drivers/gles3/rasterizer_scene_gles3.cpp
+#: editor/import/resource_importer_texture.cpp
#: editor/plugins/spatial_editor_plugin.cpp modules/gltf/gltf_node.cpp
#: modules/gridmap/grid_map.cpp scene/2d/cpu_particles_2d.cpp
#: scene/2d/node_2d.cpp scene/2d/parallax_layer.cpp scene/2d/polygon_2d.cpp
@@ -1292,6 +1302,7 @@ msgid "Editors"
msgstr "Uredi"
#: editor/animation_track_editor.cpp editor/editor_settings.cpp
+#: editor/import/resource_importer_scene.cpp
#: editor/plugins/animation_player_editor_plugin.cpp editor/scene_tree_dock.cpp
#: scene/2d/animated_sprite.cpp scene/2d/cpu_particles_2d.cpp
#: scene/2d/sprite.cpp scene/3d/cpu_particles.cpp scene/3d/sprite_3d.cpp
@@ -1512,14 +1523,14 @@ msgstr ""
msgid "Seconds"
msgstr "Sekunde"
-#: editor/animation_track_editor.cpp
+#: editor/animation_track_editor.cpp editor/import/resource_importer_scene.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp main/main.cpp
#: scene/resources/texture.cpp
msgid "FPS"
msgstr "FPS"
#: editor/animation_track_editor.cpp editor/editor_plugin_settings.cpp
-#: editor/editor_resource_picker.cpp
+#: editor/editor_resource_picker.cpp editor/import/resource_importer_wav.cpp
#: editor/plugins/polygon_2d_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
@@ -2481,7 +2492,9 @@ msgid "Remove Autoload"
msgstr "Ukloni Autoload"
#: editor/editor_autoload_settings.cpp editor/editor_plugin_settings.cpp
-#: modules/gdscript/gdscript.cpp scene/2d/polygon_2d.cpp scene/3d/area.cpp
+#: modules/gdscript/gdscript.cpp platform/android/export/export_plugin.cpp
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#: scene/2d/polygon_2d.cpp scene/3d/area.cpp scene/3d/physics_joint.cpp
#: scene/3d/reflection_probe.cpp scene/main/canvas_layer.cpp
#: scene/resources/material.cpp servers/visual_server.cpp
msgid "Enable"
@@ -2634,6 +2647,58 @@ msgstr ""
#: editor/editor_export.cpp platform/android/export/export_plugin.cpp
#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Custom Template"
+msgstr "Pomakni Bezier ToÄke"
+
+#: editor/editor_export.cpp editor/project_export.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp
+msgid "Release"
+msgstr ""
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Binary Format"
+msgstr "Nevažeće ime."
+
+#: editor/editor_export.cpp
+msgid "64 Bits"
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Embed PCK"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Texture Format"
+msgstr "NaÄin Ravnala"
+
+#: editor/editor_export.cpp
+msgid "BPTC"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "S3TC"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "ETC"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "ETC2"
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "No BPTC Fallbacks"
+msgstr ""
+
+#: editor/editor_export.cpp platform/android/export/export_plugin.cpp
+#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
msgid "Custom debug template not found."
msgstr ""
@@ -2813,6 +2878,7 @@ msgid "Make Current"
msgstr "UÄini Aktualnim"
#: editor/editor_feature_profile.cpp editor/editor_node.cpp
+#: editor/import/resource_importer_scene.cpp
#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
msgid "Import"
msgstr "Uvezi"
@@ -2942,8 +3008,11 @@ msgstr "Uspjeh!"
msgid "Display Mode"
msgstr "NaÄin reprodukcije:"
-#: editor/editor_file_dialog.cpp main/main.cpp modules/csg/csg_shape.cpp
-#: modules/visual_script/visual_script_nodes.cpp
+#: editor/editor_file_dialog.cpp
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+#: editor/import/resource_importer_wav.cpp main/main.cpp
+#: modules/csg/csg_shape.cpp modules/visual_script/visual_script_nodes.cpp
#: modules/visual_script/visual_script_yield_nodes.cpp scene/2d/light_2d.cpp
#: scene/2d/physics_body_2d.cpp scene/2d/tile_map.cpp
#: scene/3d/baked_lightmap.cpp scene/3d/light.cpp scene/3d/physics_body.cpp
@@ -3079,7 +3148,9 @@ msgstr ""
msgid "Reimport Missing Imported Files"
msgstr ""
-#: editor/editor_help.cpp
+#: editor/editor_help.cpp scene/2d/camera_2d.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/resources/dynamic_font.cpp
+#: scene/resources/style_box.cpp
msgid "Top"
msgstr ""
@@ -3131,6 +3202,7 @@ msgid "Fonts"
msgstr ""
#: editor/editor_help.cpp editor/plugins/theme_editor_plugin.cpp
+#: platform/iphone/export/export.cpp
msgid "Icons"
msgstr ""
@@ -3290,7 +3362,9 @@ msgstr ""
msgid "Pin value [Disabled because '%s' is editor-only]"
msgstr ""
-#: editor/editor_inspector.cpp editor/scene_tree_dock.cpp
+#: editor/editor_inspector.cpp
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+#: editor/scene_tree_dock.cpp
#: modules/visual_script/visual_script_func_nodes.cpp
#: modules/visual_script/visual_script_nodes.cpp
#: modules/visual_script/visual_script_property_selector.cpp
@@ -3604,6 +3678,14 @@ msgid "Quick Open Script..."
msgstr ""
#: editor/editor_node.cpp
+msgid "Save & Reload"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Save changes to '%s' before reloading?"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "Save & Close"
msgstr ""
@@ -3714,6 +3796,10 @@ msgid "Open Project Manager?"
msgstr ""
#: editor/editor_node.cpp
+msgid "Save changes to the following scene(s) before reloading?"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "Save & Quit"
msgstr ""
@@ -3956,9 +4042,8 @@ msgid "Update Vital Only"
msgstr "Promijeni"
#: editor/editor_node.cpp
-#, fuzzy
-msgid "Translate Properties"
-msgstr "Omogućena Svojstva:"
+msgid "Localize Settings"
+msgstr ""
#: editor/editor_node.cpp
#, fuzzy
@@ -3975,8 +4060,8 @@ msgstr ""
#: editor/editor_node.cpp
#, fuzzy
-msgid "Capitalize Properties"
-msgstr "Omogućena Svojstva:"
+msgid "Default Property Name Style"
+msgstr "Mesh2D Pregled"
#: editor/editor_node.cpp
msgid "Default Float Step"
@@ -4544,7 +4629,9 @@ msgstr ""
msgid "Update"
msgstr ""
-#: editor/editor_plugin_settings.cpp
+#: editor/editor_plugin_settings.cpp platform/android/export/export_plugin.cpp
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp
msgid "Version"
msgstr ""
@@ -5520,7 +5607,7 @@ msgstr ""
msgid "Rect Custom Position"
msgstr ""
-#: editor/editor_settings.cpp
+#: editor/editor_settings.cpp platform/android/export/export_plugin.cpp
msgid "Screen"
msgstr ""
@@ -5545,6 +5632,19 @@ msgid "Editor SSL Certificates"
msgstr ""
#: editor/editor_settings.cpp
+msgid "HTTP Proxy"
+msgstr ""
+
+#: editor/editor_settings.cpp
+msgid "Host"
+msgstr ""
+
+#: editor/editor_settings.cpp editor/fileserver/editor_file_server.cpp
+#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp
+msgid "Port"
+msgstr ""
+
+#: editor/editor_settings.cpp
msgid "Project Manager"
msgstr ""
@@ -5585,7 +5685,8 @@ msgstr ""
msgid "String Color"
msgstr ""
-#: editor/editor_settings.cpp
+#: editor/editor_settings.cpp platform/javascript/export/export.cpp
+#: platform/uwp/export/export.cpp
msgid "Background Color"
msgstr ""
@@ -5752,22 +5853,6 @@ msgid "Starting the download..."
msgstr ""
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "HTTP Proxy"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Host"
-msgstr ""
-
-#: editor/export_template_manager.cpp editor/fileserver/editor_file_server.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp main/main.cpp
-#: modules/mono/mono_gd/gd_mono.cpp
-msgid "Port"
-msgstr ""
-
-#: editor/export_template_manager.cpp
msgid "Error requesting URL:"
msgstr ""
@@ -6011,6 +6096,7 @@ msgstr ""
#: editor/fileserver/editor_file_server.cpp
#: editor/plugins/version_control_editor_plugin.cpp
+#: platform/uwp/export/export.cpp platform/windows/export/export.cpp
msgid "Password"
msgstr ""
@@ -6380,6 +6466,113 @@ msgstr ""
msgid "Use Ambient"
msgstr ""
+#: editor/import/resource_importer_bitmask.cpp
+#, fuzzy
+msgid "Create From"
+msgstr "Brisanje Profila"
+
+#: editor/import/resource_importer_bitmask.cpp
+#: servers/audio/effects/audio_effect_compressor.cpp
+msgid "Threshold"
+msgstr ""
+
+#: editor/import/resource_importer_csv_translation.cpp
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_scene.cpp
+#: editor/import/resource_importer_texture.cpp
+#: editor/import/resource_importer_wav.cpp scene/3d/gi_probe.cpp
+#, fuzzy
+msgid "Compress"
+msgstr "Komponente"
+
+#: editor/import/resource_importer_csv_translation.cpp
+msgid "Delimiter"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+msgid "No BPTC If RGB"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/sprite_3d.cpp
+#: scene/resources/material.cpp scene/resources/particles_material.cpp
+#: scene/resources/texture.cpp
+msgid "Flags"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/animation/tween.cpp
+#: scene/resources/texture.cpp
+msgid "Repeat"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/2d/light_2d.cpp
+#: scene/gui/control.cpp scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Filter"
+msgstr "Filtriraj signale"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Mipmaps"
+msgstr "Signali"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+msgid "Anisotropic"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+msgid "sRGB"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+msgid "Slices"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
+#: scene/resources/style_box.cpp
+#, fuzzy
+msgid "Horizontal"
+msgstr "Makni Vodoravne Upute"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
+#: scene/resources/style_box.cpp
+msgid "Vertical"
+msgstr ""
+
+#: editor/import/resource_importer_obj.cpp
+#, fuzzy
+msgid "Generate Tangents"
+msgstr "Pomakni Bezier ToÄke"
+
+#: editor/import/resource_importer_obj.cpp
+#, fuzzy
+msgid "Scale Mesh"
+msgstr "Anim Skaliraj KljuÄeve"
+
+#: editor/import/resource_importer_obj.cpp
+msgid "Offset Mesh"
+msgstr ""
+
+#: editor/import/resource_importer_obj.cpp
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Octahedral Compression"
+msgstr "Collision"
+
+#: editor/import/resource_importer_obj.cpp
+msgid "Optimize Mesh Flags"
+msgstr ""
+
#: editor/import/resource_importer_scene.cpp
msgid "Import as Single Scene"
msgstr ""
@@ -6420,6 +6613,149 @@ msgstr ""
msgid "Import as Multiple Scenes+Materials"
msgstr ""
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Nodes"
+msgstr "Brisati odabrani kljuÄ/odabrane kljuÄeve"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Root Type"
+msgstr "Promijeni vrstu baze:"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Root Name"
+msgstr "Naziv ÄŒvora(node):"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Root Scale"
+msgstr "Dubina"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Custom Script"
+msgstr "Pomakni Bezier ToÄke"
+
+#: editor/import/resource_importer_scene.cpp scene/resources/texture.cpp
+msgid "Storage"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Use Legacy Names"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+msgid "Materials"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Location"
+msgstr "Animacija"
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Keep On Reimport"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+msgid "Meshes"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Ensure Tangents"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Light Baking"
+msgstr "Desno Linearno"
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Lightmap Texel Size"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+msgid "Skins"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Use Named Skins"
+msgstr "Signali"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "External Files"
+msgstr "Otvori datoteku"
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Store In Subdir"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Filter Script"
+msgstr "Filtriraj signale"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Keep Custom Tracks"
+msgstr "Anim Promijeni Transform"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Optimizer"
+msgstr "Optimiraj"
+
+#: editor/import/resource_importer_scene.cpp main/main.cpp
+#: modules/mono/mono_gd/gd_mono.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp scene/2d/camera_2d.cpp scene/2d/light_2d.cpp
+#: scene/2d/navigation_polygon.cpp scene/2d/ray_cast_2d.cpp scene/2d/sprite.cpp
+#: scene/2d/y_sort.cpp scene/3d/audio_stream_player_3d.cpp
+#: scene/3d/baked_lightmap.cpp scene/3d/interpolated_camera.cpp
+#: scene/3d/light.cpp scene/3d/navigation_mesh_instance.cpp
+#: scene/3d/physics_joint.cpp scene/3d/ray_cast.cpp scene/3d/sprite_3d.cpp
+#: scene/gui/graph_edit.cpp scene/gui/rich_text_label.cpp
+#: scene/resources/curve.cpp scene/resources/environment.cpp
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Enabled"
+msgstr "Omogući"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Max Linear Error"
+msgstr "Najveća linearna pogreška:"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Max Angular Error"
+msgstr "Najveća kutna pogreška:"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Max Angle"
+msgstr "Vrijednost:"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Remove Unused Tracks"
+msgstr "Ukloni Stazu Animacije"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Clips"
+msgstr "IsjeÄci Animacija"
+
+#: editor/import/resource_importer_scene.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/particles_2d.cpp scene/3d/area.cpp scene/3d/cpu_particles.cpp
+#: scene/3d/particles.cpp scene/resources/environment.cpp
+msgid "Amount"
+msgstr ""
+
#: editor/import/resource_importer_scene.cpp
#: editor/plugins/mesh_library_editor_plugin.cpp
msgid "Import Scene"
@@ -6461,12 +6797,144 @@ msgstr ""
msgid "Saving..."
msgstr ""
+#: editor/import/resource_importer_texture.cpp scene/resources/texture.cpp
+msgid "Lossy Quality"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "HDR Mode"
+msgstr "NaÄin Ravnala"
+
+#: editor/import/resource_importer_texture.cpp
+msgid "BPTC LDR"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/mesh_instance_2d.cpp scene/2d/multimesh_instance_2d.cpp
+#: scene/2d/particles_2d.cpp scene/2d/sprite.cpp scene/resources/style_box.cpp
+msgid "Normal Map"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Process"
+msgstr "Uspjeh!"
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Fix Alpha Border"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Premult Alpha"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Hdr As Srgb"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Invert Color"
+msgstr "Preimenuj Autoload"
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Normal Map Invert Y"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
+#: scene/audio/audio_stream_player.cpp scene/gui/video_player.cpp
+msgid "Stream"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Size Limit"
+msgstr "NaÄin reprodukcije:"
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Detect 3D"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "SVG"
+msgstr ""
+
#: editor/import/resource_importer_texture.cpp
msgid ""
"Warning, no suitable PC VRAM compression enabled in Project Settings. This "
"texture will not display correctly on PC."
msgstr ""
+#: editor/import/resource_importer_texture_atlas.cpp
+msgid "Atlas File"
+msgstr ""
+
+#: editor/import/resource_importer_texture_atlas.cpp
+#, fuzzy
+msgid "Import Mode"
+msgstr "NaÄin reprodukcije:"
+
+#: editor/import/resource_importer_texture_atlas.cpp
+#, fuzzy
+msgid "Crop To Region"
+msgstr "Regija"
+
+#: editor/import/resource_importer_texture_atlas.cpp
+msgid "Trim Alpha Border From Region"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp scene/2d/physics_body_2d.cpp
+msgid "Force"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+msgid "8 Bit"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp main/main.cpp
+#: modules/mono/editor/csharp_project.cpp modules/mono/mono_gd/gd_mono.cpp
+msgid "Mono"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+#, fuzzy
+msgid "Max Rate"
+msgstr "Vrijednost:"
+
+#: editor/import/resource_importer_wav.cpp
+#, fuzzy
+msgid "Max Rate Hz"
+msgstr "Vrijednost:"
+
+#: editor/import/resource_importer_wav.cpp
+msgid "Trim"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+#, fuzzy
+msgid "Normalize"
+msgstr "Promijeni vrstu baze:"
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+#, fuzzy
+msgid "Loop Mode"
+msgstr "NaÄin Interpolacije"
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+#, fuzzy
+msgid "Loop Begin"
+msgstr "NaÄin Interpolacije"
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+#, fuzzy
+msgid "Loop End"
+msgstr "NaÄin Interpolacije"
+
#: editor/import_defaults_editor.cpp
#, fuzzy
msgid "Select Importer"
@@ -6538,6 +7006,27 @@ msgid "Failed to load resource."
msgstr ""
#: editor/inspector_dock.cpp
+msgid "Property Name Style"
+msgstr ""
+
+#: editor/inspector_dock.cpp scene/gui/color_picker.cpp
+msgid "Raw"
+msgstr ""
+
+#: editor/inspector_dock.cpp
+#, fuzzy
+msgid "Capitalized"
+msgstr "Omogućena Svojstva:"
+
+#: editor/inspector_dock.cpp
+msgid "Localized"
+msgstr ""
+
+#: editor/inspector_dock.cpp
+msgid "Localization not available for current language."
+msgstr ""
+
+#: editor/inspector_dock.cpp
#, fuzzy
msgid "Copy Properties"
msgstr "Omogućena Svojstva:"
@@ -7570,18 +8059,24 @@ msgid "License (Z-A)"
msgstr "Licenca (Z-A)"
#: editor/plugins/asset_library_editor_plugin.cpp
+msgctxt "Pagination"
msgid "First"
msgstr ""
-#: editor/plugins/asset_library_editor_plugin.cpp scene/gui/control.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgctxt "Pagination"
msgid "Previous"
-msgstr ""
+msgstr "Idi na prethodni korak"
-#: editor/plugins/asset_library_editor_plugin.cpp scene/gui/control.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgctxt "Pagination"
msgid "Next"
-msgstr ""
+msgstr "Premjesti Okvir"
#: editor/plugins/asset_library_editor_plugin.cpp
+msgctxt "Pagination"
msgid "Last"
msgstr ""
@@ -7815,19 +8310,19 @@ msgid ""
"margins."
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Top Left"
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Top Right"
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Bottom Right"
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Bottom Left"
msgstr ""
@@ -8532,6 +9027,19 @@ msgstr ""
msgid "Gradient Edited"
msgstr ""
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+msgid "Swap GradientTexture2D Fill Points"
+msgstr ""
+
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+msgid "Swap Gradient Fill Points"
+msgstr ""
+
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+#, fuzzy
+msgid "Toggle Grid Snap"
+msgstr "Prikaži/sakrij favorite"
+
#: editor/plugins/item_list_editor_plugin.cpp
msgid "Item %d"
msgstr ""
@@ -8745,8 +9253,8 @@ msgid ""
"%s"
msgstr ""
-#: editor/plugins/mesh_library_editor_plugin.cpp modules/gridmap/grid_map.cpp
-msgid "Mesh Library"
+#: editor/plugins/mesh_library_editor_plugin.cpp
+msgid "MeshLibrary"
msgstr ""
#: editor/plugins/mesh_library_editor_plugin.cpp
@@ -9725,8 +10233,8 @@ msgstr ""
msgid "Source"
msgstr ""
-#: editor/plugins/script_text_editor.cpp scene/3d/interpolated_camera.cpp
-#: scene/animation/skeleton_ik.cpp
+#: editor/plugins/script_text_editor.cpp platform/uwp/export/export.cpp
+#: scene/3d/interpolated_camera.cpp scene/animation/skeleton_ik.cpp
msgid "Target"
msgstr ""
@@ -10690,7 +11198,9 @@ msgstr ""
#: editor/plugins/sprite_frames_editor_plugin.cpp
#: modules/gltf/gltf_animation.cpp modules/minimp3/audio_stream_mp3.cpp
-#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp scene/2d/path_2d.cpp
+#: modules/minimp3/resource_importer_mp3.cpp
+#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp
+#: modules/stb_vorbis/resource_importer_ogg_vorbis.cpp scene/2d/path_2d.cpp
#: scene/3d/path.cpp scene/resources/animation.cpp scene/resources/material.cpp
msgid "Loop"
msgstr ""
@@ -11575,8 +12085,9 @@ msgstr ""
msgid "Priority"
msgstr ""
-#: editor/plugins/tile_set_editor_plugin.cpp main/main.cpp scene/gui/button.cpp
-#: scene/gui/item_list.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp main/main.cpp
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#: scene/gui/button.cpp scene/gui/item_list.cpp
msgid "Icon"
msgstr ""
@@ -12881,10 +13392,6 @@ msgid ""
msgstr ""
#: editor/project_export.cpp
-msgid "Release"
-msgstr ""
-
-#: editor/project_export.cpp
msgid "Exporting All"
msgstr ""
@@ -14655,6 +15162,7 @@ msgid "Change AudioStreamPlayer3D Emission Angle"
msgstr ""
#: editor/spatial_editor_gizmos.cpp modules/gltf/gltf_node.cpp
+#: platform/osx/export/export.cpp
msgid "Camera"
msgstr ""
@@ -14925,7 +15433,8 @@ msgstr ""
msgid "Use Nvidia Rect Flicker Workaround"
msgstr ""
-#: main/main.cpp platform/uwp/os_uwp.cpp
+#: main/main.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp platform/uwp/os_uwp.cpp
msgid "Display"
msgstr ""
@@ -14981,19 +15490,6 @@ msgstr ""
msgid "Allowed"
msgstr ""
-#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp scene/2d/camera_2d.cpp
-#: scene/2d/light_2d.cpp scene/2d/navigation_polygon.cpp
-#: scene/2d/ray_cast_2d.cpp scene/2d/sprite.cpp scene/2d/y_sort.cpp
-#: scene/3d/audio_stream_player_3d.cpp scene/3d/baked_lightmap.cpp
-#: scene/3d/interpolated_camera.cpp scene/3d/light.cpp
-#: scene/3d/navigation_mesh_instance.cpp scene/3d/ray_cast.cpp
-#: scene/3d/sprite_3d.cpp scene/gui/graph_edit.cpp
-#: scene/gui/rich_text_label.cpp scene/resources/curve.cpp
-#: scene/resources/environment.cpp
-#, fuzzy
-msgid "Enabled"
-msgstr "Omogući"
-
#: main/main.cpp
msgid "Intended Usage"
msgstr ""
@@ -15022,13 +15518,14 @@ msgstr ""
msgid "Handheld"
msgstr ""
-#: main/main.cpp
+#: main/main.cpp platform/javascript/export/export.cpp
+#: platform/uwp/export/export.cpp
#, fuzzy
msgid "Orientation"
msgstr "Optimiraj animaciju"
#: main/main.cpp scene/gui/scroll_container.cpp scene/gui/text_edit.cpp
-#: scene/main/scene_tree.cpp
+#: scene/main/scene_tree.cpp scene/register_scene_types.cpp
#, fuzzy
msgid "Common"
msgstr "Zajednica"
@@ -15069,7 +15566,7 @@ msgstr ""
#: main/main.cpp
#, fuzzy
-msgid "Frame Delay (msec)"
+msgid "Frame Delay Msec"
msgstr "Vrijeme/vremena: "
#: main/main.cpp
@@ -15188,11 +15685,6 @@ msgstr ""
msgid "Tooltip Position Offset"
msgstr ""
-#: main/main.cpp modules/mono/editor/csharp_project.cpp
-#: modules/mono/mono_gd/gd_mono.cpp
-msgid "Mono"
-msgstr ""
-
#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp
msgid "Debugger Agent"
msgstr ""
@@ -15738,7 +16230,7 @@ msgstr ""
msgid "Intensity"
msgstr ""
-#: modules/gltf/gltf_light.cpp scene/2d/light_2d.cpp
+#: modules/gltf/gltf_light.cpp scene/2d/light_2d.cpp scene/3d/light.cpp
#, fuzzy
msgid "Range"
msgstr "Promijeni"
@@ -15875,11 +16367,6 @@ msgstr ""
msgid "Use Named Skin Binds"
msgstr ""
-#: modules/gltf/gltf_state.cpp scene/3d/physics_joint.cpp
-#, fuzzy
-msgid "Nodes"
-msgstr "Brisati odabrani kljuÄ/odabrane kljuÄeve"
-
#: modules/gltf/gltf_state.cpp
msgid "Buffer Views"
msgstr ""
@@ -15889,14 +16376,6 @@ msgid "Accessors"
msgstr ""
#: modules/gltf/gltf_state.cpp
-msgid "Meshes"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp
-msgid "Materials"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp
#, fuzzy
msgid "Scene Name"
msgstr "Kreiraj Scenu"
@@ -15912,15 +16391,11 @@ msgstr "Premjesti Ävor(node)"
msgid "Textures"
msgstr ""
-#: modules/gltf/gltf_state.cpp
+#: modules/gltf/gltf_state.cpp platform/uwp/export/export.cpp
msgid "Images"
msgstr ""
#: modules/gltf/gltf_state.cpp
-msgid "Skins"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp
msgid "Cameras"
msgstr ""
@@ -15951,10 +16426,14 @@ msgid "Src Image"
msgstr ""
#: modules/gridmap/grid_map.cpp
-msgid "Physics Material"
+msgid "Mesh Library"
msgstr ""
#: modules/gridmap/grid_map.cpp
+msgid "Physics Material"
+msgstr ""
+
+#: modules/gridmap/grid_map.cpp scene/3d/visual_instance.cpp
msgid "Use In Baked Light"
msgstr ""
@@ -15985,6 +16464,7 @@ msgstr "Premjesti Ävor(node)"
#: modules/gridmap/grid_map.cpp scene/2d/collision_object_2d.cpp
#: scene/2d/tile_map.cpp scene/3d/collision_object.cpp scene/3d/soft_body.cpp
+#: scene/resources/material.cpp
msgid "Mask"
msgstr ""
@@ -16168,7 +16648,9 @@ msgid "Ultra Quality Ray Count"
msgstr ""
#: modules/minimp3/audio_stream_mp3.cpp
+#: modules/minimp3/resource_importer_mp3.cpp
#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp
+#: modules/stb_vorbis/resource_importer_ogg_vorbis.cpp
#, fuzzy
msgid "Loop Offset"
msgstr "NaÄin Interpolacije"
@@ -17229,6 +17711,178 @@ msgid "The package must have at least one '.' separator."
msgstr ""
#: platform/android/export/export_plugin.cpp
+msgid "Use Custom Build"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Export Format"
+msgstr "Izvoz"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Keystore"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Debug User"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+msgid "Debug Password"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Release User"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Release Password"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "One Click Deploy"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Clear Previous Install"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp scene/resources/shader.cpp
+msgid "Code"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Min SDK"
+msgstr "Glavna skripta:"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Target SDK"
+msgstr "Premjesti Ävor(node)"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+msgid "Package"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Unique Name"
+msgstr "Naziv ÄŒvora(node):"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Signed"
+msgstr "Signal:"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Classify As Game"
+msgstr "Naziv ÄŒvora(node):"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Retain Data On Uninstall"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Exclude From Recents"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Graphics"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "OpenGL Debug"
+msgstr "Otvori"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "XR Features"
+msgstr "Omogućene ZnaÄajke:"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "XR Mode"
+msgstr "NaÄin Interpolacije"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Hand Tracking"
+msgstr "Dodati stazu"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Hand Tracking Frequency"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Passthrough"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Immersive Mode"
+msgstr "NaÄin Ravnala"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Support Small"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Support Normal"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Support Large"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Support Xlarge"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "User Data Backup"
+msgstr "Otvori datoteku"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Allow"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Command Line"
+msgstr "Zajednica"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Extra Args"
+msgstr "Dodatni argumenti poziva:"
+
+#: platform/android/export/export_plugin.cpp
+msgid "APK Expansion"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Salt"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Public Key"
+msgstr "Duplicirani kljuÄ(evi)"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Permissions"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Custom Permissions"
+msgstr "Collision"
+
+#: platform/android/export/export_plugin.cpp
msgid "Select device from the list"
msgstr ""
@@ -17514,6 +18168,172 @@ msgid "The character '%s' is not allowed in Identifier."
msgstr ""
#: platform/iphone/export/export.cpp
+msgid "App Store Team ID"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Provisioning Profile UUID Debug"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Code Sign Identity Debug"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Export Method Debug"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Provisioning Profile UUID Release"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Code Sign Identity Release"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Export Method Release"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Targeted Device Family"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Info"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Identifier"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Signature"
+msgstr "Signal:"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Short Version"
+msgstr "Uvoz Profila"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Copyright"
+msgstr "Kopiraj"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Capabilities"
+msgstr "Omogućena Svojstva:"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Access Wi-Fi"
+msgstr "Uspjeh!"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Push Notifications"
+msgstr "Zalijepi Animaciju"
+
+#: platform/iphone/export/export.cpp scene/3d/baked_lightmap.cpp
+#, fuzzy
+msgid "User Data"
+msgstr "Otvori datoteku"
+
+#: platform/iphone/export/export.cpp
+msgid "Accessible From Files App"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Accessible From Itunes Sharing"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Privacy"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Camera Usage Description"
+msgstr "Opis"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Microphone Usage Description"
+msgstr "Opis"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Photolibrary Usage Description"
+msgstr "Opis"
+
+#: platform/iphone/export/export.cpp
+msgid "iPhone 120 X 120"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPhone 180 X 180"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 76 X 76"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 152 X 152"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 167 X 167"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "App Store 1024 X 1024"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Spotlight 40 X 40"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Spotlight 80 X 80"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Storyboard"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Use Launch Screen Storyboard"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Image Scale Mode"
+msgstr "Dubina"
+
+#: platform/iphone/export/export.cpp
+msgid "Custom Image @2x"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Custom Image @3x"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Use Custom BG Color"
+msgstr "Funkcije"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Custom BG Color"
+msgstr "Funkcije"
+
+#: platform/iphone/export/export.cpp
msgid "App Store Team ID not specified - cannot configure the project."
msgstr ""
@@ -17551,6 +18371,80 @@ msgid "Could not read file:"
msgstr "Trenutni Profil:"
#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Variant"
+msgstr "Opis:"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Export Type"
+msgstr "Izvoz"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "VRAM Texture Compression"
+msgstr "Collision"
+
+#: platform/javascript/export/export.cpp
+msgid "For Desktop"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "For Mobile"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Html"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Export Icon"
+msgstr "Izvoz"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Custom Html Shell"
+msgstr "Pomakni Bezier ToÄke"
+
+#: platform/javascript/export/export.cpp
+msgid "Head Include"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Canvas Resize Policy"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Focus Canvas On Start"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Experimental Virtual Keyboard"
+msgstr "Filtriraj signale"
+
+#: platform/javascript/export/export.cpp
+msgid "Progressive Web App"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Offline Page"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 144 X 144"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 180 X 180"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 512 X 512"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
msgid "Could not read HTML shell:"
msgstr ""
@@ -17659,6 +18553,188 @@ msgid "Unknown object type."
msgstr ""
#: platform/osx/export/export.cpp
+msgid "App Category"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "High Res"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Location Usage Description"
+msgstr "Opis"
+
+#: platform/osx/export/export.cpp
+msgid "Address Book Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Calendar Usage Description"
+msgstr "Opis"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Photos Library Usage Description"
+msgstr "Opis"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Desktop Folder Usage Description"
+msgstr "Opis"
+
+#: platform/osx/export/export.cpp
+msgid "Documents Folder Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Downloads Folder Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Network Volumes Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Removable Volumes Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#, fuzzy
+msgid "Codesign"
+msgstr "Brisati odabrani kljuÄ/odabrane kljuÄeve"
+
+#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
+#: platform/windows/export/export.cpp
+msgid "Identity"
+msgstr ""
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#, fuzzy
+msgid "Timestamp"
+msgstr "Vrijeme:"
+
+#: platform/osx/export/export.cpp
+msgid "Hardened Runtime"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Replace Existing Signature"
+msgstr "Zamijeni sve"
+
+#: platform/osx/export/export.cpp
+msgid "Entitlements"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Custom File"
+msgstr "Pomakni Bezier ToÄke"
+
+#: platform/osx/export/export.cpp
+msgid "Allow JIT Code Execution"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Allow Unsigned Executable Memory"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Allow Dyld Environment Variables"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Disable Library Validation"
+msgstr "Collision"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Audio Input"
+msgstr "Preimenuj zvuÄnu sabirnicu"
+
+#: platform/osx/export/export.cpp
+msgid "Address Book"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Calendars"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Photos Library"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Apple Events"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Debugging"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "App Sandbox"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Network Server"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Network Client"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Device Usb"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Device Bluetooth"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Files Downloads"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Files Pictures"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Files Music"
+msgstr "Datoteka:"
+
+#: platform/osx/export/export.cpp
+msgid "Files Movies"
+msgstr ""
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#, fuzzy
+msgid "Custom Options"
+msgstr "Opcije Klase"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Notarization"
+msgstr "Navigacija"
+
+#: platform/osx/export/export.cpp
+msgid "Apple ID Name"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Apple ID Password"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Apple Team ID"
+msgstr ""
+
+#: platform/osx/export/export.cpp
msgid ""
"Note: The notarization process generally takes less than an hour. When the "
"process is completed, you'll receive an email."
@@ -17848,6 +18924,126 @@ msgid "Force Builtin Codesign"
msgstr ""
#: platform/uwp/export/export.cpp
+msgid "Architecture"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Display Name"
+msgstr "NaÄin reprodukcije:"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Short Name"
+msgstr "Promijeni Ime Animacije:"
+
+#: platform/uwp/export/export.cpp
+msgid "Publisher"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Publisher Display Name"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Product Guid"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Publisher Guid"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Signing"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Certificate"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Algorithm"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Major"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Minor"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Build"
+msgstr "NaÄin Ravnala"
+
+#: platform/uwp/export/export.cpp
+msgid "Revision"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Landscape"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Portrait"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Landscape Flipped"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Portrait Flipped"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Store Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 44 X 44 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 71 X 71 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 150 X 150 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 310 X 310 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Wide 310 X 150 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Splash Screen"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Tiles"
+msgstr "Datoteka:"
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Square 150 X 150"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Wide 310 X 150"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Square 310 X 310"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
msgid "Invalid package short name."
msgstr ""
@@ -17913,11 +19109,47 @@ msgid "Debug Certificate"
msgstr ""
#: platform/uwp/export/export.cpp
-msgid "Debug Password"
+msgid "Debug Algorithm"
msgstr ""
-#: platform/uwp/export/export.cpp
-msgid "Debug Algorithm"
+#: platform/windows/export/export.cpp
+msgid "Identity Type"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Timestamp Server URL"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Digest Algorithm"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "File Version"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Product Version"
+msgstr "Nevažeće ime."
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Company Name"
+msgstr "Naziv ÄŒvora(node):"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Product Name"
+msgstr "Naziv ÄŒvora(node):"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "File Description"
+msgstr "Opis"
+
+#: platform/windows/export/export.cpp
+msgid "Trademarks"
msgstr ""
#: platform/windows/export/export.cpp
@@ -17989,12 +19221,14 @@ msgstr ""
msgid "Centered"
msgstr "Premjesti Ävor(node)"
-#: scene/2d/animated_sprite.cpp scene/2d/camera_2d.cpp scene/2d/light_2d.cpp
+#: scene/2d/animated_sprite.cpp scene/2d/camera_2d.cpp
+#: scene/2d/cpu_particles_2d.cpp scene/2d/light_2d.cpp
#: scene/2d/parallax_background.cpp scene/2d/parallax_layer.cpp
#: scene/2d/path_2d.cpp scene/2d/polygon_2d.cpp scene/2d/sprite.cpp
-#: scene/3d/path.cpp scene/3d/physics_body.cpp scene/3d/sprite_3d.cpp
-#: scene/gui/graph_node.cpp scene/gui/rich_text_effect.cpp
-#: scene/main/canvas_layer.cpp scene/resources/material.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/path.cpp scene/3d/physics_body.cpp
+#: scene/3d/sprite_3d.cpp scene/gui/graph_node.cpp
+#: scene/gui/rich_text_effect.cpp scene/main/canvas_layer.cpp
+#: scene/resources/material.cpp scene/resources/particles_material.cpp
#: scene/resources/style_box.cpp
msgid "Offset"
msgstr ""
@@ -18062,11 +19296,6 @@ msgstr "Premjesti Audio Bus"
msgid "Override"
msgstr ""
-#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
-#: scene/audio/audio_stream_player.cpp scene/gui/video_player.cpp
-msgid "Stream"
-msgstr ""
-
#: scene/2d/audio_stream_player_2d.cpp scene/audio/audio_stream_player.cpp
#: scene/gui/video_player.cpp servers/audio/effects/audio_effect_amplify.cpp
msgid "Volume dB"
@@ -18091,12 +19320,12 @@ msgid "Stream Paused"
msgstr ""
#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
-#: scene/3d/reflection_probe.cpp scene/3d/visual_instance.cpp
-#: scene/resources/material.cpp
+#: scene/3d/light.cpp scene/3d/reflection_probe.cpp
+#: scene/3d/visual_instance.cpp scene/resources/material.cpp
msgid "Max Distance"
msgstr ""
-#: scene/2d/audio_stream_player_2d.cpp
+#: scene/2d/audio_stream_player_2d.cpp scene/3d/light.cpp
#, fuzzy
msgid "Attenuation"
msgstr "Animacija"
@@ -18149,6 +19378,24 @@ msgstr ""
msgid "Limit"
msgstr ""
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/style_box.cpp
+#, fuzzy
+msgid "Left"
+msgstr "Lijevo Å iroko"
+
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/style_box.cpp
+#, fuzzy
+msgid "Right"
+msgstr "Desno Å iroko"
+
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/dynamic_font.cpp scene/resources/style_box.cpp
+#, fuzzy
+msgid "Bottom"
+msgstr "Preimenuj Autoload"
+
#: scene/2d/camera_2d.cpp
msgid "Smoothed"
msgstr ""
@@ -18351,12 +19598,6 @@ msgstr ""
msgid "Emitting"
msgstr ""
-#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp scene/3d/area.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
-#: scene/resources/environment.cpp
-msgid "Amount"
-msgstr ""
-
#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp
#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
msgid "Lifetime"
@@ -18417,18 +19658,13 @@ msgstr ""
#: scene/2d/mesh_instance_2d.cpp scene/2d/multimesh_instance_2d.cpp
#: scene/2d/particles_2d.cpp scene/2d/polygon_2d.cpp scene/2d/sprite.cpp
#: scene/3d/sprite_3d.cpp scene/gui/nine_patch_rect.cpp
-#: scene/gui/texture_rect.cpp scene/resources/sky.cpp
-#: scene/resources/style_box.cpp scene/resources/visual_shader_nodes.cpp
+#: scene/gui/texture_rect.cpp scene/resources/material.cpp
+#: scene/resources/sky.cpp scene/resources/style_box.cpp
+#: scene/resources/visual_shader_nodes.cpp
#, fuzzy
msgid "Texture"
msgstr "Budućnost"
-#: scene/2d/cpu_particles_2d.cpp scene/2d/mesh_instance_2d.cpp
-#: scene/2d/multimesh_instance_2d.cpp scene/2d/particles_2d.cpp
-#: scene/2d/sprite.cpp scene/resources/style_box.cpp
-msgid "Normal Map"
-msgstr ""
-
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
msgid "Emission Shape"
@@ -18448,9 +19684,8 @@ msgid "Normals"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/3d/sprite_3d.cpp scene/resources/material.cpp
-#: scene/resources/particles_material.cpp scene/resources/texture.cpp
-msgid "Flags"
+#: scene/resources/particles_material.cpp
+msgid "Align Y"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
@@ -18471,6 +19706,11 @@ msgid "Initial Velocity"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Velocity Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp servers/physics_2d_server.cpp
#: servers/physics_server.cpp
msgid "Angular Velocity"
@@ -18478,6 +19718,12 @@ msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Velocity Curve"
+msgstr "UÄini Aktualnim"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
msgid "Orbit Velocity"
msgstr ""
@@ -18489,6 +19735,23 @@ msgstr "Linearno"
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Accel"
+msgstr "Uspjeh!"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Accel Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Accel Curve"
+msgstr "Dubina"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
msgid "Radial Accel"
msgstr ""
@@ -18498,19 +19761,54 @@ msgid "Tangential Accel"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/2d/joints_2d.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/vehicle_body.cpp
-#: scene/resources/particles_material.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/physics_joint.cpp
+#: scene/3d/vehicle_body.cpp scene/resources/particles_material.cpp
#: servers/audio/effects/audio_effect_reverb.cpp
msgid "Damping"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+msgid "Damping Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Damping Curve"
+msgstr "Dubina"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp scene/3d/light.cpp
+#: scene/resources/particles_material.cpp
msgid "Angle"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+msgid "Angle Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Angle Curve"
+msgstr "Dubina"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#, fuzzy
+msgid "Scale Amount"
+msgstr "Unesite kljuÄ ovdje"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+msgid "Scale Amount Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+msgid "Scale Amount Curve"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
msgid "Color Ramp"
msgstr ""
@@ -18525,6 +19823,46 @@ msgstr ""
msgid "Hue Variation"
msgstr "Opis:"
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Variation"
+msgstr "Opis:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Variation Random"
+msgstr "Opis:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Variation Curve"
+msgstr "Opis:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Speed Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Speed Curve"
+msgstr "UÄini Aktualnim"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Offset Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Offset Curve"
+msgstr "Dubina"
+
#: scene/2d/joints_2d.cpp
msgid "Node A and Node B must be PhysicsBody2Ds"
msgstr ""
@@ -18556,6 +19894,7 @@ msgid "Node B"
msgstr "Brisati odabrani kljuÄ/odabrane kljuÄeve"
#: scene/2d/joints_2d.cpp scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp
+#: scene/3d/light.cpp scene/3d/physics_joint.cpp
#: scene/resources/environment.cpp
msgid "Bias"
msgstr ""
@@ -18565,7 +19904,7 @@ msgstr ""
msgid "Disable Collision"
msgstr "Collision"
-#: scene/2d/joints_2d.cpp
+#: scene/2d/joints_2d.cpp scene/3d/physics_joint.cpp
msgid "Softness"
msgstr ""
@@ -18582,7 +19921,7 @@ msgstr ""
msgid "Rest Length"
msgstr ""
-#: scene/2d/joints_2d.cpp scene/3d/vehicle_body.cpp
+#: scene/2d/joints_2d.cpp scene/3d/physics_joint.cpp scene/3d/vehicle_body.cpp
msgid "Stiffness"
msgstr ""
@@ -18602,7 +19941,7 @@ msgid "Texture Scale"
msgstr ""
#: scene/2d/light_2d.cpp scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp
-#: scene/resources/environment.cpp scene/resources/sky.cpp
+#: scene/3d/light.cpp scene/resources/environment.cpp scene/resources/sky.cpp
msgid "Energy"
msgstr ""
@@ -18639,12 +19978,6 @@ msgstr ""
msgid "Gradient Length"
msgstr "Mesh2D Pregled"
-#: scene/2d/light_2d.cpp scene/gui/control.cpp
-#: scene/resources/navigation_mesh.cpp
-#, fuzzy
-msgid "Filter"
-msgstr "Filtriraj signale"
-
#: scene/2d/light_2d.cpp
#, fuzzy
msgid "Filter Smooth"
@@ -19032,10 +20365,6 @@ msgid "Applied Forces"
msgstr ""
#: scene/2d/physics_body_2d.cpp
-msgid "Force"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp
msgid "Torque"
msgstr ""
@@ -19048,7 +20377,7 @@ msgid "Sync To Physics"
msgstr ""
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-msgid "Moving platform"
+msgid "Moving Platform"
msgstr ""
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
@@ -19057,7 +20386,7 @@ msgstr ""
#: scene/2d/physics_body_2d.cpp scene/2d/touch_screen_button.cpp
#: scene/3d/physics_body.cpp scene/gui/texture_button.cpp
-#: scene/resources/line_shape_2d.cpp
+#: scene/resources/line_shape_2d.cpp scene/resources/material.cpp
msgid "Normal"
msgstr ""
@@ -19276,6 +20605,34 @@ msgid ""
"as parent."
msgstr ""
+#: scene/2d/visibility_notifier_2d.cpp scene/3d/visibility_notifier.cpp
+#, fuzzy
+msgid "Pause Animations"
+msgstr "Zalijepi Animaciju"
+
+#: scene/2d/visibility_notifier_2d.cpp scene/3d/visibility_notifier.cpp
+msgid "Freeze Bodies"
+msgstr ""
+
+#: scene/2d/visibility_notifier_2d.cpp
+#, fuzzy
+msgid "Pause Particles"
+msgstr "Zalijepi Animaciju"
+
+#: scene/2d/visibility_notifier_2d.cpp
+#, fuzzy
+msgid "Pause Animated Sprites"
+msgstr "Zalijepi Animaciju"
+
+#: scene/2d/visibility_notifier_2d.cpp
+#, fuzzy
+msgid "Process Parent"
+msgstr "NaÄin Interpolacije"
+
+#: scene/2d/visibility_notifier_2d.cpp
+msgid "Physics Process Parent"
+msgstr ""
+
#: scene/3d/area.cpp
msgid "Reverb Bus"
msgstr ""
@@ -19367,6 +20724,7 @@ msgid "Attenuation Filter"
msgstr ""
#: scene/3d/audio_stream_player_3d.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
#: servers/audio/effects/audio_effect_filter.cpp
msgid "Cutoff Hz"
msgstr ""
@@ -19408,11 +20766,6 @@ msgid "Octree"
msgstr ""
#: scene/3d/baked_lightmap.cpp
-#, fuzzy
-msgid "User Data"
-msgstr "Otvori datoteku"
-
-#: scene/3d/baked_lightmap.cpp
msgid "Finding meshes and lights"
msgstr ""
@@ -19654,6 +21007,16 @@ msgid "Ring Axis"
msgstr "Upozorenja"
#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Rotate Y"
+msgstr "Zalijepi Animaciju"
+
+#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Disable Z"
+msgstr "(Editor Onemogućen)"
+
+#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
msgid "Flatness"
msgstr ""
@@ -19690,16 +21053,11 @@ msgstr ""
msgid "Dynamic Range"
msgstr ""
-#: scene/3d/gi_probe.cpp
+#: scene/3d/gi_probe.cpp scene/3d/light.cpp
msgid "Normal Bias"
msgstr ""
#: scene/3d/gi_probe.cpp
-#, fuzzy
-msgid "Compress"
-msgstr "Komponente"
-
-#: scene/3d/gi_probe.cpp
msgid "Plotting Meshes"
msgstr ""
@@ -19725,15 +21083,28 @@ msgid "Subdiv"
msgstr ""
#: scene/3d/light.cpp
+msgid "Indirect Energy"
+msgstr ""
+
+#: scene/3d/light.cpp
msgid "Negative"
msgstr ""
#: scene/3d/light.cpp
#, fuzzy
+msgid "Specular"
+msgstr "NaÄin Ravnala"
+
+#: scene/3d/light.cpp
+#, fuzzy
msgid "Bake Mode"
msgstr "NaÄin reprodukcije:"
#: scene/3d/light.cpp
+msgid "Contact"
+msgstr ""
+
+#: scene/3d/light.cpp
#, fuzzy
msgid "Reverse Cull Face"
msgstr "Naziv ÄŒvora(node):"
@@ -19744,11 +21115,28 @@ msgid "Directional Shadow"
msgstr "Direkcije"
#: scene/3d/light.cpp
+msgid "Split 1"
+msgstr ""
+
+#: scene/3d/light.cpp
+msgid "Split 2"
+msgstr ""
+
+#: scene/3d/light.cpp
+msgid "Split 3"
+msgstr ""
+
+#: scene/3d/light.cpp
msgid "Blend Splits"
msgstr ""
#: scene/3d/light.cpp
#, fuzzy
+msgid "Bias Split Scale"
+msgstr "Odspoji Skriptu"
+
+#: scene/3d/light.cpp
+#, fuzzy
msgid "Depth Range"
msgstr "Dubina"
@@ -19774,6 +21162,11 @@ msgstr ""
msgid "Spot"
msgstr ""
+#: scene/3d/light.cpp
+#, fuzzy
+msgid "Angle Attenuation"
+msgstr "Animacija"
+
#: scene/3d/mesh_instance.cpp
msgid "Software Skinning"
msgstr ""
@@ -19892,6 +21285,63 @@ msgid "Axis Lock"
msgstr ""
#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Linear X"
+msgstr "Linearno"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Linear Y"
+msgstr "Linearno"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Linear Z"
+msgstr "Linearno"
+
+#: scene/3d/physics_body.cpp
+msgid "Angular X"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Angular Y"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Angular Z"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Motion X"
+msgstr "Animacija"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Motion Y"
+msgstr "Animacija"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Motion Z"
+msgstr "Animacija"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Move Lock X"
+msgstr "Premjesti Ävor(node)"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Move Lock Y"
+msgstr "Premjesti Ävor(node)"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Move Lock Z"
+msgstr "Premjesti Ävor(node)"
+
+#: scene/3d/physics_body.cpp
msgid "Body Offset"
msgstr ""
@@ -19924,6 +21374,14 @@ msgid "Exclude Nodes"
msgstr ""
#: scene/3d/physics_joint.cpp
+msgid "Params"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Impulse Clamp"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit"
msgstr ""
@@ -19935,6 +21393,55 @@ msgstr ""
msgid "Lower"
msgstr ""
+#: scene/3d/physics_joint.cpp scene/3d/vehicle_body.cpp
+#, fuzzy
+msgid "Relaxation"
+msgstr "Opis:"
+
+#: scene/3d/physics_joint.cpp
+msgid "Motor"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Target Velocity"
+msgstr "Linearno"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Max Impulse"
+msgstr "Vrijednost:"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit"
+msgstr "Linearno"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Upper Distance"
+msgstr "Instaliraj"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Lower Distance"
+msgstr "Instaliraj"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Restitution"
+msgstr "Opis"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motion"
+msgstr "Linearno"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Ortho"
+msgstr "Linearno"
+
#: scene/3d/physics_joint.cpp
msgid "Upper Angle"
msgstr ""
@@ -19944,6 +21451,16 @@ msgid "Lower Angle"
msgstr ""
#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Angular Motion"
+msgstr "Animacija"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Angular Ortho"
+msgstr "Najveća kutna pogreška:"
+
+#: scene/3d/physics_joint.cpp
msgid "Swing Span"
msgstr ""
@@ -19952,17 +21469,98 @@ msgid "Twist Span"
msgstr ""
#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit X"
+msgstr "Linearno"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motor X"
+msgstr "Linearno"
+
+#: scene/3d/physics_joint.cpp
+msgid "Force Limit"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Spring X"
+msgstr "Linearno"
+
+#: scene/3d/physics_joint.cpp
+msgid "Equilibrium Point"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit X"
msgstr ""
#: scene/3d/physics_joint.cpp
+msgid "Erp"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Motor X"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Spring X"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit Y"
+msgstr "Linearno"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motor Y"
+msgstr "Linearno"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Spring Y"
+msgstr "Linearno"
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit Y"
msgstr ""
#: scene/3d/physics_joint.cpp
+msgid "Angular Motor Y"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Spring Y"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit Z"
+msgstr "Linearno"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motor Z"
+msgstr "Linearno"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Spring Z"
+msgstr "Linearno"
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit Z"
msgstr ""
+#: scene/3d/physics_joint.cpp
+msgid "Angular Motor Z"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Spring Z"
+msgstr ""
+
#: scene/3d/portal.cpp
msgid "The RoomManager should not be a child or grandchild of a Portal."
msgstr ""
@@ -20073,7 +21671,7 @@ msgstr ""
msgid "Use Default Simplify"
msgstr ""
-#: scene/3d/room.cpp
+#: scene/3d/room.cpp scene/3d/room_manager.cpp
msgid "Room Simplify"
msgstr ""
@@ -20111,6 +21709,12 @@ msgstr ""
msgid "Main"
msgstr ""
+#: scene/3d/room_manager.cpp scene/animation/animation_player.cpp
+#: scene/animation/animation_tree.cpp scene/animation/animation_tree_player.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+msgid "Active"
+msgstr ""
+
#: scene/3d/room_manager.cpp
msgid "Roomlist"
msgstr ""
@@ -20135,6 +21739,48 @@ msgid "Gameplay"
msgstr ""
#: scene/3d/room_manager.cpp
+msgid "Gameplay Monitor"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "Use Secondary PVS"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "Merge Meshes"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "Show Margins"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "Debug Sprawl"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "Overlap Warning Threshold"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Preview Camera"
+msgstr "Pregled:"
+
+#: scene/3d/room_manager.cpp
+msgid "Portal Depth Limit"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Default Portal Margin"
+msgstr "Mesh2D Pregled"
+
+#: scene/3d/room_manager.cpp
+msgid "Roaming Expansion Margin"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
msgid ""
"RoomList path is invalid.\n"
"Please check the RoomList branch has been assigned in the RoomManager."
@@ -20255,6 +21901,20 @@ msgstr ""
msgid "Billboard"
msgstr ""
+#: scene/3d/sprite_3d.cpp scene/resources/material.cpp
+#, fuzzy
+msgid "Transparent"
+msgstr "Uredi Tranzicije..."
+
+#: scene/3d/sprite_3d.cpp
+#, fuzzy
+msgid "Shaded"
+msgstr "Promijeni"
+
+#: scene/3d/sprite_3d.cpp
+msgid "Double Sided"
+msgstr ""
+
#: scene/3d/sprite_3d.cpp
msgid "Alpha Cut"
msgstr ""
@@ -20322,11 +21982,6 @@ msgstr ""
msgid "Max Force"
msgstr "Greška!"
-#: scene/3d/vehicle_body.cpp
-#, fuzzy
-msgid "Relaxation"
-msgstr "Opis:"
-
#: scene/3d/visibility_notifier.cpp
msgid "AABB"
msgstr ""
@@ -20453,8 +22108,9 @@ msgid "Fadeout Time"
msgstr ""
#: scene/animation/animation_blend_tree.cpp
-msgid "autorestart_"
-msgstr ""
+#, fuzzy
+msgid "Auto Restart"
+msgstr "Spremi"
#: scene/animation/animation_blend_tree.cpp
msgid "Autorestart"
@@ -20534,12 +22190,6 @@ msgstr "Opcije Klase"
msgid "Default Blend Time"
msgstr "Mesh2D Pregled"
-#: scene/animation/animation_player.cpp scene/animation/animation_tree.cpp
-#: scene/animation/animation_tree_player.cpp
-#: servers/audio/effects/audio_effect_delay.cpp
-msgid "Active"
-msgstr ""
-
#: scene/animation/animation_player.cpp
msgid "Method Call Mode"
msgstr ""
@@ -20657,10 +22307,6 @@ msgstr "Premjesti Ävor(node)"
msgid "Max Iterations"
msgstr "Napravi Funkciju"
-#: scene/animation/tween.cpp scene/resources/texture.cpp
-msgid "Repeat"
-msgstr ""
-
#: scene/animation/tween.cpp
msgid "Playback Process Mode"
msgstr ""
@@ -20687,19 +22333,6 @@ msgstr ""
msgid "Alignment"
msgstr ""
-#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
-#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
-#: scene/resources/style_box.cpp
-#, fuzzy
-msgid "Horizontal"
-msgstr "Makni Vodoravne Upute"
-
-#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
-#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
-#: scene/resources/style_box.cpp
-msgid "Vertical"
-msgstr ""
-
#: scene/gui/base_button.cpp
msgid "Shortcut In Tooltip"
msgstr ""
@@ -20790,10 +22423,6 @@ msgid "HSV"
msgstr ""
#: scene/gui/color_picker.cpp
-msgid "Raw"
-msgstr ""
-
-#: scene/gui/color_picker.cpp
msgid "Switch between hexadecimal and code values."
msgstr ""
@@ -20849,6 +22478,30 @@ msgid "Focus"
msgstr ""
#: scene/gui/control.cpp
+msgid "Neighbour Left"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Neighbour Top"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Neighbour Right"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Neighbour Bottom"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Next"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Previous"
+msgstr ""
+
+#: scene/gui/control.cpp
msgid "Mouse"
msgstr ""
@@ -20883,7 +22536,7 @@ msgid "Dialog"
msgstr ""
#: scene/gui/dialogs.cpp
-msgid "Hide On Ok"
+msgid "Hide On OK"
msgstr ""
#: scene/gui/dialogs.cpp scene/gui/label.cpp
@@ -20978,7 +22631,7 @@ msgid "Timers"
msgstr "Vrijeme:"
#: scene/gui/item_list.cpp scene/gui/popup_menu.cpp scene/gui/tree.cpp
-msgid "Incremental Search Max Interval (msec)"
+msgid "Incremental Search Max Interval Msec"
msgstr ""
#: scene/gui/item_list.cpp scene/gui/tree.cpp
@@ -21514,6 +23167,26 @@ msgstr "Premjesti Ävor(node)"
msgid "Nine Patch Stretch"
msgstr "NaÄin Interpolacije"
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Left"
+msgstr "Zalijepi Animaciju"
+
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Top"
+msgstr "Zalijepi Animaciju"
+
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Right"
+msgstr "Zalijepi Animaciju"
+
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Bottom"
+msgstr "Zalijepi Animaciju"
+
#: scene/gui/tree.cpp
msgid "Custom Minimum Height"
msgstr ""
@@ -21548,7 +23221,7 @@ msgid "Paused"
msgstr ""
#: scene/gui/video_player.cpp
-msgid "Buffering (msec)"
+msgid "Buffering Msec"
msgstr ""
#: scene/gui/video_player.cpp
@@ -21872,6 +23545,22 @@ msgid "Shadow Atlas"
msgstr ""
#: scene/main/viewport.cpp
+msgid "Quad 0"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 1"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 2"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 3"
+msgstr ""
+
+#: scene/main/viewport.cpp
#, fuzzy
msgid "Canvas Transform"
msgstr "Anim Promijeni Transform"
@@ -21886,6 +23575,10 @@ msgid "Tooltip Delay (sec)"
msgstr ""
#: scene/register_scene_types.cpp
+msgid "Swap OK Cancel"
+msgstr ""
+
+#: scene/register_scene_types.cpp
msgid "Use hiDPI"
msgstr ""
@@ -21898,21 +23591,6 @@ msgid "Custom Font"
msgstr ""
#: scene/resources/audio_stream_sample.cpp
-#, fuzzy
-msgid "Loop Mode"
-msgstr "NaÄin Interpolacije"
-
-#: scene/resources/audio_stream_sample.cpp
-#, fuzzy
-msgid "Loop Begin"
-msgstr "NaÄin Interpolacije"
-
-#: scene/resources/audio_stream_sample.cpp
-#, fuzzy
-msgid "Loop End"
-msgstr "NaÄin Interpolacije"
-
-#: scene/resources/audio_stream_sample.cpp
#: servers/audio/effects/audio_stream_generator.cpp servers/audio_server.cpp
msgid "Mix Rate"
msgstr ""
@@ -21967,6 +23645,16 @@ msgid "Extra Spacing"
msgstr "Opcije Klase"
#: scene/resources/dynamic_font.cpp
+#, fuzzy
+msgid "Char"
+msgstr "Važeći znakovi:"
+
+#: scene/resources/dynamic_font.cpp scene/resources/world.cpp
+#: scene/resources/world_2d.cpp
+msgid "Space"
+msgstr ""
+
+#: scene/resources/dynamic_font.cpp
msgid "Font"
msgstr ""
@@ -22183,6 +23871,43 @@ msgid "Glow"
msgstr ""
#: scene/resources/environment.cpp
+#, fuzzy
+msgid "Levels"
+msgstr "Razvijatelji"
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "1"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "2"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "3"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "4"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "5"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "6"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "7"
+msgstr ""
+
+#: scene/resources/environment.cpp
msgid "Bloom"
msgstr ""
@@ -22272,9 +23997,65 @@ msgid "Next Pass"
msgstr "Premjesti Okvir"
#: scene/resources/material.cpp
+msgid "Use Shadow To Opacity"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Unshaded"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Vertex Lighting"
+msgstr "Direkcije"
+
+#: scene/resources/material.cpp
+msgid "No Depth Test"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Use Point Size"
+msgstr "Glavna skripta:"
+
+#: scene/resources/material.cpp
+msgid "World Triplanar"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Fixed Size"
+msgstr "Glavna skripta:"
+
+#: scene/resources/material.cpp
+msgid "Albedo Tex Force sRGB"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Do Not Receive Shadows"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Disable Ambient Light"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Ensure Correct Normals"
+msgstr "NaÄin Ravnala"
+
+#: scene/resources/material.cpp
msgid "Vertex Color"
msgstr ""
+#: scene/resources/material.cpp
+msgid "Use As Albedo"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Is sRGB"
+msgstr ""
+
#: scene/resources/material.cpp servers/visual_server.cpp
msgid "Parameters"
msgstr ""
@@ -22310,6 +24091,11 @@ msgid "Billboard Mode"
msgstr "NaÄin Ravnala"
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Billboard Keep Scale"
+msgstr "NaÄin Ravnala"
+
+#: scene/resources/material.cpp
msgid "Grow"
msgstr ""
@@ -22319,6 +24105,10 @@ msgid "Grow Amount"
msgstr "Makni Vodoravne Upute"
#: scene/resources/material.cpp
+msgid "Use Alpha Scissor"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Alpha Scissor Threshold"
msgstr ""
@@ -22350,10 +24140,20 @@ msgid "Metallic Specular"
msgstr ""
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Metallic Texture"
+msgstr "Promijeni vrstu baze:"
+
+#: scene/resources/material.cpp
msgid "Metallic Texture Channel"
msgstr ""
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Roughness Texture"
+msgstr "Budućnost"
+
+#: scene/resources/material.cpp
msgid "Roughness Texture Channel"
msgstr ""
@@ -22370,6 +24170,15 @@ msgid "Emission Operator"
msgstr ""
#: scene/resources/material.cpp
+msgid "Emission On UV2"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Emission Texture"
+msgstr "Budućnost"
+
+#: scene/resources/material.cpp
msgid "NormalMap"
msgstr ""
@@ -22382,6 +24191,11 @@ msgid "Rim Tint"
msgstr ""
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Rim Texture"
+msgstr "Budućnost"
+
+#: scene/resources/material.cpp
msgid "Clearcoat"
msgstr ""
@@ -22390,14 +24204,27 @@ msgid "Clearcoat Gloss"
msgstr ""
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Clearcoat Texture"
+msgstr "Budućnost"
+
+#: scene/resources/material.cpp
msgid "Anisotropy"
msgstr ""
#: scene/resources/material.cpp
+msgid "Anisotropy Flowmap"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Ambient Occlusion"
msgstr ""
#: scene/resources/material.cpp
+msgid "On UV2"
+msgstr ""
+
+#: scene/resources/material.cpp
#, fuzzy
msgid "Texture Channel"
msgstr "NaÄin Ravnala"
@@ -22434,6 +24261,11 @@ msgstr ""
#: scene/resources/material.cpp
#, fuzzy
+msgid "Transmission Texture"
+msgstr "Promijeni vrstu baze:"
+
+#: scene/resources/material.cpp
+#, fuzzy
msgid "Refraction"
msgstr "Opis:"
@@ -22450,6 +24282,10 @@ msgid "UV1"
msgstr ""
#: scene/resources/material.cpp
+msgid "Triplanar"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Triplanar Sharpness"
msgstr ""
@@ -22645,6 +24481,15 @@ msgstr "Budućnost"
msgid "Point Count"
msgstr "Dodaj Bezier ToÄku"
+#: scene/resources/particles_material.cpp
+msgid "Scale Random"
+msgstr ""
+
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Scale Curve"
+msgstr "UÄini Aktualnim"
+
#: scene/resources/physics_material.cpp
msgid "Rough"
msgstr ""
@@ -22702,10 +24547,6 @@ msgid "A"
msgstr ""
#: scene/resources/shader.cpp
-msgid "Code"
-msgstr ""
-
-#: scene/resources/shader.cpp
msgid "Custom Defines"
msgstr ""
@@ -22793,14 +24634,6 @@ msgid "Grow End"
msgstr ""
#: scene/resources/texture.cpp
-msgid "Storage"
-msgstr ""
-
-#: scene/resources/texture.cpp
-msgid "Lossy Quality"
-msgstr ""
-
-#: scene/resources/texture.cpp
#, fuzzy
msgid "Load Path"
msgstr "UÄitaj Zadano"
@@ -22921,10 +24754,6 @@ msgstr ""
msgid "Fallback Environment"
msgstr ""
-#: scene/resources/world.cpp scene/resources/world_2d.cpp
-msgid "Space"
-msgstr ""
-
#: scene/resources/world.cpp
msgid "Scenario"
msgstr ""
@@ -23000,8 +24829,34 @@ msgstr ""
msgid "Wet"
msgstr ""
-#: servers/audio/effects/audio_effect_compressor.cpp
-msgid "Threshold"
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "Voice"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+msgid "Delay (ms)"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_phaser.cpp
+msgid "Rate Hz"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#, fuzzy
+msgid "Depth (ms)"
+msgstr "Dubina"
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+msgid "Level dB"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+#: servers/audio/effects/audio_effect_panner.cpp
+msgid "Pan"
msgstr ""
#: servers/audio/effects/audio_effect_compressor.cpp
@@ -23026,19 +24881,6 @@ msgid "Tap 1"
msgstr ""
#: servers/audio/effects/audio_effect_delay.cpp
-msgid "Delay (ms)"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_delay.cpp
-msgid "Level dB"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_delay.cpp
-#: servers/audio/effects/audio_effect_panner.cpp
-msgid "Pan"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_delay.cpp
msgid "Tap 2"
msgstr ""
@@ -23097,10 +24939,6 @@ msgstr ""
msgid "Range Max Hz"
msgstr ""
-#: servers/audio/effects/audio_effect_phaser.cpp
-msgid "Rate Hz"
-msgstr ""
-
#: servers/audio/effects/audio_effect_pitch_shift.cpp
msgid "Oversampling"
msgstr ""
@@ -23116,7 +24954,7 @@ msgid "Predelay"
msgstr ""
#: servers/audio/effects/audio_effect_reverb.cpp
-msgid "(msec)"
+msgid "Msec"
msgstr ""
#: servers/audio/effects/audio_effect_reverb.cpp
diff --git a/editor/translations/hu.po b/editor/translations/hu.po
index 3b4b7fa7ae..cc27c58105 100644
--- a/editor/translations/hu.po
+++ b/editor/translations/hu.po
@@ -38,7 +38,7 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 4.10.1\n"
-#: core/bind/core_bind.cpp
+#: core/bind/core_bind.cpp main/main.cpp
msgid "Tablet Driver"
msgstr ""
@@ -141,8 +141,8 @@ msgstr "Dokk Pozíció"
#: core/bind/core_bind.cpp editor/editor_settings.cpp main/main.cpp
#: modules/gdscript/gdscript_editor.cpp modules/gridmap/grid_map.cpp
#: modules/mono/csharp_script.cpp modules/visual_script/visual_script_nodes.cpp
-#: scene/2d/tile_map.cpp scene/3d/camera.cpp scene/gui/control.cpp
-#: scene/gui/graph_edit.cpp scene/main/viewport.cpp
+#: scene/2d/tile_map.cpp scene/3d/camera.cpp scene/3d/light.cpp
+#: scene/gui/control.cpp scene/gui/graph_edit.cpp scene/main/viewport.cpp
#: scene/resources/dynamic_font.cpp scene/resources/navigation_mesh.cpp
#: scene/resources/primitive_meshes.cpp scene/resources/sky.cpp
#: scene/resources/style_box.cpp scene/resources/texture.cpp
@@ -246,8 +246,7 @@ msgid "Data"
msgstr ""
#: core/io/file_access_network.cpp core/register_core_types.cpp
-#: editor/editor_settings.cpp editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp main/main.cpp
+#: editor/editor_settings.cpp main/main.cpp
#: modules/gdscript/language_server/gdscript_language_server.cpp
#, fuzzy
msgid "Network"
@@ -530,9 +529,10 @@ msgstr "Előre beállított"
msgid "Relative"
msgstr "Relatív Illesztés"
-#: core/os/input_event.cpp scene/2d/camera_2d.cpp
-#: scene/3d/interpolated_camera.cpp scene/animation/animation_player.cpp
-#: scene/resources/environment.cpp
+#: core/os/input_event.cpp scene/2d/camera_2d.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/interpolated_camera.cpp
+#: scene/animation/animation_player.cpp scene/resources/environment.cpp
+#: scene/resources/particles_material.cpp
#, fuzzy
msgid "Speed"
msgstr "Skála:"
@@ -581,8 +581,9 @@ msgstr ""
msgid "Pitch"
msgstr "Skála:"
-#: core/os/input_event.cpp scene/2d/physics_body_2d.cpp
-#: scene/3d/physics_body.cpp
+#: core/os/input_event.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/physics_body_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/3d/physics_body.cpp scene/resources/particles_material.cpp
#, fuzzy
msgid "Velocity"
msgstr "Inicializálás"
@@ -601,6 +602,8 @@ msgid "Controller Value"
msgstr ""
#: core/project_settings.cpp editor/editor_node.cpp main/main.cpp
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/windows/export/export.cpp
#, fuzzy
msgid "Application"
msgstr "Művelet"
@@ -619,13 +622,16 @@ msgstr "Projekt beállítások..."
#: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp
#: editor/editor_plugin_settings.cpp editor/editor_profiler.cpp
#: editor/project_manager.cpp editor/settings_config_dialog.cpp
-#: modules/gdnative/nativescript/nativescript.cpp scene/2d/area_2d.cpp
-#: scene/3d/area.cpp scene/main/node.cpp
+#: modules/gdnative/nativescript/nativescript.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/osx/export/export.cpp scene/2d/area_2d.cpp scene/3d/area.cpp
+#: scene/main/node.cpp
msgid "Name"
msgstr "Név"
#: core/project_settings.cpp editor/editor_help.cpp
-#: modules/visual_script/visual_script_nodes.cpp
+#: modules/visual_script/visual_script_nodes.cpp platform/uwp/export/export.cpp
+#: platform/windows/export/export.cpp
msgid "Description"
msgstr "Leírás"
@@ -663,7 +669,7 @@ msgid "Custom User Dir Name"
msgstr ""
#: core/project_settings.cpp editor/animation_track_editor.cpp
-#: editor/editor_audio_buses.cpp servers/audio_server.cpp
+#: editor/editor_audio_buses.cpp main/main.cpp servers/audio_server.cpp
msgid "Audio"
msgstr "Hang"
@@ -830,10 +836,13 @@ msgstr "Szűrők:"
msgid "Sharpen Intensity"
msgstr ""
-#: core/project_settings.cpp editor/editor_node.cpp editor/editor_settings.cpp
-#: editor/plugins/script_editor_plugin.cpp editor/project_export.cpp
-#: main/main.cpp modules/gdscript/gdscript.cpp
-#: modules/visual_script/visual_script.cpp scene/3d/room_manager.cpp
+#: core/project_settings.cpp editor/editor_export.cpp editor/editor_node.cpp
+#: editor/editor_settings.cpp editor/plugins/script_editor_plugin.cpp
+#: editor/project_export.cpp main/main.cpp modules/gdscript/gdscript.cpp
+#: modules/visual_script/visual_script.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp scene/3d/room_manager.cpp
#: scene/main/scene_tree.cpp scene/resources/shape_2d.cpp
#: servers/visual_server.cpp
msgid "Debug"
@@ -1067,6 +1076,7 @@ msgid "Subsurface Scattering"
msgstr ""
#: drivers/gles3/rasterizer_scene_gles3.cpp
+#: editor/import/resource_importer_texture.cpp
#: editor/plugins/spatial_editor_plugin.cpp modules/gltf/gltf_node.cpp
#: modules/gridmap/grid_map.cpp scene/2d/cpu_particles_2d.cpp
#: scene/2d/node_2d.cpp scene/2d/parallax_layer.cpp scene/2d/polygon_2d.cpp
@@ -1365,6 +1375,7 @@ msgid "Editors"
msgstr "Szerkesztő"
#: editor/animation_track_editor.cpp editor/editor_settings.cpp
+#: editor/import/resource_importer_scene.cpp
#: editor/plugins/animation_player_editor_plugin.cpp editor/scene_tree_dock.cpp
#: scene/2d/animated_sprite.cpp scene/2d/cpu_particles_2d.cpp
#: scene/2d/sprite.cpp scene/3d/cpu_particles.cpp scene/3d/sprite_3d.cpp
@@ -1604,14 +1615,14 @@ msgstr "Animáció lépés értéke."
msgid "Seconds"
msgstr "Másodperc"
-#: editor/animation_track_editor.cpp
+#: editor/animation_track_editor.cpp editor/import/resource_importer_scene.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp main/main.cpp
#: scene/resources/texture.cpp
msgid "FPS"
msgstr "FPS"
#: editor/animation_track_editor.cpp editor/editor_plugin_settings.cpp
-#: editor/editor_resource_picker.cpp
+#: editor/editor_resource_picker.cpp editor/import/resource_importer_wav.cpp
#: editor/plugins/polygon_2d_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
@@ -2575,7 +2586,9 @@ msgid "Remove Autoload"
msgstr "AutoLoad Eltávolítása"
#: editor/editor_autoload_settings.cpp editor/editor_plugin_settings.cpp
-#: modules/gdscript/gdscript.cpp scene/2d/polygon_2d.cpp scene/3d/area.cpp
+#: modules/gdscript/gdscript.cpp platform/android/export/export_plugin.cpp
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#: scene/2d/polygon_2d.cpp scene/3d/area.cpp scene/3d/physics_joint.cpp
#: scene/3d/reflection_probe.cpp scene/main/canvas_layer.cpp
#: scene/resources/material.cpp servers/visual_server.cpp
msgid "Enable"
@@ -2746,6 +2759,58 @@ msgstr ""
#: editor/editor_export.cpp platform/android/export/export_plugin.cpp
#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Custom Template"
+msgstr "Téma szerkesztése"
+
+#: editor/editor_export.cpp editor/project_export.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp
+msgid "Release"
+msgstr ""
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Binary Format"
+msgstr "Színállandó."
+
+#: editor/editor_export.cpp
+msgid "64 Bits"
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Embed PCK"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Texture Format"
+msgstr "Vonalzó mód"
+
+#: editor/editor_export.cpp
+msgid "BPTC"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "S3TC"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "ETC"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "ETC2"
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "No BPTC Fallbacks"
+msgstr ""
+
+#: editor/editor_export.cpp platform/android/export/export_plugin.cpp
+#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
msgid "Custom debug template not found."
msgstr "Az egyéni hibakeresési sablon nem található."
@@ -2931,6 +2996,7 @@ msgid "Make Current"
msgstr "Tegye jelenlegivé"
#: editor/editor_feature_profile.cpp editor/editor_node.cpp
+#: editor/import/resource_importer_scene.cpp
#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
msgid "Import"
msgstr "Importálás"
@@ -3061,8 +3127,11 @@ msgstr "Siker!"
msgid "Display Mode"
msgstr "Lejátszási mód:"
-#: editor/editor_file_dialog.cpp main/main.cpp modules/csg/csg_shape.cpp
-#: modules/visual_script/visual_script_nodes.cpp
+#: editor/editor_file_dialog.cpp
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+#: editor/import/resource_importer_wav.cpp main/main.cpp
+#: modules/csg/csg_shape.cpp modules/visual_script/visual_script_nodes.cpp
#: modules/visual_script/visual_script_yield_nodes.cpp scene/2d/light_2d.cpp
#: scene/2d/physics_body_2d.cpp scene/2d/tile_map.cpp
#: scene/3d/baked_lightmap.cpp scene/3d/light.cpp scene/3d/physics_body.cpp
@@ -3199,7 +3268,9 @@ msgstr "Eszközök (Újra) Betöltése"
msgid "Reimport Missing Imported Files"
msgstr ""
-#: editor/editor_help.cpp
+#: editor/editor_help.cpp scene/2d/camera_2d.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/resources/dynamic_font.cpp
+#: scene/resources/style_box.cpp
msgid "Top"
msgstr "Eleje"
@@ -3254,6 +3325,7 @@ msgid "Fonts"
msgstr "Betűtípus"
#: editor/editor_help.cpp editor/plugins/theme_editor_plugin.cpp
+#: platform/iphone/export/export.cpp
#, fuzzy
msgid "Icons"
msgstr "Ikon"
@@ -3423,7 +3495,9 @@ msgstr ""
msgid "Pin value [Disabled because '%s' is editor-only]"
msgstr ""
-#: editor/editor_inspector.cpp editor/scene_tree_dock.cpp
+#: editor/editor_inspector.cpp
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+#: editor/scene_tree_dock.cpp
#: modules/visual_script/visual_script_func_nodes.cpp
#: modules/visual_script/visual_script_nodes.cpp
#: modules/visual_script/visual_script_property_selector.cpp
@@ -3772,6 +3846,16 @@ msgid "Quick Open Script..."
msgstr "Szkript Gyors Megnyitás..."
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Save & Reload"
+msgstr "Mentés és újraindítás"
+
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Save changes to '%s' before reloading?"
+msgstr "Bezárás előtt menti a '%s'-n végzett módosításokat?"
+
+#: editor/editor_node.cpp
msgid "Save & Close"
msgstr "Mentés és Bezárás"
@@ -3887,6 +3971,12 @@ msgid "Open Project Manager?"
msgstr "Megnyitja a Projektkezelőt?"
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Save changes to the following scene(s) before reloading?"
+msgstr ""
+"Elmenti a következő jelenet(ek)en végzett változtatásokat kilépés előtt?"
+
+#: editor/editor_node.cpp
msgid "Save & Quit"
msgstr "Mentés és kilépés"
@@ -4169,8 +4259,8 @@ msgstr "A paraméter megváltozott"
#: editor/editor_node.cpp
#, fuzzy
-msgid "Translate Properties"
-msgstr "Tulajdonságok"
+msgid "Localize Settings"
+msgstr "Lokalizáció"
#: editor/editor_node.cpp
#, fuzzy
@@ -4187,8 +4277,8 @@ msgstr "Megfigyelő"
#: editor/editor_node.cpp
#, fuzzy
-msgid "Capitalize Properties"
-msgstr "Tulajdonságok"
+msgid "Default Property Name Style"
+msgstr "Előnézet frissítése"
#: editor/editor_node.cpp
msgid "Default Float Step"
@@ -4785,7 +4875,9 @@ msgstr "Telepített Bővítmények:"
msgid "Update"
msgstr "Frissítés"
-#: editor/editor_plugin_settings.cpp
+#: editor/editor_plugin_settings.cpp platform/android/export/export_plugin.cpp
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp
#, fuzzy
msgid "Version"
msgstr "Verzió:"
@@ -5804,7 +5896,7 @@ msgstr "Teljes Téglalap"
msgid "Rect Custom Position"
msgstr "Ki-Görbe Pozíció Beállítása"
-#: editor/editor_settings.cpp
+#: editor/editor_settings.cpp platform/android/export/export_plugin.cpp
msgid "Screen"
msgstr ""
@@ -5830,6 +5922,19 @@ msgid "Editor SSL Certificates"
msgstr "Szerkesztő Beállítások"
#: editor/editor_settings.cpp
+msgid "HTTP Proxy"
+msgstr ""
+
+#: editor/editor_settings.cpp
+msgid "Host"
+msgstr ""
+
+#: editor/editor_settings.cpp editor/fileserver/editor_file_server.cpp
+#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp
+msgid "Port"
+msgstr ""
+
+#: editor/editor_settings.cpp
msgid "Project Manager"
msgstr "Projektkezelő"
@@ -5872,7 +5977,8 @@ msgstr ""
msgid "String Color"
msgstr "Tároló Fájl:"
-#: editor/editor_settings.cpp
+#: editor/editor_settings.cpp platform/javascript/export/export.cpp
+#: platform/uwp/export/export.cpp
#, fuzzy
msgid "Background Color"
msgstr "Érvénytelen háttérszín."
@@ -6050,22 +6156,6 @@ msgid "Starting the download..."
msgstr ""
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "HTTP Proxy"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Host"
-msgstr ""
-
-#: editor/export_template_manager.cpp editor/fileserver/editor_file_server.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp main/main.cpp
-#: modules/mono/mono_gd/gd_mono.cpp
-msgid "Port"
-msgstr ""
-
-#: editor/export_template_manager.cpp
msgid "Error requesting URL:"
msgstr "Hiba az URL kérésekor:"
@@ -6333,6 +6423,7 @@ msgstr ""
#: editor/fileserver/editor_file_server.cpp
#: editor/plugins/version_control_editor_plugin.cpp
+#: platform/uwp/export/export.cpp platform/windows/export/export.cpp
msgid "Password"
msgstr ""
@@ -6703,6 +6794,117 @@ msgstr ""
msgid "Use Ambient"
msgstr ""
+#: editor/import/resource_importer_bitmask.cpp
+#, fuzzy
+msgid "Create From"
+msgstr "Mappa Létrehozása"
+
+#: editor/import/resource_importer_bitmask.cpp
+#: servers/audio/effects/audio_effect_compressor.cpp
+msgid "Threshold"
+msgstr ""
+
+#: editor/import/resource_importer_csv_translation.cpp
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_scene.cpp
+#: editor/import/resource_importer_texture.cpp
+#: editor/import/resource_importer_wav.cpp scene/3d/gi_probe.cpp
+#, fuzzy
+msgid "Compress"
+msgstr "Összetevők"
+
+#: editor/import/resource_importer_csv_translation.cpp
+msgid "Delimiter"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+msgid "No BPTC If RGB"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/sprite_3d.cpp
+#: scene/resources/material.cpp scene/resources/particles_material.cpp
+#: scene/resources/texture.cpp
+msgid "Flags"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/animation/tween.cpp
+#: scene/resources/texture.cpp
+msgid "Repeat"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/2d/light_2d.cpp
+#: scene/gui/control.cpp scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Filter"
+msgstr "Szűrők:"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Mipmaps"
+msgstr "Jelzések"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+msgid "Anisotropic"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+msgid "sRGB"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#, fuzzy
+msgid "Slices"
+msgstr "Minden eszköz"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
+#: scene/resources/style_box.cpp
+#, fuzzy
+msgid "Horizontal"
+msgstr "Vízszintes segédvonal mozgatása"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
+#: scene/resources/style_box.cpp
+#, fuzzy
+msgid "Vertical"
+msgstr "Függőleges segédvonal mozgatása"
+
+#: editor/import/resource_importer_obj.cpp
+#, fuzzy
+msgid "Generate Tangents"
+msgstr "Generált Pontok Száma:"
+
+#: editor/import/resource_importer_obj.cpp
+#, fuzzy
+msgid "Scale Mesh"
+msgstr "Méretezési mód"
+
+#: editor/import/resource_importer_obj.cpp
+#, fuzzy
+msgid "Offset Mesh"
+msgstr "Rács Eltolás:"
+
+#: editor/import/resource_importer_obj.cpp
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Octahedral Compression"
+msgstr "Kifejezés beállítása"
+
+#: editor/import/resource_importer_obj.cpp
+#, fuzzy
+msgid "Optimize Mesh Flags"
+msgstr "Méret: "
+
#: editor/import/resource_importer_scene.cpp
msgid "Import as Single Scene"
msgstr "Importálás Egyetlen Jelenetként"
@@ -6743,6 +6945,156 @@ msgstr "Importálás Több Jelenetként"
msgid "Import as Multiple Scenes+Materials"
msgstr "Importálás Több Jelentként és Anyagokként"
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Nodes"
+msgstr "Node"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Root Type"
+msgstr "Tag típusa"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Root Name"
+msgstr "Node neve:"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Root Scale"
+msgstr "Skála:"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Custom Script"
+msgstr "Node-ok kivágása"
+
+#: editor/import/resource_importer_scene.cpp scene/resources/texture.cpp
+#, fuzzy
+msgid "Storage"
+msgstr "Tároló Fájl:"
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Use Legacy Names"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+#, fuzzy
+msgid "Materials"
+msgstr "A paraméter megváltozott"
+
+#: editor/import/resource_importer_scene.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Location"
+msgstr "Lokalizáció"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Keep On Reimport"
+msgstr "Újraimportálás"
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+#, fuzzy
+msgid "Meshes"
+msgstr "Mesh"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Ensure Tangents"
+msgstr "Görbe Érintőjének Módosítása"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Light Baking"
+msgstr "Fény Besütése"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Lightmap Texel Size"
+msgstr "Fény Besütése"
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+msgid "Skins"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Use Named Skins"
+msgstr "Jelzések"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "External Files"
+msgstr "Fálj Megnyitása"
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Store In Subdir"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Filter Script"
+msgstr "Szkriptek szűrése"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Keep Custom Tracks"
+msgstr "Globális Transzformáció Megtartása"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Optimizer"
+msgstr "Optimalizálás"
+
+#: editor/import/resource_importer_scene.cpp main/main.cpp
+#: modules/mono/mono_gd/gd_mono.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp scene/2d/camera_2d.cpp scene/2d/light_2d.cpp
+#: scene/2d/navigation_polygon.cpp scene/2d/ray_cast_2d.cpp scene/2d/sprite.cpp
+#: scene/2d/y_sort.cpp scene/3d/audio_stream_player_3d.cpp
+#: scene/3d/baked_lightmap.cpp scene/3d/interpolated_camera.cpp
+#: scene/3d/light.cpp scene/3d/navigation_mesh_instance.cpp
+#: scene/3d/physics_joint.cpp scene/3d/ray_cast.cpp scene/3d/sprite_3d.cpp
+#: scene/gui/graph_edit.cpp scene/gui/rich_text_label.cpp
+#: scene/resources/curve.cpp scene/resources/environment.cpp
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Enabled"
+msgstr "Engedélyezés"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Max Linear Error"
+msgstr "Maximum lineáris hiba:"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Max Angular Error"
+msgstr "Maximum szög hiba:"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Max Angle"
+msgstr "Érték:"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Remove Unused Tracks"
+msgstr "Animáció Sáv Eltávolítása"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Clips"
+msgstr "Animáció klipek"
+
+#: editor/import/resource_importer_scene.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/particles_2d.cpp scene/3d/area.cpp scene/3d/cpu_particles.cpp
+#: scene/3d/particles.cpp scene/resources/environment.cpp
+#, fuzzy
+msgid "Amount"
+msgstr "Mennyiség:"
+
#: editor/import/resource_importer_scene.cpp
#: editor/plugins/mesh_library_editor_plugin.cpp
msgid "Import Scene"
@@ -6785,12 +7137,148 @@ msgstr ""
msgid "Saving..."
msgstr "Mentés..."
+#: editor/import/resource_importer_texture.cpp scene/resources/texture.cpp
+msgid "Lossy Quality"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "HDR Mode"
+msgstr "Kiválasztó Mód"
+
+#: editor/import/resource_importer_texture.cpp
+msgid "BPTC LDR"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/mesh_instance_2d.cpp scene/2d/multimesh_instance_2d.cpp
+#: scene/2d/particles_2d.cpp scene/2d/sprite.cpp scene/resources/style_box.cpp
+msgid "Normal Map"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Process"
+msgstr "Utófeldolgozás"
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Fix Alpha Border"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Premult Alpha"
+msgstr "Sokszög Szerkesztése"
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Hdr As Srgb"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Invert Color"
+msgstr "Következő koordináta"
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Normal Map Invert Y"
+msgstr "Véletlenszerű Skálázás:"
+
+#: editor/import/resource_importer_texture.cpp
+#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
+#: scene/audio/audio_stream_player.cpp scene/gui/video_player.cpp
+msgid "Stream"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Size Limit"
+msgstr "Méret: "
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Detect 3D"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "SVG"
+msgstr ""
+
#: editor/import/resource_importer_texture.cpp
msgid ""
"Warning, no suitable PC VRAM compression enabled in Project Settings. This "
"texture will not display correctly on PC."
msgstr ""
+#: editor/import/resource_importer_texture_atlas.cpp
+#, fuzzy
+msgid "Atlas File"
+msgstr "Körvonal Mérete:"
+
+#: editor/import/resource_importer_texture_atlas.cpp
+#, fuzzy
+msgid "Import Mode"
+msgstr "Dock importálása"
+
+#: editor/import/resource_importer_texture_atlas.cpp
+#, fuzzy
+msgid "Crop To Region"
+msgstr "Régió"
+
+#: editor/import/resource_importer_texture_atlas.cpp
+msgid "Trim Alpha Border From Region"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp scene/2d/physics_body_2d.cpp
+#, fuzzy
+msgid "Force"
+msgstr "Forrás Mesh:"
+
+#: editor/import/resource_importer_wav.cpp
+msgid "8 Bit"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp main/main.cpp
+#: modules/mono/editor/csharp_project.cpp modules/mono/mono_gd/gd_mono.cpp
+msgid "Mono"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+#, fuzzy
+msgid "Max Rate"
+msgstr "Mixelő Node"
+
+#: editor/import/resource_importer_wav.cpp
+#, fuzzy
+msgid "Max Rate Hz"
+msgstr "Mixelő Node"
+
+#: editor/import/resource_importer_wav.cpp
+msgid "Trim"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+#, fuzzy
+msgid "Normalize"
+msgstr "Véletlenszerű Skálázás:"
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+#, fuzzy
+msgid "Loop Mode"
+msgstr "Mozgató Mód"
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+#, fuzzy
+msgid "Loop Begin"
+msgstr "Mozgató Mód"
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+#, fuzzy
+msgid "Loop End"
+msgstr "Mozgató Mód"
+
#: editor/import_defaults_editor.cpp
msgid "Select Importer"
msgstr "Importer Kiválasztása"
@@ -6863,6 +7351,29 @@ msgstr "Nem sikerült betölteni az erőforrást."
#: editor/inspector_dock.cpp
#, fuzzy
+msgid "Property Name Style"
+msgstr "Projekt neve:"
+
+#: editor/inspector_dock.cpp scene/gui/color_picker.cpp
+msgid "Raw"
+msgstr ""
+
+#: editor/inspector_dock.cpp
+#, fuzzy
+msgid "Capitalized"
+msgstr "Szó Eleji Nagybetű"
+
+#: editor/inspector_dock.cpp
+#, fuzzy
+msgid "Localized"
+msgstr "Véletlenszerű Skálázás:"
+
+#: editor/inspector_dock.cpp
+msgid "Localization not available for current language."
+msgstr ""
+
+#: editor/inspector_dock.cpp
+#, fuzzy
msgid "Copy Properties"
msgstr "Tulajdonságok"
@@ -7905,18 +8416,26 @@ msgid "License (Z-A)"
msgstr "Licenc (Z-A)"
#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgctxt "Pagination"
msgid "First"
msgstr "Első"
-#: editor/plugins/asset_library_editor_plugin.cpp scene/gui/control.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgctxt "Pagination"
msgid "Previous"
msgstr "Előző"
-#: editor/plugins/asset_library_editor_plugin.cpp scene/gui/control.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgctxt "Pagination"
msgid "Next"
msgstr "Következő"
#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgctxt "Pagination"
msgid "Last"
msgstr "Utolsó"
@@ -8165,19 +8684,19 @@ msgid ""
"margins."
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Top Left"
msgstr "Bal felső"
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Top Right"
msgstr "Jobb felső"
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Bottom Right"
msgstr "Jobb alsó"
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Bottom Left"
msgstr "Bal alsó"
@@ -8899,6 +9418,19 @@ msgstr "GI Szonda Besütése"
msgid "Gradient Edited"
msgstr "Színátmenet szerkesztve"
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+msgid "Swap GradientTexture2D Fill Points"
+msgstr ""
+
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+msgid "Swap Gradient Fill Points"
+msgstr ""
+
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+#, fuzzy
+msgid "Toggle Grid Snap"
+msgstr "Mód váltása"
+
#: editor/plugins/item_list_editor_plugin.cpp
msgid "Item %d"
msgstr "%d elem"
@@ -9118,8 +9650,9 @@ msgstr ""
"Frissíti a meglévő jelenetből?:\n"
"%s"
-#: editor/plugins/mesh_library_editor_plugin.cpp modules/gridmap/grid_map.cpp
-msgid "Mesh Library"
+#: editor/plugins/mesh_library_editor_plugin.cpp
+#, fuzzy
+msgid "MeshLibrary"
msgstr "MeshLibrary"
#: editor/plugins/mesh_library_editor_plugin.cpp
@@ -10109,8 +10642,8 @@ msgstr "Kapcsolatok a metódushoz:"
msgid "Source"
msgstr "Forrás"
-#: editor/plugins/script_text_editor.cpp scene/3d/interpolated_camera.cpp
-#: scene/animation/skeleton_ik.cpp
+#: editor/plugins/script_text_editor.cpp platform/uwp/export/export.cpp
+#: scene/3d/interpolated_camera.cpp scene/animation/skeleton_ik.cpp
msgid "Target"
msgstr ""
@@ -11098,7 +11631,9 @@ msgstr ""
#: editor/plugins/sprite_frames_editor_plugin.cpp
#: modules/gltf/gltf_animation.cpp modules/minimp3/audio_stream_mp3.cpp
-#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp scene/2d/path_2d.cpp
+#: modules/minimp3/resource_importer_mp3.cpp
+#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp
+#: modules/stb_vorbis/resource_importer_ogg_vorbis.cpp scene/2d/path_2d.cpp
#: scene/3d/path.cpp scene/resources/animation.cpp scene/resources/material.cpp
msgid "Loop"
msgstr "Ciklus"
@@ -12033,8 +12568,9 @@ msgstr "Bitmaszk"
msgid "Priority"
msgstr "Prioritás"
-#: editor/plugins/tile_set_editor_plugin.cpp main/main.cpp scene/gui/button.cpp
-#: scene/gui/item_list.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp main/main.cpp
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#: scene/gui/button.cpp scene/gui/item_list.cpp
msgid "Icon"
msgstr "Ikon"
@@ -13337,10 +13873,6 @@ msgid ""
msgstr ""
#: editor/project_export.cpp
-msgid "Release"
-msgstr ""
-
-#: editor/project_export.cpp
msgid "Exporting All"
msgstr "Összes exportálása"
@@ -15123,6 +15655,7 @@ msgid "Change AudioStreamPlayer3D Emission Angle"
msgstr ""
#: editor/spatial_editor_gizmos.cpp modules/gltf/gltf_node.cpp
+#: platform/osx/export/export.cpp
msgid "Camera"
msgstr ""
@@ -15408,7 +15941,8 @@ msgstr ""
msgid "Use Nvidia Rect Flicker Workaround"
msgstr ""
-#: main/main.cpp platform/uwp/os_uwp.cpp
+#: main/main.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp platform/uwp/os_uwp.cpp
#, fuzzy
msgid "Display"
msgstr "Az összes megjelenítése"
@@ -15467,19 +16001,6 @@ msgstr ""
msgid "Allowed"
msgstr ""
-#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp scene/2d/camera_2d.cpp
-#: scene/2d/light_2d.cpp scene/2d/navigation_polygon.cpp
-#: scene/2d/ray_cast_2d.cpp scene/2d/sprite.cpp scene/2d/y_sort.cpp
-#: scene/3d/audio_stream_player_3d.cpp scene/3d/baked_lightmap.cpp
-#: scene/3d/interpolated_camera.cpp scene/3d/light.cpp
-#: scene/3d/navigation_mesh_instance.cpp scene/3d/ray_cast.cpp
-#: scene/3d/sprite_3d.cpp scene/gui/graph_edit.cpp
-#: scene/gui/rich_text_label.cpp scene/resources/curve.cpp
-#: scene/resources/environment.cpp
-#, fuzzy
-msgid "Enabled"
-msgstr "Engedélyezés"
-
#: main/main.cpp
msgid "Intended Usage"
msgstr ""
@@ -15511,13 +16032,14 @@ msgstr ""
msgid "Handheld"
msgstr ""
-#: main/main.cpp
+#: main/main.cpp platform/javascript/export/export.cpp
+#: platform/uwp/export/export.cpp
#, fuzzy
msgid "Orientation"
msgstr "Dokumentáció megnyitása"
#: main/main.cpp scene/gui/scroll_container.cpp scene/gui/text_edit.cpp
-#: scene/main/scene_tree.cpp
+#: scene/main/scene_tree.cpp scene/register_scene_types.cpp
#, fuzzy
msgid "Common"
msgstr "Közösség"
@@ -15560,7 +16082,7 @@ msgstr ""
#: main/main.cpp
#, fuzzy
-msgid "Frame Delay (msec)"
+msgid "Frame Delay Msec"
msgstr "Kijelölés Keretezése"
#: main/main.cpp
@@ -15687,11 +16209,6 @@ msgstr ""
msgid "Tooltip Position Offset"
msgstr "Forgatási Eltolás:"
-#: main/main.cpp modules/mono/editor/csharp_project.cpp
-#: modules/mono/mono_gd/gd_mono.cpp
-msgid "Mono"
-msgstr ""
-
#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp
#, fuzzy
msgid "Debugger Agent"
@@ -16266,7 +16783,7 @@ msgstr "Szín"
msgid "Intensity"
msgstr ""
-#: modules/gltf/gltf_light.cpp scene/2d/light_2d.cpp
+#: modules/gltf/gltf_light.cpp scene/2d/light_2d.cpp scene/3d/light.cpp
#, fuzzy
msgid "Range"
msgstr "Változtatás"
@@ -16409,11 +16926,6 @@ msgstr ""
msgid "Use Named Skin Binds"
msgstr ""
-#: modules/gltf/gltf_state.cpp scene/3d/physics_joint.cpp
-#, fuzzy
-msgid "Nodes"
-msgstr "Node"
-
#: modules/gltf/gltf_state.cpp
msgid "Buffer Views"
msgstr ""
@@ -16424,16 +16936,6 @@ msgstr ""
#: modules/gltf/gltf_state.cpp
#, fuzzy
-msgid "Meshes"
-msgstr "Mesh"
-
-#: modules/gltf/gltf_state.cpp
-#, fuzzy
-msgid "Materials"
-msgstr "A paraméter megváltozott"
-
-#: modules/gltf/gltf_state.cpp
-#, fuzzy
msgid "Scene Name"
msgstr "Scene elérési Út:"
@@ -16449,15 +16951,11 @@ msgstr "Gyökér Node Létrehozása:"
msgid "Textures"
msgstr "Funkciók"
-#: modules/gltf/gltf_state.cpp
+#: modules/gltf/gltf_state.cpp platform/uwp/export/export.cpp
msgid "Images"
msgstr ""
#: modules/gltf/gltf_state.cpp
-msgid "Skins"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp
msgid "Cameras"
msgstr ""
@@ -16492,11 +16990,15 @@ msgid "Src Image"
msgstr "Csontok Mutatása"
#: modules/gridmap/grid_map.cpp
+msgid "Mesh Library"
+msgstr "MeshLibrary"
+
+#: modules/gridmap/grid_map.cpp
#, fuzzy
msgid "Physics Material"
msgstr "Fizika Keret %"
-#: modules/gridmap/grid_map.cpp
+#: modules/gridmap/grid_map.cpp scene/3d/visual_instance.cpp
#, fuzzy
msgid "Use In Baked Light"
msgstr "Fény Besütése"
@@ -16528,6 +17030,7 @@ msgstr "Középre"
#: modules/gridmap/grid_map.cpp scene/2d/collision_object_2d.cpp
#: scene/2d/tile_map.cpp scene/3d/collision_object.cpp scene/3d/soft_body.cpp
+#: scene/resources/material.cpp
msgid "Mask"
msgstr ""
@@ -16710,7 +17213,9 @@ msgid "Ultra Quality Ray Count"
msgstr ""
#: modules/minimp3/audio_stream_mp3.cpp
+#: modules/minimp3/resource_importer_mp3.cpp
#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp
+#: modules/stb_vorbis/resource_importer_ogg_vorbis.cpp
#, fuzzy
msgid "Loop Offset"
msgstr "Rács Eltolás:"
@@ -17808,6 +18313,190 @@ msgid "The package must have at least one '.' separator."
msgstr ""
#: platform/android/export/export_plugin.cpp
+msgid "Use Custom Build"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Export Format"
+msgstr "Exportálási Útvonal"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Keystore"
+msgstr "Hibakereső"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Debug User"
+msgstr "Hibakereső"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+msgid "Debug Password"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Release User"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Release Password"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "One Click Deploy"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Clear Previous Install"
+msgstr "Előző lap"
+
+#: platform/android/export/export_plugin.cpp scene/resources/shader.cpp
+msgid "Code"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Min SDK"
+msgstr "Körvonal Mérete:"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Target SDK"
+msgstr "Cél Felület:"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Package"
+msgstr "Csomagolás"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Unique Name"
+msgstr "Node neve:"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Signed"
+msgstr "Jelzés"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Classify As Game"
+msgstr "Osztálynév:"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Retain Data On Uninstall"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Exclude From Recents"
+msgstr "Node-ok törlése"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Graphics"
+msgstr "Rács Eltolás:"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "OpenGL Debug"
+msgstr "Megnyitás"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "XR Features"
+msgstr "Funkciók"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "XR Mode"
+msgstr "Pásztázás Mód"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Hand Tracking"
+msgstr "Csomagolás"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Hand Tracking Frequency"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Passthrough"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Immersive Mode"
+msgstr "Prioritás mód"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Support Small"
+msgstr "Támogatás"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Support Normal"
+msgstr "Támogatás"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Support Large"
+msgstr "Támogatás"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Support Xlarge"
+msgstr "Támogatás"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "User Data Backup"
+msgstr "Felhasználói Felület"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Allow"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Command Line"
+msgstr "Közösség"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Extra Args"
+msgstr "További hívási argumentumok:"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "APK Expansion"
+msgstr "Kifejezés beállítása"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Salt"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Public Key"
+msgstr "Kulcs(ok) Megkettőzése"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Permissions"
+msgstr "Kibocsátási Maszk"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Custom Permissions"
+msgstr "Tetszőleges jelenet lejátszása"
+
+#: platform/android/export/export_plugin.cpp
msgid "Select device from the list"
msgstr "Válasszon készüléket a listából"
@@ -18108,6 +18797,177 @@ msgid "The character '%s' is not allowed in Identifier."
msgstr ""
#: platform/iphone/export/export.cpp
+msgid "App Store Team ID"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Provisioning Profile UUID Debug"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Code Sign Identity Debug"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Export Method Debug"
+msgstr "Exportálási mód?"
+
+#: platform/iphone/export/export.cpp
+msgid "Provisioning Profile UUID Release"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Code Sign Identity Release"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Export Method Release"
+msgstr "Exportálási mód?"
+
+#: platform/iphone/export/export.cpp
+msgid "Targeted Device Family"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Info"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Identifier"
+msgstr "Érvénytelen azonosító:"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Signature"
+msgstr "Jelzés"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Short Version"
+msgstr "Verzió:"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Copyright"
+msgstr "Jobb felső"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Capabilities"
+msgstr "Tulajdonságok"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Access Wi-Fi"
+msgstr "Siker!"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Push Notifications"
+msgstr "Véletlenszerű Forgatás:"
+
+#: platform/iphone/export/export.cpp scene/3d/baked_lightmap.cpp
+#, fuzzy
+msgid "User Data"
+msgstr "Felhasználói Felület"
+
+#: platform/iphone/export/export.cpp
+msgid "Accessible From Files App"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Accessible From Itunes Sharing"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Privacy"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Camera Usage Description"
+msgstr "Leírás"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Microphone Usage Description"
+msgstr "Tulajdonság leírásai"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Photolibrary Usage Description"
+msgstr "Tulajdonság leírásai"
+
+#: platform/iphone/export/export.cpp
+msgid "iPhone 120 X 120"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPhone 180 X 180"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 76 X 76"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 152 X 152"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 167 X 167"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "App Store 1024 X 1024"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Spotlight 40 X 40"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Spotlight 80 X 80"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Storyboard"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Use Launch Screen Storyboard"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Image Scale Mode"
+msgstr "Méretezési mód"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Custom Image @2x"
+msgstr "Node-ok kivágása"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Custom Image @3x"
+msgstr "Node-ok kivágása"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Use Custom BG Color"
+msgstr "Node-ok kivágása"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Custom BG Color"
+msgstr "Node-ok kivágása"
+
+#: platform/iphone/export/export.cpp
msgid "App Store Team ID not specified - cannot configure the project."
msgstr ""
@@ -18146,6 +19006,80 @@ msgstr "Nem sikerült létrehozni a mappát."
#: platform/javascript/export/export.cpp
#, fuzzy
+msgid "Variant"
+msgstr "Felsorolások:"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Export Type"
+msgstr "Exportálás"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "VRAM Texture Compression"
+msgstr "Kifejezés beállítása"
+
+#: platform/javascript/export/export.cpp
+msgid "For Desktop"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "For Mobile"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Html"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Export Icon"
+msgstr "Összes kinyitása"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Custom Html Shell"
+msgstr "Node-ok kivágása"
+
+#: platform/javascript/export/export.cpp
+msgid "Head Include"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Canvas Resize Policy"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Focus Canvas On Start"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Experimental Virtual Keyboard"
+msgstr "Jelek szűrése"
+
+#: platform/javascript/export/export.cpp
+msgid "Progressive Web App"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Offline Page"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 144 X 144"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 180 X 180"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 512 X 512"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
msgid "Could not read HTML shell:"
msgstr "Nem sikerült létrehozni a mappát."
@@ -18260,6 +19194,201 @@ msgid "Unknown object type."
msgstr ""
#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "App Category"
+msgstr "Kategória:"
+
+#: platform/osx/export/export.cpp
+msgid "High Res"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Location Usage Description"
+msgstr "Leírás"
+
+#: platform/osx/export/export.cpp
+msgid "Address Book Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Calendar Usage Description"
+msgstr "Leírás"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Photos Library Usage Description"
+msgstr "Tulajdonság leírásai"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Desktop Folder Usage Description"
+msgstr "Metódus leírások"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Documents Folder Usage Description"
+msgstr "Metódus leírások"
+
+#: platform/osx/export/export.cpp
+msgid "Downloads Folder Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Network Volumes Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Removable Volumes Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#, fuzzy
+msgid "Codesign"
+msgstr "Node"
+
+#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Identity"
+msgstr "Behúzás Balra"
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#, fuzzy
+msgid "Timestamp"
+msgstr "Idő"
+
+#: platform/osx/export/export.cpp
+msgid "Hardened Runtime"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Replace Existing Signature"
+msgstr "Összes cseréje"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Entitlements"
+msgstr "Tartalom:"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Custom File"
+msgstr "Node-ok kivágása"
+
+#: platform/osx/export/export.cpp
+msgid "Allow JIT Code Execution"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Allow Unsigned Executable Memory"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Allow Dyld Environment Variables"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Disable Library Validation"
+msgstr "Letiltott gomb"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Audio Input"
+msgstr "Bemenet Hozzáadása"
+
+#: platform/osx/export/export.cpp
+msgid "Address Book"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Calendars"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Photos Library"
+msgstr "Könyvtár Exportálása"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Apple Events"
+msgstr "Visszaállítás"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Debugging"
+msgstr "Hibakeresés"
+
+#: platform/osx/export/export.cpp
+msgid "App Sandbox"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Network Server"
+msgstr "Hálózati profilkészítő"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Network Client"
+msgstr "Hálózati profilkészítő"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Device Usb"
+msgstr "Eszköz"
+
+#: platform/osx/export/export.cpp
+msgid "Device Bluetooth"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Files Downloads"
+msgstr "Letöltés"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Files Pictures"
+msgstr "Funkciók"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Files Music"
+msgstr "Fájl"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Files Movies"
+msgstr "Csempék szűrése"
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#, fuzzy
+msgid "Custom Options"
+msgstr "Busz Beállítások"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Notarization"
+msgstr "Lokalizáció"
+
+#: platform/osx/export/export.cpp
+msgid "Apple ID Name"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Apple ID Password"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Apple Team ID"
+msgstr ""
+
+#: platform/osx/export/export.cpp
msgid ""
"Note: The notarization process generally takes less than an hour. When the "
"process is completed, you'll receive an email."
@@ -18452,6 +19581,134 @@ msgid "Force Builtin Codesign"
msgstr ""
#: platform/uwp/export/export.cpp
+msgid "Architecture"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Display Name"
+msgstr "Az összes megjelenítése"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Short Name"
+msgstr "Szkript neve:"
+
+#: platform/uwp/export/export.cpp
+msgid "Publisher"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Publisher Display Name"
+msgstr "Érvénytelen csomagközzétevő megjelenítendő neve."
+
+#: platform/uwp/export/export.cpp
+msgid "Product Guid"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Publisher Guid"
+msgstr "Segédvonalak törlése"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Signing"
+msgstr "Jelzés"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Certificate"
+msgstr "Részecskék"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Algorithm"
+msgstr "Hibakereső"
+
+#: platform/uwp/export/export.cpp
+msgid "Major"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Minor"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Build"
+msgstr "Vonalzó mód"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Revision"
+msgstr "Kifejezés beállítása"
+
+#: platform/uwp/export/export.cpp
+msgid "Landscape"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Portrait"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Landscape Flipped"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Portrait Flipped"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Store Logo"
+msgstr "Méretezési mód"
+
+#: platform/uwp/export/export.cpp
+msgid "Square 44 X 44 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 71 X 71 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 150 X 150 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 310 X 310 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Wide 310 X 150 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Splash Screen"
+msgstr "Hívások"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Tiles"
+msgstr "Fájl"
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Square 150 X 150"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Wide 310 X 150"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Square 310 X 310"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
msgid "Invalid package short name."
msgstr "Érvénytelen rövid csomagnév."
@@ -18517,15 +19774,53 @@ msgid "Debug Certificate"
msgstr ""
#: platform/uwp/export/export.cpp
-msgid "Debug Password"
+#, fuzzy
+msgid "Debug Algorithm"
+msgstr "Hibakereső"
+
+#: platform/windows/export/export.cpp
+msgid "Identity Type"
msgstr ""
-#: platform/uwp/export/export.cpp
+#: platform/windows/export/export.cpp
+msgid "Timestamp Server URL"
+msgstr ""
+
+#: platform/windows/export/export.cpp
#, fuzzy
-msgid "Debug Algorithm"
+msgid "Digest Algorithm"
msgstr "Hibakereső"
#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "File Version"
+msgstr "Verzió:"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Product Version"
+msgstr "Érvénytelen termék GUID."
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Company Name"
+msgstr "Node neve:"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Product Name"
+msgstr "Projekt neve:"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "File Description"
+msgstr "Leírás"
+
+#: platform/windows/export/export.cpp
+msgid "Trademarks"
+msgstr ""
+
+#: platform/windows/export/export.cpp
msgid ""
"The rcedit tool must be configured in the Editor Settings (Export > Windows "
"> Rcedit) to change the icon or app information data."
@@ -18598,12 +19893,14 @@ msgstr "Játék"
msgid "Centered"
msgstr "Középre"
-#: scene/2d/animated_sprite.cpp scene/2d/camera_2d.cpp scene/2d/light_2d.cpp
+#: scene/2d/animated_sprite.cpp scene/2d/camera_2d.cpp
+#: scene/2d/cpu_particles_2d.cpp scene/2d/light_2d.cpp
#: scene/2d/parallax_background.cpp scene/2d/parallax_layer.cpp
#: scene/2d/path_2d.cpp scene/2d/polygon_2d.cpp scene/2d/sprite.cpp
-#: scene/3d/path.cpp scene/3d/physics_body.cpp scene/3d/sprite_3d.cpp
-#: scene/gui/graph_node.cpp scene/gui/rich_text_effect.cpp
-#: scene/main/canvas_layer.cpp scene/resources/material.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/path.cpp scene/3d/physics_body.cpp
+#: scene/3d/sprite_3d.cpp scene/gui/graph_node.cpp
+#: scene/gui/rich_text_effect.cpp scene/main/canvas_layer.cpp
+#: scene/resources/material.cpp scene/resources/particles_material.cpp
#: scene/resources/style_box.cpp
#, fuzzy
msgid "Offset"
@@ -18676,11 +19973,6 @@ msgstr "Hangbusz Hozzáadása"
msgid "Override"
msgstr "Felülírás"
-#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
-#: scene/audio/audio_stream_player.cpp scene/gui/video_player.cpp
-msgid "Stream"
-msgstr ""
-
#: scene/2d/audio_stream_player_2d.cpp scene/audio/audio_stream_player.cpp
#: scene/gui/video_player.cpp servers/audio/effects/audio_effect_amplify.cpp
#, fuzzy
@@ -18707,13 +19999,13 @@ msgid "Stream Paused"
msgstr ""
#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
-#: scene/3d/reflection_probe.cpp scene/3d/visual_instance.cpp
-#: scene/resources/material.cpp
+#: scene/3d/light.cpp scene/3d/reflection_probe.cpp
+#: scene/3d/visual_instance.cpp scene/resources/material.cpp
#, fuzzy
msgid "Max Distance"
msgstr "Példány"
-#: scene/2d/audio_stream_player_2d.cpp
+#: scene/2d/audio_stream_player_2d.cpp scene/3d/light.cpp
#, fuzzy
msgid "Attenuation"
msgstr "Animáció"
@@ -18769,6 +20061,24 @@ msgstr "Mozgató Mód"
msgid "Limit"
msgstr ""
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/style_box.cpp
+#, fuzzy
+msgid "Left"
+msgstr "Bal felső"
+
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/style_box.cpp
+#, fuzzy
+msgid "Right"
+msgstr "Jobb felső"
+
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/dynamic_font.cpp scene/resources/style_box.cpp
+#, fuzzy
+msgid "Bottom"
+msgstr "Bal alsó"
+
#: scene/2d/camera_2d.cpp
#, fuzzy
msgid "Smoothed"
@@ -18984,13 +20294,6 @@ msgstr ""
msgid "Emitting"
msgstr "Beállítások:"
-#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp scene/3d/area.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
-#: scene/resources/environment.cpp
-#, fuzzy
-msgid "Amount"
-msgstr "Mennyiség:"
-
#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp
#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
msgid "Lifetime"
@@ -19054,18 +20357,13 @@ msgstr ""
#: scene/2d/mesh_instance_2d.cpp scene/2d/multimesh_instance_2d.cpp
#: scene/2d/particles_2d.cpp scene/2d/polygon_2d.cpp scene/2d/sprite.cpp
#: scene/3d/sprite_3d.cpp scene/gui/nine_patch_rect.cpp
-#: scene/gui/texture_rect.cpp scene/resources/sky.cpp
-#: scene/resources/style_box.cpp scene/resources/visual_shader_nodes.cpp
+#: scene/gui/texture_rect.cpp scene/resources/material.cpp
+#: scene/resources/sky.cpp scene/resources/style_box.cpp
+#: scene/resources/visual_shader_nodes.cpp
#, fuzzy
msgid "Texture"
msgstr "Textúra eltávolítása"
-#: scene/2d/cpu_particles_2d.cpp scene/2d/mesh_instance_2d.cpp
-#: scene/2d/multimesh_instance_2d.cpp scene/2d/particles_2d.cpp
-#: scene/2d/sprite.cpp scene/resources/style_box.cpp
-msgid "Normal Map"
-msgstr ""
-
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
#, fuzzy
@@ -19088,10 +20386,10 @@ msgid "Normals"
msgstr "Véletlenszerű Skálázás:"
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/3d/sprite_3d.cpp scene/resources/material.cpp
-#: scene/resources/particles_material.cpp scene/resources/texture.cpp
-msgid "Flags"
-msgstr ""
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Align Y"
+msgstr "Hozzárendelés..."
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
@@ -19112,6 +20410,12 @@ msgid "Initial Velocity"
msgstr "Inicializálás"
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Velocity Random"
+msgstr "Inicializálás"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp servers/physics_2d_server.cpp
#: servers/physics_server.cpp
msgid "Angular Velocity"
@@ -19119,6 +20423,12 @@ msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Velocity Curve"
+msgstr "Inicializálás"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
msgid "Orbit Velocity"
msgstr ""
@@ -19130,6 +20440,23 @@ msgstr "Lineáris"
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Accel"
+msgstr "Siker!"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Accel Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Accel Curve"
+msgstr "Görbe Lezárása"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
msgid "Radial Accel"
msgstr ""
@@ -19139,19 +20466,55 @@ msgid "Tangential Accel"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/2d/joints_2d.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/vehicle_body.cpp
-#: scene/resources/particles_material.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/physics_joint.cpp
+#: scene/3d/vehicle_body.cpp scene/resources/particles_material.cpp
#: servers/audio/effects/audio_effect_reverb.cpp
msgid "Damping"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+msgid "Damping Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Damping Curve"
+msgstr "Görbe Lezárása"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp scene/3d/light.cpp
+#: scene/resources/particles_material.cpp
msgid "Angle"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+msgid "Angle Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Angle Curve"
+msgstr "Görbe Lezárása"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#, fuzzy
+msgid "Scale Amount"
+msgstr "Mennyiség:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+msgid "Scale Amount Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#, fuzzy
+msgid "Scale Amount Curve"
+msgstr "Nyújtás a Kurzortól"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
#, fuzzy
msgid "Color Ramp"
msgstr "Szín"
@@ -19167,6 +20530,48 @@ msgstr ""
msgid "Hue Variation"
msgstr "Felsorolások:"
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Variation"
+msgstr "Felsorolások:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Variation Random"
+msgstr "Felsorolások:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Variation Curve"
+msgstr "Felsorolások:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Speed Random"
+msgstr "Skála:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Speed Curve"
+msgstr "Aktuális Mappa Kiválasztása"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Offset Random"
+msgstr "Rács Eltolás:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Offset Curve"
+msgstr "Görbe Lezárása"
+
#: scene/2d/joints_2d.cpp
msgid "Node A and Node B must be PhysicsBody2Ds"
msgstr ""
@@ -19198,6 +20603,7 @@ msgid "Node B"
msgstr "Node"
#: scene/2d/joints_2d.cpp scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp
+#: scene/3d/light.cpp scene/3d/physics_joint.cpp
#: scene/resources/environment.cpp
msgid "Bias"
msgstr ""
@@ -19207,7 +20613,7 @@ msgstr ""
msgid "Disable Collision"
msgstr "Letiltott gomb"
-#: scene/2d/joints_2d.cpp
+#: scene/2d/joints_2d.cpp scene/3d/physics_joint.cpp
msgid "Softness"
msgstr ""
@@ -19225,7 +20631,7 @@ msgstr "Inicializálás"
msgid "Rest Length"
msgstr ""
-#: scene/2d/joints_2d.cpp scene/3d/vehicle_body.cpp
+#: scene/2d/joints_2d.cpp scene/3d/physics_joint.cpp scene/3d/vehicle_body.cpp
msgid "Stiffness"
msgstr ""
@@ -19245,7 +20651,7 @@ msgid "Texture Scale"
msgstr ""
#: scene/2d/light_2d.cpp scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp
-#: scene/resources/environment.cpp scene/resources/sky.cpp
+#: scene/3d/light.cpp scene/resources/environment.cpp scene/resources/sky.cpp
msgid "Energy"
msgstr ""
@@ -19286,12 +20692,6 @@ msgstr "Méret: "
msgid "Gradient Length"
msgstr "Színátmenet szerkesztve"
-#: scene/2d/light_2d.cpp scene/gui/control.cpp
-#: scene/resources/navigation_mesh.cpp
-#, fuzzy
-msgid "Filter"
-msgstr "Szűrők:"
-
#: scene/2d/light_2d.cpp
#, fuzzy
msgid "Filter Smooth"
@@ -19701,11 +21101,6 @@ msgid "Applied Forces"
msgstr ""
#: scene/2d/physics_body_2d.cpp
-#, fuzzy
-msgid "Force"
-msgstr "Forrás Mesh:"
-
-#: scene/2d/physics_body_2d.cpp
msgid "Torque"
msgstr ""
@@ -19720,7 +21115,7 @@ msgid "Sync To Physics"
msgstr "Fizika Keret %"
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-msgid "Moving platform"
+msgid "Moving Platform"
msgstr ""
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
@@ -19729,7 +21124,7 @@ msgstr ""
#: scene/2d/physics_body_2d.cpp scene/2d/touch_screen_button.cpp
#: scene/3d/physics_body.cpp scene/gui/texture_button.cpp
-#: scene/resources/line_shape_2d.cpp
+#: scene/resources/line_shape_2d.cpp scene/resources/material.cpp
msgid "Normal"
msgstr ""
@@ -19962,6 +21357,34 @@ msgid ""
"as parent."
msgstr ""
+#: scene/2d/visibility_notifier_2d.cpp scene/3d/visibility_notifier.cpp
+#, fuzzy
+msgid "Pause Animations"
+msgstr "Animáció Beillesztése"
+
+#: scene/2d/visibility_notifier_2d.cpp scene/3d/visibility_notifier.cpp
+msgid "Freeze Bodies"
+msgstr ""
+
+#: scene/2d/visibility_notifier_2d.cpp
+#, fuzzy
+msgid "Pause Particles"
+msgstr "Részecskék"
+
+#: scene/2d/visibility_notifier_2d.cpp
+#, fuzzy
+msgid "Pause Animated Sprites"
+msgstr "Animáció Beillesztése"
+
+#: scene/2d/visibility_notifier_2d.cpp
+#, fuzzy
+msgid "Process Parent"
+msgstr "Prioritás Engedélyezése"
+
+#: scene/2d/visibility_notifier_2d.cpp
+msgid "Physics Process Parent"
+msgstr ""
+
#: scene/3d/area.cpp
msgid "Reverb Bus"
msgstr ""
@@ -20058,6 +21481,7 @@ msgid "Attenuation Filter"
msgstr ""
#: scene/3d/audio_stream_player_3d.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
#: servers/audio/effects/audio_effect_filter.cpp
msgid "Cutoff Hz"
msgstr ""
@@ -20100,11 +21524,6 @@ msgid "Octree"
msgstr ""
#: scene/3d/baked_lightmap.cpp
-#, fuzzy
-msgid "User Data"
-msgstr "Felhasználói Felület"
-
-#: scene/3d/baked_lightmap.cpp
msgid "Finding meshes and lights"
msgstr ""
@@ -20360,6 +21779,16 @@ msgid "Ring Axis"
msgstr "Figyelmeztetések"
#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Rotate Y"
+msgstr "Forgató Mód"
+
+#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Disable Z"
+msgstr "Letiltott elem"
+
+#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
msgid "Flatness"
msgstr ""
@@ -20397,16 +21826,11 @@ msgstr ""
msgid "Dynamic Range"
msgstr ""
-#: scene/3d/gi_probe.cpp
+#: scene/3d/gi_probe.cpp scene/3d/light.cpp
msgid "Normal Bias"
msgstr ""
#: scene/3d/gi_probe.cpp
-#, fuzzy
-msgid "Compress"
-msgstr "Összetevők"
-
-#: scene/3d/gi_probe.cpp
msgid "Plotting Meshes"
msgstr ""
@@ -20432,16 +21856,31 @@ msgid "Subdiv"
msgstr ""
#: scene/3d/light.cpp
+#, fuzzy
+msgid "Indirect Energy"
+msgstr "Kibocsátási színek"
+
+#: scene/3d/light.cpp
msgid "Negative"
msgstr ""
#: scene/3d/light.cpp
#, fuzzy
+msgid "Specular"
+msgstr "Vonalzó mód"
+
+#: scene/3d/light.cpp
+#, fuzzy
msgid "Bake Mode"
msgstr "Forgató Mód"
#: scene/3d/light.cpp
#, fuzzy
+msgid "Contact"
+msgstr "Szín Választása"
+
+#: scene/3d/light.cpp
+#, fuzzy
msgid "Reverse Cull Face"
msgstr "Busz Hangerő Visszaállítása"
@@ -20452,11 +21891,31 @@ msgstr "Irányok"
#: scene/3d/light.cpp
#, fuzzy
+msgid "Split 1"
+msgstr "Útvonal Felosztása"
+
+#: scene/3d/light.cpp
+#, fuzzy
+msgid "Split 2"
+msgstr "Útvonal Felosztása"
+
+#: scene/3d/light.cpp
+#, fuzzy
+msgid "Split 3"
+msgstr "Útvonal Felosztása"
+
+#: scene/3d/light.cpp
+#, fuzzy
msgid "Blend Splits"
msgstr "Keverési Idők:"
#: scene/3d/light.cpp
#, fuzzy
+msgid "Bias Split Scale"
+msgstr "Új szkript"
+
+#: scene/3d/light.cpp
+#, fuzzy
msgid "Depth Range"
msgstr "Mélység"
@@ -20482,6 +21941,11 @@ msgstr ""
msgid "Spot"
msgstr ""
+#: scene/3d/light.cpp
+#, fuzzy
+msgid "Angle Attenuation"
+msgstr "Animáció"
+
#: scene/3d/mesh_instance.cpp
msgid "Software Skinning"
msgstr ""
@@ -20607,6 +22071,63 @@ msgstr "Tengely"
#: scene/3d/physics_body.cpp
#, fuzzy
+msgid "Linear X"
+msgstr "Lineáris"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Linear Y"
+msgstr "Lineáris"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Linear Z"
+msgstr "Lineáris"
+
+#: scene/3d/physics_body.cpp
+msgid "Angular X"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Angular Y"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Angular Z"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Motion X"
+msgstr "Művelet"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Motion Y"
+msgstr "Művelet"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Motion Z"
+msgstr "Művelet"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Move Lock X"
+msgstr "Node áthelyezése"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Move Lock Y"
+msgstr "Node áthelyezése"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Move Lock Z"
+msgstr "Node áthelyezése"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
msgid "Body Offset"
msgstr "Rács Eltolás:"
@@ -20640,6 +22161,15 @@ msgid "Exclude Nodes"
msgstr "Node-ok törlése"
#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Params"
+msgstr "A paraméter megváltozott"
+
+#: scene/3d/physics_joint.cpp
+msgid "Impulse Clamp"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit"
msgstr ""
@@ -20653,6 +22183,55 @@ msgstr "Mind Nagybetű"
msgid "Lower"
msgstr "Mind Kisbetű"
+#: scene/3d/physics_joint.cpp scene/3d/vehicle_body.cpp
+#, fuzzy
+msgid "Relaxation"
+msgstr "Felsorolások:"
+
+#: scene/3d/physics_joint.cpp
+msgid "Motor"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Target Velocity"
+msgstr "Inicializálás"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Max Impulse"
+msgstr "Érték:"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit"
+msgstr "Lineáris"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Upper Distance"
+msgstr "Példány"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Lower Distance"
+msgstr "Példány"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Restitution"
+msgstr "Leírás"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motion"
+msgstr "Inicializálás"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Ortho"
+msgstr "Ortogonális"
+
#: scene/3d/physics_joint.cpp
#, fuzzy
msgid "Upper Angle"
@@ -20665,6 +22244,16 @@ msgstr "Mind Kisbetű"
#: scene/3d/physics_joint.cpp
#, fuzzy
+msgid "Angular Motion"
+msgstr "Animáció"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Angular Ortho"
+msgstr "Maximum szög hiba:"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
msgid "Swing Span"
msgstr "Scene mentése"
@@ -20673,17 +22262,99 @@ msgid "Twist Span"
msgstr ""
#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit X"
+msgstr "Lineáris"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motor X"
+msgstr "Inicializálás"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Force Limit"
+msgstr "Hívások"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Spring X"
+msgstr "Lineáris"
+
+#: scene/3d/physics_joint.cpp
+msgid "Equilibrium Point"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit X"
msgstr ""
#: scene/3d/physics_joint.cpp
+msgid "Erp"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Motor X"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Spring X"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit Y"
+msgstr "Lineáris"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motor Y"
+msgstr "Inicializálás"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Spring Y"
+msgstr "Lineáris"
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit Y"
msgstr ""
#: scene/3d/physics_joint.cpp
+msgid "Angular Motor Y"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Spring Y"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit Z"
+msgstr "Lineáris"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motor Z"
+msgstr "Inicializálás"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Spring Z"
+msgstr "Lineáris"
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit Z"
msgstr ""
+#: scene/3d/physics_joint.cpp
+msgid "Angular Motor Z"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Spring Z"
+msgstr ""
+
#: scene/3d/portal.cpp
msgid "The RoomManager should not be a child or grandchild of a Portal."
msgstr ""
@@ -20800,7 +22471,7 @@ msgstr ""
msgid "Use Default Simplify"
msgstr ""
-#: scene/3d/room.cpp
+#: scene/3d/room.cpp scene/3d/room_manager.cpp
msgid "Room Simplify"
msgstr ""
@@ -20839,6 +22510,13 @@ msgstr ""
msgid "Main"
msgstr ""
+#: scene/3d/room_manager.cpp scene/animation/animation_player.cpp
+#: scene/animation/animation_tree.cpp scene/animation/animation_tree_player.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+#, fuzzy
+msgid "Active"
+msgstr "Művelet"
+
#: scene/3d/room_manager.cpp
msgid "Roomlist"
msgstr ""
@@ -20863,6 +22541,52 @@ msgid "Gameplay"
msgstr ""
#: scene/3d/room_manager.cpp
+msgid "Gameplay Monitor"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "Use Secondary PVS"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Merge Meshes"
+msgstr "Mesh"
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Show Margins"
+msgstr "Origó Megjelenítése"
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Debug Sprawl"
+msgstr "Hibakeresés"
+
+#: scene/3d/room_manager.cpp
+msgid "Overlap Warning Threshold"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Preview Camera"
+msgstr "Előnézet"
+
+#: scene/3d/room_manager.cpp
+msgid "Portal Depth Limit"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Default Portal Margin"
+msgstr "Margó Beállítása"
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Roaming Expansion Margin"
+msgstr "Összes kinyitása"
+
+#: scene/3d/room_manager.cpp
msgid ""
"RoomList path is invalid.\n"
"Please check the RoomList branch has been assigned in the RoomManager."
@@ -20986,6 +22710,20 @@ msgstr "Körvonal Mérete:"
msgid "Billboard"
msgstr ""
+#: scene/3d/sprite_3d.cpp scene/resources/material.cpp
+#, fuzzy
+msgid "Transparent"
+msgstr "Transzpozálás"
+
+#: scene/3d/sprite_3d.cpp
+#, fuzzy
+msgid "Shaded"
+msgstr "Ãrnyaló"
+
+#: scene/3d/sprite_3d.cpp
+msgid "Double Sided"
+msgstr ""
+
#: scene/3d/sprite_3d.cpp
msgid "Alpha Cut"
msgstr ""
@@ -21057,11 +22795,6 @@ msgstr "Kifejezés beállítása"
msgid "Max Force"
msgstr "Hiba!"
-#: scene/3d/vehicle_body.cpp
-#, fuzzy
-msgid "Relaxation"
-msgstr "Felsorolások:"
-
#: scene/3d/visibility_notifier.cpp
msgid "AABB"
msgstr ""
@@ -21196,7 +22929,7 @@ msgstr "Ãttűnési IdÅ‘ (mp):"
#: scene/animation/animation_blend_tree.cpp
#, fuzzy
-msgid "autorestart_"
+msgid "Auto Restart"
msgstr "Automatikus Újraindítás:"
#: scene/animation/animation_blend_tree.cpp
@@ -21282,13 +23015,6 @@ msgstr "Osztály beállítások:"
msgid "Default Blend Time"
msgstr "Alapértelmezett"
-#: scene/animation/animation_player.cpp scene/animation/animation_tree.cpp
-#: scene/animation/animation_tree_player.cpp
-#: servers/audio/effects/audio_effect_delay.cpp
-#, fuzzy
-msgid "Active"
-msgstr "Művelet"
-
#: scene/animation/animation_player.cpp
msgid "Method Call Mode"
msgstr ""
@@ -21411,10 +23137,6 @@ msgstr "Node új szülőhöz rendelése"
msgid "Max Iterations"
msgstr "Függvények"
-#: scene/animation/tween.cpp scene/resources/texture.cpp
-msgid "Repeat"
-msgstr ""
-
#: scene/animation/tween.cpp
msgid "Playback Process Mode"
msgstr ""
@@ -21444,20 +23166,6 @@ msgstr "Kiválasztó Mód"
msgid "Alignment"
msgstr ""
-#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
-#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
-#: scene/resources/style_box.cpp
-#, fuzzy
-msgid "Horizontal"
-msgstr "Vízszintes segédvonal mozgatása"
-
-#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
-#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
-#: scene/resources/style_box.cpp
-#, fuzzy
-msgid "Vertical"
-msgstr "Függőleges segédvonal mozgatása"
-
#: scene/gui/base_button.cpp
#, fuzzy
msgid "Shortcut In Tooltip"
@@ -21556,10 +23264,6 @@ msgid "HSV"
msgstr ""
#: scene/gui/color_picker.cpp
-msgid "Raw"
-msgstr ""
-
-#: scene/gui/color_picker.cpp
msgid "Switch between hexadecimal and code values."
msgstr ""
@@ -21620,6 +23324,31 @@ msgid "Focus"
msgstr "Elérési Út Fókuszálása"
#: scene/gui/control.cpp
+msgid "Neighbour Left"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Neighbour Top"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Neighbour Right"
+msgstr ""
+
+#: scene/gui/control.cpp
+#, fuzzy
+msgid "Neighbour Bottom"
+msgstr "Középre lent"
+
+#: scene/gui/control.cpp
+msgid "Next"
+msgstr "Következő"
+
+#: scene/gui/control.cpp
+msgid "Previous"
+msgstr "Előző"
+
+#: scene/gui/control.cpp
msgid "Mouse"
msgstr ""
@@ -21656,7 +23385,7 @@ msgid "Dialog"
msgstr ""
#: scene/gui/dialogs.cpp
-msgid "Hide On Ok"
+msgid "Hide On OK"
msgstr ""
#: scene/gui/dialogs.cpp scene/gui/label.cpp
@@ -21755,7 +23484,7 @@ msgid "Timers"
msgstr "Idő"
#: scene/gui/item_list.cpp scene/gui/popup_menu.cpp scene/gui/tree.cpp
-msgid "Incremental Search Max Interval (msec)"
+msgid "Incremental Search Max Interval Msec"
msgstr ""
#: scene/gui/item_list.cpp scene/gui/tree.cpp
@@ -22324,6 +24053,26 @@ msgstr "Bal közép"
msgid "Nine Patch Stretch"
msgstr "Interpolálás Módja"
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Left"
+msgstr "Margó Beállítása"
+
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Top"
+msgstr "Margó Beállítása"
+
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Right"
+msgstr "Margó Beállítása"
+
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Bottom"
+msgstr "Kiválasztó Mód"
+
#: scene/gui/tree.cpp
msgid "Custom Minimum Height"
msgstr ""
@@ -22360,8 +24109,9 @@ msgid "Paused"
msgstr ""
#: scene/gui/video_player.cpp
-msgid "Buffering (msec)"
-msgstr ""
+#, fuzzy
+msgid "Buffering Msec"
+msgstr "Méret: "
#: scene/gui/video_player.cpp
#, fuzzy
@@ -22709,6 +24459,22 @@ msgid "Shadow Atlas"
msgstr ""
#: scene/main/viewport.cpp
+msgid "Quad 0"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 1"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 2"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 3"
+msgstr ""
+
+#: scene/main/viewport.cpp
#, fuzzy
msgid "Canvas Transform"
msgstr "Animáció - Transzformáció Változtatása"
@@ -22723,6 +24489,11 @@ msgid "Tooltip Delay (sec)"
msgstr ""
#: scene/register_scene_types.cpp
+#, fuzzy
+msgid "Swap OK Cancel"
+msgstr "Mégse"
+
+#: scene/register_scene_types.cpp
msgid "Use hiDPI"
msgstr ""
@@ -22737,21 +24508,6 @@ msgid "Custom Font"
msgstr "Node-ok kivágása"
#: scene/resources/audio_stream_sample.cpp
-#, fuzzy
-msgid "Loop Mode"
-msgstr "Mozgató Mód"
-
-#: scene/resources/audio_stream_sample.cpp
-#, fuzzy
-msgid "Loop Begin"
-msgstr "Mozgató Mód"
-
-#: scene/resources/audio_stream_sample.cpp
-#, fuzzy
-msgid "Loop End"
-msgstr "Mozgató Mód"
-
-#: scene/resources/audio_stream_sample.cpp
#: servers/audio/effects/audio_stream_generator.cpp servers/audio_server.cpp
#, fuzzy
msgid "Mix Rate"
@@ -22811,6 +24567,17 @@ msgstr "Osztály beállítások:"
#: scene/resources/dynamic_font.cpp
#, fuzzy
+msgid "Char"
+msgstr "Érvényes karakterek:"
+
+#: scene/resources/dynamic_font.cpp scene/resources/world.cpp
+#: scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Space"
+msgstr "FÅ‘ Jelenet"
+
+#: scene/resources/dynamic_font.cpp
+#, fuzzy
msgid "Font"
msgstr "Betűtípus"
@@ -23035,6 +24802,43 @@ msgid "Glow"
msgstr ""
#: scene/resources/environment.cpp
+#, fuzzy
+msgid "Levels"
+msgstr "Fejlesztők"
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "1"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "2"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "3"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "4"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "5"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "6"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "7"
+msgstr ""
+
+#: scene/resources/environment.cpp
msgid "Bloom"
msgstr ""
@@ -23127,9 +24931,66 @@ msgid "Next Pass"
msgstr "Következő Síklap"
#: scene/resources/material.cpp
+msgid "Use Shadow To Opacity"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Unshaded"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Vertex Lighting"
+msgstr "Közvetlen megvilágítás"
+
+#: scene/resources/material.cpp
+msgid "No Depth Test"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Use Point Size"
+msgstr "Körvonal Mérete:"
+
+#: scene/resources/material.cpp
+msgid "World Triplanar"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Fixed Size"
+msgstr "Körvonal Mérete:"
+
+#: scene/resources/material.cpp
+msgid "Albedo Tex Force sRGB"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Do Not Receive Shadows"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Disable Ambient Light"
+msgstr "Behúzás Jobbra"
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Ensure Correct Normals"
+msgstr "Ãtalakítás Megszakítva."
+
+#: scene/resources/material.cpp
msgid "Vertex Color"
msgstr ""
+#: scene/resources/material.cpp
+msgid "Use As Albedo"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Is sRGB"
+msgstr ""
+
#: scene/resources/material.cpp servers/visual_server.cpp
#, fuzzy
msgid "Parameters"
@@ -23166,6 +25027,11 @@ msgid "Billboard Mode"
msgstr "Vonalzó mód"
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Billboard Keep Scale"
+msgstr "Vonalzó mód"
+
+#: scene/resources/material.cpp
msgid "Grow"
msgstr ""
@@ -23175,6 +25041,10 @@ msgid "Grow Amount"
msgstr "Mennyiség:"
#: scene/resources/material.cpp
+msgid "Use Alpha Scissor"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Alpha Scissor Threshold"
msgstr ""
@@ -23206,10 +25076,20 @@ msgid "Metallic Specular"
msgstr ""
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Metallic Texture"
+msgstr "Kibocsátási Forrás: "
+
+#: scene/resources/material.cpp
msgid "Metallic Texture Channel"
msgstr ""
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Roughness Texture"
+msgstr "Textúra eltávolítása"
+
+#: scene/resources/material.cpp
msgid "Roughness Texture Channel"
msgstr ""
@@ -23229,6 +25109,16 @@ msgid "Emission Operator"
msgstr "Kibocsátási színek"
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Emission On UV2"
+msgstr "Kibocsátási Maszk"
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Emission Texture"
+msgstr "Kibocsátási Forrás: "
+
+#: scene/resources/material.cpp
msgid "NormalMap"
msgstr ""
@@ -23243,6 +25133,11 @@ msgstr "Véletlenszerű Billentés:"
#: scene/resources/material.cpp
#, fuzzy
+msgid "Rim Texture"
+msgstr "Textúra eltávolítása"
+
+#: scene/resources/material.cpp
+#, fuzzy
msgid "Clearcoat"
msgstr "Töröl"
@@ -23252,14 +25147,27 @@ msgid "Clearcoat Gloss"
msgstr "Póz törlése"
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Clearcoat Texture"
+msgstr "Téma szerkesztése"
+
+#: scene/resources/material.cpp
msgid "Anisotropy"
msgstr ""
#: scene/resources/material.cpp
+msgid "Anisotropy Flowmap"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Ambient Occlusion"
msgstr ""
#: scene/resources/material.cpp
+msgid "On UV2"
+msgstr ""
+
+#: scene/resources/material.cpp
#, fuzzy
msgid "Texture Channel"
msgstr "Vonalzó mód"
@@ -23297,6 +25205,11 @@ msgstr "Ãtmenet: "
#: scene/resources/material.cpp
#, fuzzy
+msgid "Transmission Texture"
+msgstr "Ãtmenet: "
+
+#: scene/resources/material.cpp
+#, fuzzy
msgid "Refraction"
msgstr "Felsorolások:"
@@ -23314,6 +25227,10 @@ msgid "UV1"
msgstr ""
#: scene/resources/material.cpp
+msgid "Triplanar"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Triplanar Sharpness"
msgstr ""
@@ -23520,6 +25437,16 @@ msgstr "Téma szerkesztése"
msgid "Point Count"
msgstr "Bemeneti port hozzáadása"
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Scale Random"
+msgstr "Méretezési arány:"
+
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Scale Curve"
+msgstr "Görbe Lezárása"
+
#: scene/resources/physics_material.cpp
msgid "Rough"
msgstr ""
@@ -23581,10 +25508,6 @@ msgid "A"
msgstr ""
#: scene/resources/shader.cpp
-msgid "Code"
-msgstr ""
-
-#: scene/resources/shader.cpp
#, fuzzy
msgid "Custom Defines"
msgstr "Tetszőleges jelenet lejátszása"
@@ -23679,15 +25602,6 @@ msgstr ""
#: scene/resources/texture.cpp
#, fuzzy
-msgid "Storage"
-msgstr "Tároló Fájl:"
-
-#: scene/resources/texture.cpp
-msgid "Lossy Quality"
-msgstr ""
-
-#: scene/resources/texture.cpp
-#, fuzzy
msgid "Load Path"
msgstr "Beállítás Betöltése"
@@ -23815,11 +25729,6 @@ msgstr ""
msgid "Fallback Environment"
msgstr ""
-#: scene/resources/world.cpp scene/resources/world_2d.cpp
-#, fuzzy
-msgid "Space"
-msgstr "FÅ‘ Jelenet"
-
#: scene/resources/world.cpp
#, fuzzy
msgid "Scenario"
@@ -23900,10 +25809,37 @@ msgstr ""
msgid "Wet"
msgstr ""
-#: servers/audio/effects/audio_effect_compressor.cpp
-msgid "Threshold"
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "Voice"
msgstr ""
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+msgid "Delay (ms)"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_phaser.cpp
+msgid "Rate Hz"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#, fuzzy
+msgid "Depth (ms)"
+msgstr "Mélység"
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+msgid "Level dB"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+#: servers/audio/effects/audio_effect_panner.cpp
+#, fuzzy
+msgid "Pan"
+msgstr "Csomagolás"
+
#: servers/audio/effects/audio_effect_compressor.cpp
#: servers/audio/effects/audio_effect_filter.cpp
msgid "Gain"
@@ -23926,20 +25862,6 @@ msgid "Tap 1"
msgstr ""
#: servers/audio/effects/audio_effect_delay.cpp
-msgid "Delay (ms)"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_delay.cpp
-msgid "Level dB"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_delay.cpp
-#: servers/audio/effects/audio_effect_panner.cpp
-#, fuzzy
-msgid "Pan"
-msgstr "Csomagolás"
-
-#: servers/audio/effects/audio_effect_delay.cpp
msgid "Tap 2"
msgstr ""
@@ -24000,10 +25922,6 @@ msgstr ""
msgid "Range Max Hz"
msgstr ""
-#: servers/audio/effects/audio_effect_phaser.cpp
-msgid "Rate Hz"
-msgstr ""
-
#: servers/audio/effects/audio_effect_pitch_shift.cpp
msgid "Oversampling"
msgstr ""
@@ -24019,7 +25937,7 @@ msgid "Predelay"
msgstr ""
#: servers/audio/effects/audio_effect_reverb.cpp
-msgid "(msec)"
+msgid "Msec"
msgstr ""
#: servers/audio/effects/audio_effect_reverb.cpp
diff --git a/editor/translations/id.po b/editor/translations/id.po
index 7599452a28..dbef840a25 100644
--- a/editor/translations/id.po
+++ b/editor/translations/id.po
@@ -35,13 +35,17 @@
# Tsaqib Fadhlurrahman Soka <sokatsaqib@gmail.com>, 2021.
# Hilman Hazazi <hafizd.muhammad.kren.403@gmail.com>, 2021.
# Brian <brian@brianthe.dev>, 2021.
+# Helmi Hibatullah <helmihibatullah393@gmail.com>, 2022.
+# ProgrammerIndonesia 44 <elo.jhy@gmail.com>, 2022.
+# Rizky Ramadhan <rizkyterm@gmail.com>, 2022.
+# Primananda Kurnia <primakurnia71@gmail.com>, 2022.
msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
"Report-Msgid-Bugs-To: https://github.com/godotengine/godot\n"
"POT-Creation-Date: \n"
-"PO-Revision-Date: 2022-02-23 17:54+0000\n"
-"Last-Translator: zephyroths <ridho.hikaru@gmail.com>\n"
+"PO-Revision-Date: 2022-03-26 05:01+0000\n"
+"Last-Translator: ProgrammerIndonesia 44 <elo.jhy@gmail.com>\n"
"Language-Team: Indonesian <https://hosted.weblate.org/projects/godot-engine/"
"godot/id/>\n"
"Language: id\n"
@@ -49,30 +53,27 @@ 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.11-dev\n"
+"X-Generator: Weblate 4.12-dev\n"
-#: core/bind/core_bind.cpp
+#: core/bind/core_bind.cpp main/main.cpp
msgid "Tablet Driver"
msgstr ""
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Clipboard"
-msgstr "Papan klip kosong!"
+msgstr "Papan klip"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Current Screen"
-msgstr "Skena Saat Ini"
+msgstr "Layar Saat Ini"
#: core/bind/core_bind.cpp
msgid "Exit Code"
-msgstr ""
+msgstr "Kode Keluar"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "V-Sync Enabled"
-msgstr "Aktifkan"
+msgstr "Aktifkan V-Sync"
#: core/bind/core_bind.cpp main/main.cpp
msgid "V-Sync Via Compositor"
@@ -83,38 +84,34 @@ msgid "Delta Smoothing"
msgstr ""
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Low Processor Usage Mode"
-msgstr "Mode Pindah"
+msgstr "Mode Penggunaan Processor Rendah"
#: core/bind/core_bind.cpp
msgid "Low Processor Usage Mode Sleep (µsec)"
msgstr ""
#: core/bind/core_bind.cpp main/main.cpp platform/uwp/os_uwp.cpp
-#, fuzzy
msgid "Keep Screen On"
-msgstr "Biarkan Pengawakutu Terbuka"
+msgstr "Biarkan Layar Menyala"
#: core/bind/core_bind.cpp
#, fuzzy
msgid "Min Window Size"
-msgstr "Ukuran Garis Tepi:"
+msgstr "Ukuran Jendela Minimum"
#: core/bind/core_bind.cpp
#, fuzzy
msgid "Max Window Size"
-msgstr "Ukuran Garis Tepi:"
+msgstr "Ukuran Window Maksimum"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Screen Orientation"
-msgstr "Operator layar."
+msgstr "Orientasi Layar"
#: core/bind/core_bind.cpp main/main.cpp platform/uwp/os_uwp.cpp
-#, fuzzy
msgid "Window"
-msgstr "Jendela Baru"
+msgstr "Jendela"
#: core/bind/core_bind.cpp main/main.cpp
#, fuzzy
@@ -123,7 +120,7 @@ msgstr "Piksel Pembatas"
#: core/bind/core_bind.cpp
msgid "Per Pixel Transparency Enabled"
-msgstr ""
+msgstr "Aktifkan Transparansi Per Piksel"
#: core/bind/core_bind.cpp main/main.cpp
#, fuzzy
@@ -131,8 +128,9 @@ msgid "Fullscreen"
msgstr "Mode Layar Penuh"
#: core/bind/core_bind.cpp
+#, fuzzy
msgid "Maximized"
-msgstr ""
+msgstr "Dimaksimalkan"
#: core/bind/core_bind.cpp
#, fuzzy
@@ -148,22 +146,20 @@ msgstr ""
#: scene/2d/physics_body_2d.cpp scene/2d/remote_transform_2d.cpp
#: scene/3d/physics_body.cpp scene/3d/remote_transform.cpp
#: scene/gui/control.cpp scene/gui/line_edit.cpp
-#, fuzzy
msgid "Position"
-msgstr "Posisi Pengait"
+msgstr "Posisi"
#: core/bind/core_bind.cpp editor/editor_settings.cpp main/main.cpp
#: modules/gdscript/gdscript_editor.cpp modules/gridmap/grid_map.cpp
#: modules/mono/csharp_script.cpp modules/visual_script/visual_script_nodes.cpp
-#: scene/2d/tile_map.cpp scene/3d/camera.cpp scene/gui/control.cpp
-#: scene/gui/graph_edit.cpp scene/main/viewport.cpp
+#: scene/2d/tile_map.cpp scene/3d/camera.cpp scene/3d/light.cpp
+#: scene/gui/control.cpp scene/gui/graph_edit.cpp scene/main/viewport.cpp
#: scene/resources/dynamic_font.cpp scene/resources/navigation_mesh.cpp
#: scene/resources/primitive_meshes.cpp scene/resources/sky.cpp
#: scene/resources/style_box.cpp scene/resources/texture.cpp
#: scene/resources/visual_shader.cpp servers/visual_server.cpp
-#, fuzzy
msgid "Size"
-msgstr "Ukuran:"
+msgstr "Ukuran"
#: core/bind/core_bind.cpp
msgid "Endian Swap"
@@ -176,22 +172,19 @@ msgstr "Editor"
#: core/bind/core_bind.cpp
msgid "Print Error Messages"
-msgstr ""
+msgstr "Cetak Pesan Kesalahan"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Iterations Per Second"
-msgstr "Mode Interpolasi"
+msgstr "Pengulangan Per Detik"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Target FPS"
-msgstr "Sasaran"
+msgstr "FPS Sasaran"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Time Scale"
-msgstr "Node TimeScale"
+msgstr "Skala Waktu"
#: core/bind/core_bind.cpp main/main.cpp
#, fuzzy
@@ -208,18 +201,16 @@ msgid "Error String"
msgstr "Galat Menyimpan"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Error Line"
-msgstr "Galat Menyimpan"
+msgstr "Baris Galat"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Result"
-msgstr "Hasil Pencarian"
+msgstr "Hasil"
#: core/command_queue_mt.cpp core/message_queue.cpp main/main.cpp
msgid "Memory"
-msgstr ""
+msgstr "Memori"
#: core/command_queue_mt.cpp core/message_queue.cpp
#: core/register_core_types.cpp drivers/gles2/rasterizer_canvas_base_gles2.cpp
@@ -229,12 +220,11 @@ msgstr ""
#: drivers/gles3/rasterizer_storage_gles3.cpp main/main.cpp
#: servers/visual_server.cpp
msgid "Limits"
-msgstr ""
+msgstr "Batasan"
#: core/command_queue_mt.cpp
-#, fuzzy
msgid "Command Queue"
-msgstr "Comand: Putar"
+msgstr "Antrian Perintah"
#: core/command_queue_mt.cpp
msgid "Multithreading Queue Size (KB)"
@@ -257,15 +247,13 @@ msgstr "Fungsi"
#: scene/resources/concave_polygon_shape.cpp scene/resources/curve.cpp
#: scene/resources/polygon_path_finder.cpp scene/resources/texture.cpp
msgid "Data"
-msgstr ""
+msgstr "Data"
#: core/io/file_access_network.cpp core/register_core_types.cpp
-#: editor/editor_settings.cpp editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp main/main.cpp
+#: editor/editor_settings.cpp main/main.cpp
#: modules/gdscript/language_server/gdscript_language_server.cpp
-#, fuzzy
msgid "Network"
-msgstr "Network Profiler(Debug jaringan)"
+msgstr "Jaringan"
#: core/io/file_access_network.cpp
#, fuzzy
@@ -273,9 +261,8 @@ msgid "Remote FS"
msgstr "Remot "
#: core/io/file_access_network.cpp
-#, fuzzy
msgid "Page Size"
-msgstr "Halaman: "
+msgstr "Ukuran Halaman"
#: core/io/file_access_network.cpp
msgid "Page Read Ahead"
@@ -283,21 +270,19 @@ msgstr ""
#: core/io/http_client.cpp
msgid "Blocking Mode Enabled"
-msgstr ""
+msgstr "Mode Pemblokiran Diaktifkan"
#: core/io/http_client.cpp
-#, fuzzy
msgid "Connection"
-msgstr "Menghubungkan"
+msgstr "Koneksi"
#: core/io/http_client.cpp
msgid "Read Chunk Size"
msgstr ""
#: core/io/marshalls.cpp
-#, fuzzy
msgid "Object ID"
-msgstr "Objek Digambar:"
+msgstr "ID Objek"
#: core/io/multiplayer_api.cpp core/io/packet_peer.cpp
#, fuzzy
@@ -306,7 +291,7 @@ msgstr "Aktifkan Bayang-bayang"
#: core/io/multiplayer_api.cpp scene/main/scene_tree.cpp
msgid "Refuse New Network Connections"
-msgstr ""
+msgstr "Tolak Koneksi Jaringan Baru"
#: core/io/multiplayer_api.cpp scene/main/scene_tree.cpp
#, fuzzy
@@ -314,9 +299,8 @@ msgid "Network Peer"
msgstr "Network Profiler(Debug jaringan)"
#: core/io/multiplayer_api.cpp scene/animation/animation_player.cpp
-#, fuzzy
msgid "Root Node"
-msgstr "Nama node akar"
+msgstr "Node Akar"
#: core/io/networked_multiplayer_peer.cpp
#, fuzzy
@@ -329,16 +313,19 @@ msgid "Transfer Mode"
msgstr "Jenis Transformasi"
#: core/io/packet_peer.cpp
+#, fuzzy
msgid "Encode Buffer Max Size"
-msgstr ""
+msgstr "Ukuran Maksimal Buffer Encode"
#: core/io/packet_peer.cpp
+#, fuzzy
msgid "Input Buffer Max Size"
-msgstr ""
+msgstr "Ukuran Maksimal Buffer Input"
#: core/io/packet_peer.cpp
+#, fuzzy
msgid "Output Buffer Max Size"
-msgstr ""
+msgstr "Ukuran Maksimal Buffer Output"
#: core/io/packet_peer.cpp
msgid "Stream Peer"
@@ -359,7 +346,7 @@ msgstr ""
#: core/io/udp_server.cpp
#, fuzzy
msgid "Max Pending Connections"
-msgstr "Sunting Koneksi:"
+msgstr "Maks Koneksi Ditunda"
#: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp
#: modules/visual_script/visual_script_builtin_funcs.cpp
@@ -387,7 +374,7 @@ msgstr ""
#: core/math/expression.cpp
msgid "Invalid operands to operator %s, %s and %s."
-msgstr "operan salah untuk operator %s, %s dan %s."
+msgstr "Operan tidak valid untuk operator %s, %s dan %s."
#: core/math/expression.cpp
msgid "Invalid index of type %s for base type %s"
@@ -399,7 +386,7 @@ msgstr "index bernama '%s' untuk tipe dasar %s tidak sah"
#: core/math/expression.cpp
msgid "Invalid arguments to construct '%s'"
-msgstr "argumen untuk membangun '%s' tidak sah"
+msgstr "Argumen tidak valid untuk membangun '%s'"
#: core/math/expression.cpp
msgid "On call to '%s':"
@@ -407,21 +394,22 @@ msgstr "Pada pemanggilan '%s':"
#: core/math/random_number_generator.cpp
#: modules/opensimplex/open_simplex_noise.cpp
+#, fuzzy
msgid "Seed"
-msgstr ""
+msgstr "Benih"
#: core/math/random_number_generator.cpp
#, fuzzy
msgid "State"
-msgstr "Status"
+msgstr "Keadaan"
#: core/message_queue.cpp
msgid "Message Queue"
-msgstr ""
+msgstr "Antrian Pesan"
#: core/message_queue.cpp
msgid "Max Size (KB)"
-msgstr ""
+msgstr "Ukuran Maksimum (KB)"
#: core/os/input.cpp editor/editor_help.cpp editor/editor_settings.cpp
#: editor/plugins/script_editor_plugin.cpp
@@ -433,9 +421,8 @@ msgstr ""
#: modules/mono/csharp_script.cpp scene/animation/animation_player.cpp
#: scene/gui/control.cpp scene/gui/line_edit.cpp scene/main/node.cpp
#: scene/resources/material.cpp
-#, fuzzy
msgid "Text Editor"
-msgstr "Buka Editor"
+msgstr "Editor Teks"
#: core/os/input.cpp editor/editor_settings.cpp
#: editor/plugins/script_text_editor.cpp modules/gdscript/gdscript.cpp
@@ -443,18 +430,16 @@ msgstr "Buka Editor"
#: modules/gdscript/language_server/gdscript_text_document.cpp
#: scene/animation/animation_player.cpp scene/gui/control.cpp
#: scene/main/node.cpp scene/resources/material.cpp
-#, fuzzy
msgid "Completion"
-msgstr "Salin Seleksi"
+msgstr "Penyelesaian"
#: core/os/input.cpp editor/editor_settings.cpp
#: editor/plugins/script_text_editor.cpp modules/gdscript/gdscript_editor.cpp
#: modules/gdscript/language_server/gdscript_text_document.cpp
#: scene/animation/animation_player.cpp scene/gui/control.cpp
#: scene/main/node.cpp scene/resources/material.cpp
-#, fuzzy
msgid "Use Single Quotes"
-msgstr "Tile Tunggal Baru"
+msgstr "Gunakan Kutip Satu"
#: core/os/input_event.cpp editor/project_settings_editor.cpp
#: servers/audio_server.cpp
@@ -462,18 +447,16 @@ msgid "Device"
msgstr "Perangkat"
#: core/os/input_event.cpp
-#, fuzzy
msgid "Alt"
-msgstr "Semua"
+msgstr "Alt"
#: core/os/input_event.cpp
msgid "Shift"
-msgstr ""
+msgstr "Shift"
#: core/os/input_event.cpp
-#, fuzzy
msgid "Control"
-msgstr "Kontrol Versi"
+msgstr "Kontrol"
#: core/os/input_event.cpp
msgid "Meta"
@@ -486,9 +469,8 @@ msgstr "Komunitas"
#: core/os/input_event.cpp scene/2d/touch_screen_button.cpp
#: scene/gui/base_button.cpp scene/gui/texture_button.cpp
-#, fuzzy
msgid "Pressed"
-msgstr "Prasetel"
+msgstr "Ditekan"
#: core/os/input_event.cpp
#, fuzzy
@@ -500,12 +482,14 @@ msgid "Physical Scancode"
msgstr ""
#: core/os/input_event.cpp
+#, fuzzy
msgid "Unicode"
-msgstr ""
+msgstr "Unikode"
#: core/os/input_event.cpp
+#, fuzzy
msgid "Echo"
-msgstr ""
+msgstr "Gema"
#: core/os/input_event.cpp scene/gui/base_button.cpp
#, fuzzy
@@ -513,44 +497,40 @@ msgid "Button Mask"
msgstr "Tombol"
#: core/os/input_event.cpp scene/2d/node_2d.cpp scene/gui/control.cpp
-#, fuzzy
msgid "Global Position"
-msgstr "Konstan"
+msgstr "Posisi Global"
#: core/os/input_event.cpp
-#, fuzzy
msgid "Factor"
-msgstr "Vektor"
+msgstr "Faktor"
#: core/os/input_event.cpp
-#, fuzzy
msgid "Button Index"
-msgstr "Indeks Tombol Mouse:"
+msgstr "Tombol Indeks"
#: core/os/input_event.cpp
+#, fuzzy
msgid "Doubleclick"
-msgstr ""
+msgstr "Klik ganda"
#: core/os/input_event.cpp
msgid "Tilt"
-msgstr ""
+msgstr "Miring"
#: core/os/input_event.cpp
-#, fuzzy
msgid "Pressure"
-msgstr "Prasetel"
+msgstr "Tekanan"
#: core/os/input_event.cpp
-#, fuzzy
msgid "Relative"
-msgstr "Snap Relatif"
+msgstr "Relatif"
-#: core/os/input_event.cpp scene/2d/camera_2d.cpp
-#: scene/3d/interpolated_camera.cpp scene/animation/animation_player.cpp
-#: scene/resources/environment.cpp
-#, fuzzy
+#: core/os/input_event.cpp scene/2d/camera_2d.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/interpolated_camera.cpp
+#: scene/animation/animation_player.cpp scene/resources/environment.cpp
+#: scene/resources/particles_material.cpp
msgid "Speed"
-msgstr "Kecepatan:"
+msgstr "Kelajuan"
#: core/os/input_event.cpp editor/project_settings_editor.cpp
#: scene/3d/sprite_3d.cpp
@@ -558,14 +538,12 @@ msgid "Axis"
msgstr "Sumbu"
#: core/os/input_event.cpp
-#, fuzzy
msgid "Axis Value"
-msgstr "(nilai)"
+msgstr "Nilai Sumbu"
#: core/os/input_event.cpp modules/visual_script/visual_script_func_nodes.cpp
-#, fuzzy
msgid "Index"
-msgstr "Indeks:"
+msgstr "Indeks"
#: core/os/input_event.cpp editor/project_settings_editor.cpp
#: modules/visual_script/visual_script_nodes.cpp
@@ -576,36 +554,34 @@ msgstr "Aksi"
#: core/os/input_event.cpp scene/resources/environment.cpp
#: scene/resources/material.cpp
msgid "Strength"
-msgstr ""
+msgstr "Kekuatan"
#: core/os/input_event.cpp
msgid "Delta"
msgstr ""
#: core/os/input_event.cpp
-#, fuzzy
msgid "Channel"
-msgstr "Ubah"
+msgstr "Kanal"
#: core/os/input_event.cpp main/main.cpp
-#, fuzzy
msgid "Message"
-msgstr "Komit Perubahan"
+msgstr "Pesan"
#: core/os/input_event.cpp
#, fuzzy
msgid "Pitch"
msgstr "Dongak:"
-#: core/os/input_event.cpp scene/2d/physics_body_2d.cpp
-#: scene/3d/physics_body.cpp
-#, fuzzy
+#: core/os/input_event.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/physics_body_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/3d/physics_body.cpp scene/resources/particles_material.cpp
msgid "Velocity"
-msgstr "Inisialisasi"
+msgstr "Kecepatan"
#: core/os/input_event.cpp
msgid "Instrument"
-msgstr ""
+msgstr "Instrumen"
#: core/os/input_event.cpp
#, fuzzy
@@ -617,14 +593,14 @@ msgid "Controller Value"
msgstr ""
#: core/project_settings.cpp editor/editor_node.cpp main/main.cpp
-#, fuzzy
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/windows/export/export.cpp
msgid "Application"
-msgstr "Aksi"
+msgstr "Aplikasi"
#: core/project_settings.cpp main/main.cpp
-#, fuzzy
msgid "Config"
-msgstr "Atur Snap"
+msgstr "Konfigurasi"
#: core/project_settings.cpp
#, fuzzy
@@ -635,13 +611,16 @@ msgstr "Pengaturan Proyek…"
#: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp
#: editor/editor_plugin_settings.cpp editor/editor_profiler.cpp
#: editor/project_manager.cpp editor/settings_config_dialog.cpp
-#: modules/gdnative/nativescript/nativescript.cpp scene/2d/area_2d.cpp
-#: scene/3d/area.cpp scene/main/node.cpp
+#: modules/gdnative/nativescript/nativescript.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/osx/export/export.cpp scene/2d/area_2d.cpp scene/3d/area.cpp
+#: scene/main/node.cpp
msgid "Name"
msgstr "Nama"
#: core/project_settings.cpp editor/editor_help.cpp
-#: modules/visual_script/visual_script_nodes.cpp
+#: modules/visual_script/visual_script_nodes.cpp platform/uwp/export/export.cpp
+#: platform/windows/export/export.cpp
msgid "Description"
msgstr "Deskripsi"
@@ -657,29 +636,30 @@ msgid "Main Scene"
msgstr "Skena Utama"
#: core/project_settings.cpp
-#, fuzzy
msgid "Disable stdout"
-msgstr "Nonaktifkan Autotile"
+msgstr "Nonaktifkan stdout"
#: core/project_settings.cpp
-#, fuzzy
msgid "Disable stderr"
-msgstr "Item yang Dinonaktifkan"
+msgstr "Nonaktifkan stderr"
#: core/project_settings.cpp
+#, fuzzy
msgid "Use Hidden Project Data Directory"
-msgstr ""
+msgstr "Gunakan Direktori Data Proyek Tersembunyi"
#: core/project_settings.cpp
+#, fuzzy
msgid "Use Custom User Dir"
-msgstr ""
+msgstr "Gunakan Direktori Pengguna Kustom"
#: core/project_settings.cpp
+#, fuzzy
msgid "Custom User Dir Name"
-msgstr ""
+msgstr "Nama Direktori Pengguna Kustom"
#: core/project_settings.cpp editor/animation_track_editor.cpp
-#: editor/editor_audio_buses.cpp servers/audio_server.cpp
+#: editor/editor_audio_buses.cpp main/main.cpp servers/audio_server.cpp
msgid "Audio"
msgstr "Suara"
@@ -702,7 +682,7 @@ msgstr "Argumen Skena Utama:"
#: core/project_settings.cpp
msgid "Search In File Extensions"
-msgstr ""
+msgstr "Cari dalam Ekstensi File"
#: core/project_settings.cpp
msgid "Script Templates Search Path"
@@ -715,18 +695,16 @@ msgstr "Kontrol Versi"
#: core/project_settings.cpp
msgid "Autoload On Startup"
-msgstr ""
+msgstr "Muat Otomatis Saat Memulai"
#: core/project_settings.cpp
-#, fuzzy
msgid "Plugin Name"
-msgstr "Nama Plugin:"
+msgstr "Nama Plugin"
#: core/project_settings.cpp scene/2d/collision_object_2d.cpp
#: scene/3d/collision_object.cpp scene/gui/control.cpp
-#, fuzzy
msgid "Input"
-msgstr "Tambah Masukan"
+msgstr "Input"
#: core/project_settings.cpp
msgid "UI Accept"
@@ -763,8 +741,9 @@ msgid "UI Right"
msgstr "Kanan Atas"
#: core/project_settings.cpp
+#, fuzzy
msgid "UI Up"
-msgstr ""
+msgstr "UI Atas"
#: core/project_settings.cpp
#, fuzzy
@@ -796,9 +775,8 @@ msgstr "Pada Akhir"
#: servers/physics/space_sw.cpp servers/physics_2d/physics_2d_server_sw.cpp
#: servers/physics_2d/physics_2d_server_wrap_mt.h
#: servers/physics_2d/space_2d_sw.cpp
-#, fuzzy
msgid "Physics"
-msgstr "Frame Fisika %"
+msgstr "Fisika"
#: core/project_settings.cpp editor/editor_settings.cpp
#: editor/plugins/spatial_editor_plugin.cpp main/main.cpp
@@ -806,7 +784,7 @@ msgstr "Frame Fisika %"
#: scene/3d/physics_body.cpp scene/resources/world.cpp
#: servers/physics/space_sw.cpp
msgid "3D"
-msgstr ""
+msgstr "3D"
#: core/project_settings.cpp
#, fuzzy
@@ -834,7 +812,7 @@ msgstr "Perender:"
#: scene/resources/multimesh.cpp servers/visual/visual_server_scene.cpp
#: servers/visual_server.cpp
msgid "Quality"
-msgstr ""
+msgstr "Kualitas"
#: core/project_settings.cpp scene/animation/animation_tree.cpp
#: scene/gui/file_dialog.cpp scene/main/scene_tree.cpp
@@ -844,13 +822,17 @@ msgid "Filters"
msgstr "Filter:"
#: core/project_settings.cpp scene/main/viewport.cpp
+#, fuzzy
msgid "Sharpen Intensity"
-msgstr ""
+msgstr "Ketajaman Intensitas"
-#: core/project_settings.cpp editor/editor_node.cpp editor/editor_settings.cpp
-#: editor/plugins/script_editor_plugin.cpp editor/project_export.cpp
-#: main/main.cpp modules/gdscript/gdscript.cpp
-#: modules/visual_script/visual_script.cpp scene/3d/room_manager.cpp
+#: core/project_settings.cpp editor/editor_export.cpp editor/editor_node.cpp
+#: editor/editor_settings.cpp editor/plugins/script_editor_plugin.cpp
+#: editor/project_export.cpp main/main.cpp modules/gdscript/gdscript.cpp
+#: modules/visual_script/visual_script.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp scene/3d/room_manager.cpp
#: scene/main/scene_tree.cpp scene/resources/shape_2d.cpp
#: servers/visual_server.cpp
msgid "Debug"
@@ -858,9 +840,8 @@ msgstr "Awakutu"
#: core/project_settings.cpp main/main.cpp modules/gdscript/gdscript.cpp
#: modules/visual_script/visual_script.cpp scene/resources/dynamic_font.cpp
-#, fuzzy
msgid "Settings"
-msgstr "Pengaturan:"
+msgstr "Pengaturan"
#: core/project_settings.cpp editor/script_editor_debugger.cpp main/main.cpp
#: modules/mono/mono_gd/gd_mono.cpp
@@ -868,14 +849,12 @@ msgid "Profiler"
msgstr "Profiler(debugger/pemantauan)"
#: core/project_settings.cpp
-#, fuzzy
msgid "Max Functions"
-msgstr "Buat Fungsi"
+msgstr "Fungsi Maksimum"
#: core/project_settings.cpp scene/3d/vehicle_body.cpp
-#, fuzzy
msgid "Compression"
-msgstr "Tetapkan ekspresi"
+msgstr "Kompresi"
#: core/project_settings.cpp
#, fuzzy
@@ -887,16 +866,17 @@ msgid "Zstd"
msgstr ""
#: core/project_settings.cpp
+#, fuzzy
msgid "Long Distance Matching"
-msgstr ""
+msgstr "Pencocokan Jarak Jauh"
#: core/project_settings.cpp
msgid "Compression Level"
-msgstr ""
+msgstr "Level Kompresi"
#: core/project_settings.cpp
msgid "Window Log Size"
-msgstr ""
+msgstr "Ukuran Jendela Log"
#: core/project_settings.cpp
msgid "Zlib"
@@ -911,8 +891,9 @@ msgid "Android"
msgstr ""
#: core/project_settings.cpp
+#, fuzzy
msgid "Modules"
-msgstr ""
+msgstr "Modul"
#: core/register_core_types.cpp
msgid "TCP"
@@ -925,20 +906,20 @@ msgstr "Hubungan dengan fungsi:"
#: core/register_core_types.cpp
msgid "Packet Peer Stream"
-msgstr ""
+msgstr "Aliran Paket Peer"
#: core/register_core_types.cpp
+#, fuzzy
msgid "Max Buffer (Power of 2)"
-msgstr ""
+msgstr "Buffer Maks (Kekuatan 2)"
#: core/register_core_types.cpp editor/editor_settings.cpp main/main.cpp
msgid "SSL"
-msgstr ""
+msgstr "SSL"
#: core/register_core_types.cpp main/main.cpp
-#, fuzzy
msgid "Certificates"
-msgstr "Sudut:"
+msgstr "Sertifikat"
#: core/resource.cpp editor/dependency_editor.cpp
#: editor/editor_resource_picker.cpp
@@ -964,9 +945,8 @@ msgid "Source Code"
msgstr "Sumber"
#: core/translation.cpp
-#, fuzzy
msgid "Messages"
-msgstr "Komit Perubahan"
+msgstr "Pesan"
#: core/translation.cpp editor/project_settings_editor.cpp
msgid "Locale"
@@ -1020,12 +1000,12 @@ msgstr ""
#: drivers/gles2/rasterizer_canvas_base_gles2.cpp
#: drivers/gles3/rasterizer_canvas_base_gles3.cpp
msgid "Canvas Polygon Buffer Size (KB)"
-msgstr ""
+msgstr "Ukuran Penyangga Poligon Kanvas (KB)"
#: drivers/gles2/rasterizer_canvas_base_gles2.cpp
#: drivers/gles3/rasterizer_canvas_base_gles3.cpp
msgid "Canvas Polygon Index Buffer Size (KB)"
-msgstr ""
+msgstr "Ukuran Penyangga Indeks Poligon Kanvas (KB)"
#: drivers/gles2/rasterizer_canvas_base_gles2.cpp
#: drivers/gles3/rasterizer_canvas_base_gles3.cpp editor/editor_settings.cpp
@@ -1034,19 +1014,17 @@ msgstr ""
#: servers/physics_2d/physics_2d_server_wrap_mt.h
#: servers/physics_2d/space_2d_sw.cpp servers/visual_server.cpp
msgid "2D"
-msgstr ""
+msgstr "2D"
#: drivers/gles2/rasterizer_canvas_base_gles2.cpp
#: drivers/gles3/rasterizer_canvas_base_gles3.cpp
-#, fuzzy
msgid "Snapping"
-msgstr "Pengancingan Pintar"
+msgstr "Pengancingan"
#: drivers/gles2/rasterizer_canvas_base_gles2.cpp
#: drivers/gles3/rasterizer_canvas_base_gles3.cpp
-#, fuzzy
msgid "Use GPU Pixel Snap"
-msgstr "Gunakan Snap Piksel"
+msgstr "Gunakan Snap Piksel GPU"
#: drivers/gles2/rasterizer_scene_gles2.cpp
#: drivers/gles3/rasterizer_scene_gles3.cpp
@@ -1055,9 +1033,8 @@ msgstr ""
#: drivers/gles2/rasterizer_storage_gles2.cpp
#: drivers/gles3/rasterizer_storage_gles3.cpp
-#, fuzzy
msgid "Lightmapping"
-msgstr "Panggang Lightmaps"
+msgstr "Pemetaan Cahaya"
#: drivers/gles2/rasterizer_storage_gles2.cpp
#: drivers/gles3/rasterizer_storage_gles3.cpp
@@ -1066,11 +1043,11 @@ msgstr ""
#: drivers/gles3/rasterizer_scene_gles3.cpp
msgid "Max Renderable Elements"
-msgstr ""
+msgstr "Maximal Elemen yang Dapat Dirender"
#: drivers/gles3/rasterizer_scene_gles3.cpp
msgid "Max Renderable Lights"
-msgstr ""
+msgstr "Maksimal Cahaya yang dapat di Render"
#: drivers/gles3/rasterizer_scene_gles3.cpp
#, fuzzy
@@ -1079,13 +1056,14 @@ msgstr "Seleksi Tengah"
#: drivers/gles3/rasterizer_scene_gles3.cpp
msgid "Max Lights Per Object"
-msgstr ""
+msgstr "Maksimal Cahaya Per Objek"
#: drivers/gles3/rasterizer_scene_gles3.cpp
msgid "Subsurface Scattering"
msgstr ""
#: drivers/gles3/rasterizer_scene_gles3.cpp
+#: editor/import/resource_importer_texture.cpp
#: editor/plugins/spatial_editor_plugin.cpp modules/gltf/gltf_node.cpp
#: modules/gridmap/grid_map.cpp scene/2d/cpu_particles_2d.cpp
#: scene/2d/node_2d.cpp scene/2d/parallax_layer.cpp scene/2d/polygon_2d.cpp
@@ -1111,7 +1089,7 @@ msgstr ""
#: drivers/gles3/rasterizer_scene_gles3.cpp scene/resources/environment.cpp
msgid "High Quality"
-msgstr ""
+msgstr "Kualitas Tinggi"
#: drivers/gles3/rasterizer_storage_gles3.cpp
msgid "Blend Shape Max Buffer Size (KB)"
@@ -1383,6 +1361,7 @@ msgid "Editors"
msgstr "Editor"
#: editor/animation_track_editor.cpp editor/editor_settings.cpp
+#: editor/import/resource_importer_scene.cpp
#: editor/plugins/animation_player_editor_plugin.cpp editor/scene_tree_dock.cpp
#: scene/2d/animated_sprite.cpp scene/2d/cpu_particles_2d.cpp
#: scene/2d/sprite.cpp scene/3d/cpu_particles.cpp scene/3d/sprite_3d.cpp
@@ -1541,7 +1520,7 @@ msgstr "Metode"
#: editor/animation_track_editor.cpp
msgid "Bezier"
-msgstr ""
+msgstr "Bezier"
#: editor/animation_track_editor.cpp
#: modules/visual_script/visual_script_editor.cpp
@@ -1617,14 +1596,14 @@ msgstr "Nilai Langkah Animasi."
msgid "Seconds"
msgstr "Detik"
-#: editor/animation_track_editor.cpp
+#: editor/animation_track_editor.cpp editor/import/resource_importer_scene.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp main/main.cpp
#: scene/resources/texture.cpp
msgid "FPS"
msgstr "FPS"
#: editor/animation_track_editor.cpp editor/editor_plugin_settings.cpp
-#: editor/editor_resource_picker.cpp
+#: editor/editor_resource_picker.cpp editor/import/resource_importer_wav.cpp
#: editor/plugins/polygon_2d_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
@@ -2543,8 +2522,9 @@ msgid "Invalid name."
msgstr "Nama tidak sah."
#: editor/editor_autoload_settings.cpp
+#, fuzzy
msgid "Cannot begin with a digit."
-msgstr ""
+msgstr "Tidak dapat dimulai dengan angka."
#: editor/editor_autoload_settings.cpp
msgid "Valid characters:"
@@ -2587,7 +2567,9 @@ msgid "Remove Autoload"
msgstr "Hapus Autoload"
#: editor/editor_autoload_settings.cpp editor/editor_plugin_settings.cpp
-#: modules/gdscript/gdscript.cpp scene/2d/polygon_2d.cpp scene/3d/area.cpp
+#: modules/gdscript/gdscript.cpp platform/android/export/export_plugin.cpp
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#: scene/2d/polygon_2d.cpp scene/3d/area.cpp scene/3d/physics_joint.cpp
#: scene/3d/reflection_probe.cpp scene/main/canvas_layer.cpp
#: scene/resources/material.cpp servers/visual_server.cpp
msgid "Enable"
@@ -2757,6 +2739,58 @@ msgstr ""
#: editor/editor_export.cpp platform/android/export/export_plugin.cpp
#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Custom Template"
+msgstr "Sunting Tema"
+
+#: editor/editor_export.cpp editor/project_export.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp
+msgid "Release"
+msgstr "Rilis"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Binary Format"
+msgstr "Operator warna."
+
+#: editor/editor_export.cpp
+msgid "64 Bits"
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Embed PCK"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Texture Format"
+msgstr "TeksturRegion"
+
+#: editor/editor_export.cpp
+msgid "BPTC"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "S3TC"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "ETC"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "ETC2"
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "No BPTC Fallbacks"
+msgstr ""
+
+#: editor/editor_export.cpp platform/android/export/export_plugin.cpp
+#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
msgid "Custom debug template not found."
msgstr "Templat awakutu kustom tidak ditemukan."
@@ -2775,8 +2809,9 @@ msgid "On 32-bit exports the embedded PCK cannot be bigger than 4 GiB."
msgstr "Pada ekspor 32-bit PCK yang ditanamkan tidak boleh lebih dari 4GiB."
#: editor/editor_export.cpp
+#, fuzzy
msgid "Convert Text Resources To Binary On Export"
-msgstr ""
+msgstr "Mengkonversi Resource Teks ke Biner pada saat Export"
#: editor/editor_feature_profile.cpp
msgid "3D Editor"
@@ -2937,6 +2972,7 @@ msgid "Make Current"
msgstr "Jadikan Profil Saat Ini"
#: editor/editor_feature_profile.cpp editor/editor_node.cpp
+#: editor/import/resource_importer_scene.cpp
#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
msgid "Import"
msgstr "Impor"
@@ -3065,8 +3101,11 @@ msgstr "Sukses!"
msgid "Display Mode"
msgstr "Mode Putar:"
-#: editor/editor_file_dialog.cpp main/main.cpp modules/csg/csg_shape.cpp
-#: modules/visual_script/visual_script_nodes.cpp
+#: editor/editor_file_dialog.cpp
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+#: editor/import/resource_importer_wav.cpp main/main.cpp
+#: modules/csg/csg_shape.cpp modules/visual_script/visual_script_nodes.cpp
#: modules/visual_script/visual_script_yield_nodes.cpp scene/2d/light_2d.cpp
#: scene/2d/physics_body_2d.cpp scene/2d/tile_map.cpp
#: scene/3d/baked_lightmap.cpp scene/3d/light.cpp scene/3d/physics_body.cpp
@@ -3203,9 +3242,11 @@ msgstr "Mengimpor ulang Aset"
#: editor/editor_file_system.cpp
msgid "Reimport Missing Imported Files"
-msgstr ""
+msgstr "Impor Ulang File ter-impor yang Hilang"
-#: editor/editor_help.cpp
+#: editor/editor_help.cpp scene/2d/camera_2d.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/resources/dynamic_font.cpp
+#: scene/resources/style_box.cpp
msgid "Top"
msgstr "Atas"
@@ -3216,7 +3257,7 @@ msgstr "Kelas:"
#: editor/editor_help.cpp editor/scene_tree_editor.cpp
#: editor/script_create_dialog.cpp
msgid "Inherits:"
-msgstr "Turunan:"
+msgstr "Mewarisi:"
#: editor/editor_help.cpp
msgid "Inherited by:"
@@ -3260,6 +3301,7 @@ msgid "Fonts"
msgstr "Fonta"
#: editor/editor_help.cpp editor/plugins/theme_editor_plugin.cpp
+#: platform/iphone/export/export.cpp
#, fuzzy
msgid "Icons"
msgstr "Ikon"
@@ -3308,7 +3350,7 @@ msgstr "Bantuan"
#: editor/editor_help.cpp
msgid "Sort Functions Alphabetically"
-msgstr ""
+msgstr "Urutkan Fungsi Secara Abjad"
#: editor/editor_help_search.cpp editor/editor_node.cpp
#: editor/plugins/script_editor_plugin.cpp
@@ -3388,24 +3430,20 @@ msgid "Property:"
msgstr "Properti:"
#: editor/editor_inspector.cpp editor/editor_spin_slider.cpp
-#, fuzzy
msgid "Label"
-msgstr "Nilai"
+msgstr "Label"
#: editor/editor_inspector.cpp editor/editor_spin_slider.cpp
-#, fuzzy
msgid "Read Only"
-msgstr "Hanya Fungsi"
+msgstr "Hanya Baca"
#: editor/editor_inspector.cpp
-#, fuzzy
msgid "Checkable"
-msgstr "Item Check"
+msgstr "Dapat di centang"
#: editor/editor_inspector.cpp
-#, fuzzy
msgid "Checked"
-msgstr "Item yang Dicentang"
+msgstr "Dicentang"
#: editor/editor_inspector.cpp
#, fuzzy
@@ -3418,20 +3456,23 @@ msgid "Keying"
msgstr "Mainkan"
#: editor/editor_inspector.cpp
-#, fuzzy
msgid "Pin value"
-msgstr "(nilai)"
+msgstr "Nilai sematan"
#: editor/editor_inspector.cpp
msgid ""
"Pinning a value forces it to be saved even if it's equal to the default."
msgstr ""
+"Menyematkan nilai memaksanya untuk disimpan meskipun nilainya sama dengan "
+"default."
#: editor/editor_inspector.cpp
msgid "Pin value [Disabled because '%s' is editor-only]"
-msgstr ""
+msgstr "Nilai sematan [Dinonaktifkan karena '%s' hanya editor]"
-#: editor/editor_inspector.cpp editor/scene_tree_dock.cpp
+#: editor/editor_inspector.cpp
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+#: editor/scene_tree_dock.cpp
#: modules/visual_script/visual_script_func_nodes.cpp
#: modules/visual_script/visual_script_nodes.cpp
#: modules/visual_script/visual_script_property_selector.cpp
@@ -3444,26 +3485,23 @@ msgstr "Terapkan Bersamaan:"
#: editor/editor_inspector.cpp
msgid "Pinned %s"
-msgstr ""
+msgstr "%s disematkan"
#: editor/editor_inspector.cpp
msgid "Unpinned %s"
-msgstr ""
+msgstr "Lepas sematan %s"
#: editor/editor_inspector.cpp
-#, fuzzy
msgid "Copy Property"
msgstr "Salin Properti"
#: editor/editor_inspector.cpp
-#, fuzzy
msgid "Paste Property"
msgstr "Tempel Properti"
#: editor/editor_inspector.cpp
-#, fuzzy
msgid "Copy Property Path"
-msgstr "Salin Lokasi Skrip"
+msgstr "Salin Lokasi Properti"
#: editor/editor_log.cpp
msgid "Output:"
@@ -3775,6 +3813,16 @@ msgid "Quick Open Script..."
msgstr "Buka Cepat Skrip..."
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Save & Reload"
+msgstr "Simpan & Mulai Ulang"
+
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Save changes to '%s' before reloading?"
+msgstr "Simpan perubahan '%s' sebelum menutupnya?"
+
+#: editor/editor_node.cpp
msgid "Save & Close"
msgstr "Simpan & Tutup"
@@ -3784,7 +3832,7 @@ msgstr "Simpan perubahan '%s' sebelum menutupnya?"
#: editor/editor_node.cpp
msgid "%s no longer exists! Please specify a new save location."
-msgstr ""
+msgstr "%s sudah tidak tersedia! Harap tentukan lokasi penyimpanan baru."
#: editor/editor_node.cpp
msgid ""
@@ -3891,6 +3939,11 @@ msgid "Open Project Manager?"
msgstr "Buka Project Manager?"
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Save changes to the following scene(s) before reloading?"
+msgstr "Simpan perubahan skena saat ini sebelum keluar?"
+
+#: editor/editor_node.cpp
msgid "Save & Quit"
msgstr "Simpan & Keluar"
@@ -4075,15 +4128,16 @@ msgstr "%d file lagi"
msgid ""
"Unable to write to file '%s', file in use, locked or lacking permissions."
msgstr ""
+"Tidak dapat menulis ke file '%s', file sedang digunakan, terkunci atau tidak "
+"memiliki izin."
#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
msgid "Scene"
msgstr "Skena"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Scene Naming"
-msgstr "Lokasi Skena:"
+msgstr "Penamaan Skena"
#: editor/editor_node.cpp editor/editor_settings.cpp editor/scene_tree_dock.cpp
#: servers/arvr/arvr_interface.cpp
@@ -4102,43 +4156,41 @@ msgid "Always Show Close Button"
msgstr "Selalu Tampilkan Kisi"
#: editor/editor_node.cpp editor/editor_settings.cpp
+#, fuzzy
msgid "Resize If Many Tabs"
-msgstr ""
+msgstr "Ubah Ukuran Jika Tab Sebanyak"
#: editor/editor_node.cpp editor/editor_settings.cpp
msgid "Minimum Width"
-msgstr ""
+msgstr "Lebar Minimal"
#: editor/editor_node.cpp editor/editor_settings.cpp
msgid "Output"
msgstr "Luaran"
#: editor/editor_node.cpp editor/editor_settings.cpp
-#, fuzzy
msgid "Always Clear Output On Play"
-msgstr "Bersihkan Luaran"
+msgstr "Selalu Bersihkan Luaran Ketika Bermain"
#: editor/editor_node.cpp editor/editor_settings.cpp
msgid "Always Open Output On Play"
-msgstr ""
+msgstr "Selalu Buka Luaran Ketika Bermain"
#: editor/editor_node.cpp editor/editor_settings.cpp
msgid "Always Close Output On Stop"
-msgstr ""
+msgstr "Selalu Tutup Luaran Ketika Berhenti"
#: editor/editor_node.cpp editor/editor_settings.cpp
-#, fuzzy
msgid "Auto Save"
-msgstr "Iris Otomatis"
+msgstr "Simpan Otomatis"
#: editor/editor_node.cpp editor/editor_settings.cpp
-#, fuzzy
msgid "Save Before Running"
-msgstr "Simpan skena sebelum menjalankan..."
+msgstr "Simpan Sebelum Menjalankan"
#: editor/editor_node.cpp
msgid "Save On Focus Loss"
-msgstr ""
+msgstr "Simpan Ketika Kehilangan Fokus"
#: editor/editor_node.cpp editor/editor_settings.cpp
#, fuzzy
@@ -4166,17 +4218,16 @@ msgstr "Perubahan Material:"
#: editor/editor_node.cpp
#, fuzzy
-msgid "Translate Properties"
-msgstr "Tempel Properti"
+msgid "Localize Settings"
+msgstr "Lokalisasi"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Restore Scenes On Load"
-msgstr "Node TimeSeek"
+msgstr "Kembalikan Skena Saat Memuat"
#: editor/editor_node.cpp editor/editor_settings.cpp
msgid "Show Thumbnail On Hover"
-msgstr ""
+msgstr "Tampilkan Gambar Mini Saat Disorot kursor"
#: editor/editor_node.cpp editor/editor_settings.cpp
msgid "Inspector"
@@ -4184,12 +4235,13 @@ msgstr "Inspektur"
#: editor/editor_node.cpp
#, fuzzy
-msgid "Capitalize Properties"
-msgstr "Tempel Properti"
+msgid "Default Property Name Style"
+msgstr "Lokasi Projek:"
#: editor/editor_node.cpp
+#, fuzzy
msgid "Default Float Step"
-msgstr ""
+msgstr "Langkah Desimal Baku"
#: editor/editor_node.cpp scene/gui/tree.cpp
#, fuzzy
@@ -4229,11 +4281,11 @@ msgstr "Ubah Nama"
#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
msgid "SSH Public Key Path"
-msgstr ""
+msgstr "Jalur Kunci Publik SSH"
#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
msgid "SSH Private Key Path"
-msgstr ""
+msgstr "Jalur Kunci Pribadi SSH"
#: editor/editor_node.cpp
msgid "Dock Position"
@@ -4444,6 +4496,12 @@ msgid ""
"Asynchronous shader compilation must be enabled in the project settings for "
"this option to make a difference."
msgstr ""
+"Saat opsi ini diaktifkan, shader akan digunakan dalam bentuk cadangannya "
+"(baik terlihat melalui ubershader atau tersembunyi) selama waktu berjalan.\n"
+"Ini berguna untuk memverifikasi tampilan dan kinerja fallback, yang biasanya "
+"ditampilkan secara singkat.\n"
+"Kompilasi shader asinkron harus diaktifkan di pengaturan proyek agar opsi "
+"ini dapat dibuat."
#: editor/editor_node.cpp
msgid "Synchronize Scene Changes"
@@ -4786,7 +4844,9 @@ msgstr "Plugins Terpasang:"
msgid "Update"
msgstr "Perbarui"
-#: editor/editor_plugin_settings.cpp
+#: editor/editor_plugin_settings.cpp platform/android/export/export_plugin.cpp
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp
msgid "Version"
msgstr "Versi"
@@ -5066,17 +5126,18 @@ msgid "Editor Language"
msgstr "Tata Letak Editor"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Display Scale"
-msgstr "Tampilkan Semua"
+msgstr "Skala Tampilan"
#: editor/editor_settings.cpp
+#, fuzzy
msgid "Custom Display Scale"
-msgstr ""
+msgstr "Skala Tampilan Kustom"
#: editor/editor_settings.cpp
+#, fuzzy
msgid "Main Font Size"
-msgstr ""
+msgstr "Ukuran Font Utama"
#: editor/editor_settings.cpp
msgid "Code Font Size"
@@ -5105,8 +5166,9 @@ msgid "Code Font"
msgstr "Tambah Titik Node"
#: editor/editor_settings.cpp
+#, fuzzy
msgid "Dim Editor On Dialog Popup"
-msgstr ""
+msgstr "Redupkan Editor Ketika Dialog Popup"
#: editor/editor_settings.cpp main/main.cpp
msgid "Low Processor Mode Sleep (µsec)"
@@ -5122,8 +5184,9 @@ msgid "Separate Distraction Mode"
msgstr "Mode Tanpa Gangguan"
#: editor/editor_settings.cpp
+#, fuzzy
msgid "Automatically Open Screenshots"
-msgstr ""
+msgstr "Buka Tangkapan Layar secara Otomatis"
#: editor/editor_settings.cpp
msgid "Max Array Dictionary Items Per Page"
@@ -5141,8 +5204,9 @@ msgid "Preset"
msgstr "Prasetel"
#: editor/editor_settings.cpp
+#, fuzzy
msgid "Icon And Font Color"
-msgstr ""
+msgstr "Warna Fonta dan Ikon"
#: editor/editor_settings.cpp
#, fuzzy
@@ -5155,8 +5219,9 @@ msgid "Accent Color"
msgstr "Pilih Warna"
#: editor/editor_settings.cpp scene/resources/environment.cpp
+#, fuzzy
msgid "Contrast"
-msgstr ""
+msgstr "Kontras"
#: editor/editor_settings.cpp
msgid "Relationship Line Opacity"
@@ -5274,8 +5339,9 @@ msgstr "Sunting Tema"
#: editor/editor_settings.cpp editor/plugins/script_text_editor.cpp
#: editor/plugins/text_editor.cpp
+#, fuzzy
msgid "Line Spacing"
-msgstr ""
+msgstr "Jarak Baris"
#: editor/editor_settings.cpp editor/plugins/script_text_editor.cpp
#: modules/gdscript/editor/gdscript_highlighter.cpp
@@ -5339,12 +5405,14 @@ msgid "Navigation"
msgstr "Navigasi"
#: editor/editor_settings.cpp scene/gui/text_edit.cpp
+#, fuzzy
msgid "Smooth Scrolling"
-msgstr ""
+msgstr "Pengguliran Halus"
#: editor/editor_settings.cpp scene/gui/text_edit.cpp
+#, fuzzy
msgid "V Scroll Speed"
-msgstr ""
+msgstr "Kecepatan Gulir Vertikal"
#: editor/editor_settings.cpp
#, fuzzy
@@ -5360,8 +5428,9 @@ msgid "Mouse Extra Buttons Navigate History"
msgstr ""
#: editor/editor_settings.cpp
+#, fuzzy
msgid "Appearance"
-msgstr ""
+msgstr "Tampilan"
#: editor/editor_settings.cpp scene/gui/text_edit.cpp
#, fuzzy
@@ -5388,11 +5457,12 @@ msgstr ""
#: editor/editor_settings.cpp
msgid "Code Folding"
-msgstr ""
+msgstr "Lipat Kode"
#: editor/editor_settings.cpp
+#, fuzzy
msgid "Word Wrap"
-msgstr ""
+msgstr "Bungkus Kata"
#: editor/editor_settings.cpp
msgid "Show Line Length Guidelines"
@@ -5428,11 +5498,11 @@ msgstr "Hapus Spasi di Belakang"
#: editor/editor_settings.cpp
msgid "Autosave Interval Secs"
-msgstr ""
+msgstr "Detik Interval Simpan Otomatis"
#: editor/editor_settings.cpp editor/plugins/script_editor_plugin.cpp
msgid "Restore Scripts On Load"
-msgstr ""
+msgstr "Pulihkan Skrip Saat Dimuat"
#: editor/editor_settings.cpp
msgid "Create Signal Callbacks"
@@ -5444,11 +5514,12 @@ msgstr ""
#: editor/editor_settings.cpp scene/gui/line_edit.cpp
msgid "Cursor"
-msgstr ""
+msgstr "Kursor"
#: editor/editor_settings.cpp
+#, fuzzy
msgid "Scroll Past End Of File"
-msgstr ""
+msgstr "Gulir Melewati Akhir File"
#: editor/editor_settings.cpp
msgid "Block Caret"
@@ -5504,7 +5575,7 @@ msgstr "Tampilkan Bantuan-bantuan"
#: editor/editor_settings.cpp
msgid "Help Font Size"
-msgstr ""
+msgstr "Ukuran Font Bantuan"
#: editor/editor_settings.cpp
msgid "Help Source Font Size"
@@ -5512,7 +5583,7 @@ msgstr ""
#: editor/editor_settings.cpp
msgid "Help Title Font Size"
-msgstr ""
+msgstr "Ukuran Font Judul Bantuan"
#: editor/editor_settings.cpp editor/plugins/mesh_library_editor_plugin.cpp
#: modules/gridmap/grid_map_editor_plugin.cpp
@@ -5614,12 +5685,14 @@ msgid "Zoom Style"
msgstr "Perkecil Pandangan"
#: editor/editor_settings.cpp
+#, fuzzy
msgid "Emulate Numpad"
-msgstr ""
+msgstr "Emulasi Numpad"
#: editor/editor_settings.cpp
+#, fuzzy
msgid "Emulate 3 Button Mouse"
-msgstr ""
+msgstr "Emulasi 3 Tombol Mouse"
#: editor/editor_settings.cpp
#, fuzzy
@@ -5715,7 +5788,7 @@ msgstr "Pengancingan Pintar"
#: editor/editor_settings.cpp
msgid "Bone Width"
-msgstr ""
+msgstr "Lebar Tulang"
#: editor/editor_settings.cpp
#, fuzzy
@@ -5734,7 +5807,7 @@ msgstr "Konfigurasi Profil Saat Ini:"
#: editor/editor_settings.cpp
msgid "Bone IK Color"
-msgstr ""
+msgstr "Warna IK Tulang"
#: editor/editor_settings.cpp
msgid "Bone Outline Color"
@@ -5813,7 +5886,7 @@ msgstr ""
#: editor/editor_settings.cpp
msgid "Window Placement"
-msgstr ""
+msgstr "Penempatan Jendela"
#: editor/editor_settings.cpp scene/2d/back_buffer_copy.cpp scene/2d/sprite.cpp
#: scene/2d/visibility_notifier_2d.cpp scene/3d/sprite_3d.cpp
@@ -5827,9 +5900,9 @@ msgstr "Kotak Penuh"
msgid "Rect Custom Position"
msgstr "Atur Posisi Kurva Luar"
-#: editor/editor_settings.cpp
+#: editor/editor_settings.cpp platform/android/export/export_plugin.cpp
msgid "Screen"
-msgstr ""
+msgstr "Layar"
#: editor/editor_settings.cpp
#, fuzzy
@@ -5854,6 +5927,19 @@ msgid "Editor SSL Certificates"
msgstr "Pengaturan Editor"
#: editor/editor_settings.cpp
+msgid "HTTP Proxy"
+msgstr ""
+
+#: editor/editor_settings.cpp
+msgid "Host"
+msgstr ""
+
+#: editor/editor_settings.cpp editor/fileserver/editor_file_server.cpp
+#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp
+msgid "Port"
+msgstr ""
+
+#: editor/editor_settings.cpp
msgid "Project Manager"
msgstr "Manajer Proyek"
@@ -5867,8 +5953,9 @@ msgid "Symbol Color"
msgstr ""
#: editor/editor_settings.cpp
+#, fuzzy
msgid "Keyword Color"
-msgstr ""
+msgstr "Warna Kata kunci"
#: editor/editor_settings.cpp
msgid "Control Flow Keyword Color"
@@ -5889,14 +5976,15 @@ msgstr ""
#: editor/editor_settings.cpp
msgid "Comment Color"
-msgstr ""
+msgstr "Warna Komentar"
#: editor/editor_settings.cpp
#, fuzzy
msgid "String Color"
msgstr "Menyimpan File:"
-#: editor/editor_settings.cpp
+#: editor/editor_settings.cpp platform/javascript/export/export.cpp
+#: platform/uwp/export/export.cpp
#, fuzzy
msgid "Background Color"
msgstr "Warna latar belakang tidak valid."
@@ -5977,7 +6065,7 @@ msgstr "Penyorot Sintaks"
#: editor/editor_settings.cpp
msgid "Number Color"
-msgstr ""
+msgstr "Warna Angka"
#: editor/editor_settings.cpp
#, fuzzy
@@ -6076,22 +6164,6 @@ msgid "Starting the download..."
msgstr "Memulai download..."
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "HTTP Proxy"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Host"
-msgstr ""
-
-#: editor/export_template_manager.cpp editor/fileserver/editor_file_server.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp main/main.cpp
-#: modules/mono/mono_gd/gd_mono.cpp
-msgid "Port"
-msgstr ""
-
-#: editor/export_template_manager.cpp
msgid "Error requesting URL:"
msgstr "Galat saat meminta URL:"
@@ -6341,8 +6413,9 @@ msgstr ""
#: editor/fileserver/editor_file_server.cpp
#: editor/plugins/version_control_editor_plugin.cpp
+#: platform/uwp/export/export.cpp platform/windows/export/export.cpp
msgid "Password"
-msgstr ""
+msgstr "Kata Sandi"
#: editor/filesystem_dock.cpp
msgid "Favorites"
@@ -6404,6 +6477,11 @@ msgid ""
"After renaming to an unknown extension, the file won't be shown in the "
"editor anymore."
msgstr ""
+"Ekstensi file ini tidak dikenali oleh editor.\n"
+"Jika Anda tetap ingin mengganti namanya, gunakan pengelola file sistem "
+"operasi Anda.\n"
+"Setelah mengganti nama ke ekstensi yang tidak dikenal, file tidak akan "
+"ditampilkan di editor lagi."
#: editor/filesystem_dock.cpp
msgid ""
@@ -6719,6 +6797,116 @@ msgstr ""
msgid "Use Ambient"
msgstr ""
+#: editor/import/resource_importer_bitmask.cpp
+#, fuzzy
+msgid "Create From"
+msgstr "Buat Folder"
+
+#: editor/import/resource_importer_bitmask.cpp
+#: servers/audio/effects/audio_effect_compressor.cpp
+msgid "Threshold"
+msgstr ""
+
+#: editor/import/resource_importer_csv_translation.cpp
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_scene.cpp
+#: editor/import/resource_importer_texture.cpp
+#: editor/import/resource_importer_wav.cpp scene/3d/gi_probe.cpp
+msgid "Compress"
+msgstr "Kompres"
+
+#: editor/import/resource_importer_csv_translation.cpp
+msgid "Delimiter"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+msgid "No BPTC If RGB"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/sprite_3d.cpp
+#: scene/resources/material.cpp scene/resources/particles_material.cpp
+#: scene/resources/texture.cpp
+msgid "Flags"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/animation/tween.cpp
+#: scene/resources/texture.cpp
+msgid "Repeat"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/2d/light_2d.cpp
+#: scene/gui/control.cpp scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Filter"
+msgstr "Filter:"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Mipmaps"
+msgstr "Sinyal"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+msgid "Anisotropic"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+msgid "sRGB"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#, fuzzy
+msgid "Slices"
+msgstr "Iris Otomatis"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
+#: scene/resources/style_box.cpp
+#, fuzzy
+msgid "Horizontal"
+msgstr "Horisontal:"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
+#: scene/resources/style_box.cpp
+#, fuzzy
+msgid "Vertical"
+msgstr "Vertikal:"
+
+#: editor/import/resource_importer_obj.cpp
+#, fuzzy
+msgid "Generate Tangents"
+msgstr "Menghasilkan Nilai"
+
+#: editor/import/resource_importer_obj.cpp
+#, fuzzy
+msgid "Scale Mesh"
+msgstr "Mode Skala"
+
+#: editor/import/resource_importer_obj.cpp
+#, fuzzy
+msgid "Offset Mesh"
+msgstr "Pengimbangan:"
+
+#: editor/import/resource_importer_obj.cpp
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Octahedral Compression"
+msgstr "Kompresi"
+
+#: editor/import/resource_importer_obj.cpp
+#, fuzzy
+msgid "Optimize Mesh Flags"
+msgstr "Ukuran: "
+
#: editor/import/resource_importer_scene.cpp
msgid "Import as Single Scene"
msgstr "Impor sebagai Skena Tunggal"
@@ -6759,6 +6947,156 @@ msgstr "Impor sebagai Beberapa Skena"
msgid "Import as Multiple Scenes+Materials"
msgstr "Impor sebagai Beberapa Skena+Material"
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Nodes"
+msgstr "Node"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Root Type"
+msgstr "Tipe Anggota"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Root Name"
+msgstr "Nama Remot"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Root Scale"
+msgstr "Skala"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Custom Script"
+msgstr "Potong Node"
+
+#: editor/import/resource_importer_scene.cpp scene/resources/texture.cpp
+#, fuzzy
+msgid "Storage"
+msgstr "Menyimpan File:"
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Use Legacy Names"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+#, fuzzy
+msgid "Materials"
+msgstr "Perubahan Material:"
+
+#: editor/import/resource_importer_scene.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Location"
+msgstr "Lokalisasi"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Keep On Reimport"
+msgstr "Impor ulang"
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+#, fuzzy
+msgid "Meshes"
+msgstr "Jala"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Ensure Tangents"
+msgstr "Hitung Tangen"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Light Baking"
+msgstr "Pemetaan Cahaya"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Lightmap Texel Size"
+msgstr "Panggang Lightmaps"
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+msgid "Skins"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Use Named Skins"
+msgstr "Gunakan Pengancingan Skala"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "External Files"
+msgstr "Buka sebuah File"
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Store In Subdir"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Filter Script"
+msgstr "Filter skrip"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Keep Custom Tracks"
+msgstr "Transformasi"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Optimizer"
+msgstr "Optimalkan"
+
+#: editor/import/resource_importer_scene.cpp main/main.cpp
+#: modules/mono/mono_gd/gd_mono.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp scene/2d/camera_2d.cpp scene/2d/light_2d.cpp
+#: scene/2d/navigation_polygon.cpp scene/2d/ray_cast_2d.cpp scene/2d/sprite.cpp
+#: scene/2d/y_sort.cpp scene/3d/audio_stream_player_3d.cpp
+#: scene/3d/baked_lightmap.cpp scene/3d/interpolated_camera.cpp
+#: scene/3d/light.cpp scene/3d/navigation_mesh_instance.cpp
+#: scene/3d/physics_joint.cpp scene/3d/ray_cast.cpp scene/3d/sprite_3d.cpp
+#: scene/gui/graph_edit.cpp scene/gui/rich_text_label.cpp
+#: scene/resources/curve.cpp scene/resources/environment.cpp
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Enabled"
+msgstr "Aktifkan"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Max Linear Error"
+msgstr "Error Linier Maksimum:"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Max Angular Error"
+msgstr "Error Angular Maksimum:"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Max Angle"
+msgstr "Nilai"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Remove Unused Tracks"
+msgstr "Hapus Trek Anim"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Clips"
+msgstr "Klip Anim"
+
+#: editor/import/resource_importer_scene.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/particles_2d.cpp scene/3d/area.cpp scene/3d/cpu_particles.cpp
+#: scene/3d/particles.cpp scene/resources/environment.cpp
+#, fuzzy
+msgid "Amount"
+msgstr "Jumlah:"
+
#: editor/import/resource_importer_scene.cpp
#: editor/plugins/mesh_library_editor_plugin.cpp
msgid "Import Scene"
@@ -6801,12 +7139,149 @@ msgstr ""
msgid "Saving..."
msgstr "Menyimpan..."
+#: editor/import/resource_importer_texture.cpp scene/resources/texture.cpp
+msgid "Lossy Quality"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "HDR Mode"
+msgstr "Mode Seleksi"
+
+#: editor/import/resource_importer_texture.cpp
+msgid "BPTC LDR"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/mesh_instance_2d.cpp scene/2d/multimesh_instance_2d.cpp
+#: scene/2d/particles_2d.cpp scene/2d/sprite.cpp scene/resources/style_box.cpp
+msgid "Normal Map"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Process"
+msgstr "Pasca pemrosesan"
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Fix Alpha Border"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Premult Alpha"
+msgstr "Sunting Poligon"
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Hdr As Srgb"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Invert Color"
+msgstr "Titik"
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Normal Map Invert Y"
+msgstr "Skala Acak:"
+
+#: editor/import/resource_importer_texture.cpp
+#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
+#: scene/audio/audio_stream_player.cpp scene/gui/video_player.cpp
+msgid "Stream"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Size Limit"
+msgstr "Batasan"
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Detect 3D"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "SVG"
+msgstr "HSV"
+
#: editor/import/resource_importer_texture.cpp
msgid ""
"Warning, no suitable PC VRAM compression enabled in Project Settings. This "
"texture will not display correctly on PC."
msgstr ""
+#: editor/import/resource_importer_texture_atlas.cpp
+#, fuzzy
+msgid "Atlas File"
+msgstr "Ukuran Garis Tepi:"
+
+#: editor/import/resource_importer_texture_atlas.cpp
+#, fuzzy
+msgid "Import Mode"
+msgstr "Mode Ekspor:"
+
+#: editor/import/resource_importer_texture_atlas.cpp
+#, fuzzy
+msgid "Crop To Region"
+msgstr "Atur Tile Region"
+
+#: editor/import/resource_importer_texture_atlas.cpp
+msgid "Trim Alpha Border From Region"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp scene/2d/physics_body_2d.cpp
+#, fuzzy
+msgid "Force"
+msgstr "Sumber Mesh:"
+
+#: editor/import/resource_importer_wav.cpp
+msgid "8 Bit"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp main/main.cpp
+#: modules/mono/editor/csharp_project.cpp modules/mono/mono_gd/gd_mono.cpp
+msgid "Mono"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+#, fuzzy
+msgid "Max Rate"
+msgstr "Aduk Node"
+
+#: editor/import/resource_importer_wav.cpp
+#, fuzzy
+msgid "Max Rate Hz"
+msgstr "Aduk Node"
+
+#: editor/import/resource_importer_wav.cpp
+msgid "Trim"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+#, fuzzy
+msgid "Normalize"
+msgstr "Format"
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+#, fuzzy
+msgid "Loop Mode"
+msgstr "Mode Pindah"
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+#, fuzzy
+msgid "Loop Begin"
+msgstr "Mode Pindah"
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+#, fuzzy
+msgid "Loop End"
+msgstr "Mode Pindah"
+
#: editor/import_defaults_editor.cpp
msgid "Select Importer"
msgstr "Pilih Importir"
@@ -6877,6 +7352,29 @@ msgid "Failed to load resource."
msgstr "Gagal memuat resource."
#: editor/inspector_dock.cpp
+#, fuzzy
+msgid "Property Name Style"
+msgstr "Nama Projek:"
+
+#: editor/inspector_dock.cpp scene/gui/color_picker.cpp
+msgid "Raw"
+msgstr "Raw (%)"
+
+#: editor/inspector_dock.cpp
+#, fuzzy
+msgid "Capitalized"
+msgstr "Kapitalisasi"
+
+#: editor/inspector_dock.cpp
+#, fuzzy
+msgid "Localized"
+msgstr "Pelokalan"
+
+#: editor/inspector_dock.cpp
+msgid "Localization not available for current language."
+msgstr ""
+
+#: editor/inspector_dock.cpp
msgid "Copy Properties"
msgstr "Salin Properti"
@@ -7920,18 +8418,26 @@ msgid "License (Z-A)"
msgstr "Lisensi (Z-A)"
#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgctxt "Pagination"
msgid "First"
msgstr "Pertama"
-#: editor/plugins/asset_library_editor_plugin.cpp scene/gui/control.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgctxt "Pagination"
msgid "Previous"
msgstr "Sebelum"
-#: editor/plugins/asset_library_editor_plugin.cpp scene/gui/control.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgctxt "Pagination"
msgid "Next"
msgstr "Berikutnya"
#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgctxt "Pagination"
msgid "Last"
msgstr "Terakhir"
@@ -8178,19 +8684,19 @@ msgstr ""
"Ketika aktif, memindahkan node Control akan mengubah jangkarnya daripada "
"batasnya."
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Top Left"
msgstr "Kiri Atas"
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Top Right"
msgstr "Kanan Atas"
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Bottom Right"
msgstr "Kanan Bawah"
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Bottom Left"
msgstr "Kiri Bawah"
@@ -8909,6 +9415,19 @@ msgstr "Panggang GI Probe"
msgid "Gradient Edited"
msgstr "Gradasi Disunting"
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+msgid "Swap GradientTexture2D Fill Points"
+msgstr ""
+
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+msgid "Swap Gradient Fill Points"
+msgstr ""
+
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+#, fuzzy
+msgid "Toggle Grid Snap"
+msgstr "Beralih Mode"
+
#: editor/plugins/item_list_editor_plugin.cpp
msgid "Item %d"
msgstr "Item %d"
@@ -9144,8 +9663,9 @@ msgstr ""
"Perbarui dari skena yang ada?:\n"
"%s"
-#: editor/plugins/mesh_library_editor_plugin.cpp modules/gridmap/grid_map.cpp
-msgid "Mesh Library"
+#: editor/plugins/mesh_library_editor_plugin.cpp
+#, fuzzy
+msgid "MeshLibrary"
msgstr "Pustaka Mesh"
#: editor/plugins/mesh_library_editor_plugin.cpp
@@ -10138,8 +10658,8 @@ msgstr "Hubungan dengan fungsi:"
msgid "Source"
msgstr "Sumber"
-#: editor/plugins/script_text_editor.cpp scene/3d/interpolated_camera.cpp
-#: scene/animation/skeleton_ik.cpp
+#: editor/plugins/script_text_editor.cpp platform/uwp/export/export.cpp
+#: scene/3d/interpolated_camera.cpp scene/animation/skeleton_ik.cpp
msgid "Target"
msgstr "Sasaran"
@@ -11125,7 +11645,9 @@ msgstr "Kecepatan:"
#: editor/plugins/sprite_frames_editor_plugin.cpp
#: modules/gltf/gltf_animation.cpp modules/minimp3/audio_stream_mp3.cpp
-#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp scene/2d/path_2d.cpp
+#: modules/minimp3/resource_importer_mp3.cpp
+#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp
+#: modules/stb_vorbis/resource_importer_ogg_vorbis.cpp scene/2d/path_2d.cpp
#: scene/3d/path.cpp scene/resources/animation.cpp scene/resources/material.cpp
msgid "Loop"
msgstr "Pengulangan"
@@ -11653,6 +12175,8 @@ msgid ""
"Pin this StyleBox as a main style. Editing its properties will update the "
"same properties in all other StyleBoxes of this type."
msgstr ""
+"Sematkan StyleBox ini sebagai gaya utama. Mengedit propertinya akan "
+"memperbarui properti yang sama di semua StyleBox lain dari jenis ini."
#: editor/plugins/theme_editor_plugin.cpp
#, fuzzy
@@ -11675,8 +12199,9 @@ msgid "Show Default"
msgstr "Muat Default"
#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
msgid "Show default type items alongside items that have been overridden."
-msgstr ""
+msgstr "Tampilkan item tipe default di samping item yang telah diganti."
#: editor/plugins/theme_editor_plugin.cpp
#, fuzzy
@@ -11684,18 +12209,21 @@ msgid "Override All"
msgstr "Menimpa"
#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
msgid "Override all default type items."
-msgstr ""
+msgstr "Ganti semua item tipe default."
#: editor/plugins/theme_editor_plugin.cpp
msgid "Select the variation base type from a list of available types."
-msgstr ""
+msgstr "Pilih tipe dasar variasi dari daftar tipe yang tersedia."
#: editor/plugins/theme_editor_plugin.cpp
msgid ""
"A type associated with a built-in class cannot be marked as a variation of "
"another type."
msgstr ""
+"Tipe yang terkait dengan kelas bawaan tidak dapat ditandai sebagai variasi "
+"dari tipe lain."
#: editor/plugins/theme_editor_plugin.cpp
msgid "Theme:"
@@ -11708,7 +12236,7 @@ msgstr "Kelola Templat Ekspor…"
#: editor/plugins/theme_editor_plugin.cpp
msgid "Add, remove, organize and import Theme items."
-msgstr ""
+msgstr "Tambah, hapus, atur, dan impor item Tema."
#: editor/plugins/theme_editor_plugin.cpp
#, fuzzy
@@ -11726,10 +12254,13 @@ msgid "Select UI Scene:"
msgstr "Pilih Mesh Sumber:"
#: editor/plugins/theme_editor_preview.cpp
+#, fuzzy
msgid ""
"Toggle the control picker, allowing to visually select control types for "
"edit."
msgstr ""
+"Alihkan pemilih kontrol, memungkinkan untuk memilih jenis kontrol secara "
+"visual untuk diedit."
#: editor/plugins/theme_editor_preview.cpp
msgid "Toggle Button"
@@ -11818,10 +12349,13 @@ msgstr "Memiliki,Banyak,Opsi"
#: editor/plugins/theme_editor_preview.cpp
msgid "Invalid path, the PackedScene resource was probably moved or removed."
msgstr ""
+"Jalur tidak valid, sumber daya PackedScene mungkin dipindahkan atau dihapus."
#: editor/plugins/theme_editor_preview.cpp
+#, fuzzy
msgid "Invalid PackedScene resource, must have a Control node at its root."
msgstr ""
+"Sumber daya PackedScene tidak valid, harus memiliki node Kontrol di akarnya."
#: editor/plugins/theme_editor_preview.cpp
#, fuzzy
@@ -11830,11 +12364,11 @@ msgstr "Berkas salah, tidak layout suara bus."
#: editor/plugins/theme_editor_preview.cpp
msgid "Reload the scene to reflect its most actual state."
-msgstr ""
+msgstr "Muat ulang skena untuk mencerminkan keadaannya yang paling aktual."
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Erase Selection"
-msgstr "Hapus Pilihan"
+msgstr "Hapus Seleksi"
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Fix Invalid Tiles"
@@ -12056,8 +12590,9 @@ msgstr "Masker Bit"
msgid "Priority"
msgstr "Prioritas"
-#: editor/plugins/tile_set_editor_plugin.cpp main/main.cpp scene/gui/button.cpp
-#: scene/gui/item_list.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp main/main.cpp
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#: scene/gui/button.cpp scene/gui/item_list.cpp
msgid "Icon"
msgstr "Ikon"
@@ -12365,8 +12900,9 @@ msgid "Commit:"
msgstr "Komit"
#: editor/plugins/version_control_editor_plugin.cpp
+#, fuzzy
msgid "Date:"
-msgstr ""
+msgstr "Tanggal:"
#: editor/plugins/version_control_editor_plugin.cpp
#, fuzzy
@@ -12374,8 +12910,9 @@ msgid "Subtitle:"
msgstr "Subpohon"
#: editor/plugins/version_control_editor_plugin.cpp
+#, fuzzy
msgid "Do you want to remove the %s branch?"
-msgstr ""
+msgstr "Apakah Anda ingin menghapus cabang %s?"
#: editor/plugins/version_control_editor_plugin.cpp
#, fuzzy
@@ -12401,16 +12938,19 @@ msgid "Remote Login"
msgstr "Hapus Titik"
#: editor/plugins/version_control_editor_plugin.cpp
+#, fuzzy
msgid "Select SSH public key path"
-msgstr ""
+msgstr "Pilih jalur kunci publik SSH"
#: editor/plugins/version_control_editor_plugin.cpp
+#, fuzzy
msgid "Select SSH private key path"
-msgstr ""
+msgstr "Pilih jalur kunci pribadi SSH"
#: editor/plugins/version_control_editor_plugin.cpp
+#, fuzzy
msgid "SSH Passphrase"
-msgstr ""
+msgstr "Frasa Sandi SSH"
#: editor/plugins/version_control_editor_plugin.cpp
msgid "Detect new changes"
@@ -12427,75 +12967,65 @@ msgid "Stage all changes"
msgstr "Menyimpan perubahan-perubahan lokal..."
#: editor/plugins/version_control_editor_plugin.cpp
-#, fuzzy
msgid "Unstage all changes"
-msgstr "Perubahan Material:"
+msgstr "Buang semua perubahan"
#: editor/plugins/version_control_editor_plugin.cpp
-#, fuzzy
msgid "Commit Message"
-msgstr "Komit Perubahan"
+msgstr "Pesan Komit"
#: editor/plugins/version_control_editor_plugin.cpp
msgid "Commit Changes"
msgstr "Komit Perubahan"
#: editor/plugins/version_control_editor_plugin.cpp
-#, fuzzy
msgid "Commit List"
-msgstr "Komit"
+msgstr "Daftar Komit"
#: editor/plugins/version_control_editor_plugin.cpp
msgid "Commit list size"
-msgstr ""
+msgstr "Ukuran daftar komit"
#: editor/plugins/version_control_editor_plugin.cpp
-#, fuzzy
msgid "Branches"
-msgstr "Kecocokan:"
+msgstr "Cabang"
#: editor/plugins/version_control_editor_plugin.cpp
-#, fuzzy
msgid "Create New Branch"
-msgstr "Buat Projek Baru"
+msgstr "Buat Cabang Baru"
#: editor/plugins/version_control_editor_plugin.cpp
-#, fuzzy
msgid "Remove Branch"
-msgstr "Hapus Trek Anim"
+msgstr "Hapus Cabang"
#: editor/plugins/version_control_editor_plugin.cpp
msgid "Branch Name"
-msgstr ""
+msgstr "Nama Cabang"
#: editor/plugins/version_control_editor_plugin.cpp
-#, fuzzy
msgid "Remotes"
msgstr "Remot"
#: editor/plugins/version_control_editor_plugin.cpp
-#, fuzzy
msgid "Create New Remote"
-msgstr "Buat Projek Baru"
+msgstr "Buat Remot Baru"
#: editor/plugins/version_control_editor_plugin.cpp
-#, fuzzy
msgid "Remove Remote"
-msgstr "Hapus item"
+msgstr "Hapus Remot"
#: editor/plugins/version_control_editor_plugin.cpp
-#, fuzzy
msgid "Remote Name"
-msgstr "Remot "
+msgstr "Nama Remot"
#: editor/plugins/version_control_editor_plugin.cpp
-#, fuzzy
msgid "Remote URL"
-msgstr "Remot "
+msgstr "URL Remot"
#: editor/plugins/version_control_editor_plugin.cpp
+#, fuzzy
msgid "Fetch"
-msgstr ""
+msgstr "Mengambil"
#: editor/plugins/version_control_editor_plugin.cpp
msgid "Pull"
@@ -13464,10 +13994,6 @@ msgstr ""
"pengaturan ekspor Anda."
#: editor/project_export.cpp
-msgid "Release"
-msgstr "Rilis"
-
-#: editor/project_export.cpp
msgid "Exporting All"
msgstr "Mengekspor Semua"
@@ -13569,7 +14095,7 @@ msgstr "Teks"
#: editor/project_export.cpp
msgid "Compiled Bytecode (Faster Loading)"
-msgstr ""
+msgstr "Bitakode Terkompilasi (Memuat Lebih Cepat)"
#: editor/project_export.cpp
msgid "Encrypted (Provide Key Below)"
@@ -13590,6 +14116,8 @@ msgid ""
"Note: Encryption key needs to be stored in the binary,\n"
"you need to build the export templates from source."
msgstr ""
+"Catatan: Kunci enkripsi perlu disimpan dalam biner,\n"
+"Anda perlu membuat templat ekspor dari sumber."
#: editor/project_export.cpp
#, fuzzy
@@ -14005,7 +14533,7 @@ msgstr "Hapus semua"
#: editor/project_manager.cpp
msgid "Also delete project contents (no undo!)"
-msgstr ""
+msgstr "Hapus juga konten proyek (tidak dapat dibatalkan!)"
#: editor/project_manager.cpp
msgid "Can't run project"
@@ -14037,8 +14565,9 @@ msgstr ""
"mengandung paling tidak satu karakter `/`."
#: editor/project_settings_editor.cpp
+#, fuzzy
msgid "Physical Key"
-msgstr ""
+msgstr "Kunci Fisik"
#: editor/project_settings_editor.cpp
msgid "Key "
@@ -14671,21 +15200,28 @@ msgstr "Hapus node \"%s\"?"
#: editor/scene_tree_dock.cpp
msgid ""
"Saving the branch as a scene requires having a scene open in the editor."
-msgstr ""
+msgstr "Menyimpan cabang sebagai skena membutuhkan skena terbuka di 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 ""
+"Menyimpan cabang sebagai skena hanya memerlukan satu node, tetapi Anda telah "
+"memilih %d node."
#: editor/scene_tree_dock.cpp
+#, fuzzy
msgid ""
"Can't save the root node branch as an instanced scene.\n"
"To create an editable copy of the current scene, duplicate it using the "
"FileSystem dock context menu\n"
"or create an inherited scene using Scene > New Inherited Scene... instead."
msgstr ""
+"Tidak dapat menyimpan node akar sebagai skena instance.\n"
+"Untuk membuat salinan skena saat ini yang dapat diedit, duplikat menggunakan "
+"menu konteks dermaga FileSystem\n"
+"atau buat adegan yang diwariskan menggunakan Skena > Skena Diwariskan Baru"
#: editor/scene_tree_dock.cpp
msgid ""
@@ -14700,6 +15236,10 @@ msgid ""
"To save this branch into its own scene, open the original scene, right click "
"on this branch, and select \"Save Branch as Scene\"."
msgstr ""
+"Tidak dapat menyimpan cabang yang merupakan anak dari skena yang sudah di "
+"instance.\n"
+"Untuk menyimpan cabang ini ke dalam skenanya sendiri, buka skena aslinya, "
+"klik kanan pada cabang ini, dan pilih \"Simpan Cabang sebagai Skena\"."
#: editor/scene_tree_dock.cpp
msgid ""
@@ -14707,6 +15247,10 @@ msgid ""
"To save this branch into its own scene, open the original scene, right click "
"on this branch, and select \"Save Branch as Scene\"."
msgstr ""
+"Tidak dapat menyimpan cabang yang merupakan bagian dari skena yang "
+"diwarisi.\n"
+"Untuk menyimpan cabang ini ke dalam skenanya sendiri, buka skena aslinya, "
+"klik kanan pada cabang ini, dan pilih \"Simpan Cabang sebagai Skena\"."
#: editor/scene_tree_dock.cpp
msgid "Save New Scene As..."
@@ -14895,6 +15439,9 @@ msgid ""
"every time it updates.\n"
"Switch back to the Local scene tree dock to improve performance."
msgstr ""
+"Jika dipilih, dok pohon skena jauh akan menyebabkan proyek tersendat setiap "
+"kali diperbarui.. Beralih kembali ke dok pohon skena Lokal untuk "
+"meningkatkan kinerja."
#: editor/scene_tree_dock.cpp
msgid "Local"
@@ -15127,6 +15674,8 @@ msgid ""
"Warning: Having the script name be the same as a built-in type is usually "
"not desired."
msgstr ""
+"Peringatan: Memiliki nama skrip yang sama dengan tipe bawaan biasanya tidak "
+"disarankan."
#: editor/script_create_dialog.cpp
msgid "Class Name:"
@@ -15198,7 +15747,7 @@ msgstr "Salin Galat"
#: editor/script_editor_debugger.cpp
msgid "Open C++ Source on GitHub"
-msgstr ""
+msgstr "Buka Sumber C++ di GitHub"
#: editor/script_editor_debugger.cpp
msgid "Video RAM"
@@ -15227,7 +15776,7 @@ msgstr "Filter tile"
#: editor/script_editor_debugger.cpp
msgid "Auto Switch To Remote Scene Tree"
-msgstr ""
+msgstr "Beralih Otomatis Ke Pohon Skena Jarak Jauh"
#: editor/script_editor_debugger.cpp
msgid "Remote Scene Tree Refresh Interval"
@@ -15345,8 +15894,9 @@ msgid "Change AudioStreamPlayer3D Emission Angle"
msgstr "Ubah Sudut Emisi AudioStreamPlayer3D"
#: editor/spatial_editor_gizmos.cpp modules/gltf/gltf_node.cpp
+#: platform/osx/export/export.cpp
msgid "Camera"
-msgstr ""
+msgstr "Kamera"
#: editor/spatial_editor_gizmos.cpp
msgid "Change Camera FOV"
@@ -15369,7 +15919,7 @@ msgstr "Titik"
#: scene/resources/particles_material.cpp servers/physics_2d_server.cpp
#: servers/physics_server.cpp
msgid "Shape"
-msgstr ""
+msgstr "Bentuk"
#: editor/spatial_editor_gizmos.cpp
msgid "Visibility Notifier"
@@ -15386,7 +15936,7 @@ msgstr "Ubah Partikel AABB"
#: editor/spatial_editor_gizmos.cpp
#, fuzzy
msgid "Reflection Probe"
-msgstr "Pilih Properti"
+msgstr "Penyelidikan Refleksi"
#: editor/spatial_editor_gizmos.cpp
msgid "Change Probe Extents"
@@ -15546,7 +16096,7 @@ msgstr ""
#: main/main.cpp servers/physics_2d/physics_2d_server_sw.cpp
#: servers/visual/visual_server_scene.cpp
msgid "Use BVH"
-msgstr ""
+msgstr "Gunakan BVH"
#: main/main.cpp servers/physics_2d/physics_2d_server_sw.cpp
#: servers/visual/visual_server_scene.cpp
@@ -15578,16 +16128,17 @@ msgid "Max Chars Per Second"
msgstr ""
#: main/main.cpp
+#, fuzzy
msgid "Max Messages Per Frame"
-msgstr ""
+msgstr "Maksimal Pesan Per Bingkai"
#: main/main.cpp
msgid "Max Errors Per Second"
-msgstr ""
+msgstr "Maksimal Galat Per Detik"
#: main/main.cpp
msgid "Max Warnings Per Second"
-msgstr ""
+msgstr "Maksimal Peringatan Per Detik"
#: main/main.cpp
msgid "Flush stdout On Print"
@@ -15632,7 +16183,8 @@ msgstr ""
msgid "Use Nvidia Rect Flicker Workaround"
msgstr ""
-#: main/main.cpp platform/uwp/os_uwp.cpp
+#: main/main.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp platform/uwp/os_uwp.cpp
#, fuzzy
msgid "Display"
msgstr "Tampilkan Semua"
@@ -15641,7 +16193,7 @@ msgstr "Tampilkan Semua"
#: modules/opensimplex/noise_texture.cpp scene/2d/line_2d.cpp
#: scene/gui/text_edit.cpp scene/resources/texture.cpp
msgid "Width"
-msgstr ""
+msgstr "Lebar"
#: main/main.cpp modules/csg/csg_shape.cpp modules/gltf/gltf_node.cpp
#: modules/opensimplex/noise_texture.cpp scene/2d/light_2d.cpp
@@ -15654,8 +16206,9 @@ msgid "Height"
msgstr "Cahaya"
#: main/main.cpp
+#, fuzzy
msgid "Always On Top"
-msgstr ""
+msgstr "Selalu Di Depan"
#: main/main.cpp
#, fuzzy
@@ -15691,24 +16244,12 @@ msgstr ""
#: main/main.cpp
msgid "Allowed"
-msgstr ""
-
-#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp scene/2d/camera_2d.cpp
-#: scene/2d/light_2d.cpp scene/2d/navigation_polygon.cpp
-#: scene/2d/ray_cast_2d.cpp scene/2d/sprite.cpp scene/2d/y_sort.cpp
-#: scene/3d/audio_stream_player_3d.cpp scene/3d/baked_lightmap.cpp
-#: scene/3d/interpolated_camera.cpp scene/3d/light.cpp
-#: scene/3d/navigation_mesh_instance.cpp scene/3d/ray_cast.cpp
-#: scene/3d/sprite_3d.cpp scene/gui/graph_edit.cpp
-#: scene/gui/rich_text_label.cpp scene/resources/curve.cpp
-#: scene/resources/environment.cpp
-#, fuzzy
-msgid "Enabled"
-msgstr "Aktifkan"
+msgstr "Diizinkan"
#: main/main.cpp
+#, fuzzy
msgid "Intended Usage"
-msgstr ""
+msgstr "Penggunaan yang Dimaksudkan"
#: main/main.cpp
#, fuzzy
@@ -15737,13 +16278,14 @@ msgstr ""
msgid "Handheld"
msgstr ""
-#: main/main.cpp
+#: main/main.cpp platform/javascript/export/export.cpp
+#: platform/uwp/export/export.cpp
#, fuzzy
msgid "Orientation"
msgstr "Dokumentasi Online"
#: main/main.cpp scene/gui/scroll_container.cpp scene/gui/text_edit.cpp
-#: scene/main/scene_tree.cpp
+#: scene/main/scene_tree.cpp scene/register_scene_types.cpp
#, fuzzy
msgid "Common"
msgstr "Komunitas"
@@ -15777,8 +16319,9 @@ msgid "stdout"
msgstr ""
#: main/main.cpp
+#, fuzzy
msgid "Print FPS"
-msgstr ""
+msgstr "Cetak jumlah Bingkai Per Detik"
#: main/main.cpp
msgid "Verbose stdout"
@@ -15786,12 +16329,12 @@ msgstr ""
#: main/main.cpp
#, fuzzy
-msgid "Frame Delay (msec)"
+msgid "Frame Delay Msec"
msgstr "Seleksi Bingkai"
#: main/main.cpp
msgid "Low Processor Mode"
-msgstr ""
+msgstr "Mode Processor Rendah"
#: main/main.cpp
msgid "Delta Sync After Draw"
@@ -15817,7 +16360,7 @@ msgstr "Titik"
#: main/main.cpp
msgid "Touch Delay"
-msgstr ""
+msgstr "Penundaan Sentuh"
#: main/main.cpp servers/visual_server.cpp
msgid "GLES3"
@@ -15858,7 +16401,7 @@ msgstr ""
#: main/main.cpp
msgid "Fullsize"
-msgstr ""
+msgstr "Ukuran penuh"
#: main/main.cpp scene/resources/dynamic_font.cpp
#, fuzzy
@@ -15877,7 +16420,7 @@ msgstr "Atur Ikon Tile"
#: main/main.cpp
msgid "Windows Native Icon"
-msgstr ""
+msgstr "Ikon Windows"
#: main/main.cpp
msgid "Buffering"
@@ -15888,12 +16431,14 @@ msgid "Agile Event Flushing"
msgstr ""
#: main/main.cpp
+#, fuzzy
msgid "Emulate Touch From Mouse"
-msgstr ""
+msgstr "Emulasi Sentuhan Dari Mouse"
#: main/main.cpp
+#, fuzzy
msgid "Emulate Mouse From Touch"
-msgstr ""
+msgstr "Emulasi Mouse Dari Sentuhan"
#: main/main.cpp
#, fuzzy
@@ -15914,11 +16459,6 @@ msgstr ""
msgid "Tooltip Position Offset"
msgstr "Offset Perputaran:"
-#: main/main.cpp modules/mono/editor/csharp_project.cpp
-#: modules/mono/mono_gd/gd_mono.cpp
-msgid "Mono"
-msgstr ""
-
#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp
#, fuzzy
msgid "Debugger Agent"
@@ -15966,8 +16506,9 @@ msgid "Shrink"
msgstr ""
#: main/main.cpp
+#, fuzzy
msgid "Auto Accept Quit"
-msgstr ""
+msgstr "Otomatis Terima Keluar"
#: main/main.cpp
#, fuzzy
@@ -15981,7 +16522,7 @@ msgstr "Kancing ke Tepi Node"
#: main/main.cpp
msgid "Dynamic Fonts"
-msgstr ""
+msgstr "Fonta Dinamis"
#: main/main.cpp
msgid "Use Oversampling"
@@ -16018,7 +16559,7 @@ msgstr "Opsi"
#: modules/csg/csg_shape.cpp
msgid "Calculate Tangents"
-msgstr ""
+msgstr "Hitung Tangen"
#: modules/csg/csg_shape.cpp
#, fuzzy
@@ -16026,9 +16567,8 @@ msgid "Use Collision"
msgstr "Area Tabrakan"
#: modules/csg/csg_shape.cpp servers/physics_2d_server.cpp
-#, fuzzy
msgid "Collision Layer"
-msgstr "Mode Tabrakan"
+msgstr "Lapisan Tabrakan"
#: modules/csg/csg_shape.cpp scene/2d/ray_cast_2d.cpp scene/3d/camera.cpp
#: scene/3d/ray_cast.cpp scene/3d/spring_arm.cpp
@@ -16082,7 +16622,7 @@ msgstr "Tampilkan Garis-bantu"
#: modules/csg/csg_shape.cpp
msgid "Cone"
-msgstr ""
+msgstr "Kerucut"
#: modules/csg/csg_shape.cpp
#, fuzzy
@@ -16107,7 +16647,7 @@ msgstr "Poligon"
#: modules/csg/csg_shape.cpp
msgid "Spin Degrees"
-msgstr ""
+msgstr "Derajat Putaran"
#: modules/csg/csg_shape.cpp
msgid "Spin Sides"
@@ -16157,9 +16697,8 @@ msgid "Path Joined"
msgstr "Perputaran Acak:"
#: modules/enet/networked_multiplayer_enet.cpp
-#, fuzzy
msgid "Compression Mode"
-msgstr "Mode Tabrakan"
+msgstr "Mode Kompresi"
#: modules/enet/networked_multiplayer_enet.cpp
#, fuzzy
@@ -16313,11 +16852,11 @@ msgstr ""
#: modules/gdscript/gdscript.cpp
msgid "Treat Warnings As Errors"
-msgstr ""
+msgstr "Perlakukan Peringatan Sebagai Galat"
#: modules/gdscript/gdscript.cpp
msgid "Exclude Addons"
-msgstr ""
+msgstr "Kecualikan Addon"
#: modules/gdscript/gdscript.cpp
msgid "Autocomplete Setters And Getters"
@@ -16371,7 +16910,7 @@ msgstr "Tidak Bisa Menyelesaikan"
#: modules/gdscript/language_server/gdscript_language_server.cpp
msgid "Show Native Symbols In Editor"
-msgstr ""
+msgstr "Tampilkan Simbol Asli Di Editor"
#: modules/gdscript/language_server/gdscript_language_server.cpp
msgid "Use Thread"
@@ -16496,9 +17035,9 @@ msgstr "Warna"
#: modules/gltf/gltf_light.cpp scene/3d/reflection_probe.cpp
#: scene/resources/environment.cpp
msgid "Intensity"
-msgstr ""
+msgstr "Intensitas"
-#: modules/gltf/gltf_light.cpp scene/2d/light_2d.cpp
+#: modules/gltf/gltf_light.cpp scene/2d/light_2d.cpp scene/3d/light.cpp
#, fuzzy
msgid "Range"
msgstr "Ubah"
@@ -16563,7 +17102,7 @@ msgstr ""
#: modules/gltf/gltf_skeleton.cpp modules/gltf/gltf_state.cpp
msgid "Unique Names"
-msgstr ""
+msgstr "Nama Unik"
#: modules/gltf/gltf_skeleton.cpp
#, fuzzy
@@ -16645,11 +17184,6 @@ msgstr "Cahaya"
msgid "Use Named Skin Binds"
msgstr ""
-#: modules/gltf/gltf_state.cpp scene/3d/physics_joint.cpp
-#, fuzzy
-msgid "Nodes"
-msgstr "Node"
-
#: modules/gltf/gltf_state.cpp
#, fuzzy
msgid "Buffer Views"
@@ -16661,16 +17195,6 @@ msgstr ""
#: modules/gltf/gltf_state.cpp
#, fuzzy
-msgid "Meshes"
-msgstr "Jala"
-
-#: modules/gltf/gltf_state.cpp
-#, fuzzy
-msgid "Materials"
-msgstr "Perubahan Material:"
-
-#: modules/gltf/gltf_state.cpp
-#, fuzzy
msgid "Scene Name"
msgstr "Lokasi Skena:"
@@ -16686,17 +17210,13 @@ msgstr "Nama node akar"
msgid "Textures"
msgstr "Fitur-fitur"
-#: modules/gltf/gltf_state.cpp
+#: modules/gltf/gltf_state.cpp platform/uwp/export/export.cpp
msgid "Images"
msgstr ""
#: modules/gltf/gltf_state.cpp
-msgid "Skins"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp
msgid "Cameras"
-msgstr ""
+msgstr "Kamera kamera"
#: modules/gltf/gltf_state.cpp servers/visual_server.cpp
#, fuzzy
@@ -16729,11 +17249,15 @@ msgid "Src Image"
msgstr "Tampilkan Tulang-tulang"
#: modules/gridmap/grid_map.cpp
+msgid "Mesh Library"
+msgstr "Pustaka Mesh"
+
+#: modules/gridmap/grid_map.cpp
#, fuzzy
msgid "Physics Material"
msgstr "Frame Fisika %"
-#: modules/gridmap/grid_map.cpp
+#: modules/gridmap/grid_map.cpp scene/3d/visual_instance.cpp
#, fuzzy
msgid "Use In Baked Light"
msgstr "Panggang Lightmaps"
@@ -16765,6 +17289,7 @@ msgstr "Tengah"
#: modules/gridmap/grid_map.cpp scene/2d/collision_object_2d.cpp
#: scene/2d/tile_map.cpp scene/3d/collision_object.cpp scene/3d/soft_body.cpp
+#: scene/resources/material.cpp
msgid "Mask"
msgstr ""
@@ -16948,7 +17473,9 @@ msgid "Ultra Quality Ray Count"
msgstr ""
#: modules/minimp3/audio_stream_mp3.cpp
+#: modules/minimp3/resource_importer_mp3.cpp
#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp
+#: modules/stb_vorbis/resource_importer_ogg_vorbis.cpp
#, fuzzy
msgid "Loop Offset"
msgstr "Pengimbangan:"
@@ -17096,7 +17623,7 @@ msgstr ""
#: modules/opensimplex/open_simplex_noise.cpp
msgid "Period"
-msgstr ""
+msgstr "Periode"
#: modules/opensimplex/open_simplex_noise.cpp
#, fuzzy
@@ -17109,7 +17636,7 @@ msgstr ""
#: modules/regex/regex.cpp
msgid "Subject"
-msgstr ""
+msgstr "Subjek"
#: modules/regex/regex.cpp
#, fuzzy
@@ -17557,7 +18084,7 @@ msgstr "animasi"
#: modules/visual_script/visual_script_flow_control.cpp
msgid "if (cond) is:"
-msgstr ""
+msgstr "if (kondisi) adalah:"
#: modules/visual_script/visual_script_flow_control.cpp
msgid "While"
@@ -17565,7 +18092,7 @@ msgstr ""
#: modules/visual_script/visual_script_flow_control.cpp
msgid "while (cond):"
-msgstr ""
+msgstr "while (kondisi):"
#: modules/visual_script/visual_script_flow_control.cpp
msgid "Iterator"
@@ -17871,7 +18398,7 @@ msgstr "Panggil"
#: modules/visual_script/visual_script_nodes.cpp scene/gui/graph_node.cpp
msgid "Title"
-msgstr ""
+msgstr "Judul"
#: modules/visual_script/visual_script_nodes.cpp
#, fuzzy
@@ -17959,11 +18486,11 @@ msgstr "Mode Prioritas"
#: modules/websocket/websocket_client.cpp
msgid "Verify SSL"
-msgstr ""
+msgstr "Verifikasi SSL"
#: modules/websocket/websocket_client.cpp
msgid "Trusted SSL Certificate"
-msgstr ""
+msgstr "Sertifikat SSL Tepercaya"
#: modules/websocket/websocket_server.cpp
msgid "Bind IP"
@@ -17971,11 +18498,11 @@ msgstr ""
#: modules/websocket/websocket_server.cpp
msgid "Private Key"
-msgstr ""
+msgstr "Kunci Pribadi"
#: modules/websocket/websocket_server.cpp platform/javascript/export/export.cpp
msgid "SSL Certificate"
-msgstr ""
+msgstr "Sertifikat SSL"
#: modules/websocket/websocket_server.cpp
#, fuzzy
@@ -18022,7 +18549,7 @@ msgstr "Coba Lagi"
#: platform/android/export/export.cpp
msgid "Android SDK Path"
-msgstr ""
+msgstr "Jalur Android SDK"
#: platform/android/export/export.cpp
#, fuzzy
@@ -18043,7 +18570,7 @@ msgstr ""
#: platform/android/export/export.cpp
msgid "Shutdown ADB On Exit"
-msgstr ""
+msgstr "Matikan ADB Saat Keluar"
#: platform/android/export/export_plugin.cpp
msgid "Package name is missing."
@@ -18070,6 +18597,194 @@ msgid "The package must have at least one '.' separator."
msgstr "Package setidaknya harus memiliki sebuah pemisah '.'."
#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Use Custom Build"
+msgstr "Gunakan Direktori Pengguna Kustom"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Export Format"
+msgstr "Lokasi Ekspor"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Keystore"
+msgstr "Pengawakutu"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Debug User"
+msgstr "Pengawakutu"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+msgid "Debug Password"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Release User"
+msgstr "Rilis"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Release Password"
+msgstr "Kata Sandi"
+
+#: platform/android/export/export_plugin.cpp
+msgid "One Click Deploy"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Clear Previous Install"
+msgstr "Inspeksi Instance Sebelumnya"
+
+#: platform/android/export/export_plugin.cpp scene/resources/shader.cpp
+msgid "Code"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Min SDK"
+msgstr "Ukuran Garis Tepi:"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Target SDK"
+msgstr "FPS Sasaran"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Package"
+msgstr "Mengemas"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Unique Name"
+msgstr "Nama Unik"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Signed"
+msgstr "Sinyal"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Classify As Game"
+msgstr "Nama Kelas:"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Retain Data On Uninstall"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Exclude From Recents"
+msgstr "Hapus Node"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Graphics"
+msgstr "Offset Kotak-kotak:"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "OpenGL Debug"
+msgstr "Buka"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "XR Features"
+msgstr "Fitur-fitur"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "XR Mode"
+msgstr "Mode Geser Pandangan"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Hand Tracking"
+msgstr "Mengemas"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Hand Tracking Frequency"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Passthrough"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Immersive Mode"
+msgstr "Mode Prioritas"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Support Small"
+msgstr "Dukungan"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Support Normal"
+msgstr "Dukungan"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Support Large"
+msgstr "Dukungan"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Support Xlarge"
+msgstr "Dukungan"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "User Data Backup"
+msgstr "Antarmuka Pengguna"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Allow"
+msgstr "Diizinkan"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Command Line"
+msgstr "Komunitas"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Extra Args"
+msgstr "Argumen-argumen Panggilan Ekstra:"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "APK Expansion"
+msgstr "Tetapkan ekspresi"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Salt"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Public Key"
+msgstr "Jalur Kunci Publik SSH"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Permissions"
+msgstr "Masker Emisi"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Custom Permissions"
+msgstr "Mainkan Skena Kustom"
+
+#: platform/android/export/export_plugin.cpp
msgid "Select device from the list"
msgstr "Pilih perangkat pada daftar"
@@ -18227,6 +18942,7 @@ msgstr ""
#: platform/android/export/export_plugin.cpp
msgid "\"Target Sdk\" version must be greater or equal to \"Min Sdk\" version."
msgstr ""
+"Versi \"Target SDK\" harus lebih tinggi atau sama dengan versi \"Min SDK\"."
#: platform/android/export/export_plugin.cpp
msgid ""
@@ -18280,7 +18996,7 @@ msgstr "Nama berkas tidak valid! APK Android memerlukan ekstensi *.apk ."
#: platform/android/export/export_plugin.cpp
msgid "Unsupported export format!\n"
-msgstr ""
+msgstr "Format ekspor tidak didukung!\n"
#: platform/android/export/export_plugin.cpp
msgid ""
@@ -18391,6 +19107,178 @@ msgid "The character '%s' is not allowed in Identifier."
msgstr "Karakter '%s' tidak diizinkan dalam Identifier."
#: platform/iphone/export/export.cpp
+msgid "App Store Team ID"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Provisioning Profile UUID Debug"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Code Sign Identity Debug"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Export Method Debug"
+msgstr "Ekspor dengan Awakutu"
+
+#: platform/iphone/export/export.cpp
+msgid "Provisioning Profile UUID Release"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Code Sign Identity Release"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Export Method Release"
+msgstr "Mode Ekspor:"
+
+#: platform/iphone/export/export.cpp
+msgid "Targeted Device Family"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Info"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Identifier"
+msgstr "Identifier tidak valid:"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Signature"
+msgstr "Sinyal"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Short Version"
+msgstr "Versi"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Copyright"
+msgstr "Kanan Atas"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Capabilities"
+msgstr "Kompatibilitas"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Access Wi-Fi"
+msgstr "Sukses!"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Push Notifications"
+msgstr "Perputaran Acak:"
+
+#: platform/iphone/export/export.cpp scene/3d/baked_lightmap.cpp
+#, fuzzy
+msgid "User Data"
+msgstr "Antarmuka Pengguna"
+
+#: platform/iphone/export/export.cpp
+msgid "Accessible From Files App"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Accessible From Itunes Sharing"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Privacy"
+msgstr "Kunci Pribadi"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Camera Usage Description"
+msgstr "Deskripsi"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Microphone Usage Description"
+msgstr "Deskripsi Properti"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Photolibrary Usage Description"
+msgstr "Deskripsi Properti"
+
+#: platform/iphone/export/export.cpp
+msgid "iPhone 120 X 120"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPhone 180 X 180"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 76 X 76"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 152 X 152"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 167 X 167"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "App Store 1024 X 1024"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Spotlight 40 X 40"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Spotlight 80 X 80"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Storyboard"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Use Launch Screen Storyboard"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Image Scale Mode"
+msgstr "Mode Skala"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Custom Image @2x"
+msgstr "Potong Node"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Custom Image @3x"
+msgstr "Potong Node"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Use Custom BG Color"
+msgstr "Potong Node"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Custom BG Color"
+msgstr "Potong Node"
+
+#: platform/iphone/export/export.cpp
msgid "App Store Team ID not specified - cannot configure the project."
msgstr ""
"App Store Team ID tidak ditetapkan - tidak dapat mengonfigurasi proyek."
@@ -18430,6 +19318,80 @@ msgstr "Tidak dapat menulis berkas:"
#: platform/javascript/export/export.cpp
#, fuzzy
+msgid "Variant"
+msgstr "Enumerasi:"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Export Type"
+msgstr "Ekspor"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "VRAM Texture Compression"
+msgstr "Tetapkan ekspresi"
+
+#: platform/javascript/export/export.cpp
+msgid "For Desktop"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "For Mobile"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Html"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Export Icon"
+msgstr "Bentangkan Semua"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Custom Html Shell"
+msgstr "Potong Node"
+
+#: platform/javascript/export/export.cpp
+msgid "Head Include"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Canvas Resize Policy"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Focus Canvas On Start"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Experimental Virtual Keyboard"
+msgstr "Filter sinyal"
+
+#: platform/javascript/export/export.cpp
+msgid "Progressive Web App"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Offline Page"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 144 X 144"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 180 X 180"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 512 X 512"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
msgid "Could not read HTML shell:"
msgstr "Tidak dapat membaca shell HTML kustom:"
@@ -18443,7 +19405,7 @@ msgstr "Kesalahan memulai server HTTP:"
#: platform/javascript/export/export.cpp
msgid "Web"
-msgstr ""
+msgstr "Situs"
#: platform/javascript/export/export.cpp
msgid "HTTP Host"
@@ -18460,11 +19422,12 @@ msgstr "Gunakan Snap"
#: platform/javascript/export/export.cpp
msgid "SSL Key"
-msgstr ""
+msgstr "Kunci SSL"
#: platform/osx/export/codesign.cpp
+#, fuzzy
msgid "Can't get filesystem access."
-msgstr ""
+msgstr "Tidak dapat mengakses sistem file."
#: platform/osx/export/codesign.cpp
msgid "Failed to get Info.plist hash."
@@ -18535,11 +19498,208 @@ msgid "Failed to create fat binary."
msgstr ""
#: platform/osx/export/codesign.cpp
+#, fuzzy
msgid "Unknown bundle type."
-msgstr ""
+msgstr "Jenis bundel tidak diketahui."
#: platform/osx/export/codesign.cpp
msgid "Unknown object type."
+msgstr "Jenis objek tidak diketahui."
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "App Category"
+msgstr "Kategori:"
+
+#: platform/osx/export/export.cpp
+msgid "High Res"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Location Usage Description"
+msgstr "Deskripsi"
+
+#: platform/osx/export/export.cpp
+msgid "Address Book Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Calendar Usage Description"
+msgstr "Deskripsi"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Photos Library Usage Description"
+msgstr "Deskripsi Properti"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Desktop Folder Usage Description"
+msgstr "Deskripsi Method"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Documents Folder Usage Description"
+msgstr "Deskripsi Method"
+
+#: platform/osx/export/export.cpp
+msgid "Downloads Folder Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Network Volumes Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Removable Volumes Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#, fuzzy
+msgid "Codesign"
+msgstr "Node"
+
+#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Identity"
+msgstr "Indentasi Kiri"
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#, fuzzy
+msgid "Timestamp"
+msgstr "Waktu"
+
+#: platform/osx/export/export.cpp
+msgid "Hardened Runtime"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Replace Existing Signature"
+msgstr "Ganti Semua"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Entitlements"
+msgstr "Gizmo"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Custom File"
+msgstr "Potong Node"
+
+#: platform/osx/export/export.cpp
+msgid "Allow JIT Code Execution"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Allow Unsigned Executable Memory"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Allow Dyld Environment Variables"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Disable Library Validation"
+msgstr "Tombol Dinonaktifkan"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Audio Input"
+msgstr "Tambah Masukan"
+
+#: platform/osx/export/export.cpp
+msgid "Address Book"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Calendars"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Photos Library"
+msgstr "Ekspor Pustaka"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Apple Events"
+msgstr "Tambah Event"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Debugging"
+msgstr "Awakutu"
+
+#: platform/osx/export/export.cpp
+msgid "App Sandbox"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Network Server"
+msgstr "Network Profiler(Debug jaringan)"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Network Client"
+msgstr "Network Profiler(Debug jaringan)"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Device Usb"
+msgstr "Perangkat"
+
+#: platform/osx/export/export.cpp
+msgid "Device Bluetooth"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Files Downloads"
+msgstr "Unduh"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Files Pictures"
+msgstr "Fitur-fitur"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Files Music"
+msgstr "Berkas"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Files Movies"
+msgstr "Filter tile"
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#, fuzzy
+msgid "Custom Options"
+msgstr "Pilihan Bus"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Notarization"
+msgstr "Lokalisasi"
+
+#: platform/osx/export/export.cpp
+msgid "Apple ID Name"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Apple ID Password"
+msgstr "Kata Sandi"
+
+#: platform/osx/export/export.cpp
+msgid "Apple Team ID"
msgstr ""
#: platform/osx/export/export.cpp
@@ -18547,18 +19707,24 @@ msgid ""
"Note: The notarization process generally takes less than an hour. When the "
"process is completed, you'll receive an email."
msgstr ""
+"Catatan: Proses notaris umumnya memakan waktu kurang dari satu jam. Ketika "
+"proses selesai, Anda akan menerima email."
#: platform/osx/export/export.cpp
msgid ""
"You can check progress manually by opening a Terminal and running the "
"following command:"
msgstr ""
+"Anda dapat memeriksa kemajuan secara manual dengan membuka Terminal dan "
+"menjalankan perintah berikut:"
#: platform/osx/export/export.cpp
msgid ""
"Run the following command to staple the notarization ticket to the exported "
"application (optional):"
msgstr ""
+"Jalankan perintah berikut untuk menstaples tiket notaris ke aplikasi yang "
+"diekspor (opsional):"
#: platform/osx/export/export.cpp
#, fuzzy
@@ -18591,7 +19757,7 @@ msgstr ""
#: platform/osx/export/export.cpp
msgid "Making PKG"
-msgstr ""
+msgstr "Membuat PKG"
#: platform/osx/export/export.cpp
msgid ""
@@ -18605,7 +19771,7 @@ msgstr ""
#: platform/osx/export/export.cpp
msgid "Making DMG"
-msgstr ""
+msgstr "Membuat DMG"
#: platform/osx/export/export.cpp
msgid "Code signing DMG"
@@ -18613,17 +19779,19 @@ msgstr ""
#: platform/osx/export/export.cpp
msgid "Making ZIP"
-msgstr ""
+msgstr "Membuat ZIP"
#: platform/osx/export/export.cpp
msgid ""
"Notarization requires the app to be archived first, select the DMG or ZIP "
"export format instead."
msgstr ""
+"Notaris mengharuskan aplikasi diarsipkan terlebih dahulu, pilih format "
+"ekspor DMG atau ZIP."
#: platform/osx/export/export.cpp
msgid "Sending archive for notarization"
-msgstr ""
+msgstr "Mengirim arsip untuk notaris"
#: platform/osx/export/export.cpp
#, fuzzy
@@ -18738,6 +19906,136 @@ msgid "Force Builtin Codesign"
msgstr ""
#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Architecture"
+msgstr "Tambah entri arsitektur"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Display Name"
+msgstr "Skala Tampilan"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Short Name"
+msgstr "Nama Skrip:"
+
+#: platform/uwp/export/export.cpp
+msgid "Publisher"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Publisher Display Name"
+msgstr "Nama penerbit paket tidak valid."
+
+#: platform/uwp/export/export.cpp
+msgid "Product Guid"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Publisher Guid"
+msgstr "Bersihkan Panduan"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Signing"
+msgstr "Sinyal"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Certificate"
+msgstr "Sertifikat"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Algorithm"
+msgstr "Pengawakutu"
+
+#: platform/uwp/export/export.cpp
+msgid "Major"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Minor"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Build"
+msgstr "Mode Penggaris"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Revision"
+msgstr "Tetapkan ekspresi"
+
+#: platform/uwp/export/export.cpp
+msgid "Landscape"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Portrait"
+msgstr "Balikkan Portal"
+
+#: platform/uwp/export/export.cpp
+msgid "Landscape Flipped"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Portrait Flipped"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Store Logo"
+msgstr "Mode Skala"
+
+#: platform/uwp/export/export.cpp
+msgid "Square 44 X 44 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 71 X 71 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 150 X 150 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 310 X 310 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Wide 310 X 150 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Splash Screen"
+msgstr "Gambarkan Panggilan:"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Tiles"
+msgstr "Berkas"
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Square 150 X 150"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Wide 310 X 150"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Square 310 X 310"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
msgid "Invalid package short name."
msgstr "Nama pendek paket tidak valid."
@@ -18803,29 +20101,65 @@ msgid "Debug Certificate"
msgstr ""
#: platform/uwp/export/export.cpp
-msgid "Debug Password"
+#, fuzzy
+msgid "Debug Algorithm"
+msgstr "Pengawakutu"
+
+#: platform/windows/export/export.cpp
+msgid "Identity Type"
msgstr ""
-#: platform/uwp/export/export.cpp
+#: platform/windows/export/export.cpp
+msgid "Timestamp Server URL"
+msgstr ""
+
+#: platform/windows/export/export.cpp
#, fuzzy
-msgid "Debug Algorithm"
+msgid "Digest Algorithm"
msgstr "Pengawakutu"
#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "File Version"
+msgstr "Versi"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Product Version"
+msgstr "GUID produk tidak valid."
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Company Name"
+msgstr "Nama Node:"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Product Name"
+msgstr "Nama Projek:"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "File Description"
+msgstr "Deskripsi"
+
+#: platform/windows/export/export.cpp
+msgid "Trademarks"
+msgstr ""
+
+#: platform/windows/export/export.cpp
msgid ""
"The rcedit tool must be configured in the Editor Settings (Export > Windows "
"> Rcedit) to change the icon or app information data."
msgstr ""
#: platform/windows/export/export.cpp
-#, fuzzy
msgid "Invalid icon path:"
-msgstr "Path tidak valid."
+msgstr "Jalur Ikon tidak valid:"
#: platform/windows/export/export.cpp
-#, fuzzy
msgid "Invalid file version:"
-msgstr "Ekstensi tidak valid."
+msgstr "Versi file tidak valid:"
#: platform/windows/export/export.cpp
#, fuzzy
@@ -18870,9 +20204,8 @@ msgstr "Bingkai %"
#: scene/2d/animated_sprite.cpp scene/2d/cpu_particles_2d.cpp
#: scene/2d/particles_2d.cpp scene/3d/cpu_particles.cpp scene/3d/particles.cpp
-#, fuzzy
msgid "Speed Scale"
-msgstr "Skala"
+msgstr "Skala Kecepatan"
#: scene/2d/animated_sprite.cpp scene/2d/audio_stream_player_2d.cpp
#: scene/3d/audio_stream_player_3d.cpp scene/3d/sprite_3d.cpp
@@ -18886,12 +20219,14 @@ msgstr "Mainkan"
msgid "Centered"
msgstr "Tengah"
-#: scene/2d/animated_sprite.cpp scene/2d/camera_2d.cpp scene/2d/light_2d.cpp
+#: scene/2d/animated_sprite.cpp scene/2d/camera_2d.cpp
+#: scene/2d/cpu_particles_2d.cpp scene/2d/light_2d.cpp
#: scene/2d/parallax_background.cpp scene/2d/parallax_layer.cpp
#: scene/2d/path_2d.cpp scene/2d/polygon_2d.cpp scene/2d/sprite.cpp
-#: scene/3d/path.cpp scene/3d/physics_body.cpp scene/3d/sprite_3d.cpp
-#: scene/gui/graph_node.cpp scene/gui/rich_text_effect.cpp
-#: scene/main/canvas_layer.cpp scene/resources/material.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/path.cpp scene/3d/physics_body.cpp
+#: scene/3d/sprite_3d.cpp scene/gui/graph_node.cpp
+#: scene/gui/rich_text_effect.cpp scene/main/canvas_layer.cpp
+#: scene/resources/material.cpp scene/resources/particles_material.cpp
#: scene/resources/style_box.cpp
#, fuzzy
msgid "Offset"
@@ -18966,11 +20301,6 @@ msgstr "Tambah Suara Bus"
msgid "Override"
msgstr "Menimpa"
-#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
-#: scene/audio/audio_stream_player.cpp scene/gui/video_player.cpp
-msgid "Stream"
-msgstr ""
-
#: scene/2d/audio_stream_player_2d.cpp scene/audio/audio_stream_player.cpp
#: scene/gui/video_player.cpp servers/audio/effects/audio_effect_amplify.cpp
#, fuzzy
@@ -18997,13 +20327,13 @@ msgid "Stream Paused"
msgstr ""
#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
-#: scene/3d/reflection_probe.cpp scene/3d/visual_instance.cpp
-#: scene/resources/material.cpp
+#: scene/3d/light.cpp scene/3d/reflection_probe.cpp
+#: scene/3d/visual_instance.cpp scene/resources/material.cpp
#, fuzzy
msgid "Max Distance"
msgstr "Pilih Jarak:"
-#: scene/2d/audio_stream_player_2d.cpp
+#: scene/2d/audio_stream_player_2d.cpp scene/3d/light.cpp
#, fuzzy
msgid "Attenuation"
msgstr "Animasi"
@@ -19059,6 +20389,24 @@ msgstr "Mode Pindah"
msgid "Limit"
msgstr ""
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/style_box.cpp
+#, fuzzy
+msgid "Left"
+msgstr "Kiri Atas"
+
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/style_box.cpp
+#, fuzzy
+msgid "Right"
+msgstr "Cahaya"
+
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/dynamic_font.cpp scene/resources/style_box.cpp
+#, fuzzy
+msgid "Bottom"
+msgstr "Kiri Bawah"
+
#: scene/2d/camera_2d.cpp
#, fuzzy
msgid "Smoothed"
@@ -19305,13 +20653,6 @@ msgstr ""
msgid "Emitting"
msgstr "Pengaturan:"
-#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp scene/3d/area.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
-#: scene/resources/environment.cpp
-#, fuzzy
-msgid "Amount"
-msgstr "Jumlah:"
-
#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp
#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
msgid "Lifetime"
@@ -19376,18 +20717,13 @@ msgstr ""
#: scene/2d/mesh_instance_2d.cpp scene/2d/multimesh_instance_2d.cpp
#: scene/2d/particles_2d.cpp scene/2d/polygon_2d.cpp scene/2d/sprite.cpp
#: scene/3d/sprite_3d.cpp scene/gui/nine_patch_rect.cpp
-#: scene/gui/texture_rect.cpp scene/resources/sky.cpp
-#: scene/resources/style_box.cpp scene/resources/visual_shader_nodes.cpp
+#: scene/gui/texture_rect.cpp scene/resources/material.cpp
+#: scene/resources/sky.cpp scene/resources/style_box.cpp
+#: scene/resources/visual_shader_nodes.cpp
#, fuzzy
msgid "Texture"
msgstr "Teks"
-#: scene/2d/cpu_particles_2d.cpp scene/2d/mesh_instance_2d.cpp
-#: scene/2d/multimesh_instance_2d.cpp scene/2d/particles_2d.cpp
-#: scene/2d/sprite.cpp scene/resources/style_box.cpp
-msgid "Normal Map"
-msgstr ""
-
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
#, fuzzy
@@ -19411,10 +20747,10 @@ msgid "Normals"
msgstr "Format"
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/3d/sprite_3d.cpp scene/resources/material.cpp
-#: scene/resources/particles_material.cpp scene/resources/texture.cpp
-msgid "Flags"
-msgstr ""
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Align Y"
+msgstr "Tetapkan"
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
@@ -19435,6 +20771,12 @@ msgid "Initial Velocity"
msgstr "Inisialisasi"
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Velocity Random"
+msgstr "Kecepatan"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp servers/physics_2d_server.cpp
#: servers/physics_server.cpp
msgid "Angular Velocity"
@@ -19442,6 +20784,12 @@ msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Velocity Curve"
+msgstr "Kecepatan"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
msgid "Orbit Velocity"
msgstr ""
@@ -19453,6 +20801,23 @@ msgstr "Linier"
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Accel"
+msgstr "Sukses!"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Accel Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Accel Curve"
+msgstr "Pisahkan Kurva"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
msgid "Radial Accel"
msgstr ""
@@ -19462,19 +20827,55 @@ msgid "Tangential Accel"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/2d/joints_2d.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/vehicle_body.cpp
-#: scene/resources/particles_material.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/physics_joint.cpp
+#: scene/3d/vehicle_body.cpp scene/resources/particles_material.cpp
#: servers/audio/effects/audio_effect_reverb.cpp
msgid "Damping"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+msgid "Damping Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Damping Curve"
+msgstr "Pisahkan Kurva"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp scene/3d/light.cpp
+#: scene/resources/particles_material.cpp
msgid "Angle"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+msgid "Angle Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Angle Curve"
+msgstr "Tutup Kurva"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#, fuzzy
+msgid "Scale Amount"
+msgstr "Jumlah:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+msgid "Scale Amount Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#, fuzzy
+msgid "Scale Amount Curve"
+msgstr "Skala dari Kursor"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
#, fuzzy
msgid "Color Ramp"
msgstr "Warna"
@@ -19490,6 +20891,48 @@ msgstr ""
msgid "Hue Variation"
msgstr "Enumerasi:"
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Variation"
+msgstr "Enumerasi:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Variation Random"
+msgstr "Enumerasi:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Variation Curve"
+msgstr "Enumerasi:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Speed Random"
+msgstr "Skala Kecepatan"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Speed Curve"
+msgstr "Pisahkan Kurva"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Offset Random"
+msgstr "Pengimbangan:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Offset Curve"
+msgstr "Tutup Kurva"
+
#: scene/2d/joints_2d.cpp
msgid "Node A and Node B must be PhysicsBody2Ds"
msgstr "Node A dan Node B harus berupa PhysicsBody2D"
@@ -19521,6 +20964,7 @@ msgid "Node B"
msgstr "Node"
#: scene/2d/joints_2d.cpp scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp
+#: scene/3d/light.cpp scene/3d/physics_joint.cpp
#: scene/resources/environment.cpp
msgid "Bias"
msgstr ""
@@ -19530,7 +20974,7 @@ msgstr ""
msgid "Disable Collision"
msgstr "Tombol Dinonaktifkan"
-#: scene/2d/joints_2d.cpp
+#: scene/2d/joints_2d.cpp scene/3d/physics_joint.cpp
msgid "Softness"
msgstr ""
@@ -19548,7 +20992,7 @@ msgstr "Inisialisasi"
msgid "Rest Length"
msgstr ""
-#: scene/2d/joints_2d.cpp scene/3d/vehicle_body.cpp
+#: scene/2d/joints_2d.cpp scene/3d/physics_joint.cpp scene/3d/vehicle_body.cpp
msgid "Stiffness"
msgstr ""
@@ -19570,7 +21014,7 @@ msgid "Texture Scale"
msgstr "TeksturRegion"
#: scene/2d/light_2d.cpp scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp
-#: scene/resources/environment.cpp scene/resources/sky.cpp
+#: scene/3d/light.cpp scene/resources/environment.cpp scene/resources/sky.cpp
msgid "Energy"
msgstr ""
@@ -19611,12 +21055,6 @@ msgstr "Tampilan Belakang"
msgid "Gradient Length"
msgstr "Gradasi Disunting"
-#: scene/2d/light_2d.cpp scene/gui/control.cpp
-#: scene/resources/navigation_mesh.cpp
-#, fuzzy
-msgid "Filter"
-msgstr "Filter:"
-
#: scene/2d/light_2d.cpp
#, fuzzy
msgid "Filter Smooth"
@@ -20057,11 +21495,6 @@ msgid "Applied Forces"
msgstr ""
#: scene/2d/physics_body_2d.cpp
-#, fuzzy
-msgid "Force"
-msgstr "Sumber Mesh:"
-
-#: scene/2d/physics_body_2d.cpp
msgid "Torque"
msgstr ""
@@ -20077,7 +21510,7 @@ msgstr "Frame Fisika %"
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
#, fuzzy
-msgid "Moving platform"
+msgid "Moving Platform"
msgstr "Memindahkan keluaran"
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
@@ -20086,7 +21519,7 @@ msgstr ""
#: scene/2d/physics_body_2d.cpp scene/2d/touch_screen_button.cpp
#: scene/3d/physics_body.cpp scene/gui/texture_button.cpp
-#: scene/resources/line_shape_2d.cpp
+#: scene/resources/line_shape_2d.cpp scene/resources/material.cpp
#, fuzzy
msgid "Normal"
msgstr "Format"
@@ -20333,6 +21766,34 @@ msgstr ""
"VisibilityEnable2D bekerja dengan sangat baik ketika digunakan dengan "
"menyunting skena dasar secara langsung sebagai parent."
+#: scene/2d/visibility_notifier_2d.cpp scene/3d/visibility_notifier.cpp
+#, fuzzy
+msgid "Pause Animations"
+msgstr "Rekatkan Animasi"
+
+#: scene/2d/visibility_notifier_2d.cpp scene/3d/visibility_notifier.cpp
+msgid "Freeze Bodies"
+msgstr ""
+
+#: scene/2d/visibility_notifier_2d.cpp
+#, fuzzy
+msgid "Pause Particles"
+msgstr "Partikel"
+
+#: scene/2d/visibility_notifier_2d.cpp
+#, fuzzy
+msgid "Pause Animated Sprites"
+msgstr "Rekatkan Animasi"
+
+#: scene/2d/visibility_notifier_2d.cpp
+#, fuzzy
+msgid "Process Parent"
+msgstr "Aktifkan Prioritas"
+
+#: scene/2d/visibility_notifier_2d.cpp
+msgid "Physics Process Parent"
+msgstr ""
+
#: scene/3d/area.cpp
msgid "Reverb Bus"
msgstr ""
@@ -20433,6 +21894,7 @@ msgid "Attenuation Filter"
msgstr ""
#: scene/3d/audio_stream_player_3d.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
#: servers/audio/effects/audio_effect_filter.cpp
msgid "Cutoff Hz"
msgstr ""
@@ -20477,11 +21939,6 @@ msgid "Octree"
msgstr "Subpohon"
#: scene/3d/baked_lightmap.cpp
-#, fuzzy
-msgid "User Data"
-msgstr "Antarmuka Pengguna"
-
-#: scene/3d/baked_lightmap.cpp
msgid "Finding meshes and lights"
msgstr "Mencari mesh dan cahaya"
@@ -20630,13 +22087,12 @@ msgid "Frustum Offset"
msgstr "Offset Kotak-kotak:"
#: scene/3d/camera.cpp
-#, fuzzy
msgid "Near"
-msgstr "Terdekat"
+msgstr "Dekat"
#: scene/3d/camera.cpp
msgid "Far"
-msgstr ""
+msgstr "Jauh"
#: scene/3d/camera.cpp scene/3d/collision_polygon.cpp scene/3d/spring_arm.cpp
#: scene/gui/control.cpp scene/resources/shape.cpp
@@ -20757,6 +22213,16 @@ msgid "Ring Axis"
msgstr "Peringatan"
#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Rotate Y"
+msgstr "Putar"
+
+#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Disable Z"
+msgstr "Item yang Dinonaktifkan"
+
+#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
msgid "Flatness"
msgstr ""
@@ -20797,16 +22263,11 @@ msgstr "Pustaka Dinamis"
msgid "Dynamic Range"
msgstr "Pustaka Dinamis"
-#: scene/3d/gi_probe.cpp
+#: scene/3d/gi_probe.cpp scene/3d/light.cpp
msgid "Normal Bias"
msgstr ""
#: scene/3d/gi_probe.cpp
-#, fuzzy
-msgid "Compress"
-msgstr "Komponen"
-
-#: scene/3d/gi_probe.cpp
msgid "Plotting Meshes"
msgstr "Memetakan Mesh"
@@ -20835,8 +22296,17 @@ msgstr ""
#: scene/3d/light.cpp
#, fuzzy
+msgid "Indirect Energy"
+msgstr "Warna Emisi"
+
+#: scene/3d/light.cpp
msgid "Negative"
-msgstr "GDNative"
+msgstr "Negatif"
+
+#: scene/3d/light.cpp
+#, fuzzy
+msgid "Specular"
+msgstr "Mode Penggaris"
#: scene/3d/light.cpp
#, fuzzy
@@ -20845,6 +22315,11 @@ msgstr "Mode Bitmask"
#: scene/3d/light.cpp
#, fuzzy
+msgid "Contact"
+msgstr "Kontras"
+
+#: scene/3d/light.cpp
+#, fuzzy
msgid "Reverse Cull Face"
msgstr "Setel Ulang Bus Volume"
@@ -20855,11 +22330,31 @@ msgstr "Arah"
#: scene/3d/light.cpp
#, fuzzy
+msgid "Split 1"
+msgstr "Pisahkan Tapak"
+
+#: scene/3d/light.cpp
+#, fuzzy
+msgid "Split 2"
+msgstr "Pisahkan Tapak"
+
+#: scene/3d/light.cpp
+#, fuzzy
+msgid "Split 3"
+msgstr "Pisahkan Tapak"
+
+#: scene/3d/light.cpp
+#, fuzzy
msgid "Blend Splits"
msgstr "Waktu Berbaur:"
#: scene/3d/light.cpp
#, fuzzy
+msgid "Bias Split Scale"
+msgstr "Gunakan Pengancingan Skala"
+
+#: scene/3d/light.cpp
+#, fuzzy
msgid "Depth Range"
msgstr "Kedalaman"
@@ -20886,6 +22381,11 @@ msgstr ""
msgid "Spot"
msgstr ""
+#: scene/3d/light.cpp
+#, fuzzy
+msgid "Angle Attenuation"
+msgstr "Animasi"
+
#: scene/3d/mesh_instance.cpp
msgid "Software Skinning"
msgstr ""
@@ -21029,6 +22529,63 @@ msgstr "Sumbu"
#: scene/3d/physics_body.cpp
#, fuzzy
+msgid "Linear X"
+msgstr "Linier"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Linear Y"
+msgstr "Linier"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Linear Z"
+msgstr "Linier"
+
+#: scene/3d/physics_body.cpp
+msgid "Angular X"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Angular Y"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Angular Z"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Motion X"
+msgstr "Aksi"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Motion Y"
+msgstr "Aksi"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Motion Z"
+msgstr "Aksi"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Move Lock X"
+msgstr "Pindahkan Node"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Move Lock Y"
+msgstr "Pindahkan Node"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Move Lock Z"
+msgstr "Pindahkan Node"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
msgid "Body Offset"
msgstr "Pengimbangan:"
@@ -21062,6 +22619,15 @@ msgid "Exclude Nodes"
msgstr "Hapus Node"
#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Params"
+msgstr "Parameter Berubah:"
+
+#: scene/3d/physics_joint.cpp
+msgid "Impulse Clamp"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit"
msgstr ""
@@ -21075,6 +22641,55 @@ msgstr "Huruf Besar"
msgid "Lower"
msgstr "Huruf Kecil"
+#: scene/3d/physics_joint.cpp scene/3d/vehicle_body.cpp
+#, fuzzy
+msgid "Relaxation"
+msgstr "Enumerasi:"
+
+#: scene/3d/physics_joint.cpp
+msgid "Motor"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Target Velocity"
+msgstr "Inisialisasi"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Max Impulse"
+msgstr "Kecepatan:"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit"
+msgstr "Linier"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Upper Distance"
+msgstr "Pilih Jarak:"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Lower Distance"
+msgstr "Pilih Jarak:"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Restitution"
+msgstr "Deskripsi"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motion"
+msgstr "Kekakuan linier"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Ortho"
+msgstr "Ortogonal Belakang"
+
#: scene/3d/physics_joint.cpp
#, fuzzy
msgid "Upper Angle"
@@ -21087,6 +22702,16 @@ msgstr "Huruf Kecil"
#: scene/3d/physics_joint.cpp
#, fuzzy
+msgid "Angular Motion"
+msgstr "Animasi"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Angular Ortho"
+msgstr "Error Angular Maksimum:"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
msgid "Swing Span"
msgstr "Menyimpan Skena"
@@ -21095,17 +22720,99 @@ msgid "Twist Span"
msgstr ""
#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit X"
+msgstr "Linier"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motor X"
+msgstr "Inisialisasi"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Force Limit"
+msgstr "Gambarkan Panggilan:"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Spring X"
+msgstr "Jarak Baris"
+
+#: scene/3d/physics_joint.cpp
+msgid "Equilibrium Point"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit X"
msgstr ""
#: scene/3d/physics_joint.cpp
+msgid "Erp"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Motor X"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Spring X"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit Y"
+msgstr "Linier"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motor Y"
+msgstr "Inisialisasi"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Spring Y"
+msgstr "Jarak Baris"
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit Y"
msgstr ""
#: scene/3d/physics_joint.cpp
+msgid "Angular Motor Y"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Spring Y"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit Z"
+msgstr "Linier"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motor Z"
+msgstr "Inisialisasi"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Spring Z"
+msgstr "Jarak Baris"
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit Z"
msgstr ""
+#: scene/3d/physics_joint.cpp
+msgid "Angular Motor Z"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Spring Z"
+msgstr ""
+
#: scene/3d/portal.cpp
msgid "The RoomManager should not be a child or grandchild of a Portal."
msgstr ""
@@ -21125,7 +22832,7 @@ msgstr " [portal aktif]"
#: scene/3d/portal.cpp scene/resources/occluder_shape_polygon.cpp
msgid "Two Way"
-msgstr ""
+msgstr "Dua Arah"
#: scene/3d/portal.cpp
#, fuzzy
@@ -21138,9 +22845,8 @@ msgid "Use Default Margin"
msgstr "Bawaan"
#: scene/3d/proximity_group.cpp
-#, fuzzy
msgid "Group Name"
-msgstr "Terkelompok"
+msgstr "Nama Kelompok"
#: scene/3d/proximity_group.cpp
msgid "Dispatch Mode"
@@ -21225,13 +22931,13 @@ msgstr ""
msgid "Use Default Simplify"
msgstr ""
-#: scene/3d/room.cpp
+#: scene/3d/room.cpp scene/3d/room_manager.cpp
msgid "Room Simplify"
msgstr ""
#: scene/3d/room.cpp
msgid "Bound"
-msgstr ""
+msgstr "Batasan"
#: scene/3d/room_group.cpp
#, fuzzy
@@ -21258,11 +22964,18 @@ msgstr ""
#: scene/3d/room_manager.cpp
msgid "There should only be one RoomManager in the SceneTree."
-msgstr ""
+msgstr "Hanya dapat memiliki satu RoomManager pada setiap SceneTree."
#: scene/3d/room_manager.cpp
msgid "Main"
-msgstr ""
+msgstr "Utama"
+
+#: scene/3d/room_manager.cpp scene/animation/animation_player.cpp
+#: scene/animation/animation_tree.cpp scene/animation/animation_tree_player.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+#, fuzzy
+msgid "Active"
+msgstr "Aksi"
#: scene/3d/room_manager.cpp
msgid "Roomlist"
@@ -21288,6 +23001,54 @@ msgid "Gameplay"
msgstr ""
#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Gameplay Monitor"
+msgstr "Pemantau"
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Use Secondary PVS"
+msgstr "Gunakan Pengancingan Skala"
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Merge Meshes"
+msgstr "Jala"
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Show Margins"
+msgstr "Tampilkan Pangkal"
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Debug Sprawl"
+msgstr "Awakutu"
+
+#: scene/3d/room_manager.cpp
+msgid "Overlap Warning Threshold"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Preview Camera"
+msgstr "Pratinjau"
+
+#: scene/3d/room_manager.cpp
+msgid "Portal Depth Limit"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Default Portal Margin"
+msgstr "Atur Batas"
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Roaming Expansion Margin"
+msgstr "Bentangkan Semua"
+
+#: scene/3d/room_manager.cpp
msgid ""
"RoomList path is invalid.\n"
"Please check the RoomList branch has been assigned in the RoomManager."
@@ -21299,7 +23060,7 @@ msgstr ""
#: scene/3d/room_manager.cpp
msgid "Misnamed nodes detected, check output log for details. Aborting."
-msgstr ""
+msgstr "Nama node salah terdeteksi, cek log output untuk detail. Membatalkan."
#: scene/3d/room_manager.cpp
msgid "Portal link room not found, check output log for details."
@@ -21322,6 +23083,8 @@ msgid ""
"Error calculating room bounds.\n"
"Ensure all rooms contain geometry or manual bounds."
msgstr ""
+"Gagal dalam menghitung batasan ruang.\n"
+"Pastikan semua ruang memiliki geometri atau batasan manual."
#: scene/3d/soft_body.cpp
#, fuzzy
@@ -21334,18 +23097,16 @@ msgid "Parent Collision Ignore"
msgstr "Buat Poligon Collision"
#: scene/3d/soft_body.cpp
-#, fuzzy
msgid "Simulation Precision"
-msgstr "Pohon animasi tidak valid."
+msgstr "Presisi Simulasi"
#: scene/3d/soft_body.cpp
-#, fuzzy
msgid "Total Mass"
-msgstr "Total:"
+msgstr "Massa total"
#: scene/3d/soft_body.cpp
msgid "Linear Stiffness"
-msgstr ""
+msgstr "Kekakuan linier"
#: scene/3d/soft_body.cpp
msgid "Areaangular Stiffness"
@@ -21357,15 +23118,15 @@ msgstr ""
#: scene/3d/soft_body.cpp
msgid "Pressure Coefficient"
-msgstr ""
+msgstr "Koefisien Tekanan"
#: scene/3d/soft_body.cpp
msgid "Damping Coefficient"
-msgstr ""
+msgstr "Koefisien Redam"
#: scene/3d/soft_body.cpp
msgid "Drag Coefficient"
-msgstr ""
+msgstr "Koefisien Hambat"
#: scene/3d/soft_body.cpp
msgid "Pose Matching Coefficient"
@@ -21386,7 +23147,7 @@ msgstr ""
#: scene/3d/spatial.cpp
msgid "Matrix"
-msgstr ""
+msgstr "Matriks"
#: scene/3d/spatial.cpp
#, fuzzy
@@ -21415,6 +23176,21 @@ msgstr "Pengancingan Piksel"
msgid "Billboard"
msgstr ""
+#: scene/3d/sprite_3d.cpp scene/resources/material.cpp
+#, fuzzy
+msgid "Transparent"
+msgstr "Mengubah urutan"
+
+#: scene/3d/sprite_3d.cpp
+#, fuzzy
+msgid "Shaded"
+msgstr "Shader"
+
+#: scene/3d/sprite_3d.cpp
+#, fuzzy
+msgid "Double Sided"
+msgstr "Klik ganda"
+
#: scene/3d/sprite_3d.cpp
msgid "Alpha Cut"
msgstr ""
@@ -21447,7 +23223,7 @@ msgstr "Online Dokumentasi"
#: scene/3d/vehicle_body.cpp
msgid "Brake"
-msgstr ""
+msgstr "Rem"
#: scene/3d/vehicle_body.cpp
msgid "Steering"
@@ -21490,11 +23266,6 @@ msgstr "Tetapkan ekspresi"
msgid "Max Force"
msgstr "Galat"
-#: scene/3d/vehicle_body.cpp
-#, fuzzy
-msgid "Relaxation"
-msgstr "Enumerasi:"
-
#: scene/3d/visibility_notifier.cpp
msgid "AABB"
msgstr ""
@@ -21588,7 +23359,7 @@ msgstr "Skena Utama"
#: scene/animation/animation_blend_space_1d.cpp
#: scene/animation/animation_blend_space_2d.cpp
msgid "Max Space"
-msgstr ""
+msgstr "Ruang Maksimum"
#: scene/animation/animation_blend_space_1d.cpp
#, fuzzy
@@ -21607,11 +23378,11 @@ msgstr "Jungkitkan Segitiga Otomatis"
#: scene/animation/animation_blend_space_2d.cpp
msgid "X Label"
-msgstr ""
+msgstr "Label X"
#: scene/animation/animation_blend_space_2d.cpp
msgid "Y Label"
-msgstr ""
+msgstr "Label Y"
#: scene/animation/animation_blend_tree.cpp
msgid "On BlendTree node '%s', animation not found: '%s'"
@@ -21638,7 +23409,7 @@ msgstr "Waktu X-Fade (d):"
#: scene/animation/animation_blend_tree.cpp
#, fuzzy
-msgid "autorestart_"
+msgid "Auto Restart"
msgstr "Mulai Ulang Otomatis:"
#: scene/animation/animation_blend_tree.cpp
@@ -21724,13 +23495,6 @@ msgstr "Opsi Kelas:"
msgid "Default Blend Time"
msgstr "Bawaan"
-#: scene/animation/animation_player.cpp scene/animation/animation_tree.cpp
-#: scene/animation/animation_tree_player.cpp
-#: servers/audio/effects/audio_effect_delay.cpp
-#, fuzzy
-msgid "Active"
-msgstr "Aksi"
-
#: scene/animation/animation_player.cpp
msgid "Method Call Mode"
msgstr ""
@@ -21857,10 +23621,6 @@ msgstr "Pengindukan Ulang Node"
msgid "Max Iterations"
msgstr "Buat Fungsi"
-#: scene/animation/tween.cpp scene/resources/texture.cpp
-msgid "Repeat"
-msgstr ""
-
#: scene/animation/tween.cpp
msgid "Playback Process Mode"
msgstr ""
@@ -21891,20 +23651,6 @@ msgstr "Mode Seleksi"
msgid "Alignment"
msgstr ""
-#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
-#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
-#: scene/resources/style_box.cpp
-#, fuzzy
-msgid "Horizontal"
-msgstr "Horisontal:"
-
-#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
-#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
-#: scene/resources/style_box.cpp
-#, fuzzy
-msgid "Vertical"
-msgstr "Vertikal:"
-
#: scene/gui/base_button.cpp
#, fuzzy
msgid "Shortcut In Tooltip"
@@ -22007,10 +23753,6 @@ msgid "HSV"
msgstr "HSV"
#: scene/gui/color_picker.cpp
-msgid "Raw"
-msgstr "Raw (%)"
-
-#: scene/gui/color_picker.cpp
msgid "Switch between hexadecimal and code values."
msgstr "Beralih antara nilai heksadesimal dan kode."
@@ -22078,6 +23820,31 @@ msgid "Focus"
msgstr "Garis Fokus"
#: scene/gui/control.cpp
+msgid "Neighbour Left"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Neighbour Top"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Neighbour Right"
+msgstr ""
+
+#: scene/gui/control.cpp
+#, fuzzy
+msgid "Neighbour Bottom"
+msgstr "Bawah Tengah"
+
+#: scene/gui/control.cpp
+msgid "Next"
+msgstr "Berikutnya"
+
+#: scene/gui/control.cpp
+msgid "Previous"
+msgstr "Sebelum"
+
+#: scene/gui/control.cpp
msgid "Mouse"
msgstr ""
@@ -22115,7 +23882,7 @@ msgid "Dialog"
msgstr "Dialog XForm"
#: scene/gui/dialogs.cpp
-msgid "Hide On Ok"
+msgid "Hide On OK"
msgstr ""
#: scene/gui/dialogs.cpp scene/gui/label.cpp
@@ -22214,7 +23981,7 @@ msgid "Timers"
msgstr "Waktu"
#: scene/gui/item_list.cpp scene/gui/popup_menu.cpp scene/gui/tree.cpp
-msgid "Incremental Search Max Interval (msec)"
+msgid "Incremental Search Max Interval Msec"
msgstr ""
#: scene/gui/item_list.cpp scene/gui/tree.cpp
@@ -22800,6 +24567,26 @@ msgstr "Kiri Tengah"
msgid "Nine Patch Stretch"
msgstr "Mode Interpolasi"
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Left"
+msgstr "Atur Batas"
+
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Top"
+msgstr "Atur Batas"
+
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Right"
+msgstr "Atur Batas"
+
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Bottom"
+msgstr "Mode Seleksi"
+
#: scene/gui/tree.cpp
msgid "Custom Minimum Height"
msgstr ""
@@ -22837,8 +24624,9 @@ msgid "Paused"
msgstr ""
#: scene/gui/video_player.cpp
-msgid "Buffering (msec)"
-msgstr ""
+#, fuzzy
+msgid "Buffering Msec"
+msgstr "Tampilan Belakang"
#: scene/gui/video_player.cpp
#, fuzzy
@@ -23195,6 +24983,22 @@ msgid "Shadow Atlas"
msgstr "Atlas Baru"
#: scene/main/viewport.cpp
+msgid "Quad 0"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 1"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 2"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 3"
+msgstr ""
+
+#: scene/main/viewport.cpp
#, fuzzy
msgid "Canvas Transform"
msgstr "Bersihkan Transformasi"
@@ -23209,6 +25013,11 @@ msgid "Tooltip Delay (sec)"
msgstr ""
#: scene/register_scene_types.cpp
+#, fuzzy
+msgid "Swap OK Cancel"
+msgstr "Batal"
+
+#: scene/register_scene_types.cpp
msgid "Use hiDPI"
msgstr ""
@@ -23223,21 +25032,6 @@ msgid "Custom Font"
msgstr "Potong Node"
#: scene/resources/audio_stream_sample.cpp
-#, fuzzy
-msgid "Loop Mode"
-msgstr "Mode Pindah"
-
-#: scene/resources/audio_stream_sample.cpp
-#, fuzzy
-msgid "Loop Begin"
-msgstr "Mode Pindah"
-
-#: scene/resources/audio_stream_sample.cpp
-#, fuzzy
-msgid "Loop End"
-msgstr "Mode Pindah"
-
-#: scene/resources/audio_stream_sample.cpp
#: servers/audio/effects/audio_stream_generator.cpp servers/audio_server.cpp
#, fuzzy
msgid "Mix Rate"
@@ -23297,6 +25091,17 @@ msgstr "Opsi Ekstra:"
#: scene/resources/dynamic_font.cpp
#, fuzzy
+msgid "Char"
+msgstr "Karakter sah:"
+
+#: scene/resources/dynamic_font.cpp scene/resources/world.cpp
+#: scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Space"
+msgstr "Skena Utama"
+
+#: scene/resources/dynamic_font.cpp
+#, fuzzy
msgid "Font"
msgstr "Fonta"
@@ -23524,6 +25329,45 @@ msgid "Glow"
msgstr ""
#: scene/resources/environment.cpp
+#, fuzzy
+msgid "Levels"
+msgstr "Pengembang"
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "1"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+#, fuzzy
+msgid "2"
+msgstr "2D"
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+#, fuzzy
+msgid "3"
+msgstr "3D"
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "4"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "5"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "6"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "7"
+msgstr ""
+
+#: scene/resources/environment.cpp
msgid "Bloom"
msgstr ""
@@ -23616,10 +25460,68 @@ msgid "Next Pass"
msgstr "Plane Selanjutnya"
#: scene/resources/material.cpp
+msgid "Use Shadow To Opacity"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Unshaded"
+msgstr "Tampilan Tak Berbayang"
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Vertex Lighting"
+msgstr "PEncahayaan langsung"
+
+#: scene/resources/material.cpp
+msgid "No Depth Test"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Use Point Size"
+msgstr "Tampilan Depan"
+
+#: scene/resources/material.cpp
+msgid "World Triplanar"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Fixed Size"
+msgstr "Tampilan Depan"
+
+#: scene/resources/material.cpp
+msgid "Albedo Tex Force sRGB"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Do Not Receive Shadows"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Disable Ambient Light"
+msgstr "Indentasi Kanan"
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Ensure Correct Normals"
+msgstr "Transformasi Dibatalkan."
+
+#: scene/resources/material.cpp
#, fuzzy
msgid "Vertex Color"
msgstr "Titik"
+#: scene/resources/material.cpp
+msgid "Use As Albedo"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Is sRGB"
+msgstr ""
+
#: scene/resources/material.cpp servers/visual_server.cpp
#, fuzzy
msgid "Parameters"
@@ -23656,6 +25558,11 @@ msgid "Billboard Mode"
msgstr "Mode Penggaris"
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Billboard Keep Scale"
+msgstr "Mode Penggaris"
+
+#: scene/resources/material.cpp
msgid "Grow"
msgstr ""
@@ -23665,6 +25572,10 @@ msgid "Grow Amount"
msgstr "Jumlah:"
#: scene/resources/material.cpp
+msgid "Use Alpha Scissor"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Alpha Scissor Threshold"
msgstr ""
@@ -23696,10 +25607,20 @@ msgid "Metallic Specular"
msgstr ""
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Metallic Texture"
+msgstr "Sumber Emisi: "
+
+#: scene/resources/material.cpp
msgid "Metallic Texture Channel"
msgstr ""
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Roughness Texture"
+msgstr "Hapus Tekstur"
+
+#: scene/resources/material.cpp
msgid "Roughness Texture Channel"
msgstr ""
@@ -23719,6 +25640,16 @@ msgid "Emission Operator"
msgstr "Warna Emisi"
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Emission On UV2"
+msgstr "Masker Emisi"
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Emission Texture"
+msgstr "Sumber Emisi: "
+
+#: scene/resources/material.cpp
msgid "NormalMap"
msgstr ""
@@ -23733,6 +25664,11 @@ msgstr "Kemiringan Acak:"
#: scene/resources/material.cpp
#, fuzzy
+msgid "Rim Texture"
+msgstr "Hapus Tekstur"
+
+#: scene/resources/material.cpp
+#, fuzzy
msgid "Clearcoat"
msgstr "Bersihkan"
@@ -23742,15 +25678,28 @@ msgid "Clearcoat Gloss"
msgstr "Hapus Pose"
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Clearcoat Texture"
+msgstr "Sunting Tema"
+
+#: scene/resources/material.cpp
msgid "Anisotropy"
msgstr ""
#: scene/resources/material.cpp
+msgid "Anisotropy Flowmap"
+msgstr ""
+
+#: scene/resources/material.cpp
#, fuzzy
msgid "Ambient Occlusion"
msgstr "Oklusi"
#: scene/resources/material.cpp
+msgid "On UV2"
+msgstr ""
+
+#: scene/resources/material.cpp
#, fuzzy
msgid "Texture Channel"
msgstr "TeksturRegion"
@@ -23789,6 +25738,11 @@ msgstr "Transisi: "
#: scene/resources/material.cpp
#, fuzzy
+msgid "Transmission Texture"
+msgstr "Transisi: "
+
+#: scene/resources/material.cpp
+#, fuzzy
msgid "Refraction"
msgstr "Enumerasi:"
@@ -23807,6 +25761,10 @@ msgid "UV1"
msgstr "UV"
#: scene/resources/material.cpp
+msgid "Triplanar"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Triplanar Sharpness"
msgstr ""
@@ -24017,6 +25975,16 @@ msgstr "Sunting Tema"
msgid "Point Count"
msgstr "Tambah Port Masukan"
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Scale Random"
+msgstr "Rasio Skala:"
+
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Scale Curve"
+msgstr "Tutup Kurva"
+
#: scene/resources/physics_material.cpp
msgid "Rough"
msgstr ""
@@ -24079,10 +26047,6 @@ msgid "A"
msgstr ""
#: scene/resources/shader.cpp
-msgid "Code"
-msgstr ""
-
-#: scene/resources/shader.cpp
#, fuzzy
msgid "Custom Defines"
msgstr "Mainkan Skena Kustom"
@@ -24179,15 +26143,6 @@ msgstr ""
#: scene/resources/texture.cpp
#, fuzzy
-msgid "Storage"
-msgstr "Menyimpan File:"
-
-#: scene/resources/texture.cpp
-msgid "Lossy Quality"
-msgstr ""
-
-#: scene/resources/texture.cpp
-#, fuzzy
msgid "Load Path"
msgstr "Muat Preset"
@@ -24318,11 +26273,6 @@ msgstr "Fungsi perbandingan tidak valid untuk jenis tersebut."
msgid "Fallback Environment"
msgstr "Tampilkan Lingkungan"
-#: scene/resources/world.cpp scene/resources/world_2d.cpp
-#, fuzzy
-msgid "Space"
-msgstr "Skena Utama"
-
#: scene/resources/world.cpp
#, fuzzy
msgid "Scenario"
@@ -24403,10 +26353,37 @@ msgstr ""
msgid "Wet"
msgstr ""
-#: servers/audio/effects/audio_effect_compressor.cpp
-msgid "Threshold"
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "Voice"
msgstr ""
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+msgid "Delay (ms)"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_phaser.cpp
+msgid "Rate Hz"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#, fuzzy
+msgid "Depth (ms)"
+msgstr "Kedalaman"
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+msgid "Level dB"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+#: servers/audio/effects/audio_effect_panner.cpp
+#, fuzzy
+msgid "Pan"
+msgstr "Dataran:"
+
#: servers/audio/effects/audio_effect_compressor.cpp
#: servers/audio/effects/audio_effect_filter.cpp
msgid "Gain"
@@ -24430,20 +26407,6 @@ msgid "Tap 1"
msgstr ""
#: servers/audio/effects/audio_effect_delay.cpp
-msgid "Delay (ms)"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_delay.cpp
-msgid "Level dB"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_delay.cpp
-#: servers/audio/effects/audio_effect_panner.cpp
-#, fuzzy
-msgid "Pan"
-msgstr "Dataran:"
-
-#: servers/audio/effects/audio_effect_delay.cpp
msgid "Tap 2"
msgstr ""
@@ -24505,10 +26468,6 @@ msgstr ""
msgid "Range Max Hz"
msgstr ""
-#: servers/audio/effects/audio_effect_phaser.cpp
-msgid "Rate Hz"
-msgstr ""
-
#: servers/audio/effects/audio_effect_pitch_shift.cpp
msgid "Oversampling"
msgstr ""
@@ -24524,7 +26483,7 @@ msgid "Predelay"
msgstr ""
#: servers/audio/effects/audio_effect_reverb.cpp
-msgid "(msec)"
+msgid "Msec"
msgstr ""
#: servers/audio/effects/audio_effect_reverb.cpp
@@ -24981,7 +26940,7 @@ msgstr ""
#: servers/visual_server.cpp
msgid "Compatibility"
-msgstr ""
+msgstr "Kompatibilitas"
#: servers/visual_server.cpp
msgid "Disable Half Float"
@@ -25045,7 +27004,7 @@ msgstr "Mode Interpolasi"
#: servers/visual_server.cpp
msgid "Max Simultaneous Compiles"
-msgstr ""
+msgstr "Maksimal Kompilasi Bersamaan"
#: servers/visual_server.cpp
msgid "Log Active Async Compiles Count"
diff --git a/editor/translations/is.po b/editor/translations/is.po
index f4c96b77e1..41943065bb 100644
--- a/editor/translations/is.po
+++ b/editor/translations/is.po
@@ -21,7 +21,7 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 4.4-dev\n"
-#: core/bind/core_bind.cpp
+#: core/bind/core_bind.cpp main/main.cpp
msgid "Tablet Driver"
msgstr ""
@@ -114,8 +114,8 @@ msgstr "Val á kvarða"
#: core/bind/core_bind.cpp editor/editor_settings.cpp main/main.cpp
#: modules/gdscript/gdscript_editor.cpp modules/gridmap/grid_map.cpp
#: modules/mono/csharp_script.cpp modules/visual_script/visual_script_nodes.cpp
-#: scene/2d/tile_map.cpp scene/3d/camera.cpp scene/gui/control.cpp
-#: scene/gui/graph_edit.cpp scene/main/viewport.cpp
+#: scene/2d/tile_map.cpp scene/3d/camera.cpp scene/3d/light.cpp
+#: scene/gui/control.cpp scene/gui/graph_edit.cpp scene/main/viewport.cpp
#: scene/resources/dynamic_font.cpp scene/resources/navigation_mesh.cpp
#: scene/resources/primitive_meshes.cpp scene/resources/sky.cpp
#: scene/resources/style_box.cpp scene/resources/texture.cpp
@@ -212,8 +212,7 @@ msgid "Data"
msgstr ""
#: core/io/file_access_network.cpp core/register_core_types.cpp
-#: editor/editor_settings.cpp editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp main/main.cpp
+#: editor/editor_settings.cpp main/main.cpp
#: modules/gdscript/language_server/gdscript_language_server.cpp
msgid "Network"
msgstr ""
@@ -479,9 +478,10 @@ msgstr ""
msgid "Relative"
msgstr ""
-#: core/os/input_event.cpp scene/2d/camera_2d.cpp
-#: scene/3d/interpolated_camera.cpp scene/animation/animation_player.cpp
-#: scene/resources/environment.cpp
+#: core/os/input_event.cpp scene/2d/camera_2d.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/interpolated_camera.cpp
+#: scene/animation/animation_player.cpp scene/resources/environment.cpp
+#: scene/resources/particles_material.cpp
#, fuzzy
msgid "Speed"
msgstr "Val á kvarða"
@@ -528,8 +528,9 @@ msgstr ""
msgid "Pitch"
msgstr "Val á kvarða"
-#: core/os/input_event.cpp scene/2d/physics_body_2d.cpp
-#: scene/3d/physics_body.cpp
+#: core/os/input_event.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/physics_body_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/3d/physics_body.cpp scene/resources/particles_material.cpp
msgid "Velocity"
msgstr ""
@@ -546,6 +547,8 @@ msgid "Controller Value"
msgstr ""
#: core/project_settings.cpp editor/editor_node.cpp main/main.cpp
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/windows/export/export.cpp
#, fuzzy
msgid "Application"
msgstr "Allt úrvalið"
@@ -563,13 +566,16 @@ msgstr "Verkefna Stjóri"
#: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp
#: editor/editor_plugin_settings.cpp editor/editor_profiler.cpp
#: editor/project_manager.cpp editor/settings_config_dialog.cpp
-#: modules/gdnative/nativescript/nativescript.cpp scene/2d/area_2d.cpp
-#: scene/3d/area.cpp scene/main/node.cpp
+#: modules/gdnative/nativescript/nativescript.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/osx/export/export.cpp scene/2d/area_2d.cpp scene/3d/area.cpp
+#: scene/main/node.cpp
msgid "Name"
msgstr ""
#: core/project_settings.cpp editor/editor_help.cpp
-#: modules/visual_script/visual_script_nodes.cpp
+#: modules/visual_script/visual_script_nodes.cpp platform/uwp/export/export.cpp
+#: platform/windows/export/export.cpp
msgid "Description"
msgstr ""
@@ -607,7 +613,7 @@ msgid "Custom User Dir Name"
msgstr ""
#: core/project_settings.cpp editor/animation_track_editor.cpp
-#: editor/editor_audio_buses.cpp servers/audio_server.cpp
+#: editor/editor_audio_buses.cpp main/main.cpp servers/audio_server.cpp
msgid "Audio"
msgstr ""
@@ -760,10 +766,13 @@ msgstr "Verkefna Stjóri"
msgid "Sharpen Intensity"
msgstr ""
-#: core/project_settings.cpp editor/editor_node.cpp editor/editor_settings.cpp
-#: editor/plugins/script_editor_plugin.cpp editor/project_export.cpp
-#: main/main.cpp modules/gdscript/gdscript.cpp
-#: modules/visual_script/visual_script.cpp scene/3d/room_manager.cpp
+#: core/project_settings.cpp editor/editor_export.cpp editor/editor_node.cpp
+#: editor/editor_settings.cpp editor/plugins/script_editor_plugin.cpp
+#: editor/project_export.cpp main/main.cpp modules/gdscript/gdscript.cpp
+#: modules/visual_script/visual_script.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp scene/3d/room_manager.cpp
#: scene/main/scene_tree.cpp scene/resources/shape_2d.cpp
#: servers/visual_server.cpp
msgid "Debug"
@@ -988,6 +997,7 @@ msgid "Subsurface Scattering"
msgstr ""
#: drivers/gles3/rasterizer_scene_gles3.cpp
+#: editor/import/resource_importer_texture.cpp
#: editor/plugins/spatial_editor_plugin.cpp modules/gltf/gltf_node.cpp
#: modules/gridmap/grid_map.cpp scene/2d/cpu_particles_2d.cpp
#: scene/2d/node_2d.cpp scene/2d/parallax_layer.cpp scene/2d/polygon_2d.cpp
@@ -1305,6 +1315,7 @@ msgid "Editors"
msgstr "Breyta"
#: editor/animation_track_editor.cpp editor/editor_settings.cpp
+#: editor/import/resource_importer_scene.cpp
#: editor/plugins/animation_player_editor_plugin.cpp editor/scene_tree_dock.cpp
#: scene/2d/animated_sprite.cpp scene/2d/cpu_particles_2d.cpp
#: scene/2d/sprite.cpp scene/3d/cpu_particles.cpp scene/3d/sprite_3d.cpp
@@ -1528,14 +1539,14 @@ msgstr ""
msgid "Seconds"
msgstr ""
-#: editor/animation_track_editor.cpp
+#: editor/animation_track_editor.cpp editor/import/resource_importer_scene.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp main/main.cpp
#: scene/resources/texture.cpp
msgid "FPS"
msgstr ""
#: editor/animation_track_editor.cpp editor/editor_plugin_settings.cpp
-#: editor/editor_resource_picker.cpp
+#: editor/editor_resource_picker.cpp editor/import/resource_importer_wav.cpp
#: editor/plugins/polygon_2d_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
@@ -2487,7 +2498,9 @@ msgid "Remove Autoload"
msgstr ""
#: editor/editor_autoload_settings.cpp editor/editor_plugin_settings.cpp
-#: modules/gdscript/gdscript.cpp scene/2d/polygon_2d.cpp scene/3d/area.cpp
+#: modules/gdscript/gdscript.cpp platform/android/export/export_plugin.cpp
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#: scene/2d/polygon_2d.cpp scene/3d/area.cpp scene/3d/physics_joint.cpp
#: scene/3d/reflection_probe.cpp scene/main/canvas_layer.cpp
#: scene/resources/material.cpp servers/visual_server.cpp
msgid "Enable"
@@ -2640,6 +2653,58 @@ msgstr ""
#: editor/editor_export.cpp platform/android/export/export_plugin.cpp
#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Custom Template"
+msgstr "Breyta:"
+
+#: editor/editor_export.cpp editor/project_export.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp
+msgid "Release"
+msgstr ""
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Binary Format"
+msgstr "Breyta umbreytingu"
+
+#: editor/editor_export.cpp
+msgid "64 Bits"
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Embed PCK"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Texture Format"
+msgstr "Fjarlægja val"
+
+#: editor/editor_export.cpp
+msgid "BPTC"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "S3TC"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "ETC"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "ETC2"
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "No BPTC Fallbacks"
+msgstr ""
+
+#: editor/editor_export.cpp platform/android/export/export_plugin.cpp
+#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
msgid "Custom debug template not found."
msgstr ""
@@ -2817,6 +2882,7 @@ msgid "Make Current"
msgstr ""
#: editor/editor_feature_profile.cpp editor/editor_node.cpp
+#: editor/import/resource_importer_scene.cpp
#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
msgid "Import"
msgstr ""
@@ -2943,8 +3009,11 @@ msgstr ""
msgid "Display Mode"
msgstr ""
-#: editor/editor_file_dialog.cpp main/main.cpp modules/csg/csg_shape.cpp
-#: modules/visual_script/visual_script_nodes.cpp
+#: editor/editor_file_dialog.cpp
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+#: editor/import/resource_importer_wav.cpp main/main.cpp
+#: modules/csg/csg_shape.cpp modules/visual_script/visual_script_nodes.cpp
#: modules/visual_script/visual_script_yield_nodes.cpp scene/2d/light_2d.cpp
#: scene/2d/physics_body_2d.cpp scene/2d/tile_map.cpp
#: scene/3d/baked_lightmap.cpp scene/3d/light.cpp scene/3d/physics_body.cpp
@@ -3077,7 +3146,9 @@ msgstr ""
msgid "Reimport Missing Imported Files"
msgstr ""
-#: editor/editor_help.cpp
+#: editor/editor_help.cpp scene/2d/camera_2d.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/resources/dynamic_font.cpp
+#: scene/resources/style_box.cpp
msgid "Top"
msgstr ""
@@ -3129,6 +3200,7 @@ msgid "Fonts"
msgstr ""
#: editor/editor_help.cpp editor/plugins/theme_editor_plugin.cpp
+#: platform/iphone/export/export.cpp
msgid "Icons"
msgstr ""
@@ -3287,7 +3359,9 @@ msgstr ""
msgid "Pin value [Disabled because '%s' is editor-only]"
msgstr ""
-#: editor/editor_inspector.cpp editor/scene_tree_dock.cpp
+#: editor/editor_inspector.cpp
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+#: editor/scene_tree_dock.cpp
#: modules/visual_script/visual_script_func_nodes.cpp
#: modules/visual_script/visual_script_nodes.cpp
#: modules/visual_script/visual_script_property_selector.cpp
@@ -3601,6 +3675,14 @@ msgid "Quick Open Script..."
msgstr ""
#: editor/editor_node.cpp
+msgid "Save & Reload"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Save changes to '%s' before reloading?"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "Save & Close"
msgstr ""
@@ -3711,6 +3793,12 @@ msgid "Open Project Manager?"
msgstr "Opna Verkefna Stjóra?"
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Save changes to the following scene(s) before reloading?"
+msgstr ""
+"Vista breytingar á neðangreindum senu(m) áður en Verkefna Stjóri er opnaður?"
+
+#: editor/editor_node.cpp
msgid "Save & Quit"
msgstr ""
@@ -3955,8 +4043,8 @@ msgstr "Samfellt"
#: editor/editor_node.cpp
#, fuzzy
-msgid "Translate Properties"
-msgstr "Tvíteknir lyklar"
+msgid "Localize Settings"
+msgstr "Stillið breyting á:"
#: editor/editor_node.cpp
#, fuzzy
@@ -3972,9 +4060,8 @@ msgid "Inspector"
msgstr ""
#: editor/editor_node.cpp
-#, fuzzy
-msgid "Capitalize Properties"
-msgstr "Tvíteknir lyklar"
+msgid "Default Property Name Style"
+msgstr ""
#: editor/editor_node.cpp
msgid "Default Float Step"
@@ -4539,7 +4626,9 @@ msgstr ""
msgid "Update"
msgstr ""
-#: editor/editor_plugin_settings.cpp
+#: editor/editor_plugin_settings.cpp platform/android/export/export_plugin.cpp
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp
msgid "Version"
msgstr ""
@@ -5496,7 +5585,7 @@ msgstr ""
msgid "Rect Custom Position"
msgstr "Breyta Viðbót"
-#: editor/editor_settings.cpp
+#: editor/editor_settings.cpp platform/android/export/export_plugin.cpp
msgid "Screen"
msgstr ""
@@ -5521,6 +5610,19 @@ msgid "Editor SSL Certificates"
msgstr ""
#: editor/editor_settings.cpp
+msgid "HTTP Proxy"
+msgstr ""
+
+#: editor/editor_settings.cpp
+msgid "Host"
+msgstr ""
+
+#: editor/editor_settings.cpp editor/fileserver/editor_file_server.cpp
+#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp
+msgid "Port"
+msgstr ""
+
+#: editor/editor_settings.cpp
msgid "Project Manager"
msgstr "Verkefna Stjóri"
@@ -5560,7 +5662,8 @@ msgstr ""
msgid "String Color"
msgstr ""
-#: editor/editor_settings.cpp
+#: editor/editor_settings.cpp platform/javascript/export/export.cpp
+#: platform/uwp/export/export.cpp
msgid "Background Color"
msgstr ""
@@ -5722,22 +5825,6 @@ msgid "Starting the download..."
msgstr ""
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "HTTP Proxy"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Host"
-msgstr ""
-
-#: editor/export_template_manager.cpp editor/fileserver/editor_file_server.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp main/main.cpp
-#: modules/mono/mono_gd/gd_mono.cpp
-msgid "Port"
-msgstr ""
-
-#: editor/export_template_manager.cpp
msgid "Error requesting URL:"
msgstr ""
@@ -5980,6 +6067,7 @@ msgstr ""
#: editor/fileserver/editor_file_server.cpp
#: editor/plugins/version_control_editor_plugin.cpp
+#: platform/uwp/export/export.cpp platform/windows/export/export.cpp
msgid "Password"
msgstr ""
@@ -6346,6 +6434,110 @@ msgstr ""
msgid "Use Ambient"
msgstr ""
+#: editor/import/resource_importer_bitmask.cpp
+#, fuzzy
+msgid "Create From"
+msgstr "Afrita val"
+
+#: editor/import/resource_importer_bitmask.cpp
+#: servers/audio/effects/audio_effect_compressor.cpp
+msgid "Threshold"
+msgstr ""
+
+#: editor/import/resource_importer_csv_translation.cpp
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_scene.cpp
+#: editor/import/resource_importer_texture.cpp
+#: editor/import/resource_importer_wav.cpp scene/3d/gi_probe.cpp
+msgid "Compress"
+msgstr ""
+
+#: editor/import/resource_importer_csv_translation.cpp
+msgid "Delimiter"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+msgid "No BPTC If RGB"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/sprite_3d.cpp
+#: scene/resources/material.cpp scene/resources/particles_material.cpp
+#: scene/resources/texture.cpp
+msgid "Flags"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/animation/tween.cpp
+#: scene/resources/texture.cpp
+msgid "Repeat"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/2d/light_2d.cpp
+#: scene/gui/control.cpp scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Filter"
+msgstr "Verkefna Stjóri"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+msgid "Mipmaps"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+msgid "Anisotropic"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+msgid "sRGB"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+msgid "Slices"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
+#: scene/resources/style_box.cpp
+#, fuzzy
+msgid "Horizontal"
+msgstr "Fjarlægja val"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
+#: scene/resources/style_box.cpp
+msgid "Vertical"
+msgstr ""
+
+#: editor/import/resource_importer_obj.cpp
+msgid "Generate Tangents"
+msgstr ""
+
+#: editor/import/resource_importer_obj.cpp
+#, fuzzy
+msgid "Scale Mesh"
+msgstr "Val á kvarða"
+
+#: editor/import/resource_importer_obj.cpp
+msgid "Offset Mesh"
+msgstr ""
+
+#: editor/import/resource_importer_obj.cpp
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Octahedral Compression"
+msgstr "Breyta Viðbót"
+
+#: editor/import/resource_importer_obj.cpp
+msgid "Optimize Mesh Flags"
+msgstr ""
+
#: editor/import/resource_importer_scene.cpp
msgid "Import as Single Scene"
msgstr ""
@@ -6386,6 +6578,142 @@ msgstr ""
msgid "Import as Multiple Scenes+Materials"
msgstr ""
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Nodes"
+msgstr "Tvíteknir lyklar"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Root Type"
+msgstr "Anim breyting umskipti"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Root Name"
+msgstr "Fjarlægja val"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Root Scale"
+msgstr "Val á kvarða"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Custom Script"
+msgstr "Tvíteknir lyklar"
+
+#: editor/import/resource_importer_scene.cpp scene/resources/texture.cpp
+msgid "Storage"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Use Legacy Names"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+msgid "Materials"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Location"
+msgstr "Allt úrvalið"
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Keep On Reimport"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+msgid "Meshes"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Ensure Tangents"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Light Baking"
+msgstr "Breyta Viðbót"
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Lightmap Texel Size"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+msgid "Skins"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Use Named Skins"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "External Files"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Store In Subdir"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Filter Script"
+msgstr "Verkefna Stjóri"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Keep Custom Tracks"
+msgstr "Breyta umbreytingu"
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Optimizer"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp main/main.cpp
+#: modules/mono/mono_gd/gd_mono.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp scene/2d/camera_2d.cpp scene/2d/light_2d.cpp
+#: scene/2d/navigation_polygon.cpp scene/2d/ray_cast_2d.cpp scene/2d/sprite.cpp
+#: scene/2d/y_sort.cpp scene/3d/audio_stream_player_3d.cpp
+#: scene/3d/baked_lightmap.cpp scene/3d/interpolated_camera.cpp
+#: scene/3d/light.cpp scene/3d/navigation_mesh_instance.cpp
+#: scene/3d/physics_joint.cpp scene/3d/ray_cast.cpp scene/3d/sprite_3d.cpp
+#: scene/gui/graph_edit.cpp scene/gui/rich_text_label.cpp
+#: scene/resources/curve.cpp scene/resources/environment.cpp
+#: scene/resources/material.cpp
+msgid "Enabled"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Max Linear Error"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Max Angular Error"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Max Angle"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Remove Unused Tracks"
+msgstr "Fjarlægja Anim track"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Clips"
+msgstr "Anim bæta við lag"
+
+#: editor/import/resource_importer_scene.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/particles_2d.cpp scene/3d/area.cpp scene/3d/cpu_particles.cpp
+#: scene/3d/particles.cpp scene/resources/environment.cpp
+msgid "Amount"
+msgstr ""
+
#: editor/import/resource_importer_scene.cpp
#: editor/plugins/mesh_library_editor_plugin.cpp
msgid "Import Scene"
@@ -6427,12 +6755,141 @@ msgstr ""
msgid "Saving..."
msgstr ""
+#: editor/import/resource_importer_texture.cpp scene/resources/texture.cpp
+msgid "Lossy Quality"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "HDR Mode"
+msgstr "Breyta Viðbót"
+
+#: editor/import/resource_importer_texture.cpp
+msgid "BPTC LDR"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/mesh_instance_2d.cpp scene/2d/multimesh_instance_2d.cpp
+#: scene/2d/particles_2d.cpp scene/2d/sprite.cpp scene/resources/style_box.cpp
+msgid "Normal Map"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Process"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Fix Alpha Border"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Premult Alpha"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Hdr As Srgb"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Invert Color"
+msgstr "Val á kvarða"
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Normal Map Invert Y"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
+#: scene/audio/audio_stream_player.cpp scene/gui/video_player.cpp
+msgid "Stream"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Size Limit"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Detect 3D"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "SVG"
+msgstr ""
+
#: editor/import/resource_importer_texture.cpp
msgid ""
"Warning, no suitable PC VRAM compression enabled in Project Settings. This "
"texture will not display correctly on PC."
msgstr ""
+#: editor/import/resource_importer_texture_atlas.cpp
+msgid "Atlas File"
+msgstr ""
+
+#: editor/import/resource_importer_texture_atlas.cpp
+#, fuzzy
+msgid "Import Mode"
+msgstr "Verkefna Stjóri"
+
+#: editor/import/resource_importer_texture_atlas.cpp
+msgid "Crop To Region"
+msgstr ""
+
+#: editor/import/resource_importer_texture_atlas.cpp
+msgid "Trim Alpha Border From Region"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp scene/2d/physics_body_2d.cpp
+msgid "Force"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+msgid "8 Bit"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp main/main.cpp
+#: modules/mono/editor/csharp_project.cpp modules/mono/mono_gd/gd_mono.cpp
+msgid "Mono"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+#, fuzzy
+msgid "Max Rate"
+msgstr "Val á kvarða"
+
+#: editor/import/resource_importer_wav.cpp
+#, fuzzy
+msgid "Max Rate Hz"
+msgstr "Val á kvarða"
+
+#: editor/import/resource_importer_wav.cpp
+msgid "Trim"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+#, fuzzy
+msgid "Normalize"
+msgstr "Fjarlægja val"
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+#, fuzzy
+msgid "Loop Mode"
+msgstr "Breyta Viðbót"
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+#, fuzzy
+msgid "Loop Begin"
+msgstr "Breyta Viðbót"
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+#, fuzzy
+msgid "Loop End"
+msgstr "Breyta Viðbót"
+
#: editor/import_defaults_editor.cpp
#, fuzzy
msgid "Select Importer"
@@ -6502,6 +6959,27 @@ msgid "Failed to load resource."
msgstr ""
#: editor/inspector_dock.cpp
+msgid "Property Name Style"
+msgstr ""
+
+#: editor/inspector_dock.cpp scene/gui/color_picker.cpp
+msgid "Raw"
+msgstr ""
+
+#: editor/inspector_dock.cpp
+#, fuzzy
+msgid "Capitalized"
+msgstr "Tvíteknir lyklar"
+
+#: editor/inspector_dock.cpp
+msgid "Localized"
+msgstr ""
+
+#: editor/inspector_dock.cpp
+msgid "Localization not available for current language."
+msgstr ""
+
+#: editor/inspector_dock.cpp
msgid "Copy Properties"
msgstr ""
@@ -7545,18 +8023,23 @@ msgid "License (Z-A)"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
+msgctxt "Pagination"
msgid "First"
msgstr ""
-#: editor/plugins/asset_library_editor_plugin.cpp scene/gui/control.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgctxt "Pagination"
msgid "Previous"
msgstr ""
-#: editor/plugins/asset_library_editor_plugin.cpp scene/gui/control.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgctxt "Pagination"
msgid "Next"
-msgstr ""
+msgstr "Hreyfa Viðbótar Lykil"
#: editor/plugins/asset_library_editor_plugin.cpp
+msgctxt "Pagination"
msgid "Last"
msgstr ""
@@ -7794,19 +8277,19 @@ msgid ""
"margins."
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Top Left"
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Top Right"
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Bottom Right"
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Bottom Left"
msgstr ""
@@ -8513,6 +8996,18 @@ msgstr ""
msgid "Gradient Edited"
msgstr ""
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+msgid "Swap GradientTexture2D Fill Points"
+msgstr ""
+
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+msgid "Swap Gradient Fill Points"
+msgstr ""
+
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+msgid "Toggle Grid Snap"
+msgstr ""
+
#: editor/plugins/item_list_editor_plugin.cpp
msgid "Item %d"
msgstr ""
@@ -8729,8 +9224,8 @@ msgid ""
"%s"
msgstr ""
-#: editor/plugins/mesh_library_editor_plugin.cpp modules/gridmap/grid_map.cpp
-msgid "Mesh Library"
+#: editor/plugins/mesh_library_editor_plugin.cpp
+msgid "MeshLibrary"
msgstr ""
#: editor/plugins/mesh_library_editor_plugin.cpp
@@ -9709,8 +10204,8 @@ msgstr ""
msgid "Source"
msgstr ""
-#: editor/plugins/script_text_editor.cpp scene/3d/interpolated_camera.cpp
-#: scene/animation/skeleton_ik.cpp
+#: editor/plugins/script_text_editor.cpp platform/uwp/export/export.cpp
+#: scene/3d/interpolated_camera.cpp scene/animation/skeleton_ik.cpp
msgid "Target"
msgstr ""
@@ -10675,7 +11170,9 @@ msgstr ""
#: editor/plugins/sprite_frames_editor_plugin.cpp
#: modules/gltf/gltf_animation.cpp modules/minimp3/audio_stream_mp3.cpp
-#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp scene/2d/path_2d.cpp
+#: modules/minimp3/resource_importer_mp3.cpp
+#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp
+#: modules/stb_vorbis/resource_importer_ogg_vorbis.cpp scene/2d/path_2d.cpp
#: scene/3d/path.cpp scene/resources/animation.cpp scene/resources/material.cpp
msgid "Loop"
msgstr ""
@@ -11560,8 +12057,9 @@ msgstr ""
msgid "Priority"
msgstr ""
-#: editor/plugins/tile_set_editor_plugin.cpp main/main.cpp scene/gui/button.cpp
-#: scene/gui/item_list.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp main/main.cpp
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#: scene/gui/button.cpp scene/gui/item_list.cpp
msgid "Icon"
msgstr ""
@@ -12870,10 +13368,6 @@ msgid ""
msgstr ""
#: editor/project_export.cpp
-msgid "Release"
-msgstr ""
-
-#: editor/project_export.cpp
msgid "Exporting All"
msgstr ""
@@ -14654,6 +15148,7 @@ msgid "Change AudioStreamPlayer3D Emission Angle"
msgstr ""
#: editor/spatial_editor_gizmos.cpp modules/gltf/gltf_node.cpp
+#: platform/osx/export/export.cpp
msgid "Camera"
msgstr ""
@@ -14922,7 +15417,8 @@ msgstr ""
msgid "Use Nvidia Rect Flicker Workaround"
msgstr ""
-#: main/main.cpp platform/uwp/os_uwp.cpp
+#: main/main.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp platform/uwp/os_uwp.cpp
msgid "Display"
msgstr ""
@@ -14977,18 +15473,6 @@ msgstr ""
msgid "Allowed"
msgstr ""
-#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp scene/2d/camera_2d.cpp
-#: scene/2d/light_2d.cpp scene/2d/navigation_polygon.cpp
-#: scene/2d/ray_cast_2d.cpp scene/2d/sprite.cpp scene/2d/y_sort.cpp
-#: scene/3d/audio_stream_player_3d.cpp scene/3d/baked_lightmap.cpp
-#: scene/3d/interpolated_camera.cpp scene/3d/light.cpp
-#: scene/3d/navigation_mesh_instance.cpp scene/3d/ray_cast.cpp
-#: scene/3d/sprite_3d.cpp scene/gui/graph_edit.cpp
-#: scene/gui/rich_text_label.cpp scene/resources/curve.cpp
-#: scene/resources/environment.cpp
-msgid "Enabled"
-msgstr ""
-
#: main/main.cpp
msgid "Intended Usage"
msgstr ""
@@ -15017,13 +15501,14 @@ msgstr ""
msgid "Handheld"
msgstr ""
-#: main/main.cpp
+#: main/main.cpp platform/javascript/export/export.cpp
+#: platform/uwp/export/export.cpp
#, fuzzy
msgid "Orientation"
msgstr "Stillið breyting á:"
#: main/main.cpp scene/gui/scroll_container.cpp scene/gui/text_edit.cpp
-#: scene/main/scene_tree.cpp
+#: scene/main/scene_tree.cpp scene/register_scene_types.cpp
msgid "Common"
msgstr ""
@@ -15062,7 +15547,7 @@ msgid "Verbose stdout"
msgstr ""
#: main/main.cpp
-msgid "Frame Delay (msec)"
+msgid "Frame Delay Msec"
msgstr ""
#: main/main.cpp
@@ -15180,11 +15665,6 @@ msgstr ""
msgid "Tooltip Position Offset"
msgstr ""
-#: main/main.cpp modules/mono/editor/csharp_project.cpp
-#: modules/mono/mono_gd/gd_mono.cpp
-msgid "Mono"
-msgstr ""
-
#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp
msgid "Debugger Agent"
msgstr ""
@@ -15717,7 +16197,7 @@ msgstr ""
msgid "Intensity"
msgstr ""
-#: modules/gltf/gltf_light.cpp scene/2d/light_2d.cpp
+#: modules/gltf/gltf_light.cpp scene/2d/light_2d.cpp scene/3d/light.cpp
msgid "Range"
msgstr ""
@@ -15851,11 +16331,6 @@ msgstr ""
msgid "Use Named Skin Binds"
msgstr ""
-#: modules/gltf/gltf_state.cpp scene/3d/physics_joint.cpp
-#, fuzzy
-msgid "Nodes"
-msgstr "Tvíteknir lyklar"
-
#: modules/gltf/gltf_state.cpp
msgid "Buffer Views"
msgstr ""
@@ -15865,14 +16340,6 @@ msgid "Accessors"
msgstr ""
#: modules/gltf/gltf_state.cpp
-msgid "Meshes"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp
-msgid "Materials"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp
#, fuzzy
msgid "Scene Name"
msgstr "Anim DELETE-lyklar"
@@ -15889,15 +16356,11 @@ msgstr "Hreyfa Viðbótar Lykil"
msgid "Textures"
msgstr "Fjarlægja val"
-#: modules/gltf/gltf_state.cpp
+#: modules/gltf/gltf_state.cpp platform/uwp/export/export.cpp
msgid "Images"
msgstr ""
#: modules/gltf/gltf_state.cpp
-msgid "Skins"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp
msgid "Cameras"
msgstr ""
@@ -15929,10 +16392,14 @@ msgid "Src Image"
msgstr ""
#: modules/gridmap/grid_map.cpp
-msgid "Physics Material"
+msgid "Mesh Library"
msgstr ""
#: modules/gridmap/grid_map.cpp
+msgid "Physics Material"
+msgstr ""
+
+#: modules/gridmap/grid_map.cpp scene/3d/visual_instance.cpp
msgid "Use In Baked Light"
msgstr ""
@@ -15962,6 +16429,7 @@ msgstr "Anim DELETE-lyklar"
#: modules/gridmap/grid_map.cpp scene/2d/collision_object_2d.cpp
#: scene/2d/tile_map.cpp scene/3d/collision_object.cpp scene/3d/soft_body.cpp
+#: scene/resources/material.cpp
msgid "Mask"
msgstr ""
@@ -16147,7 +16615,9 @@ msgid "Ultra Quality Ray Count"
msgstr ""
#: modules/minimp3/audio_stream_mp3.cpp
+#: modules/minimp3/resource_importer_mp3.cpp
#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp
+#: modules/stb_vorbis/resource_importer_ogg_vorbis.cpp
#, fuzzy
msgid "Loop Offset"
msgstr "Breyta Viðbót"
@@ -17197,6 +17667,173 @@ msgid "The package must have at least one '.' separator."
msgstr ""
#: platform/android/export/export_plugin.cpp
+msgid "Use Custom Build"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Export Format"
+msgstr "Breyta umbreytingu"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Keystore"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Debug User"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+msgid "Debug Password"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Release User"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Release Password"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "One Click Deploy"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Clear Previous Install"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp scene/resources/shader.cpp
+msgid "Code"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Min SDK"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Target SDK"
+msgstr "Anim DELETE-lyklar"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+msgid "Package"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Unique Name"
+msgstr "Fjarlægja val"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Signed"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Classify As Game"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Retain Data On Uninstall"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Exclude From Recents"
+msgstr "Anim DELETE-lyklar"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Graphics"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "OpenGL Debug"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "XR Features"
+msgstr "Fjarlægja val"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "XR Mode"
+msgstr "Breyta Viðbót"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Hand Tracking"
+msgstr "Anim bæta við lag"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Hand Tracking Frequency"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Passthrough"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Immersive Mode"
+msgstr "Breyta Viðbót"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Support Small"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Support Normal"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Support Large"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Support Xlarge"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "User Data Backup"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Allow"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+msgid "Command Line"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+msgid "Extra Args"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "APK Expansion"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Salt"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Public Key"
+msgstr "Tvíteknir lyklar"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Permissions"
+msgstr "Stillið breyting á:"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Custom Permissions"
+msgstr "Breyta Viðbót"
+
+#: platform/android/export/export_plugin.cpp
msgid "Select device from the list"
msgstr ""
@@ -17483,6 +18120,168 @@ msgid "The character '%s' is not allowed in Identifier."
msgstr ""
#: platform/iphone/export/export.cpp
+msgid "App Store Team ID"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Provisioning Profile UUID Debug"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Code Sign Identity Debug"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Export Method Debug"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Provisioning Profile UUID Release"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Code Sign Identity Release"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Export Method Release"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Targeted Device Family"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Info"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Identifier"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Signature"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Short Version"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/windows/export/export.cpp
+msgid "Copyright"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Capabilities"
+msgstr "Tvíteknir lyklar"
+
+#: platform/iphone/export/export.cpp
+msgid "Access Wi-Fi"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Push Notifications"
+msgstr ""
+
+#: platform/iphone/export/export.cpp scene/3d/baked_lightmap.cpp
+msgid "User Data"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Accessible From Files App"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Accessible From Itunes Sharing"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Privacy"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Camera Usage Description"
+msgstr "Breyta Tengingu: "
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Microphone Usage Description"
+msgstr "Breyta Tengingu: "
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Photolibrary Usage Description"
+msgstr "Breyta Tengingu: "
+
+#: platform/iphone/export/export.cpp
+msgid "iPhone 120 X 120"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPhone 180 X 180"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 76 X 76"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 152 X 152"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 167 X 167"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "App Store 1024 X 1024"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Spotlight 40 X 40"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Spotlight 80 X 80"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Storyboard"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Use Launch Screen Storyboard"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Image Scale Mode"
+msgstr "Val á kvarða"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Custom Image @2x"
+msgstr "Tvíteknir lyklar"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Custom Image @3x"
+msgstr "Tvíteknir lyklar"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Use Custom BG Color"
+msgstr "Tvíteknir lyklar"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Custom BG Color"
+msgstr "Tvíteknir lyklar"
+
+#: platform/iphone/export/export.cpp
msgid "App Store Team ID not specified - cannot configure the project."
msgstr ""
@@ -17519,6 +18318,79 @@ msgid "Could not read file:"
msgstr ""
#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Variant"
+msgstr "Stillið breyting á:"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Export Type"
+msgstr "Breyta..."
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "VRAM Texture Compression"
+msgstr "Breyta Viðbót"
+
+#: platform/javascript/export/export.cpp
+msgid "For Desktop"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "For Mobile"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Html"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Export Icon"
+msgstr "Breyta..."
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Custom Html Shell"
+msgstr "Tvíteknir lyklar"
+
+#: platform/javascript/export/export.cpp
+msgid "Head Include"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Canvas Resize Policy"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Focus Canvas On Start"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Experimental Virtual Keyboard"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Progressive Web App"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Offline Page"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 144 X 144"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 180 X 180"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 512 X 512"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
msgid "Could not read HTML shell:"
msgstr ""
@@ -17623,6 +18495,185 @@ msgid "Unknown object type."
msgstr ""
#: platform/osx/export/export.cpp
+msgid "App Category"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "High Res"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Location Usage Description"
+msgstr "Breyta Tengingu: "
+
+#: platform/osx/export/export.cpp
+msgid "Address Book Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Calendar Usage Description"
+msgstr "Breyta Tengingu: "
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Photos Library Usage Description"
+msgstr "Breyta Tengingu: "
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Desktop Folder Usage Description"
+msgstr "Breyta Tengingu: "
+
+#: platform/osx/export/export.cpp
+msgid "Documents Folder Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Downloads Folder Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Network Volumes Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Removable Volumes Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#, fuzzy
+msgid "Codesign"
+msgstr "Tvíteknir lyklar"
+
+#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
+#: platform/windows/export/export.cpp
+msgid "Identity"
+msgstr ""
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+msgid "Timestamp"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Hardened Runtime"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Replace Existing Signature"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Entitlements"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Custom File"
+msgstr "Tvíteknir lyklar"
+
+#: platform/osx/export/export.cpp
+msgid "Allow JIT Code Execution"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Allow Unsigned Executable Memory"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Allow Dyld Environment Variables"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Disable Library Validation"
+msgstr "Óvirkt"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Audio Input"
+msgstr "Anim bæta við lag"
+
+#: platform/osx/export/export.cpp
+msgid "Address Book"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Calendars"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Photos Library"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Apple Events"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Debugging"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "App Sandbox"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Network Server"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Network Client"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Device Usb"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Device Bluetooth"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Files Downloads"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Files Pictures"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Files Music"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Files Movies"
+msgstr ""
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#, fuzzy
+msgid "Custom Options"
+msgstr "Val á kvarða"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Notarization"
+msgstr "Breyta Viðbót"
+
+#: platform/osx/export/export.cpp
+msgid "Apple ID Name"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Apple ID Password"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Apple Team ID"
+msgstr ""
+
+#: platform/osx/export/export.cpp
msgid ""
"Note: The notarization process generally takes less than an hour. When the "
"process is completed, you'll receive an email."
@@ -17812,6 +18863,124 @@ msgid "Force Builtin Codesign"
msgstr ""
#: platform/uwp/export/export.cpp
+msgid "Architecture"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Display Name"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Short Name"
+msgstr "Anim breyting umskipti"
+
+#: platform/uwp/export/export.cpp
+msgid "Publisher"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Publisher Display Name"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Product Guid"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Publisher Guid"
+msgstr "Breyta umbreytingu"
+
+#: platform/uwp/export/export.cpp
+msgid "Signing"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Certificate"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Algorithm"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Major"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Minor"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Build"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Revision"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Landscape"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Portrait"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Landscape Flipped"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Portrait Flipped"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Store Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 44 X 44 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 71 X 71 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 150 X 150 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 310 X 310 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Wide 310 X 150 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Splash Screen"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Tiles"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Square 150 X 150"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Wide 310 X 150"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Square 310 X 310"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
msgid "Invalid package short name."
msgstr ""
@@ -17876,11 +19045,46 @@ msgid "Debug Certificate"
msgstr ""
#: platform/uwp/export/export.cpp
-msgid "Debug Password"
+msgid "Debug Algorithm"
msgstr ""
-#: platform/uwp/export/export.cpp
-msgid "Debug Algorithm"
+#: platform/windows/export/export.cpp
+msgid "Identity Type"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Timestamp Server URL"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Digest Algorithm"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "File Version"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Product Version"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Company Name"
+msgstr "Fjarlægja val"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Product Name"
+msgstr "Fjarlægja val"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "File Description"
+msgstr "Breyta Tengingu: "
+
+#: platform/windows/export/export.cpp
+msgid "Trademarks"
msgstr ""
#: platform/windows/export/export.cpp
@@ -17951,12 +19155,14 @@ msgstr ""
msgid "Centered"
msgstr "Anim DELETE-lyklar"
-#: scene/2d/animated_sprite.cpp scene/2d/camera_2d.cpp scene/2d/light_2d.cpp
+#: scene/2d/animated_sprite.cpp scene/2d/camera_2d.cpp
+#: scene/2d/cpu_particles_2d.cpp scene/2d/light_2d.cpp
#: scene/2d/parallax_background.cpp scene/2d/parallax_layer.cpp
#: scene/2d/path_2d.cpp scene/2d/polygon_2d.cpp scene/2d/sprite.cpp
-#: scene/3d/path.cpp scene/3d/physics_body.cpp scene/3d/sprite_3d.cpp
-#: scene/gui/graph_node.cpp scene/gui/rich_text_effect.cpp
-#: scene/main/canvas_layer.cpp scene/resources/material.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/path.cpp scene/3d/physics_body.cpp
+#: scene/3d/sprite_3d.cpp scene/gui/graph_node.cpp
+#: scene/gui/rich_text_effect.cpp scene/main/canvas_layer.cpp
+#: scene/resources/material.cpp scene/resources/particles_material.cpp
#: scene/resources/style_box.cpp
msgid "Offset"
msgstr ""
@@ -18021,11 +19227,6 @@ msgstr "Anim bæta við lag"
msgid "Override"
msgstr ""
-#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
-#: scene/audio/audio_stream_player.cpp scene/gui/video_player.cpp
-msgid "Stream"
-msgstr ""
-
#: scene/2d/audio_stream_player_2d.cpp scene/audio/audio_stream_player.cpp
#: scene/gui/video_player.cpp servers/audio/effects/audio_effect_amplify.cpp
msgid "Volume dB"
@@ -18050,12 +19251,12 @@ msgid "Stream Paused"
msgstr ""
#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
-#: scene/3d/reflection_probe.cpp scene/3d/visual_instance.cpp
-#: scene/resources/material.cpp
+#: scene/3d/light.cpp scene/3d/reflection_probe.cpp
+#: scene/3d/visual_instance.cpp scene/resources/material.cpp
msgid "Max Distance"
msgstr ""
-#: scene/2d/audio_stream_player_2d.cpp
+#: scene/2d/audio_stream_player_2d.cpp scene/3d/light.cpp
#, fuzzy
msgid "Attenuation"
msgstr "Stillið breyting á:"
@@ -18106,6 +19307,22 @@ msgstr ""
msgid "Limit"
msgstr ""
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/style_box.cpp
+msgid "Left"
+msgstr ""
+
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/style_box.cpp
+msgid "Right"
+msgstr ""
+
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/dynamic_font.cpp scene/resources/style_box.cpp
+#, fuzzy
+msgid "Bottom"
+msgstr "Val á kvarða"
+
#: scene/2d/camera_2d.cpp
msgid "Smoothed"
msgstr ""
@@ -18304,12 +19521,6 @@ msgstr ""
msgid "Emitting"
msgstr "Stillið breyting á:"
-#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp scene/3d/area.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
-#: scene/resources/environment.cpp
-msgid "Amount"
-msgstr ""
-
#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp
#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
msgid "Lifetime"
@@ -18370,18 +19581,13 @@ msgstr ""
#: scene/2d/mesh_instance_2d.cpp scene/2d/multimesh_instance_2d.cpp
#: scene/2d/particles_2d.cpp scene/2d/polygon_2d.cpp scene/2d/sprite.cpp
#: scene/3d/sprite_3d.cpp scene/gui/nine_patch_rect.cpp
-#: scene/gui/texture_rect.cpp scene/resources/sky.cpp
-#: scene/resources/style_box.cpp scene/resources/visual_shader_nodes.cpp
+#: scene/gui/texture_rect.cpp scene/resources/material.cpp
+#: scene/resources/sky.cpp scene/resources/style_box.cpp
+#: scene/resources/visual_shader_nodes.cpp
#, fuzzy
msgid "Texture"
msgstr "Fjarlægja val"
-#: scene/2d/cpu_particles_2d.cpp scene/2d/mesh_instance_2d.cpp
-#: scene/2d/multimesh_instance_2d.cpp scene/2d/particles_2d.cpp
-#: scene/2d/sprite.cpp scene/resources/style_box.cpp
-msgid "Normal Map"
-msgstr ""
-
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
msgid "Emission Shape"
@@ -18401,9 +19607,8 @@ msgid "Normals"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/3d/sprite_3d.cpp scene/resources/material.cpp
-#: scene/resources/particles_material.cpp scene/resources/texture.cpp
-msgid "Flags"
+#: scene/resources/particles_material.cpp
+msgid "Align Y"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
@@ -18424,6 +19629,11 @@ msgid "Initial Velocity"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Velocity Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp servers/physics_2d_server.cpp
#: servers/physics_server.cpp
msgid "Angular Velocity"
@@ -18431,6 +19641,12 @@ msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Velocity Curve"
+msgstr "Breyta hnútnum Ferill"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
msgid "Orbit Velocity"
msgstr ""
@@ -18441,6 +19657,22 @@ msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+msgid "Accel"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Accel Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Accel Curve"
+msgstr "Breyta hnútnum Ferill"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
msgid "Radial Accel"
msgstr ""
@@ -18450,19 +19682,55 @@ msgid "Tangential Accel"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/2d/joints_2d.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/vehicle_body.cpp
-#: scene/resources/particles_material.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/physics_joint.cpp
+#: scene/3d/vehicle_body.cpp scene/resources/particles_material.cpp
#: servers/audio/effects/audio_effect_reverb.cpp
msgid "Damping"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+msgid "Damping Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Damping Curve"
+msgstr "Breyta hnútnum Ferill"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp scene/3d/light.cpp
+#: scene/resources/particles_material.cpp
msgid "Angle"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+msgid "Angle Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Angle Curve"
+msgstr "Breyta hnútnum Ferill"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#, fuzzy
+msgid "Scale Amount"
+msgstr "Stillið breyting á:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+msgid "Scale Amount Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#, fuzzy
+msgid "Scale Amount Curve"
+msgstr "Breyta hnútnum Ferill"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
msgid "Color Ramp"
msgstr ""
@@ -18477,6 +19745,47 @@ msgstr ""
msgid "Hue Variation"
msgstr "Stillið breyting á:"
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Variation"
+msgstr "Stillið breyting á:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Variation Random"
+msgstr "Stillið breyting á:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Variation Curve"
+msgstr "Stillið breyting á:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Speed Random"
+msgstr "Val á kvarða"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Speed Curve"
+msgstr "Breyta hnútnum Ferill"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Offset Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Offset Curve"
+msgstr "Breyta hnútnum Ferill"
+
#: scene/2d/joints_2d.cpp
msgid "Node A and Node B must be PhysicsBody2Ds"
msgstr ""
@@ -18508,6 +19817,7 @@ msgid "Node B"
msgstr "Tvíteknir lyklar"
#: scene/2d/joints_2d.cpp scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp
+#: scene/3d/light.cpp scene/3d/physics_joint.cpp
#: scene/resources/environment.cpp
msgid "Bias"
msgstr ""
@@ -18517,7 +19827,7 @@ msgstr ""
msgid "Disable Collision"
msgstr "Óvirkt"
-#: scene/2d/joints_2d.cpp
+#: scene/2d/joints_2d.cpp scene/3d/physics_joint.cpp
msgid "Softness"
msgstr ""
@@ -18534,7 +19844,7 @@ msgstr ""
msgid "Rest Length"
msgstr ""
-#: scene/2d/joints_2d.cpp scene/3d/vehicle_body.cpp
+#: scene/2d/joints_2d.cpp scene/3d/physics_joint.cpp scene/3d/vehicle_body.cpp
msgid "Stiffness"
msgstr ""
@@ -18554,7 +19864,7 @@ msgid "Texture Scale"
msgstr ""
#: scene/2d/light_2d.cpp scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp
-#: scene/resources/environment.cpp scene/resources/sky.cpp
+#: scene/3d/light.cpp scene/resources/environment.cpp scene/resources/sky.cpp
msgid "Energy"
msgstr ""
@@ -18590,12 +19900,6 @@ msgstr ""
msgid "Gradient Length"
msgstr ""
-#: scene/2d/light_2d.cpp scene/gui/control.cpp
-#: scene/resources/navigation_mesh.cpp
-#, fuzzy
-msgid "Filter"
-msgstr "Verkefna Stjóri"
-
#: scene/2d/light_2d.cpp
#, fuzzy
msgid "Filter Smooth"
@@ -18981,10 +20285,6 @@ msgid "Applied Forces"
msgstr ""
#: scene/2d/physics_body_2d.cpp
-msgid "Force"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp
msgid "Torque"
msgstr ""
@@ -18997,7 +20297,7 @@ msgid "Sync To Physics"
msgstr ""
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-msgid "Moving platform"
+msgid "Moving Platform"
msgstr ""
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
@@ -19006,7 +20306,7 @@ msgstr ""
#: scene/2d/physics_body_2d.cpp scene/2d/touch_screen_button.cpp
#: scene/3d/physics_body.cpp scene/gui/texture_button.cpp
-#: scene/resources/line_shape_2d.cpp
+#: scene/resources/line_shape_2d.cpp scene/resources/material.cpp
msgid "Normal"
msgstr ""
@@ -19224,6 +20524,33 @@ msgid ""
"as parent."
msgstr ""
+#: scene/2d/visibility_notifier_2d.cpp scene/3d/visibility_notifier.cpp
+#, fuzzy
+msgid "Pause Animations"
+msgstr "Stillið breyting á:"
+
+#: scene/2d/visibility_notifier_2d.cpp scene/3d/visibility_notifier.cpp
+msgid "Freeze Bodies"
+msgstr ""
+
+#: scene/2d/visibility_notifier_2d.cpp
+msgid "Pause Particles"
+msgstr ""
+
+#: scene/2d/visibility_notifier_2d.cpp
+#, fuzzy
+msgid "Pause Animated Sprites"
+msgstr "Anim breyting umskipti"
+
+#: scene/2d/visibility_notifier_2d.cpp
+#, fuzzy
+msgid "Process Parent"
+msgstr "Breyta Viðbót"
+
+#: scene/2d/visibility_notifier_2d.cpp
+msgid "Physics Process Parent"
+msgstr ""
+
#: scene/3d/area.cpp
msgid "Reverb Bus"
msgstr ""
@@ -19316,6 +20643,7 @@ msgid "Attenuation Filter"
msgstr ""
#: scene/3d/audio_stream_player_3d.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
#: servers/audio/effects/audio_effect_filter.cpp
msgid "Cutoff Hz"
msgstr ""
@@ -19356,10 +20684,6 @@ msgid "Octree"
msgstr ""
#: scene/3d/baked_lightmap.cpp
-msgid "User Data"
-msgstr ""
-
-#: scene/3d/baked_lightmap.cpp
msgid "Finding meshes and lights"
msgstr ""
@@ -19595,6 +20919,16 @@ msgid "Ring Axis"
msgstr ""
#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Rotate Y"
+msgstr "Breyta Viðbót"
+
+#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Disable Z"
+msgstr "Óvirkt"
+
+#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
msgid "Flatness"
msgstr ""
@@ -19630,15 +20964,11 @@ msgstr ""
msgid "Dynamic Range"
msgstr ""
-#: scene/3d/gi_probe.cpp
+#: scene/3d/gi_probe.cpp scene/3d/light.cpp
msgid "Normal Bias"
msgstr ""
#: scene/3d/gi_probe.cpp
-msgid "Compress"
-msgstr ""
-
-#: scene/3d/gi_probe.cpp
msgid "Plotting Meshes"
msgstr ""
@@ -19664,15 +20994,28 @@ msgid "Subdiv"
msgstr ""
#: scene/3d/light.cpp
+msgid "Indirect Energy"
+msgstr ""
+
+#: scene/3d/light.cpp
msgid "Negative"
msgstr ""
#: scene/3d/light.cpp
#, fuzzy
+msgid "Specular"
+msgstr "Breyta Viðbót"
+
+#: scene/3d/light.cpp
+#, fuzzy
msgid "Bake Mode"
msgstr "Tvíteknir lyklar"
#: scene/3d/light.cpp
+msgid "Contact"
+msgstr ""
+
+#: scene/3d/light.cpp
#, fuzzy
msgid "Reverse Cull Face"
msgstr "Fjarlægja val"
@@ -19682,11 +21025,31 @@ msgid "Directional Shadow"
msgstr ""
#: scene/3d/light.cpp
+#, fuzzy
+msgid "Split 1"
+msgstr "Breyta hnútnum Ferill"
+
+#: scene/3d/light.cpp
+#, fuzzy
+msgid "Split 2"
+msgstr "Breyta hnútnum Ferill"
+
+#: scene/3d/light.cpp
+#, fuzzy
+msgid "Split 3"
+msgstr "Breyta hnútnum Ferill"
+
+#: scene/3d/light.cpp
msgid "Blend Splits"
msgstr ""
#: scene/3d/light.cpp
#, fuzzy
+msgid "Bias Split Scale"
+msgstr "Val á kvarða"
+
+#: scene/3d/light.cpp
+#, fuzzy
msgid "Depth Range"
msgstr "Val á kvarða"
@@ -19711,6 +21074,11 @@ msgstr ""
msgid "Spot"
msgstr ""
+#: scene/3d/light.cpp
+#, fuzzy
+msgid "Angle Attenuation"
+msgstr "Stillið breyting á:"
+
#: scene/3d/mesh_instance.cpp
msgid "Software Skinning"
msgstr ""
@@ -19828,6 +21196,60 @@ msgid "Axis Lock"
msgstr ""
#: scene/3d/physics_body.cpp
+msgid "Linear X"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Linear Y"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Linear Z"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Angular X"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Angular Y"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Angular Z"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Motion X"
+msgstr "Allt úrvalið"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Motion Y"
+msgstr "Allt úrvalið"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Motion Z"
+msgstr "Allt úrvalið"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Move Lock X"
+msgstr "Hreyfa Viðbótar Lykil"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Move Lock Y"
+msgstr "Hreyfa Viðbótar Lykil"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Move Lock Z"
+msgstr "Hreyfa Viðbótar Lykil"
+
+#: scene/3d/physics_body.cpp
msgid "Body Offset"
msgstr ""
@@ -19861,6 +21283,14 @@ msgid "Exclude Nodes"
msgstr "Anim DELETE-lyklar"
#: scene/3d/physics_joint.cpp
+msgid "Params"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Impulse Clamp"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit"
msgstr ""
@@ -19872,6 +21302,51 @@ msgstr ""
msgid "Lower"
msgstr ""
+#: scene/3d/physics_joint.cpp scene/3d/vehicle_body.cpp
+#, fuzzy
+msgid "Relaxation"
+msgstr "Stillið breyting á:"
+
+#: scene/3d/physics_joint.cpp
+msgid "Motor"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Target Velocity"
+msgstr "Anim DELETE-lyklar"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Max Impulse"
+msgstr "Val á kvarða"
+
+#: scene/3d/physics_joint.cpp
+msgid "Linear Limit"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Upper Distance"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Lower Distance"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Restitution"
+msgstr "Stillið breyting á:"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motion"
+msgstr "Allt úrvalið"
+
+#: scene/3d/physics_joint.cpp
+msgid "Linear Ortho"
+msgstr ""
+
#: scene/3d/physics_joint.cpp
msgid "Upper Angle"
msgstr ""
@@ -19881,6 +21356,15 @@ msgid "Lower Angle"
msgstr ""
#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Angular Motion"
+msgstr "Stillið breyting á:"
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Ortho"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
msgid "Swing Span"
msgstr ""
@@ -19889,17 +21373,89 @@ msgid "Twist Span"
msgstr ""
#: scene/3d/physics_joint.cpp
+msgid "Linear Limit X"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Linear Motor X"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Force Limit"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Linear Spring X"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Equilibrium Point"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit X"
msgstr ""
#: scene/3d/physics_joint.cpp
+msgid "Erp"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Motor X"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Spring X"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Linear Limit Y"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Linear Motor Y"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Linear Spring Y"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit Y"
msgstr ""
#: scene/3d/physics_joint.cpp
+msgid "Angular Motor Y"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Spring Y"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Linear Limit Z"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Linear Motor Z"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Linear Spring Z"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit Z"
msgstr ""
+#: scene/3d/physics_joint.cpp
+msgid "Angular Motor Z"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Spring Z"
+msgstr ""
+
#: scene/3d/portal.cpp
msgid "The RoomManager should not be a child or grandchild of a Portal."
msgstr ""
@@ -20009,7 +21565,7 @@ msgstr ""
msgid "Use Default Simplify"
msgstr ""
-#: scene/3d/room.cpp
+#: scene/3d/room.cpp scene/3d/room_manager.cpp
msgid "Room Simplify"
msgstr ""
@@ -20047,6 +21603,13 @@ msgstr ""
msgid "Main"
msgstr ""
+#: scene/3d/room_manager.cpp scene/animation/animation_player.cpp
+#: scene/animation/animation_tree.cpp scene/animation/animation_tree_player.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+#, fuzzy
+msgid "Active"
+msgstr "Allt úrvalið"
+
#: scene/3d/room_manager.cpp
msgid "Roomlist"
msgstr ""
@@ -20068,6 +21631,48 @@ msgid "Gameplay"
msgstr ""
#: scene/3d/room_manager.cpp
+msgid "Gameplay Monitor"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "Use Secondary PVS"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "Merge Meshes"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "Show Margins"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "Debug Sprawl"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "Overlap Warning Threshold"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Preview Camera"
+msgstr "Anim bæta við lag"
+
+#: scene/3d/room_manager.cpp
+msgid "Portal Depth Limit"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Default Portal Margin"
+msgstr "Afrita val"
+
+#: scene/3d/room_manager.cpp
+msgid "Roaming Expansion Margin"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
msgid ""
"RoomList path is invalid.\n"
"Please check the RoomList branch has been assigned in the RoomManager."
@@ -20187,6 +21792,19 @@ msgstr ""
msgid "Billboard"
msgstr ""
+#: scene/3d/sprite_3d.cpp scene/resources/material.cpp
+#, fuzzy
+msgid "Transparent"
+msgstr "Stillið breyting á:"
+
+#: scene/3d/sprite_3d.cpp
+msgid "Shaded"
+msgstr ""
+
+#: scene/3d/sprite_3d.cpp
+msgid "Double Sided"
+msgstr ""
+
#: scene/3d/sprite_3d.cpp
msgid "Alpha Cut"
msgstr ""
@@ -20253,11 +21871,6 @@ msgstr ""
msgid "Max Force"
msgstr ""
-#: scene/3d/vehicle_body.cpp
-#, fuzzy
-msgid "Relaxation"
-msgstr "Stillið breyting á:"
-
#: scene/3d/visibility_notifier.cpp
msgid "AABB"
msgstr ""
@@ -20381,7 +21994,7 @@ msgid "Fadeout Time"
msgstr ""
#: scene/animation/animation_blend_tree.cpp
-msgid "autorestart_"
+msgid "Auto Restart"
msgstr ""
#: scene/animation/animation_blend_tree.cpp
@@ -20460,13 +22073,6 @@ msgstr ""
msgid "Default Blend Time"
msgstr ""
-#: scene/animation/animation_player.cpp scene/animation/animation_tree.cpp
-#: scene/animation/animation_tree_player.cpp
-#: servers/audio/effects/audio_effect_delay.cpp
-#, fuzzy
-msgid "Active"
-msgstr "Allt úrvalið"
-
#: scene/animation/animation_player.cpp
msgid "Method Call Mode"
msgstr ""
@@ -20580,10 +22186,6 @@ msgstr "Anim DELETE-lyklar"
msgid "Max Iterations"
msgstr "Val á kvarða"
-#: scene/animation/tween.cpp scene/resources/texture.cpp
-msgid "Repeat"
-msgstr ""
-
#: scene/animation/tween.cpp
msgid "Playback Process Mode"
msgstr ""
@@ -20610,19 +22212,6 @@ msgstr ""
msgid "Alignment"
msgstr ""
-#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
-#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
-#: scene/resources/style_box.cpp
-#, fuzzy
-msgid "Horizontal"
-msgstr "Fjarlægja val"
-
-#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
-#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
-#: scene/resources/style_box.cpp
-msgid "Vertical"
-msgstr ""
-
#: scene/gui/base_button.cpp
msgid "Shortcut In Tooltip"
msgstr ""
@@ -20713,10 +22302,6 @@ msgid "HSV"
msgstr ""
#: scene/gui/color_picker.cpp
-msgid "Raw"
-msgstr ""
-
-#: scene/gui/color_picker.cpp
msgid "Switch between hexadecimal and code values."
msgstr ""
@@ -20770,6 +22355,30 @@ msgid "Focus"
msgstr ""
#: scene/gui/control.cpp
+msgid "Neighbour Left"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Neighbour Top"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Neighbour Right"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Neighbour Bottom"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Next"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Previous"
+msgstr ""
+
+#: scene/gui/control.cpp
msgid "Mouse"
msgstr ""
@@ -20803,7 +22412,7 @@ msgid "Dialog"
msgstr ""
#: scene/gui/dialogs.cpp
-msgid "Hide On Ok"
+msgid "Hide On OK"
msgstr ""
#: scene/gui/dialogs.cpp scene/gui/label.cpp
@@ -20891,7 +22500,7 @@ msgid "Timers"
msgstr ""
#: scene/gui/item_list.cpp scene/gui/popup_menu.cpp scene/gui/tree.cpp
-msgid "Incremental Search Max Interval (msec)"
+msgid "Incremental Search Max Interval Msec"
msgstr ""
#: scene/gui/item_list.cpp scene/gui/tree.cpp
@@ -21411,6 +23020,26 @@ msgstr "Anim DELETE-lyklar"
msgid "Nine Patch Stretch"
msgstr "Breyta Viðbót"
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Left"
+msgstr "Stillið breyting á:"
+
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Top"
+msgstr "Stillið breyting á:"
+
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Right"
+msgstr "Stillið breyting á:"
+
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Bottom"
+msgstr "Stillið breyting á:"
+
#: scene/gui/tree.cpp
msgid "Custom Minimum Height"
msgstr ""
@@ -21446,7 +23075,7 @@ msgid "Paused"
msgstr ""
#: scene/gui/video_player.cpp
-msgid "Buffering (msec)"
+msgid "Buffering Msec"
msgstr ""
#: scene/gui/video_player.cpp
@@ -21760,6 +23389,22 @@ msgid "Shadow Atlas"
msgstr ""
#: scene/main/viewport.cpp
+msgid "Quad 0"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 1"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 2"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 3"
+msgstr ""
+
+#: scene/main/viewport.cpp
#, fuzzy
msgid "Canvas Transform"
msgstr "Breyta umbreytingu"
@@ -21774,6 +23419,10 @@ msgid "Tooltip Delay (sec)"
msgstr ""
#: scene/register_scene_types.cpp
+msgid "Swap OK Cancel"
+msgstr ""
+
+#: scene/register_scene_types.cpp
msgid "Use hiDPI"
msgstr ""
@@ -21788,21 +23437,6 @@ msgid "Custom Font"
msgstr "Tvíteknir lyklar"
#: scene/resources/audio_stream_sample.cpp
-#, fuzzy
-msgid "Loop Mode"
-msgstr "Breyta Viðbót"
-
-#: scene/resources/audio_stream_sample.cpp
-#, fuzzy
-msgid "Loop Begin"
-msgstr "Breyta Viðbót"
-
-#: scene/resources/audio_stream_sample.cpp
-#, fuzzy
-msgid "Loop End"
-msgstr "Breyta Viðbót"
-
-#: scene/resources/audio_stream_sample.cpp
#: servers/audio/effects/audio_stream_generator.cpp servers/audio_server.cpp
msgid "Mix Rate"
msgstr ""
@@ -21854,6 +23488,15 @@ msgid "Extra Spacing"
msgstr ""
#: scene/resources/dynamic_font.cpp
+msgid "Char"
+msgstr ""
+
+#: scene/resources/dynamic_font.cpp scene/resources/world.cpp
+#: scene/resources/world_2d.cpp
+msgid "Space"
+msgstr ""
+
+#: scene/resources/dynamic_font.cpp
msgid "Font"
msgstr ""
@@ -22069,6 +23712,42 @@ msgid "Glow"
msgstr ""
#: scene/resources/environment.cpp
+msgid "Levels"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "1"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "2"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "3"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "4"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "5"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "6"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "7"
+msgstr ""
+
+#: scene/resources/environment.cpp
msgid "Bloom"
msgstr ""
@@ -22154,9 +23833,64 @@ msgid "Next Pass"
msgstr "Hreyfa Viðbótar Lykil"
#: scene/resources/material.cpp
+msgid "Use Shadow To Opacity"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Unshaded"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Vertex Lighting"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "No Depth Test"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Use Point Size"
+msgstr "Anim bæta við lag"
+
+#: scene/resources/material.cpp
+msgid "World Triplanar"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Fixed Size"
+msgstr "Anim bæta við lag"
+
+#: scene/resources/material.cpp
+msgid "Albedo Tex Force sRGB"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Do Not Receive Shadows"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Disable Ambient Light"
+msgstr "Óvirkt"
+
+#: scene/resources/material.cpp
+msgid "Ensure Correct Normals"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Vertex Color"
msgstr ""
+#: scene/resources/material.cpp
+msgid "Use As Albedo"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Is sRGB"
+msgstr ""
+
#: scene/resources/material.cpp servers/visual_server.cpp
msgid "Parameters"
msgstr ""
@@ -22191,6 +23925,11 @@ msgid "Billboard Mode"
msgstr "Breyta Viðbót"
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Billboard Keep Scale"
+msgstr "Breyta Viðbót"
+
+#: scene/resources/material.cpp
msgid "Grow"
msgstr ""
@@ -22200,6 +23939,10 @@ msgid "Grow Amount"
msgstr "Fjarlægja val"
#: scene/resources/material.cpp
+msgid "Use Alpha Scissor"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Alpha Scissor Threshold"
msgstr ""
@@ -22230,10 +23973,20 @@ msgid "Metallic Specular"
msgstr ""
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Metallic Texture"
+msgstr "Fjarlægja val"
+
+#: scene/resources/material.cpp
msgid "Metallic Texture Channel"
msgstr ""
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Roughness Texture"
+msgstr "Fjarlægja val"
+
+#: scene/resources/material.cpp
msgid "Roughness Texture Channel"
msgstr ""
@@ -22250,6 +24003,15 @@ msgid "Emission Operator"
msgstr ""
#: scene/resources/material.cpp
+msgid "Emission On UV2"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Emission Texture"
+msgstr "Fjarlægja val"
+
+#: scene/resources/material.cpp
msgid "NormalMap"
msgstr ""
@@ -22263,6 +24025,11 @@ msgstr ""
#: scene/resources/material.cpp
#, fuzzy
+msgid "Rim Texture"
+msgstr "Fjarlægja val"
+
+#: scene/resources/material.cpp
+#, fuzzy
msgid "Clearcoat"
msgstr "Breyta umbreytingu"
@@ -22272,15 +24039,28 @@ msgid "Clearcoat Gloss"
msgstr "Breyta umbreytingu"
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Clearcoat Texture"
+msgstr "Breyta:"
+
+#: scene/resources/material.cpp
msgid "Anisotropy"
msgstr ""
#: scene/resources/material.cpp
+msgid "Anisotropy Flowmap"
+msgstr ""
+
+#: scene/resources/material.cpp
#, fuzzy
msgid "Ambient Occlusion"
msgstr "Breyta Viðbót"
#: scene/resources/material.cpp
+msgid "On UV2"
+msgstr ""
+
+#: scene/resources/material.cpp
#, fuzzy
msgid "Texture Channel"
msgstr "Óvirkt"
@@ -22317,6 +24097,11 @@ msgstr "Stillið breyting á:"
#: scene/resources/material.cpp
#, fuzzy
+msgid "Transmission Texture"
+msgstr "Stillið breyting á:"
+
+#: scene/resources/material.cpp
+#, fuzzy
msgid "Refraction"
msgstr "Stillið breyting á:"
@@ -22333,6 +24118,10 @@ msgid "UV1"
msgstr ""
#: scene/resources/material.cpp
+msgid "Triplanar"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Triplanar Sharpness"
msgstr ""
@@ -22526,6 +24315,15 @@ msgstr "Breyta:"
msgid "Point Count"
msgstr "Stillið breyting á:"
+#: scene/resources/particles_material.cpp
+msgid "Scale Random"
+msgstr ""
+
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Scale Curve"
+msgstr "Breyta hnútnum Ferill"
+
#: scene/resources/physics_material.cpp
msgid "Rough"
msgstr ""
@@ -22583,10 +24381,6 @@ msgid "A"
msgstr ""
#: scene/resources/shader.cpp
-msgid "Code"
-msgstr ""
-
-#: scene/resources/shader.cpp
msgid "Custom Defines"
msgstr ""
@@ -22675,14 +24469,6 @@ msgid "Grow End"
msgstr ""
#: scene/resources/texture.cpp
-msgid "Storage"
-msgstr ""
-
-#: scene/resources/texture.cpp
-msgid "Lossy Quality"
-msgstr ""
-
-#: scene/resources/texture.cpp
msgid "Load Path"
msgstr ""
@@ -22798,10 +24584,6 @@ msgstr ""
msgid "Fallback Environment"
msgstr ""
-#: scene/resources/world.cpp scene/resources/world_2d.cpp
-msgid "Space"
-msgstr ""
-
#: scene/resources/world.cpp
msgid "Scenario"
msgstr ""
@@ -22875,8 +24657,34 @@ msgstr ""
msgid "Wet"
msgstr ""
-#: servers/audio/effects/audio_effect_compressor.cpp
-msgid "Threshold"
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "Voice"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+msgid "Delay (ms)"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_phaser.cpp
+msgid "Rate Hz"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#, fuzzy
+msgid "Depth (ms)"
+msgstr "Val á kvarða"
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+msgid "Level dB"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+#: servers/audio/effects/audio_effect_panner.cpp
+msgid "Pan"
msgstr ""
#: servers/audio/effects/audio_effect_compressor.cpp
@@ -22901,19 +24709,6 @@ msgid "Tap 1"
msgstr ""
#: servers/audio/effects/audio_effect_delay.cpp
-msgid "Delay (ms)"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_delay.cpp
-msgid "Level dB"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_delay.cpp
-#: servers/audio/effects/audio_effect_panner.cpp
-msgid "Pan"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_delay.cpp
msgid "Tap 2"
msgstr ""
@@ -22971,10 +24766,6 @@ msgstr ""
msgid "Range Max Hz"
msgstr ""
-#: servers/audio/effects/audio_effect_phaser.cpp
-msgid "Rate Hz"
-msgstr ""
-
#: servers/audio/effects/audio_effect_pitch_shift.cpp
msgid "Oversampling"
msgstr ""
@@ -22989,7 +24780,7 @@ msgid "Predelay"
msgstr ""
#: servers/audio/effects/audio_effect_reverb.cpp
-msgid "(msec)"
+msgid "Msec"
msgstr ""
#: servers/audio/effects/audio_effect_reverb.cpp
diff --git a/editor/translations/it.po b/editor/translations/it.po
index f926fa7ce2..f92061c168 100644
--- a/editor/translations/it.po
+++ b/editor/translations/it.po
@@ -67,13 +67,14 @@
# Pietro Grungo <pietro.grungo@libero.it>, 2021.
# Alfonso Scarpino <alfonso.scarpino@gmail.com>, 2022.
# Federico Caprini <caprinifede@gmail.com>, 2022.
+# Alessandro Casalino <alessandro.casalino93@gmail.com>, 2022.
msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
"Report-Msgid-Bugs-To: https://github.com/godotengine/godot\n"
"POT-Creation-Date: \n"
-"PO-Revision-Date: 2022-02-23 17:54+0000\n"
-"Last-Translator: Federico Caprini <caprinifede@gmail.com>\n"
+"PO-Revision-Date: 2022-03-28 23:08+0000\n"
+"Last-Translator: Alessandro Casalino <alessandro.casalino93@gmail.com>\n"
"Language-Team: Italian <https://hosted.weblate.org/projects/godot-engine/"
"godot/it/>\n"
"Language: it\n"
@@ -81,177 +82,155 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Generator: Weblate 4.11-dev\n"
+"X-Generator: Weblate 4.12-dev\n"
-#: core/bind/core_bind.cpp
+#: core/bind/core_bind.cpp main/main.cpp
msgid "Tablet Driver"
-msgstr ""
+msgstr "Tablet Driver"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Clipboard"
-msgstr "Gli appunti sono vuoti!"
+msgstr "Appunti"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Current Screen"
-msgstr "Scena Corrente"
+msgstr "Schermo Attuale"
#: core/bind/core_bind.cpp
msgid "Exit Code"
-msgstr ""
+msgstr "Codice d'Uscita"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "V-Sync Enabled"
-msgstr "Abilita"
+msgstr "V-Sync Attivo"
#: core/bind/core_bind.cpp main/main.cpp
msgid "V-Sync Via Compositor"
-msgstr ""
+msgstr "V-Sync da Compositor"
#: core/bind/core_bind.cpp main/main.cpp
msgid "Delta Smoothing"
-msgstr ""
+msgstr "Delta Smoothing"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Low Processor Usage Mode"
-msgstr "Modalità spostamento"
+msgstr "Modalità Processore a Basso Consumo"
#: core/bind/core_bind.cpp
msgid "Low Processor Usage Mode Sleep (µsec)"
-msgstr ""
+msgstr "Durata Modalità Processore a Basso Consumo (µsec)"
#: core/bind/core_bind.cpp main/main.cpp platform/uwp/os_uwp.cpp
-#, fuzzy
msgid "Keep Screen On"
-msgstr "Mantieni il debugger aperto"
+msgstr "Mantieni lo Schermo Acceso"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Min Window Size"
-msgstr "Dimensione Outline:"
+msgstr "Dimensione Minima Finestra"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Max Window Size"
-msgstr "Dimensione Outline:"
+msgstr "Dimensione Massima Finestra"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Screen Orientation"
-msgstr "Operatore schermo."
+msgstr "Orientazione Schermo"
#: core/bind/core_bind.cpp main/main.cpp platform/uwp/os_uwp.cpp
-#, fuzzy
msgid "Window"
-msgstr "Nuova Finestra"
+msgstr "Finestra"
#: core/bind/core_bind.cpp main/main.cpp
-#, fuzzy
msgid "Borderless"
-msgstr "Pixel del Bordo"
+msgstr "Senza contorno"
#: core/bind/core_bind.cpp
msgid "Per Pixel Transparency Enabled"
-msgstr ""
+msgstr "Trasparenza A Livello Di Pixel Abilitata"
#: core/bind/core_bind.cpp main/main.cpp
-#, fuzzy
msgid "Fullscreen"
-msgstr "Commuta la modalità a schermo intero"
+msgstr "Schermo intero"
#: core/bind/core_bind.cpp
msgid "Maximized"
-msgstr ""
+msgstr "Massimizzata"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Minimized"
-msgstr "Inizializza"
+msgstr "Minimizzata"
#: core/bind/core_bind.cpp main/main.cpp scene/gui/dialogs.cpp
#: scene/gui/graph_node.cpp
msgid "Resizable"
-msgstr ""
+msgstr "Ridimensionabile"
#: core/bind/core_bind.cpp core/os/input_event.cpp scene/2d/node_2d.cpp
#: scene/2d/physics_body_2d.cpp scene/2d/remote_transform_2d.cpp
#: scene/3d/physics_body.cpp scene/3d/remote_transform.cpp
#: scene/gui/control.cpp scene/gui/line_edit.cpp
-#, fuzzy
msgid "Position"
-msgstr "Posizione del pannello"
+msgstr "Posizione"
#: core/bind/core_bind.cpp editor/editor_settings.cpp main/main.cpp
#: modules/gdscript/gdscript_editor.cpp modules/gridmap/grid_map.cpp
#: modules/mono/csharp_script.cpp modules/visual_script/visual_script_nodes.cpp
-#: scene/2d/tile_map.cpp scene/3d/camera.cpp scene/gui/control.cpp
-#: scene/gui/graph_edit.cpp scene/main/viewport.cpp
+#: scene/2d/tile_map.cpp scene/3d/camera.cpp scene/3d/light.cpp
+#: scene/gui/control.cpp scene/gui/graph_edit.cpp scene/main/viewport.cpp
#: scene/resources/dynamic_font.cpp scene/resources/navigation_mesh.cpp
#: scene/resources/primitive_meshes.cpp scene/resources/sky.cpp
#: scene/resources/style_box.cpp scene/resources/texture.cpp
#: scene/resources/visual_shader.cpp servers/visual_server.cpp
-#, fuzzy
msgid "Size"
-msgstr "Dimensione:"
+msgstr "Dimensione"
#: core/bind/core_bind.cpp
msgid "Endian Swap"
-msgstr ""
+msgstr "Endian Swap"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Editor Hint"
-msgstr "Editor"
+msgstr "Suggerimento Editor"
#: core/bind/core_bind.cpp
msgid "Print Error Messages"
-msgstr ""
+msgstr "Messaggi di Errore di Stampa"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Iterations Per Second"
-msgstr "Modalità d'interpolazione"
+msgstr "Iterazioni al Secondo"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Target FPS"
-msgstr "Target"
+msgstr "Target FPS"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Time Scale"
-msgstr "Nodo TimeScale"
+msgstr "Scala Temporale"
#: core/bind/core_bind.cpp main/main.cpp
-#, fuzzy
msgid "Physics Jitter Fix"
-msgstr "Fotogramma fisico %"
+msgstr "Ripara Instabilità Fisica"
#: core/bind/core_bind.cpp editor/plugins/version_control_editor_plugin.cpp
msgid "Error"
msgstr "Errore"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Error String"
-msgstr "Errore di salvataggio"
+msgstr "Stringa di Errore"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Error Line"
-msgstr "Errore di salvataggio"
+msgstr "Linea di Errore"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Result"
-msgstr "Risultati Ricerca"
+msgstr "Risultati"
#: core/command_queue_mt.cpp core/message_queue.cpp main/main.cpp
msgid "Memory"
-msgstr ""
+msgstr "Memoria"
#: core/command_queue_mt.cpp core/message_queue.cpp
#: core/register_core_types.cpp drivers/gles2/rasterizer_canvas_base_gles2.cpp
@@ -261,22 +240,20 @@ msgstr ""
#: drivers/gles3/rasterizer_storage_gles3.cpp main/main.cpp
#: servers/visual_server.cpp
msgid "Limits"
-msgstr ""
+msgstr "Limiti"
#: core/command_queue_mt.cpp
-#, fuzzy
msgid "Command Queue"
-msgstr "Command: Ruota"
+msgstr "Coda dei Comandi"
#: core/command_queue_mt.cpp
msgid "Multithreading Queue Size (KB)"
-msgstr ""
+msgstr "Dimensione Coda Multithreading (KB)"
#: core/func_ref.cpp modules/visual_script/visual_script_builtin_funcs.cpp
#: modules/visual_script/visual_script_func_nodes.cpp
#: modules/visual_script/visual_script_nodes.cpp
#: scene/resources/visual_shader_nodes.cpp
-#, fuzzy
msgid "Function"
msgstr "Funzioni"
@@ -288,111 +265,98 @@ msgstr "Funzioni"
#: scene/resources/audio_stream_sample.cpp scene/resources/bit_map.cpp
#: scene/resources/concave_polygon_shape.cpp scene/resources/curve.cpp
#: scene/resources/polygon_path_finder.cpp scene/resources/texture.cpp
-#, fuzzy
msgid "Data"
-msgstr "Con i Dati"
+msgstr "Dati"
#: core/io/file_access_network.cpp core/register_core_types.cpp
-#: editor/editor_settings.cpp editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp main/main.cpp
+#: editor/editor_settings.cpp main/main.cpp
#: modules/gdscript/language_server/gdscript_language_server.cpp
-#, fuzzy
msgid "Network"
-msgstr "Profiler di Rete"
+msgstr "Reti"
#: core/io/file_access_network.cpp
-#, fuzzy
msgid "Remote FS"
-msgstr "Remoto "
+msgstr "FS Remoto"
#: core/io/file_access_network.cpp
-#, fuzzy
msgid "Page Size"
-msgstr "Pagina: "
+msgstr "Dimensione Pagina"
#: core/io/file_access_network.cpp
msgid "Page Read Ahead"
-msgstr ""
+msgstr "Lettura Anticipata Pagine"
#: core/io/http_client.cpp
msgid "Blocking Mode Enabled"
-msgstr ""
+msgstr "Modalità Blocco Attivata"
#: core/io/http_client.cpp
-#, fuzzy
msgid "Connection"
-msgstr "Connetti"
+msgstr "Connessione"
#: core/io/http_client.cpp
msgid "Read Chunk Size"
-msgstr ""
+msgstr "Leggi Dimensione Chunk"
#: core/io/marshalls.cpp
-#, fuzzy
msgid "Object ID"
-msgstr "Oggetti disegnati:"
+msgstr "ID degli Oggetti"
#: core/io/multiplayer_api.cpp core/io/packet_peer.cpp
-#, fuzzy
msgid "Allow Object Decoding"
-msgstr "Abilita l'Onion Skinning"
+msgstr "Permetti l'Object Decoding"
#: core/io/multiplayer_api.cpp scene/main/scene_tree.cpp
msgid "Refuse New Network Connections"
-msgstr ""
+msgstr "Rifiuta Nuove Connessioni Network"
#: core/io/multiplayer_api.cpp scene/main/scene_tree.cpp
-#, fuzzy
msgid "Network Peer"
-msgstr "Profiler di Rete"
+msgstr "Peer di Rete"
#: core/io/multiplayer_api.cpp scene/animation/animation_player.cpp
-#, fuzzy
msgid "Root Node"
-msgstr "Nome del nodo radice"
+msgstr "Nodo Radice"
#: core/io/networked_multiplayer_peer.cpp
-#, fuzzy
msgid "Refuse New Connections"
-msgstr "Connetti"
+msgstr "Rifiuta Nuove Connessioni"
#: core/io/networked_multiplayer_peer.cpp
-#, fuzzy
msgid "Transfer Mode"
-msgstr "Tipo Transform"
+msgstr "Modalità Trasferimento"
#: core/io/packet_peer.cpp
msgid "Encode Buffer Max Size"
-msgstr ""
+msgstr "Dimensione Massima Encode Buffer"
#: core/io/packet_peer.cpp
msgid "Input Buffer Max Size"
-msgstr ""
+msgstr "Dimensione Massima Input Buffer"
#: core/io/packet_peer.cpp
msgid "Output Buffer Max Size"
-msgstr ""
+msgstr "Dimensione Massima Output Buffer"
#: core/io/packet_peer.cpp
msgid "Stream Peer"
-msgstr ""
+msgstr "Stream Peer"
#: core/io/stream_peer.cpp
msgid "Big Endian"
-msgstr ""
+msgstr "Big Endian"
#: core/io/stream_peer.cpp
msgid "Data Array"
-msgstr ""
+msgstr "Array di Dati"
#: core/io/stream_peer_ssl.cpp
msgid "Blocking Handshake"
-msgstr ""
+msgstr "Blocco Handshake"
#: core/io/udp_server.cpp
-#, fuzzy
msgid "Max Pending Connections"
-msgstr "Modifica una connessione:"
+msgstr "Quantità Massima Connessioni in Attesa"
#: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp
#: modules/visual_script/visual_script_builtin_funcs.cpp
@@ -435,25 +399,24 @@ msgstr "Argomenti non validi per costruire \"%s\""
#: core/math/expression.cpp
msgid "On call to '%s':"
-msgstr "Alla chiamata di \"%s\":"
+msgstr "Alla chiamata di '%s':"
#: core/math/random_number_generator.cpp
#: modules/opensimplex/open_simplex_noise.cpp
msgid "Seed"
-msgstr ""
+msgstr "Seed"
#: core/math/random_number_generator.cpp
-#, fuzzy
msgid "State"
msgstr "Stato"
#: core/message_queue.cpp
msgid "Message Queue"
-msgstr ""
+msgstr "Coda Messaggi"
#: core/message_queue.cpp
msgid "Max Size (KB)"
-msgstr ""
+msgstr "Dimensione Massima (KB)"
#: core/os/input.cpp editor/editor_help.cpp editor/editor_settings.cpp
#: editor/plugins/script_editor_plugin.cpp
@@ -465,9 +428,8 @@ msgstr ""
#: modules/mono/csharp_script.cpp scene/animation/animation_player.cpp
#: scene/gui/control.cpp scene/gui/line_edit.cpp scene/main/node.cpp
#: scene/resources/material.cpp
-#, fuzzy
msgid "Text Editor"
-msgstr "Apri Editor"
+msgstr "Editor di Testo"
#: core/os/input.cpp editor/editor_settings.cpp
#: editor/plugins/script_text_editor.cpp modules/gdscript/gdscript.cpp
@@ -475,18 +437,16 @@ msgstr "Apri Editor"
#: modules/gdscript/language_server/gdscript_text_document.cpp
#: scene/animation/animation_player.cpp scene/gui/control.cpp
#: scene/main/node.cpp scene/resources/material.cpp
-#, fuzzy
msgid "Completion"
-msgstr "Copia selezione"
+msgstr "Completamento"
#: core/os/input.cpp editor/editor_settings.cpp
#: editor/plugins/script_text_editor.cpp modules/gdscript/gdscript_editor.cpp
#: modules/gdscript/language_server/gdscript_text_document.cpp
#: scene/animation/animation_player.cpp scene/gui/control.cpp
#: scene/main/node.cpp scene/resources/material.cpp
-#, fuzzy
msgid "Use Single Quotes"
-msgstr "Nuovo Tile Singolo"
+msgstr "Usa Apici Singoli"
#: core/os/input_event.cpp editor/project_settings_editor.cpp
#: servers/audio_server.cpp
@@ -494,96 +454,84 @@ msgid "Device"
msgstr "Dispositivo"
#: core/os/input_event.cpp
-#, fuzzy
msgid "Alt"
-msgstr "Tutto"
+msgstr "Alt"
#: core/os/input_event.cpp
msgid "Shift"
-msgstr ""
+msgstr "Shift"
#: core/os/input_event.cpp
-#, fuzzy
msgid "Control"
-msgstr "Controllo della versione"
+msgstr "Control"
#: core/os/input_event.cpp
msgid "Meta"
-msgstr ""
+msgstr "Meta"
#: core/os/input_event.cpp
-#, fuzzy
msgid "Command"
-msgstr "Comunità"
+msgstr "Comando"
#: core/os/input_event.cpp scene/2d/touch_screen_button.cpp
#: scene/gui/base_button.cpp scene/gui/texture_button.cpp
-#, fuzzy
msgid "Pressed"
-msgstr "Preimpostazione"
+msgstr "Premuto"
#: core/os/input_event.cpp
-#, fuzzy
msgid "Scancode"
-msgstr "Scansiona"
+msgstr "Scansione Codice"
#: core/os/input_event.cpp
-#, fuzzy
msgid "Physical Scancode"
-msgstr "Tasto Fisico"
+msgstr "Scancode Fisico"
#: core/os/input_event.cpp
msgid "Unicode"
-msgstr ""
+msgstr "Unicode"
#: core/os/input_event.cpp
msgid "Echo"
-msgstr ""
+msgstr "Echo"
#: core/os/input_event.cpp scene/gui/base_button.cpp
-#, fuzzy
msgid "Button Mask"
-msgstr "Pulsante"
+msgstr "Maschera Pulsante"
#: core/os/input_event.cpp scene/2d/node_2d.cpp scene/gui/control.cpp
-#, fuzzy
msgid "Global Position"
-msgstr "Costante"
+msgstr "Posizione Globale"
#: core/os/input_event.cpp
-#, fuzzy
msgid "Factor"
-msgstr "Vettore"
+msgstr "Coefficiente"
#: core/os/input_event.cpp
-#, fuzzy
msgid "Button Index"
-msgstr "Indice Pulsante Mouse:"
+msgstr "Indice Pulsante Mouse"
#: core/os/input_event.cpp
msgid "Doubleclick"
-msgstr ""
+msgstr "Doppio click"
#: core/os/input_event.cpp
msgid "Tilt"
-msgstr ""
+msgstr "Tilt"
#: core/os/input_event.cpp
-#, fuzzy
msgid "Pressure"
-msgstr "Preimpostazione"
+msgstr "Pressione"
#: core/os/input_event.cpp
-#, fuzzy
msgid "Relative"
-msgstr "Scatti relativi"
+msgstr "Relativo"
-#: core/os/input_event.cpp scene/2d/camera_2d.cpp
-#: scene/3d/interpolated_camera.cpp scene/animation/animation_player.cpp
-#: scene/resources/environment.cpp
-#, fuzzy
+#: core/os/input_event.cpp scene/2d/camera_2d.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/interpolated_camera.cpp
+#: scene/animation/animation_player.cpp scene/resources/environment.cpp
+#: scene/resources/particles_material.cpp
msgid "Speed"
-msgstr "Velocità:"
+msgstr "Velocità"
#: core/os/input_event.cpp editor/project_settings_editor.cpp
#: scene/3d/sprite_3d.cpp
@@ -591,91 +539,86 @@ msgid "Axis"
msgstr "Asse"
#: core/os/input_event.cpp
-#, fuzzy
msgid "Axis Value"
-msgstr "Fissa valore"
+msgstr "Valore Asse"
#: core/os/input_event.cpp modules/visual_script/visual_script_func_nodes.cpp
-#, fuzzy
msgid "Index"
-msgstr "Indice:"
+msgstr "Indice"
#: core/os/input_event.cpp editor/project_settings_editor.cpp
#: modules/visual_script/visual_script_nodes.cpp
#: scene/2d/touch_screen_button.cpp
-#, fuzzy
msgid "Action"
msgstr "Azione"
#: core/os/input_event.cpp scene/resources/environment.cpp
#: scene/resources/material.cpp
msgid "Strength"
-msgstr ""
+msgstr "Intensità"
#: core/os/input_event.cpp
msgid "Delta"
-msgstr ""
+msgstr "Delta"
#: core/os/input_event.cpp
-#, fuzzy
msgid "Channel"
-msgstr "Cambia"
+msgstr "Canale"
#: core/os/input_event.cpp main/main.cpp
-#, fuzzy
msgid "Message"
-msgstr "Commit Modifiche"
+msgstr "Messaggio"
#: core/os/input_event.cpp
-#, fuzzy
msgid "Pitch"
-msgstr "Inclinazione:"
+msgstr "Altezza"
-#: core/os/input_event.cpp scene/2d/physics_body_2d.cpp
-#: scene/3d/physics_body.cpp
-#, fuzzy
+#: core/os/input_event.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/physics_body_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/3d/physics_body.cpp scene/resources/particles_material.cpp
msgid "Velocity"
-msgstr "Orbita la visuale a destra"
+msgstr "Velocità"
#: core/os/input_event.cpp
msgid "Instrument"
-msgstr ""
+msgstr "Strumento"
#: core/os/input_event.cpp
-#, fuzzy
msgid "Controller Number"
-msgstr "Numero della linea:"
+msgstr "Numero Controller"
#: core/os/input_event.cpp
msgid "Controller Value"
-msgstr ""
+msgstr "Valore Controller"
#: core/project_settings.cpp editor/editor_node.cpp main/main.cpp
-#, fuzzy
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/windows/export/export.cpp
msgid "Application"
-msgstr "Azione"
+msgstr "Applicazione"
#: core/project_settings.cpp main/main.cpp
-#, fuzzy
msgid "Config"
-msgstr "Configura lo scatto"
+msgstr "Configurazione"
#: core/project_settings.cpp
-#, fuzzy
msgid "Project Settings Override"
-msgstr "Impostazioni del progetto…"
+msgstr "Sovrascrittura Impostazioni del Progetto"
#: core/project_settings.cpp core/resource.cpp
#: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp
#: editor/editor_plugin_settings.cpp editor/editor_profiler.cpp
#: editor/project_manager.cpp editor/settings_config_dialog.cpp
-#: modules/gdnative/nativescript/nativescript.cpp scene/2d/area_2d.cpp
-#: scene/3d/area.cpp scene/main/node.cpp
+#: modules/gdnative/nativescript/nativescript.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/osx/export/export.cpp scene/2d/area_2d.cpp scene/3d/area.cpp
+#: scene/main/node.cpp
msgid "Name"
msgstr "Nome"
#: core/project_settings.cpp editor/editor_help.cpp
-#: modules/visual_script/visual_script_nodes.cpp
+#: modules/visual_script/visual_script_nodes.cpp platform/uwp/export/export.cpp
+#: platform/windows/export/export.cpp
msgid "Description"
msgstr "Descrizione"
@@ -691,36 +634,33 @@ msgid "Main Scene"
msgstr "Scena Principale"
#: core/project_settings.cpp
-#, fuzzy
msgid "Disable stdout"
-msgstr "Disabilita Autotile"
+msgstr "Disabilita stdout"
#: core/project_settings.cpp
-#, fuzzy
msgid "Disable stderr"
-msgstr "Oggetto disabilitato"
+msgstr "Disabilita stderr"
#: core/project_settings.cpp
msgid "Use Hidden Project Data Directory"
-msgstr ""
+msgstr "Utilizza Percorso Nascosto dei Dati del Progetto"
#: core/project_settings.cpp
msgid "Use Custom User Dir"
-msgstr ""
+msgstr "Utilizza Percorso Utente Personalizzato"
#: core/project_settings.cpp
msgid "Custom User Dir Name"
-msgstr ""
+msgstr "Nome Personalizzato del Percorso Utente"
#: core/project_settings.cpp editor/animation_track_editor.cpp
-#: editor/editor_audio_buses.cpp servers/audio_server.cpp
+#: editor/editor_audio_buses.cpp main/main.cpp servers/audio_server.cpp
msgid "Audio"
msgstr "Audio"
#: core/project_settings.cpp
-#, fuzzy
msgid "Default Bus Layout"
-msgstr "Carica la disposizione di bus predefinita."
+msgstr "Disposizione di Bus Predefinita"
#: core/project_settings.cpp editor/editor_export.cpp
#: editor/editor_file_system.cpp editor/editor_node.cpp
@@ -730,17 +670,16 @@ msgid "Editor"
msgstr "Editor"
#: core/project_settings.cpp
-#, fuzzy
msgid "Main Run Args"
-msgstr "Argomenti Scena Principale:"
+msgstr "Parametri Principali Eseguiti"
#: core/project_settings.cpp
msgid "Search In File Extensions"
-msgstr ""
+msgstr "Cerca nelle Estensioni dei File"
#: core/project_settings.cpp
msgid "Script Templates Search Path"
-msgstr ""
+msgstr "Percorso di Ricerca dei Template di Script"
#: core/project_settings.cpp editor/editor_node.cpp
#: editor/plugins/version_control_editor_plugin.cpp
@@ -749,79 +688,68 @@ msgstr "Controllo della versione"
#: core/project_settings.cpp
msgid "Autoload On Startup"
-msgstr ""
+msgstr "Autocaricamento all'Avvio"
#: core/project_settings.cpp
-#, fuzzy
msgid "Plugin Name"
-msgstr "Nome dell'estensione:"
+msgstr "Nome dell'estensione"
#: core/project_settings.cpp scene/2d/collision_object_2d.cpp
#: scene/3d/collision_object.cpp scene/gui/control.cpp
-#, fuzzy
msgid "Input"
-msgstr "Aggiungi Input"
+msgstr "Input"
#: core/project_settings.cpp
msgid "UI Accept"
-msgstr ""
+msgstr "UI Accetta"
#: core/project_settings.cpp
-#, fuzzy
msgid "UI Select"
-msgstr "Seleziona"
+msgstr "UI Seleziona"
#: core/project_settings.cpp
-#, fuzzy
msgid "UI Cancel"
-msgstr "Annulla"
+msgstr "UI Annulla"
#: core/project_settings.cpp
-#, fuzzy
msgid "UI Focus Next"
-msgstr "Metti a fuoco il percorso"
+msgstr "UI Focalizza il Successivo"
#: core/project_settings.cpp
-#, fuzzy
msgid "UI Focus Prev"
-msgstr "Metti a fuoco il percorso"
+msgstr "UI Focalizza il Precedente"
#: core/project_settings.cpp
-#, fuzzy
msgid "UI Left"
-msgstr "In Alto A Sinistra"
+msgstr "UI Sinistra"
#: core/project_settings.cpp
-#, fuzzy
msgid "UI Right"
-msgstr "In Alto A Destra"
+msgstr "UI Destra"
#: core/project_settings.cpp
msgid "UI Up"
-msgstr ""
+msgstr "UI Su"
#: core/project_settings.cpp
-#, fuzzy
msgid "UI Down"
-msgstr "In entrata"
+msgstr "UI Giù"
#: core/project_settings.cpp
-#, fuzzy
msgid "UI Page Up"
-msgstr "Pagina: "
+msgstr "UI Page Up"
#: core/project_settings.cpp
msgid "UI Page Down"
-msgstr ""
+msgstr "UI Pagina Giù"
#: core/project_settings.cpp
msgid "UI Home"
-msgstr ""
+msgstr "UI Home"
#: core/project_settings.cpp
-#, fuzzy
msgid "UI End"
-msgstr "Alla Fine"
+msgstr "UI Fine"
#: core/project_settings.cpp main/main.cpp modules/bullet/register_types.cpp
#: modules/bullet/space_bullet.cpp scene/2d/physics_body_2d.cpp
@@ -830,9 +758,8 @@ msgstr "Alla Fine"
#: servers/physics/space_sw.cpp servers/physics_2d/physics_2d_server_sw.cpp
#: servers/physics_2d/physics_2d_server_wrap_mt.h
#: servers/physics_2d/space_2d_sw.cpp
-#, fuzzy
msgid "Physics"
-msgstr " (Fisico)"
+msgstr "Fisica"
#: core/project_settings.cpp editor/editor_settings.cpp
#: editor/plugins/spatial_editor_plugin.cpp main/main.cpp
@@ -840,12 +767,11 @@ msgstr " (Fisico)"
#: scene/3d/physics_body.cpp scene/resources/world.cpp
#: servers/physics/space_sw.cpp
msgid "3D"
-msgstr ""
+msgstr "3D"
#: core/project_settings.cpp
-#, fuzzy
msgid "Smooth Trimesh Collision"
-msgstr "Crea Fratello di Collisione Trimesh"
+msgstr "Smooth Trimesh Collision"
#: core/project_settings.cpp drivers/gles2/rasterizer_canvas_base_gles2.cpp
#: drivers/gles2/rasterizer_scene_gles2.cpp
@@ -856,9 +782,8 @@ msgstr "Crea Fratello di Collisione Trimesh"
#: modules/lightmapper_cpu/register_types.cpp scene/main/scene_tree.cpp
#: scene/main/viewport.cpp servers/visual/visual_server_scene.cpp
#: servers/visual_server.cpp
-#, fuzzy
msgid "Rendering"
-msgstr "Renderer:"
+msgstr "Renderer"
#: core/project_settings.cpp drivers/gles2/rasterizer_storage_gles2.cpp
#: drivers/gles3/rasterizer_scene_gles3.cpp
@@ -868,23 +793,25 @@ msgstr "Renderer:"
#: scene/resources/multimesh.cpp servers/visual/visual_server_scene.cpp
#: servers/visual_server.cpp
msgid "Quality"
-msgstr ""
+msgstr "Qualità"
#: core/project_settings.cpp scene/animation/animation_tree.cpp
#: scene/gui/file_dialog.cpp scene/main/scene_tree.cpp
#: servers/visual_server.cpp
-#, fuzzy
msgid "Filters"
-msgstr "Filtri:"
+msgstr "Filtri"
#: core/project_settings.cpp scene/main/viewport.cpp
msgid "Sharpen Intensity"
-msgstr ""
+msgstr "Affina Intensità"
-#: core/project_settings.cpp editor/editor_node.cpp editor/editor_settings.cpp
-#: editor/plugins/script_editor_plugin.cpp editor/project_export.cpp
-#: main/main.cpp modules/gdscript/gdscript.cpp
-#: modules/visual_script/visual_script.cpp scene/3d/room_manager.cpp
+#: core/project_settings.cpp editor/editor_export.cpp editor/editor_node.cpp
+#: editor/editor_settings.cpp editor/plugins/script_editor_plugin.cpp
+#: editor/project_export.cpp main/main.cpp modules/gdscript/gdscript.cpp
+#: modules/visual_script/visual_script.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp scene/3d/room_manager.cpp
#: scene/main/scene_tree.cpp scene/resources/shape_2d.cpp
#: servers/visual_server.cpp
msgid "Debug"
@@ -892,9 +819,8 @@ msgstr "Debug"
#: core/project_settings.cpp main/main.cpp modules/gdscript/gdscript.cpp
#: modules/visual_script/visual_script.cpp scene/resources/dynamic_font.cpp
-#, fuzzy
msgid "Settings"
-msgstr "Impostazioni:"
+msgstr "Impostazioni"
#: core/project_settings.cpp editor/script_editor_debugger.cpp main/main.cpp
#: modules/mono/mono_gd/gd_mono.cpp
@@ -902,77 +828,72 @@ msgid "Profiler"
msgstr "Profiler"
#: core/project_settings.cpp
-#, fuzzy
msgid "Max Functions"
-msgstr "Crea funzione"
+msgstr "Quantità Massima Funzioni"
#: core/project_settings.cpp scene/3d/vehicle_body.cpp
-#, fuzzy
msgid "Compression"
-msgstr "Cambia espressione"
+msgstr "Compressione"
#: core/project_settings.cpp
-#, fuzzy
msgid "Formats"
msgstr "Formato"
#: core/project_settings.cpp
msgid "Zstd"
-msgstr ""
+msgstr "Zstd"
#: core/project_settings.cpp
msgid "Long Distance Matching"
-msgstr ""
+msgstr "Corrispondenza a Lunga Distanza"
#: core/project_settings.cpp
msgid "Compression Level"
-msgstr ""
+msgstr "Livello Compressione"
#: core/project_settings.cpp
msgid "Window Log Size"
-msgstr ""
+msgstr "Dimensione Finestra di Log"
#: core/project_settings.cpp
msgid "Zlib"
-msgstr ""
+msgstr "Zlib"
#: core/project_settings.cpp
msgid "Gzip"
-msgstr ""
+msgstr "Gzip"
#: core/project_settings.cpp platform/android/export/export.cpp
msgid "Android"
-msgstr ""
+msgstr "Android"
#: core/project_settings.cpp
msgid "Modules"
-msgstr ""
+msgstr "Moduli"
#: core/register_core_types.cpp
msgid "TCP"
-msgstr ""
+msgstr "TCP"
#: core/register_core_types.cpp
-#, fuzzy
msgid "Connect Timeout Seconds"
-msgstr "Connessioni al metodo:"
+msgstr "Secondi di Timeout di Connessione"
#: core/register_core_types.cpp
msgid "Packet Peer Stream"
-msgstr ""
+msgstr "Flusso di Trasferimento Pacchetti"
#: core/register_core_types.cpp
msgid "Max Buffer (Power of 2)"
-msgstr ""
+msgstr "Buffer Massimo (Potenza di 2)"
#: core/register_core_types.cpp editor/editor_settings.cpp main/main.cpp
msgid "SSL"
-msgstr ""
+msgstr "SSL"
#: core/register_core_types.cpp main/main.cpp
-#, fuzzy
msgid "Certificates"
-msgstr "Vertici:"
+msgstr "Certificati"
#: core/resource.cpp editor/dependency_editor.cpp
#: editor/editor_resource_picker.cpp
@@ -981,9 +902,8 @@ msgid "Resource"
msgstr "Risorsa"
#: core/resource.cpp
-#, fuzzy
msgid "Local To Scene"
-msgstr "Chiudi la scena"
+msgstr "Da Locale A Scena"
#: core/resource.cpp editor/dependency_editor.cpp
#: editor/editor_autoload_settings.cpp editor/plugins/path_editor_plugin.cpp
@@ -993,27 +913,24 @@ msgid "Path"
msgstr "Percorso"
#: core/script_language.cpp
-#, fuzzy
msgid "Source Code"
-msgstr "Sorgente"
+msgstr "Codice Sorgente"
#: core/translation.cpp
-#, fuzzy
msgid "Messages"
-msgstr "Commit Modifiche"
+msgstr "Messaggi"
#: core/translation.cpp editor/project_settings_editor.cpp
msgid "Locale"
msgstr "Locale"
#: core/translation.cpp
-#, fuzzy
msgid "Test"
msgstr "Testing"
#: core/translation.cpp scene/resources/font.cpp
msgid "Fallback"
-msgstr ""
+msgstr "Fallback"
#: core/ustring.cpp scene/resources/segment_shape_2d.cpp
msgid "B"
@@ -1049,17 +966,17 @@ msgstr "EiB"
#: drivers/gles3/rasterizer_scene_gles3.cpp
#: drivers/gles3/rasterizer_storage_gles3.cpp modules/gltf/gltf_state.cpp
msgid "Buffers"
-msgstr ""
+msgstr "Buffers"
#: drivers/gles2/rasterizer_canvas_base_gles2.cpp
#: drivers/gles3/rasterizer_canvas_base_gles3.cpp
msgid "Canvas Polygon Buffer Size (KB)"
-msgstr ""
+msgstr "Dimensione Buffer dei Poligoni nel Canvas (KB)"
#: drivers/gles2/rasterizer_canvas_base_gles2.cpp
#: drivers/gles3/rasterizer_canvas_base_gles3.cpp
msgid "Canvas Polygon Index Buffer Size (KB)"
-msgstr ""
+msgstr "Dimensione Index Buffer dei Poligoni nel Canvas (KB)"
#: drivers/gles2/rasterizer_canvas_base_gles2.cpp
#: drivers/gles3/rasterizer_canvas_base_gles3.cpp editor/editor_settings.cpp
@@ -1068,58 +985,55 @@ msgstr ""
#: servers/physics_2d/physics_2d_server_wrap_mt.h
#: servers/physics_2d/space_2d_sw.cpp servers/visual_server.cpp
msgid "2D"
-msgstr ""
+msgstr "2D"
#: drivers/gles2/rasterizer_canvas_base_gles2.cpp
#: drivers/gles3/rasterizer_canvas_base_gles3.cpp
-#, fuzzy
msgid "Snapping"
-msgstr "Scatto intelligente"
+msgstr "Ancoraggio"
#: drivers/gles2/rasterizer_canvas_base_gles2.cpp
#: drivers/gles3/rasterizer_canvas_base_gles3.cpp
-#, fuzzy
msgid "Use GPU Pixel Snap"
-msgstr "Scatta sui pixel"
+msgstr "Usa Ancoraggio sui Pixel con GPU"
#: drivers/gles2/rasterizer_scene_gles2.cpp
#: drivers/gles3/rasterizer_scene_gles3.cpp
msgid "Immediate Buffer Size (KB)"
-msgstr ""
+msgstr "Dimensione Buffer Immediata (KB)"
#: drivers/gles2/rasterizer_storage_gles2.cpp
#: drivers/gles3/rasterizer_storage_gles3.cpp
-#, fuzzy
msgid "Lightmapping"
-msgstr "Preprocessa Lightmaps"
+msgstr "Lightmapping"
#: drivers/gles2/rasterizer_storage_gles2.cpp
#: drivers/gles3/rasterizer_storage_gles3.cpp
msgid "Use Bicubic Sampling"
-msgstr ""
+msgstr "Usa Campionamento Bicubico"
#: drivers/gles3/rasterizer_scene_gles3.cpp
msgid "Max Renderable Elements"
-msgstr ""
+msgstr "Quantità Massima di Elementi Renderizzabili"
#: drivers/gles3/rasterizer_scene_gles3.cpp
msgid "Max Renderable Lights"
-msgstr ""
+msgstr "Quantità Massima di Luci Renderizzabili"
#: drivers/gles3/rasterizer_scene_gles3.cpp
-#, fuzzy
msgid "Max Renderable Reflections"
-msgstr "Centra Selezione"
+msgstr "Quantità Massima di Riflessioni Renderizzabili"
#: drivers/gles3/rasterizer_scene_gles3.cpp
msgid "Max Lights Per Object"
-msgstr ""
+msgstr "Quantità Massima di Luci Per Oggetto"
#: drivers/gles3/rasterizer_scene_gles3.cpp
msgid "Subsurface Scattering"
-msgstr ""
+msgstr "Subsurface Scattering"
#: drivers/gles3/rasterizer_scene_gles3.cpp
+#: editor/import/resource_importer_texture.cpp
#: editor/plugins/spatial_editor_plugin.cpp modules/gltf/gltf_node.cpp
#: modules/gridmap/grid_map.cpp scene/2d/cpu_particles_2d.cpp
#: scene/2d/node_2d.cpp scene/2d/parallax_layer.cpp scene/2d/polygon_2d.cpp
@@ -1131,25 +1045,24 @@ msgid "Scale"
msgstr "Scala"
#: drivers/gles3/rasterizer_scene_gles3.cpp
-#, fuzzy
msgid "Follow Surface"
-msgstr "Popola la Superficie"
+msgstr "Segui Superficie"
#: drivers/gles3/rasterizer_scene_gles3.cpp
msgid "Weight Samples"
-msgstr ""
+msgstr "Weight Samples"
#: drivers/gles3/rasterizer_scene_gles3.cpp
msgid "Voxel Cone Tracing"
-msgstr ""
+msgstr "Tracciamento a Cono del Voxel"
#: drivers/gles3/rasterizer_scene_gles3.cpp scene/resources/environment.cpp
msgid "High Quality"
-msgstr ""
+msgstr "Alta Qualità"
#: drivers/gles3/rasterizer_storage_gles3.cpp
msgid "Blend Shape Max Buffer Size (KB)"
-msgstr ""
+msgstr "Dimensione Massima Buffer del Blend Shape (KB)"
#: editor/animation_bezier_editor.cpp
msgid "Free"
@@ -1412,11 +1325,11 @@ msgstr "Rimuovi una traccia d'animazione"
#: editor/plugins/tile_map_editor_plugin.cpp editor/scene_tree_dock.cpp
#: editor/spatial_editor_gizmos.cpp modules/csg/csg_gizmos.cpp
#: modules/gridmap/grid_map_editor_plugin.cpp
-#, fuzzy
msgid "Editors"
-msgstr "Editor"
+msgstr "Editori"
#: editor/animation_track_editor.cpp editor/editor_settings.cpp
+#: editor/import/resource_importer_scene.cpp
#: editor/plugins/animation_player_editor_plugin.cpp editor/scene_tree_dock.cpp
#: scene/2d/animated_sprite.cpp scene/2d/cpu_particles_2d.cpp
#: scene/2d/sprite.cpp scene/3d/cpu_particles.cpp scene/3d/sprite_3d.cpp
@@ -1426,9 +1339,8 @@ msgid "Animation"
msgstr "Animazione"
#: editor/animation_track_editor.cpp editor/editor_settings.cpp
-#, fuzzy
msgid "Confirm Insert Track"
-msgstr "Inserisci un traccia con un fotogramma chiave in un'animazione"
+msgstr "Conferma Traccia Inserita"
#. TRANSLATORS: %s will be replaced by a phrase describing the target of track.
#: editor/animation_track_editor.cpp
@@ -1578,7 +1490,7 @@ msgstr "Metodi"
#: editor/animation_track_editor.cpp
msgid "Bezier"
-msgstr ""
+msgstr "Bezier"
#: editor/animation_track_editor.cpp
#: modules/visual_script/visual_script_editor.cpp
@@ -1655,14 +1567,14 @@ msgstr "Valore del passo dell'animazione."
msgid "Seconds"
msgstr "Secondi"
-#: editor/animation_track_editor.cpp
+#: editor/animation_track_editor.cpp editor/import/resource_importer_scene.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp main/main.cpp
#: scene/resources/texture.cpp
msgid "FPS"
msgstr "FPS"
#: editor/animation_track_editor.cpp editor/editor_plugin_settings.cpp
-#: editor/editor_resource_picker.cpp
+#: editor/editor_resource_picker.cpp editor/import/resource_importer_wav.cpp
#: editor/plugins/polygon_2d_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
@@ -2279,10 +2191,9 @@ msgstr "Sviluppatore principale"
#. TRANSLATORS: This refers to a job title.
#: editor/editor_about.cpp
-#, fuzzy
msgctxt "Job Title"
msgid "Project Manager"
-msgstr "Gestore dei progetti"
+msgstr "Capo Progetto"
#: editor/editor_about.cpp
msgid "Developers"
@@ -2575,9 +2486,8 @@ msgid "Create a new Bus Layout."
msgstr "Crea una nuova disposizione di bus."
#: editor/editor_audio_buses.cpp
-#, fuzzy
msgid "Audio Bus Layout"
-msgstr "Apri la disposizione di un bus audio"
+msgstr "Disposizione Bus Audio"
#: editor/editor_autoload_settings.cpp
msgid "Invalid name."
@@ -2628,7 +2538,9 @@ msgid "Remove Autoload"
msgstr "Rimuovi l'autocaricamento"
#: editor/editor_autoload_settings.cpp editor/editor_plugin_settings.cpp
-#: modules/gdscript/gdscript.cpp scene/2d/polygon_2d.cpp scene/3d/area.cpp
+#: modules/gdscript/gdscript.cpp platform/android/export/export_plugin.cpp
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#: scene/2d/polygon_2d.cpp scene/3d/area.cpp scene/3d/physics_joint.cpp
#: scene/3d/reflection_probe.cpp scene/main/canvas_layer.cpp
#: scene/resources/material.cpp servers/visual_server.cpp
msgid "Enable"
@@ -2800,6 +2712,60 @@ msgstr ""
#: editor/editor_export.cpp platform/android/export/export_plugin.cpp
#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Custom Template"
+msgstr "Tema Personalizzato"
+
+#: editor/editor_export.cpp editor/project_export.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp
+msgid "Release"
+msgstr "Rilascio"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Binary Format"
+msgstr "Formato Colore"
+
+#: editor/editor_export.cpp
+msgid "64 Bits"
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Embed PCK"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Texture Format"
+msgstr "TextureRegion"
+
+#: editor/editor_export.cpp
+msgid "BPTC"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "S3TC"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "ETC"
+msgstr "TCP"
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "ETC2"
+msgstr ""
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "No BPTC Fallbacks"
+msgstr "Fallback"
+
+#: editor/editor_export.cpp platform/android/export/export_plugin.cpp
+#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
msgid "Custom debug template not found."
msgstr "Modello di sviluppo personalizzato non trovato."
@@ -2821,7 +2787,7 @@ msgstr ""
#: editor/editor_export.cpp
msgid "Convert Text Resources To Binary On Export"
-msgstr ""
+msgstr "Converti Risorse Testuali in Binario durante l'Esportazione"
#: editor/editor_feature_profile.cpp
msgid "3D Editor"
@@ -2984,6 +2950,7 @@ msgid "Make Current"
msgstr "Rendi attuale"
#: editor/editor_feature_profile.cpp editor/editor_node.cpp
+#: editor/import/resource_importer_scene.cpp
#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
msgid "Import"
msgstr "Importa"
@@ -3030,9 +2997,8 @@ msgid "Manage Editor Feature Profiles"
msgstr "Gestisci i profili di funzionalità dell'editor"
#: editor/editor_feature_profile.cpp
-#, fuzzy
msgid "Default Feature Profile"
-msgstr "Profilo di funzionalità di Godot"
+msgstr "Profilo di Funzionalità Predefinito"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
msgid "Select Current Folder"
@@ -3104,51 +3070,47 @@ msgid "Save a File"
msgstr "Salva un file"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-#, fuzzy
msgid "Access"
-msgstr "Successo!"
+msgstr "Accedi"
#: editor/editor_file_dialog.cpp editor/editor_settings.cpp
-#, fuzzy
msgid "Display Mode"
-msgstr "Modalità Riproduzione:"
+msgstr "Modalità Visualizzazione"
-#: editor/editor_file_dialog.cpp main/main.cpp modules/csg/csg_shape.cpp
-#: modules/visual_script/visual_script_nodes.cpp
+#: editor/editor_file_dialog.cpp
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+#: editor/import/resource_importer_wav.cpp main/main.cpp
+#: modules/csg/csg_shape.cpp modules/visual_script/visual_script_nodes.cpp
#: modules/visual_script/visual_script_yield_nodes.cpp scene/2d/light_2d.cpp
#: scene/2d/physics_body_2d.cpp scene/2d/tile_map.cpp
#: scene/3d/baked_lightmap.cpp scene/3d/light.cpp scene/3d/physics_body.cpp
#: scene/gui/control.cpp scene/gui/file_dialog.cpp
#: scene/resources/environment.cpp scene/resources/material.cpp
#: servers/audio/effects/audio_effect_distortion.cpp
-#, fuzzy
msgid "Mode"
-msgstr "Modalità di Pan"
+msgstr "Modalità"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-#, fuzzy
msgid "Current Dir"
-msgstr "Corrente:"
+msgstr "Cartella Corrente"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-#, fuzzy
msgid "Current File"
-msgstr "Profilo attuale:"
+msgstr "File Corrente"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-#, fuzzy
msgid "Current Path"
-msgstr "Corrente:"
+msgstr "Percorso Corrente"
#: editor/editor_file_dialog.cpp editor/editor_settings.cpp
#: scene/gui/file_dialog.cpp
-#, fuzzy
msgid "Show Hidden Files"
-msgstr "Commuta la visibilità dei file nascosti"
+msgstr "Mostra File Nascosti"
#: editor/editor_file_dialog.cpp
msgid "Disable Overwrite Warning"
-msgstr ""
+msgstr "Disabilita Avviso di Sovrascrittura"
#: editor/editor_file_dialog.cpp
msgid "Go Back"
@@ -3251,9 +3213,11 @@ msgstr "Reimportando i contenuti"
#: editor/editor_file_system.cpp
msgid "Reimport Missing Imported Files"
-msgstr ""
+msgstr "Reimporta Files Importati Mancanti"
-#: editor/editor_help.cpp
+#: editor/editor_help.cpp scene/2d/camera_2d.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/resources/dynamic_font.cpp
+#: scene/resources/style_box.cpp
msgid "Top"
msgstr "In cima"
@@ -3305,6 +3269,7 @@ msgid "Fonts"
msgstr "Font"
#: editor/editor_help.cpp editor/plugins/theme_editor_plugin.cpp
+#: platform/iphone/export/export.cpp
msgid "Icons"
msgstr "Icone"
@@ -3351,7 +3316,7 @@ msgstr "Aiuto"
#: editor/editor_help.cpp
msgid "Sort Functions Alphabetically"
-msgstr ""
+msgstr "Ordina le Funzioni Alfabeticamente"
#: editor/editor_help_search.cpp editor/editor_node.cpp
#: editor/plugins/script_editor_plugin.cpp
@@ -3431,34 +3396,28 @@ msgid "Property:"
msgstr "Proprietà:"
#: editor/editor_inspector.cpp editor/editor_spin_slider.cpp
-#, fuzzy
msgid "Label"
-msgstr "Valore"
+msgstr "Etichetta"
#: editor/editor_inspector.cpp editor/editor_spin_slider.cpp
-#, fuzzy
msgid "Read Only"
-msgstr "Solo i metodi"
+msgstr "Sola Lettura"
#: editor/editor_inspector.cpp
-#, fuzzy
msgid "Checkable"
-msgstr "Check Item"
+msgstr "Casella di Spunta"
#: editor/editor_inspector.cpp
-#, fuzzy
msgid "Checked"
-msgstr "Checked Item"
+msgstr "Selezionato"
#: editor/editor_inspector.cpp
-#, fuzzy
msgid "Draw Red"
-msgstr "Draw Calls:"
+msgstr "Colora di Rosso"
#: editor/editor_inspector.cpp
-#, fuzzy
msgid "Keying"
-msgstr "Esegui"
+msgstr "Tasti"
#: editor/editor_inspector.cpp
msgid "Pin value"
@@ -3475,7 +3434,9 @@ msgstr ""
msgid "Pin value [Disabled because '%s' is editor-only]"
msgstr "Fissa valore [Disabilitato perché '%s' è solo per l'editor]"
-#: editor/editor_inspector.cpp editor/scene_tree_dock.cpp
+#: editor/editor_inspector.cpp
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+#: editor/scene_tree_dock.cpp
#: modules/visual_script/visual_script_func_nodes.cpp
#: modules/visual_script/visual_script_nodes.cpp
#: modules/visual_script/visual_script_property_selector.cpp
@@ -3820,6 +3781,16 @@ msgid "Quick Open Script..."
msgstr "Apri script rapidamente…"
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Save & Reload"
+msgstr "Salva e riavvia"
+
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Save changes to '%s' before reloading?"
+msgstr "Salvare le modifiche a \"%s\" prima di chiudere?"
+
+#: editor/editor_node.cpp
msgid "Save & Close"
msgstr "Salva e chiudi"
@@ -3936,6 +3907,11 @@ msgid "Open Project Manager?"
msgstr "Aprire il gestore di progetti?"
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Save changes to the following scene(s) before reloading?"
+msgstr "Salvare le modifiche alle scene seguenti prima di uscire?"
+
+#: editor/editor_node.cpp
msgid "Save & Quit"
msgstr "Salva ed esci"
@@ -4126,108 +4102,97 @@ msgstr "%d altri file"
msgid ""
"Unable to write to file '%s', file in use, locked or lacking permissions."
msgstr ""
+"Impossibile scrivere sul file '%s', file in uso, bloccato o mancano permessi."
#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
msgid "Scene"
msgstr "Scena"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Scene Naming"
-msgstr "Percorso Scena:"
+msgstr "Nome Scena"
#: editor/editor_node.cpp editor/editor_settings.cpp editor/scene_tree_dock.cpp
#: servers/arvr/arvr_interface.cpp
-#, fuzzy
msgid "Interface"
msgstr "Interfaccia Utente"
#: editor/editor_node.cpp editor/editor_settings.cpp
-#, fuzzy
msgid "Scene Tabs"
-msgstr "Cambia la scheda di una scena"
+msgstr "Schede di Scena"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Always Show Close Button"
-msgstr "Mostra sempre Griglia"
+msgstr "Mostra sempre Il Pulsante di Chiusura"
#: editor/editor_node.cpp editor/editor_settings.cpp
msgid "Resize If Many Tabs"
-msgstr ""
+msgstr "Ridimensiona Se Troppe Schede"
#: editor/editor_node.cpp editor/editor_settings.cpp
msgid "Minimum Width"
-msgstr ""
+msgstr "Larghezza Minima"
#: editor/editor_node.cpp editor/editor_settings.cpp
msgid "Output"
msgstr "Output"
#: editor/editor_node.cpp editor/editor_settings.cpp
-#, fuzzy
msgid "Always Clear Output On Play"
-msgstr "Svuota l'output"
+msgstr "Svuota Sempre l'Output all'Esecuzione"
#: editor/editor_node.cpp editor/editor_settings.cpp
msgid "Always Open Output On Play"
-msgstr ""
+msgstr "Apri Sempre l'Output all'Esecuzione"
#: editor/editor_node.cpp editor/editor_settings.cpp
msgid "Always Close Output On Stop"
-msgstr ""
+msgstr "Chiudi Sempre l'Output all'Interruzione"
#: editor/editor_node.cpp editor/editor_settings.cpp
-#, fuzzy
msgid "Auto Save"
-msgstr "Auto Divisione"
+msgstr "Auto Salvataggio"
#: editor/editor_node.cpp editor/editor_settings.cpp
-#, fuzzy
msgid "Save Before Running"
-msgstr "Salva scena prima di eseguire..."
+msgstr "Salva Prima dell'Esecuzione"
#: editor/editor_node.cpp
msgid "Save On Focus Loss"
-msgstr ""
+msgstr "Salva se Fuori Focus"
#: editor/editor_node.cpp editor/editor_settings.cpp
-#, fuzzy
msgid "Save Each Scene On Quit"
-msgstr "Salva Ramo come Scena"
+msgstr "Salva Tutte le Scene all'Uscita"
#: editor/editor_node.cpp editor/editor_settings.cpp
-#, fuzzy
msgid "Quit Confirmation"
-msgstr "Visualizza Informazioni"
+msgstr "Conferma d'Uscita"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Show Update Spinner"
-msgstr "Nascondi la rotella di aggiornamento"
+msgstr "Mostra Rotella di Caricamento dell'Update"
#: editor/editor_node.cpp
msgid "Update Continuously"
-msgstr "Aggiorna continuamente"
+msgstr "Aggiorna Continuamente"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Update Vital Only"
-msgstr "Cambiamenti dei materiali"
+msgstr "Aggiorna Solo l'Essenziale"
#: editor/editor_node.cpp
#, fuzzy
-msgid "Translate Properties"
-msgstr "Incolla Proprietà"
+msgid "Localize Settings"
+msgstr "Localizzazione"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Restore Scenes On Load"
-msgstr "Nodo TimeScale"
+msgstr "Ripristina Scene al Caricamento"
#: editor/editor_node.cpp editor/editor_settings.cpp
msgid "Show Thumbnail On Hover"
-msgstr ""
+msgstr "Mostra Miniatura al Passaggio del Mouse"
#: editor/editor_node.cpp editor/editor_settings.cpp
msgid "Inspector"
@@ -4235,56 +4200,52 @@ msgstr "Ispettore"
#: editor/editor_node.cpp
#, fuzzy
-msgid "Capitalize Properties"
-msgstr "Incolla Proprietà"
+msgid "Default Property Name Style"
+msgstr "Percorso Progetto Predefinito"
#: editor/editor_node.cpp
msgid "Default Float Step"
-msgstr ""
+msgstr "Passo Predefinito dei Float"
#: editor/editor_node.cpp scene/gui/tree.cpp
-#, fuzzy
msgid "Disable Folding"
-msgstr "Pulsante disabilitato"
+msgstr "Disabilita Raggruppamento"
#: editor/editor_node.cpp
msgid "Auto Unfold Foreign Scenes"
-msgstr ""
+msgstr "Auto-Separa Scene Non Riconosciute"
#: editor/editor_node.cpp
msgid "Horizontal Vector2 Editing"
-msgstr ""
+msgstr "Modifica Vector2 Orizzontale"
#: editor/editor_node.cpp
msgid "Horizontal Vector Types Editing"
-msgstr ""
+msgstr "Modifica Tipi di Vettori Orizzontali"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Open Resources In Current Inspector"
-msgstr "Apri nell'Inspector"
+msgstr "Apri Risorse nell'Ispettore Attuale"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Resources To Open In New Inspector"
-msgstr "Apri nell'Inspector"
+msgstr "Risorse da Aprire in Nuovo Ispettore"
#: editor/editor_node.cpp
msgid "Default Color Picker Mode"
-msgstr ""
+msgstr "Modalità di Scelta Colore Predefinita"
#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
-#, fuzzy
msgid "Username"
-msgstr "Rinomina"
+msgstr "Nome Utente"
#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
msgid "SSH Public Key Path"
-msgstr ""
+msgstr "Percorso Chiave SSH Pubblica"
#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
msgid "SSH Private Key Path"
-msgstr ""
+msgstr "Percorso Chiave SSH Privata"
#: editor/editor_node.cpp
msgid "Dock Position"
@@ -4653,9 +4614,8 @@ msgid "Save & Restart"
msgstr "Salva e riavvia"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Update All Changes"
-msgstr "Aggiorna quando modificata"
+msgstr "Aggiorna Tutti i Cambiamenti"
#: editor/editor_node.cpp
msgid "Update Vital Changes"
@@ -4846,7 +4806,9 @@ msgstr "Estensioni installate:"
msgid "Update"
msgstr "Aggiorna"
-#: editor/editor_plugin_settings.cpp
+#: editor/editor_plugin_settings.cpp platform/android/export/export_plugin.cpp
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp
msgid "Version"
msgstr "Versione"
@@ -4924,12 +4886,11 @@ msgstr "Debugger"
#: editor/editor_profiler.cpp
msgid "Profiler Frame History Size"
-msgstr ""
+msgstr "Dimensione Cronologia Riquadro del Profiler"
#: editor/editor_profiler.cpp
-#, fuzzy
msgid "Profiler Frame Max Functions"
-msgstr "Rinomina Funzione"
+msgstr "Quantità Massima Funzioni Riquadro del Profiler"
#: editor/editor_properties.cpp
msgid "Edit Text:"
@@ -5058,18 +5019,15 @@ msgstr "Nuovo %s"
#: modules/visual_script/visual_script_func_nodes.cpp
#: modules/visual_script/visual_script_nodes.cpp
#: modules/visual_script/visual_script_yield_nodes.cpp
-#, fuzzy
msgid "Base Type"
-msgstr "Cambia Tipo di Base"
+msgstr "Tipo di Base"
#: editor/editor_resource_picker.cpp
-#, fuzzy
msgid "Edited Resource"
-msgstr "Aggiungi risorsa"
+msgstr "Risorsa Modificata"
#: editor/editor_resource_picker.cpp scene/gui/line_edit.cpp
#: scene/gui/slider.cpp scene/gui/spin_box.cpp
-#, fuzzy
msgid "Editable"
msgstr "Elemento Modificabile"
@@ -5082,9 +5040,8 @@ msgid "Extend Script"
msgstr "Estendi script"
#: editor/editor_resource_picker.cpp
-#, fuzzy
msgid "Script Owner"
-msgstr "Nome Script:"
+msgstr "Autore Script"
#: editor/editor_run_native.cpp
msgid ""
@@ -5122,73 +5079,68 @@ msgid "Did you forget the '_run' method?"
msgstr "Hai dimenticato il metodo \"_run\"?"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Editor Language"
-msgstr "Disposizione dell'editor"
+msgstr "Lingua dell'Editor"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Display Scale"
-msgstr "Mostra tutto"
+msgstr "Dimensione Display"
#: editor/editor_settings.cpp
msgid "Custom Display Scale"
-msgstr ""
+msgstr "Dimensione Display Personalizzata"
#: editor/editor_settings.cpp
msgid "Main Font Size"
-msgstr ""
+msgstr "Dimensione Carattere Principale"
#: editor/editor_settings.cpp
msgid "Code Font Size"
-msgstr ""
+msgstr "Dimensione Carattere del Codice"
#: editor/editor_settings.cpp
msgid "Font Antialiased"
-msgstr ""
+msgstr "Carattere con Antialiasing"
#: editor/editor_settings.cpp
msgid "Font Hinting"
-msgstr ""
+msgstr "Suggerimento Carattere"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Main Font"
-msgstr "Scena Principale"
+msgstr "Carattere Principale"
#: editor/editor_settings.cpp
msgid "Main Font Bold"
-msgstr ""
+msgstr "Grassetto del Carattere Principale"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Code Font"
-msgstr "Aggiungi Punto Nodo"
+msgstr "Carattere del Codice"
#: editor/editor_settings.cpp
msgid "Dim Editor On Dialog Popup"
-msgstr ""
+msgstr "Dimensione Editor nella Finestra di Dialogo"
#: editor/editor_settings.cpp main/main.cpp
msgid "Low Processor Mode Sleep (µsec)"
-msgstr ""
+msgstr "Durata Modalità Basso Consumo del Processore (µsec)"
#: editor/editor_settings.cpp
msgid "Unfocused Low Processor Mode Sleep (µsec)"
-msgstr ""
+msgstr "Durata Modalità Basso Consumo del Processore Fuori Focus (µsec)"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Separate Distraction Mode"
-msgstr "Modalità senza distrazioni"
+msgstr "Modalità senza Distrazioni"
#: editor/editor_settings.cpp
msgid "Automatically Open Screenshots"
-msgstr ""
+msgstr "Apri Screenshot in Automatico"
#: editor/editor_settings.cpp
msgid "Max Array Dictionary Items Per Page"
-msgstr ""
+msgstr "Quantità Massima di Elementi di Array di Dizionari Per Pagina"
#: editor/editor_settings.cpp editor/plugins/script_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp editor/plugins/text_editor.cpp
@@ -5203,169 +5155,146 @@ msgstr "Preimpostazione"
#: editor/editor_settings.cpp
msgid "Icon And Font Color"
-msgstr ""
+msgstr "Colore Icona e Carattere"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Base Color"
-msgstr "Colori"
+msgstr "Colore Base"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Accent Color"
-msgstr "Scegli un colore"
+msgstr "Colore Accento"
#: editor/editor_settings.cpp scene/resources/environment.cpp
msgid "Contrast"
-msgstr ""
+msgstr "Contrasto"
#: editor/editor_settings.cpp
msgid "Relationship Line Opacity"
-msgstr ""
+msgstr "Opacità Linea di Relazione"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Highlight Tabs"
-msgstr "Salvataggio Lightmap"
+msgstr "Evidenzia Schede"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Border Size"
-msgstr "Pixel del Bordo"
+msgstr "Dimensione Bordo"
#: editor/editor_settings.cpp
msgid "Use Graph Node Headers"
-msgstr ""
+msgstr "Usa Headers del Graph Node"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Additional Spacing"
-msgstr "Ciclicità animazione"
+msgstr "Spaziatura Addizionale"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Custom Theme"
-msgstr "Modifica Tema"
+msgstr "Tema Personalizzato"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Show Script Button"
-msgstr "Pulsante Rotellina Destro"
+msgstr "Mostra Pulsante di Script"
#: editor/editor_settings.cpp editor/fileserver/editor_file_server.cpp
-#, fuzzy
msgid "Filesystem"
msgstr "Filesystem"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Directories"
-msgstr "Direzioni"
+msgstr "Cartelle"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Autoscan Project Path"
-msgstr "Percorso Progetto:"
+msgstr "Autoscansiona Percorso Progetto"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Default Project Path"
-msgstr "Percorso Progetto:"
+msgstr "Percorso Progetto Predefinito"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "On Save"
-msgstr "Salva"
+msgstr "Al Salvataggio"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Compress Binary Resources"
-msgstr "Copia Risorsa"
+msgstr "Comprimi Risorse in Binario"
#: editor/editor_settings.cpp
msgid "Safe Save On Backup Then Rename"
-msgstr ""
+msgstr "Salvataggio Sicuro Sul Backup, Poi Rinomina"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "File Dialog"
-msgstr "Finestra di XForm"
+msgstr "Finestra di Dialogo del File"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Thumbnail Size"
-msgstr "Miniatura..."
+msgstr "Dimensione della Miniatura"
#: editor/editor_settings.cpp
msgid "Docks"
-msgstr ""
+msgstr "Docks"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Scene Tree"
-msgstr "Modifica delle scene"
+msgstr "Albero Scena"
#: editor/editor_settings.cpp
msgid "Start Create Dialog Fully Expanded"
-msgstr ""
+msgstr "Avvia Massimizzata la Finestra di Dialogo di Creazione"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Always Show Folders"
-msgstr "Mostra sempre Griglia"
+msgstr "Mostra Sempre Cartelle"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Property Editor"
-msgstr "Editor Gruppo"
+msgstr "Editor Proprietà"
#: editor/editor_settings.cpp
msgid "Auto Refresh Interval"
-msgstr ""
+msgstr "Intervallo di Auto Ricaricamento"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Subresource Hue Tint"
-msgstr "Sotto-Risorse"
+msgstr "Tinta Colore Sotto-Risorse"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Color Theme"
-msgstr "Modifica Tema"
+msgstr "Colore Tema"
#: editor/editor_settings.cpp editor/plugins/script_text_editor.cpp
#: editor/plugins/text_editor.cpp
msgid "Line Spacing"
-msgstr ""
+msgstr "Spaziatura Linee"
#: editor/editor_settings.cpp editor/plugins/script_text_editor.cpp
#: modules/gdscript/editor/gdscript_highlighter.cpp
-#, fuzzy
msgid "Highlighting"
-msgstr "Luci dirette"
+msgstr "Evidenziazione"
#: editor/editor_settings.cpp scene/gui/text_edit.cpp
-#, fuzzy
msgid "Syntax Highlighting"
-msgstr "Evidenziatore di sintassi"
+msgstr "Evidenziazione Sintassi"
#: editor/editor_settings.cpp scene/gui/text_edit.cpp
msgid "Highlight All Occurrences"
-msgstr ""
+msgstr "Evidenzia Tutte le Occorrenze"
#: editor/editor_settings.cpp scene/gui/text_edit.cpp
msgid "Highlight Current Line"
-msgstr ""
+msgstr "Evidenzia Riga Attuale"
#: editor/editor_settings.cpp editor/plugins/script_text_editor.cpp
msgid "Highlight Type Safe Lines"
-msgstr ""
+msgstr "Evidenzia Righe Type Safe"
#: editor/editor_settings.cpp modules/gdscript/gdscript_editor.cpp
#: modules/mono/csharp_script.cpp
-#, fuzzy
msgid "Indent"
-msgstr "Indenta a sinistra"
+msgstr "Indenta"
#: editor/editor_settings.cpp editor/script_editor_debugger.cpp
#: modules/gdscript/gdscript_editor.cpp modules/gltf/gltf_accessor.cpp
@@ -5380,19 +5309,16 @@ msgid "Auto Indent"
msgstr "Indenta automaticamente"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Convert Indent On Save"
-msgstr "Converti l'indentazione in spazi"
+msgstr "Converti Indentazione Al Salvataggio"
#: editor/editor_settings.cpp scene/gui/text_edit.cpp
-#, fuzzy
msgid "Draw Tabs"
-msgstr "Draw Calls:"
+msgstr "Disegna Tabs"
#: editor/editor_settings.cpp scene/gui/text_edit.cpp
-#, fuzzy
msgid "Draw Spaces"
-msgstr "Draw Calls:"
+msgstr "Disegna Spazi"
#: editor/editor_settings.cpp editor/plugins/spatial_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/main/scene_tree.cpp
@@ -5401,20 +5327,19 @@ msgstr "Navigazione"
#: editor/editor_settings.cpp scene/gui/text_edit.cpp
msgid "Smooth Scrolling"
-msgstr ""
+msgstr "Scorrimento Fluido"
#: editor/editor_settings.cpp scene/gui/text_edit.cpp
msgid "V Scroll Speed"
-msgstr ""
+msgstr "Velocità Scorrimento Verticale"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Show Minimap"
-msgstr "Mostra Origine"
+msgstr "Mostra Minimappa"
#: editor/editor_settings.cpp
msgid "Minimap Width"
-msgstr ""
+msgstr "Larghezza Minimappa"
#: editor/editor_settings.cpp
msgid "Mouse Extra Buttons Navigate History"
@@ -5422,17 +5347,15 @@ msgstr ""
#: editor/editor_settings.cpp
msgid "Appearance"
-msgstr ""
+msgstr "Aspetto"
#: editor/editor_settings.cpp scene/gui/text_edit.cpp
-#, fuzzy
msgid "Show Line Numbers"
-msgstr "Numero della linea:"
+msgstr "Mostra Numeri di Riga"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Line Numbers Zero Padded"
-msgstr "Numero della linea:"
+msgstr "Numeri di Riga Riempiti con Zeri"
#: editor/editor_settings.cpp
msgid "Show Bookmark Gutter"
@@ -5449,15 +5372,15 @@ msgstr ""
#: editor/editor_settings.cpp
msgid "Code Folding"
-msgstr ""
+msgstr "Raggruppamento Codice"
#: editor/editor_settings.cpp
msgid "Word Wrap"
-msgstr ""
+msgstr "Raccoglimento Parole"
#: editor/editor_settings.cpp
msgid "Show Line Length Guidelines"
-msgstr ""
+msgstr "Mostra Linee Guida della Lunghezza della Linea"
#: editor/editor_settings.cpp
msgid "Line Length Guideline Soft Column"
@@ -5468,70 +5391,65 @@ msgid "Line Length Guideline Hard Column"
msgstr ""
#: editor/editor_settings.cpp editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "Script List"
-msgstr "Editor degli script"
+msgstr "Elenco Script"
#: editor/editor_settings.cpp
msgid "Show Members Overview"
-msgstr ""
+msgstr "Mostra Panoramica dei Membri"
#: editor/editor_settings.cpp editor/plugins/script_editor_plugin.cpp
#: editor/plugins/shader_editor_plugin.cpp
-#, fuzzy
msgid "Files"
-msgstr "File"
+msgstr "Files"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Trim Trailing Whitespace On Save"
-msgstr "Taglia spazi in coda"
+msgstr "Elimina Spazi Finali Al Salvataggio"
#: editor/editor_settings.cpp
msgid "Autosave Interval Secs"
-msgstr ""
+msgstr "Secondi di Intervallo di Autosalvataggio"
#: editor/editor_settings.cpp editor/plugins/script_editor_plugin.cpp
msgid "Restore Scripts On Load"
-msgstr ""
+msgstr "Ripristina Scripts Al Caricamento"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Create Signal Callbacks"
-msgstr "Forza fallback dello shader"
+msgstr "Crea Richiami del Segnale"
#: editor/editor_settings.cpp
msgid "Sort Members Outline Alphabetically"
-msgstr ""
+msgstr "Ordina Riquadro dei Membri Alfabeticamente"
#: editor/editor_settings.cpp scene/gui/line_edit.cpp
msgid "Cursor"
-msgstr ""
+msgstr "Cursore"
#: editor/editor_settings.cpp
msgid "Scroll Past End Of File"
-msgstr ""
+msgstr "Scorri Oltre la Fine del File"
#: editor/editor_settings.cpp
msgid "Block Caret"
-msgstr ""
+msgstr "Blocca Segno di Omissione"
#: editor/editor_settings.cpp scene/gui/line_edit.cpp
msgid "Caret Blink"
-msgstr ""
+msgstr "Lampeggiamento Segno di Omissione"
#: editor/editor_settings.cpp scene/gui/line_edit.cpp
msgid "Caret Blink Speed"
-msgstr ""
+msgstr "Velocità Lampeggiamento Segno di Omissione"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Right Click Moves Caret"
-msgstr "Click destro per aggiungere punto"
+msgstr "Click Destro per Spostare il Segno di Omissione"
#: editor/editor_settings.cpp
msgid "Idle Parse Delay"
-msgstr ""
+msgstr "Delay Analizzazione in Inattività"
#: editor/editor_settings.cpp
msgid "Auto Brace Complete"
@@ -5543,30 +5461,27 @@ msgstr ""
#: editor/editor_settings.cpp
msgid "Put Callhint Tooltip Below Current Line"
-msgstr ""
+msgstr "Mostra Suggerimento di Chiamata Sotto la Riga Attuale"
#: editor/editor_settings.cpp
msgid "Callhint Tooltip Offset"
msgstr ""
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Complete File Paths"
-msgstr "Copia percorso del nodo"
+msgstr "Percorsi Completi dei File"
#: editor/editor_settings.cpp modules/gdscript/gdscript_editor.cpp
-#, fuzzy
msgid "Add Type Hints"
-msgstr "Tipo"
+msgstr "Aggiungi Suggerimenti per i Tipi"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Show Help Index"
-msgstr "Mostra guide"
+msgstr "Mostra Indice Guida"
#: editor/editor_settings.cpp
msgid "Help Font Size"
-msgstr ""
+msgstr "Dimensione Carattere della Guida"
#: editor/editor_settings.cpp
msgid "Help Source Font Size"
@@ -5574,7 +5489,7 @@ msgstr ""
#: editor/editor_settings.cpp
msgid "Help Title Font Size"
-msgstr ""
+msgstr "Dimensione Carattere Titolo della Guida"
#: editor/editor_settings.cpp editor/plugins/mesh_library_editor_plugin.cpp
#: modules/gridmap/grid_map_editor_plugin.cpp
@@ -5582,121 +5497,108 @@ msgid "Grid Map"
msgstr "Mappa di Griglia"
#: editor/editor_settings.cpp modules/gridmap/grid_map_editor_plugin.cpp
-#, fuzzy
msgid "Pick Distance"
-msgstr "Scegli la Distanza:"
+msgstr "Scegli la Distanza"
#: editor/editor_settings.cpp
msgid "Primary Grid Color"
-msgstr ""
+msgstr "Colore Griglia Primario"
#: editor/editor_settings.cpp
msgid "Secondary Grid Color"
-msgstr ""
+msgstr "Colore Griglia Secondario"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Selection Box Color"
-msgstr "Solo nella selezione"
+msgstr "Colore Riquadro di Selezione"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Primary Grid Steps"
-msgstr "Passo della griglia:"
+msgstr "Passo della Griglia Primaria"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Grid Size"
-msgstr "Passo della griglia:"
+msgstr "Dimensione Griglia"
#: editor/editor_settings.cpp
+#, fuzzy
msgid "Grid Division Level Max"
-msgstr ""
+msgstr "Livello Massimo di Divisioni della Griglia"
#: editor/editor_settings.cpp
+#, fuzzy
msgid "Grid Division Level Min"
-msgstr ""
+msgstr "Livello Minimo di Divisioni della Griglia"
#: editor/editor_settings.cpp
msgid "Grid Division Level Bias"
msgstr ""
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Grid XZ Plane"
-msgstr "GridMap Riempi"
+msgstr "Piano della Griglia XZ"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Grid XY Plane"
-msgstr "GridMap Riempi"
+msgstr "Piano della Griglia XY"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Grid YZ Plane"
-msgstr "GridMap Riempi"
+msgstr "Piano della Griglia YZ"
#: editor/editor_settings.cpp editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Default FOV"
-msgstr "Predefinito"
+msgstr "Campo Visivo Predefinito"
#: editor/editor_settings.cpp editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Default Z Near"
-msgstr "Tema Predefinito"
+msgstr "Z Near Predefinito"
#: editor/editor_settings.cpp editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Default Z Far"
-msgstr "Predefinito"
+msgstr "Z Far Predefinito"
#: editor/editor_settings.cpp
msgid "Lightmap Baking Number Of CPU Threads"
-msgstr ""
+msgstr "Numero di Threads CPU del Baking di Lightmap"
#: editor/editor_settings.cpp
#, fuzzy
msgid "Navigation Scheme"
-msgstr "Modalità Navigazione"
+msgstr "Schema di Navigazione"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Invert Y Axis"
-msgstr "Modifica l'Asse Y"
+msgstr "Inverti Asse Y"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Invert X Axis"
-msgstr "Modifica l'Asse X"
+msgstr "Inverti Asse X"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Zoom Style"
-msgstr "Rimpicciolisci"
+msgstr "Stile Zoom"
#: editor/editor_settings.cpp
msgid "Emulate Numpad"
-msgstr ""
+msgstr "Emula Tastierino Numerico"
#: editor/editor_settings.cpp
msgid "Emulate 3 Button Mouse"
-msgstr ""
+msgstr "Emula Mouse a 3 Pulsanti"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Orbit Modifier"
-msgstr "Ordina per primo modificato"
+msgstr "Modificatore Orbita"
#: editor/editor_settings.cpp
#, fuzzy
msgid "Pan Modifier"
-msgstr "Modalità di Pan"
+msgstr "Modificatore di Pan"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Zoom Modifier"
-msgstr "Modificato"
+msgstr "Modificatore Zoom"
#: editor/editor_settings.cpp editor/plugins/spatial_editor_plugin.cpp
msgid "Warped Mouse Panning"
@@ -5705,94 +5607,79 @@ msgstr ""
#: editor/editor_settings.cpp
#, fuzzy
msgid "Navigation Feel"
-msgstr "Modalità Navigazione"
+msgstr "Sensazione Navigazione"
#: editor/editor_settings.cpp
msgid "Orbit Sensitivity"
-msgstr ""
+msgstr "Sensitività Orbita"
#: editor/editor_settings.cpp
msgid "Orbit Inertia"
-msgstr ""
+msgstr "Inerzia Orbita"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Translation Inertia"
-msgstr "Traduzioni"
+msgstr "Inerzia Traslazione"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Zoom Inertia"
-msgstr "Ingrandisci"
+msgstr "Inerzia Zoom"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Freelook"
-msgstr "Vista Libera Su"
+msgstr "Visuale Libera"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Freelook Navigation Scheme"
-msgstr "Crea Mesh di Navigazione"
+msgstr "Schema di Navigazione di Visuale Libera"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Freelook Sensitivity"
-msgstr "Vista Libera Sinistra"
+msgstr "Sensitività Visuale Libera"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Freelook Inertia"
-msgstr "Vista Libera Sinistra"
+msgstr "Inerzia Visuale Libera"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Freelook Base Speed"
-msgstr "Modificatore Velocità Vista Libera"
+msgstr "Velocità Base Visuale Libera"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Freelook Activation Modifier"
-msgstr "Modificatore Velocità Lenta Vista Libera"
+msgstr "Modificatore di Attivazione Visuale Libera"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Freelook Speed Zoom Link"
-msgstr "Modificatore Velocità Vista Libera"
+msgstr "Collegamento Velocità Zoom Visuale Libera"
#: editor/editor_settings.cpp editor/plugins/tile_map_editor_plugin.cpp
-#, fuzzy
msgid "Grid Color"
-msgstr "Scegli un colore"
+msgstr "Colore Griglia"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Guides Color"
-msgstr "Scegli un colore"
+msgstr "Colore Guide"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Smart Snapping Line Color"
-msgstr "Scatto intelligente"
+msgstr "Colore Linea Agganciamento Intelligente"
#: editor/editor_settings.cpp
msgid "Bone Width"
-msgstr ""
+msgstr "Larghezza Ossa"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Bone Color 1"
-msgstr "Rimuovi Elementi di Classe"
+msgstr "Colore Osso 1"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Bone Color 2"
-msgstr "Rimuovi Elementi di Classe"
+msgstr "Colore Osso 2"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Bone Selected Color"
-msgstr "Configura il profilo selezionato:"
+msgstr "Colore Osso Selezionato"
#: editor/editor_settings.cpp
msgid "Bone IK Color"
@@ -5800,289 +5687,271 @@ msgstr ""
#: editor/editor_settings.cpp
msgid "Bone Outline Color"
-msgstr ""
+msgstr "Colore Contorno Osso"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Bone Outline Size"
-msgstr "Dimensione Outline:"
+msgstr "Dimensione Contorno Osso"
#: editor/editor_settings.cpp
msgid "Viewport Border Color"
-msgstr ""
+msgstr "Colore Bordo Viewport"
#: editor/editor_settings.cpp
msgid "Constrain Editor View"
-msgstr ""
+msgstr "Vista Editor di Vincoli"
#: editor/editor_settings.cpp
msgid "Simple Panning"
-msgstr ""
+msgstr "Panning Semplice"
#: editor/editor_settings.cpp
msgid "Scroll To Pan"
-msgstr ""
+msgstr "Scorri Per Trascinare"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Pan Speed"
-msgstr "Velocità:"
+msgstr "Velocità Panoramica"
#: editor/editor_settings.cpp editor/plugins/polygon_2d_editor_plugin.cpp
#, fuzzy
msgid "Poly Editor"
-msgstr "Editor UV Polygon 2D"
+msgstr "Editor Poly"
#: editor/editor_settings.cpp
+#, fuzzy
msgid "Point Grab Radius"
-msgstr ""
+msgstr "Raggio Afferramento Punti"
#: editor/editor_settings.cpp editor/plugins/polygon_2d_editor_plugin.cpp
-#, fuzzy
msgid "Show Previous Outline"
-msgstr "Piano Precedente"
+msgstr "Mostra Contorno Precedente"
#: editor/editor_settings.cpp editor/scene_tree_dock.cpp
-#, fuzzy
msgid "Autorename Animation Tracks"
-msgstr "Rinomina Animazione"
+msgstr "Auto-Rinomina Tracce di Animazione"
#: editor/editor_settings.cpp
msgid "Default Create Bezier Tracks"
-msgstr ""
+msgstr "Crea Tracce di Bezier di Default"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Default Create Reset Tracks"
-msgstr "Crea traccia/e di rispristino"
+msgstr "Crea traccia/e di rispristino di Default"
#: editor/editor_settings.cpp
msgid "Onion Layers Past Color"
-msgstr ""
+msgstr "Colore Onion Layers Passati"
#: editor/editor_settings.cpp
msgid "Onion Layers Future Color"
-msgstr ""
+msgstr "Colore Onion Layers Futuri"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Visual Editors"
-msgstr "Editor Gruppo"
+msgstr "Editor Visuali"
#: editor/editor_settings.cpp
msgid "Minimap Opacity"
-msgstr ""
+msgstr "Opacità Minimappa"
#: editor/editor_settings.cpp
msgid "Window Placement"
-msgstr ""
+msgstr "Posizione Finestra"
#: editor/editor_settings.cpp scene/2d/back_buffer_copy.cpp scene/2d/sprite.cpp
#: scene/2d/visibility_notifier_2d.cpp scene/3d/sprite_3d.cpp
#: scene/gui/control.cpp
-#, fuzzy
msgid "Rect"
-msgstr "Rettangolo Completo"
+msgstr "Rettangolo"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Rect Custom Position"
-msgstr "Imposta posizione curva esterna"
+msgstr "Posizione Personalizzata Rettangolo"
-#: editor/editor_settings.cpp
+#: editor/editor_settings.cpp platform/android/export/export_plugin.cpp
msgid "Screen"
-msgstr ""
+msgstr "Schermo"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Font Size"
-msgstr "Vista frontale"
+msgstr "Dimensione Carattere"
#: editor/editor_settings.cpp
#: modules/gdscript/language_server/gdscript_language_server.cpp
-#, fuzzy
msgid "Remote Host"
-msgstr "Remoto "
+msgstr "Host Remoto"
#: editor/editor_settings.cpp
#: modules/gdscript/language_server/gdscript_language_server.cpp
-#, fuzzy
msgid "Remote Port"
-msgstr "Rimuovi punto"
+msgstr "Porta Remota"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Editor SSL Certificates"
-msgstr "Impostazioni Editor"
+msgstr "Editor di Certificati SSL"
+
+#: editor/editor_settings.cpp
+msgid "HTTP Proxy"
+msgstr "Proxy HTTP"
+
+#: editor/editor_settings.cpp
+msgid "Host"
+msgstr "Host"
+
+#: editor/editor_settings.cpp editor/fileserver/editor_file_server.cpp
+#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp
+msgid "Port"
+msgstr "Porta"
#: editor/editor_settings.cpp
msgid "Project Manager"
msgstr "Gestore dei progetti"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Sorting Order"
-msgstr "Rinomina cartella:"
+msgstr "Tipo di Ordinamento"
#: editor/editor_settings.cpp
msgid "Symbol Color"
-msgstr ""
+msgstr "Colore Simbolo"
#: editor/editor_settings.cpp
msgid "Keyword Color"
-msgstr ""
+msgstr "Colore Parola Chiave"
#: editor/editor_settings.cpp
msgid "Control Flow Keyword Color"
msgstr ""
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Base Type Color"
-msgstr "Cambia Tipo di Base"
+msgstr "Colore Tipo Base"
#: editor/editor_settings.cpp
msgid "Engine Type Color"
-msgstr ""
+msgstr "Colore Tipo di Engine"
#: editor/editor_settings.cpp
msgid "User Type Color"
-msgstr ""
+msgstr "Colore Tipo di Utente"
#: editor/editor_settings.cpp
msgid "Comment Color"
-msgstr ""
+msgstr "Colore Commento"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "String Color"
-msgstr "Memorizzazione file:"
+msgstr "Colore Stringa"
-#: editor/editor_settings.cpp
-#, fuzzy
+#: editor/editor_settings.cpp platform/javascript/export/export.cpp
+#: platform/uwp/export/export.cpp
msgid "Background Color"
-msgstr "Colore di sfondo non valido."
+msgstr "Colore Sfondo"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Completion Background Color"
-msgstr "Colore di sfondo non valido."
+msgstr "Colore Sfondo di Completamento"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Completion Selected Color"
-msgstr "Importa Selezionati"
+msgstr "Colore Selezione Completamento"
#: editor/editor_settings.cpp
msgid "Completion Existing Color"
-msgstr ""
+msgstr "Colore Completamento Esistente"
#: editor/editor_settings.cpp
msgid "Completion Scroll Color"
-msgstr ""
+msgstr "Colore Scorrimento Completamento"
#: editor/editor_settings.cpp
msgid "Completion Font Color"
-msgstr ""
+msgstr "Colore Carattere Completamento"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Text Color"
-msgstr "Pavimento Successivo"
+msgstr "Colore Testo"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Line Number Color"
-msgstr "Numero della linea:"
+msgstr "Colore Numero di Riga"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Safe Line Number Color"
-msgstr "Numero della linea:"
+msgstr "Colore Numero di Riga Sicura"
#: editor/editor_settings.cpp
msgid "Caret Color"
-msgstr ""
+msgstr "Colore Segno di Omissione"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Caret Background Color"
-msgstr "Colore di sfondo non valido."
+msgstr "Colore Sfondo del Segno di Omissione"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Text Selected Color"
-msgstr "Elimina selezionati"
+msgstr "Colore Testo Selezionato"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Selection Color"
-msgstr "Solo nella selezione"
+msgstr "Colore Selezione"
#: editor/editor_settings.cpp
msgid "Brace Mismatch Color"
-msgstr ""
+msgstr "Colore Mancata Corrispondenza tra Parentesi"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Current Line Color"
-msgstr "Scena Corrente"
+msgstr "Colore Riga Attuale"
#: editor/editor_settings.cpp
msgid "Line Length Guideline Color"
-msgstr ""
+msgstr "Colore Linea Guida della Lunghezza della Linea"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Word Highlighted Color"
-msgstr "Evidenziatore di sintassi"
+msgstr "Colore Parola Evidenziata"
#: editor/editor_settings.cpp
msgid "Number Color"
-msgstr ""
+msgstr "Colore Numero"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Function Color"
-msgstr "Funzioni"
+msgstr "Colore Funzione"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Member Variable Color"
-msgstr "Rinomina Variabile"
+msgstr "Colore Variabile Membro"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Mark Color"
-msgstr "Scegli un colore"
+msgstr "Colore Marchio"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Bookmark Color"
-msgstr "Segnalibri"
+msgstr "Colore Segnalibro"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Breakpoint Color"
-msgstr "Punti di interruzione"
+msgstr "Colore Breakpoint"
#: editor/editor_settings.cpp
msgid "Executing Line Color"
-msgstr ""
+msgstr "Colore Linea in Esecuzione"
#: editor/editor_settings.cpp
msgid "Code Folding Color"
-msgstr ""
+msgstr "Colore Raggruppamento Codice"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Search Result Color"
-msgstr "Risultati Ricerca"
+msgstr "Colore Risultati Ricerca"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Search Result Border Color"
-msgstr "Risultati Ricerca"
+msgstr "Colore Bordo Risultati Ricerca"
#: editor/editor_spin_slider.cpp
msgid "Hold %s to round to integers. Hold Shift for more precise changes."
@@ -6091,9 +5960,8 @@ msgstr ""
"modifiche più precise."
#: editor/editor_spin_slider.cpp scene/gui/button.cpp
-#, fuzzy
msgid "Flat"
-msgstr "Flat 0"
+msgstr "Flat"
#: editor/editor_sub_scene.cpp
msgid "Select Node(s) to Import"
@@ -6137,22 +6005,6 @@ msgid "Starting the download..."
msgstr "Avviando lo scaricamento..."
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "HTTP Proxy"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Host"
-msgstr ""
-
-#: editor/export_template_manager.cpp editor/fileserver/editor_file_server.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp main/main.cpp
-#: modules/mono/mono_gd/gd_mono.cpp
-msgid "Port"
-msgstr ""
-
-#: editor/export_template_manager.cpp
msgid "Error requesting URL:"
msgstr "Errore nella richiesta URL:"
@@ -6406,12 +6258,13 @@ msgstr ""
#: editor/fileserver/editor_file_server.cpp
msgid "File Server"
-msgstr ""
+msgstr "File Server"
#: editor/fileserver/editor_file_server.cpp
#: editor/plugins/version_control_editor_plugin.cpp
+#: platform/uwp/export/export.cpp platform/windows/export/export.cpp
msgid "Password"
-msgstr ""
+msgstr "Password"
#: editor/filesystem_dock.cpp
msgid "Favorites"
@@ -6786,12 +6639,123 @@ msgstr "Gestisci Gruppi"
#: editor/import/editor_import_collada.cpp
msgid "Collada"
-msgstr ""
+msgstr "Collada"
#: editor/import/editor_import_collada.cpp
msgid "Use Ambient"
+msgstr "Usa Ambiente"
+
+#: editor/import/resource_importer_bitmask.cpp
+#, fuzzy
+msgid "Create From"
+msgstr "Crea una cartella"
+
+#: editor/import/resource_importer_bitmask.cpp
+#: servers/audio/effects/audio_effect_compressor.cpp
+msgid "Threshold"
+msgstr ""
+
+#: editor/import/resource_importer_csv_translation.cpp
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_scene.cpp
+#: editor/import/resource_importer_texture.cpp
+#: editor/import/resource_importer_wav.cpp scene/3d/gi_probe.cpp
+#, fuzzy
+msgid "Compress"
+msgstr "Componenti"
+
+#: editor/import/resource_importer_csv_translation.cpp
+msgid "Delimiter"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+msgid "No BPTC If RGB"
msgstr ""
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/sprite_3d.cpp
+#: scene/resources/material.cpp scene/resources/particles_material.cpp
+#: scene/resources/texture.cpp
+msgid "Flags"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/animation/tween.cpp
+#: scene/resources/texture.cpp
+msgid "Repeat"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/2d/light_2d.cpp
+#: scene/gui/control.cpp scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Filter"
+msgstr "Filtri:"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Mipmaps"
+msgstr "Segnali"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+msgid "Anisotropic"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+msgid "sRGB"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#, fuzzy
+msgid "Slices"
+msgstr "Auto Divisione"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
+#: scene/resources/style_box.cpp
+#, fuzzy
+msgid "Horizontal"
+msgstr "Orizzontale:"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
+#: scene/resources/style_box.cpp
+#, fuzzy
+msgid "Vertical"
+msgstr "Verticale:"
+
+#: editor/import/resource_importer_obj.cpp
+#, fuzzy
+msgid "Generate Tangents"
+msgstr "Genera punti"
+
+#: editor/import/resource_importer_obj.cpp
+#, fuzzy
+msgid "Scale Mesh"
+msgstr "Modalità scala"
+
+#: editor/import/resource_importer_obj.cpp
+#, fuzzy
+msgid "Offset Mesh"
+msgstr "Scostamento:"
+
+#: editor/import/resource_importer_obj.cpp
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Octahedral Compression"
+msgstr "Compressione"
+
+#: editor/import/resource_importer_obj.cpp
+#, fuzzy
+msgid "Optimize Mesh Flags"
+msgstr "Dimensione delle Spunte"
+
#: editor/import/resource_importer_scene.cpp
msgid "Import as Single Scene"
msgstr "Importa come Scena Singola"
@@ -6832,6 +6796,155 @@ msgstr "Importa come Scene Multiple"
msgid "Import as Multiple Scenes+Materials"
msgstr "Importa come Scene+Materiali Multipli"
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Nodes"
+msgstr "Nodo"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Root Type"
+msgstr "Tipo di membro"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Root Name"
+msgstr "Nome Remoto"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Root Scale"
+msgstr "Scala"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Custom Script"
+msgstr "Taglia nodi"
+
+#: editor/import/resource_importer_scene.cpp scene/resources/texture.cpp
+#, fuzzy
+msgid "Storage"
+msgstr "Memorizzazione file:"
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Use Legacy Names"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+#, fuzzy
+msgid "Materials"
+msgstr "Cambiamenti dei materiali:"
+
+#: editor/import/resource_importer_scene.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Location"
+msgstr "Localizzazione"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Keep On Reimport"
+msgstr "Reimporta"
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+#, fuzzy
+msgid "Meshes"
+msgstr "Mesh"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Ensure Tangents"
+msgstr "Modifica Tangente Curva"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Light Baking"
+msgstr "Lightmapping"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Lightmap Texel Size"
+msgstr "Preprocessa Lightmaps"
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+msgid "Skins"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Use Named Skins"
+msgstr "Aggancia Ridimensionamento"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "External Files"
+msgstr "Esterno"
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Store In Subdir"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Filter Script"
+msgstr "Filtra gli script"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Keep Custom Tracks"
+msgstr "Trasformazione"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Optimizer"
+msgstr "Ottimizza"
+
+#: editor/import/resource_importer_scene.cpp main/main.cpp
+#: modules/mono/mono_gd/gd_mono.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp scene/2d/camera_2d.cpp scene/2d/light_2d.cpp
+#: scene/2d/navigation_polygon.cpp scene/2d/ray_cast_2d.cpp scene/2d/sprite.cpp
+#: scene/2d/y_sort.cpp scene/3d/audio_stream_player_3d.cpp
+#: scene/3d/baked_lightmap.cpp scene/3d/interpolated_camera.cpp
+#: scene/3d/light.cpp scene/3d/navigation_mesh_instance.cpp
+#: scene/3d/physics_joint.cpp scene/3d/ray_cast.cpp scene/3d/sprite_3d.cpp
+#: scene/gui/graph_edit.cpp scene/gui/rich_text_label.cpp
+#: scene/resources/curve.cpp scene/resources/environment.cpp
+#: scene/resources/material.cpp
+msgid "Enabled"
+msgstr "Abilitato"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Max Linear Error"
+msgstr "Max errore lineare:"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Max Angular Error"
+msgstr "Max errore angolare:"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Max Angle"
+msgstr "Valore"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Remove Unused Tracks"
+msgstr "Rimuovi una traccia d'animazione"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Clips"
+msgstr "Segmenti d'animazione"
+
+#: editor/import/resource_importer_scene.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/particles_2d.cpp scene/3d/area.cpp scene/3d/cpu_particles.cpp
+#: scene/3d/particles.cpp scene/resources/environment.cpp
+#, fuzzy
+msgid "Amount"
+msgstr "Quantità:"
+
#: editor/import/resource_importer_scene.cpp
#: editor/plugins/mesh_library_editor_plugin.cpp
msgid "Import Scene"
@@ -6874,11 +6987,150 @@ msgstr ""
msgid "Saving..."
msgstr "Salvataggio..."
+#: editor/import/resource_importer_texture.cpp scene/resources/texture.cpp
+msgid "Lossy Quality"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "HDR Mode"
+msgstr "Modalità di Selezione"
+
+#: editor/import/resource_importer_texture.cpp
+msgid "BPTC LDR"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/mesh_instance_2d.cpp scene/2d/multimesh_instance_2d.cpp
+#: scene/2d/particles_2d.cpp scene/2d/sprite.cpp scene/resources/style_box.cpp
+msgid "Normal Map"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Process"
+msgstr "Post processing"
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Fix Alpha Border"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Premult Alpha"
+msgstr "Modifica Poly"
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Hdr As Srgb"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Invert Color"
+msgstr "Vertice"
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Normal Map Invert Y"
+msgstr "Scala Casuale:"
+
+#: editor/import/resource_importer_texture.cpp
+#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
+#: scene/audio/audio_stream_player.cpp scene/gui/video_player.cpp
+msgid "Stream"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Size Limit"
+msgstr "Limiti"
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Detect 3D"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "SVG"
+msgstr "HSV"
+
#: editor/import/resource_importer_texture.cpp
msgid ""
"Warning, no suitable PC VRAM compression enabled in Project Settings. This "
"texture will not display correctly on PC."
msgstr ""
+"Attenzione, nessuna compressione adatta di PC VRAM abilitata nelle "
+"Impostazioni Progetto. Questa texture non sarà mostrata correttamente su PC."
+
+#: editor/import/resource_importer_texture_atlas.cpp
+#, fuzzy
+msgid "Atlas File"
+msgstr "Dimensione Outline:"
+
+#: editor/import/resource_importer_texture_atlas.cpp
+#, fuzzy
+msgid "Import Mode"
+msgstr "Modalità d'Esportazione:"
+
+#: editor/import/resource_importer_texture_atlas.cpp
+#, fuzzy
+msgid "Crop To Region"
+msgstr "Imposta Regione Tile"
+
+#: editor/import/resource_importer_texture_atlas.cpp
+msgid "Trim Alpha Border From Region"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp scene/2d/physics_body_2d.cpp
+#, fuzzy
+msgid "Force"
+msgstr "Mesh Sorgente:"
+
+#: editor/import/resource_importer_wav.cpp
+msgid "8 Bit"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp main/main.cpp
+#: modules/mono/editor/csharp_project.cpp modules/mono/mono_gd/gd_mono.cpp
+msgid "Mono"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+#, fuzzy
+msgid "Max Rate"
+msgstr "Node Mix"
+
+#: editor/import/resource_importer_wav.cpp
+#, fuzzy
+msgid "Max Rate Hz"
+msgstr "Node Mix"
+
+#: editor/import/resource_importer_wav.cpp
+msgid "Trim"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+#, fuzzy
+msgid "Normalize"
+msgstr "Formato"
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+#, fuzzy
+msgid "Loop Mode"
+msgstr "Modalità spostamento"
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+#, fuzzy
+msgid "Loop Begin"
+msgstr "Modalità spostamento"
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+#, fuzzy
+msgid "Loop End"
+msgstr "Modalità spostamento"
#: editor/import_defaults_editor.cpp
msgid "Select Importer"
@@ -6957,6 +7209,29 @@ msgid "Failed to load resource."
msgstr "Caricamento della risorsa fallito."
#: editor/inspector_dock.cpp
+#, fuzzy
+msgid "Property Name Style"
+msgstr "Nome Progetto:"
+
+#: editor/inspector_dock.cpp scene/gui/color_picker.cpp
+msgid "Raw"
+msgstr "Raw"
+
+#: editor/inspector_dock.cpp
+#, fuzzy
+msgid "Capitalized"
+msgstr "Rendi la prima lettera maiuscola"
+
+#: editor/inspector_dock.cpp
+#, fuzzy
+msgid "Localized"
+msgstr "Locale"
+
+#: editor/inspector_dock.cpp
+msgid "Localization not available for current language."
+msgstr ""
+
+#: editor/inspector_dock.cpp
msgid "Copy Properties"
msgstr "Copia Proprietà"
@@ -7849,7 +8124,7 @@ msgstr "Filtri..."
#: editor/plugins/asset_library_editor_plugin.cpp scene/main/http_request.cpp
msgid "Use Threads"
-msgstr ""
+msgstr "Utilizza Threads"
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Contents:"
@@ -7976,9 +8251,8 @@ msgid "Download Error"
msgstr "Errore durante il download"
#: editor/plugins/asset_library_editor_plugin.cpp
-#, fuzzy
msgid "Available URLs"
-msgstr "Profili disponibili:"
+msgstr "URLs Disponibili"
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Download for this asset is already in progress!"
@@ -8009,18 +8283,26 @@ msgid "License (Z-A)"
msgstr "Licenza (Z-A)"
#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgctxt "Pagination"
msgid "First"
msgstr "Primo"
-#: editor/plugins/asset_library_editor_plugin.cpp scene/gui/control.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgctxt "Pagination"
msgid "Previous"
msgstr "Precedente"
-#: editor/plugins/asset_library_editor_plugin.cpp scene/gui/control.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgctxt "Pagination"
msgid "Next"
msgstr "Successivo"
#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgctxt "Pagination"
msgid "Last"
msgstr "Ultimo"
@@ -8090,13 +8372,13 @@ msgstr ""
"Salva la scena e riprova."
#: 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 ""
"Nessuna mesh da preprocessare. Assicurarsi che contengano un canale UV2 e "
-"che la spunta \"Bake Light\" sia abilitata."
+"che le spunte 'Utilizza in Luce Preprocessata' e 'Genera Lightmap' siano "
+"abilitate."
#: editor/plugins/baked_lightmap_editor_plugin.cpp
msgid "Failed creating lightmap images, make sure path is writable."
@@ -8119,12 +8401,11 @@ msgstr ""
"all'interno nella regione [0.0,1.0] quadra."
#: editor/plugins/baked_lightmap_editor_plugin.cpp
-#, fuzzy
msgid ""
"Godot editor was built without ray tracing support, lightmaps can't be baked."
msgstr ""
-"Godot Editor è stato costruito senza il supporto per il ray tracing, quindi "
-"il baking delle lightmaps non è possibile."
+"L'editor Godot è stato compilato senza il supporto per il ray tracing, non è "
+"possibile preprocessare le lightmaps."
#: editor/plugins/baked_lightmap_editor_plugin.cpp
msgid "Bake Lightmaps"
@@ -8132,7 +8413,7 @@ msgstr "Preprocessa Lightmaps"
#: editor/plugins/baked_lightmap_editor_plugin.cpp
msgid "LightMap Bake"
-msgstr ""
+msgstr "Preprocessa Lightmap"
#: editor/plugins/baked_lightmap_editor_plugin.cpp
msgid "Select lightmap bake file:"
@@ -8144,9 +8425,8 @@ msgid "Preview"
msgstr "Anteprima"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#, fuzzy
msgid "Configure Snap"
-msgstr "Configura lo scatto"
+msgstr "Configura Agganciamento"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Grid Offset:"
@@ -8205,9 +8485,8 @@ msgid "Create Horizontal and Vertical Guides"
msgstr "Crea Guide Orizzontali e Verticali"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#, fuzzy
msgid "Set CanvasItem \"%s\" Pivot Offset to (%d, %d)"
-msgstr "Imposta lo scostamento del Pivot del CanvasItem \"%s\" a (%d, %d)"
+msgstr "Imposta l'Offset del Pivot del CanvasItem \"%s\" a (%d, %d)"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Rotate %d CanvasItems"
@@ -8275,19 +8554,19 @@ msgstr ""
"Se è attivato, spostare i nodi Control modifica le loro ancore invece dei "
"loro margini."
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Top Left"
msgstr "In Alto A Sinistra"
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Top Right"
msgstr "In Alto A Destra"
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Bottom Right"
msgstr "In Basso A Destra"
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Bottom Left"
msgstr "In Basso A Sinistra"
@@ -8451,9 +8730,8 @@ msgid "Alt+Drag: Move selected node."
msgstr "Alt+Trascina: Muovi nodo selezionato."
#: editor/plugins/canvas_item_editor_plugin.cpp
-#, fuzzy
msgid "Alt+Drag: Scale selected node."
-msgstr "Alt+Trascina: Muovi nodo selezionato."
+msgstr "Alt+Trascina: Ridimensiona il nodo selezionato."
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "V: Set selected node's pivot position."
@@ -8487,7 +8765,7 @@ msgstr "Modalità scala"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Shift: Scale proportionally."
-msgstr ""
+msgstr "Shift: Ridimensiona proporzionalmente."
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
@@ -8511,16 +8789,14 @@ msgid "Ruler Mode"
msgstr "Modalità Righello"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#, fuzzy
msgid "Toggle smart snapping."
-msgstr "Commuta lo scatto intelligente."
+msgstr "Commuta l'agganciamento intelligente."
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Use Smart Snap"
msgstr "Usa lo scatto intelligente"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#, fuzzy
msgid "Toggle grid snapping."
msgstr "Commuta la griglia magnetica."
@@ -8529,70 +8805,57 @@ msgid "Use Grid Snap"
msgstr "Usa la griglia magnetica"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#, fuzzy
msgid "Snapping Options"
-msgstr "Opzioni dello scatto"
+msgstr "Opzioni Agganciamento"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#, fuzzy
msgid "Use Rotation Snap"
-msgstr "Scatta la rotazione"
+msgstr "Aggancia Rotazione"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#, fuzzy
msgid "Use Scale Snap"
-msgstr "Scatta la scala"
+msgstr "Aggancia Ridimensionamento"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#, fuzzy
msgid "Snap Relative"
-msgstr "Scatti relativi"
+msgstr "Agganciamento Relativo"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#, fuzzy
msgid "Use Pixel Snap"
-msgstr "Scatta sui pixel"
+msgstr "Agganciamento su Pixel"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#, fuzzy
msgid "Smart Snapping"
-msgstr "Scatto intelligente"
+msgstr "Agganciamento Intelligente"
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Configure Snap..."
-msgstr "Configura gli scatti..."
+msgstr "Configura Agganciamenti..."
#: editor/plugins/canvas_item_editor_plugin.cpp
-#, fuzzy
msgid "Snap to Parent"
-msgstr "Scatta sul genitore"
+msgstr "Aggancia sul Genitore"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#, fuzzy
msgid "Snap to Node Anchor"
-msgstr "Scatta sull'ancora dei nodi"
+msgstr "Aggancia all'Ancora del Nodo"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#, fuzzy
msgid "Snap to Node Sides"
-msgstr "Scatta sui lati dei nodi"
+msgstr "Aggancia ai Lati del Nodo"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#, fuzzy
msgid "Snap to Node Center"
-msgstr "Scatta sul centro dei nodi"
+msgstr "Aggancia al Centro del Nodo"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#, fuzzy
msgid "Snap to Other Nodes"
-msgstr "Scatta sugli altri nodi"
+msgstr "Aggancia agli Altri Nodi"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#, fuzzy
msgid "Snap to Guides"
-msgstr "Scatta sulle guide"
+msgstr "Aggancia alle Guide"
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
@@ -8601,9 +8864,8 @@ msgstr "Blocca l'oggetto selezionato sul posto (non può essere mosso)."
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Lock Selected Node(s)"
-msgstr "Blocca selezionato(i)"
+msgstr "Blocca Nodo/i selezionato/i"
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
@@ -8612,9 +8874,8 @@ msgstr "Sblocca l'oggetto selezionato (può essere mosso)."
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Unlock Selected Node(s)"
-msgstr "Sblocca selezionato(i)"
+msgstr "Sblocca Nodo/i Selezionato/i"
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
@@ -8623,9 +8884,8 @@ msgstr "Accerta che I figli dell'oggetto non siano selezionabili."
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Group Selected Node(s)"
-msgstr "Raggruppa Selezionato(i)"
+msgstr "Raggruppa Nodo/i Selezionato(/i"
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
@@ -8634,9 +8894,8 @@ msgstr "Ripristina l'abilità dei figli dell'oggetto di essere selezionati."
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Ungroup Selected Node(s)"
-msgstr "Rimuovi selezionato(i) dal gruppo"
+msgstr "Separa Nodo/i Selezionato/i"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Skeleton Options"
@@ -8660,23 +8919,20 @@ msgid "View"
msgstr "Vista"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#, fuzzy
msgid "Show"
-msgstr "Mostra la griglia"
+msgstr "Mostra"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#, fuzzy
msgid "Show When Snapping"
-msgstr "Scatto intelligente"
+msgstr "Mostra Se Agganciamento"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Hide"
-msgstr ""
+msgstr "Nascondi"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#, fuzzy
msgid "Toggle Grid"
-msgstr "Commuta la modalità"
+msgstr "Commuta Griglia"
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/polygon_2d_editor_plugin.cpp
@@ -8721,7 +8977,7 @@ msgstr "Anteprima Dimensione Canvas"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Translation mask for inserting keys."
-msgstr "Maschera di traduzione per inserimento chiavi."
+msgstr "Maschera di traslazione per inserimento chiavi."
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Rotation mask for inserting keys."
@@ -8951,7 +9207,6 @@ msgid "Flat 0"
msgstr "Flat 0"
#: editor/plugins/curve_editor_plugin.cpp
-#, fuzzy
msgid "Flat 1"
msgstr "Flat 1"
@@ -8964,9 +9219,8 @@ msgid "Ease Out"
msgstr "Ease Out"
#: editor/plugins/curve_editor_plugin.cpp
-#, fuzzy
msgid "Smoothstep"
-msgstr "Graduale"
+msgstr "Passo Graduale"
#: editor/plugins/curve_editor_plugin.cpp
msgid "Modify Curve Point"
@@ -9024,6 +9278,19 @@ msgstr "Preprocessa GI Probe"
msgid "Gradient Edited"
msgstr "Gradiente Modificato"
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+msgid "Swap GradientTexture2D Fill Points"
+msgstr ""
+
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+msgid "Swap Gradient Fill Points"
+msgstr ""
+
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+#, fuzzy
+msgid "Toggle Grid Snap"
+msgstr "Commuta Griglia"
+
#: editor/plugins/item_list_editor_plugin.cpp
msgid "Item %d"
msgstr "Elemento %d"
@@ -9073,9 +9340,8 @@ msgid "Couldn't create a single convex collision shape."
msgstr "Impossibile creare una singola forma di collisione convessa."
#: editor/plugins/mesh_instance_editor_plugin.cpp
-#, fuzzy
msgid "Create Simplified Convex Shape"
-msgstr "Crea Singola Forma di Collisione Convessa"
+msgstr "Crea Forma Convessa Semplice"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Single Convex Shape"
@@ -9267,8 +9533,9 @@ msgstr ""
"Aggiornare da scena esistente?:\n"
"%s"
-#: editor/plugins/mesh_library_editor_plugin.cpp modules/gridmap/grid_map.cpp
-msgid "Mesh Library"
+#: editor/plugins/mesh_library_editor_plugin.cpp
+#, fuzzy
+msgid "MeshLibrary"
msgstr "Libreria Mesh"
#: editor/plugins/mesh_library_editor_plugin.cpp
@@ -9280,35 +9547,30 @@ msgid "Remove Selected Item"
msgstr "Rimuovi Elemento Selezionato"
#: editor/plugins/mesh_library_editor_plugin.cpp
-#, fuzzy
msgid "Import from Scene (Ignore Transforms)"
-msgstr "Importa da Scena"
+msgstr "Importa da Scena (Ignora Trasformazioni)"
#: editor/plugins/mesh_library_editor_plugin.cpp
-#, fuzzy
msgid "Import from Scene (Apply Transforms)"
-msgstr "Importa da Scena"
+msgstr "Importa da Scena (Applica Trasformazioni)"
#: editor/plugins/mesh_library_editor_plugin.cpp
msgid "Update from Scene"
msgstr "Aggiorna da Scena"
#: editor/plugins/mesh_library_editor_plugin.cpp
-#, fuzzy
msgid "Apply without Transforms"
-msgstr "Applica le trasformazioni dei MeshInstance"
+msgstr "Applica senza Trasformazioni"
#: editor/plugins/mesh_library_editor_plugin.cpp
-#, fuzzy
msgid "Apply with Transforms"
-msgstr "Applica le trasformazioni dei MeshInstance"
+msgstr "Applica con Trasformazioni"
#: editor/plugins/mesh_library_editor_plugin.cpp
#: editor/plugins/tile_map_editor_plugin.cpp
#: modules/gridmap/grid_map_editor_plugin.cpp
-#, fuzzy
msgid "Preview Size"
-msgstr "Anteprima"
+msgstr "Dimensione Anteprima"
#: editor/plugins/multimesh_editor_plugin.cpp
msgid "No mesh source specified (and no MultiMesh set in node)."
@@ -9353,9 +9615,8 @@ msgid "Select a Source Mesh:"
msgstr "Seleziona una Mesh Sorgente:"
#: editor/plugins/multimesh_editor_plugin.cpp
-#, fuzzy
msgid "Select a Target Surface:"
-msgstr "Seleziona una Superficie di Target:"
+msgstr "Seleziona una Superficie Target:"
#: editor/plugins/multimesh_editor_plugin.cpp
msgid "Populate Surface"
@@ -9366,7 +9627,6 @@ msgid "Populate MultiMesh"
msgstr "Popola MultiMesh"
#: editor/plugins/multimesh_editor_plugin.cpp
-#, fuzzy
msgid "Target Surface:"
msgstr "Superficie Target:"
@@ -9628,16 +9888,14 @@ msgstr "Dividere Segmento (in curva)"
#: editor/plugins/path_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp editor/spatial_editor_gizmos.cpp
#: modules/csg/csg_gizmos.cpp
-#, fuzzy
msgid "3D Gizmos"
-msgstr "Gizmos"
+msgstr "Gizmos 3D"
#: editor/plugins/path_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp editor/spatial_editor_gizmos.cpp
#: modules/csg/csg_gizmos.cpp
-#, fuzzy
msgid "Gizmo Colors"
-msgstr "Colori Emissione"
+msgstr "Colori Gizmo"
#: editor/plugins/physical_bone_plugin.cpp
msgid "Move Joint"
@@ -9948,7 +10206,7 @@ msgstr "Chiudi e salva le modifiche?"
#: editor/plugins/script_editor_plugin.cpp
#: editor/plugins/shader_editor_plugin.cpp
msgid "Auto Reload Scripts On External Change"
-msgstr ""
+msgstr "Auto-Ricarica Scripts Se Modifica Esterna"
#: editor/plugins/script_editor_plugin.cpp
msgid "Error writing TextFile:"
@@ -10032,7 +10290,7 @@ msgstr "%s Riferimento di classe"
#: editor/plugins/script_editor_plugin.cpp
msgid "Auto Reload And Parse Scripts On Save"
-msgstr ""
+msgstr "Auto-Ricarica e Analizza Scripts Al Salvataggio"
#: editor/plugins/script_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
@@ -10206,21 +10464,19 @@ msgstr "Risultati Ricerca"
#: editor/plugins/script_editor_plugin.cpp
msgid "Open Dominant Script On Scene Change"
-msgstr ""
+msgstr "Apri Scripts Dominanti Al Cambio Scena"
#: editor/plugins/script_editor_plugin.cpp
msgid "External"
-msgstr ""
+msgstr "Esterno"
#: editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "Use External Editor"
-msgstr "Debug con un editor esterno"
+msgstr "Utilizza Editor Esterno"
#: editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "Exec Path"
-msgstr "Percorso di Esportazione"
+msgstr "Percorso di Esecuzione"
#: editor/plugins/script_editor_plugin.cpp
#, fuzzy
@@ -10229,26 +10485,23 @@ msgstr "Seleziona File Modello"
#: editor/plugins/script_editor_plugin.cpp
msgid "Highlight Current Script"
-msgstr ""
+msgstr "Evidenzia Script Attuale"
#: editor/plugins/script_editor_plugin.cpp
msgid "Script Temperature History Size"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "Current Script Background Color"
-msgstr "Colore di sfondo non valido."
+msgstr "Colore Sfondo dello Script Corrente"
#: editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "Group Help Pages"
-msgstr "Raggruppa Selezionato(i)"
+msgstr "Raggruppa Pagine di Aiuto"
#: editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "Sort Scripts By"
-msgstr "Crea Script"
+msgstr "Orina Scripts Per"
#: editor/plugins/script_editor_plugin.cpp
#, fuzzy
@@ -10272,8 +10525,8 @@ msgstr "Connessioni al metodo:"
msgid "Source"
msgstr "Sorgente"
-#: editor/plugins/script_text_editor.cpp scene/3d/interpolated_camera.cpp
-#: scene/animation/skeleton_ik.cpp
+#: editor/plugins/script_text_editor.cpp platform/uwp/export/export.cpp
+#: scene/3d/interpolated_camera.cpp scene/animation/skeleton_ik.cpp
msgid "Target"
msgstr "Target"
@@ -10413,9 +10666,8 @@ msgid "Find in Files..."
msgstr "Trova nei file..."
#: editor/plugins/script_text_editor.cpp
-#, fuzzy
msgid "Replace in Files..."
-msgstr "Sostituisci..."
+msgstr "Sostituisci nei Files..."
#: editor/plugins/script_text_editor.cpp
msgid "Contextual Help"
@@ -10777,13 +11029,14 @@ msgstr "Anteprima Cinematografica"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "(Not in GLES2)"
-msgstr ""
+msgstr "(Non in GLES2)"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid ""
"Debug draw modes are only available when using the GLES3 renderer, not GLES2."
-msgstr "Non disponibile quando il renderer GLES2 è in uso."
+msgstr ""
+"Le modalità di disegno di debug sono disponibili solo con il renderer GLES3, "
+"non con GLES2"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Freelook Left"
@@ -10865,15 +11118,13 @@ msgstr ""
"(\"raggi X\")."
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Snap Nodes to Floor"
-msgstr "Scatta i nodi sul pavimento"
+msgstr "Aggancia i Nodi al Pavimento"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Couldn't find a solid floor to snap the selection to."
msgstr ""
-"Impossibile trovare un pavimento solido sul quale scattare la selezione."
+"Impossibile trovare un pavimento solido sul quale agganciare la selezione."
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Use Local Space"
@@ -11023,24 +11274,20 @@ msgid "Settings..."
msgstr "Impostazioni…"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Snap Settings"
-msgstr "Impostazioni dello scatto"
+msgstr "Impostazioni Agganciamento"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Translate Snap:"
-msgstr "Scatto della traslazione:"
+msgstr "Agganciamento Traslazione:"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Rotate Snap (deg.):"
-msgstr "Scatto della rotazione (gradi):"
+msgstr "Agganciamento Rotazione (gradi):"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Scale Snap (%):"
-msgstr "Scatto della scala (%):"
+msgstr "Agganciamento Ridimensionamento (%):"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Viewport Settings"
@@ -11095,14 +11342,12 @@ msgid "Manipulator Gizmo Opacity"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Show Viewport Rotation Gizmo"
-msgstr "Blocca Rotazione Vista"
+msgstr "Mostra Gizmo di Rotazione nella Viewport"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Instanced"
-msgstr "Istanza"
+msgstr "Istanziato"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Unnamed Gizmo"
@@ -11264,7 +11509,9 @@ msgstr "Velocità:"
#: editor/plugins/sprite_frames_editor_plugin.cpp
#: modules/gltf/gltf_animation.cpp modules/minimp3/audio_stream_mp3.cpp
-#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp scene/2d/path_2d.cpp
+#: modules/minimp3/resource_importer_mp3.cpp
+#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp
+#: modules/stb_vorbis/resource_importer_ogg_vorbis.cpp scene/2d/path_2d.cpp
#: scene/3d/path.cpp scene/resources/animation.cpp scene/resources/material.cpp
msgid "Loop"
msgstr "Loop"
@@ -11334,14 +11581,12 @@ msgid "Snap Mode:"
msgstr "Modalità dello scatto:"
#: editor/plugins/texture_region_editor_plugin.cpp
-#, fuzzy
msgid "Pixel Snap"
-msgstr "Scatto sui pixel"
+msgstr "Agganciamento Pixel"
#: editor/plugins/texture_region_editor_plugin.cpp
-#, fuzzy
msgid "Grid Snap"
-msgstr "Scatto sulla griglia"
+msgstr "Agganciamento Griglia"
#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Auto Slice"
@@ -11364,9 +11609,8 @@ msgid "TextureRegion"
msgstr "TextureRegion"
#: editor/plugins/theme_editor_plugin.cpp
-#, fuzzy
msgid "Styleboxes"
-msgstr "Stile Box"
+msgstr "Styleboxes"
#: editor/plugins/theme_editor_plugin.cpp
msgid "{num} color(s)"
@@ -11417,9 +11661,8 @@ msgid "Nothing was selected for the import."
msgstr "Non è stato selezionato nulla da importare."
#: editor/plugins/theme_editor_plugin.cpp
-#, fuzzy
msgid "Importing Theme Items"
-msgstr "Importa tema"
+msgstr "Importa Elementi del Tema"
#: editor/plugins/theme_editor_plugin.cpp
msgid "Importing items {n}/{n}"
@@ -11430,9 +11673,8 @@ msgid "Updating the editor"
msgstr "Aggiornamento dell'editor"
#: editor/plugins/theme_editor_plugin.cpp
-#, fuzzy
msgid "Finalizing"
-msgstr "Analizzando"
+msgstr "Completando"
#: editor/plugins/theme_editor_plugin.cpp
msgid "Filter:"
@@ -11468,7 +11710,7 @@ msgstr "Seleziona tutti gli oggetti costanti e i loro dati."
#: editor/plugins/theme_editor_plugin.cpp
msgid "Deselect all visible constant items."
-msgstr ""
+msgstr "Deseleziona tutti gli elementi costanti visibili."
#: editor/plugins/theme_editor_plugin.cpp
msgid "Select all visible font items."
@@ -11476,11 +11718,11 @@ msgstr "Seleziona tutti i font visibili."
#: editor/plugins/theme_editor_plugin.cpp
msgid "Select all visible font items and their data."
-msgstr ""
+msgstr "Seleziona tutti gli elementi di carattere visibili e i loro dati."
#: editor/plugins/theme_editor_plugin.cpp
msgid "Deselect all visible font items."
-msgstr ""
+msgstr "Deseleziona tutti gli elementi di carattere visibili."
#: editor/plugins/theme_editor_plugin.cpp
msgid "Select all visible icon items."
@@ -11560,34 +11802,28 @@ msgid ""
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-#, fuzzy
msgid "Remove All Color Items"
-msgstr "Rimuovi tutti gli elementi"
+msgstr "Rimuovi Tuttigli Elementi Colori"
#: editor/plugins/theme_editor_plugin.cpp
-#, fuzzy
msgid "Rename Item"
-msgstr "Rimuovi l'elemento"
+msgstr "Rinomina Elemento"
#: editor/plugins/theme_editor_plugin.cpp
-#, fuzzy
msgid "Remove All Constant Items"
-msgstr "Rimuovi tutti gli elementi"
+msgstr "Rimuovi Tutti gli Elementi Costanti"
#: editor/plugins/theme_editor_plugin.cpp
-#, fuzzy
msgid "Remove All Font Items"
-msgstr "Rimuovi tutti gli elementi"
+msgstr "Rimuovi Tutti gli Elementi Caratteri"
#: editor/plugins/theme_editor_plugin.cpp
-#, fuzzy
msgid "Remove All Icon Items"
-msgstr "Rimuovi tutti gli elementi"
+msgstr "Rimuovi Tutti gli Elementi Icone"
#: editor/plugins/theme_editor_plugin.cpp
-#, fuzzy
msgid "Remove All StyleBox Items"
-msgstr "Rimuovi tutti gli elementi"
+msgstr "Rimuovi Tutti gli Elementi StyleBox"
#: editor/plugins/theme_editor_plugin.cpp
msgid ""
@@ -11596,54 +11832,44 @@ msgid ""
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-#, fuzzy
msgid "Add Color Item"
-msgstr "Aggiungi Elementi di Classe"
+msgstr "Aggiungi Elementi Colore"
#: editor/plugins/theme_editor_plugin.cpp
-#, fuzzy
msgid "Add Constant Item"
-msgstr "Aggiungi Elementi di Classe"
+msgstr "Aggiungi Elemento Costante"
#: editor/plugins/theme_editor_plugin.cpp
-#, fuzzy
msgid "Add Font Item"
-msgstr "Aggiungi Elemento"
+msgstr "Aggiungi Elemento Carattere"
#: editor/plugins/theme_editor_plugin.cpp
-#, fuzzy
msgid "Add Icon Item"
-msgstr "Aggiungi Elemento"
+msgstr "Aggiungi Elemento Icona"
#: editor/plugins/theme_editor_plugin.cpp
-#, fuzzy
msgid "Add Stylebox Item"
-msgstr "Aggiungi Tutti gli Elementi"
+msgstr "Aggiungi Elemento StyleBox"
#: editor/plugins/theme_editor_plugin.cpp
-#, fuzzy
msgid "Rename Color Item"
-msgstr "Rimuovi Elementi di Classe"
+msgstr "Rinomina Elemento Colore"
#: editor/plugins/theme_editor_plugin.cpp
-#, fuzzy
msgid "Rename Constant Item"
-msgstr "Rimuovi Elementi di Classe"
+msgstr "Rinomina Elemento Costante"
#: editor/plugins/theme_editor_plugin.cpp
-#, fuzzy
msgid "Rename Font Item"
-msgstr "Rinomina Nodo"
+msgstr "Rinomina Elemento Carattere"
#: editor/plugins/theme_editor_plugin.cpp
-#, fuzzy
msgid "Rename Icon Item"
-msgstr "Rinomina Nodo"
+msgstr "Rinomina Elemento Icona"
#: editor/plugins/theme_editor_plugin.cpp
-#, fuzzy
msgid "Rename Stylebox Item"
-msgstr "Rimuovi Elementi Selezionati"
+msgstr "Rinomina Elemento Stylebox"
#: editor/plugins/theme_editor_plugin.cpp
msgid "Invalid file, not a Theme resource."
@@ -11654,33 +11880,28 @@ msgid "Invalid file, same as the edited Theme resource."
msgstr "File non valido, corrisponde alla risorsa Tema in modifica."
#: editor/plugins/theme_editor_plugin.cpp
-#, fuzzy
msgid "Manage Theme Items"
-msgstr "Gestisci i modelli d'esportazione"
+msgstr "Gestisci Elementi Tema"
#: editor/plugins/theme_editor_plugin.cpp
-#, fuzzy
msgid "Edit Items"
-msgstr "Elemento Modificabile"
+msgstr "Modifica Elementi"
#: editor/plugins/theme_editor_plugin.cpp
-#, fuzzy
msgid "Types:"
-msgstr "Tipo:"
+msgstr "Tipi:"
#: editor/plugins/theme_editor_plugin.cpp
-#, fuzzy
msgid "Add Type:"
-msgstr "Tipo:"
+msgstr "Aggiungi Tipo:"
#: editor/plugins/theme_editor_plugin.cpp
msgid "Add Item:"
msgstr "Aggiungi Elemento:"
#: editor/plugins/theme_editor_plugin.cpp
-#, fuzzy
msgid "Add StyleBox Item"
-msgstr "Aggiungi Tutti gli Elementi"
+msgstr "Aggiungi Elemento StyleBox"
#: editor/plugins/theme_editor_plugin.cpp
msgid "Remove Items:"
@@ -11715,57 +11936,48 @@ msgid "Default Theme"
msgstr "Tema Predefinito"
#: editor/plugins/theme_editor_plugin.cpp
-#, fuzzy
msgid "Editor Theme"
-msgstr "Modifica Tema"
+msgstr "Tema dell'Editor"
#: editor/plugins/theme_editor_plugin.cpp
msgid "Select Another Theme Resource:"
msgstr "Seleziona un'altra risorsa del tema:"
#: editor/plugins/theme_editor_plugin.cpp
-#, fuzzy
msgid "Theme Resource"
-msgstr "Rinomina risorsa"
+msgstr "Risorsa del Tema"
#: editor/plugins/theme_editor_plugin.cpp
-#, fuzzy
msgid "Another Theme"
-msgstr "Importa tema"
+msgstr "Altro Tema"
#: editor/plugins/theme_editor_plugin.cpp
-#, fuzzy
msgid "Add Type"
-msgstr "Tipo"
+msgstr "Aggiungi Tipo"
#: editor/plugins/theme_editor_plugin.cpp
msgid "Filter the list of types or create a new custom type:"
-msgstr ""
+msgstr "Filtra la lista dei tipi o creane uno nuovo personalizzato:"
#: editor/plugins/theme_editor_plugin.cpp
-#, fuzzy
msgid "Available Node-based types:"
-msgstr "Profili disponibili:"
+msgstr "Tipi Basati su Nodi Disponibili:"
#: editor/plugins/theme_editor_plugin.cpp
-#, fuzzy
msgid "Type name is empty!"
-msgstr "Il nome del file è vuoto."
+msgstr "Il nome del Tipo è vuoto!"
#: editor/plugins/theme_editor_plugin.cpp
-#, fuzzy
msgid "Are you sure you want to create an empty type?"
-msgstr "Sei sicuro di voler aprire più di un progetto?"
+msgstr "Sei sicuro di voler aprire un tipo vuoto?"
#: editor/plugins/theme_editor_plugin.cpp
-#, fuzzy
msgid "Confirm Item Rename"
-msgstr "Traccia Anim Rinomina"
+msgstr "Conferma Rinomina Elemento"
#: editor/plugins/theme_editor_plugin.cpp
-#, fuzzy
msgid "Cancel Item Rename"
-msgstr "Rinomina in blocco"
+msgstr "Annulla Rinomina Elemento"
#: editor/plugins/theme_editor_plugin.cpp
msgid "Override Item"
@@ -11782,24 +11994,20 @@ msgid ""
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-#, fuzzy
msgid "Add Item Type"
-msgstr "Aggiungi Elemento"
+msgstr "Aggiungi Tipo Elemento"
#: editor/plugins/theme_editor_plugin.cpp
-#, fuzzy
msgid "Set Variation Base Type"
-msgstr "Imposta Tipo di Variabile"
+msgstr "Imposta Tipo di Variazione Base"
#: editor/plugins/theme_editor_plugin.cpp
-#, fuzzy
msgid "Set Base Type"
-msgstr "Cambia Tipo di Base"
+msgstr "Imposta Tipo di Base"
#: editor/plugins/theme_editor_plugin.cpp
-#, fuzzy
msgid "Show Default"
-msgstr "Carica i predefiniti"
+msgstr "Mostra Predefiniti"
#: editor/plugins/theme_editor_plugin.cpp
msgid "Show default type items alongside items that have been overridden."
@@ -11829,28 +12037,24 @@ msgid "Theme:"
msgstr "Tema:"
#: editor/plugins/theme_editor_plugin.cpp
-#, fuzzy
msgid "Manage Items..."
-msgstr "Gestisci i modelli d'esportazione…"
+msgstr "Gestisci Elementi…"
#: editor/plugins/theme_editor_plugin.cpp
msgid "Add, remove, organize and import Theme items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-#, fuzzy
msgid "Add Preview"
-msgstr "Anteprima"
+msgstr "Aggiungi Anteprima"
#: editor/plugins/theme_editor_plugin.cpp
-#, fuzzy
msgid "Default Preview"
-msgstr "Aggiorna Anteprima"
+msgstr "Anteprima Predefinita"
#: editor/plugins/theme_editor_plugin.cpp
-#, fuzzy
msgid "Select UI Scene:"
-msgstr "Seleziona una Mesh Sorgente:"
+msgstr "Seleziona Scena UI:"
#: editor/plugins/theme_editor_preview.cpp
msgid ""
@@ -11859,7 +12063,6 @@ msgid ""
msgstr ""
#: editor/plugins/theme_editor_preview.cpp
-#, fuzzy
msgid "Toggle Button"
msgstr "Interruttore"
@@ -12065,9 +12268,8 @@ msgid "Clear Transform"
msgstr "Azzera la trasformazione"
#: editor/plugins/tile_map_editor_plugin.cpp
-#, fuzzy
msgid "Tile Map"
-msgstr "Disegna TileMap"
+msgstr "Tile Map"
#: editor/plugins/tile_map_editor_plugin.cpp
#: modules/gridmap/grid_map_editor_plugin.cpp
@@ -12079,24 +12281,20 @@ msgid "Palette Item Hseparation"
msgstr ""
#: editor/plugins/tile_map_editor_plugin.cpp
-#, fuzzy
msgid "Show Tile Names"
-msgstr "Mostra tutte le lingue"
+msgstr "Mostra Nomi Tile"
#: editor/plugins/tile_map_editor_plugin.cpp
-#, fuzzy
msgid "Show Tile Ids"
-msgstr "Mostra Righelli"
+msgstr "Mostra Ids Tile"
#: editor/plugins/tile_map_editor_plugin.cpp
-#, fuzzy
msgid "Sort Tiles By Name"
-msgstr "Ordina file"
+msgstr "Ordina Titoli Per Nome"
#: editor/plugins/tile_map_editor_plugin.cpp
-#, fuzzy
msgid "Bucket Fill Preview"
-msgstr "Riempimento"
+msgstr "Anteprima Riempimento"
#: editor/plugins/tile_map_editor_plugin.cpp
#: modules/gridmap/grid_map_editor_plugin.cpp
@@ -12105,14 +12303,12 @@ msgid "Editor Side"
msgstr "Editor"
#: editor/plugins/tile_map_editor_plugin.cpp
-#, fuzzy
msgid "Display Grid"
-msgstr "Mostra Overdraw"
+msgstr "Mostra Griglia"
#: editor/plugins/tile_map_editor_plugin.cpp
-#, fuzzy
msgid "Axis Color"
-msgstr "Scegli un colore"
+msgstr "Colore Asse"
#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Add Texture(s) to TileSet."
@@ -12187,8 +12383,9 @@ msgstr "Bitmask"
msgid "Priority"
msgstr "Priorità"
-#: editor/plugins/tile_set_editor_plugin.cpp main/main.cpp scene/gui/button.cpp
-#: scene/gui/item_list.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp main/main.cpp
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#: scene/gui/button.cpp scene/gui/item_list.cpp
msgid "Icon"
msgstr "Icona"
@@ -12462,7 +12659,6 @@ msgid "TileSet"
msgstr "TileSet"
#: editor/plugins/version_control_editor_plugin.cpp
-#, fuzzy
msgid "No VCS plugins are available."
msgstr "Non sono disponibili estensioni VCS."
@@ -12472,9 +12668,8 @@ msgid ""
msgstr ""
#: editor/plugins/version_control_editor_plugin.cpp
-#, fuzzy
msgid "No commit message was provided."
-msgstr "Nessun nome fornito."
+msgstr "Nessun messaggio di commit fornito."
#: editor/plugins/version_control_editor_plugin.cpp
msgid "Commit"
@@ -12483,12 +12678,12 @@ msgstr "Commit"
#: editor/plugins/version_control_editor_plugin.cpp
#, fuzzy
msgid "Staged Changes"
-msgstr "Cambiamenti degli shader:"
+msgstr "Cambiamenti in Scena"
#: editor/plugins/version_control_editor_plugin.cpp
#, fuzzy
msgid "Unstaged Changes"
-msgstr "Cambiamenti degli shader:"
+msgstr "Cambiamenti non in Scena"
#: editor/plugins/version_control_editor_plugin.cpp
msgid "Commit:"
@@ -12507,14 +12702,12 @@ msgid "Do you want to remove the %s branch?"
msgstr ""
#: editor/plugins/version_control_editor_plugin.cpp
-#, fuzzy
msgid "Do you want to remove the %s remote?"
-msgstr "Sei sicuro di voler aprire più di un progetto?"
+msgstr "Vuoi rimuovere il %s remoto?"
#: editor/plugins/version_control_editor_plugin.cpp
-#, fuzzy
msgid "Apply"
-msgstr "Reimposta"
+msgstr "Applica"
#: editor/plugins/version_control_editor_plugin.cpp
msgid "Version Control System"
@@ -12525,9 +12718,8 @@ msgid "Initialize"
msgstr "Inizializza"
#: editor/plugins/version_control_editor_plugin.cpp
-#, fuzzy
msgid "Remote Login"
-msgstr "Rimuovi punto"
+msgstr "Login da Remoto"
#: editor/plugins/version_control_editor_plugin.cpp
msgid "Select SSH public key path"
@@ -12546,32 +12738,28 @@ msgid "Detect new changes"
msgstr "Rileva nuove modifiche"
#: editor/plugins/version_control_editor_plugin.cpp
-#, fuzzy
msgid "Discard all changes"
-msgstr "Chiudi e salva le modifiche?"
+msgstr "Annulla tutte le modifiche"
#: editor/plugins/version_control_editor_plugin.cpp
-#, fuzzy
msgid "Stage all changes"
-msgstr "Memorizzazione dei cambiamenti locali…"
+msgstr "Applica tutte le modifiche"
#: editor/plugins/version_control_editor_plugin.cpp
msgid "Unstage all changes"
msgstr "Annulla tutte le modifiche"
#: editor/plugins/version_control_editor_plugin.cpp
-#, fuzzy
msgid "Commit Message"
-msgstr "Commit Modifiche"
+msgstr "Messaggio di Commit"
#: editor/plugins/version_control_editor_plugin.cpp
msgid "Commit Changes"
msgstr "Commit Modifiche"
#: editor/plugins/version_control_editor_plugin.cpp
-#, fuzzy
msgid "Commit List"
-msgstr "Commit"
+msgstr "Lista Commit"
#: editor/plugins/version_control_editor_plugin.cpp
msgid "Commit list size"
@@ -12582,33 +12770,28 @@ msgid "Branches"
msgstr "Rami"
#: editor/plugins/version_control_editor_plugin.cpp
-#, fuzzy
msgid "Create New Branch"
-msgstr "Crea Nuovo Progetto"
+msgstr "Crea Nuovo Ramo"
#: editor/plugins/version_control_editor_plugin.cpp
-#, fuzzy
msgid "Remove Branch"
-msgstr "Rimuovi una traccia d'animazione"
+msgstr "Rimuovi Ramo"
#: editor/plugins/version_control_editor_plugin.cpp
msgid "Branch Name"
msgstr ""
#: editor/plugins/version_control_editor_plugin.cpp
-#, fuzzy
msgid "Remotes"
msgstr "Remoto"
#: editor/plugins/version_control_editor_plugin.cpp
-#, fuzzy
msgid "Create New Remote"
-msgstr "Crea Nuovo Progetto"
+msgstr "Crea Nuovo da Remoto"
#: editor/plugins/version_control_editor_plugin.cpp
-#, fuzzy
msgid "Remove Remote"
-msgstr "Rimuovi l'elemento"
+msgstr "Rimuovi da Remoto"
#: editor/plugins/version_control_editor_plugin.cpp
msgid "Remote Name"
@@ -12631,9 +12814,8 @@ msgid "Push"
msgstr ""
#: editor/plugins/version_control_editor_plugin.cpp
-#, fuzzy
msgid "Force Push"
-msgstr "Mesh Sorgente:"
+msgstr "Forza Push"
#: editor/plugins/version_control_editor_plugin.cpp
msgid "Modified"
@@ -12660,14 +12842,12 @@ msgid "View:"
msgstr "Vista:"
#: editor/plugins/version_control_editor_plugin.cpp
-#, fuzzy
msgid "Split"
-msgstr "Dividi Percorso"
+msgstr "Dividi"
#: editor/plugins/version_control_editor_plugin.cpp
-#, fuzzy
msgid "Unified"
-msgstr "Modificato"
+msgstr "Unificato"
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "(GLES3 only)"
@@ -13589,10 +13769,6 @@ msgstr ""
"esportazione o nelle impostazioni di esportazione."
#: editor/project_export.cpp
-msgid "Release"
-msgstr "Rilascio"
-
-#: editor/project_export.cpp
msgid "Exporting All"
msgstr "Esportando Tutto"
@@ -13716,9 +13892,8 @@ msgid ""
msgstr ""
#: editor/project_export.cpp
-#, fuzzy
msgid "More Info..."
-msgstr "Sposta in..."
+msgstr "Maggiori Informazioni..."
#: editor/project_export.cpp
msgid "Export PCK/Zip"
@@ -13828,7 +14003,6 @@ msgid "Couldn't create project.godot in project path."
msgstr "Impossibile creare project.godot nel percorso del progetto."
#: editor/project_manager.cpp
-#, fuzzy
msgid "Error opening package file, not in ZIP format."
msgstr "Errore nell'apertura del file del pacchetto, non è in formato ZIP."
@@ -14054,10 +14228,9 @@ msgstr ""
#. TRANSLATORS: This refers to the application where users manage their Godot projects.
#: editor/project_manager.cpp
-#, fuzzy
msgctxt "Application"
msgid "Project Manager"
-msgstr "Gestore dei progetti"
+msgstr "Gestore Progetto"
#: editor/project_manager.cpp
msgid "Local Projects"
@@ -14358,9 +14531,8 @@ msgid "Translation Resource Remap: Add %d Remap(s)"
msgstr "Rimappatura Risorse per la Traduzione: Aggiungi %d Remap"
#: editor/project_settings_editor.cpp
-#, fuzzy
msgid "Change Resource Remap Language"
-msgstr "Cambia Lingua per il Remap Risorse"
+msgstr "Cambia Lingua per il Remap delle Risorse"
#: editor/project_settings_editor.cpp
msgid "Remove Resource Remap"
@@ -15034,18 +15206,16 @@ msgid "Clear Inheritance? (No Undo!)"
msgstr "Liberare Ereditarietà? (Non Annullabile!)"
#: editor/scene_tree_dock.cpp
-#, fuzzy
msgid "Show Scene Tree Root Selection"
-msgstr "Centra Selezione"
+msgstr "Mostra Selezione del Tree Root di Scena"
#: editor/scene_tree_dock.cpp
msgid "Derive Script Globals By Name"
msgstr ""
#: editor/scene_tree_dock.cpp
-#, fuzzy
msgid "Use Favorites Root Selection"
-msgstr "Selezione Frame"
+msgstr "Usa Selezione di Root da Preferiti"
#: editor/scene_tree_editor.cpp
msgid "Toggle Visible"
@@ -15352,9 +15522,8 @@ msgid "Stack Frames"
msgstr "Stack Frame"
#: editor/script_editor_debugger.cpp
-#, fuzzy
msgid "Filter stack variables"
-msgstr "Filtra tiles"
+msgstr "Filtra variabili su stack"
#: editor/script_editor_debugger.cpp
msgid "Auto Switch To Remote Scene Tree"
@@ -15476,6 +15645,7 @@ msgid "Change AudioStreamPlayer3D Emission Angle"
msgstr "Cambia l'Angolo di Emissione AudioStreamPlayer3D"
#: editor/spatial_editor_gizmos.cpp modules/gltf/gltf_node.cpp
+#: platform/osx/export/export.cpp
msgid "Camera"
msgstr ""
@@ -15489,9 +15659,8 @@ msgstr "Cambia dimensione Telecamera"
#: editor/spatial_editor_gizmos.cpp modules/gltf/gltf_node.cpp
#: scene/3d/physics_body.cpp
-#, fuzzy
msgid "Joint"
-msgstr "Punto"
+msgstr "Unisci"
#: editor/spatial_editor_gizmos.cpp scene/2d/collision_shape_2d.cpp
#: scene/2d/cpu_particles_2d.cpp scene/2d/touch_screen_button.cpp
@@ -15515,23 +15684,20 @@ msgid "Change Particles AABB"
msgstr "Cambia AABB Particelle"
#: editor/spatial_editor_gizmos.cpp
-#, fuzzy
msgid "Reflection Probe"
-msgstr "Seleziona Proprietà"
+msgstr "Sonda di Riflessione"
#: editor/spatial_editor_gizmos.cpp
msgid "Change Probe Extents"
msgstr "Cambia Estensione Probe"
#: editor/spatial_editor_gizmos.cpp
-#, fuzzy
msgid "GI Probe"
-msgstr "Preprocessa GI Probe"
+msgstr "Sonda GI"
#: editor/spatial_editor_gizmos.cpp
-#, fuzzy
msgid "Baked Indirect Light"
-msgstr "Luci indirette"
+msgstr "Luce Indiretta Preprocessata"
#: editor/spatial_editor_gizmos.cpp modules/csg/csg_gizmos.cpp
msgid "Change Sphere Shape Radius"
@@ -15562,24 +15728,20 @@ msgid "Change Ray Shape Length"
msgstr "Cambia lunghezza Ray Shape"
#: editor/spatial_editor_gizmos.cpp
-#, fuzzy
msgid "Navigation Edge"
-msgstr "Modalità Navigazione"
+msgstr "Margine di Navigazione"
#: editor/spatial_editor_gizmos.cpp
-#, fuzzy
msgid "Navigation Edge Disabled"
-msgstr "Modalità Navigazione"
+msgstr "Margine di Navigazione Disabilitato"
#: editor/spatial_editor_gizmos.cpp
-#, fuzzy
msgid "Navigation Solid"
-msgstr "Modalità Navigazione"
+msgstr "Solido di Navigazione"
#: editor/spatial_editor_gizmos.cpp
-#, fuzzy
msgid "Navigation Solid Disabled"
-msgstr "Modalità Navigazione"
+msgstr "Solido di Navigazione Disabilitato"
#: editor/spatial_editor_gizmos.cpp
msgid "Joint Body A"
@@ -15604,7 +15766,7 @@ msgstr "Imposta Posizione Punto Stanza"
#: editor/spatial_editor_gizmos.cpp scene/3d/portal.cpp
#, fuzzy
msgid "Portal Margin"
-msgstr "Imposta Margine"
+msgstr "Margine del Portale"
#: editor/spatial_editor_gizmos.cpp
msgid "Portal Edge"
@@ -15664,7 +15826,7 @@ msgstr "Crea Poligono di Occlusione"
#: editor/spatial_editor_gizmos.cpp
#, fuzzy
msgid "Occluder Hole"
-msgstr "Crea Poligono di Occlusione"
+msgstr "Crea Foro di Occlusione"
#: main/main.cpp
msgid "Godot Physics"
@@ -15677,28 +15839,24 @@ msgstr ""
#: main/main.cpp servers/physics_2d/physics_2d_server_sw.cpp
#: servers/visual/visual_server_scene.cpp
-#, fuzzy
msgid "BVH Collision Margin"
-msgstr "Modalità Collisioni"
+msgstr "Margine di Collisione BVH"
#: main/main.cpp
-#, fuzzy
msgid "Crash Handler"
-msgstr "Imposta Maniglia"
+msgstr "Gestore di Crash"
#: main/main.cpp
-#, fuzzy
msgid "Multithreaded Server"
-msgstr "MultiNode Set"
+msgstr "Server con Multithread"
#: main/main.cpp
msgid "RID Pool Prealloc"
msgstr ""
#: main/main.cpp
-#, fuzzy
msgid "Debugger stdout"
-msgstr "Debugger"
+msgstr "stdout del Debugger"
#: main/main.cpp
msgid "Max Chars Per Second"
@@ -15729,14 +15887,12 @@ msgid "File Logging"
msgstr ""
#: main/main.cpp
-#, fuzzy
msgid "Enable File Logging"
-msgstr "Abilita filtraggio"
+msgstr "Abilita Logging su File"
#: main/main.cpp
-#, fuzzy
msgid "Log Path"
-msgstr "Copia il percorso"
+msgstr "Percorso di Log"
#: main/main.cpp
msgid "Max Log Files"
@@ -15747,9 +15903,8 @@ msgid "Driver"
msgstr ""
#: main/main.cpp
-#, fuzzy
msgid "Driver Name"
-msgstr "Nome Script:"
+msgstr "Nome Driver"
#: main/main.cpp
msgid "Fallback To GLES2"
@@ -15759,10 +15914,10 @@ msgstr ""
msgid "Use Nvidia Rect Flicker Workaround"
msgstr ""
-#: main/main.cpp platform/uwp/os_uwp.cpp
-#, fuzzy
+#: main/main.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp platform/uwp/os_uwp.cpp
msgid "Display"
-msgstr "Mostra tutto"
+msgstr "Display"
#: main/main.cpp modules/csg/csg_shape.cpp
#: modules/opensimplex/noise_texture.cpp scene/2d/line_2d.cpp
@@ -15776,9 +15931,8 @@ msgstr ""
#: scene/resources/cylinder_shape.cpp scene/resources/font.cpp
#: scene/resources/navigation_mesh.cpp scene/resources/primitive_meshes.cpp
#: scene/resources/texture.cpp
-#, fuzzy
msgid "Height"
-msgstr "Luce"
+msgstr "Altezza"
#: main/main.cpp
msgid "Always On Top"
@@ -15803,14 +15957,12 @@ msgid "Allow hiDPI"
msgstr ""
#: main/main.cpp
-#, fuzzy
msgid "V-Sync"
-msgstr "Sincronizza"
+msgstr "Sincronizzazione Verticale"
#: main/main.cpp
-#, fuzzy
msgid "Use V-Sync"
-msgstr "Usa Scatto"
+msgstr "Usa Sincronizzazione Verticale"
#: main/main.cpp
msgid "Per Pixel Transparency"
@@ -15820,41 +15972,25 @@ msgstr ""
msgid "Allowed"
msgstr ""
-#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp scene/2d/camera_2d.cpp
-#: scene/2d/light_2d.cpp scene/2d/navigation_polygon.cpp
-#: scene/2d/ray_cast_2d.cpp scene/2d/sprite.cpp scene/2d/y_sort.cpp
-#: scene/3d/audio_stream_player_3d.cpp scene/3d/baked_lightmap.cpp
-#: scene/3d/interpolated_camera.cpp scene/3d/light.cpp
-#: scene/3d/navigation_mesh_instance.cpp scene/3d/ray_cast.cpp
-#: scene/3d/sprite_3d.cpp scene/gui/graph_edit.cpp
-#: scene/gui/rich_text_label.cpp scene/resources/curve.cpp
-#: scene/resources/environment.cpp
-#, fuzzy
-msgid "Enabled"
-msgstr "Abilita"
-
#: main/main.cpp
msgid "Intended Usage"
msgstr ""
#: main/main.cpp
-#, fuzzy
msgid "Framebuffer Allocation"
-msgstr "Selezione Frame"
+msgstr "Allocazione Framebuffer"
#: main/main.cpp platform/uwp/os_uwp.cpp
-#, fuzzy
msgid "Energy Saving"
-msgstr "Errore di salvataggio"
+msgstr "Risparmio Energia"
#: main/main.cpp
msgid "Threads"
msgstr ""
#: main/main.cpp servers/physics_2d/physics_2d_server_wrap_mt.h
-#, fuzzy
msgid "Thread Model"
-msgstr "Commuta la modalità"
+msgstr "Modello Thread"
#: main/main.cpp
msgid "Thread Safe BVH"
@@ -15864,26 +16000,23 @@ msgstr ""
msgid "Handheld"
msgstr ""
-#: main/main.cpp
-#, fuzzy
+#: main/main.cpp platform/javascript/export/export.cpp
+#: platform/uwp/export/export.cpp
msgid "Orientation"
-msgstr "Documentazione in linea"
+msgstr "Orientazione"
#: main/main.cpp scene/gui/scroll_container.cpp scene/gui/text_edit.cpp
-#: scene/main/scene_tree.cpp
-#, fuzzy
+#: scene/main/scene_tree.cpp scene/register_scene_types.cpp
msgid "Common"
-msgstr "Comunità"
+msgstr "Comune"
#: main/main.cpp
-#, fuzzy
msgid "Physics FPS"
-msgstr "Fotogramma fisico %"
+msgstr "FPS Fisica"
#: main/main.cpp
-#, fuzzy
msgid "Force FPS"
-msgstr "Mesh Sorgente:"
+msgstr "Forza FPS"
#: main/main.cpp
msgid "Enable Pause Aware Picking"
@@ -15913,8 +16046,8 @@ msgstr ""
#: main/main.cpp
#, fuzzy
-msgid "Frame Delay (msec)"
-msgstr "Selezione Frame"
+msgid "Frame Delay Msec"
+msgstr "Ritardo Frame (msec)"
#: main/main.cpp
msgid "Low Processor Mode"
@@ -15933,9 +16066,8 @@ msgid "Hide Home Indicator"
msgstr ""
#: main/main.cpp
-#, fuzzy
msgid "Input Devices"
-msgstr "Tutti i Dispositivi"
+msgstr "Dispositivi Input"
#: main/main.cpp
#, fuzzy
@@ -15951,9 +16083,8 @@ msgid "GLES3"
msgstr ""
#: main/main.cpp servers/visual_server.cpp
-#, fuzzy
msgid "Shaders"
-msgstr "Shader"
+msgstr "Shaders"
#: main/main.cpp
#, fuzzy
@@ -15963,9 +16094,8 @@ msgstr "Forza fallback dello shader"
#: main/main.cpp scene/3d/baked_lightmap.cpp scene/3d/camera.cpp
#: scene/3d/world_environment.cpp scene/main/scene_tree.cpp
#: scene/resources/world.cpp
-#, fuzzy
msgid "Environment"
-msgstr "Mostra Ambiente"
+msgstr "Ambiente"
#: main/main.cpp
msgid "Default Clear Color"
@@ -15976,9 +16106,8 @@ msgid "Boot Splash"
msgstr ""
#: main/main.cpp
-#, fuzzy
msgid "Show Image"
-msgstr "Mostra Ossa"
+msgstr "Mostra Immagine"
#: main/main.cpp
msgid "Image"
@@ -15989,19 +16118,16 @@ msgid "Fullsize"
msgstr ""
#: main/main.cpp scene/resources/dynamic_font.cpp
-#, fuzzy
msgid "Use Filter"
-msgstr "Filtra:"
+msgstr "Usa Filtro"
#: main/main.cpp scene/resources/style_box.cpp
-#, fuzzy
msgid "BG Color"
-msgstr "Colori"
+msgstr "Colore Sfondo"
#: main/main.cpp
-#, fuzzy
msgid "macOS Native Icon"
-msgstr "Imposta Icona Tile"
+msgstr "Icona Nativa macOS"
#: main/main.cpp
msgid "Windows Native Icon"
@@ -16024,14 +16150,12 @@ msgid "Emulate Mouse From Touch"
msgstr ""
#: main/main.cpp
-#, fuzzy
msgid "Mouse Cursor"
-msgstr "Pulsante Mouse"
+msgstr "Cursore Mouse"
#: main/main.cpp
-#, fuzzy
msgid "Custom Image"
-msgstr "Taglia nodi"
+msgstr "Immagine Personalizzata"
#: main/main.cpp
msgid "Custom Image Hotspot"
@@ -16042,25 +16166,17 @@ msgstr ""
msgid "Tooltip Position Offset"
msgstr "Scostamento della rotazione:"
-#: main/main.cpp modules/mono/editor/csharp_project.cpp
-#: modules/mono/mono_gd/gd_mono.cpp
-msgid "Mono"
-msgstr ""
-
#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp
-#, fuzzy
msgid "Debugger Agent"
-msgstr "Debugger"
+msgstr "Agente di Debugger"
#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp
-#, fuzzy
msgid "Wait For Debugger"
-msgstr "Debugger"
+msgstr "Aspetta Debugger"
#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp
-#, fuzzy
msgid "Wait Timeout"
-msgstr "Timeout."
+msgstr "Aspetta il Timeout"
#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp
msgid "Args"
@@ -16075,9 +16191,8 @@ msgid "Unhandled Exception Policy"
msgstr ""
#: main/main.cpp
-#, fuzzy
msgid "Main Loop Type"
-msgstr "Trova tipo del nodo"
+msgstr "Tipo di Loop Principale"
#: main/main.cpp scene/gui/texture_progress.cpp
#: scene/gui/viewport_container.cpp
@@ -16085,9 +16200,8 @@ msgid "Stretch"
msgstr ""
#: main/main.cpp
-#, fuzzy
msgid "Aspect"
-msgstr "Ispettore"
+msgstr "Aspetto"
#: main/main.cpp
msgid "Shrink"
@@ -16149,21 +16263,18 @@ msgid "Calculate Tangents"
msgstr ""
#: modules/csg/csg_shape.cpp
-#, fuzzy
msgid "Use Collision"
-msgstr "Collisione"
+msgstr "Usa Collisioni"
#: modules/csg/csg_shape.cpp servers/physics_2d_server.cpp
-#, fuzzy
msgid "Collision Layer"
-msgstr "Modalità Collisioni"
+msgstr "Layer Collisione"
#: modules/csg/csg_shape.cpp scene/2d/ray_cast_2d.cpp scene/3d/camera.cpp
#: scene/3d/ray_cast.cpp scene/3d/spring_arm.cpp
#: scene/resources/navigation_mesh.cpp servers/physics_server.cpp
-#, fuzzy
msgid "Collision Mask"
-msgstr "Modalità Collisioni"
+msgstr "Maschera di Collisione"
#: modules/csg/csg_shape.cpp
#, fuzzy
@@ -16172,9 +16283,8 @@ msgstr "Converti Maiuscole/Minuscole"
#: modules/csg/csg_shape.cpp scene/2d/canvas_item.cpp scene/2d/particles_2d.cpp
#: scene/resources/primitive_meshes.cpp
-#, fuzzy
msgid "Material"
-msgstr "Cambiamenti dei materiali:"
+msgstr "Materiale"
#: modules/csg/csg_shape.cpp scene/2d/navigation_agent_2d.cpp
#: scene/2d/navigation_obstacle_2d.cpp scene/3d/navigation_agent.cpp
@@ -16184,43 +16294,36 @@ msgstr "Cambiamenti dei materiali:"
#: scene/resources/cylinder_shape.cpp scene/resources/environment.cpp
#: scene/resources/navigation_mesh.cpp scene/resources/primitive_meshes.cpp
#: scene/resources/sphere_shape.cpp
-#, fuzzy
msgid "Radius"
-msgstr "Raggio:"
+msgstr "Raggio"
#: modules/csg/csg_shape.cpp scene/resources/primitive_meshes.cpp
-#, fuzzy
msgid "Radial Segments"
-msgstr "Argomenti Scena Principale:"
+msgstr "Segmenti Radiali"
#: modules/csg/csg_shape.cpp scene/resources/primitive_meshes.cpp
-#, fuzzy
msgid "Rings"
-msgstr "Avvisi"
+msgstr "Anelli"
#: modules/csg/csg_shape.cpp
-#, fuzzy
msgid "Smooth Faces"
-msgstr "Graduale"
+msgstr "Facce Smussate"
#: modules/csg/csg_shape.cpp
-#, fuzzy
msgid "Sides"
-msgstr "Mostra Guide"
+msgstr "Lati"
#: modules/csg/csg_shape.cpp
msgid "Cone"
msgstr ""
#: modules/csg/csg_shape.cpp
-#, fuzzy
msgid "Inner Radius"
-msgstr "Modifica Raggio Interno del Toroide"
+msgstr "Raggio Interno"
#: modules/csg/csg_shape.cpp
-#, fuzzy
msgid "Outer Radius"
-msgstr "Modifica Raggio Esterno del Toroide"
+msgstr "Raggio Esterno"
#: modules/csg/csg_shape.cpp
msgid "Ring Sides"
@@ -16229,9 +16332,8 @@ msgstr ""
#: modules/csg/csg_shape.cpp scene/2d/collision_polygon_2d.cpp
#: scene/2d/light_occluder_2d.cpp scene/2d/polygon_2d.cpp
#: scene/3d/collision_polygon.cpp scene/resources/navigation_mesh.cpp
-#, fuzzy
msgid "Polygon"
-msgstr "Poligoni"
+msgstr "Poligono"
#: modules/csg/csg_shape.cpp
msgid "Spin Degrees"
@@ -16565,9 +16667,8 @@ msgid "Sparse Indices Byte Offset"
msgstr ""
#: modules/gltf/gltf_accessor.cpp
-#, fuzzy
msgid "Sparse Indices Component Type"
-msgstr "Elaborazione Geometria..."
+msgstr "Tipo di Componente degli Indici Sparsi"
#: modules/gltf/gltf_accessor.cpp
msgid "Sparse Values Buffer View"
@@ -16627,7 +16728,7 @@ msgstr "Colori"
msgid "Intensity"
msgstr ""
-#: modules/gltf/gltf_light.cpp scene/2d/light_2d.cpp
+#: modules/gltf/gltf_light.cpp scene/2d/light_2d.cpp scene/3d/light.cpp
#, fuzzy
msgid "Range"
msgstr "Cambia"
@@ -16743,9 +16844,8 @@ msgid "Gloss Factor"
msgstr ""
#: modules/gltf/gltf_spec_gloss.cpp
-#, fuzzy
msgid "Specular Factor"
-msgstr "Operatore scalare."
+msgstr "Coefficiente Speculare"
#: modules/gltf/gltf_spec_gloss.cpp
msgid "Spec Gloss Img"
@@ -16774,11 +16874,6 @@ msgstr "Con i Dati"
msgid "Use Named Skin Binds"
msgstr ""
-#: modules/gltf/gltf_state.cpp scene/3d/physics_joint.cpp
-#, fuzzy
-msgid "Nodes"
-msgstr "Nodo"
-
#: modules/gltf/gltf_state.cpp
#, fuzzy
msgid "Buffer Views"
@@ -16790,16 +16885,6 @@ msgstr ""
#: modules/gltf/gltf_state.cpp
#, fuzzy
-msgid "Meshes"
-msgstr "Mesh"
-
-#: modules/gltf/gltf_state.cpp
-#, fuzzy
-msgid "Materials"
-msgstr "Cambiamenti dei materiali:"
-
-#: modules/gltf/gltf_state.cpp
-#, fuzzy
msgid "Scene Name"
msgstr "Percorso Scena:"
@@ -16815,15 +16900,11 @@ msgstr "Nome del nodo radice"
msgid "Textures"
msgstr "Funzionalità"
-#: modules/gltf/gltf_state.cpp
+#: modules/gltf/gltf_state.cpp platform/uwp/export/export.cpp
msgid "Images"
msgstr ""
#: modules/gltf/gltf_state.cpp
-msgid "Skins"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp
msgid "Cameras"
msgstr ""
@@ -16858,11 +16939,15 @@ msgid "Src Image"
msgstr "Mostra Ossa"
#: modules/gridmap/grid_map.cpp
+msgid "Mesh Library"
+msgstr "Libreria Mesh"
+
+#: modules/gridmap/grid_map.cpp
#, fuzzy
msgid "Physics Material"
msgstr "Fotogramma fisico %"
-#: modules/gridmap/grid_map.cpp
+#: modules/gridmap/grid_map.cpp scene/3d/visual_instance.cpp
#, fuzzy
msgid "Use In Baked Light"
msgstr "Preprocessa Lightmaps"
@@ -16894,6 +16979,7 @@ msgstr "Centro"
#: modules/gridmap/grid_map.cpp scene/2d/collision_object_2d.cpp
#: scene/2d/tile_map.cpp scene/3d/collision_object.cpp scene/3d/soft_body.cpp
+#: scene/resources/material.cpp
msgid "Mask"
msgstr ""
@@ -17079,7 +17165,9 @@ msgid "Ultra Quality Ray Count"
msgstr ""
#: modules/minimp3/audio_stream_mp3.cpp
+#: modules/minimp3/resource_importer_mp3.cpp
#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp
+#: modules/stb_vorbis/resource_importer_ogg_vorbis.cpp
#, fuzzy
msgid "Loop Offset"
msgstr "Scostamento:"
@@ -17887,9 +17975,8 @@ msgstr "Ridimensiona lista"
#: modules/visual_script/visual_script_nodes.cpp
#: scene/resources/visual_shader_nodes.cpp
-#, fuzzy
msgid "Operator"
-msgstr "Operatore sovrapponi."
+msgstr "Operatore"
#: modules/visual_script/visual_script_nodes.cpp
msgid ": Invalid argument of type: "
@@ -17901,12 +17988,11 @@ msgstr ": Argomenti invalidi: "
#: modules/visual_script/visual_script_nodes.cpp
msgid "a if cond, else b"
-msgstr ""
+msgstr "a if condizione, else b"
#: modules/visual_script/visual_script_nodes.cpp
-#, fuzzy
msgid "Var Name"
-msgstr "Nome"
+msgstr "Var Nome"
#: modules/visual_script/visual_script_nodes.cpp
msgid "VariableGet not found in script: "
@@ -17917,64 +18003,52 @@ msgid "VariableSet not found in script: "
msgstr "VariableSet non trovato nello script: "
#: modules/visual_script/visual_script_nodes.cpp
-#, fuzzy
msgid "Preload"
-msgstr "Preload"
+msgstr "Pre-carica"
#: modules/visual_script/visual_script_nodes.cpp
-#, fuzzy
msgid "Get Index"
-msgstr "Indice Z"
+msgstr "Ottieni Indice"
#: modules/visual_script/visual_script_nodes.cpp
-#, fuzzy
msgid "Set Index"
-msgstr "Indice Z"
+msgstr "Imposta Indice"
#: modules/visual_script/visual_script_nodes.cpp
-#, fuzzy
msgid "Global Constant"
-msgstr "Costante"
+msgstr "Costante Globale"
#: modules/visual_script/visual_script_nodes.cpp
-#, fuzzy
msgid "Class Constant"
-msgstr "Costante"
+msgstr "Costante di Classe"
#: modules/visual_script/visual_script_nodes.cpp
-#, fuzzy
msgid "Basic Constant"
-msgstr "Costante"
+msgstr "Costante Base"
#: modules/visual_script/visual_script_nodes.cpp
-#, fuzzy
msgid "Math Constant"
-msgstr "Costante"
+msgstr "Costante Matematica"
#: modules/visual_script/visual_script_nodes.cpp
-#, fuzzy
msgid "Get Engine Singleton"
-msgstr "Singleton GDNative abilitato"
+msgstr "Ottieni Singleton dell'Engine"
#: modules/visual_script/visual_script_nodes.cpp
-#, fuzzy
msgid "Get Scene Node"
-msgstr "Nodo TimeScale"
+msgstr "Ottieni Nodo di Scena"
#: modules/visual_script/visual_script_nodes.cpp
-#, fuzzy
msgid "Get Scene Tree"
-msgstr "Modifica delle scene"
+msgstr "Ottieni Albero di Scena"
#: modules/visual_script/visual_script_nodes.cpp
-#, fuzzy
msgid "Get Self"
-msgstr "Proprio"
+msgstr "Ottieni Self"
#: modules/visual_script/visual_script_nodes.cpp
-#, fuzzy
msgid "CustomNode"
-msgstr "Taglia nodi"
+msgstr "NodoPersonalizzato"
#: modules/visual_script/visual_script_nodes.cpp
msgid "Custom node has no _step() method, can't process graph."
@@ -17997,7 +18071,7 @@ msgstr "Chiamate"
#: modules/visual_script/visual_script_nodes.cpp scene/gui/graph_node.cpp
msgid "Title"
-msgstr ""
+msgstr "Titolo"
#: modules/visual_script/visual_script_nodes.cpp
#, fuzzy
@@ -18045,14 +18119,12 @@ msgid "Wait"
msgstr "Aspetta"
#: modules/visual_script/visual_script_yield_nodes.cpp
-#, fuzzy
msgid "Next Frame"
-msgstr "Sposta Frame"
+msgstr "Frame Successivo"
#: modules/visual_script/visual_script_yield_nodes.cpp
-#, fuzzy
msgid "Next Physics Frame"
-msgstr "% fotogramma fisico"
+msgstr "Fotogramma Fisico Successivo"
#: modules/visual_script/visual_script_yield_nodes.cpp
msgid "%s sec(s)"
@@ -18202,6 +18274,193 @@ msgid "The package must have at least one '.' separator."
msgstr "Il pacchetto deve avere almeno un \".\" separatore."
#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Use Custom Build"
+msgstr "Utilizza Percorso Utente Personalizzato"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Export Format"
+msgstr "Percorso di Esportazione"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Keystore"
+msgstr "Debugger"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Debug User"
+msgstr "Debugger"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+msgid "Debug Password"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Release User"
+msgstr "Rilascio"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Release Password"
+msgstr "Password"
+
+#: platform/android/export/export_plugin.cpp
+msgid "One Click Deploy"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Clear Previous Install"
+msgstr "Ispeziona Istanza Precedente"
+
+#: platform/android/export/export_plugin.cpp scene/resources/shader.cpp
+msgid "Code"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Min SDK"
+msgstr "Dimensione Outline:"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Target SDK"
+msgstr "Target FPS"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Package"
+msgstr "Impacchettando"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Unique Name"
+msgstr "Nome del Nodo:"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Signed"
+msgstr "Segnale"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Classify As Game"
+msgstr "Nome Classe:"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Retain Data On Uninstall"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Exclude From Recents"
+msgstr "Elimina Nodi"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Graphics"
+msgstr "Scostamento della griglia:"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "OpenGL Debug"
+msgstr "Apri"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "XR Features"
+msgstr "Funzionalità"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "XR Mode"
+msgstr "Modalità di Pan"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Hand Tracking"
+msgstr "Impacchettando"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Hand Tracking Frequency"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Passthrough"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Immersive Mode"
+msgstr "Modalità Priorità"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Support Small"
+msgstr "Supporta"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Support Normal"
+msgstr "Supporta"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Support Large"
+msgstr "Supporta"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Support Xlarge"
+msgstr "Supporta"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "User Data Backup"
+msgstr "Interfaccia Utente"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Allow"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Command Line"
+msgstr "Comando"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Extra Args"
+msgstr "Argomenti di chiamata aggiuntivi:"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "APK Expansion"
+msgstr "Cambia espressione"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Salt"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Public Key"
+msgstr "Percorso Chiave SSH Pubblica"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Permissions"
+msgstr "Maschera Emissione"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Custom Permissions"
+msgstr "Avvia una scena personalizzata"
+
+#: platform/android/export/export_plugin.cpp
msgid "Select device from the list"
msgstr "Seleziona il dispositivo dall'elenco"
@@ -18540,6 +18799,178 @@ msgid "The character '%s' is not allowed in Identifier."
msgstr "Il carattere \"%s\" non è consentito nell'Identificatore."
#: platform/iphone/export/export.cpp
+msgid "App Store Team ID"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Provisioning Profile UUID Debug"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Code Sign Identity Debug"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Export Method Debug"
+msgstr "Esporta Con Debug"
+
+#: platform/iphone/export/export.cpp
+msgid "Provisioning Profile UUID Release"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Code Sign Identity Release"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Export Method Release"
+msgstr "Modalità d'Esportazione:"
+
+#: platform/iphone/export/export.cpp
+msgid "Targeted Device Family"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Info"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Identifier"
+msgstr "Identificatore non valido:"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Signature"
+msgstr "Segnale"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Short Version"
+msgstr "Versione"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Copyright"
+msgstr "In Alto A Destra"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Capabilities"
+msgstr "Compatibilità"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Access Wi-Fi"
+msgstr "Accedi"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Push Notifications"
+msgstr "Rotazione Casuale:"
+
+#: platform/iphone/export/export.cpp scene/3d/baked_lightmap.cpp
+#, fuzzy
+msgid "User Data"
+msgstr "Interfaccia Utente"
+
+#: platform/iphone/export/export.cpp
+msgid "Accessible From Files App"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Accessible From Itunes Sharing"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Privacy"
+msgstr "Tasto Fisico"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Camera Usage Description"
+msgstr "Descrizione"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Microphone Usage Description"
+msgstr "Descrizioni delle proprietà"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Photolibrary Usage Description"
+msgstr "Descrizioni delle proprietà"
+
+#: platform/iphone/export/export.cpp
+msgid "iPhone 120 X 120"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPhone 180 X 180"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 76 X 76"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 152 X 152"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 167 X 167"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "App Store 1024 X 1024"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Spotlight 40 X 40"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Spotlight 80 X 80"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Storyboard"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Use Launch Screen Storyboard"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Image Scale Mode"
+msgstr "Modalità scala"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Custom Image @2x"
+msgstr "Immagine Personalizzata"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Custom Image @3x"
+msgstr "Immagine Personalizzata"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Use Custom BG Color"
+msgstr "Taglia nodi"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Custom BG Color"
+msgstr "Taglia nodi"
+
+#: platform/iphone/export/export.cpp
msgid "App Store Team ID not specified - cannot configure the project."
msgstr ""
"App Store Team ID non specificato - non è possibile configurare il progetto."
@@ -18577,6 +19008,80 @@ msgid "Could not read file:"
msgstr "Impossibile leggere il file:"
#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Variant"
+msgstr "Separazione:"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Export Type"
+msgstr "Esporta"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "VRAM Texture Compression"
+msgstr "Cambia espressione"
+
+#: platform/javascript/export/export.cpp
+msgid "For Desktop"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "For Mobile"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Html"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Export Icon"
+msgstr "Espandi Tutto"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Custom Html Shell"
+msgstr "Taglia nodi"
+
+#: platform/javascript/export/export.cpp
+msgid "Head Include"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Canvas Resize Policy"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Focus Canvas On Start"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Experimental Virtual Keyboard"
+msgstr "Filtra segnali"
+
+#: platform/javascript/export/export.cpp
+msgid "Progressive Web App"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Offline Page"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 144 X 144"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 180 X 180"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 512 X 512"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
msgid "Could not read HTML shell:"
msgstr "Impossibile leggere la shell HTML:"
@@ -18690,6 +19195,202 @@ msgid "Unknown object type."
msgstr ""
#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "App Category"
+msgstr "Categoria:"
+
+#: platform/osx/export/export.cpp
+msgid "High Res"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Location Usage Description"
+msgstr "Descrizione"
+
+#: platform/osx/export/export.cpp
+msgid "Address Book Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Calendar Usage Description"
+msgstr "Descrizione"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Photos Library Usage Description"
+msgstr "Descrizioni delle proprietà"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Desktop Folder Usage Description"
+msgstr "Descrizioni del metodo"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Documents Folder Usage Description"
+msgstr "Descrizioni del metodo"
+
+#: platform/osx/export/export.cpp
+msgid "Downloads Folder Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Network Volumes Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Removable Volumes Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#, fuzzy
+msgid "Codesign"
+msgstr "Nodo"
+
+#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Identity"
+msgstr "Indenta"
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#, fuzzy
+msgid "Timestamp"
+msgstr "Tempo"
+
+#: platform/osx/export/export.cpp
+msgid "Hardened Runtime"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Replace Existing Signature"
+msgstr "Sostituisci nei file"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Entitlements"
+msgstr "Gizmos"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Custom File"
+msgstr "Taglia nodi"
+
+#: platform/osx/export/export.cpp
+msgid "Allow JIT Code Execution"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Allow Unsigned Executable Memory"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Allow Dyld Environment Variables"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Disable Library Validation"
+msgstr "Pulsante disabilitato"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Audio Input"
+msgstr "Aggiungi Input"
+
+#: platform/osx/export/export.cpp
+msgid "Address Book"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Calendars"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Photos Library"
+msgstr "Esporta Libreria"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Apple Events"
+msgstr "Aggiungi Evento"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Debugging"
+msgstr "Debug"
+
+#: platform/osx/export/export.cpp
+msgid "App Sandbox"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Network Server"
+msgstr "Peer di Rete"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Network Client"
+msgstr "Peer di Rete"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Device Usb"
+msgstr "Dispositivo"
+
+#: platform/osx/export/export.cpp
+msgid "Device Bluetooth"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Files Downloads"
+msgstr "Scarica"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Files Pictures"
+msgstr "Funzionalità"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Files Music"
+msgstr "Files"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Files Movies"
+msgstr "Filtra tiles"
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#, fuzzy
+msgid "Custom Options"
+msgstr "Opzioni Bus"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Notarization"
+msgstr "Localizzazione"
+
+#: platform/osx/export/export.cpp
+msgid "Apple ID Name"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Apple ID Password"
+msgstr "Password"
+
+#: platform/osx/export/export.cpp
+msgid "Apple Team ID"
+msgstr ""
+
+#: platform/osx/export/export.cpp
msgid ""
"Note: The notarization process generally takes less than an hour. When the "
"process is completed, you'll receive an email."
@@ -18718,11 +19419,8 @@ msgid "Creating app bundle"
msgstr "Creando la miniatura"
#: platform/osx/export/export.cpp
-#, fuzzy
msgid "Could not find template app to export:"
-msgstr ""
-"Impossibile trovare il template APK per l'esportazione:\n"
-"%s"
+msgstr "Impossibile trovare il template dell'app per l'esportazione:"
#: platform/osx/export/export.cpp
msgid ""
@@ -18887,6 +19585,136 @@ msgid "Force Builtin Codesign"
msgstr ""
#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Architecture"
+msgstr "Aggiungere una voce di architettura"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Display Name"
+msgstr "Dimensione Display"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Short Name"
+msgstr "Nome Script:"
+
+#: platform/uwp/export/export.cpp
+msgid "Publisher"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Publisher Display Name"
+msgstr "Nome visualizzato del publisher del pacchetto invalido."
+
+#: platform/uwp/export/export.cpp
+msgid "Product Guid"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Publisher Guid"
+msgstr "Rimuovi Guide"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Signing"
+msgstr "Segnale"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Certificate"
+msgstr "Certificati"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Algorithm"
+msgstr "Debugger"
+
+#: platform/uwp/export/export.cpp
+msgid "Major"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Minor"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Build"
+msgstr "Modalità Righello"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Revision"
+msgstr "Cambia espressione"
+
+#: platform/uwp/export/export.cpp
+msgid "Landscape"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Portrait"
+msgstr "Porta"
+
+#: platform/uwp/export/export.cpp
+msgid "Landscape Flipped"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Portrait Flipped"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Store Logo"
+msgstr "Modalità scala"
+
+#: platform/uwp/export/export.cpp
+msgid "Square 44 X 44 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 71 X 71 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 150 X 150 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 310 X 310 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Wide 310 X 150 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Splash Screen"
+msgstr "Draw Calls:"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Tiles"
+msgstr "Files"
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Square 150 X 150"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Wide 310 X 150"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Square 310 X 310"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
msgid "Invalid package short name."
msgstr "Nome breve del pacchetto non valido."
@@ -18966,34 +19794,69 @@ msgid "Debug Certificate"
msgstr ""
#: platform/uwp/export/export.cpp
-msgid "Debug Password"
+#, fuzzy
+msgid "Debug Algorithm"
+msgstr "Debugger"
+
+#: platform/windows/export/export.cpp
+msgid "Identity Type"
msgstr ""
-#: platform/uwp/export/export.cpp
+#: platform/windows/export/export.cpp
+msgid "Timestamp Server URL"
+msgstr ""
+
+#: platform/windows/export/export.cpp
#, fuzzy
-msgid "Debug Algorithm"
+msgid "Digest Algorithm"
msgstr "Debugger"
#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "File Version"
+msgstr "Versione"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Product Version"
+msgstr "Versione prodotto non valida:"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Company Name"
+msgstr "Nome del Nodo:"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Product Name"
+msgstr "Nome Progetto:"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "File Description"
+msgstr "Descrizione"
+
+#: platform/windows/export/export.cpp
+msgid "Trademarks"
+msgstr ""
+
+#: platform/windows/export/export.cpp
msgid ""
"The rcedit tool must be configured in the Editor Settings (Export > Windows "
"> Rcedit) to change the icon or app information data."
msgstr ""
#: platform/windows/export/export.cpp
-#, fuzzy
msgid "Invalid icon path:"
-msgstr "Percorso non valido."
+msgstr "Percorso icona non valido:"
#: platform/windows/export/export.cpp
-#, fuzzy
msgid "Invalid file version:"
-msgstr "Estensione non valida."
+msgstr "Versione file non valida:"
#: platform/windows/export/export.cpp
-#, fuzzy
msgid "Invalid product version:"
-msgstr "GUID prodotto invalido."
+msgstr "Versione prodotto non valida:"
#: platform/windows/export/export.cpp
#, fuzzy
@@ -19049,12 +19912,14 @@ msgstr "Esegui"
msgid "Centered"
msgstr "Centro"
-#: scene/2d/animated_sprite.cpp scene/2d/camera_2d.cpp scene/2d/light_2d.cpp
+#: scene/2d/animated_sprite.cpp scene/2d/camera_2d.cpp
+#: scene/2d/cpu_particles_2d.cpp scene/2d/light_2d.cpp
#: scene/2d/parallax_background.cpp scene/2d/parallax_layer.cpp
#: scene/2d/path_2d.cpp scene/2d/polygon_2d.cpp scene/2d/sprite.cpp
-#: scene/3d/path.cpp scene/3d/physics_body.cpp scene/3d/sprite_3d.cpp
-#: scene/gui/graph_node.cpp scene/gui/rich_text_effect.cpp
-#: scene/main/canvas_layer.cpp scene/resources/material.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/path.cpp scene/3d/physics_body.cpp
+#: scene/3d/sprite_3d.cpp scene/gui/graph_node.cpp
+#: scene/gui/rich_text_effect.cpp scene/main/canvas_layer.cpp
+#: scene/resources/material.cpp scene/resources/particles_material.cpp
#: scene/resources/style_box.cpp
#, fuzzy
msgid "Offset"
@@ -19129,11 +19994,6 @@ msgstr "Aggiungi un bus audio"
msgid "Override"
msgstr "Sovrascrizioni"
-#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
-#: scene/audio/audio_stream_player.cpp scene/gui/video_player.cpp
-msgid "Stream"
-msgstr ""
-
#: scene/2d/audio_stream_player_2d.cpp scene/audio/audio_stream_player.cpp
#: scene/gui/video_player.cpp servers/audio/effects/audio_effect_amplify.cpp
#, fuzzy
@@ -19160,13 +20020,13 @@ msgid "Stream Paused"
msgstr ""
#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
-#: scene/3d/reflection_probe.cpp scene/3d/visual_instance.cpp
-#: scene/resources/material.cpp
+#: scene/3d/light.cpp scene/3d/reflection_probe.cpp
+#: scene/3d/visual_instance.cpp scene/resources/material.cpp
#, fuzzy
msgid "Max Distance"
msgstr "Scegli la Distanza:"
-#: scene/2d/audio_stream_player_2d.cpp
+#: scene/2d/audio_stream_player_2d.cpp scene/3d/light.cpp
#, fuzzy
msgid "Attenuation"
msgstr "Animazione"
@@ -19222,6 +20082,24 @@ msgstr "Modalità spostamento"
msgid "Limit"
msgstr ""
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/style_box.cpp
+#, fuzzy
+msgid "Left"
+msgstr "UI Sinistra"
+
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/style_box.cpp
+#, fuzzy
+msgid "Right"
+msgstr "Luce"
+
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/dynamic_font.cpp scene/resources/style_box.cpp
+#, fuzzy
+msgid "Bottom"
+msgstr "In Basso A Sinistra"
+
#: scene/2d/camera_2d.cpp
#, fuzzy
msgid "Smoothed"
@@ -19467,13 +20345,6 @@ msgstr ""
msgid "Emitting"
msgstr "Impostazioni:"
-#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp scene/3d/area.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
-#: scene/resources/environment.cpp
-#, fuzzy
-msgid "Amount"
-msgstr "Quantità:"
-
#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp
#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
msgid "Lifetime"
@@ -19538,18 +20409,13 @@ msgstr ""
#: scene/2d/mesh_instance_2d.cpp scene/2d/multimesh_instance_2d.cpp
#: scene/2d/particles_2d.cpp scene/2d/polygon_2d.cpp scene/2d/sprite.cpp
#: scene/3d/sprite_3d.cpp scene/gui/nine_patch_rect.cpp
-#: scene/gui/texture_rect.cpp scene/resources/sky.cpp
-#: scene/resources/style_box.cpp scene/resources/visual_shader_nodes.cpp
+#: scene/gui/texture_rect.cpp scene/resources/material.cpp
+#: scene/resources/sky.cpp scene/resources/style_box.cpp
+#: scene/resources/visual_shader_nodes.cpp
#, fuzzy
msgid "Texture"
msgstr "Testo"
-#: scene/2d/cpu_particles_2d.cpp scene/2d/mesh_instance_2d.cpp
-#: scene/2d/multimesh_instance_2d.cpp scene/2d/particles_2d.cpp
-#: scene/2d/sprite.cpp scene/resources/style_box.cpp
-msgid "Normal Map"
-msgstr ""
-
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
#, fuzzy
@@ -19558,9 +20424,8 @@ msgstr "Maschera Emissione"
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
-#, fuzzy
msgid "Sphere Radius"
-msgstr "Sorgente Emissione: "
+msgstr "Raggio della Sfera"
#: scene/2d/cpu_particles_2d.cpp
#, fuzzy
@@ -19573,10 +20438,10 @@ msgid "Normals"
msgstr "Formato"
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/3d/sprite_3d.cpp scene/resources/material.cpp
-#: scene/resources/particles_material.cpp scene/resources/texture.cpp
-msgid "Flags"
-msgstr ""
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Align Y"
+msgstr "Assegna"
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
@@ -19597,6 +20462,12 @@ msgid "Initial Velocity"
msgstr "Inizializza"
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Velocity Random"
+msgstr "Velocità"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp servers/physics_2d_server.cpp
#: servers/physics_server.cpp
msgid "Angular Velocity"
@@ -19605,6 +20476,12 @@ msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
#, fuzzy
+msgid "Velocity Curve"
+msgstr "Velocità"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
msgid "Orbit Velocity"
msgstr "Orbita la visuale a destra"
@@ -19616,6 +20493,23 @@ msgstr "Lineare"
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Accel"
+msgstr "Accedi"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Accel Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Accel Curve"
+msgstr "Dividi Curva"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
msgid "Radial Accel"
msgstr ""
@@ -19625,19 +20519,55 @@ msgid "Tangential Accel"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/2d/joints_2d.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/vehicle_body.cpp
-#: scene/resources/particles_material.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/physics_joint.cpp
+#: scene/3d/vehicle_body.cpp scene/resources/particles_material.cpp
#: servers/audio/effects/audio_effect_reverb.cpp
msgid "Damping"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+msgid "Damping Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Damping Curve"
+msgstr "Dividi Curva"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp scene/3d/light.cpp
+#: scene/resources/particles_material.cpp
msgid "Angle"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+msgid "Angle Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Angle Curve"
+msgstr "Chiudi Curva"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#, fuzzy
+msgid "Scale Amount"
+msgstr "Quantità:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+msgid "Scale Amount Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#, fuzzy
+msgid "Scale Amount Curve"
+msgstr "Scala a partire dal cursore"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
#, fuzzy
msgid "Color Ramp"
msgstr "Colori"
@@ -19653,6 +20583,48 @@ msgstr ""
msgid "Hue Variation"
msgstr "Separazione:"
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Variation"
+msgstr "Separazione:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Variation Random"
+msgstr "Separazione:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Variation Curve"
+msgstr "Separazione:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Speed Random"
+msgstr "Scala"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Speed Curve"
+msgstr "Dividi Curva"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Offset Random"
+msgstr "Scostamento:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Offset Curve"
+msgstr "Chiudi Curva"
+
#: scene/2d/joints_2d.cpp
msgid "Node A and Node B must be PhysicsBody2Ds"
msgstr "Nodo A e Nodo B devono essere PhysicsBody2D"
@@ -19684,6 +20656,7 @@ msgid "Node B"
msgstr "Nodo"
#: scene/2d/joints_2d.cpp scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp
+#: scene/3d/light.cpp scene/3d/physics_joint.cpp
#: scene/resources/environment.cpp
msgid "Bias"
msgstr ""
@@ -19693,7 +20666,7 @@ msgstr ""
msgid "Disable Collision"
msgstr "Pulsante disabilitato"
-#: scene/2d/joints_2d.cpp
+#: scene/2d/joints_2d.cpp scene/3d/physics_joint.cpp
msgid "Softness"
msgstr ""
@@ -19711,7 +20684,7 @@ msgstr "Inizializza"
msgid "Rest Length"
msgstr ""
-#: scene/2d/joints_2d.cpp scene/3d/vehicle_body.cpp
+#: scene/2d/joints_2d.cpp scene/3d/physics_joint.cpp scene/3d/vehicle_body.cpp
msgid "Stiffness"
msgstr ""
@@ -19734,7 +20707,7 @@ msgid "Texture Scale"
msgstr "TextureRegion"
#: scene/2d/light_2d.cpp scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp
-#: scene/resources/environment.cpp scene/resources/sky.cpp
+#: scene/3d/light.cpp scene/resources/environment.cpp scene/resources/sky.cpp
msgid "Energy"
msgstr ""
@@ -19775,12 +20748,6 @@ msgstr "Vista dal retro"
msgid "Gradient Length"
msgstr "Gradiente Modificato"
-#: scene/2d/light_2d.cpp scene/gui/control.cpp
-#: scene/resources/navigation_mesh.cpp
-#, fuzzy
-msgid "Filter"
-msgstr "Filtri:"
-
#: scene/2d/light_2d.cpp
#, fuzzy
msgid "Filter Smooth"
@@ -19960,9 +20927,8 @@ msgstr ""
#: scene/2d/node_2d.cpp scene/2d/polygon_2d.cpp scene/3d/spatial.cpp
#: scene/main/canvas_layer.cpp
-#, fuzzy
msgid "Rotation Degrees"
-msgstr "Ruotando di %s gradi."
+msgstr "Rotazione in Gradi"
#: scene/2d/node_2d.cpp
#, fuzzy
@@ -19970,9 +20936,8 @@ msgid "Global Rotation"
msgstr "Costante"
#: scene/2d/node_2d.cpp
-#, fuzzy
msgid "Global Rotation Degrees"
-msgstr "Ruotando di %s gradi."
+msgstr "Rotazione Globale in Gradi"
#: scene/2d/node_2d.cpp
#, fuzzy
@@ -20221,11 +21186,6 @@ msgid "Applied Forces"
msgstr ""
#: scene/2d/physics_body_2d.cpp
-#, fuzzy
-msgid "Force"
-msgstr "Mesh Sorgente:"
-
-#: scene/2d/physics_body_2d.cpp
msgid "Torque"
msgstr ""
@@ -20235,13 +21195,12 @@ msgid "Safe Margin"
msgstr "Imposta Margine"
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-#, fuzzy
msgid "Sync To Physics"
-msgstr " (Fisico)"
+msgstr "Sincronizza con Fisica"
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
#, fuzzy
-msgid "Moving platform"
+msgid "Moving Platform"
msgstr "Spostando l'output"
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
@@ -20250,7 +21209,7 @@ msgstr ""
#: scene/2d/physics_body_2d.cpp scene/2d/touch_screen_button.cpp
#: scene/3d/physics_body.cpp scene/gui/texture_button.cpp
-#: scene/resources/line_shape_2d.cpp
+#: scene/resources/line_shape_2d.cpp scene/resources/material.cpp
#, fuzzy
msgid "Normal"
msgstr "Formato"
@@ -20497,6 +21456,34 @@ msgstr ""
"VisibilityEnabler2D funziona meglio se usato con il nodo radice della scena "
"modificata direttamente come genitore."
+#: scene/2d/visibility_notifier_2d.cpp scene/3d/visibility_notifier.cpp
+#, fuzzy
+msgid "Pause Animations"
+msgstr "Incolla Animazione"
+
+#: scene/2d/visibility_notifier_2d.cpp scene/3d/visibility_notifier.cpp
+msgid "Freeze Bodies"
+msgstr ""
+
+#: scene/2d/visibility_notifier_2d.cpp
+#, fuzzy
+msgid "Pause Particles"
+msgstr "Particelle"
+
+#: scene/2d/visibility_notifier_2d.cpp
+#, fuzzy
+msgid "Pause Animated Sprites"
+msgstr "Incolla Animazione"
+
+#: scene/2d/visibility_notifier_2d.cpp
+#, fuzzy
+msgid "Process Parent"
+msgstr "Abilita Priorità Tile"
+
+#: scene/2d/visibility_notifier_2d.cpp
+msgid "Physics Process Parent"
+msgstr ""
+
#: scene/3d/area.cpp
msgid "Reverb Bus"
msgstr ""
@@ -20584,9 +21571,8 @@ msgid "Emission Angle"
msgstr "Colori Emissione"
#: scene/3d/audio_stream_player_3d.cpp
-#, fuzzy
msgid "Degrees"
-msgstr "Ruotando di %s gradi."
+msgstr "Gradi"
#: scene/3d/audio_stream_player_3d.cpp
#, fuzzy
@@ -20598,6 +21584,7 @@ msgid "Attenuation Filter"
msgstr ""
#: scene/3d/audio_stream_player_3d.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
#: servers/audio/effects/audio_effect_filter.cpp
msgid "Cutoff Hz"
msgstr ""
@@ -20642,11 +21629,6 @@ msgid "Octree"
msgstr "Sottoalbero"
#: scene/3d/baked_lightmap.cpp
-#, fuzzy
-msgid "User Data"
-msgstr "Interfaccia Utente"
-
-#: scene/3d/baked_lightmap.cpp
msgid "Finding meshes and lights"
msgstr "Cercando mesh e luci"
@@ -20729,9 +21711,8 @@ msgid "Custom Sky"
msgstr "Taglia nodi"
#: scene/3d/baked_lightmap.cpp
-#, fuzzy
msgid "Custom Sky Rotation Degrees"
-msgstr "Ruotando di %s gradi."
+msgstr "Gradi di Rotazione del Cielo Personalizzati"
#: scene/3d/baked_lightmap.cpp scene/3d/ray_cast.cpp
#, fuzzy
@@ -20922,6 +21903,16 @@ msgid "Ring Axis"
msgstr "Avvisi"
#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Rotate Y"
+msgstr "Ruota"
+
+#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Disable Z"
+msgstr "Oggetto disabilitato"
+
+#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
msgid "Flatness"
msgstr ""
@@ -20962,16 +21953,11 @@ msgstr "Libreria Dinamica"
msgid "Dynamic Range"
msgstr "Libreria Dinamica"
-#: scene/3d/gi_probe.cpp
+#: scene/3d/gi_probe.cpp scene/3d/light.cpp
msgid "Normal Bias"
msgstr ""
#: scene/3d/gi_probe.cpp
-#, fuzzy
-msgid "Compress"
-msgstr "Componenti"
-
-#: scene/3d/gi_probe.cpp
msgid "Plotting Meshes"
msgstr "Tracciando Meshes"
@@ -21003,16 +21989,31 @@ msgstr ""
#: scene/3d/light.cpp
#, fuzzy
+msgid "Indirect Energy"
+msgstr "Colori Emissione"
+
+#: scene/3d/light.cpp
+#, fuzzy
msgid "Negative"
msgstr "GDNative"
#: scene/3d/light.cpp
#, fuzzy
+msgid "Specular"
+msgstr "Modalità Righello"
+
+#: scene/3d/light.cpp
+#, fuzzy
msgid "Bake Mode"
msgstr "Modalità Bitmask"
#: scene/3d/light.cpp
#, fuzzy
+msgid "Contact"
+msgstr "Contrasto"
+
+#: scene/3d/light.cpp
+#, fuzzy
msgid "Reverse Cull Face"
msgstr "Ripristina il volume di un bus"
@@ -21023,11 +22024,31 @@ msgstr "Direzioni"
#: scene/3d/light.cpp
#, fuzzy
+msgid "Split 1"
+msgstr "Dividi"
+
+#: scene/3d/light.cpp
+#, fuzzy
+msgid "Split 2"
+msgstr "Dividi"
+
+#: scene/3d/light.cpp
+#, fuzzy
+msgid "Split 3"
+msgstr "Dividi"
+
+#: scene/3d/light.cpp
+#, fuzzy
msgid "Blend Splits"
msgstr "Tempi di Blend:"
#: scene/3d/light.cpp
#, fuzzy
+msgid "Bias Split Scale"
+msgstr "Scatta la scala"
+
+#: scene/3d/light.cpp
+#, fuzzy
msgid "Depth Range"
msgstr "Profondità"
@@ -21054,14 +22075,18 @@ msgstr ""
msgid "Spot"
msgstr ""
+#: scene/3d/light.cpp
+#, fuzzy
+msgid "Angle Attenuation"
+msgstr "Animazione"
+
#: scene/3d/mesh_instance.cpp
msgid "Software Skinning"
msgstr ""
#: scene/3d/mesh_instance.cpp
-#, fuzzy
msgid "Transform Normals"
-msgstr "Transform Abortito."
+msgstr "Trasforma Normals"
#: scene/3d/navigation.cpp scene/resources/curve.cpp
#, fuzzy
@@ -21193,6 +22218,63 @@ msgstr "Asse"
#: scene/3d/physics_body.cpp
#, fuzzy
+msgid "Linear X"
+msgstr "Lineare"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Linear Y"
+msgstr "Lineare"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Linear Z"
+msgstr "Lineare"
+
+#: scene/3d/physics_body.cpp
+msgid "Angular X"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Angular Y"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Angular Z"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Motion X"
+msgstr "Azione"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Motion Y"
+msgstr "Azione"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Motion Z"
+msgstr "Azione"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Move Lock X"
+msgstr "Sposta Nodo"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Move Lock Y"
+msgstr "Sposta Nodo"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Move Lock Z"
+msgstr "Sposta Nodo"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
msgid "Body Offset"
msgstr "Scostamento:"
@@ -21226,6 +22308,15 @@ msgid "Exclude Nodes"
msgstr "Elimina Nodi"
#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Params"
+msgstr "Parametro modificato:"
+
+#: scene/3d/physics_joint.cpp
+msgid "Impulse Clamp"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit"
msgstr ""
@@ -21239,6 +22330,55 @@ msgstr "Maiuscolo"
msgid "Lower"
msgstr "Minuscolo"
+#: scene/3d/physics_joint.cpp scene/3d/vehicle_body.cpp
+#, fuzzy
+msgid "Relaxation"
+msgstr "Separazione:"
+
+#: scene/3d/physics_joint.cpp
+msgid "Motor"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Target Velocity"
+msgstr "Orbita la visuale a destra"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Max Impulse"
+msgstr "Velocità:"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit"
+msgstr "Lineare"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Upper Distance"
+msgstr "Scegli la Distanza:"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Lower Distance"
+msgstr "Scegli la Distanza:"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Restitution"
+msgstr "Descrizione"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motion"
+msgstr "Inizializza"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Ortho"
+msgstr "Ortogonale da Dietro"
+
#: scene/3d/physics_joint.cpp
#, fuzzy
msgid "Upper Angle"
@@ -21251,6 +22391,16 @@ msgstr "Minuscolo"
#: scene/3d/physics_joint.cpp
#, fuzzy
+msgid "Angular Motion"
+msgstr "Animazione"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Angular Ortho"
+msgstr "Max errore angolare:"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
msgid "Swing Span"
msgstr "Salvando la scena"
@@ -21259,17 +22409,99 @@ msgid "Twist Span"
msgstr ""
#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit X"
+msgstr "Lineare"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motor X"
+msgstr "Inizializza"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Force Limit"
+msgstr "Draw Calls:"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Spring X"
+msgstr "Spaziatura Linee"
+
+#: scene/3d/physics_joint.cpp
+msgid "Equilibrium Point"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit X"
msgstr ""
#: scene/3d/physics_joint.cpp
+msgid "Erp"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Motor X"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Spring X"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit Y"
+msgstr "Lineare"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motor Y"
+msgstr "Inizializza"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Spring Y"
+msgstr "Spaziatura Linee"
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit Y"
msgstr ""
#: scene/3d/physics_joint.cpp
+msgid "Angular Motor Y"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Spring Y"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit Z"
+msgstr "Lineare"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motor Z"
+msgstr "Inizializza"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Spring Z"
+msgstr "Spaziatura Linee"
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit Z"
msgstr ""
+#: scene/3d/physics_joint.cpp
+msgid "Angular Motor Z"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Spring Z"
+msgstr ""
+
#: scene/3d/portal.cpp
msgid "The RoomManager should not be a child or grandchild of a Portal."
msgstr "Il RoomManager non deve essere figlio o nipote di un Portal."
@@ -21283,9 +22515,8 @@ msgid "A RoomGroup should not be a child or grandchild of a Portal."
msgstr "Un RoomGroup non dovrebbe essere figlio o nipote di un Portal."
#: scene/3d/portal.cpp
-#, fuzzy
msgid "Portal Active"
-msgstr " [portali attivi]"
+msgstr "Portale Attivo"
#: scene/3d/portal.cpp scene/resources/occluder_shape_polygon.cpp
msgid "Two Way"
@@ -21392,7 +22623,7 @@ msgstr ""
msgid "Use Default Simplify"
msgstr ""
-#: scene/3d/room.cpp
+#: scene/3d/room.cpp scene/3d/room_manager.cpp
msgid "Room Simplify"
msgstr ""
@@ -21435,6 +22666,13 @@ msgstr "Ci dovrebbe essere un solo RoomManager nello SceneTree."
msgid "Main"
msgstr ""
+#: scene/3d/room_manager.cpp scene/animation/animation_player.cpp
+#: scene/animation/animation_tree.cpp scene/animation/animation_tree_player.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+#, fuzzy
+msgid "Active"
+msgstr "Azione"
+
#: scene/3d/room_manager.cpp
msgid "Roomlist"
msgstr ""
@@ -21459,6 +22697,54 @@ msgid "Gameplay"
msgstr ""
#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Gameplay Monitor"
+msgstr "Monitor"
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Use Secondary PVS"
+msgstr "Scatta la scala"
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Merge Meshes"
+msgstr "Mesh"
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Show Margins"
+msgstr "Mostra Origine"
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Debug Sprawl"
+msgstr "Debug"
+
+#: scene/3d/room_manager.cpp
+msgid "Overlap Warning Threshold"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Preview Camera"
+msgstr "Dimensione Anteprima"
+
+#: scene/3d/room_manager.cpp
+msgid "Portal Depth Limit"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Default Portal Margin"
+msgstr "Margine del Portale"
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Roaming Expansion Margin"
+msgstr "Espandi Tutto"
+
+#: scene/3d/room_manager.cpp
msgid ""
"RoomList path is invalid.\n"
"Please check the RoomList branch has been assigned in the RoomManager."
@@ -21523,9 +22809,8 @@ msgid "Parent Collision Ignore"
msgstr "Crea Poligono di Collisione"
#: scene/3d/soft_body.cpp
-#, fuzzy
msgid "Simulation Precision"
-msgstr "Animation tree invalido."
+msgstr "Precisione Simulazione"
#: scene/3d/soft_body.cpp
#, fuzzy
@@ -21605,6 +22890,21 @@ msgstr "Scatto sui pixel"
msgid "Billboard"
msgstr ""
+#: scene/3d/sprite_3d.cpp scene/resources/material.cpp
+#, fuzzy
+msgid "Transparent"
+msgstr "Trasponi"
+
+#: scene/3d/sprite_3d.cpp
+#, fuzzy
+msgid "Shaded"
+msgstr "Shader"
+
+#: scene/3d/sprite_3d.cpp
+#, fuzzy
+msgid "Double Sided"
+msgstr "Doppio click"
+
#: scene/3d/sprite_3d.cpp
msgid "Alpha Cut"
msgstr ""
@@ -21657,9 +22957,8 @@ msgid "Use As Steering"
msgstr ""
#: scene/3d/vehicle_body.cpp
-#, fuzzy
msgid "Wheel"
-msgstr "Rotellina Su."
+msgstr "Rotellina"
#: scene/3d/vehicle_body.cpp
msgid "Roll Influence"
@@ -21680,11 +22979,6 @@ msgstr "Cambia espressione"
msgid "Max Force"
msgstr "Errore"
-#: scene/3d/vehicle_body.cpp
-#, fuzzy
-msgid "Relaxation"
-msgstr "Separazione:"
-
#: scene/3d/visibility_notifier.cpp
msgid "AABB"
msgstr ""
@@ -21829,7 +23123,7 @@ msgstr "Tempo(i) di Crossfade:"
#: scene/animation/animation_blend_tree.cpp
#, fuzzy
-msgid "autorestart_"
+msgid "Auto Restart"
msgstr "Riavvio Automatico:"
#: scene/animation/animation_blend_tree.cpp
@@ -21916,13 +23210,6 @@ msgstr "Opzioni della classe:"
msgid "Default Blend Time"
msgstr "Tema Predefinito"
-#: scene/animation/animation_player.cpp scene/animation/animation_tree.cpp
-#: scene/animation/animation_tree_player.cpp
-#: servers/audio/effects/audio_effect_delay.cpp
-#, fuzzy
-msgid "Active"
-msgstr "Azione"
-
#: scene/animation/animation_player.cpp
msgid "Method Call Mode"
msgstr ""
@@ -22049,10 +23336,6 @@ msgstr "Reparent Nodo"
msgid "Max Iterations"
msgstr "Crea funzione"
-#: scene/animation/tween.cpp scene/resources/texture.cpp
-msgid "Repeat"
-msgstr ""
-
#: scene/animation/tween.cpp
msgid "Playback Process Mode"
msgstr ""
@@ -22083,20 +23366,6 @@ msgstr "Modalità di Selezione"
msgid "Alignment"
msgstr ""
-#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
-#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
-#: scene/resources/style_box.cpp
-#, fuzzy
-msgid "Horizontal"
-msgstr "Orizzontale:"
-
-#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
-#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
-#: scene/resources/style_box.cpp
-#, fuzzy
-msgid "Vertical"
-msgstr "Verticale:"
-
#: scene/gui/base_button.cpp
#, fuzzy
msgid "Shortcut In Tooltip"
@@ -22199,10 +23468,6 @@ msgid "HSV"
msgstr "HSV"
#: scene/gui/color_picker.cpp
-msgid "Raw"
-msgstr "Raw"
-
-#: scene/gui/color_picker.cpp
msgid "Switch between hexadecimal and code values."
msgstr "Cambia tra valori esadecimali e valori di codice."
@@ -22270,22 +23535,45 @@ msgid "Focus"
msgstr "Metti a fuoco il percorso"
#: scene/gui/control.cpp
-msgid "Mouse"
+msgid "Neighbour Left"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Neighbour Top"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Neighbour Right"
msgstr ""
#: scene/gui/control.cpp
#, fuzzy
+msgid "Neighbour Bottom"
+msgstr "In Centro In Basso"
+
+#: scene/gui/control.cpp
+msgid "Next"
+msgstr "Successivo"
+
+#: scene/gui/control.cpp
+msgid "Previous"
+msgstr "Precedente"
+
+#: scene/gui/control.cpp
+msgid "Mouse"
+msgstr ""
+
+#: scene/gui/control.cpp
msgid "Default Cursor Shape"
-msgstr "Carica la disposizione di bus predefinita."
+msgstr "Forma Cursore Predefinita"
#: scene/gui/control.cpp
msgid "Pass On Modal Close Click"
msgstr ""
#: scene/gui/control.cpp
-#, fuzzy
msgid "Size Flags"
-msgstr "Dimensione: "
+msgstr "Dimensione delle Spunte"
#: scene/gui/control.cpp
#, fuzzy
@@ -22307,7 +23595,7 @@ msgid "Dialog"
msgstr "Finestra di XForm"
#: scene/gui/dialogs.cpp
-msgid "Hide On Ok"
+msgid "Hide On OK"
msgstr ""
#: scene/gui/dialogs.cpp scene/gui/label.cpp
@@ -22406,7 +23694,7 @@ msgid "Timers"
msgstr "Tempo"
#: scene/gui/item_list.cpp scene/gui/popup_menu.cpp scene/gui/tree.cpp
-msgid "Incremental Search Max Interval (msec)"
+msgid "Incremental Search Max Interval Msec"
msgstr ""
#: scene/gui/item_list.cpp scene/gui/tree.cpp
@@ -22655,9 +23943,8 @@ msgid "Max Value"
msgstr "Valore"
#: scene/gui/range.cpp
-#, fuzzy
msgid "Page"
-msgstr "Pagina: "
+msgstr "Pagina"
#: scene/gui/range.cpp
#, fuzzy
@@ -22846,9 +24133,8 @@ msgid "All Tabs In Front"
msgstr ""
#: scene/gui/tab_container.cpp scene/gui/tabs.cpp
-#, fuzzy
msgid "Drag To Rearrange Enabled"
-msgstr "Trascina e rilascia per riordinare."
+msgstr "Abilitato Trascinamento Per Riordinare"
#: scene/gui/tab_container.cpp
msgid "Use Hidden Tabs For Min Size"
@@ -22994,6 +24280,26 @@ msgstr "In Centro A Sinistra"
msgid "Nine Patch Stretch"
msgstr "Modalità d'interpolazione"
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Left"
+msgstr "Imposta Margine"
+
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Top"
+msgstr "Imposta Margine"
+
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Right"
+msgstr "Imposta Margine"
+
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Bottom"
+msgstr "Modalità di Selezione"
+
#: scene/gui/tree.cpp
msgid "Custom Minimum Height"
msgstr ""
@@ -23031,8 +24337,9 @@ msgid "Paused"
msgstr ""
#: scene/gui/video_player.cpp
-msgid "Buffering (msec)"
-msgstr ""
+#, fuzzy
+msgid "Buffering Msec"
+msgstr "Buffers"
#: scene/gui/video_player.cpp
#, fuzzy
@@ -23068,9 +24375,8 @@ msgid "Max Redirects"
msgstr ""
#: scene/main/http_request.cpp
-#, fuzzy
msgid "Timeout"
-msgstr "Timeout."
+msgstr "Timeout"
#: scene/main/node.cpp
#, fuzzy
@@ -23201,9 +24507,8 @@ msgid "Draw 2D Outlines"
msgstr "Crea Outline"
#: scene/main/scene_tree.cpp servers/visual_server.cpp
-#, fuzzy
msgid "Reflections"
-msgstr "Direzioni"
+msgstr "Riflessi"
#: scene/main/scene_tree.cpp
#, fuzzy
@@ -23394,6 +24699,22 @@ msgid "Shadow Atlas"
msgstr "Nuova Atlas"
#: scene/main/viewport.cpp
+msgid "Quad 0"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 1"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 2"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 3"
+msgstr ""
+
+#: scene/main/viewport.cpp
#, fuzzy
msgid "Canvas Transform"
msgstr "Azzera la trasformazione"
@@ -23408,6 +24729,11 @@ msgid "Tooltip Delay (sec)"
msgstr ""
#: scene/register_scene_types.cpp
+#, fuzzy
+msgid "Swap OK Cancel"
+msgstr "UI Annulla"
+
+#: scene/register_scene_types.cpp
msgid "Use hiDPI"
msgstr ""
@@ -23422,21 +24748,6 @@ msgid "Custom Font"
msgstr "Taglia nodi"
#: scene/resources/audio_stream_sample.cpp
-#, fuzzy
-msgid "Loop Mode"
-msgstr "Modalità spostamento"
-
-#: scene/resources/audio_stream_sample.cpp
-#, fuzzy
-msgid "Loop Begin"
-msgstr "Modalità spostamento"
-
-#: scene/resources/audio_stream_sample.cpp
-#, fuzzy
-msgid "Loop End"
-msgstr "Modalità spostamento"
-
-#: scene/resources/audio_stream_sample.cpp
#: servers/audio/effects/audio_stream_generator.cpp servers/audio_server.cpp
#, fuzzy
msgid "Mix Rate"
@@ -23496,6 +24807,17 @@ msgstr "Opzioni aggiuntive:"
#: scene/resources/dynamic_font.cpp
#, fuzzy
+msgid "Char"
+msgstr "Caratteri validi:"
+
+#: scene/resources/dynamic_font.cpp scene/resources/world.cpp
+#: scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Space"
+msgstr "Scena Principale"
+
+#: scene/resources/dynamic_font.cpp
+#, fuzzy
msgid "Font"
msgstr "Font"
@@ -23528,9 +24850,8 @@ msgid "Sky Rotation"
msgstr "Passo di rotazione:"
#: scene/resources/environment.cpp
-#, fuzzy
msgid "Sky Rotation Degrees"
-msgstr "Ruotando di %s gradi."
+msgstr "Gradi di Rotazione del Cielo"
#: scene/resources/environment.cpp
msgid "Canvas Max Layer"
@@ -23710,9 +25031,8 @@ msgid "Distance"
msgstr "Scegli la Distanza:"
#: scene/resources/environment.cpp
-#, fuzzy
msgid "Transition"
-msgstr "Transizione: "
+msgstr "Transizione"
#: scene/resources/environment.cpp
msgid "DOF Near Blur"
@@ -23723,10 +25043,49 @@ msgid "Glow"
msgstr ""
#: scene/resources/environment.cpp
-msgid "Bloom"
+#, fuzzy
+msgid "Levels"
+msgstr "Sviluppatori"
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "1"
msgstr ""
#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+#, fuzzy
+msgid "2"
+msgstr "2D"
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+#, fuzzy
+msgid "3"
+msgstr "3D"
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "4"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "5"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "6"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "7"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "Bloom"
+msgstr "Bloom"
+
+#: scene/resources/environment.cpp
msgid "HDR Threshold"
msgstr ""
@@ -23758,9 +25117,8 @@ msgid "Saturation"
msgstr "Separazione:"
#: scene/resources/environment.cpp
-#, fuzzy
msgid "Color Correction"
-msgstr "Funzione colore."
+msgstr "Correzione Colore"
#: scene/resources/font.cpp
msgid "Chars"
@@ -23815,10 +25173,68 @@ msgid "Next Pass"
msgstr "Piano Successivo"
#: scene/resources/material.cpp
+msgid "Use Shadow To Opacity"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Unshaded"
+msgstr "Mostra Unshaded"
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Vertex Lighting"
+msgstr "Luci dirette"
+
+#: scene/resources/material.cpp
+msgid "No Depth Test"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Use Point Size"
+msgstr "Vista frontale"
+
+#: scene/resources/material.cpp
+msgid "World Triplanar"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Fixed Size"
+msgstr "Vista frontale"
+
+#: scene/resources/material.cpp
+msgid "Albedo Tex Force sRGB"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Do Not Receive Shadows"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Disable Ambient Light"
+msgstr "Indenta a destra"
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Ensure Correct Normals"
+msgstr "Trasforma Normals"
+
+#: scene/resources/material.cpp
#, fuzzy
msgid "Vertex Color"
msgstr "Vertice"
+#: scene/resources/material.cpp
+msgid "Use As Albedo"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Is sRGB"
+msgstr ""
+
#: scene/resources/material.cpp servers/visual_server.cpp
#, fuzzy
msgid "Parameters"
@@ -23855,6 +25271,11 @@ msgid "Billboard Mode"
msgstr "Modalità Righello"
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Billboard Keep Scale"
+msgstr "Modalità Righello"
+
+#: scene/resources/material.cpp
msgid "Grow"
msgstr ""
@@ -23864,6 +25285,10 @@ msgid "Grow Amount"
msgstr "Quantità:"
#: scene/resources/material.cpp
+msgid "Use Alpha Scissor"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Alpha Scissor Threshold"
msgstr ""
@@ -23895,10 +25320,20 @@ msgid "Metallic Specular"
msgstr ""
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Metallic Texture"
+msgstr "Normal Texture"
+
+#: scene/resources/material.cpp
msgid "Metallic Texture Channel"
msgstr ""
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Roughness Texture"
+msgstr "Rimuovi Texture"
+
+#: scene/resources/material.cpp
msgid "Roughness Texture Channel"
msgstr ""
@@ -23918,6 +25353,16 @@ msgid "Emission Operator"
msgstr "Colori Emissione"
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Emission On UV2"
+msgstr "Maschera Emissione"
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Emission Texture"
+msgstr "Sorgente Emissione: "
+
+#: scene/resources/material.cpp
msgid "NormalMap"
msgstr ""
@@ -23932,6 +25377,11 @@ msgstr "Inclinazione Casuale:"
#: scene/resources/material.cpp
#, fuzzy
+msgid "Rim Texture"
+msgstr "Rimuovi Texture"
+
+#: scene/resources/material.cpp
+#, fuzzy
msgid "Clearcoat"
msgstr "Rimuovi tutto"
@@ -23941,15 +25391,28 @@ msgid "Clearcoat Gloss"
msgstr "Azzera Posa"
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Clearcoat Texture"
+msgstr "Modifica Tema"
+
+#: scene/resources/material.cpp
msgid "Anisotropy"
msgstr ""
#: scene/resources/material.cpp
+msgid "Anisotropy Flowmap"
+msgstr ""
+
+#: scene/resources/material.cpp
#, fuzzy
msgid "Ambient Occlusion"
msgstr "Occlusione"
#: scene/resources/material.cpp
+msgid "On UV2"
+msgstr ""
+
+#: scene/resources/material.cpp
#, fuzzy
msgid "Texture Channel"
msgstr "TextureRegion"
@@ -23982,9 +25445,13 @@ msgid "Subsurf Scatter"
msgstr ""
#: scene/resources/material.cpp
-#, fuzzy
msgid "Transmission"
-msgstr "Transizione: "
+msgstr "Trasmissione"
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Transmission Texture"
+msgstr "Trasmissione"
#: scene/resources/material.cpp
#, fuzzy
@@ -24006,6 +25473,10 @@ msgid "UV1"
msgstr "UV"
#: scene/resources/material.cpp
+msgid "Triplanar"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Triplanar Sharpness"
msgstr ""
@@ -24043,14 +25514,12 @@ msgid "Custom AABB"
msgstr ""
#: scene/resources/multimesh.cpp
-#, fuzzy
msgid "Color Format"
-msgstr "Operatore colore."
+msgstr "Formato Colore"
#: scene/resources/multimesh.cpp
-#, fuzzy
msgid "Transform Format"
-msgstr "Transform Abortito."
+msgstr "Formato Trasformazione"
#: scene/resources/multimesh.cpp
msgid "Custom Data Format"
@@ -24066,9 +25535,8 @@ msgid "Visible Instance Count"
msgstr ""
#: scene/resources/multimesh.cpp
-#, fuzzy
msgid "Transform Array"
-msgstr "Transform Abortito."
+msgstr "Array di Trasformazione"
#: scene/resources/multimesh.cpp
#, fuzzy
@@ -24091,9 +25559,8 @@ msgid "Sample Partition Type"
msgstr "Imposta Tipo di Variabile"
#: scene/resources/navigation_mesh.cpp
-#, fuzzy
msgid "Parsed Geometry Type"
-msgstr "Elaborazione Geometria..."
+msgstr "Tipo di Geometria Analizzata"
#: scene/resources/navigation_mesh.cpp
msgid "Source Geometry Mode"
@@ -24203,9 +25670,8 @@ msgid "Point Texture"
msgstr "Punti Emissione:"
#: scene/resources/particles_material.cpp
-#, fuzzy
msgid "Normal Texture"
-msgstr "Sorgente Emissione: "
+msgstr "Normal Texture"
#: scene/resources/particles_material.cpp
#, fuzzy
@@ -24217,6 +25683,16 @@ msgstr "Modifica Tema"
msgid "Point Count"
msgstr "Aggiungi Porta Input"
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Scale Random"
+msgstr "Fattore di scala:"
+
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Scale Curve"
+msgstr "Chiudi Curva"
+
#: scene/resources/physics_material.cpp
msgid "Rough"
msgstr ""
@@ -24279,10 +25755,6 @@ msgid "A"
msgstr ""
#: scene/resources/shader.cpp
-msgid "Code"
-msgstr ""
-
-#: scene/resources/shader.cpp
#, fuzzy
msgid "Custom Defines"
msgstr "Avvia una scena personalizzata"
@@ -24379,15 +25851,6 @@ msgstr ""
#: scene/resources/texture.cpp
#, fuzzy
-msgid "Storage"
-msgstr "Memorizzazione file:"
-
-#: scene/resources/texture.cpp
-msgid "Lossy Quality"
-msgstr ""
-
-#: scene/resources/texture.cpp
-#, fuzzy
msgid "Load Path"
msgstr "Carica preset"
@@ -24397,9 +25860,8 @@ msgid "Base Texture"
msgstr "Rimuovi Texture"
#: scene/resources/texture.cpp
-#, fuzzy
msgid "Image Size"
-msgstr "Pagina: "
+msgstr "Dimensione Immagine"
#: scene/resources/texture.cpp
#, fuzzy
@@ -24518,11 +25980,6 @@ msgstr "Funzione di confronto non valida per quel tipo."
msgid "Fallback Environment"
msgstr "Mostra Ambiente"
-#: scene/resources/world.cpp scene/resources/world_2d.cpp
-#, fuzzy
-msgid "Space"
-msgstr "Scena Principale"
-
#: scene/resources/world.cpp
#, fuzzy
msgid "Scenario"
@@ -24603,10 +26060,37 @@ msgstr ""
msgid "Wet"
msgstr ""
-#: servers/audio/effects/audio_effect_compressor.cpp
-msgid "Threshold"
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "Voice"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+msgid "Delay (ms)"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_phaser.cpp
+msgid "Rate Hz"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#, fuzzy
+msgid "Depth (ms)"
+msgstr "Profondità"
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+msgid "Level dB"
msgstr ""
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+#: servers/audio/effects/audio_effect_panner.cpp
+#, fuzzy
+msgid "Pan"
+msgstr "Piano:"
+
#: servers/audio/effects/audio_effect_compressor.cpp
#: servers/audio/effects/audio_effect_filter.cpp
msgid "Gain"
@@ -24630,20 +26114,6 @@ msgid "Tap 1"
msgstr ""
#: servers/audio/effects/audio_effect_delay.cpp
-msgid "Delay (ms)"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_delay.cpp
-msgid "Level dB"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_delay.cpp
-#: servers/audio/effects/audio_effect_panner.cpp
-#, fuzzy
-msgid "Pan"
-msgstr "Piano:"
-
-#: servers/audio/effects/audio_effect_delay.cpp
msgid "Tap 2"
msgstr ""
@@ -24705,10 +26175,6 @@ msgstr ""
msgid "Range Max Hz"
msgstr ""
-#: servers/audio/effects/audio_effect_phaser.cpp
-msgid "Rate Hz"
-msgstr ""
-
#: servers/audio/effects/audio_effect_pitch_shift.cpp
msgid "Oversampling"
msgstr ""
@@ -24724,7 +26190,7 @@ msgid "Predelay"
msgstr ""
#: servers/audio/effects/audio_effect_reverb.cpp
-msgid "(msec)"
+msgid "Msec"
msgstr ""
#: servers/audio/effects/audio_effect_reverb.cpp
@@ -24937,9 +26403,8 @@ msgid "Constants cannot be modified."
msgstr "Le constanti non possono essere modificate."
#: servers/visual/visual_server_scene.cpp
-#, fuzzy
msgid "Spatial Partitioning"
-msgstr "Partizionando..."
+msgstr "Partizionamento Spaziale"
#: servers/visual_server.cpp
#, fuzzy
@@ -25127,9 +26592,8 @@ msgid "Legacy Stream"
msgstr ""
#: servers/visual_server.cpp
-#, fuzzy
msgid "Batching"
-msgstr "Ricerca..."
+msgstr "Batching"
#: servers/visual_server.cpp
msgid "Use Batching"
@@ -25163,7 +26627,7 @@ msgstr "Gestisci i modelli d'esportazione…"
#: servers/visual_server.cpp
msgid "Batch Buffer Size"
-msgstr ""
+msgstr "Dimensione Batch Buffer"
#: servers/visual_server.cpp
msgid "Item Reordering Lookahead"
@@ -25180,11 +26644,11 @@ msgstr "Incolla Frame"
#: servers/visual_server.cpp
msgid "GLES2"
-msgstr ""
+msgstr "GLES2"
#: servers/visual_server.cpp
msgid "Compatibility"
-msgstr ""
+msgstr "Compatibilità"
#: servers/visual_server.cpp
msgid "Disable Half Float"
@@ -25213,14 +26677,12 @@ msgid "PVS Logging"
msgstr ""
#: servers/visual_server.cpp
-#, fuzzy
msgid "Use Signals"
-msgstr "Segnali"
+msgstr "Usa Segnali"
#: servers/visual_server.cpp
-#, fuzzy
msgid "Remove Danglers"
-msgstr "Rimuovi Tile"
+msgstr "Rimuovi Danglers"
#: servers/visual_server.cpp
#, fuzzy
@@ -25234,21 +26696,19 @@ msgstr "Visualizza Eliminazione Occlusioni"
#: servers/visual_server.cpp
msgid "Max Active Spheres"
-msgstr ""
+msgstr "Quantità Massima di Sfere Attive"
#: servers/visual_server.cpp
-#, fuzzy
msgid "Max Active Polygons"
-msgstr "Sposta poligono"
+msgstr "Quantità Massima di Poligoni Attivi"
#: servers/visual_server.cpp
-#, fuzzy
msgid "Shader Compilation Mode"
-msgstr "Modalità d'interpolazione"
+msgstr "Modalità Compilazione dello Shader"
#: servers/visual_server.cpp
msgid "Max Simultaneous Compiles"
-msgstr ""
+msgstr "Compilazioni Simultanee Massime"
#: servers/visual_server.cpp
msgid "Log Active Async Compiles Count"
diff --git a/editor/translations/ja.po b/editor/translations/ja.po
index b7588a9d2b..3502fb4cb3 100644
--- a/editor/translations/ja.po
+++ b/editor/translations/ja.po
@@ -37,13 +37,14 @@
# Lemoney <railkill@gmail.com>, 2021.
# Hiroki Taira <hrk4649@gmail.com>, 2022.
# Juto <mvobujd237@gmail.com>, 2022.
+# jp.owo.Manda <admin@alterbaum.net>, 2022.
msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
"Report-Msgid-Bugs-To: https://github.com/godotengine/godot\n"
"POT-Creation-Date: \n"
-"PO-Revision-Date: 2022-03-08 08:59+0000\n"
-"Last-Translator: Wataru Onuki <bettawat@yahoo.co.jp>\n"
+"PO-Revision-Date: 2022-03-28 23:08+0000\n"
+"Last-Translator: nitenook <admin@alterbaum.net>\n"
"Language-Team: Japanese <https://hosted.weblate.org/projects/godot-engine/"
"godot/ja/>\n"
"Language: ja\n"
@@ -53,128 +54,113 @@ msgstr ""
"Plural-Forms: nplurals=1; plural=0;\n"
"X-Generator: Weblate 4.12-dev\n"
-#: core/bind/core_bind.cpp
+#: core/bind/core_bind.cpp main/main.cpp
msgid "Tablet Driver"
-msgstr ""
+msgstr "タブレットドライãƒãƒ¼"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Clipboard"
-msgstr "クリップボードã¯ç©ºã§ã™ï¼"
+msgstr "クリップボード"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Current Screen"
-msgstr "ç¾åœ¨ã®ã‚·ãƒ¼ãƒ³"
+msgstr "ç¾åœ¨ã®ç”»é¢"
#: core/bind/core_bind.cpp
msgid "Exit Code"
-msgstr ""
+msgstr "終了コード"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "V-Sync Enabled"
-msgstr "有効"
+msgstr "åž‚ç›´åŒæœŸã‚’有効化"
#: core/bind/core_bind.cpp main/main.cpp
msgid "V-Sync Via Compositor"
-msgstr ""
+msgstr "コンãƒã‚¸ã‚¿ãƒ¼ã§åž‚ç›´åŒæœŸã™ã‚‹"
#: core/bind/core_bind.cpp main/main.cpp
msgid "Delta Smoothing"
msgstr ""
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Low Processor Usage Mode"
-msgstr "移動モード"
+msgstr "プロセッサー低使用率モード"
#: core/bind/core_bind.cpp
msgid "Low Processor Usage Mode Sleep (µsec)"
-msgstr ""
+msgstr "プロセッサー低使用率モードã®ã‚¹ãƒªãƒ¼ãƒ— (マイクロ秒)"
#: core/bind/core_bind.cpp main/main.cpp platform/uwp/os_uwp.cpp
-#, fuzzy
msgid "Keep Screen On"
-msgstr "デãƒãƒƒã‚¬ãƒ¼ã‚’é–‹ã„ãŸã¾ã¾ã«ã™ã‚‹"
+msgstr "ç”»é¢ã‚’常ã«ç‚¹ç¯"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Min Window Size"
-msgstr "アウトラインã®ã‚µã‚¤ã‚º:"
+msgstr "ã‚¦ã‚£ãƒ³ãƒ‰ã‚¦ã®æœ€å°ã‚µã‚¤ã‚º"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Max Window Size"
-msgstr "アウトラインã®ã‚µã‚¤ã‚º:"
+msgstr "ã‚¦ã‚£ãƒ³ãƒ‰ã‚¦ã®æœ€å¤§ã‚µã‚¤ã‚º"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Screen Orientation"
-msgstr "Screen演算å­ã€‚"
+msgstr "ç”»é¢ã®å‘ã"
#: core/bind/core_bind.cpp main/main.cpp platform/uwp/os_uwp.cpp
-#, fuzzy
msgid "Window"
-msgstr "æ–°è¦ã‚¦ã‚£ãƒ³ãƒ‰ã‚¦"
+msgstr "ウィンドウ"
#: core/bind/core_bind.cpp main/main.cpp
-#, fuzzy
msgid "Borderless"
-msgstr "境界ピクセル"
+msgstr "ボーダーレス"
#: core/bind/core_bind.cpp
msgid "Per Pixel Transparency Enabled"
-msgstr ""
+msgstr "ピクセルå˜ä½ã®é€æ˜Žåº¦ã‚’有効化"
#: core/bind/core_bind.cpp main/main.cpp
-#, fuzzy
msgid "Fullscreen"
-msgstr "フルスクリーンを有効化 / 無効化"
+msgstr "フルスクリーン"
#: core/bind/core_bind.cpp
msgid "Maximized"
-msgstr ""
+msgstr "最大化"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Minimized"
-msgstr "åˆæœŸåŒ–"
+msgstr "最å°åŒ–"
#: core/bind/core_bind.cpp main/main.cpp scene/gui/dialogs.cpp
#: scene/gui/graph_node.cpp
msgid "Resizable"
-msgstr ""
+msgstr "サイズを変更å¯èƒ½"
#: core/bind/core_bind.cpp core/os/input_event.cpp scene/2d/node_2d.cpp
#: scene/2d/physics_body_2d.cpp scene/2d/remote_transform_2d.cpp
#: scene/3d/physics_body.cpp scene/3d/remote_transform.cpp
#: scene/gui/control.cpp scene/gui/line_edit.cpp
-#, fuzzy
msgid "Position"
-msgstr "ドックã®ä½ç½®"
+msgstr "ä½ç½®"
#: core/bind/core_bind.cpp editor/editor_settings.cpp main/main.cpp
#: modules/gdscript/gdscript_editor.cpp modules/gridmap/grid_map.cpp
#: modules/mono/csharp_script.cpp modules/visual_script/visual_script_nodes.cpp
-#: scene/2d/tile_map.cpp scene/3d/camera.cpp scene/gui/control.cpp
-#: scene/gui/graph_edit.cpp scene/main/viewport.cpp
+#: scene/2d/tile_map.cpp scene/3d/camera.cpp scene/3d/light.cpp
+#: scene/gui/control.cpp scene/gui/graph_edit.cpp scene/main/viewport.cpp
#: scene/resources/dynamic_font.cpp scene/resources/navigation_mesh.cpp
#: scene/resources/primitive_meshes.cpp scene/resources/sky.cpp
#: scene/resources/style_box.cpp scene/resources/texture.cpp
#: scene/resources/visual_shader.cpp servers/visual_server.cpp
-#, fuzzy
msgid "Size"
-msgstr "サイズ:"
+msgstr "サイズ"
#: core/bind/core_bind.cpp
msgid "Endian Swap"
msgstr ""
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Editor Hint"
-msgstr "エディター"
+msgstr "エディターã®ãƒ’ント"
#: core/bind/core_bind.cpp
msgid "Print Error Messages"
@@ -186,14 +172,12 @@ msgid "Iterations Per Second"
msgstr "補間モード"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Target FPS"
-msgstr "ターゲット"
+msgstr "目標FPS"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Time Scale"
-msgstr "タイムスケール ノード"
+msgstr "タイムスケール"
#: core/bind/core_bind.cpp main/main.cpp
#, fuzzy
@@ -215,13 +199,12 @@ msgid "Error Line"
msgstr "ä¿å­˜ä¸­ã«ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾ã—ãŸ"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Result"
-msgstr "æ¤œç´¢çµæžœ"
+msgstr "çµæžœ"
#: core/command_queue_mt.cpp core/message_queue.cpp main/main.cpp
msgid "Memory"
-msgstr ""
+msgstr "メモリー"
#: core/command_queue_mt.cpp core/message_queue.cpp
#: core/register_core_types.cpp drivers/gles2/rasterizer_canvas_base_gles2.cpp
@@ -234,19 +217,17 @@ msgid "Limits"
msgstr ""
#: core/command_queue_mt.cpp
-#, fuzzy
msgid "Command Queue"
-msgstr "Command: 回転"
+msgstr "コマンドキュー"
#: core/command_queue_mt.cpp
msgid "Multithreading Queue Size (KB)"
-msgstr ""
+msgstr "マルãƒã‚¹ãƒ¬ãƒƒãƒ‰ キューサイズ (KB)"
#: core/func_ref.cpp modules/visual_script/visual_script_builtin_funcs.cpp
#: modules/visual_script/visual_script_func_nodes.cpp
#: modules/visual_script/visual_script_nodes.cpp
#: scene/resources/visual_shader_nodes.cpp
-#, fuzzy
msgid "Function"
msgstr "関数"
@@ -258,27 +239,22 @@ msgstr "関数"
#: scene/resources/audio_stream_sample.cpp scene/resources/bit_map.cpp
#: scene/resources/concave_polygon_shape.cpp scene/resources/curve.cpp
#: scene/resources/polygon_path_finder.cpp scene/resources/texture.cpp
-#, fuzzy
msgid "Data"
-msgstr "データ付"
+msgstr "データ"
#: core/io/file_access_network.cpp core/register_core_types.cpp
-#: editor/editor_settings.cpp editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp main/main.cpp
+#: editor/editor_settings.cpp main/main.cpp
#: modules/gdscript/language_server/gdscript_language_server.cpp
-#, fuzzy
msgid "Network"
-msgstr "ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ãƒ—ロファイラー"
+msgstr "ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯"
#: core/io/file_access_network.cpp
-#, fuzzy
msgid "Remote FS"
-msgstr "リモート "
+msgstr "リモートファイルシステム"
#: core/io/file_access_network.cpp
-#, fuzzy
msgid "Page Size"
-msgstr "ページ: "
+msgstr "ページサイズ"
#: core/io/file_access_network.cpp
msgid "Page Read Ahead"
@@ -286,83 +262,75 @@ msgstr ""
#: core/io/http_client.cpp
msgid "Blocking Mode Enabled"
-msgstr ""
+msgstr "ブロッキングモードを有効化"
#: core/io/http_client.cpp
-#, fuzzy
msgid "Connection"
msgstr "接続"
#: core/io/http_client.cpp
msgid "Read Chunk Size"
-msgstr ""
+msgstr "読ã¿å–りãƒãƒ£ãƒ³ã‚¯ã‚µã‚¤ã‚º"
#: core/io/marshalls.cpp
-#, fuzzy
msgid "Object ID"
-msgstr "æç”»ã•れãŸã‚ªãƒ–ジェクト:"
+msgstr "オブジェクトID"
#: core/io/multiplayer_api.cpp core/io/packet_peer.cpp
-#, fuzzy
msgid "Allow Object Decoding"
-msgstr "オニオンスキンを有効ã«ã™ã‚‹"
+msgstr "オブジェクトã®ãƒ‡ã‚³ãƒ¼ãƒ‰ã‚’許å¯"
#: core/io/multiplayer_api.cpp scene/main/scene_tree.cpp
msgid "Refuse New Network Connections"
-msgstr ""
+msgstr "æ–°è¦ã®ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯æŽ¥ç¶šã‚’æ‹’å¦ã™ã‚‹"
#: core/io/multiplayer_api.cpp scene/main/scene_tree.cpp
-#, fuzzy
msgid "Network Peer"
-msgstr "ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ãƒ—ロファイラー"
+msgstr "ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ ピア"
#: core/io/multiplayer_api.cpp scene/animation/animation_player.cpp
-#, fuzzy
msgid "Root Node"
-msgstr "ルートノードå"
+msgstr "ルートノード"
#: core/io/networked_multiplayer_peer.cpp
-#, fuzzy
msgid "Refuse New Connections"
-msgstr "接続"
+msgstr "æ–°è¦ã®æŽ¥ç¶šã‚’æ‹’å¦ã™ã‚‹"
#: core/io/networked_multiplayer_peer.cpp
-#, fuzzy
msgid "Transfer Mode"
-msgstr "トランスフォーム タイプ"
+msgstr "転é€ãƒ¢ãƒ¼ãƒ‰"
#: core/io/packet_peer.cpp
msgid "Encode Buffer Max Size"
-msgstr ""
+msgstr "エンコードãƒãƒƒãƒ•ã‚¡ã®ä¸Šé™ã‚µã‚¤ã‚º"
#: core/io/packet_peer.cpp
msgid "Input Buffer Max Size"
-msgstr ""
+msgstr "入力ãƒãƒƒãƒ•ã‚¡ã®ä¸Šé™ã‚µã‚¤ã‚º"
#: core/io/packet_peer.cpp
msgid "Output Buffer Max Size"
-msgstr ""
+msgstr "出力ãƒãƒƒãƒ•ã‚¡ã®ä¸Šé™ã‚µã‚¤ã‚º"
#: core/io/packet_peer.cpp
msgid "Stream Peer"
-msgstr ""
+msgstr "ストリーム ピア"
#: core/io/stream_peer.cpp
msgid "Big Endian"
-msgstr ""
+msgstr "ビッグエンディアン"
#: core/io/stream_peer.cpp
msgid "Data Array"
-msgstr ""
+msgstr "データé…列"
#: core/io/stream_peer_ssl.cpp
msgid "Blocking Handshake"
msgstr ""
#: core/io/udp_server.cpp
-#, fuzzy
msgid "Max Pending Connections"
-msgstr "接続を編集:"
+msgstr "ä¿ç•™ä¸­ã®æŽ¥ç¶šæ•°ã®ä¸Šé™"
#: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp
#: modules/visual_script/visual_script_builtin_funcs.cpp
@@ -410,20 +378,19 @@ msgstr "'%s' ã®å‘¼ã³å‡ºã—時:"
#: core/math/random_number_generator.cpp
#: modules/opensimplex/open_simplex_noise.cpp
msgid "Seed"
-msgstr ""
+msgstr "シード値"
#: core/math/random_number_generator.cpp
-#, fuzzy
msgid "State"
-msgstr "ステータス"
+msgstr "状態"
#: core/message_queue.cpp
msgid "Message Queue"
-msgstr ""
+msgstr "メッセージキュー"
#: core/message_queue.cpp
msgid "Max Size (KB)"
-msgstr ""
+msgstr "最大サイズ (KB)"
#: core/os/input.cpp editor/editor_help.cpp editor/editor_settings.cpp
#: editor/plugins/script_editor_plugin.cpp
@@ -435,9 +402,8 @@ msgstr ""
#: modules/mono/csharp_script.cpp scene/animation/animation_player.cpp
#: scene/gui/control.cpp scene/gui/line_edit.cpp scene/main/node.cpp
#: scene/resources/material.cpp
-#, fuzzy
msgid "Text Editor"
-msgstr "エディターã§é–‹ã"
+msgstr "テキストエディター"
#: core/os/input.cpp editor/editor_settings.cpp
#: editor/plugins/script_text_editor.cpp modules/gdscript/gdscript.cpp
@@ -445,18 +411,16 @@ msgstr "エディターã§é–‹ã"
#: modules/gdscript/language_server/gdscript_text_document.cpp
#: scene/animation/animation_player.cpp scene/gui/control.cpp
#: scene/main/node.cpp scene/resources/material.cpp
-#, fuzzy
msgid "Completion"
-msgstr "é¸æŠžç¯„å›²ã‚’ã‚³ãƒ”ãƒ¼"
+msgstr "完了"
#: core/os/input.cpp editor/editor_settings.cpp
#: editor/plugins/script_text_editor.cpp modules/gdscript/gdscript_editor.cpp
#: modules/gdscript/language_server/gdscript_text_document.cpp
#: scene/animation/animation_player.cpp scene/gui/control.cpp
#: scene/main/node.cpp scene/resources/material.cpp
-#, fuzzy
msgid "Use Single Quotes"
-msgstr "æ–°ã—ã„シングルタイル"
+msgstr "シングルクォートを使用"
#: core/os/input_event.cpp editor/project_settings_editor.cpp
#: servers/audio_server.cpp
@@ -464,27 +428,24 @@ msgid "Device"
msgstr "デãƒã‚¤ã‚¹"
#: core/os/input_event.cpp
-#, fuzzy
msgid "Alt"
-msgstr "ã™ã¹ã¦"
+msgstr "Alt"
#: core/os/input_event.cpp
msgid "Shift"
-msgstr ""
+msgstr "Shift"
#: core/os/input_event.cpp
-#, fuzzy
msgid "Control"
-msgstr "ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã‚³ãƒ³ãƒˆãƒ­ãƒ¼ãƒ«"
+msgstr "Control"
#: core/os/input_event.cpp
msgid "Meta"
-msgstr ""
+msgstr "Meta"
#: core/os/input_event.cpp
-#, fuzzy
msgid "Command"
-msgstr "コミュニティ"
+msgstr "Command"
#: core/os/input_event.cpp scene/2d/touch_screen_button.cpp
#: scene/gui/base_button.cpp scene/gui/texture_button.cpp
@@ -493,67 +454,59 @@ msgid "Pressed"
msgstr "プリセット"
#: core/os/input_event.cpp
-#, fuzzy
msgid "Scancode"
-msgstr "スキャン"
+msgstr "スキャンコード"
#: core/os/input_event.cpp
-#, fuzzy
msgid "Physical Scancode"
-msgstr "物ç†ã‚­ãƒ¼"
+msgstr "物ç†ã‚¹ã‚­ãƒ£ãƒ³ã‚³ãƒ¼ãƒ‰"
#: core/os/input_event.cpp
msgid "Unicode"
-msgstr ""
+msgstr "Unicode"
#: core/os/input_event.cpp
msgid "Echo"
-msgstr ""
+msgstr "エコー"
#: core/os/input_event.cpp scene/gui/base_button.cpp
-#, fuzzy
msgid "Button Mask"
-msgstr "Button"
+msgstr "ボタンã®ãƒžã‚¹ã‚¯"
#: core/os/input_event.cpp scene/2d/node_2d.cpp scene/gui/control.cpp
-#, fuzzy
msgid "Global Position"
-msgstr "コンスタント"
+msgstr "グローãƒãƒ«ä½ç½®"
#: core/os/input_event.cpp
-#, fuzzy
msgid "Factor"
-msgstr "Vector"
+msgstr "ä¿‚æ•°"
#: core/os/input_event.cpp
-#, fuzzy
msgid "Button Index"
-msgstr "マウスボタンインデックス:"
+msgstr "ボタンã®ã‚¤ãƒ³ãƒ‡ãƒƒã‚¯ã‚¹"
#: core/os/input_event.cpp
msgid "Doubleclick"
-msgstr ""
+msgstr "ダブルクリック"
#: core/os/input_event.cpp
msgid "Tilt"
-msgstr ""
+msgstr "傾ã"
#: core/os/input_event.cpp
-#, fuzzy
msgid "Pressure"
-msgstr "プリセット"
+msgstr "圧力"
#: core/os/input_event.cpp
-#, fuzzy
msgid "Relative"
-msgstr "相対スナップ"
+msgstr "相対的"
-#: core/os/input_event.cpp scene/2d/camera_2d.cpp
-#: scene/3d/interpolated_camera.cpp scene/animation/animation_player.cpp
-#: scene/resources/environment.cpp
-#, fuzzy
+#: core/os/input_event.cpp scene/2d/camera_2d.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/interpolated_camera.cpp
+#: scene/animation/animation_player.cpp scene/resources/environment.cpp
+#: scene/resources/particles_material.cpp
msgid "Speed"
-msgstr "速度:"
+msgstr "速ã•"
#: core/os/input_event.cpp editor/project_settings_editor.cpp
#: scene/3d/sprite_3d.cpp
@@ -561,14 +514,12 @@ msgid "Axis"
msgstr "軸"
#: core/os/input_event.cpp
-#, fuzzy
msgid "Axis Value"
-msgstr "(値)"
+msgstr "軸値"
#: core/os/input_event.cpp modules/visual_script/visual_script_func_nodes.cpp
-#, fuzzy
msgid "Index"
-msgstr "インデックス:"
+msgstr "インデックス"
#: core/os/input_event.cpp editor/project_settings_editor.cpp
#: modules/visual_script/visual_script_nodes.cpp
@@ -579,29 +530,27 @@ msgstr "アクション(Action)"
#: core/os/input_event.cpp scene/resources/environment.cpp
#: scene/resources/material.cpp
msgid "Strength"
-msgstr ""
+msgstr "å¼·ã•"
#: core/os/input_event.cpp
msgid "Delta"
-msgstr ""
+msgstr "差分"
#: core/os/input_event.cpp
-#, fuzzy
msgid "Channel"
-msgstr "変更"
+msgstr "ãƒãƒ£ãƒ³ãƒãƒ«"
#: core/os/input_event.cpp main/main.cpp
-#, fuzzy
msgid "Message"
-msgstr "メッセージをコミットã™ã‚‹"
+msgstr "メッセージ"
#: core/os/input_event.cpp
-#, fuzzy
msgid "Pitch"
-msgstr "ピッãƒ:"
+msgstr "ピッãƒ"
-#: core/os/input_event.cpp scene/2d/physics_body_2d.cpp
-#: scene/3d/physics_body.cpp
+#: core/os/input_event.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/physics_body_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/3d/physics_body.cpp scene/resources/particles_material.cpp
#, fuzzy
msgid "Velocity"
msgstr "オービットビュー å³"
@@ -611,18 +560,18 @@ msgid "Instrument"
msgstr ""
#: core/os/input_event.cpp
-#, fuzzy
msgid "Controller Number"
-msgstr "行番å·:"
+msgstr "コントローラー番å·"
#: core/os/input_event.cpp
msgid "Controller Value"
-msgstr ""
+msgstr "コントローラー値"
#: core/project_settings.cpp editor/editor_node.cpp main/main.cpp
-#, fuzzy
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/windows/export/export.cpp
msgid "Application"
-msgstr "アクション(Action)"
+msgstr "アプリケーション"
#: core/project_settings.cpp main/main.cpp
#, fuzzy
@@ -630,21 +579,23 @@ msgid "Config"
msgstr "スナップã®è¨­å®š"
#: core/project_settings.cpp
-#, fuzzy
msgid "Project Settings Override"
-msgstr "プロジェクト設定..."
+msgstr "プロジェクト設定ã®ã‚ªãƒ¼ãƒãƒ¼ãƒ©ã‚¤ãƒ‰"
#: core/project_settings.cpp core/resource.cpp
#: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp
#: editor/editor_plugin_settings.cpp editor/editor_profiler.cpp
#: editor/project_manager.cpp editor/settings_config_dialog.cpp
-#: modules/gdnative/nativescript/nativescript.cpp scene/2d/area_2d.cpp
-#: scene/3d/area.cpp scene/main/node.cpp
+#: modules/gdnative/nativescript/nativescript.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/osx/export/export.cpp scene/2d/area_2d.cpp scene/3d/area.cpp
+#: scene/main/node.cpp
msgid "Name"
msgstr "åå‰"
#: core/project_settings.cpp editor/editor_help.cpp
-#: modules/visual_script/visual_script_nodes.cpp
+#: modules/visual_script/visual_script_nodes.cpp platform/uwp/export/export.cpp
+#: platform/windows/export/export.cpp
msgid "Description"
msgstr "説明"
@@ -660,14 +611,12 @@ msgid "Main Scene"
msgstr "メインシーン"
#: core/project_settings.cpp
-#, fuzzy
msgid "Disable stdout"
-msgstr "オートタイルを無効ã«ã™ã‚‹"
+msgstr "stdoutを無効化"
#: core/project_settings.cpp
-#, fuzzy
msgid "Disable stderr"
-msgstr "アイテムを無効ã«ã™ã‚‹"
+msgstr "stderrを無効化"
#: core/project_settings.cpp
msgid "Use Hidden Project Data Directory"
@@ -682,14 +631,13 @@ msgid "Custom User Dir Name"
msgstr ""
#: core/project_settings.cpp editor/animation_track_editor.cpp
-#: editor/editor_audio_buses.cpp servers/audio_server.cpp
+#: editor/editor_audio_buses.cpp main/main.cpp servers/audio_server.cpp
msgid "Audio"
msgstr "オーディオ"
#: core/project_settings.cpp
-#, fuzzy
msgid "Default Bus Layout"
-msgstr "デフォルトã®ãƒã‚¹ãƒ¬ã‚¤ã‚¢ã‚¦ãƒˆã‚’読ã¿è¾¼ã‚€ã€‚"
+msgstr "デフォルトã®ãƒã‚¹ãƒ¬ã‚¤ã‚¢ã‚¦ãƒˆ"
#: core/project_settings.cpp editor/editor_export.cpp
#: editor/editor_file_system.cpp editor/editor_node.cpp
@@ -721,15 +669,13 @@ msgid "Autoload On Startup"
msgstr ""
#: core/project_settings.cpp
-#, fuzzy
msgid "Plugin Name"
-msgstr "プラグインå:"
+msgstr "プラグインå"
#: core/project_settings.cpp scene/2d/collision_object_2d.cpp
#: scene/3d/collision_object.cpp scene/gui/control.cpp
-#, fuzzy
msgid "Input"
-msgstr "入力を追加"
+msgstr "入力"
#: core/project_settings.cpp
msgid "UI Accept"
@@ -809,7 +755,7 @@ msgstr " (物ç†çš„)"
#: scene/3d/physics_body.cpp scene/resources/world.cpp
#: servers/physics/space_sw.cpp
msgid "3D"
-msgstr ""
+msgstr "3D"
#: core/project_settings.cpp
#, fuzzy
@@ -825,9 +771,8 @@ msgstr "三角形メッシュ コリジョンã®å…„弟を作æˆ"
#: modules/lightmapper_cpu/register_types.cpp scene/main/scene_tree.cpp
#: scene/main/viewport.cpp servers/visual/visual_server_scene.cpp
#: servers/visual_server.cpp
-#, fuzzy
msgid "Rendering"
-msgstr "レンダラー:"
+msgstr "レンダリング"
#: core/project_settings.cpp drivers/gles2/rasterizer_storage_gles2.cpp
#: drivers/gles3/rasterizer_scene_gles3.cpp
@@ -837,7 +782,7 @@ msgstr "レンダラー:"
#: scene/resources/multimesh.cpp servers/visual/visual_server_scene.cpp
#: servers/visual_server.cpp
msgid "Quality"
-msgstr ""
+msgstr "å“質"
#: core/project_settings.cpp scene/animation/animation_tree.cpp
#: scene/gui/file_dialog.cpp scene/main/scene_tree.cpp
@@ -848,12 +793,15 @@ msgstr "フィルター:"
#: core/project_settings.cpp scene/main/viewport.cpp
msgid "Sharpen Intensity"
-msgstr ""
+msgstr "シャープ化ã®å¼·åº¦"
-#: core/project_settings.cpp editor/editor_node.cpp editor/editor_settings.cpp
-#: editor/plugins/script_editor_plugin.cpp editor/project_export.cpp
-#: main/main.cpp modules/gdscript/gdscript.cpp
-#: modules/visual_script/visual_script.cpp scene/3d/room_manager.cpp
+#: core/project_settings.cpp editor/editor_export.cpp editor/editor_node.cpp
+#: editor/editor_settings.cpp editor/plugins/script_editor_plugin.cpp
+#: editor/project_export.cpp main/main.cpp modules/gdscript/gdscript.cpp
+#: modules/visual_script/visual_script.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp scene/3d/room_manager.cpp
#: scene/main/scene_tree.cpp scene/resources/shape_2d.cpp
#: servers/visual_server.cpp
msgid "Debug"
@@ -861,9 +809,8 @@ msgstr "デãƒãƒƒã‚°"
#: core/project_settings.cpp main/main.cpp modules/gdscript/gdscript.cpp
#: modules/visual_script/visual_script.cpp scene/resources/dynamic_font.cpp
-#, fuzzy
msgid "Settings"
-msgstr "設定:"
+msgstr "設定"
#: core/project_settings.cpp editor/script_editor_debugger.cpp main/main.cpp
#: modules/mono/mono_gd/gd_mono.cpp
@@ -876,18 +823,16 @@ msgid "Max Functions"
msgstr "関数を作æˆ"
#: core/project_settings.cpp scene/3d/vehicle_body.cpp
-#, fuzzy
msgid "Compression"
-msgstr "å¼ã‚’変更"
+msgstr "圧縮"
#: core/project_settings.cpp
-#, fuzzy
msgid "Formats"
msgstr "フォーマット"
#: core/project_settings.cpp
msgid "Zstd"
-msgstr ""
+msgstr "Zstd"
#: core/project_settings.cpp
msgid "Long Distance Matching"
@@ -895,36 +840,35 @@ msgstr ""
#: core/project_settings.cpp
msgid "Compression Level"
-msgstr ""
+msgstr "圧縮レベル"
#: core/project_settings.cpp
msgid "Window Log Size"
-msgstr ""
+msgstr "Windowã®ãƒ­ã‚°ã‚µã‚¤ã‚º"
#: core/project_settings.cpp
msgid "Zlib"
-msgstr ""
+msgstr "Zlib"
#: core/project_settings.cpp
msgid "Gzip"
-msgstr ""
+msgstr "Gzip"
#: core/project_settings.cpp platform/android/export/export.cpp
msgid "Android"
-msgstr ""
+msgstr "Android"
#: core/project_settings.cpp
msgid "Modules"
-msgstr ""
+msgstr "モジュール"
#: core/register_core_types.cpp
msgid "TCP"
-msgstr ""
+msgstr "TCP"
#: core/register_core_types.cpp
-#, fuzzy
msgid "Connect Timeout Seconds"
-msgstr "メソッドã¸ã®æŽ¥ç¶š:"
+msgstr "接続タイムアウトã®ç§’æ•°"
#: core/register_core_types.cpp
msgid "Packet Peer Stream"
@@ -932,16 +876,15 @@ msgstr ""
#: core/register_core_types.cpp
msgid "Max Buffer (Power of 2)"
-msgstr ""
+msgstr "ãƒãƒƒãƒ•ã‚¡ã®ä¸Šé™ (2ã®ç´¯ä¹—æ•°)"
#: core/register_core_types.cpp editor/editor_settings.cpp main/main.cpp
msgid "SSL"
-msgstr ""
+msgstr "SSL"
#: core/register_core_types.cpp main/main.cpp
-#, fuzzy
msgid "Certificates"
-msgstr "頂点:"
+msgstr "証明書"
#: core/resource.cpp editor/dependency_editor.cpp
#: editor/editor_resource_picker.cpp
@@ -962,9 +905,8 @@ msgid "Path"
msgstr "パス"
#: core/script_language.cpp
-#, fuzzy
msgid "Source Code"
-msgstr "ソース"
+msgstr "ソースコード"
#: core/translation.cpp
#, fuzzy
@@ -982,7 +924,7 @@ msgstr "試験的"
#: core/translation.cpp scene/resources/font.cpp
msgid "Fallback"
-msgstr ""
+msgstr "フォールãƒãƒƒã‚¯"
#: core/ustring.cpp scene/resources/segment_shape_2d.cpp
msgid "B"
@@ -1023,12 +965,12 @@ msgstr ""
#: drivers/gles2/rasterizer_canvas_base_gles2.cpp
#: drivers/gles3/rasterizer_canvas_base_gles3.cpp
msgid "Canvas Polygon Buffer Size (KB)"
-msgstr ""
+msgstr "キャンãƒã‚¹ã®ãƒãƒªã‚´ãƒ³ã®ãƒãƒƒãƒ•ァサイズ (KB)"
#: drivers/gles2/rasterizer_canvas_base_gles2.cpp
#: drivers/gles3/rasterizer_canvas_base_gles3.cpp
msgid "Canvas Polygon Index Buffer Size (KB)"
-msgstr ""
+msgstr "キャンãƒã‚¹ã®ãƒãƒªã‚´ãƒ³ã‚¤ãƒ³ãƒ‡ãƒƒã‚¯ã‚¹ã®ãƒãƒƒãƒ•ァサイズ (KB)"
#: drivers/gles2/rasterizer_canvas_base_gles2.cpp
#: drivers/gles3/rasterizer_canvas_base_gles3.cpp editor/editor_settings.cpp
@@ -1037,58 +979,55 @@ msgstr ""
#: servers/physics_2d/physics_2d_server_wrap_mt.h
#: servers/physics_2d/space_2d_sw.cpp servers/visual_server.cpp
msgid "2D"
-msgstr ""
+msgstr "2D"
#: drivers/gles2/rasterizer_canvas_base_gles2.cpp
#: drivers/gles3/rasterizer_canvas_base_gles3.cpp
-#, fuzzy
msgid "Snapping"
-msgstr "スマートスナップ"
+msgstr "スナップ"
#: drivers/gles2/rasterizer_canvas_base_gles2.cpp
#: drivers/gles3/rasterizer_canvas_base_gles3.cpp
-#, fuzzy
msgid "Use GPU Pixel Snap"
-msgstr "ピクセルスナップを使用"
+msgstr "GPUピクセルスナップを使用"
#: drivers/gles2/rasterizer_scene_gles2.cpp
#: drivers/gles3/rasterizer_scene_gles3.cpp
msgid "Immediate Buffer Size (KB)"
-msgstr ""
+msgstr "峿™‚ãƒãƒƒãƒ•ァーサイズ (KB)"
#: drivers/gles2/rasterizer_storage_gles2.cpp
#: drivers/gles3/rasterizer_storage_gles3.cpp
-#, fuzzy
msgid "Lightmapping"
-msgstr "ライトマップを焼ã込む"
+msgstr "ライトマップ"
#: drivers/gles2/rasterizer_storage_gles2.cpp
#: drivers/gles3/rasterizer_storage_gles3.cpp
msgid "Use Bicubic Sampling"
-msgstr ""
+msgstr "ãƒã‚¤ã‚­ãƒ¥ãƒ¼ãƒ“ックサンプリングを使用"
#: drivers/gles3/rasterizer_scene_gles3.cpp
msgid "Max Renderable Elements"
-msgstr ""
+msgstr "æç”»å¯èƒ½ãªè¦ç´ ã®ä¸Šé™"
#: drivers/gles3/rasterizer_scene_gles3.cpp
msgid "Max Renderable Lights"
-msgstr ""
+msgstr "æç”»å¯èƒ½ãªãƒ©ã‚¤ãƒˆã®ä¸Šé™"
#: drivers/gles3/rasterizer_scene_gles3.cpp
-#, fuzzy
msgid "Max Renderable Reflections"
-msgstr "é¸æŠžå¯¾è±¡ã‚’ä¸­å¤®ã«"
+msgstr "æç”»å¯èƒ½ãªãƒªãƒ•レクションã®ä¸Šé™"
#: drivers/gles3/rasterizer_scene_gles3.cpp
msgid "Max Lights Per Object"
-msgstr ""
+msgstr "オブジェクトã”ã¨ã®ãƒ©ã‚¤ãƒˆæ•°ã®ä¸Šé™"
#: drivers/gles3/rasterizer_scene_gles3.cpp
msgid "Subsurface Scattering"
msgstr ""
#: drivers/gles3/rasterizer_scene_gles3.cpp
+#: editor/import/resource_importer_texture.cpp
#: editor/plugins/spatial_editor_plugin.cpp modules/gltf/gltf_node.cpp
#: modules/gridmap/grid_map.cpp scene/2d/cpu_particles_2d.cpp
#: scene/2d/node_2d.cpp scene/2d/parallax_layer.cpp scene/2d/polygon_2d.cpp
@@ -1110,15 +1049,15 @@ msgstr ""
#: drivers/gles3/rasterizer_scene_gles3.cpp
msgid "Voxel Cone Tracing"
-msgstr ""
+msgstr "ボクセルコーントレーシング"
#: drivers/gles3/rasterizer_scene_gles3.cpp scene/resources/environment.cpp
msgid "High Quality"
-msgstr ""
+msgstr "高å“質"
#: drivers/gles3/rasterizer_storage_gles3.cpp
msgid "Blend Shape Max Buffer Size (KB)"
-msgstr ""
+msgstr "ブレンドシェイプã®ãƒãƒƒãƒ•ァサイズã®ä¸Šé™ (KB)"
#: editor/animation_bezier_editor.cpp
msgid "Free"
@@ -1350,9 +1289,8 @@ msgid "Duplicate Key(s)"
msgstr "キーを複製"
#: editor/animation_track_editor.cpp
-#, fuzzy
msgid "Add RESET Value(s)"
-msgstr "%dフレームを追加"
+msgstr "RESET値を追加"
#: editor/animation_track_editor.cpp
msgid "Delete Key(s)"
@@ -1382,11 +1320,11 @@ msgstr "アニメーショントラックを除去"
#: editor/plugins/tile_map_editor_plugin.cpp editor/scene_tree_dock.cpp
#: editor/spatial_editor_gizmos.cpp modules/csg/csg_gizmos.cpp
#: modules/gridmap/grid_map_editor_plugin.cpp
-#, fuzzy
msgid "Editors"
msgstr "エディター"
#: editor/animation_track_editor.cpp editor/editor_settings.cpp
+#: editor/import/resource_importer_scene.cpp
#: editor/plugins/animation_player_editor_plugin.cpp editor/scene_tree_dock.cpp
#: scene/2d/animated_sprite.cpp scene/2d/cpu_particles_2d.cpp
#: scene/2d/sprite.cpp scene/3d/cpu_particles.cpp scene/3d/sprite_3d.cpp
@@ -1396,9 +1334,8 @@ msgid "Animation"
msgstr "アニメーション"
#: editor/animation_track_editor.cpp editor/editor_settings.cpp
-#, fuzzy
msgid "Confirm Insert Track"
-msgstr "アニメーショントラック ã¨ã‚­ãƒ¼ã‚’挿入"
+msgstr "トラック挿入ã®ç¢ºèª"
#. TRANSLATORS: %s will be replaced by a phrase describing the target of track.
#: editor/animation_track_editor.cpp
@@ -1545,7 +1482,7 @@ msgstr "メソッド"
#: editor/animation_track_editor.cpp
msgid "Bezier"
-msgstr ""
+msgstr "ベジェ"
#: editor/animation_track_editor.cpp
#: modules/visual_script/visual_script_editor.cpp
@@ -1623,14 +1560,14 @@ msgstr "アニメーションステップã®å€¤ã€‚"
msgid "Seconds"
msgstr "ç§’"
-#: editor/animation_track_editor.cpp
+#: editor/animation_track_editor.cpp editor/import/resource_importer_scene.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp main/main.cpp
#: scene/resources/texture.cpp
msgid "FPS"
msgstr "フレームレート(FPS)"
#: editor/animation_track_editor.cpp editor/editor_plugin_settings.cpp
-#: editor/editor_resource_picker.cpp
+#: editor/editor_resource_picker.cpp editor/import/resource_importer_wav.cpp
#: editor/plugins/polygon_2d_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
@@ -2538,9 +2475,8 @@ msgid "Create a new Bus Layout."
msgstr "æ–°è¦ãƒã‚¹ãƒ¬ã‚¤ã‚¢ã‚¦ãƒˆã‚’作æˆã€‚"
#: editor/editor_audio_buses.cpp
-#, fuzzy
msgid "Audio Bus Layout"
-msgstr "オーディオãƒã‚¹ã®ãƒ¬ã‚¤ã‚¢ã‚¦ãƒˆã‚’é–‹ã"
+msgstr "オーディオãƒã‚¹ã®ãƒ¬ã‚¤ã‚¢ã‚¦ãƒˆ"
#: editor/editor_autoload_settings.cpp
msgid "Invalid name."
@@ -2591,7 +2527,9 @@ msgid "Remove Autoload"
msgstr "自動読ã¿è¾¼ã¿ã‚’除去"
#: editor/editor_autoload_settings.cpp editor/editor_plugin_settings.cpp
-#: modules/gdscript/gdscript.cpp scene/2d/polygon_2d.cpp scene/3d/area.cpp
+#: modules/gdscript/gdscript.cpp platform/android/export/export_plugin.cpp
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#: scene/2d/polygon_2d.cpp scene/3d/area.cpp scene/3d/physics_joint.cpp
#: scene/3d/reflection_probe.cpp scene/main/canvas_layer.cpp
#: scene/resources/material.cpp servers/visual_server.cpp
msgid "Enable"
@@ -2761,6 +2699,60 @@ msgstr ""
#: editor/editor_export.cpp platform/android/export/export_plugin.cpp
#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Custom Template"
+msgstr "カスタムテーマ"
+
+#: editor/editor_export.cpp editor/project_export.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp
+msgid "Release"
+msgstr "リリース"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Binary Format"
+msgstr "Color演算å­ã€‚"
+
+#: editor/editor_export.cpp
+msgid "64 Bits"
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Embed PCK"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Texture Format"
+msgstr "テクスãƒãƒ£é ˜åŸŸ"
+
+#: editor/editor_export.cpp
+msgid "BPTC"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "S3TC"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "ETC"
+msgstr "TCP"
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "ETC2"
+msgstr ""
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "No BPTC Fallbacks"
+msgstr "フォールãƒãƒƒã‚¯"
+
+#: editor/editor_export.cpp platform/android/export/export_plugin.cpp
+#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
msgid "Custom debug template not found."
msgstr "カスタム デãƒãƒƒã‚°ãƒ†ãƒ³ãƒ—レートãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。"
@@ -2781,7 +2773,7 @@ msgstr ""
#: editor/editor_export.cpp
msgid "Convert Text Resources To Binary On Export"
-msgstr ""
+msgstr "エクスãƒãƒ¼ãƒˆæ™‚ã«ãƒ†ã‚­ã‚¹ãƒˆãƒªã‚½ãƒ¼ã‚¹ã‚’ãƒã‚¤ãƒŠãƒªã«å¤‰æ›"
#: editor/editor_feature_profile.cpp
msgid "3D Editor"
@@ -2941,6 +2933,7 @@ msgid "Make Current"
msgstr "使用ã™ã‚‹"
#: editor/editor_feature_profile.cpp editor/editor_node.cpp
+#: editor/import/resource_importer_scene.cpp
#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
msgid "Import"
msgstr "インãƒãƒ¼ãƒˆ"
@@ -2987,9 +2980,8 @@ msgid "Manage Editor Feature Profiles"
msgstr "エディター機能ã®ãƒ—ロファイルã®ç®¡ç†"
#: editor/editor_feature_profile.cpp
-#, fuzzy
msgid "Default Feature Profile"
-msgstr "Godot機能プロファイル"
+msgstr "デフォルト機能プロファイル"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
msgid "Select Current Folder"
@@ -3061,51 +3053,47 @@ msgid "Save a File"
msgstr "ファイルをä¿å­˜"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-#, fuzzy
msgid "Access"
-msgstr "æˆåŠŸï¼"
+msgstr "アクセス"
#: editor/editor_file_dialog.cpp editor/editor_settings.cpp
-#, fuzzy
msgid "Display Mode"
-msgstr "プレイモード:"
+msgstr "表示モード"
-#: editor/editor_file_dialog.cpp main/main.cpp modules/csg/csg_shape.cpp
-#: modules/visual_script/visual_script_nodes.cpp
+#: editor/editor_file_dialog.cpp
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+#: editor/import/resource_importer_wav.cpp main/main.cpp
+#: modules/csg/csg_shape.cpp modules/visual_script/visual_script_nodes.cpp
#: modules/visual_script/visual_script_yield_nodes.cpp scene/2d/light_2d.cpp
#: scene/2d/physics_body_2d.cpp scene/2d/tile_map.cpp
#: scene/3d/baked_lightmap.cpp scene/3d/light.cpp scene/3d/physics_body.cpp
#: scene/gui/control.cpp scene/gui/file_dialog.cpp
#: scene/resources/environment.cpp scene/resources/material.cpp
#: servers/audio/effects/audio_effect_distortion.cpp
-#, fuzzy
msgid "Mode"
-msgstr "パンモード"
+msgstr "モード"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-#, fuzzy
msgid "Current Dir"
-msgstr "ç¾åœ¨:"
+msgstr "ç¾åœ¨ã®ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒª"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-#, fuzzy
msgid "Current File"
-msgstr "ç¾åœ¨ã®ãƒ—ロファイル:"
+msgstr "ç¾åœ¨ã®ãƒ•ァイル"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-#, fuzzy
msgid "Current Path"
-msgstr "ç¾åœ¨:"
+msgstr "ç¾åœ¨ã®ãƒ‘ス"
#: editor/editor_file_dialog.cpp editor/editor_settings.cpp
#: scene/gui/file_dialog.cpp
-#, fuzzy
msgid "Show Hidden Files"
-msgstr "éš ã—ファイルをオン / オフ"
+msgstr "éš ã—ファイルを表示"
#: editor/editor_file_dialog.cpp
msgid "Disable Overwrite Warning"
-msgstr ""
+msgstr "上書ãã®è­¦å‘Šã‚’無効化"
#: editor/editor_file_dialog.cpp
msgid "Go Back"
@@ -3208,9 +3196,11 @@ msgstr "アセットを(å†)インãƒãƒ¼ãƒˆä¸­"
#: editor/editor_file_system.cpp
msgid "Reimport Missing Imported Files"
-msgstr ""
+msgstr "見ã¤ã‹ã‚‰ãªã„インãƒãƒ¼ãƒˆæ¸ˆã¿ãƒ•ァイルをå†ã‚¤ãƒ³ãƒãƒ¼ãƒˆã™ã‚‹"
-#: editor/editor_help.cpp
+#: editor/editor_help.cpp scene/2d/camera_2d.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/resources/dynamic_font.cpp
+#: scene/resources/style_box.cpp
msgid "Top"
msgstr "トップ"
@@ -3262,6 +3252,7 @@ msgid "Fonts"
msgstr "フォント"
#: editor/editor_help.cpp editor/plugins/theme_editor_plugin.cpp
+#: platform/iphone/export/export.cpp
msgid "Icons"
msgstr "アイコン"
@@ -3308,7 +3299,7 @@ msgstr "ヘルプ"
#: editor/editor_help.cpp
msgid "Sort Functions Alphabetically"
-msgstr ""
+msgstr "関数をアルファベット順ã«ã‚½ãƒ¼ãƒˆ"
#: editor/editor_help_search.cpp editor/editor_node.cpp
#: editor/plugins/script_editor_plugin.cpp
@@ -3393,19 +3384,16 @@ msgid "Label"
msgstr "値"
#: editor/editor_inspector.cpp editor/editor_spin_slider.cpp
-#, fuzzy
msgid "Read Only"
-msgstr "メソッドã®ã¿"
+msgstr "読ã¿å–り専用"
#: editor/editor_inspector.cpp
-#, fuzzy
msgid "Checkable"
-msgstr "アイテムをãƒã‚§ãƒƒã‚¯"
+msgstr "ãƒã‚§ãƒƒã‚¯å¯èƒ½"
#: editor/editor_inspector.cpp
-#, fuzzy
msgid "Checked"
-msgstr "ãƒã‚§ãƒƒã‚¯æ¸ˆã¿ã‚¢ã‚¤ãƒ†ãƒ "
+msgstr "ãƒã‚§ãƒƒã‚¯æ¸ˆã¿"
#: editor/editor_inspector.cpp
#, fuzzy
@@ -3418,20 +3406,22 @@ msgid "Keying"
msgstr "実行"
#: editor/editor_inspector.cpp
-#, fuzzy
msgid "Pin value"
-msgstr "(値)"
+msgstr "値をピン留ã‚ã™ã‚‹"
#: editor/editor_inspector.cpp
msgid ""
"Pinning a value forces it to be saved even if it's equal to the default."
msgstr ""
+"値をピン留ã‚ã™ã‚‹ã¨ã€å€¤ãŒãƒ‡ãƒ•ォルトã¨ç­‰ã—ã„å ´åˆã§ã‚‚強制的ã«ä¿å­˜ã•れã¾ã™ã€‚"
#: editor/editor_inspector.cpp
msgid "Pin value [Disabled because '%s' is editor-only]"
-msgstr ""
+msgstr "値をピン留ã‚ã™ã‚‹ ['%s' 㯠editor-only ã®ãŸã‚無効]"
-#: editor/editor_inspector.cpp editor/scene_tree_dock.cpp
+#: editor/editor_inspector.cpp
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+#: editor/scene_tree_dock.cpp
#: modules/visual_script/visual_script_func_nodes.cpp
#: modules/visual_script/visual_script_nodes.cpp
#: modules/visual_script/visual_script_property_selector.cpp
@@ -3444,11 +3434,11 @@ msgstr "複数設定:"
#: editor/editor_inspector.cpp
msgid "Pinned %s"
-msgstr ""
+msgstr "%s をピン留ã‚"
#: editor/editor_inspector.cpp
msgid "Unpinned %s"
-msgstr ""
+msgstr "%s をピン留ã‚解除"
#: editor/editor_inspector.cpp
msgid "Copy Property"
@@ -3771,6 +3761,16 @@ msgid "Quick Open Script..."
msgstr "スクリプトをクイックオープン..."
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Save & Reload"
+msgstr "ä¿å­˜ã—ã¦å†èµ·å‹•"
+
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Save changes to '%s' before reloading?"
+msgstr "é–‰ã˜ã‚‹å‰ã«ã€'%s' ã¸ã®å¤‰æ›´ã‚’ä¿å­˜ã—ã¾ã™ã‹ï¼Ÿ"
+
+#: editor/editor_node.cpp
msgid "Save & Close"
msgstr "ä¿å­˜ã—ã¦é–‰ã˜ã‚‹"
@@ -3887,6 +3887,11 @@ msgid "Open Project Manager?"
msgstr "プロジェクトマãƒãƒ¼ã‚¸ãƒ£ãƒ¼ã‚’é–‹ãã¾ã™ã‹ï¼Ÿ"
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Save changes to the following scene(s) before reloading?"
+msgstr "終了ã™ã‚‹å‰ã«ã€ä»¥ä¸‹ã®ã‚·ãƒ¼ãƒ³ã¸ã®å¤‰æ›´ã‚’ä¿å­˜ã—ã¾ã™ã‹ï¼Ÿ"
+
+#: editor/editor_node.cpp
msgid "Save & Quit"
msgstr "ä¿å­˜ã—ã¦çµ‚了"
@@ -3937,9 +3942,9 @@ msgid ""
"error in that script.\n"
"Disabling the addon at '%s' to prevent further errors."
msgstr ""
-"アドオンスクリプト パス: '%s' をロードã§ãã¾ã›ã‚“。ã“れã¯ã€ãã®ã‚¹ã‚¯ãƒªãƒ—トã®"
-"コードエラーãŒåŽŸå› ã®å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚\n"
-"ã•らãªã‚‹ã‚¨ãƒ©ãƒ¼ã‚’防ããŸã‚ã€%s ã®ã‚¢ãƒ‰ã‚ªãƒ³ã‚’無効化ã—ã¾ã™ã€‚"
+"アドオンã®ã‚¹ã‚¯ãƒªãƒ—ト (パス: '%s') を読ã¿è¾¼ã‚ã¾ã›ã‚“。ãã®ã‚¹ã‚¯ãƒªãƒ—ト内ã®ã‚³ãƒ¼ãƒ‰"
+"ã®ã‚¨ãƒ©ãƒ¼ãŒåŽŸå› ã§ã‚ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚\n"
+"ã•らãªã‚‹ã‚¨ãƒ©ãƒ¼ã‚’防ããŸã‚ã€'%s' ã®ã‚¢ãƒ‰ã‚ªãƒ³ã‚’無効化ã—ã¾ã™ã€‚"
#: editor/editor_node.cpp
msgid ""
@@ -4069,6 +4074,8 @@ msgstr "ã•ら㫠%d個ã®ãƒ•ァイル"
msgid ""
"Unable to write to file '%s', file in use, locked or lacking permissions."
msgstr ""
+"ファイル '%s'ã«æ›¸ãè¾¼ã‚ã¾ã›ã‚“。ファイルãŒä½¿ç”¨ä¸­ã‹ã€ãƒ­ãƒƒã‚¯ã•れã¦ã„ã‚‹ã‹ã€æ¨©é™ãŒ"
+"ã‚りã¾ã›ã‚“。"
#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
msgid "Scene"
@@ -4081,73 +4088,64 @@ msgstr "シーンã®ãƒ‘ス:"
#: editor/editor_node.cpp editor/editor_settings.cpp editor/scene_tree_dock.cpp
#: servers/arvr/arvr_interface.cpp
-#, fuzzy
msgid "Interface"
-msgstr "ユーザーインターフェース"
+msgstr "インターフェース"
#: editor/editor_node.cpp editor/editor_settings.cpp
-#, fuzzy
msgid "Scene Tabs"
-msgstr "シーンタブを切り替ãˆ"
+msgstr "シーンタブ"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Always Show Close Button"
-msgstr "常ã«ã‚°ãƒªãƒƒãƒ‰ã‚’表示"
+msgstr "é–‰ã˜ã‚‹ãƒœã‚¿ãƒ³ã‚’常ã«è¡¨ç¤º"
#: editor/editor_node.cpp editor/editor_settings.cpp
msgid "Resize If Many Tabs"
-msgstr ""
+msgstr "タブãŒå¤šã™ãŽã‚‹ã¨ãã«ãƒªã‚µã‚¤ã‚ºã™ã‚‹"
#: editor/editor_node.cpp editor/editor_settings.cpp
msgid "Minimum Width"
-msgstr ""
+msgstr "最å°å¹…"
#: editor/editor_node.cpp editor/editor_settings.cpp
msgid "Output"
msgstr "出力"
#: editor/editor_node.cpp editor/editor_settings.cpp
-#, fuzzy
msgid "Always Clear Output On Play"
-msgstr "出力をクリア"
+msgstr "実行時ã«ã¯å¸¸ã«å‡ºåŠ›ã‚’ã‚¯ãƒªã‚¢ã™ã‚‹"
#: editor/editor_node.cpp editor/editor_settings.cpp
msgid "Always Open Output On Play"
-msgstr ""
+msgstr "実行時ã«ã¯å¸¸ã«å‡ºåŠ›ã‚’é–‹ã"
#: editor/editor_node.cpp editor/editor_settings.cpp
msgid "Always Close Output On Stop"
-msgstr ""
+msgstr "åœæ­¢æ™‚ã«ã¯å¸¸ã«å‡ºåŠ›ã‚’é–‰ã˜ã‚‹"
#: editor/editor_node.cpp editor/editor_settings.cpp
-#, fuzzy
msgid "Auto Save"
-msgstr "自動スライス"
+msgstr "自動ä¿å­˜"
#: editor/editor_node.cpp editor/editor_settings.cpp
-#, fuzzy
msgid "Save Before Running"
-msgstr "実行å‰ã«ã‚·ãƒ¼ãƒ³ã‚’ä¿å­˜..."
+msgstr "実行å‰ã«ä¿å­˜"
#: editor/editor_node.cpp
msgid "Save On Focus Loss"
-msgstr ""
+msgstr "フォーカスãŒå¤–れãŸã¨ãã«ä¿å­˜"
#: editor/editor_node.cpp editor/editor_settings.cpp
-#, fuzzy
msgid "Save Each Scene On Quit"
-msgstr "ブランãƒã‚’シーンã¨ã—ã¦ä¿å­˜"
+msgstr "終了時ã«å„シーンをä¿å­˜"
#: editor/editor_node.cpp editor/editor_settings.cpp
-#, fuzzy
msgid "Quit Confirmation"
-msgstr "情報を表示"
+msgstr "終了ã®ç¢ºèª"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Show Update Spinner"
-msgstr "アップデートスピナーをéžè¡¨ç¤º"
+msgstr "アップデートスピナーを表示"
#: editor/editor_node.cpp
msgid "Update Continuously"
@@ -4160,8 +4158,8 @@ msgstr "マテリアルã®å¤‰æ›´:"
#: editor/editor_node.cpp
#, fuzzy
-msgid "Translate Properties"
-msgstr "プロパティを貼り付ã‘"
+msgid "Localize Settings"
+msgstr "ローカライズ"
#: editor/editor_node.cpp
#, fuzzy
@@ -4178,17 +4176,16 @@ msgstr "インスペクター"
#: editor/editor_node.cpp
#, fuzzy
-msgid "Capitalize Properties"
-msgstr "プロパティを貼り付ã‘"
+msgid "Default Property Name Style"
+msgstr "デフォルトã®ãƒ—ロジェクトパス"
#: editor/editor_node.cpp
msgid "Default Float Step"
msgstr ""
#: editor/editor_node.cpp scene/gui/tree.cpp
-#, fuzzy
msgid "Disable Folding"
-msgstr "無効ãªãƒœã‚¿ãƒ³"
+msgstr "折りãŸãŸã¿ã‚’無効化"
#: editor/editor_node.cpp
msgid "Auto Unfold Foreign Scenes"
@@ -4203,9 +4200,8 @@ msgid "Horizontal Vector Types Editing"
msgstr ""
#: editor/editor_node.cpp
-#, fuzzy
msgid "Open Resources In Current Inspector"
-msgstr "インスペクターã§é–‹ã"
+msgstr "リソースをç¾åœ¨ã®ã‚¤ãƒ³ã‚¹ãƒšã‚¯ã‚¿ãƒ¼ã§é–‹ã"
#: editor/editor_node.cpp
#, fuzzy
@@ -4214,7 +4210,7 @@ msgstr "インスペクターã§é–‹ã"
#: editor/editor_node.cpp
msgid "Default Color Picker Mode"
-msgstr ""
+msgstr "デフォルトã®ã‚«ãƒ©ãƒ¼ãƒ”ッカーモード"
#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
msgid "Username"
@@ -4595,14 +4591,12 @@ msgid "Save & Restart"
msgstr "ä¿å­˜ã—ã¦å†èµ·å‹•"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Update All Changes"
-msgstr "å¤‰æ›´æ™‚ã«æ›´æ–°"
+msgstr "ã™ã¹ã¦ã®å¤‰æ›´ç‚¹ã‚’æ›´æ–°"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Update Vital Changes"
-msgstr "マテリアルã®å¤‰æ›´:"
+msgstr "é‡è¦ãªå¤‰æ›´ç‚¹ã‚’æ›´æ–°"
#: editor/editor_node.cpp
msgid "Hide Update Spinner"
@@ -4787,7 +4781,9 @@ msgstr "インストール済プラグイン:"
msgid "Update"
msgstr "æ›´æ–°"
-#: editor/editor_plugin_settings.cpp
+#: editor/editor_plugin_settings.cpp platform/android/export/export_plugin.cpp
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp
msgid "Version"
msgstr "ãƒãƒ¼ã‚¸ãƒ§ãƒ³"
@@ -5010,9 +5006,8 @@ msgstr "リソースを追加"
#: editor/editor_resource_picker.cpp scene/gui/line_edit.cpp
#: scene/gui/slider.cpp scene/gui/spin_box.cpp
-#, fuzzy
msgid "Editable"
-msgstr "編集å¯èƒ½ãªã‚¢ã‚¤ãƒ†ãƒ "
+msgstr "編集å¯èƒ½"
#: editor/editor_resource_picker.cpp editor/property_editor.cpp
msgid "New Script"
@@ -5023,9 +5018,8 @@ msgid "Extend Script"
msgstr "スクリプトを拡張"
#: editor/editor_resource_picker.cpp
-#, fuzzy
msgid "Script Owner"
-msgstr "スクリプトå:"
+msgstr "スクリプトã®ã‚ªãƒ¼ãƒŠãƒ¼"
#: editor/editor_run_native.cpp
msgid ""
@@ -5062,52 +5056,48 @@ msgid "Did you forget the '_run' method?"
msgstr "'_run' メソッドを忘れã¦ã„ã¾ã›ã‚“ã‹ï¼Ÿ"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Editor Language"
-msgstr "エディターレイアウト"
+msgstr "エディターã®è¨€èªž"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Display Scale"
-msgstr "ã™ã¹ã¦è¡¨ç¤º"
+msgstr "表示スケール"
#: editor/editor_settings.cpp
msgid "Custom Display Scale"
-msgstr ""
+msgstr "カスタムã®è¡¨ç¤ºã‚¹ã‚±ãƒ¼ãƒ«"
#: editor/editor_settings.cpp
msgid "Main Font Size"
-msgstr ""
+msgstr "メインã®ãƒ•ォントサイズ"
#: editor/editor_settings.cpp
msgid "Code Font Size"
-msgstr ""
+msgstr "コードã®ãƒ•ォントサイズ"
#: editor/editor_settings.cpp
msgid "Font Antialiased"
-msgstr ""
+msgstr "フォントã®ã‚¢ãƒ³ãƒã‚¨ã‚¤ãƒªã‚¢ã‚¹"
#: editor/editor_settings.cpp
msgid "Font Hinting"
-msgstr ""
+msgstr "フォントã®ãƒ’ンティング"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Main Font"
-msgstr "メインシーン"
+msgstr "メインã®ãƒ•ォント"
#: editor/editor_settings.cpp
msgid "Main Font Bold"
-msgstr ""
+msgstr "メインã®å¤ªå­—フォント"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Code Font"
-msgstr "ノードãƒã‚¤ãƒ³ãƒˆã‚’追加"
+msgstr "コードã®ãƒ•ォント"
#: editor/editor_settings.cpp
msgid "Dim Editor On Dialog Popup"
-msgstr ""
+msgstr "ダイアログã®ãƒãƒƒãƒ—アップ時ã«ã‚¨ãƒ‡ã‚£ã‚¿ãƒ¼ã‚’è–„æš—ãã™ã‚‹"
#: editor/editor_settings.cpp main/main.cpp
msgid "Low Processor Mode Sleep (µsec)"
@@ -5143,35 +5133,31 @@ msgstr "プリセット"
#: editor/editor_settings.cpp
msgid "Icon And Font Color"
-msgstr ""
+msgstr "アイコンã¨ãƒ•ォントã®ã‚«ãƒ©ãƒ¼"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Base Color"
-msgstr "カラー"
+msgstr "ベースカラー"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Accent Color"
-msgstr "色をå–å¾—"
+msgstr "アクセントカラー"
#: editor/editor_settings.cpp scene/resources/environment.cpp
msgid "Contrast"
-msgstr ""
+msgstr "コントラスト"
#: editor/editor_settings.cpp
msgid "Relationship Line Opacity"
msgstr ""
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Highlight Tabs"
-msgstr "ライトマップをä¿å­˜ä¸­"
+msgstr "タブをãƒã‚¤ãƒ©ã‚¤ãƒˆã™ã‚‹"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Border Size"
-msgstr "境界ピクセル"
+msgstr "ボーダーサイズ"
#: editor/editor_settings.cpp
msgid "Use Graph Node Headers"
@@ -5183,17 +5169,14 @@ msgid "Additional Spacing"
msgstr "アニメーションループ"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Custom Theme"
-msgstr "エディターã®ãƒ†ãƒ¼ãƒž"
+msgstr "カスタムテーマ"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Show Script Button"
-msgstr "ホイールå³ãƒœã‚¿ãƒ³"
+msgstr "スクリプトボタンを表示"
#: editor/editor_settings.cpp editor/fileserver/editor_file_server.cpp
-#, fuzzy
msgid "Filesystem"
msgstr "ファイルシステム"
@@ -5208,14 +5191,12 @@ msgid "Autoscan Project Path"
msgstr "プロジェクトパス:"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Default Project Path"
-msgstr "プロジェクトパス:"
+msgstr "デフォルトã®ãƒ—ロジェクトパス"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "On Save"
-msgstr "ä¿å­˜"
+msgstr "ä¿å­˜æ™‚"
#: editor/editor_settings.cpp
#, fuzzy
@@ -5227,41 +5208,36 @@ msgid "Safe Save On Backup Then Rename"
msgstr ""
#: editor/editor_settings.cpp
-#, fuzzy
msgid "File Dialog"
-msgstr "XFormダイアログ"
+msgstr "ファイルダイアログ"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Thumbnail Size"
-msgstr "サムãƒã‚¤ãƒ«..."
+msgstr "サムãƒã‚¤ãƒ«ã®ã‚µã‚¤ã‚º"
#: editor/editor_settings.cpp
msgid "Docks"
msgstr ""
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Scene Tree"
-msgstr "シーンツリーã®ç·¨é›†"
+msgstr "シーンツリー"
#: editor/editor_settings.cpp
msgid "Start Create Dialog Fully Expanded"
msgstr ""
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Always Show Folders"
-msgstr "常ã«ã‚°ãƒªãƒƒãƒ‰ã‚’表示"
+msgstr "常ã«ãƒ•ォルダーを表示"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Property Editor"
-msgstr "グループエディター"
+msgstr "プロパティエディター"
#: editor/editor_settings.cpp
msgid "Auto Refresh Interval"
-msgstr ""
+msgstr "自動リフレッシュã®é–“éš”"
#: editor/editor_settings.cpp
#, fuzzy
@@ -5269,43 +5245,39 @@ msgid "Subresource Hue Tint"
msgstr "サブリソース"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Color Theme"
-msgstr "エディターã®ãƒ†ãƒ¼ãƒž"
+msgstr "カラーテーマ"
#: editor/editor_settings.cpp editor/plugins/script_text_editor.cpp
#: editor/plugins/text_editor.cpp
msgid "Line Spacing"
-msgstr ""
+msgstr "行間隔"
#: editor/editor_settings.cpp editor/plugins/script_text_editor.cpp
#: modules/gdscript/editor/gdscript_highlighter.cpp
-#, fuzzy
msgid "Highlighting"
-msgstr "直接光"
+msgstr "ãƒã‚¤ãƒ©ã‚¤ãƒˆ"
#: editor/editor_settings.cpp scene/gui/text_edit.cpp
-#, fuzzy
msgid "Syntax Highlighting"
msgstr "シンタックスãƒã‚¤ãƒ©ã‚¤ãƒˆ"
#: editor/editor_settings.cpp scene/gui/text_edit.cpp
msgid "Highlight All Occurrences"
-msgstr ""
+msgstr "ã™ã¹ã¦ã®å‡ºç¾ç®‡æ‰€ã‚’ãƒã‚¤ãƒ©ã‚¤ãƒˆã™ã‚‹"
#: editor/editor_settings.cpp scene/gui/text_edit.cpp
msgid "Highlight Current Line"
-msgstr ""
+msgstr "ç¾åœ¨ã®è¡Œã‚’ãƒã‚¤ãƒ©ã‚¤ãƒˆã™ã‚‹"
#: editor/editor_settings.cpp editor/plugins/script_text_editor.cpp
msgid "Highlight Type Safe Lines"
-msgstr ""
+msgstr "型安全ãªè¡Œã‚’ãƒã‚¤ãƒ©ã‚¤ãƒˆã™ã‚‹"
#: editor/editor_settings.cpp modules/gdscript/gdscript_editor.cpp
#: modules/mono/csharp_script.cpp
-#, fuzzy
msgid "Indent"
-msgstr "左インデント"
+msgstr "インデント"
#: editor/editor_settings.cpp editor/script_editor_debugger.cpp
#: modules/gdscript/gdscript_editor.cpp modules/gltf/gltf_accessor.cpp
@@ -5320,19 +5292,16 @@ msgid "Auto Indent"
msgstr "自動インデント"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Convert Indent On Save"
-msgstr "インデントをスペースã«å¤‰æ›"
+msgstr "インデントをä¿å­˜æ™‚ã«å¤‰æ›"
#: editor/editor_settings.cpp scene/gui/text_edit.cpp
-#, fuzzy
msgid "Draw Tabs"
-msgstr "ドローコール:"
+msgstr "タブをæç”»"
#: editor/editor_settings.cpp scene/gui/text_edit.cpp
-#, fuzzy
msgid "Draw Spaces"
-msgstr "ドローコール:"
+msgstr "スペースをæç”»"
#: editor/editor_settings.cpp editor/plugins/spatial_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/main/scene_tree.cpp
@@ -5341,20 +5310,19 @@ msgstr "ナビゲーション"
#: editor/editor_settings.cpp scene/gui/text_edit.cpp
msgid "Smooth Scrolling"
-msgstr ""
+msgstr "スムーズスクロール"
#: editor/editor_settings.cpp scene/gui/text_edit.cpp
msgid "V Scroll Speed"
-msgstr ""
+msgstr "垂直スクロールã®é€Ÿåº¦"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Show Minimap"
-msgstr "原点を表示"
+msgstr "ミニマップを表示"
#: editor/editor_settings.cpp
msgid "Minimap Width"
-msgstr ""
+msgstr "ミニマップã®å¹…"
#: editor/editor_settings.cpp
msgid "Mouse Extra Buttons Navigate History"
@@ -5362,17 +5330,15 @@ msgstr ""
#: editor/editor_settings.cpp
msgid "Appearance"
-msgstr ""
+msgstr "外観"
#: editor/editor_settings.cpp scene/gui/text_edit.cpp
-#, fuzzy
msgid "Show Line Numbers"
-msgstr "行番å·:"
+msgstr "行番å·ã‚’表示"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Line Numbers Zero Padded"
-msgstr "行番å·:"
+msgstr "行番å·ã‚’ゼロ埋ã‚"
#: editor/editor_settings.cpp
msgid "Show Bookmark Gutter"
@@ -5389,7 +5355,7 @@ msgstr ""
#: editor/editor_settings.cpp
msgid "Code Folding"
-msgstr ""
+msgstr "ã‚³ãƒ¼ãƒ‰ã®æŠ˜ã‚ŠãŸãŸã¿"
#: editor/editor_settings.cpp
msgid "Word Wrap"
@@ -5397,7 +5363,7 @@ msgstr ""
#: editor/editor_settings.cpp
msgid "Show Line Length Guidelines"
-msgstr ""
+msgstr "行ã®é•·ã•ã®ã‚¬ã‚¤ãƒ‰ç·šã‚’表示"
#: editor/editor_settings.cpp
msgid "Line Length Guideline Soft Column"
@@ -5408,9 +5374,8 @@ msgid "Line Length Guideline Hard Column"
msgstr ""
#: editor/editor_settings.cpp editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "Script List"
-msgstr "スクリプトエディター"
+msgstr "スクリプト一覧"
#: editor/editor_settings.cpp
msgid "Show Members Overview"
@@ -5423,22 +5388,20 @@ msgid "Files"
msgstr "ファイル"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Trim Trailing Whitespace On Save"
-msgstr "末尾ã®ç©ºç™½ã‚’å–り除ã"
+msgstr "ä¿å­˜æ™‚ã«æœ«å°¾ã®ç©ºç™½ã‚’å–り除ã"
#: editor/editor_settings.cpp
msgid "Autosave Interval Secs"
-msgstr ""
+msgstr "自動ä¿å­˜ã®é–“隔秒数"
#: editor/editor_settings.cpp editor/plugins/script_editor_plugin.cpp
msgid "Restore Scripts On Load"
-msgstr ""
+msgstr "読ã¿è¾¼ã¿æ™‚ã«ã‚¹ã‚¯ãƒªãƒ—トを復元"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Create Signal Callbacks"
-msgstr "シェーダーフォールãƒãƒƒã‚¯ã‚’強制"
+msgstr "シグナルã®ã‚³ãƒ¼ãƒ«ãƒãƒƒã‚¯ã‚’作æˆ"
#: editor/editor_settings.cpp
msgid "Sort Members Outline Alphabetically"
@@ -5446,7 +5409,7 @@ msgstr ""
#: editor/editor_settings.cpp scene/gui/line_edit.cpp
msgid "Cursor"
-msgstr ""
+msgstr "カーソル"
#: editor/editor_settings.cpp
msgid "Scroll Past End Of File"
@@ -5454,20 +5417,19 @@ msgstr ""
#: editor/editor_settings.cpp
msgid "Block Caret"
-msgstr ""
+msgstr "四角形ã®ã‚­ãƒ£ãƒ¬ãƒƒãƒˆ"
#: editor/editor_settings.cpp scene/gui/line_edit.cpp
msgid "Caret Blink"
-msgstr ""
+msgstr "キャレットã®ç‚¹æ»…"
#: editor/editor_settings.cpp scene/gui/line_edit.cpp
msgid "Caret Blink Speed"
-msgstr ""
+msgstr "キャレットã®ç‚¹æ»…速度"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Right Click Moves Caret"
-msgstr "å³ã‚¯ãƒªãƒƒã‚¯ã§ç‚¹ã‚’追加"
+msgstr "å³ã‚¯ãƒªãƒƒã‚¯ã§ã‚­ãƒ£ãƒ¬ãƒƒãƒˆã‚’移動"
#: editor/editor_settings.cpp
msgid "Idle Parse Delay"
@@ -5500,21 +5462,20 @@ msgid "Add Type Hints"
msgstr "タイプを追加"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Show Help Index"
-msgstr "ヘルパーを表示"
+msgstr "ヘルプã®ã‚¤ãƒ³ãƒ‡ãƒƒã‚¯ã‚¹ã‚’表示"
#: editor/editor_settings.cpp
msgid "Help Font Size"
-msgstr ""
+msgstr "ヘルプã®ãƒ•ォントサイズ"
#: editor/editor_settings.cpp
msgid "Help Source Font Size"
-msgstr ""
+msgstr "ヘルプã®ã‚½ãƒ¼ã‚¹ã®ãƒ•ォントサイズ"
#: editor/editor_settings.cpp
msgid "Help Title Font Size"
-msgstr ""
+msgstr "ヘルプã®ã‚¿ã‚¤ãƒˆãƒ«ã®ãƒ•ォントサイズ"
#: editor/editor_settings.cpp editor/plugins/mesh_library_editor_plugin.cpp
#: modules/gridmap/grid_map_editor_plugin.cpp
@@ -5528,11 +5489,11 @@ msgstr "è·é›¢ã‚’å–å¾—:"
#: editor/editor_settings.cpp
msgid "Primary Grid Color"
-msgstr ""
+msgstr "グリッドã®ãƒ—ライマリã®è‰²"
#: editor/editor_settings.cpp
msgid "Secondary Grid Color"
-msgstr ""
+msgstr "グリッドã®ã‚»ã‚«ãƒ³ãƒ€ãƒªã®è‰²"
#: editor/editor_settings.cpp
#, fuzzy
@@ -5577,23 +5538,20 @@ msgid "Grid YZ Plane"
msgstr "GridMap ペイント"
#: editor/editor_settings.cpp editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Default FOV"
-msgstr "デフォルト"
+msgstr "デフォルトã®è¦–野角"
#: editor/editor_settings.cpp editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Default Z Near"
-msgstr "デフォルトã®ãƒ†ãƒ¼ãƒž"
+msgstr "デフォルトã®Z Near"
#: editor/editor_settings.cpp editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Default Z Far"
-msgstr "デフォルト"
+msgstr "デフォルトã®Z Far"
#: editor/editor_settings.cpp
msgid "Lightmap Baking Number Of CPU Threads"
-msgstr ""
+msgstr "ライトマップベイクã®CPUスレッド数"
#: editor/editor_settings.cpp
#, fuzzy
@@ -5601,27 +5559,24 @@ msgid "Navigation Scheme"
msgstr "ナビゲーションモード"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Invert Y Axis"
-msgstr "Y軸を編集"
+msgstr "Y軸をå転"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Invert X Axis"
-msgstr "X軸を編集"
+msgstr "X軸をå転"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Zoom Style"
-msgstr "ズームアウト"
+msgstr "ズームスタイル"
#: editor/editor_settings.cpp
msgid "Emulate Numpad"
-msgstr ""
+msgstr "テンキーをエミュレート"
#: editor/editor_settings.cpp
msgid "Emulate 3 Button Mouse"
-msgstr ""
+msgstr "3ボタンマウスをエミュレート"
#: editor/editor_settings.cpp
#, fuzzy
@@ -5666,9 +5621,8 @@ msgid "Zoom Inertia"
msgstr "ズームイン"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Freelook"
-msgstr "フリールック上"
+msgstr "フリールック"
#: editor/editor_settings.cpp
#, fuzzy
@@ -5676,19 +5630,16 @@ msgid "Freelook Navigation Scheme"
msgstr "ナビゲーションメッシュを生æˆ"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Freelook Sensitivity"
-msgstr "フリールック左"
+msgstr "ãƒ•ãƒªãƒ¼ãƒ«ãƒƒã‚¯ã®æ„Ÿåº¦"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Freelook Inertia"
-msgstr "フリールック左"
+msgstr "ãƒ•ãƒªãƒ¼ãƒ«ãƒƒã‚¯ã®æ…£æ€§"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Freelook Base Speed"
-msgstr "フリールックã®é€Ÿåº¦èª¿æ•´"
+msgstr "フリールックã®åŸºæœ¬é€Ÿåº¦"
#: editor/editor_settings.cpp
#, fuzzy
@@ -5701,55 +5652,48 @@ msgid "Freelook Speed Zoom Link"
msgstr "フリールックã®é€Ÿåº¦èª¿æ•´"
#: editor/editor_settings.cpp editor/plugins/tile_map_editor_plugin.cpp
-#, fuzzy
msgid "Grid Color"
-msgstr "色をå–å¾—"
+msgstr "グリッドã®è‰²"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Guides Color"
-msgstr "色をå–å¾—"
+msgstr "ガイドã®è‰²"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Smart Snapping Line Color"
-msgstr "スマートスナップ"
+msgstr "スマートスナップ行ã®ã‚«ãƒ©ãƒ¼"
#: editor/editor_settings.cpp
msgid "Bone Width"
-msgstr ""
+msgstr "ボーンã®å¹…"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Bone Color 1"
-msgstr "カラーアイテムåã®å¤‰æ›´"
+msgstr "ボーンã®è‰² 1"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Bone Color 2"
-msgstr "カラーアイテムåã®å¤‰æ›´"
+msgstr "ボーンã®è‰² 2"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Bone Selected Color"
-msgstr "é¸æŠžã•れãŸãƒ—ロファイルã®è¨­å®š:"
+msgstr "é¸æŠžã•れãŸãƒœãƒ¼ãƒ³ã®è‰²"
#: editor/editor_settings.cpp
msgid "Bone IK Color"
-msgstr ""
+msgstr "ボーンIKã®è‰²"
#: editor/editor_settings.cpp
msgid "Bone Outline Color"
-msgstr ""
+msgstr "ボーンã®ã‚¢ã‚¦ãƒˆãƒ©ã‚¤ãƒ³ã®è‰²"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Bone Outline Size"
-msgstr "アウトラインã®ã‚µã‚¤ã‚º:"
+msgstr "ボーンã®ã‚¢ã‚¦ãƒˆãƒ©ã‚¤ãƒ³ã®ã‚µã‚¤ã‚º"
#: editor/editor_settings.cpp
msgid "Viewport Border Color"
-msgstr ""
+msgstr "ビューãƒãƒ¼ãƒˆã®ãƒœãƒ¼ãƒ€ãƒ¼ã®è‰²"
#: editor/editor_settings.cpp
msgid "Constrain Editor View"
@@ -5811,7 +5755,7 @@ msgstr "グループエディター"
#: editor/editor_settings.cpp
msgid "Minimap Opacity"
-msgstr ""
+msgstr "ミニマップã®ä¸é€æ˜Žåº¦"
#: editor/editor_settings.cpp
msgid "Window Placement"
@@ -5829,79 +5773,85 @@ msgstr "Rectå…¨é¢"
msgid "Rect Custom Position"
msgstr "曲線ã®Out-Controlã®ä½ç½®ã‚’指定"
-#: editor/editor_settings.cpp
+#: editor/editor_settings.cpp platform/android/export/export_plugin.cpp
msgid "Screen"
msgstr ""
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Font Size"
-msgstr "å‰é¢å›³"
+msgstr "フォントサイズ"
#: editor/editor_settings.cpp
#: modules/gdscript/language_server/gdscript_language_server.cpp
-#, fuzzy
msgid "Remote Host"
-msgstr "リモート "
+msgstr "リモートホスト"
#: editor/editor_settings.cpp
#: modules/gdscript/language_server/gdscript_language_server.cpp
-#, fuzzy
msgid "Remote Port"
-msgstr "ãƒã‚¤ãƒ³ãƒˆã‚’削除"
+msgstr "リモートãƒãƒ¼ãƒˆ"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Editor SSL Certificates"
-msgstr "エディター設定"
+msgstr "エディターã®SSL証明書"
+
+#: editor/editor_settings.cpp
+msgid "HTTP Proxy"
+msgstr "HTTPプロキシ"
+
+#: editor/editor_settings.cpp
+msgid "Host"
+msgstr "ホスト"
+
+#: editor/editor_settings.cpp editor/fileserver/editor_file_server.cpp
+#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp
+msgid "Port"
+msgstr "ãƒãƒ¼ãƒˆ"
#: editor/editor_settings.cpp
msgid "Project Manager"
msgstr "プロジェクトマãƒãƒ¼ã‚¸ãƒ£ãƒ¼"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Sorting Order"
-msgstr "ファイルã®ä¿å­˜:"
+msgstr "ソート順"
#: editor/editor_settings.cpp
msgid "Symbol Color"
-msgstr ""
+msgstr "シンボルã®è‰²"
#: editor/editor_settings.cpp
msgid "Keyword Color"
-msgstr ""
+msgstr "キーワードã®è‰²"
#: editor/editor_settings.cpp
msgid "Control Flow Keyword Color"
-msgstr ""
+msgstr "制御フローã®ã‚­ãƒ¼ãƒ¯ãƒ¼ãƒ‰ã®è‰²"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Base Type Color"
-msgstr "基底型を変更"
+msgstr "基底型ã®è‰²"
#: editor/editor_settings.cpp
msgid "Engine Type Color"
-msgstr ""
+msgstr "エンジンã®åž‹ã®è‰²"
#: editor/editor_settings.cpp
msgid "User Type Color"
-msgstr ""
+msgstr "ユーザーã®åž‹ã®è‰²"
#: editor/editor_settings.cpp
msgid "Comment Color"
-msgstr ""
+msgstr "コメントã®è‰²"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "String Color"
-msgstr "ファイルã®ä¿å­˜:"
+msgstr "文字列ã®è‰²"
-#: editor/editor_settings.cpp
-#, fuzzy
+#: editor/editor_settings.cpp platform/javascript/export/export.cpp
+#: platform/uwp/export/export.cpp
msgid "Background Color"
-msgstr "無効ãªèƒŒæ™¯è‰²ã§ã™ã€‚"
+msgstr "背景色"
#: editor/editor_settings.cpp
#, fuzzy
@@ -5926,14 +5876,12 @@ msgid "Completion Font Color"
msgstr ""
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Text Color"
-msgstr "次ã®åºŠé¢"
+msgstr "テキストã®è‰²"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Line Number Color"
-msgstr "行番å·:"
+msgstr "行番å·ã®è‰²"
#: editor/editor_settings.cpp
#, fuzzy
@@ -5942,17 +5890,15 @@ msgstr "行番å·:"
#: editor/editor_settings.cpp
msgid "Caret Color"
-msgstr ""
+msgstr "キャレットã®è‰²"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Caret Background Color"
-msgstr "無効ãªèƒŒæ™¯è‰²ã§ã™ã€‚"
+msgstr "キャレットã®èƒŒæ™¯è‰²"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Text Selected Color"
-msgstr "é¸æŠžå¯¾è±¡ã‚’å‰Šé™¤"
+msgstr "é¸æŠžã•れãŸãƒ†ã‚­ã‚¹ãƒˆã®è‰²"
#: editor/editor_settings.cpp
#, fuzzy
@@ -5961,77 +5907,67 @@ msgstr "é¸æŠžç¯„å›²ã®ã¿"
#: editor/editor_settings.cpp
msgid "Brace Mismatch Color"
-msgstr ""
+msgstr "波括弧ミスマッãƒã®è‰²"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Current Line Color"
-msgstr "ç¾åœ¨ã®ã‚·ãƒ¼ãƒ³"
+msgstr "ç¾åœ¨ã®è¡Œã®è‰²"
#: editor/editor_settings.cpp
msgid "Line Length Guideline Color"
-msgstr ""
+msgstr "行ã®é•·ã•ã®ã‚¬ã‚¤ãƒ‰ç·šã®è‰²"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Word Highlighted Color"
-msgstr "シンタックスãƒã‚¤ãƒ©ã‚¤ãƒˆ"
+msgstr "ãƒã‚¤ãƒ©ã‚¤ãƒˆã•れãŸå˜èªžã®è‰²"
#: editor/editor_settings.cpp
msgid "Number Color"
-msgstr ""
+msgstr "番å·ã®è‰²"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Function Color"
-msgstr "関数"
+msgstr "関数ã®è‰²"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Member Variable Color"
-msgstr "変数åを変更"
+msgstr "メンãƒãƒ¼å¤‰æ•°ã®è‰²"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Mark Color"
-msgstr "色をå–å¾—"
+msgstr "マークã®è‰²"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Bookmark Color"
-msgstr "ブックマーク"
+msgstr "ブックマークã®è‰²"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Breakpoint Color"
-msgstr "ブレークãƒã‚¤ãƒ³ãƒˆ"
+msgstr "ブレークãƒã‚¤ãƒ³ãƒˆã®è‰²"
#: editor/editor_settings.cpp
msgid "Executing Line Color"
-msgstr ""
+msgstr "実行中ã®è¡Œã®è‰²"
#: editor/editor_settings.cpp
msgid "Code Folding Color"
-msgstr ""
+msgstr "コード折りãŸãŸã¿ã®è‰²"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Search Result Color"
-msgstr "æ¤œç´¢çµæžœ"
+msgstr "æ¤œç´¢çµæžœã®è‰²"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Search Result Border Color"
-msgstr "æ¤œç´¢çµæžœ"
+msgstr "æ¤œç´¢çµæžœã®ãƒœãƒ¼ãƒ€ãƒ¼ã®è‰²"
#: editor/editor_spin_slider.cpp
msgid "Hold %s to round to integers. Hold Shift for more precise changes."
msgstr "%s を押ã—ãŸã¾ã¾ã§æ•´æ•°å€¤ã«ä¸¸ã‚る。Shiftを押ã—ãŸã¾ã¾ã§ç²¾å¯†èª¿æ•´ã€‚"
#: editor/editor_spin_slider.cpp scene/gui/button.cpp
-#, fuzzy
msgid "Flat"
-msgstr "フラット0"
+msgstr "フラット"
#: editor/editor_sub_scene.cpp
msgid "Select Node(s) to Import"
@@ -6075,22 +6011,6 @@ msgid "Starting the download..."
msgstr "ダウンロードを開始ã—ã¦ã„ã¾ã™..."
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "HTTP Proxy"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Host"
-msgstr ""
-
-#: editor/export_template_manager.cpp editor/fileserver/editor_file_server.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp main/main.cpp
-#: modules/mono/mono_gd/gd_mono.cpp
-msgid "Port"
-msgstr ""
-
-#: editor/export_template_manager.cpp
msgid "Error requesting URL:"
msgstr "URL リクエストã®ã‚¨ãƒ©ãƒ¼:"
@@ -6339,10 +6259,11 @@ msgstr ""
#: editor/fileserver/editor_file_server.cpp
msgid "File Server"
-msgstr ""
+msgstr "ファイルサーãƒãƒ¼"
#: editor/fileserver/editor_file_server.cpp
#: editor/plugins/version_control_editor_plugin.cpp
+#: platform/uwp/export/export.cpp platform/windows/export/export.cpp
msgid "Password"
msgstr "パスワード"
@@ -6718,12 +6639,123 @@ msgstr "グループã®ç®¡ç†"
#: editor/import/editor_import_collada.cpp
msgid "Collada"
-msgstr ""
+msgstr "Collada"
#: editor/import/editor_import_collada.cpp
msgid "Use Ambient"
msgstr ""
+#: editor/import/resource_importer_bitmask.cpp
+#, fuzzy
+msgid "Create From"
+msgstr "フォルダーを作æˆ"
+
+#: editor/import/resource_importer_bitmask.cpp
+#: servers/audio/effects/audio_effect_compressor.cpp
+msgid "Threshold"
+msgstr ""
+
+#: editor/import/resource_importer_csv_translation.cpp
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_scene.cpp
+#: editor/import/resource_importer_texture.cpp
+#: editor/import/resource_importer_wav.cpp scene/3d/gi_probe.cpp
+#, fuzzy
+msgid "Compress"
+msgstr "コンãƒãƒ¼ãƒãƒ³ãƒˆ"
+
+#: editor/import/resource_importer_csv_translation.cpp
+msgid "Delimiter"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+msgid "No BPTC If RGB"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/sprite_3d.cpp
+#: scene/resources/material.cpp scene/resources/particles_material.cpp
+#: scene/resources/texture.cpp
+msgid "Flags"
+msgstr "フラグ"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/animation/tween.cpp
+#: scene/resources/texture.cpp
+msgid "Repeat"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/2d/light_2d.cpp
+#: scene/gui/control.cpp scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Filter"
+msgstr "フィルター:"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Mipmaps"
+msgstr "シグナル"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+msgid "Anisotropic"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+msgid "sRGB"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#, fuzzy
+msgid "Slices"
+msgstr "自動スライス"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
+#: scene/resources/style_box.cpp
+#, fuzzy
+msgid "Horizontal"
+msgstr "æ°´å¹³:"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
+#: scene/resources/style_box.cpp
+#, fuzzy
+msgid "Vertical"
+msgstr "垂直:"
+
+#: editor/import/resource_importer_obj.cpp
+#, fuzzy
+msgid "Generate Tangents"
+msgstr "ãƒã‚¤ãƒ³ãƒˆã‚’生æˆ"
+
+#: editor/import/resource_importer_obj.cpp
+#, fuzzy
+msgid "Scale Mesh"
+msgstr "スケールモード"
+
+#: editor/import/resource_importer_obj.cpp
+#, fuzzy
+msgid "Offset Mesh"
+msgstr "オフセット:"
+
+#: editor/import/resource_importer_obj.cpp
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Octahedral Compression"
+msgstr "圧縮"
+
+#: editor/import/resource_importer_obj.cpp
+#, fuzzy
+msgid "Optimize Mesh Flags"
+msgstr "サイズ: "
+
#: editor/import/resource_importer_scene.cpp
msgid "Import as Single Scene"
msgstr "å˜ä¸€ã®ã‚·ãƒ¼ãƒ³ã¨ã—ã¦èª­ã¿è¾¼ã‚€"
@@ -6764,6 +6796,155 @@ msgstr "複数ã®ã‚·ãƒ¼ãƒ³ã¨ã—ã¦ã‚¤ãƒ³ãƒãƒ¼ãƒˆ"
msgid "Import as Multiple Scenes+Materials"
msgstr "複数ã®ã‚·ãƒ¼ãƒ³ï¼‹ãƒžãƒ†ãƒªã‚¢ãƒ«ã¨ã—ã¦ã‚¤ãƒ³ãƒãƒ¼ãƒˆ"
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Nodes"
+msgstr "ノード"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Root Type"
+msgstr "Return(戻り値)"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Root Name"
+msgstr "リモートå"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Root Scale"
+msgstr "スケール"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Custom Script"
+msgstr "ノードを切りå–ã‚‹"
+
+#: editor/import/resource_importer_scene.cpp scene/resources/texture.cpp
+#, fuzzy
+msgid "Storage"
+msgstr "ファイルã®ä¿å­˜:"
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Use Legacy Names"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+#, fuzzy
+msgid "Materials"
+msgstr "マテリアルã®å¤‰æ›´:"
+
+#: editor/import/resource_importer_scene.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Location"
+msgstr "ローカライズ"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Keep On Reimport"
+msgstr "å†ã‚¤ãƒ³ãƒãƒ¼ãƒˆ"
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+#, fuzzy
+msgid "Meshes"
+msgstr "メッシュ"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Ensure Tangents"
+msgstr "接線を計算"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Light Baking"
+msgstr "ライトマップ"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Lightmap Texel Size"
+msgstr "ライトマップを焼ã込む"
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+msgid "Skins"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Use Named Skins"
+msgstr "スケールスナップを使用"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "External Files"
+msgstr "外部"
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Store In Subdir"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Filter Script"
+msgstr "スクリプトを絞り込む"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Keep Custom Tracks"
+msgstr "トランスフォーム"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Optimizer"
+msgstr "最é©åŒ–"
+
+#: editor/import/resource_importer_scene.cpp main/main.cpp
+#: modules/mono/mono_gd/gd_mono.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp scene/2d/camera_2d.cpp scene/2d/light_2d.cpp
+#: scene/2d/navigation_polygon.cpp scene/2d/ray_cast_2d.cpp scene/2d/sprite.cpp
+#: scene/2d/y_sort.cpp scene/3d/audio_stream_player_3d.cpp
+#: scene/3d/baked_lightmap.cpp scene/3d/interpolated_camera.cpp
+#: scene/3d/light.cpp scene/3d/navigation_mesh_instance.cpp
+#: scene/3d/physics_joint.cpp scene/3d/ray_cast.cpp scene/3d/sprite_3d.cpp
+#: scene/gui/graph_edit.cpp scene/gui/rich_text_label.cpp
+#: scene/resources/curve.cpp scene/resources/environment.cpp
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Enabled"
+msgstr "有効"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Max Linear Error"
+msgstr "最大。線形エラー:"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Max Angular Error"
+msgstr "最大。角度エラー:"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Max Angle"
+msgstr "値"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Remove Unused Tracks"
+msgstr "アニメーショントラックを除去"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Clips"
+msgstr "アニメーションクリップ"
+
+#: editor/import/resource_importer_scene.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/particles_2d.cpp scene/3d/area.cpp scene/3d/cpu_particles.cpp
+#: scene/3d/particles.cpp scene/resources/environment.cpp
+msgid "Amount"
+msgstr "é‡"
+
#: editor/import/resource_importer_scene.cpp
#: editor/plugins/mesh_library_editor_plugin.cpp
msgid "Import Scene"
@@ -6806,12 +6987,149 @@ msgstr ""
msgid "Saving..."
msgstr "ä¿å­˜ä¸­..."
+#: editor/import/resource_importer_texture.cpp scene/resources/texture.cpp
+msgid "Lossy Quality"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "HDR Mode"
+msgstr "é¸æŠžãƒ¢ãƒ¼ãƒ‰"
+
+#: editor/import/resource_importer_texture.cpp
+msgid "BPTC LDR"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/mesh_instance_2d.cpp scene/2d/multimesh_instance_2d.cpp
+#: scene/2d/particles_2d.cpp scene/2d/sprite.cpp scene/resources/style_box.cpp
+msgid "Normal Map"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Process"
+msgstr "å‰å‡¦ç†"
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Fix Alpha Border"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Premult Alpha"
+msgstr "ãƒãƒªã‚´ãƒ³ã‚’編集"
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Hdr As Srgb"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Invert Color"
+msgstr "頂点"
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Normal Map Invert Y"
+msgstr "ランダムãªç¸®å°º:"
+
+#: editor/import/resource_importer_texture.cpp
+#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
+#: scene/audio/audio_stream_player.cpp scene/gui/video_player.cpp
+msgid "Stream"
+msgstr "ストリーム"
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Size Limit"
+msgstr "サイズ: "
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Detect 3D"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "SVG"
+msgstr "CSG"
+
#: editor/import/resource_importer_texture.cpp
msgid ""
"Warning, no suitable PC VRAM compression enabled in Project Settings. This "
"texture will not display correctly on PC."
msgstr ""
+#: editor/import/resource_importer_texture_atlas.cpp
+#, fuzzy
+msgid "Atlas File"
+msgstr "アウトラインã®ã‚µã‚¤ã‚º:"
+
+#: editor/import/resource_importer_texture_atlas.cpp
+#, fuzzy
+msgid "Import Mode"
+msgstr "エクスãƒãƒ¼ãƒˆãƒ¢ãƒ¼ãƒ‰:"
+
+#: editor/import/resource_importer_texture_atlas.cpp
+#, fuzzy
+msgid "Crop To Region"
+msgstr "タイル領域を設定"
+
+#: editor/import/resource_importer_texture_atlas.cpp
+msgid "Trim Alpha Border From Region"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp scene/2d/physics_body_2d.cpp
+#, fuzzy
+msgid "Force"
+msgstr "強制プッシュ"
+
+#: editor/import/resource_importer_wav.cpp
+msgid "8 Bit"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp main/main.cpp
+#: modules/mono/editor/csharp_project.cpp modules/mono/mono_gd/gd_mono.cpp
+msgid "Mono"
+msgstr "Mono"
+
+#: editor/import/resource_importer_wav.cpp
+#, fuzzy
+msgid "Max Rate"
+msgstr "ミックス ノード"
+
+#: editor/import/resource_importer_wav.cpp
+#, fuzzy
+msgid "Max Rate Hz"
+msgstr "ミックス ノード"
+
+#: editor/import/resource_importer_wav.cpp
+msgid "Trim"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+#, fuzzy
+msgid "Normalize"
+msgstr "フォーマット"
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+#, fuzzy
+msgid "Loop Mode"
+msgstr "移動モード"
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+#, fuzzy
+msgid "Loop Begin"
+msgstr "移動モード"
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+#, fuzzy
+msgid "Loop End"
+msgstr "移動モード"
+
#: editor/import_defaults_editor.cpp
msgid "Select Importer"
msgstr "インãƒãƒ¼ã‚¿ãƒ¼ã‚’é¸æŠž"
@@ -6888,6 +7206,29 @@ msgid "Failed to load resource."
msgstr "リソースã®èª­ã¿è¾¼ã¿ã«å¤±æ•—ã—ã¾ã—ãŸã€‚"
#: editor/inspector_dock.cpp
+#, fuzzy
+msgid "Property Name Style"
+msgstr "プロジェクトå:"
+
+#: editor/inspector_dock.cpp scene/gui/color_picker.cpp
+msgid "Raw"
+msgstr "Raw"
+
+#: editor/inspector_dock.cpp
+#, fuzzy
+msgid "Capitalized"
+msgstr "å˜èªžã®å…ˆé ­æ–‡å­—を大文字ã«"
+
+#: editor/inspector_dock.cpp
+#, fuzzy
+msgid "Localized"
+msgstr "ロケール"
+
+#: editor/inspector_dock.cpp
+msgid "Localization not available for current language."
+msgstr ""
+
+#: editor/inspector_dock.cpp
msgid "Copy Properties"
msgstr "プロパティをコピー"
@@ -7770,7 +8111,7 @@ msgstr "フィルター..."
#: editor/plugins/asset_library_editor_plugin.cpp scene/main/http_request.cpp
msgid "Use Threads"
-msgstr ""
+msgstr "スレッドを使用"
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Contents:"
@@ -7898,9 +8239,8 @@ msgid "Download Error"
msgstr "ダウンロードエラー"
#: editor/plugins/asset_library_editor_plugin.cpp
-#, fuzzy
msgid "Available URLs"
-msgstr "利用å¯èƒ½ãªãƒ—ロファイル:"
+msgstr "有効ãªURL"
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Download for this asset is already in progress!"
@@ -7931,18 +8271,26 @@ msgid "License (Z-A)"
msgstr "ライセンス (Zã‹ã‚‰A)"
#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgctxt "Pagination"
msgid "First"
msgstr "最åˆ"
-#: editor/plugins/asset_library_editor_plugin.cpp scene/gui/control.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgctxt "Pagination"
msgid "Previous"
msgstr "å‰"
-#: editor/plugins/asset_library_editor_plugin.cpp scene/gui/control.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgctxt "Pagination"
msgid "Next"
msgstr "次"
#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgctxt "Pagination"
msgid "Last"
msgstr "最後"
@@ -8048,11 +8396,11 @@ msgstr ""
#: editor/plugins/baked_lightmap_editor_plugin.cpp
msgid "Bake Lightmaps"
-msgstr "ライトマップを焼ã込む"
+msgstr "ライトマップをベイクã™ã‚‹"
#: editor/plugins/baked_lightmap_editor_plugin.cpp
msgid "LightMap Bake"
-msgstr ""
+msgstr "LightMapをベイク"
#: editor/plugins/baked_lightmap_editor_plugin.cpp
msgid "Select lightmap bake file:"
@@ -8192,19 +8540,19 @@ msgstr ""
"オンã®å ´åˆã€ã‚³ãƒ³ãƒˆãƒ­ãƒ¼ãƒ«ãƒŽãƒ¼ãƒ‰ã‚’移動ã™ã‚‹ã¨ã€ãƒžãƒ¼ã‚¸ãƒ³ã®ä»£ã‚りã«ã‚¢ãƒ³ã‚«ãƒ¼ãŒå¤‰æ›´"
"ã•れã¾ã™ã€‚"
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Top Left"
msgstr "左上"
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Top Right"
msgstr "å³ä¸Š"
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Bottom Right"
msgstr "å³ä¸‹"
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Bottom Left"
msgstr "左下"
@@ -8426,7 +8774,7 @@ msgstr "定è¦ãƒ¢ãƒ¼ãƒ‰"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Toggle smart snapping."
-msgstr "スマート スナッピングをオン / オフ。"
+msgstr "スマートスナップをオン / オフ。"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Use Smart Snap"
@@ -8555,23 +8903,20 @@ msgid "View"
msgstr "ビュー"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#, fuzzy
msgid "Show"
-msgstr "グリッドを表示"
+msgstr "表示"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#, fuzzy
msgid "Show When Snapping"
-msgstr "スマートスナップ"
+msgstr "スナップ時ã«è¡¨ç¤º"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Hide"
-msgstr ""
+msgstr "éš ã™"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#, fuzzy
msgid "Toggle Grid"
-msgstr "モード切り替ãˆ"
+msgstr "グリッドã®åˆ‡ã‚Šæ›¿ãˆ"
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/polygon_2d_editor_plugin.cpp
@@ -8916,6 +9261,19 @@ msgstr "GIプローブã®ç„¼ãè¾¼ã¿"
msgid "Gradient Edited"
msgstr "グラデーション編集"
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+msgid "Swap GradientTexture2D Fill Points"
+msgstr ""
+
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+msgid "Swap Gradient Fill Points"
+msgstr ""
+
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+#, fuzzy
+msgid "Toggle Grid Snap"
+msgstr "グリッドã®åˆ‡ã‚Šæ›¿ãˆ"
+
#: editor/plugins/item_list_editor_plugin.cpp
msgid "Item %d"
msgstr "アイテム %d"
@@ -9150,8 +9508,9 @@ msgstr ""
"既存シーンã‹ã‚‰ã‚¢ãƒƒãƒ—デートã—ã¾ã™ã‹ï¼Ÿ:\n"
"%s"
-#: editor/plugins/mesh_library_editor_plugin.cpp modules/gridmap/grid_map.cpp
-msgid "Mesh Library"
+#: editor/plugins/mesh_library_editor_plugin.cpp
+#, fuzzy
+msgid "MeshLibrary"
msgstr "メッシュライブラリ"
#: editor/plugins/mesh_library_editor_plugin.cpp
@@ -9175,21 +9534,18 @@ msgid "Update from Scene"
msgstr "シーンã‹ã‚‰ã‚¢ãƒƒãƒ—デート"
#: editor/plugins/mesh_library_editor_plugin.cpp
-#, fuzzy
msgid "Apply without Transforms"
-msgstr "MeshInstanceã®ãƒˆãƒ©ãƒ³ã‚¹ãƒ•ォームをé©ç”¨"
+msgstr "トランスフォーム以外をé©ç”¨"
#: editor/plugins/mesh_library_editor_plugin.cpp
-#, fuzzy
msgid "Apply with Transforms"
-msgstr "MeshInstanceã®ãƒˆãƒ©ãƒ³ã‚¹ãƒ•ォームをé©ç”¨"
+msgstr "トランスフォームをå«ã‚é©ç”¨"
#: editor/plugins/mesh_library_editor_plugin.cpp
#: editor/plugins/tile_map_editor_plugin.cpp
#: modules/gridmap/grid_map_editor_plugin.cpp
-#, fuzzy
msgid "Preview Size"
-msgstr "プレビュー"
+msgstr "プレビューサイズ"
#: editor/plugins/multimesh_editor_plugin.cpp
msgid "No mesh source specified (and no MultiMesh set in node)."
@@ -9506,16 +9862,14 @@ msgstr "セグメントを分割ã™ã‚‹(曲線内)"
#: editor/plugins/path_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp editor/spatial_editor_gizmos.cpp
#: modules/csg/csg_gizmos.cpp
-#, fuzzy
msgid "3D Gizmos"
-msgstr "ギズモ"
+msgstr "3Dギズモ"
#: editor/plugins/path_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp editor/spatial_editor_gizmos.cpp
#: modules/csg/csg_gizmos.cpp
-#, fuzzy
msgid "Gizmo Colors"
-msgstr "放出色"
+msgstr "ギズモã®è‰²"
#: editor/plugins/physical_bone_plugin.cpp
msgid "Move Joint"
@@ -9819,7 +10173,7 @@ msgstr "変更をä¿å­˜ã—ã¦é–‰ã˜ã¾ã™ã‹ï¼Ÿ"
#: editor/plugins/script_editor_plugin.cpp
#: editor/plugins/shader_editor_plugin.cpp
msgid "Auto Reload Scripts On External Change"
-msgstr ""
+msgstr "外部変更時ã«ã‚¹ã‚¯ãƒªãƒ—トを自動å†èª­ã¿è¾¼ã¿"
#: editor/plugins/script_editor_plugin.cpp
msgid "Error writing TextFile:"
@@ -9903,7 +10257,7 @@ msgstr "%s クラスリファレンス"
#: editor/plugins/script_editor_plugin.cpp
msgid "Auto Reload And Parse Scripts On Save"
-msgstr ""
+msgstr "ä¿å­˜æ™‚ã«ã‚¹ã‚¯ãƒªãƒ—トを自動å†èª­ã¿è¾¼ã¿ã—è§£æžã™ã‚‹"
#: editor/plugins/script_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
@@ -10081,17 +10435,15 @@ msgstr ""
#: editor/plugins/script_editor_plugin.cpp
msgid "External"
-msgstr ""
+msgstr "外部"
#: editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "Use External Editor"
-msgstr "外部エディターã§ãƒ‡ãƒãƒƒã‚°"
+msgstr "外部エディターを使用"
#: editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "Exec Path"
-msgstr "エクスãƒãƒ¼ãƒˆå…ˆã®ãƒ‘ス"
+msgstr "実行パス"
#: editor/plugins/script_editor_plugin.cpp
#, fuzzy
@@ -10100,26 +10452,23 @@ msgstr "ãƒ†ãƒ³ãƒ—ãƒ¬ãƒ¼ãƒˆãƒ•ã‚¡ã‚¤ãƒ«ã‚’é¸æŠž"
#: editor/plugins/script_editor_plugin.cpp
msgid "Highlight Current Script"
-msgstr ""
+msgstr "ç¾åœ¨ã®ã‚¹ã‚¯ãƒªãƒ—トをãƒã‚¤ãƒ©ã‚¤ãƒˆã™ã‚‹"
#: editor/plugins/script_editor_plugin.cpp
msgid "Script Temperature History Size"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "Current Script Background Color"
-msgstr "無効ãªèƒŒæ™¯è‰²ã§ã™ã€‚"
+msgstr "ç¾åœ¨ã®ã‚¹ã‚¯ãƒªãƒ—トã®èƒŒæ™¯è‰²"
#: editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "Group Help Pages"
-msgstr "é¸æŠžå¯¾è±¡ã‚’ã‚°ãƒ«ãƒ¼ãƒ—åŒ–"
+msgstr "ヘルプページをグループ化"
#: editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "Sort Scripts By"
-msgstr "スクリプト作æˆ"
+msgstr "スクリプトを次ã§ã‚½ãƒ¼ãƒˆ"
#: editor/plugins/script_editor_plugin.cpp
#, fuzzy
@@ -10143,8 +10492,8 @@ msgstr "メソッドã¸ã®æŽ¥ç¶š:"
msgid "Source"
msgstr "ソース"
-#: editor/plugins/script_text_editor.cpp scene/3d/interpolated_camera.cpp
-#: scene/animation/skeleton_ik.cpp
+#: editor/plugins/script_text_editor.cpp platform/uwp/export/export.cpp
+#: scene/3d/interpolated_camera.cpp scene/animation/skeleton_ik.cpp
msgid "Target"
msgstr "ターゲット"
@@ -10645,13 +10994,14 @@ msgstr "ã‚·ãƒãƒžãƒ†ã‚£ãƒƒã‚¯ãƒ—レビュー"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "(Not in GLES2)"
-msgstr ""
+msgstr "(GLES2éžå¯¾å¿œ)"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid ""
"Debug draw modes are only available when using the GLES3 renderer, not GLES2."
-msgstr "GLES2レンダラーã®å ´åˆã¯åˆ©ç”¨ã§ãã¾ã›ã‚“。"
+msgstr ""
+"デãƒãƒƒã‚°æç”»ãƒ¢ãƒ¼ãƒ‰ã¯GLES2ã§ã¯åˆ©ç”¨ã§ããšã€GLES3レンダラーを使用ã—ã¦ã„ã‚‹å ´åˆã§"
+"ã®ã¿åˆ©ç”¨ã§ãã¾ã™ã€‚"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Freelook Left"
@@ -10957,9 +11307,8 @@ msgid "Show Viewport Rotation Gizmo"
msgstr "ビュー回転を固定"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Instanced"
-msgstr "インスタンス"
+msgstr "インスタンス化済"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Unnamed Gizmo"
@@ -11119,7 +11468,9 @@ msgstr "速度:"
#: editor/plugins/sprite_frames_editor_plugin.cpp
#: modules/gltf/gltf_animation.cpp modules/minimp3/audio_stream_mp3.cpp
-#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp scene/2d/path_2d.cpp
+#: modules/minimp3/resource_importer_mp3.cpp
+#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp
+#: modules/stb_vorbis/resource_importer_ogg_vorbis.cpp scene/2d/path_2d.cpp
#: scene/3d/path.cpp scene/resources/animation.cpp scene/resources/material.cpp
msgid "Loop"
msgstr "ループ"
@@ -11560,9 +11911,8 @@ msgid "Select Another Theme Resource:"
msgstr "ä»–ã®ãƒ†ãƒ¼ãƒžãƒªã‚½ãƒ¼ã‚¹ã®é¸æŠž:"
#: editor/plugins/theme_editor_plugin.cpp
-#, fuzzy
msgid "Theme Resource"
-msgstr "リソースåを変更"
+msgstr "テーマリソース"
#: editor/plugins/theme_editor_plugin.cpp
msgid "Another Theme"
@@ -11622,9 +11972,8 @@ msgid "Set Variation Base Type"
msgstr "変数ã®åž‹ã‚’設定"
#: editor/plugins/theme_editor_plugin.cpp
-#, fuzzy
msgid "Set Base Type"
-msgstr "基底型を変更"
+msgstr "基底型を設定"
#: editor/plugins/theme_editor_plugin.cpp
msgid "Show Default"
@@ -11890,33 +12239,29 @@ msgid "Clear Transform"
msgstr "トランスフォームをクリア"
#: editor/plugins/tile_map_editor_plugin.cpp
-#, fuzzy
msgid "Tile Map"
-msgstr "タイルマップを塗る"
+msgstr "タイルマップ"
#: editor/plugins/tile_map_editor_plugin.cpp
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Palette Min Width"
-msgstr ""
+msgstr "ãƒ‘ãƒ¬ãƒƒãƒˆã®æœ€å°å¹…"
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Palette Item Hseparation"
msgstr ""
#: editor/plugins/tile_map_editor_plugin.cpp
-#, fuzzy
msgid "Show Tile Names"
-msgstr "ã™ã¹ã¦ã®è¨€èªžã‚’表示ã™ã‚‹"
+msgstr "タイルåを表示"
#: editor/plugins/tile_map_editor_plugin.cpp
-#, fuzzy
msgid "Show Tile Ids"
-msgstr "ルーラーを表示"
+msgstr "タイルIDを表示"
#: editor/plugins/tile_map_editor_plugin.cpp
-#, fuzzy
msgid "Sort Tiles By Name"
-msgstr "ファイルã®ä¸¦ã³æ›¿ãˆ"
+msgstr "タイルをåå‰ã§ä¸¦ã³æ›¿ãˆ"
#: editor/plugins/tile_map_editor_plugin.cpp
#, fuzzy
@@ -11930,14 +12275,12 @@ msgid "Editor Side"
msgstr "エディター"
#: editor/plugins/tile_map_editor_plugin.cpp
-#, fuzzy
msgid "Display Grid"
-msgstr "オーãƒãƒ¼ãƒ‰ãƒ­ãƒ¼è¡¨ç¤º"
+msgstr "グリッドを表示"
#: editor/plugins/tile_map_editor_plugin.cpp
-#, fuzzy
msgid "Axis Color"
-msgstr "色をå–å¾—"
+msgstr "軸ã®è‰²"
#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Add Texture(s) to TileSet."
@@ -12012,8 +12355,9 @@ msgstr "ビットマスク"
msgid "Priority"
msgstr "優先順ä½"
-#: editor/plugins/tile_set_editor_plugin.cpp main/main.cpp scene/gui/button.cpp
-#: scene/gui/item_list.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp main/main.cpp
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#: scene/gui/button.cpp scene/gui/item_list.cpp
msgid "Icon"
msgstr "アイコン"
@@ -12286,9 +12630,8 @@ msgid "TileSet"
msgstr "タイルセット"
#: editor/plugins/version_control_editor_plugin.cpp
-#, fuzzy
msgid "No VCS plugins are available."
-msgstr "VCSアドオンã¯åˆ©ç”¨ã§ãã¾ã›ã‚“。"
+msgstr "利用å¯èƒ½ãªVCSプラグインã¯ã‚りã¾ã›ã‚“。"
#: editor/plugins/version_control_editor_plugin.cpp
msgid ""
@@ -12330,9 +12673,8 @@ msgid "Do you want to remove the %s branch?"
msgstr "%s ブランãƒã‚’削除ã—ã¾ã™ã‹?"
#: editor/plugins/version_control_editor_plugin.cpp
-#, fuzzy
msgid "Do you want to remove the %s remote?"
-msgstr "リモート㮠%s ブランãƒã‚’削除ã—ã¾ã™ã‹ï¼Ÿ"
+msgstr "リモート %s を削除ã—ã¾ã™ã‹ï¼Ÿ"
#: editor/plugins/version_control_editor_plugin.cpp
msgid "Apply"
@@ -12379,9 +12721,8 @@ msgid "Unstage all changes"
msgstr "ã™ã¹ã¦ã®å¤‰æ›´ã‚’ステージã‹ã‚‰ä¸‹ã’ã‚‹"
#: editor/plugins/version_control_editor_plugin.cpp
-#, fuzzy
msgid "Commit Message"
-msgstr "メッセージをコミットã™ã‚‹"
+msgstr "コミットメッセージ"
#: editor/plugins/version_control_editor_plugin.cpp
msgid "Commit Changes"
@@ -13379,10 +13720,6 @@ msgstr ""
"ã™ã€‚"
#: editor/project_export.cpp
-msgid "Release"
-msgstr "リリース"
-
-#: editor/project_export.cpp
msgid "Exporting All"
msgstr "ã™ã¹ã¦ã‚¨ã‚¯ã‚¹ãƒãƒ¼ãƒˆ"
@@ -14230,7 +14567,7 @@ msgstr "ロケールフィルター"
#: editor/project_settings_editor.cpp
msgid "Show All Locales"
-msgstr "ã™ã¹ã¦ã®è¨€èªžã‚’表示ã™ã‚‹"
+msgstr "ã™ã¹ã¦ã®è¨€èªžã‚’表示"
#: editor/project_settings_editor.cpp
msgid "Show Selected Locales Only"
@@ -15147,11 +15484,11 @@ msgstr "タイルを絞り込む"
#: editor/script_editor_debugger.cpp
msgid "Auto Switch To Remote Scene Tree"
-msgstr ""
+msgstr "リモートシーンツリーã«è‡ªå‹•çš„ã«åˆ‡ã‚Šæ›¿ãˆ"
#: editor/script_editor_debugger.cpp
msgid "Remote Scene Tree Refresh Interval"
-msgstr ""
+msgstr "ãƒªãƒ¢ãƒ¼ãƒˆã‚·ãƒ¼ãƒ³ãƒ„ãƒªãƒ¼ã®æ›´æ–°é–“éš”"
#: editor/script_editor_debugger.cpp
msgid "Remote Inspect Refresh Interval"
@@ -15265,6 +15602,7 @@ msgid "Change AudioStreamPlayer3D Emission Angle"
msgstr "AudioStreamPlayer3Dã®æ”¾å°„角度を変更ã™ã‚‹"
#: editor/spatial_editor_gizmos.cpp modules/gltf/gltf_node.cpp
+#: platform/osx/export/export.cpp
msgid "Camera"
msgstr ""
@@ -15304,23 +15642,20 @@ msgid "Change Particles AABB"
msgstr "パーティクルã®è»¸å¹³è¡Œå¢ƒç•Œãƒœãƒƒã‚¯ã‚¹ã‚’変更"
#: editor/spatial_editor_gizmos.cpp
-#, fuzzy
msgid "Reflection Probe"
-msgstr "プロパティã®é¸æŠž"
+msgstr "リフレクションプローブ"
#: editor/spatial_editor_gizmos.cpp
msgid "Change Probe Extents"
msgstr "プローブã®ç¯„囲を変更"
#: editor/spatial_editor_gizmos.cpp
-#, fuzzy
msgid "GI Probe"
-msgstr "GIプローブã®ç„¼ãè¾¼ã¿"
+msgstr "GIプローブ"
#: editor/spatial_editor_gizmos.cpp
-#, fuzzy
msgid "Baked Indirect Light"
-msgstr "間接光"
+msgstr "ベイクã•れãŸé–“接光"
#: editor/spatial_editor_gizmos.cpp modules/csg/csg_gizmos.cpp
msgid "Change Sphere Shape Radius"
@@ -15351,24 +15686,20 @@ msgid "Change Ray Shape Length"
msgstr "レイシェイプã®é•·ã•を変更"
#: editor/spatial_editor_gizmos.cpp
-#, fuzzy
msgid "Navigation Edge"
-msgstr "ナビゲーションモード"
+msgstr "ナビゲーションエッジ"
#: editor/spatial_editor_gizmos.cpp
-#, fuzzy
msgid "Navigation Edge Disabled"
-msgstr "ナビゲーションモード"
+msgstr "ナビゲーションエッジ無効化"
#: editor/spatial_editor_gizmos.cpp
-#, fuzzy
msgid "Navigation Solid"
-msgstr "ナビゲーションモード"
+msgstr "ナビゲーションソリッド"
#: editor/spatial_editor_gizmos.cpp
-#, fuzzy
msgid "Navigation Solid Disabled"
-msgstr "ナビゲーションモード"
+msgstr "ナビゲーションソリッド無効化"
#: editor/spatial_editor_gizmos.cpp
msgid "Joint Body A"
@@ -15391,9 +15722,8 @@ msgid "Set Room Point Position"
msgstr "Room ãƒã‚¤ãƒ³ãƒˆã®ä½ç½®ã‚’設定"
#: editor/spatial_editor_gizmos.cpp scene/3d/portal.cpp
-#, fuzzy
msgid "Portal Margin"
-msgstr "マージンを設定ã™ã‚‹"
+msgstr ""
#: editor/spatial_editor_gizmos.cpp
msgid "Portal Edge"
@@ -15457,32 +15787,29 @@ msgstr "オクルーダーãƒãƒªã‚´ãƒ³ã‚’生æˆ"
#: main/main.cpp
msgid "Godot Physics"
-msgstr ""
+msgstr "Godot Physics"
#: main/main.cpp servers/physics_2d/physics_2d_server_sw.cpp
#: servers/visual/visual_server_scene.cpp
msgid "Use BVH"
-msgstr ""
+msgstr "BVHを使用"
#: main/main.cpp servers/physics_2d/physics_2d_server_sw.cpp
#: servers/visual/visual_server_scene.cpp
-#, fuzzy
msgid "BVH Collision Margin"
-msgstr "コリジョンモード"
+msgstr "BVHコリジョンマージン"
#: main/main.cpp
-#, fuzzy
msgid "Crash Handler"
-msgstr "ãƒãƒ³ãƒ‰ãƒ«ã‚’設定ã™ã‚‹"
+msgstr "クラッシュãƒãƒ³ãƒ‰ãƒ©ãƒ¼"
#: main/main.cpp
-#, fuzzy
msgid "Multithreaded Server"
-msgstr "マルãƒãƒŽãƒ¼ãƒ‰ セット"
+msgstr "マルãƒã‚¹ãƒ¬ãƒƒãƒ‰ã‚µãƒ¼ãƒãƒ¼"
#: main/main.cpp
msgid "RID Pool Prealloc"
-msgstr ""
+msgstr "RIDプールã®äº‹å‰å‰²ã‚Šå½“ã¦"
#: main/main.cpp
#, fuzzy
@@ -15491,19 +15818,19 @@ msgstr "デãƒãƒƒã‚¬ãƒ¼"
#: main/main.cpp
msgid "Max Chars Per Second"
-msgstr ""
+msgstr "1ç§’ã‚ãŸã‚Šã®æœ€å¤§æ–‡å­—æ•°"
#: main/main.cpp
msgid "Max Messages Per Frame"
-msgstr ""
+msgstr "1フレームã‚ãŸã‚Šã®æœ€å¤§ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸æ•°"
#: main/main.cpp
msgid "Max Errors Per Second"
-msgstr ""
+msgstr "1ç§’ã‚ãŸã‚Šã®æœ€å¤§ã‚¨ãƒ©ãƒ¼æ•°"
#: main/main.cpp
msgid "Max Warnings Per Second"
-msgstr ""
+msgstr "1ç§’ã‚ãŸã‚Šã®æœ€å¤§è­¦å‘Šæ•°"
#: main/main.cpp
msgid "Flush stdout On Print"
@@ -15511,21 +15838,19 @@ msgstr ""
#: main/main.cpp servers/visual_server.cpp
msgid "Logging"
-msgstr ""
+msgstr "ロギング"
#: main/main.cpp
msgid "File Logging"
-msgstr ""
+msgstr "ファイルロギング"
#: main/main.cpp
-#, fuzzy
msgid "Enable File Logging"
-msgstr "フィルタリングを有効化"
+msgstr "ファイルロギングを有効化"
#: main/main.cpp
-#, fuzzy
msgid "Log Path"
-msgstr "パスをコピー"
+msgstr "ログã®ãƒ‘ス"
#: main/main.cpp
msgid "Max Log Files"
@@ -15533,22 +15858,22 @@ msgstr ""
#: main/main.cpp
msgid "Driver"
-msgstr ""
+msgstr "ドライãƒãƒ¼"
#: main/main.cpp
-#, fuzzy
msgid "Driver Name"
-msgstr "スクリプトå:"
+msgstr "ドライãƒãƒ¼å"
#: main/main.cpp
msgid "Fallback To GLES2"
-msgstr ""
+msgstr "GLES2ã«ãƒ•ォールãƒãƒƒã‚¯"
#: main/main.cpp
msgid "Use Nvidia Rect Flicker Workaround"
-msgstr ""
+msgstr "Nvidiaã§ã®Rectã¡ã‚‰ã¤ãã®å›žé¿ç­–を使用"
-#: main/main.cpp platform/uwp/os_uwp.cpp
+#: main/main.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp platform/uwp/os_uwp.cpp
#, fuzzy
msgid "Display"
msgstr "ã™ã¹ã¦è¡¨ç¤º"
@@ -15571,7 +15896,7 @@ msgstr "ライト"
#: main/main.cpp
msgid "Always On Top"
-msgstr ""
+msgstr "å¸¸ã«æœ€å‰é¢"
#: main/main.cpp
#, fuzzy
@@ -15585,51 +15910,35 @@ msgstr "試験的"
#: main/main.cpp
msgid "DPI"
-msgstr ""
+msgstr "DPI"
#: main/main.cpp
msgid "Allow hiDPI"
-msgstr ""
+msgstr "hiDPIを許å¯"
#: main/main.cpp
-#, fuzzy
msgid "V-Sync"
-msgstr "åŒæœŸ"
+msgstr "åž‚ç›´åŒæœŸ"
#: main/main.cpp
-#, fuzzy
msgid "Use V-Sync"
-msgstr "スナップを使用"
+msgstr "åž‚ç›´åŒæœŸã‚’使用"
#: main/main.cpp
msgid "Per Pixel Transparency"
-msgstr ""
+msgstr "ピクセルå˜ä½ã®é€æ˜Žåº¦"
#: main/main.cpp
msgid "Allowed"
msgstr ""
-#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp scene/2d/camera_2d.cpp
-#: scene/2d/light_2d.cpp scene/2d/navigation_polygon.cpp
-#: scene/2d/ray_cast_2d.cpp scene/2d/sprite.cpp scene/2d/y_sort.cpp
-#: scene/3d/audio_stream_player_3d.cpp scene/3d/baked_lightmap.cpp
-#: scene/3d/interpolated_camera.cpp scene/3d/light.cpp
-#: scene/3d/navigation_mesh_instance.cpp scene/3d/ray_cast.cpp
-#: scene/3d/sprite_3d.cpp scene/gui/graph_edit.cpp
-#: scene/gui/rich_text_label.cpp scene/resources/curve.cpp
-#: scene/resources/environment.cpp
-#, fuzzy
-msgid "Enabled"
-msgstr "有効"
-
#: main/main.cpp
msgid "Intended Usage"
msgstr ""
#: main/main.cpp
-#, fuzzy
msgid "Framebuffer Allocation"
-msgstr "é¸æŠžå¯¾è±¡ã‚’å…¨é¢ã«"
+msgstr "フレームãƒãƒƒãƒ•ã‚¡ã®å‰²ã‚Šå½“ã¦"
#: main/main.cpp platform/uwp/os_uwp.cpp
#, fuzzy
@@ -15641,9 +15950,8 @@ msgid "Threads"
msgstr ""
#: main/main.cpp servers/physics_2d/physics_2d_server_wrap_mt.h
-#, fuzzy
msgid "Thread Model"
-msgstr "モード切り替ãˆ"
+msgstr "スレッドモデル"
#: main/main.cpp
msgid "Thread Safe BVH"
@@ -15653,13 +15961,14 @@ msgstr ""
msgid "Handheld"
msgstr ""
-#: main/main.cpp
+#: main/main.cpp platform/javascript/export/export.cpp
+#: platform/uwp/export/export.cpp
#, fuzzy
msgid "Orientation"
msgstr "オンラインドキュメント"
#: main/main.cpp scene/gui/scroll_container.cpp scene/gui/text_edit.cpp
-#: scene/main/scene_tree.cpp
+#: scene/main/scene_tree.cpp scene/register_scene_types.cpp
#, fuzzy
msgid "Common"
msgstr "コミュニティ"
@@ -15682,7 +15991,7 @@ msgstr ""
#: scene/gui/scroll_container.cpp scene/gui/text_edit.cpp scene/gui/tree.cpp
#: scene/main/viewport.cpp scene/register_scene_types.cpp
msgid "GUI"
-msgstr ""
+msgstr "GUI"
#: main/main.cpp
msgid "Drop Mouse On GUI Input Disabled"
@@ -15702,8 +16011,8 @@ msgstr ""
#: main/main.cpp
#, fuzzy
-msgid "Frame Delay (msec)"
-msgstr "é¸æŠžå¯¾è±¡ã‚’å…¨é¢ã«"
+msgid "Frame Delay Msec"
+msgstr "フレームé…å»¶ (ミリ秒)"
#: main/main.cpp
msgid "Low Processor Mode"
@@ -15715,16 +16024,15 @@ msgstr ""
#: main/main.cpp
msgid "iOS"
-msgstr ""
+msgstr "iOS"
#: main/main.cpp
msgid "Hide Home Indicator"
msgstr ""
#: main/main.cpp
-#, fuzzy
msgid "Input Devices"
-msgstr "ã™ã¹ã¦ã®ãƒ‡ãƒã‚¤ã‚¹"
+msgstr "入力デãƒã‚¤ã‚¹"
#: main/main.cpp
#, fuzzy
@@ -15733,14 +16041,13 @@ msgstr "点"
#: main/main.cpp
msgid "Touch Delay"
-msgstr ""
+msgstr "タッãƒã®é…å»¶"
#: main/main.cpp servers/visual_server.cpp
msgid "GLES3"
-msgstr ""
+msgstr "GLES3"
#: main/main.cpp servers/visual_server.cpp
-#, fuzzy
msgid "Shaders"
msgstr "シェーダー"
@@ -15762,7 +16069,7 @@ msgstr ""
#: main/main.cpp
msgid "Boot Splash"
-msgstr ""
+msgstr "ブートスプラッシュ"
#: main/main.cpp
#, fuzzy
@@ -15775,26 +16082,23 @@ msgstr ""
#: main/main.cpp
msgid "Fullsize"
-msgstr ""
+msgstr "フルサイズ"
#: main/main.cpp scene/resources/dynamic_font.cpp
-#, fuzzy
msgid "Use Filter"
-msgstr "フィルター:"
+msgstr "フィルターを使用"
#: main/main.cpp scene/resources/style_box.cpp
-#, fuzzy
msgid "BG Color"
-msgstr "カラー"
+msgstr "背景色"
#: main/main.cpp
-#, fuzzy
msgid "macOS Native Icon"
-msgstr "タイル アイコンを設定"
+msgstr "macOSã®ãƒã‚¤ãƒ†ã‚£ãƒ–アイコン"
#: main/main.cpp
msgid "Windows Native Icon"
-msgstr ""
+msgstr "Windowsã®ãƒã‚¤ãƒ†ã‚£ãƒ–アイコン"
#: main/main.cpp
msgid "Buffering"
@@ -15813,9 +16117,8 @@ msgid "Emulate Mouse From Touch"
msgstr ""
#: main/main.cpp
-#, fuzzy
msgid "Mouse Cursor"
-msgstr "マウスボタン"
+msgstr "マウスカーソル"
#: main/main.cpp
#, fuzzy
@@ -15827,61 +16130,49 @@ msgid "Custom Image Hotspot"
msgstr ""
#: main/main.cpp
-#, fuzzy
msgid "Tooltip Position Offset"
-msgstr "回転ã®ã‚ªãƒ•セット:"
-
-#: main/main.cpp modules/mono/editor/csharp_project.cpp
-#: modules/mono/mono_gd/gd_mono.cpp
-msgid "Mono"
-msgstr ""
+msgstr "ツールãƒãƒƒãƒ—ä½ç½®ã®ã‚ªãƒ•セット"
#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp
-#, fuzzy
msgid "Debugger Agent"
-msgstr "デãƒãƒƒã‚¬ãƒ¼"
+msgstr "デãƒãƒƒã‚¬ãƒ¼ã‚¨ãƒ¼ã‚¸ã‚§ãƒ³ãƒˆ"
#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp
-#, fuzzy
msgid "Wait For Debugger"
-msgstr "デãƒãƒƒã‚¬ãƒ¼"
+msgstr "デãƒãƒƒã‚¬ãƒ¼ã‚’待機"
#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp
-#, fuzzy
msgid "Wait Timeout"
-msgstr "タイムアウト。"
+msgstr "待機ã®ã‚¿ã‚¤ãƒ ã‚¢ã‚¦ãƒˆ"
#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp
msgid "Args"
-msgstr ""
+msgstr "引数"
#: main/main.cpp
msgid "Runtime"
-msgstr ""
+msgstr "ランタイム"
#: main/main.cpp
msgid "Unhandled Exception Policy"
-msgstr ""
+msgstr "未処ç†ä¾‹å¤–ã®ãƒãƒªã‚·ãƒ¼"
#: main/main.cpp
-#, fuzzy
msgid "Main Loop Type"
-msgstr "ノードタイプを探ã™"
+msgstr "メインループã®ã‚¿ã‚¤ãƒ—"
#: main/main.cpp scene/gui/texture_progress.cpp
#: scene/gui/viewport_container.cpp
-#, fuzzy
msgid "Stretch"
-msgstr "フェッãƒ"
+msgstr "ストレッãƒ"
#: main/main.cpp
-#, fuzzy
msgid "Aspect"
-msgstr "インスペクター"
+msgstr "アスペクト"
#: main/main.cpp
msgid "Shrink"
-msgstr ""
+msgstr "縮å°"
#: main/main.cpp
msgid "Auto Accept Quit"
@@ -15893,17 +16184,16 @@ msgid "Quit On Go Back"
msgstr "戻る"
#: main/main.cpp scene/main/viewport.cpp
-#, fuzzy
msgid "Snap Controls To Pixels"
-msgstr "ノードå´é¢ã«ã‚¹ãƒŠãƒƒãƒ—"
+msgstr "コントロールをピクセルå˜ä½ã§ã‚¹ãƒŠãƒƒãƒ—"
#: main/main.cpp
msgid "Dynamic Fonts"
-msgstr ""
+msgstr "ダイナミックフォント"
#: main/main.cpp
msgid "Use Oversampling"
-msgstr ""
+msgstr "オーãƒãƒ¼ã‚µãƒ³ãƒ—リングを使用"
#: modules/bullet/register_types.cpp modules/bullet/space_bullet.cpp
msgid "Active Soft World"
@@ -15911,7 +16201,7 @@ msgstr ""
#: modules/csg/csg_gizmos.cpp
msgid "CSG"
-msgstr ""
+msgstr "CSG"
#: modules/csg/csg_gizmos.cpp
msgid "Change Cylinder Radius"
@@ -15930,41 +16220,35 @@ msgid "Change Torus Outer Radius"
msgstr "トーラスã®å¤–径を変更"
#: modules/csg/csg_shape.cpp
-#, fuzzy
msgid "Operation"
-msgstr "オプション"
+msgstr "æ“作"
#: modules/csg/csg_shape.cpp
msgid "Calculate Tangents"
-msgstr ""
+msgstr "接線を計算"
#: modules/csg/csg_shape.cpp
-#, fuzzy
msgid "Use Collision"
-msgstr "コリジョン"
+msgstr "コリジョンを使用"
#: modules/csg/csg_shape.cpp servers/physics_2d_server.cpp
-#, fuzzy
msgid "Collision Layer"
-msgstr "コリジョンモード"
+msgstr "コリジョンレイヤー"
#: modules/csg/csg_shape.cpp scene/2d/ray_cast_2d.cpp scene/3d/camera.cpp
#: scene/3d/ray_cast.cpp scene/3d/spring_arm.cpp
#: scene/resources/navigation_mesh.cpp servers/physics_server.cpp
-#, fuzzy
msgid "Collision Mask"
-msgstr "コリジョンモード"
+msgstr "コリジョンマスク"
#: modules/csg/csg_shape.cpp
-#, fuzzy
msgid "Invert Faces"
-msgstr "大文字ã¨å°æ–‡å­—を変æ›"
+msgstr "é¢ã‚’å転"
#: modules/csg/csg_shape.cpp scene/2d/canvas_item.cpp scene/2d/particles_2d.cpp
#: scene/resources/primitive_meshes.cpp
-#, fuzzy
msgid "Material"
-msgstr "マテリアルã®å¤‰æ›´:"
+msgstr "マテリアル"
#: modules/csg/csg_shape.cpp scene/2d/navigation_agent_2d.cpp
#: scene/2d/navigation_obstacle_2d.cpp scene/3d/navigation_agent.cpp
@@ -15974,9 +16258,8 @@ msgstr "マテリアルã®å¤‰æ›´:"
#: scene/resources/cylinder_shape.cpp scene/resources/environment.cpp
#: scene/resources/navigation_mesh.cpp scene/resources/primitive_meshes.cpp
#: scene/resources/sphere_shape.cpp
-#, fuzzy
msgid "Radius"
-msgstr "åŠå¾„:"
+msgstr "åŠå¾„"
#: modules/csg/csg_shape.cpp scene/resources/primitive_meshes.cpp
#, fuzzy
@@ -16019,7 +16302,6 @@ msgstr ""
#: modules/csg/csg_shape.cpp scene/2d/collision_polygon_2d.cpp
#: scene/2d/light_occluder_2d.cpp scene/2d/polygon_2d.cpp
#: scene/3d/collision_polygon.cpp scene/resources/navigation_mesh.cpp
-#, fuzzy
msgid "Polygon"
msgstr "ãƒãƒªã‚´ãƒ³"
@@ -16075,19 +16357,16 @@ msgid "Path Joined"
msgstr "ランダムãªå›žè»¢:"
#: modules/enet/networked_multiplayer_enet.cpp
-#, fuzzy
msgid "Compression Mode"
-msgstr "コリジョンモード"
+msgstr "圧縮モード"
#: modules/enet/networked_multiplayer_enet.cpp
-#, fuzzy
msgid "Transfer Channel"
-msgstr "トランスフォーム変更"
+msgstr "転é€ãƒãƒ£ãƒ³ãƒãƒ«"
#: modules/enet/networked_multiplayer_enet.cpp
-#, fuzzy
msgid "Channel Count"
-msgstr "インスタンス"
+msgstr "ãƒãƒ£ãƒ³ãƒãƒ«ã®æ•°"
#: modules/enet/networked_multiplayer_enet.cpp
#, fuzzy
@@ -16104,12 +16383,11 @@ msgstr ""
#: modules/enet/networked_multiplayer_enet.cpp
msgid "DTLS Hostname"
-msgstr ""
+msgstr "DTLSホストå"
#: modules/enet/networked_multiplayer_enet.cpp
-#, fuzzy
msgid "Use DTLS"
-msgstr "スナップを使用"
+msgstr "DTLSを使用"
#: modules/gdnative/gdnative.cpp
#, fuzzy
@@ -16123,9 +16401,8 @@ msgstr "リソースを読ã¿è¾¼ã‚€"
#: modules/gdnative/gdnative.cpp
#: modules/visual_script/visual_script_func_nodes.cpp
-#, fuzzy
msgid "Singleton"
-msgstr "スケルトン"
+msgstr "シングルトン"
#: modules/gdnative/gdnative.cpp
#, fuzzy
@@ -16192,19 +16469,16 @@ msgid "Libraries: "
msgstr "ライブラリ: "
#: modules/gdnative/nativescript/nativescript.cpp
-#, fuzzy
msgid "Class Name"
-msgstr "クラスå:"
+msgstr "クラスå"
#: modules/gdnative/nativescript/nativescript.cpp
-#, fuzzy
msgid "Script Class"
-msgstr "スクリプトå:"
+msgstr "スクリプトクラス"
#: modules/gdnative/nativescript/nativescript.cpp
-#, fuzzy
msgid "Icon Path"
-msgstr "パスã«ãƒ•ォーカス"
+msgstr "アイコンã®ãƒ‘ス"
#: modules/gdnative/register_types.cpp
msgid "GDNative"
@@ -16212,26 +16486,24 @@ msgstr "\\ GDNative"
#: modules/gdscript/editor/gdscript_highlighter.cpp
#: modules/gdscript/gdscript.cpp
-#, fuzzy
msgid "GDScript"
-msgstr "スクリプト"
+msgstr "GDScript"
#: modules/gdscript/editor/gdscript_highlighter.cpp
msgid "Function Definition Color"
-msgstr ""
+msgstr "関数定義ã®è‰²"
#: modules/gdscript/editor/gdscript_highlighter.cpp
-#, fuzzy
msgid "Node Path Color"
-msgstr "ノードã®ãƒ‘スをコピー"
+msgstr "ノードパスã®è‰²"
#: modules/gdscript/gdscript.cpp modules/visual_script/visual_script.cpp
msgid "Max Call Stack"
-msgstr ""
+msgstr "コールスタックã®ä¸Šé™"
#: modules/gdscript/gdscript.cpp
msgid "Treat Warnings As Errors"
-msgstr ""
+msgstr "警告をエラーã¨ã—ã¦æ‰±ã†"
#: modules/gdscript/gdscript.cpp
msgid "Exclude Addons"
@@ -16278,9 +16550,8 @@ msgid "Object can't provide a length."
msgstr "オブジェクトã¯é•·ã•ã‚’æä¾›ã§ãã¾ã›ã‚“。"
#: modules/gdscript/language_server/gdscript_language_server.cpp
-#, fuzzy
msgid "Language Server"
-msgstr "言語:"
+msgstr "言語サーãƒãƒ¼"
#: modules/gdscript/language_server/gdscript_language_server.cpp
#, fuzzy
@@ -16293,7 +16564,7 @@ msgstr ""
#: modules/gdscript/language_server/gdscript_language_server.cpp
msgid "Use Thread"
-msgstr ""
+msgstr "スレッドを使用"
#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp
msgid "Export Mesh GLTF2"
@@ -16309,9 +16580,8 @@ msgid "Buffer View"
msgstr "後é¢å›³"
#: modules/gltf/gltf_accessor.cpp modules/gltf/gltf_buffer_view.cpp
-#, fuzzy
msgid "Byte Offset"
-msgstr "グリッドã®ã‚ªãƒ•セット:"
+msgstr "ãƒã‚¤ãƒˆã®ã‚ªãƒ•セット"
#: modules/gltf/gltf_accessor.cpp
#, fuzzy
@@ -16365,9 +16635,8 @@ msgid "Sparse Values Byte Offset"
msgstr ""
#: modules/gltf/gltf_buffer_view.cpp
-#, fuzzy
msgid "Buffer"
-msgstr "後é¢å›³"
+msgstr "ãƒãƒƒãƒ•ã‚¡"
#: modules/gltf/gltf_buffer_view.cpp
#, fuzzy
@@ -16405,16 +16674,15 @@ msgstr "リニア"
#: scene/resources/environment.cpp scene/resources/material.cpp
#: scene/resources/particles_material.cpp scene/resources/sky.cpp
#: scene/resources/style_box.cpp
-#, fuzzy
msgid "Color"
-msgstr "カラー"
+msgstr "色"
#: modules/gltf/gltf_light.cpp scene/3d/reflection_probe.cpp
#: scene/resources/environment.cpp
msgid "Intensity"
msgstr ""
-#: modules/gltf/gltf_light.cpp scene/2d/light_2d.cpp
+#: modules/gltf/gltf_light.cpp scene/2d/light_2d.cpp scene/3d/light.cpp
#, fuzzy
msgid "Range"
msgstr "変更"
@@ -16438,9 +16706,8 @@ msgid "Instance Materials"
msgstr "マテリアルã®å¤‰æ›´:"
#: modules/gltf/gltf_node.cpp
-#, fuzzy
msgid "Parent"
-msgstr "親を変更"
+msgstr "親"
#: modules/gltf/gltf_node.cpp
#, fuzzy
@@ -16540,32 +16807,24 @@ msgstr ""
#: modules/gltf/gltf_state.cpp
msgid "Json"
-msgstr ""
+msgstr "JSON"
#: modules/gltf/gltf_state.cpp
-#, fuzzy
msgid "Major Version"
-msgstr "ãƒãƒ¼ã‚¸ãƒ§ãƒ³"
+msgstr "メジャーãƒãƒ¼ã‚¸ãƒ§ãƒ³"
#: modules/gltf/gltf_state.cpp
-#, fuzzy
msgid "Minor Version"
-msgstr "ãƒãƒ¼ã‚¸ãƒ§ãƒ³"
+msgstr "マイナーãƒãƒ¼ã‚¸ãƒ§ãƒ³"
#: modules/gltf/gltf_state.cpp
-#, fuzzy
msgid "GLB Data"
-msgstr "データ付"
+msgstr "GLBデータ"
#: modules/gltf/gltf_state.cpp
msgid "Use Named Skin Binds"
msgstr ""
-#: modules/gltf/gltf_state.cpp scene/3d/physics_joint.cpp
-#, fuzzy
-msgid "Nodes"
-msgstr "ノード"
-
#: modules/gltf/gltf_state.cpp
#, fuzzy
msgid "Buffer Views"
@@ -16577,16 +16836,6 @@ msgstr ""
#: modules/gltf/gltf_state.cpp
#, fuzzy
-msgid "Meshes"
-msgstr "メッシュ"
-
-#: modules/gltf/gltf_state.cpp
-#, fuzzy
-msgid "Materials"
-msgstr "マテリアルã®å¤‰æ›´:"
-
-#: modules/gltf/gltf_state.cpp
-#, fuzzy
msgid "Scene Name"
msgstr "シーンã®ãƒ‘ス:"
@@ -16602,15 +16851,11 @@ msgstr "ルートノードå"
msgid "Textures"
msgstr "機能"
-#: modules/gltf/gltf_state.cpp
+#: modules/gltf/gltf_state.cpp platform/uwp/export/export.cpp
msgid "Images"
msgstr ""
#: modules/gltf/gltf_state.cpp
-msgid "Skins"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp
msgid "Cameras"
msgstr ""
@@ -16645,11 +16890,15 @@ msgid "Src Image"
msgstr "ボーンを表示ã™ã‚‹"
#: modules/gridmap/grid_map.cpp
+msgid "Mesh Library"
+msgstr "メッシュライブラリ"
+
+#: modules/gridmap/grid_map.cpp
#, fuzzy
msgid "Physics Material"
msgstr "物ç†ãƒ•レーム %"
-#: modules/gridmap/grid_map.cpp
+#: modules/gridmap/grid_map.cpp scene/3d/visual_instance.cpp
#, fuzzy
msgid "Use In Baked Light"
msgstr "ライトマップを焼ã込む"
@@ -16681,6 +16930,7 @@ msgstr "中央"
#: modules/gridmap/grid_map.cpp scene/2d/collision_object_2d.cpp
#: scene/2d/tile_map.cpp scene/3d/collision_object.cpp scene/3d/soft_body.cpp
+#: scene/resources/material.cpp
msgid "Mask"
msgstr ""
@@ -16864,7 +17114,9 @@ msgid "Ultra Quality Ray Count"
msgstr ""
#: modules/minimp3/audio_stream_mp3.cpp
+#: modules/minimp3/resource_importer_mp3.cpp
#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp
+#: modules/stb_vorbis/resource_importer_ogg_vorbis.cpp
#, fuzzy
msgid "Loop Offset"
msgstr "オフセット:"
@@ -16985,7 +17237,7 @@ msgstr "完了ï¼"
#: modules/opensimplex/noise_texture.cpp
msgid "Seamless"
-msgstr ""
+msgstr "シームレス"
#: modules/opensimplex/noise_texture.cpp
#, fuzzy
@@ -16998,12 +17250,11 @@ msgstr ""
#: modules/opensimplex/noise_texture.cpp
msgid "Noise"
-msgstr ""
+msgstr "ノイズ"
#: modules/opensimplex/noise_texture.cpp
-#, fuzzy
msgid "Noise Offset"
-msgstr "グリッドã®ã‚ªãƒ•セット:"
+msgstr "ノイズã®ã‚ªãƒ•セット"
#: modules/opensimplex/open_simplex_noise.cpp
msgid "Octaves"
@@ -17119,9 +17370,8 @@ msgid "Stack overflow with stack depth: "
msgstr "スタックオーãƒãƒ¼ãƒ•ロー発生 ã‚¹ã‚¿ãƒƒã‚¯ã®æ·±ã•: "
#: modules/visual_script/visual_script.cpp
-#, fuzzy
msgid "Visual Script"
-msgstr "VisualScriptを検索"
+msgstr "Visual Script"
#: modules/visual_script/visual_script_editor.cpp
msgid "Change Signal Arguments"
@@ -17711,24 +17961,20 @@ msgid "Set Index"
msgstr "Zインデックス"
#: modules/visual_script/visual_script_nodes.cpp
-#, fuzzy
msgid "Global Constant"
-msgstr "コンスタント"
+msgstr "グローãƒãƒ«å®šæ•°"
#: modules/visual_script/visual_script_nodes.cpp
-#, fuzzy
msgid "Class Constant"
-msgstr "コンスタント"
+msgstr "クラス定数"
#: modules/visual_script/visual_script_nodes.cpp
-#, fuzzy
msgid "Basic Constant"
-msgstr "コンスタント"
+msgstr "基本定数"
#: modules/visual_script/visual_script_nodes.cpp
-#, fuzzy
msgid "Math Constant"
-msgstr "コンスタント"
+msgstr "数学定数"
#: modules/visual_script/visual_script_nodes.cpp
#, fuzzy
@@ -17736,14 +17982,12 @@ msgid "Get Engine Singleton"
msgstr "有効ãªGDNativeシングルトン"
#: modules/visual_script/visual_script_nodes.cpp
-#, fuzzy
msgid "Get Scene Node"
-msgstr "タイムシーク ノード"
+msgstr "シーンノードをå–å¾—"
#: modules/visual_script/visual_script_nodes.cpp
-#, fuzzy
msgid "Get Scene Tree"
-msgstr "シーンツリーã®ç·¨é›†"
+msgstr "シーンツリーをå–å¾—"
#: modules/visual_script/visual_script_nodes.cpp
#, fuzzy
@@ -17797,9 +18041,8 @@ msgid "Set Local Var"
msgstr "ローカル空間を使用"
#: modules/visual_script/visual_script_nodes.cpp
-#, fuzzy
msgid "Action %s"
-msgstr "アクション(Action)"
+msgstr "アクション %s"
#: modules/visual_script/visual_script_nodes.cpp
msgid "Deconstruct %s"
@@ -17815,30 +18058,27 @@ msgstr "VisualScriptを検索"
#: modules/visual_script/visual_script_yield_nodes.cpp
msgid "Yield"
-msgstr ""
+msgstr "Yield"
#: modules/visual_script/visual_script_yield_nodes.cpp
msgid "Wait"
msgstr "Wait(待機)"
#: modules/visual_script/visual_script_yield_nodes.cpp
-#, fuzzy
msgid "Next Frame"
-msgstr "フレームã®ç§»å‹•"
+msgstr "次ã®ãƒ•レーム"
#: modules/visual_script/visual_script_yield_nodes.cpp
-#, fuzzy
msgid "Next Physics Frame"
-msgstr "物ç†ãƒ•レーム %"
+msgstr "次ã®ç‰©ç†ãƒ•レーム"
#: modules/visual_script/visual_script_yield_nodes.cpp
msgid "%s sec(s)"
-msgstr ""
+msgstr "%sç§’"
#: modules/visual_script/visual_script_yield_nodes.cpp scene/main/timer.cpp
-#, fuzzy
msgid "Wait Time"
-msgstr "タイルをペイント"
+msgstr "待機時間"
#: modules/visual_script/visual_script_yield_nodes.cpp
#, fuzzy
@@ -17862,29 +18102,27 @@ msgstr "優先順ä½ãƒ¢ãƒ¼ãƒ‰"
#: modules/websocket/websocket_client.cpp
msgid "Verify SSL"
-msgstr ""
+msgstr "SSLを検証"
#: modules/websocket/websocket_client.cpp
msgid "Trusted SSL Certificate"
-msgstr ""
+msgstr "信頼済ã¿SSL証明書"
#: modules/websocket/websocket_server.cpp
msgid "Bind IP"
-msgstr ""
+msgstr "IPã®ãƒã‚¤ãƒ³ãƒ‰"
#: modules/websocket/websocket_server.cpp
-#, fuzzy
msgid "Private Key"
-msgstr "SSH 秘密éµãƒ‘ス"
+msgstr "秘密éµ"
#: modules/websocket/websocket_server.cpp platform/javascript/export/export.cpp
msgid "SSL Certificate"
-msgstr ""
+msgstr "SSL証明書"
#: modules/websocket/websocket_server.cpp
-#, fuzzy
msgid "CA Chain"
-msgstr "IKãƒã‚§ãƒ¼ãƒ³ã‚’クリア"
+msgstr "CAãƒã‚§ãƒ¼ãƒ³"
#: modules/websocket/websocket_server.cpp
#, fuzzy
@@ -17892,19 +18130,16 @@ msgid "Handshake Timeout"
msgstr "タイムアウト。"
#: modules/webxr/webxr_interface.cpp
-#, fuzzy
msgid "Session Mode"
-msgstr "領域モード"
+msgstr "セッションモード"
#: modules/webxr/webxr_interface.cpp
-#, fuzzy
msgid "Required Features"
-msgstr "ä¸»è¦æ©Ÿèƒ½:"
+msgstr "必須機能"
#: modules/webxr/webxr_interface.cpp
-#, fuzzy
msgid "Optional Features"
-msgstr "ä¸»è¦æ©Ÿèƒ½:"
+msgstr "ã‚ªãƒ—ã‚·ãƒ§ãƒ³ã®æ©Ÿèƒ½"
#: modules/webxr/webxr_interface.cpp
msgid "Requested Reference Space Types"
@@ -17915,9 +18150,8 @@ msgid "Reference Space Type"
msgstr ""
#: modules/webxr/webxr_interface.cpp
-#, fuzzy
msgid "Visibility State"
-msgstr "å¯è¦–性ã®åˆ‡ã‚Šæ›¿ãˆ"
+msgstr "å¯è¦–性ã®çŠ¶æ…‹"
#: modules/webxr/webxr_interface.cpp
#, fuzzy
@@ -17947,7 +18181,7 @@ msgstr ""
#: platform/android/export/export.cpp
msgid "Shutdown ADB On Exit"
-msgstr ""
+msgstr "終了時ã«ADBをシャットダウン"
#: platform/android/export/export_plugin.cpp
msgid "Package name is missing."
@@ -17974,6 +18208,193 @@ msgid "The package must have at least one '.' separator."
msgstr "パッケージã«ã¯ä¸€ã¤ä»¥ä¸Šã®åŒºåˆ‡ã‚Šæ–‡å­— '.' ãŒå¿…è¦ã§ã™ã€‚"
#: platform/android/export/export_plugin.cpp
+msgid "Use Custom Build"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Export Format"
+msgstr "エクスãƒãƒ¼ãƒˆå…ˆã®ãƒ‘ス"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Keystore"
+msgstr "デãƒãƒƒã‚¬ãƒ¼"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Debug User"
+msgstr "デãƒãƒƒã‚¬ãƒ¼"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Debug Password"
+msgstr "パスワード"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Release User"
+msgstr "リリース"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Release Password"
+msgstr "パスワード"
+
+#: platform/android/export/export_plugin.cpp
+msgid "One Click Deploy"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Clear Previous Install"
+msgstr "å‰ã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã‚’調ã¹ã‚‹"
+
+#: platform/android/export/export_plugin.cpp scene/resources/shader.cpp
+msgid "Code"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Min SDK"
+msgstr "アウトラインã®ã‚µã‚¤ã‚º:"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Target SDK"
+msgstr "目標FPS"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Package"
+msgstr "パック中"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Unique Name"
+msgstr "ノードå:"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Signed"
+msgstr "シグナル"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Classify As Game"
+msgstr "クラスå"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Retain Data On Uninstall"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Exclude From Recents"
+msgstr "ノードを削除"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Graphics"
+msgstr "グリッドã®ã‚ªãƒ•セット:"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "OpenGL Debug"
+msgstr "é–‹ã"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "XR Features"
+msgstr "機能"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "XR Mode"
+msgstr "パンモード"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Hand Tracking"
+msgstr "トラッキング"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Hand Tracking Frequency"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Passthrough"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Immersive Mode"
+msgstr "優先順ä½ãƒ¢ãƒ¼ãƒ‰"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Support Small"
+msgstr "サãƒãƒ¼ãƒˆ"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Support Normal"
+msgstr "サãƒãƒ¼ãƒˆ"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Support Large"
+msgstr "サãƒãƒ¼ãƒˆ"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Support Xlarge"
+msgstr "サãƒãƒ¼ãƒˆ"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "User Data Backup"
+msgstr "ユーザーデータ"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Allow"
+msgstr "hiDPIを許å¯"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Command Line"
+msgstr "Command"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Extra Args"
+msgstr "追加ã®å‘¼ã³å‡ºã—引数:"
+
+#: platform/android/export/export_plugin.cpp
+msgid "APK Expansion"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Salt"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Public Key"
+msgstr "SSH 公開éµãƒ‘ス"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Permissions"
+msgstr "放出マスク"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Custom Permissions"
+msgstr "カスタムシーンを実行"
+
+#: platform/android/export/export_plugin.cpp
msgid "Select device from the list"
msgstr "一覧ã‹ã‚‰ãƒ‡ãƒã‚¤ã‚¹ã‚’é¸æŠž"
@@ -18298,6 +18719,177 @@ msgid "The character '%s' is not allowed in Identifier."
msgstr "文字 '%s' ã¯è­˜åˆ¥å­ã«ä½¿ç”¨ã§ãã¾ã›ã‚“。"
#: platform/iphone/export/export.cpp
+msgid "App Store Team ID"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Provisioning Profile UUID Debug"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Code Sign Identity Debug"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Export Method Debug"
+msgstr "デãƒãƒƒã‚°ä»˜ãエクスãƒãƒ¼ãƒˆ"
+
+#: platform/iphone/export/export.cpp
+msgid "Provisioning Profile UUID Release"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Code Sign Identity Release"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Export Method Release"
+msgstr "エクスãƒãƒ¼ãƒˆãƒ¢ãƒ¼ãƒ‰:"
+
+#: platform/iphone/export/export.cpp
+msgid "Targeted Device Family"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Info"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Identifier"
+msgstr "無効ãªè­˜åˆ¥å­:"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Signature"
+msgstr "シグナル"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Short Version"
+msgstr "メジャーãƒãƒ¼ã‚¸ãƒ§ãƒ³"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Copyright"
+msgstr "å³ä¸Š"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Capabilities"
+msgstr "プロパティを貼り付ã‘"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Access Wi-Fi"
+msgstr "アクセス"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Push Notifications"
+msgstr "ランダムãªå›žè»¢:"
+
+#: platform/iphone/export/export.cpp scene/3d/baked_lightmap.cpp
+msgid "User Data"
+msgstr "ユーザーデータ"
+
+#: platform/iphone/export/export.cpp
+msgid "Accessible From Files App"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Accessible From Itunes Sharing"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Privacy"
+msgstr "秘密éµ"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Camera Usage Description"
+msgstr "説明"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Microphone Usage Description"
+msgstr "プロパティã®èª¬æ˜Ž"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Photolibrary Usage Description"
+msgstr "プロパティã®èª¬æ˜Ž"
+
+#: platform/iphone/export/export.cpp
+msgid "iPhone 120 X 120"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPhone 180 X 180"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 76 X 76"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 152 X 152"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 167 X 167"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "App Store 1024 X 1024"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Spotlight 40 X 40"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Spotlight 80 X 80"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Storyboard"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Use Launch Screen Storyboard"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Image Scale Mode"
+msgstr "スケールモード"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Custom Image @2x"
+msgstr "ノードを切りå–ã‚‹"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Custom Image @3x"
+msgstr "ノードを切りå–ã‚‹"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Use Custom BG Color"
+msgstr "ノードを切りå–ã‚‹"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Custom BG Color"
+msgstr "ノードを切りå–ã‚‹"
+
+#: platform/iphone/export/export.cpp
msgid "App Store Team ID not specified - cannot configure the project."
msgstr "App Store ãƒãƒ¼ãƒ ID ãŒæœªæŒ‡å®š - プロジェクトを構æˆã§ãã¾ã›ã‚“。"
@@ -18334,6 +18926,80 @@ msgid "Could not read file:"
msgstr "ファイルを読ã¿è¾¼ã‚ã¾ã›ã‚“ã§ã—ãŸ:"
#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Variant"
+msgstr "分離:"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Export Type"
+msgstr "エクスãƒãƒ¼ãƒˆ"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "VRAM Texture Compression"
+msgstr "VRAM圧縮"
+
+#: platform/javascript/export/export.cpp
+msgid "For Desktop"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "For Mobile"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Html"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Export Icon"
+msgstr "ã™ã¹ã¦å±•é–‹"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Custom Html Shell"
+msgstr "ノードを切りå–ã‚‹"
+
+#: platform/javascript/export/export.cpp
+msgid "Head Include"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Canvas Resize Policy"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Focus Canvas On Start"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Experimental Virtual Keyboard"
+msgstr "シグナルを絞り込む"
+
+#: platform/javascript/export/export.cpp
+msgid "Progressive Web App"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Offline Page"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 144 X 144"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 180 X 180"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 512 X 512"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
msgid "Could not read HTML shell:"
msgstr "HTMLシェルを読ã¿è¾¼ã‚ã¾ã›ã‚“ã§ã—ãŸ:"
@@ -18358,13 +19024,12 @@ msgid "HTTP Port"
msgstr ""
#: platform/javascript/export/export.cpp
-#, fuzzy
msgid "Use SSL"
-msgstr "スナップを使用"
+msgstr "SSLを使用"
#: platform/javascript/export/export.cpp
msgid "SSL Key"
-msgstr ""
+msgstr "SSLキー"
#: platform/osx/export/codesign.cpp
msgid "Can't get filesystem access."
@@ -18389,22 +19054,20 @@ msgid "Invalid Info.plist, can't load."
msgstr "ジオメトリãŒç„¡åйã§ã™ã€‚ãƒãƒªã‚´ãƒ³ã‚’作æˆã§ãã¾ã›ã‚“。"
#: platform/osx/export/codesign.cpp
-#, fuzzy
msgid "Failed to create \"%s\" subfolder."
-msgstr "フォルダーを作æˆã§ãã¾ã›ã‚“ã§ã—ãŸã€‚"
+msgstr "サブフォルダー \"%s\" を作æˆã§ãã¾ã›ã‚“ã§ã—ãŸã€‚"
#: platform/osx/export/codesign.cpp
msgid "Failed to extract thin binary."
-msgstr ""
+msgstr "thin binaryを展開ã§ãã¾ã›ã‚“ã§ã—ãŸã€‚"
#: platform/osx/export/codesign.cpp
-#, fuzzy
msgid "Invalid binary format."
-msgstr "無効ãªãƒ™ãƒ¼ã‚¹ãƒ‘スã§ã™ã€‚"
+msgstr "無効ãªãƒã‚¤ãƒŠãƒªãƒ•ォーマットã§ã™ã€‚"
#: platform/osx/export/codesign.cpp
msgid "Already signed!"
-msgstr ""
+msgstr "ã™ã§ã«ç½²åã•れã¦ã„ã¾ã™ï¼"
#: platform/osx/export/codesign.cpp
#, fuzzy
@@ -18413,7 +19076,7 @@ msgstr "リソースã®èª­ã¿è¾¼ã¿ã«å¤±æ•—ã—ã¾ã—ãŸã€‚"
#: platform/osx/export/codesign.cpp
msgid "Failed to create _CodeSignature subfolder."
-msgstr ""
+msgstr "サブフォルダ _CodeSignature を作æˆã§ãã¾ã›ã‚“ã§ã—ãŸã€‚"
#: platform/osx/export/codesign.cpp
#, fuzzy
@@ -18421,14 +19084,12 @@ msgid "Failed to get CodeResources hash."
msgstr "リソースã®èª­ã¿è¾¼ã¿ã«å¤±æ•—ã—ã¾ã—ãŸã€‚"
#: platform/osx/export/codesign.cpp platform/osx/export/export.cpp
-#, fuzzy
msgid "Invalid entitlements file."
-msgstr "ç„¡åŠ¹ãªæ‹¡å¼µå­ã§ã™ã€‚"
+msgstr "無効ãªè³‡æ ¼æƒ…報ファイルã§ã™ã€‚"
#: platform/osx/export/codesign.cpp
-#, fuzzy
msgid "Invalid executable file."
-msgstr "ç„¡åŠ¹ãªæ‹¡å¼µå­ã§ã™ã€‚"
+msgstr "無効ãªå®Ÿè¡Œå¯èƒ½ãƒ•ァイルã§ã™ã€‚"
#: platform/osx/export/codesign.cpp
msgid "Can't resize signature load command."
@@ -18447,6 +19108,203 @@ msgid "Unknown object type."
msgstr ""
#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "App Category"
+msgstr "カテゴリー:"
+
+#: platform/osx/export/export.cpp
+msgid "High Res"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Location Usage Description"
+msgstr "説明"
+
+#: platform/osx/export/export.cpp
+msgid "Address Book Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Calendar Usage Description"
+msgstr "説明"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Photos Library Usage Description"
+msgstr "プロパティã®èª¬æ˜Ž"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Desktop Folder Usage Description"
+msgstr "メソッドã®èª¬æ˜Ž"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Documents Folder Usage Description"
+msgstr "メソッドã®èª¬æ˜Ž"
+
+#: platform/osx/export/export.cpp
+msgid "Downloads Folder Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Network Volumes Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Removable Volumes Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#, fuzzy
+msgid "Codesign"
+msgstr "DMGをコード署å中"
+
+#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Identity"
+msgstr "インデント"
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#, fuzzy
+msgid "Timestamp"
+msgstr "時間"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Hardened Runtime"
+msgstr "ランタイム"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Replace Existing Signature"
+msgstr "複数ファイル内ã§ç½®æ›"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Entitlements"
+msgstr "ギズモ"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Custom File"
+msgstr "ノードを切りå–ã‚‹"
+
+#: platform/osx/export/export.cpp
+msgid "Allow JIT Code Execution"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Allow Unsigned Executable Memory"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Allow Dyld Environment Variables"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Disable Library Validation"
+msgstr "無効ãªãƒœã‚¿ãƒ³"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Audio Input"
+msgstr "入力を追加"
+
+#: platform/osx/export/export.cpp
+msgid "Address Book"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Calendars"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Photos Library"
+msgstr "ライブラリã®ã‚¨ã‚¯ã‚¹ãƒãƒ¼ãƒˆ"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Apple Events"
+msgstr "イベントを追加"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Debugging"
+msgstr "デãƒãƒƒã‚°"
+
+#: platform/osx/export/export.cpp
+msgid "App Sandbox"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Network Server"
+msgstr "ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ ピア"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Network Client"
+msgstr "ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ ピア"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Device Usb"
+msgstr "デãƒã‚¤ã‚¹"
+
+#: platform/osx/export/export.cpp
+msgid "Device Bluetooth"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Files Downloads"
+msgstr "ダウンロード"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Files Pictures"
+msgstr "機能"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Files Music"
+msgstr "ファイル"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Files Movies"
+msgstr "タイルを絞り込む"
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#, fuzzy
+msgid "Custom Options"
+msgstr "ãƒã‚¹ オプション"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Notarization"
+msgstr "ローカライズ"
+
+#: platform/osx/export/export.cpp
+msgid "Apple ID Name"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Apple ID Password"
+msgstr "パスワード"
+
+#: platform/osx/export/export.cpp
+msgid "Apple Team ID"
+msgstr ""
+
+#: platform/osx/export/export.cpp
msgid ""
"Note: The notarization process generally takes less than an hour. When the "
"process is completed, you'll receive an email."
@@ -18495,7 +19353,7 @@ msgstr ""
#: platform/osx/export/export.cpp
msgid "Making PKG"
-msgstr ""
+msgstr "PKGを作æˆä¸­"
#: platform/osx/export/export.cpp
msgid ""
@@ -18505,19 +19363,19 @@ msgstr ""
#: platform/osx/export/export.cpp
msgid "Code signing bundle"
-msgstr ""
+msgstr "bundleをコード署å中"
#: platform/osx/export/export.cpp
msgid "Making DMG"
-msgstr ""
+msgstr "DMGを作æˆä¸­"
#: platform/osx/export/export.cpp
msgid "Code signing DMG"
-msgstr ""
+msgstr "DMGをコード署å中"
#: platform/osx/export/export.cpp
msgid "Making ZIP"
-msgstr ""
+msgstr "ZIPを作æˆä¸­"
#: platform/osx/export/export.cpp
msgid ""
@@ -18637,13 +19495,143 @@ msgstr ""
#: platform/osx/export/export.cpp
msgid "macOS"
-msgstr ""
+msgstr "macOS"
#: platform/osx/export/export.cpp
msgid "Force Builtin Codesign"
msgstr ""
#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Architecture"
+msgstr "アーキテクãƒãƒ£ã‚¨ãƒ³ãƒˆãƒªã‚’追加ã™ã‚‹"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Display Name"
+msgstr "表示スケール"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Short Name"
+msgstr "スクリプトå:"
+
+#: platform/uwp/export/export.cpp
+msgid "Publisher"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Publisher Display Name"
+msgstr "パッケージ発行者ã®è¡¨ç¤ºåãŒç„¡åйã§ã™ã€‚"
+
+#: platform/uwp/export/export.cpp
+msgid "Product Guid"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Publisher Guid"
+msgstr "ガイドをクリアã™ã‚‹"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Signing"
+msgstr "スキニング"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Certificate"
+msgstr "証明書"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Algorithm"
+msgstr "デãƒãƒƒã‚¬ãƒ¼"
+
+#: platform/uwp/export/export.cpp
+msgid "Major"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Minor"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Build"
+msgstr "定è¦ãƒ¢ãƒ¼ãƒ‰"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Revision"
+msgstr "ãƒãƒ¼ã‚¸ãƒ§ãƒ³"
+
+#: platform/uwp/export/export.cpp
+msgid "Landscape"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Portrait"
+msgstr "ãƒãƒ¼ãƒˆ"
+
+#: platform/uwp/export/export.cpp
+msgid "Landscape Flipped"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Portrait Flipped"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Store Logo"
+msgstr "スケールモード"
+
+#: platform/uwp/export/export.cpp
+msgid "Square 44 X 44 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 71 X 71 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 150 X 150 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 310 X 310 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Wide 310 X 150 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Splash Screen"
+msgstr "ドローコール:"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Tiles"
+msgstr "ファイル"
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Square 150 X 150"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Wide 310 X 150"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Square 310 X 310"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
msgid "Invalid package short name."
msgstr "パッケージã®ã‚·ãƒ§ãƒ¼ãƒˆãƒãƒ¼ãƒ ãŒç„¡åйã§ã™ã€‚"
@@ -18704,7 +19692,7 @@ msgstr ""
#: platform/uwp/export/export.cpp
msgid "UWP"
-msgstr ""
+msgstr "UWP"
#: platform/uwp/export/export.cpp platform/windows/export/export.cpp
#, fuzzy
@@ -18717,39 +19705,72 @@ msgstr ""
#: platform/uwp/export/export.cpp
#, fuzzy
-msgid "Debug Password"
-msgstr "パスワード"
+msgid "Debug Algorithm"
+msgstr "デãƒãƒƒã‚¬ãƒ¼"
-#: platform/uwp/export/export.cpp
+#: platform/windows/export/export.cpp
+msgid "Identity Type"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Timestamp Server URL"
+msgstr ""
+
+#: platform/windows/export/export.cpp
#, fuzzy
-msgid "Debug Algorithm"
+msgid "Digest Algorithm"
msgstr "デãƒãƒƒã‚¬ãƒ¼"
#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "File Version"
+msgstr "ãƒãƒ¼ã‚¸ãƒ§ãƒ³"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Product Version"
+msgstr "無効ãªè£½å“ãƒãƒ¼ã‚¸ãƒ§ãƒ³:"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Company Name"
+msgstr "ノードå:"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Product Name"
+msgstr "プロジェクトå:"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "File Description"
+msgstr "説明"
+
+#: platform/windows/export/export.cpp
+msgid "Trademarks"
+msgstr ""
+
+#: platform/windows/export/export.cpp
msgid ""
"The rcedit tool must be configured in the Editor Settings (Export > Windows "
"> Rcedit) to change the icon or app information data."
msgstr ""
#: platform/windows/export/export.cpp
-#, fuzzy
msgid "Invalid icon path:"
-msgstr "パスãŒç„¡åйã§ã™ã€‚"
+msgstr "無効ãªã‚¢ã‚¤ã‚³ãƒ³ãƒ‘ス:"
#: platform/windows/export/export.cpp
-#, fuzzy
msgid "Invalid file version:"
-msgstr "ç„¡åŠ¹ãªæ‹¡å¼µå­ã§ã™ã€‚"
+msgstr "無効ãªãƒ•ァイルãƒãƒ¼ã‚¸ãƒ§ãƒ³:"
#: platform/windows/export/export.cpp
-#, fuzzy
msgid "Invalid product version:"
-msgstr "無効ãªãƒ—ロダクト GUIDã§ã™ã€‚"
+msgstr "無効ãªè£½å“ãƒãƒ¼ã‚¸ãƒ§ãƒ³:"
#: platform/windows/export/export.cpp
-#, fuzzy
msgid "Windows"
-msgstr "æ–°è¦ã‚¦ã‚£ãƒ³ãƒ‰ã‚¦"
+msgstr "Windows"
#: platform/windows/export/export.cpp
msgid "Rcedit"
@@ -18757,11 +19778,11 @@ msgstr ""
#: platform/windows/export/export.cpp
msgid "Osslsigncode"
-msgstr ""
+msgstr "osslsigncode"
#: platform/windows/export/export.cpp
msgid "Wine"
-msgstr ""
+msgstr "Wine"
#: scene/2d/animated_sprite.cpp scene/3d/sprite_3d.cpp
#: scene/resources/texture.cpp
@@ -18800,12 +19821,14 @@ msgstr "実行"
msgid "Centered"
msgstr "中央"
-#: scene/2d/animated_sprite.cpp scene/2d/camera_2d.cpp scene/2d/light_2d.cpp
+#: scene/2d/animated_sprite.cpp scene/2d/camera_2d.cpp
+#: scene/2d/cpu_particles_2d.cpp scene/2d/light_2d.cpp
#: scene/2d/parallax_background.cpp scene/2d/parallax_layer.cpp
#: scene/2d/path_2d.cpp scene/2d/polygon_2d.cpp scene/2d/sprite.cpp
-#: scene/3d/path.cpp scene/3d/physics_body.cpp scene/3d/sprite_3d.cpp
-#: scene/gui/graph_node.cpp scene/gui/rich_text_effect.cpp
-#: scene/main/canvas_layer.cpp scene/resources/material.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/path.cpp scene/3d/physics_body.cpp
+#: scene/3d/sprite_3d.cpp scene/gui/graph_node.cpp
+#: scene/gui/rich_text_effect.cpp scene/main/canvas_layer.cpp
+#: scene/resources/material.cpp scene/resources/particles_material.cpp
#: scene/resources/style_box.cpp
#, fuzzy
msgid "Offset"
@@ -18871,25 +19894,17 @@ msgid "Angular Damp"
msgstr ""
#: scene/2d/area_2d.cpp scene/3d/area.cpp
-#, fuzzy
msgid "Audio Bus"
-msgstr "オーディオãƒã‚¹ã‚’追加"
+msgstr "オーディオãƒã‚¹"
#: scene/2d/area_2d.cpp scene/3d/area.cpp
-#, fuzzy
msgid "Override"
msgstr "上書ã"
-#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
-#: scene/audio/audio_stream_player.cpp scene/gui/video_player.cpp
-msgid "Stream"
-msgstr ""
-
#: scene/2d/audio_stream_player_2d.cpp scene/audio/audio_stream_player.cpp
#: scene/gui/video_player.cpp servers/audio/effects/audio_effect_amplify.cpp
-#, fuzzy
msgid "Volume dB"
-msgstr "ボリューム"
+msgstr "ボリューム dB"
#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
#: scene/audio/audio_stream_player.cpp
@@ -18901,9 +19916,8 @@ msgstr "スケール"
#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
#: scene/animation/animation_player.cpp scene/audio/audio_stream_player.cpp
#: scene/gui/video_player.cpp
-#, fuzzy
msgid "Autoplay"
-msgstr "自動å†ç”Ÿã®æœ‰åŠ¹åŒ– / 無効化"
+msgstr "自動å†ç”Ÿ"
#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
#: scene/audio/audio_stream_player.cpp
@@ -18911,13 +19925,12 @@ msgid "Stream Paused"
msgstr ""
#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
-#: scene/3d/reflection_probe.cpp scene/3d/visual_instance.cpp
-#: scene/resources/material.cpp
-#, fuzzy
+#: scene/3d/light.cpp scene/3d/reflection_probe.cpp
+#: scene/3d/visual_instance.cpp scene/resources/material.cpp
msgid "Max Distance"
-msgstr "è·é›¢ã‚’å–å¾—:"
+msgstr "最大è·é›¢"
-#: scene/2d/audio_stream_player_2d.cpp
+#: scene/2d/audio_stream_player_2d.cpp scene/3d/light.cpp
#, fuzzy
msgid "Attenuation"
msgstr "アニメーション"
@@ -18948,14 +19961,12 @@ msgid "Rotating"
msgstr "回転ã®ã‚¹ãƒ†ãƒƒãƒ—:"
#: scene/2d/camera_2d.cpp scene/3d/camera.cpp
-#, fuzzy
msgid "Current"
-msgstr "ç¾åœ¨:"
+msgstr "ç¾åœ¨"
#: scene/2d/camera_2d.cpp scene/gui/graph_edit.cpp
-#, fuzzy
msgid "Zoom"
-msgstr "ズームイン"
+msgstr "ズーム"
#: scene/2d/camera_2d.cpp scene/main/canvas_layer.cpp
#, fuzzy
@@ -18965,14 +19976,31 @@ msgstr "1 ビューãƒãƒ¼ãƒˆ"
#: scene/2d/camera_2d.cpp scene/3d/camera.cpp
#: scene/animation/animation_player.cpp scene/animation/animation_tree.cpp
#: scene/animation/animation_tree_player.cpp scene/main/timer.cpp
-#, fuzzy
msgid "Process Mode"
-msgstr "移動モード"
+msgstr "処ç†ãƒ¢ãƒ¼ãƒ‰"
#: scene/2d/camera_2d.cpp
msgid "Limit"
msgstr ""
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/style_box.cpp
+#, fuzzy
+msgid "Left"
+msgstr "左上"
+
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/style_box.cpp
+#, fuzzy
+msgid "Right"
+msgstr "ライト"
+
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/dynamic_font.cpp scene/resources/style_box.cpp
+#, fuzzy
+msgid "Bottom"
+msgstr "左下"
+
#: scene/2d/camera_2d.cpp
#, fuzzy
msgid "Smoothed"
@@ -19057,9 +20085,8 @@ msgid "Particles Anim Loop"
msgstr "パーティクル"
#: scene/2d/canvas_item.cpp scene/3d/spatial.cpp
-#, fuzzy
msgid "Visibility"
-msgstr "å¯è¦–性ã®åˆ‡ã‚Šæ›¿ãˆ"
+msgstr "å¯è¦–性"
#: scene/2d/canvas_item.cpp scene/3d/spatial.cpp scene/gui/progress_bar.cpp
#: scene/gui/rich_text_effect.cpp scene/main/canvas_layer.cpp
@@ -19095,11 +20122,11 @@ msgstr "ライト"
#: scene/2d/canvas_item.cpp
msgid "Use Parent Material"
-msgstr ""
+msgstr "親ã®ãƒžãƒ†ãƒªã‚¢ãƒ«ã‚’使用"
#: scene/2d/canvas_item.cpp
msgid "Toplevel"
-msgstr ""
+msgstr "トップレベル"
#: scene/2d/canvas_modulate.cpp
msgid ""
@@ -19122,9 +20149,8 @@ msgstr ""
"ã‚‹ã“ã¨ã‚’検討ã—ã¦ãã ã•ã„。"
#: scene/2d/collision_object_2d.cpp
-#, fuzzy
msgid "Pickable"
-msgstr "タイルをピック"
+msgstr "ピックå¯èƒ½"
#: scene/2d/collision_polygon_2d.cpp
msgid ""
@@ -19213,45 +20239,35 @@ msgstr ""
msgid "Emitting"
msgstr "設定:"
-#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp scene/3d/area.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
-#: scene/resources/environment.cpp
-#, fuzzy
-msgid "Amount"
-msgstr "ç·è¨ˆ:"
-
#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp
#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
msgid "Lifetime"
-msgstr ""
+msgstr "生存時間"
#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp
#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp scene/main/timer.cpp
-#, fuzzy
msgid "One Shot"
-msgstr "ワンショット ノード"
+msgstr "å˜ç™º"
#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp
#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
-#, fuzzy
msgid "Preprocess"
-msgstr "後処ç†"
+msgstr "å‰å‡¦ç†"
#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp
#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
msgid "Explosiveness"
-msgstr ""
+msgstr "爆発性"
#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp
#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
-#, fuzzy
msgid "Randomness"
-msgstr "ランダムリスタート:"
+msgstr "ランダム性"
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
msgid "Lifetime Randomness"
-msgstr ""
+msgstr "生存時間ã®ãƒ©ãƒ³ãƒ€ãƒ æ€§"
#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp
#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
@@ -19284,18 +20300,13 @@ msgstr ""
#: scene/2d/mesh_instance_2d.cpp scene/2d/multimesh_instance_2d.cpp
#: scene/2d/particles_2d.cpp scene/2d/polygon_2d.cpp scene/2d/sprite.cpp
#: scene/3d/sprite_3d.cpp scene/gui/nine_patch_rect.cpp
-#: scene/gui/texture_rect.cpp scene/resources/sky.cpp
-#: scene/resources/style_box.cpp scene/resources/visual_shader_nodes.cpp
+#: scene/gui/texture_rect.cpp scene/resources/material.cpp
+#: scene/resources/sky.cpp scene/resources/style_box.cpp
+#: scene/resources/visual_shader_nodes.cpp
#, fuzzy
msgid "Texture"
msgstr "テキスト"
-#: scene/2d/cpu_particles_2d.cpp scene/2d/mesh_instance_2d.cpp
-#: scene/2d/multimesh_instance_2d.cpp scene/2d/particles_2d.cpp
-#: scene/2d/sprite.cpp scene/resources/style_box.cpp
-msgid "Normal Map"
-msgstr ""
-
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
#, fuzzy
@@ -19319,10 +20330,10 @@ msgid "Normals"
msgstr "フォーマット"
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/3d/sprite_3d.cpp scene/resources/material.cpp
-#: scene/resources/particles_material.cpp scene/resources/texture.cpp
-msgid "Flags"
-msgstr ""
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Align Y"
+msgstr "アサインã™ã‚‹"
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
@@ -19343,6 +20354,12 @@ msgid "Initial Velocity"
msgstr "åˆæœŸåŒ–"
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Velocity Random"
+msgstr "オービットビュー å³"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp servers/physics_2d_server.cpp
#: servers/physics_server.cpp
msgid "Angular Velocity"
@@ -19351,6 +20368,12 @@ msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
#, fuzzy
+msgid "Velocity Curve"
+msgstr "オービットビュー å³"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
msgid "Orbit Velocity"
msgstr "オービットビュー å³"
@@ -19362,6 +20385,23 @@ msgstr "リニア"
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Accel"
+msgstr "アクセス"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Accel Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Accel Curve"
+msgstr "曲線を分割ã™ã‚‹"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
msgid "Radial Accel"
msgstr ""
@@ -19371,19 +20411,55 @@ msgid "Tangential Accel"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/2d/joints_2d.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/vehicle_body.cpp
-#: scene/resources/particles_material.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/physics_joint.cpp
+#: scene/3d/vehicle_body.cpp scene/resources/particles_material.cpp
#: servers/audio/effects/audio_effect_reverb.cpp
msgid "Damping"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+msgid "Damping Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Damping Curve"
+msgstr "曲線を分割ã™ã‚‹"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp scene/3d/light.cpp
+#: scene/resources/particles_material.cpp
msgid "Angle"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+msgid "Angle Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Angle Curve"
+msgstr "曲線を閉ã˜ã‚‹"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#, fuzzy
+msgid "Scale Amount"
+msgstr "ç·è¨ˆ:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+msgid "Scale Amount Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#, fuzzy
+msgid "Scale Amount Curve"
+msgstr "カーソル基準ã§ã‚¹ã‚±ãƒ¼ãƒ«"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
#, fuzzy
msgid "Color Ramp"
msgstr "カラー"
@@ -19399,6 +20475,48 @@ msgstr ""
msgid "Hue Variation"
msgstr "分離:"
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Variation"
+msgstr "分離:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Variation Random"
+msgstr "分離:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Variation Curve"
+msgstr "分離:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Speed Random"
+msgstr "スケール"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Speed Curve"
+msgstr "曲線を分割ã™ã‚‹"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Offset Random"
+msgstr "オフセット:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Offset Curve"
+msgstr "曲線を閉ã˜ã‚‹"
+
#: scene/2d/joints_2d.cpp
msgid "Node A and Node B must be PhysicsBody2Ds"
msgstr "Node Aã¨Node B㯠PhysicsBody2D ã§ãªã‘れã°ãªã‚Šã¾ã›ã‚“"
@@ -19420,26 +20538,25 @@ msgid "Node A and Node B must be different PhysicsBody2Ds"
msgstr "Node A 㨠Node B ã¯ç•°ãªã‚‹ PhysicsBody2D ã§ãªã‘れã°ãªã‚Šã¾ã›ã‚“"
#: scene/2d/joints_2d.cpp scene/3d/physics_joint.cpp
-#, fuzzy
msgid "Node A"
-msgstr "ノード"
+msgstr "ノード A"
#: scene/2d/joints_2d.cpp scene/3d/physics_joint.cpp
-#, fuzzy
msgid "Node B"
-msgstr "ノード"
+msgstr "ノード B"
#: scene/2d/joints_2d.cpp scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp
+#: scene/3d/light.cpp scene/3d/physics_joint.cpp
#: scene/resources/environment.cpp
msgid "Bias"
-msgstr ""
+msgstr "ãƒã‚¤ã‚¢ã‚¹"
#: scene/2d/joints_2d.cpp
#, fuzzy
msgid "Disable Collision"
msgstr "無効ãªãƒœã‚¿ãƒ³"
-#: scene/2d/joints_2d.cpp
+#: scene/2d/joints_2d.cpp scene/3d/physics_joint.cpp
msgid "Softness"
msgstr ""
@@ -19457,7 +20574,7 @@ msgstr "åˆæœŸåŒ–"
msgid "Rest Length"
msgstr ""
-#: scene/2d/joints_2d.cpp scene/3d/vehicle_body.cpp
+#: scene/2d/joints_2d.cpp scene/3d/physics_joint.cpp scene/3d/vehicle_body.cpp
msgid "Stiffness"
msgstr ""
@@ -19479,9 +20596,9 @@ msgid "Texture Scale"
msgstr "テクスãƒãƒ£é ˜åŸŸ"
#: scene/2d/light_2d.cpp scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp
-#: scene/resources/environment.cpp scene/resources/sky.cpp
+#: scene/3d/light.cpp scene/resources/environment.cpp scene/resources/sky.cpp
msgid "Energy"
-msgstr ""
+msgstr "エãƒãƒ«ã‚®ãƒ¼"
#: scene/2d/light_2d.cpp
msgid "Z Min"
@@ -19520,12 +20637,6 @@ msgstr "後é¢å›³"
msgid "Gradient Length"
msgstr "グラデーション編集"
-#: scene/2d/light_2d.cpp scene/gui/control.cpp
-#: scene/resources/navigation_mesh.cpp
-#, fuzzy
-msgid "Filter"
-msgstr "フィルター:"
-
#: scene/2d/light_2d.cpp
#, fuzzy
msgid "Filter Smooth"
@@ -19537,9 +20648,8 @@ msgid "Closed"
msgstr "é–‰ã˜ã‚‹"
#: scene/2d/light_occluder_2d.cpp scene/resources/material.cpp
-#, fuzzy
msgid "Cull Mode"
-msgstr "定è¦ãƒ¢ãƒ¼ãƒ‰"
+msgstr "カリングモード"
#: scene/2d/light_occluder_2d.cpp
msgid ""
@@ -19558,9 +20668,8 @@ msgid "Width Curve"
msgstr "曲線を分割ã™ã‚‹"
#: scene/2d/line_2d.cpp
-#, fuzzy
msgid "Default Color"
-msgstr "デフォルト"
+msgstr "デフォルトã®è‰²"
#: scene/2d/line_2d.cpp scene/resources/texture.cpp
msgid "Fill"
@@ -19596,9 +20705,8 @@ msgid "End Cap Mode"
msgstr "Snapモード:"
#: scene/2d/line_2d.cpp scene/2d/polygon_2d.cpp scene/resources/style_box.cpp
-#, fuzzy
msgid "Border"
-msgstr "境界ピクセル"
+msgstr "ボーダー"
#: scene/2d/line_2d.cpp
msgid "Sharp Limit"
@@ -19935,9 +21043,8 @@ msgid "Custom Integrator"
msgstr "ノードを切りå–ã‚‹"
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-#, fuzzy
msgid "Continuous CD"
-msgstr "継続的"
+msgstr "連続的è¡çªåˆ¤å®š"
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
msgid "Contacts Reported"
@@ -19950,14 +21057,12 @@ msgstr "色をå–å¾—"
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
#: servers/physics_2d_server.cpp servers/physics_server.cpp
-#, fuzzy
msgid "Sleeping"
-msgstr "スマートスナップ"
+msgstr "スリープ中"
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-#, fuzzy
msgid "Can Sleep"
-msgstr "速度:"
+msgstr "スリープå¯èƒ½"
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
msgid "Damp"
@@ -19972,13 +21077,8 @@ msgid "Applied Forces"
msgstr ""
#: scene/2d/physics_body_2d.cpp
-#, fuzzy
-msgid "Force"
-msgstr "強制プッシュ"
-
-#: scene/2d/physics_body_2d.cpp
msgid "Torque"
-msgstr ""
+msgstr "トルク"
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
#, fuzzy
@@ -19992,7 +21092,7 @@ msgstr " (物ç†çš„)"
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
#, fuzzy
-msgid "Moving platform"
+msgid "Moving Platform"
msgstr "å‡ºåŠ›çµæžœã®ç§»å‹•中"
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
@@ -20001,7 +21101,7 @@ msgstr ""
#: scene/2d/physics_body_2d.cpp scene/2d/touch_screen_button.cpp
#: scene/3d/physics_body.cpp scene/gui/texture_button.cpp
-#: scene/resources/line_shape_2d.cpp
+#: scene/resources/line_shape_2d.cpp scene/resources/material.cpp
#, fuzzy
msgid "Normal"
msgstr "フォーマット"
@@ -20056,7 +21156,7 @@ msgstr ""
#: scene/2d/polygon_2d.cpp
msgid "Invert"
-msgstr ""
+msgstr "å転"
#: scene/2d/polygon_2d.cpp
#, fuzzy
@@ -20195,9 +21295,8 @@ msgid "Y Sort"
msgstr "ソート"
#: scene/2d/tile_map.cpp
-#, fuzzy
msgid "Show Collision"
-msgstr "コリジョン"
+msgstr "コリジョンを表示"
#: scene/2d/tile_map.cpp
#, fuzzy
@@ -20249,6 +21348,34 @@ msgstr ""
"VisibilityEnable2D ã¯ã€è¦ªã¨ã—ã¦ç›´æŽ¥ç·¨é›†ã•れãŸã‚·ãƒ¼ãƒ³ã®ãƒ«ãƒ¼ãƒˆã‚’使用ã™ã‚‹å ´åˆã«æœ€"
"é©ã§ã™ã€‚"
+#: scene/2d/visibility_notifier_2d.cpp scene/3d/visibility_notifier.cpp
+#, fuzzy
+msgid "Pause Animations"
+msgstr "アニメーションを貼り付ã‘"
+
+#: scene/2d/visibility_notifier_2d.cpp scene/3d/visibility_notifier.cpp
+msgid "Freeze Bodies"
+msgstr ""
+
+#: scene/2d/visibility_notifier_2d.cpp
+#, fuzzy
+msgid "Pause Particles"
+msgstr "パーティクル"
+
+#: scene/2d/visibility_notifier_2d.cpp
+#, fuzzy
+msgid "Pause Animated Sprites"
+msgstr "アニメーションを貼り付ã‘"
+
+#: scene/2d/visibility_notifier_2d.cpp
+#, fuzzy
+msgid "Process Parent"
+msgstr "優先順ä½ã‚’有効化"
+
+#: scene/2d/visibility_notifier_2d.cpp
+msgid "Physics Process Parent"
+msgstr ""
+
#: scene/3d/area.cpp
msgid "Reverb Bus"
msgstr ""
@@ -20283,9 +21410,8 @@ msgstr ""
"éš›ã®ã‚³ãƒ³ãƒˆãƒ­ãƒ¼ãƒ©ãƒ¼ã«ãƒã‚¤ãƒ³ãƒ‰ã•れã¾ã›ã‚“。"
#: scene/3d/arvr_nodes.cpp
-#, fuzzy
msgid "Anchor ID"
-msgstr "アンカーã®ã¿"
+msgstr "アンカーID"
#: scene/3d/arvr_nodes.cpp
msgid "ARVRAnchor must have an ARVROrigin node as its parent."
@@ -20349,25 +21475,23 @@ msgid "Attenuation Filter"
msgstr ""
#: scene/3d/audio_stream_player_3d.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
#: servers/audio/effects/audio_effect_filter.cpp
msgid "Cutoff Hz"
-msgstr ""
+msgstr "カットオフ周波数"
#: scene/3d/audio_stream_player_3d.cpp
#: servers/audio/effects/audio_effect_filter.cpp
-#, fuzzy
msgid "dB"
-msgstr "B"
+msgstr "dB"
#: scene/3d/audio_stream_player_3d.cpp
-#, fuzzy
msgid "Doppler"
-msgstr "ドップラー効果を有効化"
+msgstr "ドップラー"
#: scene/3d/audio_stream_player_3d.cpp
-#, fuzzy
msgid "Tracking"
-msgstr "パック中"
+msgstr "トラッキング"
#: scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp
msgid "Bounds"
@@ -20388,14 +21512,8 @@ msgid "Interior"
msgstr ""
#: scene/3d/baked_lightmap.cpp
-#, fuzzy
msgid "Octree"
-msgstr "サブツリー"
-
-#: scene/3d/baked_lightmap.cpp
-#, fuzzy
-msgid "User Data"
-msgstr "ユーザーインターフェース"
+msgstr "八分木"
#: scene/3d/baked_lightmap.cpp
msgid "Finding meshes and lights"
@@ -20441,13 +21559,12 @@ msgid "Bounce Indirect Energy"
msgstr ""
#: scene/3d/baked_lightmap.cpp
-#, fuzzy
msgid "Use Denoiser"
-msgstr "フィルター:"
+msgstr "ノイズ除去を使用"
#: scene/3d/baked_lightmap.cpp scene/resources/texture.cpp
msgid "Use HDR"
-msgstr ""
+msgstr "HDRを使用"
#: scene/3d/baked_lightmap.cpp
#, fuzzy
@@ -20524,7 +21641,7 @@ msgstr ""
#: scene/3d/camera.cpp scene/3d/light.cpp scene/3d/reflection_probe.cpp
msgid "Cull Mask"
-msgstr ""
+msgstr "カリングマスク"
#: scene/3d/camera.cpp
#, fuzzy
@@ -20538,7 +21655,7 @@ msgstr "プロジェクト"
#: scene/3d/camera.cpp
msgid "FOV"
-msgstr ""
+msgstr "視野角"
#: scene/3d/camera.cpp
#, fuzzy
@@ -20672,6 +21789,16 @@ msgid "Ring Axis"
msgstr "警告"
#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Rotate Y"
+msgstr "回転"
+
+#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Disable Z"
+msgstr "アイテムを無効ã«ã™ã‚‹"
+
+#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
msgid "Flatness"
msgstr ""
@@ -20712,16 +21839,11 @@ msgstr "ダイナミック ライブラリ"
msgid "Dynamic Range"
msgstr "ダイナミック ライブラリ"
-#: scene/3d/gi_probe.cpp
+#: scene/3d/gi_probe.cpp scene/3d/light.cpp
msgid "Normal Bias"
msgstr ""
#: scene/3d/gi_probe.cpp
-#, fuzzy
-msgid "Compress"
-msgstr "コンãƒãƒ¼ãƒãƒ³ãƒˆ"
-
-#: scene/3d/gi_probe.cpp
msgid "Plotting Meshes"
msgstr "メッシュをæç”»ä¸­"
@@ -20753,13 +21875,27 @@ msgstr ""
#: scene/3d/light.cpp
#, fuzzy
+msgid "Indirect Energy"
+msgstr "放出色"
+
+#: scene/3d/light.cpp
+#, fuzzy
msgid "Negative"
msgstr "\\ GDNative"
#: scene/3d/light.cpp
#, fuzzy
+msgid "Specular"
+msgstr "定è¦ãƒ¢ãƒ¼ãƒ‰"
+
+#: scene/3d/light.cpp
msgid "Bake Mode"
-msgstr "ビットマスクモード"
+msgstr "ベイクモード"
+
+#: scene/3d/light.cpp
+#, fuzzy
+msgid "Contact"
+msgstr "コントラスト"
#: scene/3d/light.cpp
#, fuzzy
@@ -20773,11 +21909,31 @@ msgstr "æ–¹å‘"
#: scene/3d/light.cpp
#, fuzzy
+msgid "Split 1"
+msgstr "分割"
+
+#: scene/3d/light.cpp
+#, fuzzy
+msgid "Split 2"
+msgstr "分割"
+
+#: scene/3d/light.cpp
+#, fuzzy
+msgid "Split 3"
+msgstr "分割"
+
+#: scene/3d/light.cpp
+#, fuzzy
msgid "Blend Splits"
msgstr "ブレンド時間:"
#: scene/3d/light.cpp
#, fuzzy
+msgid "Bias Split Scale"
+msgstr "スケールスナップを使用"
+
+#: scene/3d/light.cpp
+#, fuzzy
msgid "Depth Range"
msgstr "Depth(深度/奥行)"
@@ -20801,11 +21957,16 @@ msgstr "90度を超ãˆã‚‹è§’度ã®ã‚¹ãƒãƒƒãƒˆãƒ©ã‚¤ãƒˆã¯ã€ã‚·ãƒ£ãƒ‰ã‚¦ã‚’投å
#: scene/3d/light.cpp
msgid "Spot"
-msgstr ""
+msgstr "スãƒãƒƒãƒˆ"
+
+#: scene/3d/light.cpp
+#, fuzzy
+msgid "Angle Attenuation"
+msgstr "アニメーション"
#: scene/3d/mesh_instance.cpp
msgid "Software Skinning"
-msgstr ""
+msgstr "ソフトウェアスキニング"
#: scene/3d/mesh_instance.cpp
#, fuzzy
@@ -20845,7 +22006,7 @@ msgstr ""
#: scene/3d/navigation_mesh_instance.cpp
msgid "Navmesh"
-msgstr ""
+msgstr "ナビメッシュ"
#: scene/3d/navigation_obstacle.cpp
msgid ""
@@ -20948,6 +22109,63 @@ msgstr "軸"
#: scene/3d/physics_body.cpp
#, fuzzy
+msgid "Linear X"
+msgstr "リニア"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Linear Y"
+msgstr "リニア"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Linear Z"
+msgstr "リニア"
+
+#: scene/3d/physics_body.cpp
+msgid "Angular X"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Angular Y"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Angular Z"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Motion X"
+msgstr "アクション(Action)"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Motion Y"
+msgstr "アクション(Action)"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Motion Z"
+msgstr "アクション(Action)"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Move Lock X"
+msgstr "ノードを移動"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Move Lock Y"
+msgstr "ノードを移動"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Move Lock Z"
+msgstr "ノードを移動"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
msgid "Body Offset"
msgstr "オフセット:"
@@ -20981,6 +22199,15 @@ msgid "Exclude Nodes"
msgstr "ノードを削除"
#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Params"
+msgstr "パラメーターãŒå¤‰æ›´ã•れã¾ã—ãŸ:"
+
+#: scene/3d/physics_joint.cpp
+msgid "Impulse Clamp"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit"
msgstr ""
@@ -20994,6 +22221,55 @@ msgstr "大文字"
msgid "Lower"
msgstr "å°æ–‡å­—"
+#: scene/3d/physics_joint.cpp scene/3d/vehicle_body.cpp
+#, fuzzy
+msgid "Relaxation"
+msgstr "分離:"
+
+#: scene/3d/physics_joint.cpp
+msgid "Motor"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Target Velocity"
+msgstr "オービットビュー å³"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Max Impulse"
+msgstr "速度:"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit"
+msgstr "リニア"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Upper Distance"
+msgstr "è·é›¢ã‚’å–å¾—:"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Lower Distance"
+msgstr "è·é›¢ã‚’å–å¾—:"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Restitution"
+msgstr "説明"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motion"
+msgstr "åˆæœŸåŒ–"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Ortho"
+msgstr "å¾Œé¢ å¹³è¡ŒæŠ•å½±"
+
#: scene/3d/physics_joint.cpp
#, fuzzy
msgid "Upper Angle"
@@ -21006,6 +22282,16 @@ msgstr "å°æ–‡å­—"
#: scene/3d/physics_joint.cpp
#, fuzzy
+msgid "Angular Motion"
+msgstr "アニメーション"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Angular Ortho"
+msgstr "最大。角度エラー:"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
msgid "Swing Span"
msgstr "シーンをä¿å­˜ä¸­"
@@ -21014,17 +22300,99 @@ msgid "Twist Span"
msgstr ""
#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit X"
+msgstr "リニア"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motor X"
+msgstr "åˆæœŸåŒ–"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Force Limit"
+msgstr "ドローコール:"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Spring X"
+msgstr "行間隔"
+
+#: scene/3d/physics_joint.cpp
+msgid "Equilibrium Point"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit X"
msgstr ""
#: scene/3d/physics_joint.cpp
+msgid "Erp"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Motor X"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Spring X"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit Y"
+msgstr "リニア"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motor Y"
+msgstr "åˆæœŸåŒ–"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Spring Y"
+msgstr "行間隔"
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit Y"
msgstr ""
#: scene/3d/physics_joint.cpp
+msgid "Angular Motor Y"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Spring Y"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit Z"
+msgstr "リニア"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motor Z"
+msgstr "åˆæœŸåŒ–"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Spring Z"
+msgstr "行間隔"
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit Z"
msgstr ""
+#: scene/3d/physics_joint.cpp
+msgid "Angular Motor Z"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Spring Z"
+msgstr ""
+
#: scene/3d/portal.cpp
msgid "The RoomManager should not be a child or grandchild of a Portal."
msgstr "RoomManager 㯠Portal ã®å­ã‚„å­«ã«ã§ãã¾ã›ã‚“。"
@@ -21052,23 +22420,20 @@ msgid "Linked Room"
msgstr "ルートã®ãƒ©ã‚¤ãƒ–編集:"
#: scene/3d/portal.cpp
-#, fuzzy
msgid "Use Default Margin"
-msgstr "デフォルト"
+msgstr "デフォルトã®ãƒžãƒ¼ã‚¸ãƒ³ã‚’使用"
#: scene/3d/proximity_group.cpp
-#, fuzzy
msgid "Group Name"
-msgstr "グループ化済ã¿"
+msgstr "グループå"
#: scene/3d/proximity_group.cpp
msgid "Dispatch Mode"
msgstr ""
#: scene/3d/proximity_group.cpp
-#, fuzzy
msgid "Grid Radius"
-msgstr "åŠå¾„:"
+msgstr "グリッドã®åŠå¾„"
#: scene/3d/ray_cast.cpp
#, fuzzy
@@ -21146,7 +22511,7 @@ msgstr ""
msgid "Use Default Simplify"
msgstr ""
-#: scene/3d/room.cpp
+#: scene/3d/room.cpp scene/3d/room_manager.cpp
msgid "Room Simplify"
msgstr ""
@@ -21188,6 +22553,13 @@ msgstr "SceneTree ã«ã¯ RoomManager ãŒ1ã¤ã ã‘存在ã§ãã¾ã™ã€‚"
msgid "Main"
msgstr ""
+#: scene/3d/room_manager.cpp scene/animation/animation_player.cpp
+#: scene/animation/animation_tree.cpp scene/animation/animation_tree_player.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+#, fuzzy
+msgid "Active"
+msgstr "アクション(Action)"
+
#: scene/3d/room_manager.cpp
msgid "Roomlist"
msgstr ""
@@ -21212,6 +22584,54 @@ msgid "Gameplay"
msgstr ""
#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Gameplay Monitor"
+msgstr "モニター"
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Use Secondary PVS"
+msgstr "スケールスナップを使用"
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Merge Meshes"
+msgstr "メッシュ"
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Show Margins"
+msgstr "原点を表示"
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Debug Sprawl"
+msgstr "デãƒãƒƒã‚°"
+
+#: scene/3d/room_manager.cpp
+msgid "Overlap Warning Threshold"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Preview Camera"
+msgstr "プレビューサイズ"
+
+#: scene/3d/room_manager.cpp
+msgid "Portal Depth Limit"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Default Portal Margin"
+msgstr "デフォルトã®ãƒžãƒ¼ã‚¸ãƒ³ã‚’使用"
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Roaming Expansion Margin"
+msgstr "ã™ã¹ã¦å±•é–‹"
+
+#: scene/3d/room_manager.cpp
msgid ""
"RoomList path is invalid.\n"
"Please check the RoomList branch has been assigned in the RoomManager."
@@ -21275,9 +22695,8 @@ msgid "Simulation Precision"
msgstr "アニメーションツリーãŒç„¡åйã§ã™ã€‚"
#: scene/3d/soft_body.cpp
-#, fuzzy
msgid "Total Mass"
-msgstr "åˆè¨ˆ:"
+msgstr "ç·è³ªé‡"
#: scene/3d/soft_body.cpp
msgid "Linear Stiffness"
@@ -21326,7 +22745,6 @@ msgid "Matrix"
msgstr ""
#: scene/3d/spatial.cpp
-#, fuzzy
msgid "Gizmo"
msgstr "ギズモ"
@@ -21352,6 +22770,21 @@ msgstr "ピクセルスナップ"
msgid "Billboard"
msgstr ""
+#: scene/3d/sprite_3d.cpp scene/resources/material.cpp
+#, fuzzy
+msgid "Transparent"
+msgstr "行列(縦横)入れ替ãˆ"
+
+#: scene/3d/sprite_3d.cpp
+#, fuzzy
+msgid "Shaded"
+msgstr "シェーダー"
+
+#: scene/3d/sprite_3d.cpp
+#, fuzzy
+msgid "Double Sided"
+msgstr "ダブルクリック"
+
#: scene/3d/sprite_3d.cpp
msgid "Alpha Cut"
msgstr ""
@@ -21426,11 +22859,6 @@ msgstr ""
msgid "Max Force"
msgstr "エラー"
-#: scene/3d/vehicle_body.cpp
-#, fuzzy
-msgid "Relaxation"
-msgstr "分離:"
-
#: scene/3d/visibility_notifier.cpp
msgid "AABB"
msgstr ""
@@ -21574,7 +23002,7 @@ msgstr "クロスフェード時間 (秒):"
#: scene/animation/animation_blend_tree.cpp
#, fuzzy
-msgid "autorestart_"
+msgid "Auto Restart"
msgstr "自動リスタート:"
#: scene/animation/animation_blend_tree.cpp
@@ -21660,13 +23088,6 @@ msgstr "クラスオプション:"
msgid "Default Blend Time"
msgstr "デフォルトã®ãƒ†ãƒ¼ãƒž"
-#: scene/animation/animation_player.cpp scene/animation/animation_tree.cpp
-#: scene/animation/animation_tree_player.cpp
-#: servers/audio/effects/audio_effect_delay.cpp
-#, fuzzy
-msgid "Active"
-msgstr "アクション(Action)"
-
#: scene/animation/animation_player.cpp
msgid "Method Call Mode"
msgstr ""
@@ -21792,10 +23213,6 @@ msgstr "親ノードを変更"
msgid "Max Iterations"
msgstr "関数を作æˆ"
-#: scene/animation/tween.cpp scene/resources/texture.cpp
-msgid "Repeat"
-msgstr ""
-
#: scene/animation/tween.cpp
msgid "Playback Process Mode"
msgstr ""
@@ -21826,20 +23243,6 @@ msgstr "é¸æŠžãƒ¢ãƒ¼ãƒ‰"
msgid "Alignment"
msgstr ""
-#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
-#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
-#: scene/resources/style_box.cpp
-#, fuzzy
-msgid "Horizontal"
-msgstr "æ°´å¹³:"
-
-#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
-#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
-#: scene/resources/style_box.cpp
-#, fuzzy
-msgid "Vertical"
-msgstr "垂直:"
-
#: scene/gui/base_button.cpp
#, fuzzy
msgid "Shortcut In Tooltip"
@@ -21942,10 +23345,6 @@ msgid "HSV"
msgstr "HSV"
#: scene/gui/color_picker.cpp
-msgid "Raw"
-msgstr "Raw"
-
-#: scene/gui/color_picker.cpp
msgid "Switch between hexadecimal and code values."
msgstr "16進数ã¨ã‚³ãƒ¼ãƒ‰å€¤ã‚’切り替ãˆã¾ã™ã€‚"
@@ -22013,6 +23412,31 @@ msgid "Focus"
msgstr "パスã«ãƒ•ォーカス"
#: scene/gui/control.cpp
+msgid "Neighbour Left"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Neighbour Top"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Neighbour Right"
+msgstr ""
+
+#: scene/gui/control.cpp
+#, fuzzy
+msgid "Neighbour Bottom"
+msgstr "中央下"
+
+#: scene/gui/control.cpp
+msgid "Next"
+msgstr "次"
+
+#: scene/gui/control.cpp
+msgid "Previous"
+msgstr "å‰"
+
+#: scene/gui/control.cpp
msgid "Mouse"
msgstr ""
@@ -22050,7 +23474,7 @@ msgid "Dialog"
msgstr "XFormダイアログ"
#: scene/gui/dialogs.cpp
-msgid "Hide On Ok"
+msgid "Hide On OK"
msgstr ""
#: scene/gui/dialogs.cpp scene/gui/label.cpp
@@ -22149,7 +23573,7 @@ msgid "Timers"
msgstr "時間"
#: scene/gui/item_list.cpp scene/gui/popup_menu.cpp scene/gui/tree.cpp
-msgid "Incremental Search Max Interval (msec)"
+msgid "Incremental Search Max Interval Msec"
msgstr ""
#: scene/gui/item_list.cpp scene/gui/tree.cpp
@@ -22735,6 +24159,26 @@ msgstr "中央左"
msgid "Nine Patch Stretch"
msgstr "補間モード"
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Left"
+msgstr "マージンを設定ã™ã‚‹"
+
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Top"
+msgstr "マージンを設定ã™ã‚‹"
+
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Right"
+msgstr "マージンを設定ã™ã‚‹"
+
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Bottom"
+msgstr "é¸æŠžãƒ¢ãƒ¼ãƒ‰"
+
#: scene/gui/tree.cpp
msgid "Custom Minimum Height"
msgstr ""
@@ -22772,8 +24216,9 @@ msgid "Paused"
msgstr ""
#: scene/gui/video_player.cpp
-msgid "Buffering (msec)"
-msgstr ""
+#, fuzzy
+msgid "Buffering Msec"
+msgstr "後é¢å›³"
#: scene/gui/video_player.cpp
#, fuzzy
@@ -23133,6 +24578,22 @@ msgid "Shadow Atlas"
msgstr "æ–°ã—ã„アトラス"
#: scene/main/viewport.cpp
+msgid "Quad 0"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 1"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 2"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 3"
+msgstr ""
+
+#: scene/main/viewport.cpp
#, fuzzy
msgid "Canvas Transform"
msgstr "トランスフォームをクリア"
@@ -23147,6 +24608,11 @@ msgid "Tooltip Delay (sec)"
msgstr ""
#: scene/register_scene_types.cpp
+#, fuzzy
+msgid "Swap OK Cancel"
+msgstr "キャンセル"
+
+#: scene/register_scene_types.cpp
msgid "Use hiDPI"
msgstr ""
@@ -23161,21 +24627,6 @@ msgid "Custom Font"
msgstr "ノードを切りå–ã‚‹"
#: scene/resources/audio_stream_sample.cpp
-#, fuzzy
-msgid "Loop Mode"
-msgstr "移動モード"
-
-#: scene/resources/audio_stream_sample.cpp
-#, fuzzy
-msgid "Loop Begin"
-msgstr "移動モード"
-
-#: scene/resources/audio_stream_sample.cpp
-#, fuzzy
-msgid "Loop End"
-msgstr "移動モード"
-
-#: scene/resources/audio_stream_sample.cpp
#: servers/audio/effects/audio_stream_generator.cpp servers/audio_server.cpp
#, fuzzy
msgid "Mix Rate"
@@ -23235,6 +24686,17 @@ msgstr "追加ã®ã‚ªãƒ—ション:"
#: scene/resources/dynamic_font.cpp
#, fuzzy
+msgid "Char"
+msgstr "æœ‰åŠ¹ãªæ–‡å­—:"
+
+#: scene/resources/dynamic_font.cpp scene/resources/world.cpp
+#: scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Space"
+msgstr "メインシーン"
+
+#: scene/resources/dynamic_font.cpp
+#, fuzzy
msgid "Font"
msgstr "フォント"
@@ -23461,6 +24923,45 @@ msgid "Glow"
msgstr ""
#: scene/resources/environment.cpp
+#, fuzzy
+msgid "Levels"
+msgstr "開発者"
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "1"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+#, fuzzy
+msgid "2"
+msgstr "2D"
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+#, fuzzy
+msgid "3"
+msgstr "3D"
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "4"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "5"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "6"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "7"
+msgstr ""
+
+#: scene/resources/environment.cpp
msgid "Bloom"
msgstr ""
@@ -23553,10 +25054,68 @@ msgid "Next Pass"
msgstr "次ã®å¹³é¢"
#: scene/resources/material.cpp
+msgid "Use Shadow To Opacity"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Unshaded"
+msgstr "シェーディングãªã—ã§è¡¨ç¤º"
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Vertex Lighting"
+msgstr "直接光"
+
+#: scene/resources/material.cpp
+msgid "No Depth Test"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Use Point Size"
+msgstr "å‰é¢å›³"
+
+#: scene/resources/material.cpp
+msgid "World Triplanar"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Fixed Size"
+msgstr "å‰é¢å›³"
+
+#: scene/resources/material.cpp
+msgid "Albedo Tex Force sRGB"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Do Not Receive Shadows"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Disable Ambient Light"
+msgstr "å³ã‚¤ãƒ³ãƒ‡ãƒ³ãƒˆ"
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Ensure Correct Normals"
+msgstr "トランスフォームã¯ä¸­æ­¢ã•れã¾ã—ãŸã€‚"
+
+#: scene/resources/material.cpp
#, fuzzy
msgid "Vertex Color"
msgstr "頂点"
+#: scene/resources/material.cpp
+msgid "Use As Albedo"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Is sRGB"
+msgstr ""
+
#: scene/resources/material.cpp servers/visual_server.cpp
#, fuzzy
msgid "Parameters"
@@ -23593,6 +25152,11 @@ msgid "Billboard Mode"
msgstr "定è¦ãƒ¢ãƒ¼ãƒ‰"
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Billboard Keep Scale"
+msgstr "定è¦ãƒ¢ãƒ¼ãƒ‰"
+
+#: scene/resources/material.cpp
msgid "Grow"
msgstr ""
@@ -23602,6 +25166,10 @@ msgid "Grow Amount"
msgstr "ç·è¨ˆ:"
#: scene/resources/material.cpp
+msgid "Use Alpha Scissor"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Alpha Scissor Threshold"
msgstr ""
@@ -23633,10 +25201,20 @@ msgid "Metallic Specular"
msgstr ""
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Metallic Texture"
+msgstr "放出æº: "
+
+#: scene/resources/material.cpp
msgid "Metallic Texture Channel"
msgstr ""
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Roughness Texture"
+msgstr "テクスãƒãƒ£ã‚’削除"
+
+#: scene/resources/material.cpp
msgid "Roughness Texture Channel"
msgstr ""
@@ -23656,6 +25234,16 @@ msgid "Emission Operator"
msgstr "放出色"
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Emission On UV2"
+msgstr "放出マスク"
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Emission Texture"
+msgstr "放出æº: "
+
+#: scene/resources/material.cpp
msgid "NormalMap"
msgstr ""
@@ -23670,6 +25258,11 @@ msgstr "ランダムãªå‚¾ã:"
#: scene/resources/material.cpp
#, fuzzy
+msgid "Rim Texture"
+msgstr "テクスãƒãƒ£ã‚’削除"
+
+#: scene/resources/material.cpp
+#, fuzzy
msgid "Clearcoat"
msgstr "クリア"
@@ -23679,15 +25272,28 @@ msgid "Clearcoat Gloss"
msgstr "ãƒãƒ¼ã‚ºã‚’クリアã™ã‚‹"
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Clearcoat Texture"
+msgstr "エディターã®ãƒ†ãƒ¼ãƒž"
+
+#: scene/resources/material.cpp
msgid "Anisotropy"
msgstr ""
#: scene/resources/material.cpp
+msgid "Anisotropy Flowmap"
+msgstr ""
+
+#: scene/resources/material.cpp
#, fuzzy
msgid "Ambient Occlusion"
msgstr "オクルージョン"
#: scene/resources/material.cpp
+msgid "On UV2"
+msgstr ""
+
+#: scene/resources/material.cpp
#, fuzzy
msgid "Texture Channel"
msgstr "テクスãƒãƒ£é ˜åŸŸ"
@@ -23726,6 +25332,11 @@ msgstr "トランジション: "
#: scene/resources/material.cpp
#, fuzzy
+msgid "Transmission Texture"
+msgstr "トランジション: "
+
+#: scene/resources/material.cpp
+#, fuzzy
msgid "Refraction"
msgstr "分離:"
@@ -23744,6 +25355,10 @@ msgid "UV1"
msgstr "UV"
#: scene/resources/material.cpp
+msgid "Triplanar"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Triplanar Sharpness"
msgstr ""
@@ -23954,6 +25569,16 @@ msgstr "エディターã®ãƒ†ãƒ¼ãƒž"
msgid "Point Count"
msgstr "入力ãƒãƒ¼ãƒˆã‚’追加"
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Scale Random"
+msgstr "スケール比:"
+
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Scale Curve"
+msgstr "曲線を閉ã˜ã‚‹"
+
#: scene/resources/physics_material.cpp
msgid "Rough"
msgstr ""
@@ -24016,10 +25641,6 @@ msgid "A"
msgstr ""
#: scene/resources/shader.cpp
-msgid "Code"
-msgstr ""
-
-#: scene/resources/shader.cpp
#, fuzzy
msgid "Custom Defines"
msgstr "カスタムシーンを実行"
@@ -24116,15 +25737,6 @@ msgstr ""
#: scene/resources/texture.cpp
#, fuzzy
-msgid "Storage"
-msgstr "ファイルã®ä¿å­˜:"
-
-#: scene/resources/texture.cpp
-msgid "Lossy Quality"
-msgstr ""
-
-#: scene/resources/texture.cpp
-#, fuzzy
msgid "Load Path"
msgstr "プリセットを読ã¿è¾¼ã‚€"
@@ -24255,11 +25867,6 @@ msgstr "ãã®ã‚¿ã‚¤ãƒ—ã®æ¯”較関数ã¯ç„¡åйã§ã™ã€‚"
msgid "Fallback Environment"
msgstr "環境を表示"
-#: scene/resources/world.cpp scene/resources/world_2d.cpp
-#, fuzzy
-msgid "Space"
-msgstr "メインシーン"
-
#: scene/resources/world.cpp
#, fuzzy
msgid "Scenario"
@@ -24340,10 +25947,37 @@ msgstr ""
msgid "Wet"
msgstr ""
-#: servers/audio/effects/audio_effect_compressor.cpp
-msgid "Threshold"
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "Voice"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+msgid "Delay (ms)"
msgstr ""
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_phaser.cpp
+msgid "Rate Hz"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#, fuzzy
+msgid "Depth (ms)"
+msgstr "Depth(深度/奥行)"
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+msgid "Level dB"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+#: servers/audio/effects/audio_effect_panner.cpp
+#, fuzzy
+msgid "Pan"
+msgstr "å¹³é¢:"
+
#: servers/audio/effects/audio_effect_compressor.cpp
#: servers/audio/effects/audio_effect_filter.cpp
msgid "Gain"
@@ -24367,20 +26001,6 @@ msgid "Tap 1"
msgstr ""
#: servers/audio/effects/audio_effect_delay.cpp
-msgid "Delay (ms)"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_delay.cpp
-msgid "Level dB"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_delay.cpp
-#: servers/audio/effects/audio_effect_panner.cpp
-#, fuzzy
-msgid "Pan"
-msgstr "å¹³é¢:"
-
-#: servers/audio/effects/audio_effect_delay.cpp
msgid "Tap 2"
msgstr ""
@@ -24398,7 +26018,7 @@ msgstr "ãƒã‚¤ãƒ‘ス"
#: servers/audio/effects/audio_effect_distortion.cpp
msgid "Pre Gain"
-msgstr ""
+msgstr "プリゲイン"
#: servers/audio/effects/audio_effect_distortion.cpp
msgid "Keep Hf Hz"
@@ -24409,14 +26029,12 @@ msgid "Drive"
msgstr ""
#: servers/audio/effects/audio_effect_distortion.cpp
-#, fuzzy
msgid "Post Gain"
-msgstr "後"
+msgstr "ãƒã‚¹ãƒˆã‚²ã‚¤ãƒ³"
#: servers/audio/effects/audio_effect_filter.cpp
-#, fuzzy
msgid "Resonance"
-msgstr "リソース"
+msgstr "å響"
#: servers/audio/effects/audio_effect_limiter.cpp
msgid "Ceiling dB"
@@ -24442,26 +26060,21 @@ msgstr ""
msgid "Range Max Hz"
msgstr ""
-#: servers/audio/effects/audio_effect_phaser.cpp
-msgid "Rate Hz"
-msgstr ""
-
#: servers/audio/effects/audio_effect_pitch_shift.cpp
msgid "Oversampling"
msgstr ""
#: servers/audio/effects/audio_effect_pitch_shift.cpp
#: servers/audio/effects/audio_effect_spectrum_analyzer.cpp
-#, fuzzy
msgid "FFT Size"
-msgstr "サイズ:"
+msgstr "FFTサイズ"
#: servers/audio/effects/audio_effect_reverb.cpp
msgid "Predelay"
msgstr ""
#: servers/audio/effects/audio_effect_reverb.cpp
-msgid "(msec)"
+msgid "Msec"
msgstr ""
#: servers/audio/effects/audio_effect_reverb.cpp
@@ -24469,9 +26082,8 @@ msgid "Room Size"
msgstr ""
#: servers/audio/effects/audio_effect_reverb.cpp
-#, fuzzy
msgid "High-pass"
-msgstr "ãƒã‚¤ãƒ‘ス"
+msgstr "ãƒã‚¤ãƒ‘ス"
#: servers/audio/effects/audio_effect_spectrum_analyzer.cpp
msgid "Tap Back Pos"
@@ -24491,14 +26103,12 @@ msgid "Surround"
msgstr ""
#: servers/audio_server.cpp
-#, fuzzy
msgid "Enable Audio Input"
-msgstr "オーディオãƒã‚¹åを変更"
+msgstr "オーディオ入力を有効化"
#: servers/audio_server.cpp
-#, fuzzy
msgid "Output Latency"
-msgstr "出力"
+msgstr "出力レイテンシー"
#: servers/audio_server.cpp
msgid "Channel Disable Threshold dB"
@@ -24633,9 +26243,8 @@ msgid "Collision Unsafe Fraction"
msgstr "コリジョンモード"
#: servers/physics_server.cpp
-#, fuzzy
msgid "Center Of Mass"
-msgstr "中央左"
+msgstr "質é‡ä¸­å¿ƒ"
#: servers/physics_server.cpp
msgid "Principal Inertia Axes"
@@ -24684,47 +26293,40 @@ msgid "Render Loop Enabled"
msgstr "シグナルを絞り込む"
#: servers/visual_server.cpp
-#, fuzzy
msgid "VRAM Compression"
-msgstr "å¼ã‚’設定"
+msgstr "VRAM圧縮"
#: servers/visual_server.cpp
-#, fuzzy
msgid "Import BPTC"
-msgstr "インãƒãƒ¼ãƒˆ"
+msgstr "BPTCをインãƒãƒ¼ãƒˆ"
#: servers/visual_server.cpp
-#, fuzzy
msgid "Import S3TC"
-msgstr "インãƒãƒ¼ãƒˆ"
+msgstr "S3TCをインãƒãƒ¼ãƒˆ"
#: servers/visual_server.cpp
-#, fuzzy
msgid "Import ETC"
-msgstr "インãƒãƒ¼ãƒˆ"
+msgstr "ETCをインãƒãƒ¼ãƒˆ"
#: servers/visual_server.cpp
-#, fuzzy
msgid "Import ETC2"
-msgstr "インãƒãƒ¼ãƒˆ"
+msgstr "ETC2をインãƒãƒ¼ãƒˆ"
#: servers/visual_server.cpp
-#, fuzzy
msgid "Import PVRTC"
-msgstr "テーマã®ã‚¤ãƒ³ãƒãƒ¼ãƒˆ"
+msgstr "PVRTCをインãƒãƒ¼ãƒˆ"
#: servers/visual_server.cpp
msgid "Lossless Compression"
-msgstr ""
+msgstr "ロスレス圧縮"
#: servers/visual_server.cpp
-#, fuzzy
msgid "Force PNG"
-msgstr "強制プッシュ"
+msgstr "PNGを強制ã™ã‚‹"
#: servers/visual_server.cpp
msgid "WebP Compression Level"
-msgstr ""
+msgstr "WebP圧縮レベル"
#: servers/visual_server.cpp
msgid "Time Rollover Secs"
@@ -24757,9 +26359,8 @@ msgid "Shadows"
msgstr "シェーダー"
#: servers/visual_server.cpp
-#, fuzzy
msgid "Filter Mode"
-msgstr "ノードを絞り込む"
+msgstr "フィルターモード"
#: servers/visual_server.cpp
#, fuzzy
@@ -24768,7 +26369,7 @@ msgstr "é¸æŠžå¯¾è±¡ã‚’ä¸­å¤®ã«"
#: servers/visual_server.cpp
msgid "High Quality GGX"
-msgstr ""
+msgstr "高å“質GGX"
#: servers/visual_server.cpp
msgid "Irradiance Max Size"
@@ -24781,7 +26382,7 @@ msgstr "パディング"
#: servers/visual_server.cpp
msgid "Force Vertex Shading"
-msgstr ""
+msgstr "頂点シェーディングを強制"
#: servers/visual_server.cpp
msgid "Force Lambert Over Burley"
@@ -24822,19 +26423,19 @@ msgstr ""
#: servers/visual_server.cpp
msgid "Skinning"
-msgstr ""
+msgstr "スキニング"
#: servers/visual_server.cpp
msgid "Software Skinning Fallback"
-msgstr ""
+msgstr "ソフトウェアスキニングã®ãƒ•ォールãƒãƒƒã‚¯"
#: servers/visual_server.cpp
msgid "Force Software Skinning"
-msgstr ""
+msgstr "ソフトウェアスキニングを強制"
#: servers/visual_server.cpp
msgid "Use Software Skinning"
-msgstr ""
+msgstr "ソフトウェアスキニングを使用"
#: servers/visual_server.cpp
#, fuzzy
@@ -24960,14 +26561,12 @@ msgid "Remove Danglers"
msgstr "タイルを除去"
#: servers/visual_server.cpp
-#, fuzzy
msgid "Flip Imported Portals"
-msgstr "ãƒãƒ¼ã‚¿ãƒ«ã‚’å転"
+msgstr "インãƒãƒ¼ãƒˆã—ãŸãƒãƒ¼ã‚¿ãƒ«ã‚’å転"
#: servers/visual_server.cpp
-#, fuzzy
msgid "Occlusion Culling"
-msgstr "オクルージョンカリングを表示"
+msgstr "オクルージョンカリング"
#: servers/visual_server.cpp
msgid "Max Active Spheres"
@@ -24979,19 +26578,17 @@ msgid "Max Active Polygons"
msgstr "ãƒãƒªã‚´ãƒ³ã‚’移動"
#: servers/visual_server.cpp
-#, fuzzy
msgid "Shader Compilation Mode"
-msgstr "補間モード"
+msgstr "シェーダーコンパイルモード"
#: servers/visual_server.cpp
msgid "Max Simultaneous Compiles"
-msgstr ""
+msgstr "æœ€å¤§åŒæ™‚コンパイル数"
#: servers/visual_server.cpp
msgid "Log Active Async Compiles Count"
msgstr ""
#: servers/visual_server.cpp
-#, fuzzy
msgid "Shader Cache Size (MB)"
-msgstr "カメラサイズを変更"
+msgstr "シェーダーキャッシュサイズ (MB)"
diff --git a/editor/translations/ka.po b/editor/translations/ka.po
index f9abaf3fa3..c77eeb9e4e 100644
--- a/editor/translations/ka.po
+++ b/editor/translations/ka.po
@@ -22,7 +22,7 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 3.5.1-dev\n"
-#: core/bind/core_bind.cpp
+#: core/bind/core_bind.cpp main/main.cpp
msgid "Tablet Driver"
msgstr ""
@@ -118,8 +118,8 @@ msgstr "áƒáƒ®áƒáƒšáƒ˜ %s შექმნáƒ"
#: core/bind/core_bind.cpp editor/editor_settings.cpp main/main.cpp
#: modules/gdscript/gdscript_editor.cpp modules/gridmap/grid_map.cpp
#: modules/mono/csharp_script.cpp modules/visual_script/visual_script_nodes.cpp
-#: scene/2d/tile_map.cpp scene/3d/camera.cpp scene/gui/control.cpp
-#: scene/gui/graph_edit.cpp scene/main/viewport.cpp
+#: scene/2d/tile_map.cpp scene/3d/camera.cpp scene/3d/light.cpp
+#: scene/gui/control.cpp scene/gui/graph_edit.cpp scene/main/viewport.cpp
#: scene/resources/dynamic_font.cpp scene/resources/navigation_mesh.cpp
#: scene/resources/primitive_meshes.cpp scene/resources/sky.cpp
#: scene/resources/style_box.cpp scene/resources/texture.cpp
@@ -219,8 +219,7 @@ msgid "Data"
msgstr ""
#: core/io/file_access_network.cpp core/register_core_types.cpp
-#: editor/editor_settings.cpp editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp main/main.cpp
+#: editor/editor_settings.cpp main/main.cpp
#: modules/gdscript/language_server/gdscript_language_server.cpp
msgid "Network"
msgstr ""
@@ -488,9 +487,10 @@ msgstr "ზუმის სáƒáƒ¬áƒ§áƒ˜áƒ¡áƒ–ე დáƒáƒ§áƒ”ნებáƒ"
msgid "Relative"
msgstr ""
-#: core/os/input_event.cpp scene/2d/camera_2d.cpp
-#: scene/3d/interpolated_camera.cpp scene/animation/animation_player.cpp
-#: scene/resources/environment.cpp
+#: core/os/input_event.cpp scene/2d/camera_2d.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/interpolated_camera.cpp
+#: scene/animation/animation_player.cpp scene/resources/environment.cpp
+#: scene/resources/particles_material.cpp
#, fuzzy
msgid "Speed"
msgstr "მáƒáƒ¡áƒ¨áƒ¢áƒáƒ‘ის თáƒáƒœáƒáƒ¤áƒáƒ áƒ“áƒáƒ‘áƒ:"
@@ -539,8 +539,9 @@ msgstr "ცვლილებáƒ"
msgid "Pitch"
msgstr "მáƒáƒ¡áƒ¨áƒ¢áƒáƒ‘ის თáƒáƒœáƒáƒ¤áƒáƒ áƒ“áƒáƒ‘áƒ:"
-#: core/os/input_event.cpp scene/2d/physics_body_2d.cpp
-#: scene/3d/physics_body.cpp
+#: core/os/input_event.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/physics_body_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/3d/physics_body.cpp scene/resources/particles_material.cpp
msgid "Velocity"
msgstr ""
@@ -558,6 +559,8 @@ msgid "Controller Value"
msgstr ""
#: core/project_settings.cpp editor/editor_node.cpp main/main.cpp
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/windows/export/export.cpp
#, fuzzy
msgid "Application"
msgstr "ყველრმáƒáƒœáƒ˜áƒ¨áƒœáƒ•áƒ"
@@ -574,13 +577,16 @@ msgstr ""
#: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp
#: editor/editor_plugin_settings.cpp editor/editor_profiler.cpp
#: editor/project_manager.cpp editor/settings_config_dialog.cpp
-#: modules/gdnative/nativescript/nativescript.cpp scene/2d/area_2d.cpp
-#: scene/3d/area.cpp scene/main/node.cpp
+#: modules/gdnative/nativescript/nativescript.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/osx/export/export.cpp scene/2d/area_2d.cpp scene/3d/area.cpp
+#: scene/main/node.cpp
msgid "Name"
msgstr ""
#: core/project_settings.cpp editor/editor_help.cpp
-#: modules/visual_script/visual_script_nodes.cpp
+#: modules/visual_script/visual_script_nodes.cpp platform/uwp/export/export.cpp
+#: platform/windows/export/export.cpp
#, fuzzy
msgid "Description"
msgstr "áƒáƒ¦áƒ¬áƒ”რáƒ:"
@@ -619,7 +625,7 @@ msgid "Custom User Dir Name"
msgstr ""
#: core/project_settings.cpp editor/animation_track_editor.cpp
-#: editor/editor_audio_buses.cpp servers/audio_server.cpp
+#: editor/editor_audio_buses.cpp main/main.cpp servers/audio_server.cpp
msgid "Audio"
msgstr ""
@@ -773,10 +779,13 @@ msgstr "áƒáƒœáƒ˜áƒ› სიგრძის შეცვლáƒ"
msgid "Sharpen Intensity"
msgstr ""
-#: core/project_settings.cpp editor/editor_node.cpp editor/editor_settings.cpp
-#: editor/plugins/script_editor_plugin.cpp editor/project_export.cpp
-#: main/main.cpp modules/gdscript/gdscript.cpp
-#: modules/visual_script/visual_script.cpp scene/3d/room_manager.cpp
+#: core/project_settings.cpp editor/editor_export.cpp editor/editor_node.cpp
+#: editor/editor_settings.cpp editor/plugins/script_editor_plugin.cpp
+#: editor/project_export.cpp main/main.cpp modules/gdscript/gdscript.cpp
+#: modules/visual_script/visual_script.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp scene/3d/room_manager.cpp
#: scene/main/scene_tree.cpp scene/resources/shape_2d.cpp
#: servers/visual_server.cpp
msgid "Debug"
@@ -1005,6 +1014,7 @@ msgid "Subsurface Scattering"
msgstr ""
#: drivers/gles3/rasterizer_scene_gles3.cpp
+#: editor/import/resource_importer_texture.cpp
#: editor/plugins/spatial_editor_plugin.cpp modules/gltf/gltf_node.cpp
#: modules/gridmap/grid_map.cpp scene/2d/cpu_particles_2d.cpp
#: scene/2d/node_2d.cpp scene/2d/parallax_layer.cpp scene/2d/polygon_2d.cpp
@@ -1328,6 +1338,7 @@ msgid "Editors"
msgstr "დáƒáƒ›áƒáƒ™áƒ˜áƒ“ებულებების შემსწáƒáƒ áƒ”ბელი"
#: editor/animation_track_editor.cpp editor/editor_settings.cpp
+#: editor/import/resource_importer_scene.cpp
#: editor/plugins/animation_player_editor_plugin.cpp editor/scene_tree_dock.cpp
#: scene/2d/animated_sprite.cpp scene/2d/cpu_particles_2d.cpp
#: scene/2d/sprite.cpp scene/3d/cpu_particles.cpp scene/3d/sprite_3d.cpp
@@ -1562,14 +1573,14 @@ msgstr "áƒáƒœáƒ˜áƒ›áƒáƒªáƒ˜áƒ˜áƒ¡ ნáƒáƒ‘იჯის ღირებულá
msgid "Seconds"
msgstr ""
-#: editor/animation_track_editor.cpp
+#: editor/animation_track_editor.cpp editor/import/resource_importer_scene.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp main/main.cpp
#: scene/resources/texture.cpp
msgid "FPS"
msgstr ""
#: editor/animation_track_editor.cpp editor/editor_plugin_settings.cpp
-#: editor/editor_resource_picker.cpp
+#: editor/editor_resource_picker.cpp editor/import/resource_importer_wav.cpp
#: editor/plugins/polygon_2d_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
@@ -2565,7 +2576,9 @@ msgid "Remove Autoload"
msgstr ""
#: editor/editor_autoload_settings.cpp editor/editor_plugin_settings.cpp
-#: modules/gdscript/gdscript.cpp scene/2d/polygon_2d.cpp scene/3d/area.cpp
+#: modules/gdscript/gdscript.cpp platform/android/export/export_plugin.cpp
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#: scene/2d/polygon_2d.cpp scene/3d/area.cpp scene/3d/physics_joint.cpp
#: scene/3d/reflection_probe.cpp scene/main/canvas_layer.cpp
#: scene/resources/material.cpp servers/visual_server.cpp
msgid "Enable"
@@ -2718,6 +2731,58 @@ msgstr ""
#: editor/editor_export.cpp platform/android/export/export_plugin.cpp
#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Custom Template"
+msgstr "მáƒáƒœáƒ˜áƒ¨áƒ•ნის მრუდის ცვლილებáƒ"
+
+#: editor/editor_export.cpp editor/project_export.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp
+msgid "Release"
+msgstr ""
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Binary Format"
+msgstr "áƒáƒœáƒ˜áƒ›áƒáƒªáƒ˜áƒ˜áƒ¡ გáƒáƒ áƒ“áƒáƒ¥áƒ›áƒœáƒ˜áƒ¡ ცვლილებáƒ"
+
+#: editor/editor_export.cpp
+msgid "64 Bits"
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Embed PCK"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Texture Format"
+msgstr "მáƒáƒ¡áƒ¨áƒ¢áƒáƒ‘ის თáƒáƒœáƒáƒ¤áƒáƒ áƒ“áƒáƒ‘áƒ:"
+
+#: editor/editor_export.cpp
+msgid "BPTC"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "S3TC"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "ETC"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "ETC2"
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "No BPTC Fallbacks"
+msgstr ""
+
+#: editor/editor_export.cpp platform/android/export/export_plugin.cpp
+#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
msgid "Custom debug template not found."
msgstr ""
@@ -2901,6 +2966,7 @@ msgid "Make Current"
msgstr "ფუნქციის შექმნáƒ"
#: editor/editor_feature_profile.cpp editor/editor_node.cpp
+#: editor/import/resource_importer_scene.cpp
#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
msgid "Import"
msgstr ""
@@ -3030,8 +3096,11 @@ msgstr "წáƒáƒ áƒ›áƒáƒ¢áƒ”ბáƒ!"
msgid "Display Mode"
msgstr "გზრკვáƒáƒœáƒ«áƒáƒ›áƒ“ე:"
-#: editor/editor_file_dialog.cpp main/main.cpp modules/csg/csg_shape.cpp
-#: modules/visual_script/visual_script_nodes.cpp
+#: editor/editor_file_dialog.cpp
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+#: editor/import/resource_importer_wav.cpp main/main.cpp
+#: modules/csg/csg_shape.cpp modules/visual_script/visual_script_nodes.cpp
#: modules/visual_script/visual_script_yield_nodes.cpp scene/2d/light_2d.cpp
#: scene/2d/physics_body_2d.cpp scene/2d/tile_map.cpp
#: scene/3d/baked_lightmap.cpp scene/3d/light.cpp scene/3d/physics_body.cpp
@@ -3171,7 +3240,9 @@ msgstr ""
msgid "Reimport Missing Imported Files"
msgstr ""
-#: editor/editor_help.cpp
+#: editor/editor_help.cpp scene/2d/camera_2d.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/resources/dynamic_font.cpp
+#: scene/resources/style_box.cpp
msgid "Top"
msgstr ""
@@ -3223,6 +3294,7 @@ msgid "Fonts"
msgstr ""
#: editor/editor_help.cpp editor/plugins/theme_editor_plugin.cpp
+#: platform/iphone/export/export.cpp
msgid "Icons"
msgstr ""
@@ -3391,7 +3463,9 @@ msgstr ""
msgid "Pin value [Disabled because '%s' is editor-only]"
msgstr ""
-#: editor/editor_inspector.cpp editor/scene_tree_dock.cpp
+#: editor/editor_inspector.cpp
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+#: editor/scene_tree_dock.cpp
#: modules/visual_script/visual_script_func_nodes.cpp
#: modules/visual_script/visual_script_nodes.cpp
#: modules/visual_script/visual_script_property_selector.cpp
@@ -3707,6 +3781,14 @@ msgid "Quick Open Script..."
msgstr ""
#: editor/editor_node.cpp
+msgid "Save & Reload"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Save changes to '%s' before reloading?"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "Save & Close"
msgstr ""
@@ -3818,6 +3900,10 @@ msgid "Open Project Manager?"
msgstr ""
#: editor/editor_node.cpp
+msgid "Save changes to the following scene(s) before reloading?"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "Save & Quit"
msgstr ""
@@ -4065,8 +4151,8 @@ msgstr "áƒáƒ®áƒáƒšáƒ˜ %s შექმნáƒ"
#: editor/editor_node.cpp
#, fuzzy
-msgid "Translate Properties"
-msgstr "áƒáƒœáƒ˜áƒ›áƒáƒªáƒ˜áƒ˜áƒ¡ . პáƒáƒ áƒáƒ›áƒ”ტრები."
+msgid "Localize Settings"
+msgstr "გáƒáƒ“áƒáƒ¡áƒ•ლები"
#: editor/editor_node.cpp
#, fuzzy
@@ -4082,9 +4168,8 @@ msgid "Inspector"
msgstr ""
#: editor/editor_node.cpp
-#, fuzzy
-msgid "Capitalize Properties"
-msgstr "áƒáƒœáƒ˜áƒ›áƒáƒªáƒ˜áƒ˜áƒ¡ . პáƒáƒ áƒáƒ›áƒ”ტრები."
+msgid "Default Property Name Style"
+msgstr ""
#: editor/editor_node.cpp
msgid "Default Float Step"
@@ -4653,7 +4738,9 @@ msgstr ""
msgid "Update"
msgstr ""
-#: editor/editor_plugin_settings.cpp
+#: editor/editor_plugin_settings.cpp platform/android/export/export_plugin.cpp
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp
msgid "Version"
msgstr ""
@@ -5634,7 +5721,7 @@ msgstr ""
msgid "Rect Custom Position"
msgstr "შექმნáƒ"
-#: editor/editor_settings.cpp
+#: editor/editor_settings.cpp platform/android/export/export_plugin.cpp
msgid "Screen"
msgstr ""
@@ -5659,6 +5746,19 @@ msgid "Editor SSL Certificates"
msgstr ""
#: editor/editor_settings.cpp
+msgid "HTTP Proxy"
+msgstr ""
+
+#: editor/editor_settings.cpp
+msgid "Host"
+msgstr ""
+
+#: editor/editor_settings.cpp editor/fileserver/editor_file_server.cpp
+#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp
+msgid "Port"
+msgstr ""
+
+#: editor/editor_settings.cpp
msgid "Project Manager"
msgstr ""
@@ -5699,7 +5799,8 @@ msgstr ""
msgid "String Color"
msgstr ""
-#: editor/editor_settings.cpp
+#: editor/editor_settings.cpp platform/javascript/export/export.cpp
+#: platform/uwp/export/export.cpp
#, fuzzy
msgid "Background Color"
msgstr "áƒáƒ áƒáƒ¡áƒ¬áƒáƒ áƒ˜ ფáƒáƒœáƒ¢áƒ˜áƒ¡ ზáƒáƒ›áƒ."
@@ -5870,22 +5971,6 @@ msgid "Starting the download..."
msgstr ""
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "HTTP Proxy"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Host"
-msgstr ""
-
-#: editor/export_template_manager.cpp editor/fileserver/editor_file_server.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp main/main.cpp
-#: modules/mono/mono_gd/gd_mono.cpp
-msgid "Port"
-msgstr ""
-
-#: editor/export_template_manager.cpp
#, fuzzy
msgid "Error requesting URL:"
msgstr "ჩáƒáƒ¢áƒ•ირთვის შეცდáƒáƒ›áƒ:"
@@ -6134,6 +6219,7 @@ msgstr ""
#: editor/fileserver/editor_file_server.cpp
#: editor/plugins/version_control_editor_plugin.cpp
+#: platform/uwp/export/export.cpp platform/windows/export/export.cpp
msgid "Password"
msgstr ""
@@ -6519,6 +6605,113 @@ msgstr ""
msgid "Use Ambient"
msgstr ""
+#: editor/import/resource_importer_bitmask.cpp
+#, fuzzy
+msgid "Create From"
+msgstr "შექმნáƒ"
+
+#: editor/import/resource_importer_bitmask.cpp
+#: servers/audio/effects/audio_effect_compressor.cpp
+msgid "Threshold"
+msgstr ""
+
+#: editor/import/resource_importer_csv_translation.cpp
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_scene.cpp
+#: editor/import/resource_importer_texture.cpp
+#: editor/import/resource_importer_wav.cpp scene/3d/gi_probe.cpp
+#, fuzzy
+msgid "Compress"
+msgstr "კáƒáƒ›áƒžáƒáƒœáƒ”ნტები"
+
+#: editor/import/resource_importer_csv_translation.cpp
+msgid "Delimiter"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+msgid "No BPTC If RGB"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/sprite_3d.cpp
+#: scene/resources/material.cpp scene/resources/particles_material.cpp
+#: scene/resources/texture.cpp
+msgid "Flags"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/animation/tween.cpp
+#: scene/resources/texture.cpp
+msgid "Repeat"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/2d/light_2d.cpp
+#: scene/gui/control.cpp scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Filter"
+msgstr "áƒáƒœáƒ˜áƒ› სიგრძის შეცვლáƒ"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Mipmaps"
+msgstr "სიგნáƒáƒšáƒ”ბი"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+msgid "Anisotropic"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+msgid "sRGB"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+msgid "Slices"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
+#: scene/resources/style_box.cpp
+#, fuzzy
+msgid "Horizontal"
+msgstr "კვáƒáƒœáƒ«áƒ—áƒáƒœ დáƒáƒ™áƒáƒ•შირებáƒ:"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
+#: scene/resources/style_box.cpp
+msgid "Vertical"
+msgstr ""
+
+#: editor/import/resource_importer_obj.cpp
+#, fuzzy
+msgid "Generate Tangents"
+msgstr "შექმნáƒ"
+
+#: editor/import/resource_importer_obj.cpp
+#, fuzzy
+msgid "Scale Mesh"
+msgstr "მáƒáƒ¡áƒ¨áƒ¢áƒáƒ‘ის თáƒáƒœáƒáƒ¤áƒáƒ áƒ“áƒáƒ‘áƒ:"
+
+#: editor/import/resource_importer_obj.cpp
+msgid "Offset Mesh"
+msgstr ""
+
+#: editor/import/resource_importer_obj.cpp
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Octahedral Compression"
+msgstr "ინტერპáƒáƒšáƒáƒªáƒ˜áƒ˜áƒ¡ რეჟიმი"
+
+#: editor/import/resource_importer_obj.cpp
+msgid "Optimize Mesh Flags"
+msgstr ""
+
#: editor/import/resource_importer_scene.cpp
msgid "Import as Single Scene"
msgstr ""
@@ -6559,6 +6752,148 @@ msgstr ""
msgid "Import as Multiple Scenes+Materials"
msgstr ""
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Nodes"
+msgstr "áƒáƒœáƒ˜áƒ›áƒáƒªáƒ˜áƒ˜áƒ¡ გáƒáƒ¡áƒáƒ¦áƒ”ბების áƒáƒ¡áƒšáƒ˜áƒ¡ შექმნáƒ"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Root Type"
+msgstr "%s ტიპის ცვლილებáƒ"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Root Name"
+msgstr "მáƒáƒ¨áƒáƒ áƒ”ბáƒ"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Root Scale"
+msgstr "მáƒáƒ¡áƒ¨áƒ¢áƒáƒ‘ის თáƒáƒœáƒáƒ¤áƒáƒ áƒ“áƒáƒ‘áƒ:"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Custom Script"
+msgstr "áƒáƒœáƒ˜áƒ›áƒáƒªáƒ˜áƒ˜áƒ¡ გáƒáƒ¡áƒáƒ¦áƒ”ბების áƒáƒ¡áƒšáƒ˜áƒ¡ შექმნáƒ"
+
+#: editor/import/resource_importer_scene.cpp scene/resources/texture.cpp
+msgid "Storage"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Use Legacy Names"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+msgid "Materials"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Location"
+msgstr "ყველრმáƒáƒœáƒ˜áƒ¨áƒœáƒ•áƒ"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Keep On Reimport"
+msgstr "მáƒáƒ¡áƒ¨áƒ¢áƒáƒ‘ის თáƒáƒœáƒáƒ¤áƒáƒ áƒ“áƒáƒ‘áƒ:"
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+msgid "Meshes"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Ensure Tangents"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Light Baking"
+msgstr "წრფივი"
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Lightmap Texel Size"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+msgid "Skins"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Use Named Skins"
+msgstr "სიგნáƒáƒšáƒ”ბი"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "External Files"
+msgstr "გáƒáƒ®áƒ¡áƒœáƒ˜áƒšáƒ˜"
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Store In Subdir"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Filter Script"
+msgstr "áƒáƒœáƒ˜áƒ› სიგრძის შეცვლáƒ"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Keep Custom Tracks"
+msgstr "áƒáƒœáƒ˜áƒ›áƒáƒªáƒ˜áƒ˜áƒ¡ გáƒáƒ áƒ“áƒáƒ¥áƒ›áƒœáƒ˜áƒ¡ ცვლილებáƒ"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Optimizer"
+msgstr "áƒáƒžáƒ¢áƒ˜áƒ›áƒ˜áƒ–áƒáƒªáƒ˜áƒ"
+
+#: editor/import/resource_importer_scene.cpp main/main.cpp
+#: modules/mono/mono_gd/gd_mono.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp scene/2d/camera_2d.cpp scene/2d/light_2d.cpp
+#: scene/2d/navigation_polygon.cpp scene/2d/ray_cast_2d.cpp scene/2d/sprite.cpp
+#: scene/2d/y_sort.cpp scene/3d/audio_stream_player_3d.cpp
+#: scene/3d/baked_lightmap.cpp scene/3d/interpolated_camera.cpp
+#: scene/3d/light.cpp scene/3d/navigation_mesh_instance.cpp
+#: scene/3d/physics_joint.cpp scene/3d/ray_cast.cpp scene/3d/sprite_3d.cpp
+#: scene/gui/graph_edit.cpp scene/gui/rich_text_label.cpp
+#: scene/resources/curve.cpp scene/resources/environment.cpp
+#: scene/resources/material.cpp
+msgid "Enabled"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Max Linear Error"
+msgstr "მáƒáƒ¥áƒ¡áƒ˜áƒ›áƒ£áƒ›áƒ˜ წრფივი შეცდáƒáƒ›áƒ:"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Max Angular Error"
+msgstr "მáƒáƒ¥áƒ¡áƒ˜áƒ›áƒ£áƒ›áƒ˜ წრიული შეცდáƒáƒ›áƒ:"
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Max Angle"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Remove Unused Tracks"
+msgstr "áƒáƒœáƒ˜áƒ›áƒáƒªáƒ˜áƒ˜áƒ¡ თრექის წáƒáƒ¨áƒšáƒ"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Clips"
+msgstr "áƒáƒœáƒ˜áƒ›áƒáƒªáƒ˜áƒ˜áƒ¡ მáƒáƒœáƒáƒ™áƒ•ეთები:"
+
+#: editor/import/resource_importer_scene.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/particles_2d.cpp scene/3d/area.cpp scene/3d/cpu_particles.cpp
+#: scene/3d/particles.cpp scene/resources/environment.cpp
+msgid "Amount"
+msgstr ""
+
#: editor/import/resource_importer_scene.cpp
#: editor/plugins/mesh_library_editor_plugin.cpp
msgid "Import Scene"
@@ -6600,12 +6935,145 @@ msgstr ""
msgid "Saving..."
msgstr ""
+#: editor/import/resource_importer_texture.cpp scene/resources/texture.cpp
+msgid "Lossy Quality"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "HDR Mode"
+msgstr "მáƒáƒ¡áƒ¨áƒ¢áƒáƒ‘ის თáƒáƒœáƒáƒ¤áƒáƒ áƒ“áƒáƒ‘áƒ:"
+
+#: editor/import/resource_importer_texture.cpp
+msgid "BPTC LDR"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/mesh_instance_2d.cpp scene/2d/multimesh_instance_2d.cpp
+#: scene/2d/particles_2d.cpp scene/2d/sprite.cpp scene/resources/style_box.cpp
+msgid "Normal Map"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Process"
+msgstr "მáƒáƒ¡áƒ¨áƒ¢áƒáƒ‘ის თáƒáƒœáƒáƒ¤áƒáƒ áƒ“áƒáƒ‘áƒ:"
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Fix Alpha Border"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Premult Alpha"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Hdr As Srgb"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Invert Color"
+msgstr "%s ტიპის ცვლილებáƒ"
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Normal Map Invert Y"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
+#: scene/audio/audio_stream_player.cpp scene/gui/video_player.cpp
+msgid "Stream"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Size Limit"
+msgstr "გზრკვáƒáƒœáƒ«áƒáƒ›áƒ“ე:"
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Detect 3D"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "SVG"
+msgstr ""
+
#: editor/import/resource_importer_texture.cpp
msgid ""
"Warning, no suitable PC VRAM compression enabled in Project Settings. This "
"texture will not display correctly on PC."
msgstr ""
+#: editor/import/resource_importer_texture_atlas.cpp
+#, fuzzy
+msgid "Atlas File"
+msgstr "áƒáƒœáƒ˜áƒ› სიგრძის შეცვლáƒ"
+
+#: editor/import/resource_importer_texture_atlas.cpp
+#, fuzzy
+msgid "Import Mode"
+msgstr "გზრკვáƒáƒœáƒ«áƒáƒ›áƒ“ე:"
+
+#: editor/import/resource_importer_texture_atlas.cpp
+#, fuzzy
+msgid "Crop To Region"
+msgstr "ინტერპáƒáƒšáƒáƒªáƒ˜áƒ˜áƒ¡ რეჟიმი"
+
+#: editor/import/resource_importer_texture_atlas.cpp
+msgid "Trim Alpha Border From Region"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp scene/2d/physics_body_2d.cpp
+msgid "Force"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+msgid "8 Bit"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp main/main.cpp
+#: modules/mono/editor/csharp_project.cpp modules/mono/mono_gd/gd_mono.cpp
+msgid "Mono"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+#, fuzzy
+msgid "Max Rate"
+msgstr "ნáƒáƒ‘იჯი (წáƒáƒ›áƒ˜):"
+
+#: editor/import/resource_importer_wav.cpp
+#, fuzzy
+msgid "Max Rate Hz"
+msgstr "ნáƒáƒ‘იჯი (წáƒáƒ›áƒ˜):"
+
+#: editor/import/resource_importer_wav.cpp
+msgid "Trim"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+#, fuzzy
+msgid "Normalize"
+msgstr "მáƒáƒœáƒ˜áƒ¨áƒ•ნის მáƒáƒ¨áƒáƒ áƒ”ბáƒ"
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+#, fuzzy
+msgid "Loop Mode"
+msgstr "მáƒáƒ¡áƒ¨áƒ¢áƒáƒ‘ის თáƒáƒœáƒáƒ¤áƒáƒ áƒ“áƒáƒ‘áƒ:"
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+#, fuzzy
+msgid "Loop Begin"
+msgstr "მáƒáƒ¡áƒ¨áƒ¢áƒáƒ‘ის თáƒáƒœáƒáƒ¤áƒáƒ áƒ“áƒáƒ‘áƒ:"
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+#, fuzzy
+msgid "Loop End"
+msgstr "მáƒáƒ¡áƒ¨áƒ¢áƒáƒ‘ის თáƒáƒœáƒáƒ¤áƒáƒ áƒ“áƒáƒ‘áƒ:"
+
#: editor/import_defaults_editor.cpp
#, fuzzy
msgid "Select Importer"
@@ -6676,6 +7144,28 @@ msgstr ""
#: editor/inspector_dock.cpp
#, fuzzy
+msgid "Property Name Style"
+msgstr "áƒáƒ‘იექტზე დáƒáƒ™áƒ•ირვებáƒ"
+
+#: editor/inspector_dock.cpp scene/gui/color_picker.cpp
+msgid "Raw"
+msgstr ""
+
+#: editor/inspector_dock.cpp
+#, fuzzy
+msgid "Capitalized"
+msgstr "áƒáƒœáƒ˜áƒ›áƒáƒªáƒ˜áƒ˜áƒ¡ . პáƒáƒ áƒáƒ›áƒ”ტრები."
+
+#: editor/inspector_dock.cpp
+msgid "Localized"
+msgstr ""
+
+#: editor/inspector_dock.cpp
+msgid "Localization not available for current language."
+msgstr ""
+
+#: editor/inspector_dock.cpp
+#, fuzzy
msgid "Copy Properties"
msgstr "áƒáƒœáƒ˜áƒ›áƒáƒªáƒ˜áƒ˜áƒ¡ . პáƒáƒ áƒáƒ›áƒ”ტრები."
@@ -7740,18 +8230,23 @@ msgid "License (Z-A)"
msgstr "ლიცენზიáƒ"
#: editor/plugins/asset_library_editor_plugin.cpp
+msgctxt "Pagination"
msgid "First"
msgstr ""
-#: editor/plugins/asset_library_editor_plugin.cpp scene/gui/control.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgctxt "Pagination"
msgid "Previous"
-msgstr ""
+msgstr "წინáƒáƒ›áƒ“ებáƒáƒ áƒ” ნáƒáƒ‘იჯზე გáƒáƒ“áƒáƒ¡áƒ•ლáƒ"
-#: editor/plugins/asset_library_editor_plugin.cpp scene/gui/control.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgctxt "Pagination"
msgid "Next"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
+msgctxt "Pagination"
msgid "Last"
msgstr ""
@@ -7993,19 +8488,19 @@ msgid ""
"margins."
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Top Left"
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Top Right"
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Bottom Right"
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Bottom Left"
msgstr ""
@@ -8734,6 +9229,18 @@ msgstr ""
msgid "Gradient Edited"
msgstr ""
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+msgid "Swap GradientTexture2D Fill Points"
+msgstr ""
+
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+msgid "Swap Gradient Fill Points"
+msgstr ""
+
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+msgid "Toggle Grid Snap"
+msgstr ""
+
#: editor/plugins/item_list_editor_plugin.cpp
msgid "Item %d"
msgstr ""
@@ -8953,8 +9460,8 @@ msgid ""
"%s"
msgstr ""
-#: editor/plugins/mesh_library_editor_plugin.cpp modules/gridmap/grid_map.cpp
-msgid "Mesh Library"
+#: editor/plugins/mesh_library_editor_plugin.cpp
+msgid "MeshLibrary"
msgstr ""
#: editor/plugins/mesh_library_editor_plugin.cpp
@@ -9954,8 +10461,8 @@ msgstr "კვáƒáƒœáƒ«áƒ—áƒáƒœ დáƒáƒ™áƒáƒ•შირებáƒ:"
msgid "Source"
msgstr "რესურსი"
-#: editor/plugins/script_text_editor.cpp scene/3d/interpolated_camera.cpp
-#: scene/animation/skeleton_ik.cpp
+#: editor/plugins/script_text_editor.cpp platform/uwp/export/export.cpp
+#: scene/3d/interpolated_camera.cpp scene/animation/skeleton_ik.cpp
msgid "Target"
msgstr ""
@@ -10942,7 +11449,9 @@ msgstr ""
#: editor/plugins/sprite_frames_editor_plugin.cpp
#: modules/gltf/gltf_animation.cpp modules/minimp3/audio_stream_mp3.cpp
-#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp scene/2d/path_2d.cpp
+#: modules/minimp3/resource_importer_mp3.cpp
+#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp
+#: modules/stb_vorbis/resource_importer_ogg_vorbis.cpp scene/2d/path_2d.cpp
#: scene/3d/path.cpp scene/resources/animation.cpp scene/resources/material.cpp
msgid "Loop"
msgstr ""
@@ -11849,8 +12358,9 @@ msgstr ""
msgid "Priority"
msgstr ""
-#: editor/plugins/tile_set_editor_plugin.cpp main/main.cpp scene/gui/button.cpp
-#: scene/gui/item_list.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp main/main.cpp
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#: scene/gui/button.cpp scene/gui/item_list.cpp
msgid "Icon"
msgstr ""
@@ -13197,10 +13707,6 @@ msgid ""
msgstr ""
#: editor/project_export.cpp
-msgid "Release"
-msgstr ""
-
-#: editor/project_export.cpp
msgid "Exporting All"
msgstr ""
@@ -15008,6 +15514,7 @@ msgid "Change AudioStreamPlayer3D Emission Angle"
msgstr ""
#: editor/spatial_editor_gizmos.cpp modules/gltf/gltf_node.cpp
+#: platform/osx/export/export.cpp
msgid "Camera"
msgstr ""
@@ -15278,7 +15785,8 @@ msgstr ""
msgid "Use Nvidia Rect Flicker Workaround"
msgstr ""
-#: main/main.cpp platform/uwp/os_uwp.cpp
+#: main/main.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp platform/uwp/os_uwp.cpp
#, fuzzy
msgid "Display"
msgstr "ყველáƒáƒ¡ ჩáƒáƒœáƒáƒªáƒ•ლებáƒ"
@@ -15335,18 +15843,6 @@ msgstr ""
msgid "Allowed"
msgstr ""
-#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp scene/2d/camera_2d.cpp
-#: scene/2d/light_2d.cpp scene/2d/navigation_polygon.cpp
-#: scene/2d/ray_cast_2d.cpp scene/2d/sprite.cpp scene/2d/y_sort.cpp
-#: scene/3d/audio_stream_player_3d.cpp scene/3d/baked_lightmap.cpp
-#: scene/3d/interpolated_camera.cpp scene/3d/light.cpp
-#: scene/3d/navigation_mesh_instance.cpp scene/3d/ray_cast.cpp
-#: scene/3d/sprite_3d.cpp scene/gui/graph_edit.cpp
-#: scene/gui/rich_text_label.cpp scene/resources/curve.cpp
-#: scene/resources/environment.cpp
-msgid "Enabled"
-msgstr ""
-
#: main/main.cpp
msgid "Intended Usage"
msgstr ""
@@ -15376,13 +15872,14 @@ msgstr ""
msgid "Handheld"
msgstr ""
-#: main/main.cpp
+#: main/main.cpp platform/javascript/export/export.cpp
+#: platform/uwp/export/export.cpp
#, fuzzy
msgid "Orientation"
msgstr "áƒáƒœáƒ˜áƒ›áƒáƒªáƒ˜áƒ˜áƒ¡ áƒáƒžáƒ¢áƒ˜áƒ›áƒ˜áƒ–áƒáƒªáƒ˜áƒ"
#: main/main.cpp scene/gui/scroll_container.cpp scene/gui/text_edit.cpp
-#: scene/main/scene_tree.cpp
+#: scene/main/scene_tree.cpp scene/register_scene_types.cpp
msgid "Common"
msgstr ""
@@ -15422,7 +15919,7 @@ msgstr ""
#: main/main.cpp
#, fuzzy
-msgid "Frame Delay (msec)"
+msgid "Frame Delay Msec"
msgstr "დრრ(წáƒáƒ›áƒ˜): "
#: main/main.cpp
@@ -15543,11 +16040,6 @@ msgstr ""
msgid "Tooltip Position Offset"
msgstr ""
-#: main/main.cpp modules/mono/editor/csharp_project.cpp
-#: modules/mono/mono_gd/gd_mono.cpp
-msgid "Mono"
-msgstr ""
-
#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp
msgid "Debugger Agent"
msgstr ""
@@ -16091,7 +16583,7 @@ msgstr ""
msgid "Intensity"
msgstr ""
-#: modules/gltf/gltf_light.cpp scene/2d/light_2d.cpp
+#: modules/gltf/gltf_light.cpp scene/2d/light_2d.cpp scene/3d/light.cpp
#, fuzzy
msgid "Range"
msgstr "ცვლილებáƒ"
@@ -16227,11 +16719,6 @@ msgstr ""
msgid "Use Named Skin Binds"
msgstr ""
-#: modules/gltf/gltf_state.cpp scene/3d/physics_joint.cpp
-#, fuzzy
-msgid "Nodes"
-msgstr "áƒáƒœáƒ˜áƒ›áƒáƒªáƒ˜áƒ˜áƒ¡ გáƒáƒ¡áƒáƒ¦áƒ”ბების áƒáƒ¡áƒšáƒ˜áƒ¡ შექმნáƒ"
-
#: modules/gltf/gltf_state.cpp
msgid "Buffer Views"
msgstr ""
@@ -16241,14 +16728,6 @@ msgid "Accessors"
msgstr ""
#: modules/gltf/gltf_state.cpp
-msgid "Meshes"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp
-msgid "Materials"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp
#, fuzzy
msgid "Scene Name"
msgstr "შექმნáƒ"
@@ -16265,15 +16744,11 @@ msgstr "კვáƒáƒœáƒ«áƒ—áƒáƒœ დáƒáƒ™áƒáƒ•შირებáƒ:"
msgid "Textures"
msgstr "მáƒáƒœáƒ˜áƒ¨áƒ•ნის მáƒáƒ¨áƒáƒ áƒ”ბáƒ"
-#: modules/gltf/gltf_state.cpp
+#: modules/gltf/gltf_state.cpp platform/uwp/export/export.cpp
msgid "Images"
msgstr ""
#: modules/gltf/gltf_state.cpp
-msgid "Skins"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp
msgid "Cameras"
msgstr ""
@@ -16306,10 +16781,14 @@ msgid "Src Image"
msgstr ""
#: modules/gridmap/grid_map.cpp
-msgid "Physics Material"
+msgid "Mesh Library"
msgstr ""
#: modules/gridmap/grid_map.cpp
+msgid "Physics Material"
+msgstr ""
+
+#: modules/gridmap/grid_map.cpp scene/3d/visual_instance.cpp
msgid "Use In Baked Light"
msgstr ""
@@ -16340,6 +16819,7 @@ msgstr "წáƒáƒ¨áƒšáƒ"
#: modules/gridmap/grid_map.cpp scene/2d/collision_object_2d.cpp
#: scene/2d/tile_map.cpp scene/3d/collision_object.cpp scene/3d/soft_body.cpp
+#: scene/resources/material.cpp
msgid "Mask"
msgstr ""
@@ -16525,7 +17005,9 @@ msgid "Ultra Quality Ray Count"
msgstr ""
#: modules/minimp3/audio_stream_mp3.cpp
+#: modules/minimp3/resource_importer_mp3.cpp
#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp
+#: modules/stb_vorbis/resource_importer_ogg_vorbis.cpp
#, fuzzy
msgid "Loop Offset"
msgstr "მáƒáƒ¡áƒ¨áƒ¢áƒáƒ‘ის თáƒáƒœáƒáƒ¤áƒáƒ áƒ“áƒáƒ‘áƒ:"
@@ -17603,6 +18085,179 @@ msgid "The package must have at least one '.' separator."
msgstr ""
#: platform/android/export/export_plugin.cpp
+msgid "Use Custom Build"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Export Format"
+msgstr "áƒáƒœáƒ˜áƒ›áƒáƒªáƒ˜áƒ˜áƒ¡ გáƒáƒ áƒ“áƒáƒ¥áƒ›áƒœáƒ˜áƒ¡ ცვლილებáƒ"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Keystore"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Debug User"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+msgid "Debug Password"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Release User"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Release Password"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "One Click Deploy"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Clear Previous Install"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp scene/resources/shader.cpp
+msgid "Code"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Min SDK"
+msgstr "დáƒáƒ›áƒáƒ™áƒ˜áƒ“ებულებების შემსწáƒáƒ áƒ”ბელი"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Target SDK"
+msgstr "წáƒáƒ¨áƒšáƒ"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+msgid "Package"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Unique Name"
+msgstr "მáƒáƒ¨áƒáƒ áƒ”ბáƒ"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Signed"
+msgstr "სიგნáƒáƒšáƒ”ბი"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Classify As Game"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Retain Data On Uninstall"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Exclude From Recents"
+msgstr "წáƒáƒ¨áƒšáƒ"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Graphics"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "OpenGL Debug"
+msgstr "გáƒáƒ®áƒ¡áƒœáƒ˜áƒšáƒ˜"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "XR Features"
+msgstr "მáƒáƒœáƒ˜áƒ¨áƒ•ნის მáƒáƒ¨áƒáƒ áƒ”ბáƒ"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "XR Mode"
+msgstr "მáƒáƒ¡áƒ¨áƒ¢áƒáƒ‘ის თáƒáƒœáƒáƒ¤áƒáƒ áƒ“áƒáƒ‘áƒ:"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Hand Tracking"
+msgstr "áƒáƒ‘იექტზე დáƒáƒ™áƒ•ირვებáƒ"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Hand Tracking Frequency"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Passthrough"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Immersive Mode"
+msgstr "მáƒáƒ¡áƒ¨áƒ¢áƒáƒ‘ის თáƒáƒœáƒáƒ¤áƒáƒ áƒ“áƒáƒ‘áƒ:"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Support Small"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Support Normal"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Support Large"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Support Xlarge"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "User Data Backup"
+msgstr "პრáƒáƒ”ქტის დáƒáƒ›áƒ¤áƒ£áƒ«áƒœáƒ”ბლები"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Allow"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Command Line"
+msgstr "ცვლილებáƒ"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Extra Args"
+msgstr "დáƒáƒ›áƒáƒ¢áƒ”ბითი გáƒáƒ›áƒáƒ«áƒáƒ®áƒ”ბის áƒáƒ áƒ’უმენტები:"
+
+#: platform/android/export/export_plugin.cpp
+msgid "APK Expansion"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Salt"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Public Key"
+msgstr "áƒáƒœáƒ˜áƒ›áƒáƒªáƒ˜áƒ˜áƒ¡ გáƒáƒ¡áƒáƒ¦áƒ”ბების áƒáƒ¡áƒšáƒ˜áƒ¡ შექმნáƒ"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Permissions"
+msgstr "გáƒáƒ áƒ“áƒáƒ¡áƒ•ლáƒ"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Custom Permissions"
+msgstr "შექმნáƒ"
+
+#: platform/android/export/export_plugin.cpp
msgid "Select device from the list"
msgstr ""
@@ -17893,6 +18548,174 @@ msgid "The character '%s' is not allowed in Identifier."
msgstr ""
#: platform/iphone/export/export.cpp
+msgid "App Store Team ID"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Provisioning Profile UUID Debug"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Code Sign Identity Debug"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Export Method Debug"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Provisioning Profile UUID Release"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Code Sign Identity Release"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Export Method Release"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Targeted Device Family"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Info"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Identifier"
+msgstr "áƒáƒ áƒáƒ¡áƒ¬áƒáƒ áƒ˜ ფáƒáƒœáƒ¢áƒ˜áƒ¡ ზáƒáƒ›áƒ."
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Signature"
+msgstr "სიგნáƒáƒšáƒ”ბი"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Short Version"
+msgstr "ძებნáƒ:"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/windows/export/export.cpp
+msgid "Copyright"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Capabilities"
+msgstr "áƒáƒœáƒ˜áƒ›áƒáƒªáƒ˜áƒ˜áƒ¡ . პáƒáƒ áƒáƒ›áƒ”ტრები."
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Access Wi-Fi"
+msgstr "წáƒáƒ áƒ›áƒáƒ¢áƒ”ბáƒ!"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Push Notifications"
+msgstr "მუდმივი"
+
+#: platform/iphone/export/export.cpp scene/3d/baked_lightmap.cpp
+#, fuzzy
+msgid "User Data"
+msgstr "პრáƒáƒ”ქტის დáƒáƒ›áƒ¤áƒ£áƒ«áƒœáƒ”ბლები"
+
+#: platform/iphone/export/export.cpp
+msgid "Accessible From Files App"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Accessible From Itunes Sharing"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Privacy"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Camera Usage Description"
+msgstr "áƒáƒ¦áƒ¬áƒ”რáƒ:"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Microphone Usage Description"
+msgstr "áƒáƒ¦áƒ¬áƒ”რáƒ:"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Photolibrary Usage Description"
+msgstr "áƒáƒ¦áƒ¬áƒ”რáƒ:"
+
+#: platform/iphone/export/export.cpp
+msgid "iPhone 120 X 120"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPhone 180 X 180"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 76 X 76"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 152 X 152"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 167 X 167"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "App Store 1024 X 1024"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Spotlight 40 X 40"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Spotlight 80 X 80"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Storyboard"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Use Launch Screen Storyboard"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Image Scale Mode"
+msgstr "მáƒáƒ¡áƒ¨áƒ¢áƒáƒ‘ის თáƒáƒœáƒáƒ¤áƒáƒ áƒ“áƒáƒ‘áƒ:"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Custom Image @2x"
+msgstr "áƒáƒœáƒ˜áƒ›áƒáƒªáƒ˜áƒ˜áƒ¡ გáƒáƒ¡áƒáƒ¦áƒ”ბების áƒáƒ¡áƒšáƒ˜áƒ¡ შექმნáƒ"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Custom Image @3x"
+msgstr "áƒáƒœáƒ˜áƒ›áƒáƒªáƒ˜áƒ˜áƒ¡ გáƒáƒ¡áƒáƒ¦áƒ”ბების áƒáƒ¡áƒšáƒ˜áƒ¡ შექმნáƒ"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Use Custom BG Color"
+msgstr "áƒáƒœáƒ˜áƒ›áƒáƒªáƒ˜áƒ˜áƒ¡ გáƒáƒ¡áƒáƒ¦áƒ”ბების áƒáƒ¡áƒšáƒ˜áƒ¡ შექმნáƒ"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Custom BG Color"
+msgstr "áƒáƒœáƒ˜áƒ›áƒáƒªáƒ˜áƒ˜áƒ¡ გáƒáƒ¡áƒáƒ¦áƒ”ბების áƒáƒ¡áƒšáƒ˜áƒ¡ შექმნáƒ"
+
+#: platform/iphone/export/export.cpp
msgid "App Store Team ID not specified - cannot configure the project."
msgstr ""
@@ -17930,6 +18753,79 @@ msgid "Could not read file:"
msgstr ""
#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Variant"
+msgstr "ფუნქციის შექმნáƒ"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Export Type"
+msgstr "კáƒáƒ›áƒžáƒáƒœáƒ”ნტები"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "VRAM Texture Compression"
+msgstr "ინტერპáƒáƒšáƒáƒªáƒ˜áƒ˜áƒ¡ რეჟიმი"
+
+#: platform/javascript/export/export.cpp
+msgid "For Desktop"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "For Mobile"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Html"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Export Icon"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Custom Html Shell"
+msgstr "áƒáƒœáƒ˜áƒ›áƒáƒªáƒ˜áƒ˜áƒ¡ გáƒáƒ¡áƒáƒ¦áƒ”ბების áƒáƒ¡áƒšáƒ˜áƒ¡ შექმნáƒ"
+
+#: platform/javascript/export/export.cpp
+msgid "Head Include"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Canvas Resize Policy"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Focus Canvas On Start"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Experimental Virtual Keyboard"
+msgstr "დáƒáƒ›áƒáƒ™áƒáƒ•შირებელი სიგნáƒáƒšáƒ˜:"
+
+#: platform/javascript/export/export.cpp
+msgid "Progressive Web App"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Offline Page"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 144 X 144"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 180 X 180"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 512 X 512"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
msgid "Could not read HTML shell:"
msgstr ""
@@ -18039,6 +18935,189 @@ msgid "Unknown object type."
msgstr ""
#: platform/osx/export/export.cpp
+msgid "App Category"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "High Res"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Location Usage Description"
+msgstr "áƒáƒ¦áƒ¬áƒ”რáƒ:"
+
+#: platform/osx/export/export.cpp
+msgid "Address Book Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Calendar Usage Description"
+msgstr "áƒáƒ¦áƒ¬áƒ”რáƒ:"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Photos Library Usage Description"
+msgstr "áƒáƒ¦áƒ¬áƒ”რáƒ:"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Desktop Folder Usage Description"
+msgstr "áƒáƒ¦áƒ¬áƒ”რáƒ:"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Documents Folder Usage Description"
+msgstr "áƒáƒ¦áƒ¬áƒ”რáƒ:"
+
+#: platform/osx/export/export.cpp
+msgid "Downloads Folder Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Network Volumes Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Removable Volumes Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#, fuzzy
+msgid "Codesign"
+msgstr "áƒáƒœáƒ˜áƒ›áƒáƒªáƒ˜áƒ˜áƒ¡ გáƒáƒ¡áƒáƒ¦áƒ”ბების áƒáƒ¡áƒšáƒ˜áƒ¡ შექმნáƒ"
+
+#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
+#: platform/windows/export/export.cpp
+msgid "Identity"
+msgstr ""
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#, fuzzy
+msgid "Timestamp"
+msgstr "დრრ(წáƒáƒ›áƒ˜): "
+
+#: platform/osx/export/export.cpp
+msgid "Hardened Runtime"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Replace Existing Signature"
+msgstr "ყველáƒáƒ¡ ჩáƒáƒœáƒáƒªáƒ•ლებáƒ"
+
+#: platform/osx/export/export.cpp
+msgid "Entitlements"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Custom File"
+msgstr "áƒáƒœáƒ˜áƒ›áƒáƒªáƒ˜áƒ˜áƒ¡ გáƒáƒ¡áƒáƒ¦áƒ”ბების áƒáƒ¡áƒšáƒ˜áƒ¡ შექმნáƒ"
+
+#: platform/osx/export/export.cpp
+msgid "Allow JIT Code Execution"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Allow Unsigned Executable Memory"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Allow Dyld Environment Variables"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Disable Library Validation"
+msgstr "გáƒáƒ›áƒáƒ áƒ—ული"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Audio Input"
+msgstr "áƒáƒ£áƒ“ირგáƒáƒ“áƒáƒ›áƒ¢áƒáƒœáƒ˜áƒ¡ სáƒáƒ®áƒ”ლის ცვლილებáƒ"
+
+#: platform/osx/export/export.cpp
+msgid "Address Book"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Calendars"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Photos Library"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Apple Events"
+msgstr "ზუმის სáƒáƒ¬áƒ§áƒ˜áƒ¡áƒ–ე დáƒáƒ§áƒ”ნებáƒ"
+
+#: platform/osx/export/export.cpp
+msgid "Debugging"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "App Sandbox"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Network Server"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Network Client"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Device Usb"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Device Bluetooth"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Files Downloads"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Files Pictures"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Files Music"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Files Movies"
+msgstr ""
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#, fuzzy
+msgid "Custom Options"
+msgstr "áƒáƒ¦áƒ¬áƒ”რáƒ:"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Notarization"
+msgstr "შექმნáƒ"
+
+#: platform/osx/export/export.cpp
+msgid "Apple ID Name"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Apple ID Password"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Apple Team ID"
+msgstr ""
+
+#: platform/osx/export/export.cpp
msgid ""
"Note: The notarization process generally takes less than an hour. When the "
"process is completed, you'll receive an email."
@@ -18230,6 +19309,129 @@ msgid "Force Builtin Codesign"
msgstr ""
#: platform/uwp/export/export.cpp
+msgid "Architecture"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Display Name"
+msgstr "ყველáƒáƒ¡ ჩáƒáƒœáƒáƒªáƒ•ლებáƒ"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Short Name"
+msgstr "ლექსიკáƒáƒœáƒ˜áƒ¡ მნიშვნელáƒáƒ‘ის შეცვლáƒ"
+
+#: platform/uwp/export/export.cpp
+msgid "Publisher"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Publisher Display Name"
+msgstr "áƒáƒ áƒáƒ¡áƒ¬áƒáƒ áƒ˜ ფáƒáƒœáƒ¢áƒ˜áƒ¡ ზáƒáƒ›áƒ."
+
+#: platform/uwp/export/export.cpp
+msgid "Product Guid"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Publisher Guid"
+msgstr "áƒáƒœáƒ˜áƒ›áƒáƒªáƒ˜áƒ˜áƒ¡ გáƒáƒ áƒ“áƒáƒ¥áƒ›áƒœáƒ˜áƒ¡ ცვლილებáƒ"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Signing"
+msgstr "სიგნáƒáƒšáƒ”ბი"
+
+#: platform/uwp/export/export.cpp
+msgid "Certificate"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Algorithm"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Major"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Minor"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Build"
+msgstr "მáƒáƒ¡áƒ¨áƒ¢áƒáƒ‘ის თáƒáƒœáƒáƒ¤áƒáƒ áƒ“áƒáƒ‘áƒ:"
+
+#: platform/uwp/export/export.cpp
+msgid "Revision"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Landscape"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Portrait"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Landscape Flipped"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Portrait Flipped"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Store Logo"
+msgstr "მáƒáƒ¡áƒ¨áƒ¢áƒáƒ‘ის თáƒáƒœáƒáƒ¤áƒáƒ áƒ“áƒáƒ‘áƒ:"
+
+#: platform/uwp/export/export.cpp
+msgid "Square 44 X 44 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 71 X 71 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 150 X 150 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 310 X 310 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Wide 310 X 150 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Splash Screen"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Tiles"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Square 150 X 150"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Wide 310 X 150"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Square 310 X 310"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
#, fuzzy
msgid "Invalid package short name."
msgstr "áƒáƒ áƒáƒ¡áƒ¬áƒáƒ áƒ˜ ფáƒáƒœáƒ¢áƒ˜áƒ¡ ზáƒáƒ›áƒ."
@@ -18300,11 +19502,48 @@ msgid "Debug Certificate"
msgstr ""
#: platform/uwp/export/export.cpp
-msgid "Debug Password"
+msgid "Debug Algorithm"
msgstr ""
-#: platform/uwp/export/export.cpp
-msgid "Debug Algorithm"
+#: platform/windows/export/export.cpp
+msgid "Identity Type"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Timestamp Server URL"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Digest Algorithm"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "File Version"
+msgstr "áƒáƒ áƒáƒ¡áƒ¬áƒáƒ áƒ˜ ფáƒáƒœáƒ¢áƒ˜áƒ¡ ზáƒáƒ›áƒ."
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Product Version"
+msgstr "áƒáƒ áƒáƒ¡áƒ¬áƒáƒ áƒ˜ ფáƒáƒœáƒ¢áƒ˜áƒ¡ ზáƒáƒ›áƒ."
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Company Name"
+msgstr "მáƒáƒ¨áƒáƒ áƒ”ბáƒ"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Product Name"
+msgstr "მáƒáƒœáƒ˜áƒ¨áƒ•ნის მáƒáƒ¨áƒáƒ áƒ”ბáƒ"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "File Description"
+msgstr "áƒáƒ¦áƒ¬áƒ”რáƒ:"
+
+#: platform/windows/export/export.cpp
+msgid "Trademarks"
msgstr ""
#: platform/windows/export/export.cpp
@@ -18376,12 +19615,14 @@ msgstr ""
msgid "Centered"
msgstr "წáƒáƒ¨áƒšáƒ"
-#: scene/2d/animated_sprite.cpp scene/2d/camera_2d.cpp scene/2d/light_2d.cpp
+#: scene/2d/animated_sprite.cpp scene/2d/camera_2d.cpp
+#: scene/2d/cpu_particles_2d.cpp scene/2d/light_2d.cpp
#: scene/2d/parallax_background.cpp scene/2d/parallax_layer.cpp
#: scene/2d/path_2d.cpp scene/2d/polygon_2d.cpp scene/2d/sprite.cpp
-#: scene/3d/path.cpp scene/3d/physics_body.cpp scene/3d/sprite_3d.cpp
-#: scene/gui/graph_node.cpp scene/gui/rich_text_effect.cpp
-#: scene/main/canvas_layer.cpp scene/resources/material.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/path.cpp scene/3d/physics_body.cpp
+#: scene/3d/sprite_3d.cpp scene/gui/graph_node.cpp
+#: scene/gui/rich_text_effect.cpp scene/main/canvas_layer.cpp
+#: scene/resources/material.cpp scene/resources/particles_material.cpp
#: scene/resources/style_box.cpp
msgid "Offset"
msgstr ""
@@ -18448,11 +19689,6 @@ msgstr "áƒáƒ£áƒ“ირგáƒáƒ“áƒáƒ›áƒ¢áƒáƒœáƒ˜áƒ¡ სáƒáƒ®áƒ”ლის ც
msgid "Override"
msgstr ""
-#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
-#: scene/audio/audio_stream_player.cpp scene/gui/video_player.cpp
-msgid "Stream"
-msgstr ""
-
#: scene/2d/audio_stream_player_2d.cpp scene/audio/audio_stream_player.cpp
#: scene/gui/video_player.cpp servers/audio/effects/audio_effect_amplify.cpp
msgid "Volume dB"
@@ -18477,12 +19713,12 @@ msgid "Stream Paused"
msgstr ""
#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
-#: scene/3d/reflection_probe.cpp scene/3d/visual_instance.cpp
-#: scene/resources/material.cpp
+#: scene/3d/light.cpp scene/3d/reflection_probe.cpp
+#: scene/3d/visual_instance.cpp scene/resources/material.cpp
msgid "Max Distance"
msgstr ""
-#: scene/2d/audio_stream_player_2d.cpp
+#: scene/2d/audio_stream_player_2d.cpp scene/3d/light.cpp
#, fuzzy
msgid "Attenuation"
msgstr "ფუნქციები:"
@@ -18536,6 +19772,24 @@ msgstr "მáƒáƒ¡áƒ¨áƒ¢áƒáƒ‘ის თáƒáƒœáƒáƒ¤áƒáƒ áƒ“áƒáƒ‘áƒ:"
msgid "Limit"
msgstr ""
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/style_box.cpp
+#, fuzzy
+msgid "Left"
+msgstr "წრფივი"
+
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/style_box.cpp
+#, fuzzy
+msgid "Right"
+msgstr "წრფივი"
+
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/dynamic_font.cpp scene/resources/style_box.cpp
+#, fuzzy
+msgid "Bottom"
+msgstr "შექმნáƒ"
+
#: scene/2d/camera_2d.cpp
msgid "Smoothed"
msgstr ""
@@ -18739,12 +19993,6 @@ msgstr ""
msgid "Emitting"
msgstr "გáƒáƒ“áƒáƒ¡áƒ•ლები"
-#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp scene/3d/area.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
-#: scene/resources/environment.cpp
-msgid "Amount"
-msgstr ""
-
#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp
#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
msgid "Lifetime"
@@ -18805,18 +20053,13 @@ msgstr ""
#: scene/2d/mesh_instance_2d.cpp scene/2d/multimesh_instance_2d.cpp
#: scene/2d/particles_2d.cpp scene/2d/polygon_2d.cpp scene/2d/sprite.cpp
#: scene/3d/sprite_3d.cpp scene/gui/nine_patch_rect.cpp
-#: scene/gui/texture_rect.cpp scene/resources/sky.cpp
-#: scene/resources/style_box.cpp scene/resources/visual_shader_nodes.cpp
+#: scene/gui/texture_rect.cpp scene/resources/material.cpp
+#: scene/resources/sky.cpp scene/resources/style_box.cpp
+#: scene/resources/visual_shader_nodes.cpp
#, fuzzy
msgid "Texture"
msgstr "მáƒáƒœáƒ˜áƒ¨áƒ•ნის მáƒáƒ¨áƒáƒ áƒ”ბáƒ"
-#: scene/2d/cpu_particles_2d.cpp scene/2d/mesh_instance_2d.cpp
-#: scene/2d/multimesh_instance_2d.cpp scene/2d/particles_2d.cpp
-#: scene/2d/sprite.cpp scene/resources/style_box.cpp
-msgid "Normal Map"
-msgstr ""
-
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
msgid "Emission Shape"
@@ -18836,9 +20079,8 @@ msgid "Normals"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/3d/sprite_3d.cpp scene/resources/material.cpp
-#: scene/resources/particles_material.cpp scene/resources/texture.cpp
-msgid "Flags"
+#: scene/resources/particles_material.cpp
+msgid "Align Y"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
@@ -18859,6 +20101,11 @@ msgid "Initial Velocity"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Velocity Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp servers/physics_2d_server.cpp
#: servers/physics_server.cpp
msgid "Angular Velocity"
@@ -18866,6 +20113,12 @@ msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Velocity Curve"
+msgstr "კვáƒáƒœáƒ«áƒ˜áƒ¡ მრუდის რედáƒáƒ¥áƒ¢áƒ˜áƒ áƒ”ბáƒ"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
msgid "Orbit Velocity"
msgstr ""
@@ -18877,6 +20130,23 @@ msgstr "წრფივი"
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Accel"
+msgstr "წáƒáƒ áƒ›áƒáƒ¢áƒ”ბáƒ!"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Accel Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Accel Curve"
+msgstr "კვáƒáƒœáƒ«áƒ˜áƒ¡ მრუდის რედáƒáƒ¥áƒ¢áƒ˜áƒ áƒ”ბáƒ"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
msgid "Radial Accel"
msgstr ""
@@ -18886,19 +20156,55 @@ msgid "Tangential Accel"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/2d/joints_2d.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/vehicle_body.cpp
-#: scene/resources/particles_material.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/physics_joint.cpp
+#: scene/3d/vehicle_body.cpp scene/resources/particles_material.cpp
#: servers/audio/effects/audio_effect_reverb.cpp
msgid "Damping"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+msgid "Damping Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Damping Curve"
+msgstr "კვáƒáƒœáƒ«áƒ˜áƒ¡ მრუდის რედáƒáƒ¥áƒ¢áƒ˜áƒ áƒ”ბáƒ"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp scene/3d/light.cpp
+#: scene/resources/particles_material.cpp
msgid "Angle"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+msgid "Angle Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Angle Curve"
+msgstr "კვáƒáƒœáƒ«áƒ˜áƒ¡ მრუდის რედáƒáƒ¥áƒ¢áƒ˜áƒ áƒ”ბáƒ"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#, fuzzy
+msgid "Scale Amount"
+msgstr "áƒáƒ¥ ჩáƒáƒ¡áƒ•ით გáƒáƒ¡áƒáƒ¦áƒ”ბი"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+msgid "Scale Amount Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#, fuzzy
+msgid "Scale Amount Curve"
+msgstr "შკáƒáƒšáƒ˜áƒ áƒ”ბრმáƒáƒ©áƒ•ენებლიდáƒáƒœ"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
msgid "Color Ramp"
msgstr ""
@@ -18913,6 +20219,47 @@ msgstr ""
msgid "Hue Variation"
msgstr "ფუნქციის შექმნáƒ"
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Variation"
+msgstr "ფუნქციის შექმნáƒ"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Variation Random"
+msgstr "ფუნქციის შექმნáƒ"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Variation Curve"
+msgstr "ფუნქციის შექმნáƒ"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Speed Random"
+msgstr "მáƒáƒ¡áƒ¨áƒ¢áƒáƒ‘ის თáƒáƒœáƒáƒ¤áƒáƒ áƒ“áƒáƒ‘áƒ:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Speed Curve"
+msgstr "კვáƒáƒœáƒ«áƒ˜áƒ¡ მრუდის რედáƒáƒ¥áƒ¢áƒ˜áƒ áƒ”ბáƒ"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Offset Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Offset Curve"
+msgstr "კვáƒáƒœáƒ«áƒ˜áƒ¡ მრუდის რედáƒáƒ¥áƒ¢áƒ˜áƒ áƒ”ბáƒ"
+
#: scene/2d/joints_2d.cpp
msgid "Node A and Node B must be PhysicsBody2Ds"
msgstr ""
@@ -18944,6 +20291,7 @@ msgid "Node B"
msgstr "áƒáƒœáƒ˜áƒ›áƒáƒªáƒ˜áƒ˜áƒ¡ გáƒáƒ¡áƒáƒ¦áƒ”ბების áƒáƒ¡áƒšáƒ˜áƒ¡ შექმნáƒ"
#: scene/2d/joints_2d.cpp scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp
+#: scene/3d/light.cpp scene/3d/physics_joint.cpp
#: scene/resources/environment.cpp
msgid "Bias"
msgstr ""
@@ -18953,7 +20301,7 @@ msgstr ""
msgid "Disable Collision"
msgstr "გáƒáƒ›áƒáƒ áƒ—ული"
-#: scene/2d/joints_2d.cpp
+#: scene/2d/joints_2d.cpp scene/3d/physics_joint.cpp
msgid "Softness"
msgstr ""
@@ -18970,7 +20318,7 @@ msgstr ""
msgid "Rest Length"
msgstr ""
-#: scene/2d/joints_2d.cpp scene/3d/vehicle_body.cpp
+#: scene/2d/joints_2d.cpp scene/3d/physics_joint.cpp scene/3d/vehicle_body.cpp
msgid "Stiffness"
msgstr ""
@@ -18990,7 +20338,7 @@ msgid "Texture Scale"
msgstr ""
#: scene/2d/light_2d.cpp scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp
-#: scene/resources/environment.cpp scene/resources/sky.cpp
+#: scene/3d/light.cpp scene/resources/environment.cpp scene/resources/sky.cpp
msgid "Energy"
msgstr ""
@@ -19027,12 +20375,6 @@ msgstr ""
msgid "Gradient Length"
msgstr "%s ტიპის ცვლილებáƒ"
-#: scene/2d/light_2d.cpp scene/gui/control.cpp
-#: scene/resources/navigation_mesh.cpp
-#, fuzzy
-msgid "Filter"
-msgstr "áƒáƒœáƒ˜áƒ› სიგრძის შეცვლáƒ"
-
#: scene/2d/light_2d.cpp
#, fuzzy
msgid "Filter Smooth"
@@ -19427,10 +20769,6 @@ msgid "Applied Forces"
msgstr ""
#: scene/2d/physics_body_2d.cpp
-msgid "Force"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp
msgid "Torque"
msgstr ""
@@ -19443,7 +20781,7 @@ msgid "Sync To Physics"
msgstr ""
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-msgid "Moving platform"
+msgid "Moving Platform"
msgstr ""
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
@@ -19452,7 +20790,7 @@ msgstr ""
#: scene/2d/physics_body_2d.cpp scene/2d/touch_screen_button.cpp
#: scene/3d/physics_body.cpp scene/gui/texture_button.cpp
-#: scene/resources/line_shape_2d.cpp
+#: scene/resources/line_shape_2d.cpp scene/resources/material.cpp
msgid "Normal"
msgstr ""
@@ -19673,6 +21011,33 @@ msgid ""
"as parent."
msgstr ""
+#: scene/2d/visibility_notifier_2d.cpp scene/3d/visibility_notifier.cpp
+#, fuzzy
+msgid "Pause Animations"
+msgstr "ფუნქციები:"
+
+#: scene/2d/visibility_notifier_2d.cpp scene/3d/visibility_notifier.cpp
+msgid "Freeze Bodies"
+msgstr ""
+
+#: scene/2d/visibility_notifier_2d.cpp
+msgid "Pause Particles"
+msgstr ""
+
+#: scene/2d/visibility_notifier_2d.cpp
+#, fuzzy
+msgid "Pause Animated Sprites"
+msgstr "áƒáƒœáƒ˜áƒ› სიგრძის შეცვლáƒ"
+
+#: scene/2d/visibility_notifier_2d.cpp
+#, fuzzy
+msgid "Process Parent"
+msgstr "მáƒáƒ¡áƒ¨áƒ¢áƒáƒ‘ის თáƒáƒœáƒáƒ¤áƒáƒ áƒ“áƒáƒ‘áƒ:"
+
+#: scene/2d/visibility_notifier_2d.cpp
+msgid "Physics Process Parent"
+msgstr ""
+
#: scene/3d/area.cpp
msgid "Reverb Bus"
msgstr ""
@@ -19766,6 +21131,7 @@ msgid "Attenuation Filter"
msgstr ""
#: scene/3d/audio_stream_player_3d.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
#: servers/audio/effects/audio_effect_filter.cpp
msgid "Cutoff Hz"
msgstr ""
@@ -19808,11 +21174,6 @@ msgid "Octree"
msgstr ""
#: scene/3d/baked_lightmap.cpp
-#, fuzzy
-msgid "User Data"
-msgstr "პრáƒáƒ”ქტის დáƒáƒ›áƒ¤áƒ£áƒ«áƒœáƒ”ბლები"
-
-#: scene/3d/baked_lightmap.cpp
msgid "Finding meshes and lights"
msgstr ""
@@ -20056,6 +21417,16 @@ msgid "Ring Axis"
msgstr ""
#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Rotate Y"
+msgstr "მუდმივი"
+
+#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Disable Z"
+msgstr "გáƒáƒ›áƒáƒ áƒ—ული"
+
+#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
msgid "Flatness"
msgstr ""
@@ -20092,16 +21463,11 @@ msgstr ""
msgid "Dynamic Range"
msgstr ""
-#: scene/3d/gi_probe.cpp
+#: scene/3d/gi_probe.cpp scene/3d/light.cpp
msgid "Normal Bias"
msgstr ""
#: scene/3d/gi_probe.cpp
-#, fuzzy
-msgid "Compress"
-msgstr "კáƒáƒ›áƒžáƒáƒœáƒ”ნტები"
-
-#: scene/3d/gi_probe.cpp
msgid "Plotting Meshes"
msgstr ""
@@ -20127,15 +21493,28 @@ msgid "Subdiv"
msgstr ""
#: scene/3d/light.cpp
+msgid "Indirect Energy"
+msgstr ""
+
+#: scene/3d/light.cpp
msgid "Negative"
msgstr ""
#: scene/3d/light.cpp
#, fuzzy
+msgid "Specular"
+msgstr "მáƒáƒ¡áƒ¨áƒ¢áƒáƒ‘ის თáƒáƒœáƒáƒ¤áƒáƒ áƒ“áƒáƒ‘áƒ:"
+
+#: scene/3d/light.cpp
+#, fuzzy
msgid "Bake Mode"
msgstr "მáƒáƒ¡áƒ¨áƒ¢áƒáƒ‘ის თáƒáƒœáƒáƒ¤áƒáƒ áƒ“áƒáƒ‘áƒ:"
#: scene/3d/light.cpp
+msgid "Contact"
+msgstr ""
+
+#: scene/3d/light.cpp
#, fuzzy
msgid "Reverse Cull Face"
msgstr "მáƒáƒ¨áƒáƒ áƒ”ბáƒ"
@@ -20145,11 +21524,31 @@ msgid "Directional Shadow"
msgstr ""
#: scene/3d/light.cpp
+#, fuzzy
+msgid "Split 1"
+msgstr "კვáƒáƒœáƒ«áƒ˜áƒ¡ მრუდის რედáƒáƒ¥áƒ¢áƒ˜áƒ áƒ”ბáƒ"
+
+#: scene/3d/light.cpp
+#, fuzzy
+msgid "Split 2"
+msgstr "კვáƒáƒœáƒ«áƒ˜áƒ¡ მრუდის რედáƒáƒ¥áƒ¢áƒ˜áƒ áƒ”ბáƒ"
+
+#: scene/3d/light.cpp
+#, fuzzy
+msgid "Split 3"
+msgstr "კვáƒáƒœáƒ«áƒ˜áƒ¡ მრუდის რედáƒáƒ¥áƒ¢áƒ˜áƒ áƒ”ბáƒ"
+
+#: scene/3d/light.cpp
msgid "Blend Splits"
msgstr ""
#: scene/3d/light.cpp
#, fuzzy
+msgid "Bias Split Scale"
+msgstr "დáƒáƒ›áƒáƒ™áƒ˜áƒ“ებულებების შემსწáƒáƒ áƒ”ბელი"
+
+#: scene/3d/light.cpp
+#, fuzzy
msgid "Depth Range"
msgstr "მáƒáƒ¡áƒ¨áƒ¢áƒáƒ‘ის თáƒáƒœáƒáƒ¤áƒáƒ áƒ“áƒáƒ‘áƒ:"
@@ -20175,6 +21574,11 @@ msgstr ""
msgid "Spot"
msgstr ""
+#: scene/3d/light.cpp
+#, fuzzy
+msgid "Angle Attenuation"
+msgstr "ფუნქციები:"
+
#: scene/3d/mesh_instance.cpp
msgid "Software Skinning"
msgstr ""
@@ -20293,6 +21697,60 @@ msgid "Axis Lock"
msgstr ""
#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Linear X"
+msgstr "წრფივი"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Linear Y"
+msgstr "წრფივი"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Linear Z"
+msgstr "წრფივი"
+
+#: scene/3d/physics_body.cpp
+msgid "Angular X"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Angular Y"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Angular Z"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Motion X"
+msgstr "ყველრმáƒáƒœáƒ˜áƒ¨áƒœáƒ•áƒ"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Motion Y"
+msgstr "ყველრმáƒáƒœáƒ˜áƒ¨áƒœáƒ•áƒ"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Motion Z"
+msgstr "ყველრმáƒáƒœáƒ˜áƒ¨áƒœáƒ•áƒ"
+
+#: scene/3d/physics_body.cpp
+msgid "Move Lock X"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Move Lock Y"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Move Lock Z"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
msgid "Body Offset"
msgstr ""
@@ -20326,6 +21784,14 @@ msgid "Exclude Nodes"
msgstr "წáƒáƒ¨áƒšáƒ"
#: scene/3d/physics_joint.cpp
+msgid "Params"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Impulse Clamp"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit"
msgstr ""
@@ -20337,6 +21803,55 @@ msgstr ""
msgid "Lower"
msgstr ""
+#: scene/3d/physics_joint.cpp scene/3d/vehicle_body.cpp
+#, fuzzy
+msgid "Relaxation"
+msgstr "ფუნქციის შექმნáƒ"
+
+#: scene/3d/physics_joint.cpp
+msgid "Motor"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Target Velocity"
+msgstr "წრფივი"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Max Impulse"
+msgstr "ნáƒáƒ‘იჯი (წáƒáƒ›áƒ˜):"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit"
+msgstr "წრფივი"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Upper Distance"
+msgstr "დáƒáƒ§áƒ”ნებáƒ"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Lower Distance"
+msgstr "დáƒáƒ§áƒ”ნებáƒ"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Restitution"
+msgstr "áƒáƒ¦áƒ¬áƒ”რáƒ:"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motion"
+msgstr "წრფივი"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Ortho"
+msgstr "წრფივი"
+
#: scene/3d/physics_joint.cpp
msgid "Upper Angle"
msgstr ""
@@ -20346,6 +21861,16 @@ msgid "Lower Angle"
msgstr ""
#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Angular Motion"
+msgstr "ფუნქციები:"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Angular Ortho"
+msgstr "მáƒáƒ¥áƒ¡áƒ˜áƒ›áƒ£áƒ›áƒ˜ წრიული შეცდáƒáƒ›áƒ:"
+
+#: scene/3d/physics_joint.cpp
msgid "Swing Span"
msgstr ""
@@ -20354,17 +21879,98 @@ msgid "Twist Span"
msgstr ""
#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit X"
+msgstr "წრფივი"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motor X"
+msgstr "წრფივი"
+
+#: scene/3d/physics_joint.cpp
+msgid "Force Limit"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Spring X"
+msgstr "წრფივი"
+
+#: scene/3d/physics_joint.cpp
+msgid "Equilibrium Point"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit X"
msgstr ""
#: scene/3d/physics_joint.cpp
+msgid "Erp"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Motor X"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Spring X"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit Y"
+msgstr "წრფივი"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motor Y"
+msgstr "წრფივი"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Spring Y"
+msgstr "წრფივი"
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit Y"
msgstr ""
#: scene/3d/physics_joint.cpp
+msgid "Angular Motor Y"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Spring Y"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit Z"
+msgstr "წრფივი"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motor Z"
+msgstr "წრფივი"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Spring Z"
+msgstr "წრფივი"
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit Z"
msgstr ""
+#: scene/3d/physics_joint.cpp
+msgid "Angular Motor Z"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Spring Z"
+msgstr ""
+
#: scene/3d/portal.cpp
msgid "The RoomManager should not be a child or grandchild of a Portal."
msgstr ""
@@ -20477,7 +22083,7 @@ msgstr ""
msgid "Use Default Simplify"
msgstr ""
-#: scene/3d/room.cpp
+#: scene/3d/room.cpp scene/3d/room_manager.cpp
msgid "Room Simplify"
msgstr ""
@@ -20515,6 +22121,13 @@ msgstr ""
msgid "Main"
msgstr ""
+#: scene/3d/room_manager.cpp scene/animation/animation_player.cpp
+#: scene/animation/animation_tree.cpp scene/animation/animation_tree_player.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+#, fuzzy
+msgid "Active"
+msgstr "ყველრმáƒáƒœáƒ˜áƒ¨áƒœáƒ•áƒ"
+
#: scene/3d/room_manager.cpp
msgid "Roomlist"
msgstr ""
@@ -20537,6 +22150,48 @@ msgid "Gameplay"
msgstr ""
#: scene/3d/room_manager.cpp
+msgid "Gameplay Monitor"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "Use Secondary PVS"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "Merge Meshes"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "Show Margins"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "Debug Sprawl"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "Overlap Warning Threshold"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Preview Camera"
+msgstr "áƒáƒœáƒ˜áƒ›áƒáƒªáƒ˜áƒ˜áƒ¡ თრექის დáƒáƒ›áƒáƒ¢áƒ”ბáƒ"
+
+#: scene/3d/room_manager.cpp
+msgid "Portal Depth Limit"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Default Portal Margin"
+msgstr "%s ტიპის ცვლილებáƒ"
+
+#: scene/3d/room_manager.cpp
+msgid "Roaming Expansion Margin"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
msgid ""
"RoomList path is invalid.\n"
"Please check the RoomList branch has been assigned in the RoomManager."
@@ -20657,6 +22312,20 @@ msgstr ""
msgid "Billboard"
msgstr ""
+#: scene/3d/sprite_3d.cpp scene/resources/material.cpp
+#, fuzzy
+msgid "Transparent"
+msgstr "გáƒáƒ áƒ“áƒáƒ¡áƒ•ლáƒ"
+
+#: scene/3d/sprite_3d.cpp
+#, fuzzy
+msgid "Shaded"
+msgstr "ცვლილებáƒ"
+
+#: scene/3d/sprite_3d.cpp
+msgid "Double Sided"
+msgstr ""
+
#: scene/3d/sprite_3d.cpp
msgid "Alpha Cut"
msgstr ""
@@ -20724,11 +22393,6 @@ msgstr ""
msgid "Max Force"
msgstr "სáƒáƒ áƒ™áƒ”"
-#: scene/3d/vehicle_body.cpp
-#, fuzzy
-msgid "Relaxation"
-msgstr "ფუნქციის შექმნáƒ"
-
#: scene/3d/visibility_notifier.cpp
msgid "AABB"
msgstr ""
@@ -20859,8 +22523,9 @@ msgid "Fadeout Time"
msgstr ""
#: scene/animation/animation_blend_tree.cpp
-msgid "autorestart_"
-msgstr ""
+#, fuzzy
+msgid "Auto Restart"
+msgstr "áƒáƒœáƒ˜áƒ› გáƒáƒ¡áƒáƒ¦áƒ”ბის ჩáƒáƒ§áƒ”ნებáƒ"
#: scene/animation/animation_blend_tree.cpp
#, fuzzy
@@ -20943,13 +22608,6 @@ msgstr "áƒáƒ¦áƒ¬áƒ”რáƒ:"
msgid "Default Blend Time"
msgstr "%s ტიპის ცვლილებáƒ"
-#: scene/animation/animation_player.cpp scene/animation/animation_tree.cpp
-#: scene/animation/animation_tree_player.cpp
-#: servers/audio/effects/audio_effect_delay.cpp
-#, fuzzy
-msgid "Active"
-msgstr "ყველრმáƒáƒœáƒ˜áƒ¨áƒœáƒ•áƒ"
-
#: scene/animation/animation_player.cpp
msgid "Method Call Mode"
msgstr ""
@@ -21071,10 +22729,6 @@ msgstr "წáƒáƒ¨áƒšáƒ"
msgid "Max Iterations"
msgstr "ფუნქციები:"
-#: scene/animation/tween.cpp scene/resources/texture.cpp
-msgid "Repeat"
-msgstr ""
-
#: scene/animation/tween.cpp
msgid "Playback Process Mode"
msgstr ""
@@ -21103,19 +22757,6 @@ msgstr "მáƒáƒ¡áƒ¨áƒ¢áƒáƒ‘ის თáƒáƒœáƒáƒ¤áƒáƒ áƒ“áƒáƒ‘áƒ:"
msgid "Alignment"
msgstr ""
-#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
-#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
-#: scene/resources/style_box.cpp
-#, fuzzy
-msgid "Horizontal"
-msgstr "კვáƒáƒœáƒ«áƒ—áƒáƒœ დáƒáƒ™áƒáƒ•შირებáƒ:"
-
-#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
-#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
-#: scene/resources/style_box.cpp
-msgid "Vertical"
-msgstr ""
-
#: scene/gui/base_button.cpp
msgid "Shortcut In Tooltip"
msgstr ""
@@ -21208,10 +22849,6 @@ msgid "HSV"
msgstr ""
#: scene/gui/color_picker.cpp
-msgid "Raw"
-msgstr ""
-
-#: scene/gui/color_picker.cpp
msgid "Switch between hexadecimal and code values."
msgstr ""
@@ -21267,6 +22904,30 @@ msgid "Focus"
msgstr ""
#: scene/gui/control.cpp
+msgid "Neighbour Left"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Neighbour Top"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Neighbour Right"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Neighbour Bottom"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Next"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Previous"
+msgstr ""
+
+#: scene/gui/control.cpp
msgid "Mouse"
msgstr ""
@@ -21301,7 +22962,7 @@ msgid "Dialog"
msgstr ""
#: scene/gui/dialogs.cpp
-msgid "Hide On Ok"
+msgid "Hide On OK"
msgstr ""
#: scene/gui/dialogs.cpp scene/gui/label.cpp
@@ -21394,7 +23055,7 @@ msgid "Timers"
msgstr "დრრ(წáƒáƒ›áƒ˜): "
#: scene/gui/item_list.cpp scene/gui/popup_menu.cpp scene/gui/tree.cpp
-msgid "Incremental Search Max Interval (msec)"
+msgid "Incremental Search Max Interval Msec"
msgstr ""
#: scene/gui/item_list.cpp scene/gui/tree.cpp
@@ -21934,6 +23595,26 @@ msgstr "წáƒáƒ¨áƒšáƒ"
msgid "Nine Patch Stretch"
msgstr "ინტერპáƒáƒšáƒáƒªáƒ˜áƒ˜áƒ¡ რეჟიმი"
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Left"
+msgstr "მáƒáƒ¡áƒ¨áƒ¢áƒáƒ‘ის თáƒáƒœáƒáƒ¤áƒáƒ áƒ“áƒáƒ‘áƒ:"
+
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Top"
+msgstr "მáƒáƒ¡áƒ¨áƒ¢áƒáƒ‘ის თáƒáƒœáƒáƒ¤áƒáƒ áƒ“áƒáƒ‘áƒ:"
+
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Right"
+msgstr "მáƒáƒ¡áƒ¨áƒ¢áƒáƒ‘ის თáƒáƒœáƒáƒ¤áƒáƒ áƒ“áƒáƒ‘áƒ:"
+
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Bottom"
+msgstr "მáƒáƒ¡áƒ¨áƒ¢áƒáƒ‘ის თáƒáƒœáƒáƒ¤áƒáƒ áƒ“áƒáƒ‘áƒ:"
+
#: scene/gui/tree.cpp
msgid "Custom Minimum Height"
msgstr ""
@@ -21970,7 +23651,7 @@ msgid "Paused"
msgstr ""
#: scene/gui/video_player.cpp
-msgid "Buffering (msec)"
+msgid "Buffering Msec"
msgstr ""
#: scene/gui/video_player.cpp
@@ -22297,6 +23978,22 @@ msgid "Shadow Atlas"
msgstr ""
#: scene/main/viewport.cpp
+msgid "Quad 0"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 1"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 2"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 3"
+msgstr ""
+
+#: scene/main/viewport.cpp
#, fuzzy
msgid "Canvas Transform"
msgstr "áƒáƒœáƒ˜áƒ›áƒáƒªáƒ˜áƒ˜áƒ¡ გáƒáƒ áƒ“áƒáƒ¥áƒ›áƒœáƒ˜áƒ¡ ცვლილებáƒ"
@@ -22311,6 +24008,10 @@ msgid "Tooltip Delay (sec)"
msgstr ""
#: scene/register_scene_types.cpp
+msgid "Swap OK Cancel"
+msgstr ""
+
+#: scene/register_scene_types.cpp
msgid "Use hiDPI"
msgstr ""
@@ -22325,21 +24026,6 @@ msgid "Custom Font"
msgstr "áƒáƒœáƒ˜áƒ›áƒáƒªáƒ˜áƒ˜áƒ¡ გáƒáƒ¡áƒáƒ¦áƒ”ბების áƒáƒ¡áƒšáƒ˜áƒ¡ შექმნáƒ"
#: scene/resources/audio_stream_sample.cpp
-#, fuzzy
-msgid "Loop Mode"
-msgstr "მáƒáƒ¡áƒ¨áƒ¢áƒáƒ‘ის თáƒáƒœáƒáƒ¤áƒáƒ áƒ“áƒáƒ‘áƒ:"
-
-#: scene/resources/audio_stream_sample.cpp
-#, fuzzy
-msgid "Loop Begin"
-msgstr "მáƒáƒ¡áƒ¨áƒ¢áƒáƒ‘ის თáƒáƒœáƒáƒ¤áƒáƒ áƒ“áƒáƒ‘áƒ:"
-
-#: scene/resources/audio_stream_sample.cpp
-#, fuzzy
-msgid "Loop End"
-msgstr "მáƒáƒ¡áƒ¨áƒ¢áƒáƒ‘ის თáƒáƒœáƒáƒ¤áƒáƒ áƒ“áƒáƒ‘áƒ:"
-
-#: scene/resources/audio_stream_sample.cpp
#: servers/audio/effects/audio_stream_generator.cpp servers/audio_server.cpp
msgid "Mix Rate"
msgstr ""
@@ -22394,6 +24080,15 @@ msgid "Extra Spacing"
msgstr "áƒáƒ¦áƒ¬áƒ”რáƒ:"
#: scene/resources/dynamic_font.cpp
+msgid "Char"
+msgstr ""
+
+#: scene/resources/dynamic_font.cpp scene/resources/world.cpp
+#: scene/resources/world_2d.cpp
+msgid "Space"
+msgstr ""
+
+#: scene/resources/dynamic_font.cpp
msgid "Font"
msgstr ""
@@ -22613,6 +24308,43 @@ msgid "Glow"
msgstr ""
#: scene/resources/environment.cpp
+#, fuzzy
+msgid "Levels"
+msgstr "დეველáƒáƒžáƒ”რები"
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "1"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "2"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "3"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "4"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "5"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "6"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "7"
+msgstr ""
+
+#: scene/resources/environment.cpp
msgid "Bloom"
msgstr ""
@@ -22699,9 +24431,66 @@ msgid "Next Pass"
msgstr ""
#: scene/resources/material.cpp
+msgid "Use Shadow To Opacity"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Unshaded"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Vertex Lighting"
+msgstr "შექმნáƒ"
+
+#: scene/resources/material.cpp
+msgid "No Depth Test"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Use Point Size"
+msgstr "დáƒáƒ›áƒáƒ™áƒ˜áƒ“ებულებების შემსწáƒáƒ áƒ”ბელი"
+
+#: scene/resources/material.cpp
+msgid "World Triplanar"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Fixed Size"
+msgstr "დáƒáƒ›áƒáƒ™áƒ˜áƒ“ებულებების შემსწáƒáƒ áƒ”ბელი"
+
+#: scene/resources/material.cpp
+msgid "Albedo Tex Force sRGB"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Do Not Receive Shadows"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Disable Ambient Light"
+msgstr "გáƒáƒ›áƒáƒ áƒ—ული"
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Ensure Correct Normals"
+msgstr "შექმნáƒ"
+
+#: scene/resources/material.cpp
msgid "Vertex Color"
msgstr ""
+#: scene/resources/material.cpp
+msgid "Use As Albedo"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Is sRGB"
+msgstr ""
+
#: scene/resources/material.cpp servers/visual_server.cpp
msgid "Parameters"
msgstr ""
@@ -22737,6 +24526,11 @@ msgid "Billboard Mode"
msgstr "მáƒáƒ¡áƒ¨áƒ¢áƒáƒ‘ის თáƒáƒœáƒáƒ¤áƒáƒ áƒ“áƒáƒ‘áƒ:"
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Billboard Keep Scale"
+msgstr "მáƒáƒ¡áƒ¨áƒ¢áƒáƒ‘ის თáƒáƒœáƒáƒ¤áƒáƒ áƒ“áƒáƒ‘áƒ:"
+
+#: scene/resources/material.cpp
msgid "Grow"
msgstr ""
@@ -22746,6 +24540,10 @@ msgid "Grow Amount"
msgstr "კვáƒáƒœáƒ«áƒ—áƒáƒœ დáƒáƒ™áƒáƒ•შირებáƒ:"
#: scene/resources/material.cpp
+msgid "Use Alpha Scissor"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Alpha Scissor Threshold"
msgstr ""
@@ -22774,10 +24572,20 @@ msgid "Metallic Specular"
msgstr ""
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Metallic Texture"
+msgstr "მáƒáƒœáƒ˜áƒ¨áƒ•ნის მáƒáƒ¨áƒáƒ áƒ”ბáƒ"
+
+#: scene/resources/material.cpp
msgid "Metallic Texture Channel"
msgstr ""
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Roughness Texture"
+msgstr "მáƒáƒœáƒ˜áƒ¨áƒ•ნის მáƒáƒ¨áƒáƒ áƒ”ბáƒ"
+
+#: scene/resources/material.cpp
msgid "Roughness Texture Channel"
msgstr ""
@@ -22794,6 +24602,15 @@ msgid "Emission Operator"
msgstr ""
#: scene/resources/material.cpp
+msgid "Emission On UV2"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Emission Texture"
+msgstr "მáƒáƒœáƒ˜áƒ¨áƒ•ნის მáƒáƒ¨áƒáƒ áƒ”ბáƒ"
+
+#: scene/resources/material.cpp
msgid "NormalMap"
msgstr ""
@@ -22807,6 +24624,11 @@ msgstr ""
#: scene/resources/material.cpp
#, fuzzy
+msgid "Rim Texture"
+msgstr "მáƒáƒœáƒ˜áƒ¨áƒ•ნის მáƒáƒ¨áƒáƒ áƒ”ბáƒ"
+
+#: scene/resources/material.cpp
+#, fuzzy
msgid "Clearcoat"
msgstr "áƒáƒœáƒ˜áƒ›áƒáƒªáƒ˜áƒ˜áƒ¡ გáƒáƒ áƒ“áƒáƒ¥áƒ›áƒœáƒ˜áƒ¡ ცვლილებáƒ"
@@ -22816,15 +24638,28 @@ msgid "Clearcoat Gloss"
msgstr "áƒáƒœáƒ˜áƒ›áƒáƒªáƒ˜áƒ˜áƒ¡ გáƒáƒ áƒ“áƒáƒ¥áƒ›áƒœáƒ˜áƒ¡ ცვლილებáƒ"
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Clearcoat Texture"
+msgstr "მáƒáƒœáƒ˜áƒ¨áƒ•ნის მრუდის ცვლილებáƒ"
+
+#: scene/resources/material.cpp
msgid "Anisotropy"
msgstr ""
#: scene/resources/material.cpp
+msgid "Anisotropy Flowmap"
+msgstr ""
+
+#: scene/resources/material.cpp
#, fuzzy
msgid "Ambient Occlusion"
msgstr "შექმნáƒ"
#: scene/resources/material.cpp
+msgid "On UV2"
+msgstr ""
+
+#: scene/resources/material.cpp
#, fuzzy
msgid "Texture Channel"
msgstr "მáƒáƒ¡áƒ¨áƒ¢áƒáƒ‘ის თáƒáƒœáƒáƒ¤áƒáƒ áƒ“áƒáƒ‘áƒ:"
@@ -22861,6 +24696,11 @@ msgstr "გáƒáƒ áƒ“áƒáƒ¡áƒ•ლáƒ"
#: scene/resources/material.cpp
#, fuzzy
+msgid "Transmission Texture"
+msgstr "გáƒáƒ áƒ“áƒáƒ¡áƒ•ლáƒ"
+
+#: scene/resources/material.cpp
+#, fuzzy
msgid "Refraction"
msgstr "ფუნქციის შექმნáƒ"
@@ -22877,6 +24717,10 @@ msgid "UV1"
msgstr ""
#: scene/resources/material.cpp
+msgid "Triplanar"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Triplanar Sharpness"
msgstr ""
@@ -23080,6 +24924,16 @@ msgstr "მáƒáƒœáƒ˜áƒ¨áƒ•ნის მრუდის ცვლილებáƒ"
msgid "Point Count"
msgstr "სáƒáƒ§áƒ•áƒáƒ áƒšáƒ”ბი:"
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Scale Random"
+msgstr "მáƒáƒ¡áƒ¨áƒ¢áƒáƒ‘ის თáƒáƒœáƒáƒ¤áƒáƒ áƒ“áƒáƒ‘áƒ:"
+
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Scale Curve"
+msgstr "კვáƒáƒœáƒ«áƒ˜áƒ¡ მრუდის რედáƒáƒ¥áƒ¢áƒ˜áƒ áƒ”ბáƒ"
+
#: scene/resources/physics_material.cpp
msgid "Rough"
msgstr ""
@@ -23137,10 +24991,6 @@ msgid "A"
msgstr ""
#: scene/resources/shader.cpp
-msgid "Code"
-msgstr ""
-
-#: scene/resources/shader.cpp
msgid "Custom Defines"
msgstr ""
@@ -23229,14 +25079,6 @@ msgid "Grow End"
msgstr ""
#: scene/resources/texture.cpp
-msgid "Storage"
-msgstr ""
-
-#: scene/resources/texture.cpp
-msgid "Lossy Quality"
-msgstr ""
-
-#: scene/resources/texture.cpp
#, fuzzy
msgid "Load Path"
msgstr "გზáƒ"
@@ -23362,10 +25204,6 @@ msgstr "áƒáƒ áƒáƒ¡áƒ¬áƒáƒ áƒ˜ ფáƒáƒœáƒ¢áƒ˜áƒ¡ ზáƒáƒ›áƒ."
msgid "Fallback Environment"
msgstr ""
-#: scene/resources/world.cpp scene/resources/world_2d.cpp
-msgid "Space"
-msgstr ""
-
#: scene/resources/world.cpp
msgid "Scenario"
msgstr ""
@@ -23440,8 +25278,34 @@ msgstr ""
msgid "Wet"
msgstr ""
-#: servers/audio/effects/audio_effect_compressor.cpp
-msgid "Threshold"
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "Voice"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+msgid "Delay (ms)"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_phaser.cpp
+msgid "Rate Hz"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#, fuzzy
+msgid "Depth (ms)"
+msgstr "მáƒáƒ¡áƒ¨áƒ¢áƒáƒ‘ის თáƒáƒœáƒáƒ¤áƒáƒ áƒ“áƒáƒ‘áƒ:"
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+msgid "Level dB"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+#: servers/audio/effects/audio_effect_panner.cpp
+msgid "Pan"
msgstr ""
#: servers/audio/effects/audio_effect_compressor.cpp
@@ -23466,19 +25330,6 @@ msgid "Tap 1"
msgstr ""
#: servers/audio/effects/audio_effect_delay.cpp
-msgid "Delay (ms)"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_delay.cpp
-msgid "Level dB"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_delay.cpp
-#: servers/audio/effects/audio_effect_panner.cpp
-msgid "Pan"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_delay.cpp
msgid "Tap 2"
msgstr ""
@@ -23537,10 +25388,6 @@ msgstr ""
msgid "Range Max Hz"
msgstr ""
-#: servers/audio/effects/audio_effect_phaser.cpp
-msgid "Rate Hz"
-msgstr ""
-
#: servers/audio/effects/audio_effect_pitch_shift.cpp
msgid "Oversampling"
msgstr ""
@@ -23556,7 +25403,7 @@ msgid "Predelay"
msgstr ""
#: servers/audio/effects/audio_effect_reverb.cpp
-msgid "(msec)"
+msgid "Msec"
msgstr ""
#: servers/audio/effects/audio_effect_reverb.cpp
diff --git a/editor/translations/km.po b/editor/translations/km.po
index 5eccef2159..e2523b9cbf 100644
--- a/editor/translations/km.po
+++ b/editor/translations/km.po
@@ -18,7 +18,7 @@ msgstr ""
"Plural-Forms: nplurals=1; plural=0;\n"
"X-Generator: Weblate 4.7-dev\n"
-#: core/bind/core_bind.cpp
+#: core/bind/core_bind.cpp main/main.cpp
msgid "Tablet Driver"
msgstr ""
@@ -109,8 +109,8 @@ msgstr ""
#: core/bind/core_bind.cpp editor/editor_settings.cpp main/main.cpp
#: modules/gdscript/gdscript_editor.cpp modules/gridmap/grid_map.cpp
#: modules/mono/csharp_script.cpp modules/visual_script/visual_script_nodes.cpp
-#: scene/2d/tile_map.cpp scene/3d/camera.cpp scene/gui/control.cpp
-#: scene/gui/graph_edit.cpp scene/main/viewport.cpp
+#: scene/2d/tile_map.cpp scene/3d/camera.cpp scene/3d/light.cpp
+#: scene/gui/control.cpp scene/gui/graph_edit.cpp scene/main/viewport.cpp
#: scene/resources/dynamic_font.cpp scene/resources/navigation_mesh.cpp
#: scene/resources/primitive_meshes.cpp scene/resources/sky.cpp
#: scene/resources/style_box.cpp scene/resources/texture.cpp
@@ -203,8 +203,7 @@ msgid "Data"
msgstr ""
#: core/io/file_access_network.cpp core/register_core_types.cpp
-#: editor/editor_settings.cpp editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp main/main.cpp
+#: editor/editor_settings.cpp main/main.cpp
#: modules/gdscript/language_server/gdscript_language_server.cpp
msgid "Network"
msgstr ""
@@ -461,9 +460,10 @@ msgstr ""
msgid "Relative"
msgstr ""
-#: core/os/input_event.cpp scene/2d/camera_2d.cpp
-#: scene/3d/interpolated_camera.cpp scene/animation/animation_player.cpp
-#: scene/resources/environment.cpp
+#: core/os/input_event.cpp scene/2d/camera_2d.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/interpolated_camera.cpp
+#: scene/animation/animation_player.cpp scene/resources/environment.cpp
+#: scene/resources/particles_material.cpp
msgid "Speed"
msgstr ""
@@ -508,8 +508,9 @@ msgstr ""
msgid "Pitch"
msgstr ""
-#: core/os/input_event.cpp scene/2d/physics_body_2d.cpp
-#: scene/3d/physics_body.cpp
+#: core/os/input_event.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/physics_body_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/3d/physics_body.cpp scene/resources/particles_material.cpp
msgid "Velocity"
msgstr ""
@@ -526,6 +527,8 @@ msgid "Controller Value"
msgstr ""
#: core/project_settings.cpp editor/editor_node.cpp main/main.cpp
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/windows/export/export.cpp
msgid "Application"
msgstr ""
@@ -541,13 +544,16 @@ msgstr ""
#: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp
#: editor/editor_plugin_settings.cpp editor/editor_profiler.cpp
#: editor/project_manager.cpp editor/settings_config_dialog.cpp
-#: modules/gdnative/nativescript/nativescript.cpp scene/2d/area_2d.cpp
-#: scene/3d/area.cpp scene/main/node.cpp
+#: modules/gdnative/nativescript/nativescript.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/osx/export/export.cpp scene/2d/area_2d.cpp scene/3d/area.cpp
+#: scene/main/node.cpp
msgid "Name"
msgstr ""
#: core/project_settings.cpp editor/editor_help.cpp
-#: modules/visual_script/visual_script_nodes.cpp
+#: modules/visual_script/visual_script_nodes.cpp platform/uwp/export/export.cpp
+#: platform/windows/export/export.cpp
msgid "Description"
msgstr ""
@@ -583,7 +589,7 @@ msgid "Custom User Dir Name"
msgstr ""
#: core/project_settings.cpp editor/animation_track_editor.cpp
-#: editor/editor_audio_buses.cpp servers/audio_server.cpp
+#: editor/editor_audio_buses.cpp main/main.cpp servers/audio_server.cpp
msgid "Audio"
msgstr ""
@@ -734,10 +740,13 @@ msgstr ""
msgid "Sharpen Intensity"
msgstr ""
-#: core/project_settings.cpp editor/editor_node.cpp editor/editor_settings.cpp
-#: editor/plugins/script_editor_plugin.cpp editor/project_export.cpp
-#: main/main.cpp modules/gdscript/gdscript.cpp
-#: modules/visual_script/visual_script.cpp scene/3d/room_manager.cpp
+#: core/project_settings.cpp editor/editor_export.cpp editor/editor_node.cpp
+#: editor/editor_settings.cpp editor/plugins/script_editor_plugin.cpp
+#: editor/project_export.cpp main/main.cpp modules/gdscript/gdscript.cpp
+#: modules/visual_script/visual_script.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp scene/3d/room_manager.cpp
#: scene/main/scene_tree.cpp scene/resources/shape_2d.cpp
#: servers/visual_server.cpp
msgid "Debug"
@@ -959,6 +968,7 @@ msgid "Subsurface Scattering"
msgstr ""
#: drivers/gles3/rasterizer_scene_gles3.cpp
+#: editor/import/resource_importer_texture.cpp
#: editor/plugins/spatial_editor_plugin.cpp modules/gltf/gltf_node.cpp
#: modules/gridmap/grid_map.cpp scene/2d/cpu_particles_2d.cpp
#: scene/2d/node_2d.cpp scene/2d/parallax_layer.cpp scene/2d/polygon_2d.cpp
@@ -1255,6 +1265,7 @@ msgid "Editors"
msgstr ""
#: editor/animation_track_editor.cpp editor/editor_settings.cpp
+#: editor/import/resource_importer_scene.cpp
#: editor/plugins/animation_player_editor_plugin.cpp editor/scene_tree_dock.cpp
#: scene/2d/animated_sprite.cpp scene/2d/cpu_particles_2d.cpp
#: scene/2d/sprite.cpp scene/3d/cpu_particles.cpp scene/3d/sprite_3d.cpp
@@ -1471,14 +1482,14 @@ msgstr ""
msgid "Seconds"
msgstr ""
-#: editor/animation_track_editor.cpp
+#: editor/animation_track_editor.cpp editor/import/resource_importer_scene.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp main/main.cpp
#: scene/resources/texture.cpp
msgid "FPS"
msgstr ""
#: editor/animation_track_editor.cpp editor/editor_plugin_settings.cpp
-#: editor/editor_resource_picker.cpp
+#: editor/editor_resource_picker.cpp editor/import/resource_importer_wav.cpp
#: editor/plugins/polygon_2d_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
@@ -2420,7 +2431,9 @@ msgid "Remove Autoload"
msgstr ""
#: editor/editor_autoload_settings.cpp editor/editor_plugin_settings.cpp
-#: modules/gdscript/gdscript.cpp scene/2d/polygon_2d.cpp scene/3d/area.cpp
+#: modules/gdscript/gdscript.cpp platform/android/export/export_plugin.cpp
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#: scene/2d/polygon_2d.cpp scene/3d/area.cpp scene/3d/physics_joint.cpp
#: scene/3d/reflection_probe.cpp scene/main/canvas_layer.cpp
#: scene/resources/material.cpp servers/visual_server.cpp
msgid "Enable"
@@ -2573,6 +2586,55 @@ msgstr ""
#: editor/editor_export.cpp platform/android/export/export_plugin.cpp
#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
+msgid "Custom Template"
+msgstr ""
+
+#: editor/editor_export.cpp editor/project_export.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp
+msgid "Release"
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Binary Format"
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "64 Bits"
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Embed PCK"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "Texture Format"
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "BPTC"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "S3TC"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "ETC"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "ETC2"
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "No BPTC Fallbacks"
+msgstr ""
+
+#: editor/editor_export.cpp platform/android/export/export_plugin.cpp
+#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
msgid "Custom debug template not found."
msgstr ""
@@ -2746,6 +2808,7 @@ msgid "Make Current"
msgstr ""
#: editor/editor_feature_profile.cpp editor/editor_node.cpp
+#: editor/import/resource_importer_scene.cpp
#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
msgid "Import"
msgstr ""
@@ -2870,8 +2933,11 @@ msgstr ""
msgid "Display Mode"
msgstr ""
-#: editor/editor_file_dialog.cpp main/main.cpp modules/csg/csg_shape.cpp
-#: modules/visual_script/visual_script_nodes.cpp
+#: editor/editor_file_dialog.cpp
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+#: editor/import/resource_importer_wav.cpp main/main.cpp
+#: modules/csg/csg_shape.cpp modules/visual_script/visual_script_nodes.cpp
#: modules/visual_script/visual_script_yield_nodes.cpp scene/2d/light_2d.cpp
#: scene/2d/physics_body_2d.cpp scene/2d/tile_map.cpp
#: scene/3d/baked_lightmap.cpp scene/3d/light.cpp scene/3d/physics_body.cpp
@@ -3003,7 +3069,9 @@ msgstr ""
msgid "Reimport Missing Imported Files"
msgstr ""
-#: editor/editor_help.cpp
+#: editor/editor_help.cpp scene/2d/camera_2d.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/resources/dynamic_font.cpp
+#: scene/resources/style_box.cpp
msgid "Top"
msgstr ""
@@ -3055,6 +3123,7 @@ msgid "Fonts"
msgstr ""
#: editor/editor_help.cpp editor/plugins/theme_editor_plugin.cpp
+#: platform/iphone/export/export.cpp
msgid "Icons"
msgstr ""
@@ -3213,7 +3282,9 @@ msgstr ""
msgid "Pin value [Disabled because '%s' is editor-only]"
msgstr ""
-#: editor/editor_inspector.cpp editor/scene_tree_dock.cpp
+#: editor/editor_inspector.cpp
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+#: editor/scene_tree_dock.cpp
#: modules/visual_script/visual_script_func_nodes.cpp
#: modules/visual_script/visual_script_nodes.cpp
#: modules/visual_script/visual_script_property_selector.cpp
@@ -3524,6 +3595,14 @@ msgid "Quick Open Script..."
msgstr ""
#: editor/editor_node.cpp
+msgid "Save & Reload"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Save changes to '%s' before reloading?"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "Save & Close"
msgstr ""
@@ -3634,6 +3713,10 @@ msgid "Open Project Manager?"
msgstr ""
#: editor/editor_node.cpp
+msgid "Save changes to the following scene(s) before reloading?"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "Save & Quit"
msgstr ""
@@ -3873,7 +3956,7 @@ msgid "Update Vital Only"
msgstr ""
#: editor/editor_node.cpp
-msgid "Translate Properties"
+msgid "Localize Settings"
msgstr ""
#: editor/editor_node.cpp
@@ -3889,7 +3972,7 @@ msgid "Inspector"
msgstr ""
#: editor/editor_node.cpp
-msgid "Capitalize Properties"
+msgid "Default Property Name Style"
msgstr ""
#: editor/editor_node.cpp
@@ -4449,7 +4532,9 @@ msgstr ""
msgid "Update"
msgstr ""
-#: editor/editor_plugin_settings.cpp
+#: editor/editor_plugin_settings.cpp platform/android/export/export_plugin.cpp
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp
msgid "Version"
msgstr ""
@@ -5388,7 +5473,7 @@ msgstr ""
msgid "Rect Custom Position"
msgstr ""
-#: editor/editor_settings.cpp
+#: editor/editor_settings.cpp platform/android/export/export_plugin.cpp
msgid "Screen"
msgstr ""
@@ -5411,6 +5496,19 @@ msgid "Editor SSL Certificates"
msgstr ""
#: editor/editor_settings.cpp
+msgid "HTTP Proxy"
+msgstr ""
+
+#: editor/editor_settings.cpp
+msgid "Host"
+msgstr ""
+
+#: editor/editor_settings.cpp editor/fileserver/editor_file_server.cpp
+#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp
+msgid "Port"
+msgstr ""
+
+#: editor/editor_settings.cpp
msgid "Project Manager"
msgstr ""
@@ -5450,7 +5548,8 @@ msgstr ""
msgid "String Color"
msgstr ""
-#: editor/editor_settings.cpp
+#: editor/editor_settings.cpp platform/javascript/export/export.cpp
+#: platform/uwp/export/export.cpp
msgid "Background Color"
msgstr ""
@@ -5608,22 +5707,6 @@ msgid "Starting the download..."
msgstr ""
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "HTTP Proxy"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Host"
-msgstr ""
-
-#: editor/export_template_manager.cpp editor/fileserver/editor_file_server.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp main/main.cpp
-#: modules/mono/mono_gd/gd_mono.cpp
-msgid "Port"
-msgstr ""
-
-#: editor/export_template_manager.cpp
msgid "Error requesting URL:"
msgstr ""
@@ -5865,6 +5948,7 @@ msgstr ""
#: editor/fileserver/editor_file_server.cpp
#: editor/plugins/version_control_editor_plugin.cpp
+#: platform/uwp/export/export.cpp platform/windows/export/export.cpp
msgid "Password"
msgstr ""
@@ -6228,6 +6312,106 @@ msgstr ""
msgid "Use Ambient"
msgstr ""
+#: editor/import/resource_importer_bitmask.cpp
+msgid "Create From"
+msgstr ""
+
+#: editor/import/resource_importer_bitmask.cpp
+#: servers/audio/effects/audio_effect_compressor.cpp
+msgid "Threshold"
+msgstr ""
+
+#: editor/import/resource_importer_csv_translation.cpp
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_scene.cpp
+#: editor/import/resource_importer_texture.cpp
+#: editor/import/resource_importer_wav.cpp scene/3d/gi_probe.cpp
+msgid "Compress"
+msgstr ""
+
+#: editor/import/resource_importer_csv_translation.cpp
+msgid "Delimiter"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+msgid "No BPTC If RGB"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/sprite_3d.cpp
+#: scene/resources/material.cpp scene/resources/particles_material.cpp
+#: scene/resources/texture.cpp
+msgid "Flags"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/animation/tween.cpp
+#: scene/resources/texture.cpp
+msgid "Repeat"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/2d/light_2d.cpp
+#: scene/gui/control.cpp scene/resources/navigation_mesh.cpp
+msgid "Filter"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+msgid "Mipmaps"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+msgid "Anisotropic"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+msgid "sRGB"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+msgid "Slices"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
+#: scene/resources/style_box.cpp
+msgid "Horizontal"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
+#: scene/resources/style_box.cpp
+msgid "Vertical"
+msgstr ""
+
+#: editor/import/resource_importer_obj.cpp
+#, fuzzy
+msgid "Generate Tangents"
+msgstr "ផ្លាស់ទី Bezier Points"
+
+#: editor/import/resource_importer_obj.cpp
+msgid "Scale Mesh"
+msgstr ""
+
+#: editor/import/resource_importer_obj.cpp
+msgid "Offset Mesh"
+msgstr ""
+
+#: editor/import/resource_importer_obj.cpp
+#: editor/import/resource_importer_scene.cpp
+msgid "Octahedral Compression"
+msgstr ""
+
+#: editor/import/resource_importer_obj.cpp
+msgid "Optimize Mesh Flags"
+msgstr ""
+
#: editor/import/resource_importer_scene.cpp
msgid "Import as Single Scene"
msgstr ""
@@ -6268,6 +6452,135 @@ msgstr ""
msgid "Import as Multiple Scenes+Materials"
msgstr ""
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+#: scene/3d/physics_joint.cpp
+msgid "Nodes"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Root Type"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Root Name"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Root Scale"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Custom Script"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp scene/resources/texture.cpp
+msgid "Storage"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Use Legacy Names"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+msgid "Materials"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp platform/osx/export/export.cpp
+msgid "Location"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Keep On Reimport"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+msgid "Meshes"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Ensure Tangents"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Light Baking"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Lightmap Texel Size"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+msgid "Skins"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Use Named Skins"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "External Files"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Store In Subdir"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Filter Script"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Keep Custom Tracks"
+msgstr "Anim ផ្លាស់ប្ážáž¼ážš Transform"
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Optimizer"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp main/main.cpp
+#: modules/mono/mono_gd/gd_mono.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp scene/2d/camera_2d.cpp scene/2d/light_2d.cpp
+#: scene/2d/navigation_polygon.cpp scene/2d/ray_cast_2d.cpp scene/2d/sprite.cpp
+#: scene/2d/y_sort.cpp scene/3d/audio_stream_player_3d.cpp
+#: scene/3d/baked_lightmap.cpp scene/3d/interpolated_camera.cpp
+#: scene/3d/light.cpp scene/3d/navigation_mesh_instance.cpp
+#: scene/3d/physics_joint.cpp scene/3d/ray_cast.cpp scene/3d/sprite_3d.cpp
+#: scene/gui/graph_edit.cpp scene/gui/rich_text_label.cpp
+#: scene/resources/curve.cpp scene/resources/environment.cpp
+#: scene/resources/material.cpp
+msgid "Enabled"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Max Linear Error"
+msgstr "កញ្ចក់"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Max Angular Error"
+msgstr "កញ្ចក់"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Max Angle"
+msgstr "ážáž˜áŸ’លៃ:"
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Remove Unused Tracks"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Clips"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/particles_2d.cpp scene/3d/area.cpp scene/3d/cpu_particles.cpp
+#: scene/3d/particles.cpp scene/resources/environment.cpp
+msgid "Amount"
+msgstr ""
+
#: editor/import/resource_importer_scene.cpp
#: editor/plugins/mesh_library_editor_plugin.cpp
msgid "Import Scene"
@@ -6309,12 +6622,134 @@ msgstr ""
msgid "Saving..."
msgstr ""
+#: editor/import/resource_importer_texture.cpp scene/resources/texture.cpp
+msgid "Lossy Quality"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "HDR Mode"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "BPTC LDR"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/mesh_instance_2d.cpp scene/2d/multimesh_instance_2d.cpp
+#: scene/2d/particles_2d.cpp scene/2d/sprite.cpp scene/resources/style_box.cpp
+msgid "Normal Map"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Process"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Fix Alpha Border"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Premult Alpha"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Hdr As Srgb"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Invert Color"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Normal Map Invert Y"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
+#: scene/audio/audio_stream_player.cpp scene/gui/video_player.cpp
+msgid "Stream"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Size Limit"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Detect 3D"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "SVG"
+msgstr ""
+
#: editor/import/resource_importer_texture.cpp
msgid ""
"Warning, no suitable PC VRAM compression enabled in Project Settings. This "
"texture will not display correctly on PC."
msgstr ""
+#: editor/import/resource_importer_texture_atlas.cpp
+msgid "Atlas File"
+msgstr ""
+
+#: editor/import/resource_importer_texture_atlas.cpp
+msgid "Import Mode"
+msgstr ""
+
+#: editor/import/resource_importer_texture_atlas.cpp
+msgid "Crop To Region"
+msgstr ""
+
+#: editor/import/resource_importer_texture_atlas.cpp
+msgid "Trim Alpha Border From Region"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp scene/2d/physics_body_2d.cpp
+msgid "Force"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+msgid "8 Bit"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp main/main.cpp
+#: modules/mono/editor/csharp_project.cpp modules/mono/mono_gd/gd_mono.cpp
+msgid "Mono"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+#, fuzzy
+msgid "Max Rate"
+msgstr "ážáž˜áŸ’លៃ:"
+
+#: editor/import/resource_importer_wav.cpp
+#, fuzzy
+msgid "Max Rate Hz"
+msgstr "ážáž˜áŸ’លៃ:"
+
+#: editor/import/resource_importer_wav.cpp
+msgid "Trim"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+msgid "Normalize"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+msgid "Loop Mode"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+msgid "Loop Begin"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+msgid "Loop End"
+msgstr ""
+
#: editor/import_defaults_editor.cpp
msgid "Select Importer"
msgstr ""
@@ -6383,6 +6818,26 @@ msgid "Failed to load resource."
msgstr ""
#: editor/inspector_dock.cpp
+msgid "Property Name Style"
+msgstr ""
+
+#: editor/inspector_dock.cpp scene/gui/color_picker.cpp
+msgid "Raw"
+msgstr ""
+
+#: editor/inspector_dock.cpp
+msgid "Capitalized"
+msgstr ""
+
+#: editor/inspector_dock.cpp
+msgid "Localized"
+msgstr ""
+
+#: editor/inspector_dock.cpp
+msgid "Localization not available for current language."
+msgstr ""
+
+#: editor/inspector_dock.cpp
msgid "Copy Properties"
msgstr ""
@@ -7411,18 +7866,22 @@ msgid "License (Z-A)"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
+msgctxt "Pagination"
msgid "First"
msgstr ""
-#: editor/plugins/asset_library_editor_plugin.cpp scene/gui/control.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgctxt "Pagination"
msgid "Previous"
msgstr ""
-#: editor/plugins/asset_library_editor_plugin.cpp scene/gui/control.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgctxt "Pagination"
msgid "Next"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
+msgctxt "Pagination"
msgid "Last"
msgstr ""
@@ -7656,19 +8115,19 @@ msgid ""
"margins."
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Top Left"
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Top Right"
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Bottom Right"
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Bottom Left"
msgstr ""
@@ -8366,6 +8825,18 @@ msgstr ""
msgid "Gradient Edited"
msgstr ""
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+msgid "Swap GradientTexture2D Fill Points"
+msgstr ""
+
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+msgid "Swap Gradient Fill Points"
+msgstr ""
+
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+msgid "Toggle Grid Snap"
+msgstr ""
+
#: editor/plugins/item_list_editor_plugin.cpp
msgid "Item %d"
msgstr ""
@@ -8579,8 +9050,8 @@ msgid ""
"%s"
msgstr ""
-#: editor/plugins/mesh_library_editor_plugin.cpp modules/gridmap/grid_map.cpp
-msgid "Mesh Library"
+#: editor/plugins/mesh_library_editor_plugin.cpp
+msgid "MeshLibrary"
msgstr ""
#: editor/plugins/mesh_library_editor_plugin.cpp
@@ -9552,8 +10023,8 @@ msgstr ""
msgid "Source"
msgstr ""
-#: editor/plugins/script_text_editor.cpp scene/3d/interpolated_camera.cpp
-#: scene/animation/skeleton_ik.cpp
+#: editor/plugins/script_text_editor.cpp platform/uwp/export/export.cpp
+#: scene/3d/interpolated_camera.cpp scene/animation/skeleton_ik.cpp
msgid "Target"
msgstr ""
@@ -10510,7 +10981,9 @@ msgstr ""
#: editor/plugins/sprite_frames_editor_plugin.cpp
#: modules/gltf/gltf_animation.cpp modules/minimp3/audio_stream_mp3.cpp
-#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp scene/2d/path_2d.cpp
+#: modules/minimp3/resource_importer_mp3.cpp
+#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp
+#: modules/stb_vorbis/resource_importer_ogg_vorbis.cpp scene/2d/path_2d.cpp
#: scene/3d/path.cpp scene/resources/animation.cpp scene/resources/material.cpp
msgid "Loop"
msgstr ""
@@ -11370,8 +11843,9 @@ msgstr ""
msgid "Priority"
msgstr ""
-#: editor/plugins/tile_set_editor_plugin.cpp main/main.cpp scene/gui/button.cpp
-#: scene/gui/item_list.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp main/main.cpp
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#: scene/gui/button.cpp scene/gui/item_list.cpp
msgid "Icon"
msgstr ""
@@ -12650,10 +13124,6 @@ msgid ""
msgstr ""
#: editor/project_export.cpp
-msgid "Release"
-msgstr ""
-
-#: editor/project_export.cpp
msgid "Exporting All"
msgstr ""
@@ -14413,6 +14883,7 @@ msgid "Change AudioStreamPlayer3D Emission Angle"
msgstr ""
#: editor/spatial_editor_gizmos.cpp modules/gltf/gltf_node.cpp
+#: platform/osx/export/export.cpp
msgid "Camera"
msgstr ""
@@ -14673,7 +15144,8 @@ msgstr ""
msgid "Use Nvidia Rect Flicker Workaround"
msgstr ""
-#: main/main.cpp platform/uwp/os_uwp.cpp
+#: main/main.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp platform/uwp/os_uwp.cpp
msgid "Display"
msgstr ""
@@ -14728,18 +15200,6 @@ msgstr ""
msgid "Allowed"
msgstr ""
-#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp scene/2d/camera_2d.cpp
-#: scene/2d/light_2d.cpp scene/2d/navigation_polygon.cpp
-#: scene/2d/ray_cast_2d.cpp scene/2d/sprite.cpp scene/2d/y_sort.cpp
-#: scene/3d/audio_stream_player_3d.cpp scene/3d/baked_lightmap.cpp
-#: scene/3d/interpolated_camera.cpp scene/3d/light.cpp
-#: scene/3d/navigation_mesh_instance.cpp scene/3d/ray_cast.cpp
-#: scene/3d/sprite_3d.cpp scene/gui/graph_edit.cpp
-#: scene/gui/rich_text_label.cpp scene/resources/curve.cpp
-#: scene/resources/environment.cpp
-msgid "Enabled"
-msgstr ""
-
#: main/main.cpp
msgid "Intended Usage"
msgstr ""
@@ -14768,12 +15228,13 @@ msgstr ""
msgid "Handheld"
msgstr ""
-#: main/main.cpp
+#: main/main.cpp platform/javascript/export/export.cpp
+#: platform/uwp/export/export.cpp
msgid "Orientation"
msgstr ""
#: main/main.cpp scene/gui/scroll_container.cpp scene/gui/text_edit.cpp
-#: scene/main/scene_tree.cpp
+#: scene/main/scene_tree.cpp scene/register_scene_types.cpp
msgid "Common"
msgstr ""
@@ -14812,7 +15273,7 @@ msgid "Verbose stdout"
msgstr ""
#: main/main.cpp
-msgid "Frame Delay (msec)"
+msgid "Frame Delay Msec"
msgstr ""
#: main/main.cpp
@@ -14929,11 +15390,6 @@ msgstr ""
msgid "Tooltip Position Offset"
msgstr ""
-#: main/main.cpp modules/mono/editor/csharp_project.cpp
-#: modules/mono/mono_gd/gd_mono.cpp
-msgid "Mono"
-msgstr ""
-
#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp
msgid "Debugger Agent"
msgstr ""
@@ -15454,7 +15910,7 @@ msgstr ""
msgid "Intensity"
msgstr ""
-#: modules/gltf/gltf_light.cpp scene/2d/light_2d.cpp
+#: modules/gltf/gltf_light.cpp scene/2d/light_2d.cpp scene/3d/light.cpp
msgid "Range"
msgstr ""
@@ -15585,10 +16041,6 @@ msgstr ""
msgid "Use Named Skin Binds"
msgstr ""
-#: modules/gltf/gltf_state.cpp scene/3d/physics_joint.cpp
-msgid "Nodes"
-msgstr ""
-
#: modules/gltf/gltf_state.cpp
msgid "Buffer Views"
msgstr ""
@@ -15598,14 +16050,6 @@ msgid "Accessors"
msgstr ""
#: modules/gltf/gltf_state.cpp
-msgid "Meshes"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp
-msgid "Materials"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp
#, fuzzy
msgid "Scene Name"
msgstr "បញ្ចូល Key នៅទីនáŸáŸ‡"
@@ -15620,15 +16064,11 @@ msgstr ""
msgid "Textures"
msgstr ""
-#: modules/gltf/gltf_state.cpp
+#: modules/gltf/gltf_state.cpp platform/uwp/export/export.cpp
msgid "Images"
msgstr ""
#: modules/gltf/gltf_state.cpp
-msgid "Skins"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp
msgid "Cameras"
msgstr ""
@@ -15657,10 +16097,14 @@ msgid "Src Image"
msgstr ""
#: modules/gridmap/grid_map.cpp
-msgid "Physics Material"
+msgid "Mesh Library"
msgstr ""
#: modules/gridmap/grid_map.cpp
+msgid "Physics Material"
+msgstr ""
+
+#: modules/gridmap/grid_map.cpp scene/3d/visual_instance.cpp
msgid "Use In Baked Light"
msgstr ""
@@ -15687,6 +16131,7 @@ msgstr ""
#: modules/gridmap/grid_map.cpp scene/2d/collision_object_2d.cpp
#: scene/2d/tile_map.cpp scene/3d/collision_object.cpp scene/3d/soft_body.cpp
+#: scene/resources/material.cpp
msgid "Mask"
msgstr ""
@@ -15867,7 +16312,9 @@ msgid "Ultra Quality Ray Count"
msgstr ""
#: modules/minimp3/audio_stream_mp3.cpp
+#: modules/minimp3/resource_importer_mp3.cpp
#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp
+#: modules/stb_vorbis/resource_importer_ogg_vorbis.cpp
msgid "Loop Offset"
msgstr ""
@@ -16890,6 +17337,163 @@ msgid "The package must have at least one '.' separator."
msgstr ""
#: platform/android/export/export_plugin.cpp
+msgid "Use Custom Build"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Export Format"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Keystore"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Debug User"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+msgid "Debug Password"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Release User"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Release Password"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "One Click Deploy"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Clear Previous Install"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp scene/resources/shader.cpp
+msgid "Code"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Min SDK"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Target SDK"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+msgid "Package"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Unique Name"
+msgstr "បញ្ចូល Key នៅទីនáŸáŸ‡"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Signed"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Classify As Game"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Retain Data On Uninstall"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Exclude From Recents"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Graphics"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "OpenGL Debug"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "XR Features"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "XR Mode"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Hand Tracking"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Hand Tracking Frequency"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Passthrough"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Immersive Mode"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Support Small"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Support Normal"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Support Large"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Support Xlarge"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "User Data Backup"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Allow"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+msgid "Command Line"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+msgid "Extra Args"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "APK Expansion"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Salt"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Public Key"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Permissions"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Custom Permissions"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
msgid "Select device from the list"
msgstr ""
@@ -17175,6 +17779,159 @@ msgid "The character '%s' is not allowed in Identifier."
msgstr ""
#: platform/iphone/export/export.cpp
+msgid "App Store Team ID"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Provisioning Profile UUID Debug"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Code Sign Identity Debug"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Export Method Debug"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Provisioning Profile UUID Release"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Code Sign Identity Release"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Export Method Release"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Targeted Device Family"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Info"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Identifier"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Signature"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Short Version"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/windows/export/export.cpp
+msgid "Copyright"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Capabilities"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Access Wi-Fi"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Push Notifications"
+msgstr ""
+
+#: platform/iphone/export/export.cpp scene/3d/baked_lightmap.cpp
+msgid "User Data"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Accessible From Files App"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Accessible From Itunes Sharing"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Privacy"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Camera Usage Description"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Microphone Usage Description"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Photolibrary Usage Description"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPhone 120 X 120"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPhone 180 X 180"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 76 X 76"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 152 X 152"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 167 X 167"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "App Store 1024 X 1024"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Spotlight 40 X 40"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Spotlight 80 X 80"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Storyboard"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Use Launch Screen Storyboard"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Image Scale Mode"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Custom Image @2x"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Custom Image @3x"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Use Custom BG Color"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Custom BG Color"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
msgid "App Store Team ID not specified - cannot configure the project."
msgstr ""
@@ -17211,6 +17968,74 @@ msgid "Could not read file:"
msgstr ""
#: platform/javascript/export/export.cpp
+msgid "Variant"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Export Type"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "VRAM Texture Compression"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "For Desktop"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "For Mobile"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Html"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Export Icon"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Custom Html Shell"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Head Include"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Canvas Resize Policy"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Focus Canvas On Start"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Experimental Virtual Keyboard"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Progressive Web App"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Offline Page"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 144 X 144"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 180 X 180"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 512 X 512"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
msgid "Could not read HTML shell:"
msgstr ""
@@ -17315,6 +18140,177 @@ msgid "Unknown object type."
msgstr ""
#: platform/osx/export/export.cpp
+msgid "App Category"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "High Res"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Location Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Address Book Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Calendar Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Photos Library Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Desktop Folder Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Documents Folder Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Downloads Folder Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Network Volumes Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Removable Volumes Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+msgid "Codesign"
+msgstr ""
+
+#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
+#: platform/windows/export/export.cpp
+msgid "Identity"
+msgstr ""
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#, fuzzy
+msgid "Timestamp"
+msgstr "áž–áŸáž›ážœáŸáž›áž¶:"
+
+#: platform/osx/export/export.cpp
+msgid "Hardened Runtime"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Replace Existing Signature"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Entitlements"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Custom File"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Allow JIT Code Execution"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Allow Unsigned Executable Memory"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Allow Dyld Environment Variables"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Disable Library Validation"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Audio Input"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Address Book"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Calendars"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Photos Library"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Apple Events"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Debugging"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "App Sandbox"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Network Server"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Network Client"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Device Usb"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Device Bluetooth"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Files Downloads"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Files Pictures"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Files Music"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Files Movies"
+msgstr ""
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#, fuzzy
+msgid "Custom Options"
+msgstr "Anim ផ្លាស់ប្ážáž¼ážš Transform"
+
+#: platform/osx/export/export.cpp
+msgid "Notarization"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Apple ID Name"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Apple ID Password"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Apple Team ID"
+msgstr ""
+
+#: platform/osx/export/export.cpp
msgid ""
"Note: The notarization process generally takes less than an hour. When the "
"process is completed, you'll receive an email."
@@ -17504,6 +18500,123 @@ msgid "Force Builtin Codesign"
msgstr ""
#: platform/uwp/export/export.cpp
+msgid "Architecture"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Display Name"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Short Name"
+msgstr "បញ្ចូល Key នៅទីនáŸáŸ‡"
+
+#: platform/uwp/export/export.cpp
+msgid "Publisher"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Publisher Display Name"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Product Guid"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Publisher Guid"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Signing"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Certificate"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Algorithm"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Major"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Minor"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Build"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Revision"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Landscape"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Portrait"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Landscape Flipped"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Portrait Flipped"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Store Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 44 X 44 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 71 X 71 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 150 X 150 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 310 X 310 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Wide 310 X 150 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Splash Screen"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Tiles"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Square 150 X 150"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Wide 310 X 150"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Square 310 X 310"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
msgid "Invalid package short name."
msgstr ""
@@ -17568,11 +18681,43 @@ msgid "Debug Certificate"
msgstr ""
#: platform/uwp/export/export.cpp
-msgid "Debug Password"
+msgid "Debug Algorithm"
msgstr ""
-#: platform/uwp/export/export.cpp
-msgid "Debug Algorithm"
+#: platform/windows/export/export.cpp
+msgid "Identity Type"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Timestamp Server URL"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Digest Algorithm"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "File Version"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Product Version"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Company Name"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Product Name"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "File Description"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Trademarks"
msgstr ""
#: platform/windows/export/export.cpp
@@ -17639,12 +18784,14 @@ msgstr ""
msgid "Centered"
msgstr ""
-#: scene/2d/animated_sprite.cpp scene/2d/camera_2d.cpp scene/2d/light_2d.cpp
+#: scene/2d/animated_sprite.cpp scene/2d/camera_2d.cpp
+#: scene/2d/cpu_particles_2d.cpp scene/2d/light_2d.cpp
#: scene/2d/parallax_background.cpp scene/2d/parallax_layer.cpp
#: scene/2d/path_2d.cpp scene/2d/polygon_2d.cpp scene/2d/sprite.cpp
-#: scene/3d/path.cpp scene/3d/physics_body.cpp scene/3d/sprite_3d.cpp
-#: scene/gui/graph_node.cpp scene/gui/rich_text_effect.cpp
-#: scene/main/canvas_layer.cpp scene/resources/material.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/path.cpp scene/3d/physics_body.cpp
+#: scene/3d/sprite_3d.cpp scene/gui/graph_node.cpp
+#: scene/gui/rich_text_effect.cpp scene/main/canvas_layer.cpp
+#: scene/resources/material.cpp scene/resources/particles_material.cpp
#: scene/resources/style_box.cpp
msgid "Offset"
msgstr ""
@@ -17709,11 +18856,6 @@ msgstr ""
msgid "Override"
msgstr ""
-#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
-#: scene/audio/audio_stream_player.cpp scene/gui/video_player.cpp
-msgid "Stream"
-msgstr ""
-
#: scene/2d/audio_stream_player_2d.cpp scene/audio/audio_stream_player.cpp
#: scene/gui/video_player.cpp servers/audio/effects/audio_effect_amplify.cpp
msgid "Volume dB"
@@ -17737,12 +18879,12 @@ msgid "Stream Paused"
msgstr ""
#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
-#: scene/3d/reflection_probe.cpp scene/3d/visual_instance.cpp
-#: scene/resources/material.cpp
+#: scene/3d/light.cpp scene/3d/reflection_probe.cpp
+#: scene/3d/visual_instance.cpp scene/resources/material.cpp
msgid "Max Distance"
msgstr ""
-#: scene/2d/audio_stream_player_2d.cpp
+#: scene/2d/audio_stream_player_2d.cpp scene/3d/light.cpp
msgid "Attenuation"
msgstr ""
@@ -17789,6 +18931,21 @@ msgstr ""
msgid "Limit"
msgstr ""
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/style_box.cpp
+msgid "Left"
+msgstr ""
+
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/style_box.cpp
+msgid "Right"
+msgstr ""
+
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/dynamic_font.cpp scene/resources/style_box.cpp
+msgid "Bottom"
+msgstr ""
+
#: scene/2d/camera_2d.cpp
msgid "Smoothed"
msgstr ""
@@ -17982,12 +19139,6 @@ msgstr ""
msgid "Emitting"
msgstr ""
-#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp scene/3d/area.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
-#: scene/resources/environment.cpp
-msgid "Amount"
-msgstr ""
-
#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp
#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
msgid "Lifetime"
@@ -18047,17 +19198,12 @@ msgstr ""
#: scene/2d/mesh_instance_2d.cpp scene/2d/multimesh_instance_2d.cpp
#: scene/2d/particles_2d.cpp scene/2d/polygon_2d.cpp scene/2d/sprite.cpp
#: scene/3d/sprite_3d.cpp scene/gui/nine_patch_rect.cpp
-#: scene/gui/texture_rect.cpp scene/resources/sky.cpp
-#: scene/resources/style_box.cpp scene/resources/visual_shader_nodes.cpp
+#: scene/gui/texture_rect.cpp scene/resources/material.cpp
+#: scene/resources/sky.cpp scene/resources/style_box.cpp
+#: scene/resources/visual_shader_nodes.cpp
msgid "Texture"
msgstr ""
-#: scene/2d/cpu_particles_2d.cpp scene/2d/mesh_instance_2d.cpp
-#: scene/2d/multimesh_instance_2d.cpp scene/2d/particles_2d.cpp
-#: scene/2d/sprite.cpp scene/resources/style_box.cpp
-msgid "Normal Map"
-msgstr ""
-
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
msgid "Emission Shape"
@@ -18077,9 +19223,8 @@ msgid "Normals"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/3d/sprite_3d.cpp scene/resources/material.cpp
-#: scene/resources/particles_material.cpp scene/resources/texture.cpp
-msgid "Flags"
+#: scene/resources/particles_material.cpp
+msgid "Align Y"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
@@ -18099,6 +19244,11 @@ msgid "Initial Velocity"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Velocity Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp servers/physics_2d_server.cpp
#: servers/physics_server.cpp
msgid "Angular Velocity"
@@ -18106,6 +19256,11 @@ msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+msgid "Velocity Curve"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
msgid "Orbit Velocity"
msgstr ""
@@ -18116,6 +19271,21 @@ msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+msgid "Accel"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Accel Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Accel Curve"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
msgid "Radial Accel"
msgstr ""
@@ -18125,19 +19295,52 @@ msgid "Tangential Accel"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/2d/joints_2d.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/vehicle_body.cpp
-#: scene/resources/particles_material.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/physics_joint.cpp
+#: scene/3d/vehicle_body.cpp scene/resources/particles_material.cpp
#: servers/audio/effects/audio_effect_reverb.cpp
msgid "Damping"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+msgid "Damping Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Damping Curve"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp scene/3d/light.cpp
+#: scene/resources/particles_material.cpp
msgid "Angle"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+msgid "Angle Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Angle Curve"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#, fuzzy
+msgid "Scale Amount"
+msgstr "បញ្ចូល Key នៅទីនáŸáŸ‡"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+msgid "Scale Amount Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+msgid "Scale Amount Curve"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
msgid "Color Ramp"
msgstr ""
@@ -18151,6 +19354,42 @@ msgstr ""
msgid "Hue Variation"
msgstr ""
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Variation"
+msgstr "Anim ផ្លាស់ប្ážáž¼ážš Transition"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Variation Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Variation Curve"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Speed Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Speed Curve"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Offset Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Offset Curve"
+msgstr ""
+
#: scene/2d/joints_2d.cpp
msgid "Node A and Node B must be PhysicsBody2Ds"
msgstr ""
@@ -18180,6 +19419,7 @@ msgid "Node B"
msgstr ""
#: scene/2d/joints_2d.cpp scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp
+#: scene/3d/light.cpp scene/3d/physics_joint.cpp
#: scene/resources/environment.cpp
msgid "Bias"
msgstr ""
@@ -18188,7 +19428,7 @@ msgstr ""
msgid "Disable Collision"
msgstr ""
-#: scene/2d/joints_2d.cpp
+#: scene/2d/joints_2d.cpp scene/3d/physics_joint.cpp
msgid "Softness"
msgstr ""
@@ -18205,7 +19445,7 @@ msgstr ""
msgid "Rest Length"
msgstr ""
-#: scene/2d/joints_2d.cpp scene/3d/vehicle_body.cpp
+#: scene/2d/joints_2d.cpp scene/3d/physics_joint.cpp scene/3d/vehicle_body.cpp
msgid "Stiffness"
msgstr ""
@@ -18224,7 +19464,7 @@ msgid "Texture Scale"
msgstr ""
#: scene/2d/light_2d.cpp scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp
-#: scene/resources/environment.cpp scene/resources/sky.cpp
+#: scene/3d/light.cpp scene/resources/environment.cpp scene/resources/sky.cpp
msgid "Energy"
msgstr ""
@@ -18260,11 +19500,6 @@ msgstr ""
msgid "Gradient Length"
msgstr ""
-#: scene/2d/light_2d.cpp scene/gui/control.cpp
-#: scene/resources/navigation_mesh.cpp
-msgid "Filter"
-msgstr ""
-
#: scene/2d/light_2d.cpp
msgid "Filter Smooth"
msgstr ""
@@ -18637,10 +19872,6 @@ msgid "Applied Forces"
msgstr ""
#: scene/2d/physics_body_2d.cpp
-msgid "Force"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp
msgid "Torque"
msgstr ""
@@ -18653,7 +19884,7 @@ msgid "Sync To Physics"
msgstr ""
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-msgid "Moving platform"
+msgid "Moving Platform"
msgstr ""
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
@@ -18662,7 +19893,7 @@ msgstr ""
#: scene/2d/physics_body_2d.cpp scene/2d/touch_screen_button.cpp
#: scene/3d/physics_body.cpp scene/gui/texture_button.cpp
-#: scene/resources/line_shape_2d.cpp
+#: scene/resources/line_shape_2d.cpp scene/resources/material.cpp
msgid "Normal"
msgstr ""
@@ -18870,6 +20101,30 @@ msgid ""
"as parent."
msgstr ""
+#: scene/2d/visibility_notifier_2d.cpp scene/3d/visibility_notifier.cpp
+msgid "Pause Animations"
+msgstr ""
+
+#: scene/2d/visibility_notifier_2d.cpp scene/3d/visibility_notifier.cpp
+msgid "Freeze Bodies"
+msgstr ""
+
+#: scene/2d/visibility_notifier_2d.cpp
+msgid "Pause Particles"
+msgstr ""
+
+#: scene/2d/visibility_notifier_2d.cpp
+msgid "Pause Animated Sprites"
+msgstr ""
+
+#: scene/2d/visibility_notifier_2d.cpp
+msgid "Process Parent"
+msgstr ""
+
+#: scene/2d/visibility_notifier_2d.cpp
+msgid "Physics Process Parent"
+msgstr ""
+
#: scene/3d/area.cpp
msgid "Reverb Bus"
msgstr ""
@@ -18959,6 +20214,7 @@ msgid "Attenuation Filter"
msgstr ""
#: scene/3d/audio_stream_player_3d.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
#: servers/audio/effects/audio_effect_filter.cpp
msgid "Cutoff Hz"
msgstr ""
@@ -19000,10 +20256,6 @@ msgid "Octree"
msgstr ""
#: scene/3d/baked_lightmap.cpp
-msgid "User Data"
-msgstr ""
-
-#: scene/3d/baked_lightmap.cpp
msgid "Finding meshes and lights"
msgstr ""
@@ -19234,6 +20486,14 @@ msgid "Ring Axis"
msgstr ""
#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
+msgid "Rotate Y"
+msgstr ""
+
+#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
+msgid "Disable Z"
+msgstr ""
+
+#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
msgid "Flatness"
msgstr ""
@@ -19269,15 +20529,11 @@ msgstr ""
msgid "Dynamic Range"
msgstr ""
-#: scene/3d/gi_probe.cpp
+#: scene/3d/gi_probe.cpp scene/3d/light.cpp
msgid "Normal Bias"
msgstr ""
#: scene/3d/gi_probe.cpp
-msgid "Compress"
-msgstr ""
-
-#: scene/3d/gi_probe.cpp
msgid "Plotting Meshes"
msgstr ""
@@ -19303,14 +20559,26 @@ msgid "Subdiv"
msgstr ""
#: scene/3d/light.cpp
+msgid "Indirect Energy"
+msgstr ""
+
+#: scene/3d/light.cpp
msgid "Negative"
msgstr ""
#: scene/3d/light.cpp
+msgid "Specular"
+msgstr ""
+
+#: scene/3d/light.cpp
msgid "Bake Mode"
msgstr ""
#: scene/3d/light.cpp
+msgid "Contact"
+msgstr ""
+
+#: scene/3d/light.cpp
msgid "Reverse Cull Face"
msgstr ""
@@ -19319,10 +20587,26 @@ msgid "Directional Shadow"
msgstr ""
#: scene/3d/light.cpp
+msgid "Split 1"
+msgstr ""
+
+#: scene/3d/light.cpp
+msgid "Split 2"
+msgstr ""
+
+#: scene/3d/light.cpp
+msgid "Split 3"
+msgstr ""
+
+#: scene/3d/light.cpp
msgid "Blend Splits"
msgstr ""
#: scene/3d/light.cpp
+msgid "Bias Split Scale"
+msgstr ""
+
+#: scene/3d/light.cpp
msgid "Depth Range"
msgstr ""
@@ -19346,6 +20630,10 @@ msgstr ""
msgid "Spot"
msgstr ""
+#: scene/3d/light.cpp
+msgid "Angle Attenuation"
+msgstr ""
+
#: scene/3d/mesh_instance.cpp
msgid "Software Skinning"
msgstr ""
@@ -19462,6 +20750,54 @@ msgid "Axis Lock"
msgstr ""
#: scene/3d/physics_body.cpp
+msgid "Linear X"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Linear Y"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Linear Z"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Angular X"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Angular Y"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Angular Z"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Motion X"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Motion Y"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Motion Z"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Move Lock X"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Move Lock Y"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Move Lock Z"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
msgid "Body Offset"
msgstr ""
@@ -19494,6 +20830,14 @@ msgid "Exclude Nodes"
msgstr ""
#: scene/3d/physics_joint.cpp
+msgid "Params"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Impulse Clamp"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit"
msgstr ""
@@ -19505,6 +20849,47 @@ msgstr ""
msgid "Lower"
msgstr ""
+#: scene/3d/physics_joint.cpp scene/3d/vehicle_body.cpp
+msgid "Relaxation"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Motor"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Target Velocity"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Max Impulse"
+msgstr "ážáž˜áŸ’លៃ:"
+
+#: scene/3d/physics_joint.cpp
+msgid "Linear Limit"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Upper Distance"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Lower Distance"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Restitution"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Linear Motion"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Linear Ortho"
+msgstr ""
+
#: scene/3d/physics_joint.cpp
msgid "Upper Angle"
msgstr ""
@@ -19514,6 +20899,14 @@ msgid "Lower Angle"
msgstr ""
#: scene/3d/physics_joint.cpp
+msgid "Angular Motion"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Ortho"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
msgid "Swing Span"
msgstr ""
@@ -19522,17 +20915,89 @@ msgid "Twist Span"
msgstr ""
#: scene/3d/physics_joint.cpp
+msgid "Linear Limit X"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Linear Motor X"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Force Limit"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Linear Spring X"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Equilibrium Point"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit X"
msgstr ""
#: scene/3d/physics_joint.cpp
+msgid "Erp"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Motor X"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Spring X"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Linear Limit Y"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Linear Motor Y"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Linear Spring Y"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit Y"
msgstr ""
#: scene/3d/physics_joint.cpp
+msgid "Angular Motor Y"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Spring Y"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Linear Limit Z"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Linear Motor Z"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Linear Spring Z"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit Z"
msgstr ""
+#: scene/3d/physics_joint.cpp
+msgid "Angular Motor Z"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Spring Z"
+msgstr ""
+
#: scene/3d/portal.cpp
msgid "The RoomManager should not be a child or grandchild of a Portal."
msgstr ""
@@ -19637,7 +21102,7 @@ msgstr ""
msgid "Use Default Simplify"
msgstr ""
-#: scene/3d/room.cpp
+#: scene/3d/room.cpp scene/3d/room_manager.cpp
msgid "Room Simplify"
msgstr ""
@@ -19675,6 +21140,12 @@ msgstr ""
msgid "Main"
msgstr ""
+#: scene/3d/room_manager.cpp scene/animation/animation_player.cpp
+#: scene/animation/animation_tree.cpp scene/animation/animation_tree_player.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+msgid "Active"
+msgstr ""
+
#: scene/3d/room_manager.cpp
msgid "Roomlist"
msgstr ""
@@ -19696,6 +21167,46 @@ msgid "Gameplay"
msgstr ""
#: scene/3d/room_manager.cpp
+msgid "Gameplay Monitor"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "Use Secondary PVS"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "Merge Meshes"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "Show Margins"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "Debug Sprawl"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "Overlap Warning Threshold"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "Preview Camera"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "Portal Depth Limit"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "Default Portal Margin"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "Roaming Expansion Margin"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
msgid ""
"RoomList path is invalid.\n"
"Please check the RoomList branch has been assigned in the RoomManager."
@@ -19814,6 +21325,18 @@ msgstr ""
msgid "Billboard"
msgstr ""
+#: scene/3d/sprite_3d.cpp scene/resources/material.cpp
+msgid "Transparent"
+msgstr ""
+
+#: scene/3d/sprite_3d.cpp
+msgid "Shaded"
+msgstr ""
+
+#: scene/3d/sprite_3d.cpp
+msgid "Double Sided"
+msgstr ""
+
#: scene/3d/sprite_3d.cpp
msgid "Alpha Cut"
msgstr ""
@@ -19879,10 +21402,6 @@ msgstr ""
msgid "Max Force"
msgstr "កញ្ចក់"
-#: scene/3d/vehicle_body.cpp
-msgid "Relaxation"
-msgstr ""
-
#: scene/3d/visibility_notifier.cpp
msgid "AABB"
msgstr ""
@@ -20005,7 +21524,7 @@ msgid "Fadeout Time"
msgstr ""
#: scene/animation/animation_blend_tree.cpp
-msgid "autorestart_"
+msgid "Auto Restart"
msgstr ""
#: scene/animation/animation_blend_tree.cpp
@@ -20077,12 +21596,6 @@ msgstr ""
msgid "Default Blend Time"
msgstr ""
-#: scene/animation/animation_player.cpp scene/animation/animation_tree.cpp
-#: scene/animation/animation_tree_player.cpp
-#: servers/audio/effects/audio_effect_delay.cpp
-msgid "Active"
-msgstr ""
-
#: scene/animation/animation_player.cpp
msgid "Method Call Mode"
msgstr ""
@@ -20191,10 +21704,6 @@ msgstr ""
msgid "Max Iterations"
msgstr ""
-#: scene/animation/tween.cpp scene/resources/texture.cpp
-msgid "Repeat"
-msgstr ""
-
#: scene/animation/tween.cpp
msgid "Playback Process Mode"
msgstr ""
@@ -20221,18 +21730,6 @@ msgstr ""
msgid "Alignment"
msgstr ""
-#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
-#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
-#: scene/resources/style_box.cpp
-msgid "Horizontal"
-msgstr ""
-
-#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
-#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
-#: scene/resources/style_box.cpp
-msgid "Vertical"
-msgstr ""
-
#: scene/gui/base_button.cpp
msgid "Shortcut In Tooltip"
msgstr ""
@@ -20318,10 +21815,6 @@ msgid "HSV"
msgstr ""
#: scene/gui/color_picker.cpp
-msgid "Raw"
-msgstr ""
-
-#: scene/gui/color_picker.cpp
msgid "Switch between hexadecimal and code values."
msgstr ""
@@ -20375,6 +21868,30 @@ msgid "Focus"
msgstr ""
#: scene/gui/control.cpp
+msgid "Neighbour Left"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Neighbour Top"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Neighbour Right"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Neighbour Bottom"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Next"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Previous"
+msgstr ""
+
+#: scene/gui/control.cpp
msgid "Mouse"
msgstr ""
@@ -20407,7 +21924,7 @@ msgid "Dialog"
msgstr ""
#: scene/gui/dialogs.cpp
-msgid "Hide On Ok"
+msgid "Hide On OK"
msgstr ""
#: scene/gui/dialogs.cpp scene/gui/label.cpp
@@ -20493,7 +22010,7 @@ msgid "Timers"
msgstr "áž–áŸáž›ážœáŸáž›áž¶:"
#: scene/gui/item_list.cpp scene/gui/popup_menu.cpp scene/gui/tree.cpp
-msgid "Incremental Search Max Interval (msec)"
+msgid "Incremental Search Max Interval Msec"
msgstr ""
#: scene/gui/item_list.cpp scene/gui/tree.cpp
@@ -20995,6 +22512,22 @@ msgstr ""
msgid "Nine Patch Stretch"
msgstr ""
+#: scene/gui/texture_progress.cpp
+msgid "Stretch Margin Left"
+msgstr ""
+
+#: scene/gui/texture_progress.cpp
+msgid "Stretch Margin Top"
+msgstr ""
+
+#: scene/gui/texture_progress.cpp
+msgid "Stretch Margin Right"
+msgstr ""
+
+#: scene/gui/texture_progress.cpp
+msgid "Stretch Margin Bottom"
+msgstr ""
+
#: scene/gui/tree.cpp
msgid "Custom Minimum Height"
msgstr ""
@@ -21028,7 +22561,7 @@ msgid "Paused"
msgstr ""
#: scene/gui/video_player.cpp
-msgid "Buffering (msec)"
+msgid "Buffering Msec"
msgstr ""
#: scene/gui/video_player.cpp
@@ -21333,6 +22866,22 @@ msgid "Shadow Atlas"
msgstr ""
#: scene/main/viewport.cpp
+msgid "Quad 0"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 1"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 2"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 3"
+msgstr ""
+
+#: scene/main/viewport.cpp
#, fuzzy
msgid "Canvas Transform"
msgstr "Anim ផ្លាស់ប្ážáž¼ážš Transform"
@@ -21347,6 +22896,10 @@ msgid "Tooltip Delay (sec)"
msgstr ""
#: scene/register_scene_types.cpp
+msgid "Swap OK Cancel"
+msgstr ""
+
+#: scene/register_scene_types.cpp
msgid "Use hiDPI"
msgstr ""
@@ -21359,18 +22912,6 @@ msgid "Custom Font"
msgstr ""
#: scene/resources/audio_stream_sample.cpp
-msgid "Loop Mode"
-msgstr ""
-
-#: scene/resources/audio_stream_sample.cpp
-msgid "Loop Begin"
-msgstr ""
-
-#: scene/resources/audio_stream_sample.cpp
-msgid "Loop End"
-msgstr ""
-
-#: scene/resources/audio_stream_sample.cpp
#: servers/audio/effects/audio_stream_generator.cpp servers/audio_server.cpp
msgid "Mix Rate"
msgstr ""
@@ -21420,6 +22961,15 @@ msgid "Extra Spacing"
msgstr ""
#: scene/resources/dynamic_font.cpp
+msgid "Char"
+msgstr ""
+
+#: scene/resources/dynamic_font.cpp scene/resources/world.cpp
+#: scene/resources/world_2d.cpp
+msgid "Space"
+msgstr ""
+
+#: scene/resources/dynamic_font.cpp
msgid "Font"
msgstr ""
@@ -21617,6 +23167,42 @@ msgid "Glow"
msgstr ""
#: scene/resources/environment.cpp
+msgid "Levels"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "1"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "2"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "3"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "4"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "5"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "6"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "7"
+msgstr ""
+
+#: scene/resources/environment.cpp
msgid "Bloom"
msgstr ""
@@ -21697,9 +23283,62 @@ msgid "Next Pass"
msgstr ""
#: scene/resources/material.cpp
+msgid "Use Shadow To Opacity"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Unshaded"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Vertex Lighting"
+msgstr "ផ្លាស់ទី Bezier Points"
+
+#: scene/resources/material.cpp
+msgid "No Depth Test"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Use Point Size"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "World Triplanar"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Fixed Size"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Albedo Tex Force sRGB"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Do Not Receive Shadows"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Disable Ambient Light"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Ensure Correct Normals"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Vertex Color"
msgstr ""
+#: scene/resources/material.cpp
+msgid "Use As Albedo"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Is sRGB"
+msgstr ""
+
#: scene/resources/material.cpp servers/visual_server.cpp
msgid "Parameters"
msgstr ""
@@ -21729,6 +23368,10 @@ msgid "Billboard Mode"
msgstr ""
#: scene/resources/material.cpp
+msgid "Billboard Keep Scale"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Grow"
msgstr ""
@@ -21737,6 +23380,10 @@ msgid "Grow Amount"
msgstr ""
#: scene/resources/material.cpp
+msgid "Use Alpha Scissor"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Alpha Scissor Threshold"
msgstr ""
@@ -21765,10 +23412,18 @@ msgid "Metallic Specular"
msgstr ""
#: scene/resources/material.cpp
+msgid "Metallic Texture"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Metallic Texture Channel"
msgstr ""
#: scene/resources/material.cpp
+msgid "Roughness Texture"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Roughness Texture Channel"
msgstr ""
@@ -21785,6 +23440,14 @@ msgid "Emission Operator"
msgstr ""
#: scene/resources/material.cpp
+msgid "Emission On UV2"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Emission Texture"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "NormalMap"
msgstr ""
@@ -21797,6 +23460,10 @@ msgid "Rim Tint"
msgstr ""
#: scene/resources/material.cpp
+msgid "Rim Texture"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Clearcoat"
msgstr ""
@@ -21805,14 +23472,26 @@ msgid "Clearcoat Gloss"
msgstr ""
#: scene/resources/material.cpp
+msgid "Clearcoat Texture"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Anisotropy"
msgstr ""
#: scene/resources/material.cpp
+msgid "Anisotropy Flowmap"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Ambient Occlusion"
msgstr ""
#: scene/resources/material.cpp
+msgid "On UV2"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Texture Channel"
msgstr ""
@@ -21847,6 +23526,11 @@ msgid "Transmission"
msgstr ""
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Transmission Texture"
+msgstr "Anim ផ្លាស់ប្ážáž¼ážš Transition"
+
+#: scene/resources/material.cpp
msgid "Refraction"
msgstr ""
@@ -21863,6 +23547,10 @@ msgid "UV1"
msgstr ""
#: scene/resources/material.cpp
+msgid "Triplanar"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Triplanar Sharpness"
msgstr ""
@@ -22050,6 +23738,14 @@ msgstr ""
msgid "Point Count"
msgstr "បញ្ចូល Key នៅទីនáŸáŸ‡"
+#: scene/resources/particles_material.cpp
+msgid "Scale Random"
+msgstr ""
+
+#: scene/resources/particles_material.cpp
+msgid "Scale Curve"
+msgstr ""
+
#: scene/resources/physics_material.cpp
msgid "Rough"
msgstr ""
@@ -22107,10 +23803,6 @@ msgid "A"
msgstr ""
#: scene/resources/shader.cpp
-msgid "Code"
-msgstr ""
-
-#: scene/resources/shader.cpp
msgid "Custom Defines"
msgstr ""
@@ -22195,14 +23887,6 @@ msgid "Grow End"
msgstr ""
#: scene/resources/texture.cpp
-msgid "Storage"
-msgstr ""
-
-#: scene/resources/texture.cpp
-msgid "Lossy Quality"
-msgstr ""
-
-#: scene/resources/texture.cpp
msgid "Load Path"
msgstr ""
@@ -22313,10 +23997,6 @@ msgstr ""
msgid "Fallback Environment"
msgstr ""
-#: scene/resources/world.cpp scene/resources/world_2d.cpp
-msgid "Space"
-msgstr ""
-
#: scene/resources/world.cpp
msgid "Scenario"
msgstr ""
@@ -22390,8 +24070,33 @@ msgstr ""
msgid "Wet"
msgstr ""
-#: servers/audio/effects/audio_effect_compressor.cpp
-msgid "Threshold"
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "Voice"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+msgid "Delay (ms)"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_phaser.cpp
+msgid "Rate Hz"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "Depth (ms)"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+msgid "Level dB"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+#: servers/audio/effects/audio_effect_panner.cpp
+msgid "Pan"
msgstr ""
#: servers/audio/effects/audio_effect_compressor.cpp
@@ -22416,19 +24121,6 @@ msgid "Tap 1"
msgstr ""
#: servers/audio/effects/audio_effect_delay.cpp
-msgid "Delay (ms)"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_delay.cpp
-msgid "Level dB"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_delay.cpp
-#: servers/audio/effects/audio_effect_panner.cpp
-msgid "Pan"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_delay.cpp
msgid "Tap 2"
msgstr ""
@@ -22486,10 +24178,6 @@ msgstr ""
msgid "Range Max Hz"
msgstr ""
-#: servers/audio/effects/audio_effect_phaser.cpp
-msgid "Rate Hz"
-msgstr ""
-
#: servers/audio/effects/audio_effect_pitch_shift.cpp
msgid "Oversampling"
msgstr ""
@@ -22504,7 +24192,7 @@ msgid "Predelay"
msgstr ""
#: servers/audio/effects/audio_effect_reverb.cpp
-msgid "(msec)"
+msgid "Msec"
msgstr ""
#: servers/audio/effects/audio_effect_reverb.cpp
diff --git a/editor/translations/ko.po b/editor/translations/ko.po
index 30f188251e..da1d7b536a 100644
--- a/editor/translations/ko.po
+++ b/editor/translations/ko.po
@@ -46,7 +46,7 @@ msgstr ""
"Plural-Forms: nplurals=1; plural=0;\n"
"X-Generator: Weblate 4.11.1-dev\n"
-#: core/bind/core_bind.cpp
+#: core/bind/core_bind.cpp main/main.cpp
msgid "Tablet Driver"
msgstr ""
@@ -150,8 +150,8 @@ msgstr "ë… ìœ„ì¹˜"
#: core/bind/core_bind.cpp editor/editor_settings.cpp main/main.cpp
#: modules/gdscript/gdscript_editor.cpp modules/gridmap/grid_map.cpp
#: modules/mono/csharp_script.cpp modules/visual_script/visual_script_nodes.cpp
-#: scene/2d/tile_map.cpp scene/3d/camera.cpp scene/gui/control.cpp
-#: scene/gui/graph_edit.cpp scene/main/viewport.cpp
+#: scene/2d/tile_map.cpp scene/3d/camera.cpp scene/3d/light.cpp
+#: scene/gui/control.cpp scene/gui/graph_edit.cpp scene/main/viewport.cpp
#: scene/resources/dynamic_font.cpp scene/resources/navigation_mesh.cpp
#: scene/resources/primitive_meshes.cpp scene/resources/sky.cpp
#: scene/resources/style_box.cpp scene/resources/texture.cpp
@@ -256,8 +256,7 @@ msgid "Data"
msgstr "ë°ì´í„°ì™€ 함께"
#: core/io/file_access_network.cpp core/register_core_types.cpp
-#: editor/editor_settings.cpp editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp main/main.cpp
+#: editor/editor_settings.cpp main/main.cpp
#: modules/gdscript/language_server/gdscript_language_server.cpp
#, fuzzy
msgid "Network"
@@ -542,9 +541,10 @@ msgstr "프리셋"
msgid "Relative"
msgstr "ìƒëŒ€ì ì¸ 스냅"
-#: core/os/input_event.cpp scene/2d/camera_2d.cpp
-#: scene/3d/interpolated_camera.cpp scene/animation/animation_player.cpp
-#: scene/resources/environment.cpp
+#: core/os/input_event.cpp scene/2d/camera_2d.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/interpolated_camera.cpp
+#: scene/animation/animation_player.cpp scene/resources/environment.cpp
+#: scene/resources/particles_material.cpp
#, fuzzy
msgid "Speed"
msgstr "ì†ë„:"
@@ -594,8 +594,9 @@ msgstr "커밋 변경사항"
msgid "Pitch"
msgstr "Pitch:"
-#: core/os/input_event.cpp scene/2d/physics_body_2d.cpp
-#: scene/3d/physics_body.cpp
+#: core/os/input_event.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/physics_body_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/3d/physics_body.cpp scene/resources/particles_material.cpp
#, fuzzy
msgid "Velocity"
msgstr "선회 뷰 오른쪽으로"
@@ -614,6 +615,8 @@ msgid "Controller Value"
msgstr ""
#: core/project_settings.cpp editor/editor_node.cpp main/main.cpp
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/windows/export/export.cpp
#, fuzzy
msgid "Application"
msgstr "ì•¡ì…˜"
@@ -632,13 +635,16 @@ msgstr "프로ì íЏ 설정..."
#: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp
#: editor/editor_plugin_settings.cpp editor/editor_profiler.cpp
#: editor/project_manager.cpp editor/settings_config_dialog.cpp
-#: modules/gdnative/nativescript/nativescript.cpp scene/2d/area_2d.cpp
-#: scene/3d/area.cpp scene/main/node.cpp
+#: modules/gdnative/nativescript/nativescript.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/osx/export/export.cpp scene/2d/area_2d.cpp scene/3d/area.cpp
+#: scene/main/node.cpp
msgid "Name"
msgstr "ì´ë¦„"
#: core/project_settings.cpp editor/editor_help.cpp
-#: modules/visual_script/visual_script_nodes.cpp
+#: modules/visual_script/visual_script_nodes.cpp platform/uwp/export/export.cpp
+#: platform/windows/export/export.cpp
msgid "Description"
msgstr "설명"
@@ -676,7 +682,7 @@ msgid "Custom User Dir Name"
msgstr ""
#: core/project_settings.cpp editor/animation_track_editor.cpp
-#: editor/editor_audio_buses.cpp servers/audio_server.cpp
+#: editor/editor_audio_buses.cpp main/main.cpp servers/audio_server.cpp
msgid "Audio"
msgstr "오디오"
@@ -844,10 +850,13 @@ msgstr "í•„í„°:"
msgid "Sharpen Intensity"
msgstr ""
-#: core/project_settings.cpp editor/editor_node.cpp editor/editor_settings.cpp
-#: editor/plugins/script_editor_plugin.cpp editor/project_export.cpp
-#: main/main.cpp modules/gdscript/gdscript.cpp
-#: modules/visual_script/visual_script.cpp scene/3d/room_manager.cpp
+#: core/project_settings.cpp editor/editor_export.cpp editor/editor_node.cpp
+#: editor/editor_settings.cpp editor/plugins/script_editor_plugin.cpp
+#: editor/project_export.cpp main/main.cpp modules/gdscript/gdscript.cpp
+#: modules/visual_script/visual_script.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp scene/3d/room_manager.cpp
#: scene/main/scene_tree.cpp scene/resources/shape_2d.cpp
#: servers/visual_server.cpp
msgid "Debug"
@@ -1083,6 +1092,7 @@ msgid "Subsurface Scattering"
msgstr ""
#: drivers/gles3/rasterizer_scene_gles3.cpp
+#: editor/import/resource_importer_texture.cpp
#: editor/plugins/spatial_editor_plugin.cpp modules/gltf/gltf_node.cpp
#: modules/gridmap/grid_map.cpp scene/2d/cpu_particles_2d.cpp
#: scene/2d/node_2d.cpp scene/2d/parallax_layer.cpp scene/2d/polygon_2d.cpp
@@ -1381,6 +1391,7 @@ msgid "Editors"
msgstr "ì—디터"
#: editor/animation_track_editor.cpp editor/editor_settings.cpp
+#: editor/import/resource_importer_scene.cpp
#: editor/plugins/animation_player_editor_plugin.cpp editor/scene_tree_dock.cpp
#: scene/2d/animated_sprite.cpp scene/2d/cpu_particles_2d.cpp
#: scene/2d/sprite.cpp scene/3d/cpu_particles.cpp scene/3d/sprite_3d.cpp
@@ -1614,14 +1625,14 @@ msgstr "애니메ì´ì…˜ 단계 ê°’."
msgid "Seconds"
msgstr "ì´ˆ"
-#: editor/animation_track_editor.cpp
+#: editor/animation_track_editor.cpp editor/import/resource_importer_scene.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp main/main.cpp
#: scene/resources/texture.cpp
msgid "FPS"
msgstr "초당 프레임"
#: editor/animation_track_editor.cpp editor/editor_plugin_settings.cpp
-#: editor/editor_resource_picker.cpp
+#: editor/editor_resource_picker.cpp editor/import/resource_importer_wav.cpp
#: editor/plugins/polygon_2d_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
@@ -2582,7 +2593,9 @@ msgid "Remove Autoload"
msgstr "오토로드 제거"
#: editor/editor_autoload_settings.cpp editor/editor_plugin_settings.cpp
-#: modules/gdscript/gdscript.cpp scene/2d/polygon_2d.cpp scene/3d/area.cpp
+#: modules/gdscript/gdscript.cpp platform/android/export/export_plugin.cpp
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#: scene/2d/polygon_2d.cpp scene/3d/area.cpp scene/3d/physics_joint.cpp
#: scene/3d/reflection_probe.cpp scene/main/canvas_layer.cpp
#: scene/resources/material.cpp servers/visual_server.cpp
msgid "Enable"
@@ -2751,6 +2764,58 @@ msgstr ""
#: editor/editor_export.cpp platform/android/export/export_plugin.cpp
#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Custom Template"
+msgstr "테마 ì—디터"
+
+#: editor/editor_export.cpp editor/project_export.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp
+msgid "Release"
+msgstr "출시"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Binary Format"
+msgstr "ìƒ‰ìƒ ì—°ì‚°ìž."
+
+#: editor/editor_export.cpp
+msgid "64 Bits"
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Embed PCK"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Texture Format"
+msgstr "í…스처 ì˜ì—­"
+
+#: editor/editor_export.cpp
+msgid "BPTC"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "S3TC"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "ETC"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "ETC2"
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "No BPTC Fallbacks"
+msgstr ""
+
+#: editor/editor_export.cpp platform/android/export/export_plugin.cpp
+#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
msgid "Custom debug template not found."
msgstr "커스텀 디버그 í…œí”Œë¦¿ì„ ì°¾ì„ ìˆ˜ 없습니다."
@@ -2928,6 +2993,7 @@ msgid "Make Current"
msgstr "현재 프로필로 설정"
#: editor/editor_feature_profile.cpp editor/editor_node.cpp
+#: editor/import/resource_importer_scene.cpp
#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
msgid "Import"
msgstr "가져오기"
@@ -3055,8 +3121,11 @@ msgstr "성공!"
msgid "Display Mode"
msgstr "실행 모드:"
-#: editor/editor_file_dialog.cpp main/main.cpp modules/csg/csg_shape.cpp
-#: modules/visual_script/visual_script_nodes.cpp
+#: editor/editor_file_dialog.cpp
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+#: editor/import/resource_importer_wav.cpp main/main.cpp
+#: modules/csg/csg_shape.cpp modules/visual_script/visual_script_nodes.cpp
#: modules/visual_script/visual_script_yield_nodes.cpp scene/2d/light_2d.cpp
#: scene/2d/physics_body_2d.cpp scene/2d/tile_map.cpp
#: scene/3d/baked_lightmap.cpp scene/3d/light.cpp scene/3d/physics_body.cpp
@@ -3195,7 +3264,9 @@ msgstr "애셋 (다시) 가져오는 중"
msgid "Reimport Missing Imported Files"
msgstr ""
-#: editor/editor_help.cpp
+#: editor/editor_help.cpp scene/2d/camera_2d.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/resources/dynamic_font.cpp
+#: scene/resources/style_box.cpp
msgid "Top"
msgstr "맨 위"
@@ -3248,6 +3319,7 @@ msgid "Fonts"
msgstr "글꼴"
#: editor/editor_help.cpp editor/plugins/theme_editor_plugin.cpp
+#: platform/iphone/export/export.cpp
msgid "Icons"
msgstr "ì•„ì´ì½˜"
@@ -3419,7 +3491,9 @@ msgstr "ê°’ì„ ê³ ì •í•˜ë©´ 기본값과 ê°™ë”ë¼ë„ 강제로 저장ë©ë‹ˆë‹¤.
msgid "Pin value [Disabled because '%s' is editor-only]"
msgstr ""
-#: editor/editor_inspector.cpp editor/scene_tree_dock.cpp
+#: editor/editor_inspector.cpp
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+#: editor/scene_tree_dock.cpp
#: modules/visual_script/visual_script_func_nodes.cpp
#: modules/visual_script/visual_script_nodes.cpp
#: modules/visual_script/visual_script_property_selector.cpp
@@ -3760,6 +3834,16 @@ msgid "Quick Open Script..."
msgstr "빠른 스í¬ë¦½íЏ 열기..."
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Save & Reload"
+msgstr "저장 & 다시 시작"
+
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Save changes to '%s' before reloading?"
+msgstr "닫기 ì „ì— '%s'ì— ë³€ê²½ì‚¬í•­ì„ ì €ìž¥í•˜ì‹œê² ìŠµë‹ˆê¹Œ?"
+
+#: editor/editor_node.cpp
msgid "Save & Close"
msgstr "저장 & 닫기"
@@ -3876,6 +3960,11 @@ msgid "Open Project Manager?"
msgstr "프로ì íЏ 매니저를 여시겠습니까?"
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Save changes to the following scene(s) before reloading?"
+msgstr "종료하기 ì „ì— í•´ë‹¹ ì”¬ì˜ ë³€ê²½ì‚¬í•­ì„ ì €ìž¥í•˜ì‹œê² ìŠµë‹ˆê¹Œ?"
+
+#: editor/editor_node.cpp
msgid "Save & Quit"
msgstr "저장 & 종료"
@@ -4149,8 +4238,8 @@ msgstr "머티리얼 바꾸기:"
#: editor/editor_node.cpp
#, fuzzy
-msgid "Translate Properties"
-msgstr "ì†ì„± 붙여넣기"
+msgid "Localize Settings"
+msgstr "현지화"
#: editor/editor_node.cpp
#, fuzzy
@@ -4167,8 +4256,8 @@ msgstr "ì¸ìŠ¤íŽ™í„°"
#: editor/editor_node.cpp
#, fuzzy
-msgid "Capitalize Properties"
-msgstr "ì†ì„± 붙여넣기"
+msgid "Default Property Name Style"
+msgstr "프로ì íЏ 경로:"
#: editor/editor_node.cpp
msgid "Default Float Step"
@@ -4766,7 +4855,9 @@ msgstr "ì„¤ì¹˜ëœ í”ŒëŸ¬ê·¸ì¸:"
msgid "Update"
msgstr "ì—…ë°ì´íЏ"
-#: editor/editor_plugin_settings.cpp
+#: editor/editor_plugin_settings.cpp platform/android/export/export_plugin.cpp
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp
msgid "Version"
msgstr "버전"
@@ -5805,7 +5896,7 @@ msgstr "사ê°í˜• ì „ì²´"
msgid "Rect Custom Position"
msgstr "ê³¡ì„ ì˜ ì•„ì›ƒ 위치 설정"
-#: editor/editor_settings.cpp
+#: editor/editor_settings.cpp platform/android/export/export_plugin.cpp
msgid "Screen"
msgstr ""
@@ -5832,6 +5923,19 @@ msgid "Editor SSL Certificates"
msgstr "ì—디터 설정"
#: editor/editor_settings.cpp
+msgid "HTTP Proxy"
+msgstr ""
+
+#: editor/editor_settings.cpp
+msgid "Host"
+msgstr ""
+
+#: editor/editor_settings.cpp editor/fileserver/editor_file_server.cpp
+#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp
+msgid "Port"
+msgstr ""
+
+#: editor/editor_settings.cpp
msgid "Project Manager"
msgstr "프로ì íЏ 매니저"
@@ -5874,7 +5978,8 @@ msgstr ""
msgid "String Color"
msgstr "저장하려는 파ì¼:"
-#: editor/editor_settings.cpp
+#: editor/editor_settings.cpp platform/javascript/export/export.cpp
+#: platform/uwp/export/export.cpp
#, fuzzy
msgid "Background Color"
msgstr "ìž˜ëª»ëœ ë°°ê²½ 색ìƒ."
@@ -6052,22 +6157,6 @@ msgid "Starting the download..."
msgstr "다운로드를 시작하는 중..."
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "HTTP Proxy"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Host"
-msgstr ""
-
-#: editor/export_template_manager.cpp editor/fileserver/editor_file_server.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp main/main.cpp
-#: modules/mono/mono_gd/gd_mono.cpp
-msgid "Port"
-msgstr ""
-
-#: editor/export_template_manager.cpp
msgid "Error requesting URL:"
msgstr "URL 요청 중 오류:"
@@ -6317,6 +6406,7 @@ msgstr ""
#: editor/fileserver/editor_file_server.cpp
#: editor/plugins/version_control_editor_plugin.cpp
+#: platform/uwp/export/export.cpp platform/windows/export/export.cpp
msgid "Password"
msgstr ""
@@ -6694,6 +6784,117 @@ msgstr ""
msgid "Use Ambient"
msgstr ""
+#: editor/import/resource_importer_bitmask.cpp
+#, fuzzy
+msgid "Create From"
+msgstr "í´ë” 만들기"
+
+#: editor/import/resource_importer_bitmask.cpp
+#: servers/audio/effects/audio_effect_compressor.cpp
+msgid "Threshold"
+msgstr ""
+
+#: editor/import/resource_importer_csv_translation.cpp
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_scene.cpp
+#: editor/import/resource_importer_texture.cpp
+#: editor/import/resource_importer_wav.cpp scene/3d/gi_probe.cpp
+#, fuzzy
+msgid "Compress"
+msgstr "구성 요소"
+
+#: editor/import/resource_importer_csv_translation.cpp
+msgid "Delimiter"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+msgid "No BPTC If RGB"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/sprite_3d.cpp
+#: scene/resources/material.cpp scene/resources/particles_material.cpp
+#: scene/resources/texture.cpp
+msgid "Flags"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/animation/tween.cpp
+#: scene/resources/texture.cpp
+msgid "Repeat"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/2d/light_2d.cpp
+#: scene/gui/control.cpp scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Filter"
+msgstr "í•„í„°:"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Mipmaps"
+msgstr "시그ë„"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+msgid "Anisotropic"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+msgid "sRGB"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#, fuzzy
+msgid "Slices"
+msgstr "ìžë™ ìžë¥´ê¸°"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
+#: scene/resources/style_box.cpp
+#, fuzzy
+msgid "Horizontal"
+msgstr "수í‰:"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
+#: scene/resources/style_box.cpp
+#, fuzzy
+msgid "Vertical"
+msgstr "수ì§:"
+
+#: editor/import/resource_importer_obj.cpp
+#, fuzzy
+msgid "Generate Tangents"
+msgstr "ìƒì„±í•œ ì  ê°œìˆ˜"
+
+#: editor/import/resource_importer_obj.cpp
+#, fuzzy
+msgid "Scale Mesh"
+msgstr "ìŠ¤ì¼€ì¼ ëª¨ë“œ"
+
+#: editor/import/resource_importer_obj.cpp
+#, fuzzy
+msgid "Offset Mesh"
+msgstr "오프셋:"
+
+#: editor/import/resource_importer_obj.cpp
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Octahedral Compression"
+msgstr "í‘œí˜„ì‹ ì„¤ì •"
+
+#: editor/import/resource_importer_obj.cpp
+#, fuzzy
+msgid "Optimize Mesh Flags"
+msgstr "í¬ê¸°: "
+
#: editor/import/resource_importer_scene.cpp
msgid "Import as Single Scene"
msgstr "ë‹¨ì¼ ì”¬ìœ¼ë¡œ 가져오기"
@@ -6734,6 +6935,156 @@ msgstr "여러 ê°œì˜ ì”¬ìœ¼ë¡œ 가져오기"
msgid "Import as Multiple Scenes+Materials"
msgstr "여러 ê°œì˜ ì”¬ê³¼ 머티리얼로 가져오기"
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Nodes"
+msgstr "노드"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Root Type"
+msgstr "멤버 타입"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Root Name"
+msgstr "ì›ê²© ì´ë¦„"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Root Scale"
+msgstr "스케ì¼"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Custom Script"
+msgstr "노드 잘ë¼ë‚´ê¸°"
+
+#: editor/import/resource_importer_scene.cpp scene/resources/texture.cpp
+#, fuzzy
+msgid "Storage"
+msgstr "저장하려는 파ì¼:"
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Use Legacy Names"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+#, fuzzy
+msgid "Materials"
+msgstr "머티리얼 바꾸기:"
+
+#: editor/import/resource_importer_scene.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Location"
+msgstr "현지화"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Keep On Reimport"
+msgstr "다시 가져오기"
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+#, fuzzy
+msgid "Meshes"
+msgstr "메시"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Ensure Tangents"
+msgstr "곡선 탄젠트 수정"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Light Baking"
+msgstr "ë¼ì´íŠ¸ë§µ 굽기"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Lightmap Texel Size"
+msgstr "ë¼ì´íŠ¸ë§µ 굽기"
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+msgid "Skins"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Use Named Skins"
+msgstr "ìŠ¤ì¼€ì¼ ìŠ¤ëƒ… 사용"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "External Files"
+msgstr "íŒŒì¼ ì—´ê¸°"
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Store In Subdir"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Filter Script"
+msgstr "스í¬ë¦½íЏ í•„í„°"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Keep Custom Tracks"
+msgstr "변형"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Optimizer"
+msgstr "최ì í™”"
+
+#: editor/import/resource_importer_scene.cpp main/main.cpp
+#: modules/mono/mono_gd/gd_mono.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp scene/2d/camera_2d.cpp scene/2d/light_2d.cpp
+#: scene/2d/navigation_polygon.cpp scene/2d/ray_cast_2d.cpp scene/2d/sprite.cpp
+#: scene/2d/y_sort.cpp scene/3d/audio_stream_player_3d.cpp
+#: scene/3d/baked_lightmap.cpp scene/3d/interpolated_camera.cpp
+#: scene/3d/light.cpp scene/3d/navigation_mesh_instance.cpp
+#: scene/3d/physics_joint.cpp scene/3d/ray_cast.cpp scene/3d/sprite_3d.cpp
+#: scene/gui/graph_edit.cpp scene/gui/rich_text_label.cpp
+#: scene/resources/curve.cpp scene/resources/environment.cpp
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Enabled"
+msgstr "활성화"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Max Linear Error"
+msgstr "최대 선형 오류:"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Max Angular Error"
+msgstr "최대 ê°ë„ 오류:"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Max Angle"
+msgstr "ê°’"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Remove Unused Tracks"
+msgstr "애니메ì´ì…˜ 트랙 제거"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Clips"
+msgstr "애니메ì´ì…˜ í´ë¦½"
+
+#: editor/import/resource_importer_scene.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/particles_2d.cpp scene/3d/area.cpp scene/3d/cpu_particles.cpp
+#: scene/3d/particles.cpp scene/resources/environment.cpp
+#, fuzzy
+msgid "Amount"
+msgstr "ì–‘:"
+
#: editor/import/resource_importer_scene.cpp
#: editor/plugins/mesh_library_editor_plugin.cpp
msgid "Import Scene"
@@ -6775,12 +7126,149 @@ msgstr "`post_import()` 메서드ì—서 Nodeì—서 ìƒì†ë°›ì€ 오브ì íŠ¸ë¥¼
msgid "Saving..."
msgstr "저장 중..."
+#: editor/import/resource_importer_texture.cpp scene/resources/texture.cpp
+msgid "Lossy Quality"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "HDR Mode"
+msgstr "모드 ì„ íƒ"
+
+#: editor/import/resource_importer_texture.cpp
+msgid "BPTC LDR"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/mesh_instance_2d.cpp scene/2d/multimesh_instance_2d.cpp
+#: scene/2d/particles_2d.cpp scene/2d/sprite.cpp scene/resources/style_box.cpp
+msgid "Normal Map"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Process"
+msgstr "후처리"
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Fix Alpha Border"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Premult Alpha"
+msgstr "í´ë¦¬ê³¤ 편집"
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Hdr As Srgb"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Invert Color"
+msgstr "ê¼­ì§“ì "
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Normal Map Invert Y"
+msgstr "무작위 스케ì¼:"
+
+#: editor/import/resource_importer_texture.cpp
+#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
+#: scene/audio/audio_stream_player.cpp scene/gui/video_player.cpp
+msgid "Stream"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Size Limit"
+msgstr "í¬ê¸°: "
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Detect 3D"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "SVG"
+msgstr "HSV"
+
#: editor/import/resource_importer_texture.cpp
msgid ""
"Warning, no suitable PC VRAM compression enabled in Project Settings. This "
"texture will not display correctly on PC."
msgstr ""
+#: editor/import/resource_importer_texture_atlas.cpp
+#, fuzzy
+msgid "Atlas File"
+msgstr "윤곽선 í¬ê¸°:"
+
+#: editor/import/resource_importer_texture_atlas.cpp
+#, fuzzy
+msgid "Import Mode"
+msgstr "내보내기 모드:"
+
+#: editor/import/resource_importer_texture_atlas.cpp
+#, fuzzy
+msgid "Crop To Region"
+msgstr "íƒ€ì¼ ì˜ì—­ 설정"
+
+#: editor/import/resource_importer_texture_atlas.cpp
+msgid "Trim Alpha Border From Region"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp scene/2d/physics_body_2d.cpp
+#, fuzzy
+msgid "Force"
+msgstr "ì›ë³¸ 메시:"
+
+#: editor/import/resource_importer_wav.cpp
+msgid "8 Bit"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp main/main.cpp
+#: modules/mono/editor/csharp_project.cpp modules/mono/mono_gd/gd_mono.cpp
+msgid "Mono"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+#, fuzzy
+msgid "Max Rate"
+msgstr "믹스 노드"
+
+#: editor/import/resource_importer_wav.cpp
+#, fuzzy
+msgid "Max Rate Hz"
+msgstr "믹스 노드"
+
+#: editor/import/resource_importer_wav.cpp
+msgid "Trim"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+#, fuzzy
+msgid "Normalize"
+msgstr "형ì‹"
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+#, fuzzy
+msgid "Loop Mode"
+msgstr "ì´ë™ 모드"
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+#, fuzzy
+msgid "Loop Begin"
+msgstr "ì´ë™ 모드"
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+#, fuzzy
+msgid "Loop End"
+msgstr "ì´ë™ 모드"
+
#: editor/import_defaults_editor.cpp
msgid "Select Importer"
msgstr "ìž„í¬í„° ì„ íƒ"
@@ -6855,6 +7343,29 @@ msgid "Failed to load resource."
msgstr "리소스 ë¶ˆëŸ¬ì˜¤ê¸°ì— ì‹¤íŒ¨í–ˆìŠµë‹ˆë‹¤."
#: editor/inspector_dock.cpp
+#, fuzzy
+msgid "Property Name Style"
+msgstr "프로ì íЏ ì´ë¦„:"
+
+#: editor/inspector_dock.cpp scene/gui/color_picker.cpp
+msgid "Raw"
+msgstr "Raw"
+
+#: editor/inspector_dock.cpp
+#, fuzzy
+msgid "Capitalized"
+msgstr "대문ìžë¡œ 시작"
+
+#: editor/inspector_dock.cpp
+#, fuzzy
+msgid "Localized"
+msgstr "로케ì¼"
+
+#: editor/inspector_dock.cpp
+msgid "Localization not available for current language."
+msgstr ""
+
+#: editor/inspector_dock.cpp
msgid "Copy Properties"
msgstr "ì†ì„± 복사"
@@ -7899,18 +8410,26 @@ msgid "License (Z-A)"
msgstr "ë¼ì´ì„ ìФ (Z-A)"
#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgctxt "Pagination"
msgid "First"
msgstr "처ìŒìœ¼ë¡œ"
-#: editor/plugins/asset_library_editor_plugin.cpp scene/gui/control.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgctxt "Pagination"
msgid "Previous"
msgstr "ì´ì „"
-#: editor/plugins/asset_library_editor_plugin.cpp scene/gui/control.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgctxt "Pagination"
msgid "Next"
msgstr "다ìŒ"
#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgctxt "Pagination"
msgid "Last"
msgstr "ë으로"
@@ -8153,19 +8672,19 @@ msgid ""
"margins."
msgstr "ì´ ì„¤ì •ì„ ì¼œë©´, Control 노드는 움ì§ì´ë©´ì„œ ì—¬ë°±ì´ ì•„ë‹Œ 앵커를 바꿉니다."
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Top Left"
msgstr "왼쪽 위"
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Top Right"
msgstr "오른쪽 위"
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Bottom Right"
msgstr "오른쪽 아래"
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Bottom Left"
msgstr "왼쪽 아래"
@@ -8880,6 +9399,19 @@ msgstr "GI 프로브 굽기"
msgid "Gradient Edited"
msgstr "기울기 편집ë¨"
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+msgid "Swap GradientTexture2D Fill Points"
+msgstr ""
+
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+msgid "Swap Gradient Fill Points"
+msgstr ""
+
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+#, fuzzy
+msgid "Toggle Grid Snap"
+msgstr "모드 토글"
+
#: editor/plugins/item_list_editor_plugin.cpp
msgid "Item %d"
msgstr "항목 %d개"
@@ -9111,8 +9643,9 @@ msgstr ""
"존재하는 씬ì—서 ì—…ë°ì´íŠ¸í• ê¹Œìš”?\n"
"%s"
-#: editor/plugins/mesh_library_editor_plugin.cpp modules/gridmap/grid_map.cpp
-msgid "Mesh Library"
+#: editor/plugins/mesh_library_editor_plugin.cpp
+#, fuzzy
+msgid "MeshLibrary"
msgstr "메시 ë¼ì´ë¸ŒëŸ¬ë¦¬"
#: editor/plugins/mesh_library_editor_plugin.cpp
@@ -10103,8 +10636,8 @@ msgstr "ë©”ì„œë“œì— ì—°ê²°:"
msgid "Source"
msgstr "소스"
-#: editor/plugins/script_text_editor.cpp scene/3d/interpolated_camera.cpp
-#: scene/animation/skeleton_ik.cpp
+#: editor/plugins/script_text_editor.cpp platform/uwp/export/export.cpp
+#: scene/3d/interpolated_camera.cpp scene/animation/skeleton_ik.cpp
msgid "Target"
msgstr "Target(대ìƒ)"
@@ -11078,7 +11611,9 @@ msgstr "ì†ë„:"
#: editor/plugins/sprite_frames_editor_plugin.cpp
#: modules/gltf/gltf_animation.cpp modules/minimp3/audio_stream_mp3.cpp
-#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp scene/2d/path_2d.cpp
+#: modules/minimp3/resource_importer_mp3.cpp
+#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp
+#: modules/stb_vorbis/resource_importer_ogg_vorbis.cpp scene/2d/path_2d.cpp
#: scene/3d/path.cpp scene/resources/animation.cpp scene/resources/material.cpp
msgid "Loop"
msgstr "루프"
@@ -11968,8 +12503,9 @@ msgstr "비트 마스í¬"
msgid "Priority"
msgstr "우선 순위"
-#: editor/plugins/tile_set_editor_plugin.cpp main/main.cpp scene/gui/button.cpp
-#: scene/gui/item_list.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp main/main.cpp
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#: scene/gui/button.cpp scene/gui/item_list.cpp
msgid "Icon"
msgstr "ì•„ì´ì½˜"
@@ -13342,10 +13878,6 @@ msgstr ""
"내보내기 프리셋ì´ë‚˜ 내보내기 ì„¤ì •ì˜ ë¬¸ì œì¸ ê²ƒ 같습니다."
#: editor/project_export.cpp
-msgid "Release"
-msgstr "출시"
-
-#: editor/project_export.cpp
msgid "Exporting All"
msgstr "ëª¨ë‘ ë‚´ë³´ë‚´ê¸°"
@@ -15204,6 +15736,7 @@ msgid "Change AudioStreamPlayer3D Emission Angle"
msgstr "AudioStreamPlayer3D ë°©ì¶œ ê°ë„ 바꾸기"
#: editor/spatial_editor_gizmos.cpp modules/gltf/gltf_node.cpp
+#: platform/osx/export/export.cpp
msgid "Camera"
msgstr ""
@@ -15487,7 +16020,8 @@ msgstr ""
msgid "Use Nvidia Rect Flicker Workaround"
msgstr ""
-#: main/main.cpp platform/uwp/os_uwp.cpp
+#: main/main.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp platform/uwp/os_uwp.cpp
#, fuzzy
msgid "Display"
msgstr "ëª¨ë‘ í‘œì‹œ"
@@ -15548,19 +16082,6 @@ msgstr ""
msgid "Allowed"
msgstr ""
-#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp scene/2d/camera_2d.cpp
-#: scene/2d/light_2d.cpp scene/2d/navigation_polygon.cpp
-#: scene/2d/ray_cast_2d.cpp scene/2d/sprite.cpp scene/2d/y_sort.cpp
-#: scene/3d/audio_stream_player_3d.cpp scene/3d/baked_lightmap.cpp
-#: scene/3d/interpolated_camera.cpp scene/3d/light.cpp
-#: scene/3d/navigation_mesh_instance.cpp scene/3d/ray_cast.cpp
-#: scene/3d/sprite_3d.cpp scene/gui/graph_edit.cpp
-#: scene/gui/rich_text_label.cpp scene/resources/curve.cpp
-#: scene/resources/environment.cpp
-#, fuzzy
-msgid "Enabled"
-msgstr "활성화"
-
#: main/main.cpp
msgid "Intended Usage"
msgstr ""
@@ -15592,13 +16113,14 @@ msgstr ""
msgid "Handheld"
msgstr ""
-#: main/main.cpp
+#: main/main.cpp platform/javascript/export/export.cpp
+#: platform/uwp/export/export.cpp
#, fuzzy
msgid "Orientation"
msgstr "온ë¼ì¸ 문서"
#: main/main.cpp scene/gui/scroll_container.cpp scene/gui/text_edit.cpp
-#: scene/main/scene_tree.cpp
+#: scene/main/scene_tree.cpp scene/register_scene_types.cpp
#, fuzzy
msgid "Common"
msgstr "커뮤니티"
@@ -15641,7 +16163,7 @@ msgstr ""
#: main/main.cpp
#, fuzzy
-msgid "Frame Delay (msec)"
+msgid "Frame Delay Msec"
msgstr "프레임 ì„ íƒ"
#: main/main.cpp
@@ -15769,11 +16291,6 @@ msgstr ""
msgid "Tooltip Position Offset"
msgstr "회전 오프셋:"
-#: main/main.cpp modules/mono/editor/csharp_project.cpp
-#: modules/mono/mono_gd/gd_mono.cpp
-msgid "Mono"
-msgstr ""
-
#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp
#, fuzzy
msgid "Debugger Agent"
@@ -16351,7 +16868,7 @@ msgstr "색ìƒ"
msgid "Intensity"
msgstr ""
-#: modules/gltf/gltf_light.cpp scene/2d/light_2d.cpp
+#: modules/gltf/gltf_light.cpp scene/2d/light_2d.cpp scene/3d/light.cpp
#, fuzzy
msgid "Range"
msgstr "바꾸기"
@@ -16498,11 +17015,6 @@ msgstr "ë°ì´í„°ì™€ 함께"
msgid "Use Named Skin Binds"
msgstr ""
-#: modules/gltf/gltf_state.cpp scene/3d/physics_joint.cpp
-#, fuzzy
-msgid "Nodes"
-msgstr "노드"
-
#: modules/gltf/gltf_state.cpp
#, fuzzy
msgid "Buffer Views"
@@ -16514,16 +17026,6 @@ msgstr ""
#: modules/gltf/gltf_state.cpp
#, fuzzy
-msgid "Meshes"
-msgstr "메시"
-
-#: modules/gltf/gltf_state.cpp
-#, fuzzy
-msgid "Materials"
-msgstr "머티리얼 바꾸기:"
-
-#: modules/gltf/gltf_state.cpp
-#, fuzzy
msgid "Scene Name"
msgstr "씬 경로:"
@@ -16539,15 +17041,11 @@ msgstr "루트 노드 ì´ë¦„"
msgid "Textures"
msgstr "기능"
-#: modules/gltf/gltf_state.cpp
+#: modules/gltf/gltf_state.cpp platform/uwp/export/export.cpp
msgid "Images"
msgstr ""
#: modules/gltf/gltf_state.cpp
-msgid "Skins"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp
msgid "Cameras"
msgstr ""
@@ -16582,11 +17080,15 @@ msgid "Src Image"
msgstr "본 ë³´ì´ê¸°"
#: modules/gridmap/grid_map.cpp
+msgid "Mesh Library"
+msgstr "메시 ë¼ì´ë¸ŒëŸ¬ë¦¬"
+
+#: modules/gridmap/grid_map.cpp
#, fuzzy
msgid "Physics Material"
msgstr "물리 프레임 %"
-#: modules/gridmap/grid_map.cpp
+#: modules/gridmap/grid_map.cpp scene/3d/visual_instance.cpp
#, fuzzy
msgid "Use In Baked Light"
msgstr "ë¼ì´íŠ¸ë§µ 굽기"
@@ -16618,6 +17120,7 @@ msgstr "중앙"
#: modules/gridmap/grid_map.cpp scene/2d/collision_object_2d.cpp
#: scene/2d/tile_map.cpp scene/3d/collision_object.cpp scene/3d/soft_body.cpp
+#: scene/resources/material.cpp
msgid "Mask"
msgstr ""
@@ -16799,7 +17302,9 @@ msgid "Ultra Quality Ray Count"
msgstr ""
#: modules/minimp3/audio_stream_mp3.cpp
+#: modules/minimp3/resource_importer_mp3.cpp
#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp
+#: modules/stb_vorbis/resource_importer_ogg_vorbis.cpp
#, fuzzy
msgid "Loop Offset"
msgstr "오프셋:"
@@ -17914,6 +18419,192 @@ msgid "The package must have at least one '.' separator."
msgstr "패키지는 ì ì–´ë„ í•˜ë‚˜ì˜ '.' 분리 기호가 있어야 합니다."
#: platform/android/export/export_plugin.cpp
+msgid "Use Custom Build"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Export Format"
+msgstr "경로 내보내기"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Keystore"
+msgstr "디버거"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Debug User"
+msgstr "디버거"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+msgid "Debug Password"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Release User"
+msgstr "출시"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Release Password"
+msgstr "출시"
+
+#: platform/android/export/export_plugin.cpp
+msgid "One Click Deploy"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Clear Previous Install"
+msgstr "ì´ì „ ì¸ìŠ¤í„´ìŠ¤ 검사"
+
+#: platform/android/export/export_plugin.cpp scene/resources/shader.cpp
+msgid "Code"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Min SDK"
+msgstr "윤곽선 í¬ê¸°:"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Target SDK"
+msgstr "Target(대ìƒ)"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Package"
+msgstr "패킹 중"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Unique Name"
+msgstr "노드 ì´ë¦„:"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Signed"
+msgstr "시그ë„"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Classify As Game"
+msgstr "í´ëž˜ìФ ì´ë¦„:"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Retain Data On Uninstall"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Exclude From Recents"
+msgstr "노드 삭제"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Graphics"
+msgstr "ê²©ìž ì˜¤í”„ì…‹:"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "OpenGL Debug"
+msgstr "열기"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "XR Features"
+msgstr "기능"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "XR Mode"
+msgstr "팬 모드"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Hand Tracking"
+msgstr "패킹 중"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Hand Tracking Frequency"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Passthrough"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Immersive Mode"
+msgstr "우선 순위 모드"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Support Small"
+msgstr "ì§€ì›"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Support Normal"
+msgstr "ì§€ì›"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Support Large"
+msgstr "ì§€ì›"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Support Xlarge"
+msgstr "ì§€ì›"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "User Data Backup"
+msgstr "유저 ì¸í„°íŽ˜ì´ìФ"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Allow"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Command Line"
+msgstr "커뮤니티"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Extra Args"
+msgstr "별ë„ì˜ í˜¸ì¶œ ì¸ìˆ˜:"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "APK Expansion"
+msgstr "í‘œí˜„ì‹ ì„¤ì •"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Salt"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Public Key"
+msgstr "물리 키"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Permissions"
+msgstr "ë°©ì¶œ 마스í¬"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Custom Permissions"
+msgstr "커스텀 씬 실행"
+
+#: platform/android/export/export_plugin.cpp
msgid "Select device from the list"
msgstr "목ë¡ì—서 기기 ì„ íƒ"
@@ -18231,6 +18922,178 @@ msgid "The character '%s' is not allowed in Identifier."
msgstr "ë¬¸ìž '%s'ì€(는) ì‹ë³„ìžì— 쓸 수 없습니다."
#: platform/iphone/export/export.cpp
+msgid "App Store Team ID"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Provisioning Profile UUID Debug"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Code Sign Identity Debug"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Export Method Debug"
+msgstr "디버그와 함께 내보내기"
+
+#: platform/iphone/export/export.cpp
+msgid "Provisioning Profile UUID Release"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Code Sign Identity Release"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Export Method Release"
+msgstr "내보내기 모드:"
+
+#: platform/iphone/export/export.cpp
+msgid "Targeted Device Family"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Info"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Identifier"
+msgstr "ìž˜ëª»ëœ ì‹ë³„ìž:"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Signature"
+msgstr "시그ë„"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Short Version"
+msgstr "버전"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Copyright"
+msgstr "오른쪽 위"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Capabilities"
+msgstr "ì†ì„± 붙여넣기"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Access Wi-Fi"
+msgstr "성공!"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Push Notifications"
+msgstr "무작위 회전:"
+
+#: platform/iphone/export/export.cpp scene/3d/baked_lightmap.cpp
+#, fuzzy
+msgid "User Data"
+msgstr "유저 ì¸í„°íŽ˜ì´ìФ"
+
+#: platform/iphone/export/export.cpp
+msgid "Accessible From Files App"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Accessible From Itunes Sharing"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Privacy"
+msgstr "물리 키"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Camera Usage Description"
+msgstr "설명"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Microphone Usage Description"
+msgstr "ì†ì„± 설명"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Photolibrary Usage Description"
+msgstr "ì†ì„± 설명"
+
+#: platform/iphone/export/export.cpp
+msgid "iPhone 120 X 120"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPhone 180 X 180"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 76 X 76"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 152 X 152"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 167 X 167"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "App Store 1024 X 1024"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Spotlight 40 X 40"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Spotlight 80 X 80"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Storyboard"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Use Launch Screen Storyboard"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Image Scale Mode"
+msgstr "ìŠ¤ì¼€ì¼ ëª¨ë“œ"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Custom Image @2x"
+msgstr "노드 잘ë¼ë‚´ê¸°"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Custom Image @3x"
+msgstr "노드 잘ë¼ë‚´ê¸°"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Use Custom BG Color"
+msgstr "노드 잘ë¼ë‚´ê¸°"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Custom BG Color"
+msgstr "노드 잘ë¼ë‚´ê¸°"
+
+#: platform/iphone/export/export.cpp
msgid "App Store Team ID not specified - cannot configure the project."
msgstr "App Store 팀 ID를 지정하지 않았습니다 - 프로ì íŠ¸ë¥¼ 구성할 수 없습니다."
@@ -18267,6 +19130,80 @@ msgid "Could not read file:"
msgstr "파ì¼ì„ ì½ì„ 수 ì—†ìŒ:"
#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Variant"
+msgstr "간격:"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Export Type"
+msgstr "내보내기"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "VRAM Texture Compression"
+msgstr "í‘œí˜„ì‹ ì„¤ì •"
+
+#: platform/javascript/export/export.cpp
+msgid "For Desktop"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "For Mobile"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Html"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Export Icon"
+msgstr "ëª¨ë‘ íŽ¼ì¹˜ê¸°"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Custom Html Shell"
+msgstr "노드 잘ë¼ë‚´ê¸°"
+
+#: platform/javascript/export/export.cpp
+msgid "Head Include"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Canvas Resize Policy"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Focus Canvas On Start"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Experimental Virtual Keyboard"
+msgstr "ì‹œê·¸ë„ í•„í„°"
+
+#: platform/javascript/export/export.cpp
+msgid "Progressive Web App"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Offline Page"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 144 X 144"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 180 X 180"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 512 X 512"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
msgid "Could not read HTML shell:"
msgstr "HTML shellì„ ì½ì„ 수 ì—†ìŒ:"
@@ -18380,6 +19317,201 @@ msgid "Unknown object type."
msgstr ""
#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "App Category"
+msgstr "카테고리:"
+
+#: platform/osx/export/export.cpp
+msgid "High Res"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Location Usage Description"
+msgstr "설명"
+
+#: platform/osx/export/export.cpp
+msgid "Address Book Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Calendar Usage Description"
+msgstr "설명"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Photos Library Usage Description"
+msgstr "ì†ì„± 설명"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Desktop Folder Usage Description"
+msgstr "메서드 설명"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Documents Folder Usage Description"
+msgstr "메서드 설명"
+
+#: platform/osx/export/export.cpp
+msgid "Downloads Folder Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Network Volumes Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Removable Volumes Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#, fuzzy
+msgid "Codesign"
+msgstr "노드"
+
+#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Identity"
+msgstr "내어쓰기"
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#, fuzzy
+msgid "Timestamp"
+msgstr "시간"
+
+#: platform/osx/export/export.cpp
+msgid "Hardened Runtime"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Replace Existing Signature"
+msgstr "ëª¨ë‘ ë°”ê¾¸ê¸°"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Entitlements"
+msgstr "기즈모"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Custom File"
+msgstr "노드 잘ë¼ë‚´ê¸°"
+
+#: platform/osx/export/export.cpp
+msgid "Allow JIT Code Execution"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Allow Unsigned Executable Memory"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Allow Dyld Environment Variables"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Disable Library Validation"
+msgstr "ë¹„í™œì„±í™”ëœ ë²„íŠ¼"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Audio Input"
+msgstr "입력 추가"
+
+#: platform/osx/export/export.cpp
+msgid "Address Book"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Calendars"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Photos Library"
+msgstr "ë¼ì´ë¸ŒëŸ¬ë¦¬ 내보내기"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Apple Events"
+msgstr "ì´ë²¤íЏ 추가"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Debugging"
+msgstr "디버그"
+
+#: platform/osx/export/export.cpp
+msgid "App Sandbox"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Network Server"
+msgstr "ë„¤íŠ¸ì›Œí¬ í”„ë¡œíŒŒì¼ëŸ¬"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Network Client"
+msgstr "ë„¤íŠ¸ì›Œí¬ í”„ë¡œíŒŒì¼ëŸ¬"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Device Usb"
+msgstr "기기"
+
+#: platform/osx/export/export.cpp
+msgid "Device Bluetooth"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Files Downloads"
+msgstr "다운로드"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Files Pictures"
+msgstr "기능"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Files Music"
+msgstr "파ì¼"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Files Movies"
+msgstr "íƒ€ì¼ í•„í„°"
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#, fuzzy
+msgid "Custom Options"
+msgstr "버스 옵션"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Notarization"
+msgstr "현지화"
+
+#: platform/osx/export/export.cpp
+msgid "Apple ID Name"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Apple ID Password"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Apple Team ID"
+msgstr ""
+
+#: platform/osx/export/export.cpp
msgid ""
"Note: The notarization process generally takes less than an hour. When the "
"process is completed, you'll receive an email."
@@ -18577,6 +19709,136 @@ msgid "Force Builtin Codesign"
msgstr ""
#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Architecture"
+msgstr "구조 í•­ëª©ì„ ì¶”ê°€"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Display Name"
+msgstr "ëª¨ë‘ í‘œì‹œ"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Short Name"
+msgstr "스í¬ë¦½íЏ ì´ë¦„:"
+
+#: platform/uwp/export/export.cpp
+msgid "Publisher"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Publisher Display Name"
+msgstr "ìž˜ëª»ëœ íŒ¨í‚¤ì§€ ê²Œì‹œìž í‘œì‹œ ì´ë¦„."
+
+#: platform/uwp/export/export.cpp
+msgid "Product Guid"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Publisher Guid"
+msgstr "ê°€ì´ë“œ 지우기"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Signing"
+msgstr "시그ë„"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Certificate"
+msgstr "ì •ì :"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Algorithm"
+msgstr "디버거"
+
+#: platform/uwp/export/export.cpp
+msgid "Major"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Minor"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Build"
+msgstr "ìž ëª¨ë“œ"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Revision"
+msgstr "í‘œí˜„ì‹ ì„¤ì •"
+
+#: platform/uwp/export/export.cpp
+msgid "Landscape"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Portrait"
+msgstr "í¬í„¸ 뒤집기"
+
+#: platform/uwp/export/export.cpp
+msgid "Landscape Flipped"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Portrait Flipped"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Store Logo"
+msgstr "ìŠ¤ì¼€ì¼ ëª¨ë“œ"
+
+#: platform/uwp/export/export.cpp
+msgid "Square 44 X 44 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 71 X 71 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 150 X 150 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 310 X 310 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Wide 310 X 150 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Splash Screen"
+msgstr "드로우 콜:"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Tiles"
+msgstr "파ì¼"
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Square 150 X 150"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Wide 310 X 150"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Square 310 X 310"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
msgid "Invalid package short name."
msgstr "ìž˜ëª»ëœ íŒ¨í‚¤ì§€ 단축 ì´ë¦„."
@@ -18642,15 +19904,53 @@ msgid "Debug Certificate"
msgstr ""
#: platform/uwp/export/export.cpp
-msgid "Debug Password"
+#, fuzzy
+msgid "Debug Algorithm"
+msgstr "디버거"
+
+#: platform/windows/export/export.cpp
+msgid "Identity Type"
msgstr ""
-#: platform/uwp/export/export.cpp
+#: platform/windows/export/export.cpp
+msgid "Timestamp Server URL"
+msgstr ""
+
+#: platform/windows/export/export.cpp
#, fuzzy
-msgid "Debug Algorithm"
+msgid "Digest Algorithm"
msgstr "디버거"
#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "File Version"
+msgstr "버전"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Product Version"
+msgstr "ìž˜ëª»ëœ ì œí’ˆ GUID."
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Company Name"
+msgstr "노드 ì´ë¦„:"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Product Name"
+msgstr "프로ì íЏ ì´ë¦„:"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "File Description"
+msgstr "설명"
+
+#: platform/windows/export/export.cpp
+msgid "Trademarks"
+msgstr ""
+
+#: platform/windows/export/export.cpp
msgid ""
"The rcedit tool must be configured in the Editor Settings (Export > Windows "
"> Rcedit) to change the icon or app information data."
@@ -18725,12 +20025,14 @@ msgstr "실행"
msgid "Centered"
msgstr "중앙"
-#: scene/2d/animated_sprite.cpp scene/2d/camera_2d.cpp scene/2d/light_2d.cpp
+#: scene/2d/animated_sprite.cpp scene/2d/camera_2d.cpp
+#: scene/2d/cpu_particles_2d.cpp scene/2d/light_2d.cpp
#: scene/2d/parallax_background.cpp scene/2d/parallax_layer.cpp
#: scene/2d/path_2d.cpp scene/2d/polygon_2d.cpp scene/2d/sprite.cpp
-#: scene/3d/path.cpp scene/3d/physics_body.cpp scene/3d/sprite_3d.cpp
-#: scene/gui/graph_node.cpp scene/gui/rich_text_effect.cpp
-#: scene/main/canvas_layer.cpp scene/resources/material.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/path.cpp scene/3d/physics_body.cpp
+#: scene/3d/sprite_3d.cpp scene/gui/graph_node.cpp
+#: scene/gui/rich_text_effect.cpp scene/main/canvas_layer.cpp
+#: scene/resources/material.cpp scene/resources/particles_material.cpp
#: scene/resources/style_box.cpp
#, fuzzy
msgid "Offset"
@@ -18805,11 +20107,6 @@ msgstr "오디오 버스 추가"
msgid "Override"
msgstr "오버ë¼ì´ë“œ"
-#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
-#: scene/audio/audio_stream_player.cpp scene/gui/video_player.cpp
-msgid "Stream"
-msgstr ""
-
#: scene/2d/audio_stream_player_2d.cpp scene/audio/audio_stream_player.cpp
#: scene/gui/video_player.cpp servers/audio/effects/audio_effect_amplify.cpp
#, fuzzy
@@ -18836,13 +20133,13 @@ msgid "Stream Paused"
msgstr ""
#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
-#: scene/3d/reflection_probe.cpp scene/3d/visual_instance.cpp
-#: scene/resources/material.cpp
+#: scene/3d/light.cpp scene/3d/reflection_probe.cpp
+#: scene/3d/visual_instance.cpp scene/resources/material.cpp
#, fuzzy
msgid "Max Distance"
msgstr "거리 ì„ íƒ:"
-#: scene/2d/audio_stream_player_2d.cpp
+#: scene/2d/audio_stream_player_2d.cpp scene/3d/light.cpp
#, fuzzy
msgid "Attenuation"
msgstr "애니메ì´ì…˜"
@@ -18898,6 +20195,24 @@ msgstr "ì´ë™ 모드"
msgid "Limit"
msgstr ""
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/style_box.cpp
+#, fuzzy
+msgid "Left"
+msgstr "왼쪽 위"
+
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/style_box.cpp
+#, fuzzy
+msgid "Right"
+msgstr "ë¼ì´íЏ"
+
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/dynamic_font.cpp scene/resources/style_box.cpp
+#, fuzzy
+msgid "Bottom"
+msgstr "왼쪽 아래"
+
#: scene/2d/camera_2d.cpp
#, fuzzy
msgid "Smoothed"
@@ -19134,13 +20449,6 @@ msgstr ""
msgid "Emitting"
msgstr "설정:"
-#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp scene/3d/area.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
-#: scene/resources/environment.cpp
-#, fuzzy
-msgid "Amount"
-msgstr "ì–‘:"
-
#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp
#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
msgid "Lifetime"
@@ -19205,18 +20513,13 @@ msgstr ""
#: scene/2d/mesh_instance_2d.cpp scene/2d/multimesh_instance_2d.cpp
#: scene/2d/particles_2d.cpp scene/2d/polygon_2d.cpp scene/2d/sprite.cpp
#: scene/3d/sprite_3d.cpp scene/gui/nine_patch_rect.cpp
-#: scene/gui/texture_rect.cpp scene/resources/sky.cpp
-#: scene/resources/style_box.cpp scene/resources/visual_shader_nodes.cpp
+#: scene/gui/texture_rect.cpp scene/resources/material.cpp
+#: scene/resources/sky.cpp scene/resources/style_box.cpp
+#: scene/resources/visual_shader_nodes.cpp
#, fuzzy
msgid "Texture"
msgstr "í…스트"
-#: scene/2d/cpu_particles_2d.cpp scene/2d/mesh_instance_2d.cpp
-#: scene/2d/multimesh_instance_2d.cpp scene/2d/particles_2d.cpp
-#: scene/2d/sprite.cpp scene/resources/style_box.cpp
-msgid "Normal Map"
-msgstr ""
-
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
#, fuzzy
@@ -19240,10 +20543,10 @@ msgid "Normals"
msgstr "형ì‹"
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/3d/sprite_3d.cpp scene/resources/material.cpp
-#: scene/resources/particles_material.cpp scene/resources/texture.cpp
-msgid "Flags"
-msgstr ""
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Align Y"
+msgstr "지정"
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
@@ -19264,6 +20567,12 @@ msgid "Initial Velocity"
msgstr "초기화"
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Velocity Random"
+msgstr "선회 뷰 오른쪽으로"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp servers/physics_2d_server.cpp
#: servers/physics_server.cpp
msgid "Angular Velocity"
@@ -19272,6 +20581,12 @@ msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
#, fuzzy
+msgid "Velocity Curve"
+msgstr "선회 뷰 오른쪽으로"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
msgid "Orbit Velocity"
msgstr "선회 뷰 오른쪽으로"
@@ -19283,6 +20598,23 @@ msgstr "ì§ì„ í˜•"
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Accel"
+msgstr "성공!"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Accel Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Accel Curve"
+msgstr "곡선 가르기"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
msgid "Radial Accel"
msgstr ""
@@ -19292,19 +20624,55 @@ msgid "Tangential Accel"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/2d/joints_2d.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/vehicle_body.cpp
-#: scene/resources/particles_material.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/physics_joint.cpp
+#: scene/3d/vehicle_body.cpp scene/resources/particles_material.cpp
#: servers/audio/effects/audio_effect_reverb.cpp
msgid "Damping"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+msgid "Damping Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Damping Curve"
+msgstr "곡선 가르기"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp scene/3d/light.cpp
+#: scene/resources/particles_material.cpp
msgid "Angle"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+msgid "Angle Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Angle Curve"
+msgstr "곡선 닫기"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#, fuzzy
+msgid "Scale Amount"
+msgstr "ì–‘:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+msgid "Scale Amount Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#, fuzzy
+msgid "Scale Amount Curve"
+msgstr "커서 위치ì—서 ìŠ¤ì¼€ì¼ ì¡°ì ˆ"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
#, fuzzy
msgid "Color Ramp"
msgstr "색ìƒ"
@@ -19320,6 +20688,48 @@ msgstr ""
msgid "Hue Variation"
msgstr "간격:"
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Variation"
+msgstr "간격:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Variation Random"
+msgstr "간격:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Variation Curve"
+msgstr "간격:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Speed Random"
+msgstr "스케ì¼"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Speed Curve"
+msgstr "곡선 가르기"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Offset Random"
+msgstr "오프셋:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Offset Curve"
+msgstr "곡선 닫기"
+
#: scene/2d/joints_2d.cpp
msgid "Node A and Node B must be PhysicsBody2Ds"
msgstr "노드 A와 노드 B는 PhysicsBody2D여야 합니다"
@@ -19351,6 +20761,7 @@ msgid "Node B"
msgstr "노드"
#: scene/2d/joints_2d.cpp scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp
+#: scene/3d/light.cpp scene/3d/physics_joint.cpp
#: scene/resources/environment.cpp
msgid "Bias"
msgstr ""
@@ -19360,7 +20771,7 @@ msgstr ""
msgid "Disable Collision"
msgstr "ë¹„í™œì„±í™”ëœ ë²„íŠ¼"
-#: scene/2d/joints_2d.cpp
+#: scene/2d/joints_2d.cpp scene/3d/physics_joint.cpp
msgid "Softness"
msgstr ""
@@ -19378,7 +20789,7 @@ msgstr "초기화"
msgid "Rest Length"
msgstr ""
-#: scene/2d/joints_2d.cpp scene/3d/vehicle_body.cpp
+#: scene/2d/joints_2d.cpp scene/3d/physics_joint.cpp scene/3d/vehicle_body.cpp
msgid "Stiffness"
msgstr ""
@@ -19399,7 +20810,7 @@ msgid "Texture Scale"
msgstr "í…스처 ì˜ì—­"
#: scene/2d/light_2d.cpp scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp
-#: scene/resources/environment.cpp scene/resources/sky.cpp
+#: scene/3d/light.cpp scene/resources/environment.cpp scene/resources/sky.cpp
msgid "Energy"
msgstr ""
@@ -19440,12 +20851,6 @@ msgstr "후면 뷰"
msgid "Gradient Length"
msgstr "기울기 편집ë¨"
-#: scene/2d/light_2d.cpp scene/gui/control.cpp
-#: scene/resources/navigation_mesh.cpp
-#, fuzzy
-msgid "Filter"
-msgstr "í•„í„°:"
-
#: scene/2d/light_2d.cpp
#, fuzzy
msgid "Filter Smooth"
@@ -19881,11 +21286,6 @@ msgid "Applied Forces"
msgstr ""
#: scene/2d/physics_body_2d.cpp
-#, fuzzy
-msgid "Force"
-msgstr "ì›ë³¸ 메시:"
-
-#: scene/2d/physics_body_2d.cpp
msgid "Torque"
msgstr ""
@@ -19901,7 +21301,7 @@ msgstr " (물리)"
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
#, fuzzy
-msgid "Moving platform"
+msgid "Moving Platform"
msgstr "출력 ì´ë™ 중"
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
@@ -19910,7 +21310,7 @@ msgstr ""
#: scene/2d/physics_body_2d.cpp scene/2d/touch_screen_button.cpp
#: scene/3d/physics_body.cpp scene/gui/texture_button.cpp
-#: scene/resources/line_shape_2d.cpp
+#: scene/resources/line_shape_2d.cpp scene/resources/material.cpp
#, fuzzy
msgid "Normal"
msgstr "형ì‹"
@@ -20155,6 +21555,34 @@ msgstr ""
"VisibilityEnabler2D는 편집한 ì”¬ì˜ ë£¨íŠ¸ì— ì§ì ‘ 부모로 사용할 때 가장 잘 ìž‘ë™í•©"
"니다."
+#: scene/2d/visibility_notifier_2d.cpp scene/3d/visibility_notifier.cpp
+#, fuzzy
+msgid "Pause Animations"
+msgstr "애니메ì´ì…˜ 붙여넣기"
+
+#: scene/2d/visibility_notifier_2d.cpp scene/3d/visibility_notifier.cpp
+msgid "Freeze Bodies"
+msgstr ""
+
+#: scene/2d/visibility_notifier_2d.cpp
+#, fuzzy
+msgid "Pause Particles"
+msgstr "파티í´"
+
+#: scene/2d/visibility_notifier_2d.cpp
+#, fuzzy
+msgid "Pause Animated Sprites"
+msgstr "애니메ì´ì…˜ 붙여넣기"
+
+#: scene/2d/visibility_notifier_2d.cpp
+#, fuzzy
+msgid "Process Parent"
+msgstr "우선 순위 활성화"
+
+#: scene/2d/visibility_notifier_2d.cpp
+msgid "Physics Process Parent"
+msgstr ""
+
#: scene/3d/area.cpp
msgid "Reverb Bus"
msgstr ""
@@ -20252,6 +21680,7 @@ msgid "Attenuation Filter"
msgstr ""
#: scene/3d/audio_stream_player_3d.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
#: servers/audio/effects/audio_effect_filter.cpp
msgid "Cutoff Hz"
msgstr ""
@@ -20296,11 +21725,6 @@ msgid "Octree"
msgstr "하위 트리"
#: scene/3d/baked_lightmap.cpp
-#, fuzzy
-msgid "User Data"
-msgstr "유저 ì¸í„°íŽ˜ì´ìФ"
-
-#: scene/3d/baked_lightmap.cpp
msgid "Finding meshes and lights"
msgstr "메시 ë° ë¼ì´íŠ¸ë¥¼ 찾는 중"
@@ -20574,6 +21998,16 @@ msgid "Ring Axis"
msgstr "경고"
#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Rotate Y"
+msgstr "회전"
+
+#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Disable Z"
+msgstr "ë¹„í™œì„±í™”ëœ í•­ëª©"
+
+#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
msgid "Flatness"
msgstr ""
@@ -20614,16 +22048,11 @@ msgstr "ë™ì  ë¼ì´ë¸ŒëŸ¬ë¦¬"
msgid "Dynamic Range"
msgstr "ë™ì  ë¼ì´ë¸ŒëŸ¬ë¦¬"
-#: scene/3d/gi_probe.cpp
+#: scene/3d/gi_probe.cpp scene/3d/light.cpp
msgid "Normal Bias"
msgstr ""
#: scene/3d/gi_probe.cpp
-#, fuzzy
-msgid "Compress"
-msgstr "구성 요소"
-
-#: scene/3d/gi_probe.cpp
msgid "Plotting Meshes"
msgstr "메시 구분"
@@ -20655,16 +22084,31 @@ msgstr ""
#: scene/3d/light.cpp
#, fuzzy
+msgid "Indirect Energy"
+msgstr "ë°©ì¶œ 색ìƒ"
+
+#: scene/3d/light.cpp
+#, fuzzy
msgid "Negative"
msgstr "GDNative"
#: scene/3d/light.cpp
#, fuzzy
+msgid "Specular"
+msgstr "ìž ëª¨ë“œ"
+
+#: scene/3d/light.cpp
+#, fuzzy
msgid "Bake Mode"
msgstr "비트 ë§ˆìŠ¤í¬ ëª¨ë“œ"
#: scene/3d/light.cpp
#, fuzzy
+msgid "Contact"
+msgstr "ìƒ‰ìƒ ì„ íƒ"
+
+#: scene/3d/light.cpp
+#, fuzzy
msgid "Reverse Cull Face"
msgstr "버스 볼륨 재설정"
@@ -20675,11 +22119,31 @@ msgstr "ë°©í–¥"
#: scene/3d/light.cpp
#, fuzzy
+msgid "Split 1"
+msgstr "경로 가르기"
+
+#: scene/3d/light.cpp
+#, fuzzy
+msgid "Split 2"
+msgstr "경로 가르기"
+
+#: scene/3d/light.cpp
+#, fuzzy
+msgid "Split 3"
+msgstr "경로 가르기"
+
+#: scene/3d/light.cpp
+#, fuzzy
msgid "Blend Splits"
msgstr "혼합 시간:"
#: scene/3d/light.cpp
#, fuzzy
+msgid "Bias Split Scale"
+msgstr "ìŠ¤ì¼€ì¼ ìŠ¤ëƒ… 사용"
+
+#: scene/3d/light.cpp
+#, fuzzy
msgid "Depth Range"
msgstr "깊ì´"
@@ -20705,6 +22169,11 @@ msgstr "SpotLightì˜ ê°ë„를 90ë„ ì´ìƒìœ¼ë¡œ 잡으면 그림ìžë¥¼ 투ì˜í
msgid "Spot"
msgstr ""
+#: scene/3d/light.cpp
+#, fuzzy
+msgid "Angle Attenuation"
+msgstr "애니메ì´ì…˜"
+
#: scene/3d/mesh_instance.cpp
msgid "Software Skinning"
msgstr ""
@@ -20844,6 +22313,63 @@ msgstr "ì¶•"
#: scene/3d/physics_body.cpp
#, fuzzy
+msgid "Linear X"
+msgstr "ì§ì„ í˜•"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Linear Y"
+msgstr "ì§ì„ í˜•"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Linear Z"
+msgstr "ì§ì„ í˜•"
+
+#: scene/3d/physics_body.cpp
+msgid "Angular X"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Angular Y"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Angular Z"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Motion X"
+msgstr "ì•¡ì…˜"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Motion Y"
+msgstr "ì•¡ì…˜"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Motion Z"
+msgstr "ì•¡ì…˜"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Move Lock X"
+msgstr "노드 ì´ë™"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Move Lock Y"
+msgstr "노드 ì´ë™"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Move Lock Z"
+msgstr "노드 ì´ë™"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
msgid "Body Offset"
msgstr "오프셋:"
@@ -20877,6 +22403,15 @@ msgid "Exclude Nodes"
msgstr "노드 삭제"
#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Params"
+msgstr "매개변수 변경ë¨:"
+
+#: scene/3d/physics_joint.cpp
+msgid "Impulse Clamp"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit"
msgstr ""
@@ -20890,6 +22425,55 @@ msgstr "대문ìžë¡œ"
msgid "Lower"
msgstr "소문ìžë¡œ"
+#: scene/3d/physics_joint.cpp scene/3d/vehicle_body.cpp
+#, fuzzy
+msgid "Relaxation"
+msgstr "간격:"
+
+#: scene/3d/physics_joint.cpp
+msgid "Motor"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Target Velocity"
+msgstr "선회 뷰 오른쪽으로"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Max Impulse"
+msgstr "ì†ë„:"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit"
+msgstr "ì§ì„ í˜•"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Upper Distance"
+msgstr "거리 ì„ íƒ:"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Lower Distance"
+msgstr "거리 ì„ íƒ:"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Restitution"
+msgstr "설명"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motion"
+msgstr "초기화"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Ortho"
+msgstr "후면 ì§êµ"
+
#: scene/3d/physics_joint.cpp
#, fuzzy
msgid "Upper Angle"
@@ -20902,6 +22486,16 @@ msgstr "소문ìžë¡œ"
#: scene/3d/physics_joint.cpp
#, fuzzy
+msgid "Angular Motion"
+msgstr "애니메ì´ì…˜"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Angular Ortho"
+msgstr "최대 ê°ë„ 오류:"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
msgid "Swing Span"
msgstr "씬 저장 중"
@@ -20910,17 +22504,99 @@ msgid "Twist Span"
msgstr ""
#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit X"
+msgstr "ì§ì„ í˜•"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motor X"
+msgstr "초기화"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Force Limit"
+msgstr "드로우 콜:"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Spring X"
+msgstr "ì§ì„ í˜•"
+
+#: scene/3d/physics_joint.cpp
+msgid "Equilibrium Point"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit X"
msgstr ""
#: scene/3d/physics_joint.cpp
+msgid "Erp"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Motor X"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Spring X"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit Y"
+msgstr "ì§ì„ í˜•"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motor Y"
+msgstr "초기화"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Spring Y"
+msgstr "ì§ì„ í˜•"
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit Y"
msgstr ""
#: scene/3d/physics_joint.cpp
+msgid "Angular Motor Y"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Spring Y"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit Z"
+msgstr "ì§ì„ í˜•"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motor Z"
+msgstr "초기화"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Spring Z"
+msgstr "ì§ì„ í˜•"
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit Z"
msgstr ""
+#: scene/3d/physics_joint.cpp
+msgid "Angular Motor Z"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Spring Z"
+msgstr ""
+
#: scene/3d/portal.cpp
msgid "The RoomManager should not be a child or grandchild of a Portal."
msgstr "RoomManager는 Portalì˜ ìžì‹ì´ë‚˜ ì†ì£¼ê°€ 아니어야 합니다."
@@ -21042,7 +22718,7 @@ msgstr ""
msgid "Use Default Simplify"
msgstr ""
-#: scene/3d/room.cpp
+#: scene/3d/room.cpp scene/3d/room_manager.cpp
msgid "Room Simplify"
msgstr ""
@@ -21083,6 +22759,13 @@ msgstr "SceneTreeì—는 RoomManager 하나만 있어야 합니다."
msgid "Main"
msgstr ""
+#: scene/3d/room_manager.cpp scene/animation/animation_player.cpp
+#: scene/animation/animation_tree.cpp scene/animation/animation_tree_player.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+#, fuzzy
+msgid "Active"
+msgstr "ì•¡ì…˜"
+
#: scene/3d/room_manager.cpp
msgid "Roomlist"
msgstr ""
@@ -21107,6 +22790,54 @@ msgid "Gameplay"
msgstr ""
#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Gameplay Monitor"
+msgstr "모니터"
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Use Secondary PVS"
+msgstr "ìŠ¤ì¼€ì¼ ìŠ¤ëƒ… 사용"
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Merge Meshes"
+msgstr "메시"
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Show Margins"
+msgstr "ì›ì  ë³´ì´ê¸°"
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Debug Sprawl"
+msgstr "디버그"
+
+#: scene/3d/room_manager.cpp
+msgid "Overlap Warning Threshold"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Preview Camera"
+msgstr "미리보기"
+
+#: scene/3d/room_manager.cpp
+msgid "Portal Depth Limit"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Default Portal Margin"
+msgstr "여백 설정"
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Roaming Expansion Margin"
+msgstr "ëª¨ë‘ íŽ¼ì¹˜ê¸°"
+
+#: scene/3d/room_manager.cpp
msgid ""
"RoomList path is invalid.\n"
"Please check the RoomList branch has been assigned in the RoomManager."
@@ -21244,6 +22975,20 @@ msgstr "픽셀 스냅"
msgid "Billboard"
msgstr ""
+#: scene/3d/sprite_3d.cpp scene/resources/material.cpp
+#, fuzzy
+msgid "Transparent"
+msgstr "행렬 맞바꾸기"
+
+#: scene/3d/sprite_3d.cpp
+#, fuzzy
+msgid "Shaded"
+msgstr "ì…°ì´ë”"
+
+#: scene/3d/sprite_3d.cpp
+msgid "Double Sided"
+msgstr ""
+
#: scene/3d/sprite_3d.cpp
msgid "Alpha Cut"
msgstr ""
@@ -21319,11 +23064,6 @@ msgstr "í‘œí˜„ì‹ ì„¤ì •"
msgid "Max Force"
msgstr "오류"
-#: scene/3d/vehicle_body.cpp
-#, fuzzy
-msgid "Relaxation"
-msgstr "간격:"
-
#: scene/3d/visibility_notifier.cpp
msgid "AABB"
msgstr ""
@@ -21466,7 +23206,7 @@ msgstr "X-페ì´ë“œ 시간 (ì´ˆ):"
#: scene/animation/animation_blend_tree.cpp
#, fuzzy
-msgid "autorestart_"
+msgid "Auto Restart"
msgstr "ìžë™ 재시작:"
#: scene/animation/animation_blend_tree.cpp
@@ -21552,13 +23292,6 @@ msgstr "í´ëž˜ìФ 옵션:"
msgid "Default Blend Time"
msgstr "ë””í´íЏ 테마"
-#: scene/animation/animation_player.cpp scene/animation/animation_tree.cpp
-#: scene/animation/animation_tree_player.cpp
-#: servers/audio/effects/audio_effect_delay.cpp
-#, fuzzy
-msgid "Active"
-msgstr "ì•¡ì…˜"
-
#: scene/animation/animation_player.cpp
msgid "Method Call Mode"
msgstr ""
@@ -21684,10 +23417,6 @@ msgstr "부모 노드 다시 지정"
msgid "Max Iterations"
msgstr "함수 만들기"
-#: scene/animation/tween.cpp scene/resources/texture.cpp
-msgid "Repeat"
-msgstr ""
-
#: scene/animation/tween.cpp
msgid "Playback Process Mode"
msgstr ""
@@ -21718,20 +23447,6 @@ msgstr "모드 ì„ íƒ"
msgid "Alignment"
msgstr ""
-#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
-#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
-#: scene/resources/style_box.cpp
-#, fuzzy
-msgid "Horizontal"
-msgstr "수í‰:"
-
-#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
-#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
-#: scene/resources/style_box.cpp
-#, fuzzy
-msgid "Vertical"
-msgstr "수ì§:"
-
#: scene/gui/base_button.cpp
#, fuzzy
msgid "Shortcut In Tooltip"
@@ -21834,10 +23549,6 @@ msgid "HSV"
msgstr "HSV"
#: scene/gui/color_picker.cpp
-msgid "Raw"
-msgstr "Raw"
-
-#: scene/gui/color_picker.cpp
msgid "Switch between hexadecimal and code values."
msgstr "16진수나 코드 값으로 전환합니다."
@@ -21903,6 +23614,31 @@ msgid "Focus"
msgstr "경로 í¬ì»¤ìФ"
#: scene/gui/control.cpp
+msgid "Neighbour Left"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Neighbour Top"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Neighbour Right"
+msgstr ""
+
+#: scene/gui/control.cpp
+#, fuzzy
+msgid "Neighbour Bottom"
+msgstr "아래쪽 중앙"
+
+#: scene/gui/control.cpp
+msgid "Next"
+msgstr "다ìŒ"
+
+#: scene/gui/control.cpp
+msgid "Previous"
+msgstr "ì´ì „"
+
+#: scene/gui/control.cpp
msgid "Mouse"
msgstr ""
@@ -21940,7 +23676,7 @@ msgid "Dialog"
msgstr "XForm 대화 ìƒìž"
#: scene/gui/dialogs.cpp
-msgid "Hide On Ok"
+msgid "Hide On OK"
msgstr ""
#: scene/gui/dialogs.cpp scene/gui/label.cpp
@@ -22039,7 +23775,7 @@ msgid "Timers"
msgstr "시간"
#: scene/gui/item_list.cpp scene/gui/popup_menu.cpp scene/gui/tree.cpp
-msgid "Incremental Search Max Interval (msec)"
+msgid "Incremental Search Max Interval Msec"
msgstr ""
#: scene/gui/item_list.cpp scene/gui/tree.cpp
@@ -22625,6 +24361,26 @@ msgstr "왼쪽 중앙"
msgid "Nine Patch Stretch"
msgstr "보간 모드"
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Left"
+msgstr "여백 설정"
+
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Top"
+msgstr "여백 설정"
+
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Right"
+msgstr "여백 설정"
+
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Bottom"
+msgstr "모드 ì„ íƒ"
+
#: scene/gui/tree.cpp
msgid "Custom Minimum Height"
msgstr ""
@@ -22662,8 +24418,9 @@ msgid "Paused"
msgstr ""
#: scene/gui/video_player.cpp
-msgid "Buffering (msec)"
-msgstr ""
+#, fuzzy
+msgid "Buffering Msec"
+msgstr "후면 뷰"
#: scene/gui/video_player.cpp
#, fuzzy
@@ -23023,6 +24780,22 @@ msgid "Shadow Atlas"
msgstr "새 ì•„í‹€ë¼ìФ"
#: scene/main/viewport.cpp
+msgid "Quad 0"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 1"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 2"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 3"
+msgstr ""
+
+#: scene/main/viewport.cpp
#, fuzzy
msgid "Canvas Transform"
msgstr "변형 지우기"
@@ -23037,6 +24810,11 @@ msgid "Tooltip Delay (sec)"
msgstr ""
#: scene/register_scene_types.cpp
+#, fuzzy
+msgid "Swap OK Cancel"
+msgstr "취소"
+
+#: scene/register_scene_types.cpp
msgid "Use hiDPI"
msgstr ""
@@ -23051,21 +24829,6 @@ msgid "Custom Font"
msgstr "노드 잘ë¼ë‚´ê¸°"
#: scene/resources/audio_stream_sample.cpp
-#, fuzzy
-msgid "Loop Mode"
-msgstr "ì´ë™ 모드"
-
-#: scene/resources/audio_stream_sample.cpp
-#, fuzzy
-msgid "Loop Begin"
-msgstr "ì´ë™ 모드"
-
-#: scene/resources/audio_stream_sample.cpp
-#, fuzzy
-msgid "Loop End"
-msgstr "ì´ë™ 모드"
-
-#: scene/resources/audio_stream_sample.cpp
#: servers/audio/effects/audio_stream_generator.cpp servers/audio_server.cpp
#, fuzzy
msgid "Mix Rate"
@@ -23125,6 +24888,17 @@ msgstr "별ë„ì˜ ì˜µì…˜:"
#: scene/resources/dynamic_font.cpp
#, fuzzy
+msgid "Char"
+msgstr "올바른 문ìž:"
+
+#: scene/resources/dynamic_font.cpp scene/resources/world.cpp
+#: scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Space"
+msgstr "ë©”ì¸ ì”¬"
+
+#: scene/resources/dynamic_font.cpp
+#, fuzzy
msgid "Font"
msgstr "글꼴"
@@ -23352,6 +25126,43 @@ msgid "Glow"
msgstr ""
#: scene/resources/environment.cpp
+#, fuzzy
+msgid "Levels"
+msgstr "개발ìž"
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "1"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "2"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "3"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "4"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "5"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "6"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "7"
+msgstr ""
+
+#: scene/resources/environment.cpp
msgid "Bloom"
msgstr ""
@@ -23444,10 +25255,68 @@ msgid "Next Pass"
msgstr "ë‹¤ìŒ í‰ë©´"
#: scene/resources/material.cpp
+msgid "Use Shadow To Opacity"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Unshaded"
+msgstr "ì…°ì´ë” ì—†ìŒ í‘œì‹œ"
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Vertex Lighting"
+msgstr "ì§ì ‘ 조명"
+
+#: scene/resources/material.cpp
+msgid "No Depth Test"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Use Point Size"
+msgstr "ì •ë©´ ë·°"
+
+#: scene/resources/material.cpp
+msgid "World Triplanar"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Fixed Size"
+msgstr "ì •ë©´ ë·°"
+
+#: scene/resources/material.cpp
+msgid "Albedo Tex Force sRGB"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Do Not Receive Shadows"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Disable Ambient Light"
+msgstr "들여쓰기"
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Ensure Correct Normals"
+msgstr "변형 중단ë¨."
+
+#: scene/resources/material.cpp
#, fuzzy
msgid "Vertex Color"
msgstr "ê¼­ì§“ì "
+#: scene/resources/material.cpp
+msgid "Use As Albedo"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Is sRGB"
+msgstr ""
+
#: scene/resources/material.cpp servers/visual_server.cpp
#, fuzzy
msgid "Parameters"
@@ -23484,6 +25353,11 @@ msgid "Billboard Mode"
msgstr "ìž ëª¨ë“œ"
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Billboard Keep Scale"
+msgstr "ìž ëª¨ë“œ"
+
+#: scene/resources/material.cpp
msgid "Grow"
msgstr ""
@@ -23493,6 +25367,10 @@ msgid "Grow Amount"
msgstr "ì–‘:"
#: scene/resources/material.cpp
+msgid "Use Alpha Scissor"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Alpha Scissor Threshold"
msgstr ""
@@ -23524,10 +25402,20 @@ msgid "Metallic Specular"
msgstr ""
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Metallic Texture"
+msgstr "방출 소스: "
+
+#: scene/resources/material.cpp
msgid "Metallic Texture Channel"
msgstr ""
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Roughness Texture"
+msgstr "í…스처 제거"
+
+#: scene/resources/material.cpp
msgid "Roughness Texture Channel"
msgstr ""
@@ -23547,6 +25435,16 @@ msgid "Emission Operator"
msgstr "ë°©ì¶œ 색ìƒ"
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Emission On UV2"
+msgstr "ë°©ì¶œ 마스í¬"
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Emission Texture"
+msgstr "방출 소스: "
+
+#: scene/resources/material.cpp
msgid "NormalMap"
msgstr ""
@@ -23561,6 +25459,11 @@ msgstr "무작위 기울기:"
#: scene/resources/material.cpp
#, fuzzy
+msgid "Rim Texture"
+msgstr "í…스처 제거"
+
+#: scene/resources/material.cpp
+#, fuzzy
msgid "Clearcoat"
msgstr "지우기"
@@ -23570,15 +25473,28 @@ msgid "Clearcoat Gloss"
msgstr "í¬ì¦ˆ 지우기"
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Clearcoat Texture"
+msgstr "테마 ì—디터"
+
+#: scene/resources/material.cpp
msgid "Anisotropy"
msgstr ""
#: scene/resources/material.cpp
+msgid "Anisotropy Flowmap"
+msgstr ""
+
+#: scene/resources/material.cpp
#, fuzzy
msgid "Ambient Occlusion"
msgstr "ì–´í´ë£¨ì „"
#: scene/resources/material.cpp
+msgid "On UV2"
+msgstr ""
+
+#: scene/resources/material.cpp
#, fuzzy
msgid "Texture Channel"
msgstr "í…스처 ì˜ì—­"
@@ -23617,6 +25533,11 @@ msgstr "전환: "
#: scene/resources/material.cpp
#, fuzzy
+msgid "Transmission Texture"
+msgstr "전환: "
+
+#: scene/resources/material.cpp
+#, fuzzy
msgid "Refraction"
msgstr "간격:"
@@ -23635,6 +25556,10 @@ msgid "UV1"
msgstr "UV"
#: scene/resources/material.cpp
+msgid "Triplanar"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Triplanar Sharpness"
msgstr ""
@@ -23845,6 +25770,16 @@ msgstr "테마 ì—디터"
msgid "Point Count"
msgstr "ìž…ë ¥ í¬íЏ 추가하기"
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Scale Random"
+msgstr "ìŠ¤ì¼€ì¼ ë¹„ìœ¨:"
+
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Scale Curve"
+msgstr "곡선 닫기"
+
#: scene/resources/physics_material.cpp
msgid "Rough"
msgstr ""
@@ -23907,10 +25842,6 @@ msgid "A"
msgstr ""
#: scene/resources/shader.cpp
-msgid "Code"
-msgstr ""
-
-#: scene/resources/shader.cpp
#, fuzzy
msgid "Custom Defines"
msgstr "커스텀 씬 실행"
@@ -24007,15 +25938,6 @@ msgstr ""
#: scene/resources/texture.cpp
#, fuzzy
-msgid "Storage"
-msgstr "저장하려는 파ì¼:"
-
-#: scene/resources/texture.cpp
-msgid "Lossy Quality"
-msgstr ""
-
-#: scene/resources/texture.cpp
-#, fuzzy
msgid "Load Path"
msgstr "프리셋 불러오기"
@@ -24146,11 +26068,6 @@ msgstr "해당 íƒ€ìž…ì— ìž˜ëª»ëœ ë¹„êµ í•¨ìˆ˜."
msgid "Fallback Environment"
msgstr "환경 보기"
-#: scene/resources/world.cpp scene/resources/world_2d.cpp
-#, fuzzy
-msgid "Space"
-msgstr "ë©”ì¸ ì”¬"
-
#: scene/resources/world.cpp
#, fuzzy
msgid "Scenario"
@@ -24231,10 +26148,37 @@ msgstr ""
msgid "Wet"
msgstr ""
-#: servers/audio/effects/audio_effect_compressor.cpp
-msgid "Threshold"
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "Voice"
msgstr ""
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+msgid "Delay (ms)"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_phaser.cpp
+msgid "Rate Hz"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#, fuzzy
+msgid "Depth (ms)"
+msgstr "깊ì´"
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+msgid "Level dB"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+#: servers/audio/effects/audio_effect_panner.cpp
+#, fuzzy
+msgid "Pan"
+msgstr "í‰ë©´:"
+
#: servers/audio/effects/audio_effect_compressor.cpp
#: servers/audio/effects/audio_effect_filter.cpp
msgid "Gain"
@@ -24258,20 +26202,6 @@ msgid "Tap 1"
msgstr ""
#: servers/audio/effects/audio_effect_delay.cpp
-msgid "Delay (ms)"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_delay.cpp
-msgid "Level dB"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_delay.cpp
-#: servers/audio/effects/audio_effect_panner.cpp
-#, fuzzy
-msgid "Pan"
-msgstr "í‰ë©´:"
-
-#: servers/audio/effects/audio_effect_delay.cpp
msgid "Tap 2"
msgstr ""
@@ -24333,10 +26263,6 @@ msgstr ""
msgid "Range Max Hz"
msgstr ""
-#: servers/audio/effects/audio_effect_phaser.cpp
-msgid "Rate Hz"
-msgstr ""
-
#: servers/audio/effects/audio_effect_pitch_shift.cpp
msgid "Oversampling"
msgstr ""
@@ -24352,7 +26278,7 @@ msgid "Predelay"
msgstr ""
#: servers/audio/effects/audio_effect_reverb.cpp
-msgid "(msec)"
+msgid "Msec"
msgstr ""
#: servers/audio/effects/audio_effect_reverb.cpp
diff --git a/editor/translations/lt.po b/editor/translations/lt.po
index 0ccf8bb76f..aa51273412 100644
--- a/editor/translations/lt.po
+++ b/editor/translations/lt.po
@@ -24,7 +24,7 @@ msgstr ""
"n%100>=20) ? 1 : n%10==0 || (n%100>10 && n%100<20) ? 2 : 3;\n"
"X-Generator: Weblate 4.9-dev\n"
-#: core/bind/core_bind.cpp
+#: core/bind/core_bind.cpp main/main.cpp
msgid "Tablet Driver"
msgstr ""
@@ -121,8 +121,8 @@ msgstr "Sukurti NaujÄ…"
#: core/bind/core_bind.cpp editor/editor_settings.cpp main/main.cpp
#: modules/gdscript/gdscript_editor.cpp modules/gridmap/grid_map.cpp
#: modules/mono/csharp_script.cpp modules/visual_script/visual_script_nodes.cpp
-#: scene/2d/tile_map.cpp scene/3d/camera.cpp scene/gui/control.cpp
-#: scene/gui/graph_edit.cpp scene/main/viewport.cpp
+#: scene/2d/tile_map.cpp scene/3d/camera.cpp scene/3d/light.cpp
+#: scene/gui/control.cpp scene/gui/graph_edit.cpp scene/main/viewport.cpp
#: scene/resources/dynamic_font.cpp scene/resources/navigation_mesh.cpp
#: scene/resources/primitive_meshes.cpp scene/resources/sky.cpp
#: scene/resources/style_box.cpp scene/resources/texture.cpp
@@ -222,8 +222,7 @@ msgid "Data"
msgstr ""
#: core/io/file_access_network.cpp core/register_core_types.cpp
-#: editor/editor_settings.cpp editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp main/main.cpp
+#: editor/editor_settings.cpp main/main.cpp
#: modules/gdscript/language_server/gdscript_language_server.cpp
#, fuzzy
msgid "Network"
@@ -496,9 +495,10 @@ msgstr "Atstatyti PriartinimÄ…"
msgid "Relative"
msgstr ""
-#: core/os/input_event.cpp scene/2d/camera_2d.cpp
-#: scene/3d/interpolated_camera.cpp scene/animation/animation_player.cpp
-#: scene/resources/environment.cpp
+#: core/os/input_event.cpp scene/2d/camera_2d.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/interpolated_camera.cpp
+#: scene/animation/animation_player.cpp scene/resources/environment.cpp
+#: scene/resources/particles_material.cpp
#, fuzzy
msgid "Speed"
msgstr "SkalÄ—:"
@@ -547,8 +547,9 @@ msgstr "BendruomenÄ—"
msgid "Pitch"
msgstr "SkalÄ—:"
-#: core/os/input_event.cpp scene/2d/physics_body_2d.cpp
-#: scene/3d/physics_body.cpp
+#: core/os/input_event.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/physics_body_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/3d/physics_body.cpp scene/resources/particles_material.cpp
msgid "Velocity"
msgstr ""
@@ -566,6 +567,8 @@ msgid "Controller Value"
msgstr ""
#: core/project_settings.cpp editor/editor_node.cpp main/main.cpp
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/windows/export/export.cpp
#, fuzzy
msgid "Application"
msgstr "Animacija"
@@ -582,13 +585,16 @@ msgstr ""
#: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp
#: editor/editor_plugin_settings.cpp editor/editor_profiler.cpp
#: editor/project_manager.cpp editor/settings_config_dialog.cpp
-#: modules/gdnative/nativescript/nativescript.cpp scene/2d/area_2d.cpp
-#: scene/3d/area.cpp scene/main/node.cpp
+#: modules/gdnative/nativescript/nativescript.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/osx/export/export.cpp scene/2d/area_2d.cpp scene/3d/area.cpp
+#: scene/main/node.cpp
msgid "Name"
msgstr "Vardas"
#: core/project_settings.cpp editor/editor_help.cpp
-#: modules/visual_script/visual_script_nodes.cpp
+#: modules/visual_script/visual_script_nodes.cpp platform/uwp/export/export.cpp
+#: platform/windows/export/export.cpp
#, fuzzy
msgid "Description"
msgstr "Aprašymas:"
@@ -627,7 +633,7 @@ msgid "Custom User Dir Name"
msgstr ""
#: core/project_settings.cpp editor/animation_track_editor.cpp
-#: editor/editor_audio_buses.cpp servers/audio_server.cpp
+#: editor/editor_audio_buses.cpp main/main.cpp servers/audio_server.cpp
msgid "Audio"
msgstr ""
@@ -785,10 +791,13 @@ msgstr "Filtrai..."
msgid "Sharpen Intensity"
msgstr ""
-#: core/project_settings.cpp editor/editor_node.cpp editor/editor_settings.cpp
-#: editor/plugins/script_editor_plugin.cpp editor/project_export.cpp
-#: main/main.cpp modules/gdscript/gdscript.cpp
-#: modules/visual_script/visual_script.cpp scene/3d/room_manager.cpp
+#: core/project_settings.cpp editor/editor_export.cpp editor/editor_node.cpp
+#: editor/editor_settings.cpp editor/plugins/script_editor_plugin.cpp
+#: editor/project_export.cpp main/main.cpp modules/gdscript/gdscript.cpp
+#: modules/visual_script/visual_script.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp scene/3d/room_manager.cpp
#: scene/main/scene_tree.cpp scene/resources/shape_2d.cpp
#: servers/visual_server.cpp
msgid "Debug"
@@ -1016,6 +1025,7 @@ msgid "Subsurface Scattering"
msgstr ""
#: drivers/gles3/rasterizer_scene_gles3.cpp
+#: editor/import/resource_importer_texture.cpp
#: editor/plugins/spatial_editor_plugin.cpp modules/gltf/gltf_node.cpp
#: modules/gridmap/grid_map.cpp scene/2d/cpu_particles_2d.cpp
#: scene/2d/node_2d.cpp scene/2d/parallax_layer.cpp scene/2d/polygon_2d.cpp
@@ -1320,6 +1330,7 @@ msgid "Editors"
msgstr "Atidaryti 3D Editorių"
#: editor/animation_track_editor.cpp editor/editor_settings.cpp
+#: editor/import/resource_importer_scene.cpp
#: editor/plugins/animation_player_editor_plugin.cpp editor/scene_tree_dock.cpp
#: scene/2d/animated_sprite.cpp scene/2d/cpu_particles_2d.cpp
#: scene/2d/sprite.cpp scene/3d/cpu_particles.cpp scene/3d/sprite_3d.cpp
@@ -1547,14 +1558,14 @@ msgstr "Animacija"
msgid "Seconds"
msgstr ""
-#: editor/animation_track_editor.cpp
+#: editor/animation_track_editor.cpp editor/import/resource_importer_scene.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp main/main.cpp
#: scene/resources/texture.cpp
msgid "FPS"
msgstr ""
#: editor/animation_track_editor.cpp editor/editor_plugin_settings.cpp
-#: editor/editor_resource_picker.cpp
+#: editor/editor_resource_picker.cpp editor/import/resource_importer_wav.cpp
#: editor/plugins/polygon_2d_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
@@ -2522,7 +2533,9 @@ msgid "Remove Autoload"
msgstr ""
#: editor/editor_autoload_settings.cpp editor/editor_plugin_settings.cpp
-#: modules/gdscript/gdscript.cpp scene/2d/polygon_2d.cpp scene/3d/area.cpp
+#: modules/gdscript/gdscript.cpp platform/android/export/export_plugin.cpp
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#: scene/2d/polygon_2d.cpp scene/3d/area.cpp scene/3d/physics_joint.cpp
#: scene/3d/reflection_probe.cpp scene/main/canvas_layer.cpp
#: scene/resources/material.cpp servers/visual_server.cpp
msgid "Enable"
@@ -2675,6 +2688,58 @@ msgstr ""
#: editor/editor_export.cpp platform/android/export/export_plugin.cpp
#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Custom Template"
+msgstr "Redaguoti Filtrus"
+
+#: editor/editor_export.cpp editor/project_export.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp
+msgid "Release"
+msgstr ""
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Binary Format"
+msgstr "Animacija: Pakeisti TransformacijÄ…"
+
+#: editor/editor_export.cpp
+msgid "64 Bits"
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Embed PCK"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Texture Format"
+msgstr "TimeScale Nodas"
+
+#: editor/editor_export.cpp
+msgid "BPTC"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "S3TC"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "ETC"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "ETC2"
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "No BPTC Fallbacks"
+msgstr ""
+
+#: editor/editor_export.cpp platform/android/export/export_plugin.cpp
+#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
msgid "Custom debug template not found."
msgstr ""
@@ -2862,6 +2927,7 @@ msgid "Make Current"
msgstr "(Esama)"
#: editor/editor_feature_profile.cpp editor/editor_node.cpp
+#: editor/import/resource_importer_scene.cpp
#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
msgid "Import"
msgstr ""
@@ -2995,8 +3061,11 @@ msgstr "SÄ—kmÄ—!"
msgid "Display Mode"
msgstr "Importuoti iš Nodo:"
-#: editor/editor_file_dialog.cpp main/main.cpp modules/csg/csg_shape.cpp
-#: modules/visual_script/visual_script_nodes.cpp
+#: editor/editor_file_dialog.cpp
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+#: editor/import/resource_importer_wav.cpp main/main.cpp
+#: modules/csg/csg_shape.cpp modules/visual_script/visual_script_nodes.cpp
#: modules/visual_script/visual_script_yield_nodes.cpp scene/2d/light_2d.cpp
#: scene/2d/physics_body_2d.cpp scene/2d/tile_map.cpp
#: scene/3d/baked_lightmap.cpp scene/3d/light.cpp scene/3d/physics_body.cpp
@@ -3135,7 +3204,9 @@ msgstr ""
msgid "Reimport Missing Imported Files"
msgstr ""
-#: editor/editor_help.cpp
+#: editor/editor_help.cpp scene/2d/camera_2d.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/resources/dynamic_font.cpp
+#: scene/resources/style_box.cpp
msgid "Top"
msgstr ""
@@ -3187,6 +3258,7 @@ msgid "Fonts"
msgstr ""
#: editor/editor_help.cpp editor/plugins/theme_editor_plugin.cpp
+#: platform/iphone/export/export.cpp
msgid "Icons"
msgstr ""
@@ -3352,7 +3424,9 @@ msgstr ""
msgid "Pin value [Disabled because '%s' is editor-only]"
msgstr ""
-#: editor/editor_inspector.cpp editor/scene_tree_dock.cpp
+#: editor/editor_inspector.cpp
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+#: editor/scene_tree_dock.cpp
#: modules/visual_script/visual_script_func_nodes.cpp
#: modules/visual_script/visual_script_nodes.cpp
#: modules/visual_script/visual_script_property_selector.cpp
@@ -3670,6 +3744,14 @@ msgid "Quick Open Script..."
msgstr ""
#: editor/editor_node.cpp
+msgid "Save & Reload"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Save changes to '%s' before reloading?"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "Save & Close"
msgstr ""
@@ -3781,6 +3863,10 @@ msgid "Open Project Manager?"
msgstr ""
#: editor/editor_node.cpp
+msgid "Save changes to the following scene(s) before reloading?"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "Save & Quit"
msgstr ""
@@ -4029,8 +4115,8 @@ msgstr "Sukurti NaujÄ…"
#: editor/editor_node.cpp
#, fuzzy
-msgid "Translate Properties"
-msgstr "Animacija"
+msgid "Localize Settings"
+msgstr "Importuoti Animacijas..."
#: editor/editor_node.cpp
#, fuzzy
@@ -4047,8 +4133,8 @@ msgstr ""
#: editor/editor_node.cpp
#, fuzzy
-msgid "Capitalize Properties"
-msgstr "Animacija"
+msgid "Default Property Name Style"
+msgstr "Atnaujinti"
#: editor/editor_node.cpp
msgid "Default Float Step"
@@ -4621,7 +4707,9 @@ msgstr "Įdiegti Priedai:"
msgid "Update"
msgstr "Atnaujinti"
-#: editor/editor_plugin_settings.cpp
+#: editor/editor_plugin_settings.cpp platform/android/export/export_plugin.cpp
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp
#, fuzzy
msgid "Version"
msgstr "Versija:"
@@ -5608,7 +5696,7 @@ msgstr ""
msgid "Rect Custom Position"
msgstr "Keisti Poligono SkalÄ™"
-#: editor/editor_settings.cpp
+#: editor/editor_settings.cpp platform/android/export/export_plugin.cpp
msgid "Screen"
msgstr ""
@@ -5633,6 +5721,19 @@ msgid "Editor SSL Certificates"
msgstr ""
#: editor/editor_settings.cpp
+msgid "HTTP Proxy"
+msgstr ""
+
+#: editor/editor_settings.cpp
+msgid "Host"
+msgstr ""
+
+#: editor/editor_settings.cpp editor/fileserver/editor_file_server.cpp
+#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp
+msgid "Port"
+msgstr ""
+
+#: editor/editor_settings.cpp
msgid "Project Manager"
msgstr ""
@@ -5672,7 +5773,8 @@ msgstr ""
msgid "String Color"
msgstr ""
-#: editor/editor_settings.cpp
+#: editor/editor_settings.cpp platform/javascript/export/export.cpp
+#: platform/uwp/export/export.cpp
#, fuzzy
msgid "Background Color"
msgstr "Netinkamas šrifto dydis."
@@ -5841,22 +5943,6 @@ msgid "Starting the download..."
msgstr ""
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "HTTP Proxy"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Host"
-msgstr ""
-
-#: editor/export_template_manager.cpp editor/fileserver/editor_file_server.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp main/main.cpp
-#: modules/mono/mono_gd/gd_mono.cpp
-msgid "Port"
-msgstr ""
-
-#: editor/export_template_manager.cpp
#, fuzzy
msgid "Error requesting URL:"
msgstr "Duplikuoti"
@@ -6111,6 +6197,7 @@ msgstr ""
#: editor/fileserver/editor_file_server.cpp
#: editor/plugins/version_control_editor_plugin.cpp
+#: platform/uwp/export/export.cpp platform/windows/export/export.cpp
msgid "Password"
msgstr ""
@@ -6495,6 +6582,112 @@ msgstr ""
msgid "Use Ambient"
msgstr ""
+#: editor/import/resource_importer_bitmask.cpp
+#, fuzzy
+msgid "Create From"
+msgstr "PradÄ—ti ProfiliavimÄ…"
+
+#: editor/import/resource_importer_bitmask.cpp
+#: servers/audio/effects/audio_effect_compressor.cpp
+msgid "Threshold"
+msgstr ""
+
+#: editor/import/resource_importer_csv_translation.cpp
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_scene.cpp
+#: editor/import/resource_importer_texture.cpp
+#: editor/import/resource_importer_wav.cpp scene/3d/gi_probe.cpp
+msgid "Compress"
+msgstr ""
+
+#: editor/import/resource_importer_csv_translation.cpp
+msgid "Delimiter"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+msgid "No BPTC If RGB"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/sprite_3d.cpp
+#: scene/resources/material.cpp scene/resources/particles_material.cpp
+#: scene/resources/texture.cpp
+msgid "Flags"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/animation/tween.cpp
+#: scene/resources/texture.cpp
+msgid "Repeat"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/2d/light_2d.cpp
+#: scene/gui/control.cpp scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Filter"
+msgstr "Filtrai..."
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Mipmaps"
+msgstr "Signalai"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+msgid "Anisotropic"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+msgid "sRGB"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+msgid "Slices"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
+#: scene/resources/style_box.cpp
+#, fuzzy
+msgid "Horizontal"
+msgstr "Prijunkite prie Nodo:"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
+#: scene/resources/style_box.cpp
+msgid "Vertical"
+msgstr ""
+
+#: editor/import/resource_importer_obj.cpp
+#, fuzzy
+msgid "Generate Tangents"
+msgstr "Sukurti"
+
+#: editor/import/resource_importer_obj.cpp
+#, fuzzy
+msgid "Scale Mesh"
+msgstr "TimeScale Nodas"
+
+#: editor/import/resource_importer_obj.cpp
+msgid "Offset Mesh"
+msgstr ""
+
+#: editor/import/resource_importer_obj.cpp
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Octahedral Compression"
+msgstr "Animacijos Nodas"
+
+#: editor/import/resource_importer_obj.cpp
+msgid "Optimize Mesh Flags"
+msgstr ""
+
#: editor/import/resource_importer_scene.cpp
msgid "Import as Single Scene"
msgstr ""
@@ -6535,6 +6728,150 @@ msgstr ""
msgid "Import as Multiple Scenes+Materials"
msgstr ""
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Nodes"
+msgstr "Transition Nodas"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Root Type"
+msgstr "Animacijos Nodas"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Root Name"
+msgstr "Panaikinti"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Root Scale"
+msgstr "SkalÄ—:"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Custom Script"
+msgstr "Transition Nodas"
+
+#: editor/import/resource_importer_scene.cpp scene/resources/texture.cpp
+msgid "Storage"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Use Legacy Names"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+msgid "Materials"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Location"
+msgstr "Animacija"
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Keep On Reimport"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+msgid "Meshes"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Ensure Tangents"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Light Baking"
+msgstr "Aprašymas:"
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Lightmap Texel Size"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+msgid "Skins"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Use Named Skins"
+msgstr "Signalai"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "External Files"
+msgstr "Redaguoti Filtrus"
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Store In Subdir"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Filter Script"
+msgstr "Filtrai..."
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Keep Custom Tracks"
+msgstr "Animacija: Pakeisti TransformacijÄ…"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Optimizer"
+msgstr "Optimizuoti"
+
+#: editor/import/resource_importer_scene.cpp main/main.cpp
+#: modules/mono/mono_gd/gd_mono.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp scene/2d/camera_2d.cpp scene/2d/light_2d.cpp
+#: scene/2d/navigation_polygon.cpp scene/2d/ray_cast_2d.cpp scene/2d/sprite.cpp
+#: scene/2d/y_sort.cpp scene/3d/audio_stream_player_3d.cpp
+#: scene/3d/baked_lightmap.cpp scene/3d/interpolated_camera.cpp
+#: scene/3d/light.cpp scene/3d/navigation_mesh_instance.cpp
+#: scene/3d/physics_joint.cpp scene/3d/ray_cast.cpp scene/3d/sprite_3d.cpp
+#: scene/gui/graph_edit.cpp scene/gui/rich_text_label.cpp
+#: scene/resources/curve.cpp scene/resources/environment.cpp
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Enabled"
+msgstr "Įgalinti"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Max Linear Error"
+msgstr "Įvyko klaida kraunant šriftą."
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Max Angular Error"
+msgstr "Įvyko klaida kraunant šriftą."
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Max Angle"
+msgstr "Reikšmė:"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Remove Unused Tracks"
+msgstr "Animacija: panaikinti įrašą"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Clips"
+msgstr "Animacijų įrašai:"
+
+#: editor/import/resource_importer_scene.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/particles_2d.cpp scene/3d/area.cpp scene/3d/cpu_particles.cpp
+#: scene/3d/particles.cpp scene/resources/environment.cpp
+#, fuzzy
+msgid "Amount"
+msgstr "Kiekis:"
+
#: editor/import/resource_importer_scene.cpp
#: editor/plugins/mesh_library_editor_plugin.cpp
msgid "Import Scene"
@@ -6576,12 +6913,145 @@ msgstr ""
msgid "Saving..."
msgstr ""
+#: editor/import/resource_importer_texture.cpp scene/resources/texture.cpp
+msgid "Lossy Quality"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "HDR Mode"
+msgstr "TimeScale Nodas"
+
+#: editor/import/resource_importer_texture.cpp
+msgid "BPTC LDR"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/mesh_instance_2d.cpp scene/2d/multimesh_instance_2d.cpp
+#: scene/2d/particles_2d.cpp scene/2d/sprite.cpp scene/resources/style_box.cpp
+msgid "Normal Map"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Process"
+msgstr "Importuoti iš Nodo:"
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Fix Alpha Border"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Premult Alpha"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Hdr As Srgb"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Invert Color"
+msgstr "Filtrai..."
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Normal Map Invert Y"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
+#: scene/audio/audio_stream_player.cpp scene/gui/video_player.cpp
+msgid "Stream"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Size Limit"
+msgstr "Importuoti iš Nodo:"
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Detect 3D"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "SVG"
+msgstr ""
+
#: editor/import/resource_importer_texture.cpp
msgid ""
"Warning, no suitable PC VRAM compression enabled in Project Settings. This "
"texture will not display correctly on PC."
msgstr ""
+#: editor/import/resource_importer_texture_atlas.cpp
+#, fuzzy
+msgid "Atlas File"
+msgstr "Atsiųsti"
+
+#: editor/import/resource_importer_texture_atlas.cpp
+#, fuzzy
+msgid "Import Mode"
+msgstr "Importuoti iš Nodo:"
+
+#: editor/import/resource_importer_texture_atlas.cpp
+#, fuzzy
+msgid "Crop To Region"
+msgstr "Animacijos Nodas"
+
+#: editor/import/resource_importer_texture_atlas.cpp
+msgid "Trim Alpha Border From Region"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp scene/2d/physics_body_2d.cpp
+msgid "Force"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+msgid "8 Bit"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp main/main.cpp
+#: modules/mono/editor/csharp_project.cpp modules/mono/mono_gd/gd_mono.cpp
+msgid "Mono"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+#, fuzzy
+msgid "Max Rate"
+msgstr "Mix Nodas"
+
+#: editor/import/resource_importer_wav.cpp
+#, fuzzy
+msgid "Max Rate Hz"
+msgstr "Mix Nodas"
+
+#: editor/import/resource_importer_wav.cpp
+msgid "Trim"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+#, fuzzy
+msgid "Normalize"
+msgstr "Panaikinti pasirinkimÄ…"
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+#, fuzzy
+msgid "Loop Mode"
+msgstr "TimeScale Nodas"
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+#, fuzzy
+msgid "Loop Begin"
+msgstr "TimeScale Nodas"
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+#, fuzzy
+msgid "Loop End"
+msgstr "TimeScale Nodas"
+
#: editor/import_defaults_editor.cpp
#, fuzzy
msgid "Select Importer"
@@ -6654,6 +7124,28 @@ msgstr ""
#: editor/inspector_dock.cpp
#, fuzzy
+msgid "Property Name Style"
+msgstr "YpatybÄ—s seklys"
+
+#: editor/inspector_dock.cpp scene/gui/color_picker.cpp
+msgid "Raw"
+msgstr ""
+
+#: editor/inspector_dock.cpp
+#, fuzzy
+msgid "Capitalized"
+msgstr "Animacija"
+
+#: editor/inspector_dock.cpp
+msgid "Localized"
+msgstr ""
+
+#: editor/inspector_dock.cpp
+msgid "Localization not available for current language."
+msgstr ""
+
+#: editor/inspector_dock.cpp
+#, fuzzy
msgid "Copy Properties"
msgstr "Animacija"
@@ -7724,18 +8216,24 @@ msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
#, fuzzy
+msgctxt "Pagination"
msgid "First"
msgstr "pirmas"
-#: editor/plugins/asset_library_editor_plugin.cpp scene/gui/control.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgctxt "Pagination"
msgid "Previous"
-msgstr ""
+msgstr "Pasirinkite Nodus, kuriuos norite importuoti"
-#: editor/plugins/asset_library_editor_plugin.cpp scene/gui/control.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgctxt "Pagination"
msgid "Next"
-msgstr ""
+msgstr "Mix Nodas"
#: editor/plugins/asset_library_editor_plugin.cpp
+msgctxt "Pagination"
msgid "Last"
msgstr ""
@@ -7979,19 +8477,19 @@ msgid ""
"margins."
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Top Left"
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Top Right"
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Bottom Right"
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Bottom Left"
msgstr ""
@@ -8712,6 +9210,19 @@ msgstr ""
msgid "Gradient Edited"
msgstr ""
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+msgid "Swap GradientTexture2D Fill Points"
+msgstr ""
+
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+msgid "Swap Gradient Fill Points"
+msgstr ""
+
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+#, fuzzy
+msgid "Toggle Grid Snap"
+msgstr "Koreguoti įrašą į įjungtas"
+
#: editor/plugins/item_list_editor_plugin.cpp
msgid "Item %d"
msgstr ""
@@ -8931,9 +9442,9 @@ msgid ""
"%s"
msgstr ""
-#: editor/plugins/mesh_library_editor_plugin.cpp modules/gridmap/grid_map.cpp
+#: editor/plugins/mesh_library_editor_plugin.cpp
#, fuzzy
-msgid "Mesh Library"
+msgid "MeshLibrary"
msgstr "Atidaryti Resursų Biblioteką"
#: editor/plugins/mesh_library_editor_plugin.cpp
@@ -9941,8 +10452,8 @@ msgstr "Prijunkite prie Nodo:"
msgid "Source"
msgstr ""
-#: editor/plugins/script_text_editor.cpp scene/3d/interpolated_camera.cpp
-#: scene/animation/skeleton_ik.cpp
+#: editor/plugins/script_text_editor.cpp platform/uwp/export/export.cpp
+#: scene/3d/interpolated_camera.cpp scene/animation/skeleton_ik.cpp
msgid "Target"
msgstr ""
@@ -10924,7 +11435,9 @@ msgstr ""
#: editor/plugins/sprite_frames_editor_plugin.cpp
#: modules/gltf/gltf_animation.cpp modules/minimp3/audio_stream_mp3.cpp
-#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp scene/2d/path_2d.cpp
+#: modules/minimp3/resource_importer_mp3.cpp
+#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp
+#: modules/stb_vorbis/resource_importer_ogg_vorbis.cpp scene/2d/path_2d.cpp
#: scene/3d/path.cpp scene/resources/animation.cpp scene/resources/material.cpp
msgid "Loop"
msgstr ""
@@ -11835,8 +12348,9 @@ msgstr ""
msgid "Priority"
msgstr "Importuoti iš Nodo:"
-#: editor/plugins/tile_set_editor_plugin.cpp main/main.cpp scene/gui/button.cpp
-#: scene/gui/item_list.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp main/main.cpp
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#: scene/gui/button.cpp scene/gui/item_list.cpp
msgid "Icon"
msgstr ""
@@ -13179,10 +13693,6 @@ msgid ""
msgstr ""
#: editor/project_export.cpp
-msgid "Release"
-msgstr ""
-
-#: editor/project_export.cpp
msgid "Exporting All"
msgstr ""
@@ -14989,6 +15499,7 @@ msgid "Change AudioStreamPlayer3D Emission Angle"
msgstr ""
#: editor/spatial_editor_gizmos.cpp modules/gltf/gltf_node.cpp
+#: platform/osx/export/export.cpp
msgid "Camera"
msgstr ""
@@ -15259,7 +15770,8 @@ msgstr ""
msgid "Use Nvidia Rect Flicker Workaround"
msgstr ""
-#: main/main.cpp platform/uwp/os_uwp.cpp
+#: main/main.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp platform/uwp/os_uwp.cpp
msgid "Display"
msgstr ""
@@ -15314,19 +15826,6 @@ msgstr ""
msgid "Allowed"
msgstr ""
-#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp scene/2d/camera_2d.cpp
-#: scene/2d/light_2d.cpp scene/2d/navigation_polygon.cpp
-#: scene/2d/ray_cast_2d.cpp scene/2d/sprite.cpp scene/2d/y_sort.cpp
-#: scene/3d/audio_stream_player_3d.cpp scene/3d/baked_lightmap.cpp
-#: scene/3d/interpolated_camera.cpp scene/3d/light.cpp
-#: scene/3d/navigation_mesh_instance.cpp scene/3d/ray_cast.cpp
-#: scene/3d/sprite_3d.cpp scene/gui/graph_edit.cpp
-#: scene/gui/rich_text_label.cpp scene/resources/curve.cpp
-#: scene/resources/environment.cpp
-#, fuzzy
-msgid "Enabled"
-msgstr "Įgalinti"
-
#: main/main.cpp
msgid "Intended Usage"
msgstr ""
@@ -15356,13 +15855,14 @@ msgstr ""
msgid "Handheld"
msgstr ""
-#: main/main.cpp
+#: main/main.cpp platform/javascript/export/export.cpp
+#: platform/uwp/export/export.cpp
#, fuzzy
msgid "Orientation"
msgstr "Animacija"
#: main/main.cpp scene/gui/scroll_container.cpp scene/gui/text_edit.cpp
-#: scene/main/scene_tree.cpp
+#: scene/main/scene_tree.cpp scene/register_scene_types.cpp
#, fuzzy
msgid "Common"
msgstr "BendruomenÄ—"
@@ -15404,7 +15904,7 @@ msgstr ""
#: main/main.cpp
#, fuzzy
-msgid "Frame Delay (msec)"
+msgid "Frame Delay Msec"
msgstr "Kadro TrukmÄ— (sekundÄ—mis)"
#: main/main.cpp
@@ -15523,11 +16023,6 @@ msgstr ""
msgid "Tooltip Position Offset"
msgstr ""
-#: main/main.cpp modules/mono/editor/csharp_project.cpp
-#: modules/mono/mono_gd/gd_mono.cpp
-msgid "Mono"
-msgstr ""
-
#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp
msgid "Debugger Agent"
msgstr ""
@@ -16075,7 +16570,7 @@ msgstr ""
msgid "Intensity"
msgstr ""
-#: modules/gltf/gltf_light.cpp scene/2d/light_2d.cpp
+#: modules/gltf/gltf_light.cpp scene/2d/light_2d.cpp scene/3d/light.cpp
msgid "Range"
msgstr ""
@@ -16213,11 +16708,6 @@ msgstr ""
msgid "Use Named Skin Binds"
msgstr ""
-#: modules/gltf/gltf_state.cpp scene/3d/physics_joint.cpp
-#, fuzzy
-msgid "Nodes"
-msgstr "Transition Nodas"
-
#: modules/gltf/gltf_state.cpp
msgid "Buffer Views"
msgstr ""
@@ -16227,14 +16717,6 @@ msgid "Accessors"
msgstr ""
#: modules/gltf/gltf_state.cpp
-msgid "Meshes"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp
-msgid "Materials"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp
#, fuzzy
msgid "Scene Name"
msgstr "Kelias iki Scenos:"
@@ -16251,15 +16733,11 @@ msgstr "Prijunkite prie Nodo:"
msgid "Textures"
msgstr "Panaikinti pasirinkimÄ…"
-#: modules/gltf/gltf_state.cpp
+#: modules/gltf/gltf_state.cpp platform/uwp/export/export.cpp
msgid "Images"
msgstr ""
#: modules/gltf/gltf_state.cpp
-msgid "Skins"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp
msgid "Cameras"
msgstr ""
@@ -16292,10 +16770,15 @@ msgstr ""
#: modules/gridmap/grid_map.cpp
#, fuzzy
+msgid "Mesh Library"
+msgstr "Atidaryti Resursų Biblioteką"
+
+#: modules/gridmap/grid_map.cpp
+#, fuzzy
msgid "Physics Material"
msgstr "Fizikos Kadro %"
-#: modules/gridmap/grid_map.cpp
+#: modules/gridmap/grid_map.cpp scene/3d/visual_instance.cpp
msgid "Use In Baked Light"
msgstr ""
@@ -16326,6 +16809,7 @@ msgstr "Ištrinti Efektą"
#: modules/gridmap/grid_map.cpp scene/2d/collision_object_2d.cpp
#: scene/2d/tile_map.cpp scene/3d/collision_object.cpp scene/3d/soft_body.cpp
+#: scene/resources/material.cpp
msgid "Mask"
msgstr ""
@@ -16513,7 +16997,9 @@ msgid "Ultra Quality Ray Count"
msgstr ""
#: modules/minimp3/audio_stream_mp3.cpp
+#: modules/minimp3/resource_importer_mp3.cpp
#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp
+#: modules/stb_vorbis/resource_importer_ogg_vorbis.cpp
#, fuzzy
msgid "Loop Offset"
msgstr "TimeScale Nodas"
@@ -17592,6 +18078,180 @@ msgid "The package must have at least one '.' separator."
msgstr ""
#: platform/android/export/export_plugin.cpp
+msgid "Use Custom Build"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Export Format"
+msgstr "Importuoti iš Nodo:"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Keystore"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Debug User"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+msgid "Debug Password"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Release User"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Release Password"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "One Click Deploy"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Clear Previous Install"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp scene/resources/shader.cpp
+msgid "Code"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Min SDK"
+msgstr "Atidaryti Skriptų Editorių"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Target SDK"
+msgstr "TimeScale Nodas"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+msgid "Package"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Unique Name"
+msgstr "Panaikinti"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Signed"
+msgstr "Signalai"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Classify As Game"
+msgstr "Priedai"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Retain Data On Uninstall"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Exclude From Recents"
+msgstr "Ištrinti Efektą"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Graphics"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "OpenGL Debug"
+msgstr "Atidaryti"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "XR Features"
+msgstr "Panaikinti pasirinkimÄ…"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "XR Mode"
+msgstr "TimeScale Nodas"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Hand Tracking"
+msgstr "YpatybÄ—s seklys"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Hand Tracking Frequency"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Passthrough"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Immersive Mode"
+msgstr "Importuoti iš Nodo:"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Support Small"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Support Normal"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Support Large"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Support Xlarge"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "User Data Backup"
+msgstr "Atidaryti"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Allow"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Command Line"
+msgstr "BendruomenÄ—"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Extra Args"
+msgstr "Papildomi Iškvietimo Argumentai:"
+
+#: platform/android/export/export_plugin.cpp
+msgid "APK Expansion"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Salt"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Public Key"
+msgstr "Kopijuoti raktažodį (-ius)"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Permissions"
+msgstr "Versija:"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Custom Permissions"
+msgstr "Keisti Poligono SkalÄ™"
+
+#: platform/android/export/export_plugin.cpp
msgid "Select device from the list"
msgstr ""
@@ -17883,6 +18543,176 @@ msgid "The character '%s' is not allowed in Identifier."
msgstr ""
#: platform/iphone/export/export.cpp
+msgid "App Store Team ID"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Provisioning Profile UUID Debug"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Code Sign Identity Debug"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Export Method Debug"
+msgstr "Importuoti iš Nodo:"
+
+#: platform/iphone/export/export.cpp
+msgid "Provisioning Profile UUID Release"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Code Sign Identity Release"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Export Method Release"
+msgstr "Importuoti iš Nodo:"
+
+#: platform/iphone/export/export.cpp
+msgid "Targeted Device Family"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Info"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Identifier"
+msgstr "Netinkamas šrifto dydis."
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Signature"
+msgstr "Signalai"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Short Version"
+msgstr "Versija:"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/windows/export/export.cpp
+msgid "Copyright"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Capabilities"
+msgstr "Animacija"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Access Wi-Fi"
+msgstr "SÄ—kmÄ—!"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Push Notifications"
+msgstr "Konstanta"
+
+#: platform/iphone/export/export.cpp scene/3d/baked_lightmap.cpp
+#, fuzzy
+msgid "User Data"
+msgstr "Atidaryti"
+
+#: platform/iphone/export/export.cpp
+msgid "Accessible From Files App"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Accessible From Itunes Sharing"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Privacy"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Camera Usage Description"
+msgstr "Aprašymas:"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Microphone Usage Description"
+msgstr "Aprašymas:"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Photolibrary Usage Description"
+msgstr "Aprašymas:"
+
+#: platform/iphone/export/export.cpp
+msgid "iPhone 120 X 120"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPhone 180 X 180"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 76 X 76"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 152 X 152"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 167 X 167"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "App Store 1024 X 1024"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Spotlight 40 X 40"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Spotlight 80 X 80"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Storyboard"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Use Launch Screen Storyboard"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Image Scale Mode"
+msgstr "TimeScale Nodas"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Custom Image @2x"
+msgstr "Transition Nodas"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Custom Image @3x"
+msgstr "Transition Nodas"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Use Custom BG Color"
+msgstr "Transition Nodas"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Custom BG Color"
+msgstr "Transition Nodas"
+
+#: platform/iphone/export/export.cpp
msgid "App Store Team ID not specified - cannot configure the project."
msgstr ""
@@ -17921,6 +18751,80 @@ msgid "Could not read file:"
msgstr "PradÄ—ti ProfiliavimÄ…"
#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Variant"
+msgstr "Versija:"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Export Type"
+msgstr "Importuoti iš Nodo:"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "VRAM Texture Compression"
+msgstr "Animacijos Nodas"
+
+#: platform/javascript/export/export.cpp
+msgid "For Desktop"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "For Mobile"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Html"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Export Icon"
+msgstr "Importuoti iš Nodo:"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Custom Html Shell"
+msgstr "Transition Nodas"
+
+#: platform/javascript/export/export.cpp
+msgid "Head Include"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Canvas Resize Policy"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Focus Canvas On Start"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Experimental Virtual Keyboard"
+msgstr "Filtrai..."
+
+#: platform/javascript/export/export.cpp
+msgid "Progressive Web App"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Offline Page"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 144 X 144"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 180 X 180"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 512 X 512"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
msgid "Could not read HTML shell:"
msgstr ""
@@ -18030,6 +18934,198 @@ msgid "Unknown object type."
msgstr ""
#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "App Category"
+msgstr "Kategorija:"
+
+#: platform/osx/export/export.cpp
+msgid "High Res"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Location Usage Description"
+msgstr "Aprašymas:"
+
+#: platform/osx/export/export.cpp
+msgid "Address Book Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Calendar Usage Description"
+msgstr "Aprašymas:"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Photos Library Usage Description"
+msgstr "Aprašymas:"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Desktop Folder Usage Description"
+msgstr "Aprašymas:"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Documents Folder Usage Description"
+msgstr "Aprašymas:"
+
+#: platform/osx/export/export.cpp
+msgid "Downloads Folder Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Network Volumes Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Removable Volumes Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#, fuzzy
+msgid "Codesign"
+msgstr "Transition Nodas"
+
+#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
+#: platform/windows/export/export.cpp
+msgid "Identity"
+msgstr ""
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#, fuzzy
+msgid "Timestamp"
+msgstr "TrukmÄ—:"
+
+#: platform/osx/export/export.cpp
+msgid "Hardened Runtime"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Replace Existing Signature"
+msgstr "Pakeisti Visus"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Entitlements"
+msgstr "Atidaryti Skriptų Editorių"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Custom File"
+msgstr "Transition Nodas"
+
+#: platform/osx/export/export.cpp
+msgid "Allow JIT Code Execution"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Allow Unsigned Executable Memory"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Allow Dyld Environment Variables"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Disable Library Validation"
+msgstr "Išjungta"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Audio Input"
+msgstr "Redaguoti Filtrus"
+
+#: platform/osx/export/export.cpp
+msgid "Address Book"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Calendars"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Photos Library"
+msgstr "Atidaryti Resursų Biblioteką"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Apple Events"
+msgstr "Atstatyti PriartinimÄ…"
+
+#: platform/osx/export/export.cpp
+msgid "Debugging"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "App Sandbox"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Network Server"
+msgstr "Importuoti iš Nodo:"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Network Client"
+msgstr "Importuoti iš Nodo:"
+
+#: platform/osx/export/export.cpp
+msgid "Device Usb"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Device Bluetooth"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Files Downloads"
+msgstr "Atsiųsti"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Files Pictures"
+msgstr "Filtrai..."
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Files Music"
+msgstr "Redaguoti Filtrus"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Files Movies"
+msgstr "Filtrai..."
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#, fuzzy
+msgid "Custom Options"
+msgstr "Aprašymas:"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Notarization"
+msgstr "Animacijos Nodas"
+
+#: platform/osx/export/export.cpp
+msgid "Apple ID Name"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Apple ID Password"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Apple Team ID"
+msgstr ""
+
+#: platform/osx/export/export.cpp
msgid ""
"Note: The notarization process generally takes less than an hour. When the "
"process is completed, you'll receive an email."
@@ -18221,6 +19317,131 @@ msgid "Force Builtin Codesign"
msgstr ""
#: platform/uwp/export/export.cpp
+msgid "Architecture"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Display Name"
+msgstr "Importuoti iš Nodo:"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Short Name"
+msgstr "Animacijos Nodas"
+
+#: platform/uwp/export/export.cpp
+msgid "Publisher"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Publisher Display Name"
+msgstr "Netinkamas šrifto dydis."
+
+#: platform/uwp/export/export.cpp
+msgid "Product Guid"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Publisher Guid"
+msgstr "Animacija: Pakeisti TransformacijÄ…"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Signing"
+msgstr "Signalai"
+
+#: platform/uwp/export/export.cpp
+msgid "Certificate"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Algorithm"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Major"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Minor"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Build"
+msgstr "TimeScale Nodas"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Revision"
+msgstr "Versija:"
+
+#: platform/uwp/export/export.cpp
+msgid "Landscape"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Portrait"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Landscape Flipped"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Portrait Flipped"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Store Logo"
+msgstr "TimeScale Nodas"
+
+#: platform/uwp/export/export.cpp
+msgid "Square 44 X 44 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 71 X 71 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 150 X 150 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 310 X 310 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Wide 310 X 150 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Splash Screen"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Tiles"
+msgstr "Redaguoti Filtrus"
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Square 150 X 150"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Wide 310 X 150"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Square 310 X 310"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
#, fuzzy
msgid "Invalid package short name."
msgstr "Netinkamas šrifto dydis."
@@ -18291,11 +19512,48 @@ msgid "Debug Certificate"
msgstr ""
#: platform/uwp/export/export.cpp
-msgid "Debug Password"
+msgid "Debug Algorithm"
msgstr ""
-#: platform/uwp/export/export.cpp
-msgid "Debug Algorithm"
+#: platform/windows/export/export.cpp
+msgid "Identity Type"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Timestamp Server URL"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Digest Algorithm"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "File Version"
+msgstr "Versija:"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Product Version"
+msgstr "Netinkamas šrifto dydis."
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Company Name"
+msgstr "Panaikinti"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Product Name"
+msgstr "Panaikinti pasirinkimÄ…"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "File Description"
+msgstr "Aprašymas:"
+
+#: platform/windows/export/export.cpp
+msgid "Trademarks"
msgstr ""
#: platform/windows/export/export.cpp
@@ -18369,12 +19627,14 @@ msgstr ""
msgid "Centered"
msgstr "Ištrinti Efektą"
-#: scene/2d/animated_sprite.cpp scene/2d/camera_2d.cpp scene/2d/light_2d.cpp
+#: scene/2d/animated_sprite.cpp scene/2d/camera_2d.cpp
+#: scene/2d/cpu_particles_2d.cpp scene/2d/light_2d.cpp
#: scene/2d/parallax_background.cpp scene/2d/parallax_layer.cpp
#: scene/2d/path_2d.cpp scene/2d/polygon_2d.cpp scene/2d/sprite.cpp
-#: scene/3d/path.cpp scene/3d/physics_body.cpp scene/3d/sprite_3d.cpp
-#: scene/gui/graph_node.cpp scene/gui/rich_text_effect.cpp
-#: scene/main/canvas_layer.cpp scene/resources/material.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/path.cpp scene/3d/physics_body.cpp
+#: scene/3d/sprite_3d.cpp scene/gui/graph_node.cpp
+#: scene/gui/rich_text_effect.cpp scene/main/canvas_layer.cpp
+#: scene/resources/material.cpp scene/resources/particles_material.cpp
#: scene/resources/style_box.cpp
msgid "Offset"
msgstr ""
@@ -18444,11 +19704,6 @@ msgstr "Animacija: Pridėti Takelį"
msgid "Override"
msgstr "Fizikos Kadro %"
-#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
-#: scene/audio/audio_stream_player.cpp scene/gui/video_player.cpp
-msgid "Stream"
-msgstr ""
-
#: scene/2d/audio_stream_player_2d.cpp scene/audio/audio_stream_player.cpp
#: scene/gui/video_player.cpp servers/audio/effects/audio_effect_amplify.cpp
msgid "Volume dB"
@@ -18473,12 +19728,12 @@ msgid "Stream Paused"
msgstr ""
#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
-#: scene/3d/reflection_probe.cpp scene/3d/visual_instance.cpp
-#: scene/resources/material.cpp
+#: scene/3d/light.cpp scene/3d/reflection_probe.cpp
+#: scene/3d/visual_instance.cpp scene/resources/material.cpp
msgid "Max Distance"
msgstr ""
-#: scene/2d/audio_stream_player_2d.cpp
+#: scene/2d/audio_stream_player_2d.cpp scene/3d/light.cpp
#, fuzzy
msgid "Attenuation"
msgstr "Animacija"
@@ -18532,6 +19787,23 @@ msgstr "Importuoti iš Nodo:"
msgid "Limit"
msgstr ""
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/style_box.cpp
+#, fuzzy
+msgid "Left"
+msgstr "TrukmÄ—:"
+
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/style_box.cpp
+msgid "Right"
+msgstr ""
+
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/dynamic_font.cpp scene/resources/style_box.cpp
+#, fuzzy
+msgid "Bottom"
+msgstr "Sukurti"
+
#: scene/2d/camera_2d.cpp
msgid "Smoothed"
msgstr ""
@@ -18737,13 +20009,6 @@ msgstr ""
msgid "Emitting"
msgstr "Importuoti Animacijas..."
-#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp scene/3d/area.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
-#: scene/resources/environment.cpp
-#, fuzzy
-msgid "Amount"
-msgstr "Kiekis:"
-
#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp
#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
msgid "Lifetime"
@@ -18804,18 +20069,13 @@ msgstr ""
#: scene/2d/mesh_instance_2d.cpp scene/2d/multimesh_instance_2d.cpp
#: scene/2d/particles_2d.cpp scene/2d/polygon_2d.cpp scene/2d/sprite.cpp
#: scene/3d/sprite_3d.cpp scene/gui/nine_patch_rect.cpp
-#: scene/gui/texture_rect.cpp scene/resources/sky.cpp
-#: scene/resources/style_box.cpp scene/resources/visual_shader_nodes.cpp
+#: scene/gui/texture_rect.cpp scene/resources/material.cpp
+#: scene/resources/sky.cpp scene/resources/style_box.cpp
+#: scene/resources/visual_shader_nodes.cpp
#, fuzzy
msgid "Texture"
msgstr "Panaikinti pasirinkimÄ…"
-#: scene/2d/cpu_particles_2d.cpp scene/2d/mesh_instance_2d.cpp
-#: scene/2d/multimesh_instance_2d.cpp scene/2d/particles_2d.cpp
-#: scene/2d/sprite.cpp scene/resources/style_box.cpp
-msgid "Normal Map"
-msgstr ""
-
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
msgid "Emission Shape"
@@ -18835,9 +20095,8 @@ msgid "Normals"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/3d/sprite_3d.cpp scene/resources/material.cpp
-#: scene/resources/particles_material.cpp scene/resources/texture.cpp
-msgid "Flags"
+#: scene/resources/particles_material.cpp
+msgid "Align Y"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
@@ -18858,6 +20117,11 @@ msgid "Initial Velocity"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Velocity Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp servers/physics_2d_server.cpp
#: servers/physics_server.cpp
msgid "Angular Velocity"
@@ -18865,6 +20129,12 @@ msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Velocity Curve"
+msgstr "(Esama)"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
msgid "Orbit Velocity"
msgstr ""
@@ -18876,6 +20146,23 @@ msgstr "Linijinis"
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Accel"
+msgstr "SÄ—kmÄ—!"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Accel Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Accel Curve"
+msgstr "SkalÄ—:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
msgid "Radial Accel"
msgstr ""
@@ -18885,19 +20172,54 @@ msgid "Tangential Accel"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/2d/joints_2d.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/vehicle_body.cpp
-#: scene/resources/particles_material.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/physics_joint.cpp
+#: scene/3d/vehicle_body.cpp scene/resources/particles_material.cpp
#: servers/audio/effects/audio_effect_reverb.cpp
msgid "Damping"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+msgid "Damping Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Damping Curve"
+msgstr "SkalÄ—:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp scene/3d/light.cpp
+#: scene/resources/particles_material.cpp
msgid "Angle"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+msgid "Angle Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Angle Curve"
+msgstr "SkalÄ—:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#, fuzzy
+msgid "Scale Amount"
+msgstr "Kiekis:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+msgid "Scale Amount Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+msgid "Scale Amount Curve"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
msgid "Color Ramp"
msgstr ""
@@ -18912,6 +20234,47 @@ msgstr ""
msgid "Hue Variation"
msgstr "Versija:"
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Variation"
+msgstr "Versija:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Variation Random"
+msgstr "Versija:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Variation Curve"
+msgstr "Versija:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Speed Random"
+msgstr "SkalÄ—:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Speed Curve"
+msgstr "(Esama)"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Offset Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Offset Curve"
+msgstr "SkalÄ—:"
+
#: scene/2d/joints_2d.cpp
msgid "Node A and Node B must be PhysicsBody2Ds"
msgstr ""
@@ -18943,6 +20306,7 @@ msgid "Node B"
msgstr "Transition Nodas"
#: scene/2d/joints_2d.cpp scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp
+#: scene/3d/light.cpp scene/3d/physics_joint.cpp
#: scene/resources/environment.cpp
msgid "Bias"
msgstr ""
@@ -18952,7 +20316,7 @@ msgstr ""
msgid "Disable Collision"
msgstr "Išjungta"
-#: scene/2d/joints_2d.cpp
+#: scene/2d/joints_2d.cpp scene/3d/physics_joint.cpp
msgid "Softness"
msgstr ""
@@ -18969,7 +20333,7 @@ msgstr ""
msgid "Rest Length"
msgstr ""
-#: scene/2d/joints_2d.cpp scene/3d/vehicle_body.cpp
+#: scene/2d/joints_2d.cpp scene/3d/physics_joint.cpp scene/3d/vehicle_body.cpp
msgid "Stiffness"
msgstr ""
@@ -18989,7 +20353,7 @@ msgid "Texture Scale"
msgstr ""
#: scene/2d/light_2d.cpp scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp
-#: scene/resources/environment.cpp scene/resources/sky.cpp
+#: scene/3d/light.cpp scene/resources/environment.cpp scene/resources/sky.cpp
msgid "Energy"
msgstr ""
@@ -19026,12 +20390,6 @@ msgstr ""
msgid "Gradient Length"
msgstr "Redaguoti Filtrus"
-#: scene/2d/light_2d.cpp scene/gui/control.cpp
-#: scene/resources/navigation_mesh.cpp
-#, fuzzy
-msgid "Filter"
-msgstr "Filtrai..."
-
#: scene/2d/light_2d.cpp
#, fuzzy
msgid "Filter Smooth"
@@ -19425,10 +20783,6 @@ msgid "Applied Forces"
msgstr ""
#: scene/2d/physics_body_2d.cpp
-msgid "Force"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp
msgid "Torque"
msgstr ""
@@ -19442,7 +20796,7 @@ msgid "Sync To Physics"
msgstr "Fizikos Kadro %"
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-msgid "Moving platform"
+msgid "Moving Platform"
msgstr ""
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
@@ -19451,7 +20805,7 @@ msgstr ""
#: scene/2d/physics_body_2d.cpp scene/2d/touch_screen_button.cpp
#: scene/3d/physics_body.cpp scene/gui/texture_button.cpp
-#: scene/resources/line_shape_2d.cpp
+#: scene/resources/line_shape_2d.cpp scene/resources/material.cpp
msgid "Normal"
msgstr ""
@@ -19675,6 +21029,33 @@ msgid ""
"as parent."
msgstr ""
+#: scene/2d/visibility_notifier_2d.cpp scene/3d/visibility_notifier.cpp
+#, fuzzy
+msgid "Pause Animations"
+msgstr "Animacija"
+
+#: scene/2d/visibility_notifier_2d.cpp scene/3d/visibility_notifier.cpp
+msgid "Freeze Bodies"
+msgstr ""
+
+#: scene/2d/visibility_notifier_2d.cpp
+msgid "Pause Particles"
+msgstr ""
+
+#: scene/2d/visibility_notifier_2d.cpp
+#, fuzzy
+msgid "Pause Animated Sprites"
+msgstr "Keisti animacijos žingsnį"
+
+#: scene/2d/visibility_notifier_2d.cpp
+#, fuzzy
+msgid "Process Parent"
+msgstr "Redaguoti Filtrus"
+
+#: scene/2d/visibility_notifier_2d.cpp
+msgid "Physics Process Parent"
+msgstr ""
+
#: scene/3d/area.cpp
msgid "Reverb Bus"
msgstr ""
@@ -19768,6 +21149,7 @@ msgid "Attenuation Filter"
msgstr ""
#: scene/3d/audio_stream_player_3d.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
#: servers/audio/effects/audio_effect_filter.cpp
msgid "Cutoff Hz"
msgstr ""
@@ -19811,11 +21193,6 @@ msgid "Octree"
msgstr ""
#: scene/3d/baked_lightmap.cpp
-#, fuzzy
-msgid "User Data"
-msgstr "Atidaryti"
-
-#: scene/3d/baked_lightmap.cpp
msgid "Finding meshes and lights"
msgstr ""
@@ -20060,6 +21437,16 @@ msgid "Ring Axis"
msgstr ""
#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Rotate Y"
+msgstr "Konstanta"
+
+#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Disable Z"
+msgstr "Išjungta"
+
+#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
msgid "Flatness"
msgstr ""
@@ -20097,15 +21484,11 @@ msgstr ""
msgid "Dynamic Range"
msgstr ""
-#: scene/3d/gi_probe.cpp
+#: scene/3d/gi_probe.cpp scene/3d/light.cpp
msgid "Normal Bias"
msgstr ""
#: scene/3d/gi_probe.cpp
-msgid "Compress"
-msgstr ""
-
-#: scene/3d/gi_probe.cpp
msgid "Plotting Meshes"
msgstr ""
@@ -20131,15 +21514,28 @@ msgid "Subdiv"
msgstr ""
#: scene/3d/light.cpp
+msgid "Indirect Energy"
+msgstr ""
+
+#: scene/3d/light.cpp
msgid "Negative"
msgstr ""
#: scene/3d/light.cpp
#, fuzzy
+msgid "Specular"
+msgstr "TimeScale Nodas"
+
+#: scene/3d/light.cpp
+#, fuzzy
msgid "Bake Mode"
msgstr "TimeScale Nodas"
#: scene/3d/light.cpp
+msgid "Contact"
+msgstr ""
+
+#: scene/3d/light.cpp
#, fuzzy
msgid "Reverse Cull Face"
msgstr "Panaikinti"
@@ -20150,11 +21546,28 @@ msgid "Directional Shadow"
msgstr "Aprašymas:"
#: scene/3d/light.cpp
+msgid "Split 1"
+msgstr ""
+
+#: scene/3d/light.cpp
+msgid "Split 2"
+msgstr ""
+
+#: scene/3d/light.cpp
+msgid "Split 3"
+msgstr ""
+
+#: scene/3d/light.cpp
msgid "Blend Splits"
msgstr ""
#: scene/3d/light.cpp
#, fuzzy
+msgid "Bias Split Scale"
+msgstr "Atidaryti Skriptų Editorių"
+
+#: scene/3d/light.cpp
+#, fuzzy
msgid "Depth Range"
msgstr "SkalÄ—:"
@@ -20180,6 +21593,11 @@ msgstr ""
msgid "Spot"
msgstr ""
+#: scene/3d/light.cpp
+#, fuzzy
+msgid "Angle Attenuation"
+msgstr "Animacija"
+
#: scene/3d/mesh_instance.cpp
msgid "Software Skinning"
msgstr ""
@@ -20299,6 +21717,63 @@ msgid "Axis Lock"
msgstr ""
#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Linear X"
+msgstr "Linijinis"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Linear Y"
+msgstr "Linijinis"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Linear Z"
+msgstr "Linijinis"
+
+#: scene/3d/physics_body.cpp
+msgid "Angular X"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Angular Y"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Angular Z"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Motion X"
+msgstr "Animacija"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Motion Y"
+msgstr "Animacija"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Motion Z"
+msgstr "Animacija"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Move Lock X"
+msgstr "Mix Nodas"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Move Lock Y"
+msgstr "Mix Nodas"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Move Lock Z"
+msgstr "Mix Nodas"
+
+#: scene/3d/physics_body.cpp
msgid "Body Offset"
msgstr ""
@@ -20332,6 +21807,14 @@ msgid "Exclude Nodes"
msgstr "Ištrinti Efektą"
#: scene/3d/physics_joint.cpp
+msgid "Params"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Impulse Clamp"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit"
msgstr ""
@@ -20343,6 +21826,55 @@ msgstr ""
msgid "Lower"
msgstr ""
+#: scene/3d/physics_joint.cpp scene/3d/vehicle_body.cpp
+#, fuzzy
+msgid "Relaxation"
+msgstr "Versija:"
+
+#: scene/3d/physics_joint.cpp
+msgid "Motor"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Target Velocity"
+msgstr "Linijinis"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Max Impulse"
+msgstr "Reikšmė:"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit"
+msgstr "Linijinis"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Upper Distance"
+msgstr "Diegti"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Lower Distance"
+msgstr "Diegti"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Restitution"
+msgstr "Aprašymas:"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motion"
+msgstr "Linijinis"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Ortho"
+msgstr "Linijinis"
+
#: scene/3d/physics_joint.cpp
msgid "Upper Angle"
msgstr ""
@@ -20352,6 +21884,15 @@ msgid "Lower Angle"
msgstr ""
#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Angular Motion"
+msgstr "Animacija"
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Ortho"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
msgid "Swing Span"
msgstr ""
@@ -20360,17 +21901,98 @@ msgid "Twist Span"
msgstr ""
#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit X"
+msgstr "Linijinis"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motor X"
+msgstr "Linijinis"
+
+#: scene/3d/physics_joint.cpp
+msgid "Force Limit"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Spring X"
+msgstr "Linijinis"
+
+#: scene/3d/physics_joint.cpp
+msgid "Equilibrium Point"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit X"
msgstr ""
#: scene/3d/physics_joint.cpp
+msgid "Erp"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Motor X"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Spring X"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit Y"
+msgstr "Linijinis"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motor Y"
+msgstr "Linijinis"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Spring Y"
+msgstr "Linijinis"
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit Y"
msgstr ""
#: scene/3d/physics_joint.cpp
+msgid "Angular Motor Y"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Spring Y"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit Z"
+msgstr "Linijinis"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motor Z"
+msgstr "Linijinis"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Spring Z"
+msgstr "Linijinis"
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit Z"
msgstr ""
+#: scene/3d/physics_joint.cpp
+msgid "Angular Motor Z"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Spring Z"
+msgstr ""
+
#: scene/3d/portal.cpp
msgid "The RoomManager should not be a child or grandchild of a Portal."
msgstr ""
@@ -20483,7 +22105,7 @@ msgstr ""
msgid "Use Default Simplify"
msgstr ""
-#: scene/3d/room.cpp
+#: scene/3d/room.cpp scene/3d/room_manager.cpp
msgid "Room Simplify"
msgstr ""
@@ -20522,6 +22144,13 @@ msgstr ""
msgid "Main"
msgstr ""
+#: scene/3d/room_manager.cpp scene/animation/animation_player.cpp
+#: scene/animation/animation_tree.cpp scene/animation/animation_tree_player.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+#, fuzzy
+msgid "Active"
+msgstr "Animacija"
+
#: scene/3d/room_manager.cpp
msgid "Roomlist"
msgstr ""
@@ -20544,6 +22173,49 @@ msgid "Gameplay"
msgstr ""
#: scene/3d/room_manager.cpp
+msgid "Gameplay Monitor"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "Use Secondary PVS"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Merge Meshes"
+msgstr "Filtrai..."
+
+#: scene/3d/room_manager.cpp
+msgid "Show Margins"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "Debug Sprawl"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "Overlap Warning Threshold"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Preview Camera"
+msgstr "Atnaujinti"
+
+#: scene/3d/room_manager.cpp
+msgid "Portal Depth Limit"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Default Portal Margin"
+msgstr "Atnaujinti"
+
+#: scene/3d/room_manager.cpp
+msgid "Roaming Expansion Margin"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
msgid ""
"RoomList path is invalid.\n"
"Please check the RoomList branch has been assigned in the RoomManager."
@@ -20665,6 +22337,19 @@ msgstr ""
msgid "Billboard"
msgstr ""
+#: scene/3d/sprite_3d.cpp scene/resources/material.cpp
+#, fuzzy
+msgid "Transparent"
+msgstr "Transition Nodas"
+
+#: scene/3d/sprite_3d.cpp
+msgid "Shaded"
+msgstr ""
+
+#: scene/3d/sprite_3d.cpp
+msgid "Double Sided"
+msgstr ""
+
#: scene/3d/sprite_3d.cpp
msgid "Alpha Cut"
msgstr ""
@@ -20732,11 +22417,6 @@ msgstr ""
msgid "Max Force"
msgstr "Įvyko klaida kraunant šriftą."
-#: scene/3d/vehicle_body.cpp
-#, fuzzy
-msgid "Relaxation"
-msgstr "Versija:"
-
#: scene/3d/visibility_notifier.cpp
msgid "AABB"
msgstr ""
@@ -20869,7 +22549,7 @@ msgstr ""
#: scene/animation/animation_blend_tree.cpp
#, fuzzy
-msgid "autorestart_"
+msgid "Auto Restart"
msgstr "PradÄ—ti!"
#: scene/animation/animation_blend_tree.cpp
@@ -20952,13 +22632,6 @@ msgstr "Aprašymas:"
msgid "Default Blend Time"
msgstr "Redaguoti Filtrus"
-#: scene/animation/animation_player.cpp scene/animation/animation_tree.cpp
-#: scene/animation/animation_tree_player.cpp
-#: servers/audio/effects/audio_effect_delay.cpp
-#, fuzzy
-msgid "Active"
-msgstr "Animacija"
-
#: scene/animation/animation_player.cpp
msgid "Method Call Mode"
msgstr ""
@@ -21081,10 +22754,6 @@ msgstr "TimeScale Nodas"
msgid "Max Iterations"
msgstr "(Esama)"
-#: scene/animation/tween.cpp scene/resources/texture.cpp
-msgid "Repeat"
-msgstr ""
-
#: scene/animation/tween.cpp
msgid "Playback Process Mode"
msgstr ""
@@ -21112,19 +22781,6 @@ msgstr "TimeScale Nodas"
msgid "Alignment"
msgstr ""
-#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
-#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
-#: scene/resources/style_box.cpp
-#, fuzzy
-msgid "Horizontal"
-msgstr "Prijunkite prie Nodo:"
-
-#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
-#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
-#: scene/resources/style_box.cpp
-msgid "Vertical"
-msgstr ""
-
#: scene/gui/base_button.cpp
msgid "Shortcut In Tooltip"
msgstr ""
@@ -21217,10 +22873,6 @@ msgid "HSV"
msgstr ""
#: scene/gui/color_picker.cpp
-msgid "Raw"
-msgstr ""
-
-#: scene/gui/color_picker.cpp
msgid "Switch between hexadecimal and code values."
msgstr ""
@@ -21277,6 +22929,30 @@ msgid "Focus"
msgstr ""
#: scene/gui/control.cpp
+msgid "Neighbour Left"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Neighbour Top"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Neighbour Right"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Neighbour Bottom"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Next"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Previous"
+msgstr ""
+
+#: scene/gui/control.cpp
msgid "Mouse"
msgstr ""
@@ -21311,7 +22987,7 @@ msgid "Dialog"
msgstr ""
#: scene/gui/dialogs.cpp
-msgid "Hide On Ok"
+msgid "Hide On OK"
msgstr ""
#: scene/gui/dialogs.cpp scene/gui/label.cpp
@@ -21405,7 +23081,7 @@ msgid "Timers"
msgstr "TrukmÄ—:"
#: scene/gui/item_list.cpp scene/gui/popup_menu.cpp scene/gui/tree.cpp
-msgid "Incremental Search Max Interval (msec)"
+msgid "Incremental Search Max Interval Msec"
msgstr ""
#: scene/gui/item_list.cpp scene/gui/tree.cpp
@@ -21942,6 +23618,26 @@ msgstr "Ištrinti Efektą"
msgid "Nine Patch Stretch"
msgstr "Interpoliacijos režimas"
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Left"
+msgstr "TimeScale Nodas"
+
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Top"
+msgstr "TimeScale Nodas"
+
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Right"
+msgstr "TimeScale Nodas"
+
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Bottom"
+msgstr "TimeScale Nodas"
+
#: scene/gui/tree.cpp
msgid "Custom Minimum Height"
msgstr ""
@@ -21978,7 +23674,7 @@ msgid "Paused"
msgstr ""
#: scene/gui/video_player.cpp
-msgid "Buffering (msec)"
+msgid "Buffering Msec"
msgstr ""
#: scene/gui/video_player.cpp
@@ -22306,6 +24002,22 @@ msgid "Shadow Atlas"
msgstr ""
#: scene/main/viewport.cpp
+msgid "Quad 0"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 1"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 2"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 3"
+msgstr ""
+
+#: scene/main/viewport.cpp
#, fuzzy
msgid "Canvas Transform"
msgstr "Animacija: Pakeisti TransformacijÄ…"
@@ -22320,6 +24032,11 @@ msgid "Tooltip Delay (sec)"
msgstr ""
#: scene/register_scene_types.cpp
+#, fuzzy
+msgid "Swap OK Cancel"
+msgstr "Atšaukti"
+
+#: scene/register_scene_types.cpp
msgid "Use hiDPI"
msgstr ""
@@ -22334,21 +24051,6 @@ msgid "Custom Font"
msgstr "Transition Nodas"
#: scene/resources/audio_stream_sample.cpp
-#, fuzzy
-msgid "Loop Mode"
-msgstr "TimeScale Nodas"
-
-#: scene/resources/audio_stream_sample.cpp
-#, fuzzy
-msgid "Loop Begin"
-msgstr "TimeScale Nodas"
-
-#: scene/resources/audio_stream_sample.cpp
-#, fuzzy
-msgid "Loop End"
-msgstr "TimeScale Nodas"
-
-#: scene/resources/audio_stream_sample.cpp
#: servers/audio/effects/audio_stream_generator.cpp servers/audio_server.cpp
#, fuzzy
msgid "Mix Rate"
@@ -22404,6 +24106,15 @@ msgid "Extra Spacing"
msgstr "Aprašymas:"
#: scene/resources/dynamic_font.cpp
+msgid "Char"
+msgstr ""
+
+#: scene/resources/dynamic_font.cpp scene/resources/world.cpp
+#: scene/resources/world_2d.cpp
+msgid "Space"
+msgstr ""
+
+#: scene/resources/dynamic_font.cpp
msgid "Font"
msgstr ""
@@ -22624,6 +24335,43 @@ msgid "Glow"
msgstr ""
#: scene/resources/environment.cpp
+#, fuzzy
+msgid "Levels"
+msgstr "Kūrėjai"
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "1"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "2"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "3"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "4"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "5"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "6"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "7"
+msgstr ""
+
+#: scene/resources/environment.cpp
msgid "Bloom"
msgstr ""
@@ -22712,9 +24460,66 @@ msgid "Next Pass"
msgstr "Mix Nodas"
#: scene/resources/material.cpp
+msgid "Use Shadow To Opacity"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Unshaded"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Vertex Lighting"
+msgstr "Aprašymas:"
+
+#: scene/resources/material.cpp
+msgid "No Depth Test"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Use Point Size"
+msgstr "Atidaryti Skriptų Editorių"
+
+#: scene/resources/material.cpp
+msgid "World Triplanar"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Fixed Size"
+msgstr "Atidaryti Skriptų Editorių"
+
+#: scene/resources/material.cpp
+msgid "Albedo Tex Force sRGB"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Do Not Receive Shadows"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Disable Ambient Light"
+msgstr "Išjungta"
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Ensure Correct Normals"
+msgstr "Keisti Poligono SkalÄ™"
+
+#: scene/resources/material.cpp
msgid "Vertex Color"
msgstr ""
+#: scene/resources/material.cpp
+msgid "Use As Albedo"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Is sRGB"
+msgstr ""
+
#: scene/resources/material.cpp servers/visual_server.cpp
msgid "Parameters"
msgstr ""
@@ -22749,6 +24554,11 @@ msgid "Billboard Mode"
msgstr "TimeScale Nodas"
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Billboard Keep Scale"
+msgstr "TimeScale Nodas"
+
+#: scene/resources/material.cpp
msgid "Grow"
msgstr ""
@@ -22758,6 +24568,10 @@ msgid "Grow Amount"
msgstr "Kiekis:"
#: scene/resources/material.cpp
+msgid "Use Alpha Scissor"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Alpha Scissor Threshold"
msgstr ""
@@ -22788,10 +24602,20 @@ msgid "Metallic Specular"
msgstr ""
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Metallic Texture"
+msgstr "Panaikinti pasirinkimÄ…"
+
+#: scene/resources/material.cpp
msgid "Metallic Texture Channel"
msgstr ""
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Roughness Texture"
+msgstr "Panaikinti pasirinkimÄ…"
+
+#: scene/resources/material.cpp
msgid "Roughness Texture Channel"
msgstr ""
@@ -22808,6 +24632,15 @@ msgid "Emission Operator"
msgstr ""
#: scene/resources/material.cpp
+msgid "Emission On UV2"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Emission Texture"
+msgstr "Panaikinti pasirinkimÄ…"
+
+#: scene/resources/material.cpp
msgid "NormalMap"
msgstr ""
@@ -22821,6 +24654,11 @@ msgstr ""
#: scene/resources/material.cpp
#, fuzzy
+msgid "Rim Texture"
+msgstr "Panaikinti pasirinkimÄ…"
+
+#: scene/resources/material.cpp
+#, fuzzy
msgid "Clearcoat"
msgstr "Animacija: Pakeisti TransformacijÄ…"
@@ -22830,15 +24668,28 @@ msgid "Clearcoat Gloss"
msgstr "Animacija: Pakeisti TransformacijÄ…"
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Clearcoat Texture"
+msgstr "Redaguoti Filtrus"
+
+#: scene/resources/material.cpp
msgid "Anisotropy"
msgstr ""
#: scene/resources/material.cpp
+msgid "Anisotropy Flowmap"
+msgstr ""
+
+#: scene/resources/material.cpp
#, fuzzy
msgid "Ambient Occlusion"
msgstr "Priedai"
#: scene/resources/material.cpp
+msgid "On UV2"
+msgstr ""
+
+#: scene/resources/material.cpp
#, fuzzy
msgid "Texture Channel"
msgstr "TimeScale Nodas"
@@ -22876,6 +24727,11 @@ msgstr "Transition Nodas"
#: scene/resources/material.cpp
#, fuzzy
+msgid "Transmission Texture"
+msgstr "Transition Nodas"
+
+#: scene/resources/material.cpp
+#, fuzzy
msgid "Refraction"
msgstr "Versija:"
@@ -22892,6 +24748,10 @@ msgid "UV1"
msgstr ""
#: scene/resources/material.cpp
+msgid "Triplanar"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Triplanar Sharpness"
msgstr ""
@@ -23093,6 +24953,16 @@ msgstr "Redaguoti Filtrus"
msgid "Point Count"
msgstr "MÄ—gstamiausi:"
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Scale Random"
+msgstr "TimeScale Nodas"
+
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Scale Curve"
+msgstr "TimeScale Nodas"
+
#: scene/resources/physics_material.cpp
msgid "Rough"
msgstr ""
@@ -23150,10 +25020,6 @@ msgid "A"
msgstr ""
#: scene/resources/shader.cpp
-msgid "Code"
-msgstr ""
-
-#: scene/resources/shader.cpp
msgid "Custom Defines"
msgstr ""
@@ -23242,14 +25108,6 @@ msgid "Grow End"
msgstr ""
#: scene/resources/texture.cpp
-msgid "Storage"
-msgstr ""
-
-#: scene/resources/texture.cpp
-msgid "Lossy Quality"
-msgstr ""
-
-#: scene/resources/texture.cpp
#, fuzzy
msgid "Load Path"
msgstr "Takas"
@@ -23374,10 +25232,6 @@ msgstr "Netinkamas šrifto dydis."
msgid "Fallback Environment"
msgstr ""
-#: scene/resources/world.cpp scene/resources/world_2d.cpp
-msgid "Space"
-msgstr ""
-
#: scene/resources/world.cpp
#, fuzzy
msgid "Scenario"
@@ -23454,8 +25308,34 @@ msgstr ""
msgid "Wet"
msgstr ""
-#: servers/audio/effects/audio_effect_compressor.cpp
-msgid "Threshold"
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "Voice"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+msgid "Delay (ms)"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_phaser.cpp
+msgid "Rate Hz"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#, fuzzy
+msgid "Depth (ms)"
+msgstr "SkalÄ—:"
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+msgid "Level dB"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+#: servers/audio/effects/audio_effect_panner.cpp
+msgid "Pan"
msgstr ""
#: servers/audio/effects/audio_effect_compressor.cpp
@@ -23480,19 +25360,6 @@ msgid "Tap 1"
msgstr ""
#: servers/audio/effects/audio_effect_delay.cpp
-msgid "Delay (ms)"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_delay.cpp
-msgid "Level dB"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_delay.cpp
-#: servers/audio/effects/audio_effect_panner.cpp
-msgid "Pan"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_delay.cpp
msgid "Tap 2"
msgstr ""
@@ -23552,10 +25419,6 @@ msgstr ""
msgid "Range Max Hz"
msgstr ""
-#: servers/audio/effects/audio_effect_phaser.cpp
-msgid "Rate Hz"
-msgstr ""
-
#: servers/audio/effects/audio_effect_pitch_shift.cpp
msgid "Oversampling"
msgstr ""
@@ -23571,7 +25434,7 @@ msgid "Predelay"
msgstr ""
#: servers/audio/effects/audio_effect_reverb.cpp
-msgid "(msec)"
+msgid "Msec"
msgstr ""
#: servers/audio/effects/audio_effect_reverb.cpp
diff --git a/editor/translations/lv.po b/editor/translations/lv.po
index ca1840bbd7..560b54f397 100644
--- a/editor/translations/lv.po
+++ b/editor/translations/lv.po
@@ -26,7 +26,7 @@ msgstr ""
"19) ? 0 : ((n % 10 == 1 && n % 100 != 11) ? 1 : 2);\n"
"X-Generator: Weblate 4.11-dev\n"
-#: core/bind/core_bind.cpp
+#: core/bind/core_bind.cpp main/main.cpp
msgid "Tablet Driver"
msgstr ""
@@ -128,8 +128,8 @@ msgstr "Doka pozīcija"
#: core/bind/core_bind.cpp editor/editor_settings.cpp main/main.cpp
#: modules/gdscript/gdscript_editor.cpp modules/gridmap/grid_map.cpp
#: modules/mono/csharp_script.cpp modules/visual_script/visual_script_nodes.cpp
-#: scene/2d/tile_map.cpp scene/3d/camera.cpp scene/gui/control.cpp
-#: scene/gui/graph_edit.cpp scene/main/viewport.cpp
+#: scene/2d/tile_map.cpp scene/3d/camera.cpp scene/3d/light.cpp
+#: scene/gui/control.cpp scene/gui/graph_edit.cpp scene/main/viewport.cpp
#: scene/resources/dynamic_font.cpp scene/resources/navigation_mesh.cpp
#: scene/resources/primitive_meshes.cpp scene/resources/sky.cpp
#: scene/resources/style_box.cpp scene/resources/texture.cpp
@@ -231,8 +231,7 @@ msgid "Data"
msgstr ""
#: core/io/file_access_network.cpp core/register_core_types.cpp
-#: editor/editor_settings.cpp editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp main/main.cpp
+#: editor/editor_settings.cpp main/main.cpp
#: modules/gdscript/language_server/gdscript_language_server.cpp
msgid "Network"
msgstr ""
@@ -507,9 +506,10 @@ msgstr "Sagatave"
msgid "Relative"
msgstr ""
-#: core/os/input_event.cpp scene/2d/camera_2d.cpp
-#: scene/3d/interpolated_camera.cpp scene/animation/animation_player.cpp
-#: scene/resources/environment.cpp
+#: core/os/input_event.cpp scene/2d/camera_2d.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/interpolated_camera.cpp
+#: scene/animation/animation_player.cpp scene/resources/environment.cpp
+#: scene/resources/particles_material.cpp
#, fuzzy
msgid "Speed"
msgstr "Mērogs"
@@ -558,8 +558,9 @@ msgstr "Pielietot izmaiņas"
msgid "Pitch"
msgstr "Mērogs"
-#: core/os/input_event.cpp scene/2d/physics_body_2d.cpp
-#: scene/3d/physics_body.cpp
+#: core/os/input_event.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/physics_body_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/3d/physics_body.cpp scene/resources/particles_material.cpp
msgid "Velocity"
msgstr ""
@@ -577,6 +578,8 @@ msgid "Controller Value"
msgstr ""
#: core/project_settings.cpp editor/editor_node.cpp main/main.cpp
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/windows/export/export.cpp
#, fuzzy
msgid "Application"
msgstr "Darbība"
@@ -594,13 +597,16 @@ msgstr "Projekta iestatjumi..."
#: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp
#: editor/editor_plugin_settings.cpp editor/editor_profiler.cpp
#: editor/project_manager.cpp editor/settings_config_dialog.cpp
-#: modules/gdnative/nativescript/nativescript.cpp scene/2d/area_2d.cpp
-#: scene/3d/area.cpp scene/main/node.cpp
+#: modules/gdnative/nativescript/nativescript.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/osx/export/export.cpp scene/2d/area_2d.cpp scene/3d/area.cpp
+#: scene/main/node.cpp
msgid "Name"
msgstr "Nosaukums"
#: core/project_settings.cpp editor/editor_help.cpp
-#: modules/visual_script/visual_script_nodes.cpp
+#: modules/visual_script/visual_script_nodes.cpp platform/uwp/export/export.cpp
+#: platform/windows/export/export.cpp
msgid "Description"
msgstr "Apraksts"
@@ -638,7 +644,7 @@ msgid "Custom User Dir Name"
msgstr ""
#: core/project_settings.cpp editor/animation_track_editor.cpp
-#: editor/editor_audio_buses.cpp servers/audio_server.cpp
+#: editor/editor_audio_buses.cpp main/main.cpp servers/audio_server.cpp
msgid "Audio"
msgstr "Audio"
@@ -800,10 +806,13 @@ msgstr "Filtrs:"
msgid "Sharpen Intensity"
msgstr ""
-#: core/project_settings.cpp editor/editor_node.cpp editor/editor_settings.cpp
-#: editor/plugins/script_editor_plugin.cpp editor/project_export.cpp
-#: main/main.cpp modules/gdscript/gdscript.cpp
-#: modules/visual_script/visual_script.cpp scene/3d/room_manager.cpp
+#: core/project_settings.cpp editor/editor_export.cpp editor/editor_node.cpp
+#: editor/editor_settings.cpp editor/plugins/script_editor_plugin.cpp
+#: editor/project_export.cpp main/main.cpp modules/gdscript/gdscript.cpp
+#: modules/visual_script/visual_script.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp scene/3d/room_manager.cpp
#: scene/main/scene_tree.cpp scene/resources/shape_2d.cpp
#: servers/visual_server.cpp
msgid "Debug"
@@ -1034,6 +1043,7 @@ msgid "Subsurface Scattering"
msgstr ""
#: drivers/gles3/rasterizer_scene_gles3.cpp
+#: editor/import/resource_importer_texture.cpp
#: editor/plugins/spatial_editor_plugin.cpp modules/gltf/gltf_node.cpp
#: modules/gridmap/grid_map.cpp scene/2d/cpu_particles_2d.cpp
#: scene/2d/node_2d.cpp scene/2d/parallax_layer.cpp scene/2d/polygon_2d.cpp
@@ -1330,6 +1340,7 @@ msgid "Editors"
msgstr "Redaktors"
#: editor/animation_track_editor.cpp editor/editor_settings.cpp
+#: editor/import/resource_importer_scene.cpp
#: editor/plugins/animation_player_editor_plugin.cpp editor/scene_tree_dock.cpp
#: scene/2d/animated_sprite.cpp scene/2d/cpu_particles_2d.cpp
#: scene/2d/sprite.cpp scene/3d/cpu_particles.cpp scene/3d/sprite_3d.cpp
@@ -1562,14 +1573,14 @@ msgstr "AnimÄcijas soļa vÄ“rtÄ«ba."
msgid "Seconds"
msgstr "Sekundes"
-#: editor/animation_track_editor.cpp
+#: editor/animation_track_editor.cpp editor/import/resource_importer_scene.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp main/main.cpp
#: scene/resources/texture.cpp
msgid "FPS"
msgstr "FPS"
#: editor/animation_track_editor.cpp editor/editor_plugin_settings.cpp
-#: editor/editor_resource_picker.cpp
+#: editor/editor_resource_picker.cpp editor/import/resource_importer_wav.cpp
#: editor/plugins/polygon_2d_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
@@ -2535,7 +2546,9 @@ msgid "Remove Autoload"
msgstr "IzdzÄ“st Auto-ielÄdi"
#: editor/editor_autoload_settings.cpp editor/editor_plugin_settings.cpp
-#: modules/gdscript/gdscript.cpp scene/2d/polygon_2d.cpp scene/3d/area.cpp
+#: modules/gdscript/gdscript.cpp platform/android/export/export_plugin.cpp
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#: scene/2d/polygon_2d.cpp scene/3d/area.cpp scene/3d/physics_joint.cpp
#: scene/3d/reflection_probe.cpp scene/main/canvas_layer.cpp
#: scene/resources/material.cpp servers/visual_server.cpp
msgid "Enable"
@@ -2704,6 +2717,58 @@ msgstr ""
#: editor/editor_export.cpp platform/android/export/export_plugin.cpp
#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Custom Template"
+msgstr "Redaktora motīvs"
+
+#: editor/editor_export.cpp editor/project_export.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp
+msgid "Release"
+msgstr ""
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Binary Format"
+msgstr "NederÄ«gs bÄzes ceļš."
+
+#: editor/editor_export.cpp
+msgid "64 Bits"
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Embed PCK"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Texture Format"
+msgstr "LineÄla Režīms"
+
+#: editor/editor_export.cpp
+msgid "BPTC"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "S3TC"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "ETC"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "ETC2"
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "No BPTC Fallbacks"
+msgstr ""
+
+#: editor/editor_export.cpp platform/android/export/export_plugin.cpp
+#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
msgid "Custom debug template not found."
msgstr "PielÄgots atkļūdoÅ¡anas Å¡ablons nav atrasts."
@@ -2882,6 +2947,7 @@ msgid "Make Current"
msgstr "Aktualizēt"
#: editor/editor_feature_profile.cpp editor/editor_node.cpp
+#: editor/import/resource_importer_scene.cpp
#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
msgid "Import"
msgstr "Importēt"
@@ -3010,8 +3076,11 @@ msgstr "Mērķis sasniegts!"
msgid "Display Mode"
msgstr "Atskaņošanas Režīms:"
-#: editor/editor_file_dialog.cpp main/main.cpp modules/csg/csg_shape.cpp
-#: modules/visual_script/visual_script_nodes.cpp
+#: editor/editor_file_dialog.cpp
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+#: editor/import/resource_importer_wav.cpp main/main.cpp
+#: modules/csg/csg_shape.cpp modules/visual_script/visual_script_nodes.cpp
#: modules/visual_script/visual_script_yield_nodes.cpp scene/2d/light_2d.cpp
#: scene/2d/physics_body_2d.cpp scene/2d/tile_map.cpp
#: scene/3d/baked_lightmap.cpp scene/3d/light.cpp scene/3d/physics_body.cpp
@@ -3150,7 +3219,9 @@ msgstr "(Re)Importē vienumus"
msgid "Reimport Missing Imported Files"
msgstr ""
-#: editor/editor_help.cpp
+#: editor/editor_help.cpp scene/2d/camera_2d.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/resources/dynamic_font.cpp
+#: scene/resources/style_box.cpp
msgid "Top"
msgstr "Virsotne"
@@ -3202,6 +3273,7 @@ msgid "Fonts"
msgstr "Fonti"
#: editor/editor_help.cpp editor/plugins/theme_editor_plugin.cpp
+#: platform/iphone/export/export.cpp
msgid "Icons"
msgstr "Ikonas"
@@ -3368,7 +3440,9 @@ msgstr ""
msgid "Pin value [Disabled because '%s' is editor-only]"
msgstr "Pin vērtība [Atspējota, jo \"%s\" ir paredzēts tikai redaktoram]"
-#: editor/editor_inspector.cpp editor/scene_tree_dock.cpp
+#: editor/editor_inspector.cpp
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+#: editor/scene_tree_dock.cpp
#: modules/visual_script/visual_script_func_nodes.cpp
#: modules/visual_script/visual_script_nodes.cpp
#: modules/visual_script/visual_script_property_selector.cpp
@@ -3707,6 +3781,16 @@ msgid "Quick Open Script..."
msgstr "Ätri atvÄ“rt skriptu..."
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Save & Reload"
+msgstr "SaglabÄt & pÄrstartÄ“t"
+
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Save changes to '%s' before reloading?"
+msgstr "SaglabÄt izmaiņas '%s' pirms aizvÄ“rÅ¡anas ?"
+
+#: editor/editor_node.cpp
msgid "Save & Close"
msgstr "SaglabÄt & aizvÄ“rt"
@@ -3823,6 +3907,11 @@ msgid "Open Project Manager?"
msgstr "Atvērt projektu menedžeri ?"
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Save changes to the following scene(s) before reloading?"
+msgstr "SaglabÄt izmaiņas sekojoÅ¡ai ainai(-Äm) pirms izieÅ¡anas ?"
+
+#: editor/editor_node.cpp
msgid "Save & Quit"
msgstr "SaglabÄt & iziet"
@@ -4091,8 +4180,8 @@ msgstr "Atjaunot Kad Mainīts"
#: editor/editor_node.cpp
#, fuzzy
-msgid "Translate Properties"
-msgstr "Ielīmēt iestatījumus"
+msgid "Localize Settings"
+msgstr "LokalizÄcija"
#: editor/editor_node.cpp
#, fuzzy
@@ -4109,8 +4198,8 @@ msgstr "Inspektors"
#: editor/editor_node.cpp
#, fuzzy
-msgid "Capitalize Properties"
-msgstr "Ielīmēt iestatījumus"
+msgid "Default Property Name Style"
+msgstr "Projekta ceļš:"
#: editor/editor_node.cpp
msgid "Default Float Step"
@@ -4691,7 +4780,9 @@ msgstr "Instalētie spraudņi:"
msgid "Update"
msgstr "AtjauninÄt"
-#: editor/editor_plugin_settings.cpp
+#: editor/editor_plugin_settings.cpp platform/android/export/export_plugin.cpp
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp
msgid "Version"
msgstr "Versija"
@@ -5682,7 +5773,7 @@ msgstr "Pilns logs"
msgid "Rect Custom Position"
msgstr "Noņemt pielÄgotu daudzstÅ«ri"
-#: editor/editor_settings.cpp
+#: editor/editor_settings.cpp platform/android/export/export_plugin.cpp
msgid "Screen"
msgstr ""
@@ -5707,6 +5798,19 @@ msgid "Editor SSL Certificates"
msgstr ""
#: editor/editor_settings.cpp
+msgid "HTTP Proxy"
+msgstr ""
+
+#: editor/editor_settings.cpp
+msgid "Host"
+msgstr ""
+
+#: editor/editor_settings.cpp editor/fileserver/editor_file_server.cpp
+#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp
+msgid "Port"
+msgstr ""
+
+#: editor/editor_settings.cpp
msgid "Project Manager"
msgstr ""
@@ -5749,7 +5853,8 @@ msgstr ""
msgid "String Color"
msgstr "Faila saglabÄÅ¡ana:"
-#: editor/editor_settings.cpp
+#: editor/editor_settings.cpp platform/javascript/export/export.cpp
+#: platform/uwp/export/export.cpp
#, fuzzy
msgid "Background Color"
msgstr "NederÄ«ga fona krÄsa."
@@ -5923,22 +6028,6 @@ msgid "Starting the download..."
msgstr "SÄk lejuplÄdi..."
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "HTTP Proxy"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Host"
-msgstr ""
-
-#: editor/export_template_manager.cpp editor/fileserver/editor_file_server.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp main/main.cpp
-#: modules/mono/mono_gd/gd_mono.cpp
-msgid "Port"
-msgstr ""
-
-#: editor/export_template_manager.cpp
msgid "Error requesting URL:"
msgstr "Kļūda pieprasot URL:"
@@ -6182,6 +6271,7 @@ msgstr ""
#: editor/fileserver/editor_file_server.cpp
#: editor/plugins/version_control_editor_plugin.cpp
+#: platform/uwp/export/export.cpp platform/windows/export/export.cpp
msgid "Password"
msgstr ""
@@ -6545,6 +6635,114 @@ msgstr ""
msgid "Use Ambient"
msgstr ""
+#: editor/import/resource_importer_bitmask.cpp
+#, fuzzy
+msgid "Create From"
+msgstr "Izveidot mapi"
+
+#: editor/import/resource_importer_bitmask.cpp
+#: servers/audio/effects/audio_effect_compressor.cpp
+msgid "Threshold"
+msgstr ""
+
+#: editor/import/resource_importer_csv_translation.cpp
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_scene.cpp
+#: editor/import/resource_importer_texture.cpp
+#: editor/import/resource_importer_wav.cpp scene/3d/gi_probe.cpp
+#, fuzzy
+msgid "Compress"
+msgstr "Komponentes"
+
+#: editor/import/resource_importer_csv_translation.cpp
+msgid "Delimiter"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+msgid "No BPTC If RGB"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/sprite_3d.cpp
+#: scene/resources/material.cpp scene/resources/particles_material.cpp
+#: scene/resources/texture.cpp
+msgid "Flags"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/animation/tween.cpp
+#: scene/resources/texture.cpp
+msgid "Repeat"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/2d/light_2d.cpp
+#: scene/gui/control.cpp scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Filter"
+msgstr "Filtrs:"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Mipmaps"
+msgstr "SignÄli"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+msgid "Anisotropic"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+msgid "sRGB"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+msgid "Slices"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
+#: scene/resources/style_box.cpp
+#, fuzzy
+msgid "Horizontal"
+msgstr "Izveidot HorizontÄlu Vadotni"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
+#: scene/resources/style_box.cpp
+msgid "Vertical"
+msgstr ""
+
+#: editor/import/resource_importer_obj.cpp
+#, fuzzy
+msgid "Generate Tangents"
+msgstr "Ģenerēt Punktus"
+
+#: editor/import/resource_importer_obj.cpp
+#, fuzzy
+msgid "Scale Mesh"
+msgstr "Mēroga Režīms"
+
+#: editor/import/resource_importer_obj.cpp
+msgid "Offset Mesh"
+msgstr ""
+
+#: editor/import/resource_importer_obj.cpp
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Octahedral Compression"
+msgstr "Sadursme"
+
+#: editor/import/resource_importer_obj.cpp
+#, fuzzy
+msgid "Optimize Mesh Flags"
+msgstr "Izmērs: "
+
#: editor/import/resource_importer_scene.cpp
msgid "Import as Single Scene"
msgstr ""
@@ -6585,6 +6783,152 @@ msgstr ""
msgid "Import as Multiple Scenes+Materials"
msgstr ""
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Nodes"
+msgstr "Mezgls"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Root Type"
+msgstr "Dalībnieka veids"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Root Name"
+msgstr "AttÄlais vÄrds"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Root Scale"
+msgstr "Mērogs"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Custom Script"
+msgstr "Izgriezt mezglu(s)"
+
+#: editor/import/resource_importer_scene.cpp scene/resources/texture.cpp
+#, fuzzy
+msgid "Storage"
+msgstr "Faila saglabÄÅ¡ana:"
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Use Legacy Names"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+msgid "Materials"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Location"
+msgstr "LokalizÄcija"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Keep On Reimport"
+msgstr "Reimportēt"
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+msgid "Meshes"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Ensure Tangents"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Light Baking"
+msgstr "Pa Labi, LineÄrs"
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Lightmap Texel Size"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+msgid "Skins"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Use Named Skins"
+msgstr "SignÄli"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "External Files"
+msgstr "Atvērt failu"
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Store In Subdir"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Filter Script"
+msgstr "Filtrs:"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Keep Custom Tracks"
+msgstr "Redaktora motīvs"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Optimizer"
+msgstr "Optimizēt"
+
+#: editor/import/resource_importer_scene.cpp main/main.cpp
+#: modules/mono/mono_gd/gd_mono.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp scene/2d/camera_2d.cpp scene/2d/light_2d.cpp
+#: scene/2d/navigation_polygon.cpp scene/2d/ray_cast_2d.cpp scene/2d/sprite.cpp
+#: scene/2d/y_sort.cpp scene/3d/audio_stream_player_3d.cpp
+#: scene/3d/baked_lightmap.cpp scene/3d/interpolated_camera.cpp
+#: scene/3d/light.cpp scene/3d/navigation_mesh_instance.cpp
+#: scene/3d/physics_joint.cpp scene/3d/ray_cast.cpp scene/3d/sprite_3d.cpp
+#: scene/gui/graph_edit.cpp scene/gui/rich_text_label.cpp
+#: scene/resources/curve.cpp scene/resources/environment.cpp
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Enabled"
+msgstr "Iespējot"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Max Linear Error"
+msgstr "Maks. LineÄrÄ Kļūda:"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Max Angular Error"
+msgstr "Maks. RotÄcijas Kļūda:"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Max Angle"
+msgstr "Vērtība:"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Remove Unused Tracks"
+msgstr "Noņemt Anim. Celiņu"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Clips"
+msgstr "Anim. Klipi"
+
+#: editor/import/resource_importer_scene.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/particles_2d.cpp scene/3d/area.cpp scene/3d/cpu_particles.cpp
+#: scene/3d/particles.cpp scene/resources/environment.cpp
+#, fuzzy
+msgid "Amount"
+msgstr "Daudzums:"
+
#: editor/import/resource_importer_scene.cpp
#: editor/plugins/mesh_library_editor_plugin.cpp
msgid "Import Scene"
@@ -6626,12 +6970,145 @@ msgstr ""
msgid "Saving..."
msgstr "SaglabÄ..."
+#: editor/import/resource_importer_texture.cpp scene/resources/texture.cpp
+msgid "Lossy Quality"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "HDR Mode"
+msgstr "Mēroga Režīms"
+
+#: editor/import/resource_importer_texture.cpp
+msgid "BPTC LDR"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/mesh_instance_2d.cpp scene/2d/multimesh_instance_2d.cpp
+#: scene/2d/particles_2d.cpp scene/2d/sprite.cpp scene/resources/style_box.cpp
+msgid "Normal Map"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Process"
+msgstr "Mēroga Režīms"
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Fix Alpha Border"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Premult Alpha"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Hdr As Srgb"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Invert Color"
+msgstr "KrÄsas"
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Normal Map Invert Y"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
+#: scene/audio/audio_stream_player.cpp scene/gui/video_player.cpp
+msgid "Stream"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Size Limit"
+msgstr "Izmērs: "
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Detect 3D"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "SVG"
+msgstr ""
+
#: editor/import/resource_importer_texture.cpp
msgid ""
"Warning, no suitable PC VRAM compression enabled in Project Settings. This "
"texture will not display correctly on PC."
msgstr ""
+#: editor/import/resource_importer_texture_atlas.cpp
+#, fuzzy
+msgid "Atlas File"
+msgstr "Visi faili (*)"
+
+#: editor/import/resource_importer_texture_atlas.cpp
+#, fuzzy
+msgid "Import Mode"
+msgstr "Importēt doku"
+
+#: editor/import/resource_importer_texture_atlas.cpp
+#, fuzzy
+msgid "Crop To Region"
+msgstr "Reģions"
+
+#: editor/import/resource_importer_texture_atlas.cpp
+msgid "Trim Alpha Border From Region"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp scene/2d/physics_body_2d.cpp
+msgid "Force"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+msgid "8 Bit"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp main/main.cpp
+#: modules/mono/editor/csharp_project.cpp modules/mono/mono_gd/gd_mono.cpp
+msgid "Mono"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+#, fuzzy
+msgid "Max Rate"
+msgstr "Vērtība:"
+
+#: editor/import/resource_importer_wav.cpp
+#, fuzzy
+msgid "Max Rate Hz"
+msgstr "Vērtība:"
+
+#: editor/import/resource_importer_wav.cpp
+msgid "Trim"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+#, fuzzy
+msgid "Normalize"
+msgstr "Noņemt tekstūru"
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+#, fuzzy
+msgid "Loop Mode"
+msgstr "Ikonu Režīms"
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+#, fuzzy
+msgid "Loop Begin"
+msgstr "Ikonu Režīms"
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+#, fuzzy
+msgid "Loop End"
+msgstr "Ikonu Režīms"
+
#: editor/import_defaults_editor.cpp
msgid "Select Importer"
msgstr "IzvÄ“lÄ“ties importÄ“tÄju"
@@ -6700,6 +7177,29 @@ msgid "Failed to load resource."
msgstr ""
#: editor/inspector_dock.cpp
+#, fuzzy
+msgid "Property Name Style"
+msgstr "Mainīgo Celiņš"
+
+#: editor/inspector_dock.cpp scene/gui/color_picker.cpp
+msgid "Raw"
+msgstr "Jēls"
+
+#: editor/inspector_dock.cpp
+#, fuzzy
+msgid "Capitalized"
+msgstr "Ielīmēt iestatījumus"
+
+#: editor/inspector_dock.cpp
+#, fuzzy
+msgid "Localized"
+msgstr "LokalizÄcija"
+
+#: editor/inspector_dock.cpp
+msgid "Localization not available for current language."
+msgstr ""
+
+#: editor/inspector_dock.cpp
msgid "Copy Properties"
msgstr "Kopēt iestatījumus"
@@ -7729,18 +8229,26 @@ msgid "License (Z-A)"
msgstr "Licence (Z-A)"
#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgctxt "Pagination"
msgid "First"
msgstr "Pirmais"
-#: editor/plugins/asset_library_editor_plugin.cpp scene/gui/control.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgctxt "Pagination"
msgid "Previous"
msgstr "Iepriekšējais"
-#: editor/plugins/asset_library_editor_plugin.cpp scene/gui/control.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgctxt "Pagination"
msgid "Next"
msgstr "NÄkamais"
#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgctxt "Pagination"
msgid "Last"
msgstr "Pēdējais"
@@ -7974,19 +8482,19 @@ msgid ""
"margins."
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Top Left"
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Top Right"
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Bottom Right"
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Bottom Left"
msgstr ""
@@ -8682,6 +9190,19 @@ msgstr ""
msgid "Gradient Edited"
msgstr ""
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+msgid "Swap GradientTexture2D Fill Points"
+msgstr ""
+
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+msgid "Swap Gradient Fill Points"
+msgstr ""
+
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+#, fuzzy
+msgid "Toggle Grid Snap"
+msgstr "PÄrslÄ“gt režīmu"
+
#: editor/plugins/item_list_editor_plugin.cpp
msgid "Item %d"
msgstr ""
@@ -8895,9 +9416,10 @@ msgid ""
"%s"
msgstr ""
-#: editor/plugins/mesh_library_editor_plugin.cpp modules/gridmap/grid_map.cpp
-msgid "Mesh Library"
-msgstr ""
+#: editor/plugins/mesh_library_editor_plugin.cpp
+#, fuzzy
+msgid "MeshLibrary"
+msgstr "TīklaBibliotēka..."
#: editor/plugins/mesh_library_editor_plugin.cpp
msgid "Add Item"
@@ -9874,8 +10396,8 @@ msgstr ""
msgid "Source"
msgstr "Avots"
-#: editor/plugins/script_text_editor.cpp scene/3d/interpolated_camera.cpp
-#: scene/animation/skeleton_ik.cpp
+#: editor/plugins/script_text_editor.cpp platform/uwp/export/export.cpp
+#: scene/3d/interpolated_camera.cpp scene/animation/skeleton_ik.cpp
msgid "Target"
msgstr ""
@@ -10836,7 +11358,9 @@ msgstr ""
#: editor/plugins/sprite_frames_editor_plugin.cpp
#: modules/gltf/gltf_animation.cpp modules/minimp3/audio_stream_mp3.cpp
-#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp scene/2d/path_2d.cpp
+#: modules/minimp3/resource_importer_mp3.cpp
+#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp
+#: modules/stb_vorbis/resource_importer_ogg_vorbis.cpp scene/2d/path_2d.cpp
#: scene/3d/path.cpp scene/resources/animation.cpp scene/resources/material.cpp
msgid "Loop"
msgstr "Cilpa"
@@ -11707,8 +12231,9 @@ msgstr ""
msgid "Priority"
msgstr ""
-#: editor/plugins/tile_set_editor_plugin.cpp main/main.cpp scene/gui/button.cpp
-#: scene/gui/item_list.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp main/main.cpp
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#: scene/gui/button.cpp scene/gui/item_list.cpp
msgid "Icon"
msgstr "Ikona"
@@ -13000,10 +13525,6 @@ msgid ""
msgstr ""
#: editor/project_export.cpp
-msgid "Release"
-msgstr ""
-
-#: editor/project_export.cpp
msgid "Exporting All"
msgstr ""
@@ -14769,6 +15290,7 @@ msgid "Change AudioStreamPlayer3D Emission Angle"
msgstr ""
#: editor/spatial_editor_gizmos.cpp modules/gltf/gltf_node.cpp
+#: platform/osx/export/export.cpp
msgid "Camera"
msgstr ""
@@ -15041,7 +15563,8 @@ msgstr ""
msgid "Use Nvidia Rect Flicker Workaround"
msgstr ""
-#: main/main.cpp platform/uwp/os_uwp.cpp
+#: main/main.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp platform/uwp/os_uwp.cpp
#, fuzzy
msgid "Display"
msgstr "ParÄdÄ«t Visu"
@@ -15100,19 +15623,6 @@ msgstr ""
msgid "Allowed"
msgstr ""
-#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp scene/2d/camera_2d.cpp
-#: scene/2d/light_2d.cpp scene/2d/navigation_polygon.cpp
-#: scene/2d/ray_cast_2d.cpp scene/2d/sprite.cpp scene/2d/y_sort.cpp
-#: scene/3d/audio_stream_player_3d.cpp scene/3d/baked_lightmap.cpp
-#: scene/3d/interpolated_camera.cpp scene/3d/light.cpp
-#: scene/3d/navigation_mesh_instance.cpp scene/3d/ray_cast.cpp
-#: scene/3d/sprite_3d.cpp scene/gui/graph_edit.cpp
-#: scene/gui/rich_text_label.cpp scene/resources/curve.cpp
-#: scene/resources/environment.cpp
-#, fuzzy
-msgid "Enabled"
-msgstr "Iespējot"
-
#: main/main.cpp
msgid "Intended Usage"
msgstr ""
@@ -15143,13 +15653,14 @@ msgstr ""
msgid "Handheld"
msgstr ""
-#: main/main.cpp
+#: main/main.cpp platform/javascript/export/export.cpp
+#: platform/uwp/export/export.cpp
#, fuzzy
msgid "Orientation"
msgstr "TieÅ¡saistes DokumentÄcija"
#: main/main.cpp scene/gui/scroll_container.cpp scene/gui/text_edit.cpp
-#: scene/main/scene_tree.cpp
+#: scene/main/scene_tree.cpp scene/register_scene_types.cpp
#, fuzzy
msgid "Common"
msgstr "Komūns"
@@ -15191,7 +15702,7 @@ msgstr ""
#: main/main.cpp
#, fuzzy
-msgid "Frame Delay (msec)"
+msgid "Frame Delay Msec"
msgstr "Kadra Laiks (ms)"
#: main/main.cpp
@@ -15313,11 +15824,6 @@ msgstr ""
msgid "Tooltip Position Offset"
msgstr ""
-#: main/main.cpp modules/mono/editor/csharp_project.cpp
-#: modules/mono/mono_gd/gd_mono.cpp
-msgid "Mono"
-msgstr ""
-
#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp
#, fuzzy
msgid "Debugger Agent"
@@ -15872,7 +16378,7 @@ msgstr "KrÄsas"
msgid "Intensity"
msgstr ""
-#: modules/gltf/gltf_light.cpp scene/2d/light_2d.cpp
+#: modules/gltf/gltf_light.cpp scene/2d/light_2d.cpp scene/3d/light.cpp
#, fuzzy
msgid "Range"
msgstr "Nomainīt"
@@ -16011,11 +16517,6 @@ msgstr ""
msgid "Use Named Skin Binds"
msgstr ""
-#: modules/gltf/gltf_state.cpp scene/3d/physics_joint.cpp
-#, fuzzy
-msgid "Nodes"
-msgstr "Mezgls"
-
#: modules/gltf/gltf_state.cpp
msgid "Buffer Views"
msgstr ""
@@ -16025,14 +16526,6 @@ msgid "Accessors"
msgstr ""
#: modules/gltf/gltf_state.cpp
-msgid "Meshes"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp
-msgid "Materials"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp
#, fuzzy
msgid "Scene Name"
msgstr "Ainas ceļš:"
@@ -16049,15 +16542,11 @@ msgstr "Izveidot Cilmes Mezglu:"
msgid "Textures"
msgstr "Noņemt tekstūru"
-#: modules/gltf/gltf_state.cpp
+#: modules/gltf/gltf_state.cpp platform/uwp/export/export.cpp
msgid "Images"
msgstr ""
#: modules/gltf/gltf_state.cpp
-msgid "Skins"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp
msgid "Cameras"
msgstr ""
@@ -16089,11 +16578,15 @@ msgid "Src Image"
msgstr ""
#: modules/gridmap/grid_map.cpp
+msgid "Mesh Library"
+msgstr ""
+
+#: modules/gridmap/grid_map.cpp
#, fuzzy
msgid "Physics Material"
msgstr "Fizikas kadrs %"
-#: modules/gridmap/grid_map.cpp
+#: modules/gridmap/grid_map.cpp scene/3d/visual_instance.cpp
msgid "Use In Baked Light"
msgstr ""
@@ -16124,6 +16617,7 @@ msgstr "Centrēt mezglu"
#: modules/gridmap/grid_map.cpp scene/2d/collision_object_2d.cpp
#: scene/2d/tile_map.cpp scene/3d/collision_object.cpp scene/3d/soft_body.cpp
+#: scene/resources/material.cpp
msgid "Mask"
msgstr ""
@@ -16304,7 +16798,9 @@ msgid "Ultra Quality Ray Count"
msgstr ""
#: modules/minimp3/audio_stream_mp3.cpp
+#: modules/minimp3/resource_importer_mp3.cpp
#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp
+#: modules/stb_vorbis/resource_importer_ogg_vorbis.cpp
#, fuzzy
msgid "Loop Offset"
msgstr "Ikonu Režīms"
@@ -17383,6 +17879,184 @@ msgid "The package must have at least one '.' separator."
msgstr ""
#: platform/android/export/export_plugin.cpp
+msgid "Use Custom Build"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Export Format"
+msgstr "Eksportēt bibliotēku"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Keystore"
+msgstr "AtkļūdotÄjs"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Debug User"
+msgstr "AtkļūdotÄjs"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+msgid "Debug Password"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Release User"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Release Password"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "One Click Deploy"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Clear Previous Install"
+msgstr "IepriekšējÄ cilne"
+
+#: platform/android/export/export_plugin.cpp scene/resources/shader.cpp
+msgid "Code"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Min SDK"
+msgstr "Galvenais Skripts:"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Target SDK"
+msgstr "Izdzēst Mezglu"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Package"
+msgstr "Pako"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Unique Name"
+msgstr "Mezgla VÄrds:"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Signed"
+msgstr "SignÄls"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Classify As Game"
+msgstr "Klases nosaukums:"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Retain Data On Uninstall"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Exclude From Recents"
+msgstr "Dzēst mezglus"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Graphics"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "OpenGL Debug"
+msgstr "Atvērt"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "XR Features"
+msgstr "GalvenÄs iespÄ“jas:"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "XR Mode"
+msgstr "Mēroga Režīms"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Hand Tracking"
+msgstr "Pako"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Hand Tracking Frequency"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Passthrough"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Immersive Mode"
+msgstr "Mēroga Režīms"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Support Small"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Support Normal"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Support Large"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Support Xlarge"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "User Data Backup"
+msgstr "LietotÄja interfeiss"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Allow"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Command Line"
+msgstr "Komūns"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Extra Args"
+msgstr "Ekstra Izsaukuma Argumenti:"
+
+#: platform/android/export/export_plugin.cpp
+msgid "APK Expansion"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Salt"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Public Key"
+msgstr "Dublicēt atslēgvietnes"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Permissions"
+msgstr "Versija"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Custom Permissions"
+msgstr "Atskaņot pielÄgotu ainu"
+
+#: platform/android/export/export_plugin.cpp
msgid "Select device from the list"
msgstr ""
@@ -17668,6 +18342,177 @@ msgid "The character '%s' is not allowed in Identifier."
msgstr ""
#: platform/iphone/export/export.cpp
+msgid "App Store Team ID"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Provisioning Profile UUID Debug"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Code Sign Identity Debug"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Export Method Debug"
+msgstr "Ekportēt tīkla bibliotēku"
+
+#: platform/iphone/export/export.cpp
+msgid "Provisioning Profile UUID Release"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Code Sign Identity Release"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Export Method Release"
+msgstr "Ekportēt tīkla bibliotēku"
+
+#: platform/iphone/export/export.cpp
+msgid "Targeted Device Family"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Info"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Identifier"
+msgstr "Nederīgs Identifikators:"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Signature"
+msgstr "SignÄls"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Short Version"
+msgstr "Versija"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Copyright"
+msgstr "Kopēt"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Capabilities"
+msgstr "Ielīmēt iestatījumus"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Access Wi-Fi"
+msgstr "Mērķis sasniegts!"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Push Notifications"
+msgstr "Konstante"
+
+#: platform/iphone/export/export.cpp scene/3d/baked_lightmap.cpp
+#, fuzzy
+msgid "User Data"
+msgstr "LietotÄja interfeiss"
+
+#: platform/iphone/export/export.cpp
+msgid "Accessible From Files App"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Accessible From Itunes Sharing"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Privacy"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Camera Usage Description"
+msgstr "Apraksts"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Microphone Usage Description"
+msgstr "Iestatījumu apraksti"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Photolibrary Usage Description"
+msgstr "Iestatījumu apraksti"
+
+#: platform/iphone/export/export.cpp
+msgid "iPhone 120 X 120"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPhone 180 X 180"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 76 X 76"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 152 X 152"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 167 X 167"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "App Store 1024 X 1024"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Spotlight 40 X 40"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Spotlight 80 X 80"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Storyboard"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Use Launch Screen Storyboard"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Image Scale Mode"
+msgstr "Mēroga Režīms"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Custom Image @2x"
+msgstr "Izgriezt mezglu(s)"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Custom Image @3x"
+msgstr "Izgriezt mezglu(s)"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Use Custom BG Color"
+msgstr "Izgriezt mezglu(s)"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Custom BG Color"
+msgstr "Izgriezt mezglu(s)"
+
+#: platform/iphone/export/export.cpp
msgid "App Store Team ID not specified - cannot configure the project."
msgstr ""
@@ -17704,6 +18549,80 @@ msgid "Could not read file:"
msgstr ""
#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Variant"
+msgstr "Atdalījums:"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Export Type"
+msgstr "Eksportēt"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "VRAM Texture Compression"
+msgstr "Sadursme"
+
+#: platform/javascript/export/export.cpp
+msgid "For Desktop"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "For Mobile"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Html"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Export Icon"
+msgstr "Izvērst apakšējo paneli"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Custom Html Shell"
+msgstr "Izgriezt mezglu(s)"
+
+#: platform/javascript/export/export.cpp
+msgid "Head Include"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Canvas Resize Policy"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Focus Canvas On Start"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Experimental Virtual Keyboard"
+msgstr "FiltrÄ“t signÄlus"
+
+#: platform/javascript/export/export.cpp
+msgid "Progressive Web App"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Offline Page"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 144 X 144"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 180 X 180"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 512 X 512"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
msgid "Could not read HTML shell:"
msgstr ""
@@ -17814,6 +18733,195 @@ msgid "Unknown object type."
msgstr ""
#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "App Category"
+msgstr "Kategorija:"
+
+#: platform/osx/export/export.cpp
+msgid "High Res"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Location Usage Description"
+msgstr "Apraksts"
+
+#: platform/osx/export/export.cpp
+msgid "Address Book Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Calendar Usage Description"
+msgstr "Apraksts"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Photos Library Usage Description"
+msgstr "Iestatījumu apraksti"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Desktop Folder Usage Description"
+msgstr "Metožu Apraksts"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Documents Folder Usage Description"
+msgstr "Metožu Apraksts"
+
+#: platform/osx/export/export.cpp
+msgid "Downloads Folder Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Network Volumes Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Removable Volumes Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#, fuzzy
+msgid "Codesign"
+msgstr "Mezgls"
+
+#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
+#: platform/windows/export/export.cpp
+msgid "Identity"
+msgstr ""
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#, fuzzy
+msgid "Timestamp"
+msgstr "Laiks"
+
+#: platform/osx/export/export.cpp
+msgid "Hardened Runtime"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Replace Existing Signature"
+msgstr "Aizvietot failos"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Entitlements"
+msgstr "Saturs:"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Custom File"
+msgstr "Izgriezt mezglu(s)"
+
+#: platform/osx/export/export.cpp
+msgid "Allow JIT Code Execution"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Allow Unsigned Executable Memory"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Allow Dyld Environment Variables"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Disable Library Validation"
+msgstr "Atspējota poga"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Audio Input"
+msgstr "PÄrsaukt Audio Kopni"
+
+#: platform/osx/export/export.cpp
+msgid "Address Book"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Calendars"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Photos Library"
+msgstr "Eksportēt bibliotēku"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Apple Events"
+msgstr "Pielietot atiestatīšanu"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Debugging"
+msgstr "Atkļūdot"
+
+#: platform/osx/export/export.cpp
+msgid "App Sandbox"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Network Server"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Network Client"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Device Usb"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Device Bluetooth"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Files Downloads"
+msgstr "LejuplÄdÄ“t"
+
+#: platform/osx/export/export.cpp
+msgid "Files Pictures"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Files Music"
+msgstr "Fails"
+
+#: platform/osx/export/export.cpp
+msgid "Files Movies"
+msgstr ""
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#, fuzzy
+msgid "Custom Options"
+msgstr "Kopnes Iestatījumi"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Notarization"
+msgstr "LokalizÄcija"
+
+#: platform/osx/export/export.cpp
+msgid "Apple ID Name"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Apple ID Password"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Apple Team ID"
+msgstr ""
+
+#: platform/osx/export/export.cpp
msgid ""
"Note: The notarization process generally takes less than an hour. When the "
"process is completed, you'll receive an email."
@@ -18004,6 +19112,134 @@ msgid "Force Builtin Codesign"
msgstr ""
#: platform/uwp/export/export.cpp
+msgid "Architecture"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Display Name"
+msgstr "ParÄdÄ«t Visu"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Short Name"
+msgstr "Mainīt porta nosaukumu"
+
+#: platform/uwp/export/export.cpp
+msgid "Publisher"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Publisher Display Name"
+msgstr "NederÄ«gs paketes izdevÄ“ja displeja vÄrds."
+
+#: platform/uwp/export/export.cpp
+msgid "Product Guid"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Publisher Guid"
+msgstr "Notīrīt Vadotnes"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Signing"
+msgstr "SignÄls"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Certificate"
+msgstr "Daļiņas"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Algorithm"
+msgstr "AtkļūdotÄjs"
+
+#: platform/uwp/export/export.cpp
+msgid "Major"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Minor"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Build"
+msgstr "LineÄla Režīms"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Revision"
+msgstr "Versija"
+
+#: platform/uwp/export/export.cpp
+msgid "Landscape"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Portrait"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Landscape Flipped"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Portrait Flipped"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Store Logo"
+msgstr "Mēroga Režīms"
+
+#: platform/uwp/export/export.cpp
+msgid "Square 44 X 44 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 71 X 71 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 150 X 150 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 310 X 310 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Wide 310 X 150 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Splash Screen"
+msgstr "Uzņemt EkrÄnÅ¡Äviņu"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Tiles"
+msgstr "Fails"
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Square 150 X 150"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Wide 310 X 150"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Square 310 X 310"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
msgid "Invalid package short name."
msgstr "Nederīgs paketes īsais nosaukums."
@@ -18069,15 +19305,53 @@ msgid "Debug Certificate"
msgstr ""
#: platform/uwp/export/export.cpp
-msgid "Debug Password"
+#, fuzzy
+msgid "Debug Algorithm"
+msgstr "AtkļūdotÄjs"
+
+#: platform/windows/export/export.cpp
+msgid "Identity Type"
msgstr ""
-#: platform/uwp/export/export.cpp
+#: platform/windows/export/export.cpp
+msgid "Timestamp Server URL"
+msgstr ""
+
+#: platform/windows/export/export.cpp
#, fuzzy
-msgid "Debug Algorithm"
+msgid "Digest Algorithm"
msgstr "AtkļūdotÄjs"
#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "File Version"
+msgstr "Versija"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Product Version"
+msgstr "Nederīgs produkta GUID."
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Company Name"
+msgstr "Mezgla VÄrds:"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Product Name"
+msgstr "Grupēts"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "File Description"
+msgstr "Apraksts"
+
+#: platform/windows/export/export.cpp
+msgid "Trademarks"
+msgstr ""
+
+#: platform/windows/export/export.cpp
msgid ""
"The rcedit tool must be configured in the Editor Settings (Export > Windows "
"> Rcedit) to change the icon or app information data."
@@ -18150,12 +19424,14 @@ msgstr "Atskaņot"
msgid "Centered"
msgstr "Centrēt mezglu"
-#: scene/2d/animated_sprite.cpp scene/2d/camera_2d.cpp scene/2d/light_2d.cpp
+#: scene/2d/animated_sprite.cpp scene/2d/camera_2d.cpp
+#: scene/2d/cpu_particles_2d.cpp scene/2d/light_2d.cpp
#: scene/2d/parallax_background.cpp scene/2d/parallax_layer.cpp
#: scene/2d/path_2d.cpp scene/2d/polygon_2d.cpp scene/2d/sprite.cpp
-#: scene/3d/path.cpp scene/3d/physics_body.cpp scene/3d/sprite_3d.cpp
-#: scene/gui/graph_node.cpp scene/gui/rich_text_effect.cpp
-#: scene/main/canvas_layer.cpp scene/resources/material.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/path.cpp scene/3d/physics_body.cpp
+#: scene/3d/sprite_3d.cpp scene/gui/graph_node.cpp
+#: scene/gui/rich_text_effect.cpp scene/main/canvas_layer.cpp
+#: scene/resources/material.cpp scene/resources/particles_material.cpp
#: scene/resources/style_box.cpp
msgid "Offset"
msgstr ""
@@ -18226,11 +19502,6 @@ msgstr "Pievienot Audio Kopni"
msgid "Override"
msgstr "pÄrraksta %s:"
-#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
-#: scene/audio/audio_stream_player.cpp scene/gui/video_player.cpp
-msgid "Stream"
-msgstr ""
-
#: scene/2d/audio_stream_player_2d.cpp scene/audio/audio_stream_player.cpp
#: scene/gui/video_player.cpp servers/audio/effects/audio_effect_amplify.cpp
#, fuzzy
@@ -18256,13 +19527,13 @@ msgid "Stream Paused"
msgstr ""
#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
-#: scene/3d/reflection_probe.cpp scene/3d/visual_instance.cpp
-#: scene/resources/material.cpp
+#: scene/3d/light.cpp scene/3d/reflection_probe.cpp
+#: scene/3d/visual_instance.cpp scene/resources/material.cpp
#, fuzzy
msgid "Max Distance"
msgstr "Å ablons"
-#: scene/2d/audio_stream_player_2d.cpp
+#: scene/2d/audio_stream_player_2d.cpp scene/3d/light.cpp
#, fuzzy
msgid "Attenuation"
msgstr "AnimÄcija"
@@ -18317,6 +19588,24 @@ msgstr "Mēroga Režīms"
msgid "Limit"
msgstr ""
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/style_box.cpp
+#, fuzzy
+msgid "Left"
+msgstr "Pa Kreisi, Plašs"
+
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/style_box.cpp
+#, fuzzy
+msgid "Right"
+msgstr "Pa labi, Plašs"
+
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/dynamic_font.cpp scene/resources/style_box.cpp
+#, fuzzy
+msgid "Bottom"
+msgstr "GrÄmatzÄ«mes"
+
#: scene/2d/camera_2d.cpp
msgid "Smoothed"
msgstr ""
@@ -18525,13 +19814,6 @@ msgstr ""
msgid "Emitting"
msgstr "Testē"
-#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp scene/3d/area.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
-#: scene/resources/environment.cpp
-#, fuzzy
-msgid "Amount"
-msgstr "Daudzums:"
-
#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp
#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
msgid "Lifetime"
@@ -18592,18 +19874,13 @@ msgstr ""
#: scene/2d/mesh_instance_2d.cpp scene/2d/multimesh_instance_2d.cpp
#: scene/2d/particles_2d.cpp scene/2d/polygon_2d.cpp scene/2d/sprite.cpp
#: scene/3d/sprite_3d.cpp scene/gui/nine_patch_rect.cpp
-#: scene/gui/texture_rect.cpp scene/resources/sky.cpp
-#: scene/resources/style_box.cpp scene/resources/visual_shader_nodes.cpp
+#: scene/gui/texture_rect.cpp scene/resources/material.cpp
+#: scene/resources/sky.cpp scene/resources/style_box.cpp
+#: scene/resources/visual_shader_nodes.cpp
#, fuzzy
msgid "Texture"
msgstr "Noņemt tekstūru"
-#: scene/2d/cpu_particles_2d.cpp scene/2d/mesh_instance_2d.cpp
-#: scene/2d/multimesh_instance_2d.cpp scene/2d/particles_2d.cpp
-#: scene/2d/sprite.cpp scene/resources/style_box.cpp
-msgid "Normal Map"
-msgstr ""
-
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
#, fuzzy
@@ -18624,10 +19901,10 @@ msgid "Normals"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/3d/sprite_3d.cpp scene/resources/material.cpp
-#: scene/resources/particles_material.cpp scene/resources/texture.cpp
-msgid "Flags"
-msgstr ""
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Align Y"
+msgstr "Pievienot..."
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
@@ -18647,6 +19924,11 @@ msgid "Initial Velocity"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Velocity Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp servers/physics_2d_server.cpp
#: servers/physics_server.cpp
msgid "Angular Velocity"
@@ -18654,6 +19936,12 @@ msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Velocity Curve"
+msgstr "Izvēlēties pašreizējo"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
msgid "Orbit Velocity"
msgstr ""
@@ -18665,6 +19953,23 @@ msgstr "LineÄrs"
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Accel"
+msgstr "Mērķis sasniegts!"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Accel Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Accel Curve"
+msgstr "Dziļums"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
msgid "Radial Accel"
msgstr ""
@@ -18674,19 +19979,55 @@ msgid "Tangential Accel"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/2d/joints_2d.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/vehicle_body.cpp
-#: scene/resources/particles_material.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/physics_joint.cpp
+#: scene/3d/vehicle_body.cpp scene/resources/particles_material.cpp
#: servers/audio/effects/audio_effect_reverb.cpp
msgid "Damping"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+msgid "Damping Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Damping Curve"
+msgstr "Dziļums"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp scene/3d/light.cpp
+#: scene/resources/particles_material.cpp
msgid "Angle"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+msgid "Angle Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Angle Curve"
+msgstr "Dziļums"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#, fuzzy
+msgid "Scale Amount"
+msgstr "Daudzums:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+msgid "Scale Amount Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#, fuzzy
+msgid "Scale Amount Curve"
+msgstr "Skala No Kursora"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
#, fuzzy
msgid "Color Ramp"
msgstr "KrÄsas"
@@ -18702,6 +20043,47 @@ msgstr ""
msgid "Hue Variation"
msgstr "Atdalījums:"
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Variation"
+msgstr "Atdalījums:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Variation Random"
+msgstr "Atdalījums:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Variation Curve"
+msgstr "Atdalījums:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Speed Random"
+msgstr "Mērogs"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Speed Curve"
+msgstr "Izvēlēties pašreizējo"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Offset Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Offset Curve"
+msgstr "Dziļums"
+
#: scene/2d/joints_2d.cpp
msgid "Node A and Node B must be PhysicsBody2Ds"
msgstr ""
@@ -18733,6 +20115,7 @@ msgid "Node B"
msgstr "Mezgls"
#: scene/2d/joints_2d.cpp scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp
+#: scene/3d/light.cpp scene/3d/physics_joint.cpp
#: scene/resources/environment.cpp
msgid "Bias"
msgstr ""
@@ -18742,7 +20125,7 @@ msgstr ""
msgid "Disable Collision"
msgstr "Atspējota poga"
-#: scene/2d/joints_2d.cpp
+#: scene/2d/joints_2d.cpp scene/3d/physics_joint.cpp
msgid "Softness"
msgstr ""
@@ -18759,7 +20142,7 @@ msgstr ""
msgid "Rest Length"
msgstr ""
-#: scene/2d/joints_2d.cpp scene/3d/vehicle_body.cpp
+#: scene/2d/joints_2d.cpp scene/3d/physics_joint.cpp scene/3d/vehicle_body.cpp
msgid "Stiffness"
msgstr ""
@@ -18779,7 +20162,7 @@ msgid "Texture Scale"
msgstr ""
#: scene/2d/light_2d.cpp scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp
-#: scene/resources/environment.cpp scene/resources/sky.cpp
+#: scene/3d/light.cpp scene/resources/environment.cpp scene/resources/sky.cpp
msgid "Energy"
msgstr ""
@@ -18820,12 +20203,6 @@ msgstr "SapludinÄt no ainas"
msgid "Gradient Length"
msgstr "Noklusējuma motīvs"
-#: scene/2d/light_2d.cpp scene/gui/control.cpp
-#: scene/resources/navigation_mesh.cpp
-#, fuzzy
-msgid "Filter"
-msgstr "Filtrs:"
-
#: scene/2d/light_2d.cpp
#, fuzzy
msgid "Filter Smooth"
@@ -19222,10 +20599,6 @@ msgid "Applied Forces"
msgstr ""
#: scene/2d/physics_body_2d.cpp
-msgid "Force"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp
msgid "Torque"
msgstr ""
@@ -19239,7 +20612,7 @@ msgid "Sync To Physics"
msgstr "Fizikas kadrs %"
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-msgid "Moving platform"
+msgid "Moving Platform"
msgstr ""
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
@@ -19248,7 +20621,7 @@ msgstr ""
#: scene/2d/physics_body_2d.cpp scene/2d/touch_screen_button.cpp
#: scene/3d/physics_body.cpp scene/gui/texture_button.cpp
-#: scene/resources/line_shape_2d.cpp
+#: scene/resources/line_shape_2d.cpp scene/resources/material.cpp
msgid "Normal"
msgstr ""
@@ -19474,6 +20847,34 @@ msgid ""
"as parent."
msgstr ""
+#: scene/2d/visibility_notifier_2d.cpp scene/3d/visibility_notifier.cpp
+#, fuzzy
+msgid "Pause Animations"
+msgstr "AnimÄcijas:"
+
+#: scene/2d/visibility_notifier_2d.cpp scene/3d/visibility_notifier.cpp
+msgid "Freeze Bodies"
+msgstr ""
+
+#: scene/2d/visibility_notifier_2d.cpp
+#, fuzzy
+msgid "Pause Particles"
+msgstr "Daļiņas"
+
+#: scene/2d/visibility_notifier_2d.cpp
+#, fuzzy
+msgid "Pause Animated Sprites"
+msgstr "IzmainÄ«t AnimÄcijas Soli"
+
+#: scene/2d/visibility_notifier_2d.cpp
+#, fuzzy
+msgid "Process Parent"
+msgstr "Mēroga Režīms"
+
+#: scene/2d/visibility_notifier_2d.cpp
+msgid "Physics Process Parent"
+msgstr ""
+
#: scene/3d/area.cpp
msgid "Reverb Bus"
msgstr ""
@@ -19567,6 +20968,7 @@ msgid "Attenuation Filter"
msgstr ""
#: scene/3d/audio_stream_player_3d.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
#: servers/audio/effects/audio_effect_filter.cpp
msgid "Cutoff Hz"
msgstr ""
@@ -19610,11 +21012,6 @@ msgid "Octree"
msgstr ""
#: scene/3d/baked_lightmap.cpp
-#, fuzzy
-msgid "User Data"
-msgstr "LietotÄja interfeiss"
-
-#: scene/3d/baked_lightmap.cpp
msgid "Finding meshes and lights"
msgstr ""
@@ -19863,6 +21260,16 @@ msgid "Ring Axis"
msgstr "BrÄ«dinÄjumi"
#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Rotate Y"
+msgstr "LokalizÄcija"
+
+#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Disable Z"
+msgstr "Atspējots vienums"
+
+#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
msgid "Flatness"
msgstr ""
@@ -19899,16 +21306,11 @@ msgstr ""
msgid "Dynamic Range"
msgstr ""
-#: scene/3d/gi_probe.cpp
+#: scene/3d/gi_probe.cpp scene/3d/light.cpp
msgid "Normal Bias"
msgstr ""
#: scene/3d/gi_probe.cpp
-#, fuzzy
-msgid "Compress"
-msgstr "Komponentes"
-
-#: scene/3d/gi_probe.cpp
msgid "Plotting Meshes"
msgstr ""
@@ -19934,16 +21336,30 @@ msgid "Subdiv"
msgstr ""
#: scene/3d/light.cpp
+msgid "Indirect Energy"
+msgstr ""
+
+#: scene/3d/light.cpp
msgid "Negative"
msgstr ""
#: scene/3d/light.cpp
#, fuzzy
+msgid "Specular"
+msgstr "LineÄla Režīms"
+
+#: scene/3d/light.cpp
+#, fuzzy
msgid "Bake Mode"
msgstr "Mēroga Režīms"
#: scene/3d/light.cpp
#, fuzzy
+msgid "Contact"
+msgstr "Saturs:"
+
+#: scene/3d/light.cpp
+#, fuzzy
msgid "Reverse Cull Face"
msgstr "Atiestatīt Kopnes Skaļumu"
@@ -19953,11 +21369,28 @@ msgid "Directional Shadow"
msgstr "Virzieni"
#: scene/3d/light.cpp
+msgid "Split 1"
+msgstr ""
+
+#: scene/3d/light.cpp
+msgid "Split 2"
+msgstr ""
+
+#: scene/3d/light.cpp
+msgid "Split 3"
+msgstr ""
+
+#: scene/3d/light.cpp
msgid "Blend Splits"
msgstr ""
#: scene/3d/light.cpp
#, fuzzy
+msgid "Bias Split Scale"
+msgstr "Jauns skripts"
+
+#: scene/3d/light.cpp
+#, fuzzy
msgid "Depth Range"
msgstr "Dziļums"
@@ -19983,6 +21416,11 @@ msgstr ""
msgid "Spot"
msgstr ""
+#: scene/3d/light.cpp
+#, fuzzy
+msgid "Angle Attenuation"
+msgstr "AnimÄcija"
+
#: scene/3d/mesh_instance.cpp
msgid "Software Skinning"
msgstr ""
@@ -20105,6 +21543,63 @@ msgid "Axis Lock"
msgstr ""
#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Linear X"
+msgstr "LineÄrs"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Linear Y"
+msgstr "LineÄrs"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Linear Z"
+msgstr "LineÄrs"
+
+#: scene/3d/physics_body.cpp
+msgid "Angular X"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Angular Y"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Angular Z"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Motion X"
+msgstr "Darbība"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Motion Y"
+msgstr "Darbība"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Motion Z"
+msgstr "Darbība"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Move Lock X"
+msgstr "Bīdīt lejup"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Move Lock Y"
+msgstr "Bīdīt lejup"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Move Lock Z"
+msgstr "Bīdīt lejup"
+
+#: scene/3d/physics_body.cpp
msgid "Body Offset"
msgstr ""
@@ -20138,6 +21633,15 @@ msgid "Exclude Nodes"
msgstr "Dzēst mezglus"
#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Params"
+msgstr "Ielīmēt Parametrus"
+
+#: scene/3d/physics_joint.cpp
+msgid "Impulse Clamp"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit"
msgstr ""
@@ -20149,6 +21653,55 @@ msgstr ""
msgid "Lower"
msgstr ""
+#: scene/3d/physics_joint.cpp scene/3d/vehicle_body.cpp
+#, fuzzy
+msgid "Relaxation"
+msgstr "Atdalījums:"
+
+#: scene/3d/physics_joint.cpp
+msgid "Motor"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Target Velocity"
+msgstr "LineÄrs"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Max Impulse"
+msgstr "Vērtība:"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit"
+msgstr "LineÄrs"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Upper Distance"
+msgstr "Å ablons"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Lower Distance"
+msgstr "Å ablons"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Restitution"
+msgstr "Apraksts"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motion"
+msgstr "LineÄrs"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Ortho"
+msgstr "LineÄrs"
+
#: scene/3d/physics_joint.cpp
msgid "Upper Angle"
msgstr ""
@@ -20159,6 +21712,16 @@ msgstr ""
#: scene/3d/physics_joint.cpp
#, fuzzy
+msgid "Angular Motion"
+msgstr "AnimÄcija"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Angular Ortho"
+msgstr "Maks. RotÄcijas Kļūda:"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
msgid "Swing Span"
msgstr "SaglabÄ Ainu"
@@ -20167,17 +21730,98 @@ msgid "Twist Span"
msgstr ""
#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit X"
+msgstr "LineÄrs"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motor X"
+msgstr "LineÄrs"
+
+#: scene/3d/physics_joint.cpp
+msgid "Force Limit"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Spring X"
+msgstr "LineÄrs"
+
+#: scene/3d/physics_joint.cpp
+msgid "Equilibrium Point"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit X"
msgstr ""
#: scene/3d/physics_joint.cpp
+msgid "Erp"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Motor X"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Spring X"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit Y"
+msgstr "LineÄrs"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motor Y"
+msgstr "LineÄrs"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Spring Y"
+msgstr "LineÄrs"
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit Y"
msgstr ""
#: scene/3d/physics_joint.cpp
+msgid "Angular Motor Y"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Spring Y"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit Z"
+msgstr "LineÄrs"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motor Z"
+msgstr "LineÄrs"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Spring Z"
+msgstr "LineÄrs"
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit Z"
msgstr ""
+#: scene/3d/physics_joint.cpp
+msgid "Angular Motor Z"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Spring Z"
+msgstr ""
+
#: scene/3d/portal.cpp
msgid "The RoomManager should not be a child or grandchild of a Portal."
msgstr ""
@@ -20292,7 +21936,7 @@ msgstr ""
msgid "Use Default Simplify"
msgstr ""
-#: scene/3d/room.cpp
+#: scene/3d/room.cpp scene/3d/room_manager.cpp
msgid "Room Simplify"
msgstr ""
@@ -20330,6 +21974,13 @@ msgstr ""
msgid "Main"
msgstr ""
+#: scene/3d/room_manager.cpp scene/animation/animation_player.cpp
+#: scene/animation/animation_tree.cpp scene/animation/animation_tree_player.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+#, fuzzy
+msgid "Active"
+msgstr "Darbība"
+
#: scene/3d/room_manager.cpp
msgid "Roomlist"
msgstr ""
@@ -20353,6 +22004,51 @@ msgid "Gameplay"
msgstr ""
#: scene/3d/room_manager.cpp
+msgid "Gameplay Monitor"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "Use Secondary PVS"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Merge Meshes"
+msgstr "SapludinÄt no ainas"
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Show Margins"
+msgstr "ParÄdÄ«t failu sistÄ“mÄ"
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Debug Sprawl"
+msgstr "Atkļūdot"
+
+#: scene/3d/room_manager.cpp
+msgid "Overlap Warning Threshold"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Preview Camera"
+msgstr "Priekšskats"
+
+#: scene/3d/room_manager.cpp
+msgid "Portal Depth Limit"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Default Portal Margin"
+msgstr "Noklusējuma"
+
+#: scene/3d/room_manager.cpp
+msgid "Roaming Expansion Margin"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
msgid ""
"RoomList path is invalid.\n"
"Please check the RoomList branch has been assigned in the RoomManager."
@@ -20474,6 +22170,20 @@ msgstr ""
msgid "Billboard"
msgstr ""
+#: scene/3d/sprite_3d.cpp scene/resources/material.cpp
+#, fuzzy
+msgid "Transparent"
+msgstr "PÄreja eksistÄ“!"
+
+#: scene/3d/sprite_3d.cpp
+#, fuzzy
+msgid "Shaded"
+msgstr "Ä’notÄjs"
+
+#: scene/3d/sprite_3d.cpp
+msgid "Double Sided"
+msgstr ""
+
#: scene/3d/sprite_3d.cpp
msgid "Alpha Cut"
msgstr ""
@@ -20542,11 +22252,6 @@ msgstr ""
msgid "Max Force"
msgstr "%s Kļūda"
-#: scene/3d/vehicle_body.cpp
-#, fuzzy
-msgid "Relaxation"
-msgstr "Atdalījums:"
-
#: scene/3d/visibility_notifier.cpp
msgid "AABB"
msgstr ""
@@ -20677,8 +22382,9 @@ msgid "Fadeout Time"
msgstr ""
#: scene/animation/animation_blend_tree.cpp
-msgid "autorestart_"
-msgstr ""
+#, fuzzy
+msgid "Auto Restart"
+msgstr "AutomÄtiski Ievietot AtslÄ“gu"
#: scene/animation/animation_blend_tree.cpp
#, fuzzy
@@ -20761,13 +22467,6 @@ msgstr "Klases Iespējas:"
msgid "Default Blend Time"
msgstr "Noklusējuma motīvs"
-#: scene/animation/animation_player.cpp scene/animation/animation_tree.cpp
-#: scene/animation/animation_tree_player.cpp
-#: servers/audio/effects/audio_effect_delay.cpp
-#, fuzzy
-msgid "Active"
-msgstr "Darbība"
-
#: scene/animation/animation_player.cpp
msgid "Method Call Mode"
msgstr ""
@@ -20888,10 +22587,6 @@ msgstr "Izdzēst Mezglu"
msgid "Max Iterations"
msgstr "Izveidot Funkciju"
-#: scene/animation/tween.cpp scene/resources/texture.cpp
-msgid "Repeat"
-msgstr ""
-
#: scene/animation/tween.cpp
msgid "Playback Process Mode"
msgstr ""
@@ -20921,19 +22616,6 @@ msgstr "Mēroga Režīms"
msgid "Alignment"
msgstr ""
-#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
-#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
-#: scene/resources/style_box.cpp
-#, fuzzy
-msgid "Horizontal"
-msgstr "Izveidot HorizontÄlu Vadotni"
-
-#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
-#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
-#: scene/resources/style_box.cpp
-msgid "Vertical"
-msgstr ""
-
#: scene/gui/base_button.cpp
msgid "Shortcut In Tooltip"
msgstr ""
@@ -21027,10 +22709,6 @@ msgid "HSV"
msgstr ""
#: scene/gui/color_picker.cpp
-msgid "Raw"
-msgstr "Jēls"
-
-#: scene/gui/color_picker.cpp
msgid "Switch between hexadecimal and code values."
msgstr ""
@@ -21089,6 +22767,30 @@ msgid "Focus"
msgstr "Fokusa ceļš"
#: scene/gui/control.cpp
+msgid "Neighbour Left"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Neighbour Top"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Neighbour Right"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Neighbour Bottom"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Next"
+msgstr "NÄkamais"
+
+#: scene/gui/control.cpp
+msgid "Previous"
+msgstr "Iepriekšējais"
+
+#: scene/gui/control.cpp
msgid "Mouse"
msgstr ""
@@ -21125,7 +22827,7 @@ msgid "Dialog"
msgstr ""
#: scene/gui/dialogs.cpp
-msgid "Hide On Ok"
+msgid "Hide On OK"
msgstr ""
#: scene/gui/dialogs.cpp scene/gui/label.cpp
@@ -21221,7 +22923,7 @@ msgid "Timers"
msgstr "Laiks"
#: scene/gui/item_list.cpp scene/gui/popup_menu.cpp scene/gui/tree.cpp
-msgid "Incremental Search Max Interval (msec)"
+msgid "Incremental Search Max Interval Msec"
msgstr ""
#: scene/gui/item_list.cpp scene/gui/tree.cpp
@@ -21775,6 +23477,26 @@ msgstr "Centrēt mezglu"
msgid "Nine Patch Stretch"
msgstr "InterpolÄcijas režīms"
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Left"
+msgstr "Mēroga Režīms"
+
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Top"
+msgstr "Mēroga Režīms"
+
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Right"
+msgstr "Mēroga Režīms"
+
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Bottom"
+msgstr "Mēroga Režīms"
+
#: scene/gui/tree.cpp
msgid "Custom Minimum Height"
msgstr ""
@@ -21811,8 +23533,9 @@ msgid "Paused"
msgstr ""
#: scene/gui/video_player.cpp
-msgid "Buffering (msec)"
-msgstr ""
+#, fuzzy
+msgid "Buffering Msec"
+msgstr "SapludinÄt no ainas"
#: scene/gui/video_player.cpp
#, fuzzy
@@ -22150,6 +23873,22 @@ msgid "Shadow Atlas"
msgstr ""
#: scene/main/viewport.cpp
+msgid "Quad 0"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 1"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 2"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 3"
+msgstr ""
+
+#: scene/main/viewport.cpp
#, fuzzy
msgid "Canvas Transform"
msgstr "Anim IzmainÄ«t TransformÄciju"
@@ -22164,6 +23903,11 @@ msgid "Tooltip Delay (sec)"
msgstr ""
#: scene/register_scene_types.cpp
+#, fuzzy
+msgid "Swap OK Cancel"
+msgstr "Atcelt"
+
+#: scene/register_scene_types.cpp
msgid "Use hiDPI"
msgstr ""
@@ -22178,21 +23922,6 @@ msgid "Custom Font"
msgstr "Izgriezt mezglu(s)"
#: scene/resources/audio_stream_sample.cpp
-#, fuzzy
-msgid "Loop Mode"
-msgstr "Ikonu Režīms"
-
-#: scene/resources/audio_stream_sample.cpp
-#, fuzzy
-msgid "Loop Begin"
-msgstr "Ikonu Režīms"
-
-#: scene/resources/audio_stream_sample.cpp
-#, fuzzy
-msgid "Loop End"
-msgstr "Ikonu Režīms"
-
-#: scene/resources/audio_stream_sample.cpp
#: servers/audio/effects/audio_stream_generator.cpp servers/audio_server.cpp
msgid "Mix Rate"
msgstr ""
@@ -22248,6 +23977,16 @@ msgstr "Papildus iespējas:"
#: scene/resources/dynamic_font.cpp
#, fuzzy
+msgid "Char"
+msgstr "Derīgie simboli:"
+
+#: scene/resources/dynamic_font.cpp scene/resources/world.cpp
+#: scene/resources/world_2d.cpp
+msgid "Space"
+msgstr ""
+
+#: scene/resources/dynamic_font.cpp
+#, fuzzy
msgid "Font"
msgstr "Fonti"
@@ -22466,6 +24205,43 @@ msgid "Glow"
msgstr ""
#: scene/resources/environment.cpp
+#, fuzzy
+msgid "Levels"
+msgstr "IzstrÄdÄtÄji"
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "1"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "2"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "3"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "4"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "5"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "6"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "7"
+msgstr ""
+
+#: scene/resources/environment.cpp
msgid "Bloom"
msgstr ""
@@ -22555,9 +24331,66 @@ msgid "Next Pass"
msgstr "NÄkamÄ cilne"
#: scene/resources/material.cpp
+msgid "Use Shadow To Opacity"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Unshaded"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Vertex Lighting"
+msgstr "Ģenerēt Punktus"
+
+#: scene/resources/material.cpp
+msgid "No Depth Test"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Use Point Size"
+msgstr "Galvenais Skripts:"
+
+#: scene/resources/material.cpp
+msgid "World Triplanar"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Fixed Size"
+msgstr "Galvenais Skripts:"
+
+#: scene/resources/material.cpp
+msgid "Albedo Tex Force sRGB"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Do Not Receive Shadows"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Disable Ambient Light"
+msgstr "Atspējota LineEdit"
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Ensure Correct Normals"
+msgstr "Transformēt vienmērīgo."
+
+#: scene/resources/material.cpp
msgid "Vertex Color"
msgstr ""
+#: scene/resources/material.cpp
+msgid "Use As Albedo"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Is sRGB"
+msgstr ""
+
#: scene/resources/material.cpp servers/visual_server.cpp
msgid "Parameters"
msgstr ""
@@ -22593,6 +24426,11 @@ msgid "Billboard Mode"
msgstr "LineÄla Režīms"
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Billboard Keep Scale"
+msgstr "LineÄla Režīms"
+
+#: scene/resources/material.cpp
msgid "Grow"
msgstr ""
@@ -22602,6 +24440,10 @@ msgid "Grow Amount"
msgstr "Daudzums:"
#: scene/resources/material.cpp
+msgid "Use Alpha Scissor"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Alpha Scissor Threshold"
msgstr ""
@@ -22633,10 +24475,20 @@ msgid "Metallic Specular"
msgstr ""
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Metallic Texture"
+msgstr "Noņemt tekstūru"
+
+#: scene/resources/material.cpp
msgid "Metallic Texture Channel"
msgstr ""
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Roughness Texture"
+msgstr "Noņemt tekstūru"
+
+#: scene/resources/material.cpp
msgid "Roughness Texture Channel"
msgstr ""
@@ -22653,6 +24505,16 @@ msgid "Emission Operator"
msgstr ""
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Emission On UV2"
+msgstr "Redzamas sadursmes formas"
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Emission Texture"
+msgstr "Noņemt tekstūru"
+
+#: scene/resources/material.cpp
msgid "NormalMap"
msgstr ""
@@ -22666,6 +24528,11 @@ msgstr ""
#: scene/resources/material.cpp
#, fuzzy
+msgid "Rim Texture"
+msgstr "Noņemt tekstūru"
+
+#: scene/resources/material.cpp
+#, fuzzy
msgid "Clearcoat"
msgstr "Notīrīt"
@@ -22675,15 +24542,28 @@ msgid "Clearcoat Gloss"
msgstr "Notīrīt pozu"
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Clearcoat Texture"
+msgstr "Redaktora motīvs"
+
+#: scene/resources/material.cpp
msgid "Anisotropy"
msgstr ""
#: scene/resources/material.cpp
+msgid "Anisotropy Flowmap"
+msgstr ""
+
+#: scene/resources/material.cpp
#, fuzzy
msgid "Ambient Occlusion"
msgstr "Šķērslis"
#: scene/resources/material.cpp
+msgid "On UV2"
+msgstr ""
+
+#: scene/resources/material.cpp
#, fuzzy
msgid "Texture Channel"
msgstr "LineÄla Režīms"
@@ -22721,6 +24601,11 @@ msgstr "Pievienot PÄreju"
#: scene/resources/material.cpp
#, fuzzy
+msgid "Transmission Texture"
+msgstr "Pievienot PÄreju"
+
+#: scene/resources/material.cpp
+#, fuzzy
msgid "Refraction"
msgstr "Atdalījums:"
@@ -22738,6 +24623,10 @@ msgid "UV1"
msgstr ""
#: scene/resources/material.cpp
+msgid "Triplanar"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Triplanar Sharpness"
msgstr ""
@@ -22941,6 +24830,16 @@ msgstr "Redaktora motīvs"
msgid "Point Count"
msgstr "Pievienot Ieejas Pieslēgvietu"
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Scale Random"
+msgstr "Mēroga Attiecība:"
+
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Scale Curve"
+msgstr "Mēroga Režīms"
+
#: scene/resources/physics_material.cpp
msgid "Rough"
msgstr ""
@@ -22998,10 +24897,6 @@ msgid "A"
msgstr ""
#: scene/resources/shader.cpp
-msgid "Code"
-msgstr ""
-
-#: scene/resources/shader.cpp
#, fuzzy
msgid "Custom Defines"
msgstr "Atskaņot pielÄgotu ainu"
@@ -23094,15 +24989,6 @@ msgstr ""
#: scene/resources/texture.cpp
#, fuzzy
-msgid "Storage"
-msgstr "Faila saglabÄÅ¡ana:"
-
-#: scene/resources/texture.cpp
-msgid "Lossy Quality"
-msgstr ""
-
-#: scene/resources/texture.cpp
-#, fuzzy
msgid "Load Path"
msgstr "IelÄdÄ“t Sagatavi"
@@ -23228,10 +25114,6 @@ msgstr "NederÄ«gs funkcijas salÄ«dzinÄjums tÄs tipam."
msgid "Fallback Environment"
msgstr ""
-#: scene/resources/world.cpp scene/resources/world_2d.cpp
-msgid "Space"
-msgstr ""
-
#: scene/resources/world.cpp
#, fuzzy
msgid "Scenario"
@@ -23308,10 +25190,37 @@ msgstr ""
msgid "Wet"
msgstr ""
-#: servers/audio/effects/audio_effect_compressor.cpp
-msgid "Threshold"
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "Voice"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+msgid "Delay (ms)"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_phaser.cpp
+msgid "Rate Hz"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#, fuzzy
+msgid "Depth (ms)"
+msgstr "Dziļums"
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+msgid "Level dB"
msgstr ""
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+#: servers/audio/effects/audio_effect_panner.cpp
+#, fuzzy
+msgid "Pan"
+msgstr "Pako"
+
#: servers/audio/effects/audio_effect_compressor.cpp
#: servers/audio/effects/audio_effect_filter.cpp
msgid "Gain"
@@ -23334,20 +25243,6 @@ msgid "Tap 1"
msgstr ""
#: servers/audio/effects/audio_effect_delay.cpp
-msgid "Delay (ms)"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_delay.cpp
-msgid "Level dB"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_delay.cpp
-#: servers/audio/effects/audio_effect_panner.cpp
-#, fuzzy
-msgid "Pan"
-msgstr "Pako"
-
-#: servers/audio/effects/audio_effect_delay.cpp
msgid "Tap 2"
msgstr ""
@@ -23408,10 +25303,6 @@ msgstr ""
msgid "Range Max Hz"
msgstr ""
-#: servers/audio/effects/audio_effect_phaser.cpp
-msgid "Rate Hz"
-msgstr ""
-
#: servers/audio/effects/audio_effect_pitch_shift.cpp
msgid "Oversampling"
msgstr ""
@@ -23427,7 +25318,7 @@ msgid "Predelay"
msgstr ""
#: servers/audio/effects/audio_effect_reverb.cpp
-msgid "(msec)"
+msgid "Msec"
msgstr ""
#: servers/audio/effects/audio_effect_reverb.cpp
diff --git a/editor/translations/mi.po b/editor/translations/mi.po
index 53cfb05c28..c7f6c50c8a 100644
--- a/editor/translations/mi.po
+++ b/editor/translations/mi.po
@@ -11,7 +11,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8-bit\n"
-#: core/bind/core_bind.cpp
+#: core/bind/core_bind.cpp main/main.cpp
msgid "Tablet Driver"
msgstr ""
@@ -102,8 +102,8 @@ msgstr ""
#: core/bind/core_bind.cpp editor/editor_settings.cpp main/main.cpp
#: modules/gdscript/gdscript_editor.cpp modules/gridmap/grid_map.cpp
#: modules/mono/csharp_script.cpp modules/visual_script/visual_script_nodes.cpp
-#: scene/2d/tile_map.cpp scene/3d/camera.cpp scene/gui/control.cpp
-#: scene/gui/graph_edit.cpp scene/main/viewport.cpp
+#: scene/2d/tile_map.cpp scene/3d/camera.cpp scene/3d/light.cpp
+#: scene/gui/control.cpp scene/gui/graph_edit.cpp scene/main/viewport.cpp
#: scene/resources/dynamic_font.cpp scene/resources/navigation_mesh.cpp
#: scene/resources/primitive_meshes.cpp scene/resources/sky.cpp
#: scene/resources/style_box.cpp scene/resources/texture.cpp
@@ -196,8 +196,7 @@ msgid "Data"
msgstr ""
#: core/io/file_access_network.cpp core/register_core_types.cpp
-#: editor/editor_settings.cpp editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp main/main.cpp
+#: editor/editor_settings.cpp main/main.cpp
#: modules/gdscript/language_server/gdscript_language_server.cpp
msgid "Network"
msgstr ""
@@ -454,9 +453,10 @@ msgstr ""
msgid "Relative"
msgstr ""
-#: core/os/input_event.cpp scene/2d/camera_2d.cpp
-#: scene/3d/interpolated_camera.cpp scene/animation/animation_player.cpp
-#: scene/resources/environment.cpp
+#: core/os/input_event.cpp scene/2d/camera_2d.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/interpolated_camera.cpp
+#: scene/animation/animation_player.cpp scene/resources/environment.cpp
+#: scene/resources/particles_material.cpp
msgid "Speed"
msgstr ""
@@ -500,8 +500,9 @@ msgstr ""
msgid "Pitch"
msgstr ""
-#: core/os/input_event.cpp scene/2d/physics_body_2d.cpp
-#: scene/3d/physics_body.cpp
+#: core/os/input_event.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/physics_body_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/3d/physics_body.cpp scene/resources/particles_material.cpp
msgid "Velocity"
msgstr ""
@@ -518,6 +519,8 @@ msgid "Controller Value"
msgstr ""
#: core/project_settings.cpp editor/editor_node.cpp main/main.cpp
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/windows/export/export.cpp
msgid "Application"
msgstr ""
@@ -533,13 +536,16 @@ msgstr ""
#: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp
#: editor/editor_plugin_settings.cpp editor/editor_profiler.cpp
#: editor/project_manager.cpp editor/settings_config_dialog.cpp
-#: modules/gdnative/nativescript/nativescript.cpp scene/2d/area_2d.cpp
-#: scene/3d/area.cpp scene/main/node.cpp
+#: modules/gdnative/nativescript/nativescript.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/osx/export/export.cpp scene/2d/area_2d.cpp scene/3d/area.cpp
+#: scene/main/node.cpp
msgid "Name"
msgstr ""
#: core/project_settings.cpp editor/editor_help.cpp
-#: modules/visual_script/visual_script_nodes.cpp
+#: modules/visual_script/visual_script_nodes.cpp platform/uwp/export/export.cpp
+#: platform/windows/export/export.cpp
msgid "Description"
msgstr ""
@@ -575,7 +581,7 @@ msgid "Custom User Dir Name"
msgstr ""
#: core/project_settings.cpp editor/animation_track_editor.cpp
-#: editor/editor_audio_buses.cpp servers/audio_server.cpp
+#: editor/editor_audio_buses.cpp main/main.cpp servers/audio_server.cpp
msgid "Audio"
msgstr ""
@@ -726,10 +732,13 @@ msgstr ""
msgid "Sharpen Intensity"
msgstr ""
-#: core/project_settings.cpp editor/editor_node.cpp editor/editor_settings.cpp
-#: editor/plugins/script_editor_plugin.cpp editor/project_export.cpp
-#: main/main.cpp modules/gdscript/gdscript.cpp
-#: modules/visual_script/visual_script.cpp scene/3d/room_manager.cpp
+#: core/project_settings.cpp editor/editor_export.cpp editor/editor_node.cpp
+#: editor/editor_settings.cpp editor/plugins/script_editor_plugin.cpp
+#: editor/project_export.cpp main/main.cpp modules/gdscript/gdscript.cpp
+#: modules/visual_script/visual_script.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp scene/3d/room_manager.cpp
#: scene/main/scene_tree.cpp scene/resources/shape_2d.cpp
#: servers/visual_server.cpp
msgid "Debug"
@@ -951,6 +960,7 @@ msgid "Subsurface Scattering"
msgstr ""
#: drivers/gles3/rasterizer_scene_gles3.cpp
+#: editor/import/resource_importer_texture.cpp
#: editor/plugins/spatial_editor_plugin.cpp modules/gltf/gltf_node.cpp
#: modules/gridmap/grid_map.cpp scene/2d/cpu_particles_2d.cpp
#: scene/2d/node_2d.cpp scene/2d/parallax_layer.cpp scene/2d/polygon_2d.cpp
@@ -1246,6 +1256,7 @@ msgid "Editors"
msgstr ""
#: editor/animation_track_editor.cpp editor/editor_settings.cpp
+#: editor/import/resource_importer_scene.cpp
#: editor/plugins/animation_player_editor_plugin.cpp editor/scene_tree_dock.cpp
#: scene/2d/animated_sprite.cpp scene/2d/cpu_particles_2d.cpp
#: scene/2d/sprite.cpp scene/3d/cpu_particles.cpp scene/3d/sprite_3d.cpp
@@ -1462,14 +1473,14 @@ msgstr ""
msgid "Seconds"
msgstr ""
-#: editor/animation_track_editor.cpp
+#: editor/animation_track_editor.cpp editor/import/resource_importer_scene.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp main/main.cpp
#: scene/resources/texture.cpp
msgid "FPS"
msgstr ""
#: editor/animation_track_editor.cpp editor/editor_plugin_settings.cpp
-#: editor/editor_resource_picker.cpp
+#: editor/editor_resource_picker.cpp editor/import/resource_importer_wav.cpp
#: editor/plugins/polygon_2d_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
@@ -2411,7 +2422,9 @@ msgid "Remove Autoload"
msgstr ""
#: editor/editor_autoload_settings.cpp editor/editor_plugin_settings.cpp
-#: modules/gdscript/gdscript.cpp scene/2d/polygon_2d.cpp scene/3d/area.cpp
+#: modules/gdscript/gdscript.cpp platform/android/export/export_plugin.cpp
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#: scene/2d/polygon_2d.cpp scene/3d/area.cpp scene/3d/physics_joint.cpp
#: scene/3d/reflection_probe.cpp scene/main/canvas_layer.cpp
#: scene/resources/material.cpp servers/visual_server.cpp
msgid "Enable"
@@ -2564,6 +2577,55 @@ msgstr ""
#: editor/editor_export.cpp platform/android/export/export_plugin.cpp
#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
+msgid "Custom Template"
+msgstr ""
+
+#: editor/editor_export.cpp editor/project_export.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp
+msgid "Release"
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Binary Format"
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "64 Bits"
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Embed PCK"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "Texture Format"
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "BPTC"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "S3TC"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "ETC"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "ETC2"
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "No BPTC Fallbacks"
+msgstr ""
+
+#: editor/editor_export.cpp platform/android/export/export_plugin.cpp
+#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
msgid "Custom debug template not found."
msgstr ""
@@ -2737,6 +2799,7 @@ msgid "Make Current"
msgstr ""
#: editor/editor_feature_profile.cpp editor/editor_node.cpp
+#: editor/import/resource_importer_scene.cpp
#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
msgid "Import"
msgstr ""
@@ -2861,8 +2924,11 @@ msgstr ""
msgid "Display Mode"
msgstr ""
-#: editor/editor_file_dialog.cpp main/main.cpp modules/csg/csg_shape.cpp
-#: modules/visual_script/visual_script_nodes.cpp
+#: editor/editor_file_dialog.cpp
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+#: editor/import/resource_importer_wav.cpp main/main.cpp
+#: modules/csg/csg_shape.cpp modules/visual_script/visual_script_nodes.cpp
#: modules/visual_script/visual_script_yield_nodes.cpp scene/2d/light_2d.cpp
#: scene/2d/physics_body_2d.cpp scene/2d/tile_map.cpp
#: scene/3d/baked_lightmap.cpp scene/3d/light.cpp scene/3d/physics_body.cpp
@@ -2994,7 +3060,9 @@ msgstr ""
msgid "Reimport Missing Imported Files"
msgstr ""
-#: editor/editor_help.cpp
+#: editor/editor_help.cpp scene/2d/camera_2d.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/resources/dynamic_font.cpp
+#: scene/resources/style_box.cpp
msgid "Top"
msgstr ""
@@ -3046,6 +3114,7 @@ msgid "Fonts"
msgstr ""
#: editor/editor_help.cpp editor/plugins/theme_editor_plugin.cpp
+#: platform/iphone/export/export.cpp
msgid "Icons"
msgstr ""
@@ -3204,7 +3273,9 @@ msgstr ""
msgid "Pin value [Disabled because '%s' is editor-only]"
msgstr ""
-#: editor/editor_inspector.cpp editor/scene_tree_dock.cpp
+#: editor/editor_inspector.cpp
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+#: editor/scene_tree_dock.cpp
#: modules/visual_script/visual_script_func_nodes.cpp
#: modules/visual_script/visual_script_nodes.cpp
#: modules/visual_script/visual_script_property_selector.cpp
@@ -3515,6 +3586,14 @@ msgid "Quick Open Script..."
msgstr ""
#: editor/editor_node.cpp
+msgid "Save & Reload"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Save changes to '%s' before reloading?"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "Save & Close"
msgstr ""
@@ -3625,6 +3704,10 @@ msgid "Open Project Manager?"
msgstr ""
#: editor/editor_node.cpp
+msgid "Save changes to the following scene(s) before reloading?"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "Save & Quit"
msgstr ""
@@ -3864,7 +3947,7 @@ msgid "Update Vital Only"
msgstr ""
#: editor/editor_node.cpp
-msgid "Translate Properties"
+msgid "Localize Settings"
msgstr ""
#: editor/editor_node.cpp
@@ -3880,7 +3963,7 @@ msgid "Inspector"
msgstr ""
#: editor/editor_node.cpp
-msgid "Capitalize Properties"
+msgid "Default Property Name Style"
msgstr ""
#: editor/editor_node.cpp
@@ -4439,7 +4522,9 @@ msgstr ""
msgid "Update"
msgstr ""
-#: editor/editor_plugin_settings.cpp
+#: editor/editor_plugin_settings.cpp platform/android/export/export_plugin.cpp
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp
msgid "Version"
msgstr ""
@@ -5374,7 +5459,7 @@ msgstr ""
msgid "Rect Custom Position"
msgstr ""
-#: editor/editor_settings.cpp
+#: editor/editor_settings.cpp platform/android/export/export_plugin.cpp
msgid "Screen"
msgstr ""
@@ -5397,6 +5482,19 @@ msgid "Editor SSL Certificates"
msgstr ""
#: editor/editor_settings.cpp
+msgid "HTTP Proxy"
+msgstr ""
+
+#: editor/editor_settings.cpp
+msgid "Host"
+msgstr ""
+
+#: editor/editor_settings.cpp editor/fileserver/editor_file_server.cpp
+#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp
+msgid "Port"
+msgstr ""
+
+#: editor/editor_settings.cpp
msgid "Project Manager"
msgstr ""
@@ -5436,7 +5534,8 @@ msgstr ""
msgid "String Color"
msgstr ""
-#: editor/editor_settings.cpp
+#: editor/editor_settings.cpp platform/javascript/export/export.cpp
+#: platform/uwp/export/export.cpp
msgid "Background Color"
msgstr ""
@@ -5594,22 +5693,6 @@ msgid "Starting the download..."
msgstr ""
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "HTTP Proxy"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Host"
-msgstr ""
-
-#: editor/export_template_manager.cpp editor/fileserver/editor_file_server.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp main/main.cpp
-#: modules/mono/mono_gd/gd_mono.cpp
-msgid "Port"
-msgstr ""
-
-#: editor/export_template_manager.cpp
msgid "Error requesting URL:"
msgstr ""
@@ -5851,6 +5934,7 @@ msgstr ""
#: editor/fileserver/editor_file_server.cpp
#: editor/plugins/version_control_editor_plugin.cpp
+#: platform/uwp/export/export.cpp platform/windows/export/export.cpp
msgid "Password"
msgstr ""
@@ -6214,6 +6298,105 @@ msgstr ""
msgid "Use Ambient"
msgstr ""
+#: editor/import/resource_importer_bitmask.cpp
+msgid "Create From"
+msgstr ""
+
+#: editor/import/resource_importer_bitmask.cpp
+#: servers/audio/effects/audio_effect_compressor.cpp
+msgid "Threshold"
+msgstr ""
+
+#: editor/import/resource_importer_csv_translation.cpp
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_scene.cpp
+#: editor/import/resource_importer_texture.cpp
+#: editor/import/resource_importer_wav.cpp scene/3d/gi_probe.cpp
+msgid "Compress"
+msgstr ""
+
+#: editor/import/resource_importer_csv_translation.cpp
+msgid "Delimiter"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+msgid "No BPTC If RGB"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/sprite_3d.cpp
+#: scene/resources/material.cpp scene/resources/particles_material.cpp
+#: scene/resources/texture.cpp
+msgid "Flags"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/animation/tween.cpp
+#: scene/resources/texture.cpp
+msgid "Repeat"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/2d/light_2d.cpp
+#: scene/gui/control.cpp scene/resources/navigation_mesh.cpp
+msgid "Filter"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+msgid "Mipmaps"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+msgid "Anisotropic"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+msgid "sRGB"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+msgid "Slices"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
+#: scene/resources/style_box.cpp
+msgid "Horizontal"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
+#: scene/resources/style_box.cpp
+msgid "Vertical"
+msgstr ""
+
+#: editor/import/resource_importer_obj.cpp
+msgid "Generate Tangents"
+msgstr ""
+
+#: editor/import/resource_importer_obj.cpp
+msgid "Scale Mesh"
+msgstr ""
+
+#: editor/import/resource_importer_obj.cpp
+msgid "Offset Mesh"
+msgstr ""
+
+#: editor/import/resource_importer_obj.cpp
+#: editor/import/resource_importer_scene.cpp
+msgid "Octahedral Compression"
+msgstr ""
+
+#: editor/import/resource_importer_obj.cpp
+msgid "Optimize Mesh Flags"
+msgstr ""
+
#: editor/import/resource_importer_scene.cpp
msgid "Import as Single Scene"
msgstr ""
@@ -6254,6 +6437,131 @@ msgstr ""
msgid "Import as Multiple Scenes+Materials"
msgstr ""
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+#: scene/3d/physics_joint.cpp
+msgid "Nodes"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Root Type"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Root Name"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Root Scale"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Custom Script"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp scene/resources/texture.cpp
+msgid "Storage"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Use Legacy Names"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+msgid "Materials"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp platform/osx/export/export.cpp
+msgid "Location"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Keep On Reimport"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+msgid "Meshes"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Ensure Tangents"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Light Baking"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Lightmap Texel Size"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+msgid "Skins"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Use Named Skins"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "External Files"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Store In Subdir"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Filter Script"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Keep Custom Tracks"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Optimizer"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp main/main.cpp
+#: modules/mono/mono_gd/gd_mono.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp scene/2d/camera_2d.cpp scene/2d/light_2d.cpp
+#: scene/2d/navigation_polygon.cpp scene/2d/ray_cast_2d.cpp scene/2d/sprite.cpp
+#: scene/2d/y_sort.cpp scene/3d/audio_stream_player_3d.cpp
+#: scene/3d/baked_lightmap.cpp scene/3d/interpolated_camera.cpp
+#: scene/3d/light.cpp scene/3d/navigation_mesh_instance.cpp
+#: scene/3d/physics_joint.cpp scene/3d/ray_cast.cpp scene/3d/sprite_3d.cpp
+#: scene/gui/graph_edit.cpp scene/gui/rich_text_label.cpp
+#: scene/resources/curve.cpp scene/resources/environment.cpp
+#: scene/resources/material.cpp
+msgid "Enabled"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Max Linear Error"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Max Angular Error"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Max Angle"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Remove Unused Tracks"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Clips"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/particles_2d.cpp scene/3d/area.cpp scene/3d/cpu_particles.cpp
+#: scene/3d/particles.cpp scene/resources/environment.cpp
+msgid "Amount"
+msgstr ""
+
#: editor/import/resource_importer_scene.cpp
#: editor/plugins/mesh_library_editor_plugin.cpp
msgid "Import Scene"
@@ -6295,12 +6603,132 @@ msgstr ""
msgid "Saving..."
msgstr ""
+#: editor/import/resource_importer_texture.cpp scene/resources/texture.cpp
+msgid "Lossy Quality"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "HDR Mode"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "BPTC LDR"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/mesh_instance_2d.cpp scene/2d/multimesh_instance_2d.cpp
+#: scene/2d/particles_2d.cpp scene/2d/sprite.cpp scene/resources/style_box.cpp
+msgid "Normal Map"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Process"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Fix Alpha Border"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Premult Alpha"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Hdr As Srgb"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Invert Color"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Normal Map Invert Y"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
+#: scene/audio/audio_stream_player.cpp scene/gui/video_player.cpp
+msgid "Stream"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Size Limit"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Detect 3D"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "SVG"
+msgstr ""
+
#: editor/import/resource_importer_texture.cpp
msgid ""
"Warning, no suitable PC VRAM compression enabled in Project Settings. This "
"texture will not display correctly on PC."
msgstr ""
+#: editor/import/resource_importer_texture_atlas.cpp
+msgid "Atlas File"
+msgstr ""
+
+#: editor/import/resource_importer_texture_atlas.cpp
+msgid "Import Mode"
+msgstr ""
+
+#: editor/import/resource_importer_texture_atlas.cpp
+msgid "Crop To Region"
+msgstr ""
+
+#: editor/import/resource_importer_texture_atlas.cpp
+msgid "Trim Alpha Border From Region"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp scene/2d/physics_body_2d.cpp
+msgid "Force"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+msgid "8 Bit"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp main/main.cpp
+#: modules/mono/editor/csharp_project.cpp modules/mono/mono_gd/gd_mono.cpp
+msgid "Mono"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+msgid "Max Rate"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+msgid "Max Rate Hz"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+msgid "Trim"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+msgid "Normalize"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+msgid "Loop Mode"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+msgid "Loop Begin"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+msgid "Loop End"
+msgstr ""
+
#: editor/import_defaults_editor.cpp
msgid "Select Importer"
msgstr ""
@@ -6369,6 +6797,26 @@ msgid "Failed to load resource."
msgstr ""
#: editor/inspector_dock.cpp
+msgid "Property Name Style"
+msgstr ""
+
+#: editor/inspector_dock.cpp scene/gui/color_picker.cpp
+msgid "Raw"
+msgstr ""
+
+#: editor/inspector_dock.cpp
+msgid "Capitalized"
+msgstr ""
+
+#: editor/inspector_dock.cpp
+msgid "Localized"
+msgstr ""
+
+#: editor/inspector_dock.cpp
+msgid "Localization not available for current language."
+msgstr ""
+
+#: editor/inspector_dock.cpp
msgid "Copy Properties"
msgstr ""
@@ -7397,18 +7845,22 @@ msgid "License (Z-A)"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
+msgctxt "Pagination"
msgid "First"
msgstr ""
-#: editor/plugins/asset_library_editor_plugin.cpp scene/gui/control.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgctxt "Pagination"
msgid "Previous"
msgstr ""
-#: editor/plugins/asset_library_editor_plugin.cpp scene/gui/control.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgctxt "Pagination"
msgid "Next"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
+msgctxt "Pagination"
msgid "Last"
msgstr ""
@@ -7642,19 +8094,19 @@ msgid ""
"margins."
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Top Left"
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Top Right"
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Bottom Right"
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Bottom Left"
msgstr ""
@@ -8347,6 +8799,18 @@ msgstr ""
msgid "Gradient Edited"
msgstr ""
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+msgid "Swap GradientTexture2D Fill Points"
+msgstr ""
+
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+msgid "Swap Gradient Fill Points"
+msgstr ""
+
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+msgid "Toggle Grid Snap"
+msgstr ""
+
#: editor/plugins/item_list_editor_plugin.cpp
msgid "Item %d"
msgstr ""
@@ -8560,8 +9024,8 @@ msgid ""
"%s"
msgstr ""
-#: editor/plugins/mesh_library_editor_plugin.cpp modules/gridmap/grid_map.cpp
-msgid "Mesh Library"
+#: editor/plugins/mesh_library_editor_plugin.cpp
+msgid "MeshLibrary"
msgstr ""
#: editor/plugins/mesh_library_editor_plugin.cpp
@@ -9529,8 +9993,8 @@ msgstr ""
msgid "Source"
msgstr ""
-#: editor/plugins/script_text_editor.cpp scene/3d/interpolated_camera.cpp
-#: scene/animation/skeleton_ik.cpp
+#: editor/plugins/script_text_editor.cpp platform/uwp/export/export.cpp
+#: scene/3d/interpolated_camera.cpp scene/animation/skeleton_ik.cpp
msgid "Target"
msgstr ""
@@ -10487,7 +10951,9 @@ msgstr ""
#: editor/plugins/sprite_frames_editor_plugin.cpp
#: modules/gltf/gltf_animation.cpp modules/minimp3/audio_stream_mp3.cpp
-#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp scene/2d/path_2d.cpp
+#: modules/minimp3/resource_importer_mp3.cpp
+#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp
+#: modules/stb_vorbis/resource_importer_ogg_vorbis.cpp scene/2d/path_2d.cpp
#: scene/3d/path.cpp scene/resources/animation.cpp scene/resources/material.cpp
msgid "Loop"
msgstr ""
@@ -11347,8 +11813,9 @@ msgstr ""
msgid "Priority"
msgstr ""
-#: editor/plugins/tile_set_editor_plugin.cpp main/main.cpp scene/gui/button.cpp
-#: scene/gui/item_list.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp main/main.cpp
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#: scene/gui/button.cpp scene/gui/item_list.cpp
msgid "Icon"
msgstr ""
@@ -12627,10 +13094,6 @@ msgid ""
msgstr ""
#: editor/project_export.cpp
-msgid "Release"
-msgstr ""
-
-#: editor/project_export.cpp
msgid "Exporting All"
msgstr ""
@@ -14390,6 +14853,7 @@ msgid "Change AudioStreamPlayer3D Emission Angle"
msgstr ""
#: editor/spatial_editor_gizmos.cpp modules/gltf/gltf_node.cpp
+#: platform/osx/export/export.cpp
msgid "Camera"
msgstr ""
@@ -14650,7 +15114,8 @@ msgstr ""
msgid "Use Nvidia Rect Flicker Workaround"
msgstr ""
-#: main/main.cpp platform/uwp/os_uwp.cpp
+#: main/main.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp platform/uwp/os_uwp.cpp
msgid "Display"
msgstr ""
@@ -14705,18 +15170,6 @@ msgstr ""
msgid "Allowed"
msgstr ""
-#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp scene/2d/camera_2d.cpp
-#: scene/2d/light_2d.cpp scene/2d/navigation_polygon.cpp
-#: scene/2d/ray_cast_2d.cpp scene/2d/sprite.cpp scene/2d/y_sort.cpp
-#: scene/3d/audio_stream_player_3d.cpp scene/3d/baked_lightmap.cpp
-#: scene/3d/interpolated_camera.cpp scene/3d/light.cpp
-#: scene/3d/navigation_mesh_instance.cpp scene/3d/ray_cast.cpp
-#: scene/3d/sprite_3d.cpp scene/gui/graph_edit.cpp
-#: scene/gui/rich_text_label.cpp scene/resources/curve.cpp
-#: scene/resources/environment.cpp
-msgid "Enabled"
-msgstr ""
-
#: main/main.cpp
msgid "Intended Usage"
msgstr ""
@@ -14745,12 +15198,13 @@ msgstr ""
msgid "Handheld"
msgstr ""
-#: main/main.cpp
+#: main/main.cpp platform/javascript/export/export.cpp
+#: platform/uwp/export/export.cpp
msgid "Orientation"
msgstr ""
#: main/main.cpp scene/gui/scroll_container.cpp scene/gui/text_edit.cpp
-#: scene/main/scene_tree.cpp
+#: scene/main/scene_tree.cpp scene/register_scene_types.cpp
msgid "Common"
msgstr ""
@@ -14789,7 +15243,7 @@ msgid "Verbose stdout"
msgstr ""
#: main/main.cpp
-msgid "Frame Delay (msec)"
+msgid "Frame Delay Msec"
msgstr ""
#: main/main.cpp
@@ -14906,11 +15360,6 @@ msgstr ""
msgid "Tooltip Position Offset"
msgstr ""
-#: main/main.cpp modules/mono/editor/csharp_project.cpp
-#: modules/mono/mono_gd/gd_mono.cpp
-msgid "Mono"
-msgstr ""
-
#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp
msgid "Debugger Agent"
msgstr ""
@@ -15428,7 +15877,7 @@ msgstr ""
msgid "Intensity"
msgstr ""
-#: modules/gltf/gltf_light.cpp scene/2d/light_2d.cpp
+#: modules/gltf/gltf_light.cpp scene/2d/light_2d.cpp scene/3d/light.cpp
msgid "Range"
msgstr ""
@@ -15558,10 +16007,6 @@ msgstr ""
msgid "Use Named Skin Binds"
msgstr ""
-#: modules/gltf/gltf_state.cpp scene/3d/physics_joint.cpp
-msgid "Nodes"
-msgstr ""
-
#: modules/gltf/gltf_state.cpp
msgid "Buffer Views"
msgstr ""
@@ -15571,14 +16016,6 @@ msgid "Accessors"
msgstr ""
#: modules/gltf/gltf_state.cpp
-msgid "Meshes"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp
-msgid "Materials"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp
msgid "Scene Name"
msgstr ""
@@ -15592,15 +16029,11 @@ msgstr ""
msgid "Textures"
msgstr ""
-#: modules/gltf/gltf_state.cpp
+#: modules/gltf/gltf_state.cpp platform/uwp/export/export.cpp
msgid "Images"
msgstr ""
#: modules/gltf/gltf_state.cpp
-msgid "Skins"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp
msgid "Cameras"
msgstr ""
@@ -15629,10 +16062,14 @@ msgid "Src Image"
msgstr ""
#: modules/gridmap/grid_map.cpp
-msgid "Physics Material"
+msgid "Mesh Library"
msgstr ""
#: modules/gridmap/grid_map.cpp
+msgid "Physics Material"
+msgstr ""
+
+#: modules/gridmap/grid_map.cpp scene/3d/visual_instance.cpp
msgid "Use In Baked Light"
msgstr ""
@@ -15659,6 +16096,7 @@ msgstr ""
#: modules/gridmap/grid_map.cpp scene/2d/collision_object_2d.cpp
#: scene/2d/tile_map.cpp scene/3d/collision_object.cpp scene/3d/soft_body.cpp
+#: scene/resources/material.cpp
msgid "Mask"
msgstr ""
@@ -15839,7 +16277,9 @@ msgid "Ultra Quality Ray Count"
msgstr ""
#: modules/minimp3/audio_stream_mp3.cpp
+#: modules/minimp3/resource_importer_mp3.cpp
#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp
+#: modules/stb_vorbis/resource_importer_ogg_vorbis.cpp
msgid "Loop Offset"
msgstr ""
@@ -16861,6 +17301,162 @@ msgid "The package must have at least one '.' separator."
msgstr ""
#: platform/android/export/export_plugin.cpp
+msgid "Use Custom Build"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Export Format"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Keystore"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Debug User"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+msgid "Debug Password"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Release User"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Release Password"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "One Click Deploy"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Clear Previous Install"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp scene/resources/shader.cpp
+msgid "Code"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Min SDK"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Target SDK"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+msgid "Package"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+msgid "Unique Name"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Signed"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Classify As Game"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Retain Data On Uninstall"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Exclude From Recents"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Graphics"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "OpenGL Debug"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "XR Features"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "XR Mode"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Hand Tracking"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Hand Tracking Frequency"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Passthrough"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Immersive Mode"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Support Small"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Support Normal"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Support Large"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Support Xlarge"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "User Data Backup"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Allow"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+msgid "Command Line"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+msgid "Extra Args"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "APK Expansion"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Salt"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Public Key"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Permissions"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Custom Permissions"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
msgid "Select device from the list"
msgstr ""
@@ -17146,6 +17742,159 @@ msgid "The character '%s' is not allowed in Identifier."
msgstr ""
#: platform/iphone/export/export.cpp
+msgid "App Store Team ID"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Provisioning Profile UUID Debug"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Code Sign Identity Debug"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Export Method Debug"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Provisioning Profile UUID Release"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Code Sign Identity Release"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Export Method Release"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Targeted Device Family"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Info"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Identifier"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Signature"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Short Version"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/windows/export/export.cpp
+msgid "Copyright"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Capabilities"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Access Wi-Fi"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Push Notifications"
+msgstr ""
+
+#: platform/iphone/export/export.cpp scene/3d/baked_lightmap.cpp
+msgid "User Data"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Accessible From Files App"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Accessible From Itunes Sharing"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Privacy"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Camera Usage Description"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Microphone Usage Description"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Photolibrary Usage Description"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPhone 120 X 120"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPhone 180 X 180"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 76 X 76"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 152 X 152"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 167 X 167"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "App Store 1024 X 1024"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Spotlight 40 X 40"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Spotlight 80 X 80"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Storyboard"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Use Launch Screen Storyboard"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Image Scale Mode"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Custom Image @2x"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Custom Image @3x"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Use Custom BG Color"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Custom BG Color"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
msgid "App Store Team ID not specified - cannot configure the project."
msgstr ""
@@ -17182,6 +17931,74 @@ msgid "Could not read file:"
msgstr ""
#: platform/javascript/export/export.cpp
+msgid "Variant"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Export Type"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "VRAM Texture Compression"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "For Desktop"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "For Mobile"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Html"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Export Icon"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Custom Html Shell"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Head Include"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Canvas Resize Policy"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Focus Canvas On Start"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Experimental Virtual Keyboard"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Progressive Web App"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Offline Page"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 144 X 144"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 180 X 180"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 512 X 512"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
msgid "Could not read HTML shell:"
msgstr ""
@@ -17286,6 +18103,175 @@ msgid "Unknown object type."
msgstr ""
#: platform/osx/export/export.cpp
+msgid "App Category"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "High Res"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Location Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Address Book Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Calendar Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Photos Library Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Desktop Folder Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Documents Folder Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Downloads Folder Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Network Volumes Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Removable Volumes Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+msgid "Codesign"
+msgstr ""
+
+#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
+#: platform/windows/export/export.cpp
+msgid "Identity"
+msgstr ""
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+msgid "Timestamp"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Hardened Runtime"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Replace Existing Signature"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Entitlements"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Custom File"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Allow JIT Code Execution"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Allow Unsigned Executable Memory"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Allow Dyld Environment Variables"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Disable Library Validation"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Audio Input"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Address Book"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Calendars"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Photos Library"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Apple Events"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Debugging"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "App Sandbox"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Network Server"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Network Client"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Device Usb"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Device Bluetooth"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Files Downloads"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Files Pictures"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Files Music"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Files Movies"
+msgstr ""
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+msgid "Custom Options"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Apple ID Name"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Apple ID Password"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Apple Team ID"
+msgstr ""
+
+#: platform/osx/export/export.cpp
msgid ""
"Note: The notarization process generally takes less than an hour. When the "
"process is completed, you'll receive an email."
@@ -17475,6 +18461,122 @@ msgid "Force Builtin Codesign"
msgstr ""
#: platform/uwp/export/export.cpp
+msgid "Architecture"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Display Name"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Short Name"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Publisher"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Publisher Display Name"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Product Guid"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Publisher Guid"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Signing"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Certificate"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Algorithm"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Major"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Minor"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Build"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Revision"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Landscape"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Portrait"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Landscape Flipped"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Portrait Flipped"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Store Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 44 X 44 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 71 X 71 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 150 X 150 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 310 X 310 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Wide 310 X 150 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Splash Screen"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Tiles"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Square 150 X 150"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Wide 310 X 150"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Square 310 X 310"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
msgid "Invalid package short name."
msgstr ""
@@ -17539,11 +18641,43 @@ msgid "Debug Certificate"
msgstr ""
#: platform/uwp/export/export.cpp
-msgid "Debug Password"
+msgid "Debug Algorithm"
msgstr ""
-#: platform/uwp/export/export.cpp
-msgid "Debug Algorithm"
+#: platform/windows/export/export.cpp
+msgid "Identity Type"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Timestamp Server URL"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Digest Algorithm"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "File Version"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Product Version"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Company Name"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Product Name"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "File Description"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Trademarks"
msgstr ""
#: platform/windows/export/export.cpp
@@ -17610,12 +18744,14 @@ msgstr ""
msgid "Centered"
msgstr ""
-#: scene/2d/animated_sprite.cpp scene/2d/camera_2d.cpp scene/2d/light_2d.cpp
+#: scene/2d/animated_sprite.cpp scene/2d/camera_2d.cpp
+#: scene/2d/cpu_particles_2d.cpp scene/2d/light_2d.cpp
#: scene/2d/parallax_background.cpp scene/2d/parallax_layer.cpp
#: scene/2d/path_2d.cpp scene/2d/polygon_2d.cpp scene/2d/sprite.cpp
-#: scene/3d/path.cpp scene/3d/physics_body.cpp scene/3d/sprite_3d.cpp
-#: scene/gui/graph_node.cpp scene/gui/rich_text_effect.cpp
-#: scene/main/canvas_layer.cpp scene/resources/material.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/path.cpp scene/3d/physics_body.cpp
+#: scene/3d/sprite_3d.cpp scene/gui/graph_node.cpp
+#: scene/gui/rich_text_effect.cpp scene/main/canvas_layer.cpp
+#: scene/resources/material.cpp scene/resources/particles_material.cpp
#: scene/resources/style_box.cpp
msgid "Offset"
msgstr ""
@@ -17679,11 +18815,6 @@ msgstr ""
msgid "Override"
msgstr ""
-#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
-#: scene/audio/audio_stream_player.cpp scene/gui/video_player.cpp
-msgid "Stream"
-msgstr ""
-
#: scene/2d/audio_stream_player_2d.cpp scene/audio/audio_stream_player.cpp
#: scene/gui/video_player.cpp servers/audio/effects/audio_effect_amplify.cpp
msgid "Volume dB"
@@ -17707,12 +18838,12 @@ msgid "Stream Paused"
msgstr ""
#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
-#: scene/3d/reflection_probe.cpp scene/3d/visual_instance.cpp
-#: scene/resources/material.cpp
+#: scene/3d/light.cpp scene/3d/reflection_probe.cpp
+#: scene/3d/visual_instance.cpp scene/resources/material.cpp
msgid "Max Distance"
msgstr ""
-#: scene/2d/audio_stream_player_2d.cpp
+#: scene/2d/audio_stream_player_2d.cpp scene/3d/light.cpp
msgid "Attenuation"
msgstr ""
@@ -17759,6 +18890,21 @@ msgstr ""
msgid "Limit"
msgstr ""
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/style_box.cpp
+msgid "Left"
+msgstr ""
+
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/style_box.cpp
+msgid "Right"
+msgstr ""
+
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/dynamic_font.cpp scene/resources/style_box.cpp
+msgid "Bottom"
+msgstr ""
+
#: scene/2d/camera_2d.cpp
msgid "Smoothed"
msgstr ""
@@ -17952,12 +19098,6 @@ msgstr ""
msgid "Emitting"
msgstr ""
-#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp scene/3d/area.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
-#: scene/resources/environment.cpp
-msgid "Amount"
-msgstr ""
-
#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp
#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
msgid "Lifetime"
@@ -18017,17 +19157,12 @@ msgstr ""
#: scene/2d/mesh_instance_2d.cpp scene/2d/multimesh_instance_2d.cpp
#: scene/2d/particles_2d.cpp scene/2d/polygon_2d.cpp scene/2d/sprite.cpp
#: scene/3d/sprite_3d.cpp scene/gui/nine_patch_rect.cpp
-#: scene/gui/texture_rect.cpp scene/resources/sky.cpp
-#: scene/resources/style_box.cpp scene/resources/visual_shader_nodes.cpp
+#: scene/gui/texture_rect.cpp scene/resources/material.cpp
+#: scene/resources/sky.cpp scene/resources/style_box.cpp
+#: scene/resources/visual_shader_nodes.cpp
msgid "Texture"
msgstr ""
-#: scene/2d/cpu_particles_2d.cpp scene/2d/mesh_instance_2d.cpp
-#: scene/2d/multimesh_instance_2d.cpp scene/2d/particles_2d.cpp
-#: scene/2d/sprite.cpp scene/resources/style_box.cpp
-msgid "Normal Map"
-msgstr ""
-
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
msgid "Emission Shape"
@@ -18047,9 +19182,8 @@ msgid "Normals"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/3d/sprite_3d.cpp scene/resources/material.cpp
-#: scene/resources/particles_material.cpp scene/resources/texture.cpp
-msgid "Flags"
+#: scene/resources/particles_material.cpp
+msgid "Align Y"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
@@ -18069,6 +19203,11 @@ msgid "Initial Velocity"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Velocity Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp servers/physics_2d_server.cpp
#: servers/physics_server.cpp
msgid "Angular Velocity"
@@ -18076,6 +19215,11 @@ msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+msgid "Velocity Curve"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
msgid "Orbit Velocity"
msgstr ""
@@ -18086,6 +19230,21 @@ msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+msgid "Accel"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Accel Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Accel Curve"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
msgid "Radial Accel"
msgstr ""
@@ -18095,19 +19254,51 @@ msgid "Tangential Accel"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/2d/joints_2d.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/vehicle_body.cpp
-#: scene/resources/particles_material.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/physics_joint.cpp
+#: scene/3d/vehicle_body.cpp scene/resources/particles_material.cpp
#: servers/audio/effects/audio_effect_reverb.cpp
msgid "Damping"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+msgid "Damping Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Damping Curve"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp scene/3d/light.cpp
+#: scene/resources/particles_material.cpp
msgid "Angle"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+msgid "Angle Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Angle Curve"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+msgid "Scale Amount"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+msgid "Scale Amount Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+msgid "Scale Amount Curve"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
msgid "Color Ramp"
msgstr ""
@@ -18121,6 +19312,41 @@ msgstr ""
msgid "Hue Variation"
msgstr ""
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Variation"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Variation Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Variation Curve"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Speed Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Speed Curve"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Offset Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Offset Curve"
+msgstr ""
+
#: scene/2d/joints_2d.cpp
msgid "Node A and Node B must be PhysicsBody2Ds"
msgstr ""
@@ -18150,6 +19376,7 @@ msgid "Node B"
msgstr ""
#: scene/2d/joints_2d.cpp scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp
+#: scene/3d/light.cpp scene/3d/physics_joint.cpp
#: scene/resources/environment.cpp
msgid "Bias"
msgstr ""
@@ -18158,7 +19385,7 @@ msgstr ""
msgid "Disable Collision"
msgstr ""
-#: scene/2d/joints_2d.cpp
+#: scene/2d/joints_2d.cpp scene/3d/physics_joint.cpp
msgid "Softness"
msgstr ""
@@ -18175,7 +19402,7 @@ msgstr ""
msgid "Rest Length"
msgstr ""
-#: scene/2d/joints_2d.cpp scene/3d/vehicle_body.cpp
+#: scene/2d/joints_2d.cpp scene/3d/physics_joint.cpp scene/3d/vehicle_body.cpp
msgid "Stiffness"
msgstr ""
@@ -18194,7 +19421,7 @@ msgid "Texture Scale"
msgstr ""
#: scene/2d/light_2d.cpp scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp
-#: scene/resources/environment.cpp scene/resources/sky.cpp
+#: scene/3d/light.cpp scene/resources/environment.cpp scene/resources/sky.cpp
msgid "Energy"
msgstr ""
@@ -18230,11 +19457,6 @@ msgstr ""
msgid "Gradient Length"
msgstr ""
-#: scene/2d/light_2d.cpp scene/gui/control.cpp
-#: scene/resources/navigation_mesh.cpp
-msgid "Filter"
-msgstr ""
-
#: scene/2d/light_2d.cpp
msgid "Filter Smooth"
msgstr ""
@@ -18606,10 +19828,6 @@ msgid "Applied Forces"
msgstr ""
#: scene/2d/physics_body_2d.cpp
-msgid "Force"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp
msgid "Torque"
msgstr ""
@@ -18622,7 +19840,7 @@ msgid "Sync To Physics"
msgstr ""
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-msgid "Moving platform"
+msgid "Moving Platform"
msgstr ""
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
@@ -18631,7 +19849,7 @@ msgstr ""
#: scene/2d/physics_body_2d.cpp scene/2d/touch_screen_button.cpp
#: scene/3d/physics_body.cpp scene/gui/texture_button.cpp
-#: scene/resources/line_shape_2d.cpp
+#: scene/resources/line_shape_2d.cpp scene/resources/material.cpp
msgid "Normal"
msgstr ""
@@ -18838,6 +20056,30 @@ msgid ""
"as parent."
msgstr ""
+#: scene/2d/visibility_notifier_2d.cpp scene/3d/visibility_notifier.cpp
+msgid "Pause Animations"
+msgstr ""
+
+#: scene/2d/visibility_notifier_2d.cpp scene/3d/visibility_notifier.cpp
+msgid "Freeze Bodies"
+msgstr ""
+
+#: scene/2d/visibility_notifier_2d.cpp
+msgid "Pause Particles"
+msgstr ""
+
+#: scene/2d/visibility_notifier_2d.cpp
+msgid "Pause Animated Sprites"
+msgstr ""
+
+#: scene/2d/visibility_notifier_2d.cpp
+msgid "Process Parent"
+msgstr ""
+
+#: scene/2d/visibility_notifier_2d.cpp
+msgid "Physics Process Parent"
+msgstr ""
+
#: scene/3d/area.cpp
msgid "Reverb Bus"
msgstr ""
@@ -18927,6 +20169,7 @@ msgid "Attenuation Filter"
msgstr ""
#: scene/3d/audio_stream_player_3d.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
#: servers/audio/effects/audio_effect_filter.cpp
msgid "Cutoff Hz"
msgstr ""
@@ -18966,10 +20209,6 @@ msgid "Octree"
msgstr ""
#: scene/3d/baked_lightmap.cpp
-msgid "User Data"
-msgstr ""
-
-#: scene/3d/baked_lightmap.cpp
msgid "Finding meshes and lights"
msgstr ""
@@ -19199,6 +20438,14 @@ msgid "Ring Axis"
msgstr ""
#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
+msgid "Rotate Y"
+msgstr ""
+
+#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
+msgid "Disable Z"
+msgstr ""
+
+#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
msgid "Flatness"
msgstr ""
@@ -19234,15 +20481,11 @@ msgstr ""
msgid "Dynamic Range"
msgstr ""
-#: scene/3d/gi_probe.cpp
+#: scene/3d/gi_probe.cpp scene/3d/light.cpp
msgid "Normal Bias"
msgstr ""
#: scene/3d/gi_probe.cpp
-msgid "Compress"
-msgstr ""
-
-#: scene/3d/gi_probe.cpp
msgid "Plotting Meshes"
msgstr ""
@@ -19268,14 +20511,26 @@ msgid "Subdiv"
msgstr ""
#: scene/3d/light.cpp
+msgid "Indirect Energy"
+msgstr ""
+
+#: scene/3d/light.cpp
msgid "Negative"
msgstr ""
#: scene/3d/light.cpp
+msgid "Specular"
+msgstr ""
+
+#: scene/3d/light.cpp
msgid "Bake Mode"
msgstr ""
#: scene/3d/light.cpp
+msgid "Contact"
+msgstr ""
+
+#: scene/3d/light.cpp
msgid "Reverse Cull Face"
msgstr ""
@@ -19284,10 +20539,26 @@ msgid "Directional Shadow"
msgstr ""
#: scene/3d/light.cpp
+msgid "Split 1"
+msgstr ""
+
+#: scene/3d/light.cpp
+msgid "Split 2"
+msgstr ""
+
+#: scene/3d/light.cpp
+msgid "Split 3"
+msgstr ""
+
+#: scene/3d/light.cpp
msgid "Blend Splits"
msgstr ""
#: scene/3d/light.cpp
+msgid "Bias Split Scale"
+msgstr ""
+
+#: scene/3d/light.cpp
msgid "Depth Range"
msgstr ""
@@ -19311,6 +20582,10 @@ msgstr ""
msgid "Spot"
msgstr ""
+#: scene/3d/light.cpp
+msgid "Angle Attenuation"
+msgstr ""
+
#: scene/3d/mesh_instance.cpp
msgid "Software Skinning"
msgstr ""
@@ -19427,6 +20702,54 @@ msgid "Axis Lock"
msgstr ""
#: scene/3d/physics_body.cpp
+msgid "Linear X"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Linear Y"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Linear Z"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Angular X"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Angular Y"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Angular Z"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Motion X"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Motion Y"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Motion Z"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Move Lock X"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Move Lock Y"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Move Lock Z"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
msgid "Body Offset"
msgstr ""
@@ -19459,6 +20782,14 @@ msgid "Exclude Nodes"
msgstr ""
#: scene/3d/physics_joint.cpp
+msgid "Params"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Impulse Clamp"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit"
msgstr ""
@@ -19470,6 +20801,46 @@ msgstr ""
msgid "Lower"
msgstr ""
+#: scene/3d/physics_joint.cpp scene/3d/vehicle_body.cpp
+msgid "Relaxation"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Motor"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Target Velocity"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Max Impulse"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Linear Limit"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Upper Distance"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Lower Distance"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Restitution"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Linear Motion"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Linear Ortho"
+msgstr ""
+
#: scene/3d/physics_joint.cpp
msgid "Upper Angle"
msgstr ""
@@ -19479,6 +20850,14 @@ msgid "Lower Angle"
msgstr ""
#: scene/3d/physics_joint.cpp
+msgid "Angular Motion"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Ortho"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
msgid "Swing Span"
msgstr ""
@@ -19487,17 +20866,89 @@ msgid "Twist Span"
msgstr ""
#: scene/3d/physics_joint.cpp
+msgid "Linear Limit X"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Linear Motor X"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Force Limit"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Linear Spring X"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Equilibrium Point"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit X"
msgstr ""
#: scene/3d/physics_joint.cpp
+msgid "Erp"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Motor X"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Spring X"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Linear Limit Y"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Linear Motor Y"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Linear Spring Y"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit Y"
msgstr ""
#: scene/3d/physics_joint.cpp
+msgid "Angular Motor Y"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Spring Y"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Linear Limit Z"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Linear Motor Z"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Linear Spring Z"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit Z"
msgstr ""
+#: scene/3d/physics_joint.cpp
+msgid "Angular Motor Z"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Spring Z"
+msgstr ""
+
#: scene/3d/portal.cpp
msgid "The RoomManager should not be a child or grandchild of a Portal."
msgstr ""
@@ -19602,7 +21053,7 @@ msgstr ""
msgid "Use Default Simplify"
msgstr ""
-#: scene/3d/room.cpp
+#: scene/3d/room.cpp scene/3d/room_manager.cpp
msgid "Room Simplify"
msgstr ""
@@ -19640,6 +21091,12 @@ msgstr ""
msgid "Main"
msgstr ""
+#: scene/3d/room_manager.cpp scene/animation/animation_player.cpp
+#: scene/animation/animation_tree.cpp scene/animation/animation_tree_player.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+msgid "Active"
+msgstr ""
+
#: scene/3d/room_manager.cpp
msgid "Roomlist"
msgstr ""
@@ -19661,6 +21118,46 @@ msgid "Gameplay"
msgstr ""
#: scene/3d/room_manager.cpp
+msgid "Gameplay Monitor"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "Use Secondary PVS"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "Merge Meshes"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "Show Margins"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "Debug Sprawl"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "Overlap Warning Threshold"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "Preview Camera"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "Portal Depth Limit"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "Default Portal Margin"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "Roaming Expansion Margin"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
msgid ""
"RoomList path is invalid.\n"
"Please check the RoomList branch has been assigned in the RoomManager."
@@ -19779,6 +21276,18 @@ msgstr ""
msgid "Billboard"
msgstr ""
+#: scene/3d/sprite_3d.cpp scene/resources/material.cpp
+msgid "Transparent"
+msgstr ""
+
+#: scene/3d/sprite_3d.cpp
+msgid "Shaded"
+msgstr ""
+
+#: scene/3d/sprite_3d.cpp
+msgid "Double Sided"
+msgstr ""
+
#: scene/3d/sprite_3d.cpp
msgid "Alpha Cut"
msgstr ""
@@ -19843,10 +21352,6 @@ msgstr ""
msgid "Max Force"
msgstr ""
-#: scene/3d/vehicle_body.cpp
-msgid "Relaxation"
-msgstr ""
-
#: scene/3d/visibility_notifier.cpp
msgid "AABB"
msgstr ""
@@ -19968,7 +21473,7 @@ msgid "Fadeout Time"
msgstr ""
#: scene/animation/animation_blend_tree.cpp
-msgid "autorestart_"
+msgid "Auto Restart"
msgstr ""
#: scene/animation/animation_blend_tree.cpp
@@ -20040,12 +21545,6 @@ msgstr ""
msgid "Default Blend Time"
msgstr ""
-#: scene/animation/animation_player.cpp scene/animation/animation_tree.cpp
-#: scene/animation/animation_tree_player.cpp
-#: servers/audio/effects/audio_effect_delay.cpp
-msgid "Active"
-msgstr ""
-
#: scene/animation/animation_player.cpp
msgid "Method Call Mode"
msgstr ""
@@ -20154,10 +21653,6 @@ msgstr ""
msgid "Max Iterations"
msgstr ""
-#: scene/animation/tween.cpp scene/resources/texture.cpp
-msgid "Repeat"
-msgstr ""
-
#: scene/animation/tween.cpp
msgid "Playback Process Mode"
msgstr ""
@@ -20184,18 +21679,6 @@ msgstr ""
msgid "Alignment"
msgstr ""
-#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
-#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
-#: scene/resources/style_box.cpp
-msgid "Horizontal"
-msgstr ""
-
-#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
-#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
-#: scene/resources/style_box.cpp
-msgid "Vertical"
-msgstr ""
-
#: scene/gui/base_button.cpp
msgid "Shortcut In Tooltip"
msgstr ""
@@ -20281,10 +21764,6 @@ msgid "HSV"
msgstr ""
#: scene/gui/color_picker.cpp
-msgid "Raw"
-msgstr ""
-
-#: scene/gui/color_picker.cpp
msgid "Switch between hexadecimal and code values."
msgstr ""
@@ -20338,6 +21817,30 @@ msgid "Focus"
msgstr ""
#: scene/gui/control.cpp
+msgid "Neighbour Left"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Neighbour Top"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Neighbour Right"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Neighbour Bottom"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Next"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Previous"
+msgstr ""
+
+#: scene/gui/control.cpp
msgid "Mouse"
msgstr ""
@@ -20370,7 +21873,7 @@ msgid "Dialog"
msgstr ""
#: scene/gui/dialogs.cpp
-msgid "Hide On Ok"
+msgid "Hide On OK"
msgstr ""
#: scene/gui/dialogs.cpp scene/gui/label.cpp
@@ -20455,7 +21958,7 @@ msgid "Timers"
msgstr ""
#: scene/gui/item_list.cpp scene/gui/popup_menu.cpp scene/gui/tree.cpp
-msgid "Incremental Search Max Interval (msec)"
+msgid "Incremental Search Max Interval Msec"
msgstr ""
#: scene/gui/item_list.cpp scene/gui/tree.cpp
@@ -20954,6 +22457,22 @@ msgstr ""
msgid "Nine Patch Stretch"
msgstr ""
+#: scene/gui/texture_progress.cpp
+msgid "Stretch Margin Left"
+msgstr ""
+
+#: scene/gui/texture_progress.cpp
+msgid "Stretch Margin Top"
+msgstr ""
+
+#: scene/gui/texture_progress.cpp
+msgid "Stretch Margin Right"
+msgstr ""
+
+#: scene/gui/texture_progress.cpp
+msgid "Stretch Margin Bottom"
+msgstr ""
+
#: scene/gui/tree.cpp
msgid "Custom Minimum Height"
msgstr ""
@@ -20987,7 +22506,7 @@ msgid "Paused"
msgstr ""
#: scene/gui/video_player.cpp
-msgid "Buffering (msec)"
+msgid "Buffering Msec"
msgstr ""
#: scene/gui/video_player.cpp
@@ -21291,6 +22810,22 @@ msgid "Shadow Atlas"
msgstr ""
#: scene/main/viewport.cpp
+msgid "Quad 0"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 1"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 2"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 3"
+msgstr ""
+
+#: scene/main/viewport.cpp
msgid "Canvas Transform"
msgstr ""
@@ -21303,6 +22838,10 @@ msgid "Tooltip Delay (sec)"
msgstr ""
#: scene/register_scene_types.cpp
+msgid "Swap OK Cancel"
+msgstr ""
+
+#: scene/register_scene_types.cpp
msgid "Use hiDPI"
msgstr ""
@@ -21315,18 +22854,6 @@ msgid "Custom Font"
msgstr ""
#: scene/resources/audio_stream_sample.cpp
-msgid "Loop Mode"
-msgstr ""
-
-#: scene/resources/audio_stream_sample.cpp
-msgid "Loop Begin"
-msgstr ""
-
-#: scene/resources/audio_stream_sample.cpp
-msgid "Loop End"
-msgstr ""
-
-#: scene/resources/audio_stream_sample.cpp
#: servers/audio/effects/audio_stream_generator.cpp servers/audio_server.cpp
msgid "Mix Rate"
msgstr ""
@@ -21376,6 +22903,15 @@ msgid "Extra Spacing"
msgstr ""
#: scene/resources/dynamic_font.cpp
+msgid "Char"
+msgstr ""
+
+#: scene/resources/dynamic_font.cpp scene/resources/world.cpp
+#: scene/resources/world_2d.cpp
+msgid "Space"
+msgstr ""
+
+#: scene/resources/dynamic_font.cpp
msgid "Font"
msgstr ""
@@ -21572,6 +23108,42 @@ msgid "Glow"
msgstr ""
#: scene/resources/environment.cpp
+msgid "Levels"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "1"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "2"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "3"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "4"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "5"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "6"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "7"
+msgstr ""
+
+#: scene/resources/environment.cpp
msgid "Bloom"
msgstr ""
@@ -21652,9 +23224,61 @@ msgid "Next Pass"
msgstr ""
#: scene/resources/material.cpp
+msgid "Use Shadow To Opacity"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Unshaded"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Vertex Lighting"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "No Depth Test"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Use Point Size"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "World Triplanar"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Fixed Size"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Albedo Tex Force sRGB"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Do Not Receive Shadows"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Disable Ambient Light"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Ensure Correct Normals"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Vertex Color"
msgstr ""
+#: scene/resources/material.cpp
+msgid "Use As Albedo"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Is sRGB"
+msgstr ""
+
#: scene/resources/material.cpp servers/visual_server.cpp
msgid "Parameters"
msgstr ""
@@ -21684,6 +23308,10 @@ msgid "Billboard Mode"
msgstr ""
#: scene/resources/material.cpp
+msgid "Billboard Keep Scale"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Grow"
msgstr ""
@@ -21692,6 +23320,10 @@ msgid "Grow Amount"
msgstr ""
#: scene/resources/material.cpp
+msgid "Use Alpha Scissor"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Alpha Scissor Threshold"
msgstr ""
@@ -21720,10 +23352,18 @@ msgid "Metallic Specular"
msgstr ""
#: scene/resources/material.cpp
+msgid "Metallic Texture"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Metallic Texture Channel"
msgstr ""
#: scene/resources/material.cpp
+msgid "Roughness Texture"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Roughness Texture Channel"
msgstr ""
@@ -21740,6 +23380,14 @@ msgid "Emission Operator"
msgstr ""
#: scene/resources/material.cpp
+msgid "Emission On UV2"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Emission Texture"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "NormalMap"
msgstr ""
@@ -21752,6 +23400,10 @@ msgid "Rim Tint"
msgstr ""
#: scene/resources/material.cpp
+msgid "Rim Texture"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Clearcoat"
msgstr ""
@@ -21760,14 +23412,26 @@ msgid "Clearcoat Gloss"
msgstr ""
#: scene/resources/material.cpp
+msgid "Clearcoat Texture"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Anisotropy"
msgstr ""
#: scene/resources/material.cpp
+msgid "Anisotropy Flowmap"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Ambient Occlusion"
msgstr ""
#: scene/resources/material.cpp
+msgid "On UV2"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Texture Channel"
msgstr ""
@@ -21800,6 +23464,10 @@ msgid "Transmission"
msgstr ""
#: scene/resources/material.cpp
+msgid "Transmission Texture"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Refraction"
msgstr ""
@@ -21816,6 +23484,10 @@ msgid "UV1"
msgstr ""
#: scene/resources/material.cpp
+msgid "Triplanar"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Triplanar Sharpness"
msgstr ""
@@ -21999,6 +23671,14 @@ msgstr ""
msgid "Point Count"
msgstr ""
+#: scene/resources/particles_material.cpp
+msgid "Scale Random"
+msgstr ""
+
+#: scene/resources/particles_material.cpp
+msgid "Scale Curve"
+msgstr ""
+
#: scene/resources/physics_material.cpp
msgid "Rough"
msgstr ""
@@ -22056,10 +23736,6 @@ msgid "A"
msgstr ""
#: scene/resources/shader.cpp
-msgid "Code"
-msgstr ""
-
-#: scene/resources/shader.cpp
msgid "Custom Defines"
msgstr ""
@@ -22144,14 +23820,6 @@ msgid "Grow End"
msgstr ""
#: scene/resources/texture.cpp
-msgid "Storage"
-msgstr ""
-
-#: scene/resources/texture.cpp
-msgid "Lossy Quality"
-msgstr ""
-
-#: scene/resources/texture.cpp
msgid "Load Path"
msgstr ""
@@ -22261,10 +23929,6 @@ msgstr ""
msgid "Fallback Environment"
msgstr ""
-#: scene/resources/world.cpp scene/resources/world_2d.cpp
-msgid "Space"
-msgstr ""
-
#: scene/resources/world.cpp
msgid "Scenario"
msgstr ""
@@ -22338,8 +24002,33 @@ msgstr ""
msgid "Wet"
msgstr ""
-#: servers/audio/effects/audio_effect_compressor.cpp
-msgid "Threshold"
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "Voice"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+msgid "Delay (ms)"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_phaser.cpp
+msgid "Rate Hz"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "Depth (ms)"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+msgid "Level dB"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+#: servers/audio/effects/audio_effect_panner.cpp
+msgid "Pan"
msgstr ""
#: servers/audio/effects/audio_effect_compressor.cpp
@@ -22364,19 +24053,6 @@ msgid "Tap 1"
msgstr ""
#: servers/audio/effects/audio_effect_delay.cpp
-msgid "Delay (ms)"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_delay.cpp
-msgid "Level dB"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_delay.cpp
-#: servers/audio/effects/audio_effect_panner.cpp
-msgid "Pan"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_delay.cpp
msgid "Tap 2"
msgstr ""
@@ -22434,10 +24110,6 @@ msgstr ""
msgid "Range Max Hz"
msgstr ""
-#: servers/audio/effects/audio_effect_phaser.cpp
-msgid "Rate Hz"
-msgstr ""
-
#: servers/audio/effects/audio_effect_pitch_shift.cpp
msgid "Oversampling"
msgstr ""
@@ -22452,7 +24124,7 @@ msgid "Predelay"
msgstr ""
#: servers/audio/effects/audio_effect_reverb.cpp
-msgid "(msec)"
+msgid "Msec"
msgstr ""
#: servers/audio/effects/audio_effect_reverb.cpp
diff --git a/editor/translations/mk.po b/editor/translations/mk.po
index 61baf22b1f..de9a795a30 100644
--- a/editor/translations/mk.po
+++ b/editor/translations/mk.po
@@ -19,7 +19,7 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=n==1 || n%10==1 ? 0 : 1;\n"
"X-Generator: Weblate 4.9.1-dev\n"
-#: core/bind/core_bind.cpp
+#: core/bind/core_bind.cpp main/main.cpp
msgid "Tablet Driver"
msgstr ""
@@ -111,8 +111,8 @@ msgstr ""
#: core/bind/core_bind.cpp editor/editor_settings.cpp main/main.cpp
#: modules/gdscript/gdscript_editor.cpp modules/gridmap/grid_map.cpp
#: modules/mono/csharp_script.cpp modules/visual_script/visual_script_nodes.cpp
-#: scene/2d/tile_map.cpp scene/3d/camera.cpp scene/gui/control.cpp
-#: scene/gui/graph_edit.cpp scene/main/viewport.cpp
+#: scene/2d/tile_map.cpp scene/3d/camera.cpp scene/3d/light.cpp
+#: scene/gui/control.cpp scene/gui/graph_edit.cpp scene/main/viewport.cpp
#: scene/resources/dynamic_font.cpp scene/resources/navigation_mesh.cpp
#: scene/resources/primitive_meshes.cpp scene/resources/sky.cpp
#: scene/resources/style_box.cpp scene/resources/texture.cpp
@@ -206,8 +206,7 @@ msgid "Data"
msgstr ""
#: core/io/file_access_network.cpp core/register_core_types.cpp
-#: editor/editor_settings.cpp editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp main/main.cpp
+#: editor/editor_settings.cpp main/main.cpp
#: modules/gdscript/language_server/gdscript_language_server.cpp
msgid "Network"
msgstr ""
@@ -467,9 +466,10 @@ msgstr ""
msgid "Relative"
msgstr "GDNative(ГДДомороден)"
-#: core/os/input_event.cpp scene/2d/camera_2d.cpp
-#: scene/3d/interpolated_camera.cpp scene/animation/animation_player.cpp
-#: scene/resources/environment.cpp
+#: core/os/input_event.cpp scene/2d/camera_2d.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/interpolated_camera.cpp
+#: scene/animation/animation_player.cpp scene/resources/environment.cpp
+#: scene/resources/particles_material.cpp
msgid "Speed"
msgstr ""
@@ -514,8 +514,9 @@ msgstr ""
msgid "Pitch"
msgstr ""
-#: core/os/input_event.cpp scene/2d/physics_body_2d.cpp
-#: scene/3d/physics_body.cpp
+#: core/os/input_event.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/physics_body_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/3d/physics_body.cpp scene/resources/particles_material.cpp
msgid "Velocity"
msgstr ""
@@ -532,6 +533,8 @@ msgid "Controller Value"
msgstr ""
#: core/project_settings.cpp editor/editor_node.cpp main/main.cpp
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/windows/export/export.cpp
msgid "Application"
msgstr ""
@@ -547,13 +550,16 @@ msgstr ""
#: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp
#: editor/editor_plugin_settings.cpp editor/editor_profiler.cpp
#: editor/project_manager.cpp editor/settings_config_dialog.cpp
-#: modules/gdnative/nativescript/nativescript.cpp scene/2d/area_2d.cpp
-#: scene/3d/area.cpp scene/main/node.cpp
+#: modules/gdnative/nativescript/nativescript.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/osx/export/export.cpp scene/2d/area_2d.cpp scene/3d/area.cpp
+#: scene/main/node.cpp
msgid "Name"
msgstr ""
#: core/project_settings.cpp editor/editor_help.cpp
-#: modules/visual_script/visual_script_nodes.cpp
+#: modules/visual_script/visual_script_nodes.cpp platform/uwp/export/export.cpp
+#: platform/windows/export/export.cpp
msgid "Description"
msgstr ""
@@ -589,7 +595,7 @@ msgid "Custom User Dir Name"
msgstr ""
#: core/project_settings.cpp editor/animation_track_editor.cpp
-#: editor/editor_audio_buses.cpp servers/audio_server.cpp
+#: editor/editor_audio_buses.cpp main/main.cpp servers/audio_server.cpp
msgid "Audio"
msgstr ""
@@ -740,10 +746,13 @@ msgstr ""
msgid "Sharpen Intensity"
msgstr ""
-#: core/project_settings.cpp editor/editor_node.cpp editor/editor_settings.cpp
-#: editor/plugins/script_editor_plugin.cpp editor/project_export.cpp
-#: main/main.cpp modules/gdscript/gdscript.cpp
-#: modules/visual_script/visual_script.cpp scene/3d/room_manager.cpp
+#: core/project_settings.cpp editor/editor_export.cpp editor/editor_node.cpp
+#: editor/editor_settings.cpp editor/plugins/script_editor_plugin.cpp
+#: editor/project_export.cpp main/main.cpp modules/gdscript/gdscript.cpp
+#: modules/visual_script/visual_script.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp scene/3d/room_manager.cpp
#: scene/main/scene_tree.cpp scene/resources/shape_2d.cpp
#: servers/visual_server.cpp
msgid "Debug"
@@ -965,6 +974,7 @@ msgid "Subsurface Scattering"
msgstr ""
#: drivers/gles3/rasterizer_scene_gles3.cpp
+#: editor/import/resource_importer_texture.cpp
#: editor/plugins/spatial_editor_plugin.cpp modules/gltf/gltf_node.cpp
#: modules/gridmap/grid_map.cpp scene/2d/cpu_particles_2d.cpp
#: scene/2d/node_2d.cpp scene/2d/parallax_layer.cpp scene/2d/polygon_2d.cpp
@@ -1261,6 +1271,7 @@ msgid "Editors"
msgstr "Уреди"
#: editor/animation_track_editor.cpp editor/editor_settings.cpp
+#: editor/import/resource_importer_scene.cpp
#: editor/plugins/animation_player_editor_plugin.cpp editor/scene_tree_dock.cpp
#: scene/2d/animated_sprite.cpp scene/2d/cpu_particles_2d.cpp
#: scene/2d/sprite.cpp scene/3d/cpu_particles.cpp scene/3d/sprite_3d.cpp
@@ -1477,14 +1488,14 @@ msgstr ""
msgid "Seconds"
msgstr "Секунди"
-#: editor/animation_track_editor.cpp
+#: editor/animation_track_editor.cpp editor/import/resource_importer_scene.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp main/main.cpp
#: scene/resources/texture.cpp
msgid "FPS"
msgstr "ФПС"
#: editor/animation_track_editor.cpp editor/editor_plugin_settings.cpp
-#: editor/editor_resource_picker.cpp
+#: editor/editor_resource_picker.cpp editor/import/resource_importer_wav.cpp
#: editor/plugins/polygon_2d_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
@@ -2426,7 +2437,9 @@ msgid "Remove Autoload"
msgstr ""
#: editor/editor_autoload_settings.cpp editor/editor_plugin_settings.cpp
-#: modules/gdscript/gdscript.cpp scene/2d/polygon_2d.cpp scene/3d/area.cpp
+#: modules/gdscript/gdscript.cpp platform/android/export/export_plugin.cpp
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#: scene/2d/polygon_2d.cpp scene/3d/area.cpp scene/3d/physics_joint.cpp
#: scene/3d/reflection_probe.cpp scene/main/canvas_layer.cpp
#: scene/resources/material.cpp servers/visual_server.cpp
msgid "Enable"
@@ -2579,6 +2592,55 @@ msgstr ""
#: editor/editor_export.cpp platform/android/export/export_plugin.cpp
#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
+msgid "Custom Template"
+msgstr ""
+
+#: editor/editor_export.cpp editor/project_export.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp
+msgid "Release"
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Binary Format"
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "64 Bits"
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Embed PCK"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "Texture Format"
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "BPTC"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "S3TC"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "ETC"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "ETC2"
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "No BPTC Fallbacks"
+msgstr ""
+
+#: editor/editor_export.cpp platform/android/export/export_plugin.cpp
+#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
msgid "Custom debug template not found."
msgstr ""
@@ -2753,6 +2815,7 @@ msgid "Make Current"
msgstr ""
#: editor/editor_feature_profile.cpp editor/editor_node.cpp
+#: editor/import/resource_importer_scene.cpp
#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
msgid "Import"
msgstr "Импортирај"
@@ -2877,8 +2940,11 @@ msgstr ""
msgid "Display Mode"
msgstr ""
-#: editor/editor_file_dialog.cpp main/main.cpp modules/csg/csg_shape.cpp
-#: modules/visual_script/visual_script_nodes.cpp
+#: editor/editor_file_dialog.cpp
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+#: editor/import/resource_importer_wav.cpp main/main.cpp
+#: modules/csg/csg_shape.cpp modules/visual_script/visual_script_nodes.cpp
#: modules/visual_script/visual_script_yield_nodes.cpp scene/2d/light_2d.cpp
#: scene/2d/physics_body_2d.cpp scene/2d/tile_map.cpp
#: scene/3d/baked_lightmap.cpp scene/3d/light.cpp scene/3d/physics_body.cpp
@@ -3011,7 +3077,9 @@ msgstr ""
msgid "Reimport Missing Imported Files"
msgstr ""
-#: editor/editor_help.cpp
+#: editor/editor_help.cpp scene/2d/camera_2d.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/resources/dynamic_font.cpp
+#: scene/resources/style_box.cpp
msgid "Top"
msgstr ""
@@ -3063,6 +3131,7 @@ msgid "Fonts"
msgstr ""
#: editor/editor_help.cpp editor/plugins/theme_editor_plugin.cpp
+#: platform/iphone/export/export.cpp
msgid "Icons"
msgstr ""
@@ -3221,7 +3290,9 @@ msgstr ""
msgid "Pin value [Disabled because '%s' is editor-only]"
msgstr ""
-#: editor/editor_inspector.cpp editor/scene_tree_dock.cpp
+#: editor/editor_inspector.cpp
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+#: editor/scene_tree_dock.cpp
#: modules/visual_script/visual_script_func_nodes.cpp
#: modules/visual_script/visual_script_nodes.cpp
#: modules/visual_script/visual_script_property_selector.cpp
@@ -3535,6 +3606,14 @@ msgid "Quick Open Script..."
msgstr ""
#: editor/editor_node.cpp
+msgid "Save & Reload"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Save changes to '%s' before reloading?"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "Save & Close"
msgstr ""
@@ -3645,6 +3724,10 @@ msgid "Open Project Manager?"
msgstr ""
#: editor/editor_node.cpp
+msgid "Save changes to the following scene(s) before reloading?"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "Save & Quit"
msgstr ""
@@ -3884,9 +3967,8 @@ msgid "Update Vital Only"
msgstr ""
#: editor/editor_node.cpp
-#, fuzzy
-msgid "Translate Properties"
-msgstr "СвојÑтва на анимацијата."
+msgid "Localize Settings"
+msgstr ""
#: editor/editor_node.cpp
msgid "Restore Scenes On Load"
@@ -3901,9 +3983,8 @@ msgid "Inspector"
msgstr ""
#: editor/editor_node.cpp
-#, fuzzy
-msgid "Capitalize Properties"
-msgstr "СвојÑтва на анимацијата."
+msgid "Default Property Name Style"
+msgstr ""
#: editor/editor_node.cpp
msgid "Default Float Step"
@@ -4462,7 +4543,9 @@ msgstr ""
msgid "Update"
msgstr ""
-#: editor/editor_plugin_settings.cpp
+#: editor/editor_plugin_settings.cpp platform/android/export/export_plugin.cpp
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp
msgid "Version"
msgstr ""
@@ -5404,7 +5487,7 @@ msgstr ""
msgid "Rect Custom Position"
msgstr ""
-#: editor/editor_settings.cpp
+#: editor/editor_settings.cpp platform/android/export/export_plugin.cpp
msgid "Screen"
msgstr ""
@@ -5429,6 +5512,19 @@ msgid "Editor SSL Certificates"
msgstr ""
#: editor/editor_settings.cpp
+msgid "HTTP Proxy"
+msgstr ""
+
+#: editor/editor_settings.cpp
+msgid "Host"
+msgstr ""
+
+#: editor/editor_settings.cpp editor/fileserver/editor_file_server.cpp
+#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp
+msgid "Port"
+msgstr ""
+
+#: editor/editor_settings.cpp
msgid "Project Manager"
msgstr ""
@@ -5468,7 +5564,8 @@ msgstr ""
msgid "String Color"
msgstr ""
-#: editor/editor_settings.cpp
+#: editor/editor_settings.cpp platform/javascript/export/export.cpp
+#: platform/uwp/export/export.cpp
msgid "Background Color"
msgstr ""
@@ -5626,22 +5723,6 @@ msgid "Starting the download..."
msgstr ""
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "HTTP Proxy"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Host"
-msgstr ""
-
-#: editor/export_template_manager.cpp editor/fileserver/editor_file_server.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp main/main.cpp
-#: modules/mono/mono_gd/gd_mono.cpp
-msgid "Port"
-msgstr ""
-
-#: editor/export_template_manager.cpp
msgid "Error requesting URL:"
msgstr ""
@@ -5883,6 +5964,7 @@ msgstr ""
#: editor/fileserver/editor_file_server.cpp
#: editor/plugins/version_control_editor_plugin.cpp
+#: platform/uwp/export/export.cpp platform/windows/export/export.cpp
msgid "Password"
msgstr ""
@@ -6246,6 +6328,106 @@ msgstr ""
msgid "Use Ambient"
msgstr ""
+#: editor/import/resource_importer_bitmask.cpp
+msgid "Create From"
+msgstr ""
+
+#: editor/import/resource_importer_bitmask.cpp
+#: servers/audio/effects/audio_effect_compressor.cpp
+msgid "Threshold"
+msgstr ""
+
+#: editor/import/resource_importer_csv_translation.cpp
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_scene.cpp
+#: editor/import/resource_importer_texture.cpp
+#: editor/import/resource_importer_wav.cpp scene/3d/gi_probe.cpp
+msgid "Compress"
+msgstr ""
+
+#: editor/import/resource_importer_csv_translation.cpp
+msgid "Delimiter"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+msgid "No BPTC If RGB"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/sprite_3d.cpp
+#: scene/resources/material.cpp scene/resources/particles_material.cpp
+#: scene/resources/texture.cpp
+msgid "Flags"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/animation/tween.cpp
+#: scene/resources/texture.cpp
+msgid "Repeat"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/2d/light_2d.cpp
+#: scene/gui/control.cpp scene/resources/navigation_mesh.cpp
+msgid "Filter"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+msgid "Mipmaps"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+msgid "Anisotropic"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+msgid "sRGB"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+msgid "Slices"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
+#: scene/resources/style_box.cpp
+msgid "Horizontal"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
+#: scene/resources/style_box.cpp
+msgid "Vertical"
+msgstr ""
+
+#: editor/import/resource_importer_obj.cpp
+#, fuzzy
+msgid "Generate Tangents"
+msgstr "ПромеÑти Безиер Точка"
+
+#: editor/import/resource_importer_obj.cpp
+msgid "Scale Mesh"
+msgstr ""
+
+#: editor/import/resource_importer_obj.cpp
+msgid "Offset Mesh"
+msgstr ""
+
+#: editor/import/resource_importer_obj.cpp
+#: editor/import/resource_importer_scene.cpp
+msgid "Octahedral Compression"
+msgstr ""
+
+#: editor/import/resource_importer_obj.cpp
+msgid "Optimize Mesh Flags"
+msgstr ""
+
#: editor/import/resource_importer_scene.cpp
msgid "Import as Single Scene"
msgstr ""
@@ -6286,6 +6468,141 @@ msgstr ""
msgid "Import as Multiple Scenes+Materials"
msgstr ""
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Nodes"
+msgstr "Јазол"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Root Type"
+msgstr "Јазол"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Root Name"
+msgstr "Јазол"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Root Scale"
+msgstr "Јазол"
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Custom Script"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp scene/resources/texture.cpp
+msgid "Storage"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Use Legacy Names"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+msgid "Materials"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp platform/osx/export/export.cpp
+msgid "Location"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Keep On Reimport"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+msgid "Meshes"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Ensure Tangents"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Light Baking"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Lightmap Texel Size"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+msgid "Skins"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Use Named Skins"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "External Files"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Store In Subdir"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Filter Script"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Keep Custom Tracks"
+msgstr "Копирај Траки"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Optimizer"
+msgstr "Оптимизирај"
+
+#: editor/import/resource_importer_scene.cpp main/main.cpp
+#: modules/mono/mono_gd/gd_mono.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp scene/2d/camera_2d.cpp scene/2d/light_2d.cpp
+#: scene/2d/navigation_polygon.cpp scene/2d/ray_cast_2d.cpp scene/2d/sprite.cpp
+#: scene/2d/y_sort.cpp scene/3d/audio_stream_player_3d.cpp
+#: scene/3d/baked_lightmap.cpp scene/3d/interpolated_camera.cpp
+#: scene/3d/light.cpp scene/3d/navigation_mesh_instance.cpp
+#: scene/3d/physics_joint.cpp scene/3d/ray_cast.cpp scene/3d/sprite_3d.cpp
+#: scene/gui/graph_edit.cpp scene/gui/rich_text_label.cpp
+#: scene/resources/curve.cpp scene/resources/environment.cpp
+#: scene/resources/material.cpp
+msgid "Enabled"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Max Linear Error"
+msgstr "Огледало"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Max Angular Error"
+msgstr "Огледало"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Max Angle"
+msgstr "ВредноÑÑ‚:"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Remove Unused Tracks"
+msgstr "Избриши нерешени и празни траки"
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Clips"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/particles_2d.cpp scene/3d/area.cpp scene/3d/cpu_particles.cpp
+#: scene/3d/particles.cpp scene/resources/environment.cpp
+msgid "Amount"
+msgstr ""
+
#: editor/import/resource_importer_scene.cpp
#: editor/plugins/mesh_library_editor_plugin.cpp
msgid "Import Scene"
@@ -6327,12 +6644,135 @@ msgstr ""
msgid "Saving..."
msgstr ""
+#: editor/import/resource_importer_texture.cpp scene/resources/texture.cpp
+msgid "Lossy Quality"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "HDR Mode"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "BPTC LDR"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/mesh_instance_2d.cpp scene/2d/multimesh_instance_2d.cpp
+#: scene/2d/particles_2d.cpp scene/2d/sprite.cpp scene/resources/style_box.cpp
+msgid "Normal Map"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Process"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Fix Alpha Border"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Premult Alpha"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Hdr As Srgb"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Invert Color"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Normal Map Invert Y"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
+#: scene/audio/audio_stream_player.cpp scene/gui/video_player.cpp
+msgid "Stream"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Size Limit"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Detect 3D"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "SVG"
+msgstr ""
+
#: editor/import/resource_importer_texture.cpp
msgid ""
"Warning, no suitable PC VRAM compression enabled in Project Settings. This "
"texture will not display correctly on PC."
msgstr ""
+#: editor/import/resource_importer_texture_atlas.cpp
+msgid "Atlas File"
+msgstr ""
+
+#: editor/import/resource_importer_texture_atlas.cpp
+#, fuzzy
+msgid "Import Mode"
+msgstr "Импортирај"
+
+#: editor/import/resource_importer_texture_atlas.cpp
+msgid "Crop To Region"
+msgstr ""
+
+#: editor/import/resource_importer_texture_atlas.cpp
+msgid "Trim Alpha Border From Region"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp scene/2d/physics_body_2d.cpp
+msgid "Force"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+msgid "8 Bit"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp main/main.cpp
+#: modules/mono/editor/csharp_project.cpp modules/mono/mono_gd/gd_mono.cpp
+msgid "Mono"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+#, fuzzy
+msgid "Max Rate"
+msgstr "ВредноÑÑ‚:"
+
+#: editor/import/resource_importer_wav.cpp
+#, fuzzy
+msgid "Max Rate Hz"
+msgstr "ВредноÑÑ‚:"
+
+#: editor/import/resource_importer_wav.cpp
+msgid "Trim"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+msgid "Normalize"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+msgid "Loop Mode"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+msgid "Loop Begin"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+msgid "Loop End"
+msgstr ""
+
#: editor/import_defaults_editor.cpp
msgid "Select Importer"
msgstr ""
@@ -6401,6 +6841,27 @@ msgid "Failed to load resource."
msgstr ""
#: editor/inspector_dock.cpp
+msgid "Property Name Style"
+msgstr ""
+
+#: editor/inspector_dock.cpp scene/gui/color_picker.cpp
+msgid "Raw"
+msgstr ""
+
+#: editor/inspector_dock.cpp
+#, fuzzy
+msgid "Capitalized"
+msgstr "СвојÑтва на анимацијата."
+
+#: editor/inspector_dock.cpp
+msgid "Localized"
+msgstr ""
+
+#: editor/inspector_dock.cpp
+msgid "Localization not available for current language."
+msgstr ""
+
+#: editor/inspector_dock.cpp
#, fuzzy
msgid "Copy Properties"
msgstr "СвојÑтва на анимацијата."
@@ -7432,18 +7893,22 @@ msgid "License (Z-A)"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
+msgctxt "Pagination"
msgid "First"
msgstr ""
-#: editor/plugins/asset_library_editor_plugin.cpp scene/gui/control.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgctxt "Pagination"
msgid "Previous"
msgstr ""
-#: editor/plugins/asset_library_editor_plugin.cpp scene/gui/control.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgctxt "Pagination"
msgid "Next"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
+msgctxt "Pagination"
msgid "Last"
msgstr ""
@@ -7677,19 +8142,19 @@ msgid ""
"margins."
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Top Left"
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Top Right"
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Bottom Right"
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Bottom Left"
msgstr ""
@@ -8387,6 +8852,18 @@ msgstr ""
msgid "Gradient Edited"
msgstr ""
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+msgid "Swap GradientTexture2D Fill Points"
+msgstr ""
+
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+msgid "Swap Gradient Fill Points"
+msgstr ""
+
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+msgid "Toggle Grid Snap"
+msgstr ""
+
#: editor/plugins/item_list_editor_plugin.cpp
msgid "Item %d"
msgstr ""
@@ -8600,8 +9077,8 @@ msgid ""
"%s"
msgstr ""
-#: editor/plugins/mesh_library_editor_plugin.cpp modules/gridmap/grid_map.cpp
-msgid "Mesh Library"
+#: editor/plugins/mesh_library_editor_plugin.cpp
+msgid "MeshLibrary"
msgstr ""
#: editor/plugins/mesh_library_editor_plugin.cpp
@@ -9571,8 +10048,8 @@ msgstr ""
msgid "Source"
msgstr ""
-#: editor/plugins/script_text_editor.cpp scene/3d/interpolated_camera.cpp
-#: scene/animation/skeleton_ik.cpp
+#: editor/plugins/script_text_editor.cpp platform/uwp/export/export.cpp
+#: scene/3d/interpolated_camera.cpp scene/animation/skeleton_ik.cpp
msgid "Target"
msgstr ""
@@ -10529,7 +11006,9 @@ msgstr ""
#: editor/plugins/sprite_frames_editor_plugin.cpp
#: modules/gltf/gltf_animation.cpp modules/minimp3/audio_stream_mp3.cpp
-#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp scene/2d/path_2d.cpp
+#: modules/minimp3/resource_importer_mp3.cpp
+#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp
+#: modules/stb_vorbis/resource_importer_ogg_vorbis.cpp scene/2d/path_2d.cpp
#: scene/3d/path.cpp scene/resources/animation.cpp scene/resources/material.cpp
msgid "Loop"
msgstr ""
@@ -11389,8 +11868,9 @@ msgstr ""
msgid "Priority"
msgstr ""
-#: editor/plugins/tile_set_editor_plugin.cpp main/main.cpp scene/gui/button.cpp
-#: scene/gui/item_list.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp main/main.cpp
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#: scene/gui/button.cpp scene/gui/item_list.cpp
msgid "Icon"
msgstr ""
@@ -12671,10 +13151,6 @@ msgid ""
msgstr ""
#: editor/project_export.cpp
-msgid "Release"
-msgstr ""
-
-#: editor/project_export.cpp
msgid "Exporting All"
msgstr ""
@@ -14434,6 +14910,7 @@ msgid "Change AudioStreamPlayer3D Emission Angle"
msgstr ""
#: editor/spatial_editor_gizmos.cpp modules/gltf/gltf_node.cpp
+#: platform/osx/export/export.cpp
msgid "Camera"
msgstr ""
@@ -14694,7 +15171,8 @@ msgstr ""
msgid "Use Nvidia Rect Flicker Workaround"
msgstr ""
-#: main/main.cpp platform/uwp/os_uwp.cpp
+#: main/main.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp platform/uwp/os_uwp.cpp
msgid "Display"
msgstr ""
@@ -14749,18 +15227,6 @@ msgstr ""
msgid "Allowed"
msgstr ""
-#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp scene/2d/camera_2d.cpp
-#: scene/2d/light_2d.cpp scene/2d/navigation_polygon.cpp
-#: scene/2d/ray_cast_2d.cpp scene/2d/sprite.cpp scene/2d/y_sort.cpp
-#: scene/3d/audio_stream_player_3d.cpp scene/3d/baked_lightmap.cpp
-#: scene/3d/interpolated_camera.cpp scene/3d/light.cpp
-#: scene/3d/navigation_mesh_instance.cpp scene/3d/ray_cast.cpp
-#: scene/3d/sprite_3d.cpp scene/gui/graph_edit.cpp
-#: scene/gui/rich_text_label.cpp scene/resources/curve.cpp
-#: scene/resources/environment.cpp
-msgid "Enabled"
-msgstr ""
-
#: main/main.cpp
msgid "Intended Usage"
msgstr ""
@@ -14789,12 +15255,13 @@ msgstr ""
msgid "Handheld"
msgstr ""
-#: main/main.cpp
+#: main/main.cpp platform/javascript/export/export.cpp
+#: platform/uwp/export/export.cpp
msgid "Orientation"
msgstr ""
#: main/main.cpp scene/gui/scroll_container.cpp scene/gui/text_edit.cpp
-#: scene/main/scene_tree.cpp
+#: scene/main/scene_tree.cpp scene/register_scene_types.cpp
msgid "Common"
msgstr ""
@@ -14833,7 +15300,7 @@ msgid "Verbose stdout"
msgstr ""
#: main/main.cpp
-msgid "Frame Delay (msec)"
+msgid "Frame Delay Msec"
msgstr ""
#: main/main.cpp
@@ -14950,11 +15417,6 @@ msgstr ""
msgid "Tooltip Position Offset"
msgstr ""
-#: main/main.cpp modules/mono/editor/csharp_project.cpp
-#: modules/mono/mono_gd/gd_mono.cpp
-msgid "Mono"
-msgstr ""
-
#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp
msgid "Debugger Agent"
msgstr ""
@@ -15476,7 +15938,7 @@ msgstr ""
msgid "Intensity"
msgstr ""
-#: modules/gltf/gltf_light.cpp scene/2d/light_2d.cpp
+#: modules/gltf/gltf_light.cpp scene/2d/light_2d.cpp scene/3d/light.cpp
msgid "Range"
msgstr ""
@@ -15607,11 +16069,6 @@ msgstr ""
msgid "Use Named Skin Binds"
msgstr ""
-#: modules/gltf/gltf_state.cpp scene/3d/physics_joint.cpp
-#, fuzzy
-msgid "Nodes"
-msgstr "Јазол"
-
#: modules/gltf/gltf_state.cpp
msgid "Buffer Views"
msgstr ""
@@ -15621,14 +16078,6 @@ msgid "Accessors"
msgstr ""
#: modules/gltf/gltf_state.cpp
-msgid "Meshes"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp
-msgid "Materials"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp
#, fuzzy
msgid "Scene Name"
msgstr "ВнеÑи клуч тука"
@@ -15644,15 +16093,11 @@ msgstr "Јазол"
msgid "Textures"
msgstr ""
-#: modules/gltf/gltf_state.cpp
+#: modules/gltf/gltf_state.cpp platform/uwp/export/export.cpp
msgid "Images"
msgstr ""
#: modules/gltf/gltf_state.cpp
-msgid "Skins"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp
msgid "Cameras"
msgstr ""
@@ -15682,10 +16127,14 @@ msgid "Src Image"
msgstr ""
#: modules/gridmap/grid_map.cpp
-msgid "Physics Material"
+msgid "Mesh Library"
msgstr ""
#: modules/gridmap/grid_map.cpp
+msgid "Physics Material"
+msgstr ""
+
+#: modules/gridmap/grid_map.cpp scene/3d/visual_instance.cpp
msgid "Use In Baked Light"
msgstr ""
@@ -15712,6 +16161,7 @@ msgstr ""
#: modules/gridmap/grid_map.cpp scene/2d/collision_object_2d.cpp
#: scene/2d/tile_map.cpp scene/3d/collision_object.cpp scene/3d/soft_body.cpp
+#: scene/resources/material.cpp
msgid "Mask"
msgstr ""
@@ -15892,7 +16342,9 @@ msgid "Ultra Quality Ray Count"
msgstr ""
#: modules/minimp3/audio_stream_mp3.cpp
+#: modules/minimp3/resource_importer_mp3.cpp
#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp
+#: modules/stb_vorbis/resource_importer_ogg_vorbis.cpp
msgid "Loop Offset"
msgstr ""
@@ -16916,6 +17368,166 @@ msgid "The package must have at least one '.' separator."
msgstr ""
#: platform/android/export/export_plugin.cpp
+msgid "Use Custom Build"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Export Format"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Keystore"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Debug User"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+msgid "Debug Password"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Release User"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Release Password"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "One Click Deploy"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Clear Previous Install"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp scene/resources/shader.cpp
+msgid "Code"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Min SDK"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Target SDK"
+msgstr "Јазол"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+msgid "Package"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Unique Name"
+msgstr "ВнеÑи клуч тука"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Signed"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Classify As Game"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Retain Data On Uninstall"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Exclude From Recents"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Graphics"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "OpenGL Debug"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "XR Features"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "XR Mode"
+msgstr "СвојÑтва на анимацијата."
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Hand Tracking"
+msgstr "Додади Лента"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Hand Tracking Frequency"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Passthrough"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Immersive Mode"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Support Small"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Support Normal"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Support Large"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Support Xlarge"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "User Data Backup"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Allow"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+msgid "Command Line"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+msgid "Extra Args"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "APK Expansion"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Salt"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Public Key"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Permissions"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Custom Permissions"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
msgid "Select device from the list"
msgstr ""
@@ -17201,6 +17813,161 @@ msgid "The character '%s' is not allowed in Identifier."
msgstr ""
#: platform/iphone/export/export.cpp
+msgid "App Store Team ID"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Provisioning Profile UUID Debug"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Code Sign Identity Debug"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Export Method Debug"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Provisioning Profile UUID Release"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Code Sign Identity Release"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Export Method Release"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Targeted Device Family"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Info"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Identifier"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Signature"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Short Version"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Copyright"
+msgstr "Копирај"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Capabilities"
+msgstr "СвојÑтва на анимацијата."
+
+#: platform/iphone/export/export.cpp
+msgid "Access Wi-Fi"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Push Notifications"
+msgstr ""
+
+#: platform/iphone/export/export.cpp scene/3d/baked_lightmap.cpp
+msgid "User Data"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Accessible From Files App"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Accessible From Itunes Sharing"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Privacy"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Camera Usage Description"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Microphone Usage Description"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Photolibrary Usage Description"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPhone 120 X 120"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPhone 180 X 180"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 76 X 76"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 152 X 152"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 167 X 167"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "App Store 1024 X 1024"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Spotlight 40 X 40"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Spotlight 80 X 80"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Storyboard"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Use Launch Screen Storyboard"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Image Scale Mode"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Custom Image @2x"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Custom Image @3x"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Use Custom BG Color"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Custom BG Color"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
msgid "App Store Team ID not specified - cannot configure the project."
msgstr ""
@@ -17237,6 +18004,74 @@ msgid "Could not read file:"
msgstr ""
#: platform/javascript/export/export.cpp
+msgid "Variant"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Export Type"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "VRAM Texture Compression"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "For Desktop"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "For Mobile"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Html"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Export Icon"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Custom Html Shell"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Head Include"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Canvas Resize Policy"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Focus Canvas On Start"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Experimental Virtual Keyboard"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Progressive Web App"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Offline Page"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 144 X 144"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 180 X 180"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 512 X 512"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
msgid "Could not read HTML shell:"
msgstr ""
@@ -17341,6 +18176,177 @@ msgid "Unknown object type."
msgstr ""
#: platform/osx/export/export.cpp
+msgid "App Category"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "High Res"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Location Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Address Book Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Calendar Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Photos Library Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Desktop Folder Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Documents Folder Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Downloads Folder Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Network Volumes Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Removable Volumes Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#, fuzzy
+msgid "Codesign"
+msgstr "Јазол"
+
+#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
+#: platform/windows/export/export.cpp
+msgid "Identity"
+msgstr ""
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#, fuzzy
+msgid "Timestamp"
+msgstr "Време:"
+
+#: platform/osx/export/export.cpp
+msgid "Hardened Runtime"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Replace Existing Signature"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Entitlements"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Custom File"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Allow JIT Code Execution"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Allow Unsigned Executable Memory"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Allow Dyld Environment Variables"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Disable Library Validation"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Audio Input"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Address Book"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Calendars"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Photos Library"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Apple Events"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Debugging"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "App Sandbox"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Network Server"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Network Client"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Device Usb"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Device Bluetooth"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Files Downloads"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Files Pictures"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Files Music"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Files Movies"
+msgstr ""
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+msgid "Custom Options"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Apple ID Name"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Apple ID Password"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Apple Team ID"
+msgstr ""
+
+#: platform/osx/export/export.cpp
msgid ""
"Note: The notarization process generally takes less than an hour. When the "
"process is completed, you'll receive an email."
@@ -17530,6 +18536,123 @@ msgid "Force Builtin Codesign"
msgstr ""
#: platform/uwp/export/export.cpp
+msgid "Architecture"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Display Name"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Short Name"
+msgstr "ВнеÑи клуч тука"
+
+#: platform/uwp/export/export.cpp
+msgid "Publisher"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Publisher Display Name"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Product Guid"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Publisher Guid"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Signing"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Certificate"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Algorithm"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Major"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Minor"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Build"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Revision"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Landscape"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Portrait"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Landscape Flipped"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Portrait Flipped"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Store Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 44 X 44 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 71 X 71 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 150 X 150 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 310 X 310 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Wide 310 X 150 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Splash Screen"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Tiles"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Square 150 X 150"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Wide 310 X 150"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Square 310 X 310"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
msgid "Invalid package short name."
msgstr ""
@@ -17594,11 +18717,43 @@ msgid "Debug Certificate"
msgstr ""
#: platform/uwp/export/export.cpp
-msgid "Debug Password"
+msgid "Debug Algorithm"
msgstr ""
-#: platform/uwp/export/export.cpp
-msgid "Debug Algorithm"
+#: platform/windows/export/export.cpp
+msgid "Identity Type"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Timestamp Server URL"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Digest Algorithm"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "File Version"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Product Version"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Company Name"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Product Name"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "File Description"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Trademarks"
msgstr ""
#: platform/windows/export/export.cpp
@@ -17665,12 +18820,14 @@ msgstr ""
msgid "Centered"
msgstr ""
-#: scene/2d/animated_sprite.cpp scene/2d/camera_2d.cpp scene/2d/light_2d.cpp
+#: scene/2d/animated_sprite.cpp scene/2d/camera_2d.cpp
+#: scene/2d/cpu_particles_2d.cpp scene/2d/light_2d.cpp
#: scene/2d/parallax_background.cpp scene/2d/parallax_layer.cpp
#: scene/2d/path_2d.cpp scene/2d/polygon_2d.cpp scene/2d/sprite.cpp
-#: scene/3d/path.cpp scene/3d/physics_body.cpp scene/3d/sprite_3d.cpp
-#: scene/gui/graph_node.cpp scene/gui/rich_text_effect.cpp
-#: scene/main/canvas_layer.cpp scene/resources/material.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/path.cpp scene/3d/physics_body.cpp
+#: scene/3d/sprite_3d.cpp scene/gui/graph_node.cpp
+#: scene/gui/rich_text_effect.cpp scene/main/canvas_layer.cpp
+#: scene/resources/material.cpp scene/resources/particles_material.cpp
#: scene/resources/style_box.cpp
msgid "Offset"
msgstr ""
@@ -17735,11 +18892,6 @@ msgstr ""
msgid "Override"
msgstr ""
-#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
-#: scene/audio/audio_stream_player.cpp scene/gui/video_player.cpp
-msgid "Stream"
-msgstr ""
-
#: scene/2d/audio_stream_player_2d.cpp scene/audio/audio_stream_player.cpp
#: scene/gui/video_player.cpp servers/audio/effects/audio_effect_amplify.cpp
msgid "Volume dB"
@@ -17763,12 +18915,12 @@ msgid "Stream Paused"
msgstr ""
#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
-#: scene/3d/reflection_probe.cpp scene/3d/visual_instance.cpp
-#: scene/resources/material.cpp
+#: scene/3d/light.cpp scene/3d/reflection_probe.cpp
+#: scene/3d/visual_instance.cpp scene/resources/material.cpp
msgid "Max Distance"
msgstr ""
-#: scene/2d/audio_stream_player_2d.cpp
+#: scene/2d/audio_stream_player_2d.cpp scene/3d/light.cpp
msgid "Attenuation"
msgstr ""
@@ -17817,6 +18969,21 @@ msgstr ""
msgid "Limit"
msgstr ""
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/style_box.cpp
+msgid "Left"
+msgstr ""
+
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/style_box.cpp
+msgid "Right"
+msgstr ""
+
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/dynamic_font.cpp scene/resources/style_box.cpp
+msgid "Bottom"
+msgstr ""
+
#: scene/2d/camera_2d.cpp
msgid "Smoothed"
msgstr ""
@@ -18011,12 +19178,6 @@ msgstr ""
msgid "Emitting"
msgstr ""
-#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp scene/3d/area.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
-#: scene/resources/environment.cpp
-msgid "Amount"
-msgstr ""
-
#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp
#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
msgid "Lifetime"
@@ -18076,17 +19237,12 @@ msgstr ""
#: scene/2d/mesh_instance_2d.cpp scene/2d/multimesh_instance_2d.cpp
#: scene/2d/particles_2d.cpp scene/2d/polygon_2d.cpp scene/2d/sprite.cpp
#: scene/3d/sprite_3d.cpp scene/gui/nine_patch_rect.cpp
-#: scene/gui/texture_rect.cpp scene/resources/sky.cpp
-#: scene/resources/style_box.cpp scene/resources/visual_shader_nodes.cpp
+#: scene/gui/texture_rect.cpp scene/resources/material.cpp
+#: scene/resources/sky.cpp scene/resources/style_box.cpp
+#: scene/resources/visual_shader_nodes.cpp
msgid "Texture"
msgstr ""
-#: scene/2d/cpu_particles_2d.cpp scene/2d/mesh_instance_2d.cpp
-#: scene/2d/multimesh_instance_2d.cpp scene/2d/particles_2d.cpp
-#: scene/2d/sprite.cpp scene/resources/style_box.cpp
-msgid "Normal Map"
-msgstr ""
-
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
msgid "Emission Shape"
@@ -18106,9 +19262,8 @@ msgid "Normals"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/3d/sprite_3d.cpp scene/resources/material.cpp
-#: scene/resources/particles_material.cpp scene/resources/texture.cpp
-msgid "Flags"
+#: scene/resources/particles_material.cpp
+msgid "Align Y"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
@@ -18128,6 +19283,11 @@ msgid "Initial Velocity"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Velocity Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp servers/physics_2d_server.cpp
#: servers/physics_server.cpp
msgid "Angular Velocity"
@@ -18135,6 +19295,11 @@ msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+msgid "Velocity Curve"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
msgid "Orbit Velocity"
msgstr ""
@@ -18145,6 +19310,21 @@ msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+msgid "Accel"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Accel Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Accel Curve"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
msgid "Radial Accel"
msgstr ""
@@ -18154,19 +19334,52 @@ msgid "Tangential Accel"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/2d/joints_2d.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/vehicle_body.cpp
-#: scene/resources/particles_material.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/physics_joint.cpp
+#: scene/3d/vehicle_body.cpp scene/resources/particles_material.cpp
#: servers/audio/effects/audio_effect_reverb.cpp
msgid "Damping"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+msgid "Damping Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Damping Curve"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp scene/3d/light.cpp
+#: scene/resources/particles_material.cpp
msgid "Angle"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+msgid "Angle Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Angle Curve"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#, fuzzy
+msgid "Scale Amount"
+msgstr "ВнеÑи клуч тука"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+msgid "Scale Amount Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+msgid "Scale Amount Curve"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
msgid "Color Ramp"
msgstr ""
@@ -18180,6 +19393,42 @@ msgstr ""
msgid "Hue Variation"
msgstr ""
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Variation"
+msgstr "СвојÑтва на анимацијата."
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Variation Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Variation Curve"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Speed Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Speed Curve"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Offset Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Offset Curve"
+msgstr ""
+
#: scene/2d/joints_2d.cpp
msgid "Node A and Node B must be PhysicsBody2Ds"
msgstr ""
@@ -18211,6 +19460,7 @@ msgid "Node B"
msgstr "Јазол"
#: scene/2d/joints_2d.cpp scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp
+#: scene/3d/light.cpp scene/3d/physics_joint.cpp
#: scene/resources/environment.cpp
msgid "Bias"
msgstr ""
@@ -18219,7 +19469,7 @@ msgstr ""
msgid "Disable Collision"
msgstr ""
-#: scene/2d/joints_2d.cpp
+#: scene/2d/joints_2d.cpp scene/3d/physics_joint.cpp
msgid "Softness"
msgstr ""
@@ -18236,7 +19486,7 @@ msgstr ""
msgid "Rest Length"
msgstr ""
-#: scene/2d/joints_2d.cpp scene/3d/vehicle_body.cpp
+#: scene/2d/joints_2d.cpp scene/3d/physics_joint.cpp scene/3d/vehicle_body.cpp
msgid "Stiffness"
msgstr ""
@@ -18256,7 +19506,7 @@ msgid "Texture Scale"
msgstr ""
#: scene/2d/light_2d.cpp scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp
-#: scene/resources/environment.cpp scene/resources/sky.cpp
+#: scene/3d/light.cpp scene/resources/environment.cpp scene/resources/sky.cpp
msgid "Energy"
msgstr ""
@@ -18292,11 +19542,6 @@ msgstr ""
msgid "Gradient Length"
msgstr ""
-#: scene/2d/light_2d.cpp scene/gui/control.cpp
-#: scene/resources/navigation_mesh.cpp
-msgid "Filter"
-msgstr ""
-
#: scene/2d/light_2d.cpp
msgid "Filter Smooth"
msgstr ""
@@ -18669,10 +19914,6 @@ msgid "Applied Forces"
msgstr ""
#: scene/2d/physics_body_2d.cpp
-msgid "Force"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp
msgid "Torque"
msgstr ""
@@ -18685,7 +19926,7 @@ msgid "Sync To Physics"
msgstr ""
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-msgid "Moving platform"
+msgid "Moving Platform"
msgstr ""
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
@@ -18694,7 +19935,7 @@ msgstr ""
#: scene/2d/physics_body_2d.cpp scene/2d/touch_screen_button.cpp
#: scene/3d/physics_body.cpp scene/gui/texture_button.cpp
-#: scene/resources/line_shape_2d.cpp
+#: scene/resources/line_shape_2d.cpp scene/resources/material.cpp
msgid "Normal"
msgstr ""
@@ -18903,6 +20144,31 @@ msgid ""
"as parent."
msgstr ""
+#: scene/2d/visibility_notifier_2d.cpp scene/3d/visibility_notifier.cpp
+#, fuzzy
+msgid "Pause Animations"
+msgstr "СвојÑтва на анимацијата."
+
+#: scene/2d/visibility_notifier_2d.cpp scene/3d/visibility_notifier.cpp
+msgid "Freeze Bodies"
+msgstr ""
+
+#: scene/2d/visibility_notifier_2d.cpp
+msgid "Pause Particles"
+msgstr ""
+
+#: scene/2d/visibility_notifier_2d.cpp
+msgid "Pause Animated Sprites"
+msgstr ""
+
+#: scene/2d/visibility_notifier_2d.cpp
+msgid "Process Parent"
+msgstr ""
+
+#: scene/2d/visibility_notifier_2d.cpp
+msgid "Physics Process Parent"
+msgstr ""
+
#: scene/3d/area.cpp
msgid "Reverb Bus"
msgstr ""
@@ -18992,6 +20258,7 @@ msgid "Attenuation Filter"
msgstr ""
#: scene/3d/audio_stream_player_3d.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
#: servers/audio/effects/audio_effect_filter.cpp
msgid "Cutoff Hz"
msgstr ""
@@ -19032,10 +20299,6 @@ msgid "Octree"
msgstr ""
#: scene/3d/baked_lightmap.cpp
-msgid "User Data"
-msgstr ""
-
-#: scene/3d/baked_lightmap.cpp
msgid "Finding meshes and lights"
msgstr ""
@@ -19266,6 +20529,14 @@ msgid "Ring Axis"
msgstr ""
#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
+msgid "Rotate Y"
+msgstr ""
+
+#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
+msgid "Disable Z"
+msgstr ""
+
+#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
msgid "Flatness"
msgstr ""
@@ -19301,15 +20572,11 @@ msgstr ""
msgid "Dynamic Range"
msgstr ""
-#: scene/3d/gi_probe.cpp
+#: scene/3d/gi_probe.cpp scene/3d/light.cpp
msgid "Normal Bias"
msgstr ""
#: scene/3d/gi_probe.cpp
-msgid "Compress"
-msgstr ""
-
-#: scene/3d/gi_probe.cpp
msgid "Plotting Meshes"
msgstr ""
@@ -19335,15 +20602,27 @@ msgid "Subdiv"
msgstr ""
#: scene/3d/light.cpp
+msgid "Indirect Energy"
+msgstr ""
+
+#: scene/3d/light.cpp
#, fuzzy
msgid "Negative"
msgstr "GDNative(ГДДомороден)"
#: scene/3d/light.cpp
+msgid "Specular"
+msgstr ""
+
+#: scene/3d/light.cpp
msgid "Bake Mode"
msgstr ""
#: scene/3d/light.cpp
+msgid "Contact"
+msgstr ""
+
+#: scene/3d/light.cpp
msgid "Reverse Cull Face"
msgstr ""
@@ -19352,10 +20631,26 @@ msgid "Directional Shadow"
msgstr ""
#: scene/3d/light.cpp
+msgid "Split 1"
+msgstr ""
+
+#: scene/3d/light.cpp
+msgid "Split 2"
+msgstr ""
+
+#: scene/3d/light.cpp
+msgid "Split 3"
+msgstr ""
+
+#: scene/3d/light.cpp
msgid "Blend Splits"
msgstr ""
#: scene/3d/light.cpp
+msgid "Bias Split Scale"
+msgstr ""
+
+#: scene/3d/light.cpp
msgid "Depth Range"
msgstr ""
@@ -19380,6 +20675,10 @@ msgstr ""
msgid "Spot"
msgstr ""
+#: scene/3d/light.cpp
+msgid "Angle Attenuation"
+msgstr ""
+
#: scene/3d/mesh_instance.cpp
msgid "Software Skinning"
msgstr ""
@@ -19496,6 +20795,54 @@ msgid "Axis Lock"
msgstr ""
#: scene/3d/physics_body.cpp
+msgid "Linear X"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Linear Y"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Linear Z"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Angular X"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Angular Y"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Angular Z"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Motion X"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Motion Y"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Motion Z"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Move Lock X"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Move Lock Y"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Move Lock Z"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
msgid "Body Offset"
msgstr ""
@@ -19528,6 +20875,14 @@ msgid "Exclude Nodes"
msgstr ""
#: scene/3d/physics_joint.cpp
+msgid "Params"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Impulse Clamp"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit"
msgstr ""
@@ -19539,6 +20894,48 @@ msgstr ""
msgid "Lower"
msgstr ""
+#: scene/3d/physics_joint.cpp scene/3d/vehicle_body.cpp
+msgid "Relaxation"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Motor"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Target Velocity"
+msgstr "Јазол"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Max Impulse"
+msgstr "ВредноÑÑ‚:"
+
+#: scene/3d/physics_joint.cpp
+msgid "Linear Limit"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Upper Distance"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Lower Distance"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Restitution"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Linear Motion"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Linear Ortho"
+msgstr ""
+
#: scene/3d/physics_joint.cpp
msgid "Upper Angle"
msgstr ""
@@ -19548,6 +20945,14 @@ msgid "Lower Angle"
msgstr ""
#: scene/3d/physics_joint.cpp
+msgid "Angular Motion"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Ortho"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
#, fuzzy
msgid "Swing Span"
msgstr "Зачувување на Ñцената"
@@ -19557,17 +20962,89 @@ msgid "Twist Span"
msgstr ""
#: scene/3d/physics_joint.cpp
+msgid "Linear Limit X"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Linear Motor X"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Force Limit"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Linear Spring X"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Equilibrium Point"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit X"
msgstr ""
#: scene/3d/physics_joint.cpp
+msgid "Erp"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Motor X"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Spring X"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Linear Limit Y"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Linear Motor Y"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Linear Spring Y"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit Y"
msgstr ""
#: scene/3d/physics_joint.cpp
+msgid "Angular Motor Y"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Spring Y"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Linear Limit Z"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Linear Motor Z"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Linear Spring Z"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit Z"
msgstr ""
+#: scene/3d/physics_joint.cpp
+msgid "Angular Motor Z"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Spring Z"
+msgstr ""
+
#: scene/3d/portal.cpp
msgid "The RoomManager should not be a child or grandchild of a Portal."
msgstr ""
@@ -19672,7 +21149,7 @@ msgstr ""
msgid "Use Default Simplify"
msgstr ""
-#: scene/3d/room.cpp
+#: scene/3d/room.cpp scene/3d/room_manager.cpp
msgid "Room Simplify"
msgstr ""
@@ -19710,6 +21187,12 @@ msgstr ""
msgid "Main"
msgstr ""
+#: scene/3d/room_manager.cpp scene/animation/animation_player.cpp
+#: scene/animation/animation_tree.cpp scene/animation/animation_tree_player.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+msgid "Active"
+msgstr ""
+
#: scene/3d/room_manager.cpp
msgid "Roomlist"
msgstr ""
@@ -19732,6 +21215,46 @@ msgid "Gameplay"
msgstr ""
#: scene/3d/room_manager.cpp
+msgid "Gameplay Monitor"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "Use Secondary PVS"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "Merge Meshes"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "Show Margins"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "Debug Sprawl"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "Overlap Warning Threshold"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "Preview Camera"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "Portal Depth Limit"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "Default Portal Margin"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "Roaming Expansion Margin"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
msgid ""
"RoomList path is invalid.\n"
"Please check the RoomList branch has been assigned in the RoomManager."
@@ -19850,6 +21373,18 @@ msgstr ""
msgid "Billboard"
msgstr ""
+#: scene/3d/sprite_3d.cpp scene/resources/material.cpp
+msgid "Transparent"
+msgstr ""
+
+#: scene/3d/sprite_3d.cpp
+msgid "Shaded"
+msgstr ""
+
+#: scene/3d/sprite_3d.cpp
+msgid "Double Sided"
+msgstr ""
+
#: scene/3d/sprite_3d.cpp
msgid "Alpha Cut"
msgstr ""
@@ -19915,10 +21450,6 @@ msgstr ""
msgid "Max Force"
msgstr "Огледало"
-#: scene/3d/vehicle_body.cpp
-msgid "Relaxation"
-msgstr ""
-
#: scene/3d/visibility_notifier.cpp
msgid "AABB"
msgstr ""
@@ -20041,7 +21572,7 @@ msgid "Fadeout Time"
msgstr ""
#: scene/animation/animation_blend_tree.cpp
-msgid "autorestart_"
+msgid "Auto Restart"
msgstr ""
#: scene/animation/animation_blend_tree.cpp
@@ -20114,12 +21645,6 @@ msgstr ""
msgid "Default Blend Time"
msgstr ""
-#: scene/animation/animation_player.cpp scene/animation/animation_tree.cpp
-#: scene/animation/animation_tree_player.cpp
-#: servers/audio/effects/audio_effect_delay.cpp
-msgid "Active"
-msgstr ""
-
#: scene/animation/animation_player.cpp
msgid "Method Call Mode"
msgstr ""
@@ -20232,10 +21757,6 @@ msgstr "Јазол"
msgid "Max Iterations"
msgstr ""
-#: scene/animation/tween.cpp scene/resources/texture.cpp
-msgid "Repeat"
-msgstr ""
-
#: scene/animation/tween.cpp
msgid "Playback Process Mode"
msgstr ""
@@ -20262,18 +21783,6 @@ msgstr ""
msgid "Alignment"
msgstr ""
-#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
-#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
-#: scene/resources/style_box.cpp
-msgid "Horizontal"
-msgstr ""
-
-#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
-#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
-#: scene/resources/style_box.cpp
-msgid "Vertical"
-msgstr ""
-
#: scene/gui/base_button.cpp
msgid "Shortcut In Tooltip"
msgstr ""
@@ -20359,10 +21868,6 @@ msgid "HSV"
msgstr ""
#: scene/gui/color_picker.cpp
-msgid "Raw"
-msgstr ""
-
-#: scene/gui/color_picker.cpp
msgid "Switch between hexadecimal and code values."
msgstr ""
@@ -20416,6 +21921,30 @@ msgid "Focus"
msgstr ""
#: scene/gui/control.cpp
+msgid "Neighbour Left"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Neighbour Top"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Neighbour Right"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Neighbour Bottom"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Next"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Previous"
+msgstr ""
+
+#: scene/gui/control.cpp
msgid "Mouse"
msgstr ""
@@ -20448,7 +21977,7 @@ msgid "Dialog"
msgstr ""
#: scene/gui/dialogs.cpp
-msgid "Hide On Ok"
+msgid "Hide On OK"
msgstr ""
#: scene/gui/dialogs.cpp scene/gui/label.cpp
@@ -20534,7 +22063,7 @@ msgid "Timers"
msgstr "Време:"
#: scene/gui/item_list.cpp scene/gui/popup_menu.cpp scene/gui/tree.cpp
-msgid "Incremental Search Max Interval (msec)"
+msgid "Incremental Search Max Interval Msec"
msgstr ""
#: scene/gui/item_list.cpp scene/gui/tree.cpp
@@ -21038,6 +22567,22 @@ msgstr ""
msgid "Nine Patch Stretch"
msgstr ""
+#: scene/gui/texture_progress.cpp
+msgid "Stretch Margin Left"
+msgstr ""
+
+#: scene/gui/texture_progress.cpp
+msgid "Stretch Margin Top"
+msgstr ""
+
+#: scene/gui/texture_progress.cpp
+msgid "Stretch Margin Right"
+msgstr ""
+
+#: scene/gui/texture_progress.cpp
+msgid "Stretch Margin Bottom"
+msgstr ""
+
#: scene/gui/tree.cpp
msgid "Custom Minimum Height"
msgstr ""
@@ -21072,7 +22617,7 @@ msgid "Paused"
msgstr ""
#: scene/gui/video_player.cpp
-msgid "Buffering (msec)"
+msgid "Buffering Msec"
msgstr ""
#: scene/gui/video_player.cpp
@@ -21379,6 +22924,22 @@ msgid "Shadow Atlas"
msgstr ""
#: scene/main/viewport.cpp
+msgid "Quad 0"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 1"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 2"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 3"
+msgstr ""
+
+#: scene/main/viewport.cpp
msgid "Canvas Transform"
msgstr ""
@@ -21391,6 +22952,10 @@ msgid "Tooltip Delay (sec)"
msgstr ""
#: scene/register_scene_types.cpp
+msgid "Swap OK Cancel"
+msgstr ""
+
+#: scene/register_scene_types.cpp
msgid "Use hiDPI"
msgstr ""
@@ -21403,18 +22968,6 @@ msgid "Custom Font"
msgstr ""
#: scene/resources/audio_stream_sample.cpp
-msgid "Loop Mode"
-msgstr ""
-
-#: scene/resources/audio_stream_sample.cpp
-msgid "Loop Begin"
-msgstr ""
-
-#: scene/resources/audio_stream_sample.cpp
-msgid "Loop End"
-msgstr ""
-
-#: scene/resources/audio_stream_sample.cpp
#: servers/audio/effects/audio_stream_generator.cpp servers/audio_server.cpp
msgid "Mix Rate"
msgstr ""
@@ -21464,6 +23017,15 @@ msgid "Extra Spacing"
msgstr ""
#: scene/resources/dynamic_font.cpp
+msgid "Char"
+msgstr ""
+
+#: scene/resources/dynamic_font.cpp scene/resources/world.cpp
+#: scene/resources/world_2d.cpp
+msgid "Space"
+msgstr ""
+
+#: scene/resources/dynamic_font.cpp
msgid "Font"
msgstr ""
@@ -21661,6 +23223,42 @@ msgid "Glow"
msgstr ""
#: scene/resources/environment.cpp
+msgid "Levels"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "1"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "2"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "3"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "4"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "5"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "6"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "7"
+msgstr ""
+
+#: scene/resources/environment.cpp
msgid "Bloom"
msgstr ""
@@ -21741,9 +23339,62 @@ msgid "Next Pass"
msgstr ""
#: scene/resources/material.cpp
+msgid "Use Shadow To Opacity"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Unshaded"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Vertex Lighting"
+msgstr "ПромеÑти Безиер Точка"
+
+#: scene/resources/material.cpp
+msgid "No Depth Test"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Use Point Size"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "World Triplanar"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Fixed Size"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Albedo Tex Force sRGB"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Do Not Receive Shadows"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Disable Ambient Light"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Ensure Correct Normals"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Vertex Color"
msgstr ""
+#: scene/resources/material.cpp
+msgid "Use As Albedo"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Is sRGB"
+msgstr ""
+
#: scene/resources/material.cpp servers/visual_server.cpp
msgid "Parameters"
msgstr ""
@@ -21773,6 +23424,10 @@ msgid "Billboard Mode"
msgstr ""
#: scene/resources/material.cpp
+msgid "Billboard Keep Scale"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Grow"
msgstr ""
@@ -21781,6 +23436,10 @@ msgid "Grow Amount"
msgstr ""
#: scene/resources/material.cpp
+msgid "Use Alpha Scissor"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Alpha Scissor Threshold"
msgstr ""
@@ -21809,10 +23468,18 @@ msgid "Metallic Specular"
msgstr ""
#: scene/resources/material.cpp
+msgid "Metallic Texture"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Metallic Texture Channel"
msgstr ""
#: scene/resources/material.cpp
+msgid "Roughness Texture"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Roughness Texture Channel"
msgstr ""
@@ -21829,6 +23496,14 @@ msgid "Emission Operator"
msgstr ""
#: scene/resources/material.cpp
+msgid "Emission On UV2"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Emission Texture"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "NormalMap"
msgstr ""
@@ -21841,6 +23516,10 @@ msgid "Rim Tint"
msgstr ""
#: scene/resources/material.cpp
+msgid "Rim Texture"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Clearcoat"
msgstr ""
@@ -21849,14 +23528,26 @@ msgid "Clearcoat Gloss"
msgstr ""
#: scene/resources/material.cpp
+msgid "Clearcoat Texture"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Anisotropy"
msgstr ""
#: scene/resources/material.cpp
+msgid "Anisotropy Flowmap"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Ambient Occlusion"
msgstr ""
#: scene/resources/material.cpp
+msgid "On UV2"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Texture Channel"
msgstr ""
@@ -21891,6 +23582,11 @@ msgid "Transmission"
msgstr ""
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Transmission Texture"
+msgstr "Ðнимација Промени Прелаз"
+
+#: scene/resources/material.cpp
msgid "Refraction"
msgstr ""
@@ -21907,6 +23603,10 @@ msgid "UV1"
msgstr ""
#: scene/resources/material.cpp
+msgid "Triplanar"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Triplanar Sharpness"
msgstr ""
@@ -22095,6 +23795,14 @@ msgstr ""
msgid "Point Count"
msgstr "ВнеÑи клуч тука"
+#: scene/resources/particles_material.cpp
+msgid "Scale Random"
+msgstr ""
+
+#: scene/resources/particles_material.cpp
+msgid "Scale Curve"
+msgstr ""
+
#: scene/resources/physics_material.cpp
msgid "Rough"
msgstr ""
@@ -22152,10 +23860,6 @@ msgid "A"
msgstr ""
#: scene/resources/shader.cpp
-msgid "Code"
-msgstr ""
-
-#: scene/resources/shader.cpp
msgid "Custom Defines"
msgstr ""
@@ -22240,14 +23944,6 @@ msgid "Grow End"
msgstr ""
#: scene/resources/texture.cpp
-msgid "Storage"
-msgstr ""
-
-#: scene/resources/texture.cpp
-msgid "Lossy Quality"
-msgstr ""
-
-#: scene/resources/texture.cpp
msgid "Load Path"
msgstr ""
@@ -22358,10 +24054,6 @@ msgstr ""
msgid "Fallback Environment"
msgstr ""
-#: scene/resources/world.cpp scene/resources/world_2d.cpp
-msgid "Space"
-msgstr ""
-
#: scene/resources/world.cpp
msgid "Scenario"
msgstr ""
@@ -22435,8 +24127,33 @@ msgstr ""
msgid "Wet"
msgstr ""
-#: servers/audio/effects/audio_effect_compressor.cpp
-msgid "Threshold"
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "Voice"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+msgid "Delay (ms)"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_phaser.cpp
+msgid "Rate Hz"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "Depth (ms)"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+msgid "Level dB"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+#: servers/audio/effects/audio_effect_panner.cpp
+msgid "Pan"
msgstr ""
#: servers/audio/effects/audio_effect_compressor.cpp
@@ -22461,19 +24178,6 @@ msgid "Tap 1"
msgstr ""
#: servers/audio/effects/audio_effect_delay.cpp
-msgid "Delay (ms)"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_delay.cpp
-msgid "Level dB"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_delay.cpp
-#: servers/audio/effects/audio_effect_panner.cpp
-msgid "Pan"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_delay.cpp
msgid "Tap 2"
msgstr ""
@@ -22531,10 +24235,6 @@ msgstr ""
msgid "Range Max Hz"
msgstr ""
-#: servers/audio/effects/audio_effect_phaser.cpp
-msgid "Rate Hz"
-msgstr ""
-
#: servers/audio/effects/audio_effect_pitch_shift.cpp
msgid "Oversampling"
msgstr ""
@@ -22549,7 +24249,7 @@ msgid "Predelay"
msgstr ""
#: servers/audio/effects/audio_effect_reverb.cpp
-msgid "(msec)"
+msgid "Msec"
msgstr ""
#: servers/audio/effects/audio_effect_reverb.cpp
diff --git a/editor/translations/ml.po b/editor/translations/ml.po
index 979616e92d..b8a4dbe993 100644
--- a/editor/translations/ml.po
+++ b/editor/translations/ml.po
@@ -21,7 +21,7 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 3.10-dev\n"
-#: core/bind/core_bind.cpp
+#: core/bind/core_bind.cpp main/main.cpp
msgid "Tablet Driver"
msgstr ""
@@ -114,8 +114,8 @@ msgstr "ചലനം à´šàµà´±àµà´±àµ½"
#: core/bind/core_bind.cpp editor/editor_settings.cpp main/main.cpp
#: modules/gdscript/gdscript_editor.cpp modules/gridmap/grid_map.cpp
#: modules/mono/csharp_script.cpp modules/visual_script/visual_script_nodes.cpp
-#: scene/2d/tile_map.cpp scene/3d/camera.cpp scene/gui/control.cpp
-#: scene/gui/graph_edit.cpp scene/main/viewport.cpp
+#: scene/2d/tile_map.cpp scene/3d/camera.cpp scene/3d/light.cpp
+#: scene/gui/control.cpp scene/gui/graph_edit.cpp scene/main/viewport.cpp
#: scene/resources/dynamic_font.cpp scene/resources/navigation_mesh.cpp
#: scene/resources/primitive_meshes.cpp scene/resources/sky.cpp
#: scene/resources/style_box.cpp scene/resources/texture.cpp
@@ -209,8 +209,7 @@ msgid "Data"
msgstr ""
#: core/io/file_access_network.cpp core/register_core_types.cpp
-#: editor/editor_settings.cpp editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp main/main.cpp
+#: editor/editor_settings.cpp main/main.cpp
#: modules/gdscript/language_server/gdscript_language_server.cpp
msgid "Network"
msgstr ""
@@ -471,9 +470,10 @@ msgstr ""
msgid "Relative"
msgstr ""
-#: core/os/input_event.cpp scene/2d/camera_2d.cpp
-#: scene/3d/interpolated_camera.cpp scene/animation/animation_player.cpp
-#: scene/resources/environment.cpp
+#: core/os/input_event.cpp scene/2d/camera_2d.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/interpolated_camera.cpp
+#: scene/animation/animation_player.cpp scene/resources/environment.cpp
+#: scene/resources/particles_material.cpp
msgid "Speed"
msgstr ""
@@ -518,8 +518,9 @@ msgstr ""
msgid "Pitch"
msgstr ""
-#: core/os/input_event.cpp scene/2d/physics_body_2d.cpp
-#: scene/3d/physics_body.cpp
+#: core/os/input_event.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/physics_body_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/3d/physics_body.cpp scene/resources/particles_material.cpp
msgid "Velocity"
msgstr ""
@@ -536,6 +537,8 @@ msgid "Controller Value"
msgstr ""
#: core/project_settings.cpp editor/editor_node.cpp main/main.cpp
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/windows/export/export.cpp
#, fuzzy
msgid "Application"
msgstr "ചലനം à´šàµà´±àµà´±àµ½"
@@ -552,13 +555,16 @@ msgstr ""
#: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp
#: editor/editor_plugin_settings.cpp editor/editor_profiler.cpp
#: editor/project_manager.cpp editor/settings_config_dialog.cpp
-#: modules/gdnative/nativescript/nativescript.cpp scene/2d/area_2d.cpp
-#: scene/3d/area.cpp scene/main/node.cpp
+#: modules/gdnative/nativescript/nativescript.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/osx/export/export.cpp scene/2d/area_2d.cpp scene/3d/area.cpp
+#: scene/main/node.cpp
msgid "Name"
msgstr ""
#: core/project_settings.cpp editor/editor_help.cpp
-#: modules/visual_script/visual_script_nodes.cpp
+#: modules/visual_script/visual_script_nodes.cpp platform/uwp/export/export.cpp
+#: platform/windows/export/export.cpp
msgid "Description"
msgstr ""
@@ -594,7 +600,7 @@ msgid "Custom User Dir Name"
msgstr ""
#: core/project_settings.cpp editor/animation_track_editor.cpp
-#: editor/editor_audio_buses.cpp servers/audio_server.cpp
+#: editor/editor_audio_buses.cpp main/main.cpp servers/audio_server.cpp
msgid "Audio"
msgstr ""
@@ -745,10 +751,13 @@ msgstr ""
msgid "Sharpen Intensity"
msgstr ""
-#: core/project_settings.cpp editor/editor_node.cpp editor/editor_settings.cpp
-#: editor/plugins/script_editor_plugin.cpp editor/project_export.cpp
-#: main/main.cpp modules/gdscript/gdscript.cpp
-#: modules/visual_script/visual_script.cpp scene/3d/room_manager.cpp
+#: core/project_settings.cpp editor/editor_export.cpp editor/editor_node.cpp
+#: editor/editor_settings.cpp editor/plugins/script_editor_plugin.cpp
+#: editor/project_export.cpp main/main.cpp modules/gdscript/gdscript.cpp
+#: modules/visual_script/visual_script.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp scene/3d/room_manager.cpp
#: scene/main/scene_tree.cpp scene/resources/shape_2d.cpp
#: servers/visual_server.cpp
msgid "Debug"
@@ -971,6 +980,7 @@ msgid "Subsurface Scattering"
msgstr ""
#: drivers/gles3/rasterizer_scene_gles3.cpp
+#: editor/import/resource_importer_texture.cpp
#: editor/plugins/spatial_editor_plugin.cpp modules/gltf/gltf_node.cpp
#: modules/gridmap/grid_map.cpp scene/2d/cpu_particles_2d.cpp
#: scene/2d/node_2d.cpp scene/2d/parallax_layer.cpp scene/2d/polygon_2d.cpp
@@ -1266,6 +1276,7 @@ msgid "Editors"
msgstr ""
#: editor/animation_track_editor.cpp editor/editor_settings.cpp
+#: editor/import/resource_importer_scene.cpp
#: editor/plugins/animation_player_editor_plugin.cpp editor/scene_tree_dock.cpp
#: scene/2d/animated_sprite.cpp scene/2d/cpu_particles_2d.cpp
#: scene/2d/sprite.cpp scene/3d/cpu_particles.cpp scene/3d/sprite_3d.cpp
@@ -1484,14 +1495,14 @@ msgstr ""
msgid "Seconds"
msgstr ""
-#: editor/animation_track_editor.cpp
+#: editor/animation_track_editor.cpp editor/import/resource_importer_scene.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp main/main.cpp
#: scene/resources/texture.cpp
msgid "FPS"
msgstr ""
#: editor/animation_track_editor.cpp editor/editor_plugin_settings.cpp
-#: editor/editor_resource_picker.cpp
+#: editor/editor_resource_picker.cpp editor/import/resource_importer_wav.cpp
#: editor/plugins/polygon_2d_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
@@ -2434,7 +2445,9 @@ msgid "Remove Autoload"
msgstr ""
#: editor/editor_autoload_settings.cpp editor/editor_plugin_settings.cpp
-#: modules/gdscript/gdscript.cpp scene/2d/polygon_2d.cpp scene/3d/area.cpp
+#: modules/gdscript/gdscript.cpp platform/android/export/export_plugin.cpp
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#: scene/2d/polygon_2d.cpp scene/3d/area.cpp scene/3d/physics_joint.cpp
#: scene/3d/reflection_probe.cpp scene/main/canvas_layer.cpp
#: scene/resources/material.cpp servers/visual_server.cpp
msgid "Enable"
@@ -2587,6 +2600,57 @@ msgstr ""
#: editor/editor_export.cpp platform/android/export/export_plugin.cpp
#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
+msgid "Custom Template"
+msgstr ""
+
+#: editor/editor_export.cpp editor/project_export.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp
+msgid "Release"
+msgstr ""
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Binary Format"
+msgstr "à´¤àµà´°à´¿à´®à´¾à´¨ പരിവർതàµà´¤à´¨à´‚ നോകàµà´•àµà´•"
+
+#: editor/editor_export.cpp
+msgid "64 Bits"
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Embed PCK"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Texture Format"
+msgstr "à´¤àµà´°à´¿à´®à´¾à´¨ പരിവർതàµà´¤à´¨à´‚ നോകàµà´•àµà´•"
+
+#: editor/editor_export.cpp
+msgid "BPTC"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "S3TC"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "ETC"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "ETC2"
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "No BPTC Fallbacks"
+msgstr ""
+
+#: editor/editor_export.cpp platform/android/export/export_plugin.cpp
+#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
msgid "Custom debug template not found."
msgstr ""
@@ -2760,6 +2824,7 @@ msgid "Make Current"
msgstr ""
#: editor/editor_feature_profile.cpp editor/editor_node.cpp
+#: editor/import/resource_importer_scene.cpp
#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
msgid "Import"
msgstr ""
@@ -2884,8 +2949,11 @@ msgstr ""
msgid "Display Mode"
msgstr ""
-#: editor/editor_file_dialog.cpp main/main.cpp modules/csg/csg_shape.cpp
-#: modules/visual_script/visual_script_nodes.cpp
+#: editor/editor_file_dialog.cpp
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+#: editor/import/resource_importer_wav.cpp main/main.cpp
+#: modules/csg/csg_shape.cpp modules/visual_script/visual_script_nodes.cpp
#: modules/visual_script/visual_script_yield_nodes.cpp scene/2d/light_2d.cpp
#: scene/2d/physics_body_2d.cpp scene/2d/tile_map.cpp
#: scene/3d/baked_lightmap.cpp scene/3d/light.cpp scene/3d/physics_body.cpp
@@ -3018,7 +3086,9 @@ msgstr ""
msgid "Reimport Missing Imported Files"
msgstr ""
-#: editor/editor_help.cpp
+#: editor/editor_help.cpp scene/2d/camera_2d.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/resources/dynamic_font.cpp
+#: scene/resources/style_box.cpp
msgid "Top"
msgstr ""
@@ -3070,6 +3140,7 @@ msgid "Fonts"
msgstr ""
#: editor/editor_help.cpp editor/plugins/theme_editor_plugin.cpp
+#: platform/iphone/export/export.cpp
msgid "Icons"
msgstr ""
@@ -3231,7 +3302,9 @@ msgstr ""
msgid "Pin value [Disabled because '%s' is editor-only]"
msgstr ""
-#: editor/editor_inspector.cpp editor/scene_tree_dock.cpp
+#: editor/editor_inspector.cpp
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+#: editor/scene_tree_dock.cpp
#: modules/visual_script/visual_script_func_nodes.cpp
#: modules/visual_script/visual_script_nodes.cpp
#: modules/visual_script/visual_script_property_selector.cpp
@@ -3545,6 +3618,14 @@ msgid "Quick Open Script..."
msgstr ""
#: editor/editor_node.cpp
+msgid "Save & Reload"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Save changes to '%s' before reloading?"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "Save & Close"
msgstr ""
@@ -3655,6 +3736,10 @@ msgid "Open Project Manager?"
msgstr ""
#: editor/editor_node.cpp
+msgid "Save changes to the following scene(s) before reloading?"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "Save & Quit"
msgstr ""
@@ -3895,9 +3980,8 @@ msgid "Update Vital Only"
msgstr ""
#: editor/editor_node.cpp
-#, fuzzy
-msgid "Translate Properties"
-msgstr "à´—àµà´£à´‚ നോകàµà´•àµà´•"
+msgid "Localize Settings"
+msgstr ""
#: editor/editor_node.cpp
msgid "Restore Scenes On Load"
@@ -3912,9 +3996,8 @@ msgid "Inspector"
msgstr ""
#: editor/editor_node.cpp
-#, fuzzy
-msgid "Capitalize Properties"
-msgstr "à´—àµà´£à´‚ നോകàµà´•àµà´•"
+msgid "Default Property Name Style"
+msgstr ""
#: editor/editor_node.cpp
msgid "Default Float Step"
@@ -4473,7 +4556,9 @@ msgstr ""
msgid "Update"
msgstr ""
-#: editor/editor_plugin_settings.cpp
+#: editor/editor_plugin_settings.cpp platform/android/export/export_plugin.cpp
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp
msgid "Version"
msgstr ""
@@ -5415,7 +5500,7 @@ msgstr ""
msgid "Rect Custom Position"
msgstr ""
-#: editor/editor_settings.cpp
+#: editor/editor_settings.cpp platform/android/export/export_plugin.cpp
msgid "Screen"
msgstr ""
@@ -5438,6 +5523,19 @@ msgid "Editor SSL Certificates"
msgstr ""
#: editor/editor_settings.cpp
+msgid "HTTP Proxy"
+msgstr ""
+
+#: editor/editor_settings.cpp
+msgid "Host"
+msgstr ""
+
+#: editor/editor_settings.cpp editor/fileserver/editor_file_server.cpp
+#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp
+msgid "Port"
+msgstr ""
+
+#: editor/editor_settings.cpp
msgid "Project Manager"
msgstr ""
@@ -5477,7 +5575,8 @@ msgstr ""
msgid "String Color"
msgstr ""
-#: editor/editor_settings.cpp
+#: editor/editor_settings.cpp platform/javascript/export/export.cpp
+#: platform/uwp/export/export.cpp
msgid "Background Color"
msgstr ""
@@ -5637,22 +5736,6 @@ msgid "Starting the download..."
msgstr ""
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "HTTP Proxy"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Host"
-msgstr ""
-
-#: editor/export_template_manager.cpp editor/fileserver/editor_file_server.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp main/main.cpp
-#: modules/mono/mono_gd/gd_mono.cpp
-msgid "Port"
-msgstr ""
-
-#: editor/export_template_manager.cpp
msgid "Error requesting URL:"
msgstr ""
@@ -5894,6 +5977,7 @@ msgstr ""
#: editor/fileserver/editor_file_server.cpp
#: editor/plugins/version_control_editor_plugin.cpp
+#: platform/uwp/export/export.cpp platform/windows/export/export.cpp
msgid "Password"
msgstr ""
@@ -6257,6 +6341,106 @@ msgstr ""
msgid "Use Ambient"
msgstr ""
+#: editor/import/resource_importer_bitmask.cpp
+msgid "Create From"
+msgstr ""
+
+#: editor/import/resource_importer_bitmask.cpp
+#: servers/audio/effects/audio_effect_compressor.cpp
+msgid "Threshold"
+msgstr ""
+
+#: editor/import/resource_importer_csv_translation.cpp
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_scene.cpp
+#: editor/import/resource_importer_texture.cpp
+#: editor/import/resource_importer_wav.cpp scene/3d/gi_probe.cpp
+msgid "Compress"
+msgstr ""
+
+#: editor/import/resource_importer_csv_translation.cpp
+msgid "Delimiter"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+msgid "No BPTC If RGB"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/sprite_3d.cpp
+#: scene/resources/material.cpp scene/resources/particles_material.cpp
+#: scene/resources/texture.cpp
+msgid "Flags"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/animation/tween.cpp
+#: scene/resources/texture.cpp
+msgid "Repeat"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/2d/light_2d.cpp
+#: scene/gui/control.cpp scene/resources/navigation_mesh.cpp
+msgid "Filter"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+msgid "Mipmaps"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+msgid "Anisotropic"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+msgid "sRGB"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+msgid "Slices"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
+#: scene/resources/style_box.cpp
+msgid "Horizontal"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
+#: scene/resources/style_box.cpp
+msgid "Vertical"
+msgstr ""
+
+#: editor/import/resource_importer_obj.cpp
+#, fuzzy
+msgid "Generate Tangents"
+msgstr "ബെസിയർ ബിനàµà´¦àµ നീകàµà´•àµà´•"
+
+#: editor/import/resource_importer_obj.cpp
+msgid "Scale Mesh"
+msgstr ""
+
+#: editor/import/resource_importer_obj.cpp
+msgid "Offset Mesh"
+msgstr ""
+
+#: editor/import/resource_importer_obj.cpp
+#: editor/import/resource_importer_scene.cpp
+msgid "Octahedral Compression"
+msgstr ""
+
+#: editor/import/resource_importer_obj.cpp
+msgid "Optimize Mesh Flags"
+msgstr ""
+
#: editor/import/resource_importer_scene.cpp
msgid "Import as Single Scene"
msgstr ""
@@ -6297,6 +6481,138 @@ msgstr ""
msgid "Import as Multiple Scenes+Materials"
msgstr ""
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+#: scene/3d/physics_joint.cpp
+msgid "Nodes"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Root Type"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Root Name"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Root Scale"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Custom Script"
+msgstr "à´ªàµà´°à´µàµƒà´¤àµà´¤à´¿à´•ൾ:"
+
+#: editor/import/resource_importer_scene.cpp scene/resources/texture.cpp
+msgid "Storage"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Use Legacy Names"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+msgid "Materials"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Location"
+msgstr "ചലനം à´šàµà´±àµà´±àµ½"
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Keep On Reimport"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+msgid "Meshes"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Ensure Tangents"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Light Baking"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Lightmap Texel Size"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+msgid "Skins"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Use Named Skins"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "External Files"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Store In Subdir"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Filter Script"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Keep Custom Tracks"
+msgstr "പരിവർതàµà´¤à´¨à´‚ ചലിപàµà´ªà´¿à´•àµà´•àµà´•"
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Optimizer"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp main/main.cpp
+#: modules/mono/mono_gd/gd_mono.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp scene/2d/camera_2d.cpp scene/2d/light_2d.cpp
+#: scene/2d/navigation_polygon.cpp scene/2d/ray_cast_2d.cpp scene/2d/sprite.cpp
+#: scene/2d/y_sort.cpp scene/3d/audio_stream_player_3d.cpp
+#: scene/3d/baked_lightmap.cpp scene/3d/interpolated_camera.cpp
+#: scene/3d/light.cpp scene/3d/navigation_mesh_instance.cpp
+#: scene/3d/physics_joint.cpp scene/3d/ray_cast.cpp scene/3d/sprite_3d.cpp
+#: scene/gui/graph_edit.cpp scene/gui/rich_text_label.cpp
+#: scene/resources/curve.cpp scene/resources/environment.cpp
+#: scene/resources/material.cpp
+msgid "Enabled"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Max Linear Error"
+msgstr "à´•à´£àµà´£à´¾à´Ÿà´¿"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Max Angular Error"
+msgstr "à´•à´£àµà´£à´¾à´Ÿà´¿"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Max Angle"
+msgstr "വില:"
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Remove Unused Tracks"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Clips"
+msgstr "ചലനരേഖകൾ:"
+
+#: editor/import/resource_importer_scene.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/particles_2d.cpp scene/3d/area.cpp scene/3d/cpu_particles.cpp
+#: scene/3d/particles.cpp scene/resources/environment.cpp
+msgid "Amount"
+msgstr ""
+
#: editor/import/resource_importer_scene.cpp
#: editor/plugins/mesh_library_editor_plugin.cpp
msgid "Import Scene"
@@ -6338,12 +6654,137 @@ msgstr ""
msgid "Saving..."
msgstr ""
+#: editor/import/resource_importer_texture.cpp scene/resources/texture.cpp
+msgid "Lossy Quality"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "HDR Mode"
+msgstr "വിളി രീതി നോകàµà´•àµà´•"
+
+#: editor/import/resource_importer_texture.cpp
+msgid "BPTC LDR"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/mesh_instance_2d.cpp scene/2d/multimesh_instance_2d.cpp
+#: scene/2d/particles_2d.cpp scene/2d/sprite.cpp scene/resources/style_box.cpp
+msgid "Normal Map"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Process"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Fix Alpha Border"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Premult Alpha"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Hdr As Srgb"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Invert Color"
+msgstr "à´ªàµà´°à´µàµƒà´¤àµà´¤à´¿à´•ൾ:"
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Normal Map Invert Y"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
+#: scene/audio/audio_stream_player.cpp scene/gui/video_player.cpp
+msgid "Stream"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Size Limit"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Detect 3D"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "SVG"
+msgstr ""
+
#: editor/import/resource_importer_texture.cpp
msgid ""
"Warning, no suitable PC VRAM compression enabled in Project Settings. This "
"texture will not display correctly on PC."
msgstr ""
+#: editor/import/resource_importer_texture_atlas.cpp
+msgid "Atlas File"
+msgstr ""
+
+#: editor/import/resource_importer_texture_atlas.cpp
+#, fuzzy
+msgid "Import Mode"
+msgstr "à´—àµà´£à´‚ നോകàµà´•àµà´•"
+
+#: editor/import/resource_importer_texture_atlas.cpp
+msgid "Crop To Region"
+msgstr ""
+
+#: editor/import/resource_importer_texture_atlas.cpp
+msgid "Trim Alpha Border From Region"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp scene/2d/physics_body_2d.cpp
+msgid "Force"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+msgid "8 Bit"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp main/main.cpp
+#: modules/mono/editor/csharp_project.cpp modules/mono/mono_gd/gd_mono.cpp
+msgid "Mono"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+#, fuzzy
+msgid "Max Rate"
+msgstr "വില:"
+
+#: editor/import/resource_importer_wav.cpp
+#, fuzzy
+msgid "Max Rate Hz"
+msgstr "വില:"
+
+#: editor/import/resource_importer_wav.cpp
+msgid "Trim"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+msgid "Normalize"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+msgid "Loop Mode"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+msgid "Loop Begin"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+msgid "Loop End"
+msgstr ""
+
#: editor/import_defaults_editor.cpp
msgid "Select Importer"
msgstr ""
@@ -6413,6 +6854,28 @@ msgstr ""
#: editor/inspector_dock.cpp
#, fuzzy
+msgid "Property Name Style"
+msgstr "à´—àµà´£à´‚ നോകàµà´•àµà´•"
+
+#: editor/inspector_dock.cpp scene/gui/color_picker.cpp
+msgid "Raw"
+msgstr ""
+
+#: editor/inspector_dock.cpp
+#, fuzzy
+msgid "Capitalized"
+msgstr "à´—àµà´£à´‚ നോകàµà´•àµà´•"
+
+#: editor/inspector_dock.cpp
+msgid "Localized"
+msgstr ""
+
+#: editor/inspector_dock.cpp
+msgid "Localization not available for current language."
+msgstr ""
+
+#: editor/inspector_dock.cpp
+#, fuzzy
msgid "Copy Properties"
msgstr "à´—àµà´£à´‚ നോകàµà´•àµà´•"
@@ -7444,18 +7907,22 @@ msgid "License (Z-A)"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
+msgctxt "Pagination"
msgid "First"
msgstr ""
-#: editor/plugins/asset_library_editor_plugin.cpp scene/gui/control.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgctxt "Pagination"
msgid "Previous"
msgstr ""
-#: editor/plugins/asset_library_editor_plugin.cpp scene/gui/control.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgctxt "Pagination"
msgid "Next"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
+msgctxt "Pagination"
msgid "Last"
msgstr ""
@@ -7689,19 +8156,19 @@ msgid ""
"margins."
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Top Left"
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Top Right"
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Bottom Right"
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Bottom Left"
msgstr ""
@@ -8400,6 +8867,18 @@ msgstr ""
msgid "Gradient Edited"
msgstr ""
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+msgid "Swap GradientTexture2D Fill Points"
+msgstr ""
+
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+msgid "Swap Gradient Fill Points"
+msgstr ""
+
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+msgid "Toggle Grid Snap"
+msgstr ""
+
#: editor/plugins/item_list_editor_plugin.cpp
msgid "Item %d"
msgstr ""
@@ -8613,8 +9092,8 @@ msgid ""
"%s"
msgstr ""
-#: editor/plugins/mesh_library_editor_plugin.cpp modules/gridmap/grid_map.cpp
-msgid "Mesh Library"
+#: editor/plugins/mesh_library_editor_plugin.cpp
+msgid "MeshLibrary"
msgstr ""
#: editor/plugins/mesh_library_editor_plugin.cpp
@@ -9586,8 +10065,8 @@ msgstr ""
msgid "Source"
msgstr ""
-#: editor/plugins/script_text_editor.cpp scene/3d/interpolated_camera.cpp
-#: scene/animation/skeleton_ik.cpp
+#: editor/plugins/script_text_editor.cpp platform/uwp/export/export.cpp
+#: scene/3d/interpolated_camera.cpp scene/animation/skeleton_ik.cpp
msgid "Target"
msgstr ""
@@ -10544,7 +11023,9 @@ msgstr ""
#: editor/plugins/sprite_frames_editor_plugin.cpp
#: modules/gltf/gltf_animation.cpp modules/minimp3/audio_stream_mp3.cpp
-#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp scene/2d/path_2d.cpp
+#: modules/minimp3/resource_importer_mp3.cpp
+#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp
+#: modules/stb_vorbis/resource_importer_ogg_vorbis.cpp scene/2d/path_2d.cpp
#: scene/3d/path.cpp scene/resources/animation.cpp scene/resources/material.cpp
msgid "Loop"
msgstr ""
@@ -11404,8 +11885,9 @@ msgstr ""
msgid "Priority"
msgstr ""
-#: editor/plugins/tile_set_editor_plugin.cpp main/main.cpp scene/gui/button.cpp
-#: scene/gui/item_list.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp main/main.cpp
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#: scene/gui/button.cpp scene/gui/item_list.cpp
msgid "Icon"
msgstr ""
@@ -12685,10 +13167,6 @@ msgid ""
msgstr ""
#: editor/project_export.cpp
-msgid "Release"
-msgstr ""
-
-#: editor/project_export.cpp
msgid "Exporting All"
msgstr ""
@@ -14448,6 +14926,7 @@ msgid "Change AudioStreamPlayer3D Emission Angle"
msgstr ""
#: editor/spatial_editor_gizmos.cpp modules/gltf/gltf_node.cpp
+#: platform/osx/export/export.cpp
msgid "Camera"
msgstr ""
@@ -14708,7 +15187,8 @@ msgstr ""
msgid "Use Nvidia Rect Flicker Workaround"
msgstr ""
-#: main/main.cpp platform/uwp/os_uwp.cpp
+#: main/main.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp platform/uwp/os_uwp.cpp
msgid "Display"
msgstr ""
@@ -14763,18 +15243,6 @@ msgstr ""
msgid "Allowed"
msgstr ""
-#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp scene/2d/camera_2d.cpp
-#: scene/2d/light_2d.cpp scene/2d/navigation_polygon.cpp
-#: scene/2d/ray_cast_2d.cpp scene/2d/sprite.cpp scene/2d/y_sort.cpp
-#: scene/3d/audio_stream_player_3d.cpp scene/3d/baked_lightmap.cpp
-#: scene/3d/interpolated_camera.cpp scene/3d/light.cpp
-#: scene/3d/navigation_mesh_instance.cpp scene/3d/ray_cast.cpp
-#: scene/3d/sprite_3d.cpp scene/gui/graph_edit.cpp
-#: scene/gui/rich_text_label.cpp scene/resources/curve.cpp
-#: scene/resources/environment.cpp
-msgid "Enabled"
-msgstr ""
-
#: main/main.cpp
msgid "Intended Usage"
msgstr ""
@@ -14803,13 +15271,14 @@ msgstr ""
msgid "Handheld"
msgstr ""
-#: main/main.cpp
+#: main/main.cpp platform/javascript/export/export.cpp
+#: platform/uwp/export/export.cpp
#, fuzzy
msgid "Orientation"
msgstr "ചലനം à´šàµà´±àµà´±àµ½"
#: main/main.cpp scene/gui/scroll_container.cpp scene/gui/text_edit.cpp
-#: scene/main/scene_tree.cpp
+#: scene/main/scene_tree.cpp scene/register_scene_types.cpp
msgid "Common"
msgstr ""
@@ -14848,7 +15317,7 @@ msgid "Verbose stdout"
msgstr ""
#: main/main.cpp
-msgid "Frame Delay (msec)"
+msgid "Frame Delay Msec"
msgstr ""
#: main/main.cpp
@@ -14965,11 +15434,6 @@ msgstr ""
msgid "Tooltip Position Offset"
msgstr ""
-#: main/main.cpp modules/mono/editor/csharp_project.cpp
-#: modules/mono/mono_gd/gd_mono.cpp
-msgid "Mono"
-msgstr ""
-
#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp
msgid "Debugger Agent"
msgstr ""
@@ -15491,7 +15955,7 @@ msgstr ""
msgid "Intensity"
msgstr ""
-#: modules/gltf/gltf_light.cpp scene/2d/light_2d.cpp
+#: modules/gltf/gltf_light.cpp scene/2d/light_2d.cpp scene/3d/light.cpp
msgid "Range"
msgstr ""
@@ -15623,10 +16087,6 @@ msgstr ""
msgid "Use Named Skin Binds"
msgstr ""
-#: modules/gltf/gltf_state.cpp scene/3d/physics_joint.cpp
-msgid "Nodes"
-msgstr ""
-
#: modules/gltf/gltf_state.cpp
msgid "Buffer Views"
msgstr ""
@@ -15636,14 +16096,6 @@ msgid "Accessors"
msgstr ""
#: modules/gltf/gltf_state.cpp
-msgid "Meshes"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp
-msgid "Materials"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp
#, fuzzy
msgid "Scene Name"
msgstr "സൂചിക ഇവിടെയിടàµà´•"
@@ -15658,15 +16110,11 @@ msgstr ""
msgid "Textures"
msgstr ""
-#: modules/gltf/gltf_state.cpp
+#: modules/gltf/gltf_state.cpp platform/uwp/export/export.cpp
msgid "Images"
msgstr ""
#: modules/gltf/gltf_state.cpp
-msgid "Skins"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp
msgid "Cameras"
msgstr ""
@@ -15697,10 +16145,14 @@ msgid "Src Image"
msgstr ""
#: modules/gridmap/grid_map.cpp
-msgid "Physics Material"
+msgid "Mesh Library"
msgstr ""
#: modules/gridmap/grid_map.cpp
+msgid "Physics Material"
+msgstr ""
+
+#: modules/gridmap/grid_map.cpp scene/3d/visual_instance.cpp
msgid "Use In Baked Light"
msgstr ""
@@ -15727,6 +16179,7 @@ msgstr ""
#: modules/gridmap/grid_map.cpp scene/2d/collision_object_2d.cpp
#: scene/2d/tile_map.cpp scene/3d/collision_object.cpp scene/3d/soft_body.cpp
+#: scene/resources/material.cpp
msgid "Mask"
msgstr ""
@@ -15907,7 +16360,9 @@ msgid "Ultra Quality Ray Count"
msgstr ""
#: modules/minimp3/audio_stream_mp3.cpp
+#: modules/minimp3/resource_importer_mp3.cpp
#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp
+#: modules/stb_vorbis/resource_importer_ogg_vorbis.cpp
msgid "Loop Offset"
msgstr ""
@@ -16936,6 +17391,166 @@ msgid "The package must have at least one '.' separator."
msgstr ""
#: platform/android/export/export_plugin.cpp
+msgid "Use Custom Build"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Export Format"
+msgstr "à´¤àµà´°à´¿à´®à´¾à´¨ പരിവർതàµà´¤à´¨à´‚ നോകàµà´•àµà´•"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Keystore"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Debug User"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+msgid "Debug Password"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Release User"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Release Password"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "One Click Deploy"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Clear Previous Install"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp scene/resources/shader.cpp
+msgid "Code"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Min SDK"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Target SDK"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+msgid "Package"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Unique Name"
+msgstr "ചലനതàµà´¤à´¿àµ»à´±àµ† നേരം മാറàµà´±àµà´•"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Signed"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Classify As Game"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Retain Data On Uninstall"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Exclude From Recents"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Graphics"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "OpenGL Debug"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "XR Features"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "XR Mode"
+msgstr "വിളി രീതി നോകàµà´•àµà´•"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Hand Tracking"
+msgstr "à´—àµà´£à´‚ നോകàµà´•àµà´•"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Hand Tracking Frequency"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Passthrough"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Immersive Mode"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Support Small"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Support Normal"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Support Large"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Support Xlarge"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "User Data Backup"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Allow"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+msgid "Command Line"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+msgid "Extra Args"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "APK Expansion"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Salt"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Public Key"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Permissions"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Custom Permissions"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
msgid "Select device from the list"
msgstr ""
@@ -17221,6 +17836,162 @@ msgid "The character '%s' is not allowed in Identifier."
msgstr ""
#: platform/iphone/export/export.cpp
+msgid "App Store Team ID"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Provisioning Profile UUID Debug"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Code Sign Identity Debug"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Export Method Debug"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Provisioning Profile UUID Release"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Code Sign Identity Release"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Export Method Release"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Targeted Device Family"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Info"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Identifier"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Signature"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Short Version"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/windows/export/export.cpp
+msgid "Copyright"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Capabilities"
+msgstr "à´—àµà´£à´‚ നോകàµà´•àµà´•"
+
+#: platform/iphone/export/export.cpp
+msgid "Access Wi-Fi"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Push Notifications"
+msgstr ""
+
+#: platform/iphone/export/export.cpp scene/3d/baked_lightmap.cpp
+msgid "User Data"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Accessible From Files App"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Accessible From Itunes Sharing"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Privacy"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Camera Usage Description"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Microphone Usage Description"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Photolibrary Usage Description"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPhone 120 X 120"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPhone 180 X 180"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 76 X 76"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 152 X 152"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 167 X 167"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "App Store 1024 X 1024"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Spotlight 40 X 40"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Spotlight 80 X 80"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Storyboard"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Use Launch Screen Storyboard"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Image Scale Mode"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Custom Image @2x"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Custom Image @3x"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Use Custom BG Color"
+msgstr "à´ªàµà´°à´µàµƒà´¤àµà´¤à´¿à´•ൾ:"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Custom BG Color"
+msgstr "à´ªàµà´°à´µàµƒà´¤àµà´¤à´¿à´•ൾ:"
+
+#: platform/iphone/export/export.cpp
msgid "App Store Team ID not specified - cannot configure the project."
msgstr ""
@@ -17257,6 +18028,75 @@ msgid "Could not read file:"
msgstr ""
#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Variant"
+msgstr "ചലനം à´šàµà´±àµà´±àµ½"
+
+#: platform/javascript/export/export.cpp
+msgid "Export Type"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "VRAM Texture Compression"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "For Desktop"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "For Mobile"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Html"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Export Icon"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Custom Html Shell"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Head Include"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Canvas Resize Policy"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Focus Canvas On Start"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Experimental Virtual Keyboard"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Progressive Web App"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Offline Page"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 144 X 144"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 180 X 180"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 512 X 512"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
msgid "Could not read HTML shell:"
msgstr ""
@@ -17361,6 +18201,180 @@ msgid "Unknown object type."
msgstr ""
#: platform/osx/export/export.cpp
+msgid "App Category"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "High Res"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Location Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Address Book Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Calendar Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Photos Library Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Desktop Folder Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Documents Folder Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Downloads Folder Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Network Volumes Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Removable Volumes Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+msgid "Codesign"
+msgstr ""
+
+#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
+#: platform/windows/export/export.cpp
+msgid "Identity"
+msgstr ""
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#, fuzzy
+msgid "Timestamp"
+msgstr "സമയം:"
+
+#: platform/osx/export/export.cpp
+msgid "Hardened Runtime"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Replace Existing Signature"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Entitlements"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Custom File"
+msgstr "à´ªàµà´°à´µàµƒà´¤àµà´¤à´¿à´•ൾ:"
+
+#: platform/osx/export/export.cpp
+msgid "Allow JIT Code Execution"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Allow Unsigned Executable Memory"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Allow Dyld Environment Variables"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Disable Library Validation"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Audio Input"
+msgstr "à´¶à´¬àµà´¦à´°àµ‡à´–കൾ:"
+
+#: platform/osx/export/export.cpp
+msgid "Address Book"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Calendars"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Photos Library"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Apple Events"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Debugging"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "App Sandbox"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Network Server"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Network Client"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Device Usb"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Device Bluetooth"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Files Downloads"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Files Pictures"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Files Music"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Files Movies"
+msgstr ""
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#, fuzzy
+msgid "Custom Options"
+msgstr "à´ªàµà´°à´µàµƒà´¤àµà´¤à´¿à´•ൾ:"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Notarization"
+msgstr "ചലനം à´šàµà´±àµà´±àµ½"
+
+#: platform/osx/export/export.cpp
+msgid "Apple ID Name"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Apple ID Password"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Apple Team ID"
+msgstr ""
+
+#: platform/osx/export/export.cpp
msgid ""
"Note: The notarization process generally takes less than an hour. When the "
"process is completed, you'll receive an email."
@@ -17550,6 +18564,123 @@ msgid "Force Builtin Codesign"
msgstr ""
#: platform/uwp/export/export.cpp
+msgid "Architecture"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Display Name"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Short Name"
+msgstr "നോകàµà´•ലിൻറെ വഴി മാറàµà´±àµà´•"
+
+#: platform/uwp/export/export.cpp
+msgid "Publisher"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Publisher Display Name"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Product Guid"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Publisher Guid"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Signing"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Certificate"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Algorithm"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Major"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Minor"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Build"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Revision"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Landscape"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Portrait"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Landscape Flipped"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Portrait Flipped"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Store Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 44 X 44 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 71 X 71 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 150 X 150 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 310 X 310 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Wide 310 X 150 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Splash Screen"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Tiles"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Square 150 X 150"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Wide 310 X 150"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Square 310 X 310"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
msgid "Invalid package short name."
msgstr ""
@@ -17614,11 +18745,43 @@ msgid "Debug Certificate"
msgstr ""
#: platform/uwp/export/export.cpp
-msgid "Debug Password"
+msgid "Debug Algorithm"
msgstr ""
-#: platform/uwp/export/export.cpp
-msgid "Debug Algorithm"
+#: platform/windows/export/export.cpp
+msgid "Identity Type"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Timestamp Server URL"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Digest Algorithm"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "File Version"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Product Version"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Company Name"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Product Name"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "File Description"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Trademarks"
msgstr ""
#: platform/windows/export/export.cpp
@@ -17685,12 +18848,14 @@ msgstr ""
msgid "Centered"
msgstr ""
-#: scene/2d/animated_sprite.cpp scene/2d/camera_2d.cpp scene/2d/light_2d.cpp
+#: scene/2d/animated_sprite.cpp scene/2d/camera_2d.cpp
+#: scene/2d/cpu_particles_2d.cpp scene/2d/light_2d.cpp
#: scene/2d/parallax_background.cpp scene/2d/parallax_layer.cpp
#: scene/2d/path_2d.cpp scene/2d/polygon_2d.cpp scene/2d/sprite.cpp
-#: scene/3d/path.cpp scene/3d/physics_body.cpp scene/3d/sprite_3d.cpp
-#: scene/gui/graph_node.cpp scene/gui/rich_text_effect.cpp
-#: scene/main/canvas_layer.cpp scene/resources/material.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/path.cpp scene/3d/physics_body.cpp
+#: scene/3d/sprite_3d.cpp scene/gui/graph_node.cpp
+#: scene/gui/rich_text_effect.cpp scene/main/canvas_layer.cpp
+#: scene/resources/material.cpp scene/resources/particles_material.cpp
#: scene/resources/style_box.cpp
msgid "Offset"
msgstr ""
@@ -17756,11 +18921,6 @@ msgstr "à´¶à´¬àµà´¦à´°àµ‡à´–കൾ:"
msgid "Override"
msgstr ""
-#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
-#: scene/audio/audio_stream_player.cpp scene/gui/video_player.cpp
-msgid "Stream"
-msgstr ""
-
#: scene/2d/audio_stream_player_2d.cpp scene/audio/audio_stream_player.cpp
#: scene/gui/video_player.cpp servers/audio/effects/audio_effect_amplify.cpp
msgid "Volume dB"
@@ -17784,12 +18944,12 @@ msgid "Stream Paused"
msgstr ""
#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
-#: scene/3d/reflection_probe.cpp scene/3d/visual_instance.cpp
-#: scene/resources/material.cpp
+#: scene/3d/light.cpp scene/3d/reflection_probe.cpp
+#: scene/3d/visual_instance.cpp scene/resources/material.cpp
msgid "Max Distance"
msgstr ""
-#: scene/2d/audio_stream_player_2d.cpp
+#: scene/2d/audio_stream_player_2d.cpp scene/3d/light.cpp
#, fuzzy
msgid "Attenuation"
msgstr "ചലനം à´šàµà´±àµà´±àµ½"
@@ -17839,6 +18999,22 @@ msgstr ""
msgid "Limit"
msgstr ""
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/style_box.cpp
+msgid "Left"
+msgstr ""
+
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/style_box.cpp
+msgid "Right"
+msgstr ""
+
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/dynamic_font.cpp scene/resources/style_box.cpp
+#, fuzzy
+msgid "Bottom"
+msgstr "à´ªàµà´°à´µàµƒà´¤àµà´¤à´¿à´•ൾ:"
+
#: scene/2d/camera_2d.cpp
msgid "Smoothed"
msgstr ""
@@ -18034,12 +19210,6 @@ msgstr ""
msgid "Emitting"
msgstr ""
-#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp scene/3d/area.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
-#: scene/resources/environment.cpp
-msgid "Amount"
-msgstr ""
-
#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp
#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
msgid "Lifetime"
@@ -18099,17 +19269,12 @@ msgstr ""
#: scene/2d/mesh_instance_2d.cpp scene/2d/multimesh_instance_2d.cpp
#: scene/2d/particles_2d.cpp scene/2d/polygon_2d.cpp scene/2d/sprite.cpp
#: scene/3d/sprite_3d.cpp scene/gui/nine_patch_rect.cpp
-#: scene/gui/texture_rect.cpp scene/resources/sky.cpp
-#: scene/resources/style_box.cpp scene/resources/visual_shader_nodes.cpp
+#: scene/gui/texture_rect.cpp scene/resources/material.cpp
+#: scene/resources/sky.cpp scene/resources/style_box.cpp
+#: scene/resources/visual_shader_nodes.cpp
msgid "Texture"
msgstr ""
-#: scene/2d/cpu_particles_2d.cpp scene/2d/mesh_instance_2d.cpp
-#: scene/2d/multimesh_instance_2d.cpp scene/2d/particles_2d.cpp
-#: scene/2d/sprite.cpp scene/resources/style_box.cpp
-msgid "Normal Map"
-msgstr ""
-
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
msgid "Emission Shape"
@@ -18129,9 +19294,8 @@ msgid "Normals"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/3d/sprite_3d.cpp scene/resources/material.cpp
-#: scene/resources/particles_material.cpp scene/resources/texture.cpp
-msgid "Flags"
+#: scene/resources/particles_material.cpp
+msgid "Align Y"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
@@ -18151,6 +19315,11 @@ msgid "Initial Velocity"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Velocity Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp servers/physics_2d_server.cpp
#: servers/physics_server.cpp
msgid "Angular Velocity"
@@ -18158,6 +19327,11 @@ msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+msgid "Velocity Curve"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
msgid "Orbit Velocity"
msgstr ""
@@ -18168,6 +19342,21 @@ msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+msgid "Accel"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Accel Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Accel Curve"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
msgid "Radial Accel"
msgstr ""
@@ -18177,19 +19366,52 @@ msgid "Tangential Accel"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/2d/joints_2d.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/vehicle_body.cpp
-#: scene/resources/particles_material.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/physics_joint.cpp
+#: scene/3d/vehicle_body.cpp scene/resources/particles_material.cpp
#: servers/audio/effects/audio_effect_reverb.cpp
msgid "Damping"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+msgid "Damping Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Damping Curve"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp scene/3d/light.cpp
+#: scene/resources/particles_material.cpp
msgid "Angle"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+msgid "Angle Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Angle Curve"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#, fuzzy
+msgid "Scale Amount"
+msgstr "സൂചിക ഇവിടെയിടàµà´•"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+msgid "Scale Amount Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+msgid "Scale Amount Curve"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
msgid "Color Ramp"
msgstr ""
@@ -18204,6 +19426,44 @@ msgstr ""
msgid "Hue Variation"
msgstr "ചലനം à´šàµà´±àµà´±àµ½"
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Variation"
+msgstr "ചലനം à´šàµà´±àµà´±àµ½"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Variation Random"
+msgstr "ചലനം à´šàµà´±àµà´±àµ½"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Variation Curve"
+msgstr "ചലനം à´šàµà´±àµà´±àµ½"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Speed Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Speed Curve"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Offset Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Offset Curve"
+msgstr ""
+
#: scene/2d/joints_2d.cpp
msgid "Node A and Node B must be PhysicsBody2Ds"
msgstr ""
@@ -18233,6 +19493,7 @@ msgid "Node B"
msgstr ""
#: scene/2d/joints_2d.cpp scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp
+#: scene/3d/light.cpp scene/3d/physics_joint.cpp
#: scene/resources/environment.cpp
msgid "Bias"
msgstr ""
@@ -18241,7 +19502,7 @@ msgstr ""
msgid "Disable Collision"
msgstr ""
-#: scene/2d/joints_2d.cpp
+#: scene/2d/joints_2d.cpp scene/3d/physics_joint.cpp
msgid "Softness"
msgstr ""
@@ -18258,7 +19519,7 @@ msgstr ""
msgid "Rest Length"
msgstr ""
-#: scene/2d/joints_2d.cpp scene/3d/vehicle_body.cpp
+#: scene/2d/joints_2d.cpp scene/3d/physics_joint.cpp scene/3d/vehicle_body.cpp
msgid "Stiffness"
msgstr ""
@@ -18277,7 +19538,7 @@ msgid "Texture Scale"
msgstr ""
#: scene/2d/light_2d.cpp scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp
-#: scene/resources/environment.cpp scene/resources/sky.cpp
+#: scene/3d/light.cpp scene/resources/environment.cpp scene/resources/sky.cpp
msgid "Energy"
msgstr ""
@@ -18313,11 +19574,6 @@ msgstr ""
msgid "Gradient Length"
msgstr ""
-#: scene/2d/light_2d.cpp scene/gui/control.cpp
-#: scene/resources/navigation_mesh.cpp
-msgid "Filter"
-msgstr ""
-
#: scene/2d/light_2d.cpp
msgid "Filter Smooth"
msgstr ""
@@ -18693,10 +19949,6 @@ msgid "Applied Forces"
msgstr ""
#: scene/2d/physics_body_2d.cpp
-msgid "Force"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp
msgid "Torque"
msgstr ""
@@ -18709,7 +19961,7 @@ msgid "Sync To Physics"
msgstr ""
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-msgid "Moving platform"
+msgid "Moving Platform"
msgstr ""
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
@@ -18718,7 +19970,7 @@ msgstr ""
#: scene/2d/physics_body_2d.cpp scene/2d/touch_screen_button.cpp
#: scene/3d/physics_body.cpp scene/gui/texture_button.cpp
-#: scene/resources/line_shape_2d.cpp
+#: scene/resources/line_shape_2d.cpp scene/resources/material.cpp
msgid "Normal"
msgstr ""
@@ -18928,6 +20180,31 @@ msgid ""
"as parent."
msgstr ""
+#: scene/2d/visibility_notifier_2d.cpp scene/3d/visibility_notifier.cpp
+#, fuzzy
+msgid "Pause Animations"
+msgstr "ചലനം à´šàµà´±àµà´±àµ½"
+
+#: scene/2d/visibility_notifier_2d.cpp scene/3d/visibility_notifier.cpp
+msgid "Freeze Bodies"
+msgstr ""
+
+#: scene/2d/visibility_notifier_2d.cpp
+msgid "Pause Particles"
+msgstr ""
+
+#: scene/2d/visibility_notifier_2d.cpp
+msgid "Pause Animated Sprites"
+msgstr ""
+
+#: scene/2d/visibility_notifier_2d.cpp
+msgid "Process Parent"
+msgstr ""
+
+#: scene/2d/visibility_notifier_2d.cpp
+msgid "Physics Process Parent"
+msgstr ""
+
#: scene/3d/area.cpp
msgid "Reverb Bus"
msgstr ""
@@ -19018,6 +20295,7 @@ msgid "Attenuation Filter"
msgstr ""
#: scene/3d/audio_stream_player_3d.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
#: servers/audio/effects/audio_effect_filter.cpp
msgid "Cutoff Hz"
msgstr ""
@@ -19060,10 +20338,6 @@ msgid "Octree"
msgstr ""
#: scene/3d/baked_lightmap.cpp
-msgid "User Data"
-msgstr ""
-
-#: scene/3d/baked_lightmap.cpp
msgid "Finding meshes and lights"
msgstr ""
@@ -19297,6 +20571,14 @@ msgid "Ring Axis"
msgstr ""
#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
+msgid "Rotate Y"
+msgstr ""
+
+#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
+msgid "Disable Z"
+msgstr ""
+
+#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
msgid "Flatness"
msgstr ""
@@ -19332,15 +20614,11 @@ msgstr ""
msgid "Dynamic Range"
msgstr ""
-#: scene/3d/gi_probe.cpp
+#: scene/3d/gi_probe.cpp scene/3d/light.cpp
msgid "Normal Bias"
msgstr ""
#: scene/3d/gi_probe.cpp
-msgid "Compress"
-msgstr ""
-
-#: scene/3d/gi_probe.cpp
msgid "Plotting Meshes"
msgstr ""
@@ -19366,15 +20644,27 @@ msgid "Subdiv"
msgstr ""
#: scene/3d/light.cpp
+msgid "Indirect Energy"
+msgstr ""
+
+#: scene/3d/light.cpp
msgid "Negative"
msgstr ""
#: scene/3d/light.cpp
+msgid "Specular"
+msgstr ""
+
+#: scene/3d/light.cpp
#, fuzzy
msgid "Bake Mode"
msgstr "വിളി രീതി നോകàµà´•àµà´•"
#: scene/3d/light.cpp
+msgid "Contact"
+msgstr ""
+
+#: scene/3d/light.cpp
msgid "Reverse Cull Face"
msgstr ""
@@ -19383,10 +20673,26 @@ msgid "Directional Shadow"
msgstr ""
#: scene/3d/light.cpp
+msgid "Split 1"
+msgstr ""
+
+#: scene/3d/light.cpp
+msgid "Split 2"
+msgstr ""
+
+#: scene/3d/light.cpp
+msgid "Split 3"
+msgstr ""
+
+#: scene/3d/light.cpp
msgid "Blend Splits"
msgstr ""
#: scene/3d/light.cpp
+msgid "Bias Split Scale"
+msgstr ""
+
+#: scene/3d/light.cpp
msgid "Depth Range"
msgstr ""
@@ -19411,6 +20717,11 @@ msgstr ""
msgid "Spot"
msgstr ""
+#: scene/3d/light.cpp
+#, fuzzy
+msgid "Angle Attenuation"
+msgstr "ചലനം à´šàµà´±àµà´±àµ½"
+
#: scene/3d/mesh_instance.cpp
msgid "Software Skinning"
msgstr ""
@@ -19528,6 +20839,57 @@ msgid "Axis Lock"
msgstr ""
#: scene/3d/physics_body.cpp
+msgid "Linear X"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Linear Y"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Linear Z"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Angular X"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Angular Y"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Angular Z"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Motion X"
+msgstr "ചലനം à´šàµà´±àµà´±àµ½"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Motion Y"
+msgstr "ചലനം à´šàµà´±àµà´±àµ½"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Motion Z"
+msgstr "ചലനം à´šàµà´±àµà´±àµ½"
+
+#: scene/3d/physics_body.cpp
+msgid "Move Lock X"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Move Lock Y"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Move Lock Z"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
msgid "Body Offset"
msgstr ""
@@ -19560,6 +20922,14 @@ msgid "Exclude Nodes"
msgstr ""
#: scene/3d/physics_joint.cpp
+msgid "Params"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Impulse Clamp"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit"
msgstr ""
@@ -19571,6 +20941,50 @@ msgstr ""
msgid "Lower"
msgstr ""
+#: scene/3d/physics_joint.cpp scene/3d/vehicle_body.cpp
+#, fuzzy
+msgid "Relaxation"
+msgstr "à´ªàµà´°à´µàµƒà´¤àµà´¤à´¿à´•ൾ:"
+
+#: scene/3d/physics_joint.cpp
+msgid "Motor"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Target Velocity"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Max Impulse"
+msgstr "വില:"
+
+#: scene/3d/physics_joint.cpp
+msgid "Linear Limit"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Upper Distance"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Lower Distance"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Restitution"
+msgstr "ചലനം à´šàµà´±àµà´±àµ½"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motion"
+msgstr "ചലനം à´šàµà´±àµà´±àµ½"
+
+#: scene/3d/physics_joint.cpp
+msgid "Linear Ortho"
+msgstr ""
+
#: scene/3d/physics_joint.cpp
msgid "Upper Angle"
msgstr ""
@@ -19580,6 +20994,15 @@ msgid "Lower Angle"
msgstr ""
#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Angular Motion"
+msgstr "ചലനം à´šàµà´±àµà´±àµ½"
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Ortho"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
msgid "Swing Span"
msgstr ""
@@ -19588,17 +21011,89 @@ msgid "Twist Span"
msgstr ""
#: scene/3d/physics_joint.cpp
+msgid "Linear Limit X"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Linear Motor X"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Force Limit"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Linear Spring X"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Equilibrium Point"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit X"
msgstr ""
#: scene/3d/physics_joint.cpp
+msgid "Erp"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Motor X"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Spring X"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Linear Limit Y"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Linear Motor Y"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Linear Spring Y"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit Y"
msgstr ""
#: scene/3d/physics_joint.cpp
+msgid "Angular Motor Y"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Spring Y"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Linear Limit Z"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Linear Motor Z"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Linear Spring Z"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit Z"
msgstr ""
+#: scene/3d/physics_joint.cpp
+msgid "Angular Motor Z"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Spring Z"
+msgstr ""
+
#: scene/3d/portal.cpp
msgid "The RoomManager should not be a child or grandchild of a Portal."
msgstr ""
@@ -19703,7 +21198,7 @@ msgstr ""
msgid "Use Default Simplify"
msgstr ""
-#: scene/3d/room.cpp
+#: scene/3d/room.cpp scene/3d/room_manager.cpp
msgid "Room Simplify"
msgstr ""
@@ -19741,6 +21236,12 @@ msgstr ""
msgid "Main"
msgstr ""
+#: scene/3d/room_manager.cpp scene/animation/animation_player.cpp
+#: scene/animation/animation_tree.cpp scene/animation/animation_tree_player.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+msgid "Active"
+msgstr ""
+
#: scene/3d/room_manager.cpp
msgid "Roomlist"
msgstr ""
@@ -19762,6 +21263,46 @@ msgid "Gameplay"
msgstr ""
#: scene/3d/room_manager.cpp
+msgid "Gameplay Monitor"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "Use Secondary PVS"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "Merge Meshes"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "Show Margins"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "Debug Sprawl"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "Overlap Warning Threshold"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "Preview Camera"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "Portal Depth Limit"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "Default Portal Margin"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "Roaming Expansion Margin"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
msgid ""
"RoomList path is invalid.\n"
"Please check the RoomList branch has been assigned in the RoomManager."
@@ -19880,6 +21421,19 @@ msgstr ""
msgid "Billboard"
msgstr ""
+#: scene/3d/sprite_3d.cpp scene/resources/material.cpp
+#, fuzzy
+msgid "Transparent"
+msgstr "ചലനം à´šàµà´±àµà´±àµ½"
+
+#: scene/3d/sprite_3d.cpp
+msgid "Shaded"
+msgstr ""
+
+#: scene/3d/sprite_3d.cpp
+msgid "Double Sided"
+msgstr ""
+
#: scene/3d/sprite_3d.cpp
msgid "Alpha Cut"
msgstr ""
@@ -19946,11 +21500,6 @@ msgstr ""
msgid "Max Force"
msgstr "à´•à´£àµà´£à´¾à´Ÿà´¿"
-#: scene/3d/vehicle_body.cpp
-#, fuzzy
-msgid "Relaxation"
-msgstr "à´ªàµà´°à´µàµƒà´¤àµà´¤à´¿à´•ൾ:"
-
#: scene/3d/visibility_notifier.cpp
msgid "AABB"
msgstr ""
@@ -20073,7 +21622,7 @@ msgid "Fadeout Time"
msgstr ""
#: scene/animation/animation_blend_tree.cpp
-msgid "autorestart_"
+msgid "Auto Restart"
msgstr ""
#: scene/animation/animation_blend_tree.cpp
@@ -20150,12 +21699,6 @@ msgstr ""
msgid "Default Blend Time"
msgstr ""
-#: scene/animation/animation_player.cpp scene/animation/animation_tree.cpp
-#: scene/animation/animation_tree_player.cpp
-#: servers/audio/effects/audio_effect_delay.cpp
-msgid "Active"
-msgstr ""
-
#: scene/animation/animation_player.cpp
msgid "Method Call Mode"
msgstr ""
@@ -20267,10 +21810,6 @@ msgstr ""
msgid "Max Iterations"
msgstr "à´ªàµà´°à´µàµƒà´¤àµà´¤à´¿à´•ൾ:"
-#: scene/animation/tween.cpp scene/resources/texture.cpp
-msgid "Repeat"
-msgstr ""
-
#: scene/animation/tween.cpp
msgid "Playback Process Mode"
msgstr ""
@@ -20297,18 +21836,6 @@ msgstr ""
msgid "Alignment"
msgstr ""
-#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
-#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
-#: scene/resources/style_box.cpp
-msgid "Horizontal"
-msgstr ""
-
-#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
-#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
-#: scene/resources/style_box.cpp
-msgid "Vertical"
-msgstr ""
-
#: scene/gui/base_button.cpp
msgid "Shortcut In Tooltip"
msgstr ""
@@ -20396,10 +21923,6 @@ msgid "HSV"
msgstr ""
#: scene/gui/color_picker.cpp
-msgid "Raw"
-msgstr ""
-
-#: scene/gui/color_picker.cpp
msgid "Switch between hexadecimal and code values."
msgstr ""
@@ -20453,6 +21976,30 @@ msgid "Focus"
msgstr ""
#: scene/gui/control.cpp
+msgid "Neighbour Left"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Neighbour Top"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Neighbour Right"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Neighbour Bottom"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Next"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Previous"
+msgstr ""
+
+#: scene/gui/control.cpp
msgid "Mouse"
msgstr ""
@@ -20485,7 +22032,7 @@ msgid "Dialog"
msgstr ""
#: scene/gui/dialogs.cpp
-msgid "Hide On Ok"
+msgid "Hide On OK"
msgstr ""
#: scene/gui/dialogs.cpp scene/gui/label.cpp
@@ -20571,7 +22118,7 @@ msgid "Timers"
msgstr "സമയം:"
#: scene/gui/item_list.cpp scene/gui/popup_menu.cpp scene/gui/tree.cpp
-msgid "Incremental Search Max Interval (msec)"
+msgid "Incremental Search Max Interval Msec"
msgstr ""
#: scene/gui/item_list.cpp scene/gui/tree.cpp
@@ -21074,6 +22621,22 @@ msgstr ""
msgid "Nine Patch Stretch"
msgstr ""
+#: scene/gui/texture_progress.cpp
+msgid "Stretch Margin Left"
+msgstr ""
+
+#: scene/gui/texture_progress.cpp
+msgid "Stretch Margin Top"
+msgstr ""
+
+#: scene/gui/texture_progress.cpp
+msgid "Stretch Margin Right"
+msgstr ""
+
+#: scene/gui/texture_progress.cpp
+msgid "Stretch Margin Bottom"
+msgstr ""
+
#: scene/gui/tree.cpp
msgid "Custom Minimum Height"
msgstr ""
@@ -21108,7 +22671,7 @@ msgid "Paused"
msgstr ""
#: scene/gui/video_player.cpp
-msgid "Buffering (msec)"
+msgid "Buffering Msec"
msgstr ""
#: scene/gui/video_player.cpp
@@ -21416,6 +22979,22 @@ msgid "Shadow Atlas"
msgstr ""
#: scene/main/viewport.cpp
+msgid "Quad 0"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 1"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 2"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 3"
+msgstr ""
+
+#: scene/main/viewport.cpp
#, fuzzy
msgid "Canvas Transform"
msgstr "പരിവർതàµà´¤à´¨à´‚ ചലിപàµà´ªà´¿à´•àµà´•àµà´•"
@@ -21430,6 +23009,10 @@ msgid "Tooltip Delay (sec)"
msgstr ""
#: scene/register_scene_types.cpp
+msgid "Swap OK Cancel"
+msgstr ""
+
+#: scene/register_scene_types.cpp
msgid "Use hiDPI"
msgstr ""
@@ -21442,18 +23025,6 @@ msgid "Custom Font"
msgstr ""
#: scene/resources/audio_stream_sample.cpp
-msgid "Loop Mode"
-msgstr ""
-
-#: scene/resources/audio_stream_sample.cpp
-msgid "Loop Begin"
-msgstr ""
-
-#: scene/resources/audio_stream_sample.cpp
-msgid "Loop End"
-msgstr ""
-
-#: scene/resources/audio_stream_sample.cpp
#: servers/audio/effects/audio_stream_generator.cpp servers/audio_server.cpp
msgid "Mix Rate"
msgstr ""
@@ -21504,6 +23075,15 @@ msgid "Extra Spacing"
msgstr ""
#: scene/resources/dynamic_font.cpp
+msgid "Char"
+msgstr ""
+
+#: scene/resources/dynamic_font.cpp scene/resources/world.cpp
+#: scene/resources/world_2d.cpp
+msgid "Space"
+msgstr ""
+
+#: scene/resources/dynamic_font.cpp
msgid "Font"
msgstr ""
@@ -21704,6 +23284,42 @@ msgid "Glow"
msgstr ""
#: scene/resources/environment.cpp
+msgid "Levels"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "1"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "2"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "3"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "4"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "5"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "6"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "7"
+msgstr ""
+
+#: scene/resources/environment.cpp
msgid "Bloom"
msgstr ""
@@ -21786,9 +23402,63 @@ msgid "Next Pass"
msgstr ""
#: scene/resources/material.cpp
+msgid "Use Shadow To Opacity"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Unshaded"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Vertex Lighting"
+msgstr "ബെസിയർ ബിനàµà´¦àµ നീകàµà´•àµà´•"
+
+#: scene/resources/material.cpp
+msgid "No Depth Test"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Use Point Size"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "World Triplanar"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Fixed Size"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Albedo Tex Force sRGB"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Do Not Receive Shadows"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Disable Ambient Light"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Ensure Correct Normals"
+msgstr "à´¤àµà´°à´¿à´®à´¾à´¨ പരിവർതàµà´¤à´¨à´‚ നോകàµà´•àµà´•"
+
+#: scene/resources/material.cpp
msgid "Vertex Color"
msgstr ""
+#: scene/resources/material.cpp
+msgid "Use As Albedo"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Is sRGB"
+msgstr ""
+
#: scene/resources/material.cpp servers/visual_server.cpp
msgid "Parameters"
msgstr ""
@@ -21819,6 +23489,11 @@ msgid "Billboard Mode"
msgstr "വിളി രീതി നോകàµà´•àµà´•"
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Billboard Keep Scale"
+msgstr "വിളി രീതി നോകàµà´•àµà´•"
+
+#: scene/resources/material.cpp
msgid "Grow"
msgstr ""
@@ -21827,6 +23502,10 @@ msgid "Grow Amount"
msgstr ""
#: scene/resources/material.cpp
+msgid "Use Alpha Scissor"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Alpha Scissor Threshold"
msgstr ""
@@ -21855,10 +23534,18 @@ msgid "Metallic Specular"
msgstr ""
#: scene/resources/material.cpp
+msgid "Metallic Texture"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Metallic Texture Channel"
msgstr ""
#: scene/resources/material.cpp
+msgid "Roughness Texture"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Roughness Texture Channel"
msgstr ""
@@ -21875,6 +23562,14 @@ msgid "Emission Operator"
msgstr ""
#: scene/resources/material.cpp
+msgid "Emission On UV2"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Emission Texture"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "NormalMap"
msgstr ""
@@ -21887,6 +23582,10 @@ msgid "Rim Tint"
msgstr ""
#: scene/resources/material.cpp
+msgid "Rim Texture"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Clearcoat"
msgstr ""
@@ -21895,14 +23594,26 @@ msgid "Clearcoat Gloss"
msgstr ""
#: scene/resources/material.cpp
+msgid "Clearcoat Texture"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Anisotropy"
msgstr ""
#: scene/resources/material.cpp
+msgid "Anisotropy Flowmap"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Ambient Occlusion"
msgstr ""
#: scene/resources/material.cpp
+msgid "On UV2"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Texture Channel"
msgstr ""
@@ -21937,6 +23648,11 @@ msgid "Transmission"
msgstr ""
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Transmission Texture"
+msgstr "ചലനം à´šàµà´±àµà´±àµ½"
+
+#: scene/resources/material.cpp
msgid "Refraction"
msgstr ""
@@ -21953,6 +23669,10 @@ msgid "UV1"
msgstr ""
#: scene/resources/material.cpp
+msgid "Triplanar"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Triplanar Sharpness"
msgstr ""
@@ -22144,6 +23864,14 @@ msgstr ""
msgid "Point Count"
msgstr "സൂചിക ഇവിടെയിടàµà´•"
+#: scene/resources/particles_material.cpp
+msgid "Scale Random"
+msgstr ""
+
+#: scene/resources/particles_material.cpp
+msgid "Scale Curve"
+msgstr ""
+
#: scene/resources/physics_material.cpp
msgid "Rough"
msgstr ""
@@ -22201,10 +23929,6 @@ msgid "A"
msgstr ""
#: scene/resources/shader.cpp
-msgid "Code"
-msgstr ""
-
-#: scene/resources/shader.cpp
msgid "Custom Defines"
msgstr ""
@@ -22292,14 +24016,6 @@ msgid "Grow End"
msgstr ""
#: scene/resources/texture.cpp
-msgid "Storage"
-msgstr ""
-
-#: scene/resources/texture.cpp
-msgid "Lossy Quality"
-msgstr ""
-
-#: scene/resources/texture.cpp
msgid "Load Path"
msgstr ""
@@ -22410,10 +24126,6 @@ msgstr ""
msgid "Fallback Environment"
msgstr ""
-#: scene/resources/world.cpp scene/resources/world_2d.cpp
-msgid "Space"
-msgstr ""
-
#: scene/resources/world.cpp
msgid "Scenario"
msgstr ""
@@ -22487,8 +24199,33 @@ msgstr ""
msgid "Wet"
msgstr ""
-#: servers/audio/effects/audio_effect_compressor.cpp
-msgid "Threshold"
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "Voice"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+msgid "Delay (ms)"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_phaser.cpp
+msgid "Rate Hz"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "Depth (ms)"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+msgid "Level dB"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+#: servers/audio/effects/audio_effect_panner.cpp
+msgid "Pan"
msgstr ""
#: servers/audio/effects/audio_effect_compressor.cpp
@@ -22513,19 +24250,6 @@ msgid "Tap 1"
msgstr ""
#: servers/audio/effects/audio_effect_delay.cpp
-msgid "Delay (ms)"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_delay.cpp
-msgid "Level dB"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_delay.cpp
-#: servers/audio/effects/audio_effect_panner.cpp
-msgid "Pan"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_delay.cpp
msgid "Tap 2"
msgstr ""
@@ -22583,10 +24307,6 @@ msgstr ""
msgid "Range Max Hz"
msgstr ""
-#: servers/audio/effects/audio_effect_phaser.cpp
-msgid "Rate Hz"
-msgstr ""
-
#: servers/audio/effects/audio_effect_pitch_shift.cpp
msgid "Oversampling"
msgstr ""
@@ -22601,7 +24321,7 @@ msgid "Predelay"
msgstr ""
#: servers/audio/effects/audio_effect_reverb.cpp
-msgid "(msec)"
+msgid "Msec"
msgstr ""
#: servers/audio/effects/audio_effect_reverb.cpp
diff --git a/editor/translations/mr.po b/editor/translations/mr.po
index 3e562db05b..f6d527fb26 100644
--- a/editor/translations/mr.po
+++ b/editor/translations/mr.po
@@ -18,7 +18,7 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=n > 1;\n"
"X-Generator: Weblate 4.11-dev\n"
-#: core/bind/core_bind.cpp
+#: core/bind/core_bind.cpp main/main.cpp
msgid "Tablet Driver"
msgstr ""
@@ -111,8 +111,8 @@ msgstr "अâ€à¥…निमेशन टà¥à¤°à¥€"
#: core/bind/core_bind.cpp editor/editor_settings.cpp main/main.cpp
#: modules/gdscript/gdscript_editor.cpp modules/gridmap/grid_map.cpp
#: modules/mono/csharp_script.cpp modules/visual_script/visual_script_nodes.cpp
-#: scene/2d/tile_map.cpp scene/3d/camera.cpp scene/gui/control.cpp
-#: scene/gui/graph_edit.cpp scene/main/viewport.cpp
+#: scene/2d/tile_map.cpp scene/3d/camera.cpp scene/3d/light.cpp
+#: scene/gui/control.cpp scene/gui/graph_edit.cpp scene/main/viewport.cpp
#: scene/resources/dynamic_font.cpp scene/resources/navigation_mesh.cpp
#: scene/resources/primitive_meshes.cpp scene/resources/sky.cpp
#: scene/resources/style_box.cpp scene/resources/texture.cpp
@@ -207,8 +207,7 @@ msgid "Data"
msgstr ""
#: core/io/file_access_network.cpp core/register_core_types.cpp
-#: editor/editor_settings.cpp editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp main/main.cpp
+#: editor/editor_settings.cpp main/main.cpp
#: modules/gdscript/language_server/gdscript_language_server.cpp
msgid "Network"
msgstr ""
@@ -471,9 +470,10 @@ msgstr ""
msgid "Relative"
msgstr ""
-#: core/os/input_event.cpp scene/2d/camera_2d.cpp
-#: scene/3d/interpolated_camera.cpp scene/animation/animation_player.cpp
-#: scene/resources/environment.cpp
+#: core/os/input_event.cpp scene/2d/camera_2d.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/interpolated_camera.cpp
+#: scene/animation/animation_player.cpp scene/resources/environment.cpp
+#: scene/resources/particles_material.cpp
#, fuzzy
msgid "Speed"
msgstr "सà¥à¤•ेल:"
@@ -520,8 +520,9 @@ msgstr ""
msgid "Pitch"
msgstr "सà¥à¤•ेल:"
-#: core/os/input_event.cpp scene/2d/physics_body_2d.cpp
-#: scene/3d/physics_body.cpp
+#: core/os/input_event.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/physics_body_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/3d/physics_body.cpp scene/resources/particles_material.cpp
msgid "Velocity"
msgstr ""
@@ -538,6 +539,8 @@ msgid "Controller Value"
msgstr ""
#: core/project_settings.cpp editor/editor_node.cpp main/main.cpp
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/windows/export/export.cpp
#, fuzzy
msgid "Application"
msgstr "अâ€à¥…निमेशन टà¥à¤°à¥€"
@@ -554,13 +557,16 @@ msgstr ""
#: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp
#: editor/editor_plugin_settings.cpp editor/editor_profiler.cpp
#: editor/project_manager.cpp editor/settings_config_dialog.cpp
-#: modules/gdnative/nativescript/nativescript.cpp scene/2d/area_2d.cpp
-#: scene/3d/area.cpp scene/main/node.cpp
+#: modules/gdnative/nativescript/nativescript.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/osx/export/export.cpp scene/2d/area_2d.cpp scene/3d/area.cpp
+#: scene/main/node.cpp
msgid "Name"
msgstr ""
#: core/project_settings.cpp editor/editor_help.cpp
-#: modules/visual_script/visual_script_nodes.cpp
+#: modules/visual_script/visual_script_nodes.cpp platform/uwp/export/export.cpp
+#: platform/windows/export/export.cpp
msgid "Description"
msgstr ""
@@ -596,7 +602,7 @@ msgid "Custom User Dir Name"
msgstr ""
#: core/project_settings.cpp editor/animation_track_editor.cpp
-#: editor/editor_audio_buses.cpp servers/audio_server.cpp
+#: editor/editor_audio_buses.cpp main/main.cpp servers/audio_server.cpp
msgid "Audio"
msgstr ""
@@ -748,10 +754,13 @@ msgstr ""
msgid "Sharpen Intensity"
msgstr ""
-#: core/project_settings.cpp editor/editor_node.cpp editor/editor_settings.cpp
-#: editor/plugins/script_editor_plugin.cpp editor/project_export.cpp
-#: main/main.cpp modules/gdscript/gdscript.cpp
-#: modules/visual_script/visual_script.cpp scene/3d/room_manager.cpp
+#: core/project_settings.cpp editor/editor_export.cpp editor/editor_node.cpp
+#: editor/editor_settings.cpp editor/plugins/script_editor_plugin.cpp
+#: editor/project_export.cpp main/main.cpp modules/gdscript/gdscript.cpp
+#: modules/visual_script/visual_script.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp scene/3d/room_manager.cpp
#: scene/main/scene_tree.cpp scene/resources/shape_2d.cpp
#: servers/visual_server.cpp
msgid "Debug"
@@ -973,6 +982,7 @@ msgid "Subsurface Scattering"
msgstr ""
#: drivers/gles3/rasterizer_scene_gles3.cpp
+#: editor/import/resource_importer_texture.cpp
#: editor/plugins/spatial_editor_plugin.cpp modules/gltf/gltf_node.cpp
#: modules/gridmap/grid_map.cpp scene/2d/cpu_particles_2d.cpp
#: scene/2d/node_2d.cpp scene/2d/parallax_layer.cpp scene/2d/polygon_2d.cpp
@@ -1269,6 +1279,7 @@ msgid "Editors"
msgstr ""
#: editor/animation_track_editor.cpp editor/editor_settings.cpp
+#: editor/import/resource_importer_scene.cpp
#: editor/plugins/animation_player_editor_plugin.cpp editor/scene_tree_dock.cpp
#: scene/2d/animated_sprite.cpp scene/2d/cpu_particles_2d.cpp
#: scene/2d/sprite.cpp scene/3d/cpu_particles.cpp scene/3d/sprite_3d.cpp
@@ -1486,14 +1497,14 @@ msgstr ""
msgid "Seconds"
msgstr ""
-#: editor/animation_track_editor.cpp
+#: editor/animation_track_editor.cpp editor/import/resource_importer_scene.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp main/main.cpp
#: scene/resources/texture.cpp
msgid "FPS"
msgstr ""
#: editor/animation_track_editor.cpp editor/editor_plugin_settings.cpp
-#: editor/editor_resource_picker.cpp
+#: editor/editor_resource_picker.cpp editor/import/resource_importer_wav.cpp
#: editor/plugins/polygon_2d_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
@@ -2435,7 +2446,9 @@ msgid "Remove Autoload"
msgstr ""
#: editor/editor_autoload_settings.cpp editor/editor_plugin_settings.cpp
-#: modules/gdscript/gdscript.cpp scene/2d/polygon_2d.cpp scene/3d/area.cpp
+#: modules/gdscript/gdscript.cpp platform/android/export/export_plugin.cpp
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#: scene/2d/polygon_2d.cpp scene/3d/area.cpp scene/3d/physics_joint.cpp
#: scene/3d/reflection_probe.cpp scene/main/canvas_layer.cpp
#: scene/resources/material.cpp servers/visual_server.cpp
msgid "Enable"
@@ -2588,6 +2601,55 @@ msgstr ""
#: editor/editor_export.cpp platform/android/export/export_plugin.cpp
#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
+msgid "Custom Template"
+msgstr ""
+
+#: editor/editor_export.cpp editor/project_export.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp
+msgid "Release"
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Binary Format"
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "64 Bits"
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Embed PCK"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "Texture Format"
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "BPTC"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "S3TC"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "ETC"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "ETC2"
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "No BPTC Fallbacks"
+msgstr ""
+
+#: editor/editor_export.cpp platform/android/export/export_plugin.cpp
+#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
msgid "Custom debug template not found."
msgstr ""
@@ -2761,6 +2823,7 @@ msgid "Make Current"
msgstr ""
#: editor/editor_feature_profile.cpp editor/editor_node.cpp
+#: editor/import/resource_importer_scene.cpp
#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
msgid "Import"
msgstr ""
@@ -2886,8 +2949,11 @@ msgstr ""
msgid "Display Mode"
msgstr "पà¥à¤²à¥‡ मोड:"
-#: editor/editor_file_dialog.cpp main/main.cpp modules/csg/csg_shape.cpp
-#: modules/visual_script/visual_script_nodes.cpp
+#: editor/editor_file_dialog.cpp
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+#: editor/import/resource_importer_wav.cpp main/main.cpp
+#: modules/csg/csg_shape.cpp modules/visual_script/visual_script_nodes.cpp
#: modules/visual_script/visual_script_yield_nodes.cpp scene/2d/light_2d.cpp
#: scene/2d/physics_body_2d.cpp scene/2d/tile_map.cpp
#: scene/3d/baked_lightmap.cpp scene/3d/light.cpp scene/3d/physics_body.cpp
@@ -3019,7 +3085,9 @@ msgstr ""
msgid "Reimport Missing Imported Files"
msgstr ""
-#: editor/editor_help.cpp
+#: editor/editor_help.cpp scene/2d/camera_2d.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/resources/dynamic_font.cpp
+#: scene/resources/style_box.cpp
msgid "Top"
msgstr ""
@@ -3071,6 +3139,7 @@ msgid "Fonts"
msgstr ""
#: editor/editor_help.cpp editor/plugins/theme_editor_plugin.cpp
+#: platform/iphone/export/export.cpp
msgid "Icons"
msgstr ""
@@ -3230,7 +3299,9 @@ msgstr ""
msgid "Pin value [Disabled because '%s' is editor-only]"
msgstr ""
-#: editor/editor_inspector.cpp editor/scene_tree_dock.cpp
+#: editor/editor_inspector.cpp
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+#: editor/scene_tree_dock.cpp
#: modules/visual_script/visual_script_func_nodes.cpp
#: modules/visual_script/visual_script_nodes.cpp
#: modules/visual_script/visual_script_property_selector.cpp
@@ -3541,6 +3612,14 @@ msgid "Quick Open Script..."
msgstr ""
#: editor/editor_node.cpp
+msgid "Save & Reload"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Save changes to '%s' before reloading?"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "Save & Close"
msgstr ""
@@ -3651,6 +3730,10 @@ msgid "Open Project Manager?"
msgstr ""
#: editor/editor_node.cpp
+msgid "Save changes to the following scene(s) before reloading?"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "Save & Quit"
msgstr ""
@@ -3891,7 +3974,7 @@ msgid "Update Vital Only"
msgstr ""
#: editor/editor_node.cpp
-msgid "Translate Properties"
+msgid "Localize Settings"
msgstr ""
#: editor/editor_node.cpp
@@ -3908,7 +3991,7 @@ msgid "Inspector"
msgstr ""
#: editor/editor_node.cpp
-msgid "Capitalize Properties"
+msgid "Default Property Name Style"
msgstr ""
#: editor/editor_node.cpp
@@ -4468,7 +4551,9 @@ msgstr ""
msgid "Update"
msgstr ""
-#: editor/editor_plugin_settings.cpp
+#: editor/editor_plugin_settings.cpp platform/android/export/export_plugin.cpp
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp
msgid "Version"
msgstr ""
@@ -5408,7 +5493,7 @@ msgstr ""
msgid "Rect Custom Position"
msgstr ""
-#: editor/editor_settings.cpp
+#: editor/editor_settings.cpp platform/android/export/export_plugin.cpp
msgid "Screen"
msgstr ""
@@ -5433,6 +5518,19 @@ msgid "Editor SSL Certificates"
msgstr ""
#: editor/editor_settings.cpp
+msgid "HTTP Proxy"
+msgstr ""
+
+#: editor/editor_settings.cpp
+msgid "Host"
+msgstr ""
+
+#: editor/editor_settings.cpp editor/fileserver/editor_file_server.cpp
+#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp
+msgid "Port"
+msgstr ""
+
+#: editor/editor_settings.cpp
msgid "Project Manager"
msgstr ""
@@ -5472,7 +5570,8 @@ msgstr ""
msgid "String Color"
msgstr ""
-#: editor/editor_settings.cpp
+#: editor/editor_settings.cpp platform/javascript/export/export.cpp
+#: platform/uwp/export/export.cpp
msgid "Background Color"
msgstr ""
@@ -5631,22 +5730,6 @@ msgid "Starting the download..."
msgstr ""
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "HTTP Proxy"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Host"
-msgstr ""
-
-#: editor/export_template_manager.cpp editor/fileserver/editor_file_server.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp main/main.cpp
-#: modules/mono/mono_gd/gd_mono.cpp
-msgid "Port"
-msgstr ""
-
-#: editor/export_template_manager.cpp
msgid "Error requesting URL:"
msgstr ""
@@ -5888,6 +5971,7 @@ msgstr ""
#: editor/fileserver/editor_file_server.cpp
#: editor/plugins/version_control_editor_plugin.cpp
+#: platform/uwp/export/export.cpp platform/windows/export/export.cpp
msgid "Password"
msgstr ""
@@ -6251,6 +6335,108 @@ msgstr ""
msgid "Use Ambient"
msgstr ""
+#: editor/import/resource_importer_bitmask.cpp
+msgid "Create From"
+msgstr ""
+
+#: editor/import/resource_importer_bitmask.cpp
+#: servers/audio/effects/audio_effect_compressor.cpp
+msgid "Threshold"
+msgstr ""
+
+#: editor/import/resource_importer_csv_translation.cpp
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_scene.cpp
+#: editor/import/resource_importer_texture.cpp
+#: editor/import/resource_importer_wav.cpp scene/3d/gi_probe.cpp
+msgid "Compress"
+msgstr ""
+
+#: editor/import/resource_importer_csv_translation.cpp
+msgid "Delimiter"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+msgid "No BPTC If RGB"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/sprite_3d.cpp
+#: scene/resources/material.cpp scene/resources/particles_material.cpp
+#: scene/resources/texture.cpp
+msgid "Flags"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/animation/tween.cpp
+#: scene/resources/texture.cpp
+msgid "Repeat"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/2d/light_2d.cpp
+#: scene/gui/control.cpp scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Filter"
+msgstr "नोड हलवा"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+msgid "Mipmaps"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+msgid "Anisotropic"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+msgid "sRGB"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+msgid "Slices"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
+#: scene/resources/style_box.cpp
+msgid "Horizontal"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
+#: scene/resources/style_box.cpp
+msgid "Vertical"
+msgstr ""
+
+#: editor/import/resource_importer_obj.cpp
+#, fuzzy
+msgid "Generate Tangents"
+msgstr "सामानà¥à¤¯"
+
+#: editor/import/resource_importer_obj.cpp
+#, fuzzy
+msgid "Scale Mesh"
+msgstr "सà¥à¤•ेल:"
+
+#: editor/import/resource_importer_obj.cpp
+msgid "Offset Mesh"
+msgstr ""
+
+#: editor/import/resource_importer_obj.cpp
+#: editor/import/resource_importer_scene.cpp
+msgid "Octahedral Compression"
+msgstr ""
+
+#: editor/import/resource_importer_obj.cpp
+msgid "Optimize Mesh Flags"
+msgstr ""
+
#: editor/import/resource_importer_scene.cpp
msgid "Import as Single Scene"
msgstr ""
@@ -6291,6 +6477,140 @@ msgstr ""
msgid "Import as Multiple Scenes+Materials"
msgstr ""
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Nodes"
+msgstr "नोड जोडा"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Root Type"
+msgstr "नोड हलवा"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Root Name"
+msgstr "नोड हलवा"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Root Scale"
+msgstr "सà¥à¤•ेल:"
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Custom Script"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp scene/resources/texture.cpp
+msgid "Storage"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Use Legacy Names"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+msgid "Materials"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Location"
+msgstr "अâ€à¥…निमेशन टà¥à¤°à¥€"
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Keep On Reimport"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+msgid "Meshes"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Ensure Tangents"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Light Baking"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Lightmap Texel Size"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+msgid "Skins"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Use Named Skins"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "External Files"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Store In Subdir"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Filter Script"
+msgstr "नोड हलवा"
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Keep Custom Tracks"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Optimizer"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp main/main.cpp
+#: modules/mono/mono_gd/gd_mono.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp scene/2d/camera_2d.cpp scene/2d/light_2d.cpp
+#: scene/2d/navigation_polygon.cpp scene/2d/ray_cast_2d.cpp scene/2d/sprite.cpp
+#: scene/2d/y_sort.cpp scene/3d/audio_stream_player_3d.cpp
+#: scene/3d/baked_lightmap.cpp scene/3d/interpolated_camera.cpp
+#: scene/3d/light.cpp scene/3d/navigation_mesh_instance.cpp
+#: scene/3d/physics_joint.cpp scene/3d/ray_cast.cpp scene/3d/sprite_3d.cpp
+#: scene/gui/graph_edit.cpp scene/gui/rich_text_label.cpp
+#: scene/resources/curve.cpp scene/resources/environment.cpp
+#: scene/resources/material.cpp
+msgid "Enabled"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Max Linear Error"
+msgstr "तà¥à¤°à¥à¤Ÿà¥€!"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Max Angular Error"
+msgstr "तà¥à¤°à¥à¤Ÿà¥€!"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Max Angle"
+msgstr "मूलà¥à¤¯:"
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Remove Unused Tracks"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Clips"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/particles_2d.cpp scene/3d/area.cpp scene/3d/cpu_particles.cpp
+#: scene/3d/particles.cpp scene/resources/environment.cpp
+msgid "Amount"
+msgstr ""
+
#: editor/import/resource_importer_scene.cpp
#: editor/plugins/mesh_library_editor_plugin.cpp
msgid "Import Scene"
@@ -6332,12 +6652,137 @@ msgstr ""
msgid "Saving..."
msgstr ""
+#: editor/import/resource_importer_texture.cpp scene/resources/texture.cpp
+msgid "Lossy Quality"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "HDR Mode"
+msgstr "पà¥à¤²à¥‡ मोड:"
+
+#: editor/import/resource_importer_texture.cpp
+msgid "BPTC LDR"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/mesh_instance_2d.cpp scene/2d/multimesh_instance_2d.cpp
+#: scene/2d/particles_2d.cpp scene/2d/sprite.cpp scene/resources/style_box.cpp
+msgid "Normal Map"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Process"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Fix Alpha Border"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Premult Alpha"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Hdr As Srgb"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Invert Color"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Normal Map Invert Y"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
+#: scene/audio/audio_stream_player.cpp scene/gui/video_player.cpp
+msgid "Stream"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Size Limit"
+msgstr "पà¥à¤²à¥‡ मोड:"
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Detect 3D"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "SVG"
+msgstr ""
+
#: editor/import/resource_importer_texture.cpp
msgid ""
"Warning, no suitable PC VRAM compression enabled in Project Settings. This "
"texture will not display correctly on PC."
msgstr ""
+#: editor/import/resource_importer_texture_atlas.cpp
+msgid "Atlas File"
+msgstr ""
+
+#: editor/import/resource_importer_texture_atlas.cpp
+#, fuzzy
+msgid "Import Mode"
+msgstr "पà¥à¤²à¥‡ मोड:"
+
+#: editor/import/resource_importer_texture_atlas.cpp
+msgid "Crop To Region"
+msgstr ""
+
+#: editor/import/resource_importer_texture_atlas.cpp
+msgid "Trim Alpha Border From Region"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp scene/2d/physics_body_2d.cpp
+msgid "Force"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+msgid "8 Bit"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp main/main.cpp
+#: modules/mono/editor/csharp_project.cpp modules/mono/mono_gd/gd_mono.cpp
+msgid "Mono"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+#, fuzzy
+msgid "Max Rate"
+msgstr "मूलà¥à¤¯:"
+
+#: editor/import/resource_importer_wav.cpp
+#, fuzzy
+msgid "Max Rate Hz"
+msgstr "मूलà¥à¤¯:"
+
+#: editor/import/resource_importer_wav.cpp
+msgid "Trim"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+msgid "Normalize"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+msgid "Loop Mode"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+msgid "Loop Begin"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+msgid "Loop End"
+msgstr ""
+
#: editor/import_defaults_editor.cpp
msgid "Select Importer"
msgstr ""
@@ -6406,6 +6851,26 @@ msgid "Failed to load resource."
msgstr ""
#: editor/inspector_dock.cpp
+msgid "Property Name Style"
+msgstr ""
+
+#: editor/inspector_dock.cpp scene/gui/color_picker.cpp
+msgid "Raw"
+msgstr ""
+
+#: editor/inspector_dock.cpp
+msgid "Capitalized"
+msgstr ""
+
+#: editor/inspector_dock.cpp
+msgid "Localized"
+msgstr ""
+
+#: editor/inspector_dock.cpp
+msgid "Localization not available for current language."
+msgstr ""
+
+#: editor/inspector_dock.cpp
msgid "Copy Properties"
msgstr ""
@@ -7434,18 +7899,22 @@ msgid "License (Z-A)"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
+msgctxt "Pagination"
msgid "First"
msgstr ""
-#: editor/plugins/asset_library_editor_plugin.cpp scene/gui/control.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgctxt "Pagination"
msgid "Previous"
msgstr ""
-#: editor/plugins/asset_library_editor_plugin.cpp scene/gui/control.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgctxt "Pagination"
msgid "Next"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
+msgctxt "Pagination"
msgid "Last"
msgstr ""
@@ -7679,19 +8148,19 @@ msgid ""
"margins."
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Top Left"
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Top Right"
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Bottom Right"
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Bottom Left"
msgstr ""
@@ -8388,6 +8857,18 @@ msgstr ""
msgid "Gradient Edited"
msgstr ""
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+msgid "Swap GradientTexture2D Fill Points"
+msgstr ""
+
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+msgid "Swap Gradient Fill Points"
+msgstr ""
+
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+msgid "Toggle Grid Snap"
+msgstr ""
+
#: editor/plugins/item_list_editor_plugin.cpp
msgid "Item %d"
msgstr ""
@@ -8601,8 +9082,8 @@ msgid ""
"%s"
msgstr ""
-#: editor/plugins/mesh_library_editor_plugin.cpp modules/gridmap/grid_map.cpp
-msgid "Mesh Library"
+#: editor/plugins/mesh_library_editor_plugin.cpp
+msgid "MeshLibrary"
msgstr ""
#: editor/plugins/mesh_library_editor_plugin.cpp
@@ -9571,8 +10052,8 @@ msgstr ""
msgid "Source"
msgstr ""
-#: editor/plugins/script_text_editor.cpp scene/3d/interpolated_camera.cpp
-#: scene/animation/skeleton_ik.cpp
+#: editor/plugins/script_text_editor.cpp platform/uwp/export/export.cpp
+#: scene/3d/interpolated_camera.cpp scene/animation/skeleton_ik.cpp
msgid "Target"
msgstr ""
@@ -10529,7 +11010,9 @@ msgstr ""
#: editor/plugins/sprite_frames_editor_plugin.cpp
#: modules/gltf/gltf_animation.cpp modules/minimp3/audio_stream_mp3.cpp
-#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp scene/2d/path_2d.cpp
+#: modules/minimp3/resource_importer_mp3.cpp
+#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp
+#: modules/stb_vorbis/resource_importer_ogg_vorbis.cpp scene/2d/path_2d.cpp
#: scene/3d/path.cpp scene/resources/animation.cpp scene/resources/material.cpp
msgid "Loop"
msgstr ""
@@ -11391,8 +11874,9 @@ msgstr ""
msgid "Priority"
msgstr ""
-#: editor/plugins/tile_set_editor_plugin.cpp main/main.cpp scene/gui/button.cpp
-#: scene/gui/item_list.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp main/main.cpp
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#: scene/gui/button.cpp scene/gui/item_list.cpp
msgid "Icon"
msgstr ""
@@ -12677,10 +13161,6 @@ msgid ""
msgstr ""
#: editor/project_export.cpp
-msgid "Release"
-msgstr ""
-
-#: editor/project_export.cpp
msgid "Exporting All"
msgstr ""
@@ -14441,6 +14921,7 @@ msgid "Change AudioStreamPlayer3D Emission Angle"
msgstr ""
#: editor/spatial_editor_gizmos.cpp modules/gltf/gltf_node.cpp
+#: platform/osx/export/export.cpp
msgid "Camera"
msgstr ""
@@ -14701,7 +15182,8 @@ msgstr ""
msgid "Use Nvidia Rect Flicker Workaround"
msgstr ""
-#: main/main.cpp platform/uwp/os_uwp.cpp
+#: main/main.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp platform/uwp/os_uwp.cpp
msgid "Display"
msgstr ""
@@ -14757,18 +15239,6 @@ msgstr ""
msgid "Allowed"
msgstr ""
-#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp scene/2d/camera_2d.cpp
-#: scene/2d/light_2d.cpp scene/2d/navigation_polygon.cpp
-#: scene/2d/ray_cast_2d.cpp scene/2d/sprite.cpp scene/2d/y_sort.cpp
-#: scene/3d/audio_stream_player_3d.cpp scene/3d/baked_lightmap.cpp
-#: scene/3d/interpolated_camera.cpp scene/3d/light.cpp
-#: scene/3d/navigation_mesh_instance.cpp scene/3d/ray_cast.cpp
-#: scene/3d/sprite_3d.cpp scene/gui/graph_edit.cpp
-#: scene/gui/rich_text_label.cpp scene/resources/curve.cpp
-#: scene/resources/environment.cpp
-msgid "Enabled"
-msgstr ""
-
#: main/main.cpp
msgid "Intended Usage"
msgstr ""
@@ -14797,13 +15267,14 @@ msgstr ""
msgid "Handheld"
msgstr ""
-#: main/main.cpp
+#: main/main.cpp platform/javascript/export/export.cpp
+#: platform/uwp/export/export.cpp
#, fuzzy
msgid "Orientation"
msgstr "अâ€à¥…निमेशन टà¥à¤°à¥€"
#: main/main.cpp scene/gui/scroll_container.cpp scene/gui/text_edit.cpp
-#: scene/main/scene_tree.cpp
+#: scene/main/scene_tree.cpp scene/register_scene_types.cpp
#, fuzzy
msgid "Common"
msgstr "समà¥à¤¦à¤¾à¤¯"
@@ -14844,7 +15315,7 @@ msgstr ""
#: main/main.cpp
#, fuzzy
-msgid "Frame Delay (msec)"
+msgid "Frame Delay Msec"
msgstr "पà¥à¤²à¥‡ मोड:"
#: main/main.cpp
@@ -14961,11 +15432,6 @@ msgstr ""
msgid "Tooltip Position Offset"
msgstr ""
-#: main/main.cpp modules/mono/editor/csharp_project.cpp
-#: modules/mono/mono_gd/gd_mono.cpp
-msgid "Mono"
-msgstr ""
-
#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp
msgid "Debugger Agent"
msgstr ""
@@ -15486,7 +15952,7 @@ msgstr ""
msgid "Intensity"
msgstr ""
-#: modules/gltf/gltf_light.cpp scene/2d/light_2d.cpp
+#: modules/gltf/gltf_light.cpp scene/2d/light_2d.cpp scene/3d/light.cpp
msgid "Range"
msgstr ""
@@ -15619,11 +16085,6 @@ msgstr ""
msgid "Use Named Skin Binds"
msgstr ""
-#: modules/gltf/gltf_state.cpp scene/3d/physics_joint.cpp
-#, fuzzy
-msgid "Nodes"
-msgstr "नोड जोडा"
-
#: modules/gltf/gltf_state.cpp
msgid "Buffer Views"
msgstr ""
@@ -15633,14 +16094,6 @@ msgid "Accessors"
msgstr ""
#: modules/gltf/gltf_state.cpp
-msgid "Meshes"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp
-msgid "Materials"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp
#, fuzzy
msgid "Scene Name"
msgstr "नोड हलवा"
@@ -15656,15 +16109,11 @@ msgstr "नोड हलवा"
msgid "Textures"
msgstr ""
-#: modules/gltf/gltf_state.cpp
+#: modules/gltf/gltf_state.cpp platform/uwp/export/export.cpp
msgid "Images"
msgstr ""
#: modules/gltf/gltf_state.cpp
-msgid "Skins"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp
msgid "Cameras"
msgstr ""
@@ -15695,10 +16144,14 @@ msgid "Src Image"
msgstr ""
#: modules/gridmap/grid_map.cpp
-msgid "Physics Material"
+msgid "Mesh Library"
msgstr ""
#: modules/gridmap/grid_map.cpp
+msgid "Physics Material"
+msgstr ""
+
+#: modules/gridmap/grid_map.cpp scene/3d/visual_instance.cpp
msgid "Use In Baked Light"
msgstr ""
@@ -15728,6 +16181,7 @@ msgstr "नोड हलवा"
#: modules/gridmap/grid_map.cpp scene/2d/collision_object_2d.cpp
#: scene/2d/tile_map.cpp scene/3d/collision_object.cpp scene/3d/soft_body.cpp
+#: scene/resources/material.cpp
msgid "Mask"
msgstr ""
@@ -15908,7 +16362,9 @@ msgid "Ultra Quality Ray Count"
msgstr ""
#: modules/minimp3/audio_stream_mp3.cpp
+#: modules/minimp3/resource_importer_mp3.cpp
#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp
+#: modules/stb_vorbis/resource_importer_ogg_vorbis.cpp
msgid "Loop Offset"
msgstr ""
@@ -16937,6 +17393,168 @@ msgid "The package must have at least one '.' separator."
msgstr ""
#: platform/android/export/export_plugin.cpp
+msgid "Use Custom Build"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Export Format"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Keystore"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Debug User"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+msgid "Debug Password"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Release User"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Release Password"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "One Click Deploy"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Clear Previous Install"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp scene/resources/shader.cpp
+msgid "Code"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Min SDK"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Target SDK"
+msgstr "नोड हलवा"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+msgid "Package"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Unique Name"
+msgstr "अâ€à¥…निमेशन नाव:"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Signed"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Classify As Game"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Retain Data On Uninstall"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Exclude From Recents"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Graphics"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "OpenGL Debug"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "XR Features"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "XR Mode"
+msgstr "पà¥à¤²à¥‡ मोड:"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Hand Tracking"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Hand Tracking Frequency"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Passthrough"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Immersive Mode"
+msgstr "वà¥à¤¹à¤¾à¤‡à¤Ÿ मॉडà¥à¤¯à¥à¤²à¥‡à¤Ÿà¥‡à¤¡ सकà¥à¤¤à¥€ करा"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Support Small"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Support Normal"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Support Large"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Support Xlarge"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "User Data Backup"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Allow"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Command Line"
+msgstr "समà¥à¤¦à¤¾à¤¯"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+msgid "Extra Args"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "APK Expansion"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Salt"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Public Key"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Permissions"
+msgstr "संकà¥à¤°à¤®à¤£: "
+
+#: platform/android/export/export_plugin.cpp
+msgid "Custom Permissions"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
msgid "Select device from the list"
msgstr ""
@@ -17222,6 +17840,161 @@ msgid "The character '%s' is not allowed in Identifier."
msgstr ""
#: platform/iphone/export/export.cpp
+msgid "App Store Team ID"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Provisioning Profile UUID Debug"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Code Sign Identity Debug"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Export Method Debug"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Provisioning Profile UUID Release"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Code Sign Identity Release"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Export Method Release"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Targeted Device Family"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Info"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Identifier"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Signature"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Short Version"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/windows/export/export.cpp
+msgid "Copyright"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Capabilities"
+msgstr "पà¥à¤²à¥‡ मोड:"
+
+#: platform/iphone/export/export.cpp
+msgid "Access Wi-Fi"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Push Notifications"
+msgstr ""
+
+#: platform/iphone/export/export.cpp scene/3d/baked_lightmap.cpp
+msgid "User Data"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Accessible From Files App"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Accessible From Itunes Sharing"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Privacy"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Camera Usage Description"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Microphone Usage Description"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Photolibrary Usage Description"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPhone 120 X 120"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPhone 180 X 180"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 76 X 76"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 152 X 152"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 167 X 167"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "App Store 1024 X 1024"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Spotlight 40 X 40"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Spotlight 80 X 80"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Storyboard"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Use Launch Screen Storyboard"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Image Scale Mode"
+msgstr "सà¥à¤•ेल:"
+
+#: platform/iphone/export/export.cpp
+msgid "Custom Image @2x"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Custom Image @3x"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Use Custom BG Color"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Custom BG Color"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
msgid "App Store Team ID not specified - cannot configure the project."
msgstr ""
@@ -17258,6 +18031,75 @@ msgid "Could not read file:"
msgstr ""
#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Variant"
+msgstr "संकà¥à¤°à¤®à¤£: "
+
+#: platform/javascript/export/export.cpp
+msgid "Export Type"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "VRAM Texture Compression"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "For Desktop"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "For Mobile"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Html"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Export Icon"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Custom Html Shell"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Head Include"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Canvas Resize Policy"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Focus Canvas On Start"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Experimental Virtual Keyboard"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Progressive Web App"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Offline Page"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 144 X 144"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 180 X 180"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 512 X 512"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
msgid "Could not read HTML shell:"
msgstr ""
@@ -17362,6 +18204,179 @@ msgid "Unknown object type."
msgstr ""
#: platform/osx/export/export.cpp
+msgid "App Category"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "High Res"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Location Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Address Book Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Calendar Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Photos Library Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Desktop Folder Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Documents Folder Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Downloads Folder Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Network Volumes Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Removable Volumes Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#, fuzzy
+msgid "Codesign"
+msgstr "नोड जोडा"
+
+#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
+#: platform/windows/export/export.cpp
+msgid "Identity"
+msgstr ""
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#, fuzzy
+msgid "Timestamp"
+msgstr "वेळ:"
+
+#: platform/osx/export/export.cpp
+msgid "Hardened Runtime"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Replace Existing Signature"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Entitlements"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Custom File"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Allow JIT Code Execution"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Allow Unsigned Executable Memory"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Allow Dyld Environment Variables"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Disable Library Validation"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Audio Input"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Address Book"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Calendars"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Photos Library"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Apple Events"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Debugging"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "App Sandbox"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Network Server"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Network Client"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Device Usb"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Device Bluetooth"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Files Downloads"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Files Pictures"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Files Music"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Files Movies"
+msgstr ""
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#, fuzzy
+msgid "Custom Options"
+msgstr "अâ€à¥…निमेशन टà¥à¤°à¥€"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Notarization"
+msgstr "अâ€à¥…निमेशन टà¥à¤°à¥€"
+
+#: platform/osx/export/export.cpp
+msgid "Apple ID Name"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Apple ID Password"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Apple Team ID"
+msgstr ""
+
+#: platform/osx/export/export.cpp
msgid ""
"Note: The notarization process generally takes less than an hour. When the "
"process is completed, you'll receive an email."
@@ -17551,6 +18566,125 @@ msgid "Force Builtin Codesign"
msgstr ""
#: platform/uwp/export/export.cpp
+msgid "Architecture"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Display Name"
+msgstr "पà¥à¤²à¥‡ मोड:"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Short Name"
+msgstr "नोड हलवा"
+
+#: platform/uwp/export/export.cpp
+msgid "Publisher"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Publisher Display Name"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Product Guid"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Publisher Guid"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Signing"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Certificate"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Algorithm"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Major"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Minor"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Build"
+msgstr "पà¥à¤²à¥‡ मोड:"
+
+#: platform/uwp/export/export.cpp
+msgid "Revision"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Landscape"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Portrait"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Landscape Flipped"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Portrait Flipped"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Store Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 44 X 44 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 71 X 71 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 150 X 150 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 310 X 310 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Wide 310 X 150 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Splash Screen"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Tiles"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Square 150 X 150"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Wide 310 X 150"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Square 310 X 310"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
msgid "Invalid package short name."
msgstr ""
@@ -17615,11 +18749,43 @@ msgid "Debug Certificate"
msgstr ""
#: platform/uwp/export/export.cpp
-msgid "Debug Password"
+msgid "Debug Algorithm"
msgstr ""
-#: platform/uwp/export/export.cpp
-msgid "Debug Algorithm"
+#: platform/windows/export/export.cpp
+msgid "Identity Type"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Timestamp Server URL"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Digest Algorithm"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "File Version"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Product Version"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Company Name"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Product Name"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "File Description"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Trademarks"
msgstr ""
#: platform/windows/export/export.cpp
@@ -17688,12 +18854,14 @@ msgstr ""
msgid "Centered"
msgstr "नोड हलवा"
-#: scene/2d/animated_sprite.cpp scene/2d/camera_2d.cpp scene/2d/light_2d.cpp
+#: scene/2d/animated_sprite.cpp scene/2d/camera_2d.cpp
+#: scene/2d/cpu_particles_2d.cpp scene/2d/light_2d.cpp
#: scene/2d/parallax_background.cpp scene/2d/parallax_layer.cpp
#: scene/2d/path_2d.cpp scene/2d/polygon_2d.cpp scene/2d/sprite.cpp
-#: scene/3d/path.cpp scene/3d/physics_body.cpp scene/3d/sprite_3d.cpp
-#: scene/gui/graph_node.cpp scene/gui/rich_text_effect.cpp
-#: scene/main/canvas_layer.cpp scene/resources/material.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/path.cpp scene/3d/physics_body.cpp
+#: scene/3d/sprite_3d.cpp scene/gui/graph_node.cpp
+#: scene/gui/rich_text_effect.cpp scene/main/canvas_layer.cpp
+#: scene/resources/material.cpp scene/resources/particles_material.cpp
#: scene/resources/style_box.cpp
msgid "Offset"
msgstr ""
@@ -17757,11 +18925,6 @@ msgstr ""
msgid "Override"
msgstr ""
-#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
-#: scene/audio/audio_stream_player.cpp scene/gui/video_player.cpp
-msgid "Stream"
-msgstr ""
-
#: scene/2d/audio_stream_player_2d.cpp scene/audio/audio_stream_player.cpp
#: scene/gui/video_player.cpp servers/audio/effects/audio_effect_amplify.cpp
msgid "Volume dB"
@@ -17786,12 +18949,12 @@ msgid "Stream Paused"
msgstr ""
#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
-#: scene/3d/reflection_probe.cpp scene/3d/visual_instance.cpp
-#: scene/resources/material.cpp
+#: scene/3d/light.cpp scene/3d/reflection_probe.cpp
+#: scene/3d/visual_instance.cpp scene/resources/material.cpp
msgid "Max Distance"
msgstr ""
-#: scene/2d/audio_stream_player_2d.cpp
+#: scene/2d/audio_stream_player_2d.cpp scene/3d/light.cpp
#, fuzzy
msgid "Attenuation"
msgstr "अâ€à¥…निमेशन टà¥à¤°à¥€"
@@ -17840,6 +19003,21 @@ msgstr ""
msgid "Limit"
msgstr ""
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/style_box.cpp
+msgid "Left"
+msgstr ""
+
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/style_box.cpp
+msgid "Right"
+msgstr ""
+
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/dynamic_font.cpp scene/resources/style_box.cpp
+msgid "Bottom"
+msgstr ""
+
#: scene/2d/camera_2d.cpp
msgid "Smoothed"
msgstr ""
@@ -18038,12 +19216,6 @@ msgstr ""
msgid "Emitting"
msgstr ""
-#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp scene/3d/area.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
-#: scene/resources/environment.cpp
-msgid "Amount"
-msgstr ""
-
#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp
#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
msgid "Lifetime"
@@ -18103,17 +19275,12 @@ msgstr ""
#: scene/2d/mesh_instance_2d.cpp scene/2d/multimesh_instance_2d.cpp
#: scene/2d/particles_2d.cpp scene/2d/polygon_2d.cpp scene/2d/sprite.cpp
#: scene/3d/sprite_3d.cpp scene/gui/nine_patch_rect.cpp
-#: scene/gui/texture_rect.cpp scene/resources/sky.cpp
-#: scene/resources/style_box.cpp scene/resources/visual_shader_nodes.cpp
+#: scene/gui/texture_rect.cpp scene/resources/material.cpp
+#: scene/resources/sky.cpp scene/resources/style_box.cpp
+#: scene/resources/visual_shader_nodes.cpp
msgid "Texture"
msgstr ""
-#: scene/2d/cpu_particles_2d.cpp scene/2d/mesh_instance_2d.cpp
-#: scene/2d/multimesh_instance_2d.cpp scene/2d/particles_2d.cpp
-#: scene/2d/sprite.cpp scene/resources/style_box.cpp
-msgid "Normal Map"
-msgstr ""
-
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
msgid "Emission Shape"
@@ -18133,9 +19300,8 @@ msgid "Normals"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/3d/sprite_3d.cpp scene/resources/material.cpp
-#: scene/resources/particles_material.cpp scene/resources/texture.cpp
-msgid "Flags"
+#: scene/resources/particles_material.cpp
+msgid "Align Y"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
@@ -18155,6 +19321,11 @@ msgid "Initial Velocity"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Velocity Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp servers/physics_2d_server.cpp
#: servers/physics_server.cpp
msgid "Angular Velocity"
@@ -18162,6 +19333,12 @@ msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Velocity Curve"
+msgstr "सà¥à¤•ेल:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
msgid "Orbit Velocity"
msgstr ""
@@ -18172,6 +19349,22 @@ msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+msgid "Accel"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Accel Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Accel Curve"
+msgstr "सà¥à¤•ेल:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
msgid "Radial Accel"
msgstr ""
@@ -18181,19 +19374,53 @@ msgid "Tangential Accel"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/2d/joints_2d.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/vehicle_body.cpp
-#: scene/resources/particles_material.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/physics_joint.cpp
+#: scene/3d/vehicle_body.cpp scene/resources/particles_material.cpp
#: servers/audio/effects/audio_effect_reverb.cpp
msgid "Damping"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+msgid "Damping Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Damping Curve"
+msgstr "सà¥à¤•ेल:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp scene/3d/light.cpp
+#: scene/resources/particles_material.cpp
msgid "Angle"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+msgid "Angle Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Angle Curve"
+msgstr "सà¥à¤•ेल:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+msgid "Scale Amount"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+msgid "Scale Amount Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+msgid "Scale Amount Curve"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
msgid "Color Ramp"
msgstr ""
@@ -18208,6 +19435,47 @@ msgstr ""
msgid "Hue Variation"
msgstr "संकà¥à¤°à¤®à¤£: "
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Variation"
+msgstr "संकà¥à¤°à¤®à¤£: "
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Variation Random"
+msgstr "संकà¥à¤°à¤®à¤£: "
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Variation Curve"
+msgstr "संकà¥à¤°à¤®à¤£: "
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Speed Random"
+msgstr "सà¥à¤•ेल:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Speed Curve"
+msgstr "सà¥à¤•ेल:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Offset Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Offset Curve"
+msgstr "सà¥à¤•ेल:"
+
#: scene/2d/joints_2d.cpp
msgid "Node A and Node B must be PhysicsBody2Ds"
msgstr ""
@@ -18239,6 +19507,7 @@ msgid "Node B"
msgstr "नोड जोडा"
#: scene/2d/joints_2d.cpp scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp
+#: scene/3d/light.cpp scene/3d/physics_joint.cpp
#: scene/resources/environment.cpp
msgid "Bias"
msgstr ""
@@ -18247,7 +19516,7 @@ msgstr ""
msgid "Disable Collision"
msgstr ""
-#: scene/2d/joints_2d.cpp
+#: scene/2d/joints_2d.cpp scene/3d/physics_joint.cpp
msgid "Softness"
msgstr ""
@@ -18264,7 +19533,7 @@ msgstr ""
msgid "Rest Length"
msgstr ""
-#: scene/2d/joints_2d.cpp scene/3d/vehicle_body.cpp
+#: scene/2d/joints_2d.cpp scene/3d/physics_joint.cpp scene/3d/vehicle_body.cpp
msgid "Stiffness"
msgstr ""
@@ -18283,7 +19552,7 @@ msgid "Texture Scale"
msgstr ""
#: scene/2d/light_2d.cpp scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp
-#: scene/resources/environment.cpp scene/resources/sky.cpp
+#: scene/3d/light.cpp scene/resources/environment.cpp scene/resources/sky.cpp
msgid "Energy"
msgstr ""
@@ -18319,12 +19588,6 @@ msgstr ""
msgid "Gradient Length"
msgstr ""
-#: scene/2d/light_2d.cpp scene/gui/control.cpp
-#: scene/resources/navigation_mesh.cpp
-#, fuzzy
-msgid "Filter"
-msgstr "नोड हलवा"
-
#: scene/2d/light_2d.cpp
#, fuzzy
msgid "Filter Smooth"
@@ -18703,10 +19966,6 @@ msgid "Applied Forces"
msgstr ""
#: scene/2d/physics_body_2d.cpp
-msgid "Force"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp
msgid "Torque"
msgstr ""
@@ -18719,7 +19978,7 @@ msgid "Sync To Physics"
msgstr ""
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-msgid "Moving platform"
+msgid "Moving Platform"
msgstr ""
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
@@ -18728,7 +19987,7 @@ msgstr ""
#: scene/2d/physics_body_2d.cpp scene/2d/touch_screen_button.cpp
#: scene/3d/physics_body.cpp scene/gui/texture_button.cpp
-#: scene/resources/line_shape_2d.cpp
+#: scene/resources/line_shape_2d.cpp scene/resources/material.cpp
msgid "Normal"
msgstr ""
@@ -18938,6 +20197,31 @@ msgid ""
"as parent."
msgstr ""
+#: scene/2d/visibility_notifier_2d.cpp scene/3d/visibility_notifier.cpp
+#, fuzzy
+msgid "Pause Animations"
+msgstr "अâ€à¥…निमेशन टà¥à¤°à¥€"
+
+#: scene/2d/visibility_notifier_2d.cpp scene/3d/visibility_notifier.cpp
+msgid "Freeze Bodies"
+msgstr ""
+
+#: scene/2d/visibility_notifier_2d.cpp
+msgid "Pause Particles"
+msgstr ""
+
+#: scene/2d/visibility_notifier_2d.cpp
+msgid "Pause Animated Sprites"
+msgstr ""
+
+#: scene/2d/visibility_notifier_2d.cpp
+msgid "Process Parent"
+msgstr ""
+
+#: scene/2d/visibility_notifier_2d.cpp
+msgid "Physics Process Parent"
+msgstr ""
+
#: scene/3d/area.cpp
msgid "Reverb Bus"
msgstr ""
@@ -19029,6 +20313,7 @@ msgid "Attenuation Filter"
msgstr ""
#: scene/3d/audio_stream_player_3d.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
#: servers/audio/effects/audio_effect_filter.cpp
msgid "Cutoff Hz"
msgstr ""
@@ -19068,10 +20353,6 @@ msgid "Octree"
msgstr ""
#: scene/3d/baked_lightmap.cpp
-msgid "User Data"
-msgstr ""
-
-#: scene/3d/baked_lightmap.cpp
msgid "Finding meshes and lights"
msgstr ""
@@ -19303,6 +20584,14 @@ msgid "Ring Axis"
msgstr ""
#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
+msgid "Rotate Y"
+msgstr ""
+
+#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
+msgid "Disable Z"
+msgstr ""
+
+#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
msgid "Flatness"
msgstr ""
@@ -19339,15 +20628,11 @@ msgstr ""
msgid "Dynamic Range"
msgstr ""
-#: scene/3d/gi_probe.cpp
+#: scene/3d/gi_probe.cpp scene/3d/light.cpp
msgid "Normal Bias"
msgstr ""
#: scene/3d/gi_probe.cpp
-msgid "Compress"
-msgstr ""
-
-#: scene/3d/gi_probe.cpp
msgid "Plotting Meshes"
msgstr ""
@@ -19373,15 +20658,28 @@ msgid "Subdiv"
msgstr ""
#: scene/3d/light.cpp
+msgid "Indirect Energy"
+msgstr ""
+
+#: scene/3d/light.cpp
msgid "Negative"
msgstr ""
#: scene/3d/light.cpp
#, fuzzy
+msgid "Specular"
+msgstr "पà¥à¤²à¥‡ मोड:"
+
+#: scene/3d/light.cpp
+#, fuzzy
msgid "Bake Mode"
msgstr "पà¥à¤²à¥‡ मोड:"
#: scene/3d/light.cpp
+msgid "Contact"
+msgstr ""
+
+#: scene/3d/light.cpp
msgid "Reverse Cull Face"
msgstr ""
@@ -19390,12 +20688,29 @@ msgid "Directional Shadow"
msgstr ""
#: scene/3d/light.cpp
+msgid "Split 1"
+msgstr ""
+
+#: scene/3d/light.cpp
+msgid "Split 2"
+msgstr ""
+
+#: scene/3d/light.cpp
+msgid "Split 3"
+msgstr ""
+
+#: scene/3d/light.cpp
#, fuzzy
msgid "Blend Splits"
msgstr "बà¥à¤²à¥‡à¤‚ड टाइमà¥à¤¸:"
#: scene/3d/light.cpp
#, fuzzy
+msgid "Bias Split Scale"
+msgstr "सà¥à¤•ेल:"
+
+#: scene/3d/light.cpp
+#, fuzzy
msgid "Depth Range"
msgstr "सà¥à¤•ेल:"
@@ -19420,6 +20735,11 @@ msgstr ""
msgid "Spot"
msgstr ""
+#: scene/3d/light.cpp
+#, fuzzy
+msgid "Angle Attenuation"
+msgstr "अâ€à¥…निमेशन टà¥à¤°à¥€"
+
#: scene/3d/mesh_instance.cpp
msgid "Software Skinning"
msgstr ""
@@ -19536,6 +20856,60 @@ msgid "Axis Lock"
msgstr ""
#: scene/3d/physics_body.cpp
+msgid "Linear X"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Linear Y"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Linear Z"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Angular X"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Angular Y"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Angular Z"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Motion X"
+msgstr "अâ€à¥…निमेशन टà¥à¤°à¥€"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Motion Y"
+msgstr "अâ€à¥…निमेशन टà¥à¤°à¥€"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Motion Z"
+msgstr "अâ€à¥…निमेशन टà¥à¤°à¥€"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Move Lock X"
+msgstr "नोड हलवा"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Move Lock Y"
+msgstr "नोड हलवा"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Move Lock Z"
+msgstr "नोड हलवा"
+
+#: scene/3d/physics_body.cpp
msgid "Body Offset"
msgstr ""
@@ -19568,6 +20942,14 @@ msgid "Exclude Nodes"
msgstr ""
#: scene/3d/physics_joint.cpp
+msgid "Params"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Impulse Clamp"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit"
msgstr ""
@@ -19579,6 +20961,51 @@ msgstr ""
msgid "Lower"
msgstr ""
+#: scene/3d/physics_joint.cpp scene/3d/vehicle_body.cpp
+#, fuzzy
+msgid "Relaxation"
+msgstr "संकà¥à¤°à¤®à¤£: "
+
+#: scene/3d/physics_joint.cpp
+msgid "Motor"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Target Velocity"
+msgstr "नोड हलवा"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Max Impulse"
+msgstr "मूलà¥à¤¯:"
+
+#: scene/3d/physics_joint.cpp
+msgid "Linear Limit"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Upper Distance"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Lower Distance"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Restitution"
+msgstr "अâ€à¥…निमेशन टà¥à¤°à¥€"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motion"
+msgstr "अâ€à¥…निमेशन टà¥à¤°à¥€"
+
+#: scene/3d/physics_joint.cpp
+msgid "Linear Ortho"
+msgstr ""
+
#: scene/3d/physics_joint.cpp
msgid "Upper Angle"
msgstr ""
@@ -19588,6 +21015,15 @@ msgid "Lower Angle"
msgstr ""
#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Angular Motion"
+msgstr "अâ€à¥…निमेशन टà¥à¤°à¥€"
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Ortho"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
msgid "Swing Span"
msgstr ""
@@ -19596,17 +21032,89 @@ msgid "Twist Span"
msgstr ""
#: scene/3d/physics_joint.cpp
+msgid "Linear Limit X"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Linear Motor X"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Force Limit"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Linear Spring X"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Equilibrium Point"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit X"
msgstr ""
#: scene/3d/physics_joint.cpp
+msgid "Erp"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Motor X"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Spring X"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Linear Limit Y"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Linear Motor Y"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Linear Spring Y"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit Y"
msgstr ""
#: scene/3d/physics_joint.cpp
+msgid "Angular Motor Y"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Spring Y"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Linear Limit Z"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Linear Motor Z"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Linear Spring Z"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit Z"
msgstr ""
+#: scene/3d/physics_joint.cpp
+msgid "Angular Motor Z"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Spring Z"
+msgstr ""
+
#: scene/3d/portal.cpp
msgid "The RoomManager should not be a child or grandchild of a Portal."
msgstr ""
@@ -19712,7 +21220,7 @@ msgstr ""
msgid "Use Default Simplify"
msgstr ""
-#: scene/3d/room.cpp
+#: scene/3d/room.cpp scene/3d/room_manager.cpp
msgid "Room Simplify"
msgstr ""
@@ -19750,6 +21258,12 @@ msgstr ""
msgid "Main"
msgstr ""
+#: scene/3d/room_manager.cpp scene/animation/animation_player.cpp
+#: scene/animation/animation_tree.cpp scene/animation/animation_tree_player.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+msgid "Active"
+msgstr ""
+
#: scene/3d/room_manager.cpp
msgid "Roomlist"
msgstr ""
@@ -19772,6 +21286,46 @@ msgid "Gameplay"
msgstr ""
#: scene/3d/room_manager.cpp
+msgid "Gameplay Monitor"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "Use Secondary PVS"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "Merge Meshes"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "Show Margins"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "Debug Sprawl"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "Overlap Warning Threshold"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "Preview Camera"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "Portal Depth Limit"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "Default Portal Margin"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "Roaming Expansion Margin"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
msgid ""
"RoomList path is invalid.\n"
"Please check the RoomList branch has been assigned in the RoomManager."
@@ -19890,6 +21444,19 @@ msgstr ""
msgid "Billboard"
msgstr ""
+#: scene/3d/sprite_3d.cpp scene/resources/material.cpp
+#, fuzzy
+msgid "Transparent"
+msgstr "संकà¥à¤°à¤®à¤£: "
+
+#: scene/3d/sprite_3d.cpp
+msgid "Shaded"
+msgstr ""
+
+#: scene/3d/sprite_3d.cpp
+msgid "Double Sided"
+msgstr ""
+
#: scene/3d/sprite_3d.cpp
msgid "Alpha Cut"
msgstr ""
@@ -19957,11 +21524,6 @@ msgstr ""
msgid "Max Force"
msgstr "तà¥à¤°à¥à¤Ÿà¥€!"
-#: scene/3d/vehicle_body.cpp
-#, fuzzy
-msgid "Relaxation"
-msgstr "संकà¥à¤°à¤®à¤£: "
-
#: scene/3d/visibility_notifier.cpp
msgid "AABB"
msgstr ""
@@ -20084,7 +21646,7 @@ msgid "Fadeout Time"
msgstr ""
#: scene/animation/animation_blend_tree.cpp
-msgid "autorestart_"
+msgid "Auto Restart"
msgstr ""
#: scene/animation/animation_blend_tree.cpp
@@ -20162,12 +21724,6 @@ msgstr ""
msgid "Default Blend Time"
msgstr "बà¥à¤²à¥‡à¤‚ड टाइमà¥à¤¸:"
-#: scene/animation/animation_player.cpp scene/animation/animation_tree.cpp
-#: scene/animation/animation_tree_player.cpp
-#: servers/audio/effects/audio_effect_delay.cpp
-msgid "Active"
-msgstr ""
-
#: scene/animation/animation_player.cpp
msgid "Method Call Mode"
msgstr ""
@@ -20281,10 +21837,6 @@ msgstr "नोड हलवा"
msgid "Max Iterations"
msgstr "संकà¥à¤°à¤®à¤£: "
-#: scene/animation/tween.cpp scene/resources/texture.cpp
-msgid "Repeat"
-msgstr ""
-
#: scene/animation/tween.cpp
msgid "Playback Process Mode"
msgstr ""
@@ -20311,18 +21863,6 @@ msgstr ""
msgid "Alignment"
msgstr ""
-#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
-#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
-#: scene/resources/style_box.cpp
-msgid "Horizontal"
-msgstr ""
-
-#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
-#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
-#: scene/resources/style_box.cpp
-msgid "Vertical"
-msgstr ""
-
#: scene/gui/base_button.cpp
msgid "Shortcut In Tooltip"
msgstr ""
@@ -20411,10 +21951,6 @@ msgid "HSV"
msgstr ""
#: scene/gui/color_picker.cpp
-msgid "Raw"
-msgstr ""
-
-#: scene/gui/color_picker.cpp
msgid "Switch between hexadecimal and code values."
msgstr ""
@@ -20468,6 +22004,30 @@ msgid "Focus"
msgstr ""
#: scene/gui/control.cpp
+msgid "Neighbour Left"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Neighbour Top"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Neighbour Right"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Neighbour Bottom"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Next"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Previous"
+msgstr ""
+
+#: scene/gui/control.cpp
msgid "Mouse"
msgstr ""
@@ -20500,7 +22060,7 @@ msgid "Dialog"
msgstr ""
#: scene/gui/dialogs.cpp
-msgid "Hide On Ok"
+msgid "Hide On OK"
msgstr ""
#: scene/gui/dialogs.cpp scene/gui/label.cpp
@@ -20587,7 +22147,7 @@ msgid "Timers"
msgstr "वेळ:"
#: scene/gui/item_list.cpp scene/gui/popup_menu.cpp scene/gui/tree.cpp
-msgid "Incremental Search Max Interval (msec)"
+msgid "Incremental Search Max Interval Msec"
msgstr ""
#: scene/gui/item_list.cpp scene/gui/tree.cpp
@@ -21094,6 +22654,22 @@ msgstr "नोड हलवा"
msgid "Nine Patch Stretch"
msgstr ""
+#: scene/gui/texture_progress.cpp
+msgid "Stretch Margin Left"
+msgstr ""
+
+#: scene/gui/texture_progress.cpp
+msgid "Stretch Margin Top"
+msgstr ""
+
+#: scene/gui/texture_progress.cpp
+msgid "Stretch Margin Right"
+msgstr ""
+
+#: scene/gui/texture_progress.cpp
+msgid "Stretch Margin Bottom"
+msgstr ""
+
#: scene/gui/tree.cpp
msgid "Custom Minimum Height"
msgstr ""
@@ -21127,7 +22703,7 @@ msgid "Paused"
msgstr ""
#: scene/gui/video_player.cpp
-msgid "Buffering (msec)"
+msgid "Buffering Msec"
msgstr ""
#: scene/gui/video_player.cpp
@@ -21434,6 +23010,22 @@ msgid "Shadow Atlas"
msgstr ""
#: scene/main/viewport.cpp
+msgid "Quad 0"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 1"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 2"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 3"
+msgstr ""
+
+#: scene/main/viewport.cpp
msgid "Canvas Transform"
msgstr ""
@@ -21446,6 +23038,10 @@ msgid "Tooltip Delay (sec)"
msgstr ""
#: scene/register_scene_types.cpp
+msgid "Swap OK Cancel"
+msgstr ""
+
+#: scene/register_scene_types.cpp
msgid "Use hiDPI"
msgstr ""
@@ -21458,18 +23054,6 @@ msgid "Custom Font"
msgstr ""
#: scene/resources/audio_stream_sample.cpp
-msgid "Loop Mode"
-msgstr ""
-
-#: scene/resources/audio_stream_sample.cpp
-msgid "Loop Begin"
-msgstr ""
-
-#: scene/resources/audio_stream_sample.cpp
-msgid "Loop End"
-msgstr ""
-
-#: scene/resources/audio_stream_sample.cpp
#: servers/audio/effects/audio_stream_generator.cpp servers/audio_server.cpp
msgid "Mix Rate"
msgstr ""
@@ -21519,6 +23103,15 @@ msgid "Extra Spacing"
msgstr ""
#: scene/resources/dynamic_font.cpp
+msgid "Char"
+msgstr ""
+
+#: scene/resources/dynamic_font.cpp scene/resources/world.cpp
+#: scene/resources/world_2d.cpp
+msgid "Space"
+msgstr ""
+
+#: scene/resources/dynamic_font.cpp
msgid "Font"
msgstr ""
@@ -21725,6 +23318,42 @@ msgid "Glow"
msgstr ""
#: scene/resources/environment.cpp
+msgid "Levels"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "1"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "2"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "3"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "4"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "5"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "6"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "7"
+msgstr ""
+
+#: scene/resources/environment.cpp
msgid "Bloom"
msgstr ""
@@ -21808,9 +23437,61 @@ msgid "Next Pass"
msgstr ""
#: scene/resources/material.cpp
+msgid "Use Shadow To Opacity"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Unshaded"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Vertex Lighting"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "No Depth Test"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Use Point Size"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "World Triplanar"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Fixed Size"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Albedo Tex Force sRGB"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Do Not Receive Shadows"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Disable Ambient Light"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Ensure Correct Normals"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Vertex Color"
msgstr ""
+#: scene/resources/material.cpp
+msgid "Use As Albedo"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Is sRGB"
+msgstr ""
+
#: scene/resources/material.cpp servers/visual_server.cpp
msgid "Parameters"
msgstr ""
@@ -21844,6 +23525,11 @@ msgid "Billboard Mode"
msgstr "पà¥à¤²à¥‡ मोड:"
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Billboard Keep Scale"
+msgstr "पà¥à¤²à¥‡ मोड:"
+
+#: scene/resources/material.cpp
msgid "Grow"
msgstr ""
@@ -21852,6 +23538,10 @@ msgid "Grow Amount"
msgstr ""
#: scene/resources/material.cpp
+msgid "Use Alpha Scissor"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Alpha Scissor Threshold"
msgstr ""
@@ -21880,10 +23570,18 @@ msgid "Metallic Specular"
msgstr ""
#: scene/resources/material.cpp
+msgid "Metallic Texture"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Metallic Texture Channel"
msgstr ""
#: scene/resources/material.cpp
+msgid "Roughness Texture"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Roughness Texture Channel"
msgstr ""
@@ -21900,6 +23598,14 @@ msgid "Emission Operator"
msgstr ""
#: scene/resources/material.cpp
+msgid "Emission On UV2"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Emission Texture"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "NormalMap"
msgstr ""
@@ -21912,6 +23618,10 @@ msgid "Rim Tint"
msgstr ""
#: scene/resources/material.cpp
+msgid "Rim Texture"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Clearcoat"
msgstr ""
@@ -21920,14 +23630,26 @@ msgid "Clearcoat Gloss"
msgstr ""
#: scene/resources/material.cpp
+msgid "Clearcoat Texture"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Anisotropy"
msgstr ""
#: scene/resources/material.cpp
+msgid "Anisotropy Flowmap"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Ambient Occlusion"
msgstr ""
#: scene/resources/material.cpp
+msgid "On UV2"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Texture Channel"
msgstr ""
@@ -21964,6 +23686,11 @@ msgstr "संकà¥à¤°à¤®à¤£: "
#: scene/resources/material.cpp
#, fuzzy
+msgid "Transmission Texture"
+msgstr "संकà¥à¤°à¤®à¤£: "
+
+#: scene/resources/material.cpp
+#, fuzzy
msgid "Refraction"
msgstr "संकà¥à¤°à¤®à¤£: "
@@ -21980,6 +23707,10 @@ msgid "UV1"
msgstr ""
#: scene/resources/material.cpp
+msgid "Triplanar"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Triplanar Sharpness"
msgstr ""
@@ -22167,6 +23898,15 @@ msgstr ""
msgid "Point Count"
msgstr ""
+#: scene/resources/particles_material.cpp
+msgid "Scale Random"
+msgstr ""
+
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Scale Curve"
+msgstr "सà¥à¤•ेल:"
+
#: scene/resources/physics_material.cpp
msgid "Rough"
msgstr ""
@@ -22224,10 +23964,6 @@ msgid "A"
msgstr ""
#: scene/resources/shader.cpp
-msgid "Code"
-msgstr ""
-
-#: scene/resources/shader.cpp
msgid "Custom Defines"
msgstr ""
@@ -22312,14 +24048,6 @@ msgid "Grow End"
msgstr ""
#: scene/resources/texture.cpp
-msgid "Storage"
-msgstr ""
-
-#: scene/resources/texture.cpp
-msgid "Lossy Quality"
-msgstr ""
-
-#: scene/resources/texture.cpp
msgid "Load Path"
msgstr ""
@@ -22433,10 +24161,6 @@ msgstr ""
msgid "Fallback Environment"
msgstr ""
-#: scene/resources/world.cpp scene/resources/world_2d.cpp
-msgid "Space"
-msgstr ""
-
#: scene/resources/world.cpp
msgid "Scenario"
msgstr ""
@@ -22510,8 +24234,34 @@ msgstr ""
msgid "Wet"
msgstr ""
-#: servers/audio/effects/audio_effect_compressor.cpp
-msgid "Threshold"
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "Voice"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+msgid "Delay (ms)"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_phaser.cpp
+msgid "Rate Hz"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#, fuzzy
+msgid "Depth (ms)"
+msgstr "शेवटी"
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+msgid "Level dB"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+#: servers/audio/effects/audio_effect_panner.cpp
+msgid "Pan"
msgstr ""
#: servers/audio/effects/audio_effect_compressor.cpp
@@ -22536,19 +24286,6 @@ msgid "Tap 1"
msgstr ""
#: servers/audio/effects/audio_effect_delay.cpp
-msgid "Delay (ms)"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_delay.cpp
-msgid "Level dB"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_delay.cpp
-#: servers/audio/effects/audio_effect_panner.cpp
-msgid "Pan"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_delay.cpp
msgid "Tap 2"
msgstr ""
@@ -22606,10 +24343,6 @@ msgstr ""
msgid "Range Max Hz"
msgstr ""
-#: servers/audio/effects/audio_effect_phaser.cpp
-msgid "Rate Hz"
-msgstr ""
-
#: servers/audio/effects/audio_effect_pitch_shift.cpp
msgid "Oversampling"
msgstr ""
@@ -22624,7 +24357,7 @@ msgid "Predelay"
msgstr ""
#: servers/audio/effects/audio_effect_reverb.cpp
-msgid "(msec)"
+msgid "Msec"
msgstr ""
#: servers/audio/effects/audio_effect_reverb.cpp
diff --git a/editor/translations/ms.po b/editor/translations/ms.po
index f1fdbb20bb..0dd5f8c7fb 100644
--- a/editor/translations/ms.po
+++ b/editor/translations/ms.po
@@ -27,7 +27,7 @@ msgstr ""
"Plural-Forms: nplurals=1; plural=0;\n"
"X-Generator: Weblate 4.11-dev\n"
-#: core/bind/core_bind.cpp
+#: core/bind/core_bind.cpp main/main.cpp
msgid "Tablet Driver"
msgstr ""
@@ -129,8 +129,8 @@ msgstr "Kedudukan Dok"
#: core/bind/core_bind.cpp editor/editor_settings.cpp main/main.cpp
#: modules/gdscript/gdscript_editor.cpp modules/gridmap/grid_map.cpp
#: modules/mono/csharp_script.cpp modules/visual_script/visual_script_nodes.cpp
-#: scene/2d/tile_map.cpp scene/3d/camera.cpp scene/gui/control.cpp
-#: scene/gui/graph_edit.cpp scene/main/viewport.cpp
+#: scene/2d/tile_map.cpp scene/3d/camera.cpp scene/3d/light.cpp
+#: scene/gui/control.cpp scene/gui/graph_edit.cpp scene/main/viewport.cpp
#: scene/resources/dynamic_font.cpp scene/resources/navigation_mesh.cpp
#: scene/resources/primitive_meshes.cpp scene/resources/sky.cpp
#: scene/resources/style_box.cpp scene/resources/texture.cpp
@@ -231,8 +231,7 @@ msgid "Data"
msgstr ""
#: core/io/file_access_network.cpp core/register_core_types.cpp
-#: editor/editor_settings.cpp editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp main/main.cpp
+#: editor/editor_settings.cpp main/main.cpp
#: modules/gdscript/language_server/gdscript_language_server.cpp
msgid "Network"
msgstr ""
@@ -510,9 +509,10 @@ msgstr "Pratetap"
msgid "Relative"
msgstr "Snap Relatif"
-#: core/os/input_event.cpp scene/2d/camera_2d.cpp
-#: scene/3d/interpolated_camera.cpp scene/animation/animation_player.cpp
-#: scene/resources/environment.cpp
+#: core/os/input_event.cpp scene/2d/camera_2d.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/interpolated_camera.cpp
+#: scene/animation/animation_player.cpp scene/resources/environment.cpp
+#: scene/resources/particles_material.cpp
msgid "Speed"
msgstr ""
@@ -559,8 +559,9 @@ msgstr "Komuniti"
msgid "Pitch"
msgstr ""
-#: core/os/input_event.cpp scene/2d/physics_body_2d.cpp
-#: scene/3d/physics_body.cpp
+#: core/os/input_event.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/physics_body_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/3d/physics_body.cpp scene/resources/particles_material.cpp
msgid "Velocity"
msgstr ""
@@ -578,6 +579,8 @@ msgid "Controller Value"
msgstr ""
#: core/project_settings.cpp editor/editor_node.cpp main/main.cpp
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/windows/export/export.cpp
#, fuzzy
msgid "Application"
msgstr "Aksi"
@@ -596,13 +599,16 @@ msgstr "Tetapan Projek..."
#: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp
#: editor/editor_plugin_settings.cpp editor/editor_profiler.cpp
#: editor/project_manager.cpp editor/settings_config_dialog.cpp
-#: modules/gdnative/nativescript/nativescript.cpp scene/2d/area_2d.cpp
-#: scene/3d/area.cpp scene/main/node.cpp
+#: modules/gdnative/nativescript/nativescript.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/osx/export/export.cpp scene/2d/area_2d.cpp scene/3d/area.cpp
+#: scene/main/node.cpp
msgid "Name"
msgstr "Nama"
#: core/project_settings.cpp editor/editor_help.cpp
-#: modules/visual_script/visual_script_nodes.cpp
+#: modules/visual_script/visual_script_nodes.cpp platform/uwp/export/export.cpp
+#: platform/windows/export/export.cpp
msgid "Description"
msgstr "Keterangan"
@@ -640,7 +646,7 @@ msgid "Custom User Dir Name"
msgstr ""
#: core/project_settings.cpp editor/animation_track_editor.cpp
-#: editor/editor_audio_buses.cpp servers/audio_server.cpp
+#: editor/editor_audio_buses.cpp main/main.cpp servers/audio_server.cpp
msgid "Audio"
msgstr "Audio"
@@ -805,10 +811,13 @@ msgstr "Penapis:"
msgid "Sharpen Intensity"
msgstr ""
-#: core/project_settings.cpp editor/editor_node.cpp editor/editor_settings.cpp
-#: editor/plugins/script_editor_plugin.cpp editor/project_export.cpp
-#: main/main.cpp modules/gdscript/gdscript.cpp
-#: modules/visual_script/visual_script.cpp scene/3d/room_manager.cpp
+#: core/project_settings.cpp editor/editor_export.cpp editor/editor_node.cpp
+#: editor/editor_settings.cpp editor/plugins/script_editor_plugin.cpp
+#: editor/project_export.cpp main/main.cpp modules/gdscript/gdscript.cpp
+#: modules/visual_script/visual_script.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp scene/3d/room_manager.cpp
#: scene/main/scene_tree.cpp scene/resources/shape_2d.cpp
#: servers/visual_server.cpp
msgid "Debug"
@@ -1041,6 +1050,7 @@ msgid "Subsurface Scattering"
msgstr ""
#: drivers/gles3/rasterizer_scene_gles3.cpp
+#: editor/import/resource_importer_texture.cpp
#: editor/plugins/spatial_editor_plugin.cpp modules/gltf/gltf_node.cpp
#: modules/gridmap/grid_map.cpp scene/2d/cpu_particles_2d.cpp
#: scene/2d/node_2d.cpp scene/2d/parallax_layer.cpp scene/2d/polygon_2d.cpp
@@ -1337,6 +1347,7 @@ msgid "Editors"
msgstr "Editor"
#: editor/animation_track_editor.cpp editor/editor_settings.cpp
+#: editor/import/resource_importer_scene.cpp
#: editor/plugins/animation_player_editor_plugin.cpp editor/scene_tree_dock.cpp
#: scene/2d/animated_sprite.cpp scene/2d/cpu_particles_2d.cpp
#: scene/2d/sprite.cpp scene/3d/cpu_particles.cpp scene/3d/sprite_3d.cpp
@@ -1569,14 +1580,14 @@ msgstr "Nilai langkah animasi."
msgid "Seconds"
msgstr "Saat"
-#: editor/animation_track_editor.cpp
+#: editor/animation_track_editor.cpp editor/import/resource_importer_scene.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp main/main.cpp
#: scene/resources/texture.cpp
msgid "FPS"
msgstr "FPS"
#: editor/animation_track_editor.cpp editor/editor_plugin_settings.cpp
-#: editor/editor_resource_picker.cpp
+#: editor/editor_resource_picker.cpp editor/import/resource_importer_wav.cpp
#: editor/plugins/polygon_2d_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
@@ -2544,7 +2555,9 @@ msgid "Remove Autoload"
msgstr "Keluarkan Autoload"
#: editor/editor_autoload_settings.cpp editor/editor_plugin_settings.cpp
-#: modules/gdscript/gdscript.cpp scene/2d/polygon_2d.cpp scene/3d/area.cpp
+#: modules/gdscript/gdscript.cpp platform/android/export/export_plugin.cpp
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#: scene/2d/polygon_2d.cpp scene/3d/area.cpp scene/3d/physics_joint.cpp
#: scene/3d/reflection_probe.cpp scene/main/canvas_layer.cpp
#: scene/resources/material.cpp servers/visual_server.cpp
msgid "Enable"
@@ -2713,6 +2726,59 @@ msgstr ""
#: editor/editor_export.cpp platform/android/export/export_plugin.cpp
#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Custom Template"
+msgstr "Editor"
+
+#: editor/editor_export.cpp editor/project_export.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp
+msgid "Release"
+msgstr ""
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Binary Format"
+msgstr "Warna seragam."
+
+#: editor/editor_export.cpp
+msgid "64 Bits"
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Embed PCK"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Texture Format"
+msgstr "Mod Pembaris"
+
+#: editor/editor_export.cpp
+msgid "BPTC"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "S3TC"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "ETC"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "ETC2"
+msgstr ""
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "No BPTC Fallbacks"
+msgstr "Paksa Shader Fallbacks"
+
+#: editor/editor_export.cpp platform/android/export/export_plugin.cpp
+#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
msgid "Custom debug template not found."
msgstr "Templat nyahpepijat tersuai tidak dijumpai."
@@ -2894,6 +2960,7 @@ msgid "Make Current"
msgstr "Buat Semasa"
#: editor/editor_feature_profile.cpp editor/editor_node.cpp
+#: editor/import/resource_importer_scene.cpp
#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
msgid "Import"
msgstr "import"
@@ -3023,8 +3090,11 @@ msgstr "Berjaya!"
msgid "Display Mode"
msgstr "Mod Main:"
-#: editor/editor_file_dialog.cpp main/main.cpp modules/csg/csg_shape.cpp
-#: modules/visual_script/visual_script_nodes.cpp
+#: editor/editor_file_dialog.cpp
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+#: editor/import/resource_importer_wav.cpp main/main.cpp
+#: modules/csg/csg_shape.cpp modules/visual_script/visual_script_nodes.cpp
#: modules/visual_script/visual_script_yield_nodes.cpp scene/2d/light_2d.cpp
#: scene/2d/physics_body_2d.cpp scene/2d/tile_map.cpp
#: scene/3d/baked_lightmap.cpp scene/3d/light.cpp scene/3d/physics_body.cpp
@@ -3163,7 +3233,9 @@ msgstr "Mengimport (Semula) Aset"
msgid "Reimport Missing Imported Files"
msgstr ""
-#: editor/editor_help.cpp
+#: editor/editor_help.cpp scene/2d/camera_2d.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/resources/dynamic_font.cpp
+#: scene/resources/style_box.cpp
msgid "Top"
msgstr "Atas"
@@ -3215,6 +3287,7 @@ msgid "Fonts"
msgstr "Fon"
#: editor/editor_help.cpp editor/plugins/theme_editor_plugin.cpp
+#: platform/iphone/export/export.cpp
msgid "Icons"
msgstr "Ikon"
@@ -3382,7 +3455,9 @@ msgstr ""
msgid "Pin value [Disabled because '%s' is editor-only]"
msgstr "Nilai pin [Dinyahdayakan kerana '%s' adalah editor sahaja]"
-#: editor/editor_inspector.cpp editor/scene_tree_dock.cpp
+#: editor/editor_inspector.cpp
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+#: editor/scene_tree_dock.cpp
#: modules/visual_script/visual_script_func_nodes.cpp
#: modules/visual_script/visual_script_nodes.cpp
#: modules/visual_script/visual_script_property_selector.cpp
@@ -3724,6 +3799,16 @@ msgid "Quick Open Script..."
msgstr "Buka Cepat Skrip..."
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Save & Reload"
+msgstr "Simpan & Mula Semula"
+
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Save changes to '%s' before reloading?"
+msgstr "Simpan perubahan pada '%s' sebelum menutup?"
+
+#: editor/editor_node.cpp
msgid "Save & Close"
msgstr "Simpan & Tutup"
@@ -3841,6 +3926,11 @@ msgid "Open Project Manager?"
msgstr "Buka Pengurus Projek?"
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Save changes to the following scene(s) before reloading?"
+msgstr "Simpan perubahan pada adegan berikut sebelum keluar?"
+
+#: editor/editor_node.cpp
msgid "Save & Quit"
msgstr "Simpan & Keluar"
@@ -4115,8 +4205,8 @@ msgstr "Kemas Kini Perubahan Penting"
#: editor/editor_node.cpp
#, fuzzy
-msgid "Translate Properties"
-msgstr "Tampal Sifat-sifat"
+msgid "Localize Settings"
+msgstr "Menguji"
#: editor/editor_node.cpp
#, fuzzy
@@ -4133,8 +4223,8 @@ msgstr "Pemeriksa"
#: editor/editor_node.cpp
#, fuzzy
-msgid "Capitalize Properties"
-msgstr "Tampal Sifat-sifat"
+msgid "Default Property Name Style"
+msgstr "Lalai"
#: editor/editor_node.cpp
msgid "Default Float Step"
@@ -4742,7 +4832,9 @@ msgstr "Plugin yang Dipasang:"
msgid "Update"
msgstr "Kemas kini"
-#: editor/editor_plugin_settings.cpp
+#: editor/editor_plugin_settings.cpp platform/android/export/export_plugin.cpp
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp
msgid "Version"
msgstr "Versi"
@@ -5760,7 +5852,7 @@ msgstr "Penuh Rect"
msgid "Rect Custom Position"
msgstr "Kedudukan Dok"
-#: editor/editor_settings.cpp
+#: editor/editor_settings.cpp platform/android/export/export_plugin.cpp
msgid "Screen"
msgstr ""
@@ -5785,6 +5877,19 @@ msgid "Editor SSL Certificates"
msgstr ""
#: editor/editor_settings.cpp
+msgid "HTTP Proxy"
+msgstr ""
+
+#: editor/editor_settings.cpp
+msgid "Host"
+msgstr ""
+
+#: editor/editor_settings.cpp editor/fileserver/editor_file_server.cpp
+#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp
+msgid "Port"
+msgstr ""
+
+#: editor/editor_settings.cpp
msgid "Project Manager"
msgstr ""
@@ -5827,7 +5932,8 @@ msgstr ""
msgid "String Color"
msgstr "Menyimpan Fail:"
-#: editor/editor_settings.cpp
+#: editor/editor_settings.cpp platform/javascript/export/export.cpp
+#: platform/uwp/export/export.cpp
msgid "Background Color"
msgstr ""
@@ -5997,22 +6103,6 @@ msgid "Starting the download..."
msgstr "Memulakan muat turun..."
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "HTTP Proxy"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Host"
-msgstr ""
-
-#: editor/export_template_manager.cpp editor/fileserver/editor_file_server.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp main/main.cpp
-#: modules/mono/mono_gd/gd_mono.cpp
-msgid "Port"
-msgstr ""
-
-#: editor/export_template_manager.cpp
msgid "Error requesting URL:"
msgstr "Ralat semasa meminta URL:"
@@ -6260,6 +6350,7 @@ msgstr ""
#: editor/fileserver/editor_file_server.cpp
#: editor/plugins/version_control_editor_plugin.cpp
+#: platform/uwp/export/export.cpp platform/windows/export/export.cpp
msgid "Password"
msgstr ""
@@ -6637,6 +6728,115 @@ msgstr ""
msgid "Use Ambient"
msgstr ""
+#: editor/import/resource_importer_bitmask.cpp
+#, fuzzy
+msgid "Create From"
+msgstr "Cipta Folder"
+
+#: editor/import/resource_importer_bitmask.cpp
+#: servers/audio/effects/audio_effect_compressor.cpp
+msgid "Threshold"
+msgstr ""
+
+#: editor/import/resource_importer_csv_translation.cpp
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_scene.cpp
+#: editor/import/resource_importer_texture.cpp
+#: editor/import/resource_importer_wav.cpp scene/3d/gi_probe.cpp
+#, fuzzy
+msgid "Compress"
+msgstr "Komponen"
+
+#: editor/import/resource_importer_csv_translation.cpp
+msgid "Delimiter"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+msgid "No BPTC If RGB"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/sprite_3d.cpp
+#: scene/resources/material.cpp scene/resources/particles_material.cpp
+#: scene/resources/texture.cpp
+msgid "Flags"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/animation/tween.cpp
+#: scene/resources/texture.cpp
+msgid "Repeat"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/2d/light_2d.cpp
+#: scene/gui/control.cpp scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Filter"
+msgstr "Penapis:"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Mipmaps"
+msgstr "Isyarat"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+msgid "Anisotropic"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+msgid "sRGB"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+msgid "Slices"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
+#: scene/resources/style_box.cpp
+#, fuzzy
+msgid "Horizontal"
+msgstr "Alihkan Panduan Mendatar"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
+#: scene/resources/style_box.cpp
+#, fuzzy
+msgid "Vertical"
+msgstr "Alih Panduan Menegak"
+
+#: editor/import/resource_importer_obj.cpp
+#, fuzzy
+msgid "Generate Tangents"
+msgstr "Masukkan Titik"
+
+#: editor/import/resource_importer_obj.cpp
+#, fuzzy
+msgid "Scale Mesh"
+msgstr "Mod Skala"
+
+#: editor/import/resource_importer_obj.cpp
+#, fuzzy
+msgid "Offset Mesh"
+msgstr "Grid Offset:"
+
+#: editor/import/resource_importer_obj.cpp
+#: editor/import/resource_importer_scene.cpp
+msgid "Octahedral Compression"
+msgstr ""
+
+#: editor/import/resource_importer_obj.cpp
+#, fuzzy
+msgid "Optimize Mesh Flags"
+msgstr "Saiz: "
+
#: editor/import/resource_importer_scene.cpp
msgid "Import as Single Scene"
msgstr "Import sebagai Satu Adegan"
@@ -6677,6 +6877,155 @@ msgstr "Import sebagai Pelbagai Adegan-adegan"
msgid "Import as Multiple Scenes+Materials"
msgstr "Import sebagai Pelbagai Adegan +Bahan"
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Nodes"
+msgstr "Nod"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Root Type"
+msgstr "Jenis Ahli"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Root Name"
+msgstr "Nama Remote"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Root Scale"
+msgstr "Kedalaman"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Custom Script"
+msgstr "Potong Nod"
+
+#: editor/import/resource_importer_scene.cpp scene/resources/texture.cpp
+#, fuzzy
+msgid "Storage"
+msgstr "Menyimpan Fail:"
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Use Legacy Names"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+#, fuzzy
+msgid "Materials"
+msgstr "Perubahan Bahan:"
+
+#: editor/import/resource_importer_scene.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Location"
+msgstr "Langkah Putaran:"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Keep On Reimport"
+msgstr "Import semula"
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+msgid "Meshes"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Ensure Tangents"
+msgstr "Ubah Suai Tangen Lengkung"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Light Baking"
+msgstr "Bake Lightmap"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Lightmap Texel Size"
+msgstr "Bake Lightmap"
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+msgid "Skins"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Use Named Skins"
+msgstr "Gunakan Skala Snap"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "External Files"
+msgstr "Buka Fail"
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Store In Subdir"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Filter Script"
+msgstr "Penapis:"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Keep Custom Tracks"
+msgstr "Kosongkan Transformasi"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Optimizer"
+msgstr "Mengoptimumkan"
+
+#: editor/import/resource_importer_scene.cpp main/main.cpp
+#: modules/mono/mono_gd/gd_mono.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp scene/2d/camera_2d.cpp scene/2d/light_2d.cpp
+#: scene/2d/navigation_polygon.cpp scene/2d/ray_cast_2d.cpp scene/2d/sprite.cpp
+#: scene/2d/y_sort.cpp scene/3d/audio_stream_player_3d.cpp
+#: scene/3d/baked_lightmap.cpp scene/3d/interpolated_camera.cpp
+#: scene/3d/light.cpp scene/3d/navigation_mesh_instance.cpp
+#: scene/3d/physics_joint.cpp scene/3d/ray_cast.cpp scene/3d/sprite_3d.cpp
+#: scene/gui/graph_edit.cpp scene/gui/rich_text_label.cpp
+#: scene/resources/curve.cpp scene/resources/environment.cpp
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Enabled"
+msgstr "Aktifkan"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Max Linear Error"
+msgstr "Max. Ralat Linear:"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Max Angular Error"
+msgstr "Max. Ralat Sudut:"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Max Angle"
+msgstr "Nilai:"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Remove Unused Tracks"
+msgstr "Keluarkan Trek Anim"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Clips"
+msgstr "Klip Anim"
+
+#: editor/import/resource_importer_scene.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/particles_2d.cpp scene/3d/area.cpp scene/3d/cpu_particles.cpp
+#: scene/3d/particles.cpp scene/resources/environment.cpp
+#, fuzzy
+msgid "Amount"
+msgstr "Jumlah:"
+
#: editor/import/resource_importer_scene.cpp
#: editor/plugins/mesh_library_editor_plugin.cpp
msgid "Import Scene"
@@ -6720,12 +7069,145 @@ msgstr ""
msgid "Saving..."
msgstr "Menyimpan..."
+#: editor/import/resource_importer_texture.cpp scene/resources/texture.cpp
+msgid "Lossy Quality"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "HDR Mode"
+msgstr "Pilih Mod"
+
+#: editor/import/resource_importer_texture.cpp
+msgid "BPTC LDR"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/mesh_instance_2d.cpp scene/2d/multimesh_instance_2d.cpp
+#: scene/2d/particles_2d.cpp scene/2d/sprite.cpp scene/resources/style_box.cpp
+msgid "Normal Map"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Process"
+msgstr "Mod Alih"
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Fix Alpha Border"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Premult Alpha"
+msgstr "Edit Poli"
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Hdr As Srgb"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Invert Color"
+msgstr "Warna"
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Normal Map Invert Y"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
+#: scene/audio/audio_stream_player.cpp scene/gui/video_player.cpp
+msgid "Stream"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Size Limit"
+msgstr "Saiz: "
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Detect 3D"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "SVG"
+msgstr ""
+
#: editor/import/resource_importer_texture.cpp
msgid ""
"Warning, no suitable PC VRAM compression enabled in Project Settings. This "
"texture will not display correctly on PC."
msgstr ""
+#: editor/import/resource_importer_texture_atlas.cpp
+#, fuzzy
+msgid "Atlas File"
+msgstr "Fail ZIP Aset"
+
+#: editor/import/resource_importer_texture_atlas.cpp
+#, fuzzy
+msgid "Import Mode"
+msgstr "Import Dok"
+
+#: editor/import/resource_importer_texture_atlas.cpp
+msgid "Crop To Region"
+msgstr ""
+
+#: editor/import/resource_importer_texture_atlas.cpp
+msgid "Trim Alpha Border From Region"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp scene/2d/physics_body_2d.cpp
+msgid "Force"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+msgid "8 Bit"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp main/main.cpp
+#: modules/mono/editor/csharp_project.cpp modules/mono/mono_gd/gd_mono.cpp
+msgid "Mono"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+#, fuzzy
+msgid "Max Rate"
+msgstr "Campur Nod"
+
+#: editor/import/resource_importer_wav.cpp
+#, fuzzy
+msgid "Max Rate Hz"
+msgstr "Campur Nod"
+
+#: editor/import/resource_importer_wav.cpp
+msgid "Trim"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+#, fuzzy
+msgid "Normalize"
+msgstr "Warna Emission"
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+#, fuzzy
+msgid "Loop Mode"
+msgstr "Mod Alih"
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+#, fuzzy
+msgid "Loop Begin"
+msgstr "Mod Alih"
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+#, fuzzy
+msgid "Loop End"
+msgstr "Mod Alih"
+
#: editor/import_defaults_editor.cpp
msgid "Select Importer"
msgstr "Pilih Pengimport"
@@ -6802,6 +7284,28 @@ msgid "Failed to load resource."
msgstr "Gagal untuk memuatkan sumber."
#: editor/inspector_dock.cpp
+#, fuzzy
+msgid "Property Name Style"
+msgstr "Trek Sifat"
+
+#: editor/inspector_dock.cpp scene/gui/color_picker.cpp
+msgid "Raw"
+msgstr ""
+
+#: editor/inspector_dock.cpp
+#, fuzzy
+msgid "Capitalized"
+msgstr "Tampal Sifat-sifat"
+
+#: editor/inspector_dock.cpp
+msgid "Localized"
+msgstr ""
+
+#: editor/inspector_dock.cpp
+msgid "Localization not available for current language."
+msgstr ""
+
+#: editor/inspector_dock.cpp
msgid "Copy Properties"
msgstr "Salin Sifat-sifat"
@@ -7849,18 +8353,26 @@ msgid "License (Z-A)"
msgstr "Lesen (Z-A)"
#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgctxt "Pagination"
msgid "First"
msgstr "Pertama"
-#: editor/plugins/asset_library_editor_plugin.cpp scene/gui/control.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgctxt "Pagination"
msgid "Previous"
msgstr "Sebelum"
-#: editor/plugins/asset_library_editor_plugin.cpp scene/gui/control.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgctxt "Pagination"
msgid "Next"
msgstr "Seterusnya"
#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgctxt "Pagination"
msgid "Last"
msgstr "Terakhir"
@@ -8105,19 +8617,19 @@ msgstr ""
"Apabila aktif, mengalihkan nod Control mengubah sauh mereka dan bukannya "
"margin."
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Top Left"
msgstr "Atas Kiri"
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Top Right"
msgstr "Atas Kanan"
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Bottom Right"
msgstr "Bawah Kanan"
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Bottom Left"
msgstr "Bawah Kiri"
@@ -8831,6 +9343,19 @@ msgstr "Panggang GI Probe"
msgid "Gradient Edited"
msgstr "Kecerunan Disunting"
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+msgid "Swap GradientTexture2D Fill Points"
+msgstr ""
+
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+msgid "Swap Gradient Fill Points"
+msgstr ""
+
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+#, fuzzy
+msgid "Toggle Grid Snap"
+msgstr "Togol Mod"
+
#: editor/plugins/item_list_editor_plugin.cpp
msgid "Item %d"
msgstr "Item %d"
@@ -9044,9 +9569,10 @@ msgid ""
"%s"
msgstr ""
-#: editor/plugins/mesh_library_editor_plugin.cpp modules/gridmap/grid_map.cpp
-msgid "Mesh Library"
-msgstr ""
+#: editor/plugins/mesh_library_editor_plugin.cpp
+#, fuzzy
+msgid "MeshLibrary"
+msgstr "PerpustakaanMesh..."
#: editor/plugins/mesh_library_editor_plugin.cpp
msgid "Add Item"
@@ -10029,8 +10555,8 @@ msgstr ""
msgid "Source"
msgstr ""
-#: editor/plugins/script_text_editor.cpp scene/3d/interpolated_camera.cpp
-#: scene/animation/skeleton_ik.cpp
+#: editor/plugins/script_text_editor.cpp platform/uwp/export/export.cpp
+#: scene/3d/interpolated_camera.cpp scene/animation/skeleton_ik.cpp
msgid "Target"
msgstr ""
@@ -10998,7 +11524,9 @@ msgstr ""
#: editor/plugins/sprite_frames_editor_plugin.cpp
#: modules/gltf/gltf_animation.cpp modules/minimp3/audio_stream_mp3.cpp
-#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp scene/2d/path_2d.cpp
+#: modules/minimp3/resource_importer_mp3.cpp
+#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp
+#: modules/stb_vorbis/resource_importer_ogg_vorbis.cpp scene/2d/path_2d.cpp
#: scene/3d/path.cpp scene/resources/animation.cpp scene/resources/material.cpp
msgid "Loop"
msgstr ""
@@ -11912,8 +12440,9 @@ msgstr ""
msgid "Priority"
msgstr ""
-#: editor/plugins/tile_set_editor_plugin.cpp main/main.cpp scene/gui/button.cpp
-#: scene/gui/item_list.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp main/main.cpp
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#: scene/gui/button.cpp scene/gui/item_list.cpp
msgid "Icon"
msgstr ""
@@ -13219,10 +13748,6 @@ msgid ""
msgstr ""
#: editor/project_export.cpp
-msgid "Release"
-msgstr ""
-
-#: editor/project_export.cpp
msgid "Exporting All"
msgstr ""
@@ -15002,6 +15527,7 @@ msgid "Change AudioStreamPlayer3D Emission Angle"
msgstr ""
#: editor/spatial_editor_gizmos.cpp modules/gltf/gltf_node.cpp
+#: platform/osx/export/export.cpp
msgid "Camera"
msgstr ""
@@ -15277,7 +15803,8 @@ msgstr ""
msgid "Use Nvidia Rect Flicker Workaround"
msgstr ""
-#: main/main.cpp platform/uwp/os_uwp.cpp
+#: main/main.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp platform/uwp/os_uwp.cpp
#, fuzzy
msgid "Display"
msgstr "Paparkan Semua"
@@ -15336,19 +15863,6 @@ msgstr ""
msgid "Allowed"
msgstr ""
-#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp scene/2d/camera_2d.cpp
-#: scene/2d/light_2d.cpp scene/2d/navigation_polygon.cpp
-#: scene/2d/ray_cast_2d.cpp scene/2d/sprite.cpp scene/2d/y_sort.cpp
-#: scene/3d/audio_stream_player_3d.cpp scene/3d/baked_lightmap.cpp
-#: scene/3d/interpolated_camera.cpp scene/3d/light.cpp
-#: scene/3d/navigation_mesh_instance.cpp scene/3d/ray_cast.cpp
-#: scene/3d/sprite_3d.cpp scene/gui/graph_edit.cpp
-#: scene/gui/rich_text_label.cpp scene/resources/curve.cpp
-#: scene/resources/environment.cpp
-#, fuzzy
-msgid "Enabled"
-msgstr "Aktifkan"
-
#: main/main.cpp
msgid "Intended Usage"
msgstr ""
@@ -15379,13 +15893,14 @@ msgstr ""
msgid "Handheld"
msgstr ""
-#: main/main.cpp
+#: main/main.cpp platform/javascript/export/export.cpp
+#: platform/uwp/export/export.cpp
#, fuzzy
msgid "Orientation"
msgstr "Dokumentasi Dalam Talian"
#: main/main.cpp scene/gui/scroll_container.cpp scene/gui/text_edit.cpp
-#: scene/main/scene_tree.cpp
+#: scene/main/scene_tree.cpp scene/register_scene_types.cpp
#, fuzzy
msgid "Common"
msgstr "Komuniti"
@@ -15427,7 +15942,7 @@ msgstr ""
#: main/main.cpp
#, fuzzy
-msgid "Frame Delay (msec)"
+msgid "Frame Delay Msec"
msgstr "Pemilihan Bingkai"
#: main/main.cpp
@@ -15552,11 +16067,6 @@ msgstr ""
msgid "Tooltip Position Offset"
msgstr "Offset Putaran:"
-#: main/main.cpp modules/mono/editor/csharp_project.cpp
-#: modules/mono/mono_gd/gd_mono.cpp
-msgid "Mono"
-msgstr ""
-
#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp
msgid "Debugger Agent"
msgstr ""
@@ -16120,7 +16630,7 @@ msgstr "Warna"
msgid "Intensity"
msgstr ""
-#: modules/gltf/gltf_light.cpp scene/2d/light_2d.cpp
+#: modules/gltf/gltf_light.cpp scene/2d/light_2d.cpp scene/3d/light.cpp
#, fuzzy
msgid "Range"
msgstr "Ubah"
@@ -16262,11 +16772,6 @@ msgstr ""
msgid "Use Named Skin Binds"
msgstr ""
-#: modules/gltf/gltf_state.cpp scene/3d/physics_joint.cpp
-#, fuzzy
-msgid "Nodes"
-msgstr "Nod"
-
#: modules/gltf/gltf_state.cpp
msgid "Buffer Views"
msgstr ""
@@ -16276,15 +16781,6 @@ msgid "Accessors"
msgstr ""
#: modules/gltf/gltf_state.cpp
-msgid "Meshes"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp
-#, fuzzy
-msgid "Materials"
-msgstr "Perubahan Bahan:"
-
-#: modules/gltf/gltf_state.cpp
#, fuzzy
msgid "Scene Name"
msgstr "Laluan Adegan:"
@@ -16300,15 +16796,11 @@ msgstr "Nod OneShot"
msgid "Textures"
msgstr ""
-#: modules/gltf/gltf_state.cpp
+#: modules/gltf/gltf_state.cpp platform/uwp/export/export.cpp
msgid "Images"
msgstr ""
#: modules/gltf/gltf_state.cpp
-msgid "Skins"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp
msgid "Cameras"
msgstr ""
@@ -16343,11 +16835,15 @@ msgid "Src Image"
msgstr "Tunjukkan Tulang-tulang"
#: modules/gridmap/grid_map.cpp
+msgid "Mesh Library"
+msgstr ""
+
+#: modules/gridmap/grid_map.cpp
#, fuzzy
msgid "Physics Material"
msgstr "Bingkai Fizik %"
-#: modules/gridmap/grid_map.cpp
+#: modules/gridmap/grid_map.cpp scene/3d/visual_instance.cpp
#, fuzzy
msgid "Use In Baked Light"
msgstr "Bake Lightmap"
@@ -16379,6 +16875,7 @@ msgstr "Tengah"
#: modules/gridmap/grid_map.cpp scene/2d/collision_object_2d.cpp
#: scene/2d/tile_map.cpp scene/3d/collision_object.cpp scene/3d/soft_body.cpp
+#: scene/resources/material.cpp
msgid "Mask"
msgstr ""
@@ -16565,7 +17062,9 @@ msgid "Ultra Quality Ray Count"
msgstr ""
#: modules/minimp3/audio_stream_mp3.cpp
+#: modules/minimp3/resource_importer_mp3.cpp
#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp
+#: modules/stb_vorbis/resource_importer_ogg_vorbis.cpp
#, fuzzy
msgid "Loop Offset"
msgstr "Grid Offset:"
@@ -17653,6 +18152,188 @@ msgid "The package must have at least one '.' separator."
msgstr ""
#: platform/android/export/export_plugin.cpp
+msgid "Use Custom Build"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Export Format"
+msgstr "Warna seragam."
+
+#: platform/android/export/export_plugin.cpp
+msgid "Keystore"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Debug User"
+msgstr "Nyahpepijat"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+msgid "Debug Password"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Release User"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Release Password"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "One Click Deploy"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Clear Previous Install"
+msgstr "Tab sebelumnya"
+
+#: platform/android/export/export_plugin.cpp scene/resources/shader.cpp
+msgid "Code"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Min SDK"
+msgstr "Saiz:"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Target SDK"
+msgstr "Cipta Nod"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Package"
+msgstr "Pembungkusan"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Unique Name"
+msgstr "Nama Nod:"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Signed"
+msgstr "Isyarat"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Classify As Game"
+msgstr "Kelas"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Retain Data On Uninstall"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Exclude From Recents"
+msgstr "Semua Pilihan"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Graphics"
+msgstr "Grid Offset:"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "OpenGL Debug"
+msgstr "Buka"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "XR Features"
+msgstr "Ciri-ciri Utama:"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "XR Mode"
+msgstr "Mod Pan"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Hand Tracking"
+msgstr "Pembungkusan"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Hand Tracking Frequency"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Passthrough"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Immersive Mode"
+msgstr "Mod Putar"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Support Small"
+msgstr "Sokongan"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Support Normal"
+msgstr "Sokongan"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Support Large"
+msgstr "Sokongan"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Support Xlarge"
+msgstr "Sokongan"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "User Data Backup"
+msgstr "Buka Folder Data Pengguna"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Allow"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Command Line"
+msgstr "Komuniti"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Extra Args"
+msgstr "Hujah Panggilan Tambahan:"
+
+#: platform/android/export/export_plugin.cpp
+msgid "APK Expansion"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Salt"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Public Key"
+msgstr "Menduakan Kunci"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Permissions"
+msgstr "Topeng Emission"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Custom Permissions"
+msgstr "Mainkan Adegan Tersuai"
+
+#: platform/android/export/export_plugin.cpp
msgid "Select device from the list"
msgstr ""
@@ -17944,6 +18625,176 @@ msgid "The character '%s' is not allowed in Identifier."
msgstr ""
#: platform/iphone/export/export.cpp
+msgid "App Store Team ID"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Provisioning Profile UUID Debug"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Code Sign Identity Debug"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Export Method Debug"
+msgstr "Eksport Perpustakaan Mesh"
+
+#: platform/iphone/export/export.cpp
+msgid "Provisioning Profile UUID Release"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Code Sign Identity Release"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Export Method Release"
+msgstr "Eksport Perpustakaan Mesh"
+
+#: platform/iphone/export/export.cpp
+msgid "Targeted Device Family"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Info"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Identifier"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Signature"
+msgstr "Isyarat"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Short Version"
+msgstr "Versi"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Copyright"
+msgstr "Atas Kanan"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Capabilities"
+msgstr "Tampal Sifat-sifat"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Access Wi-Fi"
+msgstr "Berjaya!"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Push Notifications"
+msgstr "Tampal Animasi"
+
+#: platform/iphone/export/export.cpp scene/3d/baked_lightmap.cpp
+#, fuzzy
+msgid "User Data"
+msgstr "Buka Folder Data Pengguna"
+
+#: platform/iphone/export/export.cpp
+msgid "Accessible From Files App"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Accessible From Itunes Sharing"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Privacy"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Camera Usage Description"
+msgstr "Keterangan"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Microphone Usage Description"
+msgstr "Penerangan Sifat"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Photolibrary Usage Description"
+msgstr "Penerangan Sifat"
+
+#: platform/iphone/export/export.cpp
+msgid "iPhone 120 X 120"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPhone 180 X 180"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 76 X 76"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 152 X 152"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 167 X 167"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "App Store 1024 X 1024"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Spotlight 40 X 40"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Spotlight 80 X 80"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Storyboard"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Use Launch Screen Storyboard"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Image Scale Mode"
+msgstr "Mod Skala"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Custom Image @2x"
+msgstr "Potong Nod"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Custom Image @3x"
+msgstr "Potong Nod"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Use Custom BG Color"
+msgstr "Potong Nod"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Custom BG Color"
+msgstr "Potong Nod"
+
+#: platform/iphone/export/export.cpp
msgid "App Store Team ID not specified - cannot configure the project."
msgstr ""
@@ -17980,6 +18831,79 @@ msgid "Could not read file:"
msgstr "Tidak dapat membaca fail:"
#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Variant"
+msgstr "Versi:"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Export Type"
+msgstr "Eksport"
+
+#: platform/javascript/export/export.cpp
+msgid "VRAM Texture Compression"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "For Desktop"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "For Mobile"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Html"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Export Icon"
+msgstr "Kembangkan Semua"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Custom Html Shell"
+msgstr "Potong Nod"
+
+#: platform/javascript/export/export.cpp
+msgid "Head Include"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Canvas Resize Policy"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Focus Canvas On Start"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Experimental Virtual Keyboard"
+msgstr "Tapis isyarat"
+
+#: platform/javascript/export/export.cpp
+msgid "Progressive Web App"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Offline Page"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 144 X 144"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 180 X 180"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 512 X 512"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
msgid "Could not read HTML shell:"
msgstr "Tidak dapat membaca shell HTML:"
@@ -18091,6 +19015,195 @@ msgid "Unknown object type."
msgstr ""
#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "App Category"
+msgstr "Kategori:"
+
+#: platform/osx/export/export.cpp
+msgid "High Res"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Location Usage Description"
+msgstr "Keterangan"
+
+#: platform/osx/export/export.cpp
+msgid "Address Book Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Calendar Usage Description"
+msgstr "Keterangan"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Photos Library Usage Description"
+msgstr "Penerangan Sifat"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Desktop Folder Usage Description"
+msgstr "Penerangan Kaedah"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Documents Folder Usage Description"
+msgstr "Penerangan Kaedah"
+
+#: platform/osx/export/export.cpp
+msgid "Downloads Folder Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Network Volumes Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Removable Volumes Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#, fuzzy
+msgid "Codesign"
+msgstr "Nod"
+
+#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
+#: platform/windows/export/export.cpp
+msgid "Identity"
+msgstr ""
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#, fuzzy
+msgid "Timestamp"
+msgstr "Masa"
+
+#: platform/osx/export/export.cpp
+msgid "Hardened Runtime"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Replace Existing Signature"
+msgstr "Gantikan dalam Fail-fail"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Entitlements"
+msgstr "Kandungan:"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Custom File"
+msgstr "Potong Nod"
+
+#: platform/osx/export/export.cpp
+msgid "Allow JIT Code Execution"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Allow Unsigned Executable Memory"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Allow Dyld Environment Variables"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Disable Library Validation"
+msgstr "Tidak Aktif"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Audio Input"
+msgstr "Tambah Input"
+
+#: platform/osx/export/export.cpp
+msgid "Address Book"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Calendars"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Photos Library"
+msgstr "Eksport Perpustakaan"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Apple Events"
+msgstr "Guna Set Semula"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Debugging"
+msgstr "Nyahpepijat"
+
+#: platform/osx/export/export.cpp
+msgid "App Sandbox"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Network Server"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Network Client"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Device Usb"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Device Bluetooth"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Files Downloads"
+msgstr "Muat turun"
+
+#: platform/osx/export/export.cpp
+msgid "Files Pictures"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Files Music"
+msgstr "Fail:"
+
+#: platform/osx/export/export.cpp
+msgid "Files Movies"
+msgstr ""
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#, fuzzy
+msgid "Custom Options"
+msgstr "Pilihan Bas"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Notarization"
+msgstr "Langkah Putaran:"
+
+#: platform/osx/export/export.cpp
+msgid "Apple ID Name"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Apple ID Password"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Apple Team ID"
+msgstr ""
+
+#: platform/osx/export/export.cpp
msgid ""
"Note: The notarization process generally takes less than an hour. When the "
"process is completed, you'll receive an email."
@@ -18282,6 +19395,132 @@ msgid "Force Builtin Codesign"
msgstr ""
#: platform/uwp/export/export.cpp
+msgid "Architecture"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Display Name"
+msgstr "Paparkan Semua"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Short Name"
+msgstr "Nama Skrip:"
+
+#: platform/uwp/export/export.cpp
+msgid "Publisher"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Publisher Display Name"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Product Guid"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Publisher Guid"
+msgstr "Kosongkan Panduan"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Signing"
+msgstr "Isyarat"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Certificate"
+msgstr "Bucu:"
+
+#: platform/uwp/export/export.cpp
+msgid "Algorithm"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Major"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Minor"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Build"
+msgstr "Mod Pembaris"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Revision"
+msgstr "Versi"
+
+#: platform/uwp/export/export.cpp
+msgid "Landscape"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Portrait"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Landscape Flipped"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Portrait Flipped"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Store Logo"
+msgstr "Mod Skala"
+
+#: platform/uwp/export/export.cpp
+msgid "Square 44 X 44 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 71 X 71 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 150 X 150 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 310 X 310 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Wide 310 X 150 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Splash Screen"
+msgstr "Cabutan Panggilan:"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Tiles"
+msgstr "Fail:"
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Square 150 X 150"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Wide 310 X 150"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Square 310 X 310"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
msgid "Invalid package short name."
msgstr ""
@@ -18347,11 +19586,48 @@ msgid "Debug Certificate"
msgstr ""
#: platform/uwp/export/export.cpp
-msgid "Debug Password"
+msgid "Debug Algorithm"
msgstr ""
-#: platform/uwp/export/export.cpp
-msgid "Debug Algorithm"
+#: platform/windows/export/export.cpp
+msgid "Identity Type"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Timestamp Server URL"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Digest Algorithm"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "File Version"
+msgstr "Versi"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Product Version"
+msgstr "Nama kumpulan tidak sah."
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Company Name"
+msgstr "Nama Nod:"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Product Name"
+msgstr "Terkumpul"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "File Description"
+msgstr "Keterangan"
+
+#: platform/windows/export/export.cpp
+msgid "Trademarks"
msgstr ""
#: platform/windows/export/export.cpp
@@ -18426,12 +19702,14 @@ msgstr "Main"
msgid "Centered"
msgstr "Tengah"
-#: scene/2d/animated_sprite.cpp scene/2d/camera_2d.cpp scene/2d/light_2d.cpp
+#: scene/2d/animated_sprite.cpp scene/2d/camera_2d.cpp
+#: scene/2d/cpu_particles_2d.cpp scene/2d/light_2d.cpp
#: scene/2d/parallax_background.cpp scene/2d/parallax_layer.cpp
#: scene/2d/path_2d.cpp scene/2d/polygon_2d.cpp scene/2d/sprite.cpp
-#: scene/3d/path.cpp scene/3d/physics_body.cpp scene/3d/sprite_3d.cpp
-#: scene/gui/graph_node.cpp scene/gui/rich_text_effect.cpp
-#: scene/main/canvas_layer.cpp scene/resources/material.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/path.cpp scene/3d/physics_body.cpp
+#: scene/3d/sprite_3d.cpp scene/gui/graph_node.cpp
+#: scene/gui/rich_text_effect.cpp scene/main/canvas_layer.cpp
+#: scene/resources/material.cpp scene/resources/particles_material.cpp
#: scene/resources/style_box.cpp
#, fuzzy
msgid "Offset"
@@ -18504,11 +19782,6 @@ msgstr "Tambah Bas Audio"
msgid "Override"
msgstr "Tulis Ganti"
-#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
-#: scene/audio/audio_stream_player.cpp scene/gui/video_player.cpp
-msgid "Stream"
-msgstr ""
-
#: scene/2d/audio_stream_player_2d.cpp scene/audio/audio_stream_player.cpp
#: scene/gui/video_player.cpp servers/audio/effects/audio_effect_amplify.cpp
msgid "Volume dB"
@@ -18533,13 +19806,13 @@ msgid "Stream Paused"
msgstr ""
#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
-#: scene/3d/reflection_probe.cpp scene/3d/visual_instance.cpp
-#: scene/resources/material.cpp
+#: scene/3d/light.cpp scene/3d/reflection_probe.cpp
+#: scene/3d/visual_instance.cpp scene/resources/material.cpp
#, fuzzy
msgid "Max Distance"
msgstr "Contoh"
-#: scene/2d/audio_stream_player_2d.cpp
+#: scene/2d/audio_stream_player_2d.cpp scene/3d/light.cpp
#, fuzzy
msgid "Attenuation"
msgstr "Animasi"
@@ -18595,6 +19868,24 @@ msgstr "Mod Alih"
msgid "Limit"
msgstr ""
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/style_box.cpp
+#, fuzzy
+msgid "Left"
+msgstr "Atas Kiri"
+
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/style_box.cpp
+#, fuzzy
+msgid "Right"
+msgstr "Atas Kanan"
+
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/dynamic_font.cpp scene/resources/style_box.cpp
+#, fuzzy
+msgid "Bottom"
+msgstr "Bawah Kiri"
+
#: scene/2d/camera_2d.cpp
#, fuzzy
msgid "Smoothed"
@@ -18802,13 +20093,6 @@ msgstr ""
msgid "Emitting"
msgstr "Menguji"
-#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp scene/3d/area.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
-#: scene/resources/environment.cpp
-#, fuzzy
-msgid "Amount"
-msgstr "Jumlah:"
-
#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp
#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
msgid "Lifetime"
@@ -18871,18 +20155,13 @@ msgstr ""
#: scene/2d/mesh_instance_2d.cpp scene/2d/multimesh_instance_2d.cpp
#: scene/2d/particles_2d.cpp scene/2d/polygon_2d.cpp scene/2d/sprite.cpp
#: scene/3d/sprite_3d.cpp scene/gui/nine_patch_rect.cpp
-#: scene/gui/texture_rect.cpp scene/resources/sky.cpp
-#: scene/resources/style_box.cpp scene/resources/visual_shader_nodes.cpp
+#: scene/gui/texture_rect.cpp scene/resources/material.cpp
+#: scene/resources/sky.cpp scene/resources/style_box.cpp
+#: scene/resources/visual_shader_nodes.cpp
#, fuzzy
msgid "Texture"
msgstr "Masa depan"
-#: scene/2d/cpu_particles_2d.cpp scene/2d/mesh_instance_2d.cpp
-#: scene/2d/multimesh_instance_2d.cpp scene/2d/particles_2d.cpp
-#: scene/2d/sprite.cpp scene/resources/style_box.cpp
-msgid "Normal Map"
-msgstr ""
-
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
#, fuzzy
@@ -18904,10 +20183,10 @@ msgid "Normals"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/3d/sprite_3d.cpp scene/resources/material.cpp
-#: scene/resources/particles_material.cpp scene/resources/texture.cpp
-msgid "Flags"
-msgstr ""
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Align Y"
+msgstr "Menguntukkan..."
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
@@ -18927,6 +20206,11 @@ msgid "Initial Velocity"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Velocity Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp servers/physics_2d_server.cpp
#: servers/physics_server.cpp
msgid "Angular Velocity"
@@ -18934,6 +20218,12 @@ msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Velocity Curve"
+msgstr "Pilih Semasa"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
msgid "Orbit Velocity"
msgstr ""
@@ -18945,6 +20235,23 @@ msgstr "Linear"
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Accel"
+msgstr "Berjaya!"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Accel Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Accel Curve"
+msgstr "Kedalaman"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
msgid "Radial Accel"
msgstr ""
@@ -18954,19 +20261,55 @@ msgid "Tangential Accel"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/2d/joints_2d.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/vehicle_body.cpp
-#: scene/resources/particles_material.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/physics_joint.cpp
+#: scene/3d/vehicle_body.cpp scene/resources/particles_material.cpp
#: servers/audio/effects/audio_effect_reverb.cpp
msgid "Damping"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+msgid "Damping Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Damping Curve"
+msgstr "Kedalaman"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp scene/3d/light.cpp
+#: scene/resources/particles_material.cpp
msgid "Angle"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+msgid "Angle Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Angle Curve"
+msgstr "Kedalaman"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#, fuzzy
+msgid "Scale Amount"
+msgstr "Jumlah:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+msgid "Scale Amount Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#, fuzzy
+msgid "Scale Amount Curve"
+msgstr "Skala Dari Kursor"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
#, fuzzy
msgid "Color Ramp"
msgstr "Warna"
@@ -18982,6 +20325,47 @@ msgstr ""
msgid "Hue Variation"
msgstr "Versi:"
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Variation"
+msgstr "Versi:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Variation Random"
+msgstr "Versi:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Variation Curve"
+msgstr "Versi:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Speed Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Speed Curve"
+msgstr "Pilih Semasa"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Offset Random"
+msgstr "Grid Offset:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Offset Curve"
+msgstr "Kedalaman"
+
#: scene/2d/joints_2d.cpp
msgid "Node A and Node B must be PhysicsBody2Ds"
msgstr "Nod A dan Nod B mestilah PhysicsBody2Ds"
@@ -19013,6 +20397,7 @@ msgid "Node B"
msgstr "Nod"
#: scene/2d/joints_2d.cpp scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp
+#: scene/3d/light.cpp scene/3d/physics_joint.cpp
#: scene/resources/environment.cpp
msgid "Bias"
msgstr ""
@@ -19022,7 +20407,7 @@ msgstr ""
msgid "Disable Collision"
msgstr "Tidak Aktif"
-#: scene/2d/joints_2d.cpp
+#: scene/2d/joints_2d.cpp scene/3d/physics_joint.cpp
msgid "Softness"
msgstr ""
@@ -19040,7 +20425,7 @@ msgstr "Grid Offset:"
msgid "Rest Length"
msgstr ""
-#: scene/2d/joints_2d.cpp scene/3d/vehicle_body.cpp
+#: scene/2d/joints_2d.cpp scene/3d/physics_joint.cpp scene/3d/vehicle_body.cpp
msgid "Stiffness"
msgstr ""
@@ -19060,7 +20445,7 @@ msgid "Texture Scale"
msgstr ""
#: scene/2d/light_2d.cpp scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp
-#: scene/resources/environment.cpp scene/resources/sky.cpp
+#: scene/3d/light.cpp scene/resources/environment.cpp scene/resources/sky.cpp
msgid "Energy"
msgstr ""
@@ -19100,12 +20485,6 @@ msgstr "Piksel Sempadan"
msgid "Gradient Length"
msgstr "Kecerunan Disunting"
-#: scene/2d/light_2d.cpp scene/gui/control.cpp
-#: scene/resources/navigation_mesh.cpp
-#, fuzzy
-msgid "Filter"
-msgstr "Penapis:"
-
#: scene/2d/light_2d.cpp
#, fuzzy
msgid "Filter Smooth"
@@ -19511,10 +20890,6 @@ msgid "Applied Forces"
msgstr ""
#: scene/2d/physics_body_2d.cpp
-msgid "Force"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp
msgid "Torque"
msgstr ""
@@ -19528,7 +20903,7 @@ msgid "Sync To Physics"
msgstr "Bingkai Fizik %"
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-msgid "Moving platform"
+msgid "Moving Platform"
msgstr ""
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
@@ -19537,7 +20912,7 @@ msgstr ""
#: scene/2d/physics_body_2d.cpp scene/2d/touch_screen_button.cpp
#: scene/3d/physics_body.cpp scene/gui/texture_button.cpp
-#: scene/resources/line_shape_2d.cpp
+#: scene/resources/line_shape_2d.cpp scene/resources/material.cpp
msgid "Normal"
msgstr ""
@@ -19763,6 +21138,34 @@ msgid ""
"as parent."
msgstr ""
+#: scene/2d/visibility_notifier_2d.cpp scene/3d/visibility_notifier.cpp
+#, fuzzy
+msgid "Pause Animations"
+msgstr "Tampal Animasi"
+
+#: scene/2d/visibility_notifier_2d.cpp scene/3d/visibility_notifier.cpp
+msgid "Freeze Bodies"
+msgstr ""
+
+#: scene/2d/visibility_notifier_2d.cpp
+#, fuzzy
+msgid "Pause Particles"
+msgstr "Zarah"
+
+#: scene/2d/visibility_notifier_2d.cpp
+#, fuzzy
+msgid "Pause Animated Sprites"
+msgstr "Tampal Animasi"
+
+#: scene/2d/visibility_notifier_2d.cpp
+#, fuzzy
+msgid "Process Parent"
+msgstr "Mod Alih"
+
+#: scene/2d/visibility_notifier_2d.cpp
+msgid "Physics Process Parent"
+msgstr ""
+
#: scene/3d/area.cpp
msgid "Reverb Bus"
msgstr ""
@@ -19857,6 +21260,7 @@ msgid "Attenuation Filter"
msgstr ""
#: scene/3d/audio_stream_player_3d.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
#: servers/audio/effects/audio_effect_filter.cpp
msgid "Cutoff Hz"
msgstr ""
@@ -19899,11 +21303,6 @@ msgid "Octree"
msgstr ""
#: scene/3d/baked_lightmap.cpp
-#, fuzzy
-msgid "User Data"
-msgstr "Buka Folder Data Pengguna"
-
-#: scene/3d/baked_lightmap.cpp
msgid "Finding meshes and lights"
msgstr ""
@@ -20156,6 +21555,16 @@ msgid "Ring Axis"
msgstr "Amaran"
#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Rotate Y"
+msgstr "Mod Putar"
+
+#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Disable Z"
+msgstr "Tidak Aktif"
+
+#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
msgid "Flatness"
msgstr ""
@@ -20192,16 +21601,11 @@ msgstr ""
msgid "Dynamic Range"
msgstr ""
-#: scene/3d/gi_probe.cpp
+#: scene/3d/gi_probe.cpp scene/3d/light.cpp
msgid "Normal Bias"
msgstr ""
#: scene/3d/gi_probe.cpp
-#, fuzzy
-msgid "Compress"
-msgstr "Komponen"
-
-#: scene/3d/gi_probe.cpp
msgid "Plotting Meshes"
msgstr ""
@@ -20227,16 +21631,31 @@ msgid "Subdiv"
msgstr ""
#: scene/3d/light.cpp
+#, fuzzy
+msgid "Indirect Energy"
+msgstr "Warna Emission"
+
+#: scene/3d/light.cpp
msgid "Negative"
msgstr ""
#: scene/3d/light.cpp
#, fuzzy
+msgid "Specular"
+msgstr "Mod Pembaris"
+
+#: scene/3d/light.cpp
+#, fuzzy
msgid "Bake Mode"
msgstr "Mod Putar"
#: scene/3d/light.cpp
#, fuzzy
+msgid "Contact"
+msgstr "Kandungan:"
+
+#: scene/3d/light.cpp
+#, fuzzy
msgid "Reverse Cull Face"
msgstr "Tetapkan Semula Kelantangan Bas"
@@ -20247,11 +21666,31 @@ msgstr "Arah"
#: scene/3d/light.cpp
#, fuzzy
+msgid "Split 1"
+msgstr "Grid Offset:"
+
+#: scene/3d/light.cpp
+#, fuzzy
+msgid "Split 2"
+msgstr "Grid Offset:"
+
+#: scene/3d/light.cpp
+#, fuzzy
+msgid "Split 3"
+msgstr "Grid Offset:"
+
+#: scene/3d/light.cpp
+#, fuzzy
msgid "Blend Splits"
msgstr "Masa Adunan:"
#: scene/3d/light.cpp
#, fuzzy
+msgid "Bias Split Scale"
+msgstr "Gunakan Skala Snap"
+
+#: scene/3d/light.cpp
+#, fuzzy
msgid "Depth Range"
msgstr "Kedalaman"
@@ -20277,6 +21716,11 @@ msgstr ""
msgid "Spot"
msgstr ""
+#: scene/3d/light.cpp
+#, fuzzy
+msgid "Angle Attenuation"
+msgstr "Animasi"
+
#: scene/3d/mesh_instance.cpp
msgid "Software Skinning"
msgstr ""
@@ -20400,6 +21844,63 @@ msgstr ""
#: scene/3d/physics_body.cpp
#, fuzzy
+msgid "Linear X"
+msgstr "Linear"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Linear Y"
+msgstr "Linear"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Linear Z"
+msgstr "Linear"
+
+#: scene/3d/physics_body.cpp
+msgid "Angular X"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Angular Y"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Angular Z"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Motion X"
+msgstr "Aksi"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Motion Y"
+msgstr "Aksi"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Motion Z"
+msgstr "Aksi"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Move Lock X"
+msgstr "Pindahkan Nod"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Move Lock Y"
+msgstr "Pindahkan Nod"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Move Lock Z"
+msgstr "Pindahkan Nod"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
msgid "Body Offset"
msgstr "Grid Offset:"
@@ -20433,6 +21934,15 @@ msgid "Exclude Nodes"
msgstr "Semua Pilihan"
#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Params"
+msgstr "Parameter Berubah:"
+
+#: scene/3d/physics_joint.cpp
+msgid "Impulse Clamp"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit"
msgstr ""
@@ -20444,6 +21954,55 @@ msgstr ""
msgid "Lower"
msgstr ""
+#: scene/3d/physics_joint.cpp scene/3d/vehicle_body.cpp
+#, fuzzy
+msgid "Relaxation"
+msgstr "Versi:"
+
+#: scene/3d/physics_joint.cpp
+msgid "Motor"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Target Velocity"
+msgstr "Linear"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Max Impulse"
+msgstr "Nilai:"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit"
+msgstr "Linear"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Upper Distance"
+msgstr "Contoh"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Lower Distance"
+msgstr "Contoh"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Restitution"
+msgstr "Keterangan"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motion"
+msgstr "Linear"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Ortho"
+msgstr "Linear"
+
#: scene/3d/physics_joint.cpp
msgid "Upper Angle"
msgstr ""
@@ -20454,6 +22013,16 @@ msgstr ""
#: scene/3d/physics_joint.cpp
#, fuzzy
+msgid "Angular Motion"
+msgstr "Animasi"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Angular Ortho"
+msgstr "Max. Ralat Sudut:"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
msgid "Swing Span"
msgstr "Menyimpan Adegan"
@@ -20462,17 +22031,99 @@ msgid "Twist Span"
msgstr ""
#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit X"
+msgstr "Linear"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motor X"
+msgstr "Linear"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Force Limit"
+msgstr "Cabutan Panggilan:"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Spring X"
+msgstr "Linear"
+
+#: scene/3d/physics_joint.cpp
+msgid "Equilibrium Point"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit X"
msgstr ""
#: scene/3d/physics_joint.cpp
+msgid "Erp"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Motor X"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Spring X"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit Y"
+msgstr "Linear"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motor Y"
+msgstr "Linear"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Spring Y"
+msgstr "Linear"
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit Y"
msgstr ""
#: scene/3d/physics_joint.cpp
+msgid "Angular Motor Y"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Spring Y"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit Z"
+msgstr "Linear"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motor Z"
+msgstr "Linear"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Spring Z"
+msgstr "Linear"
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit Z"
msgstr ""
+#: scene/3d/physics_joint.cpp
+msgid "Angular Motor Z"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Spring Z"
+msgstr ""
+
#: scene/3d/portal.cpp
msgid "The RoomManager should not be a child or grandchild of a Portal."
msgstr ""
@@ -20589,7 +22240,7 @@ msgstr ""
msgid "Use Default Simplify"
msgstr ""
-#: scene/3d/room.cpp
+#: scene/3d/room.cpp scene/3d/room_manager.cpp
msgid "Room Simplify"
msgstr ""
@@ -20627,6 +22278,13 @@ msgstr ""
msgid "Main"
msgstr ""
+#: scene/3d/room_manager.cpp scene/animation/animation_player.cpp
+#: scene/animation/animation_tree.cpp scene/animation/animation_tree_player.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+#, fuzzy
+msgid "Active"
+msgstr "Aksi"
+
#: scene/3d/room_manager.cpp
msgid "Roomlist"
msgstr ""
@@ -20650,6 +22308,52 @@ msgid "Gameplay"
msgstr ""
#: scene/3d/room_manager.cpp
+msgid "Gameplay Monitor"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Use Secondary PVS"
+msgstr "Gunakan Skala Snap"
+
+#: scene/3d/room_manager.cpp
+msgid "Merge Meshes"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Show Margins"
+msgstr "Tunjukkan Asal"
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Debug Sprawl"
+msgstr "Nyahpepijat"
+
+#: scene/3d/room_manager.cpp
+msgid "Overlap Warning Threshold"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Preview Camera"
+msgstr "Pratonton"
+
+#: scene/3d/room_manager.cpp
+msgid "Portal Depth Limit"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Default Portal Margin"
+msgstr "Lalai"
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Roaming Expansion Margin"
+msgstr "Kembangkan Semua"
+
+#: scene/3d/room_manager.cpp
msgid ""
"RoomList path is invalid.\n"
"Please check the RoomList branch has been assigned in the RoomManager."
@@ -20771,6 +22475,20 @@ msgstr ""
msgid "Billboard"
msgstr ""
+#: scene/3d/sprite_3d.cpp scene/resources/material.cpp
+#, fuzzy
+msgid "Transparent"
+msgstr "Peralihan: "
+
+#: scene/3d/sprite_3d.cpp
+#, fuzzy
+msgid "Shaded"
+msgstr "Perubahan Shader:"
+
+#: scene/3d/sprite_3d.cpp
+msgid "Double Sided"
+msgstr ""
+
#: scene/3d/sprite_3d.cpp
msgid "Alpha Cut"
msgstr ""
@@ -20839,11 +22557,6 @@ msgstr ""
msgid "Max Force"
msgstr "%s Ralat"
-#: scene/3d/vehicle_body.cpp
-#, fuzzy
-msgid "Relaxation"
-msgstr "Versi:"
-
#: scene/3d/visibility_notifier.cpp
msgid "AABB"
msgstr ""
@@ -20977,7 +22690,7 @@ msgstr "Masa X-Fade (s):"
#: scene/animation/animation_blend_tree.cpp
#, fuzzy
-msgid "autorestart_"
+msgid "Auto Restart"
msgstr "Mula Semula Auto:"
#: scene/animation/animation_blend_tree.cpp
@@ -21063,13 +22776,6 @@ msgstr "Pilihan Kelas:"
msgid "Default Blend Time"
msgstr "Lalai"
-#: scene/animation/animation_player.cpp scene/animation/animation_tree.cpp
-#: scene/animation/animation_tree_player.cpp
-#: servers/audio/effects/audio_effect_delay.cpp
-#, fuzzy
-msgid "Active"
-msgstr "Aksi"
-
#: scene/animation/animation_player.cpp
msgid "Method Call Mode"
msgstr ""
@@ -21190,10 +22896,6 @@ msgstr "Cipta Nod"
msgid "Max Iterations"
msgstr "Buat Fungsi"
-#: scene/animation/tween.cpp scene/resources/texture.cpp
-msgid "Repeat"
-msgstr ""
-
#: scene/animation/tween.cpp
msgid "Playback Process Mode"
msgstr ""
@@ -21223,20 +22925,6 @@ msgstr "Pilih Mod"
msgid "Alignment"
msgstr ""
-#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
-#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
-#: scene/resources/style_box.cpp
-#, fuzzy
-msgid "Horizontal"
-msgstr "Alihkan Panduan Mendatar"
-
-#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
-#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
-#: scene/resources/style_box.cpp
-#, fuzzy
-msgid "Vertical"
-msgstr "Alih Panduan Menegak"
-
#: scene/gui/base_button.cpp
#, fuzzy
msgid "Shortcut In Tooltip"
@@ -21333,10 +23021,6 @@ msgid "HSV"
msgstr ""
#: scene/gui/color_picker.cpp
-msgid "Raw"
-msgstr ""
-
-#: scene/gui/color_picker.cpp
msgid "Switch between hexadecimal and code values."
msgstr ""
@@ -21397,6 +23081,31 @@ msgid "Focus"
msgstr "Laluan Fokus"
#: scene/gui/control.cpp
+msgid "Neighbour Left"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Neighbour Top"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Neighbour Right"
+msgstr ""
+
+#: scene/gui/control.cpp
+#, fuzzy
+msgid "Neighbour Bottom"
+msgstr "Tengah Bawah"
+
+#: scene/gui/control.cpp
+msgid "Next"
+msgstr "Seterusnya"
+
+#: scene/gui/control.cpp
+msgid "Previous"
+msgstr "Sebelum"
+
+#: scene/gui/control.cpp
msgid "Mouse"
msgstr ""
@@ -21433,7 +23142,7 @@ msgid "Dialog"
msgstr ""
#: scene/gui/dialogs.cpp
-msgid "Hide On Ok"
+msgid "Hide On OK"
msgstr ""
#: scene/gui/dialogs.cpp scene/gui/label.cpp
@@ -21531,7 +23240,7 @@ msgid "Timers"
msgstr "Masa"
#: scene/gui/item_list.cpp scene/gui/popup_menu.cpp scene/gui/tree.cpp
-msgid "Incremental Search Max Interval (msec)"
+msgid "Incremental Search Max Interval Msec"
msgstr ""
#: scene/gui/item_list.cpp scene/gui/tree.cpp
@@ -22092,6 +23801,26 @@ msgstr "Tengah Kiri"
msgid "Nine Patch Stretch"
msgstr "Mod Interpolasi"
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Left"
+msgstr "Pilih Mod"
+
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Top"
+msgstr "Pilih Mod"
+
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Right"
+msgstr "Pilih Mod"
+
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Bottom"
+msgstr "Pilih Mod"
+
#: scene/gui/tree.cpp
msgid "Custom Minimum Height"
msgstr ""
@@ -22127,8 +23856,9 @@ msgid "Paused"
msgstr ""
#: scene/gui/video_player.cpp
-msgid "Buffering (msec)"
-msgstr ""
+#, fuzzy
+msgid "Buffering Msec"
+msgstr "Piksel Sempadan"
#: scene/gui/video_player.cpp
#, fuzzy
@@ -22467,6 +24197,22 @@ msgid "Shadow Atlas"
msgstr ""
#: scene/main/viewport.cpp
+msgid "Quad 0"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 1"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 2"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 3"
+msgstr ""
+
+#: scene/main/viewport.cpp
#, fuzzy
msgid "Canvas Transform"
msgstr "Kosongkan Transformasi"
@@ -22481,6 +24227,11 @@ msgid "Tooltip Delay (sec)"
msgstr ""
#: scene/register_scene_types.cpp
+#, fuzzy
+msgid "Swap OK Cancel"
+msgstr "Batal"
+
+#: scene/register_scene_types.cpp
msgid "Use hiDPI"
msgstr ""
@@ -22495,21 +24246,6 @@ msgid "Custom Font"
msgstr "Potong Nod"
#: scene/resources/audio_stream_sample.cpp
-#, fuzzy
-msgid "Loop Mode"
-msgstr "Mod Alih"
-
-#: scene/resources/audio_stream_sample.cpp
-#, fuzzy
-msgid "Loop Begin"
-msgstr "Mod Alih"
-
-#: scene/resources/audio_stream_sample.cpp
-#, fuzzy
-msgid "Loop End"
-msgstr "Mod Alih"
-
-#: scene/resources/audio_stream_sample.cpp
#: servers/audio/effects/audio_stream_generator.cpp servers/audio_server.cpp
#, fuzzy
msgid "Mix Rate"
@@ -22567,6 +24303,17 @@ msgstr "Pilihan Tambahan:"
#: scene/resources/dynamic_font.cpp
#, fuzzy
+msgid "Char"
+msgstr "Watak yang sah:"
+
+#: scene/resources/dynamic_font.cpp scene/resources/world.cpp
+#: scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Space"
+msgstr "Cabutan Panggilan:"
+
+#: scene/resources/dynamic_font.cpp
+#, fuzzy
msgid "Font"
msgstr "Fon"
@@ -22790,6 +24537,43 @@ msgid "Glow"
msgstr ""
#: scene/resources/environment.cpp
+#, fuzzy
+msgid "Levels"
+msgstr "Pemaju"
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "1"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "2"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "3"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "4"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "5"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "6"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "7"
+msgstr ""
+
+#: scene/resources/environment.cpp
msgid "Bloom"
msgstr ""
@@ -22881,9 +24665,66 @@ msgid "Next Pass"
msgstr "Tab seterusnya"
#: scene/resources/material.cpp
+msgid "Use Shadow To Opacity"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Unshaded"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Vertex Lighting"
+msgstr "Menjana Peta Cahaya"
+
+#: scene/resources/material.cpp
+msgid "No Depth Test"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Use Point Size"
+msgstr "Saiz:"
+
+#: scene/resources/material.cpp
+msgid "World Triplanar"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Fixed Size"
+msgstr "Saiz:"
+
+#: scene/resources/material.cpp
+msgid "Albedo Tex Force sRGB"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Do Not Receive Shadows"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Disable Ambient Light"
+msgstr "Tengah Kanan"
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Ensure Correct Normals"
+msgstr "Trek Transformasi 3D"
+
+#: scene/resources/material.cpp
msgid "Vertex Color"
msgstr ""
+#: scene/resources/material.cpp
+msgid "Use As Albedo"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Is sRGB"
+msgstr ""
+
#: scene/resources/material.cpp servers/visual_server.cpp
#, fuzzy
msgid "Parameters"
@@ -22920,6 +24761,11 @@ msgid "Billboard Mode"
msgstr "Mod Pembaris"
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Billboard Keep Scale"
+msgstr "Mod Pembaris"
+
+#: scene/resources/material.cpp
msgid "Grow"
msgstr ""
@@ -22929,6 +24775,10 @@ msgid "Grow Amount"
msgstr "Jumlah:"
#: scene/resources/material.cpp
+msgid "Use Alpha Scissor"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Alpha Scissor Threshold"
msgstr ""
@@ -22960,10 +24810,20 @@ msgid "Metallic Specular"
msgstr ""
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Metallic Texture"
+msgstr "Warna Emission"
+
+#: scene/resources/material.cpp
msgid "Metallic Texture Channel"
msgstr ""
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Roughness Texture"
+msgstr "Cipta Titik Emission Daripada Mesh"
+
+#: scene/resources/material.cpp
msgid "Roughness Texture Channel"
msgstr ""
@@ -22983,6 +24843,16 @@ msgid "Emission Operator"
msgstr "Warna Emission"
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Emission On UV2"
+msgstr "Topeng Emission"
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Emission Texture"
+msgstr "Warna Emission"
+
+#: scene/resources/material.cpp
msgid "NormalMap"
msgstr ""
@@ -22996,6 +24866,11 @@ msgstr ""
#: scene/resources/material.cpp
#, fuzzy
+msgid "Rim Texture"
+msgstr "Masa depan"
+
+#: scene/resources/material.cpp
+#, fuzzy
msgid "Clearcoat"
msgstr "Kosongkan"
@@ -23005,14 +24880,27 @@ msgid "Clearcoat Gloss"
msgstr "Kosongkan Pose"
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Clearcoat Texture"
+msgstr "Editor"
+
+#: scene/resources/material.cpp
msgid "Anisotropy"
msgstr ""
#: scene/resources/material.cpp
+msgid "Anisotropy Flowmap"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Ambient Occlusion"
msgstr ""
#: scene/resources/material.cpp
+msgid "On UV2"
+msgstr ""
+
+#: scene/resources/material.cpp
#, fuzzy
msgid "Texture Channel"
msgstr "Mod Pembaris"
@@ -23050,6 +24938,11 @@ msgstr "Peralihan: "
#: scene/resources/material.cpp
#, fuzzy
+msgid "Transmission Texture"
+msgstr "Peralihan: "
+
+#: scene/resources/material.cpp
+#, fuzzy
msgid "Refraction"
msgstr "Versi:"
@@ -23067,6 +24960,10 @@ msgid "UV1"
msgstr ""
#: scene/resources/material.cpp
+msgid "Triplanar"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Triplanar Sharpness"
msgstr ""
@@ -23270,6 +25167,16 @@ msgstr "Editor"
msgid "Point Count"
msgstr "Tambah Port Input"
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Scale Random"
+msgstr "Nisbah Skala:"
+
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Scale Curve"
+msgstr "Mod Skala"
+
#: scene/resources/physics_material.cpp
msgid "Rough"
msgstr ""
@@ -23330,10 +25237,6 @@ msgid "A"
msgstr ""
#: scene/resources/shader.cpp
-msgid "Code"
-msgstr ""
-
-#: scene/resources/shader.cpp
#, fuzzy
msgid "Custom Defines"
msgstr "Mainkan Adegan Tersuai"
@@ -23426,15 +25329,6 @@ msgstr ""
#: scene/resources/texture.cpp
#, fuzzy
-msgid "Storage"
-msgstr "Menyimpan Fail:"
-
-#: scene/resources/texture.cpp
-msgid "Lossy Quality"
-msgstr ""
-
-#: scene/resources/texture.cpp
-#, fuzzy
msgid "Load Path"
msgstr "Muatkan Pratetap"
@@ -23560,11 +25454,6 @@ msgstr ""
msgid "Fallback Environment"
msgstr ""
-#: scene/resources/world.cpp scene/resources/world_2d.cpp
-#, fuzzy
-msgid "Space"
-msgstr "Cabutan Panggilan:"
-
#: scene/resources/world.cpp
#, fuzzy
msgid "Scenario"
@@ -23642,10 +25531,37 @@ msgstr ""
msgid "Wet"
msgstr ""
-#: servers/audio/effects/audio_effect_compressor.cpp
-msgid "Threshold"
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "Voice"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+msgid "Delay (ms)"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_phaser.cpp
+msgid "Rate Hz"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#, fuzzy
+msgid "Depth (ms)"
+msgstr "Kedalaman"
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+msgid "Level dB"
msgstr ""
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+#: servers/audio/effects/audio_effect_panner.cpp
+#, fuzzy
+msgid "Pan"
+msgstr "Pembungkusan"
+
#: servers/audio/effects/audio_effect_compressor.cpp
#: servers/audio/effects/audio_effect_filter.cpp
msgid "Gain"
@@ -23668,20 +25584,6 @@ msgid "Tap 1"
msgstr ""
#: servers/audio/effects/audio_effect_delay.cpp
-msgid "Delay (ms)"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_delay.cpp
-msgid "Level dB"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_delay.cpp
-#: servers/audio/effects/audio_effect_panner.cpp
-#, fuzzy
-msgid "Pan"
-msgstr "Pembungkusan"
-
-#: servers/audio/effects/audio_effect_delay.cpp
msgid "Tap 2"
msgstr ""
@@ -23742,10 +25644,6 @@ msgstr ""
msgid "Range Max Hz"
msgstr ""
-#: servers/audio/effects/audio_effect_phaser.cpp
-msgid "Rate Hz"
-msgstr ""
-
#: servers/audio/effects/audio_effect_pitch_shift.cpp
msgid "Oversampling"
msgstr ""
@@ -23761,7 +25659,7 @@ msgid "Predelay"
msgstr ""
#: servers/audio/effects/audio_effect_reverb.cpp
-msgid "(msec)"
+msgid "Msec"
msgstr ""
#: servers/audio/effects/audio_effect_reverb.cpp
diff --git a/editor/translations/nb.po b/editor/translations/nb.po
index 30f91069fc..23533fe909 100644
--- a/editor/translations/nb.po
+++ b/editor/translations/nb.po
@@ -22,13 +22,14 @@
# Daniel Skogly <daniel@klungo.no>, 2021.
# Imre Kristoffer Eilertsen <imreeil42@gmail.com>, 2022.
# Edvard Ekrem Sæther <edvardekrem@gmail.com>, 2022.
+# Changry <c@changry.no>, 2022.
msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
"Report-Msgid-Bugs-To: https://github.com/godotengine/godot\n"
"POT-Creation-Date: \n"
-"PO-Revision-Date: 2022-01-24 02:05+0000\n"
-"Last-Translator: Edvard Ekrem Sæther <edvardekrem@gmail.com>\n"
+"PO-Revision-Date: 2022-03-20 03:01+0000\n"
+"Last-Translator: Changry <c@changry.no>\n"
"Language-Team: Norwegian Bokmål <https://hosted.weblate.org/projects/godot-"
"engine/godot/nb_NO/>\n"
"Language: nb\n"
@@ -36,176 +37,156 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Generator: Weblate 4.11-dev\n"
+"X-Generator: Weblate 4.12-dev\n"
-#: core/bind/core_bind.cpp
+#: core/bind/core_bind.cpp main/main.cpp
msgid "Tablet Driver"
-msgstr ""
+msgstr "Nettbrett Driver"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Clipboard"
-msgstr "Utklippsbordet er tomt!"
+msgstr "Utklippstavle"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Current Screen"
-msgstr "Navn på gjeldende scene"
+msgstr "Nåværende Skjerm"
#: core/bind/core_bind.cpp
msgid "Exit Code"
-msgstr ""
+msgstr "Exit Kode"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "V-Sync Enabled"
-msgstr "Aktiver"
+msgstr "V-Sync Aktivert"
#: core/bind/core_bind.cpp main/main.cpp
msgid "V-Sync Via Compositor"
-msgstr ""
+msgstr "V-Sync Via Kompositor"
#: core/bind/core_bind.cpp main/main.cpp
msgid "Delta Smoothing"
-msgstr ""
+msgstr "Delta Utjevning"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Low Processor Usage Mode"
-msgstr "Flytt Modus"
+msgstr "Lav Prosessorbruksmodus"
#: core/bind/core_bind.cpp
msgid "Low Processor Usage Mode Sleep (µsec)"
-msgstr ""
+msgstr "Lav Prosessorbruksmodus Dvale (µsek)"
#: core/bind/core_bind.cpp main/main.cpp platform/uwp/os_uwp.cpp
-#, fuzzy
msgid "Keep Screen On"
-msgstr "Hold feilretteren åpen"
+msgstr "Hold Skjerm PÃ¥skrudd"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Min Window Size"
-msgstr "Størrelse:"
+msgstr "Min. Vindustørrelse"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Max Window Size"
-msgstr "Størrelse:"
+msgstr "Maks Vindustørrelse"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Screen Orientation"
-msgstr "Ã…pne Godots nettbaserte dokumentasjon"
+msgstr "Skjermretning"
#: core/bind/core_bind.cpp main/main.cpp platform/uwp/os_uwp.cpp
-#, fuzzy
msgid "Window"
-msgstr "Nytt vindu"
+msgstr "Vindu"
#: core/bind/core_bind.cpp main/main.cpp
msgid "Borderless"
-msgstr ""
+msgstr "Rammeløs"
#: core/bind/core_bind.cpp
msgid "Per Pixel Transparency Enabled"
-msgstr ""
+msgstr "Per Piksel Gjennomsiktighet Aktivert"
#: core/bind/core_bind.cpp main/main.cpp
-#, fuzzy
msgid "Fullscreen"
-msgstr "Veksle Fullskjerm"
+msgstr "Fullskjerm"
#: core/bind/core_bind.cpp
msgid "Maximized"
-msgstr ""
+msgstr "Maksimert"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Minimized"
-msgstr "Store bokstaver"
+msgstr "Minimert"
#: core/bind/core_bind.cpp main/main.cpp scene/gui/dialogs.cpp
#: scene/gui/graph_node.cpp
+#, fuzzy
msgid "Resizable"
-msgstr ""
+msgstr "Kan Endre Størrelse"
#: core/bind/core_bind.cpp core/os/input_event.cpp scene/2d/node_2d.cpp
#: scene/2d/physics_body_2d.cpp scene/2d/remote_transform_2d.cpp
#: scene/3d/physics_body.cpp scene/3d/remote_transform.cpp
#: scene/gui/control.cpp scene/gui/line_edit.cpp
-#, fuzzy
msgid "Position"
-msgstr "Dock-posisjon"
+msgstr "Posisjon"
#: core/bind/core_bind.cpp editor/editor_settings.cpp main/main.cpp
#: modules/gdscript/gdscript_editor.cpp modules/gridmap/grid_map.cpp
#: modules/mono/csharp_script.cpp modules/visual_script/visual_script_nodes.cpp
-#: scene/2d/tile_map.cpp scene/3d/camera.cpp scene/gui/control.cpp
-#: scene/gui/graph_edit.cpp scene/main/viewport.cpp
+#: scene/2d/tile_map.cpp scene/3d/camera.cpp scene/3d/light.cpp
+#: scene/gui/control.cpp scene/gui/graph_edit.cpp scene/main/viewport.cpp
#: scene/resources/dynamic_font.cpp scene/resources/navigation_mesh.cpp
#: scene/resources/primitive_meshes.cpp scene/resources/sky.cpp
#: scene/resources/style_box.cpp scene/resources/texture.cpp
#: scene/resources/visual_shader.cpp servers/visual_server.cpp
-#, fuzzy
msgid "Size"
-msgstr "Størrelse:"
+msgstr "Størrelse"
#: core/bind/core_bind.cpp
msgid "Endian Swap"
-msgstr ""
+msgstr "Endian Utbytting"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Editor Hint"
-msgstr "Redaktør"
+msgstr "Editor Hint"
#: core/bind/core_bind.cpp
msgid "Print Error Messages"
-msgstr ""
+msgstr "Print Feilmelding"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Iterations Per Second"
-msgstr "Interpolasjonsmodus"
+msgstr "Iterasjoner Per Sekund"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Target FPS"
-msgstr "MÃ¥l"
+msgstr "MÃ¥l FPS"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Time Scale"
-msgstr "TidSkala Node"
+msgstr "Tidsskala"
#: core/bind/core_bind.cpp main/main.cpp
-#, fuzzy
msgid "Physics Jitter Fix"
-msgstr "Fysikk-Frame %"
+msgstr "Fysikk-Jitterfiks"
#: core/bind/core_bind.cpp editor/plugins/version_control_editor_plugin.cpp
msgid "Error"
-msgstr ""
+msgstr "Feil"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Error String"
-msgstr "Feil ved lagring"
+msgstr "Feil Streng"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Error Line"
-msgstr "Feil ved lagring"
+msgstr "Feil Linje"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Result"
-msgstr "Søkeresultater"
+msgstr "Resultat"
#: core/command_queue_mt.cpp core/message_queue.cpp main/main.cpp
msgid "Memory"
-msgstr ""
+msgstr "Minne"
#: core/command_queue_mt.cpp core/message_queue.cpp
#: core/register_core_types.cpp drivers/gles2/rasterizer_canvas_base_gles2.cpp
@@ -215,24 +196,22 @@ msgstr ""
#: drivers/gles3/rasterizer_storage_gles3.cpp main/main.cpp
#: servers/visual_server.cpp
msgid "Limits"
-msgstr ""
+msgstr "Begrensninger"
#: core/command_queue_mt.cpp
-#, fuzzy
msgid "Command Queue"
-msgstr "Dra: Roter"
+msgstr "Kommando Kø"
#: core/command_queue_mt.cpp
msgid "Multithreading Queue Size (KB)"
-msgstr ""
+msgstr "Flertråding Kø Størrelse (KB)"
#: core/func_ref.cpp modules/visual_script/visual_script_builtin_funcs.cpp
#: modules/visual_script/visual_script_func_nodes.cpp
#: modules/visual_script/visual_script_nodes.cpp
#: scene/resources/visual_shader_nodes.cpp
-#, fuzzy
msgid "Function"
-msgstr "Funksjoner"
+msgstr "Funksjon"
#: core/image.cpp core/packed_data_container.cpp
#: modules/minimp3/audio_stream_mp3.cpp
@@ -243,73 +222,68 @@ msgstr "Funksjoner"
#: scene/resources/concave_polygon_shape.cpp scene/resources/curve.cpp
#: scene/resources/polygon_path_finder.cpp scene/resources/texture.cpp
msgid "Data"
-msgstr ""
+msgstr "Data"
#: core/io/file_access_network.cpp core/register_core_types.cpp
-#: editor/editor_settings.cpp editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp main/main.cpp
+#: editor/editor_settings.cpp main/main.cpp
#: modules/gdscript/language_server/gdscript_language_server.cpp
msgid "Network"
-msgstr ""
+msgstr "Nettverk"
#: core/io/file_access_network.cpp
#, fuzzy
msgid "Remote FS"
-msgstr "Fjern-funksjon "
+msgstr "Fjernstyrt FS"
#: core/io/file_access_network.cpp
-#, fuzzy
msgid "Page Size"
-msgstr "Side: "
+msgstr "Sidestørrelse"
#: core/io/file_access_network.cpp
msgid "Page Read Ahead"
msgstr ""
#: core/io/http_client.cpp
+#, fuzzy
msgid "Blocking Mode Enabled"
-msgstr ""
+msgstr "Blokkeringsmodus Aktivert"
#: core/io/http_client.cpp
-#, fuzzy
msgid "Connection"
-msgstr "Koble til"
+msgstr "Tilkobling"
#: core/io/http_client.cpp
+#, fuzzy
msgid "Read Chunk Size"
-msgstr ""
+msgstr "Les Chunk Størrelse"
#: core/io/marshalls.cpp
msgid "Object ID"
-msgstr ""
+msgstr "Objekt ID"
#: core/io/multiplayer_api.cpp core/io/packet_peer.cpp
-#, fuzzy
msgid "Allow Object Decoding"
-msgstr "Aktiver Løk-Lag"
+msgstr "Tillat Objekt Dekoding"
#: core/io/multiplayer_api.cpp scene/main/scene_tree.cpp
msgid "Refuse New Network Connections"
-msgstr ""
+msgstr "Avslå Nye Nettverkstilkoblinger"
#: core/io/multiplayer_api.cpp scene/main/scene_tree.cpp
msgid "Network Peer"
-msgstr ""
+msgstr "Nettverkspeer"
#: core/io/multiplayer_api.cpp scene/animation/animation_player.cpp
-#, fuzzy
msgid "Root Node"
-msgstr "Endre navn"
+msgstr "Rotnode"
#: core/io/networked_multiplayer_peer.cpp
-#, fuzzy
msgid "Refuse New Connections"
-msgstr "Koble til"
+msgstr "Avslå Nye Tilkoblinger"
#: core/io/networked_multiplayer_peer.cpp
-#, fuzzy
msgid "Transfer Mode"
-msgstr "Panorerings-Modus"
+msgstr "Overføringsmodus"
#: core/io/packet_peer.cpp
msgid "Encode Buffer Max Size"
@@ -340,14 +314,13 @@ msgid "Blocking Handshake"
msgstr ""
#: core/io/udp_server.cpp
-#, fuzzy
msgid "Max Pending Connections"
-msgstr "Tilkoblingsfeil"
+msgstr "Maks Ventende Tilkoblinger"
#: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp
#: modules/visual_script/visual_script_builtin_funcs.cpp
msgid "Invalid type argument to convert(), use TYPE_* constants."
-msgstr "Ugyldig argumenttype til convert(), bruk TYPE_*-konstantene."
+msgstr "Ugyldig argumenttype til convert(), bruk TYPE_* konstantene."
#: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp
msgid "Expected a string of length 1 (a character)."
@@ -357,53 +330,52 @@ msgstr "Forventet en streng med lenge 1 (et tegn)."
#: 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 "Ikke nok byte til dekodingsbyte, eller ugyldig format."
+msgstr "Ikke nok bytes til å dekode, eller ugyldig format."
#: core/math/expression.cpp
msgid "Invalid input %i (not passed) in expression"
-msgstr "Ugyldig inndata %i (ikke bestått) i utrykket"
+msgstr "Ugyldig input %i (ikke bestått) i utrykket"
#: core/math/expression.cpp
msgid "self can't be used because instance is null (not passed)"
-msgstr "self kan ikke brukes siden instansen er lik null (ikke bestått)"
+msgstr "self kan ikke brukes fordi instansen er null (ikke bestått)"
#: core/math/expression.cpp
msgid "Invalid operands to operator %s, %s and %s."
-msgstr "Ugyldige argumenter til operator %s, %s og %s."
+msgstr "Ugyldige operander til operator %s, %s og %s."
#: core/math/expression.cpp
msgid "Invalid index of type %s for base type %s"
-msgstr "Ugyldig indeks av type %s for basistype %s"
+msgstr "Ugyldig indeks av type %s for grunntypen %s"
#: core/math/expression.cpp
msgid "Invalid named index '%s' for base type %s"
-msgstr "Ugyldig navngitt indeks \"%s\" for grunntypen %s"
+msgstr "Ugyldig navngitt indeks '%s' for grunntypen %s"
#: core/math/expression.cpp
msgid "Invalid arguments to construct '%s'"
-msgstr "Ugyldige argumenter for å lage \"%s\""
+msgstr "Ugyldige argumenter for å konstruere '%s'"
#: core/math/expression.cpp
msgid "On call to '%s':"
-msgstr "NÃ¥r \"%s\" ble anropt:"
+msgstr "Når '%s' blir påkalt:"
#: core/math/random_number_generator.cpp
#: modules/opensimplex/open_simplex_noise.cpp
msgid "Seed"
-msgstr ""
+msgstr "Frø"
#: core/math/random_number_generator.cpp
-#, fuzzy
msgid "State"
-msgstr "Status"
+msgstr "Tilstand"
#: core/message_queue.cpp
msgid "Message Queue"
-msgstr ""
+msgstr "Melding Kø"
#: core/message_queue.cpp
msgid "Max Size (KB)"
-msgstr ""
+msgstr "Maks Størrelse (KB)"
#: core/os/input.cpp editor/editor_help.cpp editor/editor_settings.cpp
#: editor/plugins/script_editor_plugin.cpp
@@ -415,9 +387,8 @@ msgstr ""
#: modules/mono/csharp_script.cpp scene/animation/animation_player.cpp
#: scene/gui/control.cpp scene/gui/line_edit.cpp scene/main/node.cpp
#: scene/resources/material.cpp
-#, fuzzy
msgid "Text Editor"
-msgstr "Åpne i Redigeringsverktøy"
+msgstr "Tekst Editor"
#: core/os/input.cpp editor/editor_settings.cpp
#: editor/plugins/script_text_editor.cpp modules/gdscript/gdscript.cpp
@@ -425,17 +396,17 @@ msgstr "Åpne i Redigeringsverktøy"
#: modules/gdscript/language_server/gdscript_text_document.cpp
#: scene/animation/animation_player.cpp scene/gui/control.cpp
#: scene/main/node.cpp scene/resources/material.cpp
-#, fuzzy
msgid "Completion"
-msgstr "Fjern Utvalg"
+msgstr "Fullføring"
#: core/os/input.cpp editor/editor_settings.cpp
#: editor/plugins/script_text_editor.cpp modules/gdscript/gdscript_editor.cpp
#: modules/gdscript/language_server/gdscript_text_document.cpp
#: scene/animation/animation_player.cpp scene/gui/control.cpp
#: scene/main/node.cpp scene/resources/material.cpp
+#, fuzzy
msgid "Use Single Quotes"
-msgstr ""
+msgstr "Bruk Enkle Annførselstegn"
#: core/os/input_event.cpp editor/project_settings_editor.cpp
#: servers/audio_server.cpp
@@ -443,95 +414,89 @@ msgid "Device"
msgstr "Enhet"
#: core/os/input_event.cpp
-#, fuzzy
msgid "Alt"
-msgstr "Alle"
+msgstr "Alt"
#: core/os/input_event.cpp
msgid "Shift"
-msgstr ""
+msgstr "Shift"
#: core/os/input_event.cpp
-#, fuzzy
msgid "Control"
-msgstr "Versjon:"
+msgstr "Kontrol"
#: core/os/input_event.cpp
msgid "Meta"
-msgstr ""
+msgstr "Meta"
#: core/os/input_event.cpp
-#, fuzzy
msgid "Command"
-msgstr "Samfunn"
+msgstr "Kommando"
#: core/os/input_event.cpp scene/2d/touch_screen_button.cpp
#: scene/gui/base_button.cpp scene/gui/texture_button.cpp
#, fuzzy
msgid "Pressed"
-msgstr "Forhåndsinnstilling"
+msgstr "Trykket"
#: core/os/input_event.cpp
-#, fuzzy
msgid "Scancode"
-msgstr "Skann"
+msgstr "Scancode"
#: core/os/input_event.cpp
msgid "Physical Scancode"
-msgstr ""
+msgstr "Fysisk Scancode"
#: core/os/input_event.cpp
msgid "Unicode"
-msgstr ""
+msgstr "Unicode"
#: core/os/input_event.cpp
+#, fuzzy
msgid "Echo"
-msgstr ""
+msgstr "Ekko"
#: core/os/input_event.cpp scene/gui/base_button.cpp
#, fuzzy
msgid "Button Mask"
-msgstr "Knapp"
+msgstr "Knappmaske"
#: core/os/input_event.cpp scene/2d/node_2d.cpp scene/gui/control.cpp
-#, fuzzy
msgid "Global Position"
-msgstr "Konstant"
+msgstr "Global Posisjon"
#: core/os/input_event.cpp
-#, fuzzy
msgid "Factor"
-msgstr "Vektor"
+msgstr "Faktor"
#: core/os/input_event.cpp
#, fuzzy
msgid "Button Index"
-msgstr "Automatisk Innrykk"
+msgstr "Knappindeks"
#: core/os/input_event.cpp
msgid "Doubleclick"
-msgstr ""
+msgstr "Dobbelklikk"
#: core/os/input_event.cpp
+#, fuzzy
msgid "Tilt"
-msgstr ""
+msgstr "Tilt"
#: core/os/input_event.cpp
-#, fuzzy
msgid "Pressure"
-msgstr "Forhåndsinnstilling"
+msgstr "Trykk"
#: core/os/input_event.cpp
-#, fuzzy
msgid "Relative"
-msgstr "Snap Relativt"
+msgstr "Relativ"
-#: core/os/input_event.cpp scene/2d/camera_2d.cpp
-#: scene/3d/interpolated_camera.cpp scene/animation/animation_player.cpp
-#: scene/resources/environment.cpp
-#, fuzzy
+#: core/os/input_event.cpp scene/2d/camera_2d.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/interpolated_camera.cpp
+#: scene/animation/animation_player.cpp scene/resources/environment.cpp
+#: scene/resources/particles_material.cpp
msgid "Speed"
-msgstr "Hastighet (FPS):"
+msgstr "Hastighet"
#: core/os/input_event.cpp editor/project_settings_editor.cpp
#: scene/3d/sprite_3d.cpp
@@ -539,90 +504,95 @@ msgid "Axis"
msgstr "Akse"
#: core/os/input_event.cpp
-#, fuzzy
msgid "Axis Value"
-msgstr "Verdi:"
+msgstr "Akseverdi"
#: core/os/input_event.cpp modules/visual_script/visual_script_func_nodes.cpp
#, fuzzy
msgid "Index"
-msgstr "Panorerings-Modus"
+msgstr "Indeks"
#: core/os/input_event.cpp editor/project_settings_editor.cpp
#: modules/visual_script/visual_script_nodes.cpp
#: scene/2d/touch_screen_button.cpp
+#, fuzzy
msgid "Action"
msgstr "Handling"
#: core/os/input_event.cpp scene/resources/environment.cpp
#: scene/resources/material.cpp
msgid "Strength"
-msgstr ""
+msgstr "Styrke"
#: core/os/input_event.cpp
msgid "Delta"
-msgstr ""
+msgstr "Delta"
#: core/os/input_event.cpp
-#, fuzzy
msgid "Channel"
-msgstr "Endre"
+msgstr "Kanal"
#: core/os/input_event.cpp main/main.cpp
-#, fuzzy
msgid "Message"
-msgstr "Sjekk inn endringer"
+msgstr "Melding"
#: core/os/input_event.cpp
#, fuzzy
msgid "Pitch"
-msgstr "Bryter"
+msgstr "Pitch"
-#: core/os/input_event.cpp scene/2d/physics_body_2d.cpp
-#: scene/3d/physics_body.cpp
+#: core/os/input_event.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/physics_body_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/3d/physics_body.cpp scene/resources/particles_material.cpp
#, fuzzy
msgid "Velocity"
-msgstr "Store bokstaver"
+msgstr "Hastighet"
#: core/os/input_event.cpp
+#, fuzzy
msgid "Instrument"
-msgstr ""
+msgstr "Instrument"
#: core/os/input_event.cpp
#, fuzzy
msgid "Controller Number"
-msgstr "Linjenummer:"
+msgstr "Kontrollernummer"
#: core/os/input_event.cpp
+#, fuzzy
msgid "Controller Value"
-msgstr ""
+msgstr "Kontrollerverdi"
#: core/project_settings.cpp editor/editor_node.cpp main/main.cpp
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/windows/export/export.cpp
#, fuzzy
msgid "Application"
-msgstr "Handling"
+msgstr "Applikasjon"
#: core/project_settings.cpp main/main.cpp
-#, fuzzy
msgid "Config"
-msgstr "Konfigurer Snap"
+msgstr "Konfig"
#: core/project_settings.cpp
#, fuzzy
msgid "Project Settings Override"
-msgstr "Prosjektinnstillinger"
+msgstr "Overstyr Prosjektinnstillinger"
#: core/project_settings.cpp core/resource.cpp
#: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp
#: editor/editor_plugin_settings.cpp editor/editor_profiler.cpp
#: editor/project_manager.cpp editor/settings_config_dialog.cpp
-#: modules/gdnative/nativescript/nativescript.cpp scene/2d/area_2d.cpp
-#: scene/3d/area.cpp scene/main/node.cpp
+#: modules/gdnative/nativescript/nativescript.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/osx/export/export.cpp scene/2d/area_2d.cpp scene/3d/area.cpp
+#: scene/main/node.cpp
msgid "Name"
msgstr "Navn"
#: core/project_settings.cpp editor/editor_help.cpp
-#: modules/visual_script/visual_script_nodes.cpp
+#: modules/visual_script/visual_script_nodes.cpp platform/uwp/export/export.cpp
+#: platform/windows/export/export.cpp
msgid "Description"
msgstr "Beskrivelse"
@@ -635,139 +605,130 @@ msgstr "Kjør"
#: core/project_settings.cpp editor/editor_node.cpp
#: editor/run_settings_dialog.cpp main/main.cpp
msgid "Main Scene"
-msgstr ""
+msgstr "Hovedscene"
#: core/project_settings.cpp
-#, fuzzy
msgid "Disable stdout"
-msgstr "Deaktivert"
+msgstr "Deaktiver stdout"
#: core/project_settings.cpp
-#, fuzzy
msgid "Disable stderr"
-msgstr "Deaktivert"
+msgstr "Deaktiver stderr"
#: core/project_settings.cpp
+#, fuzzy
msgid "Use Hidden Project Data Directory"
-msgstr ""
+msgstr "Bruk Skjult Prosjektdatakatalog"
#: core/project_settings.cpp
msgid "Use Custom User Dir"
-msgstr ""
+msgstr "Bruk Tilpasset Brukerkatalog"
#: core/project_settings.cpp
msgid "Custom User Dir Name"
-msgstr ""
+msgstr "Tilpasset Brukerkatalognavn"
#: core/project_settings.cpp editor/animation_track_editor.cpp
-#: editor/editor_audio_buses.cpp servers/audio_server.cpp
+#: editor/editor_audio_buses.cpp main/main.cpp servers/audio_server.cpp
msgid "Audio"
msgstr "Lyd"
#: core/project_settings.cpp
#, fuzzy
msgid "Default Bus Layout"
-msgstr "Last standard Bus oppsettet."
+msgstr "Standard Bus Oppsett"
#: core/project_settings.cpp editor/editor_export.cpp
#: editor/editor_file_system.cpp editor/editor_node.cpp
#: editor/editor_settings.cpp editor/script_create_dialog.cpp
#: scene/2d/camera_2d.cpp scene/3d/light.cpp scene/main/node.cpp
msgid "Editor"
-msgstr "Redaktør"
+msgstr "Editor"
#: core/project_settings.cpp
msgid "Main Run Args"
-msgstr ""
+msgstr "Hovedkjøringsargumenter"
#: core/project_settings.cpp
msgid "Search In File Extensions"
-msgstr ""
+msgstr "Søk I Filetternavn"
#: core/project_settings.cpp
msgid "Script Templates Search Path"
-msgstr ""
+msgstr "Skriptmaler Søkesti"
#: core/project_settings.cpp editor/editor_node.cpp
#: editor/plugins/version_control_editor_plugin.cpp
-#, fuzzy
msgid "Version Control"
-msgstr "Versjon:"
+msgstr "Versjonskontroll"
#: core/project_settings.cpp
msgid "Autoload On Startup"
-msgstr ""
+msgstr "Automatisk Lasting Ved Oppstart"
#: core/project_settings.cpp
-#, fuzzy
msgid "Plugin Name"
-msgstr "Navn på tillegg:"
+msgstr "Navn PÃ¥ Programvareutvidelse"
#: core/project_settings.cpp scene/2d/collision_object_2d.cpp
#: scene/3d/collision_object.cpp scene/gui/control.cpp
#, fuzzy
msgid "Input"
-msgstr "Legg til inndata"
+msgstr "Input"
#: core/project_settings.cpp
+#, fuzzy
msgid "UI Accept"
-msgstr ""
+msgstr "UI Aksepter"
#: core/project_settings.cpp
#, fuzzy
msgid "UI Select"
-msgstr "Velg"
+msgstr "UI Velg"
#: core/project_settings.cpp
-#, fuzzy
msgid "UI Cancel"
-msgstr "Avbryt"
+msgstr "UI Avbryt"
#: core/project_settings.cpp
-#, fuzzy
msgid "UI Focus Next"
-msgstr "Fokuser Bane"
+msgstr "UI Fokus Neste"
#: core/project_settings.cpp
-#, fuzzy
msgid "UI Focus Prev"
-msgstr "Fokuser Bane"
+msgstr "UI Fokus Forrige"
#: core/project_settings.cpp
-#, fuzzy
msgid "UI Left"
-msgstr "Øverst til venstre"
+msgstr "UI Venstre"
#: core/project_settings.cpp
-#, fuzzy
msgid "UI Right"
-msgstr "Øverst til høyre"
+msgstr "UI Høyre"
#: core/project_settings.cpp
msgid "UI Up"
-msgstr ""
+msgstr "UI Opp"
#: core/project_settings.cpp
-#, fuzzy
msgid "UI Down"
-msgstr "Ned"
+msgstr "UI Ned"
#: core/project_settings.cpp
-#, fuzzy
msgid "UI Page Up"
-msgstr "Side: "
+msgstr "UI Page Up"
#: core/project_settings.cpp
msgid "UI Page Down"
-msgstr ""
+msgstr "UI Page Down"
#: core/project_settings.cpp
msgid "UI Home"
-msgstr ""
+msgstr "UI Hjem"
#: core/project_settings.cpp
msgid "UI End"
-msgstr ""
+msgstr "UI Slutt"
#: core/project_settings.cpp main/main.cpp modules/bullet/register_types.cpp
#: modules/bullet/space_bullet.cpp scene/2d/physics_body_2d.cpp
@@ -776,9 +737,8 @@ msgstr ""
#: servers/physics/space_sw.cpp servers/physics_2d/physics_2d_server_sw.cpp
#: servers/physics_2d/physics_2d_server_wrap_mt.h
#: servers/physics_2d/space_2d_sw.cpp
-#, fuzzy
msgid "Physics"
-msgstr "Fysikk-Frame %"
+msgstr "Fysikk"
#: core/project_settings.cpp editor/editor_settings.cpp
#: editor/plugins/spatial_editor_plugin.cpp main/main.cpp
@@ -786,11 +746,11 @@ msgstr "Fysikk-Frame %"
#: scene/3d/physics_body.cpp scene/resources/world.cpp
#: servers/physics/space_sw.cpp
msgid "3D"
-msgstr ""
+msgstr "3D"
#: core/project_settings.cpp
msgid "Smooth Trimesh Collision"
-msgstr ""
+msgstr "Jevn Trimesh Kollisjon"
#: core/project_settings.cpp drivers/gles2/rasterizer_canvas_base_gles2.cpp
#: drivers/gles2/rasterizer_scene_gles2.cpp
@@ -801,9 +761,8 @@ msgstr ""
#: modules/lightmapper_cpu/register_types.cpp scene/main/scene_tree.cpp
#: scene/main/viewport.cpp servers/visual/visual_server_scene.cpp
#: servers/visual_server.cpp
-#, fuzzy
msgid "Rendering"
-msgstr "Opptegner:"
+msgstr "Rendrer"
#: core/project_settings.cpp drivers/gles2/rasterizer_storage_gles2.cpp
#: drivers/gles3/rasterizer_scene_gles3.cpp
@@ -813,98 +772,101 @@ msgstr "Opptegner:"
#: scene/resources/multimesh.cpp servers/visual/visual_server_scene.cpp
#: servers/visual_server.cpp
msgid "Quality"
-msgstr ""
+msgstr "Kvalitet"
#: core/project_settings.cpp scene/animation/animation_tree.cpp
#: scene/gui/file_dialog.cpp scene/main/scene_tree.cpp
#: servers/visual_server.cpp
-#, fuzzy
msgid "Filters"
-msgstr "Lim inn Noder"
+msgstr "Filter"
#: core/project_settings.cpp scene/main/viewport.cpp
+#, fuzzy
msgid "Sharpen Intensity"
-msgstr ""
+msgstr "Gjør Intensiteten Skarpere"
-#: core/project_settings.cpp editor/editor_node.cpp editor/editor_settings.cpp
-#: editor/plugins/script_editor_plugin.cpp editor/project_export.cpp
-#: main/main.cpp modules/gdscript/gdscript.cpp
-#: modules/visual_script/visual_script.cpp scene/3d/room_manager.cpp
+#: core/project_settings.cpp editor/editor_export.cpp editor/editor_node.cpp
+#: editor/editor_settings.cpp editor/plugins/script_editor_plugin.cpp
+#: editor/project_export.cpp main/main.cpp modules/gdscript/gdscript.cpp
+#: modules/visual_script/visual_script.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp scene/3d/room_manager.cpp
#: scene/main/scene_tree.cpp scene/resources/shape_2d.cpp
#: servers/visual_server.cpp
msgid "Debug"
-msgstr "Avlus"
+msgstr "Debug"
#: core/project_settings.cpp main/main.cpp modules/gdscript/gdscript.cpp
#: modules/visual_script/visual_script.cpp scene/resources/dynamic_font.cpp
-#, fuzzy
msgid "Settings"
-msgstr "Innstillinger:"
+msgstr "Innstillinger"
#: core/project_settings.cpp editor/script_editor_debugger.cpp main/main.cpp
#: modules/mono/mono_gd/gd_mono.cpp
+#, fuzzy
msgid "Profiler"
-msgstr ""
+msgstr "Profiler"
#: core/project_settings.cpp
-#, fuzzy
msgid "Max Functions"
-msgstr "Lag Funksjon"
+msgstr "Maks Funksjoner"
#: core/project_settings.cpp scene/3d/vehicle_body.cpp
-#, fuzzy
msgid "Compression"
-msgstr "Gjeldende Versjon:"
+msgstr "Komprimering"
#: core/project_settings.cpp
-#, fuzzy
msgid "Formats"
-msgstr "Format"
+msgstr "Formater"
#: core/project_settings.cpp
msgid "Zstd"
-msgstr ""
+msgstr "Zstd"
#: core/project_settings.cpp
+#, fuzzy
msgid "Long Distance Matching"
-msgstr ""
+msgstr "Langdistanse Matching"
#: core/project_settings.cpp
msgid "Compression Level"
-msgstr ""
+msgstr "Kompresjonsnivå"
#: core/project_settings.cpp
+#, fuzzy
msgid "Window Log Size"
-msgstr ""
+msgstr "Vinduloggstørrelse"
#: core/project_settings.cpp
msgid "Zlib"
-msgstr ""
+msgstr "Zlib"
#: core/project_settings.cpp
msgid "Gzip"
-msgstr ""
+msgstr "Gzip"
#: core/project_settings.cpp platform/android/export/export.cpp
msgid "Android"
-msgstr ""
+msgstr "Android"
#: core/project_settings.cpp
msgid "Modules"
-msgstr ""
+msgstr "Moduler"
#: core/register_core_types.cpp
msgid "TCP"
-msgstr ""
+msgstr "TCP"
#: core/register_core_types.cpp
#, fuzzy
msgid "Connect Timeout Seconds"
-msgstr "Koble Til Node:"
+msgstr "Tilkoblingstidsavbrudd Sekunder"
#: core/register_core_types.cpp
+#, fuzzy
msgid "Packet Peer Stream"
-msgstr ""
+msgstr "Pakke Peer Stream"
#: core/register_core_types.cpp
msgid "Max Buffer (Power of 2)"
@@ -912,12 +874,11 @@ msgstr ""
#: core/register_core_types.cpp editor/editor_settings.cpp main/main.cpp
msgid "SSL"
-msgstr ""
+msgstr "SSL"
#: core/register_core_types.cpp main/main.cpp
-#, fuzzy
msgid "Certificates"
-msgstr "Egenskaper:"
+msgstr "Sertifikater"
#: core/resource.cpp editor/dependency_editor.cpp
#: editor/editor_resource_picker.cpp
@@ -926,39 +887,36 @@ msgid "Resource"
msgstr "Ressurs"
#: core/resource.cpp
-#, fuzzy
msgid "Local To Scene"
-msgstr "Lukk Scene"
+msgstr "Lokal Til Scene"
#: core/resource.cpp editor/dependency_editor.cpp
#: editor/editor_autoload_settings.cpp editor/plugins/path_editor_plugin.cpp
#: editor/project_manager.cpp editor/project_settings_editor.cpp
#: modules/visual_script/visual_script_nodes.cpp
msgid "Path"
-msgstr "Bane"
+msgstr "Søkesti"
#: core/script_language.cpp
-#, fuzzy
msgid "Source Code"
-msgstr "Kilde"
+msgstr "Kildekode"
#: core/translation.cpp
-#, fuzzy
msgid "Messages"
-msgstr "Sjekk inn endringer"
+msgstr "Meldinger"
#: core/translation.cpp editor/project_settings_editor.cpp
msgid "Locale"
msgstr "Språk"
#: core/translation.cpp
-#, fuzzy
msgid "Test"
-msgstr "Tester"
+msgstr "Test"
#: core/translation.cpp scene/resources/font.cpp
+#, fuzzy
msgid "Fallback"
-msgstr ""
+msgstr "Tilbakefall"
#: core/ustring.cpp scene/resources/segment_shape_2d.cpp
msgid "B"
@@ -1013,7 +971,7 @@ msgstr ""
#: servers/physics_2d/physics_2d_server_wrap_mt.h
#: servers/physics_2d/space_2d_sw.cpp servers/visual_server.cpp
msgid "2D"
-msgstr ""
+msgstr "2D"
#: drivers/gles2/rasterizer_canvas_base_gles2.cpp
#: drivers/gles3/rasterizer_canvas_base_gles3.cpp
@@ -1025,7 +983,7 @@ msgstr "Smart snapping"
#: drivers/gles3/rasterizer_canvas_base_gles3.cpp
#, fuzzy
msgid "Use GPU Pixel Snap"
-msgstr "Bruk Piksel Snap"
+msgstr "Bruk GPU Piksel Snap"
#: drivers/gles2/rasterizer_scene_gles2.cpp
#: drivers/gles3/rasterizer_scene_gles3.cpp
@@ -1034,8 +992,9 @@ msgstr ""
#: drivers/gles2/rasterizer_storage_gles2.cpp
#: drivers/gles3/rasterizer_storage_gles3.cpp
+#, fuzzy
msgid "Lightmapping"
-msgstr ""
+msgstr "Lysmapping"
#: drivers/gles2/rasterizer_storage_gles2.cpp
#: drivers/gles3/rasterizer_storage_gles3.cpp
@@ -1057,13 +1016,14 @@ msgstr "Plasser Utvalg I Midten"
#: drivers/gles3/rasterizer_scene_gles3.cpp
msgid "Max Lights Per Object"
-msgstr ""
+msgstr "Maks Lys Per Objekt"
#: drivers/gles3/rasterizer_scene_gles3.cpp
msgid "Subsurface Scattering"
msgstr ""
#: drivers/gles3/rasterizer_scene_gles3.cpp
+#: editor/import/resource_importer_texture.cpp
#: editor/plugins/spatial_editor_plugin.cpp modules/gltf/gltf_node.cpp
#: modules/gridmap/grid_map.cpp scene/2d/cpu_particles_2d.cpp
#: scene/2d/node_2d.cpp scene/2d/parallax_layer.cpp scene/2d/polygon_2d.cpp
@@ -1076,7 +1036,7 @@ msgstr "Skala"
#: drivers/gles3/rasterizer_scene_gles3.cpp
msgid "Follow Surface"
-msgstr ""
+msgstr "Følg Overflate"
#: drivers/gles3/rasterizer_scene_gles3.cpp
msgid "Weight Samples"
@@ -1088,7 +1048,7 @@ msgstr ""
#: drivers/gles3/rasterizer_scene_gles3.cpp scene/resources/environment.cpp
msgid "High Quality"
-msgstr ""
+msgstr "Høy Kvalitet"
#: drivers/gles3/rasterizer_storage_gles3.cpp
msgid "Blend Shape Max Buffer Size (KB)"
@@ -1116,71 +1076,85 @@ msgstr "Verdi:"
#: editor/animation_bezier_editor.cpp
msgid "Insert Key Here"
-msgstr "Sett inn nøkkel her"
+msgstr "Sett Inn Nøkkel Her"
#: editor/animation_bezier_editor.cpp
+#, fuzzy
msgid "Duplicate Selected Key(s)"
-msgstr "Dupliser valgte nøkler/taster"
+msgstr "Dupliser Valgte Nøkler"
#: editor/animation_bezier_editor.cpp
+#, fuzzy
msgid "Delete Selected Key(s)"
-msgstr "Slett valgte nøkler/taster"
+msgstr "Slett Valgte Nøkler"
#: editor/animation_bezier_editor.cpp
msgid "Add Bezier Point"
-msgstr "Legg til Bezier-punkt"
+msgstr "Legg Til Bezier-punkt"
#: editor/animation_bezier_editor.cpp
msgid "Move Bezier Points"
msgstr "Flytt Bezier-punkt"
#: editor/animation_bezier_editor.cpp editor/animation_track_editor.cpp
+#, fuzzy
msgid "Anim Duplicate Keys"
msgstr "Anim Dupliser Nøkler"
#: editor/animation_bezier_editor.cpp editor/animation_track_editor.cpp
+#, fuzzy
msgid "Anim Delete Keys"
-msgstr "Anim Fjern Nøkler"
+msgstr "Anim Slett Nøkler"
#: editor/animation_track_editor.cpp
+#, fuzzy
msgid "Anim Change Keyframe Time"
msgstr "Anim Endre Nøkkelbildetid"
#: editor/animation_track_editor.cpp
+#, fuzzy
msgid "Anim Change Transition"
-msgstr "Anim Forandre Overgang"
+msgstr "Anim Endre Overgang"
#: editor/animation_track_editor.cpp
+#, fuzzy
msgid "Anim Change Transform"
-msgstr "Anim Forandre Omforming"
+msgstr "Anim Endre Utforming"
#: editor/animation_track_editor.cpp
+#, fuzzy
msgid "Anim Change Keyframe Value"
msgstr "Anim Endre Nøkkelbildeverdi"
#: editor/animation_track_editor.cpp
+#, fuzzy
msgid "Anim Change Call"
-msgstr "Anim Forandre Kall"
+msgstr "Anim Endre Kall"
#: editor/animation_track_editor.cpp
+#, fuzzy
msgid "Anim Multi Change Keyframe Time"
-msgstr "Anim Endre flere Nøkkelbildetider"
+msgstr "Anim Endre Flere Nøkkelbildetider"
#: editor/animation_track_editor.cpp
+#, fuzzy
msgid "Anim Multi Change Transition"
-msgstr "Anim Forandre flere Overganger"
+msgstr "Anim Endre Flere Overganger"
#: editor/animation_track_editor.cpp
+#, fuzzy
msgid "Anim Multi Change Transform"
-msgstr "Anim Forandre flere Omforminger"
+msgstr "Anim Endre Flere Utforminger"
#: editor/animation_track_editor.cpp
+#, fuzzy
msgid "Anim Multi Change Keyframe Value"
-msgstr "Anim Endre flere Nøkkelbildeverdier"
+msgstr "Anim Endre Flere Nøkkelbildeverdier"
#: editor/animation_track_editor.cpp
+#, fuzzy
msgid "Anim Multi Change Call"
-msgstr "Anim Forandre flere Kall"
+msgstr "Anim Endre Flere Kall"
#: editor/animation_track_editor.cpp
msgid "Change Animation Length"
@@ -1189,7 +1163,7 @@ msgstr "Endre Animasjonslengde"
#: editor/animation_track_editor.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp
msgid "Change Animation Loop"
-msgstr "Endre Animasjonssløyfe"
+msgstr "Endre Animasjonsløkke"
#: editor/animation_track_editor.cpp
msgid "Property Track"
@@ -1197,11 +1171,11 @@ msgstr "Egenskapsspor"
#: editor/animation_track_editor.cpp
msgid "3D Transform Track"
-msgstr "3D transformasjonsspor"
+msgstr "3D Transformasjonsspor"
#: editor/animation_track_editor.cpp
msgid "Call Method Track"
-msgstr "Kall metode-spor"
+msgstr "Kall Metodespor"
#: editor/animation_track_editor.cpp
msgid "Bezier Curve Track"
@@ -1217,7 +1191,7 @@ msgstr "Animasjonavspillingspor"
#: editor/animation_track_editor.cpp
msgid "Animation length (frames)"
-msgstr "Animasjon lengde (i rammer)"
+msgstr "Animasjonslengde (bilder)"
#: editor/animation_track_editor.cpp
msgid "Animation length (seconds)"
@@ -1225,11 +1199,12 @@ msgstr "Animasjonslengde (sekunder)"
#: editor/animation_track_editor.cpp
msgid "Add Track"
-msgstr "Legg til Spor"
+msgstr "Legg Til Spor"
#: editor/animation_track_editor.cpp
+#, fuzzy
msgid "Animation Looping"
-msgstr "Animasjonsløkke"
+msgstr "Animasjon Går I Løkke"
#: editor/animation_track_editor.cpp
#: modules/visual_script/visual_script_editor.cpp
@@ -1246,14 +1221,17 @@ msgid "Anim Clips:"
msgstr "Anim-klipp:"
#: editor/animation_track_editor.cpp
+#, fuzzy
msgid "Change Track Path"
-msgstr "Endre sporsti"
+msgstr "Endre Sporsti"
#: editor/animation_track_editor.cpp
+#, fuzzy
msgid "Toggle this track on/off."
-msgstr "Slå spor på/av."
+msgstr "Slå sporet av/på."
#: editor/animation_track_editor.cpp
+#, fuzzy
msgid "Update Mode (How this property is set)"
msgstr "Oppdateringsmodus (Hvordan denne egenskapen settes)"
@@ -1304,6 +1282,7 @@ msgid "Linear"
msgstr "Lineær"
#: editor/animation_track_editor.cpp
+#, fuzzy
msgid "Cubic"
msgstr "Kubisk"
@@ -1318,7 +1297,7 @@ msgstr "Pakk Inn Sløyfeinterp"
#: editor/animation_track_editor.cpp
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Insert Key"
-msgstr "Sett inn nøkkel"
+msgstr "Sett Inn Nøkkel"
#: editor/animation_track_editor.cpp
msgid "Duplicate Key(s)"
@@ -1329,8 +1308,9 @@ msgid "Add RESET Value(s)"
msgstr "Legg Til RESET-Verdi(er)"
#: editor/animation_track_editor.cpp
+#, fuzzy
msgid "Delete Key(s)"
-msgstr "Fjern Nøkler"
+msgstr "Slett Nøkkel/Nøkler"
#: editor/animation_track_editor.cpp
msgid "Change Animation Update Mode"
@@ -1361,6 +1341,7 @@ msgid "Editors"
msgstr "Redaktør"
#: editor/animation_track_editor.cpp editor/editor_settings.cpp
+#: editor/import/resource_importer_scene.cpp
#: editor/plugins/animation_player_editor_plugin.cpp editor/scene_tree_dock.cpp
#: scene/2d/animated_sprite.cpp scene/2d/cpu_particles_2d.cpp
#: scene/2d/sprite.cpp scene/3d/cpu_particles.cpp scene/3d/sprite_3d.cpp
@@ -1595,14 +1576,14 @@ msgstr "Animasjonstrinnverdi."
msgid "Seconds"
msgstr "Sekunder"
-#: editor/animation_track_editor.cpp
+#: editor/animation_track_editor.cpp editor/import/resource_importer_scene.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp main/main.cpp
#: scene/resources/texture.cpp
msgid "FPS"
msgstr "FPS"
#: editor/animation_track_editor.cpp editor/editor_plugin_settings.cpp
-#: editor/editor_resource_picker.cpp
+#: editor/editor_resource_picker.cpp editor/import/resource_importer_wav.cpp
#: editor/plugins/polygon_2d_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
@@ -2601,7 +2582,9 @@ msgid "Remove Autoload"
msgstr "Fjern Autoload"
#: editor/editor_autoload_settings.cpp editor/editor_plugin_settings.cpp
-#: modules/gdscript/gdscript.cpp scene/2d/polygon_2d.cpp scene/3d/area.cpp
+#: modules/gdscript/gdscript.cpp platform/android/export/export_plugin.cpp
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#: scene/2d/polygon_2d.cpp scene/3d/area.cpp scene/3d/physics_joint.cpp
#: scene/3d/reflection_probe.cpp scene/main/canvas_layer.cpp
#: scene/resources/material.cpp servers/visual_server.cpp
msgid "Enable"
@@ -2776,6 +2759,60 @@ msgstr ""
#: editor/editor_export.cpp platform/android/export/export_plugin.cpp
#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Custom Template"
+msgstr "Medlemmer"
+
+#: editor/editor_export.cpp editor/project_export.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp
+msgid "Release"
+msgstr "Slipp"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Binary Format"
+msgstr "Anim Forandre Omforming"
+
+#: editor/editor_export.cpp
+msgid "64 Bits"
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Embed PCK"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Texture Format"
+msgstr "Linjal Modus"
+
+#: editor/editor_export.cpp
+msgid "BPTC"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "S3TC"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "ETC"
+msgstr "TCP"
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "ETC2"
+msgstr ""
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "No BPTC Fallbacks"
+msgstr "Tilbakefall"
+
+#: editor/editor_export.cpp platform/android/export/export_plugin.cpp
+#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
msgid "Custom debug template not found."
msgstr "Tilpasset feilsøkingsmal ble ikke funnet."
@@ -2964,6 +3001,7 @@ msgid "Make Current"
msgstr "Gjeldende:"
#: editor/editor_feature_profile.cpp editor/editor_node.cpp
+#: editor/import/resource_importer_scene.cpp
#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
msgid "Import"
msgstr "Importer"
@@ -3101,8 +3139,11 @@ msgstr "Suksess!"
msgid "Display Mode"
msgstr "Panorerings-Modus"
-#: editor/editor_file_dialog.cpp main/main.cpp modules/csg/csg_shape.cpp
-#: modules/visual_script/visual_script_nodes.cpp
+#: editor/editor_file_dialog.cpp
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+#: editor/import/resource_importer_wav.cpp main/main.cpp
+#: modules/csg/csg_shape.cpp modules/visual_script/visual_script_nodes.cpp
#: modules/visual_script/visual_script_yield_nodes.cpp scene/2d/light_2d.cpp
#: scene/2d/physics_body_2d.cpp scene/2d/tile_map.cpp
#: scene/3d/baked_lightmap.cpp scene/3d/light.cpp scene/3d/physics_body.cpp
@@ -3245,7 +3286,9 @@ msgstr "(Re)Importerer Assets"
msgid "Reimport Missing Imported Files"
msgstr ""
-#: editor/editor_help.cpp
+#: editor/editor_help.cpp scene/2d/camera_2d.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/resources/dynamic_font.cpp
+#: scene/resources/style_box.cpp
msgid "Top"
msgstr "Topp"
@@ -3301,6 +3344,7 @@ msgid "Fonts"
msgstr "Skrifttyper"
#: editor/editor_help.cpp editor/plugins/theme_editor_plugin.cpp
+#: platform/iphone/export/export.cpp
msgid "Icons"
msgstr "Ikoner"
@@ -3479,7 +3523,9 @@ msgstr ""
msgid "Pin value [Disabled because '%s' is editor-only]"
msgstr ""
-#: editor/editor_inspector.cpp editor/scene_tree_dock.cpp
+#: editor/editor_inspector.cpp
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+#: editor/scene_tree_dock.cpp
#: modules/visual_script/visual_script_func_nodes.cpp
#: modules/visual_script/visual_script_nodes.cpp
#: modules/visual_script/visual_script_property_selector.cpp
@@ -3822,6 +3868,16 @@ msgid "Quick Open Script..."
msgstr "Hurtigåpne Skript..."
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Save & Reload"
+msgstr "Lagre & Avslutt"
+
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Save changes to '%s' before reloading?"
+msgstr "Lagre endringer til '%s' før lukking?"
+
+#: editor/editor_node.cpp
msgid "Save & Close"
msgstr "Lagre og Lukk"
@@ -3936,6 +3992,11 @@ msgid "Open Project Manager?"
msgstr "Ã…pne ProsjektManager?"
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Save changes to the following scene(s) before reloading?"
+msgstr "Lagre endring til følgende scene(r) før avslutting?"
+
+#: editor/editor_node.cpp
msgid "Save & Quit"
msgstr "Lagre & Avslutt"
@@ -4214,8 +4275,8 @@ msgstr "Forandre"
#: editor/editor_node.cpp
#, fuzzy
-msgid "Translate Properties"
-msgstr "Egenskaper"
+msgid "Localize Settings"
+msgstr "Lokalisering"
#: editor/editor_node.cpp
#, fuzzy
@@ -4232,8 +4293,8 @@ msgstr "Inspektør"
#: editor/editor_node.cpp
#, fuzzy
-msgid "Capitalize Properties"
-msgstr "Egenskaper"
+msgid "Default Property Name Style"
+msgstr "Prosjektsti:"
#: editor/editor_node.cpp
msgid "Default Float Step"
@@ -4848,7 +4909,9 @@ msgstr "Installerte Plugins:"
msgid "Update"
msgstr "Oppdater"
-#: editor/editor_plugin_settings.cpp
+#: editor/editor_plugin_settings.cpp platform/android/export/export_plugin.cpp
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp
msgid "Version"
msgstr "Versjon"
@@ -5874,7 +5937,7 @@ msgstr ""
msgid "Rect Custom Position"
msgstr "Fjern Funksjon"
-#: editor/editor_settings.cpp
+#: editor/editor_settings.cpp platform/android/export/export_plugin.cpp
msgid "Screen"
msgstr ""
@@ -5901,6 +5964,19 @@ msgid "Editor SSL Certificates"
msgstr "Innstillinger for redigeringsverktøy"
#: editor/editor_settings.cpp
+msgid "HTTP Proxy"
+msgstr ""
+
+#: editor/editor_settings.cpp
+msgid "Host"
+msgstr ""
+
+#: editor/editor_settings.cpp editor/fileserver/editor_file_server.cpp
+#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp
+msgid "Port"
+msgstr ""
+
+#: editor/editor_settings.cpp
msgid "Project Manager"
msgstr "Prosjekthåndterer"
@@ -5943,7 +6019,8 @@ msgstr ""
msgid "String Color"
msgstr "Lagrer Fil:"
-#: editor/editor_settings.cpp
+#: editor/editor_settings.cpp platform/javascript/export/export.cpp
+#: platform/uwp/export/export.cpp
#, fuzzy
msgid "Background Color"
msgstr "Ugyldig navn."
@@ -6125,22 +6202,6 @@ msgid "Starting the download..."
msgstr ""
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "HTTP Proxy"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Host"
-msgstr ""
-
-#: editor/export_template_manager.cpp editor/fileserver/editor_file_server.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp main/main.cpp
-#: modules/mono/mono_gd/gd_mono.cpp
-msgid "Port"
-msgstr ""
-
-#: editor/export_template_manager.cpp
msgid "Error requesting URL:"
msgstr "Feil ved nettadresse-forespørsel:"
@@ -6412,6 +6473,7 @@ msgstr ""
#: editor/fileserver/editor_file_server.cpp
#: editor/plugins/version_control_editor_plugin.cpp
+#: platform/uwp/export/export.cpp platform/windows/export/export.cpp
msgid "Password"
msgstr ""
@@ -6812,6 +6874,117 @@ msgstr ""
msgid "Use Ambient"
msgstr ""
+#: editor/import/resource_importer_bitmask.cpp
+#, fuzzy
+msgid "Create From"
+msgstr "Opprett mappe"
+
+#: editor/import/resource_importer_bitmask.cpp
+#: servers/audio/effects/audio_effect_compressor.cpp
+msgid "Threshold"
+msgstr ""
+
+#: editor/import/resource_importer_csv_translation.cpp
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_scene.cpp
+#: editor/import/resource_importer_texture.cpp
+#: editor/import/resource_importer_wav.cpp scene/3d/gi_probe.cpp
+#, fuzzy
+msgid "Compress"
+msgstr "Komponenter"
+
+#: editor/import/resource_importer_csv_translation.cpp
+msgid "Delimiter"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+msgid "No BPTC If RGB"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/sprite_3d.cpp
+#: scene/resources/material.cpp scene/resources/particles_material.cpp
+#: scene/resources/texture.cpp
+msgid "Flags"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/animation/tween.cpp
+#: scene/resources/texture.cpp
+msgid "Repeat"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/2d/light_2d.cpp
+#: scene/gui/control.cpp scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Filter"
+msgstr "Lim inn Noder"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Mipmaps"
+msgstr "Signaler"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+msgid "Anisotropic"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+msgid "sRGB"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#, fuzzy
+msgid "Slices"
+msgstr "Alle enheter"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
+#: scene/resources/style_box.cpp
+#, fuzzy
+msgid "Horizontal"
+msgstr "Vend horisontalt"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
+#: scene/resources/style_box.cpp
+#, fuzzy
+msgid "Vertical"
+msgstr "Vend loddrett"
+
+#: editor/import/resource_importer_obj.cpp
+#, fuzzy
+msgid "Generate Tangents"
+msgstr "Fjern Punkt"
+
+#: editor/import/resource_importer_obj.cpp
+#, fuzzy
+msgid "Scale Mesh"
+msgstr "Skaler Modus"
+
+#: editor/import/resource_importer_obj.cpp
+#, fuzzy
+msgid "Offset Mesh"
+msgstr "Avstand:"
+
+#: editor/import/resource_importer_obj.cpp
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Octahedral Compression"
+msgstr "Komprimering"
+
+#: editor/import/resource_importer_obj.cpp
+#, fuzzy
+msgid "Optimize Mesh Flags"
+msgstr "Størrelse: "
+
#: editor/import/resource_importer_scene.cpp
msgid "Import as Single Scene"
msgstr "Importer som Enkel Scene"
@@ -6852,6 +7025,154 @@ msgstr "Importer som Flere Scener"
msgid "Import as Multiple Scenes+Materials"
msgstr "Importer som Flere Scener+Materialer"
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Nodes"
+msgstr "Node"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Root Type"
+msgstr "Medlemmer"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Root Name"
+msgstr "Fjern-funksjon "
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Root Scale"
+msgstr "Skala"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Custom Script"
+msgstr "Klipp ut Noder"
+
+#: editor/import/resource_importer_scene.cpp scene/resources/texture.cpp
+#, fuzzy
+msgid "Storage"
+msgstr "Lagrer Fil:"
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Use Legacy Names"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+#, fuzzy
+msgid "Materials"
+msgstr "Forandre"
+
+#: editor/import/resource_importer_scene.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Location"
+msgstr "Lokalisering"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Keep On Reimport"
+msgstr "Reimporter"
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+msgid "Meshes"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Ensure Tangents"
+msgstr "Modifiser Kurvetangent"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Light Baking"
+msgstr "Lysmapping"
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Lightmap Texel Size"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+msgid "Skins"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Use Named Skins"
+msgstr "Bruk Snap"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "External Files"
+msgstr "Ã…pne en fil"
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Store In Subdir"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Filter Script"
+msgstr "Lim inn Noder"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Keep Custom Tracks"
+msgstr "Transformer"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Optimizer"
+msgstr "Optimaliser"
+
+#: editor/import/resource_importer_scene.cpp main/main.cpp
+#: modules/mono/mono_gd/gd_mono.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp scene/2d/camera_2d.cpp scene/2d/light_2d.cpp
+#: scene/2d/navigation_polygon.cpp scene/2d/ray_cast_2d.cpp scene/2d/sprite.cpp
+#: scene/2d/y_sort.cpp scene/3d/audio_stream_player_3d.cpp
+#: scene/3d/baked_lightmap.cpp scene/3d/interpolated_camera.cpp
+#: scene/3d/light.cpp scene/3d/navigation_mesh_instance.cpp
+#: scene/3d/physics_joint.cpp scene/3d/ray_cast.cpp scene/3d/sprite_3d.cpp
+#: scene/gui/graph_edit.cpp scene/gui/rich_text_label.cpp
+#: scene/resources/curve.cpp scene/resources/environment.cpp
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Enabled"
+msgstr "Aktiver"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Max Linear Error"
+msgstr "Maks. Linær Feilmelding:"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Max Angular Error"
+msgstr "Max. Vinklet Feilmelding:"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Max Angle"
+msgstr "Verdi:"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Remove Unused Tracks"
+msgstr "Fjern Anim-Spor"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Clips"
+msgstr "Anim-klipp:"
+
+#: editor/import/resource_importer_scene.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/particles_2d.cpp scene/3d/area.cpp scene/3d/cpu_particles.cpp
+#: scene/3d/particles.cpp scene/resources/environment.cpp
+#, fuzzy
+msgid "Amount"
+msgstr "Mengde:"
+
#: editor/import/resource_importer_scene.cpp
#: editor/plugins/mesh_library_editor_plugin.cpp
msgid "Import Scene"
@@ -6894,12 +7215,148 @@ msgstr ""
msgid "Saving..."
msgstr "Lagrer..."
+#: editor/import/resource_importer_texture.cpp scene/resources/texture.cpp
+msgid "Lossy Quality"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "HDR Mode"
+msgstr "Velg Modus"
+
+#: editor/import/resource_importer_texture.cpp
+msgid "BPTC LDR"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/mesh_instance_2d.cpp scene/2d/multimesh_instance_2d.cpp
+#: scene/2d/particles_2d.cpp scene/2d/sprite.cpp scene/resources/style_box.cpp
+msgid "Normal Map"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Process"
+msgstr "Etterbehandling"
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Fix Alpha Border"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Premult Alpha"
+msgstr "Rediger Poly"
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Hdr As Srgb"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Invert Color"
+msgstr "Neste Koordinat"
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Normal Map Invert Y"
+msgstr "Tilfeldig Skala:"
+
+#: editor/import/resource_importer_texture.cpp
+#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
+#: scene/audio/audio_stream_player.cpp scene/gui/video_player.cpp
+msgid "Stream"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Size Limit"
+msgstr "Begrensninger"
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Detect 3D"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "SVG"
+msgstr "HSV"
+
#: editor/import/resource_importer_texture.cpp
msgid ""
"Warning, no suitable PC VRAM compression enabled in Project Settings. This "
"texture will not display correctly on PC."
msgstr ""
+#: editor/import/resource_importer_texture_atlas.cpp
+#, fuzzy
+msgid "Atlas File"
+msgstr "Ny %s"
+
+#: editor/import/resource_importer_texture_atlas.cpp
+#, fuzzy
+msgid "Import Mode"
+msgstr "Importer"
+
+#: editor/import/resource_importer_texture_atlas.cpp
+#, fuzzy
+msgid "Crop To Region"
+msgstr "Region"
+
+#: editor/import/resource_importer_texture_atlas.cpp
+msgid "Trim Alpha Border From Region"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp scene/2d/physics_body_2d.cpp
+msgid "Force"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+msgid "8 Bit"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp main/main.cpp
+#: modules/mono/editor/csharp_project.cpp modules/mono/mono_gd/gd_mono.cpp
+msgid "Mono"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+#, fuzzy
+msgid "Max Rate"
+msgstr "Miks-Node"
+
+#: editor/import/resource_importer_wav.cpp
+#, fuzzy
+msgid "Max Rate Hz"
+msgstr "Miks-Node"
+
+#: editor/import/resource_importer_wav.cpp
+msgid "Trim"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+#, fuzzy
+msgid "Normalize"
+msgstr "Format"
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+#, fuzzy
+msgid "Loop Mode"
+msgstr "Flytt Modus"
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+#, fuzzy
+msgid "Loop Begin"
+msgstr "Flytt Modus"
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+#, fuzzy
+msgid "Loop End"
+msgstr "Flytt Modus"
+
#: editor/import_defaults_editor.cpp
#, fuzzy
msgid "Select Importer"
@@ -6976,6 +7433,29 @@ msgstr "Kunne ikke laste ressurs."
#: editor/inspector_dock.cpp
#, fuzzy
+msgid "Property Name Style"
+msgstr "Prosjektnavn:"
+
+#: editor/inspector_dock.cpp scene/gui/color_picker.cpp
+msgid "Raw"
+msgstr "RÃ¥"
+
+#: editor/inspector_dock.cpp
+#, fuzzy
+msgid "Capitalized"
+msgstr "Stor forbokstav"
+
+#: editor/inspector_dock.cpp
+#, fuzzy
+msgid "Localized"
+msgstr "Språk"
+
+#: editor/inspector_dock.cpp
+msgid "Localization not available for current language."
+msgstr ""
+
+#: editor/inspector_dock.cpp
+#, fuzzy
msgid "Copy Properties"
msgstr "Egenskaper"
@@ -8092,18 +8572,26 @@ msgid "License (Z-A)"
msgstr "Lisens"
#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgctxt "Pagination"
msgid "First"
msgstr "Første"
-#: editor/plugins/asset_library_editor_plugin.cpp scene/gui/control.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgctxt "Pagination"
msgid "Previous"
msgstr "Forrige"
-#: editor/plugins/asset_library_editor_plugin.cpp scene/gui/control.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgctxt "Pagination"
msgid "Next"
msgstr "Neste"
#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgctxt "Pagination"
msgid "Last"
msgstr "Siste"
@@ -8356,19 +8844,19 @@ msgid ""
"margins."
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Top Left"
msgstr "Øverst til venstre"
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Top Right"
msgstr "Øverst til høyre"
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Bottom Right"
msgstr "Nederst til høyre"
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Bottom Left"
msgstr "Nederst til venstre"
@@ -9133,6 +9621,19 @@ msgstr "Bak GI Probe"
msgid "Gradient Edited"
msgstr ""
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+msgid "Swap GradientTexture2D Fill Points"
+msgstr ""
+
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+msgid "Swap Gradient Fill Points"
+msgstr ""
+
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+#, fuzzy
+msgid "Toggle Grid Snap"
+msgstr "Veksle Modus"
+
#: editor/plugins/item_list_editor_plugin.cpp
msgid "Item %d"
msgstr "Element %d"
@@ -9358,9 +9859,9 @@ msgstr ""
"Oppdater fra eksisterende scene?:\n"
"%s"
-#: editor/plugins/mesh_library_editor_plugin.cpp modules/gridmap/grid_map.cpp
+#: editor/plugins/mesh_library_editor_plugin.cpp
#, fuzzy
-msgid "Mesh Library"
+msgid "MeshLibrary"
msgstr "MeshBibliotek..."
#: editor/plugins/mesh_library_editor_plugin.cpp
@@ -10390,8 +10891,8 @@ msgstr "Koble Til Node:"
msgid "Source"
msgstr "Kilde"
-#: editor/plugins/script_text_editor.cpp scene/3d/interpolated_camera.cpp
-#: scene/animation/skeleton_ik.cpp
+#: editor/plugins/script_text_editor.cpp platform/uwp/export/export.cpp
+#: scene/3d/interpolated_camera.cpp scene/animation/skeleton_ik.cpp
msgid "Target"
msgstr "MÃ¥l"
@@ -11407,7 +11908,9 @@ msgstr "Hastighet (FPS):"
#: editor/plugins/sprite_frames_editor_plugin.cpp
#: modules/gltf/gltf_animation.cpp modules/minimp3/audio_stream_mp3.cpp
-#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp scene/2d/path_2d.cpp
+#: modules/minimp3/resource_importer_mp3.cpp
+#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp
+#: modules/stb_vorbis/resource_importer_ogg_vorbis.cpp scene/2d/path_2d.cpp
#: scene/3d/path.cpp scene/resources/animation.cpp scene/resources/material.cpp
msgid "Loop"
msgstr "Repeter"
@@ -12362,8 +12865,9 @@ msgstr "Roter Modus"
msgid "Priority"
msgstr "Prioritet"
-#: editor/plugins/tile_set_editor_plugin.cpp main/main.cpp scene/gui/button.cpp
-#: scene/gui/item_list.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp main/main.cpp
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#: scene/gui/button.cpp scene/gui/item_list.cpp
msgid "Icon"
msgstr "Ikon"
@@ -13741,10 +14245,6 @@ msgid ""
msgstr ""
#: editor/project_export.cpp
-msgid "Release"
-msgstr "Slipp"
-
-#: editor/project_export.cpp
#, fuzzy
msgid "Exporting All"
msgstr "Eksporter"
@@ -15615,6 +16115,7 @@ msgid "Change AudioStreamPlayer3D Emission Angle"
msgstr ""
#: editor/spatial_editor_gizmos.cpp modules/gltf/gltf_node.cpp
+#: platform/osx/export/export.cpp
msgid "Camera"
msgstr ""
@@ -15900,7 +16401,8 @@ msgstr ""
msgid "Use Nvidia Rect Flicker Workaround"
msgstr ""
-#: main/main.cpp platform/uwp/os_uwp.cpp
+#: main/main.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp platform/uwp/os_uwp.cpp
#, fuzzy
msgid "Display"
msgstr "Vis alle"
@@ -15961,19 +16463,6 @@ msgstr ""
msgid "Allowed"
msgstr ""
-#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp scene/2d/camera_2d.cpp
-#: scene/2d/light_2d.cpp scene/2d/navigation_polygon.cpp
-#: scene/2d/ray_cast_2d.cpp scene/2d/sprite.cpp scene/2d/y_sort.cpp
-#: scene/3d/audio_stream_player_3d.cpp scene/3d/baked_lightmap.cpp
-#: scene/3d/interpolated_camera.cpp scene/3d/light.cpp
-#: scene/3d/navigation_mesh_instance.cpp scene/3d/ray_cast.cpp
-#: scene/3d/sprite_3d.cpp scene/gui/graph_edit.cpp
-#: scene/gui/rich_text_label.cpp scene/resources/curve.cpp
-#: scene/resources/environment.cpp
-#, fuzzy
-msgid "Enabled"
-msgstr "Aktiver"
-
#: main/main.cpp
msgid "Intended Usage"
msgstr ""
@@ -16005,13 +16494,14 @@ msgstr ""
msgid "Handheld"
msgstr ""
-#: main/main.cpp
+#: main/main.cpp platform/javascript/export/export.cpp
+#: platform/uwp/export/export.cpp
#, fuzzy
msgid "Orientation"
msgstr "Ã…pne Godots nettbaserte dokumentasjon"
#: main/main.cpp scene/gui/scroll_container.cpp scene/gui/text_edit.cpp
-#: scene/main/scene_tree.cpp
+#: scene/main/scene_tree.cpp scene/register_scene_types.cpp
#, fuzzy
msgid "Common"
msgstr "Samfunn"
@@ -16053,7 +16543,7 @@ msgstr ""
#: main/main.cpp
#, fuzzy
-msgid "Frame Delay (msec)"
+msgid "Frame Delay Msec"
msgstr "Bildeutvalg"
#: main/main.cpp
@@ -16179,11 +16669,6 @@ msgstr ""
msgid "Tooltip Position Offset"
msgstr "Rotasjon Offset:"
-#: main/main.cpp modules/mono/editor/csharp_project.cpp
-#: modules/mono/mono_gd/gd_mono.cpp
-msgid "Mono"
-msgstr ""
-
#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp
#, fuzzy
msgid "Debugger Agent"
@@ -16764,7 +17249,7 @@ msgstr "Farger"
msgid "Intensity"
msgstr ""
-#: modules/gltf/gltf_light.cpp scene/2d/light_2d.cpp
+#: modules/gltf/gltf_light.cpp scene/2d/light_2d.cpp scene/3d/light.cpp
#, fuzzy
msgid "Range"
msgstr "Endre"
@@ -16909,11 +17394,6 @@ msgstr "Lys"
msgid "Use Named Skin Binds"
msgstr ""
-#: modules/gltf/gltf_state.cpp scene/3d/physics_joint.cpp
-#, fuzzy
-msgid "Nodes"
-msgstr "Node"
-
#: modules/gltf/gltf_state.cpp
#, fuzzy
msgid "Buffer Views"
@@ -16924,15 +17404,6 @@ msgid "Accessors"
msgstr ""
#: modules/gltf/gltf_state.cpp
-msgid "Meshes"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp
-#, fuzzy
-msgid "Materials"
-msgstr "Forandre"
-
-#: modules/gltf/gltf_state.cpp
#, fuzzy
msgid "Scene Name"
msgstr "Scene-Sti:"
@@ -16949,15 +17420,11 @@ msgstr "Endre navn"
msgid "Textures"
msgstr "Funksjoner"
-#: modules/gltf/gltf_state.cpp
+#: modules/gltf/gltf_state.cpp platform/uwp/export/export.cpp
msgid "Images"
msgstr ""
#: modules/gltf/gltf_state.cpp
-msgid "Skins"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp
msgid "Cameras"
msgstr ""
@@ -16993,10 +17460,15 @@ msgstr "Vis Ben"
#: modules/gridmap/grid_map.cpp
#, fuzzy
+msgid "Mesh Library"
+msgstr "MeshBibliotek..."
+
+#: modules/gridmap/grid_map.cpp
+#, fuzzy
msgid "Physics Material"
msgstr "Fysikk-Frame %"
-#: modules/gridmap/grid_map.cpp
+#: modules/gridmap/grid_map.cpp scene/3d/visual_instance.cpp
#, fuzzy
msgid "Use In Baked Light"
msgstr "Lys"
@@ -17028,6 +17500,7 @@ msgstr "I midten"
#: modules/gridmap/grid_map.cpp scene/2d/collision_object_2d.cpp
#: scene/2d/tile_map.cpp scene/3d/collision_object.cpp scene/3d/soft_body.cpp
+#: scene/resources/material.cpp
msgid "Mask"
msgstr ""
@@ -17222,7 +17695,9 @@ msgid "Ultra Quality Ray Count"
msgstr ""
#: modules/minimp3/audio_stream_mp3.cpp
+#: modules/minimp3/resource_importer_mp3.cpp
#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp
+#: modules/stb_vorbis/resource_importer_ogg_vorbis.cpp
#, fuzzy
msgid "Loop Offset"
msgstr "Avstand:"
@@ -18356,6 +18831,193 @@ msgid "The package must have at least one '.' separator."
msgstr ""
#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Use Custom Build"
+msgstr "Bruk Tilpasset Brukerkatalog"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Export Format"
+msgstr "Eksporter Prosjekt"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Keystore"
+msgstr "Feilsøkingsprogram"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Debug User"
+msgstr "Feilsøkingsprogram"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+msgid "Debug Password"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Release User"
+msgstr "Slipp"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Release Password"
+msgstr "Slipp"
+
+#: platform/android/export/export_plugin.cpp
+msgid "One Click Deploy"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Clear Previous Install"
+msgstr "Forrige fane"
+
+#: platform/android/export/export_plugin.cpp scene/resources/shader.cpp
+msgid "Code"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Min SDK"
+msgstr "Størrelse:"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Target SDK"
+msgstr "MÃ¥l FPS"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Package"
+msgstr "Pakking"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Unique Name"
+msgstr "Nodenavn:"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Signed"
+msgstr "Signal"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Classify As Game"
+msgstr "Klasse:"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Retain Data On Uninstall"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Exclude From Recents"
+msgstr "Kutt Noder"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Graphics"
+msgstr "Rutenett Offset:"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "OpenGL Debug"
+msgstr "Ã…pne"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "XR Features"
+msgstr "Funksjoner"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "XR Mode"
+msgstr "Panorerings-Modus"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Hand Tracking"
+msgstr "Pakking"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Hand Tracking Frequency"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Passthrough"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Immersive Mode"
+msgstr "Prioritet Modus"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Support Small"
+msgstr "Støtte"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Support Normal"
+msgstr "Støtte"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Support Large"
+msgstr "Støtte"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Support Xlarge"
+msgstr "Støtte"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "User Data Backup"
+msgstr "Brukergrensesnitt"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Allow"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Command Line"
+msgstr "Kommando"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Extra Args"
+msgstr "Ekstra Call Argumenter:"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "APK Expansion"
+msgstr "Gjeldende Versjon:"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Salt"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Public Key"
+msgstr "Dupliser Nøkler"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Permissions"
+msgstr "Gjeldende Versjon:"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Custom Permissions"
+msgstr "Spill av Tilpasset Scene"
+
+#: platform/android/export/export_plugin.cpp
msgid "Select device from the list"
msgstr "Velg enhet fra listen"
@@ -18660,6 +19322,177 @@ msgid "The character '%s' is not allowed in Identifier."
msgstr "Navn er ikke en gyldig identifikator:"
#: platform/iphone/export/export.cpp
+msgid "App Store Team ID"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Provisioning Profile UUID Debug"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Code Sign Identity Debug"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Export Method Debug"
+msgstr "Eksportmodus?"
+
+#: platform/iphone/export/export.cpp
+msgid "Provisioning Profile UUID Release"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Code Sign Identity Release"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Export Method Release"
+msgstr "Eksportmodus?"
+
+#: platform/iphone/export/export.cpp
+msgid "Targeted Device Family"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Info"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Identifier"
+msgstr "Navn er ikke en gyldig identifikator:"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Signature"
+msgstr "Signal"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Short Version"
+msgstr "Versjon"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Copyright"
+msgstr "Øverst til høyre"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Capabilities"
+msgstr "Egenskaper"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Access Wi-Fi"
+msgstr "Suksess!"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Push Notifications"
+msgstr "Tilfeldig Rotasjon:"
+
+#: platform/iphone/export/export.cpp scene/3d/baked_lightmap.cpp
+#, fuzzy
+msgid "User Data"
+msgstr "Brukergrensesnitt"
+
+#: platform/iphone/export/export.cpp
+msgid "Accessible From Files App"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Accessible From Itunes Sharing"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Privacy"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Camera Usage Description"
+msgstr "Beskrivelse"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Microphone Usage Description"
+msgstr "Egenskapsbeskrivelse:"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Photolibrary Usage Description"
+msgstr "Egenskapsbeskrivelse:"
+
+#: platform/iphone/export/export.cpp
+msgid "iPhone 120 X 120"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPhone 180 X 180"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 76 X 76"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 152 X 152"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 167 X 167"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "App Store 1024 X 1024"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Spotlight 40 X 40"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Spotlight 80 X 80"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Storyboard"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Use Launch Screen Storyboard"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Image Scale Mode"
+msgstr "Skaler Modus"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Custom Image @2x"
+msgstr "Klipp ut Noder"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Custom Image @3x"
+msgstr "Klipp ut Noder"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Use Custom BG Color"
+msgstr "Klipp ut Noder"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Custom BG Color"
+msgstr "Klipp ut Noder"
+
+#: platform/iphone/export/export.cpp
msgid "App Store Team ID not specified - cannot configure the project."
msgstr ""
@@ -18702,6 +19535,80 @@ msgstr "Kunne ikke opprette mappe."
#: platform/javascript/export/export.cpp
#, fuzzy
+msgid "Variant"
+msgstr "Nummereringer:"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Export Type"
+msgstr "Eksporter"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "VRAM Texture Compression"
+msgstr "Gjeldende Versjon:"
+
+#: platform/javascript/export/export.cpp
+msgid "For Desktop"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "For Mobile"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Html"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Export Icon"
+msgstr "Utvid alle"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Custom Html Shell"
+msgstr "Klipp ut Noder"
+
+#: platform/javascript/export/export.cpp
+msgid "Head Include"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Canvas Resize Policy"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Focus Canvas On Start"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Experimental Virtual Keyboard"
+msgstr "Filtrer Signaler"
+
+#: platform/javascript/export/export.cpp
+msgid "Progressive Web App"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Offline Page"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 144 X 144"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 180 X 180"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 512 X 512"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
msgid "Could not read HTML shell:"
msgstr "Kunne ikke opprette mappe."
@@ -18816,6 +19723,201 @@ msgid "Unknown object type."
msgstr ""
#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "App Category"
+msgstr "Kategori:"
+
+#: platform/osx/export/export.cpp
+msgid "High Res"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Location Usage Description"
+msgstr "Beskrivelse"
+
+#: platform/osx/export/export.cpp
+msgid "Address Book Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Calendar Usage Description"
+msgstr "Beskrivelse"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Photos Library Usage Description"
+msgstr "Egenskapsbeskrivelse:"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Desktop Folder Usage Description"
+msgstr "Metodebeskrivelse:"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Documents Folder Usage Description"
+msgstr "Metodebeskrivelse:"
+
+#: platform/osx/export/export.cpp
+msgid "Downloads Folder Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Network Volumes Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Removable Volumes Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#, fuzzy
+msgid "Codesign"
+msgstr "Node"
+
+#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Identity"
+msgstr "Innrykk Venstre"
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#, fuzzy
+msgid "Timestamp"
+msgstr "Tid"
+
+#: platform/osx/export/export.cpp
+msgid "Hardened Runtime"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Replace Existing Signature"
+msgstr "Erstatt Alle"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Entitlements"
+msgstr "Innhold:"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Custom File"
+msgstr "Klipp ut Noder"
+
+#: platform/osx/export/export.cpp
+msgid "Allow JIT Code Execution"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Allow Unsigned Executable Memory"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Allow Dyld Environment Variables"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Disable Library Validation"
+msgstr "Deaktivert"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Audio Input"
+msgstr "Legg til inndata"
+
+#: platform/osx/export/export.cpp
+msgid "Address Book"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Calendars"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Photos Library"
+msgstr "Eksporter bibliotek"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Apple Events"
+msgstr "Legg til hendelse"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Debugging"
+msgstr "Debug"
+
+#: platform/osx/export/export.cpp
+msgid "App Sandbox"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Network Server"
+msgstr "Nettverkspeer"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Network Client"
+msgstr "Nettverkspeer"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Device Usb"
+msgstr "Enhet"
+
+#: platform/osx/export/export.cpp
+msgid "Device Bluetooth"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Files Downloads"
+msgstr "Last ned"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Files Pictures"
+msgstr "Funksjoner"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Files Music"
+msgstr "Fil"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Files Movies"
+msgstr "Filtrer Filer..."
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#, fuzzy
+msgid "Custom Options"
+msgstr "Bus valg"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Notarization"
+msgstr "Lokalisering"
+
+#: platform/osx/export/export.cpp
+msgid "Apple ID Name"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Apple ID Password"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Apple Team ID"
+msgstr ""
+
+#: platform/osx/export/export.cpp
msgid ""
"Note: The notarization process generally takes less than an hour. When the "
"process is completed, you'll receive an email."
@@ -19009,6 +20111,134 @@ msgid "Force Builtin Codesign"
msgstr ""
#: platform/uwp/export/export.cpp
+msgid "Architecture"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Display Name"
+msgstr "Vis alle"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Short Name"
+msgstr "Prosjektnavn:"
+
+#: platform/uwp/export/export.cpp
+msgid "Publisher"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Publisher Display Name"
+msgstr "Ugyldig navn."
+
+#: platform/uwp/export/export.cpp
+msgid "Product Guid"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Publisher Guid"
+msgstr "Fjern Pose"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Signing"
+msgstr "Signal"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Certificate"
+msgstr "Sertifikater"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Algorithm"
+msgstr "Feilsøkingsprogram"
+
+#: platform/uwp/export/export.cpp
+msgid "Major"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Minor"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Build"
+msgstr "Linjal Modus"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Revision"
+msgstr "Gjeldende Versjon:"
+
+#: platform/uwp/export/export.cpp
+msgid "Landscape"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Portrait"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Landscape Flipped"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Portrait Flipped"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Store Logo"
+msgstr "Skaler Modus"
+
+#: platform/uwp/export/export.cpp
+msgid "Square 44 X 44 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 71 X 71 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 150 X 150 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 310 X 310 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Wide 310 X 150 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Splash Screen"
+msgstr "Ring"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Tiles"
+msgstr "Fil"
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Square 150 X 150"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Wide 310 X 150"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Square 310 X 310"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
#, fuzzy
msgid "Invalid package short name."
msgstr "Ugyldig navn."
@@ -19080,15 +20310,53 @@ msgid "Debug Certificate"
msgstr ""
#: platform/uwp/export/export.cpp
-msgid "Debug Password"
+#, fuzzy
+msgid "Debug Algorithm"
+msgstr "Feilsøkingsprogram"
+
+#: platform/windows/export/export.cpp
+msgid "Identity Type"
msgstr ""
-#: platform/uwp/export/export.cpp
+#: platform/windows/export/export.cpp
+msgid "Timestamp Server URL"
+msgstr ""
+
+#: platform/windows/export/export.cpp
#, fuzzy
-msgid "Debug Algorithm"
+msgid "Digest Algorithm"
msgstr "Feilsøkingsprogram"
#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "File Version"
+msgstr "Versjon"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Product Version"
+msgstr "Prosjektnavn:"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Company Name"
+msgstr "Nodenavn:"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Product Name"
+msgstr "Prosjektnavn:"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "File Description"
+msgstr "Beskrivelse"
+
+#: platform/windows/export/export.cpp
+msgid "Trademarks"
+msgstr ""
+
+#: platform/windows/export/export.cpp
msgid ""
"The rcedit tool must be configured in the Editor Settings (Export > Windows "
"> Rcedit) to change the icon or app information data."
@@ -19161,12 +20429,14 @@ msgstr "Spill"
msgid "Centered"
msgstr "I midten"
-#: scene/2d/animated_sprite.cpp scene/2d/camera_2d.cpp scene/2d/light_2d.cpp
+#: scene/2d/animated_sprite.cpp scene/2d/camera_2d.cpp
+#: scene/2d/cpu_particles_2d.cpp scene/2d/light_2d.cpp
#: scene/2d/parallax_background.cpp scene/2d/parallax_layer.cpp
#: scene/2d/path_2d.cpp scene/2d/polygon_2d.cpp scene/2d/sprite.cpp
-#: scene/3d/path.cpp scene/3d/physics_body.cpp scene/3d/sprite_3d.cpp
-#: scene/gui/graph_node.cpp scene/gui/rich_text_effect.cpp
-#: scene/main/canvas_layer.cpp scene/resources/material.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/path.cpp scene/3d/physics_body.cpp
+#: scene/3d/sprite_3d.cpp scene/gui/graph_node.cpp
+#: scene/gui/rich_text_effect.cpp scene/main/canvas_layer.cpp
+#: scene/resources/material.cpp scene/resources/particles_material.cpp
#: scene/resources/style_box.cpp
#, fuzzy
msgid "Offset"
@@ -19241,11 +20511,6 @@ msgstr "Legg til Audio Bus"
msgid "Override"
msgstr "Overskriv"
-#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
-#: scene/audio/audio_stream_player.cpp scene/gui/video_player.cpp
-msgid "Stream"
-msgstr ""
-
#: scene/2d/audio_stream_player_2d.cpp scene/audio/audio_stream_player.cpp
#: scene/gui/video_player.cpp servers/audio/effects/audio_effect_amplify.cpp
#, fuzzy
@@ -19272,13 +20537,13 @@ msgid "Stream Paused"
msgstr ""
#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
-#: scene/3d/reflection_probe.cpp scene/3d/visual_instance.cpp
-#: scene/resources/material.cpp
+#: scene/3d/light.cpp scene/3d/reflection_probe.cpp
+#: scene/3d/visual_instance.cpp scene/resources/material.cpp
#, fuzzy
msgid "Max Distance"
msgstr "Instans"
-#: scene/2d/audio_stream_player_2d.cpp
+#: scene/2d/audio_stream_player_2d.cpp scene/3d/light.cpp
#, fuzzy
msgid "Attenuation"
msgstr "Animasjon"
@@ -19334,6 +20599,24 @@ msgstr "Flytt Modus"
msgid "Limit"
msgstr ""
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/style_box.cpp
+#, fuzzy
+msgid "Left"
+msgstr "UI Venstre"
+
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/style_box.cpp
+#, fuzzy
+msgid "Right"
+msgstr "Lys"
+
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/dynamic_font.cpp scene/resources/style_box.cpp
+#, fuzzy
+msgid "Bottom"
+msgstr "Nederst til venstre"
+
#: scene/2d/camera_2d.cpp
#, fuzzy
msgid "Smoothed"
@@ -19551,13 +20834,6 @@ msgstr ""
msgid "Emitting"
msgstr "Innstillinger:"
-#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp scene/3d/area.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
-#: scene/resources/environment.cpp
-#, fuzzy
-msgid "Amount"
-msgstr "Mengde:"
-
#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp
#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
msgid "Lifetime"
@@ -19622,18 +20898,13 @@ msgstr ""
#: scene/2d/mesh_instance_2d.cpp scene/2d/multimesh_instance_2d.cpp
#: scene/2d/particles_2d.cpp scene/2d/polygon_2d.cpp scene/2d/sprite.cpp
#: scene/3d/sprite_3d.cpp scene/gui/nine_patch_rect.cpp
-#: scene/gui/texture_rect.cpp scene/resources/sky.cpp
-#: scene/resources/style_box.cpp scene/resources/visual_shader_nodes.cpp
+#: scene/gui/texture_rect.cpp scene/resources/material.cpp
+#: scene/resources/sky.cpp scene/resources/style_box.cpp
+#: scene/resources/visual_shader_nodes.cpp
#, fuzzy
msgid "Texture"
msgstr "Tekst"
-#: scene/2d/cpu_particles_2d.cpp scene/2d/mesh_instance_2d.cpp
-#: scene/2d/multimesh_instance_2d.cpp scene/2d/particles_2d.cpp
-#: scene/2d/sprite.cpp scene/resources/style_box.cpp
-msgid "Normal Map"
-msgstr ""
-
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
#, fuzzy
@@ -19656,10 +20927,10 @@ msgid "Normals"
msgstr "Format"
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/3d/sprite_3d.cpp scene/resources/material.cpp
-#: scene/resources/particles_material.cpp scene/resources/texture.cpp
-msgid "Flags"
-msgstr ""
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Align Y"
+msgstr "Knytt"
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
@@ -19680,6 +20951,12 @@ msgid "Initial Velocity"
msgstr "Store bokstaver"
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Velocity Random"
+msgstr "Hastighet"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp servers/physics_2d_server.cpp
#: servers/physics_server.cpp
msgid "Angular Velocity"
@@ -19687,6 +20964,12 @@ msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Velocity Curve"
+msgstr "Hastighet"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
msgid "Orbit Velocity"
msgstr ""
@@ -19698,6 +20981,23 @@ msgstr "Lineær"
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Accel"
+msgstr "Suksess!"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Accel Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Accel Curve"
+msgstr "Lukk Kurve"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
msgid "Radial Accel"
msgstr ""
@@ -19707,19 +21007,55 @@ msgid "Tangential Accel"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/2d/joints_2d.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/vehicle_body.cpp
-#: scene/resources/particles_material.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/physics_joint.cpp
+#: scene/3d/vehicle_body.cpp scene/resources/particles_material.cpp
#: servers/audio/effects/audio_effect_reverb.cpp
msgid "Damping"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+msgid "Damping Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Damping Curve"
+msgstr "Lukk Kurve"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp scene/3d/light.cpp
+#: scene/resources/particles_material.cpp
msgid "Angle"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+msgid "Angle Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Angle Curve"
+msgstr "Lukk Kurve"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#, fuzzy
+msgid "Scale Amount"
+msgstr "Mengde:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+msgid "Scale Amount Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#, fuzzy
+msgid "Scale Amount Curve"
+msgstr "Skaler Fra Peker"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
#, fuzzy
msgid "Color Ramp"
msgstr "Farger"
@@ -19735,6 +21071,48 @@ msgstr ""
msgid "Hue Variation"
msgstr "Nummereringer:"
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Variation"
+msgstr "Nummereringer:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Variation Random"
+msgstr "Nummereringer:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Variation Curve"
+msgstr "Nummereringer:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Speed Random"
+msgstr "Skala"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Speed Curve"
+msgstr "Lukk Kurve"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Offset Random"
+msgstr "Avstand:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Offset Curve"
+msgstr "Lukk Kurve"
+
#: scene/2d/joints_2d.cpp
msgid "Node A and Node B must be PhysicsBody2Ds"
msgstr ""
@@ -19766,6 +21144,7 @@ msgid "Node B"
msgstr "Node"
#: scene/2d/joints_2d.cpp scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp
+#: scene/3d/light.cpp scene/3d/physics_joint.cpp
#: scene/resources/environment.cpp
msgid "Bias"
msgstr ""
@@ -19775,7 +21154,7 @@ msgstr ""
msgid "Disable Collision"
msgstr "Deaktivert"
-#: scene/2d/joints_2d.cpp
+#: scene/2d/joints_2d.cpp scene/3d/physics_joint.cpp
msgid "Softness"
msgstr ""
@@ -19793,7 +21172,7 @@ msgstr "Store bokstaver"
msgid "Rest Length"
msgstr ""
-#: scene/2d/joints_2d.cpp scene/3d/vehicle_body.cpp
+#: scene/2d/joints_2d.cpp scene/3d/physics_joint.cpp scene/3d/vehicle_body.cpp
msgid "Stiffness"
msgstr ""
@@ -19813,7 +21192,7 @@ msgid "Texture Scale"
msgstr ""
#: scene/2d/light_2d.cpp scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp
-#: scene/resources/environment.cpp scene/resources/sky.cpp
+#: scene/3d/light.cpp scene/resources/environment.cpp scene/resources/sky.cpp
msgid "Energy"
msgstr ""
@@ -19853,12 +21232,6 @@ msgstr "Bakvisning"
msgid "Gradient Length"
msgstr "Standard"
-#: scene/2d/light_2d.cpp scene/gui/control.cpp
-#: scene/resources/navigation_mesh.cpp
-#, fuzzy
-msgid "Filter"
-msgstr "Lim inn Noder"
-
#: scene/2d/light_2d.cpp
#, fuzzy
msgid "Filter Smooth"
@@ -20273,10 +21646,6 @@ msgid "Applied Forces"
msgstr ""
#: scene/2d/physics_body_2d.cpp
-msgid "Force"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp
msgid "Torque"
msgstr ""
@@ -20292,7 +21661,7 @@ msgstr "Fysikk-Frame %"
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
#, fuzzy
-msgid "Moving platform"
+msgid "Moving Platform"
msgstr "Plattform"
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
@@ -20301,7 +21670,7 @@ msgstr ""
#: scene/2d/physics_body_2d.cpp scene/2d/touch_screen_button.cpp
#: scene/3d/physics_body.cpp scene/gui/texture_button.cpp
-#: scene/resources/line_shape_2d.cpp
+#: scene/resources/line_shape_2d.cpp scene/resources/material.cpp
#, fuzzy
msgid "Normal"
msgstr "Format"
@@ -20538,6 +21907,34 @@ msgid ""
"as parent."
msgstr ""
+#: scene/2d/visibility_notifier_2d.cpp scene/3d/visibility_notifier.cpp
+#, fuzzy
+msgid "Pause Animations"
+msgstr "Lim inn Animasjon"
+
+#: scene/2d/visibility_notifier_2d.cpp scene/3d/visibility_notifier.cpp
+msgid "Freeze Bodies"
+msgstr ""
+
+#: scene/2d/visibility_notifier_2d.cpp
+#, fuzzy
+msgid "Pause Particles"
+msgstr "Partikler"
+
+#: scene/2d/visibility_notifier_2d.cpp
+#, fuzzy
+msgid "Pause Animated Sprites"
+msgstr "Lim inn Animasjon"
+
+#: scene/2d/visibility_notifier_2d.cpp
+#, fuzzy
+msgid "Process Parent"
+msgstr "Rediger Filtre"
+
+#: scene/2d/visibility_notifier_2d.cpp
+msgid "Physics Process Parent"
+msgstr ""
+
#: scene/3d/area.cpp
msgid "Reverb Bus"
msgstr ""
@@ -20633,6 +22030,7 @@ msgid "Attenuation Filter"
msgstr ""
#: scene/3d/audio_stream_player_3d.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
#: servers/audio/effects/audio_effect_filter.cpp
msgid "Cutoff Hz"
msgstr ""
@@ -20677,11 +22075,6 @@ msgid "Octree"
msgstr "Undertre"
#: scene/3d/baked_lightmap.cpp
-#, fuzzy
-msgid "User Data"
-msgstr "Brukergrensesnitt"
-
-#: scene/3d/baked_lightmap.cpp
msgid "Finding meshes and lights"
msgstr ""
@@ -20941,6 +22334,16 @@ msgid "Ring Axis"
msgstr "Advarsler"
#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Rotate Y"
+msgstr "Roter"
+
+#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Disable Z"
+msgstr "Deaktivert"
+
+#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
msgid "Flatness"
msgstr ""
@@ -20978,16 +22381,11 @@ msgstr ""
msgid "Dynamic Range"
msgstr ""
-#: scene/3d/gi_probe.cpp
+#: scene/3d/gi_probe.cpp scene/3d/light.cpp
msgid "Normal Bias"
msgstr ""
#: scene/3d/gi_probe.cpp
-#, fuzzy
-msgid "Compress"
-msgstr "Komponenter"
-
-#: scene/3d/gi_probe.cpp
msgid "Plotting Meshes"
msgstr ""
@@ -21013,16 +22411,31 @@ msgid "Subdiv"
msgstr ""
#: scene/3d/light.cpp
+#, fuzzy
+msgid "Indirect Energy"
+msgstr "Innrykk Høyre"
+
+#: scene/3d/light.cpp
msgid "Negative"
msgstr ""
#: scene/3d/light.cpp
#, fuzzy
+msgid "Specular"
+msgstr "Linjal Modus"
+
+#: scene/3d/light.cpp
+#, fuzzy
msgid "Bake Mode"
msgstr "Bitmaske Modus"
#: scene/3d/light.cpp
#, fuzzy
+msgid "Contact"
+msgstr "Velg farge"
+
+#: scene/3d/light.cpp
+#, fuzzy
msgid "Reverse Cull Face"
msgstr "Nullstill Bus Volum"
@@ -21033,11 +22446,31 @@ msgstr "Retninger"
#: scene/3d/light.cpp
#, fuzzy
+msgid "Split 1"
+msgstr "Splitt Sti"
+
+#: scene/3d/light.cpp
+#, fuzzy
+msgid "Split 2"
+msgstr "Splitt Sti"
+
+#: scene/3d/light.cpp
+#, fuzzy
+msgid "Split 3"
+msgstr "Splitt Sti"
+
+#: scene/3d/light.cpp
+#, fuzzy
msgid "Blend Splits"
msgstr "Blend-Tid:"
#: scene/3d/light.cpp
#, fuzzy
+msgid "Bias Split Scale"
+msgstr "Bruk Snap"
+
+#: scene/3d/light.cpp
+#, fuzzy
msgid "Depth Range"
msgstr "Dybde"
@@ -21063,6 +22496,11 @@ msgstr ""
msgid "Spot"
msgstr ""
+#: scene/3d/light.cpp
+#, fuzzy
+msgid "Angle Attenuation"
+msgstr "Animasjon"
+
#: scene/3d/mesh_instance.cpp
msgid "Software Skinning"
msgstr ""
@@ -21188,6 +22626,63 @@ msgstr "Akse"
#: scene/3d/physics_body.cpp
#, fuzzy
+msgid "Linear X"
+msgstr "Lineær"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Linear Y"
+msgstr "Lineær"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Linear Z"
+msgstr "Lineær"
+
+#: scene/3d/physics_body.cpp
+msgid "Angular X"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Angular Y"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Angular Z"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Motion X"
+msgstr "Handling"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Motion Y"
+msgstr "Handling"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Motion Z"
+msgstr "Handling"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Move Lock X"
+msgstr "Flytt Modus"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Move Lock Y"
+msgstr "Flytt Modus"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Move Lock Z"
+msgstr "Flytt Modus"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
msgid "Body Offset"
msgstr "Avstand:"
@@ -21221,6 +22716,15 @@ msgid "Exclude Nodes"
msgstr "Kutt Noder"
#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Params"
+msgstr "Forandre"
+
+#: scene/3d/physics_joint.cpp
+msgid "Impulse Clamp"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit"
msgstr ""
@@ -21234,6 +22738,55 @@ msgstr "Store bokstaver"
msgid "Lower"
msgstr "Små bokstaver"
+#: scene/3d/physics_joint.cpp scene/3d/vehicle_body.cpp
+#, fuzzy
+msgid "Relaxation"
+msgstr "Nummereringer:"
+
+#: scene/3d/physics_joint.cpp
+msgid "Motor"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Target Velocity"
+msgstr "Store bokstaver"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Max Impulse"
+msgstr "Hastighet (FPS):"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit"
+msgstr "Lineær"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Upper Distance"
+msgstr "Instans"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Lower Distance"
+msgstr "Instans"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Restitution"
+msgstr "Beskrivelse"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motion"
+msgstr "Store bokstaver"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Ortho"
+msgstr "Lineær"
+
#: scene/3d/physics_joint.cpp
#, fuzzy
msgid "Upper Angle"
@@ -21246,6 +22799,16 @@ msgstr "Små bokstaver"
#: scene/3d/physics_joint.cpp
#, fuzzy
+msgid "Angular Motion"
+msgstr "Animasjon"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Angular Ortho"
+msgstr "Max. Vinklet Feilmelding:"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
msgid "Swing Span"
msgstr "Lagrer Scene"
@@ -21254,17 +22817,99 @@ msgid "Twist Span"
msgstr ""
#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit X"
+msgstr "Lineær"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motor X"
+msgstr "Store bokstaver"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Force Limit"
+msgstr "Ring"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Spring X"
+msgstr "Lineær"
+
+#: scene/3d/physics_joint.cpp
+msgid "Equilibrium Point"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit X"
msgstr ""
#: scene/3d/physics_joint.cpp
+msgid "Erp"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Motor X"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Spring X"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit Y"
+msgstr "Lineær"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motor Y"
+msgstr "Store bokstaver"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Spring Y"
+msgstr "Lineær"
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit Y"
msgstr ""
#: scene/3d/physics_joint.cpp
+msgid "Angular Motor Y"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Spring Y"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit Z"
+msgstr "Lineær"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motor Z"
+msgstr "Store bokstaver"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Spring Z"
+msgstr "Lineær"
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit Z"
msgstr ""
+#: scene/3d/physics_joint.cpp
+msgid "Angular Motor Z"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Spring Z"
+msgstr ""
+
#: scene/3d/portal.cpp
msgid "The RoomManager should not be a child or grandchild of a Portal."
msgstr ""
@@ -21381,7 +23026,7 @@ msgstr ""
msgid "Use Default Simplify"
msgstr ""
-#: scene/3d/room.cpp
+#: scene/3d/room.cpp scene/3d/room_manager.cpp
msgid "Room Simplify"
msgstr ""
@@ -21420,6 +23065,13 @@ msgstr ""
msgid "Main"
msgstr ""
+#: scene/3d/room_manager.cpp scene/animation/animation_player.cpp
+#: scene/animation/animation_tree.cpp scene/animation/animation_tree_player.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+#, fuzzy
+msgid "Active"
+msgstr "Handling"
+
#: scene/3d/room_manager.cpp
msgid "Roomlist"
msgstr ""
@@ -21444,6 +23096,54 @@ msgid "Gameplay"
msgstr ""
#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Gameplay Monitor"
+msgstr "Skjerm"
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Use Secondary PVS"
+msgstr "Bruk Snap"
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Merge Meshes"
+msgstr "Lim inn Noder"
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Show Margins"
+msgstr "Vis Rutenett"
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Debug Sprawl"
+msgstr "Avlus"
+
+#: scene/3d/room_manager.cpp
+msgid "Overlap Warning Threshold"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Preview Camera"
+msgstr "Forhåndvisning"
+
+#: scene/3d/room_manager.cpp
+msgid "Portal Depth Limit"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Default Portal Margin"
+msgstr "Sett Handle"
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Roaming Expansion Margin"
+msgstr "Utvid alle"
+
+#: scene/3d/room_manager.cpp
msgid ""
"RoomList path is invalid.\n"
"Please check the RoomList branch has been assigned in the RoomManager."
@@ -21566,6 +23266,21 @@ msgstr ""
msgid "Billboard"
msgstr ""
+#: scene/3d/sprite_3d.cpp scene/resources/material.cpp
+#, fuzzy
+msgid "Transparent"
+msgstr "Transposer"
+
+#: scene/3d/sprite_3d.cpp
+#, fuzzy
+msgid "Shaded"
+msgstr "Forandre"
+
+#: scene/3d/sprite_3d.cpp
+#, fuzzy
+msgid "Double Sided"
+msgstr "Dobbelklikk"
+
#: scene/3d/sprite_3d.cpp
msgid "Alpha Cut"
msgstr ""
@@ -21635,11 +23350,6 @@ msgstr "Gjeldende Versjon:"
msgid "Max Force"
msgstr "Feil!"
-#: scene/3d/vehicle_body.cpp
-#, fuzzy
-msgid "Relaxation"
-msgstr "Nummereringer:"
-
#: scene/3d/visibility_notifier.cpp
msgid "AABB"
msgstr ""
@@ -21776,7 +23486,7 @@ msgstr "X-Fade Tid (s):"
#: scene/animation/animation_blend_tree.cpp
#, fuzzy
-msgid "autorestart_"
+msgid "Auto Restart"
msgstr "Start Om Igjen Automatisk:"
#: scene/animation/animation_blend_tree.cpp
@@ -21862,13 +23572,6 @@ msgstr "Alternativer for klasse:"
msgid "Default Blend Time"
msgstr "Standard"
-#: scene/animation/animation_player.cpp scene/animation/animation_tree.cpp
-#: scene/animation/animation_tree_player.cpp
-#: servers/audio/effects/audio_effect_delay.cpp
-#, fuzzy
-msgid "Active"
-msgstr "Handling"
-
#: scene/animation/animation_player.cpp
msgid "Method Call Mode"
msgstr ""
@@ -21994,10 +23697,6 @@ msgstr "Lag Node"
msgid "Max Iterations"
msgstr "Lag Funksjon"
-#: scene/animation/tween.cpp scene/resources/texture.cpp
-msgid "Repeat"
-msgstr ""
-
#: scene/animation/tween.cpp
msgid "Playback Process Mode"
msgstr ""
@@ -22028,20 +23727,6 @@ msgstr "Velg Modus"
msgid "Alignment"
msgstr ""
-#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
-#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
-#: scene/resources/style_box.cpp
-#, fuzzy
-msgid "Horizontal"
-msgstr "Vend horisontalt"
-
-#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
-#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
-#: scene/resources/style_box.cpp
-#, fuzzy
-msgid "Vertical"
-msgstr "Vend loddrett"
-
#: scene/gui/base_button.cpp
#, fuzzy
msgid "Shortcut In Tooltip"
@@ -22140,10 +23825,6 @@ msgid "HSV"
msgstr "HSV"
#: scene/gui/color_picker.cpp
-msgid "Raw"
-msgstr "RÃ¥"
-
-#: scene/gui/color_picker.cpp
msgid "Switch between hexadecimal and code values."
msgstr ""
@@ -22204,6 +23885,31 @@ msgid "Focus"
msgstr "Fokuser Bane"
#: scene/gui/control.cpp
+msgid "Neighbour Left"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Neighbour Top"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Neighbour Right"
+msgstr ""
+
+#: scene/gui/control.cpp
+#, fuzzy
+msgid "Neighbour Bottom"
+msgstr "Plasser Utvalg I Midten"
+
+#: scene/gui/control.cpp
+msgid "Next"
+msgstr "Neste"
+
+#: scene/gui/control.cpp
+msgid "Previous"
+msgstr "Forrige"
+
+#: scene/gui/control.cpp
msgid "Mouse"
msgstr ""
@@ -22240,7 +23946,7 @@ msgid "Dialog"
msgstr ""
#: scene/gui/dialogs.cpp
-msgid "Hide On Ok"
+msgid "Hide On OK"
msgstr ""
#: scene/gui/dialogs.cpp scene/gui/label.cpp
@@ -22340,7 +24046,7 @@ msgid "Timers"
msgstr "Tid"
#: scene/gui/item_list.cpp scene/gui/popup_menu.cpp scene/gui/tree.cpp
-msgid "Incremental Search Max Interval (msec)"
+msgid "Incremental Search Max Interval Msec"
msgstr ""
#: scene/gui/item_list.cpp scene/gui/tree.cpp
@@ -22910,6 +24616,26 @@ msgstr "I midten til venstre"
msgid "Nine Patch Stretch"
msgstr "Interpolasjonsmodus"
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Left"
+msgstr "Sett Handle"
+
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Top"
+msgstr "Sett Handle"
+
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Right"
+msgstr "Sett Handle"
+
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Bottom"
+msgstr "Velg Modus"
+
#: scene/gui/tree.cpp
msgid "Custom Minimum Height"
msgstr ""
@@ -22947,8 +24673,9 @@ msgid "Paused"
msgstr ""
#: scene/gui/video_player.cpp
-msgid "Buffering (msec)"
-msgstr ""
+#, fuzzy
+msgid "Buffering Msec"
+msgstr "Bakvisning"
#: scene/gui/video_player.cpp
#, fuzzy
@@ -23295,6 +25022,22 @@ msgid "Shadow Atlas"
msgstr "Ny %s"
#: scene/main/viewport.cpp
+msgid "Quad 0"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 1"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 2"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 3"
+msgstr ""
+
+#: scene/main/viewport.cpp
#, fuzzy
msgid "Canvas Transform"
msgstr "Nullstill Transformasjon"
@@ -23309,6 +25052,11 @@ msgid "Tooltip Delay (sec)"
msgstr ""
#: scene/register_scene_types.cpp
+#, fuzzy
+msgid "Swap OK Cancel"
+msgstr "UI Avbryt"
+
+#: scene/register_scene_types.cpp
msgid "Use hiDPI"
msgstr ""
@@ -23323,21 +25071,6 @@ msgid "Custom Font"
msgstr "Klipp ut Noder"
#: scene/resources/audio_stream_sample.cpp
-#, fuzzy
-msgid "Loop Mode"
-msgstr "Flytt Modus"
-
-#: scene/resources/audio_stream_sample.cpp
-#, fuzzy
-msgid "Loop Begin"
-msgstr "Flytt Modus"
-
-#: scene/resources/audio_stream_sample.cpp
-#, fuzzy
-msgid "Loop End"
-msgstr "Flytt Modus"
-
-#: scene/resources/audio_stream_sample.cpp
#: servers/audio/effects/audio_stream_generator.cpp servers/audio_server.cpp
#, fuzzy
msgid "Mix Rate"
@@ -23395,6 +25128,17 @@ msgstr "Beskrivelse:"
#: scene/resources/dynamic_font.cpp
#, fuzzy
+msgid "Char"
+msgstr "Gyldige karakterer:"
+
+#: scene/resources/dynamic_font.cpp scene/resources/world.cpp
+#: scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Space"
+msgstr "Ring"
+
+#: scene/resources/dynamic_font.cpp
+#, fuzzy
msgid "Font"
msgstr "Skrifttyper"
@@ -23620,6 +25364,45 @@ msgid "Glow"
msgstr ""
#: scene/resources/environment.cpp
+#, fuzzy
+msgid "Levels"
+msgstr "Utviklere"
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "1"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+#, fuzzy
+msgid "2"
+msgstr "2D"
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+#, fuzzy
+msgid "3"
+msgstr "3D"
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "4"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "5"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "6"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "7"
+msgstr ""
+
+#: scene/resources/environment.cpp
msgid "Bloom"
msgstr ""
@@ -23712,9 +25495,66 @@ msgid "Next Pass"
msgstr "Neste fane"
#: scene/resources/material.cpp
+msgid "Use Shadow To Opacity"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Unshaded"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Vertex Lighting"
+msgstr "Retninger"
+
+#: scene/resources/material.cpp
+msgid "No Depth Test"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Use Point Size"
+msgstr "Frontvisning"
+
+#: scene/resources/material.cpp
+msgid "World Triplanar"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Fixed Size"
+msgstr "Frontvisning"
+
+#: scene/resources/material.cpp
+msgid "Albedo Tex Force sRGB"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Do Not Receive Shadows"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Disable Ambient Light"
+msgstr "Innrykk Høyre"
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Ensure Correct Normals"
+msgstr "Lag Poly"
+
+#: scene/resources/material.cpp
msgid "Vertex Color"
msgstr ""
+#: scene/resources/material.cpp
+msgid "Use As Albedo"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Is sRGB"
+msgstr ""
+
#: scene/resources/material.cpp servers/visual_server.cpp
#, fuzzy
msgid "Parameters"
@@ -23751,6 +25591,11 @@ msgid "Billboard Mode"
msgstr "Linjal Modus"
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Billboard Keep Scale"
+msgstr "Linjal Modus"
+
+#: scene/resources/material.cpp
msgid "Grow"
msgstr ""
@@ -23760,6 +25605,10 @@ msgid "Grow Amount"
msgstr "Mengde:"
#: scene/resources/material.cpp
+msgid "Use Alpha Scissor"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Alpha Scissor Threshold"
msgstr ""
@@ -23791,10 +25640,20 @@ msgid "Metallic Specular"
msgstr ""
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Metallic Texture"
+msgstr "Fjern Mal"
+
+#: scene/resources/material.cpp
msgid "Metallic Texture Channel"
msgstr ""
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Roughness Texture"
+msgstr "Fjern Mal"
+
+#: scene/resources/material.cpp
msgid "Roughness Texture Channel"
msgstr ""
@@ -23812,6 +25671,16 @@ msgid "Emission Operator"
msgstr ""
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Emission On UV2"
+msgstr "Gjeldende Versjon:"
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Emission Texture"
+msgstr "Tekst"
+
+#: scene/resources/material.cpp
msgid "NormalMap"
msgstr ""
@@ -23826,6 +25695,11 @@ msgstr "Tilfeldig Tilt:"
#: scene/resources/material.cpp
#, fuzzy
+msgid "Rim Texture"
+msgstr "Fjern Mal"
+
+#: scene/resources/material.cpp
+#, fuzzy
msgid "Clearcoat"
msgstr "Tøm"
@@ -23835,15 +25709,28 @@ msgid "Clearcoat Gloss"
msgstr "Fjern Posering"
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Clearcoat Texture"
+msgstr "Medlemmer"
+
+#: scene/resources/material.cpp
msgid "Anisotropy"
msgstr ""
#: scene/resources/material.cpp
+msgid "Anisotropy Flowmap"
+msgstr ""
+
+#: scene/resources/material.cpp
#, fuzzy
msgid "Ambient Occlusion"
msgstr "Rediger Poly"
#: scene/resources/material.cpp
+msgid "On UV2"
+msgstr ""
+
+#: scene/resources/material.cpp
#, fuzzy
msgid "Texture Channel"
msgstr "Linjal Modus"
@@ -23882,6 +25769,11 @@ msgstr "Overgang: "
#: scene/resources/material.cpp
#, fuzzy
+msgid "Transmission Texture"
+msgstr "Overgang: "
+
+#: scene/resources/material.cpp
+#, fuzzy
msgid "Refraction"
msgstr "Nummereringer:"
@@ -23899,6 +25791,10 @@ msgid "UV1"
msgstr ""
#: scene/resources/material.cpp
+msgid "Triplanar"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Triplanar Sharpness"
msgstr ""
@@ -24103,6 +25999,16 @@ msgstr "Medlemmer"
msgid "Point Count"
msgstr "Legg til Input"
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Scale Random"
+msgstr "Skaler Størrelsesforhold:"
+
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Scale Curve"
+msgstr "Lukk Kurve"
+
#: scene/resources/physics_material.cpp
msgid "Rough"
msgstr ""
@@ -24164,10 +26070,6 @@ msgid "A"
msgstr ""
#: scene/resources/shader.cpp
-msgid "Code"
-msgstr ""
-
-#: scene/resources/shader.cpp
#, fuzzy
msgid "Custom Defines"
msgstr "Spill av Tilpasset Scene"
@@ -24262,15 +26164,6 @@ msgstr ""
#: scene/resources/texture.cpp
#, fuzzy
-msgid "Storage"
-msgstr "Lagrer Fil:"
-
-#: scene/resources/texture.cpp
-msgid "Lossy Quality"
-msgstr ""
-
-#: scene/resources/texture.cpp
-#, fuzzy
msgid "Load Path"
msgstr "Åpne forhåndsinnstilling"
@@ -24400,11 +26293,6 @@ msgstr "Ugyldig sammenligningsfunksjon for den typen."
msgid "Fallback Environment"
msgstr ""
-#: scene/resources/world.cpp scene/resources/world_2d.cpp
-#, fuzzy
-msgid "Space"
-msgstr "Ring"
-
#: scene/resources/world.cpp
#, fuzzy
msgid "Scenario"
@@ -24485,10 +26373,37 @@ msgstr ""
msgid "Wet"
msgstr ""
-#: servers/audio/effects/audio_effect_compressor.cpp
-msgid "Threshold"
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "Voice"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+msgid "Delay (ms)"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_phaser.cpp
+msgid "Rate Hz"
msgstr ""
+#: servers/audio/effects/audio_effect_chorus.cpp
+#, fuzzy
+msgid "Depth (ms)"
+msgstr "Dybde"
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+msgid "Level dB"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+#: servers/audio/effects/audio_effect_panner.cpp
+#, fuzzy
+msgid "Pan"
+msgstr "Pakking"
+
#: servers/audio/effects/audio_effect_compressor.cpp
#: servers/audio/effects/audio_effect_filter.cpp
msgid "Gain"
@@ -24512,20 +26427,6 @@ msgid "Tap 1"
msgstr ""
#: servers/audio/effects/audio_effect_delay.cpp
-msgid "Delay (ms)"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_delay.cpp
-msgid "Level dB"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_delay.cpp
-#: servers/audio/effects/audio_effect_panner.cpp
-#, fuzzy
-msgid "Pan"
-msgstr "Pakking"
-
-#: servers/audio/effects/audio_effect_delay.cpp
msgid "Tap 2"
msgstr ""
@@ -24586,10 +26487,6 @@ msgstr ""
msgid "Range Max Hz"
msgstr ""
-#: servers/audio/effects/audio_effect_phaser.cpp
-msgid "Rate Hz"
-msgstr ""
-
#: servers/audio/effects/audio_effect_pitch_shift.cpp
msgid "Oversampling"
msgstr ""
@@ -24605,7 +26502,7 @@ msgid "Predelay"
msgstr ""
#: servers/audio/effects/audio_effect_reverb.cpp
-msgid "(msec)"
+msgid "Msec"
msgstr ""
#: servers/audio/effects/audio_effect_reverb.cpp
diff --git a/editor/translations/nl.po b/editor/translations/nl.po
index 4b16de9877..44d575ed4b 100644
--- a/editor/translations/nl.po
+++ b/editor/translations/nl.po
@@ -74,7 +74,7 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 4.12-dev\n"
-#: core/bind/core_bind.cpp
+#: core/bind/core_bind.cpp main/main.cpp
msgid "Tablet Driver"
msgstr ""
@@ -178,8 +178,8 @@ msgstr "Tabbladpositie"
#: core/bind/core_bind.cpp editor/editor_settings.cpp main/main.cpp
#: modules/gdscript/gdscript_editor.cpp modules/gridmap/grid_map.cpp
#: modules/mono/csharp_script.cpp modules/visual_script/visual_script_nodes.cpp
-#: scene/2d/tile_map.cpp scene/3d/camera.cpp scene/gui/control.cpp
-#: scene/gui/graph_edit.cpp scene/main/viewport.cpp
+#: scene/2d/tile_map.cpp scene/3d/camera.cpp scene/3d/light.cpp
+#: scene/gui/control.cpp scene/gui/graph_edit.cpp scene/main/viewport.cpp
#: scene/resources/dynamic_font.cpp scene/resources/navigation_mesh.cpp
#: scene/resources/primitive_meshes.cpp scene/resources/sky.cpp
#: scene/resources/style_box.cpp scene/resources/texture.cpp
@@ -283,8 +283,7 @@ msgid "Data"
msgstr ""
#: core/io/file_access_network.cpp core/register_core_types.cpp
-#: editor/editor_settings.cpp editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp main/main.cpp
+#: editor/editor_settings.cpp main/main.cpp
#: modules/gdscript/language_server/gdscript_language_server.cpp
#, fuzzy
msgid "Network"
@@ -569,9 +568,10 @@ msgstr "Voorinstellingen"
msgid "Relative"
msgstr "Relatief kleven"
-#: core/os/input_event.cpp scene/2d/camera_2d.cpp
-#: scene/3d/interpolated_camera.cpp scene/animation/animation_player.cpp
-#: scene/resources/environment.cpp
+#: core/os/input_event.cpp scene/2d/camera_2d.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/interpolated_camera.cpp
+#: scene/animation/animation_player.cpp scene/resources/environment.cpp
+#: scene/resources/particles_material.cpp
#, fuzzy
msgid "Speed"
msgstr "Snelheid:"
@@ -621,8 +621,9 @@ msgstr "Commit veranderingen"
msgid "Pitch"
msgstr "Pitch"
-#: core/os/input_event.cpp scene/2d/physics_body_2d.cpp
-#: scene/3d/physics_body.cpp
+#: core/os/input_event.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/physics_body_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/3d/physics_body.cpp scene/resources/particles_material.cpp
#, fuzzy
msgid "Velocity"
msgstr "Initialiseren"
@@ -641,6 +642,8 @@ msgid "Controller Value"
msgstr ""
#: core/project_settings.cpp editor/editor_node.cpp main/main.cpp
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/windows/export/export.cpp
#, fuzzy
msgid "Application"
msgstr "Actie"
@@ -659,13 +662,16 @@ msgstr "Projectinstellingen..."
#: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp
#: editor/editor_plugin_settings.cpp editor/editor_profiler.cpp
#: editor/project_manager.cpp editor/settings_config_dialog.cpp
-#: modules/gdnative/nativescript/nativescript.cpp scene/2d/area_2d.cpp
-#: scene/3d/area.cpp scene/main/node.cpp
+#: modules/gdnative/nativescript/nativescript.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/osx/export/export.cpp scene/2d/area_2d.cpp scene/3d/area.cpp
+#: scene/main/node.cpp
msgid "Name"
msgstr "Naam"
#: core/project_settings.cpp editor/editor_help.cpp
-#: modules/visual_script/visual_script_nodes.cpp
+#: modules/visual_script/visual_script_nodes.cpp platform/uwp/export/export.cpp
+#: platform/windows/export/export.cpp
msgid "Description"
msgstr "Beschrijving"
@@ -703,7 +709,7 @@ msgid "Custom User Dir Name"
msgstr ""
#: core/project_settings.cpp editor/animation_track_editor.cpp
-#: editor/editor_audio_buses.cpp servers/audio_server.cpp
+#: editor/editor_audio_buses.cpp main/main.cpp servers/audio_server.cpp
msgid "Audio"
msgstr "Audio"
@@ -871,10 +877,13 @@ msgstr "Filters:"
msgid "Sharpen Intensity"
msgstr ""
-#: core/project_settings.cpp editor/editor_node.cpp editor/editor_settings.cpp
-#: editor/plugins/script_editor_plugin.cpp editor/project_export.cpp
-#: main/main.cpp modules/gdscript/gdscript.cpp
-#: modules/visual_script/visual_script.cpp scene/3d/room_manager.cpp
+#: core/project_settings.cpp editor/editor_export.cpp editor/editor_node.cpp
+#: editor/editor_settings.cpp editor/plugins/script_editor_plugin.cpp
+#: editor/project_export.cpp main/main.cpp modules/gdscript/gdscript.cpp
+#: modules/visual_script/visual_script.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp scene/3d/room_manager.cpp
#: scene/main/scene_tree.cpp scene/resources/shape_2d.cpp
#: servers/visual_server.cpp
msgid "Debug"
@@ -1110,6 +1119,7 @@ msgid "Subsurface Scattering"
msgstr ""
#: drivers/gles3/rasterizer_scene_gles3.cpp
+#: editor/import/resource_importer_texture.cpp
#: editor/plugins/spatial_editor_plugin.cpp modules/gltf/gltf_node.cpp
#: modules/gridmap/grid_map.cpp scene/2d/cpu_particles_2d.cpp
#: scene/2d/node_2d.cpp scene/2d/parallax_layer.cpp scene/2d/polygon_2d.cpp
@@ -1408,6 +1418,7 @@ msgid "Editors"
msgstr "Editor"
#: editor/animation_track_editor.cpp editor/editor_settings.cpp
+#: editor/import/resource_importer_scene.cpp
#: editor/plugins/animation_player_editor_plugin.cpp editor/scene_tree_dock.cpp
#: scene/2d/animated_sprite.cpp scene/2d/cpu_particles_2d.cpp
#: scene/2d/sprite.cpp scene/3d/cpu_particles.cpp scene/3d/sprite_3d.cpp
@@ -1642,14 +1653,14 @@ msgstr "Animatie stap waarde."
msgid "Seconds"
msgstr "Seconden"
-#: editor/animation_track_editor.cpp
+#: editor/animation_track_editor.cpp editor/import/resource_importer_scene.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp main/main.cpp
#: scene/resources/texture.cpp
msgid "FPS"
msgstr "FPS"
#: editor/animation_track_editor.cpp editor/editor_plugin_settings.cpp
-#: editor/editor_resource_picker.cpp
+#: editor/editor_resource_picker.cpp editor/import/resource_importer_wav.cpp
#: editor/plugins/polygon_2d_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
@@ -2617,7 +2628,9 @@ msgid "Remove Autoload"
msgstr "Autoload verwijderen"
#: editor/editor_autoload_settings.cpp editor/editor_plugin_settings.cpp
-#: modules/gdscript/gdscript.cpp scene/2d/polygon_2d.cpp scene/3d/area.cpp
+#: modules/gdscript/gdscript.cpp platform/android/export/export_plugin.cpp
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#: scene/2d/polygon_2d.cpp scene/3d/area.cpp scene/3d/physics_joint.cpp
#: scene/3d/reflection_probe.cpp scene/main/canvas_layer.cpp
#: scene/resources/material.cpp servers/visual_server.cpp
msgid "Enable"
@@ -2786,6 +2799,58 @@ msgstr ""
#: editor/editor_export.cpp platform/android/export/export_plugin.cpp
#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Custom Template"
+msgstr "Bewerk Thema"
+
+#: editor/editor_export.cpp editor/project_export.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp
+msgid "Release"
+msgstr "Release"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Binary Format"
+msgstr "Color operator."
+
+#: editor/editor_export.cpp
+msgid "64 Bits"
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Embed PCK"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Texture Format"
+msgstr "TextureRegion"
+
+#: editor/editor_export.cpp
+msgid "BPTC"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "S3TC"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "ETC"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "ETC2"
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "No BPTC Fallbacks"
+msgstr ""
+
+#: editor/editor_export.cpp platform/android/export/export_plugin.cpp
+#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
msgid "Custom debug template not found."
msgstr "Aangepast debug pakket niet gevonden."
@@ -2970,6 +3035,7 @@ msgid "Make Current"
msgstr "Aktualiseren"
#: editor/editor_feature_profile.cpp editor/editor_node.cpp
+#: editor/import/resource_importer_scene.cpp
#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
msgid "Import"
msgstr "Importeren"
@@ -3099,8 +3165,11 @@ msgstr "Gelukt!"
msgid "Display Mode"
msgstr "Afspeelmodus:"
-#: editor/editor_file_dialog.cpp main/main.cpp modules/csg/csg_shape.cpp
-#: modules/visual_script/visual_script_nodes.cpp
+#: editor/editor_file_dialog.cpp
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+#: editor/import/resource_importer_wav.cpp main/main.cpp
+#: modules/csg/csg_shape.cpp modules/visual_script/visual_script_nodes.cpp
#: modules/visual_script/visual_script_yield_nodes.cpp scene/2d/light_2d.cpp
#: scene/2d/physics_body_2d.cpp scene/2d/tile_map.cpp
#: scene/3d/baked_lightmap.cpp scene/3d/light.cpp scene/3d/physics_body.cpp
@@ -3239,7 +3308,9 @@ msgstr "Bronnen (her)importeren"
msgid "Reimport Missing Imported Files"
msgstr ""
-#: editor/editor_help.cpp
+#: editor/editor_help.cpp scene/2d/camera_2d.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/resources/dynamic_font.cpp
+#: scene/resources/style_box.cpp
msgid "Top"
msgstr "Boven"
@@ -3291,6 +3362,7 @@ msgid "Fonts"
msgstr "Lettertypes"
#: editor/editor_help.cpp editor/plugins/theme_editor_plugin.cpp
+#: platform/iphone/export/export.cpp
msgid "Icons"
msgstr "Iconen"
@@ -3461,7 +3533,9 @@ msgstr ""
msgid "Pin value [Disabled because '%s' is editor-only]"
msgstr "Pin waarde [Uitgeschakeld omdat '%s' enkel voor in de editor is]"
-#: editor/editor_inspector.cpp editor/scene_tree_dock.cpp
+#: editor/editor_inspector.cpp
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+#: editor/scene_tree_dock.cpp
#: modules/visual_script/visual_script_func_nodes.cpp
#: modules/visual_script/visual_script_nodes.cpp
#: modules/visual_script/visual_script_property_selector.cpp
@@ -3804,6 +3878,16 @@ msgid "Quick Open Script..."
msgstr "Script snel openen..."
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Save & Reload"
+msgstr "Opslaan & Herstarten"
+
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Save changes to '%s' before reloading?"
+msgstr "Sla wijzigen aan '%s' op voor het afsluiten?"
+
+#: editor/editor_node.cpp
msgid "Save & Close"
msgstr "Opslaan & Sluiten"
@@ -3922,6 +4006,11 @@ msgid "Open Project Manager?"
msgstr "Open Projectbeheer?"
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Save changes to the following scene(s) before reloading?"
+msgstr "Wijzigen aan de volgende scène(s) opslaan voor het afsluiten?"
+
+#: editor/editor_node.cpp
msgid "Save & Quit"
msgstr "Opslaan & Afsluiten"
@@ -4195,8 +4284,8 @@ msgstr "Materiaal Wijzigingen"
#: editor/editor_node.cpp
#, fuzzy
-msgid "Translate Properties"
-msgstr "Plakken Eigenschappen"
+msgid "Localize Settings"
+msgstr "Lokalisatie"
#: editor/editor_node.cpp
#, fuzzy
@@ -4213,8 +4302,8 @@ msgstr "Inspecteur"
#: editor/editor_node.cpp
#, fuzzy
-msgid "Capitalize Properties"
-msgstr "Plakken Eigenschappen"
+msgid "Default Property Name Style"
+msgstr "Projectpad:"
#: editor/editor_node.cpp
msgid "Default Float Step"
@@ -4818,7 +4907,9 @@ msgstr "Geïnstalleerde Plug-ins:"
msgid "Update"
msgstr "Update"
-#: editor/editor_plugin_settings.cpp
+#: editor/editor_plugin_settings.cpp platform/android/export/export_plugin.cpp
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp
msgid "Version"
msgstr "Versie"
@@ -5853,7 +5944,7 @@ msgstr "Volledige rechthoek"
msgid "Rect Custom Position"
msgstr "Set Curve Uit Positie"
-#: editor/editor_settings.cpp
+#: editor/editor_settings.cpp platform/android/export/export_plugin.cpp
msgid "Screen"
msgstr ""
@@ -5880,6 +5971,19 @@ msgid "Editor SSL Certificates"
msgstr "Editor Instellingen"
#: editor/editor_settings.cpp
+msgid "HTTP Proxy"
+msgstr ""
+
+#: editor/editor_settings.cpp
+msgid "Host"
+msgstr ""
+
+#: editor/editor_settings.cpp editor/fileserver/editor_file_server.cpp
+#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp
+msgid "Port"
+msgstr ""
+
+#: editor/editor_settings.cpp
msgid "Project Manager"
msgstr "Projectbeheer"
@@ -5922,7 +6026,8 @@ msgstr ""
msgid "String Color"
msgstr "Bestand Opslaan:"
-#: editor/editor_settings.cpp
+#: editor/editor_settings.cpp platform/javascript/export/export.cpp
+#: platform/uwp/export/export.cpp
#, fuzzy
msgid "Background Color"
msgstr "Ongeldige achtergrondkleur."
@@ -6104,22 +6209,6 @@ msgid "Starting the download..."
msgstr "Starten van de download..."
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "HTTP Proxy"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Host"
-msgstr ""
-
-#: editor/export_template_manager.cpp editor/fileserver/editor_file_server.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp main/main.cpp
-#: modules/mono/mono_gd/gd_mono.cpp
-msgid "Port"
-msgstr ""
-
-#: editor/export_template_manager.cpp
msgid "Error requesting URL:"
msgstr "Fout bij het opvragen van de URL:"
@@ -6388,6 +6477,7 @@ msgstr ""
#: editor/fileserver/editor_file_server.cpp
#: editor/plugins/version_control_editor_plugin.cpp
+#: platform/uwp/export/export.cpp platform/windows/export/export.cpp
msgid "Password"
msgstr "Wachtwoord"
@@ -6767,6 +6857,117 @@ msgstr ""
msgid "Use Ambient"
msgstr ""
+#: editor/import/resource_importer_bitmask.cpp
+#, fuzzy
+msgid "Create From"
+msgstr "Map maken"
+
+#: editor/import/resource_importer_bitmask.cpp
+#: servers/audio/effects/audio_effect_compressor.cpp
+msgid "Threshold"
+msgstr ""
+
+#: editor/import/resource_importer_csv_translation.cpp
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_scene.cpp
+#: editor/import/resource_importer_texture.cpp
+#: editor/import/resource_importer_wav.cpp scene/3d/gi_probe.cpp
+#, fuzzy
+msgid "Compress"
+msgstr "Componenten"
+
+#: editor/import/resource_importer_csv_translation.cpp
+msgid "Delimiter"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+msgid "No BPTC If RGB"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/sprite_3d.cpp
+#: scene/resources/material.cpp scene/resources/particles_material.cpp
+#: scene/resources/texture.cpp
+msgid "Flags"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/animation/tween.cpp
+#: scene/resources/texture.cpp
+msgid "Repeat"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/2d/light_2d.cpp
+#: scene/gui/control.cpp scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Filter"
+msgstr "Filters:"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Mipmaps"
+msgstr "Signalen"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+msgid "Anisotropic"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+msgid "sRGB"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#, fuzzy
+msgid "Slices"
+msgstr "Automatisch Snijden"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
+#: scene/resources/style_box.cpp
+#, fuzzy
+msgid "Horizontal"
+msgstr "Horizontaal:"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
+#: scene/resources/style_box.cpp
+#, fuzzy
+msgid "Vertical"
+msgstr "Verticaal:"
+
+#: editor/import/resource_importer_obj.cpp
+#, fuzzy
+msgid "Generate Tangents"
+msgstr "Telling Gegenereerde Punten:"
+
+#: editor/import/resource_importer_obj.cpp
+#, fuzzy
+msgid "Scale Mesh"
+msgstr "Schaalmodus"
+
+#: editor/import/resource_importer_obj.cpp
+#, fuzzy
+msgid "Offset Mesh"
+msgstr "Afstand:"
+
+#: editor/import/resource_importer_obj.cpp
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Octahedral Compression"
+msgstr "Stel expressie in"
+
+#: editor/import/resource_importer_obj.cpp
+#, fuzzy
+msgid "Optimize Mesh Flags"
+msgstr "Grootte: "
+
#: editor/import/resource_importer_scene.cpp
msgid "Import as Single Scene"
msgstr "Importeer als enkele scène"
@@ -6807,6 +7008,156 @@ msgstr "Importeren als meerdere scènes"
msgid "Import as Multiple Scenes+Materials"
msgstr "Importeren als meerdere scènes+materialen"
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Nodes"
+msgstr "Node"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Root Type"
+msgstr "Veld Type"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Root Name"
+msgstr "Remote "
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Root Scale"
+msgstr "Schaal:"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Custom Script"
+msgstr "Knopen knippen"
+
+#: editor/import/resource_importer_scene.cpp scene/resources/texture.cpp
+#, fuzzy
+msgid "Storage"
+msgstr "Bestand Opslaan:"
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Use Legacy Names"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+#, fuzzy
+msgid "Materials"
+msgstr "Materiaal Wijzigingen"
+
+#: editor/import/resource_importer_scene.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Location"
+msgstr "Lokalisatie"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Keep On Reimport"
+msgstr "Opnieuw importeren"
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+#, fuzzy
+msgid "Meshes"
+msgstr "Mesh"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Ensure Tangents"
+msgstr "Wijzig Curve Raaklijn"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Light Baking"
+msgstr "Bak Lichtmappen"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Lightmap Texel Size"
+msgstr "Bak Lichtmappen"
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+msgid "Skins"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Use Named Skins"
+msgstr "In stappen verschalen"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "External Files"
+msgstr "Open een Bestand"
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Store In Subdir"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Filter Script"
+msgstr "Filter scripts"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Keep Custom Tracks"
+msgstr "Transformatie"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Optimizer"
+msgstr "Optimaliseren"
+
+#: editor/import/resource_importer_scene.cpp main/main.cpp
+#: modules/mono/mono_gd/gd_mono.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp scene/2d/camera_2d.cpp scene/2d/light_2d.cpp
+#: scene/2d/navigation_polygon.cpp scene/2d/ray_cast_2d.cpp scene/2d/sprite.cpp
+#: scene/2d/y_sort.cpp scene/3d/audio_stream_player_3d.cpp
+#: scene/3d/baked_lightmap.cpp scene/3d/interpolated_camera.cpp
+#: scene/3d/light.cpp scene/3d/navigation_mesh_instance.cpp
+#: scene/3d/physics_joint.cpp scene/3d/ray_cast.cpp scene/3d/sprite_3d.cpp
+#: scene/gui/graph_edit.cpp scene/gui/rich_text_label.cpp
+#: scene/resources/curve.cpp scene/resources/environment.cpp
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Enabled"
+msgstr "Inschakelen"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Max Linear Error"
+msgstr "Max. Lineaire Fout:"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Max Angular Error"
+msgstr "Max. Fout in hoek:"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Max Angle"
+msgstr "Waarde"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Remove Unused Tracks"
+msgstr "Verwijder Anim Track"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Clips"
+msgstr "Animatieclips"
+
+#: editor/import/resource_importer_scene.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/particles_2d.cpp scene/3d/area.cpp scene/3d/cpu_particles.cpp
+#: scene/3d/particles.cpp scene/resources/environment.cpp
+#, fuzzy
+msgid "Amount"
+msgstr "Hoeveelheid:"
+
#: editor/import/resource_importer_scene.cpp
#: editor/plugins/mesh_library_editor_plugin.cpp
msgid "Import Scene"
@@ -6849,12 +7200,149 @@ msgstr ""
msgid "Saving..."
msgstr "Opslaan..."
+#: editor/import/resource_importer_texture.cpp scene/resources/texture.cpp
+msgid "Lossy Quality"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "HDR Mode"
+msgstr "Selecteermodus"
+
+#: editor/import/resource_importer_texture.cpp
+msgid "BPTC LDR"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/mesh_instance_2d.cpp scene/2d/multimesh_instance_2d.cpp
+#: scene/2d/particles_2d.cpp scene/2d/sprite.cpp scene/resources/style_box.cpp
+msgid "Normal Map"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Process"
+msgstr "Nabewerking"
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Fix Alpha Border"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Premult Alpha"
+msgstr "Bewerk Poly"
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Hdr As Srgb"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Invert Color"
+msgstr "Vertex"
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Normal Map Invert Y"
+msgstr "Willekeurige Schaal:"
+
+#: editor/import/resource_importer_texture.cpp
+#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
+#: scene/audio/audio_stream_player.cpp scene/gui/video_player.cpp
+msgid "Stream"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Size Limit"
+msgstr "Grootte: "
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Detect 3D"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "SVG"
+msgstr "HSV"
+
#: editor/import/resource_importer_texture.cpp
msgid ""
"Warning, no suitable PC VRAM compression enabled in Project Settings. This "
"texture will not display correctly on PC."
msgstr ""
+#: editor/import/resource_importer_texture_atlas.cpp
+#, fuzzy
+msgid "Atlas File"
+msgstr "Omlijningsgrootte:"
+
+#: editor/import/resource_importer_texture_atlas.cpp
+#, fuzzy
+msgid "Import Mode"
+msgstr "Exporteermodus:"
+
+#: editor/import/resource_importer_texture_atlas.cpp
+#, fuzzy
+msgid "Crop To Region"
+msgstr "Stel Tile Region in"
+
+#: editor/import/resource_importer_texture_atlas.cpp
+msgid "Trim Alpha Border From Region"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp scene/2d/physics_body_2d.cpp
+#, fuzzy
+msgid "Force"
+msgstr "Bron Mesh:"
+
+#: editor/import/resource_importer_wav.cpp
+msgid "8 Bit"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp main/main.cpp
+#: modules/mono/editor/csharp_project.cpp modules/mono/mono_gd/gd_mono.cpp
+msgid "Mono"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+#, fuzzy
+msgid "Max Rate"
+msgstr "Overgangsknoop"
+
+#: editor/import/resource_importer_wav.cpp
+#, fuzzy
+msgid "Max Rate Hz"
+msgstr "Overgangsknoop"
+
+#: editor/import/resource_importer_wav.cpp
+msgid "Trim"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+#, fuzzy
+msgid "Normalize"
+msgstr "Formaat"
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+#, fuzzy
+msgid "Loop Mode"
+msgstr "Verplaatsingsmodus"
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+#, fuzzy
+msgid "Loop Begin"
+msgstr "Verplaatsingsmodus"
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+#, fuzzy
+msgid "Loop End"
+msgstr "Verplaatsingsmodus"
+
#: editor/import_defaults_editor.cpp
msgid "Select Importer"
msgstr "Selecteer Importeren"
@@ -6927,6 +7415,29 @@ msgid "Failed to load resource."
msgstr "Bron laden mislukt."
#: editor/inspector_dock.cpp
+#, fuzzy
+msgid "Property Name Style"
+msgstr "Projectnaam:"
+
+#: editor/inspector_dock.cpp scene/gui/color_picker.cpp
+msgid "Raw"
+msgstr "Rauw"
+
+#: editor/inspector_dock.cpp
+#, fuzzy
+msgid "Capitalized"
+msgstr "Elk Woord Met Hoofdletter"
+
+#: editor/inspector_dock.cpp
+#, fuzzy
+msgid "Localized"
+msgstr "Localisatie"
+
+#: editor/inspector_dock.cpp
+msgid "Localization not available for current language."
+msgstr ""
+
+#: editor/inspector_dock.cpp
msgid "Copy Properties"
msgstr "Kopieer Eigenschappen"
@@ -7976,18 +8487,26 @@ msgid "License (Z-A)"
msgstr "Licentie (Z-A)"
#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgctxt "Pagination"
msgid "First"
msgstr "Eerste"
-#: editor/plugins/asset_library_editor_plugin.cpp scene/gui/control.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgctxt "Pagination"
msgid "Previous"
msgstr "Vorige"
-#: editor/plugins/asset_library_editor_plugin.cpp scene/gui/control.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgctxt "Pagination"
msgid "Next"
msgstr "Volgende"
#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgctxt "Pagination"
msgid "Last"
msgstr "Laatste"
@@ -8237,19 +8756,19 @@ msgstr ""
"Als dit aan staat, verandert het verplaatsen van Control-knopen hun ankers "
"in plaats van hun marges."
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Top Left"
msgstr "Linksboven"
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Top Right"
msgstr "Rechtsboves"
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Bottom Right"
msgstr "Rechtsonder"
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Bottom Left"
msgstr "Linksonder"
@@ -8980,6 +9499,19 @@ msgstr "Maak een GI (Global Illumination) Probe"
msgid "Gradient Edited"
msgstr "Gradient aangepast"
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+msgid "Swap GradientTexture2D Fill Points"
+msgstr ""
+
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+msgid "Swap Gradient Fill Points"
+msgstr ""
+
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+#, fuzzy
+msgid "Toggle Grid Snap"
+msgstr "Modus wisselen"
+
#: editor/plugins/item_list_editor_plugin.cpp
msgid "Item %d"
msgstr "Item %d"
@@ -9214,8 +9746,9 @@ msgstr ""
"Bijwerken vanuit bestaande scène?:\n"
"%s"
-#: editor/plugins/mesh_library_editor_plugin.cpp modules/gridmap/grid_map.cpp
-msgid "Mesh Library"
+#: editor/plugins/mesh_library_editor_plugin.cpp
+#, fuzzy
+msgid "MeshLibrary"
msgstr "Mesh Bibilotheek"
#: editor/plugins/mesh_library_editor_plugin.cpp
@@ -10218,8 +10751,8 @@ msgstr "Verbindingen aan methode:"
msgid "Source"
msgstr "Bron"
-#: editor/plugins/script_text_editor.cpp scene/3d/interpolated_camera.cpp
-#: scene/animation/skeleton_ik.cpp
+#: editor/plugins/script_text_editor.cpp platform/uwp/export/export.cpp
+#: scene/3d/interpolated_camera.cpp scene/animation/skeleton_ik.cpp
msgid "Target"
msgstr "Doel"
@@ -11224,7 +11757,9 @@ msgstr "Snelheid:"
#: editor/plugins/sprite_frames_editor_plugin.cpp
#: modules/gltf/gltf_animation.cpp modules/minimp3/audio_stream_mp3.cpp
-#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp scene/2d/path_2d.cpp
+#: modules/minimp3/resource_importer_mp3.cpp
+#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp
+#: modules/stb_vorbis/resource_importer_ogg_vorbis.cpp scene/2d/path_2d.cpp
#: scene/3d/path.cpp scene/resources/animation.cpp scene/resources/material.cpp
msgid "Loop"
msgstr "Lus"
@@ -12171,8 +12706,9 @@ msgstr "Bitmasker"
msgid "Priority"
msgstr "Prioriteit"
-#: editor/plugins/tile_set_editor_plugin.cpp main/main.cpp scene/gui/button.cpp
-#: scene/gui/item_list.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp main/main.cpp
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#: scene/gui/button.cpp scene/gui/item_list.cpp
msgid "Icon"
msgstr "Icoon"
@@ -13577,10 +14113,6 @@ msgstr ""
"vooraf ingestelde exportinstellingen of uw eigen exportinstellingen."
#: editor/project_export.cpp
-msgid "Release"
-msgstr "Release"
-
-#: editor/project_export.cpp
msgid "Exporting All"
msgstr "Exporteer alles"
@@ -15456,6 +15988,7 @@ msgid "Change AudioStreamPlayer3D Emission Angle"
msgstr "Uitvoerhoek AudioStreamPlayer3D veranderen"
#: editor/spatial_editor_gizmos.cpp modules/gltf/gltf_node.cpp
+#: platform/osx/export/export.cpp
msgid "Camera"
msgstr ""
@@ -15743,7 +16276,8 @@ msgstr ""
msgid "Use Nvidia Rect Flicker Workaround"
msgstr ""
-#: main/main.cpp platform/uwp/os_uwp.cpp
+#: main/main.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp platform/uwp/os_uwp.cpp
#, fuzzy
msgid "Display"
msgstr "Alles tonen"
@@ -15804,19 +16338,6 @@ msgstr ""
msgid "Allowed"
msgstr ""
-#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp scene/2d/camera_2d.cpp
-#: scene/2d/light_2d.cpp scene/2d/navigation_polygon.cpp
-#: scene/2d/ray_cast_2d.cpp scene/2d/sprite.cpp scene/2d/y_sort.cpp
-#: scene/3d/audio_stream_player_3d.cpp scene/3d/baked_lightmap.cpp
-#: scene/3d/interpolated_camera.cpp scene/3d/light.cpp
-#: scene/3d/navigation_mesh_instance.cpp scene/3d/ray_cast.cpp
-#: scene/3d/sprite_3d.cpp scene/gui/graph_edit.cpp
-#: scene/gui/rich_text_label.cpp scene/resources/curve.cpp
-#: scene/resources/environment.cpp
-#, fuzzy
-msgid "Enabled"
-msgstr "Inschakelen"
-
#: main/main.cpp
msgid "Intended Usage"
msgstr ""
@@ -15848,13 +16369,14 @@ msgstr ""
msgid "Handheld"
msgstr ""
-#: main/main.cpp
+#: main/main.cpp platform/javascript/export/export.cpp
+#: platform/uwp/export/export.cpp
#, fuzzy
msgid "Orientation"
msgstr "Online Documentatie"
#: main/main.cpp scene/gui/scroll_container.cpp scene/gui/text_edit.cpp
-#: scene/main/scene_tree.cpp
+#: scene/main/scene_tree.cpp scene/register_scene_types.cpp
#, fuzzy
msgid "Common"
msgstr "Gemeenschap"
@@ -15897,7 +16419,7 @@ msgstr ""
#: main/main.cpp
#, fuzzy
-msgid "Frame Delay (msec)"
+msgid "Frame Delay Msec"
msgstr "Raam Selectie"
#: main/main.cpp
@@ -16025,11 +16547,6 @@ msgstr ""
msgid "Tooltip Position Offset"
msgstr "Rotatie Verplaatsing:"
-#: main/main.cpp modules/mono/editor/csharp_project.cpp
-#: modules/mono/mono_gd/gd_mono.cpp
-msgid "Mono"
-msgstr ""
-
#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp
#, fuzzy
msgid "Debugger Agent"
@@ -16610,7 +17127,7 @@ msgstr "Kleuren"
msgid "Intensity"
msgstr ""
-#: modules/gltf/gltf_light.cpp scene/2d/light_2d.cpp
+#: modules/gltf/gltf_light.cpp scene/2d/light_2d.cpp scene/3d/light.cpp
#, fuzzy
msgid "Range"
msgstr "Wijzig"
@@ -16757,11 +17274,6 @@ msgstr "Licht"
msgid "Use Named Skin Binds"
msgstr ""
-#: modules/gltf/gltf_state.cpp scene/3d/physics_joint.cpp
-#, fuzzy
-msgid "Nodes"
-msgstr "Node"
-
#: modules/gltf/gltf_state.cpp
#, fuzzy
msgid "Buffer Views"
@@ -16773,16 +17285,6 @@ msgstr ""
#: modules/gltf/gltf_state.cpp
#, fuzzy
-msgid "Meshes"
-msgstr "Mesh"
-
-#: modules/gltf/gltf_state.cpp
-#, fuzzy
-msgid "Materials"
-msgstr "Materiaal Wijzigingen"
-
-#: modules/gltf/gltf_state.cpp
-#, fuzzy
msgid "Scene Name"
msgstr "Scènepad:"
@@ -16798,15 +17300,11 @@ msgstr "Wortelknoopnaam"
msgid "Textures"
msgstr "Functionaliteiten"
-#: modules/gltf/gltf_state.cpp
+#: modules/gltf/gltf_state.cpp platform/uwp/export/export.cpp
msgid "Images"
msgstr ""
#: modules/gltf/gltf_state.cpp
-msgid "Skins"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp
msgid "Cameras"
msgstr ""
@@ -16841,11 +17339,15 @@ msgid "Src Image"
msgstr "Laat Botten Zien"
#: modules/gridmap/grid_map.cpp
+msgid "Mesh Library"
+msgstr "Mesh Bibilotheek"
+
+#: modules/gridmap/grid_map.cpp
#, fuzzy
msgid "Physics Material"
msgstr "Physics Frame %"
-#: modules/gridmap/grid_map.cpp
+#: modules/gridmap/grid_map.cpp scene/3d/visual_instance.cpp
#, fuzzy
msgid "Use In Baked Light"
msgstr "Bak Lichtmappen"
@@ -16877,6 +17379,7 @@ msgstr "Center"
#: modules/gridmap/grid_map.cpp scene/2d/collision_object_2d.cpp
#: scene/2d/tile_map.cpp scene/3d/collision_object.cpp scene/3d/soft_body.cpp
+#: scene/resources/material.cpp
msgid "Mask"
msgstr ""
@@ -17059,7 +17562,9 @@ msgid "Ultra Quality Ray Count"
msgstr ""
#: modules/minimp3/audio_stream_mp3.cpp
+#: modules/minimp3/resource_importer_mp3.cpp
#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp
+#: modules/stb_vorbis/resource_importer_ogg_vorbis.cpp
#, fuzzy
msgid "Loop Offset"
msgstr "Afstand:"
@@ -18183,6 +18688,193 @@ msgid "The package must have at least one '.' separator."
msgstr "De pakketnaam moet ten minste een '.' bevatten."
#: platform/android/export/export_plugin.cpp
+msgid "Use Custom Build"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Export Format"
+msgstr "Export Pad"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Keystore"
+msgstr "Debugger"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Debug User"
+msgstr "Debugger"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Debug Password"
+msgstr "Wachtwoord"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Release User"
+msgstr "Release"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Release Password"
+msgstr "Wachtwoord"
+
+#: platform/android/export/export_plugin.cpp
+msgid "One Click Deploy"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Clear Previous Install"
+msgstr "Inspecteer vorige instantie"
+
+#: platform/android/export/export_plugin.cpp scene/resources/shader.cpp
+msgid "Code"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Min SDK"
+msgstr "Omlijningsgrootte:"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Target SDK"
+msgstr "Doel"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Package"
+msgstr "Inpakken"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Unique Name"
+msgstr "Knoopnaam:"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Signed"
+msgstr "Signaal"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Classify As Game"
+msgstr "Klasse Naam:"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Retain Data On Uninstall"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Exclude From Recents"
+msgstr "VisualShader-knoop/knopen verwijderen"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Graphics"
+msgstr "Raster Verplaatsing:"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "OpenGL Debug"
+msgstr "Openen"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "XR Features"
+msgstr "Functionaliteiten"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "XR Mode"
+msgstr "Verschuifmodus"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Hand Tracking"
+msgstr "Inpakken"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Hand Tracking Frequency"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Passthrough"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Immersive Mode"
+msgstr "Prioriteitmodus"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Support Small"
+msgstr "Ondersteuning"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Support Normal"
+msgstr "Ondersteuning"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Support Large"
+msgstr "Ondersteuning"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Support Xlarge"
+msgstr "Ondersteuning"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "User Data Backup"
+msgstr "Gebruikersomgeving"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Allow"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Command Line"
+msgstr "Gemeenschap"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Extra Args"
+msgstr "Aanroepparameters:"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "APK Expansion"
+msgstr "Stel expressie in"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Salt"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Public Key"
+msgstr "Sleutel(s) dupliceren"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Permissions"
+msgstr "Emissiemasker"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Custom Permissions"
+msgstr "Speel aangepaste scène af"
+
+#: platform/android/export/export_plugin.cpp
msgid "Select device from the list"
msgstr "Selecteer apparaat uit de lijst"
@@ -18509,6 +19201,177 @@ msgid "The character '%s' is not allowed in Identifier."
msgstr "Het karakter '%s' is geen geldige identifier."
#: platform/iphone/export/export.cpp
+msgid "App Store Team ID"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Provisioning Profile UUID Debug"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Code Sign Identity Debug"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Export Method Debug"
+msgstr "Exporteer Met Debug"
+
+#: platform/iphone/export/export.cpp
+msgid "Provisioning Profile UUID Release"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Code Sign Identity Release"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Export Method Release"
+msgstr "Exporteermodus:"
+
+#: platform/iphone/export/export.cpp
+msgid "Targeted Device Family"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Info"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Identifier"
+msgstr "Ongeldige identifier:"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Signature"
+msgstr "Signaal"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Short Version"
+msgstr "Versie"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Copyright"
+msgstr "Rechtsboves"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Capabilities"
+msgstr "Plakken Eigenschappen"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Access Wi-Fi"
+msgstr "Gelukt!"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Push Notifications"
+msgstr "Willekeurige Rotatie:"
+
+#: platform/iphone/export/export.cpp scene/3d/baked_lightmap.cpp
+#, fuzzy
+msgid "User Data"
+msgstr "Gebruikersomgeving"
+
+#: platform/iphone/export/export.cpp
+msgid "Accessible From Files App"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Accessible From Itunes Sharing"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Privacy"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Camera Usage Description"
+msgstr "Beschrijving"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Microphone Usage Description"
+msgstr "Eigenschapbeschrijvingen"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Photolibrary Usage Description"
+msgstr "Eigenschapbeschrijvingen"
+
+#: platform/iphone/export/export.cpp
+msgid "iPhone 120 X 120"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPhone 180 X 180"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 76 X 76"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 152 X 152"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 167 X 167"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "App Store 1024 X 1024"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Spotlight 40 X 40"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Spotlight 80 X 80"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Storyboard"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Use Launch Screen Storyboard"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Image Scale Mode"
+msgstr "Schaalmodus"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Custom Image @2x"
+msgstr "Knopen knippen"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Custom Image @3x"
+msgstr "Knopen knippen"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Use Custom BG Color"
+msgstr "Knopen knippen"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Custom BG Color"
+msgstr "Knopen knippen"
+
+#: platform/iphone/export/export.cpp
msgid "App Store Team ID not specified - cannot configure the project."
msgstr ""
"App Store Team ID niet gespecificeerd - kan het project niet configureren."
@@ -18549,6 +19412,80 @@ msgstr "Kon bestand niet schrijven:"
#: platform/javascript/export/export.cpp
#, fuzzy
+msgid "Variant"
+msgstr "Afzondering:"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Export Type"
+msgstr "Exporteren"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "VRAM Texture Compression"
+msgstr "Stel expressie in"
+
+#: platform/javascript/export/export.cpp
+msgid "For Desktop"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "For Mobile"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Html"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Export Icon"
+msgstr "Alles uitklappen"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Custom Html Shell"
+msgstr "Knopen knippen"
+
+#: platform/javascript/export/export.cpp
+msgid "Head Include"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Canvas Resize Policy"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Focus Canvas On Start"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Experimental Virtual Keyboard"
+msgstr "Signalen filteren"
+
+#: platform/javascript/export/export.cpp
+msgid "Progressive Web App"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Offline Page"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 144 X 144"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 180 X 180"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 512 X 512"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
msgid "Could not read HTML shell:"
msgstr "Kon de custom HTML shell niet lezen:"
@@ -18664,6 +19601,202 @@ msgid "Unknown object type."
msgstr ""
#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "App Category"
+msgstr "Categorie:"
+
+#: platform/osx/export/export.cpp
+msgid "High Res"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Location Usage Description"
+msgstr "Beschrijving"
+
+#: platform/osx/export/export.cpp
+msgid "Address Book Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Calendar Usage Description"
+msgstr "Beschrijving"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Photos Library Usage Description"
+msgstr "Eigenschapbeschrijvingen"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Desktop Folder Usage Description"
+msgstr "Methodebeschrijvingen"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Documents Folder Usage Description"
+msgstr "Methodebeschrijvingen"
+
+#: platform/osx/export/export.cpp
+msgid "Downloads Folder Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Network Volumes Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Removable Volumes Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#, fuzzy
+msgid "Codesign"
+msgstr "Node"
+
+#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Identity"
+msgstr "Links Inspringen"
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#, fuzzy
+msgid "Timestamp"
+msgstr "Tijd"
+
+#: platform/osx/export/export.cpp
+msgid "Hardened Runtime"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Replace Existing Signature"
+msgstr "Alles vervangen"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Entitlements"
+msgstr "Gizmos"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Custom File"
+msgstr "Knopen knippen"
+
+#: platform/osx/export/export.cpp
+msgid "Allow JIT Code Execution"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Allow Unsigned Executable Memory"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Allow Dyld Environment Variables"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Disable Library Validation"
+msgstr "Knop Uitschakelen"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Audio Input"
+msgstr "Voeg invoer toe"
+
+#: platform/osx/export/export.cpp
+msgid "Address Book"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Calendars"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Photos Library"
+msgstr "Bibliotheek Exporteren"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Apple Events"
+msgstr "Event Toevoegen"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Debugging"
+msgstr "Debuggen"
+
+#: platform/osx/export/export.cpp
+msgid "App Sandbox"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Network Server"
+msgstr "Netwerk Profiler"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Network Client"
+msgstr "Netwerk Profiler"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Device Usb"
+msgstr "Apparaat"
+
+#: platform/osx/export/export.cpp
+msgid "Device Bluetooth"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Files Downloads"
+msgstr "Download"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Files Pictures"
+msgstr "Functionaliteiten"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Files Music"
+msgstr "Bestand"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Files Movies"
+msgstr "Filter tegels"
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#, fuzzy
+msgid "Custom Options"
+msgstr "Audiobusopties"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Notarization"
+msgstr "Lokalisatie"
+
+#: platform/osx/export/export.cpp
+msgid "Apple ID Name"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Apple ID Password"
+msgstr "Wachtwoord"
+
+#: platform/osx/export/export.cpp
+msgid "Apple Team ID"
+msgstr ""
+
+#: platform/osx/export/export.cpp
msgid ""
"Note: The notarization process generally takes less than an hour. When the "
"process is completed, you'll receive an email."
@@ -18857,6 +19990,136 @@ msgid "Force Builtin Codesign"
msgstr ""
#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Architecture"
+msgstr "Voeg een architectuur invoer toe"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Display Name"
+msgstr "Alles tonen"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Short Name"
+msgstr "Scriptnaam:"
+
+#: platform/uwp/export/export.cpp
+msgid "Publisher"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Publisher Display Name"
+msgstr "Ongeldige pakket uitgevernaam."
+
+#: platform/uwp/export/export.cpp
+msgid "Product Guid"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Publisher Guid"
+msgstr "Wis hulplijnen"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Signing"
+msgstr "Signaal"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Certificate"
+msgstr "Hoekpunten"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Algorithm"
+msgstr "Debugger"
+
+#: platform/uwp/export/export.cpp
+msgid "Major"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Minor"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Build"
+msgstr "Meetlatmodus"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Revision"
+msgstr "Stel expressie in"
+
+#: platform/uwp/export/export.cpp
+msgid "Landscape"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Portrait"
+msgstr "Horizontaal omdraaien"
+
+#: platform/uwp/export/export.cpp
+msgid "Landscape Flipped"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Portrait Flipped"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Store Logo"
+msgstr "Schaalmodus"
+
+#: platform/uwp/export/export.cpp
+msgid "Square 44 X 44 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 71 X 71 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 150 X 150 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 310 X 310 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Wide 310 X 150 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Splash Screen"
+msgstr "Teken Aanroepingen"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Tiles"
+msgstr "Bestand"
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Square 150 X 150"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Wide 310 X 150"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Square 310 X 310"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
msgid "Invalid package short name."
msgstr "Ongeldige pakket korte naam."
@@ -18930,15 +20193,52 @@ msgstr ""
#: platform/uwp/export/export.cpp
#, fuzzy
-msgid "Debug Password"
-msgstr "Wachtwoord"
+msgid "Debug Algorithm"
+msgstr "Debugger"
-#: platform/uwp/export/export.cpp
+#: platform/windows/export/export.cpp
+msgid "Identity Type"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Timestamp Server URL"
+msgstr ""
+
+#: platform/windows/export/export.cpp
#, fuzzy
-msgid "Debug Algorithm"
+msgid "Digest Algorithm"
msgstr "Debugger"
#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "File Version"
+msgstr "Versie"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Product Version"
+msgstr "Ongeldig product GUID."
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Company Name"
+msgstr "Knoopnaam:"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Product Name"
+msgstr "Projectnaam:"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "File Description"
+msgstr "Beschrijving"
+
+#: platform/windows/export/export.cpp
+msgid "Trademarks"
+msgstr ""
+
+#: platform/windows/export/export.cpp
msgid ""
"The rcedit tool must be configured in the Editor Settings (Export > Windows "
"> Rcedit) to change the icon or app information data."
@@ -19013,12 +20313,14 @@ msgstr "Speel"
msgid "Centered"
msgstr "Center"
-#: scene/2d/animated_sprite.cpp scene/2d/camera_2d.cpp scene/2d/light_2d.cpp
+#: scene/2d/animated_sprite.cpp scene/2d/camera_2d.cpp
+#: scene/2d/cpu_particles_2d.cpp scene/2d/light_2d.cpp
#: scene/2d/parallax_background.cpp scene/2d/parallax_layer.cpp
#: scene/2d/path_2d.cpp scene/2d/polygon_2d.cpp scene/2d/sprite.cpp
-#: scene/3d/path.cpp scene/3d/physics_body.cpp scene/3d/sprite_3d.cpp
-#: scene/gui/graph_node.cpp scene/gui/rich_text_effect.cpp
-#: scene/main/canvas_layer.cpp scene/resources/material.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/path.cpp scene/3d/physics_body.cpp
+#: scene/3d/sprite_3d.cpp scene/gui/graph_node.cpp
+#: scene/gui/rich_text_effect.cpp scene/main/canvas_layer.cpp
+#: scene/resources/material.cpp scene/resources/particles_material.cpp
#: scene/resources/style_box.cpp
#, fuzzy
msgid "Offset"
@@ -19093,11 +20395,6 @@ msgstr "Audiobus Toevoegen"
msgid "Override"
msgstr "Overschrijvers"
-#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
-#: scene/audio/audio_stream_player.cpp scene/gui/video_player.cpp
-msgid "Stream"
-msgstr ""
-
#: scene/2d/audio_stream_player_2d.cpp scene/audio/audio_stream_player.cpp
#: scene/gui/video_player.cpp servers/audio/effects/audio_effect_amplify.cpp
#, fuzzy
@@ -19124,13 +20421,13 @@ msgid "Stream Paused"
msgstr ""
#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
-#: scene/3d/reflection_probe.cpp scene/3d/visual_instance.cpp
-#: scene/resources/material.cpp
+#: scene/3d/light.cpp scene/3d/reflection_probe.cpp
+#: scene/3d/visual_instance.cpp scene/resources/material.cpp
#, fuzzy
msgid "Max Distance"
msgstr "Selecteerafstand:"
-#: scene/2d/audio_stream_player_2d.cpp
+#: scene/2d/audio_stream_player_2d.cpp scene/3d/light.cpp
#, fuzzy
msgid "Attenuation"
msgstr "Animatie"
@@ -19186,6 +20483,24 @@ msgstr "Verplaatsingsmodus"
msgid "Limit"
msgstr ""
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/style_box.cpp
+#, fuzzy
+msgid "Left"
+msgstr "Linksboven"
+
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/style_box.cpp
+#, fuzzy
+msgid "Right"
+msgstr "Licht"
+
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/dynamic_font.cpp scene/resources/style_box.cpp
+#, fuzzy
+msgid "Bottom"
+msgstr "Linksonder"
+
#: scene/2d/camera_2d.cpp
#, fuzzy
msgid "Smoothed"
@@ -19425,13 +20740,6 @@ msgstr ""
msgid "Emitting"
msgstr "Instellingen:"
-#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp scene/3d/area.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
-#: scene/resources/environment.cpp
-#, fuzzy
-msgid "Amount"
-msgstr "Hoeveelheid:"
-
#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp
#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
msgid "Lifetime"
@@ -19496,18 +20804,13 @@ msgstr ""
#: scene/2d/mesh_instance_2d.cpp scene/2d/multimesh_instance_2d.cpp
#: scene/2d/particles_2d.cpp scene/2d/polygon_2d.cpp scene/2d/sprite.cpp
#: scene/3d/sprite_3d.cpp scene/gui/nine_patch_rect.cpp
-#: scene/gui/texture_rect.cpp scene/resources/sky.cpp
-#: scene/resources/style_box.cpp scene/resources/visual_shader_nodes.cpp
+#: scene/gui/texture_rect.cpp scene/resources/material.cpp
+#: scene/resources/sky.cpp scene/resources/style_box.cpp
+#: scene/resources/visual_shader_nodes.cpp
#, fuzzy
msgid "Texture"
msgstr "Tekst"
-#: scene/2d/cpu_particles_2d.cpp scene/2d/mesh_instance_2d.cpp
-#: scene/2d/multimesh_instance_2d.cpp scene/2d/particles_2d.cpp
-#: scene/2d/sprite.cpp scene/resources/style_box.cpp
-msgid "Normal Map"
-msgstr ""
-
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
#, fuzzy
@@ -19531,10 +20834,10 @@ msgid "Normals"
msgstr "Formaat"
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/3d/sprite_3d.cpp scene/resources/material.cpp
-#: scene/resources/particles_material.cpp scene/resources/texture.cpp
-msgid "Flags"
-msgstr ""
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Align Y"
+msgstr "Toewijzen"
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
@@ -19555,6 +20858,12 @@ msgid "Initial Velocity"
msgstr "Initialiseren"
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Velocity Random"
+msgstr "Initialiseren"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp servers/physics_2d_server.cpp
#: servers/physics_server.cpp
msgid "Angular Velocity"
@@ -19562,6 +20871,12 @@ msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Velocity Curve"
+msgstr "Initialiseren"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
msgid "Orbit Velocity"
msgstr ""
@@ -19573,6 +20888,23 @@ msgstr "Lineair"
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Accel"
+msgstr "Gelukt!"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Accel Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Accel Curve"
+msgstr "Split Curve"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
msgid "Radial Accel"
msgstr ""
@@ -19582,19 +20914,55 @@ msgid "Tangential Accel"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/2d/joints_2d.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/vehicle_body.cpp
-#: scene/resources/particles_material.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/physics_joint.cpp
+#: scene/3d/vehicle_body.cpp scene/resources/particles_material.cpp
#: servers/audio/effects/audio_effect_reverb.cpp
msgid "Damping"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+msgid "Damping Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Damping Curve"
+msgstr "Split Curve"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp scene/3d/light.cpp
+#: scene/resources/particles_material.cpp
msgid "Angle"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+msgid "Angle Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Angle Curve"
+msgstr "Sluit Curve"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#, fuzzy
+msgid "Scale Amount"
+msgstr "Hoeveelheid:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+msgid "Scale Amount Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#, fuzzy
+msgid "Scale Amount Curve"
+msgstr "Schaal Vanaf Cursor"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
#, fuzzy
msgid "Color Ramp"
msgstr "Kleuren"
@@ -19610,6 +20978,48 @@ msgstr ""
msgid "Hue Variation"
msgstr "Afzondering:"
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Variation"
+msgstr "Afzondering:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Variation Random"
+msgstr "Afzondering:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Variation Curve"
+msgstr "Afzondering:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Speed Random"
+msgstr "Schaal:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Speed Curve"
+msgstr "Split Curve"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Offset Random"
+msgstr "Afstand:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Offset Curve"
+msgstr "Sluit Curve"
+
#: scene/2d/joints_2d.cpp
msgid "Node A and Node B must be PhysicsBody2Ds"
msgstr "Knoop A en Knoop B moeten PhysicsBody2D zijn"
@@ -19641,6 +21051,7 @@ msgid "Node B"
msgstr "Node"
#: scene/2d/joints_2d.cpp scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp
+#: scene/3d/light.cpp scene/3d/physics_joint.cpp
#: scene/resources/environment.cpp
msgid "Bias"
msgstr ""
@@ -19650,7 +21061,7 @@ msgstr ""
msgid "Disable Collision"
msgstr "Knop Uitschakelen"
-#: scene/2d/joints_2d.cpp
+#: scene/2d/joints_2d.cpp scene/3d/physics_joint.cpp
msgid "Softness"
msgstr ""
@@ -19668,7 +21079,7 @@ msgstr "Initialiseren"
msgid "Rest Length"
msgstr ""
-#: scene/2d/joints_2d.cpp scene/3d/vehicle_body.cpp
+#: scene/2d/joints_2d.cpp scene/3d/physics_joint.cpp scene/3d/vehicle_body.cpp
msgid "Stiffness"
msgstr ""
@@ -19691,7 +21102,7 @@ msgid "Texture Scale"
msgstr "TextureRegion"
#: scene/2d/light_2d.cpp scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp
-#: scene/resources/environment.cpp scene/resources/sky.cpp
+#: scene/3d/light.cpp scene/resources/environment.cpp scene/resources/sky.cpp
msgid "Energy"
msgstr ""
@@ -19732,12 +21143,6 @@ msgstr "Achteraanzicht"
msgid "Gradient Length"
msgstr "Gradient aangepast"
-#: scene/2d/light_2d.cpp scene/gui/control.cpp
-#: scene/resources/navigation_mesh.cpp
-#, fuzzy
-msgid "Filter"
-msgstr "Filters:"
-
#: scene/2d/light_2d.cpp
#, fuzzy
msgid "Filter Smooth"
@@ -20177,11 +21582,6 @@ msgid "Applied Forces"
msgstr ""
#: scene/2d/physics_body_2d.cpp
-#, fuzzy
-msgid "Force"
-msgstr "Bron Mesh:"
-
-#: scene/2d/physics_body_2d.cpp
msgid "Torque"
msgstr ""
@@ -20197,7 +21597,7 @@ msgstr "Physics Frame %"
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
#, fuzzy
-msgid "Moving platform"
+msgid "Moving Platform"
msgstr "Output verplaatsen"
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
@@ -20206,7 +21606,7 @@ msgstr ""
#: scene/2d/physics_body_2d.cpp scene/2d/touch_screen_button.cpp
#: scene/3d/physics_body.cpp scene/gui/texture_button.cpp
-#: scene/resources/line_shape_2d.cpp
+#: scene/resources/line_shape_2d.cpp scene/resources/material.cpp
#, fuzzy
msgid "Normal"
msgstr "Formaat"
@@ -20453,6 +21853,34 @@ msgstr ""
"VisibilityEnable2D werkt het beste wanneer het gebruikt wordt met de wortel "
"van de aangepaste scène als directe ouder."
+#: scene/2d/visibility_notifier_2d.cpp scene/3d/visibility_notifier.cpp
+#, fuzzy
+msgid "Pause Animations"
+msgstr "Plak Animatie"
+
+#: scene/2d/visibility_notifier_2d.cpp scene/3d/visibility_notifier.cpp
+msgid "Freeze Bodies"
+msgstr ""
+
+#: scene/2d/visibility_notifier_2d.cpp
+#, fuzzy
+msgid "Pause Particles"
+msgstr "Partikels"
+
+#: scene/2d/visibility_notifier_2d.cpp
+#, fuzzy
+msgid "Pause Animated Sprites"
+msgstr "Plak Animatie"
+
+#: scene/2d/visibility_notifier_2d.cpp
+#, fuzzy
+msgid "Process Parent"
+msgstr "Prioriteit Inschakelen"
+
+#: scene/2d/visibility_notifier_2d.cpp
+msgid "Physics Process Parent"
+msgstr ""
+
#: scene/3d/area.cpp
msgid "Reverb Bus"
msgstr ""
@@ -20553,6 +21981,7 @@ msgid "Attenuation Filter"
msgstr ""
#: scene/3d/audio_stream_player_3d.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
#: servers/audio/effects/audio_effect_filter.cpp
msgid "Cutoff Hz"
msgstr ""
@@ -20597,11 +22026,6 @@ msgid "Octree"
msgstr "Subtree"
#: scene/3d/baked_lightmap.cpp
-#, fuzzy
-msgid "User Data"
-msgstr "Gebruikersomgeving"
-
-#: scene/3d/baked_lightmap.cpp
msgid "Finding meshes and lights"
msgstr ""
@@ -20872,6 +22296,16 @@ msgid "Ring Axis"
msgstr "Waarschuwingen"
#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Rotate Y"
+msgstr "Rotatiemodus"
+
+#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Disable Z"
+msgstr "Item Uitschakelen"
+
+#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
msgid "Flatness"
msgstr ""
@@ -20912,16 +22346,11 @@ msgstr "Dynamische Bibliotheek"
msgid "Dynamic Range"
msgstr "Dynamische Bibliotheek"
-#: scene/3d/gi_probe.cpp
+#: scene/3d/gi_probe.cpp scene/3d/light.cpp
msgid "Normal Bias"
msgstr ""
#: scene/3d/gi_probe.cpp
-#, fuzzy
-msgid "Compress"
-msgstr "Componenten"
-
-#: scene/3d/gi_probe.cpp
msgid "Plotting Meshes"
msgstr "Plotten van Meshes"
@@ -20950,16 +22379,31 @@ msgstr ""
#: scene/3d/light.cpp
#, fuzzy
+msgid "Indirect Energy"
+msgstr "Emissiekleuren"
+
+#: scene/3d/light.cpp
+#, fuzzy
msgid "Negative"
msgstr "GDNative"
#: scene/3d/light.cpp
#, fuzzy
+msgid "Specular"
+msgstr "Meetlatmodus"
+
+#: scene/3d/light.cpp
+#, fuzzy
msgid "Bake Mode"
msgstr "Bitmaskermodus"
#: scene/3d/light.cpp
#, fuzzy
+msgid "Contact"
+msgstr "Kies Kleur"
+
+#: scene/3d/light.cpp
+#, fuzzy
msgid "Reverse Cull Face"
msgstr "Reset Audiobus Volume"
@@ -20970,11 +22414,31 @@ msgstr "Richtingen"
#: scene/3d/light.cpp
#, fuzzy
+msgid "Split 1"
+msgstr "Splits Pad"
+
+#: scene/3d/light.cpp
+#, fuzzy
+msgid "Split 2"
+msgstr "Splits Pad"
+
+#: scene/3d/light.cpp
+#, fuzzy
+msgid "Split 3"
+msgstr "Splits Pad"
+
+#: scene/3d/light.cpp
+#, fuzzy
msgid "Blend Splits"
msgstr "Overgangstijden:"
#: scene/3d/light.cpp
#, fuzzy
+msgid "Bias Split Scale"
+msgstr "In stappen verschalen"
+
+#: scene/3d/light.cpp
+#, fuzzy
msgid "Depth Range"
msgstr "Diepte"
@@ -21001,6 +22465,11 @@ msgstr ""
msgid "Spot"
msgstr ""
+#: scene/3d/light.cpp
+#, fuzzy
+msgid "Angle Attenuation"
+msgstr "Animatie"
+
#: scene/3d/mesh_instance.cpp
msgid "Software Skinning"
msgstr ""
@@ -21143,6 +22612,63 @@ msgstr "As"
#: scene/3d/physics_body.cpp
#, fuzzy
+msgid "Linear X"
+msgstr "Lineair"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Linear Y"
+msgstr "Lineair"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Linear Z"
+msgstr "Lineair"
+
+#: scene/3d/physics_body.cpp
+msgid "Angular X"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Angular Y"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Angular Z"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Motion X"
+msgstr "Actie"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Motion Y"
+msgstr "Actie"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Motion Z"
+msgstr "Actie"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Move Lock X"
+msgstr "Knoop verplaatsen"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Move Lock Y"
+msgstr "Knoop verplaatsen"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Move Lock Z"
+msgstr "Knoop verplaatsen"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
msgid "Body Offset"
msgstr "Afstand:"
@@ -21176,6 +22702,15 @@ msgid "Exclude Nodes"
msgstr "VisualShader-knoop/knopen verwijderen"
#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Params"
+msgstr "Parameter veranderd:"
+
+#: scene/3d/physics_joint.cpp
+msgid "Impulse Clamp"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit"
msgstr ""
@@ -21189,6 +22724,55 @@ msgstr "Hoofdletters"
msgid "Lower"
msgstr "Kleine letters"
+#: scene/3d/physics_joint.cpp scene/3d/vehicle_body.cpp
+#, fuzzy
+msgid "Relaxation"
+msgstr "Afzondering:"
+
+#: scene/3d/physics_joint.cpp
+msgid "Motor"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Target Velocity"
+msgstr "Initialiseren"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Max Impulse"
+msgstr "Snelheid:"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit"
+msgstr "Lineair"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Upper Distance"
+msgstr "Selecteerafstand:"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Lower Distance"
+msgstr "Selecteerafstand:"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Restitution"
+msgstr "Beschrijving"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motion"
+msgstr "Initialiseren"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Ortho"
+msgstr "Orthogonaal"
+
#: scene/3d/physics_joint.cpp
#, fuzzy
msgid "Upper Angle"
@@ -21201,6 +22785,16 @@ msgstr "Kleine letters"
#: scene/3d/physics_joint.cpp
#, fuzzy
+msgid "Angular Motion"
+msgstr "Animatie"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Angular Ortho"
+msgstr "Max. Fout in hoek:"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
msgid "Swing Span"
msgstr "Scène aan het opslaan"
@@ -21209,17 +22803,99 @@ msgid "Twist Span"
msgstr ""
#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit X"
+msgstr "Lineair"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motor X"
+msgstr "Initialiseren"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Force Limit"
+msgstr "Teken Aanroepingen"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Spring X"
+msgstr "Lineair"
+
+#: scene/3d/physics_joint.cpp
+msgid "Equilibrium Point"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit X"
msgstr ""
#: scene/3d/physics_joint.cpp
+msgid "Erp"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Motor X"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Spring X"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit Y"
+msgstr "Lineair"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motor Y"
+msgstr "Initialiseren"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Spring Y"
+msgstr "Lineair"
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit Y"
msgstr ""
#: scene/3d/physics_joint.cpp
+msgid "Angular Motor Y"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Spring Y"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit Z"
+msgstr "Lineair"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motor Z"
+msgstr "Initialiseren"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Spring Z"
+msgstr "Lineair"
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit Z"
msgstr ""
+#: scene/3d/physics_joint.cpp
+msgid "Angular Motor Z"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Spring Z"
+msgstr ""
+
#: scene/3d/portal.cpp
msgid "The RoomManager should not be a child or grandchild of a Portal."
msgstr ""
@@ -21339,7 +23015,7 @@ msgstr ""
msgid "Use Default Simplify"
msgstr ""
-#: scene/3d/room.cpp
+#: scene/3d/room.cpp scene/3d/room_manager.cpp
msgid "Room Simplify"
msgstr ""
@@ -21378,6 +23054,13 @@ msgstr ""
msgid "Main"
msgstr ""
+#: scene/3d/room_manager.cpp scene/animation/animation_player.cpp
+#: scene/animation/animation_tree.cpp scene/animation/animation_tree_player.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+#, fuzzy
+msgid "Active"
+msgstr "Actie"
+
#: scene/3d/room_manager.cpp
msgid "Roomlist"
msgstr ""
@@ -21402,6 +23085,54 @@ msgid "Gameplay"
msgstr ""
#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Gameplay Monitor"
+msgstr "Monitor"
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Use Secondary PVS"
+msgstr "In stappen verschalen"
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Merge Meshes"
+msgstr "Mesh"
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Show Margins"
+msgstr "Toon Oorsprongspunt"
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Debug Sprawl"
+msgstr "Debuggen"
+
+#: scene/3d/room_manager.cpp
+msgid "Overlap Warning Threshold"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Preview Camera"
+msgstr "Voorbeeld"
+
+#: scene/3d/room_manager.cpp
+msgid "Portal Depth Limit"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Default Portal Margin"
+msgstr "Stel Marge In"
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Roaming Expansion Margin"
+msgstr "Alles uitklappen"
+
+#: scene/3d/room_manager.cpp
msgid ""
"RoomList path is invalid.\n"
"Please check the RoomList branch has been assigned in the RoomManager."
@@ -21529,6 +23260,20 @@ msgstr "Aan pixels kleven"
msgid "Billboard"
msgstr ""
+#: scene/3d/sprite_3d.cpp scene/resources/material.cpp
+#, fuzzy
+msgid "Transparent"
+msgstr "Transponeren"
+
+#: scene/3d/sprite_3d.cpp
+#, fuzzy
+msgid "Shaded"
+msgstr "Shader"
+
+#: scene/3d/sprite_3d.cpp
+msgid "Double Sided"
+msgstr ""
+
#: scene/3d/sprite_3d.cpp
msgid "Alpha Cut"
msgstr ""
@@ -21604,11 +23349,6 @@ msgstr "Stel expressie in"
msgid "Max Force"
msgstr "Fout"
-#: scene/3d/vehicle_body.cpp
-#, fuzzy
-msgid "Relaxation"
-msgstr "Afzondering:"
-
#: scene/3d/visibility_notifier.cpp
msgid "AABB"
msgstr ""
@@ -21752,7 +23492,7 @@ msgstr "X-Fade Tijd (en):"
#: scene/animation/animation_blend_tree.cpp
#, fuzzy
-msgid "autorestart_"
+msgid "Auto Restart"
msgstr "Automatische herstart:"
#: scene/animation/animation_blend_tree.cpp
@@ -21838,13 +23578,6 @@ msgstr "Klasse opties:"
msgid "Default Blend Time"
msgstr "Standaard"
-#: scene/animation/animation_player.cpp scene/animation/animation_tree.cpp
-#: scene/animation/animation_tree_player.cpp
-#: servers/audio/effects/audio_effect_delay.cpp
-#, fuzzy
-msgid "Active"
-msgstr "Actie"
-
#: scene/animation/animation_player.cpp
msgid "Method Call Mode"
msgstr ""
@@ -21969,10 +23702,6 @@ msgstr "Knoopouder wijzigen"
msgid "Max Iterations"
msgstr "Creëer Functie"
-#: scene/animation/tween.cpp scene/resources/texture.cpp
-msgid "Repeat"
-msgstr ""
-
#: scene/animation/tween.cpp
msgid "Playback Process Mode"
msgstr ""
@@ -22003,20 +23732,6 @@ msgstr "Selecteermodus"
msgid "Alignment"
msgstr ""
-#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
-#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
-#: scene/resources/style_box.cpp
-#, fuzzy
-msgid "Horizontal"
-msgstr "Horizontaal:"
-
-#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
-#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
-#: scene/resources/style_box.cpp
-#, fuzzy
-msgid "Vertical"
-msgstr "Verticaal:"
-
#: scene/gui/base_button.cpp
#, fuzzy
msgid "Shortcut In Tooltip"
@@ -22119,10 +23834,6 @@ msgid "HSV"
msgstr "HSV"
#: scene/gui/color_picker.cpp
-msgid "Raw"
-msgstr "Rauw"
-
-#: scene/gui/color_picker.cpp
msgid "Switch between hexadecimal and code values."
msgstr "Wissel tussen hexadecimaal en codewaarden."
@@ -22190,6 +23901,31 @@ msgid "Focus"
msgstr "Focus Pad"
#: scene/gui/control.cpp
+msgid "Neighbour Left"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Neighbour Top"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Neighbour Right"
+msgstr ""
+
+#: scene/gui/control.cpp
+#, fuzzy
+msgid "Neighbour Bottom"
+msgstr "Center onder"
+
+#: scene/gui/control.cpp
+msgid "Next"
+msgstr "Volgende"
+
+#: scene/gui/control.cpp
+msgid "Previous"
+msgstr "Vorige"
+
+#: scene/gui/control.cpp
msgid "Mouse"
msgstr ""
@@ -22227,7 +23963,7 @@ msgid "Dialog"
msgstr "XForm Dialoog"
#: scene/gui/dialogs.cpp
-msgid "Hide On Ok"
+msgid "Hide On OK"
msgstr ""
#: scene/gui/dialogs.cpp scene/gui/label.cpp
@@ -22326,7 +24062,7 @@ msgid "Timers"
msgstr "Tijd"
#: scene/gui/item_list.cpp scene/gui/popup_menu.cpp scene/gui/tree.cpp
-msgid "Incremental Search Max Interval (msec)"
+msgid "Incremental Search Max Interval Msec"
msgstr ""
#: scene/gui/item_list.cpp scene/gui/tree.cpp
@@ -22909,6 +24645,26 @@ msgstr "Center links"
msgid "Nine Patch Stretch"
msgstr "Interpolatiemodus"
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Left"
+msgstr "Stel Marge In"
+
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Top"
+msgstr "Stel Marge In"
+
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Right"
+msgstr "Stel Marge In"
+
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Bottom"
+msgstr "Selecteermodus"
+
#: scene/gui/tree.cpp
msgid "Custom Minimum Height"
msgstr ""
@@ -22946,8 +24702,9 @@ msgid "Paused"
msgstr ""
#: scene/gui/video_player.cpp
-msgid "Buffering (msec)"
-msgstr ""
+#, fuzzy
+msgid "Buffering Msec"
+msgstr "Achteraanzicht"
#: scene/gui/video_player.cpp
#, fuzzy
@@ -23304,6 +25061,22 @@ msgid "Shadow Atlas"
msgstr "Nieuwe atlas"
#: scene/main/viewport.cpp
+msgid "Quad 0"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 1"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 2"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 3"
+msgstr ""
+
+#: scene/main/viewport.cpp
#, fuzzy
msgid "Canvas Transform"
msgstr "Transform wissen"
@@ -23318,6 +25091,11 @@ msgid "Tooltip Delay (sec)"
msgstr ""
#: scene/register_scene_types.cpp
+#, fuzzy
+msgid "Swap OK Cancel"
+msgstr "Annuleer"
+
+#: scene/register_scene_types.cpp
msgid "Use hiDPI"
msgstr ""
@@ -23332,21 +25110,6 @@ msgid "Custom Font"
msgstr "Knopen knippen"
#: scene/resources/audio_stream_sample.cpp
-#, fuzzy
-msgid "Loop Mode"
-msgstr "Verplaatsingsmodus"
-
-#: scene/resources/audio_stream_sample.cpp
-#, fuzzy
-msgid "Loop Begin"
-msgstr "Verplaatsingsmodus"
-
-#: scene/resources/audio_stream_sample.cpp
-#, fuzzy
-msgid "Loop End"
-msgstr "Verplaatsingsmodus"
-
-#: scene/resources/audio_stream_sample.cpp
#: servers/audio/effects/audio_stream_generator.cpp servers/audio_server.cpp
#, fuzzy
msgid "Mix Rate"
@@ -23406,6 +25169,17 @@ msgstr "Extra Opties:"
#: scene/resources/dynamic_font.cpp
#, fuzzy
+msgid "Char"
+msgstr "Geldige karakters:"
+
+#: scene/resources/dynamic_font.cpp scene/resources/world.cpp
+#: scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Space"
+msgstr "Startscène"
+
+#: scene/resources/dynamic_font.cpp
+#, fuzzy
msgid "Font"
msgstr "Lettertypes"
@@ -23633,6 +25407,43 @@ msgid "Glow"
msgstr ""
#: scene/resources/environment.cpp
+#, fuzzy
+msgid "Levels"
+msgstr "Ontwikkelaars"
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "1"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "2"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "3"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "4"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "5"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "6"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "7"
+msgstr ""
+
+#: scene/resources/environment.cpp
msgid "Bloom"
msgstr ""
@@ -23725,10 +25536,68 @@ msgid "Next Pass"
msgstr "Volgend Blad"
#: scene/resources/material.cpp
+msgid "Use Shadow To Opacity"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Unshaded"
+msgstr "Weergave Zonder Shading"
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Vertex Lighting"
+msgstr "Directe verlichting"
+
+#: scene/resources/material.cpp
+msgid "No Depth Test"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Use Point Size"
+msgstr "Vooraanzicht"
+
+#: scene/resources/material.cpp
+msgid "World Triplanar"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Fixed Size"
+msgstr "Vooraanzicht"
+
+#: scene/resources/material.cpp
+msgid "Albedo Tex Force sRGB"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Do Not Receive Shadows"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Disable Ambient Light"
+msgstr "Rechts Inspringen"
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Ensure Correct Normals"
+msgstr "Transformatie Afgebroken."
+
+#: scene/resources/material.cpp
#, fuzzy
msgid "Vertex Color"
msgstr "Vertex"
+#: scene/resources/material.cpp
+msgid "Use As Albedo"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Is sRGB"
+msgstr ""
+
#: scene/resources/material.cpp servers/visual_server.cpp
#, fuzzy
msgid "Parameters"
@@ -23765,6 +25634,11 @@ msgid "Billboard Mode"
msgstr "Meetlatmodus"
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Billboard Keep Scale"
+msgstr "Meetlatmodus"
+
+#: scene/resources/material.cpp
msgid "Grow"
msgstr ""
@@ -23774,6 +25648,10 @@ msgid "Grow Amount"
msgstr "Hoeveelheid:"
#: scene/resources/material.cpp
+msgid "Use Alpha Scissor"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Alpha Scissor Threshold"
msgstr ""
@@ -23805,10 +25683,20 @@ msgid "Metallic Specular"
msgstr ""
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Metallic Texture"
+msgstr "Emissiebron: "
+
+#: scene/resources/material.cpp
msgid "Metallic Texture Channel"
msgstr ""
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Roughness Texture"
+msgstr "Verwijder Textuur"
+
+#: scene/resources/material.cpp
msgid "Roughness Texture Channel"
msgstr ""
@@ -23828,6 +25716,16 @@ msgid "Emission Operator"
msgstr "Emissiekleuren"
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Emission On UV2"
+msgstr "Emissiemasker"
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Emission Texture"
+msgstr "Emissiebron: "
+
+#: scene/resources/material.cpp
msgid "NormalMap"
msgstr ""
@@ -23842,6 +25740,11 @@ msgstr "Willekeurige Tilt:"
#: scene/resources/material.cpp
#, fuzzy
+msgid "Rim Texture"
+msgstr "Verwijder Textuur"
+
+#: scene/resources/material.cpp
+#, fuzzy
msgid "Clearcoat"
msgstr "Wissen"
@@ -23851,15 +25754,28 @@ msgid "Clearcoat Gloss"
msgstr "Houding wissen"
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Clearcoat Texture"
+msgstr "Bewerk Thema"
+
+#: scene/resources/material.cpp
msgid "Anisotropy"
msgstr ""
#: scene/resources/material.cpp
+msgid "Anisotropy Flowmap"
+msgstr ""
+
+#: scene/resources/material.cpp
#, fuzzy
msgid "Ambient Occlusion"
msgstr "Occlusie"
#: scene/resources/material.cpp
+msgid "On UV2"
+msgstr ""
+
+#: scene/resources/material.cpp
#, fuzzy
msgid "Texture Channel"
msgstr "TextureRegion"
@@ -23898,6 +25814,11 @@ msgstr "Overgang: "
#: scene/resources/material.cpp
#, fuzzy
+msgid "Transmission Texture"
+msgstr "Overgang: "
+
+#: scene/resources/material.cpp
+#, fuzzy
msgid "Refraction"
msgstr "Afzondering:"
@@ -23916,6 +25837,10 @@ msgid "UV1"
msgstr "UV"
#: scene/resources/material.cpp
+msgid "Triplanar"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Triplanar Sharpness"
msgstr ""
@@ -24126,6 +26051,16 @@ msgstr "Bewerk Thema"
msgid "Point Count"
msgstr "Voeg invoerpoort toe"
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Scale Random"
+msgstr "Schaal Ratio:"
+
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Scale Curve"
+msgstr "Sluit Curve"
+
#: scene/resources/physics_material.cpp
msgid "Rough"
msgstr ""
@@ -24188,10 +26123,6 @@ msgid "A"
msgstr ""
#: scene/resources/shader.cpp
-msgid "Code"
-msgstr ""
-
-#: scene/resources/shader.cpp
#, fuzzy
msgid "Custom Defines"
msgstr "Speel aangepaste scène af"
@@ -24288,15 +26219,6 @@ msgstr ""
#: scene/resources/texture.cpp
#, fuzzy
-msgid "Storage"
-msgstr "Bestand Opslaan:"
-
-#: scene/resources/texture.cpp
-msgid "Lossy Quality"
-msgstr ""
-
-#: scene/resources/texture.cpp
-#, fuzzy
msgid "Load Path"
msgstr "Laad voorinstelling"
@@ -24425,11 +26347,6 @@ msgstr "Ongeldige vergelijkingsfunctie voor dat type."
msgid "Fallback Environment"
msgstr "Bekijk Omgeving"
-#: scene/resources/world.cpp scene/resources/world_2d.cpp
-#, fuzzy
-msgid "Space"
-msgstr "Startscène"
-
#: scene/resources/world.cpp
#, fuzzy
msgid "Scenario"
@@ -24510,10 +26427,37 @@ msgstr ""
msgid "Wet"
msgstr ""
-#: servers/audio/effects/audio_effect_compressor.cpp
-msgid "Threshold"
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "Voice"
msgstr ""
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+msgid "Delay (ms)"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_phaser.cpp
+msgid "Rate Hz"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#, fuzzy
+msgid "Depth (ms)"
+msgstr "Diepte"
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+msgid "Level dB"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+#: servers/audio/effects/audio_effect_panner.cpp
+#, fuzzy
+msgid "Pan"
+msgstr "Blad:"
+
#: servers/audio/effects/audio_effect_compressor.cpp
#: servers/audio/effects/audio_effect_filter.cpp
msgid "Gain"
@@ -24537,20 +26481,6 @@ msgid "Tap 1"
msgstr ""
#: servers/audio/effects/audio_effect_delay.cpp
-msgid "Delay (ms)"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_delay.cpp
-msgid "Level dB"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_delay.cpp
-#: servers/audio/effects/audio_effect_panner.cpp
-#, fuzzy
-msgid "Pan"
-msgstr "Blad:"
-
-#: servers/audio/effects/audio_effect_delay.cpp
msgid "Tap 2"
msgstr ""
@@ -24612,10 +26542,6 @@ msgstr ""
msgid "Range Max Hz"
msgstr ""
-#: servers/audio/effects/audio_effect_phaser.cpp
-msgid "Rate Hz"
-msgstr ""
-
#: servers/audio/effects/audio_effect_pitch_shift.cpp
msgid "Oversampling"
msgstr ""
@@ -24631,7 +26557,7 @@ msgid "Predelay"
msgstr ""
#: servers/audio/effects/audio_effect_reverb.cpp
-msgid "(msec)"
+msgid "Msec"
msgstr ""
#: servers/audio/effects/audio_effect_reverb.cpp
diff --git a/editor/translations/or.po b/editor/translations/or.po
index 1fb7a73097..32491ee3a4 100644
--- a/editor/translations/or.po
+++ b/editor/translations/or.po
@@ -17,7 +17,7 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 3.8-dev\n"
-#: core/bind/core_bind.cpp
+#: core/bind/core_bind.cpp main/main.cpp
msgid "Tablet Driver"
msgstr ""
@@ -108,8 +108,8 @@ msgstr ""
#: core/bind/core_bind.cpp editor/editor_settings.cpp main/main.cpp
#: modules/gdscript/gdscript_editor.cpp modules/gridmap/grid_map.cpp
#: modules/mono/csharp_script.cpp modules/visual_script/visual_script_nodes.cpp
-#: scene/2d/tile_map.cpp scene/3d/camera.cpp scene/gui/control.cpp
-#: scene/gui/graph_edit.cpp scene/main/viewport.cpp
+#: scene/2d/tile_map.cpp scene/3d/camera.cpp scene/3d/light.cpp
+#: scene/gui/control.cpp scene/gui/graph_edit.cpp scene/main/viewport.cpp
#: scene/resources/dynamic_font.cpp scene/resources/navigation_mesh.cpp
#: scene/resources/primitive_meshes.cpp scene/resources/sky.cpp
#: scene/resources/style_box.cpp scene/resources/texture.cpp
@@ -202,8 +202,7 @@ msgid "Data"
msgstr ""
#: core/io/file_access_network.cpp core/register_core_types.cpp
-#: editor/editor_settings.cpp editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp main/main.cpp
+#: editor/editor_settings.cpp main/main.cpp
#: modules/gdscript/language_server/gdscript_language_server.cpp
msgid "Network"
msgstr ""
@@ -460,9 +459,10 @@ msgstr ""
msgid "Relative"
msgstr ""
-#: core/os/input_event.cpp scene/2d/camera_2d.cpp
-#: scene/3d/interpolated_camera.cpp scene/animation/animation_player.cpp
-#: scene/resources/environment.cpp
+#: core/os/input_event.cpp scene/2d/camera_2d.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/interpolated_camera.cpp
+#: scene/animation/animation_player.cpp scene/resources/environment.cpp
+#: scene/resources/particles_material.cpp
msgid "Speed"
msgstr ""
@@ -506,8 +506,9 @@ msgstr ""
msgid "Pitch"
msgstr ""
-#: core/os/input_event.cpp scene/2d/physics_body_2d.cpp
-#: scene/3d/physics_body.cpp
+#: core/os/input_event.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/physics_body_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/3d/physics_body.cpp scene/resources/particles_material.cpp
msgid "Velocity"
msgstr ""
@@ -524,6 +525,8 @@ msgid "Controller Value"
msgstr ""
#: core/project_settings.cpp editor/editor_node.cpp main/main.cpp
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/windows/export/export.cpp
msgid "Application"
msgstr ""
@@ -539,13 +542,16 @@ msgstr ""
#: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp
#: editor/editor_plugin_settings.cpp editor/editor_profiler.cpp
#: editor/project_manager.cpp editor/settings_config_dialog.cpp
-#: modules/gdnative/nativescript/nativescript.cpp scene/2d/area_2d.cpp
-#: scene/3d/area.cpp scene/main/node.cpp
+#: modules/gdnative/nativescript/nativescript.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/osx/export/export.cpp scene/2d/area_2d.cpp scene/3d/area.cpp
+#: scene/main/node.cpp
msgid "Name"
msgstr ""
#: core/project_settings.cpp editor/editor_help.cpp
-#: modules/visual_script/visual_script_nodes.cpp
+#: modules/visual_script/visual_script_nodes.cpp platform/uwp/export/export.cpp
+#: platform/windows/export/export.cpp
msgid "Description"
msgstr ""
@@ -581,7 +587,7 @@ msgid "Custom User Dir Name"
msgstr ""
#: core/project_settings.cpp editor/animation_track_editor.cpp
-#: editor/editor_audio_buses.cpp servers/audio_server.cpp
+#: editor/editor_audio_buses.cpp main/main.cpp servers/audio_server.cpp
msgid "Audio"
msgstr ""
@@ -732,10 +738,13 @@ msgstr ""
msgid "Sharpen Intensity"
msgstr ""
-#: core/project_settings.cpp editor/editor_node.cpp editor/editor_settings.cpp
-#: editor/plugins/script_editor_plugin.cpp editor/project_export.cpp
-#: main/main.cpp modules/gdscript/gdscript.cpp
-#: modules/visual_script/visual_script.cpp scene/3d/room_manager.cpp
+#: core/project_settings.cpp editor/editor_export.cpp editor/editor_node.cpp
+#: editor/editor_settings.cpp editor/plugins/script_editor_plugin.cpp
+#: editor/project_export.cpp main/main.cpp modules/gdscript/gdscript.cpp
+#: modules/visual_script/visual_script.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp scene/3d/room_manager.cpp
#: scene/main/scene_tree.cpp scene/resources/shape_2d.cpp
#: servers/visual_server.cpp
msgid "Debug"
@@ -957,6 +966,7 @@ msgid "Subsurface Scattering"
msgstr ""
#: drivers/gles3/rasterizer_scene_gles3.cpp
+#: editor/import/resource_importer_texture.cpp
#: editor/plugins/spatial_editor_plugin.cpp modules/gltf/gltf_node.cpp
#: modules/gridmap/grid_map.cpp scene/2d/cpu_particles_2d.cpp
#: scene/2d/node_2d.cpp scene/2d/parallax_layer.cpp scene/2d/polygon_2d.cpp
@@ -1252,6 +1262,7 @@ msgid "Editors"
msgstr ""
#: editor/animation_track_editor.cpp editor/editor_settings.cpp
+#: editor/import/resource_importer_scene.cpp
#: editor/plugins/animation_player_editor_plugin.cpp editor/scene_tree_dock.cpp
#: scene/2d/animated_sprite.cpp scene/2d/cpu_particles_2d.cpp
#: scene/2d/sprite.cpp scene/3d/cpu_particles.cpp scene/3d/sprite_3d.cpp
@@ -1468,14 +1479,14 @@ msgstr ""
msgid "Seconds"
msgstr ""
-#: editor/animation_track_editor.cpp
+#: editor/animation_track_editor.cpp editor/import/resource_importer_scene.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp main/main.cpp
#: scene/resources/texture.cpp
msgid "FPS"
msgstr ""
#: editor/animation_track_editor.cpp editor/editor_plugin_settings.cpp
-#: editor/editor_resource_picker.cpp
+#: editor/editor_resource_picker.cpp editor/import/resource_importer_wav.cpp
#: editor/plugins/polygon_2d_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
@@ -2417,7 +2428,9 @@ msgid "Remove Autoload"
msgstr ""
#: editor/editor_autoload_settings.cpp editor/editor_plugin_settings.cpp
-#: modules/gdscript/gdscript.cpp scene/2d/polygon_2d.cpp scene/3d/area.cpp
+#: modules/gdscript/gdscript.cpp platform/android/export/export_plugin.cpp
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#: scene/2d/polygon_2d.cpp scene/3d/area.cpp scene/3d/physics_joint.cpp
#: scene/3d/reflection_probe.cpp scene/main/canvas_layer.cpp
#: scene/resources/material.cpp servers/visual_server.cpp
msgid "Enable"
@@ -2570,6 +2583,55 @@ msgstr ""
#: editor/editor_export.cpp platform/android/export/export_plugin.cpp
#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
+msgid "Custom Template"
+msgstr ""
+
+#: editor/editor_export.cpp editor/project_export.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp
+msgid "Release"
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Binary Format"
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "64 Bits"
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Embed PCK"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "Texture Format"
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "BPTC"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "S3TC"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "ETC"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "ETC2"
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "No BPTC Fallbacks"
+msgstr ""
+
+#: editor/editor_export.cpp platform/android/export/export_plugin.cpp
+#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
msgid "Custom debug template not found."
msgstr ""
@@ -2743,6 +2805,7 @@ msgid "Make Current"
msgstr ""
#: editor/editor_feature_profile.cpp editor/editor_node.cpp
+#: editor/import/resource_importer_scene.cpp
#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
msgid "Import"
msgstr ""
@@ -2867,8 +2930,11 @@ msgstr ""
msgid "Display Mode"
msgstr ""
-#: editor/editor_file_dialog.cpp main/main.cpp modules/csg/csg_shape.cpp
-#: modules/visual_script/visual_script_nodes.cpp
+#: editor/editor_file_dialog.cpp
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+#: editor/import/resource_importer_wav.cpp main/main.cpp
+#: modules/csg/csg_shape.cpp modules/visual_script/visual_script_nodes.cpp
#: modules/visual_script/visual_script_yield_nodes.cpp scene/2d/light_2d.cpp
#: scene/2d/physics_body_2d.cpp scene/2d/tile_map.cpp
#: scene/3d/baked_lightmap.cpp scene/3d/light.cpp scene/3d/physics_body.cpp
@@ -3000,7 +3066,9 @@ msgstr ""
msgid "Reimport Missing Imported Files"
msgstr ""
-#: editor/editor_help.cpp
+#: editor/editor_help.cpp scene/2d/camera_2d.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/resources/dynamic_font.cpp
+#: scene/resources/style_box.cpp
msgid "Top"
msgstr ""
@@ -3052,6 +3120,7 @@ msgid "Fonts"
msgstr ""
#: editor/editor_help.cpp editor/plugins/theme_editor_plugin.cpp
+#: platform/iphone/export/export.cpp
msgid "Icons"
msgstr ""
@@ -3210,7 +3279,9 @@ msgstr ""
msgid "Pin value [Disabled because '%s' is editor-only]"
msgstr ""
-#: editor/editor_inspector.cpp editor/scene_tree_dock.cpp
+#: editor/editor_inspector.cpp
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+#: editor/scene_tree_dock.cpp
#: modules/visual_script/visual_script_func_nodes.cpp
#: modules/visual_script/visual_script_nodes.cpp
#: modules/visual_script/visual_script_property_selector.cpp
@@ -3521,6 +3592,14 @@ msgid "Quick Open Script..."
msgstr ""
#: editor/editor_node.cpp
+msgid "Save & Reload"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Save changes to '%s' before reloading?"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "Save & Close"
msgstr ""
@@ -3631,6 +3710,10 @@ msgid "Open Project Manager?"
msgstr ""
#: editor/editor_node.cpp
+msgid "Save changes to the following scene(s) before reloading?"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "Save & Quit"
msgstr ""
@@ -3870,7 +3953,7 @@ msgid "Update Vital Only"
msgstr ""
#: editor/editor_node.cpp
-msgid "Translate Properties"
+msgid "Localize Settings"
msgstr ""
#: editor/editor_node.cpp
@@ -3886,7 +3969,7 @@ msgid "Inspector"
msgstr ""
#: editor/editor_node.cpp
-msgid "Capitalize Properties"
+msgid "Default Property Name Style"
msgstr ""
#: editor/editor_node.cpp
@@ -4445,7 +4528,9 @@ msgstr ""
msgid "Update"
msgstr ""
-#: editor/editor_plugin_settings.cpp
+#: editor/editor_plugin_settings.cpp platform/android/export/export_plugin.cpp
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp
msgid "Version"
msgstr ""
@@ -5380,7 +5465,7 @@ msgstr ""
msgid "Rect Custom Position"
msgstr ""
-#: editor/editor_settings.cpp
+#: editor/editor_settings.cpp platform/android/export/export_plugin.cpp
msgid "Screen"
msgstr ""
@@ -5403,6 +5488,19 @@ msgid "Editor SSL Certificates"
msgstr ""
#: editor/editor_settings.cpp
+msgid "HTTP Proxy"
+msgstr ""
+
+#: editor/editor_settings.cpp
+msgid "Host"
+msgstr ""
+
+#: editor/editor_settings.cpp editor/fileserver/editor_file_server.cpp
+#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp
+msgid "Port"
+msgstr ""
+
+#: editor/editor_settings.cpp
msgid "Project Manager"
msgstr ""
@@ -5442,7 +5540,8 @@ msgstr ""
msgid "String Color"
msgstr ""
-#: editor/editor_settings.cpp
+#: editor/editor_settings.cpp platform/javascript/export/export.cpp
+#: platform/uwp/export/export.cpp
msgid "Background Color"
msgstr ""
@@ -5600,22 +5699,6 @@ msgid "Starting the download..."
msgstr ""
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "HTTP Proxy"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Host"
-msgstr ""
-
-#: editor/export_template_manager.cpp editor/fileserver/editor_file_server.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp main/main.cpp
-#: modules/mono/mono_gd/gd_mono.cpp
-msgid "Port"
-msgstr ""
-
-#: editor/export_template_manager.cpp
msgid "Error requesting URL:"
msgstr ""
@@ -5857,6 +5940,7 @@ msgstr ""
#: editor/fileserver/editor_file_server.cpp
#: editor/plugins/version_control_editor_plugin.cpp
+#: platform/uwp/export/export.cpp platform/windows/export/export.cpp
msgid "Password"
msgstr ""
@@ -6220,6 +6304,105 @@ msgstr ""
msgid "Use Ambient"
msgstr ""
+#: editor/import/resource_importer_bitmask.cpp
+msgid "Create From"
+msgstr ""
+
+#: editor/import/resource_importer_bitmask.cpp
+#: servers/audio/effects/audio_effect_compressor.cpp
+msgid "Threshold"
+msgstr ""
+
+#: editor/import/resource_importer_csv_translation.cpp
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_scene.cpp
+#: editor/import/resource_importer_texture.cpp
+#: editor/import/resource_importer_wav.cpp scene/3d/gi_probe.cpp
+msgid "Compress"
+msgstr ""
+
+#: editor/import/resource_importer_csv_translation.cpp
+msgid "Delimiter"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+msgid "No BPTC If RGB"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/sprite_3d.cpp
+#: scene/resources/material.cpp scene/resources/particles_material.cpp
+#: scene/resources/texture.cpp
+msgid "Flags"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/animation/tween.cpp
+#: scene/resources/texture.cpp
+msgid "Repeat"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/2d/light_2d.cpp
+#: scene/gui/control.cpp scene/resources/navigation_mesh.cpp
+msgid "Filter"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+msgid "Mipmaps"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+msgid "Anisotropic"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+msgid "sRGB"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+msgid "Slices"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
+#: scene/resources/style_box.cpp
+msgid "Horizontal"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
+#: scene/resources/style_box.cpp
+msgid "Vertical"
+msgstr ""
+
+#: editor/import/resource_importer_obj.cpp
+msgid "Generate Tangents"
+msgstr ""
+
+#: editor/import/resource_importer_obj.cpp
+msgid "Scale Mesh"
+msgstr ""
+
+#: editor/import/resource_importer_obj.cpp
+msgid "Offset Mesh"
+msgstr ""
+
+#: editor/import/resource_importer_obj.cpp
+#: editor/import/resource_importer_scene.cpp
+msgid "Octahedral Compression"
+msgstr ""
+
+#: editor/import/resource_importer_obj.cpp
+msgid "Optimize Mesh Flags"
+msgstr ""
+
#: editor/import/resource_importer_scene.cpp
msgid "Import as Single Scene"
msgstr ""
@@ -6260,6 +6443,131 @@ msgstr ""
msgid "Import as Multiple Scenes+Materials"
msgstr ""
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+#: scene/3d/physics_joint.cpp
+msgid "Nodes"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Root Type"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Root Name"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Root Scale"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Custom Script"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp scene/resources/texture.cpp
+msgid "Storage"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Use Legacy Names"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+msgid "Materials"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp platform/osx/export/export.cpp
+msgid "Location"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Keep On Reimport"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+msgid "Meshes"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Ensure Tangents"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Light Baking"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Lightmap Texel Size"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+msgid "Skins"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Use Named Skins"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "External Files"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Store In Subdir"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Filter Script"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Keep Custom Tracks"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Optimizer"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp main/main.cpp
+#: modules/mono/mono_gd/gd_mono.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp scene/2d/camera_2d.cpp scene/2d/light_2d.cpp
+#: scene/2d/navigation_polygon.cpp scene/2d/ray_cast_2d.cpp scene/2d/sprite.cpp
+#: scene/2d/y_sort.cpp scene/3d/audio_stream_player_3d.cpp
+#: scene/3d/baked_lightmap.cpp scene/3d/interpolated_camera.cpp
+#: scene/3d/light.cpp scene/3d/navigation_mesh_instance.cpp
+#: scene/3d/physics_joint.cpp scene/3d/ray_cast.cpp scene/3d/sprite_3d.cpp
+#: scene/gui/graph_edit.cpp scene/gui/rich_text_label.cpp
+#: scene/resources/curve.cpp scene/resources/environment.cpp
+#: scene/resources/material.cpp
+msgid "Enabled"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Max Linear Error"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Max Angular Error"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Max Angle"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Remove Unused Tracks"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Clips"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/particles_2d.cpp scene/3d/area.cpp scene/3d/cpu_particles.cpp
+#: scene/3d/particles.cpp scene/resources/environment.cpp
+msgid "Amount"
+msgstr ""
+
#: editor/import/resource_importer_scene.cpp
#: editor/plugins/mesh_library_editor_plugin.cpp
msgid "Import Scene"
@@ -6301,12 +6609,132 @@ msgstr ""
msgid "Saving..."
msgstr ""
+#: editor/import/resource_importer_texture.cpp scene/resources/texture.cpp
+msgid "Lossy Quality"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "HDR Mode"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "BPTC LDR"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/mesh_instance_2d.cpp scene/2d/multimesh_instance_2d.cpp
+#: scene/2d/particles_2d.cpp scene/2d/sprite.cpp scene/resources/style_box.cpp
+msgid "Normal Map"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Process"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Fix Alpha Border"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Premult Alpha"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Hdr As Srgb"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Invert Color"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Normal Map Invert Y"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
+#: scene/audio/audio_stream_player.cpp scene/gui/video_player.cpp
+msgid "Stream"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Size Limit"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Detect 3D"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "SVG"
+msgstr ""
+
#: editor/import/resource_importer_texture.cpp
msgid ""
"Warning, no suitable PC VRAM compression enabled in Project Settings. This "
"texture will not display correctly on PC."
msgstr ""
+#: editor/import/resource_importer_texture_atlas.cpp
+msgid "Atlas File"
+msgstr ""
+
+#: editor/import/resource_importer_texture_atlas.cpp
+msgid "Import Mode"
+msgstr ""
+
+#: editor/import/resource_importer_texture_atlas.cpp
+msgid "Crop To Region"
+msgstr ""
+
+#: editor/import/resource_importer_texture_atlas.cpp
+msgid "Trim Alpha Border From Region"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp scene/2d/physics_body_2d.cpp
+msgid "Force"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+msgid "8 Bit"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp main/main.cpp
+#: modules/mono/editor/csharp_project.cpp modules/mono/mono_gd/gd_mono.cpp
+msgid "Mono"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+msgid "Max Rate"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+msgid "Max Rate Hz"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+msgid "Trim"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+msgid "Normalize"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+msgid "Loop Mode"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+msgid "Loop Begin"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+msgid "Loop End"
+msgstr ""
+
#: editor/import_defaults_editor.cpp
msgid "Select Importer"
msgstr ""
@@ -6375,6 +6803,26 @@ msgid "Failed to load resource."
msgstr ""
#: editor/inspector_dock.cpp
+msgid "Property Name Style"
+msgstr ""
+
+#: editor/inspector_dock.cpp scene/gui/color_picker.cpp
+msgid "Raw"
+msgstr ""
+
+#: editor/inspector_dock.cpp
+msgid "Capitalized"
+msgstr ""
+
+#: editor/inspector_dock.cpp
+msgid "Localized"
+msgstr ""
+
+#: editor/inspector_dock.cpp
+msgid "Localization not available for current language."
+msgstr ""
+
+#: editor/inspector_dock.cpp
msgid "Copy Properties"
msgstr ""
@@ -7403,18 +7851,22 @@ msgid "License (Z-A)"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
+msgctxt "Pagination"
msgid "First"
msgstr ""
-#: editor/plugins/asset_library_editor_plugin.cpp scene/gui/control.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgctxt "Pagination"
msgid "Previous"
msgstr ""
-#: editor/plugins/asset_library_editor_plugin.cpp scene/gui/control.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgctxt "Pagination"
msgid "Next"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
+msgctxt "Pagination"
msgid "Last"
msgstr ""
@@ -7648,19 +8100,19 @@ msgid ""
"margins."
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Top Left"
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Top Right"
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Bottom Right"
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Bottom Left"
msgstr ""
@@ -8353,6 +8805,18 @@ msgstr ""
msgid "Gradient Edited"
msgstr ""
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+msgid "Swap GradientTexture2D Fill Points"
+msgstr ""
+
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+msgid "Swap Gradient Fill Points"
+msgstr ""
+
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+msgid "Toggle Grid Snap"
+msgstr ""
+
#: editor/plugins/item_list_editor_plugin.cpp
msgid "Item %d"
msgstr ""
@@ -8566,8 +9030,8 @@ msgid ""
"%s"
msgstr ""
-#: editor/plugins/mesh_library_editor_plugin.cpp modules/gridmap/grid_map.cpp
-msgid "Mesh Library"
+#: editor/plugins/mesh_library_editor_plugin.cpp
+msgid "MeshLibrary"
msgstr ""
#: editor/plugins/mesh_library_editor_plugin.cpp
@@ -9535,8 +9999,8 @@ msgstr ""
msgid "Source"
msgstr ""
-#: editor/plugins/script_text_editor.cpp scene/3d/interpolated_camera.cpp
-#: scene/animation/skeleton_ik.cpp
+#: editor/plugins/script_text_editor.cpp platform/uwp/export/export.cpp
+#: scene/3d/interpolated_camera.cpp scene/animation/skeleton_ik.cpp
msgid "Target"
msgstr ""
@@ -10493,7 +10957,9 @@ msgstr ""
#: editor/plugins/sprite_frames_editor_plugin.cpp
#: modules/gltf/gltf_animation.cpp modules/minimp3/audio_stream_mp3.cpp
-#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp scene/2d/path_2d.cpp
+#: modules/minimp3/resource_importer_mp3.cpp
+#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp
+#: modules/stb_vorbis/resource_importer_ogg_vorbis.cpp scene/2d/path_2d.cpp
#: scene/3d/path.cpp scene/resources/animation.cpp scene/resources/material.cpp
msgid "Loop"
msgstr ""
@@ -11353,8 +11819,9 @@ msgstr ""
msgid "Priority"
msgstr ""
-#: editor/plugins/tile_set_editor_plugin.cpp main/main.cpp scene/gui/button.cpp
-#: scene/gui/item_list.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp main/main.cpp
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#: scene/gui/button.cpp scene/gui/item_list.cpp
msgid "Icon"
msgstr ""
@@ -12633,10 +13100,6 @@ msgid ""
msgstr ""
#: editor/project_export.cpp
-msgid "Release"
-msgstr ""
-
-#: editor/project_export.cpp
msgid "Exporting All"
msgstr ""
@@ -14396,6 +14859,7 @@ msgid "Change AudioStreamPlayer3D Emission Angle"
msgstr ""
#: editor/spatial_editor_gizmos.cpp modules/gltf/gltf_node.cpp
+#: platform/osx/export/export.cpp
msgid "Camera"
msgstr ""
@@ -14656,7 +15120,8 @@ msgstr ""
msgid "Use Nvidia Rect Flicker Workaround"
msgstr ""
-#: main/main.cpp platform/uwp/os_uwp.cpp
+#: main/main.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp platform/uwp/os_uwp.cpp
msgid "Display"
msgstr ""
@@ -14711,18 +15176,6 @@ msgstr ""
msgid "Allowed"
msgstr ""
-#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp scene/2d/camera_2d.cpp
-#: scene/2d/light_2d.cpp scene/2d/navigation_polygon.cpp
-#: scene/2d/ray_cast_2d.cpp scene/2d/sprite.cpp scene/2d/y_sort.cpp
-#: scene/3d/audio_stream_player_3d.cpp scene/3d/baked_lightmap.cpp
-#: scene/3d/interpolated_camera.cpp scene/3d/light.cpp
-#: scene/3d/navigation_mesh_instance.cpp scene/3d/ray_cast.cpp
-#: scene/3d/sprite_3d.cpp scene/gui/graph_edit.cpp
-#: scene/gui/rich_text_label.cpp scene/resources/curve.cpp
-#: scene/resources/environment.cpp
-msgid "Enabled"
-msgstr ""
-
#: main/main.cpp
msgid "Intended Usage"
msgstr ""
@@ -14751,12 +15204,13 @@ msgstr ""
msgid "Handheld"
msgstr ""
-#: main/main.cpp
+#: main/main.cpp platform/javascript/export/export.cpp
+#: platform/uwp/export/export.cpp
msgid "Orientation"
msgstr ""
#: main/main.cpp scene/gui/scroll_container.cpp scene/gui/text_edit.cpp
-#: scene/main/scene_tree.cpp
+#: scene/main/scene_tree.cpp scene/register_scene_types.cpp
msgid "Common"
msgstr ""
@@ -14795,7 +15249,7 @@ msgid "Verbose stdout"
msgstr ""
#: main/main.cpp
-msgid "Frame Delay (msec)"
+msgid "Frame Delay Msec"
msgstr ""
#: main/main.cpp
@@ -14912,11 +15366,6 @@ msgstr ""
msgid "Tooltip Position Offset"
msgstr ""
-#: main/main.cpp modules/mono/editor/csharp_project.cpp
-#: modules/mono/mono_gd/gd_mono.cpp
-msgid "Mono"
-msgstr ""
-
#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp
msgid "Debugger Agent"
msgstr ""
@@ -15434,7 +15883,7 @@ msgstr ""
msgid "Intensity"
msgstr ""
-#: modules/gltf/gltf_light.cpp scene/2d/light_2d.cpp
+#: modules/gltf/gltf_light.cpp scene/2d/light_2d.cpp scene/3d/light.cpp
msgid "Range"
msgstr ""
@@ -15564,10 +16013,6 @@ msgstr ""
msgid "Use Named Skin Binds"
msgstr ""
-#: modules/gltf/gltf_state.cpp scene/3d/physics_joint.cpp
-msgid "Nodes"
-msgstr ""
-
#: modules/gltf/gltf_state.cpp
msgid "Buffer Views"
msgstr ""
@@ -15577,14 +16022,6 @@ msgid "Accessors"
msgstr ""
#: modules/gltf/gltf_state.cpp
-msgid "Meshes"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp
-msgid "Materials"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp
msgid "Scene Name"
msgstr ""
@@ -15598,15 +16035,11 @@ msgstr ""
msgid "Textures"
msgstr ""
-#: modules/gltf/gltf_state.cpp
+#: modules/gltf/gltf_state.cpp platform/uwp/export/export.cpp
msgid "Images"
msgstr ""
#: modules/gltf/gltf_state.cpp
-msgid "Skins"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp
msgid "Cameras"
msgstr ""
@@ -15635,10 +16068,14 @@ msgid "Src Image"
msgstr ""
#: modules/gridmap/grid_map.cpp
-msgid "Physics Material"
+msgid "Mesh Library"
msgstr ""
#: modules/gridmap/grid_map.cpp
+msgid "Physics Material"
+msgstr ""
+
+#: modules/gridmap/grid_map.cpp scene/3d/visual_instance.cpp
msgid "Use In Baked Light"
msgstr ""
@@ -15665,6 +16102,7 @@ msgstr ""
#: modules/gridmap/grid_map.cpp scene/2d/collision_object_2d.cpp
#: scene/2d/tile_map.cpp scene/3d/collision_object.cpp scene/3d/soft_body.cpp
+#: scene/resources/material.cpp
msgid "Mask"
msgstr ""
@@ -15845,7 +16283,9 @@ msgid "Ultra Quality Ray Count"
msgstr ""
#: modules/minimp3/audio_stream_mp3.cpp
+#: modules/minimp3/resource_importer_mp3.cpp
#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp
+#: modules/stb_vorbis/resource_importer_ogg_vorbis.cpp
msgid "Loop Offset"
msgstr ""
@@ -16867,6 +17307,162 @@ msgid "The package must have at least one '.' separator."
msgstr ""
#: platform/android/export/export_plugin.cpp
+msgid "Use Custom Build"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Export Format"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Keystore"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Debug User"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+msgid "Debug Password"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Release User"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Release Password"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "One Click Deploy"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Clear Previous Install"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp scene/resources/shader.cpp
+msgid "Code"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Min SDK"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Target SDK"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+msgid "Package"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+msgid "Unique Name"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Signed"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Classify As Game"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Retain Data On Uninstall"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Exclude From Recents"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Graphics"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "OpenGL Debug"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "XR Features"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "XR Mode"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Hand Tracking"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Hand Tracking Frequency"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Passthrough"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Immersive Mode"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Support Small"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Support Normal"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Support Large"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Support Xlarge"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "User Data Backup"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Allow"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+msgid "Command Line"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+msgid "Extra Args"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "APK Expansion"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Salt"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Public Key"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Permissions"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Custom Permissions"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
msgid "Select device from the list"
msgstr ""
@@ -17152,6 +17748,159 @@ msgid "The character '%s' is not allowed in Identifier."
msgstr ""
#: platform/iphone/export/export.cpp
+msgid "App Store Team ID"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Provisioning Profile UUID Debug"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Code Sign Identity Debug"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Export Method Debug"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Provisioning Profile UUID Release"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Code Sign Identity Release"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Export Method Release"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Targeted Device Family"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Info"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Identifier"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Signature"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Short Version"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/windows/export/export.cpp
+msgid "Copyright"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Capabilities"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Access Wi-Fi"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Push Notifications"
+msgstr ""
+
+#: platform/iphone/export/export.cpp scene/3d/baked_lightmap.cpp
+msgid "User Data"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Accessible From Files App"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Accessible From Itunes Sharing"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Privacy"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Camera Usage Description"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Microphone Usage Description"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Photolibrary Usage Description"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPhone 120 X 120"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPhone 180 X 180"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 76 X 76"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 152 X 152"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 167 X 167"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "App Store 1024 X 1024"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Spotlight 40 X 40"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Spotlight 80 X 80"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Storyboard"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Use Launch Screen Storyboard"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Image Scale Mode"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Custom Image @2x"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Custom Image @3x"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Use Custom BG Color"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Custom BG Color"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
msgid "App Store Team ID not specified - cannot configure the project."
msgstr ""
@@ -17188,6 +17937,74 @@ msgid "Could not read file:"
msgstr ""
#: platform/javascript/export/export.cpp
+msgid "Variant"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Export Type"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "VRAM Texture Compression"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "For Desktop"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "For Mobile"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Html"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Export Icon"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Custom Html Shell"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Head Include"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Canvas Resize Policy"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Focus Canvas On Start"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Experimental Virtual Keyboard"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Progressive Web App"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Offline Page"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 144 X 144"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 180 X 180"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 512 X 512"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
msgid "Could not read HTML shell:"
msgstr ""
@@ -17292,6 +18109,175 @@ msgid "Unknown object type."
msgstr ""
#: platform/osx/export/export.cpp
+msgid "App Category"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "High Res"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Location Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Address Book Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Calendar Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Photos Library Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Desktop Folder Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Documents Folder Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Downloads Folder Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Network Volumes Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Removable Volumes Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+msgid "Codesign"
+msgstr ""
+
+#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
+#: platform/windows/export/export.cpp
+msgid "Identity"
+msgstr ""
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+msgid "Timestamp"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Hardened Runtime"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Replace Existing Signature"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Entitlements"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Custom File"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Allow JIT Code Execution"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Allow Unsigned Executable Memory"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Allow Dyld Environment Variables"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Disable Library Validation"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Audio Input"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Address Book"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Calendars"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Photos Library"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Apple Events"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Debugging"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "App Sandbox"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Network Server"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Network Client"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Device Usb"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Device Bluetooth"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Files Downloads"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Files Pictures"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Files Music"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Files Movies"
+msgstr ""
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+msgid "Custom Options"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Apple ID Name"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Apple ID Password"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Apple Team ID"
+msgstr ""
+
+#: platform/osx/export/export.cpp
msgid ""
"Note: The notarization process generally takes less than an hour. When the "
"process is completed, you'll receive an email."
@@ -17481,6 +18467,122 @@ msgid "Force Builtin Codesign"
msgstr ""
#: platform/uwp/export/export.cpp
+msgid "Architecture"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Display Name"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Short Name"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Publisher"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Publisher Display Name"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Product Guid"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Publisher Guid"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Signing"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Certificate"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Algorithm"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Major"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Minor"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Build"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Revision"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Landscape"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Portrait"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Landscape Flipped"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Portrait Flipped"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Store Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 44 X 44 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 71 X 71 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 150 X 150 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 310 X 310 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Wide 310 X 150 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Splash Screen"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Tiles"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Square 150 X 150"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Wide 310 X 150"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Square 310 X 310"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
msgid "Invalid package short name."
msgstr ""
@@ -17545,11 +18647,43 @@ msgid "Debug Certificate"
msgstr ""
#: platform/uwp/export/export.cpp
-msgid "Debug Password"
+msgid "Debug Algorithm"
msgstr ""
-#: platform/uwp/export/export.cpp
-msgid "Debug Algorithm"
+#: platform/windows/export/export.cpp
+msgid "Identity Type"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Timestamp Server URL"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Digest Algorithm"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "File Version"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Product Version"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Company Name"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Product Name"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "File Description"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Trademarks"
msgstr ""
#: platform/windows/export/export.cpp
@@ -17616,12 +18750,14 @@ msgstr ""
msgid "Centered"
msgstr ""
-#: scene/2d/animated_sprite.cpp scene/2d/camera_2d.cpp scene/2d/light_2d.cpp
+#: scene/2d/animated_sprite.cpp scene/2d/camera_2d.cpp
+#: scene/2d/cpu_particles_2d.cpp scene/2d/light_2d.cpp
#: scene/2d/parallax_background.cpp scene/2d/parallax_layer.cpp
#: scene/2d/path_2d.cpp scene/2d/polygon_2d.cpp scene/2d/sprite.cpp
-#: scene/3d/path.cpp scene/3d/physics_body.cpp scene/3d/sprite_3d.cpp
-#: scene/gui/graph_node.cpp scene/gui/rich_text_effect.cpp
-#: scene/main/canvas_layer.cpp scene/resources/material.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/path.cpp scene/3d/physics_body.cpp
+#: scene/3d/sprite_3d.cpp scene/gui/graph_node.cpp
+#: scene/gui/rich_text_effect.cpp scene/main/canvas_layer.cpp
+#: scene/resources/material.cpp scene/resources/particles_material.cpp
#: scene/resources/style_box.cpp
msgid "Offset"
msgstr ""
@@ -17685,11 +18821,6 @@ msgstr ""
msgid "Override"
msgstr ""
-#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
-#: scene/audio/audio_stream_player.cpp scene/gui/video_player.cpp
-msgid "Stream"
-msgstr ""
-
#: scene/2d/audio_stream_player_2d.cpp scene/audio/audio_stream_player.cpp
#: scene/gui/video_player.cpp servers/audio/effects/audio_effect_amplify.cpp
msgid "Volume dB"
@@ -17713,12 +18844,12 @@ msgid "Stream Paused"
msgstr ""
#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
-#: scene/3d/reflection_probe.cpp scene/3d/visual_instance.cpp
-#: scene/resources/material.cpp
+#: scene/3d/light.cpp scene/3d/reflection_probe.cpp
+#: scene/3d/visual_instance.cpp scene/resources/material.cpp
msgid "Max Distance"
msgstr ""
-#: scene/2d/audio_stream_player_2d.cpp
+#: scene/2d/audio_stream_player_2d.cpp scene/3d/light.cpp
msgid "Attenuation"
msgstr ""
@@ -17765,6 +18896,21 @@ msgstr ""
msgid "Limit"
msgstr ""
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/style_box.cpp
+msgid "Left"
+msgstr ""
+
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/style_box.cpp
+msgid "Right"
+msgstr ""
+
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/dynamic_font.cpp scene/resources/style_box.cpp
+msgid "Bottom"
+msgstr ""
+
#: scene/2d/camera_2d.cpp
msgid "Smoothed"
msgstr ""
@@ -17958,12 +19104,6 @@ msgstr ""
msgid "Emitting"
msgstr ""
-#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp scene/3d/area.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
-#: scene/resources/environment.cpp
-msgid "Amount"
-msgstr ""
-
#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp
#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
msgid "Lifetime"
@@ -18023,17 +19163,12 @@ msgstr ""
#: scene/2d/mesh_instance_2d.cpp scene/2d/multimesh_instance_2d.cpp
#: scene/2d/particles_2d.cpp scene/2d/polygon_2d.cpp scene/2d/sprite.cpp
#: scene/3d/sprite_3d.cpp scene/gui/nine_patch_rect.cpp
-#: scene/gui/texture_rect.cpp scene/resources/sky.cpp
-#: scene/resources/style_box.cpp scene/resources/visual_shader_nodes.cpp
+#: scene/gui/texture_rect.cpp scene/resources/material.cpp
+#: scene/resources/sky.cpp scene/resources/style_box.cpp
+#: scene/resources/visual_shader_nodes.cpp
msgid "Texture"
msgstr ""
-#: scene/2d/cpu_particles_2d.cpp scene/2d/mesh_instance_2d.cpp
-#: scene/2d/multimesh_instance_2d.cpp scene/2d/particles_2d.cpp
-#: scene/2d/sprite.cpp scene/resources/style_box.cpp
-msgid "Normal Map"
-msgstr ""
-
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
msgid "Emission Shape"
@@ -18053,9 +19188,8 @@ msgid "Normals"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/3d/sprite_3d.cpp scene/resources/material.cpp
-#: scene/resources/particles_material.cpp scene/resources/texture.cpp
-msgid "Flags"
+#: scene/resources/particles_material.cpp
+msgid "Align Y"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
@@ -18075,6 +19209,11 @@ msgid "Initial Velocity"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Velocity Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp servers/physics_2d_server.cpp
#: servers/physics_server.cpp
msgid "Angular Velocity"
@@ -18082,6 +19221,11 @@ msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+msgid "Velocity Curve"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
msgid "Orbit Velocity"
msgstr ""
@@ -18092,6 +19236,21 @@ msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+msgid "Accel"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Accel Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Accel Curve"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
msgid "Radial Accel"
msgstr ""
@@ -18101,19 +19260,51 @@ msgid "Tangential Accel"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/2d/joints_2d.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/vehicle_body.cpp
-#: scene/resources/particles_material.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/physics_joint.cpp
+#: scene/3d/vehicle_body.cpp scene/resources/particles_material.cpp
#: servers/audio/effects/audio_effect_reverb.cpp
msgid "Damping"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+msgid "Damping Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Damping Curve"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp scene/3d/light.cpp
+#: scene/resources/particles_material.cpp
msgid "Angle"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+msgid "Angle Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Angle Curve"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+msgid "Scale Amount"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+msgid "Scale Amount Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+msgid "Scale Amount Curve"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
msgid "Color Ramp"
msgstr ""
@@ -18127,6 +19318,41 @@ msgstr ""
msgid "Hue Variation"
msgstr ""
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Variation"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Variation Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Variation Curve"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Speed Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Speed Curve"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Offset Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Offset Curve"
+msgstr ""
+
#: scene/2d/joints_2d.cpp
msgid "Node A and Node B must be PhysicsBody2Ds"
msgstr ""
@@ -18156,6 +19382,7 @@ msgid "Node B"
msgstr ""
#: scene/2d/joints_2d.cpp scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp
+#: scene/3d/light.cpp scene/3d/physics_joint.cpp
#: scene/resources/environment.cpp
msgid "Bias"
msgstr ""
@@ -18164,7 +19391,7 @@ msgstr ""
msgid "Disable Collision"
msgstr ""
-#: scene/2d/joints_2d.cpp
+#: scene/2d/joints_2d.cpp scene/3d/physics_joint.cpp
msgid "Softness"
msgstr ""
@@ -18181,7 +19408,7 @@ msgstr ""
msgid "Rest Length"
msgstr ""
-#: scene/2d/joints_2d.cpp scene/3d/vehicle_body.cpp
+#: scene/2d/joints_2d.cpp scene/3d/physics_joint.cpp scene/3d/vehicle_body.cpp
msgid "Stiffness"
msgstr ""
@@ -18200,7 +19427,7 @@ msgid "Texture Scale"
msgstr ""
#: scene/2d/light_2d.cpp scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp
-#: scene/resources/environment.cpp scene/resources/sky.cpp
+#: scene/3d/light.cpp scene/resources/environment.cpp scene/resources/sky.cpp
msgid "Energy"
msgstr ""
@@ -18236,11 +19463,6 @@ msgstr ""
msgid "Gradient Length"
msgstr ""
-#: scene/2d/light_2d.cpp scene/gui/control.cpp
-#: scene/resources/navigation_mesh.cpp
-msgid "Filter"
-msgstr ""
-
#: scene/2d/light_2d.cpp
msgid "Filter Smooth"
msgstr ""
@@ -18612,10 +19834,6 @@ msgid "Applied Forces"
msgstr ""
#: scene/2d/physics_body_2d.cpp
-msgid "Force"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp
msgid "Torque"
msgstr ""
@@ -18628,7 +19846,7 @@ msgid "Sync To Physics"
msgstr ""
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-msgid "Moving platform"
+msgid "Moving Platform"
msgstr ""
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
@@ -18637,7 +19855,7 @@ msgstr ""
#: scene/2d/physics_body_2d.cpp scene/2d/touch_screen_button.cpp
#: scene/3d/physics_body.cpp scene/gui/texture_button.cpp
-#: scene/resources/line_shape_2d.cpp
+#: scene/resources/line_shape_2d.cpp scene/resources/material.cpp
msgid "Normal"
msgstr ""
@@ -18844,6 +20062,30 @@ msgid ""
"as parent."
msgstr ""
+#: scene/2d/visibility_notifier_2d.cpp scene/3d/visibility_notifier.cpp
+msgid "Pause Animations"
+msgstr ""
+
+#: scene/2d/visibility_notifier_2d.cpp scene/3d/visibility_notifier.cpp
+msgid "Freeze Bodies"
+msgstr ""
+
+#: scene/2d/visibility_notifier_2d.cpp
+msgid "Pause Particles"
+msgstr ""
+
+#: scene/2d/visibility_notifier_2d.cpp
+msgid "Pause Animated Sprites"
+msgstr ""
+
+#: scene/2d/visibility_notifier_2d.cpp
+msgid "Process Parent"
+msgstr ""
+
+#: scene/2d/visibility_notifier_2d.cpp
+msgid "Physics Process Parent"
+msgstr ""
+
#: scene/3d/area.cpp
msgid "Reverb Bus"
msgstr ""
@@ -18933,6 +20175,7 @@ msgid "Attenuation Filter"
msgstr ""
#: scene/3d/audio_stream_player_3d.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
#: servers/audio/effects/audio_effect_filter.cpp
msgid "Cutoff Hz"
msgstr ""
@@ -18972,10 +20215,6 @@ msgid "Octree"
msgstr ""
#: scene/3d/baked_lightmap.cpp
-msgid "User Data"
-msgstr ""
-
-#: scene/3d/baked_lightmap.cpp
msgid "Finding meshes and lights"
msgstr ""
@@ -19205,6 +20444,14 @@ msgid "Ring Axis"
msgstr ""
#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
+msgid "Rotate Y"
+msgstr ""
+
+#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
+msgid "Disable Z"
+msgstr ""
+
+#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
msgid "Flatness"
msgstr ""
@@ -19240,15 +20487,11 @@ msgstr ""
msgid "Dynamic Range"
msgstr ""
-#: scene/3d/gi_probe.cpp
+#: scene/3d/gi_probe.cpp scene/3d/light.cpp
msgid "Normal Bias"
msgstr ""
#: scene/3d/gi_probe.cpp
-msgid "Compress"
-msgstr ""
-
-#: scene/3d/gi_probe.cpp
msgid "Plotting Meshes"
msgstr ""
@@ -19274,14 +20517,26 @@ msgid "Subdiv"
msgstr ""
#: scene/3d/light.cpp
+msgid "Indirect Energy"
+msgstr ""
+
+#: scene/3d/light.cpp
msgid "Negative"
msgstr ""
#: scene/3d/light.cpp
+msgid "Specular"
+msgstr ""
+
+#: scene/3d/light.cpp
msgid "Bake Mode"
msgstr ""
#: scene/3d/light.cpp
+msgid "Contact"
+msgstr ""
+
+#: scene/3d/light.cpp
msgid "Reverse Cull Face"
msgstr ""
@@ -19290,10 +20545,26 @@ msgid "Directional Shadow"
msgstr ""
#: scene/3d/light.cpp
+msgid "Split 1"
+msgstr ""
+
+#: scene/3d/light.cpp
+msgid "Split 2"
+msgstr ""
+
+#: scene/3d/light.cpp
+msgid "Split 3"
+msgstr ""
+
+#: scene/3d/light.cpp
msgid "Blend Splits"
msgstr ""
#: scene/3d/light.cpp
+msgid "Bias Split Scale"
+msgstr ""
+
+#: scene/3d/light.cpp
msgid "Depth Range"
msgstr ""
@@ -19317,6 +20588,10 @@ msgstr ""
msgid "Spot"
msgstr ""
+#: scene/3d/light.cpp
+msgid "Angle Attenuation"
+msgstr ""
+
#: scene/3d/mesh_instance.cpp
msgid "Software Skinning"
msgstr ""
@@ -19433,6 +20708,54 @@ msgid "Axis Lock"
msgstr ""
#: scene/3d/physics_body.cpp
+msgid "Linear X"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Linear Y"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Linear Z"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Angular X"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Angular Y"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Angular Z"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Motion X"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Motion Y"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Motion Z"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Move Lock X"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Move Lock Y"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Move Lock Z"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
msgid "Body Offset"
msgstr ""
@@ -19465,6 +20788,14 @@ msgid "Exclude Nodes"
msgstr ""
#: scene/3d/physics_joint.cpp
+msgid "Params"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Impulse Clamp"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit"
msgstr ""
@@ -19476,6 +20807,46 @@ msgstr ""
msgid "Lower"
msgstr ""
+#: scene/3d/physics_joint.cpp scene/3d/vehicle_body.cpp
+msgid "Relaxation"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Motor"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Target Velocity"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Max Impulse"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Linear Limit"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Upper Distance"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Lower Distance"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Restitution"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Linear Motion"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Linear Ortho"
+msgstr ""
+
#: scene/3d/physics_joint.cpp
msgid "Upper Angle"
msgstr ""
@@ -19485,6 +20856,14 @@ msgid "Lower Angle"
msgstr ""
#: scene/3d/physics_joint.cpp
+msgid "Angular Motion"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Ortho"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
msgid "Swing Span"
msgstr ""
@@ -19493,17 +20872,89 @@ msgid "Twist Span"
msgstr ""
#: scene/3d/physics_joint.cpp
+msgid "Linear Limit X"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Linear Motor X"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Force Limit"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Linear Spring X"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Equilibrium Point"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit X"
msgstr ""
#: scene/3d/physics_joint.cpp
+msgid "Erp"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Motor X"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Spring X"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Linear Limit Y"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Linear Motor Y"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Linear Spring Y"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit Y"
msgstr ""
#: scene/3d/physics_joint.cpp
+msgid "Angular Motor Y"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Spring Y"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Linear Limit Z"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Linear Motor Z"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Linear Spring Z"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit Z"
msgstr ""
+#: scene/3d/physics_joint.cpp
+msgid "Angular Motor Z"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Spring Z"
+msgstr ""
+
#: scene/3d/portal.cpp
msgid "The RoomManager should not be a child or grandchild of a Portal."
msgstr ""
@@ -19608,7 +21059,7 @@ msgstr ""
msgid "Use Default Simplify"
msgstr ""
-#: scene/3d/room.cpp
+#: scene/3d/room.cpp scene/3d/room_manager.cpp
msgid "Room Simplify"
msgstr ""
@@ -19646,6 +21097,12 @@ msgstr ""
msgid "Main"
msgstr ""
+#: scene/3d/room_manager.cpp scene/animation/animation_player.cpp
+#: scene/animation/animation_tree.cpp scene/animation/animation_tree_player.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+msgid "Active"
+msgstr ""
+
#: scene/3d/room_manager.cpp
msgid "Roomlist"
msgstr ""
@@ -19667,6 +21124,46 @@ msgid "Gameplay"
msgstr ""
#: scene/3d/room_manager.cpp
+msgid "Gameplay Monitor"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "Use Secondary PVS"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "Merge Meshes"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "Show Margins"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "Debug Sprawl"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "Overlap Warning Threshold"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "Preview Camera"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "Portal Depth Limit"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "Default Portal Margin"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "Roaming Expansion Margin"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
msgid ""
"RoomList path is invalid.\n"
"Please check the RoomList branch has been assigned in the RoomManager."
@@ -19785,6 +21282,18 @@ msgstr ""
msgid "Billboard"
msgstr ""
+#: scene/3d/sprite_3d.cpp scene/resources/material.cpp
+msgid "Transparent"
+msgstr ""
+
+#: scene/3d/sprite_3d.cpp
+msgid "Shaded"
+msgstr ""
+
+#: scene/3d/sprite_3d.cpp
+msgid "Double Sided"
+msgstr ""
+
#: scene/3d/sprite_3d.cpp
msgid "Alpha Cut"
msgstr ""
@@ -19849,10 +21358,6 @@ msgstr ""
msgid "Max Force"
msgstr ""
-#: scene/3d/vehicle_body.cpp
-msgid "Relaxation"
-msgstr ""
-
#: scene/3d/visibility_notifier.cpp
msgid "AABB"
msgstr ""
@@ -19974,7 +21479,7 @@ msgid "Fadeout Time"
msgstr ""
#: scene/animation/animation_blend_tree.cpp
-msgid "autorestart_"
+msgid "Auto Restart"
msgstr ""
#: scene/animation/animation_blend_tree.cpp
@@ -20046,12 +21551,6 @@ msgstr ""
msgid "Default Blend Time"
msgstr ""
-#: scene/animation/animation_player.cpp scene/animation/animation_tree.cpp
-#: scene/animation/animation_tree_player.cpp
-#: servers/audio/effects/audio_effect_delay.cpp
-msgid "Active"
-msgstr ""
-
#: scene/animation/animation_player.cpp
msgid "Method Call Mode"
msgstr ""
@@ -20160,10 +21659,6 @@ msgstr ""
msgid "Max Iterations"
msgstr ""
-#: scene/animation/tween.cpp scene/resources/texture.cpp
-msgid "Repeat"
-msgstr ""
-
#: scene/animation/tween.cpp
msgid "Playback Process Mode"
msgstr ""
@@ -20190,18 +21685,6 @@ msgstr ""
msgid "Alignment"
msgstr ""
-#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
-#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
-#: scene/resources/style_box.cpp
-msgid "Horizontal"
-msgstr ""
-
-#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
-#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
-#: scene/resources/style_box.cpp
-msgid "Vertical"
-msgstr ""
-
#: scene/gui/base_button.cpp
msgid "Shortcut In Tooltip"
msgstr ""
@@ -20287,10 +21770,6 @@ msgid "HSV"
msgstr ""
#: scene/gui/color_picker.cpp
-msgid "Raw"
-msgstr ""
-
-#: scene/gui/color_picker.cpp
msgid "Switch between hexadecimal and code values."
msgstr ""
@@ -20344,6 +21823,30 @@ msgid "Focus"
msgstr ""
#: scene/gui/control.cpp
+msgid "Neighbour Left"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Neighbour Top"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Neighbour Right"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Neighbour Bottom"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Next"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Previous"
+msgstr ""
+
+#: scene/gui/control.cpp
msgid "Mouse"
msgstr ""
@@ -20376,7 +21879,7 @@ msgid "Dialog"
msgstr ""
#: scene/gui/dialogs.cpp
-msgid "Hide On Ok"
+msgid "Hide On OK"
msgstr ""
#: scene/gui/dialogs.cpp scene/gui/label.cpp
@@ -20461,7 +21964,7 @@ msgid "Timers"
msgstr ""
#: scene/gui/item_list.cpp scene/gui/popup_menu.cpp scene/gui/tree.cpp
-msgid "Incremental Search Max Interval (msec)"
+msgid "Incremental Search Max Interval Msec"
msgstr ""
#: scene/gui/item_list.cpp scene/gui/tree.cpp
@@ -20960,6 +22463,22 @@ msgstr ""
msgid "Nine Patch Stretch"
msgstr ""
+#: scene/gui/texture_progress.cpp
+msgid "Stretch Margin Left"
+msgstr ""
+
+#: scene/gui/texture_progress.cpp
+msgid "Stretch Margin Top"
+msgstr ""
+
+#: scene/gui/texture_progress.cpp
+msgid "Stretch Margin Right"
+msgstr ""
+
+#: scene/gui/texture_progress.cpp
+msgid "Stretch Margin Bottom"
+msgstr ""
+
#: scene/gui/tree.cpp
msgid "Custom Minimum Height"
msgstr ""
@@ -20993,7 +22512,7 @@ msgid "Paused"
msgstr ""
#: scene/gui/video_player.cpp
-msgid "Buffering (msec)"
+msgid "Buffering Msec"
msgstr ""
#: scene/gui/video_player.cpp
@@ -21297,6 +22816,22 @@ msgid "Shadow Atlas"
msgstr ""
#: scene/main/viewport.cpp
+msgid "Quad 0"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 1"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 2"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 3"
+msgstr ""
+
+#: scene/main/viewport.cpp
msgid "Canvas Transform"
msgstr ""
@@ -21309,6 +22844,10 @@ msgid "Tooltip Delay (sec)"
msgstr ""
#: scene/register_scene_types.cpp
+msgid "Swap OK Cancel"
+msgstr ""
+
+#: scene/register_scene_types.cpp
msgid "Use hiDPI"
msgstr ""
@@ -21321,18 +22860,6 @@ msgid "Custom Font"
msgstr ""
#: scene/resources/audio_stream_sample.cpp
-msgid "Loop Mode"
-msgstr ""
-
-#: scene/resources/audio_stream_sample.cpp
-msgid "Loop Begin"
-msgstr ""
-
-#: scene/resources/audio_stream_sample.cpp
-msgid "Loop End"
-msgstr ""
-
-#: scene/resources/audio_stream_sample.cpp
#: servers/audio/effects/audio_stream_generator.cpp servers/audio_server.cpp
msgid "Mix Rate"
msgstr ""
@@ -21382,6 +22909,15 @@ msgid "Extra Spacing"
msgstr ""
#: scene/resources/dynamic_font.cpp
+msgid "Char"
+msgstr ""
+
+#: scene/resources/dynamic_font.cpp scene/resources/world.cpp
+#: scene/resources/world_2d.cpp
+msgid "Space"
+msgstr ""
+
+#: scene/resources/dynamic_font.cpp
msgid "Font"
msgstr ""
@@ -21578,6 +23114,42 @@ msgid "Glow"
msgstr ""
#: scene/resources/environment.cpp
+msgid "Levels"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "1"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "2"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "3"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "4"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "5"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "6"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "7"
+msgstr ""
+
+#: scene/resources/environment.cpp
msgid "Bloom"
msgstr ""
@@ -21658,9 +23230,61 @@ msgid "Next Pass"
msgstr ""
#: scene/resources/material.cpp
+msgid "Use Shadow To Opacity"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Unshaded"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Vertex Lighting"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "No Depth Test"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Use Point Size"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "World Triplanar"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Fixed Size"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Albedo Tex Force sRGB"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Do Not Receive Shadows"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Disable Ambient Light"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Ensure Correct Normals"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Vertex Color"
msgstr ""
+#: scene/resources/material.cpp
+msgid "Use As Albedo"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Is sRGB"
+msgstr ""
+
#: scene/resources/material.cpp servers/visual_server.cpp
msgid "Parameters"
msgstr ""
@@ -21690,6 +23314,10 @@ msgid "Billboard Mode"
msgstr ""
#: scene/resources/material.cpp
+msgid "Billboard Keep Scale"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Grow"
msgstr ""
@@ -21698,6 +23326,10 @@ msgid "Grow Amount"
msgstr ""
#: scene/resources/material.cpp
+msgid "Use Alpha Scissor"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Alpha Scissor Threshold"
msgstr ""
@@ -21726,10 +23358,18 @@ msgid "Metallic Specular"
msgstr ""
#: scene/resources/material.cpp
+msgid "Metallic Texture"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Metallic Texture Channel"
msgstr ""
#: scene/resources/material.cpp
+msgid "Roughness Texture"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Roughness Texture Channel"
msgstr ""
@@ -21746,6 +23386,14 @@ msgid "Emission Operator"
msgstr ""
#: scene/resources/material.cpp
+msgid "Emission On UV2"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Emission Texture"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "NormalMap"
msgstr ""
@@ -21758,6 +23406,10 @@ msgid "Rim Tint"
msgstr ""
#: scene/resources/material.cpp
+msgid "Rim Texture"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Clearcoat"
msgstr ""
@@ -21766,14 +23418,26 @@ msgid "Clearcoat Gloss"
msgstr ""
#: scene/resources/material.cpp
+msgid "Clearcoat Texture"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Anisotropy"
msgstr ""
#: scene/resources/material.cpp
+msgid "Anisotropy Flowmap"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Ambient Occlusion"
msgstr ""
#: scene/resources/material.cpp
+msgid "On UV2"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Texture Channel"
msgstr ""
@@ -21806,6 +23470,10 @@ msgid "Transmission"
msgstr ""
#: scene/resources/material.cpp
+msgid "Transmission Texture"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Refraction"
msgstr ""
@@ -21822,6 +23490,10 @@ msgid "UV1"
msgstr ""
#: scene/resources/material.cpp
+msgid "Triplanar"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Triplanar Sharpness"
msgstr ""
@@ -22005,6 +23677,14 @@ msgstr ""
msgid "Point Count"
msgstr ""
+#: scene/resources/particles_material.cpp
+msgid "Scale Random"
+msgstr ""
+
+#: scene/resources/particles_material.cpp
+msgid "Scale Curve"
+msgstr ""
+
#: scene/resources/physics_material.cpp
msgid "Rough"
msgstr ""
@@ -22062,10 +23742,6 @@ msgid "A"
msgstr ""
#: scene/resources/shader.cpp
-msgid "Code"
-msgstr ""
-
-#: scene/resources/shader.cpp
msgid "Custom Defines"
msgstr ""
@@ -22150,14 +23826,6 @@ msgid "Grow End"
msgstr ""
#: scene/resources/texture.cpp
-msgid "Storage"
-msgstr ""
-
-#: scene/resources/texture.cpp
-msgid "Lossy Quality"
-msgstr ""
-
-#: scene/resources/texture.cpp
msgid "Load Path"
msgstr ""
@@ -22267,10 +23935,6 @@ msgstr ""
msgid "Fallback Environment"
msgstr ""
-#: scene/resources/world.cpp scene/resources/world_2d.cpp
-msgid "Space"
-msgstr ""
-
#: scene/resources/world.cpp
msgid "Scenario"
msgstr ""
@@ -22344,8 +24008,33 @@ msgstr ""
msgid "Wet"
msgstr ""
-#: servers/audio/effects/audio_effect_compressor.cpp
-msgid "Threshold"
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "Voice"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+msgid "Delay (ms)"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_phaser.cpp
+msgid "Rate Hz"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "Depth (ms)"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+msgid "Level dB"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+#: servers/audio/effects/audio_effect_panner.cpp
+msgid "Pan"
msgstr ""
#: servers/audio/effects/audio_effect_compressor.cpp
@@ -22370,19 +24059,6 @@ msgid "Tap 1"
msgstr ""
#: servers/audio/effects/audio_effect_delay.cpp
-msgid "Delay (ms)"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_delay.cpp
-msgid "Level dB"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_delay.cpp
-#: servers/audio/effects/audio_effect_panner.cpp
-msgid "Pan"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_delay.cpp
msgid "Tap 2"
msgstr ""
@@ -22440,10 +24116,6 @@ msgstr ""
msgid "Range Max Hz"
msgstr ""
-#: servers/audio/effects/audio_effect_phaser.cpp
-msgid "Rate Hz"
-msgstr ""
-
#: servers/audio/effects/audio_effect_pitch_shift.cpp
msgid "Oversampling"
msgstr ""
@@ -22458,7 +24130,7 @@ msgid "Predelay"
msgstr ""
#: servers/audio/effects/audio_effect_reverb.cpp
-msgid "(msec)"
+msgid "Msec"
msgstr ""
#: servers/audio/effects/audio_effect_reverb.cpp
diff --git a/editor/translations/pl.po b/editor/translations/pl.po
index 9efe2f3e74..909461a9c2 100644
--- a/editor/translations/pl.po
+++ b/editor/translations/pl.po
@@ -57,13 +57,14 @@
# Igor Kordiukiewicz <igorkordiukiewicz@gmail.com>, 2022.
# lewando54 <lewando54@gmail.com>, 2022.
# Katarzyna Twardowska <katarina.twardowska@gmail.com>, 2022.
+# Mateusz Zdrzałek <matjozohd@gmail.com>, 2022.
msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
"Report-Msgid-Bugs-To: https://github.com/godotengine/godot\n"
"POT-Creation-Date: \n"
-"PO-Revision-Date: 2022-03-08 08:59+0000\n"
-"Last-Translator: Katarzyna Twardowska <katarina.twardowska@gmail.com>\n"
+"PO-Revision-Date: 2022-03-21 22:23+0000\n"
+"Last-Translator: Mateusz Zdrzałek <matjozohd@gmail.com>\n"
"Language-Team: Polish <https://hosted.weblate.org/projects/godot-engine/"
"godot/pl/>\n"
"Language: pl\n"
@@ -74,175 +75,153 @@ msgstr ""
"|| n%100>=20) ? 1 : 2;\n"
"X-Generator: Weblate 4.12-dev\n"
-#: core/bind/core_bind.cpp
+#: core/bind/core_bind.cpp main/main.cpp
msgid "Tablet Driver"
-msgstr ""
+msgstr "Sterownik tabletu"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Clipboard"
-msgstr "Schowek jest pusty!"
+msgstr "Schowek"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Current Screen"
-msgstr "Aktualna scena"
+msgstr "Bieżący ekran"
#: core/bind/core_bind.cpp
msgid "Exit Code"
-msgstr ""
+msgstr "Kod zakończenia"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "V-Sync Enabled"
-msgstr "Włącz"
+msgstr "V-Sync Włączone"
#: core/bind/core_bind.cpp main/main.cpp
msgid "V-Sync Via Compositor"
-msgstr ""
+msgstr "V-Sync przez kompozytor"
#: core/bind/core_bind.cpp main/main.cpp
msgid "Delta Smoothing"
-msgstr ""
+msgstr "Wygładzanie Delta"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Low Processor Usage Mode"
-msgstr "Tryb przesuwania"
+msgstr "Tryb niskiego wykorzystania procesora"
#: core/bind/core_bind.cpp
msgid "Low Processor Usage Mode Sleep (µsec)"
-msgstr ""
+msgstr "Niskie zużycie procesora Tryb uśpienia (µsec)"
#: core/bind/core_bind.cpp main/main.cpp platform/uwp/os_uwp.cpp
-#, fuzzy
msgid "Keep Screen On"
-msgstr "Pozostaw Debugger otwarty"
+msgstr "Zachowaj włączony ekran"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Min Window Size"
-msgstr "Rozmiar zarysu:"
+msgstr "Min. rozmiar okna"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Max Window Size"
-msgstr "Rozmiar zarysu:"
+msgstr "Maks. rozmiar okna"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Screen Orientation"
-msgstr "Operator ekranu."
+msgstr "Orientacja ekranu"
#: core/bind/core_bind.cpp main/main.cpp platform/uwp/os_uwp.cpp
-#, fuzzy
msgid "Window"
-msgstr "Nowe okno"
+msgstr "Okno"
#: core/bind/core_bind.cpp main/main.cpp
-#, fuzzy
msgid "Borderless"
-msgstr "Brzegowe piksele"
+msgstr "Bez obramowania"
#: core/bind/core_bind.cpp
msgid "Per Pixel Transparency Enabled"
-msgstr ""
+msgstr "Włączona przezroczystość na piksel"
#: core/bind/core_bind.cpp main/main.cpp
-#, fuzzy
msgid "Fullscreen"
-msgstr "Przełącz pełny ekran"
+msgstr "Pełny ekran"
#: core/bind/core_bind.cpp
msgid "Maximized"
-msgstr ""
+msgstr "Zmaksymalizowane"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Minimized"
-msgstr "Inicjuj"
+msgstr "Zminimalizowane"
#: core/bind/core_bind.cpp main/main.cpp scene/gui/dialogs.cpp
#: scene/gui/graph_node.cpp
msgid "Resizable"
-msgstr ""
+msgstr "Zmienny rozmiar"
#: core/bind/core_bind.cpp core/os/input_event.cpp scene/2d/node_2d.cpp
#: scene/2d/physics_body_2d.cpp scene/2d/remote_transform_2d.cpp
#: scene/3d/physics_body.cpp scene/3d/remote_transform.cpp
#: scene/gui/control.cpp scene/gui/line_edit.cpp
-#, fuzzy
msgid "Position"
-msgstr "Pozycja doku"
+msgstr "Pozycja"
#: core/bind/core_bind.cpp editor/editor_settings.cpp main/main.cpp
#: modules/gdscript/gdscript_editor.cpp modules/gridmap/grid_map.cpp
#: modules/mono/csharp_script.cpp modules/visual_script/visual_script_nodes.cpp
-#: scene/2d/tile_map.cpp scene/3d/camera.cpp scene/gui/control.cpp
-#: scene/gui/graph_edit.cpp scene/main/viewport.cpp
+#: scene/2d/tile_map.cpp scene/3d/camera.cpp scene/3d/light.cpp
+#: scene/gui/control.cpp scene/gui/graph_edit.cpp scene/main/viewport.cpp
#: scene/resources/dynamic_font.cpp scene/resources/navigation_mesh.cpp
#: scene/resources/primitive_meshes.cpp scene/resources/sky.cpp
#: scene/resources/style_box.cpp scene/resources/texture.cpp
#: scene/resources/visual_shader.cpp servers/visual_server.cpp
-#, fuzzy
msgid "Size"
-msgstr "Rozmiar:"
+msgstr "Rozmiar"
#: core/bind/core_bind.cpp
msgid "Endian Swap"
msgstr ""
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Editor Hint"
-msgstr "Edytor"
+msgstr "Wskazówka edytora"
#: core/bind/core_bind.cpp
msgid "Print Error Messages"
-msgstr ""
+msgstr "Wyświetlaj komunikaty o błędach"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Iterations Per Second"
-msgstr "Sposób interpolacji"
+msgstr "Iteracje na sekundÄ™"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Target FPS"
-msgstr "Cel"
+msgstr "Docelowa liczba klatek na sekundÄ™ (FPS)"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Time Scale"
-msgstr "Węzeł Skalowania Czasu"
+msgstr "Skala czasu"
#: core/bind/core_bind.cpp main/main.cpp
-#, fuzzy
msgid "Physics Jitter Fix"
-msgstr "Klatka fizyki %"
+msgstr "Poprawka zakłóceń w fizyce"
#: core/bind/core_bind.cpp editor/plugins/version_control_editor_plugin.cpp
msgid "Error"
msgstr "Błąd"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Error String"
-msgstr "Błąd zapisywania"
+msgstr "Tekst Błędu"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Error Line"
-msgstr "Błąd zapisywania"
+msgstr "Linia błędu"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Result"
-msgstr "Wyniki wyszukiwania"
+msgstr "Wynik"
#: core/command_queue_mt.cpp core/message_queue.cpp main/main.cpp
msgid "Memory"
-msgstr ""
+msgstr "Pamięć"
#: core/command_queue_mt.cpp core/message_queue.cpp
#: core/register_core_types.cpp drivers/gles2/rasterizer_canvas_base_gles2.cpp
@@ -252,16 +231,15 @@ msgstr ""
#: drivers/gles3/rasterizer_storage_gles3.cpp main/main.cpp
#: servers/visual_server.cpp
msgid "Limits"
-msgstr ""
+msgstr "Limity"
#: core/command_queue_mt.cpp
-#, fuzzy
msgid "Command Queue"
-msgstr "Command: Obróć"
+msgstr "Kolejka komend"
#: core/command_queue_mt.cpp
msgid "Multithreading Queue Size (KB)"
-msgstr ""
+msgstr "Rozmiar kolejki wielowÄ…tkowej (KB)"
#: core/func_ref.cpp modules/visual_script/visual_script_builtin_funcs.cpp
#: modules/visual_script/visual_script_func_nodes.cpp
@@ -278,27 +256,22 @@ msgstr "Funkcja"
#: scene/resources/audio_stream_sample.cpp scene/resources/bit_map.cpp
#: scene/resources/concave_polygon_shape.cpp scene/resources/curve.cpp
#: scene/resources/polygon_path_finder.cpp scene/resources/texture.cpp
-#, fuzzy
msgid "Data"
-msgstr "z danymi"
+msgstr "Dane"
#: core/io/file_access_network.cpp core/register_core_types.cpp
-#: editor/editor_settings.cpp editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp main/main.cpp
+#: editor/editor_settings.cpp main/main.cpp
#: modules/gdscript/language_server/gdscript_language_server.cpp
-#, fuzzy
msgid "Network"
-msgstr "Profiler sieci"
+msgstr "Sieć"
#: core/io/file_access_network.cpp
-#, fuzzy
msgid "Remote FS"
-msgstr "Zdalny "
+msgstr "Zdalny System Plików"
#: core/io/file_access_network.cpp
-#, fuzzy
msgid "Page Size"
-msgstr "Strona: "
+msgstr "Rozmiar strony"
#: core/io/file_access_network.cpp
msgid "Page Read Ahead"
@@ -306,66 +279,59 @@ msgstr ""
#: core/io/http_client.cpp
msgid "Blocking Mode Enabled"
-msgstr ""
+msgstr "Tryb blokowania włączony"
#: core/io/http_client.cpp
-#, fuzzy
msgid "Connection"
-msgstr "Połącz"
+msgstr "Połączenie"
#: core/io/http_client.cpp
msgid "Read Chunk Size"
-msgstr ""
+msgstr "Odczytaj rozmiar fragmentu"
#: core/io/marshalls.cpp
-#, fuzzy
msgid "Object ID"
-msgstr "Narysowane obiekty:"
+msgstr "ID Obiektu"
#: core/io/multiplayer_api.cpp core/io/packet_peer.cpp
-#, fuzzy
msgid "Allow Object Decoding"
-msgstr "Włącz tryb warstw cebuli (onion skinning)"
+msgstr "Zezwalaj na dekodowanie obiektów"
#: core/io/multiplayer_api.cpp scene/main/scene_tree.cpp
msgid "Refuse New Network Connections"
-msgstr ""
+msgstr "Odmowa nowych połączeń sieciowych"
#: core/io/multiplayer_api.cpp scene/main/scene_tree.cpp
-#, fuzzy
msgid "Network Peer"
-msgstr "Profiler sieci"
+msgstr "Członek sieci"
#: core/io/multiplayer_api.cpp scene/animation/animation_player.cpp
-#, fuzzy
msgid "Root Node"
-msgstr "Nazwa korzenia"
+msgstr "Węzeł główny"
#: core/io/networked_multiplayer_peer.cpp
-#, fuzzy
msgid "Refuse New Connections"
-msgstr "Połącz"
+msgstr "Odmowa nowych połączeń"
#: core/io/networked_multiplayer_peer.cpp
-#, fuzzy
msgid "Transfer Mode"
-msgstr "Typ przekształcenia"
+msgstr "Tryb transferu"
#: core/io/packet_peer.cpp
msgid "Encode Buffer Max Size"
-msgstr ""
+msgstr "Maks. rozmiar bufora kodowania"
#: core/io/packet_peer.cpp
msgid "Input Buffer Max Size"
-msgstr ""
+msgstr "Maks. rozmiar bufora wejściowego"
#: core/io/packet_peer.cpp
msgid "Output Buffer Max Size"
-msgstr ""
+msgstr "Maksymalna wielkość bufora wyjściowego"
#: core/io/packet_peer.cpp
msgid "Stream Peer"
-msgstr ""
+msgstr "Członek transmisji"
#: core/io/stream_peer.cpp
msgid "Big Endian"
@@ -373,16 +339,15 @@ msgstr ""
#: core/io/stream_peer.cpp
msgid "Data Array"
-msgstr ""
+msgstr "Tablica danych"
#: core/io/stream_peer_ssl.cpp
msgid "Blocking Handshake"
-msgstr ""
+msgstr "Blokowanie uścisku dłoni"
#: core/io/udp_server.cpp
-#, fuzzy
msgid "Max Pending Connections"
-msgstr "Edytuj połączenie:"
+msgstr "Maks. liczba połączeń oczekujących"
#: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp
#: modules/visual_script/visual_script_builtin_funcs.cpp
@@ -431,20 +396,19 @@ msgstr "Przy wywołaniu \"%s\":"
#: core/math/random_number_generator.cpp
#: modules/opensimplex/open_simplex_noise.cpp
msgid "Seed"
-msgstr ""
+msgstr "Nasiono"
#: core/math/random_number_generator.cpp
-#, fuzzy
msgid "State"
-msgstr "Status"
+msgstr "Stan"
#: core/message_queue.cpp
msgid "Message Queue"
-msgstr ""
+msgstr "Kolejka komunikatów"
#: core/message_queue.cpp
msgid "Max Size (KB)"
-msgstr ""
+msgstr "Maks. rozmiar (KB)"
#: core/os/input.cpp editor/editor_help.cpp editor/editor_settings.cpp
#: editor/plugins/script_editor_plugin.cpp
@@ -456,9 +420,8 @@ msgstr ""
#: modules/mono/csharp_script.cpp scene/animation/animation_player.cpp
#: scene/gui/control.cpp scene/gui/line_edit.cpp scene/main/node.cpp
#: scene/resources/material.cpp
-#, fuzzy
msgid "Text Editor"
-msgstr "Otwórz edytor"
+msgstr "Edytor tekstu"
#: core/os/input.cpp editor/editor_settings.cpp
#: editor/plugins/script_text_editor.cpp modules/gdscript/gdscript.cpp
@@ -466,18 +429,16 @@ msgstr "Otwórz edytor"
#: modules/gdscript/language_server/gdscript_text_document.cpp
#: scene/animation/animation_player.cpp scene/gui/control.cpp
#: scene/main/node.cpp scene/resources/material.cpp
-#, fuzzy
msgid "Completion"
-msgstr "Kopiuj zaznaczenie"
+msgstr "Ukończenie"
#: core/os/input.cpp editor/editor_settings.cpp
#: editor/plugins/script_text_editor.cpp modules/gdscript/gdscript_editor.cpp
#: modules/gdscript/language_server/gdscript_text_document.cpp
#: scene/animation/animation_player.cpp scene/gui/control.cpp
#: scene/main/node.cpp scene/resources/material.cpp
-#, fuzzy
msgid "Use Single Quotes"
-msgstr "Nowy pojedynczy kafelek"
+msgstr "Użyj pojedynczych cudzysłowów"
#: core/os/input_event.cpp editor/project_settings_editor.cpp
#: servers/audio_server.cpp
@@ -485,96 +446,84 @@ msgid "Device"
msgstr "UrzÄ…dzenie"
#: core/os/input_event.cpp
-#, fuzzy
msgid "Alt"
-msgstr "Wszystko"
+msgstr "Alt"
#: core/os/input_event.cpp
msgid "Shift"
-msgstr ""
+msgstr "Shift"
#: core/os/input_event.cpp
-#, fuzzy
msgid "Control"
-msgstr "Kontrola wersji"
+msgstr "Control"
#: core/os/input_event.cpp
msgid "Meta"
-msgstr ""
+msgstr "Meta"
#: core/os/input_event.cpp
-#, fuzzy
msgid "Command"
-msgstr "Społeczność"
+msgstr "Command"
#: core/os/input_event.cpp scene/2d/touch_screen_button.cpp
#: scene/gui/base_button.cpp scene/gui/texture_button.cpp
-#, fuzzy
msgid "Pressed"
-msgstr "Profil"
+msgstr "Wciśnięty"
#: core/os/input_event.cpp
-#, fuzzy
msgid "Scancode"
-msgstr "Skanuj"
+msgstr "Kod skanu"
#: core/os/input_event.cpp
-#, fuzzy
msgid "Physical Scancode"
-msgstr "Fizyczny klawisz"
+msgstr "Fizyczny kod skanu"
#: core/os/input_event.cpp
msgid "Unicode"
-msgstr ""
+msgstr "Unicode"
#: core/os/input_event.cpp
msgid "Echo"
-msgstr ""
+msgstr "Echo"
#: core/os/input_event.cpp scene/gui/base_button.cpp
-#, fuzzy
msgid "Button Mask"
-msgstr "Przycisk"
+msgstr "Maska przycisku"
#: core/os/input_event.cpp scene/2d/node_2d.cpp scene/gui/control.cpp
-#, fuzzy
msgid "Global Position"
-msgstr "Stała globalna"
+msgstr "Globalna pozycja"
#: core/os/input_event.cpp
-#, fuzzy
msgid "Factor"
-msgstr "Wektor"
+msgstr "Czynnik"
#: core/os/input_event.cpp
-#, fuzzy
msgid "Button Index"
-msgstr "Indeks przycisku myszy:"
+msgstr "Indeks przycisków"
#: core/os/input_event.cpp
msgid "Doubleclick"
-msgstr ""
+msgstr "Podwójne kliknięcie"
#: core/os/input_event.cpp
msgid "Tilt"
-msgstr ""
+msgstr "Pochylenie"
#: core/os/input_event.cpp
-#, fuzzy
msgid "Pressure"
-msgstr "Profil"
+msgstr "Ciśnienie"
#: core/os/input_event.cpp
-#, fuzzy
msgid "Relative"
-msgstr "Przyciągaj względnie"
+msgstr "Relatywny"
-#: core/os/input_event.cpp scene/2d/camera_2d.cpp
-#: scene/3d/interpolated_camera.cpp scene/animation/animation_player.cpp
-#: scene/resources/environment.cpp
-#, fuzzy
+#: core/os/input_event.cpp scene/2d/camera_2d.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/interpolated_camera.cpp
+#: scene/animation/animation_player.cpp scene/resources/environment.cpp
+#: scene/resources/particles_material.cpp
msgid "Speed"
-msgstr "Szybkość:"
+msgstr "Prędkość"
#: core/os/input_event.cpp editor/project_settings_editor.cpp
#: scene/3d/sprite_3d.cpp
@@ -582,14 +531,12 @@ msgid "Axis"
msgstr "OÅ›"
#: core/os/input_event.cpp
-#, fuzzy
msgid "Axis Value"
-msgstr "Przypnij wartość"
+msgstr "Wartość osi"
#: core/os/input_event.cpp modules/visual_script/visual_script_func_nodes.cpp
-#, fuzzy
msgid "Index"
-msgstr "Indeks:"
+msgstr "Indeks"
#: core/os/input_event.cpp editor/project_settings_editor.cpp
#: modules/visual_script/visual_script_nodes.cpp
@@ -600,72 +547,70 @@ msgstr "Akcja"
#: core/os/input_event.cpp scene/resources/environment.cpp
#: scene/resources/material.cpp
msgid "Strength"
-msgstr ""
+msgstr "Siła"
#: core/os/input_event.cpp
msgid "Delta"
-msgstr ""
+msgstr "Delta"
#: core/os/input_event.cpp
-#, fuzzy
msgid "Channel"
-msgstr "Zmień"
+msgstr "Kanał"
#: core/os/input_event.cpp main/main.cpp
-#, fuzzy
msgid "Message"
-msgstr "Opis zmian"
+msgstr "Wiadomość"
#: core/os/input_event.cpp
-#, fuzzy
msgid "Pitch"
-msgstr "Pułap:"
+msgstr "Poziom"
-#: core/os/input_event.cpp scene/2d/physics_body_2d.cpp
-#: scene/3d/physics_body.cpp
-#, fuzzy
+#: core/os/input_event.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/physics_body_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/3d/physics_body.cpp scene/resources/particles_material.cpp
msgid "Velocity"
-msgstr "Orbituj widok w prawo"
+msgstr "Prędkość"
#: core/os/input_event.cpp
msgid "Instrument"
-msgstr ""
+msgstr "Instrument"
#: core/os/input_event.cpp
-#, fuzzy
msgid "Controller Number"
-msgstr "Numer linii:"
+msgstr "Numer kontrolera"
#: core/os/input_event.cpp
msgid "Controller Value"
-msgstr ""
+msgstr "Wartość kontrolera"
#: core/project_settings.cpp editor/editor_node.cpp main/main.cpp
-#, fuzzy
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/windows/export/export.cpp
msgid "Application"
-msgstr "Akcja"
+msgstr "Aplikacja"
#: core/project_settings.cpp main/main.cpp
-#, fuzzy
msgid "Config"
-msgstr "Konfiguruj przyciÄ…ganie"
+msgstr "Konfiguracja"
#: core/project_settings.cpp
-#, fuzzy
msgid "Project Settings Override"
-msgstr "Ustawienia projektu..."
+msgstr "Nadpisanie ustawień projektu"
#: core/project_settings.cpp core/resource.cpp
#: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp
#: editor/editor_plugin_settings.cpp editor/editor_profiler.cpp
#: editor/project_manager.cpp editor/settings_config_dialog.cpp
-#: modules/gdnative/nativescript/nativescript.cpp scene/2d/area_2d.cpp
-#: scene/3d/area.cpp scene/main/node.cpp
+#: modules/gdnative/nativescript/nativescript.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/osx/export/export.cpp scene/2d/area_2d.cpp scene/3d/area.cpp
+#: scene/main/node.cpp
msgid "Name"
msgstr "Nazwa"
#: core/project_settings.cpp editor/editor_help.cpp
-#: modules/visual_script/visual_script_nodes.cpp
+#: modules/visual_script/visual_script_nodes.cpp platform/uwp/export/export.cpp
+#: platform/windows/export/export.cpp
msgid "Description"
msgstr "Opis"
@@ -681,36 +626,33 @@ msgid "Main Scene"
msgstr "Scena główna"
#: core/project_settings.cpp
-#, fuzzy
msgid "Disable stdout"
-msgstr "Wyłącz autokafelki"
+msgstr "Wyłączenie stdout"
#: core/project_settings.cpp
-#, fuzzy
msgid "Disable stderr"
-msgstr "Wyłączony element"
+msgstr "Wyłączenie stderr"
#: core/project_settings.cpp
msgid "Use Hidden Project Data Directory"
-msgstr ""
+msgstr "Użyj ukrytego katalogu danych projektu"
#: core/project_settings.cpp
msgid "Use Custom User Dir"
-msgstr ""
+msgstr "Użyj niestandardowego katalogu użytkownika"
#: core/project_settings.cpp
msgid "Custom User Dir Name"
-msgstr ""
+msgstr "Własna nazwa katalogu użytkownika"
#: core/project_settings.cpp editor/animation_track_editor.cpp
-#: editor/editor_audio_buses.cpp servers/audio_server.cpp
+#: editor/editor_audio_buses.cpp main/main.cpp servers/audio_server.cpp
msgid "Audio"
-msgstr "Dźwięk"
+msgstr "Audio"
#: core/project_settings.cpp
-#, fuzzy
msgid "Default Bus Layout"
-msgstr "Załaduj domyślny układ magistral."
+msgstr "Domyślny układ magistrali"
#: core/project_settings.cpp editor/editor_export.cpp
#: editor/editor_file_system.cpp editor/editor_node.cpp
@@ -720,17 +662,16 @@ msgid "Editor"
msgstr "Edytor"
#: core/project_settings.cpp
-#, fuzzy
msgid "Main Run Args"
-msgstr "Argumenty głównej sceny:"
+msgstr "Główne argumenty włączania"
#: core/project_settings.cpp
msgid "Search In File Extensions"
-msgstr ""
+msgstr "Wyszukiwanie w rozszerzeniach plików"
#: core/project_settings.cpp
msgid "Script Templates Search Path"
-msgstr ""
+msgstr "Ścieżka wyszukiwania szablonów skryptów"
#: core/project_settings.cpp editor/editor_node.cpp
#: editor/plugins/version_control_editor_plugin.cpp
@@ -739,79 +680,69 @@ msgstr "Kontrola wersji"
#: core/project_settings.cpp
msgid "Autoload On Startup"
-msgstr ""
+msgstr "Automatyczne ładowanie podczas uruchamiania"
#: core/project_settings.cpp
-#, fuzzy
msgid "Plugin Name"
-msgstr "Nazwa wtyczki:"
+msgstr "Nazwa wtyczki"
#: core/project_settings.cpp scene/2d/collision_object_2d.cpp
#: scene/3d/collision_object.cpp scene/gui/control.cpp
#, fuzzy
msgid "Input"
-msgstr "Dodaj Wejście"
+msgstr "Input"
#: core/project_settings.cpp
msgid "UI Accept"
-msgstr ""
+msgstr "UI Akceptuj"
#: core/project_settings.cpp
-#, fuzzy
msgid "UI Select"
-msgstr "Zaznacz"
+msgstr "UI Wybierz"
#: core/project_settings.cpp
-#, fuzzy
msgid "UI Cancel"
-msgstr "Anuluj"
+msgstr "UI Anuluj"
#: core/project_settings.cpp
-#, fuzzy
msgid "UI Focus Next"
-msgstr "Przejdź do wprowadzania ścieżki"
+msgstr "UI Zaznacz Następny"
#: core/project_settings.cpp
-#, fuzzy
msgid "UI Focus Prev"
-msgstr "Przejdź do wprowadzania ścieżki"
+msgstr "UI Zaznacz Poprz."
#: core/project_settings.cpp
-#, fuzzy
msgid "UI Left"
-msgstr "Lewy górny róg"
+msgstr "UI Lewo"
#: core/project_settings.cpp
-#, fuzzy
msgid "UI Right"
-msgstr "Prawy górny róg"
+msgstr "UI Prawo"
#: core/project_settings.cpp
msgid "UI Up"
-msgstr ""
+msgstr "UI Góra"
#: core/project_settings.cpp
-#, fuzzy
msgid "UI Down"
-msgstr "Dół"
+msgstr "UI Dół"
#: core/project_settings.cpp
-#, fuzzy
msgid "UI Page Up"
-msgstr "Strona: "
+msgstr "UI Strona powyżej"
#: core/project_settings.cpp
msgid "UI Page Down"
-msgstr ""
+msgstr "UI Strona poniżej"
#: core/project_settings.cpp
msgid "UI Home"
-msgstr ""
+msgstr "UI Home"
#: core/project_settings.cpp
-#, fuzzy
msgid "UI End"
-msgstr "Na końcu"
+msgstr "UI Koniec"
#: core/project_settings.cpp main/main.cpp modules/bullet/register_types.cpp
#: modules/bullet/space_bullet.cpp scene/2d/physics_body_2d.cpp
@@ -820,9 +751,8 @@ msgstr "Na końcu"
#: servers/physics/space_sw.cpp servers/physics_2d/physics_2d_server_sw.cpp
#: servers/physics_2d/physics_2d_server_wrap_mt.h
#: servers/physics_2d/space_2d_sw.cpp
-#, fuzzy
msgid "Physics"
-msgstr " (fizyczny)"
+msgstr "Fizyka"
#: core/project_settings.cpp editor/editor_settings.cpp
#: editor/plugins/spatial_editor_plugin.cpp main/main.cpp
@@ -830,12 +760,11 @@ msgstr " (fizyczny)"
#: scene/3d/physics_body.cpp scene/resources/world.cpp
#: servers/physics/space_sw.cpp
msgid "3D"
-msgstr ""
+msgstr "3D"
#: core/project_settings.cpp
-#, fuzzy
msgid "Smooth Trimesh Collision"
-msgstr "Utwórz sąsiadującą trójsiatkę kolizji"
+msgstr "Płynna kolizja trimesh"
#: core/project_settings.cpp drivers/gles2/rasterizer_canvas_base_gles2.cpp
#: drivers/gles2/rasterizer_scene_gles2.cpp
@@ -846,9 +775,8 @@ msgstr "Utwórz sąsiadującą trójsiatkę kolizji"
#: modules/lightmapper_cpu/register_types.cpp scene/main/scene_tree.cpp
#: scene/main/viewport.cpp servers/visual/visual_server_scene.cpp
#: servers/visual_server.cpp
-#, fuzzy
msgid "Rendering"
-msgstr "Renderer:"
+msgstr "Renderowanie"
#: core/project_settings.cpp drivers/gles2/rasterizer_storage_gles2.cpp
#: drivers/gles3/rasterizer_scene_gles3.cpp
@@ -858,23 +786,25 @@ msgstr "Renderer:"
#: scene/resources/multimesh.cpp servers/visual/visual_server_scene.cpp
#: servers/visual_server.cpp
msgid "Quality"
-msgstr ""
+msgstr "Jakość"
#: core/project_settings.cpp scene/animation/animation_tree.cpp
#: scene/gui/file_dialog.cpp scene/main/scene_tree.cpp
#: servers/visual_server.cpp
-#, fuzzy
msgid "Filters"
-msgstr "Filtry:"
+msgstr "Filtry"
#: core/project_settings.cpp scene/main/viewport.cpp
msgid "Sharpen Intensity"
-msgstr ""
+msgstr "Intensywność wyostrzania"
-#: core/project_settings.cpp editor/editor_node.cpp editor/editor_settings.cpp
-#: editor/plugins/script_editor_plugin.cpp editor/project_export.cpp
-#: main/main.cpp modules/gdscript/gdscript.cpp
-#: modules/visual_script/visual_script.cpp scene/3d/room_manager.cpp
+#: core/project_settings.cpp editor/editor_export.cpp editor/editor_node.cpp
+#: editor/editor_settings.cpp editor/plugins/script_editor_plugin.cpp
+#: editor/project_export.cpp main/main.cpp modules/gdscript/gdscript.cpp
+#: modules/visual_script/visual_script.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp scene/3d/room_manager.cpp
#: scene/main/scene_tree.cpp scene/resources/shape_2d.cpp
#: servers/visual_server.cpp
msgid "Debug"
@@ -882,9 +812,8 @@ msgstr "Debugowanie"
#: core/project_settings.cpp main/main.cpp modules/gdscript/gdscript.cpp
#: modules/visual_script/visual_script.cpp scene/resources/dynamic_font.cpp
-#, fuzzy
msgid "Settings"
-msgstr "Ustawienia:"
+msgstr "Ustawienia"
#: core/project_settings.cpp editor/script_editor_debugger.cpp main/main.cpp
#: modules/mono/mono_gd/gd_mono.cpp
@@ -892,88 +821,83 @@ msgid "Profiler"
msgstr "Profiler"
#: core/project_settings.cpp
-#, fuzzy
msgid "Max Functions"
-msgstr "Zamień na funkcję"
+msgstr "Maksymalna ilość funkcji"
#: core/project_settings.cpp scene/3d/vehicle_body.cpp
-#, fuzzy
msgid "Compression"
-msgstr "Wyrażenie"
+msgstr "Kompresja"
#: core/project_settings.cpp
-#, fuzzy
msgid "Formats"
-msgstr "Format"
+msgstr "Formaty"
#: core/project_settings.cpp
msgid "Zstd"
-msgstr ""
+msgstr "Zstd"
#: core/project_settings.cpp
msgid "Long Distance Matching"
-msgstr ""
+msgstr "Dopasowanie długodystansowe"
#: core/project_settings.cpp
msgid "Compression Level"
-msgstr ""
+msgstr "Poziom kompresji"
#: core/project_settings.cpp
msgid "Window Log Size"
-msgstr ""
+msgstr "Rozmiar logów okna"
#: core/project_settings.cpp
msgid "Zlib"
-msgstr ""
+msgstr "Zlib"
#: core/project_settings.cpp
msgid "Gzip"
-msgstr ""
+msgstr "Gzip"
#: core/project_settings.cpp platform/android/export/export.cpp
msgid "Android"
-msgstr ""
+msgstr "Android"
#: core/project_settings.cpp
msgid "Modules"
-msgstr ""
+msgstr "Moduły"
#: core/register_core_types.cpp
msgid "TCP"
-msgstr ""
+msgstr "TCP"
#: core/register_core_types.cpp
-#, fuzzy
msgid "Connect Timeout Seconds"
-msgstr "Połączenia do metody:"
+msgstr "Sekundowy limit czasu połączenia"
#: core/register_core_types.cpp
+#, fuzzy
msgid "Packet Peer Stream"
-msgstr ""
+msgstr "Strumień członków pakietów"
#: core/register_core_types.cpp
msgid "Max Buffer (Power of 2)"
-msgstr ""
+msgstr "Maksymalny bufor (do potęgi 2)"
#: core/register_core_types.cpp editor/editor_settings.cpp main/main.cpp
msgid "SSL"
-msgstr ""
+msgstr "SSL"
#: core/register_core_types.cpp main/main.cpp
-#, fuzzy
msgid "Certificates"
-msgstr "Wierzchołki:"
+msgstr "Certyfikaty"
#: core/resource.cpp editor/dependency_editor.cpp
#: editor/editor_resource_picker.cpp
#: modules/visual_script/visual_script_nodes.cpp
msgid "Resource"
-msgstr "Zasoby"
+msgstr "Zasób"
#: core/resource.cpp
-#, fuzzy
msgid "Local To Scene"
-msgstr "Zamknij scenÄ™"
+msgstr "Lokalne na scenÄ™"
#: core/resource.cpp editor/dependency_editor.cpp
#: editor/editor_autoload_settings.cpp editor/plugins/path_editor_plugin.cpp
@@ -983,27 +907,24 @@ msgid "Path"
msgstr "Ścieżka"
#: core/script_language.cpp
-#, fuzzy
msgid "Source Code"
-msgstr "Źródło"
+msgstr "Kod źródłowy"
#: core/translation.cpp
-#, fuzzy
msgid "Messages"
-msgstr "Opis zmian"
+msgstr "Wiadomości"
#: core/translation.cpp editor/project_settings_editor.cpp
msgid "Locale"
-msgstr "Języki"
+msgstr "Ustawienia regionalne"
#: core/translation.cpp
-#, fuzzy
msgid "Test"
-msgstr "Testowanie"
+msgstr "Test"
#: core/translation.cpp scene/resources/font.cpp
msgid "Fallback"
-msgstr ""
+msgstr "Fallback"
#: core/ustring.cpp scene/resources/segment_shape_2d.cpp
msgid "B"
@@ -1039,17 +960,17 @@ msgstr "EiB"
#: drivers/gles3/rasterizer_scene_gles3.cpp
#: drivers/gles3/rasterizer_storage_gles3.cpp modules/gltf/gltf_state.cpp
msgid "Buffers"
-msgstr ""
+msgstr "Bufory"
#: drivers/gles2/rasterizer_canvas_base_gles2.cpp
#: drivers/gles3/rasterizer_canvas_base_gles3.cpp
msgid "Canvas Polygon Buffer Size (KB)"
-msgstr ""
+msgstr "Rozmiar buforu poligonu płutna (KB)"
#: drivers/gles2/rasterizer_canvas_base_gles2.cpp
#: drivers/gles3/rasterizer_canvas_base_gles3.cpp
msgid "Canvas Polygon Index Buffer Size (KB)"
-msgstr ""
+msgstr "Rozmiar bufora indeksu wielokąta płutna (KB)"
#: drivers/gles2/rasterizer_canvas_base_gles2.cpp
#: drivers/gles3/rasterizer_canvas_base_gles3.cpp editor/editor_settings.cpp
@@ -1058,58 +979,55 @@ msgstr ""
#: servers/physics_2d/physics_2d_server_wrap_mt.h
#: servers/physics_2d/space_2d_sw.cpp servers/visual_server.cpp
msgid "2D"
-msgstr ""
+msgstr "2D"
#: drivers/gles2/rasterizer_canvas_base_gles2.cpp
#: drivers/gles3/rasterizer_canvas_base_gles3.cpp
-#, fuzzy
msgid "Snapping"
-msgstr "Inteligentne przyciÄ…ganie"
+msgstr "PrzyciÄ…ganie"
#: drivers/gles2/rasterizer_canvas_base_gles2.cpp
#: drivers/gles3/rasterizer_canvas_base_gles3.cpp
-#, fuzzy
msgid "Use GPU Pixel Snap"
-msgstr "PrzyciÄ…gaj do pikseli"
+msgstr "Użyj przyciągania pikseli przez kartę graficzną"
#: drivers/gles2/rasterizer_scene_gles2.cpp
#: drivers/gles3/rasterizer_scene_gles3.cpp
msgid "Immediate Buffer Size (KB)"
-msgstr ""
+msgstr "Natychmiastowy rozmiar bufora (KB)"
#: drivers/gles2/rasterizer_storage_gles2.cpp
#: drivers/gles3/rasterizer_storage_gles3.cpp
-#, fuzzy
msgid "Lightmapping"
-msgstr "Stwórz Lightmaps"
+msgstr "Lightmapping"
#: drivers/gles2/rasterizer_storage_gles2.cpp
#: drivers/gles3/rasterizer_storage_gles3.cpp
msgid "Use Bicubic Sampling"
-msgstr ""
+msgstr "Użyj próbkowania dwusześciennego"
#: drivers/gles3/rasterizer_scene_gles3.cpp
msgid "Max Renderable Elements"
-msgstr ""
+msgstr "Maksymalna liczba elementów renderowanych"
#: drivers/gles3/rasterizer_scene_gles3.cpp
msgid "Max Renderable Lights"
-msgstr ""
+msgstr "Maksymalna liczba renderowalnych świateł"
#: drivers/gles3/rasterizer_scene_gles3.cpp
-#, fuzzy
msgid "Max Renderable Reflections"
-msgstr "Wyśrodkowywanie na zaznaczeniu"
+msgstr "Maksymalna liczba możliwych do renderowania odbić"
#: drivers/gles3/rasterizer_scene_gles3.cpp
msgid "Max Lights Per Object"
-msgstr ""
+msgstr "Maksymalna liczba świateł na obiekt"
#: drivers/gles3/rasterizer_scene_gles3.cpp
msgid "Subsurface Scattering"
-msgstr ""
+msgstr "Rozpraszanie podpowierzchniowe"
#: drivers/gles3/rasterizer_scene_gles3.cpp
+#: editor/import/resource_importer_texture.cpp
#: editor/plugins/spatial_editor_plugin.cpp modules/gltf/gltf_node.cpp
#: modules/gridmap/grid_map.cpp scene/2d/cpu_particles_2d.cpp
#: scene/2d/node_2d.cpp scene/2d/parallax_layer.cpp scene/2d/polygon_2d.cpp
@@ -1118,28 +1036,27 @@ msgstr ""
#: scene/main/canvas_layer.cpp scene/resources/environment.cpp
#: scene/resources/material.cpp scene/resources/particles_material.cpp
msgid "Scale"
-msgstr "Skaluj"
+msgstr "Skala"
#: drivers/gles3/rasterizer_scene_gles3.cpp
-#, fuzzy
msgid "Follow Surface"
-msgstr "Zapełnij powierzchnię"
+msgstr "Śledź powierzchnię"
#: drivers/gles3/rasterizer_scene_gles3.cpp
msgid "Weight Samples"
-msgstr ""
+msgstr "Próbki wagowe"
#: drivers/gles3/rasterizer_scene_gles3.cpp
msgid "Voxel Cone Tracing"
-msgstr ""
+msgstr "Śledzenie stożka wokselowego"
#: drivers/gles3/rasterizer_scene_gles3.cpp scene/resources/environment.cpp
msgid "High Quality"
-msgstr ""
+msgstr "Wysoka jakość"
#: drivers/gles3/rasterizer_storage_gles3.cpp
msgid "Blend Shape Max Buffer Size (KB)"
-msgstr ""
+msgstr "Maksymalny rozmiar bufora mieszania kształtów (KB)"
#: editor/animation_bezier_editor.cpp
msgid "Free"
@@ -1167,11 +1084,11 @@ msgstr "Wstaw klucz tutaj"
#: editor/animation_bezier_editor.cpp
msgid "Duplicate Selected Key(s)"
-msgstr "Duplikuj klucz(e)"
+msgstr "Duplikuj zaznaczone klucz(e)"
#: editor/animation_bezier_editor.cpp
msgid "Delete Selected Key(s)"
-msgstr "Usuń klucz(e)"
+msgstr "Usuń zaznaczony klucz(e)"
#: editor/animation_bezier_editor.cpp
msgid "Add Bezier Point"
@@ -1183,51 +1100,51 @@ msgstr "Przesuń punkty krzywej Beziera"
#: editor/animation_bezier_editor.cpp editor/animation_track_editor.cpp
msgid "Anim Duplicate Keys"
-msgstr "Duplikuj klucze"
+msgstr "Animacja Duplikuj klucze"
#: editor/animation_bezier_editor.cpp editor/animation_track_editor.cpp
msgid "Anim Delete Keys"
-msgstr "Usuń klucze animacji"
+msgstr "Animacja Usuń klucze"
#: editor/animation_track_editor.cpp
msgid "Anim Change Keyframe Time"
-msgstr "Zmień wartość czasu klatki kluczowej"
+msgstr "Animacja Zmień wartość czasu klatki kluczowej"
#: editor/animation_track_editor.cpp
msgid "Anim Change Transition"
-msgstr "Przejście zmiany animacji"
+msgstr "Animacja Zmień przejście"
#: editor/animation_track_editor.cpp
msgid "Anim Change Transform"
-msgstr "Zmiana transformacji"
+msgstr "Animacja Zmień transformacjię"
#: editor/animation_track_editor.cpp
msgid "Anim Change Keyframe Value"
-msgstr "Zmiana wartości klatki kluczowej"
+msgstr "Animacja Zmień wartość klatki kluczowej"
#: editor/animation_track_editor.cpp
msgid "Anim Change Call"
-msgstr "Animacja - wywołanie funkcji"
+msgstr "Animacja Wywołanie funkcji"
#: editor/animation_track_editor.cpp
msgid "Anim Multi Change Keyframe Time"
-msgstr "Zmień czas wielu klatek animacji"
+msgstr "Animacja Zmień czas wielu klatek"
#: editor/animation_track_editor.cpp
msgid "Anim Multi Change Transition"
-msgstr "Zmień przejście wielu klatek animacji"
+msgstr "Animacja Zmień przejście wielu klatek"
#: editor/animation_track_editor.cpp
msgid "Anim Multi Change Transform"
-msgstr "Zmień transformację wielu klatek animacji"
+msgstr "Animacja Zmień transformację wielu klatek"
#: editor/animation_track_editor.cpp
msgid "Anim Multi Change Keyframe Value"
-msgstr "Zmień wartość wielu klatek animacji"
+msgstr "Animacja Zmień wartość wielu klatek kluczowych"
#: editor/animation_track_editor.cpp
msgid "Anim Multi Change Call"
-msgstr "Zmień wywołanie wielu klatek animacji"
+msgstr "Animacja Zmień wywołanie wielu funkcji"
#: editor/animation_track_editor.cpp
msgid "Change Animation Length"
@@ -1256,11 +1173,11 @@ msgstr "Ścieżka krzywej Béziera"
#: editor/animation_track_editor.cpp
msgid "Audio Playback Track"
-msgstr "Ścieżka dźwiękowa"
+msgstr "Ścieżka odtwarzania dźwięku"
#: editor/animation_track_editor.cpp
msgid "Animation Playback Track"
-msgstr "Ścieżka animacji"
+msgstr "Ścieżka odtwarzania animacji"
#: editor/animation_track_editor.cpp
msgid "Animation length (frames)"
@@ -1289,7 +1206,7 @@ msgstr "Klipy dźwiękowe:"
#: editor/animation_track_editor.cpp
msgid "Anim Clips:"
-msgstr "Animacje:"
+msgstr "Klipy animacji:"
#: editor/animation_track_editor.cpp
msgid "Change Track Path"
@@ -1309,7 +1226,7 @@ msgstr "Sposób interpolacji"
#: editor/animation_track_editor.cpp
msgid "Loop Wrap Mode (Interpolate end with beginning on loop)"
-msgstr "Zawijanie pętli (interpolacja pomiędzy końcem a początkiem)"
+msgstr "Tryb zawijania pętli (interpolacja końca i początku pętli)"
#: editor/animation_track_editor.cpp
msgid "Remove this track."
@@ -1407,6 +1324,7 @@ msgid "Editors"
msgstr "Edytor"
#: editor/animation_track_editor.cpp editor/editor_settings.cpp
+#: editor/import/resource_importer_scene.cpp
#: editor/plugins/animation_player_editor_plugin.cpp editor/scene_tree_dock.cpp
#: scene/2d/animated_sprite.cpp scene/2d/cpu_particles_2d.cpp
#: scene/2d/sprite.cpp scene/3d/cpu_particles.cpp scene/3d/sprite_3d.cpp
@@ -1639,14 +1557,14 @@ msgstr "Wartość kroku animacji."
msgid "Seconds"
msgstr "sekund"
-#: editor/animation_track_editor.cpp
+#: editor/animation_track_editor.cpp editor/import/resource_importer_scene.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp main/main.cpp
#: scene/resources/texture.cpp
msgid "FPS"
msgstr "klatek na sekundÄ™"
#: editor/animation_track_editor.cpp editor/editor_plugin_settings.cpp
-#: editor/editor_resource_picker.cpp
+#: editor/editor_resource_picker.cpp editor/import/resource_importer_wav.cpp
#: editor/plugins/polygon_2d_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
@@ -2609,7 +2527,9 @@ msgid "Remove Autoload"
msgstr "Usuń Autoload"
#: editor/editor_autoload_settings.cpp editor/editor_plugin_settings.cpp
-#: modules/gdscript/gdscript.cpp scene/2d/polygon_2d.cpp scene/3d/area.cpp
+#: modules/gdscript/gdscript.cpp platform/android/export/export_plugin.cpp
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#: scene/2d/polygon_2d.cpp scene/3d/area.cpp scene/3d/physics_joint.cpp
#: scene/3d/reflection_probe.cpp scene/main/canvas_layer.cpp
#: scene/resources/material.cpp servers/visual_server.cpp
msgid "Enable"
@@ -2779,6 +2699,60 @@ msgstr ""
#: editor/editor_export.cpp platform/android/export/export_plugin.cpp
#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Custom Template"
+msgstr "Motyw edytora"
+
+#: editor/editor_export.cpp editor/project_export.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp
+msgid "Release"
+msgstr "Wydanie"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Binary Format"
+msgstr "Operator koloru."
+
+#: editor/editor_export.cpp
+msgid "64 Bits"
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Embed PCK"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Texture Format"
+msgstr "Obszar tekstury"
+
+#: editor/editor_export.cpp
+msgid "BPTC"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "S3TC"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "ETC"
+msgstr "TCP"
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "ETC2"
+msgstr ""
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "No BPTC Fallbacks"
+msgstr "Fallback"
+
+#: editor/editor_export.cpp platform/android/export/export_plugin.cpp
+#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
msgid "Custom debug template not found."
msgstr "Nie znaleziono własnego szablonu debugowania."
@@ -2956,6 +2930,7 @@ msgid "Make Current"
msgstr "Ustaw na bieżący"
#: editor/editor_feature_profile.cpp editor/editor_node.cpp
+#: editor/import/resource_importer_scene.cpp
#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
msgid "Import"
msgstr "Zaimportuj"
@@ -3084,8 +3059,11 @@ msgstr "Sukces!"
msgid "Display Mode"
msgstr "Tryb odtwarzania:"
-#: editor/editor_file_dialog.cpp main/main.cpp modules/csg/csg_shape.cpp
-#: modules/visual_script/visual_script_nodes.cpp
+#: editor/editor_file_dialog.cpp
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+#: editor/import/resource_importer_wav.cpp main/main.cpp
+#: modules/csg/csg_shape.cpp modules/visual_script/visual_script_nodes.cpp
#: modules/visual_script/visual_script_yield_nodes.cpp scene/2d/light_2d.cpp
#: scene/2d/physics_body_2d.cpp scene/2d/tile_map.cpp
#: scene/3d/baked_lightmap.cpp scene/3d/light.cpp scene/3d/physics_body.cpp
@@ -3222,7 +3200,9 @@ msgstr "(Ponowne) importowanie zasobów"
msgid "Reimport Missing Imported Files"
msgstr ""
-#: editor/editor_help.cpp
+#: editor/editor_help.cpp scene/2d/camera_2d.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/resources/dynamic_font.cpp
+#: scene/resources/style_box.cpp
msgid "Top"
msgstr "Góra"
@@ -3274,6 +3254,7 @@ msgid "Fonts"
msgstr "Fonty"
#: editor/editor_help.cpp editor/plugins/theme_editor_plugin.cpp
+#: platform/iphone/export/export.cpp
msgid "Icons"
msgstr "Ikony"
@@ -3443,7 +3424,9 @@ msgstr ""
msgid "Pin value [Disabled because '%s' is editor-only]"
msgstr "Przypnij wartość [Niedostępne, ponieważ \"%s\" jest tylko dla edytora]"
-#: editor/editor_inspector.cpp editor/scene_tree_dock.cpp
+#: editor/editor_inspector.cpp
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+#: editor/scene_tree_dock.cpp
#: modules/visual_script/visual_script_func_nodes.cpp
#: modules/visual_script/visual_script_nodes.cpp
#: modules/visual_script/visual_script_property_selector.cpp
@@ -3784,6 +3767,16 @@ msgid "Quick Open Script..."
msgstr "Szybkie otwieranie skryptu..."
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Save & Reload"
+msgstr "Zapisz i zrestartuj"
+
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Save changes to '%s' before reloading?"
+msgstr "Zapisać zmiany w \"%s\" przed zamknięciem?"
+
+#: editor/editor_node.cpp
msgid "Save & Close"
msgstr "Zapisz i zamknij"
@@ -3900,6 +3893,11 @@ msgid "Open Project Manager?"
msgstr "Otworzyć menadżera projektów?"
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Save changes to the following scene(s) before reloading?"
+msgstr "Czy zapisać zmiany w aktualnej scenie/scenach przed wyjściem?"
+
+#: editor/editor_node.cpp
msgid "Save & Quit"
msgstr "Zapisz i wyjdź"
@@ -4174,8 +4172,8 @@ msgstr "Zaktualizuj istotne zmiany"
#: editor/editor_node.cpp
#, fuzzy
-msgid "Translate Properties"
-msgstr "Wklej właściwości"
+msgid "Localize Settings"
+msgstr "Lokalizacja"
#: editor/editor_node.cpp
#, fuzzy
@@ -4192,8 +4190,8 @@ msgstr "Inspektor"
#: editor/editor_node.cpp
#, fuzzy
-msgid "Capitalize Properties"
-msgstr "Wklej właściwości"
+msgid "Default Property Name Style"
+msgstr "Ścieżka do projektu:"
#: editor/editor_node.cpp
msgid "Default Float Step"
@@ -4795,7 +4793,9 @@ msgstr "Zainstalowane wtyczki:"
msgid "Update"
msgstr "Odśwież"
-#: editor/editor_plugin_settings.cpp
+#: editor/editor_plugin_settings.cpp platform/android/export/export_plugin.cpp
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp
msgid "Version"
msgstr "Wersja"
@@ -5837,7 +5837,7 @@ msgstr "Cały obszar"
msgid "Rect Custom Position"
msgstr "Ustaw punkt kontrolny wychodzÄ…cy z krzywej"
-#: editor/editor_settings.cpp
+#: editor/editor_settings.cpp platform/android/export/export_plugin.cpp
msgid "Screen"
msgstr ""
@@ -5864,6 +5864,19 @@ msgid "Editor SSL Certificates"
msgstr "Ustawienia edytora"
#: editor/editor_settings.cpp
+msgid "HTTP Proxy"
+msgstr ""
+
+#: editor/editor_settings.cpp
+msgid "Host"
+msgstr ""
+
+#: editor/editor_settings.cpp editor/fileserver/editor_file_server.cpp
+#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp
+msgid "Port"
+msgstr ""
+
+#: editor/editor_settings.cpp
msgid "Project Manager"
msgstr "Menedżer projektów"
@@ -5906,7 +5919,8 @@ msgstr ""
msgid "String Color"
msgstr "Zapisywanie pliku:"
-#: editor/editor_settings.cpp
+#: editor/editor_settings.cpp platform/javascript/export/export.cpp
+#: platform/uwp/export/export.cpp
#, fuzzy
msgid "Background Color"
msgstr "Kolor tła nieprawidłowy."
@@ -6085,22 +6099,6 @@ msgid "Starting the download..."
msgstr "Zaczynam pobieranie..."
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "HTTP Proxy"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Host"
-msgstr ""
-
-#: editor/export_template_manager.cpp editor/fileserver/editor_file_server.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp main/main.cpp
-#: modules/mono/mono_gd/gd_mono.cpp
-msgid "Port"
-msgstr ""
-
-#: editor/export_template_manager.cpp
msgid "Error requesting URL:"
msgstr "Błąd podczas żądania adresu URL:"
@@ -6352,6 +6350,7 @@ msgstr ""
#: editor/fileserver/editor_file_server.cpp
#: editor/plugins/version_control_editor_plugin.cpp
+#: platform/uwp/export/export.cpp platform/windows/export/export.cpp
msgid "Password"
msgstr "Hasło"
@@ -6734,6 +6733,117 @@ msgstr ""
msgid "Use Ambient"
msgstr ""
+#: editor/import/resource_importer_bitmask.cpp
+#, fuzzy
+msgid "Create From"
+msgstr "Utwórz katalog"
+
+#: editor/import/resource_importer_bitmask.cpp
+#: servers/audio/effects/audio_effect_compressor.cpp
+msgid "Threshold"
+msgstr ""
+
+#: editor/import/resource_importer_csv_translation.cpp
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_scene.cpp
+#: editor/import/resource_importer_texture.cpp
+#: editor/import/resource_importer_wav.cpp scene/3d/gi_probe.cpp
+#, fuzzy
+msgid "Compress"
+msgstr "Komponenty"
+
+#: editor/import/resource_importer_csv_translation.cpp
+msgid "Delimiter"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+msgid "No BPTC If RGB"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/sprite_3d.cpp
+#: scene/resources/material.cpp scene/resources/particles_material.cpp
+#: scene/resources/texture.cpp
+msgid "Flags"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/animation/tween.cpp
+#: scene/resources/texture.cpp
+msgid "Repeat"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/2d/light_2d.cpp
+#: scene/gui/control.cpp scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Filter"
+msgstr "Filtry:"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Mipmaps"
+msgstr "Sygnały"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+msgid "Anisotropic"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+msgid "sRGB"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#, fuzzy
+msgid "Slices"
+msgstr "Tnij automatycznie"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
+#: scene/resources/style_box.cpp
+#, fuzzy
+msgid "Horizontal"
+msgstr "Poziomo:"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
+#: scene/resources/style_box.cpp
+#, fuzzy
+msgid "Vertical"
+msgstr "Pionowo:"
+
+#: editor/import/resource_importer_obj.cpp
+#, fuzzy
+msgid "Generate Tangents"
+msgstr "Wygeneruj punkty"
+
+#: editor/import/resource_importer_obj.cpp
+#, fuzzy
+msgid "Scale Mesh"
+msgstr "Tryb skalowania"
+
+#: editor/import/resource_importer_obj.cpp
+#, fuzzy
+msgid "Offset Mesh"
+msgstr "Przesunięcie:"
+
+#: editor/import/resource_importer_obj.cpp
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Octahedral Compression"
+msgstr "Kompresja"
+
+#: editor/import/resource_importer_obj.cpp
+#, fuzzy
+msgid "Optimize Mesh Flags"
+msgstr "Rozmiar: "
+
#: editor/import/resource_importer_scene.cpp
msgid "Import as Single Scene"
msgstr "Importuj jako pojedynczą scenę"
@@ -6774,6 +6884,156 @@ msgstr "Importuj jako wiele scen"
msgid "Import as Multiple Scenes+Materials"
msgstr "Importuj jako wiele scen + materiały"
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Nodes"
+msgstr "Węzeł"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Root Type"
+msgstr "Wróć"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Root Name"
+msgstr "Nazwa zdalnego repozytorium"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Root Scale"
+msgstr "Skaluj"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Custom Script"
+msgstr "NiestandardowyWęzeł"
+
+#: editor/import/resource_importer_scene.cpp scene/resources/texture.cpp
+#, fuzzy
+msgid "Storage"
+msgstr "Zapisywanie pliku:"
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Use Legacy Names"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+#, fuzzy
+msgid "Materials"
+msgstr "Zmiany materiału:"
+
+#: editor/import/resource_importer_scene.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Location"
+msgstr "Lokalizacja"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Keep On Reimport"
+msgstr "Importuj ponownie"
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+#, fuzzy
+msgid "Meshes"
+msgstr "Siatka"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Ensure Tangents"
+msgstr "Modyfikuj stycznÄ… krzywej"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Light Baking"
+msgstr "Lightmapping"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Lightmap Texel Size"
+msgstr "Stwórz Lightmaps"
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+msgid "Skins"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Use Named Skins"
+msgstr "Użyj przyciągania skali"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "External Files"
+msgstr "Otwórz plik"
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Store In Subdir"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Filter Script"
+msgstr "Filtruj skrypty"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Keep Custom Tracks"
+msgstr "Przekształcanie"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Optimizer"
+msgstr "Zoptymalizuj"
+
+#: editor/import/resource_importer_scene.cpp main/main.cpp
+#: modules/mono/mono_gd/gd_mono.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp scene/2d/camera_2d.cpp scene/2d/light_2d.cpp
+#: scene/2d/navigation_polygon.cpp scene/2d/ray_cast_2d.cpp scene/2d/sprite.cpp
+#: scene/2d/y_sort.cpp scene/3d/audio_stream_player_3d.cpp
+#: scene/3d/baked_lightmap.cpp scene/3d/interpolated_camera.cpp
+#: scene/3d/light.cpp scene/3d/navigation_mesh_instance.cpp
+#: scene/3d/physics_joint.cpp scene/3d/ray_cast.cpp scene/3d/sprite_3d.cpp
+#: scene/gui/graph_edit.cpp scene/gui/rich_text_label.cpp
+#: scene/resources/curve.cpp scene/resources/environment.cpp
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Enabled"
+msgstr "Włącz"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Max Linear Error"
+msgstr "Maks. błąd liniowy:"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Max Angular Error"
+msgstr "Maks. błąd kątowy:"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Max Angle"
+msgstr "Wartość"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Remove Unused Tracks"
+msgstr "Usuń ścieżkę animacji"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Clips"
+msgstr "Klipy animacji"
+
+#: editor/import/resource_importer_scene.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/particles_2d.cpp scene/3d/area.cpp scene/3d/cpu_particles.cpp
+#: scene/3d/particles.cpp scene/resources/environment.cpp
+#, fuzzy
+msgid "Amount"
+msgstr "Ilośc:"
+
#: editor/import/resource_importer_scene.cpp
#: editor/plugins/mesh_library_editor_plugin.cpp
msgid "Import Scene"
@@ -6817,12 +7077,149 @@ msgstr "Czy zwracasz obiekt dziedziczÄ…cy po Node w metodzie `post_import()`?"
msgid "Saving..."
msgstr "Zapisywanie..."
+#: editor/import/resource_importer_texture.cpp scene/resources/texture.cpp
+msgid "Lossy Quality"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "HDR Mode"
+msgstr "Tryb zaznaczenia"
+
+#: editor/import/resource_importer_texture.cpp
+msgid "BPTC LDR"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/mesh_instance_2d.cpp scene/2d/multimesh_instance_2d.cpp
+#: scene/2d/particles_2d.cpp scene/2d/sprite.cpp scene/resources/style_box.cpp
+msgid "Normal Map"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Process"
+msgstr "Przetwarzanie końcowe"
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Fix Alpha Border"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Premult Alpha"
+msgstr "Edytuj wielokÄ…t"
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Hdr As Srgb"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Invert Color"
+msgstr "Wierzchołki"
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Normal Map Invert Y"
+msgstr "Losowa skala:"
+
+#: editor/import/resource_importer_texture.cpp
+#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
+#: scene/audio/audio_stream_player.cpp scene/gui/video_player.cpp
+msgid "Stream"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Size Limit"
+msgstr "Limity"
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Detect 3D"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "SVG"
+msgstr "HSV"
+
#: editor/import/resource_importer_texture.cpp
msgid ""
"Warning, no suitable PC VRAM compression enabled in Project Settings. This "
"texture will not display correctly on PC."
msgstr ""
+#: editor/import/resource_importer_texture_atlas.cpp
+#, fuzzy
+msgid "Atlas File"
+msgstr "Rozmiar zarysu:"
+
+#: editor/import/resource_importer_texture_atlas.cpp
+#, fuzzy
+msgid "Import Mode"
+msgstr "Tryb eksportu:"
+
+#: editor/import/resource_importer_texture_atlas.cpp
+#, fuzzy
+msgid "Crop To Region"
+msgstr "Ustaw obszar Kafelka"
+
+#: editor/import/resource_importer_texture_atlas.cpp
+msgid "Trim Alpha Border From Region"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp scene/2d/physics_body_2d.cpp
+#, fuzzy
+msgid "Force"
+msgstr "Wrzuć na siłę"
+
+#: editor/import/resource_importer_wav.cpp
+msgid "8 Bit"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp main/main.cpp
+#: modules/mono/editor/csharp_project.cpp modules/mono/mono_gd/gd_mono.cpp
+msgid "Mono"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+#, fuzzy
+msgid "Max Rate"
+msgstr "Węzeł Mieszania"
+
+#: editor/import/resource_importer_wav.cpp
+#, fuzzy
+msgid "Max Rate Hz"
+msgstr "Węzeł Mieszania"
+
+#: editor/import/resource_importer_wav.cpp
+msgid "Trim"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+#, fuzzy
+msgid "Normalize"
+msgstr "Format"
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+#, fuzzy
+msgid "Loop Mode"
+msgstr "Tryb przesuwania"
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+#, fuzzy
+msgid "Loop Begin"
+msgstr "Tryb przesuwania"
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+#, fuzzy
+msgid "Loop End"
+msgstr "Tryb przesuwania"
+
#: editor/import_defaults_editor.cpp
msgid "Select Importer"
msgstr "Wybierz importer"
@@ -6899,6 +7296,29 @@ msgid "Failed to load resource."
msgstr "Nie udało się wczytać zasobu."
#: editor/inspector_dock.cpp
+#, fuzzy
+msgid "Property Name Style"
+msgstr "Nazwa projektu:"
+
+#: editor/inspector_dock.cpp scene/gui/color_picker.cpp
+msgid "Raw"
+msgstr "Raw"
+
+#: editor/inspector_dock.cpp
+#, fuzzy
+msgid "Capitalized"
+msgstr "Wielkie litery na początku słów"
+
+#: editor/inspector_dock.cpp
+#, fuzzy
+msgid "Localized"
+msgstr "Ustawienia regionalne"
+
+#: editor/inspector_dock.cpp
+msgid "Localization not available for current language."
+msgstr ""
+
+#: editor/inspector_dock.cpp
msgid "Copy Properties"
msgstr "Skopiuj właściwości"
@@ -7947,18 +8367,26 @@ msgid "License (Z-A)"
msgstr "Licencja (Z-A)"
#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgctxt "Pagination"
msgid "First"
msgstr "PoczÄ…tek"
-#: editor/plugins/asset_library_editor_plugin.cpp scene/gui/control.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgctxt "Pagination"
msgid "Previous"
msgstr "Wstecz"
-#: editor/plugins/asset_library_editor_plugin.cpp scene/gui/control.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgctxt "Pagination"
msgid "Next"
msgstr "Dalej"
#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgctxt "Pagination"
msgid "Last"
msgstr "Koniec"
@@ -8209,19 +8637,19 @@ msgstr ""
"Gdy aktywne, poruszanie węzłów typu Control zmienia ich zakotwiczenie, "
"zamiast marginesów."
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Top Left"
msgstr "Lewy górny róg"
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Top Right"
msgstr "Prawy górny róg"
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Bottom Right"
msgstr "Prawy dolny róg"
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Bottom Left"
msgstr "Lewy dolny róg"
@@ -8935,6 +9363,19 @@ msgstr "Wygeneruj próbnik GI"
msgid "Gradient Edited"
msgstr "Gradient edytowany"
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+msgid "Swap GradientTexture2D Fill Points"
+msgstr ""
+
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+msgid "Swap Gradient Fill Points"
+msgstr ""
+
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+#, fuzzy
+msgid "Toggle Grid Snap"
+msgstr "Przełącz tryb"
+
#: editor/plugins/item_list_editor_plugin.cpp
msgid "Item %d"
msgstr "Element %d"
@@ -9170,8 +9611,9 @@ msgstr ""
"Zaktualizować z istniejącej sceny?:\n"
"%s"
-#: editor/plugins/mesh_library_editor_plugin.cpp modules/gridmap/grid_map.cpp
-msgid "Mesh Library"
+#: editor/plugins/mesh_library_editor_plugin.cpp
+#, fuzzy
+msgid "MeshLibrary"
msgstr "Biblioteka meshów"
#: editor/plugins/mesh_library_editor_plugin.cpp
@@ -10163,8 +10605,8 @@ msgstr "Połączenia do metody:"
msgid "Source"
msgstr "Źródło"
-#: editor/plugins/script_text_editor.cpp scene/3d/interpolated_camera.cpp
-#: scene/animation/skeleton_ik.cpp
+#: editor/plugins/script_text_editor.cpp platform/uwp/export/export.cpp
+#: scene/3d/interpolated_camera.cpp scene/animation/skeleton_ik.cpp
msgid "Target"
msgstr "Cel"
@@ -10407,7 +10849,7 @@ msgstr "Odtwórz IK"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Orthogonal"
-msgstr "Ortogonalna"
+msgstr "Ortogonalne"
#: editor/plugins/spatial_editor_plugin.cpp modules/gltf/gltf_camera.cpp
msgid "Perspective"
@@ -11140,7 +11582,9 @@ msgstr "Szybkość:"
#: editor/plugins/sprite_frames_editor_plugin.cpp
#: modules/gltf/gltf_animation.cpp modules/minimp3/audio_stream_mp3.cpp
-#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp scene/2d/path_2d.cpp
+#: modules/minimp3/resource_importer_mp3.cpp
+#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp
+#: modules/stb_vorbis/resource_importer_ogg_vorbis.cpp scene/2d/path_2d.cpp
#: scene/3d/path.cpp scene/resources/animation.cpp scene/resources/material.cpp
msgid "Loop"
msgstr "Zapętl"
@@ -12033,8 +12477,9 @@ msgstr "Maska bitowa"
msgid "Priority"
msgstr "Priorytet"
-#: editor/plugins/tile_set_editor_plugin.cpp main/main.cpp scene/gui/button.cpp
-#: scene/gui/item_list.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp main/main.cpp
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#: scene/gui/button.cpp scene/gui/item_list.cpp
msgid "Icon"
msgstr "Ikona"
@@ -12377,7 +12822,7 @@ msgstr "Wybierz ścieżkę do prywatnego klucza SSH"
#: editor/plugins/version_control_editor_plugin.cpp
msgid "SSH Passphrase"
-msgstr "Hasło-fraza SSH"
+msgstr "Hasło SSH"
#: editor/plugins/version_control_editor_plugin.cpp
msgid "Detect new changes"
@@ -13409,10 +13854,6 @@ msgstr ""
"ustawieniach eksportu."
#: editor/project_export.cpp
-msgid "Release"
-msgstr "Wydanie"
-
-#: editor/project_export.cpp
msgid "Exporting All"
msgstr "Eksportowanie wszystkiego"
@@ -15291,6 +15732,7 @@ msgid "Change AudioStreamPlayer3D Emission Angle"
msgstr "Zmień kąt emisji węzła AudioStreamPlayer3D"
#: editor/spatial_editor_gizmos.cpp modules/gltf/gltf_node.cpp
+#: platform/osx/export/export.cpp
msgid "Camera"
msgstr ""
@@ -15572,7 +16014,8 @@ msgstr ""
msgid "Use Nvidia Rect Flicker Workaround"
msgstr ""
-#: main/main.cpp platform/uwp/os_uwp.cpp
+#: main/main.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp platform/uwp/os_uwp.cpp
#, fuzzy
msgid "Display"
msgstr "Pokaż wszystko"
@@ -15633,19 +16076,6 @@ msgstr ""
msgid "Allowed"
msgstr ""
-#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp scene/2d/camera_2d.cpp
-#: scene/2d/light_2d.cpp scene/2d/navigation_polygon.cpp
-#: scene/2d/ray_cast_2d.cpp scene/2d/sprite.cpp scene/2d/y_sort.cpp
-#: scene/3d/audio_stream_player_3d.cpp scene/3d/baked_lightmap.cpp
-#: scene/3d/interpolated_camera.cpp scene/3d/light.cpp
-#: scene/3d/navigation_mesh_instance.cpp scene/3d/ray_cast.cpp
-#: scene/3d/sprite_3d.cpp scene/gui/graph_edit.cpp
-#: scene/gui/rich_text_label.cpp scene/resources/curve.cpp
-#: scene/resources/environment.cpp
-#, fuzzy
-msgid "Enabled"
-msgstr "Włącz"
-
#: main/main.cpp
msgid "Intended Usage"
msgstr ""
@@ -15677,13 +16107,14 @@ msgstr ""
msgid "Handheld"
msgstr ""
-#: main/main.cpp
+#: main/main.cpp platform/javascript/export/export.cpp
+#: platform/uwp/export/export.cpp
#, fuzzy
msgid "Orientation"
msgstr "Dokumentacja online"
#: main/main.cpp scene/gui/scroll_container.cpp scene/gui/text_edit.cpp
-#: scene/main/scene_tree.cpp
+#: scene/main/scene_tree.cpp scene/register_scene_types.cpp
#, fuzzy
msgid "Common"
msgstr "Społeczność"
@@ -15726,7 +16157,7 @@ msgstr ""
#: main/main.cpp
#, fuzzy
-msgid "Frame Delay (msec)"
+msgid "Frame Delay Msec"
msgstr "Powiększ do zaznaczenia"
#: main/main.cpp
@@ -15855,11 +16286,6 @@ msgstr ""
msgid "Tooltip Position Offset"
msgstr "Offset obrotu:"
-#: main/main.cpp modules/mono/editor/csharp_project.cpp
-#: modules/mono/mono_gd/gd_mono.cpp
-msgid "Mono"
-msgstr ""
-
#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp
#, fuzzy
msgid "Debugger Agent"
@@ -16439,7 +16865,7 @@ msgstr "Kolory"
msgid "Intensity"
msgstr ""
-#: modules/gltf/gltf_light.cpp scene/2d/light_2d.cpp
+#: modules/gltf/gltf_light.cpp scene/2d/light_2d.cpp scene/3d/light.cpp
#, fuzzy
msgid "Range"
msgstr "Zmień"
@@ -16586,11 +17012,6 @@ msgstr "z danymi"
msgid "Use Named Skin Binds"
msgstr ""
-#: modules/gltf/gltf_state.cpp scene/3d/physics_joint.cpp
-#, fuzzy
-msgid "Nodes"
-msgstr "Węzeł"
-
#: modules/gltf/gltf_state.cpp
#, fuzzy
msgid "Buffer Views"
@@ -16602,16 +17023,6 @@ msgstr ""
#: modules/gltf/gltf_state.cpp
#, fuzzy
-msgid "Meshes"
-msgstr "Siatka"
-
-#: modules/gltf/gltf_state.cpp
-#, fuzzy
-msgid "Materials"
-msgstr "Zmiany materiału:"
-
-#: modules/gltf/gltf_state.cpp
-#, fuzzy
msgid "Scene Name"
msgstr "Ścieżka sceny:"
@@ -16627,15 +17038,11 @@ msgstr "Nazwa korzenia"
msgid "Textures"
msgstr "Funkcje"
-#: modules/gltf/gltf_state.cpp
+#: modules/gltf/gltf_state.cpp platform/uwp/export/export.cpp
msgid "Images"
msgstr ""
#: modules/gltf/gltf_state.cpp
-msgid "Skins"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp
msgid "Cameras"
msgstr ""
@@ -16670,11 +17077,15 @@ msgid "Src Image"
msgstr "Pokaż kości"
#: modules/gridmap/grid_map.cpp
+msgid "Mesh Library"
+msgstr "Biblioteka meshów"
+
+#: modules/gridmap/grid_map.cpp
#, fuzzy
msgid "Physics Material"
msgstr "Klatka fizyki %"
-#: modules/gridmap/grid_map.cpp
+#: modules/gridmap/grid_map.cpp scene/3d/visual_instance.cpp
#, fuzzy
msgid "Use In Baked Light"
msgstr "Stwórz Lightmaps"
@@ -16706,6 +17117,7 @@ msgstr "Wyśrodkowane"
#: modules/gridmap/grid_map.cpp scene/2d/collision_object_2d.cpp
#: scene/2d/tile_map.cpp scene/3d/collision_object.cpp scene/3d/soft_body.cpp
+#: scene/resources/material.cpp
msgid "Mask"
msgstr ""
@@ -16888,7 +17300,9 @@ msgid "Ultra Quality Ray Count"
msgstr ""
#: modules/minimp3/audio_stream_mp3.cpp
+#: modules/minimp3/resource_importer_mp3.cpp
#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp
+#: modules/stb_vorbis/resource_importer_ogg_vorbis.cpp
#, fuzzy
msgid "Loop Offset"
msgstr "Przesunięcie:"
@@ -17971,6 +18385,194 @@ msgid "The package must have at least one '.' separator."
msgstr "Paczka musi mieć co najmniej jedną kropkę jako separator."
#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Use Custom Build"
+msgstr "Użyj niestandardowego katalogu użytkownika"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Export Format"
+msgstr "Ścieżka eksportu"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Keystore"
+msgstr "Debugger"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Debug User"
+msgstr "Debugger"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Debug Password"
+msgstr "Hasło"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Release User"
+msgstr "Wydanie"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Release Password"
+msgstr "Hasło"
+
+#: platform/android/export/export_plugin.cpp
+msgid "One Click Deploy"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Clear Previous Install"
+msgstr "Sprawdź poprzednią instancję"
+
+#: platform/android/export/export_plugin.cpp scene/resources/shader.cpp
+msgid "Code"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Min SDK"
+msgstr "Rozmiar zarysu:"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Target SDK"
+msgstr "Docelowa liczba klatek na sekundÄ™ (FPS)"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Package"
+msgstr "Pakowanie"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Unique Name"
+msgstr "Nazwa węzła:"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Signed"
+msgstr "Sygnał"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Classify As Game"
+msgstr "Nazwa klasy:"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Retain Data On Uninstall"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Exclude From Recents"
+msgstr "Usuń węzły"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Graphics"
+msgstr "Offset siatki:"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "OpenGL Debug"
+msgstr "Otwórz"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "XR Features"
+msgstr "Funkcje"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "XR Mode"
+msgstr "Tryb przesuwania"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Hand Tracking"
+msgstr "Pakowanie"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Hand Tracking Frequency"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Passthrough"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Immersive Mode"
+msgstr "Tryb priorytetów"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Support Small"
+msgstr "Wsparcie"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Support Normal"
+msgstr "Wsparcie"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Support Large"
+msgstr "Wsparcie"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Support Xlarge"
+msgstr "Wsparcie"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "User Data Backup"
+msgstr "Interfejs użytkownika"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Allow"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Command Line"
+msgstr "Command"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Extra Args"
+msgstr "Dodatkowe argumenty wywołania:"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "APK Expansion"
+msgstr "Wyrażenie"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Salt"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Public Key"
+msgstr "Ścieżka do publicznego klucza SSH"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Permissions"
+msgstr "Maska emisji"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Custom Permissions"
+msgstr "Uruchom niestandardowÄ… scenÄ™"
+
+#: platform/android/export/export_plugin.cpp
msgid "Select device from the list"
msgstr "Wybierz urzÄ…dzenie z listy"
@@ -18295,6 +18897,178 @@ msgid "The character '%s' is not allowed in Identifier."
msgstr "Znak \"%s\" nie jest dozwolony w identyfikatorze."
#: platform/iphone/export/export.cpp
+msgid "App Store Team ID"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Provisioning Profile UUID Debug"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Code Sign Identity Debug"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Export Method Debug"
+msgstr "Eksport z debugowaniem"
+
+#: platform/iphone/export/export.cpp
+msgid "Provisioning Profile UUID Release"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Code Sign Identity Release"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Export Method Release"
+msgstr "Tryb eksportu:"
+
+#: platform/iphone/export/export.cpp
+msgid "Targeted Device Family"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Info"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Identifier"
+msgstr "Niepoprawny identyfikator:"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Signature"
+msgstr "Sygnał"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Short Version"
+msgstr "Wersja"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Copyright"
+msgstr "Prawy górny róg"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Capabilities"
+msgstr "Wklej właściwości"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Access Wi-Fi"
+msgstr "Sukces!"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Push Notifications"
+msgstr "Obrót losowy:"
+
+#: platform/iphone/export/export.cpp scene/3d/baked_lightmap.cpp
+#, fuzzy
+msgid "User Data"
+msgstr "Interfejs użytkownika"
+
+#: platform/iphone/export/export.cpp
+msgid "Accessible From Files App"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Accessible From Itunes Sharing"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Privacy"
+msgstr "Ścieżka do prywatnego klucza SSH"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Camera Usage Description"
+msgstr "Opis"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Microphone Usage Description"
+msgstr "Opisy właściwości"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Photolibrary Usage Description"
+msgstr "Opisy właściwości"
+
+#: platform/iphone/export/export.cpp
+msgid "iPhone 120 X 120"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPhone 180 X 180"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 76 X 76"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 152 X 152"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 167 X 167"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "App Store 1024 X 1024"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Spotlight 40 X 40"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Spotlight 80 X 80"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Storyboard"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Use Launch Screen Storyboard"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Image Scale Mode"
+msgstr "Tryb skalowania"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Custom Image @2x"
+msgstr "NiestandardowyWęzeł"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Custom Image @3x"
+msgstr "NiestandardowyWęzeł"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Use Custom BG Color"
+msgstr "NiestandardowyWęzeł"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Custom BG Color"
+msgstr "NiestandardowyWęzeł"
+
+#: platform/iphone/export/export.cpp
msgid "App Store Team ID not specified - cannot configure the project."
msgstr "App Store Team ID nie podany - nie można skonfigurować projektu."
@@ -18331,6 +19105,80 @@ msgid "Could not read file:"
msgstr "Nie udało się odczytać pliku:"
#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Variant"
+msgstr "Separacja:"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Export Type"
+msgstr "Eksportuj"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "VRAM Texture Compression"
+msgstr "Wyrażenie"
+
+#: platform/javascript/export/export.cpp
+msgid "For Desktop"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "For Mobile"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Html"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Export Icon"
+msgstr "Rozwiń wszystko"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Custom Html Shell"
+msgstr "NiestandardowyWęzeł"
+
+#: platform/javascript/export/export.cpp
+msgid "Head Include"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Canvas Resize Policy"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Focus Canvas On Start"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Experimental Virtual Keyboard"
+msgstr "Filtruj sygnały"
+
+#: platform/javascript/export/export.cpp
+msgid "Progressive Web App"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Offline Page"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 144 X 144"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 180 X 180"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 512 X 512"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
msgid "Could not read HTML shell:"
msgstr "Nie udało się odczytać powłoki HTML:"
@@ -18436,6 +19284,202 @@ msgid "Unknown object type."
msgstr "Nieznany typ obiektu."
#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "App Category"
+msgstr "Kategoria:"
+
+#: platform/osx/export/export.cpp
+msgid "High Res"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Location Usage Description"
+msgstr "Opis"
+
+#: platform/osx/export/export.cpp
+msgid "Address Book Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Calendar Usage Description"
+msgstr "Opis"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Photos Library Usage Description"
+msgstr "Opisy właściwości"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Desktop Folder Usage Description"
+msgstr "Opisy metod"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Documents Folder Usage Description"
+msgstr "Opisy metod"
+
+#: platform/osx/export/export.cpp
+msgid "Downloads Folder Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Network Volumes Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Removable Volumes Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#, fuzzy
+msgid "Codesign"
+msgstr "DMG podpisywania kodu"
+
+#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Identity"
+msgstr "Wcięcie w lewo"
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#, fuzzy
+msgid "Timestamp"
+msgstr "Czas"
+
+#: platform/osx/export/export.cpp
+msgid "Hardened Runtime"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Replace Existing Signature"
+msgstr "ZastÄ…p w plikach"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Entitlements"
+msgstr "Uchwyty"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Custom File"
+msgstr "NiestandardowyWęzeł"
+
+#: platform/osx/export/export.cpp
+msgid "Allow JIT Code Execution"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Allow Unsigned Executable Memory"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Allow Dyld Environment Variables"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Disable Library Validation"
+msgstr "Wyłączony przycisk"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Audio Input"
+msgstr "Dodaj Wejście"
+
+#: platform/osx/export/export.cpp
+msgid "Address Book"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Calendars"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Photos Library"
+msgstr "Wyeksportuj bibliotekÄ™"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Apple Events"
+msgstr "Dodaj zdarzenie"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Debugging"
+msgstr "Debugowanie"
+
+#: platform/osx/export/export.cpp
+msgid "App Sandbox"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Network Server"
+msgstr "Członek sieci"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Network Client"
+msgstr "Członek sieci"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Device Usb"
+msgstr "UrzÄ…dzenie"
+
+#: platform/osx/export/export.cpp
+msgid "Device Bluetooth"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Files Downloads"
+msgstr "Pobierz"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Files Pictures"
+msgstr "Funkcje"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Files Music"
+msgstr "Plik"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Files Movies"
+msgstr "Filtruj kafelki"
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#, fuzzy
+msgid "Custom Options"
+msgstr "Opcje magistrali"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Notarization"
+msgstr "Lokalizacja"
+
+#: platform/osx/export/export.cpp
+msgid "Apple ID Name"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Apple ID Password"
+msgstr "Hasło"
+
+#: platform/osx/export/export.cpp
+msgid "Apple Team ID"
+msgstr ""
+
+#: platform/osx/export/export.cpp
msgid ""
"Note: The notarization process generally takes less than an hour. When the "
"process is completed, you'll receive an email."
@@ -18667,6 +19711,136 @@ msgid "Force Builtin Codesign"
msgstr ""
#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Architecture"
+msgstr "Dodaj pole architektury"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Display Name"
+msgstr "Pokaż wszystko"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Short Name"
+msgstr "Nazwa skryptu:"
+
+#: platform/uwp/export/export.cpp
+msgid "Publisher"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Publisher Display Name"
+msgstr "Niepoprawna wyświetlana nazwa wydawcy paczki."
+
+#: platform/uwp/export/export.cpp
+msgid "Product Guid"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Publisher Guid"
+msgstr "Wyczyść prowadnice"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Signing"
+msgstr "Sygnał"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Certificate"
+msgstr "Certyfikaty"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Algorithm"
+msgstr "Debugger"
+
+#: platform/uwp/export/export.cpp
+msgid "Major"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Minor"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Build"
+msgstr "Tryb linijki"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Revision"
+msgstr "Wyrażenie"
+
+#: platform/uwp/export/export.cpp
+msgid "Landscape"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Portrait"
+msgstr "Odbij portale"
+
+#: platform/uwp/export/export.cpp
+msgid "Landscape Flipped"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Portrait Flipped"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Store Logo"
+msgstr "Tryb skalowania"
+
+#: platform/uwp/export/export.cpp
+msgid "Square 44 X 44 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 71 X 71 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 150 X 150 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 310 X 310 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Wide 310 X 150 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Splash Screen"
+msgstr "Wywołania rysowania:"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Tiles"
+msgstr "Plik"
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Square 150 X 150"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Wide 310 X 150"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Square 310 X 310"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
msgid "Invalid package short name."
msgstr "Niepoprawna krótka nazwa paczki."
@@ -18741,15 +19915,52 @@ msgstr ""
#: platform/uwp/export/export.cpp
#, fuzzy
-msgid "Debug Password"
-msgstr "Hasło"
+msgid "Debug Algorithm"
+msgstr "Debugger"
-#: platform/uwp/export/export.cpp
+#: platform/windows/export/export.cpp
+msgid "Identity Type"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Timestamp Server URL"
+msgstr ""
+
+#: platform/windows/export/export.cpp
#, fuzzy
-msgid "Debug Algorithm"
+msgid "Digest Algorithm"
msgstr "Debugger"
#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "File Version"
+msgstr "Wersja"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Product Version"
+msgstr "Nieprawidłowa wersja produktu:"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Company Name"
+msgstr "Nazwa węzła:"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Product Name"
+msgstr "Nazwa projektu:"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "File Description"
+msgstr "Opis"
+
+#: platform/windows/export/export.cpp
+msgid "Trademarks"
+msgstr ""
+
+#: platform/windows/export/export.cpp
msgid ""
"The rcedit tool must be configured in the Editor Settings (Export > Windows "
"> Rcedit) to change the icon or app information data."
@@ -18823,12 +20034,14 @@ msgstr "Uruchom"
msgid "Centered"
msgstr "Wyśrodkowane"
-#: scene/2d/animated_sprite.cpp scene/2d/camera_2d.cpp scene/2d/light_2d.cpp
+#: scene/2d/animated_sprite.cpp scene/2d/camera_2d.cpp
+#: scene/2d/cpu_particles_2d.cpp scene/2d/light_2d.cpp
#: scene/2d/parallax_background.cpp scene/2d/parallax_layer.cpp
#: scene/2d/path_2d.cpp scene/2d/polygon_2d.cpp scene/2d/sprite.cpp
-#: scene/3d/path.cpp scene/3d/physics_body.cpp scene/3d/sprite_3d.cpp
-#: scene/gui/graph_node.cpp scene/gui/rich_text_effect.cpp
-#: scene/main/canvas_layer.cpp scene/resources/material.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/path.cpp scene/3d/physics_body.cpp
+#: scene/3d/sprite_3d.cpp scene/gui/graph_node.cpp
+#: scene/gui/rich_text_effect.cpp scene/main/canvas_layer.cpp
+#: scene/resources/material.cpp scene/resources/particles_material.cpp
#: scene/resources/style_box.cpp
#, fuzzy
msgid "Offset"
@@ -18903,11 +20116,6 @@ msgstr "Dodaj magistralÄ™ audio"
msgid "Override"
msgstr "Nadpisuje"
-#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
-#: scene/audio/audio_stream_player.cpp scene/gui/video_player.cpp
-msgid "Stream"
-msgstr ""
-
#: scene/2d/audio_stream_player_2d.cpp scene/audio/audio_stream_player.cpp
#: scene/gui/video_player.cpp servers/audio/effects/audio_effect_amplify.cpp
#, fuzzy
@@ -18934,13 +20142,13 @@ msgid "Stream Paused"
msgstr ""
#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
-#: scene/3d/reflection_probe.cpp scene/3d/visual_instance.cpp
-#: scene/resources/material.cpp
+#: scene/3d/light.cpp scene/3d/reflection_probe.cpp
+#: scene/3d/visual_instance.cpp scene/resources/material.cpp
#, fuzzy
msgid "Max Distance"
msgstr "Wybierz odległość:"
-#: scene/2d/audio_stream_player_2d.cpp
+#: scene/2d/audio_stream_player_2d.cpp scene/3d/light.cpp
#, fuzzy
msgid "Attenuation"
msgstr "Animacja"
@@ -18996,6 +20204,24 @@ msgstr "Tryb przesuwania"
msgid "Limit"
msgstr ""
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/style_box.cpp
+#, fuzzy
+msgid "Left"
+msgstr "UI Lewo"
+
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/style_box.cpp
+#, fuzzy
+msgid "Right"
+msgstr "Światło"
+
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/dynamic_font.cpp scene/resources/style_box.cpp
+#, fuzzy
+msgid "Bottom"
+msgstr "Lewy dolny róg"
+
#: scene/2d/camera_2d.cpp
#, fuzzy
msgid "Smoothed"
@@ -19241,13 +20467,6 @@ msgstr ""
msgid "Emitting"
msgstr "Ustawienia:"
-#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp scene/3d/area.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
-#: scene/resources/environment.cpp
-#, fuzzy
-msgid "Amount"
-msgstr "Ilośc:"
-
#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp
#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
msgid "Lifetime"
@@ -19312,18 +20531,13 @@ msgstr ""
#: scene/2d/mesh_instance_2d.cpp scene/2d/multimesh_instance_2d.cpp
#: scene/2d/particles_2d.cpp scene/2d/polygon_2d.cpp scene/2d/sprite.cpp
#: scene/3d/sprite_3d.cpp scene/gui/nine_patch_rect.cpp
-#: scene/gui/texture_rect.cpp scene/resources/sky.cpp
-#: scene/resources/style_box.cpp scene/resources/visual_shader_nodes.cpp
+#: scene/gui/texture_rect.cpp scene/resources/material.cpp
+#: scene/resources/sky.cpp scene/resources/style_box.cpp
+#: scene/resources/visual_shader_nodes.cpp
#, fuzzy
msgid "Texture"
msgstr "Tekst"
-#: scene/2d/cpu_particles_2d.cpp scene/2d/mesh_instance_2d.cpp
-#: scene/2d/multimesh_instance_2d.cpp scene/2d/particles_2d.cpp
-#: scene/2d/sprite.cpp scene/resources/style_box.cpp
-msgid "Normal Map"
-msgstr ""
-
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
#, fuzzy
@@ -19347,10 +20561,10 @@ msgid "Normals"
msgstr "Format"
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/3d/sprite_3d.cpp scene/resources/material.cpp
-#: scene/resources/particles_material.cpp scene/resources/texture.cpp
-msgid "Flags"
-msgstr ""
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Align Y"
+msgstr "Przypisz"
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
@@ -19371,6 +20585,12 @@ msgid "Initial Velocity"
msgstr "Inicjuj"
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Velocity Random"
+msgstr "Prędkość"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp servers/physics_2d_server.cpp
#: servers/physics_server.cpp
msgid "Angular Velocity"
@@ -19379,6 +20599,12 @@ msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
#, fuzzy
+msgid "Velocity Curve"
+msgstr "Prędkość"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
msgid "Orbit Velocity"
msgstr "Orbituj widok w prawo"
@@ -19390,6 +20616,23 @@ msgstr "Liniowy"
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Accel"
+msgstr "Sukces!"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Accel Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Accel Curve"
+msgstr "Podziel krzywÄ…"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
msgid "Radial Accel"
msgstr ""
@@ -19399,19 +20642,55 @@ msgid "Tangential Accel"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/2d/joints_2d.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/vehicle_body.cpp
-#: scene/resources/particles_material.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/physics_joint.cpp
+#: scene/3d/vehicle_body.cpp scene/resources/particles_material.cpp
#: servers/audio/effects/audio_effect_reverb.cpp
msgid "Damping"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+msgid "Damping Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Damping Curve"
+msgstr "Podziel krzywÄ…"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp scene/3d/light.cpp
+#: scene/resources/particles_material.cpp
msgid "Angle"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+msgid "Angle Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Angle Curve"
+msgstr "Zamknij krzywÄ…"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#, fuzzy
+msgid "Scale Amount"
+msgstr "Ilośc:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+msgid "Scale Amount Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#, fuzzy
+msgid "Scale Amount Curve"
+msgstr "Skaluj od kursora"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
#, fuzzy
msgid "Color Ramp"
msgstr "Kolory"
@@ -19427,6 +20706,48 @@ msgstr ""
msgid "Hue Variation"
msgstr "Separacja:"
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Variation"
+msgstr "Separacja:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Variation Random"
+msgstr "Separacja:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Variation Curve"
+msgstr "Separacja:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Speed Random"
+msgstr "Skaluj"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Speed Curve"
+msgstr "Podziel krzywÄ…"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Offset Random"
+msgstr "Przesunięcie:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Offset Curve"
+msgstr "Zamknij krzywÄ…"
+
#: scene/2d/joints_2d.cpp
msgid "Node A and Node B must be PhysicsBody2Ds"
msgstr "Node A i Node B muszą być węzłami PhysicsBody2D"
@@ -19458,6 +20779,7 @@ msgid "Node B"
msgstr "Węzeł"
#: scene/2d/joints_2d.cpp scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp
+#: scene/3d/light.cpp scene/3d/physics_joint.cpp
#: scene/resources/environment.cpp
msgid "Bias"
msgstr ""
@@ -19467,7 +20789,7 @@ msgstr ""
msgid "Disable Collision"
msgstr "Wyłączony przycisk"
-#: scene/2d/joints_2d.cpp
+#: scene/2d/joints_2d.cpp scene/3d/physics_joint.cpp
msgid "Softness"
msgstr ""
@@ -19485,7 +20807,7 @@ msgstr "Inicjuj"
msgid "Rest Length"
msgstr ""
-#: scene/2d/joints_2d.cpp scene/3d/vehicle_body.cpp
+#: scene/2d/joints_2d.cpp scene/3d/physics_joint.cpp scene/3d/vehicle_body.cpp
msgid "Stiffness"
msgstr ""
@@ -19508,7 +20830,7 @@ msgid "Texture Scale"
msgstr "Obszar tekstury"
#: scene/2d/light_2d.cpp scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp
-#: scene/resources/environment.cpp scene/resources/sky.cpp
+#: scene/3d/light.cpp scene/resources/environment.cpp scene/resources/sky.cpp
msgid "Energy"
msgstr ""
@@ -19549,12 +20871,6 @@ msgstr "Widok z tyłu"
msgid "Gradient Length"
msgstr "Gradient edytowany"
-#: scene/2d/light_2d.cpp scene/gui/control.cpp
-#: scene/resources/navigation_mesh.cpp
-#, fuzzy
-msgid "Filter"
-msgstr "Filtry:"
-
#: scene/2d/light_2d.cpp
#, fuzzy
msgid "Filter Smooth"
@@ -20001,11 +21317,6 @@ msgid "Applied Forces"
msgstr ""
#: scene/2d/physics_body_2d.cpp
-#, fuzzy
-msgid "Force"
-msgstr "Wrzuć na siłę"
-
-#: scene/2d/physics_body_2d.cpp
msgid "Torque"
msgstr ""
@@ -20021,7 +21332,7 @@ msgstr " (fizyczny)"
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
#, fuzzy
-msgid "Moving platform"
+msgid "Moving Platform"
msgstr "Przesuwam wyjście"
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
@@ -20030,7 +21341,7 @@ msgstr ""
#: scene/2d/physics_body_2d.cpp scene/2d/touch_screen_button.cpp
#: scene/3d/physics_body.cpp scene/gui/texture_button.cpp
-#: scene/resources/line_shape_2d.cpp
+#: scene/resources/line_shape_2d.cpp scene/resources/material.cpp
#, fuzzy
msgid "Normal"
msgstr "Format"
@@ -20277,6 +21588,34 @@ msgstr ""
"VisibilityEnabler2D działa najlepiej, gdy jest użyty bezpośrednio pod "
"korzeniem aktualnie edytowanej sceny."
+#: scene/2d/visibility_notifier_2d.cpp scene/3d/visibility_notifier.cpp
+#, fuzzy
+msgid "Pause Animations"
+msgstr "Wklej animacjÄ™"
+
+#: scene/2d/visibility_notifier_2d.cpp scene/3d/visibility_notifier.cpp
+msgid "Freeze Bodies"
+msgstr ""
+
+#: scene/2d/visibility_notifier_2d.cpp
+#, fuzzy
+msgid "Pause Particles"
+msgstr "CzÄ…steczki"
+
+#: scene/2d/visibility_notifier_2d.cpp
+#, fuzzy
+msgid "Pause Animated Sprites"
+msgstr "Wklej animacjÄ™"
+
+#: scene/2d/visibility_notifier_2d.cpp
+#, fuzzy
+msgid "Process Parent"
+msgstr "Włącz priorytety"
+
+#: scene/2d/visibility_notifier_2d.cpp
+msgid "Physics Process Parent"
+msgstr ""
+
#: scene/3d/area.cpp
msgid "Reverb Bus"
msgstr ""
@@ -20377,6 +21716,7 @@ msgid "Attenuation Filter"
msgstr ""
#: scene/3d/audio_stream_player_3d.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
#: servers/audio/effects/audio_effect_filter.cpp
msgid "Cutoff Hz"
msgstr ""
@@ -20421,11 +21761,6 @@ msgid "Octree"
msgstr "Poddrzewo"
#: scene/3d/baked_lightmap.cpp
-#, fuzzy
-msgid "User Data"
-msgstr "Interfejs użytkownika"
-
-#: scene/3d/baked_lightmap.cpp
msgid "Finding meshes and lights"
msgstr "Szukanie siatek i świateł"
@@ -20701,6 +22036,16 @@ msgid "Ring Axis"
msgstr "Ostrzeżenia"
#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Rotate Y"
+msgstr "Obróć"
+
+#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Disable Z"
+msgstr "Wyłączony element"
+
+#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
msgid "Flatness"
msgstr ""
@@ -20741,16 +22086,11 @@ msgstr "Biblioteka dynamiczna"
msgid "Dynamic Range"
msgstr "Biblioteka dynamiczna"
-#: scene/3d/gi_probe.cpp
+#: scene/3d/gi_probe.cpp scene/3d/light.cpp
msgid "Normal Bias"
msgstr ""
#: scene/3d/gi_probe.cpp
-#, fuzzy
-msgid "Compress"
-msgstr "Komponenty"
-
-#: scene/3d/gi_probe.cpp
msgid "Plotting Meshes"
msgstr "Kreślenie siatek"
@@ -20782,16 +22122,31 @@ msgstr ""
#: scene/3d/light.cpp
#, fuzzy
+msgid "Indirect Energy"
+msgstr "Kolory emisji"
+
+#: scene/3d/light.cpp
+#, fuzzy
msgid "Negative"
msgstr "GDNative"
#: scene/3d/light.cpp
#, fuzzy
+msgid "Specular"
+msgstr "Tryb linijki"
+
+#: scene/3d/light.cpp
+#, fuzzy
msgid "Bake Mode"
msgstr "Tryb maski bitowej"
#: scene/3d/light.cpp
#, fuzzy
+msgid "Contact"
+msgstr "Wybierz Kolor"
+
+#: scene/3d/light.cpp
+#, fuzzy
msgid "Reverse Cull Face"
msgstr "Zresetuj głośność magistrali"
@@ -20802,11 +22157,31 @@ msgstr "Kierunki"
#: scene/3d/light.cpp
#, fuzzy
+msgid "Split 1"
+msgstr "Rozdziel"
+
+#: scene/3d/light.cpp
+#, fuzzy
+msgid "Split 2"
+msgstr "Rozdziel"
+
+#: scene/3d/light.cpp
+#, fuzzy
+msgid "Split 3"
+msgstr "Rozdziel"
+
+#: scene/3d/light.cpp
+#, fuzzy
msgid "Blend Splits"
msgstr "Czasy Blendowania:"
#: scene/3d/light.cpp
#, fuzzy
+msgid "Bias Split Scale"
+msgstr "Użyj przyciągania skali"
+
+#: scene/3d/light.cpp
+#, fuzzy
msgid "Depth Range"
msgstr "Głębia"
@@ -20832,6 +22207,11 @@ msgstr "SpotLight z kątem szerszym niż 90 stopni nie może rzucać cieni."
msgid "Spot"
msgstr ""
+#: scene/3d/light.cpp
+#, fuzzy
+msgid "Angle Attenuation"
+msgstr "Animacja"
+
#: scene/3d/mesh_instance.cpp
msgid "Software Skinning"
msgstr ""
@@ -20979,6 +22359,63 @@ msgstr "OÅ›"
#: scene/3d/physics_body.cpp
#, fuzzy
+msgid "Linear X"
+msgstr "Liniowy"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Linear Y"
+msgstr "Liniowy"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Linear Z"
+msgstr "Liniowy"
+
+#: scene/3d/physics_body.cpp
+msgid "Angular X"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Angular Y"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Angular Z"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Motion X"
+msgstr "Akcja"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Motion Y"
+msgstr "Akcja"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Motion Z"
+msgstr "Akcja"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Move Lock X"
+msgstr "Przesuń węzeł"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Move Lock Y"
+msgstr "Przesuń węzeł"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Move Lock Z"
+msgstr "Przesuń węzeł"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
msgid "Body Offset"
msgstr "Przesunięcie:"
@@ -21012,6 +22449,15 @@ msgid "Exclude Nodes"
msgstr "Usuń węzły"
#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Params"
+msgstr "Parametr zmieniony:"
+
+#: scene/3d/physics_joint.cpp
+msgid "Impulse Clamp"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit"
msgstr ""
@@ -21025,6 +22471,55 @@ msgstr "Wielkie litery"
msgid "Lower"
msgstr "Małe litery"
+#: scene/3d/physics_joint.cpp scene/3d/vehicle_body.cpp
+#, fuzzy
+msgid "Relaxation"
+msgstr "Separacja:"
+
+#: scene/3d/physics_joint.cpp
+msgid "Motor"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Target Velocity"
+msgstr "Orbituj widok w prawo"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Max Impulse"
+msgstr "Szybkość:"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit"
+msgstr "Liniowy"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Upper Distance"
+msgstr "Wybierz odległość:"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Lower Distance"
+msgstr "Wybierz odległość:"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Restitution"
+msgstr "Opis"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motion"
+msgstr "Inicjuj"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Ortho"
+msgstr "Tył ortogonalnie"
+
#: scene/3d/physics_joint.cpp
#, fuzzy
msgid "Upper Angle"
@@ -21037,6 +22532,16 @@ msgstr "Małe litery"
#: scene/3d/physics_joint.cpp
#, fuzzy
+msgid "Angular Motion"
+msgstr "Animacja"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Angular Ortho"
+msgstr "Maks. błąd kątowy:"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
msgid "Swing Span"
msgstr "Zapisywanie sceny"
@@ -21045,17 +22550,99 @@ msgid "Twist Span"
msgstr ""
#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit X"
+msgstr "Liniowy"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motor X"
+msgstr "Inicjuj"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Force Limit"
+msgstr "Wywołania rysowania:"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Spring X"
+msgstr "Liniowy"
+
+#: scene/3d/physics_joint.cpp
+msgid "Equilibrium Point"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit X"
msgstr ""
#: scene/3d/physics_joint.cpp
+msgid "Erp"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Motor X"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Spring X"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit Y"
+msgstr "Liniowy"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motor Y"
+msgstr "Inicjuj"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Spring Y"
+msgstr "Liniowy"
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit Y"
msgstr ""
#: scene/3d/physics_joint.cpp
+msgid "Angular Motor Y"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Spring Y"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit Z"
+msgstr "Liniowy"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motor Z"
+msgstr "Inicjuj"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Spring Z"
+msgstr "Liniowy"
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit Z"
msgstr ""
+#: scene/3d/physics_joint.cpp
+msgid "Angular Motor Z"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Spring Z"
+msgstr ""
+
#: scene/3d/portal.cpp
msgid "The RoomManager should not be a child or grandchild of a Portal."
msgstr "RoomManager nie powinien być potomkiem Portalu."
@@ -21177,7 +22764,7 @@ msgstr ""
msgid "Use Default Simplify"
msgstr ""
-#: scene/3d/room.cpp
+#: scene/3d/room.cpp scene/3d/room_manager.cpp
msgid "Room Simplify"
msgstr ""
@@ -21218,6 +22805,13 @@ msgstr "Powinien być tylko jeden RoomManager w drzewie sceny."
msgid "Main"
msgstr ""
+#: scene/3d/room_manager.cpp scene/animation/animation_player.cpp
+#: scene/animation/animation_tree.cpp scene/animation/animation_tree_player.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+#, fuzzy
+msgid "Active"
+msgstr "Akcja"
+
#: scene/3d/room_manager.cpp
msgid "Roomlist"
msgstr ""
@@ -21242,6 +22836,54 @@ msgid "Gameplay"
msgstr ""
#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Gameplay Monitor"
+msgstr "Monitor"
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Use Secondary PVS"
+msgstr "Użyj przyciągania skali"
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Merge Meshes"
+msgstr "Siatka"
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Show Margins"
+msgstr "Pokaż pozycję początkową"
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Debug Sprawl"
+msgstr "Debugowanie"
+
+#: scene/3d/room_manager.cpp
+msgid "Overlap Warning Threshold"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Preview Camera"
+msgstr "PodglÄ…d"
+
+#: scene/3d/room_manager.cpp
+msgid "Portal Depth Limit"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Default Portal Margin"
+msgstr "Ustaw margines"
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Roaming Expansion Margin"
+msgstr "Rozwiń wszystko"
+
+#: scene/3d/room_manager.cpp
msgid ""
"RoomList path is invalid.\n"
"Please check the RoomList branch has been assigned in the RoomManager."
@@ -21383,6 +23025,21 @@ msgstr "PrzyciÄ…gaj do pikseli"
msgid "Billboard"
msgstr ""
+#: scene/3d/sprite_3d.cpp scene/resources/material.cpp
+#, fuzzy
+msgid "Transparent"
+msgstr "Transpozycja"
+
+#: scene/3d/sprite_3d.cpp
+#, fuzzy
+msgid "Shaded"
+msgstr "Shader"
+
+#: scene/3d/sprite_3d.cpp
+#, fuzzy
+msgid "Double Sided"
+msgstr "Podwójne kliknięcie"
+
#: scene/3d/sprite_3d.cpp
msgid "Alpha Cut"
msgstr ""
@@ -21458,11 +23115,6 @@ msgstr "Wyrażenie"
msgid "Max Force"
msgstr "Błąd"
-#: scene/3d/vehicle_body.cpp
-#, fuzzy
-msgid "Relaxation"
-msgstr "Separacja:"
-
#: scene/3d/visibility_notifier.cpp
msgid "AABB"
msgstr ""
@@ -21606,7 +23258,7 @@ msgstr "Czas X-Fade (s):"
#: scene/animation/animation_blend_tree.cpp
#, fuzzy
-msgid "autorestart_"
+msgid "Auto Restart"
msgstr "Automatyczny Restart:"
#: scene/animation/animation_blend_tree.cpp
@@ -21692,13 +23344,6 @@ msgstr "Opcje klasy:"
msgid "Default Blend Time"
msgstr "Domyślny motyw"
-#: scene/animation/animation_player.cpp scene/animation/animation_tree.cpp
-#: scene/animation/animation_tree_player.cpp
-#: servers/audio/effects/audio_effect_delay.cpp
-#, fuzzy
-msgid "Active"
-msgstr "Akcja"
-
#: scene/animation/animation_player.cpp
msgid "Method Call Mode"
msgstr ""
@@ -21824,10 +23469,6 @@ msgstr "Zmień nadrzędny węzeł"
msgid "Max Iterations"
msgstr "Zamień na funkcję"
-#: scene/animation/tween.cpp scene/resources/texture.cpp
-msgid "Repeat"
-msgstr ""
-
#: scene/animation/tween.cpp
msgid "Playback Process Mode"
msgstr ""
@@ -21858,20 +23499,6 @@ msgstr "Tryb zaznaczenia"
msgid "Alignment"
msgstr ""
-#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
-#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
-#: scene/resources/style_box.cpp
-#, fuzzy
-msgid "Horizontal"
-msgstr "Poziomo:"
-
-#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
-#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
-#: scene/resources/style_box.cpp
-#, fuzzy
-msgid "Vertical"
-msgstr "Pionowo:"
-
#: scene/gui/base_button.cpp
#, fuzzy
msgid "Shortcut In Tooltip"
@@ -21973,10 +23600,6 @@ msgid "HSV"
msgstr "HSV"
#: scene/gui/color_picker.cpp
-msgid "Raw"
-msgstr "Raw"
-
-#: scene/gui/color_picker.cpp
msgid "Switch between hexadecimal and code values."
msgstr "Przełącz między szesnastkowymi i kodowymi wartościami."
@@ -22042,6 +23665,31 @@ msgid "Focus"
msgstr "Przejdź do wprowadzania ścieżki"
#: scene/gui/control.cpp
+msgid "Neighbour Left"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Neighbour Top"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Neighbour Right"
+msgstr ""
+
+#: scene/gui/control.cpp
+#, fuzzy
+msgid "Neighbour Bottom"
+msgstr "Wyśrodkowane na dole"
+
+#: scene/gui/control.cpp
+msgid "Next"
+msgstr "Dalej"
+
+#: scene/gui/control.cpp
+msgid "Previous"
+msgstr "Wstecz"
+
+#: scene/gui/control.cpp
msgid "Mouse"
msgstr ""
@@ -22079,7 +23727,7 @@ msgid "Dialog"
msgstr "Okno dialogowe XForm"
#: scene/gui/dialogs.cpp
-msgid "Hide On Ok"
+msgid "Hide On OK"
msgstr ""
#: scene/gui/dialogs.cpp scene/gui/label.cpp
@@ -22178,7 +23826,7 @@ msgid "Timers"
msgstr "Czas"
#: scene/gui/item_list.cpp scene/gui/popup_menu.cpp scene/gui/tree.cpp
-msgid "Incremental Search Max Interval (msec)"
+msgid "Incremental Search Max Interval Msec"
msgstr ""
#: scene/gui/item_list.cpp scene/gui/tree.cpp
@@ -22765,6 +24413,26 @@ msgstr "Wyśrodkowane po lewej"
msgid "Nine Patch Stretch"
msgstr "Sposób interpolacji"
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Left"
+msgstr "Ustaw margines"
+
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Top"
+msgstr "Ustaw margines"
+
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Right"
+msgstr "Ustaw margines"
+
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Bottom"
+msgstr "Tryb zaznaczenia"
+
#: scene/gui/tree.cpp
msgid "Custom Minimum Height"
msgstr ""
@@ -22802,8 +24470,9 @@ msgid "Paused"
msgstr ""
#: scene/gui/video_player.cpp
-msgid "Buffering (msec)"
-msgstr ""
+#, fuzzy
+msgid "Buffering Msec"
+msgstr "Bufory"
#: scene/gui/video_player.cpp
#, fuzzy
@@ -23164,6 +24833,22 @@ msgid "Shadow Atlas"
msgstr "Nowy atlas"
#: scene/main/viewport.cpp
+msgid "Quad 0"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 1"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 2"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 3"
+msgstr ""
+
+#: scene/main/viewport.cpp
#, fuzzy
msgid "Canvas Transform"
msgstr "Wyczyść przekształcenie"
@@ -23178,6 +24863,11 @@ msgid "Tooltip Delay (sec)"
msgstr ""
#: scene/register_scene_types.cpp
+#, fuzzy
+msgid "Swap OK Cancel"
+msgstr "UI Anuluj"
+
+#: scene/register_scene_types.cpp
msgid "Use hiDPI"
msgstr ""
@@ -23192,21 +24882,6 @@ msgid "Custom Font"
msgstr "NiestandardowyWęzeł"
#: scene/resources/audio_stream_sample.cpp
-#, fuzzy
-msgid "Loop Mode"
-msgstr "Tryb przesuwania"
-
-#: scene/resources/audio_stream_sample.cpp
-#, fuzzy
-msgid "Loop Begin"
-msgstr "Tryb przesuwania"
-
-#: scene/resources/audio_stream_sample.cpp
-#, fuzzy
-msgid "Loop End"
-msgstr "Tryb przesuwania"
-
-#: scene/resources/audio_stream_sample.cpp
#: servers/audio/effects/audio_stream_generator.cpp servers/audio_server.cpp
#, fuzzy
msgid "Mix Rate"
@@ -23266,6 +24941,17 @@ msgstr "Opcje dodatkowe:"
#: scene/resources/dynamic_font.cpp
#, fuzzy
+msgid "Char"
+msgstr "Dopuszczalne znaki:"
+
+#: scene/resources/dynamic_font.cpp scene/resources/world.cpp
+#: scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Space"
+msgstr "Scena główna"
+
+#: scene/resources/dynamic_font.cpp
+#, fuzzy
msgid "Font"
msgstr "Fonty"
@@ -23493,6 +25179,45 @@ msgid "Glow"
msgstr ""
#: scene/resources/environment.cpp
+#, fuzzy
+msgid "Levels"
+msgstr "Deweloperzy"
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "1"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+#, fuzzy
+msgid "2"
+msgstr "2D"
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+#, fuzzy
+msgid "3"
+msgstr "3D"
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "4"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "5"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "6"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "7"
+msgstr ""
+
+#: scene/resources/environment.cpp
msgid "Bloom"
msgstr ""
@@ -23585,10 +25310,68 @@ msgid "Next Pass"
msgstr "Następna płaszczyzna"
#: scene/resources/material.cpp
+msgid "Use Shadow To Opacity"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Unshaded"
+msgstr "Widok bezcieniowy"
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Vertex Lighting"
+msgstr "Oświetlenie bezpośrednie"
+
+#: scene/resources/material.cpp
+msgid "No Depth Test"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Use Point Size"
+msgstr "Widok z przodu"
+
+#: scene/resources/material.cpp
+msgid "World Triplanar"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Fixed Size"
+msgstr "Widok z przodu"
+
+#: scene/resources/material.cpp
+msgid "Albedo Tex Force sRGB"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Do Not Receive Shadows"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Disable Ambient Light"
+msgstr "Wcięcie w prawo"
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Ensure Correct Normals"
+msgstr "Transformacja Zaniechana."
+
+#: scene/resources/material.cpp
#, fuzzy
msgid "Vertex Color"
msgstr "Wierzchołki"
+#: scene/resources/material.cpp
+msgid "Use As Albedo"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Is sRGB"
+msgstr ""
+
#: scene/resources/material.cpp servers/visual_server.cpp
#, fuzzy
msgid "Parameters"
@@ -23625,6 +25408,11 @@ msgid "Billboard Mode"
msgstr "Tryb linijki"
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Billboard Keep Scale"
+msgstr "Tryb linijki"
+
+#: scene/resources/material.cpp
msgid "Grow"
msgstr ""
@@ -23634,6 +25422,10 @@ msgid "Grow Amount"
msgstr "Ilośc:"
#: scene/resources/material.cpp
+msgid "Use Alpha Scissor"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Alpha Scissor Threshold"
msgstr ""
@@ -23665,10 +25457,20 @@ msgid "Metallic Specular"
msgstr ""
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Metallic Texture"
+msgstr "Źródła emisji: "
+
+#: scene/resources/material.cpp
msgid "Metallic Texture Channel"
msgstr ""
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Roughness Texture"
+msgstr "Usuń teksturę"
+
+#: scene/resources/material.cpp
msgid "Roughness Texture Channel"
msgstr ""
@@ -23688,6 +25490,16 @@ msgid "Emission Operator"
msgstr "Kolory emisji"
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Emission On UV2"
+msgstr "Maska emisji"
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Emission Texture"
+msgstr "Źródła emisji: "
+
+#: scene/resources/material.cpp
msgid "NormalMap"
msgstr ""
@@ -23702,6 +25514,11 @@ msgstr "Losowe nachylenie:"
#: scene/resources/material.cpp
#, fuzzy
+msgid "Rim Texture"
+msgstr "Usuń teksturę"
+
+#: scene/resources/material.cpp
+#, fuzzy
msgid "Clearcoat"
msgstr "Wyczyść"
@@ -23711,15 +25528,28 @@ msgid "Clearcoat Gloss"
msgstr "Wyczyść pozę"
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Clearcoat Texture"
+msgstr "Motyw edytora"
+
+#: scene/resources/material.cpp
msgid "Anisotropy"
msgstr ""
#: scene/resources/material.cpp
+msgid "Anisotropy Flowmap"
+msgstr ""
+
+#: scene/resources/material.cpp
#, fuzzy
msgid "Ambient Occlusion"
msgstr "Okluzja"
#: scene/resources/material.cpp
+msgid "On UV2"
+msgstr ""
+
+#: scene/resources/material.cpp
#, fuzzy
msgid "Texture Channel"
msgstr "Obszar tekstury"
@@ -23758,6 +25588,11 @@ msgstr "Przejście: "
#: scene/resources/material.cpp
#, fuzzy
+msgid "Transmission Texture"
+msgstr "Przejście: "
+
+#: scene/resources/material.cpp
+#, fuzzy
msgid "Refraction"
msgstr "Separacja:"
@@ -23776,6 +25611,10 @@ msgid "UV1"
msgstr "UV"
#: scene/resources/material.cpp
+msgid "Triplanar"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Triplanar Sharpness"
msgstr ""
@@ -23987,6 +25826,16 @@ msgstr "Motyw edytora"
msgid "Point Count"
msgstr "Dodaj port wejściowy"
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Scale Random"
+msgstr "Współczynnik skali:"
+
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Scale Curve"
+msgstr "Zamknij krzywÄ…"
+
#: scene/resources/physics_material.cpp
msgid "Rough"
msgstr ""
@@ -24049,10 +25898,6 @@ msgid "A"
msgstr ""
#: scene/resources/shader.cpp
-msgid "Code"
-msgstr ""
-
-#: scene/resources/shader.cpp
#, fuzzy
msgid "Custom Defines"
msgstr "Uruchom niestandardowÄ… scenÄ™"
@@ -24149,15 +25994,6 @@ msgstr ""
#: scene/resources/texture.cpp
#, fuzzy
-msgid "Storage"
-msgstr "Zapisywanie pliku:"
-
-#: scene/resources/texture.cpp
-msgid "Lossy Quality"
-msgstr ""
-
-#: scene/resources/texture.cpp
-#, fuzzy
msgid "Load Path"
msgstr "Wczytaj profil"
@@ -24288,11 +26124,6 @@ msgstr "Niewłaściwa funkcja porównania dla tego typu."
msgid "Fallback Environment"
msgstr "Wyświetlaj środowisko"
-#: scene/resources/world.cpp scene/resources/world_2d.cpp
-#, fuzzy
-msgid "Space"
-msgstr "Scena główna"
-
#: scene/resources/world.cpp
#, fuzzy
msgid "Scenario"
@@ -24373,10 +26204,37 @@ msgstr ""
msgid "Wet"
msgstr ""
-#: servers/audio/effects/audio_effect_compressor.cpp
-msgid "Threshold"
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "Voice"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+msgid "Delay (ms)"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_phaser.cpp
+msgid "Rate Hz"
msgstr ""
+#: servers/audio/effects/audio_effect_chorus.cpp
+#, fuzzy
+msgid "Depth (ms)"
+msgstr "Głębia"
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+msgid "Level dB"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+#: servers/audio/effects/audio_effect_panner.cpp
+#, fuzzy
+msgid "Pan"
+msgstr "Płaszczyzna:"
+
#: servers/audio/effects/audio_effect_compressor.cpp
#: servers/audio/effects/audio_effect_filter.cpp
msgid "Gain"
@@ -24400,20 +26258,6 @@ msgid "Tap 1"
msgstr ""
#: servers/audio/effects/audio_effect_delay.cpp
-msgid "Delay (ms)"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_delay.cpp
-msgid "Level dB"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_delay.cpp
-#: servers/audio/effects/audio_effect_panner.cpp
-#, fuzzy
-msgid "Pan"
-msgstr "Płaszczyzna:"
-
-#: servers/audio/effects/audio_effect_delay.cpp
msgid "Tap 2"
msgstr ""
@@ -24475,10 +26319,6 @@ msgstr ""
msgid "Range Max Hz"
msgstr ""
-#: servers/audio/effects/audio_effect_phaser.cpp
-msgid "Rate Hz"
-msgstr ""
-
#: servers/audio/effects/audio_effect_pitch_shift.cpp
msgid "Oversampling"
msgstr ""
@@ -24494,7 +26334,7 @@ msgid "Predelay"
msgstr ""
#: servers/audio/effects/audio_effect_reverb.cpp
-msgid "(msec)"
+msgid "Msec"
msgstr ""
#: servers/audio/effects/audio_effect_reverb.cpp
diff --git a/editor/translations/pr.po b/editor/translations/pr.po
index e37790164a..c5d38b84c2 100644
--- a/editor/translations/pr.po
+++ b/editor/translations/pr.po
@@ -23,7 +23,7 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 4.7-dev\n"
-#: core/bind/core_bind.cpp
+#: core/bind/core_bind.cpp main/main.cpp
msgid "Tablet Driver"
msgstr ""
@@ -120,8 +120,8 @@ msgstr "Discharge ye' Signal"
#: core/bind/core_bind.cpp editor/editor_settings.cpp main/main.cpp
#: modules/gdscript/gdscript_editor.cpp modules/gridmap/grid_map.cpp
#: modules/mono/csharp_script.cpp modules/visual_script/visual_script_nodes.cpp
-#: scene/2d/tile_map.cpp scene/3d/camera.cpp scene/gui/control.cpp
-#: scene/gui/graph_edit.cpp scene/main/viewport.cpp
+#: scene/2d/tile_map.cpp scene/3d/camera.cpp scene/3d/light.cpp
+#: scene/gui/control.cpp scene/gui/graph_edit.cpp scene/main/viewport.cpp
#: scene/resources/dynamic_font.cpp scene/resources/navigation_mesh.cpp
#: scene/resources/primitive_meshes.cpp scene/resources/sky.cpp
#: scene/resources/style_box.cpp scene/resources/texture.cpp
@@ -220,8 +220,7 @@ msgid "Data"
msgstr ""
#: core/io/file_access_network.cpp core/register_core_types.cpp
-#: editor/editor_settings.cpp editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp main/main.cpp
+#: editor/editor_settings.cpp main/main.cpp
#: modules/gdscript/language_server/gdscript_language_server.cpp
#, fuzzy
msgid "Network"
@@ -491,9 +490,10 @@ msgstr ""
msgid "Relative"
msgstr ""
-#: core/os/input_event.cpp scene/2d/camera_2d.cpp
-#: scene/3d/interpolated_camera.cpp scene/animation/animation_player.cpp
-#: scene/resources/environment.cpp
+#: core/os/input_event.cpp scene/2d/camera_2d.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/interpolated_camera.cpp
+#: scene/animation/animation_player.cpp scene/resources/environment.cpp
+#: scene/resources/particles_material.cpp
#, fuzzy
msgid "Speed"
msgstr "Slit th' Node"
@@ -543,8 +543,9 @@ msgstr "Change"
msgid "Pitch"
msgstr "Switch"
-#: core/os/input_event.cpp scene/2d/physics_body_2d.cpp
-#: scene/3d/physics_body.cpp
+#: core/os/input_event.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/physics_body_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/3d/physics_body.cpp scene/resources/particles_material.cpp
msgid "Velocity"
msgstr ""
@@ -561,6 +562,8 @@ msgid "Controller Value"
msgstr ""
#: core/project_settings.cpp editor/editor_node.cpp main/main.cpp
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/windows/export/export.cpp
#, fuzzy
msgid "Application"
msgstr "Add Function"
@@ -577,13 +580,16 @@ msgstr ""
#: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp
#: editor/editor_plugin_settings.cpp editor/editor_profiler.cpp
#: editor/project_manager.cpp editor/settings_config_dialog.cpp
-#: modules/gdnative/nativescript/nativescript.cpp scene/2d/area_2d.cpp
-#: scene/3d/area.cpp scene/main/node.cpp
+#: modules/gdnative/nativescript/nativescript.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/osx/export/export.cpp scene/2d/area_2d.cpp scene/3d/area.cpp
+#: scene/main/node.cpp
msgid "Name"
msgstr ""
#: core/project_settings.cpp editor/editor_help.cpp
-#: modules/visual_script/visual_script_nodes.cpp
+#: modules/visual_script/visual_script_nodes.cpp platform/uwp/export/export.cpp
+#: platform/windows/export/export.cpp
#, fuzzy
msgid "Description"
msgstr "Yar, Blow th' Selected Down!"
@@ -622,7 +628,7 @@ msgid "Custom User Dir Name"
msgstr ""
#: core/project_settings.cpp editor/animation_track_editor.cpp
-#: editor/editor_audio_buses.cpp servers/audio_server.cpp
+#: editor/editor_audio_buses.cpp main/main.cpp servers/audio_server.cpp
msgid "Audio"
msgstr ""
@@ -777,10 +783,13 @@ msgstr "Paste yer Node"
msgid "Sharpen Intensity"
msgstr ""
-#: core/project_settings.cpp editor/editor_node.cpp editor/editor_settings.cpp
-#: editor/plugins/script_editor_plugin.cpp editor/project_export.cpp
-#: main/main.cpp modules/gdscript/gdscript.cpp
-#: modules/visual_script/visual_script.cpp scene/3d/room_manager.cpp
+#: core/project_settings.cpp editor/editor_export.cpp editor/editor_node.cpp
+#: editor/editor_settings.cpp editor/plugins/script_editor_plugin.cpp
+#: editor/project_export.cpp main/main.cpp modules/gdscript/gdscript.cpp
+#: modules/visual_script/visual_script.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp scene/3d/room_manager.cpp
#: scene/main/scene_tree.cpp scene/resources/shape_2d.cpp
#: servers/visual_server.cpp
msgid "Debug"
@@ -1007,6 +1016,7 @@ msgid "Subsurface Scattering"
msgstr ""
#: drivers/gles3/rasterizer_scene_gles3.cpp
+#: editor/import/resource_importer_texture.cpp
#: editor/plugins/spatial_editor_plugin.cpp modules/gltf/gltf_node.cpp
#: modules/gridmap/grid_map.cpp scene/2d/cpu_particles_2d.cpp
#: scene/2d/node_2d.cpp scene/2d/parallax_layer.cpp scene/2d/polygon_2d.cpp
@@ -1321,6 +1331,7 @@ msgid "Editors"
msgstr "Edit"
#: editor/animation_track_editor.cpp editor/editor_settings.cpp
+#: editor/import/resource_importer_scene.cpp
#: editor/plugins/animation_player_editor_plugin.cpp editor/scene_tree_dock.cpp
#: scene/2d/animated_sprite.cpp scene/2d/cpu_particles_2d.cpp
#: scene/2d/sprite.cpp scene/3d/cpu_particles.cpp scene/3d/sprite_3d.cpp
@@ -1542,14 +1553,14 @@ msgstr ""
msgid "Seconds"
msgstr ""
-#: editor/animation_track_editor.cpp
+#: editor/animation_track_editor.cpp editor/import/resource_importer_scene.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp main/main.cpp
#: scene/resources/texture.cpp
msgid "FPS"
msgstr ""
#: editor/animation_track_editor.cpp editor/editor_plugin_settings.cpp
-#: editor/editor_resource_picker.cpp
+#: editor/editor_resource_picker.cpp editor/import/resource_importer_wav.cpp
#: editor/plugins/polygon_2d_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
@@ -2515,7 +2526,9 @@ msgid "Remove Autoload"
msgstr ""
#: editor/editor_autoload_settings.cpp editor/editor_plugin_settings.cpp
-#: modules/gdscript/gdscript.cpp scene/2d/polygon_2d.cpp scene/3d/area.cpp
+#: modules/gdscript/gdscript.cpp platform/android/export/export_plugin.cpp
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#: scene/2d/polygon_2d.cpp scene/3d/area.cpp scene/3d/physics_joint.cpp
#: scene/3d/reflection_probe.cpp scene/main/canvas_layer.cpp
#: scene/resources/material.cpp servers/visual_server.cpp
msgid "Enable"
@@ -2673,6 +2686,59 @@ msgstr ""
#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
#, fuzzy
+msgid "Custom Template"
+msgstr "th' Members:"
+
+#: editor/editor_export.cpp editor/project_export.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Release"
+msgstr "just released"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Binary Format"
+msgstr "Change yer Anim Transform"
+
+#: editor/editor_export.cpp
+msgid "64 Bits"
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Embed PCK"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Texture Format"
+msgstr "Slit th' Node"
+
+#: editor/editor_export.cpp
+msgid "BPTC"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "S3TC"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "ETC"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "ETC2"
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "No BPTC Fallbacks"
+msgstr ""
+
+#: editor/editor_export.cpp platform/android/export/export_plugin.cpp
+#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
+#, fuzzy
msgid "Custom debug template not found."
msgstr "Yer fancy debug package be nowhere."
@@ -2859,6 +2925,7 @@ msgid "Make Current"
msgstr ""
#: editor/editor_feature_profile.cpp editor/editor_node.cpp
+#: editor/import/resource_importer_scene.cpp
#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
msgid "Import"
msgstr ""
@@ -2989,8 +3056,11 @@ msgstr ""
msgid "Display Mode"
msgstr "Slit th' Node"
-#: editor/editor_file_dialog.cpp main/main.cpp modules/csg/csg_shape.cpp
-#: modules/visual_script/visual_script_nodes.cpp
+#: editor/editor_file_dialog.cpp
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+#: editor/import/resource_importer_wav.cpp main/main.cpp
+#: modules/csg/csg_shape.cpp modules/visual_script/visual_script_nodes.cpp
#: modules/visual_script/visual_script_yield_nodes.cpp scene/2d/light_2d.cpp
#: scene/2d/physics_body_2d.cpp scene/2d/tile_map.cpp
#: scene/3d/baked_lightmap.cpp scene/3d/light.cpp scene/3d/physics_body.cpp
@@ -3129,7 +3199,9 @@ msgstr ""
msgid "Reimport Missing Imported Files"
msgstr ""
-#: editor/editor_help.cpp
+#: editor/editor_help.cpp scene/2d/camera_2d.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/resources/dynamic_font.cpp
+#: scene/resources/style_box.cpp
msgid "Top"
msgstr ""
@@ -3182,6 +3254,7 @@ msgid "Fonts"
msgstr ""
#: editor/editor_help.cpp editor/plugins/theme_editor_plugin.cpp
+#: platform/iphone/export/export.cpp
msgid "Icons"
msgstr ""
@@ -3347,7 +3420,9 @@ msgstr ""
msgid "Pin value [Disabled because '%s' is editor-only]"
msgstr ""
-#: editor/editor_inspector.cpp editor/scene_tree_dock.cpp
+#: editor/editor_inspector.cpp
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+#: editor/scene_tree_dock.cpp
#: modules/visual_script/visual_script_func_nodes.cpp
#: modules/visual_script/visual_script_nodes.cpp
#: modules/visual_script/visual_script_property_selector.cpp
@@ -3664,6 +3739,14 @@ msgid "Quick Open Script..."
msgstr ""
#: editor/editor_node.cpp
+msgid "Save & Reload"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Save changes to '%s' before reloading?"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "Save & Close"
msgstr ""
@@ -3775,6 +3858,10 @@ msgid "Open Project Manager?"
msgstr ""
#: editor/editor_node.cpp
+msgid "Save changes to the following scene(s) before reloading?"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "Save & Quit"
msgstr ""
@@ -4021,9 +4108,8 @@ msgid "Update Vital Only"
msgstr "Change"
#: editor/editor_node.cpp
-#, fuzzy
-msgid "Translate Properties"
-msgstr "Paste yer Node"
+msgid "Localize Settings"
+msgstr ""
#: editor/editor_node.cpp
#, fuzzy
@@ -4039,9 +4125,8 @@ msgid "Inspector"
msgstr ""
#: editor/editor_node.cpp
-#, fuzzy
-msgid "Capitalize Properties"
-msgstr "Paste yer Node"
+msgid "Default Property Name Style"
+msgstr ""
#: editor/editor_node.cpp
msgid "Default Float Step"
@@ -4617,7 +4702,9 @@ msgstr ""
msgid "Update"
msgstr ""
-#: editor/editor_plugin_settings.cpp
+#: editor/editor_plugin_settings.cpp platform/android/export/export_plugin.cpp
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp
msgid "Version"
msgstr ""
@@ -5597,7 +5684,7 @@ msgstr ""
msgid "Rect Custom Position"
msgstr "Discharge ye' Signal"
-#: editor/editor_settings.cpp
+#: editor/editor_settings.cpp platform/android/export/export_plugin.cpp
msgid "Screen"
msgstr ""
@@ -5622,6 +5709,19 @@ msgid "Editor SSL Certificates"
msgstr ""
#: editor/editor_settings.cpp
+msgid "HTTP Proxy"
+msgstr ""
+
+#: editor/editor_settings.cpp
+msgid "Host"
+msgstr ""
+
+#: editor/editor_settings.cpp editor/fileserver/editor_file_server.cpp
+#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp
+msgid "Port"
+msgstr ""
+
+#: editor/editor_settings.cpp
msgid "Project Manager"
msgstr ""
@@ -5662,7 +5762,8 @@ msgstr ""
msgid "String Color"
msgstr ""
-#: editor/editor_settings.cpp
+#: editor/editor_settings.cpp platform/javascript/export/export.cpp
+#: platform/uwp/export/export.cpp
#, fuzzy
msgid "Background Color"
msgstr "Yer background color be evil!"
@@ -5835,22 +5936,6 @@ msgid "Starting the download..."
msgstr ""
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "HTTP Proxy"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Host"
-msgstr ""
-
-#: editor/export_template_manager.cpp editor/fileserver/editor_file_server.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp main/main.cpp
-#: modules/mono/mono_gd/gd_mono.cpp
-msgid "Port"
-msgstr ""
-
-#: editor/export_template_manager.cpp
#, fuzzy
msgid "Error requesting URL:"
msgstr "Rename Variable"
@@ -6108,6 +6193,7 @@ msgstr ""
#: editor/fileserver/editor_file_server.cpp
#: editor/plugins/version_control_editor_plugin.cpp
+#: platform/uwp/export/export.cpp platform/windows/export/export.cpp
msgid "Password"
msgstr ""
@@ -6489,6 +6575,113 @@ msgstr ""
msgid "Use Ambient"
msgstr ""
+#: editor/import/resource_importer_bitmask.cpp
+#, fuzzy
+msgid "Create From"
+msgstr "Yar, Blow th' Selected Down!"
+
+#: editor/import/resource_importer_bitmask.cpp
+#: servers/audio/effects/audio_effect_compressor.cpp
+msgid "Threshold"
+msgstr ""
+
+#: editor/import/resource_importer_csv_translation.cpp
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_scene.cpp
+#: editor/import/resource_importer_texture.cpp
+#: editor/import/resource_importer_wav.cpp scene/3d/gi_probe.cpp
+msgid "Compress"
+msgstr ""
+
+#: editor/import/resource_importer_csv_translation.cpp
+msgid "Delimiter"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+msgid "No BPTC If RGB"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/sprite_3d.cpp
+#: scene/resources/material.cpp scene/resources/particles_material.cpp
+#: scene/resources/texture.cpp
+msgid "Flags"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/animation/tween.cpp
+#: scene/resources/texture.cpp
+msgid "Repeat"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/2d/light_2d.cpp
+#: scene/gui/control.cpp scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Filter"
+msgstr "Paste yer Node"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Mipmaps"
+msgstr "Yer signals:"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+msgid "Anisotropic"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+msgid "sRGB"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+msgid "Slices"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
+#: scene/resources/style_box.cpp
+#, fuzzy
+msgid "Horizontal"
+msgstr "Discharge ye' Variable"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
+#: scene/resources/style_box.cpp
+#, fuzzy
+msgid "Vertical"
+msgstr "Discharge ye' Variable"
+
+#: editor/import/resource_importer_obj.cpp
+#, fuzzy
+msgid "Generate Tangents"
+msgstr "Yar, Blow th' Selected Down!"
+
+#: editor/import/resource_importer_obj.cpp
+#, fuzzy
+msgid "Scale Mesh"
+msgstr "Slit th' Node"
+
+#: editor/import/resource_importer_obj.cpp
+msgid "Offset Mesh"
+msgstr ""
+
+#: editor/import/resource_importer_obj.cpp
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Octahedral Compression"
+msgstr "Swap yer Expression"
+
+#: editor/import/resource_importer_obj.cpp
+msgid "Optimize Mesh Flags"
+msgstr ""
+
#: editor/import/resource_importer_scene.cpp
msgid "Import as Single Scene"
msgstr ""
@@ -6529,6 +6722,147 @@ msgstr ""
msgid "Import as Multiple Scenes+Materials"
msgstr ""
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Nodes"
+msgstr "Slit th' Node"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Root Type"
+msgstr "th' Members:"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Root Name"
+msgstr "Discharge ye' Signal"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Root Scale"
+msgstr "Slit th' Node"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Custom Script"
+msgstr "Slit th' Node"
+
+#: editor/import/resource_importer_scene.cpp scene/resources/texture.cpp
+msgid "Storage"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Use Legacy Names"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+#, fuzzy
+msgid "Materials"
+msgstr "Change"
+
+#: editor/import/resource_importer_scene.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Location"
+msgstr "Add Function"
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Keep On Reimport"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+msgid "Meshes"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Ensure Tangents"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Light Baking"
+msgstr "Yer functions:"
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Lightmap Texel Size"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+msgid "Skins"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Use Named Skins"
+msgstr "Yer signals:"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "External Files"
+msgstr "Edit yer Variable:"
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Store In Subdir"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Filter Script"
+msgstr "Paste yer Node"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Keep Custom Tracks"
+msgstr "Change yer Anim Transform"
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Optimizer"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp main/main.cpp
+#: modules/mono/mono_gd/gd_mono.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp scene/2d/camera_2d.cpp scene/2d/light_2d.cpp
+#: scene/2d/navigation_polygon.cpp scene/2d/ray_cast_2d.cpp scene/2d/sprite.cpp
+#: scene/2d/y_sort.cpp scene/3d/audio_stream_player_3d.cpp
+#: scene/3d/baked_lightmap.cpp scene/3d/interpolated_camera.cpp
+#: scene/3d/light.cpp scene/3d/navigation_mesh_instance.cpp
+#: scene/3d/physics_joint.cpp scene/3d/ray_cast.cpp scene/3d/sprite_3d.cpp
+#: scene/gui/graph_edit.cpp scene/gui/rich_text_label.cpp
+#: scene/resources/curve.cpp scene/resources/environment.cpp
+#: scene/resources/material.cpp
+msgid "Enabled"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Max Linear Error"
+msgstr "Error loading yer Calligraphy Pen."
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Max Angular Error"
+msgstr "Error loading yer Calligraphy Pen."
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Max Angle"
+msgstr "Grub:"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Remove Unused Tracks"
+msgstr "Discharge ye' Signal"
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Clips"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/particles_2d.cpp scene/3d/area.cpp scene/3d/cpu_particles.cpp
+#: scene/3d/particles.cpp scene/resources/environment.cpp
+msgid "Amount"
+msgstr ""
+
#: editor/import/resource_importer_scene.cpp
#: editor/plugins/mesh_library_editor_plugin.cpp
msgid "Import Scene"
@@ -6570,12 +6904,144 @@ msgstr ""
msgid "Saving..."
msgstr ""
+#: editor/import/resource_importer_texture.cpp scene/resources/texture.cpp
+msgid "Lossy Quality"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "HDR Mode"
+msgstr "Slit th' Node"
+
+#: editor/import/resource_importer_texture.cpp
+msgid "BPTC LDR"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/mesh_instance_2d.cpp scene/2d/multimesh_instance_2d.cpp
+#: scene/2d/particles_2d.cpp scene/2d/sprite.cpp scene/resources/style_box.cpp
+msgid "Normal Map"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Process"
+msgstr "Swap yer Expression"
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Fix Alpha Border"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Premult Alpha"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Hdr As Srgb"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Invert Color"
+msgstr "Discharge ye' Variable"
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Normal Map Invert Y"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
+#: scene/audio/audio_stream_player.cpp scene/gui/video_player.cpp
+msgid "Stream"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Size Limit"
+msgstr "Slit th' Node"
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Detect 3D"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "SVG"
+msgstr ""
+
#: editor/import/resource_importer_texture.cpp
msgid ""
"Warning, no suitable PC VRAM compression enabled in Project Settings. This "
"texture will not display correctly on PC."
msgstr ""
+#: editor/import/resource_importer_texture_atlas.cpp
+#, fuzzy
+msgid "Atlas File"
+msgstr "Discharge ye' Variable"
+
+#: editor/import/resource_importer_texture_atlas.cpp
+#, fuzzy
+msgid "Import Mode"
+msgstr "Slit th' Node"
+
+#: editor/import/resource_importer_texture_atlas.cpp
+msgid "Crop To Region"
+msgstr ""
+
+#: editor/import/resource_importer_texture_atlas.cpp
+msgid "Trim Alpha Border From Region"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp scene/2d/physics_body_2d.cpp
+msgid "Force"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+msgid "8 Bit"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp main/main.cpp
+#: modules/mono/editor/csharp_project.cpp modules/mono/mono_gd/gd_mono.cpp
+msgid "Mono"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+#, fuzzy
+msgid "Max Rate"
+msgstr "Grub:"
+
+#: editor/import/resource_importer_wav.cpp
+#, fuzzy
+msgid "Max Rate Hz"
+msgstr "Grub:"
+
+#: editor/import/resource_importer_wav.cpp
+msgid "Trim"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+#, fuzzy
+msgid "Normalize"
+msgstr "Discharge ye' Variable"
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+#, fuzzy
+msgid "Loop Mode"
+msgstr "Slit th' Node"
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+#, fuzzy
+msgid "Loop Begin"
+msgstr "Slit th' Node"
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+#, fuzzy
+msgid "Loop End"
+msgstr "Slit th' Node"
+
#: editor/import_defaults_editor.cpp
#, fuzzy
msgid "Select Importer"
@@ -6646,6 +7112,27 @@ msgid "Failed to load resource."
msgstr ""
#: editor/inspector_dock.cpp
+msgid "Property Name Style"
+msgstr ""
+
+#: editor/inspector_dock.cpp scene/gui/color_picker.cpp
+msgid "Raw"
+msgstr ""
+
+#: editor/inspector_dock.cpp
+#, fuzzy
+msgid "Capitalized"
+msgstr "Paste yer Node"
+
+#: editor/inspector_dock.cpp
+msgid "Localized"
+msgstr ""
+
+#: editor/inspector_dock.cpp
+msgid "Localization not available for current language."
+msgstr ""
+
+#: editor/inspector_dock.cpp
#, fuzzy
msgid "Copy Properties"
msgstr "Paste yer Node"
@@ -7713,18 +8200,24 @@ msgid "License (Z-A)"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
+msgctxt "Pagination"
msgid "First"
msgstr ""
-#: editor/plugins/asset_library_editor_plugin.cpp scene/gui/control.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgctxt "Pagination"
msgid "Previous"
-msgstr ""
+msgstr "Slit th' Node"
-#: editor/plugins/asset_library_editor_plugin.cpp scene/gui/control.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgctxt "Pagination"
msgid "Next"
-msgstr ""
+msgstr "Forge yer Node!"
#: editor/plugins/asset_library_editor_plugin.cpp
+msgctxt "Pagination"
msgid "Last"
msgstr ""
@@ -7968,19 +8461,19 @@ msgid ""
"margins."
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Top Left"
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Top Right"
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Bottom Right"
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Bottom Left"
msgstr ""
@@ -8702,6 +9195,19 @@ msgstr ""
msgid "Gradient Edited"
msgstr ""
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+msgid "Swap GradientTexture2D Fill Points"
+msgstr ""
+
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+msgid "Swap Gradient Fill Points"
+msgstr ""
+
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+#, fuzzy
+msgid "Toggle Grid Snap"
+msgstr "Toggle ye Breakpoint"
+
#: editor/plugins/item_list_editor_plugin.cpp
msgid "Item %d"
msgstr ""
@@ -8918,8 +9424,8 @@ msgid ""
"%s"
msgstr ""
-#: editor/plugins/mesh_library_editor_plugin.cpp modules/gridmap/grid_map.cpp
-msgid "Mesh Library"
+#: editor/plugins/mesh_library_editor_plugin.cpp
+msgid "MeshLibrary"
msgstr ""
#: editor/plugins/mesh_library_editor_plugin.cpp
@@ -9926,8 +10432,8 @@ msgstr "Slit th' Node"
msgid "Source"
msgstr ""
-#: editor/plugins/script_text_editor.cpp scene/3d/interpolated_camera.cpp
-#: scene/animation/skeleton_ik.cpp
+#: editor/plugins/script_text_editor.cpp platform/uwp/export/export.cpp
+#: scene/3d/interpolated_camera.cpp scene/animation/skeleton_ik.cpp
msgid "Target"
msgstr ""
@@ -10919,7 +11425,9 @@ msgstr ""
#: editor/plugins/sprite_frames_editor_plugin.cpp
#: modules/gltf/gltf_animation.cpp modules/minimp3/audio_stream_mp3.cpp
-#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp scene/2d/path_2d.cpp
+#: modules/minimp3/resource_importer_mp3.cpp
+#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp
+#: modules/stb_vorbis/resource_importer_ogg_vorbis.cpp scene/2d/path_2d.cpp
#: scene/3d/path.cpp scene/resources/animation.cpp scene/resources/material.cpp
msgid "Loop"
msgstr ""
@@ -11839,8 +12347,9 @@ msgstr ""
msgid "Priority"
msgstr "Edit yer Variable:"
-#: editor/plugins/tile_set_editor_plugin.cpp main/main.cpp scene/gui/button.cpp
-#: scene/gui/item_list.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp main/main.cpp
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#: scene/gui/button.cpp scene/gui/item_list.cpp
msgid "Icon"
msgstr ""
@@ -13187,11 +13696,6 @@ msgid ""
msgstr ""
#: editor/project_export.cpp
-#, fuzzy
-msgid "Release"
-msgstr "just released"
-
-#: editor/project_export.cpp
msgid "Exporting All"
msgstr ""
@@ -15008,6 +15512,7 @@ msgid "Change AudioStreamPlayer3D Emission Angle"
msgstr ""
#: editor/spatial_editor_gizmos.cpp modules/gltf/gltf_node.cpp
+#: platform/osx/export/export.cpp
msgid "Camera"
msgstr ""
@@ -15283,7 +15788,8 @@ msgstr ""
msgid "Use Nvidia Rect Flicker Workaround"
msgstr ""
-#: main/main.cpp platform/uwp/os_uwp.cpp
+#: main/main.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp platform/uwp/os_uwp.cpp
msgid "Display"
msgstr ""
@@ -15339,18 +15845,6 @@ msgstr ""
msgid "Allowed"
msgstr ""
-#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp scene/2d/camera_2d.cpp
-#: scene/2d/light_2d.cpp scene/2d/navigation_polygon.cpp
-#: scene/2d/ray_cast_2d.cpp scene/2d/sprite.cpp scene/2d/y_sort.cpp
-#: scene/3d/audio_stream_player_3d.cpp scene/3d/baked_lightmap.cpp
-#: scene/3d/interpolated_camera.cpp scene/3d/light.cpp
-#: scene/3d/navigation_mesh_instance.cpp scene/3d/ray_cast.cpp
-#: scene/3d/sprite_3d.cpp scene/gui/graph_edit.cpp
-#: scene/gui/rich_text_label.cpp scene/resources/curve.cpp
-#: scene/resources/environment.cpp
-msgid "Enabled"
-msgstr ""
-
#: main/main.cpp
msgid "Intended Usage"
msgstr ""
@@ -15380,13 +15874,14 @@ msgstr ""
msgid "Handheld"
msgstr ""
-#: main/main.cpp
+#: main/main.cpp platform/javascript/export/export.cpp
+#: platform/uwp/export/export.cpp
#, fuzzy
msgid "Orientation"
msgstr "Yer functions:"
#: main/main.cpp scene/gui/scroll_container.cpp scene/gui/text_edit.cpp
-#: scene/main/scene_tree.cpp
+#: scene/main/scene_tree.cpp scene/register_scene_types.cpp
msgid "Common"
msgstr ""
@@ -15426,7 +15921,7 @@ msgstr ""
#: main/main.cpp
#, fuzzy
-msgid "Frame Delay (msec)"
+msgid "Frame Delay Msec"
msgstr "Slit th' Node"
#: main/main.cpp
@@ -15548,11 +16043,6 @@ msgstr ""
msgid "Tooltip Position Offset"
msgstr ""
-#: main/main.cpp modules/mono/editor/csharp_project.cpp
-#: modules/mono/mono_gd/gd_mono.cpp
-msgid "Mono"
-msgstr ""
-
#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp
msgid "Debugger Agent"
msgstr ""
@@ -16103,7 +16593,7 @@ msgstr ""
msgid "Intensity"
msgstr ""
-#: modules/gltf/gltf_light.cpp scene/2d/light_2d.cpp
+#: modules/gltf/gltf_light.cpp scene/2d/light_2d.cpp scene/3d/light.cpp
#, fuzzy
msgid "Range"
msgstr "Change"
@@ -16240,11 +16730,6 @@ msgstr ""
msgid "Use Named Skin Binds"
msgstr ""
-#: modules/gltf/gltf_state.cpp scene/3d/physics_joint.cpp
-#, fuzzy
-msgid "Nodes"
-msgstr "Slit th' Node"
-
#: modules/gltf/gltf_state.cpp
msgid "Buffer Views"
msgstr ""
@@ -16254,15 +16739,6 @@ msgid "Accessors"
msgstr ""
#: modules/gltf/gltf_state.cpp
-msgid "Meshes"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp
-#, fuzzy
-msgid "Materials"
-msgstr "Change"
-
-#: modules/gltf/gltf_state.cpp
#, fuzzy
msgid "Scene Name"
msgstr "Yar, Blow th' Selected Down!"
@@ -16279,15 +16755,11 @@ msgstr "Slit th' Node"
msgid "Textures"
msgstr "Discharge ye' Variable"
-#: modules/gltf/gltf_state.cpp
+#: modules/gltf/gltf_state.cpp platform/uwp/export/export.cpp
msgid "Images"
msgstr ""
#: modules/gltf/gltf_state.cpp
-msgid "Skins"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp
msgid "Cameras"
msgstr ""
@@ -16320,10 +16792,14 @@ msgid "Src Image"
msgstr ""
#: modules/gridmap/grid_map.cpp
-msgid "Physics Material"
+msgid "Mesh Library"
msgstr ""
#: modules/gridmap/grid_map.cpp
+msgid "Physics Material"
+msgstr ""
+
+#: modules/gridmap/grid_map.cpp scene/3d/visual_instance.cpp
msgid "Use In Baked Light"
msgstr ""
@@ -16354,6 +16830,7 @@ msgstr "Slit th' Node"
#: modules/gridmap/grid_map.cpp scene/2d/collision_object_2d.cpp
#: scene/2d/tile_map.cpp scene/3d/collision_object.cpp scene/3d/soft_body.cpp
+#: scene/resources/material.cpp
msgid "Mask"
msgstr ""
@@ -16544,7 +17021,9 @@ msgid "Ultra Quality Ray Count"
msgstr ""
#: modules/minimp3/audio_stream_mp3.cpp
+#: modules/minimp3/resource_importer_mp3.cpp
#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp
+#: modules/stb_vorbis/resource_importer_ogg_vorbis.cpp
#, fuzzy
msgid "Loop Offset"
msgstr "Slit th' Node"
@@ -17651,6 +18130,182 @@ msgid "The package must have at least one '.' separator."
msgstr ""
#: platform/android/export/export_plugin.cpp
+msgid "Use Custom Build"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Export Format"
+msgstr "Change yer Anim Transform"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Keystore"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Debug User"
+msgstr "Debuggin'"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+msgid "Debug Password"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Release User"
+msgstr "just released"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Release Password"
+msgstr "just released"
+
+#: platform/android/export/export_plugin.cpp
+msgid "One Click Deploy"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Clear Previous Install"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp scene/resources/shader.cpp
+msgid "Code"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Min SDK"
+msgstr "Edit"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Target SDK"
+msgstr "Slit th' Node"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Package"
+msgstr "Discharge ye' Variable"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Unique Name"
+msgstr "Discharge ye' Signal"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Signed"
+msgstr "Yer signals:"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Classify As Game"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Retain Data On Uninstall"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Exclude From Recents"
+msgstr "Slit th' Node"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Graphics"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "OpenGL Debug"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "XR Features"
+msgstr "Discharge ye' Variable"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "XR Mode"
+msgstr "Slit th' Node"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Hand Tracking"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Hand Tracking Frequency"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Passthrough"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Immersive Mode"
+msgstr "Slit th' Node"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Support Small"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Support Normal"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Support Large"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Support Xlarge"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "User Data Backup"
+msgstr "Slit th' Node"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Allow"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Command Line"
+msgstr "Change"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Extra Args"
+msgstr "Yar, Blow th' Selected Down!"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "APK Expansion"
+msgstr "Swap yer Expression"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Salt"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Public Key"
+msgstr "Rename Variable"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Permissions"
+msgstr "Swap yer Expression"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Custom Permissions"
+msgstr "Discharge ye' Signal"
+
+#: platform/android/export/export_plugin.cpp
msgid "Select device from the list"
msgstr ""
@@ -17940,6 +18595,173 @@ msgid "The character '%s' is not allowed in Identifier."
msgstr "Yer name's got no valid identifier:"
#: platform/iphone/export/export.cpp
+msgid "App Store Team ID"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Provisioning Profile UUID Debug"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Code Sign Identity Debug"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Export Method Debug"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Provisioning Profile UUID Release"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Code Sign Identity Release"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Export Method Release"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Targeted Device Family"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Info"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Identifier"
+msgstr "Yer name's got no valid identifier:"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Signature"
+msgstr "Yer signals:"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Short Version"
+msgstr "Swap yer Expression"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/windows/export/export.cpp
+msgid "Copyright"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Capabilities"
+msgstr "Paste yer Node"
+
+#: platform/iphone/export/export.cpp
+msgid "Access Wi-Fi"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Push Notifications"
+msgstr "Slit th' Node"
+
+#: platform/iphone/export/export.cpp scene/3d/baked_lightmap.cpp
+#, fuzzy
+msgid "User Data"
+msgstr "Slit th' Node"
+
+#: platform/iphone/export/export.cpp
+msgid "Accessible From Files App"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Accessible From Itunes Sharing"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Privacy"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Camera Usage Description"
+msgstr "Yar, Blow th' Selected Down!"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Microphone Usage Description"
+msgstr "Yar, Blow th' Selected Down!"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Photolibrary Usage Description"
+msgstr "Yar, Blow th' Selected Down!"
+
+#: platform/iphone/export/export.cpp
+msgid "iPhone 120 X 120"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPhone 180 X 180"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 76 X 76"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 152 X 152"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 167 X 167"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "App Store 1024 X 1024"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Spotlight 40 X 40"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Spotlight 80 X 80"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Storyboard"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Use Launch Screen Storyboard"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Image Scale Mode"
+msgstr "Slit th' Node"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Custom Image @2x"
+msgstr "Slit th' Node"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Custom Image @3x"
+msgstr "Slit th' Node"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Use Custom BG Color"
+msgstr "Slit th' Node"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Custom BG Color"
+msgstr "Slit th' Node"
+
+#: platform/iphone/export/export.cpp
msgid "App Store Team ID not specified - cannot configure the project."
msgstr ""
@@ -17979,6 +18801,80 @@ msgid "Could not read file:"
msgstr "Slit th' Node"
#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Variant"
+msgstr "Yer functions:"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Export Type"
+msgstr "Edit"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "VRAM Texture Compression"
+msgstr "Swap yer Expression"
+
+#: platform/javascript/export/export.cpp
+msgid "For Desktop"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "For Mobile"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Html"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Export Icon"
+msgstr "Edit"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Custom Html Shell"
+msgstr "Slit th' Node"
+
+#: platform/javascript/export/export.cpp
+msgid "Head Include"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Canvas Resize Policy"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Focus Canvas On Start"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Experimental Virtual Keyboard"
+msgstr "Paste yer Node"
+
+#: platform/javascript/export/export.cpp
+msgid "Progressive Web App"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Offline Page"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 144 X 144"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 180 X 180"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 512 X 512"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
msgid "Could not read HTML shell:"
msgstr ""
@@ -18088,6 +18984,193 @@ msgid "Unknown object type."
msgstr ""
#: platform/osx/export/export.cpp
+msgid "App Category"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "High Res"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Location Usage Description"
+msgstr "Yar, Blow th' Selected Down!"
+
+#: platform/osx/export/export.cpp
+msgid "Address Book Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Calendar Usage Description"
+msgstr "Yar, Blow th' Selected Down!"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Photos Library Usage Description"
+msgstr "Yar, Blow th' Selected Down!"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Desktop Folder Usage Description"
+msgstr "Yar, Blow th' Selected Down!"
+
+#: platform/osx/export/export.cpp
+msgid "Documents Folder Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Downloads Folder Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Network Volumes Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Removable Volumes Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#, fuzzy
+msgid "Codesign"
+msgstr "Slit th' Node"
+
+#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
+#: platform/windows/export/export.cpp
+msgid "Identity"
+msgstr ""
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#, fuzzy
+msgid "Timestamp"
+msgstr "Sundial:"
+
+#: platform/osx/export/export.cpp
+msgid "Hardened Runtime"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Replace Existing Signature"
+msgstr "Find ye Node Type"
+
+#: platform/osx/export/export.cpp
+msgid "Entitlements"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Custom File"
+msgstr "Slit th' Node"
+
+#: platform/osx/export/export.cpp
+msgid "Allow JIT Code Execution"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Allow Unsigned Executable Memory"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Allow Dyld Environment Variables"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Disable Library Validation"
+msgstr "Cursed"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Audio Input"
+msgstr "Rename Function"
+
+#: platform/osx/export/export.cpp
+msgid "Address Book"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Calendars"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Photos Library"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Apple Events"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Debugging"
+msgstr "Debuggin'"
+
+#: platform/osx/export/export.cpp
+msgid "App Sandbox"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Network Server"
+msgstr "Slit th' Node"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Network Client"
+msgstr "Slit th' Node"
+
+#: platform/osx/export/export.cpp
+msgid "Device Usb"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Device Bluetooth"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Files Downloads"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Files Pictures"
+msgstr "Paste yer Node"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Files Music"
+msgstr "Edit yer Variable:"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Files Movies"
+msgstr "Paste yer Node"
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#, fuzzy
+msgid "Custom Options"
+msgstr "Yar, Blow th' Selected Down!"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Notarization"
+msgstr "Ye be fixin' Signal:"
+
+#: platform/osx/export/export.cpp
+msgid "Apple ID Name"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Apple ID Password"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Apple Team ID"
+msgstr ""
+
+#: platform/osx/export/export.cpp
msgid ""
"Note: The notarization process generally takes less than an hour. When the "
"process is completed, you'll receive an email."
@@ -18278,6 +19361,133 @@ msgid "Force Builtin Codesign"
msgstr ""
#: platform/uwp/export/export.cpp
+msgid "Architecture"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Display Name"
+msgstr "Slit th' Node"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Short Name"
+msgstr "th' Base Type:"
+
+#: platform/uwp/export/export.cpp
+msgid "Publisher"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Publisher Display Name"
+msgstr "Yer unique name be evil."
+
+#: platform/uwp/export/export.cpp
+msgid "Product Guid"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Publisher Guid"
+msgstr "Change yer Anim Transform"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Signing"
+msgstr "Yer signals:"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Certificate"
+msgstr "Discharge ye' Variable"
+
+#: platform/uwp/export/export.cpp
+msgid "Algorithm"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Major"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Minor"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Build"
+msgstr "Slit th' Node"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Revision"
+msgstr "Swap yer Expression"
+
+#: platform/uwp/export/export.cpp
+msgid "Landscape"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Portrait"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Landscape Flipped"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Portrait Flipped"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Store Logo"
+msgstr "Slit th' Node"
+
+#: platform/uwp/export/export.cpp
+msgid "Square 44 X 44 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 71 X 71 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 150 X 150 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 310 X 310 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Wide 310 X 150 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Splash Screen"
+msgstr "Call"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Tiles"
+msgstr "Edit yer Variable:"
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Square 150 X 150"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Wide 310 X 150"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Square 310 X 310"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
#, fuzzy
msgid "Invalid package short name."
msgstr "Yer unique name be evil."
@@ -18346,11 +19556,48 @@ msgid "Debug Certificate"
msgstr ""
#: platform/uwp/export/export.cpp
-msgid "Debug Password"
+msgid "Debug Algorithm"
msgstr ""
-#: platform/uwp/export/export.cpp
-msgid "Debug Algorithm"
+#: platform/windows/export/export.cpp
+msgid "Identity Type"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Timestamp Server URL"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Digest Algorithm"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "File Version"
+msgstr "Swap yer Expression"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Product Version"
+msgstr "Yer product GUID be evil."
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Company Name"
+msgstr "Discharge ye' Signal"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Product Name"
+msgstr "Yar, Blow th' Selected Down!"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "File Description"
+msgstr "Yar, Blow th' Selected Down!"
+
+#: platform/windows/export/export.cpp
+msgid "Trademarks"
msgstr ""
#: platform/windows/export/export.cpp
@@ -18424,12 +19671,14 @@ msgstr ""
msgid "Centered"
msgstr "Slit th' Node"
-#: scene/2d/animated_sprite.cpp scene/2d/camera_2d.cpp scene/2d/light_2d.cpp
+#: scene/2d/animated_sprite.cpp scene/2d/camera_2d.cpp
+#: scene/2d/cpu_particles_2d.cpp scene/2d/light_2d.cpp
#: scene/2d/parallax_background.cpp scene/2d/parallax_layer.cpp
#: scene/2d/path_2d.cpp scene/2d/polygon_2d.cpp scene/2d/sprite.cpp
-#: scene/3d/path.cpp scene/3d/physics_body.cpp scene/3d/sprite_3d.cpp
-#: scene/gui/graph_node.cpp scene/gui/rich_text_effect.cpp
-#: scene/main/canvas_layer.cpp scene/resources/material.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/path.cpp scene/3d/physics_body.cpp
+#: scene/3d/sprite_3d.cpp scene/gui/graph_node.cpp
+#: scene/gui/rich_text_effect.cpp scene/main/canvas_layer.cpp
+#: scene/resources/material.cpp scene/resources/particles_material.cpp
#: scene/resources/style_box.cpp
msgid "Offset"
msgstr ""
@@ -18495,11 +19744,6 @@ msgstr "Rename Function"
msgid "Override"
msgstr ""
-#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
-#: scene/audio/audio_stream_player.cpp scene/gui/video_player.cpp
-msgid "Stream"
-msgstr ""
-
#: scene/2d/audio_stream_player_2d.cpp scene/audio/audio_stream_player.cpp
#: scene/gui/video_player.cpp servers/audio/effects/audio_effect_amplify.cpp
msgid "Volume dB"
@@ -18524,12 +19768,12 @@ msgid "Stream Paused"
msgstr ""
#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
-#: scene/3d/reflection_probe.cpp scene/3d/visual_instance.cpp
-#: scene/resources/material.cpp
+#: scene/3d/light.cpp scene/3d/reflection_probe.cpp
+#: scene/3d/visual_instance.cpp scene/resources/material.cpp
msgid "Max Distance"
msgstr ""
-#: scene/2d/audio_stream_player_2d.cpp
+#: scene/2d/audio_stream_player_2d.cpp scene/3d/light.cpp
#, fuzzy
msgid "Attenuation"
msgstr "Yer functions:"
@@ -18582,6 +19826,23 @@ msgstr "Slit th' Node"
msgid "Limit"
msgstr ""
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/style_box.cpp
+#, fuzzy
+msgid "Left"
+msgstr "Yar, Blow th' Selected Down!"
+
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/style_box.cpp
+msgid "Right"
+msgstr ""
+
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/dynamic_font.cpp scene/resources/style_box.cpp
+#, fuzzy
+msgid "Bottom"
+msgstr "Discharge ye' Variable"
+
#: scene/2d/camera_2d.cpp
msgid "Smoothed"
msgstr ""
@@ -18788,12 +20049,6 @@ msgstr ""
msgid "Emitting"
msgstr "Discharge ye' Signal"
-#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp scene/3d/area.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
-#: scene/resources/environment.cpp
-msgid "Amount"
-msgstr ""
-
#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp
#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
msgid "Lifetime"
@@ -18855,18 +20110,13 @@ msgstr ""
#: scene/2d/mesh_instance_2d.cpp scene/2d/multimesh_instance_2d.cpp
#: scene/2d/particles_2d.cpp scene/2d/polygon_2d.cpp scene/2d/sprite.cpp
#: scene/3d/sprite_3d.cpp scene/gui/nine_patch_rect.cpp
-#: scene/gui/texture_rect.cpp scene/resources/sky.cpp
-#: scene/resources/style_box.cpp scene/resources/visual_shader_nodes.cpp
+#: scene/gui/texture_rect.cpp scene/resources/material.cpp
+#: scene/resources/sky.cpp scene/resources/style_box.cpp
+#: scene/resources/visual_shader_nodes.cpp
#, fuzzy
msgid "Texture"
msgstr "Discharge ye' Variable"
-#: scene/2d/cpu_particles_2d.cpp scene/2d/mesh_instance_2d.cpp
-#: scene/2d/multimesh_instance_2d.cpp scene/2d/particles_2d.cpp
-#: scene/2d/sprite.cpp scene/resources/style_box.cpp
-msgid "Normal Map"
-msgstr ""
-
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
msgid "Emission Shape"
@@ -18886,9 +20136,8 @@ msgid "Normals"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/3d/sprite_3d.cpp scene/resources/material.cpp
-#: scene/resources/particles_material.cpp scene/resources/texture.cpp
-msgid "Flags"
+#: scene/resources/particles_material.cpp
+msgid "Align Y"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
@@ -18909,6 +20158,11 @@ msgid "Initial Velocity"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Velocity Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp servers/physics_2d_server.cpp
#: servers/physics_server.cpp
msgid "Angular Velocity"
@@ -18916,6 +20170,12 @@ msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Velocity Curve"
+msgstr "Slit th' Node"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
msgid "Orbit Velocity"
msgstr ""
@@ -18926,6 +20186,22 @@ msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+msgid "Accel"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Accel Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Accel Curve"
+msgstr "Slit th' Node"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
msgid "Radial Accel"
msgstr ""
@@ -18935,19 +20211,54 @@ msgid "Tangential Accel"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/2d/joints_2d.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/vehicle_body.cpp
-#: scene/resources/particles_material.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/physics_joint.cpp
+#: scene/3d/vehicle_body.cpp scene/resources/particles_material.cpp
#: servers/audio/effects/audio_effect_reverb.cpp
msgid "Damping"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+msgid "Damping Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Damping Curve"
+msgstr "Slit th' Node"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp scene/3d/light.cpp
+#: scene/resources/particles_material.cpp
msgid "Angle"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+msgid "Angle Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Angle Curve"
+msgstr "Slit th' Node"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#, fuzzy
+msgid "Scale Amount"
+msgstr "Add Signal"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+msgid "Scale Amount Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+msgid "Scale Amount Curve"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
msgid "Color Ramp"
msgstr ""
@@ -18962,6 +20273,47 @@ msgstr ""
msgid "Hue Variation"
msgstr "Yer functions:"
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Variation"
+msgstr "Yer functions:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Variation Random"
+msgstr "Yer functions:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Variation Curve"
+msgstr "Yer functions:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Speed Random"
+msgstr "Slit th' Node"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Speed Curve"
+msgstr "Slit th' Node"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Offset Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Offset Curve"
+msgstr "Slit th' Node"
+
#: scene/2d/joints_2d.cpp
msgid "Node A and Node B must be PhysicsBody2Ds"
msgstr ""
@@ -18993,6 +20345,7 @@ msgid "Node B"
msgstr "Slit th' Node"
#: scene/2d/joints_2d.cpp scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp
+#: scene/3d/light.cpp scene/3d/physics_joint.cpp
#: scene/resources/environment.cpp
msgid "Bias"
msgstr ""
@@ -19002,7 +20355,7 @@ msgstr ""
msgid "Disable Collision"
msgstr "Cursed"
-#: scene/2d/joints_2d.cpp
+#: scene/2d/joints_2d.cpp scene/3d/physics_joint.cpp
msgid "Softness"
msgstr ""
@@ -19019,7 +20372,7 @@ msgstr ""
msgid "Rest Length"
msgstr ""
-#: scene/2d/joints_2d.cpp scene/3d/vehicle_body.cpp
+#: scene/2d/joints_2d.cpp scene/3d/physics_joint.cpp scene/3d/vehicle_body.cpp
msgid "Stiffness"
msgstr ""
@@ -19039,7 +20392,7 @@ msgid "Texture Scale"
msgstr ""
#: scene/2d/light_2d.cpp scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp
-#: scene/resources/environment.cpp scene/resources/sky.cpp
+#: scene/3d/light.cpp scene/resources/environment.cpp scene/resources/sky.cpp
msgid "Energy"
msgstr ""
@@ -19076,12 +20429,6 @@ msgstr ""
msgid "Gradient Length"
msgstr "th' Base Type:"
-#: scene/2d/light_2d.cpp scene/gui/control.cpp
-#: scene/resources/navigation_mesh.cpp
-#, fuzzy
-msgid "Filter"
-msgstr "Paste yer Node"
-
#: scene/2d/light_2d.cpp
#, fuzzy
msgid "Filter Smooth"
@@ -19470,10 +20817,6 @@ msgid "Applied Forces"
msgstr ""
#: scene/2d/physics_body_2d.cpp
-msgid "Force"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp
msgid "Torque"
msgstr ""
@@ -19486,7 +20829,7 @@ msgid "Sync To Physics"
msgstr ""
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-msgid "Moving platform"
+msgid "Moving Platform"
msgstr ""
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
@@ -19495,7 +20838,7 @@ msgstr ""
#: scene/2d/physics_body_2d.cpp scene/2d/touch_screen_button.cpp
#: scene/3d/physics_body.cpp scene/gui/texture_button.cpp
-#: scene/resources/line_shape_2d.cpp
+#: scene/resources/line_shape_2d.cpp scene/resources/material.cpp
msgid "Normal"
msgstr ""
@@ -19717,6 +21060,33 @@ msgid ""
"as parent."
msgstr ""
+#: scene/2d/visibility_notifier_2d.cpp scene/3d/visibility_notifier.cpp
+#, fuzzy
+msgid "Pause Animations"
+msgstr "Yer functions:"
+
+#: scene/2d/visibility_notifier_2d.cpp scene/3d/visibility_notifier.cpp
+msgid "Freeze Bodies"
+msgstr ""
+
+#: scene/2d/visibility_notifier_2d.cpp
+msgid "Pause Particles"
+msgstr ""
+
+#: scene/2d/visibility_notifier_2d.cpp
+#, fuzzy
+msgid "Pause Animated Sprites"
+msgstr "Change yer Anim Transition"
+
+#: scene/2d/visibility_notifier_2d.cpp
+#, fuzzy
+msgid "Process Parent"
+msgstr "Edit yer Variable:"
+
+#: scene/2d/visibility_notifier_2d.cpp
+msgid "Physics Process Parent"
+msgstr ""
+
#: scene/3d/area.cpp
msgid "Reverb Bus"
msgstr ""
@@ -19811,6 +21181,7 @@ msgid "Attenuation Filter"
msgstr ""
#: scene/3d/audio_stream_player_3d.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
#: servers/audio/effects/audio_effect_filter.cpp
msgid "Cutoff Hz"
msgstr ""
@@ -19853,11 +21224,6 @@ msgid "Octree"
msgstr ""
#: scene/3d/baked_lightmap.cpp
-#, fuzzy
-msgid "User Data"
-msgstr "Slit th' Node"
-
-#: scene/3d/baked_lightmap.cpp
msgid "Finding meshes and lights"
msgstr ""
@@ -20098,6 +21464,16 @@ msgid "Ring Axis"
msgstr ""
#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Rotate Y"
+msgstr "Slit th' Node"
+
+#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Disable Z"
+msgstr "Cursed"
+
+#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
msgid "Flatness"
msgstr ""
@@ -20135,15 +21511,11 @@ msgstr ""
msgid "Dynamic Range"
msgstr ""
-#: scene/3d/gi_probe.cpp
+#: scene/3d/gi_probe.cpp scene/3d/light.cpp
msgid "Normal Bias"
msgstr ""
#: scene/3d/gi_probe.cpp
-msgid "Compress"
-msgstr ""
-
-#: scene/3d/gi_probe.cpp
msgid "Plotting Meshes"
msgstr ""
@@ -20169,15 +21541,28 @@ msgid "Subdiv"
msgstr ""
#: scene/3d/light.cpp
+msgid "Indirect Energy"
+msgstr ""
+
+#: scene/3d/light.cpp
msgid "Negative"
msgstr ""
#: scene/3d/light.cpp
#, fuzzy
+msgid "Specular"
+msgstr "Slit th' Node"
+
+#: scene/3d/light.cpp
+#, fuzzy
msgid "Bake Mode"
msgstr "Slit th' Node"
#: scene/3d/light.cpp
+msgid "Contact"
+msgstr ""
+
+#: scene/3d/light.cpp
#, fuzzy
msgid "Reverse Cull Face"
msgstr "Discharge ye' Signal"
@@ -20188,11 +21573,28 @@ msgid "Directional Shadow"
msgstr "Yer functions:"
#: scene/3d/light.cpp
+msgid "Split 1"
+msgstr ""
+
+#: scene/3d/light.cpp
+msgid "Split 2"
+msgstr ""
+
+#: scene/3d/light.cpp
+msgid "Split 3"
+msgstr ""
+
+#: scene/3d/light.cpp
msgid "Blend Splits"
msgstr ""
#: scene/3d/light.cpp
#, fuzzy
+msgid "Bias Split Scale"
+msgstr "Discharge ye' Variable"
+
+#: scene/3d/light.cpp
+#, fuzzy
msgid "Depth Range"
msgstr "Slit th' Node"
@@ -20218,6 +21620,11 @@ msgstr ""
msgid "Spot"
msgstr ""
+#: scene/3d/light.cpp
+#, fuzzy
+msgid "Angle Attenuation"
+msgstr "Yer functions:"
+
#: scene/3d/mesh_instance.cpp
msgid "Software Skinning"
msgstr ""
@@ -20339,6 +21746,63 @@ msgid "Axis Lock"
msgstr ""
#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Linear X"
+msgstr "Yar, Blow th' Selected Down!"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Linear Y"
+msgstr "Yar, Blow th' Selected Down!"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Linear Z"
+msgstr "Yar, Blow th' Selected Down!"
+
+#: scene/3d/physics_body.cpp
+msgid "Angular X"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Angular Y"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Angular Z"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Motion X"
+msgstr "Add Function"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Motion Y"
+msgstr "Add Function"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Motion Z"
+msgstr "Add Function"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Move Lock X"
+msgstr "Forge yer Node!"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Move Lock Y"
+msgstr "Forge yer Node!"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Move Lock Z"
+msgstr "Forge yer Node!"
+
+#: scene/3d/physics_body.cpp
msgid "Body Offset"
msgstr ""
@@ -20372,6 +21836,15 @@ msgid "Exclude Nodes"
msgstr "Slit th' Node"
#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Params"
+msgstr "Change"
+
+#: scene/3d/physics_joint.cpp
+msgid "Impulse Clamp"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit"
msgstr ""
@@ -20383,6 +21856,55 @@ msgstr ""
msgid "Lower"
msgstr ""
+#: scene/3d/physics_joint.cpp scene/3d/vehicle_body.cpp
+#, fuzzy
+msgid "Relaxation"
+msgstr "Yer functions:"
+
+#: scene/3d/physics_joint.cpp
+msgid "Motor"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Target Velocity"
+msgstr "Slit th' Node"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Max Impulse"
+msgstr "Grub:"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit"
+msgstr "Yar, Blow th' Selected Down!"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Upper Distance"
+msgstr "Edit"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Lower Distance"
+msgstr "Edit"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Restitution"
+msgstr "Yar, Blow th' Selected Down!"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motion"
+msgstr "Add Function"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Ortho"
+msgstr "Yar, Blow th' Selected Down!"
+
#: scene/3d/physics_joint.cpp
msgid "Upper Angle"
msgstr ""
@@ -20392,6 +21914,15 @@ msgid "Lower Angle"
msgstr ""
#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Angular Motion"
+msgstr "Yer functions:"
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Ortho"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
msgid "Swing Span"
msgstr ""
@@ -20400,17 +21931,90 @@ msgid "Twist Span"
msgstr ""
#: scene/3d/physics_joint.cpp
+msgid "Linear Limit X"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Linear Motor X"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Force Limit"
+msgstr "Call"
+
+#: scene/3d/physics_joint.cpp
+msgid "Linear Spring X"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Equilibrium Point"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit X"
msgstr ""
#: scene/3d/physics_joint.cpp
+msgid "Erp"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Motor X"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Spring X"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Linear Limit Y"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Linear Motor Y"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Linear Spring Y"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit Y"
msgstr ""
#: scene/3d/physics_joint.cpp
+msgid "Angular Motor Y"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Spring Y"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Linear Limit Z"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Linear Motor Z"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Linear Spring Z"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit Z"
msgstr ""
+#: scene/3d/physics_joint.cpp
+msgid "Angular Motor Z"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Spring Z"
+msgstr ""
+
#: scene/3d/portal.cpp
msgid "The RoomManager should not be a child or grandchild of a Portal."
msgstr ""
@@ -20524,7 +22128,7 @@ msgstr ""
msgid "Use Default Simplify"
msgstr ""
-#: scene/3d/room.cpp
+#: scene/3d/room.cpp scene/3d/room_manager.cpp
msgid "Room Simplify"
msgstr ""
@@ -20563,6 +22167,13 @@ msgstr ""
msgid "Main"
msgstr ""
+#: scene/3d/room_manager.cpp scene/animation/animation_player.cpp
+#: scene/animation/animation_tree.cpp scene/animation/animation_tree_player.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+#, fuzzy
+msgid "Active"
+msgstr "Add Function"
+
#: scene/3d/room_manager.cpp
msgid "Roomlist"
msgstr ""
@@ -20585,6 +22196,51 @@ msgid "Gameplay"
msgstr ""
#: scene/3d/room_manager.cpp
+msgid "Gameplay Monitor"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "Use Secondary PVS"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Merge Meshes"
+msgstr "Paste yer Node"
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Show Margins"
+msgstr "Rename Variable"
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Debug Sprawl"
+msgstr "Debuggin'"
+
+#: scene/3d/room_manager.cpp
+msgid "Overlap Warning Threshold"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Preview Camera"
+msgstr "Add Variable"
+
+#: scene/3d/room_manager.cpp
+msgid "Portal Depth Limit"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Default Portal Margin"
+msgstr "th' Base Type:"
+
+#: scene/3d/room_manager.cpp
+msgid "Roaming Expansion Margin"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
msgid ""
"RoomList path is invalid.\n"
"Please check the RoomList branch has been assigned in the RoomManager."
@@ -20705,6 +22361,20 @@ msgstr ""
msgid "Billboard"
msgstr ""
+#: scene/3d/sprite_3d.cpp scene/resources/material.cpp
+#, fuzzy
+msgid "Transparent"
+msgstr "Add Function"
+
+#: scene/3d/sprite_3d.cpp
+#, fuzzy
+msgid "Shaded"
+msgstr "Change"
+
+#: scene/3d/sprite_3d.cpp
+msgid "Double Sided"
+msgstr ""
+
#: scene/3d/sprite_3d.cpp
msgid "Alpha Cut"
msgstr ""
@@ -20773,11 +22443,6 @@ msgstr "Swap yer Expression"
msgid "Max Force"
msgstr "Error loading yer Calligraphy Pen."
-#: scene/3d/vehicle_body.cpp
-#, fuzzy
-msgid "Relaxation"
-msgstr "Yer functions:"
-
#: scene/3d/visibility_notifier.cpp
msgid "AABB"
msgstr ""
@@ -20904,7 +22569,7 @@ msgid "Fadeout Time"
msgstr ""
#: scene/animation/animation_blend_tree.cpp
-msgid "autorestart_"
+msgid "Auto Restart"
msgstr ""
#: scene/animation/animation_blend_tree.cpp
@@ -20986,13 +22651,6 @@ msgstr "Yar, Blow th' Selected Down!"
msgid "Default Blend Time"
msgstr "th' Base Type:"
-#: scene/animation/animation_player.cpp scene/animation/animation_tree.cpp
-#: scene/animation/animation_tree_player.cpp
-#: servers/audio/effects/audio_effect_delay.cpp
-#, fuzzy
-msgid "Active"
-msgstr "Add Function"
-
#: scene/animation/animation_player.cpp
msgid "Method Call Mode"
msgstr ""
@@ -21109,10 +22767,6 @@ msgstr "Slit th' Node"
msgid "Max Iterations"
msgstr "Rename Function"
-#: scene/animation/tween.cpp scene/resources/texture.cpp
-msgid "Repeat"
-msgstr ""
-
#: scene/animation/tween.cpp
msgid "Playback Process Mode"
msgstr ""
@@ -21140,20 +22794,6 @@ msgstr "Slit th' Node"
msgid "Alignment"
msgstr ""
-#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
-#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
-#: scene/resources/style_box.cpp
-#, fuzzy
-msgid "Horizontal"
-msgstr "Discharge ye' Variable"
-
-#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
-#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
-#: scene/resources/style_box.cpp
-#, fuzzy
-msgid "Vertical"
-msgstr "Discharge ye' Variable"
-
#: scene/gui/base_button.cpp
msgid "Shortcut In Tooltip"
msgstr ""
@@ -21247,10 +22887,6 @@ msgid "HSV"
msgstr ""
#: scene/gui/color_picker.cpp
-msgid "Raw"
-msgstr ""
-
-#: scene/gui/color_picker.cpp
msgid "Switch between hexadecimal and code values."
msgstr ""
@@ -21307,6 +22943,30 @@ msgid "Focus"
msgstr ""
#: scene/gui/control.cpp
+msgid "Neighbour Left"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Neighbour Top"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Neighbour Right"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Neighbour Bottom"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Next"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Previous"
+msgstr ""
+
+#: scene/gui/control.cpp
msgid "Mouse"
msgstr ""
@@ -21342,7 +23002,7 @@ msgid "Dialog"
msgstr ""
#: scene/gui/dialogs.cpp
-msgid "Hide On Ok"
+msgid "Hide On OK"
msgstr ""
#: scene/gui/dialogs.cpp scene/gui/label.cpp
@@ -21432,7 +23092,7 @@ msgid "Timers"
msgstr "Sundial:"
#: scene/gui/item_list.cpp scene/gui/popup_menu.cpp scene/gui/tree.cpp
-msgid "Incremental Search Max Interval (msec)"
+msgid "Incremental Search Max Interval Msec"
msgstr ""
#: scene/gui/item_list.cpp scene/gui/tree.cpp
@@ -21970,6 +23630,26 @@ msgstr "Slit th' Node"
msgid "Nine Patch Stretch"
msgstr "Ye be fixin' Signal:"
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Left"
+msgstr "Slit th' Node"
+
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Top"
+msgstr "Slit th' Node"
+
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Right"
+msgstr "Slit th' Node"
+
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Bottom"
+msgstr "Slit th' Node"
+
#: scene/gui/tree.cpp
msgid "Custom Minimum Height"
msgstr ""
@@ -22005,7 +23685,7 @@ msgid "Paused"
msgstr ""
#: scene/gui/video_player.cpp
-msgid "Buffering (msec)"
+msgid "Buffering Msec"
msgstr ""
#: scene/gui/video_player.cpp
@@ -22331,6 +24011,22 @@ msgid "Shadow Atlas"
msgstr ""
#: scene/main/viewport.cpp
+msgid "Quad 0"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 1"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 2"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 3"
+msgstr ""
+
+#: scene/main/viewport.cpp
#, fuzzy
msgid "Canvas Transform"
msgstr "Change yer Anim Transform"
@@ -22345,6 +24041,10 @@ msgid "Tooltip Delay (sec)"
msgstr ""
#: scene/register_scene_types.cpp
+msgid "Swap OK Cancel"
+msgstr ""
+
+#: scene/register_scene_types.cpp
msgid "Use hiDPI"
msgstr ""
@@ -22359,21 +24059,6 @@ msgid "Custom Font"
msgstr "Slit th' Node"
#: scene/resources/audio_stream_sample.cpp
-#, fuzzy
-msgid "Loop Mode"
-msgstr "Slit th' Node"
-
-#: scene/resources/audio_stream_sample.cpp
-#, fuzzy
-msgid "Loop Begin"
-msgstr "Slit th' Node"
-
-#: scene/resources/audio_stream_sample.cpp
-#, fuzzy
-msgid "Loop End"
-msgstr "Slit th' Node"
-
-#: scene/resources/audio_stream_sample.cpp
#: servers/audio/effects/audio_stream_generator.cpp servers/audio_server.cpp
msgid "Mix Rate"
msgstr ""
@@ -22427,6 +24112,16 @@ msgid "Extra Spacing"
msgstr "Yar, Blow th' Selected Down!"
#: scene/resources/dynamic_font.cpp
+msgid "Char"
+msgstr ""
+
+#: scene/resources/dynamic_font.cpp scene/resources/world.cpp
+#: scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Space"
+msgstr "Call"
+
+#: scene/resources/dynamic_font.cpp
msgid "Font"
msgstr ""
@@ -22643,6 +24338,42 @@ msgid "Glow"
msgstr ""
#: scene/resources/environment.cpp
+msgid "Levels"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "1"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "2"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "3"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "4"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "5"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "6"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "7"
+msgstr ""
+
+#: scene/resources/environment.cpp
msgid "Bloom"
msgstr ""
@@ -22728,9 +24459,66 @@ msgid "Next Pass"
msgstr "Forge yer Node!"
#: scene/resources/material.cpp
+msgid "Use Shadow To Opacity"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Unshaded"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Vertex Lighting"
+msgstr "Yer functions:"
+
+#: scene/resources/material.cpp
+msgid "No Depth Test"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Use Point Size"
+msgstr "Edit"
+
+#: scene/resources/material.cpp
+msgid "World Triplanar"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Fixed Size"
+msgstr "Edit"
+
+#: scene/resources/material.cpp
+msgid "Albedo Tex Force sRGB"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Do Not Receive Shadows"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Disable Ambient Light"
+msgstr "Cursed"
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Ensure Correct Normals"
+msgstr "Slit th' Node"
+
+#: scene/resources/material.cpp
msgid "Vertex Color"
msgstr ""
+#: scene/resources/material.cpp
+msgid "Use As Albedo"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Is sRGB"
+msgstr ""
+
#: scene/resources/material.cpp servers/visual_server.cpp
#, fuzzy
msgid "Parameters"
@@ -22767,6 +24555,11 @@ msgid "Billboard Mode"
msgstr "Slit th' Node"
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Billboard Keep Scale"
+msgstr "Slit th' Node"
+
+#: scene/resources/material.cpp
msgid "Grow"
msgstr ""
@@ -22776,6 +24569,10 @@ msgid "Grow Amount"
msgstr "Discharge ye' Variable"
#: scene/resources/material.cpp
+msgid "Use Alpha Scissor"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Alpha Scissor Threshold"
msgstr ""
@@ -22806,10 +24603,20 @@ msgid "Metallic Specular"
msgstr ""
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Metallic Texture"
+msgstr "Discharge ye' Variable"
+
+#: scene/resources/material.cpp
msgid "Metallic Texture Channel"
msgstr ""
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Roughness Texture"
+msgstr "Discharge ye' Variable"
+
+#: scene/resources/material.cpp
msgid "Roughness Texture Channel"
msgstr ""
@@ -22827,6 +24634,16 @@ msgid "Emission Operator"
msgstr ""
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Emission On UV2"
+msgstr "Swap yer Expression"
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Emission Texture"
+msgstr "Discharge ye' Variable"
+
+#: scene/resources/material.cpp
msgid "NormalMap"
msgstr ""
@@ -22840,6 +24657,11 @@ msgstr ""
#: scene/resources/material.cpp
#, fuzzy
+msgid "Rim Texture"
+msgstr "Discharge ye' Variable"
+
+#: scene/resources/material.cpp
+#, fuzzy
msgid "Clearcoat"
msgstr "Change yer Anim Transform"
@@ -22849,15 +24671,28 @@ msgid "Clearcoat Gloss"
msgstr "Change yer Anim Transform"
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Clearcoat Texture"
+msgstr "th' Members:"
+
+#: scene/resources/material.cpp
msgid "Anisotropy"
msgstr ""
#: scene/resources/material.cpp
+msgid "Anisotropy Flowmap"
+msgstr ""
+
+#: scene/resources/material.cpp
#, fuzzy
msgid "Ambient Occlusion"
msgstr "Ye be fixin' Signal:"
#: scene/resources/material.cpp
+msgid "On UV2"
+msgstr ""
+
+#: scene/resources/material.cpp
#, fuzzy
msgid "Texture Channel"
msgstr "Slit th' Node"
@@ -22895,6 +24730,11 @@ msgstr "Add Function"
#: scene/resources/material.cpp
#, fuzzy
+msgid "Transmission Texture"
+msgstr "Add Function"
+
+#: scene/resources/material.cpp
+#, fuzzy
msgid "Refraction"
msgstr "Yer functions:"
@@ -22911,6 +24751,10 @@ msgid "UV1"
msgstr ""
#: scene/resources/material.cpp
+msgid "Triplanar"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Triplanar Sharpness"
msgstr ""
@@ -23109,6 +24953,16 @@ msgstr "th' Members:"
msgid "Point Count"
msgstr "Add Signal"
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Scale Random"
+msgstr "Slit th' Node"
+
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Scale Curve"
+msgstr "Slit th' Node"
+
#: scene/resources/physics_material.cpp
msgid "Rough"
msgstr ""
@@ -23166,10 +25020,6 @@ msgid "A"
msgstr ""
#: scene/resources/shader.cpp
-msgid "Code"
-msgstr ""
-
-#: scene/resources/shader.cpp
msgid "Custom Defines"
msgstr ""
@@ -23258,14 +25108,6 @@ msgid "Grow End"
msgstr ""
#: scene/resources/texture.cpp
-msgid "Storage"
-msgstr ""
-
-#: scene/resources/texture.cpp
-msgid "Lossy Quality"
-msgstr ""
-
-#: scene/resources/texture.cpp
#, fuzzy
msgid "Load Path"
msgstr "Forge yer Node!"
@@ -23392,11 +25234,6 @@ msgstr "Yer Calligraphy be wrongly sized."
msgid "Fallback Environment"
msgstr ""
-#: scene/resources/world.cpp scene/resources/world_2d.cpp
-#, fuzzy
-msgid "Space"
-msgstr "Call"
-
#: scene/resources/world.cpp
msgid "Scenario"
msgstr ""
@@ -23471,8 +25308,34 @@ msgstr ""
msgid "Wet"
msgstr ""
-#: servers/audio/effects/audio_effect_compressor.cpp
-msgid "Threshold"
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "Voice"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+msgid "Delay (ms)"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_phaser.cpp
+msgid "Rate Hz"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#, fuzzy
+msgid "Depth (ms)"
+msgstr "Slit th' Node"
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+msgid "Level dB"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+#: servers/audio/effects/audio_effect_panner.cpp
+msgid "Pan"
msgstr ""
#: servers/audio/effects/audio_effect_compressor.cpp
@@ -23498,19 +25361,6 @@ msgid "Tap 1"
msgstr ""
#: servers/audio/effects/audio_effect_delay.cpp
-msgid "Delay (ms)"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_delay.cpp
-msgid "Level dB"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_delay.cpp
-#: servers/audio/effects/audio_effect_panner.cpp
-msgid "Pan"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_delay.cpp
msgid "Tap 2"
msgstr ""
@@ -23568,10 +25418,6 @@ msgstr ""
msgid "Range Max Hz"
msgstr ""
-#: servers/audio/effects/audio_effect_phaser.cpp
-msgid "Rate Hz"
-msgstr ""
-
#: servers/audio/effects/audio_effect_pitch_shift.cpp
msgid "Oversampling"
msgstr ""
@@ -23587,7 +25433,7 @@ msgid "Predelay"
msgstr ""
#: servers/audio/effects/audio_effect_reverb.cpp
-msgid "(msec)"
+msgid "Msec"
msgstr ""
#: servers/audio/effects/audio_effect_reverb.cpp
diff --git a/editor/translations/pt.po b/editor/translations/pt.po
index c0ea85103f..529e61c913 100644
--- a/editor/translations/pt.po
+++ b/editor/translations/pt.po
@@ -35,7 +35,7 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 4.11-dev\n"
-#: core/bind/core_bind.cpp
+#: core/bind/core_bind.cpp main/main.cpp
msgid "Tablet Driver"
msgstr ""
@@ -139,8 +139,8 @@ msgstr "Posição da Doca"
#: core/bind/core_bind.cpp editor/editor_settings.cpp main/main.cpp
#: modules/gdscript/gdscript_editor.cpp modules/gridmap/grid_map.cpp
#: modules/mono/csharp_script.cpp modules/visual_script/visual_script_nodes.cpp
-#: scene/2d/tile_map.cpp scene/3d/camera.cpp scene/gui/control.cpp
-#: scene/gui/graph_edit.cpp scene/main/viewport.cpp
+#: scene/2d/tile_map.cpp scene/3d/camera.cpp scene/3d/light.cpp
+#: scene/gui/control.cpp scene/gui/graph_edit.cpp scene/main/viewport.cpp
#: scene/resources/dynamic_font.cpp scene/resources/navigation_mesh.cpp
#: scene/resources/primitive_meshes.cpp scene/resources/sky.cpp
#: scene/resources/style_box.cpp scene/resources/texture.cpp
@@ -244,8 +244,7 @@ msgid "Data"
msgstr "Com Dados"
#: core/io/file_access_network.cpp core/register_core_types.cpp
-#: editor/editor_settings.cpp editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp main/main.cpp
+#: editor/editor_settings.cpp main/main.cpp
#: modules/gdscript/language_server/gdscript_language_server.cpp
#, fuzzy
msgid "Network"
@@ -530,9 +529,10 @@ msgstr "Predefinições"
msgid "Relative"
msgstr "Ajuste Relativo"
-#: core/os/input_event.cpp scene/2d/camera_2d.cpp
-#: scene/3d/interpolated_camera.cpp scene/animation/animation_player.cpp
-#: scene/resources/environment.cpp
+#: core/os/input_event.cpp scene/2d/camera_2d.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/interpolated_camera.cpp
+#: scene/animation/animation_player.cpp scene/resources/environment.cpp
+#: scene/resources/particles_material.cpp
#, fuzzy
msgid "Speed"
msgstr "Velocidade:"
@@ -582,8 +582,9 @@ msgstr "Gravar Mensagem"
msgid "Pitch"
msgstr "Inclinação:"
-#: core/os/input_event.cpp scene/2d/physics_body_2d.cpp
-#: scene/3d/physics_body.cpp
+#: core/os/input_event.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/physics_body_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/3d/physics_body.cpp scene/resources/particles_material.cpp
#, fuzzy
msgid "Velocity"
msgstr "Vista Órbita Direita"
@@ -602,6 +603,8 @@ msgid "Controller Value"
msgstr ""
#: core/project_settings.cpp editor/editor_node.cpp main/main.cpp
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/windows/export/export.cpp
#, fuzzy
msgid "Application"
msgstr "Ação"
@@ -620,13 +623,16 @@ msgstr "Configurações do Projeto..."
#: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp
#: editor/editor_plugin_settings.cpp editor/editor_profiler.cpp
#: editor/project_manager.cpp editor/settings_config_dialog.cpp
-#: modules/gdnative/nativescript/nativescript.cpp scene/2d/area_2d.cpp
-#: scene/3d/area.cpp scene/main/node.cpp
+#: modules/gdnative/nativescript/nativescript.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/osx/export/export.cpp scene/2d/area_2d.cpp scene/3d/area.cpp
+#: scene/main/node.cpp
msgid "Name"
msgstr "Nome"
#: core/project_settings.cpp editor/editor_help.cpp
-#: modules/visual_script/visual_script_nodes.cpp
+#: modules/visual_script/visual_script_nodes.cpp platform/uwp/export/export.cpp
+#: platform/windows/export/export.cpp
msgid "Description"
msgstr "Descrição"
@@ -664,7 +670,7 @@ msgid "Custom User Dir Name"
msgstr ""
#: core/project_settings.cpp editor/animation_track_editor.cpp
-#: editor/editor_audio_buses.cpp servers/audio_server.cpp
+#: editor/editor_audio_buses.cpp main/main.cpp servers/audio_server.cpp
msgid "Audio"
msgstr "Ãudio"
@@ -832,10 +838,13 @@ msgstr "Filtros:"
msgid "Sharpen Intensity"
msgstr ""
-#: core/project_settings.cpp editor/editor_node.cpp editor/editor_settings.cpp
-#: editor/plugins/script_editor_plugin.cpp editor/project_export.cpp
-#: main/main.cpp modules/gdscript/gdscript.cpp
-#: modules/visual_script/visual_script.cpp scene/3d/room_manager.cpp
+#: core/project_settings.cpp editor/editor_export.cpp editor/editor_node.cpp
+#: editor/editor_settings.cpp editor/plugins/script_editor_plugin.cpp
+#: editor/project_export.cpp main/main.cpp modules/gdscript/gdscript.cpp
+#: modules/visual_script/visual_script.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp scene/3d/room_manager.cpp
#: scene/main/scene_tree.cpp scene/resources/shape_2d.cpp
#: servers/visual_server.cpp
msgid "Debug"
@@ -1071,6 +1080,7 @@ msgid "Subsurface Scattering"
msgstr ""
#: drivers/gles3/rasterizer_scene_gles3.cpp
+#: editor/import/resource_importer_texture.cpp
#: editor/plugins/spatial_editor_plugin.cpp modules/gltf/gltf_node.cpp
#: modules/gridmap/grid_map.cpp scene/2d/cpu_particles_2d.cpp
#: scene/2d/node_2d.cpp scene/2d/parallax_layer.cpp scene/2d/polygon_2d.cpp
@@ -1368,6 +1378,7 @@ msgid "Editors"
msgstr "Editor"
#: editor/animation_track_editor.cpp editor/editor_settings.cpp
+#: editor/import/resource_importer_scene.cpp
#: editor/plugins/animation_player_editor_plugin.cpp editor/scene_tree_dock.cpp
#: scene/2d/animated_sprite.cpp scene/2d/cpu_particles_2d.cpp
#: scene/2d/sprite.cpp scene/3d/cpu_particles.cpp scene/3d/sprite_3d.cpp
@@ -1601,14 +1612,14 @@ msgstr "Valor passo da Animação."
msgid "Seconds"
msgstr "Segundos"
-#: editor/animation_track_editor.cpp
+#: editor/animation_track_editor.cpp editor/import/resource_importer_scene.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp main/main.cpp
#: scene/resources/texture.cpp
msgid "FPS"
msgstr "FPS"
#: editor/animation_track_editor.cpp editor/editor_plugin_settings.cpp
-#: editor/editor_resource_picker.cpp
+#: editor/editor_resource_picker.cpp editor/import/resource_importer_wav.cpp
#: editor/plugins/polygon_2d_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
@@ -2576,7 +2587,9 @@ msgid "Remove Autoload"
msgstr "Remover Carregamento Automático"
#: editor/editor_autoload_settings.cpp editor/editor_plugin_settings.cpp
-#: modules/gdscript/gdscript.cpp scene/2d/polygon_2d.cpp scene/3d/area.cpp
+#: modules/gdscript/gdscript.cpp platform/android/export/export_plugin.cpp
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#: scene/2d/polygon_2d.cpp scene/3d/area.cpp scene/3d/physics_joint.cpp
#: scene/3d/reflection_probe.cpp scene/main/canvas_layer.cpp
#: scene/resources/material.cpp servers/visual_server.cpp
msgid "Enable"
@@ -2745,6 +2758,59 @@ msgstr ""
#: editor/editor_export.cpp platform/android/export/export_plugin.cpp
#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Custom Template"
+msgstr "Editor de Tema"
+
+#: editor/editor_export.cpp editor/project_export.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp
+msgid "Release"
+msgstr "Libertar"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Binary Format"
+msgstr "Operador de Cor."
+
+#: editor/editor_export.cpp
+msgid "64 Bits"
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Embed PCK"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Texture Format"
+msgstr "TextureRegion"
+
+#: editor/editor_export.cpp
+msgid "BPTC"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "S3TC"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "ETC"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "ETC2"
+msgstr ""
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "No BPTC Fallbacks"
+msgstr "Forçar Shader de Reserva"
+
+#: editor/editor_export.cpp platform/android/export/export_plugin.cpp
+#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
msgid "Custom debug template not found."
msgstr "Modelo de depuração personalizado não encontrado."
@@ -2923,6 +2989,7 @@ msgid "Make Current"
msgstr "Tornar Atual"
#: editor/editor_feature_profile.cpp editor/editor_node.cpp
+#: editor/import/resource_importer_scene.cpp
#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
msgid "Import"
msgstr "Importar"
@@ -3051,8 +3118,11 @@ msgstr "Sucesso!"
msgid "Display Mode"
msgstr "Modo Jogo:"
-#: editor/editor_file_dialog.cpp main/main.cpp modules/csg/csg_shape.cpp
-#: modules/visual_script/visual_script_nodes.cpp
+#: editor/editor_file_dialog.cpp
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+#: editor/import/resource_importer_wav.cpp main/main.cpp
+#: modules/csg/csg_shape.cpp modules/visual_script/visual_script_nodes.cpp
#: modules/visual_script/visual_script_yield_nodes.cpp scene/2d/light_2d.cpp
#: scene/2d/physics_body_2d.cpp scene/2d/tile_map.cpp
#: scene/3d/baked_lightmap.cpp scene/3d/light.cpp scene/3d/physics_body.cpp
@@ -3191,7 +3261,9 @@ msgstr "A (Re)Importar Recursos"
msgid "Reimport Missing Imported Files"
msgstr ""
-#: editor/editor_help.cpp
+#: editor/editor_help.cpp scene/2d/camera_2d.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/resources/dynamic_font.cpp
+#: scene/resources/style_box.cpp
msgid "Top"
msgstr "Topo"
@@ -3243,6 +3315,7 @@ msgid "Fonts"
msgstr "Fontes"
#: editor/editor_help.cpp editor/plugins/theme_editor_plugin.cpp
+#: platform/iphone/export/export.cpp
msgid "Icons"
msgstr "Ãcones"
@@ -3412,7 +3485,9 @@ msgstr ""
msgid "Pin value [Disabled because '%s' is editor-only]"
msgstr "Fixar valor [Desativado porque '%s' é só-para-editor]"
-#: editor/editor_inspector.cpp editor/scene_tree_dock.cpp
+#: editor/editor_inspector.cpp
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+#: editor/scene_tree_dock.cpp
#: modules/visual_script/visual_script_func_nodes.cpp
#: modules/visual_script/visual_script_nodes.cpp
#: modules/visual_script/visual_script_property_selector.cpp
@@ -3754,6 +3829,16 @@ msgid "Quick Open Script..."
msgstr "Abrir Script de forma rápida..."
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Save & Reload"
+msgstr "Guardar & Reiniciar"
+
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Save changes to '%s' before reloading?"
+msgstr "Guardar alterações a '%s' antes de fechar?"
+
+#: editor/editor_node.cpp
msgid "Save & Close"
msgstr "Guardar & Fechar"
@@ -3870,6 +3955,11 @@ msgid "Open Project Manager?"
msgstr "Abrir Gestor de Projeto?"
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Save changes to the following scene(s) before reloading?"
+msgstr "Guardar alterações da(s) seguinte(s) cena(s) antes de sair?"
+
+#: editor/editor_node.cpp
msgid "Save & Quit"
msgstr "Guardar & Sair"
@@ -4146,8 +4236,8 @@ msgstr "Mudanças de Material:"
#: editor/editor_node.cpp
#, fuzzy
-msgid "Translate Properties"
-msgstr "Colar Propriedades"
+msgid "Localize Settings"
+msgstr "Localização"
#: editor/editor_node.cpp
#, fuzzy
@@ -4164,8 +4254,8 @@ msgstr "Inspetor"
#: editor/editor_node.cpp
#, fuzzy
-msgid "Capitalize Properties"
-msgstr "Colar Propriedades"
+msgid "Default Property Name Style"
+msgstr "Caminho do Projeto:"
#: editor/editor_node.cpp
msgid "Default Float Step"
@@ -4771,7 +4861,9 @@ msgstr "Plugins Instalados:"
msgid "Update"
msgstr "Atualizar"
-#: editor/editor_plugin_settings.cpp
+#: editor/editor_plugin_settings.cpp platform/android/export/export_plugin.cpp
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp
msgid "Version"
msgstr "Versão"
@@ -5814,7 +5906,7 @@ msgstr "Rect Completo"
msgid "Rect Custom Position"
msgstr "Definir posição Curve Out"
-#: editor/editor_settings.cpp
+#: editor/editor_settings.cpp platform/android/export/export_plugin.cpp
msgid "Screen"
msgstr ""
@@ -5841,6 +5933,19 @@ msgid "Editor SSL Certificates"
msgstr "Configurações do Editor"
#: editor/editor_settings.cpp
+msgid "HTTP Proxy"
+msgstr ""
+
+#: editor/editor_settings.cpp
+msgid "Host"
+msgstr ""
+
+#: editor/editor_settings.cpp editor/fileserver/editor_file_server.cpp
+#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp
+msgid "Port"
+msgstr ""
+
+#: editor/editor_settings.cpp
msgid "Project Manager"
msgstr "Gestor de Projetos"
@@ -5883,7 +5988,8 @@ msgstr ""
msgid "String Color"
msgstr "Armazenar o Ficheiro:"
-#: editor/editor_settings.cpp
+#: editor/editor_settings.cpp platform/javascript/export/export.cpp
+#: platform/uwp/export/export.cpp
#, fuzzy
msgid "Background Color"
msgstr "Cor de fundo inválida."
@@ -6062,22 +6168,6 @@ msgid "Starting the download..."
msgstr "A iniciar a transferência..."
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "HTTP Proxy"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Host"
-msgstr ""
-
-#: editor/export_template_manager.cpp editor/fileserver/editor_file_server.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp main/main.cpp
-#: modules/mono/mono_gd/gd_mono.cpp
-msgid "Port"
-msgstr ""
-
-#: editor/export_template_manager.cpp
msgid "Error requesting URL:"
msgstr "Erro ao solicitar URL:"
@@ -6334,6 +6424,7 @@ msgstr ""
#: editor/fileserver/editor_file_server.cpp
#: editor/plugins/version_control_editor_plugin.cpp
+#: platform/uwp/export/export.cpp platform/windows/export/export.cpp
msgid "Password"
msgstr "Senha"
@@ -6711,6 +6802,117 @@ msgstr ""
msgid "Use Ambient"
msgstr ""
+#: editor/import/resource_importer_bitmask.cpp
+#, fuzzy
+msgid "Create From"
+msgstr "Criar Pasta"
+
+#: editor/import/resource_importer_bitmask.cpp
+#: servers/audio/effects/audio_effect_compressor.cpp
+msgid "Threshold"
+msgstr ""
+
+#: editor/import/resource_importer_csv_translation.cpp
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_scene.cpp
+#: editor/import/resource_importer_texture.cpp
+#: editor/import/resource_importer_wav.cpp scene/3d/gi_probe.cpp
+#, fuzzy
+msgid "Compress"
+msgstr "Componentes"
+
+#: editor/import/resource_importer_csv_translation.cpp
+msgid "Delimiter"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+msgid "No BPTC If RGB"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/sprite_3d.cpp
+#: scene/resources/material.cpp scene/resources/particles_material.cpp
+#: scene/resources/texture.cpp
+msgid "Flags"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/animation/tween.cpp
+#: scene/resources/texture.cpp
+msgid "Repeat"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/2d/light_2d.cpp
+#: scene/gui/control.cpp scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Filter"
+msgstr "Filtros:"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Mipmaps"
+msgstr "Sinais"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+msgid "Anisotropic"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+msgid "sRGB"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#, fuzzy
+msgid "Slices"
+msgstr "Corte automático"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
+#: scene/resources/style_box.cpp
+#, fuzzy
+msgid "Horizontal"
+msgstr "Horizontal:"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
+#: scene/resources/style_box.cpp
+#, fuzzy
+msgid "Vertical"
+msgstr "Vertical:"
+
+#: editor/import/resource_importer_obj.cpp
+#, fuzzy
+msgid "Generate Tangents"
+msgstr "Gerar Pontos"
+
+#: editor/import/resource_importer_obj.cpp
+#, fuzzy
+msgid "Scale Mesh"
+msgstr "Modo Escalar"
+
+#: editor/import/resource_importer_obj.cpp
+#, fuzzy
+msgid "Offset Mesh"
+msgstr "Compensação:"
+
+#: editor/import/resource_importer_obj.cpp
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Octahedral Compression"
+msgstr "Expressão"
+
+#: editor/import/resource_importer_obj.cpp
+#, fuzzy
+msgid "Optimize Mesh Flags"
+msgstr "Tamanho: "
+
#: editor/import/resource_importer_scene.cpp
msgid "Import as Single Scene"
msgstr "Importar como Cena Única"
@@ -6751,6 +6953,156 @@ msgstr "Importar como Cenas Múltiplas"
msgid "Import as Multiple Scenes+Materials"
msgstr "Importar como Cenas Múltiplas + Materiais"
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Nodes"
+msgstr "Nó"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Root Type"
+msgstr "Voltar"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Root Name"
+msgstr "Nome do Remoto"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Root Scale"
+msgstr "Escala"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Custom Script"
+msgstr "CustomNode"
+
+#: editor/import/resource_importer_scene.cpp scene/resources/texture.cpp
+#, fuzzy
+msgid "Storage"
+msgstr "Armazenar o Ficheiro:"
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Use Legacy Names"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+#, fuzzy
+msgid "Materials"
+msgstr "Mudanças de Material:"
+
+#: editor/import/resource_importer_scene.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Location"
+msgstr "Localização"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Keep On Reimport"
+msgstr "Reimportar"
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+#, fuzzy
+msgid "Meshes"
+msgstr "Malha"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Ensure Tangents"
+msgstr "Modificar tangente da curva"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Light Baking"
+msgstr "Consolidar Lightmaps"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Lightmap Texel Size"
+msgstr "Consolidar Lightmaps"
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+msgid "Skins"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Use Named Skins"
+msgstr "Usar Ajuste de Escala"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "External Files"
+msgstr "Abrir um Ficheiro"
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Store In Subdir"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Filter Script"
+msgstr "Scripts de filtro"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Keep Custom Tracks"
+msgstr "Transformar"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Optimizer"
+msgstr "Otimizar"
+
+#: editor/import/resource_importer_scene.cpp main/main.cpp
+#: modules/mono/mono_gd/gd_mono.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp scene/2d/camera_2d.cpp scene/2d/light_2d.cpp
+#: scene/2d/navigation_polygon.cpp scene/2d/ray_cast_2d.cpp scene/2d/sprite.cpp
+#: scene/2d/y_sort.cpp scene/3d/audio_stream_player_3d.cpp
+#: scene/3d/baked_lightmap.cpp scene/3d/interpolated_camera.cpp
+#: scene/3d/light.cpp scene/3d/navigation_mesh_instance.cpp
+#: scene/3d/physics_joint.cpp scene/3d/ray_cast.cpp scene/3d/sprite_3d.cpp
+#: scene/gui/graph_edit.cpp scene/gui/rich_text_label.cpp
+#: scene/resources/curve.cpp scene/resources/environment.cpp
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Enabled"
+msgstr "Ativar"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Max Linear Error"
+msgstr "Máximo de Erros Lineares:"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Max Angular Error"
+msgstr "Máximo de Erros Angulares:"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Max Angle"
+msgstr "Valor"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Remove Unused Tracks"
+msgstr "Remover Pista de Animação"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Clips"
+msgstr "Clips Anim"
+
+#: editor/import/resource_importer_scene.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/particles_2d.cpp scene/3d/area.cpp scene/3d/cpu_particles.cpp
+#: scene/3d/particles.cpp scene/resources/environment.cpp
+#, fuzzy
+msgid "Amount"
+msgstr "Valor:"
+
#: editor/import/resource_importer_scene.cpp
#: editor/plugins/mesh_library_editor_plugin.cpp
msgid "Import Scene"
@@ -6792,12 +7144,149 @@ msgstr "Devolveu um objeto derivado de Nó no método `post_import()`?"
msgid "Saving..."
msgstr "A guardar..."
+#: editor/import/resource_importer_texture.cpp scene/resources/texture.cpp
+msgid "Lossy Quality"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "HDR Mode"
+msgstr "Modo Seleção"
+
+#: editor/import/resource_importer_texture.cpp
+msgid "BPTC LDR"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/mesh_instance_2d.cpp scene/2d/multimesh_instance_2d.cpp
+#: scene/2d/particles_2d.cpp scene/2d/sprite.cpp scene/resources/style_box.cpp
+msgid "Normal Map"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Process"
+msgstr "Pós-processamento"
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Fix Alpha Border"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Premult Alpha"
+msgstr "Editar Polígono"
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Hdr As Srgb"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Invert Color"
+msgstr "Vértice"
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Normal Map Invert Y"
+msgstr "Escala aleatória:"
+
+#: editor/import/resource_importer_texture.cpp
+#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
+#: scene/audio/audio_stream_player.cpp scene/gui/video_player.cpp
+msgid "Stream"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Size Limit"
+msgstr "Tamanho: "
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Detect 3D"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "SVG"
+msgstr "HSV"
+
#: editor/import/resource_importer_texture.cpp
msgid ""
"Warning, no suitable PC VRAM compression enabled in Project Settings. This "
"texture will not display correctly on PC."
msgstr ""
+#: editor/import/resource_importer_texture_atlas.cpp
+#, fuzzy
+msgid "Atlas File"
+msgstr "Tamanho do contorno:"
+
+#: editor/import/resource_importer_texture_atlas.cpp
+#, fuzzy
+msgid "Import Mode"
+msgstr "Modo exportação:"
+
+#: editor/import/resource_importer_texture_atlas.cpp
+#, fuzzy
+msgid "Crop To Region"
+msgstr "Definir Região Tile"
+
+#: editor/import/resource_importer_texture_atlas.cpp
+msgid "Trim Alpha Border From Region"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp scene/2d/physics_body_2d.cpp
+#, fuzzy
+msgid "Force"
+msgstr "Forçar Impulso"
+
+#: editor/import/resource_importer_wav.cpp
+msgid "8 Bit"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp main/main.cpp
+#: modules/mono/editor/csharp_project.cpp modules/mono/mono_gd/gd_mono.cpp
+msgid "Mono"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+#, fuzzy
+msgid "Max Rate"
+msgstr "Nó Mix"
+
+#: editor/import/resource_importer_wav.cpp
+#, fuzzy
+msgid "Max Rate Hz"
+msgstr "Nó Mix"
+
+#: editor/import/resource_importer_wav.cpp
+msgid "Trim"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+#, fuzzy
+msgid "Normalize"
+msgstr "Formato"
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+#, fuzzy
+msgid "Loop Mode"
+msgstr "Modo Mover"
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+#, fuzzy
+msgid "Loop Begin"
+msgstr "Modo Mover"
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+#, fuzzy
+msgid "Loop End"
+msgstr "Modo Mover"
+
#: editor/import_defaults_editor.cpp
msgid "Select Importer"
msgstr "Selecionar Importador"
@@ -6874,6 +7363,29 @@ msgid "Failed to load resource."
msgstr "Falha ao carregar recurso."
#: editor/inspector_dock.cpp
+#, fuzzy
+msgid "Property Name Style"
+msgstr "Nome do Projeto:"
+
+#: editor/inspector_dock.cpp scene/gui/color_picker.cpp
+msgid "Raw"
+msgstr "Raw"
+
+#: editor/inspector_dock.cpp
+#, fuzzy
+msgid "Capitalized"
+msgstr "Capitalizar"
+
+#: editor/inspector_dock.cpp
+#, fuzzy
+msgid "Localized"
+msgstr "Localização"
+
+#: editor/inspector_dock.cpp
+msgid "Localization not available for current language."
+msgstr ""
+
+#: editor/inspector_dock.cpp
msgid "Copy Properties"
msgstr "Copiar Propriedades"
@@ -7920,18 +8432,26 @@ msgid "License (Z-A)"
msgstr "Licença (Z-A)"
#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgctxt "Pagination"
msgid "First"
msgstr "Primeiro"
-#: editor/plugins/asset_library_editor_plugin.cpp scene/gui/control.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgctxt "Pagination"
msgid "Previous"
msgstr "Anterior"
-#: editor/plugins/asset_library_editor_plugin.cpp scene/gui/control.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgctxt "Pagination"
msgid "Next"
msgstr "Próximo"
#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgctxt "Pagination"
msgid "Last"
msgstr "Último"
@@ -8179,19 +8699,19 @@ msgstr ""
"Quando ativo, mover nós Control altera as suas ancoras em vez das sua "
"margens."
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Top Left"
msgstr "Topo Esquerda"
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Top Right"
msgstr "Topo Direita"
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Bottom Right"
msgstr "Fundo Direita"
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Bottom Left"
msgstr "Fundo Esquerda"
@@ -8905,6 +9425,19 @@ msgstr "Consolidar Sonda GI"
msgid "Gradient Edited"
msgstr "Gradiente Editado"
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+msgid "Swap GradientTexture2D Fill Points"
+msgstr ""
+
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+msgid "Swap Gradient Fill Points"
+msgstr ""
+
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+#, fuzzy
+msgid "Toggle Grid Snap"
+msgstr "Alternar Modo"
+
#: editor/plugins/item_list_editor_plugin.cpp
msgid "Item %d"
msgstr "Item %d"
@@ -9138,8 +9671,9 @@ msgstr ""
"Atualizar a partir da cena existente?:\n"
"%s"
-#: editor/plugins/mesh_library_editor_plugin.cpp modules/gridmap/grid_map.cpp
-msgid "Mesh Library"
+#: editor/plugins/mesh_library_editor_plugin.cpp
+#, fuzzy
+msgid "MeshLibrary"
msgstr "Bib. de Malhas"
#: editor/plugins/mesh_library_editor_plugin.cpp
@@ -10129,8 +10663,8 @@ msgstr "Conexões ao método:"
msgid "Source"
msgstr "Fonte"
-#: editor/plugins/script_text_editor.cpp scene/3d/interpolated_camera.cpp
-#: scene/animation/skeleton_ik.cpp
+#: editor/plugins/script_text_editor.cpp platform/uwp/export/export.cpp
+#: scene/3d/interpolated_camera.cpp scene/animation/skeleton_ik.cpp
msgid "Target"
msgstr "Alvo"
@@ -11102,7 +11636,9 @@ msgstr "Velocidade:"
#: editor/plugins/sprite_frames_editor_plugin.cpp
#: modules/gltf/gltf_animation.cpp modules/minimp3/audio_stream_mp3.cpp
-#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp scene/2d/path_2d.cpp
+#: modules/minimp3/resource_importer_mp3.cpp
+#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp
+#: modules/stb_vorbis/resource_importer_ogg_vorbis.cpp scene/2d/path_2d.cpp
#: scene/3d/path.cpp scene/resources/animation.cpp scene/resources/material.cpp
msgid "Loop"
msgstr "Ciclo"
@@ -11993,8 +12529,9 @@ msgstr "Bitmask"
msgid "Priority"
msgstr "Prioridade"
-#: editor/plugins/tile_set_editor_plugin.cpp main/main.cpp scene/gui/button.cpp
-#: scene/gui/item_list.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp main/main.cpp
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#: scene/gui/button.cpp scene/gui/item_list.cpp
msgid "Icon"
msgstr "Ãcone"
@@ -13362,10 +13899,6 @@ msgstr ""
"exportação."
#: editor/project_export.cpp
-msgid "Release"
-msgstr "Libertar"
-
-#: editor/project_export.cpp
msgid "Exporting All"
msgstr "A Exportar Tudo"
@@ -15247,6 +15780,7 @@ msgid "Change AudioStreamPlayer3D Emission Angle"
msgstr "Mudar ângulo de emissão de AudioStreamPlayer3D"
#: editor/spatial_editor_gizmos.cpp modules/gltf/gltf_node.cpp
+#: platform/osx/export/export.cpp
msgid "Camera"
msgstr ""
@@ -15530,7 +16064,8 @@ msgstr ""
msgid "Use Nvidia Rect Flicker Workaround"
msgstr ""
-#: main/main.cpp platform/uwp/os_uwp.cpp
+#: main/main.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp platform/uwp/os_uwp.cpp
#, fuzzy
msgid "Display"
msgstr "Mostrar Tudo"
@@ -15591,19 +16126,6 @@ msgstr ""
msgid "Allowed"
msgstr ""
-#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp scene/2d/camera_2d.cpp
-#: scene/2d/light_2d.cpp scene/2d/navigation_polygon.cpp
-#: scene/2d/ray_cast_2d.cpp scene/2d/sprite.cpp scene/2d/y_sort.cpp
-#: scene/3d/audio_stream_player_3d.cpp scene/3d/baked_lightmap.cpp
-#: scene/3d/interpolated_camera.cpp scene/3d/light.cpp
-#: scene/3d/navigation_mesh_instance.cpp scene/3d/ray_cast.cpp
-#: scene/3d/sprite_3d.cpp scene/gui/graph_edit.cpp
-#: scene/gui/rich_text_label.cpp scene/resources/curve.cpp
-#: scene/resources/environment.cpp
-#, fuzzy
-msgid "Enabled"
-msgstr "Ativar"
-
#: main/main.cpp
msgid "Intended Usage"
msgstr ""
@@ -15635,13 +16157,14 @@ msgstr ""
msgid "Handheld"
msgstr ""
-#: main/main.cpp
+#: main/main.cpp platform/javascript/export/export.cpp
+#: platform/uwp/export/export.cpp
#, fuzzy
msgid "Orientation"
msgstr "Documentação Online"
#: main/main.cpp scene/gui/scroll_container.cpp scene/gui/text_edit.cpp
-#: scene/main/scene_tree.cpp
+#: scene/main/scene_tree.cpp scene/register_scene_types.cpp
#, fuzzy
msgid "Common"
msgstr "Comunidade"
@@ -15684,7 +16207,7 @@ msgstr ""
#: main/main.cpp
#, fuzzy
-msgid "Frame Delay (msec)"
+msgid "Frame Delay Msec"
msgstr "Seleção de Frame"
#: main/main.cpp
@@ -15813,11 +16336,6 @@ msgstr ""
msgid "Tooltip Position Offset"
msgstr "Compensação da rotação:"
-#: main/main.cpp modules/mono/editor/csharp_project.cpp
-#: modules/mono/mono_gd/gd_mono.cpp
-msgid "Mono"
-msgstr ""
-
#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp
#, fuzzy
msgid "Debugger Agent"
@@ -16398,7 +16916,7 @@ msgstr "Cores"
msgid "Intensity"
msgstr ""
-#: modules/gltf/gltf_light.cpp scene/2d/light_2d.cpp
+#: modules/gltf/gltf_light.cpp scene/2d/light_2d.cpp scene/3d/light.cpp
#, fuzzy
msgid "Range"
msgstr "Mudar"
@@ -16545,11 +17063,6 @@ msgstr "Com Dados"
msgid "Use Named Skin Binds"
msgstr ""
-#: modules/gltf/gltf_state.cpp scene/3d/physics_joint.cpp
-#, fuzzy
-msgid "Nodes"
-msgstr "Nó"
-
#: modules/gltf/gltf_state.cpp
#, fuzzy
msgid "Buffer Views"
@@ -16561,16 +17074,6 @@ msgstr ""
#: modules/gltf/gltf_state.cpp
#, fuzzy
-msgid "Meshes"
-msgstr "Malha"
-
-#: modules/gltf/gltf_state.cpp
-#, fuzzy
-msgid "Materials"
-msgstr "Mudanças de Material:"
-
-#: modules/gltf/gltf_state.cpp
-#, fuzzy
msgid "Scene Name"
msgstr "Caminho da Cena:"
@@ -16586,15 +17089,11 @@ msgstr "Nome do nó raiz"
msgid "Textures"
msgstr "Funcionalidades"
-#: modules/gltf/gltf_state.cpp
+#: modules/gltf/gltf_state.cpp platform/uwp/export/export.cpp
msgid "Images"
msgstr ""
#: modules/gltf/gltf_state.cpp
-msgid "Skins"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp
msgid "Cameras"
msgstr ""
@@ -16629,11 +17128,15 @@ msgid "Src Image"
msgstr "Mostrar ossos"
#: modules/gridmap/grid_map.cpp
+msgid "Mesh Library"
+msgstr "Bib. de Malhas"
+
+#: modules/gridmap/grid_map.cpp
#, fuzzy
msgid "Physics Material"
msgstr "Frame de Física %"
-#: modules/gridmap/grid_map.cpp
+#: modules/gridmap/grid_map.cpp scene/3d/visual_instance.cpp
#, fuzzy
msgid "Use In Baked Light"
msgstr "Consolidar Lightmaps"
@@ -16665,6 +17168,7 @@ msgstr "Centro"
#: modules/gridmap/grid_map.cpp scene/2d/collision_object_2d.cpp
#: scene/2d/tile_map.cpp scene/3d/collision_object.cpp scene/3d/soft_body.cpp
+#: scene/resources/material.cpp
msgid "Mask"
msgstr ""
@@ -16846,7 +17350,9 @@ msgid "Ultra Quality Ray Count"
msgstr ""
#: modules/minimp3/audio_stream_mp3.cpp
+#: modules/minimp3/resource_importer_mp3.cpp
#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp
+#: modules/stb_vorbis/resource_importer_ogg_vorbis.cpp
#, fuzzy
msgid "Loop Offset"
msgstr "Compensação:"
@@ -17931,6 +18437,193 @@ msgid "The package must have at least one '.' separator."
msgstr "O pacote deve ter pelo menos um separador '.'."
#: platform/android/export/export_plugin.cpp
+msgid "Use Custom Build"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Export Format"
+msgstr "Exportar Caminho"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Keystore"
+msgstr "Depurador"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Debug User"
+msgstr "Depurador"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Debug Password"
+msgstr "Senha"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Release User"
+msgstr "Libertar"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Release Password"
+msgstr "Senha"
+
+#: platform/android/export/export_plugin.cpp
+msgid "One Click Deploy"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Clear Previous Install"
+msgstr "Inspecionar instância anterior"
+
+#: platform/android/export/export_plugin.cpp scene/resources/shader.cpp
+msgid "Code"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Min SDK"
+msgstr "Tamanho do contorno:"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Target SDK"
+msgstr "Alvo"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Package"
+msgstr "Empacotamento"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Unique Name"
+msgstr "Nome do Nó:"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Signed"
+msgstr "Sinal"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Classify As Game"
+msgstr "Nome de Classe:"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Retain Data On Uninstall"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Exclude From Recents"
+msgstr "Apagar Nós"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Graphics"
+msgstr "Compensação da grelha:"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "OpenGL Debug"
+msgstr "Abrir"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "XR Features"
+msgstr "Funcionalidades"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "XR Mode"
+msgstr "Modo deslocamento"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Hand Tracking"
+msgstr "Empacotamento"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Hand Tracking Frequency"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Passthrough"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Immersive Mode"
+msgstr "Modo Prioridade"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Support Small"
+msgstr "Suporte"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Support Normal"
+msgstr "Suporte"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Support Large"
+msgstr "Suporte"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Support Xlarge"
+msgstr "Suporte"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "User Data Backup"
+msgstr "Interface do Utilizador"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Allow"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Command Line"
+msgstr "Comunidade"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Extra Args"
+msgstr "Argumentos de chamada extra:"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "APK Expansion"
+msgstr "Expressão"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Salt"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Public Key"
+msgstr "Caminho da Chave Pública SSH"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Permissions"
+msgstr "Máscara de Emissão"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Custom Permissions"
+msgstr "Executar Cena Personalizada"
+
+#: platform/android/export/export_plugin.cpp
msgid "Select device from the list"
msgstr "Selecionar aparelho da lista"
@@ -18257,6 +18950,178 @@ msgid "The character '%s' is not allowed in Identifier."
msgstr "O carácter \"%s\" não é permitido no Identificador."
#: platform/iphone/export/export.cpp
+msgid "App Store Team ID"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Provisioning Profile UUID Debug"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Code Sign Identity Debug"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Export Method Debug"
+msgstr "Exportar com Depuração"
+
+#: platform/iphone/export/export.cpp
+msgid "Provisioning Profile UUID Release"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Code Sign Identity Release"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Export Method Release"
+msgstr "Modo exportação:"
+
+#: platform/iphone/export/export.cpp
+msgid "Targeted Device Family"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Info"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Identifier"
+msgstr "Identificador Inválido:"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Signature"
+msgstr "Sinal"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Short Version"
+msgstr "Versão"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Copyright"
+msgstr "Topo Direita"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Capabilities"
+msgstr "Colar Propriedades"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Access Wi-Fi"
+msgstr "Sucesso!"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Push Notifications"
+msgstr "Rotação aleatória:"
+
+#: platform/iphone/export/export.cpp scene/3d/baked_lightmap.cpp
+#, fuzzy
+msgid "User Data"
+msgstr "Interface do Utilizador"
+
+#: platform/iphone/export/export.cpp
+msgid "Accessible From Files App"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Accessible From Itunes Sharing"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Privacy"
+msgstr "Caminho da Chave Privada SSH"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Camera Usage Description"
+msgstr "Descrição"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Microphone Usage Description"
+msgstr "Descrições da Propriedade"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Photolibrary Usage Description"
+msgstr "Descrições da Propriedade"
+
+#: platform/iphone/export/export.cpp
+msgid "iPhone 120 X 120"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPhone 180 X 180"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 76 X 76"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 152 X 152"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 167 X 167"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "App Store 1024 X 1024"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Spotlight 40 X 40"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Spotlight 80 X 80"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Storyboard"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Use Launch Screen Storyboard"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Image Scale Mode"
+msgstr "Modo Escalar"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Custom Image @2x"
+msgstr "CustomNode"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Custom Image @3x"
+msgstr "CustomNode"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Use Custom BG Color"
+msgstr "CustomNode"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Custom BG Color"
+msgstr "CustomNode"
+
+#: platform/iphone/export/export.cpp
msgid "App Store Team ID not specified - cannot configure the project."
msgstr ""
"ID da equipa da App Store não especificado - incapaz de configurar o projeto."
@@ -18294,6 +19159,80 @@ msgid "Could not read file:"
msgstr "Incapaz de ler ficheiro:"
#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Variant"
+msgstr "Separação:"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Export Type"
+msgstr "Exportar"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "VRAM Texture Compression"
+msgstr "Expressão"
+
+#: platform/javascript/export/export.cpp
+msgid "For Desktop"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "For Mobile"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Html"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Export Icon"
+msgstr "Expandir Tudo"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Custom Html Shell"
+msgstr "CustomNode"
+
+#: platform/javascript/export/export.cpp
+msgid "Head Include"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Canvas Resize Policy"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Focus Canvas On Start"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Experimental Virtual Keyboard"
+msgstr "Filtrar sinais"
+
+#: platform/javascript/export/export.cpp
+msgid "Progressive Web App"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Offline Page"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 144 X 144"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 180 X 180"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 512 X 512"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
msgid "Could not read HTML shell:"
msgstr "Incapaz de ler shell HTML:"
@@ -18407,6 +19346,202 @@ msgid "Unknown object type."
msgstr ""
#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "App Category"
+msgstr "Categoria:"
+
+#: platform/osx/export/export.cpp
+msgid "High Res"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Location Usage Description"
+msgstr "Descrição"
+
+#: platform/osx/export/export.cpp
+msgid "Address Book Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Calendar Usage Description"
+msgstr "Descrição"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Photos Library Usage Description"
+msgstr "Descrições da Propriedade"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Desktop Folder Usage Description"
+msgstr "Descrições do Método"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Documents Folder Usage Description"
+msgstr "Descrições do Método"
+
+#: platform/osx/export/export.cpp
+msgid "Downloads Folder Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Network Volumes Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Removable Volumes Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#, fuzzy
+msgid "Codesign"
+msgstr "Nó"
+
+#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Identity"
+msgstr "Indentar à esquerda"
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#, fuzzy
+msgid "Timestamp"
+msgstr "Tempo"
+
+#: platform/osx/export/export.cpp
+msgid "Hardened Runtime"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Replace Existing Signature"
+msgstr "Substituir em Ficheiros"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Entitlements"
+msgstr "Bugigangas"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Custom File"
+msgstr "CustomNode"
+
+#: platform/osx/export/export.cpp
+msgid "Allow JIT Code Execution"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Allow Unsigned Executable Memory"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Allow Dyld Environment Variables"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Disable Library Validation"
+msgstr "Desativar Botão"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Audio Input"
+msgstr "Adicionar entrada"
+
+#: platform/osx/export/export.cpp
+msgid "Address Book"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Calendars"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Photos Library"
+msgstr "Exportar Biblioteca"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Apple Events"
+msgstr "Adicionar evento"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Debugging"
+msgstr "Depurar"
+
+#: platform/osx/export/export.cpp
+msgid "App Sandbox"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Network Server"
+msgstr "Analisador de Rede"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Network Client"
+msgstr "Analisador de Rede"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Device Usb"
+msgstr "Aparelho"
+
+#: platform/osx/export/export.cpp
+msgid "Device Bluetooth"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Files Downloads"
+msgstr "Descarrega"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Files Pictures"
+msgstr "Funcionalidades"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Files Music"
+msgstr "Ficheiro"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Files Movies"
+msgstr "Filtrar Tiles"
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#, fuzzy
+msgid "Custom Options"
+msgstr "Opções de Barramento"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Notarization"
+msgstr "Localização"
+
+#: platform/osx/export/export.cpp
+msgid "Apple ID Name"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Apple ID Password"
+msgstr "Senha"
+
+#: platform/osx/export/export.cpp
+msgid "Apple Team ID"
+msgstr ""
+
+#: platform/osx/export/export.cpp
msgid ""
"Note: The notarization process generally takes less than an hour. When the "
"process is completed, you'll receive an email."
@@ -18604,6 +19739,136 @@ msgid "Force Builtin Codesign"
msgstr ""
#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Architecture"
+msgstr "Adicionar uma entrada arquitetura"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Display Name"
+msgstr "Mostrar Tudo"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Short Name"
+msgstr "Nome do Script:"
+
+#: platform/uwp/export/export.cpp
+msgid "Publisher"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Publisher Display Name"
+msgstr "Nome de autor de pacote inválido."
+
+#: platform/uwp/export/export.cpp
+msgid "Product Guid"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Publisher Guid"
+msgstr "Limpar Guias"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Signing"
+msgstr "Sinal"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Certificate"
+msgstr "Vértices:"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Algorithm"
+msgstr "Depurador"
+
+#: platform/uwp/export/export.cpp
+msgid "Major"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Minor"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Build"
+msgstr "Modo Régua"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Revision"
+msgstr "Expressão"
+
+#: platform/uwp/export/export.cpp
+msgid "Landscape"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Portrait"
+msgstr "Inverter Portais"
+
+#: platform/uwp/export/export.cpp
+msgid "Landscape Flipped"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Portrait Flipped"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Store Logo"
+msgstr "Modo Escalar"
+
+#: platform/uwp/export/export.cpp
+msgid "Square 44 X 44 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 71 X 71 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 150 X 150 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 310 X 310 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Wide 310 X 150 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Splash Screen"
+msgstr "Chamadas de Desenho:"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Tiles"
+msgstr "Ficheiro"
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Square 150 X 150"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Wide 310 X 150"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Square 310 X 310"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
msgid "Invalid package short name."
msgstr "Nome curto de pacote inválido."
@@ -18676,15 +19941,52 @@ msgstr ""
#: platform/uwp/export/export.cpp
#, fuzzy
-msgid "Debug Password"
-msgstr "Senha"
+msgid "Debug Algorithm"
+msgstr "Depurador"
-#: platform/uwp/export/export.cpp
+#: platform/windows/export/export.cpp
+msgid "Identity Type"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Timestamp Server URL"
+msgstr ""
+
+#: platform/windows/export/export.cpp
#, fuzzy
-msgid "Debug Algorithm"
+msgid "Digest Algorithm"
msgstr "Depurador"
#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "File Version"
+msgstr "Versão"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Product Version"
+msgstr "GUID do produto inválido."
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Company Name"
+msgstr "Nome do Nó:"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Product Name"
+msgstr "Nome do Projeto:"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "File Description"
+msgstr "Descrição"
+
+#: platform/windows/export/export.cpp
+msgid "Trademarks"
+msgstr ""
+
+#: platform/windows/export/export.cpp
msgid ""
"The rcedit tool must be configured in the Editor Settings (Export > Windows "
"> Rcedit) to change the icon or app information data."
@@ -18759,12 +20061,14 @@ msgstr "Executar"
msgid "Centered"
msgstr "Centro"
-#: scene/2d/animated_sprite.cpp scene/2d/camera_2d.cpp scene/2d/light_2d.cpp
+#: scene/2d/animated_sprite.cpp scene/2d/camera_2d.cpp
+#: scene/2d/cpu_particles_2d.cpp scene/2d/light_2d.cpp
#: scene/2d/parallax_background.cpp scene/2d/parallax_layer.cpp
#: scene/2d/path_2d.cpp scene/2d/polygon_2d.cpp scene/2d/sprite.cpp
-#: scene/3d/path.cpp scene/3d/physics_body.cpp scene/3d/sprite_3d.cpp
-#: scene/gui/graph_node.cpp scene/gui/rich_text_effect.cpp
-#: scene/main/canvas_layer.cpp scene/resources/material.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/path.cpp scene/3d/physics_body.cpp
+#: scene/3d/sprite_3d.cpp scene/gui/graph_node.cpp
+#: scene/gui/rich_text_effect.cpp scene/main/canvas_layer.cpp
+#: scene/resources/material.cpp scene/resources/particles_material.cpp
#: scene/resources/style_box.cpp
#, fuzzy
msgid "Offset"
@@ -18839,11 +20143,6 @@ msgstr "Adicionar barramento de áudio"
msgid "Override"
msgstr "Sobrepõe"
-#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
-#: scene/audio/audio_stream_player.cpp scene/gui/video_player.cpp
-msgid "Stream"
-msgstr ""
-
#: scene/2d/audio_stream_player_2d.cpp scene/audio/audio_stream_player.cpp
#: scene/gui/video_player.cpp servers/audio/effects/audio_effect_amplify.cpp
#, fuzzy
@@ -18870,13 +20169,13 @@ msgid "Stream Paused"
msgstr ""
#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
-#: scene/3d/reflection_probe.cpp scene/3d/visual_instance.cpp
-#: scene/resources/material.cpp
+#: scene/3d/light.cpp scene/3d/reflection_probe.cpp
+#: scene/3d/visual_instance.cpp scene/resources/material.cpp
#, fuzzy
msgid "Max Distance"
msgstr "Distância de escolha:"
-#: scene/2d/audio_stream_player_2d.cpp
+#: scene/2d/audio_stream_player_2d.cpp scene/3d/light.cpp
#, fuzzy
msgid "Attenuation"
msgstr "Animação"
@@ -18932,6 +20231,24 @@ msgstr "Modo Mover"
msgid "Limit"
msgstr ""
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/style_box.cpp
+#, fuzzy
+msgid "Left"
+msgstr "Topo Esquerda"
+
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/style_box.cpp
+#, fuzzy
+msgid "Right"
+msgstr "Luz"
+
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/dynamic_font.cpp scene/resources/style_box.cpp
+#, fuzzy
+msgid "Bottom"
+msgstr "Fundo Esquerda"
+
#: scene/2d/camera_2d.cpp
#, fuzzy
msgid "Smoothed"
@@ -19173,13 +20490,6 @@ msgstr ""
msgid "Emitting"
msgstr "Configuração:"
-#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp scene/3d/area.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
-#: scene/resources/environment.cpp
-#, fuzzy
-msgid "Amount"
-msgstr "Valor:"
-
#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp
#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
msgid "Lifetime"
@@ -19244,18 +20554,13 @@ msgstr ""
#: scene/2d/mesh_instance_2d.cpp scene/2d/multimesh_instance_2d.cpp
#: scene/2d/particles_2d.cpp scene/2d/polygon_2d.cpp scene/2d/sprite.cpp
#: scene/3d/sprite_3d.cpp scene/gui/nine_patch_rect.cpp
-#: scene/gui/texture_rect.cpp scene/resources/sky.cpp
-#: scene/resources/style_box.cpp scene/resources/visual_shader_nodes.cpp
+#: scene/gui/texture_rect.cpp scene/resources/material.cpp
+#: scene/resources/sky.cpp scene/resources/style_box.cpp
+#: scene/resources/visual_shader_nodes.cpp
#, fuzzy
msgid "Texture"
msgstr "Texto"
-#: scene/2d/cpu_particles_2d.cpp scene/2d/mesh_instance_2d.cpp
-#: scene/2d/multimesh_instance_2d.cpp scene/2d/particles_2d.cpp
-#: scene/2d/sprite.cpp scene/resources/style_box.cpp
-msgid "Normal Map"
-msgstr ""
-
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
#, fuzzy
@@ -19279,10 +20584,10 @@ msgid "Normals"
msgstr "Formato"
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/3d/sprite_3d.cpp scene/resources/material.cpp
-#: scene/resources/particles_material.cpp scene/resources/texture.cpp
-msgid "Flags"
-msgstr ""
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Align Y"
+msgstr "Atribuir"
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
@@ -19303,6 +20608,12 @@ msgid "Initial Velocity"
msgstr "Inicializar"
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Velocity Random"
+msgstr "Vista Órbita Direita"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp servers/physics_2d_server.cpp
#: servers/physics_server.cpp
msgid "Angular Velocity"
@@ -19311,6 +20622,12 @@ msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
#, fuzzy
+msgid "Velocity Curve"
+msgstr "Vista Órbita Direita"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
msgid "Orbit Velocity"
msgstr "Vista Órbita Direita"
@@ -19322,6 +20639,23 @@ msgstr "Linear"
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Accel"
+msgstr "Sucesso!"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Accel Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Accel Curve"
+msgstr "Dividir Curva"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
msgid "Radial Accel"
msgstr ""
@@ -19331,19 +20665,55 @@ msgid "Tangential Accel"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/2d/joints_2d.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/vehicle_body.cpp
-#: scene/resources/particles_material.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/physics_joint.cpp
+#: scene/3d/vehicle_body.cpp scene/resources/particles_material.cpp
#: servers/audio/effects/audio_effect_reverb.cpp
msgid "Damping"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+msgid "Damping Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Damping Curve"
+msgstr "Dividir Curva"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp scene/3d/light.cpp
+#: scene/resources/particles_material.cpp
msgid "Angle"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+msgid "Angle Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Angle Curve"
+msgstr "Fechar curva"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#, fuzzy
+msgid "Scale Amount"
+msgstr "Valor:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+msgid "Scale Amount Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#, fuzzy
+msgid "Scale Amount Curve"
+msgstr "Escalar Partir do Cursor"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
#, fuzzy
msgid "Color Ramp"
msgstr "Cores"
@@ -19359,6 +20729,48 @@ msgstr ""
msgid "Hue Variation"
msgstr "Separação:"
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Variation"
+msgstr "Separação:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Variation Random"
+msgstr "Separação:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Variation Curve"
+msgstr "Separação:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Speed Random"
+msgstr "Escala"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Speed Curve"
+msgstr "Dividir Curva"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Offset Random"
+msgstr "Compensação:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Offset Curve"
+msgstr "Fechar curva"
+
#: scene/2d/joints_2d.cpp
msgid "Node A and Node B must be PhysicsBody2Ds"
msgstr "Nó A e Nó B têm de ser PhysicsBody2Ds"
@@ -19390,6 +20802,7 @@ msgid "Node B"
msgstr "Nó"
#: scene/2d/joints_2d.cpp scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp
+#: scene/3d/light.cpp scene/3d/physics_joint.cpp
#: scene/resources/environment.cpp
msgid "Bias"
msgstr ""
@@ -19399,7 +20812,7 @@ msgstr ""
msgid "Disable Collision"
msgstr "Desativar Botão"
-#: scene/2d/joints_2d.cpp
+#: scene/2d/joints_2d.cpp scene/3d/physics_joint.cpp
msgid "Softness"
msgstr ""
@@ -19417,7 +20830,7 @@ msgstr "Inicializar"
msgid "Rest Length"
msgstr ""
-#: scene/2d/joints_2d.cpp scene/3d/vehicle_body.cpp
+#: scene/2d/joints_2d.cpp scene/3d/physics_joint.cpp scene/3d/vehicle_body.cpp
msgid "Stiffness"
msgstr ""
@@ -19440,7 +20853,7 @@ msgid "Texture Scale"
msgstr "TextureRegion"
#: scene/2d/light_2d.cpp scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp
-#: scene/resources/environment.cpp scene/resources/sky.cpp
+#: scene/3d/light.cpp scene/resources/environment.cpp scene/resources/sky.cpp
msgid "Energy"
msgstr ""
@@ -19481,12 +20894,6 @@ msgstr "Vista de Trás"
msgid "Gradient Length"
msgstr "Gradiente Editado"
-#: scene/2d/light_2d.cpp scene/gui/control.cpp
-#: scene/resources/navigation_mesh.cpp
-#, fuzzy
-msgid "Filter"
-msgstr "Filtros:"
-
#: scene/2d/light_2d.cpp
#, fuzzy
msgid "Filter Smooth"
@@ -19933,11 +21340,6 @@ msgid "Applied Forces"
msgstr ""
#: scene/2d/physics_body_2d.cpp
-#, fuzzy
-msgid "Force"
-msgstr "Forçar Impulso"
-
-#: scene/2d/physics_body_2d.cpp
msgid "Torque"
msgstr ""
@@ -19953,7 +21355,7 @@ msgstr " (Físico)"
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
#, fuzzy
-msgid "Moving platform"
+msgid "Moving Platform"
msgstr "A mover saída"
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
@@ -19962,7 +21364,7 @@ msgstr ""
#: scene/2d/physics_body_2d.cpp scene/2d/touch_screen_button.cpp
#: scene/3d/physics_body.cpp scene/gui/texture_button.cpp
-#: scene/resources/line_shape_2d.cpp
+#: scene/resources/line_shape_2d.cpp scene/resources/material.cpp
#, fuzzy
msgid "Normal"
msgstr "Formato"
@@ -20207,6 +21609,34 @@ msgstr ""
"VisibilityEnabler2D funciona melhor quando usado diretamente como progenitor "
"na cena raiz editada."
+#: scene/2d/visibility_notifier_2d.cpp scene/3d/visibility_notifier.cpp
+#, fuzzy
+msgid "Pause Animations"
+msgstr "Colar Animação"
+
+#: scene/2d/visibility_notifier_2d.cpp scene/3d/visibility_notifier.cpp
+msgid "Freeze Bodies"
+msgstr ""
+
+#: scene/2d/visibility_notifier_2d.cpp
+#, fuzzy
+msgid "Pause Particles"
+msgstr "Partículas"
+
+#: scene/2d/visibility_notifier_2d.cpp
+#, fuzzy
+msgid "Pause Animated Sprites"
+msgstr "Colar Animação"
+
+#: scene/2d/visibility_notifier_2d.cpp
+#, fuzzy
+msgid "Process Parent"
+msgstr "Ativar Prioridade"
+
+#: scene/2d/visibility_notifier_2d.cpp
+msgid "Physics Process Parent"
+msgstr ""
+
#: scene/3d/area.cpp
msgid "Reverb Bus"
msgstr ""
@@ -20307,6 +21737,7 @@ msgid "Attenuation Filter"
msgstr ""
#: scene/3d/audio_stream_player_3d.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
#: servers/audio/effects/audio_effect_filter.cpp
msgid "Cutoff Hz"
msgstr ""
@@ -20351,11 +21782,6 @@ msgid "Octree"
msgstr "Sub-árvore"
#: scene/3d/baked_lightmap.cpp
-#, fuzzy
-msgid "User Data"
-msgstr "Interface do Utilizador"
-
-#: scene/3d/baked_lightmap.cpp
msgid "Finding meshes and lights"
msgstr "A procurar malhas e luzes"
@@ -20627,6 +22053,16 @@ msgid "Ring Axis"
msgstr "Avisos"
#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Rotate Y"
+msgstr "Rodar"
+
+#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Disable Z"
+msgstr "Item Desativado"
+
+#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
msgid "Flatness"
msgstr ""
@@ -20667,16 +22103,11 @@ msgstr "Biblioteca Dinâmica"
msgid "Dynamic Range"
msgstr "Biblioteca Dinâmica"
-#: scene/3d/gi_probe.cpp
+#: scene/3d/gi_probe.cpp scene/3d/light.cpp
msgid "Normal Bias"
msgstr ""
#: scene/3d/gi_probe.cpp
-#, fuzzy
-msgid "Compress"
-msgstr "Componentes"
-
-#: scene/3d/gi_probe.cpp
msgid "Plotting Meshes"
msgstr "A Traçar Malhas"
@@ -20708,16 +22139,31 @@ msgstr ""
#: scene/3d/light.cpp
#, fuzzy
+msgid "Indirect Energy"
+msgstr "Cores de Emissão"
+
+#: scene/3d/light.cpp
+#, fuzzy
msgid "Negative"
msgstr "GDNative"
#: scene/3d/light.cpp
#, fuzzy
+msgid "Specular"
+msgstr "Modo Régua"
+
+#: scene/3d/light.cpp
+#, fuzzy
msgid "Bake Mode"
msgstr "Modo Bitmask"
#: scene/3d/light.cpp
#, fuzzy
+msgid "Contact"
+msgstr "Escolher cor"
+
+#: scene/3d/light.cpp
+#, fuzzy
msgid "Reverse Cull Face"
msgstr "Repor Volume do Barramento"
@@ -20728,11 +22174,31 @@ msgstr "Direções"
#: scene/3d/light.cpp
#, fuzzy
+msgid "Split 1"
+msgstr "Separar"
+
+#: scene/3d/light.cpp
+#, fuzzy
+msgid "Split 2"
+msgstr "Separar"
+
+#: scene/3d/light.cpp
+#, fuzzy
+msgid "Split 3"
+msgstr "Separar"
+
+#: scene/3d/light.cpp
+#, fuzzy
msgid "Blend Splits"
msgstr "Tempos de Mistura:"
#: scene/3d/light.cpp
#, fuzzy
+msgid "Bias Split Scale"
+msgstr "Usar Ajuste de Escala"
+
+#: scene/3d/light.cpp
+#, fuzzy
msgid "Depth Range"
msgstr "Profundidade"
@@ -20758,6 +22224,11 @@ msgstr "Uma SpotLight com ângulo superior a 90 graus não cria sombras."
msgid "Spot"
msgstr ""
+#: scene/3d/light.cpp
+#, fuzzy
+msgid "Angle Attenuation"
+msgstr "Animação"
+
#: scene/3d/mesh_instance.cpp
msgid "Software Skinning"
msgstr ""
@@ -20905,6 +22376,63 @@ msgstr "Eixo"
#: scene/3d/physics_body.cpp
#, fuzzy
+msgid "Linear X"
+msgstr "Linear"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Linear Y"
+msgstr "Linear"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Linear Z"
+msgstr "Linear"
+
+#: scene/3d/physics_body.cpp
+msgid "Angular X"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Angular Y"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Angular Z"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Motion X"
+msgstr "Ação"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Motion Y"
+msgstr "Ação"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Motion Z"
+msgstr "Ação"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Move Lock X"
+msgstr "Mover Nó"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Move Lock Y"
+msgstr "Mover Nó"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Move Lock Z"
+msgstr "Mover Nó"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
msgid "Body Offset"
msgstr "Compensação:"
@@ -20938,6 +22466,15 @@ msgid "Exclude Nodes"
msgstr "Apagar Nós"
#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Params"
+msgstr "Parâmetro Alterado:"
+
+#: scene/3d/physics_joint.cpp
+msgid "Impulse Clamp"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit"
msgstr ""
@@ -20951,6 +22488,55 @@ msgstr "Maiúsculas"
msgid "Lower"
msgstr "Minúsculas"
+#: scene/3d/physics_joint.cpp scene/3d/vehicle_body.cpp
+#, fuzzy
+msgid "Relaxation"
+msgstr "Separação:"
+
+#: scene/3d/physics_joint.cpp
+msgid "Motor"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Target Velocity"
+msgstr "Vista Órbita Direita"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Max Impulse"
+msgstr "Velocidade:"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit"
+msgstr "Linear"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Upper Distance"
+msgstr "Distância de escolha:"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Lower Distance"
+msgstr "Distância de escolha:"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Restitution"
+msgstr "Descrição"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motion"
+msgstr "Inicializar"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Ortho"
+msgstr "Ortogonal Traseira"
+
#: scene/3d/physics_joint.cpp
#, fuzzy
msgid "Upper Angle"
@@ -20963,6 +22549,16 @@ msgstr "Minúsculas"
#: scene/3d/physics_joint.cpp
#, fuzzy
+msgid "Angular Motion"
+msgstr "Animação"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Angular Ortho"
+msgstr "Máximo de Erros Angulares:"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
msgid "Swing Span"
msgstr "A guardar Cena"
@@ -20971,17 +22567,99 @@ msgid "Twist Span"
msgstr ""
#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit X"
+msgstr "Linear"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motor X"
+msgstr "Inicializar"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Force Limit"
+msgstr "Chamadas de Desenho:"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Spring X"
+msgstr "Linear"
+
+#: scene/3d/physics_joint.cpp
+msgid "Equilibrium Point"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit X"
msgstr ""
#: scene/3d/physics_joint.cpp
+msgid "Erp"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Motor X"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Spring X"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit Y"
+msgstr "Linear"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motor Y"
+msgstr "Inicializar"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Spring Y"
+msgstr "Linear"
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit Y"
msgstr ""
#: scene/3d/physics_joint.cpp
+msgid "Angular Motor Y"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Spring Y"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit Z"
+msgstr "Linear"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motor Z"
+msgstr "Inicializar"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Spring Z"
+msgstr "Linear"
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit Z"
msgstr ""
+#: scene/3d/physics_joint.cpp
+msgid "Angular Motor Z"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Spring Z"
+msgstr ""
+
#: scene/3d/portal.cpp
msgid "The RoomManager should not be a child or grandchild of a Portal."
msgstr "O RoomManager não deve ser filho ou neto de um Portal."
@@ -21103,7 +22781,7 @@ msgstr ""
msgid "Use Default Simplify"
msgstr ""
-#: scene/3d/room.cpp
+#: scene/3d/room.cpp scene/3d/room_manager.cpp
msgid "Room Simplify"
msgstr ""
@@ -21144,6 +22822,13 @@ msgstr "Só deve existir um RoomManager na SceneTree."
msgid "Main"
msgstr ""
+#: scene/3d/room_manager.cpp scene/animation/animation_player.cpp
+#: scene/animation/animation_tree.cpp scene/animation/animation_tree_player.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+#, fuzzy
+msgid "Active"
+msgstr "Ação"
+
#: scene/3d/room_manager.cpp
msgid "Roomlist"
msgstr ""
@@ -21168,6 +22853,54 @@ msgid "Gameplay"
msgstr ""
#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Gameplay Monitor"
+msgstr "Monitor"
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Use Secondary PVS"
+msgstr "Usar Ajuste de Escala"
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Merge Meshes"
+msgstr "Malha"
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Show Margins"
+msgstr "Mostrar Origem"
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Debug Sprawl"
+msgstr "Depurar"
+
+#: scene/3d/room_manager.cpp
+msgid "Overlap Warning Threshold"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Preview Camera"
+msgstr "Pré-visualização"
+
+#: scene/3d/room_manager.cpp
+msgid "Portal Depth Limit"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Default Portal Margin"
+msgstr "Definir Margem"
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Roaming Expansion Margin"
+msgstr "Expandir Tudo"
+
+#: scene/3d/room_manager.cpp
msgid ""
"RoomList path is invalid.\n"
"Please check the RoomList branch has been assigned in the RoomManager."
@@ -21308,6 +23041,20 @@ msgstr "Ajuste de Pixel"
msgid "Billboard"
msgstr ""
+#: scene/3d/sprite_3d.cpp scene/resources/material.cpp
+#, fuzzy
+msgid "Transparent"
+msgstr "Transpor"
+
+#: scene/3d/sprite_3d.cpp
+#, fuzzy
+msgid "Shaded"
+msgstr "Shader"
+
+#: scene/3d/sprite_3d.cpp
+msgid "Double Sided"
+msgstr ""
+
#: scene/3d/sprite_3d.cpp
msgid "Alpha Cut"
msgstr ""
@@ -21383,11 +23130,6 @@ msgstr "Expressão"
msgid "Max Force"
msgstr "Erro"
-#: scene/3d/vehicle_body.cpp
-#, fuzzy
-msgid "Relaxation"
-msgstr "Separação:"
-
#: scene/3d/visibility_notifier.cpp
msgid "AABB"
msgstr ""
@@ -21531,7 +23273,7 @@ msgstr "Tempo X-Fade (s):"
#: scene/animation/animation_blend_tree.cpp
#, fuzzy
-msgid "autorestart_"
+msgid "Auto Restart"
msgstr "Reinício automático:"
#: scene/animation/animation_blend_tree.cpp
@@ -21617,13 +23359,6 @@ msgstr "Opções da Classe:"
msgid "Default Blend Time"
msgstr "Tema Predefinido"
-#: scene/animation/animation_player.cpp scene/animation/animation_tree.cpp
-#: scene/animation/animation_tree_player.cpp
-#: servers/audio/effects/audio_effect_delay.cpp
-#, fuzzy
-msgid "Active"
-msgstr "Ação"
-
#: scene/animation/animation_player.cpp
msgid "Method Call Mode"
msgstr ""
@@ -21749,10 +23484,6 @@ msgstr "Reassociar Nó"
msgid "Max Iterations"
msgstr "Criar Função"
-#: scene/animation/tween.cpp scene/resources/texture.cpp
-msgid "Repeat"
-msgstr ""
-
#: scene/animation/tween.cpp
msgid "Playback Process Mode"
msgstr ""
@@ -21783,20 +23514,6 @@ msgstr "Modo Seleção"
msgid "Alignment"
msgstr ""
-#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
-#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
-#: scene/resources/style_box.cpp
-#, fuzzy
-msgid "Horizontal"
-msgstr "Horizontal:"
-
-#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
-#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
-#: scene/resources/style_box.cpp
-#, fuzzy
-msgid "Vertical"
-msgstr "Vertical:"
-
#: scene/gui/base_button.cpp
#, fuzzy
msgid "Shortcut In Tooltip"
@@ -21899,10 +23616,6 @@ msgid "HSV"
msgstr "HSV"
#: scene/gui/color_picker.cpp
-msgid "Raw"
-msgstr "Raw"
-
-#: scene/gui/color_picker.cpp
msgid "Switch between hexadecimal and code values."
msgstr "Alternar valores entre hexadecimal e código."
@@ -21969,6 +23682,31 @@ msgid "Focus"
msgstr "Caminho de Foco"
#: scene/gui/control.cpp
+msgid "Neighbour Left"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Neighbour Top"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Neighbour Right"
+msgstr ""
+
+#: scene/gui/control.cpp
+#, fuzzy
+msgid "Neighbour Bottom"
+msgstr "Centro Fundo"
+
+#: scene/gui/control.cpp
+msgid "Next"
+msgstr "Próximo"
+
+#: scene/gui/control.cpp
+msgid "Previous"
+msgstr "Anterior"
+
+#: scene/gui/control.cpp
msgid "Mouse"
msgstr ""
@@ -22006,7 +23744,7 @@ msgid "Dialog"
msgstr "Diálogo XForm"
#: scene/gui/dialogs.cpp
-msgid "Hide On Ok"
+msgid "Hide On OK"
msgstr ""
#: scene/gui/dialogs.cpp scene/gui/label.cpp
@@ -22105,7 +23843,7 @@ msgid "Timers"
msgstr "Tempo"
#: scene/gui/item_list.cpp scene/gui/popup_menu.cpp scene/gui/tree.cpp
-msgid "Incremental Search Max Interval (msec)"
+msgid "Incremental Search Max Interval Msec"
msgstr ""
#: scene/gui/item_list.cpp scene/gui/tree.cpp
@@ -22691,6 +24429,26 @@ msgstr "Centro Esquerda"
msgid "Nine Patch Stretch"
msgstr "Modo de Interpolação"
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Left"
+msgstr "Definir Margem"
+
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Top"
+msgstr "Definir Margem"
+
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Right"
+msgstr "Definir Margem"
+
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Bottom"
+msgstr "Modo Seleção"
+
#: scene/gui/tree.cpp
msgid "Custom Minimum Height"
msgstr ""
@@ -22728,8 +24486,9 @@ msgid "Paused"
msgstr ""
#: scene/gui/video_player.cpp
-msgid "Buffering (msec)"
-msgstr ""
+#, fuzzy
+msgid "Buffering Msec"
+msgstr "Vista de Trás"
#: scene/gui/video_player.cpp
#, fuzzy
@@ -23091,6 +24850,22 @@ msgid "Shadow Atlas"
msgstr "Novo Atlas"
#: scene/main/viewport.cpp
+msgid "Quad 0"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 1"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 2"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 3"
+msgstr ""
+
+#: scene/main/viewport.cpp
#, fuzzy
msgid "Canvas Transform"
msgstr "Limpar Transformação"
@@ -23105,6 +24880,11 @@ msgid "Tooltip Delay (sec)"
msgstr ""
#: scene/register_scene_types.cpp
+#, fuzzy
+msgid "Swap OK Cancel"
+msgstr "Cancelar"
+
+#: scene/register_scene_types.cpp
msgid "Use hiDPI"
msgstr ""
@@ -23119,21 +24899,6 @@ msgid "Custom Font"
msgstr "CustomNode"
#: scene/resources/audio_stream_sample.cpp
-#, fuzzy
-msgid "Loop Mode"
-msgstr "Modo Mover"
-
-#: scene/resources/audio_stream_sample.cpp
-#, fuzzy
-msgid "Loop Begin"
-msgstr "Modo Mover"
-
-#: scene/resources/audio_stream_sample.cpp
-#, fuzzy
-msgid "Loop End"
-msgstr "Modo Mover"
-
-#: scene/resources/audio_stream_sample.cpp
#: servers/audio/effects/audio_stream_generator.cpp servers/audio_server.cpp
#, fuzzy
msgid "Mix Rate"
@@ -23193,6 +24958,17 @@ msgstr "Opções Extra:"
#: scene/resources/dynamic_font.cpp
#, fuzzy
+msgid "Char"
+msgstr "Caracteres válidos:"
+
+#: scene/resources/dynamic_font.cpp scene/resources/world.cpp
+#: scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Space"
+msgstr "Cena Principal"
+
+#: scene/resources/dynamic_font.cpp
+#, fuzzy
msgid "Font"
msgstr "Fontes"
@@ -23420,6 +25196,43 @@ msgid "Glow"
msgstr ""
#: scene/resources/environment.cpp
+#, fuzzy
+msgid "Levels"
+msgstr "Desenvolvedores"
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "1"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "2"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "3"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "4"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "5"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "6"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "7"
+msgstr ""
+
+#: scene/resources/environment.cpp
msgid "Bloom"
msgstr ""
@@ -23512,10 +25325,68 @@ msgid "Next Pass"
msgstr "Plano Seguinte"
#: scene/resources/material.cpp
+msgid "Use Shadow To Opacity"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Unshaded"
+msgstr "Vista sem sombras"
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Vertex Lighting"
+msgstr "Iluminação direta"
+
+#: scene/resources/material.cpp
+msgid "No Depth Test"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Use Point Size"
+msgstr "Vista de Frente"
+
+#: scene/resources/material.cpp
+msgid "World Triplanar"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Fixed Size"
+msgstr "Vista de Frente"
+
+#: scene/resources/material.cpp
+msgid "Albedo Tex Force sRGB"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Do Not Receive Shadows"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Disable Ambient Light"
+msgstr "Indentar à direita"
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Ensure Correct Normals"
+msgstr "Transformação Abortada."
+
+#: scene/resources/material.cpp
#, fuzzy
msgid "Vertex Color"
msgstr "Vértice"
+#: scene/resources/material.cpp
+msgid "Use As Albedo"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Is sRGB"
+msgstr ""
+
#: scene/resources/material.cpp servers/visual_server.cpp
#, fuzzy
msgid "Parameters"
@@ -23552,6 +25423,11 @@ msgid "Billboard Mode"
msgstr "Modo Régua"
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Billboard Keep Scale"
+msgstr "Modo Régua"
+
+#: scene/resources/material.cpp
msgid "Grow"
msgstr ""
@@ -23561,6 +25437,10 @@ msgid "Grow Amount"
msgstr "Valor:"
#: scene/resources/material.cpp
+msgid "Use Alpha Scissor"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Alpha Scissor Threshold"
msgstr ""
@@ -23592,10 +25472,20 @@ msgid "Metallic Specular"
msgstr ""
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Metallic Texture"
+msgstr "Fonte de emissão: "
+
+#: scene/resources/material.cpp
msgid "Metallic Texture Channel"
msgstr ""
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Roughness Texture"
+msgstr "Remover Textura"
+
+#: scene/resources/material.cpp
msgid "Roughness Texture Channel"
msgstr ""
@@ -23615,6 +25505,16 @@ msgid "Emission Operator"
msgstr "Cores de Emissão"
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Emission On UV2"
+msgstr "Máscara de Emissão"
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Emission Texture"
+msgstr "Fonte de emissão: "
+
+#: scene/resources/material.cpp
msgid "NormalMap"
msgstr ""
@@ -23629,6 +25529,11 @@ msgstr "Inclinação aleatória:"
#: scene/resources/material.cpp
#, fuzzy
+msgid "Rim Texture"
+msgstr "Remover Textura"
+
+#: scene/resources/material.cpp
+#, fuzzy
msgid "Clearcoat"
msgstr "Limpar"
@@ -23638,15 +25543,28 @@ msgid "Clearcoat Gloss"
msgstr "Limpar Pose"
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Clearcoat Texture"
+msgstr "Editor de Tema"
+
+#: scene/resources/material.cpp
msgid "Anisotropy"
msgstr ""
#: scene/resources/material.cpp
+msgid "Anisotropy Flowmap"
+msgstr ""
+
+#: scene/resources/material.cpp
#, fuzzy
msgid "Ambient Occlusion"
msgstr "Oclusão"
#: scene/resources/material.cpp
+msgid "On UV2"
+msgstr ""
+
+#: scene/resources/material.cpp
#, fuzzy
msgid "Texture Channel"
msgstr "TextureRegion"
@@ -23685,6 +25603,11 @@ msgstr "Transição: "
#: scene/resources/material.cpp
#, fuzzy
+msgid "Transmission Texture"
+msgstr "Transição: "
+
+#: scene/resources/material.cpp
+#, fuzzy
msgid "Refraction"
msgstr "Separação:"
@@ -23703,6 +25626,10 @@ msgid "UV1"
msgstr "UV"
#: scene/resources/material.cpp
+msgid "Triplanar"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Triplanar Sharpness"
msgstr ""
@@ -23914,6 +25841,16 @@ msgstr "Editor de Tema"
msgid "Point Count"
msgstr "Adicionar Porta de Entrada"
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Scale Random"
+msgstr "Proporção de Escala:"
+
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Scale Curve"
+msgstr "Fechar curva"
+
#: scene/resources/physics_material.cpp
msgid "Rough"
msgstr ""
@@ -23976,10 +25913,6 @@ msgid "A"
msgstr ""
#: scene/resources/shader.cpp
-msgid "Code"
-msgstr ""
-
-#: scene/resources/shader.cpp
#, fuzzy
msgid "Custom Defines"
msgstr "Executar Cena Personalizada"
@@ -24076,15 +26009,6 @@ msgstr ""
#: scene/resources/texture.cpp
#, fuzzy
-msgid "Storage"
-msgstr "Armazenar o Ficheiro:"
-
-#: scene/resources/texture.cpp
-msgid "Lossy Quality"
-msgstr ""
-
-#: scene/resources/texture.cpp
-#, fuzzy
msgid "Load Path"
msgstr "Carregar Predefinição"
@@ -24215,11 +26139,6 @@ msgstr "Função de comparação inválida para este tipo."
msgid "Fallback Environment"
msgstr "Ver ambiente"
-#: scene/resources/world.cpp scene/resources/world_2d.cpp
-#, fuzzy
-msgid "Space"
-msgstr "Cena Principal"
-
#: scene/resources/world.cpp
#, fuzzy
msgid "Scenario"
@@ -24300,10 +26219,37 @@ msgstr ""
msgid "Wet"
msgstr ""
-#: servers/audio/effects/audio_effect_compressor.cpp
-msgid "Threshold"
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "Voice"
msgstr ""
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+msgid "Delay (ms)"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_phaser.cpp
+msgid "Rate Hz"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#, fuzzy
+msgid "Depth (ms)"
+msgstr "Profundidade"
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+msgid "Level dB"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+#: servers/audio/effects/audio_effect_panner.cpp
+#, fuzzy
+msgid "Pan"
+msgstr "Plano:"
+
#: servers/audio/effects/audio_effect_compressor.cpp
#: servers/audio/effects/audio_effect_filter.cpp
msgid "Gain"
@@ -24327,20 +26273,6 @@ msgid "Tap 1"
msgstr ""
#: servers/audio/effects/audio_effect_delay.cpp
-msgid "Delay (ms)"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_delay.cpp
-msgid "Level dB"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_delay.cpp
-#: servers/audio/effects/audio_effect_panner.cpp
-#, fuzzy
-msgid "Pan"
-msgstr "Plano:"
-
-#: servers/audio/effects/audio_effect_delay.cpp
msgid "Tap 2"
msgstr ""
@@ -24402,10 +26334,6 @@ msgstr ""
msgid "Range Max Hz"
msgstr ""
-#: servers/audio/effects/audio_effect_phaser.cpp
-msgid "Rate Hz"
-msgstr ""
-
#: servers/audio/effects/audio_effect_pitch_shift.cpp
msgid "Oversampling"
msgstr ""
@@ -24421,7 +26349,7 @@ msgid "Predelay"
msgstr ""
#: servers/audio/effects/audio_effect_reverb.cpp
-msgid "(msec)"
+msgid "Msec"
msgstr ""
#: servers/audio/effects/audio_effect_reverb.cpp
diff --git a/editor/translations/pt_BR.po b/editor/translations/pt_BR.po
index e9a2408eae..eb5c344f25 100644
--- a/editor/translations/pt_BR.po
+++ b/editor/translations/pt_BR.po
@@ -116,7 +116,7 @@
# Gabriel Silveira <gabomfim99@gmail.com>, 2021.
# Arthur Phillip D. Silva <artphil.dev@gmail.com>, 2021.
# Gustavo HM 102 <gustavohm102@gmail.com>, 2021.
-# Douglas Leão <djlsplays@gmail.com>, 2021.
+# Douglas Leão <djlsplays@gmail.com>, 2021, 2022.
# PauloFRs <paulofr1@hotmail.com>, 2021, 2022.
# Diego Bloise <diego-dev@outlook.com>, 2021.
# Alkoarism <Alkoarism@gmail.com>, 2021.
@@ -134,13 +134,14 @@
# Felipe SiFa <felipe@logus.digital>, 2022.
# Gabriel Gian <gabrielgian@live.com>, 2022.
# waleson azevedo pessoa de melo <walesonmelo23@gmail.com>, 2022.
+# atomic <celobl12@gmail.com>, 2022.
msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
"Report-Msgid-Bugs-To: https://github.com/godotengine/godot\n"
"POT-Creation-Date: 2016-05-30\n"
-"PO-Revision-Date: 2022-03-09 08:53+0000\n"
-"Last-Translator: Guilherme Felipe C G Silva <guilhermefelipecgs@gmail.com>\n"
+"PO-Revision-Date: 2022-03-28 23:08+0000\n"
+"Last-Translator: Douglas Leão <djlsplays@gmail.com>\n"
"Language-Team: Portuguese (Brazil) <https://hosted.weblate.org/projects/"
"godot-engine/godot/pt_BR/>\n"
"Language: pt_BR\n"
@@ -150,175 +151,153 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=n > 1;\n"
"X-Generator: Weblate 4.12-dev\n"
-#: core/bind/core_bind.cpp
+#: core/bind/core_bind.cpp main/main.cpp
msgid "Tablet Driver"
-msgstr ""
+msgstr "Driver do Tablet"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Clipboard"
-msgstr "Ãrea de transferência vazia!"
+msgstr "Ãrea de transferência"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Current Screen"
-msgstr "Cena Atual"
+msgstr "Tela Atual"
#: core/bind/core_bind.cpp
msgid "Exit Code"
-msgstr ""
+msgstr "Código de Saída"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "V-Sync Enabled"
-msgstr "Habilitar"
+msgstr "V-Sync Habilitado"
#: core/bind/core_bind.cpp main/main.cpp
msgid "V-Sync Via Compositor"
-msgstr ""
+msgstr "V-Sync Via Compositor"
#: core/bind/core_bind.cpp main/main.cpp
msgid "Delta Smoothing"
-msgstr ""
+msgstr "Suavização Delta"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Low Processor Usage Mode"
-msgstr "Modo de Movimentação"
+msgstr "Modo de Baixo Uso de Processador"
#: core/bind/core_bind.cpp
msgid "Low Processor Usage Mode Sleep (µsec)"
-msgstr ""
+msgstr "Modo de Baixo Uso de Processador (µsec)"
#: core/bind/core_bind.cpp main/main.cpp platform/uwp/os_uwp.cpp
-#, fuzzy
msgid "Keep Screen On"
-msgstr "Manter Depurador Aberto"
+msgstr "Manter a Tela Ligada"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Min Window Size"
-msgstr "Tamanho do Contorno:"
+msgstr "Tamanho Mínimo da Janela"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Max Window Size"
-msgstr "Tamanho do Contorno:"
+msgstr "Tamanho Máximo da Janela"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Screen Orientation"
-msgstr "Operador de tela."
+msgstr "Orientação da Tela"
#: core/bind/core_bind.cpp main/main.cpp platform/uwp/os_uwp.cpp
-#, fuzzy
msgid "Window"
-msgstr "Nova Janela"
+msgstr "Janela"
#: core/bind/core_bind.cpp main/main.cpp
-#, fuzzy
msgid "Borderless"
-msgstr "Pixels de Borda"
+msgstr "Sem Bordas"
#: core/bind/core_bind.cpp
msgid "Per Pixel Transparency Enabled"
-msgstr ""
+msgstr "Transparência Por Pixel Ativada"
#: core/bind/core_bind.cpp main/main.cpp
-#, fuzzy
msgid "Fullscreen"
-msgstr "Alternar Tela Cheia"
+msgstr "Tela Cheia"
#: core/bind/core_bind.cpp
msgid "Maximized"
-msgstr ""
+msgstr "Maximizado"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Minimized"
-msgstr "Inicializar"
+msgstr "Minimizado"
#: core/bind/core_bind.cpp main/main.cpp scene/gui/dialogs.cpp
#: scene/gui/graph_node.cpp
msgid "Resizable"
-msgstr ""
+msgstr "Redimensionável"
#: core/bind/core_bind.cpp core/os/input_event.cpp scene/2d/node_2d.cpp
#: scene/2d/physics_body_2d.cpp scene/2d/remote_transform_2d.cpp
#: scene/3d/physics_body.cpp scene/3d/remote_transform.cpp
#: scene/gui/control.cpp scene/gui/line_edit.cpp
-#, fuzzy
msgid "Position"
-msgstr "Pos. do Painel"
+msgstr "Posição"
#: core/bind/core_bind.cpp editor/editor_settings.cpp main/main.cpp
#: modules/gdscript/gdscript_editor.cpp modules/gridmap/grid_map.cpp
#: modules/mono/csharp_script.cpp modules/visual_script/visual_script_nodes.cpp
-#: scene/2d/tile_map.cpp scene/3d/camera.cpp scene/gui/control.cpp
-#: scene/gui/graph_edit.cpp scene/main/viewport.cpp
+#: scene/2d/tile_map.cpp scene/3d/camera.cpp scene/3d/light.cpp
+#: scene/gui/control.cpp scene/gui/graph_edit.cpp scene/main/viewport.cpp
#: scene/resources/dynamic_font.cpp scene/resources/navigation_mesh.cpp
#: scene/resources/primitive_meshes.cpp scene/resources/sky.cpp
#: scene/resources/style_box.cpp scene/resources/texture.cpp
#: scene/resources/visual_shader.cpp servers/visual_server.cpp
-#, fuzzy
msgid "Size"
-msgstr "Tamanho:"
+msgstr "Tamanho"
#: core/bind/core_bind.cpp
msgid "Endian Swap"
-msgstr ""
+msgstr "Troca Endiana"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Editor Hint"
-msgstr "Editor"
+msgstr "Dica do Editor"
#: core/bind/core_bind.cpp
msgid "Print Error Messages"
-msgstr ""
+msgstr "Imprimir Mensagens de Erro"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Iterations Per Second"
-msgstr "Modo de Interpolação"
+msgstr "Iterações por Segundo"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Target FPS"
-msgstr "Destino"
+msgstr "FPS alvo"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Time Scale"
-msgstr "Nó TimeScale"
+msgstr "Escala de Tempo"
#: core/bind/core_bind.cpp main/main.cpp
-#, fuzzy
msgid "Physics Jitter Fix"
-msgstr "Frame de Física %"
+msgstr "Correção de Jitter de Física"
#: core/bind/core_bind.cpp editor/plugins/version_control_editor_plugin.cpp
msgid "Error"
msgstr "Erro"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Error String"
-msgstr "Erro ao salvar"
+msgstr "String de Erro"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Error Line"
-msgstr "Erro ao salvar"
+msgstr "Linha de Erro"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Result"
-msgstr "Pesquisar resultados"
+msgstr "Resultado"
#: core/command_queue_mt.cpp core/message_queue.cpp main/main.cpp
msgid "Memory"
-msgstr ""
+msgstr "Memória"
#: core/command_queue_mt.cpp core/message_queue.cpp
#: core/register_core_types.cpp drivers/gles2/rasterizer_canvas_base_gles2.cpp
@@ -328,24 +307,22 @@ msgstr ""
#: drivers/gles3/rasterizer_storage_gles3.cpp main/main.cpp
#: servers/visual_server.cpp
msgid "Limits"
-msgstr ""
+msgstr "Limites"
#: core/command_queue_mt.cpp
-#, fuzzy
msgid "Command Queue"
-msgstr "Command: Rotacionar"
+msgstr "Fila de Comando"
#: core/command_queue_mt.cpp
msgid "Multithreading Queue Size (KB)"
-msgstr ""
+msgstr "Tamanho da Fila de Multithreading (KB)"
#: core/func_ref.cpp modules/visual_script/visual_script_builtin_funcs.cpp
#: modules/visual_script/visual_script_func_nodes.cpp
#: modules/visual_script/visual_script_nodes.cpp
#: scene/resources/visual_shader_nodes.cpp
-#, fuzzy
msgid "Function"
-msgstr "Funções"
+msgstr "Função"
#: core/image.cpp core/packed_data_container.cpp
#: modules/minimp3/audio_stream_mp3.cpp
@@ -355,58 +332,50 @@ msgstr "Funções"
#: scene/resources/audio_stream_sample.cpp scene/resources/bit_map.cpp
#: scene/resources/concave_polygon_shape.cpp scene/resources/curve.cpp
#: scene/resources/polygon_path_finder.cpp scene/resources/texture.cpp
-#, fuzzy
msgid "Data"
-msgstr "Com Dados"
+msgstr "Dados"
#: core/io/file_access_network.cpp core/register_core_types.cpp
-#: editor/editor_settings.cpp editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp main/main.cpp
+#: editor/editor_settings.cpp main/main.cpp
#: modules/gdscript/language_server/gdscript_language_server.cpp
-#, fuzzy
msgid "Network"
-msgstr "Perfis de rede"
+msgstr "Rede"
#: core/io/file_access_network.cpp
-#, fuzzy
msgid "Remote FS"
-msgstr "Remoto "
+msgstr "Sistema de Arquivos Remoto"
#: core/io/file_access_network.cpp
-#, fuzzy
msgid "Page Size"
-msgstr "Página: "
+msgstr "Tamanho da Página"
#: core/io/file_access_network.cpp
msgid "Page Read Ahead"
-msgstr ""
+msgstr "Página lida adiante"
#: core/io/http_client.cpp
msgid "Blocking Mode Enabled"
-msgstr ""
+msgstr "Modo de bloqueio ativado"
#: core/io/http_client.cpp
-#, fuzzy
msgid "Connection"
-msgstr "Conectar"
+msgstr "Conexão"
#: core/io/http_client.cpp
msgid "Read Chunk Size"
-msgstr ""
+msgstr "Ler o tamanho do pedaço"
#: core/io/marshalls.cpp
-#, fuzzy
msgid "Object ID"
-msgstr "Objetos Desenhados:"
+msgstr "ID do Objeto"
#: core/io/multiplayer_api.cpp core/io/packet_peer.cpp
-#, fuzzy
msgid "Allow Object Decoding"
-msgstr "Ativar Papel Vegetal"
+msgstr "Permitir a Decodificação de Objetos"
#: core/io/multiplayer_api.cpp scene/main/scene_tree.cpp
msgid "Refuse New Network Connections"
-msgstr ""
+msgstr "Recusar Novas Conexões de Rede"
#: core/io/multiplayer_api.cpp scene/main/scene_tree.cpp
#, fuzzy
@@ -414,19 +383,16 @@ msgid "Network Peer"
msgstr "Perfis de rede"
#: core/io/multiplayer_api.cpp scene/animation/animation_player.cpp
-#, fuzzy
msgid "Root Node"
-msgstr "Nome do nó raiz"
+msgstr "Nó Raiz"
#: core/io/networked_multiplayer_peer.cpp
-#, fuzzy
msgid "Refuse New Connections"
-msgstr "Conectar"
+msgstr "Recusar Novas Conexões"
#: core/io/networked_multiplayer_peer.cpp
-#, fuzzy
msgid "Transfer Mode"
-msgstr "Tipo de Transformação"
+msgstr "Modo de Transferência"
#: core/io/packet_peer.cpp
msgid "Encode Buffer Max Size"
@@ -438,7 +404,7 @@ msgstr ""
#: core/io/packet_peer.cpp
msgid "Output Buffer Max Size"
-msgstr ""
+msgstr "Tamanho máximo do buffer de saída"
#: core/io/packet_peer.cpp
msgid "Stream Peer"
@@ -450,16 +416,15 @@ msgstr ""
#: core/io/stream_peer.cpp
msgid "Data Array"
-msgstr ""
+msgstr "Matriz de Dados"
#: core/io/stream_peer_ssl.cpp
msgid "Blocking Handshake"
msgstr ""
#: core/io/udp_server.cpp
-#, fuzzy
msgid "Max Pending Connections"
-msgstr "Editar Conexão:"
+msgstr "Conexões Pendentes Máximas"
#: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp
#: modules/visual_script/visual_script_builtin_funcs.cpp
@@ -510,17 +475,16 @@ msgid "Seed"
msgstr ""
#: core/math/random_number_generator.cpp
-#, fuzzy
msgid "State"
msgstr "Estado"
#: core/message_queue.cpp
msgid "Message Queue"
-msgstr ""
+msgstr "Fila de Mensagens"
#: core/message_queue.cpp
msgid "Max Size (KB)"
-msgstr ""
+msgstr "Tamanho Máximo (KB)"
#: core/os/input.cpp editor/editor_help.cpp editor/editor_settings.cpp
#: editor/plugins/script_editor_plugin.cpp
@@ -532,9 +496,8 @@ msgstr ""
#: modules/mono/csharp_script.cpp scene/animation/animation_player.cpp
#: scene/gui/control.cpp scene/gui/line_edit.cpp scene/main/node.cpp
#: scene/resources/material.cpp
-#, fuzzy
msgid "Text Editor"
-msgstr "Abrir Editor"
+msgstr "Editor de Texto"
#: core/os/input.cpp editor/editor_settings.cpp
#: editor/plugins/script_text_editor.cpp modules/gdscript/gdscript.cpp
@@ -542,18 +505,16 @@ msgstr "Abrir Editor"
#: modules/gdscript/language_server/gdscript_text_document.cpp
#: scene/animation/animation_player.cpp scene/gui/control.cpp
#: scene/main/node.cpp scene/resources/material.cpp
-#, fuzzy
msgid "Completion"
-msgstr "Copiar Seleção"
+msgstr "Conclusão"
#: core/os/input.cpp editor/editor_settings.cpp
#: editor/plugins/script_text_editor.cpp modules/gdscript/gdscript_editor.cpp
#: modules/gdscript/language_server/gdscript_text_document.cpp
#: scene/animation/animation_player.cpp scene/gui/control.cpp
#: scene/main/node.cpp scene/resources/material.cpp
-#, fuzzy
msgid "Use Single Quotes"
-msgstr "Novo Tile Único"
+msgstr "Usar Aspas Simples"
#: core/os/input_event.cpp editor/project_settings_editor.cpp
#: servers/audio_server.cpp
@@ -561,75 +522,65 @@ msgid "Device"
msgstr "Dispositivo"
#: core/os/input_event.cpp
-#, fuzzy
msgid "Alt"
-msgstr "Todos"
+msgstr "Alt"
#: core/os/input_event.cpp
msgid "Shift"
msgstr ""
#: core/os/input_event.cpp
-#, fuzzy
msgid "Control"
-msgstr "Controle de Versão"
+msgstr "Control"
#: core/os/input_event.cpp
msgid "Meta"
-msgstr ""
+msgstr "Meta"
#: core/os/input_event.cpp
-#, fuzzy
msgid "Command"
-msgstr "Comunidade"
+msgstr "Command"
#: core/os/input_event.cpp scene/2d/touch_screen_button.cpp
#: scene/gui/base_button.cpp scene/gui/texture_button.cpp
-#, fuzzy
msgid "Pressed"
-msgstr "Predefinição"
+msgstr "Pressionado"
#: core/os/input_event.cpp
-#, fuzzy
msgid "Scancode"
-msgstr "Escanear"
+msgstr "Scancode"
#: core/os/input_event.cpp
-#, fuzzy
msgid "Physical Scancode"
-msgstr "Tecla Física"
+msgstr "Scancode Físico"
#: core/os/input_event.cpp
msgid "Unicode"
-msgstr ""
+msgstr "Unicode"
#: core/os/input_event.cpp
msgid "Echo"
msgstr ""
#: core/os/input_event.cpp scene/gui/base_button.cpp
-#, fuzzy
msgid "Button Mask"
-msgstr "Botão"
+msgstr "Máscara de Botão"
#: core/os/input_event.cpp scene/2d/node_2d.cpp scene/gui/control.cpp
-#, fuzzy
msgid "Global Position"
-msgstr "Constante"
+msgstr "Posição Global"
#: core/os/input_event.cpp
-#, fuzzy
msgid "Factor"
-msgstr "Vetor"
+msgstr "Fator"
#: core/os/input_event.cpp
-#, fuzzy
msgid "Button Index"
-msgstr "Ãndice do Botão do Mouse:"
+msgstr "Ãndice do Botão"
#: core/os/input_event.cpp
msgid "Doubleclick"
-msgstr ""
+msgstr "Clique Duplo"
#: core/os/input_event.cpp
msgid "Tilt"
@@ -645,12 +596,12 @@ msgstr "Predefinição"
msgid "Relative"
msgstr "Encaixe Relativo"
-#: core/os/input_event.cpp scene/2d/camera_2d.cpp
-#: scene/3d/interpolated_camera.cpp scene/animation/animation_player.cpp
-#: scene/resources/environment.cpp
-#, fuzzy
+#: core/os/input_event.cpp scene/2d/camera_2d.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/interpolated_camera.cpp
+#: scene/animation/animation_player.cpp scene/resources/environment.cpp
+#: scene/resources/particles_material.cpp
msgid "Speed"
-msgstr "Velocidade:"
+msgstr "Velocidade"
#: core/os/input_event.cpp editor/project_settings_editor.cpp
#: scene/3d/sprite_3d.cpp
@@ -658,14 +609,12 @@ msgid "Axis"
msgstr "Eixo"
#: core/os/input_event.cpp
-#, fuzzy
msgid "Axis Value"
-msgstr "Fixar valor"
+msgstr "Valor do Eixo"
#: core/os/input_event.cpp modules/visual_script/visual_script_func_nodes.cpp
-#, fuzzy
msgid "Index"
-msgstr "Ãndice:"
+msgstr "Ãndice"
#: core/os/input_event.cpp editor/project_settings_editor.cpp
#: modules/visual_script/visual_script_nodes.cpp
@@ -676,72 +625,71 @@ msgstr "Ação"
#: core/os/input_event.cpp scene/resources/environment.cpp
#: scene/resources/material.cpp
msgid "Strength"
-msgstr ""
+msgstr "Força"
#: core/os/input_event.cpp
msgid "Delta"
-msgstr ""
+msgstr "Delta"
#: core/os/input_event.cpp
-#, fuzzy
msgid "Channel"
-msgstr "Alterar"
+msgstr "Canal"
#: core/os/input_event.cpp main/main.cpp
-#, fuzzy
msgid "Message"
-msgstr "Mensagem de Commit"
+msgstr "Mensagem"
#: core/os/input_event.cpp
-#, fuzzy
msgid "Pitch"
-msgstr "Tom:"
+msgstr "Tom"
-#: core/os/input_event.cpp scene/2d/physics_body_2d.cpp
-#: scene/3d/physics_body.cpp
-#, fuzzy
+#: core/os/input_event.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/physics_body_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/3d/physics_body.cpp scene/resources/particles_material.cpp
msgid "Velocity"
-msgstr "Orbitar Visão para a Direita"
+msgstr "Velocidade"
#: core/os/input_event.cpp
msgid "Instrument"
-msgstr ""
+msgstr "Instrumento"
#: core/os/input_event.cpp
-#, fuzzy
msgid "Controller Number"
-msgstr "Número da Linha:"
+msgstr "Número do Controlador"
#: core/os/input_event.cpp
msgid "Controller Value"
-msgstr ""
+msgstr "Valor do Controlador"
#: core/project_settings.cpp editor/editor_node.cpp main/main.cpp
-#, fuzzy
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/windows/export/export.cpp
msgid "Application"
-msgstr "Ação"
+msgstr "Aplicação"
#: core/project_settings.cpp main/main.cpp
#, fuzzy
msgid "Config"
-msgstr "Configurar o Snap"
+msgstr "Configuração"
#: core/project_settings.cpp
-#, fuzzy
msgid "Project Settings Override"
-msgstr "Configurações do Projeto..."
+msgstr "Substituição de Configurações do Projeto"
#: core/project_settings.cpp core/resource.cpp
#: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp
#: editor/editor_plugin_settings.cpp editor/editor_profiler.cpp
#: editor/project_manager.cpp editor/settings_config_dialog.cpp
-#: modules/gdnative/nativescript/nativescript.cpp scene/2d/area_2d.cpp
-#: scene/3d/area.cpp scene/main/node.cpp
+#: modules/gdnative/nativescript/nativescript.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/osx/export/export.cpp scene/2d/area_2d.cpp scene/3d/area.cpp
+#: scene/main/node.cpp
msgid "Name"
msgstr "Nome"
#: core/project_settings.cpp editor/editor_help.cpp
-#: modules/visual_script/visual_script_nodes.cpp
+#: modules/visual_script/visual_script_nodes.cpp platform/uwp/export/export.cpp
+#: platform/windows/export/export.cpp
msgid "Description"
msgstr "Descrição"
@@ -757,36 +705,33 @@ msgid "Main Scene"
msgstr "Cena Principal"
#: core/project_settings.cpp
-#, fuzzy
msgid "Disable stdout"
-msgstr "Desativar Autotile"
+msgstr "Desativar stdout"
#: core/project_settings.cpp
-#, fuzzy
msgid "Disable stderr"
-msgstr "Item Desativado"
+msgstr "Desativar stderr"
#: core/project_settings.cpp
msgid "Use Hidden Project Data Directory"
-msgstr ""
+msgstr "Usar Diretório de Dados de Projeto Oculto"
#: core/project_settings.cpp
msgid "Use Custom User Dir"
-msgstr ""
+msgstr "Usar Diretório de Usuário Personalizado"
#: core/project_settings.cpp
msgid "Custom User Dir Name"
-msgstr ""
+msgstr "Nome do Diretório de Usuário Personalizado"
#: core/project_settings.cpp editor/animation_track_editor.cpp
-#: editor/editor_audio_buses.cpp servers/audio_server.cpp
+#: editor/editor_audio_buses.cpp main/main.cpp servers/audio_server.cpp
msgid "Audio"
msgstr "Ãudio"
#: core/project_settings.cpp
-#, fuzzy
msgid "Default Bus Layout"
-msgstr "Carregar o Layout de Canais padrão."
+msgstr "Layout de Barramento Padrão"
#: core/project_settings.cpp editor/editor_export.cpp
#: editor/editor_file_system.cpp editor/editor_node.cpp
@@ -796,17 +741,16 @@ msgid "Editor"
msgstr "Editor"
#: core/project_settings.cpp
-#, fuzzy
msgid "Main Run Args"
-msgstr "Argumentos da Cena Principal:"
+msgstr "Argumentos de Execução Principais"
#: core/project_settings.cpp
msgid "Search In File Extensions"
-msgstr ""
+msgstr "Pesquisar em Extensões de Arquivo"
#: core/project_settings.cpp
msgid "Script Templates Search Path"
-msgstr ""
+msgstr "Caminho de Pesquisa de Modelos de Script"
#: core/project_settings.cpp editor/editor_node.cpp
#: editor/plugins/version_control_editor_plugin.cpp
@@ -815,79 +759,68 @@ msgstr "Controle de Versão"
#: core/project_settings.cpp
msgid "Autoload On Startup"
-msgstr ""
+msgstr "Carregamento Automático na Inicialização"
#: core/project_settings.cpp
-#, fuzzy
msgid "Plugin Name"
-msgstr "Nome do Plugin:"
+msgstr "Nome do Plugin"
#: core/project_settings.cpp scene/2d/collision_object_2d.cpp
#: scene/3d/collision_object.cpp scene/gui/control.cpp
-#, fuzzy
msgid "Input"
-msgstr "Adicionar Entrada"
+msgstr "Entrada"
#: core/project_settings.cpp
msgid "UI Accept"
-msgstr ""
+msgstr "Aceitar (UI)"
#: core/project_settings.cpp
-#, fuzzy
msgid "UI Select"
-msgstr "Selecionar"
+msgstr "Selecionar (UI)"
#: core/project_settings.cpp
-#, fuzzy
msgid "UI Cancel"
-msgstr "Cancelar"
+msgstr "Cancelar (UI)"
#: core/project_settings.cpp
-#, fuzzy
msgid "UI Focus Next"
-msgstr "Habilitar"
+msgstr "Focar Próximo (UI)"
#: core/project_settings.cpp
-#, fuzzy
msgid "UI Focus Prev"
-msgstr "Habilitar"
+msgstr "Focar Anterior (UI)"
#: core/project_settings.cpp
-#, fuzzy
msgid "UI Left"
-msgstr "Superior Esquerda"
+msgstr "Esquerda (UI)"
#: core/project_settings.cpp
-#, fuzzy
msgid "UI Right"
-msgstr "Superior Direita"
+msgstr "Direita (UI)"
#: core/project_settings.cpp
msgid "UI Up"
-msgstr ""
+msgstr "Cima (UI)"
#: core/project_settings.cpp
-#, fuzzy
msgid "UI Down"
-msgstr "Abaixo"
+msgstr "Baixo (UI)"
#: core/project_settings.cpp
-#, fuzzy
msgid "UI Page Up"
-msgstr "Página: "
+msgstr "Page Up (UI)"
#: core/project_settings.cpp
msgid "UI Page Down"
-msgstr ""
+msgstr "Page Down (UI)"
#: core/project_settings.cpp
msgid "UI Home"
-msgstr ""
+msgstr "Home (UI)"
#: core/project_settings.cpp
-#, fuzzy
msgid "UI End"
-msgstr "No Fim"
+msgstr "End (UI)"
#: core/project_settings.cpp main/main.cpp modules/bullet/register_types.cpp
#: modules/bullet/space_bullet.cpp scene/2d/physics_body_2d.cpp
@@ -896,9 +829,8 @@ msgstr "No Fim"
#: servers/physics/space_sw.cpp servers/physics_2d/physics_2d_server_sw.cpp
#: servers/physics_2d/physics_2d_server_wrap_mt.h
#: servers/physics_2d/space_2d_sw.cpp
-#, fuzzy
msgid "Physics"
-msgstr " (Físico)"
+msgstr "Física"
#: core/project_settings.cpp editor/editor_settings.cpp
#: editor/plugins/spatial_editor_plugin.cpp main/main.cpp
@@ -906,12 +838,11 @@ msgstr " (Físico)"
#: scene/3d/physics_body.cpp scene/resources/world.cpp
#: servers/physics/space_sw.cpp
msgid "3D"
-msgstr ""
+msgstr "3D"
#: core/project_settings.cpp
-#, fuzzy
msgid "Smooth Trimesh Collision"
-msgstr "Criar Colisão Trimesh Irmã"
+msgstr "Colisão Trimesh Suave"
#: core/project_settings.cpp drivers/gles2/rasterizer_canvas_base_gles2.cpp
#: drivers/gles2/rasterizer_scene_gles2.cpp
@@ -922,9 +853,8 @@ msgstr "Criar Colisão Trimesh Irmã"
#: modules/lightmapper_cpu/register_types.cpp scene/main/scene_tree.cpp
#: scene/main/viewport.cpp servers/visual/visual_server_scene.cpp
#: servers/visual_server.cpp
-#, fuzzy
msgid "Rendering"
-msgstr "Renderizador:"
+msgstr "Renderização"
#: core/project_settings.cpp drivers/gles2/rasterizer_storage_gles2.cpp
#: drivers/gles3/rasterizer_scene_gles3.cpp
@@ -939,18 +869,20 @@ msgstr ""
#: core/project_settings.cpp scene/animation/animation_tree.cpp
#: scene/gui/file_dialog.cpp scene/main/scene_tree.cpp
#: servers/visual_server.cpp
-#, fuzzy
msgid "Filters"
-msgstr "Filtros:"
+msgstr "Filtros"
#: core/project_settings.cpp scene/main/viewport.cpp
msgid "Sharpen Intensity"
msgstr ""
-#: core/project_settings.cpp editor/editor_node.cpp editor/editor_settings.cpp
-#: editor/plugins/script_editor_plugin.cpp editor/project_export.cpp
-#: main/main.cpp modules/gdscript/gdscript.cpp
-#: modules/visual_script/visual_script.cpp scene/3d/room_manager.cpp
+#: core/project_settings.cpp editor/editor_export.cpp editor/editor_node.cpp
+#: editor/editor_settings.cpp editor/plugins/script_editor_plugin.cpp
+#: editor/project_export.cpp main/main.cpp modules/gdscript/gdscript.cpp
+#: modules/visual_script/visual_script.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp scene/3d/room_manager.cpp
#: scene/main/scene_tree.cpp scene/resources/shape_2d.cpp
#: servers/visual_server.cpp
msgid "Debug"
@@ -958,9 +890,8 @@ msgstr "Depuração"
#: core/project_settings.cpp main/main.cpp modules/gdscript/gdscript.cpp
#: modules/visual_script/visual_script.cpp scene/resources/dynamic_font.cpp
-#, fuzzy
msgid "Settings"
-msgstr "Configurações:"
+msgstr "Configurações"
#: core/project_settings.cpp editor/script_editor_debugger.cpp main/main.cpp
#: modules/mono/mono_gd/gd_mono.cpp
@@ -1019,9 +950,8 @@ msgid "TCP"
msgstr ""
#: core/register_core_types.cpp
-#, fuzzy
msgid "Connect Timeout Seconds"
-msgstr "Conexões com o método:"
+msgstr "Segundos de Tempo Limite de Conexão"
#: core/register_core_types.cpp
msgid "Packet Peer Stream"
@@ -1036,9 +966,8 @@ msgid "SSL"
msgstr ""
#: core/register_core_types.cpp main/main.cpp
-#, fuzzy
msgid "Certificates"
-msgstr "Vértices:"
+msgstr "Certificados"
#: core/resource.cpp editor/dependency_editor.cpp
#: editor/editor_resource_picker.cpp
@@ -1186,6 +1115,7 @@ msgid "Subsurface Scattering"
msgstr ""
#: drivers/gles3/rasterizer_scene_gles3.cpp
+#: editor/import/resource_importer_texture.cpp
#: editor/plugins/spatial_editor_plugin.cpp modules/gltf/gltf_node.cpp
#: modules/gridmap/grid_map.cpp scene/2d/cpu_particles_2d.cpp
#: scene/2d/node_2d.cpp scene/2d/parallax_layer.cpp scene/2d/polygon_2d.cpp
@@ -1483,6 +1413,7 @@ msgid "Editors"
msgstr "Editor"
#: editor/animation_track_editor.cpp editor/editor_settings.cpp
+#: editor/import/resource_importer_scene.cpp
#: editor/plugins/animation_player_editor_plugin.cpp editor/scene_tree_dock.cpp
#: scene/2d/animated_sprite.cpp scene/2d/cpu_particles_2d.cpp
#: scene/2d/sprite.cpp scene/3d/cpu_particles.cpp scene/3d/sprite_3d.cpp
@@ -1664,9 +1595,8 @@ msgstr ""
"única."
#: editor/animation_track_editor.cpp
-#, fuzzy
msgid "Anim Add RESET Keys"
-msgstr "Anim Adicionar teclas de RESET"
+msgstr "Anim Adicionar Teclas de RESET"
#: editor/animation_track_editor.cpp
msgid ""
@@ -1718,14 +1648,14 @@ msgstr "Valor do passo de animação."
msgid "Seconds"
msgstr "Segundos"
-#: editor/animation_track_editor.cpp
+#: editor/animation_track_editor.cpp editor/import/resource_importer_scene.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp main/main.cpp
#: scene/resources/texture.cpp
msgid "FPS"
msgstr "FPS"
#: editor/animation_track_editor.cpp editor/editor_plugin_settings.cpp
-#: editor/editor_resource_picker.cpp
+#: editor/editor_resource_picker.cpp editor/import/resource_importer_wav.cpp
#: editor/plugins/polygon_2d_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
@@ -2690,7 +2620,9 @@ msgid "Remove Autoload"
msgstr "Remover Autoload"
#: editor/editor_autoload_settings.cpp editor/editor_plugin_settings.cpp
-#: modules/gdscript/gdscript.cpp scene/2d/polygon_2d.cpp scene/3d/area.cpp
+#: modules/gdscript/gdscript.cpp platform/android/export/export_plugin.cpp
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#: scene/2d/polygon_2d.cpp scene/3d/area.cpp scene/3d/physics_joint.cpp
#: scene/3d/reflection_probe.cpp scene/main/canvas_layer.cpp
#: scene/resources/material.cpp servers/visual_server.cpp
msgid "Enable"
@@ -2860,6 +2792,59 @@ msgstr ""
#: editor/editor_export.cpp platform/android/export/export_plugin.cpp
#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Custom Template"
+msgstr "Tema do Editor"
+
+#: editor/editor_export.cpp editor/project_export.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp
+msgid "Release"
+msgstr "Lançamento"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Binary Format"
+msgstr "Formato de Cor"
+
+#: editor/editor_export.cpp
+msgid "64 Bits"
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Embed PCK"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Texture Format"
+msgstr "Região da Textura"
+
+#: editor/editor_export.cpp
+msgid "BPTC"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "S3TC"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "ETC"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "ETC2"
+msgstr ""
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "No BPTC Fallbacks"
+msgstr "Forçar Fallbacks do Shader"
+
+#: editor/editor_export.cpp platform/android/export/export_plugin.cpp
+#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
msgid "Custom debug template not found."
msgstr "Modelo customizado de depuração não encontrado."
@@ -3038,6 +3023,7 @@ msgid "Make Current"
msgstr "Definir como atual"
#: editor/editor_feature_profile.cpp editor/editor_node.cpp
+#: editor/import/resource_importer_scene.cpp
#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
msgid "Import"
msgstr "Importar"
@@ -3158,17 +3144,18 @@ msgid "Save a File"
msgstr "Salvar um Arquivo"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-#, fuzzy
msgid "Access"
-msgstr "Sucesso!"
+msgstr "Acesso"
#: editor/editor_file_dialog.cpp editor/editor_settings.cpp
-#, fuzzy
msgid "Display Mode"
-msgstr "Modo Panorâmico:"
+msgstr "Modo de Exibição"
-#: editor/editor_file_dialog.cpp main/main.cpp modules/csg/csg_shape.cpp
-#: modules/visual_script/visual_script_nodes.cpp
+#: editor/editor_file_dialog.cpp
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+#: editor/import/resource_importer_wav.cpp main/main.cpp
+#: modules/csg/csg_shape.cpp modules/visual_script/visual_script_nodes.cpp
#: modules/visual_script/visual_script_yield_nodes.cpp scene/2d/light_2d.cpp
#: scene/2d/physics_body_2d.cpp scene/2d/tile_map.cpp
#: scene/3d/baked_lightmap.cpp scene/3d/light.cpp scene/3d/physics_body.cpp
@@ -3180,19 +3167,16 @@ msgid "Mode"
msgstr "Modo Panorâmico"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-#, fuzzy
msgid "Current Dir"
-msgstr "Atual:"
+msgstr "Diretório Atual"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-#, fuzzy
msgid "Current File"
-msgstr "Perfil Atual:"
+msgstr "Arquivo Atual"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-#, fuzzy
msgid "Current Path"
-msgstr "Atual:"
+msgstr "Caminho Atual"
#: editor/editor_file_dialog.cpp editor/editor_settings.cpp
#: scene/gui/file_dialog.cpp
@@ -3307,7 +3291,9 @@ msgstr "(Re)Importando Assets"
msgid "Reimport Missing Imported Files"
msgstr ""
-#: editor/editor_help.cpp
+#: editor/editor_help.cpp scene/2d/camera_2d.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/resources/dynamic_font.cpp
+#: scene/resources/style_box.cpp
msgid "Top"
msgstr "Início"
@@ -3359,6 +3345,7 @@ msgid "Fonts"
msgstr "Fontes"
#: editor/editor_help.cpp editor/plugins/theme_editor_plugin.cpp
+#: platform/iphone/export/export.cpp
msgid "Icons"
msgstr "Ãcones"
@@ -3505,9 +3492,8 @@ msgid "Checked"
msgstr "Item Checado"
#: editor/editor_inspector.cpp
-#, fuzzy
msgid "Draw Red"
-msgstr "Chamadas de Desenho:"
+msgstr "Desenhar Vermelho"
#: editor/editor_inspector.cpp
#, fuzzy
@@ -3524,11 +3510,12 @@ msgid ""
msgstr "Fixar um valor força-o a ser salvo mesmo que seja igual ao padrão."
#: editor/editor_inspector.cpp
-#, fuzzy
msgid "Pin value [Disabled because '%s' is editor-only]"
-msgstr "Valor do pino [Desativado porque '%s' é somente editor]"
+msgstr "Fixar valor [Desativado porque '%s' é somente editor]"
-#: editor/editor_inspector.cpp editor/scene_tree_dock.cpp
+#: editor/editor_inspector.cpp
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+#: editor/scene_tree_dock.cpp
#: modules/visual_script/visual_script_func_nodes.cpp
#: modules/visual_script/visual_script_nodes.cpp
#: modules/visual_script/visual_script_property_selector.cpp
@@ -3606,7 +3593,7 @@ msgstr "Acima"
#: editor/editor_network_profiler.cpp editor/editor_node.cpp
#: scene/main/node.cpp
msgid "Node"
-msgstr "Nodo"
+msgstr "Nó"
#: editor/editor_network_profiler.cpp
msgid "Incoming RPC"
@@ -3869,6 +3856,16 @@ msgid "Quick Open Script..."
msgstr "Abrir Script Rapidamente..."
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Save & Reload"
+msgstr "Salvar e Reiniciar"
+
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Save changes to '%s' before reloading?"
+msgstr "Salvar alterações em '%s' antes de fechar?"
+
+#: editor/editor_node.cpp
msgid "Save & Close"
msgstr "Salvar e Fechar"
@@ -3985,6 +3982,11 @@ msgid "Open Project Manager?"
msgstr "Abrir Gerenciador de Projetos?"
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Save changes to the following scene(s) before reloading?"
+msgstr "Salvar alterações na(s) seguinte(s) cena(s) antes de sair?"
+
+#: editor/editor_node.cpp
msgid "Save & Quit"
msgstr "Salvar e Sair"
@@ -4181,9 +4183,8 @@ msgid "Scene"
msgstr "Cena"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Scene Naming"
-msgstr "Caminho da Cena:"
+msgstr "Nomeação de Cena"
#: editor/editor_node.cpp editor/editor_settings.cpp editor/scene_tree_dock.cpp
#: servers/arvr/arvr_interface.cpp
@@ -4232,9 +4233,8 @@ msgid "Auto Save"
msgstr "Auto Fatiar"
#: editor/editor_node.cpp editor/editor_settings.cpp
-#, fuzzy
msgid "Save Before Running"
-msgstr "Salvar a cena antes de executar..."
+msgstr "Salvar Antes de Executar"
#: editor/editor_node.cpp
msgid "Save On Focus Loss"
@@ -4260,14 +4260,13 @@ msgid "Update Continuously"
msgstr "Atualizar Continuamente"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Update Vital Only"
-msgstr "Alterações de Material:"
+msgstr "Atualizar Apenas Vital"
#: editor/editor_node.cpp
#, fuzzy
-msgid "Translate Properties"
-msgstr "Colar Propriedades"
+msgid "Localize Settings"
+msgstr "Localização"
#: editor/editor_node.cpp
#, fuzzy
@@ -4284,8 +4283,8 @@ msgstr "Inspetor"
#: editor/editor_node.cpp
#, fuzzy
-msgid "Capitalize Properties"
-msgstr "Colar Propriedades"
+msgid "Default Property Name Style"
+msgstr "Caminho Padrão do Projeto"
#: editor/editor_node.cpp
msgid "Default Float Step"
@@ -4706,9 +4705,8 @@ msgid "Update All Changes"
msgstr "Atualizar quando Alterado"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Update Vital Changes"
-msgstr "Alterações de Material:"
+msgstr "Atualizar Mudanças Vitais"
#: editor/editor_node.cpp
msgid "Hide Update Spinner"
@@ -4893,7 +4891,9 @@ msgstr "Plugins Instalados:"
msgid "Update"
msgstr "Atualizar"
-#: editor/editor_plugin_settings.cpp
+#: editor/editor_plugin_settings.cpp platform/android/export/export_plugin.cpp
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp
msgid "Version"
msgstr "Versão"
@@ -5130,9 +5130,8 @@ msgid "Extend Script"
msgstr "Estender Script"
#: editor/editor_resource_picker.cpp
-#, fuzzy
msgid "Script Owner"
-msgstr "Nome do Script:"
+msgstr "Proprietário do Script"
#: editor/editor_run_native.cpp
msgid ""
@@ -5311,14 +5310,12 @@ msgid "Directories"
msgstr "Direções"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Autoscan Project Path"
-msgstr "Caminho do Projeto:"
+msgstr "Autoescanear Caminho do Projeto"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Default Project Path"
-msgstr "Caminho do Projeto:"
+msgstr "Caminho Padrão do Projeto"
#: editor/editor_settings.cpp
#, fuzzy
@@ -5340,9 +5337,8 @@ msgid "File Dialog"
msgstr "Diálogo XForm"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Thumbnail Size"
-msgstr "Miniatura..."
+msgstr "Tamanho da Miniatura"
#: editor/editor_settings.cpp
msgid "Docks"
@@ -5433,14 +5429,12 @@ msgid "Convert Indent On Save"
msgstr "Converter recuo para espaços"
#: editor/editor_settings.cpp scene/gui/text_edit.cpp
-#, fuzzy
msgid "Draw Tabs"
-msgstr "Chamadas de Desenho:"
+msgstr "Desenhar Abas"
#: editor/editor_settings.cpp scene/gui/text_edit.cpp
-#, fuzzy
msgid "Draw Spaces"
-msgstr "Chamadas de Desenho:"
+msgstr "Desenhar Espaços"
#: editor/editor_settings.cpp editor/plugins/spatial_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/main/scene_tree.cpp
@@ -5473,9 +5467,8 @@ msgid "Appearance"
msgstr ""
#: editor/editor_settings.cpp scene/gui/text_edit.cpp
-#, fuzzy
msgid "Show Line Numbers"
-msgstr "Número da Linha:"
+msgstr "Mostrar Números de Linha"
#: editor/editor_settings.cpp
#, fuzzy
@@ -5937,7 +5930,7 @@ msgstr "Rect Completo"
msgid "Rect Custom Position"
msgstr "Definir Posição de Saída da Curva"
-#: editor/editor_settings.cpp
+#: editor/editor_settings.cpp platform/android/export/export_plugin.cpp
msgid "Screen"
msgstr ""
@@ -5948,9 +5941,8 @@ msgstr "Visão Frontal"
#: editor/editor_settings.cpp
#: modules/gdscript/language_server/gdscript_language_server.cpp
-#, fuzzy
msgid "Remote Host"
-msgstr "Remoto "
+msgstr "Hospedeiro Remoto"
#: editor/editor_settings.cpp
#: modules/gdscript/language_server/gdscript_language_server.cpp
@@ -5964,6 +5956,19 @@ msgid "Editor SSL Certificates"
msgstr "Configurações do Editor"
#: editor/editor_settings.cpp
+msgid "HTTP Proxy"
+msgstr ""
+
+#: editor/editor_settings.cpp
+msgid "Host"
+msgstr ""
+
+#: editor/editor_settings.cpp editor/fileserver/editor_file_server.cpp
+#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp
+msgid "Port"
+msgstr ""
+
+#: editor/editor_settings.cpp
msgid "Project Manager"
msgstr "Gerenciador de Projetos"
@@ -6006,15 +6011,14 @@ msgstr ""
msgid "String Color"
msgstr "Armazenando Arquivo:"
-#: editor/editor_settings.cpp
-#, fuzzy
+#: editor/editor_settings.cpp platform/javascript/export/export.cpp
+#: platform/uwp/export/export.cpp
msgid "Background Color"
-msgstr "Cor de fundo inválida."
+msgstr "Cor de Fundo"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Completion Background Color"
-msgstr "Cor de fundo inválida."
+msgstr "Cor de Fundo de Acabamento"
#: editor/editor_settings.cpp
#, fuzzy
@@ -6053,9 +6057,8 @@ msgid "Caret Color"
msgstr ""
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Caret Background Color"
-msgstr "Cor de fundo inválida."
+msgstr "Cor de Fundo de Acentuação"
#: editor/editor_settings.cpp
#, fuzzy
@@ -6185,22 +6188,6 @@ msgid "Starting the download..."
msgstr "Iniciando o download..."
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "HTTP Proxy"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Host"
-msgstr ""
-
-#: editor/export_template_manager.cpp editor/fileserver/editor_file_server.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp main/main.cpp
-#: modules/mono/mono_gd/gd_mono.cpp
-msgid "Port"
-msgstr ""
-
-#: editor/export_template_manager.cpp
msgid "Error requesting URL:"
msgstr "Erro ao solicitar URL:"
@@ -6461,6 +6448,7 @@ msgstr ""
#: editor/fileserver/editor_file_server.cpp
#: editor/plugins/version_control_editor_plugin.cpp
+#: platform/uwp/export/export.cpp platform/windows/export/export.cpp
msgid "Password"
msgstr "Senha"
@@ -6838,6 +6826,117 @@ msgstr ""
msgid "Use Ambient"
msgstr ""
+#: editor/import/resource_importer_bitmask.cpp
+#, fuzzy
+msgid "Create From"
+msgstr "Criar Pasta"
+
+#: editor/import/resource_importer_bitmask.cpp
+#: servers/audio/effects/audio_effect_compressor.cpp
+msgid "Threshold"
+msgstr ""
+
+#: editor/import/resource_importer_csv_translation.cpp
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_scene.cpp
+#: editor/import/resource_importer_texture.cpp
+#: editor/import/resource_importer_wav.cpp scene/3d/gi_probe.cpp
+#, fuzzy
+msgid "Compress"
+msgstr "Componentes"
+
+#: editor/import/resource_importer_csv_translation.cpp
+msgid "Delimiter"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+msgid "No BPTC If RGB"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/sprite_3d.cpp
+#: scene/resources/material.cpp scene/resources/particles_material.cpp
+#: scene/resources/texture.cpp
+msgid "Flags"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/animation/tween.cpp
+#: scene/resources/texture.cpp
+msgid "Repeat"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/2d/light_2d.cpp
+#: scene/gui/control.cpp scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Filter"
+msgstr "Filtros:"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Mipmaps"
+msgstr "Sinais"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+msgid "Anisotropic"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+msgid "sRGB"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#, fuzzy
+msgid "Slices"
+msgstr "Auto Fatiar"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
+#: scene/resources/style_box.cpp
+#, fuzzy
+msgid "Horizontal"
+msgstr "Horizontal:"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
+#: scene/resources/style_box.cpp
+#, fuzzy
+msgid "Vertical"
+msgstr "Vertical:"
+
+#: editor/import/resource_importer_obj.cpp
+#, fuzzy
+msgid "Generate Tangents"
+msgstr "Gerar Pontos"
+
+#: editor/import/resource_importer_obj.cpp
+#, fuzzy
+msgid "Scale Mesh"
+msgstr "Modo de Escalonamento"
+
+#: editor/import/resource_importer_obj.cpp
+#, fuzzy
+msgid "Offset Mesh"
+msgstr "Deslocamento:"
+
+#: editor/import/resource_importer_obj.cpp
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Octahedral Compression"
+msgstr "Expressão"
+
+#: editor/import/resource_importer_obj.cpp
+#, fuzzy
+msgid "Optimize Mesh Flags"
+msgstr "Sinalizadores de Tamanho"
+
#: editor/import/resource_importer_scene.cpp
msgid "Import as Single Scene"
msgstr "Importar como Cena Única"
@@ -6878,6 +6977,155 @@ msgstr "Importar como Múltiplas Cenas"
msgid "Import as Multiple Scenes+Materials"
msgstr "Importar como Múltiplas Cenas+Materiais"
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+#: scene/3d/physics_joint.cpp
+msgid "Nodes"
+msgstr "Nós"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Root Type"
+msgstr "Retornar"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Root Name"
+msgstr "Nome Remoto"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Root Scale"
+msgstr "Escala"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Custom Script"
+msgstr "Recortar Nós"
+
+#: editor/import/resource_importer_scene.cpp scene/resources/texture.cpp
+#, fuzzy
+msgid "Storage"
+msgstr "Armazenando Arquivo:"
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Use Legacy Names"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+#, fuzzy
+msgid "Materials"
+msgstr "Alterações de Material:"
+
+#: editor/import/resource_importer_scene.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Location"
+msgstr "Localização"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Keep On Reimport"
+msgstr "Reimportar"
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+#, fuzzy
+msgid "Meshes"
+msgstr "Malha"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Ensure Tangents"
+msgstr "Modificar Tangente da Curva"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Light Baking"
+msgstr "Faça mapas de luz"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Lightmap Texel Size"
+msgstr "Faça mapas de luz"
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+msgid "Skins"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Use Named Skins"
+msgstr "Usar Encaixe Escalar"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "External Files"
+msgstr "Abrir um Arquivo"
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Store In Subdir"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Filter Script"
+msgstr "Filtrar scripts"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Keep Custom Tracks"
+msgstr "Transformação"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Optimizer"
+msgstr "Otimizar"
+
+#: editor/import/resource_importer_scene.cpp main/main.cpp
+#: modules/mono/mono_gd/gd_mono.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp scene/2d/camera_2d.cpp scene/2d/light_2d.cpp
+#: scene/2d/navigation_polygon.cpp scene/2d/ray_cast_2d.cpp scene/2d/sprite.cpp
+#: scene/2d/y_sort.cpp scene/3d/audio_stream_player_3d.cpp
+#: scene/3d/baked_lightmap.cpp scene/3d/interpolated_camera.cpp
+#: scene/3d/light.cpp scene/3d/navigation_mesh_instance.cpp
+#: scene/3d/physics_joint.cpp scene/3d/ray_cast.cpp scene/3d/sprite_3d.cpp
+#: scene/gui/graph_edit.cpp scene/gui/rich_text_label.cpp
+#: scene/resources/curve.cpp scene/resources/environment.cpp
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Enabled"
+msgstr "Habilitar"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Max Linear Error"
+msgstr "Erro Linear Max.:"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Max Angular Error"
+msgstr "Erro Angular Max.:"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Max Angle"
+msgstr "Valor"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Remove Unused Tracks"
+msgstr "Remover Trilha da Anim"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Clips"
+msgstr "Clipes de Animação"
+
+#: editor/import/resource_importer_scene.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/particles_2d.cpp scene/3d/area.cpp scene/3d/cpu_particles.cpp
+#: scene/3d/particles.cpp scene/resources/environment.cpp
+#, fuzzy
+msgid "Amount"
+msgstr "Quantidade:"
+
#: editor/import/resource_importer_scene.cpp
#: editor/plugins/mesh_library_editor_plugin.cpp
msgid "Import Scene"
@@ -6919,12 +7167,149 @@ msgstr "Você retornou um objeto derivado de Nó no método `post_import()`?"
msgid "Saving..."
msgstr "Salvando..."
+#: editor/import/resource_importer_texture.cpp scene/resources/texture.cpp
+msgid "Lossy Quality"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "HDR Mode"
+msgstr "Modo de Seleção"
+
+#: editor/import/resource_importer_texture.cpp
+msgid "BPTC LDR"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/mesh_instance_2d.cpp scene/2d/multimesh_instance_2d.cpp
+#: scene/2d/particles_2d.cpp scene/2d/sprite.cpp scene/resources/style_box.cpp
+msgid "Normal Map"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Process"
+msgstr "Pós-processamento"
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Fix Alpha Border"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Premult Alpha"
+msgstr "Editar Polígono"
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Hdr As Srgb"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Invert Color"
+msgstr "Vértice"
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Normal Map Invert Y"
+msgstr "Escala aleatória:"
+
+#: editor/import/resource_importer_texture.cpp
+#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
+#: scene/audio/audio_stream_player.cpp scene/gui/video_player.cpp
+msgid "Stream"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Size Limit"
+msgstr "Limites"
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Detect 3D"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "SVG"
+msgstr "HSV"
+
#: editor/import/resource_importer_texture.cpp
msgid ""
"Warning, no suitable PC VRAM compression enabled in Project Settings. This "
"texture will not display correctly on PC."
msgstr ""
+#: editor/import/resource_importer_texture_atlas.cpp
+#, fuzzy
+msgid "Atlas File"
+msgstr "Tamanho do Contorno:"
+
+#: editor/import/resource_importer_texture_atlas.cpp
+#, fuzzy
+msgid "Import Mode"
+msgstr "Modo de Exportação:"
+
+#: editor/import/resource_importer_texture_atlas.cpp
+#, fuzzy
+msgid "Crop To Region"
+msgstr "Definir a região do Mosaico"
+
+#: editor/import/resource_importer_texture_atlas.cpp
+msgid "Trim Alpha Border From Region"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp scene/2d/physics_body_2d.cpp
+#, fuzzy
+msgid "Force"
+msgstr "Forçar Push"
+
+#: editor/import/resource_importer_wav.cpp
+msgid "8 Bit"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp main/main.cpp
+#: modules/mono/editor/csharp_project.cpp modules/mono/mono_gd/gd_mono.cpp
+msgid "Mono"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+#, fuzzy
+msgid "Max Rate"
+msgstr "Nó Mix"
+
+#: editor/import/resource_importer_wav.cpp
+#, fuzzy
+msgid "Max Rate Hz"
+msgstr "Nó Mix"
+
+#: editor/import/resource_importer_wav.cpp
+msgid "Trim"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+#, fuzzy
+msgid "Normalize"
+msgstr "Formato"
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+#, fuzzy
+msgid "Loop Mode"
+msgstr "Modo de Movimentação"
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+#, fuzzy
+msgid "Loop Begin"
+msgstr "Modo de Movimentação"
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+#, fuzzy
+msgid "Loop End"
+msgstr "Modo de Movimentação"
+
#: editor/import_defaults_editor.cpp
msgid "Select Importer"
msgstr "Selecione Importador"
@@ -7003,6 +7388,29 @@ msgid "Failed to load resource."
msgstr "Falha ao carregar recurso."
#: editor/inspector_dock.cpp
+#, fuzzy
+msgid "Property Name Style"
+msgstr "Nome do Projeto:"
+
+#: editor/inspector_dock.cpp scene/gui/color_picker.cpp
+msgid "Raw"
+msgstr "Bruto"
+
+#: editor/inspector_dock.cpp
+#, fuzzy
+msgid "Capitalized"
+msgstr "Capitalizar"
+
+#: editor/inspector_dock.cpp
+#, fuzzy
+msgid "Localized"
+msgstr "Localizar"
+
+#: editor/inspector_dock.cpp
+msgid "Localization not available for current language."
+msgstr ""
+
+#: editor/inspector_dock.cpp
msgid "Copy Properties"
msgstr "Copiar Propriedades"
@@ -8054,18 +8462,26 @@ msgid "License (Z-A)"
msgstr "Licença (Z-A)"
#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgctxt "Pagination"
msgid "First"
msgstr "Primeiro"
-#: editor/plugins/asset_library_editor_plugin.cpp scene/gui/control.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgctxt "Pagination"
msgid "Previous"
msgstr "Anterior"
-#: editor/plugins/asset_library_editor_plugin.cpp scene/gui/control.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgctxt "Pagination"
msgid "Next"
msgstr "Próximo"
#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgctxt "Pagination"
msgid "Last"
msgstr "Último"
@@ -8316,19 +8732,19 @@ msgstr ""
"Quando ativo, os nós Control móveis mudam suas âncoras em vez de suas "
"margens."
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Top Left"
msgstr "Superior Esquerda"
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Top Right"
msgstr "Superior Direita"
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Bottom Right"
msgstr "Inferior direita"
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Bottom Left"
msgstr "Inferior Esquerda"
@@ -9043,6 +9459,19 @@ msgstr "Cozinhar Sonda GI"
msgid "Gradient Edited"
msgstr "Gradiente Editado"
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+msgid "Swap GradientTexture2D Fill Points"
+msgstr ""
+
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+msgid "Swap Gradient Fill Points"
+msgstr ""
+
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+#, fuzzy
+msgid "Toggle Grid Snap"
+msgstr "Alternar Modo"
+
#: editor/plugins/item_list_editor_plugin.cpp
msgid "Item %d"
msgstr "Item %d"
@@ -9275,8 +9704,9 @@ msgstr ""
"Atualizar a partir da cena existente?:\n"
"%s"
-#: editor/plugins/mesh_library_editor_plugin.cpp modules/gridmap/grid_map.cpp
-msgid "Mesh Library"
+#: editor/plugins/mesh_library_editor_plugin.cpp
+#, fuzzy
+msgid "MeshLibrary"
msgstr "Biblioteca de Malhas"
#: editor/plugins/mesh_library_editor_plugin.cpp
@@ -10235,9 +10665,8 @@ msgid "Script Temperature History Size"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "Current Script Background Color"
-msgstr "Cor de fundo inválida."
+msgstr "Cor de Fundo do Script Atual"
#: editor/plugins/script_editor_plugin.cpp
#, fuzzy
@@ -10271,8 +10700,8 @@ msgstr "Conexões com o método:"
msgid "Source"
msgstr "Origem"
-#: editor/plugins/script_text_editor.cpp scene/3d/interpolated_camera.cpp
-#: scene/animation/skeleton_ik.cpp
+#: editor/plugins/script_text_editor.cpp platform/uwp/export/export.cpp
+#: scene/3d/interpolated_camera.cpp scene/animation/skeleton_ik.cpp
msgid "Target"
msgstr "Destino"
@@ -11246,7 +11675,9 @@ msgstr "Velocidade:"
#: editor/plugins/sprite_frames_editor_plugin.cpp
#: modules/gltf/gltf_animation.cpp modules/minimp3/audio_stream_mp3.cpp
-#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp scene/2d/path_2d.cpp
+#: modules/minimp3/resource_importer_mp3.cpp
+#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp
+#: modules/stb_vorbis/resource_importer_ogg_vorbis.cpp scene/2d/path_2d.cpp
#: scene/3d/path.cpp scene/resources/animation.cpp scene/resources/material.cpp
msgid "Loop"
msgstr "Repetir"
@@ -12137,8 +12568,9 @@ msgstr "Bitmask"
msgid "Priority"
msgstr "Prioridade"
-#: editor/plugins/tile_set_editor_plugin.cpp main/main.cpp scene/gui/button.cpp
-#: scene/gui/item_list.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp main/main.cpp
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#: scene/gui/button.cpp scene/gui/item_list.cpp
msgid "Icon"
msgstr "Ãcone"
@@ -13510,10 +13942,6 @@ msgstr ""
"exportação ou nas configurações de exportação."
#: editor/project_export.cpp
-msgid "Release"
-msgstr "Lançamento"
-
-#: editor/project_export.cpp
msgid "Exporting All"
msgstr "Exportando tudo"
@@ -15398,6 +15826,7 @@ msgid "Change AudioStreamPlayer3D Emission Angle"
msgstr "Alterar o Ângulo de Emissão do AudioStreamPlayer3D"
#: editor/spatial_editor_gizmos.cpp modules/gltf/gltf_node.cpp
+#: platform/osx/export/export.cpp
msgid "Camera"
msgstr ""
@@ -15681,7 +16110,8 @@ msgstr ""
msgid "Use Nvidia Rect Flicker Workaround"
msgstr ""
-#: main/main.cpp platform/uwp/os_uwp.cpp
+#: main/main.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp platform/uwp/os_uwp.cpp
#, fuzzy
msgid "Display"
msgstr "Exibir Tudo"
@@ -15742,19 +16172,6 @@ msgstr ""
msgid "Allowed"
msgstr ""
-#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp scene/2d/camera_2d.cpp
-#: scene/2d/light_2d.cpp scene/2d/navigation_polygon.cpp
-#: scene/2d/ray_cast_2d.cpp scene/2d/sprite.cpp scene/2d/y_sort.cpp
-#: scene/3d/audio_stream_player_3d.cpp scene/3d/baked_lightmap.cpp
-#: scene/3d/interpolated_camera.cpp scene/3d/light.cpp
-#: scene/3d/navigation_mesh_instance.cpp scene/3d/ray_cast.cpp
-#: scene/3d/sprite_3d.cpp scene/gui/graph_edit.cpp
-#: scene/gui/rich_text_label.cpp scene/resources/curve.cpp
-#: scene/resources/environment.cpp
-#, fuzzy
-msgid "Enabled"
-msgstr "Habilitar"
-
#: main/main.cpp
msgid "Intended Usage"
msgstr ""
@@ -15786,13 +16203,14 @@ msgstr ""
msgid "Handheld"
msgstr ""
-#: main/main.cpp
+#: main/main.cpp platform/javascript/export/export.cpp
+#: platform/uwp/export/export.cpp
#, fuzzy
msgid "Orientation"
msgstr "Documentação Online"
#: main/main.cpp scene/gui/scroll_container.cpp scene/gui/text_edit.cpp
-#: scene/main/scene_tree.cpp
+#: scene/main/scene_tree.cpp scene/register_scene_types.cpp
#, fuzzy
msgid "Common"
msgstr "Comunidade"
@@ -15835,7 +16253,7 @@ msgstr ""
#: main/main.cpp
#, fuzzy
-msgid "Frame Delay (msec)"
+msgid "Frame Delay Msec"
msgstr "Seleção de Frame"
#: main/main.cpp
@@ -15964,11 +16382,6 @@ msgstr ""
msgid "Tooltip Position Offset"
msgstr "Deslocamento de Rotação:"
-#: main/main.cpp modules/mono/editor/csharp_project.cpp
-#: modules/mono/mono_gd/gd_mono.cpp
-msgid "Mono"
-msgstr ""
-
#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp
#, fuzzy
msgid "Debugger Agent"
@@ -15980,9 +16393,8 @@ msgid "Wait For Debugger"
msgstr "Depurador"
#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp
-#, fuzzy
msgid "Wait Timeout"
-msgstr "Tempo esgotado."
+msgstr "Tempo Limite de Espera"
#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp
msgid "Args"
@@ -16487,9 +16899,8 @@ msgid "Sparse Indices Byte Offset"
msgstr ""
#: modules/gltf/gltf_accessor.cpp
-#, fuzzy
msgid "Sparse Indices Component Type"
-msgstr "Analisando Geometria..."
+msgstr "Tipo de Componente de Ãndices Esparsos"
#: modules/gltf/gltf_accessor.cpp
msgid "Sparse Values Buffer View"
@@ -16549,7 +16960,7 @@ msgstr "Cores"
msgid "Intensity"
msgstr ""
-#: modules/gltf/gltf_light.cpp scene/2d/light_2d.cpp
+#: modules/gltf/gltf_light.cpp scene/2d/light_2d.cpp scene/3d/light.cpp
#, fuzzy
msgid "Range"
msgstr "Alterar"
@@ -16665,9 +17076,8 @@ msgid "Gloss Factor"
msgstr ""
#: modules/gltf/gltf_spec_gloss.cpp
-#, fuzzy
msgid "Specular Factor"
-msgstr "Operador escalar."
+msgstr "Fator Especular"
#: modules/gltf/gltf_spec_gloss.cpp
msgid "Spec Gloss Img"
@@ -16696,11 +17106,6 @@ msgstr "Com Dados"
msgid "Use Named Skin Binds"
msgstr ""
-#: modules/gltf/gltf_state.cpp scene/3d/physics_joint.cpp
-#, fuzzy
-msgid "Nodes"
-msgstr "Nodo"
-
#: modules/gltf/gltf_state.cpp
#, fuzzy
msgid "Buffer Views"
@@ -16712,16 +17117,6 @@ msgstr ""
#: modules/gltf/gltf_state.cpp
#, fuzzy
-msgid "Meshes"
-msgstr "Malha"
-
-#: modules/gltf/gltf_state.cpp
-#, fuzzy
-msgid "Materials"
-msgstr "Alterações de Material:"
-
-#: modules/gltf/gltf_state.cpp
-#, fuzzy
msgid "Scene Name"
msgstr "Caminho da Cena:"
@@ -16737,15 +17132,11 @@ msgstr "Nome do nó raiz"
msgid "Textures"
msgstr "Funcionalidades"
-#: modules/gltf/gltf_state.cpp
+#: modules/gltf/gltf_state.cpp platform/uwp/export/export.cpp
msgid "Images"
msgstr ""
#: modules/gltf/gltf_state.cpp
-msgid "Skins"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp
msgid "Cameras"
msgstr ""
@@ -16780,11 +17171,15 @@ msgid "Src Image"
msgstr "Mostrar Ossos"
#: modules/gridmap/grid_map.cpp
+msgid "Mesh Library"
+msgstr "Biblioteca de Malhas"
+
+#: modules/gridmap/grid_map.cpp
#, fuzzy
msgid "Physics Material"
msgstr "Frame de Física %"
-#: modules/gridmap/grid_map.cpp
+#: modules/gridmap/grid_map.cpp scene/3d/visual_instance.cpp
#, fuzzy
msgid "Use In Baked Light"
msgstr "Faça mapas de luz"
@@ -16816,6 +17211,7 @@ msgstr "Centro"
#: modules/gridmap/grid_map.cpp scene/2d/collision_object_2d.cpp
#: scene/2d/tile_map.cpp scene/3d/collision_object.cpp scene/3d/soft_body.cpp
+#: scene/resources/material.cpp
msgid "Mask"
msgstr ""
@@ -16997,7 +17393,9 @@ msgid "Ultra Quality Ray Count"
msgstr ""
#: modules/minimp3/audio_stream_mp3.cpp
+#: modules/minimp3/resource_importer_mp3.cpp
#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp
+#: modules/stb_vorbis/resource_importer_ogg_vorbis.cpp
#, fuzzy
msgid "Loop Offset"
msgstr "Deslocamento:"
@@ -18025,9 +18423,8 @@ msgid "CA Chain"
msgstr "Limpar Cadeia de IK"
#: modules/websocket/websocket_server.cpp
-#, fuzzy
msgid "Handshake Timeout"
-msgstr "Tempo esgotado."
+msgstr "Tempo de Handshake Esgotado"
#: modules/webxr/webxr_interface.cpp
#, fuzzy
@@ -18115,6 +18512,194 @@ msgid "The package must have at least one '.' separator."
msgstr "O pacote deve ter pelo menos um separador '.'."
#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Use Custom Build"
+msgstr "Usar Diretório de Usuário Personalizado"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Export Format"
+msgstr "Caminho de Exportação"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Keystore"
+msgstr "Depurador"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Debug User"
+msgstr "Depurador"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Debug Password"
+msgstr "Senha"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Release User"
+msgstr "Lançamento"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Release Password"
+msgstr "Senha"
+
+#: platform/android/export/export_plugin.cpp
+msgid "One Click Deploy"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Clear Previous Install"
+msgstr "Inspecionar a Instância Anterior"
+
+#: platform/android/export/export_plugin.cpp scene/resources/shader.cpp
+msgid "Code"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Min SDK"
+msgstr "Tamanho do Contorno:"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Target SDK"
+msgstr "FPS alvo"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Package"
+msgstr "Empacotando"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Unique Name"
+msgstr "Nome do Nó:"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Signed"
+msgstr "Sinal"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Classify As Game"
+msgstr "Nome da Classe:"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Retain Data On Uninstall"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Exclude From Recents"
+msgstr "Excluir Nós"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Graphics"
+msgstr "Deslocamento da Grade:"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "OpenGL Debug"
+msgstr "Abrir"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "XR Features"
+msgstr "Funcionalidades"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "XR Mode"
+msgstr "Modo Panorâmico"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Hand Tracking"
+msgstr "Empacotando"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Hand Tracking Frequency"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Passthrough"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Immersive Mode"
+msgstr "Modo Prioridade"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Support Small"
+msgstr "Suporte"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Support Normal"
+msgstr "Suporte"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Support Large"
+msgstr "Suporte"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Support Xlarge"
+msgstr "Suporte"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "User Data Backup"
+msgstr "Interface de Usuário"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Allow"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Command Line"
+msgstr "Command"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Extra Args"
+msgstr "Argumentos de Chamada Extras:"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "APK Expansion"
+msgstr "Expressão"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Salt"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Public Key"
+msgstr "Caminho da chave pública SSH"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Permissions"
+msgstr "Máscara de Emissão"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Custom Permissions"
+msgstr "Rodar Outra Cena"
+
+#: platform/android/export/export_plugin.cpp
msgid "Select device from the list"
msgstr "Selecione um dispositivo da lista"
@@ -18452,6 +19037,178 @@ msgid "The character '%s' is not allowed in Identifier."
msgstr "O caractere '%s' não é permitido no identificador."
#: platform/iphone/export/export.cpp
+msgid "App Store Team ID"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Provisioning Profile UUID Debug"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Code Sign Identity Debug"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Export Method Debug"
+msgstr "Exportar Com Depuração"
+
+#: platform/iphone/export/export.cpp
+msgid "Provisioning Profile UUID Release"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Code Sign Identity Release"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Export Method Release"
+msgstr "Modo de Exportação:"
+
+#: platform/iphone/export/export.cpp
+msgid "Targeted Device Family"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Info"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Identifier"
+msgstr "O nome não é um identificador válido:"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Signature"
+msgstr "Sinal"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Short Version"
+msgstr "Versão"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Copyright"
+msgstr "Superior Direita"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Capabilities"
+msgstr "Colar Propriedades"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Access Wi-Fi"
+msgstr "Acesso"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Push Notifications"
+msgstr "Rotação aleatória:"
+
+#: platform/iphone/export/export.cpp scene/3d/baked_lightmap.cpp
+#, fuzzy
+msgid "User Data"
+msgstr "Interface de Usuário"
+
+#: platform/iphone/export/export.cpp
+msgid "Accessible From Files App"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Accessible From Itunes Sharing"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Privacy"
+msgstr "Caminho da chave privada SSH"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Camera Usage Description"
+msgstr "Descrição"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Microphone Usage Description"
+msgstr "Descrições da Propriedade"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Photolibrary Usage Description"
+msgstr "Descrições da Propriedade"
+
+#: platform/iphone/export/export.cpp
+msgid "iPhone 120 X 120"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPhone 180 X 180"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 76 X 76"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 152 X 152"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 167 X 167"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "App Store 1024 X 1024"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Spotlight 40 X 40"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Spotlight 80 X 80"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Storyboard"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Use Launch Screen Storyboard"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Image Scale Mode"
+msgstr "Modo de Escalonamento"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Custom Image @2x"
+msgstr "Recortar Nós"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Custom Image @3x"
+msgstr "Recortar Nós"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Use Custom BG Color"
+msgstr "Recortar Nós"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Custom BG Color"
+msgstr "Recortar Nós"
+
+#: platform/iphone/export/export.cpp
msgid "App Store Team ID not specified - cannot configure the project."
msgstr ""
"App Store Team ID não especificado - não é possível configurar o projeto."
@@ -18489,6 +19246,80 @@ msgid "Could not read file:"
msgstr "Não foi possível ler o arquivo:"
#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Variant"
+msgstr "Separação:"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Export Type"
+msgstr "Exportação"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "VRAM Texture Compression"
+msgstr "Expressão"
+
+#: platform/javascript/export/export.cpp
+msgid "For Desktop"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "For Mobile"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Html"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Export Icon"
+msgstr "Expandir Tudo"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Custom Html Shell"
+msgstr "Recortar Nós"
+
+#: platform/javascript/export/export.cpp
+msgid "Head Include"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Canvas Resize Policy"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Focus Canvas On Start"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Experimental Virtual Keyboard"
+msgstr "Filtrar sinais"
+
+#: platform/javascript/export/export.cpp
+msgid "Progressive Web App"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Offline Page"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 144 X 144"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 180 X 180"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 512 X 512"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
msgid "Could not read HTML shell:"
msgstr "Não foi possível ler o shell HTML:"
@@ -18602,6 +19433,202 @@ msgid "Unknown object type."
msgstr ""
#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "App Category"
+msgstr "Categoria:"
+
+#: platform/osx/export/export.cpp
+msgid "High Res"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Location Usage Description"
+msgstr "Descrição"
+
+#: platform/osx/export/export.cpp
+msgid "Address Book Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Calendar Usage Description"
+msgstr "Descrição"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Photos Library Usage Description"
+msgstr "Descrições da Propriedade"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Desktop Folder Usage Description"
+msgstr "Descrições do Método"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Documents Folder Usage Description"
+msgstr "Descrições do Método"
+
+#: platform/osx/export/export.cpp
+msgid "Downloads Folder Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Network Volumes Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Removable Volumes Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#, fuzzy
+msgid "Codesign"
+msgstr "Nós"
+
+#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Identity"
+msgstr "Recuar Esquerda"
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#, fuzzy
+msgid "Timestamp"
+msgstr "Tempo"
+
+#: platform/osx/export/export.cpp
+msgid "Hardened Runtime"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Replace Existing Signature"
+msgstr "Substituir em Arquivos"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Entitlements"
+msgstr "Gizmos"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Custom File"
+msgstr "Recortar Nós"
+
+#: platform/osx/export/export.cpp
+msgid "Allow JIT Code Execution"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Allow Unsigned Executable Memory"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Allow Dyld Environment Variables"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Disable Library Validation"
+msgstr "Botão Desativado"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Audio Input"
+msgstr "Adicionar Entrada"
+
+#: platform/osx/export/export.cpp
+msgid "Address Book"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Calendars"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Photos Library"
+msgstr "Exportar Biblioteca"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Apple Events"
+msgstr "Adicionar VEvento"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Debugging"
+msgstr "Depuração"
+
+#: platform/osx/export/export.cpp
+msgid "App Sandbox"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Network Server"
+msgstr "Perfis de rede"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Network Client"
+msgstr "Perfis de rede"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Device Usb"
+msgstr "Dispositivo"
+
+#: platform/osx/export/export.cpp
+msgid "Device Bluetooth"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Files Downloads"
+msgstr "Baixar"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Files Pictures"
+msgstr "Funcionalidades"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Files Music"
+msgstr "Arquivo"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Files Movies"
+msgstr "Filtros do tile"
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#, fuzzy
+msgid "Custom Options"
+msgstr "Opções do canal"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Notarization"
+msgstr "Localização"
+
+#: platform/osx/export/export.cpp
+msgid "Apple ID Name"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Apple ID Password"
+msgstr "Senha"
+
+#: platform/osx/export/export.cpp
+msgid "Apple Team ID"
+msgstr ""
+
+#: platform/osx/export/export.cpp
msgid ""
"Note: The notarization process generally takes less than an hour. When the "
"process is completed, you'll receive an email."
@@ -18630,11 +19657,8 @@ msgid "Creating app bundle"
msgstr "Criando Miniatura"
#: platform/osx/export/export.cpp
-#, fuzzy
msgid "Could not find template app to export:"
-msgstr ""
-"Não foi possível encontrar o modelo de APK para exportar:\n"
-"%s"
+msgstr "Não foi possível encontrar o aplicativo de modelo para exportar:"
#: platform/osx/export/export.cpp
msgid ""
@@ -18799,6 +19823,136 @@ msgid "Force Builtin Codesign"
msgstr ""
#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Architecture"
+msgstr "Adicionar uma entrada de arquitetura"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Display Name"
+msgstr "Exibir Tudo"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Short Name"
+msgstr "Nome do Script:"
+
+#: platform/uwp/export/export.cpp
+msgid "Publisher"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Publisher Display Name"
+msgstr "Nome de distribuidor de pacote inválido."
+
+#: platform/uwp/export/export.cpp
+msgid "Product Guid"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Publisher Guid"
+msgstr "Limpar Guias"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Signing"
+msgstr "Sinal"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Certificate"
+msgstr "Certificados"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Algorithm"
+msgstr "Depurador"
+
+#: platform/uwp/export/export.cpp
+msgid "Major"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Minor"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Build"
+msgstr "Modo de Régua"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Revision"
+msgstr "Expressão"
+
+#: platform/uwp/export/export.cpp
+msgid "Landscape"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Portrait"
+msgstr "Inverter Horizontalmente"
+
+#: platform/uwp/export/export.cpp
+msgid "Landscape Flipped"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Portrait Flipped"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Store Logo"
+msgstr "Modo de Escalonamento"
+
+#: platform/uwp/export/export.cpp
+msgid "Square 44 X 44 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 71 X 71 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 150 X 150 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 310 X 310 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Wide 310 X 150 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Splash Screen"
+msgstr "Chamadas de Desenho:"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Tiles"
+msgstr "Arquivo"
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Square 150 X 150"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Wide 310 X 150"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Square 310 X 310"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
msgid "Invalid package short name."
msgstr "Nome de pacote inválido."
@@ -18865,34 +20019,68 @@ msgstr ""
#: platform/uwp/export/export.cpp
#, fuzzy
-msgid "Debug Password"
-msgstr "Senha"
+msgid "Debug Algorithm"
+msgstr "Depurador"
-#: platform/uwp/export/export.cpp
+#: platform/windows/export/export.cpp
+msgid "Identity Type"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Timestamp Server URL"
+msgstr ""
+
+#: platform/windows/export/export.cpp
#, fuzzy
-msgid "Debug Algorithm"
+msgid "Digest Algorithm"
msgstr "Depurador"
#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "File Version"
+msgstr "Versão"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Product Version"
+msgstr "Versão de produto inválida:"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Company Name"
+msgstr "Nome do Nó:"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Product Name"
+msgstr "Nome do Projeto:"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "File Description"
+msgstr "Descrição"
+
+#: platform/windows/export/export.cpp
+msgid "Trademarks"
+msgstr ""
+
+#: platform/windows/export/export.cpp
msgid ""
"The rcedit tool must be configured in the Editor Settings (Export > Windows "
"> Rcedit) to change the icon or app information data."
msgstr ""
#: platform/windows/export/export.cpp
-#, fuzzy
msgid "Invalid icon path:"
-msgstr "Caminho inválido."
+msgstr "Caminho de ícone inválido:"
#: platform/windows/export/export.cpp
-#, fuzzy
msgid "Invalid file version:"
-msgstr "Extensão inválida."
+msgstr "Versão de arquivo inválida:"
#: platform/windows/export/export.cpp
-#, fuzzy
msgid "Invalid product version:"
-msgstr "GUID de produto inválido."
+msgstr "Versão de produto inválida:"
#: platform/windows/export/export.cpp
#, fuzzy
@@ -18948,12 +20136,14 @@ msgstr "Rodar"
msgid "Centered"
msgstr "Centro"
-#: scene/2d/animated_sprite.cpp scene/2d/camera_2d.cpp scene/2d/light_2d.cpp
+#: scene/2d/animated_sprite.cpp scene/2d/camera_2d.cpp
+#: scene/2d/cpu_particles_2d.cpp scene/2d/light_2d.cpp
#: scene/2d/parallax_background.cpp scene/2d/parallax_layer.cpp
#: scene/2d/path_2d.cpp scene/2d/polygon_2d.cpp scene/2d/sprite.cpp
-#: scene/3d/path.cpp scene/3d/physics_body.cpp scene/3d/sprite_3d.cpp
-#: scene/gui/graph_node.cpp scene/gui/rich_text_effect.cpp
-#: scene/main/canvas_layer.cpp scene/resources/material.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/path.cpp scene/3d/physics_body.cpp
+#: scene/3d/sprite_3d.cpp scene/gui/graph_node.cpp
+#: scene/gui/rich_text_effect.cpp scene/main/canvas_layer.cpp
+#: scene/resources/material.cpp scene/resources/particles_material.cpp
#: scene/resources/style_box.cpp
#, fuzzy
msgid "Offset"
@@ -19028,11 +20218,6 @@ msgstr "Adicionar Canal de Ãudio"
msgid "Override"
msgstr "Sobrescreve"
-#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
-#: scene/audio/audio_stream_player.cpp scene/gui/video_player.cpp
-msgid "Stream"
-msgstr ""
-
#: scene/2d/audio_stream_player_2d.cpp scene/audio/audio_stream_player.cpp
#: scene/gui/video_player.cpp servers/audio/effects/audio_effect_amplify.cpp
#, fuzzy
@@ -19059,13 +20244,13 @@ msgid "Stream Paused"
msgstr ""
#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
-#: scene/3d/reflection_probe.cpp scene/3d/visual_instance.cpp
-#: scene/resources/material.cpp
+#: scene/3d/light.cpp scene/3d/reflection_probe.cpp
+#: scene/3d/visual_instance.cpp scene/resources/material.cpp
#, fuzzy
msgid "Max Distance"
msgstr "Escolha uma Distância:"
-#: scene/2d/audio_stream_player_2d.cpp
+#: scene/2d/audio_stream_player_2d.cpp scene/3d/light.cpp
#, fuzzy
msgid "Attenuation"
msgstr "Animação"
@@ -19121,6 +20306,24 @@ msgstr "Modo de Movimentação"
msgid "Limit"
msgstr ""
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/style_box.cpp
+#, fuzzy
+msgid "Left"
+msgstr "Esquerda (UI)"
+
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/style_box.cpp
+#, fuzzy
+msgid "Right"
+msgstr "Luz"
+
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/dynamic_font.cpp scene/resources/style_box.cpp
+#, fuzzy
+msgid "Bottom"
+msgstr "Inferior Esquerda"
+
#: scene/2d/camera_2d.cpp
#, fuzzy
msgid "Smoothed"
@@ -19363,13 +20566,6 @@ msgstr ""
msgid "Emitting"
msgstr "Configurações:"
-#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp scene/3d/area.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
-#: scene/resources/environment.cpp
-#, fuzzy
-msgid "Amount"
-msgstr "Quantidade:"
-
#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp
#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
msgid "Lifetime"
@@ -19434,18 +20630,13 @@ msgstr ""
#: scene/2d/mesh_instance_2d.cpp scene/2d/multimesh_instance_2d.cpp
#: scene/2d/particles_2d.cpp scene/2d/polygon_2d.cpp scene/2d/sprite.cpp
#: scene/3d/sprite_3d.cpp scene/gui/nine_patch_rect.cpp
-#: scene/gui/texture_rect.cpp scene/resources/sky.cpp
-#: scene/resources/style_box.cpp scene/resources/visual_shader_nodes.cpp
+#: scene/gui/texture_rect.cpp scene/resources/material.cpp
+#: scene/resources/sky.cpp scene/resources/style_box.cpp
+#: scene/resources/visual_shader_nodes.cpp
#, fuzzy
msgid "Texture"
msgstr "Texto"
-#: scene/2d/cpu_particles_2d.cpp scene/2d/mesh_instance_2d.cpp
-#: scene/2d/multimesh_instance_2d.cpp scene/2d/particles_2d.cpp
-#: scene/2d/sprite.cpp scene/resources/style_box.cpp
-msgid "Normal Map"
-msgstr ""
-
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
#, fuzzy
@@ -19454,9 +20645,8 @@ msgstr "Máscara de Emissão"
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
-#, fuzzy
msgid "Sphere Radius"
-msgstr "Origem da Emissão: "
+msgstr "Raio da Esfera"
#: scene/2d/cpu_particles_2d.cpp
#, fuzzy
@@ -19469,10 +20659,10 @@ msgid "Normals"
msgstr "Formato"
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/3d/sprite_3d.cpp scene/resources/material.cpp
-#: scene/resources/particles_material.cpp scene/resources/texture.cpp
-msgid "Flags"
-msgstr ""
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Align Y"
+msgstr "Atribuir"
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
@@ -19493,6 +20683,12 @@ msgid "Initial Velocity"
msgstr "Inicializar"
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Velocity Random"
+msgstr "Velocidade"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp servers/physics_2d_server.cpp
#: servers/physics_server.cpp
msgid "Angular Velocity"
@@ -19501,6 +20697,12 @@ msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
#, fuzzy
+msgid "Velocity Curve"
+msgstr "Velocidade"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
msgid "Orbit Velocity"
msgstr "Orbitar Visão para a Direita"
@@ -19512,6 +20714,23 @@ msgstr "Linear"
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Accel"
+msgstr "Acesso"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Accel Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Accel Curve"
+msgstr "Dvidir Curva"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
msgid "Radial Accel"
msgstr ""
@@ -19521,19 +20740,55 @@ msgid "Tangential Accel"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/2d/joints_2d.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/vehicle_body.cpp
-#: scene/resources/particles_material.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/physics_joint.cpp
+#: scene/3d/vehicle_body.cpp scene/resources/particles_material.cpp
#: servers/audio/effects/audio_effect_reverb.cpp
msgid "Damping"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+msgid "Damping Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Damping Curve"
+msgstr "Dvidir Curva"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp scene/3d/light.cpp
+#: scene/resources/particles_material.cpp
msgid "Angle"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+msgid "Angle Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Angle Curve"
+msgstr "Fechar Curva"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#, fuzzy
+msgid "Scale Amount"
+msgstr "Quantidade:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+msgid "Scale Amount Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#, fuzzy
+msgid "Scale Amount Curve"
+msgstr "Escalar a partir do Cursor"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
#, fuzzy
msgid "Color Ramp"
msgstr "Cores"
@@ -19549,6 +20804,48 @@ msgstr ""
msgid "Hue Variation"
msgstr "Separação:"
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Variation"
+msgstr "Separação:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Variation Random"
+msgstr "Separação:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Variation Curve"
+msgstr "Separação:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Speed Random"
+msgstr "Escala"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Speed Curve"
+msgstr "Dvidir Curva"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Offset Random"
+msgstr "Deslocamento:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Offset Curve"
+msgstr "Fechar Curva"
+
#: scene/2d/joints_2d.cpp
msgid "Node A and Node B must be PhysicsBody2Ds"
msgstr "O Nó A e o Nó B devem ser PhysicsBody2Ds"
@@ -19570,16 +20867,15 @@ msgid "Node A and Node B must be different PhysicsBody2Ds"
msgstr "O Nó A e o Nó B devem ser diferentes PhysicsBody2Ds"
#: scene/2d/joints_2d.cpp scene/3d/physics_joint.cpp
-#, fuzzy
msgid "Node A"
-msgstr "Nodo"
+msgstr "Nó A"
#: scene/2d/joints_2d.cpp scene/3d/physics_joint.cpp
-#, fuzzy
msgid "Node B"
-msgstr "Nodo"
+msgstr "Nó B"
#: scene/2d/joints_2d.cpp scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp
+#: scene/3d/light.cpp scene/3d/physics_joint.cpp
#: scene/resources/environment.cpp
msgid "Bias"
msgstr ""
@@ -19589,7 +20885,7 @@ msgstr ""
msgid "Disable Collision"
msgstr "Botão Desativado"
-#: scene/2d/joints_2d.cpp
+#: scene/2d/joints_2d.cpp scene/3d/physics_joint.cpp
msgid "Softness"
msgstr ""
@@ -19607,7 +20903,7 @@ msgstr "Inicializar"
msgid "Rest Length"
msgstr ""
-#: scene/2d/joints_2d.cpp scene/3d/vehicle_body.cpp
+#: scene/2d/joints_2d.cpp scene/3d/physics_joint.cpp scene/3d/vehicle_body.cpp
msgid "Stiffness"
msgstr ""
@@ -19629,7 +20925,7 @@ msgid "Texture Scale"
msgstr "Região da Textura"
#: scene/2d/light_2d.cpp scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp
-#: scene/resources/environment.cpp scene/resources/sky.cpp
+#: scene/3d/light.cpp scene/resources/environment.cpp scene/resources/sky.cpp
msgid "Energy"
msgstr ""
@@ -19670,12 +20966,6 @@ msgstr "Visão Traseira"
msgid "Gradient Length"
msgstr "Gradiente Editado"
-#: scene/2d/light_2d.cpp scene/gui/control.cpp
-#: scene/resources/navigation_mesh.cpp
-#, fuzzy
-msgid "Filter"
-msgstr "Filtros:"
-
#: scene/2d/light_2d.cpp
#, fuzzy
msgid "Filter Smooth"
@@ -19854,9 +21144,8 @@ msgstr ""
#: scene/2d/node_2d.cpp scene/2d/polygon_2d.cpp scene/3d/spatial.cpp
#: scene/main/canvas_layer.cpp
-#, fuzzy
msgid "Rotation Degrees"
-msgstr "Rotacionando %s degraus."
+msgstr "Graus de Rotação"
#: scene/2d/node_2d.cpp
#, fuzzy
@@ -19864,9 +21153,8 @@ msgid "Global Rotation"
msgstr "Constante"
#: scene/2d/node_2d.cpp
-#, fuzzy
msgid "Global Rotation Degrees"
-msgstr "Rotacionando %s degraus."
+msgstr "Graus de Rotação Global"
#: scene/2d/node_2d.cpp
#, fuzzy
@@ -20115,11 +21403,6 @@ msgid "Applied Forces"
msgstr ""
#: scene/2d/physics_body_2d.cpp
-#, fuzzy
-msgid "Force"
-msgstr "Forçar Push"
-
-#: scene/2d/physics_body_2d.cpp
msgid "Torque"
msgstr ""
@@ -20129,13 +21412,12 @@ msgid "Safe Margin"
msgstr "Definir Margem"
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-#, fuzzy
msgid "Sync To Physics"
-msgstr " (Físico)"
+msgstr "Sincronizar com a Física"
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
#, fuzzy
-msgid "Moving platform"
+msgid "Moving Platform"
msgstr "Movendo saída"
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
@@ -20144,7 +21426,7 @@ msgstr ""
#: scene/2d/physics_body_2d.cpp scene/2d/touch_screen_button.cpp
#: scene/3d/physics_body.cpp scene/gui/texture_button.cpp
-#: scene/resources/line_shape_2d.cpp
+#: scene/resources/line_shape_2d.cpp scene/resources/material.cpp
#, fuzzy
msgid "Normal"
msgstr "Formato"
@@ -20391,6 +21673,34 @@ msgstr ""
"VisibilityEnabler2D funciona melhor quando usado com a raiz da cena editada "
"diretamente como pai."
+#: scene/2d/visibility_notifier_2d.cpp scene/3d/visibility_notifier.cpp
+#, fuzzy
+msgid "Pause Animations"
+msgstr "Colar Animação"
+
+#: scene/2d/visibility_notifier_2d.cpp scene/3d/visibility_notifier.cpp
+msgid "Freeze Bodies"
+msgstr ""
+
+#: scene/2d/visibility_notifier_2d.cpp
+#, fuzzy
+msgid "Pause Particles"
+msgstr "Partículas"
+
+#: scene/2d/visibility_notifier_2d.cpp
+#, fuzzy
+msgid "Pause Animated Sprites"
+msgstr "Colar Animação"
+
+#: scene/2d/visibility_notifier_2d.cpp
+#, fuzzy
+msgid "Process Parent"
+msgstr "Ativar Prioridade"
+
+#: scene/2d/visibility_notifier_2d.cpp
+msgid "Physics Process Parent"
+msgstr ""
+
#: scene/3d/area.cpp
msgid "Reverb Bus"
msgstr ""
@@ -20477,9 +21787,8 @@ msgid "Emission Angle"
msgstr "Cores de Emissão"
#: scene/3d/audio_stream_player_3d.cpp
-#, fuzzy
msgid "Degrees"
-msgstr "Rotacionando %s degraus."
+msgstr "Graus"
#: scene/3d/audio_stream_player_3d.cpp
#, fuzzy
@@ -20491,6 +21800,7 @@ msgid "Attenuation Filter"
msgstr ""
#: scene/3d/audio_stream_player_3d.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
#: servers/audio/effects/audio_effect_filter.cpp
msgid "Cutoff Hz"
msgstr ""
@@ -20535,11 +21845,6 @@ msgid "Octree"
msgstr "Subárvore"
#: scene/3d/baked_lightmap.cpp
-#, fuzzy
-msgid "User Data"
-msgstr "Interface de Usuário"
-
-#: scene/3d/baked_lightmap.cpp
msgid "Finding meshes and lights"
msgstr "Encontrando malhas e luzes"
@@ -20622,9 +21927,8 @@ msgid "Custom Sky"
msgstr "Recortar Nós"
#: scene/3d/baked_lightmap.cpp
-#, fuzzy
msgid "Custom Sky Rotation Degrees"
-msgstr "Rotacionando %s degraus."
+msgstr "Graus de Rotação do Céu Personalizados"
#: scene/3d/baked_lightmap.cpp scene/3d/ray_cast.cpp
#, fuzzy
@@ -20813,6 +22117,16 @@ msgid "Ring Axis"
msgstr "Avisos"
#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Rotate Y"
+msgstr "Rotacionar"
+
+#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Disable Z"
+msgstr "Item Desativado"
+
+#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
msgid "Flatness"
msgstr ""
@@ -20853,16 +22167,11 @@ msgstr "Biblioteca Dinâmica"
msgid "Dynamic Range"
msgstr "Biblioteca Dinâmica"
-#: scene/3d/gi_probe.cpp
+#: scene/3d/gi_probe.cpp scene/3d/light.cpp
msgid "Normal Bias"
msgstr ""
#: scene/3d/gi_probe.cpp
-#, fuzzy
-msgid "Compress"
-msgstr "Componentes"
-
-#: scene/3d/gi_probe.cpp
msgid "Plotting Meshes"
msgstr "Planejando Malhas"
@@ -20894,16 +22203,31 @@ msgstr ""
#: scene/3d/light.cpp
#, fuzzy
+msgid "Indirect Energy"
+msgstr "Cores de Emissão"
+
+#: scene/3d/light.cpp
+#, fuzzy
msgid "Negative"
msgstr "GDNative"
#: scene/3d/light.cpp
#, fuzzy
+msgid "Specular"
+msgstr "Modo de Régua"
+
+#: scene/3d/light.cpp
+#, fuzzy
msgid "Bake Mode"
msgstr "Modo Bitmask"
#: scene/3d/light.cpp
#, fuzzy
+msgid "Contact"
+msgstr "Escolher Cor"
+
+#: scene/3d/light.cpp
+#, fuzzy
msgid "Reverse Cull Face"
msgstr "Redefinir Volume do Canal"
@@ -20914,11 +22238,31 @@ msgstr "Direções"
#: scene/3d/light.cpp
#, fuzzy
+msgid "Split 1"
+msgstr "Dividir"
+
+#: scene/3d/light.cpp
+#, fuzzy
+msgid "Split 2"
+msgstr "Dividir"
+
+#: scene/3d/light.cpp
+#, fuzzy
+msgid "Split 3"
+msgstr "Dividir"
+
+#: scene/3d/light.cpp
+#, fuzzy
msgid "Blend Splits"
msgstr "Tempos de Mistura:"
#: scene/3d/light.cpp
#, fuzzy
+msgid "Bias Split Scale"
+msgstr "Usar Encaixe Escalar"
+
+#: scene/3d/light.cpp
+#, fuzzy
msgid "Depth Range"
msgstr "Profundidade"
@@ -20944,14 +22288,18 @@ msgstr "Um SpotLight com um ângulo maior que 90 graus não pode criar sombras."
msgid "Spot"
msgstr ""
+#: scene/3d/light.cpp
+#, fuzzy
+msgid "Angle Attenuation"
+msgstr "Animação"
+
#: scene/3d/mesh_instance.cpp
msgid "Software Skinning"
msgstr ""
#: scene/3d/mesh_instance.cpp
-#, fuzzy
msgid "Transform Normals"
-msgstr "Transformação Abortada."
+msgstr "Normais de Transformação"
#: scene/3d/navigation.cpp scene/resources/curve.cpp
#, fuzzy
@@ -21084,6 +22432,63 @@ msgstr "Eixo"
#: scene/3d/physics_body.cpp
#, fuzzy
+msgid "Linear X"
+msgstr "Linear"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Linear Y"
+msgstr "Linear"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Linear Z"
+msgstr "Linear"
+
+#: scene/3d/physics_body.cpp
+msgid "Angular X"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Angular Y"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Angular Z"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Motion X"
+msgstr "Ação"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Motion Y"
+msgstr "Ação"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Motion Z"
+msgstr "Ação"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Move Lock X"
+msgstr "Mover Nó"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Move Lock Y"
+msgstr "Mover Nó"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Move Lock Z"
+msgstr "Mover Nó"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
msgid "Body Offset"
msgstr "Deslocamento:"
@@ -21117,6 +22522,15 @@ msgid "Exclude Nodes"
msgstr "Excluir Nós"
#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Params"
+msgstr "Parâmetro Modificado:"
+
+#: scene/3d/physics_joint.cpp
+msgid "Impulse Clamp"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit"
msgstr ""
@@ -21130,6 +22544,55 @@ msgstr "Maiúscula"
msgid "Lower"
msgstr "Minúscula"
+#: scene/3d/physics_joint.cpp scene/3d/vehicle_body.cpp
+#, fuzzy
+msgid "Relaxation"
+msgstr "Separação:"
+
+#: scene/3d/physics_joint.cpp
+msgid "Motor"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Target Velocity"
+msgstr "Orbitar Visão para a Direita"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Max Impulse"
+msgstr "Velocidade:"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit"
+msgstr "Linear"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Upper Distance"
+msgstr "Escolha uma Distância:"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Lower Distance"
+msgstr "Escolha uma Distância:"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Restitution"
+msgstr "Descrição"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motion"
+msgstr "Inicializar"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Ortho"
+msgstr "Ortogonal Traseira"
+
#: scene/3d/physics_joint.cpp
#, fuzzy
msgid "Upper Angle"
@@ -21142,6 +22605,16 @@ msgstr "Minúscula"
#: scene/3d/physics_joint.cpp
#, fuzzy
+msgid "Angular Motion"
+msgstr "Animação"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Angular Ortho"
+msgstr "Erro Angular Max.:"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
msgid "Swing Span"
msgstr "Salvando Cena"
@@ -21150,17 +22623,99 @@ msgid "Twist Span"
msgstr ""
#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit X"
+msgstr "Linear"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motor X"
+msgstr "Inicializar"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Force Limit"
+msgstr "Chamadas de Desenho:"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Spring X"
+msgstr "Linear"
+
+#: scene/3d/physics_joint.cpp
+msgid "Equilibrium Point"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit X"
msgstr ""
#: scene/3d/physics_joint.cpp
+msgid "Erp"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Motor X"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Spring X"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit Y"
+msgstr "Linear"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motor Y"
+msgstr "Inicializar"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Spring Y"
+msgstr "Linear"
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit Y"
msgstr ""
#: scene/3d/physics_joint.cpp
+msgid "Angular Motor Y"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Spring Y"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit Z"
+msgstr "Linear"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motor Z"
+msgstr "Inicializar"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Spring Z"
+msgstr "Linear"
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit Z"
msgstr ""
+#: scene/3d/physics_joint.cpp
+msgid "Angular Motor Z"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Spring Z"
+msgstr ""
+
#: scene/3d/portal.cpp
msgid "The RoomManager should not be a child or grandchild of a Portal."
msgstr "O RoomManager não deve ser filho ou neto de um Portal."
@@ -21174,9 +22729,8 @@ msgid "A RoomGroup should not be a child or grandchild of a Portal."
msgstr "Um RoomGroup não deve ser filho ou neto de um Portal."
#: scene/3d/portal.cpp
-#, fuzzy
msgid "Portal Active"
-msgstr " [portais ativados]"
+msgstr "Portal Ativo"
#: scene/3d/portal.cpp scene/resources/occluder_shape_polygon.cpp
msgid "Two Way"
@@ -21282,7 +22836,7 @@ msgstr ""
msgid "Use Default Simplify"
msgstr ""
-#: scene/3d/room.cpp
+#: scene/3d/room.cpp scene/3d/room_manager.cpp
msgid "Room Simplify"
msgstr ""
@@ -21323,6 +22877,13 @@ msgstr "Só Deve existir um RoomManager na SceneTree."
msgid "Main"
msgstr ""
+#: scene/3d/room_manager.cpp scene/animation/animation_player.cpp
+#: scene/animation/animation_tree.cpp scene/animation/animation_tree_player.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+#, fuzzy
+msgid "Active"
+msgstr "Ação"
+
#: scene/3d/room_manager.cpp
msgid "Roomlist"
msgstr ""
@@ -21347,6 +22908,54 @@ msgid "Gameplay"
msgstr ""
#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Gameplay Monitor"
+msgstr "Monitor"
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Use Secondary PVS"
+msgstr "Usar Encaixe Escalar"
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Merge Meshes"
+msgstr "Malha"
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Show Margins"
+msgstr "Mostrar Origem"
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Debug Sprawl"
+msgstr "Depuração"
+
+#: scene/3d/room_manager.cpp
+msgid "Overlap Warning Threshold"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Preview Camera"
+msgstr "Visualização"
+
+#: scene/3d/room_manager.cpp
+msgid "Portal Depth Limit"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Default Portal Margin"
+msgstr "Definir Margem"
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Roaming Expansion Margin"
+msgstr "Expandir Tudo"
+
+#: scene/3d/room_manager.cpp
msgid ""
"RoomList path is invalid.\n"
"Please check the RoomList branch has been assigned in the RoomManager."
@@ -21406,9 +23015,8 @@ msgid "Parent Collision Ignore"
msgstr "Criar polígono de colisão"
#: scene/3d/soft_body.cpp
-#, fuzzy
msgid "Simulation Precision"
-msgstr "Ãrvore de Animação é inválida."
+msgstr "Precisão de Simulação"
#: scene/3d/soft_body.cpp
#, fuzzy
@@ -21488,6 +23096,21 @@ msgstr "Snap de Pixel"
msgid "Billboard"
msgstr ""
+#: scene/3d/sprite_3d.cpp scene/resources/material.cpp
+#, fuzzy
+msgid "Transparent"
+msgstr "Transpor"
+
+#: scene/3d/sprite_3d.cpp
+#, fuzzy
+msgid "Shaded"
+msgstr "Shader"
+
+#: scene/3d/sprite_3d.cpp
+#, fuzzy
+msgid "Double Sided"
+msgstr "Clique Duplo"
+
#: scene/3d/sprite_3d.cpp
msgid "Alpha Cut"
msgstr ""
@@ -21540,9 +23163,8 @@ msgid "Use As Steering"
msgstr ""
#: scene/3d/vehicle_body.cpp
-#, fuzzy
msgid "Wheel"
-msgstr "Roda para Cima."
+msgstr "Roda"
#: scene/3d/vehicle_body.cpp
msgid "Roll Influence"
@@ -21563,11 +23185,6 @@ msgstr "Expressão"
msgid "Max Force"
msgstr "Erro"
-#: scene/3d/vehicle_body.cpp
-#, fuzzy
-msgid "Relaxation"
-msgstr "Separação:"
-
#: scene/3d/visibility_notifier.cpp
msgid "AABB"
msgstr ""
@@ -21711,7 +23328,7 @@ msgstr "Tempo do X-Fade (s):"
#: scene/animation/animation_blend_tree.cpp
#, fuzzy
-msgid "autorestart_"
+msgid "Auto Restart"
msgstr "Reinício Automático:"
#: scene/animation/animation_blend_tree.cpp
@@ -21797,13 +23414,6 @@ msgstr "Opções da Classe:"
msgid "Default Blend Time"
msgstr "Tema Padrão"
-#: scene/animation/animation_player.cpp scene/animation/animation_tree.cpp
-#: scene/animation/animation_tree_player.cpp
-#: servers/audio/effects/audio_effect_delay.cpp
-#, fuzzy
-msgid "Active"
-msgstr "Ação"
-
#: scene/animation/animation_player.cpp
msgid "Method Call Mode"
msgstr ""
@@ -21930,10 +23540,6 @@ msgstr "Reparentar Nó"
msgid "Max Iterations"
msgstr "Criar Função"
-#: scene/animation/tween.cpp scene/resources/texture.cpp
-msgid "Repeat"
-msgstr ""
-
#: scene/animation/tween.cpp
msgid "Playback Process Mode"
msgstr ""
@@ -21964,20 +23570,6 @@ msgstr "Modo de Seleção"
msgid "Alignment"
msgstr ""
-#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
-#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
-#: scene/resources/style_box.cpp
-#, fuzzy
-msgid "Horizontal"
-msgstr "Horizontal:"
-
-#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
-#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
-#: scene/resources/style_box.cpp
-#, fuzzy
-msgid "Vertical"
-msgstr "Vertical:"
-
#: scene/gui/base_button.cpp
#, fuzzy
msgid "Shortcut In Tooltip"
@@ -22080,10 +23672,6 @@ msgid "HSV"
msgstr "HSV"
#: scene/gui/color_picker.cpp
-msgid "Raw"
-msgstr "Bruto"
-
-#: scene/gui/color_picker.cpp
msgid "Switch between hexadecimal and code values."
msgstr "Alterne entre valores haxadecimais e de código."
@@ -22150,22 +23738,45 @@ msgid "Focus"
msgstr "Habilitar"
#: scene/gui/control.cpp
-msgid "Mouse"
+msgid "Neighbour Left"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Neighbour Top"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Neighbour Right"
msgstr ""
#: scene/gui/control.cpp
#, fuzzy
+msgid "Neighbour Bottom"
+msgstr "Centro Inferior"
+
+#: scene/gui/control.cpp
+msgid "Next"
+msgstr "Próximo"
+
+#: scene/gui/control.cpp
+msgid "Previous"
+msgstr "Anterior"
+
+#: scene/gui/control.cpp
+msgid "Mouse"
+msgstr ""
+
+#: scene/gui/control.cpp
msgid "Default Cursor Shape"
-msgstr "Carregar o Layout de Canais padrão."
+msgstr "Forma do Cursor Padrão"
#: scene/gui/control.cpp
msgid "Pass On Modal Close Click"
msgstr ""
#: scene/gui/control.cpp
-#, fuzzy
msgid "Size Flags"
-msgstr "Tamanho: "
+msgstr "Sinalizadores de Tamanho"
#: scene/gui/control.cpp
#, fuzzy
@@ -22187,7 +23798,7 @@ msgid "Dialog"
msgstr "Diálogo XForm"
#: scene/gui/dialogs.cpp
-msgid "Hide On Ok"
+msgid "Hide On OK"
msgstr ""
#: scene/gui/dialogs.cpp scene/gui/label.cpp
@@ -22286,7 +23897,7 @@ msgid "Timers"
msgstr "Tempo"
#: scene/gui/item_list.cpp scene/gui/popup_menu.cpp scene/gui/tree.cpp
-msgid "Incremental Search Max Interval (msec)"
+msgid "Incremental Search Max Interval Msec"
msgstr ""
#: scene/gui/item_list.cpp scene/gui/tree.cpp
@@ -22536,9 +24147,8 @@ msgid "Max Value"
msgstr "Valor"
#: scene/gui/range.cpp
-#, fuzzy
msgid "Page"
-msgstr "Página: "
+msgstr "Página"
#: scene/gui/range.cpp
#, fuzzy
@@ -22726,9 +24336,8 @@ msgid "All Tabs In Front"
msgstr ""
#: scene/gui/tab_container.cpp scene/gui/tabs.cpp
-#, fuzzy
msgid "Drag To Rearrange Enabled"
-msgstr "Arrastar e soltar para reorganizar."
+msgstr "Arrastar Para Reorganizar Ativado"
#: scene/gui/tab_container.cpp
msgid "Use Hidden Tabs For Min Size"
@@ -22860,9 +24469,8 @@ msgid "Initial Angle"
msgstr "Inicializar"
#: scene/gui/texture_progress.cpp
-#, fuzzy
msgid "Fill Degrees"
-msgstr "Rotacionando %s degraus."
+msgstr "Graus de Preenchimento"
#: scene/gui/texture_progress.cpp scene/resources/primitive_meshes.cpp
#, fuzzy
@@ -22874,6 +24482,26 @@ msgstr "Centro Esquerda"
msgid "Nine Patch Stretch"
msgstr "Modo de Interpolação"
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Left"
+msgstr "Definir Margem"
+
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Top"
+msgstr "Definir Margem"
+
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Right"
+msgstr "Definir Margem"
+
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Bottom"
+msgstr "Modo de Seleção"
+
#: scene/gui/tree.cpp
msgid "Custom Minimum Height"
msgstr ""
@@ -22911,8 +24539,9 @@ msgid "Paused"
msgstr ""
#: scene/gui/video_player.cpp
-msgid "Buffering (msec)"
-msgstr ""
+#, fuzzy
+msgid "Buffering Msec"
+msgstr "Visão Traseira"
#: scene/gui/video_player.cpp
#, fuzzy
@@ -22948,9 +24577,8 @@ msgid "Max Redirects"
msgstr ""
#: scene/main/http_request.cpp
-#, fuzzy
msgid "Timeout"
-msgstr "Tempo esgotado."
+msgstr "Tempo esgotado"
#: scene/main/node.cpp
#, fuzzy
@@ -23081,9 +24709,8 @@ msgid "Draw 2D Outlines"
msgstr "Criar Contorno"
#: scene/main/scene_tree.cpp servers/visual_server.cpp
-#, fuzzy
msgid "Reflections"
-msgstr "Direções"
+msgstr "Reflexões"
#: scene/main/scene_tree.cpp
#, fuzzy
@@ -23275,6 +24902,22 @@ msgid "Shadow Atlas"
msgstr "Novo Atlas"
#: scene/main/viewport.cpp
+msgid "Quad 0"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 1"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 2"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 3"
+msgstr ""
+
+#: scene/main/viewport.cpp
#, fuzzy
msgid "Canvas Transform"
msgstr "Limpar Transformação"
@@ -23289,6 +24932,11 @@ msgid "Tooltip Delay (sec)"
msgstr ""
#: scene/register_scene_types.cpp
+#, fuzzy
+msgid "Swap OK Cancel"
+msgstr "Cancelar (UI)"
+
+#: scene/register_scene_types.cpp
msgid "Use hiDPI"
msgstr ""
@@ -23303,21 +24951,6 @@ msgid "Custom Font"
msgstr "Recortar Nós"
#: scene/resources/audio_stream_sample.cpp
-#, fuzzy
-msgid "Loop Mode"
-msgstr "Modo de Movimentação"
-
-#: scene/resources/audio_stream_sample.cpp
-#, fuzzy
-msgid "Loop Begin"
-msgstr "Modo de Movimentação"
-
-#: scene/resources/audio_stream_sample.cpp
-#, fuzzy
-msgid "Loop End"
-msgstr "Modo de Movimentação"
-
-#: scene/resources/audio_stream_sample.cpp
#: servers/audio/effects/audio_stream_generator.cpp servers/audio_server.cpp
#, fuzzy
msgid "Mix Rate"
@@ -23377,6 +25010,17 @@ msgstr "Opções Extra:"
#: scene/resources/dynamic_font.cpp
#, fuzzy
+msgid "Char"
+msgstr "Caracteres válidos:"
+
+#: scene/resources/dynamic_font.cpp scene/resources/world.cpp
+#: scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Space"
+msgstr "Cena Principal"
+
+#: scene/resources/dynamic_font.cpp
+#, fuzzy
msgid "Font"
msgstr "Fontes"
@@ -23409,9 +25053,8 @@ msgid "Sky Rotation"
msgstr "Passo de Rotação:"
#: scene/resources/environment.cpp
-#, fuzzy
msgid "Sky Rotation Degrees"
-msgstr "Rotacionando %s degraus."
+msgstr "Graus de Rotação do Céu"
#: scene/resources/environment.cpp
msgid "Canvas Max Layer"
@@ -23591,9 +25234,8 @@ msgid "Distance"
msgstr "Escolha uma Distância:"
#: scene/resources/environment.cpp
-#, fuzzy
msgid "Transition"
-msgstr "Transição: "
+msgstr "Transição"
#: scene/resources/environment.cpp
msgid "DOF Near Blur"
@@ -23604,6 +25246,44 @@ msgid "Glow"
msgstr ""
#: scene/resources/environment.cpp
+#, fuzzy
+msgid "Levels"
+msgstr "Desenvolvedores"
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "1"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "2"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+#, fuzzy
+msgid "3"
+msgstr "3D"
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "4"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "5"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "6"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "7"
+msgstr ""
+
+#: scene/resources/environment.cpp
msgid "Bloom"
msgstr ""
@@ -23639,9 +25319,8 @@ msgid "Saturation"
msgstr "Separação:"
#: scene/resources/environment.cpp
-#, fuzzy
msgid "Color Correction"
-msgstr "Função cor."
+msgstr "Correção de Cor"
#: scene/resources/font.cpp
msgid "Chars"
@@ -23696,10 +25375,68 @@ msgid "Next Pass"
msgstr "Próximo Plano"
#: scene/resources/material.cpp
+msgid "Use Shadow To Opacity"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Unshaded"
+msgstr "Exibir Sem Sombreamento"
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Vertex Lighting"
+msgstr "Iluminação direta"
+
+#: scene/resources/material.cpp
+msgid "No Depth Test"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Use Point Size"
+msgstr "Visão Frontal"
+
+#: scene/resources/material.cpp
+msgid "World Triplanar"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Fixed Size"
+msgstr "Visão Frontal"
+
+#: scene/resources/material.cpp
+msgid "Albedo Tex Force sRGB"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Do Not Receive Shadows"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Disable Ambient Light"
+msgstr "Recuar Direita"
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Ensure Correct Normals"
+msgstr "Normais de Transformação"
+
+#: scene/resources/material.cpp
#, fuzzy
msgid "Vertex Color"
msgstr "Vértice"
+#: scene/resources/material.cpp
+msgid "Use As Albedo"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Is sRGB"
+msgstr ""
+
#: scene/resources/material.cpp servers/visual_server.cpp
#, fuzzy
msgid "Parameters"
@@ -23736,6 +25473,11 @@ msgid "Billboard Mode"
msgstr "Modo de Régua"
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Billboard Keep Scale"
+msgstr "Modo de Régua"
+
+#: scene/resources/material.cpp
msgid "Grow"
msgstr ""
@@ -23745,6 +25487,10 @@ msgid "Grow Amount"
msgstr "Quantidade:"
#: scene/resources/material.cpp
+msgid "Use Alpha Scissor"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Alpha Scissor Threshold"
msgstr ""
@@ -23776,10 +25522,20 @@ msgid "Metallic Specular"
msgstr ""
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Metallic Texture"
+msgstr "Textura Normal"
+
+#: scene/resources/material.cpp
msgid "Metallic Texture Channel"
msgstr ""
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Roughness Texture"
+msgstr "Remover textura"
+
+#: scene/resources/material.cpp
msgid "Roughness Texture Channel"
msgstr ""
@@ -23799,6 +25555,16 @@ msgid "Emission Operator"
msgstr "Cores de Emissão"
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Emission On UV2"
+msgstr "Máscara de Emissão"
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Emission Texture"
+msgstr "Origem da Emissão: "
+
+#: scene/resources/material.cpp
msgid "NormalMap"
msgstr ""
@@ -23813,6 +25579,11 @@ msgstr "Inclinação aleatória:"
#: scene/resources/material.cpp
#, fuzzy
+msgid "Rim Texture"
+msgstr "Remover textura"
+
+#: scene/resources/material.cpp
+#, fuzzy
msgid "Clearcoat"
msgstr "Limpar"
@@ -23822,15 +25593,28 @@ msgid "Clearcoat Gloss"
msgstr "Limpar Pose"
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Clearcoat Texture"
+msgstr "Tema do Editor"
+
+#: scene/resources/material.cpp
msgid "Anisotropy"
msgstr ""
#: scene/resources/material.cpp
+msgid "Anisotropy Flowmap"
+msgstr ""
+
+#: scene/resources/material.cpp
#, fuzzy
msgid "Ambient Occlusion"
msgstr "Oclusão"
#: scene/resources/material.cpp
+msgid "On UV2"
+msgstr ""
+
+#: scene/resources/material.cpp
#, fuzzy
msgid "Texture Channel"
msgstr "Região da Textura"
@@ -23863,9 +25647,13 @@ msgid "Subsurf Scatter"
msgstr ""
#: scene/resources/material.cpp
-#, fuzzy
msgid "Transmission"
-msgstr "Transição: "
+msgstr "Transmissão"
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Transmission Texture"
+msgstr "Transmissão"
#: scene/resources/material.cpp
#, fuzzy
@@ -23887,6 +25675,10 @@ msgid "UV1"
msgstr "UV"
#: scene/resources/material.cpp
+msgid "Triplanar"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Triplanar Sharpness"
msgstr ""
@@ -23924,14 +25716,12 @@ msgid "Custom AABB"
msgstr ""
#: scene/resources/multimesh.cpp
-#, fuzzy
msgid "Color Format"
-msgstr "Operador de cor."
+msgstr "Formato de Cor"
#: scene/resources/multimesh.cpp
-#, fuzzy
msgid "Transform Format"
-msgstr "Transformação Abortada."
+msgstr "Formato de Transformação"
#: scene/resources/multimesh.cpp
msgid "Custom Data Format"
@@ -23947,9 +25737,8 @@ msgid "Visible Instance Count"
msgstr ""
#: scene/resources/multimesh.cpp
-#, fuzzy
msgid "Transform Array"
-msgstr "Transformação Abortada."
+msgstr "Matriz de Transformação"
#: scene/resources/multimesh.cpp
#, fuzzy
@@ -23972,9 +25761,8 @@ msgid "Sample Partition Type"
msgstr "Definir o Tipo da Variável"
#: scene/resources/navigation_mesh.cpp
-#, fuzzy
msgid "Parsed Geometry Type"
-msgstr "Analisando Geometria..."
+msgstr "Tipo de Geometria Analisada"
#: scene/resources/navigation_mesh.cpp
msgid "Source Geometry Mode"
@@ -24083,9 +25871,8 @@ msgid "Point Texture"
msgstr "Pontos de Emissão:"
#: scene/resources/particles_material.cpp
-#, fuzzy
msgid "Normal Texture"
-msgstr "Origem da Emissão: "
+msgstr "Textura Normal"
#: scene/resources/particles_material.cpp
#, fuzzy
@@ -24097,6 +25884,16 @@ msgstr "Tema do Editor"
msgid "Point Count"
msgstr "Adicionar porta de entrada"
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Scale Random"
+msgstr "Razão de Escala:"
+
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Scale Curve"
+msgstr "Fechar Curva"
+
#: scene/resources/physics_material.cpp
msgid "Rough"
msgstr ""
@@ -24159,10 +25956,6 @@ msgid "A"
msgstr ""
#: scene/resources/shader.cpp
-msgid "Code"
-msgstr ""
-
-#: scene/resources/shader.cpp
#, fuzzy
msgid "Custom Defines"
msgstr "Rodar Outra Cena"
@@ -24259,15 +26052,6 @@ msgstr ""
#: scene/resources/texture.cpp
#, fuzzy
-msgid "Storage"
-msgstr "Armazenando Arquivo:"
-
-#: scene/resources/texture.cpp
-msgid "Lossy Quality"
-msgstr ""
-
-#: scene/resources/texture.cpp
-#, fuzzy
msgid "Load Path"
msgstr "Carregar Predefinição"
@@ -24277,9 +26061,8 @@ msgid "Base Texture"
msgstr "Remover textura"
#: scene/resources/texture.cpp
-#, fuzzy
msgid "Image Size"
-msgstr "Página: "
+msgstr "Tamanho da Imagem"
#: scene/resources/texture.cpp
#, fuzzy
@@ -24398,11 +26181,6 @@ msgstr "Função de comparação inválida para esse tipo."
msgid "Fallback Environment"
msgstr "Visualizar Ambiente"
-#: scene/resources/world.cpp scene/resources/world_2d.cpp
-#, fuzzy
-msgid "Space"
-msgstr "Cena Principal"
-
#: scene/resources/world.cpp
#, fuzzy
msgid "Scenario"
@@ -24483,10 +26261,37 @@ msgstr ""
msgid "Wet"
msgstr ""
-#: servers/audio/effects/audio_effect_compressor.cpp
-msgid "Threshold"
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "Voice"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+msgid "Delay (ms)"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_phaser.cpp
+msgid "Rate Hz"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#, fuzzy
+msgid "Depth (ms)"
+msgstr "Profundidade"
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+msgid "Level dB"
msgstr ""
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+#: servers/audio/effects/audio_effect_panner.cpp
+#, fuzzy
+msgid "Pan"
+msgstr "Plano:"
+
#: servers/audio/effects/audio_effect_compressor.cpp
#: servers/audio/effects/audio_effect_filter.cpp
msgid "Gain"
@@ -24510,20 +26315,6 @@ msgid "Tap 1"
msgstr ""
#: servers/audio/effects/audio_effect_delay.cpp
-msgid "Delay (ms)"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_delay.cpp
-msgid "Level dB"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_delay.cpp
-#: servers/audio/effects/audio_effect_panner.cpp
-#, fuzzy
-msgid "Pan"
-msgstr "Plano:"
-
-#: servers/audio/effects/audio_effect_delay.cpp
msgid "Tap 2"
msgstr ""
@@ -24585,10 +26376,6 @@ msgstr ""
msgid "Range Max Hz"
msgstr ""
-#: servers/audio/effects/audio_effect_phaser.cpp
-msgid "Rate Hz"
-msgstr ""
-
#: servers/audio/effects/audio_effect_pitch_shift.cpp
msgid "Oversampling"
msgstr ""
@@ -24604,7 +26391,7 @@ msgid "Predelay"
msgstr ""
#: servers/audio/effects/audio_effect_reverb.cpp
-msgid "(msec)"
+msgid "Msec"
msgstr ""
#: servers/audio/effects/audio_effect_reverb.cpp
@@ -24625,9 +26412,8 @@ msgid "Pan Pullout"
msgstr ""
#: servers/audio/effects/audio_effect_stereo_enhance.cpp
-#, fuzzy
msgid "Time Pullout (ms)"
-msgstr "Tempo esgotado."
+msgstr "Retirada de Tempo (ms)"
#: servers/audio/effects/audio_effect_stereo_enhance.cpp
msgid "Surround"
@@ -24817,9 +26603,8 @@ msgid "Constants cannot be modified."
msgstr "Constantes não podem serem modificadas."
#: servers/visual/visual_server_scene.cpp
-#, fuzzy
msgid "Spatial Partitioning"
-msgstr "Particionando..."
+msgstr "Particionamento Espacial"
#: servers/visual_server.cpp
#, fuzzy
@@ -25007,9 +26792,8 @@ msgid "Legacy Stream"
msgstr ""
#: servers/visual_server.cpp
-#, fuzzy
msgid "Batching"
-msgstr "Procurando..."
+msgstr "Loteamento"
#: servers/visual_server.cpp
msgid "Use Batching"
@@ -25037,9 +26821,8 @@ msgid "Scissor Area Threshold"
msgstr ""
#: servers/visual_server.cpp
-#, fuzzy
msgid "Max Join Items"
-msgstr "Gerenciar Itens..."
+msgstr "Máximo de Itens de Junção"
#: servers/visual_server.cpp
msgid "Batch Buffer Size"
diff --git a/editor/translations/ro.po b/editor/translations/ro.po
index 4a40aa107b..945f682131 100644
--- a/editor/translations/ro.po
+++ b/editor/translations/ro.po
@@ -34,7 +34,7 @@ msgstr ""
"20)) ? 1 : 2;\n"
"X-Generator: Weblate 4.10-dev\n"
-#: core/bind/core_bind.cpp
+#: core/bind/core_bind.cpp main/main.cpp
msgid "Tablet Driver"
msgstr ""
@@ -135,8 +135,8 @@ msgstr "Poziția Dock-ului"
#: core/bind/core_bind.cpp editor/editor_settings.cpp main/main.cpp
#: modules/gdscript/gdscript_editor.cpp modules/gridmap/grid_map.cpp
#: modules/mono/csharp_script.cpp modules/visual_script/visual_script_nodes.cpp
-#: scene/2d/tile_map.cpp scene/3d/camera.cpp scene/gui/control.cpp
-#: scene/gui/graph_edit.cpp scene/main/viewport.cpp
+#: scene/2d/tile_map.cpp scene/3d/camera.cpp scene/3d/light.cpp
+#: scene/gui/control.cpp scene/gui/graph_edit.cpp scene/main/viewport.cpp
#: scene/resources/dynamic_font.cpp scene/resources/navigation_mesh.cpp
#: scene/resources/primitive_meshes.cpp scene/resources/sky.cpp
#: scene/resources/style_box.cpp scene/resources/texture.cpp
@@ -240,8 +240,7 @@ msgid "Data"
msgstr ""
#: core/io/file_access_network.cpp core/register_core_types.cpp
-#: editor/editor_settings.cpp editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp main/main.cpp
+#: editor/editor_settings.cpp main/main.cpp
#: modules/gdscript/language_server/gdscript_language_server.cpp
#, fuzzy
msgid "Network"
@@ -522,9 +521,10 @@ msgstr "Presetare"
msgid "Relative"
msgstr "Snap Relativ"
-#: core/os/input_event.cpp scene/2d/camera_2d.cpp
-#: scene/3d/interpolated_camera.cpp scene/animation/animation_player.cpp
-#: scene/resources/environment.cpp
+#: core/os/input_event.cpp scene/2d/camera_2d.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/interpolated_camera.cpp
+#: scene/animation/animation_player.cpp scene/resources/environment.cpp
+#: scene/resources/particles_material.cpp
#, fuzzy
msgid "Speed"
msgstr "Dimensiune:"
@@ -574,8 +574,9 @@ msgstr "Sincronizează Modificările Scriptului"
msgid "Pitch"
msgstr "Dimensiune:"
-#: core/os/input_event.cpp scene/2d/physics_body_2d.cpp
-#: scene/3d/physics_body.cpp
+#: core/os/input_event.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/physics_body_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/3d/physics_body.cpp scene/resources/particles_material.cpp
msgid "Velocity"
msgstr ""
@@ -593,6 +594,8 @@ msgid "Controller Value"
msgstr ""
#: core/project_settings.cpp editor/editor_node.cpp main/main.cpp
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/windows/export/export.cpp
#, fuzzy
msgid "Application"
msgstr "Acțiune"
@@ -611,13 +614,16 @@ msgstr "Setări proiect..."
#: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp
#: editor/editor_plugin_settings.cpp editor/editor_profiler.cpp
#: editor/project_manager.cpp editor/settings_config_dialog.cpp
-#: modules/gdnative/nativescript/nativescript.cpp scene/2d/area_2d.cpp
-#: scene/3d/area.cpp scene/main/node.cpp
+#: modules/gdnative/nativescript/nativescript.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/osx/export/export.cpp scene/2d/area_2d.cpp scene/3d/area.cpp
+#: scene/main/node.cpp
msgid "Name"
msgstr "Nume"
#: core/project_settings.cpp editor/editor_help.cpp
-#: modules/visual_script/visual_script_nodes.cpp
+#: modules/visual_script/visual_script_nodes.cpp platform/uwp/export/export.cpp
+#: platform/windows/export/export.cpp
msgid "Description"
msgstr "Descriere"
@@ -655,7 +661,7 @@ msgid "Custom User Dir Name"
msgstr ""
#: core/project_settings.cpp editor/animation_track_editor.cpp
-#: editor/editor_audio_buses.cpp servers/audio_server.cpp
+#: editor/editor_audio_buses.cpp main/main.cpp servers/audio_server.cpp
msgid "Audio"
msgstr "Sunet"
@@ -818,10 +824,13 @@ msgstr "Filtre:"
msgid "Sharpen Intensity"
msgstr ""
-#: core/project_settings.cpp editor/editor_node.cpp editor/editor_settings.cpp
-#: editor/plugins/script_editor_plugin.cpp editor/project_export.cpp
-#: main/main.cpp modules/gdscript/gdscript.cpp
-#: modules/visual_script/visual_script.cpp scene/3d/room_manager.cpp
+#: core/project_settings.cpp editor/editor_export.cpp editor/editor_node.cpp
+#: editor/editor_settings.cpp editor/plugins/script_editor_plugin.cpp
+#: editor/project_export.cpp main/main.cpp modules/gdscript/gdscript.cpp
+#: modules/visual_script/visual_script.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp scene/3d/room_manager.cpp
#: scene/main/scene_tree.cpp scene/resources/shape_2d.cpp
#: servers/visual_server.cpp
msgid "Debug"
@@ -1056,6 +1065,7 @@ msgid "Subsurface Scattering"
msgstr ""
#: drivers/gles3/rasterizer_scene_gles3.cpp
+#: editor/import/resource_importer_texture.cpp
#: editor/plugins/spatial_editor_plugin.cpp modules/gltf/gltf_node.cpp
#: modules/gridmap/grid_map.cpp scene/2d/cpu_particles_2d.cpp
#: scene/2d/node_2d.cpp scene/2d/parallax_layer.cpp scene/2d/polygon_2d.cpp
@@ -1355,6 +1365,7 @@ msgid "Editors"
msgstr "Editor"
#: editor/animation_track_editor.cpp editor/editor_settings.cpp
+#: editor/import/resource_importer_scene.cpp
#: editor/plugins/animation_player_editor_plugin.cpp editor/scene_tree_dock.cpp
#: scene/2d/animated_sprite.cpp scene/2d/cpu_particles_2d.cpp
#: scene/2d/sprite.cpp scene/3d/cpu_particles.cpp scene/3d/sprite_3d.cpp
@@ -1589,14 +1600,14 @@ msgstr "Pasul Animației."
msgid "Seconds"
msgstr "Secunde"
-#: editor/animation_track_editor.cpp
+#: editor/animation_track_editor.cpp editor/import/resource_importer_scene.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp main/main.cpp
#: scene/resources/texture.cpp
msgid "FPS"
msgstr "FPS(cadre pe secundă)"
#: editor/animation_track_editor.cpp editor/editor_plugin_settings.cpp
-#: editor/editor_resource_picker.cpp
+#: editor/editor_resource_picker.cpp editor/import/resource_importer_wav.cpp
#: editor/plugins/polygon_2d_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
@@ -2568,7 +2579,9 @@ msgid "Remove Autoload"
msgstr "Eliminați Autoload"
#: editor/editor_autoload_settings.cpp editor/editor_plugin_settings.cpp
-#: modules/gdscript/gdscript.cpp scene/2d/polygon_2d.cpp scene/3d/area.cpp
+#: modules/gdscript/gdscript.cpp platform/android/export/export_plugin.cpp
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#: scene/2d/polygon_2d.cpp scene/3d/area.cpp scene/3d/physics_joint.cpp
#: scene/3d/reflection_probe.cpp scene/main/canvas_layer.cpp
#: scene/resources/material.cpp servers/visual_server.cpp
msgid "Enable"
@@ -2740,6 +2753,58 @@ msgstr ""
#: editor/editor_export.cpp platform/android/export/export_plugin.cpp
#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Custom Template"
+msgstr "Membri"
+
+#: editor/editor_export.cpp editor/project_export.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp
+msgid "Release"
+msgstr ""
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Binary Format"
+msgstr "Culoare uniformă."
+
+#: editor/editor_export.cpp
+msgid "64 Bits"
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Embed PCK"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Texture Format"
+msgstr "Mod riglă"
+
+#: editor/editor_export.cpp
+msgid "BPTC"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "S3TC"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "ETC"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "ETC2"
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "No BPTC Fallbacks"
+msgstr ""
+
+#: editor/editor_export.cpp platform/android/export/export_plugin.cpp
+#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
msgid "Custom debug template not found."
msgstr "Fișierul șablon de depanare personalizat nu a fost găsit."
@@ -2920,6 +2985,7 @@ msgid "Make Current"
msgstr "Faceți Curent"
#: editor/editor_feature_profile.cpp editor/editor_node.cpp
+#: editor/import/resource_importer_scene.cpp
#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
msgid "Import"
msgstr "Importare"
@@ -3047,8 +3113,11 @@ msgstr "Succes!"
msgid "Display Mode"
msgstr "Mod redare:"
-#: editor/editor_file_dialog.cpp main/main.cpp modules/csg/csg_shape.cpp
-#: modules/visual_script/visual_script_nodes.cpp
+#: editor/editor_file_dialog.cpp
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+#: editor/import/resource_importer_wav.cpp main/main.cpp
+#: modules/csg/csg_shape.cpp modules/visual_script/visual_script_nodes.cpp
#: modules/visual_script/visual_script_yield_nodes.cpp scene/2d/light_2d.cpp
#: scene/2d/physics_body_2d.cpp scene/2d/tile_map.cpp
#: scene/3d/baked_lightmap.cpp scene/3d/light.cpp scene/3d/physics_body.cpp
@@ -3187,7 +3256,9 @@ msgstr "(Re)Importând Asset-uri"
msgid "Reimport Missing Imported Files"
msgstr ""
-#: editor/editor_help.cpp
+#: editor/editor_help.cpp scene/2d/camera_2d.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/resources/dynamic_font.cpp
+#: scene/resources/style_box.cpp
msgid "Top"
msgstr "Sus"
@@ -3240,6 +3311,7 @@ msgid "Fonts"
msgstr ""
#: editor/editor_help.cpp editor/plugins/theme_editor_plugin.cpp
+#: platform/iphone/export/export.cpp
msgid "Icons"
msgstr ""
@@ -3408,7 +3480,9 @@ msgstr ""
msgid "Pin value [Disabled because '%s' is editor-only]"
msgstr ""
-#: editor/editor_inspector.cpp editor/scene_tree_dock.cpp
+#: editor/editor_inspector.cpp
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+#: editor/scene_tree_dock.cpp
#: modules/visual_script/visual_script_func_nodes.cpp
#: modules/visual_script/visual_script_nodes.cpp
#: modules/visual_script/visual_script_property_selector.cpp
@@ -3747,6 +3821,16 @@ msgid "Quick Open Script..."
msgstr "Deschide un script rapid..."
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Save & Reload"
+msgstr "Salvează și Restartează"
+
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Save changes to '%s' before reloading?"
+msgstr "Salvează schimbările la ’%s’ înainte de ieșire?"
+
+#: editor/editor_node.cpp
msgid "Save & Close"
msgstr "Salvează și închide"
@@ -3862,6 +3946,12 @@ msgid "Open Project Manager?"
msgstr "Deschide Managerul de Proiect?"
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Save changes to the following scene(s) before reloading?"
+msgstr ""
+"Salvezi modificările făcute în urmatoarea(le) scenă(e) înainte să închizi?"
+
+#: editor/editor_node.cpp
msgid "Save & Quit"
msgstr "Salvează și Închide"
@@ -4139,8 +4229,8 @@ msgstr "Modificări ale Actualizării"
#: editor/editor_node.cpp
#, fuzzy
-msgid "Translate Properties"
-msgstr "Proprietăți"
+msgid "Localize Settings"
+msgstr "Setări ale Editorului"
#: editor/editor_node.cpp
#, fuzzy
@@ -4157,8 +4247,8 @@ msgstr "Inspector"
#: editor/editor_node.cpp
#, fuzzy
-msgid "Capitalize Properties"
-msgstr "Proprietăți"
+msgid "Default Property Name Style"
+msgstr "Previzualizare"
#: editor/editor_node.cpp
msgid "Default Float Step"
@@ -4763,7 +4853,9 @@ msgstr "Pluginuri instalate:"
msgid "Update"
msgstr "Actualizare"
-#: editor/editor_plugin_settings.cpp
+#: editor/editor_plugin_settings.cpp platform/android/export/export_plugin.cpp
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp
#, fuzzy
msgid "Version"
msgstr "Versiune:"
@@ -5774,7 +5866,7 @@ msgstr ""
msgid "Rect Custom Position"
msgstr "Setare poziție de ieșire a curbei"
-#: editor/editor_settings.cpp
+#: editor/editor_settings.cpp platform/android/export/export_plugin.cpp
msgid "Screen"
msgstr ""
@@ -5800,6 +5892,19 @@ msgid "Editor SSL Certificates"
msgstr "Setări ale Editorului"
#: editor/editor_settings.cpp
+msgid "HTTP Proxy"
+msgstr ""
+
+#: editor/editor_settings.cpp
+msgid "Host"
+msgstr ""
+
+#: editor/editor_settings.cpp editor/fileserver/editor_file_server.cpp
+#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp
+msgid "Port"
+msgstr ""
+
+#: editor/editor_settings.cpp
msgid "Project Manager"
msgstr ""
@@ -5842,7 +5947,8 @@ msgstr ""
msgid "String Color"
msgstr "Fişierul se Stochează:"
-#: editor/editor_settings.cpp
+#: editor/editor_settings.cpp platform/javascript/export/export.cpp
+#: platform/uwp/export/export.cpp
#, fuzzy
msgid "Background Color"
msgstr "Nume nevalid."
@@ -6017,22 +6123,6 @@ msgid "Starting the download..."
msgstr ""
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "HTTP Proxy"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Host"
-msgstr ""
-
-#: editor/export_template_manager.cpp editor/fileserver/editor_file_server.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp main/main.cpp
-#: modules/mono/mono_gd/gd_mono.cpp
-msgid "Port"
-msgstr ""
-
-#: editor/export_template_manager.cpp
msgid "Error requesting URL:"
msgstr "Eroare la solicitarea URL:"
@@ -6297,6 +6387,7 @@ msgstr ""
#: editor/fileserver/editor_file_server.cpp
#: editor/plugins/version_control_editor_plugin.cpp
+#: platform/uwp/export/export.cpp platform/windows/export/export.cpp
msgid "Password"
msgstr ""
@@ -6671,6 +6762,115 @@ msgstr ""
msgid "Use Ambient"
msgstr ""
+#: editor/import/resource_importer_bitmask.cpp
+#, fuzzy
+msgid "Create From"
+msgstr "Creare folder"
+
+#: editor/import/resource_importer_bitmask.cpp
+#: servers/audio/effects/audio_effect_compressor.cpp
+msgid "Threshold"
+msgstr ""
+
+#: editor/import/resource_importer_csv_translation.cpp
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_scene.cpp
+#: editor/import/resource_importer_texture.cpp
+#: editor/import/resource_importer_wav.cpp scene/3d/gi_probe.cpp
+#, fuzzy
+msgid "Compress"
+msgstr "Componente"
+
+#: editor/import/resource_importer_csv_translation.cpp
+msgid "Delimiter"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+msgid "No BPTC If RGB"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/sprite_3d.cpp
+#: scene/resources/material.cpp scene/resources/particles_material.cpp
+#: scene/resources/texture.cpp
+msgid "Flags"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/animation/tween.cpp
+#: scene/resources/texture.cpp
+msgid "Repeat"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/2d/light_2d.cpp
+#: scene/gui/control.cpp scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Filter"
+msgstr "Filtre:"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Mipmaps"
+msgstr "Semnale"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+msgid "Anisotropic"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+msgid "sRGB"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+msgid "Slices"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
+#: scene/resources/style_box.cpp
+#, fuzzy
+msgid "Horizontal"
+msgstr "Mută ghidul orizontal"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
+#: scene/resources/style_box.cpp
+#, fuzzy
+msgid "Vertical"
+msgstr "Mută ghidul vertical"
+
+#: editor/import/resource_importer_obj.cpp
+#, fuzzy
+msgid "Generate Tangents"
+msgstr "Număr de Puncte Generate:"
+
+#: editor/import/resource_importer_obj.cpp
+#, fuzzy
+msgid "Scale Mesh"
+msgstr "Mod Redimensionare (R)"
+
+#: editor/import/resource_importer_obj.cpp
+#, fuzzy
+msgid "Offset Mesh"
+msgstr "Compensare Grilă:"
+
+#: editor/import/resource_importer_obj.cpp
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Octahedral Compression"
+msgstr "Setare expresie"
+
+#: editor/import/resource_importer_obj.cpp
+msgid "Optimize Mesh Flags"
+msgstr ""
+
#: editor/import/resource_importer_scene.cpp
msgid "Import as Single Scene"
msgstr "Importă ca Scenă Simplă"
@@ -6711,6 +6911,156 @@ msgstr "Importă ca Scene Multiple"
msgid "Import as Multiple Scenes+Materials"
msgstr "Importă ca Scene+Materiale Multiple"
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Nodes"
+msgstr "Nod"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Root Type"
+msgstr "Tip Membru"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Root Name"
+msgstr "Nume Nod:"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Root Scale"
+msgstr "Dimensiune:"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Custom Script"
+msgstr "Creează Nod"
+
+#: editor/import/resource_importer_scene.cpp scene/resources/texture.cpp
+#, fuzzy
+msgid "Storage"
+msgstr "Fişierul se Stochează:"
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Use Legacy Names"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+#, fuzzy
+msgid "Materials"
+msgstr "Modificări ale Actualizării"
+
+#: editor/import/resource_importer_scene.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Location"
+msgstr "Pas Rotație:"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Keep On Reimport"
+msgstr "Reimportă"
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+#, fuzzy
+msgid "Meshes"
+msgstr "Mesh"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Ensure Tangents"
+msgstr "Modifică Tangenta Curbei"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Light Baking"
+msgstr "Procesează Lightmaps"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Lightmap Texel Size"
+msgstr "Procesează Lightmaps"
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+msgid "Skins"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Use Named Skins"
+msgstr "Utilizează Snap"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "External Files"
+msgstr "Deschideți un Fișier"
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Store In Subdir"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Filter Script"
+msgstr "Filtrare scripturi"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Keep Custom Tracks"
+msgstr "Anim Schimbare transformare"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Optimizer"
+msgstr "Optimizați"
+
+#: editor/import/resource_importer_scene.cpp main/main.cpp
+#: modules/mono/mono_gd/gd_mono.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp scene/2d/camera_2d.cpp scene/2d/light_2d.cpp
+#: scene/2d/navigation_polygon.cpp scene/2d/ray_cast_2d.cpp scene/2d/sprite.cpp
+#: scene/2d/y_sort.cpp scene/3d/audio_stream_player_3d.cpp
+#: scene/3d/baked_lightmap.cpp scene/3d/interpolated_camera.cpp
+#: scene/3d/light.cpp scene/3d/navigation_mesh_instance.cpp
+#: scene/3d/physics_joint.cpp scene/3d/ray_cast.cpp scene/3d/sprite_3d.cpp
+#: scene/gui/graph_edit.cpp scene/gui/rich_text_label.cpp
+#: scene/resources/curve.cpp scene/resources/environment.cpp
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Enabled"
+msgstr "Activați"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Max Linear Error"
+msgstr "Eroare Lineară Max:"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Max Angular Error"
+msgstr "Eroare Angulară Max:"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Max Angle"
+msgstr "Valoare:"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Remove Unused Tracks"
+msgstr "Elimină Pista Anim"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Clips"
+msgstr "Secvențe Anim:"
+
+#: editor/import/resource_importer_scene.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/particles_2d.cpp scene/3d/area.cpp scene/3d/cpu_particles.cpp
+#: scene/3d/particles.cpp scene/resources/environment.cpp
+#, fuzzy
+msgid "Amount"
+msgstr "Cantitate:"
+
#: editor/import/resource_importer_scene.cpp
#: editor/plugins/mesh_library_editor_plugin.cpp
msgid "Import Scene"
@@ -6752,12 +7102,148 @@ msgstr ""
msgid "Saving..."
msgstr "Se Salvează..."
+#: editor/import/resource_importer_texture.cpp scene/resources/texture.cpp
+msgid "Lossy Quality"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "HDR Mode"
+msgstr "Selectare mod"
+
+#: editor/import/resource_importer_texture.cpp
+msgid "BPTC LDR"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/mesh_instance_2d.cpp scene/2d/multimesh_instance_2d.cpp
+#: scene/2d/particles_2d.cpp scene/2d/sprite.cpp scene/resources/style_box.cpp
+msgid "Normal Map"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Process"
+msgstr "Setare expresie"
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Fix Alpha Border"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Premult Alpha"
+msgstr "Editează Poligon"
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Hdr As Srgb"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Invert Color"
+msgstr "Culori de Emisie"
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Normal Map Invert Y"
+msgstr "Dimensiune Aleatorie:"
+
+#: editor/import/resource_importer_texture.cpp
+#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
+#: scene/audio/audio_stream_player.cpp scene/gui/video_player.cpp
+msgid "Stream"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Size Limit"
+msgstr "Mod ÃŽn Jur"
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Detect 3D"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "SVG"
+msgstr ""
+
#: editor/import/resource_importer_texture.cpp
msgid ""
"Warning, no suitable PC VRAM compression enabled in Project Settings. This "
"texture will not display correctly on PC."
msgstr ""
+#: editor/import/resource_importer_texture_atlas.cpp
+#, fuzzy
+msgid "Atlas File"
+msgstr "Dimensiunea Conturului:"
+
+#: editor/import/resource_importer_texture_atlas.cpp
+#, fuzzy
+msgid "Import Mode"
+msgstr "Importă Bară"
+
+#: editor/import/resource_importer_texture_atlas.cpp
+#, fuzzy
+msgid "Crop To Region"
+msgstr "Regiunea"
+
+#: editor/import/resource_importer_texture_atlas.cpp
+msgid "Trim Alpha Border From Region"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp scene/2d/physics_body_2d.cpp
+#, fuzzy
+msgid "Force"
+msgstr "Mesh Sursă:"
+
+#: editor/import/resource_importer_wav.cpp
+msgid "8 Bit"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp main/main.cpp
+#: modules/mono/editor/csharp_project.cpp modules/mono/mono_gd/gd_mono.cpp
+msgid "Mono"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+#, fuzzy
+msgid "Max Rate"
+msgstr "Nod de Amestecare"
+
+#: editor/import/resource_importer_wav.cpp
+#, fuzzy
+msgid "Max Rate Hz"
+msgstr "Nod de Amestecare"
+
+#: editor/import/resource_importer_wav.cpp
+msgid "Trim"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+#, fuzzy
+msgid "Normalize"
+msgstr "Dimensiune Aleatorie:"
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+#, fuzzy
+msgid "Loop Mode"
+msgstr "Mod Mutare"
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+#, fuzzy
+msgid "Loop Begin"
+msgstr "Mod Mutare"
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+#, fuzzy
+msgid "Loop End"
+msgstr "Mod Mutare"
+
#: editor/import_defaults_editor.cpp
#, fuzzy
msgid "Select Importer"
@@ -6829,6 +7315,29 @@ msgstr "Încărcarea resursei a eșuat."
#: editor/inspector_dock.cpp
#, fuzzy
+msgid "Property Name Style"
+msgstr "Lista De Proprietati"
+
+#: editor/inspector_dock.cpp scene/gui/color_picker.cpp
+msgid "Raw"
+msgstr ""
+
+#: editor/inspector_dock.cpp
+#, fuzzy
+msgid "Capitalized"
+msgstr "Proprietăți"
+
+#: editor/inspector_dock.cpp
+#, fuzzy
+msgid "Localized"
+msgstr "Dimensiune Aleatorie:"
+
+#: editor/inspector_dock.cpp
+msgid "Localization not available for current language."
+msgstr ""
+
+#: editor/inspector_dock.cpp
+#, fuzzy
msgid "Copy Properties"
msgstr "Proprietăți"
@@ -7908,20 +8417,24 @@ msgstr "Licență"
#: editor/plugins/asset_library_editor_plugin.cpp
#, fuzzy
+msgctxt "Pagination"
msgid "First"
msgstr "primul"
-#: editor/plugins/asset_library_editor_plugin.cpp scene/gui/control.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
#, fuzzy
+msgctxt "Pagination"
msgid "Previous"
msgstr "Fila anterioară"
-#: editor/plugins/asset_library_editor_plugin.cpp scene/gui/control.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
#, fuzzy
+msgctxt "Pagination"
msgid "Next"
msgstr "Fila următoare"
#: editor/plugins/asset_library_editor_plugin.cpp
+msgctxt "Pagination"
msgid "Last"
msgstr ""
@@ -8182,22 +8695,22 @@ msgid ""
"margins."
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
#, fuzzy
msgid "Top Left"
msgstr "Mod Rotație"
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
#, fuzzy
msgid "Top Right"
msgstr "Rotație poligon"
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
#, fuzzy
msgid "Bottom Right"
msgstr "Rotație poligon"
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
#, fuzzy
msgid "Bottom Left"
msgstr "Mod Rotație"
@@ -8957,6 +9470,19 @@ msgstr "Procesează Sonda GI"
msgid "Gradient Edited"
msgstr ""
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+msgid "Swap GradientTexture2D Fill Points"
+msgstr ""
+
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+msgid "Swap Gradient Fill Points"
+msgstr ""
+
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+#, fuzzy
+msgid "Toggle Grid Snap"
+msgstr "Comutare mod"
+
#: editor/plugins/item_list_editor_plugin.cpp
msgid "Item %d"
msgstr "Obiect %d"
@@ -9180,8 +9706,9 @@ msgstr ""
"Actualizează din Scenă existenta?:\n"
"%s"
-#: editor/plugins/mesh_library_editor_plugin.cpp modules/gridmap/grid_map.cpp
-msgid "Mesh Library"
+#: editor/plugins/mesh_library_editor_plugin.cpp
+#, fuzzy
+msgid "MeshLibrary"
msgstr "Bibliotecă meshuri"
#: editor/plugins/mesh_library_editor_plugin.cpp
@@ -10211,8 +10738,8 @@ msgstr "Conectați la Nod:"
msgid "Source"
msgstr "Resursă"
-#: editor/plugins/script_text_editor.cpp scene/3d/interpolated_camera.cpp
-#: scene/animation/skeleton_ik.cpp
+#: editor/plugins/script_text_editor.cpp platform/uwp/export/export.cpp
+#: scene/3d/interpolated_camera.cpp scene/animation/skeleton_ik.cpp
msgid "Target"
msgstr ""
@@ -11225,7 +11752,9 @@ msgstr ""
#: editor/plugins/sprite_frames_editor_plugin.cpp
#: modules/gltf/gltf_animation.cpp modules/minimp3/audio_stream_mp3.cpp
-#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp scene/2d/path_2d.cpp
+#: modules/minimp3/resource_importer_mp3.cpp
+#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp
+#: modules/stb_vorbis/resource_importer_ogg_vorbis.cpp scene/2d/path_2d.cpp
#: scene/3d/path.cpp scene/resources/animation.cpp scene/resources/material.cpp
msgid "Loop"
msgstr ""
@@ -12180,8 +12709,9 @@ msgstr "Mod Rotație"
msgid "Priority"
msgstr "Exportă Proiectul"
-#: editor/plugins/tile_set_editor_plugin.cpp main/main.cpp scene/gui/button.cpp
-#: scene/gui/item_list.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp main/main.cpp
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#: scene/gui/button.cpp scene/gui/item_list.cpp
msgid "Icon"
msgstr ""
@@ -13535,10 +14065,6 @@ msgid ""
msgstr ""
#: editor/project_export.cpp
-msgid "Release"
-msgstr ""
-
-#: editor/project_export.cpp
#, fuzzy
msgid "Exporting All"
msgstr "Exportare"
@@ -15380,6 +15906,7 @@ msgid "Change AudioStreamPlayer3D Emission Angle"
msgstr ""
#: editor/spatial_editor_gizmos.cpp modules/gltf/gltf_node.cpp
+#: platform/osx/export/export.cpp
msgid "Camera"
msgstr ""
@@ -15663,7 +16190,8 @@ msgstr ""
msgid "Use Nvidia Rect Flicker Workaround"
msgstr ""
-#: main/main.cpp platform/uwp/os_uwp.cpp
+#: main/main.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp platform/uwp/os_uwp.cpp
#, fuzzy
msgid "Display"
msgstr "Afișează Tot"
@@ -15722,19 +16250,6 @@ msgstr ""
msgid "Allowed"
msgstr ""
-#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp scene/2d/camera_2d.cpp
-#: scene/2d/light_2d.cpp scene/2d/navigation_polygon.cpp
-#: scene/2d/ray_cast_2d.cpp scene/2d/sprite.cpp scene/2d/y_sort.cpp
-#: scene/3d/audio_stream_player_3d.cpp scene/3d/baked_lightmap.cpp
-#: scene/3d/interpolated_camera.cpp scene/3d/light.cpp
-#: scene/3d/navigation_mesh_instance.cpp scene/3d/ray_cast.cpp
-#: scene/3d/sprite_3d.cpp scene/gui/graph_edit.cpp
-#: scene/gui/rich_text_label.cpp scene/resources/curve.cpp
-#: scene/resources/environment.cpp
-#, fuzzy
-msgid "Enabled"
-msgstr "Activați"
-
#: main/main.cpp
msgid "Intended Usage"
msgstr ""
@@ -15766,13 +16281,14 @@ msgstr ""
msgid "Handheld"
msgstr ""
-#: main/main.cpp
+#: main/main.cpp platform/javascript/export/export.cpp
+#: platform/uwp/export/export.cpp
#, fuzzy
msgid "Orientation"
msgstr "Deschide Recente"
#: main/main.cpp scene/gui/scroll_container.cpp scene/gui/text_edit.cpp
-#: scene/main/scene_tree.cpp
+#: scene/main/scene_tree.cpp scene/register_scene_types.cpp
#, fuzzy
msgid "Common"
msgstr "Comunitate"
@@ -15815,7 +16331,7 @@ msgstr ""
#: main/main.cpp
#, fuzzy
-msgid "Frame Delay (msec)"
+msgid "Frame Delay Msec"
msgstr "Încadrează în Ecran Selecția"
#: main/main.cpp
@@ -15941,11 +16457,6 @@ msgstr ""
msgid "Tooltip Position Offset"
msgstr "Compensare Rotație:"
-#: main/main.cpp modules/mono/editor/csharp_project.cpp
-#: modules/mono/mono_gd/gd_mono.cpp
-msgid "Mono"
-msgstr ""
-
#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp
msgid "Debugger Agent"
msgstr ""
@@ -16515,7 +17026,7 @@ msgstr ""
msgid "Intensity"
msgstr ""
-#: modules/gltf/gltf_light.cpp scene/2d/light_2d.cpp
+#: modules/gltf/gltf_light.cpp scene/2d/light_2d.cpp scene/3d/light.cpp
#, fuzzy
msgid "Range"
msgstr "Schimbați"
@@ -16659,11 +17170,6 @@ msgstr ""
msgid "Use Named Skin Binds"
msgstr ""
-#: modules/gltf/gltf_state.cpp scene/3d/physics_joint.cpp
-#, fuzzy
-msgid "Nodes"
-msgstr "Nod"
-
#: modules/gltf/gltf_state.cpp
msgid "Buffer Views"
msgstr ""
@@ -16674,16 +17180,6 @@ msgstr ""
#: modules/gltf/gltf_state.cpp
#, fuzzy
-msgid "Meshes"
-msgstr "Mesh"
-
-#: modules/gltf/gltf_state.cpp
-#, fuzzy
-msgid "Materials"
-msgstr "Modificări ale Actualizării"
-
-#: modules/gltf/gltf_state.cpp
-#, fuzzy
msgid "Scene Name"
msgstr "Calea Scenei:"
@@ -16699,15 +17195,11 @@ msgstr "Redenumește"
msgid "Textures"
msgstr "Elimină Șablon"
-#: modules/gltf/gltf_state.cpp
+#: modules/gltf/gltf_state.cpp platform/uwp/export/export.cpp
msgid "Images"
msgstr ""
#: modules/gltf/gltf_state.cpp
-msgid "Skins"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp
msgid "Cameras"
msgstr ""
@@ -16742,11 +17234,15 @@ msgid "Src Image"
msgstr "Arată Oasele"
#: modules/gridmap/grid_map.cpp
+msgid "Mesh Library"
+msgstr "Bibliotecă meshuri"
+
+#: modules/gridmap/grid_map.cpp
#, fuzzy
msgid "Physics Material"
msgstr "Cadru Fizic %"
-#: modules/gridmap/grid_map.cpp
+#: modules/gridmap/grid_map.cpp scene/3d/visual_instance.cpp
#, fuzzy
msgid "Use In Baked Light"
msgstr "Procesează Lightmaps"
@@ -16778,6 +17274,7 @@ msgstr "Centrează Selecția"
#: modules/gridmap/grid_map.cpp scene/2d/collision_object_2d.cpp
#: scene/2d/tile_map.cpp scene/3d/collision_object.cpp scene/3d/soft_body.cpp
+#: scene/resources/material.cpp
msgid "Mask"
msgstr ""
@@ -16968,7 +17465,9 @@ msgid "Ultra Quality Ray Count"
msgstr ""
#: modules/minimp3/audio_stream_mp3.cpp
+#: modules/minimp3/resource_importer_mp3.cpp
#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp
+#: modules/stb_vorbis/resource_importer_ogg_vorbis.cpp
#, fuzzy
msgid "Loop Offset"
msgstr "Compensare Grilă:"
@@ -18076,6 +18575,189 @@ msgid "The package must have at least one '.' separator."
msgstr ""
#: platform/android/export/export_plugin.cpp
+msgid "Use Custom Build"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Export Format"
+msgstr "Exportă Proiectul"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Keystore"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Debug User"
+msgstr "Depanare"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+msgid "Debug Password"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Release User"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Release Password"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "One Click Deploy"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Clear Previous Install"
+msgstr "Fila anterioară"
+
+#: platform/android/export/export_plugin.cpp scene/resources/shader.cpp
+msgid "Code"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Min SDK"
+msgstr "Dimensiunea Conturului:"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Target SDK"
+msgstr "Suprafață Țintă:"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Package"
+msgstr "Ambalare"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Unique Name"
+msgstr "Nume Nod:"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Signed"
+msgstr "Semnal"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Classify As Game"
+msgstr "Clasă:"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Retain Data On Uninstall"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Exclude From Recents"
+msgstr "Creează Nod"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Graphics"
+msgstr "Compensare Grilă:"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "OpenGL Debug"
+msgstr "Deschide"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "XR Features"
+msgstr "Caracteristici active:"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "XR Mode"
+msgstr "Mod ÃŽn Jur"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Hand Tracking"
+msgstr "Ambalare"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Hand Tracking Frequency"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Passthrough"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Immersive Mode"
+msgstr "Exportă Proiectul"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Support Small"
+msgstr "Suport"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Support Normal"
+msgstr "Suport"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Support Large"
+msgstr "Suport"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Support Xlarge"
+msgstr "Suport"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "User Data Backup"
+msgstr "Curăță Derivarea"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Allow"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Command Line"
+msgstr "Comunitate"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Extra Args"
+msgstr "Extra Argumente de Chemare:"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "APK Expansion"
+msgstr "Setare expresie"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Salt"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Public Key"
+msgstr "Clonare Chei"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Permissions"
+msgstr "Mască de Emisie"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Custom Permissions"
+msgstr "Rulează Scena Personalizată"
+
+#: platform/android/export/export_plugin.cpp
msgid "Select device from the list"
msgstr "Selectează un dispozitiv din listă"
@@ -18376,6 +19058,177 @@ msgid "The character '%s' is not allowed in Identifier."
msgstr ""
#: platform/iphone/export/export.cpp
+msgid "App Store Team ID"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Provisioning Profile UUID Debug"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Code Sign Identity Debug"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Export Method Debug"
+msgstr "Exportă Proiectul?"
+
+#: platform/iphone/export/export.cpp
+msgid "Provisioning Profile UUID Release"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Code Sign Identity Release"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Export Method Release"
+msgstr "Exportă Proiectul?"
+
+#: platform/iphone/export/export.cpp
+msgid "Targeted Device Family"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Info"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Identifier"
+msgstr "Identificator nevalid:"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Signature"
+msgstr "Semnal"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Short Version"
+msgstr "Versiune:"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Copyright"
+msgstr "Rotație poligon"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Capabilities"
+msgstr "Proprietăți"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Access Wi-Fi"
+msgstr "Succes!"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Push Notifications"
+msgstr "Rotație aleatorie:"
+
+#: platform/iphone/export/export.cpp scene/3d/baked_lightmap.cpp
+#, fuzzy
+msgid "User Data"
+msgstr "Curăță Derivarea"
+
+#: platform/iphone/export/export.cpp
+msgid "Accessible From Files App"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Accessible From Itunes Sharing"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Privacy"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Camera Usage Description"
+msgstr "Descriere"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Microphone Usage Description"
+msgstr "Descrieri Proprietate"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Photolibrary Usage Description"
+msgstr "Descrieri Proprietate"
+
+#: platform/iphone/export/export.cpp
+msgid "iPhone 120 X 120"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPhone 180 X 180"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 76 X 76"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 152 X 152"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 167 X 167"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "App Store 1024 X 1024"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Spotlight 40 X 40"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Spotlight 80 X 80"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Storyboard"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Use Launch Screen Storyboard"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Image Scale Mode"
+msgstr "Mod Redimensionare (R)"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Custom Image @2x"
+msgstr "Creează Nod"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Custom Image @3x"
+msgstr "Creează Nod"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Use Custom BG Color"
+msgstr "Creează Nod"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Custom BG Color"
+msgstr "Creează Nod"
+
+#: platform/iphone/export/export.cpp
msgid "App Store Team ID not specified - cannot configure the project."
msgstr ""
@@ -18414,6 +19267,80 @@ msgstr "Nu s-a putut încărca fișierul la:"
#: platform/javascript/export/export.cpp
#, fuzzy
+msgid "Variant"
+msgstr "Enumerări:"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Export Type"
+msgstr "Exportare"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "VRAM Texture Compression"
+msgstr "Setare expresie"
+
+#: platform/javascript/export/export.cpp
+msgid "For Desktop"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "For Mobile"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Html"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Export Icon"
+msgstr "Extinde Toate"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Custom Html Shell"
+msgstr "Creează Nod"
+
+#: platform/javascript/export/export.cpp
+msgid "Head Include"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Canvas Resize Policy"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Focus Canvas On Start"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Experimental Virtual Keyboard"
+msgstr "Filtrare semne"
+
+#: platform/javascript/export/export.cpp
+msgid "Progressive Web App"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Offline Page"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 144 X 144"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 180 X 180"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 512 X 512"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
msgid "Could not read HTML shell:"
msgstr "Nu s-a putut încărca fișierul la:"
@@ -18528,6 +19455,200 @@ msgid "Unknown object type."
msgstr ""
#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "App Category"
+msgstr "Categorie:"
+
+#: platform/osx/export/export.cpp
+msgid "High Res"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Location Usage Description"
+msgstr "Descriere"
+
+#: platform/osx/export/export.cpp
+msgid "Address Book Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Calendar Usage Description"
+msgstr "Descriere"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Photos Library Usage Description"
+msgstr "Descrieri Proprietate"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Desktop Folder Usage Description"
+msgstr "Descrierile Metodei"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Documents Folder Usage Description"
+msgstr "Descrierile Metodei"
+
+#: platform/osx/export/export.cpp
+msgid "Downloads Folder Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Network Volumes Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Removable Volumes Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#, fuzzy
+msgid "Codesign"
+msgstr "Nod"
+
+#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Identity"
+msgstr "Mod ÃŽn Jur"
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#, fuzzy
+msgid "Timestamp"
+msgstr "Timp"
+
+#: platform/osx/export/export.cpp
+msgid "Hardened Runtime"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Replace Existing Signature"
+msgstr "Înlocuiți Tot"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Entitlements"
+msgstr "Conținut:"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Custom File"
+msgstr "Creează Nod"
+
+#: platform/osx/export/export.cpp
+msgid "Allow JIT Code Execution"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Allow Unsigned Executable Memory"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Allow Dyld Environment Variables"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Disable Library Validation"
+msgstr "Dezactivat"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Audio Input"
+msgstr "Adaugă Intrare(Input)"
+
+#: platform/osx/export/export.cpp
+msgid "Address Book"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Calendars"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Photos Library"
+msgstr "Exportă Librăria"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Apple Events"
+msgstr "Resetați"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Debugging"
+msgstr "Depanare"
+
+#: platform/osx/export/export.cpp
+msgid "App Sandbox"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Network Server"
+msgstr "Analizator Network"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Network Client"
+msgstr "Analizator Network"
+
+#: platform/osx/export/export.cpp
+msgid "Device Usb"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Device Bluetooth"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Files Downloads"
+msgstr "Descarcă"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Files Pictures"
+msgstr "Filtrare Tiles"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Files Music"
+msgstr "Fișier:"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Files Movies"
+msgstr "Filtrare Tiles"
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#, fuzzy
+msgid "Custom Options"
+msgstr "Opțiuni Pistă Audio"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Notarization"
+msgstr "Creează un Mesh de Navigare"
+
+#: platform/osx/export/export.cpp
+msgid "Apple ID Name"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Apple ID Password"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Apple Team ID"
+msgstr ""
+
+#: platform/osx/export/export.cpp
msgid ""
"Note: The notarization process generally takes less than an hour. When the "
"process is completed, you'll receive an email."
@@ -18720,6 +19841,133 @@ msgid "Force Builtin Codesign"
msgstr ""
#: platform/uwp/export/export.cpp
+msgid "Architecture"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Display Name"
+msgstr "Afișează Tot"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Short Name"
+msgstr "Modificarea numelui portului de intrare"
+
+#: platform/uwp/export/export.cpp
+msgid "Publisher"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Publisher Display Name"
+msgstr "Nume nevalid."
+
+#: platform/uwp/export/export.cpp
+msgid "Product Guid"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Publisher Guid"
+msgstr "Curăță Postura"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Signing"
+msgstr "Semnal"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Certificate"
+msgstr "Particule"
+
+#: platform/uwp/export/export.cpp
+msgid "Algorithm"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Major"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Minor"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Build"
+msgstr "Mod riglă"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Revision"
+msgstr "Setare expresie"
+
+#: platform/uwp/export/export.cpp
+msgid "Landscape"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Portrait"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Landscape Flipped"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Portrait Flipped"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Store Logo"
+msgstr "Mod Redimensionare (R)"
+
+#: platform/uwp/export/export.cpp
+msgid "Square 44 X 44 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 71 X 71 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 150 X 150 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 310 X 310 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Wide 310 X 150 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Splash Screen"
+msgstr "Apeluri"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Tiles"
+msgstr "Fișier:"
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Square 150 X 150"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Wide 310 X 150"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Square 310 X 310"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
#, fuzzy
msgid "Invalid package short name."
msgstr "Nume nevalid."
@@ -18791,11 +20039,48 @@ msgid "Debug Certificate"
msgstr ""
#: platform/uwp/export/export.cpp
-msgid "Debug Password"
+msgid "Debug Algorithm"
msgstr ""
-#: platform/uwp/export/export.cpp
-msgid "Debug Algorithm"
+#: platform/windows/export/export.cpp
+msgid "Identity Type"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Timestamp Server URL"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Digest Algorithm"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "File Version"
+msgstr "Versiune:"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Product Version"
+msgstr "Nume de Proiect Nevalid."
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Company Name"
+msgstr "Nume Nod:"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Product Name"
+msgstr "Grupuri"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "File Description"
+msgstr "Descriere"
+
+#: platform/windows/export/export.cpp
+msgid "Trademarks"
msgstr ""
#: platform/windows/export/export.cpp
@@ -18871,12 +20156,14 @@ msgstr "Rulează"
msgid "Centered"
msgstr "Centrează Selecția"
-#: scene/2d/animated_sprite.cpp scene/2d/camera_2d.cpp scene/2d/light_2d.cpp
+#: scene/2d/animated_sprite.cpp scene/2d/camera_2d.cpp
+#: scene/2d/cpu_particles_2d.cpp scene/2d/light_2d.cpp
#: scene/2d/parallax_background.cpp scene/2d/parallax_layer.cpp
#: scene/2d/path_2d.cpp scene/2d/polygon_2d.cpp scene/2d/sprite.cpp
-#: scene/3d/path.cpp scene/3d/physics_body.cpp scene/3d/sprite_3d.cpp
-#: scene/gui/graph_node.cpp scene/gui/rich_text_effect.cpp
-#: scene/main/canvas_layer.cpp scene/resources/material.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/path.cpp scene/3d/physics_body.cpp
+#: scene/3d/sprite_3d.cpp scene/gui/graph_node.cpp
+#: scene/gui/rich_text_effect.cpp scene/main/canvas_layer.cpp
+#: scene/resources/material.cpp scene/resources/particles_material.cpp
#: scene/resources/style_box.cpp
#, fuzzy
msgid "Offset"
@@ -18949,11 +20236,6 @@ msgstr "Adaugă Pistă Audio"
msgid "Override"
msgstr "extindere:"
-#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
-#: scene/audio/audio_stream_player.cpp scene/gui/video_player.cpp
-msgid "Stream"
-msgstr ""
-
#: scene/2d/audio_stream_player_2d.cpp scene/audio/audio_stream_player.cpp
#: scene/gui/video_player.cpp servers/audio/effects/audio_effect_amplify.cpp
#, fuzzy
@@ -18980,13 +20262,13 @@ msgid "Stream Paused"
msgstr ""
#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
-#: scene/3d/reflection_probe.cpp scene/3d/visual_instance.cpp
-#: scene/resources/material.cpp
+#: scene/3d/light.cpp scene/3d/reflection_probe.cpp
+#: scene/3d/visual_instance.cpp scene/resources/material.cpp
#, fuzzy
msgid "Max Distance"
msgstr "Instanță"
-#: scene/2d/audio_stream_player_2d.cpp
+#: scene/2d/audio_stream_player_2d.cpp scene/3d/light.cpp
#, fuzzy
msgid "Attenuation"
msgstr "Animație"
@@ -19042,6 +20324,24 @@ msgstr "Mod Mutare"
msgid "Limit"
msgstr ""
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/style_box.cpp
+#, fuzzy
+msgid "Left"
+msgstr "Mod Rotație"
+
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/style_box.cpp
+#, fuzzy
+msgid "Right"
+msgstr "Rotație poligon"
+
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/dynamic_font.cpp scene/resources/style_box.cpp
+#, fuzzy
+msgid "Bottom"
+msgstr "Mod Rotație"
+
#: scene/2d/camera_2d.cpp
#, fuzzy
msgid "Smoothed"
@@ -19257,13 +20557,6 @@ msgstr ""
msgid "Emitting"
msgstr "Setări:"
-#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp scene/3d/area.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
-#: scene/resources/environment.cpp
-#, fuzzy
-msgid "Amount"
-msgstr "Cantitate:"
-
#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp
#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
msgid "Lifetime"
@@ -19327,18 +20620,13 @@ msgstr ""
#: scene/2d/mesh_instance_2d.cpp scene/2d/multimesh_instance_2d.cpp
#: scene/2d/particles_2d.cpp scene/2d/polygon_2d.cpp scene/2d/sprite.cpp
#: scene/3d/sprite_3d.cpp scene/gui/nine_patch_rect.cpp
-#: scene/gui/texture_rect.cpp scene/resources/sky.cpp
-#: scene/resources/style_box.cpp scene/resources/visual_shader_nodes.cpp
+#: scene/gui/texture_rect.cpp scene/resources/material.cpp
+#: scene/resources/sky.cpp scene/resources/style_box.cpp
+#: scene/resources/visual_shader_nodes.cpp
#, fuzzy
msgid "Texture"
msgstr "Elimină Șablon"
-#: scene/2d/cpu_particles_2d.cpp scene/2d/mesh_instance_2d.cpp
-#: scene/2d/multimesh_instance_2d.cpp scene/2d/particles_2d.cpp
-#: scene/2d/sprite.cpp scene/resources/style_box.cpp
-msgid "Normal Map"
-msgstr ""
-
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
#, fuzzy
@@ -19361,9 +20649,8 @@ msgid "Normals"
msgstr "Dimensiune Aleatorie:"
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/3d/sprite_3d.cpp scene/resources/material.cpp
-#: scene/resources/particles_material.cpp scene/resources/texture.cpp
-msgid "Flags"
+#: scene/resources/particles_material.cpp
+msgid "Align Y"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
@@ -19384,6 +20671,11 @@ msgid "Initial Velocity"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Velocity Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp servers/physics_2d_server.cpp
#: servers/physics_server.cpp
msgid "Angular Velocity"
@@ -19391,6 +20683,12 @@ msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Velocity Curve"
+msgstr "Închidere curbă"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
msgid "Orbit Velocity"
msgstr ""
@@ -19402,6 +20700,23 @@ msgstr "Linear"
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Accel"
+msgstr "Succes!"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Accel Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Accel Curve"
+msgstr "Închidere curbă"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
msgid "Radial Accel"
msgstr ""
@@ -19411,19 +20726,55 @@ msgid "Tangential Accel"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/2d/joints_2d.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/vehicle_body.cpp
-#: scene/resources/particles_material.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/physics_joint.cpp
+#: scene/3d/vehicle_body.cpp scene/resources/particles_material.cpp
#: servers/audio/effects/audio_effect_reverb.cpp
msgid "Damping"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+msgid "Damping Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Damping Curve"
+msgstr "Închidere curbă"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp scene/3d/light.cpp
+#: scene/resources/particles_material.cpp
msgid "Angle"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+msgid "Angle Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Angle Curve"
+msgstr "Închidere curbă"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#, fuzzy
+msgid "Scale Amount"
+msgstr "Cantitate:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+msgid "Scale Amount Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#, fuzzy
+msgid "Scale Amount Curve"
+msgstr "Scalați De La Cursor"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
msgid "Color Ramp"
msgstr ""
@@ -19438,6 +20789,48 @@ msgstr ""
msgid "Hue Variation"
msgstr "Enumerări:"
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Variation"
+msgstr "Enumerări:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Variation Random"
+msgstr "Enumerări:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Variation Curve"
+msgstr "Enumerări:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Speed Random"
+msgstr "Dimensiune:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Speed Curve"
+msgstr "Închidere curbă"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Offset Random"
+msgstr "Compensare Grilă:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Offset Curve"
+msgstr "Închidere curbă"
+
#: scene/2d/joints_2d.cpp
msgid "Node A and Node B must be PhysicsBody2Ds"
msgstr ""
@@ -19469,6 +20862,7 @@ msgid "Node B"
msgstr "Nod"
#: scene/2d/joints_2d.cpp scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp
+#: scene/3d/light.cpp scene/3d/physics_joint.cpp
#: scene/resources/environment.cpp
msgid "Bias"
msgstr ""
@@ -19478,7 +20872,7 @@ msgstr ""
msgid "Disable Collision"
msgstr "Dezactivat"
-#: scene/2d/joints_2d.cpp
+#: scene/2d/joints_2d.cpp scene/3d/physics_joint.cpp
msgid "Softness"
msgstr ""
@@ -19496,7 +20890,7 @@ msgstr "Compensare Grilă:"
msgid "Rest Length"
msgstr ""
-#: scene/2d/joints_2d.cpp scene/3d/vehicle_body.cpp
+#: scene/2d/joints_2d.cpp scene/3d/physics_joint.cpp scene/3d/vehicle_body.cpp
msgid "Stiffness"
msgstr ""
@@ -19516,7 +20910,7 @@ msgid "Texture Scale"
msgstr ""
#: scene/2d/light_2d.cpp scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp
-#: scene/resources/environment.cpp scene/resources/sky.cpp
+#: scene/3d/light.cpp scene/resources/environment.cpp scene/resources/sky.cpp
msgid "Energy"
msgstr ""
@@ -19554,12 +20948,6 @@ msgstr "Dimensiunea Conturului:"
msgid "Gradient Length"
msgstr "Implicit"
-#: scene/2d/light_2d.cpp scene/gui/control.cpp
-#: scene/resources/navigation_mesh.cpp
-#, fuzzy
-msgid "Filter"
-msgstr "Filtre:"
-
#: scene/2d/light_2d.cpp
#, fuzzy
msgid "Filter Smooth"
@@ -19966,11 +21354,6 @@ msgid "Applied Forces"
msgstr ""
#: scene/2d/physics_body_2d.cpp
-#, fuzzy
-msgid "Force"
-msgstr "Mesh Sursă:"
-
-#: scene/2d/physics_body_2d.cpp
msgid "Torque"
msgstr ""
@@ -19985,7 +21368,7 @@ msgid "Sync To Physics"
msgstr "Cadru Fizic %"
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-msgid "Moving platform"
+msgid "Moving Platform"
msgstr ""
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
@@ -19994,7 +21377,7 @@ msgstr ""
#: scene/2d/physics_body_2d.cpp scene/2d/touch_screen_button.cpp
#: scene/3d/physics_body.cpp scene/gui/texture_button.cpp
-#: scene/resources/line_shape_2d.cpp
+#: scene/resources/line_shape_2d.cpp scene/resources/material.cpp
msgid "Normal"
msgstr ""
@@ -20228,6 +21611,34 @@ msgid ""
"as parent."
msgstr ""
+#: scene/2d/visibility_notifier_2d.cpp scene/3d/visibility_notifier.cpp
+#, fuzzy
+msgid "Pause Animations"
+msgstr "Lipește Animație"
+
+#: scene/2d/visibility_notifier_2d.cpp scene/3d/visibility_notifier.cpp
+msgid "Freeze Bodies"
+msgstr ""
+
+#: scene/2d/visibility_notifier_2d.cpp
+#, fuzzy
+msgid "Pause Particles"
+msgstr "Particule"
+
+#: scene/2d/visibility_notifier_2d.cpp
+#, fuzzy
+msgid "Pause Animated Sprites"
+msgstr "Lipește Animație"
+
+#: scene/2d/visibility_notifier_2d.cpp
+#, fuzzy
+msgid "Process Parent"
+msgstr "Editează Filtrele"
+
+#: scene/2d/visibility_notifier_2d.cpp
+msgid "Physics Process Parent"
+msgstr ""
+
#: scene/3d/area.cpp
msgid "Reverb Bus"
msgstr ""
@@ -20324,6 +21735,7 @@ msgid "Attenuation Filter"
msgstr ""
#: scene/3d/audio_stream_player_3d.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
#: servers/audio/effects/audio_effect_filter.cpp
msgid "Cutoff Hz"
msgstr ""
@@ -20367,11 +21779,6 @@ msgid "Octree"
msgstr ""
#: scene/3d/baked_lightmap.cpp
-#, fuzzy
-msgid "User Data"
-msgstr "Curăță Derivarea"
-
-#: scene/3d/baked_lightmap.cpp
msgid "Finding meshes and lights"
msgstr ""
@@ -20627,6 +22034,16 @@ msgid "Ring Axis"
msgstr "Avertismente"
#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Rotate Y"
+msgstr "Mod Rotație"
+
+#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Disable Z"
+msgstr "Dezactivat"
+
+#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
msgid "Flatness"
msgstr ""
@@ -20664,16 +22081,11 @@ msgstr ""
msgid "Dynamic Range"
msgstr ""
-#: scene/3d/gi_probe.cpp
+#: scene/3d/gi_probe.cpp scene/3d/light.cpp
msgid "Normal Bias"
msgstr ""
#: scene/3d/gi_probe.cpp
-#, fuzzy
-msgid "Compress"
-msgstr "Componente"
-
-#: scene/3d/gi_probe.cpp
msgid "Plotting Meshes"
msgstr ""
@@ -20699,16 +22111,31 @@ msgid "Subdiv"
msgstr ""
#: scene/3d/light.cpp
+#, fuzzy
+msgid "Indirect Energy"
+msgstr "Culori de Emisie"
+
+#: scene/3d/light.cpp
msgid "Negative"
msgstr ""
#: scene/3d/light.cpp
#, fuzzy
+msgid "Specular"
+msgstr "Mod riglă"
+
+#: scene/3d/light.cpp
+#, fuzzy
msgid "Bake Mode"
msgstr "Mod Rotație"
#: scene/3d/light.cpp
#, fuzzy
+msgid "Contact"
+msgstr "Conținut:"
+
+#: scene/3d/light.cpp
+#, fuzzy
msgid "Reverse Cull Face"
msgstr "Resetați Volumul Pistei Audio"
@@ -20719,11 +22146,31 @@ msgstr "Direcții"
#: scene/3d/light.cpp
#, fuzzy
+msgid "Split 1"
+msgstr "Divizare cale"
+
+#: scene/3d/light.cpp
+#, fuzzy
+msgid "Split 2"
+msgstr "Divizare cale"
+
+#: scene/3d/light.cpp
+#, fuzzy
+msgid "Split 3"
+msgstr "Divizare cale"
+
+#: scene/3d/light.cpp
+#, fuzzy
msgid "Blend Splits"
msgstr "Timpi de Amestecare:"
#: scene/3d/light.cpp
#, fuzzy
+msgid "Bias Split Scale"
+msgstr "Utilizează Snap"
+
+#: scene/3d/light.cpp
+#, fuzzy
msgid "Depth Range"
msgstr "Adâncime"
@@ -20749,6 +22196,11 @@ msgstr ""
msgid "Spot"
msgstr ""
+#: scene/3d/light.cpp
+#, fuzzy
+msgid "Angle Attenuation"
+msgstr "Animație"
+
#: scene/3d/mesh_instance.cpp
msgid "Software Skinning"
msgstr ""
@@ -20873,6 +22325,63 @@ msgstr ""
#: scene/3d/physics_body.cpp
#, fuzzy
+msgid "Linear X"
+msgstr "Linear"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Linear Y"
+msgstr "Linear"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Linear Z"
+msgstr "Linear"
+
+#: scene/3d/physics_body.cpp
+msgid "Angular X"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Angular Y"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Angular Z"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Motion X"
+msgstr "Acțiune"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Motion Y"
+msgstr "Acțiune"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Motion Z"
+msgstr "Acțiune"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Move Lock X"
+msgstr "Mod Mutare"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Move Lock Y"
+msgstr "Mod Mutare"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Move Lock Z"
+msgstr "Mod Mutare"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
msgid "Body Offset"
msgstr "Compensare Grilă:"
@@ -20906,6 +22415,15 @@ msgid "Exclude Nodes"
msgstr "Creează Nod"
#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Params"
+msgstr "Modificări ale Actualizării"
+
+#: scene/3d/physics_joint.cpp
+msgid "Impulse Clamp"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit"
msgstr ""
@@ -20917,6 +22435,55 @@ msgstr ""
msgid "Lower"
msgstr ""
+#: scene/3d/physics_joint.cpp scene/3d/vehicle_body.cpp
+#, fuzzy
+msgid "Relaxation"
+msgstr "Enumerări:"
+
+#: scene/3d/physics_joint.cpp
+msgid "Motor"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Target Velocity"
+msgstr "Linear"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Max Impulse"
+msgstr "Valoare:"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit"
+msgstr "Linear"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Upper Distance"
+msgstr "Instanță"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Lower Distance"
+msgstr "Instanță"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Restitution"
+msgstr "Descriere"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motion"
+msgstr "Linear"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Ortho"
+msgstr "Linear"
+
#: scene/3d/physics_joint.cpp
msgid "Upper Angle"
msgstr ""
@@ -20927,6 +22494,16 @@ msgstr ""
#: scene/3d/physics_joint.cpp
#, fuzzy
+msgid "Angular Motion"
+msgstr "Animație"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Angular Ortho"
+msgstr "Eroare Angulară Max:"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
msgid "Swing Span"
msgstr "Salvând Scena"
@@ -20935,17 +22512,99 @@ msgid "Twist Span"
msgstr ""
#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit X"
+msgstr "Linear"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motor X"
+msgstr "Linear"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Force Limit"
+msgstr "Apeluri"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Spring X"
+msgstr "Linear"
+
+#: scene/3d/physics_joint.cpp
+msgid "Equilibrium Point"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit X"
msgstr ""
#: scene/3d/physics_joint.cpp
+msgid "Erp"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Motor X"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Spring X"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit Y"
+msgstr "Linear"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motor Y"
+msgstr "Linear"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Spring Y"
+msgstr "Linear"
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit Y"
msgstr ""
#: scene/3d/physics_joint.cpp
+msgid "Angular Motor Y"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Spring Y"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit Z"
+msgstr "Linear"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motor Z"
+msgstr "Linear"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Spring Z"
+msgstr "Linear"
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit Z"
msgstr ""
+#: scene/3d/physics_joint.cpp
+msgid "Angular Motor Z"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Spring Z"
+msgstr ""
+
#: scene/3d/portal.cpp
msgid "The RoomManager should not be a child or grandchild of a Portal."
msgstr ""
@@ -21062,7 +22721,7 @@ msgstr ""
msgid "Use Default Simplify"
msgstr ""
-#: scene/3d/room.cpp
+#: scene/3d/room.cpp scene/3d/room_manager.cpp
msgid "Room Simplify"
msgstr ""
@@ -21101,6 +22760,13 @@ msgstr ""
msgid "Main"
msgstr ""
+#: scene/3d/room_manager.cpp scene/animation/animation_player.cpp
+#: scene/animation/animation_tree.cpp scene/animation/animation_tree_player.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+#, fuzzy
+msgid "Active"
+msgstr "Acțiune"
+
#: scene/3d/room_manager.cpp
msgid "Roomlist"
msgstr ""
@@ -21125,6 +22791,53 @@ msgid "Gameplay"
msgstr ""
#: scene/3d/room_manager.cpp
+msgid "Gameplay Monitor"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Use Secondary PVS"
+msgstr "Utilizează Snap"
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Merge Meshes"
+msgstr "Mesh"
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Show Margins"
+msgstr "Arată Originea"
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Debug Sprawl"
+msgstr "Depanare"
+
+#: scene/3d/room_manager.cpp
+msgid "Overlap Warning Threshold"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Preview Camera"
+msgstr "Previzualizare"
+
+#: scene/3d/room_manager.cpp
+msgid "Portal Depth Limit"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Default Portal Margin"
+msgstr "Setează Mâner"
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Roaming Expansion Margin"
+msgstr "Extinde Toate"
+
+#: scene/3d/room_manager.cpp
msgid ""
"RoomList path is invalid.\n"
"Please check the RoomList branch has been assigned in the RoomManager."
@@ -21248,6 +22961,20 @@ msgstr "Conectare prin pixeli"
msgid "Billboard"
msgstr ""
+#: scene/3d/sprite_3d.cpp scene/resources/material.cpp
+#, fuzzy
+msgid "Transparent"
+msgstr "Tradu Snap:"
+
+#: scene/3d/sprite_3d.cpp
+#, fuzzy
+msgid "Shaded"
+msgstr "Schimbați"
+
+#: scene/3d/sprite_3d.cpp
+msgid "Double Sided"
+msgstr ""
+
#: scene/3d/sprite_3d.cpp
msgid "Alpha Cut"
msgstr ""
@@ -21317,11 +23044,6 @@ msgstr "Setare expresie"
msgid "Max Force"
msgstr "Eroare!"
-#: scene/3d/vehicle_body.cpp
-#, fuzzy
-msgid "Relaxation"
-msgstr "Enumerări:"
-
#: scene/3d/visibility_notifier.cpp
msgid "AABB"
msgstr ""
@@ -21457,7 +23179,7 @@ msgstr "Timp X-Decolorare (s):"
#: scene/animation/animation_blend_tree.cpp
#, fuzzy
-msgid "autorestart_"
+msgid "Auto Restart"
msgstr "Restartare Automată:"
#: scene/animation/animation_blend_tree.cpp
@@ -21543,13 +23265,6 @@ msgstr "Opțiuni Clasă:"
msgid "Default Blend Time"
msgstr "Implicit"
-#: scene/animation/animation_player.cpp scene/animation/animation_tree.cpp
-#: scene/animation/animation_tree_player.cpp
-#: servers/audio/effects/audio_effect_delay.cpp
-#, fuzzy
-msgid "Active"
-msgstr "Acțiune"
-
#: scene/animation/animation_player.cpp
msgid "Method Call Mode"
msgstr ""
@@ -21674,10 +23389,6 @@ msgstr "Creează Nod"
msgid "Max Iterations"
msgstr "Faceți Funcția"
-#: scene/animation/tween.cpp scene/resources/texture.cpp
-msgid "Repeat"
-msgstr ""
-
#: scene/animation/tween.cpp
msgid "Playback Process Mode"
msgstr ""
@@ -21707,20 +23418,6 @@ msgstr "Selectare mod"
msgid "Alignment"
msgstr ""
-#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
-#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
-#: scene/resources/style_box.cpp
-#, fuzzy
-msgid "Horizontal"
-msgstr "Mută ghidul orizontal"
-
-#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
-#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
-#: scene/resources/style_box.cpp
-#, fuzzy
-msgid "Vertical"
-msgstr "Mută ghidul vertical"
-
#: scene/gui/base_button.cpp
#, fuzzy
msgid "Shortcut In Tooltip"
@@ -21819,10 +23516,6 @@ msgid "HSV"
msgstr ""
#: scene/gui/color_picker.cpp
-msgid "Raw"
-msgstr ""
-
-#: scene/gui/color_picker.cpp
msgid "Switch between hexadecimal and code values."
msgstr ""
@@ -21883,6 +23576,33 @@ msgid "Focus"
msgstr "Cale focalizare"
#: scene/gui/control.cpp
+msgid "Neighbour Left"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Neighbour Top"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Neighbour Right"
+msgstr ""
+
+#: scene/gui/control.cpp
+#, fuzzy
+msgid "Neighbour Bottom"
+msgstr "Centrează Selecția"
+
+#: scene/gui/control.cpp
+#, fuzzy
+msgid "Next"
+msgstr "Fila următoare"
+
+#: scene/gui/control.cpp
+#, fuzzy
+msgid "Previous"
+msgstr "Fila anterioară"
+
+#: scene/gui/control.cpp
msgid "Mouse"
msgstr ""
@@ -21918,7 +23638,7 @@ msgid "Dialog"
msgstr ""
#: scene/gui/dialogs.cpp
-msgid "Hide On Ok"
+msgid "Hide On OK"
msgstr ""
#: scene/gui/dialogs.cpp scene/gui/label.cpp
@@ -22017,7 +23737,7 @@ msgid "Timers"
msgstr "Timp"
#: scene/gui/item_list.cpp scene/gui/popup_menu.cpp scene/gui/tree.cpp
-msgid "Incremental Search Max Interval (msec)"
+msgid "Incremental Search Max Interval Msec"
msgstr ""
#: scene/gui/item_list.cpp scene/gui/tree.cpp
@@ -22582,6 +24302,26 @@ msgstr "Centrează Selecția"
msgid "Nine Patch Stretch"
msgstr "Mod Intercalare"
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Left"
+msgstr "Setează Mâner"
+
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Top"
+msgstr "Setează Mâner"
+
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Right"
+msgstr "Setează Mâner"
+
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Bottom"
+msgstr "Selectare mod"
+
#: scene/gui/tree.cpp
msgid "Custom Minimum Height"
msgstr ""
@@ -22619,8 +24359,9 @@ msgid "Paused"
msgstr ""
#: scene/gui/video_player.cpp
-msgid "Buffering (msec)"
-msgstr ""
+#, fuzzy
+msgid "Buffering Msec"
+msgstr "Dimensiunea Conturului:"
#: scene/gui/video_player.cpp
#, fuzzy
@@ -22965,6 +24706,22 @@ msgid "Shadow Atlas"
msgstr "Arată Oasele"
#: scene/main/viewport.cpp
+msgid "Quad 0"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 1"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 2"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 3"
+msgstr ""
+
+#: scene/main/viewport.cpp
#, fuzzy
msgid "Canvas Transform"
msgstr "Anim Schimbare transformare"
@@ -22979,6 +24736,10 @@ msgid "Tooltip Delay (sec)"
msgstr ""
#: scene/register_scene_types.cpp
+msgid "Swap OK Cancel"
+msgstr ""
+
+#: scene/register_scene_types.cpp
msgid "Use hiDPI"
msgstr ""
@@ -22993,21 +24754,6 @@ msgid "Custom Font"
msgstr "Creează Nod"
#: scene/resources/audio_stream_sample.cpp
-#, fuzzy
-msgid "Loop Mode"
-msgstr "Mod Mutare"
-
-#: scene/resources/audio_stream_sample.cpp
-#, fuzzy
-msgid "Loop Begin"
-msgstr "Mod Mutare"
-
-#: scene/resources/audio_stream_sample.cpp
-#, fuzzy
-msgid "Loop End"
-msgstr "Mod Mutare"
-
-#: scene/resources/audio_stream_sample.cpp
#: servers/audio/effects/audio_stream_generator.cpp servers/audio_server.cpp
#, fuzzy
msgid "Mix Rate"
@@ -23065,6 +24811,17 @@ msgid "Extra Spacing"
msgstr "Opțiunii Extra:"
#: scene/resources/dynamic_font.cpp
+#, fuzzy
+msgid "Char"
+msgstr "Caractere valide:"
+
+#: scene/resources/dynamic_font.cpp scene/resources/world.cpp
+#: scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Space"
+msgstr "Apeluri"
+
+#: scene/resources/dynamic_font.cpp
msgid "Font"
msgstr ""
@@ -23290,6 +25047,43 @@ msgid "Glow"
msgstr ""
#: scene/resources/environment.cpp
+#, fuzzy
+msgid "Levels"
+msgstr "Dezvoltatori"
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "1"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "2"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "3"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "4"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "5"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "6"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "7"
+msgstr ""
+
+#: scene/resources/environment.cpp
msgid "Bloom"
msgstr ""
@@ -23382,9 +25176,66 @@ msgid "Next Pass"
msgstr "Planul următor"
#: scene/resources/material.cpp
+msgid "Use Shadow To Opacity"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Unshaded"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Vertex Lighting"
+msgstr "Direcții"
+
+#: scene/resources/material.cpp
+msgid "No Depth Test"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Use Point Size"
+msgstr "Dimensiunea Conturului:"
+
+#: scene/resources/material.cpp
+msgid "World Triplanar"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Fixed Size"
+msgstr "Conectare prin pixeli"
+
+#: scene/resources/material.cpp
+msgid "Albedo Tex Force sRGB"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Do Not Receive Shadows"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Disable Ambient Light"
+msgstr "Rotație poligon"
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Ensure Correct Normals"
+msgstr "Transformare uniformă."
+
+#: scene/resources/material.cpp
msgid "Vertex Color"
msgstr ""
+#: scene/resources/material.cpp
+msgid "Use As Albedo"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Is sRGB"
+msgstr ""
+
#: scene/resources/material.cpp servers/visual_server.cpp
#, fuzzy
msgid "Parameters"
@@ -23421,6 +25272,11 @@ msgid "Billboard Mode"
msgstr "Mod riglă"
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Billboard Keep Scale"
+msgstr "Mod riglă"
+
+#: scene/resources/material.cpp
msgid "Grow"
msgstr ""
@@ -23430,6 +25286,10 @@ msgid "Grow Amount"
msgstr "Cantitate:"
#: scene/resources/material.cpp
+msgid "Use Alpha Scissor"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Alpha Scissor Threshold"
msgstr ""
@@ -23461,10 +25321,20 @@ msgid "Metallic Specular"
msgstr ""
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Metallic Texture"
+msgstr "Sursă de Emisie: "
+
+#: scene/resources/material.cpp
msgid "Metallic Texture Channel"
msgstr ""
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Roughness Texture"
+msgstr "Elimină Șablon"
+
+#: scene/resources/material.cpp
msgid "Roughness Texture Channel"
msgstr ""
@@ -23484,6 +25354,16 @@ msgid "Emission Operator"
msgstr "Culori de Emisie"
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Emission On UV2"
+msgstr "Mască de Emisie"
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Emission Texture"
+msgstr "Sursă de Emisie: "
+
+#: scene/resources/material.cpp
msgid "NormalMap"
msgstr ""
@@ -23498,6 +25378,11 @@ msgstr "ÃŽnclinare aleatorie:"
#: scene/resources/material.cpp
#, fuzzy
+msgid "Rim Texture"
+msgstr "Elimină Șablon"
+
+#: scene/resources/material.cpp
+#, fuzzy
msgid "Clearcoat"
msgstr "Curăță"
@@ -23507,15 +25392,28 @@ msgid "Clearcoat Gloss"
msgstr "Curăță Postura"
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Clearcoat Texture"
+msgstr "Membri"
+
+#: scene/resources/material.cpp
msgid "Anisotropy"
msgstr ""
#: scene/resources/material.cpp
+msgid "Anisotropy Flowmap"
+msgstr ""
+
+#: scene/resources/material.cpp
#, fuzzy
msgid "Ambient Occlusion"
msgstr "Editează Poligon"
#: scene/resources/material.cpp
+msgid "On UV2"
+msgstr ""
+
+#: scene/resources/material.cpp
#, fuzzy
msgid "Texture Channel"
msgstr "Mod riglă"
@@ -23553,6 +25451,11 @@ msgstr "Tranziție: "
#: scene/resources/material.cpp
#, fuzzy
+msgid "Transmission Texture"
+msgstr "Tranziție: "
+
+#: scene/resources/material.cpp
+#, fuzzy
msgid "Refraction"
msgstr "Enumerări:"
@@ -23569,6 +25472,10 @@ msgid "UV1"
msgstr ""
#: scene/resources/material.cpp
+msgid "Triplanar"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Triplanar Sharpness"
msgstr ""
@@ -23775,6 +25682,16 @@ msgstr "Membri"
msgid "Point Count"
msgstr "Adaugă Intrare(Input)"
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Scale Random"
+msgstr "Proporție Scalare:"
+
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Scale Curve"
+msgstr "Închidere curbă"
+
#: scene/resources/physics_material.cpp
msgid "Rough"
msgstr ""
@@ -23836,10 +25753,6 @@ msgid "A"
msgstr ""
#: scene/resources/shader.cpp
-msgid "Code"
-msgstr ""
-
-#: scene/resources/shader.cpp
#, fuzzy
msgid "Custom Defines"
msgstr "Rulează Scena Personalizată"
@@ -23935,15 +25848,6 @@ msgstr ""
#: scene/resources/texture.cpp
#, fuzzy
-msgid "Storage"
-msgstr "Fişierul se Stochează:"
-
-#: scene/resources/texture.cpp
-msgid "Lossy Quality"
-msgstr ""
-
-#: scene/resources/texture.cpp
-#, fuzzy
msgid "Load Path"
msgstr "Încarcă presetare"
@@ -24070,11 +25974,6 @@ msgstr ""
msgid "Fallback Environment"
msgstr ""
-#: scene/resources/world.cpp scene/resources/world_2d.cpp
-#, fuzzy
-msgid "Space"
-msgstr "Apeluri"
-
#: scene/resources/world.cpp
#, fuzzy
msgid "Scenario"
@@ -24153,10 +26052,37 @@ msgstr ""
msgid "Wet"
msgstr ""
-#: servers/audio/effects/audio_effect_compressor.cpp
-msgid "Threshold"
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "Voice"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+msgid "Delay (ms)"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_phaser.cpp
+msgid "Rate Hz"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#, fuzzy
+msgid "Depth (ms)"
+msgstr "Adâncime"
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+msgid "Level dB"
msgstr ""
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+#: servers/audio/effects/audio_effect_panner.cpp
+#, fuzzy
+msgid "Pan"
+msgstr "Ambalare"
+
#: servers/audio/effects/audio_effect_compressor.cpp
#: servers/audio/effects/audio_effect_filter.cpp
msgid "Gain"
@@ -24179,20 +26105,6 @@ msgid "Tap 1"
msgstr ""
#: servers/audio/effects/audio_effect_delay.cpp
-msgid "Delay (ms)"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_delay.cpp
-msgid "Level dB"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_delay.cpp
-#: servers/audio/effects/audio_effect_panner.cpp
-#, fuzzy
-msgid "Pan"
-msgstr "Ambalare"
-
-#: servers/audio/effects/audio_effect_delay.cpp
msgid "Tap 2"
msgstr ""
@@ -24253,10 +26165,6 @@ msgstr ""
msgid "Range Max Hz"
msgstr ""
-#: servers/audio/effects/audio_effect_phaser.cpp
-msgid "Rate Hz"
-msgstr ""
-
#: servers/audio/effects/audio_effect_pitch_shift.cpp
msgid "Oversampling"
msgstr ""
@@ -24272,7 +26180,7 @@ msgid "Predelay"
msgstr ""
#: servers/audio/effects/audio_effect_reverb.cpp
-msgid "(msec)"
+msgid "Msec"
msgstr ""
#: servers/audio/effects/audio_effect_reverb.cpp
diff --git a/editor/translations/ru.po b/editor/translations/ru.po
index 7d232d0b0f..8878d28dac 100644
--- a/editor/translations/ru.po
+++ b/editor/translations/ru.po
@@ -103,13 +103,14 @@
# AngryPhilomel <an.aries@icloud.com>, 2021.
# Russkikh Michail <summersay415@gmail.com>, 2022.
# Alex_Faction <creeponedead@gmail.com>, 2022.
+# МакÑим ЛегоÑтаев <dstu1914346@gmail.com>, 2022.
msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
"Report-Msgid-Bugs-To: https://github.com/godotengine/godot\n"
"POT-Creation-Date: \n"
-"PO-Revision-Date: 2022-03-13 22:12+0000\n"
-"Last-Translator: Alex_Faction <creeponedead@gmail.com>\n"
+"PO-Revision-Date: 2022-03-28 05:19+0000\n"
+"Last-Translator: МакÑим ЛегоÑтаев <dstu1914346@gmail.com>\n"
"Language-Team: Russian <https://hosted.weblate.org/projects/godot-engine/"
"godot/ru/>\n"
"Language: ru\n"
@@ -120,175 +121,153 @@ msgstr ""
"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
"X-Generator: Weblate 4.12-dev\n"
-#: core/bind/core_bind.cpp
+#: core/bind/core_bind.cpp main/main.cpp
msgid "Tablet Driver"
-msgstr ""
+msgstr "Драйвер планшета"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Clipboard"
-msgstr "Буфер обмена пуÑÑ‚!"
+msgstr "Буфер обмена"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Current Screen"
-msgstr "Ð¢ÐµÐºÑƒÑ‰Ð°Ñ Ñцена"
+msgstr "Текущий Ñкран"
#: core/bind/core_bind.cpp
msgid "Exit Code"
-msgstr ""
+msgstr "Код выхода"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "V-Sync Enabled"
-msgstr "Включить"
+msgstr "Ð’ÐµÑ€Ñ‚Ð¸ÐºÐ°Ð»ÑŒÐ½Ð°Ñ ÑÐ¸Ð½Ñ…Ñ€Ð¾Ð½Ð¸Ð·Ð°Ñ†Ð¸Ñ Ð²ÐºÐ»ÑŽÑ‡ÐµÐ½Ð°"
#: core/bind/core_bind.cpp main/main.cpp
msgid "V-Sync Via Compositor"
-msgstr ""
+msgstr "Ð’ÐµÑ€Ñ‚Ð¸ÐºÐ°Ð»ÑŒÐ½Ð°Ñ ÑÐ¸Ð½Ñ…Ñ€Ð¾Ð½Ð¸Ð·Ð°Ñ†Ð¸Ñ Ñ‡ÐµÑ€ÐµÐ· композитный менеджер окон"
#: core/bind/core_bind.cpp main/main.cpp
msgid "Delta Smoothing"
-msgstr ""
+msgstr "Дельта-Ñглаживание"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Low Processor Usage Mode"
-msgstr "Режим перемещениÑ"
+msgstr "Режим низкой нагрузки процеÑÑора"
#: core/bind/core_bind.cpp
msgid "Low Processor Usage Mode Sleep (µsec)"
-msgstr ""
+msgstr "Задержка в режиме низкой нагрузки процеÑÑора (мкÑек)"
#: core/bind/core_bind.cpp main/main.cpp platform/uwp/os_uwp.cpp
-#, fuzzy
msgid "Keep Screen On"
-msgstr "ОÑтавить отладчик открытым"
+msgstr "Ðе выключать Ñкран"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Min Window Size"
-msgstr "Размер обводки:"
+msgstr "Минимальный размер окна"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Max Window Size"
-msgstr "Размер обводки:"
+msgstr "МакÑимальный размер окна"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Screen Orientation"
-msgstr "Оператор Ñкрана."
+msgstr "ÐžÑ€Ð¸ÐµÐ½Ñ‚Ð°Ñ†Ð¸Ñ Ñкрана"
#: core/bind/core_bind.cpp main/main.cpp platform/uwp/os_uwp.cpp
-#, fuzzy
msgid "Window"
-msgstr "Ðовое окно"
+msgstr "Окно"
#: core/bind/core_bind.cpp main/main.cpp
-#, fuzzy
msgid "Borderless"
-msgstr "Граничные пикÑели"
+msgstr "Без границ"
#: core/bind/core_bind.cpp
msgid "Per Pixel Transparency Enabled"
-msgstr ""
+msgstr "ПопикÑÐµÐ»ÑŒÐ½Ð°Ñ Ð¿Ñ€Ð¾Ð·Ñ€Ð°Ñ‡Ð½Ð¾Ñть включена"
#: core/bind/core_bind.cpp main/main.cpp
-#, fuzzy
msgid "Fullscreen"
-msgstr "Включить полноÑкранный режим"
+msgstr "ПолноÑкранный режим"
#: core/bind/core_bind.cpp
msgid "Maximized"
-msgstr ""
+msgstr "МакÑимизировано"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Minimized"
-msgstr "Инициализировать"
+msgstr "Свёрнуто"
#: core/bind/core_bind.cpp main/main.cpp scene/gui/dialogs.cpp
#: scene/gui/graph_node.cpp
msgid "Resizable"
-msgstr ""
+msgstr "ИзменÑемый размер"
#: core/bind/core_bind.cpp core/os/input_event.cpp scene/2d/node_2d.cpp
#: scene/2d/physics_body_2d.cpp scene/2d/remote_transform_2d.cpp
#: scene/3d/physics_body.cpp scene/3d/remote_transform.cpp
#: scene/gui/control.cpp scene/gui/line_edit.cpp
-#, fuzzy
msgid "Position"
-msgstr "ÐŸÐ¾Ð·Ð¸Ñ†Ð¸Ñ Ð¿Ð°Ð½ÐµÐ»Ð¸"
+msgstr "ПозициÑ"
#: core/bind/core_bind.cpp editor/editor_settings.cpp main/main.cpp
#: modules/gdscript/gdscript_editor.cpp modules/gridmap/grid_map.cpp
#: modules/mono/csharp_script.cpp modules/visual_script/visual_script_nodes.cpp
-#: scene/2d/tile_map.cpp scene/3d/camera.cpp scene/gui/control.cpp
-#: scene/gui/graph_edit.cpp scene/main/viewport.cpp
+#: scene/2d/tile_map.cpp scene/3d/camera.cpp scene/3d/light.cpp
+#: scene/gui/control.cpp scene/gui/graph_edit.cpp scene/main/viewport.cpp
#: scene/resources/dynamic_font.cpp scene/resources/navigation_mesh.cpp
#: scene/resources/primitive_meshes.cpp scene/resources/sky.cpp
#: scene/resources/style_box.cpp scene/resources/texture.cpp
#: scene/resources/visual_shader.cpp servers/visual_server.cpp
-#, fuzzy
msgid "Size"
-msgstr "Размер:"
+msgstr "Размер"
#: core/bind/core_bind.cpp
msgid "Endian Swap"
-msgstr ""
+msgstr "Обратный порÑдок байтов"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Editor Hint"
-msgstr "Редактор"
+msgstr "Метка редактора"
#: core/bind/core_bind.cpp
msgid "Print Error Messages"
-msgstr ""
+msgstr "Печатать ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð¾Ð± ошибках"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Iterations Per Second"
-msgstr "Режим интерполÑции"
+msgstr "Итераций в Ñекунду"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Target FPS"
-msgstr "Цель"
+msgstr "Целевой FPS"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Time Scale"
-msgstr "TimeScale узел"
+msgstr "МаÑштаб времени"
#: core/bind/core_bind.cpp main/main.cpp
-#, fuzzy
msgid "Physics Jitter Fix"
-msgstr "Кадр физики %"
+msgstr "ИÑправление джиттера физики"
#: core/bind/core_bind.cpp editor/plugins/version_control_editor_plugin.cpp
msgid "Error"
msgstr "Ошибка"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Error String"
-msgstr "Ошибка ÑохранениÑ"
+msgstr "ТекÑÑ‚ ошибки"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Error Line"
-msgstr "Ошибка ÑохранениÑ"
+msgstr "Строка ошибки"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Result"
-msgstr "Результаты поиÑка"
+msgstr "Результат"
#: core/command_queue_mt.cpp core/message_queue.cpp main/main.cpp
msgid "Memory"
-msgstr ""
+msgstr "ПамÑть"
#: core/command_queue_mt.cpp core/message_queue.cpp
#: core/register_core_types.cpp drivers/gles2/rasterizer_canvas_base_gles2.cpp
@@ -298,16 +277,15 @@ msgstr ""
#: drivers/gles3/rasterizer_storage_gles3.cpp main/main.cpp
#: servers/visual_server.cpp
msgid "Limits"
-msgstr ""
+msgstr "Лимиты"
#: core/command_queue_mt.cpp
-#, fuzzy
msgid "Command Queue"
-msgstr "Command: Повернуть"
+msgstr "Очередь команд"
#: core/command_queue_mt.cpp
msgid "Multithreading Queue Size (KB)"
-msgstr ""
+msgstr "Размер многопоточной очереди (КБ)"
#: core/func_ref.cpp modules/visual_script/visual_script_builtin_funcs.cpp
#: modules/visual_script/visual_script_func_nodes.cpp
@@ -324,111 +302,99 @@ msgstr "ФункциÑ"
#: scene/resources/audio_stream_sample.cpp scene/resources/bit_map.cpp
#: scene/resources/concave_polygon_shape.cpp scene/resources/curve.cpp
#: scene/resources/polygon_path_finder.cpp scene/resources/texture.cpp
-#, fuzzy
msgid "Data"
-msgstr "С данными"
+msgstr "Данные"
#: core/io/file_access_network.cpp core/register_core_types.cpp
-#: editor/editor_settings.cpp editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp main/main.cpp
+#: editor/editor_settings.cpp main/main.cpp
#: modules/gdscript/language_server/gdscript_language_server.cpp
-#, fuzzy
msgid "Network"
-msgstr "Сетевой профайлер"
+msgstr "Сеть"
#: core/io/file_access_network.cpp
-#, fuzzy
msgid "Remote FS"
-msgstr "Удаленный "
+msgstr "Ð£Ð´Ð°Ð»Ñ‘Ð½Ð½Ð°Ñ Ð¤Ð¡"
#: core/io/file_access_network.cpp
-#, fuzzy
msgid "Page Size"
-msgstr "Страница: "
+msgstr "Размер Ñтраницы"
#: core/io/file_access_network.cpp
+#, fuzzy
msgid "Page Read Ahead"
-msgstr ""
+msgstr "КÑширование Ñтраниц"
#: core/io/http_client.cpp
msgid "Blocking Mode Enabled"
-msgstr ""
+msgstr "Блокирующий режим включён"
#: core/io/http_client.cpp
-#, fuzzy
msgid "Connection"
-msgstr "ПриÑоединить"
+msgstr "Соединение"
#: core/io/http_client.cpp
msgid "Read Chunk Size"
-msgstr ""
+msgstr "Размер чанка чтениÑ"
#: core/io/marshalls.cpp
-#, fuzzy
msgid "Object ID"
-msgstr "ОтриÑовано объектов:"
+msgstr "ID объекта"
#: core/io/multiplayer_api.cpp core/io/packet_peer.cpp
-#, fuzzy
msgid "Allow Object Decoding"
-msgstr "Включить режим кальки"
+msgstr "Разрешить декодирование объектов"
#: core/io/multiplayer_api.cpp scene/main/scene_tree.cpp
msgid "Refuse New Network Connections"
-msgstr ""
+msgstr "ОтклонÑть новые Ñетевые ÑоединениÑ"
#: core/io/multiplayer_api.cpp scene/main/scene_tree.cpp
-#, fuzzy
msgid "Network Peer"
-msgstr "Сетевой профайлер"
+msgstr "Сетевой узел"
#: core/io/multiplayer_api.cpp scene/animation/animation_player.cpp
-#, fuzzy
msgid "Root Node"
-msgstr "Ð˜Ð¼Ñ ÐºÐ¾Ñ€Ð½ÐµÐ²Ð¾Ð³Ð¾ узла"
+msgstr "Корневой узел"
#: core/io/networked_multiplayer_peer.cpp
-#, fuzzy
msgid "Refuse New Connections"
-msgstr "ПриÑоединить"
+msgstr "ОтклонÑть новые ÑоединениÑ"
#: core/io/networked_multiplayer_peer.cpp
-#, fuzzy
msgid "Transfer Mode"
-msgstr "Тип преобразованиÑ"
+msgstr "Режим передачи"
#: core/io/packet_peer.cpp
msgid "Encode Buffer Max Size"
-msgstr ""
+msgstr "МакÑимальный размер буфера кодированиÑ"
#: core/io/packet_peer.cpp
msgid "Input Buffer Max Size"
-msgstr ""
+msgstr "МакÑимальный размер входÑщего буфера"
#: core/io/packet_peer.cpp
msgid "Output Buffer Max Size"
-msgstr ""
+msgstr "МакÑимальный размер иÑходÑщего буфера"
#: core/io/packet_peer.cpp
msgid "Stream Peer"
-msgstr ""
+msgstr "Узел потоковой передачи"
#: core/io/stream_peer.cpp
msgid "Big Endian"
-msgstr ""
+msgstr "ПрÑмой порÑдок байтов"
#: core/io/stream_peer.cpp
msgid "Data Array"
-msgstr ""
+msgstr "МаÑÑив данных"
#: core/io/stream_peer_ssl.cpp
msgid "Blocking Handshake"
msgstr ""
#: core/io/udp_server.cpp
-#, fuzzy
msgid "Max Pending Connections"
-msgstr "Редактировать Ñоединение:"
+msgstr "МакÑимальное количеÑтво ожидающих подключений"
#: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp
#: modules/visual_script/visual_script_builtin_funcs.cpp
@@ -479,20 +445,19 @@ msgstr "При вызове «%s»:"
#: core/math/random_number_generator.cpp
#: modules/opensimplex/open_simplex_noise.cpp
msgid "Seed"
-msgstr ""
+msgstr "Зерно"
#: core/math/random_number_generator.cpp
-#, fuzzy
msgid "State"
-msgstr "СтатуÑ"
+msgstr "СоÑтоÑние"
#: core/message_queue.cpp
msgid "Message Queue"
-msgstr ""
+msgstr "Очередь Ñообщений"
#: core/message_queue.cpp
msgid "Max Size (KB)"
-msgstr ""
+msgstr "МакÑимальный размер (КБ)"
#: core/os/input.cpp editor/editor_help.cpp editor/editor_settings.cpp
#: editor/plugins/script_editor_plugin.cpp
@@ -504,9 +469,8 @@ msgstr ""
#: modules/mono/csharp_script.cpp scene/animation/animation_player.cpp
#: scene/gui/control.cpp scene/gui/line_edit.cpp scene/main/node.cpp
#: scene/resources/material.cpp
-#, fuzzy
msgid "Text Editor"
-msgstr "Открыть редактор"
+msgstr "ТекÑтовый редактор"
#: core/os/input.cpp editor/editor_settings.cpp
#: editor/plugins/script_text_editor.cpp modules/gdscript/gdscript.cpp
@@ -514,18 +478,16 @@ msgstr "Открыть редактор"
#: modules/gdscript/language_server/gdscript_text_document.cpp
#: scene/animation/animation_player.cpp scene/gui/control.cpp
#: scene/main/node.cpp scene/resources/material.cpp
-#, fuzzy
msgid "Completion"
-msgstr "Копировать выделенное"
+msgstr "Завершение"
#: core/os/input.cpp editor/editor_settings.cpp
#: editor/plugins/script_text_editor.cpp modules/gdscript/gdscript_editor.cpp
#: modules/gdscript/language_server/gdscript_text_document.cpp
#: scene/animation/animation_player.cpp scene/gui/control.cpp
#: scene/main/node.cpp scene/resources/material.cpp
-#, fuzzy
msgid "Use Single Quotes"
-msgstr "ÐÐ¾Ð²Ð°Ñ Ð¾Ð´Ð¸Ð½Ð¾Ñ‡Ð½Ð°Ñ Ð¿Ð»Ð¸Ñ‚ÐºÐ°"
+msgstr "ИÑпользовать одинарные кавычки"
#: core/os/input_event.cpp editor/project_settings_editor.cpp
#: servers/audio_server.cpp
@@ -533,96 +495,84 @@ msgid "Device"
msgstr "УÑтройÑтво"
#: core/os/input_event.cpp
-#, fuzzy
msgid "Alt"
-msgstr "Ð’Ñе"
+msgstr "Alt"
#: core/os/input_event.cpp
msgid "Shift"
-msgstr ""
+msgstr "Shift"
#: core/os/input_event.cpp
-#, fuzzy
msgid "Control"
-msgstr "Контроль верÑий"
+msgstr "Control"
#: core/os/input_event.cpp
msgid "Meta"
-msgstr ""
+msgstr "Meta"
#: core/os/input_event.cpp
-#, fuzzy
msgid "Command"
-msgstr "СообщеÑтво"
+msgstr "Command"
#: core/os/input_event.cpp scene/2d/touch_screen_button.cpp
#: scene/gui/base_button.cpp scene/gui/texture_button.cpp
-#, fuzzy
msgid "Pressed"
-msgstr "ПреÑет"
+msgstr "Ðажато"
#: core/os/input_event.cpp
-#, fuzzy
msgid "Scancode"
-msgstr "Сканировать"
+msgstr "Сканкод"
#: core/os/input_event.cpp
-#, fuzzy
msgid "Physical Scancode"
-msgstr "ФизичеÑÐºÐ°Ñ ÐºÐ»Ð°Ð²Ð¸ÑˆÐ°"
+msgstr "ФизичеÑкий Ñканкод"
#: core/os/input_event.cpp
msgid "Unicode"
-msgstr ""
+msgstr "Юникод"
#: core/os/input_event.cpp
msgid "Echo"
-msgstr ""
+msgstr "Эхо"
#: core/os/input_event.cpp scene/gui/base_button.cpp
-#, fuzzy
msgid "Button Mask"
-msgstr "Кнопка"
+msgstr "МаÑка кнопок"
#: core/os/input_event.cpp scene/2d/node_2d.cpp scene/gui/control.cpp
-#, fuzzy
msgid "Global Position"
-msgstr "Ð“Ð»Ð¾Ð±Ð°Ð»ÑŒÐ½Ð°Ñ ÐºÐ¾Ð½Ñтанта"
+msgstr "Ð“Ð»Ð¾Ð±Ð°Ð»ÑŒÐ½Ð°Ñ Ð¿Ð¾Ð·Ð¸Ñ†Ð¸Ñ"
#: core/os/input_event.cpp
-#, fuzzy
msgid "Factor"
-msgstr "Вектор"
+msgstr "Множитель"
#: core/os/input_event.cpp
-#, fuzzy
msgid "Button Index"
-msgstr "Ð˜Ð½Ð´ÐµÐºÑ ÐºÐ½Ð¾Ð¿ÐºÐ¸ мыши:"
+msgstr "Ð˜Ð½Ð´ÐµÐºÑ ÐºÐ½Ð¾Ð¿ÐºÐ¸"
#: core/os/input_event.cpp
msgid "Doubleclick"
-msgstr ""
+msgstr "Двойной щелчок"
#: core/os/input_event.cpp
msgid "Tilt"
-msgstr ""
+msgstr "Ðаклон"
#: core/os/input_event.cpp
-#, fuzzy
msgid "Pressure"
-msgstr "ПреÑет"
+msgstr "Давление"
#: core/os/input_event.cpp
-#, fuzzy
msgid "Relative"
-msgstr "ОтноÑÐ¸Ñ‚ÐµÐ»ÑŒÐ½Ð°Ñ Ð¿Ñ€Ð¸Ð²Ñзка"
+msgstr "ОтноÑительный"
-#: core/os/input_event.cpp scene/2d/camera_2d.cpp
-#: scene/3d/interpolated_camera.cpp scene/animation/animation_player.cpp
-#: scene/resources/environment.cpp
-#, fuzzy
+#: core/os/input_event.cpp scene/2d/camera_2d.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/interpolated_camera.cpp
+#: scene/animation/animation_player.cpp scene/resources/environment.cpp
+#: scene/resources/particles_material.cpp
msgid "Speed"
-msgstr "СкороÑть:"
+msgstr "СкороÑть"
#: core/os/input_event.cpp editor/project_settings_editor.cpp
#: scene/3d/sprite_3d.cpp
@@ -630,14 +580,12 @@ msgid "Axis"
msgstr "ОÑÑŒ"
#: core/os/input_event.cpp
-#, fuzzy
msgid "Axis Value"
-msgstr "Закрепить значение"
+msgstr "Значение оÑи"
#: core/os/input_event.cpp modules/visual_script/visual_script_func_nodes.cpp
-#, fuzzy
msgid "Index"
-msgstr "ИндекÑ:"
+msgstr "ИндекÑ"
#: core/os/input_event.cpp editor/project_settings_editor.cpp
#: modules/visual_script/visual_script_nodes.cpp
@@ -648,72 +596,70 @@ msgstr "ДейÑтвие"
#: core/os/input_event.cpp scene/resources/environment.cpp
#: scene/resources/material.cpp
msgid "Strength"
-msgstr ""
+msgstr "Сила"
#: core/os/input_event.cpp
msgid "Delta"
-msgstr ""
+msgstr "Дельта"
#: core/os/input_event.cpp
-#, fuzzy
msgid "Channel"
-msgstr "Изменить"
+msgstr "Канал"
#: core/os/input_event.cpp main/main.cpp
-#, fuzzy
msgid "Message"
-msgstr "Сообщение коммита"
+msgstr "Сообщение"
#: core/os/input_event.cpp
-#, fuzzy
msgid "Pitch"
-msgstr "Ð’Ñ‹Ñота:"
+msgstr "Ð’Ñ‹Ñота"
-#: core/os/input_event.cpp scene/2d/physics_body_2d.cpp
-#: scene/3d/physics_body.cpp
-#, fuzzy
+#: core/os/input_event.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/physics_body_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/3d/physics_body.cpp scene/resources/particles_material.cpp
msgid "Velocity"
-msgstr "Вид Ñ Ð¾Ñ€Ð±Ð¸Ñ‚Ñ‹ вправо"
+msgstr "СкороÑть"
#: core/os/input_event.cpp
msgid "Instrument"
-msgstr ""
+msgstr "ИнÑтрумент"
#: core/os/input_event.cpp
-#, fuzzy
msgid "Controller Number"
-msgstr "Ðомер Ñтроки:"
+msgstr "Ðомер контроллера"
#: core/os/input_event.cpp
msgid "Controller Value"
-msgstr ""
+msgstr "Значение контроллера"
#: core/project_settings.cpp editor/editor_node.cpp main/main.cpp
-#, fuzzy
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/windows/export/export.cpp
msgid "Application"
-msgstr "ДейÑтвие"
+msgstr "Приложение"
#: core/project_settings.cpp main/main.cpp
-#, fuzzy
msgid "Config"
-msgstr "ÐаÑтроить привÑзку"
+msgstr "КонфигурациÑ"
#: core/project_settings.cpp
-#, fuzzy
msgid "Project Settings Override"
-msgstr "ÐаÑтройки проекта..."
+msgstr "Переопределение ÐаÑтроек проекта"
#: core/project_settings.cpp core/resource.cpp
#: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp
#: editor/editor_plugin_settings.cpp editor/editor_profiler.cpp
#: editor/project_manager.cpp editor/settings_config_dialog.cpp
-#: modules/gdnative/nativescript/nativescript.cpp scene/2d/area_2d.cpp
-#: scene/3d/area.cpp scene/main/node.cpp
+#: modules/gdnative/nativescript/nativescript.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/osx/export/export.cpp scene/2d/area_2d.cpp scene/3d/area.cpp
+#: scene/main/node.cpp
msgid "Name"
msgstr "Ðазвание"
#: core/project_settings.cpp editor/editor_help.cpp
-#: modules/visual_script/visual_script_nodes.cpp
+#: modules/visual_script/visual_script_nodes.cpp platform/uwp/export/export.cpp
+#: platform/windows/export/export.cpp
msgid "Description"
msgstr "ОпиÑание"
@@ -729,36 +675,33 @@ msgid "Main Scene"
msgstr "Ð“Ð»Ð°Ð²Ð½Ð°Ñ Ñцена"
#: core/project_settings.cpp
-#, fuzzy
msgid "Disable stdout"
-msgstr "Отключить автотайлы"
+msgstr "Отключить Ñтандартный вывод"
#: core/project_settings.cpp
-#, fuzzy
msgid "Disable stderr"
-msgstr "Отключённый Ñлемент"
+msgstr "Отключить Ñтандартный вывод ошибок"
#: core/project_settings.cpp
msgid "Use Hidden Project Data Directory"
-msgstr ""
+msgstr "ИÑпользовать Ñкрытую директорию данных проекта"
#: core/project_settings.cpp
msgid "Use Custom User Dir"
-msgstr ""
+msgstr "ИÑпользовать ÑобÑтвенную директорию данных пользователÑ"
#: core/project_settings.cpp
msgid "Custom User Dir Name"
-msgstr ""
+msgstr "Ð˜Ð¼Ñ ÑобÑтвенной директории данных пользователÑ"
#: core/project_settings.cpp editor/animation_track_editor.cpp
-#: editor/editor_audio_buses.cpp servers/audio_server.cpp
+#: editor/editor_audio_buses.cpp main/main.cpp servers/audio_server.cpp
msgid "Audio"
msgstr "Ðудио"
#: core/project_settings.cpp
-#, fuzzy
msgid "Default Bus Layout"
-msgstr "Загрузить раÑкладку шины по умолчанию."
+msgstr "РаÑкладка шины по умолчанию"
#: core/project_settings.cpp editor/editor_export.cpp
#: editor/editor_file_system.cpp editor/editor_node.cpp
@@ -768,17 +711,16 @@ msgid "Editor"
msgstr "Редактор"
#: core/project_settings.cpp
-#, fuzzy
msgid "Main Run Args"
-msgstr "Ðргументы главной Ñцены:"
+msgstr "ОÑновные аргументы запуÑка"
#: core/project_settings.cpp
msgid "Search In File Extensions"
-msgstr ""
+msgstr "ИÑкать в раÑширениÑÑ… файлов"
#: core/project_settings.cpp
msgid "Script Templates Search Path"
-msgstr ""
+msgstr "Путь поиÑка шаблонов Ñкриптов"
#: core/project_settings.cpp editor/editor_node.cpp
#: editor/plugins/version_control_editor_plugin.cpp
@@ -787,79 +729,68 @@ msgstr "Контроль верÑий"
#: core/project_settings.cpp
msgid "Autoload On Startup"
-msgstr ""
+msgstr "Ðвтозагрузка при запуÑке"
#: core/project_settings.cpp
-#, fuzzy
msgid "Plugin Name"
-msgstr "Ð˜Ð¼Ñ Ð´Ð¾Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ:"
+msgstr "Ðазвание плагина"
#: core/project_settings.cpp scene/2d/collision_object_2d.cpp
#: scene/3d/collision_object.cpp scene/gui/control.cpp
-#, fuzzy
msgid "Input"
-msgstr "Добавить вход"
+msgstr "Вход"
#: core/project_settings.cpp
msgid "UI Accept"
-msgstr ""
+msgstr "UI Подтвердить"
#: core/project_settings.cpp
-#, fuzzy
msgid "UI Select"
-msgstr "Выделение"
+msgstr "UI Выбрать"
#: core/project_settings.cpp
-#, fuzzy
msgid "UI Cancel"
-msgstr "Отмена"
+msgstr "UI Отменить"
#: core/project_settings.cpp
-#, fuzzy
msgid "UI Focus Next"
-msgstr "ПеремеÑтить Ñ„Ð¾ÐºÑƒÑ Ð½Ð° Ñтроку пути"
+msgstr "UI Следующий фокуÑ"
#: core/project_settings.cpp
-#, fuzzy
msgid "UI Focus Prev"
-msgstr "ПеремеÑтить Ñ„Ð¾ÐºÑƒÑ Ð½Ð° Ñтроку пути"
+msgstr "UI Предыдущий фокуÑ"
#: core/project_settings.cpp
-#, fuzzy
msgid "UI Left"
-msgstr "Слева вверху"
+msgstr "UI Влево"
#: core/project_settings.cpp
-#, fuzzy
msgid "UI Right"
-msgstr "Справа вверху"
+msgstr "UI Вправо"
#: core/project_settings.cpp
msgid "UI Up"
-msgstr ""
+msgstr "UI Вверх"
#: core/project_settings.cpp
-#, fuzzy
msgid "UI Down"
-msgstr "Вниз"
+msgstr "UI Вниз"
#: core/project_settings.cpp
-#, fuzzy
msgid "UI Page Up"
-msgstr "Страница: "
+msgstr "UI Ðа Ñтраницу вверх"
#: core/project_settings.cpp
msgid "UI Page Down"
-msgstr ""
+msgstr "UI Ðа Ñтраницу вниз"
#: core/project_settings.cpp
msgid "UI Home"
-msgstr ""
+msgstr "UI Домой"
#: core/project_settings.cpp
-#, fuzzy
msgid "UI End"
-msgstr "В конце"
+msgstr "UI В конец"
#: core/project_settings.cpp main/main.cpp modules/bullet/register_types.cpp
#: modules/bullet/space_bullet.cpp scene/2d/physics_body_2d.cpp
@@ -868,9 +799,8 @@ msgstr "В конце"
#: servers/physics/space_sw.cpp servers/physics_2d/physics_2d_server_sw.cpp
#: servers/physics_2d/physics_2d_server_wrap_mt.h
#: servers/physics_2d/space_2d_sw.cpp
-#, fuzzy
msgid "Physics"
-msgstr " (ФизичеÑкаÑ)"
+msgstr "Физика"
#: core/project_settings.cpp editor/editor_settings.cpp
#: editor/plugins/spatial_editor_plugin.cpp main/main.cpp
@@ -878,7 +808,7 @@ msgstr " (ФизичеÑкаÑ)"
#: scene/3d/physics_body.cpp scene/resources/world.cpp
#: servers/physics/space_sw.cpp
msgid "3D"
-msgstr ""
+msgstr "3D"
#: core/project_settings.cpp
#, fuzzy
@@ -894,9 +824,8 @@ msgstr "Создать вогнутую облаÑть ÑтолкновениÑ"
#: modules/lightmapper_cpu/register_types.cpp scene/main/scene_tree.cpp
#: scene/main/viewport.cpp servers/visual/visual_server_scene.cpp
#: servers/visual_server.cpp
-#, fuzzy
msgid "Rendering"
-msgstr "ОтриÑовщик:"
+msgstr "Рендеринг"
#: core/project_settings.cpp drivers/gles2/rasterizer_storage_gles2.cpp
#: drivers/gles3/rasterizer_scene_gles3.cpp
@@ -906,23 +835,25 @@ msgstr "ОтриÑовщик:"
#: scene/resources/multimesh.cpp servers/visual/visual_server_scene.cpp
#: servers/visual_server.cpp
msgid "Quality"
-msgstr ""
+msgstr "КачеÑтво"
#: core/project_settings.cpp scene/animation/animation_tree.cpp
#: scene/gui/file_dialog.cpp scene/main/scene_tree.cpp
#: servers/visual_server.cpp
-#, fuzzy
msgid "Filters"
-msgstr "Фильтры:"
+msgstr "Фильтры"
#: core/project_settings.cpp scene/main/viewport.cpp
msgid "Sharpen Intensity"
msgstr ""
-#: core/project_settings.cpp editor/editor_node.cpp editor/editor_settings.cpp
-#: editor/plugins/script_editor_plugin.cpp editor/project_export.cpp
-#: main/main.cpp modules/gdscript/gdscript.cpp
-#: modules/visual_script/visual_script.cpp scene/3d/room_manager.cpp
+#: core/project_settings.cpp editor/editor_export.cpp editor/editor_node.cpp
+#: editor/editor_settings.cpp editor/plugins/script_editor_plugin.cpp
+#: editor/project_export.cpp main/main.cpp modules/gdscript/gdscript.cpp
+#: modules/visual_script/visual_script.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp scene/3d/room_manager.cpp
#: scene/main/scene_tree.cpp scene/resources/shape_2d.cpp
#: servers/visual_server.cpp
msgid "Debug"
@@ -930,9 +861,8 @@ msgstr "Отладка"
#: core/project_settings.cpp main/main.cpp modules/gdscript/gdscript.cpp
#: modules/visual_script/visual_script.cpp scene/resources/dynamic_font.cpp
-#, fuzzy
msgid "Settings"
-msgstr "Параметры:"
+msgstr "ÐаÑтройки"
#: core/project_settings.cpp editor/script_editor_debugger.cpp main/main.cpp
#: modules/mono/mono_gd/gd_mono.cpp
@@ -940,23 +870,20 @@ msgid "Profiler"
msgstr "Профайлер"
#: core/project_settings.cpp
-#, fuzzy
msgid "Max Functions"
-msgstr "Сделать функцию"
+msgstr "МакÑимум функций"
#: core/project_settings.cpp scene/3d/vehicle_body.cpp
-#, fuzzy
msgid "Compression"
-msgstr "Выражение"
+msgstr "Сжатие"
#: core/project_settings.cpp
-#, fuzzy
msgid "Formats"
-msgstr "Формат"
+msgstr "Форматы"
#: core/project_settings.cpp
msgid "Zstd"
-msgstr ""
+msgstr "Zstd"
#: core/project_settings.cpp
msgid "Long Distance Matching"
@@ -964,53 +891,51 @@ msgstr ""
#: core/project_settings.cpp
msgid "Compression Level"
-msgstr ""
+msgstr "Уровень ÑжатиÑ"
#: core/project_settings.cpp
msgid "Window Log Size"
-msgstr ""
+msgstr "Размер журнала окна"
#: core/project_settings.cpp
msgid "Zlib"
-msgstr ""
+msgstr "Zlib"
#: core/project_settings.cpp
msgid "Gzip"
-msgstr ""
+msgstr "Gzip"
#: core/project_settings.cpp platform/android/export/export.cpp
msgid "Android"
-msgstr ""
+msgstr "Android"
#: core/project_settings.cpp
msgid "Modules"
-msgstr ""
+msgstr "Модули"
#: core/register_core_types.cpp
msgid "TCP"
-msgstr ""
+msgstr "TCP"
#: core/register_core_types.cpp
-#, fuzzy
msgid "Connect Timeout Seconds"
-msgstr "ÐŸÐ¾Ð´ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ Ðº методу:"
+msgstr "Ð’Ñ€ÐµÐ¼Ñ Ð¾Ð¶Ð¸Ð´Ð°Ð½Ð¸Ñ Ð¿Ð¾Ð´ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ Ð² Ñекундах"
#: core/register_core_types.cpp
msgid "Packet Peer Stream"
-msgstr ""
+msgstr "Пакетный одноранговый поток"
#: core/register_core_types.cpp
msgid "Max Buffer (Power of 2)"
-msgstr ""
+msgstr "МакÑимальный буфер (Ñтепень 2)"
#: core/register_core_types.cpp editor/editor_settings.cpp main/main.cpp
msgid "SSL"
-msgstr ""
+msgstr "SSL"
#: core/register_core_types.cpp main/main.cpp
-#, fuzzy
msgid "Certificates"
-msgstr "Вершины:"
+msgstr "Сертификаты"
#: core/resource.cpp editor/dependency_editor.cpp
#: editor/editor_resource_picker.cpp
@@ -1019,9 +944,8 @@ msgid "Resource"
msgstr "РеÑурÑ"
#: core/resource.cpp
-#, fuzzy
msgid "Local To Scene"
-msgstr "Закрыть Ñцену"
+msgstr "Локальный Ð´Ð»Ñ Ñцены"
#: core/resource.cpp editor/dependency_editor.cpp
#: editor/editor_autoload_settings.cpp editor/plugins/path_editor_plugin.cpp
@@ -1031,27 +955,24 @@ msgid "Path"
msgstr "Путь"
#: core/script_language.cpp
-#, fuzzy
msgid "Source Code"
-msgstr "ИÑточник"
+msgstr "ИÑходный код"
#: core/translation.cpp
-#, fuzzy
msgid "Messages"
-msgstr "Сообщение коммита"
+msgstr "СообщениÑ"
#: core/translation.cpp editor/project_settings_editor.cpp
msgid "Locale"
msgstr "Локаль"
#: core/translation.cpp
-#, fuzzy
msgid "Test"
-msgstr "ТеÑтируемые"
+msgstr "ТеÑÑ‚"
#: core/translation.cpp scene/resources/font.cpp
msgid "Fallback"
-msgstr ""
+msgstr "ЗапаÑной вариант"
#: core/ustring.cpp scene/resources/segment_shape_2d.cpp
msgid "B"
@@ -1087,17 +1008,17 @@ msgstr "ЭиБ"
#: drivers/gles3/rasterizer_scene_gles3.cpp
#: drivers/gles3/rasterizer_storage_gles3.cpp modules/gltf/gltf_state.cpp
msgid "Buffers"
-msgstr ""
+msgstr "Буферы"
#: drivers/gles2/rasterizer_canvas_base_gles2.cpp
#: drivers/gles3/rasterizer_canvas_base_gles3.cpp
msgid "Canvas Polygon Buffer Size (KB)"
-msgstr ""
+msgstr "Размер буфера полигонов холÑта (КБ)"
#: drivers/gles2/rasterizer_canvas_base_gles2.cpp
#: drivers/gles3/rasterizer_canvas_base_gles3.cpp
msgid "Canvas Polygon Index Buffer Size (KB)"
-msgstr ""
+msgstr "Размер буфера индекÑа полигонов холÑта (КБ)"
#: drivers/gles2/rasterizer_canvas_base_gles2.cpp
#: drivers/gles3/rasterizer_canvas_base_gles3.cpp editor/editor_settings.cpp
@@ -1106,19 +1027,17 @@ msgstr ""
#: servers/physics_2d/physics_2d_server_wrap_mt.h
#: servers/physics_2d/space_2d_sw.cpp servers/visual_server.cpp
msgid "2D"
-msgstr ""
+msgstr "2D"
#: drivers/gles2/rasterizer_canvas_base_gles2.cpp
#: drivers/gles3/rasterizer_canvas_base_gles3.cpp
-#, fuzzy
msgid "Snapping"
-msgstr "Ð˜Ð½Ñ‚ÐµÐ»Ð»ÐµÐºÑ‚ÑƒÐ°Ð»ÑŒÐ½Ð°Ñ Ð¿Ñ€Ð¸Ð²Ñзка"
+msgstr "ПривÑзка"
#: drivers/gles2/rasterizer_canvas_base_gles2.cpp
#: drivers/gles3/rasterizer_canvas_base_gles3.cpp
-#, fuzzy
msgid "Use GPU Pixel Snap"
-msgstr "ИÑпользовать попикÑельную привÑзку"
+msgstr "ИÑпользовать попикÑельную привÑзку GPU"
#: drivers/gles2/rasterizer_scene_gles2.cpp
#: drivers/gles3/rasterizer_scene_gles3.cpp
@@ -1127,9 +1046,8 @@ msgstr ""
#: drivers/gles2/rasterizer_storage_gles2.cpp
#: drivers/gles3/rasterizer_storage_gles3.cpp
-#, fuzzy
msgid "Lightmapping"
-msgstr "Запекать карты оÑвещениÑ"
+msgstr "Карты оÑвещениÑ"
#: drivers/gles2/rasterizer_storage_gles2.cpp
#: drivers/gles3/rasterizer_storage_gles3.cpp
@@ -1138,26 +1056,26 @@ msgstr ""
#: drivers/gles3/rasterizer_scene_gles3.cpp
msgid "Max Renderable Elements"
-msgstr ""
+msgstr "МакÑимум отображаемых Ñлементов"
#: drivers/gles3/rasterizer_scene_gles3.cpp
msgid "Max Renderable Lights"
-msgstr ""
+msgstr "МакÑимум отображаемых иÑточников Ñвета"
#: drivers/gles3/rasterizer_scene_gles3.cpp
-#, fuzzy
msgid "Max Renderable Reflections"
-msgstr "Центрировать выбранное"
+msgstr "МакÑимум отображаемых отражений"
#: drivers/gles3/rasterizer_scene_gles3.cpp
msgid "Max Lights Per Object"
-msgstr ""
+msgstr "МакÑимум иÑточников Ñвета на объект"
#: drivers/gles3/rasterizer_scene_gles3.cpp
msgid "Subsurface Scattering"
-msgstr ""
+msgstr "ПодповерхноÑтное раÑÑеÑние"
#: drivers/gles3/rasterizer_scene_gles3.cpp
+#: editor/import/resource_importer_texture.cpp
#: editor/plugins/spatial_editor_plugin.cpp modules/gltf/gltf_node.cpp
#: modules/gridmap/grid_map.cpp scene/2d/cpu_particles_2d.cpp
#: scene/2d/node_2d.cpp scene/2d/parallax_layer.cpp scene/2d/polygon_2d.cpp
@@ -1169,21 +1087,20 @@ msgid "Scale"
msgstr "МаÑштабировать"
#: drivers/gles3/rasterizer_scene_gles3.cpp
-#, fuzzy
msgid "Follow Surface"
-msgstr "Заполнить поверхноÑть"
+msgstr "Следовать за поверхноÑтью"
#: drivers/gles3/rasterizer_scene_gles3.cpp
msgid "Weight Samples"
-msgstr ""
+msgstr "Образцы веÑа"
#: drivers/gles3/rasterizer_scene_gles3.cpp
msgid "Voxel Cone Tracing"
-msgstr ""
+msgstr "ТраÑÑировка вокÑельного конуÑа"
#: drivers/gles3/rasterizer_scene_gles3.cpp scene/resources/environment.cpp
msgid "High Quality"
-msgstr ""
+msgstr "Ð’Ñ‹Ñокое качеÑтво"
#: drivers/gles3/rasterizer_storage_gles3.cpp
msgid "Blend Shape Max Buffer Size (KB)"
@@ -1450,11 +1367,11 @@ msgstr "Удалить дорожку"
#: editor/plugins/tile_map_editor_plugin.cpp editor/scene_tree_dock.cpp
#: editor/spatial_editor_gizmos.cpp modules/csg/csg_gizmos.cpp
#: modules/gridmap/grid_map_editor_plugin.cpp
-#, fuzzy
msgid "Editors"
-msgstr "Редактор"
+msgstr "Редакторы"
#: editor/animation_track_editor.cpp editor/editor_settings.cpp
+#: editor/import/resource_importer_scene.cpp
#: editor/plugins/animation_player_editor_plugin.cpp editor/scene_tree_dock.cpp
#: scene/2d/animated_sprite.cpp scene/2d/cpu_particles_2d.cpp
#: scene/2d/sprite.cpp scene/3d/cpu_particles.cpp scene/3d/sprite_3d.cpp
@@ -1464,9 +1381,8 @@ msgid "Animation"
msgstr "ÐнимациÑ"
#: editor/animation_track_editor.cpp editor/editor_settings.cpp
-#, fuzzy
msgid "Confirm Insert Track"
-msgstr "Ð’Ñтавить дорожку и ключ"
+msgstr "Подтверждение вÑтавки дорожки"
#. TRANSLATORS: %s will be replaced by a phrase describing the target of track.
#: editor/animation_track_editor.cpp
@@ -1612,7 +1528,7 @@ msgstr "Методы"
#: editor/animation_track_editor.cpp
msgid "Bezier"
-msgstr ""
+msgstr "Безье"
#: editor/animation_track_editor.cpp
#: modules/visual_script/visual_script_editor.cpp
@@ -1688,14 +1604,14 @@ msgstr "Значение шага анимации."
msgid "Seconds"
msgstr "Секунды"
-#: editor/animation_track_editor.cpp
+#: editor/animation_track_editor.cpp editor/import/resource_importer_scene.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp main/main.cpp
#: scene/resources/texture.cpp
msgid "FPS"
msgstr "FPS"
#: editor/animation_track_editor.cpp editor/editor_plugin_settings.cpp
-#: editor/editor_resource_picker.cpp
+#: editor/editor_resource_picker.cpp editor/import/resource_importer_wav.cpp
#: editor/plugins/polygon_2d_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
@@ -2311,10 +2227,9 @@ msgstr "Ведущий разработчик"
#. TRANSLATORS: This refers to a job title.
#: editor/editor_about.cpp
-#, fuzzy
msgctxt "Job Title"
msgid "Project Manager"
-msgstr "Менеджер проектов"
+msgstr "Менеджер проекта"
#: editor/editor_about.cpp
msgid "Developers"
@@ -2657,7 +2572,9 @@ msgid "Remove Autoload"
msgstr "Удалить автозагрузку"
#: editor/editor_autoload_settings.cpp editor/editor_plugin_settings.cpp
-#: modules/gdscript/gdscript.cpp scene/2d/polygon_2d.cpp scene/3d/area.cpp
+#: modules/gdscript/gdscript.cpp platform/android/export/export_plugin.cpp
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#: scene/2d/polygon_2d.cpp scene/3d/area.cpp scene/3d/physics_joint.cpp
#: scene/3d/reflection_probe.cpp scene/main/canvas_layer.cpp
#: scene/resources/material.cpp servers/visual_server.cpp
msgid "Enable"
@@ -2825,6 +2742,60 @@ msgstr ""
#: editor/editor_export.cpp platform/android/export/export_plugin.cpp
#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Custom Template"
+msgstr "ПользовательÑÐºÐ°Ñ Ñ‚ÐµÐ¼Ð°"
+
+#: editor/editor_export.cpp editor/project_export.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp
+msgid "Release"
+msgstr "Релиз"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Binary Format"
+msgstr "Формат цвета"
+
+#: editor/editor_export.cpp
+msgid "64 Bits"
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Embed PCK"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Texture Format"
+msgstr "Режим текÑтуры"
+
+#: editor/editor_export.cpp
+msgid "BPTC"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "S3TC"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "ETC"
+msgstr "TCP"
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "ETC2"
+msgstr ""
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "No BPTC Fallbacks"
+msgstr "ЗапаÑной вариант"
+
+#: editor/editor_export.cpp platform/android/export/export_plugin.cpp
+#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
msgid "Custom debug template not found."
msgstr "ПользовательÑкий отладочный шаблон не найден."
@@ -2845,7 +2816,7 @@ msgstr ""
#: editor/editor_export.cpp
msgid "Convert Text Resources To Binary On Export"
-msgstr ""
+msgstr "Конвертировать текÑтовые реÑурÑÑ‹ в двоичные при ÑкÑпорте"
#: editor/editor_feature_profile.cpp
msgid "3D Editor"
@@ -3007,6 +2978,7 @@ msgid "Make Current"
msgstr "Сделать текущим"
#: editor/editor_feature_profile.cpp editor/editor_node.cpp
+#: editor/import/resource_importer_scene.cpp
#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
msgid "Import"
msgstr "Импорт"
@@ -3053,9 +3025,8 @@ msgid "Manage Editor Feature Profiles"
msgstr "Управление профилÑми редактора"
#: editor/editor_feature_profile.cpp
-#, fuzzy
msgid "Default Feature Profile"
-msgstr "Профиль возможноÑтей Godot"
+msgstr "Профиль возможноÑтей по умолчанию"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
msgid "Select Current Folder"
@@ -3127,51 +3098,47 @@ msgid "Save a File"
msgstr "Сохранить файл"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-#, fuzzy
msgid "Access"
-msgstr "УÑпех!"
+msgstr "ДоÑтуп"
#: editor/editor_file_dialog.cpp editor/editor_settings.cpp
-#, fuzzy
msgid "Display Mode"
-msgstr "Режим воÑпроизведениÑ:"
+msgstr "Режим отображениÑ"
-#: editor/editor_file_dialog.cpp main/main.cpp modules/csg/csg_shape.cpp
-#: modules/visual_script/visual_script_nodes.cpp
+#: editor/editor_file_dialog.cpp
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+#: editor/import/resource_importer_wav.cpp main/main.cpp
+#: modules/csg/csg_shape.cpp modules/visual_script/visual_script_nodes.cpp
#: modules/visual_script/visual_script_yield_nodes.cpp scene/2d/light_2d.cpp
#: scene/2d/physics_body_2d.cpp scene/2d/tile_map.cpp
#: scene/3d/baked_lightmap.cpp scene/3d/light.cpp scene/3d/physics_body.cpp
#: scene/gui/control.cpp scene/gui/file_dialog.cpp
#: scene/resources/environment.cpp scene/resources/material.cpp
#: servers/audio/effects/audio_effect_distortion.cpp
-#, fuzzy
msgid "Mode"
-msgstr "Режим оÑмотра"
+msgstr "Режим"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-#, fuzzy
msgid "Current Dir"
-msgstr "Выбранный:"
+msgstr "Ð¢ÐµÐºÑƒÑ‰Ð°Ñ Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-#, fuzzy
msgid "Current File"
-msgstr "Текущий профиль:"
+msgstr "Текущий файл"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-#, fuzzy
msgid "Current Path"
-msgstr "Выбранный:"
+msgstr "Текущий путь"
#: editor/editor_file_dialog.cpp editor/editor_settings.cpp
#: scene/gui/file_dialog.cpp
-#, fuzzy
msgid "Show Hidden Files"
-msgstr "Переключение Ñкрытых файлов"
+msgstr "Показывать Ñкрытые файлы"
#: editor/editor_file_dialog.cpp
msgid "Disable Overwrite Warning"
-msgstr ""
+msgstr "Отключить предупреждение о перезапиÑи"
#: editor/editor_file_dialog.cpp
msgid "Go Back"
@@ -3274,9 +3241,11 @@ msgstr "(Ре)Импортировать"
#: editor/editor_file_system.cpp
msgid "Reimport Missing Imported Files"
-msgstr ""
+msgstr "Реимпорт недоÑтающих импортированных файлов"
-#: editor/editor_help.cpp
+#: editor/editor_help.cpp scene/2d/camera_2d.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/resources/dynamic_font.cpp
+#: scene/resources/style_box.cpp
msgid "Top"
msgstr "Верх"
@@ -3328,6 +3297,7 @@ msgid "Fonts"
msgstr "Шрифты"
#: editor/editor_help.cpp editor/plugins/theme_editor_plugin.cpp
+#: platform/iphone/export/export.cpp
msgid "Icons"
msgstr "Иконки"
@@ -3374,7 +3344,7 @@ msgstr "Справка"
#: editor/editor_help.cpp
msgid "Sort Functions Alphabetically"
-msgstr ""
+msgstr "Сортировать функции по алфавиту"
#: editor/editor_help_search.cpp editor/editor_node.cpp
#: editor/plugins/script_editor_plugin.cpp
@@ -3454,34 +3424,28 @@ msgid "Property:"
msgstr "Параметр:"
#: editor/editor_inspector.cpp editor/editor_spin_slider.cpp
-#, fuzzy
msgid "Label"
-msgstr "Значение"
+msgstr "ÐадпиÑÑŒ"
#: editor/editor_inspector.cpp editor/editor_spin_slider.cpp
-#, fuzzy
msgid "Read Only"
-msgstr "Только методы"
+msgstr "Только чтение"
#: editor/editor_inspector.cpp
-#, fuzzy
msgid "Checkable"
-msgstr "Отметить Ñлемент"
+msgstr "Отмечаемый"
#: editor/editor_inspector.cpp
-#, fuzzy
msgid "Checked"
-msgstr "Отмеченный Ñлемент"
+msgstr "Отмеченный"
#: editor/editor_inspector.cpp
-#, fuzzy
msgid "Draw Red"
-msgstr "Вызовов отриÑовки:"
+msgstr "РиÑовать краÑным"
#: editor/editor_inspector.cpp
-#, fuzzy
msgid "Keying"
-msgstr "ЗапуÑтить"
+msgstr "Ð’Ñтавка ключей"
#: editor/editor_inspector.cpp
msgid "Pin value"
@@ -3499,7 +3463,9 @@ msgid "Pin value [Disabled because '%s' is editor-only]"
msgstr ""
"Закрепить значение [Отключено, так как «%s» доÑтупно только Ð´Ð»Ñ Ñ€ÐµÐ´Ð°ÐºÑ‚Ð¾Ñ€Ð°]"
-#: editor/editor_inspector.cpp editor/scene_tree_dock.cpp
+#: editor/editor_inspector.cpp
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+#: editor/scene_tree_dock.cpp
#: modules/visual_script/visual_script_func_nodes.cpp
#: modules/visual_script/visual_script_nodes.cpp
#: modules/visual_script/visual_script_property_selector.cpp
@@ -3841,6 +3807,16 @@ msgid "Quick Open Script..."
msgstr "БыÑтро открыть Ñкрипт..."
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Save & Reload"
+msgstr "Сохранить и перезапуÑтить"
+
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Save changes to '%s' before reloading?"
+msgstr "Сохранить Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð² «%s» перед закрытием?"
+
+#: editor/editor_node.cpp
msgid "Save & Close"
msgstr "Сохранить и закрыть"
@@ -3958,6 +3934,11 @@ msgid "Open Project Manager?"
msgstr "Открыть менеджер проектов?"
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Save changes to the following scene(s) before reloading?"
+msgstr "Сохранить Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð² Ñледующей Ñцене(Ñ‹) перед выходом?"
+
+#: editor/editor_node.cpp
msgid "Save & Quit"
msgstr "Сохранить и выйти"
@@ -4142,108 +4123,98 @@ msgstr "Ещё %d файла(ов)"
msgid ""
"Unable to write to file '%s', file in use, locked or lacking permissions."
msgstr ""
+"Ðевозможно запиÑать в файл «%s», файл иÑпользуетÑÑ, заблокирован или "
+"отÑутÑтвуют разрешениÑ."
#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
msgid "Scene"
msgstr "Сцена"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Scene Naming"
-msgstr "Путь к Ñцене:"
+msgstr "Именование Ñцен"
#: editor/editor_node.cpp editor/editor_settings.cpp editor/scene_tree_dock.cpp
#: servers/arvr/arvr_interface.cpp
-#, fuzzy
msgid "Interface"
-msgstr "ПользовательÑкий интерфейÑ"
+msgstr "ИнтерфейÑ"
#: editor/editor_node.cpp editor/editor_settings.cpp
-#, fuzzy
msgid "Scene Tabs"
-msgstr "Переключить вкладку Ñцены"
+msgstr "Вкладки Ñцен"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Always Show Close Button"
-msgstr "Ð’Ñегда отображать Ñетку"
+msgstr "Ð’Ñегда показывать кнопку закрытиÑ"
#: editor/editor_node.cpp editor/editor_settings.cpp
msgid "Resize If Many Tabs"
-msgstr ""
+msgstr "ИзменÑть размер, еÑли много вкладок"
#: editor/editor_node.cpp editor/editor_settings.cpp
msgid "Minimum Width"
-msgstr ""
+msgstr "ÐœÐ¸Ð½Ð¸Ð¼Ð°Ð»ÑŒÐ½Ð°Ñ ÑˆÐ¸Ñ€Ð¸Ð½Ð°"
#: editor/editor_node.cpp editor/editor_settings.cpp
msgid "Output"
msgstr "Вывод"
#: editor/editor_node.cpp editor/editor_settings.cpp
-#, fuzzy
msgid "Always Clear Output On Play"
-msgstr "ОчиÑтить вывод"
+msgstr "Ð’Ñегда очищать вывод при запуÑке"
#: editor/editor_node.cpp editor/editor_settings.cpp
msgid "Always Open Output On Play"
-msgstr ""
+msgstr "Ð’Ñегда открывать вывод при запуÑке"
#: editor/editor_node.cpp editor/editor_settings.cpp
msgid "Always Close Output On Stop"
-msgstr ""
+msgstr "Ð’Ñегда закрывать вывод при оÑтановке"
#: editor/editor_node.cpp editor/editor_settings.cpp
-#, fuzzy
msgid "Auto Save"
-msgstr "ÐвтоматичеÑки"
+msgstr "ÐвтоÑохранение"
#: editor/editor_node.cpp editor/editor_settings.cpp
-#, fuzzy
msgid "Save Before Running"
-msgstr "Сохранение Ñцены перед запуÑком..."
+msgstr "СохранÑть перед запуÑком"
#: editor/editor_node.cpp
msgid "Save On Focus Loss"
-msgstr ""
+msgstr "СохранÑть при потери фокуÑа"
#: editor/editor_node.cpp editor/editor_settings.cpp
-#, fuzzy
msgid "Save Each Scene On Quit"
-msgstr "Сохранить ветку как Ñцену"
+msgstr "СохранÑть каждую Ñцену при выходе"
#: editor/editor_node.cpp editor/editor_settings.cpp
-#, fuzzy
msgid "Quit Confirmation"
-msgstr "ИнформациÑ"
+msgstr "Подтверждение выхода"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Show Update Spinner"
-msgstr "Скрыть индикатор обновлений"
+msgstr "Показывать индикатор обновлениÑ"
#: editor/editor_node.cpp
msgid "Update Continuously"
msgstr "Ðепрерывное обновление"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Update Vital Only"
-msgstr "ОбновлÑть при важных изменениÑÑ…"
+msgstr "ОбновлÑть только важное"
#: editor/editor_node.cpp
#, fuzzy
-msgid "Translate Properties"
-msgstr "Ð’Ñтавить ÑвойÑтва"
+msgid "Localize Settings"
+msgstr "ЛокализациÑ"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Restore Scenes On Load"
-msgstr "Получить узел Ñцены"
+msgstr "ВоÑÑтанавливать Ñцены при загрузке"
#: editor/editor_node.cpp editor/editor_settings.cpp
msgid "Show Thumbnail On Hover"
-msgstr ""
+msgstr "Показывать миниатюру при наведении"
#: editor/editor_node.cpp editor/editor_settings.cpp
msgid "Inspector"
@@ -4251,43 +4222,40 @@ msgstr "ИнÑпектор"
#: editor/editor_node.cpp
#, fuzzy
-msgid "Capitalize Properties"
-msgstr "Ð’Ñтавить ÑвойÑтва"
+msgid "Default Property Name Style"
+msgstr "Путь проекта по умолчанию"
#: editor/editor_node.cpp
msgid "Default Float Step"
-msgstr ""
+msgstr "Шаг по умолчанию плавающих чиÑел"
#: editor/editor_node.cpp scene/gui/tree.cpp
-#, fuzzy
msgid "Disable Folding"
-msgstr "Ð—Ð°Ð±Ð»Ð¾ÐºÐ¸Ñ€Ð¾Ð²Ð°Ð½Ð½Ð°Ñ ÐºÐ½Ð¾Ð¿ÐºÐ°"
+msgstr "Отключить Ñворачивание"
#: editor/editor_node.cpp
msgid "Auto Unfold Foreign Scenes"
-msgstr ""
+msgstr "ÐвтоматичеÑки разворачивать чужие Ñцены"
#: editor/editor_node.cpp
msgid "Horizontal Vector2 Editing"
-msgstr ""
+msgstr "Горизонтальное редактирование Vector2"
#: editor/editor_node.cpp
msgid "Horizontal Vector Types Editing"
-msgstr ""
+msgstr "Горизонтальных редактирование векторных типов"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Open Resources In Current Inspector"
-msgstr "Открыть в инÑпекторе"
+msgstr "Открывать реÑурÑÑ‹ в текущем инÑпекторе"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Resources To Open In New Inspector"
-msgstr "Открыть в инÑпекторе"
+msgstr "РеÑурÑÑ‹ Ð´Ð»Ñ Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚Ð¸Ñ Ð² новом инÑпекторе"
#: editor/editor_node.cpp
msgid "Default Color Picker Mode"
-msgstr ""
+msgstr "Режим выбора цвета по умолчанию"
#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
msgid "Username"
@@ -4858,7 +4826,9 @@ msgstr "УÑтановленные плагины:"
msgid "Update"
msgstr "Обновление"
-#: editor/editor_plugin_settings.cpp
+#: editor/editor_plugin_settings.cpp platform/android/export/export_plugin.cpp
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp
msgid "Version"
msgstr "ВерÑиÑ"
@@ -4936,12 +4906,11 @@ msgstr "Отладчик"
#: editor/editor_profiler.cpp
msgid "Profiler Frame History Size"
-msgstr ""
+msgstr "Размер иÑтории кадров профайлера"
#: editor/editor_profiler.cpp
-#, fuzzy
msgid "Profiler Frame Max Functions"
-msgstr "Переименовать функцию"
+msgstr "МакÑимум функций в кадре профайлера"
#: editor/editor_properties.cpp
msgid "Edit Text:"
@@ -5074,15 +5043,13 @@ msgid "Base Type"
msgstr "Базовый тип"
#: editor/editor_resource_picker.cpp
-#, fuzzy
msgid "Edited Resource"
-msgstr "Добавить реÑурÑ"
+msgstr "Редактируемый реÑурÑ"
#: editor/editor_resource_picker.cpp scene/gui/line_edit.cpp
#: scene/gui/slider.cpp scene/gui/spin_box.cpp
-#, fuzzy
msgid "Editable"
-msgstr "Редактируемый Ñлемент"
+msgstr "Редактируемый"
#: editor/editor_resource_picker.cpp editor/property_editor.cpp
msgid "New Script"
@@ -5093,9 +5060,8 @@ msgid "Extend Script"
msgstr "РаÑширить Ñкрипт"
#: editor/editor_resource_picker.cpp
-#, fuzzy
msgid "Script Owner"
-msgstr "Ð˜Ð¼Ñ Ñкрипта:"
+msgstr "Владелец Ñкрипта"
#: editor/editor_run_native.cpp
msgid ""
@@ -5132,73 +5098,68 @@ msgid "Did you forget the '_run' method?"
msgstr "Быть может вы забыли метод _run()?"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Editor Language"
-msgstr "Макет редактора"
+msgstr "Язык редактора"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Display Scale"
-msgstr "Отображать вÑÑ‘"
+msgstr "МаÑштаб отображениÑ"
#: editor/editor_settings.cpp
msgid "Custom Display Scale"
-msgstr ""
+msgstr "ПользовательÑкий маÑштаб отображениÑ"
#: editor/editor_settings.cpp
msgid "Main Font Size"
-msgstr ""
+msgstr "Размер оÑновного шрифта"
#: editor/editor_settings.cpp
msgid "Code Font Size"
-msgstr ""
+msgstr "Размер шрифта кода"
#: editor/editor_settings.cpp
msgid "Font Antialiased"
-msgstr ""
+msgstr "Сглаживание шрифтов"
#: editor/editor_settings.cpp
msgid "Font Hinting"
-msgstr ""
+msgstr "Хинтинг шрифтов"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Main Font"
-msgstr "Ð“Ð»Ð°Ð²Ð½Ð°Ñ Ñцена"
+msgstr "ОÑновной шрифт"
#: editor/editor_settings.cpp
msgid "Main Font Bold"
-msgstr ""
+msgstr "ОÑновной жирный шрифт"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Code Font"
-msgstr "Добавить точку узла"
+msgstr "Шрифт кода"
#: editor/editor_settings.cpp
msgid "Dim Editor On Dialog Popup"
-msgstr ""
+msgstr "ЗатемнÑть редактор при вÑплывающих окнах"
#: editor/editor_settings.cpp main/main.cpp
msgid "Low Processor Mode Sleep (µsec)"
-msgstr ""
+msgstr "Задержка в режиме низкой нагрузки процеÑÑора (мкÑек)"
#: editor/editor_settings.cpp
msgid "Unfocused Low Processor Mode Sleep (µsec)"
-msgstr ""
+msgstr "Задержка в режиме низкой нагрузки процеÑÑора без фокуÑа (мкÑек)"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Separate Distraction Mode"
-msgstr "Режим без отвлечениÑ"
+msgstr "Режим раздельного отвлечениÑ"
#: editor/editor_settings.cpp
msgid "Automatically Open Screenshots"
-msgstr ""
+msgstr "ÐвтоматичеÑки открывать Ñкриншоты"
#: editor/editor_settings.cpp
msgid "Max Array Dictionary Items Per Page"
-msgstr ""
+msgstr "МакÑимальное количеÑтво Ñлементов ÑÐ»Ð¾Ð²Ð°Ñ€Ñ Ð¼Ð°ÑÑива на Ñтранице"
#: editor/editor_settings.cpp editor/plugins/script_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp editor/plugins/text_editor.cpp
@@ -5213,169 +5174,147 @@ msgstr "ПреÑет"
#: editor/editor_settings.cpp
msgid "Icon And Font Color"
-msgstr ""
+msgstr "Цвет иконки и шрифта"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Base Color"
-msgstr "Цвета"
+msgstr "Базовый цвет"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Accent Color"
-msgstr "Выбрать цвет"
+msgstr "Ðкцентный цвет"
#: editor/editor_settings.cpp scene/resources/environment.cpp
msgid "Contrast"
-msgstr ""
+msgstr "КонтраÑÑ‚"
#: editor/editor_settings.cpp
msgid "Relationship Line Opacity"
-msgstr ""
+msgstr "ÐепрозрачноÑть линий отношений"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Highlight Tabs"
-msgstr "Сохранение карт оÑвещениÑ"
+msgstr "ВыделÑть вкладки"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Border Size"
-msgstr "Граничные пикÑели"
+msgstr "Размер границы"
#: editor/editor_settings.cpp
msgid "Use Graph Node Headers"
-msgstr ""
+msgstr "ИÑпользовать заголовки узлов графа"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Additional Spacing"
-msgstr "Зацикливание анимации"
+msgstr "Дополнительное раÑÑтоÑние"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Custom Theme"
-msgstr "Тема редактора"
+msgstr "ПользовательÑÐºÐ°Ñ Ñ‚ÐµÐ¼Ð°"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Show Script Button"
-msgstr "ÐŸÑ€Ð°Ð²Ð°Ñ ÐºÐ½Ð¾Ð¿ÐºÐ° колеÑа"
+msgstr "Показать кнопку Ñкрипта"
#: editor/editor_settings.cpp editor/fileserver/editor_file_server.cpp
-#, fuzzy
msgid "Filesystem"
msgstr "Ð¤Ð°Ð¹Ð»Ð¾Ð²Ð°Ñ ÑиÑтема"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Directories"
-msgstr "ÐаправлениÑ"
+msgstr "Директории"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Autoscan Project Path"
-msgstr "Путь к проекту:"
+msgstr "Путь автоÑÐºÐ°Ð½Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¿Ñ€Ð¾ÐµÐºÑ‚Ð¾Ð²"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Default Project Path"
-msgstr "Путь к проекту:"
+msgstr "Путь проекта по умолчанию"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "On Save"
-msgstr "Сохранить"
+msgstr "При Ñохранении"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Compress Binary Resources"
-msgstr "Копировать параметры"
+msgstr "Сжимать двоичные реÑурÑÑ‹"
#: editor/editor_settings.cpp
msgid "Safe Save On Backup Then Rename"
msgstr ""
+"БезопаÑное Ñохранение при резервном копировании Ñ Ð¿Ð¾Ñледующим переименованием"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "File Dialog"
-msgstr "XForm диалоговое окно"
+msgstr "Файловое диалоговое окно"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Thumbnail Size"
-msgstr "Миниатюра..."
+msgstr "Размер миниатюр"
#: editor/editor_settings.cpp
msgid "Docks"
-msgstr ""
+msgstr "Панели"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Scene Tree"
-msgstr "Получить дерево Ñцены"
+msgstr "Дерево Ñцены"
#: editor/editor_settings.cpp
msgid "Start Create Dialog Fully Expanded"
-msgstr ""
+msgstr "Ðачальный диалог ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð¿Ð¾Ð»Ð½Ð¾Ñтью развёрнут"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Always Show Folders"
-msgstr "Ð’Ñегда отображать Ñетку"
+msgstr "Ð’Ñегда показывать папки"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Property Editor"
-msgstr "Редактор групп"
+msgstr "Редактор ÑвойÑтв"
#: editor/editor_settings.cpp
msgid "Auto Refresh Interval"
-msgstr ""
+msgstr "Интервал автообновлениÑ"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Subresource Hue Tint"
-msgstr "Вложенные реÑурÑÑ‹"
+msgstr "МенÑть оттенок подреÑурÑов"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Color Theme"
-msgstr "Тема редактора"
+msgstr "Ð¦Ð²ÐµÑ‚Ð¾Ð²Ð°Ñ Ñ‚ÐµÐ¼Ð°"
#: editor/editor_settings.cpp editor/plugins/script_text_editor.cpp
#: editor/plugins/text_editor.cpp
msgid "Line Spacing"
-msgstr ""
+msgstr "МежÑтрочный интервал"
#: editor/editor_settings.cpp editor/plugins/script_text_editor.cpp
#: modules/gdscript/editor/gdscript_highlighter.cpp
-#, fuzzy
msgid "Highlighting"
-msgstr "ПрÑмое оÑвещение"
+msgstr "ПодÑветка"
#: editor/editor_settings.cpp scene/gui/text_edit.cpp
-#, fuzzy
msgid "Syntax Highlighting"
msgstr "ПодÑветка ÑинтакÑиÑа"
#: editor/editor_settings.cpp scene/gui/text_edit.cpp
msgid "Highlight All Occurrences"
-msgstr ""
+msgstr "ПодÑвечивать вÑе вхождениÑ"
#: editor/editor_settings.cpp scene/gui/text_edit.cpp
msgid "Highlight Current Line"
-msgstr ""
+msgstr "ПодÑвечивать текущую Ñтроку"
#: editor/editor_settings.cpp editor/plugins/script_text_editor.cpp
msgid "Highlight Type Safe Lines"
-msgstr ""
+msgstr "ПодÑвечивать типобезопаÑные Ñтроки"
#: editor/editor_settings.cpp modules/gdscript/gdscript_editor.cpp
#: modules/mono/csharp_script.cpp
-#, fuzzy
msgid "Indent"
-msgstr "Убрать отÑтуп Ñлева"
+msgstr "ОтÑтуп"
#: editor/editor_settings.cpp editor/script_editor_debugger.cpp
#: modules/gdscript/gdscript_editor.cpp modules/gltf/gltf_accessor.cpp
@@ -5390,19 +5329,16 @@ msgid "Auto Indent"
msgstr "ÐвтоотÑтуп"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Convert Indent On Save"
-msgstr "Преобразовать отÑтуп в пробелы"
+msgstr "Преобразовывать отÑтупы при Ñохранении"
#: editor/editor_settings.cpp scene/gui/text_edit.cpp
-#, fuzzy
msgid "Draw Tabs"
-msgstr "Вызовов отриÑовки:"
+msgstr "РиÑовать табы"
#: editor/editor_settings.cpp scene/gui/text_edit.cpp
-#, fuzzy
msgid "Draw Spaces"
-msgstr "Вызовов отриÑовки:"
+msgstr "РиÑовать пробелы"
#: editor/editor_settings.cpp editor/plugins/spatial_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/main/scene_tree.cpp
@@ -5411,180 +5347,168 @@ msgstr "ÐавигациÑ"
#: editor/editor_settings.cpp scene/gui/text_edit.cpp
msgid "Smooth Scrolling"
-msgstr ""
+msgstr "ÐŸÐ»Ð°Ð²Ð½Ð°Ñ Ð¿Ñ€Ð¾ÐºÑ€ÑƒÑ‚ÐºÐ°"
#: editor/editor_settings.cpp scene/gui/text_edit.cpp
msgid "V Scroll Speed"
-msgstr ""
+msgstr "СкороÑть вертикальной прокрутки"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Show Minimap"
-msgstr "Отображать центр"
+msgstr "Показывать миникарту"
#: editor/editor_settings.cpp
msgid "Minimap Width"
-msgstr ""
+msgstr "Ширина миникарты"
#: editor/editor_settings.cpp
msgid "Mouse Extra Buttons Navigate History"
-msgstr ""
+msgstr "ÐÐ°Ð²Ð¸Ð³Ð°Ñ†Ð¸Ñ Ð¿Ð¾ иÑтории дополнительными кнопками мыши"
#: editor/editor_settings.cpp
msgid "Appearance"
-msgstr ""
+msgstr "Внешний вид"
#: editor/editor_settings.cpp scene/gui/text_edit.cpp
-#, fuzzy
msgid "Show Line Numbers"
-msgstr "Ðомер Ñтроки:"
+msgstr "Показывать номера Ñтрок"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Line Numbers Zero Padded"
-msgstr "Ðомер Ñтроки:"
+msgstr "Ðомера Ñтрок Ñ Ð½ÑƒÐ»ÐµÐ²Ñ‹Ð¼Ð¸ заполнителÑми"
#: editor/editor_settings.cpp
msgid "Show Bookmark Gutter"
-msgstr ""
+msgstr "Показывать полоÑу закладок"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Show Breakpoint Gutter"
-msgstr "ПропуÑтить точки оÑтанова"
+msgstr "Показывать полоÑу точек оÑтанова"
#: editor/editor_settings.cpp
msgid "Show Info Gutter"
-msgstr ""
+msgstr "Показывать полоÑу информации"
#: editor/editor_settings.cpp
msgid "Code Folding"
-msgstr ""
+msgstr "Сворачивание кода"
#: editor/editor_settings.cpp
msgid "Word Wrap"
-msgstr ""
+msgstr "ÐŸÐµÑ€ÐµÐ½Ð¾Ñ Ð¿Ð¾ Ñловам"
#: editor/editor_settings.cpp
msgid "Show Line Length Guidelines"
-msgstr ""
+msgstr "Показывать рекомендации по длине Ñтрок"
#: editor/editor_settings.cpp
msgid "Line Length Guideline Soft Column"
-msgstr ""
+msgstr "Ширина мÑгкого предела длины Ñтроки"
#: editor/editor_settings.cpp
msgid "Line Length Guideline Hard Column"
-msgstr ""
+msgstr "Ширина жёÑткого предела длины Ñтроки"
#: editor/editor_settings.cpp editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "Script List"
-msgstr "Редактор Ñкриптов"
+msgstr "СпиÑок Ñкриптов"
#: editor/editor_settings.cpp
msgid "Show Members Overview"
-msgstr ""
+msgstr "Показывать обзор членов клаÑÑа"
#: editor/editor_settings.cpp editor/plugins/script_editor_plugin.cpp
#: editor/plugins/shader_editor_plugin.cpp
-#, fuzzy
msgid "Files"
-msgstr "Файл"
+msgstr "Файлы"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Trim Trailing Whitespace On Save"
-msgstr "Обрезать замыкающие пробелы"
+msgstr "Обрезать пробелы в конце Ñтрок при Ñохранении"
#: editor/editor_settings.cpp
msgid "Autosave Interval Secs"
-msgstr ""
+msgstr "Интервал автоÑÐ¾Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ Ð² Ñекундах"
#: editor/editor_settings.cpp editor/plugins/script_editor_plugin.cpp
msgid "Restore Scripts On Load"
-msgstr ""
+msgstr "ВоÑÑтанавливать Ñкрипты при загрузке"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Create Signal Callbacks"
-msgstr "Принудительно уÑтановить резервные шейдеры"
+msgstr "Создавать обратные вызовы Ñигналов"
#: editor/editor_settings.cpp
msgid "Sort Members Outline Alphabetically"
-msgstr ""
+msgstr "Сортировать ÑпиÑок членов клаÑÑа по алфавиту"
#: editor/editor_settings.cpp scene/gui/line_edit.cpp
msgid "Cursor"
-msgstr ""
+msgstr "КурÑор"
#: editor/editor_settings.cpp
msgid "Scroll Past End Of File"
-msgstr ""
+msgstr "Прокрутить до конца файла"
#: editor/editor_settings.cpp
msgid "Block Caret"
-msgstr ""
+msgstr "Блок"
#: editor/editor_settings.cpp scene/gui/line_edit.cpp
msgid "Caret Blink"
-msgstr ""
+msgstr "Мигающий курÑор"
#: editor/editor_settings.cpp scene/gui/line_edit.cpp
msgid "Caret Blink Speed"
-msgstr ""
+msgstr "СкороÑть Ð¼Ð¸Ð³Ð°Ð½Ð¸Ñ ÐºÑƒÑ€Ñора"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Right Click Moves Caret"
-msgstr "ПКМ: Добавить точку"
+msgstr "Щелчок правой кнопкой мыши перемещает курÑор"
#: editor/editor_settings.cpp
msgid "Idle Parse Delay"
-msgstr ""
+msgstr "Задержка перед анализом ÑинтакÑиÑа"
#: editor/editor_settings.cpp
msgid "Auto Brace Complete"
-msgstr ""
+msgstr "Ðвтозакрытие Ñкобок"
#: editor/editor_settings.cpp
msgid "Code Complete Delay"
-msgstr ""
+msgstr "Задержка Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð¸Ñ ÐºÐ¾Ð´Ð°"
#: editor/editor_settings.cpp
msgid "Put Callhint Tooltip Below Current Line"
-msgstr ""
+msgstr "Помещать вÑплывающую подÑказку вызова ниже текущей Ñтроки"
#: editor/editor_settings.cpp
msgid "Callhint Tooltip Offset"
-msgstr ""
+msgstr "Смещение вÑплывающей подÑказки вызова"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Complete File Paths"
-msgstr "Копировать путь узла"
+msgstr "Завершать пути файлов"
#: editor/editor_settings.cpp modules/gdscript/gdscript_editor.cpp
-#, fuzzy
msgid "Add Type Hints"
-msgstr "Добавить тип"
+msgstr "ДобавлÑть подÑказки типов"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Show Help Index"
-msgstr "Показывать помощников"
+msgstr "Показывать Ñправочный указатель"
#: editor/editor_settings.cpp
msgid "Help Font Size"
-msgstr ""
+msgstr "Размер шрифта Ñправки"
#: editor/editor_settings.cpp
msgid "Help Source Font Size"
-msgstr ""
+msgstr "Размер шрифта иÑходного кода в Ñправке"
#: editor/editor_settings.cpp
msgid "Help Title Font Size"
-msgstr ""
+msgstr "Размер шрифта заголовков Ñправки"
#: editor/editor_settings.cpp editor/plugins/mesh_library_editor_plugin.cpp
#: modules/gridmap/grid_map_editor_plugin.cpp
@@ -5592,400 +5516,367 @@ msgid "Grid Map"
msgstr "Ð¡ÐµÑ‚Ð¾Ñ‡Ð½Ð°Ñ ÐºÐ°Ñ€Ñ‚Ð°"
#: editor/editor_settings.cpp modules/gridmap/grid_map_editor_plugin.cpp
-#, fuzzy
msgid "Pick Distance"
-msgstr "РаÑÑтоÑние выбора:"
+msgstr "Выбрать раÑÑтоÑние"
#: editor/editor_settings.cpp
msgid "Primary Grid Color"
-msgstr ""
+msgstr "ОÑновной цвет Ñетки"
#: editor/editor_settings.cpp
msgid "Secondary Grid Color"
-msgstr ""
+msgstr "Вторичный цвет Ñетки"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Selection Box Color"
-msgstr "Только выделенное"
+msgstr "Цвет полоÑÑ‹ выделениÑ"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Primary Grid Steps"
-msgstr "Шаг Ñетки:"
+msgstr "ОÑновные шаги Ñетки"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Grid Size"
-msgstr "Шаг Ñетки:"
+msgstr "Размер Ñетки"
#: editor/editor_settings.cpp
msgid "Grid Division Level Max"
-msgstr ""
+msgstr "МакÑимальный уровень Ð´ÐµÐ»ÐµÐ½Ð¸Ñ Ñетки"
#: editor/editor_settings.cpp
msgid "Grid Division Level Min"
-msgstr ""
+msgstr "Минимальный уровень Ð´ÐµÐ»ÐµÐ½Ð¸Ñ Ñети"
#: editor/editor_settings.cpp
msgid "Grid Division Level Bias"
-msgstr ""
+msgstr "Смещение ÑƒÑ€Ð¾Ð²Ð½Ñ Ð´ÐµÐ»ÐµÐ½Ð¸Ñ Ñетки"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Grid XZ Plane"
-msgstr "РиÑование Ñетки"
+msgstr "ПлоÑкоÑть XZ Ñетки"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Grid XY Plane"
-msgstr "РиÑование Ñетки"
+msgstr "ПлоÑкоÑть XY Ñетки"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Grid YZ Plane"
-msgstr "РиÑование Ñетки"
+msgstr "ПлоÑкоÑть YZ Ñетки"
#: editor/editor_settings.cpp editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Default FOV"
-msgstr "По умолчанию"
+msgstr "Поле Ð·Ñ€ÐµÐ½Ð¸Ñ Ð¿Ð¾ умолчанию"
#: editor/editor_settings.cpp editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Default Z Near"
-msgstr "Тема по умолчанию"
+msgstr "Z Near по умолчанию"
#: editor/editor_settings.cpp editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Default Z Far"
-msgstr "По умолчанию"
+msgstr "Z Far по умолчанию"
#: editor/editor_settings.cpp
msgid "Lightmap Baking Number Of CPU Threads"
msgstr ""
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Navigation Scheme"
-msgstr "Режим навигации"
+msgstr "Схема навигации"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Invert Y Axis"
-msgstr "Редактирование оÑи Y"
+msgstr "Инвертировать оÑÑŒ Y"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Invert X Axis"
-msgstr "Редактирование оÑи X"
+msgstr "Инвертировать оÑÑŒ X"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Zoom Style"
-msgstr "Отдалить"
+msgstr "Стиль маÑштабированиÑ"
#: editor/editor_settings.cpp
msgid "Emulate Numpad"
-msgstr ""
+msgstr "Эмулировать цифровую клавиатуру"
#: editor/editor_settings.cpp
msgid "Emulate 3 Button Mouse"
-msgstr ""
+msgstr "Эмулировать 3-кнопочную мышь"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Orbit Modifier"
-msgstr "Сортировать по первому изменению"
+msgstr "Модификатор орбиты"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Pan Modifier"
-msgstr "Режим оÑмотра"
+msgstr "Модификатор панорамированиÑ"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Zoom Modifier"
-msgstr "Изменён"
+msgstr "Модификатор маÑштабированиÑ"
#: editor/editor_settings.cpp editor/plugins/spatial_editor_plugin.cpp
msgid "Warped Mouse Panning"
-msgstr ""
+msgstr "Зацикленное панорамирование мышью"
#: editor/editor_settings.cpp
#, fuzzy
msgid "Navigation Feel"
-msgstr "Режим навигации"
+msgstr "ЧувÑтвительноÑть навигации"
#: editor/editor_settings.cpp
msgid "Orbit Sensitivity"
-msgstr ""
+msgstr "ÐžÑ€Ð±Ð¸Ñ‚Ð°Ð»ÑŒÐ½Ð°Ñ Ñ‡ÑƒÐ²ÑтвительноÑть"
#: editor/editor_settings.cpp
msgid "Orbit Inertia"
-msgstr ""
+msgstr "ÐžÑ€Ð±Ð¸Ñ‚Ð°Ð»ÑŒÐ½Ð°Ñ Ð¸Ð½ÐµÑ€Ñ†Ð¸Ñ"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Translation Inertia"
-msgstr "Переводы"
+msgstr "Ð˜Ð½ÐµÑ€Ñ†Ð¸Ñ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Zoom Inertia"
-msgstr "Приблизить"
+msgstr "Ð˜Ð½ÐµÑ€Ñ†Ð¸Ñ Ð¼Ð°ÑштабированиÑ"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Freelook"
-msgstr "Свободный вид, вверх"
+msgstr "Свободный обзор"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Freelook Navigation Scheme"
-msgstr "Создать полиÑетку навигации"
+msgstr "Схема навигации Ñвободного обзора"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Freelook Sensitivity"
-msgstr "Свободный вид, лево"
+msgstr "ЧувÑтвительноÑть Ñвободного обзора"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Freelook Inertia"
-msgstr "Свободный вид, лево"
+msgstr "Ð˜Ð½ÐµÑ€Ñ†Ð¸Ñ Ñвободного обзора"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Freelook Base Speed"
-msgstr "Модификатор ÑкороÑти Ñвободного вида"
+msgstr "Ð‘Ð°Ð·Ð¾Ð²Ð°Ñ ÑкороÑть Ñвободного обзора"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Freelook Activation Modifier"
-msgstr "Модификатор Ð·Ð°Ð¼ÐµÐ´Ð»ÐµÐ½Ð¸Ñ Ñвободного вида"
+msgstr "Модификатор активации Ñвободного обзора"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Freelook Speed Zoom Link"
-msgstr "Модификатор ÑкороÑти Ñвободного вида"
+msgstr "СвÑзь маÑÑˆÑ‚Ð°Ð±Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ ÑкороÑти Ñвободного обзора"
#: editor/editor_settings.cpp editor/plugins/tile_map_editor_plugin.cpp
-#, fuzzy
msgid "Grid Color"
-msgstr "Выбрать цвет"
+msgstr "Цвет Ñетки"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Guides Color"
-msgstr "Выбрать цвет"
+msgstr "Цвет направлÑющих"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Smart Snapping Line Color"
-msgstr "Ð˜Ð½Ñ‚ÐµÐ»Ð»ÐµÐºÑ‚ÑƒÐ°Ð»ÑŒÐ½Ð°Ñ Ð¿Ñ€Ð¸Ð²Ñзка"
+msgstr "Цвет линии интеллектуальной привÑзки"
#: editor/editor_settings.cpp
msgid "Bone Width"
-msgstr ""
+msgstr "Ширина коÑти"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Bone Color 1"
-msgstr "Переименовать цвет"
+msgstr "Цвет коÑти 1"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Bone Color 2"
-msgstr "Переименовать цвет"
+msgstr "Цвет коÑти 2"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Bone Selected Color"
-msgstr "ÐаÑтроить выбранный профиль:"
+msgstr "Цвет выбранной коÑти"
#: editor/editor_settings.cpp
msgid "Bone IK Color"
-msgstr ""
+msgstr "Цвет коÑти IK"
#: editor/editor_settings.cpp
msgid "Bone Outline Color"
-msgstr ""
+msgstr "Цвет контура коÑти"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Bone Outline Size"
-msgstr "Размер обводки:"
+msgstr "Размер контура коÑти"
#: editor/editor_settings.cpp
msgid "Viewport Border Color"
-msgstr ""
+msgstr "Цвет границы Viewport"
#: editor/editor_settings.cpp
msgid "Constrain Editor View"
-msgstr ""
+msgstr "Ограничить вид редактора"
#: editor/editor_settings.cpp
msgid "Simple Panning"
-msgstr ""
+msgstr "ПроÑтое панорамирование"
#: editor/editor_settings.cpp
msgid "Scroll To Pan"
-msgstr ""
+msgstr "Прокрутка Ð´Ð»Ñ Ð¿Ð°Ð½Ð¾Ñ€Ð°Ð¼Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Pan Speed"
-msgstr "СкороÑть:"
+msgstr "СкороÑть панорамированиÑ"
#: editor/editor_settings.cpp editor/plugins/polygon_2d_editor_plugin.cpp
-#, fuzzy
msgid "Poly Editor"
-msgstr "Polygon 2D UV редактор"
+msgstr "Редактор полигонов"
#: editor/editor_settings.cpp
msgid "Point Grab Radius"
-msgstr ""
+msgstr "Ð Ð°Ð´Ð¸ÑƒÑ Ð·Ð°Ñ…Ð²Ð°Ñ‚Ð° точки"
#: editor/editor_settings.cpp editor/plugins/polygon_2d_editor_plugin.cpp
-#, fuzzy
msgid "Show Previous Outline"
-msgstr "ÐŸÑ€ÐµÐ´Ñ‹Ð´ÑƒÑ‰Ð°Ñ Ð¿Ð»Ð¾ÑкоÑть"
+msgstr "Показывать предыдущий контур"
#: editor/editor_settings.cpp editor/scene_tree_dock.cpp
-#, fuzzy
msgid "Autorename Animation Tracks"
-msgstr "Переименовать анимацию"
+msgstr "Ðвтопереименование дорожек анимации"
#: editor/editor_settings.cpp
msgid "Default Create Bezier Tracks"
-msgstr ""
+msgstr "По умолчанию Ñоздавать дорожки Безье"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Default Create Reset Tracks"
-msgstr "Создать дорожку(и) СБРОСÐ"
+msgstr "Создавать дорожки ÑброÑа по умолчанию"
#: editor/editor_settings.cpp
msgid "Onion Layers Past Color"
-msgstr ""
+msgstr "Луковые Ñлои Прошлый цвет"
#: editor/editor_settings.cpp
msgid "Onion Layers Future Color"
-msgstr ""
+msgstr "Луковые Ñлои Будущий цвет"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Visual Editors"
-msgstr "Редактор групп"
+msgstr "Визуальные редакторы"
#: editor/editor_settings.cpp
msgid "Minimap Opacity"
-msgstr ""
+msgstr "ÐепрозрачноÑть миникарты"
#: editor/editor_settings.cpp
msgid "Window Placement"
-msgstr ""
+msgstr "Размещение окон"
#: editor/editor_settings.cpp scene/2d/back_buffer_copy.cpp scene/2d/sprite.cpp
#: scene/2d/visibility_notifier_2d.cpp scene/3d/sprite_3d.cpp
#: scene/gui/control.cpp
-#, fuzzy
msgid "Rect"
-msgstr "Полный прÑмоугольник"
+msgstr "ПрÑмоугольник"
#: editor/editor_settings.cpp
#, fuzzy
msgid "Rect Custom Position"
msgstr "УÑтановить позицию выхода кривой"
-#: editor/editor_settings.cpp
+#: editor/editor_settings.cpp platform/android/export/export_plugin.cpp
msgid "Screen"
-msgstr ""
+msgstr "Экран"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Font Size"
-msgstr "Вид Ñпереди"
+msgstr "Размер шрифта"
#: editor/editor_settings.cpp
#: modules/gdscript/language_server/gdscript_language_server.cpp
-#, fuzzy
msgid "Remote Host"
-msgstr "Удаленный "
+msgstr "Удалённый хоÑÑ‚"
#: editor/editor_settings.cpp
#: modules/gdscript/language_server/gdscript_language_server.cpp
-#, fuzzy
msgid "Remote Port"
-msgstr "Удалить точку"
+msgstr "Удалённый порт"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Editor SSL Certificates"
-msgstr "ÐаÑтройки редактора"
+msgstr "Редактор SSL-Ñертификатов"
+
+#: editor/editor_settings.cpp
+msgid "HTTP Proxy"
+msgstr "HTTP-прокÑи"
+
+#: editor/editor_settings.cpp
+msgid "Host"
+msgstr "ХоÑÑ‚"
+
+#: editor/editor_settings.cpp editor/fileserver/editor_file_server.cpp
+#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp
+msgid "Port"
+msgstr "Порт"
#: editor/editor_settings.cpp
msgid "Project Manager"
msgstr "Менеджер проектов"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Sorting Order"
-msgstr "в порÑдке:"
+msgstr "ПорÑдок Ñортировки"
#: editor/editor_settings.cpp
msgid "Symbol Color"
-msgstr ""
+msgstr "Цвет Ñимвола"
#: editor/editor_settings.cpp
msgid "Keyword Color"
-msgstr ""
+msgstr "Цвет ключевого Ñлова"
#: editor/editor_settings.cpp
msgid "Control Flow Keyword Color"
-msgstr ""
+msgstr "Цвет ключевого Ñлова потока управлениÑ"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Base Type Color"
-msgstr "Базовый тип"
+msgstr "Цвет базового типа"
#: editor/editor_settings.cpp
msgid "Engine Type Color"
-msgstr ""
+msgstr "Цвет типа движка"
#: editor/editor_settings.cpp
msgid "User Type Color"
-msgstr ""
+msgstr "Цвет типа пользователÑ"
#: editor/editor_settings.cpp
msgid "Comment Color"
-msgstr ""
+msgstr "Цвет комментариÑ"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "String Color"
-msgstr "Сохранение файла:"
+msgstr "Цвет Ñтроки"
-#: editor/editor_settings.cpp
-#, fuzzy
+#: editor/editor_settings.cpp platform/javascript/export/export.cpp
+#: platform/uwp/export/export.cpp
msgid "Background Color"
-msgstr "ÐедопуÑтимый цвет фона."
+msgstr "Цвет фона"
#: editor/editor_settings.cpp
#, fuzzy
msgid "Completion Background Color"
-msgstr "ÐедопуÑтимый цвет фона."
+msgstr "Цвет фона завершениÑ"
#: editor/editor_settings.cpp
#, fuzzy
msgid "Completion Selected Color"
-msgstr "Импортировать выделенное"
+msgstr "Цвет фона выделенного завершениÑ"
#: editor/editor_settings.cpp
+#, fuzzy
msgid "Completion Existing Color"
-msgstr ""
+msgstr "Цвет ÑущеÑтвующего завершениÑ"
#: editor/editor_settings.cpp
msgid "Completion Scroll Color"
@@ -5996,103 +5887,88 @@ msgid "Completion Font Color"
msgstr ""
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Text Color"
-msgstr "Следующий Ñтаж"
+msgstr "Цвет текÑта"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Line Number Color"
-msgstr "Ðомер Ñтроки:"
+msgstr "Цвет номеров Ñтрок"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Safe Line Number Color"
-msgstr "Ðомер Ñтроки:"
+msgstr "Цвет номеров безопаÑных Ñтрок"
#: editor/editor_settings.cpp
msgid "Caret Color"
-msgstr ""
+msgstr "Цвет каретки"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Caret Background Color"
-msgstr "ÐедопуÑтимый цвет фона."
+msgstr "Фоновый цвет каретки"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Text Selected Color"
-msgstr "Удалить выделенное"
+msgstr "Цвет выделенного текÑта"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Selection Color"
-msgstr "Только выделенное"
+msgstr "Цвет выделениÑ"
#: editor/editor_settings.cpp
msgid "Brace Mismatch Color"
-msgstr ""
+msgstr "Цвет неÑовпадающей Ñкобки"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Current Line Color"
-msgstr "Ð¢ÐµÐºÑƒÑ‰Ð°Ñ Ñцена"
+msgstr "Цвет текущей Ñтроки"
#: editor/editor_settings.cpp
msgid "Line Length Guideline Color"
-msgstr ""
+msgstr "Цвет лимита длины Ñтроки"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Word Highlighted Color"
-msgstr "ПодÑветка ÑинтакÑиÑа"
+msgstr "Цвет подÑвеченного Ñлова"
#: editor/editor_settings.cpp
msgid "Number Color"
-msgstr ""
+msgstr "Цвет чиÑла"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Function Color"
-msgstr "ФункциÑ"
+msgstr "Цвет функции"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Member Variable Color"
-msgstr "Переименовать переменную"
+msgstr "Цвет переменной-члена"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Mark Color"
-msgstr "Выбрать цвет"
+msgstr "Цвет отметки"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Bookmark Color"
-msgstr "Закладки"
+msgstr "Цвет закладки"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Breakpoint Color"
-msgstr "Точки оÑтанова"
+msgstr "Цвет точки оÑтанова"
#: editor/editor_settings.cpp
msgid "Executing Line Color"
-msgstr ""
+msgstr "Цвет выполнÑемой Ñтроки"
#: editor/editor_settings.cpp
msgid "Code Folding Color"
-msgstr ""
+msgstr "Цвет ÑÐ²Ð¾Ñ€Ð°Ñ‡Ð¸Ð²Ð°Ð½Ð¸Ñ ÐºÐ¾Ð´Ð°"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Search Result Color"
-msgstr "Результаты поиÑка"
+msgstr "Цвет результата поиÑка"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Search Result Border Color"
-msgstr "Результаты поиÑка"
+msgstr "Цвет границ результата поиÑка"
#: editor/editor_spin_slider.cpp
msgid "Hold %s to round to integers. Hold Shift for more precise changes."
@@ -6101,9 +5977,8 @@ msgstr ""
"изменений."
#: editor/editor_spin_slider.cpp scene/gui/button.cpp
-#, fuzzy
msgid "Flat"
-msgstr "ПлоÑкий 0"
+msgstr "ПлоÑкаÑ"
#: editor/editor_sub_scene.cpp
msgid "Select Node(s) to Import"
@@ -6147,22 +6022,6 @@ msgid "Starting the download..."
msgstr "Ðачало загрузки..."
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "HTTP Proxy"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Host"
-msgstr ""
-
-#: editor/export_template_manager.cpp editor/fileserver/editor_file_server.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp main/main.cpp
-#: modules/mono/mono_gd/gd_mono.cpp
-msgid "Port"
-msgstr ""
-
-#: editor/export_template_manager.cpp
msgid "Error requesting URL:"
msgstr "Ошибка при запроÑе URL:"
@@ -6411,10 +6270,11 @@ msgstr ""
#: editor/fileserver/editor_file_server.cpp
msgid "File Server"
-msgstr ""
+msgstr "Файловый Ñервер"
#: editor/fileserver/editor_file_server.cpp
#: editor/plugins/version_control_editor_plugin.cpp
+#: platform/uwp/export/export.cpp platform/windows/export/export.cpp
msgid "Password"
msgstr "Пароль"
@@ -6791,12 +6651,120 @@ msgstr "Управление группами"
#: editor/import/editor_import_collada.cpp
msgid "Collada"
-msgstr ""
+msgstr "Collada"
#: editor/import/editor_import_collada.cpp
msgid "Use Ambient"
+msgstr "ИÑпользовать Ambient"
+
+#: editor/import/resource_importer_bitmask.cpp
+#, fuzzy
+msgid "Create From"
+msgstr "Создать папку"
+
+#: editor/import/resource_importer_bitmask.cpp
+#: servers/audio/effects/audio_effect_compressor.cpp
+msgid "Threshold"
+msgstr ""
+
+#: editor/import/resource_importer_csv_translation.cpp
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_scene.cpp
+#: editor/import/resource_importer_texture.cpp
+#: editor/import/resource_importer_wav.cpp scene/3d/gi_probe.cpp
+#, fuzzy
+msgid "Compress"
+msgstr "Компоненты"
+
+#: editor/import/resource_importer_csv_translation.cpp
+msgid "Delimiter"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+msgid "No BPTC If RGB"
msgstr ""
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/sprite_3d.cpp
+#: scene/resources/material.cpp scene/resources/particles_material.cpp
+#: scene/resources/texture.cpp
+msgid "Flags"
+msgstr "Флаги"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/animation/tween.cpp
+#: scene/resources/texture.cpp
+msgid "Repeat"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/2d/light_2d.cpp
+#: scene/gui/control.cpp scene/resources/navigation_mesh.cpp
+msgid "Filter"
+msgstr "Фильтр"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Mipmaps"
+msgstr "Сигналы"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+msgid "Anisotropic"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+msgid "sRGB"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#, fuzzy
+msgid "Slices"
+msgstr "ÐвтоматичеÑки"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
+#: scene/resources/style_box.cpp
+msgid "Horizontal"
+msgstr "Горизонтальный"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
+#: scene/resources/style_box.cpp
+msgid "Vertical"
+msgstr "Вертикальный"
+
+#: editor/import/resource_importer_obj.cpp
+#, fuzzy
+msgid "Generate Tangents"
+msgstr "Генерировать точки"
+
+#: editor/import/resource_importer_obj.cpp
+#, fuzzy
+msgid "Scale Mesh"
+msgstr "Режим маÑштабированиÑ"
+
+#: editor/import/resource_importer_obj.cpp
+#, fuzzy
+msgid "Offset Mesh"
+msgstr "ОтÑтупы"
+
+#: editor/import/resource_importer_obj.cpp
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Octahedral Compression"
+msgstr "Сжатие"
+
+#: editor/import/resource_importer_obj.cpp
+#, fuzzy
+msgid "Optimize Mesh Flags"
+msgstr "Флаги размера"
+
#: editor/import/resource_importer_scene.cpp
msgid "Import as Single Scene"
msgstr "Импорт в виде единой Ñцены"
@@ -6837,6 +6805,151 @@ msgstr "Импорт в виде неÑкольких Ñцен"
msgid "Import as Multiple Scenes+Materials"
msgstr "Импортировать как неÑколько Ñцен и материалов"
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+#: scene/3d/physics_joint.cpp
+msgid "Nodes"
+msgstr "Узлы"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Root Type"
+msgstr "Тип возвращаемого значениÑ"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Root Name"
+msgstr "Ðазвание внешнего репозиториÑ"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Root Scale"
+msgstr "МаÑштабировать"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Custom Script"
+msgstr "ПользовательÑкий узел"
+
+#: editor/import/resource_importer_scene.cpp scene/resources/texture.cpp
+#, fuzzy
+msgid "Storage"
+msgstr "Хранилище"
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Use Legacy Names"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+msgid "Materials"
+msgstr "Материалы"
+
+#: editor/import/resource_importer_scene.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Location"
+msgstr "ЛокализациÑ"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Keep On Reimport"
+msgstr "Переимпортировать"
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+msgid "Meshes"
+msgstr "Меши"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Ensure Tangents"
+msgstr "ВычиÑлить каÑательные"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Light Baking"
+msgstr "Карты оÑвещениÑ"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Lightmap Texel Size"
+msgstr "Запекание LightMap"
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+msgid "Skins"
+msgstr "Скины"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Use Named Skins"
+msgstr "ИÑпользовать привÑзку маÑштабированиÑ"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "External Files"
+msgstr "Внешний"
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Store In Subdir"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Filter Script"
+msgstr "Фильтр Ñкриптов"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Keep Custom Tracks"
+msgstr "Преобразование"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Optimizer"
+msgstr "Оптимизировать"
+
+#: editor/import/resource_importer_scene.cpp main/main.cpp
+#: modules/mono/mono_gd/gd_mono.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp scene/2d/camera_2d.cpp scene/2d/light_2d.cpp
+#: scene/2d/navigation_polygon.cpp scene/2d/ray_cast_2d.cpp scene/2d/sprite.cpp
+#: scene/2d/y_sort.cpp scene/3d/audio_stream_player_3d.cpp
+#: scene/3d/baked_lightmap.cpp scene/3d/interpolated_camera.cpp
+#: scene/3d/light.cpp scene/3d/navigation_mesh_instance.cpp
+#: scene/3d/physics_joint.cpp scene/3d/ray_cast.cpp scene/3d/sprite_3d.cpp
+#: scene/gui/graph_edit.cpp scene/gui/rich_text_label.cpp
+#: scene/resources/curve.cpp scene/resources/environment.cpp
+#: scene/resources/material.cpp
+msgid "Enabled"
+msgstr "Включено"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Max Linear Error"
+msgstr "МакÑ. Линейные погрешноÑти:"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Max Angular Error"
+msgstr "МакÑ. Угловые погрешноÑти:"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Max Angle"
+msgstr "Угол"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Remove Unused Tracks"
+msgstr "Удалить дорожку"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Clips"
+msgstr "Ðнимационные клипы"
+
+#: editor/import/resource_importer_scene.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/particles_2d.cpp scene/3d/area.cpp scene/3d/cpu_particles.cpp
+#: scene/3d/particles.cpp scene/resources/environment.cpp
+msgid "Amount"
+msgstr "КоличеÑтво"
+
#: editor/import/resource_importer_scene.cpp
#: editor/plugins/mesh_library_editor_plugin.cpp
msgid "Import Scene"
@@ -6878,11 +6991,149 @@ msgstr "Ð’Ñ‹ вернули производный от Node объект в мÐ
msgid "Saving..."
msgstr "Сохранение..."
+#: editor/import/resource_importer_texture.cpp scene/resources/texture.cpp
+msgid "Lossy Quality"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "HDR Mode"
+msgstr "Режим выделениÑ"
+
+#: editor/import/resource_importer_texture.cpp
+msgid "BPTC LDR"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/mesh_instance_2d.cpp scene/2d/multimesh_instance_2d.cpp
+#: scene/2d/particles_2d.cpp scene/2d/sprite.cpp scene/resources/style_box.cpp
+msgid "Normal Map"
+msgstr "Карта нормалей"
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Process"
+msgstr "Предобработка"
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Fix Alpha Border"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Premult Alpha"
+msgstr "Редактировать полигон"
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Hdr As Srgb"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Invert Color"
+msgstr "Вершины"
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Normal Map Invert Y"
+msgstr "Карта нормалей"
+
+#: editor/import/resource_importer_texture.cpp
+#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
+#: scene/audio/audio_stream_player.cpp scene/gui/video_player.cpp
+msgid "Stream"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Size Limit"
+msgstr "Лимит"
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Detect 3D"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "SVG"
+msgstr "CSG"
+
#: editor/import/resource_importer_texture.cpp
msgid ""
"Warning, no suitable PC VRAM compression enabled in Project Settings. This "
"texture will not display correctly on PC."
msgstr ""
+"Внимание, в ÐаÑтройках проекта не включено подходÑщее Ñжатие видеопамÑти Ð´Ð»Ñ "
+"ПК. Эта текÑтура не будет корректно отображатьÑÑ Ð½Ð° ПК."
+
+#: editor/import/resource_importer_texture_atlas.cpp
+#, fuzzy
+msgid "Atlas File"
+msgstr "Размер атлаÑа"
+
+#: editor/import/resource_importer_texture_atlas.cpp
+#, fuzzy
+msgid "Import Mode"
+msgstr "Режим ÑкÑпортированиÑ:"
+
+#: editor/import/resource_importer_texture_atlas.cpp
+#, fuzzy
+msgid "Crop To Region"
+msgstr "Задать облаÑть тайла"
+
+#: editor/import/resource_importer_texture_atlas.cpp
+msgid "Trim Alpha Border From Region"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp scene/2d/physics_body_2d.cpp
+msgid "Force"
+msgstr "Сила"
+
+#: editor/import/resource_importer_wav.cpp
+msgid "8 Bit"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp main/main.cpp
+#: modules/mono/editor/csharp_project.cpp modules/mono/mono_gd/gd_mono.cpp
+msgid "Mono"
+msgstr "Моно"
+
+#: editor/import/resource_importer_wav.cpp
+#, fuzzy
+msgid "Max Rate"
+msgstr "Mix узел"
+
+#: editor/import/resource_importer_wav.cpp
+#, fuzzy
+msgid "Max Rate Hz"
+msgstr "Mix узел"
+
+#: editor/import/resource_importer_wav.cpp
+msgid "Trim"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+#, fuzzy
+msgid "Normalize"
+msgstr "Ðормализованный"
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+#, fuzzy
+msgid "Loop Mode"
+msgstr "Режим перемещениÑ"
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+#, fuzzy
+msgid "Loop Begin"
+msgstr "Режим перемещениÑ"
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+#, fuzzy
+msgid "Loop End"
+msgstr "Режим перемещениÑ"
#: editor/import_defaults_editor.cpp
msgid "Select Importer"
@@ -6961,6 +7212,29 @@ msgid "Failed to load resource."
msgstr "Ðе удалоÑÑŒ загрузить реÑурÑ."
#: editor/inspector_dock.cpp
+#, fuzzy
+msgid "Property Name Style"
+msgstr "Ðазвание проекта:"
+
+#: editor/inspector_dock.cpp scene/gui/color_picker.cpp
+msgid "Raw"
+msgstr "Raw"
+
+#: editor/inspector_dock.cpp
+#, fuzzy
+msgid "Capitalized"
+msgstr "С Заглавных Букв"
+
+#: editor/inspector_dock.cpp
+#, fuzzy
+msgid "Localized"
+msgstr "Локаль"
+
+#: editor/inspector_dock.cpp
+msgid "Localization not available for current language."
+msgstr ""
+
+#: editor/inspector_dock.cpp
msgid "Copy Properties"
msgstr "Копировать ÑвойÑтва"
@@ -7848,7 +8122,7 @@ msgstr "Фильтры..."
#: editor/plugins/asset_library_editor_plugin.cpp scene/main/http_request.cpp
msgid "Use Threads"
-msgstr ""
+msgstr "ИÑпользовать потоки"
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Contents:"
@@ -7975,9 +8249,8 @@ msgid "Download Error"
msgstr "Ошибка загрузки"
#: editor/plugins/asset_library_editor_plugin.cpp
-#, fuzzy
msgid "Available URLs"
-msgstr "ДоÑтупные профили:"
+msgstr "ДоÑтупные URL"
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Download for this asset is already in progress!"
@@ -8008,18 +8281,26 @@ msgid "License (Z-A)"
msgstr "Ð›Ð¸Ñ†ÐµÐ½Ð·Ð¸Ñ (Я-Ð)"
#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgctxt "Pagination"
msgid "First"
msgstr "ПерваÑ"
-#: editor/plugins/asset_library_editor_plugin.cpp scene/gui/control.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgctxt "Pagination"
msgid "Previous"
msgstr "ПредыдущаÑ"
-#: editor/plugins/asset_library_editor_plugin.cpp scene/gui/control.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgctxt "Pagination"
msgid "Next"
msgstr "СледующаÑ"
#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgctxt "Pagination"
msgid "Last"
msgstr "ПоÑледнÑÑ"
@@ -8266,19 +8547,19 @@ msgstr ""
"Когда активно, у перемещаемых узлов Control будут изменÑтьÑÑ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ñкорей "
"вмеÑто отÑтупов."
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Top Left"
msgstr "Слева вверху"
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Top Right"
msgstr "Справа вверху"
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Bottom Right"
msgstr "Справа внизу"
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Bottom Left"
msgstr "Слева внизу"
@@ -8630,23 +8911,20 @@ msgid "View"
msgstr "Вид"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#, fuzzy
msgid "Show"
-msgstr "Показать Ñетку"
+msgstr "Показывать"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#, fuzzy
msgid "Show When Snapping"
-msgstr "Ð˜Ð½Ñ‚ÐµÐ»Ð»ÐµÐºÑ‚ÑƒÐ°Ð»ÑŒÐ½Ð°Ñ Ð¿Ñ€Ð¸Ð²Ñзка"
+msgstr "Показывать при привÑзке"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Hide"
-msgstr ""
+msgstr "Скрывать"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#, fuzzy
msgid "Toggle Grid"
-msgstr "Режим отображениÑ"
+msgstr "Переключить Ñетку"
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/polygon_2d_editor_plugin.cpp
@@ -8992,6 +9270,19 @@ msgstr "Запечь GI пробу"
msgid "Gradient Edited"
msgstr "Градиент отредактирован"
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+msgid "Swap GradientTexture2D Fill Points"
+msgstr ""
+
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+msgid "Swap Gradient Fill Points"
+msgstr ""
+
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+#, fuzzy
+msgid "Toggle Grid Snap"
+msgstr "Переключить Ñетку"
+
#: editor/plugins/item_list_editor_plugin.cpp
msgid "Item %d"
msgstr "Элемент %d"
@@ -9225,8 +9516,9 @@ msgstr ""
"Обновить из ÑущеÑтвующей Ñцены?:\n"
"%s"
-#: editor/plugins/mesh_library_editor_plugin.cpp modules/gridmap/grid_map.cpp
-msgid "Mesh Library"
+#: editor/plugins/mesh_library_editor_plugin.cpp
+#, fuzzy
+msgid "MeshLibrary"
msgstr "Библиотека полиÑеток"
#: editor/plugins/mesh_library_editor_plugin.cpp
@@ -9250,21 +9542,18 @@ msgid "Update from Scene"
msgstr "Обновить из Ñцены"
#: editor/plugins/mesh_library_editor_plugin.cpp
-#, fuzzy
msgid "Apply without Transforms"
-msgstr "Применить Ð¿Ñ€ÐµÐ¾Ð±Ñ€Ð°Ð·Ð¾Ð²Ð°Ð½Ð¸Ñ MeshInstance"
+msgstr "Применить без преобразований"
#: editor/plugins/mesh_library_editor_plugin.cpp
-#, fuzzy
msgid "Apply with Transforms"
-msgstr "Применить Ð¿Ñ€ÐµÐ¾Ð±Ñ€Ð°Ð·Ð¾Ð²Ð°Ð½Ð¸Ñ MeshInstance"
+msgstr "Применить Ñ Ð¿Ñ€ÐµÐ¾Ð±Ñ€Ð°Ð·Ð¾Ð²Ð°Ð½Ð¸Ñми"
#: editor/plugins/mesh_library_editor_plugin.cpp
#: editor/plugins/tile_map_editor_plugin.cpp
#: modules/gridmap/grid_map_editor_plugin.cpp
-#, fuzzy
msgid "Preview Size"
-msgstr "ПредпроÑмотр"
+msgstr "Размер превью"
#: editor/plugins/multimesh_editor_plugin.cpp
msgid "No mesh source specified (and no MultiMesh set in node)."
@@ -9578,16 +9867,14 @@ msgstr "Разделить Ñегмент (в кривой)"
#: editor/plugins/path_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp editor/spatial_editor_gizmos.cpp
#: modules/csg/csg_gizmos.cpp
-#, fuzzy
msgid "3D Gizmos"
-msgstr "Гизмо"
+msgstr "3D-гизмо"
#: editor/plugins/path_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp editor/spatial_editor_gizmos.cpp
#: modules/csg/csg_gizmos.cpp
-#, fuzzy
msgid "Gizmo Colors"
-msgstr "Цвета излучениÑ"
+msgstr "Цвета гизмо"
#: editor/plugins/physical_bone_plugin.cpp
msgid "Move Joint"
@@ -9894,7 +10181,7 @@ msgstr "Закрыть и Ñохранить изменениÑ?"
#: editor/plugins/script_editor_plugin.cpp
#: editor/plugins/shader_editor_plugin.cpp
msgid "Auto Reload Scripts On External Change"
-msgstr ""
+msgstr "ÐвтоматичеÑки перезагружать Ñкрипты при внешнем изменении"
#: editor/plugins/script_editor_plugin.cpp
msgid "Error writing TextFile:"
@@ -9977,7 +10264,7 @@ msgstr "Справка по клаÑÑу %s"
#: editor/plugins/script_editor_plugin.cpp
msgid "Auto Reload And Parse Scripts On Save"
-msgstr ""
+msgstr "ÐвтоматичеÑки перезагружать и разбирать Ñкрипты при Ñохранении"
#: editor/plugins/script_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
@@ -10151,58 +10438,51 @@ msgstr "Результаты поиÑка"
#: editor/plugins/script_editor_plugin.cpp
msgid "Open Dominant Script On Scene Change"
-msgstr ""
+msgstr "Открывать главный Ñкрипт при Ñмене Ñцены"
#: editor/plugins/script_editor_plugin.cpp
msgid "External"
-msgstr ""
+msgstr "Внешний"
#: editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "Use External Editor"
-msgstr "Отладка Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ внешнего редактора"
+msgstr "ИÑпользовать внешний редактор"
#: editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "Exec Path"
-msgstr "Путь ÑкÑпорта"
+msgstr "Путь к иÑполнÑемому файлу"
#: editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "Script Temperature Enabled"
-msgstr "Выбрать файл шаблона"
+msgstr "Температура Ñкриптов включена"
#: editor/plugins/script_editor_plugin.cpp
msgid "Highlight Current Script"
-msgstr ""
+msgstr "ПодÑвечивать текущий Ñкрипт"
#: editor/plugins/script_editor_plugin.cpp
msgid "Script Temperature History Size"
-msgstr ""
+msgstr "Размер иÑтории температуры Ñкриптов"
#: editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "Current Script Background Color"
-msgstr "ÐедопуÑтимый цвет фона."
+msgstr "Цвет фона текущего Ñкрипта"
#: editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "Group Help Pages"
-msgstr "Сгруппировать выделенное"
+msgstr "Группировать Ñтраницы Ñправки"
#: editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "Sort Scripts By"
-msgstr "Создать Ñкрипт"
+msgstr "Сортировать Ñкрипты по"
#: editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "List Script Names As"
-msgstr "Ð˜Ð¼Ñ Ñкрипта:"
+msgstr "СпиÑок имён Ñкриптов в виде"
#: editor/plugins/script_editor_plugin.cpp
msgid "Exec Flags"
-msgstr ""
+msgstr "Флаги иÑполнениÑ"
#: editor/plugins/script_editor_plugin.cpp
msgid "Clear Recent Scripts"
@@ -10217,8 +10497,8 @@ msgstr "ÐŸÐ¾Ð´ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ Ðº методу:"
msgid "Source"
msgstr "ИÑточник"
-#: editor/plugins/script_text_editor.cpp scene/3d/interpolated_camera.cpp
-#: scene/animation/skeleton_ik.cpp
+#: editor/plugins/script_text_editor.cpp platform/uwp/export/export.cpp
+#: scene/3d/interpolated_camera.cpp scene/animation/skeleton_ik.cpp
msgid "Target"
msgstr "Цель"
@@ -11022,21 +11302,19 @@ msgstr "ПоÑле"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Manipulator Gizmo Size"
-msgstr ""
+msgstr "Размер гизмо манипулÑтора"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Manipulator Gizmo Opacity"
-msgstr ""
+msgstr "ÐепрозрачноÑть гизмо манипулÑтора"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Show Viewport Rotation Gizmo"
-msgstr "Блокировать вращение камеры"
+msgstr "Показывать гизмо Ð²Ñ€Ð°Ñ‰ÐµÐ½Ð¸Ñ Viewport"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Instanced"
-msgstr "Добавить ÑкземплÑÑ€"
+msgstr "ИнÑтанцирован"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Unnamed Gizmo"
@@ -11198,7 +11476,9 @@ msgstr "СкороÑть:"
#: editor/plugins/sprite_frames_editor_plugin.cpp
#: modules/gltf/gltf_animation.cpp modules/minimp3/audio_stream_mp3.cpp
-#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp scene/2d/path_2d.cpp
+#: modules/minimp3/resource_importer_mp3.cpp
+#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp
+#: modules/stb_vorbis/resource_importer_ogg_vorbis.cpp scene/2d/path_2d.cpp
#: scene/3d/path.cpp scene/resources/animation.cpp scene/resources/material.cpp
msgid "Loop"
msgstr "Зациклить"
@@ -11969,54 +12249,47 @@ msgid "Clear Transform"
msgstr "ОчиÑтить преобразование"
#: editor/plugins/tile_map_editor_plugin.cpp
-#, fuzzy
msgid "Tile Map"
-msgstr "РиÑовать карту тайлов"
+msgstr "Ð¢Ð°Ð¹Ð»Ð¾Ð²Ð°Ñ ÐºÐ°Ñ€Ñ‚Ð°"
#: editor/plugins/tile_map_editor_plugin.cpp
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Palette Min Width"
-msgstr ""
+msgstr "ÐœÐ¸Ð½Ð¸Ð¼Ð°Ð»ÑŒÐ½Ð°Ñ ÑˆÐ¸Ñ€Ð¸Ð½Ð° палитры"
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Palette Item Hseparation"
-msgstr ""
+msgstr "Горизонтальное разделение Ñлементов палитры"
#: editor/plugins/tile_map_editor_plugin.cpp
-#, fuzzy
msgid "Show Tile Names"
-msgstr "Показать вÑе локали"
+msgstr "Показывать имена тайлов"
#: editor/plugins/tile_map_editor_plugin.cpp
-#, fuzzy
msgid "Show Tile Ids"
-msgstr "Показывать линейки"
+msgstr "Показывать ID тайлов"
#: editor/plugins/tile_map_editor_plugin.cpp
-#, fuzzy
msgid "Sort Tiles By Name"
-msgstr "Сортировать файлы"
+msgstr "Сортировать тайлы по имени"
#: editor/plugins/tile_map_editor_plugin.cpp
-#, fuzzy
msgid "Bucket Fill Preview"
-msgstr "Заливка"
+msgstr "Предварительный проÑмотр заливки"
#: editor/plugins/tile_map_editor_plugin.cpp
#: modules/gridmap/grid_map_editor_plugin.cpp
#, fuzzy
msgid "Editor Side"
-msgstr "Редактор"
+msgstr "Сторона редактора"
#: editor/plugins/tile_map_editor_plugin.cpp
-#, fuzzy
msgid "Display Grid"
-msgstr "Режим проÑвечиваниÑ"
+msgstr "Показать Ñетку"
#: editor/plugins/tile_map_editor_plugin.cpp
-#, fuzzy
msgid "Axis Color"
-msgstr "Выбрать цвет"
+msgstr "Цвет оÑи"
#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Add Texture(s) to TileSet."
@@ -12091,8 +12364,9 @@ msgstr "Ð‘Ð¸Ñ‚Ð¾Ð²Ð°Ñ Ð¼Ð°Ñка"
msgid "Priority"
msgstr "Приоритет"
-#: editor/plugins/tile_set_editor_plugin.cpp main/main.cpp scene/gui/button.cpp
-#: scene/gui/item_list.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp main/main.cpp
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#: scene/gui/button.cpp scene/gui/item_list.cpp
msgid "Icon"
msgstr "Иконка"
@@ -13464,10 +13738,6 @@ msgstr ""
"наÑтройках ÑкÑпорта."
#: editor/project_export.cpp
-msgid "Release"
-msgstr "Релиз"
-
-#: editor/project_export.cpp
msgid "Exporting All"
msgstr "ЭкÑпорт вÑех"
@@ -13588,11 +13858,12 @@ msgid ""
"Note: Encryption key needs to be stored in the binary,\n"
"you need to build the export templates from source."
msgstr ""
+"Примечание: Ключ ÑˆÐ¸Ñ„Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð´Ð¾Ð»Ð¶ÐµÐ½ хранитьÑÑ Ð² двоичном файле,\n"
+"вам нужно Ñобрать шаблоны ÑкÑпорта из иÑходного кода."
#: editor/project_export.cpp
-#, fuzzy
msgid "More Info..."
-msgstr "ПеремеÑтить в..."
+msgstr "Подробнее..."
#: editor/project_export.cpp
msgid "Export PCK/Zip"
@@ -13922,7 +14193,6 @@ msgstr ""
#. TRANSLATORS: This refers to the application where users manage their Godot projects.
#: editor/project_manager.cpp
-#, fuzzy
msgctxt "Application"
msgid "Project Manager"
msgstr "Менеджер проектов"
@@ -14913,18 +15183,16 @@ msgid "Clear Inheritance? (No Undo!)"
msgstr "ОчиÑтить наÑледование? (ÐÐµÐ»ÑŒÐ·Ñ Ð¾Ñ‚Ð¼ÐµÐ½Ð¸Ñ‚ÑŒ!)"
#: editor/scene_tree_dock.cpp
-#, fuzzy
msgid "Show Scene Tree Root Selection"
-msgstr "Центрировать выбранное"
+msgstr "Показывать выбор ÐºÐ¾Ñ€Ð½Ñ Ð´ÐµÑ€ÐµÐ²Ð° Ñцены"
#: editor/scene_tree_dock.cpp
msgid "Derive Script Globals By Name"
msgstr ""
#: editor/scene_tree_dock.cpp
-#, fuzzy
msgid "Use Favorites Root Selection"
-msgstr "Кадрировать выбранное"
+msgstr "ИÑпользовать закладки выбора корневого узла"
#: editor/scene_tree_editor.cpp
msgid "Toggle Visible"
@@ -15236,15 +15504,15 @@ msgstr "Фильтр переменных Ñтека"
#: editor/script_editor_debugger.cpp
msgid "Auto Switch To Remote Scene Tree"
-msgstr ""
+msgstr "ÐвтоматичеÑки переключатьÑÑ Ð½Ð° удалённое дерево Ñцены"
#: editor/script_editor_debugger.cpp
msgid "Remote Scene Tree Refresh Interval"
-msgstr ""
+msgstr "Интервал Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ ÑƒÐ´Ð°Ð»Ñ‘Ð½Ð½Ð¾Ð³Ð¾ дерева Ñцены"
#: editor/script_editor_debugger.cpp
msgid "Remote Inspect Refresh Interval"
-msgstr ""
+msgstr "Интервал Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ ÑƒÐ´Ð°Ð»Ñ‘Ð½Ð½Ð¾Ð³Ð¾ инÑпектора"
#: editor/script_editor_debugger.cpp
msgid "Network Profiler"
@@ -15348,15 +15616,16 @@ msgstr "Изменить Ñ€Ð°Ð´Ð¸ÑƒÑ Ñвета"
#: editor/spatial_editor_gizmos.cpp
msgid "Stream Player 3D"
-msgstr ""
+msgstr "Потоковый проигрыватель 3D"
#: editor/spatial_editor_gizmos.cpp
msgid "Change AudioStreamPlayer3D Emission Angle"
msgstr "Изменить угол AudioStreamPlayer3D"
#: editor/spatial_editor_gizmos.cpp modules/gltf/gltf_node.cpp
+#: platform/osx/export/export.cpp
msgid "Camera"
-msgstr ""
+msgstr "Камера"
#: editor/spatial_editor_gizmos.cpp
msgid "Change Camera FOV"
@@ -15368,9 +15637,8 @@ msgstr "Изменить размер камеры"
#: editor/spatial_editor_gizmos.cpp modules/gltf/gltf_node.cpp
#: scene/3d/physics_body.cpp
-#, fuzzy
msgid "Joint"
-msgstr "Точка"
+msgstr "СуÑтав"
#: editor/spatial_editor_gizmos.cpp scene/2d/collision_shape_2d.cpp
#: scene/2d/cpu_particles_2d.cpp scene/2d/touch_screen_button.cpp
@@ -15379,11 +15647,11 @@ msgstr "Точка"
#: scene/resources/particles_material.cpp servers/physics_2d_server.cpp
#: servers/physics_server.cpp
msgid "Shape"
-msgstr ""
+msgstr "Форма"
#: editor/spatial_editor_gizmos.cpp
msgid "Visibility Notifier"
-msgstr ""
+msgstr "Уведомитель видимоÑти"
#: editor/spatial_editor_gizmos.cpp
msgid "Change Notifier AABB"
@@ -15394,23 +15662,20 @@ msgid "Change Particles AABB"
msgstr "Изменить AABB чаÑтиц"
#: editor/spatial_editor_gizmos.cpp
-#, fuzzy
msgid "Reflection Probe"
-msgstr "Выбрать ÑвойÑтво"
+msgstr "Проба отражениÑ"
#: editor/spatial_editor_gizmos.cpp
msgid "Change Probe Extents"
msgstr "Изменить Probe Extents"
#: editor/spatial_editor_gizmos.cpp
-#, fuzzy
msgid "GI Probe"
-msgstr "Запечь GI пробу"
+msgstr "GI-проба"
#: editor/spatial_editor_gizmos.cpp
-#, fuzzy
msgid "Baked Indirect Light"
-msgstr "ÐепрÑмое оÑвещение"
+msgstr "Запечённый непрÑмой Ñвет"
#: editor/spatial_editor_gizmos.cpp modules/csg/csg_gizmos.cpp
msgid "Change Sphere Shape Radius"
@@ -15443,38 +15708,41 @@ msgstr "Изменить длину луча"
#: editor/spatial_editor_gizmos.cpp
#, fuzzy
msgid "Navigation Edge"
-msgstr "Режим навигации"
+msgstr "Край навигации"
#: editor/spatial_editor_gizmos.cpp
#, fuzzy
msgid "Navigation Edge Disabled"
-msgstr "Режим навигации"
+msgstr "Край навигации отключён"
#: editor/spatial_editor_gizmos.cpp
#, fuzzy
msgid "Navigation Solid"
-msgstr "Режим навигации"
+msgstr "Ð¢Ð²Ñ‘Ñ€Ð´Ð°Ñ Ð½Ð°Ð²Ð¸Ð³Ð°Ñ†Ð¸Ñ"
#: editor/spatial_editor_gizmos.cpp
#, fuzzy
msgid "Navigation Solid Disabled"
-msgstr "Режим навигации"
+msgstr "Ð¢Ð²Ñ‘Ñ€Ð´Ð°Ñ Ð½Ð°Ð²Ð¸Ð³Ð°Ñ†Ð¸Ñ Ð¾Ñ‚ÐºÐ»ÑŽÑ‡ÐµÐ½Ð°"
#: editor/spatial_editor_gizmos.cpp
+#, fuzzy
msgid "Joint Body A"
-msgstr ""
+msgstr "СуÑтав тела A"
#: editor/spatial_editor_gizmos.cpp
msgid "Joint Body B"
-msgstr ""
+msgstr "СуÑтав тела B"
#: editor/spatial_editor_gizmos.cpp
+#, fuzzy
msgid "Room Edge"
-msgstr ""
+msgstr "Край комнаты"
#: editor/spatial_editor_gizmos.cpp
+#, fuzzy
msgid "Room Overlap"
-msgstr ""
+msgstr "ПереÑечение комнат"
#: editor/spatial_editor_gizmos.cpp
msgid "Set Room Point Position"
@@ -15483,15 +15751,17 @@ msgstr "Задать положение точки комнаты"
#: editor/spatial_editor_gizmos.cpp scene/3d/portal.cpp
#, fuzzy
msgid "Portal Margin"
-msgstr "Задать отÑтуп"
+msgstr "ОтÑтуп портала"
#: editor/spatial_editor_gizmos.cpp
+#, fuzzy
msgid "Portal Edge"
-msgstr ""
+msgstr "Край портала"
#: editor/spatial_editor_gizmos.cpp
+#, fuzzy
msgid "Portal Arrow"
-msgstr ""
+msgstr "Стрела портала"
#: editor/spatial_editor_gizmos.cpp
msgid "Set Portal Point Position"
@@ -15499,18 +15769,16 @@ msgstr "Задать положение точки портала"
#: editor/spatial_editor_gizmos.cpp
msgid "Portal Front"
-msgstr ""
+msgstr "ПереднÑÑ Ñ‡Ð°Ñть портала"
#: editor/spatial_editor_gizmos.cpp
-#, fuzzy
msgid "Portal Back"
-msgstr "Ðазад"
+msgstr "ЗаднÑÑ Ñ‡Ð°Ñть портала"
#: editor/spatial_editor_gizmos.cpp scene/2d/light_occluder_2d.cpp
#: scene/2d/tile_map.cpp
-#, fuzzy
msgid "Occluder"
-msgstr "Режим перекрытиÑ"
+msgstr "Окклюдер"
#: editor/spatial_editor_gizmos.cpp
msgid "Set Occluder Sphere Radius"
@@ -15529,123 +15797,113 @@ msgid "Set Occluder Hole Point Position"
msgstr "Задать положение точки отверÑÑ‚Ð¸Ñ Ð¾ÐºÐºÐ»ÑŽÐ´ÐµÑ€Ð°"
#: editor/spatial_editor_gizmos.cpp
-#, fuzzy
msgid "Occluder Polygon Front"
-msgstr "Создан затенÑющий полигон"
+msgstr "ПереднÑÑ Ñ‡Ð°Ñть полигона-окклюдера"
#: editor/spatial_editor_gizmos.cpp
-#, fuzzy
msgid "Occluder Polygon Back"
-msgstr "Создан затенÑющий полигон"
+msgstr "ЗаднÑÑ Ñ‡Ð°Ñть полигона-окклюдера"
#: editor/spatial_editor_gizmos.cpp
-#, fuzzy
msgid "Occluder Hole"
-msgstr "Создан затенÑющий полигон"
+msgstr "ОтверÑтие окклюдера"
#: main/main.cpp
msgid "Godot Physics"
-msgstr ""
+msgstr "Физика Godot"
#: main/main.cpp servers/physics_2d/physics_2d_server_sw.cpp
#: servers/visual/visual_server_scene.cpp
msgid "Use BVH"
-msgstr ""
+msgstr "ИÑпользовать BVH"
#: main/main.cpp servers/physics_2d/physics_2d_server_sw.cpp
#: servers/visual/visual_server_scene.cpp
-#, fuzzy
msgid "BVH Collision Margin"
-msgstr "Режим ÑтолкновениÑ"
+msgstr "ОтÑтуп ÑÑ‚Ð¾Ð»ÐºÐ½Ð¾Ð²ÐµÐ½Ð¸Ñ BVH"
#: main/main.cpp
-#, fuzzy
msgid "Crash Handler"
-msgstr "Задать обработчик"
+msgstr "Обработчик падений"
#: main/main.cpp
-#, fuzzy
msgid "Multithreaded Server"
-msgstr "Мульти-узловый набор"
+msgstr "Многопоточный Ñервер"
#: main/main.cpp
msgid "RID Pool Prealloc"
-msgstr ""
+msgstr "Предварительное выделение пула RID"
#: main/main.cpp
-#, fuzzy
msgid "Debugger stdout"
-msgstr "Отладчик"
+msgstr "Стандартный вывод отладчика"
#: main/main.cpp
msgid "Max Chars Per Second"
-msgstr ""
+msgstr "МакÑимум Ñимволов в Ñекунду"
#: main/main.cpp
msgid "Max Messages Per Frame"
-msgstr ""
+msgstr "МакÑимум Ñообщений в кадр"
#: main/main.cpp
msgid "Max Errors Per Second"
-msgstr ""
+msgstr "МакÑимум ошибок в Ñекунду"
#: main/main.cpp
msgid "Max Warnings Per Second"
-msgstr ""
+msgstr "МакÑимум предупреждений в Ñекунду"
#: main/main.cpp
msgid "Flush stdout On Print"
-msgstr ""
+msgstr "ОтправлÑть Ñтандартный вывод при print"
#: main/main.cpp servers/visual_server.cpp
msgid "Logging"
-msgstr ""
+msgstr "Логирование"
#: main/main.cpp
msgid "File Logging"
-msgstr ""
+msgstr "Логирование файлов"
#: main/main.cpp
-#, fuzzy
msgid "Enable File Logging"
-msgstr "Включить фильтрацию"
+msgstr "Включить логирование файлов"
#: main/main.cpp
-#, fuzzy
msgid "Log Path"
-msgstr "Копировать путь"
+msgstr "Путь к логу"
#: main/main.cpp
msgid "Max Log Files"
-msgstr ""
+msgstr "МакÑимум файлов логов"
#: main/main.cpp
msgid "Driver"
-msgstr ""
+msgstr "Драйвер"
#: main/main.cpp
-#, fuzzy
msgid "Driver Name"
-msgstr "Ð˜Ð¼Ñ Ñкрипта:"
+msgstr "Ð˜Ð¼Ñ Ð´Ñ€Ð°Ð¹Ð²ÐµÑ€Ð°"
#: main/main.cpp
msgid "Fallback To GLES2"
-msgstr ""
+msgstr "Откат к GLES2"
#: main/main.cpp
msgid "Use Nvidia Rect Flicker Workaround"
-msgstr ""
+msgstr "Обходить проблему Nvidia Rect Flicker"
-#: main/main.cpp platform/uwp/os_uwp.cpp
-#, fuzzy
+#: main/main.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp platform/uwp/os_uwp.cpp
msgid "Display"
-msgstr "Отображать вÑÑ‘"
+msgstr "ДиÑплей"
#: main/main.cpp modules/csg/csg_shape.cpp
#: modules/opensimplex/noise_texture.cpp scene/2d/line_2d.cpp
#: scene/gui/text_edit.cpp scene/resources/texture.cpp
msgid "Width"
-msgstr ""
+msgstr "Ширина"
#: main/main.cpp modules/csg/csg_shape.cpp modules/gltf/gltf_node.cpp
#: modules/opensimplex/noise_texture.cpp scene/2d/light_2d.cpp
@@ -15653,124 +15911,100 @@ msgstr ""
#: scene/resources/cylinder_shape.cpp scene/resources/font.cpp
#: scene/resources/navigation_mesh.cpp scene/resources/primitive_meshes.cpp
#: scene/resources/texture.cpp
-#, fuzzy
msgid "Height"
-msgstr "Свет"
+msgstr "Ð’Ñ‹Ñота"
#: main/main.cpp
msgid "Always On Top"
-msgstr ""
+msgstr "Ð’Ñегда Ñверху"
#: main/main.cpp
-#, fuzzy
msgid "Test Width"
-msgstr "Слева по вÑей выÑоте"
+msgstr "ТеÑÑ‚Ð¾Ð²Ð°Ñ ÑˆÐ¸Ñ€Ð¸Ð½Ð°"
#: main/main.cpp
-#, fuzzy
msgid "Test Height"
-msgstr "ТеÑтируемые"
+msgstr "ТеÑÑ‚Ð¾Ð²Ð°Ñ Ð²Ñ‹Ñота"
#: main/main.cpp
msgid "DPI"
-msgstr ""
+msgstr "DPI"
#: main/main.cpp
msgid "Allow hiDPI"
-msgstr ""
+msgstr "Разрешить hiDPI"
#: main/main.cpp
-#, fuzzy
msgid "V-Sync"
-msgstr "СинхронизациÑ"
+msgstr "Ð’ÐµÑ€Ñ‚Ð¸ÐºÐ°Ð»ÑŒÐ½Ð°Ñ ÑинхронизациÑ"
#: main/main.cpp
-#, fuzzy
msgid "Use V-Sync"
-msgstr "ИÑпользовать привÑзки"
+msgstr "ИÑпользовать вертикальную Ñинхронизацию"
#: main/main.cpp
msgid "Per Pixel Transparency"
-msgstr ""
+msgstr "ПопикÑÐµÐ»ÑŒÐ½Ð°Ñ Ð¿Ñ€Ð¾Ð·Ñ€Ð°Ñ‡Ð½Ð¾Ñть"
#: main/main.cpp
msgid "Allowed"
-msgstr ""
-
-#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp scene/2d/camera_2d.cpp
-#: scene/2d/light_2d.cpp scene/2d/navigation_polygon.cpp
-#: scene/2d/ray_cast_2d.cpp scene/2d/sprite.cpp scene/2d/y_sort.cpp
-#: scene/3d/audio_stream_player_3d.cpp scene/3d/baked_lightmap.cpp
-#: scene/3d/interpolated_camera.cpp scene/3d/light.cpp
-#: scene/3d/navigation_mesh_instance.cpp scene/3d/ray_cast.cpp
-#: scene/3d/sprite_3d.cpp scene/gui/graph_edit.cpp
-#: scene/gui/rich_text_label.cpp scene/resources/curve.cpp
-#: scene/resources/environment.cpp
-#, fuzzy
-msgid "Enabled"
-msgstr "Включить"
+msgstr "Разрешено"
#: main/main.cpp
msgid "Intended Usage"
-msgstr ""
+msgstr "Предполагаемое иÑпользование"
#: main/main.cpp
-#, fuzzy
msgid "Framebuffer Allocation"
-msgstr "Кадрировать выбранное"
+msgstr "Выделение фреймбуфера"
#: main/main.cpp platform/uwp/os_uwp.cpp
-#, fuzzy
msgid "Energy Saving"
-msgstr "Ошибка ÑохранениÑ"
+msgstr "ЭнергоÑбережение"
#: main/main.cpp
msgid "Threads"
-msgstr ""
+msgstr "Потоки"
#: main/main.cpp servers/physics_2d/physics_2d_server_wrap_mt.h
-#, fuzzy
msgid "Thread Model"
-msgstr "Режим отображениÑ"
+msgstr "Модель потоков"
#: main/main.cpp
msgid "Thread Safe BVH"
-msgstr ""
+msgstr "ПотокобезопаÑный BVH"
#: main/main.cpp
msgid "Handheld"
-msgstr ""
+msgstr "Портативный"
-#: main/main.cpp
-#, fuzzy
+#: main/main.cpp platform/javascript/export/export.cpp
+#: platform/uwp/export/export.cpp
msgid "Orientation"
-msgstr "Онлайн-документациÑ"
+msgstr "ОриентациÑ"
#: main/main.cpp scene/gui/scroll_container.cpp scene/gui/text_edit.cpp
-#: scene/main/scene_tree.cpp
-#, fuzzy
+#: scene/main/scene_tree.cpp scene/register_scene_types.cpp
msgid "Common"
-msgstr "СообщеÑтво"
+msgstr "Общий"
#: main/main.cpp
-#, fuzzy
msgid "Physics FPS"
-msgstr "Кадр физики %"
+msgstr "ФизичеÑкий FPS"
#: main/main.cpp
-#, fuzzy
msgid "Force FPS"
-msgstr "Принудительно отправить"
+msgstr "Принудительный FPS"
#: main/main.cpp
msgid "Enable Pause Aware Picking"
-msgstr ""
+msgstr "Включить выбор Ñ ÑƒÑ‡ÐµÑ‚Ð¾Ð¼ паузы"
#: main/main.cpp scene/gui/item_list.cpp scene/gui/popup_menu.cpp
#: scene/gui/scroll_container.cpp scene/gui/text_edit.cpp scene/gui/tree.cpp
#: scene/main/viewport.cpp scene/register_scene_types.cpp
msgid "GUI"
-msgstr ""
+msgstr "GUI"
#: main/main.cpp
msgid "Drop Mouse On GUI Input Disabled"
@@ -15778,228 +16012,204 @@ msgstr ""
#: main/main.cpp
msgid "stdout"
-msgstr ""
+msgstr "Стандартный вывод"
#: main/main.cpp
msgid "Print FPS"
-msgstr ""
+msgstr "Печатать FPS"
#: main/main.cpp
msgid "Verbose stdout"
-msgstr ""
+msgstr "Подробный Ñтандартный вывод"
#: main/main.cpp
#, fuzzy
-msgid "Frame Delay (msec)"
-msgstr "Кадрировать выбранное"
+msgid "Frame Delay Msec"
+msgstr "Задержка кадра (мÑ)"
#: main/main.cpp
msgid "Low Processor Mode"
-msgstr ""
+msgstr "Режим низкой нагрузки процеÑÑора"
#: main/main.cpp
msgid "Delta Sync After Draw"
-msgstr ""
+msgstr "Дельта-ÑÐ¸Ð½Ñ…Ñ€Ð¾Ð½Ð¸Ð·Ð°Ñ†Ð¸Ñ Ð¿Ð¾Ñле риÑованиÑ"
#: main/main.cpp
msgid "iOS"
-msgstr ""
+msgstr "iOS"
#: main/main.cpp
msgid "Hide Home Indicator"
-msgstr ""
+msgstr "Скрыть индикатор «Домой»"
#: main/main.cpp
-#, fuzzy
msgid "Input Devices"
-msgstr "Ð’Ñе уÑтройÑтва"
+msgstr "УÑтройÑтва ввода"
#: main/main.cpp
-#, fuzzy
msgid "Pointing"
-msgstr "Точка"
+msgstr "Указывающие"
#: main/main.cpp
msgid "Touch Delay"
-msgstr ""
+msgstr "Задержка каÑаниÑ"
#: main/main.cpp servers/visual_server.cpp
msgid "GLES3"
-msgstr ""
+msgstr "GLES3"
#: main/main.cpp servers/visual_server.cpp
-#, fuzzy
msgid "Shaders"
-msgstr "Шейдер"
+msgstr "Шейдеры"
#: main/main.cpp
-#, fuzzy
msgid "Debug Shader Fallbacks"
-msgstr "Принудительно уÑтановить резервные шейдеры"
+msgstr "Отладка резервных шейдеров"
#: main/main.cpp scene/3d/baked_lightmap.cpp scene/3d/camera.cpp
#: scene/3d/world_environment.cpp scene/main/scene_tree.cpp
#: scene/resources/world.cpp
-#, fuzzy
msgid "Environment"
msgstr "Окружение"
#: main/main.cpp
msgid "Default Clear Color"
-msgstr ""
+msgstr "ЧиÑтый цвет по умолчанию"
#: main/main.cpp
msgid "Boot Splash"
-msgstr ""
+msgstr "Ð—Ð°Ð³Ñ€ÑƒÐ·Ð¾Ñ‡Ð½Ð°Ñ Ð·Ð°Ñтавка"
#: main/main.cpp
-#, fuzzy
msgid "Show Image"
-msgstr "Показать коÑти"
+msgstr "Показать изображение"
#: main/main.cpp
msgid "Image"
-msgstr ""
+msgstr "Изображение"
#: main/main.cpp
msgid "Fullsize"
-msgstr ""
+msgstr "Полноразмерный"
#: main/main.cpp scene/resources/dynamic_font.cpp
-#, fuzzy
msgid "Use Filter"
-msgstr "Фильтр:"
+msgstr "ИÑпользовать фильтр"
#: main/main.cpp scene/resources/style_box.cpp
-#, fuzzy
msgid "BG Color"
-msgstr "Цвета"
+msgstr "Цвет фона"
#: main/main.cpp
-#, fuzzy
msgid "macOS Native Icon"
-msgstr "Задать иконку тайла"
+msgstr "Ð’ÑÑ‚Ñ€Ð¾ÐµÐ½Ð½Ð°Ñ Ð¸ÐºÐ¾Ð½ÐºÐ° macOS"
#: main/main.cpp
msgid "Windows Native Icon"
-msgstr ""
+msgstr "Ð’ÑÑ‚Ñ€Ð¾ÐµÐ½Ð½Ð°Ñ Ð¸ÐºÐ¾Ð½ÐºÐ° Windows"
#: main/main.cpp
msgid "Buffering"
-msgstr ""
+msgstr "БуферизациÑ"
#: main/main.cpp
msgid "Agile Event Flushing"
-msgstr ""
+msgstr "БыÑÑ‚Ñ€Ð°Ñ Ð¾Ñ‚Ð¿Ñ€Ð°Ð²ÐºÐ° Ñобытий"
#: main/main.cpp
msgid "Emulate Touch From Mouse"
-msgstr ""
+msgstr "Эмулировать ÑенÑорный ввод мышью"
#: main/main.cpp
msgid "Emulate Mouse From Touch"
-msgstr ""
+msgstr "Эмулировать мышь ÑенÑорным вводом"
#: main/main.cpp
-#, fuzzy
msgid "Mouse Cursor"
-msgstr "Кнопка мыши"
+msgstr "КурÑор мыши"
#: main/main.cpp
-#, fuzzy
msgid "Custom Image"
-msgstr "ПользовательÑкий узел"
+msgstr "ПользовательÑкое изображение"
#: main/main.cpp
msgid "Custom Image Hotspot"
-msgstr ""
+msgstr "ГорÑÑ‡Ð°Ñ Ñ‚Ð¾Ñ‡ÐºÐ° пользовательÑкого изображениÑ"
#: main/main.cpp
-#, fuzzy
msgid "Tooltip Position Offset"
-msgstr "ОтÑтуп поворота:"
-
-#: main/main.cpp modules/mono/editor/csharp_project.cpp
-#: modules/mono/mono_gd/gd_mono.cpp
-msgid "Mono"
-msgstr ""
+msgstr "Смещение позиции вÑплывающей подÑказки"
#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp
-#, fuzzy
msgid "Debugger Agent"
-msgstr "Отладчик"
+msgstr "Ðгент отладчика"
#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp
-#, fuzzy
msgid "Wait For Debugger"
-msgstr "Отладчик"
+msgstr "Ждать отладчик"
#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp
-#, fuzzy
msgid "Wait Timeout"
-msgstr "Ð’Ñ€ÐµÐ¼Ñ Ð¾Ð¶Ð¸Ð´Ð°Ð½Ð¸Ñ."
+msgstr "Ждать таймаут"
#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp
msgid "Args"
-msgstr ""
+msgstr "Ðргументы"
#: main/main.cpp
msgid "Runtime"
-msgstr ""
+msgstr "Среда выполнениÑ"
#: main/main.cpp
msgid "Unhandled Exception Policy"
-msgstr ""
+msgstr "Политика необработанных иÑключений"
#: main/main.cpp
-#, fuzzy
msgid "Main Loop Type"
-msgstr "Ðайти тип узла"
+msgstr "Тип оÑновного цикла"
#: main/main.cpp scene/gui/texture_progress.cpp
#: scene/gui/viewport_container.cpp
-#, fuzzy
msgid "Stretch"
-msgstr "Извлечь"
+msgstr "РаÑÑ‚Ñжение"
#: main/main.cpp
-#, fuzzy
msgid "Aspect"
-msgstr "ИнÑпектор"
+msgstr "Соотношение"
#: main/main.cpp
msgid "Shrink"
-msgstr ""
+msgstr "Сжатие"
#: main/main.cpp
msgid "Auto Accept Quit"
-msgstr ""
+msgstr "Ðвтоподтверждение выхода"
#: main/main.cpp
-#, fuzzy
msgid "Quit On Go Back"
-msgstr "Ðазад"
+msgstr "Выходить на Ðазад"
#: main/main.cpp scene/main/viewport.cpp
-#, fuzzy
msgid "Snap Controls To Pixels"
-msgstr "ПривÑзка к Ñторонам узла"
+msgstr "ПривÑзывать Ñлементы ÑƒÐ¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ðº пикÑелÑм"
#: main/main.cpp
msgid "Dynamic Fonts"
-msgstr ""
+msgstr "ДинамичеÑкие шрифты"
#: main/main.cpp
msgid "Use Oversampling"
msgstr ""
#: modules/bullet/register_types.cpp modules/bullet/space_bullet.cpp
+#, fuzzy
msgid "Active Soft World"
-msgstr ""
+msgstr "Ðктивный мÑгкий мир"
#: modules/csg/csg_gizmos.cpp
msgid "CSG"
-msgstr ""
+msgstr "CSG"
#: modules/csg/csg_gizmos.cpp
msgid "Change Cylinder Radius"
@@ -16018,41 +16228,35 @@ msgid "Change Torus Outer Radius"
msgstr "Изменение внешнего радиуÑа полукруга"
#: modules/csg/csg_shape.cpp
-#, fuzzy
msgid "Operation"
-msgstr "Параметры"
+msgstr "ОперациÑ"
#: modules/csg/csg_shape.cpp
msgid "Calculate Tangents"
-msgstr ""
+msgstr "ВычиÑлить каÑательные"
#: modules/csg/csg_shape.cpp
-#, fuzzy
msgid "Use Collision"
-msgstr "Столкновение"
+msgstr "ИÑпользовать Ñтолкновение"
#: modules/csg/csg_shape.cpp servers/physics_2d_server.cpp
-#, fuzzy
msgid "Collision Layer"
-msgstr "Режим ÑтолкновениÑ"
+msgstr "Слой ÑтолкновениÑ"
#: modules/csg/csg_shape.cpp scene/2d/ray_cast_2d.cpp scene/3d/camera.cpp
#: scene/3d/ray_cast.cpp scene/3d/spring_arm.cpp
#: scene/resources/navigation_mesh.cpp servers/physics_server.cpp
-#, fuzzy
msgid "Collision Mask"
-msgstr "Режим ÑтолкновениÑ"
+msgstr "МаÑка ÑтолкновениÑ"
#: modules/csg/csg_shape.cpp
-#, fuzzy
msgid "Invert Faces"
-msgstr "Преобразовать региÑтр"
+msgstr "Инвертировать грани"
#: modules/csg/csg_shape.cpp scene/2d/canvas_item.cpp scene/2d/particles_2d.cpp
#: scene/resources/primitive_meshes.cpp
-#, fuzzy
msgid "Material"
-msgstr "Материалов изменено:"
+msgstr "Материал"
#: modules/csg/csg_shape.cpp scene/2d/navigation_agent_2d.cpp
#: scene/2d/navigation_obstacle_2d.cpp scene/3d/navigation_agent.cpp
@@ -16062,58 +16266,51 @@ msgstr "Материалов изменено:"
#: scene/resources/cylinder_shape.cpp scene/resources/environment.cpp
#: scene/resources/navigation_mesh.cpp scene/resources/primitive_meshes.cpp
#: scene/resources/sphere_shape.cpp
-#, fuzzy
msgid "Radius"
-msgstr "РадиуÑ:"
+msgstr "РадиуÑ"
#: modules/csg/csg_shape.cpp scene/resources/primitive_meshes.cpp
-#, fuzzy
msgid "Radial Segments"
-msgstr "Ðргументы главной Ñцены:"
+msgstr "Радиальные Ñегменты"
#: modules/csg/csg_shape.cpp scene/resources/primitive_meshes.cpp
-#, fuzzy
msgid "Rings"
-msgstr "ПредупреждениÑ"
+msgstr "Кольца"
#: modules/csg/csg_shape.cpp
-#, fuzzy
msgid "Smooth Faces"
-msgstr "Сглаженный"
+msgstr "Сглаженные грани"
#: modules/csg/csg_shape.cpp
-#, fuzzy
msgid "Sides"
-msgstr "Отображение направлÑющих"
+msgstr "Стороны"
#: modules/csg/csg_shape.cpp
msgid "Cone"
-msgstr ""
+msgstr "КонуÑ"
#: modules/csg/csg_shape.cpp
-#, fuzzy
msgid "Inner Radius"
-msgstr "Изменение внутреннего радиуÑа полукруга"
+msgstr "Внутренний радиуÑ"
#: modules/csg/csg_shape.cpp
-#, fuzzy
msgid "Outer Radius"
-msgstr "Изменение внешнего радиуÑа полукруга"
+msgstr "Внешний радиуÑ"
#: modules/csg/csg_shape.cpp
msgid "Ring Sides"
-msgstr ""
+msgstr "Стороны кольца"
#: modules/csg/csg_shape.cpp scene/2d/collision_polygon_2d.cpp
#: scene/2d/light_occluder_2d.cpp scene/2d/polygon_2d.cpp
#: scene/3d/collision_polygon.cpp scene/resources/navigation_mesh.cpp
-#, fuzzy
msgid "Polygon"
-msgstr "Полигоны"
+msgstr "Полигон"
#: modules/csg/csg_shape.cpp
+#, fuzzy
msgid "Spin Degrees"
-msgstr ""
+msgstr "ГрадуÑÑ‹ вращениÑ"
#: modules/csg/csg_shape.cpp
msgid "Spin Sides"
@@ -16122,7 +16319,7 @@ msgstr ""
#: modules/csg/csg_shape.cpp
#, fuzzy
msgid "Path Node"
-msgstr "Ð’Ñтавить узлы"
+msgstr "Узел пути"
#: modules/csg/csg_shape.cpp
#, fuzzy
@@ -16140,7 +16337,7 @@ msgstr ""
#: modules/csg/csg_shape.cpp
#, fuzzy
msgid "Path Rotation"
-msgstr "Случайный поворот:"
+msgstr "Вращение пути"
#: modules/csg/csg_shape.cpp
#, fuzzy
@@ -16155,36 +16352,33 @@ msgstr "ÐепрерывнаÑ"
#: modules/csg/csg_shape.cpp
#, fuzzy
msgid "Path U Distance"
-msgstr "РаÑÑтоÑние выбора:"
+msgstr "РаÑÑтоÑние пути U"
#: modules/csg/csg_shape.cpp
#, fuzzy
msgid "Path Joined"
-msgstr "Случайный поворот:"
+msgstr "Путь приÑоединен"
#: modules/enet/networked_multiplayer_enet.cpp
-#, fuzzy
msgid "Compression Mode"
-msgstr "Режим ÑтолкновениÑ"
+msgstr "Режим ÑжатиÑ"
#: modules/enet/networked_multiplayer_enet.cpp
-#, fuzzy
msgid "Transfer Channel"
-msgstr "Изменение преобразованиÑ"
+msgstr "Канал передачи"
#: modules/enet/networked_multiplayer_enet.cpp
-#, fuzzy
msgid "Channel Count"
-msgstr "Добавить ÑкземплÑÑ€"
+msgstr "КоличеÑтво каналов"
#: modules/enet/networked_multiplayer_enet.cpp
-#, fuzzy
msgid "Always Ordered"
-msgstr "Ð’Ñегда отображать Ñетку"
+msgstr "Ð’Ñегда по порÑдку"
#: modules/enet/networked_multiplayer_enet.cpp
+#, fuzzy
msgid "Server Relay"
-msgstr ""
+msgstr "Релей Ñервера"
#: modules/enet/networked_multiplayer_enet.cpp
msgid "DTLS Verify"
@@ -16195,35 +16389,29 @@ msgid "DTLS Hostname"
msgstr ""
#: modules/enet/networked_multiplayer_enet.cpp
-#, fuzzy
msgid "Use DTLS"
-msgstr "ИÑпользовать привÑзки"
+msgstr "ИÑпользовать DTLS"
#: modules/gdnative/gdnative.cpp
-#, fuzzy
msgid "Config File"
-msgstr "Сохранение файла:"
+msgstr "Файл конфигурации"
#: modules/gdnative/gdnative.cpp
-#, fuzzy
msgid "Load Once"
-msgstr "Загрузить реÑурÑ"
+msgstr "Загрузить один раз"
#: modules/gdnative/gdnative.cpp
#: modules/visual_script/visual_script_func_nodes.cpp
-#, fuzzy
msgid "Singleton"
-msgstr "Скелет"
+msgstr "Синглтон"
#: modules/gdnative/gdnative.cpp
-#, fuzzy
msgid "Symbol Prefix"
-msgstr "ПрефикÑ:"
+msgstr "ÐŸÑ€ÐµÑ„Ð¸ÐºÑ Ñимвола"
#: modules/gdnative/gdnative.cpp
-#, fuzzy
msgid "Reloadable"
-msgstr "Перезагрузить"
+msgstr "Перезагружаемый"
#: modules/gdnative/gdnative.cpp
#: modules/gdnative/gdnative_library_singleton_editor.cpp
@@ -16280,19 +16468,16 @@ msgid "Libraries: "
msgstr "Библиотеки: "
#: modules/gdnative/nativescript/nativescript.cpp
-#, fuzzy
msgid "Class Name"
-msgstr "Ð˜Ð¼Ñ ÐºÐ»Ð°ÑÑа:"
+msgstr "Ð˜Ð¼Ñ ÐºÐ»Ð°ÑÑа"
#: modules/gdnative/nativescript/nativescript.cpp
-#, fuzzy
msgid "Script Class"
-msgstr "Ð˜Ð¼Ñ Ñкрипта:"
+msgstr "КлаÑÑ Ñкрипта"
#: modules/gdnative/nativescript/nativescript.cpp
-#, fuzzy
msgid "Icon Path"
-msgstr "ПеремеÑтить Ñ„Ð¾ÐºÑƒÑ Ð½Ð° Ñтроку пути"
+msgstr "Путь иконки"
#: modules/gdnative/register_types.cpp
msgid "GDNative"
@@ -16300,34 +16485,33 @@ msgstr "GDNative"
#: modules/gdscript/editor/gdscript_highlighter.cpp
#: modules/gdscript/gdscript.cpp
-#, fuzzy
msgid "GDScript"
-msgstr "Скрипт"
+msgstr "GDScript"
#: modules/gdscript/editor/gdscript_highlighter.cpp
msgid "Function Definition Color"
-msgstr ""
+msgstr "Цвет Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ð¸"
#: modules/gdscript/editor/gdscript_highlighter.cpp
-#, fuzzy
msgid "Node Path Color"
-msgstr "Копировать путь узла"
+msgstr "Цвет пути узла"
#: modules/gdscript/gdscript.cpp modules/visual_script/visual_script.cpp
+#, fuzzy
msgid "Max Call Stack"
-msgstr ""
+msgstr "МакÑимальный Ñтек вызовов"
#: modules/gdscript/gdscript.cpp
msgid "Treat Warnings As Errors"
-msgstr ""
+msgstr "РаÑÑматривать Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ñ ÐºÐ°Ðº ошибки"
#: modules/gdscript/gdscript.cpp
msgid "Exclude Addons"
-msgstr ""
+msgstr "ИÑÐºÐ»ÑŽÑ‡Ð°Ñ Ð´Ð¾Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ"
#: modules/gdscript/gdscript.cpp
msgid "Autocomplete Setters And Getters"
-msgstr ""
+msgstr "Ðвтодополнение Ñеттеров и геттеров"
#: modules/gdscript/gdscript_functions.cpp
msgid "Step argument is zero!"
@@ -16367,22 +16551,21 @@ msgid "Object can't provide a length."
msgstr "Объект не может предоÑтавить длину."
#: modules/gdscript/language_server/gdscript_language_server.cpp
-#, fuzzy
msgid "Language Server"
-msgstr "Язык:"
+msgstr "Языковой Ñервер"
#: modules/gdscript/language_server/gdscript_language_server.cpp
-#, fuzzy
msgid "Enable Smart Resolve"
-msgstr "Ðе удаётÑÑ Ñ€Ð°Ð·Ñ€ÐµÑˆÐ¸Ñ‚ÑŒ"
+msgstr "Включить интеллектуальное разрешение"
#: modules/gdscript/language_server/gdscript_language_server.cpp
+#, fuzzy
msgid "Show Native Symbols In Editor"
-msgstr ""
+msgstr "Показывать нативные Ñимволы в редакторе"
#: modules/gdscript/language_server/gdscript_language_server.cpp
msgid "Use Thread"
-msgstr ""
+msgstr "ИÑпользовать поток"
#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp
msgid "Export Mesh GLTF2"
@@ -16393,39 +16576,33 @@ msgid "Export GLTF..."
msgstr "ЭкÑпорт GLTF..."
#: modules/gltf/gltf_accessor.cpp
-#, fuzzy
msgid "Buffer View"
-msgstr "Вид Ñзади"
+msgstr "ПроÑмотр буфера"
#: modules/gltf/gltf_accessor.cpp modules/gltf/gltf_buffer_view.cpp
#, fuzzy
msgid "Byte Offset"
-msgstr "ОтÑтуп Ñетки:"
+msgstr "Смещение байтов"
#: modules/gltf/gltf_accessor.cpp
-#, fuzzy
msgid "Component Type"
-msgstr "Компоненты"
+msgstr "Тип компонента"
#: modules/gltf/gltf_accessor.cpp
-#, fuzzy
msgid "Normalized"
-msgstr "Формат"
+msgstr "Ðормализованный"
#: modules/gltf/gltf_accessor.cpp
-#, fuzzy
msgid "Count"
-msgstr "Величина:"
+msgstr "КоличеÑтво"
#: modules/gltf/gltf_accessor.cpp scene/resources/visual_shader_nodes.cpp
-#, fuzzy
msgid "Min"
-msgstr "МиБ"
+msgstr "Минимум"
#: modules/gltf/gltf_accessor.cpp scene/resources/visual_shader_nodes.cpp
-#, fuzzy
msgid "Max"
-msgstr "Сочетание"
+msgstr "МакÑимум"
#: modules/gltf/gltf_accessor.cpp
#, fuzzy
@@ -16443,7 +16620,7 @@ msgstr ""
#: modules/gltf/gltf_accessor.cpp
#, fuzzy
msgid "Sparse Indices Component Type"
-msgstr "Ðнализ геометрии..."
+msgstr "Тип компонента разреженных индекÑов"
#: modules/gltf/gltf_accessor.cpp
msgid "Sparse Values Buffer View"
@@ -16454,28 +16631,25 @@ msgid "Sparse Values Byte Offset"
msgstr ""
#: modules/gltf/gltf_buffer_view.cpp
-#, fuzzy
msgid "Buffer"
-msgstr "Вид Ñзади"
+msgstr "Буфер"
#: modules/gltf/gltf_buffer_view.cpp
-#, fuzzy
msgid "Byte Length"
-msgstr "Тема по умолчанию"
+msgstr "Длина байта"
#: modules/gltf/gltf_buffer_view.cpp
msgid "Byte Stride"
msgstr ""
#: modules/gltf/gltf_buffer_view.cpp
-#, fuzzy
msgid "Indices"
-msgstr "Ð’Ñе уÑтройÑтва"
+msgstr "ИндекÑÑ‹"
#: modules/gltf/gltf_camera.cpp
#, fuzzy
msgid "FOV Size"
-msgstr "Размер:"
+msgstr "Размер FOV"
#: modules/gltf/gltf_camera.cpp
msgid "Zfar"
@@ -16494,86 +16668,80 @@ msgstr "Линейный"
#: scene/resources/environment.cpp scene/resources/material.cpp
#: scene/resources/particles_material.cpp scene/resources/sky.cpp
#: scene/resources/style_box.cpp
-#, fuzzy
msgid "Color"
-msgstr "Цвета"
+msgstr "Цвет"
#: modules/gltf/gltf_light.cpp scene/3d/reflection_probe.cpp
#: scene/resources/environment.cpp
msgid "Intensity"
-msgstr ""
+msgstr "ИнтенÑивноÑть"
-#: modules/gltf/gltf_light.cpp scene/2d/light_2d.cpp
-#, fuzzy
+#: modules/gltf/gltf_light.cpp scene/2d/light_2d.cpp scene/3d/light.cpp
msgid "Range"
-msgstr "Изменить"
+msgstr "Диапазон"
#: modules/gltf/gltf_light.cpp
+#, fuzzy
msgid "Inner Cone Angle"
-msgstr ""
+msgstr "Угол внутреннего конуÑа"
#: modules/gltf/gltf_light.cpp
+#, fuzzy
msgid "Outer Cone Angle"
-msgstr ""
+msgstr "Угол внешнего конуÑа"
#: modules/gltf/gltf_mesh.cpp
#, fuzzy
msgid "Blend Weights"
-msgstr "Запекать карты оÑвещениÑ"
+msgstr "ВеÑа ÑмешиваниÑ"
#: modules/gltf/gltf_mesh.cpp
#, fuzzy
msgid "Instance Materials"
-msgstr "Материалов изменено:"
+msgstr "Материалы ÑкземплÑра"
#: modules/gltf/gltf_node.cpp
-#, fuzzy
msgid "Parent"
-msgstr "Переподчинить"
+msgstr "Родитель"
#: modules/gltf/gltf_node.cpp
#, fuzzy
msgid "Xform"
-msgstr "Платформа"
+msgstr "Xform"
#: modules/gltf/gltf_node.cpp scene/3d/mesh_instance.cpp
msgid "Skin"
-msgstr ""
+msgstr "Скин"
#: modules/gltf/gltf_node.cpp scene/3d/spatial.cpp
-#, fuzzy
msgid "Translation"
-msgstr "Переводы"
+msgstr "Смещение"
#: modules/gltf/gltf_node.cpp scene/2d/node_2d.cpp scene/2d/polygon_2d.cpp
#: scene/2d/remote_transform_2d.cpp scene/3d/remote_transform.cpp
#: scene/3d/spatial.cpp scene/gui/control.cpp scene/main/canvas_layer.cpp
-#, fuzzy
msgid "Rotation"
-msgstr "Шаг поворота:"
+msgstr "Поворот"
#: modules/gltf/gltf_node.cpp
-#, fuzzy
msgid "Children"
-msgstr "Редактируемые потомки"
+msgstr "Дети"
#: modules/gltf/gltf_skeleton.cpp modules/gltf/gltf_skin.cpp
-#, fuzzy
msgid "Joints"
-msgstr "Точка"
+msgstr "СуÑтавы"
#: modules/gltf/gltf_skeleton.cpp modules/gltf/gltf_skin.cpp
msgid "Roots"
-msgstr ""
+msgstr "Корни"
#: modules/gltf/gltf_skeleton.cpp modules/gltf/gltf_state.cpp
msgid "Unique Names"
-msgstr ""
+msgstr "Уникальные имена"
#: modules/gltf/gltf_skeleton.cpp
-#, fuzzy
msgid "Godot Bone Node"
-msgstr "Получить узел Ñцены"
+msgstr "Узел коÑти Godot"
#: modules/gltf/gltf_skin.cpp
#, fuzzy
@@ -16621,7 +16789,7 @@ msgstr ""
#: modules/gltf/gltf_spec_gloss.cpp
#, fuzzy
msgid "Specular Factor"
-msgstr "СкалÑрный оператор."
+msgstr "Зеркальный коÑффициент"
#: modules/gltf/gltf_spec_gloss.cpp
msgid "Spec Gloss Img"
@@ -16629,17 +16797,15 @@ msgstr ""
#: modules/gltf/gltf_state.cpp
msgid "Json"
-msgstr ""
+msgstr "Json"
#: modules/gltf/gltf_state.cpp
-#, fuzzy
msgid "Major Version"
-msgstr "ВерÑиÑ"
+msgstr "Ð¡Ñ‚Ð°Ñ€ÑˆÐ°Ñ Ð²ÐµÑ€ÑиÑ"
#: modules/gltf/gltf_state.cpp
-#, fuzzy
msgid "Minor Version"
-msgstr "ВерÑиÑ"
+msgstr "ÐœÐ»Ð°Ð´ÑˆÐ°Ñ Ð²ÐµÑ€ÑиÑ"
#: modules/gltf/gltf_state.cpp
#, fuzzy
@@ -16650,11 +16816,6 @@ msgstr "С данными"
msgid "Use Named Skin Binds"
msgstr ""
-#: modules/gltf/gltf_state.cpp scene/3d/physics_joint.cpp
-#, fuzzy
-msgid "Nodes"
-msgstr "Узел"
-
#: modules/gltf/gltf_state.cpp
#, fuzzy
msgid "Buffer Views"
@@ -16662,61 +16823,41 @@ msgstr "Вид Ñзади"
#: modules/gltf/gltf_state.cpp
msgid "Accessors"
-msgstr ""
+msgstr "ÐкÑеÑÑоры"
#: modules/gltf/gltf_state.cpp
-#, fuzzy
-msgid "Meshes"
-msgstr "Меш"
-
-#: modules/gltf/gltf_state.cpp
-#, fuzzy
-msgid "Materials"
-msgstr "Материалов изменено:"
-
-#: modules/gltf/gltf_state.cpp
-#, fuzzy
msgid "Scene Name"
-msgstr "Путь к Ñцене:"
+msgstr "Ð˜Ð¼Ñ Ñцены"
#: modules/gltf/gltf_state.cpp
-#, fuzzy
msgid "Root Nodes"
-msgstr "Ð˜Ð¼Ñ ÐºÐ¾Ñ€Ð½ÐµÐ²Ð¾Ð³Ð¾ узла"
+msgstr "Корневые узлы"
#: modules/gltf/gltf_state.cpp scene/2d/particles_2d.cpp
#: scene/gui/texture_button.cpp scene/gui/texture_progress.cpp
#: scene/resources/font.cpp
-#, fuzzy
msgid "Textures"
-msgstr "ВозможноÑти"
+msgstr "ТекÑтуры"
-#: modules/gltf/gltf_state.cpp
+#: modules/gltf/gltf_state.cpp platform/uwp/export/export.cpp
msgid "Images"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp
-msgid "Skins"
-msgstr ""
+msgstr "ИзображениÑ"
#: modules/gltf/gltf_state.cpp
msgid "Cameras"
-msgstr ""
+msgstr "Камеры"
#: modules/gltf/gltf_state.cpp servers/visual_server.cpp
-#, fuzzy
msgid "Lights"
-msgstr "Свет"
+msgstr "Света"
#: modules/gltf/gltf_state.cpp
-#, fuzzy
msgid "Unique Animation Names"
-msgstr "Ðовое Ð¸Ð¼Ñ Ð°Ð½Ð¸Ð¼Ð°Ñ†Ð¸Ð¸:"
+msgstr "Уникальные имена анимаций"
#: modules/gltf/gltf_state.cpp
-#, fuzzy
msgid "Skeletons"
-msgstr "Скелет"
+msgstr "Скелеты"
#: modules/gltf/gltf_state.cpp
#, fuzzy
@@ -16724,34 +16865,33 @@ msgid "Skeleton To Node"
msgstr "Выбрать узел"
#: modules/gltf/gltf_state.cpp scene/2d/animated_sprite.cpp
-#, fuzzy
msgid "Animations"
-msgstr "Ðнимации:"
+msgstr "Ðнимации"
#: modules/gltf/gltf_texture.cpp
-#, fuzzy
msgid "Src Image"
-msgstr "Показать коÑти"
+msgstr "ИÑточник изображениÑ"
#: modules/gridmap/grid_map.cpp
-#, fuzzy
-msgid "Physics Material"
-msgstr "Кадр физики %"
+msgid "Mesh Library"
+msgstr "Библиотека полиÑеток"
#: modules/gridmap/grid_map.cpp
-#, fuzzy
+msgid "Physics Material"
+msgstr "ФизичеÑкий материал"
+
+#: modules/gridmap/grid_map.cpp scene/3d/visual_instance.cpp
msgid "Use In Baked Light"
-msgstr "Запекать карты оÑвещениÑ"
+msgstr "ИÑпользовать в запечённом Ñвете"
#: modules/gridmap/grid_map.cpp scene/2d/tile_map.cpp
#: scene/resources/navigation_mesh.cpp
msgid "Cell"
-msgstr ""
+msgstr "Ячейка"
#: modules/gridmap/grid_map.cpp
-#, fuzzy
msgid "Octant Size"
-msgstr "Вид Ñпереди"
+msgstr "Размер октанта"
#: modules/gridmap/grid_map.cpp
#, fuzzy
@@ -16770,8 +16910,9 @@ msgstr "По центру"
#: modules/gridmap/grid_map.cpp scene/2d/collision_object_2d.cpp
#: scene/2d/tile_map.cpp scene/3d/collision_object.cpp scene/3d/soft_body.cpp
+#: scene/resources/material.cpp
msgid "Mask"
-msgstr ""
+msgstr "МаÑка"
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Next Plane"
@@ -16952,14 +17093,15 @@ msgid "Ultra Quality Ray Count"
msgstr ""
#: modules/minimp3/audio_stream_mp3.cpp
+#: modules/minimp3/resource_importer_mp3.cpp
#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp
-#, fuzzy
+#: modules/stb_vorbis/resource_importer_ogg_vorbis.cpp
msgid "Loop Offset"
-msgstr "ОтÑтуп:"
+msgstr "Смещение повтора"
#: modules/mobile_vr/mobile_vr_interface.cpp
msgid "Eye Height"
-msgstr ""
+msgstr "Ð’Ñ‹Ñота глаз"
#: modules/mobile_vr/mobile_vr_interface.cpp
msgid "IOD"
@@ -16968,7 +17110,7 @@ msgstr ""
#: modules/mobile_vr/mobile_vr_interface.cpp
#, fuzzy
msgid "Display Width"
-msgstr "Режим Ñетки"
+msgstr "Ширина диÑплеÑ"
#: modules/mobile_vr/mobile_vr_interface.cpp
#, fuzzy
@@ -16996,9 +17138,8 @@ msgid "Build Solution"
msgstr "Собрать решение"
#: modules/mono/editor/csharp_project.cpp
-#, fuzzy
msgid "Auto Update Project"
-msgstr "БезымÑнный проект"
+msgstr "Ðвтообновление проекта"
#: modules/mono/mono_gd/gd_mono_utils.cpp
msgid "End of inner exception stack trace"
@@ -17072,12 +17213,11 @@ msgstr "Сделано!"
#: modules/opensimplex/noise_texture.cpp
msgid "Seamless"
-msgstr ""
+msgstr "БеÑшовнаÑ"
#: modules/opensimplex/noise_texture.cpp
-#, fuzzy
msgid "As Normal Map"
-msgstr "Случайный размер:"
+msgstr "Как карта нормалей"
#: modules/opensimplex/noise_texture.cpp
msgid "Bump Strength"
@@ -17085,20 +17225,20 @@ msgstr ""
#: modules/opensimplex/noise_texture.cpp
msgid "Noise"
-msgstr ""
+msgstr "Шум"
#: modules/opensimplex/noise_texture.cpp
#, fuzzy
msgid "Noise Offset"
-msgstr "ОтÑтуп Ñетки:"
+msgstr "Смещение шума"
#: modules/opensimplex/open_simplex_noise.cpp
msgid "Octaves"
-msgstr ""
+msgstr "Октавы"
#: modules/opensimplex/open_simplex_noise.cpp
msgid "Period"
-msgstr ""
+msgstr "Период"
#: modules/opensimplex/open_simplex_noise.cpp
#, fuzzy
@@ -17111,17 +17251,15 @@ msgstr ""
#: modules/regex/regex.cpp
msgid "Subject"
-msgstr ""
+msgstr "Субъект"
#: modules/regex/regex.cpp
-#, fuzzy
msgid "Names"
-msgstr "Ðазвание"
+msgstr "Имена"
#: modules/regex/regex.cpp
-#, fuzzy
msgid "Strings"
-msgstr "Параметры:"
+msgstr "Строки"
#: modules/upnp/upnp.cpp
msgid "Discover Multicast If"
@@ -17136,14 +17274,12 @@ msgid "Discover IPv6"
msgstr ""
#: modules/upnp/upnp_device.cpp
-#, fuzzy
msgid "Description URL"
-msgstr "ОпиÑание"
+msgstr "URL опиÑаниÑ"
#: modules/upnp/upnp_device.cpp
-#, fuzzy
msgid "Service Type"
-msgstr "УÑтановить тип переменной"
+msgstr "Тип ÑервиÑа"
#: modules/upnp/upnp_device.cpp
msgid "IGD Control URL"
@@ -17164,9 +17300,8 @@ msgid "IGD Status"
msgstr "СтатуÑ"
#: modules/visual_script/visual_script.cpp scene/resources/visual_shader.cpp
-#, fuzzy
msgid "Default Input Values"
-msgstr "Изменить входное значение"
+msgstr "Входные Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ð¿Ð¾ умолчанию"
#: modules/visual_script/visual_script.cpp
msgid ""
@@ -17205,9 +17340,8 @@ msgid "Stack overflow with stack depth: "
msgstr "Переполнение Ñтека Ñ Ð³Ð»ÑƒÐ±Ð¸Ð½Ð¾Ð¹ Ñтека: "
#: modules/visual_script/visual_script.cpp
-#, fuzzy
msgid "Visual Script"
-msgstr "ИÑкать VisualScript"
+msgstr "Визуальный Ñкрипт"
#: modules/visual_script/visual_script_editor.cpp
msgid "Change Signal Arguments"
@@ -17537,14 +17671,12 @@ msgid "Return"
msgstr "Возврат"
#: modules/visual_script/visual_script_flow_control.cpp
-#, fuzzy
msgid "Return Enabled"
-msgstr "Ðктивный"
+msgstr "Возврат Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ð²ÐºÐ»ÑŽÑ‡Ñ‘Ð½"
#: modules/visual_script/visual_script_flow_control.cpp
-#, fuzzy
msgid "Return Type"
-msgstr "Возврат"
+msgstr "Тип возвращаемого значениÑ"
#: modules/visual_script/visual_script_flow_control.cpp
#: scene/resources/visual_shader_nodes.cpp
@@ -17592,9 +17724,8 @@ msgid "in order:"
msgstr "в порÑдке:"
#: modules/visual_script/visual_script_flow_control.cpp
-#, fuzzy
msgid "Steps"
-msgstr "Шаг"
+msgstr "Шаги"
#: modules/visual_script/visual_script_flow_control.cpp
msgid "Switch"
@@ -17614,9 +17745,8 @@ msgstr "%s иÑтинно?"
#: modules/visual_script/visual_script_flow_control.cpp
#: modules/visual_script/visual_script_func_nodes.cpp
-#, fuzzy
msgid "Base Script"
-msgstr "Ðовый Ñкрипт"
+msgstr "Базовый Ñкрипт"
#: modules/visual_script/visual_script_func_nodes.cpp
msgid "On %s"
@@ -17628,42 +17758,35 @@ msgstr "Ðа ÑебÑ"
#: modules/visual_script/visual_script_func_nodes.cpp
#: modules/visual_script/visual_script_yield_nodes.cpp
-#, fuzzy
msgid "Call Mode"
-msgstr "Режим маÑштабированиÑ"
+msgstr "Режим вызова"
#: modules/visual_script/visual_script_func_nodes.cpp
#: modules/visual_script/visual_script_nodes.cpp
-#, fuzzy
msgid "Basic Type"
msgstr "Базовый тип"
#: modules/visual_script/visual_script_func_nodes.cpp
#: modules/visual_script/visual_script_nodes.cpp
#: modules/visual_script/visual_script_yield_nodes.cpp
-#, fuzzy
msgid "Node Path"
-msgstr "Копировать путь узла"
+msgstr "Путь узла"
#: modules/visual_script/visual_script_func_nodes.cpp
-#, fuzzy
msgid "Argument Cache"
-msgstr "Изменить Ð¸Ð¼Ñ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð°"
+msgstr "КÑш аргументов"
#: modules/visual_script/visual_script_func_nodes.cpp
-#, fuzzy
msgid "Use Default Args"
-msgstr "СброÑить наÑтройки"
+msgstr "ИÑпользовать аргументы по умолчанию"
#: modules/visual_script/visual_script_func_nodes.cpp
-#, fuzzy
msgid "Validate"
-msgstr "ДопуÑтимые Ñимволы:"
+msgstr "ПроверÑть"
#: modules/visual_script/visual_script_func_nodes.cpp
-#, fuzzy
msgid "RPC Call Mode"
-msgstr "Режим маÑштабированиÑ"
+msgstr "Режим вызова RPC"
#: modules/visual_script/visual_script_func_nodes.cpp
msgid "Subtract %s"
@@ -17707,14 +17830,13 @@ msgid "Set Mode"
msgstr "Режим выделениÑ"
#: modules/visual_script/visual_script_func_nodes.cpp
-#, fuzzy
msgid "Type Cache"
-msgstr "Приведение типа"
+msgstr "Кеш типов"
#: modules/visual_script/visual_script_func_nodes.cpp
#, fuzzy
msgid "Assign Op"
-msgstr "Ðазначить"
+msgstr "Оператор приÑваиваниÑ"
#: modules/visual_script/visual_script_func_nodes.cpp
#: modules/visual_script/visual_script_nodes.cpp
@@ -17748,9 +17870,8 @@ msgstr "Создать маÑÑив"
#: modules/visual_script/visual_script_nodes.cpp
#: scene/resources/visual_shader_nodes.cpp
-#, fuzzy
msgid "Operator"
-msgstr "Итератор"
+msgstr "Оператор"
#: modules/visual_script/visual_script_nodes.cpp
msgid ": Invalid argument of type: "
@@ -17765,9 +17886,8 @@ msgid "a if cond, else b"
msgstr "a еÑли уÑловие, иначе b"
#: modules/visual_script/visual_script_nodes.cpp
-#, fuzzy
msgid "Var Name"
-msgstr "Ðазвание"
+msgstr "Ð˜Ð¼Ñ Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð¾Ð¹"
#: modules/visual_script/visual_script_nodes.cpp
msgid "VariableGet not found in script: "
@@ -17844,16 +17964,15 @@ msgstr "Подвызов"
#: modules/visual_script/visual_script_nodes.cpp scene/gui/graph_node.cpp
msgid "Title"
-msgstr ""
+msgstr "Заголовок"
#: modules/visual_script/visual_script_nodes.cpp
msgid "Construct %s"
msgstr "СоÑтавить %s"
#: modules/visual_script/visual_script_nodes.cpp
-#, fuzzy
msgid "Constructor"
-msgstr "СоÑтавить %s"
+msgstr "КонÑтруктор"
#: modules/visual_script/visual_script_nodes.cpp
msgid "Get Local Var"
@@ -17873,7 +17992,7 @@ msgstr "Разобрать %s"
#: modules/visual_script/visual_script_nodes.cpp
msgid "Elem Cache"
-msgstr ""
+msgstr "Кеш Ñлемента"
#: modules/visual_script/visual_script_property_selector.cpp
msgid "Search VisualScript"
@@ -17900,9 +18019,8 @@ msgid "%s sec(s)"
msgstr "%s Ñек"
#: modules/visual_script/visual_script_yield_nodes.cpp scene/main/timer.cpp
-#, fuzzy
msgid "Wait Time"
-msgstr "ПокраÑить тайл"
+msgstr "Ждать времÑ"
#: modules/visual_script/visual_script_yield_nodes.cpp
msgid "WaitSignal"
@@ -17917,9 +18035,8 @@ msgid "WaitInstanceSignal"
msgstr "Ждать Ñигнал объекта"
#: modules/webrtc/webrtc_data_channel.cpp
-#, fuzzy
msgid "Write Mode"
-msgstr "Режим приоритета"
+msgstr "Режим запиÑи"
#: modules/websocket/websocket_client.cpp
msgid "Verify SSL"
@@ -17934,38 +18051,35 @@ msgid "Bind IP"
msgstr ""
#: modules/websocket/websocket_server.cpp
-#, fuzzy
msgid "Private Key"
-msgstr "Путь к закрытому ключу SSH"
+msgstr "Закрытый ключ"
#: modules/websocket/websocket_server.cpp platform/javascript/export/export.cpp
msgid "SSL Certificate"
-msgstr ""
+msgstr "SSL-Ñертификат"
#: modules/websocket/websocket_server.cpp
-#, fuzzy
msgid "CA Chain"
-msgstr "ОчиÑтить цепь ИК"
+msgstr "Цепочка CA"
#: modules/websocket/websocket_server.cpp
-#, fuzzy
msgid "Handshake Timeout"
-msgstr "Ð’Ñ€ÐµÐ¼Ñ Ð¾Ð¶Ð¸Ð´Ð°Ð½Ð¸Ñ."
+msgstr "Таймаут рукопожатиÑ"
#: modules/webxr/webxr_interface.cpp
#, fuzzy
msgid "Session Mode"
-msgstr "Режим региона"
+msgstr "Режим ÑеÑÑии"
#: modules/webxr/webxr_interface.cpp
#, fuzzy
msgid "Required Features"
-msgstr "ОÑновные возможноÑти:"
+msgstr "Ðеобходимые функции"
#: modules/webxr/webxr_interface.cpp
#, fuzzy
msgid "Optional Features"
-msgstr "ОÑновные возможноÑти:"
+msgstr "Дополнительные функции"
#: modules/webxr/webxr_interface.cpp
msgid "Requested Reference Space Types"
@@ -17992,7 +18106,7 @@ msgstr ""
#: platform/android/export/export.cpp
#, fuzzy
msgid "Debug Keystore"
-msgstr "Отладчик"
+msgstr "Отладочное хранилище ключей"
#: platform/android/export/export.cpp
msgid "Debug Keystore User"
@@ -18035,6 +18149,195 @@ msgid "The package must have at least one '.' separator."
msgstr "Пакет должен иметь Ñ…Ð¾Ñ‚Ñ Ð±Ñ‹ один разделитель «.»."
#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Use Custom Build"
+msgstr "ИÑпользовать ÑобÑтвенную директорию данных пользователÑ"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Export Format"
+msgstr "Путь ÑкÑпорта"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Keystore"
+msgstr "Отладочное хранилище ключей"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Debug User"
+msgstr "Отладчик"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Debug Password"
+msgstr "Пароль"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Release User"
+msgstr "Релиз"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Release Password"
+msgstr "Пароль"
+
+#: platform/android/export/export_plugin.cpp
+msgid "One Click Deploy"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Clear Previous Install"
+msgstr "ОÑмотреть предыдущий ÑкземплÑÑ€"
+
+#: platform/android/export/export_plugin.cpp scene/resources/shader.cpp
+msgid "Code"
+msgstr "Код"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Min SDK"
+msgstr "Минимальный размер"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Target SDK"
+msgstr "Целевой FPS"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Package"
+msgstr "Упаковывание"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Unique Name"
+msgstr "Уникальные имена"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Signed"
+msgstr "Сигнал"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Classify As Game"
+msgstr "Ð˜Ð¼Ñ ÐºÐ»Ð°ÑÑа"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Retain Data On Uninstall"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Exclude From Recents"
+msgstr "Удалить узлы"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Graphics"
+msgstr "Смещение графа"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "OpenGL Debug"
+msgstr "Открыть"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "XR Features"
+msgstr "ВозможноÑти"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "XR Mode"
+msgstr "Режим оÑмотра"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Hand Tracking"
+msgstr "Упаковывание"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Hand Tracking Frequency"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Passthrough"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Immersive Mode"
+msgstr "Режим запиÑи"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Support Small"
+msgstr "Поддержка"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Support Normal"
+msgstr "Поддержка"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Support Large"
+msgstr "Поддержка"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Support Xlarge"
+msgstr "Поддержка"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "User Data Backup"
+msgstr "ПользовательÑкий интерфейÑ"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Allow"
+msgstr "Разрешено"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Command Line"
+msgstr "Command"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Extra Args"
+msgstr "Дополнительные параметры вызова:"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "APK Expansion"
+msgstr "Выражение"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Salt"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Public Key"
+msgstr "Путь к открытому ключу SSH"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Permissions"
+msgstr "МаÑка излучениÑ"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Custom Permissions"
+msgstr "ЗапуÑтить произвольную Ñцену"
+
+#: platform/android/export/export_plugin.cpp
msgid "Select device from the list"
msgstr "Выберите уÑтройÑтво из ÑпиÑка"
@@ -18365,6 +18668,178 @@ msgid "The character '%s' is not allowed in Identifier."
msgstr "Символ «%s» в идентификаторе не допуÑкаетÑÑ."
#: platform/iphone/export/export.cpp
+msgid "App Store Team ID"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Provisioning Profile UUID Debug"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Code Sign Identity Debug"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Export Method Debug"
+msgstr "ЭкÑпорт в режиме отладки"
+
+#: platform/iphone/export/export.cpp
+msgid "Provisioning Profile UUID Release"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Code Sign Identity Release"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Export Method Release"
+msgstr "Режим ÑкÑпортированиÑ:"
+
+#: platform/iphone/export/export.cpp
+msgid "Targeted Device Family"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Info"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Identifier"
+msgstr "Ðеверный идентификатор:"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Signature"
+msgstr "Сигнал"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Short Version"
+msgstr "Ð¡Ñ‚Ð°Ñ€ÑˆÐ°Ñ Ð²ÐµÑ€ÑиÑ"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Copyright"
+msgstr "Справа вверху"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Capabilities"
+msgstr "Капитализировать ÑвойÑтва"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Access Wi-Fi"
+msgstr "ДоÑтуп"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Push Notifications"
+msgstr "Вращение пути"
+
+#: platform/iphone/export/export.cpp scene/3d/baked_lightmap.cpp
+#, fuzzy
+msgid "User Data"
+msgstr "ПользовательÑкий интерфейÑ"
+
+#: platform/iphone/export/export.cpp
+msgid "Accessible From Files App"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Accessible From Itunes Sharing"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Privacy"
+msgstr "Закрытый ключ"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Camera Usage Description"
+msgstr "ОпиÑание"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Microphone Usage Description"
+msgstr "ОпиÑÐ°Ð½Ð¸Ñ ÑвойÑтв"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Photolibrary Usage Description"
+msgstr "ОпиÑÐ°Ð½Ð¸Ñ ÑвойÑтв"
+
+#: platform/iphone/export/export.cpp
+msgid "iPhone 120 X 120"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPhone 180 X 180"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 76 X 76"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 152 X 152"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 167 X 167"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "App Store 1024 X 1024"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Spotlight 40 X 40"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Spotlight 80 X 80"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Storyboard"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Use Launch Screen Storyboard"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Image Scale Mode"
+msgstr "Режим маÑштабированиÑ"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Custom Image @2x"
+msgstr "ПользовательÑкое изображение"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Custom Image @3x"
+msgstr "ПользовательÑкое изображение"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Use Custom BG Color"
+msgstr "ПользовательÑкий цвет"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Custom BG Color"
+msgstr "ПользовательÑкий цвет"
+
+#: platform/iphone/export/export.cpp
msgid "App Store Team ID not specified - cannot configure the project."
msgstr "App Store Team ID не указан - невозможно наÑтроить проект."
@@ -18401,6 +18876,80 @@ msgid "Could not read file:"
msgstr "Ðе удалоÑÑŒ прочитать файл:"
#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Variant"
+msgstr "Ð’Ð°Ñ€Ð¸Ð°Ñ†Ð¸Ñ Ð¾Ñ‚Ñ‚ÐµÐ½ÐºÐ°"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Export Type"
+msgstr "ЭкÑпорт"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "VRAM Texture Compression"
+msgstr "Выражение"
+
+#: platform/javascript/export/export.cpp
+msgid "For Desktop"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "For Mobile"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Html"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Export Icon"
+msgstr "Развернуть вÑе"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Custom Html Shell"
+msgstr "ПользовательÑкий узел"
+
+#: platform/javascript/export/export.cpp
+msgid "Head Include"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Canvas Resize Policy"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Focus Canvas On Start"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Experimental Virtual Keyboard"
+msgstr "Фильтр Ñигналов"
+
+#: platform/javascript/export/export.cpp
+msgid "Progressive Web App"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Offline Page"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 144 X 144"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 180 X 180"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 512 X 512"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
msgid "Could not read HTML shell:"
msgstr "Ðе удалоÑÑŒ прочитать HTML-оболочку:"
@@ -18413,25 +18962,25 @@ msgid "Error starting HTTP server:"
msgstr "Ошибка запуÑка HTTP-Ñервера:"
#: platform/javascript/export/export.cpp
+#, fuzzy
msgid "Web"
-msgstr ""
+msgstr "Web"
#: platform/javascript/export/export.cpp
msgid "HTTP Host"
-msgstr ""
+msgstr "HTTP-хоÑÑ‚"
#: platform/javascript/export/export.cpp
msgid "HTTP Port"
-msgstr ""
+msgstr "HTTP-порт"
#: platform/javascript/export/export.cpp
-#, fuzzy
msgid "Use SSL"
-msgstr "ИÑпользовать привÑзки"
+msgstr "ИÑпользовать SSL"
#: platform/javascript/export/export.cpp
msgid "SSL Key"
-msgstr ""
+msgstr "SSL-ключ"
#: platform/osx/export/codesign.cpp
msgid "Can't get filesystem access."
@@ -18506,6 +19055,203 @@ msgid "Unknown object type."
msgstr "ÐеизвеÑтный тип объекта."
#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "App Category"
+msgstr "КатегориÑ:"
+
+#: platform/osx/export/export.cpp
+msgid "High Res"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Location Usage Description"
+msgstr "ОпиÑание"
+
+#: platform/osx/export/export.cpp
+msgid "Address Book Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Calendar Usage Description"
+msgstr "ОпиÑание"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Photos Library Usage Description"
+msgstr "ОпиÑÐ°Ð½Ð¸Ñ ÑвойÑтв"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Desktop Folder Usage Description"
+msgstr "ОпиÑÐ°Ð½Ð¸Ñ Ð¼ÐµÑ‚Ð¾Ð´Ð¾Ð²"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Documents Folder Usage Description"
+msgstr "ОпиÑÐ°Ð½Ð¸Ñ Ð¼ÐµÑ‚Ð¾Ð´Ð¾Ð²"
+
+#: platform/osx/export/export.cpp
+msgid "Downloads Folder Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Network Volumes Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Removable Volumes Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#, fuzzy
+msgid "Codesign"
+msgstr "ПодпиÑÑŒ кода DMG"
+
+#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Identity"
+msgstr "ОтÑтуп"
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#, fuzzy
+msgid "Timestamp"
+msgstr "ВремÑ"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Hardened Runtime"
+msgstr "Среда выполнениÑ"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Replace Existing Signature"
+msgstr "Заменить в файлах"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Entitlements"
+msgstr "Гизмо"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Custom File"
+msgstr "ПользовательÑкий шрифт"
+
+#: platform/osx/export/export.cpp
+msgid "Allow JIT Code Execution"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Allow Unsigned Executable Memory"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Allow Dyld Environment Variables"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Disable Library Validation"
+msgstr "Ð—Ð°Ð±Ð»Ð¾ÐºÐ¸Ñ€Ð¾Ð²Ð°Ð½Ð½Ð°Ñ ÐºÐ½Ð¾Ð¿ÐºÐ°"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Audio Input"
+msgstr "Добавить вход"
+
+#: platform/osx/export/export.cpp
+msgid "Address Book"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Calendars"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Photos Library"
+msgstr "ЭкÑпортировать библиотеку"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Apple Events"
+msgstr "Добавить Ñобытие"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Debugging"
+msgstr "Отладка"
+
+#: platform/osx/export/export.cpp
+msgid "App Sandbox"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Network Server"
+msgstr "Сетевой узел"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Network Client"
+msgstr "Сетевой узел"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Device Usb"
+msgstr "УÑтройÑтво"
+
+#: platform/osx/export/export.cpp
+msgid "Device Bluetooth"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Files Downloads"
+msgstr "Загрузка"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Files Pictures"
+msgstr "ВозможноÑти"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Files Music"
+msgstr "Файлы"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Files Movies"
+msgstr "Фильтр тайлов"
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#, fuzzy
+msgid "Custom Options"
+msgstr "Параметры шины"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Notarization"
+msgstr "ЛокализациÑ"
+
+#: platform/osx/export/export.cpp
+msgid "Apple ID Name"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Apple ID Password"
+msgstr "Пароль"
+
+#: platform/osx/export/export.cpp
+msgid "Apple Team ID"
+msgstr ""
+
+#: platform/osx/export/export.cpp
msgid ""
"Note: The notarization process generally takes less than an hour. When the "
"process is completed, you'll receive an email."
@@ -18730,13 +19476,143 @@ msgstr ""
#: platform/osx/export/export.cpp
msgid "macOS"
-msgstr ""
+msgstr "macOS"
#: platform/osx/export/export.cpp
msgid "Force Builtin Codesign"
msgstr ""
#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Architecture"
+msgstr "Добавить поле архитектуры"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Display Name"
+msgstr "МаÑштаб отображениÑ"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Short Name"
+msgstr "Ð˜Ð¼Ñ Ñкрипта:"
+
+#: platform/uwp/export/export.cpp
+msgid "Publisher"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Publisher Display Name"
+msgstr "Ðеверное Ð¸Ð¼Ñ Ð¸Ð·Ð´Ð°Ñ‚ÐµÐ»Ñ Ð¿Ð°ÐºÐµÑ‚Ð°."
+
+#: platform/uwp/export/export.cpp
+msgid "Product Guid"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Publisher Guid"
+msgstr "ОчиÑтить направлÑющие"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Signing"
+msgstr "Сигнал"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Certificate"
+msgstr "Сертификаты"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Algorithm"
+msgstr "Отладчик"
+
+#: platform/uwp/export/export.cpp
+msgid "Major"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Minor"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Build"
+msgstr "Режим измерениÑ"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Revision"
+msgstr "Выражение"
+
+#: platform/uwp/export/export.cpp
+msgid "Landscape"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Portrait"
+msgstr "Порт"
+
+#: platform/uwp/export/export.cpp
+msgid "Landscape Flipped"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Portrait Flipped"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Store Logo"
+msgstr "Режим маÑштабированиÑ"
+
+#: platform/uwp/export/export.cpp
+msgid "Square 44 X 44 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 71 X 71 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 150 X 150 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 310 X 310 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Wide 310 X 150 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Splash Screen"
+msgstr "РиÑовать Ñкран"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Tiles"
+msgstr "Файлы"
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Square 150 X 150"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Wide 310 X 150"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Square 310 X 310"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
msgid "Invalid package short name."
msgstr "ÐедопуÑтимое короткое Ð¸Ð¼Ñ Ð¿Ð°ÐºÐµÑ‚Ð°."
@@ -18790,7 +19666,7 @@ msgstr "Ðеверные размеры заÑтавки (должны быть
#: platform/uwp/export/export.cpp
msgid "UWP"
-msgstr ""
+msgstr "UWP"
#: platform/uwp/export/export.cpp platform/windows/export/export.cpp
#, fuzzy
@@ -18803,15 +19679,52 @@ msgstr ""
#: platform/uwp/export/export.cpp
#, fuzzy
-msgid "Debug Password"
-msgstr "Пароль"
+msgid "Debug Algorithm"
+msgstr "Отладчик"
-#: platform/uwp/export/export.cpp
+#: platform/windows/export/export.cpp
+msgid "Identity Type"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Timestamp Server URL"
+msgstr ""
+
+#: platform/windows/export/export.cpp
#, fuzzy
-msgid "Debug Algorithm"
+msgid "Digest Algorithm"
msgstr "Отладчик"
#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "File Version"
+msgstr "ВерÑиÑ"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Product Version"
+msgstr "ÐедопуÑÑ‚Ð¸Ð¼Ð°Ñ Ð²ÐµÑ€ÑÐ¸Ñ Ð¿Ñ€Ð¾Ð´ÑƒÐºÑ‚Ð°:"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Company Name"
+msgstr "Ð˜Ð¼Ñ ÐºÐ¾Ñти"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Product Name"
+msgstr "Ðазвание проекта:"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "File Description"
+msgstr "ОпиÑание"
+
+#: platform/windows/export/export.cpp
+msgid "Trademarks"
+msgstr ""
+
+#: platform/windows/export/export.cpp
msgid ""
"The rcedit tool must be configured in the Editor Settings (Export > Windows "
"> Rcedit) to change the icon or app information data."
@@ -18832,13 +19745,12 @@ msgid "Invalid product version:"
msgstr "ÐедопуÑÑ‚Ð¸Ð¼Ð°Ñ Ð²ÐµÑ€ÑÐ¸Ñ Ð¿Ñ€Ð¾Ð´ÑƒÐºÑ‚Ð°:"
#: platform/windows/export/export.cpp
-#, fuzzy
msgid "Windows"
-msgstr "Ðовое окно"
+msgstr "Windows"
#: platform/windows/export/export.cpp
msgid "Rcedit"
-msgstr ""
+msgstr "Rcedit"
#: platform/windows/export/export.cpp
msgid "Osslsigncode"
@@ -18846,13 +19758,12 @@ msgstr ""
#: platform/windows/export/export.cpp
msgid "Wine"
-msgstr ""
+msgstr "Wine"
#: scene/2d/animated_sprite.cpp scene/3d/sprite_3d.cpp
#: scene/resources/texture.cpp
-#, fuzzy
msgid "Frames"
-msgstr "Кадр %"
+msgstr "Кадры"
#: scene/2d/animated_sprite.cpp
msgid ""
@@ -18863,38 +19774,35 @@ msgstr ""
"или задан в ÑвойÑтве «Frames»."
#: scene/2d/animated_sprite.cpp scene/2d/sprite.cpp scene/3d/sprite_3d.cpp
-#, fuzzy
msgid "Frame"
-msgstr "Кадр %"
+msgstr "Кадр"
#: scene/2d/animated_sprite.cpp scene/2d/cpu_particles_2d.cpp
#: scene/2d/particles_2d.cpp scene/3d/cpu_particles.cpp scene/3d/particles.cpp
-#, fuzzy
msgid "Speed Scale"
-msgstr "МаÑштабировать"
+msgstr "МаÑштаб ÑкороÑти"
#: scene/2d/animated_sprite.cpp scene/2d/audio_stream_player_2d.cpp
#: scene/3d/audio_stream_player_3d.cpp scene/3d/sprite_3d.cpp
#: scene/audio/audio_stream_player.cpp
-#, fuzzy
msgid "Playing"
-msgstr "ЗапуÑтить"
+msgstr "ПроигрываетÑÑ"
#: scene/2d/animated_sprite.cpp scene/2d/sprite.cpp scene/3d/sprite_3d.cpp
-#, fuzzy
msgid "Centered"
-msgstr "По центру"
+msgstr "Центрированный"
-#: scene/2d/animated_sprite.cpp scene/2d/camera_2d.cpp scene/2d/light_2d.cpp
+#: scene/2d/animated_sprite.cpp scene/2d/camera_2d.cpp
+#: scene/2d/cpu_particles_2d.cpp scene/2d/light_2d.cpp
#: scene/2d/parallax_background.cpp scene/2d/parallax_layer.cpp
#: scene/2d/path_2d.cpp scene/2d/polygon_2d.cpp scene/2d/sprite.cpp
-#: scene/3d/path.cpp scene/3d/physics_body.cpp scene/3d/sprite_3d.cpp
-#: scene/gui/graph_node.cpp scene/gui/rich_text_effect.cpp
-#: scene/main/canvas_layer.cpp scene/resources/material.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/path.cpp scene/3d/physics_body.cpp
+#: scene/3d/sprite_3d.cpp scene/gui/graph_node.cpp
+#: scene/gui/rich_text_effect.cpp scene/main/canvas_layer.cpp
+#: scene/resources/material.cpp scene/resources/particles_material.cpp
#: scene/resources/style_box.cpp
-#, fuzzy
msgid "Offset"
-msgstr "ОтÑтуп:"
+msgstr "Смещение"
#: scene/2d/animated_sprite.cpp scene/2d/sprite.cpp scene/3d/sprite_3d.cpp
#: scene/gui/texture_button.cpp scene/gui/texture_rect.cpp
@@ -18965,11 +19873,6 @@ msgstr "Добавить аудио шину"
msgid "Override"
msgstr "Переопределить"
-#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
-#: scene/audio/audio_stream_player.cpp scene/gui/video_player.cpp
-msgid "Stream"
-msgstr ""
-
#: scene/2d/audio_stream_player_2d.cpp scene/audio/audio_stream_player.cpp
#: scene/gui/video_player.cpp servers/audio/effects/audio_effect_amplify.cpp
#, fuzzy
@@ -18996,46 +19899,41 @@ msgid "Stream Paused"
msgstr ""
#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
-#: scene/3d/reflection_probe.cpp scene/3d/visual_instance.cpp
-#: scene/resources/material.cpp
-#, fuzzy
+#: scene/3d/light.cpp scene/3d/reflection_probe.cpp
+#: scene/3d/visual_instance.cpp scene/resources/material.cpp
msgid "Max Distance"
-msgstr "РаÑÑтоÑние выбора:"
+msgstr "МакÑимальное раÑÑтоÑние"
-#: scene/2d/audio_stream_player_2d.cpp
+#: scene/2d/audio_stream_player_2d.cpp scene/3d/light.cpp
#, fuzzy
msgid "Attenuation"
msgstr "ÐнимациÑ"
#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
#: scene/audio/audio_stream_player.cpp scene/gui/video_player.cpp
-#, fuzzy
msgid "Bus"
-msgstr "Добавить"
+msgstr "Шина"
#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
msgid "Area Mask"
-msgstr ""
+msgstr "МаÑка облаÑти"
#: scene/2d/back_buffer_copy.cpp
-#, fuzzy
msgid "Copy Mode"
-msgstr "Копировать узлы"
+msgstr "Режим копированиÑ"
#: scene/2d/camera_2d.cpp
-#, fuzzy
msgid "Anchor Mode"
-msgstr "Режим иконки"
+msgstr "Режим Ñкорей"
#: scene/2d/camera_2d.cpp
#, fuzzy
msgid "Rotating"
-msgstr "Шаг поворота:"
+msgstr "ВращающийÑÑ"
#: scene/2d/camera_2d.cpp scene/3d/camera.cpp
-#, fuzzy
msgid "Current"
-msgstr "Выбранный:"
+msgstr "ТекущаÑ"
#: scene/2d/camera_2d.cpp scene/gui/graph_edit.cpp
#, fuzzy
@@ -19056,7 +19954,25 @@ msgstr "Режим перемещениÑ"
#: scene/2d/camera_2d.cpp
msgid "Limit"
-msgstr ""
+msgstr "Лимит"
+
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/style_box.cpp
+#, fuzzy
+msgid "Left"
+msgstr "UI Влево"
+
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/style_box.cpp
+#, fuzzy
+msgid "Right"
+msgstr "Свет"
+
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/dynamic_font.cpp scene/resources/style_box.cpp
+#, fuzzy
+msgid "Bottom"
+msgstr "Слева внизу"
#: scene/2d/camera_2d.cpp
#, fuzzy
@@ -19085,12 +20001,11 @@ msgstr "Сглаженный"
#: scene/2d/camera_2d.cpp
msgid "H"
-msgstr ""
+msgstr "Г"
#: scene/2d/camera_2d.cpp
-#, fuzzy
msgid "V"
-msgstr "UV"
+msgstr "Ð’"
#: scene/2d/camera_2d.cpp
#, fuzzy
@@ -19100,12 +20015,12 @@ msgstr "Задать отÑтуп"
#: scene/2d/camera_2d.cpp
#, fuzzy
msgid "Draw Screen"
-msgstr "Вызовов отриÑовки:"
+msgstr "РиÑовать Ñкран"
#: scene/2d/camera_2d.cpp
#, fuzzy
msgid "Draw Limits"
-msgstr "Вызовов отриÑовки:"
+msgstr "РиÑовать лимиты"
#: scene/2d/camera_2d.cpp
#, fuzzy
@@ -19142,21 +20057,18 @@ msgid "Particles Anim Loop"
msgstr "ЧаÑтицы"
#: scene/2d/canvas_item.cpp scene/3d/spatial.cpp
-#, fuzzy
msgid "Visibility"
-msgstr "Переключить видимоÑть"
+msgstr "ВидимоÑть"
#: scene/2d/canvas_item.cpp scene/3d/spatial.cpp scene/gui/progress_bar.cpp
#: scene/gui/rich_text_effect.cpp scene/main/canvas_layer.cpp
-#, fuzzy
msgid "Visible"
-msgstr "Переключить видимоÑть"
+msgstr "Видимый"
#: scene/2d/canvas_item.cpp scene/3d/sprite_3d.cpp
#: scene/resources/style_box.cpp
-#, fuzzy
msgid "Modulate"
-msgstr "Заполнить"
+msgstr "МодулÑциÑ"
#: scene/2d/canvas_item.cpp
#, fuzzy
@@ -19174,9 +20086,8 @@ msgstr "Отображать центр"
#: scene/2d/canvas_item.cpp scene/2d/light_occluder_2d.cpp
#: scene/2d/tile_map.cpp
-#, fuzzy
msgid "Light Mask"
-msgstr "Запекание LightMap"
+msgstr "МаÑка Ñвета"
#: scene/2d/canvas_item.cpp
msgid "Use Parent Material"
@@ -19184,7 +20095,7 @@ msgstr ""
#: scene/2d/canvas_item.cpp
msgid "Toplevel"
-msgstr ""
+msgstr "Верхний уровень"
#: scene/2d/canvas_modulate.cpp
msgid ""
@@ -19206,9 +20117,8 @@ msgstr ""
"чтобы определить ее форму."
#: scene/2d/collision_object_2d.cpp
-#, fuzzy
msgid "Pickable"
-msgstr "Выбрать тайл"
+msgstr "Выбираемый"
#: scene/2d/collision_polygon_2d.cpp
msgid ""
@@ -19244,14 +20154,12 @@ msgstr "Режим измерениÑ"
#: scene/3d/collision_polygon.cpp scene/3d/collision_shape.cpp
#: scene/animation/animation_node_state_machine.cpp scene/gui/base_button.cpp
#: scene/gui/texture_button.cpp
-#, fuzzy
msgid "Disabled"
-msgstr "Отключённый Ñлемент"
+msgstr "Отключённый"
#: scene/2d/collision_polygon_2d.cpp scene/2d/collision_shape_2d.cpp
-#, fuzzy
msgid "One Way Collision"
-msgstr "Создать полигон Ñтолкновений"
+msgstr "ОдноÑтороннее Ñтолкновение"
#: scene/2d/collision_polygon_2d.cpp scene/2d/collision_shape_2d.cpp
#, fuzzy
@@ -19296,33 +20204,23 @@ msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp
#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
-#, fuzzy
msgid "Emitting"
-msgstr "Параметры:"
-
-#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp scene/3d/area.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
-#: scene/resources/environment.cpp
-#, fuzzy
-msgid "Amount"
-msgstr "Величина:"
+msgstr "Излучающий"
#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp
#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
msgid "Lifetime"
-msgstr ""
+msgstr "Ð’Ñ€ÐµÐ¼Ñ Ð¶Ð¸Ð·Ð½Ð¸"
#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp
#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp scene/main/timer.cpp
-#, fuzzy
msgid "One Shot"
-msgstr "OneShot узел"
+msgstr "Одноразовый"
#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp
#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
-#, fuzzy
msgid "Preprocess"
-msgstr "ПоÑтобработка"
+msgstr "Предобработка"
#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp
#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
@@ -19331,9 +20229,8 @@ msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp
#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
-#, fuzzy
msgid "Randomness"
-msgstr "СлучайноÑть реÑтарта (Ñек.):"
+msgstr "СлучайноÑть"
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
@@ -19371,29 +20268,21 @@ msgstr ""
#: scene/2d/mesh_instance_2d.cpp scene/2d/multimesh_instance_2d.cpp
#: scene/2d/particles_2d.cpp scene/2d/polygon_2d.cpp scene/2d/sprite.cpp
#: scene/3d/sprite_3d.cpp scene/gui/nine_patch_rect.cpp
-#: scene/gui/texture_rect.cpp scene/resources/sky.cpp
-#: scene/resources/style_box.cpp scene/resources/visual_shader_nodes.cpp
-#, fuzzy
+#: scene/gui/texture_rect.cpp scene/resources/material.cpp
+#: scene/resources/sky.cpp scene/resources/style_box.cpp
+#: scene/resources/visual_shader_nodes.cpp
msgid "Texture"
-msgstr "ТекÑтовый"
-
-#: scene/2d/cpu_particles_2d.cpp scene/2d/mesh_instance_2d.cpp
-#: scene/2d/multimesh_instance_2d.cpp scene/2d/particles_2d.cpp
-#: scene/2d/sprite.cpp scene/resources/style_box.cpp
-msgid "Normal Map"
-msgstr ""
+msgstr "ТекÑтура"
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
-#, fuzzy
msgid "Emission Shape"
-msgstr "МаÑка излучениÑ"
+msgstr "Форма излучениÑ"
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
-#, fuzzy
msgid "Sphere Radius"
-msgstr "ИÑточник излучениÑ: "
+msgstr "Ð Ð°Ð´Ð¸ÑƒÑ Ñферы"
#: scene/2d/cpu_particles_2d.cpp
#, fuzzy
@@ -19406,72 +20295,133 @@ msgid "Normals"
msgstr "Формат"
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/3d/sprite_3d.cpp scene/resources/material.cpp
-#: scene/resources/particles_material.cpp scene/resources/texture.cpp
-msgid "Flags"
-msgstr ""
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Align Y"
+msgstr "Оператор приÑваиваниÑ"
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
-#, fuzzy
msgid "Direction"
-msgstr "ÐаправлениÑ"
+msgstr "Ðаправление"
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
#: servers/audio/effects/audio_effect_reverb.cpp
msgid "Spread"
-msgstr ""
+msgstr "РазброÑ"
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
-#, fuzzy
msgid "Initial Velocity"
-msgstr "Инициализировать"
+msgstr "ÐÐ°Ñ‡Ð°Ð»ÑŒÐ½Ð°Ñ ÑкороÑть"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Velocity Random"
+msgstr "СкороÑть"
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp servers/physics_2d_server.cpp
#: servers/physics_server.cpp
msgid "Angular Velocity"
-msgstr ""
+msgstr "Ð£Ð³Ð»Ð¾Ð²Ð°Ñ ÑкороÑть"
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
#, fuzzy
+msgid "Velocity Curve"
+msgstr "СкороÑть"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
msgid "Orbit Velocity"
-msgstr "Вид Ñ Ð¾Ñ€Ð±Ð¸Ñ‚Ñ‹ вправо"
+msgstr "ÐžÑ€Ð±Ð¸Ñ‚Ð°Ð»ÑŒÐ½Ð°Ñ ÑкороÑть"
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
-#, fuzzy
msgid "Linear Accel"
-msgstr "Линейный"
+msgstr "Линейное уÑкорение"
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
-msgid "Radial Accel"
+#, fuzzy
+msgid "Accel"
+msgstr "ДоÑтуп"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Accel Random"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Accel Curve"
+msgstr "Разделить кривую"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Radial Accel"
+msgstr "Радиальное уÑкорение"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
msgid "Tangential Accel"
-msgstr ""
+msgstr "Тангенциальное уÑкорение"
#: scene/2d/cpu_particles_2d.cpp scene/2d/joints_2d.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/vehicle_body.cpp
-#: scene/resources/particles_material.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/physics_joint.cpp
+#: scene/3d/vehicle_body.cpp scene/resources/particles_material.cpp
#: servers/audio/effects/audio_effect_reverb.cpp
msgid "Damping"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+msgid "Damping Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Damping Curve"
+msgstr "Разделить кривую"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp scene/3d/light.cpp
+#: scene/resources/particles_material.cpp
msgid "Angle"
+msgstr "Угол"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Angle Random"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
#, fuzzy
+msgid "Angle Curve"
+msgstr "Сомкнуть кривую"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#, fuzzy
+msgid "Scale Amount"
+msgstr "КоличеÑтво Ñолнц"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+msgid "Scale Amount Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#, fuzzy
+msgid "Scale Amount Curve"
+msgstr "МаÑштабировать от курÑора"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
msgid "Color Ramp"
msgstr "Цвета"
@@ -19482,9 +20432,50 @@ msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
-#, fuzzy
msgid "Hue Variation"
-msgstr "Разделение:"
+msgstr "Ð’Ð°Ñ€Ð¸Ð°Ñ†Ð¸Ñ Ð¾Ñ‚Ñ‚ÐµÐ½ÐºÐ°"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Variation"
+msgstr "Ð’Ð°Ñ€Ð¸Ð°Ñ†Ð¸Ñ Ð¾Ñ‚Ñ‚ÐµÐ½ÐºÐ°"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Variation Random"
+msgstr "Ð’Ð°Ñ€Ð¸Ð°Ñ†Ð¸Ñ Ð¾Ñ‚Ñ‚ÐµÐ½ÐºÐ°"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Variation Curve"
+msgstr "Ð’Ð°Ñ€Ð¸Ð°Ñ†Ð¸Ñ Ð¾Ñ‚Ñ‚ÐµÐ½ÐºÐ°"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Speed Random"
+msgstr "МаÑштаб ÑкороÑти"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Speed Curve"
+msgstr "Разделить кривую"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Offset Random"
+msgstr "Смещение"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Offset Curve"
+msgstr "Сомкнуть кривую"
#: scene/2d/joints_2d.cpp
msgid "Node A and Node B must be PhysicsBody2Ds"
@@ -19520,6 +20511,7 @@ msgid "Node B"
msgstr "Узел"
#: scene/2d/joints_2d.cpp scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp
+#: scene/3d/light.cpp scene/3d/physics_joint.cpp
#: scene/resources/environment.cpp
msgid "Bias"
msgstr ""
@@ -19529,7 +20521,7 @@ msgstr ""
msgid "Disable Collision"
msgstr "Ð—Ð°Ð±Ð»Ð¾ÐºÐ¸Ñ€Ð¾Ð²Ð°Ð½Ð½Ð°Ñ ÐºÐ½Ð¾Ð¿ÐºÐ°"
-#: scene/2d/joints_2d.cpp
+#: scene/2d/joints_2d.cpp scene/3d/physics_joint.cpp
msgid "Softness"
msgstr ""
@@ -19547,7 +20539,7 @@ msgstr "Инициализировать"
msgid "Rest Length"
msgstr ""
-#: scene/2d/joints_2d.cpp scene/3d/vehicle_body.cpp
+#: scene/2d/joints_2d.cpp scene/3d/physics_joint.cpp scene/3d/vehicle_body.cpp
msgid "Stiffness"
msgstr ""
@@ -19568,9 +20560,9 @@ msgid "Texture Scale"
msgstr "ОблаÑть текÑтуры"
#: scene/2d/light_2d.cpp scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp
-#: scene/resources/environment.cpp scene/resources/sky.cpp
+#: scene/3d/light.cpp scene/resources/environment.cpp scene/resources/sky.cpp
msgid "Energy"
-msgstr ""
+msgstr "ЭнергиÑ"
#: scene/2d/light_2d.cpp
msgid "Z Min"
@@ -19595,35 +20587,26 @@ msgid "Item Cull Mask"
msgstr ""
#: scene/2d/light_2d.cpp scene/3d/light.cpp scene/resources/style_box.cpp
-#, fuzzy
msgid "Shadow"
-msgstr "Шейдер"
+msgstr "Тень"
#: scene/2d/light_2d.cpp
-#, fuzzy
msgid "Buffer Size"
-msgstr "Вид Ñзади"
+msgstr "Размер буфера"
#: scene/2d/light_2d.cpp
#, fuzzy
msgid "Gradient Length"
msgstr "Градиент отредактирован"
-#: scene/2d/light_2d.cpp scene/gui/control.cpp
-#: scene/resources/navigation_mesh.cpp
-#, fuzzy
-msgid "Filter"
-msgstr "Фильтры:"
-
#: scene/2d/light_2d.cpp
#, fuzzy
msgid "Filter Smooth"
msgstr "Фильтр методов"
#: scene/2d/light_occluder_2d.cpp
-#, fuzzy
msgid "Closed"
-msgstr "Закрыть"
+msgstr "Закрыто"
#: scene/2d/light_occluder_2d.cpp scene/resources/material.cpp
#, fuzzy
@@ -19643,28 +20626,24 @@ msgstr ""
"ЗаÑлонÑющий полигон Ð´Ð»Ñ Ñтого окклюдера пуÑÑ‚. ПожалуйÑта, добавьте полигон."
#: scene/2d/line_2d.cpp
-#, fuzzy
msgid "Width Curve"
-msgstr "Разделить кривую"
+msgstr "ÐšÑ€Ð¸Ð²Ð°Ñ ÑˆÐ¸Ñ€Ð¸Ð½Ñ‹"
#: scene/2d/line_2d.cpp
-#, fuzzy
msgid "Default Color"
-msgstr "По умолчанию"
+msgstr "Цвет по умолчанию"
#: scene/2d/line_2d.cpp scene/resources/texture.cpp
msgid "Fill"
-msgstr ""
+msgstr "ЗаполнÑть"
#: scene/2d/line_2d.cpp scene/resources/texture.cpp
-#, fuzzy
msgid "Gradient"
-msgstr "Градиент отредактирован"
+msgstr "Градиент"
#: scene/2d/line_2d.cpp
-#, fuzzy
msgid "Texture Mode"
-msgstr "ОблаÑть текÑтуры"
+msgstr "Режим текÑтуры"
#: scene/2d/line_2d.cpp
msgid "Capping"
@@ -19683,12 +20662,11 @@ msgstr "Режим региона"
#: scene/2d/line_2d.cpp
#, fuzzy
msgid "End Cap Mode"
-msgstr "Режим привÑзки:"
+msgstr "Режим торцевой крышки"
#: scene/2d/line_2d.cpp scene/2d/polygon_2d.cpp scene/resources/style_box.cpp
-#, fuzzy
msgid "Border"
-msgstr "в порÑдке:"
+msgstr "Граница"
#: scene/2d/line_2d.cpp
msgid "Sharp Limit"
@@ -19700,9 +20678,8 @@ msgstr ""
#: scene/2d/line_2d.cpp scene/2d/polygon_2d.cpp
#: scene/resources/dynamic_font.cpp
-#, fuzzy
msgid "Antialiased"
-msgstr "Инициализировать"
+msgstr "Сглаженный"
#: scene/2d/multimesh_instance_2d.cpp scene/3d/multimesh_instance.cpp
#, fuzzy
@@ -19713,12 +20690,12 @@ msgstr "Умножить %s"
#: scene/3d/navigation.cpp scene/animation/root_motion_view.cpp
#: scene/resources/world_2d.cpp servers/physics_2d/physics_2d_server_sw.cpp
msgid "Cell Size"
-msgstr ""
+msgstr "Размер Ñчейки"
#: scene/2d/navigation_2d.cpp scene/3d/navigation.cpp
#, fuzzy
msgid "Edge Connection Margin"
-msgstr "Редактировать Ñоединение:"
+msgstr "Пограничное Ñоединение"
#: scene/2d/navigation_agent_2d.cpp scene/3d/navigation_agent.cpp
msgid "Target Desired Distance"
@@ -19738,14 +20715,13 @@ msgid "Time Horizon"
msgstr "Перевернуть по горизонтали"
#: scene/2d/navigation_agent_2d.cpp scene/3d/navigation_agent.cpp
-#, fuzzy
msgid "Max Speed"
-msgstr "СкороÑть:"
+msgstr "ÐœÐ°ÐºÑ ÑкороÑть"
#: scene/2d/navigation_agent_2d.cpp scene/3d/navigation_agent.cpp
#, fuzzy
msgid "Path Max Distance"
-msgstr "РаÑÑтоÑние выбора:"
+msgstr "МакÑимальное раÑÑтоÑние пути"
#: scene/2d/navigation_agent_2d.cpp
msgid "The NavigationAgent2D can be used only under a Node2D node."
@@ -19765,14 +20741,12 @@ msgstr ""
"объектом Node2D."
#: scene/2d/navigation_polygon.cpp scene/resources/navigation_mesh.cpp
-#, fuzzy
msgid "Vertices"
-msgstr "Вершины:"
+msgstr "Вершины"
#: scene/2d/navigation_polygon.cpp
-#, fuzzy
msgid "Outlines"
-msgstr "Размер обводки:"
+msgstr "Контуры"
#: scene/2d/navigation_polygon.cpp
msgid ""
@@ -19798,46 +20772,39 @@ msgstr ""
#: scene/main/canvas_layer.cpp
#, fuzzy
msgid "Rotation Degrees"
-msgstr "Поворот на %s градуÑов."
+msgstr "ГрадуÑÑ‹ вращениÑ"
#: scene/2d/node_2d.cpp
-#, fuzzy
msgid "Global Rotation"
-msgstr "Ð“Ð»Ð¾Ð±Ð°Ð»ÑŒÐ½Ð°Ñ ÐºÐ¾Ð½Ñтанта"
+msgstr "Глобальный поворот"
#: scene/2d/node_2d.cpp
-#, fuzzy
msgid "Global Rotation Degrees"
-msgstr "Поворот на %s градуÑов."
+msgstr "Глобальный поворот градуÑÑ‹"
#: scene/2d/node_2d.cpp
-#, fuzzy
msgid "Global Scale"
-msgstr "Случайный размер:"
+msgstr "Глобальный маÑштаб"
#: scene/2d/node_2d.cpp scene/3d/spatial.cpp
-#, fuzzy
msgid "Global Transform"
-msgstr "Сохранить глобальные преобразованиÑ"
+msgstr "Глобальное преобразование"
#: scene/2d/node_2d.cpp
-#, fuzzy
msgid "Z As Relative"
-msgstr "ОтноÑÐ¸Ñ‚ÐµÐ»ÑŒÐ½Ð°Ñ Ð¿Ñ€Ð¸Ð²Ñзка"
+msgstr "ОтноÑительный Z-индекÑ"
#: scene/2d/parallax_background.cpp scene/gui/scroll_container.cpp
msgid "Scroll"
-msgstr ""
+msgstr "Прокрутка"
#: scene/2d/parallax_background.cpp
-#, fuzzy
msgid "Base Offset"
-msgstr "ОтÑтуп:"
+msgstr "Базовое Ñмещение"
#: scene/2d/parallax_background.cpp
-#, fuzzy
msgid "Base Scale"
-msgstr "ИÑпользовать привÑзку маÑштабированиÑ"
+msgstr "Базовый маÑштаб"
#: scene/2d/parallax_background.cpp
msgid "Limit Begin"
@@ -19862,14 +20829,12 @@ msgstr ""
#: scene/2d/parallax_layer.cpp scene/2d/physics_body_2d.cpp
#: scene/3d/physics_body.cpp scene/3d/vehicle_body.cpp
#: servers/physics_2d_server.cpp servers/physics_server.cpp
-#, fuzzy
msgid "Motion"
-msgstr "ДейÑтвие"
+msgstr "Движение"
#: scene/2d/parallax_layer.cpp
-#, fuzzy
msgid "Mirroring"
-msgstr "Отразить"
+msgstr "Отражение"
#: scene/2d/particles_2d.cpp
msgid ""
@@ -19913,9 +20878,8 @@ msgstr ""
"включенной опцией «Particles Animation»."
#: scene/2d/particles_2d.cpp
-#, fuzzy
msgid "Visibility Rect"
-msgstr "Режим приоритета"
+msgstr "Видимый прÑмоугольник"
#: scene/2d/particles_2d.cpp scene/3d/particles.cpp
msgid "Process Material"
@@ -19923,9 +20887,8 @@ msgstr ""
#: scene/2d/path_2d.cpp scene/3d/path.cpp scene/resources/sky.cpp
#: scene/resources/texture.cpp
-#, fuzzy
msgid "Curve"
-msgstr "Разделить кривую"
+msgstr "КриваÑ"
#: scene/2d/path_2d.cpp
msgid "PathFollow2D only works when set as a child of a Path2D node."
@@ -19936,17 +20899,15 @@ msgstr ""
#: scene/2d/path_2d.cpp scene/3d/path.cpp
#, fuzzy
msgid "Unit Offset"
-msgstr "ОтÑтуп Ñетки:"
+msgstr "Смещение единицы измерениÑ"
#: scene/2d/path_2d.cpp scene/3d/camera.cpp scene/3d/path.cpp
-#, fuzzy
msgid "H Offset"
-msgstr "ОтÑтуп:"
+msgstr "Г Ñмещение"
#: scene/2d/path_2d.cpp scene/3d/camera.cpp scene/3d/path.cpp
-#, fuzzy
msgid "V Offset"
-msgstr "ОтÑтуп:"
+msgstr "Ð’ Ñмещение"
#: scene/2d/path_2d.cpp scene/3d/path.cpp
msgid "Cubic Interp"
@@ -19957,9 +20918,8 @@ msgid "Lookahead"
msgstr ""
#: scene/2d/physics_body_2d.cpp scene/3d/visual_instance.cpp
-#, fuzzy
msgid "Layers"
-msgstr "Слой"
+msgstr "Слои"
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
#, fuzzy
@@ -19973,14 +20933,13 @@ msgstr "Инициализировать"
#: scene/2d/physics_body_2d.cpp scene/2d/tile_map.cpp scene/3d/physics_body.cpp
#: scene/resources/physics_material.cpp
-#, fuzzy
msgid "Friction"
-msgstr "ФункциÑ"
+msgstr "Трение"
#: scene/2d/physics_body_2d.cpp scene/2d/tile_map.cpp scene/3d/physics_body.cpp
#: scene/resources/physics_material.cpp
msgid "Bounce"
-msgstr ""
+msgstr "ОтÑкок"
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
msgid "Physics Material Override"
@@ -19988,9 +20947,8 @@ msgstr ""
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
#: scene/resources/world.cpp scene/resources/world_2d.cpp
-#, fuzzy
msgid "Default Gravity"
-msgstr "Превью по умолчанию"
+msgstr "Ð“Ñ€Ð°Ð²Ð¸Ñ‚Ð°Ñ†Ð¸Ñ Ð¿Ð¾ умолчанию"
#: scene/2d/physics_body_2d.cpp
msgid ""
@@ -20004,21 +20962,19 @@ msgstr ""
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
msgid "Mass"
-msgstr ""
+msgstr "МаÑÑа"
#: scene/2d/physics_body_2d.cpp
-#, fuzzy
msgid "Inertia"
-msgstr "Вертикальные:"
+msgstr "ИнерциÑ"
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-#, fuzzy
msgid "Weight"
-msgstr "Свет"
+msgstr "ВеÑ"
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
msgid "Gravity Scale"
-msgstr ""
+msgstr "МаÑштаб гравитации"
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
#, fuzzy
@@ -20041,14 +20997,12 @@ msgstr "Выбрать цвет"
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
#: servers/physics_2d_server.cpp servers/physics_server.cpp
-#, fuzzy
msgid "Sleeping"
-msgstr "Ð˜Ð½Ñ‚ÐµÐ»Ð»ÐµÐºÑ‚ÑƒÐ°Ð»ÑŒÐ½Ð°Ñ Ð¿Ñ€Ð¸Ð²Ñзка"
+msgstr "СпÑщий"
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-#, fuzzy
msgid "Can Sleep"
-msgstr "СкороÑть:"
+msgstr "Может Ñпать"
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
msgid "Damp"
@@ -20063,27 +21017,20 @@ msgid "Applied Forces"
msgstr ""
#: scene/2d/physics_body_2d.cpp
-#, fuzzy
-msgid "Force"
-msgstr "Принудительно отправить"
-
-#: scene/2d/physics_body_2d.cpp
msgid "Torque"
-msgstr ""
+msgstr "КрутÑщий момент"
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-#, fuzzy
msgid "Safe Margin"
-msgstr "Задать отÑтуп"
+msgstr "БезопаÑный отÑтуп"
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-#, fuzzy
msgid "Sync To Physics"
-msgstr " (ФизичеÑкаÑ)"
+msgstr "Синхронизировать Ñ Ñ„Ð¸Ð·Ð¸ÐºÐ¾Ð¹"
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
#, fuzzy
-msgid "Moving platform"
+msgid "Moving Platform"
msgstr "Перемещение выходных данных"
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
@@ -20092,15 +21039,14 @@ msgstr ""
#: scene/2d/physics_body_2d.cpp scene/2d/touch_screen_button.cpp
#: scene/3d/physics_body.cpp scene/gui/texture_button.cpp
-#: scene/resources/line_shape_2d.cpp
-#, fuzzy
+#: scene/resources/line_shape_2d.cpp scene/resources/material.cpp
msgid "Normal"
-msgstr "Формат"
+msgstr "Ðормаль"
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
#, fuzzy
msgid "Remainder"
-msgstr "ОтриÑовщик:"
+msgstr "ОÑтаток"
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
#, fuzzy
@@ -20109,14 +21055,13 @@ msgstr "Локаль"
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
#: servers/physics_2d_server.cpp servers/physics_server.cpp
-#, fuzzy
msgid "Collider"
-msgstr "Режим ÑтолкновениÑ"
+msgstr "Коллайдер"
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
#: servers/physics_2d_server.cpp servers/physics_server.cpp
msgid "Collider ID"
-msgstr ""
+msgstr "ID коллайдера"
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
#: servers/physics_2d_server.cpp servers/physics_server.cpp
@@ -20179,11 +21124,11 @@ msgstr ""
#: scene/2d/ray_cast_2d.cpp scene/3d/camera.cpp scene/3d/ray_cast.cpp
msgid "Areas"
-msgstr ""
+msgstr "ОблаÑти"
#: scene/2d/ray_cast_2d.cpp scene/3d/camera.cpp scene/3d/ray_cast.cpp
msgid "Bodies"
-msgstr ""
+msgstr "Тела"
#: scene/2d/remote_transform_2d.cpp
msgid "Path property must point to a valid Node2D node to work."
@@ -20230,16 +21175,15 @@ msgstr ""
#: scene/2d/sprite.cpp scene/3d/sprite_3d.cpp
msgid "Hframes"
-msgstr ""
+msgstr "Г кадры"
#: scene/2d/sprite.cpp scene/3d/sprite_3d.cpp
msgid "Vframes"
-msgstr ""
+msgstr "В кадры"
#: scene/2d/sprite.cpp scene/3d/sprite_3d.cpp
-#, fuzzy
msgid "Frame Coords"
-msgstr "Кадр %"
+msgstr "Координаты кадра"
#: scene/2d/sprite.cpp scene/resources/texture.cpp
#, fuzzy
@@ -20257,7 +21201,6 @@ msgstr ""
"StaticBody2D, RigidBody2D, KinematicBody2D и др. чтобы придать им форму."
#: scene/2d/tile_map.cpp
-#, fuzzy
msgid "Tile Set"
msgstr "Ðабор тайлов"
@@ -20297,9 +21240,8 @@ msgid "Compatibility Mode"
msgstr "Режим приоритета"
#: scene/2d/tile_map.cpp
-#, fuzzy
msgid "Centered Textures"
-msgstr "ОÑновные возможноÑти:"
+msgstr "Центрированные текÑтуры"
#: scene/2d/tile_map.cpp
msgid "Cell Clip UV"
@@ -20329,9 +21271,8 @@ msgid "Passby Press"
msgstr ""
#: scene/2d/touch_screen_button.cpp
-#, fuzzy
msgid "Visibility Mode"
-msgstr "Режим приоритета"
+msgstr "Режим видимоÑти"
#: scene/2d/visibility_notifier_2d.cpp
msgid ""
@@ -20341,6 +21282,35 @@ msgstr ""
"VisibilityEnable2D работает лучше вÑего когда корень редактируемой Ñцены "
"ÑвлÑетÑÑ ÐµÐ³Ð¾ прÑмым родителем."
+#: scene/2d/visibility_notifier_2d.cpp scene/3d/visibility_notifier.cpp
+#, fuzzy
+msgid "Pause Animations"
+msgstr "Ð’Ñтавить анимацию"
+
+#: scene/2d/visibility_notifier_2d.cpp scene/3d/visibility_notifier.cpp
+#, fuzzy
+msgid "Freeze Bodies"
+msgstr "Тела"
+
+#: scene/2d/visibility_notifier_2d.cpp
+#, fuzzy
+msgid "Pause Particles"
+msgstr "ЧаÑтицы"
+
+#: scene/2d/visibility_notifier_2d.cpp
+#, fuzzy
+msgid "Pause Animated Sprites"
+msgstr "Ð’Ñтавить анимацию"
+
+#: scene/2d/visibility_notifier_2d.cpp
+#, fuzzy
+msgid "Process Parent"
+msgstr "Включить приоритет"
+
+#: scene/2d/visibility_notifier_2d.cpp
+msgid "Physics Process Parent"
+msgstr ""
+
#: scene/3d/area.cpp
msgid "Reverb Bus"
msgstr ""
@@ -20398,7 +21368,7 @@ msgstr "ARVROrigin требует дочерний узел ARVRCamera."
#: scene/3d/arvr_nodes.cpp servers/arvr_server.cpp
#, fuzzy
msgid "World Scale"
-msgstr "Случайный размер:"
+msgstr "Мировой маÑштаб"
#: scene/3d/audio_stream_player_3d.cpp
#, fuzzy
@@ -20427,9 +21397,8 @@ msgid "Emission Angle"
msgstr "Цвета излучениÑ"
#: scene/3d/audio_stream_player_3d.cpp
-#, fuzzy
msgid "Degrees"
-msgstr "Поворот на %s градуÑов."
+msgstr "ГрадуÑÑ‹"
#: scene/3d/audio_stream_player_3d.cpp
#, fuzzy
@@ -20441,15 +21410,15 @@ msgid "Attenuation Filter"
msgstr ""
#: scene/3d/audio_stream_player_3d.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
#: servers/audio/effects/audio_effect_filter.cpp
msgid "Cutoff Hz"
msgstr ""
#: scene/3d/audio_stream_player_3d.cpp
#: servers/audio/effects/audio_effect_filter.cpp
-#, fuzzy
msgid "dB"
-msgstr "Б"
+msgstr "дБ"
#: scene/3d/audio_stream_player_3d.cpp
#, fuzzy
@@ -20485,11 +21454,6 @@ msgid "Octree"
msgstr "Поддерево"
#: scene/3d/baked_lightmap.cpp
-#, fuzzy
-msgid "User Data"
-msgstr "ПользовательÑкий интерфейÑ"
-
-#: scene/3d/baked_lightmap.cpp
msgid "Finding meshes and lights"
msgstr "ПоиÑк полиÑеток и иÑточников Ñвета"
@@ -20535,16 +21499,15 @@ msgstr ""
#: scene/3d/baked_lightmap.cpp
#, fuzzy
msgid "Use Denoiser"
-msgstr "Фильтр:"
+msgstr "ИÑпользовать шумоподавитель"
#: scene/3d/baked_lightmap.cpp scene/resources/texture.cpp
msgid "Use HDR"
-msgstr ""
+msgstr "ИÑпользовать HDR"
#: scene/3d/baked_lightmap.cpp
-#, fuzzy
msgid "Use Color"
-msgstr "Цвета"
+msgstr "ИÑпользовать цвет"
#: scene/3d/baked_lightmap.cpp
#, fuzzy
@@ -20552,39 +21515,33 @@ msgid "Default Texels Per Unit"
msgstr "Тема по умолчанию"
#: scene/3d/baked_lightmap.cpp scene/resources/texture.cpp
-#, fuzzy
msgid "Atlas"
-msgstr "Ðовый атлаÑ"
+msgstr "ÐтлаÑ"
#: scene/3d/baked_lightmap.cpp
-#, fuzzy
msgid "Generate"
-msgstr "ОÑновное"
+msgstr "Генерировать"
#: scene/3d/baked_lightmap.cpp
-#, fuzzy
msgid "Max Size"
-msgstr "Размер:"
+msgstr "МакÑимальный размер"
#: scene/3d/baked_lightmap.cpp
-#, fuzzy
msgid "Custom Sky"
-msgstr "ПользовательÑкий узел"
+msgstr "ПользовательÑкое небо"
#: scene/3d/baked_lightmap.cpp
#, fuzzy
msgid "Custom Sky Rotation Degrees"
-msgstr "Поворот на %s градуÑов."
+msgstr "ПользовательÑкие градуÑÑ‹ Ð²Ñ€Ð°Ñ‰ÐµÐ½Ð¸Ñ Ð½ÐµÐ±Ð°"
#: scene/3d/baked_lightmap.cpp scene/3d/ray_cast.cpp
-#, fuzzy
msgid "Custom Color"
-msgstr "ПользовательÑкий узел"
+msgstr "ПользовательÑкий цвет"
#: scene/3d/baked_lightmap.cpp
-#, fuzzy
msgid "Custom Energy"
-msgstr "Передвинуть Ñффект шины"
+msgstr "ПользовательÑÐºÐ°Ñ ÑнергиÑ"
#: scene/3d/baked_lightmap.cpp
#, fuzzy
@@ -20608,7 +21565,7 @@ msgstr "С данными"
#: scene/3d/bone_attachment.cpp
#, fuzzy
msgid "Bone Name"
-msgstr "Ð˜Ð¼Ñ ÑƒÐ·Ð»Ð°:"
+msgstr "Ð˜Ð¼Ñ ÐºÐ¾Ñти"
#: scene/3d/camera.cpp
msgid "Keep Aspect"
@@ -20635,7 +21592,7 @@ msgstr ""
#: scene/3d/camera.cpp
#, fuzzy
msgid "Frustum Offset"
-msgstr "ОтÑтуп Ñетки:"
+msgstr "Смещение уÑеченного конуÑа"
#: scene/3d/camera.cpp
#, fuzzy
@@ -20650,9 +21607,8 @@ msgstr ""
#: scene/gui/control.cpp scene/resources/shape.cpp
#: scene/resources/style_box.cpp scene/resources/texture.cpp
#: servers/physics_2d_server.cpp servers/physics_server.cpp
-#, fuzzy
msgid "Margin"
-msgstr "Задать отÑтуп"
+msgstr "ОтÑтуп"
#: scene/3d/camera.cpp
#, fuzzy
@@ -20762,6 +21718,16 @@ msgid "Ring Axis"
msgstr "ПредупреждениÑ"
#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Rotate Y"
+msgstr "Повернуть"
+
+#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Disable Z"
+msgstr "Отключить 3D"
+
+#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
msgid "Flatness"
msgstr ""
@@ -20802,16 +21768,11 @@ msgstr "ДинамичеÑÐºÐ°Ñ Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñ‚ÐµÐºÐ°"
msgid "Dynamic Range"
msgstr "ДинамичеÑÐºÐ°Ñ Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñ‚ÐµÐºÐ°"
-#: scene/3d/gi_probe.cpp
+#: scene/3d/gi_probe.cpp scene/3d/light.cpp
msgid "Normal Bias"
msgstr ""
#: scene/3d/gi_probe.cpp
-#, fuzzy
-msgid "Compress"
-msgstr "Компоненты"
-
-#: scene/3d/gi_probe.cpp
msgid "Plotting Meshes"
msgstr "ПоÑтроение полиÑетки"
@@ -20843,16 +21804,31 @@ msgstr ""
#: scene/3d/light.cpp
#, fuzzy
+msgid "Indirect Energy"
+msgstr "Цвета излучениÑ"
+
+#: scene/3d/light.cpp
+#, fuzzy
msgid "Negative"
msgstr "GDNative"
#: scene/3d/light.cpp
#, fuzzy
+msgid "Specular"
+msgstr "Режим измерениÑ"
+
+#: scene/3d/light.cpp
+#, fuzzy
msgid "Bake Mode"
msgstr "Режим битовой маÑки"
#: scene/3d/light.cpp
#, fuzzy
+msgid "Contact"
+msgstr "КонтраÑÑ‚"
+
+#: scene/3d/light.cpp
+#, fuzzy
msgid "Reverse Cull Face"
msgstr "СброÑить громкоÑть шины"
@@ -20863,8 +21839,28 @@ msgstr "ÐаправлениÑ"
#: scene/3d/light.cpp
#, fuzzy
+msgid "Split 1"
+msgstr "Раздельный"
+
+#: scene/3d/light.cpp
+#, fuzzy
+msgid "Split 2"
+msgstr "Раздельный"
+
+#: scene/3d/light.cpp
+#, fuzzy
+msgid "Split 3"
+msgstr "Раздельный"
+
+#: scene/3d/light.cpp
+#, fuzzy
msgid "Blend Splits"
-msgstr "Ð’Ñ€ÐµÐ¼Ñ ÑмешиваниÑ:"
+msgstr "Смешанные Ñплиты"
+
+#: scene/3d/light.cpp
+#, fuzzy
+msgid "Bias Split Scale"
+msgstr "Базовый маÑштаб"
#: scene/3d/light.cpp
#, fuzzy
@@ -20893,6 +21889,11 @@ msgstr "SpotLight Ñ ÑƒÐ³Ð»Ð¾Ð¼ более 90 градуÑов не может Ð
msgid "Spot"
msgstr ""
+#: scene/3d/light.cpp
+#, fuzzy
+msgid "Angle Attenuation"
+msgstr "ÐнимациÑ"
+
#: scene/3d/mesh_instance.cpp
msgid "Software Skinning"
msgstr ""
@@ -20900,7 +21901,7 @@ msgstr ""
#: scene/3d/mesh_instance.cpp
#, fuzzy
msgid "Transform Normals"
-msgstr "Преобразование прервано."
+msgstr "Преобразование нормалей"
#: scene/3d/navigation.cpp scene/resources/curve.cpp
#, fuzzy
@@ -20999,12 +22000,12 @@ msgstr "Переключить видимоÑть"
#: scene/3d/particles.cpp
#, fuzzy
msgid "Draw Passes"
-msgstr "Вызовов отриÑовки:"
+msgstr "ПропуÑки отриÑовки"
#: scene/3d/particles.cpp
#, fuzzy
msgid "Passes"
-msgstr "Вызовов отриÑовки:"
+msgstr "Проходы"
#: scene/3d/path.cpp
msgid "PathFollow only works when set as a child of a Path node."
@@ -21040,8 +22041,68 @@ msgstr "ОÑÑŒ"
#: scene/3d/physics_body.cpp
#, fuzzy
+msgid "Linear X"
+msgstr "Линейный"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Linear Y"
+msgstr "Линейный"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Linear Z"
+msgstr "Линейный"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Angular X"
+msgstr "Ð£Ð³Ð»Ð¾Ð²Ð°Ñ ÑкороÑть"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Angular Y"
+msgstr "Ð£Ð³Ð»Ð¾Ð²Ð°Ñ ÑкороÑть"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Angular Z"
+msgstr "Ð£Ð³Ð»Ð¾Ð²Ð°Ñ ÑкороÑть"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Motion X"
+msgstr "Движение"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Motion Y"
+msgstr "Движение"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Motion Z"
+msgstr "Движение"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Move Lock X"
+msgstr "ПеремеÑтить узел"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Move Lock Y"
+msgstr "ПеремеÑтить узел"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Move Lock Z"
+msgstr "ПеремеÑтить узел"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
msgid "Body Offset"
-msgstr "ОтÑтуп:"
+msgstr "Смещение тела"
#: scene/3d/physics_joint.cpp
msgid "Node A and Node B must be PhysicsBodies"
@@ -21073,6 +22134,15 @@ msgid "Exclude Nodes"
msgstr "Удалить узлы"
#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Params"
+msgstr "Параметры"
+
+#: scene/3d/physics_joint.cpp
+msgid "Impulse Clamp"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit"
msgstr ""
@@ -21086,6 +22156,55 @@ msgstr "ВЕРХÐИЙ РЕГИСТР"
msgid "Lower"
msgstr "нижний региÑтр"
+#: scene/3d/physics_joint.cpp scene/3d/vehicle_body.cpp
+#, fuzzy
+msgid "Relaxation"
+msgstr "РаÑÑлабление"
+
+#: scene/3d/physics_joint.cpp
+msgid "Motor"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Target Velocity"
+msgstr "ÐžÑ€Ð±Ð¸Ñ‚Ð°Ð»ÑŒÐ½Ð°Ñ ÑкороÑть"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Max Impulse"
+msgstr "ÐœÐ°ÐºÑ ÑкороÑть"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit"
+msgstr "Линейный"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Upper Distance"
+msgstr "РаÑÑтоÑние образца"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Lower Distance"
+msgstr "РаÑÑтоÑние"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Restitution"
+msgstr "ОпиÑание"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motion"
+msgstr "Инициализировать"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Ortho"
+msgstr "Задний ортогональный"
+
#: scene/3d/physics_joint.cpp
#, fuzzy
msgid "Upper Angle"
@@ -21098,6 +22217,16 @@ msgstr "нижний региÑтр"
#: scene/3d/physics_joint.cpp
#, fuzzy
+msgid "Angular Motion"
+msgstr "Ð£Ð³Ð»Ð¾Ð²Ð°Ñ ÑкороÑть"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Angular Ortho"
+msgstr "МакÑ. Угловые погрешноÑти:"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
msgid "Swing Span"
msgstr "Сохранение Ñцены"
@@ -21106,17 +22235,102 @@ msgid "Twist Span"
msgstr ""
#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit X"
+msgstr "Линейный"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motor X"
+msgstr "Инициализировать"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Force Limit"
+msgstr "РиÑовать лимиты"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Spring X"
+msgstr "МежÑтрочный интервал"
+
+#: scene/3d/physics_joint.cpp
+msgid "Equilibrium Point"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit X"
msgstr ""
#: scene/3d/physics_joint.cpp
+msgid "Erp"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Angular Motor X"
+msgstr "Ð£Ð³Ð»Ð¾Ð²Ð°Ñ ÑкороÑть"
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Spring X"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit Y"
+msgstr "Линейный"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motor Y"
+msgstr "Инициализировать"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Spring Y"
+msgstr "МежÑтрочный интервал"
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit Y"
msgstr ""
#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Angular Motor Y"
+msgstr "Ð£Ð³Ð»Ð¾Ð²Ð°Ñ ÑкороÑть"
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Spring Y"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit Z"
+msgstr "Линейный"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motor Z"
+msgstr "Инициализировать"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Spring Z"
+msgstr "МежÑтрочный интервал"
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit Z"
msgstr ""
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Angular Motor Z"
+msgstr "Ð£Ð³Ð»Ð¾Ð²Ð°Ñ ÑкороÑть"
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Spring Z"
+msgstr ""
+
#: scene/3d/portal.cpp
msgid "The RoomManager should not be a child or grandchild of a Portal."
msgstr "RoomManager не должен быть ребёнком или внуком Portal."
@@ -21130,18 +22344,16 @@ msgid "A RoomGroup should not be a child or grandchild of a Portal."
msgstr "RoomGroup не должен быть ребёнком или внуком Portal."
#: scene/3d/portal.cpp
-#, fuzzy
msgid "Portal Active"
-msgstr " [порталы активны]"
+msgstr "Портал активен"
#: scene/3d/portal.cpp scene/resources/occluder_shape_polygon.cpp
msgid "Two Way"
msgstr ""
#: scene/3d/portal.cpp
-#, fuzzy
msgid "Linked Room"
-msgstr "Редактирование ÐºÐ¾Ñ€Ð½Ñ Ð² реальном времени:"
+msgstr "СвÑÐ·Ð°Ð½Ð½Ð°Ñ ÐºÐ¾Ð¼Ð½Ð°Ñ‚Ð°"
#: scene/3d/portal.cpp
#, fuzzy
@@ -21158,9 +22370,8 @@ msgid "Dispatch Mode"
msgstr ""
#: scene/3d/proximity_group.cpp
-#, fuzzy
msgid "Grid Radius"
-msgstr "РадиуÑ:"
+msgstr "Ð Ð°Ð´Ð¸ÑƒÑ Ñетки"
#: scene/3d/ray_cast.cpp
#, fuzzy
@@ -21179,7 +22390,7 @@ msgstr "Режим вращениÑ"
#: scene/3d/reflection_probe.cpp
#, fuzzy
msgid "Origin Offset"
-msgstr "ОтÑтуп Ñетки:"
+msgstr "Смещение начала координат"
#: scene/3d/reflection_probe.cpp
#, fuzzy
@@ -21239,7 +22450,7 @@ msgstr ""
msgid "Use Default Simplify"
msgstr ""
-#: scene/3d/room.cpp
+#: scene/3d/room.cpp scene/3d/room_manager.cpp
msgid "Room Simplify"
msgstr ""
@@ -21278,11 +22489,18 @@ msgstr "В SceneTree должен быть только один RoomManager."
#: scene/3d/room_manager.cpp
msgid "Main"
-msgstr ""
+msgstr "ГлавнаÑ"
+
+#: scene/3d/room_manager.cpp scene/animation/animation_player.cpp
+#: scene/animation/animation_tree.cpp scene/animation/animation_tree_player.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+#, fuzzy
+msgid "Active"
+msgstr "ДейÑтвие"
#: scene/3d/room_manager.cpp
msgid "Roomlist"
-msgstr ""
+msgstr "СпиÑок комнат"
#: scene/3d/room_manager.cpp servers/visual_server.cpp
#, fuzzy
@@ -21301,9 +22519,57 @@ msgstr "ZIP-файл"
#: scene/3d/room_manager.cpp servers/visual_server.cpp
msgid "Gameplay"
+msgstr "Геймплей"
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Gameplay Monitor"
+msgstr "Геймплей"
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Use Secondary PVS"
+msgstr "ИÑпользовать привÑзку маÑштабированиÑ"
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Merge Meshes"
+msgstr "Меши"
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Show Margins"
+msgstr "Отображать центр"
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Debug Sprawl"
+msgstr "Отладка"
+
+#: scene/3d/room_manager.cpp
+msgid "Overlap Warning Threshold"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Preview Camera"
+msgstr "Размер превью"
+
+#: scene/3d/room_manager.cpp
+msgid "Portal Depth Limit"
msgstr ""
#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Default Portal Margin"
+msgstr "ОтÑтуп портала"
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Roaming Expansion Margin"
+msgstr "Развернуть вÑе"
+
+#: scene/3d/room_manager.cpp
msgid ""
"RoomList path is invalid.\n"
"Please check the RoomList branch has been assigned in the RoomManager."
@@ -21364,14 +22630,12 @@ msgid "Parent Collision Ignore"
msgstr "Создать полигон Ñтолкновений"
#: scene/3d/soft_body.cpp
-#, fuzzy
msgid "Simulation Precision"
-msgstr "Дерево анимации не дейÑтвительно."
+msgstr "ТочноÑть ÑимулÑции"
#: scene/3d/soft_body.cpp
-#, fuzzy
msgid "Total Mass"
-msgstr "Ð’Ñего:"
+msgstr "ÐžÐ±Ñ‰Ð°Ñ Ð¼Ð°ÑÑа"
#: scene/3d/soft_body.cpp
msgid "Linear Stiffness"
@@ -21447,6 +22711,21 @@ msgstr "ПопикÑÐµÐ»ÑŒÐ½Ð°Ñ Ð¿Ñ€Ð¸Ð²Ñзка"
msgid "Billboard"
msgstr ""
+#: scene/3d/sprite_3d.cpp scene/resources/material.cpp
+#, fuzzy
+msgid "Transparent"
+msgstr "ТранÑпонировать"
+
+#: scene/3d/sprite_3d.cpp
+#, fuzzy
+msgid "Shaded"
+msgstr "Шейдер"
+
+#: scene/3d/sprite_3d.cpp
+#, fuzzy
+msgid "Double Sided"
+msgstr "Двойной щелчок"
+
#: scene/3d/sprite_3d.cpp
msgid "Alpha Cut"
msgstr ""
@@ -21492,16 +22771,15 @@ msgstr ""
#: scene/3d/vehicle_body.cpp
#, fuzzy
msgid "Use As Traction"
-msgstr "Разделение:"
+msgstr "ИÑпользовать в качеÑтве Ñ‚Ñги"
#: scene/3d/vehicle_body.cpp
msgid "Use As Steering"
msgstr ""
#: scene/3d/vehicle_body.cpp
-#, fuzzy
msgid "Wheel"
-msgstr "КолёÑико вверх."
+msgstr "КолеÑо"
#: scene/3d/vehicle_body.cpp
msgid "Roll Influence"
@@ -21522,11 +22800,6 @@ msgstr "Выражение"
msgid "Max Force"
msgstr "Ошибка"
-#: scene/3d/vehicle_body.cpp
-#, fuzzy
-msgid "Relaxation"
-msgstr "Разделение:"
-
#: scene/3d/visibility_notifier.cpp
msgid "AABB"
msgstr ""
@@ -21544,7 +22817,7 @@ msgstr "Переопределить"
#: scene/3d/visual_instance.cpp
#, fuzzy
msgid "Material Overlay"
-msgstr "Материалов изменено:"
+msgstr "Ðаложение материала"
#: scene/3d/visual_instance.cpp
#, fuzzy
@@ -21554,7 +22827,7 @@ msgstr "Создать Шейдерный узел"
#: scene/3d/visual_instance.cpp
#, fuzzy
msgid "Extra Cull Margin"
-msgstr "Дополнительные параметры вызова:"
+msgstr "Дополнительный предел отбраковки"
#: scene/3d/visual_instance.cpp
#, fuzzy
@@ -21577,9 +22850,8 @@ msgstr ""
#: scene/3d/visual_instance.cpp scene/animation/skeleton_ik.cpp
#: scene/resources/material.cpp
-#, fuzzy
msgid "Min Distance"
-msgstr "РаÑÑтоÑние выбора:"
+msgstr "Минимальное раÑÑтоÑние"
#: scene/3d/visual_instance.cpp
msgid "Min Hysteresis"
@@ -21662,27 +22934,27 @@ msgstr "Mix узел"
#: scene/animation/animation_blend_tree.cpp
#, fuzzy
msgid "Fadein Time"
-msgstr "Ð’Ñ€ÐµÐ¼Ñ X-Fade (Ñек.):"
+msgstr "Ð’Ñ€ÐµÐ¼Ñ Ð¿Ð¾ÑвлениÑ"
#: scene/animation/animation_blend_tree.cpp
#, fuzzy
msgid "Fadeout Time"
-msgstr "Ð’Ñ€ÐµÐ¼Ñ X-Fade (Ñек.):"
+msgstr "Ð’Ñ€ÐµÐ¼Ñ Ð·Ð°Ñ‚ÑƒÑ…Ð°Ð½Ð¸Ñ"
#: scene/animation/animation_blend_tree.cpp
#, fuzzy
-msgid "autorestart_"
+msgid "Auto Restart"
msgstr "ÐвтоперезапуÑк:"
#: scene/animation/animation_blend_tree.cpp
#, fuzzy
msgid "Autorestart"
-msgstr "ÐвтоперезапуÑк:"
+msgstr "ÐвтоперезапуÑк"
#: scene/animation/animation_blend_tree.cpp
#, fuzzy
msgid "Autorestart Delay"
-msgstr "ÐвтоперезапуÑк:"
+msgstr "Задержка автозапуÑка"
#: scene/animation/animation_blend_tree.cpp
msgid "Autorestart Random Delay"
@@ -21697,12 +22969,12 @@ msgstr "Добавить входной порт"
#: scene/animation/animation_node_state_machine.cpp
#, fuzzy
msgid "Xfade Time"
-msgstr "Ð’Ñ€ÐµÐ¼Ñ X-Fade (Ñек.):"
+msgstr "Ð’Ñ€ÐµÐ¼Ñ Ð·Ð°Ñ‚ÑƒÑ…Ð°Ð½Ð¸Ñ"
#: scene/animation/animation_blend_tree.cpp scene/resources/visual_shader.cpp
#, fuzzy
msgid "Graph Offset"
-msgstr "ОтÑтуп Ñетки:"
+msgstr "Смещение графа"
#: scene/animation/animation_node_state_machine.cpp
#, fuzzy
@@ -21750,20 +23022,13 @@ msgstr "Добавить точку анимации"
#: scene/animation/animation_player.cpp
#, fuzzy
msgid "Playback Options"
-msgstr "Параметры клаÑÑа:"
+msgstr "Параметры воÑпроизведениÑ"
#: scene/animation/animation_player.cpp
#, fuzzy
msgid "Default Blend Time"
msgstr "Тема по умолчанию"
-#: scene/animation/animation_player.cpp scene/animation/animation_tree.cpp
-#: scene/animation/animation_tree_player.cpp
-#: servers/audio/effects/audio_effect_delay.cpp
-#, fuzzy
-msgid "Active"
-msgstr "ДейÑтвие"
-
#: scene/animation/animation_player.cpp
msgid "Method Call Mode"
msgstr ""
@@ -21802,9 +23067,8 @@ msgid "The AnimationPlayer root node is not a valid node."
msgstr "Корневой Ñлемент AnimationPlayer недейÑтвителен."
#: scene/animation/animation_tree.cpp
-#, fuzzy
msgid "Tree Root"
-msgstr "Создать корневой узел:"
+msgstr "Корень дерева"
#: scene/animation/animation_tree.cpp
#, fuzzy
@@ -21887,10 +23151,6 @@ msgstr "Переподчинить узел"
msgid "Max Iterations"
msgstr "Сделать функцию"
-#: scene/animation/tween.cpp scene/resources/texture.cpp
-msgid "Repeat"
-msgstr ""
-
#: scene/animation/tween.cpp
msgid "Playback Process Mode"
msgstr ""
@@ -21921,20 +23181,6 @@ msgstr "Режим выделениÑ"
msgid "Alignment"
msgstr ""
-#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
-#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
-#: scene/resources/style_box.cpp
-#, fuzzy
-msgid "Horizontal"
-msgstr "Горизонтальные:"
-
-#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
-#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
-#: scene/resources/style_box.cpp
-#, fuzzy
-msgid "Vertical"
-msgstr "Вертикальные:"
-
#: scene/gui/base_button.cpp
#, fuzzy
msgid "Shortcut In Tooltip"
@@ -21959,9 +23205,8 @@ msgid "Shortcut"
msgstr "ГорÑчие клавиши"
#: scene/gui/base_button.cpp
-#, fuzzy
msgid "Group"
-msgstr "Группы"
+msgstr "Группа"
#: scene/gui/button.cpp scene/gui/label.cpp
#, fuzzy
@@ -22023,9 +23268,8 @@ msgid "Presets Enabled"
msgstr "ПредуÑтановки"
#: scene/gui/color_picker.cpp
-#, fuzzy
msgid "Presets Visible"
-msgstr "Переключить видимоÑть"
+msgstr "Видимые преÑеты"
#: scene/gui/color_picker.cpp
msgid "Pick a color from the editor window."
@@ -22036,10 +23280,6 @@ msgid "HSV"
msgstr "HSV"
#: scene/gui/color_picker.cpp
-msgid "Raw"
-msgstr "Raw"
-
-#: scene/gui/color_picker.cpp
msgid "Switch between hexadecimal and code values."
msgstr "Переключение между шеÑтнадцатеричными и кодовыми значениÑми."
@@ -22078,14 +23318,13 @@ msgid "Grow Direction"
msgstr "ÐаправлениÑ"
#: scene/gui/control.cpp scene/resources/navigation_mesh.cpp
-#, fuzzy
msgid "Min Size"
-msgstr "Размер обводки:"
+msgstr "Минимальный размер"
#: scene/gui/control.cpp
#, fuzzy
msgid "Pivot Offset"
-msgstr "ОтÑтуп Ñетки:"
+msgstr "Смещение поворота"
#: scene/gui/control.cpp
#, fuzzy
@@ -22107,22 +23346,45 @@ msgid "Focus"
msgstr "ПеремеÑтить Ñ„Ð¾ÐºÑƒÑ Ð½Ð° Ñтроку пути"
#: scene/gui/control.cpp
-msgid "Mouse"
+msgid "Neighbour Left"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Neighbour Top"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Neighbour Right"
msgstr ""
#: scene/gui/control.cpp
#, fuzzy
+msgid "Neighbour Bottom"
+msgstr "Внизу поÑередине"
+
+#: scene/gui/control.cpp
+msgid "Next"
+msgstr "СледующаÑ"
+
+#: scene/gui/control.cpp
+msgid "Previous"
+msgstr "ПредыдущаÑ"
+
+#: scene/gui/control.cpp
+msgid "Mouse"
+msgstr ""
+
+#: scene/gui/control.cpp
msgid "Default Cursor Shape"
-msgstr "Загрузить раÑкладку шины по умолчанию."
+msgstr "Форма курÑора по умолчанию"
#: scene/gui/control.cpp
msgid "Pass On Modal Close Click"
msgstr ""
#: scene/gui/control.cpp
-#, fuzzy
msgid "Size Flags"
-msgstr "Размер: "
+msgstr "Флаги размера"
#: scene/gui/control.cpp
#, fuzzy
@@ -22144,7 +23406,7 @@ msgid "Dialog"
msgstr "XForm диалоговое окно"
#: scene/gui/dialogs.cpp
-msgid "Hide On Ok"
+msgid "Hide On OK"
msgstr ""
#: scene/gui/dialogs.cpp scene/gui/label.cpp
@@ -22175,14 +23437,12 @@ msgid "Right Disconnects"
msgstr "ОтÑоединить"
#: scene/gui/graph_edit.cpp
-#, fuzzy
msgid "Scroll Offset"
-msgstr "ОтÑтуп Ñетки:"
+msgstr "Смещение прокрутки"
#: scene/gui/graph_edit.cpp
-#, fuzzy
msgid "Snap Distance"
-msgstr "РаÑÑтоÑние выбора:"
+msgstr "РаÑÑтоÑние привÑзки"
#: scene/gui/graph_edit.cpp
#, fuzzy
@@ -22243,7 +23503,7 @@ msgid "Timers"
msgstr "ВремÑ"
#: scene/gui/item_list.cpp scene/gui/popup_menu.cpp scene/gui/tree.cpp
-msgid "Incremental Search Max Interval (msec)"
+msgid "Incremental Search Max Interval Msec"
msgstr ""
#: scene/gui/item_list.cpp scene/gui/tree.cpp
@@ -22278,9 +23538,8 @@ msgid "Fixed Column Width"
msgstr ""
#: scene/gui/item_list.cpp
-#, fuzzy
msgid "Icon Scale"
-msgstr "Случайный размер:"
+msgstr "МаÑштаб иконки"
#: scene/gui/item_list.cpp
#, fuzzy
@@ -22292,9 +23551,8 @@ msgid "Valign"
msgstr ""
#: scene/gui/label.cpp scene/gui/rich_text_label.cpp
-#, fuzzy
msgid "Visible Characters"
-msgstr "ДопуÑтимые Ñимволы:"
+msgstr "Видимые Ñимволы"
#: scene/gui/label.cpp scene/gui/rich_text_label.cpp
#, fuzzy
@@ -22320,7 +23578,7 @@ msgstr ""
#: scene/gui/line_edit.cpp
#, fuzzy
msgid "Secret Character"
-msgstr "ДопуÑтимые Ñимволы:"
+msgstr "Символ замены"
#: scene/gui/line_edit.cpp
msgid "Expand To Text Length"
@@ -22384,9 +23642,8 @@ msgid "Blink"
msgstr ""
#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
-#, fuzzy
msgid "Blink Speed"
-msgstr "СкороÑть:"
+msgstr "СкороÑть миганиÑ"
#: scene/gui/link_button.cpp
msgid "Underline"
@@ -22473,9 +23730,8 @@ msgid "Allow Search"
msgstr "ПоиÑк"
#: scene/gui/progress_bar.cpp
-#, fuzzy
msgid "Percent"
-msgstr "Ðедавнее:"
+msgstr "Процентов"
#: scene/gui/range.cpp
msgid "If \"Exp Edit\" is enabled, \"Min Value\" must be greater than 0."
@@ -22492,9 +23748,8 @@ msgid "Max Value"
msgstr "Значение"
#: scene/gui/range.cpp
-#, fuzzy
msgid "Page"
-msgstr "Страница: "
+msgstr "Страница"
#: scene/gui/range.cpp
#, fuzzy
@@ -22537,7 +23792,7 @@ msgstr "ÐвтоотÑтуп"
#: scene/gui/rich_text_effect.cpp
#, fuzzy
msgid "Elapsed Time"
-msgstr "Ð’Ñ€ÐµÐ¼Ñ ÑмешиваниÑ:"
+msgstr "Прошедшее времÑ"
#: scene/gui/rich_text_effect.cpp
#, fuzzy
@@ -22545,9 +23800,8 @@ msgid "Env"
msgstr "Конец"
#: scene/gui/rich_text_effect.cpp
-#, fuzzy
msgid "Character"
-msgstr "ДопуÑтимые Ñимволы:"
+msgstr "Символ"
#: scene/gui/rich_text_label.cpp
msgid "BBCode"
@@ -22558,9 +23812,8 @@ msgid "Meta Underlined"
msgstr ""
#: scene/gui/rich_text_label.cpp
-#, fuzzy
msgid "Tab Size"
-msgstr "Размер:"
+msgstr "Размер табов"
#: scene/gui/rich_text_label.cpp
#, fuzzy
@@ -22569,7 +23822,7 @@ msgstr "Изменить Ð²ÐµÑ ÐºÐ¾Ñтей"
#: scene/gui/rich_text_label.cpp
msgid "Scroll Active"
-msgstr ""
+msgstr "ÐÐºÑ‚Ð¸Ð²Ð½Ð°Ñ Ð¿Ñ€Ð¾ÐºÑ€ÑƒÑ‚ÐºÐ°"
#: scene/gui/rich_text_label.cpp
msgid "Scroll Following"
@@ -22583,7 +23836,7 @@ msgstr "Только выделенное"
#: scene/gui/rich_text_label.cpp scene/gui/text_edit.cpp
#, fuzzy
msgid "Override Selected Font Color"
-msgstr "ÐаÑтроить выбранный профиль:"
+msgstr "Переопределить выбранный цвет шрифта"
#: scene/gui/rich_text_label.cpp
#, fuzzy
@@ -22607,14 +23860,13 @@ msgstr ""
"минимальный размер вручную."
#: scene/gui/scroll_container.cpp
-#, fuzzy
msgid "Follow Focus"
-msgstr "Заполнить поверхноÑть"
+msgstr "Следовать за фокуÑом"
#: scene/gui/scroll_container.cpp
#, fuzzy
msgid "Horizontal Enabled"
-msgstr "Горизонтальные:"
+msgstr "Ð“Ð¾Ñ€Ð¸Ð·Ð¾Ð½Ñ‚Ð°Ð»ÑŒÐ½Ð°Ñ Ð²ÐºÐ»ÑŽÑ‡ÐµÐ½Ð°"
#: scene/gui/scroll_container.cpp
#, fuzzy
@@ -22637,22 +23889,20 @@ msgstr "Выбрать цвет"
#: scene/gui/slider.cpp
#, fuzzy
msgid "Ticks On Borders"
-msgstr "в порÑдке:"
+msgstr "Галочки на границах"
#: scene/gui/spin_box.cpp
-#, fuzzy
msgid "Prefix"
-msgstr "ПрефикÑ:"
+msgstr "ПрефикÑ"
#: scene/gui/spin_box.cpp
-#, fuzzy
msgid "Suffix"
-msgstr "СуффикÑ:"
+msgstr "СуффикÑ"
#: scene/gui/split_container.cpp
#, fuzzy
msgid "Split Offset"
-msgstr "ОтÑтуп Ñетки:"
+msgstr "Смещение разделениÑ"
#: scene/gui/split_container.cpp scene/gui/tree.cpp
#, fuzzy
@@ -22669,9 +23919,8 @@ msgid "Tab Align"
msgstr ""
#: scene/gui/tab_container.cpp scene/gui/tabs.cpp
-#, fuzzy
msgid "Current Tab"
-msgstr "Выбранный:"
+msgstr "Ð¢ÐµÐºÑƒÑ‰Ð°Ñ Ð²ÐºÐ»Ð°Ð´ÐºÐ°"
#: scene/gui/tab_container.cpp
#, fuzzy
@@ -22685,7 +23934,7 @@ msgstr ""
#: scene/gui/tab_container.cpp scene/gui/tabs.cpp
#, fuzzy
msgid "Drag To Rearrange Enabled"
-msgstr "Перетащите чтобы изменить порÑдок."
+msgstr "ПеретаÑкивание Ð´Ð»Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð¿Ð¾Ñ€Ñдка включено"
#: scene/gui/tab_container.cpp
msgid "Use Hidden Tabs For Min Size"
@@ -22701,22 +23950,19 @@ msgstr ""
#: scene/gui/text_edit.cpp
msgid "Readonly"
-msgstr ""
+msgstr "Только Ð´Ð»Ñ Ñ‡Ñ‚ÐµÐ½Ð¸Ñ"
#: scene/gui/text_edit.cpp
-#, fuzzy
msgid "Bookmark Gutter"
-msgstr "Закладки"
+msgstr "ПолоÑа закладок"
#: scene/gui/text_edit.cpp
-#, fuzzy
msgid "Breakpoint Gutter"
-msgstr "ПропуÑтить точки оÑтанова"
+msgstr "ПолоÑа точек оÑтанова"
#: scene/gui/text_edit.cpp
-#, fuzzy
msgid "Fold Gutter"
-msgstr "Папка:"
+msgstr "ПолоÑа ÑворачиваниÑ"
#: scene/gui/text_edit.cpp
#, fuzzy
@@ -22724,24 +23970,23 @@ msgid "Hiding Enabled"
msgstr "Включить"
#: scene/gui/text_edit.cpp
-#, fuzzy
msgid "Wrap Enabled"
-msgstr "Включить"
+msgstr "ÐŸÐµÑ€ÐµÐ½Ð¾Ñ Ð²ÐºÐ»ÑŽÑ‡ÐµÐ½"
#: scene/gui/text_edit.cpp
#, fuzzy
msgid "Scroll Vertical"
-msgstr "Вертикальные:"
+msgstr "Ð’ÐµÑ€Ñ‚Ð¸ÐºÐ°Ð»ÑŒÐ½Ð°Ñ Ð¿Ñ€Ð¾ÐºÑ€ÑƒÑ‚ÐºÐ°"
#: scene/gui/text_edit.cpp
#, fuzzy
msgid "Scroll Horizontal"
-msgstr "Горизонтальные:"
+msgstr "Прокрутка по горизонтали"
#: scene/gui/text_edit.cpp
#, fuzzy
msgid "Draw"
-msgstr "Вызовов отриÑовки:"
+msgstr "РиÑовать"
#: scene/gui/text_edit.cpp
#, fuzzy
@@ -22799,9 +24044,8 @@ msgid "Progress Offset"
msgstr ""
#: scene/gui/texture_progress.cpp
-#, fuzzy
msgid "Fill Mode"
-msgstr "Режим воÑпроизведениÑ:"
+msgstr "Режим заполнениÑ"
#: scene/gui/texture_progress.cpp
msgid "Tint"
@@ -22819,7 +24063,7 @@ msgstr "Инициализировать"
#: scene/gui/texture_progress.cpp
#, fuzzy
msgid "Fill Degrees"
-msgstr "Поворот на %s градуÑов."
+msgstr "Заполнить градуÑÑ‹"
#: scene/gui/texture_progress.cpp scene/resources/primitive_meshes.cpp
#, fuzzy
@@ -22831,6 +24075,26 @@ msgstr "Слева по центру"
msgid "Nine Patch Stretch"
msgstr "Режим интерполÑции"
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Left"
+msgstr "Задать отÑтуп"
+
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Top"
+msgstr "Задать отÑтуп"
+
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Right"
+msgstr "Задать отÑтуп"
+
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Bottom"
+msgstr "Режим выделениÑ"
+
#: scene/gui/tree.cpp
msgid "Custom Minimum Height"
msgstr ""
@@ -22850,9 +24114,8 @@ msgid "Hide Folding"
msgstr "Ð—Ð°Ð±Ð»Ð¾ÐºÐ¸Ñ€Ð¾Ð²Ð°Ð½Ð½Ð°Ñ ÐºÐ½Ð¾Ð¿ÐºÐ°"
#: scene/gui/tree.cpp
-#, fuzzy
msgid "Hide Root"
-msgstr "Создать корневой узел:"
+msgstr "Скрывать корень"
#: scene/gui/tree.cpp
msgid "Drop Mode Flags"
@@ -22868,8 +24131,9 @@ msgid "Paused"
msgstr ""
#: scene/gui/video_player.cpp
-msgid "Buffering (msec)"
-msgstr ""
+#, fuzzy
+msgid "Buffering Msec"
+msgstr "БуферизациÑ"
#: scene/gui/video_player.cpp
#, fuzzy
@@ -22905,9 +24169,8 @@ msgid "Max Redirects"
msgstr ""
#: scene/main/http_request.cpp
-#, fuzzy
msgid "Timeout"
-msgstr "Ð’Ñ€ÐµÐ¼Ñ Ð¾Ð¶Ð¸Ð´Ð°Ð½Ð¸Ñ."
+msgstr "Таймаут"
#: scene/main/node.cpp
#, fuzzy
@@ -22944,9 +24207,8 @@ msgid "Filename"
msgstr "Переименовать"
#: scene/main/node.cpp
-#, fuzzy
msgid "Owner"
-msgstr "Владельцы:"
+msgstr "Владелец"
#: scene/main/node.cpp scene/main/scene_tree.cpp
#, fuzzy
@@ -22956,7 +24218,7 @@ msgstr "Умножить %s"
#: scene/main/node.cpp
#, fuzzy
msgid "Custom Multiplayer"
-msgstr "Задать неÑколько:"
+msgstr "ПользовательÑкий мультиплеер"
#: scene/main/node.cpp
#, fuzzy
@@ -23038,14 +24300,12 @@ msgid "Draw 2D Outlines"
msgstr "Создать контур"
#: scene/main/scene_tree.cpp servers/visual_server.cpp
-#, fuzzy
msgid "Reflections"
-msgstr "ÐаправлениÑ"
+msgstr "ОтражениÑ"
#: scene/main/scene_tree.cpp
-#, fuzzy
msgid "Atlas Size"
-msgstr "Размер обводки:"
+msgstr "Размер атлаÑа"
#: scene/main/scene_tree.cpp
msgid "Atlas Subdiv"
@@ -23103,9 +24363,8 @@ msgstr ""
"таймера Ñ Ð¾Ñ‡ÐµÐ½ÑŒ низким временем ожиданиÑ."
#: scene/main/timer.cpp
-#, fuzzy
msgid "Autostart"
-msgstr "ÐвтоперезапуÑк:"
+msgstr "ÐвтозапуÑк"
#: scene/main/viewport.cpp
#, fuzzy
@@ -23148,11 +24407,11 @@ msgstr ""
#: scene/main/viewport.cpp scene/resources/world_2d.cpp
msgid "World"
-msgstr ""
+msgstr "Мир"
#: scene/main/viewport.cpp
msgid "World 2D"
-msgstr ""
+msgstr "Мир 2D"
#: scene/main/viewport.cpp
#, fuzzy
@@ -23166,7 +24425,7 @@ msgstr "Изменить входное значение"
#: scene/main/viewport.cpp
msgid "FXAA"
-msgstr ""
+msgstr "FXAA"
#: scene/main/viewport.cpp
#, fuzzy
@@ -23174,9 +24433,8 @@ msgid "Debanding"
msgstr "ПривÑзка"
#: scene/main/viewport.cpp
-#, fuzzy
msgid "Disable 3D"
-msgstr "Отключённый Ñлемент"
+msgstr "Отключить 3D"
#: scene/main/viewport.cpp
#, fuzzy
@@ -23195,7 +24453,7 @@ msgstr "Отладка"
#: scene/main/viewport.cpp
#, fuzzy
msgid "Render Target"
-msgstr "ОтриÑовщик:"
+msgstr "Цель рендеринга"
#: scene/main/viewport.cpp
msgid "V Flip"
@@ -23207,29 +24465,40 @@ msgid "Clear Mode"
msgstr "Режим измерениÑ"
#: scene/main/viewport.cpp
-#, fuzzy
msgid "Enable 2D"
-msgstr "Включить"
+msgstr "Включить 2D"
#: scene/main/viewport.cpp
-#, fuzzy
msgid "Enable 3D"
-msgstr "Включить"
+msgstr "Включить 3D"
#: scene/main/viewport.cpp
-#, fuzzy
msgid "Object Picking"
-msgstr "Включить режим кальки"
+msgstr "Выбор объектов"
#: scene/main/viewport.cpp
-#, fuzzy
msgid "Disable Input"
-msgstr "Отключённый Ñлемент"
+msgstr "Отключить ввод"
#: scene/main/viewport.cpp servers/visual_server.cpp
-#, fuzzy
msgid "Shadow Atlas"
-msgstr "Ðовый атлаÑ"
+msgstr "ÐÑ‚Ð»Ð°Ñ Ñ‚ÐµÐ½ÐµÐ¹"
+
+#: scene/main/viewport.cpp
+msgid "Quad 0"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 1"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 2"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 3"
+msgstr ""
#: scene/main/viewport.cpp
#, fuzzy
@@ -23246,6 +24515,11 @@ msgid "Tooltip Delay (sec)"
msgstr ""
#: scene/register_scene_types.cpp
+#, fuzzy
+msgid "Swap OK Cancel"
+msgstr "UI Отменить"
+
+#: scene/register_scene_types.cpp
msgid "Use hiDPI"
msgstr ""
@@ -23255,24 +24529,8 @@ msgid "Custom"
msgstr "ПользовательÑкий узел"
#: scene/register_scene_types.cpp
-#, fuzzy
msgid "Custom Font"
-msgstr "ПользовательÑкий узел"
-
-#: scene/resources/audio_stream_sample.cpp
-#, fuzzy
-msgid "Loop Mode"
-msgstr "Режим перемещениÑ"
-
-#: scene/resources/audio_stream_sample.cpp
-#, fuzzy
-msgid "Loop Begin"
-msgstr "Режим перемещениÑ"
-
-#: scene/resources/audio_stream_sample.cpp
-#, fuzzy
-msgid "Loop End"
-msgstr "Режим перемещениÑ"
+msgstr "ПользовательÑкий шрифт"
#: scene/resources/audio_stream_sample.cpp
#: servers/audio/effects/audio_stream_generator.cpp servers/audio_server.cpp
@@ -23282,12 +24540,11 @@ msgstr "Mix узел"
#: scene/resources/audio_stream_sample.cpp
msgid "Stereo"
-msgstr ""
+msgstr "Стерео"
#: scene/resources/concave_polygon_shape_2d.cpp
-#, fuzzy
msgid "Segments"
-msgstr "Ðргументы главной Ñцены:"
+msgstr "Сегменты"
#: scene/resources/curve.cpp
#, fuzzy
@@ -23308,14 +24565,13 @@ msgid "Override Oversampling"
msgstr "Переопределить Ñлемент"
#: scene/resources/dynamic_font.cpp
-#, fuzzy
msgid "Font Path"
-msgstr "ПеремеÑтить Ñ„Ð¾ÐºÑƒÑ Ð½Ð° Ñтроку пути"
+msgstr "Путь к шрифту"
#: scene/resources/dynamic_font.cpp
#, fuzzy
msgid "Outline Size"
-msgstr "Размер обводки:"
+msgstr "Размер контура"
#: scene/resources/dynamic_font.cpp
#, fuzzy
@@ -23330,25 +24586,34 @@ msgstr "Сигналы"
#: scene/resources/dynamic_font.cpp
#, fuzzy
msgid "Extra Spacing"
-msgstr "Дополнительные параметры:"
+msgstr "Дополнительный интервал"
#: scene/resources/dynamic_font.cpp
#, fuzzy
+msgid "Char"
+msgstr "Символ"
+
+#: scene/resources/dynamic_font.cpp scene/resources/world.cpp
+#: scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Space"
+msgstr "Ð“Ð»Ð°Ð²Ð½Ð°Ñ Ñцена"
+
+#: scene/resources/dynamic_font.cpp
msgid "Font"
-msgstr "Шрифты"
+msgstr "Шрифт"
#: scene/resources/dynamic_font.cpp
-#, fuzzy
msgid "Font Data"
-msgstr "С данными"
+msgstr "Данные шрифта"
#: scene/resources/environment.cpp
msgid "Background"
-msgstr ""
+msgstr "Фон"
#: scene/resources/environment.cpp scene/resources/sky.cpp
msgid "Sky"
-msgstr ""
+msgstr "Ðебо"
#: scene/resources/environment.cpp
#, fuzzy
@@ -23363,12 +24628,12 @@ msgstr "Онлайн-документациÑ"
#: scene/resources/environment.cpp
#, fuzzy
msgid "Sky Rotation"
-msgstr "Шаг поворота:"
+msgstr "Вращение неба"
#: scene/resources/environment.cpp
#, fuzzy
msgid "Sky Rotation Degrees"
-msgstr "Поворот на %s градуÑов."
+msgstr "ГрадуÑÑ‹ поворота неба"
#: scene/resources/environment.cpp
msgid "Canvas Max Layer"
@@ -23393,14 +24658,12 @@ msgid "Fog"
msgstr ""
#: scene/resources/environment.cpp
-#, fuzzy
msgid "Sun Color"
-msgstr "Сохранение файла:"
+msgstr "Цвет Ñолнца"
#: scene/resources/environment.cpp
-#, fuzzy
msgid "Sun Amount"
-msgstr "Величина:"
+msgstr "КоличеÑтво Ñолнц"
#: scene/resources/environment.cpp
#, fuzzy
@@ -23491,12 +24754,12 @@ msgstr "Шаг"
#: scene/resources/environment.cpp
#, fuzzy
msgid "Fade In"
-msgstr "ПроÑвление (Ñек.):"
+msgstr "ПроÑвление"
#: scene/resources/environment.cpp
#, fuzzy
msgid "Fade Out"
-msgstr "ИÑчезновение (Ñек.):"
+msgstr "ИÑчезновение"
#: scene/resources/environment.cpp
#, fuzzy
@@ -23512,9 +24775,8 @@ msgid "SSAO"
msgstr ""
#: scene/resources/environment.cpp
-#, fuzzy
msgid "Radius 2"
-msgstr "РадиуÑ:"
+msgstr "Ð Ð°Ð´Ð¸ÑƒÑ 2"
#: scene/resources/environment.cpp
msgid "Intensity 2"
@@ -23543,14 +24805,13 @@ msgid "DOF Far Blur"
msgstr ""
#: scene/resources/environment.cpp scene/resources/material.cpp
-#, fuzzy
msgid "Distance"
-msgstr "РаÑÑтоÑние выбора:"
+msgstr "РаÑÑтоÑние"
#: scene/resources/environment.cpp
#, fuzzy
msgid "Transition"
-msgstr "Переход: "
+msgstr "Переход"
#: scene/resources/environment.cpp
msgid "DOF Near Blur"
@@ -23561,6 +24822,45 @@ msgid "Glow"
msgstr ""
#: scene/resources/environment.cpp
+#, fuzzy
+msgid "Levels"
+msgstr "Разработчики"
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "1"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+#, fuzzy
+msgid "2"
+msgstr "2D"
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+#, fuzzy
+msgid "3"
+msgstr "3D"
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "4"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "5"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "6"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "7"
+msgstr ""
+
+#: scene/resources/environment.cpp
msgid "Bloom"
msgstr ""
@@ -23593,12 +24893,12 @@ msgstr "Свет"
#: scene/resources/environment.cpp
#, fuzzy
msgid "Saturation"
-msgstr "Разделение:"
+msgstr "ÐаÑыщенноÑть"
#: scene/resources/environment.cpp
#, fuzzy
msgid "Color Correction"
-msgstr "Ð¤ÑƒÐ½ÐºÑ†Ð¸Ñ Ñ†Ð²ÐµÑ‚Ð°."
+msgstr "Ð¦Ð²ÐµÑ‚Ð¾Ð²Ð°Ñ ÐºÐ¾Ñ€Ñ€ÐµÐºÑ†Ð¸Ñ"
#: scene/resources/font.cpp
msgid "Chars"
@@ -23612,7 +24912,7 @@ msgstr "ПредупреждениÑ"
#: scene/resources/font.cpp
#, fuzzy
msgid "Ascent"
-msgstr "Ðедавнее:"
+msgstr "Ascent"
#: scene/resources/font.cpp
#, fuzzy
@@ -23622,7 +24922,7 @@ msgstr "Режим без отвлечениÑ"
#: scene/resources/gradient.cpp
#, fuzzy
msgid "Offsets"
-msgstr "ОтÑтуп:"
+msgstr "ОтÑтупы"
#: scene/resources/height_map_shape.cpp
msgid "Map Width"
@@ -23645,22 +24945,78 @@ msgstr ""
#: scene/resources/material.cpp
#, fuzzy
msgid "Render Priority"
-msgstr "Включить приоритет"
+msgstr "Приоритет рендеринга"
#: scene/resources/material.cpp
-#, fuzzy
msgid "Next Pass"
-msgstr "Ð¡Ð»ÐµÐ´ÑƒÑŽÑ‰Ð°Ñ Ð¿Ð¾ÑкоÑть"
+msgstr "Следующий проход"
+
+#: scene/resources/material.cpp
+msgid "Use Shadow To Opacity"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Unshaded"
+msgstr "Режим без теней"
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Vertex Lighting"
+msgstr "ПрÑмое оÑвещение"
+
+#: scene/resources/material.cpp
+msgid "No Depth Test"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Use Point Size"
+msgstr "Вид Ñпереди"
+
+#: scene/resources/material.cpp
+msgid "World Triplanar"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Fixed Size"
+msgstr "Вид Ñпереди"
+
+#: scene/resources/material.cpp
+msgid "Albedo Tex Force sRGB"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Do Not Receive Shadows"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Disable Ambient Light"
+msgstr "ОтÑтуп вправо"
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Ensure Correct Normals"
+msgstr "Преобразование нормалей"
#: scene/resources/material.cpp
#, fuzzy
msgid "Vertex Color"
msgstr "Вершины"
+#: scene/resources/material.cpp
+msgid "Use As Albedo"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Is sRGB"
+msgstr ""
+
#: scene/resources/material.cpp servers/visual_server.cpp
-#, fuzzy
msgid "Parameters"
-msgstr "Параметр изменён:"
+msgstr "Параметры"
#: scene/resources/material.cpp
#, fuzzy
@@ -23693,13 +25049,22 @@ msgid "Billboard Mode"
msgstr "Режим измерениÑ"
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Billboard Keep Scale"
+msgstr "Режим измерениÑ"
+
+#: scene/resources/material.cpp
msgid "Grow"
msgstr ""
#: scene/resources/material.cpp
#, fuzzy
msgid "Grow Amount"
-msgstr "Величина:"
+msgstr "Сумма роÑта"
+
+#: scene/resources/material.cpp
+msgid "Use Alpha Scissor"
+msgstr ""
#: scene/resources/material.cpp
msgid "Alpha Scissor Threshold"
@@ -23733,10 +25098,20 @@ msgid "Metallic Specular"
msgstr ""
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Metallic Texture"
+msgstr "ÐžÐ±Ñ‹Ñ‡Ð½Ð°Ñ Ñ‚ÐµÐºÑтура"
+
+#: scene/resources/material.cpp
msgid "Metallic Texture Channel"
msgstr ""
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Roughness Texture"
+msgstr "Удалить текÑтуру"
+
+#: scene/resources/material.cpp
msgid "Roughness Texture Channel"
msgstr ""
@@ -23756,6 +25131,16 @@ msgid "Emission Operator"
msgstr "Цвета излучениÑ"
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Emission On UV2"
+msgstr "МаÑка излучениÑ"
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Emission Texture"
+msgstr "ИÑточник излучениÑ: "
+
+#: scene/resources/material.cpp
msgid "NormalMap"
msgstr ""
@@ -23766,7 +25151,12 @@ msgstr ""
#: scene/resources/material.cpp
#, fuzzy
msgid "Rim Tint"
-msgstr "Случайный наклон:"
+msgstr "Оттенок обода"
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Rim Texture"
+msgstr "Удалить текÑтуру"
#: scene/resources/material.cpp
#, fuzzy
@@ -23779,15 +25169,28 @@ msgid "Clearcoat Gloss"
msgstr "ОчиÑтить позу"
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Clearcoat Texture"
+msgstr "Тема редактора"
+
+#: scene/resources/material.cpp
msgid "Anisotropy"
msgstr ""
#: scene/resources/material.cpp
+msgid "Anisotropy Flowmap"
+msgstr ""
+
+#: scene/resources/material.cpp
#, fuzzy
msgid "Ambient Occlusion"
msgstr "Перекрытие"
#: scene/resources/material.cpp
+msgid "On UV2"
+msgstr ""
+
+#: scene/resources/material.cpp
#, fuzzy
msgid "Texture Channel"
msgstr "ОблаÑть текÑтуры"
@@ -23822,12 +25225,17 @@ msgstr ""
#: scene/resources/material.cpp
#, fuzzy
msgid "Transmission"
-msgstr "Переход: "
+msgstr "ПропуÑкание Ñвета"
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Transmission Texture"
+msgstr "ПропуÑкание Ñвета"
#: scene/resources/material.cpp
#, fuzzy
msgid "Refraction"
-msgstr "Разделение:"
+msgstr "Преломление"
#: scene/resources/material.cpp scene/resources/navigation_mesh.cpp
msgid "Detail"
@@ -23844,6 +25252,10 @@ msgid "UV1"
msgstr "UV"
#: scene/resources/material.cpp
+msgid "Triplanar"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Triplanar Sharpness"
msgstr ""
@@ -23883,12 +25295,12 @@ msgstr ""
#: scene/resources/multimesh.cpp
#, fuzzy
msgid "Color Format"
-msgstr "Оператор цвета."
+msgstr "Формат цвета"
#: scene/resources/multimesh.cpp
#, fuzzy
msgid "Transform Format"
-msgstr "Преобразование прервано."
+msgstr "Формат преобразованиÑ"
#: scene/resources/multimesh.cpp
msgid "Custom Data Format"
@@ -23906,7 +25318,7 @@ msgstr ""
#: scene/resources/multimesh.cpp
#, fuzzy
msgid "Transform Array"
-msgstr "Преобразование прервано."
+msgstr "МаÑÑив преобразованиÑ"
#: scene/resources/multimesh.cpp
#, fuzzy
@@ -23931,7 +25343,7 @@ msgstr "Задать базовый тип вариации"
#: scene/resources/navigation_mesh.cpp
#, fuzzy
msgid "Parsed Geometry Type"
-msgstr "Ðнализ геометрии..."
+msgstr "Разобранный тип геометрии"
#: scene/resources/navigation_mesh.cpp
msgid "Source Geometry Mode"
@@ -23975,7 +25387,7 @@ msgstr ""
#: scene/resources/navigation_mesh.cpp
#, fuzzy
msgid "Sample Distance"
-msgstr "РаÑÑтоÑние выбора:"
+msgstr "РаÑÑтоÑние образца"
#: scene/resources/navigation_mesh.cpp
#, fuzzy
@@ -24038,12 +25450,12 @@ msgstr "Модификатор Ð·Ð°Ð¼ÐµÐ´Ð»ÐµÐ½Ð¸Ñ Ñвободного видÐ
#: scene/resources/particles_material.cpp
#, fuzzy
msgid "Point Texture"
-msgstr "Точек излучениÑ:"
+msgstr "ТекÑтура точки"
#: scene/resources/particles_material.cpp
#, fuzzy
msgid "Normal Texture"
-msgstr "ИÑточник излучениÑ: "
+msgstr "ÐžÐ±Ñ‹Ñ‡Ð½Ð°Ñ Ñ‚ÐµÐºÑтура"
#: scene/resources/particles_material.cpp
#, fuzzy
@@ -24055,6 +25467,16 @@ msgstr "Тема редактора"
msgid "Point Count"
msgstr "Добавить входной порт"
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Scale Random"
+msgstr "КоÑффициент маÑштабированиÑ:"
+
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Scale Curve"
+msgstr "Сомкнуть кривую"
+
#: scene/resources/physics_material.cpp
msgid "Rough"
msgstr ""
@@ -24064,9 +25486,8 @@ msgid "Absorbent"
msgstr ""
#: scene/resources/plane_shape.cpp
-#, fuzzy
msgid "Plane"
-msgstr "ПлоÑкоÑть:"
+msgstr "ПлоÑкоÑть"
#: scene/resources/primitive_meshes.cpp
#, fuzzy
@@ -24092,7 +25513,7 @@ msgstr ""
#: scene/resources/primitive_meshes.cpp
#, fuzzy
msgid "Top Radius"
-msgstr "РадиуÑ:"
+msgstr "Верхний радиуÑ"
#: scene/resources/primitive_meshes.cpp
#, fuzzy
@@ -24117,10 +25538,6 @@ msgid "A"
msgstr ""
#: scene/resources/shader.cpp
-msgid "Code"
-msgstr ""
-
-#: scene/resources/shader.cpp
#, fuzzy
msgid "Custom Defines"
msgstr "ЗапуÑтить произвольную Ñцену"
@@ -24132,11 +25549,11 @@ msgstr ""
#: scene/resources/sky.cpp
#, fuzzy
msgid "Radiance Size"
-msgstr "Размер обводки:"
+msgstr "Размер ÑиÑниÑ"
#: scene/resources/sky.cpp
msgid "Panorama"
-msgstr ""
+msgstr "Панорама"
#: scene/resources/sky.cpp
#, fuzzy
@@ -24144,14 +25561,12 @@ msgid "Top Color"
msgstr "Следующий Ñтаж"
#: scene/resources/sky.cpp
-#, fuzzy
msgid "Horizon Color"
-msgstr "Сохранение файла:"
+msgstr "Цвет горизонта"
#: scene/resources/sky.cpp
-#, fuzzy
msgid "Ground"
-msgstr "Сгруппирован"
+msgstr "ЗемлÑ"
#: scene/resources/sky.cpp
#, fuzzy
@@ -24159,18 +25574,16 @@ msgid "Bottom Color"
msgstr "Закладки"
#: scene/resources/sky.cpp
-#, fuzzy
msgid "Sun"
-msgstr "ЗапуÑтить"
+msgstr "Солнце"
#: scene/resources/sky.cpp
-#, fuzzy
msgid "Latitude"
-msgstr "Заменить"
+msgstr "Широта"
#: scene/resources/sky.cpp
msgid "Longitude"
-msgstr ""
+msgstr "Долгота"
#: scene/resources/sky.cpp
msgid "Angle Min"
@@ -24217,15 +25630,6 @@ msgstr ""
#: scene/resources/texture.cpp
#, fuzzy
-msgid "Storage"
-msgstr "Сохранение файла:"
-
-#: scene/resources/texture.cpp
-msgid "Lossy Quality"
-msgstr ""
-
-#: scene/resources/texture.cpp
-#, fuzzy
msgid "Load Path"
msgstr "Загрузить преÑет"
@@ -24235,9 +25639,8 @@ msgid "Base Texture"
msgstr "Удалить текÑтуру"
#: scene/resources/texture.cpp
-#, fuzzy
msgid "Image Size"
-msgstr "Страница: "
+msgstr "Размер изображениÑ"
#: scene/resources/texture.cpp
#, fuzzy
@@ -24252,12 +25655,12 @@ msgstr "Захват"
#: scene/resources/texture.cpp
#, fuzzy
msgid "Fill From"
-msgstr "Режим воÑпроизведениÑ:"
+msgstr "Заполнить от"
#: scene/resources/texture.cpp
#, fuzzy
msgid "Fill To"
-msgstr "Режим воÑпроизведениÑ:"
+msgstr "Заполнить до"
#: scene/resources/texture.cpp
#, fuzzy
@@ -24356,11 +25759,6 @@ msgstr "ÐÐµÐ²ÐµÑ€Ð½Ð°Ñ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ ÑÑ€Ð°Ð²Ð½ÐµÐ½Ð¸Ñ Ð´Ð»Ñ Ñтого Ñ‚Ð
msgid "Fallback Environment"
msgstr "Окружение"
-#: scene/resources/world.cpp scene/resources/world_2d.cpp
-#, fuzzy
-msgid "Space"
-msgstr "Ð“Ð»Ð°Ð²Ð½Ð°Ñ Ñцена"
-
#: scene/resources/world.cpp
#, fuzzy
msgid "Scenario"
@@ -24418,7 +25816,7 @@ msgstr "Переключатель"
#: servers/audio/audio_stream.cpp
#, fuzzy
msgid "Random Pitch"
-msgstr "Случайный наклон:"
+msgstr "Случайный шаг"
#: servers/audio/effects/audio_effect_capture.cpp
#: servers/audio/effects/audio_effect_spectrum_analyzer.cpp
@@ -24441,10 +25839,37 @@ msgstr ""
msgid "Wet"
msgstr ""
-#: servers/audio/effects/audio_effect_compressor.cpp
-msgid "Threshold"
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "Voice"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+msgid "Delay (ms)"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_phaser.cpp
+msgid "Rate Hz"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#, fuzzy
+msgid "Depth (ms)"
+msgstr "Глубина"
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+msgid "Level dB"
msgstr ""
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+#: servers/audio/effects/audio_effect_panner.cpp
+#, fuzzy
+msgid "Pan"
+msgstr "Панорама"
+
#: servers/audio/effects/audio_effect_compressor.cpp
#: servers/audio/effects/audio_effect_filter.cpp
msgid "Gain"
@@ -24468,20 +25893,6 @@ msgid "Tap 1"
msgstr ""
#: servers/audio/effects/audio_effect_delay.cpp
-msgid "Delay (ms)"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_delay.cpp
-msgid "Level dB"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_delay.cpp
-#: servers/audio/effects/audio_effect_panner.cpp
-#, fuzzy
-msgid "Pan"
-msgstr "ПлоÑкоÑть:"
-
-#: servers/audio/effects/audio_effect_delay.cpp
msgid "Tap 2"
msgstr ""
@@ -24543,10 +25954,6 @@ msgstr ""
msgid "Range Max Hz"
msgstr ""
-#: servers/audio/effects/audio_effect_phaser.cpp
-msgid "Rate Hz"
-msgstr ""
-
#: servers/audio/effects/audio_effect_pitch_shift.cpp
msgid "Oversampling"
msgstr ""
@@ -24555,14 +25962,14 @@ msgstr ""
#: servers/audio/effects/audio_effect_spectrum_analyzer.cpp
#, fuzzy
msgid "FFT Size"
-msgstr "Размер:"
+msgstr "FFT-размер"
#: servers/audio/effects/audio_effect_reverb.cpp
msgid "Predelay"
msgstr ""
#: servers/audio/effects/audio_effect_reverb.cpp
-msgid "(msec)"
+msgid "Msec"
msgstr ""
#: servers/audio/effects/audio_effect_reverb.cpp
@@ -24585,7 +25992,7 @@ msgstr ""
#: servers/audio/effects/audio_effect_stereo_enhance.cpp
#, fuzzy
msgid "Time Pullout (ms)"
-msgstr "Ð’Ñ€ÐµÐ¼Ñ Ð¾Ð¶Ð¸Ð´Ð°Ð½Ð¸Ñ."
+msgstr "Ð’Ñ€ÐµÐ¼Ñ Ð²Ñ‹Ñ…Ð¾Ð´Ð° (мÑ)"
#: servers/audio/effects/audio_effect_stereo_enhance.cpp
msgid "Surround"
@@ -24653,7 +26060,7 @@ msgstr ""
#: servers/physics_2d/physics_2d_server_sw.cpp
#, fuzzy
msgid "BP Hash Table Size"
-msgstr "Размер:"
+msgstr "Размер хеш-таблицы BP"
#: servers/physics_2d/physics_2d_server_sw.cpp
msgid "Large Object Surface Threshold In Cells"
@@ -24777,7 +26184,7 @@ msgstr "КонÑтанты не могут быть изменены."
#: servers/visual/visual_server_scene.cpp
#, fuzzy
msgid "Spatial Partitioning"
-msgstr "Разбиение..."
+msgstr "ПроÑтранÑтвенное разбиение"
#: servers/visual_server.cpp
#, fuzzy
@@ -24967,7 +26374,7 @@ msgstr ""
#: servers/visual_server.cpp
#, fuzzy
msgid "Batching"
-msgstr "ПоиÑк..."
+msgstr "Пакетирование"
#: servers/visual_server.cpp
msgid "Use Batching"
@@ -24997,7 +26404,7 @@ msgstr ""
#: servers/visual_server.cpp
#, fuzzy
msgid "Max Join Items"
-msgstr "Управление Ñлементами..."
+msgstr "МакÑимальное количеÑтво приÑоединÑемых предметов"
#: servers/visual_server.cpp
msgid "Batch Buffer Size"
diff --git a/editor/translations/si.po b/editor/translations/si.po
index 66612e59c3..3194255f3b 100644
--- a/editor/translations/si.po
+++ b/editor/translations/si.po
@@ -20,7 +20,7 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=n > 1;\n"
"X-Generator: Weblate 4.5-dev\n"
-#: core/bind/core_bind.cpp
+#: core/bind/core_bind.cpp main/main.cpp
msgid "Tablet Driver"
msgstr ""
@@ -113,8 +113,8 @@ msgstr "à·à·Šâ€à¶»à·’à¶­:"
#: core/bind/core_bind.cpp editor/editor_settings.cpp main/main.cpp
#: modules/gdscript/gdscript_editor.cpp modules/gridmap/grid_map.cpp
#: modules/mono/csharp_script.cpp modules/visual_script/visual_script_nodes.cpp
-#: scene/2d/tile_map.cpp scene/3d/camera.cpp scene/gui/control.cpp
-#: scene/gui/graph_edit.cpp scene/main/viewport.cpp
+#: scene/2d/tile_map.cpp scene/3d/camera.cpp scene/3d/light.cpp
+#: scene/gui/control.cpp scene/gui/graph_edit.cpp scene/main/viewport.cpp
#: scene/resources/dynamic_font.cpp scene/resources/navigation_mesh.cpp
#: scene/resources/primitive_meshes.cpp scene/resources/sky.cpp
#: scene/resources/style_box.cpp scene/resources/texture.cpp
@@ -210,8 +210,7 @@ msgid "Data"
msgstr ""
#: core/io/file_access_network.cpp core/register_core_types.cpp
-#: editor/editor_settings.cpp editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp main/main.cpp
+#: editor/editor_settings.cpp main/main.cpp
#: modules/gdscript/language_server/gdscript_language_server.cpp
msgid "Network"
msgstr ""
@@ -475,9 +474,10 @@ msgstr ""
msgid "Relative"
msgstr ""
-#: core/os/input_event.cpp scene/2d/camera_2d.cpp
-#: scene/3d/interpolated_camera.cpp scene/animation/animation_player.cpp
-#: scene/resources/environment.cpp
+#: core/os/input_event.cpp scene/2d/camera_2d.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/interpolated_camera.cpp
+#: scene/animation/animation_player.cpp scene/resources/environment.cpp
+#: scene/resources/particles_material.cpp
msgid "Speed"
msgstr ""
@@ -522,8 +522,9 @@ msgstr ""
msgid "Pitch"
msgstr ""
-#: core/os/input_event.cpp scene/2d/physics_body_2d.cpp
-#: scene/3d/physics_body.cpp
+#: core/os/input_event.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/physics_body_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/3d/physics_body.cpp scene/resources/particles_material.cpp
msgid "Velocity"
msgstr ""
@@ -540,6 +541,8 @@ msgid "Controller Value"
msgstr ""
#: core/project_settings.cpp editor/editor_node.cpp main/main.cpp
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/windows/export/export.cpp
#, fuzzy
msgid "Application"
msgstr "à·à·Šâ€à¶»à·’à¶­:"
@@ -556,13 +559,16 @@ msgstr ""
#: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp
#: editor/editor_plugin_settings.cpp editor/editor_profiler.cpp
#: editor/project_manager.cpp editor/settings_config_dialog.cpp
-#: modules/gdnative/nativescript/nativescript.cpp scene/2d/area_2d.cpp
-#: scene/3d/area.cpp scene/main/node.cpp
+#: modules/gdnative/nativescript/nativescript.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/osx/export/export.cpp scene/2d/area_2d.cpp scene/3d/area.cpp
+#: scene/main/node.cpp
msgid "Name"
msgstr ""
#: core/project_settings.cpp editor/editor_help.cpp
-#: modules/visual_script/visual_script_nodes.cpp
+#: modules/visual_script/visual_script_nodes.cpp platform/uwp/export/export.cpp
+#: platform/windows/export/export.cpp
msgid "Description"
msgstr ""
@@ -598,7 +604,7 @@ msgid "Custom User Dir Name"
msgstr ""
#: core/project_settings.cpp editor/animation_track_editor.cpp
-#: editor/editor_audio_buses.cpp servers/audio_server.cpp
+#: editor/editor_audio_buses.cpp main/main.cpp servers/audio_server.cpp
msgid "Audio"
msgstr ""
@@ -750,10 +756,13 @@ msgstr ""
msgid "Sharpen Intensity"
msgstr ""
-#: core/project_settings.cpp editor/editor_node.cpp editor/editor_settings.cpp
-#: editor/plugins/script_editor_plugin.cpp editor/project_export.cpp
-#: main/main.cpp modules/gdscript/gdscript.cpp
-#: modules/visual_script/visual_script.cpp scene/3d/room_manager.cpp
+#: core/project_settings.cpp editor/editor_export.cpp editor/editor_node.cpp
+#: editor/editor_settings.cpp editor/plugins/script_editor_plugin.cpp
+#: editor/project_export.cpp main/main.cpp modules/gdscript/gdscript.cpp
+#: modules/visual_script/visual_script.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp scene/3d/room_manager.cpp
#: scene/main/scene_tree.cpp scene/resources/shape_2d.cpp
#: servers/visual_server.cpp
msgid "Debug"
@@ -977,6 +986,7 @@ msgid "Subsurface Scattering"
msgstr ""
#: drivers/gles3/rasterizer_scene_gles3.cpp
+#: editor/import/resource_importer_texture.cpp
#: editor/plugins/spatial_editor_plugin.cpp modules/gltf/gltf_node.cpp
#: modules/gridmap/grid_map.cpp scene/2d/cpu_particles_2d.cpp
#: scene/2d/node_2d.cpp scene/2d/parallax_layer.cpp scene/2d/polygon_2d.cpp
@@ -1282,6 +1292,7 @@ msgid "Editors"
msgstr ""
#: editor/animation_track_editor.cpp editor/editor_settings.cpp
+#: editor/import/resource_importer_scene.cpp
#: editor/plugins/animation_player_editor_plugin.cpp editor/scene_tree_dock.cpp
#: scene/2d/animated_sprite.cpp scene/2d/cpu_particles_2d.cpp
#: scene/2d/sprite.cpp scene/3d/cpu_particles.cpp scene/3d/sprite_3d.cpp
@@ -1510,14 +1521,14 @@ msgstr ""
msgid "Seconds"
msgstr ""
-#: editor/animation_track_editor.cpp
+#: editor/animation_track_editor.cpp editor/import/resource_importer_scene.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp main/main.cpp
#: scene/resources/texture.cpp
msgid "FPS"
msgstr ""
#: editor/animation_track_editor.cpp editor/editor_plugin_settings.cpp
-#: editor/editor_resource_picker.cpp
+#: editor/editor_resource_picker.cpp editor/import/resource_importer_wav.cpp
#: editor/plugins/polygon_2d_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
@@ -2463,7 +2474,9 @@ msgid "Remove Autoload"
msgstr ""
#: editor/editor_autoload_settings.cpp editor/editor_plugin_settings.cpp
-#: modules/gdscript/gdscript.cpp scene/2d/polygon_2d.cpp scene/3d/area.cpp
+#: modules/gdscript/gdscript.cpp platform/android/export/export_plugin.cpp
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#: scene/2d/polygon_2d.cpp scene/3d/area.cpp scene/3d/physics_joint.cpp
#: scene/3d/reflection_probe.cpp scene/main/canvas_layer.cpp
#: scene/resources/material.cpp servers/visual_server.cpp
msgid "Enable"
@@ -2616,6 +2629,58 @@ msgstr ""
#: editor/editor_export.cpp platform/android/export/export_plugin.cpp
#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Custom Template"
+msgstr "යතුරු පිටපත් කරන්න"
+
+#: editor/editor_export.cpp editor/project_export.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp
+msgid "Release"
+msgstr ""
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Binary Format"
+msgstr "Anim පරිවර්තනය වෙනස් කරන්න"
+
+#: editor/editor_export.cpp
+msgid "64 Bits"
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Embed PCK"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Texture Format"
+msgstr "නිවේà·à¶± මà·à¶¯à·’ලිය"
+
+#: editor/editor_export.cpp
+msgid "BPTC"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "S3TC"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "ETC"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "ETC2"
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "No BPTC Fallbacks"
+msgstr ""
+
+#: editor/editor_export.cpp platform/android/export/export_plugin.cpp
+#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
msgid "Custom debug template not found."
msgstr ""
@@ -2791,6 +2856,7 @@ msgid "Make Current"
msgstr ""
#: editor/editor_feature_profile.cpp editor/editor_node.cpp
+#: editor/import/resource_importer_scene.cpp
#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
msgid "Import"
msgstr ""
@@ -2917,8 +2983,11 @@ msgstr ""
msgid "Display Mode"
msgstr "නිවේà·à¶± මà·à¶¯à·’ලිය"
-#: editor/editor_file_dialog.cpp main/main.cpp modules/csg/csg_shape.cpp
-#: modules/visual_script/visual_script_nodes.cpp
+#: editor/editor_file_dialog.cpp
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+#: editor/import/resource_importer_wav.cpp main/main.cpp
+#: modules/csg/csg_shape.cpp modules/visual_script/visual_script_nodes.cpp
#: modules/visual_script/visual_script_yield_nodes.cpp scene/2d/light_2d.cpp
#: scene/2d/physics_body_2d.cpp scene/2d/tile_map.cpp
#: scene/3d/baked_lightmap.cpp scene/3d/light.cpp scene/3d/physics_body.cpp
@@ -3051,7 +3120,9 @@ msgstr ""
msgid "Reimport Missing Imported Files"
msgstr ""
-#: editor/editor_help.cpp
+#: editor/editor_help.cpp scene/2d/camera_2d.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/resources/dynamic_font.cpp
+#: scene/resources/style_box.cpp
msgid "Top"
msgstr ""
@@ -3103,6 +3174,7 @@ msgid "Fonts"
msgstr ""
#: editor/editor_help.cpp editor/plugins/theme_editor_plugin.cpp
+#: platform/iphone/export/export.cpp
msgid "Icons"
msgstr ""
@@ -3262,7 +3334,9 @@ msgstr ""
msgid "Pin value [Disabled because '%s' is editor-only]"
msgstr ""
-#: editor/editor_inspector.cpp editor/scene_tree_dock.cpp
+#: editor/editor_inspector.cpp
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+#: editor/scene_tree_dock.cpp
#: modules/visual_script/visual_script_func_nodes.cpp
#: modules/visual_script/visual_script_nodes.cpp
#: modules/visual_script/visual_script_property_selector.cpp
@@ -3576,6 +3650,14 @@ msgid "Quick Open Script..."
msgstr ""
#: editor/editor_node.cpp
+msgid "Save & Reload"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Save changes to '%s' before reloading?"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "Save & Close"
msgstr ""
@@ -3687,6 +3769,10 @@ msgid "Open Project Manager?"
msgstr ""
#: editor/editor_node.cpp
+msgid "Save changes to the following scene(s) before reloading?"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "Save & Quit"
msgstr ""
@@ -3929,9 +4015,8 @@ msgid "Update Vital Only"
msgstr "අඛණ්ඩව"
#: editor/editor_node.cpp
-#, fuzzy
-msgid "Translate Properties"
-msgstr "යතුරු පිටපත් කරන්න"
+msgid "Localize Settings"
+msgstr ""
#: editor/editor_node.cpp
#, fuzzy
@@ -3947,9 +4032,8 @@ msgid "Inspector"
msgstr ""
#: editor/editor_node.cpp
-#, fuzzy
-msgid "Capitalize Properties"
-msgstr "යතුරු පිටපත් කරන්න"
+msgid "Default Property Name Style"
+msgstr ""
#: editor/editor_node.cpp
msgid "Default Float Step"
@@ -4508,7 +4592,9 @@ msgstr ""
msgid "Update"
msgstr ""
-#: editor/editor_plugin_settings.cpp
+#: editor/editor_plugin_settings.cpp platform/android/export/export_plugin.cpp
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp
msgid "Version"
msgstr ""
@@ -5461,7 +5547,7 @@ msgstr ""
msgid "Rect Custom Position"
msgstr ""
-#: editor/editor_settings.cpp
+#: editor/editor_settings.cpp platform/android/export/export_plugin.cpp
msgid "Screen"
msgstr ""
@@ -5486,6 +5572,19 @@ msgid "Editor SSL Certificates"
msgstr ""
#: editor/editor_settings.cpp
+msgid "HTTP Proxy"
+msgstr ""
+
+#: editor/editor_settings.cpp
+msgid "Host"
+msgstr ""
+
+#: editor/editor_settings.cpp editor/fileserver/editor_file_server.cpp
+#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp
+msgid "Port"
+msgstr ""
+
+#: editor/editor_settings.cpp
msgid "Project Manager"
msgstr ""
@@ -5525,7 +5624,8 @@ msgstr ""
msgid "String Color"
msgstr ""
-#: editor/editor_settings.cpp
+#: editor/editor_settings.cpp platform/javascript/export/export.cpp
+#: platform/uwp/export/export.cpp
msgid "Background Color"
msgstr ""
@@ -5687,22 +5787,6 @@ msgid "Starting the download..."
msgstr ""
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "HTTP Proxy"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Host"
-msgstr ""
-
-#: editor/export_template_manager.cpp editor/fileserver/editor_file_server.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp main/main.cpp
-#: modules/mono/mono_gd/gd_mono.cpp
-msgid "Port"
-msgstr ""
-
-#: editor/export_template_manager.cpp
msgid "Error requesting URL:"
msgstr ""
@@ -5944,6 +6028,7 @@ msgstr ""
#: editor/fileserver/editor_file_server.cpp
#: editor/plugins/version_control_editor_plugin.cpp
+#: platform/uwp/export/export.cpp platform/windows/export/export.cpp
msgid "Password"
msgstr ""
@@ -6309,6 +6394,110 @@ msgstr ""
msgid "Use Ambient"
msgstr ""
+#: editor/import/resource_importer_bitmask.cpp
+#, fuzzy
+msgid "Create From"
+msgstr "à·ƒà·à¶¯à¶±à·Šà¶±"
+
+#: editor/import/resource_importer_bitmask.cpp
+#: servers/audio/effects/audio_effect_compressor.cpp
+msgid "Threshold"
+msgstr ""
+
+#: editor/import/resource_importer_csv_translation.cpp
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_scene.cpp
+#: editor/import/resource_importer_texture.cpp
+#: editor/import/resource_importer_wav.cpp scene/3d/gi_probe.cpp
+msgid "Compress"
+msgstr ""
+
+#: editor/import/resource_importer_csv_translation.cpp
+msgid "Delimiter"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+msgid "No BPTC If RGB"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/sprite_3d.cpp
+#: scene/resources/material.cpp scene/resources/particles_material.cpp
+#: scene/resources/texture.cpp
+msgid "Flags"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/animation/tween.cpp
+#: scene/resources/texture.cpp
+msgid "Repeat"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/2d/light_2d.cpp
+#: scene/gui/control.cpp scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Filter"
+msgstr "නිවේà·à¶± මà·à¶¯à·’ලිය"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+msgid "Mipmaps"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+msgid "Anisotropic"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+msgid "sRGB"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+msgid "Slices"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
+#: scene/resources/style_box.cpp
+#, fuzzy
+msgid "Horizontal"
+msgstr "මෙම ලුහුබදින්න෠ඉවත් කරන්න."
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
+#: scene/resources/style_box.cpp
+msgid "Vertical"
+msgstr ""
+
+#: editor/import/resource_importer_obj.cpp
+msgid "Generate Tangents"
+msgstr ""
+
+#: editor/import/resource_importer_obj.cpp
+#, fuzzy
+msgid "Scale Mesh"
+msgstr "à·ƒà·à¶¯à¶±à·Šà¶±"
+
+#: editor/import/resource_importer_obj.cpp
+msgid "Offset Mesh"
+msgstr ""
+
+#: editor/import/resource_importer_obj.cpp
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Octahedral Compression"
+msgstr "නිවේà·à¶± මà·à¶¯à·’ලිය"
+
+#: editor/import/resource_importer_obj.cpp
+msgid "Optimize Mesh Flags"
+msgstr ""
+
#: editor/import/resource_importer_scene.cpp
msgid "Import as Single Scene"
msgstr ""
@@ -6349,6 +6538,145 @@ msgstr ""
msgid "Import as Multiple Scenes+Materials"
msgstr ""
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Nodes"
+msgstr "යතුරු පිටපත් කරන්න"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Root Type"
+msgstr "සජීවීකරණ පුනරà·à·€à¶»à·Šà¶®à¶±à¶º"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Root Name"
+msgstr "යතුරු මක෠දමන්න"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Root Scale"
+msgstr "යතුරු මක෠දමන්න"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Custom Script"
+msgstr "යතුරු පිටපත් කරන්න"
+
+#: editor/import/resource_importer_scene.cpp scene/resources/texture.cpp
+msgid "Storage"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Use Legacy Names"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+msgid "Materials"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Location"
+msgstr "à·à·Šâ€à¶»à·’à¶­:"
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Keep On Reimport"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+msgid "Meshes"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Ensure Tangents"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Light Baking"
+msgstr "රේඛීය"
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Lightmap Texel Size"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+msgid "Skins"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Use Named Skins"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "External Files"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Store In Subdir"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Filter Script"
+msgstr "නිවේà·à¶± මà·à¶¯à·’ලිය"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Keep Custom Tracks"
+msgstr "Anim පරිවර්තනය වෙනස් කරන්න"
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Optimizer"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp main/main.cpp
+#: modules/mono/mono_gd/gd_mono.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp scene/2d/camera_2d.cpp scene/2d/light_2d.cpp
+#: scene/2d/navigation_polygon.cpp scene/2d/ray_cast_2d.cpp scene/2d/sprite.cpp
+#: scene/2d/y_sort.cpp scene/3d/audio_stream_player_3d.cpp
+#: scene/3d/baked_lightmap.cpp scene/3d/interpolated_camera.cpp
+#: scene/3d/light.cpp scene/3d/navigation_mesh_instance.cpp
+#: scene/3d/physics_joint.cpp scene/3d/ray_cast.cpp scene/3d/sprite_3d.cpp
+#: scene/gui/graph_edit.cpp scene/gui/rich_text_label.cpp
+#: scene/resources/curve.cpp scene/resources/environment.cpp
+#: scene/resources/material.cpp
+msgid "Enabled"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Max Linear Error"
+msgstr "à¶šà·à¶©à¶´à¶­"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Max Angular Error"
+msgstr "à¶šà·à¶©à¶´à¶­"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Max Angle"
+msgstr "වටිනà·à¶šà¶¸:"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Remove Unused Tracks"
+msgstr "Anim ලුහුබදින්න෠ඉවත් කරන්න"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Clips"
+msgstr "Anim පසුරු:"
+
+#: editor/import/resource_importer_scene.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/particles_2d.cpp scene/3d/area.cpp scene/3d/cpu_particles.cpp
+#: scene/3d/particles.cpp scene/resources/environment.cpp
+msgid "Amount"
+msgstr ""
+
#: editor/import/resource_importer_scene.cpp
#: editor/plugins/mesh_library_editor_plugin.cpp
msgid "Import Scene"
@@ -6390,12 +6718,142 @@ msgstr ""
msgid "Saving..."
msgstr ""
+#: editor/import/resource_importer_texture.cpp scene/resources/texture.cpp
+msgid "Lossy Quality"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "HDR Mode"
+msgstr "නිවේà·à¶± මà·à¶¯à·’ලිය"
+
+#: editor/import/resource_importer_texture.cpp
+msgid "BPTC LDR"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/mesh_instance_2d.cpp scene/2d/multimesh_instance_2d.cpp
+#: scene/2d/particles_2d.cpp scene/2d/sprite.cpp scene/resources/style_box.cpp
+msgid "Normal Map"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Process"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Fix Alpha Border"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Premult Alpha"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Hdr As Srgb"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Invert Color"
+msgstr "à·à·Šâ€à¶»à·’à¶­:"
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Normal Map Invert Y"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
+#: scene/audio/audio_stream_player.cpp scene/gui/video_player.cpp
+msgid "Stream"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Size Limit"
+msgstr "නිවේà·à¶± මà·à¶¯à·’ලිය"
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Detect 3D"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "SVG"
+msgstr ""
+
#: editor/import/resource_importer_texture.cpp
msgid ""
"Warning, no suitable PC VRAM compression enabled in Project Settings. This "
"texture will not display correctly on PC."
msgstr ""
+#: editor/import/resource_importer_texture_atlas.cpp
+msgid "Atlas File"
+msgstr ""
+
+#: editor/import/resource_importer_texture_atlas.cpp
+#, fuzzy
+msgid "Import Mode"
+msgstr "නිවේà·à¶± මà·à¶¯à·’ලිය"
+
+#: editor/import/resource_importer_texture_atlas.cpp
+#, fuzzy
+msgid "Crop To Region"
+msgstr "නිවේà·à¶± මà·à¶¯à·’ලිය"
+
+#: editor/import/resource_importer_texture_atlas.cpp
+msgid "Trim Alpha Border From Region"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp scene/2d/physics_body_2d.cpp
+msgid "Force"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+msgid "8 Bit"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp main/main.cpp
+#: modules/mono/editor/csharp_project.cpp modules/mono/mono_gd/gd_mono.cpp
+msgid "Mono"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+#, fuzzy
+msgid "Max Rate"
+msgstr "වටිනà·à¶šà¶¸:"
+
+#: editor/import/resource_importer_wav.cpp
+#, fuzzy
+msgid "Max Rate Hz"
+msgstr "වටිනà·à¶šà¶¸:"
+
+#: editor/import/resource_importer_wav.cpp
+msgid "Trim"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+msgid "Normalize"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+#, fuzzy
+msgid "Loop Mode"
+msgstr "නිවේà·à¶± මà·à¶¯à·’ලිය"
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+#, fuzzy
+msgid "Loop Begin"
+msgstr "නිවේà·à¶± මà·à¶¯à·’ලිය"
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+#, fuzzy
+msgid "Loop End"
+msgstr "නිවේà·à¶± මà·à¶¯à·’ලිය"
+
#: editor/import_defaults_editor.cpp
msgid "Select Importer"
msgstr ""
@@ -6465,6 +6923,28 @@ msgstr ""
#: editor/inspector_dock.cpp
#, fuzzy
+msgid "Property Name Style"
+msgstr "ලක්ෂණය ලුහුබදින්න"
+
+#: editor/inspector_dock.cpp scene/gui/color_picker.cpp
+msgid "Raw"
+msgstr ""
+
+#: editor/inspector_dock.cpp
+#, fuzzy
+msgid "Capitalized"
+msgstr "යතුරු පිටපත් කරන්න"
+
+#: editor/inspector_dock.cpp
+msgid "Localized"
+msgstr ""
+
+#: editor/inspector_dock.cpp
+msgid "Localization not available for current language."
+msgstr ""
+
+#: editor/inspector_dock.cpp
+#, fuzzy
msgid "Copy Properties"
msgstr "ලක්ෂණය ලුහුබදින්න"
@@ -7505,18 +7985,22 @@ msgid "License (Z-A)"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
+msgctxt "Pagination"
msgid "First"
msgstr ""
-#: editor/plugins/asset_library_editor_plugin.cpp scene/gui/control.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgctxt "Pagination"
msgid "Previous"
msgstr ""
-#: editor/plugins/asset_library_editor_plugin.cpp scene/gui/control.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgctxt "Pagination"
msgid "Next"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
+msgctxt "Pagination"
msgid "Last"
msgstr ""
@@ -7752,19 +8236,19 @@ msgid ""
"margins."
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Top Left"
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Top Right"
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Bottom Right"
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Bottom Left"
msgstr ""
@@ -8475,6 +8959,18 @@ msgstr ""
msgid "Gradient Edited"
msgstr ""
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+msgid "Swap GradientTexture2D Fill Points"
+msgstr ""
+
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+msgid "Swap Gradient Fill Points"
+msgstr ""
+
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+msgid "Toggle Grid Snap"
+msgstr ""
+
#: editor/plugins/item_list_editor_plugin.cpp
msgid "Item %d"
msgstr ""
@@ -8688,8 +9184,8 @@ msgid ""
"%s"
msgstr ""
-#: editor/plugins/mesh_library_editor_plugin.cpp modules/gridmap/grid_map.cpp
-msgid "Mesh Library"
+#: editor/plugins/mesh_library_editor_plugin.cpp
+msgid "MeshLibrary"
msgstr ""
#: editor/plugins/mesh_library_editor_plugin.cpp
@@ -9662,8 +10158,8 @@ msgstr ""
msgid "Source"
msgstr ""
-#: editor/plugins/script_text_editor.cpp scene/3d/interpolated_camera.cpp
-#: scene/animation/skeleton_ik.cpp
+#: editor/plugins/script_text_editor.cpp platform/uwp/export/export.cpp
+#: scene/3d/interpolated_camera.cpp scene/animation/skeleton_ik.cpp
msgid "Target"
msgstr ""
@@ -10626,7 +11122,9 @@ msgstr ""
#: editor/plugins/sprite_frames_editor_plugin.cpp
#: modules/gltf/gltf_animation.cpp modules/minimp3/audio_stream_mp3.cpp
-#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp scene/2d/path_2d.cpp
+#: modules/minimp3/resource_importer_mp3.cpp
+#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp
+#: modules/stb_vorbis/resource_importer_ogg_vorbis.cpp scene/2d/path_2d.cpp
#: scene/3d/path.cpp scene/resources/animation.cpp scene/resources/material.cpp
msgid "Loop"
msgstr ""
@@ -11498,8 +11996,9 @@ msgstr ""
msgid "Priority"
msgstr ""
-#: editor/plugins/tile_set_editor_plugin.cpp main/main.cpp scene/gui/button.cpp
-#: scene/gui/item_list.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp main/main.cpp
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#: scene/gui/button.cpp scene/gui/item_list.cpp
msgid "Icon"
msgstr ""
@@ -12799,10 +13298,6 @@ msgid ""
msgstr ""
#: editor/project_export.cpp
-msgid "Release"
-msgstr ""
-
-#: editor/project_export.cpp
msgid "Exporting All"
msgstr ""
@@ -14571,6 +15066,7 @@ msgid "Change AudioStreamPlayer3D Emission Angle"
msgstr ""
#: editor/spatial_editor_gizmos.cpp modules/gltf/gltf_node.cpp
+#: platform/osx/export/export.cpp
msgid "Camera"
msgstr ""
@@ -14836,7 +15332,8 @@ msgstr ""
msgid "Use Nvidia Rect Flicker Workaround"
msgstr ""
-#: main/main.cpp platform/uwp/os_uwp.cpp
+#: main/main.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp platform/uwp/os_uwp.cpp
msgid "Display"
msgstr ""
@@ -14892,18 +15389,6 @@ msgstr ""
msgid "Allowed"
msgstr ""
-#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp scene/2d/camera_2d.cpp
-#: scene/2d/light_2d.cpp scene/2d/navigation_polygon.cpp
-#: scene/2d/ray_cast_2d.cpp scene/2d/sprite.cpp scene/2d/y_sort.cpp
-#: scene/3d/audio_stream_player_3d.cpp scene/3d/baked_lightmap.cpp
-#: scene/3d/interpolated_camera.cpp scene/3d/light.cpp
-#: scene/3d/navigation_mesh_instance.cpp scene/3d/ray_cast.cpp
-#: scene/3d/sprite_3d.cpp scene/gui/graph_edit.cpp
-#: scene/gui/rich_text_label.cpp scene/resources/curve.cpp
-#: scene/resources/environment.cpp
-msgid "Enabled"
-msgstr ""
-
#: main/main.cpp
msgid "Intended Usage"
msgstr ""
@@ -14932,13 +15417,14 @@ msgstr ""
msgid "Handheld"
msgstr ""
-#: main/main.cpp
+#: main/main.cpp platform/javascript/export/export.cpp
+#: platform/uwp/export/export.cpp
#, fuzzy
msgid "Orientation"
msgstr "à·à·Šâ€à¶»à·’à¶­:"
#: main/main.cpp scene/gui/scroll_container.cpp scene/gui/text_edit.cpp
-#: scene/main/scene_tree.cpp
+#: scene/main/scene_tree.cpp scene/register_scene_types.cpp
msgid "Common"
msgstr ""
@@ -14978,7 +15464,7 @@ msgstr ""
#: main/main.cpp
#, fuzzy
-msgid "Frame Delay (msec)"
+msgid "Frame Delay Msec"
msgstr "à¶šà·à¶½à¶º (à¶­à¶­à·Š): "
#: main/main.cpp
@@ -15096,11 +15582,6 @@ msgstr ""
msgid "Tooltip Position Offset"
msgstr ""
-#: main/main.cpp modules/mono/editor/csharp_project.cpp
-#: modules/mono/mono_gd/gd_mono.cpp
-msgid "Mono"
-msgstr ""
-
#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp
msgid "Debugger Agent"
msgstr ""
@@ -15634,7 +16115,7 @@ msgstr ""
msgid "Intensity"
msgstr ""
-#: modules/gltf/gltf_light.cpp scene/2d/light_2d.cpp
+#: modules/gltf/gltf_light.cpp scene/2d/light_2d.cpp scene/3d/light.cpp
msgid "Range"
msgstr ""
@@ -15769,11 +16250,6 @@ msgstr ""
msgid "Use Named Skin Binds"
msgstr ""
-#: modules/gltf/gltf_state.cpp scene/3d/physics_joint.cpp
-#, fuzzy
-msgid "Nodes"
-msgstr "යතුරු පිටපත් කරන්න"
-
#: modules/gltf/gltf_state.cpp
msgid "Buffer Views"
msgstr ""
@@ -15783,14 +16259,6 @@ msgid "Accessors"
msgstr ""
#: modules/gltf/gltf_state.cpp
-msgid "Meshes"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp
-msgid "Materials"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp
#, fuzzy
msgid "Scene Name"
msgstr "à·ƒà·à¶¯à¶±à·Šà¶±"
@@ -15806,15 +16274,11 @@ msgstr "යතුරු මක෠දමන්න"
msgid "Textures"
msgstr ""
-#: modules/gltf/gltf_state.cpp
+#: modules/gltf/gltf_state.cpp platform/uwp/export/export.cpp
msgid "Images"
msgstr ""
#: modules/gltf/gltf_state.cpp
-msgid "Skins"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp
msgid "Cameras"
msgstr ""
@@ -15846,10 +16310,14 @@ msgid "Src Image"
msgstr ""
#: modules/gridmap/grid_map.cpp
-msgid "Physics Material"
+msgid "Mesh Library"
msgstr ""
#: modules/gridmap/grid_map.cpp
+msgid "Physics Material"
+msgstr ""
+
+#: modules/gridmap/grid_map.cpp scene/3d/visual_instance.cpp
msgid "Use In Baked Light"
msgstr ""
@@ -15879,6 +16347,7 @@ msgstr "යතුරු මක෠දමන්න"
#: modules/gridmap/grid_map.cpp scene/2d/collision_object_2d.cpp
#: scene/2d/tile_map.cpp scene/3d/collision_object.cpp scene/3d/soft_body.cpp
+#: scene/resources/material.cpp
msgid "Mask"
msgstr ""
@@ -16060,7 +16529,9 @@ msgid "Ultra Quality Ray Count"
msgstr ""
#: modules/minimp3/audio_stream_mp3.cpp
+#: modules/minimp3/resource_importer_mp3.cpp
#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp
+#: modules/stb_vorbis/resource_importer_ogg_vorbis.cpp
#, fuzzy
msgid "Loop Offset"
msgstr "නිවේà·à¶± මà·à¶¯à·’ලිය"
@@ -17108,6 +17579,172 @@ msgid "The package must have at least one '.' separator."
msgstr ""
#: platform/android/export/export_plugin.cpp
+msgid "Use Custom Build"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Export Format"
+msgstr "Anim පරිවර්තනය වෙනස් කරන්න"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Keystore"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Debug User"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+msgid "Debug Password"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Release User"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Release Password"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "One Click Deploy"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Clear Previous Install"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp scene/resources/shader.cpp
+msgid "Code"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Min SDK"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Target SDK"
+msgstr "යතුරු මක෠දමන්න"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+msgid "Package"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Unique Name"
+msgstr "සජීවීකරණ පුනරà·à·€à¶»à·Šà¶®à¶±à¶º"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Signed"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Classify As Game"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Retain Data On Uninstall"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Exclude From Recents"
+msgstr "යතුරු මක෠දමන්න"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Graphics"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "OpenGL Debug"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "XR Features"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "XR Mode"
+msgstr "නිවේà·à¶± මà·à¶¯à·’ලිය"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Hand Tracking"
+msgstr "ලක්ෂණය ලුහුබදින්න"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Hand Tracking Frequency"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Passthrough"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Immersive Mode"
+msgstr "නිවේà·à¶± මà·à¶¯à·’ලිය"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Support Small"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Support Normal"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Support Large"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Support Xlarge"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "User Data Backup"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Allow"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+msgid "Command Line"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+msgid "Extra Args"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "APK Expansion"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Salt"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Public Key"
+msgstr "යතුරු පිටපත් කරන්න"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Permissions"
+msgstr "Anim සංක්රමණය වෙනස් කරන්න"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Custom Permissions"
+msgstr "යතුරු පිටපත් කරන්න"
+
+#: platform/android/export/export_plugin.cpp
msgid "Select device from the list"
msgstr ""
@@ -17393,6 +18030,165 @@ msgid "The character '%s' is not allowed in Identifier."
msgstr ""
#: platform/iphone/export/export.cpp
+msgid "App Store Team ID"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Provisioning Profile UUID Debug"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Code Sign Identity Debug"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Export Method Debug"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Provisioning Profile UUID Release"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Code Sign Identity Release"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Export Method Release"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Targeted Device Family"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Info"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Identifier"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Signature"
+msgstr "ග්â€à¶»à·„ණය"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Short Version"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/windows/export/export.cpp
+msgid "Copyright"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Capabilities"
+msgstr "යතුරු පිටපත් කරන්න"
+
+#: platform/iphone/export/export.cpp
+msgid "Access Wi-Fi"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Push Notifications"
+msgstr ""
+
+#: platform/iphone/export/export.cpp scene/3d/baked_lightmap.cpp
+msgid "User Data"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Accessible From Files App"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Accessible From Itunes Sharing"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Privacy"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Camera Usage Description"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Microphone Usage Description"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Photolibrary Usage Description"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPhone 120 X 120"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPhone 180 X 180"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 76 X 76"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 152 X 152"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 167 X 167"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "App Store 1024 X 1024"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Spotlight 40 X 40"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Spotlight 80 X 80"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Storyboard"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Use Launch Screen Storyboard"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Image Scale Mode"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Custom Image @2x"
+msgstr "යතුරු පිටපත් කරන්න"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Custom Image @3x"
+msgstr "යතුරු පිටපත් කරන්න"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Use Custom BG Color"
+msgstr "යතුරු පිටපත් කරන්න"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Custom BG Color"
+msgstr "යතුරු පිටපත් කරන්න"
+
+#: platform/iphone/export/export.cpp
msgid "App Store Team ID not specified - cannot configure the project."
msgstr ""
@@ -17429,6 +18225,78 @@ msgid "Could not read file:"
msgstr ""
#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Variant"
+msgstr "à·à·Šâ€à¶»à·’à¶­:"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Export Type"
+msgstr "සජීවීකරණ පුනරà·à·€à¶»à·Šà¶®à¶±à¶º"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "VRAM Texture Compression"
+msgstr "නිවේà·à¶± මà·à¶¯à·’ලිය"
+
+#: platform/javascript/export/export.cpp
+msgid "For Desktop"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "For Mobile"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Html"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Export Icon"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Custom Html Shell"
+msgstr "යතුරු පිටපත් කරන්න"
+
+#: platform/javascript/export/export.cpp
+msgid "Head Include"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Canvas Resize Policy"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Focus Canvas On Start"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Experimental Virtual Keyboard"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Progressive Web App"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Offline Page"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 144 X 144"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 180 X 180"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 512 X 512"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
msgid "Could not read HTML shell:"
msgstr ""
@@ -17533,6 +18401,182 @@ msgid "Unknown object type."
msgstr ""
#: platform/osx/export/export.cpp
+msgid "App Category"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "High Res"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Location Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Address Book Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Calendar Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Photos Library Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Desktop Folder Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Documents Folder Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Downloads Folder Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Network Volumes Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Removable Volumes Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#, fuzzy
+msgid "Codesign"
+msgstr "යතුරු පිටපත් කරන්න"
+
+#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
+#: platform/windows/export/export.cpp
+msgid "Identity"
+msgstr ""
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#, fuzzy
+msgid "Timestamp"
+msgstr "à¶šà·à¶½à¶º:"
+
+#: platform/osx/export/export.cpp
+msgid "Hardened Runtime"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Replace Existing Signature"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Entitlements"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Custom File"
+msgstr "යතුරු පිටපත් කරන්න"
+
+#: platform/osx/export/export.cpp
+msgid "Allow JIT Code Execution"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Allow Unsigned Executable Memory"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Allow Dyld Environment Variables"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Disable Library Validation"
+msgstr "නිවේà·à¶± මà·à¶¯à·’ලිය"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Audio Input"
+msgstr "à·à·Šâ€à¶»à·€à·Šâ€à¶º පසුරු:"
+
+#: platform/osx/export/export.cpp
+msgid "Address Book"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Calendars"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Photos Library"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Apple Events"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Debugging"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "App Sandbox"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Network Server"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Network Client"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Device Usb"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Device Bluetooth"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Files Downloads"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Files Pictures"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Files Music"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Files Movies"
+msgstr ""
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#, fuzzy
+msgid "Custom Options"
+msgstr "à·à·Šâ€à¶»à·’à¶­:"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Notarization"
+msgstr "නිවේà·à¶± මà·à¶¯à·’ලිය"
+
+#: platform/osx/export/export.cpp
+msgid "Apple ID Name"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Apple ID Password"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Apple Team ID"
+msgstr ""
+
+#: platform/osx/export/export.cpp
msgid ""
"Note: The notarization process generally takes less than an hour. When the "
"process is completed, you'll receive an email."
@@ -17722,6 +18766,126 @@ msgid "Force Builtin Codesign"
msgstr ""
#: platform/uwp/export/export.cpp
+msgid "Architecture"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Display Name"
+msgstr "නිවේà·à¶± මà·à¶¯à·’ලිය"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Short Name"
+msgstr "සජීවීකරණ පුනරà·à·€à¶»à·Šà¶®à¶±à¶º"
+
+#: platform/uwp/export/export.cpp
+msgid "Publisher"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Publisher Display Name"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Product Guid"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Publisher Guid"
+msgstr "Anim පරිවර්තනය වෙනස් කරන්න"
+
+#: platform/uwp/export/export.cpp
+msgid "Signing"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Certificate"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Algorithm"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Major"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Minor"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Build"
+msgstr "නිවේà·à¶± මà·à¶¯à·’ලිය"
+
+#: platform/uwp/export/export.cpp
+msgid "Revision"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Landscape"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Portrait"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Landscape Flipped"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Portrait Flipped"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Store Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 44 X 44 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 71 X 71 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 150 X 150 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 310 X 310 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Wide 310 X 150 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Splash Screen"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Tiles"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Square 150 X 150"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Wide 310 X 150"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Square 310 X 310"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
msgid "Invalid package short name."
msgstr ""
@@ -17786,11 +18950,43 @@ msgid "Debug Certificate"
msgstr ""
#: platform/uwp/export/export.cpp
-msgid "Debug Password"
+msgid "Debug Algorithm"
msgstr ""
-#: platform/uwp/export/export.cpp
-msgid "Debug Algorithm"
+#: platform/windows/export/export.cpp
+msgid "Identity Type"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Timestamp Server URL"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Digest Algorithm"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "File Version"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Product Version"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Company Name"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Product Name"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "File Description"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Trademarks"
msgstr ""
#: platform/windows/export/export.cpp
@@ -17858,12 +19054,14 @@ msgstr ""
msgid "Centered"
msgstr "යතුරු මක෠දමන්න"
-#: scene/2d/animated_sprite.cpp scene/2d/camera_2d.cpp scene/2d/light_2d.cpp
+#: scene/2d/animated_sprite.cpp scene/2d/camera_2d.cpp
+#: scene/2d/cpu_particles_2d.cpp scene/2d/light_2d.cpp
#: scene/2d/parallax_background.cpp scene/2d/parallax_layer.cpp
#: scene/2d/path_2d.cpp scene/2d/polygon_2d.cpp scene/2d/sprite.cpp
-#: scene/3d/path.cpp scene/3d/physics_body.cpp scene/3d/sprite_3d.cpp
-#: scene/gui/graph_node.cpp scene/gui/rich_text_effect.cpp
-#: scene/main/canvas_layer.cpp scene/resources/material.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/path.cpp scene/3d/physics_body.cpp
+#: scene/3d/sprite_3d.cpp scene/gui/graph_node.cpp
+#: scene/gui/rich_text_effect.cpp scene/main/canvas_layer.cpp
+#: scene/resources/material.cpp scene/resources/particles_material.cpp
#: scene/resources/style_box.cpp
msgid "Offset"
msgstr ""
@@ -17929,11 +19127,6 @@ msgstr "à·à·Šâ€à¶»à·€à·Šâ€à¶º පසුරු:"
msgid "Override"
msgstr ""
-#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
-#: scene/audio/audio_stream_player.cpp scene/gui/video_player.cpp
-msgid "Stream"
-msgstr ""
-
#: scene/2d/audio_stream_player_2d.cpp scene/audio/audio_stream_player.cpp
#: scene/gui/video_player.cpp servers/audio/effects/audio_effect_amplify.cpp
msgid "Volume dB"
@@ -17957,12 +19150,12 @@ msgid "Stream Paused"
msgstr ""
#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
-#: scene/3d/reflection_probe.cpp scene/3d/visual_instance.cpp
-#: scene/resources/material.cpp
+#: scene/3d/light.cpp scene/3d/reflection_probe.cpp
+#: scene/3d/visual_instance.cpp scene/resources/material.cpp
msgid "Max Distance"
msgstr ""
-#: scene/2d/audio_stream_player_2d.cpp
+#: scene/2d/audio_stream_player_2d.cpp scene/3d/light.cpp
#, fuzzy
msgid "Attenuation"
msgstr "à·à·Šâ€à¶»à·’à¶­:"
@@ -18013,6 +19206,24 @@ msgstr ""
msgid "Limit"
msgstr ""
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/style_box.cpp
+#, fuzzy
+msgid "Left"
+msgstr "රේඛීය"
+
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/style_box.cpp
+#, fuzzy
+msgid "Right"
+msgstr "රේඛීය"
+
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/dynamic_font.cpp scene/resources/style_box.cpp
+#, fuzzy
+msgid "Bottom"
+msgstr "à·à·Šâ€à¶»à·’à¶­:"
+
#: scene/2d/camera_2d.cpp
msgid "Smoothed"
msgstr ""
@@ -18213,12 +19424,6 @@ msgstr ""
msgid "Emitting"
msgstr ""
-#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp scene/3d/area.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
-#: scene/resources/environment.cpp
-msgid "Amount"
-msgstr ""
-
#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp
#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
msgid "Lifetime"
@@ -18278,17 +19483,12 @@ msgstr ""
#: scene/2d/mesh_instance_2d.cpp scene/2d/multimesh_instance_2d.cpp
#: scene/2d/particles_2d.cpp scene/2d/polygon_2d.cpp scene/2d/sprite.cpp
#: scene/3d/sprite_3d.cpp scene/gui/nine_patch_rect.cpp
-#: scene/gui/texture_rect.cpp scene/resources/sky.cpp
-#: scene/resources/style_box.cpp scene/resources/visual_shader_nodes.cpp
+#: scene/gui/texture_rect.cpp scene/resources/material.cpp
+#: scene/resources/sky.cpp scene/resources/style_box.cpp
+#: scene/resources/visual_shader_nodes.cpp
msgid "Texture"
msgstr ""
-#: scene/2d/cpu_particles_2d.cpp scene/2d/mesh_instance_2d.cpp
-#: scene/2d/multimesh_instance_2d.cpp scene/2d/particles_2d.cpp
-#: scene/2d/sprite.cpp scene/resources/style_box.cpp
-msgid "Normal Map"
-msgstr ""
-
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
msgid "Emission Shape"
@@ -18308,9 +19508,8 @@ msgid "Normals"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/3d/sprite_3d.cpp scene/resources/material.cpp
-#: scene/resources/particles_material.cpp scene/resources/texture.cpp
-msgid "Flags"
+#: scene/resources/particles_material.cpp
+msgid "Align Y"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
@@ -18330,6 +19529,11 @@ msgid "Initial Velocity"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Velocity Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp servers/physics_2d_server.cpp
#: servers/physics_server.cpp
msgid "Angular Velocity"
@@ -18337,6 +19541,11 @@ msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+msgid "Velocity Curve"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
msgid "Orbit Velocity"
msgstr ""
@@ -18348,6 +19557,21 @@ msgstr "රේඛීය"
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+msgid "Accel"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Accel Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Accel Curve"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
msgid "Radial Accel"
msgstr ""
@@ -18357,19 +19581,52 @@ msgid "Tangential Accel"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/2d/joints_2d.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/vehicle_body.cpp
-#: scene/resources/particles_material.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/physics_joint.cpp
+#: scene/3d/vehicle_body.cpp scene/resources/particles_material.cpp
#: servers/audio/effects/audio_effect_reverb.cpp
msgid "Damping"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+msgid "Damping Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Damping Curve"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp scene/3d/light.cpp
+#: scene/resources/particles_material.cpp
msgid "Angle"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+msgid "Angle Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Angle Curve"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#, fuzzy
+msgid "Scale Amount"
+msgstr "මෙහි යතුර ඇතුලත් කරන්න"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+msgid "Scale Amount Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+msgid "Scale Amount Curve"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
msgid "Color Ramp"
msgstr ""
@@ -18384,6 +19641,44 @@ msgstr ""
msgid "Hue Variation"
msgstr "à·à·Šâ€à¶»à·’à¶­:"
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Variation"
+msgstr "à·à·Šâ€à¶»à·’à¶­:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Variation Random"
+msgstr "à·à·Šâ€à¶»à·’à¶­:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Variation Curve"
+msgstr "à·à·Šâ€à¶»à·’à¶­:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Speed Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Speed Curve"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Offset Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Offset Curve"
+msgstr ""
+
#: scene/2d/joints_2d.cpp
msgid "Node A and Node B must be PhysicsBody2Ds"
msgstr ""
@@ -18415,6 +19710,7 @@ msgid "Node B"
msgstr "යතුරු පිටපත් කරන්න"
#: scene/2d/joints_2d.cpp scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp
+#: scene/3d/light.cpp scene/3d/physics_joint.cpp
#: scene/resources/environment.cpp
msgid "Bias"
msgstr ""
@@ -18424,7 +19720,7 @@ msgstr ""
msgid "Disable Collision"
msgstr "නිවේà·à¶± මà·à¶¯à·’ලිය"
-#: scene/2d/joints_2d.cpp
+#: scene/2d/joints_2d.cpp scene/3d/physics_joint.cpp
msgid "Softness"
msgstr ""
@@ -18441,7 +19737,7 @@ msgstr ""
msgid "Rest Length"
msgstr ""
-#: scene/2d/joints_2d.cpp scene/3d/vehicle_body.cpp
+#: scene/2d/joints_2d.cpp scene/3d/physics_joint.cpp scene/3d/vehicle_body.cpp
msgid "Stiffness"
msgstr ""
@@ -18460,7 +19756,7 @@ msgid "Texture Scale"
msgstr ""
#: scene/2d/light_2d.cpp scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp
-#: scene/resources/environment.cpp scene/resources/sky.cpp
+#: scene/3d/light.cpp scene/resources/environment.cpp scene/resources/sky.cpp
msgid "Energy"
msgstr ""
@@ -18496,12 +19792,6 @@ msgstr ""
msgid "Gradient Length"
msgstr ""
-#: scene/2d/light_2d.cpp scene/gui/control.cpp
-#: scene/resources/navigation_mesh.cpp
-#, fuzzy
-msgid "Filter"
-msgstr "නිවේà·à¶± මà·à¶¯à·’ලිය"
-
#: scene/2d/light_2d.cpp
#, fuzzy
msgid "Filter Smooth"
@@ -18885,10 +20175,6 @@ msgid "Applied Forces"
msgstr ""
#: scene/2d/physics_body_2d.cpp
-msgid "Force"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp
msgid "Torque"
msgstr ""
@@ -18901,7 +20187,7 @@ msgid "Sync To Physics"
msgstr ""
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-msgid "Moving platform"
+msgid "Moving Platform"
msgstr ""
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
@@ -18910,7 +20196,7 @@ msgstr ""
#: scene/2d/physics_body_2d.cpp scene/2d/touch_screen_button.cpp
#: scene/3d/physics_body.cpp scene/gui/texture_button.cpp
-#: scene/resources/line_shape_2d.cpp
+#: scene/resources/line_shape_2d.cpp scene/resources/material.cpp
msgid "Normal"
msgstr ""
@@ -19126,6 +20412,33 @@ msgid ""
"as parent."
msgstr ""
+#: scene/2d/visibility_notifier_2d.cpp scene/3d/visibility_notifier.cpp
+#, fuzzy
+msgid "Pause Animations"
+msgstr "à·à·Šâ€à¶»à·’à¶­:"
+
+#: scene/2d/visibility_notifier_2d.cpp scene/3d/visibility_notifier.cpp
+msgid "Freeze Bodies"
+msgstr ""
+
+#: scene/2d/visibility_notifier_2d.cpp
+msgid "Pause Particles"
+msgstr ""
+
+#: scene/2d/visibility_notifier_2d.cpp
+#, fuzzy
+msgid "Pause Animated Sprites"
+msgstr "සජීවීකරණ පුනරà·à·€à¶»à·Šà¶®à¶±à¶º"
+
+#: scene/2d/visibility_notifier_2d.cpp
+#, fuzzy
+msgid "Process Parent"
+msgstr "නිවේà·à¶± මà·à¶¯à·’ලිය"
+
+#: scene/2d/visibility_notifier_2d.cpp
+msgid "Physics Process Parent"
+msgstr ""
+
#: scene/3d/area.cpp
msgid "Reverb Bus"
msgstr ""
@@ -19217,6 +20530,7 @@ msgid "Attenuation Filter"
msgstr ""
#: scene/3d/audio_stream_player_3d.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
#: servers/audio/effects/audio_effect_filter.cpp
msgid "Cutoff Hz"
msgstr ""
@@ -19258,10 +20572,6 @@ msgid "Octree"
msgstr ""
#: scene/3d/baked_lightmap.cpp
-msgid "User Data"
-msgstr ""
-
-#: scene/3d/baked_lightmap.cpp
msgid "Finding meshes and lights"
msgstr ""
@@ -19498,6 +20808,16 @@ msgid "Ring Axis"
msgstr ""
#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Rotate Y"
+msgstr "නිවේà·à¶± මà·à¶¯à·’ලිය"
+
+#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Disable Z"
+msgstr "නිවේà·à¶± මà·à¶¯à·’ලිය"
+
+#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
msgid "Flatness"
msgstr ""
@@ -19534,15 +20854,11 @@ msgstr ""
msgid "Dynamic Range"
msgstr ""
-#: scene/3d/gi_probe.cpp
+#: scene/3d/gi_probe.cpp scene/3d/light.cpp
msgid "Normal Bias"
msgstr ""
#: scene/3d/gi_probe.cpp
-msgid "Compress"
-msgstr ""
-
-#: scene/3d/gi_probe.cpp
msgid "Plotting Meshes"
msgstr ""
@@ -19568,15 +20884,28 @@ msgid "Subdiv"
msgstr ""
#: scene/3d/light.cpp
+msgid "Indirect Energy"
+msgstr ""
+
+#: scene/3d/light.cpp
msgid "Negative"
msgstr ""
#: scene/3d/light.cpp
#, fuzzy
+msgid "Specular"
+msgstr "නිවේà·à¶± මà·à¶¯à·’ලිය"
+
+#: scene/3d/light.cpp
+#, fuzzy
msgid "Bake Mode"
msgstr "නිවේà·à¶± මà·à¶¯à·’ලිය"
#: scene/3d/light.cpp
+msgid "Contact"
+msgstr ""
+
+#: scene/3d/light.cpp
msgid "Reverse Cull Face"
msgstr ""
@@ -19585,10 +20914,26 @@ msgid "Directional Shadow"
msgstr ""
#: scene/3d/light.cpp
+msgid "Split 1"
+msgstr ""
+
+#: scene/3d/light.cpp
+msgid "Split 2"
+msgstr ""
+
+#: scene/3d/light.cpp
+msgid "Split 3"
+msgstr ""
+
+#: scene/3d/light.cpp
msgid "Blend Splits"
msgstr ""
#: scene/3d/light.cpp
+msgid "Bias Split Scale"
+msgstr ""
+
+#: scene/3d/light.cpp
msgid "Depth Range"
msgstr ""
@@ -19613,6 +20958,11 @@ msgstr ""
msgid "Spot"
msgstr ""
+#: scene/3d/light.cpp
+#, fuzzy
+msgid "Angle Attenuation"
+msgstr "à·à·Šâ€à¶»à·’à¶­:"
+
#: scene/3d/mesh_instance.cpp
msgid "Software Skinning"
msgstr ""
@@ -19731,6 +21081,60 @@ msgid "Axis Lock"
msgstr ""
#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Linear X"
+msgstr "රේඛීය"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Linear Y"
+msgstr "රේඛීය"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Linear Z"
+msgstr "රේඛීය"
+
+#: scene/3d/physics_body.cpp
+msgid "Angular X"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Angular Y"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Angular Z"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Motion X"
+msgstr "à·à·Šâ€à¶»à·’à¶­:"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Motion Y"
+msgstr "à·à·Šâ€à¶»à·’à¶­:"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Motion Z"
+msgstr "à·à·Šâ€à¶»à·’à¶­:"
+
+#: scene/3d/physics_body.cpp
+msgid "Move Lock X"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Move Lock Y"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Move Lock Z"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
msgid "Body Offset"
msgstr ""
@@ -19764,6 +21168,14 @@ msgid "Exclude Nodes"
msgstr "යතුරු මක෠දමන්න"
#: scene/3d/physics_joint.cpp
+msgid "Params"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Impulse Clamp"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit"
msgstr ""
@@ -19775,6 +21187,53 @@ msgstr ""
msgid "Lower"
msgstr ""
+#: scene/3d/physics_joint.cpp scene/3d/vehicle_body.cpp
+#, fuzzy
+msgid "Relaxation"
+msgstr "à·à·Šâ€à¶»à·’à¶­:"
+
+#: scene/3d/physics_joint.cpp
+msgid "Motor"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Target Velocity"
+msgstr "රේඛීය"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Max Impulse"
+msgstr "වටිනà·à¶šà¶¸:"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit"
+msgstr "රේඛීය"
+
+#: scene/3d/physics_joint.cpp
+msgid "Upper Distance"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Lower Distance"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Restitution"
+msgstr "à·à·Šâ€à¶»à·’à¶­:"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motion"
+msgstr "රේඛීය"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Ortho"
+msgstr "රේඛීය"
+
#: scene/3d/physics_joint.cpp
msgid "Upper Angle"
msgstr ""
@@ -19784,6 +21243,15 @@ msgid "Lower Angle"
msgstr ""
#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Angular Motion"
+msgstr "à·à·Šâ€à¶»à·’à¶­:"
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Ortho"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
msgid "Swing Span"
msgstr ""
@@ -19792,17 +21260,98 @@ msgid "Twist Span"
msgstr ""
#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit X"
+msgstr "රේඛීය"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motor X"
+msgstr "රේඛීය"
+
+#: scene/3d/physics_joint.cpp
+msgid "Force Limit"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Spring X"
+msgstr "රේඛීය"
+
+#: scene/3d/physics_joint.cpp
+msgid "Equilibrium Point"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit X"
msgstr ""
#: scene/3d/physics_joint.cpp
+msgid "Erp"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Motor X"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Spring X"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit Y"
+msgstr "රේඛීය"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motor Y"
+msgstr "රේඛීය"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Spring Y"
+msgstr "රේඛීය"
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit Y"
msgstr ""
#: scene/3d/physics_joint.cpp
+msgid "Angular Motor Y"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Spring Y"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit Z"
+msgstr "රේඛීය"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motor Z"
+msgstr "රේඛීය"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Spring Z"
+msgstr "රේඛීය"
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit Z"
msgstr ""
+#: scene/3d/physics_joint.cpp
+msgid "Angular Motor Z"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Spring Z"
+msgstr ""
+
#: scene/3d/portal.cpp
msgid "The RoomManager should not be a child or grandchild of a Portal."
msgstr ""
@@ -19910,7 +21459,7 @@ msgstr ""
msgid "Use Default Simplify"
msgstr ""
-#: scene/3d/room.cpp
+#: scene/3d/room.cpp scene/3d/room_manager.cpp
msgid "Room Simplify"
msgstr ""
@@ -19948,6 +21497,12 @@ msgstr ""
msgid "Main"
msgstr ""
+#: scene/3d/room_manager.cpp scene/animation/animation_player.cpp
+#: scene/animation/animation_tree.cpp scene/animation/animation_tree_player.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+msgid "Active"
+msgstr ""
+
#: scene/3d/room_manager.cpp
msgid "Roomlist"
msgstr ""
@@ -19970,6 +21525,47 @@ msgid "Gameplay"
msgstr ""
#: scene/3d/room_manager.cpp
+msgid "Gameplay Monitor"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "Use Secondary PVS"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "Merge Meshes"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "Show Margins"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "Debug Sprawl"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "Overlap Warning Threshold"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Preview Camera"
+msgstr "ලුහුබදින්නෙක් එක් කරන්න"
+
+#: scene/3d/room_manager.cpp
+msgid "Portal Depth Limit"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "Default Portal Margin"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "Roaming Expansion Margin"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
msgid ""
"RoomList path is invalid.\n"
"Please check the RoomList branch has been assigned in the RoomManager."
@@ -20089,6 +21685,19 @@ msgstr ""
msgid "Billboard"
msgstr ""
+#: scene/3d/sprite_3d.cpp scene/resources/material.cpp
+#, fuzzy
+msgid "Transparent"
+msgstr "Anim සංක්රමණය වෙනස් කරන්න"
+
+#: scene/3d/sprite_3d.cpp
+msgid "Shaded"
+msgstr ""
+
+#: scene/3d/sprite_3d.cpp
+msgid "Double Sided"
+msgstr ""
+
#: scene/3d/sprite_3d.cpp
msgid "Alpha Cut"
msgstr ""
@@ -20156,11 +21765,6 @@ msgstr ""
msgid "Max Force"
msgstr "à¶šà·à¶©à¶´à¶­"
-#: scene/3d/vehicle_body.cpp
-#, fuzzy
-msgid "Relaxation"
-msgstr "à·à·Šâ€à¶»à·’à¶­:"
-
#: scene/3d/visibility_notifier.cpp
msgid "AABB"
msgstr ""
@@ -20286,8 +21890,9 @@ msgid "Fadeout Time"
msgstr ""
#: scene/animation/animation_blend_tree.cpp
-msgid "autorestart_"
-msgstr ""
+#, fuzzy
+msgid "Auto Restart"
+msgstr "Anim යතුරක් ඇතුලත් කරන්න"
#: scene/animation/animation_blend_tree.cpp
#, fuzzy
@@ -20367,12 +21972,6 @@ msgstr ""
msgid "Default Blend Time"
msgstr ""
-#: scene/animation/animation_player.cpp scene/animation/animation_tree.cpp
-#: scene/animation/animation_tree_player.cpp
-#: servers/audio/effects/audio_effect_delay.cpp
-msgid "Active"
-msgstr ""
-
#: scene/animation/animation_player.cpp
msgid "Method Call Mode"
msgstr ""
@@ -20488,10 +22087,6 @@ msgstr "යතුරු මක෠දමන්න"
msgid "Max Iterations"
msgstr "à·à·Šâ€à¶»à·’à¶­:"
-#: scene/animation/tween.cpp scene/resources/texture.cpp
-msgid "Repeat"
-msgstr ""
-
#: scene/animation/tween.cpp
msgid "Playback Process Mode"
msgstr ""
@@ -20518,19 +22113,6 @@ msgstr ""
msgid "Alignment"
msgstr ""
-#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
-#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
-#: scene/resources/style_box.cpp
-#, fuzzy
-msgid "Horizontal"
-msgstr "මෙම ලුහුබදින්න෠ඉවත් කරන්න."
-
-#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
-#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
-#: scene/resources/style_box.cpp
-msgid "Vertical"
-msgstr ""
-
#: scene/gui/base_button.cpp
msgid "Shortcut In Tooltip"
msgstr ""
@@ -20620,10 +22202,6 @@ msgid "HSV"
msgstr ""
#: scene/gui/color_picker.cpp
-msgid "Raw"
-msgstr ""
-
-#: scene/gui/color_picker.cpp
msgid "Switch between hexadecimal and code values."
msgstr ""
@@ -20677,6 +22255,30 @@ msgid "Focus"
msgstr ""
#: scene/gui/control.cpp
+msgid "Neighbour Left"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Neighbour Top"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Neighbour Right"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Neighbour Bottom"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Next"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Previous"
+msgstr ""
+
+#: scene/gui/control.cpp
msgid "Mouse"
msgstr ""
@@ -20711,7 +22313,7 @@ msgid "Dialog"
msgstr ""
#: scene/gui/dialogs.cpp
-msgid "Hide On Ok"
+msgid "Hide On OK"
msgstr ""
#: scene/gui/dialogs.cpp scene/gui/label.cpp
@@ -20802,7 +22404,7 @@ msgid "Timers"
msgstr "à¶šà·à¶½à¶º:"
#: scene/gui/item_list.cpp scene/gui/popup_menu.cpp scene/gui/tree.cpp
-msgid "Incremental Search Max Interval (msec)"
+msgid "Incremental Search Max Interval Msec"
msgstr ""
#: scene/gui/item_list.cpp scene/gui/tree.cpp
@@ -21317,6 +22919,26 @@ msgstr "යතුරු මක෠දමන්න"
msgid "Nine Patch Stretch"
msgstr "නිවේà·à¶± මà·à¶¯à·’ලිය"
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Left"
+msgstr "සජීවීකරණ පුනරà·à·€à¶»à·Šà¶®à¶±à¶º"
+
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Top"
+msgstr "සජීවීකරණ පුනරà·à·€à¶»à·Šà¶®à¶±à¶º"
+
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Right"
+msgstr "සජීවීකරණ පුනරà·à·€à¶»à·Šà¶®à¶±à¶º"
+
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Bottom"
+msgstr "සජීවීකරණ පුනරà·à·€à¶»à·Šà¶®à¶±à¶º"
+
#: scene/gui/tree.cpp
msgid "Custom Minimum Height"
msgstr ""
@@ -21351,7 +22973,7 @@ msgid "Paused"
msgstr ""
#: scene/gui/video_player.cpp
-msgid "Buffering (msec)"
+msgid "Buffering Msec"
msgstr ""
#: scene/gui/video_player.cpp
@@ -21666,6 +23288,22 @@ msgid "Shadow Atlas"
msgstr ""
#: scene/main/viewport.cpp
+msgid "Quad 0"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 1"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 2"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 3"
+msgstr ""
+
+#: scene/main/viewport.cpp
#, fuzzy
msgid "Canvas Transform"
msgstr "Anim පරිවර්තනය වෙනස් කරන්න"
@@ -21680,6 +23318,10 @@ msgid "Tooltip Delay (sec)"
msgstr ""
#: scene/register_scene_types.cpp
+msgid "Swap OK Cancel"
+msgstr ""
+
+#: scene/register_scene_types.cpp
msgid "Use hiDPI"
msgstr ""
@@ -21694,21 +23336,6 @@ msgid "Custom Font"
msgstr "යතුරු පිටපත් කරන්න"
#: scene/resources/audio_stream_sample.cpp
-#, fuzzy
-msgid "Loop Mode"
-msgstr "නිවේà·à¶± මà·à¶¯à·’ලිය"
-
-#: scene/resources/audio_stream_sample.cpp
-#, fuzzy
-msgid "Loop Begin"
-msgstr "නිවේà·à¶± මà·à¶¯à·’ලිය"
-
-#: scene/resources/audio_stream_sample.cpp
-#, fuzzy
-msgid "Loop End"
-msgstr "නිවේà·à¶± මà·à¶¯à·’ලිය"
-
-#: scene/resources/audio_stream_sample.cpp
#: servers/audio/effects/audio_stream_generator.cpp servers/audio_server.cpp
msgid "Mix Rate"
msgstr ""
@@ -21760,6 +23387,15 @@ msgid "Extra Spacing"
msgstr ""
#: scene/resources/dynamic_font.cpp
+msgid "Char"
+msgstr ""
+
+#: scene/resources/dynamic_font.cpp scene/resources/world.cpp
+#: scene/resources/world_2d.cpp
+msgid "Space"
+msgstr ""
+
+#: scene/resources/dynamic_font.cpp
msgid "Font"
msgstr ""
@@ -21966,6 +23602,42 @@ msgid "Glow"
msgstr ""
#: scene/resources/environment.cpp
+msgid "Levels"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "1"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "2"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "3"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "4"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "5"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "6"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "7"
+msgstr ""
+
+#: scene/resources/environment.cpp
msgid "Bloom"
msgstr ""
@@ -22048,9 +23720,64 @@ msgid "Next Pass"
msgstr ""
#: scene/resources/material.cpp
+msgid "Use Shadow To Opacity"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Unshaded"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Vertex Lighting"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "No Depth Test"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Use Point Size"
+msgstr "ලුහුබදින්නෙක් එක් කරන්න"
+
+#: scene/resources/material.cpp
+msgid "World Triplanar"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Fixed Size"
+msgstr "ලුහුබදින්නෙක් එක් කරන්න"
+
+#: scene/resources/material.cpp
+msgid "Albedo Tex Force sRGB"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Do Not Receive Shadows"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Disable Ambient Light"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Ensure Correct Normals"
+msgstr "3D රූපà·à¶±à·Šà¶­à¶»à¶«à¶º ලුහුබදින්න"
+
+#: scene/resources/material.cpp
msgid "Vertex Color"
msgstr ""
+#: scene/resources/material.cpp
+msgid "Use As Albedo"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Is sRGB"
+msgstr ""
+
#: scene/resources/material.cpp servers/visual_server.cpp
msgid "Parameters"
msgstr ""
@@ -22086,6 +23813,11 @@ msgid "Billboard Mode"
msgstr "නිවේà·à¶± මà·à¶¯à·’ලිය"
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Billboard Keep Scale"
+msgstr "නිවේà·à¶± මà·à¶¯à·’ලිය"
+
+#: scene/resources/material.cpp
msgid "Grow"
msgstr ""
@@ -22095,6 +23827,10 @@ msgid "Grow Amount"
msgstr "මෙම ලුහුබදින්න෠ඉවත් කරන්න."
#: scene/resources/material.cpp
+msgid "Use Alpha Scissor"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Alpha Scissor Threshold"
msgstr ""
@@ -22123,10 +23859,20 @@ msgid "Metallic Specular"
msgstr ""
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Metallic Texture"
+msgstr "à·à·Šâ€à¶»à·’à¶­:"
+
+#: scene/resources/material.cpp
msgid "Metallic Texture Channel"
msgstr ""
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Roughness Texture"
+msgstr "à·à·Šâ€à¶»à·’à¶­:"
+
+#: scene/resources/material.cpp
msgid "Roughness Texture Channel"
msgstr ""
@@ -22143,6 +23889,15 @@ msgid "Emission Operator"
msgstr ""
#: scene/resources/material.cpp
+msgid "Emission On UV2"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Emission Texture"
+msgstr "à·à·Šâ€à¶»à·’à¶­:"
+
+#: scene/resources/material.cpp
msgid "NormalMap"
msgstr ""
@@ -22156,6 +23911,11 @@ msgstr ""
#: scene/resources/material.cpp
#, fuzzy
+msgid "Rim Texture"
+msgstr "à·à·Šâ€à¶»à·’à¶­:"
+
+#: scene/resources/material.cpp
+#, fuzzy
msgid "Clearcoat"
msgstr "Anim පරිවර්තනය වෙනස් කරන්න"
@@ -22165,14 +23925,27 @@ msgid "Clearcoat Gloss"
msgstr "Anim පරිවර්තනය වෙනස් කරන්න"
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Clearcoat Texture"
+msgstr "à·à·Šâ€à¶»à·’à¶­:"
+
+#: scene/resources/material.cpp
msgid "Anisotropy"
msgstr ""
#: scene/resources/material.cpp
+msgid "Anisotropy Flowmap"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Ambient Occlusion"
msgstr ""
#: scene/resources/material.cpp
+msgid "On UV2"
+msgstr ""
+
+#: scene/resources/material.cpp
#, fuzzy
msgid "Texture Channel"
msgstr "නිවේà·à¶± මà·à¶¯à·’ලිය"
@@ -22209,6 +23982,11 @@ msgid "Transmission"
msgstr "Anim සංක්රමණය වෙනස් කරන්න"
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Transmission Texture"
+msgstr "Anim සංක්රමණය වෙනස් කරන්න"
+
+#: scene/resources/material.cpp
msgid "Refraction"
msgstr ""
@@ -22225,6 +24003,10 @@ msgid "UV1"
msgstr ""
#: scene/resources/material.cpp
+msgid "Triplanar"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Triplanar Sharpness"
msgstr ""
@@ -22421,6 +24203,14 @@ msgstr "à·à·Šâ€à¶»à·’à¶­:"
msgid "Point Count"
msgstr "සජීවීකරණ පුනරà·à·€à¶»à·Šà¶®à¶±à¶º"
+#: scene/resources/particles_material.cpp
+msgid "Scale Random"
+msgstr ""
+
+#: scene/resources/particles_material.cpp
+msgid "Scale Curve"
+msgstr ""
+
#: scene/resources/physics_material.cpp
msgid "Rough"
msgstr ""
@@ -22478,10 +24268,6 @@ msgid "A"
msgstr ""
#: scene/resources/shader.cpp
-msgid "Code"
-msgstr ""
-
-#: scene/resources/shader.cpp
msgid "Custom Defines"
msgstr ""
@@ -22569,14 +24355,6 @@ msgid "Grow End"
msgstr ""
#: scene/resources/texture.cpp
-msgid "Storage"
-msgstr ""
-
-#: scene/resources/texture.cpp
-msgid "Lossy Quality"
-msgstr ""
-
-#: scene/resources/texture.cpp
msgid "Load Path"
msgstr ""
@@ -22693,10 +24471,6 @@ msgstr ""
msgid "Fallback Environment"
msgstr ""
-#: scene/resources/world.cpp scene/resources/world_2d.cpp
-msgid "Space"
-msgstr ""
-
#: scene/resources/world.cpp
msgid "Scenario"
msgstr ""
@@ -22771,8 +24545,33 @@ msgstr ""
msgid "Wet"
msgstr ""
-#: servers/audio/effects/audio_effect_compressor.cpp
-msgid "Threshold"
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "Voice"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+msgid "Delay (ms)"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_phaser.cpp
+msgid "Rate Hz"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "Depth (ms)"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+msgid "Level dB"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+#: servers/audio/effects/audio_effect_panner.cpp
+msgid "Pan"
msgstr ""
#: servers/audio/effects/audio_effect_compressor.cpp
@@ -22797,19 +24596,6 @@ msgid "Tap 1"
msgstr ""
#: servers/audio/effects/audio_effect_delay.cpp
-msgid "Delay (ms)"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_delay.cpp
-msgid "Level dB"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_delay.cpp
-#: servers/audio/effects/audio_effect_panner.cpp
-msgid "Pan"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_delay.cpp
msgid "Tap 2"
msgstr ""
@@ -22867,10 +24653,6 @@ msgstr ""
msgid "Range Max Hz"
msgstr ""
-#: servers/audio/effects/audio_effect_phaser.cpp
-msgid "Rate Hz"
-msgstr ""
-
#: servers/audio/effects/audio_effect_pitch_shift.cpp
msgid "Oversampling"
msgstr ""
@@ -22885,7 +24667,7 @@ msgid "Predelay"
msgstr ""
#: servers/audio/effects/audio_effect_reverb.cpp
-msgid "(msec)"
+msgid "Msec"
msgstr ""
#: servers/audio/effects/audio_effect_reverb.cpp
diff --git a/editor/translations/sk.po b/editor/translations/sk.po
index b12f5cf035..1f990dba4f 100644
--- a/editor/translations/sk.po
+++ b/editor/translations/sk.po
@@ -28,7 +28,7 @@ msgstr ""
"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
"X-Generator: Weblate 4.8-dev\n"
-#: core/bind/core_bind.cpp
+#: core/bind/core_bind.cpp main/main.cpp
msgid "Tablet Driver"
msgstr ""
@@ -129,8 +129,8 @@ msgstr "Pozícia Dock-u"
#: core/bind/core_bind.cpp editor/editor_settings.cpp main/main.cpp
#: modules/gdscript/gdscript_editor.cpp modules/gridmap/grid_map.cpp
#: modules/mono/csharp_script.cpp modules/visual_script/visual_script_nodes.cpp
-#: scene/2d/tile_map.cpp scene/3d/camera.cpp scene/gui/control.cpp
-#: scene/gui/graph_edit.cpp scene/main/viewport.cpp
+#: scene/2d/tile_map.cpp scene/3d/camera.cpp scene/3d/light.cpp
+#: scene/gui/control.cpp scene/gui/graph_edit.cpp scene/main/viewport.cpp
#: scene/resources/dynamic_font.cpp scene/resources/navigation_mesh.cpp
#: scene/resources/primitive_meshes.cpp scene/resources/sky.cpp
#: scene/resources/style_box.cpp scene/resources/texture.cpp
@@ -233,8 +233,7 @@ msgid "Data"
msgstr ""
#: core/io/file_access_network.cpp core/register_core_types.cpp
-#: editor/editor_settings.cpp editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp main/main.cpp
+#: editor/editor_settings.cpp main/main.cpp
#: modules/gdscript/language_server/gdscript_language_server.cpp
#, fuzzy
msgid "Network"
@@ -514,9 +513,10 @@ msgstr "Preset"
msgid "Relative"
msgstr "Prichytiť Relatívne"
-#: core/os/input_event.cpp scene/2d/camera_2d.cpp
-#: scene/3d/interpolated_camera.cpp scene/animation/animation_player.cpp
-#: scene/resources/environment.cpp
+#: core/os/input_event.cpp scene/2d/camera_2d.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/interpolated_camera.cpp
+#: scene/animation/animation_player.cpp scene/resources/environment.cpp
+#: scene/resources/particles_material.cpp
#, fuzzy
msgid "Speed"
msgstr "Veľkosť:"
@@ -567,8 +567,9 @@ msgstr "Zmeniť"
msgid "Pitch"
msgstr "Veľkosť:"
-#: core/os/input_event.cpp scene/2d/physics_body_2d.cpp
-#: scene/3d/physics_body.cpp
+#: core/os/input_event.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/physics_body_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/3d/physics_body.cpp scene/resources/particles_material.cpp
msgid "Velocity"
msgstr ""
@@ -586,6 +587,8 @@ msgid "Controller Value"
msgstr ""
#: core/project_settings.cpp editor/editor_node.cpp main/main.cpp
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/windows/export/export.cpp
#, fuzzy
msgid "Application"
msgstr "Všetky vybrané"
@@ -604,13 +607,16 @@ msgstr "Nastavenia Projektu..."
#: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp
#: editor/editor_plugin_settings.cpp editor/editor_profiler.cpp
#: editor/project_manager.cpp editor/settings_config_dialog.cpp
-#: modules/gdnative/nativescript/nativescript.cpp scene/2d/area_2d.cpp
-#: scene/3d/area.cpp scene/main/node.cpp
+#: modules/gdnative/nativescript/nativescript.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/osx/export/export.cpp scene/2d/area_2d.cpp scene/3d/area.cpp
+#: scene/main/node.cpp
msgid "Name"
msgstr "Meno"
#: core/project_settings.cpp editor/editor_help.cpp
-#: modules/visual_script/visual_script_nodes.cpp
+#: modules/visual_script/visual_script_nodes.cpp platform/uwp/export/export.cpp
+#: platform/windows/export/export.cpp
msgid "Description"
msgstr "Popis"
@@ -648,7 +654,7 @@ msgid "Custom User Dir Name"
msgstr ""
#: core/project_settings.cpp editor/animation_track_editor.cpp
-#: editor/editor_audio_buses.cpp servers/audio_server.cpp
+#: editor/editor_audio_buses.cpp main/main.cpp servers/audio_server.cpp
msgid "Audio"
msgstr "Audio"
@@ -813,10 +819,13 @@ msgstr "Filtre:"
msgid "Sharpen Intensity"
msgstr ""
-#: core/project_settings.cpp editor/editor_node.cpp editor/editor_settings.cpp
-#: editor/plugins/script_editor_plugin.cpp editor/project_export.cpp
-#: main/main.cpp modules/gdscript/gdscript.cpp
-#: modules/visual_script/visual_script.cpp scene/3d/room_manager.cpp
+#: core/project_settings.cpp editor/editor_export.cpp editor/editor_node.cpp
+#: editor/editor_settings.cpp editor/plugins/script_editor_plugin.cpp
+#: editor/project_export.cpp main/main.cpp modules/gdscript/gdscript.cpp
+#: modules/visual_script/visual_script.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp scene/3d/room_manager.cpp
#: scene/main/scene_tree.cpp scene/resources/shape_2d.cpp
#: servers/visual_server.cpp
msgid "Debug"
@@ -1051,6 +1060,7 @@ msgid "Subsurface Scattering"
msgstr ""
#: drivers/gles3/rasterizer_scene_gles3.cpp
+#: editor/import/resource_importer_texture.cpp
#: editor/plugins/spatial_editor_plugin.cpp modules/gltf/gltf_node.cpp
#: modules/gridmap/grid_map.cpp scene/2d/cpu_particles_2d.cpp
#: scene/2d/node_2d.cpp scene/2d/parallax_layer.cpp scene/2d/polygon_2d.cpp
@@ -1348,6 +1358,7 @@ msgid "Editors"
msgstr "Editor"
#: editor/animation_track_editor.cpp editor/editor_settings.cpp
+#: editor/import/resource_importer_scene.cpp
#: editor/plugins/animation_player_editor_plugin.cpp editor/scene_tree_dock.cpp
#: scene/2d/animated_sprite.cpp scene/2d/cpu_particles_2d.cpp
#: scene/2d/sprite.cpp scene/3d/cpu_particles.cpp scene/3d/sprite_3d.cpp
@@ -1581,14 +1592,14 @@ msgstr "Hodnota kroku Animácie."
msgid "Seconds"
msgstr "Sekundy"
-#: editor/animation_track_editor.cpp
+#: editor/animation_track_editor.cpp editor/import/resource_importer_scene.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp main/main.cpp
#: scene/resources/texture.cpp
msgid "FPS"
msgstr "FPS"
#: editor/animation_track_editor.cpp editor/editor_plugin_settings.cpp
-#: editor/editor_resource_picker.cpp
+#: editor/editor_resource_picker.cpp editor/import/resource_importer_wav.cpp
#: editor/plugins/polygon_2d_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
@@ -2558,7 +2569,9 @@ msgid "Remove Autoload"
msgstr "Vymazať AutoLoad"
#: editor/editor_autoload_settings.cpp editor/editor_plugin_settings.cpp
-#: modules/gdscript/gdscript.cpp scene/2d/polygon_2d.cpp scene/3d/area.cpp
+#: modules/gdscript/gdscript.cpp platform/android/export/export_plugin.cpp
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#: scene/2d/polygon_2d.cpp scene/3d/area.cpp scene/3d/physics_joint.cpp
#: scene/3d/reflection_probe.cpp scene/main/canvas_layer.cpp
#: scene/resources/material.cpp servers/visual_server.cpp
msgid "Enable"
@@ -2730,6 +2743,58 @@ msgstr ""
#: editor/editor_export.cpp platform/android/export/export_plugin.cpp
#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Custom Template"
+msgstr "Súbor:"
+
+#: editor/editor_export.cpp editor/project_export.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp
+msgid "Release"
+msgstr ""
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Binary Format"
+msgstr "Konštanty:"
+
+#: editor/editor_export.cpp
+msgid "64 Bits"
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Embed PCK"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Texture Format"
+msgstr "Pravítko"
+
+#: editor/editor_export.cpp
+msgid "BPTC"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "S3TC"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "ETC"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "ETC2"
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "No BPTC Fallbacks"
+msgstr ""
+
+#: editor/editor_export.cpp platform/android/export/export_plugin.cpp
+#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
msgid "Custom debug template not found."
msgstr "Vlastná debug šablóna sa nenašla."
@@ -2912,6 +2977,7 @@ msgid "Make Current"
msgstr "Spraviť Aktuálny"
#: editor/editor_feature_profile.cpp editor/editor_node.cpp
+#: editor/import/resource_importer_scene.cpp
#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
msgid "Import"
msgstr "Import"
@@ -3042,8 +3108,11 @@ msgstr "Úspech!"
msgid "Display Mode"
msgstr "Prehrať Mód:"
-#: editor/editor_file_dialog.cpp main/main.cpp modules/csg/csg_shape.cpp
-#: modules/visual_script/visual_script_nodes.cpp
+#: editor/editor_file_dialog.cpp
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+#: editor/import/resource_importer_wav.cpp main/main.cpp
+#: modules/csg/csg_shape.cpp modules/visual_script/visual_script_nodes.cpp
#: modules/visual_script/visual_script_yield_nodes.cpp scene/2d/light_2d.cpp
#: scene/2d/physics_body_2d.cpp scene/2d/tile_map.cpp
#: scene/3d/baked_lightmap.cpp scene/3d/light.cpp scene/3d/physics_body.cpp
@@ -3182,7 +3251,9 @@ msgstr "(Re)Importovanie Asset-ov"
msgid "Reimport Missing Imported Files"
msgstr ""
-#: editor/editor_help.cpp
+#: editor/editor_help.cpp scene/2d/camera_2d.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/resources/dynamic_font.cpp
+#: scene/resources/style_box.cpp
msgid "Top"
msgstr "Top"
@@ -3235,6 +3306,7 @@ msgid "Fonts"
msgstr ""
#: editor/editor_help.cpp editor/plugins/theme_editor_plugin.cpp
+#: platform/iphone/export/export.cpp
msgid "Icons"
msgstr ""
@@ -3402,7 +3474,9 @@ msgstr ""
msgid "Pin value [Disabled because '%s' is editor-only]"
msgstr ""
-#: editor/editor_inspector.cpp editor/scene_tree_dock.cpp
+#: editor/editor_inspector.cpp
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+#: editor/scene_tree_dock.cpp
#: modules/visual_script/visual_script_func_nodes.cpp
#: modules/visual_script/visual_script_nodes.cpp
#: modules/visual_script/visual_script_property_selector.cpp
@@ -3743,6 +3817,16 @@ msgid "Quick Open Script..."
msgstr "Rýchle Otvorenie Scriptu..."
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Save & Reload"
+msgstr "Uložiť & Reštartovať"
+
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Save changes to '%s' before reloading?"
+msgstr "Chcete uložiť zmeny do '%s' pred zatvorením?"
+
+#: editor/editor_node.cpp
msgid "Save & Close"
msgstr "Uložiť & Zatvoriť"
@@ -3858,6 +3942,11 @@ msgid "Open Project Manager?"
msgstr "Otvoriť Manažéra Projektov?"
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Save changes to the following scene(s) before reloading?"
+msgstr "UložiÅ¥ zmeny do nasledujúcich scén pred ukonÄením?"
+
+#: editor/editor_node.cpp
msgid "Save & Quit"
msgstr "UložiÅ¥ & UkonÄiÅ¥"
@@ -4129,8 +4218,8 @@ msgstr "Parameter sa Zmenil"
#: editor/editor_node.cpp
#, fuzzy
-msgid "Translate Properties"
-msgstr "Vlastnosti"
+msgid "Localize Settings"
+msgstr "Nastavenie Prichytenia"
#: editor/editor_node.cpp
#, fuzzy
@@ -4147,8 +4236,8 @@ msgstr "Inšpektor"
#: editor/editor_node.cpp
#, fuzzy
-msgid "Capitalize Properties"
-msgstr "Vlastnosti"
+msgid "Default Property Name Style"
+msgstr "Predzobraziť Vylepšenie"
#: editor/editor_node.cpp
msgid "Default Float Step"
@@ -4756,7 +4845,9 @@ msgstr "Nainštalované Plugins:"
msgid "Update"
msgstr "Update"
-#: editor/editor_plugin_settings.cpp
+#: editor/editor_plugin_settings.cpp platform/android/export/export_plugin.cpp
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp
#, fuzzy
msgid "Version"
msgstr "Verzia:"
@@ -5772,7 +5863,7 @@ msgstr "Plný Obdĺžnik"
msgid "Rect Custom Position"
msgstr "Všetky vybrané"
-#: editor/editor_settings.cpp
+#: editor/editor_settings.cpp platform/android/export/export_plugin.cpp
msgid "Screen"
msgstr ""
@@ -5797,6 +5888,19 @@ msgid "Editor SSL Certificates"
msgstr ""
#: editor/editor_settings.cpp
+msgid "HTTP Proxy"
+msgstr ""
+
+#: editor/editor_settings.cpp
+msgid "Host"
+msgstr ""
+
+#: editor/editor_settings.cpp editor/fileserver/editor_file_server.cpp
+#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp
+msgid "Port"
+msgstr ""
+
+#: editor/editor_settings.cpp
msgid "Project Manager"
msgstr ""
@@ -5839,7 +5943,8 @@ msgstr ""
msgid "String Color"
msgstr "Ukladanie súboru:"
-#: editor/editor_settings.cpp
+#: editor/editor_settings.cpp platform/javascript/export/export.cpp
+#: platform/uwp/export/export.cpp
#, fuzzy
msgid "Background Color"
msgstr "Nesprávna veľkosť písma."
@@ -6017,22 +6122,6 @@ msgid "Starting the download..."
msgstr ""
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "HTTP Proxy"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Host"
-msgstr ""
-
-#: editor/export_template_manager.cpp editor/fileserver/editor_file_server.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp main/main.cpp
-#: modules/mono/mono_gd/gd_mono.cpp
-msgid "Port"
-msgstr ""
-
-#: editor/export_template_manager.cpp
msgid "Error requesting URL:"
msgstr "Chyba pri zadávaní URL:"
@@ -6298,6 +6387,7 @@ msgstr ""
#: editor/fileserver/editor_file_server.cpp
#: editor/plugins/version_control_editor_plugin.cpp
+#: platform/uwp/export/export.cpp platform/windows/export/export.cpp
msgid "Password"
msgstr ""
@@ -6678,6 +6768,117 @@ msgstr ""
msgid "Use Ambient"
msgstr ""
+#: editor/import/resource_importer_bitmask.cpp
+#, fuzzy
+msgid "Create From"
+msgstr "Vytvoriť adresár"
+
+#: editor/import/resource_importer_bitmask.cpp
+#: servers/audio/effects/audio_effect_compressor.cpp
+msgid "Threshold"
+msgstr ""
+
+#: editor/import/resource_importer_csv_translation.cpp
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_scene.cpp
+#: editor/import/resource_importer_texture.cpp
+#: editor/import/resource_importer_wav.cpp scene/3d/gi_probe.cpp
+#, fuzzy
+msgid "Compress"
+msgstr "Komponenty"
+
+#: editor/import/resource_importer_csv_translation.cpp
+msgid "Delimiter"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+msgid "No BPTC If RGB"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/sprite_3d.cpp
+#: scene/resources/material.cpp scene/resources/particles_material.cpp
+#: scene/resources/texture.cpp
+msgid "Flags"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/animation/tween.cpp
+#: scene/resources/texture.cpp
+msgid "Repeat"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/2d/light_2d.cpp
+#: scene/gui/control.cpp scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Filter"
+msgstr "Filtre:"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Mipmaps"
+msgstr "Signály"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+msgid "Anisotropic"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+msgid "sRGB"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#, fuzzy
+msgid "Slices"
+msgstr "Zariadenie"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
+#: scene/resources/style_box.cpp
+#, fuzzy
+msgid "Horizontal"
+msgstr "Presunúť Horizontálny Návod"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
+#: scene/resources/style_box.cpp
+#, fuzzy
+msgid "Vertical"
+msgstr "Presunúť Vertikálny Návod"
+
+#: editor/import/resource_importer_obj.cpp
+#, fuzzy
+msgid "Generate Tangents"
+msgstr "Generovaný Bodový PoÄet:"
+
+#: editor/import/resource_importer_obj.cpp
+#, fuzzy
+msgid "Scale Mesh"
+msgstr "Zmena Veľkosti"
+
+#: editor/import/resource_importer_obj.cpp
+#, fuzzy
+msgid "Offset Mesh"
+msgstr "Odchýlka Mriežky:"
+
+#: editor/import/resource_importer_obj.cpp
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Octahedral Compression"
+msgstr "Režim Interpolácie"
+
+#: editor/import/resource_importer_obj.cpp
+#, fuzzy
+msgid "Optimize Mesh Flags"
+msgstr "Veľkosť: "
+
#: editor/import/resource_importer_scene.cpp
msgid "Import as Single Scene"
msgstr "Importovať ako Samostatnú Scénu"
@@ -6718,6 +6919,155 @@ msgstr "Importovať ako Dvojité Scény"
msgid "Import as Multiple Scenes+Materials"
msgstr "Importovať ako Dvojité Scény+Materiály"
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Nodes"
+msgstr "Node"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Root Type"
+msgstr "Typ ÄŒlena"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Root Name"
+msgstr "Diaľkový "
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Root Scale"
+msgstr "Veľkosť:"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Custom Script"
+msgstr "Vložiť"
+
+#: editor/import/resource_importer_scene.cpp scene/resources/texture.cpp
+#, fuzzy
+msgid "Storage"
+msgstr "Ukladanie súboru:"
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Use Legacy Names"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+#, fuzzy
+msgid "Materials"
+msgstr "Parameter sa Zmenil"
+
+#: editor/import/resource_importer_scene.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Location"
+msgstr "Krok Rotácie:"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Keep On Reimport"
+msgstr "Reimportovať"
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+msgid "Meshes"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Ensure Tangents"
+msgstr "Modifikovať Tangetu Krivky"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Light Baking"
+msgstr "Bake Lightmaps"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Lightmap Texel Size"
+msgstr "Bake Lightmaps"
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+msgid "Skins"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Use Named Skins"
+msgstr "Použiť Prichytávanie Veľkosti"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "External Files"
+msgstr "Otvoriť súbor"
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Store In Subdir"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Filter Script"
+msgstr "Filter:"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Keep Custom Tracks"
+msgstr "Súbor:"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Optimizer"
+msgstr "Optimalizácia"
+
+#: editor/import/resource_importer_scene.cpp main/main.cpp
+#: modules/mono/mono_gd/gd_mono.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp scene/2d/camera_2d.cpp scene/2d/light_2d.cpp
+#: scene/2d/navigation_polygon.cpp scene/2d/ray_cast_2d.cpp scene/2d/sprite.cpp
+#: scene/2d/y_sort.cpp scene/3d/audio_stream_player_3d.cpp
+#: scene/3d/baked_lightmap.cpp scene/3d/interpolated_camera.cpp
+#: scene/3d/light.cpp scene/3d/navigation_mesh_instance.cpp
+#: scene/3d/physics_joint.cpp scene/3d/ray_cast.cpp scene/3d/sprite_3d.cpp
+#: scene/gui/graph_edit.cpp scene/gui/rich_text_label.cpp
+#: scene/resources/curve.cpp scene/resources/environment.cpp
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Enabled"
+msgstr "Povoliť"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Max Linear Error"
+msgstr "Max. Linear Error:"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Max Angular Error"
+msgstr "Max. Angular Error:"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Max Angle"
+msgstr "Hodnota:"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Remove Unused Tracks"
+msgstr "Vymazať Track Animácie"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Clips"
+msgstr "Klipy Animácie"
+
+#: editor/import/resource_importer_scene.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/particles_2d.cpp scene/3d/area.cpp scene/3d/cpu_particles.cpp
+#: scene/3d/particles.cpp scene/resources/environment.cpp
+#, fuzzy
+msgid "Amount"
+msgstr "Množstvo:"
+
#: editor/import/resource_importer_scene.cpp
#: editor/plugins/mesh_library_editor_plugin.cpp
msgid "Import Scene"
@@ -6759,12 +7109,146 @@ msgstr "Vrátili ste Node-derived objekt v `post_import()` metóde?"
msgid "Saving..."
msgstr "Ukladám..."
+#: editor/import/resource_importer_texture.cpp scene/resources/texture.cpp
+msgid "Lossy Quality"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "HDR Mode"
+msgstr "Vybrať Režim"
+
+#: editor/import/resource_importer_texture.cpp
+msgid "BPTC LDR"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/mesh_instance_2d.cpp scene/2d/multimesh_instance_2d.cpp
+#: scene/2d/particles_2d.cpp scene/2d/sprite.cpp scene/resources/style_box.cpp
+msgid "Normal Map"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Process"
+msgstr "Move Mode"
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Fix Alpha Border"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Premult Alpha"
+msgstr "Upraviť Poly"
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Hdr As Srgb"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Invert Color"
+msgstr "Popis:"
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Normal Map Invert Y"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
+#: scene/audio/audio_stream_player.cpp scene/gui/video_player.cpp
+msgid "Stream"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Size Limit"
+msgstr "Veľkosť: "
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Detect 3D"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "SVG"
+msgstr ""
+
#: editor/import/resource_importer_texture.cpp
msgid ""
"Warning, no suitable PC VRAM compression enabled in Project Settings. This "
"texture will not display correctly on PC."
msgstr ""
+#: editor/import/resource_importer_texture_atlas.cpp
+#, fuzzy
+msgid "Atlas File"
+msgstr "Prostriedky Súboru ZIP"
+
+#: editor/import/resource_importer_texture_atlas.cpp
+#, fuzzy
+msgid "Import Mode"
+msgstr "Importovať Dock"
+
+#: editor/import/resource_importer_texture_atlas.cpp
+#, fuzzy
+msgid "Crop To Region"
+msgstr "Režim Interpolácie"
+
+#: editor/import/resource_importer_texture_atlas.cpp
+msgid "Trim Alpha Border From Region"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp scene/2d/physics_body_2d.cpp
+msgid "Force"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+msgid "8 Bit"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp main/main.cpp
+#: modules/mono/editor/csharp_project.cpp modules/mono/mono_gd/gd_mono.cpp
+msgid "Mono"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+#, fuzzy
+msgid "Max Rate"
+msgstr "Mix Node"
+
+#: editor/import/resource_importer_wav.cpp
+#, fuzzy
+msgid "Max Rate Hz"
+msgstr "Mix Node"
+
+#: editor/import/resource_importer_wav.cpp
+msgid "Trim"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+#, fuzzy
+msgid "Normalize"
+msgstr "Emisné Farby"
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+#, fuzzy
+msgid "Loop Mode"
+msgstr "Move Mode"
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+#, fuzzy
+msgid "Loop Begin"
+msgstr "Move Mode"
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+#, fuzzy
+msgid "Loop End"
+msgstr "Move Mode"
+
#: editor/import_defaults_editor.cpp
msgid "Select Importer"
msgstr "Vybrať Importér"
@@ -6836,6 +7320,28 @@ msgstr "Nepodarilo sa naÄítaÅ¥ prostriedok."
#: editor/inspector_dock.cpp
#, fuzzy
+msgid "Property Name Style"
+msgstr "Property Track"
+
+#: editor/inspector_dock.cpp scene/gui/color_picker.cpp
+msgid "Raw"
+msgstr ""
+
+#: editor/inspector_dock.cpp
+#, fuzzy
+msgid "Capitalized"
+msgstr "Vlastnosti"
+
+#: editor/inspector_dock.cpp
+msgid "Localized"
+msgstr ""
+
+#: editor/inspector_dock.cpp
+msgid "Localization not available for current language."
+msgstr ""
+
+#: editor/inspector_dock.cpp
+#, fuzzy
msgid "Copy Properties"
msgstr "Vlastnosti"
@@ -7888,18 +8394,26 @@ msgid "License (Z-A)"
msgstr "Licencia (Z-A)"
#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgctxt "Pagination"
msgid "First"
msgstr "Prvý"
-#: editor/plugins/asset_library_editor_plugin.cpp scene/gui/control.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgctxt "Pagination"
msgid "Previous"
msgstr "Minulý"
-#: editor/plugins/asset_library_editor_plugin.cpp scene/gui/control.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgctxt "Pagination"
msgid "Next"
msgstr "Ďalší"
#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgctxt "Pagination"
msgid "Last"
msgstr "Posledný"
@@ -8155,19 +8669,19 @@ msgstr ""
"Pri aktivovaní, pohybovanim Control node-ov zmeníte ich kovadliny namiesto "
"ich okrajov."
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Top Left"
msgstr "Vľavo Hore"
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Top Right"
msgstr "Vpravo Hore"
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Bottom Right"
msgstr "Vpravo Dole"
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Bottom Left"
msgstr "Vľavo Dole"
@@ -8895,6 +9409,19 @@ msgstr "Vypiecť GI Probe"
msgid "Gradient Edited"
msgstr "Prechod je Upravený"
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+msgid "Swap GradientTexture2D Fill Points"
+msgstr ""
+
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+msgid "Swap Gradient Fill Points"
+msgstr ""
+
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+#, fuzzy
+msgid "Toggle Grid Snap"
+msgstr "Prepnúť Mode"
+
#: editor/plugins/item_list_editor_plugin.cpp
msgid "Item %d"
msgstr "Predmet %d"
@@ -9117,9 +9644,10 @@ msgid ""
"%s"
msgstr ""
-#: editor/plugins/mesh_library_editor_plugin.cpp modules/gridmap/grid_map.cpp
-msgid "Mesh Library"
-msgstr ""
+#: editor/plugins/mesh_library_editor_plugin.cpp
+#, fuzzy
+msgid "MeshLibrary"
+msgstr "MeshLibrary..."
#: editor/plugins/mesh_library_editor_plugin.cpp
msgid "Add Item"
@@ -10131,8 +10659,8 @@ msgstr "Pripojiť k Node:"
msgid "Source"
msgstr "Prostriedok"
-#: editor/plugins/script_text_editor.cpp scene/3d/interpolated_camera.cpp
-#: scene/animation/skeleton_ik.cpp
+#: editor/plugins/script_text_editor.cpp platform/uwp/export/export.cpp
+#: scene/3d/interpolated_camera.cpp scene/animation/skeleton_ik.cpp
msgid "Target"
msgstr ""
@@ -11132,7 +11660,9 @@ msgstr ""
#: editor/plugins/sprite_frames_editor_plugin.cpp
#: modules/gltf/gltf_animation.cpp modules/minimp3/audio_stream_mp3.cpp
-#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp scene/2d/path_2d.cpp
+#: modules/minimp3/resource_importer_mp3.cpp
+#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp
+#: modules/stb_vorbis/resource_importer_ogg_vorbis.cpp scene/2d/path_2d.cpp
#: scene/3d/path.cpp scene/resources/animation.cpp scene/resources/material.cpp
msgid "Loop"
msgstr ""
@@ -12082,8 +12612,9 @@ msgstr ""
msgid "Priority"
msgstr "Súbor:"
-#: editor/plugins/tile_set_editor_plugin.cpp main/main.cpp scene/gui/button.cpp
-#: scene/gui/item_list.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp main/main.cpp
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#: scene/gui/button.cpp scene/gui/item_list.cpp
msgid "Icon"
msgstr ""
@@ -13451,10 +13982,6 @@ msgid ""
msgstr ""
#: editor/project_export.cpp
-msgid "Release"
-msgstr ""
-
-#: editor/project_export.cpp
msgid "Exporting All"
msgstr ""
@@ -15277,6 +15804,7 @@ msgid "Change AudioStreamPlayer3D Emission Angle"
msgstr ""
#: editor/spatial_editor_gizmos.cpp modules/gltf/gltf_node.cpp
+#: platform/osx/export/export.cpp
msgid "Camera"
msgstr ""
@@ -15560,7 +16088,8 @@ msgstr ""
msgid "Use Nvidia Rect Flicker Workaround"
msgstr ""
-#: main/main.cpp platform/uwp/os_uwp.cpp
+#: main/main.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp platform/uwp/os_uwp.cpp
#, fuzzy
msgid "Display"
msgstr "Zobraziť Všetko"
@@ -15620,19 +16149,6 @@ msgstr ""
msgid "Allowed"
msgstr ""
-#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp scene/2d/camera_2d.cpp
-#: scene/2d/light_2d.cpp scene/2d/navigation_polygon.cpp
-#: scene/2d/ray_cast_2d.cpp scene/2d/sprite.cpp scene/2d/y_sort.cpp
-#: scene/3d/audio_stream_player_3d.cpp scene/3d/baked_lightmap.cpp
-#: scene/3d/interpolated_camera.cpp scene/3d/light.cpp
-#: scene/3d/navigation_mesh_instance.cpp scene/3d/ray_cast.cpp
-#: scene/3d/sprite_3d.cpp scene/gui/graph_edit.cpp
-#: scene/gui/rich_text_label.cpp scene/resources/curve.cpp
-#: scene/resources/environment.cpp
-#, fuzzy
-msgid "Enabled"
-msgstr "Povoliť"
-
#: main/main.cpp
msgid "Intended Usage"
msgstr ""
@@ -15663,13 +16179,14 @@ msgstr ""
msgid "Handheld"
msgstr ""
-#: main/main.cpp
+#: main/main.cpp platform/javascript/export/export.cpp
+#: platform/uwp/export/export.cpp
#, fuzzy
msgid "Orientation"
msgstr "Popis:"
#: main/main.cpp scene/gui/scroll_container.cpp scene/gui/text_edit.cpp
-#: scene/main/scene_tree.cpp
+#: scene/main/scene_tree.cpp scene/register_scene_types.cpp
#, fuzzy
msgid "Common"
msgstr "Komunita"
@@ -15711,7 +16228,7 @@ msgstr ""
#: main/main.cpp
#, fuzzy
-msgid "Frame Delay (msec)"
+msgid "Frame Delay Msec"
msgstr "Výber Frame-u"
#: main/main.cpp
@@ -15836,11 +16353,6 @@ msgstr ""
msgid "Tooltip Position Offset"
msgstr "Odchýlka Rotácie:"
-#: main/main.cpp modules/mono/editor/csharp_project.cpp
-#: modules/mono/mono_gd/gd_mono.cpp
-msgid "Mono"
-msgstr ""
-
#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp
msgid "Debugger Agent"
msgstr ""
@@ -16408,7 +16920,7 @@ msgstr ""
msgid "Intensity"
msgstr ""
-#: modules/gltf/gltf_light.cpp scene/2d/light_2d.cpp
+#: modules/gltf/gltf_light.cpp scene/2d/light_2d.cpp scene/3d/light.cpp
#, fuzzy
msgid "Range"
msgstr "Zmeniť"
@@ -16550,11 +17062,6 @@ msgstr ""
msgid "Use Named Skin Binds"
msgstr ""
-#: modules/gltf/gltf_state.cpp scene/3d/physics_joint.cpp
-#, fuzzy
-msgid "Nodes"
-msgstr "Node"
-
#: modules/gltf/gltf_state.cpp
msgid "Buffer Views"
msgstr ""
@@ -16564,15 +17071,6 @@ msgid "Accessors"
msgstr ""
#: modules/gltf/gltf_state.cpp
-msgid "Meshes"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp
-#, fuzzy
-msgid "Materials"
-msgstr "Parameter sa Zmenil"
-
-#: modules/gltf/gltf_state.cpp
#, fuzzy
msgid "Scene Name"
msgstr "Cesta Scény:"
@@ -16589,15 +17087,11 @@ msgstr "Vytvoriť adresár"
msgid "Textures"
msgstr "Všetky vybrané"
-#: modules/gltf/gltf_state.cpp
+#: modules/gltf/gltf_state.cpp platform/uwp/export/export.cpp
msgid "Images"
msgstr ""
#: modules/gltf/gltf_state.cpp
-msgid "Skins"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp
msgid "Cameras"
msgstr ""
@@ -16632,11 +17126,15 @@ msgid "Src Image"
msgstr "Zobraziť Kosti"
#: modules/gridmap/grid_map.cpp
+msgid "Mesh Library"
+msgstr ""
+
+#: modules/gridmap/grid_map.cpp
#, fuzzy
msgid "Physics Material"
msgstr "Fyzická Snímka %"
-#: modules/gridmap/grid_map.cpp
+#: modules/gridmap/grid_map.cpp scene/3d/visual_instance.cpp
#, fuzzy
msgid "Use In Baked Light"
msgstr "Bake Lightmaps"
@@ -16668,6 +17166,7 @@ msgstr "V Strede"
#: modules/gridmap/grid_map.cpp scene/2d/collision_object_2d.cpp
#: scene/2d/tile_map.cpp scene/3d/collision_object.cpp scene/3d/soft_body.cpp
+#: scene/resources/material.cpp
msgid "Mask"
msgstr ""
@@ -16859,7 +17358,9 @@ msgid "Ultra Quality Ray Count"
msgstr ""
#: modules/minimp3/audio_stream_mp3.cpp
+#: modules/minimp3/resource_importer_mp3.cpp
#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp
+#: modules/stb_vorbis/resource_importer_ogg_vorbis.cpp
#, fuzzy
msgid "Loop Offset"
msgstr "Odchýlka Mriežky:"
@@ -17967,6 +18468,188 @@ msgid "The package must have at least one '.' separator."
msgstr ""
#: platform/android/export/export_plugin.cpp
+msgid "Use Custom Build"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Export Format"
+msgstr "Konštanty:"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Keystore"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Debug User"
+msgstr "Debug"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+msgid "Debug Password"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Release User"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Release Password"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "One Click Deploy"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Clear Previous Install"
+msgstr "Minulá karta"
+
+#: platform/android/export/export_plugin.cpp scene/resources/shader.cpp
+msgid "Code"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Min SDK"
+msgstr "Veľkosť: "
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Target SDK"
+msgstr "Vytvoriť Node"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Package"
+msgstr "Zabalovanie"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Unique Name"
+msgstr "Meno Node-u:"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Signed"
+msgstr "Signál"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Classify As Game"
+msgstr "Trieda:"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Retain Data On Uninstall"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Exclude From Recents"
+msgstr "Všetky vybrané"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Graphics"
+msgstr "Odchýlka Mriežky:"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "OpenGL Debug"
+msgstr "Otvoriť"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "XR Features"
+msgstr "Povolené Funkcie:"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "XR Mode"
+msgstr "Pohyb Mód"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Hand Tracking"
+msgstr "Zabalovanie"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Hand Tracking Frequency"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Passthrough"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Immersive Mode"
+msgstr "RotaÄný Režim"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Support Small"
+msgstr "Podpora"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Support Normal"
+msgstr "Podpora"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Support Large"
+msgstr "Podpora"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Support Xlarge"
+msgstr "Podpora"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "User Data Backup"
+msgstr "OtvoriÅ¥ prieÄinok Editor Data"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Allow"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Command Line"
+msgstr "Komunita"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Extra Args"
+msgstr "Extra Call Argumenty:"
+
+#: platform/android/export/export_plugin.cpp
+msgid "APK Expansion"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Salt"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Public Key"
+msgstr "Duplikovanie KľúÄov"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Permissions"
+msgstr "Emisná Maska"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Custom Permissions"
+msgstr "Spustiť Vlastnú Scénu"
+
+#: platform/android/export/export_plugin.cpp
msgid "Select device from the list"
msgstr ""
@@ -18268,6 +18951,177 @@ msgid "The character '%s' is not allowed in Identifier."
msgstr ""
#: platform/iphone/export/export.cpp
+msgid "App Store Team ID"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Provisioning Profile UUID Debug"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Code Sign Identity Debug"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Export Method Debug"
+msgstr "Exportovať Mesh Library"
+
+#: platform/iphone/export/export.cpp
+msgid "Provisioning Profile UUID Release"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Code Sign Identity Release"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Export Method Release"
+msgstr "Exportovať Mesh Library"
+
+#: platform/iphone/export/export.cpp
+msgid "Targeted Device Family"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Info"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Identifier"
+msgstr "Nesprávna veľkosť písma."
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Signature"
+msgstr "Signál"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Short Version"
+msgstr "Verzia:"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Copyright"
+msgstr "Vpravo Hore"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Capabilities"
+msgstr "Vlastnosti"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Access Wi-Fi"
+msgstr "Úspech!"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Push Notifications"
+msgstr "Prilepiť Animáciu"
+
+#: platform/iphone/export/export.cpp scene/3d/baked_lightmap.cpp
+#, fuzzy
+msgid "User Data"
+msgstr "OtvoriÅ¥ prieÄinok Editor Data"
+
+#: platform/iphone/export/export.cpp
+msgid "Accessible From Files App"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Accessible From Itunes Sharing"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Privacy"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Camera Usage Description"
+msgstr "Popis"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Microphone Usage Description"
+msgstr "Popisok Vlastnosti"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Photolibrary Usage Description"
+msgstr "Popisok Vlastnosti"
+
+#: platform/iphone/export/export.cpp
+msgid "iPhone 120 X 120"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPhone 180 X 180"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 76 X 76"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 152 X 152"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 167 X 167"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "App Store 1024 X 1024"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Spotlight 40 X 40"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Spotlight 80 X 80"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Storyboard"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Use Launch Screen Storyboard"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Image Scale Mode"
+msgstr "Zmena Veľkosti"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Custom Image @2x"
+msgstr "Vložiť"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Custom Image @3x"
+msgstr "Vložiť"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Use Custom BG Color"
+msgstr "Vložiť"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Custom BG Color"
+msgstr "Vložiť"
+
+#: platform/iphone/export/export.cpp
msgid "App Store Team ID not specified - cannot configure the project."
msgstr ""
@@ -18308,6 +19162,80 @@ msgstr "Popis:"
#: platform/javascript/export/export.cpp
#, fuzzy
+msgid "Variant"
+msgstr "Popis:"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Export Type"
+msgstr "Export"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "VRAM Texture Compression"
+msgstr "Režim Interpolácie"
+
+#: platform/javascript/export/export.cpp
+msgid "For Desktop"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "For Mobile"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Html"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Export Icon"
+msgstr "Expandovať Všetky"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Custom Html Shell"
+msgstr "Vložiť"
+
+#: platform/javascript/export/export.cpp
+msgid "Head Include"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Canvas Resize Policy"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Focus Canvas On Start"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Experimental Virtual Keyboard"
+msgstr "Signály Filtru"
+
+#: platform/javascript/export/export.cpp
+msgid "Progressive Web App"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Offline Page"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 144 X 144"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 180 X 180"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 512 X 512"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
msgid "Could not read HTML shell:"
msgstr "Popis:"
@@ -18422,6 +19350,199 @@ msgid "Unknown object type."
msgstr ""
#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "App Category"
+msgstr "Kategória:"
+
+#: platform/osx/export/export.cpp
+msgid "High Res"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Location Usage Description"
+msgstr "Popis"
+
+#: platform/osx/export/export.cpp
+msgid "Address Book Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Calendar Usage Description"
+msgstr "Popis"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Photos Library Usage Description"
+msgstr "Popisok Vlastnosti"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Desktop Folder Usage Description"
+msgstr "Popisky Metód"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Documents Folder Usage Description"
+msgstr "Popisky Metód"
+
+#: platform/osx/export/export.cpp
+msgid "Downloads Folder Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Network Volumes Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Removable Volumes Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#, fuzzy
+msgid "Codesign"
+msgstr "Node"
+
+#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
+#: platform/windows/export/export.cpp
+msgid "Identity"
+msgstr ""
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#, fuzzy
+msgid "Timestamp"
+msgstr "ÄŒas"
+
+#: platform/osx/export/export.cpp
+msgid "Hardened Runtime"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Replace Existing Signature"
+msgstr "Nahradiť Všetko"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Entitlements"
+msgstr "Obsah:"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Custom File"
+msgstr "Vložiť"
+
+#: platform/osx/export/export.cpp
+msgid "Allow JIT Code Execution"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Allow Unsigned Executable Memory"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Allow Dyld Environment Variables"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Disable Library Validation"
+msgstr "Vypnuté"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Audio Input"
+msgstr "Pridať Vstup"
+
+#: platform/osx/export/export.cpp
+msgid "Address Book"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Calendars"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Photos Library"
+msgstr "Exportovať Knižnicu"
+
+#: platform/osx/export/export.cpp
+msgid "Apple Events"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Debugging"
+msgstr "Debug"
+
+#: platform/osx/export/export.cpp
+msgid "App Sandbox"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Network Server"
+msgstr "Vytvoriť adresár"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Network Client"
+msgstr "Vytvoriť adresár"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Device Usb"
+msgstr "Zariadenie"
+
+#: platform/osx/export/export.cpp
+msgid "Device Bluetooth"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Files Downloads"
+msgstr "Stiahnuté"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Files Pictures"
+msgstr "Filter:"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Files Music"
+msgstr "Súbor:"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Files Movies"
+msgstr "Filter:"
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#, fuzzy
+msgid "Custom Options"
+msgstr "Možnosti pre Bus"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Notarization"
+msgstr "Signály:"
+
+#: platform/osx/export/export.cpp
+msgid "Apple ID Name"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Apple ID Password"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Apple Team ID"
+msgstr ""
+
+#: platform/osx/export/export.cpp
msgid ""
"Note: The notarization process generally takes less than an hour. When the "
"process is completed, you'll receive an email."
@@ -18614,6 +19735,133 @@ msgid "Force Builtin Codesign"
msgstr ""
#: platform/uwp/export/export.cpp
+msgid "Architecture"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Display Name"
+msgstr "Zobraziť Všetko"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Short Name"
+msgstr "Meno Skriptu:"
+
+#: platform/uwp/export/export.cpp
+msgid "Publisher"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Publisher Display Name"
+msgstr "Nesprávna veľkosť písma."
+
+#: platform/uwp/export/export.cpp
+msgid "Product Guid"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Publisher Guid"
+msgstr "Zmazať Návody"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Signing"
+msgstr "Signál"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Certificate"
+msgstr "Particly"
+
+#: platform/uwp/export/export.cpp
+msgid "Algorithm"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Major"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Minor"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Build"
+msgstr "Pravítko"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Revision"
+msgstr "Verzia:"
+
+#: platform/uwp/export/export.cpp
+msgid "Landscape"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Portrait"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Landscape Flipped"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Portrait Flipped"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Store Logo"
+msgstr "Zmena Veľkosti"
+
+#: platform/uwp/export/export.cpp
+msgid "Square 44 X 44 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 71 X 71 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 150 X 150 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 310 X 310 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Wide 310 X 150 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Splash Screen"
+msgstr "Volania"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Tiles"
+msgstr "Súbor:"
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Square 150 X 150"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Wide 310 X 150"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Square 310 X 310"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
#, fuzzy
msgid "Invalid package short name."
msgstr "Nesprávna veľkosť písma."
@@ -18684,11 +19932,48 @@ msgid "Debug Certificate"
msgstr ""
#: platform/uwp/export/export.cpp
-msgid "Debug Password"
+msgid "Debug Algorithm"
msgstr ""
-#: platform/uwp/export/export.cpp
-msgid "Debug Algorithm"
+#: platform/windows/export/export.cpp
+msgid "Identity Type"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Timestamp Server URL"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Digest Algorithm"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "File Version"
+msgstr "Verzia:"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Product Version"
+msgstr "Nesprávna veľkosť písma."
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Company Name"
+msgstr "Meno Node-u:"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Product Name"
+msgstr "Skupiny"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "File Description"
+msgstr "Popis"
+
+#: platform/windows/export/export.cpp
+msgid "Trademarks"
msgstr ""
#: platform/windows/export/export.cpp
@@ -18764,12 +20049,14 @@ msgstr "Spustiť"
msgid "Centered"
msgstr "V Strede"
-#: scene/2d/animated_sprite.cpp scene/2d/camera_2d.cpp scene/2d/light_2d.cpp
+#: scene/2d/animated_sprite.cpp scene/2d/camera_2d.cpp
+#: scene/2d/cpu_particles_2d.cpp scene/2d/light_2d.cpp
#: scene/2d/parallax_background.cpp scene/2d/parallax_layer.cpp
#: scene/2d/path_2d.cpp scene/2d/polygon_2d.cpp scene/2d/sprite.cpp
-#: scene/3d/path.cpp scene/3d/physics_body.cpp scene/3d/sprite_3d.cpp
-#: scene/gui/graph_node.cpp scene/gui/rich_text_effect.cpp
-#: scene/main/canvas_layer.cpp scene/resources/material.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/path.cpp scene/3d/physics_body.cpp
+#: scene/3d/sprite_3d.cpp scene/gui/graph_node.cpp
+#: scene/gui/rich_text_effect.cpp scene/main/canvas_layer.cpp
+#: scene/resources/material.cpp scene/resources/particles_material.cpp
#: scene/resources/style_box.cpp
#, fuzzy
msgid "Offset"
@@ -18842,11 +20129,6 @@ msgstr "Pridať Audio Bus"
msgid "Override"
msgstr "Prepísať"
-#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
-#: scene/audio/audio_stream_player.cpp scene/gui/video_player.cpp
-msgid "Stream"
-msgstr ""
-
#: scene/2d/audio_stream_player_2d.cpp scene/audio/audio_stream_player.cpp
#: scene/gui/video_player.cpp servers/audio/effects/audio_effect_amplify.cpp
msgid "Volume dB"
@@ -18872,13 +20154,13 @@ msgid "Stream Paused"
msgstr ""
#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
-#: scene/3d/reflection_probe.cpp scene/3d/visual_instance.cpp
-#: scene/resources/material.cpp
+#: scene/3d/light.cpp scene/3d/reflection_probe.cpp
+#: scene/3d/visual_instance.cpp scene/resources/material.cpp
#, fuzzy
msgid "Max Distance"
msgstr "Inštancie"
-#: scene/2d/audio_stream_player_2d.cpp
+#: scene/2d/audio_stream_player_2d.cpp scene/3d/light.cpp
#, fuzzy
msgid "Attenuation"
msgstr "Animácie"
@@ -18934,6 +20216,24 @@ msgstr "Move Mode"
msgid "Limit"
msgstr ""
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/style_box.cpp
+#, fuzzy
+msgid "Left"
+msgstr "Vľavo Hore"
+
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/style_box.cpp
+#, fuzzy
+msgid "Right"
+msgstr "Vpravo Hore"
+
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/dynamic_font.cpp scene/resources/style_box.cpp
+#, fuzzy
+msgid "Bottom"
+msgstr "Vľavo Dole"
+
#: scene/2d/camera_2d.cpp
#, fuzzy
msgid "Smoothed"
@@ -19149,13 +20449,6 @@ msgstr ""
msgid "Emitting"
msgstr "Nastavenie Prichytenia"
-#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp scene/3d/area.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
-#: scene/resources/environment.cpp
-#, fuzzy
-msgid "Amount"
-msgstr "Množstvo:"
-
#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp
#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
msgid "Lifetime"
@@ -19219,18 +20512,13 @@ msgstr ""
#: scene/2d/mesh_instance_2d.cpp scene/2d/multimesh_instance_2d.cpp
#: scene/2d/particles_2d.cpp scene/2d/polygon_2d.cpp scene/2d/sprite.cpp
#: scene/3d/sprite_3d.cpp scene/gui/nine_patch_rect.cpp
-#: scene/gui/texture_rect.cpp scene/resources/sky.cpp
-#: scene/resources/style_box.cpp scene/resources/visual_shader_nodes.cpp
+#: scene/gui/texture_rect.cpp scene/resources/material.cpp
+#: scene/resources/sky.cpp scene/resources/style_box.cpp
+#: scene/resources/visual_shader_nodes.cpp
#, fuzzy
msgid "Texture"
msgstr "Všetky vybrané"
-#: scene/2d/cpu_particles_2d.cpp scene/2d/mesh_instance_2d.cpp
-#: scene/2d/multimesh_instance_2d.cpp scene/2d/particles_2d.cpp
-#: scene/2d/sprite.cpp scene/resources/style_box.cpp
-msgid "Normal Map"
-msgstr ""
-
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
#, fuzzy
@@ -19252,10 +20540,10 @@ msgid "Normals"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/3d/sprite_3d.cpp scene/resources/material.cpp
-#: scene/resources/particles_material.cpp scene/resources/texture.cpp
-msgid "Flags"
-msgstr ""
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Align Y"
+msgstr "Priradiť..."
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
@@ -19275,6 +20563,11 @@ msgid "Initial Velocity"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Velocity Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp servers/physics_2d_server.cpp
#: servers/physics_server.cpp
msgid "Angular Velocity"
@@ -19282,6 +20575,12 @@ msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Velocity Curve"
+msgstr "VybraÅ¥ Aktuálny PrieÄinok"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
msgid "Orbit Velocity"
msgstr ""
@@ -19293,6 +20592,23 @@ msgstr "Lineárne"
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Accel"
+msgstr "Úspech!"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Accel Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Accel Curve"
+msgstr "Hĺbka"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
msgid "Radial Accel"
msgstr ""
@@ -19302,19 +20618,55 @@ msgid "Tangential Accel"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/2d/joints_2d.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/vehicle_body.cpp
-#: scene/resources/particles_material.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/physics_joint.cpp
+#: scene/3d/vehicle_body.cpp scene/resources/particles_material.cpp
#: servers/audio/effects/audio_effect_reverb.cpp
msgid "Damping"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+msgid "Damping Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Damping Curve"
+msgstr "Hĺbka"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp scene/3d/light.cpp
+#: scene/resources/particles_material.cpp
msgid "Angle"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+msgid "Angle Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Angle Curve"
+msgstr "Hĺbka"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#, fuzzy
+msgid "Scale Amount"
+msgstr "Množstvo:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+msgid "Scale Amount Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#, fuzzy
+msgid "Scale Amount Curve"
+msgstr "Zmeniť veľkosť od kurzora"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
msgid "Color Ramp"
msgstr ""
@@ -19329,6 +20681,48 @@ msgstr ""
msgid "Hue Variation"
msgstr "Popis:"
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Variation"
+msgstr "Popis:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Variation Random"
+msgstr "Popis:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Variation Curve"
+msgstr "Popis:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Speed Random"
+msgstr "Veľkosť:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Speed Curve"
+msgstr "VybraÅ¥ Aktuálny PrieÄinok"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Offset Random"
+msgstr "Odchýlka Mriežky:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Offset Curve"
+msgstr "Hĺbka"
+
#: scene/2d/joints_2d.cpp
msgid "Node A and Node B must be PhysicsBody2Ds"
msgstr ""
@@ -19360,6 +20754,7 @@ msgid "Node B"
msgstr "Node"
#: scene/2d/joints_2d.cpp scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp
+#: scene/3d/light.cpp scene/3d/physics_joint.cpp
#: scene/resources/environment.cpp
msgid "Bias"
msgstr ""
@@ -19369,7 +20764,7 @@ msgstr ""
msgid "Disable Collision"
msgstr "Vypnuté"
-#: scene/2d/joints_2d.cpp
+#: scene/2d/joints_2d.cpp scene/3d/physics_joint.cpp
msgid "Softness"
msgstr ""
@@ -19387,7 +20782,7 @@ msgstr "Odchýlka Mriežky:"
msgid "Rest Length"
msgstr ""
-#: scene/2d/joints_2d.cpp scene/3d/vehicle_body.cpp
+#: scene/2d/joints_2d.cpp scene/3d/physics_joint.cpp scene/3d/vehicle_body.cpp
msgid "Stiffness"
msgstr ""
@@ -19408,7 +20803,7 @@ msgid "Texture Scale"
msgstr ""
#: scene/2d/light_2d.cpp scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp
-#: scene/resources/environment.cpp scene/resources/sky.cpp
+#: scene/3d/light.cpp scene/resources/environment.cpp scene/resources/sky.cpp
msgid "Energy"
msgstr ""
@@ -19448,12 +20843,6 @@ msgstr "OhraniÄené Pixely"
msgid "Gradient Length"
msgstr "Prechod je Upravený"
-#: scene/2d/light_2d.cpp scene/gui/control.cpp
-#: scene/resources/navigation_mesh.cpp
-#, fuzzy
-msgid "Filter"
-msgstr "Filtre:"
-
#: scene/2d/light_2d.cpp
#, fuzzy
msgid "Filter Smooth"
@@ -19861,10 +21250,6 @@ msgid "Applied Forces"
msgstr ""
#: scene/2d/physics_body_2d.cpp
-msgid "Force"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp
msgid "Torque"
msgstr ""
@@ -19878,7 +21263,7 @@ msgid "Sync To Physics"
msgstr "Fyzická Snímka %"
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-msgid "Moving platform"
+msgid "Moving Platform"
msgstr ""
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
@@ -19887,7 +21272,7 @@ msgstr ""
#: scene/2d/physics_body_2d.cpp scene/2d/touch_screen_button.cpp
#: scene/3d/physics_body.cpp scene/gui/texture_button.cpp
-#: scene/resources/line_shape_2d.cpp
+#: scene/resources/line_shape_2d.cpp scene/resources/material.cpp
msgid "Normal"
msgstr ""
@@ -20121,6 +21506,34 @@ msgid ""
"as parent."
msgstr ""
+#: scene/2d/visibility_notifier_2d.cpp scene/3d/visibility_notifier.cpp
+#, fuzzy
+msgid "Pause Animations"
+msgstr "Prilepiť Animáciu"
+
+#: scene/2d/visibility_notifier_2d.cpp scene/3d/visibility_notifier.cpp
+msgid "Freeze Bodies"
+msgstr ""
+
+#: scene/2d/visibility_notifier_2d.cpp
+#, fuzzy
+msgid "Pause Particles"
+msgstr "Particly"
+
+#: scene/2d/visibility_notifier_2d.cpp
+#, fuzzy
+msgid "Pause Animated Sprites"
+msgstr "Prilepiť Animáciu"
+
+#: scene/2d/visibility_notifier_2d.cpp
+#, fuzzy
+msgid "Process Parent"
+msgstr "Súbor:"
+
+#: scene/2d/visibility_notifier_2d.cpp
+msgid "Physics Process Parent"
+msgstr ""
+
#: scene/3d/area.cpp
msgid "Reverb Bus"
msgstr ""
@@ -20217,6 +21630,7 @@ msgid "Attenuation Filter"
msgstr ""
#: scene/3d/audio_stream_player_3d.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
#: servers/audio/effects/audio_effect_filter.cpp
msgid "Cutoff Hz"
msgstr ""
@@ -20260,11 +21674,6 @@ msgid "Octree"
msgstr ""
#: scene/3d/baked_lightmap.cpp
-#, fuzzy
-msgid "User Data"
-msgstr "OtvoriÅ¥ prieÄinok Editor Data"
-
-#: scene/3d/baked_lightmap.cpp
msgid "Finding meshes and lights"
msgstr ""
@@ -20521,6 +21930,16 @@ msgid "Ring Axis"
msgstr "Varovania"
#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Rotate Y"
+msgstr "RotaÄný Režim"
+
+#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Disable Z"
+msgstr "Vypnuté"
+
+#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
msgid "Flatness"
msgstr ""
@@ -20558,16 +21977,11 @@ msgstr ""
msgid "Dynamic Range"
msgstr ""
-#: scene/3d/gi_probe.cpp
+#: scene/3d/gi_probe.cpp scene/3d/light.cpp
msgid "Normal Bias"
msgstr ""
#: scene/3d/gi_probe.cpp
-#, fuzzy
-msgid "Compress"
-msgstr "Komponenty"
-
-#: scene/3d/gi_probe.cpp
msgid "Plotting Meshes"
msgstr ""
@@ -20593,16 +22007,31 @@ msgid "Subdiv"
msgstr ""
#: scene/3d/light.cpp
+#, fuzzy
+msgid "Indirect Energy"
+msgstr "Emisné Farby"
+
+#: scene/3d/light.cpp
msgid "Negative"
msgstr ""
#: scene/3d/light.cpp
#, fuzzy
+msgid "Specular"
+msgstr "Pravítko"
+
+#: scene/3d/light.cpp
+#, fuzzy
msgid "Bake Mode"
msgstr "RotaÄný Režim"
#: scene/3d/light.cpp
#, fuzzy
+msgid "Contact"
+msgstr "Obsah:"
+
+#: scene/3d/light.cpp
+#, fuzzy
msgid "Reverse Cull Face"
msgstr "Resetovať hlasitosť Bus-u"
@@ -20613,11 +22042,31 @@ msgstr "Smery"
#: scene/3d/light.cpp
#, fuzzy
+msgid "Split 1"
+msgstr "Odchýlka Mriežky:"
+
+#: scene/3d/light.cpp
+#, fuzzy
+msgid "Split 2"
+msgstr "Odchýlka Mriežky:"
+
+#: scene/3d/light.cpp
+#, fuzzy
+msgid "Split 3"
+msgstr "Odchýlka Mriežky:"
+
+#: scene/3d/light.cpp
+#, fuzzy
msgid "Blend Splits"
msgstr "Blend Times:"
#: scene/3d/light.cpp
#, fuzzy
+msgid "Bias Split Scale"
+msgstr "Použiť Prichytávanie Veľkosti"
+
+#: scene/3d/light.cpp
+#, fuzzy
msgid "Depth Range"
msgstr "Hĺbka"
@@ -20643,6 +22092,11 @@ msgstr ""
msgid "Spot"
msgstr ""
+#: scene/3d/light.cpp
+#, fuzzy
+msgid "Angle Attenuation"
+msgstr "Animácie"
+
#: scene/3d/mesh_instance.cpp
msgid "Software Skinning"
msgstr ""
@@ -20767,6 +22221,63 @@ msgstr "Os"
#: scene/3d/physics_body.cpp
#, fuzzy
+msgid "Linear X"
+msgstr "Lineárne"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Linear Y"
+msgstr "Lineárne"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Linear Z"
+msgstr "Lineárne"
+
+#: scene/3d/physics_body.cpp
+msgid "Angular X"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Angular Y"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Angular Z"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Motion X"
+msgstr "Všetky vybrané"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Motion Y"
+msgstr "Všetky vybrané"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Motion Z"
+msgstr "Všetky vybrané"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Move Lock X"
+msgstr "Premiestniť Node"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Move Lock Y"
+msgstr "Premiestniť Node"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Move Lock Z"
+msgstr "Premiestniť Node"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
msgid "Body Offset"
msgstr "Odchýlka Mriežky:"
@@ -20800,6 +22311,15 @@ msgid "Exclude Nodes"
msgstr "Všetky vybrané"
#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Params"
+msgstr "Parameter sa Zmenil"
+
+#: scene/3d/physics_joint.cpp
+msgid "Impulse Clamp"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit"
msgstr ""
@@ -20811,6 +22331,55 @@ msgstr ""
msgid "Lower"
msgstr ""
+#: scene/3d/physics_joint.cpp scene/3d/vehicle_body.cpp
+#, fuzzy
+msgid "Relaxation"
+msgstr "Popis:"
+
+#: scene/3d/physics_joint.cpp
+msgid "Motor"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Target Velocity"
+msgstr "Lineárne"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Max Impulse"
+msgstr "Hodnota:"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit"
+msgstr "Lineárne"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Upper Distance"
+msgstr "Inštancie"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Lower Distance"
+msgstr "Inštancie"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Restitution"
+msgstr "Popis"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motion"
+msgstr "Lineárne"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Ortho"
+msgstr "Lineárne"
+
#: scene/3d/physics_joint.cpp
msgid "Upper Angle"
msgstr ""
@@ -20821,6 +22390,16 @@ msgstr ""
#: scene/3d/physics_joint.cpp
#, fuzzy
+msgid "Angular Motion"
+msgstr "Animácie"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Angular Ortho"
+msgstr "Max. Angular Error:"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
msgid "Swing Span"
msgstr "Ukladanie Scény"
@@ -20829,17 +22408,99 @@ msgid "Twist Span"
msgstr ""
#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit X"
+msgstr "Lineárne"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motor X"
+msgstr "Lineárne"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Force Limit"
+msgstr "Volania"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Spring X"
+msgstr "Lineárne"
+
+#: scene/3d/physics_joint.cpp
+msgid "Equilibrium Point"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit X"
msgstr ""
#: scene/3d/physics_joint.cpp
+msgid "Erp"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Motor X"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Spring X"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit Y"
+msgstr "Lineárne"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motor Y"
+msgstr "Lineárne"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Spring Y"
+msgstr "Lineárne"
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit Y"
msgstr ""
#: scene/3d/physics_joint.cpp
+msgid "Angular Motor Y"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Spring Y"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit Z"
+msgstr "Lineárne"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motor Z"
+msgstr "Lineárne"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Spring Z"
+msgstr "Lineárne"
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit Z"
msgstr ""
+#: scene/3d/physics_joint.cpp
+msgid "Angular Motor Z"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Spring Z"
+msgstr ""
+
#: scene/3d/portal.cpp
msgid "The RoomManager should not be a child or grandchild of a Portal."
msgstr ""
@@ -20956,7 +22617,7 @@ msgstr ""
msgid "Use Default Simplify"
msgstr ""
-#: scene/3d/room.cpp
+#: scene/3d/room.cpp scene/3d/room_manager.cpp
msgid "Room Simplify"
msgstr ""
@@ -20995,6 +22656,13 @@ msgstr ""
msgid "Main"
msgstr ""
+#: scene/3d/room_manager.cpp scene/animation/animation_player.cpp
+#: scene/animation/animation_tree.cpp scene/animation/animation_tree_player.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+#, fuzzy
+msgid "Active"
+msgstr "Všetky vybrané"
+
#: scene/3d/room_manager.cpp
msgid "Roomlist"
msgstr ""
@@ -21019,6 +22687,53 @@ msgid "Gameplay"
msgstr ""
#: scene/3d/room_manager.cpp
+msgid "Gameplay Monitor"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Use Secondary PVS"
+msgstr "Použiť Prichytávanie Veľkosti"
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Merge Meshes"
+msgstr "Filter:"
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Show Margins"
+msgstr "Zobraziť Pôvod"
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Debug Sprawl"
+msgstr "Debug"
+
+#: scene/3d/room_manager.cpp
+msgid "Overlap Warning Threshold"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Preview Camera"
+msgstr "Predzobraziť"
+
+#: scene/3d/room_manager.cpp
+msgid "Portal Depth Limit"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Default Portal Margin"
+msgstr "Predvolené"
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Roaming Expansion Margin"
+msgstr "Expandovať Všetky"
+
+#: scene/3d/room_manager.cpp
msgid ""
"RoomList path is invalid.\n"
"Please check the RoomList branch has been assigned in the RoomManager."
@@ -21142,6 +22857,20 @@ msgstr "Prichytenie Pixelov"
msgid "Billboard"
msgstr ""
+#: scene/3d/sprite_3d.cpp scene/resources/material.cpp
+#, fuzzy
+msgid "Transparent"
+msgstr "Preložiť Preloženie:"
+
+#: scene/3d/sprite_3d.cpp
+#, fuzzy
+msgid "Shaded"
+msgstr "Zmeniť"
+
+#: scene/3d/sprite_3d.cpp
+msgid "Double Sided"
+msgstr ""
+
#: scene/3d/sprite_3d.cpp
msgid "Alpha Cut"
msgstr ""
@@ -21210,11 +22939,6 @@ msgstr ""
msgid "Max Force"
msgstr "Chyba!"
-#: scene/3d/vehicle_body.cpp
-#, fuzzy
-msgid "Relaxation"
-msgstr "Popis:"
-
#: scene/3d/visibility_notifier.cpp
msgid "AABB"
msgstr ""
@@ -21349,7 +23073,7 @@ msgstr "ÄŒas X-Miznutia (s):"
#: scene/animation/animation_blend_tree.cpp
#, fuzzy
-msgid "autorestart_"
+msgid "Auto Restart"
msgstr "Auto Reštart:"
#: scene/animation/animation_blend_tree.cpp
@@ -21435,13 +23159,6 @@ msgstr "Možnosti pre Class:"
msgid "Default Blend Time"
msgstr "Predvolené"
-#: scene/animation/animation_player.cpp scene/animation/animation_tree.cpp
-#: scene/animation/animation_tree_player.cpp
-#: servers/audio/effects/audio_effect_delay.cpp
-#, fuzzy
-msgid "Active"
-msgstr "Všetky vybrané"
-
#: scene/animation/animation_player.cpp
msgid "Method Call Mode"
msgstr ""
@@ -21564,10 +23281,6 @@ msgstr "Vytvoriť Node"
msgid "Max Iterations"
msgstr "Všetky vybrané"
-#: scene/animation/tween.cpp scene/resources/texture.cpp
-msgid "Repeat"
-msgstr ""
-
#: scene/animation/tween.cpp
msgid "Playback Process Mode"
msgstr ""
@@ -21597,20 +23310,6 @@ msgstr "Vybrať Režim"
msgid "Alignment"
msgstr ""
-#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
-#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
-#: scene/resources/style_box.cpp
-#, fuzzy
-msgid "Horizontal"
-msgstr "Presunúť Horizontálny Návod"
-
-#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
-#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
-#: scene/resources/style_box.cpp
-#, fuzzy
-msgid "Vertical"
-msgstr "Presunúť Vertikálny Návod"
-
#: scene/gui/base_button.cpp
#, fuzzy
msgid "Shortcut In Tooltip"
@@ -21708,10 +23407,6 @@ msgid "HSV"
msgstr ""
#: scene/gui/color_picker.cpp
-msgid "Raw"
-msgstr ""
-
-#: scene/gui/color_picker.cpp
msgid "Switch between hexadecimal and code values."
msgstr ""
@@ -21772,6 +23467,31 @@ msgid "Focus"
msgstr "Zamerať Cestu"
#: scene/gui/control.cpp
+msgid "Neighbour Left"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Neighbour Top"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Neighbour Right"
+msgstr ""
+
+#: scene/gui/control.cpp
+#, fuzzy
+msgid "Neighbour Bottom"
+msgstr "Od Stredu Dole"
+
+#: scene/gui/control.cpp
+msgid "Next"
+msgstr "Ďalší"
+
+#: scene/gui/control.cpp
+msgid "Previous"
+msgstr "Minulý"
+
+#: scene/gui/control.cpp
msgid "Mouse"
msgstr ""
@@ -21808,7 +23528,7 @@ msgid "Dialog"
msgstr ""
#: scene/gui/dialogs.cpp
-msgid "Hide On Ok"
+msgid "Hide On OK"
msgstr ""
#: scene/gui/dialogs.cpp scene/gui/label.cpp
@@ -21907,7 +23627,7 @@ msgid "Timers"
msgstr "ÄŒas"
#: scene/gui/item_list.cpp scene/gui/popup_menu.cpp scene/gui/tree.cpp
-msgid "Incremental Search Max Interval (msec)"
+msgid "Incremental Search Max Interval Msec"
msgstr ""
#: scene/gui/item_list.cpp scene/gui/tree.cpp
@@ -22470,6 +24190,26 @@ msgstr "Od Stredu Vľavo"
msgid "Nine Patch Stretch"
msgstr "Režim Interpolácie"
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Left"
+msgstr "Vybrať Režim"
+
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Top"
+msgstr "Vybrať Režim"
+
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Right"
+msgstr "Vybrať Režim"
+
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Bottom"
+msgstr "Vybrať Režim"
+
#: scene/gui/tree.cpp
msgid "Custom Minimum Height"
msgstr ""
@@ -22506,8 +24246,9 @@ msgid "Paused"
msgstr ""
#: scene/gui/video_player.cpp
-msgid "Buffering (msec)"
-msgstr ""
+#, fuzzy
+msgid "Buffering Msec"
+msgstr "OhraniÄené Pixely"
#: scene/gui/video_player.cpp
#, fuzzy
@@ -22849,6 +24590,22 @@ msgid "Shadow Atlas"
msgstr ""
#: scene/main/viewport.cpp
+msgid "Quad 0"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 1"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 2"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 3"
+msgstr ""
+
+#: scene/main/viewport.cpp
#, fuzzy
msgid "Canvas Transform"
msgstr "Anim Zmeniť Veľkosť"
@@ -22863,6 +24620,11 @@ msgid "Tooltip Delay (sec)"
msgstr ""
#: scene/register_scene_types.cpp
+#, fuzzy
+msgid "Swap OK Cancel"
+msgstr "Zrušiť"
+
+#: scene/register_scene_types.cpp
msgid "Use hiDPI"
msgstr ""
@@ -22877,21 +24639,6 @@ msgid "Custom Font"
msgstr "Vložiť"
#: scene/resources/audio_stream_sample.cpp
-#, fuzzy
-msgid "Loop Mode"
-msgstr "Move Mode"
-
-#: scene/resources/audio_stream_sample.cpp
-#, fuzzy
-msgid "Loop Begin"
-msgstr "Move Mode"
-
-#: scene/resources/audio_stream_sample.cpp
-#, fuzzy
-msgid "Loop End"
-msgstr "Move Mode"
-
-#: scene/resources/audio_stream_sample.cpp
#: servers/audio/effects/audio_stream_generator.cpp servers/audio_server.cpp
#, fuzzy
msgid "Mix Rate"
@@ -22948,6 +24695,17 @@ msgid "Extra Spacing"
msgstr "Možnosti pre Class:"
#: scene/resources/dynamic_font.cpp
+#, fuzzy
+msgid "Char"
+msgstr "Platné písmená:"
+
+#: scene/resources/dynamic_font.cpp scene/resources/world.cpp
+#: scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Space"
+msgstr "Volania"
+
+#: scene/resources/dynamic_font.cpp
msgid "Font"
msgstr ""
@@ -23171,6 +24929,43 @@ msgid "Glow"
msgstr ""
#: scene/resources/environment.cpp
+#, fuzzy
+msgid "Levels"
+msgstr "Vývojári"
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "1"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "2"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "3"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "4"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "5"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "6"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "7"
+msgstr ""
+
+#: scene/resources/environment.cpp
msgid "Bloom"
msgstr ""
@@ -23263,9 +25058,66 @@ msgid "Next Pass"
msgstr "Ďalšia karta"
#: scene/resources/material.cpp
+msgid "Use Shadow To Opacity"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Unshaded"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Vertex Lighting"
+msgstr "Smery"
+
+#: scene/resources/material.cpp
+msgid "No Depth Test"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Use Point Size"
+msgstr "Veľkosť: "
+
+#: scene/resources/material.cpp
+msgid "World Triplanar"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Fixed Size"
+msgstr "Prichytenie Pixelov"
+
+#: scene/resources/material.cpp
+msgid "Albedo Tex Force sRGB"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Do Not Receive Shadows"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Disable Ambient Light"
+msgstr "Od Stredu Vpravo"
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Ensure Correct Normals"
+msgstr "Vytvoriť adresár"
+
+#: scene/resources/material.cpp
msgid "Vertex Color"
msgstr ""
+#: scene/resources/material.cpp
+msgid "Use As Albedo"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Is sRGB"
+msgstr ""
+
#: scene/resources/material.cpp servers/visual_server.cpp
#, fuzzy
msgid "Parameters"
@@ -23302,6 +25154,11 @@ msgid "Billboard Mode"
msgstr "Pravítko"
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Billboard Keep Scale"
+msgstr "Pravítko"
+
+#: scene/resources/material.cpp
msgid "Grow"
msgstr ""
@@ -23311,6 +25168,10 @@ msgid "Grow Amount"
msgstr "Množstvo:"
#: scene/resources/material.cpp
+msgid "Use Alpha Scissor"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Alpha Scissor Threshold"
msgstr ""
@@ -23342,10 +25203,20 @@ msgid "Metallic Specular"
msgstr ""
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Metallic Texture"
+msgstr "Emisné Farby"
+
+#: scene/resources/material.cpp
msgid "Metallic Texture Channel"
msgstr ""
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Roughness Texture"
+msgstr "Všetky vybrané"
+
+#: scene/resources/material.cpp
msgid "Roughness Texture Channel"
msgstr ""
@@ -23365,6 +25236,16 @@ msgid "Emission Operator"
msgstr "Emisné Farby"
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Emission On UV2"
+msgstr "Emisná Maska"
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Emission Texture"
+msgstr "Emisné Farby"
+
+#: scene/resources/material.cpp
msgid "NormalMap"
msgstr ""
@@ -23378,6 +25259,11 @@ msgstr ""
#: scene/resources/material.cpp
#, fuzzy
+msgid "Rim Texture"
+msgstr "Všetky vybrané"
+
+#: scene/resources/material.cpp
+#, fuzzy
msgid "Clearcoat"
msgstr "VyÄistiÅ¥"
@@ -23387,15 +25273,28 @@ msgid "Clearcoat Gloss"
msgstr "Zmazať Pozíciu"
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Clearcoat Texture"
+msgstr "Súbor:"
+
+#: scene/resources/material.cpp
msgid "Anisotropy"
msgstr ""
#: scene/resources/material.cpp
+msgid "Anisotropy Flowmap"
+msgstr ""
+
+#: scene/resources/material.cpp
#, fuzzy
msgid "Ambient Occlusion"
msgstr "Signály:"
#: scene/resources/material.cpp
+msgid "On UV2"
+msgstr ""
+
+#: scene/resources/material.cpp
#, fuzzy
msgid "Texture Channel"
msgstr "Pravítko"
@@ -23433,6 +25332,11 @@ msgstr "Prechody: "
#: scene/resources/material.cpp
#, fuzzy
+msgid "Transmission Texture"
+msgstr "Prechody: "
+
+#: scene/resources/material.cpp
+#, fuzzy
msgid "Refraction"
msgstr "Popis:"
@@ -23450,6 +25354,10 @@ msgid "UV1"
msgstr ""
#: scene/resources/material.cpp
+msgid "Triplanar"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Triplanar Sharpness"
msgstr ""
@@ -23654,6 +25562,16 @@ msgstr "Súbor:"
msgid "Point Count"
msgstr "Signály:"
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Scale Random"
+msgstr "Pomer mierky:"
+
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Scale Curve"
+msgstr "Zmena Veľkosti"
+
#: scene/resources/physics_material.cpp
msgid "Rough"
msgstr ""
@@ -23714,10 +25632,6 @@ msgid "A"
msgstr ""
#: scene/resources/shader.cpp
-msgid "Code"
-msgstr ""
-
-#: scene/resources/shader.cpp
#, fuzzy
msgid "Custom Defines"
msgstr "Spustiť Vlastnú Scénu"
@@ -23810,15 +25724,6 @@ msgstr ""
#: scene/resources/texture.cpp
#, fuzzy
-msgid "Storage"
-msgstr "Ukladanie súboru:"
-
-#: scene/resources/texture.cpp
-msgid "Lossy Quality"
-msgstr ""
-
-#: scene/resources/texture.cpp
-#, fuzzy
msgid "Load Path"
msgstr "NaÄítaÅ¥ Predvoľbu"
@@ -23945,11 +25850,6 @@ msgstr "Neplatná funkcia porovnania pre tento typ."
msgid "Fallback Environment"
msgstr ""
-#: scene/resources/world.cpp scene/resources/world_2d.cpp
-#, fuzzy
-msgid "Space"
-msgstr "Volania"
-
#: scene/resources/world.cpp
#, fuzzy
msgid "Scenario"
@@ -24027,10 +25927,37 @@ msgstr ""
msgid "Wet"
msgstr ""
-#: servers/audio/effects/audio_effect_compressor.cpp
-msgid "Threshold"
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "Voice"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+msgid "Delay (ms)"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_phaser.cpp
+msgid "Rate Hz"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#, fuzzy
+msgid "Depth (ms)"
+msgstr "Hĺbka"
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+msgid "Level dB"
msgstr ""
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+#: servers/audio/effects/audio_effect_panner.cpp
+#, fuzzy
+msgid "Pan"
+msgstr "Zabalovanie"
+
#: servers/audio/effects/audio_effect_compressor.cpp
#: servers/audio/effects/audio_effect_filter.cpp
msgid "Gain"
@@ -24053,20 +25980,6 @@ msgid "Tap 1"
msgstr ""
#: servers/audio/effects/audio_effect_delay.cpp
-msgid "Delay (ms)"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_delay.cpp
-msgid "Level dB"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_delay.cpp
-#: servers/audio/effects/audio_effect_panner.cpp
-#, fuzzy
-msgid "Pan"
-msgstr "Zabalovanie"
-
-#: servers/audio/effects/audio_effect_delay.cpp
msgid "Tap 2"
msgstr ""
@@ -24127,10 +26040,6 @@ msgstr ""
msgid "Range Max Hz"
msgstr ""
-#: servers/audio/effects/audio_effect_phaser.cpp
-msgid "Rate Hz"
-msgstr ""
-
#: servers/audio/effects/audio_effect_pitch_shift.cpp
msgid "Oversampling"
msgstr ""
@@ -24146,7 +26055,7 @@ msgid "Predelay"
msgstr ""
#: servers/audio/effects/audio_effect_reverb.cpp
-msgid "(msec)"
+msgid "Msec"
msgstr ""
#: servers/audio/effects/audio_effect_reverb.cpp
diff --git a/editor/translations/sl.po b/editor/translations/sl.po
index c6ecb3b9bb..6eb405fd3f 100644
--- a/editor/translations/sl.po
+++ b/editor/translations/sl.po
@@ -30,7 +30,7 @@ msgstr ""
"n%100==4 ? 2 : 3;\n"
"X-Generator: Weblate 4.5-dev\n"
-#: core/bind/core_bind.cpp
+#: core/bind/core_bind.cpp main/main.cpp
msgid "Tablet Driver"
msgstr ""
@@ -129,8 +129,8 @@ msgstr "Položaj Sidranja"
#: core/bind/core_bind.cpp editor/editor_settings.cpp main/main.cpp
#: modules/gdscript/gdscript_editor.cpp modules/gridmap/grid_map.cpp
#: modules/mono/csharp_script.cpp modules/visual_script/visual_script_nodes.cpp
-#: scene/2d/tile_map.cpp scene/3d/camera.cpp scene/gui/control.cpp
-#: scene/gui/graph_edit.cpp scene/main/viewport.cpp
+#: scene/2d/tile_map.cpp scene/3d/camera.cpp scene/3d/light.cpp
+#: scene/gui/control.cpp scene/gui/graph_edit.cpp scene/main/viewport.cpp
#: scene/resources/dynamic_font.cpp scene/resources/navigation_mesh.cpp
#: scene/resources/primitive_meshes.cpp scene/resources/sky.cpp
#: scene/resources/style_box.cpp scene/resources/texture.cpp
@@ -232,8 +232,7 @@ msgid "Data"
msgstr ""
#: core/io/file_access_network.cpp core/register_core_types.cpp
-#: editor/editor_settings.cpp editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp main/main.cpp
+#: editor/editor_settings.cpp main/main.cpp
#: modules/gdscript/language_server/gdscript_language_server.cpp
#, fuzzy
msgid "Network"
@@ -513,9 +512,10 @@ msgstr "Prednastavitev..."
msgid "Relative"
msgstr "Pripni Relativno"
-#: core/os/input_event.cpp scene/2d/camera_2d.cpp
-#: scene/3d/interpolated_camera.cpp scene/animation/animation_player.cpp
-#: scene/resources/environment.cpp
+#: core/os/input_event.cpp scene/2d/camera_2d.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/interpolated_camera.cpp
+#: scene/animation/animation_player.cpp scene/resources/environment.cpp
+#: scene/resources/particles_material.cpp
#, fuzzy
msgid "Speed"
msgstr "Prilagodi Velikost:"
@@ -566,8 +566,9 @@ msgstr "Usklajuj Spremembe Skript"
msgid "Pitch"
msgstr "Prilagodi Velikost:"
-#: core/os/input_event.cpp scene/2d/physics_body_2d.cpp
-#: scene/3d/physics_body.cpp
+#: core/os/input_event.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/physics_body_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/3d/physics_body.cpp scene/resources/particles_material.cpp
msgid "Velocity"
msgstr ""
@@ -585,6 +586,8 @@ msgid "Controller Value"
msgstr ""
#: core/project_settings.cpp editor/editor_node.cpp main/main.cpp
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/windows/export/export.cpp
#, fuzzy
msgid "Application"
msgstr "Premakni Dejanje"
@@ -603,13 +606,16 @@ msgstr "Nastavitve Projekta"
#: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp
#: editor/editor_plugin_settings.cpp editor/editor_profiler.cpp
#: editor/project_manager.cpp editor/settings_config_dialog.cpp
-#: modules/gdnative/nativescript/nativescript.cpp scene/2d/area_2d.cpp
-#: scene/3d/area.cpp scene/main/node.cpp
+#: modules/gdnative/nativescript/nativescript.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/osx/export/export.cpp scene/2d/area_2d.cpp scene/3d/area.cpp
+#: scene/main/node.cpp
msgid "Name"
msgstr "Ime"
#: core/project_settings.cpp editor/editor_help.cpp
-#: modules/visual_script/visual_script_nodes.cpp
+#: modules/visual_script/visual_script_nodes.cpp platform/uwp/export/export.cpp
+#: platform/windows/export/export.cpp
#, fuzzy
msgid "Description"
msgstr "Opis:"
@@ -648,7 +654,7 @@ msgid "Custom User Dir Name"
msgstr ""
#: core/project_settings.cpp editor/animation_track_editor.cpp
-#: editor/editor_audio_buses.cpp servers/audio_server.cpp
+#: editor/editor_audio_buses.cpp main/main.cpp servers/audio_server.cpp
msgid "Audio"
msgstr "Zvok"
@@ -812,10 +818,13 @@ msgstr "Filtri..."
msgid "Sharpen Intensity"
msgstr ""
-#: core/project_settings.cpp editor/editor_node.cpp editor/editor_settings.cpp
-#: editor/plugins/script_editor_plugin.cpp editor/project_export.cpp
-#: main/main.cpp modules/gdscript/gdscript.cpp
-#: modules/visual_script/visual_script.cpp scene/3d/room_manager.cpp
+#: core/project_settings.cpp editor/editor_export.cpp editor/editor_node.cpp
+#: editor/editor_settings.cpp editor/plugins/script_editor_plugin.cpp
+#: editor/project_export.cpp main/main.cpp modules/gdscript/gdscript.cpp
+#: modules/visual_script/visual_script.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp scene/3d/room_manager.cpp
#: scene/main/scene_tree.cpp scene/resources/shape_2d.cpp
#: servers/visual_server.cpp
msgid "Debug"
@@ -1050,6 +1059,7 @@ msgid "Subsurface Scattering"
msgstr ""
#: drivers/gles3/rasterizer_scene_gles3.cpp
+#: editor/import/resource_importer_texture.cpp
#: editor/plugins/spatial_editor_plugin.cpp modules/gltf/gltf_node.cpp
#: modules/gridmap/grid_map.cpp scene/2d/cpu_particles_2d.cpp
#: scene/2d/node_2d.cpp scene/2d/parallax_layer.cpp scene/2d/polygon_2d.cpp
@@ -1368,6 +1378,7 @@ msgid "Editors"
msgstr "Urejevalnik"
#: editor/animation_track_editor.cpp editor/editor_settings.cpp
+#: editor/import/resource_importer_scene.cpp
#: editor/plugins/animation_player_editor_plugin.cpp editor/scene_tree_dock.cpp
#: scene/2d/animated_sprite.cpp scene/2d/cpu_particles_2d.cpp
#: scene/2d/sprite.cpp scene/3d/cpu_particles.cpp scene/3d/sprite_3d.cpp
@@ -1605,14 +1616,14 @@ msgstr "Drevo animacije je veljavno."
msgid "Seconds"
msgstr ""
-#: editor/animation_track_editor.cpp
+#: editor/animation_track_editor.cpp editor/import/resource_importer_scene.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp main/main.cpp
#: scene/resources/texture.cpp
msgid "FPS"
msgstr ""
#: editor/animation_track_editor.cpp editor/editor_plugin_settings.cpp
-#: editor/editor_resource_picker.cpp
+#: editor/editor_resource_picker.cpp editor/import/resource_importer_wav.cpp
#: editor/plugins/polygon_2d_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
@@ -2621,7 +2632,9 @@ msgid "Remove Autoload"
msgstr "Odstrani SamodejnoNalaganje"
#: editor/editor_autoload_settings.cpp editor/editor_plugin_settings.cpp
-#: modules/gdscript/gdscript.cpp scene/2d/polygon_2d.cpp scene/3d/area.cpp
+#: modules/gdscript/gdscript.cpp platform/android/export/export_plugin.cpp
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#: scene/2d/polygon_2d.cpp scene/3d/area.cpp scene/3d/physics_joint.cpp
#: scene/3d/reflection_probe.cpp scene/main/canvas_layer.cpp
#: scene/resources/material.cpp servers/visual_server.cpp
msgid "Enable"
@@ -2778,6 +2791,58 @@ msgstr ""
#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
#, fuzzy
+msgid "Custom Template"
+msgstr "ÄŒlani"
+
+#: editor/editor_export.cpp editor/project_export.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp
+msgid "Release"
+msgstr ""
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Binary Format"
+msgstr "Preoblikovanje"
+
+#: editor/editor_export.cpp
+msgid "64 Bits"
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Embed PCK"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Texture Format"
+msgstr "NaÄin Obsega (R)"
+
+#: editor/editor_export.cpp
+msgid "BPTC"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "S3TC"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "ETC"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "ETC2"
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "No BPTC Fallbacks"
+msgstr ""
+
+#: editor/editor_export.cpp platform/android/export/export_plugin.cpp
+#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
+#, fuzzy
msgid "Custom debug template not found."
msgstr "Predloge ni mogoÄe najti:"
@@ -2973,6 +3038,7 @@ msgid "Make Current"
msgstr "Trenutno:"
#: editor/editor_feature_profile.cpp editor/editor_node.cpp
+#: editor/import/resource_importer_scene.cpp
#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
msgid "Import"
msgstr "Uvozi"
@@ -3111,8 +3177,11 @@ msgstr "Uspelo je!"
msgid "Display Mode"
msgstr "NaÄin PloÅ¡Äe"
-#: editor/editor_file_dialog.cpp main/main.cpp modules/csg/csg_shape.cpp
-#: modules/visual_script/visual_script_nodes.cpp
+#: editor/editor_file_dialog.cpp
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+#: editor/import/resource_importer_wav.cpp main/main.cpp
+#: modules/csg/csg_shape.cpp modules/visual_script/visual_script_nodes.cpp
#: modules/visual_script/visual_script_yield_nodes.cpp scene/2d/light_2d.cpp
#: scene/2d/physics_body_2d.cpp scene/2d/tile_map.cpp
#: scene/3d/baked_lightmap.cpp scene/3d/light.cpp scene/3d/physics_body.cpp
@@ -3257,7 +3326,9 @@ msgstr "Uvoz Dodatkov"
msgid "Reimport Missing Imported Files"
msgstr ""
-#: editor/editor_help.cpp
+#: editor/editor_help.cpp scene/2d/camera_2d.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/resources/dynamic_font.cpp
+#: scene/resources/style_box.cpp
msgid "Top"
msgstr "Vrh"
@@ -3312,6 +3383,7 @@ msgid "Fonts"
msgstr ""
#: editor/editor_help.cpp editor/plugins/theme_editor_plugin.cpp
+#: platform/iphone/export/export.cpp
msgid "Icons"
msgstr ""
@@ -3497,7 +3569,9 @@ msgstr ""
msgid "Pin value [Disabled because '%s' is editor-only]"
msgstr ""
-#: editor/editor_inspector.cpp editor/scene_tree_dock.cpp
+#: editor/editor_inspector.cpp
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+#: editor/scene_tree_dock.cpp
#: modules/visual_script/visual_script_func_nodes.cpp
#: modules/visual_script/visual_script_nodes.cpp
#: modules/visual_script/visual_script_property_selector.cpp
@@ -3835,6 +3909,16 @@ msgid "Quick Open Script..."
msgstr "Hitro Odpri Skripto..."
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Save & Reload"
+msgstr "Shrani & Zapri"
+
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Save changes to '%s' before reloading?"
+msgstr "Shranim spremembe v '%s' pred zapiranjem?"
+
+#: editor/editor_node.cpp
msgid "Save & Close"
msgstr "Shrani & Zapri"
@@ -3948,6 +4032,11 @@ msgid "Open Project Manager?"
msgstr "Odprem Upravljalnik Projekta?"
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Save changes to the following scene(s) before reloading?"
+msgstr "Shranim spremembe na sledeÄih scenah pred zaprtjem?"
+
+#: editor/editor_node.cpp
msgid "Save & Quit"
msgstr "Shrani & Zapri"
@@ -4228,8 +4317,8 @@ msgstr "Spremebe v Shader"
#: editor/editor_node.cpp
#, fuzzy
-msgid "Translate Properties"
-msgstr "Lastnosti"
+msgid "Localize Settings"
+msgstr "Nastavitve Urejevalnika"
#: editor/editor_node.cpp
#, fuzzy
@@ -4246,8 +4335,8 @@ msgstr "Nadzornik"
#: editor/editor_node.cpp
#, fuzzy
-msgid "Capitalize Properties"
-msgstr "Lastnosti"
+msgid "Default Property Name Style"
+msgstr "Pot Projekta:"
#: editor/editor_node.cpp
msgid "Default Float Step"
@@ -4861,7 +4950,9 @@ msgstr "NameÅ¡Äeni VtiÄniki:"
msgid "Update"
msgstr "Posodobi"
-#: editor/editor_plugin_settings.cpp
+#: editor/editor_plugin_settings.cpp platform/android/export/export_plugin.cpp
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp
#, fuzzy
msgid "Version"
msgstr "RazliÄica:"
@@ -5872,7 +5963,7 @@ msgstr ""
msgid "Rect Custom Position"
msgstr "Nastavi Krivuljo iz Položaja"
-#: editor/editor_settings.cpp
+#: editor/editor_settings.cpp platform/android/export/export_plugin.cpp
msgid "Screen"
msgstr ""
@@ -5898,6 +5989,19 @@ msgid "Editor SSL Certificates"
msgstr "Nastavitve Urejevalnika"
#: editor/editor_settings.cpp
+msgid "HTTP Proxy"
+msgstr ""
+
+#: editor/editor_settings.cpp
+msgid "Host"
+msgstr ""
+
+#: editor/editor_settings.cpp editor/fileserver/editor_file_server.cpp
+#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp
+msgid "Port"
+msgstr ""
+
+#: editor/editor_settings.cpp
msgid "Project Manager"
msgstr "Upravljalnik Projekta"
@@ -5940,7 +6044,8 @@ msgstr ""
msgid "String Color"
msgstr "Shranjevanje Datoteke:"
-#: editor/editor_settings.cpp
+#: editor/editor_settings.cpp platform/javascript/export/export.cpp
+#: platform/uwp/export/export.cpp
#, fuzzy
msgid "Background Color"
msgstr "Neveljavno ime."
@@ -6114,22 +6219,6 @@ msgid "Starting the download..."
msgstr ""
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "HTTP Proxy"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Host"
-msgstr ""
-
-#: editor/export_template_manager.cpp editor/fileserver/editor_file_server.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp main/main.cpp
-#: modules/mono/mono_gd/gd_mono.cpp
-msgid "Port"
-msgstr ""
-
-#: editor/export_template_manager.cpp
#, fuzzy
msgid "Error requesting URL:"
msgstr "Napaka pri zahtevi URL-ja: "
@@ -6398,6 +6487,7 @@ msgstr ""
#: editor/fileserver/editor_file_server.cpp
#: editor/plugins/version_control_editor_plugin.cpp
+#: platform/uwp/export/export.cpp platform/windows/export/export.cpp
msgid "Password"
msgstr ""
@@ -6803,6 +6893,115 @@ msgstr ""
msgid "Use Ambient"
msgstr ""
+#: editor/import/resource_importer_bitmask.cpp
+#, fuzzy
+msgid "Create From"
+msgstr "Ustvarite Mapo"
+
+#: editor/import/resource_importer_bitmask.cpp
+#: servers/audio/effects/audio_effect_compressor.cpp
+msgid "Threshold"
+msgstr ""
+
+#: editor/import/resource_importer_csv_translation.cpp
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_scene.cpp
+#: editor/import/resource_importer_texture.cpp
+#: editor/import/resource_importer_wav.cpp scene/3d/gi_probe.cpp
+#, fuzzy
+msgid "Compress"
+msgstr "Komponente"
+
+#: editor/import/resource_importer_csv_translation.cpp
+msgid "Delimiter"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+msgid "No BPTC If RGB"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/sprite_3d.cpp
+#: scene/resources/material.cpp scene/resources/particles_material.cpp
+#: scene/resources/texture.cpp
+msgid "Flags"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/animation/tween.cpp
+#: scene/resources/texture.cpp
+msgid "Repeat"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/2d/light_2d.cpp
+#: scene/gui/control.cpp scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Filter"
+msgstr "Filtri..."
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Mipmaps"
+msgstr "Signali"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+msgid "Anisotropic"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+msgid "sRGB"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+msgid "Slices"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
+#: scene/resources/style_box.cpp
+#, fuzzy
+msgid "Horizontal"
+msgstr "Premakni vodoravni vodnik"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
+#: scene/resources/style_box.cpp
+#, fuzzy
+msgid "Vertical"
+msgstr "Premakni navpiÄni vodnik"
+
+#: editor/import/resource_importer_obj.cpp
+#, fuzzy
+msgid "Generate Tangents"
+msgstr "Ustavi ToÄko"
+
+#: editor/import/resource_importer_obj.cpp
+#, fuzzy
+msgid "Scale Mesh"
+msgstr "NaÄin Obsega (R)"
+
+#: editor/import/resource_importer_obj.cpp
+#, fuzzy
+msgid "Offset Mesh"
+msgstr "Mrežni Zamik:"
+
+#: editor/import/resource_importer_obj.cpp
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Octahedral Compression"
+msgstr "Trenutna RazliÄica:"
+
+#: editor/import/resource_importer_obj.cpp
+msgid "Optimize Mesh Flags"
+msgstr ""
+
#: editor/import/resource_importer_scene.cpp
msgid "Import as Single Scene"
msgstr "Uvozi kot En Prizor"
@@ -6843,6 +7042,154 @@ msgstr "Uvozi kot VeÄ Prizorov"
msgid "Import as Multiple Scenes+Materials"
msgstr "Uvozi kot VeÄkratnik Prizorov+Materialov"
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Nodes"
+msgstr "Gradnik"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Root Type"
+msgstr "ÄŒlani"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Root Name"
+msgstr "Upravljalnik "
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Root Scale"
+msgstr "Prilagodi Velikost:"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Custom Script"
+msgstr "Gradnik Prehod"
+
+#: editor/import/resource_importer_scene.cpp scene/resources/texture.cpp
+#, fuzzy
+msgid "Storage"
+msgstr "Shranjevanje Datoteke:"
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Use Legacy Names"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+#, fuzzy
+msgid "Materials"
+msgstr "Spremebe v Shader"
+
+#: editor/import/resource_importer_scene.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Location"
+msgstr "Rotacijski Korak:"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Keep On Reimport"
+msgstr "Ponovno Uvozi"
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+msgid "Meshes"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Ensure Tangents"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Light Baking"
+msgstr "ZapeÄi Svetlobne karte"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Lightmap Texel Size"
+msgstr "ZapeÄi Svetlobne karte"
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+msgid "Skins"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Use Named Skins"
+msgstr "Uporabi Pripenjanje"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "External Files"
+msgstr "Odpri v Datoteki"
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Store In Subdir"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Filter Script"
+msgstr "Lastnosti objekta."
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Keep Custom Tracks"
+msgstr "Preoblikovanje"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Optimizer"
+msgstr "Optimiziraj"
+
+#: editor/import/resource_importer_scene.cpp main/main.cpp
+#: modules/mono/mono_gd/gd_mono.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp scene/2d/camera_2d.cpp scene/2d/light_2d.cpp
+#: scene/2d/navigation_polygon.cpp scene/2d/ray_cast_2d.cpp scene/2d/sprite.cpp
+#: scene/2d/y_sort.cpp scene/3d/audio_stream_player_3d.cpp
+#: scene/3d/baked_lightmap.cpp scene/3d/interpolated_camera.cpp
+#: scene/3d/light.cpp scene/3d/navigation_mesh_instance.cpp
+#: scene/3d/physics_joint.cpp scene/3d/ray_cast.cpp scene/3d/sprite_3d.cpp
+#: scene/gui/graph_edit.cpp scene/gui/rich_text_label.cpp
+#: scene/resources/curve.cpp scene/resources/environment.cpp
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Enabled"
+msgstr "OmogoÄi"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Max Linear Error"
+msgstr "Napaka!"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Max Angular Error"
+msgstr "Napaka!"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Max Angle"
+msgstr "Vrednost:"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Remove Unused Tracks"
+msgstr "Odstrani animacijsko sled"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Clips"
+msgstr "Animacija Dodaj sled"
+
+#: editor/import/resource_importer_scene.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/particles_2d.cpp scene/3d/area.cpp scene/3d/cpu_particles.cpp
+#: scene/3d/particles.cpp scene/resources/environment.cpp
+#, fuzzy
+msgid "Amount"
+msgstr "KoliÄina:"
+
#: editor/import/resource_importer_scene.cpp
#: editor/plugins/mesh_library_editor_plugin.cpp
msgid "Import Scene"
@@ -6884,12 +7231,146 @@ msgstr ""
msgid "Saving..."
msgstr "Shranjevanje..."
+#: editor/import/resource_importer_texture.cpp scene/resources/texture.cpp
+msgid "Lossy Quality"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "HDR Mode"
+msgstr "Izberi NaÄin"
+
+#: editor/import/resource_importer_texture.cpp
+msgid "BPTC LDR"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/mesh_instance_2d.cpp scene/2d/multimesh_instance_2d.cpp
+#: scene/2d/particles_2d.cpp scene/2d/sprite.cpp scene/resources/style_box.cpp
+msgid "Normal Map"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Process"
+msgstr "Trenutna RazliÄica:"
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Fix Alpha Border"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Premult Alpha"
+msgstr "Uredi Poligon"
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Hdr As Srgb"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Invert Color"
+msgstr "Odstrani Vse Stvari"
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Normal Map Invert Y"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
+#: scene/audio/audio_stream_player.cpp scene/gui/video_player.cpp
+msgid "Stream"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Size Limit"
+msgstr "NaÄin PloÅ¡Äe"
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Detect 3D"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "SVG"
+msgstr ""
+
#: editor/import/resource_importer_texture.cpp
msgid ""
"Warning, no suitable PC VRAM compression enabled in Project Settings. This "
"texture will not display correctly on PC."
msgstr ""
+#: editor/import/resource_importer_texture_atlas.cpp
+#, fuzzy
+msgid "Atlas File"
+msgstr "Dodatki v ZIP Datoteki"
+
+#: editor/import/resource_importer_texture_atlas.cpp
+#, fuzzy
+msgid "Import Mode"
+msgstr "Uvozi"
+
+#: editor/import/resource_importer_texture_atlas.cpp
+#, fuzzy
+msgid "Crop To Region"
+msgstr "NaÄin Vrtenja"
+
+#: editor/import/resource_importer_texture_atlas.cpp
+msgid "Trim Alpha Border From Region"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp scene/2d/physics_body_2d.cpp
+msgid "Force"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+msgid "8 Bit"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp main/main.cpp
+#: modules/mono/editor/csharp_project.cpp modules/mono/mono_gd/gd_mono.cpp
+msgid "Mono"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+#, fuzzy
+msgid "Max Rate"
+msgstr "Gradnik Mešanica"
+
+#: editor/import/resource_importer_wav.cpp
+#, fuzzy
+msgid "Max Rate Hz"
+msgstr "Gradnik Mešanica"
+
+#: editor/import/resource_importer_wav.cpp
+msgid "Trim"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+#, fuzzy
+msgid "Normalize"
+msgstr "Odstrani Predlogo"
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+#, fuzzy
+msgid "Loop Mode"
+msgstr "NaÄin Premika"
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+#, fuzzy
+msgid "Loop Begin"
+msgstr "NaÄin Premika"
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+#, fuzzy
+msgid "Loop End"
+msgstr "NaÄin Premika"
+
#: editor/import_defaults_editor.cpp
#, fuzzy
msgid "Select Importer"
@@ -6963,6 +7444,29 @@ msgstr "Napaka pri nalaganju vira."
#: editor/inspector_dock.cpp
#, fuzzy
+msgid "Property Name Style"
+msgstr "Ime Projekta:"
+
+#: editor/inspector_dock.cpp scene/gui/color_picker.cpp
+msgid "Raw"
+msgstr ""
+
+#: editor/inspector_dock.cpp
+#, fuzzy
+msgid "Capitalized"
+msgstr "Lastnosti"
+
+#: editor/inspector_dock.cpp
+#, fuzzy
+msgid "Localized"
+msgstr "Lokalno prostorski naÄin (%s)"
+
+#: editor/inspector_dock.cpp
+msgid "Localization not available for current language."
+msgstr ""
+
+#: editor/inspector_dock.cpp
+#, fuzzy
msgid "Copy Properties"
msgstr "Lastnosti"
@@ -8078,20 +8582,24 @@ msgstr "Licenca"
#: editor/plugins/asset_library_editor_plugin.cpp
#, fuzzy
+msgctxt "Pagination"
msgid "First"
msgstr "prvi"
-#: editor/plugins/asset_library_editor_plugin.cpp scene/gui/control.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
#, fuzzy
+msgctxt "Pagination"
msgid "Previous"
msgstr "Prejšnji zavihek"
-#: editor/plugins/asset_library_editor_plugin.cpp scene/gui/control.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
#, fuzzy
+msgctxt "Pagination"
msgid "Next"
msgstr "Naslednji zavihek"
#: editor/plugins/asset_library_editor_plugin.cpp
+msgctxt "Pagination"
msgid "Last"
msgstr ""
@@ -8356,22 +8864,22 @@ msgid ""
"margins."
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
#, fuzzy
msgid "Top Left"
msgstr "NaÄin Vrtenja"
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
#, fuzzy
msgid "Top Right"
msgstr "NaÄin Vrtenja"
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
#, fuzzy
msgid "Bottom Right"
msgstr "NaÄin Vrtenja"
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
#, fuzzy
msgid "Bottom Left"
msgstr "NaÄin Vrtenja"
@@ -9131,6 +9639,19 @@ msgstr ""
msgid "Gradient Edited"
msgstr ""
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+msgid "Swap GradientTexture2D Fill Points"
+msgstr ""
+
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+msgid "Swap Gradient Fill Points"
+msgstr ""
+
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+#, fuzzy
+msgid "Toggle Grid Snap"
+msgstr "Preklopi NaÄin"
+
#: editor/plugins/item_list_editor_plugin.cpp
msgid "Item %d"
msgstr ""
@@ -9351,9 +9872,9 @@ msgid ""
"%s"
msgstr ""
-#: editor/plugins/mesh_library_editor_plugin.cpp modules/gridmap/grid_map.cpp
+#: editor/plugins/mesh_library_editor_plugin.cpp
#, fuzzy
-msgid "Mesh Library"
+msgid "MeshLibrary"
msgstr "Knjižnica Modelov..."
#: editor/plugins/mesh_library_editor_plugin.cpp
@@ -10382,8 +10903,8 @@ msgstr "Poveži se z Gradnikom:"
msgid "Source"
msgstr "Viri"
-#: editor/plugins/script_text_editor.cpp scene/3d/interpolated_camera.cpp
-#: scene/animation/skeleton_ik.cpp
+#: editor/plugins/script_text_editor.cpp platform/uwp/export/export.cpp
+#: scene/3d/interpolated_camera.cpp scene/animation/skeleton_ik.cpp
msgid "Target"
msgstr ""
@@ -11398,7 +11919,9 @@ msgstr ""
#: editor/plugins/sprite_frames_editor_plugin.cpp
#: modules/gltf/gltf_animation.cpp modules/minimp3/audio_stream_mp3.cpp
-#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp scene/2d/path_2d.cpp
+#: modules/minimp3/resource_importer_mp3.cpp
+#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp
+#: modules/stb_vorbis/resource_importer_ogg_vorbis.cpp scene/2d/path_2d.cpp
#: scene/3d/path.cpp scene/resources/animation.cpp scene/resources/material.cpp
msgid "Loop"
msgstr ""
@@ -12351,8 +12874,9 @@ msgstr "NaÄin Vrtenja"
msgid "Priority"
msgstr "Izvozi Projekt"
-#: editor/plugins/tile_set_editor_plugin.cpp main/main.cpp scene/gui/button.cpp
-#: scene/gui/item_list.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp main/main.cpp
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#: scene/gui/button.cpp scene/gui/item_list.cpp
msgid "Icon"
msgstr ""
@@ -13731,10 +14255,6 @@ msgid ""
msgstr ""
#: editor/project_export.cpp
-msgid "Release"
-msgstr ""
-
-#: editor/project_export.cpp
#, fuzzy
msgid "Exporting All"
msgstr "Izvozi"
@@ -15602,6 +16122,7 @@ msgid "Change AudioStreamPlayer3D Emission Angle"
msgstr ""
#: editor/spatial_editor_gizmos.cpp modules/gltf/gltf_node.cpp
+#: platform/osx/export/export.cpp
msgid "Camera"
msgstr ""
@@ -15883,7 +16404,8 @@ msgstr ""
msgid "Use Nvidia Rect Flicker Workaround"
msgstr ""
-#: main/main.cpp platform/uwp/os_uwp.cpp
+#: main/main.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp platform/uwp/os_uwp.cpp
#, fuzzy
msgid "Display"
msgstr "Zamenjaj Vse"
@@ -15942,19 +16464,6 @@ msgstr ""
msgid "Allowed"
msgstr ""
-#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp scene/2d/camera_2d.cpp
-#: scene/2d/light_2d.cpp scene/2d/navigation_polygon.cpp
-#: scene/2d/ray_cast_2d.cpp scene/2d/sprite.cpp scene/2d/y_sort.cpp
-#: scene/3d/audio_stream_player_3d.cpp scene/3d/baked_lightmap.cpp
-#: scene/3d/interpolated_camera.cpp scene/3d/light.cpp
-#: scene/3d/navigation_mesh_instance.cpp scene/3d/ray_cast.cpp
-#: scene/3d/sprite_3d.cpp scene/gui/graph_edit.cpp
-#: scene/gui/rich_text_label.cpp scene/resources/curve.cpp
-#: scene/resources/environment.cpp
-#, fuzzy
-msgid "Enabled"
-msgstr "OmogoÄi"
-
#: main/main.cpp
msgid "Intended Usage"
msgstr ""
@@ -15985,13 +16494,14 @@ msgstr ""
msgid "Handheld"
msgstr ""
-#: main/main.cpp
+#: main/main.cpp platform/javascript/export/export.cpp
+#: platform/uwp/export/export.cpp
#, fuzzy
msgid "Orientation"
msgstr "Odpri Nedavne"
#: main/main.cpp scene/gui/scroll_container.cpp scene/gui/text_edit.cpp
-#: scene/main/scene_tree.cpp
+#: scene/main/scene_tree.cpp scene/register_scene_types.cpp
#, fuzzy
msgid "Common"
msgstr "Skupnost"
@@ -16033,7 +16543,7 @@ msgstr ""
#: main/main.cpp
#, fuzzy
-msgid "Frame Delay (msec)"
+msgid "Frame Delay Msec"
msgstr "Okvirni ÄŒas (sek)"
#: main/main.cpp
@@ -16156,11 +16666,6 @@ msgstr ""
msgid "Tooltip Position Offset"
msgstr "Rotacijski Odmik:"
-#: main/main.cpp modules/mono/editor/csharp_project.cpp
-#: modules/mono/mono_gd/gd_mono.cpp
-msgid "Mono"
-msgstr ""
-
#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp
#, fuzzy
msgid "Debugger Agent"
@@ -16729,7 +17234,7 @@ msgstr ""
msgid "Intensity"
msgstr ""
-#: modules/gltf/gltf_light.cpp scene/2d/light_2d.cpp
+#: modules/gltf/gltf_light.cpp scene/2d/light_2d.cpp scene/3d/light.cpp
#, fuzzy
msgid "Range"
msgstr "Spremeni"
@@ -16871,11 +17376,6 @@ msgstr ""
msgid "Use Named Skin Binds"
msgstr ""
-#: modules/gltf/gltf_state.cpp scene/3d/physics_joint.cpp
-#, fuzzy
-msgid "Nodes"
-msgstr "Gradnik"
-
#: modules/gltf/gltf_state.cpp
msgid "Buffer Views"
msgstr ""
@@ -16885,15 +17385,6 @@ msgid "Accessors"
msgstr ""
#: modules/gltf/gltf_state.cpp
-msgid "Meshes"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp
-#, fuzzy
-msgid "Materials"
-msgstr "Spremebe v Shader"
-
-#: modules/gltf/gltf_state.cpp
#, fuzzy
msgid "Scene Name"
msgstr "Pot Prizora:"
@@ -16910,15 +17401,11 @@ msgstr "Preimenuj"
msgid "Textures"
msgstr "Odstrani Predlogo"
-#: modules/gltf/gltf_state.cpp
+#: modules/gltf/gltf_state.cpp platform/uwp/export/export.cpp
msgid "Images"
msgstr ""
#: modules/gltf/gltf_state.cpp
-msgid "Skins"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp
msgid "Cameras"
msgstr ""
@@ -16953,10 +17440,15 @@ msgstr ""
#: modules/gridmap/grid_map.cpp
#, fuzzy
+msgid "Mesh Library"
+msgstr "Knjižnica Modelov..."
+
+#: modules/gridmap/grid_map.cpp
+#, fuzzy
msgid "Physics Material"
msgstr "Fizikalni Okvir %"
-#: modules/gridmap/grid_map.cpp
+#: modules/gridmap/grid_map.cpp scene/3d/visual_instance.cpp
#, fuzzy
msgid "Use In Baked Light"
msgstr "ZapeÄi Svetlobne karte"
@@ -16988,6 +17480,7 @@ msgstr "NaÄin Vrtenja"
#: modules/gridmap/grid_map.cpp scene/2d/collision_object_2d.cpp
#: scene/2d/tile_map.cpp scene/3d/collision_object.cpp scene/3d/soft_body.cpp
+#: scene/resources/material.cpp
msgid "Mask"
msgstr ""
@@ -17178,7 +17671,9 @@ msgid "Ultra Quality Ray Count"
msgstr ""
#: modules/minimp3/audio_stream_mp3.cpp
+#: modules/minimp3/resource_importer_mp3.cpp
#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp
+#: modules/stb_vorbis/resource_importer_ogg_vorbis.cpp
#, fuzzy
msgid "Loop Offset"
msgstr "Mrežni Zamik:"
@@ -18299,6 +18794,190 @@ msgid "The package must have at least one '.' separator."
msgstr ""
#: platform/android/export/export_plugin.cpp
+msgid "Use Custom Build"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Export Format"
+msgstr "Izvozi Projekt"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Keystore"
+msgstr "RazhroÅ¡Äevalnik"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Debug User"
+msgstr "RazhroÅ¡Äevalnik"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+msgid "Debug Password"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Release User"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Release Password"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "One Click Deploy"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Clear Previous Install"
+msgstr "Prejšnji zavihek"
+
+#: platform/android/export/export_plugin.cpp scene/resources/shader.cpp
+msgid "Code"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Min SDK"
+msgstr "Zaženi Skripto"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Target SDK"
+msgstr "Gradnik ÄŒasovnoMerilo"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Package"
+msgstr "Pakiranje"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Unique Name"
+msgstr "Ime Gradnika:"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Signed"
+msgstr "Signali"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Classify As Game"
+msgstr "Razred:"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Retain Data On Uninstall"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Exclude From Recents"
+msgstr "Izberi Gradnik"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Graphics"
+msgstr "Mrežni Zamik:"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "OpenGL Debug"
+msgstr "Odpri"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "XR Features"
+msgstr "Upravljaj Izvozne Predloge"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "XR Mode"
+msgstr "NaÄin PloÅ¡Äe"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Hand Tracking"
+msgstr "Pakiranje"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Hand Tracking Frequency"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Passthrough"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Immersive Mode"
+msgstr "Izvozi Projekt"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Support Small"
+msgstr "Podpora..."
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Support Normal"
+msgstr "Podpora..."
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Support Large"
+msgstr "Podpora..."
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Support Xlarge"
+msgstr "Podpora..."
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "User Data Backup"
+msgstr "Odprem Upravljalnik Projekta?"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Allow"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Command Line"
+msgstr "Skupnost"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Extra Args"
+msgstr "Dodatni Klicni Argumenti:"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "APK Expansion"
+msgstr "Trenutna RazliÄica:"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Salt"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Public Key"
+msgstr "Animacija Podvoji kljuÄe"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Permissions"
+msgstr "Trenutna RazliÄica:"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Custom Permissions"
+msgstr "Zaženi Prizor po Meri"
+
+#: platform/android/export/export_plugin.cpp
msgid "Select device from the list"
msgstr "Izberite napravo s seznama"
@@ -18601,6 +19280,177 @@ msgid "The character '%s' is not allowed in Identifier."
msgstr "Ime ni pravilen identifikator:"
#: platform/iphone/export/export.cpp
+msgid "App Store Team ID"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Provisioning Profile UUID Debug"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Code Sign Identity Debug"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Export Method Debug"
+msgstr "Izvozi Projekt"
+
+#: platform/iphone/export/export.cpp
+msgid "Provisioning Profile UUID Release"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Code Sign Identity Release"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Export Method Release"
+msgstr "Izvozi Projekt"
+
+#: platform/iphone/export/export.cpp
+msgid "Targeted Device Family"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Info"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Identifier"
+msgstr "Ime ni pravilen identifikator:"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Signature"
+msgstr "Signali"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Short Version"
+msgstr "RazliÄica:"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Copyright"
+msgstr "NaÄin Vrtenja"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Capabilities"
+msgstr "Lastnosti"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Access Wi-Fi"
+msgstr "Uspelo je!"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Push Notifications"
+msgstr "Prilepi animacijo"
+
+#: platform/iphone/export/export.cpp scene/3d/baked_lightmap.cpp
+#, fuzzy
+msgid "User Data"
+msgstr "Odprem Upravljalnik Projekta?"
+
+#: platform/iphone/export/export.cpp
+msgid "Accessible From Files App"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Accessible From Itunes Sharing"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Privacy"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Camera Usage Description"
+msgstr "Opis:"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Microphone Usage Description"
+msgstr "Opis lastnosti:"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Photolibrary Usage Description"
+msgstr "Opis lastnosti:"
+
+#: platform/iphone/export/export.cpp
+msgid "iPhone 120 X 120"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPhone 180 X 180"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 76 X 76"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 152 X 152"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 167 X 167"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "App Store 1024 X 1024"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Spotlight 40 X 40"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Spotlight 80 X 80"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Storyboard"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Use Launch Screen Storyboard"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Image Scale Mode"
+msgstr "NaÄin Obsega (R)"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Custom Image @2x"
+msgstr "Gradnik Prehod"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Custom Image @3x"
+msgstr "Gradnik Prehod"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Use Custom BG Color"
+msgstr "Gradnik Prehod"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Custom BG Color"
+msgstr "Gradnik Prehod"
+
+#: platform/iphone/export/export.cpp
msgid "App Store Team ID not specified - cannot configure the project."
msgstr ""
@@ -18640,6 +19490,80 @@ msgstr "Mape ni mogoÄe ustvariti."
#: platform/javascript/export/export.cpp
#, fuzzy
+msgid "Variant"
+msgstr "OÅ¡tevilÄenja:"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Export Type"
+msgstr "Izvozi"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "VRAM Texture Compression"
+msgstr "Trenutna RazliÄica:"
+
+#: platform/javascript/export/export.cpp
+msgid "For Desktop"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "For Mobile"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Html"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Export Icon"
+msgstr "Razširi vse"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Custom Html Shell"
+msgstr "Gradnik Prehod"
+
+#: platform/javascript/export/export.cpp
+msgid "Head Include"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Canvas Resize Policy"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Focus Canvas On Start"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Experimental Virtual Keyboard"
+msgstr "Filtriraj datoteke..."
+
+#: platform/javascript/export/export.cpp
+msgid "Progressive Web App"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Offline Page"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 144 X 144"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 180 X 180"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 512 X 512"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
msgid "Could not read HTML shell:"
msgstr "Mape ni mogoÄe ustvariti."
@@ -18754,6 +19678,200 @@ msgid "Unknown object type."
msgstr ""
#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "App Category"
+msgstr "Kategorija:"
+
+#: platform/osx/export/export.cpp
+msgid "High Res"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Location Usage Description"
+msgstr "Opis:"
+
+#: platform/osx/export/export.cpp
+msgid "Address Book Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Calendar Usage Description"
+msgstr "Opis:"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Photos Library Usage Description"
+msgstr "Opis lastnosti:"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Desktop Folder Usage Description"
+msgstr "Opis Metode:"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Documents Folder Usage Description"
+msgstr "Opis Metode:"
+
+#: platform/osx/export/export.cpp
+msgid "Downloads Folder Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Network Volumes Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Removable Volumes Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#, fuzzy
+msgid "Codesign"
+msgstr "Gradnik"
+
+#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Identity"
+msgstr "NaÄin PloÅ¡Äe"
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#, fuzzy
+msgid "Timestamp"
+msgstr "ÄŒas"
+
+#: platform/osx/export/export.cpp
+msgid "Hardened Runtime"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Replace Existing Signature"
+msgstr "Zamenjaj Vse"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Entitlements"
+msgstr "Vsebina:"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Custom File"
+msgstr "Gradnik Prehod"
+
+#: platform/osx/export/export.cpp
+msgid "Allow JIT Code Execution"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Allow Unsigned Executable Memory"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Allow Dyld Environment Variables"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Disable Library Validation"
+msgstr "OnemogoÄen"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Audio Input"
+msgstr "Dodaj Vnos"
+
+#: platform/osx/export/export.cpp
+msgid "Address Book"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Calendars"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Photos Library"
+msgstr "Izvozi Knjižnico"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Apple Events"
+msgstr "Ponastavi PoveÄavo/PomanjÅ¡avo"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Debugging"
+msgstr "RazhroÅ¡Äevalnik"
+
+#: platform/osx/export/export.cpp
+msgid "App Sandbox"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Network Server"
+msgstr "Izvozi Projekt"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Network Client"
+msgstr "Izvozi Projekt"
+
+#: platform/osx/export/export.cpp
+msgid "Device Usb"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Device Bluetooth"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Files Downloads"
+msgstr "Prenesi"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Files Pictures"
+msgstr "Filtriraj datoteke..."
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Files Music"
+msgstr "Datoteka:"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Files Movies"
+msgstr "Filtriraj datoteke..."
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#, fuzzy
+msgid "Custom Options"
+msgstr "Možnosti Vodila"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Notarization"
+msgstr "Animacijski Gradnik"
+
+#: platform/osx/export/export.cpp
+msgid "Apple ID Name"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Apple ID Password"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Apple Team ID"
+msgstr ""
+
+#: platform/osx/export/export.cpp
msgid ""
"Note: The notarization process generally takes less than an hour. When the "
"process is completed, you'll receive an email."
@@ -18946,6 +20064,134 @@ msgid "Force Builtin Codesign"
msgstr ""
#: platform/uwp/export/export.cpp
+msgid "Architecture"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Display Name"
+msgstr "Zamenjaj Vse"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Short Name"
+msgstr "Ime Projekta:"
+
+#: platform/uwp/export/export.cpp
+msgid "Publisher"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Publisher Display Name"
+msgstr "Neveljaven indeks lastnosti imena."
+
+#: platform/uwp/export/export.cpp
+msgid "Product Guid"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Publisher Guid"
+msgstr "Zaženi Prizor po Meri"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Signing"
+msgstr "Signali"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Certificate"
+msgstr "Lastnosti"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Algorithm"
+msgstr "RazhroÅ¡Äevalnik"
+
+#: platform/uwp/export/export.cpp
+msgid "Major"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Minor"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Build"
+msgstr "NaÄin Obsega (R)"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Revision"
+msgstr "Trenutna RazliÄica:"
+
+#: platform/uwp/export/export.cpp
+msgid "Landscape"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Portrait"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Landscape Flipped"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Portrait Flipped"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Store Logo"
+msgstr "NaÄin Obsega (R)"
+
+#: platform/uwp/export/export.cpp
+msgid "Square 44 X 44 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 71 X 71 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 150 X 150 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 310 X 310 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Wide 310 X 150 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Splash Screen"
+msgstr "Klici"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Tiles"
+msgstr "Datoteka:"
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Square 150 X 150"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Wide 310 X 150"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Square 310 X 310"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
#, fuzzy
msgid "Invalid package short name."
msgstr "Neveljavno ime."
@@ -19017,15 +20263,53 @@ msgid "Debug Certificate"
msgstr ""
#: platform/uwp/export/export.cpp
-msgid "Debug Password"
+#, fuzzy
+msgid "Debug Algorithm"
+msgstr "RazhroÅ¡Äevalnik"
+
+#: platform/windows/export/export.cpp
+msgid "Identity Type"
msgstr ""
-#: platform/uwp/export/export.cpp
+#: platform/windows/export/export.cpp
+msgid "Timestamp Server URL"
+msgstr ""
+
+#: platform/windows/export/export.cpp
#, fuzzy
-msgid "Debug Algorithm"
+msgid "Digest Algorithm"
msgstr "RazhroÅ¡Äevalnik"
#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "File Version"
+msgstr "RazliÄica:"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Product Version"
+msgstr "Neveljavno Ime Projekta."
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Company Name"
+msgstr "Ime Gradnika:"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Product Name"
+msgstr "Ime Projekta:"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "File Description"
+msgstr "Opis:"
+
+#: platform/windows/export/export.cpp
+msgid "Trademarks"
+msgstr ""
+
+#: platform/windows/export/export.cpp
msgid ""
"The rcedit tool must be configured in the Editor Settings (Export > Windows "
"> Rcedit) to change the icon or app information data."
@@ -19100,12 +20384,14 @@ msgstr "Zaženi"
msgid "Centered"
msgstr "NaÄin Vrtenja"
-#: scene/2d/animated_sprite.cpp scene/2d/camera_2d.cpp scene/2d/light_2d.cpp
+#: scene/2d/animated_sprite.cpp scene/2d/camera_2d.cpp
+#: scene/2d/cpu_particles_2d.cpp scene/2d/light_2d.cpp
#: scene/2d/parallax_background.cpp scene/2d/parallax_layer.cpp
#: scene/2d/path_2d.cpp scene/2d/polygon_2d.cpp scene/2d/sprite.cpp
-#: scene/3d/path.cpp scene/3d/physics_body.cpp scene/3d/sprite_3d.cpp
-#: scene/gui/graph_node.cpp scene/gui/rich_text_effect.cpp
-#: scene/main/canvas_layer.cpp scene/resources/material.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/path.cpp scene/3d/physics_body.cpp
+#: scene/3d/sprite_3d.cpp scene/gui/graph_node.cpp
+#: scene/gui/rich_text_effect.cpp scene/main/canvas_layer.cpp
+#: scene/resources/material.cpp scene/resources/particles_material.cpp
#: scene/resources/style_box.cpp
#, fuzzy
msgid "Offset"
@@ -19177,11 +20463,6 @@ msgstr "Dodaj ZvoÄno Vodilo"
msgid "Override"
msgstr "Fizikalni Okvir %"
-#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
-#: scene/audio/audio_stream_player.cpp scene/gui/video_player.cpp
-msgid "Stream"
-msgstr ""
-
#: scene/2d/audio_stream_player_2d.cpp scene/audio/audio_stream_player.cpp
#: scene/gui/video_player.cpp servers/audio/effects/audio_effect_amplify.cpp
msgid "Volume dB"
@@ -19207,13 +20488,13 @@ msgid "Stream Paused"
msgstr ""
#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
-#: scene/3d/reflection_probe.cpp scene/3d/visual_instance.cpp
-#: scene/resources/material.cpp
+#: scene/3d/light.cpp scene/3d/reflection_probe.cpp
+#: scene/3d/visual_instance.cpp scene/resources/material.cpp
#, fuzzy
msgid "Max Distance"
msgstr "Primer"
-#: scene/2d/audio_stream_player_2d.cpp
+#: scene/2d/audio_stream_player_2d.cpp scene/3d/light.cpp
#, fuzzy
msgid "Attenuation"
msgstr "Animacija"
@@ -19268,6 +20549,24 @@ msgstr "NaÄin Premika"
msgid "Limit"
msgstr ""
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/style_box.cpp
+#, fuzzy
+msgid "Left"
+msgstr "NaÄin Vrtenja"
+
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/style_box.cpp
+#, fuzzy
+msgid "Right"
+msgstr "NaÄin Vrtenja"
+
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/dynamic_font.cpp scene/resources/style_box.cpp
+#, fuzzy
+msgid "Bottom"
+msgstr "NaÄin Vrtenja"
+
#: scene/2d/camera_2d.cpp
msgid "Smoothed"
msgstr ""
@@ -19485,13 +20784,6 @@ msgstr ""
msgid "Emitting"
msgstr "Nastavitve ZaskoÄenja"
-#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp scene/3d/area.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
-#: scene/resources/environment.cpp
-#, fuzzy
-msgid "Amount"
-msgstr "KoliÄina:"
-
#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp
#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
msgid "Lifetime"
@@ -19555,18 +20847,13 @@ msgstr ""
#: scene/2d/mesh_instance_2d.cpp scene/2d/multimesh_instance_2d.cpp
#: scene/2d/particles_2d.cpp scene/2d/polygon_2d.cpp scene/2d/sprite.cpp
#: scene/3d/sprite_3d.cpp scene/gui/nine_patch_rect.cpp
-#: scene/gui/texture_rect.cpp scene/resources/sky.cpp
-#: scene/resources/style_box.cpp scene/resources/visual_shader_nodes.cpp
+#: scene/gui/texture_rect.cpp scene/resources/material.cpp
+#: scene/resources/sky.cpp scene/resources/style_box.cpp
+#: scene/resources/visual_shader_nodes.cpp
#, fuzzy
msgid "Texture"
msgstr "Odstrani Predlogo"
-#: scene/2d/cpu_particles_2d.cpp scene/2d/mesh_instance_2d.cpp
-#: scene/2d/multimesh_instance_2d.cpp scene/2d/particles_2d.cpp
-#: scene/2d/sprite.cpp scene/resources/style_box.cpp
-msgid "Normal Map"
-msgstr ""
-
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
#, fuzzy
@@ -19588,9 +20875,8 @@ msgid "Normals"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/3d/sprite_3d.cpp scene/resources/material.cpp
-#: scene/resources/particles_material.cpp scene/resources/texture.cpp
-msgid "Flags"
+#: scene/resources/particles_material.cpp
+msgid "Align Y"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
@@ -19611,6 +20897,11 @@ msgid "Initial Velocity"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Velocity Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp servers/physics_2d_server.cpp
#: servers/physics_server.cpp
msgid "Angular Velocity"
@@ -19618,6 +20909,12 @@ msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Velocity Curve"
+msgstr "Uredi krivuljo vozliÅ¡Äa"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
msgid "Orbit Velocity"
msgstr ""
@@ -19629,6 +20926,23 @@ msgstr "Linearno"
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Accel"
+msgstr "Uspelo je!"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Accel Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Accel Curve"
+msgstr "Uredi krivuljo vozliÅ¡Äa"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
msgid "Radial Accel"
msgstr ""
@@ -19638,19 +20952,55 @@ msgid "Tangential Accel"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/2d/joints_2d.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/vehicle_body.cpp
-#: scene/resources/particles_material.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/physics_joint.cpp
+#: scene/3d/vehicle_body.cpp scene/resources/particles_material.cpp
#: servers/audio/effects/audio_effect_reverb.cpp
msgid "Damping"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+msgid "Damping Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Damping Curve"
+msgstr "Uredi krivuljo vozliÅ¡Äa"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp scene/3d/light.cpp
+#: scene/resources/particles_material.cpp
msgid "Angle"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+msgid "Angle Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Angle Curve"
+msgstr "Uredi krivuljo vozliÅ¡Äa"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#, fuzzy
+msgid "Scale Amount"
+msgstr "KoliÄina:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+msgid "Scale Amount Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#, fuzzy
+msgid "Scale Amount Curve"
+msgstr "PoveÄaj iz kazalca"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
msgid "Color Ramp"
msgstr ""
@@ -19665,6 +21015,48 @@ msgstr ""
msgid "Hue Variation"
msgstr "OÅ¡tevilÄenja:"
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Variation"
+msgstr "OÅ¡tevilÄenja:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Variation Random"
+msgstr "OÅ¡tevilÄenja:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Variation Curve"
+msgstr "OÅ¡tevilÄenja:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Speed Random"
+msgstr "Prilagodi Velikost:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Speed Curve"
+msgstr "Uredi krivuljo vozliÅ¡Äa"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Offset Random"
+msgstr "Mrežni Zamik:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Offset Curve"
+msgstr "Uredi krivuljo vozliÅ¡Äa"
+
#: scene/2d/joints_2d.cpp
msgid "Node A and Node B must be PhysicsBody2Ds"
msgstr ""
@@ -19696,6 +21088,7 @@ msgid "Node B"
msgstr "Gradnik"
#: scene/2d/joints_2d.cpp scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp
+#: scene/3d/light.cpp scene/3d/physics_joint.cpp
#: scene/resources/environment.cpp
msgid "Bias"
msgstr ""
@@ -19705,7 +21098,7 @@ msgstr ""
msgid "Disable Collision"
msgstr "OnemogoÄen"
-#: scene/2d/joints_2d.cpp
+#: scene/2d/joints_2d.cpp scene/3d/physics_joint.cpp
msgid "Softness"
msgstr ""
@@ -19723,7 +21116,7 @@ msgstr "Mrežni Zamik:"
msgid "Rest Length"
msgstr ""
-#: scene/2d/joints_2d.cpp scene/3d/vehicle_body.cpp
+#: scene/2d/joints_2d.cpp scene/3d/physics_joint.cpp scene/3d/vehicle_body.cpp
msgid "Stiffness"
msgstr ""
@@ -19743,7 +21136,7 @@ msgid "Texture Scale"
msgstr ""
#: scene/2d/light_2d.cpp scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp
-#: scene/resources/environment.cpp scene/resources/sky.cpp
+#: scene/3d/light.cpp scene/resources/environment.cpp scene/resources/sky.cpp
msgid "Energy"
msgstr ""
@@ -19781,12 +21174,6 @@ msgstr "Mrežni Korak:"
msgid "Gradient Length"
msgstr "Prevzeto"
-#: scene/2d/light_2d.cpp scene/gui/control.cpp
-#: scene/resources/navigation_mesh.cpp
-#, fuzzy
-msgid "Filter"
-msgstr "Filtri..."
-
#: scene/2d/light_2d.cpp
#, fuzzy
msgid "Filter Smooth"
@@ -20193,10 +21580,6 @@ msgid "Applied Forces"
msgstr ""
#: scene/2d/physics_body_2d.cpp
-msgid "Force"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp
msgid "Torque"
msgstr ""
@@ -20210,7 +21593,7 @@ msgid "Sync To Physics"
msgstr "Fizikalni Okvir %"
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-msgid "Moving platform"
+msgid "Moving Platform"
msgstr ""
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
@@ -20219,7 +21602,7 @@ msgstr ""
#: scene/2d/physics_body_2d.cpp scene/2d/touch_screen_button.cpp
#: scene/3d/physics_body.cpp scene/gui/texture_button.cpp
-#: scene/resources/line_shape_2d.cpp
+#: scene/resources/line_shape_2d.cpp scene/resources/material.cpp
msgid "Normal"
msgstr ""
@@ -20455,6 +21838,34 @@ msgid ""
"as parent."
msgstr ""
+#: scene/2d/visibility_notifier_2d.cpp scene/3d/visibility_notifier.cpp
+#, fuzzy
+msgid "Pause Animations"
+msgstr "Prilepi animacijo"
+
+#: scene/2d/visibility_notifier_2d.cpp scene/3d/visibility_notifier.cpp
+msgid "Freeze Bodies"
+msgstr ""
+
+#: scene/2d/visibility_notifier_2d.cpp
+#, fuzzy
+msgid "Pause Particles"
+msgstr "Prilepi Parametre"
+
+#: scene/2d/visibility_notifier_2d.cpp
+#, fuzzy
+msgid "Pause Animated Sprites"
+msgstr "Prilepi animacijo"
+
+#: scene/2d/visibility_notifier_2d.cpp
+#, fuzzy
+msgid "Process Parent"
+msgstr "Uredi Filtre"
+
+#: scene/2d/visibility_notifier_2d.cpp
+msgid "Physics Process Parent"
+msgstr ""
+
#: scene/3d/area.cpp
msgid "Reverb Bus"
msgstr ""
@@ -20550,6 +21961,7 @@ msgid "Attenuation Filter"
msgstr ""
#: scene/3d/audio_stream_player_3d.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
#: servers/audio/effects/audio_effect_filter.cpp
msgid "Cutoff Hz"
msgstr ""
@@ -20593,11 +22005,6 @@ msgid "Octree"
msgstr ""
#: scene/3d/baked_lightmap.cpp
-#, fuzzy
-msgid "User Data"
-msgstr "Odprem Upravljalnik Projekta?"
-
-#: scene/3d/baked_lightmap.cpp
msgid "Finding meshes and lights"
msgstr ""
@@ -20851,6 +22258,16 @@ msgid "Ring Axis"
msgstr ""
#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Rotate Y"
+msgstr "NaÄin Vrtenja"
+
+#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Disable Z"
+msgstr "OnemogoÄen"
+
+#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
msgid "Flatness"
msgstr ""
@@ -20888,16 +22305,11 @@ msgstr ""
msgid "Dynamic Range"
msgstr ""
-#: scene/3d/gi_probe.cpp
+#: scene/3d/gi_probe.cpp scene/3d/light.cpp
msgid "Normal Bias"
msgstr ""
#: scene/3d/gi_probe.cpp
-#, fuzzy
-msgid "Compress"
-msgstr "Komponente"
-
-#: scene/3d/gi_probe.cpp
msgid "Plotting Meshes"
msgstr ""
@@ -20923,16 +22335,31 @@ msgid "Subdiv"
msgstr ""
#: scene/3d/light.cpp
+#, fuzzy
+msgid "Indirect Energy"
+msgstr "NaÄin Vrtenja"
+
+#: scene/3d/light.cpp
msgid "Negative"
msgstr ""
#: scene/3d/light.cpp
#, fuzzy
+msgid "Specular"
+msgstr "NaÄin Obsega (R)"
+
+#: scene/3d/light.cpp
+#, fuzzy
msgid "Bake Mode"
msgstr "NaÄin Vrtenja"
#: scene/3d/light.cpp
#, fuzzy
+msgid "Contact"
+msgstr "Vsebina:"
+
+#: scene/3d/light.cpp
+#, fuzzy
msgid "Reverse Cull Face"
msgstr "Ponastavi Glasnost Vodila"
@@ -20943,11 +22370,31 @@ msgstr "Smeri"
#: scene/3d/light.cpp
#, fuzzy
+msgid "Split 1"
+msgstr "Uredi krivuljo vozliÅ¡Äa"
+
+#: scene/3d/light.cpp
+#, fuzzy
+msgid "Split 2"
+msgstr "Uredi krivuljo vozliÅ¡Äa"
+
+#: scene/3d/light.cpp
+#, fuzzy
+msgid "Split 3"
+msgstr "Uredi krivuljo vozliÅ¡Äa"
+
+#: scene/3d/light.cpp
+#, fuzzy
msgid "Blend Splits"
msgstr "Čas Mešanja:"
#: scene/3d/light.cpp
#, fuzzy
+msgid "Bias Split Scale"
+msgstr "Uporabi Pripenjanje"
+
+#: scene/3d/light.cpp
+#, fuzzy
msgid "Depth Range"
msgstr "Globina"
@@ -20973,6 +22420,11 @@ msgstr ""
msgid "Spot"
msgstr ""
+#: scene/3d/light.cpp
+#, fuzzy
+msgid "Angle Attenuation"
+msgstr "Animacija"
+
#: scene/3d/mesh_instance.cpp
msgid "Software Skinning"
msgstr ""
@@ -21097,6 +22549,63 @@ msgstr ""
#: scene/3d/physics_body.cpp
#, fuzzy
+msgid "Linear X"
+msgstr "Linearno"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Linear Y"
+msgstr "Linearno"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Linear Z"
+msgstr "Linearno"
+
+#: scene/3d/physics_body.cpp
+msgid "Angular X"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Angular Y"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Angular Z"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Motion X"
+msgstr "Premakni Dejanje"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Motion Y"
+msgstr "Premakni Dejanje"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Motion Z"
+msgstr "Premakni Dejanje"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Move Lock X"
+msgstr "NaÄin Premika"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Move Lock Y"
+msgstr "NaÄin Premika"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Move Lock Z"
+msgstr "NaÄin Premika"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
msgid "Body Offset"
msgstr "Mrežni Zamik:"
@@ -21130,6 +22639,15 @@ msgid "Exclude Nodes"
msgstr "Izberi Gradnik"
#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Params"
+msgstr "Spremebe v Shader"
+
+#: scene/3d/physics_joint.cpp
+msgid "Impulse Clamp"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit"
msgstr ""
@@ -21141,6 +22659,55 @@ msgstr ""
msgid "Lower"
msgstr ""
+#: scene/3d/physics_joint.cpp scene/3d/vehicle_body.cpp
+#, fuzzy
+msgid "Relaxation"
+msgstr "OÅ¡tevilÄenja:"
+
+#: scene/3d/physics_joint.cpp
+msgid "Motor"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Target Velocity"
+msgstr "Linearno"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Max Impulse"
+msgstr "Vrednost:"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit"
+msgstr "Linearno"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Upper Distance"
+msgstr "Primer"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Lower Distance"
+msgstr "Primer"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Restitution"
+msgstr "Opis:"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motion"
+msgstr "Linearno"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Ortho"
+msgstr "Linearno"
+
#: scene/3d/physics_joint.cpp
msgid "Upper Angle"
msgstr ""
@@ -21151,6 +22718,15 @@ msgstr ""
#: scene/3d/physics_joint.cpp
#, fuzzy
+msgid "Angular Motion"
+msgstr "Animacija"
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Ortho"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
msgid "Swing Span"
msgstr "Shranjevanje Scene"
@@ -21159,17 +22735,99 @@ msgid "Twist Span"
msgstr ""
#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit X"
+msgstr "Linearno"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motor X"
+msgstr "Linearno"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Force Limit"
+msgstr "Klici"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Spring X"
+msgstr "Linearno"
+
+#: scene/3d/physics_joint.cpp
+msgid "Equilibrium Point"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit X"
msgstr ""
#: scene/3d/physics_joint.cpp
+msgid "Erp"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Motor X"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Spring X"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit Y"
+msgstr "Linearno"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motor Y"
+msgstr "Linearno"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Spring Y"
+msgstr "Linearno"
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit Y"
msgstr ""
#: scene/3d/physics_joint.cpp
+msgid "Angular Motor Y"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Spring Y"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit Z"
+msgstr "Linearno"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motor Z"
+msgstr "Linearno"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Spring Z"
+msgstr "Linearno"
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit Z"
msgstr ""
+#: scene/3d/physics_joint.cpp
+msgid "Angular Motor Z"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Spring Z"
+msgstr ""
+
#: scene/3d/portal.cpp
msgid "The RoomManager should not be a child or grandchild of a Portal."
msgstr ""
@@ -21286,7 +22944,7 @@ msgstr ""
msgid "Use Default Simplify"
msgstr ""
-#: scene/3d/room.cpp
+#: scene/3d/room.cpp scene/3d/room_manager.cpp
msgid "Room Simplify"
msgstr ""
@@ -21325,6 +22983,13 @@ msgstr ""
msgid "Main"
msgstr ""
+#: scene/3d/room_manager.cpp scene/animation/animation_player.cpp
+#: scene/animation/animation_tree.cpp scene/animation/animation_tree_player.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+#, fuzzy
+msgid "Active"
+msgstr "Premakni Dejanje"
+
#: scene/3d/room_manager.cpp
msgid "Roomlist"
msgstr ""
@@ -21348,6 +23013,53 @@ msgid "Gameplay"
msgstr ""
#: scene/3d/room_manager.cpp
+msgid "Gameplay Monitor"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Use Secondary PVS"
+msgstr "Uporabi Pripenjanje"
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Merge Meshes"
+msgstr "Lastnosti objekta."
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Show Margins"
+msgstr "DatoteÄniSistem"
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Debug Sprawl"
+msgstr "RazhroÅ¡Äevalnik"
+
+#: scene/3d/room_manager.cpp
+msgid "Overlap Warning Threshold"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Preview Camera"
+msgstr "Predogled"
+
+#: scene/3d/room_manager.cpp
+msgid "Portal Depth Limit"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Default Portal Margin"
+msgstr "Prevzeto"
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Roaming Expansion Margin"
+msgstr "Razširi vse"
+
+#: scene/3d/room_manager.cpp
msgid ""
"RoomList path is invalid.\n"
"Please check the RoomList branch has been assigned in the RoomManager."
@@ -21470,6 +23182,20 @@ msgstr ""
msgid "Billboard"
msgstr ""
+#: scene/3d/sprite_3d.cpp scene/resources/material.cpp
+#, fuzzy
+msgid "Transparent"
+msgstr "Prestavi ZaskoÄenje:"
+
+#: scene/3d/sprite_3d.cpp
+#, fuzzy
+msgid "Shaded"
+msgstr "Spremebe v Shader"
+
+#: scene/3d/sprite_3d.cpp
+msgid "Double Sided"
+msgstr ""
+
#: scene/3d/sprite_3d.cpp
msgid "Alpha Cut"
msgstr ""
@@ -21542,11 +23268,6 @@ msgstr "Trenutna RazliÄica:"
msgid "Max Force"
msgstr "Napaka!"
-#: scene/3d/vehicle_body.cpp
-#, fuzzy
-msgid "Relaxation"
-msgstr "OÅ¡tevilÄenja:"
-
#: scene/3d/visibility_notifier.cpp
msgid "AABB"
msgstr ""
@@ -21682,7 +23403,7 @@ msgstr "ÄŒas X-Bledenja (s):"
#: scene/animation/animation_blend_tree.cpp
#, fuzzy
-msgid "autorestart_"
+msgid "Auto Restart"
msgstr "Samodejni Ponovni Zagon:"
#: scene/animation/animation_blend_tree.cpp
@@ -21768,13 +23489,6 @@ msgstr "Opis:"
msgid "Default Blend Time"
msgstr "Prevzeto"
-#: scene/animation/animation_player.cpp scene/animation/animation_tree.cpp
-#: scene/animation/animation_tree_player.cpp
-#: servers/audio/effects/audio_effect_delay.cpp
-#, fuzzy
-msgid "Active"
-msgstr "Premakni Dejanje"
-
#: scene/animation/animation_player.cpp
msgid "Method Call Mode"
msgstr ""
@@ -21900,10 +23614,6 @@ msgstr "Gradnik ÄŒasovnoMerilo"
msgid "Max Iterations"
msgstr "Preimenuj Funkcijo"
-#: scene/animation/tween.cpp scene/resources/texture.cpp
-msgid "Repeat"
-msgstr ""
-
#: scene/animation/tween.cpp
msgid "Playback Process Mode"
msgstr ""
@@ -21933,20 +23643,6 @@ msgstr "Izberi NaÄin"
msgid "Alignment"
msgstr ""
-#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
-#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
-#: scene/resources/style_box.cpp
-#, fuzzy
-msgid "Horizontal"
-msgstr "Premakni vodoravni vodnik"
-
-#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
-#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
-#: scene/resources/style_box.cpp
-#, fuzzy
-msgid "Vertical"
-msgstr "Premakni navpiÄni vodnik"
-
#: scene/gui/base_button.cpp
msgid "Shortcut In Tooltip"
msgstr ""
@@ -22044,10 +23740,6 @@ msgid "HSV"
msgstr ""
#: scene/gui/color_picker.cpp
-msgid "Raw"
-msgstr ""
-
-#: scene/gui/color_picker.cpp
msgid "Switch between hexadecimal and code values."
msgstr ""
@@ -22109,6 +23801,32 @@ msgid "Focus"
msgstr "Poudari Pot"
#: scene/gui/control.cpp
+msgid "Neighbour Left"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Neighbour Top"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Neighbour Right"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Neighbour Bottom"
+msgstr ""
+
+#: scene/gui/control.cpp
+#, fuzzy
+msgid "Next"
+msgstr "Naslednji zavihek"
+
+#: scene/gui/control.cpp
+#, fuzzy
+msgid "Previous"
+msgstr "Prejšnji zavihek"
+
+#: scene/gui/control.cpp
msgid "Mouse"
msgstr ""
@@ -22144,7 +23862,7 @@ msgid "Dialog"
msgstr ""
#: scene/gui/dialogs.cpp
-msgid "Hide On Ok"
+msgid "Hide On OK"
msgstr ""
#: scene/gui/dialogs.cpp scene/gui/label.cpp
@@ -22240,7 +23958,7 @@ msgid "Timers"
msgstr "ÄŒas"
#: scene/gui/item_list.cpp scene/gui/popup_menu.cpp scene/gui/tree.cpp
-msgid "Incremental Search Max Interval (msec)"
+msgid "Incremental Search Max Interval Msec"
msgstr ""
#: scene/gui/item_list.cpp scene/gui/tree.cpp
@@ -22805,6 +24523,26 @@ msgstr "NaÄin Vrtenja"
msgid "Nine Patch Stretch"
msgstr "Animacijski Gradnik"
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Left"
+msgstr "Izberi NaÄin"
+
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Top"
+msgstr "Izberi NaÄin"
+
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Right"
+msgstr "Izberi NaÄin"
+
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Bottom"
+msgstr "Izberi NaÄin"
+
#: scene/gui/tree.cpp
msgid "Custom Minimum Height"
msgstr ""
@@ -22842,8 +24580,9 @@ msgid "Paused"
msgstr ""
#: scene/gui/video_player.cpp
-msgid "Buffering (msec)"
-msgstr ""
+#, fuzzy
+msgid "Buffering Msec"
+msgstr "Mrežni Korak:"
#: scene/gui/video_player.cpp
#, fuzzy
@@ -23180,6 +24919,22 @@ msgid "Shadow Atlas"
msgstr ""
#: scene/main/viewport.cpp
+msgid "Quad 0"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 1"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 2"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 3"
+msgstr ""
+
+#: scene/main/viewport.cpp
#, fuzzy
msgid "Canvas Transform"
msgstr "Preoblikovanje"
@@ -23194,6 +24949,11 @@ msgid "Tooltip Delay (sec)"
msgstr ""
#: scene/register_scene_types.cpp
+#, fuzzy
+msgid "Swap OK Cancel"
+msgstr "PrekliÄi"
+
+#: scene/register_scene_types.cpp
msgid "Use hiDPI"
msgstr ""
@@ -23208,21 +24968,6 @@ msgid "Custom Font"
msgstr "Gradnik Prehod"
#: scene/resources/audio_stream_sample.cpp
-#, fuzzy
-msgid "Loop Mode"
-msgstr "NaÄin Premika"
-
-#: scene/resources/audio_stream_sample.cpp
-#, fuzzy
-msgid "Loop Begin"
-msgstr "NaÄin Premika"
-
-#: scene/resources/audio_stream_sample.cpp
-#, fuzzy
-msgid "Loop End"
-msgstr "NaÄin Premika"
-
-#: scene/resources/audio_stream_sample.cpp
#: servers/audio/effects/audio_stream_generator.cpp servers/audio_server.cpp
#, fuzzy
msgid "Mix Rate"
@@ -23278,6 +25023,17 @@ msgid "Extra Spacing"
msgstr "Opis:"
#: scene/resources/dynamic_font.cpp
+#, fuzzy
+msgid "Char"
+msgstr "Veljavni znaki:"
+
+#: scene/resources/dynamic_font.cpp scene/resources/world.cpp
+#: scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Space"
+msgstr "Klici"
+
+#: scene/resources/dynamic_font.cpp
msgid "Font"
msgstr ""
@@ -23503,6 +25259,43 @@ msgid "Glow"
msgstr ""
#: scene/resources/environment.cpp
+#, fuzzy
+msgid "Levels"
+msgstr "Razvajalci"
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "1"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "2"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "3"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "4"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "5"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "6"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "7"
+msgstr ""
+
+#: scene/resources/environment.cpp
msgid "Bloom"
msgstr ""
@@ -23595,9 +25388,66 @@ msgid "Next Pass"
msgstr "Naslednji zavihek"
#: scene/resources/material.cpp
+msgid "Use Shadow To Opacity"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Unshaded"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Vertex Lighting"
+msgstr "Smeri"
+
+#: scene/resources/material.cpp
+msgid "No Depth Test"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Use Point Size"
+msgstr "Zaženi Skripto"
+
+#: scene/resources/material.cpp
+msgid "World Triplanar"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Fixed Size"
+msgstr "Zaženi Skripto"
+
+#: scene/resources/material.cpp
+msgid "Albedo Tex Force sRGB"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Do Not Receive Shadows"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Disable Ambient Light"
+msgstr "NaÄin Vrtenja"
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Ensure Correct Normals"
+msgstr "Preoblikovanje Dialoga..."
+
+#: scene/resources/material.cpp
msgid "Vertex Color"
msgstr ""
+#: scene/resources/material.cpp
+msgid "Use As Albedo"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Is sRGB"
+msgstr ""
+
#: scene/resources/material.cpp servers/visual_server.cpp
#, fuzzy
msgid "Parameters"
@@ -23634,6 +25484,11 @@ msgid "Billboard Mode"
msgstr "NaÄin Obsega (R)"
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Billboard Keep Scale"
+msgstr "NaÄin Obsega (R)"
+
+#: scene/resources/material.cpp
msgid "Grow"
msgstr ""
@@ -23643,6 +25498,10 @@ msgid "Grow Amount"
msgstr "KoliÄina:"
#: scene/resources/material.cpp
+msgid "Use Alpha Scissor"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Alpha Scissor Threshold"
msgstr ""
@@ -23674,10 +25533,20 @@ msgid "Metallic Specular"
msgstr ""
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Metallic Texture"
+msgstr "Odstrani Predlogo"
+
+#: scene/resources/material.cpp
msgid "Metallic Texture Channel"
msgstr ""
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Roughness Texture"
+msgstr "Odstrani Predlogo"
+
+#: scene/resources/material.cpp
msgid "Roughness Texture Channel"
msgstr ""
@@ -23695,6 +25564,16 @@ msgid "Emission Operator"
msgstr ""
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Emission On UV2"
+msgstr "Trenutna RazliÄica:"
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Emission Texture"
+msgstr "Odstrani Predlogo"
+
+#: scene/resources/material.cpp
msgid "NormalMap"
msgstr ""
@@ -23708,6 +25587,11 @@ msgstr ""
#: scene/resources/material.cpp
#, fuzzy
+msgid "Rim Texture"
+msgstr "Odstrani Predlogo"
+
+#: scene/resources/material.cpp
+#, fuzzy
msgid "Clearcoat"
msgstr "PoÄisti"
@@ -23717,15 +25601,28 @@ msgid "Clearcoat Gloss"
msgstr "Zaženi Prizor po Meri"
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Clearcoat Texture"
+msgstr "ÄŒlani"
+
+#: scene/resources/material.cpp
msgid "Anisotropy"
msgstr ""
#: scene/resources/material.cpp
+msgid "Anisotropy Flowmap"
+msgstr ""
+
+#: scene/resources/material.cpp
#, fuzzy
msgid "Ambient Occlusion"
msgstr "Uredi Poligon"
#: scene/resources/material.cpp
+msgid "On UV2"
+msgstr ""
+
+#: scene/resources/material.cpp
#, fuzzy
msgid "Texture Channel"
msgstr "NaÄin Obsega (R)"
@@ -23763,6 +25660,11 @@ msgstr "Prehod"
#: scene/resources/material.cpp
#, fuzzy
+msgid "Transmission Texture"
+msgstr "Prehod"
+
+#: scene/resources/material.cpp
+#, fuzzy
msgid "Refraction"
msgstr "OÅ¡tevilÄenja:"
@@ -23779,6 +25681,10 @@ msgid "UV1"
msgstr ""
#: scene/resources/material.cpp
+msgid "Triplanar"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Triplanar Sharpness"
msgstr ""
@@ -23984,6 +25890,16 @@ msgstr "ÄŒlani"
msgid "Point Count"
msgstr "Dodaj Vnos"
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Scale Random"
+msgstr "Razmerje Obsega:"
+
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Scale Curve"
+msgstr "Uredi krivuljo vozliÅ¡Äa"
+
#: scene/resources/physics_material.cpp
msgid "Rough"
msgstr ""
@@ -24044,10 +25960,6 @@ msgid "A"
msgstr ""
#: scene/resources/shader.cpp
-msgid "Code"
-msgstr ""
-
-#: scene/resources/shader.cpp
#, fuzzy
msgid "Custom Defines"
msgstr "Zaženi Prizor po Meri"
@@ -24142,15 +26054,6 @@ msgstr ""
#: scene/resources/texture.cpp
#, fuzzy
-msgid "Storage"
-msgstr "Shranjevanje Datoteke:"
-
-#: scene/resources/texture.cpp
-msgid "Lossy Quality"
-msgstr ""
-
-#: scene/resources/texture.cpp
-#, fuzzy
msgid "Load Path"
msgstr "Napake pri Nalaganju"
@@ -24278,11 +26181,6 @@ msgstr "Neveljaven vir za shader."
msgid "Fallback Environment"
msgstr ""
-#: scene/resources/world.cpp scene/resources/world_2d.cpp
-#, fuzzy
-msgid "Space"
-msgstr "Klici"
-
#: scene/resources/world.cpp
#, fuzzy
msgid "Scenario"
@@ -24359,10 +26257,37 @@ msgstr ""
msgid "Wet"
msgstr ""
-#: servers/audio/effects/audio_effect_compressor.cpp
-msgid "Threshold"
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "Voice"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+msgid "Delay (ms)"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_phaser.cpp
+msgid "Rate Hz"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#, fuzzy
+msgid "Depth (ms)"
+msgstr "Globina"
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+msgid "Level dB"
msgstr ""
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+#: servers/audio/effects/audio_effect_panner.cpp
+#, fuzzy
+msgid "Pan"
+msgstr "Pakiranje"
+
#: servers/audio/effects/audio_effect_compressor.cpp
#: servers/audio/effects/audio_effect_filter.cpp
msgid "Gain"
@@ -24385,20 +26310,6 @@ msgid "Tap 1"
msgstr ""
#: servers/audio/effects/audio_effect_delay.cpp
-msgid "Delay (ms)"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_delay.cpp
-msgid "Level dB"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_delay.cpp
-#: servers/audio/effects/audio_effect_panner.cpp
-#, fuzzy
-msgid "Pan"
-msgstr "Pakiranje"
-
-#: servers/audio/effects/audio_effect_delay.cpp
msgid "Tap 2"
msgstr ""
@@ -24458,10 +26369,6 @@ msgstr ""
msgid "Range Max Hz"
msgstr ""
-#: servers/audio/effects/audio_effect_phaser.cpp
-msgid "Rate Hz"
-msgstr ""
-
#: servers/audio/effects/audio_effect_pitch_shift.cpp
msgid "Oversampling"
msgstr ""
@@ -24477,7 +26384,7 @@ msgid "Predelay"
msgstr ""
#: servers/audio/effects/audio_effect_reverb.cpp
-msgid "(msec)"
+msgid "Msec"
msgstr ""
#: servers/audio/effects/audio_effect_reverb.cpp
diff --git a/editor/translations/sq.po b/editor/translations/sq.po
index 0b55838a8b..4c9b09e48e 100644
--- a/editor/translations/sq.po
+++ b/editor/translations/sq.po
@@ -18,7 +18,7 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 3.6-dev\n"
-#: core/bind/core_bind.cpp
+#: core/bind/core_bind.cpp main/main.cpp
msgid "Tablet Driver"
msgstr ""
@@ -117,8 +117,8 @@ msgstr "Pozicioni i Dokut"
#: core/bind/core_bind.cpp editor/editor_settings.cpp main/main.cpp
#: modules/gdscript/gdscript_editor.cpp modules/gridmap/grid_map.cpp
#: modules/mono/csharp_script.cpp modules/visual_script/visual_script_nodes.cpp
-#: scene/2d/tile_map.cpp scene/3d/camera.cpp scene/gui/control.cpp
-#: scene/gui/graph_edit.cpp scene/main/viewport.cpp
+#: scene/2d/tile_map.cpp scene/3d/camera.cpp scene/3d/light.cpp
+#: scene/gui/control.cpp scene/gui/graph_edit.cpp scene/main/viewport.cpp
#: scene/resources/dynamic_font.cpp scene/resources/navigation_mesh.cpp
#: scene/resources/primitive_meshes.cpp scene/resources/sky.cpp
#: scene/resources/style_box.cpp scene/resources/texture.cpp
@@ -218,8 +218,7 @@ msgid "Data"
msgstr ""
#: core/io/file_access_network.cpp core/register_core_types.cpp
-#: editor/editor_settings.cpp editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp main/main.cpp
+#: editor/editor_settings.cpp main/main.cpp
#: modules/gdscript/language_server/gdscript_language_server.cpp
#, fuzzy
msgid "Network"
@@ -499,9 +498,10 @@ msgstr "Ngarko Gabimet"
msgid "Relative"
msgstr ""
-#: core/os/input_event.cpp scene/2d/camera_2d.cpp
-#: scene/3d/interpolated_camera.cpp scene/animation/animation_player.cpp
-#: scene/resources/environment.cpp
+#: core/os/input_event.cpp scene/2d/camera_2d.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/interpolated_camera.cpp
+#: scene/animation/animation_player.cpp scene/resources/environment.cpp
+#: scene/resources/particles_material.cpp
msgid "Speed"
msgstr ""
@@ -548,8 +548,9 @@ msgstr "Sinkronizo Ndryshimet e Shkrimit"
msgid "Pitch"
msgstr ""
-#: core/os/input_event.cpp scene/2d/physics_body_2d.cpp
-#: scene/3d/physics_body.cpp
+#: core/os/input_event.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/physics_body_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/3d/physics_body.cpp scene/resources/particles_material.cpp
msgid "Velocity"
msgstr ""
@@ -566,6 +567,8 @@ msgid "Controller Value"
msgstr ""
#: core/project_settings.cpp editor/editor_node.cpp main/main.cpp
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/windows/export/export.cpp
#, fuzzy
msgid "Application"
msgstr "Animacionet:"
@@ -583,13 +586,16 @@ msgstr "Opsionet e Projektit"
#: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp
#: editor/editor_plugin_settings.cpp editor/editor_profiler.cpp
#: editor/project_manager.cpp editor/settings_config_dialog.cpp
-#: modules/gdnative/nativescript/nativescript.cpp scene/2d/area_2d.cpp
-#: scene/3d/area.cpp scene/main/node.cpp
+#: modules/gdnative/nativescript/nativescript.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/osx/export/export.cpp scene/2d/area_2d.cpp scene/3d/area.cpp
+#: scene/main/node.cpp
msgid "Name"
msgstr "Emri"
#: core/project_settings.cpp editor/editor_help.cpp
-#: modules/visual_script/visual_script_nodes.cpp
+#: modules/visual_script/visual_script_nodes.cpp platform/uwp/export/export.cpp
+#: platform/windows/export/export.cpp
#, fuzzy
msgid "Description"
msgstr "Përshkrimi:"
@@ -627,7 +633,7 @@ msgid "Custom User Dir Name"
msgstr ""
#: core/project_settings.cpp editor/animation_track_editor.cpp
-#: editor/editor_audio_buses.cpp servers/audio_server.cpp
+#: editor/editor_audio_buses.cpp main/main.cpp servers/audio_server.cpp
msgid "Audio"
msgstr "Audio"
@@ -789,10 +795,13 @@ msgstr "Filtrat:"
msgid "Sharpen Intensity"
msgstr ""
-#: core/project_settings.cpp editor/editor_node.cpp editor/editor_settings.cpp
-#: editor/plugins/script_editor_plugin.cpp editor/project_export.cpp
-#: main/main.cpp modules/gdscript/gdscript.cpp
-#: modules/visual_script/visual_script.cpp scene/3d/room_manager.cpp
+#: core/project_settings.cpp editor/editor_export.cpp editor/editor_node.cpp
+#: editor/editor_settings.cpp editor/plugins/script_editor_plugin.cpp
+#: editor/project_export.cpp main/main.cpp modules/gdscript/gdscript.cpp
+#: modules/visual_script/visual_script.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp scene/3d/room_manager.cpp
#: scene/main/scene_tree.cpp scene/resources/shape_2d.cpp
#: servers/visual_server.cpp
msgid "Debug"
@@ -1022,6 +1031,7 @@ msgid "Subsurface Scattering"
msgstr ""
#: drivers/gles3/rasterizer_scene_gles3.cpp
+#: editor/import/resource_importer_texture.cpp
#: editor/plugins/spatial_editor_plugin.cpp modules/gltf/gltf_node.cpp
#: modules/gridmap/grid_map.cpp scene/2d/cpu_particles_2d.cpp
#: scene/2d/node_2d.cpp scene/2d/parallax_layer.cpp scene/2d/polygon_2d.cpp
@@ -1321,6 +1331,7 @@ msgid "Editors"
msgstr "Editor"
#: editor/animation_track_editor.cpp editor/editor_settings.cpp
+#: editor/import/resource_importer_scene.cpp
#: editor/plugins/animation_player_editor_plugin.cpp editor/scene_tree_dock.cpp
#: scene/2d/animated_sprite.cpp scene/2d/cpu_particles_2d.cpp
#: scene/2d/sprite.cpp scene/3d/cpu_particles.cpp scene/3d/sprite_3d.cpp
@@ -1539,14 +1550,14 @@ msgstr "Vlera e hapit për animacionin."
msgid "Seconds"
msgstr ""
-#: editor/animation_track_editor.cpp
+#: editor/animation_track_editor.cpp editor/import/resource_importer_scene.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp main/main.cpp
#: scene/resources/texture.cpp
msgid "FPS"
msgstr ""
#: editor/animation_track_editor.cpp editor/editor_plugin_settings.cpp
-#: editor/editor_resource_picker.cpp
+#: editor/editor_resource_picker.cpp editor/import/resource_importer_wav.cpp
#: editor/plugins/polygon_2d_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
@@ -2537,7 +2548,9 @@ msgid "Remove Autoload"
msgstr "Hiq Autoload-in"
#: editor/editor_autoload_settings.cpp editor/editor_plugin_settings.cpp
-#: modules/gdscript/gdscript.cpp scene/2d/polygon_2d.cpp scene/3d/area.cpp
+#: modules/gdscript/gdscript.cpp platform/android/export/export_plugin.cpp
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#: scene/2d/polygon_2d.cpp scene/3d/area.cpp scene/3d/physics_joint.cpp
#: scene/3d/reflection_probe.cpp scene/main/canvas_layer.cpp
#: scene/resources/material.cpp servers/visual_server.cpp
msgid "Enable"
@@ -2711,6 +2724,58 @@ msgstr ""
#: editor/editor_export.cpp platform/android/export/export_plugin.cpp
#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Custom Template"
+msgstr "Editor"
+
+#: editor/editor_export.cpp editor/project_export.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp
+msgid "Release"
+msgstr ""
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Binary Format"
+msgstr "Konstantet"
+
+#: editor/editor_export.cpp
+msgid "64 Bits"
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Embed PCK"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Texture Format"
+msgstr "Ndrysho Mënyrën"
+
+#: editor/editor_export.cpp
+msgid "BPTC"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "S3TC"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "ETC"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "ETC2"
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "No BPTC Fallbacks"
+msgstr ""
+
+#: editor/editor_export.cpp platform/android/export/export_plugin.cpp
+#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
msgid "Custom debug template not found."
msgstr "Shablloni 'Custom debug' nuk u gjet."
@@ -2904,6 +2969,7 @@ msgid "Make Current"
msgstr "(Aktual)"
#: editor/editor_feature_profile.cpp editor/editor_node.cpp
+#: editor/import/resource_importer_scene.cpp
#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
msgid "Import"
msgstr "Importo"
@@ -3038,8 +3104,11 @@ msgstr "Sukses!"
msgid "Display Mode"
msgstr "Luaj Skenën"
-#: editor/editor_file_dialog.cpp main/main.cpp modules/csg/csg_shape.cpp
-#: modules/visual_script/visual_script_nodes.cpp
+#: editor/editor_file_dialog.cpp
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+#: editor/import/resource_importer_wav.cpp main/main.cpp
+#: modules/csg/csg_shape.cpp modules/visual_script/visual_script_nodes.cpp
#: modules/visual_script/visual_script_yield_nodes.cpp scene/2d/light_2d.cpp
#: scene/2d/physics_body_2d.cpp scene/2d/tile_map.cpp
#: scene/3d/baked_lightmap.cpp scene/3d/light.cpp scene/3d/physics_body.cpp
@@ -3180,7 +3249,9 @@ msgstr "Duke (Ri)Importuar Asetet"
msgid "Reimport Missing Imported Files"
msgstr ""
-#: editor/editor_help.cpp
+#: editor/editor_help.cpp scene/2d/camera_2d.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/resources/dynamic_font.cpp
+#: scene/resources/style_box.cpp
msgid "Top"
msgstr "Siper"
@@ -3235,6 +3306,7 @@ msgid "Fonts"
msgstr ""
#: editor/editor_help.cpp editor/plugins/theme_editor_plugin.cpp
+#: platform/iphone/export/export.cpp
msgid "Icons"
msgstr ""
@@ -3409,7 +3481,9 @@ msgstr ""
msgid "Pin value [Disabled because '%s' is editor-only]"
msgstr ""
-#: editor/editor_inspector.cpp editor/scene_tree_dock.cpp
+#: editor/editor_inspector.cpp
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+#: editor/scene_tree_dock.cpp
#: modules/visual_script/visual_script_func_nodes.cpp
#: modules/visual_script/visual_script_nodes.cpp
#: modules/visual_script/visual_script_property_selector.cpp
@@ -3752,6 +3826,16 @@ msgid "Quick Open Script..."
msgstr "Hap Shkrimin Shpejt..."
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Save & Reload"
+msgstr "Ruaj & Rifillo"
+
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Save changes to '%s' before reloading?"
+msgstr "Ruaji ndryshimet në '%s' para se ta mbyllësh?"
+
+#: editor/editor_node.cpp
msgid "Save & Close"
msgstr "Ruaj & Mbyll"
@@ -3866,6 +3950,11 @@ msgid "Open Project Manager?"
msgstr "Hap Menaxherin e Projekteve?"
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Save changes to the following scene(s) before reloading?"
+msgstr "Ruaj ndryshimet nga skenat e mëposhtme përpara se të dalësh?"
+
+#: editor/editor_node.cpp
msgid "Save & Quit"
msgstr "Ruaj & Dil"
@@ -4146,8 +4235,8 @@ msgstr "Përditëso Ndryshimet"
#: editor/editor_node.cpp
#, fuzzy
-msgid "Translate Properties"
-msgstr "Vetitë"
+msgid "Localize Settings"
+msgstr "Duke u lidhur..."
#: editor/editor_node.cpp
#, fuzzy
@@ -4164,8 +4253,8 @@ msgstr "Inspektori"
#: editor/editor_node.cpp
#, fuzzy
-msgid "Capitalize Properties"
-msgstr "Vetitë"
+msgid "Default Property Name Style"
+msgstr "E Parazgjedhur"
#: editor/editor_node.cpp
msgid "Default Float Step"
@@ -4771,7 +4860,9 @@ msgstr "Shtojcat e Instaluara:"
msgid "Update"
msgstr "Përditëso"
-#: editor/editor_plugin_settings.cpp
+#: editor/editor_plugin_settings.cpp platform/android/export/export_plugin.cpp
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp
#, fuzzy
msgid "Version"
msgstr "Versioni:"
@@ -5773,7 +5864,7 @@ msgstr ""
msgid "Rect Custom Position"
msgstr "Pozicioni i Dokut"
-#: editor/editor_settings.cpp
+#: editor/editor_settings.cpp platform/android/export/export_plugin.cpp
msgid "Screen"
msgstr ""
@@ -5799,6 +5890,19 @@ msgid "Editor SSL Certificates"
msgstr "Opsionet e Editorit"
#: editor/editor_settings.cpp
+msgid "HTTP Proxy"
+msgstr ""
+
+#: editor/editor_settings.cpp
+msgid "Host"
+msgstr ""
+
+#: editor/editor_settings.cpp editor/fileserver/editor_file_server.cpp
+#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp
+msgid "Port"
+msgstr ""
+
+#: editor/editor_settings.cpp
msgid "Project Manager"
msgstr ""
@@ -5841,7 +5945,8 @@ msgstr ""
msgid "String Color"
msgstr "Duke Ruajtur Skedarin:"
-#: editor/editor_settings.cpp
+#: editor/editor_settings.cpp platform/javascript/export/export.cpp
+#: platform/uwp/export/export.cpp
msgid "Background Color"
msgstr ""
@@ -6007,22 +6112,6 @@ msgid "Starting the download..."
msgstr ""
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "HTTP Proxy"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Host"
-msgstr ""
-
-#: editor/export_template_manager.cpp editor/fileserver/editor_file_server.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp main/main.cpp
-#: modules/mono/mono_gd/gd_mono.cpp
-msgid "Port"
-msgstr ""
-
-#: editor/export_template_manager.cpp
#, fuzzy
msgid "Error requesting URL:"
msgstr "Gabim duke kërkuar url: "
@@ -6292,6 +6381,7 @@ msgstr ""
#: editor/fileserver/editor_file_server.cpp
#: editor/plugins/version_control_editor_plugin.cpp
+#: platform/uwp/export/export.cpp platform/windows/export/export.cpp
msgid "Password"
msgstr ""
@@ -6681,6 +6771,115 @@ msgstr ""
msgid "Use Ambient"
msgstr ""
+#: editor/import/resource_importer_bitmask.cpp
+#, fuzzy
+msgid "Create From"
+msgstr "Krijo një Folder"
+
+#: editor/import/resource_importer_bitmask.cpp
+#: servers/audio/effects/audio_effect_compressor.cpp
+msgid "Threshold"
+msgstr ""
+
+#: editor/import/resource_importer_csv_translation.cpp
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_scene.cpp
+#: editor/import/resource_importer_texture.cpp
+#: editor/import/resource_importer_wav.cpp scene/3d/gi_probe.cpp
+#, fuzzy
+msgid "Compress"
+msgstr "Komponentët"
+
+#: editor/import/resource_importer_csv_translation.cpp
+msgid "Delimiter"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+msgid "No BPTC If RGB"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/sprite_3d.cpp
+#: scene/resources/material.cpp scene/resources/particles_material.cpp
+#: scene/resources/texture.cpp
+msgid "Flags"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/animation/tween.cpp
+#: scene/resources/texture.cpp
+msgid "Repeat"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/2d/light_2d.cpp
+#: scene/gui/control.cpp scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Filter"
+msgstr "Filtrat:"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Mipmaps"
+msgstr "Sinjalet"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+msgid "Anisotropic"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+msgid "sRGB"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+msgid "Slices"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
+#: scene/resources/style_box.cpp
+#, fuzzy
+msgid "Horizontal"
+msgstr "Krijo një Folder"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
+#: scene/resources/style_box.cpp
+#, fuzzy
+msgid "Vertical"
+msgstr "Vetitë:"
+
+#: editor/import/resource_importer_obj.cpp
+#, fuzzy
+msgid "Generate Tangents"
+msgstr "Fut një Pikë"
+
+#: editor/import/resource_importer_obj.cpp
+#, fuzzy
+msgid "Scale Mesh"
+msgstr "Krijo %s të ri"
+
+#: editor/import/resource_importer_obj.cpp
+msgid "Offset Mesh"
+msgstr ""
+
+#: editor/import/resource_importer_obj.cpp
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Octahedral Compression"
+msgstr "Versioni Aktual:"
+
+#: editor/import/resource_importer_obj.cpp
+#, fuzzy
+msgid "Optimize Mesh Flags"
+msgstr "Madhësia: "
+
#: editor/import/resource_importer_scene.cpp
#, fuzzy
msgid "Import as Single Scene"
@@ -6722,6 +6921,151 @@ msgstr "Importo si Skena të Shumfishta"
msgid "Import as Multiple Scenes+Materials"
msgstr "Importo si Skena+Materiale të Shumfishta"
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Nodes"
+msgstr "Nyje"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Root Type"
+msgstr "Tipi i Anëtarit"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Root Name"
+msgstr "Emri i Nyjes:"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Root Scale"
+msgstr "Shfaqi të Gjitha"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Custom Script"
+msgstr "Dyfisho Nyjet"
+
+#: editor/import/resource_importer_scene.cpp scene/resources/texture.cpp
+#, fuzzy
+msgid "Storage"
+msgstr "Duke Ruajtur Skedarin:"
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Use Legacy Names"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+msgid "Materials"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Location"
+msgstr "Animacionet:"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Keep On Reimport"
+msgstr "Ri-importo"
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+msgid "Meshes"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Ensure Tangents"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Light Baking"
+msgstr "Metoda Pa Shpërqëndrime"
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Lightmap Texel Size"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+msgid "Skins"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Use Named Skins"
+msgstr "Sinjalet"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "External Files"
+msgstr "Hap një Skedar"
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Store In Subdir"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Filter Script"
+msgstr "Filtro vetitë."
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Keep Custom Tracks"
+msgstr "Binari i Transformimeve 3D"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Optimizer"
+msgstr "Përmirëso"
+
+#: editor/import/resource_importer_scene.cpp main/main.cpp
+#: modules/mono/mono_gd/gd_mono.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp scene/2d/camera_2d.cpp scene/2d/light_2d.cpp
+#: scene/2d/navigation_polygon.cpp scene/2d/ray_cast_2d.cpp scene/2d/sprite.cpp
+#: scene/2d/y_sort.cpp scene/3d/audio_stream_player_3d.cpp
+#: scene/3d/baked_lightmap.cpp scene/3d/interpolated_camera.cpp
+#: scene/3d/light.cpp scene/3d/navigation_mesh_instance.cpp
+#: scene/3d/physics_joint.cpp scene/3d/ray_cast.cpp scene/3d/sprite_3d.cpp
+#: scene/gui/graph_edit.cpp scene/gui/rich_text_label.cpp
+#: scene/resources/curve.cpp scene/resources/environment.cpp
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Enabled"
+msgstr "Lejo"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Max Linear Error"
+msgstr "Pasqyrë"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Max Angular Error"
+msgstr "Pasqyrë"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Max Angle"
+msgstr "Vlerë e Re:"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Remove Unused Tracks"
+msgstr "Fshi një Pllakë"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Clips"
+msgstr "Klipe Audio:"
+
+#: editor/import/resource_importer_scene.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/particles_2d.cpp scene/3d/area.cpp scene/3d/cpu_particles.cpp
+#: scene/3d/particles.cpp scene/resources/environment.cpp
+msgid "Amount"
+msgstr ""
+
#: editor/import/resource_importer_scene.cpp
#: editor/plugins/mesh_library_editor_plugin.cpp
msgid "Import Scene"
@@ -6763,12 +7107,144 @@ msgstr ""
msgid "Saving..."
msgstr "Duke Ruajtur..."
+#: editor/import/resource_importer_texture.cpp scene/resources/texture.cpp
+msgid "Lossy Quality"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "HDR Mode"
+msgstr "Ndrysho Mënyrën"
+
+#: editor/import/resource_importer_texture.cpp
+msgid "BPTC LDR"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/mesh_instance_2d.cpp scene/2d/multimesh_instance_2d.cpp
+#: scene/2d/particles_2d.cpp scene/2d/sprite.cpp scene/resources/style_box.cpp
+msgid "Normal Map"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Process"
+msgstr "Versioni Aktual:"
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Fix Alpha Border"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Premult Alpha"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Hdr As Srgb"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Invert Color"
+msgstr "Hiq Artikullin"
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Normal Map Invert Y"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
+#: scene/audio/audio_stream_player.cpp scene/gui/video_player.cpp
+msgid "Stream"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Size Limit"
+msgstr "Madhësia: "
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Detect 3D"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "SVG"
+msgstr ""
+
#: editor/import/resource_importer_texture.cpp
msgid ""
"Warning, no suitable PC VRAM compression enabled in Project Settings. This "
"texture will not display correctly on PC."
msgstr ""
+#: editor/import/resource_importer_texture_atlas.cpp
+#, fuzzy
+msgid "Atlas File"
+msgstr "%s i Ri"
+
+#: editor/import/resource_importer_texture_atlas.cpp
+#, fuzzy
+msgid "Import Mode"
+msgstr "Importo"
+
+#: editor/import/resource_importer_texture_atlas.cpp
+msgid "Crop To Region"
+msgstr ""
+
+#: editor/import/resource_importer_texture_atlas.cpp
+msgid "Trim Alpha Border From Region"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp scene/2d/physics_body_2d.cpp
+msgid "Force"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+msgid "8 Bit"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp main/main.cpp
+#: modules/mono/editor/csharp_project.cpp modules/mono/mono_gd/gd_mono.cpp
+msgid "Mono"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+#, fuzzy
+msgid "Max Rate"
+msgstr "Vlerë e Re:"
+
+#: editor/import/resource_importer_wav.cpp
+#, fuzzy
+msgid "Max Rate Hz"
+msgstr "Vlerë e Re:"
+
+#: editor/import/resource_importer_wav.cpp
+msgid "Trim"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+#, fuzzy
+msgid "Normalize"
+msgstr "Ndrysho Tipin e %s"
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+#, fuzzy
+msgid "Loop Mode"
+msgstr "Ndrysho Mënyrën"
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+#, fuzzy
+msgid "Loop Begin"
+msgstr "Ndrysho Mënyrën"
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+#, fuzzy
+msgid "Loop End"
+msgstr "Ndrysho Mënyrën"
+
#: editor/import_defaults_editor.cpp
#, fuzzy
msgid "Select Importer"
@@ -6847,6 +7323,28 @@ msgstr "Dështoi të ngarkojë resursin."
#: editor/inspector_dock.cpp
#, fuzzy
+msgid "Property Name Style"
+msgstr "Binari i Vetive"
+
+#: editor/inspector_dock.cpp scene/gui/color_picker.cpp
+msgid "Raw"
+msgstr ""
+
+#: editor/inspector_dock.cpp
+#, fuzzy
+msgid "Capitalized"
+msgstr "Vetitë"
+
+#: editor/inspector_dock.cpp
+msgid "Localized"
+msgstr ""
+
+#: editor/inspector_dock.cpp
+msgid "Localization not available for current language."
+msgstr ""
+
+#: editor/inspector_dock.cpp
+#, fuzzy
msgid "Copy Properties"
msgstr "Vetitë"
@@ -7896,18 +8394,24 @@ msgid "License (Z-A)"
msgstr "Liçensa"
#: editor/plugins/asset_library_editor_plugin.cpp
+msgctxt "Pagination"
msgid "First"
msgstr ""
-#: editor/plugins/asset_library_editor_plugin.cpp scene/gui/control.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgctxt "Pagination"
msgid "Previous"
-msgstr ""
+msgstr "Tabi i mëparshëm"
-#: editor/plugins/asset_library_editor_plugin.cpp scene/gui/control.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgctxt "Pagination"
msgid "Next"
-msgstr ""
+msgstr "Tabi tjetër"
#: editor/plugins/asset_library_editor_plugin.cpp
+msgctxt "Pagination"
msgid "Last"
msgstr ""
@@ -8151,19 +8655,19 @@ msgid ""
"margins."
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Top Left"
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Top Right"
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Bottom Right"
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Bottom Left"
msgstr ""
@@ -8877,6 +9381,19 @@ msgstr ""
msgid "Gradient Edited"
msgstr ""
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+msgid "Swap GradientTexture2D Fill Points"
+msgstr ""
+
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+msgid "Swap Gradient Fill Points"
+msgstr ""
+
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+#, fuzzy
+msgid "Toggle Grid Snap"
+msgstr "Ndrysho Mënyrën"
+
#: editor/plugins/item_list_editor_plugin.cpp
msgid "Item %d"
msgstr ""
@@ -9094,9 +9611,9 @@ msgid ""
"%s"
msgstr ""
-#: editor/plugins/mesh_library_editor_plugin.cpp modules/gridmap/grid_map.cpp
+#: editor/plugins/mesh_library_editor_plugin.cpp
#, fuzzy
-msgid "Mesh Library"
+msgid "MeshLibrary"
msgstr "LibrariaMesh..."
#: editor/plugins/mesh_library_editor_plugin.cpp
@@ -10089,8 +10606,8 @@ msgstr "Lidhë me Nyjen:"
msgid "Source"
msgstr "Resursi"
-#: editor/plugins/script_text_editor.cpp scene/3d/interpolated_camera.cpp
-#: scene/animation/skeleton_ik.cpp
+#: editor/plugins/script_text_editor.cpp platform/uwp/export/export.cpp
+#: scene/3d/interpolated_camera.cpp scene/animation/skeleton_ik.cpp
msgid "Target"
msgstr ""
@@ -11079,7 +11596,9 @@ msgstr ""
#: editor/plugins/sprite_frames_editor_plugin.cpp
#: modules/gltf/gltf_animation.cpp modules/minimp3/audio_stream_mp3.cpp
-#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp scene/2d/path_2d.cpp
+#: modules/minimp3/resource_importer_mp3.cpp
+#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp
+#: modules/stb_vorbis/resource_importer_ogg_vorbis.cpp scene/2d/path_2d.cpp
#: scene/3d/path.cpp scene/resources/animation.cpp scene/resources/material.cpp
msgid "Loop"
msgstr ""
@@ -11999,8 +12518,9 @@ msgstr ""
msgid "Priority"
msgstr ""
-#: editor/plugins/tile_set_editor_plugin.cpp main/main.cpp scene/gui/button.cpp
-#: scene/gui/item_list.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp main/main.cpp
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#: scene/gui/button.cpp scene/gui/item_list.cpp
msgid "Icon"
msgstr ""
@@ -13325,10 +13845,6 @@ msgid ""
msgstr ""
#: editor/project_export.cpp
-msgid "Release"
-msgstr ""
-
-#: editor/project_export.cpp
msgid "Exporting All"
msgstr ""
@@ -15154,6 +15670,7 @@ msgid "Change AudioStreamPlayer3D Emission Angle"
msgstr ""
#: editor/spatial_editor_gizmos.cpp modules/gltf/gltf_node.cpp
+#: platform/osx/export/export.cpp
msgid "Camera"
msgstr ""
@@ -15422,7 +15939,8 @@ msgstr ""
msgid "Use Nvidia Rect Flicker Workaround"
msgstr ""
-#: main/main.cpp platform/uwp/os_uwp.cpp
+#: main/main.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp platform/uwp/os_uwp.cpp
#, fuzzy
msgid "Display"
msgstr "Shfaqi të Gjitha"
@@ -15478,19 +15996,6 @@ msgstr ""
msgid "Allowed"
msgstr ""
-#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp scene/2d/camera_2d.cpp
-#: scene/2d/light_2d.cpp scene/2d/navigation_polygon.cpp
-#: scene/2d/ray_cast_2d.cpp scene/2d/sprite.cpp scene/2d/y_sort.cpp
-#: scene/3d/audio_stream_player_3d.cpp scene/3d/baked_lightmap.cpp
-#: scene/3d/interpolated_camera.cpp scene/3d/light.cpp
-#: scene/3d/navigation_mesh_instance.cpp scene/3d/ray_cast.cpp
-#: scene/3d/sprite_3d.cpp scene/gui/graph_edit.cpp
-#: scene/gui/rich_text_label.cpp scene/resources/curve.cpp
-#: scene/resources/environment.cpp
-#, fuzzy
-msgid "Enabled"
-msgstr "Lejo"
-
#: main/main.cpp
msgid "Intended Usage"
msgstr ""
@@ -15520,13 +16025,14 @@ msgstr ""
msgid "Handheld"
msgstr ""
-#: main/main.cpp
+#: main/main.cpp platform/javascript/export/export.cpp
+#: platform/uwp/export/export.cpp
#, fuzzy
msgid "Orientation"
msgstr "Hap të Fundit"
#: main/main.cpp scene/gui/scroll_container.cpp scene/gui/text_edit.cpp
-#: scene/main/scene_tree.cpp
+#: scene/main/scene_tree.cpp scene/register_scene_types.cpp
#, fuzzy
msgid "Common"
msgstr "Komuniteti"
@@ -15568,7 +16074,7 @@ msgstr ""
#: main/main.cpp
#, fuzzy
-msgid "Frame Delay (msec)"
+msgid "Frame Delay Msec"
msgstr "Koha e Hapit (sek)"
#: main/main.cpp
@@ -15689,11 +16195,6 @@ msgstr ""
msgid "Tooltip Position Offset"
msgstr ""
-#: main/main.cpp modules/mono/editor/csharp_project.cpp
-#: modules/mono/mono_gd/gd_mono.cpp
-msgid "Mono"
-msgstr ""
-
#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp
msgid "Debugger Agent"
msgstr ""
@@ -16246,7 +16747,7 @@ msgstr ""
msgid "Intensity"
msgstr ""
-#: modules/gltf/gltf_light.cpp scene/2d/light_2d.cpp
+#: modules/gltf/gltf_light.cpp scene/2d/light_2d.cpp scene/3d/light.cpp
#, fuzzy
msgid "Range"
msgstr "Ndrysho"
@@ -16385,11 +16886,6 @@ msgstr ""
msgid "Use Named Skin Binds"
msgstr ""
-#: modules/gltf/gltf_state.cpp scene/3d/physics_joint.cpp
-#, fuzzy
-msgid "Nodes"
-msgstr "Nyje"
-
#: modules/gltf/gltf_state.cpp
msgid "Buffer Views"
msgstr ""
@@ -16399,14 +16895,6 @@ msgid "Accessors"
msgstr ""
#: modules/gltf/gltf_state.cpp
-msgid "Meshes"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp
-msgid "Materials"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp
#, fuzzy
msgid "Scene Name"
msgstr "Rruga Skenës:"
@@ -16422,15 +16910,11 @@ msgstr "Fshi Nyjen"
msgid "Textures"
msgstr ""
-#: modules/gltf/gltf_state.cpp
+#: modules/gltf/gltf_state.cpp platform/uwp/export/export.cpp
msgid "Images"
msgstr ""
#: modules/gltf/gltf_state.cpp
-msgid "Skins"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp
msgid "Cameras"
msgstr ""
@@ -16463,10 +16947,15 @@ msgstr ""
#: modules/gridmap/grid_map.cpp
#, fuzzy
+msgid "Mesh Library"
+msgstr "LibrariaMesh..."
+
+#: modules/gridmap/grid_map.cpp
+#, fuzzy
msgid "Physics Material"
msgstr "Hapi i Fizikës %"
-#: modules/gridmap/grid_map.cpp
+#: modules/gridmap/grid_map.cpp scene/3d/visual_instance.cpp
msgid "Use In Baked Light"
msgstr ""
@@ -16497,6 +16986,7 @@ msgstr "Fshi Nyjen"
#: modules/gridmap/grid_map.cpp scene/2d/collision_object_2d.cpp
#: scene/2d/tile_map.cpp scene/3d/collision_object.cpp scene/3d/soft_body.cpp
+#: scene/resources/material.cpp
msgid "Mask"
msgstr ""
@@ -16683,7 +17173,9 @@ msgid "Ultra Quality Ray Count"
msgstr ""
#: modules/minimp3/audio_stream_mp3.cpp
+#: modules/minimp3/resource_importer_mp3.cpp
#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp
+#: modules/stb_vorbis/resource_importer_ogg_vorbis.cpp
#, fuzzy
msgid "Loop Offset"
msgstr "Ndrysho Mënyrën"
@@ -17774,6 +18266,188 @@ msgid "The package must have at least one '.' separator."
msgstr ""
#: platform/android/export/export_plugin.cpp
+msgid "Use Custom Build"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Export Format"
+msgstr "Konstantet"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Keystore"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Debug User"
+msgstr "Rregullo (Debug)"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+msgid "Debug Password"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Release User"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Release Password"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "One Click Deploy"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Clear Previous Install"
+msgstr "Tabi i mëparshëm"
+
+#: platform/android/export/export_plugin.cpp scene/resources/shader.cpp
+msgid "Code"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Min SDK"
+msgstr "Madhësia: "
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Target SDK"
+msgstr "Fshi Nyjen"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Package"
+msgstr "Duke Paketuar"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Unique Name"
+msgstr "Emri i Nyjes:"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Signed"
+msgstr "Sinjalet"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Classify As Game"
+msgstr "Klasa:"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Retain Data On Uninstall"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Exclude From Recents"
+msgstr "Fshi Nyjen"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Graphics"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "OpenGL Debug"
+msgstr "Hap"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "XR Features"
+msgstr "Menaxho Shabllonet e Eksportit"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "XR Mode"
+msgstr "Luaj Skenën"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Hand Tracking"
+msgstr "Duke Paketuar"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Hand Tracking Frequency"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Passthrough"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Immersive Mode"
+msgstr "Ndrysho Mënyrën"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Support Small"
+msgstr "Importo"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Support Normal"
+msgstr "Importo"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Support Large"
+msgstr "Importo"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Support Xlarge"
+msgstr "Importo"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "User Data Backup"
+msgstr "Hap Folderin e të Dhënave të Editorit"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Allow"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Command Line"
+msgstr "Komuniteti"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Extra Args"
+msgstr "Përshkrimi i Klasës:"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "APK Expansion"
+msgstr "Versioni Aktual:"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Salt"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Public Key"
+msgstr "Dyfisho Key(s)"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Permissions"
+msgstr "Versioni Aktual:"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Custom Permissions"
+msgstr "Luaj Skenë të Zgjedhur"
+
+#: platform/android/export/export_plugin.cpp
msgid "Select device from the list"
msgstr "Zgjidh paisjen nga lista"
@@ -18073,6 +18747,175 @@ msgid "The character '%s' is not allowed in Identifier."
msgstr ""
#: platform/iphone/export/export.cpp
+msgid "App Store Team ID"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Provisioning Profile UUID Debug"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Code Sign Identity Debug"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Export Method Debug"
+msgstr "Eksporto Librarinë Mesh"
+
+#: platform/iphone/export/export.cpp
+msgid "Provisioning Profile UUID Release"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Code Sign Identity Release"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Export Method Release"
+msgstr "Eksporto Librarinë Mesh"
+
+#: platform/iphone/export/export.cpp
+msgid "Targeted Device Family"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Info"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Identifier"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Signature"
+msgstr "Sinjalet"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Short Version"
+msgstr "Versioni:"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/windows/export/export.cpp
+msgid "Copyright"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Capabilities"
+msgstr "Vetitë"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Access Wi-Fi"
+msgstr "Sukses!"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Push Notifications"
+msgstr "Konstantet"
+
+#: platform/iphone/export/export.cpp scene/3d/baked_lightmap.cpp
+#, fuzzy
+msgid "User Data"
+msgstr "Hap Folderin e të Dhënave të Editorit"
+
+#: platform/iphone/export/export.cpp
+msgid "Accessible From Files App"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Accessible From Itunes Sharing"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Privacy"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Camera Usage Description"
+msgstr "Përshkrimi:"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Microphone Usage Description"
+msgstr "Përshkrimi i Vetive"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Photolibrary Usage Description"
+msgstr "Përshkrimi i Vetive"
+
+#: platform/iphone/export/export.cpp
+msgid "iPhone 120 X 120"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPhone 180 X 180"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 76 X 76"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 152 X 152"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 167 X 167"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "App Store 1024 X 1024"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Spotlight 40 X 40"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Spotlight 80 X 80"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Storyboard"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Use Launch Screen Storyboard"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Image Scale Mode"
+msgstr "Ndrysho metodën e ndarjes"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Custom Image @2x"
+msgstr "Dyfisho Nyjet"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Custom Image @3x"
+msgstr "Dyfisho Nyjet"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Use Custom BG Color"
+msgstr "Dyfisho Nyjet"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Custom BG Color"
+msgstr "Dyfisho Nyjet"
+
+#: platform/iphone/export/export.cpp
msgid "App Store Team ID not specified - cannot configure the project."
msgstr ""
@@ -18111,6 +18954,80 @@ msgstr "Nuk mund të krijoj folderin."
#: platform/javascript/export/export.cpp
#, fuzzy
+msgid "Variant"
+msgstr "Enumeracionet:"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Export Type"
+msgstr "Eksporto"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "VRAM Texture Compression"
+msgstr "Versioni Aktual:"
+
+#: platform/javascript/export/export.cpp
+msgid "For Desktop"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "For Mobile"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Html"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Export Icon"
+msgstr "Zgjero të Gjitha"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Custom Html Shell"
+msgstr "Dyfisho Nyjet"
+
+#: platform/javascript/export/export.cpp
+msgid "Head Include"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Canvas Resize Policy"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Focus Canvas On Start"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Experimental Virtual Keyboard"
+msgstr "Filtro Skedarët..."
+
+#: platform/javascript/export/export.cpp
+msgid "Progressive Web App"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Offline Page"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 144 X 144"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 180 X 180"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 512 X 512"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
msgid "Could not read HTML shell:"
msgstr "Nuk mund të krijoj folderin."
@@ -18224,6 +19141,196 @@ msgid "Unknown object type."
msgstr ""
#: platform/osx/export/export.cpp
+msgid "App Category"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "High Res"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Location Usage Description"
+msgstr "Përshkrimi:"
+
+#: platform/osx/export/export.cpp
+msgid "Address Book Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Calendar Usage Description"
+msgstr "Përshkrimi:"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Photos Library Usage Description"
+msgstr "Përshkrimi i Vetive"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Desktop Folder Usage Description"
+msgstr "Përshkrimi i Metodës"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Documents Folder Usage Description"
+msgstr "Përshkrimi i Metodës"
+
+#: platform/osx/export/export.cpp
+msgid "Downloads Folder Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Network Volumes Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Removable Volumes Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#, fuzzy
+msgid "Codesign"
+msgstr "Nyje"
+
+#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
+#: platform/windows/export/export.cpp
+msgid "Identity"
+msgstr ""
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#, fuzzy
+msgid "Timestamp"
+msgstr "Koha"
+
+#: platform/osx/export/export.cpp
+msgid "Hardened Runtime"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Replace Existing Signature"
+msgstr "Hap Skedarët"
+
+#: platform/osx/export/export.cpp
+msgid "Entitlements"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Custom File"
+msgstr "Dyfisho Nyjet"
+
+#: platform/osx/export/export.cpp
+msgid "Allow JIT Code Execution"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Allow Unsigned Executable Memory"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Allow Dyld Environment Variables"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Disable Library Validation"
+msgstr "Çaktivizo Rrotulluesin e Përditësimit"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Audio Input"
+msgstr "Faqosja e Editorit"
+
+#: platform/osx/export/export.cpp
+msgid "Address Book"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Calendars"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Photos Library"
+msgstr "Libraria e Eksportit"
+
+#: platform/osx/export/export.cpp
+msgid "Apple Events"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Debugging"
+msgstr "Rregullo (Debug)"
+
+#: platform/osx/export/export.cpp
+msgid "App Sandbox"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Network Server"
+msgstr "Eksporto Projektin"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Network Client"
+msgstr "Eksporto Projektin"
+
+#: platform/osx/export/export.cpp
+msgid "Device Usb"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Device Bluetooth"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Files Downloads"
+msgstr "Shkarko"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Files Pictures"
+msgstr "Filtro Skedarët..."
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Files Music"
+msgstr "Skedar:"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Files Movies"
+msgstr "Filtro Skedarët..."
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#, fuzzy
+msgid "Custom Options"
+msgstr "Përshkrimi i Klasës"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Notarization"
+msgstr "Metoda Pa Shpërqëndrime"
+
+#: platform/osx/export/export.cpp
+msgid "Apple ID Name"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Apple ID Password"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Apple Team ID"
+msgstr ""
+
+#: platform/osx/export/export.cpp
msgid ""
"Note: The notarization process generally takes less than an hour. When the "
"process is completed, you'll receive an email."
@@ -18415,6 +19522,133 @@ msgid "Force Builtin Codesign"
msgstr ""
#: platform/uwp/export/export.cpp
+msgid "Architecture"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Display Name"
+msgstr "Shfaqi të Gjitha"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Short Name"
+msgstr "Emri i Shkrimit:"
+
+#: platform/uwp/export/export.cpp
+msgid "Publisher"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Publisher Display Name"
+msgstr "Emër i palejuar."
+
+#: platform/uwp/export/export.cpp
+msgid "Product Guid"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Publisher Guid"
+msgstr "Pastro"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Signing"
+msgstr "Sinjalet"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Certificate"
+msgstr "Vetitë:"
+
+#: platform/uwp/export/export.cpp
+msgid "Algorithm"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Major"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Minor"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Build"
+msgstr "Ndrysho Mënyrën"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Revision"
+msgstr "Versioni Aktual:"
+
+#: platform/uwp/export/export.cpp
+msgid "Landscape"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Portrait"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Landscape Flipped"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Portrait Flipped"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Store Logo"
+msgstr "Ndrysho Mënyrën"
+
+#: platform/uwp/export/export.cpp
+msgid "Square 44 X 44 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 71 X 71 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 150 X 150 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 310 X 310 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Wide 310 X 150 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Splash Screen"
+msgstr "Thërritjet"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Tiles"
+msgstr "Skedar:"
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Square 150 X 150"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Wide 310 X 150"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Square 310 X 310"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
#, fuzzy
msgid "Invalid package short name."
msgstr "Emër i palejuar."
@@ -18482,11 +19716,48 @@ msgid "Debug Certificate"
msgstr ""
#: platform/uwp/export/export.cpp
-msgid "Debug Password"
+msgid "Debug Algorithm"
msgstr ""
-#: platform/uwp/export/export.cpp
-msgid "Debug Algorithm"
+#: platform/windows/export/export.cpp
+msgid "Identity Type"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Timestamp Server URL"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Digest Algorithm"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "File Version"
+msgstr "Versioni:"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Product Version"
+msgstr "Emri i grupit i pasakt."
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Company Name"
+msgstr "Emri i Nyjes:"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Product Name"
+msgstr "Grupet"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "File Description"
+msgstr "Përshkrimi:"
+
+#: platform/windows/export/export.cpp
+msgid "Trademarks"
msgstr ""
#: platform/windows/export/export.cpp
@@ -18560,12 +19831,14 @@ msgstr "Luaj"
msgid "Centered"
msgstr "Fshi Nyjen"
-#: scene/2d/animated_sprite.cpp scene/2d/camera_2d.cpp scene/2d/light_2d.cpp
+#: scene/2d/animated_sprite.cpp scene/2d/camera_2d.cpp
+#: scene/2d/cpu_particles_2d.cpp scene/2d/light_2d.cpp
#: scene/2d/parallax_background.cpp scene/2d/parallax_layer.cpp
#: scene/2d/path_2d.cpp scene/2d/polygon_2d.cpp scene/2d/sprite.cpp
-#: scene/3d/path.cpp scene/3d/physics_body.cpp scene/3d/sprite_3d.cpp
-#: scene/gui/graph_node.cpp scene/gui/rich_text_effect.cpp
-#: scene/main/canvas_layer.cpp scene/resources/material.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/path.cpp scene/3d/physics_body.cpp
+#: scene/3d/sprite_3d.cpp scene/gui/graph_node.cpp
+#: scene/gui/rich_text_effect.cpp scene/main/canvas_layer.cpp
+#: scene/resources/material.cpp scene/resources/particles_material.cpp
#: scene/resources/style_box.cpp
msgid "Offset"
msgstr ""
@@ -18636,11 +19909,6 @@ msgstr "Faqosja e Editorit"
msgid "Override"
msgstr "Mbishkruaj"
-#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
-#: scene/audio/audio_stream_player.cpp scene/gui/video_player.cpp
-msgid "Stream"
-msgstr ""
-
#: scene/2d/audio_stream_player_2d.cpp scene/audio/audio_stream_player.cpp
#: scene/gui/video_player.cpp servers/audio/effects/audio_effect_amplify.cpp
msgid "Volume dB"
@@ -18664,13 +19932,13 @@ msgid "Stream Paused"
msgstr ""
#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
-#: scene/3d/reflection_probe.cpp scene/3d/visual_instance.cpp
-#: scene/resources/material.cpp
+#: scene/3d/light.cpp scene/3d/reflection_probe.cpp
+#: scene/3d/visual_instance.cpp scene/resources/material.cpp
#, fuzzy
msgid "Max Distance"
msgstr "Instanco"
-#: scene/2d/audio_stream_player_2d.cpp
+#: scene/2d/audio_stream_player_2d.cpp scene/3d/light.cpp
#, fuzzy
msgid "Attenuation"
msgstr "Animacionet:"
@@ -18724,6 +19992,23 @@ msgstr "Ndrysho Mënyrën"
msgid "Limit"
msgstr ""
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/style_box.cpp
+#, fuzzy
+msgid "Left"
+msgstr "Koha"
+
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/style_box.cpp
+msgid "Right"
+msgstr ""
+
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/dynamic_font.cpp scene/resources/style_box.cpp
+#, fuzzy
+msgid "Bottom"
+msgstr "Hiq Artikullin"
+
#: scene/2d/camera_2d.cpp
msgid "Smoothed"
msgstr ""
@@ -18927,12 +20212,6 @@ msgstr ""
msgid "Emitting"
msgstr "Duke u lidhur..."
-#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp scene/3d/area.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
-#: scene/resources/environment.cpp
-msgid "Amount"
-msgstr ""
-
#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp
#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
msgid "Lifetime"
@@ -18994,17 +20273,12 @@ msgstr ""
#: scene/2d/mesh_instance_2d.cpp scene/2d/multimesh_instance_2d.cpp
#: scene/2d/particles_2d.cpp scene/2d/polygon_2d.cpp scene/2d/sprite.cpp
#: scene/3d/sprite_3d.cpp scene/gui/nine_patch_rect.cpp
-#: scene/gui/texture_rect.cpp scene/resources/sky.cpp
-#: scene/resources/style_box.cpp scene/resources/visual_shader_nodes.cpp
+#: scene/gui/texture_rect.cpp scene/resources/material.cpp
+#: scene/resources/sky.cpp scene/resources/style_box.cpp
+#: scene/resources/visual_shader_nodes.cpp
msgid "Texture"
msgstr ""
-#: scene/2d/cpu_particles_2d.cpp scene/2d/mesh_instance_2d.cpp
-#: scene/2d/multimesh_instance_2d.cpp scene/2d/particles_2d.cpp
-#: scene/2d/sprite.cpp scene/resources/style_box.cpp
-msgid "Normal Map"
-msgstr ""
-
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
#, fuzzy
@@ -19025,10 +20299,10 @@ msgid "Normals"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/3d/sprite_3d.cpp scene/resources/material.cpp
-#: scene/resources/particles_material.cpp scene/resources/texture.cpp
-msgid "Flags"
-msgstr ""
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Align Y"
+msgstr "Cakto..."
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
@@ -19048,6 +20322,11 @@ msgid "Initial Velocity"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Velocity Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp servers/physics_2d_server.cpp
#: servers/physics_server.cpp
msgid "Angular Velocity"
@@ -19055,6 +20334,12 @@ msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Velocity Curve"
+msgstr "Zgjidh Folderin Aktual"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
msgid "Orbit Velocity"
msgstr ""
@@ -19065,6 +20350,22 @@ msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Accel"
+msgstr "Sukses!"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Accel Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Accel Curve"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
msgid "Radial Accel"
msgstr ""
@@ -19074,19 +20375,52 @@ msgid "Tangential Accel"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/2d/joints_2d.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/vehicle_body.cpp
-#: scene/resources/particles_material.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/physics_joint.cpp
+#: scene/3d/vehicle_body.cpp scene/resources/particles_material.cpp
#: servers/audio/effects/audio_effect_reverb.cpp
msgid "Damping"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+msgid "Damping Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Damping Curve"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp scene/3d/light.cpp
+#: scene/resources/particles_material.cpp
msgid "Angle"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+msgid "Angle Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Angle Curve"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#, fuzzy
+msgid "Scale Amount"
+msgstr "Instanco"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+msgid "Scale Amount Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+msgid "Scale Amount Curve"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
msgid "Color Ramp"
msgstr ""
@@ -19101,6 +20435,45 @@ msgstr ""
msgid "Hue Variation"
msgstr "Enumeracionet:"
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Variation"
+msgstr "Enumeracionet:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Variation Random"
+msgstr "Enumeracionet:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Variation Curve"
+msgstr "Enumeracionet:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Speed Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Speed Curve"
+msgstr "Zgjidh Folderin Aktual"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Offset Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Offset Curve"
+msgstr ""
+
#: scene/2d/joints_2d.cpp
msgid "Node A and Node B must be PhysicsBody2Ds"
msgstr ""
@@ -19132,6 +20505,7 @@ msgid "Node B"
msgstr "Nyje"
#: scene/2d/joints_2d.cpp scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp
+#: scene/3d/light.cpp scene/3d/physics_joint.cpp
#: scene/resources/environment.cpp
msgid "Bias"
msgstr ""
@@ -19141,7 +20515,7 @@ msgstr ""
msgid "Disable Collision"
msgstr "Çaktivizo Rrotulluesin e Përditësimit"
-#: scene/2d/joints_2d.cpp
+#: scene/2d/joints_2d.cpp scene/3d/physics_joint.cpp
msgid "Softness"
msgstr ""
@@ -19158,7 +20532,7 @@ msgstr ""
msgid "Rest Length"
msgstr ""
-#: scene/2d/joints_2d.cpp scene/3d/vehicle_body.cpp
+#: scene/2d/joints_2d.cpp scene/3d/physics_joint.cpp scene/3d/vehicle_body.cpp
msgid "Stiffness"
msgstr ""
@@ -19178,7 +20552,7 @@ msgid "Texture Scale"
msgstr ""
#: scene/2d/light_2d.cpp scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp
-#: scene/resources/environment.cpp scene/resources/sky.cpp
+#: scene/3d/light.cpp scene/resources/environment.cpp scene/resources/sky.cpp
msgid "Energy"
msgstr ""
@@ -19218,12 +20592,6 @@ msgstr "Madhësia: "
msgid "Gradient Length"
msgstr "E Parazgjedhur"
-#: scene/2d/light_2d.cpp scene/gui/control.cpp
-#: scene/resources/navigation_mesh.cpp
-#, fuzzy
-msgid "Filter"
-msgstr "Filtrat:"
-
#: scene/2d/light_2d.cpp
#, fuzzy
msgid "Filter Smooth"
@@ -19619,10 +20987,6 @@ msgid "Applied Forces"
msgstr ""
#: scene/2d/physics_body_2d.cpp
-msgid "Force"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp
msgid "Torque"
msgstr ""
@@ -19636,7 +21000,7 @@ msgid "Sync To Physics"
msgstr "Hapi i Fizikës %"
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-msgid "Moving platform"
+msgid "Moving Platform"
msgstr ""
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
@@ -19645,7 +21009,7 @@ msgstr ""
#: scene/2d/physics_body_2d.cpp scene/2d/touch_screen_button.cpp
#: scene/3d/physics_body.cpp scene/gui/texture_button.cpp
-#: scene/resources/line_shape_2d.cpp
+#: scene/resources/line_shape_2d.cpp scene/resources/material.cpp
msgid "Normal"
msgstr ""
@@ -19867,6 +21231,34 @@ msgid ""
"as parent."
msgstr ""
+#: scene/2d/visibility_notifier_2d.cpp scene/3d/visibility_notifier.cpp
+#, fuzzy
+msgid "Pause Animations"
+msgstr "Animacionet:"
+
+#: scene/2d/visibility_notifier_2d.cpp scene/3d/visibility_notifier.cpp
+msgid "Freeze Bodies"
+msgstr ""
+
+#: scene/2d/visibility_notifier_2d.cpp
+#, fuzzy
+msgid "Pause Particles"
+msgstr "Ngjit Parametrat"
+
+#: scene/2d/visibility_notifier_2d.cpp
+#, fuzzy
+msgid "Pause Animated Sprites"
+msgstr "Ndrysho Hapin e Animacionit"
+
+#: scene/2d/visibility_notifier_2d.cpp
+#, fuzzy
+msgid "Process Parent"
+msgstr "Ndrysho Mënyrën"
+
+#: scene/2d/visibility_notifier_2d.cpp
+msgid "Physics Process Parent"
+msgstr ""
+
#: scene/3d/area.cpp
msgid "Reverb Bus"
msgstr ""
@@ -19959,6 +21351,7 @@ msgid "Attenuation Filter"
msgstr ""
#: scene/3d/audio_stream_player_3d.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
#: servers/audio/effects/audio_effect_filter.cpp
msgid "Cutoff Hz"
msgstr ""
@@ -20001,11 +21394,6 @@ msgid "Octree"
msgstr ""
#: scene/3d/baked_lightmap.cpp
-#, fuzzy
-msgid "User Data"
-msgstr "Hap Folderin e të Dhënave të Editorit"
-
-#: scene/3d/baked_lightmap.cpp
msgid "Finding meshes and lights"
msgstr ""
@@ -20250,6 +21638,16 @@ msgid "Ring Axis"
msgstr ""
#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Rotate Y"
+msgstr "Konstantet"
+
+#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Disable Z"
+msgstr "Çaktivizo Rrotulluesin e Përditësimit"
+
+#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
msgid "Flatness"
msgstr ""
@@ -20286,16 +21684,11 @@ msgstr ""
msgid "Dynamic Range"
msgstr ""
-#: scene/3d/gi_probe.cpp
+#: scene/3d/gi_probe.cpp scene/3d/light.cpp
msgid "Normal Bias"
msgstr ""
#: scene/3d/gi_probe.cpp
-#, fuzzy
-msgid "Compress"
-msgstr "Komponentët"
-
-#: scene/3d/gi_probe.cpp
msgid "Plotting Meshes"
msgstr ""
@@ -20321,15 +21714,28 @@ msgid "Subdiv"
msgstr ""
#: scene/3d/light.cpp
+msgid "Indirect Energy"
+msgstr ""
+
+#: scene/3d/light.cpp
msgid "Negative"
msgstr ""
#: scene/3d/light.cpp
#, fuzzy
+msgid "Specular"
+msgstr "Ndrysho Mënyrën"
+
+#: scene/3d/light.cpp
+#, fuzzy
msgid "Bake Mode"
msgstr "Luaj Skenën"
#: scene/3d/light.cpp
+msgid "Contact"
+msgstr ""
+
+#: scene/3d/light.cpp
#, fuzzy
msgid "Reverse Cull Face"
msgstr "Emri i Nyjes:"
@@ -20339,11 +21745,28 @@ msgid "Directional Shadow"
msgstr ""
#: scene/3d/light.cpp
+msgid "Split 1"
+msgstr ""
+
+#: scene/3d/light.cpp
+msgid "Split 2"
+msgstr ""
+
+#: scene/3d/light.cpp
+msgid "Split 3"
+msgstr ""
+
+#: scene/3d/light.cpp
msgid "Blend Splits"
msgstr ""
#: scene/3d/light.cpp
#, fuzzy
+msgid "Bias Split Scale"
+msgstr "Shkrim i Ri"
+
+#: scene/3d/light.cpp
+#, fuzzy
msgid "Depth Range"
msgstr "Ndrysho"
@@ -20369,6 +21792,11 @@ msgstr ""
msgid "Spot"
msgstr ""
+#: scene/3d/light.cpp
+#, fuzzy
+msgid "Angle Attenuation"
+msgstr "Animacionet:"
+
#: scene/3d/mesh_instance.cpp
msgid "Software Skinning"
msgstr ""
@@ -20490,6 +21918,57 @@ msgid "Axis Lock"
msgstr ""
#: scene/3d/physics_body.cpp
+msgid "Linear X"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Linear Y"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Linear Z"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Angular X"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Angular Y"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Angular Z"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Motion X"
+msgstr "Animacionet:"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Motion Y"
+msgstr "Animacionet:"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Motion Z"
+msgstr "Animacionet:"
+
+#: scene/3d/physics_body.cpp
+msgid "Move Lock X"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Move Lock Y"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Move Lock Z"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
msgid "Body Offset"
msgstr ""
@@ -20523,6 +22002,15 @@ msgid "Exclude Nodes"
msgstr "Fshi Nyjen"
#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Params"
+msgstr "Ngjit Parametrat"
+
+#: scene/3d/physics_joint.cpp
+msgid "Impulse Clamp"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit"
msgstr ""
@@ -20534,6 +22022,55 @@ msgstr ""
msgid "Lower"
msgstr ""
+#: scene/3d/physics_joint.cpp scene/3d/vehicle_body.cpp
+#, fuzzy
+msgid "Relaxation"
+msgstr "Enumeracionet:"
+
+#: scene/3d/physics_joint.cpp
+msgid "Motor"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Target Velocity"
+msgstr "Fshi Nyjen"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Max Impulse"
+msgstr "Vlerë e Re:"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit"
+msgstr "Shfaqi të Gjitha"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Upper Distance"
+msgstr "Instanco"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Lower Distance"
+msgstr "Instanco"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Restitution"
+msgstr "Përshkrimi:"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motion"
+msgstr "Animacionet:"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Ortho"
+msgstr "Shfaqi të Gjitha"
+
#: scene/3d/physics_joint.cpp
msgid "Upper Angle"
msgstr ""
@@ -20544,6 +22081,15 @@ msgstr ""
#: scene/3d/physics_joint.cpp
#, fuzzy
+msgid "Angular Motion"
+msgstr "Animacionet:"
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Ortho"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
msgid "Swing Span"
msgstr "Duke Ruajtur Skenën"
@@ -20552,17 +22098,90 @@ msgid "Twist Span"
msgstr ""
#: scene/3d/physics_joint.cpp
+msgid "Linear Limit X"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Linear Motor X"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Force Limit"
+msgstr "Thërritjet"
+
+#: scene/3d/physics_joint.cpp
+msgid "Linear Spring X"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Equilibrium Point"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit X"
msgstr ""
#: scene/3d/physics_joint.cpp
+msgid "Erp"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Motor X"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Spring X"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Linear Limit Y"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Linear Motor Y"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Linear Spring Y"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit Y"
msgstr ""
#: scene/3d/physics_joint.cpp
+msgid "Angular Motor Y"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Spring Y"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Linear Limit Z"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Linear Motor Z"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Linear Spring Z"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit Z"
msgstr ""
+#: scene/3d/physics_joint.cpp
+msgid "Angular Motor Z"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Spring Z"
+msgstr ""
+
#: scene/3d/portal.cpp
msgid "The RoomManager should not be a child or grandchild of a Portal."
msgstr ""
@@ -20675,7 +22294,7 @@ msgstr ""
msgid "Use Default Simplify"
msgstr ""
-#: scene/3d/room.cpp
+#: scene/3d/room.cpp scene/3d/room_manager.cpp
msgid "Room Simplify"
msgstr ""
@@ -20713,6 +22332,13 @@ msgstr ""
msgid "Main"
msgstr ""
+#: scene/3d/room_manager.cpp scene/animation/animation_player.cpp
+#: scene/animation/animation_tree.cpp scene/animation/animation_tree_player.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+#, fuzzy
+msgid "Active"
+msgstr "Aktivizo tani?"
+
#: scene/3d/room_manager.cpp
msgid "Roomlist"
msgstr ""
@@ -20736,6 +22362,52 @@ msgid "Gameplay"
msgstr ""
#: scene/3d/room_manager.cpp
+msgid "Gameplay Monitor"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "Use Secondary PVS"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Merge Meshes"
+msgstr "Nyjet filtruese"
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Show Margins"
+msgstr "Shfaqe në 'FileSystem'"
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Debug Sprawl"
+msgstr "Rregullo (Debug)"
+
+#: scene/3d/room_manager.cpp
+msgid "Overlap Warning Threshold"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Preview Camera"
+msgstr "Shikim paraprak:"
+
+#: scene/3d/room_manager.cpp
+msgid "Portal Depth Limit"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Default Portal Margin"
+msgstr "E Parazgjedhur"
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Roaming Expansion Margin"
+msgstr "Zgjero të Gjitha"
+
+#: scene/3d/room_manager.cpp
msgid ""
"RoomList path is invalid.\n"
"Please check the RoomList branch has been assigned in the RoomManager."
@@ -20857,6 +22529,20 @@ msgstr ""
msgid "Billboard"
msgstr ""
+#: scene/3d/sprite_3d.cpp scene/resources/material.cpp
+#, fuzzy
+msgid "Transparent"
+msgstr "Shto Animacion"
+
+#: scene/3d/sprite_3d.cpp
+#, fuzzy
+msgid "Shaded"
+msgstr "Ndrysho"
+
+#: scene/3d/sprite_3d.cpp
+msgid "Double Sided"
+msgstr ""
+
#: scene/3d/sprite_3d.cpp
msgid "Alpha Cut"
msgstr ""
@@ -20926,11 +22612,6 @@ msgstr "Versioni Aktual:"
msgid "Max Force"
msgstr "Pasqyrë"
-#: scene/3d/vehicle_body.cpp
-#, fuzzy
-msgid "Relaxation"
-msgstr "Enumeracionet:"
-
#: scene/3d/visibility_notifier.cpp
msgid "AABB"
msgstr ""
@@ -21058,7 +22739,7 @@ msgstr ""
#: scene/animation/animation_blend_tree.cpp
#, fuzzy
-msgid "autorestart_"
+msgid "Auto Restart"
msgstr "Ruaj & Rifillo"
#: scene/animation/animation_blend_tree.cpp
@@ -21142,13 +22823,6 @@ msgstr "Përshkrimi i Klasës:"
msgid "Default Blend Time"
msgstr "E Parazgjedhur"
-#: scene/animation/animation_player.cpp scene/animation/animation_tree.cpp
-#: scene/animation/animation_tree_player.cpp
-#: servers/audio/effects/audio_effect_delay.cpp
-#, fuzzy
-msgid "Active"
-msgstr "Aktivizo tani?"
-
#: scene/animation/animation_player.cpp
msgid "Method Call Mode"
msgstr ""
@@ -21268,10 +22942,6 @@ msgstr "Fshi Nyjen"
msgid "Max Iterations"
msgstr "Funksionet:"
-#: scene/animation/tween.cpp scene/resources/texture.cpp
-msgid "Repeat"
-msgstr ""
-
#: scene/animation/tween.cpp
msgid "Playback Process Mode"
msgstr ""
@@ -21299,20 +22969,6 @@ msgstr ""
msgid "Alignment"
msgstr ""
-#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
-#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
-#: scene/resources/style_box.cpp
-#, fuzzy
-msgid "Horizontal"
-msgstr "Krijo një Folder"
-
-#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
-#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
-#: scene/resources/style_box.cpp
-#, fuzzy
-msgid "Vertical"
-msgstr "Vetitë:"
-
#: scene/gui/base_button.cpp
msgid "Shortcut In Tooltip"
msgstr ""
@@ -21406,10 +23062,6 @@ msgid "HSV"
msgstr ""
#: scene/gui/color_picker.cpp
-msgid "Raw"
-msgstr ""
-
-#: scene/gui/color_picker.cpp
msgid "Switch between hexadecimal and code values."
msgstr ""
@@ -21467,6 +23119,30 @@ msgid "Focus"
msgstr "Fokuso Rrugën"
#: scene/gui/control.cpp
+msgid "Neighbour Left"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Neighbour Top"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Neighbour Right"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Neighbour Bottom"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Next"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Previous"
+msgstr ""
+
+#: scene/gui/control.cpp
msgid "Mouse"
msgstr ""
@@ -21503,7 +23179,7 @@ msgid "Dialog"
msgstr ""
#: scene/gui/dialogs.cpp
-msgid "Hide On Ok"
+msgid "Hide On OK"
msgstr ""
#: scene/gui/dialogs.cpp scene/gui/label.cpp
@@ -21596,7 +23272,7 @@ msgid "Timers"
msgstr "Koha"
#: scene/gui/item_list.cpp scene/gui/popup_menu.cpp scene/gui/tree.cpp
-msgid "Incremental Search Max Interval (msec)"
+msgid "Incremental Search Max Interval Msec"
msgstr ""
#: scene/gui/item_list.cpp scene/gui/tree.cpp
@@ -22145,6 +23821,26 @@ msgstr "Fshi Nyjen"
msgid "Nine Patch Stretch"
msgstr "Metoda Pa Shpërqëndrime"
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Left"
+msgstr "Vendos Animacionin"
+
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Top"
+msgstr "Vendos Animacionin"
+
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Right"
+msgstr "Vendos Animacionin"
+
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Bottom"
+msgstr "Vendos Animacionin"
+
#: scene/gui/tree.cpp
msgid "Custom Minimum Height"
msgstr ""
@@ -22180,8 +23876,9 @@ msgid "Paused"
msgstr ""
#: scene/gui/video_player.cpp
-msgid "Buffering (msec)"
-msgstr ""
+#, fuzzy
+msgid "Buffering Msec"
+msgstr "Madhësia: "
#: scene/gui/video_player.cpp
#, fuzzy
@@ -22515,6 +24212,22 @@ msgid "Shadow Atlas"
msgstr "%s i Ri"
#: scene/main/viewport.cpp
+msgid "Quad 0"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 1"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 2"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 3"
+msgstr ""
+
+#: scene/main/viewport.cpp
#, fuzzy
msgid "Canvas Transform"
msgstr "Binari i Transformimeve 3D"
@@ -22529,6 +24242,11 @@ msgid "Tooltip Delay (sec)"
msgstr ""
#: scene/register_scene_types.cpp
+#, fuzzy
+msgid "Swap OK Cancel"
+msgstr "Anullo"
+
+#: scene/register_scene_types.cpp
msgid "Use hiDPI"
msgstr ""
@@ -22543,21 +24261,6 @@ msgid "Custom Font"
msgstr "Dyfisho Nyjet"
#: scene/resources/audio_stream_sample.cpp
-#, fuzzy
-msgid "Loop Mode"
-msgstr "Ndrysho Mënyrën"
-
-#: scene/resources/audio_stream_sample.cpp
-#, fuzzy
-msgid "Loop Begin"
-msgstr "Ndrysho Mënyrën"
-
-#: scene/resources/audio_stream_sample.cpp
-#, fuzzy
-msgid "Loop End"
-msgstr "Ndrysho Mënyrën"
-
-#: scene/resources/audio_stream_sample.cpp
#: servers/audio/effects/audio_stream_generator.cpp servers/audio_server.cpp
msgid "Mix Rate"
msgstr ""
@@ -22613,6 +24316,17 @@ msgid "Extra Spacing"
msgstr "Përshkrimi i Klasës:"
#: scene/resources/dynamic_font.cpp
+#, fuzzy
+msgid "Char"
+msgstr "Karakteret e lejuar:"
+
+#: scene/resources/dynamic_font.cpp scene/resources/world.cpp
+#: scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Space"
+msgstr "Thërritjet"
+
+#: scene/resources/dynamic_font.cpp
msgid "Font"
msgstr ""
@@ -22826,6 +24540,43 @@ msgid "Glow"
msgstr ""
#: scene/resources/environment.cpp
+#, fuzzy
+msgid "Levels"
+msgstr "Zhvilluesit"
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "1"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "2"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "3"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "4"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "5"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "6"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "7"
+msgstr ""
+
+#: scene/resources/environment.cpp
msgid "Bloom"
msgstr ""
@@ -22913,9 +24664,66 @@ msgid "Next Pass"
msgstr "Tabi tjetër"
#: scene/resources/material.cpp
+msgid "Use Shadow To Opacity"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Unshaded"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Vertex Lighting"
+msgstr "Duke Gjeneruar Hartat e Dritës"
+
+#: scene/resources/material.cpp
+msgid "No Depth Test"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Use Point Size"
+msgstr "Madhësia: "
+
+#: scene/resources/material.cpp
+msgid "World Triplanar"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Fixed Size"
+msgstr "Madhësia: "
+
+#: scene/resources/material.cpp
+msgid "Albedo Tex Force sRGB"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Do Not Receive Shadows"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Disable Ambient Light"
+msgstr "Çaktivizo Rrotulluesin e Përditësimit"
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Ensure Correct Normals"
+msgstr "Binari i Transformimeve 3D"
+
+#: scene/resources/material.cpp
msgid "Vertex Color"
msgstr ""
+#: scene/resources/material.cpp
+msgid "Use As Albedo"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Is sRGB"
+msgstr ""
+
#: scene/resources/material.cpp servers/visual_server.cpp
msgid "Parameters"
msgstr ""
@@ -22951,6 +24759,11 @@ msgid "Billboard Mode"
msgstr "Ndrysho Mënyrën"
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Billboard Keep Scale"
+msgstr "Ndrysho Mënyrën"
+
+#: scene/resources/material.cpp
msgid "Grow"
msgstr ""
@@ -22960,6 +24773,10 @@ msgid "Grow Amount"
msgstr "Krijo një Folder"
#: scene/resources/material.cpp
+msgid "Use Alpha Scissor"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Alpha Scissor Threshold"
msgstr ""
@@ -22990,10 +24807,20 @@ msgid "Metallic Specular"
msgstr ""
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Metallic Texture"
+msgstr "Ndrysho Tipin e %s"
+
+#: scene/resources/material.cpp
msgid "Metallic Texture Channel"
msgstr ""
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Roughness Texture"
+msgstr "Ndrysho Tipin e %s"
+
+#: scene/resources/material.cpp
msgid "Roughness Texture Channel"
msgstr ""
@@ -23011,6 +24838,16 @@ msgid "Emission Operator"
msgstr ""
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Emission On UV2"
+msgstr "Versioni Aktual:"
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Emission Texture"
+msgstr "Ndrysho Tipin e %s"
+
+#: scene/resources/material.cpp
msgid "NormalMap"
msgstr ""
@@ -23024,6 +24861,11 @@ msgstr ""
#: scene/resources/material.cpp
#, fuzzy
+msgid "Rim Texture"
+msgstr "Ndrysho Tipin e %s"
+
+#: scene/resources/material.cpp
+#, fuzzy
msgid "Clearcoat"
msgstr "Pastro"
@@ -23033,14 +24875,27 @@ msgid "Clearcoat Gloss"
msgstr "Pastro"
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Clearcoat Texture"
+msgstr "Editor"
+
+#: scene/resources/material.cpp
msgid "Anisotropy"
msgstr ""
#: scene/resources/material.cpp
+msgid "Anisotropy Flowmap"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Ambient Occlusion"
msgstr ""
#: scene/resources/material.cpp
+msgid "On UV2"
+msgstr ""
+
+#: scene/resources/material.cpp
#, fuzzy
msgid "Texture Channel"
msgstr "Ndrysho Mënyrën"
@@ -23077,6 +24932,11 @@ msgstr ""
#: scene/resources/material.cpp
#, fuzzy
+msgid "Transmission Texture"
+msgstr "Ndrysho Tipin e %s"
+
+#: scene/resources/material.cpp
+#, fuzzy
msgid "Refraction"
msgstr "Enumeracionet:"
@@ -23094,6 +24954,10 @@ msgid "UV1"
msgstr ""
#: scene/resources/material.cpp
+msgid "Triplanar"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Triplanar Sharpness"
msgstr ""
@@ -23296,6 +25160,15 @@ msgstr "Editor"
msgid "Point Count"
msgstr "Shto te të preferuarat"
+#: scene/resources/particles_material.cpp
+msgid "Scale Random"
+msgstr ""
+
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Scale Curve"
+msgstr "Zgjidh Folderin Aktual"
+
#: scene/resources/physics_material.cpp
msgid "Rough"
msgstr ""
@@ -23353,10 +25226,6 @@ msgid "A"
msgstr ""
#: scene/resources/shader.cpp
-msgid "Code"
-msgstr ""
-
-#: scene/resources/shader.cpp
#, fuzzy
msgid "Custom Defines"
msgstr "Luaj Skenë të Zgjedhur"
@@ -23448,15 +25317,6 @@ msgstr ""
#: scene/resources/texture.cpp
#, fuzzy
-msgid "Storage"
-msgstr "Duke Ruajtur Skedarin:"
-
-#: scene/resources/texture.cpp
-msgid "Lossy Quality"
-msgstr ""
-
-#: scene/resources/texture.cpp
-#, fuzzy
msgid "Load Path"
msgstr "Ngarko Gabimet"
@@ -23581,11 +25441,6 @@ msgstr ""
msgid "Fallback Environment"
msgstr ""
-#: scene/resources/world.cpp scene/resources/world_2d.cpp
-#, fuzzy
-msgid "Space"
-msgstr "Thërritjet"
-
#: scene/resources/world.cpp
#, fuzzy
msgid "Scenario"
@@ -23662,10 +25517,36 @@ msgstr ""
msgid "Wet"
msgstr ""
-#: servers/audio/effects/audio_effect_compressor.cpp
-msgid "Threshold"
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "Voice"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+msgid "Delay (ms)"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_phaser.cpp
+msgid "Rate Hz"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "Depth (ms)"
msgstr ""
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+msgid "Level dB"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+#: servers/audio/effects/audio_effect_panner.cpp
+#, fuzzy
+msgid "Pan"
+msgstr "Duke Paketuar"
+
#: servers/audio/effects/audio_effect_compressor.cpp
#: servers/audio/effects/audio_effect_filter.cpp
msgid "Gain"
@@ -23688,20 +25569,6 @@ msgid "Tap 1"
msgstr ""
#: servers/audio/effects/audio_effect_delay.cpp
-msgid "Delay (ms)"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_delay.cpp
-msgid "Level dB"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_delay.cpp
-#: servers/audio/effects/audio_effect_panner.cpp
-#, fuzzy
-msgid "Pan"
-msgstr "Duke Paketuar"
-
-#: servers/audio/effects/audio_effect_delay.cpp
msgid "Tap 2"
msgstr ""
@@ -23761,10 +25628,6 @@ msgstr ""
msgid "Range Max Hz"
msgstr ""
-#: servers/audio/effects/audio_effect_phaser.cpp
-msgid "Rate Hz"
-msgstr ""
-
#: servers/audio/effects/audio_effect_pitch_shift.cpp
msgid "Oversampling"
msgstr ""
@@ -23780,7 +25643,7 @@ msgid "Predelay"
msgstr ""
#: servers/audio/effects/audio_effect_reverb.cpp
-msgid "(msec)"
+msgid "Msec"
msgstr ""
#: servers/audio/effects/audio_effect_reverb.cpp
diff --git a/editor/translations/sr_Cyrl.po b/editor/translations/sr_Cyrl.po
index e362f08c9b..6fbe0fe564 100644
--- a/editor/translations/sr_Cyrl.po
+++ b/editor/translations/sr_Cyrl.po
@@ -22,7 +22,7 @@ msgstr ""
"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
"X-Generator: Weblate 4.9-dev\n"
-#: core/bind/core_bind.cpp
+#: core/bind/core_bind.cpp main/main.cpp
msgid "Tablet Driver"
msgstr ""
@@ -126,8 +126,8 @@ msgstr "Позиција панела"
#: core/bind/core_bind.cpp editor/editor_settings.cpp main/main.cpp
#: modules/gdscript/gdscript_editor.cpp modules/gridmap/grid_map.cpp
#: modules/mono/csharp_script.cpp modules/visual_script/visual_script_nodes.cpp
-#: scene/2d/tile_map.cpp scene/3d/camera.cpp scene/gui/control.cpp
-#: scene/gui/graph_edit.cpp scene/main/viewport.cpp
+#: scene/2d/tile_map.cpp scene/3d/camera.cpp scene/3d/light.cpp
+#: scene/gui/control.cpp scene/gui/graph_edit.cpp scene/main/viewport.cpp
#: scene/resources/dynamic_font.cpp scene/resources/navigation_mesh.cpp
#: scene/resources/primitive_meshes.cpp scene/resources/sky.cpp
#: scene/resources/style_box.cpp scene/resources/texture.cpp
@@ -231,8 +231,7 @@ msgid "Data"
msgstr ""
#: core/io/file_access_network.cpp core/register_core_types.cpp
-#: editor/editor_settings.cpp editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp main/main.cpp
+#: editor/editor_settings.cpp main/main.cpp
#: modules/gdscript/language_server/gdscript_language_server.cpp
#, fuzzy
msgid "Network"
@@ -516,9 +515,10 @@ msgstr "ПоÑтавке"
msgid "Relative"
msgstr "Залепи релативно"
-#: core/os/input_event.cpp scene/2d/camera_2d.cpp
-#: scene/3d/interpolated_camera.cpp scene/animation/animation_player.cpp
-#: scene/resources/environment.cpp
+#: core/os/input_event.cpp scene/2d/camera_2d.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/interpolated_camera.cpp
+#: scene/animation/animation_player.cpp scene/resources/environment.cpp
+#: scene/resources/particles_material.cpp
#, fuzzy
msgid "Speed"
msgstr "Брзина (FPS):"
@@ -570,8 +570,9 @@ msgstr "Синхронизуј промене Ñкриптица"
msgid "Pitch"
msgstr "Лево-ДеÑно"
-#: core/os/input_event.cpp scene/2d/physics_body_2d.cpp
-#: scene/3d/physics_body.cpp
+#: core/os/input_event.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/physics_body_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/3d/physics_body.cpp scene/resources/particles_material.cpp
#, fuzzy
msgid "Velocity"
msgstr "Велика Ñлова"
@@ -590,6 +591,8 @@ msgid "Controller Value"
msgstr ""
#: core/project_settings.cpp editor/editor_node.cpp main/main.cpp
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/windows/export/export.cpp
#, fuzzy
msgid "Application"
msgstr "Радња"
@@ -608,13 +611,16 @@ msgstr "ПоÑтавке пројекта"
#: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp
#: editor/editor_plugin_settings.cpp editor/editor_profiler.cpp
#: editor/project_manager.cpp editor/settings_config_dialog.cpp
-#: modules/gdnative/nativescript/nativescript.cpp scene/2d/area_2d.cpp
-#: scene/3d/area.cpp scene/main/node.cpp
+#: modules/gdnative/nativescript/nativescript.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/osx/export/export.cpp scene/2d/area_2d.cpp scene/3d/area.cpp
+#: scene/main/node.cpp
msgid "Name"
msgstr "Име"
#: core/project_settings.cpp editor/editor_help.cpp
-#: modules/visual_script/visual_script_nodes.cpp
+#: modules/visual_script/visual_script_nodes.cpp platform/uwp/export/export.cpp
+#: platform/windows/export/export.cpp
msgid "Description"
msgstr "ОпиÑ"
@@ -653,7 +659,7 @@ msgid "Custom User Dir Name"
msgstr ""
#: core/project_settings.cpp editor/animation_track_editor.cpp
-#: editor/editor_audio_buses.cpp servers/audio_server.cpp
+#: editor/editor_audio_buses.cpp main/main.cpp servers/audio_server.cpp
#, fuzzy
msgid "Audio"
msgstr "Ðудио"
@@ -823,10 +829,13 @@ msgstr "Филтери..."
msgid "Sharpen Intensity"
msgstr ""
-#: core/project_settings.cpp editor/editor_node.cpp editor/editor_settings.cpp
-#: editor/plugins/script_editor_plugin.cpp editor/project_export.cpp
-#: main/main.cpp modules/gdscript/gdscript.cpp
-#: modules/visual_script/visual_script.cpp scene/3d/room_manager.cpp
+#: core/project_settings.cpp editor/editor_export.cpp editor/editor_node.cpp
+#: editor/editor_settings.cpp editor/plugins/script_editor_plugin.cpp
+#: editor/project_export.cpp main/main.cpp modules/gdscript/gdscript.cpp
+#: modules/visual_script/visual_script.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp scene/3d/room_manager.cpp
#: scene/main/scene_tree.cpp scene/resources/shape_2d.cpp
#: servers/visual_server.cpp
msgid "Debug"
@@ -1064,6 +1073,7 @@ msgid "Subsurface Scattering"
msgstr ""
#: drivers/gles3/rasterizer_scene_gles3.cpp
+#: editor/import/resource_importer_texture.cpp
#: editor/plugins/spatial_editor_plugin.cpp modules/gltf/gltf_node.cpp
#: modules/gridmap/grid_map.cpp scene/2d/cpu_particles_2d.cpp
#: scene/2d/node_2d.cpp scene/2d/parallax_layer.cpp scene/2d/polygon_2d.cpp
@@ -1403,6 +1413,7 @@ msgid "Editors"
msgstr "Уредник"
#: editor/animation_track_editor.cpp editor/editor_settings.cpp
+#: editor/import/resource_importer_scene.cpp
#: editor/plugins/animation_player_editor_plugin.cpp editor/scene_tree_dock.cpp
#: scene/2d/animated_sprite.cpp scene/2d/cpu_particles_2d.cpp
#: scene/2d/sprite.cpp scene/3d/cpu_particles.cpp scene/3d/sprite_3d.cpp
@@ -1662,14 +1673,14 @@ msgstr "Ðнимационо дрво је важеће."
msgid "Seconds"
msgstr "Секунди"
-#: editor/animation_track_editor.cpp
+#: editor/animation_track_editor.cpp editor/import/resource_importer_scene.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp main/main.cpp
#: scene/resources/texture.cpp
msgid "FPS"
msgstr "FPS"
#: editor/animation_track_editor.cpp editor/editor_plugin_settings.cpp
-#: editor/editor_resource_picker.cpp
+#: editor/editor_resource_picker.cpp editor/import/resource_importer_wav.cpp
#: editor/plugins/polygon_2d_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
@@ -2699,7 +2710,9 @@ msgid "Remove Autoload"
msgstr "Обриши аутоматÑко учитавање"
#: editor/editor_autoload_settings.cpp editor/editor_plugin_settings.cpp
-#: modules/gdscript/gdscript.cpp scene/2d/polygon_2d.cpp scene/3d/area.cpp
+#: modules/gdscript/gdscript.cpp platform/android/export/export_plugin.cpp
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#: scene/2d/polygon_2d.cpp scene/3d/area.cpp scene/3d/physics_joint.cpp
#: scene/3d/reflection_probe.cpp scene/main/canvas_layer.cpp
#: scene/resources/material.cpp servers/visual_server.cpp
msgid "Enable"
@@ -2881,6 +2894,59 @@ msgstr ""
#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
#, fuzzy
+msgid "Custom Template"
+msgstr "Измени тему..."
+
+#: editor/editor_export.cpp editor/project_export.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Release"
+msgstr "Издање"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Binary Format"
+msgstr "Операције боје."
+
+#: editor/editor_export.cpp
+msgid "64 Bits"
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Embed PCK"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Texture Format"
+msgstr "Регион текÑтуре"
+
+#: editor/editor_export.cpp
+msgid "BPTC"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "S3TC"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "ETC"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "ETC2"
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "No BPTC Fallbacks"
+msgstr ""
+
+#: editor/editor_export.cpp platform/android/export/export_plugin.cpp
+#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
+#, fuzzy
msgid "Custom debug template not found."
msgstr "ШаблонÑка датотека није пронађена:\n"
@@ -3084,6 +3150,7 @@ msgid "Make Current"
msgstr "Тренутно:"
#: editor/editor_feature_profile.cpp editor/editor_node.cpp
+#: editor/import/resource_importer_scene.cpp
#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
msgid "Import"
msgstr "Увоз"
@@ -3222,8 +3289,11 @@ msgstr "УÑпех!"
msgid "Display Mode"
msgstr "Режим Игре:"
-#: editor/editor_file_dialog.cpp main/main.cpp modules/csg/csg_shape.cpp
-#: modules/visual_script/visual_script_nodes.cpp
+#: editor/editor_file_dialog.cpp
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+#: editor/import/resource_importer_wav.cpp main/main.cpp
+#: modules/csg/csg_shape.cpp modules/visual_script/visual_script_nodes.cpp
#: modules/visual_script/visual_script_yield_nodes.cpp scene/2d/light_2d.cpp
#: scene/2d/physics_body_2d.cpp scene/2d/tile_map.cpp
#: scene/3d/baked_lightmap.cpp scene/3d/light.cpp scene/3d/physics_body.cpp
@@ -3371,7 +3441,9 @@ msgstr "(Поновно) Увожење ÑредÑтава"
msgid "Reimport Missing Imported Files"
msgstr ""
-#: editor/editor_help.cpp
+#: editor/editor_help.cpp scene/2d/camera_2d.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/resources/dynamic_font.cpp
+#: scene/resources/style_box.cpp
msgid "Top"
msgstr "Врх"
@@ -3429,6 +3501,7 @@ msgid "Fonts"
msgstr "Фонт"
#: editor/editor_help.cpp editor/plugins/theme_editor_plugin.cpp
+#: platform/iphone/export/export.cpp
#, fuzzy
msgid "Icons"
msgstr "Икона"
@@ -3619,7 +3692,9 @@ msgstr ""
msgid "Pin value [Disabled because '%s' is editor-only]"
msgstr ""
-#: editor/editor_inspector.cpp editor/scene_tree_dock.cpp
+#: editor/editor_inspector.cpp
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+#: editor/scene_tree_dock.cpp
#: modules/visual_script/visual_script_func_nodes.cpp
#: modules/visual_script/visual_script_nodes.cpp
#: modules/visual_script/visual_script_property_selector.cpp
@@ -3979,6 +4054,16 @@ msgid "Quick Open Script..."
msgstr "Брзо отварање Ñкриптице..."
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Save & Reload"
+msgstr "Сачувај и изађи"
+
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Save changes to '%s' before reloading?"
+msgstr "Сачувај промене '%s' пре излаÑка?"
+
+#: editor/editor_node.cpp
msgid "Save & Close"
msgstr "Сачувај и затвори"
@@ -4093,6 +4178,11 @@ msgid "Open Project Manager?"
msgstr "Отвори менаџер пројекта?"
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Save changes to the following scene(s) before reloading?"
+msgstr "Сачувај промене тренутне Ñцене/а пре излазка?"
+
+#: editor/editor_node.cpp
msgid "Save & Quit"
msgstr "Сачувај и изађи"
@@ -4375,8 +4465,8 @@ msgstr "Промене материјала"
#: editor/editor_node.cpp
#, fuzzy
-msgid "Translate Properties"
-msgstr "ОÑобине"
+msgid "Localize Settings"
+msgstr "Локализација"
#: editor/editor_node.cpp
#, fuzzy
@@ -4393,8 +4483,8 @@ msgstr "ИнÑпектор"
#: editor/editor_node.cpp
#, fuzzy
-msgid "Capitalize Properties"
-msgstr "ОÑобине"
+msgid "Default Property Name Style"
+msgstr "Путања Пројекта:"
#: editor/editor_node.cpp
msgid "Default Float Step"
@@ -5037,7 +5127,9 @@ msgstr "ИнÑталирани прикључци:"
msgid "Update"
msgstr "Ðжурирај"
-#: editor/editor_plugin_settings.cpp
+#: editor/editor_plugin_settings.cpp platform/android/export/export_plugin.cpp
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp
#, fuzzy
msgid "Version"
msgstr "Верзија:"
@@ -6104,7 +6196,7 @@ msgstr "Пун Правоугаоник"
msgid "Rect Custom Position"
msgstr "ПоÑтави крајњу позицију криве"
-#: editor/editor_settings.cpp
+#: editor/editor_settings.cpp platform/android/export/export_plugin.cpp
msgid "Screen"
msgstr ""
@@ -6131,6 +6223,19 @@ msgid "Editor SSL Certificates"
msgstr "ПоÑтавке уредника"
#: editor/editor_settings.cpp
+msgid "HTTP Proxy"
+msgstr ""
+
+#: editor/editor_settings.cpp
+msgid "Host"
+msgstr ""
+
+#: editor/editor_settings.cpp editor/fileserver/editor_file_server.cpp
+#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp
+msgid "Port"
+msgstr ""
+
+#: editor/editor_settings.cpp
msgid "Project Manager"
msgstr "Менаџер пројекта"
@@ -6173,7 +6278,8 @@ msgstr ""
msgid "String Color"
msgstr "Складиштење датотеке:"
-#: editor/editor_settings.cpp
+#: editor/editor_settings.cpp platform/javascript/export/export.cpp
+#: platform/uwp/export/export.cpp
#, fuzzy
msgid "Background Color"
msgstr "Ðеважећа боја позадине."
@@ -6355,22 +6461,6 @@ msgid "Starting the download..."
msgstr ""
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "HTTP Proxy"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Host"
-msgstr ""
-
-#: editor/export_template_manager.cpp editor/fileserver/editor_file_server.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp main/main.cpp
-#: modules/mono/mono_gd/gd_mono.cpp
-msgid "Port"
-msgstr ""
-
-#: editor/export_template_manager.cpp
#, fuzzy
msgid "Error requesting URL:"
msgstr "Грешка при захтеву url: "
@@ -6650,6 +6740,7 @@ msgstr ""
#: editor/fileserver/editor_file_server.cpp
#: editor/plugins/version_control_editor_plugin.cpp
+#: platform/uwp/export/export.cpp platform/windows/export/export.cpp
msgid "Password"
msgstr ""
@@ -7073,6 +7164,117 @@ msgstr ""
msgid "Use Ambient"
msgstr ""
+#: editor/import/resource_importer_bitmask.cpp
+#, fuzzy
+msgid "Create From"
+msgstr "Ðаправи директоријум"
+
+#: editor/import/resource_importer_bitmask.cpp
+#: servers/audio/effects/audio_effect_compressor.cpp
+msgid "Threshold"
+msgstr ""
+
+#: editor/import/resource_importer_csv_translation.cpp
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_scene.cpp
+#: editor/import/resource_importer_texture.cpp
+#: editor/import/resource_importer_wav.cpp scene/3d/gi_probe.cpp
+#, fuzzy
+msgid "Compress"
+msgstr "Компоненте"
+
+#: editor/import/resource_importer_csv_translation.cpp
+msgid "Delimiter"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+msgid "No BPTC If RGB"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/sprite_3d.cpp
+#: scene/resources/material.cpp scene/resources/particles_material.cpp
+#: scene/resources/texture.cpp
+msgid "Flags"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/animation/tween.cpp
+#: scene/resources/texture.cpp
+msgid "Repeat"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/2d/light_2d.cpp
+#: scene/gui/control.cpp scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Filter"
+msgstr "Филтери..."
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Mipmaps"
+msgstr "Знаци"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+msgid "Anisotropic"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+msgid "sRGB"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#, fuzzy
+msgid "Slices"
+msgstr "ÐутоматÑки рез"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
+#: scene/resources/style_box.cpp
+#, fuzzy
+msgid "Horizontal"
+msgstr "Хоризонтално:"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
+#: scene/resources/style_box.cpp
+#, fuzzy
+msgid "Vertical"
+msgstr "Вертикално:"
+
+#: editor/import/resource_importer_obj.cpp
+#, fuzzy
+msgid "Generate Tangents"
+msgstr "Број генериÑаних тачака:"
+
+#: editor/import/resource_importer_obj.cpp
+#, fuzzy
+msgid "Scale Mesh"
+msgstr "Режим Увећања"
+
+#: editor/import/resource_importer_obj.cpp
+#, fuzzy
+msgid "Offset Mesh"
+msgstr "ОфÑет:"
+
+#: editor/import/resource_importer_obj.cpp
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Octahedral Compression"
+msgstr "ПоÑтави правоугаони регион"
+
+#: editor/import/resource_importer_obj.cpp
+#, fuzzy
+msgid "Optimize Mesh Flags"
+msgstr "Величина:"
+
#: editor/import/resource_importer_scene.cpp
msgid "Import as Single Scene"
msgstr "Увези као једна Ñцена"
@@ -7113,6 +7315,156 @@ msgstr "Увези као више Ñцена"
msgid "Import as Multiple Scenes+Materials"
msgstr "Увези као више Ñцена и материјала"
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Nodes"
+msgstr "Чвор"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Root Type"
+msgstr "Чланови"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Root Name"
+msgstr "Удаљени уређај "
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Root Scale"
+msgstr "Скала:"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Custom Script"
+msgstr "Ðаправи чвор"
+
+#: editor/import/resource_importer_scene.cpp scene/resources/texture.cpp
+#, fuzzy
+msgid "Storage"
+msgstr "Складиштење датотеке:"
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Use Legacy Names"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+#, fuzzy
+msgid "Materials"
+msgstr "Промене материјала"
+
+#: editor/import/resource_importer_scene.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Location"
+msgstr "Локализација"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Keep On Reimport"
+msgstr "Поново увези"
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+#, fuzzy
+msgid "Meshes"
+msgstr "Мрежа"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Ensure Tangents"
+msgstr "Измени тангенту криве"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Light Baking"
+msgstr "Изпеци МапеСенчења"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Lightmap Texel Size"
+msgstr "Изпеци МапеСенчења"
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+msgid "Skins"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Use Named Skins"
+msgstr "КориÑти ЛеÑтвично Лепљење"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "External Files"
+msgstr "Отвори датотеку"
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Store In Subdir"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Filter Script"
+msgstr "Филтрирај Ñкрипте"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Keep Custom Tracks"
+msgstr "ТранÑформација"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Optimizer"
+msgstr "Оптимизуј"
+
+#: editor/import/resource_importer_scene.cpp main/main.cpp
+#: modules/mono/mono_gd/gd_mono.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp scene/2d/camera_2d.cpp scene/2d/light_2d.cpp
+#: scene/2d/navigation_polygon.cpp scene/2d/ray_cast_2d.cpp scene/2d/sprite.cpp
+#: scene/2d/y_sort.cpp scene/3d/audio_stream_player_3d.cpp
+#: scene/3d/baked_lightmap.cpp scene/3d/interpolated_camera.cpp
+#: scene/3d/light.cpp scene/3d/navigation_mesh_instance.cpp
+#: scene/3d/physics_joint.cpp scene/3d/ray_cast.cpp scene/3d/sprite_3d.cpp
+#: scene/gui/graph_edit.cpp scene/gui/rich_text_label.cpp
+#: scene/resources/curve.cpp scene/resources/environment.cpp
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Enabled"
+msgstr "Укључи"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Max Linear Error"
+msgstr "МакÑимална линеарна грешка:"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Max Angular Error"
+msgstr "МакÑимална угаона грешка:"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Max Angle"
+msgstr "ВредноÑÑ‚"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Remove Unused Tracks"
+msgstr "Обриши траку анимације"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Clips"
+msgstr "Звучни Ñлушалац"
+
+#: editor/import/resource_importer_scene.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/particles_2d.cpp scene/3d/area.cpp scene/3d/cpu_particles.cpp
+#: scene/3d/particles.cpp scene/resources/environment.cpp
+#, fuzzy
+msgid "Amount"
+msgstr "Количина:"
+
#: editor/import/resource_importer_scene.cpp
#: editor/plugins/mesh_library_editor_plugin.cpp
msgid "Import Scene"
@@ -7156,12 +7508,149 @@ msgstr ""
msgid "Saving..."
msgstr "Чување..."
+#: editor/import/resource_importer_texture.cpp scene/resources/texture.cpp
+msgid "Lossy Quality"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "HDR Mode"
+msgstr "Одабери режим"
+
+#: editor/import/resource_importer_texture.cpp
+msgid "BPTC LDR"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/mesh_instance_2d.cpp scene/2d/multimesh_instance_2d.cpp
+#: scene/2d/particles_2d.cpp scene/2d/sprite.cpp scene/resources/style_box.cpp
+msgid "Normal Map"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Process"
+msgstr "Ðакон-Обраде"
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Fix Alpha Border"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Premult Alpha"
+msgstr "Измени полигон"
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Hdr As Srgb"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Invert Color"
+msgstr "Тачке"
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Normal Map Invert Y"
+msgstr "ÐаÑумична величина:"
+
+#: editor/import/resource_importer_texture.cpp
+#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
+#: scene/audio/audio_stream_player.cpp scene/gui/video_player.cpp
+msgid "Stream"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Size Limit"
+msgstr "Величина:"
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Detect 3D"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "SVG"
+msgstr "ÐијанÑа ЗаÑићење ВредноÑÑ‚"
+
#: editor/import/resource_importer_texture.cpp
msgid ""
"Warning, no suitable PC VRAM compression enabled in Project Settings. This "
"texture will not display correctly on PC."
msgstr ""
+#: editor/import/resource_importer_texture_atlas.cpp
+#, fuzzy
+msgid "Atlas File"
+msgstr "Величина ивице:"
+
+#: editor/import/resource_importer_texture_atlas.cpp
+#, fuzzy
+msgid "Import Mode"
+msgstr "Режим извоза:"
+
+#: editor/import/resource_importer_texture_atlas.cpp
+#, fuzzy
+msgid "Crop To Region"
+msgstr "ПоÑтави правоугаони регион"
+
+#: editor/import/resource_importer_texture_atlas.cpp
+msgid "Trim Alpha Border From Region"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp scene/2d/physics_body_2d.cpp
+#, fuzzy
+msgid "Force"
+msgstr "Изворна мрежа:"
+
+#: editor/import/resource_importer_wav.cpp
+msgid "8 Bit"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp main/main.cpp
+#: modules/mono/editor/csharp_project.cpp modules/mono/mono_gd/gd_mono.cpp
+msgid "Mono"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+#, fuzzy
+msgid "Max Rate"
+msgstr "ÐœÐ¸ÐºÑ Ñ‡Ð²Ð¾Ñ€"
+
+#: editor/import/resource_importer_wav.cpp
+#, fuzzy
+msgid "Max Rate Hz"
+msgstr "ÐœÐ¸ÐºÑ Ñ‡Ð²Ð¾Ñ€"
+
+#: editor/import/resource_importer_wav.cpp
+msgid "Trim"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+#, fuzzy
+msgid "Normalize"
+msgstr "Формат"
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+#, fuzzy
+msgid "Loop Mode"
+msgstr "Режим померања"
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+#, fuzzy
+msgid "Loop Begin"
+msgstr "Режим померања"
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+#, fuzzy
+msgid "Loop End"
+msgstr "Режим померања"
+
#: editor/import_defaults_editor.cpp
#, fuzzy
msgid "Select Importer"
@@ -7240,6 +7729,30 @@ msgstr "Грешка при учитавању реÑурÑа."
#: editor/inspector_dock.cpp
#, fuzzy
+msgid "Property Name Style"
+msgstr "Има Пројекта:"
+
+#: editor/inspector_dock.cpp scene/gui/color_picker.cpp
+#, fuzzy
+msgid "Raw"
+msgstr "Сиров"
+
+#: editor/inspector_dock.cpp
+#, fuzzy
+msgid "Capitalized"
+msgstr "Велика Ñлова"
+
+#: editor/inspector_dock.cpp
+#, fuzzy
+msgid "Localized"
+msgstr "Локал"
+
+#: editor/inspector_dock.cpp
+msgid "Localization not available for current language."
+msgstr ""
+
+#: editor/inspector_dock.cpp
+#, fuzzy
msgid "Copy Properties"
msgstr "ОÑобине"
@@ -8406,20 +8919,25 @@ msgstr "ЛиценÑа (Z-A)"
#: editor/plugins/asset_library_editor_plugin.cpp
#, fuzzy
+msgctxt "Pagination"
msgid "First"
msgstr "Први"
-#: editor/plugins/asset_library_editor_plugin.cpp scene/gui/control.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
#, fuzzy
+msgctxt "Pagination"
msgid "Previous"
msgstr "Претходни таб"
-#: editor/plugins/asset_library_editor_plugin.cpp scene/gui/control.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgctxt "Pagination"
msgid "Next"
msgstr "Следеће"
#: editor/plugins/asset_library_editor_plugin.cpp
#, fuzzy
+msgctxt "Pagination"
msgid "Last"
msgstr "ПоÑледњи"
@@ -8692,22 +9210,22 @@ msgstr ""
"Када Ñу активни, померање Контролних чворова мења њихова Ñидра умеÑто "
"маргина."
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
#, fuzzy
msgid "Top Left"
msgstr "Горе Лево"
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
#, fuzzy
msgid "Top Right"
msgstr "Горе ДеÑно"
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
#, fuzzy
msgid "Bottom Right"
msgstr "Доле ДеÑно"
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
#, fuzzy
msgid "Bottom Left"
msgstr "Доле Лево"
@@ -9505,6 +10023,19 @@ msgstr "ИÑпечи Ñонде глобалног оÑветљења (GI)"
msgid "Gradient Edited"
msgstr "Ðагиб Измењен"
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+msgid "Swap GradientTexture2D Fill Points"
+msgstr ""
+
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+msgid "Swap Gradient Fill Points"
+msgstr ""
+
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+#, fuzzy
+msgid "Toggle Grid Snap"
+msgstr "Промени режим"
+
#: editor/plugins/item_list_editor_plugin.cpp
msgid "Item %d"
msgstr "Ствар %d"
@@ -9759,9 +10290,9 @@ msgstr ""
"Ðжурирај из Ñцене? :\n"
"%s"
-#: editor/plugins/mesh_library_editor_plugin.cpp modules/gridmap/grid_map.cpp
+#: editor/plugins/mesh_library_editor_plugin.cpp
#, fuzzy
-msgid "Mesh Library"
+msgid "MeshLibrary"
msgstr "Библиотека Мрежа..."
#: editor/plugins/mesh_library_editor_plugin.cpp
@@ -10845,8 +11376,8 @@ msgstr "Везе Ñа методом:"
msgid "Source"
msgstr "Извор"
-#: editor/plugins/script_text_editor.cpp scene/3d/interpolated_camera.cpp
-#: scene/animation/skeleton_ik.cpp
+#: editor/plugins/script_text_editor.cpp platform/uwp/export/export.cpp
+#: scene/3d/interpolated_camera.cpp scene/animation/skeleton_ik.cpp
#, fuzzy
msgid "Target"
msgstr "Мета"
@@ -11924,7 +12455,9 @@ msgstr "Брзина (FPS):"
#: editor/plugins/sprite_frames_editor_plugin.cpp
#: modules/gltf/gltf_animation.cpp modules/minimp3/audio_stream_mp3.cpp
-#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp scene/2d/path_2d.cpp
+#: modules/minimp3/resource_importer_mp3.cpp
+#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp
+#: modules/stb_vorbis/resource_importer_ogg_vorbis.cpp scene/2d/path_2d.cpp
#: scene/3d/path.cpp scene/resources/animation.cpp scene/resources/material.cpp
#, fuzzy
msgid "Loop"
@@ -12930,8 +13463,9 @@ msgstr "Режим ротације"
msgid "Priority"
msgstr "Режим извоза:"
-#: editor/plugins/tile_set_editor_plugin.cpp main/main.cpp scene/gui/button.cpp
-#: scene/gui/item_list.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp main/main.cpp
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#: scene/gui/button.cpp scene/gui/item_list.cpp
msgid "Icon"
msgstr "Икона"
@@ -14565,11 +15099,6 @@ msgstr ""
#: editor/project_export.cpp
#, fuzzy
-msgid "Release"
-msgstr "Издање"
-
-#: editor/project_export.cpp
-#, fuzzy
msgid "Exporting All"
msgstr "Извоз"
@@ -16774,6 +17303,7 @@ msgid "Change AudioStreamPlayer3D Emission Angle"
msgstr "Промени AudioStreamPlayer3D Угао Емитовања"
#: editor/spatial_editor_gizmos.cpp modules/gltf/gltf_node.cpp
+#: platform/osx/export/export.cpp
msgid "Camera"
msgstr ""
@@ -17073,7 +17603,8 @@ msgstr ""
msgid "Use Nvidia Rect Flicker Workaround"
msgstr ""
-#: main/main.cpp platform/uwp/os_uwp.cpp
+#: main/main.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp platform/uwp/os_uwp.cpp
#, fuzzy
msgid "Display"
msgstr "Прикажи нормалу"
@@ -17134,19 +17665,6 @@ msgstr ""
msgid "Allowed"
msgstr ""
-#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp scene/2d/camera_2d.cpp
-#: scene/2d/light_2d.cpp scene/2d/navigation_polygon.cpp
-#: scene/2d/ray_cast_2d.cpp scene/2d/sprite.cpp scene/2d/y_sort.cpp
-#: scene/3d/audio_stream_player_3d.cpp scene/3d/baked_lightmap.cpp
-#: scene/3d/interpolated_camera.cpp scene/3d/light.cpp
-#: scene/3d/navigation_mesh_instance.cpp scene/3d/ray_cast.cpp
-#: scene/3d/sprite_3d.cpp scene/gui/graph_edit.cpp
-#: scene/gui/rich_text_label.cpp scene/resources/curve.cpp
-#: scene/resources/environment.cpp
-#, fuzzy
-msgid "Enabled"
-msgstr "Укључи"
-
#: main/main.cpp
msgid "Intended Usage"
msgstr ""
@@ -17178,13 +17696,14 @@ msgstr ""
msgid "Handheld"
msgstr ""
-#: main/main.cpp
+#: main/main.cpp platform/javascript/export/export.cpp
+#: platform/uwp/export/export.cpp
#, fuzzy
msgid "Orientation"
msgstr "Отвори Документацију"
#: main/main.cpp scene/gui/scroll_container.cpp scene/gui/text_edit.cpp
-#: scene/main/scene_tree.cpp
+#: scene/main/scene_tree.cpp scene/register_scene_types.cpp
#, fuzzy
msgid "Common"
msgstr "Заједница"
@@ -17227,7 +17746,7 @@ msgstr ""
#: main/main.cpp
#, fuzzy
-msgid "Frame Delay (msec)"
+msgid "Frame Delay Msec"
msgstr "Ибор рама"
#: main/main.cpp
@@ -17355,11 +17874,6 @@ msgstr ""
msgid "Tooltip Position Offset"
msgstr "Ротација офÑета:"
-#: main/main.cpp modules/mono/editor/csharp_project.cpp
-#: modules/mono/mono_gd/gd_mono.cpp
-msgid "Mono"
-msgstr ""
-
#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp
#, fuzzy
msgid "Debugger Agent"
@@ -17967,7 +18481,7 @@ msgstr "Боја"
msgid "Intensity"
msgstr ""
-#: modules/gltf/gltf_light.cpp scene/2d/light_2d.cpp
+#: modules/gltf/gltf_light.cpp scene/2d/light_2d.cpp scene/3d/light.cpp
#, fuzzy
msgid "Range"
msgstr "Промени"
@@ -18114,11 +18628,6 @@ msgstr "деÑно"
msgid "Use Named Skin Binds"
msgstr ""
-#: modules/gltf/gltf_state.cpp scene/3d/physics_joint.cpp
-#, fuzzy
-msgid "Nodes"
-msgstr "Чвор"
-
#: modules/gltf/gltf_state.cpp
#, fuzzy
msgid "Buffer Views"
@@ -18130,16 +18639,6 @@ msgstr ""
#: modules/gltf/gltf_state.cpp
#, fuzzy
-msgid "Meshes"
-msgstr "Мрежа"
-
-#: modules/gltf/gltf_state.cpp
-#, fuzzy
-msgid "Materials"
-msgstr "Промене материјала"
-
-#: modules/gltf/gltf_state.cpp
-#, fuzzy
msgid "Scene Name"
msgstr "Пут Ñцене:"
@@ -18155,15 +18654,11 @@ msgstr "Име кореног нода"
msgid "Textures"
msgstr "КарактериÑтике"
-#: modules/gltf/gltf_state.cpp
+#: modules/gltf/gltf_state.cpp platform/uwp/export/export.cpp
msgid "Images"
msgstr ""
#: modules/gltf/gltf_state.cpp
-msgid "Skins"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp
msgid "Cameras"
msgstr ""
@@ -18199,10 +18694,15 @@ msgstr "Покажи коÑти"
#: modules/gridmap/grid_map.cpp
#, fuzzy
+msgid "Mesh Library"
+msgstr "Библиотека Мрежа..."
+
+#: modules/gridmap/grid_map.cpp
+#, fuzzy
msgid "Physics Material"
msgstr "Слика физике %"
-#: modules/gridmap/grid_map.cpp
+#: modules/gridmap/grid_map.cpp scene/3d/visual_instance.cpp
#, fuzzy
msgid "Use In Baked Light"
msgstr "Изпеци МапеСенчења"
@@ -18234,6 +18734,7 @@ msgstr "Средина"
#: modules/gridmap/grid_map.cpp scene/2d/collision_object_2d.cpp
#: scene/2d/tile_map.cpp scene/3d/collision_object.cpp scene/3d/soft_body.cpp
+#: scene/resources/material.cpp
msgid "Mask"
msgstr ""
@@ -18450,7 +18951,9 @@ msgid "Ultra Quality Ray Count"
msgstr ""
#: modules/minimp3/audio_stream_mp3.cpp
+#: modules/minimp3/resource_importer_mp3.cpp
#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp
+#: modules/stb_vorbis/resource_importer_ogg_vorbis.cpp
#, fuzzy
msgid "Loop Offset"
msgstr "ОфÑет:"
@@ -19623,6 +20126,192 @@ msgid "The package must have at least one '.' separator."
msgstr "Паковање мора имати бар један '.' раздвојник."
#: platform/android/export/export_plugin.cpp
+msgid "Use Custom Build"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Export Format"
+msgstr "Извези пројекат"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Keystore"
+msgstr "Дебагер"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Debug User"
+msgstr "Дебагер"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+msgid "Debug Password"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Release User"
+msgstr "Издање"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Release Password"
+msgstr "Издање"
+
+#: platform/android/export/export_plugin.cpp
+msgid "One Click Deploy"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Clear Previous Install"
+msgstr "ИÑтражи Претходну ИнÑтанцу"
+
+#: platform/android/export/export_plugin.cpp scene/resources/shader.cpp
+msgid "Code"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Min SDK"
+msgstr "Величина ивице:"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Target SDK"
+msgstr "Мета"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Package"
+msgstr "Паковање"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Unique Name"
+msgstr "Име чвора:"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Signed"
+msgstr "Сигнали"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Classify As Game"
+msgstr "Име КлаÑе:"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Retain Data On Uninstall"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Exclude From Recents"
+msgstr "Обриши Чворове"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Graphics"
+msgstr "ОфÑет мреже:"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "OpenGL Debug"
+msgstr "Отвори"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "XR Features"
+msgstr "КарактериÑтике"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "XR Mode"
+msgstr "Режим инÑпекције"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Hand Tracking"
+msgstr "Паковање"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Hand Tracking Frequency"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Passthrough"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Immersive Mode"
+msgstr "Режим извоза:"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Support Small"
+msgstr "Подршка..."
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Support Normal"
+msgstr "Подршка..."
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Support Large"
+msgstr "Подршка..."
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Support Xlarge"
+msgstr "Подршка..."
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "User Data Backup"
+msgstr "КориÑнички ИнтерфејÑ"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Allow"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Command Line"
+msgstr "Заједница"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Extra Args"
+msgstr "Додатни аргументи позива:"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "APK Expansion"
+msgstr "ПоÑтави правоугаони регион"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Salt"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Public Key"
+msgstr "Дуплирај кључеве"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Permissions"
+msgstr "МаÑка емиÑије"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Custom Permissions"
+msgstr "Покрени Ñпецифичну Ñцену"
+
+#: platform/android/export/export_plugin.cpp
msgid "Select device from the list"
msgstr "Одабери уређај Ñа лиÑте"
@@ -19958,6 +20647,177 @@ msgid "The character '%s' is not allowed in Identifier."
msgstr "Карактер '%s' није дозвољен као идентификатор."
#: platform/iphone/export/export.cpp
+msgid "App Store Team ID"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Provisioning Profile UUID Debug"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Code Sign Identity Debug"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Export Method Debug"
+msgstr "Извези Ñа ИнÑектицидом"
+
+#: platform/iphone/export/export.cpp
+msgid "Provisioning Profile UUID Release"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Code Sign Identity Release"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Export Method Release"
+msgstr "Режим извоза:"
+
+#: platform/iphone/export/export.cpp
+msgid "Targeted Device Family"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Info"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Identifier"
+msgstr "Ðеважећи идентификатор:"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Signature"
+msgstr "Сигнали"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Short Version"
+msgstr "Верзија:"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Copyright"
+msgstr "Горе ДеÑно"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Capabilities"
+msgstr "ОÑобине"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Access Wi-Fi"
+msgstr "УÑпех!"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Push Notifications"
+msgstr "ÐаÑумична ротација:"
+
+#: platform/iphone/export/export.cpp scene/3d/baked_lightmap.cpp
+#, fuzzy
+msgid "User Data"
+msgstr "КориÑнички ИнтерфејÑ"
+
+#: platform/iphone/export/export.cpp
+msgid "Accessible From Files App"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Accessible From Itunes Sharing"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Privacy"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Camera Usage Description"
+msgstr "ОпиÑ"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Microphone Usage Description"
+msgstr "ОпиÑи ОÑобина"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Photolibrary Usage Description"
+msgstr "ОпиÑи ОÑобина"
+
+#: platform/iphone/export/export.cpp
+msgid "iPhone 120 X 120"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPhone 180 X 180"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 76 X 76"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 152 X 152"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 167 X 167"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "App Store 1024 X 1024"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Spotlight 40 X 40"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Spotlight 80 X 80"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Storyboard"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Use Launch Screen Storyboard"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Image Scale Mode"
+msgstr "Режим Увећања"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Custom Image @2x"
+msgstr "Ðаправи чвор"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Custom Image @3x"
+msgstr "Ðаправи чвор"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Use Custom BG Color"
+msgstr "Ðаправи чвор"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Custom BG Color"
+msgstr "Ðаправи чвор"
+
+#: platform/iphone/export/export.cpp
#, fuzzy
msgid "App Store Team ID not specified - cannot configure the project."
msgstr ""
@@ -20005,6 +20865,80 @@ msgstr "ÐеуÑпело упиÑивање фајла:"
#: platform/javascript/export/export.cpp
#, fuzzy
+msgid "Variant"
+msgstr "ОдвојеноÑÑ‚:"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Export Type"
+msgstr "Извоз"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "VRAM Texture Compression"
+msgstr "ПоÑтави правоугаони регион"
+
+#: platform/javascript/export/export.cpp
+msgid "For Desktop"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "For Mobile"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Html"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Export Icon"
+msgstr "Прошири Ñве"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Custom Html Shell"
+msgstr "Ðаправи чвор"
+
+#: platform/javascript/export/export.cpp
+msgid "Head Include"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Canvas Resize Policy"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Focus Canvas On Start"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Experimental Virtual Keyboard"
+msgstr "Филтрирај датотеке..."
+
+#: platform/javascript/export/export.cpp
+msgid "Progressive Web App"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Offline Page"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 144 X 144"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 180 X 180"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 512 X 512"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
msgid "Could not read HTML shell:"
msgstr "ÐеуÑпешно читаље произвољне HTML шкољке:"
@@ -20120,6 +21054,201 @@ msgid "Unknown object type."
msgstr ""
#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "App Category"
+msgstr "Категорија:"
+
+#: platform/osx/export/export.cpp
+msgid "High Res"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Location Usage Description"
+msgstr "ОпиÑ"
+
+#: platform/osx/export/export.cpp
+msgid "Address Book Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Calendar Usage Description"
+msgstr "ОпиÑ"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Photos Library Usage Description"
+msgstr "ОпиÑи ОÑобина"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Desktop Folder Usage Description"
+msgstr "ОпиÑи Метода"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Documents Folder Usage Description"
+msgstr "ОпиÑи Метода"
+
+#: platform/osx/export/export.cpp
+msgid "Downloads Folder Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Network Volumes Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Removable Volumes Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#, fuzzy
+msgid "Codesign"
+msgstr "Чвор"
+
+#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Identity"
+msgstr "Увучи лево"
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#, fuzzy
+msgid "Timestamp"
+msgstr "Време:"
+
+#: platform/osx/export/export.cpp
+msgid "Hardened Runtime"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Replace Existing Signature"
+msgstr "Замени Ñве"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Entitlements"
+msgstr "Прикажи Ñправице"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Custom File"
+msgstr "Ðаправи чвор"
+
+#: platform/osx/export/export.cpp
+msgid "Allow JIT Code Execution"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Allow Unsigned Executable Memory"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Allow Dyld Environment Variables"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Disable Library Validation"
+msgstr "Онемогућено"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Audio Input"
+msgstr "Додај улаз"
+
+#: platform/osx/export/export.cpp
+msgid "Address Book"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Calendars"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Photos Library"
+msgstr "Извези библиотеку"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Apple Events"
+msgstr "Додај Догађај"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Debugging"
+msgstr "Дебаг"
+
+#: platform/osx/export/export.cpp
+msgid "App Sandbox"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Network Server"
+msgstr "Мрежни ОÑматрач"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Network Client"
+msgstr "Мрежни ОÑматрач"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Device Usb"
+msgstr "Уређаји"
+
+#: platform/osx/export/export.cpp
+msgid "Device Bluetooth"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Files Downloads"
+msgstr "Преучми"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Files Pictures"
+msgstr "КарактериÑтике"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Files Music"
+msgstr "Датотека"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Files Movies"
+msgstr "Филтрирај датотеке..."
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#, fuzzy
+msgid "Custom Options"
+msgstr "ПоÑтавке баÑа"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Notarization"
+msgstr "Локализација"
+
+#: platform/osx/export/export.cpp
+msgid "Apple ID Name"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Apple ID Password"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Apple Team ID"
+msgstr ""
+
+#: platform/osx/export/export.cpp
msgid ""
"Note: The notarization process generally takes less than an hour. When the "
"process is completed, you'll receive an email."
@@ -20314,6 +21443,136 @@ msgstr ""
#: platform/uwp/export/export.cpp
#, fuzzy
+msgid "Architecture"
+msgstr "Додај архитектуру уноÑ"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Display Name"
+msgstr "Прикажи нормалу"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Short Name"
+msgstr "Име Скрипте:"
+
+#: platform/uwp/export/export.cpp
+msgid "Publisher"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Publisher Display Name"
+msgstr "Ðеважеће приказно име издавача паковања."
+
+#: platform/uwp/export/export.cpp
+msgid "Product Guid"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Publisher Guid"
+msgstr "Обриши позу"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Signing"
+msgstr "Сигнали"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Certificate"
+msgstr "Тачке"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Algorithm"
+msgstr "Дебагер"
+
+#: platform/uwp/export/export.cpp
+msgid "Major"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Minor"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Build"
+msgstr "Режим Мерења"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Revision"
+msgstr "ПоÑтави правоугаони регион"
+
+#: platform/uwp/export/export.cpp
+msgid "Landscape"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Portrait"
+msgstr "Обрни Хоризонтално"
+
+#: platform/uwp/export/export.cpp
+msgid "Landscape Flipped"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Portrait Flipped"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Store Logo"
+msgstr "Режим Увећања"
+
+#: platform/uwp/export/export.cpp
+msgid "Square 44 X 44 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 71 X 71 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 150 X 150 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 310 X 310 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Wide 310 X 150 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Splash Screen"
+msgstr "Позиви цртања"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Tiles"
+msgstr "Датотека"
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Square 150 X 150"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Wide 310 X 150"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Square 310 X 310"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
msgid "Invalid package short name."
msgstr "Ðеважеће кратко име паковања."
@@ -20391,15 +21650,53 @@ msgid "Debug Certificate"
msgstr ""
#: platform/uwp/export/export.cpp
-msgid "Debug Password"
+#, fuzzy
+msgid "Debug Algorithm"
+msgstr "Дебагер"
+
+#: platform/windows/export/export.cpp
+msgid "Identity Type"
msgstr ""
-#: platform/uwp/export/export.cpp
+#: platform/windows/export/export.cpp
+msgid "Timestamp Server URL"
+msgstr ""
+
+#: platform/windows/export/export.cpp
#, fuzzy
-msgid "Debug Algorithm"
+msgid "Digest Algorithm"
msgstr "Дебагер"
#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "File Version"
+msgstr "Верзија:"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Product Version"
+msgstr "Ðеважећи GUID продукт."
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Company Name"
+msgstr "Име чвора:"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Product Name"
+msgstr "Има Пројекта:"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "File Description"
+msgstr "ОпиÑ"
+
+#: platform/windows/export/export.cpp
+msgid "Trademarks"
+msgstr ""
+
+#: platform/windows/export/export.cpp
msgid ""
"The rcedit tool must be configured in the Editor Settings (Export > Windows "
"> Rcedit) to change the icon or app information data."
@@ -20475,12 +21772,14 @@ msgstr "Покрени"
msgid "Centered"
msgstr "Средина"
-#: scene/2d/animated_sprite.cpp scene/2d/camera_2d.cpp scene/2d/light_2d.cpp
+#: scene/2d/animated_sprite.cpp scene/2d/camera_2d.cpp
+#: scene/2d/cpu_particles_2d.cpp scene/2d/light_2d.cpp
#: scene/2d/parallax_background.cpp scene/2d/parallax_layer.cpp
#: scene/2d/path_2d.cpp scene/2d/polygon_2d.cpp scene/2d/sprite.cpp
-#: scene/3d/path.cpp scene/3d/physics_body.cpp scene/3d/sprite_3d.cpp
-#: scene/gui/graph_node.cpp scene/gui/rich_text_effect.cpp
-#: scene/main/canvas_layer.cpp scene/resources/material.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/path.cpp scene/3d/physics_body.cpp
+#: scene/3d/sprite_3d.cpp scene/gui/graph_node.cpp
+#: scene/gui/rich_text_effect.cpp scene/main/canvas_layer.cpp
+#: scene/resources/material.cpp scene/resources/particles_material.cpp
#: scene/resources/style_box.cpp
#, fuzzy
msgid "Offset"
@@ -20555,11 +21854,6 @@ msgstr "Додај звучни баÑ"
msgid "Override"
msgstr "ПрепиÑке"
-#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
-#: scene/audio/audio_stream_player.cpp scene/gui/video_player.cpp
-msgid "Stream"
-msgstr ""
-
#: scene/2d/audio_stream_player_2d.cpp scene/audio/audio_stream_player.cpp
#: scene/gui/video_player.cpp servers/audio/effects/audio_effect_amplify.cpp
#, fuzzy
@@ -20586,13 +21880,13 @@ msgid "Stream Paused"
msgstr ""
#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
-#: scene/3d/reflection_probe.cpp scene/3d/visual_instance.cpp
-#: scene/resources/material.cpp
+#: scene/3d/light.cpp scene/3d/reflection_probe.cpp
+#: scene/3d/visual_instance.cpp scene/resources/material.cpp
#, fuzzy
msgid "Max Distance"
msgstr "Одабери ОдÑтојање:"
-#: scene/2d/audio_stream_player_2d.cpp
+#: scene/2d/audio_stream_player_2d.cpp scene/3d/light.cpp
#, fuzzy
msgid "Attenuation"
msgstr "Ðнимација"
@@ -20648,6 +21942,24 @@ msgstr "Режим померања"
msgid "Limit"
msgstr ""
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/style_box.cpp
+#, fuzzy
+msgid "Left"
+msgstr "Горе Лево"
+
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/style_box.cpp
+#, fuzzy
+msgid "Right"
+msgstr "деÑно"
+
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/dynamic_font.cpp scene/resources/style_box.cpp
+#, fuzzy
+msgid "Bottom"
+msgstr "Доле Лево"
+
#: scene/2d/camera_2d.cpp
#, fuzzy
msgid "Smoothed"
@@ -20889,13 +22201,6 @@ msgstr ""
msgid "Emitting"
msgstr "ПоÑтавке"
-#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp scene/3d/area.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
-#: scene/resources/environment.cpp
-#, fuzzy
-msgid "Amount"
-msgstr "Количина:"
-
#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp
#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
msgid "Lifetime"
@@ -20960,18 +22265,13 @@ msgstr ""
#: scene/2d/mesh_instance_2d.cpp scene/2d/multimesh_instance_2d.cpp
#: scene/2d/particles_2d.cpp scene/2d/polygon_2d.cpp scene/2d/sprite.cpp
#: scene/3d/sprite_3d.cpp scene/gui/nine_patch_rect.cpp
-#: scene/gui/texture_rect.cpp scene/resources/sky.cpp
-#: scene/resources/style_box.cpp scene/resources/visual_shader_nodes.cpp
+#: scene/gui/texture_rect.cpp scene/resources/material.cpp
+#: scene/resources/sky.cpp scene/resources/style_box.cpp
+#: scene/resources/visual_shader_nodes.cpp
#, fuzzy
msgid "Texture"
msgstr "ТекÑÑ‚"
-#: scene/2d/cpu_particles_2d.cpp scene/2d/mesh_instance_2d.cpp
-#: scene/2d/multimesh_instance_2d.cpp scene/2d/particles_2d.cpp
-#: scene/2d/sprite.cpp scene/resources/style_box.cpp
-msgid "Normal Map"
-msgstr ""
-
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
#, fuzzy
@@ -20995,10 +22295,10 @@ msgid "Normals"
msgstr "Формат"
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/3d/sprite_3d.cpp scene/resources/material.cpp
-#: scene/resources/particles_material.cpp scene/resources/texture.cpp
-msgid "Flags"
-msgstr ""
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Align Y"
+msgstr "Додели"
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
@@ -21019,6 +22319,12 @@ msgid "Initial Velocity"
msgstr "Велика Ñлова"
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Velocity Random"
+msgstr "Велика Ñлова"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp servers/physics_2d_server.cpp
#: servers/physics_server.cpp
msgid "Angular Velocity"
@@ -21026,6 +22332,12 @@ msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Velocity Curve"
+msgstr "Велика Ñлова"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
msgid "Orbit Velocity"
msgstr ""
@@ -21037,6 +22349,23 @@ msgstr "Линеаран"
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Accel"
+msgstr "УÑпех!"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Accel Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Accel Curve"
+msgstr "Подели Криву"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
msgid "Radial Accel"
msgstr ""
@@ -21046,19 +22375,55 @@ msgid "Tangential Accel"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/2d/joints_2d.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/vehicle_body.cpp
-#: scene/resources/particles_material.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/physics_joint.cpp
+#: scene/3d/vehicle_body.cpp scene/resources/particles_material.cpp
#: servers/audio/effects/audio_effect_reverb.cpp
msgid "Damping"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+msgid "Damping Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Damping Curve"
+msgstr "Подели Криву"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp scene/3d/light.cpp
+#: scene/resources/particles_material.cpp
msgid "Angle"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+msgid "Angle Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Angle Curve"
+msgstr "Затвори криву"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#, fuzzy
+msgid "Scale Amount"
+msgstr "Количина:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+msgid "Scale Amount Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#, fuzzy
+msgid "Scale Amount Curve"
+msgstr "Увећај од курÑора"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
#, fuzzy
msgid "Color Ramp"
msgstr "Боја"
@@ -21074,6 +22439,48 @@ msgstr ""
msgid "Hue Variation"
msgstr "ОдвојеноÑÑ‚:"
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Variation"
+msgstr "ОдвојеноÑÑ‚:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Variation Random"
+msgstr "ОдвојеноÑÑ‚:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Variation Curve"
+msgstr "ОдвојеноÑÑ‚:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Speed Random"
+msgstr "Скала:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Speed Curve"
+msgstr "Подели Криву"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Offset Random"
+msgstr "ОфÑет:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Offset Curve"
+msgstr "Затвори криву"
+
#: scene/2d/joints_2d.cpp
msgid "Node A and Node B must be PhysicsBody2Ds"
msgstr ""
@@ -21105,6 +22512,7 @@ msgid "Node B"
msgstr "Чвор"
#: scene/2d/joints_2d.cpp scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp
+#: scene/3d/light.cpp scene/3d/physics_joint.cpp
#: scene/resources/environment.cpp
msgid "Bias"
msgstr ""
@@ -21114,7 +22522,7 @@ msgstr ""
msgid "Disable Collision"
msgstr "Онемогућено"
-#: scene/2d/joints_2d.cpp
+#: scene/2d/joints_2d.cpp scene/3d/physics_joint.cpp
msgid "Softness"
msgstr ""
@@ -21132,7 +22540,7 @@ msgstr "Велика Ñлова"
msgid "Rest Length"
msgstr ""
-#: scene/2d/joints_2d.cpp scene/3d/vehicle_body.cpp
+#: scene/2d/joints_2d.cpp scene/3d/physics_joint.cpp scene/3d/vehicle_body.cpp
msgid "Stiffness"
msgstr ""
@@ -21155,7 +22563,7 @@ msgid "Texture Scale"
msgstr "Регион текÑтуре"
#: scene/2d/light_2d.cpp scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp
-#: scene/resources/environment.cpp scene/resources/sky.cpp
+#: scene/3d/light.cpp scene/resources/environment.cpp scene/resources/sky.cpp
msgid "Energy"
msgstr ""
@@ -21196,12 +22604,6 @@ msgstr "Поглед позади"
msgid "Gradient Length"
msgstr "Ðагиб Измењен"
-#: scene/2d/light_2d.cpp scene/gui/control.cpp
-#: scene/resources/navigation_mesh.cpp
-#, fuzzy
-msgid "Filter"
-msgstr "Филтери..."
-
#: scene/2d/light_2d.cpp
#, fuzzy
msgid "Filter Smooth"
@@ -21647,11 +23049,6 @@ msgid "Applied Forces"
msgstr ""
#: scene/2d/physics_body_2d.cpp
-#, fuzzy
-msgid "Force"
-msgstr "Изворна мрежа:"
-
-#: scene/2d/physics_body_2d.cpp
msgid "Torque"
msgstr ""
@@ -21667,7 +23064,7 @@ msgstr "Слика физике %"
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
#, fuzzy
-msgid "Moving platform"
+msgid "Moving Platform"
msgstr "Платформа"
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
@@ -21676,7 +23073,7 @@ msgstr ""
#: scene/2d/physics_body_2d.cpp scene/2d/touch_screen_button.cpp
#: scene/3d/physics_body.cpp scene/gui/texture_button.cpp
-#: scene/resources/line_shape_2d.cpp
+#: scene/resources/line_shape_2d.cpp scene/resources/material.cpp
#, fuzzy
msgid "Normal"
msgstr "Формат"
@@ -21928,6 +23325,34 @@ msgstr ""
"ВидљивоÑтОмогућивач2Д ради најбоље кад Ñе кориÑти Ñа измењеним кореном Ñцене "
"као родитељем."
+#: scene/2d/visibility_notifier_2d.cpp scene/3d/visibility_notifier.cpp
+#, fuzzy
+msgid "Pause Animations"
+msgstr "Ðалепи анимацију"
+
+#: scene/2d/visibility_notifier_2d.cpp scene/3d/visibility_notifier.cpp
+msgid "Freeze Bodies"
+msgstr ""
+
+#: scene/2d/visibility_notifier_2d.cpp
+#, fuzzy
+msgid "Pause Particles"
+msgstr "ЧеÑтице"
+
+#: scene/2d/visibility_notifier_2d.cpp
+#, fuzzy
+msgid "Pause Animated Sprites"
+msgstr "Ðалепи анимацију"
+
+#: scene/2d/visibility_notifier_2d.cpp
+#, fuzzy
+msgid "Process Parent"
+msgstr "Уреди филтере"
+
+#: scene/2d/visibility_notifier_2d.cpp
+msgid "Physics Process Parent"
+msgstr ""
+
#: scene/3d/area.cpp
msgid "Reverb Bus"
msgstr ""
@@ -22033,6 +23458,7 @@ msgid "Attenuation Filter"
msgstr ""
#: scene/3d/audio_stream_player_3d.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
#: servers/audio/effects/audio_effect_filter.cpp
msgid "Cutoff Hz"
msgstr ""
@@ -22077,11 +23503,6 @@ msgid "Octree"
msgstr "Под-Ñтабло"
#: scene/3d/baked_lightmap.cpp
-#, fuzzy
-msgid "User Data"
-msgstr "КориÑнички ИнтерфејÑ"
-
-#: scene/3d/baked_lightmap.cpp
msgid "Finding meshes and lights"
msgstr ""
@@ -22369,6 +23790,16 @@ msgid "Ring Axis"
msgstr "Упозорење"
#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Rotate Y"
+msgstr "Режим ротације"
+
+#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Disable Z"
+msgstr "Онемогућено"
+
+#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
msgid "Flatness"
msgstr ""
@@ -22409,17 +23840,12 @@ msgstr "Динамичка Библиотека"
msgid "Dynamic Range"
msgstr "Динамичка Библиотека"
-#: scene/3d/gi_probe.cpp
+#: scene/3d/gi_probe.cpp scene/3d/light.cpp
msgid "Normal Bias"
msgstr ""
#: scene/3d/gi_probe.cpp
#, fuzzy
-msgid "Compress"
-msgstr "Компоненте"
-
-#: scene/3d/gi_probe.cpp
-#, fuzzy
msgid "Plotting Meshes"
msgstr "Сковане Мреже"
@@ -22451,16 +23877,31 @@ msgstr ""
#: scene/3d/light.cpp
#, fuzzy
+msgid "Indirect Energy"
+msgstr "Боје емиÑије"
+
+#: scene/3d/light.cpp
+#, fuzzy
msgid "Negative"
msgstr "GDNative"
#: scene/3d/light.cpp
#, fuzzy
+msgid "Specular"
+msgstr "Режим Мерења"
+
+#: scene/3d/light.cpp
+#, fuzzy
msgid "Bake Mode"
msgstr "Режим ротације"
#: scene/3d/light.cpp
#, fuzzy
+msgid "Contact"
+msgstr "Одабери боју"
+
+#: scene/3d/light.cpp
+#, fuzzy
msgid "Reverse Cull Face"
msgstr "РеÑетуј јачину баÑа"
@@ -22471,11 +23912,31 @@ msgstr "Смерови"
#: scene/3d/light.cpp
#, fuzzy
+msgid "Split 1"
+msgstr "Раздели пут"
+
+#: scene/3d/light.cpp
+#, fuzzy
+msgid "Split 2"
+msgstr "Раздели пут"
+
+#: scene/3d/light.cpp
+#, fuzzy
+msgid "Split 3"
+msgstr "Раздели пут"
+
+#: scene/3d/light.cpp
+#, fuzzy
msgid "Blend Splits"
msgstr "Времена мешања:"
#: scene/3d/light.cpp
#, fuzzy
+msgid "Bias Split Scale"
+msgstr "КориÑти ЛеÑтвично Лепљење"
+
+#: scene/3d/light.cpp
+#, fuzzy
msgid "Depth Range"
msgstr "Дубина"
@@ -22502,6 +23963,11 @@ msgstr "ТачкаСветло Ñа углом ширим од 90 Ñтепени
msgid "Spot"
msgstr ""
+#: scene/3d/light.cpp
+#, fuzzy
+msgid "Angle Attenuation"
+msgstr "Ðнимација"
+
#: scene/3d/mesh_instance.cpp
msgid "Software Skinning"
msgstr ""
@@ -22643,6 +24109,63 @@ msgstr "ОÑе"
#: scene/3d/physics_body.cpp
#, fuzzy
+msgid "Linear X"
+msgstr "Линеаран"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Linear Y"
+msgstr "Линеаран"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Linear Z"
+msgstr "Линеаран"
+
+#: scene/3d/physics_body.cpp
+msgid "Angular X"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Angular Y"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Angular Z"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Motion X"
+msgstr "Радња"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Motion Y"
+msgstr "Радња"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Motion Z"
+msgstr "Радња"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Move Lock X"
+msgstr "Помери Чвор"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Move Lock Y"
+msgstr "Помери Чвор"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Move Lock Z"
+msgstr "Помери Чвор"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
msgid "Body Offset"
msgstr "ОфÑет:"
@@ -22676,6 +24199,15 @@ msgid "Exclude Nodes"
msgstr "Обриши Чворове"
#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Params"
+msgstr "Промене материјала"
+
+#: scene/3d/physics_joint.cpp
+msgid "Impulse Clamp"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit"
msgstr ""
@@ -22689,6 +24221,55 @@ msgstr "Велика Ñлова"
msgid "Lower"
msgstr "Мала Ñлова"
+#: scene/3d/physics_joint.cpp scene/3d/vehicle_body.cpp
+#, fuzzy
+msgid "Relaxation"
+msgstr "ОдвојеноÑÑ‚:"
+
+#: scene/3d/physics_joint.cpp
+msgid "Motor"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Target Velocity"
+msgstr "Велика Ñлова"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Max Impulse"
+msgstr "Брзина (FPS):"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit"
+msgstr "Линеаран"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Upper Distance"
+msgstr "Одабери ОдÑтојање:"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Lower Distance"
+msgstr "Одабери ОдÑтојање:"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Restitution"
+msgstr "ОпиÑ"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motion"
+msgstr "Велика Ñлова"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Ortho"
+msgstr "Ортогонална пројекција"
+
#: scene/3d/physics_joint.cpp
#, fuzzy
msgid "Upper Angle"
@@ -22701,6 +24282,16 @@ msgstr "Мала Ñлова"
#: scene/3d/physics_joint.cpp
#, fuzzy
+msgid "Angular Motion"
+msgstr "Ðнимација"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Angular Ortho"
+msgstr "МакÑимална угаона грешка:"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
msgid "Swing Span"
msgstr "Чување Ñцене"
@@ -22709,17 +24300,99 @@ msgid "Twist Span"
msgstr ""
#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit X"
+msgstr "Линеаран"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motor X"
+msgstr "Велика Ñлова"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Force Limit"
+msgstr "Позиви цртања"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Spring X"
+msgstr "Линеаран"
+
+#: scene/3d/physics_joint.cpp
+msgid "Equilibrium Point"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit X"
msgstr ""
#: scene/3d/physics_joint.cpp
+msgid "Erp"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Motor X"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Spring X"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit Y"
+msgstr "Линеаран"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motor Y"
+msgstr "Велика Ñлова"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Spring Y"
+msgstr "Линеаран"
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit Y"
msgstr ""
#: scene/3d/physics_joint.cpp
+msgid "Angular Motor Y"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Spring Y"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit Z"
+msgstr "Линеаран"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motor Z"
+msgstr "Велика Ñлова"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Spring Z"
+msgstr "Линеаран"
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit Z"
msgstr ""
+#: scene/3d/physics_joint.cpp
+msgid "Angular Motor Z"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Spring Z"
+msgstr ""
+
#: scene/3d/portal.cpp
msgid "The RoomManager should not be a child or grandchild of a Portal."
msgstr ""
@@ -22840,7 +24513,7 @@ msgstr ""
msgid "Use Default Simplify"
msgstr ""
-#: scene/3d/room.cpp
+#: scene/3d/room.cpp scene/3d/room_manager.cpp
msgid "Room Simplify"
msgstr ""
@@ -22879,6 +24552,13 @@ msgstr ""
msgid "Main"
msgstr ""
+#: scene/3d/room_manager.cpp scene/animation/animation_player.cpp
+#: scene/animation/animation_tree.cpp scene/animation/animation_tree_player.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+#, fuzzy
+msgid "Active"
+msgstr "Радња"
+
#: scene/3d/room_manager.cpp
msgid "Roomlist"
msgstr ""
@@ -22903,6 +24583,54 @@ msgid "Gameplay"
msgstr ""
#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Gameplay Monitor"
+msgstr "Монитор"
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Use Secondary PVS"
+msgstr "КориÑти ЛеÑтвично Лепљење"
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Merge Meshes"
+msgstr "Мрежа"
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Show Margins"
+msgstr "Прикажи центар"
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Debug Sprawl"
+msgstr "Дебаг"
+
+#: scene/3d/room_manager.cpp
+msgid "Overlap Warning Threshold"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Preview Camera"
+msgstr "Преглед"
+
+#: scene/3d/room_manager.cpp
+msgid "Portal Depth Limit"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Default Portal Margin"
+msgstr "ПоÑтави дршку"
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Roaming Expansion Margin"
+msgstr "Прошири Ñве"
+
+#: scene/3d/room_manager.cpp
msgid ""
"RoomList path is invalid.\n"
"Please check the RoomList branch has been assigned in the RoomManager."
@@ -23032,6 +24760,20 @@ msgstr "Лепљење по пикÑелу"
msgid "Billboard"
msgstr ""
+#: scene/3d/sprite_3d.cpp scene/resources/material.cpp
+#, fuzzy
+msgid "Transparent"
+msgstr "Преокрени"
+
+#: scene/3d/sprite_3d.cpp
+#, fuzzy
+msgid "Shaded"
+msgstr "Шејдер"
+
+#: scene/3d/sprite_3d.cpp
+msgid "Double Sided"
+msgstr ""
+
#: scene/3d/sprite_3d.cpp
msgid "Alpha Cut"
msgstr ""
@@ -23109,11 +24851,6 @@ msgstr "ПоÑтави правоугаони регион"
msgid "Max Force"
msgstr "Грешка"
-#: scene/3d/vehicle_body.cpp
-#, fuzzy
-msgid "Relaxation"
-msgstr "ОдвојеноÑÑ‚:"
-
#: scene/3d/visibility_notifier.cpp
msgid "AABB"
msgstr ""
@@ -23260,7 +24997,7 @@ msgstr "X-Fade време (Ñек.):"
#: scene/animation/animation_blend_tree.cpp
#, fuzzy
-msgid "autorestart_"
+msgid "Auto Restart"
msgstr "ÐутоматÑко реÑтартовање:"
#: scene/animation/animation_blend_tree.cpp
@@ -23346,13 +25083,6 @@ msgstr "ОпиÑ:"
msgid "Default Blend Time"
msgstr "Уобичајено"
-#: scene/animation/animation_player.cpp scene/animation/animation_tree.cpp
-#: scene/animation/animation_tree_player.cpp
-#: servers/audio/effects/audio_effect_delay.cpp
-#, fuzzy
-msgid "Active"
-msgstr "Радња"
-
#: scene/animation/animation_player.cpp
msgid "Method Call Mode"
msgstr ""
@@ -23484,10 +25214,6 @@ msgstr "Промени оца Чвору"
msgid "Max Iterations"
msgstr "Промени векторÑку функцију"
-#: scene/animation/tween.cpp scene/resources/texture.cpp
-msgid "Repeat"
-msgstr ""
-
#: scene/animation/tween.cpp
msgid "Playback Process Mode"
msgstr ""
@@ -23518,20 +25244,6 @@ msgstr "Одабери режим"
msgid "Alignment"
msgstr ""
-#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
-#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
-#: scene/resources/style_box.cpp
-#, fuzzy
-msgid "Horizontal"
-msgstr "Хоризонтално:"
-
-#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
-#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
-#: scene/resources/style_box.cpp
-#, fuzzy
-msgid "Vertical"
-msgstr "Вертикално:"
-
#: scene/gui/base_button.cpp
#, fuzzy
msgid "Shortcut In Tooltip"
@@ -23637,11 +25349,6 @@ msgstr "ÐијанÑа ЗаÑићење ВредноÑÑ‚"
#: scene/gui/color_picker.cpp
#, fuzzy
-msgid "Raw"
-msgstr "Сиров"
-
-#: scene/gui/color_picker.cpp
-#, fuzzy
msgid "Switch between hexadecimal and code values."
msgstr "Пребаци између хекÑадецималних и кодних вредноÑти."
@@ -23711,6 +25418,32 @@ msgid "Focus"
msgstr "ФокуÑирај пут"
#: scene/gui/control.cpp
+msgid "Neighbour Left"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Neighbour Top"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Neighbour Right"
+msgstr ""
+
+#: scene/gui/control.cpp
+#, fuzzy
+msgid "Neighbour Bottom"
+msgstr "Средина Доле"
+
+#: scene/gui/control.cpp
+msgid "Next"
+msgstr "Следеће"
+
+#: scene/gui/control.cpp
+#, fuzzy
+msgid "Previous"
+msgstr "Претходни таб"
+
+#: scene/gui/control.cpp
msgid "Mouse"
msgstr ""
@@ -23748,7 +25481,7 @@ msgid "Dialog"
msgstr "XForm дијалог"
#: scene/gui/dialogs.cpp
-msgid "Hide On Ok"
+msgid "Hide On OK"
msgstr ""
#: scene/gui/dialogs.cpp scene/gui/label.cpp
@@ -23850,7 +25583,7 @@ msgid "Timers"
msgstr "Време:"
#: scene/gui/item_list.cpp scene/gui/popup_menu.cpp scene/gui/tree.cpp
-msgid "Incremental Search Max Interval (msec)"
+msgid "Incremental Search Max Interval Msec"
msgstr ""
#: scene/gui/item_list.cpp scene/gui/tree.cpp
@@ -24437,6 +26170,26 @@ msgstr "Средина Лево"
msgid "Nine Patch Stretch"
msgstr "Ðнимациони чвор"
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Left"
+msgstr "ПоÑтави дршку"
+
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Top"
+msgstr "ПоÑтави дршку"
+
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Right"
+msgstr "ПоÑтави дршку"
+
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Bottom"
+msgstr "Одабери режим"
+
#: scene/gui/tree.cpp
msgid "Custom Minimum Height"
msgstr ""
@@ -24475,8 +26228,9 @@ msgid "Paused"
msgstr ""
#: scene/gui/video_player.cpp
-msgid "Buffering (msec)"
-msgstr ""
+#, fuzzy
+msgid "Buffering Msec"
+msgstr "Поглед позади"
#: scene/gui/video_player.cpp
#, fuzzy
@@ -24833,6 +26587,22 @@ msgid "Shadow Atlas"
msgstr "Ðов ÐтлаÑ"
#: scene/main/viewport.cpp
+msgid "Quad 0"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 1"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 2"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 3"
+msgstr ""
+
+#: scene/main/viewport.cpp
#, fuzzy
msgid "Canvas Transform"
msgstr "ОчиÑти ТранÑформацију"
@@ -24847,6 +26617,11 @@ msgid "Tooltip Delay (sec)"
msgstr ""
#: scene/register_scene_types.cpp
+#, fuzzy
+msgid "Swap OK Cancel"
+msgstr "Откажи"
+
+#: scene/register_scene_types.cpp
msgid "Use hiDPI"
msgstr ""
@@ -24861,21 +26636,6 @@ msgid "Custom Font"
msgstr "Ðаправи чвор"
#: scene/resources/audio_stream_sample.cpp
-#, fuzzy
-msgid "Loop Mode"
-msgstr "Режим померања"
-
-#: scene/resources/audio_stream_sample.cpp
-#, fuzzy
-msgid "Loop Begin"
-msgstr "Режим померања"
-
-#: scene/resources/audio_stream_sample.cpp
-#, fuzzy
-msgid "Loop End"
-msgstr "Режим померања"
-
-#: scene/resources/audio_stream_sample.cpp
#: servers/audio/effects/audio_stream_generator.cpp servers/audio_server.cpp
#, fuzzy
msgid "Mix Rate"
@@ -24935,6 +26695,17 @@ msgstr "ОпиÑ:"
#: scene/resources/dynamic_font.cpp
#, fuzzy
+msgid "Char"
+msgstr "Важећа Ñлова:"
+
+#: scene/resources/dynamic_font.cpp scene/resources/world.cpp
+#: scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Space"
+msgstr "Главна Сцена"
+
+#: scene/resources/dynamic_font.cpp
+#, fuzzy
msgid "Font"
msgstr "Фонт"
@@ -25162,6 +26933,43 @@ msgid "Glow"
msgstr ""
#: scene/resources/environment.cpp
+#, fuzzy
+msgid "Levels"
+msgstr "Девелопери"
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "1"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "2"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "3"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "4"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "5"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "6"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "7"
+msgstr ""
+
+#: scene/resources/environment.cpp
msgid "Bloom"
msgstr ""
@@ -25254,10 +27062,68 @@ msgid "Next Pass"
msgstr "Следећа Раван"
#: scene/resources/material.cpp
+msgid "Use Shadow To Opacity"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Unshaded"
+msgstr "Прикажи неоÑенчен"
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Vertex Lighting"
+msgstr "Смерови"
+
+#: scene/resources/material.cpp
+msgid "No Depth Test"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Use Point Size"
+msgstr "Поглед иÑпред"
+
+#: scene/resources/material.cpp
+msgid "World Triplanar"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Fixed Size"
+msgstr "Поглед иÑпред"
+
+#: scene/resources/material.cpp
+msgid "Albedo Tex Force sRGB"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Do Not Receive Shadows"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Disable Ambient Light"
+msgstr "Увучи деÑно"
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Ensure Correct Normals"
+msgstr "ТранÑформација прекинута."
+
+#: scene/resources/material.cpp
#, fuzzy
msgid "Vertex Color"
msgstr "Тачке"
+#: scene/resources/material.cpp
+msgid "Use As Albedo"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Is sRGB"
+msgstr ""
+
#: scene/resources/material.cpp servers/visual_server.cpp
#, fuzzy
msgid "Parameters"
@@ -25294,6 +27160,11 @@ msgid "Billboard Mode"
msgstr "Режим Мерења"
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Billboard Keep Scale"
+msgstr "Режим Мерења"
+
+#: scene/resources/material.cpp
msgid "Grow"
msgstr ""
@@ -25303,6 +27174,10 @@ msgid "Grow Amount"
msgstr "Количина:"
#: scene/resources/material.cpp
+msgid "Use Alpha Scissor"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Alpha Scissor Threshold"
msgstr ""
@@ -25334,10 +27209,20 @@ msgid "Metallic Specular"
msgstr ""
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Metallic Texture"
+msgstr "Извор емиÑије: "
+
+#: scene/resources/material.cpp
msgid "Metallic Texture Channel"
msgstr ""
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Roughness Texture"
+msgstr "Обриши шаблон"
+
+#: scene/resources/material.cpp
msgid "Roughness Texture Channel"
msgstr ""
@@ -25357,6 +27242,16 @@ msgid "Emission Operator"
msgstr "Боје емиÑије"
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Emission On UV2"
+msgstr "МаÑка емиÑије"
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Emission Texture"
+msgstr "Извор емиÑије: "
+
+#: scene/resources/material.cpp
msgid "NormalMap"
msgstr ""
@@ -25371,6 +27266,11 @@ msgstr "ÐаÑумичан нагиб:"
#: scene/resources/material.cpp
#, fuzzy
+msgid "Rim Texture"
+msgstr "Обриши шаблон"
+
+#: scene/resources/material.cpp
+#, fuzzy
msgid "Clearcoat"
msgstr "Обриши"
@@ -25380,15 +27280,28 @@ msgid "Clearcoat Gloss"
msgstr "Обриши позу"
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Clearcoat Texture"
+msgstr "Измени тему..."
+
+#: scene/resources/material.cpp
msgid "Anisotropy"
msgstr ""
#: scene/resources/material.cpp
+msgid "Anisotropy Flowmap"
+msgstr ""
+
+#: scene/resources/material.cpp
#, fuzzy
msgid "Ambient Occlusion"
msgstr "Измени полигон"
#: scene/resources/material.cpp
+msgid "On UV2"
+msgstr ""
+
+#: scene/resources/material.cpp
#, fuzzy
msgid "Texture Channel"
msgstr "Регион текÑтуре"
@@ -25427,6 +27340,11 @@ msgstr "Прелаз:"
#: scene/resources/material.cpp
#, fuzzy
+msgid "Transmission Texture"
+msgstr "Прелаз:"
+
+#: scene/resources/material.cpp
+#, fuzzy
msgid "Refraction"
msgstr "ОдвојеноÑÑ‚:"
@@ -25445,6 +27363,10 @@ msgid "UV1"
msgstr "UV"
#: scene/resources/material.cpp
+msgid "Triplanar"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Triplanar Sharpness"
msgstr ""
@@ -25655,6 +27577,16 @@ msgstr "Измени тему..."
msgid "Point Count"
msgstr "Додај улазни порт"
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Scale Random"
+msgstr "Размера Ñкале:"
+
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Scale Curve"
+msgstr "Затвори криву"
+
#: scene/resources/physics_material.cpp
msgid "Rough"
msgstr ""
@@ -25717,10 +27649,6 @@ msgid "A"
msgstr ""
#: scene/resources/shader.cpp
-msgid "Code"
-msgstr ""
-
-#: scene/resources/shader.cpp
#, fuzzy
msgid "Custom Defines"
msgstr "Покрени Ñпецифичну Ñцену"
@@ -25817,15 +27745,6 @@ msgstr ""
#: scene/resources/texture.cpp
#, fuzzy
-msgid "Storage"
-msgstr "Складиштење датотеке:"
-
-#: scene/resources/texture.cpp
-msgid "Lossy Quality"
-msgstr ""
-
-#: scene/resources/texture.cpp
-#, fuzzy
msgid "Load Path"
msgstr "Учитај подешавања"
@@ -25957,11 +27876,6 @@ msgstr "Ðеважећа упоредна функција за зај тип"
msgid "Fallback Environment"
msgstr "Прикажи околину"
-#: scene/resources/world.cpp scene/resources/world_2d.cpp
-#, fuzzy
-msgid "Space"
-msgstr "Главна Сцена"
-
#: scene/resources/world.cpp
#, fuzzy
msgid "Scenario"
@@ -26042,10 +27956,37 @@ msgstr ""
msgid "Wet"
msgstr ""
-#: servers/audio/effects/audio_effect_compressor.cpp
-msgid "Threshold"
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "Voice"
msgstr ""
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+msgid "Delay (ms)"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_phaser.cpp
+msgid "Rate Hz"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#, fuzzy
+msgid "Depth (ms)"
+msgstr "Дубина"
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+msgid "Level dB"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+#: servers/audio/effects/audio_effect_panner.cpp
+#, fuzzy
+msgid "Pan"
+msgstr "Раван:"
+
#: servers/audio/effects/audio_effect_compressor.cpp
#: servers/audio/effects/audio_effect_filter.cpp
msgid "Gain"
@@ -26069,20 +28010,6 @@ msgid "Tap 1"
msgstr ""
#: servers/audio/effects/audio_effect_delay.cpp
-msgid "Delay (ms)"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_delay.cpp
-msgid "Level dB"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_delay.cpp
-#: servers/audio/effects/audio_effect_panner.cpp
-#, fuzzy
-msgid "Pan"
-msgstr "Раван:"
-
-#: servers/audio/effects/audio_effect_delay.cpp
msgid "Tap 2"
msgstr ""
@@ -26144,10 +28071,6 @@ msgstr ""
msgid "Range Max Hz"
msgstr ""
-#: servers/audio/effects/audio_effect_phaser.cpp
-msgid "Rate Hz"
-msgstr ""
-
#: servers/audio/effects/audio_effect_pitch_shift.cpp
msgid "Oversampling"
msgstr ""
@@ -26163,7 +28086,7 @@ msgid "Predelay"
msgstr ""
#: servers/audio/effects/audio_effect_reverb.cpp
-msgid "(msec)"
+msgid "Msec"
msgstr ""
#: servers/audio/effects/audio_effect_reverb.cpp
diff --git a/editor/translations/sr_Latn.po b/editor/translations/sr_Latn.po
index 5e5497c214..167c560429 100644
--- a/editor/translations/sr_Latn.po
+++ b/editor/translations/sr_Latn.po
@@ -24,7 +24,7 @@ msgstr ""
"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
"X-Generator: Weblate 4.11.1-dev\n"
-#: core/bind/core_bind.cpp
+#: core/bind/core_bind.cpp main/main.cpp
msgid "Tablet Driver"
msgstr ""
@@ -117,8 +117,8 @@ msgstr "Napravi"
#: core/bind/core_bind.cpp editor/editor_settings.cpp main/main.cpp
#: modules/gdscript/gdscript_editor.cpp modules/gridmap/grid_map.cpp
#: modules/mono/csharp_script.cpp modules/visual_script/visual_script_nodes.cpp
-#: scene/2d/tile_map.cpp scene/3d/camera.cpp scene/gui/control.cpp
-#: scene/gui/graph_edit.cpp scene/main/viewport.cpp
+#: scene/2d/tile_map.cpp scene/3d/camera.cpp scene/3d/light.cpp
+#: scene/gui/control.cpp scene/gui/graph_edit.cpp scene/main/viewport.cpp
#: scene/resources/dynamic_font.cpp scene/resources/navigation_mesh.cpp
#: scene/resources/primitive_meshes.cpp scene/resources/sky.cpp
#: scene/resources/style_box.cpp scene/resources/texture.cpp
@@ -216,8 +216,7 @@ msgid "Data"
msgstr ""
#: core/io/file_access_network.cpp core/register_core_types.cpp
-#: editor/editor_settings.cpp editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp main/main.cpp
+#: editor/editor_settings.cpp main/main.cpp
#: modules/gdscript/language_server/gdscript_language_server.cpp
msgid "Network"
msgstr ""
@@ -483,9 +482,10 @@ msgstr ""
msgid "Relative"
msgstr ""
-#: core/os/input_event.cpp scene/2d/camera_2d.cpp
-#: scene/3d/interpolated_camera.cpp scene/animation/animation_player.cpp
-#: scene/resources/environment.cpp
+#: core/os/input_event.cpp scene/2d/camera_2d.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/interpolated_camera.cpp
+#: scene/animation/animation_player.cpp scene/resources/environment.cpp
+#: scene/resources/particles_material.cpp
#, fuzzy
msgid "Speed"
msgstr "Razmera"
@@ -535,8 +535,9 @@ msgstr "Zajednica"
msgid "Pitch"
msgstr "Razmera"
-#: core/os/input_event.cpp scene/2d/physics_body_2d.cpp
-#: scene/3d/physics_body.cpp
+#: core/os/input_event.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/physics_body_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/3d/physics_body.cpp scene/resources/particles_material.cpp
msgid "Velocity"
msgstr ""
@@ -554,6 +555,8 @@ msgid "Controller Value"
msgstr ""
#: core/project_settings.cpp editor/editor_node.cpp main/main.cpp
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/windows/export/export.cpp
#, fuzzy
msgid "Application"
msgstr "Sve sekcije"
@@ -570,13 +573,16 @@ msgstr ""
#: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp
#: editor/editor_plugin_settings.cpp editor/editor_profiler.cpp
#: editor/project_manager.cpp editor/settings_config_dialog.cpp
-#: modules/gdnative/nativescript/nativescript.cpp scene/2d/area_2d.cpp
-#: scene/3d/area.cpp scene/main/node.cpp
+#: modules/gdnative/nativescript/nativescript.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/osx/export/export.cpp scene/2d/area_2d.cpp scene/3d/area.cpp
+#: scene/main/node.cpp
msgid "Name"
msgstr ""
#: core/project_settings.cpp editor/editor_help.cpp
-#: modules/visual_script/visual_script_nodes.cpp
+#: modules/visual_script/visual_script_nodes.cpp platform/uwp/export/export.cpp
+#: platform/windows/export/export.cpp
msgid "Description"
msgstr ""
@@ -614,7 +620,7 @@ msgid "Custom User Dir Name"
msgstr ""
#: core/project_settings.cpp editor/animation_track_editor.cpp
-#: editor/editor_audio_buses.cpp servers/audio_server.cpp
+#: editor/editor_audio_buses.cpp main/main.cpp servers/audio_server.cpp
msgid "Audio"
msgstr ""
@@ -767,10 +773,13 @@ msgstr "Filtriraj signale"
msgid "Sharpen Intensity"
msgstr ""
-#: core/project_settings.cpp editor/editor_node.cpp editor/editor_settings.cpp
-#: editor/plugins/script_editor_plugin.cpp editor/project_export.cpp
-#: main/main.cpp modules/gdscript/gdscript.cpp
-#: modules/visual_script/visual_script.cpp scene/3d/room_manager.cpp
+#: core/project_settings.cpp editor/editor_export.cpp editor/editor_node.cpp
+#: editor/editor_settings.cpp editor/plugins/script_editor_plugin.cpp
+#: editor/project_export.cpp main/main.cpp modules/gdscript/gdscript.cpp
+#: modules/visual_script/visual_script.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp scene/3d/room_manager.cpp
#: scene/main/scene_tree.cpp scene/resources/shape_2d.cpp
#: servers/visual_server.cpp
msgid "Debug"
@@ -998,6 +1007,7 @@ msgid "Subsurface Scattering"
msgstr ""
#: drivers/gles3/rasterizer_scene_gles3.cpp
+#: editor/import/resource_importer_texture.cpp
#: editor/plugins/spatial_editor_plugin.cpp modules/gltf/gltf_node.cpp
#: modules/gridmap/grid_map.cpp scene/2d/cpu_particles_2d.cpp
#: scene/2d/node_2d.cpp scene/2d/parallax_layer.cpp scene/2d/polygon_2d.cpp
@@ -1294,6 +1304,7 @@ msgid "Editors"
msgstr "Uredi"
#: editor/animation_track_editor.cpp editor/editor_settings.cpp
+#: editor/import/resource_importer_scene.cpp
#: editor/plugins/animation_player_editor_plugin.cpp editor/scene_tree_dock.cpp
#: scene/2d/animated_sprite.cpp scene/2d/cpu_particles_2d.cpp
#: scene/2d/sprite.cpp scene/3d/cpu_particles.cpp scene/3d/sprite_3d.cpp
@@ -1525,14 +1536,14 @@ msgstr "Vrednost koraka animacije."
msgid "Seconds"
msgstr "Sekunde"
-#: editor/animation_track_editor.cpp
+#: editor/animation_track_editor.cpp editor/import/resource_importer_scene.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp main/main.cpp
#: scene/resources/texture.cpp
msgid "FPS"
msgstr "FPS"
#: editor/animation_track_editor.cpp editor/editor_plugin_settings.cpp
-#: editor/editor_resource_picker.cpp
+#: editor/editor_resource_picker.cpp editor/import/resource_importer_wav.cpp
#: editor/plugins/polygon_2d_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
@@ -2485,7 +2496,9 @@ msgid "Remove Autoload"
msgstr ""
#: editor/editor_autoload_settings.cpp editor/editor_plugin_settings.cpp
-#: modules/gdscript/gdscript.cpp scene/2d/polygon_2d.cpp scene/3d/area.cpp
+#: modules/gdscript/gdscript.cpp platform/android/export/export_plugin.cpp
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#: scene/2d/polygon_2d.cpp scene/3d/area.cpp scene/3d/physics_joint.cpp
#: scene/3d/reflection_probe.cpp scene/main/canvas_layer.cpp
#: scene/resources/material.cpp servers/visual_server.cpp
msgid "Enable"
@@ -2638,6 +2651,58 @@ msgstr ""
#: editor/editor_export.cpp platform/android/export/export_plugin.cpp
#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Custom Template"
+msgstr "Izmjeni Selekciju Krivulje"
+
+#: editor/editor_export.cpp editor/project_export.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp
+msgid "Release"
+msgstr ""
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Binary Format"
+msgstr "Homogenost Boje."
+
+#: editor/editor_export.cpp
+msgid "64 Bits"
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Embed PCK"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Texture Format"
+msgstr "Obriši Selekciju"
+
+#: editor/editor_export.cpp
+msgid "BPTC"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "S3TC"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "ETC"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "ETC2"
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "No BPTC Fallbacks"
+msgstr ""
+
+#: editor/editor_export.cpp platform/android/export/export_plugin.cpp
+#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
msgid "Custom debug template not found."
msgstr ""
@@ -2811,6 +2876,7 @@ msgid "Make Current"
msgstr ""
#: editor/editor_feature_profile.cpp editor/editor_node.cpp
+#: editor/import/resource_importer_scene.cpp
#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
msgid "Import"
msgstr ""
@@ -2936,8 +3002,11 @@ msgstr ""
msgid "Display Mode"
msgstr ""
-#: editor/editor_file_dialog.cpp main/main.cpp modules/csg/csg_shape.cpp
-#: modules/visual_script/visual_script_nodes.cpp
+#: editor/editor_file_dialog.cpp
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+#: editor/import/resource_importer_wav.cpp main/main.cpp
+#: modules/csg/csg_shape.cpp modules/visual_script/visual_script_nodes.cpp
#: modules/visual_script/visual_script_yield_nodes.cpp scene/2d/light_2d.cpp
#: scene/2d/physics_body_2d.cpp scene/2d/tile_map.cpp
#: scene/3d/baked_lightmap.cpp scene/3d/light.cpp scene/3d/physics_body.cpp
@@ -3069,7 +3138,9 @@ msgstr ""
msgid "Reimport Missing Imported Files"
msgstr ""
-#: editor/editor_help.cpp
+#: editor/editor_help.cpp scene/2d/camera_2d.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/resources/dynamic_font.cpp
+#: scene/resources/style_box.cpp
msgid "Top"
msgstr ""
@@ -3121,6 +3192,7 @@ msgid "Fonts"
msgstr ""
#: editor/editor_help.cpp editor/plugins/theme_editor_plugin.cpp
+#: platform/iphone/export/export.cpp
msgid "Icons"
msgstr ""
@@ -3279,7 +3351,9 @@ msgstr ""
msgid "Pin value [Disabled because '%s' is editor-only]"
msgstr ""
-#: editor/editor_inspector.cpp editor/scene_tree_dock.cpp
+#: editor/editor_inspector.cpp
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+#: editor/scene_tree_dock.cpp
#: modules/visual_script/visual_script_func_nodes.cpp
#: modules/visual_script/visual_script_nodes.cpp
#: modules/visual_script/visual_script_property_selector.cpp
@@ -3590,6 +3664,14 @@ msgid "Quick Open Script..."
msgstr ""
#: editor/editor_node.cpp
+msgid "Save & Reload"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Save changes to '%s' before reloading?"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "Save & Close"
msgstr ""
@@ -3700,6 +3782,10 @@ msgid "Open Project Manager?"
msgstr ""
#: editor/editor_node.cpp
+msgid "Save changes to the following scene(s) before reloading?"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "Save & Quit"
msgstr ""
@@ -3942,8 +4028,8 @@ msgstr "Ažuriraj Vitalne Promene"
#: editor/editor_node.cpp
#, fuzzy
-msgid "Translate Properties"
-msgstr "Zalepi Osobine"
+msgid "Localize Settings"
+msgstr "Postavke UreÄ‘ivaÄa..."
#: editor/editor_node.cpp
#, fuzzy
@@ -3959,9 +4045,8 @@ msgid "Inspector"
msgstr ""
#: editor/editor_node.cpp
-#, fuzzy
-msgid "Capitalize Properties"
-msgstr "Zalepi Osobine"
+msgid "Default Property Name Style"
+msgstr ""
#: editor/editor_node.cpp
msgid "Default Float Step"
@@ -4521,7 +4606,9 @@ msgstr ""
msgid "Update"
msgstr ""
-#: editor/editor_plugin_settings.cpp
+#: editor/editor_plugin_settings.cpp platform/android/export/export_plugin.cpp
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp
msgid "Version"
msgstr ""
@@ -5486,7 +5573,7 @@ msgstr ""
msgid "Rect Custom Position"
msgstr "Ukloni Prilagođeni Poligon"
-#: editor/editor_settings.cpp
+#: editor/editor_settings.cpp platform/android/export/export_plugin.cpp
msgid "Screen"
msgstr ""
@@ -5511,6 +5598,19 @@ msgid "Editor SSL Certificates"
msgstr ""
#: editor/editor_settings.cpp
+msgid "HTTP Proxy"
+msgstr ""
+
+#: editor/editor_settings.cpp
+msgid "Host"
+msgstr ""
+
+#: editor/editor_settings.cpp editor/fileserver/editor_file_server.cpp
+#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp
+msgid "Port"
+msgstr ""
+
+#: editor/editor_settings.cpp
msgid "Project Manager"
msgstr ""
@@ -5551,7 +5651,8 @@ msgstr ""
msgid "String Color"
msgstr ""
-#: editor/editor_settings.cpp
+#: editor/editor_settings.cpp platform/javascript/export/export.cpp
+#: platform/uwp/export/export.cpp
msgid "Background Color"
msgstr ""
@@ -5717,22 +5818,6 @@ msgid "Starting the download..."
msgstr ""
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "HTTP Proxy"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Host"
-msgstr ""
-
-#: editor/export_template_manager.cpp editor/fileserver/editor_file_server.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp main/main.cpp
-#: modules/mono/mono_gd/gd_mono.cpp
-msgid "Port"
-msgstr ""
-
-#: editor/export_template_manager.cpp
msgid "Error requesting URL:"
msgstr ""
@@ -5974,6 +6059,7 @@ msgstr ""
#: editor/fileserver/editor_file_server.cpp
#: editor/plugins/version_control_editor_plugin.cpp
+#: platform/uwp/export/export.cpp platform/windows/export/export.cpp
msgid "Password"
msgstr ""
@@ -6337,6 +6423,112 @@ msgstr ""
msgid "Use Ambient"
msgstr ""
+#: editor/import/resource_importer_bitmask.cpp
+#, fuzzy
+msgid "Create From"
+msgstr "Napravi Profil"
+
+#: editor/import/resource_importer_bitmask.cpp
+#: servers/audio/effects/audio_effect_compressor.cpp
+msgid "Threshold"
+msgstr ""
+
+#: editor/import/resource_importer_csv_translation.cpp
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_scene.cpp
+#: editor/import/resource_importer_texture.cpp
+#: editor/import/resource_importer_wav.cpp scene/3d/gi_probe.cpp
+msgid "Compress"
+msgstr ""
+
+#: editor/import/resource_importer_csv_translation.cpp
+msgid "Delimiter"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+msgid "No BPTC If RGB"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/sprite_3d.cpp
+#: scene/resources/material.cpp scene/resources/particles_material.cpp
+#: scene/resources/texture.cpp
+msgid "Flags"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/animation/tween.cpp
+#: scene/resources/texture.cpp
+msgid "Repeat"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/2d/light_2d.cpp
+#: scene/gui/control.cpp scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Filter"
+msgstr "Filtriraj signale"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Mipmaps"
+msgstr "Signali"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+msgid "Anisotropic"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+msgid "sRGB"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+msgid "Slices"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
+#: scene/resources/style_box.cpp
+#, fuzzy
+msgid "Horizontal"
+msgstr "Ukloni Horizontalni VodiÄ"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
+#: scene/resources/style_box.cpp
+msgid "Vertical"
+msgstr ""
+
+#: editor/import/resource_importer_obj.cpp
+#, fuzzy
+msgid "Generate Tangents"
+msgstr "GeneriÅ¡i TaÄke"
+
+#: editor/import/resource_importer_obj.cpp
+#, fuzzy
+msgid "Scale Mesh"
+msgstr "Skaliraj Korak:"
+
+#: editor/import/resource_importer_obj.cpp
+msgid "Offset Mesh"
+msgstr ""
+
+#: editor/import/resource_importer_obj.cpp
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Octahedral Compression"
+msgstr "Napravi"
+
+#: editor/import/resource_importer_obj.cpp
+msgid "Optimize Mesh Flags"
+msgstr ""
+
#: editor/import/resource_importer_scene.cpp
msgid "Import as Single Scene"
msgstr ""
@@ -6377,6 +6569,147 @@ msgstr ""
msgid "Import as Multiple Scenes+Materials"
msgstr ""
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Nodes"
+msgstr "Animacija Uduplaj KljuÄeve"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Root Type"
+msgstr "Promeni %s Tip"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Root Name"
+msgstr "Obriši Selekciju"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Root Scale"
+msgstr "Razmera"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Custom Script"
+msgstr "Animacija Uduplaj KljuÄeve"
+
+#: editor/import/resource_importer_scene.cpp scene/resources/texture.cpp
+msgid "Storage"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Use Legacy Names"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+msgid "Materials"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Location"
+msgstr "Sve sekcije"
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Keep On Reimport"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+msgid "Meshes"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Ensure Tangents"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Light Baking"
+msgstr "Desni Linearni"
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Lightmap Texel Size"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+msgid "Skins"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Use Named Skins"
+msgstr "Signali"
+
+#: editor/import/resource_importer_scene.cpp
+msgid "External Files"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Store In Subdir"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Filter Script"
+msgstr "Filtriraj signale"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Keep Custom Tracks"
+msgstr "Animacija Promjeni Transformaciju"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Optimizer"
+msgstr "Optimizuj"
+
+#: editor/import/resource_importer_scene.cpp main/main.cpp
+#: modules/mono/mono_gd/gd_mono.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp scene/2d/camera_2d.cpp scene/2d/light_2d.cpp
+#: scene/2d/navigation_polygon.cpp scene/2d/ray_cast_2d.cpp scene/2d/sprite.cpp
+#: scene/2d/y_sort.cpp scene/3d/audio_stream_player_3d.cpp
+#: scene/3d/baked_lightmap.cpp scene/3d/interpolated_camera.cpp
+#: scene/3d/light.cpp scene/3d/navigation_mesh_instance.cpp
+#: scene/3d/physics_joint.cpp scene/3d/ray_cast.cpp scene/3d/sprite_3d.cpp
+#: scene/gui/graph_edit.cpp scene/gui/rich_text_label.cpp
+#: scene/resources/curve.cpp scene/resources/environment.cpp
+#: scene/resources/material.cpp
+msgid "Enabled"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Max Linear Error"
+msgstr "Max. Linearna Greška:"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Max Angular Error"
+msgstr "Max. Ugaona Greška:"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Max Angle"
+msgstr "Vrednost:"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Remove Unused Tracks"
+msgstr "Ukloni Anim Traku"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Clips"
+msgstr "Anim Klipovi"
+
+#: editor/import/resource_importer_scene.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/particles_2d.cpp scene/3d/area.cpp scene/3d/cpu_particles.cpp
+#: scene/3d/particles.cpp scene/resources/environment.cpp
+msgid "Amount"
+msgstr ""
+
#: editor/import/resource_importer_scene.cpp
#: editor/plugins/mesh_library_editor_plugin.cpp
msgid "Import Scene"
@@ -6418,12 +6751,141 @@ msgstr ""
msgid "Saving..."
msgstr ""
+#: editor/import/resource_importer_texture.cpp scene/resources/texture.cpp
+msgid "Lossy Quality"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "HDR Mode"
+msgstr "Napravi"
+
+#: editor/import/resource_importer_texture.cpp
+msgid "BPTC LDR"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/mesh_instance_2d.cpp scene/2d/multimesh_instance_2d.cpp
+#: scene/2d/particles_2d.cpp scene/2d/sprite.cpp scene/resources/style_box.cpp
+msgid "Normal Map"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Process"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Fix Alpha Border"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Premult Alpha"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Hdr As Srgb"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Invert Color"
+msgstr "Promeni %s Tip"
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Normal Map Invert Y"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
+#: scene/audio/audio_stream_player.cpp scene/gui/video_player.cpp
+msgid "Stream"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Size Limit"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Detect 3D"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "SVG"
+msgstr ""
+
#: editor/import/resource_importer_texture.cpp
msgid ""
"Warning, no suitable PC VRAM compression enabled in Project Settings. This "
"texture will not display correctly on PC."
msgstr ""
+#: editor/import/resource_importer_texture_atlas.cpp
+msgid "Atlas File"
+msgstr ""
+
+#: editor/import/resource_importer_texture_atlas.cpp
+#, fuzzy
+msgid "Import Mode"
+msgstr "Napravi"
+
+#: editor/import/resource_importer_texture_atlas.cpp
+msgid "Crop To Region"
+msgstr ""
+
+#: editor/import/resource_importer_texture_atlas.cpp
+msgid "Trim Alpha Border From Region"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp scene/2d/physics_body_2d.cpp
+msgid "Force"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+msgid "8 Bit"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp main/main.cpp
+#: modules/mono/editor/csharp_project.cpp modules/mono/mono_gd/gd_mono.cpp
+msgid "Mono"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+#, fuzzy
+msgid "Max Rate"
+msgstr "Vrednost:"
+
+#: editor/import/resource_importer_wav.cpp
+#, fuzzy
+msgid "Max Rate Hz"
+msgstr "Vrednost:"
+
+#: editor/import/resource_importer_wav.cpp
+msgid "Trim"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+#, fuzzy
+msgid "Normalize"
+msgstr "Obriši Selekciju"
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+#, fuzzy
+msgid "Loop Mode"
+msgstr "Napravi"
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+#, fuzzy
+msgid "Loop Begin"
+msgstr "Napravi"
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+#, fuzzy
+msgid "Loop End"
+msgstr "Napravi"
+
#: editor/import_defaults_editor.cpp
msgid "Select Importer"
msgstr "OznaÄi Uvoznika"
@@ -6492,6 +6954,28 @@ msgid "Failed to load resource."
msgstr ""
#: editor/inspector_dock.cpp
+#, fuzzy
+msgid "Property Name Style"
+msgstr "Osobine Trake"
+
+#: editor/inspector_dock.cpp scene/gui/color_picker.cpp
+msgid "Raw"
+msgstr ""
+
+#: editor/inspector_dock.cpp
+#, fuzzy
+msgid "Capitalized"
+msgstr "Zalepi Osobine"
+
+#: editor/inspector_dock.cpp
+msgid "Localized"
+msgstr ""
+
+#: editor/inspector_dock.cpp
+msgid "Localization not available for current language."
+msgstr ""
+
+#: editor/inspector_dock.cpp
msgid "Copy Properties"
msgstr ""
@@ -7520,18 +8004,23 @@ msgid "License (Z-A)"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
+msgctxt "Pagination"
msgid "First"
msgstr ""
-#: editor/plugins/asset_library_editor_plugin.cpp scene/gui/control.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgctxt "Pagination"
msgid "Previous"
-msgstr ""
+msgstr "Prethodna Skripta"
-#: editor/plugins/asset_library_editor_plugin.cpp scene/gui/control.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgctxt "Pagination"
msgid "Next"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
+msgctxt "Pagination"
msgid "Last"
msgstr ""
@@ -7765,19 +8254,19 @@ msgid ""
"margins."
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Top Left"
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Top Right"
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Bottom Right"
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Bottom Left"
msgstr ""
@@ -8471,6 +8960,19 @@ msgstr ""
msgid "Gradient Edited"
msgstr ""
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+msgid "Swap GradientTexture2D Fill Points"
+msgstr ""
+
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+msgid "Swap Gradient Fill Points"
+msgstr ""
+
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+#, fuzzy
+msgid "Toggle Grid Snap"
+msgstr "Umogući/Onemogući Traku"
+
#: editor/plugins/item_list_editor_plugin.cpp
msgid "Item %d"
msgstr ""
@@ -8687,8 +9189,8 @@ msgid ""
"%s"
msgstr ""
-#: editor/plugins/mesh_library_editor_plugin.cpp modules/gridmap/grid_map.cpp
-msgid "Mesh Library"
+#: editor/plugins/mesh_library_editor_plugin.cpp
+msgid "MeshLibrary"
msgstr ""
#: editor/plugins/mesh_library_editor_plugin.cpp
@@ -9661,8 +10163,8 @@ msgstr ""
msgid "Source"
msgstr ""
-#: editor/plugins/script_text_editor.cpp scene/3d/interpolated_camera.cpp
-#: scene/animation/skeleton_ik.cpp
+#: editor/plugins/script_text_editor.cpp platform/uwp/export/export.cpp
+#: scene/3d/interpolated_camera.cpp scene/animation/skeleton_ik.cpp
msgid "Target"
msgstr ""
@@ -10620,7 +11122,9 @@ msgstr ""
#: editor/plugins/sprite_frames_editor_plugin.cpp
#: modules/gltf/gltf_animation.cpp modules/minimp3/audio_stream_mp3.cpp
-#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp scene/2d/path_2d.cpp
+#: modules/minimp3/resource_importer_mp3.cpp
+#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp
+#: modules/stb_vorbis/resource_importer_ogg_vorbis.cpp scene/2d/path_2d.cpp
#: scene/3d/path.cpp scene/resources/animation.cpp scene/resources/material.cpp
msgid "Loop"
msgstr ""
@@ -11498,8 +12002,9 @@ msgstr ""
msgid "Priority"
msgstr ""
-#: editor/plugins/tile_set_editor_plugin.cpp main/main.cpp scene/gui/button.cpp
-#: scene/gui/item_list.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp main/main.cpp
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#: scene/gui/button.cpp scene/gui/item_list.cpp
msgid "Icon"
msgstr ""
@@ -12815,10 +13320,6 @@ msgid ""
msgstr ""
#: editor/project_export.cpp
-msgid "Release"
-msgstr ""
-
-#: editor/project_export.cpp
msgid "Exporting All"
msgstr ""
@@ -14591,6 +15092,7 @@ msgid "Change AudioStreamPlayer3D Emission Angle"
msgstr ""
#: editor/spatial_editor_gizmos.cpp modules/gltf/gltf_node.cpp
+#: platform/osx/export/export.cpp
msgid "Camera"
msgstr ""
@@ -14860,7 +15362,8 @@ msgstr ""
msgid "Use Nvidia Rect Flicker Workaround"
msgstr ""
-#: main/main.cpp platform/uwp/os_uwp.cpp
+#: main/main.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp platform/uwp/os_uwp.cpp
msgid "Display"
msgstr ""
@@ -14916,18 +15419,6 @@ msgstr ""
msgid "Allowed"
msgstr ""
-#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp scene/2d/camera_2d.cpp
-#: scene/2d/light_2d.cpp scene/2d/navigation_polygon.cpp
-#: scene/2d/ray_cast_2d.cpp scene/2d/sprite.cpp scene/2d/y_sort.cpp
-#: scene/3d/audio_stream_player_3d.cpp scene/3d/baked_lightmap.cpp
-#: scene/3d/interpolated_camera.cpp scene/3d/light.cpp
-#: scene/3d/navigation_mesh_instance.cpp scene/3d/ray_cast.cpp
-#: scene/3d/sprite_3d.cpp scene/gui/graph_edit.cpp
-#: scene/gui/rich_text_label.cpp scene/resources/curve.cpp
-#: scene/resources/environment.cpp
-msgid "Enabled"
-msgstr ""
-
#: main/main.cpp
msgid "Intended Usage"
msgstr ""
@@ -14956,13 +15447,14 @@ msgstr ""
msgid "Handheld"
msgstr ""
-#: main/main.cpp
+#: main/main.cpp platform/javascript/export/export.cpp
+#: platform/uwp/export/export.cpp
#, fuzzy
msgid "Orientation"
msgstr "Optimizuj Animaciju"
#: main/main.cpp scene/gui/scroll_container.cpp scene/gui/text_edit.cpp
-#: scene/main/scene_tree.cpp
+#: scene/main/scene_tree.cpp scene/register_scene_types.cpp
#, fuzzy
msgid "Common"
msgstr "Zajednica"
@@ -15003,7 +15495,7 @@ msgstr ""
#: main/main.cpp
#, fuzzy
-msgid "Frame Delay (msec)"
+msgid "Frame Delay Msec"
msgstr "Vreme Frejma(ms)"
#: main/main.cpp
@@ -15122,11 +15614,6 @@ msgstr ""
msgid "Tooltip Position Offset"
msgstr ""
-#: main/main.cpp modules/mono/editor/csharp_project.cpp
-#: modules/mono/mono_gd/gd_mono.cpp
-msgid "Mono"
-msgstr ""
-
#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp
msgid "Debugger Agent"
msgstr ""
@@ -15668,7 +16155,7 @@ msgstr ""
msgid "Intensity"
msgstr ""
-#: modules/gltf/gltf_light.cpp scene/2d/light_2d.cpp
+#: modules/gltf/gltf_light.cpp scene/2d/light_2d.cpp scene/3d/light.cpp
#, fuzzy
msgid "Range"
msgstr "Promeni"
@@ -15803,11 +16290,6 @@ msgstr ""
msgid "Use Named Skin Binds"
msgstr ""
-#: modules/gltf/gltf_state.cpp scene/3d/physics_joint.cpp
-#, fuzzy
-msgid "Nodes"
-msgstr "Animacija Uduplaj KljuÄeve"
-
#: modules/gltf/gltf_state.cpp
msgid "Buffer Views"
msgstr ""
@@ -15817,14 +16299,6 @@ msgid "Accessors"
msgstr ""
#: modules/gltf/gltf_state.cpp
-msgid "Meshes"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp
-msgid "Materials"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp
#, fuzzy
msgid "Scene Name"
msgstr "Napravi"
@@ -15841,15 +16315,11 @@ msgstr "Animacija ObriÅ¡i KljuÄeve"
msgid "Textures"
msgstr "Obriši Selekciju"
-#: modules/gltf/gltf_state.cpp
+#: modules/gltf/gltf_state.cpp platform/uwp/export/export.cpp
msgid "Images"
msgstr ""
#: modules/gltf/gltf_state.cpp
-msgid "Skins"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp
msgid "Cameras"
msgstr ""
@@ -15881,10 +16351,14 @@ msgid "Src Image"
msgstr ""
#: modules/gridmap/grid_map.cpp
-msgid "Physics Material"
+msgid "Mesh Library"
msgstr ""
#: modules/gridmap/grid_map.cpp
+msgid "Physics Material"
+msgstr ""
+
+#: modules/gridmap/grid_map.cpp scene/3d/visual_instance.cpp
msgid "Use In Baked Light"
msgstr ""
@@ -15914,6 +16388,7 @@ msgstr "Centriraj ÄŒvor"
#: modules/gridmap/grid_map.cpp scene/2d/collision_object_2d.cpp
#: scene/2d/tile_map.cpp scene/3d/collision_object.cpp scene/3d/soft_body.cpp
+#: scene/resources/material.cpp
msgid "Mask"
msgstr ""
@@ -16099,7 +16574,9 @@ msgid "Ultra Quality Ray Count"
msgstr ""
#: modules/minimp3/audio_stream_mp3.cpp
+#: modules/minimp3/resource_importer_mp3.cpp
#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp
+#: modules/stb_vorbis/resource_importer_ogg_vorbis.cpp
#, fuzzy
msgid "Loop Offset"
msgstr "Napravi"
@@ -17158,6 +17635,177 @@ msgid "The package must have at least one '.' separator."
msgstr ""
#: platform/android/export/export_plugin.cpp
+msgid "Use Custom Build"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Export Format"
+msgstr "Homogenost Boje."
+
+#: platform/android/export/export_plugin.cpp
+msgid "Keystore"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Debug User"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+msgid "Debug Password"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Release User"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Release Password"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "One Click Deploy"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Clear Previous Install"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp scene/resources/shader.cpp
+msgid "Code"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Min SDK"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Target SDK"
+msgstr "Ukloni ÄŒvor"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+msgid "Package"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Unique Name"
+msgstr "Obriši Selekciju"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Signed"
+msgstr "Signâl:"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Classify As Game"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Retain Data On Uninstall"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Exclude From Recents"
+msgstr "Animacija ObriÅ¡i KljuÄeve"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Graphics"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "OpenGL Debug"
+msgstr "Otvori"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "XR Features"
+msgstr "Obriši Selekciju"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "XR Mode"
+msgstr "Napravi"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Hand Tracking"
+msgstr "Osobine Trake"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Hand Tracking Frequency"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Passthrough"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Immersive Mode"
+msgstr "Napravi"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Support Small"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Support Normal"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Support Large"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Support Xlarge"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "User Data Backup"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Allow"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Command Line"
+msgstr "Zajednica"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Extra Args"
+msgstr "Dodatni Argumenti Poziva:"
+
+#: platform/android/export/export_plugin.cpp
+msgid "APK Expansion"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Salt"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Public Key"
+msgstr "Dupliraj KljuÄ(eve)"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Permissions"
+msgstr "Tranzicija: "
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Custom Permissions"
+msgstr "Ukloni Prilagođeni Poligon"
+
+#: platform/android/export/export_plugin.cpp
msgid "Select device from the list"
msgstr ""
@@ -17443,6 +18091,171 @@ msgid "The character '%s' is not allowed in Identifier."
msgstr ""
#: platform/iphone/export/export.cpp
+msgid "App Store Team ID"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Provisioning Profile UUID Debug"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Code Sign Identity Debug"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Export Method Debug"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Provisioning Profile UUID Release"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Code Sign Identity Release"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Export Method Release"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Targeted Device Family"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Info"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Identifier"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Signature"
+msgstr "Signâl:"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Short Version"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Copyright"
+msgstr "Kopiraj"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Capabilities"
+msgstr "Zalepi Osobine"
+
+#: platform/iphone/export/export.cpp
+msgid "Access Wi-Fi"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Push Notifications"
+msgstr "Kontanta"
+
+#: platform/iphone/export/export.cpp scene/3d/baked_lightmap.cpp
+msgid "User Data"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Accessible From Files App"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Accessible From Itunes Sharing"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Privacy"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Camera Usage Description"
+msgstr "Opis:"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Microphone Usage Description"
+msgstr "Opis:"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Photolibrary Usage Description"
+msgstr "Opis:"
+
+#: platform/iphone/export/export.cpp
+msgid "iPhone 120 X 120"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPhone 180 X 180"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 76 X 76"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 152 X 152"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 167 X 167"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "App Store 1024 X 1024"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Spotlight 40 X 40"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Spotlight 80 X 80"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Storyboard"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Use Launch Screen Storyboard"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Image Scale Mode"
+msgstr "Razmera"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Custom Image @2x"
+msgstr "Animacija Uduplaj KljuÄeve"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Custom Image @3x"
+msgstr "Animacija Uduplaj KljuÄeve"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Use Custom BG Color"
+msgstr "Animacija Uduplaj KljuÄeve"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Custom BG Color"
+msgstr "Animacija Uduplaj KljuÄeve"
+
+#: platform/iphone/export/export.cpp
msgid "App Store Team ID not specified - cannot configure the project."
msgstr ""
@@ -17479,6 +18292,79 @@ msgid "Could not read file:"
msgstr ""
#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Variant"
+msgstr "Odvajanje:"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Export Type"
+msgstr "PoÄisti Animaciju"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "VRAM Texture Compression"
+msgstr "Napravi"
+
+#: platform/javascript/export/export.cpp
+msgid "For Desktop"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "For Mobile"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Html"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Export Icon"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Custom Html Shell"
+msgstr "Animacija Uduplaj KljuÄeve"
+
+#: platform/javascript/export/export.cpp
+msgid "Head Include"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Canvas Resize Policy"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Focus Canvas On Start"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Experimental Virtual Keyboard"
+msgstr "Filtriraj signale"
+
+#: platform/javascript/export/export.cpp
+msgid "Progressive Web App"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Offline Page"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 144 X 144"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 180 X 180"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 512 X 512"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
msgid "Could not read HTML shell:"
msgstr ""
@@ -17583,6 +18469,187 @@ msgid "Unknown object type."
msgstr ""
#: platform/osx/export/export.cpp
+msgid "App Category"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "High Res"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Location Usage Description"
+msgstr "Opis:"
+
+#: platform/osx/export/export.cpp
+msgid "Address Book Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Calendar Usage Description"
+msgstr "Opis:"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Photos Library Usage Description"
+msgstr "Opis:"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Desktop Folder Usage Description"
+msgstr "Opis:"
+
+#: platform/osx/export/export.cpp
+msgid "Documents Folder Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Downloads Folder Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Network Volumes Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Removable Volumes Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#, fuzzy
+msgid "Codesign"
+msgstr "Animacija Uduplaj KljuÄeve"
+
+#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
+#: platform/windows/export/export.cpp
+msgid "Identity"
+msgstr ""
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#, fuzzy
+msgid "Timestamp"
+msgstr "Vreme:"
+
+#: platform/osx/export/export.cpp
+msgid "Hardened Runtime"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Replace Existing Signature"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Entitlements"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Custom File"
+msgstr "Animacija Uduplaj KljuÄeve"
+
+#: platform/osx/export/export.cpp
+msgid "Allow JIT Code Execution"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Allow Unsigned Executable Memory"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Allow Dyld Environment Variables"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Disable Library Validation"
+msgstr "Onemogućeno"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Audio Input"
+msgstr "Audio Klipovi"
+
+#: platform/osx/export/export.cpp
+msgid "Address Book"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Calendars"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Photos Library"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Apple Events"
+msgstr "Primeni Reset"
+
+#: platform/osx/export/export.cpp
+msgid "Debugging"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "App Sandbox"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Network Server"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Network Client"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Device Usb"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Device Bluetooth"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Files Downloads"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Files Pictures"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Files Music"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Files Movies"
+msgstr ""
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#, fuzzy
+msgid "Custom Options"
+msgstr "Podešavanja Magistrale"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Notarization"
+msgstr "Napravi"
+
+#: platform/osx/export/export.cpp
+msgid "Apple ID Name"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Apple ID Password"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Apple Team ID"
+msgstr ""
+
+#: platform/osx/export/export.cpp
msgid ""
"Note: The notarization process generally takes less than an hour. When the "
"process is completed, you'll receive an email."
@@ -17772,6 +18839,124 @@ msgid "Force Builtin Codesign"
msgstr ""
#: platform/uwp/export/export.cpp
+msgid "Architecture"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Display Name"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Short Name"
+msgstr "PoÄisti Animaciju"
+
+#: platform/uwp/export/export.cpp
+msgid "Publisher"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Publisher Display Name"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Product Guid"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Publisher Guid"
+msgstr "OÄisti VodiÄe"
+
+#: platform/uwp/export/export.cpp
+msgid "Signing"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Certificate"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Algorithm"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Major"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Minor"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Build"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Revision"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Landscape"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Portrait"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Landscape Flipped"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Portrait Flipped"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Store Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 44 X 44 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 71 X 71 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 150 X 150 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 310 X 310 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Wide 310 X 150 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Splash Screen"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Tiles"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Square 150 X 150"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Wide 310 X 150"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Square 310 X 310"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
msgid "Invalid package short name."
msgstr ""
@@ -17837,11 +19022,46 @@ msgid "Debug Certificate"
msgstr ""
#: platform/uwp/export/export.cpp
-msgid "Debug Password"
+msgid "Debug Algorithm"
msgstr ""
-#: platform/uwp/export/export.cpp
-msgid "Debug Algorithm"
+#: platform/windows/export/export.cpp
+msgid "Identity Type"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Timestamp Server URL"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Digest Algorithm"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "File Version"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Product Version"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Company Name"
+msgstr "Obriši Selekciju"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Product Name"
+msgstr "Grupisane"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "File Description"
+msgstr "Opis:"
+
+#: platform/windows/export/export.cpp
+msgid "Trademarks"
msgstr ""
#: platform/windows/export/export.cpp
@@ -17910,12 +19130,14 @@ msgstr ""
msgid "Centered"
msgstr "Centriraj ÄŒvor"
-#: scene/2d/animated_sprite.cpp scene/2d/camera_2d.cpp scene/2d/light_2d.cpp
+#: scene/2d/animated_sprite.cpp scene/2d/camera_2d.cpp
+#: scene/2d/cpu_particles_2d.cpp scene/2d/light_2d.cpp
#: scene/2d/parallax_background.cpp scene/2d/parallax_layer.cpp
#: scene/2d/path_2d.cpp scene/2d/polygon_2d.cpp scene/2d/sprite.cpp
-#: scene/3d/path.cpp scene/3d/physics_body.cpp scene/3d/sprite_3d.cpp
-#: scene/gui/graph_node.cpp scene/gui/rich_text_effect.cpp
-#: scene/main/canvas_layer.cpp scene/resources/material.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/path.cpp scene/3d/physics_body.cpp
+#: scene/3d/sprite_3d.cpp scene/gui/graph_node.cpp
+#: scene/gui/rich_text_effect.cpp scene/main/canvas_layer.cpp
+#: scene/resources/material.cpp scene/resources/particles_material.cpp
#: scene/resources/style_box.cpp
msgid "Offset"
msgstr ""
@@ -17982,11 +19204,6 @@ msgstr "Audio Klipovi"
msgid "Override"
msgstr ""
-#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
-#: scene/audio/audio_stream_player.cpp scene/gui/video_player.cpp
-msgid "Stream"
-msgstr ""
-
#: scene/2d/audio_stream_player_2d.cpp scene/audio/audio_stream_player.cpp
#: scene/gui/video_player.cpp servers/audio/effects/audio_effect_amplify.cpp
msgid "Volume dB"
@@ -18011,12 +19228,12 @@ msgid "Stream Paused"
msgstr ""
#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
-#: scene/3d/reflection_probe.cpp scene/3d/visual_instance.cpp
-#: scene/resources/material.cpp
+#: scene/3d/light.cpp scene/3d/reflection_probe.cpp
+#: scene/3d/visual_instance.cpp scene/resources/material.cpp
msgid "Max Distance"
msgstr ""
-#: scene/2d/audio_stream_player_2d.cpp
+#: scene/2d/audio_stream_player_2d.cpp scene/3d/light.cpp
#, fuzzy
msgid "Attenuation"
msgstr "Animacije:"
@@ -18068,6 +19285,24 @@ msgstr ""
msgid "Limit"
msgstr ""
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/style_box.cpp
+#, fuzzy
+msgid "Left"
+msgstr "Leva Å iroka"
+
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/style_box.cpp
+#, fuzzy
+msgid "Right"
+msgstr "Desna Å iroka"
+
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/dynamic_font.cpp scene/resources/style_box.cpp
+#, fuzzy
+msgid "Bottom"
+msgstr "TaÄke Prekida"
+
#: scene/2d/camera_2d.cpp
msgid "Smoothed"
msgstr ""
@@ -18269,12 +19504,6 @@ msgstr ""
msgid "Emitting"
msgstr "Postavke UreÄ‘ivaÄa..."
-#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp scene/3d/area.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
-#: scene/resources/environment.cpp
-msgid "Amount"
-msgstr ""
-
#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp
#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
msgid "Lifetime"
@@ -18335,18 +19564,13 @@ msgstr ""
#: scene/2d/mesh_instance_2d.cpp scene/2d/multimesh_instance_2d.cpp
#: scene/2d/particles_2d.cpp scene/2d/polygon_2d.cpp scene/2d/sprite.cpp
#: scene/3d/sprite_3d.cpp scene/gui/nine_patch_rect.cpp
-#: scene/gui/texture_rect.cpp scene/resources/sky.cpp
-#: scene/resources/style_box.cpp scene/resources/visual_shader_nodes.cpp
+#: scene/gui/texture_rect.cpp scene/resources/material.cpp
+#: scene/resources/sky.cpp scene/resources/style_box.cpp
+#: scene/resources/visual_shader_nodes.cpp
#, fuzzy
msgid "Texture"
msgstr "Obriši Selekciju"
-#: scene/2d/cpu_particles_2d.cpp scene/2d/mesh_instance_2d.cpp
-#: scene/2d/multimesh_instance_2d.cpp scene/2d/particles_2d.cpp
-#: scene/2d/sprite.cpp scene/resources/style_box.cpp
-msgid "Normal Map"
-msgstr ""
-
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
msgid "Emission Shape"
@@ -18366,9 +19590,8 @@ msgid "Normals"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/3d/sprite_3d.cpp scene/resources/material.cpp
-#: scene/resources/particles_material.cpp scene/resources/texture.cpp
-msgid "Flags"
+#: scene/resources/particles_material.cpp
+msgid "Align Y"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
@@ -18389,6 +19612,11 @@ msgid "Initial Velocity"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Velocity Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp servers/physics_2d_server.cpp
#: servers/physics_server.cpp
msgid "Angular Velocity"
@@ -18396,6 +19624,12 @@ msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Velocity Curve"
+msgstr "Razdeli Krivu"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
msgid "Orbit Velocity"
msgstr ""
@@ -18407,6 +19641,22 @@ msgstr "Linearna"
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+msgid "Accel"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Accel Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Accel Curve"
+msgstr "Razdeli Krivu"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
msgid "Radial Accel"
msgstr ""
@@ -18416,19 +19666,55 @@ msgid "Tangential Accel"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/2d/joints_2d.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/vehicle_body.cpp
-#: scene/resources/particles_material.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/physics_joint.cpp
+#: scene/3d/vehicle_body.cpp scene/resources/particles_material.cpp
#: servers/audio/effects/audio_effect_reverb.cpp
msgid "Damping"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+msgid "Damping Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Damping Curve"
+msgstr "Razdeli Krivu"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp scene/3d/light.cpp
+#: scene/resources/particles_material.cpp
msgid "Angle"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+msgid "Angle Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Angle Curve"
+msgstr "Razdeli Krivu"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#, fuzzy
+msgid "Scale Amount"
+msgstr "Instanciraj Scenu Ovde"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+msgid "Scale Amount Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#, fuzzy
+msgid "Scale Amount Curve"
+msgstr "Skaliraj od Kursora"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
msgid "Color Ramp"
msgstr ""
@@ -18443,6 +19729,47 @@ msgstr ""
msgid "Hue Variation"
msgstr "Odvajanje:"
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Variation"
+msgstr "Odvajanje:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Variation Random"
+msgstr "Odvajanje:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Variation Curve"
+msgstr "Odvajanje:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Speed Random"
+msgstr "Razmera"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Speed Curve"
+msgstr "Razdeli Krivu"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Offset Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Offset Curve"
+msgstr "Razdeli Krivu"
+
#: scene/2d/joints_2d.cpp
msgid "Node A and Node B must be PhysicsBody2Ds"
msgstr ""
@@ -18474,6 +19801,7 @@ msgid "Node B"
msgstr "Animacija Uduplaj KljuÄeve"
#: scene/2d/joints_2d.cpp scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp
+#: scene/3d/light.cpp scene/3d/physics_joint.cpp
#: scene/resources/environment.cpp
msgid "Bias"
msgstr ""
@@ -18483,7 +19811,7 @@ msgstr ""
msgid "Disable Collision"
msgstr "Onemogućeno"
-#: scene/2d/joints_2d.cpp
+#: scene/2d/joints_2d.cpp scene/3d/physics_joint.cpp
msgid "Softness"
msgstr ""
@@ -18500,7 +19828,7 @@ msgstr ""
msgid "Rest Length"
msgstr ""
-#: scene/2d/joints_2d.cpp scene/3d/vehicle_body.cpp
+#: scene/2d/joints_2d.cpp scene/3d/physics_joint.cpp scene/3d/vehicle_body.cpp
msgid "Stiffness"
msgstr ""
@@ -18520,7 +19848,7 @@ msgid "Texture Scale"
msgstr ""
#: scene/2d/light_2d.cpp scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp
-#: scene/resources/environment.cpp scene/resources/sky.cpp
+#: scene/3d/light.cpp scene/resources/environment.cpp scene/resources/sky.cpp
msgid "Energy"
msgstr ""
@@ -18556,12 +19884,6 @@ msgstr ""
msgid "Gradient Length"
msgstr ""
-#: scene/2d/light_2d.cpp scene/gui/control.cpp
-#: scene/resources/navigation_mesh.cpp
-#, fuzzy
-msgid "Filter"
-msgstr "Filtriraj signale"
-
#: scene/2d/light_2d.cpp
#, fuzzy
msgid "Filter Smooth"
@@ -18953,10 +20275,6 @@ msgid "Applied Forces"
msgstr ""
#: scene/2d/physics_body_2d.cpp
-msgid "Force"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp
msgid "Torque"
msgstr ""
@@ -18969,7 +20287,7 @@ msgid "Sync To Physics"
msgstr ""
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-msgid "Moving platform"
+msgid "Moving Platform"
msgstr ""
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
@@ -18978,7 +20296,7 @@ msgstr ""
#: scene/2d/physics_body_2d.cpp scene/2d/touch_screen_button.cpp
#: scene/3d/physics_body.cpp scene/gui/texture_button.cpp
-#: scene/resources/line_shape_2d.cpp
+#: scene/resources/line_shape_2d.cpp scene/resources/material.cpp
msgid "Normal"
msgstr ""
@@ -19196,6 +20514,33 @@ msgid ""
"as parent."
msgstr ""
+#: scene/2d/visibility_notifier_2d.cpp scene/3d/visibility_notifier.cpp
+#, fuzzy
+msgid "Pause Animations"
+msgstr "Animacije:"
+
+#: scene/2d/visibility_notifier_2d.cpp scene/3d/visibility_notifier.cpp
+msgid "Freeze Bodies"
+msgstr ""
+
+#: scene/2d/visibility_notifier_2d.cpp
+msgid "Pause Particles"
+msgstr ""
+
+#: scene/2d/visibility_notifier_2d.cpp
+#, fuzzy
+msgid "Pause Animated Sprites"
+msgstr "Promeni Korake Animacije"
+
+#: scene/2d/visibility_notifier_2d.cpp
+#, fuzzy
+msgid "Process Parent"
+msgstr "Napravi"
+
+#: scene/2d/visibility_notifier_2d.cpp
+msgid "Physics Process Parent"
+msgstr ""
+
#: scene/3d/area.cpp
msgid "Reverb Bus"
msgstr ""
@@ -19288,6 +20633,7 @@ msgid "Attenuation Filter"
msgstr ""
#: scene/3d/audio_stream_player_3d.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
#: servers/audio/effects/audio_effect_filter.cpp
msgid "Cutoff Hz"
msgstr ""
@@ -19330,10 +20676,6 @@ msgid "Octree"
msgstr ""
#: scene/3d/baked_lightmap.cpp
-msgid "User Data"
-msgstr ""
-
-#: scene/3d/baked_lightmap.cpp
msgid "Finding meshes and lights"
msgstr ""
@@ -19576,6 +20918,16 @@ msgid "Ring Axis"
msgstr "Upozorenja"
#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Rotate Y"
+msgstr "Kontanta"
+
+#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Disable Z"
+msgstr "Onemogućeno"
+
+#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
msgid "Flatness"
msgstr ""
@@ -19611,15 +20963,11 @@ msgstr ""
msgid "Dynamic Range"
msgstr ""
-#: scene/3d/gi_probe.cpp
+#: scene/3d/gi_probe.cpp scene/3d/light.cpp
msgid "Normal Bias"
msgstr ""
#: scene/3d/gi_probe.cpp
-msgid "Compress"
-msgstr ""
-
-#: scene/3d/gi_probe.cpp
msgid "Plotting Meshes"
msgstr ""
@@ -19645,15 +20993,28 @@ msgid "Subdiv"
msgstr ""
#: scene/3d/light.cpp
+msgid "Indirect Energy"
+msgstr ""
+
+#: scene/3d/light.cpp
msgid "Negative"
msgstr ""
#: scene/3d/light.cpp
#, fuzzy
+msgid "Specular"
+msgstr "Napravi"
+
+#: scene/3d/light.cpp
+#, fuzzy
msgid "Bake Mode"
msgstr "Animacija Uduplaj KljuÄeve"
#: scene/3d/light.cpp
+msgid "Contact"
+msgstr ""
+
+#: scene/3d/light.cpp
#, fuzzy
msgid "Reverse Cull Face"
msgstr "Obriši Selekciju"
@@ -19663,11 +21024,31 @@ msgid "Directional Shadow"
msgstr ""
#: scene/3d/light.cpp
+#, fuzzy
+msgid "Split 1"
+msgstr "Izmjeni Krivulju ÄŒvora"
+
+#: scene/3d/light.cpp
+#, fuzzy
+msgid "Split 2"
+msgstr "Izmjeni Krivulju ÄŒvora"
+
+#: scene/3d/light.cpp
+#, fuzzy
+msgid "Split 3"
+msgstr "Izmjeni Krivulju ÄŒvora"
+
+#: scene/3d/light.cpp
msgid "Blend Splits"
msgstr ""
#: scene/3d/light.cpp
#, fuzzy
+msgid "Bias Split Scale"
+msgstr "Prethodna Skripta"
+
+#: scene/3d/light.cpp
+#, fuzzy
msgid "Depth Range"
msgstr "Razmera"
@@ -19692,6 +21073,11 @@ msgstr ""
msgid "Spot"
msgstr ""
+#: scene/3d/light.cpp
+#, fuzzy
+msgid "Angle Attenuation"
+msgstr "Animacije:"
+
#: scene/3d/mesh_instance.cpp
msgid "Software Skinning"
msgstr ""
@@ -19810,6 +21196,60 @@ msgid "Axis Lock"
msgstr ""
#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Linear X"
+msgstr "Linearna"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Linear Y"
+msgstr "Linearna"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Linear Z"
+msgstr "Linearna"
+
+#: scene/3d/physics_body.cpp
+msgid "Angular X"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Angular Y"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Angular Z"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Motion X"
+msgstr "Sve sekcije"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Motion Y"
+msgstr "Sve sekcije"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Motion Z"
+msgstr "Sve sekcije"
+
+#: scene/3d/physics_body.cpp
+msgid "Move Lock X"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Move Lock Y"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Move Lock Z"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
msgid "Body Offset"
msgstr ""
@@ -19843,6 +21283,14 @@ msgid "Exclude Nodes"
msgstr "Animacija ObriÅ¡i KljuÄeve"
#: scene/3d/physics_joint.cpp
+msgid "Params"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Impulse Clamp"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit"
msgstr ""
@@ -19854,6 +21302,53 @@ msgstr ""
msgid "Lower"
msgstr ""
+#: scene/3d/physics_joint.cpp scene/3d/vehicle_body.cpp
+#, fuzzy
+msgid "Relaxation"
+msgstr "Odvajanje:"
+
+#: scene/3d/physics_joint.cpp
+msgid "Motor"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Target Velocity"
+msgstr "Linearna"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Max Impulse"
+msgstr "Vrednost:"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit"
+msgstr "Linearna"
+
+#: scene/3d/physics_joint.cpp
+msgid "Upper Distance"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Lower Distance"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Restitution"
+msgstr "Animacije:"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motion"
+msgstr "Linearna"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Ortho"
+msgstr "Linearna"
+
#: scene/3d/physics_joint.cpp
msgid "Upper Angle"
msgstr ""
@@ -19863,6 +21358,16 @@ msgid "Lower Angle"
msgstr ""
#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Angular Motion"
+msgstr "Animacije:"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Angular Ortho"
+msgstr "Max. Ugaona Greška:"
+
+#: scene/3d/physics_joint.cpp
msgid "Swing Span"
msgstr ""
@@ -19871,17 +21376,98 @@ msgid "Twist Span"
msgstr ""
#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit X"
+msgstr "Linearna"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motor X"
+msgstr "Linearna"
+
+#: scene/3d/physics_joint.cpp
+msgid "Force Limit"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Spring X"
+msgstr "Linearna"
+
+#: scene/3d/physics_joint.cpp
+msgid "Equilibrium Point"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit X"
msgstr ""
#: scene/3d/physics_joint.cpp
+msgid "Erp"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Motor X"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Spring X"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit Y"
+msgstr "Linearna"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motor Y"
+msgstr "Linearna"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Spring Y"
+msgstr "Linearna"
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit Y"
msgstr ""
#: scene/3d/physics_joint.cpp
+msgid "Angular Motor Y"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Spring Y"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit Z"
+msgstr "Linearna"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motor Z"
+msgstr "Linearna"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Spring Z"
+msgstr "Linearna"
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit Z"
msgstr ""
+#: scene/3d/physics_joint.cpp
+msgid "Angular Motor Z"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Spring Z"
+msgstr ""
+
#: scene/3d/portal.cpp
msgid "The RoomManager should not be a child or grandchild of a Portal."
msgstr ""
@@ -19991,7 +21577,7 @@ msgstr ""
msgid "Use Default Simplify"
msgstr ""
-#: scene/3d/room.cpp
+#: scene/3d/room.cpp scene/3d/room_manager.cpp
msgid "Room Simplify"
msgstr ""
@@ -20029,6 +21615,13 @@ msgstr ""
msgid "Main"
msgstr ""
+#: scene/3d/room_manager.cpp scene/animation/animation_player.cpp
+#: scene/animation/animation_tree.cpp scene/animation/animation_tree_player.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+#, fuzzy
+msgid "Active"
+msgstr "Sve sekcije"
+
#: scene/3d/room_manager.cpp
msgid "Roomlist"
msgstr ""
@@ -20051,6 +21644,48 @@ msgid "Gameplay"
msgstr ""
#: scene/3d/room_manager.cpp
+msgid "Gameplay Monitor"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "Use Secondary PVS"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "Merge Meshes"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "Show Margins"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "Debug Sprawl"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "Overlap Warning Threshold"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Preview Camera"
+msgstr "Animacija Dodaj Kanal"
+
+#: scene/3d/room_manager.cpp
+msgid "Portal Depth Limit"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Default Portal Margin"
+msgstr "Dodatni Argumenti Poziva:"
+
+#: scene/3d/room_manager.cpp
+msgid "Roaming Expansion Margin"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
msgid ""
"RoomList path is invalid.\n"
"Please check the RoomList branch has been assigned in the RoomManager."
@@ -20171,6 +21806,19 @@ msgstr ""
msgid "Billboard"
msgstr ""
+#: scene/3d/sprite_3d.cpp scene/resources/material.cpp
+#, fuzzy
+msgid "Transparent"
+msgstr "Tranzicija: "
+
+#: scene/3d/sprite_3d.cpp
+msgid "Shaded"
+msgstr ""
+
+#: scene/3d/sprite_3d.cpp
+msgid "Double Sided"
+msgstr ""
+
#: scene/3d/sprite_3d.cpp
msgid "Alpha Cut"
msgstr ""
@@ -20238,11 +21886,6 @@ msgstr ""
msgid "Max Force"
msgstr "%s Greška"
-#: scene/3d/vehicle_body.cpp
-#, fuzzy
-msgid "Relaxation"
-msgstr "Odvajanje:"
-
#: scene/3d/visibility_notifier.cpp
msgid "AABB"
msgstr ""
@@ -20369,8 +22012,9 @@ msgid "Fadeout Time"
msgstr ""
#: scene/animation/animation_blend_tree.cpp
-msgid "autorestart_"
-msgstr ""
+#, fuzzy
+msgid "Auto Restart"
+msgstr "Automatski Ubaci KljuÄ"
#: scene/animation/animation_blend_tree.cpp
#, fuzzy
@@ -20450,13 +22094,6 @@ msgstr ""
msgid "Default Blend Time"
msgstr ""
-#: scene/animation/animation_player.cpp scene/animation/animation_tree.cpp
-#: scene/animation/animation_tree_player.cpp
-#: servers/audio/effects/audio_effect_delay.cpp
-#, fuzzy
-msgid "Active"
-msgstr "Sve sekcije"
-
#: scene/animation/animation_player.cpp
msgid "Method Call Mode"
msgstr ""
@@ -20574,10 +22211,6 @@ msgstr "Ukloni ÄŒvor"
msgid "Max Iterations"
msgstr "Napravi Funkciju"
-#: scene/animation/tween.cpp scene/resources/texture.cpp
-msgid "Repeat"
-msgstr ""
-
#: scene/animation/tween.cpp
msgid "Playback Process Mode"
msgstr ""
@@ -20604,19 +22237,6 @@ msgstr ""
msgid "Alignment"
msgstr ""
-#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
-#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
-#: scene/resources/style_box.cpp
-#, fuzzy
-msgid "Horizontal"
-msgstr "Ukloni Horizontalni VodiÄ"
-
-#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
-#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
-#: scene/resources/style_box.cpp
-msgid "Vertical"
-msgstr ""
-
#: scene/gui/base_button.cpp
msgid "Shortcut In Tooltip"
msgstr ""
@@ -20709,10 +22329,6 @@ msgid "HSV"
msgstr ""
#: scene/gui/color_picker.cpp
-msgid "Raw"
-msgstr ""
-
-#: scene/gui/color_picker.cpp
msgid "Switch between hexadecimal and code values."
msgstr ""
@@ -20767,6 +22383,30 @@ msgid "Focus"
msgstr ""
#: scene/gui/control.cpp
+msgid "Neighbour Left"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Neighbour Top"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Neighbour Right"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Neighbour Bottom"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Next"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Previous"
+msgstr ""
+
+#: scene/gui/control.cpp
msgid "Mouse"
msgstr ""
@@ -20801,7 +22441,7 @@ msgid "Dialog"
msgstr ""
#: scene/gui/dialogs.cpp
-msgid "Hide On Ok"
+msgid "Hide On OK"
msgstr ""
#: scene/gui/dialogs.cpp scene/gui/label.cpp
@@ -20894,7 +22534,7 @@ msgid "Timers"
msgstr "Vreme:"
#: scene/gui/item_list.cpp scene/gui/popup_menu.cpp scene/gui/tree.cpp
-msgid "Incremental Search Max Interval (msec)"
+msgid "Incremental Search Max Interval Msec"
msgstr ""
#: scene/gui/item_list.cpp scene/gui/tree.cpp
@@ -21428,6 +23068,26 @@ msgstr "Centriraj ÄŒvor"
msgid "Nine Patch Stretch"
msgstr "NaÄin Interpolacije"
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Left"
+msgstr "Razmera:"
+
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Top"
+msgstr "Razmera:"
+
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Right"
+msgstr "Razmera:"
+
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Bottom"
+msgstr "Razmera:"
+
#: scene/gui/tree.cpp
msgid "Custom Minimum Height"
msgstr ""
@@ -21463,7 +23123,7 @@ msgid "Paused"
msgstr ""
#: scene/gui/video_player.cpp
-msgid "Buffering (msec)"
+msgid "Buffering Msec"
msgstr ""
#: scene/gui/video_player.cpp
@@ -21784,6 +23444,22 @@ msgid "Shadow Atlas"
msgstr ""
#: scene/main/viewport.cpp
+msgid "Quad 0"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 1"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 2"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 3"
+msgstr ""
+
+#: scene/main/viewport.cpp
#, fuzzy
msgid "Canvas Transform"
msgstr "Animacija Promjeni Transformaciju"
@@ -21798,6 +23474,10 @@ msgid "Tooltip Delay (sec)"
msgstr ""
#: scene/register_scene_types.cpp
+msgid "Swap OK Cancel"
+msgstr ""
+
+#: scene/register_scene_types.cpp
msgid "Use hiDPI"
msgstr ""
@@ -21812,21 +23492,6 @@ msgid "Custom Font"
msgstr "Animacija Uduplaj KljuÄeve"
#: scene/resources/audio_stream_sample.cpp
-#, fuzzy
-msgid "Loop Mode"
-msgstr "Napravi"
-
-#: scene/resources/audio_stream_sample.cpp
-#, fuzzy
-msgid "Loop Begin"
-msgstr "Napravi"
-
-#: scene/resources/audio_stream_sample.cpp
-#, fuzzy
-msgid "Loop End"
-msgstr "Napravi"
-
-#: scene/resources/audio_stream_sample.cpp
#: servers/audio/effects/audio_stream_generator.cpp servers/audio_server.cpp
msgid "Mix Rate"
msgstr ""
@@ -21880,6 +23545,15 @@ msgid "Extra Spacing"
msgstr ""
#: scene/resources/dynamic_font.cpp
+msgid "Char"
+msgstr ""
+
+#: scene/resources/dynamic_font.cpp scene/resources/world.cpp
+#: scene/resources/world_2d.cpp
+msgid "Space"
+msgstr ""
+
+#: scene/resources/dynamic_font.cpp
msgid "Font"
msgstr ""
@@ -22097,6 +23771,42 @@ msgid "Glow"
msgstr ""
#: scene/resources/environment.cpp
+msgid "Levels"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "1"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "2"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "3"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "4"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "5"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "6"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "7"
+msgstr ""
+
+#: scene/resources/environment.cpp
msgid "Bloom"
msgstr ""
@@ -22182,9 +23892,66 @@ msgid "Next Pass"
msgstr ""
#: scene/resources/material.cpp
+msgid "Use Shadow To Opacity"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Unshaded"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Vertex Lighting"
+msgstr "GeneriÅ¡i TaÄke"
+
+#: scene/resources/material.cpp
+msgid "No Depth Test"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Use Point Size"
+msgstr "Animacija Dodaj Kanal"
+
+#: scene/resources/material.cpp
+msgid "World Triplanar"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Fixed Size"
+msgstr "Animacija Dodaj Kanal"
+
+#: scene/resources/material.cpp
+msgid "Albedo Tex Force sRGB"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Do Not Receive Shadows"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Disable Ambient Light"
+msgstr "Onemogućeno"
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Ensure Correct Normals"
+msgstr "Transformacija homogenosti."
+
+#: scene/resources/material.cpp
msgid "Vertex Color"
msgstr ""
+#: scene/resources/material.cpp
+msgid "Use As Albedo"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Is sRGB"
+msgstr ""
+
#: scene/resources/material.cpp servers/visual_server.cpp
msgid "Parameters"
msgstr ""
@@ -22220,6 +23987,11 @@ msgid "Billboard Mode"
msgstr "Napravi"
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Billboard Keep Scale"
+msgstr "Napravi"
+
+#: scene/resources/material.cpp
msgid "Grow"
msgstr ""
@@ -22229,6 +24001,10 @@ msgid "Grow Amount"
msgstr "Ukloni Horizontalni VodiÄ"
#: scene/resources/material.cpp
+msgid "Use Alpha Scissor"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Alpha Scissor Threshold"
msgstr ""
@@ -22257,10 +24033,20 @@ msgid "Metallic Specular"
msgstr ""
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Metallic Texture"
+msgstr "Obriši Selekciju"
+
+#: scene/resources/material.cpp
msgid "Metallic Texture Channel"
msgstr ""
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Roughness Texture"
+msgstr "Obriši Selekciju"
+
+#: scene/resources/material.cpp
msgid "Roughness Texture Channel"
msgstr ""
@@ -22277,6 +24063,15 @@ msgid "Emission Operator"
msgstr ""
#: scene/resources/material.cpp
+msgid "Emission On UV2"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Emission Texture"
+msgstr "Obriši Selekciju"
+
+#: scene/resources/material.cpp
msgid "NormalMap"
msgstr ""
@@ -22290,6 +24085,11 @@ msgstr ""
#: scene/resources/material.cpp
#, fuzzy
+msgid "Rim Texture"
+msgstr "Obriši Selekciju"
+
+#: scene/resources/material.cpp
+#, fuzzy
msgid "Clearcoat"
msgstr "OÄisti Kosti"
@@ -22299,15 +24099,28 @@ msgid "Clearcoat Gloss"
msgstr "OÄisti Kosti"
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Clearcoat Texture"
+msgstr "Izmjeni Selekciju Krivulje"
+
+#: scene/resources/material.cpp
msgid "Anisotropy"
msgstr ""
#: scene/resources/material.cpp
+msgid "Anisotropy Flowmap"
+msgstr ""
+
+#: scene/resources/material.cpp
#, fuzzy
msgid "Ambient Occlusion"
msgstr "Napravi"
#: scene/resources/material.cpp
+msgid "On UV2"
+msgstr ""
+
+#: scene/resources/material.cpp
#, fuzzy
msgid "Texture Channel"
msgstr "(UreÄ‘ivaÄ Onemogućen)"
@@ -22345,6 +24158,11 @@ msgstr "Tranzicija: "
#: scene/resources/material.cpp
#, fuzzy
+msgid "Transmission Texture"
+msgstr "Tranzicija: "
+
+#: scene/resources/material.cpp
+#, fuzzy
msgid "Refraction"
msgstr "Odvajanje:"
@@ -22361,6 +24179,10 @@ msgid "UV1"
msgstr ""
#: scene/resources/material.cpp
+msgid "Triplanar"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Triplanar Sharpness"
msgstr ""
@@ -22558,6 +24380,16 @@ msgstr "Izmjeni Selekciju Krivulje"
msgid "Point Count"
msgstr "Optimizuj Animaciju"
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Scale Random"
+msgstr "Razmera:"
+
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Scale Curve"
+msgstr "Razdeli Krivu"
+
#: scene/resources/physics_material.cpp
msgid "Rough"
msgstr ""
@@ -22615,10 +24447,6 @@ msgid "A"
msgstr ""
#: scene/resources/shader.cpp
-msgid "Code"
-msgstr ""
-
-#: scene/resources/shader.cpp
msgid "Custom Defines"
msgstr ""
@@ -22707,14 +24535,6 @@ msgid "Grow End"
msgstr ""
#: scene/resources/texture.cpp
-msgid "Storage"
-msgstr ""
-
-#: scene/resources/texture.cpp
-msgid "Lossy Quality"
-msgstr ""
-
-#: scene/resources/texture.cpp
#, fuzzy
msgid "Load Path"
msgstr "Putanja"
@@ -22832,10 +24652,6 @@ msgstr ""
msgid "Fallback Environment"
msgstr ""
-#: scene/resources/world.cpp scene/resources/world_2d.cpp
-msgid "Space"
-msgstr ""
-
#: scene/resources/world.cpp
msgid "Scenario"
msgstr ""
@@ -22910,8 +24726,34 @@ msgstr ""
msgid "Wet"
msgstr ""
-#: servers/audio/effects/audio_effect_compressor.cpp
-msgid "Threshold"
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "Voice"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+msgid "Delay (ms)"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_phaser.cpp
+msgid "Rate Hz"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#, fuzzy
+msgid "Depth (ms)"
+msgstr "Razmera"
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+msgid "Level dB"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+#: servers/audio/effects/audio_effect_panner.cpp
+msgid "Pan"
msgstr ""
#: servers/audio/effects/audio_effect_compressor.cpp
@@ -22936,19 +24778,6 @@ msgid "Tap 1"
msgstr ""
#: servers/audio/effects/audio_effect_delay.cpp
-msgid "Delay (ms)"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_delay.cpp
-msgid "Level dB"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_delay.cpp
-#: servers/audio/effects/audio_effect_panner.cpp
-msgid "Pan"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_delay.cpp
msgid "Tap 2"
msgstr ""
@@ -23007,10 +24836,6 @@ msgstr ""
msgid "Range Max Hz"
msgstr ""
-#: servers/audio/effects/audio_effect_phaser.cpp
-msgid "Rate Hz"
-msgstr ""
-
#: servers/audio/effects/audio_effect_pitch_shift.cpp
msgid "Oversampling"
msgstr ""
@@ -23025,7 +24850,7 @@ msgid "Predelay"
msgstr ""
#: servers/audio/effects/audio_effect_reverb.cpp
-msgid "(msec)"
+msgid "Msec"
msgstr ""
#: servers/audio/effects/audio_effect_reverb.cpp
diff --git a/editor/translations/sv.po b/editor/translations/sv.po
index b4374e9816..5698ab68a2 100644
--- a/editor/translations/sv.po
+++ b/editor/translations/sv.po
@@ -41,7 +41,7 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 4.10\n"
-#: core/bind/core_bind.cpp
+#: core/bind/core_bind.cpp main/main.cpp
msgid "Tablet Driver"
msgstr ""
@@ -142,8 +142,8 @@ msgstr "Dockposition"
#: core/bind/core_bind.cpp editor/editor_settings.cpp main/main.cpp
#: modules/gdscript/gdscript_editor.cpp modules/gridmap/grid_map.cpp
#: modules/mono/csharp_script.cpp modules/visual_script/visual_script_nodes.cpp
-#: scene/2d/tile_map.cpp scene/3d/camera.cpp scene/gui/control.cpp
-#: scene/gui/graph_edit.cpp scene/main/viewport.cpp
+#: scene/2d/tile_map.cpp scene/3d/camera.cpp scene/3d/light.cpp
+#: scene/gui/control.cpp scene/gui/graph_edit.cpp scene/main/viewport.cpp
#: scene/resources/dynamic_font.cpp scene/resources/navigation_mesh.cpp
#: scene/resources/primitive_meshes.cpp scene/resources/sky.cpp
#: scene/resources/style_box.cpp scene/resources/texture.cpp
@@ -246,8 +246,7 @@ msgid "Data"
msgstr ""
#: core/io/file_access_network.cpp core/register_core_types.cpp
-#: editor/editor_settings.cpp editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp main/main.cpp
+#: editor/editor_settings.cpp main/main.cpp
#: modules/gdscript/language_server/gdscript_language_server.cpp
#, fuzzy
msgid "Network"
@@ -527,9 +526,10 @@ msgstr "Återställ Zoom"
msgid "Relative"
msgstr "GDNative"
-#: core/os/input_event.cpp scene/2d/camera_2d.cpp
-#: scene/3d/interpolated_camera.cpp scene/animation/animation_player.cpp
-#: scene/resources/environment.cpp
+#: core/os/input_event.cpp scene/2d/camera_2d.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/interpolated_camera.cpp
+#: scene/animation/animation_player.cpp scene/resources/environment.cpp
+#: scene/resources/particles_material.cpp
#, fuzzy
msgid "Speed"
msgstr "Skala"
@@ -579,8 +579,9 @@ msgstr "Synkronisera Skript-ändringar"
msgid "Pitch"
msgstr "Växla"
-#: core/os/input_event.cpp scene/2d/physics_body_2d.cpp
-#: scene/3d/physics_body.cpp
+#: core/os/input_event.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/physics_body_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/3d/physics_body.cpp scene/resources/particles_material.cpp
msgid "Velocity"
msgstr ""
@@ -598,6 +599,8 @@ msgid "Controller Value"
msgstr ""
#: core/project_settings.cpp editor/editor_node.cpp main/main.cpp
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/windows/export/export.cpp
#, fuzzy
msgid "Application"
msgstr "Åtgärd"
@@ -615,13 +618,16 @@ msgstr "Projektinställningar..."
#: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp
#: editor/editor_plugin_settings.cpp editor/editor_profiler.cpp
#: editor/project_manager.cpp editor/settings_config_dialog.cpp
-#: modules/gdnative/nativescript/nativescript.cpp scene/2d/area_2d.cpp
-#: scene/3d/area.cpp scene/main/node.cpp
+#: modules/gdnative/nativescript/nativescript.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/osx/export/export.cpp scene/2d/area_2d.cpp scene/3d/area.cpp
+#: scene/main/node.cpp
msgid "Name"
msgstr "Namn"
#: core/project_settings.cpp editor/editor_help.cpp
-#: modules/visual_script/visual_script_nodes.cpp
+#: modules/visual_script/visual_script_nodes.cpp platform/uwp/export/export.cpp
+#: platform/windows/export/export.cpp
msgid "Description"
msgstr "Beskrivning"
@@ -659,7 +665,7 @@ msgid "Custom User Dir Name"
msgstr ""
#: core/project_settings.cpp editor/animation_track_editor.cpp
-#: editor/editor_audio_buses.cpp servers/audio_server.cpp
+#: editor/editor_audio_buses.cpp main/main.cpp servers/audio_server.cpp
msgid "Audio"
msgstr "Ljud"
@@ -823,10 +829,13 @@ msgstr "Filter:"
msgid "Sharpen Intensity"
msgstr ""
-#: core/project_settings.cpp editor/editor_node.cpp editor/editor_settings.cpp
-#: editor/plugins/script_editor_plugin.cpp editor/project_export.cpp
-#: main/main.cpp modules/gdscript/gdscript.cpp
-#: modules/visual_script/visual_script.cpp scene/3d/room_manager.cpp
+#: core/project_settings.cpp editor/editor_export.cpp editor/editor_node.cpp
+#: editor/editor_settings.cpp editor/plugins/script_editor_plugin.cpp
+#: editor/project_export.cpp main/main.cpp modules/gdscript/gdscript.cpp
+#: modules/visual_script/visual_script.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp scene/3d/room_manager.cpp
#: scene/main/scene_tree.cpp scene/resources/shape_2d.cpp
#: servers/visual_server.cpp
msgid "Debug"
@@ -1057,6 +1066,7 @@ msgid "Subsurface Scattering"
msgstr ""
#: drivers/gles3/rasterizer_scene_gles3.cpp
+#: editor/import/resource_importer_texture.cpp
#: editor/plugins/spatial_editor_plugin.cpp modules/gltf/gltf_node.cpp
#: modules/gridmap/grid_map.cpp scene/2d/cpu_particles_2d.cpp
#: scene/2d/node_2d.cpp scene/2d/parallax_layer.cpp scene/2d/polygon_2d.cpp
@@ -1353,6 +1363,7 @@ msgid "Editors"
msgstr "Öppna 3D-redigeraren"
#: editor/animation_track_editor.cpp editor/editor_settings.cpp
+#: editor/import/resource_importer_scene.cpp
#: editor/plugins/animation_player_editor_plugin.cpp editor/scene_tree_dock.cpp
#: scene/2d/animated_sprite.cpp scene/2d/cpu_particles_2d.cpp
#: scene/2d/sprite.cpp scene/3d/cpu_particles.cpp scene/3d/sprite_3d.cpp
@@ -1587,14 +1598,14 @@ msgstr "Animationens stegvärde."
msgid "Seconds"
msgstr "Sekunder"
-#: editor/animation_track_editor.cpp
+#: editor/animation_track_editor.cpp editor/import/resource_importer_scene.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp main/main.cpp
#: scene/resources/texture.cpp
msgid "FPS"
msgstr "FPS"
#: editor/animation_track_editor.cpp editor/editor_plugin_settings.cpp
-#: editor/editor_resource_picker.cpp
+#: editor/editor_resource_picker.cpp editor/import/resource_importer_wav.cpp
#: editor/plugins/polygon_2d_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
@@ -2563,7 +2574,9 @@ msgid "Remove Autoload"
msgstr "Ta bort Autoload"
#: editor/editor_autoload_settings.cpp editor/editor_plugin_settings.cpp
-#: modules/gdscript/gdscript.cpp scene/2d/polygon_2d.cpp scene/3d/area.cpp
+#: modules/gdscript/gdscript.cpp platform/android/export/export_plugin.cpp
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#: scene/2d/polygon_2d.cpp scene/3d/area.cpp scene/3d/physics_joint.cpp
#: scene/3d/reflection_probe.cpp scene/main/canvas_layer.cpp
#: scene/resources/material.cpp servers/visual_server.cpp
msgid "Enable"
@@ -2730,6 +2743,58 @@ msgstr ""
#: editor/editor_export.cpp platform/android/export/export_plugin.cpp
#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Custom Template"
+msgstr "Redigera Tema"
+
+#: editor/editor_export.cpp editor/project_export.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp
+msgid "Release"
+msgstr ""
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Binary Format"
+msgstr "Färg enhetlig."
+
+#: editor/editor_export.cpp
+msgid "64 Bits"
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Embed PCK"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Texture Format"
+msgstr "Växla Läge"
+
+#: editor/editor_export.cpp
+msgid "BPTC"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "S3TC"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "ETC"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "ETC2"
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "No BPTC Fallbacks"
+msgstr ""
+
+#: editor/editor_export.cpp platform/android/export/export_plugin.cpp
+#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
msgid "Custom debug template not found."
msgstr "Mallfil hittades inte."
@@ -2916,6 +2981,7 @@ msgid "Make Current"
msgstr "Gör till Nuvarande"
#: editor/editor_feature_profile.cpp editor/editor_node.cpp
+#: editor/import/resource_importer_scene.cpp
#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
msgid "Import"
msgstr "Importera"
@@ -3051,8 +3117,11 @@ msgstr "Klart!"
msgid "Display Mode"
msgstr "Spel Läge:"
-#: editor/editor_file_dialog.cpp main/main.cpp modules/csg/csg_shape.cpp
-#: modules/visual_script/visual_script_nodes.cpp
+#: editor/editor_file_dialog.cpp
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+#: editor/import/resource_importer_wav.cpp main/main.cpp
+#: modules/csg/csg_shape.cpp modules/visual_script/visual_script_nodes.cpp
#: modules/visual_script/visual_script_yield_nodes.cpp scene/2d/light_2d.cpp
#: scene/2d/physics_body_2d.cpp scene/2d/tile_map.cpp
#: scene/3d/baked_lightmap.cpp scene/3d/light.cpp scene/3d/physics_body.cpp
@@ -3191,7 +3260,9 @@ msgstr "(Om)Importerar Tillgångar"
msgid "Reimport Missing Imported Files"
msgstr ""
-#: editor/editor_help.cpp
+#: editor/editor_help.cpp scene/2d/camera_2d.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/resources/dynamic_font.cpp
+#: scene/resources/style_box.cpp
msgid "Top"
msgstr "Topp"
@@ -3247,6 +3318,7 @@ msgid "Fonts"
msgstr "Font"
#: editor/editor_help.cpp editor/plugins/theme_editor_plugin.cpp
+#: platform/iphone/export/export.cpp
#, fuzzy
msgid "Icons"
msgstr "Ikon"
@@ -3431,7 +3503,9 @@ msgstr ""
msgid "Pin value [Disabled because '%s' is editor-only]"
msgstr ""
-#: editor/editor_inspector.cpp editor/scene_tree_dock.cpp
+#: editor/editor_inspector.cpp
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+#: editor/scene_tree_dock.cpp
#: modules/visual_script/visual_script_func_nodes.cpp
#: modules/visual_script/visual_script_nodes.cpp
#: modules/visual_script/visual_script_property_selector.cpp
@@ -3781,6 +3855,16 @@ msgid "Quick Open Script..."
msgstr "Snabböppna Skript..."
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Save & Reload"
+msgstr "Spara & Avsluta"
+
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Save changes to '%s' before reloading?"
+msgstr "Spara ändringar i '%s' innan stängning?"
+
+#: editor/editor_node.cpp
msgid "Save & Close"
msgstr "Spara & Stäng"
@@ -3898,6 +3982,11 @@ msgid "Open Project Manager?"
msgstr "Öppna Projekthanteraren?"
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Save changes to the following scene(s) before reloading?"
+msgstr "Spara ändringar av följande scen(er) innan du avslutar?"
+
+#: editor/editor_node.cpp
msgid "Save & Quit"
msgstr "Spara & Avsluta"
@@ -4177,8 +4266,8 @@ msgstr "Materialförändringar:"
#: editor/editor_node.cpp
#, fuzzy
-msgid "Translate Properties"
-msgstr "Egenskaper"
+msgid "Localize Settings"
+msgstr "Lokalisering"
#: editor/editor_node.cpp
#, fuzzy
@@ -4195,8 +4284,8 @@ msgstr "Inspektör"
#: editor/editor_node.cpp
#, fuzzy
-msgid "Capitalize Properties"
-msgstr "Egenskaper"
+msgid "Default Property Name Style"
+msgstr "Sökväg till projektet:"
#: editor/editor_node.cpp
msgid "Default Float Step"
@@ -4780,7 +4869,9 @@ msgstr "Installerade Plugins:"
msgid "Update"
msgstr "Uppdatera"
-#: editor/editor_plugin_settings.cpp
+#: editor/editor_plugin_settings.cpp platform/android/export/export_plugin.cpp
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp
msgid "Version"
msgstr "Version"
@@ -5791,7 +5882,7 @@ msgstr ""
msgid "Rect Custom Position"
msgstr "Ta bort Polygon och Punkt"
-#: editor/editor_settings.cpp
+#: editor/editor_settings.cpp platform/android/export/export_plugin.cpp
msgid "Screen"
msgstr ""
@@ -5817,6 +5908,19 @@ msgid "Editor SSL Certificates"
msgstr ""
#: editor/editor_settings.cpp
+msgid "HTTP Proxy"
+msgstr ""
+
+#: editor/editor_settings.cpp
+msgid "Host"
+msgstr ""
+
+#: editor/editor_settings.cpp editor/fileserver/editor_file_server.cpp
+#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp
+msgid "Port"
+msgstr ""
+
+#: editor/editor_settings.cpp
msgid "Project Manager"
msgstr "Projektledare"
@@ -5859,7 +5963,8 @@ msgstr ""
msgid "String Color"
msgstr "Lagrar Fil:"
-#: editor/editor_settings.cpp
+#: editor/editor_settings.cpp platform/javascript/export/export.cpp
+#: platform/uwp/export/export.cpp
#, fuzzy
msgid "Background Color"
msgstr "Ogiltigt namn."
@@ -6036,22 +6141,6 @@ msgid "Starting the download..."
msgstr ""
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "HTTP Proxy"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Host"
-msgstr ""
-
-#: editor/export_template_manager.cpp editor/fileserver/editor_file_server.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp main/main.cpp
-#: modules/mono/mono_gd/gd_mono.cpp
-msgid "Port"
-msgstr ""
-
-#: editor/export_template_manager.cpp
#, fuzzy
msgid "Error requesting URL:"
msgstr "Fel vid laddning:"
@@ -6314,6 +6403,7 @@ msgstr ""
#: editor/fileserver/editor_file_server.cpp
#: editor/plugins/version_control_editor_plugin.cpp
+#: platform/uwp/export/export.cpp platform/windows/export/export.cpp
msgid "Password"
msgstr ""
@@ -6717,6 +6807,116 @@ msgstr ""
msgid "Use Ambient"
msgstr ""
+#: editor/import/resource_importer_bitmask.cpp
+#, fuzzy
+msgid "Create From"
+msgstr "Skapa Mapp"
+
+#: editor/import/resource_importer_bitmask.cpp
+#: servers/audio/effects/audio_effect_compressor.cpp
+msgid "Threshold"
+msgstr ""
+
+#: editor/import/resource_importer_csv_translation.cpp
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_scene.cpp
+#: editor/import/resource_importer_texture.cpp
+#: editor/import/resource_importer_wav.cpp scene/3d/gi_probe.cpp
+#, fuzzy
+msgid "Compress"
+msgstr "Komponenter"
+
+#: editor/import/resource_importer_csv_translation.cpp
+msgid "Delimiter"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+msgid "No BPTC If RGB"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/sprite_3d.cpp
+#: scene/resources/material.cpp scene/resources/particles_material.cpp
+#: scene/resources/texture.cpp
+msgid "Flags"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/animation/tween.cpp
+#: scene/resources/texture.cpp
+msgid "Repeat"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/2d/light_2d.cpp
+#: scene/gui/control.cpp scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Filter"
+msgstr "Filter:"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Mipmaps"
+msgstr "Signaler"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+msgid "Anisotropic"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+msgid "sRGB"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#, fuzzy
+msgid "Slices"
+msgstr "Enhet"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
+#: scene/resources/style_box.cpp
+#, fuzzy
+msgid "Horizontal"
+msgstr "Skapa Node"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
+#: scene/resources/style_box.cpp
+#, fuzzy
+msgid "Vertical"
+msgstr "Partiklar"
+
+#: editor/import/resource_importer_obj.cpp
+#, fuzzy
+msgid "Generate Tangents"
+msgstr "Infoga Punkt"
+
+#: editor/import/resource_importer_obj.cpp
+#, fuzzy
+msgid "Scale Mesh"
+msgstr "Växla Läge"
+
+#: editor/import/resource_importer_obj.cpp
+msgid "Offset Mesh"
+msgstr ""
+
+#: editor/import/resource_importer_obj.cpp
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Octahedral Compression"
+msgstr "Ställ in uttryck"
+
+#: editor/import/resource_importer_obj.cpp
+#, fuzzy
+msgid "Optimize Mesh Flags"
+msgstr "Storlek: "
+
#: editor/import/resource_importer_scene.cpp
msgid "Import as Single Scene"
msgstr "Importera som enstaka scen"
@@ -6757,6 +6957,152 @@ msgstr "Importera som Flera Scener"
msgid "Import as Multiple Scenes+Materials"
msgstr "Importera som Flera Scener+Material"
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Nodes"
+msgstr "Nod"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Root Type"
+msgstr "Medlemmar"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Root Name"
+msgstr "Node Namn:"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Root Scale"
+msgstr "Skala"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Custom Script"
+msgstr "Klipp ut Noder"
+
+#: editor/import/resource_importer_scene.cpp scene/resources/texture.cpp
+#, fuzzy
+msgid "Storage"
+msgstr "Lagrar Fil:"
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Use Legacy Names"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+#, fuzzy
+msgid "Materials"
+msgstr "Materialförändringar:"
+
+#: editor/import/resource_importer_scene.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Location"
+msgstr "Lokalisering"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Keep On Reimport"
+msgstr "Importera om"
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+msgid "Meshes"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Ensure Tangents"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Light Baking"
+msgstr "Höger"
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Lightmap Texel Size"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+msgid "Skins"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Use Named Skins"
+msgstr "Signaler"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "External Files"
+msgstr "Öppna en Fil"
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Store In Subdir"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Filter Script"
+msgstr "Filtrera noder"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Keep Custom Tracks"
+msgstr "Transformera"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Optimizer"
+msgstr "Optimera"
+
+#: editor/import/resource_importer_scene.cpp main/main.cpp
+#: modules/mono/mono_gd/gd_mono.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp scene/2d/camera_2d.cpp scene/2d/light_2d.cpp
+#: scene/2d/navigation_polygon.cpp scene/2d/ray_cast_2d.cpp scene/2d/sprite.cpp
+#: scene/2d/y_sort.cpp scene/3d/audio_stream_player_3d.cpp
+#: scene/3d/baked_lightmap.cpp scene/3d/interpolated_camera.cpp
+#: scene/3d/light.cpp scene/3d/navigation_mesh_instance.cpp
+#: scene/3d/physics_joint.cpp scene/3d/ray_cast.cpp scene/3d/sprite_3d.cpp
+#: scene/gui/graph_edit.cpp scene/gui/rich_text_label.cpp
+#: scene/resources/curve.cpp scene/resources/environment.cpp
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Enabled"
+msgstr "Aktivera"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Max Linear Error"
+msgstr "Max. Linjärt fel:"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Max Angular Error"
+msgstr "Max. Vinkel-fel:"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Max Angle"
+msgstr "Värde"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Remove Unused Tracks"
+msgstr "Ta bort Anim spår"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Clips"
+msgstr "Animklipp:"
+
+#: editor/import/resource_importer_scene.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/particles_2d.cpp scene/3d/area.cpp scene/3d/cpu_particles.cpp
+#: scene/3d/particles.cpp scene/resources/environment.cpp
+msgid "Amount"
+msgstr ""
+
#: editor/import/resource_importer_scene.cpp
#: editor/plugins/mesh_library_editor_plugin.cpp
msgid "Import Scene"
@@ -6799,12 +7145,147 @@ msgstr ""
msgid "Saving..."
msgstr "Sparar..."
+#: editor/import/resource_importer_texture.cpp scene/resources/texture.cpp
+msgid "Lossy Quality"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "HDR Mode"
+msgstr "Växla Läge"
+
+#: editor/import/resource_importer_texture.cpp
+msgid "BPTC LDR"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/mesh_instance_2d.cpp scene/2d/multimesh_instance_2d.cpp
+#: scene/2d/particles_2d.cpp scene/2d/sprite.cpp scene/resources/style_box.cpp
+msgid "Normal Map"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Process"
+msgstr "Efterbehandling"
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Fix Alpha Border"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Premult Alpha"
+msgstr "Redigera Polygon"
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Hdr As Srgb"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Invert Color"
+msgstr "Nästa Skript"
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Normal Map Invert Y"
+msgstr "Slumpmässig Skala:"
+
+#: editor/import/resource_importer_texture.cpp
+#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
+#: scene/audio/audio_stream_player.cpp scene/gui/video_player.cpp
+msgid "Stream"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Size Limit"
+msgstr "Storlek: "
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Detect 3D"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "SVG"
+msgstr ""
+
#: editor/import/resource_importer_texture.cpp
msgid ""
"Warning, no suitable PC VRAM compression enabled in Project Settings. This "
"texture will not display correctly on PC."
msgstr ""
+#: editor/import/resource_importer_texture_atlas.cpp
+#, fuzzy
+msgid "Atlas File"
+msgstr "Alla Filer (*)"
+
+#: editor/import/resource_importer_texture_atlas.cpp
+#, fuzzy
+msgid "Import Mode"
+msgstr "Importera"
+
+#: editor/import/resource_importer_texture_atlas.cpp
+#, fuzzy
+msgid "Crop To Region"
+msgstr "Raw-Läge"
+
+#: editor/import/resource_importer_texture_atlas.cpp
+msgid "Trim Alpha Border From Region"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp scene/2d/physics_body_2d.cpp
+msgid "Force"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+msgid "8 Bit"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp main/main.cpp
+#: modules/mono/editor/csharp_project.cpp modules/mono/mono_gd/gd_mono.cpp
+msgid "Mono"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+#, fuzzy
+msgid "Max Rate"
+msgstr "Mix-Node"
+
+#: editor/import/resource_importer_wav.cpp
+#, fuzzy
+msgid "Max Rate Hz"
+msgstr "Mix-Node"
+
+#: editor/import/resource_importer_wav.cpp
+msgid "Trim"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+#, fuzzy
+msgid "Normalize"
+msgstr "Slumpmässig Skala:"
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+#, fuzzy
+msgid "Loop Mode"
+msgstr "Icon Läge"
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+#, fuzzy
+msgid "Loop Begin"
+msgstr "Icon Läge"
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+#, fuzzy
+msgid "Loop End"
+msgstr "Icon Läge"
+
#: editor/import_defaults_editor.cpp
msgid "Select Importer"
msgstr "Välj Importör"
@@ -6880,6 +7361,29 @@ msgstr "Misslyckades att ladda resurs."
#: editor/inspector_dock.cpp
#, fuzzy
+msgid "Property Name Style"
+msgstr "Projektnamn:"
+
+#: editor/inspector_dock.cpp scene/gui/color_picker.cpp
+msgid "Raw"
+msgstr ""
+
+#: editor/inspector_dock.cpp
+#, fuzzy
+msgid "Capitalized"
+msgstr "Egenskaper"
+
+#: editor/inspector_dock.cpp
+#, fuzzy
+msgid "Localized"
+msgstr "Slumpmässig Skala:"
+
+#: editor/inspector_dock.cpp
+msgid "Localization not available for current language."
+msgstr ""
+
+#: editor/inspector_dock.cpp
+#, fuzzy
msgid "Copy Properties"
msgstr "Egenskaper"
@@ -7956,18 +8460,26 @@ msgid "License (Z-A)"
msgstr "Licens (Z-A)"
#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgctxt "Pagination"
msgid "First"
msgstr "Första"
-#: editor/plugins/asset_library_editor_plugin.cpp scene/gui/control.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgctxt "Pagination"
msgid "Previous"
msgstr "Föregående"
-#: editor/plugins/asset_library_editor_plugin.cpp scene/gui/control.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgctxt "Pagination"
msgid "Next"
msgstr "Nästa"
#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgctxt "Pagination"
msgid "Last"
msgstr "Sista"
@@ -8209,22 +8721,22 @@ msgid ""
"margins."
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
#, fuzzy
msgid "Top Left"
msgstr "Vänster"
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
#, fuzzy
msgid "Top Right"
msgstr "Höger"
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
#, fuzzy
msgid "Bottom Right"
msgstr "Vy underifrån"
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
#, fuzzy
msgid "Bottom Left"
msgstr "Vy underifrån"
@@ -8966,6 +9478,19 @@ msgstr ""
msgid "Gradient Edited"
msgstr ""
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+msgid "Swap GradientTexture2D Fill Points"
+msgstr ""
+
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+msgid "Swap Gradient Fill Points"
+msgstr ""
+
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+#, fuzzy
+msgid "Toggle Grid Snap"
+msgstr "Växla Läge"
+
#: editor/plugins/item_list_editor_plugin.cpp
msgid "Item %d"
msgstr ""
@@ -9191,8 +9716,9 @@ msgstr ""
"Uppdatera från existerande scen?:\n"
"%s"
-#: editor/plugins/mesh_library_editor_plugin.cpp modules/gridmap/grid_map.cpp
-msgid "Mesh Library"
+#: editor/plugins/mesh_library_editor_plugin.cpp
+#, fuzzy
+msgid "MeshLibrary"
msgstr "MeshLibrary"
#: editor/plugins/mesh_library_editor_plugin.cpp
@@ -10210,8 +10736,8 @@ msgstr "Anslut Till Node:"
msgid "Source"
msgstr "Källa"
-#: editor/plugins/script_text_editor.cpp scene/3d/interpolated_camera.cpp
-#: scene/animation/skeleton_ik.cpp
+#: editor/plugins/script_text_editor.cpp platform/uwp/export/export.cpp
+#: scene/3d/interpolated_camera.cpp scene/animation/skeleton_ik.cpp
msgid "Target"
msgstr ""
@@ -11225,7 +11751,9 @@ msgstr ""
#: editor/plugins/sprite_frames_editor_plugin.cpp
#: modules/gltf/gltf_animation.cpp modules/minimp3/audio_stream_mp3.cpp
-#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp scene/2d/path_2d.cpp
+#: modules/minimp3/resource_importer_mp3.cpp
+#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp
+#: modules/stb_vorbis/resource_importer_ogg_vorbis.cpp scene/2d/path_2d.cpp
#: scene/3d/path.cpp scene/resources/animation.cpp scene/resources/material.cpp
msgid "Loop"
msgstr "Slinga"
@@ -12170,8 +12698,9 @@ msgstr "Raw-Läge"
msgid "Priority"
msgstr "Exportera Projekt"
-#: editor/plugins/tile_set_editor_plugin.cpp main/main.cpp scene/gui/button.cpp
-#: scene/gui/item_list.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp main/main.cpp
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#: scene/gui/button.cpp scene/gui/item_list.cpp
msgid "Icon"
msgstr "Ikon"
@@ -13520,10 +14049,6 @@ msgid ""
msgstr ""
#: editor/project_export.cpp
-msgid "Release"
-msgstr ""
-
-#: editor/project_export.cpp
#, fuzzy
msgid "Exporting All"
msgstr "Exportera"
@@ -15374,6 +15899,7 @@ msgid "Change AudioStreamPlayer3D Emission Angle"
msgstr ""
#: editor/spatial_editor_gizmos.cpp modules/gltf/gltf_node.cpp
+#: platform/osx/export/export.cpp
msgid "Camera"
msgstr ""
@@ -15648,7 +16174,8 @@ msgstr ""
msgid "Use Nvidia Rect Flicker Workaround"
msgstr ""
-#: main/main.cpp platform/uwp/os_uwp.cpp
+#: main/main.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp platform/uwp/os_uwp.cpp
#, fuzzy
msgid "Display"
msgstr "Ersätt Alla"
@@ -15707,19 +16234,6 @@ msgstr ""
msgid "Allowed"
msgstr ""
-#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp scene/2d/camera_2d.cpp
-#: scene/2d/light_2d.cpp scene/2d/navigation_polygon.cpp
-#: scene/2d/ray_cast_2d.cpp scene/2d/sprite.cpp scene/2d/y_sort.cpp
-#: scene/3d/audio_stream_player_3d.cpp scene/3d/baked_lightmap.cpp
-#: scene/3d/interpolated_camera.cpp scene/3d/light.cpp
-#: scene/3d/navigation_mesh_instance.cpp scene/3d/ray_cast.cpp
-#: scene/3d/sprite_3d.cpp scene/gui/graph_edit.cpp
-#: scene/gui/rich_text_label.cpp scene/resources/curve.cpp
-#: scene/resources/environment.cpp
-#, fuzzy
-msgid "Enabled"
-msgstr "Aktivera"
-
#: main/main.cpp
msgid "Intended Usage"
msgstr ""
@@ -15750,13 +16264,14 @@ msgstr ""
msgid "Handheld"
msgstr ""
-#: main/main.cpp
+#: main/main.cpp platform/javascript/export/export.cpp
+#: platform/uwp/export/export.cpp
#, fuzzy
msgid "Orientation"
msgstr "Öppna Senaste"
#: main/main.cpp scene/gui/scroll_container.cpp scene/gui/text_edit.cpp
-#: scene/main/scene_tree.cpp
+#: scene/main/scene_tree.cpp scene/register_scene_types.cpp
#, fuzzy
msgid "Common"
msgstr "Gemenskap"
@@ -15798,7 +16313,7 @@ msgstr ""
#: main/main.cpp
#, fuzzy
-msgid "Frame Delay (msec)"
+msgid "Frame Delay Msec"
msgstr "Bildrutetid (sek)"
#: main/main.cpp
@@ -15922,11 +16437,6 @@ msgstr ""
msgid "Tooltip Position Offset"
msgstr ""
-#: main/main.cpp modules/mono/editor/csharp_project.cpp
-#: modules/mono/mono_gd/gd_mono.cpp
-msgid "Mono"
-msgstr ""
-
#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp
msgid "Debugger Agent"
msgstr ""
@@ -16491,7 +17001,7 @@ msgstr "Färg"
msgid "Intensity"
msgstr ""
-#: modules/gltf/gltf_light.cpp scene/2d/light_2d.cpp
+#: modules/gltf/gltf_light.cpp scene/2d/light_2d.cpp scene/3d/light.cpp
#, fuzzy
msgid "Range"
msgstr "Ändra"
@@ -16634,11 +17144,6 @@ msgstr "Höger"
msgid "Use Named Skin Binds"
msgstr ""
-#: modules/gltf/gltf_state.cpp scene/3d/physics_joint.cpp
-#, fuzzy
-msgid "Nodes"
-msgstr "Nod"
-
#: modules/gltf/gltf_state.cpp
#, fuzzy
msgid "Buffer Views"
@@ -16649,15 +17154,6 @@ msgid "Accessors"
msgstr ""
#: modules/gltf/gltf_state.cpp
-msgid "Meshes"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp
-#, fuzzy
-msgid "Materials"
-msgstr "Materialförändringar:"
-
-#: modules/gltf/gltf_state.cpp
#, fuzzy
msgid "Scene Name"
msgstr "Scen Filsökväg:"
@@ -16674,15 +17170,11 @@ msgstr "Byt namn"
msgid "Textures"
msgstr "Ta Bort Mall"
-#: modules/gltf/gltf_state.cpp
+#: modules/gltf/gltf_state.cpp platform/uwp/export/export.cpp
msgid "Images"
msgstr ""
#: modules/gltf/gltf_state.cpp
-msgid "Skins"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp
msgid "Cameras"
msgstr ""
@@ -16716,11 +17208,15 @@ msgid "Src Image"
msgstr ""
#: modules/gridmap/grid_map.cpp
+msgid "Mesh Library"
+msgstr "MeshLibrary"
+
+#: modules/gridmap/grid_map.cpp
#, fuzzy
msgid "Physics Material"
msgstr "Fysik Bildruta %"
-#: modules/gridmap/grid_map.cpp
+#: modules/gridmap/grid_map.cpp scene/3d/visual_instance.cpp
#, fuzzy
msgid "Use In Baked Light"
msgstr "Höger"
@@ -16752,6 +17248,7 @@ msgstr "Skapa Node"
#: modules/gridmap/grid_map.cpp scene/2d/collision_object_2d.cpp
#: scene/2d/tile_map.cpp scene/3d/collision_object.cpp scene/3d/soft_body.cpp
+#: scene/resources/material.cpp
msgid "Mask"
msgstr ""
@@ -16941,7 +17438,9 @@ msgid "Ultra Quality Ray Count"
msgstr ""
#: modules/minimp3/audio_stream_mp3.cpp
+#: modules/minimp3/resource_importer_mp3.cpp
#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp
+#: modules/stb_vorbis/resource_importer_ogg_vorbis.cpp
#, fuzzy
msgid "Loop Offset"
msgstr "Icon Läge"
@@ -18044,6 +18543,188 @@ msgid "The package must have at least one '.' separator."
msgstr ""
#: platform/android/export/export_plugin.cpp
+msgid "Use Custom Build"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Export Format"
+msgstr "Exportera Projekt"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Keystore"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Debug User"
+msgstr "Felsök"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+msgid "Debug Password"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Release User"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Release Password"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "One Click Deploy"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Clear Previous Install"
+msgstr "Föregående flik"
+
+#: platform/android/export/export_plugin.cpp scene/resources/shader.cpp
+msgid "Code"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Min SDK"
+msgstr "Storlek:"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Target SDK"
+msgstr "Byt Förälder-Node"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Package"
+msgstr "Packar"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Unique Name"
+msgstr "Node Namn:"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Signed"
+msgstr "Signaler"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Classify As Game"
+msgstr "Klassnamn:"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Retain Data On Uninstall"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Exclude From Recents"
+msgstr "Ta bort Nod(er)"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Graphics"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "OpenGL Debug"
+msgstr "Öppna"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "XR Features"
+msgstr "Aktivera funktioner:"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "XR Mode"
+msgstr "Växla Läge"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Hand Tracking"
+msgstr "Packar"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Hand Tracking Frequency"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Passthrough"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Immersive Mode"
+msgstr "Exportera Projekt"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Support Small"
+msgstr "Support"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Support Normal"
+msgstr "Support"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Support Large"
+msgstr "Support"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Support Xlarge"
+msgstr "Support"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "User Data Backup"
+msgstr "Öppna Projekthanteraren"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Allow"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Command Line"
+msgstr "Gemenskap"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Extra Args"
+msgstr "Extra Call Argument:"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "APK Expansion"
+msgstr "Ställ in uttryck"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Salt"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Public Key"
+msgstr "Duplicera Nycklar"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Permissions"
+msgstr "Ställ in uttryck"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Custom Permissions"
+msgstr "Ta bort Polygon och Punkt"
+
+#: platform/android/export/export_plugin.cpp
#, fuzzy
msgid "Select device from the list"
msgstr "Välj enhet från listan"
@@ -18344,6 +19025,177 @@ msgid "The character '%s' is not allowed in Identifier."
msgstr ""
#: platform/iphone/export/export.cpp
+msgid "App Store Team ID"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Provisioning Profile UUID Debug"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Code Sign Identity Debug"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Export Method Debug"
+msgstr "Export läge?"
+
+#: platform/iphone/export/export.cpp
+msgid "Provisioning Profile UUID Release"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Code Sign Identity Release"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Export Method Release"
+msgstr "Export läge?"
+
+#: platform/iphone/export/export.cpp
+msgid "Targeted Device Family"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Info"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Identifier"
+msgstr "Ogiltig identifierare:"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Signature"
+msgstr "Signaler"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Short Version"
+msgstr "Version"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Copyright"
+msgstr "Höger"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Capabilities"
+msgstr "Egenskaper"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Access Wi-Fi"
+msgstr "Klart!"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Push Notifications"
+msgstr "Slumpmässig Rotation:"
+
+#: platform/iphone/export/export.cpp scene/3d/baked_lightmap.cpp
+#, fuzzy
+msgid "User Data"
+msgstr "Öppna Projekthanteraren"
+
+#: platform/iphone/export/export.cpp
+msgid "Accessible From Files App"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Accessible From Itunes Sharing"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Privacy"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Camera Usage Description"
+msgstr "Beskrivning"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Microphone Usage Description"
+msgstr "Egenskapsbeskrivningar"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Photolibrary Usage Description"
+msgstr "Egenskapsbeskrivningar"
+
+#: platform/iphone/export/export.cpp
+msgid "iPhone 120 X 120"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPhone 180 X 180"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 76 X 76"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 152 X 152"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 167 X 167"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "App Store 1024 X 1024"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Spotlight 40 X 40"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Spotlight 80 X 80"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Storyboard"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Use Launch Screen Storyboard"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Image Scale Mode"
+msgstr "Växla Läge"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Custom Image @2x"
+msgstr "Klipp ut Noder"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Custom Image @3x"
+msgstr "Klipp ut Noder"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Use Custom BG Color"
+msgstr "Klipp ut Noder"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Custom BG Color"
+msgstr "Klipp ut Noder"
+
+#: platform/iphone/export/export.cpp
msgid "App Store Team ID not specified - cannot configure the project."
msgstr ""
@@ -18382,6 +19234,80 @@ msgstr "Kunde inte skriva till filen:"
#: platform/javascript/export/export.cpp
#, fuzzy
+msgid "Variant"
+msgstr "Sektioner:"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Export Type"
+msgstr "Exportera"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "VRAM Texture Compression"
+msgstr "Ställ in uttryck"
+
+#: platform/javascript/export/export.cpp
+msgid "For Desktop"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "For Mobile"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Html"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Export Icon"
+msgstr "Expandera alla"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Custom Html Shell"
+msgstr "Klipp ut Noder"
+
+#: platform/javascript/export/export.cpp
+msgid "Head Include"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Canvas Resize Policy"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Focus Canvas On Start"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Experimental Virtual Keyboard"
+msgstr "Filtrera signaler"
+
+#: platform/javascript/export/export.cpp
+msgid "Progressive Web App"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Offline Page"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 144 X 144"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 180 X 180"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 512 X 512"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
msgid "Could not read HTML shell:"
msgstr "Kunde inte skriva till filen:"
@@ -18493,6 +19419,201 @@ msgid "Unknown object type."
msgstr ""
#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "App Category"
+msgstr "Kategori:"
+
+#: platform/osx/export/export.cpp
+msgid "High Res"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Location Usage Description"
+msgstr "Beskrivning"
+
+#: platform/osx/export/export.cpp
+msgid "Address Book Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Calendar Usage Description"
+msgstr "Beskrivning"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Photos Library Usage Description"
+msgstr "Egenskapsbeskrivningar"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Desktop Folder Usage Description"
+msgstr "Metodbeskrivning"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Documents Folder Usage Description"
+msgstr "Metodbeskrivning"
+
+#: platform/osx/export/export.cpp
+msgid "Downloads Folder Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Network Volumes Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Removable Volumes Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#, fuzzy
+msgid "Codesign"
+msgstr "Nod"
+
+#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Identity"
+msgstr "Automatisk Indentering"
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#, fuzzy
+msgid "Timestamp"
+msgstr "Tid"
+
+#: platform/osx/export/export.cpp
+msgid "Hardened Runtime"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Replace Existing Signature"
+msgstr "Ersätt Alla"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Entitlements"
+msgstr "Innehåll:"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Custom File"
+msgstr "Klipp ut Noder"
+
+#: platform/osx/export/export.cpp
+msgid "Allow JIT Code Execution"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Allow Unsigned Executable Memory"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Allow Dyld Environment Variables"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Disable Library Validation"
+msgstr "Avaktiverad"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Audio Input"
+msgstr "Byt namn på Ljud-Buss"
+
+#: platform/osx/export/export.cpp
+msgid "Address Book"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Calendars"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Photos Library"
+msgstr "Exportera Bibliotek"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Apple Events"
+msgstr "Återställ Zoom"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Debugging"
+msgstr "Felsök"
+
+#: platform/osx/export/export.cpp
+msgid "App Sandbox"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Network Server"
+msgstr "Nätverksprofilerare"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Network Client"
+msgstr "Nätverksprofilerare"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Device Usb"
+msgstr "Enhet"
+
+#: platform/osx/export/export.cpp
+msgid "Device Bluetooth"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Files Downloads"
+msgstr "Ladda ner"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Files Pictures"
+msgstr "Filtrera tiles"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Files Music"
+msgstr "Fil"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Files Movies"
+msgstr "Filtrera tiles"
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#, fuzzy
+msgid "Custom Options"
+msgstr "Buss-alternativ"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Notarization"
+msgstr "Lokalisering"
+
+#: platform/osx/export/export.cpp
+msgid "Apple ID Name"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Apple ID Password"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Apple Team ID"
+msgstr ""
+
+#: platform/osx/export/export.cpp
msgid ""
"Note: The notarization process generally takes less than an hour. When the "
"process is completed, you'll receive an email."
@@ -18686,6 +19807,133 @@ msgid "Force Builtin Codesign"
msgstr ""
#: platform/uwp/export/export.cpp
+msgid "Architecture"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Display Name"
+msgstr "Ersätt Alla"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Short Name"
+msgstr "Skript Namn:"
+
+#: platform/uwp/export/export.cpp
+msgid "Publisher"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Publisher Display Name"
+msgstr "Ogiltigt namn."
+
+#: platform/uwp/export/export.cpp
+msgid "Product Guid"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Publisher Guid"
+msgstr "Rensa"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Signing"
+msgstr "Signaler"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Certificate"
+msgstr "Partiklar"
+
+#: platform/uwp/export/export.cpp
+msgid "Algorithm"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Major"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Minor"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Build"
+msgstr "Växla Läge"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Revision"
+msgstr "Ställ in uttryck"
+
+#: platform/uwp/export/export.cpp
+msgid "Landscape"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Portrait"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Landscape Flipped"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Portrait Flipped"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Store Logo"
+msgstr "Växla Läge"
+
+#: platform/uwp/export/export.cpp
+msgid "Square 44 X 44 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 71 X 71 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 150 X 150 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 310 X 310 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Wide 310 X 150 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Splash Screen"
+msgstr "Ta Skärmdump"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Tiles"
+msgstr "Fil"
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Square 150 X 150"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Wide 310 X 150"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Square 310 X 310"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
#, fuzzy
msgid "Invalid package short name."
msgstr "Ogiltigt namn."
@@ -18755,11 +20003,48 @@ msgid "Debug Certificate"
msgstr ""
#: platform/uwp/export/export.cpp
-msgid "Debug Password"
+msgid "Debug Algorithm"
msgstr ""
-#: platform/uwp/export/export.cpp
-msgid "Debug Algorithm"
+#: platform/windows/export/export.cpp
+msgid "Identity Type"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Timestamp Server URL"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Digest Algorithm"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "File Version"
+msgstr "Version"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Product Version"
+msgstr "Ogiltig produkt GUID."
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Company Name"
+msgstr "Node Namn:"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Product Name"
+msgstr "Projektnamn:"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "File Description"
+msgstr "Beskrivning"
+
+#: platform/windows/export/export.cpp
+msgid "Trademarks"
msgstr ""
#: platform/windows/export/export.cpp
@@ -18835,12 +20120,14 @@ msgstr "Spela"
msgid "Centered"
msgstr "Skapa Node"
-#: scene/2d/animated_sprite.cpp scene/2d/camera_2d.cpp scene/2d/light_2d.cpp
+#: scene/2d/animated_sprite.cpp scene/2d/camera_2d.cpp
+#: scene/2d/cpu_particles_2d.cpp scene/2d/light_2d.cpp
#: scene/2d/parallax_background.cpp scene/2d/parallax_layer.cpp
#: scene/2d/path_2d.cpp scene/2d/polygon_2d.cpp scene/2d/sprite.cpp
-#: scene/3d/path.cpp scene/3d/physics_body.cpp scene/3d/sprite_3d.cpp
-#: scene/gui/graph_node.cpp scene/gui/rich_text_effect.cpp
-#: scene/main/canvas_layer.cpp scene/resources/material.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/path.cpp scene/3d/physics_body.cpp
+#: scene/3d/sprite_3d.cpp scene/gui/graph_node.cpp
+#: scene/gui/rich_text_effect.cpp scene/main/canvas_layer.cpp
+#: scene/resources/material.cpp scene/resources/particles_material.cpp
#: scene/resources/style_box.cpp
msgid "Offset"
msgstr ""
@@ -18912,11 +20199,6 @@ msgstr "Lägg till Ljud-Buss"
msgid "Override"
msgstr "Skriv över"
-#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
-#: scene/audio/audio_stream_player.cpp scene/gui/video_player.cpp
-msgid "Stream"
-msgstr ""
-
#: scene/2d/audio_stream_player_2d.cpp scene/audio/audio_stream_player.cpp
#: scene/gui/video_player.cpp servers/audio/effects/audio_effect_amplify.cpp
#, fuzzy
@@ -18943,13 +20225,13 @@ msgid "Stream Paused"
msgstr ""
#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
-#: scene/3d/reflection_probe.cpp scene/3d/visual_instance.cpp
-#: scene/resources/material.cpp
+#: scene/3d/light.cpp scene/3d/reflection_probe.cpp
+#: scene/3d/visual_instance.cpp scene/resources/material.cpp
#, fuzzy
msgid "Max Distance"
msgstr "Instans"
-#: scene/2d/audio_stream_player_2d.cpp
+#: scene/2d/audio_stream_player_2d.cpp scene/3d/light.cpp
#, fuzzy
msgid "Attenuation"
msgstr "Animation"
@@ -19005,6 +20287,24 @@ msgstr "Exportera Projekt"
msgid "Limit"
msgstr ""
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/style_box.cpp
+#, fuzzy
+msgid "Left"
+msgstr "Vänster"
+
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/style_box.cpp
+#, fuzzy
+msgid "Right"
+msgstr "Höger"
+
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/dynamic_font.cpp scene/resources/style_box.cpp
+#, fuzzy
+msgid "Bottom"
+msgstr "Vy underifrån"
+
#: scene/2d/camera_2d.cpp
msgid "Smoothed"
msgstr ""
@@ -19219,12 +20519,6 @@ msgstr ""
msgid "Emitting"
msgstr "Inställningar:"
-#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp scene/3d/area.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
-#: scene/resources/environment.cpp
-msgid "Amount"
-msgstr ""
-
#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp
#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
msgid "Lifetime"
@@ -19289,18 +20583,13 @@ msgstr ""
#: scene/2d/mesh_instance_2d.cpp scene/2d/multimesh_instance_2d.cpp
#: scene/2d/particles_2d.cpp scene/2d/polygon_2d.cpp scene/2d/sprite.cpp
#: scene/3d/sprite_3d.cpp scene/gui/nine_patch_rect.cpp
-#: scene/gui/texture_rect.cpp scene/resources/sky.cpp
-#: scene/resources/style_box.cpp scene/resources/visual_shader_nodes.cpp
+#: scene/gui/texture_rect.cpp scene/resources/material.cpp
+#: scene/resources/sky.cpp scene/resources/style_box.cpp
+#: scene/resources/visual_shader_nodes.cpp
#, fuzzy
msgid "Texture"
msgstr "Ta Bort Mall"
-#: scene/2d/cpu_particles_2d.cpp scene/2d/mesh_instance_2d.cpp
-#: scene/2d/multimesh_instance_2d.cpp scene/2d/particles_2d.cpp
-#: scene/2d/sprite.cpp scene/resources/style_box.cpp
-msgid "Normal Map"
-msgstr ""
-
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
#, fuzzy
@@ -19323,10 +20612,10 @@ msgid "Normals"
msgstr "Slumpmässig Skala:"
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/3d/sprite_3d.cpp scene/resources/material.cpp
-#: scene/resources/particles_material.cpp scene/resources/texture.cpp
-msgid "Flags"
-msgstr ""
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Align Y"
+msgstr "Tilldela"
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
@@ -19346,6 +20635,11 @@ msgid "Initial Velocity"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Velocity Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp servers/physics_2d_server.cpp
#: servers/physics_server.cpp
msgid "Angular Velocity"
@@ -19353,6 +20647,12 @@ msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Velocity Curve"
+msgstr "Redigera Nodkurva"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
msgid "Orbit Velocity"
msgstr ""
@@ -19364,6 +20664,23 @@ msgstr "Linjär"
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Accel"
+msgstr "Klart!"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Accel Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Accel Curve"
+msgstr "Redigera Nodkurva"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
msgid "Radial Accel"
msgstr ""
@@ -19373,19 +20690,55 @@ msgid "Tangential Accel"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/2d/joints_2d.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/vehicle_body.cpp
-#: scene/resources/particles_material.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/physics_joint.cpp
+#: scene/3d/vehicle_body.cpp scene/resources/particles_material.cpp
#: servers/audio/effects/audio_effect_reverb.cpp
msgid "Damping"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+msgid "Damping Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Damping Curve"
+msgstr "Redigera Nodkurva"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp scene/3d/light.cpp
+#: scene/resources/particles_material.cpp
msgid "Angle"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+msgid "Angle Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Angle Curve"
+msgstr "Redigera Nodkurva"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#, fuzzy
+msgid "Scale Amount"
+msgstr "Instans"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+msgid "Scale Amount Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#, fuzzy
+msgid "Scale Amount Curve"
+msgstr "Skala Från Muspekare"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
#, fuzzy
msgid "Color Ramp"
msgstr "Färg"
@@ -19401,6 +20754,47 @@ msgstr ""
msgid "Hue Variation"
msgstr "Sektioner:"
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Variation"
+msgstr "Sektioner:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Variation Random"
+msgstr "Sektioner:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Variation Curve"
+msgstr "Sektioner:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Speed Random"
+msgstr "Skala"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Speed Curve"
+msgstr "Redigera Nodkurva"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Offset Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Offset Curve"
+msgstr "Redigera Nodkurva"
+
#: scene/2d/joints_2d.cpp
msgid "Node A and Node B must be PhysicsBody2Ds"
msgstr ""
@@ -19432,6 +20826,7 @@ msgid "Node B"
msgstr "Nod"
#: scene/2d/joints_2d.cpp scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp
+#: scene/3d/light.cpp scene/3d/physics_joint.cpp
#: scene/resources/environment.cpp
msgid "Bias"
msgstr ""
@@ -19441,7 +20836,7 @@ msgstr ""
msgid "Disable Collision"
msgstr "Avaktiverad"
-#: scene/2d/joints_2d.cpp
+#: scene/2d/joints_2d.cpp scene/3d/physics_joint.cpp
msgid "Softness"
msgstr ""
@@ -19458,7 +20853,7 @@ msgstr ""
msgid "Rest Length"
msgstr ""
-#: scene/2d/joints_2d.cpp scene/3d/vehicle_body.cpp
+#: scene/2d/joints_2d.cpp scene/3d/physics_joint.cpp scene/3d/vehicle_body.cpp
msgid "Stiffness"
msgstr ""
@@ -19478,7 +20873,7 @@ msgid "Texture Scale"
msgstr ""
#: scene/2d/light_2d.cpp scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp
-#: scene/resources/environment.cpp scene/resources/sky.cpp
+#: scene/3d/light.cpp scene/resources/environment.cpp scene/resources/sky.cpp
msgid "Energy"
msgstr ""
@@ -19518,12 +20913,6 @@ msgstr "Vy bakifrån"
msgid "Gradient Length"
msgstr "Standard"
-#: scene/2d/light_2d.cpp scene/gui/control.cpp
-#: scene/resources/navigation_mesh.cpp
-#, fuzzy
-msgid "Filter"
-msgstr "Filter:"
-
#: scene/2d/light_2d.cpp
#, fuzzy
msgid "Filter Smooth"
@@ -19934,10 +21323,6 @@ msgid "Applied Forces"
msgstr ""
#: scene/2d/physics_body_2d.cpp
-msgid "Force"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp
msgid "Torque"
msgstr ""
@@ -19951,7 +21336,7 @@ msgid "Sync To Physics"
msgstr "Fysik Bildruta %"
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-msgid "Moving platform"
+msgid "Moving Platform"
msgstr ""
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
@@ -19960,7 +21345,7 @@ msgstr ""
#: scene/2d/physics_body_2d.cpp scene/2d/touch_screen_button.cpp
#: scene/3d/physics_body.cpp scene/gui/texture_button.cpp
-#: scene/resources/line_shape_2d.cpp
+#: scene/resources/line_shape_2d.cpp scene/resources/material.cpp
msgid "Normal"
msgstr ""
@@ -20196,6 +21581,34 @@ msgid ""
"as parent."
msgstr ""
+#: scene/2d/visibility_notifier_2d.cpp scene/3d/visibility_notifier.cpp
+#, fuzzy
+msgid "Pause Animations"
+msgstr "Klistra in Animation"
+
+#: scene/2d/visibility_notifier_2d.cpp scene/3d/visibility_notifier.cpp
+msgid "Freeze Bodies"
+msgstr ""
+
+#: scene/2d/visibility_notifier_2d.cpp
+#, fuzzy
+msgid "Pause Particles"
+msgstr "Partiklar"
+
+#: scene/2d/visibility_notifier_2d.cpp
+#, fuzzy
+msgid "Pause Animated Sprites"
+msgstr "Klistra in Animation"
+
+#: scene/2d/visibility_notifier_2d.cpp
+#, fuzzy
+msgid "Process Parent"
+msgstr "Redigera Filter"
+
+#: scene/2d/visibility_notifier_2d.cpp
+msgid "Physics Process Parent"
+msgstr ""
+
#: scene/3d/area.cpp
msgid "Reverb Bus"
msgstr ""
@@ -20291,6 +21704,7 @@ msgid "Attenuation Filter"
msgstr ""
#: scene/3d/audio_stream_player_3d.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
#: servers/audio/effects/audio_effect_filter.cpp
msgid "Cutoff Hz"
msgstr ""
@@ -20334,11 +21748,6 @@ msgid "Octree"
msgstr ""
#: scene/3d/baked_lightmap.cpp
-#, fuzzy
-msgid "User Data"
-msgstr "Öppna Projekthanteraren"
-
-#: scene/3d/baked_lightmap.cpp
msgid "Finding meshes and lights"
msgstr ""
@@ -20598,6 +22007,16 @@ msgid "Ring Axis"
msgstr "Varningar"
#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Rotate Y"
+msgstr "Ctrl: Rotera"
+
+#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Disable Z"
+msgstr "Avaktiverad"
+
+#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
msgid "Flatness"
msgstr ""
@@ -20637,16 +22056,11 @@ msgstr "Bibliotek"
msgid "Dynamic Range"
msgstr "Bibliotek"
-#: scene/3d/gi_probe.cpp
+#: scene/3d/gi_probe.cpp scene/3d/light.cpp
msgid "Normal Bias"
msgstr ""
#: scene/3d/gi_probe.cpp
-#, fuzzy
-msgid "Compress"
-msgstr "Komponenter"
-
-#: scene/3d/gi_probe.cpp
msgid "Plotting Meshes"
msgstr ""
@@ -20672,17 +22086,31 @@ msgid "Subdiv"
msgstr ""
#: scene/3d/light.cpp
+msgid "Indirect Energy"
+msgstr ""
+
+#: scene/3d/light.cpp
#, fuzzy
msgid "Negative"
msgstr "GDNative"
#: scene/3d/light.cpp
#, fuzzy
+msgid "Specular"
+msgstr "Växla Läge"
+
+#: scene/3d/light.cpp
+#, fuzzy
msgid "Bake Mode"
msgstr "Bitmaskläge"
#: scene/3d/light.cpp
#, fuzzy
+msgid "Contact"
+msgstr "Välj Färg"
+
+#: scene/3d/light.cpp
+#, fuzzy
msgid "Reverse Cull Face"
msgstr "Återställ Buss-Volym"
@@ -20692,11 +22120,31 @@ msgid "Directional Shadow"
msgstr "Riktningar"
#: scene/3d/light.cpp
+#, fuzzy
+msgid "Split 1"
+msgstr "Redigera Nodkurva"
+
+#: scene/3d/light.cpp
+#, fuzzy
+msgid "Split 2"
+msgstr "Redigera Nodkurva"
+
+#: scene/3d/light.cpp
+#, fuzzy
+msgid "Split 3"
+msgstr "Redigera Nodkurva"
+
+#: scene/3d/light.cpp
msgid "Blend Splits"
msgstr ""
#: scene/3d/light.cpp
#, fuzzy
+msgid "Bias Split Scale"
+msgstr "Nytt Skript"
+
+#: scene/3d/light.cpp
+#, fuzzy
msgid "Depth Range"
msgstr "Skala"
@@ -20722,6 +22170,11 @@ msgstr ""
msgid "Spot"
msgstr ""
+#: scene/3d/light.cpp
+#, fuzzy
+msgid "Angle Attenuation"
+msgstr "Animation"
+
#: scene/3d/mesh_instance.cpp
msgid "Software Skinning"
msgstr ""
@@ -20846,6 +22299,63 @@ msgid "Axis Lock"
msgstr "Axel"
#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Linear X"
+msgstr "Linjär"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Linear Y"
+msgstr "Linjär"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Linear Z"
+msgstr "Linjär"
+
+#: scene/3d/physics_body.cpp
+msgid "Angular X"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Angular Y"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Angular Z"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Motion X"
+msgstr "Åtgärd"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Motion Y"
+msgstr "Åtgärd"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Motion Z"
+msgstr "Åtgärd"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Move Lock X"
+msgstr "Flytta Nod(er)"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Move Lock Y"
+msgstr "Flytta Nod(er)"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Move Lock Z"
+msgstr "Flytta Nod(er)"
+
+#: scene/3d/physics_body.cpp
msgid "Body Offset"
msgstr ""
@@ -20879,6 +22389,15 @@ msgid "Exclude Nodes"
msgstr "Ta bort Nod(er)"
#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Params"
+msgstr "Parameter ändrad:"
+
+#: scene/3d/physics_joint.cpp
+msgid "Impulse Clamp"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit"
msgstr ""
@@ -20892,6 +22411,55 @@ msgstr "Versaler"
msgid "Lower"
msgstr "Gemener"
+#: scene/3d/physics_joint.cpp scene/3d/vehicle_body.cpp
+#, fuzzy
+msgid "Relaxation"
+msgstr "Sektioner:"
+
+#: scene/3d/physics_joint.cpp
+msgid "Motor"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Target Velocity"
+msgstr "Linjär"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Max Impulse"
+msgstr "Värde"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit"
+msgstr "Linjär"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Upper Distance"
+msgstr "Instans"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Lower Distance"
+msgstr "Instans"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Restitution"
+msgstr "Beskrivning"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motion"
+msgstr "Linjär"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Ortho"
+msgstr "Linjär"
+
#: scene/3d/physics_joint.cpp
#, fuzzy
msgid "Upper Angle"
@@ -20904,6 +22472,16 @@ msgstr "Gemener"
#: scene/3d/physics_joint.cpp
#, fuzzy
+msgid "Angular Motion"
+msgstr "Animation"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Angular Ortho"
+msgstr "Max. Vinkel-fel:"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
msgid "Swing Span"
msgstr "Sparar Scen"
@@ -20912,17 +22490,98 @@ msgid "Twist Span"
msgstr ""
#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit X"
+msgstr "Linjär"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motor X"
+msgstr "Linjär"
+
+#: scene/3d/physics_joint.cpp
+msgid "Force Limit"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Spring X"
+msgstr "Linjär"
+
+#: scene/3d/physics_joint.cpp
+msgid "Equilibrium Point"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit X"
msgstr ""
#: scene/3d/physics_joint.cpp
+msgid "Erp"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Motor X"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Spring X"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit Y"
+msgstr "Linjär"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motor Y"
+msgstr "Linjär"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Spring Y"
+msgstr "Linjär"
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit Y"
msgstr ""
#: scene/3d/physics_joint.cpp
+msgid "Angular Motor Y"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Spring Y"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit Z"
+msgstr "Linjär"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motor Z"
+msgstr "Linjär"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Spring Z"
+msgstr "Linjär"
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit Z"
msgstr ""
+#: scene/3d/physics_joint.cpp
+msgid "Angular Motor Z"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Spring Z"
+msgstr ""
+
#: scene/3d/portal.cpp
msgid "The RoomManager should not be a child or grandchild of a Portal."
msgstr ""
@@ -21039,7 +22698,7 @@ msgstr ""
msgid "Use Default Simplify"
msgstr ""
-#: scene/3d/room.cpp
+#: scene/3d/room.cpp scene/3d/room_manager.cpp
msgid "Room Simplify"
msgstr ""
@@ -21078,6 +22737,13 @@ msgstr ""
msgid "Main"
msgstr ""
+#: scene/3d/room_manager.cpp scene/animation/animation_player.cpp
+#: scene/animation/animation_tree.cpp scene/animation/animation_tree_player.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+#, fuzzy
+msgid "Active"
+msgstr "Åtgärd"
+
#: scene/3d/room_manager.cpp
msgid "Roomlist"
msgstr ""
@@ -21102,6 +22768,52 @@ msgid "Gameplay"
msgstr ""
#: scene/3d/room_manager.cpp
+msgid "Gameplay Monitor"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "Use Secondary PVS"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Merge Meshes"
+msgstr "Filtrera noder"
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Show Margins"
+msgstr "Visa i Filsystemet"
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Debug Sprawl"
+msgstr "Felsök"
+
+#: scene/3d/room_manager.cpp
+msgid "Overlap Warning Threshold"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Preview Camera"
+msgstr "Förhandsgranska"
+
+#: scene/3d/room_manager.cpp
+msgid "Portal Depth Limit"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Default Portal Margin"
+msgstr "Standard"
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Roaming Expansion Margin"
+msgstr "Expandera alla"
+
+#: scene/3d/room_manager.cpp
msgid ""
"RoomList path is invalid.\n"
"Please check the RoomList branch has been assigned in the RoomManager."
@@ -21224,6 +22936,20 @@ msgstr ""
msgid "Billboard"
msgstr ""
+#: scene/3d/sprite_3d.cpp scene/resources/material.cpp
+#, fuzzy
+msgid "Transparent"
+msgstr "Översättningar"
+
+#: scene/3d/sprite_3d.cpp
+#, fuzzy
+msgid "Shaded"
+msgstr "Shader Ändringar:"
+
+#: scene/3d/sprite_3d.cpp
+msgid "Double Sided"
+msgstr ""
+
#: scene/3d/sprite_3d.cpp
msgid "Alpha Cut"
msgstr ""
@@ -21293,11 +23019,6 @@ msgstr "Ställ in uttryck"
msgid "Max Force"
msgstr "Fel"
-#: scene/3d/vehicle_body.cpp
-#, fuzzy
-msgid "Relaxation"
-msgstr "Sektioner:"
-
#: scene/3d/visibility_notifier.cpp
msgid "AABB"
msgstr ""
@@ -21433,7 +23154,7 @@ msgstr ""
#: scene/animation/animation_blend_tree.cpp
#, fuzzy
-msgid "autorestart_"
+msgid "Auto Restart"
msgstr "Starta om nu"
#: scene/animation/animation_blend_tree.cpp
@@ -21517,13 +23238,6 @@ msgstr "Beskrivning:"
msgid "Default Blend Time"
msgstr "Standard"
-#: scene/animation/animation_player.cpp scene/animation/animation_tree.cpp
-#: scene/animation/animation_tree_player.cpp
-#: servers/audio/effects/audio_effect_delay.cpp
-#, fuzzy
-msgid "Active"
-msgstr "Åtgärd"
-
#: scene/animation/animation_player.cpp
msgid "Method Call Mode"
msgstr ""
@@ -21647,10 +23361,6 @@ msgstr "Byt Förälder-Node"
msgid "Max Iterations"
msgstr "Byt namn på funktion"
-#: scene/animation/tween.cpp scene/resources/texture.cpp
-msgid "Repeat"
-msgstr ""
-
#: scene/animation/tween.cpp
msgid "Playback Process Mode"
msgstr ""
@@ -21680,20 +23390,6 @@ msgstr "Växla Läge"
msgid "Alignment"
msgstr ""
-#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
-#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
-#: scene/resources/style_box.cpp
-#, fuzzy
-msgid "Horizontal"
-msgstr "Skapa Node"
-
-#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
-#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
-#: scene/resources/style_box.cpp
-#, fuzzy
-msgid "Vertical"
-msgstr "Partiklar"
-
#: scene/gui/base_button.cpp
msgid "Shortcut In Tooltip"
msgstr ""
@@ -21791,10 +23487,6 @@ msgid "HSV"
msgstr ""
#: scene/gui/color_picker.cpp
-msgid "Raw"
-msgstr ""
-
-#: scene/gui/color_picker.cpp
msgid "Switch between hexadecimal and code values."
msgstr ""
@@ -21853,6 +23545,31 @@ msgid "Focus"
msgstr "Fokusera på Sökväg"
#: scene/gui/control.cpp
+msgid "Neighbour Left"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Neighbour Top"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Neighbour Right"
+msgstr ""
+
+#: scene/gui/control.cpp
+#, fuzzy
+msgid "Neighbour Bottom"
+msgstr "Botten"
+
+#: scene/gui/control.cpp
+msgid "Next"
+msgstr "Nästa"
+
+#: scene/gui/control.cpp
+msgid "Previous"
+msgstr "Föregående"
+
+#: scene/gui/control.cpp
msgid "Mouse"
msgstr ""
@@ -21889,7 +23606,7 @@ msgid "Dialog"
msgstr ""
#: scene/gui/dialogs.cpp
-msgid "Hide On Ok"
+msgid "Hide On OK"
msgstr ""
#: scene/gui/dialogs.cpp scene/gui/label.cpp
@@ -21986,7 +23703,7 @@ msgid "Timers"
msgstr "Tid"
#: scene/gui/item_list.cpp scene/gui/popup_menu.cpp scene/gui/tree.cpp
-msgid "Incremental Search Max Interval (msec)"
+msgid "Incremental Search Max Interval Msec"
msgstr ""
#: scene/gui/item_list.cpp scene/gui/tree.cpp
@@ -22549,6 +24266,26 @@ msgstr "Skapa Node"
msgid "Nine Patch Stretch"
msgstr "Interpolationsläge"
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Left"
+msgstr "Växla Läge"
+
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Top"
+msgstr "Växla Läge"
+
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Right"
+msgstr "Växla Läge"
+
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Bottom"
+msgstr "Växla Läge"
+
#: scene/gui/tree.cpp
msgid "Custom Minimum Height"
msgstr ""
@@ -22586,8 +24323,9 @@ msgid "Paused"
msgstr ""
#: scene/gui/video_player.cpp
-msgid "Buffering (msec)"
-msgstr ""
+#, fuzzy
+msgid "Buffering Msec"
+msgstr "Vy bakifrån"
#: scene/gui/video_player.cpp
#, fuzzy
@@ -22928,6 +24666,22 @@ msgid "Shadow Atlas"
msgstr ""
#: scene/main/viewport.cpp
+msgid "Quad 0"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 1"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 2"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 3"
+msgstr ""
+
+#: scene/main/viewport.cpp
#, fuzzy
msgid "Canvas Transform"
msgstr "Transformera"
@@ -22942,6 +24696,11 @@ msgid "Tooltip Delay (sec)"
msgstr ""
#: scene/register_scene_types.cpp
+#, fuzzy
+msgid "Swap OK Cancel"
+msgstr "Avbryt"
+
+#: scene/register_scene_types.cpp
msgid "Use hiDPI"
msgstr ""
@@ -22956,21 +24715,6 @@ msgid "Custom Font"
msgstr "Klipp ut Noder"
#: scene/resources/audio_stream_sample.cpp
-#, fuzzy
-msgid "Loop Mode"
-msgstr "Icon Läge"
-
-#: scene/resources/audio_stream_sample.cpp
-#, fuzzy
-msgid "Loop Begin"
-msgstr "Icon Läge"
-
-#: scene/resources/audio_stream_sample.cpp
-#, fuzzy
-msgid "Loop End"
-msgstr "Icon Läge"
-
-#: scene/resources/audio_stream_sample.cpp
#: servers/audio/effects/audio_stream_generator.cpp servers/audio_server.cpp
#, fuzzy
msgid "Mix Rate"
@@ -23028,6 +24772,16 @@ msgstr "Beskrivning:"
#: scene/resources/dynamic_font.cpp
#, fuzzy
+msgid "Char"
+msgstr "Giltiga tecken:"
+
+#: scene/resources/dynamic_font.cpp scene/resources/world.cpp
+#: scene/resources/world_2d.cpp
+msgid "Space"
+msgstr ""
+
+#: scene/resources/dynamic_font.cpp
+#, fuzzy
msgid "Font"
msgstr "Font"
@@ -23249,6 +25003,43 @@ msgid "Glow"
msgstr ""
#: scene/resources/environment.cpp
+#, fuzzy
+msgid "Levels"
+msgstr "Utvecklare"
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "1"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "2"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "3"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "4"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "5"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "6"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "7"
+msgstr ""
+
+#: scene/resources/environment.cpp
msgid "Bloom"
msgstr ""
@@ -23338,9 +25129,66 @@ msgid "Next Pass"
msgstr "Nästa flik"
#: scene/resources/material.cpp
+msgid "Use Shadow To Opacity"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Unshaded"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Vertex Lighting"
+msgstr "Direkt ljus"
+
+#: scene/resources/material.cpp
+msgid "No Depth Test"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Use Point Size"
+msgstr "Vy framifrån"
+
+#: scene/resources/material.cpp
+msgid "World Triplanar"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Fixed Size"
+msgstr "Vy framifrån"
+
+#: scene/resources/material.cpp
+msgid "Albedo Tex Force sRGB"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Do Not Receive Shadows"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Disable Ambient Light"
+msgstr "Avaktiverad"
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Ensure Correct Normals"
+msgstr "Transformera uniform."
+
+#: scene/resources/material.cpp
msgid "Vertex Color"
msgstr ""
+#: scene/resources/material.cpp
+msgid "Use As Albedo"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Is sRGB"
+msgstr ""
+
#: scene/resources/material.cpp servers/visual_server.cpp
#, fuzzy
msgid "Parameters"
@@ -23377,6 +25225,11 @@ msgid "Billboard Mode"
msgstr "Växla Läge"
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Billboard Keep Scale"
+msgstr "Växla Läge"
+
+#: scene/resources/material.cpp
msgid "Grow"
msgstr ""
@@ -23386,6 +25239,10 @@ msgid "Grow Amount"
msgstr "Skapa Node"
#: scene/resources/material.cpp
+msgid "Use Alpha Scissor"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Alpha Scissor Threshold"
msgstr ""
@@ -23417,10 +25274,20 @@ msgid "Metallic Specular"
msgstr ""
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Metallic Texture"
+msgstr "Ta Bort Mall"
+
+#: scene/resources/material.cpp
msgid "Metallic Texture Channel"
msgstr ""
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Roughness Texture"
+msgstr "Ta Bort Mall"
+
+#: scene/resources/material.cpp
msgid "Roughness Texture Channel"
msgstr ""
@@ -23438,6 +25305,16 @@ msgid "Emission Operator"
msgstr ""
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Emission On UV2"
+msgstr "Ställ in uttryck"
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Emission Texture"
+msgstr "Ta Bort Mall"
+
+#: scene/resources/material.cpp
msgid "NormalMap"
msgstr ""
@@ -23451,6 +25328,11 @@ msgstr ""
#: scene/resources/material.cpp
#, fuzzy
+msgid "Rim Texture"
+msgstr "Ta Bort Mall"
+
+#: scene/resources/material.cpp
+#, fuzzy
msgid "Clearcoat"
msgstr "Rensa"
@@ -23460,15 +25342,28 @@ msgid "Clearcoat Gloss"
msgstr "Rensa"
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Clearcoat Texture"
+msgstr "Redigera Tema"
+
+#: scene/resources/material.cpp
msgid "Anisotropy"
msgstr ""
#: scene/resources/material.cpp
+msgid "Anisotropy Flowmap"
+msgstr ""
+
+#: scene/resources/material.cpp
#, fuzzy
msgid "Ambient Occlusion"
msgstr "Redigera Polygon"
#: scene/resources/material.cpp
+msgid "On UV2"
+msgstr ""
+
+#: scene/resources/material.cpp
#, fuzzy
msgid "Texture Channel"
msgstr "Växla Läge"
@@ -23506,6 +25401,11 @@ msgstr "Övergång: "
#: scene/resources/material.cpp
#, fuzzy
+msgid "Transmission Texture"
+msgstr "Övergång: "
+
+#: scene/resources/material.cpp
+#, fuzzy
msgid "Refraction"
msgstr "Sektioner:"
@@ -23523,6 +25423,10 @@ msgid "UV1"
msgstr ""
#: scene/resources/material.cpp
+msgid "Triplanar"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Triplanar Sharpness"
msgstr ""
@@ -23727,6 +25631,16 @@ msgstr "Redigera Tema"
msgid "Point Count"
msgstr "Lägg till Ingångsport"
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Scale Random"
+msgstr "Skalnings förhållande:"
+
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Scale Curve"
+msgstr "Redigera Nodkurva"
+
#: scene/resources/physics_material.cpp
msgid "Rough"
msgstr ""
@@ -23788,10 +25702,6 @@ msgid "A"
msgstr ""
#: scene/resources/shader.cpp
-msgid "Code"
-msgstr ""
-
-#: scene/resources/shader.cpp
msgid "Custom Defines"
msgstr ""
@@ -23884,15 +25794,6 @@ msgstr ""
#: scene/resources/texture.cpp
#, fuzzy
-msgid "Storage"
-msgstr "Lagrar Fil:"
-
-#: scene/resources/texture.cpp
-msgid "Lossy Quality"
-msgstr ""
-
-#: scene/resources/texture.cpp
-#, fuzzy
msgid "Load Path"
msgstr "Ladda Resurs"
@@ -24021,10 +25922,6 @@ msgstr "Ogiltig jämförelsefunktion för den typen."
msgid "Fallback Environment"
msgstr ""
-#: scene/resources/world.cpp scene/resources/world_2d.cpp
-msgid "Space"
-msgstr ""
-
#: scene/resources/world.cpp
#, fuzzy
msgid "Scenario"
@@ -24103,10 +26000,37 @@ msgstr ""
msgid "Wet"
msgstr ""
-#: servers/audio/effects/audio_effect_compressor.cpp
-msgid "Threshold"
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "Voice"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+msgid "Delay (ms)"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_phaser.cpp
+msgid "Rate Hz"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#, fuzzy
+msgid "Depth (ms)"
+msgstr "Skala"
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+msgid "Level dB"
msgstr ""
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+#: servers/audio/effects/audio_effect_panner.cpp
+#, fuzzy
+msgid "Pan"
+msgstr "Packar"
+
#: servers/audio/effects/audio_effect_compressor.cpp
#: servers/audio/effects/audio_effect_filter.cpp
msgid "Gain"
@@ -24129,20 +26053,6 @@ msgid "Tap 1"
msgstr ""
#: servers/audio/effects/audio_effect_delay.cpp
-msgid "Delay (ms)"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_delay.cpp
-msgid "Level dB"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_delay.cpp
-#: servers/audio/effects/audio_effect_panner.cpp
-#, fuzzy
-msgid "Pan"
-msgstr "Packar"
-
-#: servers/audio/effects/audio_effect_delay.cpp
msgid "Tap 2"
msgstr ""
@@ -24203,10 +26113,6 @@ msgstr ""
msgid "Range Max Hz"
msgstr ""
-#: servers/audio/effects/audio_effect_phaser.cpp
-msgid "Rate Hz"
-msgstr ""
-
#: servers/audio/effects/audio_effect_pitch_shift.cpp
msgid "Oversampling"
msgstr ""
@@ -24222,7 +26128,7 @@ msgid "Predelay"
msgstr ""
#: servers/audio/effects/audio_effect_reverb.cpp
-msgid "(msec)"
+msgid "Msec"
msgstr ""
#: servers/audio/effects/audio_effect_reverb.cpp
diff --git a/editor/translations/ta.po b/editor/translations/ta.po
index 794f221af7..ade38ffefa 100644
--- a/editor/translations/ta.po
+++ b/editor/translations/ta.po
@@ -22,7 +22,7 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 4.2.1-dev\n"
-#: core/bind/core_bind.cpp
+#: core/bind/core_bind.cpp main/main.cpp
msgid "Tablet Driver"
msgstr ""
@@ -115,8 +115,8 @@ msgstr "மாறà¯à®±à®™à¯à®•ளை இதறà¯à®•௠அமை:"
#: core/bind/core_bind.cpp editor/editor_settings.cpp main/main.cpp
#: modules/gdscript/gdscript_editor.cpp modules/gridmap/grid_map.cpp
#: modules/mono/csharp_script.cpp modules/visual_script/visual_script_nodes.cpp
-#: scene/2d/tile_map.cpp scene/3d/camera.cpp scene/gui/control.cpp
-#: scene/gui/graph_edit.cpp scene/main/viewport.cpp
+#: scene/2d/tile_map.cpp scene/3d/camera.cpp scene/3d/light.cpp
+#: scene/gui/control.cpp scene/gui/graph_edit.cpp scene/main/viewport.cpp
#: scene/resources/dynamic_font.cpp scene/resources/navigation_mesh.cpp
#: scene/resources/primitive_meshes.cpp scene/resources/sky.cpp
#: scene/resources/style_box.cpp scene/resources/texture.cpp
@@ -212,8 +212,7 @@ msgid "Data"
msgstr ""
#: core/io/file_access_network.cpp core/register_core_types.cpp
-#: editor/editor_settings.cpp editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp main/main.cpp
+#: editor/editor_settings.cpp main/main.cpp
#: modules/gdscript/language_server/gdscript_language_server.cpp
msgid "Network"
msgstr ""
@@ -480,9 +479,10 @@ msgstr ""
msgid "Relative"
msgstr ""
-#: core/os/input_event.cpp scene/2d/camera_2d.cpp
-#: scene/3d/interpolated_camera.cpp scene/animation/animation_player.cpp
-#: scene/resources/environment.cpp
+#: core/os/input_event.cpp scene/2d/camera_2d.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/interpolated_camera.cpp
+#: scene/animation/animation_player.cpp scene/resources/environment.cpp
+#: scene/resources/particles_material.cpp
msgid "Speed"
msgstr ""
@@ -527,8 +527,9 @@ msgstr ""
msgid "Pitch"
msgstr ""
-#: core/os/input_event.cpp scene/2d/physics_body_2d.cpp
-#: scene/3d/physics_body.cpp
+#: core/os/input_event.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/physics_body_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/3d/physics_body.cpp scene/resources/particles_material.cpp
msgid "Velocity"
msgstr ""
@@ -545,6 +546,8 @@ msgid "Controller Value"
msgstr ""
#: core/project_settings.cpp editor/editor_node.cpp main/main.cpp
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/windows/export/export.cpp
#, fuzzy
msgid "Application"
msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
@@ -561,13 +564,16 @@ msgstr ""
#: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp
#: editor/editor_plugin_settings.cpp editor/editor_profiler.cpp
#: editor/project_manager.cpp editor/settings_config_dialog.cpp
-#: modules/gdnative/nativescript/nativescript.cpp scene/2d/area_2d.cpp
-#: scene/3d/area.cpp scene/main/node.cpp
+#: modules/gdnative/nativescript/nativescript.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/osx/export/export.cpp scene/2d/area_2d.cpp scene/3d/area.cpp
+#: scene/main/node.cpp
msgid "Name"
msgstr ""
#: core/project_settings.cpp editor/editor_help.cpp
-#: modules/visual_script/visual_script_nodes.cpp
+#: modules/visual_script/visual_script_nodes.cpp platform/uwp/export/export.cpp
+#: platform/windows/export/export.cpp
msgid "Description"
msgstr ""
@@ -605,7 +611,7 @@ msgid "Custom User Dir Name"
msgstr ""
#: core/project_settings.cpp editor/animation_track_editor.cpp
-#: editor/editor_audio_buses.cpp servers/audio_server.cpp
+#: editor/editor_audio_buses.cpp main/main.cpp servers/audio_server.cpp
msgid "Audio"
msgstr ""
@@ -757,10 +763,13 @@ msgstr ""
msgid "Sharpen Intensity"
msgstr ""
-#: core/project_settings.cpp editor/editor_node.cpp editor/editor_settings.cpp
-#: editor/plugins/script_editor_plugin.cpp editor/project_export.cpp
-#: main/main.cpp modules/gdscript/gdscript.cpp
-#: modules/visual_script/visual_script.cpp scene/3d/room_manager.cpp
+#: core/project_settings.cpp editor/editor_export.cpp editor/editor_node.cpp
+#: editor/editor_settings.cpp editor/plugins/script_editor_plugin.cpp
+#: editor/project_export.cpp main/main.cpp modules/gdscript/gdscript.cpp
+#: modules/visual_script/visual_script.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp scene/3d/room_manager.cpp
#: scene/main/scene_tree.cpp scene/resources/shape_2d.cpp
#: servers/visual_server.cpp
msgid "Debug"
@@ -984,6 +993,7 @@ msgid "Subsurface Scattering"
msgstr ""
#: drivers/gles3/rasterizer_scene_gles3.cpp
+#: editor/import/resource_importer_texture.cpp
#: editor/plugins/spatial_editor_plugin.cpp modules/gltf/gltf_node.cpp
#: modules/gridmap/grid_map.cpp scene/2d/cpu_particles_2d.cpp
#: scene/2d/node_2d.cpp scene/2d/parallax_layer.cpp scene/2d/polygon_2d.cpp
@@ -1292,6 +1302,7 @@ msgid "Editors"
msgstr "தேரà¯à®µà¯ வளைவை [Selection Curve] திரà¯à®¤à¯à®¤à¯"
#: editor/animation_track_editor.cpp editor/editor_settings.cpp
+#: editor/import/resource_importer_scene.cpp
#: editor/plugins/animation_player_editor_plugin.cpp editor/scene_tree_dock.cpp
#: scene/2d/animated_sprite.cpp scene/2d/cpu_particles_2d.cpp
#: scene/2d/sprite.cpp scene/3d/cpu_particles.cpp scene/3d/sprite_3d.cpp
@@ -1513,14 +1524,14 @@ msgstr ""
msgid "Seconds"
msgstr ""
-#: editor/animation_track_editor.cpp
+#: editor/animation_track_editor.cpp editor/import/resource_importer_scene.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp main/main.cpp
#: scene/resources/texture.cpp
msgid "FPS"
msgstr ""
#: editor/animation_track_editor.cpp editor/editor_plugin_settings.cpp
-#: editor/editor_resource_picker.cpp
+#: editor/editor_resource_picker.cpp editor/import/resource_importer_wav.cpp
#: editor/plugins/polygon_2d_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
@@ -2468,7 +2479,9 @@ msgid "Remove Autoload"
msgstr ""
#: editor/editor_autoload_settings.cpp editor/editor_plugin_settings.cpp
-#: modules/gdscript/gdscript.cpp scene/2d/polygon_2d.cpp scene/3d/area.cpp
+#: modules/gdscript/gdscript.cpp platform/android/export/export_plugin.cpp
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#: scene/2d/polygon_2d.cpp scene/3d/area.cpp scene/3d/physics_joint.cpp
#: scene/3d/reflection_probe.cpp scene/main/canvas_layer.cpp
#: scene/resources/material.cpp servers/visual_server.cpp
msgid "Enable"
@@ -2621,6 +2634,58 @@ msgstr ""
#: editor/editor_export.cpp platform/android/export/export_plugin.cpp
#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Custom Template"
+msgstr "தேரà¯à®µà¯ வளைவை [Selection Curve] திரà¯à®¤à¯à®¤à¯"
+
+#: editor/editor_export.cpp editor/project_export.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp
+msgid "Release"
+msgstr ""
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Binary Format"
+msgstr "உரà¯à®®à®¾à®±à¯à®±à®®à¯ அசைவூடà¯à®Ÿà¯"
+
+#: editor/editor_export.cpp
+msgid "64 Bits"
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Embed PCK"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Texture Format"
+msgstr "à®®à¯à®Ÿà®•à¯à®•பà¯à®ªà®Ÿà¯à®Ÿà®¤à¯"
+
+#: editor/editor_export.cpp
+msgid "BPTC"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "S3TC"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "ETC"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "ETC2"
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "No BPTC Fallbacks"
+msgstr ""
+
+#: editor/editor_export.cpp platform/android/export/export_plugin.cpp
+#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
msgid "Custom debug template not found."
msgstr ""
@@ -2797,6 +2862,7 @@ msgid "Make Current"
msgstr ""
#: editor/editor_feature_profile.cpp editor/editor_node.cpp
+#: editor/import/resource_importer_scene.cpp
#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
msgid "Import"
msgstr ""
@@ -2922,8 +2988,11 @@ msgstr ""
msgid "Display Mode"
msgstr ""
-#: editor/editor_file_dialog.cpp main/main.cpp modules/csg/csg_shape.cpp
-#: modules/visual_script/visual_script_nodes.cpp
+#: editor/editor_file_dialog.cpp
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+#: editor/import/resource_importer_wav.cpp main/main.cpp
+#: modules/csg/csg_shape.cpp modules/visual_script/visual_script_nodes.cpp
#: modules/visual_script/visual_script_yield_nodes.cpp scene/2d/light_2d.cpp
#: scene/2d/physics_body_2d.cpp scene/2d/tile_map.cpp
#: scene/3d/baked_lightmap.cpp scene/3d/light.cpp scene/3d/physics_body.cpp
@@ -3055,7 +3124,9 @@ msgstr ""
msgid "Reimport Missing Imported Files"
msgstr ""
-#: editor/editor_help.cpp
+#: editor/editor_help.cpp scene/2d/camera_2d.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/resources/dynamic_font.cpp
+#: scene/resources/style_box.cpp
msgid "Top"
msgstr ""
@@ -3107,6 +3178,7 @@ msgid "Fonts"
msgstr ""
#: editor/editor_help.cpp editor/plugins/theme_editor_plugin.cpp
+#: platform/iphone/export/export.cpp
msgid "Icons"
msgstr ""
@@ -3265,7 +3337,9 @@ msgstr ""
msgid "Pin value [Disabled because '%s' is editor-only]"
msgstr ""
-#: editor/editor_inspector.cpp editor/scene_tree_dock.cpp
+#: editor/editor_inspector.cpp
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+#: editor/scene_tree_dock.cpp
#: modules/visual_script/visual_script_func_nodes.cpp
#: modules/visual_script/visual_script_nodes.cpp
#: modules/visual_script/visual_script_property_selector.cpp
@@ -3579,6 +3653,14 @@ msgid "Quick Open Script..."
msgstr ""
#: editor/editor_node.cpp
+msgid "Save & Reload"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Save changes to '%s' before reloading?"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "Save & Close"
msgstr ""
@@ -3689,6 +3771,10 @@ msgid "Open Project Manager?"
msgstr ""
#: editor/editor_node.cpp
+msgid "Save changes to the following scene(s) before reloading?"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "Save & Quit"
msgstr ""
@@ -3930,8 +4016,8 @@ msgstr ""
#: editor/editor_node.cpp
#, fuzzy
-msgid "Translate Properties"
-msgstr "அசைவூடà¯à®Ÿà¯ போலிபசà¯à®šà®¾à®µà®¿à®•ளà¯"
+msgid "Localize Settings"
+msgstr "மாறà¯à®±à®™à¯à®•ளை இதறà¯à®•௠அமை:"
#: editor/editor_node.cpp
#, fuzzy
@@ -3947,9 +4033,8 @@ msgid "Inspector"
msgstr ""
#: editor/editor_node.cpp
-#, fuzzy
-msgid "Capitalize Properties"
-msgstr "அசைவூடà¯à®Ÿà¯ போலிபசà¯à®šà®¾à®µà®¿à®•ளà¯"
+msgid "Default Property Name Style"
+msgstr ""
#: editor/editor_node.cpp
msgid "Default Float Step"
@@ -4513,7 +4598,9 @@ msgstr ""
msgid "Update"
msgstr ""
-#: editor/editor_plugin_settings.cpp
+#: editor/editor_plugin_settings.cpp platform/android/export/export_plugin.cpp
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp
msgid "Version"
msgstr ""
@@ -5459,7 +5546,7 @@ msgstr ""
msgid "Rect Custom Position"
msgstr ""
-#: editor/editor_settings.cpp
+#: editor/editor_settings.cpp platform/android/export/export_plugin.cpp
msgid "Screen"
msgstr ""
@@ -5484,6 +5571,19 @@ msgid "Editor SSL Certificates"
msgstr ""
#: editor/editor_settings.cpp
+msgid "HTTP Proxy"
+msgstr ""
+
+#: editor/editor_settings.cpp
+msgid "Host"
+msgstr ""
+
+#: editor/editor_settings.cpp editor/fileserver/editor_file_server.cpp
+#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp
+msgid "Port"
+msgstr ""
+
+#: editor/editor_settings.cpp
msgid "Project Manager"
msgstr ""
@@ -5523,7 +5623,8 @@ msgstr ""
msgid "String Color"
msgstr ""
-#: editor/editor_settings.cpp
+#: editor/editor_settings.cpp platform/javascript/export/export.cpp
+#: platform/uwp/export/export.cpp
msgid "Background Color"
msgstr ""
@@ -5685,22 +5786,6 @@ msgid "Starting the download..."
msgstr ""
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "HTTP Proxy"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Host"
-msgstr ""
-
-#: editor/export_template_manager.cpp editor/fileserver/editor_file_server.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp main/main.cpp
-#: modules/mono/mono_gd/gd_mono.cpp
-msgid "Port"
-msgstr ""
-
-#: editor/export_template_manager.cpp
msgid "Error requesting URL:"
msgstr ""
@@ -5942,6 +6027,7 @@ msgstr ""
#: editor/fileserver/editor_file_server.cpp
#: editor/plugins/version_control_editor_plugin.cpp
+#: platform/uwp/export/export.cpp platform/windows/export/export.cpp
msgid "Password"
msgstr ""
@@ -6307,6 +6393,108 @@ msgstr ""
msgid "Use Ambient"
msgstr ""
+#: editor/import/resource_importer_bitmask.cpp
+#, fuzzy
+msgid "Create From"
+msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
+
+#: editor/import/resource_importer_bitmask.cpp
+#: servers/audio/effects/audio_effect_compressor.cpp
+msgid "Threshold"
+msgstr ""
+
+#: editor/import/resource_importer_csv_translation.cpp
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_scene.cpp
+#: editor/import/resource_importer_texture.cpp
+#: editor/import/resource_importer_wav.cpp scene/3d/gi_probe.cpp
+msgid "Compress"
+msgstr ""
+
+#: editor/import/resource_importer_csv_translation.cpp
+msgid "Delimiter"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+msgid "No BPTC If RGB"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/sprite_3d.cpp
+#: scene/resources/material.cpp scene/resources/particles_material.cpp
+#: scene/resources/texture.cpp
+msgid "Flags"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/animation/tween.cpp
+#: scene/resources/texture.cpp
+msgid "Repeat"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/2d/light_2d.cpp
+#: scene/gui/control.cpp scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Filter"
+msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+msgid "Mipmaps"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+msgid "Anisotropic"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+msgid "sRGB"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+msgid "Slices"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
+#: scene/resources/style_box.cpp
+#, fuzzy
+msgid "Horizontal"
+msgstr "அசைவூடà¯à®Ÿà¯ பாதையை நீகà¯à®•à¯"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
+#: scene/resources/style_box.cpp
+msgid "Vertical"
+msgstr ""
+
+#: editor/import/resource_importer_obj.cpp
+msgid "Generate Tangents"
+msgstr ""
+
+#: editor/import/resource_importer_obj.cpp
+msgid "Scale Mesh"
+msgstr ""
+
+#: editor/import/resource_importer_obj.cpp
+msgid "Offset Mesh"
+msgstr ""
+
+#: editor/import/resource_importer_obj.cpp
+#: editor/import/resource_importer_scene.cpp
+msgid "Octahedral Compression"
+msgstr ""
+
+#: editor/import/resource_importer_obj.cpp
+msgid "Optimize Mesh Flags"
+msgstr ""
+
#: editor/import/resource_importer_scene.cpp
msgid "Import as Single Scene"
msgstr ""
@@ -6347,6 +6535,141 @@ msgstr ""
msgid "Import as Multiple Scenes+Materials"
msgstr ""
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Nodes"
+msgstr "அசைவூடà¯à®Ÿà¯ போலிபசà¯à®šà®¾à®µà®¿à®•ளà¯"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Root Type"
+msgstr "மாறà¯à®±à®®à¯ அசைவூடà¯à®Ÿà¯"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Root Name"
+msgstr "சேர௠மà¯à®•à¯à®•ியபà¯à®ªà¯à®³à¯à®³à®¿à®¯à¯ˆ நகரà¯à®¤à¯à®¤à¯"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Root Scale"
+msgstr "சேர௠மà¯à®•à¯à®•ியபà¯à®ªà¯à®³à¯à®³à®¿à®¯à¯ˆ நகரà¯à®¤à¯à®¤à¯"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Custom Script"
+msgstr "அசைவூடà¯à®Ÿà¯ போலிபசà¯à®šà®¾à®µà®¿à®•ளà¯"
+
+#: editor/import/resource_importer_scene.cpp scene/resources/texture.cpp
+msgid "Storage"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Use Legacy Names"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+msgid "Materials"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Location"
+msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Keep On Reimport"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+msgid "Meshes"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Ensure Tangents"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Light Baking"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Lightmap Texel Size"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+msgid "Skins"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Use Named Skins"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "External Files"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Store In Subdir"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Filter Script"
+msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Keep Custom Tracks"
+msgstr "உரà¯à®®à®¾à®±à¯à®±à®®à¯ அசைவூடà¯à®Ÿà¯"
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Optimizer"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp main/main.cpp
+#: modules/mono/mono_gd/gd_mono.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp scene/2d/camera_2d.cpp scene/2d/light_2d.cpp
+#: scene/2d/navigation_polygon.cpp scene/2d/ray_cast_2d.cpp scene/2d/sprite.cpp
+#: scene/2d/y_sort.cpp scene/3d/audio_stream_player_3d.cpp
+#: scene/3d/baked_lightmap.cpp scene/3d/interpolated_camera.cpp
+#: scene/3d/light.cpp scene/3d/navigation_mesh_instance.cpp
+#: scene/3d/physics_joint.cpp scene/3d/ray_cast.cpp scene/3d/sprite_3d.cpp
+#: scene/gui/graph_edit.cpp scene/gui/rich_text_label.cpp
+#: scene/resources/curve.cpp scene/resources/environment.cpp
+#: scene/resources/material.cpp
+msgid "Enabled"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Max Linear Error"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Max Angular Error"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Max Angle"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Remove Unused Tracks"
+msgstr "அசைவூடà¯à®Ÿà¯ பாதையை நீகà¯à®•à¯"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Clips"
+msgstr "அசைவூடà¯à®Ÿà¯ பாதை சேரà¯"
+
+#: editor/import/resource_importer_scene.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/particles_2d.cpp scene/3d/area.cpp scene/3d/cpu_particles.cpp
+#: scene/3d/particles.cpp scene/resources/environment.cpp
+msgid "Amount"
+msgstr ""
+
#: editor/import/resource_importer_scene.cpp
#: editor/plugins/mesh_library_editor_plugin.cpp
msgid "Import Scene"
@@ -6388,12 +6711,135 @@ msgstr ""
msgid "Saving..."
msgstr ""
+#: editor/import/resource_importer_texture.cpp scene/resources/texture.cpp
+msgid "Lossy Quality"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "HDR Mode"
+msgstr "அசைவூடà¯à®Ÿà¯ போலிபசà¯à®šà®¾à®µà®¿à®•ளà¯"
+
+#: editor/import/resource_importer_texture.cpp
+msgid "BPTC LDR"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/mesh_instance_2d.cpp scene/2d/multimesh_instance_2d.cpp
+#: scene/2d/particles_2d.cpp scene/2d/sprite.cpp scene/resources/style_box.cpp
+msgid "Normal Map"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Process"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Fix Alpha Border"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Premult Alpha"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Hdr As Srgb"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Invert Color"
+msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Normal Map Invert Y"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
+#: scene/audio/audio_stream_player.cpp scene/gui/video_player.cpp
+msgid "Stream"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Size Limit"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Detect 3D"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "SVG"
+msgstr ""
+
#: editor/import/resource_importer_texture.cpp
msgid ""
"Warning, no suitable PC VRAM compression enabled in Project Settings. This "
"texture will not display correctly on PC."
msgstr ""
+#: editor/import/resource_importer_texture_atlas.cpp
+msgid "Atlas File"
+msgstr ""
+
+#: editor/import/resource_importer_texture_atlas.cpp
+#, fuzzy
+msgid "Import Mode"
+msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
+
+#: editor/import/resource_importer_texture_atlas.cpp
+msgid "Crop To Region"
+msgstr ""
+
+#: editor/import/resource_importer_texture_atlas.cpp
+msgid "Trim Alpha Border From Region"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp scene/2d/physics_body_2d.cpp
+msgid "Force"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+msgid "8 Bit"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp main/main.cpp
+#: modules/mono/editor/csharp_project.cpp modules/mono/mono_gd/gd_mono.cpp
+msgid "Mono"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+msgid "Max Rate"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+msgid "Max Rate Hz"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+msgid "Trim"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+msgid "Normalize"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+msgid "Loop Mode"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+msgid "Loop Begin"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+msgid "Loop End"
+msgstr ""
+
#: editor/import_defaults_editor.cpp
#, fuzzy
msgid "Select Importer"
@@ -6463,6 +6909,27 @@ msgid "Failed to load resource."
msgstr ""
#: editor/inspector_dock.cpp
+msgid "Property Name Style"
+msgstr ""
+
+#: editor/inspector_dock.cpp scene/gui/color_picker.cpp
+msgid "Raw"
+msgstr ""
+
+#: editor/inspector_dock.cpp
+#, fuzzy
+msgid "Capitalized"
+msgstr "அசைவூடà¯à®Ÿà¯ போலிபசà¯à®šà®¾à®µà®¿à®•ளà¯"
+
+#: editor/inspector_dock.cpp
+msgid "Localized"
+msgstr ""
+
+#: editor/inspector_dock.cpp
+msgid "Localization not available for current language."
+msgstr ""
+
+#: editor/inspector_dock.cpp
msgid "Copy Properties"
msgstr ""
@@ -7504,18 +7971,23 @@ msgid "License (Z-A)"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
+msgctxt "Pagination"
msgid "First"
msgstr ""
-#: editor/plugins/asset_library_editor_plugin.cpp scene/gui/control.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgctxt "Pagination"
msgid "Previous"
msgstr ""
-#: editor/plugins/asset_library_editor_plugin.cpp scene/gui/control.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgctxt "Pagination"
msgid "Next"
-msgstr ""
+msgstr "சேர௠மà¯à®•à¯à®•ியபà¯à®ªà¯à®³à¯à®³à®¿à®¯à¯ˆ நகரà¯à®¤à¯à®¤à¯"
#: editor/plugins/asset_library_editor_plugin.cpp
+msgctxt "Pagination"
msgid "Last"
msgstr ""
@@ -7751,19 +8223,19 @@ msgid ""
"margins."
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Top Left"
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Top Right"
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Bottom Right"
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Bottom Left"
msgstr ""
@@ -8468,6 +8940,18 @@ msgstr ""
msgid "Gradient Edited"
msgstr ""
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+msgid "Swap GradientTexture2D Fill Points"
+msgstr ""
+
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+msgid "Swap Gradient Fill Points"
+msgstr ""
+
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+msgid "Toggle Grid Snap"
+msgstr ""
+
#: editor/plugins/item_list_editor_plugin.cpp
msgid "Item %d"
msgstr ""
@@ -8681,8 +9165,8 @@ msgid ""
"%s"
msgstr ""
-#: editor/plugins/mesh_library_editor_plugin.cpp modules/gridmap/grid_map.cpp
-msgid "Mesh Library"
+#: editor/plugins/mesh_library_editor_plugin.cpp
+msgid "MeshLibrary"
msgstr ""
#: editor/plugins/mesh_library_editor_plugin.cpp
@@ -9658,8 +10142,8 @@ msgstr ""
msgid "Source"
msgstr ""
-#: editor/plugins/script_text_editor.cpp scene/3d/interpolated_camera.cpp
-#: scene/animation/skeleton_ik.cpp
+#: editor/plugins/script_text_editor.cpp platform/uwp/export/export.cpp
+#: scene/3d/interpolated_camera.cpp scene/animation/skeleton_ik.cpp
msgid "Target"
msgstr ""
@@ -10620,7 +11104,9 @@ msgstr ""
#: editor/plugins/sprite_frames_editor_plugin.cpp
#: modules/gltf/gltf_animation.cpp modules/minimp3/audio_stream_mp3.cpp
-#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp scene/2d/path_2d.cpp
+#: modules/minimp3/resource_importer_mp3.cpp
+#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp
+#: modules/stb_vorbis/resource_importer_ogg_vorbis.cpp scene/2d/path_2d.cpp
#: scene/3d/path.cpp scene/resources/animation.cpp scene/resources/material.cpp
msgid "Loop"
msgstr ""
@@ -11501,8 +11987,9 @@ msgstr ""
msgid "Priority"
msgstr ""
-#: editor/plugins/tile_set_editor_plugin.cpp main/main.cpp scene/gui/button.cpp
-#: scene/gui/item_list.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp main/main.cpp
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#: scene/gui/button.cpp scene/gui/item_list.cpp
msgid "Icon"
msgstr ""
@@ -12797,10 +13284,6 @@ msgid ""
msgstr ""
#: editor/project_export.cpp
-msgid "Release"
-msgstr ""
-
-#: editor/project_export.cpp
msgid "Exporting All"
msgstr ""
@@ -14572,6 +15055,7 @@ msgid "Change AudioStreamPlayer3D Emission Angle"
msgstr ""
#: editor/spatial_editor_gizmos.cpp modules/gltf/gltf_node.cpp
+#: platform/osx/export/export.cpp
msgid "Camera"
msgstr ""
@@ -14833,7 +15317,8 @@ msgstr ""
msgid "Use Nvidia Rect Flicker Workaround"
msgstr ""
-#: main/main.cpp platform/uwp/os_uwp.cpp
+#: main/main.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp platform/uwp/os_uwp.cpp
msgid "Display"
msgstr ""
@@ -14888,18 +15373,6 @@ msgstr ""
msgid "Allowed"
msgstr ""
-#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp scene/2d/camera_2d.cpp
-#: scene/2d/light_2d.cpp scene/2d/navigation_polygon.cpp
-#: scene/2d/ray_cast_2d.cpp scene/2d/sprite.cpp scene/2d/y_sort.cpp
-#: scene/3d/audio_stream_player_3d.cpp scene/3d/baked_lightmap.cpp
-#: scene/3d/interpolated_camera.cpp scene/3d/light.cpp
-#: scene/3d/navigation_mesh_instance.cpp scene/3d/ray_cast.cpp
-#: scene/3d/sprite_3d.cpp scene/gui/graph_edit.cpp
-#: scene/gui/rich_text_label.cpp scene/resources/curve.cpp
-#: scene/resources/environment.cpp
-msgid "Enabled"
-msgstr ""
-
#: main/main.cpp
msgid "Intended Usage"
msgstr ""
@@ -14928,13 +15401,14 @@ msgstr ""
msgid "Handheld"
msgstr ""
-#: main/main.cpp
+#: main/main.cpp platform/javascript/export/export.cpp
+#: platform/uwp/export/export.cpp
#, fuzzy
msgid "Orientation"
msgstr "மாறà¯à®±à®™à¯à®•ளை இதறà¯à®•௠அமை:"
#: main/main.cpp scene/gui/scroll_container.cpp scene/gui/text_edit.cpp
-#: scene/main/scene_tree.cpp
+#: scene/main/scene_tree.cpp scene/register_scene_types.cpp
msgid "Common"
msgstr ""
@@ -14973,7 +15447,7 @@ msgid "Verbose stdout"
msgstr ""
#: main/main.cpp
-msgid "Frame Delay (msec)"
+msgid "Frame Delay Msec"
msgstr ""
#: main/main.cpp
@@ -15091,11 +15565,6 @@ msgstr ""
msgid "Tooltip Position Offset"
msgstr ""
-#: main/main.cpp modules/mono/editor/csharp_project.cpp
-#: modules/mono/mono_gd/gd_mono.cpp
-msgid "Mono"
-msgstr ""
-
#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp
msgid "Debugger Agent"
msgstr ""
@@ -15622,7 +16091,7 @@ msgstr ""
msgid "Intensity"
msgstr ""
-#: modules/gltf/gltf_light.cpp scene/2d/light_2d.cpp
+#: modules/gltf/gltf_light.cpp scene/2d/light_2d.cpp scene/3d/light.cpp
msgid "Range"
msgstr ""
@@ -15756,11 +16225,6 @@ msgstr ""
msgid "Use Named Skin Binds"
msgstr ""
-#: modules/gltf/gltf_state.cpp scene/3d/physics_joint.cpp
-#, fuzzy
-msgid "Nodes"
-msgstr "அசைவூடà¯à®Ÿà¯ போலிபசà¯à®šà®¾à®µà®¿à®•ளà¯"
-
#: modules/gltf/gltf_state.cpp
msgid "Buffer Views"
msgstr ""
@@ -15770,14 +16234,6 @@ msgid "Accessors"
msgstr ""
#: modules/gltf/gltf_state.cpp
-msgid "Meshes"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp
-msgid "Materials"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp
#, fuzzy
msgid "Scene Name"
msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
@@ -15793,15 +16249,11 @@ msgstr "சேர௠மà¯à®•à¯à®•ியபà¯à®ªà¯à®³à¯à®³à®¿à®¯à¯ˆ நகà
msgid "Textures"
msgstr ""
-#: modules/gltf/gltf_state.cpp
+#: modules/gltf/gltf_state.cpp platform/uwp/export/export.cpp
msgid "Images"
msgstr ""
#: modules/gltf/gltf_state.cpp
-msgid "Skins"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp
msgid "Cameras"
msgstr ""
@@ -15833,10 +16285,14 @@ msgid "Src Image"
msgstr ""
#: modules/gridmap/grid_map.cpp
-msgid "Physics Material"
+msgid "Mesh Library"
msgstr ""
#: modules/gridmap/grid_map.cpp
+msgid "Physics Material"
+msgstr ""
+
+#: modules/gridmap/grid_map.cpp scene/3d/visual_instance.cpp
msgid "Use In Baked Light"
msgstr ""
@@ -15866,6 +16322,7 @@ msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
#: modules/gridmap/grid_map.cpp scene/2d/collision_object_2d.cpp
#: scene/2d/tile_map.cpp scene/3d/collision_object.cpp scene/3d/soft_body.cpp
+#: scene/resources/material.cpp
msgid "Mask"
msgstr ""
@@ -16051,7 +16508,9 @@ msgid "Ultra Quality Ray Count"
msgstr ""
#: modules/minimp3/audio_stream_mp3.cpp
+#: modules/minimp3/resource_importer_mp3.cpp
#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp
+#: modules/stb_vorbis/resource_importer_ogg_vorbis.cpp
msgid "Loop Offset"
msgstr ""
@@ -17093,6 +17552,171 @@ msgid "The package must have at least one '.' separator."
msgstr ""
#: platform/android/export/export_plugin.cpp
+msgid "Use Custom Build"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Export Format"
+msgstr "உரà¯à®®à®¾à®±à¯à®±à®®à¯ அசைவூடà¯à®Ÿà¯"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Keystore"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Debug User"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+msgid "Debug Password"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Release User"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Release Password"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "One Click Deploy"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Clear Previous Install"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp scene/resources/shader.cpp
+msgid "Code"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Min SDK"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Target SDK"
+msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+msgid "Package"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Unique Name"
+msgstr "மாறà¯à®±à®®à¯ அசைவூடà¯à®Ÿà¯"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Signed"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Classify As Game"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Retain Data On Uninstall"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Exclude From Recents"
+msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Graphics"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "OpenGL Debug"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "XR Features"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "XR Mode"
+msgstr "அசைவூடà¯à®Ÿà¯ போலிபசà¯à®šà®¾à®µà®¿à®•ளà¯"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Hand Tracking"
+msgstr "அசைவூடà¯à®Ÿà¯ பாதை சேரà¯"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Hand Tracking Frequency"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Passthrough"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Immersive Mode"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Support Small"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Support Normal"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Support Large"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Support Xlarge"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "User Data Backup"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Allow"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+msgid "Command Line"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+msgid "Extra Args"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "APK Expansion"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Salt"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Public Key"
+msgstr "அசைவூடà¯à®Ÿà¯ போலிபசà¯à®šà®¾à®µà®¿à®•ளà¯"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Permissions"
+msgstr "மாறà¯à®±à®™à¯à®•ளை இதறà¯à®•௠அமை:"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Custom Permissions"
+msgstr "அசைவூடà¯à®Ÿà¯ போலிபசà¯à®šà®¾à®µà®¿à®•ளà¯"
+
+#: platform/android/export/export_plugin.cpp
msgid "Select device from the list"
msgstr ""
@@ -17378,6 +18002,167 @@ msgid "The character '%s' is not allowed in Identifier."
msgstr ""
#: platform/iphone/export/export.cpp
+msgid "App Store Team ID"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Provisioning Profile UUID Debug"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Code Sign Identity Debug"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Export Method Debug"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Provisioning Profile UUID Release"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Code Sign Identity Release"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Export Method Release"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Targeted Device Family"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Info"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Identifier"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Signature"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Short Version"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/windows/export/export.cpp
+msgid "Copyright"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Capabilities"
+msgstr "அசைவூடà¯à®Ÿà¯ போலிபசà¯à®šà®¾à®µà®¿à®•ளà¯"
+
+#: platform/iphone/export/export.cpp
+msgid "Access Wi-Fi"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Push Notifications"
+msgstr ""
+
+#: platform/iphone/export/export.cpp scene/3d/baked_lightmap.cpp
+msgid "User Data"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Accessible From Files App"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Accessible From Itunes Sharing"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Privacy"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Camera Usage Description"
+msgstr "தேரà¯à®µà¯ வளைவை [Selection Curve] திரà¯à®¤à¯à®¤à¯"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Microphone Usage Description"
+msgstr "தேரà¯à®µà¯ வளைவை [Selection Curve] திரà¯à®¤à¯à®¤à¯"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Photolibrary Usage Description"
+msgstr "தேரà¯à®µà¯ வளைவை [Selection Curve] திரà¯à®¤à¯à®¤à¯"
+
+#: platform/iphone/export/export.cpp
+msgid "iPhone 120 X 120"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPhone 180 X 180"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 76 X 76"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 152 X 152"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 167 X 167"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "App Store 1024 X 1024"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Spotlight 40 X 40"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Spotlight 80 X 80"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Storyboard"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Use Launch Screen Storyboard"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Image Scale Mode"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Custom Image @2x"
+msgstr "அசைவூடà¯à®Ÿà¯ போலிபசà¯à®šà®¾à®µà®¿à®•ளà¯"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Custom Image @3x"
+msgstr "அசைவூடà¯à®Ÿà¯ போலிபசà¯à®šà®¾à®µà®¿à®•ளà¯"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Use Custom BG Color"
+msgstr "அசைவூடà¯à®Ÿà¯ போலிபசà¯à®šà®¾à®µà®¿à®•ளà¯"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Custom BG Color"
+msgstr "அசைவூடà¯à®Ÿà¯ போலிபசà¯à®šà®¾à®µà®¿à®•ளà¯"
+
+#: platform/iphone/export/export.cpp
msgid "App Store Team ID not specified - cannot configure the project."
msgstr ""
@@ -17414,6 +18199,77 @@ msgid "Could not read file:"
msgstr ""
#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Variant"
+msgstr "மாறà¯à®±à®™à¯à®•ளை இதறà¯à®•௠அமை:"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Export Type"
+msgstr "மாறà¯à®±à®®à¯ அசைவூடà¯à®Ÿà¯"
+
+#: platform/javascript/export/export.cpp
+msgid "VRAM Texture Compression"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "For Desktop"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "For Mobile"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Html"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Export Icon"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Custom Html Shell"
+msgstr "அசைவூடà¯à®Ÿà¯ போலிபசà¯à®šà®¾à®µà®¿à®•ளà¯"
+
+#: platform/javascript/export/export.cpp
+msgid "Head Include"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Canvas Resize Policy"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Focus Canvas On Start"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Experimental Virtual Keyboard"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Progressive Web App"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Offline Page"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 144 X 144"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 180 X 180"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 512 X 512"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
msgid "Could not read HTML shell:"
msgstr ""
@@ -17518,6 +18374,185 @@ msgid "Unknown object type."
msgstr ""
#: platform/osx/export/export.cpp
+msgid "App Category"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "High Res"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Location Usage Description"
+msgstr "தேரà¯à®µà¯ வளைவை [Selection Curve] திரà¯à®¤à¯à®¤à¯"
+
+#: platform/osx/export/export.cpp
+msgid "Address Book Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Calendar Usage Description"
+msgstr "தேரà¯à®µà¯ வளைவை [Selection Curve] திரà¯à®¤à¯à®¤à¯"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Photos Library Usage Description"
+msgstr "தேரà¯à®µà¯ வளைவை [Selection Curve] திரà¯à®¤à¯à®¤à¯"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Desktop Folder Usage Description"
+msgstr "தேரà¯à®µà¯ வளைவை [Selection Curve] திரà¯à®¤à¯à®¤à¯"
+
+#: platform/osx/export/export.cpp
+msgid "Documents Folder Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Downloads Folder Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Network Volumes Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Removable Volumes Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#, fuzzy
+msgid "Codesign"
+msgstr "அசைவூடà¯à®Ÿà¯ போலிபசà¯à®šà®¾à®µà®¿à®•ளà¯"
+
+#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
+#: platform/windows/export/export.cpp
+msgid "Identity"
+msgstr ""
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+msgid "Timestamp"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Hardened Runtime"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Replace Existing Signature"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Entitlements"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Custom File"
+msgstr "அசைவூடà¯à®Ÿà¯ போலிபசà¯à®šà®¾à®µà®¿à®•ளà¯"
+
+#: platform/osx/export/export.cpp
+msgid "Allow JIT Code Execution"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Allow Unsigned Executable Memory"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Allow Dyld Environment Variables"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Disable Library Validation"
+msgstr "à®®à¯à®Ÿà®•à¯à®•பà¯à®ªà®Ÿà¯à®Ÿà®¤à¯"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Audio Input"
+msgstr "அசைவூடà¯à®Ÿà¯ பாதை சேரà¯"
+
+#: platform/osx/export/export.cpp
+msgid "Address Book"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Calendars"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Photos Library"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Apple Events"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Debugging"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "App Sandbox"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Network Server"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Network Client"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Device Usb"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Device Bluetooth"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Files Downloads"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Files Pictures"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Files Music"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Files Movies"
+msgstr ""
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#, fuzzy
+msgid "Custom Options"
+msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Notarization"
+msgstr "மாறà¯à®±à®™à¯à®•ளை இதறà¯à®•௠அமை:"
+
+#: platform/osx/export/export.cpp
+msgid "Apple ID Name"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Apple ID Password"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Apple Team ID"
+msgstr ""
+
+#: platform/osx/export/export.cpp
msgid ""
"Note: The notarization process generally takes less than an hour. When the "
"process is completed, you'll receive an email."
@@ -17707,6 +18742,124 @@ msgid "Force Builtin Codesign"
msgstr ""
#: platform/uwp/export/export.cpp
+msgid "Architecture"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Display Name"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Short Name"
+msgstr "மாறà¯à®±à®®à¯ அசைவூடà¯à®Ÿà¯"
+
+#: platform/uwp/export/export.cpp
+msgid "Publisher"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Publisher Display Name"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Product Guid"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Publisher Guid"
+msgstr "உரà¯à®®à®¾à®±à¯à®±à®®à¯ அசைவூடà¯à®Ÿà¯"
+
+#: platform/uwp/export/export.cpp
+msgid "Signing"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Certificate"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Algorithm"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Major"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Minor"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Build"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Revision"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Landscape"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Portrait"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Landscape Flipped"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Portrait Flipped"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Store Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 44 X 44 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 71 X 71 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 150 X 150 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 310 X 310 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Wide 310 X 150 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Splash Screen"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Tiles"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Square 150 X 150"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Wide 310 X 150"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Square 310 X 310"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
msgid "Invalid package short name."
msgstr ""
@@ -17771,11 +18924,46 @@ msgid "Debug Certificate"
msgstr ""
#: platform/uwp/export/export.cpp
-msgid "Debug Password"
+msgid "Debug Algorithm"
msgstr ""
-#: platform/uwp/export/export.cpp
-msgid "Debug Algorithm"
+#: platform/windows/export/export.cpp
+msgid "Identity Type"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Timestamp Server URL"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Digest Algorithm"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "File Version"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Product Version"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Company Name"
+msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Product Name"
+msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "File Description"
+msgstr "தேரà¯à®µà¯ வளைவை [Selection Curve] திரà¯à®¤à¯à®¤à¯"
+
+#: platform/windows/export/export.cpp
+msgid "Trademarks"
msgstr ""
#: platform/windows/export/export.cpp
@@ -17845,12 +19033,14 @@ msgstr ""
msgid "Centered"
msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
-#: scene/2d/animated_sprite.cpp scene/2d/camera_2d.cpp scene/2d/light_2d.cpp
+#: scene/2d/animated_sprite.cpp scene/2d/camera_2d.cpp
+#: scene/2d/cpu_particles_2d.cpp scene/2d/light_2d.cpp
#: scene/2d/parallax_background.cpp scene/2d/parallax_layer.cpp
#: scene/2d/path_2d.cpp scene/2d/polygon_2d.cpp scene/2d/sprite.cpp
-#: scene/3d/path.cpp scene/3d/physics_body.cpp scene/3d/sprite_3d.cpp
-#: scene/gui/graph_node.cpp scene/gui/rich_text_effect.cpp
-#: scene/main/canvas_layer.cpp scene/resources/material.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/path.cpp scene/3d/physics_body.cpp
+#: scene/3d/sprite_3d.cpp scene/gui/graph_node.cpp
+#: scene/gui/rich_text_effect.cpp scene/main/canvas_layer.cpp
+#: scene/resources/material.cpp scene/resources/particles_material.cpp
#: scene/resources/style_box.cpp
msgid "Offset"
msgstr ""
@@ -17915,11 +19105,6 @@ msgstr "அசைவூடà¯à®Ÿà¯ பாதை சேரà¯"
msgid "Override"
msgstr ""
-#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
-#: scene/audio/audio_stream_player.cpp scene/gui/video_player.cpp
-msgid "Stream"
-msgstr ""
-
#: scene/2d/audio_stream_player_2d.cpp scene/audio/audio_stream_player.cpp
#: scene/gui/video_player.cpp servers/audio/effects/audio_effect_amplify.cpp
msgid "Volume dB"
@@ -17943,12 +19128,12 @@ msgid "Stream Paused"
msgstr ""
#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
-#: scene/3d/reflection_probe.cpp scene/3d/visual_instance.cpp
-#: scene/resources/material.cpp
+#: scene/3d/light.cpp scene/3d/reflection_probe.cpp
+#: scene/3d/visual_instance.cpp scene/resources/material.cpp
msgid "Max Distance"
msgstr ""
-#: scene/2d/audio_stream_player_2d.cpp
+#: scene/2d/audio_stream_player_2d.cpp scene/3d/light.cpp
#, fuzzy
msgid "Attenuation"
msgstr "மாறà¯à®±à®™à¯à®•ளை இதறà¯à®•௠அமை:"
@@ -17999,6 +19184,22 @@ msgstr ""
msgid "Limit"
msgstr ""
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/style_box.cpp
+msgid "Left"
+msgstr ""
+
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/style_box.cpp
+msgid "Right"
+msgstr ""
+
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/dynamic_font.cpp scene/resources/style_box.cpp
+#, fuzzy
+msgid "Bottom"
+msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
+
#: scene/2d/camera_2d.cpp
msgid "Smoothed"
msgstr ""
@@ -18195,12 +19396,6 @@ msgstr ""
msgid "Emitting"
msgstr "மாறà¯à®±à®™à¯à®•ளை இதறà¯à®•௠அமை:"
-#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp scene/3d/area.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
-#: scene/resources/environment.cpp
-msgid "Amount"
-msgstr ""
-
#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp
#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
msgid "Lifetime"
@@ -18260,17 +19455,12 @@ msgstr ""
#: scene/2d/mesh_instance_2d.cpp scene/2d/multimesh_instance_2d.cpp
#: scene/2d/particles_2d.cpp scene/2d/polygon_2d.cpp scene/2d/sprite.cpp
#: scene/3d/sprite_3d.cpp scene/gui/nine_patch_rect.cpp
-#: scene/gui/texture_rect.cpp scene/resources/sky.cpp
-#: scene/resources/style_box.cpp scene/resources/visual_shader_nodes.cpp
+#: scene/gui/texture_rect.cpp scene/resources/material.cpp
+#: scene/resources/sky.cpp scene/resources/style_box.cpp
+#: scene/resources/visual_shader_nodes.cpp
msgid "Texture"
msgstr ""
-#: scene/2d/cpu_particles_2d.cpp scene/2d/mesh_instance_2d.cpp
-#: scene/2d/multimesh_instance_2d.cpp scene/2d/particles_2d.cpp
-#: scene/2d/sprite.cpp scene/resources/style_box.cpp
-msgid "Normal Map"
-msgstr ""
-
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
msgid "Emission Shape"
@@ -18290,9 +19480,8 @@ msgid "Normals"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/3d/sprite_3d.cpp scene/resources/material.cpp
-#: scene/resources/particles_material.cpp scene/resources/texture.cpp
-msgid "Flags"
+#: scene/resources/particles_material.cpp
+msgid "Align Y"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
@@ -18313,6 +19502,11 @@ msgid "Initial Velocity"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Velocity Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp servers/physics_2d_server.cpp
#: servers/physics_server.cpp
msgid "Angular Velocity"
@@ -18320,6 +19514,12 @@ msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Velocity Curve"
+msgstr "கண௠வளைவை[Node Curve] திரà¯à®¤à¯à®¤à¯"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
msgid "Orbit Velocity"
msgstr ""
@@ -18330,6 +19530,22 @@ msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+msgid "Accel"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Accel Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Accel Curve"
+msgstr "கண௠வளைவை[Node Curve] திரà¯à®¤à¯à®¤à¯"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
msgid "Radial Accel"
msgstr ""
@@ -18339,19 +19555,55 @@ msgid "Tangential Accel"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/2d/joints_2d.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/vehicle_body.cpp
-#: scene/resources/particles_material.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/physics_joint.cpp
+#: scene/3d/vehicle_body.cpp scene/resources/particles_material.cpp
#: servers/audio/effects/audio_effect_reverb.cpp
msgid "Damping"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+msgid "Damping Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Damping Curve"
+msgstr "கண௠வளைவை[Node Curve] திரà¯à®¤à¯à®¤à¯"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp scene/3d/light.cpp
+#: scene/resources/particles_material.cpp
msgid "Angle"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+msgid "Angle Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Angle Curve"
+msgstr "கண௠வளைவை[Node Curve] திரà¯à®¤à¯à®¤à¯"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#, fuzzy
+msgid "Scale Amount"
+msgstr "மாறà¯à®±à®™à¯à®•ளை இதறà¯à®•௠அமை:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+msgid "Scale Amount Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#, fuzzy
+msgid "Scale Amount Curve"
+msgstr "கண௠வளைவை[Node Curve] திரà¯à®¤à¯à®¤à¯"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
msgid "Color Ramp"
msgstr ""
@@ -18366,6 +19618,46 @@ msgstr ""
msgid "Hue Variation"
msgstr "மாறà¯à®±à®™à¯à®•ளை இதறà¯à®•௠அமை:"
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Variation"
+msgstr "மாறà¯à®±à®™à¯à®•ளை இதறà¯à®•௠அமை:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Variation Random"
+msgstr "மாறà¯à®±à®™à¯à®•ளை இதறà¯à®•௠அமை:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Variation Curve"
+msgstr "மாறà¯à®±à®™à¯à®•ளை இதறà¯à®•௠அமை:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Speed Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Speed Curve"
+msgstr "கண௠வளைவை[Node Curve] திரà¯à®¤à¯à®¤à¯"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Offset Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Offset Curve"
+msgstr "கண௠வளைவை[Node Curve] திரà¯à®¤à¯à®¤à¯"
+
#: scene/2d/joints_2d.cpp
msgid "Node A and Node B must be PhysicsBody2Ds"
msgstr ""
@@ -18397,6 +19689,7 @@ msgid "Node B"
msgstr "அசைவூடà¯à®Ÿà¯ போலிபசà¯à®šà®¾à®µà®¿à®•ளà¯"
#: scene/2d/joints_2d.cpp scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp
+#: scene/3d/light.cpp scene/3d/physics_joint.cpp
#: scene/resources/environment.cpp
msgid "Bias"
msgstr ""
@@ -18406,7 +19699,7 @@ msgstr ""
msgid "Disable Collision"
msgstr "à®®à¯à®Ÿà®•à¯à®•பà¯à®ªà®Ÿà¯à®Ÿà®¤à¯"
-#: scene/2d/joints_2d.cpp
+#: scene/2d/joints_2d.cpp scene/3d/physics_joint.cpp
msgid "Softness"
msgstr ""
@@ -18423,7 +19716,7 @@ msgstr ""
msgid "Rest Length"
msgstr ""
-#: scene/2d/joints_2d.cpp scene/3d/vehicle_body.cpp
+#: scene/2d/joints_2d.cpp scene/3d/physics_joint.cpp scene/3d/vehicle_body.cpp
msgid "Stiffness"
msgstr ""
@@ -18443,7 +19736,7 @@ msgid "Texture Scale"
msgstr ""
#: scene/2d/light_2d.cpp scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp
-#: scene/resources/environment.cpp scene/resources/sky.cpp
+#: scene/3d/light.cpp scene/resources/environment.cpp scene/resources/sky.cpp
msgid "Energy"
msgstr ""
@@ -18479,12 +19772,6 @@ msgstr ""
msgid "Gradient Length"
msgstr ""
-#: scene/2d/light_2d.cpp scene/gui/control.cpp
-#: scene/resources/navigation_mesh.cpp
-#, fuzzy
-msgid "Filter"
-msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
-
#: scene/2d/light_2d.cpp
#, fuzzy
msgid "Filter Smooth"
@@ -18865,10 +20152,6 @@ msgid "Applied Forces"
msgstr ""
#: scene/2d/physics_body_2d.cpp
-msgid "Force"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp
msgid "Torque"
msgstr ""
@@ -18881,7 +20164,7 @@ msgid "Sync To Physics"
msgstr ""
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-msgid "Moving platform"
+msgid "Moving Platform"
msgstr ""
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
@@ -18890,7 +20173,7 @@ msgstr ""
#: scene/2d/physics_body_2d.cpp scene/2d/touch_screen_button.cpp
#: scene/3d/physics_body.cpp scene/gui/texture_button.cpp
-#: scene/resources/line_shape_2d.cpp
+#: scene/resources/line_shape_2d.cpp scene/resources/material.cpp
msgid "Normal"
msgstr ""
@@ -19102,6 +20385,32 @@ msgid ""
"as parent."
msgstr ""
+#: scene/2d/visibility_notifier_2d.cpp scene/3d/visibility_notifier.cpp
+#, fuzzy
+msgid "Pause Animations"
+msgstr "மாறà¯à®±à®™à¯à®•ளை இதறà¯à®•௠அமை:"
+
+#: scene/2d/visibility_notifier_2d.cpp scene/3d/visibility_notifier.cpp
+msgid "Freeze Bodies"
+msgstr ""
+
+#: scene/2d/visibility_notifier_2d.cpp
+msgid "Pause Particles"
+msgstr ""
+
+#: scene/2d/visibility_notifier_2d.cpp
+#, fuzzy
+msgid "Pause Animated Sprites"
+msgstr "மாறà¯à®±à®®à¯ அசைவூடà¯à®Ÿà¯"
+
+#: scene/2d/visibility_notifier_2d.cpp
+msgid "Process Parent"
+msgstr ""
+
+#: scene/2d/visibility_notifier_2d.cpp
+msgid "Physics Process Parent"
+msgstr ""
+
#: scene/3d/area.cpp
msgid "Reverb Bus"
msgstr ""
@@ -19192,6 +20501,7 @@ msgid "Attenuation Filter"
msgstr ""
#: scene/3d/audio_stream_player_3d.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
#: servers/audio/effects/audio_effect_filter.cpp
msgid "Cutoff Hz"
msgstr ""
@@ -19232,10 +20542,6 @@ msgid "Octree"
msgstr ""
#: scene/3d/baked_lightmap.cpp
-msgid "User Data"
-msgstr ""
-
-#: scene/3d/baked_lightmap.cpp
msgid "Finding meshes and lights"
msgstr ""
@@ -19470,6 +20776,16 @@ msgid "Ring Axis"
msgstr ""
#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Rotate Y"
+msgstr "மாறà¯à®±à®™à¯à®•ளை இதறà¯à®•௠அமை:"
+
+#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Disable Z"
+msgstr "à®®à¯à®Ÿà®•à¯à®•பà¯à®ªà®Ÿà¯à®Ÿà®¤à¯"
+
+#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
msgid "Flatness"
msgstr ""
@@ -19505,15 +20821,11 @@ msgstr ""
msgid "Dynamic Range"
msgstr ""
-#: scene/3d/gi_probe.cpp
+#: scene/3d/gi_probe.cpp scene/3d/light.cpp
msgid "Normal Bias"
msgstr ""
#: scene/3d/gi_probe.cpp
-msgid "Compress"
-msgstr ""
-
-#: scene/3d/gi_probe.cpp
msgid "Plotting Meshes"
msgstr ""
@@ -19539,15 +20851,27 @@ msgid "Subdiv"
msgstr ""
#: scene/3d/light.cpp
+msgid "Indirect Energy"
+msgstr ""
+
+#: scene/3d/light.cpp
msgid "Negative"
msgstr ""
#: scene/3d/light.cpp
+msgid "Specular"
+msgstr ""
+
+#: scene/3d/light.cpp
#, fuzzy
msgid "Bake Mode"
msgstr "அசைவூடà¯à®Ÿà¯ போலிபசà¯à®šà®¾à®µà®¿à®•ளà¯"
#: scene/3d/light.cpp
+msgid "Contact"
+msgstr ""
+
+#: scene/3d/light.cpp
msgid "Reverse Cull Face"
msgstr ""
@@ -19556,10 +20880,29 @@ msgid "Directional Shadow"
msgstr ""
#: scene/3d/light.cpp
+#, fuzzy
+msgid "Split 1"
+msgstr "கண௠வளைவை[Node Curve] திரà¯à®¤à¯à®¤à¯"
+
+#: scene/3d/light.cpp
+#, fuzzy
+msgid "Split 2"
+msgstr "கண௠வளைவை[Node Curve] திரà¯à®¤à¯à®¤à¯"
+
+#: scene/3d/light.cpp
+#, fuzzy
+msgid "Split 3"
+msgstr "கண௠வளைவை[Node Curve] திரà¯à®¤à¯à®¤à¯"
+
+#: scene/3d/light.cpp
msgid "Blend Splits"
msgstr ""
#: scene/3d/light.cpp
+msgid "Bias Split Scale"
+msgstr ""
+
+#: scene/3d/light.cpp
msgid "Depth Range"
msgstr ""
@@ -19584,6 +20927,11 @@ msgstr ""
msgid "Spot"
msgstr ""
+#: scene/3d/light.cpp
+#, fuzzy
+msgid "Angle Attenuation"
+msgstr "மாறà¯à®±à®™à¯à®•ளை இதறà¯à®•௠அமை:"
+
#: scene/3d/mesh_instance.cpp
msgid "Software Skinning"
msgstr ""
@@ -19700,6 +21048,60 @@ msgid "Axis Lock"
msgstr ""
#: scene/3d/physics_body.cpp
+msgid "Linear X"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Linear Y"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Linear Z"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Angular X"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Angular Y"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Angular Z"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Motion X"
+msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Motion Y"
+msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Motion Z"
+msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Move Lock X"
+msgstr "சேர௠மà¯à®•à¯à®•ியபà¯à®ªà¯à®³à¯à®³à®¿à®¯à¯ˆ நகரà¯à®¤à¯à®¤à¯"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Move Lock Y"
+msgstr "சேர௠மà¯à®•à¯à®•ியபà¯à®ªà¯à®³à¯à®³à®¿à®¯à¯ˆ நகரà¯à®¤à¯à®¤à¯"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Move Lock Z"
+msgstr "சேர௠மà¯à®•à¯à®•ியபà¯à®ªà¯à®³à¯à®³à®¿à®¯à¯ˆ நகரà¯à®¤à¯à®¤à¯"
+
+#: scene/3d/physics_body.cpp
msgid "Body Offset"
msgstr ""
@@ -19733,6 +21135,14 @@ msgid "Exclude Nodes"
msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
#: scene/3d/physics_joint.cpp
+msgid "Params"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Impulse Clamp"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit"
msgstr ""
@@ -19744,6 +21154,50 @@ msgstr ""
msgid "Lower"
msgstr ""
+#: scene/3d/physics_joint.cpp scene/3d/vehicle_body.cpp
+#, fuzzy
+msgid "Relaxation"
+msgstr "மாறà¯à®±à®™à¯à®•ளை இதறà¯à®•௠அமை:"
+
+#: scene/3d/physics_joint.cpp
+msgid "Motor"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Target Velocity"
+msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
+
+#: scene/3d/physics_joint.cpp
+msgid "Max Impulse"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Linear Limit"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Upper Distance"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Lower Distance"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Restitution"
+msgstr "மாறà¯à®±à®™à¯à®•ளை இதறà¯à®•௠அமை:"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motion"
+msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
+
+#: scene/3d/physics_joint.cpp
+msgid "Linear Ortho"
+msgstr ""
+
#: scene/3d/physics_joint.cpp
msgid "Upper Angle"
msgstr ""
@@ -19753,6 +21207,15 @@ msgid "Lower Angle"
msgstr ""
#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Angular Motion"
+msgstr "மாறà¯à®±à®™à¯à®•ளை இதறà¯à®•௠அமை:"
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Ortho"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
msgid "Swing Span"
msgstr ""
@@ -19761,17 +21224,89 @@ msgid "Twist Span"
msgstr ""
#: scene/3d/physics_joint.cpp
+msgid "Linear Limit X"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Linear Motor X"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Force Limit"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Linear Spring X"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Equilibrium Point"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit X"
msgstr ""
#: scene/3d/physics_joint.cpp
+msgid "Erp"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Motor X"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Spring X"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Linear Limit Y"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Linear Motor Y"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Linear Spring Y"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit Y"
msgstr ""
#: scene/3d/physics_joint.cpp
+msgid "Angular Motor Y"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Spring Y"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Linear Limit Z"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Linear Motor Z"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Linear Spring Z"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit Z"
msgstr ""
+#: scene/3d/physics_joint.cpp
+msgid "Angular Motor Z"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Spring Z"
+msgstr ""
+
#: scene/3d/portal.cpp
msgid "The RoomManager should not be a child or grandchild of a Portal."
msgstr ""
@@ -19879,7 +21414,7 @@ msgstr ""
msgid "Use Default Simplify"
msgstr ""
-#: scene/3d/room.cpp
+#: scene/3d/room.cpp scene/3d/room_manager.cpp
msgid "Room Simplify"
msgstr ""
@@ -19917,6 +21452,13 @@ msgstr ""
msgid "Main"
msgstr ""
+#: scene/3d/room_manager.cpp scene/animation/animation_player.cpp
+#: scene/animation/animation_tree.cpp scene/animation/animation_tree_player.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+#, fuzzy
+msgid "Active"
+msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
+
#: scene/3d/room_manager.cpp
msgid "Roomlist"
msgstr ""
@@ -19938,6 +21480,48 @@ msgid "Gameplay"
msgstr ""
#: scene/3d/room_manager.cpp
+msgid "Gameplay Monitor"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "Use Secondary PVS"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "Merge Meshes"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "Show Margins"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "Debug Sprawl"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "Overlap Warning Threshold"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Preview Camera"
+msgstr "அசைவூடà¯à®Ÿà¯ பாதை சேரà¯"
+
+#: scene/3d/room_manager.cpp
+msgid "Portal Depth Limit"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Default Portal Margin"
+msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
+
+#: scene/3d/room_manager.cpp
+msgid "Roaming Expansion Margin"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
msgid ""
"RoomList path is invalid.\n"
"Please check the RoomList branch has been assigned in the RoomManager."
@@ -20056,6 +21640,19 @@ msgstr ""
msgid "Billboard"
msgstr ""
+#: scene/3d/sprite_3d.cpp scene/resources/material.cpp
+#, fuzzy
+msgid "Transparent"
+msgstr "மாறà¯à®±à®™à¯à®•ளை இதறà¯à®•௠அமை:"
+
+#: scene/3d/sprite_3d.cpp
+msgid "Shaded"
+msgstr ""
+
+#: scene/3d/sprite_3d.cpp
+msgid "Double Sided"
+msgstr ""
+
#: scene/3d/sprite_3d.cpp
msgid "Alpha Cut"
msgstr ""
@@ -20122,11 +21719,6 @@ msgstr ""
msgid "Max Force"
msgstr ""
-#: scene/3d/vehicle_body.cpp
-#, fuzzy
-msgid "Relaxation"
-msgstr "மாறà¯à®±à®™à¯à®•ளை இதறà¯à®•௠அமை:"
-
#: scene/3d/visibility_notifier.cpp
msgid "AABB"
msgstr ""
@@ -20250,7 +21842,7 @@ msgid "Fadeout Time"
msgstr ""
#: scene/animation/animation_blend_tree.cpp
-msgid "autorestart_"
+msgid "Auto Restart"
msgstr ""
#: scene/animation/animation_blend_tree.cpp
@@ -20329,13 +21921,6 @@ msgstr ""
msgid "Default Blend Time"
msgstr ""
-#: scene/animation/animation_player.cpp scene/animation/animation_tree.cpp
-#: scene/animation/animation_tree_player.cpp
-#: servers/audio/effects/audio_effect_delay.cpp
-#, fuzzy
-msgid "Active"
-msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
-
#: scene/animation/animation_player.cpp
msgid "Method Call Mode"
msgstr ""
@@ -20449,10 +22034,6 @@ msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
msgid "Max Iterations"
msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
-#: scene/animation/tween.cpp scene/resources/texture.cpp
-msgid "Repeat"
-msgstr ""
-
#: scene/animation/tween.cpp
msgid "Playback Process Mode"
msgstr ""
@@ -20479,19 +22060,6 @@ msgstr ""
msgid "Alignment"
msgstr ""
-#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
-#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
-#: scene/resources/style_box.cpp
-#, fuzzy
-msgid "Horizontal"
-msgstr "அசைவூடà¯à®Ÿà¯ பாதையை நீகà¯à®•à¯"
-
-#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
-#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
-#: scene/resources/style_box.cpp
-msgid "Vertical"
-msgstr ""
-
#: scene/gui/base_button.cpp
msgid "Shortcut In Tooltip"
msgstr ""
@@ -20581,10 +22149,6 @@ msgid "HSV"
msgstr ""
#: scene/gui/color_picker.cpp
-msgid "Raw"
-msgstr ""
-
-#: scene/gui/color_picker.cpp
msgid "Switch between hexadecimal and code values."
msgstr ""
@@ -20638,6 +22202,30 @@ msgid "Focus"
msgstr ""
#: scene/gui/control.cpp
+msgid "Neighbour Left"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Neighbour Top"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Neighbour Right"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Neighbour Bottom"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Next"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Previous"
+msgstr ""
+
+#: scene/gui/control.cpp
msgid "Mouse"
msgstr ""
@@ -20671,7 +22259,7 @@ msgid "Dialog"
msgstr ""
#: scene/gui/dialogs.cpp
-msgid "Hide On Ok"
+msgid "Hide On OK"
msgstr ""
#: scene/gui/dialogs.cpp scene/gui/label.cpp
@@ -20759,7 +22347,7 @@ msgid "Timers"
msgstr ""
#: scene/gui/item_list.cpp scene/gui/popup_menu.cpp scene/gui/tree.cpp
-msgid "Incremental Search Max Interval (msec)"
+msgid "Incremental Search Max Interval Msec"
msgstr ""
#: scene/gui/item_list.cpp scene/gui/tree.cpp
@@ -21273,6 +22861,26 @@ msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
msgid "Nine Patch Stretch"
msgstr ""
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Left"
+msgstr "மாறà¯à®±à®™à¯à®•ளை இதறà¯à®•௠அமை:"
+
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Top"
+msgstr "மாறà¯à®±à®™à¯à®•ளை இதறà¯à®•௠அமை:"
+
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Right"
+msgstr "மாறà¯à®±à®™à¯à®•ளை இதறà¯à®•௠அமை:"
+
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Bottom"
+msgstr "மாறà¯à®±à®™à¯à®•ளை இதறà¯à®•௠அமை:"
+
#: scene/gui/tree.cpp
msgid "Custom Minimum Height"
msgstr ""
@@ -21308,7 +22916,7 @@ msgid "Paused"
msgstr ""
#: scene/gui/video_player.cpp
-msgid "Buffering (msec)"
+msgid "Buffering Msec"
msgstr ""
#: scene/gui/video_player.cpp
@@ -21620,6 +23228,22 @@ msgid "Shadow Atlas"
msgstr ""
#: scene/main/viewport.cpp
+msgid "Quad 0"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 1"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 2"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 3"
+msgstr ""
+
+#: scene/main/viewport.cpp
#, fuzzy
msgid "Canvas Transform"
msgstr "உரà¯à®®à®¾à®±à¯à®±à®®à¯ அசைவூடà¯à®Ÿà¯"
@@ -21634,6 +23258,10 @@ msgid "Tooltip Delay (sec)"
msgstr ""
#: scene/register_scene_types.cpp
+msgid "Swap OK Cancel"
+msgstr ""
+
+#: scene/register_scene_types.cpp
msgid "Use hiDPI"
msgstr ""
@@ -21648,18 +23276,6 @@ msgid "Custom Font"
msgstr "அசைவூடà¯à®Ÿà¯ போலிபசà¯à®šà®¾à®µà®¿à®•ளà¯"
#: scene/resources/audio_stream_sample.cpp
-msgid "Loop Mode"
-msgstr ""
-
-#: scene/resources/audio_stream_sample.cpp
-msgid "Loop Begin"
-msgstr ""
-
-#: scene/resources/audio_stream_sample.cpp
-msgid "Loop End"
-msgstr ""
-
-#: scene/resources/audio_stream_sample.cpp
#: servers/audio/effects/audio_stream_generator.cpp servers/audio_server.cpp
msgid "Mix Rate"
msgstr ""
@@ -21711,6 +23327,15 @@ msgid "Extra Spacing"
msgstr ""
#: scene/resources/dynamic_font.cpp
+msgid "Char"
+msgstr ""
+
+#: scene/resources/dynamic_font.cpp scene/resources/world.cpp
+#: scene/resources/world_2d.cpp
+msgid "Space"
+msgstr ""
+
+#: scene/resources/dynamic_font.cpp
msgid "Font"
msgstr ""
@@ -21917,6 +23542,42 @@ msgid "Glow"
msgstr ""
#: scene/resources/environment.cpp
+msgid "Levels"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "1"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "2"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "3"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "4"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "5"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "6"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "7"
+msgstr ""
+
+#: scene/resources/environment.cpp
msgid "Bloom"
msgstr ""
@@ -22001,9 +23662,64 @@ msgid "Next Pass"
msgstr "சேர௠மà¯à®•à¯à®•ியபà¯à®ªà¯à®³à¯à®³à®¿à®¯à¯ˆ நகரà¯à®¤à¯à®¤à¯"
#: scene/resources/material.cpp
+msgid "Use Shadow To Opacity"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Unshaded"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Vertex Lighting"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "No Depth Test"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Use Point Size"
+msgstr "அசைவூடà¯à®Ÿà¯ பாதை சேரà¯"
+
+#: scene/resources/material.cpp
+msgid "World Triplanar"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Fixed Size"
+msgstr "அசைவூடà¯à®Ÿà¯ பாதை சேரà¯"
+
+#: scene/resources/material.cpp
+msgid "Albedo Tex Force sRGB"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Do Not Receive Shadows"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Disable Ambient Light"
+msgstr "à®®à¯à®Ÿà®•à¯à®•பà¯à®ªà®Ÿà¯à®Ÿà®¤à¯"
+
+#: scene/resources/material.cpp
+msgid "Ensure Correct Normals"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Vertex Color"
msgstr ""
+#: scene/resources/material.cpp
+msgid "Use As Albedo"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Is sRGB"
+msgstr ""
+
#: scene/resources/material.cpp servers/visual_server.cpp
msgid "Parameters"
msgstr ""
@@ -22036,6 +23752,11 @@ msgid "Billboard Mode"
msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Billboard Keep Scale"
+msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
+
+#: scene/resources/material.cpp
msgid "Grow"
msgstr ""
@@ -22045,6 +23766,10 @@ msgid "Grow Amount"
msgstr "அசைவூடà¯à®Ÿà¯ பாதையை நீகà¯à®•à¯"
#: scene/resources/material.cpp
+msgid "Use Alpha Scissor"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Alpha Scissor Threshold"
msgstr ""
@@ -22075,10 +23800,20 @@ msgid "Metallic Specular"
msgstr ""
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Metallic Texture"
+msgstr "தேரà¯à®µà¯ வளைவை [Selection Curve] திரà¯à®¤à¯à®¤à¯"
+
+#: scene/resources/material.cpp
msgid "Metallic Texture Channel"
msgstr ""
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Roughness Texture"
+msgstr "தேரà¯à®µà¯ வளைவை [Selection Curve] திரà¯à®¤à¯à®¤à¯"
+
+#: scene/resources/material.cpp
msgid "Roughness Texture Channel"
msgstr ""
@@ -22095,6 +23830,15 @@ msgid "Emission Operator"
msgstr ""
#: scene/resources/material.cpp
+msgid "Emission On UV2"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Emission Texture"
+msgstr "தேரà¯à®µà¯ வளைவை [Selection Curve] திரà¯à®¤à¯à®¤à¯"
+
+#: scene/resources/material.cpp
msgid "NormalMap"
msgstr ""
@@ -22108,6 +23852,11 @@ msgstr ""
#: scene/resources/material.cpp
#, fuzzy
+msgid "Rim Texture"
+msgstr "தேரà¯à®µà¯ வளைவை [Selection Curve] திரà¯à®¤à¯à®¤à¯"
+
+#: scene/resources/material.cpp
+#, fuzzy
msgid "Clearcoat"
msgstr "உரà¯à®®à®¾à®±à¯à®±à®®à¯ அசைவூடà¯à®Ÿà¯"
@@ -22117,14 +23866,27 @@ msgid "Clearcoat Gloss"
msgstr "உரà¯à®®à®¾à®±à¯à®±à®®à¯ அசைவூடà¯à®Ÿà¯"
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Clearcoat Texture"
+msgstr "தேரà¯à®µà¯ வளைவை [Selection Curve] திரà¯à®¤à¯à®¤à¯"
+
+#: scene/resources/material.cpp
msgid "Anisotropy"
msgstr ""
#: scene/resources/material.cpp
+msgid "Anisotropy Flowmap"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Ambient Occlusion"
msgstr ""
#: scene/resources/material.cpp
+msgid "On UV2"
+msgstr ""
+
+#: scene/resources/material.cpp
#, fuzzy
msgid "Texture Channel"
msgstr "à®®à¯à®Ÿà®•à¯à®•பà¯à®ªà®Ÿà¯à®Ÿà®¤à¯"
@@ -22160,6 +23922,11 @@ msgstr "மாறà¯à®±à®™à¯à®•ளை இதறà¯à®•௠அமை:"
#: scene/resources/material.cpp
#, fuzzy
+msgid "Transmission Texture"
+msgstr "மாறà¯à®±à®™à¯à®•ளை இதறà¯à®•௠அமை:"
+
+#: scene/resources/material.cpp
+#, fuzzy
msgid "Refraction"
msgstr "மாறà¯à®±à®™à¯à®•ளை இதறà¯à®•௠அமை:"
@@ -22176,6 +23943,10 @@ msgid "UV1"
msgstr ""
#: scene/resources/material.cpp
+msgid "Triplanar"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Triplanar Sharpness"
msgstr ""
@@ -22368,6 +24139,15 @@ msgstr "தேரà¯à®µà¯ வளைவை [Selection Curve] திரà¯à®¤à¯à
msgid "Point Count"
msgstr "மாறà¯à®±à®™à¯à®•ளை இதறà¯à®•௠அமை:"
+#: scene/resources/particles_material.cpp
+msgid "Scale Random"
+msgstr ""
+
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Scale Curve"
+msgstr "கண௠வளைவை[Node Curve] திரà¯à®¤à¯à®¤à¯"
+
#: scene/resources/physics_material.cpp
msgid "Rough"
msgstr ""
@@ -22425,10 +24205,6 @@ msgid "A"
msgstr ""
#: scene/resources/shader.cpp
-msgid "Code"
-msgstr ""
-
-#: scene/resources/shader.cpp
msgid "Custom Defines"
msgstr ""
@@ -22517,14 +24293,6 @@ msgid "Grow End"
msgstr ""
#: scene/resources/texture.cpp
-msgid "Storage"
-msgstr ""
-
-#: scene/resources/texture.cpp
-msgid "Lossy Quality"
-msgstr ""
-
-#: scene/resources/texture.cpp
msgid "Load Path"
msgstr ""
@@ -22637,10 +24405,6 @@ msgstr ""
msgid "Fallback Environment"
msgstr ""
-#: scene/resources/world.cpp scene/resources/world_2d.cpp
-msgid "Space"
-msgstr ""
-
#: scene/resources/world.cpp
msgid "Scenario"
msgstr ""
@@ -22714,8 +24478,33 @@ msgstr ""
msgid "Wet"
msgstr ""
-#: servers/audio/effects/audio_effect_compressor.cpp
-msgid "Threshold"
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "Voice"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+msgid "Delay (ms)"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_phaser.cpp
+msgid "Rate Hz"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "Depth (ms)"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+msgid "Level dB"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+#: servers/audio/effects/audio_effect_panner.cpp
+msgid "Pan"
msgstr ""
#: servers/audio/effects/audio_effect_compressor.cpp
@@ -22740,19 +24529,6 @@ msgid "Tap 1"
msgstr ""
#: servers/audio/effects/audio_effect_delay.cpp
-msgid "Delay (ms)"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_delay.cpp
-msgid "Level dB"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_delay.cpp
-#: servers/audio/effects/audio_effect_panner.cpp
-msgid "Pan"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_delay.cpp
msgid "Tap 2"
msgstr ""
@@ -22810,10 +24586,6 @@ msgstr ""
msgid "Range Max Hz"
msgstr ""
-#: servers/audio/effects/audio_effect_phaser.cpp
-msgid "Rate Hz"
-msgstr ""
-
#: servers/audio/effects/audio_effect_pitch_shift.cpp
msgid "Oversampling"
msgstr ""
@@ -22828,7 +24600,7 @@ msgid "Predelay"
msgstr ""
#: servers/audio/effects/audio_effect_reverb.cpp
-msgid "(msec)"
+msgid "Msec"
msgstr ""
#: servers/audio/effects/audio_effect_reverb.cpp
diff --git a/editor/translations/te.po b/editor/translations/te.po
index 42002085e8..e8b53c86b4 100644
--- a/editor/translations/te.po
+++ b/editor/translations/te.po
@@ -18,7 +18,7 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 4.10.1\n"
-#: core/bind/core_bind.cpp
+#: core/bind/core_bind.cpp main/main.cpp
msgid "Tablet Driver"
msgstr ""
@@ -109,8 +109,8 @@ msgstr ""
#: core/bind/core_bind.cpp editor/editor_settings.cpp main/main.cpp
#: modules/gdscript/gdscript_editor.cpp modules/gridmap/grid_map.cpp
#: modules/mono/csharp_script.cpp modules/visual_script/visual_script_nodes.cpp
-#: scene/2d/tile_map.cpp scene/3d/camera.cpp scene/gui/control.cpp
-#: scene/gui/graph_edit.cpp scene/main/viewport.cpp
+#: scene/2d/tile_map.cpp scene/3d/camera.cpp scene/3d/light.cpp
+#: scene/gui/control.cpp scene/gui/graph_edit.cpp scene/main/viewport.cpp
#: scene/resources/dynamic_font.cpp scene/resources/navigation_mesh.cpp
#: scene/resources/primitive_meshes.cpp scene/resources/sky.cpp
#: scene/resources/style_box.cpp scene/resources/texture.cpp
@@ -203,8 +203,7 @@ msgid "Data"
msgstr ""
#: core/io/file_access_network.cpp core/register_core_types.cpp
-#: editor/editor_settings.cpp editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp main/main.cpp
+#: editor/editor_settings.cpp main/main.cpp
#: modules/gdscript/language_server/gdscript_language_server.cpp
msgid "Network"
msgstr ""
@@ -466,9 +465,10 @@ msgstr ""
msgid "Relative"
msgstr ""
-#: core/os/input_event.cpp scene/2d/camera_2d.cpp
-#: scene/3d/interpolated_camera.cpp scene/animation/animation_player.cpp
-#: scene/resources/environment.cpp
+#: core/os/input_event.cpp scene/2d/camera_2d.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/interpolated_camera.cpp
+#: scene/animation/animation_player.cpp scene/resources/environment.cpp
+#: scene/resources/particles_material.cpp
msgid "Speed"
msgstr ""
@@ -513,8 +513,9 @@ msgstr "సంఘం"
msgid "Pitch"
msgstr ""
-#: core/os/input_event.cpp scene/2d/physics_body_2d.cpp
-#: scene/3d/physics_body.cpp
+#: core/os/input_event.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/physics_body_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/3d/physics_body.cpp scene/resources/particles_material.cpp
msgid "Velocity"
msgstr ""
@@ -531,6 +532,8 @@ msgid "Controller Value"
msgstr ""
#: core/project_settings.cpp editor/editor_node.cpp main/main.cpp
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/windows/export/export.cpp
msgid "Application"
msgstr ""
@@ -546,13 +549,16 @@ msgstr ""
#: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp
#: editor/editor_plugin_settings.cpp editor/editor_profiler.cpp
#: editor/project_manager.cpp editor/settings_config_dialog.cpp
-#: modules/gdnative/nativescript/nativescript.cpp scene/2d/area_2d.cpp
-#: scene/3d/area.cpp scene/main/node.cpp
+#: modules/gdnative/nativescript/nativescript.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/osx/export/export.cpp scene/2d/area_2d.cpp scene/3d/area.cpp
+#: scene/main/node.cpp
msgid "Name"
msgstr ""
#: core/project_settings.cpp editor/editor_help.cpp
-#: modules/visual_script/visual_script_nodes.cpp
+#: modules/visual_script/visual_script_nodes.cpp platform/uwp/export/export.cpp
+#: platform/windows/export/export.cpp
msgid "Description"
msgstr ""
@@ -588,7 +594,7 @@ msgid "Custom User Dir Name"
msgstr ""
#: core/project_settings.cpp editor/animation_track_editor.cpp
-#: editor/editor_audio_buses.cpp servers/audio_server.cpp
+#: editor/editor_audio_buses.cpp main/main.cpp servers/audio_server.cpp
msgid "Audio"
msgstr ""
@@ -739,10 +745,13 @@ msgstr ""
msgid "Sharpen Intensity"
msgstr ""
-#: core/project_settings.cpp editor/editor_node.cpp editor/editor_settings.cpp
-#: editor/plugins/script_editor_plugin.cpp editor/project_export.cpp
-#: main/main.cpp modules/gdscript/gdscript.cpp
-#: modules/visual_script/visual_script.cpp scene/3d/room_manager.cpp
+#: core/project_settings.cpp editor/editor_export.cpp editor/editor_node.cpp
+#: editor/editor_settings.cpp editor/plugins/script_editor_plugin.cpp
+#: editor/project_export.cpp main/main.cpp modules/gdscript/gdscript.cpp
+#: modules/visual_script/visual_script.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp scene/3d/room_manager.cpp
#: scene/main/scene_tree.cpp scene/resources/shape_2d.cpp
#: servers/visual_server.cpp
msgid "Debug"
@@ -965,6 +974,7 @@ msgid "Subsurface Scattering"
msgstr ""
#: drivers/gles3/rasterizer_scene_gles3.cpp
+#: editor/import/resource_importer_texture.cpp
#: editor/plugins/spatial_editor_plugin.cpp modules/gltf/gltf_node.cpp
#: modules/gridmap/grid_map.cpp scene/2d/cpu_particles_2d.cpp
#: scene/2d/node_2d.cpp scene/2d/parallax_layer.cpp scene/2d/polygon_2d.cpp
@@ -1260,6 +1270,7 @@ msgid "Editors"
msgstr ""
#: editor/animation_track_editor.cpp editor/editor_settings.cpp
+#: editor/import/resource_importer_scene.cpp
#: editor/plugins/animation_player_editor_plugin.cpp editor/scene_tree_dock.cpp
#: scene/2d/animated_sprite.cpp scene/2d/cpu_particles_2d.cpp
#: scene/2d/sprite.cpp scene/3d/cpu_particles.cpp scene/3d/sprite_3d.cpp
@@ -1476,14 +1487,14 @@ msgstr ""
msgid "Seconds"
msgstr ""
-#: editor/animation_track_editor.cpp
+#: editor/animation_track_editor.cpp editor/import/resource_importer_scene.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp main/main.cpp
#: scene/resources/texture.cpp
msgid "FPS"
msgstr ""
#: editor/animation_track_editor.cpp editor/editor_plugin_settings.cpp
-#: editor/editor_resource_picker.cpp
+#: editor/editor_resource_picker.cpp editor/import/resource_importer_wav.cpp
#: editor/plugins/polygon_2d_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
@@ -2425,7 +2436,9 @@ msgid "Remove Autoload"
msgstr ""
#: editor/editor_autoload_settings.cpp editor/editor_plugin_settings.cpp
-#: modules/gdscript/gdscript.cpp scene/2d/polygon_2d.cpp scene/3d/area.cpp
+#: modules/gdscript/gdscript.cpp platform/android/export/export_plugin.cpp
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#: scene/2d/polygon_2d.cpp scene/3d/area.cpp scene/3d/physics_joint.cpp
#: scene/3d/reflection_probe.cpp scene/main/canvas_layer.cpp
#: scene/resources/material.cpp servers/visual_server.cpp
msgid "Enable"
@@ -2578,6 +2591,55 @@ msgstr ""
#: editor/editor_export.cpp platform/android/export/export_plugin.cpp
#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
+msgid "Custom Template"
+msgstr ""
+
+#: editor/editor_export.cpp editor/project_export.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp
+msgid "Release"
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Binary Format"
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "64 Bits"
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Embed PCK"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "Texture Format"
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "BPTC"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "S3TC"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "ETC"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "ETC2"
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "No BPTC Fallbacks"
+msgstr ""
+
+#: editor/editor_export.cpp platform/android/export/export_plugin.cpp
+#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
msgid "Custom debug template not found."
msgstr ""
@@ -2751,6 +2813,7 @@ msgid "Make Current"
msgstr ""
#: editor/editor_feature_profile.cpp editor/editor_node.cpp
+#: editor/import/resource_importer_scene.cpp
#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
msgid "Import"
msgstr "దిగà±à°®à°¤à°¿"
@@ -2875,8 +2938,11 @@ msgstr ""
msgid "Display Mode"
msgstr ""
-#: editor/editor_file_dialog.cpp main/main.cpp modules/csg/csg_shape.cpp
-#: modules/visual_script/visual_script_nodes.cpp
+#: editor/editor_file_dialog.cpp
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+#: editor/import/resource_importer_wav.cpp main/main.cpp
+#: modules/csg/csg_shape.cpp modules/visual_script/visual_script_nodes.cpp
#: modules/visual_script/visual_script_yield_nodes.cpp scene/2d/light_2d.cpp
#: scene/2d/physics_body_2d.cpp scene/2d/tile_map.cpp
#: scene/3d/baked_lightmap.cpp scene/3d/light.cpp scene/3d/physics_body.cpp
@@ -3008,7 +3074,9 @@ msgstr ""
msgid "Reimport Missing Imported Files"
msgstr ""
-#: editor/editor_help.cpp
+#: editor/editor_help.cpp scene/2d/camera_2d.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/resources/dynamic_font.cpp
+#: scene/resources/style_box.cpp
msgid "Top"
msgstr ""
@@ -3060,6 +3128,7 @@ msgid "Fonts"
msgstr ""
#: editor/editor_help.cpp editor/plugins/theme_editor_plugin.cpp
+#: platform/iphone/export/export.cpp
msgid "Icons"
msgstr ""
@@ -3218,7 +3287,9 @@ msgstr ""
msgid "Pin value [Disabled because '%s' is editor-only]"
msgstr ""
-#: editor/editor_inspector.cpp editor/scene_tree_dock.cpp
+#: editor/editor_inspector.cpp
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+#: editor/scene_tree_dock.cpp
#: modules/visual_script/visual_script_func_nodes.cpp
#: modules/visual_script/visual_script_nodes.cpp
#: modules/visual_script/visual_script_property_selector.cpp
@@ -3529,6 +3600,14 @@ msgid "Quick Open Script..."
msgstr ""
#: editor/editor_node.cpp
+msgid "Save & Reload"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Save changes to '%s' before reloading?"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "Save & Close"
msgstr ""
@@ -3639,6 +3718,10 @@ msgid "Open Project Manager?"
msgstr ""
#: editor/editor_node.cpp
+msgid "Save changes to the following scene(s) before reloading?"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "Save & Quit"
msgstr ""
@@ -3878,7 +3961,7 @@ msgid "Update Vital Only"
msgstr ""
#: editor/editor_node.cpp
-msgid "Translate Properties"
+msgid "Localize Settings"
msgstr ""
#: editor/editor_node.cpp
@@ -3894,7 +3977,7 @@ msgid "Inspector"
msgstr ""
#: editor/editor_node.cpp
-msgid "Capitalize Properties"
+msgid "Default Property Name Style"
msgstr ""
#: editor/editor_node.cpp
@@ -4454,7 +4537,9 @@ msgstr ""
msgid "Update"
msgstr ""
-#: editor/editor_plugin_settings.cpp
+#: editor/editor_plugin_settings.cpp platform/android/export/export_plugin.cpp
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp
msgid "Version"
msgstr ""
@@ -5390,7 +5475,7 @@ msgstr ""
msgid "Rect Custom Position"
msgstr ""
-#: editor/editor_settings.cpp
+#: editor/editor_settings.cpp platform/android/export/export_plugin.cpp
msgid "Screen"
msgstr ""
@@ -5413,6 +5498,19 @@ msgid "Editor SSL Certificates"
msgstr ""
#: editor/editor_settings.cpp
+msgid "HTTP Proxy"
+msgstr ""
+
+#: editor/editor_settings.cpp
+msgid "Host"
+msgstr ""
+
+#: editor/editor_settings.cpp editor/fileserver/editor_file_server.cpp
+#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp
+msgid "Port"
+msgstr ""
+
+#: editor/editor_settings.cpp
msgid "Project Manager"
msgstr ""
@@ -5452,7 +5550,8 @@ msgstr ""
msgid "String Color"
msgstr ""
-#: editor/editor_settings.cpp
+#: editor/editor_settings.cpp platform/javascript/export/export.cpp
+#: platform/uwp/export/export.cpp
msgid "Background Color"
msgstr ""
@@ -5611,22 +5710,6 @@ msgid "Starting the download..."
msgstr ""
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "HTTP Proxy"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Host"
-msgstr ""
-
-#: editor/export_template_manager.cpp editor/fileserver/editor_file_server.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp main/main.cpp
-#: modules/mono/mono_gd/gd_mono.cpp
-msgid "Port"
-msgstr ""
-
-#: editor/export_template_manager.cpp
msgid "Error requesting URL:"
msgstr ""
@@ -5868,6 +5951,7 @@ msgstr ""
#: editor/fileserver/editor_file_server.cpp
#: editor/plugins/version_control_editor_plugin.cpp
+#: platform/uwp/export/export.cpp platform/windows/export/export.cpp
msgid "Password"
msgstr ""
@@ -6231,6 +6315,106 @@ msgstr ""
msgid "Use Ambient"
msgstr ""
+#: editor/import/resource_importer_bitmask.cpp
+msgid "Create From"
+msgstr ""
+
+#: editor/import/resource_importer_bitmask.cpp
+#: servers/audio/effects/audio_effect_compressor.cpp
+msgid "Threshold"
+msgstr ""
+
+#: editor/import/resource_importer_csv_translation.cpp
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_scene.cpp
+#: editor/import/resource_importer_texture.cpp
+#: editor/import/resource_importer_wav.cpp scene/3d/gi_probe.cpp
+msgid "Compress"
+msgstr ""
+
+#: editor/import/resource_importer_csv_translation.cpp
+msgid "Delimiter"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+msgid "No BPTC If RGB"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/sprite_3d.cpp
+#: scene/resources/material.cpp scene/resources/particles_material.cpp
+#: scene/resources/texture.cpp
+msgid "Flags"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/animation/tween.cpp
+#: scene/resources/texture.cpp
+msgid "Repeat"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/2d/light_2d.cpp
+#: scene/gui/control.cpp scene/resources/navigation_mesh.cpp
+msgid "Filter"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Mipmaps"
+msgstr "సంకేతాలà±"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+msgid "Anisotropic"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+msgid "sRGB"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+msgid "Slices"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
+#: scene/resources/style_box.cpp
+msgid "Horizontal"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
+#: scene/resources/style_box.cpp
+msgid "Vertical"
+msgstr ""
+
+#: editor/import/resource_importer_obj.cpp
+msgid "Generate Tangents"
+msgstr ""
+
+#: editor/import/resource_importer_obj.cpp
+msgid "Scale Mesh"
+msgstr ""
+
+#: editor/import/resource_importer_obj.cpp
+msgid "Offset Mesh"
+msgstr ""
+
+#: editor/import/resource_importer_obj.cpp
+#: editor/import/resource_importer_scene.cpp
+msgid "Octahedral Compression"
+msgstr ""
+
+#: editor/import/resource_importer_obj.cpp
+msgid "Optimize Mesh Flags"
+msgstr ""
+
#: editor/import/resource_importer_scene.cpp
msgid "Import as Single Scene"
msgstr ""
@@ -6271,6 +6455,137 @@ msgstr ""
msgid "Import as Multiple Scenes+Materials"
msgstr ""
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Nodes"
+msgstr "నోడà±"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Root Type"
+msgstr "నోడà±"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Root Name"
+msgstr "నోడà±"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Root Scale"
+msgstr "నోడà±"
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Custom Script"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp scene/resources/texture.cpp
+msgid "Storage"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Use Legacy Names"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+msgid "Materials"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Location"
+msgstr "à°¸à±à°¥à°¿à°°à°¾à°‚కాలà±"
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Keep On Reimport"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+msgid "Meshes"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Ensure Tangents"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Light Baking"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Lightmap Texel Size"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+msgid "Skins"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Use Named Skins"
+msgstr "సంకేతాలà±"
+
+#: editor/import/resource_importer_scene.cpp
+msgid "External Files"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Store In Subdir"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Filter Script"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Keep Custom Tracks"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Optimizer"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp main/main.cpp
+#: modules/mono/mono_gd/gd_mono.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp scene/2d/camera_2d.cpp scene/2d/light_2d.cpp
+#: scene/2d/navigation_polygon.cpp scene/2d/ray_cast_2d.cpp scene/2d/sprite.cpp
+#: scene/2d/y_sort.cpp scene/3d/audio_stream_player_3d.cpp
+#: scene/3d/baked_lightmap.cpp scene/3d/interpolated_camera.cpp
+#: scene/3d/light.cpp scene/3d/navigation_mesh_instance.cpp
+#: scene/3d/physics_joint.cpp scene/3d/ray_cast.cpp scene/3d/sprite_3d.cpp
+#: scene/gui/graph_edit.cpp scene/gui/rich_text_label.cpp
+#: scene/resources/curve.cpp scene/resources/environment.cpp
+#: scene/resources/material.cpp
+msgid "Enabled"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Max Linear Error"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Max Angular Error"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Max Angle"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Remove Unused Tracks"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Clips"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/particles_2d.cpp scene/3d/area.cpp scene/3d/cpu_particles.cpp
+#: scene/3d/particles.cpp scene/resources/environment.cpp
+msgid "Amount"
+msgstr ""
+
#: editor/import/resource_importer_scene.cpp
#: editor/plugins/mesh_library_editor_plugin.cpp
msgid "Import Scene"
@@ -6312,12 +6627,133 @@ msgstr ""
msgid "Saving..."
msgstr ""
+#: editor/import/resource_importer_texture.cpp scene/resources/texture.cpp
+msgid "Lossy Quality"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "HDR Mode"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "BPTC LDR"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/mesh_instance_2d.cpp scene/2d/multimesh_instance_2d.cpp
+#: scene/2d/particles_2d.cpp scene/2d/sprite.cpp scene/resources/style_box.cpp
+msgid "Normal Map"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Process"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Fix Alpha Border"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Premult Alpha"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Hdr As Srgb"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Invert Color"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Normal Map Invert Y"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
+#: scene/audio/audio_stream_player.cpp scene/gui/video_player.cpp
+msgid "Stream"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Size Limit"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Detect 3D"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "SVG"
+msgstr ""
+
#: editor/import/resource_importer_texture.cpp
msgid ""
"Warning, no suitable PC VRAM compression enabled in Project Settings. This "
"texture will not display correctly on PC."
msgstr ""
+#: editor/import/resource_importer_texture_atlas.cpp
+msgid "Atlas File"
+msgstr ""
+
+#: editor/import/resource_importer_texture_atlas.cpp
+#, fuzzy
+msgid "Import Mode"
+msgstr "దిగà±à°®à°¤à°¿"
+
+#: editor/import/resource_importer_texture_atlas.cpp
+msgid "Crop To Region"
+msgstr ""
+
+#: editor/import/resource_importer_texture_atlas.cpp
+msgid "Trim Alpha Border From Region"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp scene/2d/physics_body_2d.cpp
+msgid "Force"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+msgid "8 Bit"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp main/main.cpp
+#: modules/mono/editor/csharp_project.cpp modules/mono/mono_gd/gd_mono.cpp
+msgid "Mono"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+msgid "Max Rate"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+msgid "Max Rate Hz"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+msgid "Trim"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+msgid "Normalize"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+msgid "Loop Mode"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+msgid "Loop Begin"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+msgid "Loop End"
+msgstr ""
+
#: editor/import_defaults_editor.cpp
msgid "Select Importer"
msgstr ""
@@ -6386,6 +6822,26 @@ msgid "Failed to load resource."
msgstr ""
#: editor/inspector_dock.cpp
+msgid "Property Name Style"
+msgstr ""
+
+#: editor/inspector_dock.cpp scene/gui/color_picker.cpp
+msgid "Raw"
+msgstr ""
+
+#: editor/inspector_dock.cpp
+msgid "Capitalized"
+msgstr ""
+
+#: editor/inspector_dock.cpp
+msgid "Localized"
+msgstr ""
+
+#: editor/inspector_dock.cpp
+msgid "Localization not available for current language."
+msgstr ""
+
+#: editor/inspector_dock.cpp
msgid "Copy Properties"
msgstr ""
@@ -7414,18 +7870,22 @@ msgid "License (Z-A)"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
+msgctxt "Pagination"
msgid "First"
msgstr ""
-#: editor/plugins/asset_library_editor_plugin.cpp scene/gui/control.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgctxt "Pagination"
msgid "Previous"
msgstr ""
-#: editor/plugins/asset_library_editor_plugin.cpp scene/gui/control.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgctxt "Pagination"
msgid "Next"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
+msgctxt "Pagination"
msgid "Last"
msgstr ""
@@ -7659,19 +8119,19 @@ msgid ""
"margins."
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Top Left"
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Top Right"
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Bottom Right"
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Bottom Left"
msgstr ""
@@ -8364,6 +8824,18 @@ msgstr ""
msgid "Gradient Edited"
msgstr ""
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+msgid "Swap GradientTexture2D Fill Points"
+msgstr ""
+
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+msgid "Swap Gradient Fill Points"
+msgstr ""
+
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+msgid "Toggle Grid Snap"
+msgstr ""
+
#: editor/plugins/item_list_editor_plugin.cpp
msgid "Item %d"
msgstr ""
@@ -8577,8 +9049,8 @@ msgid ""
"%s"
msgstr ""
-#: editor/plugins/mesh_library_editor_plugin.cpp modules/gridmap/grid_map.cpp
-msgid "Mesh Library"
+#: editor/plugins/mesh_library_editor_plugin.cpp
+msgid "MeshLibrary"
msgstr ""
#: editor/plugins/mesh_library_editor_plugin.cpp
@@ -9546,8 +10018,8 @@ msgstr ""
msgid "Source"
msgstr ""
-#: editor/plugins/script_text_editor.cpp scene/3d/interpolated_camera.cpp
-#: scene/animation/skeleton_ik.cpp
+#: editor/plugins/script_text_editor.cpp platform/uwp/export/export.cpp
+#: scene/3d/interpolated_camera.cpp scene/animation/skeleton_ik.cpp
msgid "Target"
msgstr ""
@@ -10504,7 +10976,9 @@ msgstr ""
#: editor/plugins/sprite_frames_editor_plugin.cpp
#: modules/gltf/gltf_animation.cpp modules/minimp3/audio_stream_mp3.cpp
-#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp scene/2d/path_2d.cpp
+#: modules/minimp3/resource_importer_mp3.cpp
+#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp
+#: modules/stb_vorbis/resource_importer_ogg_vorbis.cpp scene/2d/path_2d.cpp
#: scene/3d/path.cpp scene/resources/animation.cpp scene/resources/material.cpp
msgid "Loop"
msgstr ""
@@ -11364,8 +11838,9 @@ msgstr ""
msgid "Priority"
msgstr ""
-#: editor/plugins/tile_set_editor_plugin.cpp main/main.cpp scene/gui/button.cpp
-#: scene/gui/item_list.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp main/main.cpp
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#: scene/gui/button.cpp scene/gui/item_list.cpp
msgid "Icon"
msgstr ""
@@ -12648,10 +13123,6 @@ msgid ""
msgstr ""
#: editor/project_export.cpp
-msgid "Release"
-msgstr ""
-
-#: editor/project_export.cpp
msgid "Exporting All"
msgstr ""
@@ -14411,6 +14882,7 @@ msgid "Change AudioStreamPlayer3D Emission Angle"
msgstr ""
#: editor/spatial_editor_gizmos.cpp modules/gltf/gltf_node.cpp
+#: platform/osx/export/export.cpp
msgid "Camera"
msgstr ""
@@ -14671,7 +15143,8 @@ msgstr ""
msgid "Use Nvidia Rect Flicker Workaround"
msgstr ""
-#: main/main.cpp platform/uwp/os_uwp.cpp
+#: main/main.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp platform/uwp/os_uwp.cpp
msgid "Display"
msgstr ""
@@ -14726,18 +15199,6 @@ msgstr ""
msgid "Allowed"
msgstr ""
-#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp scene/2d/camera_2d.cpp
-#: scene/2d/light_2d.cpp scene/2d/navigation_polygon.cpp
-#: scene/2d/ray_cast_2d.cpp scene/2d/sprite.cpp scene/2d/y_sort.cpp
-#: scene/3d/audio_stream_player_3d.cpp scene/3d/baked_lightmap.cpp
-#: scene/3d/interpolated_camera.cpp scene/3d/light.cpp
-#: scene/3d/navigation_mesh_instance.cpp scene/3d/ray_cast.cpp
-#: scene/3d/sprite_3d.cpp scene/gui/graph_edit.cpp
-#: scene/gui/rich_text_label.cpp scene/resources/curve.cpp
-#: scene/resources/environment.cpp
-msgid "Enabled"
-msgstr ""
-
#: main/main.cpp
msgid "Intended Usage"
msgstr ""
@@ -14766,12 +15227,13 @@ msgstr ""
msgid "Handheld"
msgstr ""
-#: main/main.cpp
+#: main/main.cpp platform/javascript/export/export.cpp
+#: platform/uwp/export/export.cpp
msgid "Orientation"
msgstr ""
#: main/main.cpp scene/gui/scroll_container.cpp scene/gui/text_edit.cpp
-#: scene/main/scene_tree.cpp
+#: scene/main/scene_tree.cpp scene/register_scene_types.cpp
#, fuzzy
msgid "Common"
msgstr "సంఘం"
@@ -14811,7 +15273,7 @@ msgid "Verbose stdout"
msgstr ""
#: main/main.cpp
-msgid "Frame Delay (msec)"
+msgid "Frame Delay Msec"
msgstr ""
#: main/main.cpp
@@ -14928,11 +15390,6 @@ msgstr ""
msgid "Tooltip Position Offset"
msgstr ""
-#: main/main.cpp modules/mono/editor/csharp_project.cpp
-#: modules/mono/mono_gd/gd_mono.cpp
-msgid "Mono"
-msgstr ""
-
#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp
msgid "Debugger Agent"
msgstr ""
@@ -15456,7 +15913,7 @@ msgstr ""
msgid "Intensity"
msgstr ""
-#: modules/gltf/gltf_light.cpp scene/2d/light_2d.cpp
+#: modules/gltf/gltf_light.cpp scene/2d/light_2d.cpp scene/3d/light.cpp
msgid "Range"
msgstr ""
@@ -15587,11 +16044,6 @@ msgstr ""
msgid "Use Named Skin Binds"
msgstr ""
-#: modules/gltf/gltf_state.cpp scene/3d/physics_joint.cpp
-#, fuzzy
-msgid "Nodes"
-msgstr "నోడà±"
-
#: modules/gltf/gltf_state.cpp
msgid "Buffer Views"
msgstr ""
@@ -15601,14 +16053,6 @@ msgid "Accessors"
msgstr ""
#: modules/gltf/gltf_state.cpp
-msgid "Meshes"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp
-msgid "Materials"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp
msgid "Scene Name"
msgstr ""
@@ -15623,15 +16067,11 @@ msgstr "నోడà±"
msgid "Textures"
msgstr ""
-#: modules/gltf/gltf_state.cpp
+#: modules/gltf/gltf_state.cpp platform/uwp/export/export.cpp
msgid "Images"
msgstr ""
#: modules/gltf/gltf_state.cpp
-msgid "Skins"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp
msgid "Cameras"
msgstr ""
@@ -15661,10 +16101,14 @@ msgid "Src Image"
msgstr ""
#: modules/gridmap/grid_map.cpp
-msgid "Physics Material"
+msgid "Mesh Library"
msgstr ""
#: modules/gridmap/grid_map.cpp
+msgid "Physics Material"
+msgstr ""
+
+#: modules/gridmap/grid_map.cpp scene/3d/visual_instance.cpp
msgid "Use In Baked Light"
msgstr ""
@@ -15691,6 +16135,7 @@ msgstr ""
#: modules/gridmap/grid_map.cpp scene/2d/collision_object_2d.cpp
#: scene/2d/tile_map.cpp scene/3d/collision_object.cpp scene/3d/soft_body.cpp
+#: scene/resources/material.cpp
msgid "Mask"
msgstr ""
@@ -15871,7 +16316,9 @@ msgid "Ultra Quality Ray Count"
msgstr ""
#: modules/minimp3/audio_stream_mp3.cpp
+#: modules/minimp3/resource_importer_mp3.cpp
#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp
+#: modules/stb_vorbis/resource_importer_ogg_vorbis.cpp
msgid "Loop Offset"
msgstr ""
@@ -16901,6 +17348,165 @@ msgid "The package must have at least one '.' separator."
msgstr ""
#: platform/android/export/export_plugin.cpp
+msgid "Use Custom Build"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Export Format"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Keystore"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Debug User"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+msgid "Debug Password"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Release User"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Release Password"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "One Click Deploy"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Clear Previous Install"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp scene/resources/shader.cpp
+msgid "Code"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Min SDK"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Target SDK"
+msgstr "నోడà±"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+msgid "Package"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+msgid "Unique Name"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Signed"
+msgstr "సంకేతాలà±"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Classify As Game"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Retain Data On Uninstall"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Exclude From Recents"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Graphics"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "OpenGL Debug"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "XR Features"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "XR Mode"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Hand Tracking"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Hand Tracking Frequency"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Passthrough"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Immersive Mode"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Support Small"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Support Normal"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Support Large"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Support Xlarge"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "User Data Backup"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Allow"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Command Line"
+msgstr "సంఘం"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+msgid "Extra Args"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "APK Expansion"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Salt"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Public Key"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Permissions"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Custom Permissions"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
msgid "Select device from the list"
msgstr ""
@@ -17186,6 +17792,161 @@ msgid "The character '%s' is not allowed in Identifier."
msgstr ""
#: platform/iphone/export/export.cpp
+msgid "App Store Team ID"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Provisioning Profile UUID Debug"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Code Sign Identity Debug"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Export Method Debug"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Provisioning Profile UUID Release"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Code Sign Identity Release"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Export Method Release"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Targeted Device Family"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Info"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Identifier"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Signature"
+msgstr "సంకేతాలà±"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Short Version"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/windows/export/export.cpp
+msgid "Copyright"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Capabilities"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Access Wi-Fi"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Push Notifications"
+msgstr "à°¸à±à°¥à°¿à°°à°¾à°‚కాలà±"
+
+#: platform/iphone/export/export.cpp scene/3d/baked_lightmap.cpp
+msgid "User Data"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Accessible From Files App"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Accessible From Itunes Sharing"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Privacy"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Camera Usage Description"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Microphone Usage Description"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Photolibrary Usage Description"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPhone 120 X 120"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPhone 180 X 180"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 76 X 76"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 152 X 152"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 167 X 167"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "App Store 1024 X 1024"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Spotlight 40 X 40"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Spotlight 80 X 80"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Storyboard"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Use Launch Screen Storyboard"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Image Scale Mode"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Custom Image @2x"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Custom Image @3x"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Use Custom BG Color"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Custom BG Color"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
msgid "App Store Team ID not specified - cannot configure the project."
msgstr ""
@@ -17222,6 +17983,75 @@ msgid "Could not read file:"
msgstr ""
#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Variant"
+msgstr "గణనలà±"
+
+#: platform/javascript/export/export.cpp
+msgid "Export Type"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "VRAM Texture Compression"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "For Desktop"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "For Mobile"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Html"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Export Icon"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Custom Html Shell"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Head Include"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Canvas Resize Policy"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Focus Canvas On Start"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Experimental Virtual Keyboard"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Progressive Web App"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Offline Page"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 144 X 144"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 180 X 180"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 512 X 512"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
msgid "Could not read HTML shell:"
msgstr ""
@@ -17326,6 +18156,177 @@ msgid "Unknown object type."
msgstr ""
#: platform/osx/export/export.cpp
+msgid "App Category"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "High Res"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Location Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Address Book Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Calendar Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Photos Library Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Desktop Folder Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Documents Folder Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Downloads Folder Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Network Volumes Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Removable Volumes Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#, fuzzy
+msgid "Codesign"
+msgstr "నోడà±"
+
+#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
+#: platform/windows/export/export.cpp
+msgid "Identity"
+msgstr ""
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+msgid "Timestamp"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Hardened Runtime"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Replace Existing Signature"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Entitlements"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Custom File"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Allow JIT Code Execution"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Allow Unsigned Executable Memory"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Allow Dyld Environment Variables"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Disable Library Validation"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Audio Input"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Address Book"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Calendars"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Photos Library"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Apple Events"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Debugging"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "App Sandbox"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Network Server"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Network Client"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Device Usb"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Device Bluetooth"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Files Downloads"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Files Pictures"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Files Music"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Files Movies"
+msgstr ""
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+msgid "Custom Options"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Notarization"
+msgstr "గణనలà±"
+
+#: platform/osx/export/export.cpp
+msgid "Apple ID Name"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Apple ID Password"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Apple Team ID"
+msgstr ""
+
+#: platform/osx/export/export.cpp
msgid ""
"Note: The notarization process generally takes less than an hour. When the "
"process is completed, you'll receive an email."
@@ -17515,6 +18516,122 @@ msgid "Force Builtin Codesign"
msgstr ""
#: platform/uwp/export/export.cpp
+msgid "Architecture"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Display Name"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Short Name"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Publisher"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Publisher Display Name"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Product Guid"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Publisher Guid"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Signing"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Certificate"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Algorithm"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Major"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Minor"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Build"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Revision"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Landscape"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Portrait"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Landscape Flipped"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Portrait Flipped"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Store Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 44 X 44 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 71 X 71 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 150 X 150 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 310 X 310 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Wide 310 X 150 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Splash Screen"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Tiles"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Square 150 X 150"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Wide 310 X 150"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Square 310 X 310"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
msgid "Invalid package short name."
msgstr ""
@@ -17580,11 +18697,43 @@ msgid "Debug Certificate"
msgstr ""
#: platform/uwp/export/export.cpp
-msgid "Debug Password"
+msgid "Debug Algorithm"
msgstr ""
-#: platform/uwp/export/export.cpp
-msgid "Debug Algorithm"
+#: platform/windows/export/export.cpp
+msgid "Identity Type"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Timestamp Server URL"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Digest Algorithm"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "File Version"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Product Version"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Company Name"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Product Name"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "File Description"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Trademarks"
msgstr ""
#: platform/windows/export/export.cpp
@@ -17651,12 +18800,14 @@ msgstr ""
msgid "Centered"
msgstr ""
-#: scene/2d/animated_sprite.cpp scene/2d/camera_2d.cpp scene/2d/light_2d.cpp
+#: scene/2d/animated_sprite.cpp scene/2d/camera_2d.cpp
+#: scene/2d/cpu_particles_2d.cpp scene/2d/light_2d.cpp
#: scene/2d/parallax_background.cpp scene/2d/parallax_layer.cpp
#: scene/2d/path_2d.cpp scene/2d/polygon_2d.cpp scene/2d/sprite.cpp
-#: scene/3d/path.cpp scene/3d/physics_body.cpp scene/3d/sprite_3d.cpp
-#: scene/gui/graph_node.cpp scene/gui/rich_text_effect.cpp
-#: scene/main/canvas_layer.cpp scene/resources/material.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/path.cpp scene/3d/physics_body.cpp
+#: scene/3d/sprite_3d.cpp scene/gui/graph_node.cpp
+#: scene/gui/rich_text_effect.cpp scene/main/canvas_layer.cpp
+#: scene/resources/material.cpp scene/resources/particles_material.cpp
#: scene/resources/style_box.cpp
msgid "Offset"
msgstr ""
@@ -17720,11 +18871,6 @@ msgstr ""
msgid "Override"
msgstr ""
-#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
-#: scene/audio/audio_stream_player.cpp scene/gui/video_player.cpp
-msgid "Stream"
-msgstr ""
-
#: scene/2d/audio_stream_player_2d.cpp scene/audio/audio_stream_player.cpp
#: scene/gui/video_player.cpp servers/audio/effects/audio_effect_amplify.cpp
msgid "Volume dB"
@@ -17748,12 +18894,12 @@ msgid "Stream Paused"
msgstr ""
#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
-#: scene/3d/reflection_probe.cpp scene/3d/visual_instance.cpp
-#: scene/resources/material.cpp
+#: scene/3d/light.cpp scene/3d/reflection_probe.cpp
+#: scene/3d/visual_instance.cpp scene/resources/material.cpp
msgid "Max Distance"
msgstr ""
-#: scene/2d/audio_stream_player_2d.cpp
+#: scene/2d/audio_stream_player_2d.cpp scene/3d/light.cpp
#, fuzzy
msgid "Attenuation"
msgstr "గణనలà±"
@@ -17802,6 +18948,21 @@ msgstr ""
msgid "Limit"
msgstr ""
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/style_box.cpp
+msgid "Left"
+msgstr ""
+
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/style_box.cpp
+msgid "Right"
+msgstr ""
+
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/dynamic_font.cpp scene/resources/style_box.cpp
+msgid "Bottom"
+msgstr ""
+
#: scene/2d/camera_2d.cpp
msgid "Smoothed"
msgstr ""
@@ -17996,12 +19157,6 @@ msgstr ""
msgid "Emitting"
msgstr ""
-#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp scene/3d/area.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
-#: scene/resources/environment.cpp
-msgid "Amount"
-msgstr ""
-
#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp
#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
msgid "Lifetime"
@@ -18061,17 +19216,12 @@ msgstr ""
#: scene/2d/mesh_instance_2d.cpp scene/2d/multimesh_instance_2d.cpp
#: scene/2d/particles_2d.cpp scene/2d/polygon_2d.cpp scene/2d/sprite.cpp
#: scene/3d/sprite_3d.cpp scene/gui/nine_patch_rect.cpp
-#: scene/gui/texture_rect.cpp scene/resources/sky.cpp
-#: scene/resources/style_box.cpp scene/resources/visual_shader_nodes.cpp
+#: scene/gui/texture_rect.cpp scene/resources/material.cpp
+#: scene/resources/sky.cpp scene/resources/style_box.cpp
+#: scene/resources/visual_shader_nodes.cpp
msgid "Texture"
msgstr ""
-#: scene/2d/cpu_particles_2d.cpp scene/2d/mesh_instance_2d.cpp
-#: scene/2d/multimesh_instance_2d.cpp scene/2d/particles_2d.cpp
-#: scene/2d/sprite.cpp scene/resources/style_box.cpp
-msgid "Normal Map"
-msgstr ""
-
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
msgid "Emission Shape"
@@ -18091,9 +19241,8 @@ msgid "Normals"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/3d/sprite_3d.cpp scene/resources/material.cpp
-#: scene/resources/particles_material.cpp scene/resources/texture.cpp
-msgid "Flags"
+#: scene/resources/particles_material.cpp
+msgid "Align Y"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
@@ -18113,6 +19262,11 @@ msgid "Initial Velocity"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Velocity Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp servers/physics_2d_server.cpp
#: servers/physics_server.cpp
msgid "Angular Velocity"
@@ -18120,6 +19274,11 @@ msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+msgid "Velocity Curve"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
msgid "Orbit Velocity"
msgstr ""
@@ -18130,6 +19289,21 @@ msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+msgid "Accel"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Accel Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Accel Curve"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
msgid "Radial Accel"
msgstr ""
@@ -18139,19 +19313,51 @@ msgid "Tangential Accel"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/2d/joints_2d.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/vehicle_body.cpp
-#: scene/resources/particles_material.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/physics_joint.cpp
+#: scene/3d/vehicle_body.cpp scene/resources/particles_material.cpp
#: servers/audio/effects/audio_effect_reverb.cpp
msgid "Damping"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+msgid "Damping Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Damping Curve"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp scene/3d/light.cpp
+#: scene/resources/particles_material.cpp
msgid "Angle"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+msgid "Angle Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Angle Curve"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+msgid "Scale Amount"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+msgid "Scale Amount Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+msgid "Scale Amount Curve"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
msgid "Color Ramp"
msgstr ""
@@ -18166,6 +19372,44 @@ msgstr ""
msgid "Hue Variation"
msgstr "గణనలà±"
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Variation"
+msgstr "గణనలà±"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Variation Random"
+msgstr "గణనలà±"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Variation Curve"
+msgstr "గణనలà±"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Speed Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Speed Curve"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Offset Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Offset Curve"
+msgstr ""
+
#: scene/2d/joints_2d.cpp
msgid "Node A and Node B must be PhysicsBody2Ds"
msgstr ""
@@ -18197,6 +19441,7 @@ msgid "Node B"
msgstr "నోడà±"
#: scene/2d/joints_2d.cpp scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp
+#: scene/3d/light.cpp scene/3d/physics_joint.cpp
#: scene/resources/environment.cpp
msgid "Bias"
msgstr ""
@@ -18205,7 +19450,7 @@ msgstr ""
msgid "Disable Collision"
msgstr ""
-#: scene/2d/joints_2d.cpp
+#: scene/2d/joints_2d.cpp scene/3d/physics_joint.cpp
msgid "Softness"
msgstr ""
@@ -18222,7 +19467,7 @@ msgstr ""
msgid "Rest Length"
msgstr ""
-#: scene/2d/joints_2d.cpp scene/3d/vehicle_body.cpp
+#: scene/2d/joints_2d.cpp scene/3d/physics_joint.cpp scene/3d/vehicle_body.cpp
msgid "Stiffness"
msgstr ""
@@ -18241,7 +19486,7 @@ msgid "Texture Scale"
msgstr ""
#: scene/2d/light_2d.cpp scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp
-#: scene/resources/environment.cpp scene/resources/sky.cpp
+#: scene/3d/light.cpp scene/resources/environment.cpp scene/resources/sky.cpp
msgid "Energy"
msgstr ""
@@ -18277,11 +19522,6 @@ msgstr ""
msgid "Gradient Length"
msgstr ""
-#: scene/2d/light_2d.cpp scene/gui/control.cpp
-#: scene/resources/navigation_mesh.cpp
-msgid "Filter"
-msgstr ""
-
#: scene/2d/light_2d.cpp
msgid "Filter Smooth"
msgstr ""
@@ -18654,10 +19894,6 @@ msgid "Applied Forces"
msgstr ""
#: scene/2d/physics_body_2d.cpp
-msgid "Force"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp
msgid "Torque"
msgstr ""
@@ -18670,7 +19906,7 @@ msgid "Sync To Physics"
msgstr ""
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-msgid "Moving platform"
+msgid "Moving Platform"
msgstr ""
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
@@ -18679,7 +19915,7 @@ msgstr ""
#: scene/2d/physics_body_2d.cpp scene/2d/touch_screen_button.cpp
#: scene/3d/physics_body.cpp scene/gui/texture_button.cpp
-#: scene/resources/line_shape_2d.cpp
+#: scene/resources/line_shape_2d.cpp scene/resources/material.cpp
msgid "Normal"
msgstr ""
@@ -18887,6 +20123,31 @@ msgid ""
"as parent."
msgstr ""
+#: scene/2d/visibility_notifier_2d.cpp scene/3d/visibility_notifier.cpp
+#, fuzzy
+msgid "Pause Animations"
+msgstr "గణనలà±"
+
+#: scene/2d/visibility_notifier_2d.cpp scene/3d/visibility_notifier.cpp
+msgid "Freeze Bodies"
+msgstr ""
+
+#: scene/2d/visibility_notifier_2d.cpp
+msgid "Pause Particles"
+msgstr ""
+
+#: scene/2d/visibility_notifier_2d.cpp
+msgid "Pause Animated Sprites"
+msgstr ""
+
+#: scene/2d/visibility_notifier_2d.cpp
+msgid "Process Parent"
+msgstr ""
+
+#: scene/2d/visibility_notifier_2d.cpp
+msgid "Physics Process Parent"
+msgstr ""
+
#: scene/3d/area.cpp
msgid "Reverb Bus"
msgstr ""
@@ -18977,6 +20238,7 @@ msgid "Attenuation Filter"
msgstr ""
#: scene/3d/audio_stream_player_3d.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
#: servers/audio/effects/audio_effect_filter.cpp
msgid "Cutoff Hz"
msgstr ""
@@ -19016,10 +20278,6 @@ msgid "Octree"
msgstr ""
#: scene/3d/baked_lightmap.cpp
-msgid "User Data"
-msgstr ""
-
-#: scene/3d/baked_lightmap.cpp
msgid "Finding meshes and lights"
msgstr ""
@@ -19249,6 +20507,15 @@ msgid "Ring Axis"
msgstr ""
#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Rotate Y"
+msgstr "à°¸à±à°¥à°¿à°°à°¾à°‚కాలà±"
+
+#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
+msgid "Disable Z"
+msgstr ""
+
+#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
msgid "Flatness"
msgstr ""
@@ -19284,15 +20551,11 @@ msgstr ""
msgid "Dynamic Range"
msgstr ""
-#: scene/3d/gi_probe.cpp
+#: scene/3d/gi_probe.cpp scene/3d/light.cpp
msgid "Normal Bias"
msgstr ""
#: scene/3d/gi_probe.cpp
-msgid "Compress"
-msgstr ""
-
-#: scene/3d/gi_probe.cpp
msgid "Plotting Meshes"
msgstr ""
@@ -19318,14 +20581,26 @@ msgid "Subdiv"
msgstr ""
#: scene/3d/light.cpp
+msgid "Indirect Energy"
+msgstr ""
+
+#: scene/3d/light.cpp
msgid "Negative"
msgstr ""
#: scene/3d/light.cpp
+msgid "Specular"
+msgstr ""
+
+#: scene/3d/light.cpp
msgid "Bake Mode"
msgstr ""
#: scene/3d/light.cpp
+msgid "Contact"
+msgstr ""
+
+#: scene/3d/light.cpp
msgid "Reverse Cull Face"
msgstr ""
@@ -19334,10 +20609,26 @@ msgid "Directional Shadow"
msgstr ""
#: scene/3d/light.cpp
+msgid "Split 1"
+msgstr ""
+
+#: scene/3d/light.cpp
+msgid "Split 2"
+msgstr ""
+
+#: scene/3d/light.cpp
+msgid "Split 3"
+msgstr ""
+
+#: scene/3d/light.cpp
msgid "Blend Splits"
msgstr ""
#: scene/3d/light.cpp
+msgid "Bias Split Scale"
+msgstr ""
+
+#: scene/3d/light.cpp
msgid "Depth Range"
msgstr ""
@@ -19361,6 +20652,11 @@ msgstr ""
msgid "Spot"
msgstr ""
+#: scene/3d/light.cpp
+#, fuzzy
+msgid "Angle Attenuation"
+msgstr "గణనలà±"
+
#: scene/3d/mesh_instance.cpp
msgid "Software Skinning"
msgstr ""
@@ -19477,6 +20773,54 @@ msgid "Axis Lock"
msgstr ""
#: scene/3d/physics_body.cpp
+msgid "Linear X"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Linear Y"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Linear Z"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Angular X"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Angular Y"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Angular Z"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Motion X"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Motion Y"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Motion Z"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Move Lock X"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Move Lock Y"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Move Lock Z"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
msgid "Body Offset"
msgstr ""
@@ -19509,6 +20853,14 @@ msgid "Exclude Nodes"
msgstr ""
#: scene/3d/physics_joint.cpp
+msgid "Params"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Impulse Clamp"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit"
msgstr ""
@@ -19520,6 +20872,50 @@ msgstr ""
msgid "Lower"
msgstr ""
+#: scene/3d/physics_joint.cpp scene/3d/vehicle_body.cpp
+#, fuzzy
+msgid "Relaxation"
+msgstr "గణనలà±"
+
+#: scene/3d/physics_joint.cpp
+msgid "Motor"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Target Velocity"
+msgstr "నోడà±"
+
+#: scene/3d/physics_joint.cpp
+msgid "Max Impulse"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Linear Limit"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Upper Distance"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Lower Distance"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Restitution"
+msgstr "గణనలà±"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motion"
+msgstr "గణనలà±"
+
+#: scene/3d/physics_joint.cpp
+msgid "Linear Ortho"
+msgstr ""
+
#: scene/3d/physics_joint.cpp
msgid "Upper Angle"
msgstr ""
@@ -19529,6 +20925,15 @@ msgid "Lower Angle"
msgstr ""
#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Angular Motion"
+msgstr "గణనలà±"
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Ortho"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
msgid "Swing Span"
msgstr ""
@@ -19537,17 +20942,89 @@ msgid "Twist Span"
msgstr ""
#: scene/3d/physics_joint.cpp
+msgid "Linear Limit X"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Linear Motor X"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Force Limit"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Linear Spring X"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Equilibrium Point"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit X"
msgstr ""
#: scene/3d/physics_joint.cpp
+msgid "Erp"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Motor X"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Spring X"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Linear Limit Y"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Linear Motor Y"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Linear Spring Y"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit Y"
msgstr ""
#: scene/3d/physics_joint.cpp
+msgid "Angular Motor Y"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Spring Y"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Linear Limit Z"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Linear Motor Z"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Linear Spring Z"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit Z"
msgstr ""
+#: scene/3d/physics_joint.cpp
+msgid "Angular Motor Z"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Spring Z"
+msgstr ""
+
#: scene/3d/portal.cpp
msgid "The RoomManager should not be a child or grandchild of a Portal."
msgstr ""
@@ -19652,7 +21129,7 @@ msgstr ""
msgid "Use Default Simplify"
msgstr ""
-#: scene/3d/room.cpp
+#: scene/3d/room.cpp scene/3d/room_manager.cpp
msgid "Room Simplify"
msgstr ""
@@ -19690,6 +21167,12 @@ msgstr ""
msgid "Main"
msgstr ""
+#: scene/3d/room_manager.cpp scene/animation/animation_player.cpp
+#: scene/animation/animation_tree.cpp scene/animation/animation_tree_player.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+msgid "Active"
+msgstr ""
+
#: scene/3d/room_manager.cpp
msgid "Roomlist"
msgstr ""
@@ -19711,6 +21194,46 @@ msgid "Gameplay"
msgstr ""
#: scene/3d/room_manager.cpp
+msgid "Gameplay Monitor"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "Use Secondary PVS"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "Merge Meshes"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "Show Margins"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "Debug Sprawl"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "Overlap Warning Threshold"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "Preview Camera"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "Portal Depth Limit"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "Default Portal Margin"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "Roaming Expansion Margin"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
msgid ""
"RoomList path is invalid.\n"
"Please check the RoomList branch has been assigned in the RoomManager."
@@ -19829,6 +21352,19 @@ msgstr ""
msgid "Billboard"
msgstr ""
+#: scene/3d/sprite_3d.cpp scene/resources/material.cpp
+#, fuzzy
+msgid "Transparent"
+msgstr "గణనలà±"
+
+#: scene/3d/sprite_3d.cpp
+msgid "Shaded"
+msgstr ""
+
+#: scene/3d/sprite_3d.cpp
+msgid "Double Sided"
+msgstr ""
+
#: scene/3d/sprite_3d.cpp
msgid "Alpha Cut"
msgstr ""
@@ -19894,11 +21430,6 @@ msgstr ""
msgid "Max Force"
msgstr ""
-#: scene/3d/vehicle_body.cpp
-#, fuzzy
-msgid "Relaxation"
-msgstr "గణనలà±"
-
#: scene/3d/visibility_notifier.cpp
msgid "AABB"
msgstr ""
@@ -20020,7 +21551,7 @@ msgid "Fadeout Time"
msgstr ""
#: scene/animation/animation_blend_tree.cpp
-msgid "autorestart_"
+msgid "Auto Restart"
msgstr ""
#: scene/animation/animation_blend_tree.cpp
@@ -20092,12 +21623,6 @@ msgstr ""
msgid "Default Blend Time"
msgstr ""
-#: scene/animation/animation_player.cpp scene/animation/animation_tree.cpp
-#: scene/animation/animation_tree_player.cpp
-#: servers/audio/effects/audio_effect_delay.cpp
-msgid "Active"
-msgstr ""
-
#: scene/animation/animation_player.cpp
msgid "Method Call Mode"
msgstr ""
@@ -20211,10 +21736,6 @@ msgstr "నోడà±"
msgid "Max Iterations"
msgstr "గణనలà±"
-#: scene/animation/tween.cpp scene/resources/texture.cpp
-msgid "Repeat"
-msgstr ""
-
#: scene/animation/tween.cpp
msgid "Playback Process Mode"
msgstr ""
@@ -20241,18 +21762,6 @@ msgstr ""
msgid "Alignment"
msgstr ""
-#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
-#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
-#: scene/resources/style_box.cpp
-msgid "Horizontal"
-msgstr ""
-
-#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
-#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
-#: scene/resources/style_box.cpp
-msgid "Vertical"
-msgstr ""
-
#: scene/gui/base_button.cpp
msgid "Shortcut In Tooltip"
msgstr ""
@@ -20338,10 +21847,6 @@ msgid "HSV"
msgstr ""
#: scene/gui/color_picker.cpp
-msgid "Raw"
-msgstr ""
-
-#: scene/gui/color_picker.cpp
msgid "Switch between hexadecimal and code values."
msgstr ""
@@ -20396,6 +21901,30 @@ msgid "Focus"
msgstr ""
#: scene/gui/control.cpp
+msgid "Neighbour Left"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Neighbour Top"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Neighbour Right"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Neighbour Bottom"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Next"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Previous"
+msgstr ""
+
+#: scene/gui/control.cpp
msgid "Mouse"
msgstr ""
@@ -20429,7 +21958,7 @@ msgid "Dialog"
msgstr ""
#: scene/gui/dialogs.cpp
-msgid "Hide On Ok"
+msgid "Hide On OK"
msgstr ""
#: scene/gui/dialogs.cpp scene/gui/label.cpp
@@ -20515,7 +22044,7 @@ msgid "Timers"
msgstr ""
#: scene/gui/item_list.cpp scene/gui/popup_menu.cpp scene/gui/tree.cpp
-msgid "Incremental Search Max Interval (msec)"
+msgid "Incremental Search Max Interval Msec"
msgstr ""
#: scene/gui/item_list.cpp scene/gui/tree.cpp
@@ -21014,6 +22543,26 @@ msgstr ""
msgid "Nine Patch Stretch"
msgstr ""
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Left"
+msgstr "à°¸à±à°¥à°¿à°°à°¾à°‚కాలà±"
+
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Top"
+msgstr "à°¸à±à°¥à°¿à°°à°¾à°‚కాలà±"
+
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Right"
+msgstr "à°¸à±à°¥à°¿à°°à°¾à°‚కాలà±"
+
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Bottom"
+msgstr "à°¸à±à°¥à°¿à°°à°¾à°‚కాలà±"
+
#: scene/gui/tree.cpp
msgid "Custom Minimum Height"
msgstr ""
@@ -21047,7 +22596,7 @@ msgid "Paused"
msgstr ""
#: scene/gui/video_player.cpp
-msgid "Buffering (msec)"
+msgid "Buffering Msec"
msgstr ""
#: scene/gui/video_player.cpp
@@ -21353,6 +22902,22 @@ msgid "Shadow Atlas"
msgstr ""
#: scene/main/viewport.cpp
+msgid "Quad 0"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 1"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 2"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 3"
+msgstr ""
+
+#: scene/main/viewport.cpp
msgid "Canvas Transform"
msgstr ""
@@ -21366,6 +22931,10 @@ msgid "Tooltip Delay (sec)"
msgstr ""
#: scene/register_scene_types.cpp
+msgid "Swap OK Cancel"
+msgstr ""
+
+#: scene/register_scene_types.cpp
msgid "Use hiDPI"
msgstr ""
@@ -21378,18 +22947,6 @@ msgid "Custom Font"
msgstr ""
#: scene/resources/audio_stream_sample.cpp
-msgid "Loop Mode"
-msgstr ""
-
-#: scene/resources/audio_stream_sample.cpp
-msgid "Loop Begin"
-msgstr ""
-
-#: scene/resources/audio_stream_sample.cpp
-msgid "Loop End"
-msgstr ""
-
-#: scene/resources/audio_stream_sample.cpp
#: servers/audio/effects/audio_stream_generator.cpp servers/audio_server.cpp
msgid "Mix Rate"
msgstr ""
@@ -21440,6 +22997,15 @@ msgid "Extra Spacing"
msgstr ""
#: scene/resources/dynamic_font.cpp
+msgid "Char"
+msgstr ""
+
+#: scene/resources/dynamic_font.cpp scene/resources/world.cpp
+#: scene/resources/world_2d.cpp
+msgid "Space"
+msgstr ""
+
+#: scene/resources/dynamic_font.cpp
msgid "Font"
msgstr ""
@@ -21638,6 +23204,42 @@ msgid "Glow"
msgstr ""
#: scene/resources/environment.cpp
+msgid "Levels"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "1"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "2"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "3"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "4"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "5"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "6"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "7"
+msgstr ""
+
+#: scene/resources/environment.cpp
msgid "Bloom"
msgstr ""
@@ -21719,9 +23321,61 @@ msgid "Next Pass"
msgstr ""
#: scene/resources/material.cpp
+msgid "Use Shadow To Opacity"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Unshaded"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Vertex Lighting"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "No Depth Test"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Use Point Size"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "World Triplanar"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Fixed Size"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Albedo Tex Force sRGB"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Do Not Receive Shadows"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Disable Ambient Light"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Ensure Correct Normals"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Vertex Color"
msgstr ""
+#: scene/resources/material.cpp
+msgid "Use As Albedo"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Is sRGB"
+msgstr ""
+
#: scene/resources/material.cpp servers/visual_server.cpp
msgid "Parameters"
msgstr ""
@@ -21751,6 +23405,10 @@ msgid "Billboard Mode"
msgstr ""
#: scene/resources/material.cpp
+msgid "Billboard Keep Scale"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Grow"
msgstr ""
@@ -21759,6 +23417,10 @@ msgid "Grow Amount"
msgstr ""
#: scene/resources/material.cpp
+msgid "Use Alpha Scissor"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Alpha Scissor Threshold"
msgstr ""
@@ -21787,10 +23449,18 @@ msgid "Metallic Specular"
msgstr ""
#: scene/resources/material.cpp
+msgid "Metallic Texture"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Metallic Texture Channel"
msgstr ""
#: scene/resources/material.cpp
+msgid "Roughness Texture"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Roughness Texture Channel"
msgstr ""
@@ -21807,6 +23477,14 @@ msgid "Emission Operator"
msgstr ""
#: scene/resources/material.cpp
+msgid "Emission On UV2"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Emission Texture"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "NormalMap"
msgstr ""
@@ -21819,6 +23497,10 @@ msgid "Rim Tint"
msgstr ""
#: scene/resources/material.cpp
+msgid "Rim Texture"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Clearcoat"
msgstr ""
@@ -21827,14 +23509,26 @@ msgid "Clearcoat Gloss"
msgstr ""
#: scene/resources/material.cpp
+msgid "Clearcoat Texture"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Anisotropy"
msgstr ""
#: scene/resources/material.cpp
+msgid "Anisotropy Flowmap"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Ambient Occlusion"
msgstr ""
#: scene/resources/material.cpp
+msgid "On UV2"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Texture Channel"
msgstr ""
@@ -21868,6 +23562,11 @@ msgstr ""
#: scene/resources/material.cpp
#, fuzzy
+msgid "Transmission Texture"
+msgstr "గణనలà±"
+
+#: scene/resources/material.cpp
+#, fuzzy
msgid "Refraction"
msgstr "గణనలà±"
@@ -21884,6 +23583,10 @@ msgid "UV1"
msgstr ""
#: scene/resources/material.cpp
+msgid "Triplanar"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Triplanar Sharpness"
msgstr ""
@@ -22067,6 +23770,14 @@ msgstr ""
msgid "Point Count"
msgstr ""
+#: scene/resources/particles_material.cpp
+msgid "Scale Random"
+msgstr ""
+
+#: scene/resources/particles_material.cpp
+msgid "Scale Curve"
+msgstr ""
+
#: scene/resources/physics_material.cpp
msgid "Rough"
msgstr ""
@@ -22124,10 +23835,6 @@ msgid "A"
msgstr ""
#: scene/resources/shader.cpp
-msgid "Code"
-msgstr ""
-
-#: scene/resources/shader.cpp
msgid "Custom Defines"
msgstr ""
@@ -22212,14 +23919,6 @@ msgid "Grow End"
msgstr ""
#: scene/resources/texture.cpp
-msgid "Storage"
-msgstr ""
-
-#: scene/resources/texture.cpp
-msgid "Lossy Quality"
-msgstr ""
-
-#: scene/resources/texture.cpp
msgid "Load Path"
msgstr ""
@@ -22329,10 +24028,6 @@ msgstr ""
msgid "Fallback Environment"
msgstr ""
-#: scene/resources/world.cpp scene/resources/world_2d.cpp
-msgid "Space"
-msgstr ""
-
#: scene/resources/world.cpp
msgid "Scenario"
msgstr ""
@@ -22406,8 +24101,33 @@ msgstr ""
msgid "Wet"
msgstr ""
-#: servers/audio/effects/audio_effect_compressor.cpp
-msgid "Threshold"
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "Voice"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+msgid "Delay (ms)"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_phaser.cpp
+msgid "Rate Hz"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "Depth (ms)"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+msgid "Level dB"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+#: servers/audio/effects/audio_effect_panner.cpp
+msgid "Pan"
msgstr ""
#: servers/audio/effects/audio_effect_compressor.cpp
@@ -22432,19 +24152,6 @@ msgid "Tap 1"
msgstr ""
#: servers/audio/effects/audio_effect_delay.cpp
-msgid "Delay (ms)"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_delay.cpp
-msgid "Level dB"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_delay.cpp
-#: servers/audio/effects/audio_effect_panner.cpp
-msgid "Pan"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_delay.cpp
msgid "Tap 2"
msgstr ""
@@ -22502,10 +24209,6 @@ msgstr ""
msgid "Range Max Hz"
msgstr ""
-#: servers/audio/effects/audio_effect_phaser.cpp
-msgid "Rate Hz"
-msgstr ""
-
#: servers/audio/effects/audio_effect_pitch_shift.cpp
msgid "Oversampling"
msgstr ""
@@ -22520,7 +24223,7 @@ msgid "Predelay"
msgstr ""
#: servers/audio/effects/audio_effect_reverb.cpp
-msgid "(msec)"
+msgid "Msec"
msgstr ""
#: servers/audio/effects/audio_effect_reverb.cpp
diff --git a/editor/translations/th.po b/editor/translations/th.po
index d2705b069b..8a5f3f908b 100644
--- a/editor/translations/th.po
+++ b/editor/translations/th.po
@@ -28,7 +28,7 @@ msgstr ""
"Plural-Forms: nplurals=1; plural=0;\n"
"X-Generator: Weblate 4.10-dev\n"
-#: core/bind/core_bind.cpp
+#: core/bind/core_bind.cpp main/main.cpp
msgid "Tablet Driver"
msgstr ""
@@ -132,8 +132,8 @@ msgstr "ตำà¹à¸«à¸™à¹ˆà¸‡à¹à¸œà¸‡"
#: core/bind/core_bind.cpp editor/editor_settings.cpp main/main.cpp
#: modules/gdscript/gdscript_editor.cpp modules/gridmap/grid_map.cpp
#: modules/mono/csharp_script.cpp modules/visual_script/visual_script_nodes.cpp
-#: scene/2d/tile_map.cpp scene/3d/camera.cpp scene/gui/control.cpp
-#: scene/gui/graph_edit.cpp scene/main/viewport.cpp
+#: scene/2d/tile_map.cpp scene/3d/camera.cpp scene/3d/light.cpp
+#: scene/gui/control.cpp scene/gui/graph_edit.cpp scene/main/viewport.cpp
#: scene/resources/dynamic_font.cpp scene/resources/navigation_mesh.cpp
#: scene/resources/primitive_meshes.cpp scene/resources/sky.cpp
#: scene/resources/style_box.cpp scene/resources/texture.cpp
@@ -237,8 +237,7 @@ msgid "Data"
msgstr ""
#: core/io/file_access_network.cpp core/register_core_types.cpp
-#: editor/editor_settings.cpp editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp main/main.cpp
+#: editor/editor_settings.cpp main/main.cpp
#: modules/gdscript/language_server/gdscript_language_server.cpp
#, fuzzy
msgid "Network"
@@ -522,9 +521,10 @@ msgstr "พรีเซ็ต"
msgid "Relative"
msgstr "จำà¸à¸±à¸”โดยใช้ตำà¹à¸«à¸™à¹ˆà¸‡à¸›à¸±à¸ˆà¸ˆà¸¸à¸šà¸±à¸™"
-#: core/os/input_event.cpp scene/2d/camera_2d.cpp
-#: scene/3d/interpolated_camera.cpp scene/animation/animation_player.cpp
-#: scene/resources/environment.cpp
+#: core/os/input_event.cpp scene/2d/camera_2d.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/interpolated_camera.cpp
+#: scene/animation/animation_player.cpp scene/resources/environment.cpp
+#: scene/resources/particles_material.cpp
#, fuzzy
msgid "Speed"
msgstr "ความเร็ว:"
@@ -574,8 +574,9 @@ msgstr "à¸à¸²à¸£à¹€à¸›à¸¥à¸µà¹ˆà¸¢à¸™à¹à¸›à¸¥à¸‡ commit"
msgid "Pitch"
msgstr "Pitch"
-#: core/os/input_event.cpp scene/2d/physics_body_2d.cpp
-#: scene/3d/physics_body.cpp
+#: core/os/input_event.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/physics_body_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/3d/physics_body.cpp scene/resources/particles_material.cpp
#, fuzzy
msgid "Velocity"
msgstr "เริ่มต้น"
@@ -594,6 +595,8 @@ msgid "Controller Value"
msgstr ""
#: core/project_settings.cpp editor/editor_node.cpp main/main.cpp
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/windows/export/export.cpp
#, fuzzy
msgid "Application"
msgstr "à¸à¸²à¸£à¸à¸£à¸°à¸—ำ"
@@ -612,13 +615,16 @@ msgstr "ตั้งค่าโปรเจà¸à¸•์"
#: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp
#: editor/editor_plugin_settings.cpp editor/editor_profiler.cpp
#: editor/project_manager.cpp editor/settings_config_dialog.cpp
-#: modules/gdnative/nativescript/nativescript.cpp scene/2d/area_2d.cpp
-#: scene/3d/area.cpp scene/main/node.cpp
+#: modules/gdnative/nativescript/nativescript.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/osx/export/export.cpp scene/2d/area_2d.cpp scene/3d/area.cpp
+#: scene/main/node.cpp
msgid "Name"
msgstr "ชื่อ"
#: core/project_settings.cpp editor/editor_help.cpp
-#: modules/visual_script/visual_script_nodes.cpp
+#: modules/visual_script/visual_script_nodes.cpp platform/uwp/export/export.cpp
+#: platform/windows/export/export.cpp
msgid "Description"
msgstr "รายละเอียด"
@@ -656,7 +662,7 @@ msgid "Custom User Dir Name"
msgstr ""
#: core/project_settings.cpp editor/animation_track_editor.cpp
-#: editor/editor_audio_buses.cpp servers/audio_server.cpp
+#: editor/editor_audio_buses.cpp main/main.cpp servers/audio_server.cpp
msgid "Audio"
msgstr "เสียง"
@@ -824,10 +830,13 @@ msgstr "ตัวà¸à¸£à¸­à¸‡:"
msgid "Sharpen Intensity"
msgstr ""
-#: core/project_settings.cpp editor/editor_node.cpp editor/editor_settings.cpp
-#: editor/plugins/script_editor_plugin.cpp editor/project_export.cpp
-#: main/main.cpp modules/gdscript/gdscript.cpp
-#: modules/visual_script/visual_script.cpp scene/3d/room_manager.cpp
+#: core/project_settings.cpp editor/editor_export.cpp editor/editor_node.cpp
+#: editor/editor_settings.cpp editor/plugins/script_editor_plugin.cpp
+#: editor/project_export.cpp main/main.cpp modules/gdscript/gdscript.cpp
+#: modules/visual_script/visual_script.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp scene/3d/room_manager.cpp
#: scene/main/scene_tree.cpp scene/resources/shape_2d.cpp
#: servers/visual_server.cpp
msgid "Debug"
@@ -1063,6 +1072,7 @@ msgid "Subsurface Scattering"
msgstr ""
#: drivers/gles3/rasterizer_scene_gles3.cpp
+#: editor/import/resource_importer_texture.cpp
#: editor/plugins/spatial_editor_plugin.cpp modules/gltf/gltf_node.cpp
#: modules/gridmap/grid_map.cpp scene/2d/cpu_particles_2d.cpp
#: scene/2d/node_2d.cpp scene/2d/parallax_layer.cpp scene/2d/polygon_2d.cpp
@@ -1368,6 +1378,7 @@ msgid "Editors"
msgstr "ตัวà¹à¸à¹‰à¹„ข"
#: editor/animation_track_editor.cpp editor/editor_settings.cpp
+#: editor/import/resource_importer_scene.cpp
#: editor/plugins/animation_player_editor_plugin.cpp editor/scene_tree_dock.cpp
#: scene/2d/animated_sprite.cpp scene/2d/cpu_particles_2d.cpp
#: scene/2d/sprite.cpp scene/3d/cpu_particles.cpp scene/3d/sprite_3d.cpp
@@ -1598,14 +1609,14 @@ msgstr "ค่าของขั้นของà¹à¸­à¸™à¸´à¹€à¸¡à¸Šà¸±à¸™"
msgid "Seconds"
msgstr "วินาที"
-#: editor/animation_track_editor.cpp
+#: editor/animation_track_editor.cpp editor/import/resource_importer_scene.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp main/main.cpp
#: scene/resources/texture.cpp
msgid "FPS"
msgstr "เฟรมเรท"
#: editor/animation_track_editor.cpp editor/editor_plugin_settings.cpp
-#: editor/editor_resource_picker.cpp
+#: editor/editor_resource_picker.cpp editor/import/resource_importer_wav.cpp
#: editor/plugins/polygon_2d_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
@@ -2573,7 +2584,9 @@ msgid "Remove Autoload"
msgstr "ลบออโต้โหลด"
#: editor/editor_autoload_settings.cpp editor/editor_plugin_settings.cpp
-#: modules/gdscript/gdscript.cpp scene/2d/polygon_2d.cpp scene/3d/area.cpp
+#: modules/gdscript/gdscript.cpp platform/android/export/export_plugin.cpp
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#: scene/2d/polygon_2d.cpp scene/3d/area.cpp scene/3d/physics_joint.cpp
#: scene/3d/reflection_probe.cpp scene/main/canvas_layer.cpp
#: scene/resources/material.cpp servers/visual_server.cpp
msgid "Enable"
@@ -2740,6 +2753,58 @@ msgstr ""
#: editor/editor_export.cpp platform/android/export/export_plugin.cpp
#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Custom Template"
+msgstr "à¹à¸à¹‰à¹„ขธีม"
+
+#: editor/editor_export.cpp editor/project_export.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp
+msgid "Release"
+msgstr "เผยà¹à¸žà¸£à¹ˆ"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Binary Format"
+msgstr "à¸à¸²à¸£à¸”ำเนินà¸à¸²à¸£à¸ªà¸µ"
+
+#: editor/editor_export.cpp
+msgid "64 Bits"
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Embed PCK"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Texture Format"
+msgstr "ขอบเขตเทà¸à¹€à¸ˆà¸­à¸£à¹Œ"
+
+#: editor/editor_export.cpp
+msgid "BPTC"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "S3TC"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "ETC"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "ETC2"
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "No BPTC Fallbacks"
+msgstr ""
+
+#: editor/editor_export.cpp platform/android/export/export_plugin.cpp
+#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
msgid "Custom debug template not found."
msgstr "ไม่พบเทมเพลตà¸à¸²à¸£à¸”ีบัà¸à¹à¸šà¸šà¸à¸³à¸«à¸™à¸”เอง"
@@ -2922,6 +2987,7 @@ msgid "Make Current"
msgstr "ทำให้เป็นปัจจุบัน"
#: editor/editor_feature_profile.cpp editor/editor_node.cpp
+#: editor/import/resource_importer_scene.cpp
#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
msgid "Import"
msgstr "นำเข้า"
@@ -3052,8 +3118,11 @@ msgstr "สำเร็จ!"
msgid "Display Mode"
msgstr "โหมดà¸à¸²à¸£à¹€à¸¥à¹ˆà¸™:"
-#: editor/editor_file_dialog.cpp main/main.cpp modules/csg/csg_shape.cpp
-#: modules/visual_script/visual_script_nodes.cpp
+#: editor/editor_file_dialog.cpp
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+#: editor/import/resource_importer_wav.cpp main/main.cpp
+#: modules/csg/csg_shape.cpp modules/visual_script/visual_script_nodes.cpp
#: modules/visual_script/visual_script_yield_nodes.cpp scene/2d/light_2d.cpp
#: scene/2d/physics_body_2d.cpp scene/2d/tile_map.cpp
#: scene/3d/baked_lightmap.cpp scene/3d/light.cpp scene/3d/physics_body.cpp
@@ -3190,7 +3259,9 @@ msgstr "à¸à¸³à¸¥à¸±à¸‡à¸™à¸³à¹€à¸‚้าทรัพยาà¸à¸£(อีà¸à¸„à¸
msgid "Reimport Missing Imported Files"
msgstr ""
-#: editor/editor_help.cpp
+#: editor/editor_help.cpp scene/2d/camera_2d.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/resources/dynamic_font.cpp
+#: scene/resources/style_box.cpp
msgid "Top"
msgstr "บนสุด"
@@ -3245,6 +3316,7 @@ msgid "Fonts"
msgstr "ฟอนต์"
#: editor/editor_help.cpp editor/plugins/theme_editor_plugin.cpp
+#: platform/iphone/export/export.cpp
#, fuzzy
msgid "Icons"
msgstr "รูปย่อ"
@@ -3412,7 +3484,9 @@ msgstr ""
msgid "Pin value [Disabled because '%s' is editor-only]"
msgstr ""
-#: editor/editor_inspector.cpp editor/scene_tree_dock.cpp
+#: editor/editor_inspector.cpp
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+#: editor/scene_tree_dock.cpp
#: modules/visual_script/visual_script_func_nodes.cpp
#: modules/visual_script/visual_script_nodes.cpp
#: modules/visual_script/visual_script_property_selector.cpp
@@ -3743,6 +3817,16 @@ msgid "Quick Open Script..."
msgstr "เปิดสคริปต์ด่วน..."
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Save & Reload"
+msgstr "บันทึà¸à¹à¸¥à¸°à¹€à¸£à¸´à¹ˆà¸¡à¹ƒà¸«à¸¡à¹ˆ"
+
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Save changes to '%s' before reloading?"
+msgstr "บันทึภ'%s' à¸à¹ˆà¸­à¸™à¸›à¸´à¸”โปรà¹à¸à¸£à¸¡à¸«à¸£à¸·à¸­à¹„ม่?"
+
+#: editor/editor_node.cpp
msgid "Save & Close"
msgstr "บันทึà¸à¹à¸¥à¸°à¸›à¸´à¸”"
@@ -3857,6 +3941,11 @@ msgid "Open Project Manager?"
msgstr "เปิดตัวจัดà¸à¸²à¸£à¹‚ปรเจà¸à¸•์?"
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Save changes to the following scene(s) before reloading?"
+msgstr "บันทึà¸à¸‰à¸²à¸à¸•่อไปนี้à¸à¹ˆà¸­à¸™à¸›à¸´à¸”โปรà¹à¸à¸£à¸¡à¸«à¸£à¸·à¸­à¹„ม่?"
+
+#: editor/editor_node.cpp
msgid "Save & Quit"
msgstr "บันทึà¸à¹à¸¥à¸°à¸›à¸´à¸”"
@@ -4123,8 +4212,8 @@ msgstr "จำนวนครั้งที่เปลี่ยนวัสด
#: editor/editor_node.cpp
#, fuzzy
-msgid "Translate Properties"
-msgstr "คุณสมบัติ"
+msgid "Localize Settings"
+msgstr "à¸à¸²à¸£à¹à¸›à¸¥"
#: editor/editor_node.cpp
#, fuzzy
@@ -4141,8 +4230,8 @@ msgstr "คุณสมบัติ"
#: editor/editor_node.cpp
#, fuzzy
-msgid "Capitalize Properties"
-msgstr "คุณสมบัติ"
+msgid "Default Property Name Style"
+msgstr "ที่อยู่โปรเจà¸à¸•์:"
#: editor/editor_node.cpp
msgid "Default Float Step"
@@ -4742,7 +4831,9 @@ msgstr "ปลั๊à¸à¸­à¸´à¸™à¸—ี่ติดตั้งà¹à¸¥à¹‰à¸§:"
msgid "Update"
msgstr "อัปเดต"
-#: editor/editor_plugin_settings.cpp
+#: editor/editor_plugin_settings.cpp platform/android/export/export_plugin.cpp
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp
#, fuzzy
msgid "Version"
msgstr "รุ่น:"
@@ -5777,7 +5868,7 @@ msgstr "สี่เหลี่ยมผืนผ้าเต็ม"
msgid "Rect Custom Position"
msgstr "à¸à¸³à¸«à¸™à¸”เส้นโค้งขาออà¸"
-#: editor/editor_settings.cpp
+#: editor/editor_settings.cpp platform/android/export/export_plugin.cpp
msgid "Screen"
msgstr ""
@@ -5804,6 +5895,19 @@ msgid "Editor SSL Certificates"
msgstr "à¸à¸²à¸£à¸•ั้งค่าตัวà¹à¸à¹‰à¹„ข"
#: editor/editor_settings.cpp
+msgid "HTTP Proxy"
+msgstr ""
+
+#: editor/editor_settings.cpp
+msgid "Host"
+msgstr ""
+
+#: editor/editor_settings.cpp editor/fileserver/editor_file_server.cpp
+#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp
+msgid "Port"
+msgstr ""
+
+#: editor/editor_settings.cpp
msgid "Project Manager"
msgstr "ตัวจัดà¸à¸²à¸£à¹‚ปรเจà¸à¸•์"
@@ -5846,7 +5950,8 @@ msgstr ""
msgid "String Color"
msgstr "เà¸à¹‡à¸šà¹„ฟล์:"
-#: editor/editor_settings.cpp
+#: editor/editor_settings.cpp platform/javascript/export/export.cpp
+#: platform/uwp/export/export.cpp
#, fuzzy
msgid "Background Color"
msgstr "สีพื้นหลังผิดพลาด"
@@ -6028,22 +6133,6 @@ msgid "Starting the download..."
msgstr ""
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "HTTP Proxy"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Host"
-msgstr ""
-
-#: editor/export_template_manager.cpp editor/fileserver/editor_file_server.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp main/main.cpp
-#: modules/mono/mono_gd/gd_mono.cpp
-msgid "Port"
-msgstr ""
-
-#: editor/export_template_manager.cpp
msgid "Error requesting URL:"
msgstr "ผิดพลาดขณะà¸à¸³à¸¥à¸±à¸‡à¸£à¹‰à¸­à¸‡à¸‚อ URL:"
@@ -6309,6 +6398,7 @@ msgstr ""
#: editor/fileserver/editor_file_server.cpp
#: editor/plugins/version_control_editor_plugin.cpp
+#: platform/uwp/export/export.cpp platform/windows/export/export.cpp
msgid "Password"
msgstr ""
@@ -6685,6 +6775,117 @@ msgstr ""
msgid "Use Ambient"
msgstr ""
+#: editor/import/resource_importer_bitmask.cpp
+#, fuzzy
+msgid "Create From"
+msgstr "สร้างโฟลเดอร์"
+
+#: editor/import/resource_importer_bitmask.cpp
+#: servers/audio/effects/audio_effect_compressor.cpp
+msgid "Threshold"
+msgstr ""
+
+#: editor/import/resource_importer_csv_translation.cpp
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_scene.cpp
+#: editor/import/resource_importer_texture.cpp
+#: editor/import/resource_importer_wav.cpp scene/3d/gi_probe.cpp
+#, fuzzy
+msgid "Compress"
+msgstr "ไลบรารี"
+
+#: editor/import/resource_importer_csv_translation.cpp
+msgid "Delimiter"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+msgid "No BPTC If RGB"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/sprite_3d.cpp
+#: scene/resources/material.cpp scene/resources/particles_material.cpp
+#: scene/resources/texture.cpp
+msgid "Flags"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/animation/tween.cpp
+#: scene/resources/texture.cpp
+msgid "Repeat"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/2d/light_2d.cpp
+#: scene/gui/control.cpp scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Filter"
+msgstr "ตัวà¸à¸£à¸­à¸‡:"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Mipmaps"
+msgstr "สัà¸à¸à¸²à¸“"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+msgid "Anisotropic"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+msgid "sRGB"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#, fuzzy
+msgid "Slices"
+msgstr "à¹à¸šà¹ˆà¸‡à¸­à¸±à¸•โนมัติ"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
+#: scene/resources/style_box.cpp
+#, fuzzy
+msgid "Horizontal"
+msgstr "à¹à¸™à¸§à¸™à¸­à¸™:"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
+#: scene/resources/style_box.cpp
+#, fuzzy
+msgid "Vertical"
+msgstr "à¹à¸™à¸§à¸•ั้ง:"
+
+#: editor/import/resource_importer_obj.cpp
+#, fuzzy
+msgid "Generate Tangents"
+msgstr "จำนวนจุดที่สร้างขึ้น:"
+
+#: editor/import/resource_importer_obj.cpp
+#, fuzzy
+msgid "Scale Mesh"
+msgstr "โหมดปรับขนาด"
+
+#: editor/import/resource_importer_obj.cpp
+#, fuzzy
+msgid "Offset Mesh"
+msgstr "เลื่อน:"
+
+#: editor/import/resource_importer_obj.cpp
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Octahedral Compression"
+msgstr "ตั้งค่านิพจน์"
+
+#: editor/import/resource_importer_obj.cpp
+#, fuzzy
+msgid "Optimize Mesh Flags"
+msgstr "ขนาด: "
+
#: editor/import/resource_importer_scene.cpp
msgid "Import as Single Scene"
msgstr "นำเข้าเป็นฉาà¸à¹€à¸”ียว"
@@ -6725,6 +6926,156 @@ msgstr "นำเข้าเป็นหลายฉาà¸"
msgid "Import as Multiple Scenes+Materials"
msgstr "นำเข้าเป็นหลายฉาà¸à¹à¸¥à¸°à¸§à¸±à¸ªà¸”ุ"
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Nodes"
+msgstr "โนด"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Root Type"
+msgstr "ชนิดสมาชิà¸"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Root Name"
+msgstr "ควบคุม "
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Root Scale"
+msgstr "อัตราส่วน:"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Custom Script"
+msgstr "ตัดโหนด"
+
+#: editor/import/resource_importer_scene.cpp scene/resources/texture.cpp
+#, fuzzy
+msgid "Storage"
+msgstr "เà¸à¹‡à¸šà¹„ฟล์:"
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Use Legacy Names"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+#, fuzzy
+msgid "Materials"
+msgstr "จำนวนครั้งที่เปลี่ยนวัสดุ"
+
+#: editor/import/resource_importer_scene.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Location"
+msgstr "à¸à¸²à¸£à¹à¸›à¸¥"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Keep On Reimport"
+msgstr "นำเข้าใหม่"
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+#, fuzzy
+msgid "Meshes"
+msgstr "Mesh"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Ensure Tangents"
+msgstr "à¹à¸à¹‰à¹„ขเส้นสัมผัสเส้นโค้ง"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Light Baking"
+msgstr "สร้าง Lightmaps"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Lightmap Texel Size"
+msgstr "สร้าง Lightmaps"
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+msgid "Skins"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Use Named Skins"
+msgstr "ใช้สà¹à¸™à¸›à¸‚นาด"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "External Files"
+msgstr "เปิดไฟล์"
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Store In Subdir"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Filter Script"
+msgstr "ตัวà¸à¸£à¸­à¸‡à¸ªà¸„ริปต์"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Keep Custom Tracks"
+msgstr "à¸à¸²à¸£à¹à¸›à¸¥à¸‡"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Optimizer"
+msgstr "เพิ่มประสิทธิภาพ"
+
+#: editor/import/resource_importer_scene.cpp main/main.cpp
+#: modules/mono/mono_gd/gd_mono.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp scene/2d/camera_2d.cpp scene/2d/light_2d.cpp
+#: scene/2d/navigation_polygon.cpp scene/2d/ray_cast_2d.cpp scene/2d/sprite.cpp
+#: scene/2d/y_sort.cpp scene/3d/audio_stream_player_3d.cpp
+#: scene/3d/baked_lightmap.cpp scene/3d/interpolated_camera.cpp
+#: scene/3d/light.cpp scene/3d/navigation_mesh_instance.cpp
+#: scene/3d/physics_joint.cpp scene/3d/ray_cast.cpp scene/3d/sprite_3d.cpp
+#: scene/gui/graph_edit.cpp scene/gui/rich_text_label.cpp
+#: scene/resources/curve.cpp scene/resources/environment.cpp
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Enabled"
+msgstr "เปิด"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Max Linear Error"
+msgstr "คลาดเคลื่อนเชิงเส้นมาà¸à¸—ี่สุด:"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Max Angular Error"
+msgstr "คลาดเคลื่อนเชิงมุมมาà¸à¸—ี่สุด:"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Max Angle"
+msgstr "ค่า"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Remove Unused Tracks"
+msgstr "ลบà¹à¸—ร็à¸à¹à¸­à¸™à¸´à¹€à¸¡à¸Šà¸±à¸™"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Clips"
+msgstr "คลิปà¹à¸­à¸™à¸´à¹€à¸¡à¸Šà¸±à¸™"
+
+#: editor/import/resource_importer_scene.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/particles_2d.cpp scene/3d/area.cpp scene/3d/cpu_particles.cpp
+#: scene/3d/particles.cpp scene/resources/environment.cpp
+#, fuzzy
+msgid "Amount"
+msgstr "จำนวน:"
+
#: editor/import/resource_importer_scene.cpp
#: editor/plugins/mesh_library_editor_plugin.cpp
msgid "Import Scene"
@@ -6766,12 +7117,149 @@ msgstr "คุณส่งคืนออบเจà¸à¸•์โหนดย่อ
msgid "Saving..."
msgstr "à¸à¸³à¸¥à¸±à¸‡à¸šà¸±à¸™à¸—ึà¸..."
+#: editor/import/resource_importer_texture.cpp scene/resources/texture.cpp
+msgid "Lossy Quality"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "HDR Mode"
+msgstr "โหมดเลือà¸"
+
+#: editor/import/resource_importer_texture.cpp
+msgid "BPTC LDR"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/mesh_instance_2d.cpp scene/2d/multimesh_instance_2d.cpp
+#: scene/2d/particles_2d.cpp scene/2d/sprite.cpp scene/resources/style_box.cpp
+msgid "Normal Map"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Process"
+msgstr "หลังประมวลผล"
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Fix Alpha Border"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Premult Alpha"
+msgstr "à¹à¸à¹‰à¹„ขรูปหลายเหลี่ยม"
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Hdr As Srgb"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Invert Color"
+msgstr "เวอร์เทà¸à¸‹à¹Œ"
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Normal Map Invert Y"
+msgstr "สุ่มขนาด:"
+
+#: editor/import/resource_importer_texture.cpp
+#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
+#: scene/audio/audio_stream_player.cpp scene/gui/video_player.cpp
+msgid "Stream"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Size Limit"
+msgstr "ขนาด: "
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Detect 3D"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "SVG"
+msgstr "HSV"
+
#: editor/import/resource_importer_texture.cpp
msgid ""
"Warning, no suitable PC VRAM compression enabled in Project Settings. This "
"texture will not display correctly on PC."
msgstr ""
+#: editor/import/resource_importer_texture_atlas.cpp
+#, fuzzy
+msgid "Atlas File"
+msgstr "ขนาดเส้นรอบรูป:"
+
+#: editor/import/resource_importer_texture_atlas.cpp
+#, fuzzy
+msgid "Import Mode"
+msgstr "วิธีà¸à¸²à¸£à¸ªà¹ˆà¸‡à¸­à¸­à¸:"
+
+#: editor/import/resource_importer_texture_atlas.cpp
+#, fuzzy
+msgid "Crop To Region"
+msgstr "ตั้งขอบเขตไทล์"
+
+#: editor/import/resource_importer_texture_atlas.cpp
+msgid "Trim Alpha Border From Region"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp scene/2d/physics_body_2d.cpp
+#, fuzzy
+msgid "Force"
+msgstr "Mesh ต้นฉบับ:"
+
+#: editor/import/resource_importer_wav.cpp
+msgid "8 Bit"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp main/main.cpp
+#: modules/mono/editor/csharp_project.cpp modules/mono/mono_gd/gd_mono.cpp
+msgid "Mono"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+#, fuzzy
+msgid "Max Rate"
+msgstr "โหนด Mix"
+
+#: editor/import/resource_importer_wav.cpp
+#, fuzzy
+msgid "Max Rate Hz"
+msgstr "โหนด Mix"
+
+#: editor/import/resource_importer_wav.cpp
+msgid "Trim"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+#, fuzzy
+msgid "Normalize"
+msgstr "รูปà¹à¸šà¸š"
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+#, fuzzy
+msgid "Loop Mode"
+msgstr "โหมดเคลื่อนย้าย"
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+#, fuzzy
+msgid "Loop Begin"
+msgstr "โหมดเคลื่อนย้าย"
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+#, fuzzy
+msgid "Loop End"
+msgstr "โหมดเคลื่อนย้าย"
+
#: editor/import_defaults_editor.cpp
msgid "Select Importer"
msgstr "เลือà¸à¸•ัวนำเข้า"
@@ -6841,6 +7329,29 @@ msgstr "โหลดทรัพยาà¸à¸£à¹„ม่ได้"
#: editor/inspector_dock.cpp
#, fuzzy
+msgid "Property Name Style"
+msgstr "ชื่อโปรเจà¸à¸•์:"
+
+#: editor/inspector_dock.cpp scene/gui/color_picker.cpp
+msgid "Raw"
+msgstr "Raw"
+
+#: editor/inspector_dock.cpp
+#, fuzzy
+msgid "Capitalized"
+msgstr "อัà¸à¸©à¸£à¹à¸£à¸à¸žà¸´à¸¡à¸žà¹Œà¹ƒà¸«à¸à¹ˆ"
+
+#: editor/inspector_dock.cpp
+#, fuzzy
+msgid "Localized"
+msgstr "ภูมิภาค"
+
+#: editor/inspector_dock.cpp
+msgid "Localization not available for current language."
+msgstr ""
+
+#: editor/inspector_dock.cpp
+#, fuzzy
msgid "Copy Properties"
msgstr "คุณสมบัติ"
@@ -7885,18 +8396,26 @@ msgid "License (Z-A)"
msgstr "สัà¸à¸à¸²à¸­à¸™à¸¸à¸à¸²à¸• (Z-A)"
#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgctxt "Pagination"
msgid "First"
msgstr "à¹à¸£à¸à¸ªà¸¸à¸”"
-#: editor/plugins/asset_library_editor_plugin.cpp scene/gui/control.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgctxt "Pagination"
msgid "Previous"
msgstr "à¸à¹ˆà¸­à¸™à¸«à¸™à¹‰à¸²"
-#: editor/plugins/asset_library_editor_plugin.cpp scene/gui/control.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgctxt "Pagination"
msgid "Next"
msgstr "ต่อไป"
#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgctxt "Pagination"
msgid "Last"
msgstr "ท้ายสุด"
@@ -8138,19 +8657,19 @@ msgid ""
"margins."
msgstr "เมื่อใช้งานอยู่ à¸à¸²à¸£à¹€à¸¥à¸·à¹ˆà¸­à¸™à¹‚หนดควบคุมจะเปลี่ยนจุดยึดà¹à¸—นที่จะเป็นระยะขอบ"
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Top Left"
msgstr "บนซ้าย"
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Top Right"
msgstr "บนขวา"
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Bottom Right"
msgstr "ล่างขวา"
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Bottom Left"
msgstr "ซ้ายล่าง"
@@ -8872,6 +9391,19 @@ msgstr "สร้าง GI Probe"
msgid "Gradient Edited"
msgstr "à¹à¸à¹‰à¹„ขเà¸à¸£à¹€à¸”ียนต์"
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+msgid "Swap GradientTexture2D Fill Points"
+msgstr ""
+
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+msgid "Swap Gradient Fill Points"
+msgstr ""
+
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+#, fuzzy
+msgid "Toggle Grid Snap"
+msgstr "สลับโหมด"
+
#: editor/plugins/item_list_editor_plugin.cpp
msgid "Item %d"
msgstr "ไอเทม %d"
@@ -9101,8 +9633,9 @@ msgstr ""
"อัพเดตจาà¸à¸‰à¸²à¸à¸—ี่มีอยู่หรือไม่\n"
"%s"
-#: editor/plugins/mesh_library_editor_plugin.cpp modules/gridmap/grid_map.cpp
-msgid "Mesh Library"
+#: editor/plugins/mesh_library_editor_plugin.cpp
+#, fuzzy
+msgid "MeshLibrary"
msgstr "ไลบรารี mesh"
#: editor/plugins/mesh_library_editor_plugin.cpp
@@ -10099,8 +10632,8 @@ msgstr "เชื่อมไปยังเมธอด:"
msgid "Source"
msgstr "ต้นฉบับ"
-#: editor/plugins/script_text_editor.cpp scene/3d/interpolated_camera.cpp
-#: scene/animation/skeleton_ik.cpp
+#: editor/plugins/script_text_editor.cpp platform/uwp/export/export.cpp
+#: scene/3d/interpolated_camera.cpp scene/animation/skeleton_ik.cpp
msgid "Target"
msgstr "เป้าหมาย"
@@ -11102,7 +11635,9 @@ msgstr "ความเร็ว:"
#: editor/plugins/sprite_frames_editor_plugin.cpp
#: modules/gltf/gltf_animation.cpp modules/minimp3/audio_stream_mp3.cpp
-#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp scene/2d/path_2d.cpp
+#: modules/minimp3/resource_importer_mp3.cpp
+#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp
+#: modules/stb_vorbis/resource_importer_ogg_vorbis.cpp scene/2d/path_2d.cpp
#: scene/3d/path.cpp scene/resources/animation.cpp scene/resources/material.cpp
msgid "Loop"
msgstr "วน"
@@ -12050,8 +12585,9 @@ msgstr "บิทมาร์à¸"
msgid "Priority"
msgstr "à¸à¸²à¸£à¸ˆà¸±à¸”ลำดับความสำคัà¸"
-#: editor/plugins/tile_set_editor_plugin.cpp main/main.cpp scene/gui/button.cpp
-#: scene/gui/item_list.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp main/main.cpp
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#: scene/gui/button.cpp scene/gui/item_list.cpp
msgid "Icon"
msgstr "รูปย่อ"
@@ -13414,10 +13950,6 @@ msgstr ""
"ปัà¸à¸«à¸²à¸­à¸²à¸ˆà¹€à¸à¸´à¸”จาà¸à¸„่าที่ตั้งในพรีเซ็ตà¸à¸²à¸£à¸ªà¹ˆà¸‡à¸­à¸­à¸à¸«à¸£à¸·à¸­à¸à¸²à¸£à¸•ั้งค่าà¸à¸²à¸£à¸ªà¹ˆà¸‡à¸­à¸­à¸"
#: editor/project_export.cpp
-msgid "Release"
-msgstr "เผยà¹à¸žà¸£à¹ˆ"
-
-#: editor/project_export.cpp
msgid "Exporting All"
msgstr "ส่งออà¸à¸—ั้งหมด"
@@ -15267,6 +15799,7 @@ msgid "Change AudioStreamPlayer3D Emission Angle"
msgstr "à¹à¸à¹‰à¹„ของศาà¸à¸²à¸£à¹€à¸›à¸¥à¹ˆà¸‡à¹€à¸ªà¸µà¸¢à¸‡à¸‚อง AudioStreamPlayer3D"
#: editor/spatial_editor_gizmos.cpp modules/gltf/gltf_node.cpp
+#: platform/osx/export/export.cpp
msgid "Camera"
msgstr ""
@@ -15554,7 +16087,8 @@ msgstr ""
msgid "Use Nvidia Rect Flicker Workaround"
msgstr ""
-#: main/main.cpp platform/uwp/os_uwp.cpp
+#: main/main.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp platform/uwp/os_uwp.cpp
#, fuzzy
msgid "Display"
msgstr "à¹à¸ªà¸”งทั้งหมด"
@@ -15615,19 +16149,6 @@ msgstr ""
msgid "Allowed"
msgstr ""
-#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp scene/2d/camera_2d.cpp
-#: scene/2d/light_2d.cpp scene/2d/navigation_polygon.cpp
-#: scene/2d/ray_cast_2d.cpp scene/2d/sprite.cpp scene/2d/y_sort.cpp
-#: scene/3d/audio_stream_player_3d.cpp scene/3d/baked_lightmap.cpp
-#: scene/3d/interpolated_camera.cpp scene/3d/light.cpp
-#: scene/3d/navigation_mesh_instance.cpp scene/3d/ray_cast.cpp
-#: scene/3d/sprite_3d.cpp scene/gui/graph_edit.cpp
-#: scene/gui/rich_text_label.cpp scene/resources/curve.cpp
-#: scene/resources/environment.cpp
-#, fuzzy
-msgid "Enabled"
-msgstr "เปิด"
-
#: main/main.cpp
msgid "Intended Usage"
msgstr ""
@@ -15659,13 +16180,14 @@ msgstr ""
msgid "Handheld"
msgstr ""
-#: main/main.cpp
+#: main/main.cpp platform/javascript/export/export.cpp
+#: platform/uwp/export/export.cpp
#, fuzzy
msgid "Orientation"
msgstr "เปิดคู่มือ"
#: main/main.cpp scene/gui/scroll_container.cpp scene/gui/text_edit.cpp
-#: scene/main/scene_tree.cpp
+#: scene/main/scene_tree.cpp scene/register_scene_types.cpp
#, fuzzy
msgid "Common"
msgstr "ชุมชน"
@@ -15708,7 +16230,7 @@ msgstr ""
#: main/main.cpp
#, fuzzy
-msgid "Frame Delay (msec)"
+msgid "Frame Delay Msec"
msgstr "ให้สิ่งที่เลือà¸à¹€à¸•็มจอ"
#: main/main.cpp
@@ -15836,11 +16358,6 @@ msgstr ""
msgid "Tooltip Position Offset"
msgstr "องศาเริ่มต้น:"
-#: main/main.cpp modules/mono/editor/csharp_project.cpp
-#: modules/mono/mono_gd/gd_mono.cpp
-msgid "Mono"
-msgstr ""
-
#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp
#, fuzzy
msgid "Debugger Agent"
@@ -16420,7 +16937,7 @@ msgstr "สี"
msgid "Intensity"
msgstr ""
-#: modules/gltf/gltf_light.cpp scene/2d/light_2d.cpp
+#: modules/gltf/gltf_light.cpp scene/2d/light_2d.cpp scene/3d/light.cpp
#, fuzzy
msgid "Range"
msgstr "เปลี่ยน"
@@ -16567,11 +17084,6 @@ msgstr "à¹à¸ªà¸‡"
msgid "Use Named Skin Binds"
msgstr ""
-#: modules/gltf/gltf_state.cpp scene/3d/physics_joint.cpp
-#, fuzzy
-msgid "Nodes"
-msgstr "โนด"
-
#: modules/gltf/gltf_state.cpp
#, fuzzy
msgid "Buffer Views"
@@ -16583,16 +17095,6 @@ msgstr ""
#: modules/gltf/gltf_state.cpp
#, fuzzy
-msgid "Meshes"
-msgstr "Mesh"
-
-#: modules/gltf/gltf_state.cpp
-#, fuzzy
-msgid "Materials"
-msgstr "จำนวนครั้งที่เปลี่ยนวัสดุ"
-
-#: modules/gltf/gltf_state.cpp
-#, fuzzy
msgid "Scene Name"
msgstr "ตำà¹à¸«à¸™à¹ˆà¸‡à¸—ี่อยู่ฉาà¸:"
@@ -16608,15 +17110,11 @@ msgstr "ชื่อโหนดà¹à¸¡à¹ˆ"
msgid "Textures"
msgstr "ฟีเจอร์"
-#: modules/gltf/gltf_state.cpp
+#: modules/gltf/gltf_state.cpp platform/uwp/export/export.cpp
msgid "Images"
msgstr ""
#: modules/gltf/gltf_state.cpp
-msgid "Skins"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp
msgid "Cameras"
msgstr ""
@@ -16651,11 +17149,15 @@ msgid "Src Image"
msgstr "à¹à¸ªà¸”งโครง"
#: modules/gridmap/grid_map.cpp
+msgid "Mesh Library"
+msgstr "ไลบรารี mesh"
+
+#: modules/gridmap/grid_map.cpp
#, fuzzy
msgid "Physics Material"
msgstr "% ของเฟรมฟิสิà¸à¸ªà¹Œ"
-#: modules/gridmap/grid_map.cpp
+#: modules/gridmap/grid_map.cpp scene/3d/visual_instance.cpp
#, fuzzy
msgid "Use In Baked Light"
msgstr "สร้าง Lightmaps"
@@ -16687,6 +17189,7 @@ msgstr "à¸à¸¥à¸²à¸‡"
#: modules/gridmap/grid_map.cpp scene/2d/collision_object_2d.cpp
#: scene/2d/tile_map.cpp scene/3d/collision_object.cpp scene/3d/soft_body.cpp
+#: scene/resources/material.cpp
msgid "Mask"
msgstr ""
@@ -16869,7 +17372,9 @@ msgid "Ultra Quality Ray Count"
msgstr ""
#: modules/minimp3/audio_stream_mp3.cpp
+#: modules/minimp3/resource_importer_mp3.cpp
#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp
+#: modules/stb_vorbis/resource_importer_ogg_vorbis.cpp
#, fuzzy
msgid "Loop Offset"
msgstr "เลื่อน:"
@@ -17974,6 +18479,192 @@ msgid "The package must have at least one '.' separator."
msgstr "à¹à¸žà¹‡à¸„เà¸à¸ˆà¸ˆà¸³à¹€à¸›à¹‡à¸™à¸•้องมี '.' อย่างน้อยหนึ่งตัว"
#: platform/android/export/export_plugin.cpp
+msgid "Use Custom Build"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Export Format"
+msgstr "ไดเรà¸à¸—อรีส่งออà¸"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Keystore"
+msgstr "ตัวดีบัà¸"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Debug User"
+msgstr "ตัวดีบัà¸"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+msgid "Debug Password"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Release User"
+msgstr "เผยà¹à¸žà¸£à¹ˆ"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Release Password"
+msgstr "เผยà¹à¸žà¸£à¹ˆ"
+
+#: platform/android/export/export_plugin.cpp
+msgid "One Click Deploy"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Clear Previous Install"
+msgstr "ตรวจสอบอินสà¹à¸•นซ์à¸à¹ˆà¸­à¸™à¸«à¸™à¹‰à¸²"
+
+#: platform/android/export/export_plugin.cpp scene/resources/shader.cpp
+msgid "Code"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Min SDK"
+msgstr "ขนาดเส้นรอบรูป:"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Target SDK"
+msgstr "เป้าหมาย"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Package"
+msgstr "à¸à¸³à¸¥à¸±à¸‡à¸£à¸§à¸šà¸£à¸§à¸¡"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Unique Name"
+msgstr "ชื่อโนด:"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Signed"
+msgstr "สัà¸à¸à¸²à¸“"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Classify As Game"
+msgstr "ชื่อคลาส:"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Retain Data On Uninstall"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Exclude From Recents"
+msgstr "ลบโหนด"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Graphics"
+msgstr "จุดà¸à¸³à¹€à¸™à¸´à¸”ตาราง:"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "OpenGL Debug"
+msgstr "เปิด"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "XR Features"
+msgstr "ฟีเจอร์"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "XR Mode"
+msgstr "โหมดมุมมอง"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Hand Tracking"
+msgstr "à¸à¸³à¸¥à¸±à¸‡à¸£à¸§à¸šà¸£à¸§à¸¡"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Hand Tracking Frequency"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Passthrough"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Immersive Mode"
+msgstr "โหมดà¸à¸²à¸£à¸ˆà¸±à¸”ลำดับความสำคัà¸"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Support Small"
+msgstr "สนับสนุน..."
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Support Normal"
+msgstr "สนับสนุน..."
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Support Large"
+msgstr "สนับสนุน..."
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Support Xlarge"
+msgstr "สนับสนุน..."
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "User Data Backup"
+msgstr "อินเตอร์เฟส"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Allow"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Command Line"
+msgstr "ชุมชน"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Extra Args"
+msgstr "ตัวà¹à¸›à¸£à¹€à¸žà¸´à¹ˆà¸¡à¹€à¸•ิม:"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "APK Expansion"
+msgstr "ตั้งค่านิพจน์"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Salt"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Public Key"
+msgstr "สร้างคีย์ซ้ำอีà¸à¸­à¸±à¸™"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Permissions"
+msgstr "Mask à¸à¸²à¸£à¸›à¸°à¸—ุ"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Custom Permissions"
+msgstr "เลือà¸à¹€à¸¥à¹ˆà¸™à¸‰à¸²à¸"
+
+#: platform/android/export/export_plugin.cpp
msgid "Select device from the list"
msgstr "เลือà¸à¸­à¸¸à¸›à¸à¸£à¸“์จาà¸à¸£à¸²à¸¢à¸Šà¸·à¹ˆà¸­"
@@ -18288,6 +18979,177 @@ msgid "The character '%s' is not allowed in Identifier."
msgstr "ไม่อนุà¸à¸²à¸•ให้ใช้อัà¸à¸‚ระ '% s' ในตัวระบุ"
#: platform/iphone/export/export.cpp
+msgid "App Store Team ID"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Provisioning Profile UUID Debug"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Code Sign Identity Debug"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Export Method Debug"
+msgstr "ส่งออà¸à¸žà¸£à¹‰à¸­à¸¡à¸à¸²à¸£à¹à¸à¹‰à¹„ขจุดบà¸à¸žà¸£à¹ˆà¸­à¸‡"
+
+#: platform/iphone/export/export.cpp
+msgid "Provisioning Profile UUID Release"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Code Sign Identity Release"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Export Method Release"
+msgstr "วิธีà¸à¸²à¸£à¸ªà¹ˆà¸‡à¸­à¸­à¸:"
+
+#: platform/iphone/export/export.cpp
+msgid "Targeted Device Family"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Info"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Identifier"
+msgstr "ระบุไม่ถูà¸à¸•้อง:"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Signature"
+msgstr "สัà¸à¸à¸²à¸“"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Short Version"
+msgstr "รุ่น:"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Copyright"
+msgstr "บนขวา"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Capabilities"
+msgstr "คุณสมบัติ"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Access Wi-Fi"
+msgstr "สำเร็จ!"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Push Notifications"
+msgstr "สุ่มà¸à¸²à¸£à¸«à¸¡à¸¸à¸™:"
+
+#: platform/iphone/export/export.cpp scene/3d/baked_lightmap.cpp
+#, fuzzy
+msgid "User Data"
+msgstr "อินเตอร์เฟส"
+
+#: platform/iphone/export/export.cpp
+msgid "Accessible From Files App"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Accessible From Itunes Sharing"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Privacy"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Camera Usage Description"
+msgstr "รายละเอียด"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Microphone Usage Description"
+msgstr "รายละเอียดของคุณสมบัติ"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Photolibrary Usage Description"
+msgstr "รายละเอียดของคุณสมบัติ"
+
+#: platform/iphone/export/export.cpp
+msgid "iPhone 120 X 120"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPhone 180 X 180"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 76 X 76"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 152 X 152"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 167 X 167"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "App Store 1024 X 1024"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Spotlight 40 X 40"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Spotlight 80 X 80"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Storyboard"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Use Launch Screen Storyboard"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Image Scale Mode"
+msgstr "โหมดปรับขนาด"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Custom Image @2x"
+msgstr "ตัดโหนด"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Custom Image @3x"
+msgstr "ตัดโหนด"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Use Custom BG Color"
+msgstr "ตัดโหนด"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Custom BG Color"
+msgstr "ตัดโหนด"
+
+#: platform/iphone/export/export.cpp
msgid "App Store Team ID not specified - cannot configure the project."
msgstr "App Store Team ID ยังไม่ได้ระบุ - ไม่สามารถà¸à¸³à¸«à¸™à¸”ค่าให้โปรเจà¸à¸•์ได้"
@@ -18326,6 +19188,80 @@ msgstr "เขียนไฟล์ไม่ได้:"
#: platform/javascript/export/export.cpp
#, fuzzy
+msgid "Variant"
+msgstr "เว้น:"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Export Type"
+msgstr "ส่งออà¸"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "VRAM Texture Compression"
+msgstr "ตั้งค่านิพจน์"
+
+#: platform/javascript/export/export.cpp
+msgid "For Desktop"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "For Mobile"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Html"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Export Icon"
+msgstr "ขยายออà¸"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Custom Html Shell"
+msgstr "ตัดโหนด"
+
+#: platform/javascript/export/export.cpp
+msgid "Head Include"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Canvas Resize Policy"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Focus Canvas On Start"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Experimental Virtual Keyboard"
+msgstr "à¸à¸£à¸­à¸‡à¸ªà¸±à¸à¸à¸²à¸“"
+
+#: platform/javascript/export/export.cpp
+msgid "Progressive Web App"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Offline Page"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 144 X 144"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 180 X 180"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 512 X 512"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
msgid "Could not read HTML shell:"
msgstr "ไม่สามารถอ่านโครงสร้าง HTML:"
@@ -18441,6 +19377,201 @@ msgid "Unknown object type."
msgstr ""
#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "App Category"
+msgstr "หมวดหมู่:"
+
+#: platform/osx/export/export.cpp
+msgid "High Res"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Location Usage Description"
+msgstr "รายละเอียด"
+
+#: platform/osx/export/export.cpp
+msgid "Address Book Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Calendar Usage Description"
+msgstr "รายละเอียด"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Photos Library Usage Description"
+msgstr "รายละเอียดของคุณสมบัติ"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Desktop Folder Usage Description"
+msgstr "รายละเอียดเมท็อด"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Documents Folder Usage Description"
+msgstr "รายละเอียดเมท็อด"
+
+#: platform/osx/export/export.cpp
+msgid "Downloads Folder Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Network Volumes Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Removable Volumes Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#, fuzzy
+msgid "Codesign"
+msgstr "โนด"
+
+#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Identity"
+msgstr "ย่อหน้าซ้าย"
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#, fuzzy
+msgid "Timestamp"
+msgstr "เวลา"
+
+#: platform/osx/export/export.cpp
+msgid "Hardened Runtime"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Replace Existing Signature"
+msgstr "à¹à¸—นที่ทั้งหมด"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Entitlements"
+msgstr "à¸à¸´à¸ªà¹‚ม"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Custom File"
+msgstr "ตัดโหนด"
+
+#: platform/osx/export/export.cpp
+msgid "Allow JIT Code Execution"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Allow Unsigned Executable Memory"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Allow Dyld Environment Variables"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Disable Library Validation"
+msgstr "ปิดà¸à¸²à¸£à¸—ำงานปุ่ม"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Audio Input"
+msgstr "เพิ่มอินพุต"
+
+#: platform/osx/export/export.cpp
+msgid "Address Book"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Calendars"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Photos Library"
+msgstr "ส่งออà¸à¹„ลบรารี"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Apple Events"
+msgstr "เพิ่มปุ่มà¸à¸”"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Debugging"
+msgstr "ดีบัà¸"
+
+#: platform/osx/export/export.cpp
+msgid "App Sandbox"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Network Server"
+msgstr "โปรไฟล์เน็ตเวิร์à¸"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Network Client"
+msgstr "โปรไฟล์เน็ตเวิร์à¸"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Device Usb"
+msgstr "อุปà¸à¸£à¸“์"
+
+#: platform/osx/export/export.cpp
+msgid "Device Bluetooth"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Files Downloads"
+msgstr "ดาวน์โหลด"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Files Pictures"
+msgstr "ฟีเจอร์"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Files Music"
+msgstr "ไฟล์"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Files Movies"
+msgstr "ตัวà¸à¸£à¸­à¸‡à¹„ทล์"
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#, fuzzy
+msgid "Custom Options"
+msgstr "ตัวเลือภBus"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Notarization"
+msgstr "à¸à¸²à¸£à¹à¸›à¸¥"
+
+#: platform/osx/export/export.cpp
+msgid "Apple ID Name"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Apple ID Password"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Apple Team ID"
+msgstr ""
+
+#: platform/osx/export/export.cpp
msgid ""
"Note: The notarization process generally takes less than an hour. When the "
"process is completed, you'll receive an email."
@@ -18636,6 +19767,136 @@ msgid "Force Builtin Codesign"
msgstr ""
#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Architecture"
+msgstr "เพิ่มรายà¸à¸²à¸£à¹à¸žà¸¥à¸•ฟอร์ม"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Display Name"
+msgstr "à¹à¸ªà¸”งทั้งหมด"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Short Name"
+msgstr "ชื่อสคริปต์:"
+
+#: platform/uwp/export/export.cpp
+msgid "Publisher"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Publisher Display Name"
+msgstr "ชื่อà¹à¸ªà¸”งผู้จัดจำหน่ายà¹à¸žà¸„เà¸à¸ˆà¹„ม่ถูà¸à¸•้อง"
+
+#: platform/uwp/export/export.cpp
+msgid "Product Guid"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Publisher Guid"
+msgstr "ล้างเส้นไà¸à¸”์"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Signing"
+msgstr "สัà¸à¸à¸²à¸“"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Certificate"
+msgstr "มุมรูปทรง"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Algorithm"
+msgstr "ตัวดีบัà¸"
+
+#: platform/uwp/export/export.cpp
+msgid "Major"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Minor"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Build"
+msgstr "โหมดไม้บรรทัด"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Revision"
+msgstr "ตั้งค่านิพจน์"
+
+#: platform/uwp/export/export.cpp
+msgid "Landscape"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Portrait"
+msgstr "พลิà¸à¹à¸™à¸§à¸™à¸­à¸™"
+
+#: platform/uwp/export/export.cpp
+msgid "Landscape Flipped"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Portrait Flipped"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Store Logo"
+msgstr "โหมดปรับขนาด"
+
+#: platform/uwp/export/export.cpp
+msgid "Square 44 X 44 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 71 X 71 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 150 X 150 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 310 X 310 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Wide 310 X 150 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Splash Screen"
+msgstr "จำนวนครั้งในà¸à¸²à¸£à¸§à¸²à¸”"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Tiles"
+msgstr "ไฟล์"
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Square 150 X 150"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Wide 310 X 150"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Square 310 X 310"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
msgid "Invalid package short name."
msgstr "ชื่อà¹à¸žà¹‡à¸„เà¸à¸ˆà¹à¸šà¸šà¸ªà¸±à¹‰à¸™à¸œà¸´à¸”พลาด"
@@ -18701,15 +19962,53 @@ msgid "Debug Certificate"
msgstr ""
#: platform/uwp/export/export.cpp
-msgid "Debug Password"
+#, fuzzy
+msgid "Debug Algorithm"
+msgstr "ตัวดีบัà¸"
+
+#: platform/windows/export/export.cpp
+msgid "Identity Type"
msgstr ""
-#: platform/uwp/export/export.cpp
+#: platform/windows/export/export.cpp
+msgid "Timestamp Server URL"
+msgstr ""
+
+#: platform/windows/export/export.cpp
#, fuzzy
-msgid "Debug Algorithm"
+msgid "Digest Algorithm"
msgstr "ตัวดีบัà¸"
#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "File Version"
+msgstr "รุ่น:"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Product Version"
+msgstr "GUID ของโปรà¹à¸à¸£à¸¡à¹„ม่ถูà¸à¸•้อง"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Company Name"
+msgstr "ชื่อโนด:"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Product Name"
+msgstr "ชื่อโปรเจà¸à¸•์:"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "File Description"
+msgstr "รายละเอียด"
+
+#: platform/windows/export/export.cpp
+msgid "Trademarks"
+msgstr ""
+
+#: platform/windows/export/export.cpp
msgid ""
"The rcedit tool must be configured in the Editor Settings (Export > Windows "
"> Rcedit) to change the icon or app information data."
@@ -18784,12 +20083,14 @@ msgstr "เล่น"
msgid "Centered"
msgstr "à¸à¸¥à¸²à¸‡"
-#: scene/2d/animated_sprite.cpp scene/2d/camera_2d.cpp scene/2d/light_2d.cpp
+#: scene/2d/animated_sprite.cpp scene/2d/camera_2d.cpp
+#: scene/2d/cpu_particles_2d.cpp scene/2d/light_2d.cpp
#: scene/2d/parallax_background.cpp scene/2d/parallax_layer.cpp
#: scene/2d/path_2d.cpp scene/2d/polygon_2d.cpp scene/2d/sprite.cpp
-#: scene/3d/path.cpp scene/3d/physics_body.cpp scene/3d/sprite_3d.cpp
-#: scene/gui/graph_node.cpp scene/gui/rich_text_effect.cpp
-#: scene/main/canvas_layer.cpp scene/resources/material.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/path.cpp scene/3d/physics_body.cpp
+#: scene/3d/sprite_3d.cpp scene/gui/graph_node.cpp
+#: scene/gui/rich_text_effect.cpp scene/main/canvas_layer.cpp
+#: scene/resources/material.cpp scene/resources/particles_material.cpp
#: scene/resources/style_box.cpp
#, fuzzy
msgid "Offset"
@@ -18864,11 +20165,6 @@ msgstr "เพิ่ม Audio Bus"
msgid "Override"
msgstr "à¹à¸—นที่"
-#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
-#: scene/audio/audio_stream_player.cpp scene/gui/video_player.cpp
-msgid "Stream"
-msgstr ""
-
#: scene/2d/audio_stream_player_2d.cpp scene/audio/audio_stream_player.cpp
#: scene/gui/video_player.cpp servers/audio/effects/audio_effect_amplify.cpp
#, fuzzy
@@ -18895,13 +20191,13 @@ msgid "Stream Paused"
msgstr ""
#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
-#: scene/3d/reflection_probe.cpp scene/3d/visual_instance.cpp
-#: scene/resources/material.cpp
+#: scene/3d/light.cpp scene/3d/reflection_probe.cpp
+#: scene/3d/visual_instance.cpp scene/resources/material.cpp
#, fuzzy
msgid "Max Distance"
msgstr "ระยะà¸à¸²à¸£à¹€à¸¥à¸·à¸­à¸:"
-#: scene/2d/audio_stream_player_2d.cpp
+#: scene/2d/audio_stream_player_2d.cpp scene/3d/light.cpp
#, fuzzy
msgid "Attenuation"
msgstr "à¹à¸­à¸™à¸´à¹€à¸¡à¸Šà¸±à¸™"
@@ -18957,6 +20253,24 @@ msgstr "โหมดเคลื่อนย้าย"
msgid "Limit"
msgstr ""
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/style_box.cpp
+#, fuzzy
+msgid "Left"
+msgstr "บนซ้าย"
+
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/style_box.cpp
+#, fuzzy
+msgid "Right"
+msgstr "à¹à¸ªà¸‡"
+
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/dynamic_font.cpp scene/resources/style_box.cpp
+#, fuzzy
+msgid "Bottom"
+msgstr "ซ้ายล่าง"
+
#: scene/2d/camera_2d.cpp
#, fuzzy
msgid "Smoothed"
@@ -19191,13 +20505,6 @@ msgstr ""
msgid "Emitting"
msgstr "ตั้งค่า:"
-#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp scene/3d/area.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
-#: scene/resources/environment.cpp
-#, fuzzy
-msgid "Amount"
-msgstr "จำนวน:"
-
#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp
#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
msgid "Lifetime"
@@ -19262,18 +20569,13 @@ msgstr ""
#: scene/2d/mesh_instance_2d.cpp scene/2d/multimesh_instance_2d.cpp
#: scene/2d/particles_2d.cpp scene/2d/polygon_2d.cpp scene/2d/sprite.cpp
#: scene/3d/sprite_3d.cpp scene/gui/nine_patch_rect.cpp
-#: scene/gui/texture_rect.cpp scene/resources/sky.cpp
-#: scene/resources/style_box.cpp scene/resources/visual_shader_nodes.cpp
+#: scene/gui/texture_rect.cpp scene/resources/material.cpp
+#: scene/resources/sky.cpp scene/resources/style_box.cpp
+#: scene/resources/visual_shader_nodes.cpp
#, fuzzy
msgid "Texture"
msgstr "ตัวอัà¸à¸©à¸£"
-#: scene/2d/cpu_particles_2d.cpp scene/2d/mesh_instance_2d.cpp
-#: scene/2d/multimesh_instance_2d.cpp scene/2d/particles_2d.cpp
-#: scene/2d/sprite.cpp scene/resources/style_box.cpp
-msgid "Normal Map"
-msgstr ""
-
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
#, fuzzy
@@ -19297,10 +20599,10 @@ msgid "Normals"
msgstr "รูปà¹à¸šà¸š"
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/3d/sprite_3d.cpp scene/resources/material.cpp
-#: scene/resources/particles_material.cpp scene/resources/texture.cpp
-msgid "Flags"
-msgstr ""
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Align Y"
+msgstr "ระบุ"
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
@@ -19321,6 +20623,12 @@ msgid "Initial Velocity"
msgstr "เริ่มต้น"
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Velocity Random"
+msgstr "เริ่มต้น"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp servers/physics_2d_server.cpp
#: servers/physics_server.cpp
msgid "Angular Velocity"
@@ -19328,6 +20636,12 @@ msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Velocity Curve"
+msgstr "เริ่มต้น"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
msgid "Orbit Velocity"
msgstr ""
@@ -19339,6 +20653,23 @@ msgstr "เส้นตรง"
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Accel"
+msgstr "สำเร็จ!"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Accel Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Accel Curve"
+msgstr "à¹à¸¢à¸à¹€à¸ªà¹‰à¸™à¹‚ค้ง"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
msgid "Radial Accel"
msgstr ""
@@ -19348,19 +20679,55 @@ msgid "Tangential Accel"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/2d/joints_2d.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/vehicle_body.cpp
-#: scene/resources/particles_material.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/physics_joint.cpp
+#: scene/3d/vehicle_body.cpp scene/resources/particles_material.cpp
#: servers/audio/effects/audio_effect_reverb.cpp
msgid "Damping"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+msgid "Damping Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Damping Curve"
+msgstr "à¹à¸¢à¸à¹€à¸ªà¹‰à¸™à¹‚ค้ง"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp scene/3d/light.cpp
+#: scene/resources/particles_material.cpp
msgid "Angle"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+msgid "Angle Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Angle Curve"
+msgstr "ปิดเส้นโค้ง"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#, fuzzy
+msgid "Scale Amount"
+msgstr "จำนวน:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+msgid "Scale Amount Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#, fuzzy
+msgid "Scale Amount Curve"
+msgstr "ปรับอัตราส่วนเวลาตามเคอร์เซอร์"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
#, fuzzy
msgid "Color Ramp"
msgstr "สี"
@@ -19376,6 +20743,48 @@ msgstr ""
msgid "Hue Variation"
msgstr "เว้น:"
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Variation"
+msgstr "เว้น:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Variation Random"
+msgstr "เว้น:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Variation Curve"
+msgstr "เว้น:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Speed Random"
+msgstr "อัตราส่วน:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Speed Curve"
+msgstr "à¹à¸¢à¸à¹€à¸ªà¹‰à¸™à¹‚ค้ง"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Offset Random"
+msgstr "เลื่อน:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Offset Curve"
+msgstr "ปิดเส้นโค้ง"
+
#: scene/2d/joints_2d.cpp
msgid "Node A and Node B must be PhysicsBody2Ds"
msgstr "โหนด A à¹à¸¥à¸° โหนด B จะต้องเป็น PhysicsBody2D"
@@ -19407,6 +20816,7 @@ msgid "Node B"
msgstr "โนด"
#: scene/2d/joints_2d.cpp scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp
+#: scene/3d/light.cpp scene/3d/physics_joint.cpp
#: scene/resources/environment.cpp
msgid "Bias"
msgstr ""
@@ -19416,7 +20826,7 @@ msgstr ""
msgid "Disable Collision"
msgstr "ปิดà¸à¸²à¸£à¸—ำงานปุ่ม"
-#: scene/2d/joints_2d.cpp
+#: scene/2d/joints_2d.cpp scene/3d/physics_joint.cpp
msgid "Softness"
msgstr ""
@@ -19434,7 +20844,7 @@ msgstr "เริ่มต้น"
msgid "Rest Length"
msgstr ""
-#: scene/2d/joints_2d.cpp scene/3d/vehicle_body.cpp
+#: scene/2d/joints_2d.cpp scene/3d/physics_joint.cpp scene/3d/vehicle_body.cpp
msgid "Stiffness"
msgstr ""
@@ -19455,7 +20865,7 @@ msgid "Texture Scale"
msgstr "ขอบเขตเทà¸à¹€à¸ˆà¸­à¸£à¹Œ"
#: scene/2d/light_2d.cpp scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp
-#: scene/resources/environment.cpp scene/resources/sky.cpp
+#: scene/3d/light.cpp scene/resources/environment.cpp scene/resources/sky.cpp
msgid "Energy"
msgstr ""
@@ -19496,12 +20906,6 @@ msgstr "มุมหลัง"
msgid "Gradient Length"
msgstr "à¹à¸à¹‰à¹„ขเà¸à¸£à¹€à¸”ียนต์"
-#: scene/2d/light_2d.cpp scene/gui/control.cpp
-#: scene/resources/navigation_mesh.cpp
-#, fuzzy
-msgid "Filter"
-msgstr "ตัวà¸à¸£à¸­à¸‡:"
-
#: scene/2d/light_2d.cpp
#, fuzzy
msgid "Filter Smooth"
@@ -19931,11 +21335,6 @@ msgid "Applied Forces"
msgstr ""
#: scene/2d/physics_body_2d.cpp
-#, fuzzy
-msgid "Force"
-msgstr "Mesh ต้นฉบับ:"
-
-#: scene/2d/physics_body_2d.cpp
msgid "Torque"
msgstr ""
@@ -19951,7 +21350,7 @@ msgstr "% ของเฟรมฟิสิà¸à¸ªà¹Œ"
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
#, fuzzy
-msgid "Moving platform"
+msgid "Moving Platform"
msgstr "à¸à¸³à¸¥à¸±à¸‡à¸¢à¹‰à¸²à¸¢à¹€à¸­à¸²à¸•์พุต"
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
@@ -19960,7 +21359,7 @@ msgstr ""
#: scene/2d/physics_body_2d.cpp scene/2d/touch_screen_button.cpp
#: scene/3d/physics_body.cpp scene/gui/texture_button.cpp
-#: scene/resources/line_shape_2d.cpp
+#: scene/resources/line_shape_2d.cpp scene/resources/material.cpp
#, fuzzy
msgid "Normal"
msgstr "รูปà¹à¸šà¸š"
@@ -20201,6 +21600,34 @@ msgid ""
"as parent."
msgstr "VisibilityEnable2D จะทำงานดีที่สุดเมื่อใช้à¸à¸±à¸šà¸‰à¸²à¸à¹à¸¡à¹ˆà¸—ี่à¹à¸à¹‰à¹„ขโดยตรง"
+#: scene/2d/visibility_notifier_2d.cpp scene/3d/visibility_notifier.cpp
+#, fuzzy
+msgid "Pause Animations"
+msgstr "วางà¹à¸­à¸™à¸´à¹€à¸¡à¸Šà¸±à¸™"
+
+#: scene/2d/visibility_notifier_2d.cpp scene/3d/visibility_notifier.cpp
+msgid "Freeze Bodies"
+msgstr ""
+
+#: scene/2d/visibility_notifier_2d.cpp
+#, fuzzy
+msgid "Pause Particles"
+msgstr "อนุภาค"
+
+#: scene/2d/visibility_notifier_2d.cpp
+#, fuzzy
+msgid "Pause Animated Sprites"
+msgstr "วางà¹à¸­à¸™à¸´à¹€à¸¡à¸Šà¸±à¸™"
+
+#: scene/2d/visibility_notifier_2d.cpp
+#, fuzzy
+msgid "Process Parent"
+msgstr "เปิดà¸à¸²à¸£à¸ˆà¸±à¸”ลำดับความสำคัà¸"
+
+#: scene/2d/visibility_notifier_2d.cpp
+msgid "Physics Process Parent"
+msgstr ""
+
#: scene/3d/area.cpp
msgid "Reverb Bus"
msgstr ""
@@ -20297,6 +21724,7 @@ msgid "Attenuation Filter"
msgstr ""
#: scene/3d/audio_stream_player_3d.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
#: servers/audio/effects/audio_effect_filter.cpp
msgid "Cutoff Hz"
msgstr ""
@@ -20341,11 +21769,6 @@ msgid "Octree"
msgstr "ผังย่อย"
#: scene/3d/baked_lightmap.cpp
-#, fuzzy
-msgid "User Data"
-msgstr "อินเตอร์เฟส"
-
-#: scene/3d/baked_lightmap.cpp
msgid "Finding meshes and lights"
msgstr "à¸à¸³à¸¥à¸±à¸‡à¸«à¸² meshes à¹à¸¥à¸° lights"
@@ -20610,6 +22033,16 @@ msgid "Ring Axis"
msgstr "คำเตือน"
#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Rotate Y"
+msgstr "รัà¸"
+
+#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Disable Z"
+msgstr "รายà¸à¸²à¸£à¸—ี่ปิดใช้งาน"
+
+#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
msgid "Flatness"
msgstr ""
@@ -20650,16 +22083,11 @@ msgstr "ไดนามิà¸à¹„ลบรารี"
msgid "Dynamic Range"
msgstr "ไดนามิà¸à¹„ลบรารี"
-#: scene/3d/gi_probe.cpp
+#: scene/3d/gi_probe.cpp scene/3d/light.cpp
msgid "Normal Bias"
msgstr ""
#: scene/3d/gi_probe.cpp
-#, fuzzy
-msgid "Compress"
-msgstr "ไลบรารี"
-
-#: scene/3d/gi_probe.cpp
msgid "Plotting Meshes"
msgstr "วางà¹à¸™à¸§ meshes"
@@ -20688,16 +22116,31 @@ msgstr ""
#: scene/3d/light.cpp
#, fuzzy
+msgid "Indirect Energy"
+msgstr "สีà¸à¸²à¸£à¸›à¸°à¸—ุ"
+
+#: scene/3d/light.cpp
+#, fuzzy
msgid "Negative"
msgstr "GDNative"
#: scene/3d/light.cpp
#, fuzzy
+msgid "Specular"
+msgstr "โหมดไม้บรรทัด"
+
+#: scene/3d/light.cpp
+#, fuzzy
msgid "Bake Mode"
msgstr "โหมดบิทมาร์à¸"
#: scene/3d/light.cpp
#, fuzzy
+msgid "Contact"
+msgstr "เลือà¸à¸ªà¸µ"
+
+#: scene/3d/light.cpp
+#, fuzzy
msgid "Reverse Cull Face"
msgstr "รีเซ็ตระดับเสียงบัส"
@@ -20708,11 +22151,31 @@ msgstr "ทิศทาง"
#: scene/3d/light.cpp
#, fuzzy
+msgid "Split 1"
+msgstr "ตัดเส้น"
+
+#: scene/3d/light.cpp
+#, fuzzy
+msgid "Split 2"
+msgstr "ตัดเส้น"
+
+#: scene/3d/light.cpp
+#, fuzzy
+msgid "Split 3"
+msgstr "ตัดเส้น"
+
+#: scene/3d/light.cpp
+#, fuzzy
msgid "Blend Splits"
msgstr "ระยะเวลาผสาน:"
#: scene/3d/light.cpp
#, fuzzy
+msgid "Bias Split Scale"
+msgstr "ใช้สà¹à¸™à¸›à¸‚นาด"
+
+#: scene/3d/light.cpp
+#, fuzzy
msgid "Depth Range"
msgstr "ความลึà¸"
@@ -20738,6 +22201,11 @@ msgstr "SpotLight ที่มีมุมมาà¸à¸à¸§à¹ˆà¸² 90 ไม่สà
msgid "Spot"
msgstr ""
+#: scene/3d/light.cpp
+#, fuzzy
+msgid "Angle Attenuation"
+msgstr "à¹à¸­à¸™à¸´à¹€à¸¡à¸Šà¸±à¸™"
+
#: scene/3d/mesh_instance.cpp
msgid "Software Skinning"
msgstr ""
@@ -20876,6 +22344,63 @@ msgstr "à¹à¸à¸™"
#: scene/3d/physics_body.cpp
#, fuzzy
+msgid "Linear X"
+msgstr "เส้นตรง"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Linear Y"
+msgstr "เส้นตรง"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Linear Z"
+msgstr "เส้นตรง"
+
+#: scene/3d/physics_body.cpp
+msgid "Angular X"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Angular Y"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Angular Z"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Motion X"
+msgstr "à¸à¸²à¸£à¸à¸£à¸°à¸—ำ"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Motion Y"
+msgstr "à¸à¸²à¸£à¸à¸£à¸°à¸—ำ"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Motion Z"
+msgstr "à¸à¸²à¸£à¸à¸£à¸°à¸—ำ"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Move Lock X"
+msgstr "เคลื่อนย้ายโหนด"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Move Lock Y"
+msgstr "เคลื่อนย้ายโหนด"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Move Lock Z"
+msgstr "เคลื่อนย้ายโหนด"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
msgid "Body Offset"
msgstr "เลื่อน:"
@@ -20909,6 +22434,15 @@ msgid "Exclude Nodes"
msgstr "ลบโหนด"
#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Params"
+msgstr "เปลี่ยนพารามิเตอร์"
+
+#: scene/3d/physics_joint.cpp
+msgid "Impulse Clamp"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit"
msgstr ""
@@ -20922,6 +22456,55 @@ msgstr "ตัวพิมพ์ใหà¸à¹ˆ"
msgid "Lower"
msgstr "ตัวพิมพ์เล็à¸"
+#: scene/3d/physics_joint.cpp scene/3d/vehicle_body.cpp
+#, fuzzy
+msgid "Relaxation"
+msgstr "เว้น:"
+
+#: scene/3d/physics_joint.cpp
+msgid "Motor"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Target Velocity"
+msgstr "เริ่มต้น"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Max Impulse"
+msgstr "ความเร็ว:"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit"
+msgstr "เส้นตรง"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Upper Distance"
+msgstr "ระยะà¸à¸²à¸£à¹€à¸¥à¸·à¸­à¸:"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Lower Distance"
+msgstr "ระยะà¸à¸²à¸£à¹€à¸¥à¸·à¸­à¸:"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Restitution"
+msgstr "รายละเอียด"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motion"
+msgstr "เริ่มต้น"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Ortho"
+msgstr "ขนาน"
+
#: scene/3d/physics_joint.cpp
#, fuzzy
msgid "Upper Angle"
@@ -20934,6 +22517,16 @@ msgstr "ตัวพิมพ์เล็à¸"
#: scene/3d/physics_joint.cpp
#, fuzzy
+msgid "Angular Motion"
+msgstr "à¹à¸­à¸™à¸´à¹€à¸¡à¸Šà¸±à¸™"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Angular Ortho"
+msgstr "คลาดเคลื่อนเชิงมุมมาà¸à¸—ี่สุด:"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
msgid "Swing Span"
msgstr "บันทึà¸à¸‰à¸²à¸"
@@ -20942,17 +22535,99 @@ msgid "Twist Span"
msgstr ""
#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit X"
+msgstr "เส้นตรง"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motor X"
+msgstr "เริ่มต้น"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Force Limit"
+msgstr "จำนวนครั้งในà¸à¸²à¸£à¸§à¸²à¸”"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Spring X"
+msgstr "เส้นตรง"
+
+#: scene/3d/physics_joint.cpp
+msgid "Equilibrium Point"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit X"
msgstr ""
#: scene/3d/physics_joint.cpp
+msgid "Erp"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Motor X"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Spring X"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit Y"
+msgstr "เส้นตรง"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motor Y"
+msgstr "เริ่มต้น"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Spring Y"
+msgstr "เส้นตรง"
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit Y"
msgstr ""
#: scene/3d/physics_joint.cpp
+msgid "Angular Motor Y"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Spring Y"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit Z"
+msgstr "เส้นตรง"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motor Z"
+msgstr "เริ่มต้น"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Spring Z"
+msgstr "เส้นตรง"
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit Z"
msgstr ""
+#: scene/3d/physics_joint.cpp
+msgid "Angular Motor Z"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Spring Z"
+msgstr ""
+
#: scene/3d/portal.cpp
msgid "The RoomManager should not be a child or grandchild of a Portal."
msgstr ""
@@ -21072,7 +22747,7 @@ msgstr ""
msgid "Use Default Simplify"
msgstr ""
-#: scene/3d/room.cpp
+#: scene/3d/room.cpp scene/3d/room_manager.cpp
msgid "Room Simplify"
msgstr ""
@@ -21111,6 +22786,13 @@ msgstr ""
msgid "Main"
msgstr ""
+#: scene/3d/room_manager.cpp scene/animation/animation_player.cpp
+#: scene/animation/animation_tree.cpp scene/animation/animation_tree_player.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+#, fuzzy
+msgid "Active"
+msgstr "à¸à¸²à¸£à¸à¸£à¸°à¸—ำ"
+
#: scene/3d/room_manager.cpp
msgid "Roomlist"
msgstr ""
@@ -21135,6 +22817,54 @@ msgid "Gameplay"
msgstr ""
#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Gameplay Monitor"
+msgstr "ข้อมูล"
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Use Secondary PVS"
+msgstr "ใช้สà¹à¸™à¸›à¸‚นาด"
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Merge Meshes"
+msgstr "Mesh"
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Show Margins"
+msgstr "à¹à¸ªà¸”งจุดà¸à¸³à¹€à¸™à¸´à¸”"
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Debug Sprawl"
+msgstr "ดีบัà¸"
+
+#: scene/3d/room_manager.cpp
+msgid "Overlap Warning Threshold"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Preview Camera"
+msgstr "ตัวอย่าง"
+
+#: scene/3d/room_manager.cpp
+msgid "Portal Depth Limit"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Default Portal Margin"
+msgstr "ตั้งระยะขอบ"
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Roaming Expansion Margin"
+msgstr "ขยายออà¸"
+
+#: scene/3d/room_manager.cpp
msgid ""
"RoomList path is invalid.\n"
"Please check the RoomList branch has been assigned in the RoomManager."
@@ -21262,6 +22992,20 @@ msgstr "สà¹à¹à¸™à¸›à¸žà¸´à¸à¹€à¸‹à¸¥"
msgid "Billboard"
msgstr ""
+#: scene/3d/sprite_3d.cpp scene/resources/material.cpp
+#, fuzzy
+msgid "Transparent"
+msgstr "สลับà¹à¸à¸™"
+
+#: scene/3d/sprite_3d.cpp
+#, fuzzy
+msgid "Shaded"
+msgstr "Shader"
+
+#: scene/3d/sprite_3d.cpp
+msgid "Double Sided"
+msgstr ""
+
#: scene/3d/sprite_3d.cpp
msgid "Alpha Cut"
msgstr ""
@@ -21335,11 +23079,6 @@ msgstr "ตั้งค่านิพจน์"
msgid "Max Force"
msgstr "ผิดพลาด"
-#: scene/3d/vehicle_body.cpp
-#, fuzzy
-msgid "Relaxation"
-msgstr "เว้น:"
-
#: scene/3d/visibility_notifier.cpp
msgid "AABB"
msgstr ""
@@ -21479,7 +23218,7 @@ msgstr "ระยะเวลาเฟด (วิ):"
#: scene/animation/animation_blend_tree.cpp
#, fuzzy
-msgid "autorestart_"
+msgid "Auto Restart"
msgstr "เริ่มใหม่อัตโนมัติ:"
#: scene/animation/animation_blend_tree.cpp
@@ -21565,13 +23304,6 @@ msgstr "ตั้งค่าคลาส:"
msgid "Default Blend Time"
msgstr "ค่าเริ่มต้น"
-#: scene/animation/animation_player.cpp scene/animation/animation_tree.cpp
-#: scene/animation/animation_tree_player.cpp
-#: servers/audio/effects/audio_effect_delay.cpp
-#, fuzzy
-msgid "Active"
-msgstr "à¸à¸²à¸£à¸à¸£à¸°à¸—ำ"
-
#: scene/animation/animation_player.cpp
msgid "Method Call Mode"
msgstr ""
@@ -21695,10 +23427,6 @@ msgstr "หาโหนดà¹à¸¡à¹ˆà¹ƒà¸«à¸¡à¹ˆ"
msgid "Max Iterations"
msgstr "สร้างฟังà¸à¹Œà¸Šà¸±à¸™"
-#: scene/animation/tween.cpp scene/resources/texture.cpp
-msgid "Repeat"
-msgstr ""
-
#: scene/animation/tween.cpp
msgid "Playback Process Mode"
msgstr ""
@@ -21729,20 +23457,6 @@ msgstr "โหมดเลือà¸"
msgid "Alignment"
msgstr ""
-#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
-#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
-#: scene/resources/style_box.cpp
-#, fuzzy
-msgid "Horizontal"
-msgstr "à¹à¸™à¸§à¸™à¸­à¸™:"
-
-#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
-#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
-#: scene/resources/style_box.cpp
-#, fuzzy
-msgid "Vertical"
-msgstr "à¹à¸™à¸§à¸•ั้ง:"
-
#: scene/gui/base_button.cpp
#, fuzzy
msgid "Shortcut In Tooltip"
@@ -21845,10 +23559,6 @@ msgid "HSV"
msgstr "HSV"
#: scene/gui/color_picker.cpp
-msgid "Raw"
-msgstr "Raw"
-
-#: scene/gui/color_picker.cpp
msgid "Switch between hexadecimal and code values."
msgstr "สลับระหว่างค่าà¸à¸²à¸™à¸ªà¸´à¸šà¸«à¸à¹à¸¥à¸°à¹‚ค้ด"
@@ -21913,6 +23623,31 @@ msgid "Focus"
msgstr "ตำà¹à¸«à¸™à¹ˆà¸‡à¸—ี่สนใจ"
#: scene/gui/control.cpp
+msgid "Neighbour Left"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Neighbour Top"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Neighbour Right"
+msgstr ""
+
+#: scene/gui/control.cpp
+#, fuzzy
+msgid "Neighbour Bottom"
+msgstr "ล่าง"
+
+#: scene/gui/control.cpp
+msgid "Next"
+msgstr "ต่อไป"
+
+#: scene/gui/control.cpp
+msgid "Previous"
+msgstr "à¸à¹ˆà¸­à¸™à¸«à¸™à¹‰à¸²"
+
+#: scene/gui/control.cpp
msgid "Mouse"
msgstr ""
@@ -21950,7 +23685,7 @@ msgid "Dialog"
msgstr "เครื่องมือเคลื่อนย้าย"
#: scene/gui/dialogs.cpp
-msgid "Hide On Ok"
+msgid "Hide On OK"
msgstr ""
#: scene/gui/dialogs.cpp scene/gui/label.cpp
@@ -22049,7 +23784,7 @@ msgid "Timers"
msgstr "เวลา"
#: scene/gui/item_list.cpp scene/gui/popup_menu.cpp scene/gui/tree.cpp
-msgid "Incremental Search Max Interval (msec)"
+msgid "Incremental Search Max Interval Msec"
msgstr ""
#: scene/gui/item_list.cpp scene/gui/tree.cpp
@@ -22630,6 +24365,26 @@ msgstr "à¸à¸¥à¸²à¸‡à¸‹à¹‰à¸²à¸¢"
msgid "Nine Patch Stretch"
msgstr "โหมดà¸à¸²à¸£à¹à¸à¹‰à¹„ข"
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Left"
+msgstr "ตั้งระยะขอบ"
+
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Top"
+msgstr "ตั้งระยะขอบ"
+
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Right"
+msgstr "ตั้งระยะขอบ"
+
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Bottom"
+msgstr "โหมดเลือà¸"
+
#: scene/gui/tree.cpp
msgid "Custom Minimum Height"
msgstr ""
@@ -22667,8 +24422,9 @@ msgid "Paused"
msgstr ""
#: scene/gui/video_player.cpp
-msgid "Buffering (msec)"
-msgstr ""
+#, fuzzy
+msgid "Buffering Msec"
+msgstr "มุมหลัง"
#: scene/gui/video_player.cpp
#, fuzzy
@@ -23023,6 +24779,22 @@ msgid "Shadow Atlas"
msgstr "à¹à¸œà¸™à¸—ี่ใหม่"
#: scene/main/viewport.cpp
+msgid "Quad 0"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 1"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 2"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 3"
+msgstr ""
+
+#: scene/main/viewport.cpp
#, fuzzy
msgid "Canvas Transform"
msgstr "เคลียร์à¸à¸²à¸£à¹à¸›à¸¥à¸‡"
@@ -23037,6 +24809,11 @@ msgid "Tooltip Delay (sec)"
msgstr ""
#: scene/register_scene_types.cpp
+#, fuzzy
+msgid "Swap OK Cancel"
+msgstr "ยà¸à¹€à¸¥à¸´à¸"
+
+#: scene/register_scene_types.cpp
msgid "Use hiDPI"
msgstr ""
@@ -23051,21 +24828,6 @@ msgid "Custom Font"
msgstr "ตัดโหนด"
#: scene/resources/audio_stream_sample.cpp
-#, fuzzy
-msgid "Loop Mode"
-msgstr "โหมดเคลื่อนย้าย"
-
-#: scene/resources/audio_stream_sample.cpp
-#, fuzzy
-msgid "Loop Begin"
-msgstr "โหมดเคลื่อนย้าย"
-
-#: scene/resources/audio_stream_sample.cpp
-#, fuzzy
-msgid "Loop End"
-msgstr "โหมดเคลื่อนย้าย"
-
-#: scene/resources/audio_stream_sample.cpp
#: servers/audio/effects/audio_stream_generator.cpp servers/audio_server.cpp
#, fuzzy
msgid "Mix Rate"
@@ -23125,6 +24887,17 @@ msgstr "ตัวเลือภTexture"
#: scene/resources/dynamic_font.cpp
#, fuzzy
+msgid "Char"
+msgstr "ตัวอัà¸à¸©à¸£à¸—ี่ใช้ได้:"
+
+#: scene/resources/dynamic_font.cpp scene/resources/world.cpp
+#: scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Space"
+msgstr "ฉาà¸à¸«à¸¥à¸±à¸"
+
+#: scene/resources/dynamic_font.cpp
+#, fuzzy
msgid "Font"
msgstr "ฟอนต์"
@@ -23352,6 +25125,43 @@ msgid "Glow"
msgstr ""
#: scene/resources/environment.cpp
+#, fuzzy
+msgid "Levels"
+msgstr "ผู้พัฒนา"
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "1"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "2"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "3"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "4"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "5"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "6"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "7"
+msgstr ""
+
+#: scene/resources/environment.cpp
msgid "Bloom"
msgstr ""
@@ -23444,10 +25254,68 @@ msgid "Next Pass"
msgstr "ระนาบถัดไป"
#: scene/resources/material.cpp
+msgid "Use Shadow To Opacity"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Unshaded"
+msgstr "à¹à¸ªà¸”งà¹à¸šà¸šà¹„ร้เงา"
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Vertex Lighting"
+msgstr "lighting à¹à¸šà¸šà¸•รง"
+
+#: scene/resources/material.cpp
+msgid "No Depth Test"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Use Point Size"
+msgstr "มุมหน้า"
+
+#: scene/resources/material.cpp
+msgid "World Triplanar"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Fixed Size"
+msgstr "มุมหน้า"
+
+#: scene/resources/material.cpp
+msgid "Albedo Tex Force sRGB"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Do Not Receive Shadows"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Disable Ambient Light"
+msgstr "ย่อหน้าขวา"
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Ensure Correct Normals"
+msgstr "ยà¸à¹€à¸¥à¸´à¸à¸à¸²à¸£à¹€à¸„ลื่อนย้าย"
+
+#: scene/resources/material.cpp
#, fuzzy
msgid "Vertex Color"
msgstr "เวอร์เทà¸à¸‹à¹Œ"
+#: scene/resources/material.cpp
+msgid "Use As Albedo"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Is sRGB"
+msgstr ""
+
#: scene/resources/material.cpp servers/visual_server.cpp
#, fuzzy
msgid "Parameters"
@@ -23484,6 +25352,11 @@ msgid "Billboard Mode"
msgstr "โหมดไม้บรรทัด"
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Billboard Keep Scale"
+msgstr "โหมดไม้บรรทัด"
+
+#: scene/resources/material.cpp
msgid "Grow"
msgstr ""
@@ -23493,6 +25366,10 @@ msgid "Grow Amount"
msgstr "จำนวน:"
#: scene/resources/material.cpp
+msgid "Use Alpha Scissor"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Alpha Scissor Threshold"
msgstr ""
@@ -23524,10 +25401,20 @@ msgid "Metallic Specular"
msgstr ""
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Metallic Texture"
+msgstr "à¹à¸«à¸¥à¹ˆà¸‡à¸›à¸°à¸—ุ: "
+
+#: scene/resources/material.cpp
msgid "Metallic Texture Channel"
msgstr ""
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Roughness Texture"
+msgstr "ลบเทà¸à¹€à¸ˆà¸­à¸£à¹Œ"
+
+#: scene/resources/material.cpp
msgid "Roughness Texture Channel"
msgstr ""
@@ -23547,6 +25434,16 @@ msgid "Emission Operator"
msgstr "สีà¸à¸²à¸£à¸›à¸°à¸—ุ"
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Emission On UV2"
+msgstr "Mask à¸à¸²à¸£à¸›à¸°à¸—ุ"
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Emission Texture"
+msgstr "à¹à¸«à¸¥à¹ˆà¸‡à¸›à¸°à¸—ุ: "
+
+#: scene/resources/material.cpp
msgid "NormalMap"
msgstr ""
@@ -23561,6 +25458,11 @@ msgstr "สุ่มà¸à¸²à¸£à¹€à¸­à¸µà¸¢à¸‡:"
#: scene/resources/material.cpp
#, fuzzy
+msgid "Rim Texture"
+msgstr "ลบเทà¸à¹€à¸ˆà¸­à¸£à¹Œ"
+
+#: scene/resources/material.cpp
+#, fuzzy
msgid "Clearcoat"
msgstr "เคลียร์"
@@ -23570,15 +25472,28 @@ msgid "Clearcoat Gloss"
msgstr "ลบท่าทาง"
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Clearcoat Texture"
+msgstr "à¹à¸à¹‰à¹„ขธีม"
+
+#: scene/resources/material.cpp
msgid "Anisotropy"
msgstr ""
#: scene/resources/material.cpp
+msgid "Anisotropy Flowmap"
+msgstr ""
+
+#: scene/resources/material.cpp
#, fuzzy
msgid "Ambient Occlusion"
msgstr "ตัวบังà¹à¸ªà¸‡"
#: scene/resources/material.cpp
+msgid "On UV2"
+msgstr ""
+
+#: scene/resources/material.cpp
#, fuzzy
msgid "Texture Channel"
msgstr "ขอบเขตเทà¸à¹€à¸ˆà¸­à¸£à¹Œ"
@@ -23617,6 +25532,11 @@ msgstr "ทรานสิชัน: "
#: scene/resources/material.cpp
#, fuzzy
+msgid "Transmission Texture"
+msgstr "ทรานสิชัน: "
+
+#: scene/resources/material.cpp
+#, fuzzy
msgid "Refraction"
msgstr "เว้น:"
@@ -23635,6 +25555,10 @@ msgid "UV1"
msgstr "UV"
#: scene/resources/material.cpp
+msgid "Triplanar"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Triplanar Sharpness"
msgstr ""
@@ -23845,6 +25769,16 @@ msgstr "à¹à¸à¹‰à¹„ขธีม"
msgid "Point Count"
msgstr "เพิ่มพอร์ตอินพุต"
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Scale Random"
+msgstr "อัตราส่วนขนาด:"
+
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Scale Curve"
+msgstr "ปิดเส้นโค้ง"
+
#: scene/resources/physics_material.cpp
msgid "Rough"
msgstr ""
@@ -23907,10 +25841,6 @@ msgid "A"
msgstr ""
#: scene/resources/shader.cpp
-msgid "Code"
-msgstr ""
-
-#: scene/resources/shader.cpp
#, fuzzy
msgid "Custom Defines"
msgstr "เลือà¸à¹€à¸¥à¹ˆà¸™à¸‰à¸²à¸"
@@ -24007,15 +25937,6 @@ msgstr ""
#: scene/resources/texture.cpp
#, fuzzy
-msgid "Storage"
-msgstr "เà¸à¹‡à¸šà¹„ฟล์:"
-
-#: scene/resources/texture.cpp
-msgid "Lossy Quality"
-msgstr ""
-
-#: scene/resources/texture.cpp
-#, fuzzy
msgid "Load Path"
msgstr "โหลดพรีเซ็ต"
@@ -24144,11 +26065,6 @@ msgstr "ฟังà¸à¹Œà¸Šà¸±à¸™à¸à¸²à¸£à¹€à¸›à¸£à¸µà¸¢à¸šà¹€à¸—ียบไม
msgid "Fallback Environment"
msgstr "à¹à¸ªà¸”งสภาพà¹à¸§à¸”ล้อม"
-#: scene/resources/world.cpp scene/resources/world_2d.cpp
-#, fuzzy
-msgid "Space"
-msgstr "ฉาà¸à¸«à¸¥à¸±à¸"
-
#: scene/resources/world.cpp
#, fuzzy
msgid "Scenario"
@@ -24229,10 +26145,37 @@ msgstr ""
msgid "Wet"
msgstr ""
-#: servers/audio/effects/audio_effect_compressor.cpp
-msgid "Threshold"
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "Voice"
msgstr ""
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+msgid "Delay (ms)"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_phaser.cpp
+msgid "Rate Hz"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#, fuzzy
+msgid "Depth (ms)"
+msgstr "ความลึà¸"
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+msgid "Level dB"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+#: servers/audio/effects/audio_effect_panner.cpp
+#, fuzzy
+msgid "Pan"
+msgstr "ระนาบ:"
+
#: servers/audio/effects/audio_effect_compressor.cpp
#: servers/audio/effects/audio_effect_filter.cpp
msgid "Gain"
@@ -24256,20 +26199,6 @@ msgid "Tap 1"
msgstr ""
#: servers/audio/effects/audio_effect_delay.cpp
-msgid "Delay (ms)"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_delay.cpp
-msgid "Level dB"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_delay.cpp
-#: servers/audio/effects/audio_effect_panner.cpp
-#, fuzzy
-msgid "Pan"
-msgstr "ระนาบ:"
-
-#: servers/audio/effects/audio_effect_delay.cpp
msgid "Tap 2"
msgstr ""
@@ -24331,10 +26260,6 @@ msgstr ""
msgid "Range Max Hz"
msgstr ""
-#: servers/audio/effects/audio_effect_phaser.cpp
-msgid "Rate Hz"
-msgstr ""
-
#: servers/audio/effects/audio_effect_pitch_shift.cpp
msgid "Oversampling"
msgstr ""
@@ -24350,7 +26275,7 @@ msgid "Predelay"
msgstr ""
#: servers/audio/effects/audio_effect_reverb.cpp
-msgid "(msec)"
+msgid "Msec"
msgstr ""
#: servers/audio/effects/audio_effect_reverb.cpp
diff --git a/editor/translations/tl.po b/editor/translations/tl.po
index 0146a51e24..3aef105a66 100644
--- a/editor/translations/tl.po
+++ b/editor/translations/tl.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
"Report-Msgid-Bugs-To: https://github.com/godotengine/godot\n"
-"PO-Revision-Date: 2022-03-17 13:58+0000\n"
+"PO-Revision-Date: 2022-03-21 22:23+0000\n"
"Last-Translator: Napstaguy04 <brokenscreen3@gmail.com>\n"
"Language-Team: Tagalog <https://hosted.weblate.org/projects/godot-engine/"
"godot/tl/>\n"
@@ -20,28 +20,25 @@ msgstr ""
"|| n % 10 == 6 || n % 10 == 9);\n"
"X-Generator: Weblate 4.12-dev\n"
-#: core/bind/core_bind.cpp
+#: core/bind/core_bind.cpp main/main.cpp
msgid "Tablet Driver"
msgstr ""
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Clipboard"
-msgstr "Walang laman ang clipboard!"
+msgstr ""
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Current Screen"
-msgstr "Susunod na tab"
+msgstr "Kasalukuyang Screen"
#: core/bind/core_bind.cpp
msgid "Exit Code"
msgstr ""
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "V-Sync Enabled"
-msgstr "Paganahin"
+msgstr "Nakabukas ang V-Sync"
#: core/bind/core_bind.cpp main/main.cpp
msgid "V-Sync Via Compositor"
@@ -62,31 +59,27 @@ msgstr ""
#: core/bind/core_bind.cpp main/main.cpp platform/uwp/os_uwp.cpp
msgid "Keep Screen On"
-msgstr ""
+msgstr "Panataliing Nakabukas ang Screen"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Min Window Size"
-msgstr "Pangunahing Skrip:"
+msgstr "Pinakamaliit na Laki ng Window"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Max Window Size"
-msgstr "Pangunahing Skrip:"
+msgstr "Pinakamalaking Laki ng Window"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Screen Orientation"
-msgstr "Buksan ang Dokumentasyon"
+msgstr "Pagkakatayo ng Screen"
#: core/bind/core_bind.cpp main/main.cpp platform/uwp/os_uwp.cpp
-#, fuzzy
msgid "Window"
-msgstr "Bagong Tabing"
+msgstr ""
#: core/bind/core_bind.cpp main/main.cpp
msgid "Borderless"
-msgstr ""
+msgstr "Walang Kuwadro"
#: core/bind/core_bind.cpp
msgid "Per Pixel Transparency Enabled"
@@ -122,8 +115,8 @@ msgstr "Idaong Ang Posisyon"
#: core/bind/core_bind.cpp editor/editor_settings.cpp main/main.cpp
#: modules/gdscript/gdscript_editor.cpp modules/gridmap/grid_map.cpp
#: modules/mono/csharp_script.cpp modules/visual_script/visual_script_nodes.cpp
-#: scene/2d/tile_map.cpp scene/3d/camera.cpp scene/gui/control.cpp
-#: scene/gui/graph_edit.cpp scene/main/viewport.cpp
+#: scene/2d/tile_map.cpp scene/3d/camera.cpp scene/3d/light.cpp
+#: scene/gui/control.cpp scene/gui/graph_edit.cpp scene/main/viewport.cpp
#: scene/resources/dynamic_font.cpp scene/resources/navigation_mesh.cpp
#: scene/resources/primitive_meshes.cpp scene/resources/sky.cpp
#: scene/resources/style_box.cpp scene/resources/texture.cpp
@@ -225,8 +218,7 @@ msgid "Data"
msgstr ""
#: core/io/file_access_network.cpp core/register_core_types.cpp
-#: editor/editor_settings.cpp editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp main/main.cpp
+#: editor/editor_settings.cpp main/main.cpp
#: modules/gdscript/language_server/gdscript_language_server.cpp
msgid "Network"
msgstr ""
@@ -505,9 +497,10 @@ msgstr "Preset"
msgid "Relative"
msgstr "GDNative"
-#: core/os/input_event.cpp scene/2d/camera_2d.cpp
-#: scene/3d/interpolated_camera.cpp scene/animation/animation_player.cpp
-#: scene/resources/environment.cpp
+#: core/os/input_event.cpp scene/2d/camera_2d.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/interpolated_camera.cpp
+#: scene/animation/animation_player.cpp scene/resources/environment.cpp
+#: scene/resources/particles_material.cpp
#, fuzzy
msgid "Speed"
msgstr "Bilis:"
@@ -557,8 +550,9 @@ msgstr "I-commit Lahat ng Pagbabago"
msgid "Pitch"
msgstr "Switch"
-#: core/os/input_event.cpp scene/2d/physics_body_2d.cpp
-#: scene/3d/physics_body.cpp
+#: core/os/input_event.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/physics_body_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/3d/physics_body.cpp scene/resources/particles_material.cpp
#, fuzzy
msgid "Velocity"
msgstr "Simulan"
@@ -577,6 +571,8 @@ msgid "Controller Value"
msgstr ""
#: core/project_settings.cpp editor/editor_node.cpp main/main.cpp
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/windows/export/export.cpp
#, fuzzy
msgid "Application"
msgstr "Animasyon"
@@ -594,13 +590,16 @@ msgstr "Kaayusan ng Proyekto..."
#: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp
#: editor/editor_plugin_settings.cpp editor/editor_profiler.cpp
#: editor/project_manager.cpp editor/settings_config_dialog.cpp
-#: modules/gdnative/nativescript/nativescript.cpp scene/2d/area_2d.cpp
-#: scene/3d/area.cpp scene/main/node.cpp
+#: modules/gdnative/nativescript/nativescript.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/osx/export/export.cpp scene/2d/area_2d.cpp scene/3d/area.cpp
+#: scene/main/node.cpp
msgid "Name"
msgstr "Pangalan"
#: core/project_settings.cpp editor/editor_help.cpp
-#: modules/visual_script/visual_script_nodes.cpp
+#: modules/visual_script/visual_script_nodes.cpp platform/uwp/export/export.cpp
+#: platform/windows/export/export.cpp
msgid "Description"
msgstr "Paglalarawan"
@@ -636,7 +635,7 @@ msgid "Custom User Dir Name"
msgstr ""
#: core/project_settings.cpp editor/animation_track_editor.cpp
-#: editor/editor_audio_buses.cpp servers/audio_server.cpp
+#: editor/editor_audio_buses.cpp main/main.cpp servers/audio_server.cpp
msgid "Audio"
msgstr "Tunog (Audio)"
@@ -797,10 +796,13 @@ msgstr "Salain ang mga node"
msgid "Sharpen Intensity"
msgstr ""
-#: core/project_settings.cpp editor/editor_node.cpp editor/editor_settings.cpp
-#: editor/plugins/script_editor_plugin.cpp editor/project_export.cpp
-#: main/main.cpp modules/gdscript/gdscript.cpp
-#: modules/visual_script/visual_script.cpp scene/3d/room_manager.cpp
+#: core/project_settings.cpp editor/editor_export.cpp editor/editor_node.cpp
+#: editor/editor_settings.cpp editor/plugins/script_editor_plugin.cpp
+#: editor/project_export.cpp main/main.cpp modules/gdscript/gdscript.cpp
+#: modules/visual_script/visual_script.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp scene/3d/room_manager.cpp
#: scene/main/scene_tree.cpp scene/resources/shape_2d.cpp
#: servers/visual_server.cpp
msgid "Debug"
@@ -1031,6 +1033,7 @@ msgid "Subsurface Scattering"
msgstr ""
#: drivers/gles3/rasterizer_scene_gles3.cpp
+#: editor/import/resource_importer_texture.cpp
#: editor/plugins/spatial_editor_plugin.cpp modules/gltf/gltf_node.cpp
#: modules/gridmap/grid_map.cpp scene/2d/cpu_particles_2d.cpp
#: scene/2d/node_2d.cpp scene/2d/parallax_layer.cpp scene/2d/polygon_2d.cpp
@@ -1329,6 +1332,7 @@ msgid "Editors"
msgstr "Editor"
#: editor/animation_track_editor.cpp editor/editor_settings.cpp
+#: editor/import/resource_importer_scene.cpp
#: editor/plugins/animation_player_editor_plugin.cpp editor/scene_tree_dock.cpp
#: scene/2d/animated_sprite.cpp scene/2d/cpu_particles_2d.cpp
#: scene/2d/sprite.cpp scene/3d/cpu_particles.cpp scene/3d/sprite_3d.cpp
@@ -1565,14 +1569,14 @@ msgstr "Bilang ng usog ng Animasyon."
msgid "Seconds"
msgstr "Mga Segundo"
-#: editor/animation_track_editor.cpp
+#: editor/animation_track_editor.cpp editor/import/resource_importer_scene.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp main/main.cpp
#: scene/resources/texture.cpp
msgid "FPS"
msgstr "FPS"
#: editor/animation_track_editor.cpp editor/editor_plugin_settings.cpp
-#: editor/editor_resource_picker.cpp
+#: editor/editor_resource_picker.cpp editor/import/resource_importer_wav.cpp
#: editor/plugins/polygon_2d_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
@@ -2532,7 +2536,9 @@ msgid "Remove Autoload"
msgstr ""
#: editor/editor_autoload_settings.cpp editor/editor_plugin_settings.cpp
-#: modules/gdscript/gdscript.cpp scene/2d/polygon_2d.cpp scene/3d/area.cpp
+#: modules/gdscript/gdscript.cpp platform/android/export/export_plugin.cpp
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#: scene/2d/polygon_2d.cpp scene/3d/area.cpp scene/3d/physics_joint.cpp
#: scene/3d/reflection_probe.cpp scene/main/canvas_layer.cpp
#: scene/resources/material.cpp servers/visual_server.cpp
msgid "Enable"
@@ -2685,6 +2691,58 @@ msgstr ""
#: editor/editor_export.cpp platform/android/export/export_plugin.cpp
#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Custom Template"
+msgstr "Kopyahin ang mga Node"
+
+#: editor/editor_export.cpp editor/project_export.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp
+msgid "Release"
+msgstr ""
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Binary Format"
+msgstr "Di-wastong binary format."
+
+#: editor/editor_export.cpp
+msgid "64 Bits"
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Embed PCK"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Texture Format"
+msgstr "Paraan ng Pag-sukat"
+
+#: editor/editor_export.cpp
+msgid "BPTC"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "S3TC"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "ETC"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "ETC2"
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "No BPTC Fallbacks"
+msgstr ""
+
+#: editor/editor_export.cpp platform/android/export/export_plugin.cpp
+#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
msgid "Custom debug template not found."
msgstr ""
@@ -2861,6 +2919,7 @@ msgid "Make Current"
msgstr "Itutok"
#: editor/editor_feature_profile.cpp editor/editor_node.cpp
+#: editor/import/resource_importer_scene.cpp
#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
msgid "Import"
msgstr "Umangkat"
@@ -2988,8 +3047,11 @@ msgstr "Tagumpay!"
msgid "Display Mode"
msgstr "Paraan sa Pagpapalabas:"
-#: editor/editor_file_dialog.cpp main/main.cpp modules/csg/csg_shape.cpp
-#: modules/visual_script/visual_script_nodes.cpp
+#: editor/editor_file_dialog.cpp
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+#: editor/import/resource_importer_wav.cpp main/main.cpp
+#: modules/csg/csg_shape.cpp modules/visual_script/visual_script_nodes.cpp
#: modules/visual_script/visual_script_yield_nodes.cpp scene/2d/light_2d.cpp
#: scene/2d/physics_body_2d.cpp scene/2d/tile_map.cpp
#: scene/3d/baked_lightmap.cpp scene/3d/light.cpp scene/3d/physics_body.cpp
@@ -3126,7 +3188,9 @@ msgstr "Inaangkat muli ang mga Asset"
msgid "Reimport Missing Imported Files"
msgstr ""
-#: editor/editor_help.cpp
+#: editor/editor_help.cpp scene/2d/camera_2d.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/resources/dynamic_font.cpp
+#: scene/resources/style_box.cpp
msgid "Top"
msgstr "Nasaitaas"
@@ -3178,6 +3242,7 @@ msgid "Fonts"
msgstr "Mga Font"
#: editor/editor_help.cpp editor/plugins/theme_editor_plugin.cpp
+#: platform/iphone/export/export.cpp
msgid "Icons"
msgstr "Mga Icon"
@@ -3343,7 +3408,9 @@ msgstr ""
msgid "Pin value [Disabled because '%s' is editor-only]"
msgstr ""
-#: editor/editor_inspector.cpp editor/scene_tree_dock.cpp
+#: editor/editor_inspector.cpp
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+#: editor/scene_tree_dock.cpp
#: modules/visual_script/visual_script_func_nodes.cpp
#: modules/visual_script/visual_script_nodes.cpp
#: modules/visual_script/visual_script_property_selector.cpp
@@ -3656,6 +3723,16 @@ msgid "Quick Open Script..."
msgstr "Mabilisang Magbukas ng Skrip..."
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Save & Reload"
+msgstr "I-save & Simulan muli"
+
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Save changes to '%s' before reloading?"
+msgstr "I-save ang mga pagbabago sa '%s' bago isara?"
+
+#: editor/editor_node.cpp
msgid "Save & Close"
msgstr "I-save & Isara"
@@ -3766,6 +3843,11 @@ msgid "Open Project Manager?"
msgstr "Buksan ang Talaan ng mga Proyekto?"
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Save changes to the following scene(s) before reloading?"
+msgstr "I-save ang (mga sumusunod na) binagong eksena bago umalis?"
+
+#: editor/editor_node.cpp
msgid "Save & Quit"
msgstr "I-save at Umalis"
@@ -4022,8 +4104,8 @@ msgstr "Pansinin ang anumang pagbabago"
#: editor/editor_node.cpp
#, fuzzy
-msgid "Translate Properties"
-msgstr "I-pasta ang mga Katangian"
+msgid "Localize Settings"
+msgstr "Kaayusan ng Grid"
#: editor/editor_node.cpp
#, fuzzy
@@ -4040,8 +4122,8 @@ msgstr "Tagasuri"
#: editor/editor_node.cpp
#, fuzzy
-msgid "Capitalize Properties"
-msgstr "I-pasta ang mga Katangian"
+msgid "Default Property Name Style"
+msgstr "Kinaroroonan ng Proyekto:"
#: editor/editor_node.cpp
msgid "Default Float Step"
@@ -4603,7 +4685,9 @@ msgstr "Nakaimpok na mga Plugin:"
msgid "Update"
msgstr ""
-#: editor/editor_plugin_settings.cpp
+#: editor/editor_plugin_settings.cpp platform/android/export/export_plugin.cpp
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp
msgid "Version"
msgstr "Bersyon"
@@ -5597,7 +5681,7 @@ msgstr "Buong Sukat"
msgid "Rect Custom Position"
msgstr "Idaong Ang Posisyon"
-#: editor/editor_settings.cpp
+#: editor/editor_settings.cpp platform/android/export/export_plugin.cpp
msgid "Screen"
msgstr ""
@@ -5622,6 +5706,19 @@ msgid "Editor SSL Certificates"
msgstr ""
#: editor/editor_settings.cpp
+msgid "HTTP Proxy"
+msgstr ""
+
+#: editor/editor_settings.cpp
+msgid "Host"
+msgstr ""
+
+#: editor/editor_settings.cpp editor/fileserver/editor_file_server.cpp
+#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp
+msgid "Port"
+msgstr ""
+
+#: editor/editor_settings.cpp
msgid "Project Manager"
msgstr ""
@@ -5664,7 +5761,8 @@ msgstr ""
msgid "String Color"
msgstr "Inimpok ang File:"
-#: editor/editor_settings.cpp
+#: editor/editor_settings.cpp platform/javascript/export/export.cpp
+#: platform/uwp/export/export.cpp
#, fuzzy
msgid "Background Color"
msgstr "Pumili ng Kulay"
@@ -5835,22 +5933,6 @@ msgid "Starting the download..."
msgstr "Inuumpisahan ang pag-download..."
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "HTTP Proxy"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Host"
-msgstr ""
-
-#: editor/export_template_manager.cpp editor/fileserver/editor_file_server.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp main/main.cpp
-#: modules/mono/mono_gd/gd_mono.cpp
-msgid "Port"
-msgstr ""
-
-#: editor/export_template_manager.cpp
msgid "Error requesting URL:"
msgstr ""
@@ -6092,6 +6174,7 @@ msgstr ""
#: editor/fileserver/editor_file_server.cpp
#: editor/plugins/version_control_editor_plugin.cpp
+#: platform/uwp/export/export.cpp platform/windows/export/export.cpp
msgid "Password"
msgstr ""
@@ -6457,6 +6540,115 @@ msgstr ""
msgid "Use Ambient"
msgstr ""
+#: editor/import/resource_importer_bitmask.cpp
+#, fuzzy
+msgid "Create From"
+msgstr "Gumawa ng Folder"
+
+#: editor/import/resource_importer_bitmask.cpp
+#: servers/audio/effects/audio_effect_compressor.cpp
+msgid "Threshold"
+msgstr ""
+
+#: editor/import/resource_importer_csv_translation.cpp
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_scene.cpp
+#: editor/import/resource_importer_texture.cpp
+#: editor/import/resource_importer_wav.cpp scene/3d/gi_probe.cpp
+#, fuzzy
+msgid "Compress"
+msgstr "Mga Bahagi"
+
+#: editor/import/resource_importer_csv_translation.cpp
+msgid "Delimiter"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+msgid "No BPTC If RGB"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/sprite_3d.cpp
+#: scene/resources/material.cpp scene/resources/particles_material.cpp
+#: scene/resources/texture.cpp
+msgid "Flags"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/animation/tween.cpp
+#: scene/resources/texture.cpp
+msgid "Repeat"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/2d/light_2d.cpp
+#: scene/gui/control.cpp scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Filter"
+msgstr "Salain ang mga node"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Mipmaps"
+msgstr "Mga Hudyat"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+msgid "Anisotropic"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+msgid "sRGB"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#, fuzzy
+msgid "Slices"
+msgstr "Kusang Paghahati"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
+#: scene/resources/style_box.cpp
+msgid "Horizontal"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
+#: scene/resources/style_box.cpp
+msgid "Vertical"
+msgstr ""
+
+#: editor/import/resource_importer_obj.cpp
+#, fuzzy
+msgid "Generate Tangents"
+msgstr "I-urong Pakanan"
+
+#: editor/import/resource_importer_obj.cpp
+#, fuzzy
+msgid "Scale Mesh"
+msgstr "Magpalaki"
+
+#: editor/import/resource_importer_obj.cpp
+#, fuzzy
+msgid "Offset Mesh"
+msgstr "Usog:"
+
+#: editor/import/resource_importer_obj.cpp
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Octahedral Compression"
+msgstr "Ekspresyon"
+
+#: editor/import/resource_importer_obj.cpp
+#, fuzzy
+msgid "Optimize Mesh Flags"
+msgstr "Laki: "
+
#: editor/import/resource_importer_scene.cpp
msgid "Import as Single Scene"
msgstr ""
@@ -6497,6 +6689,153 @@ msgstr ""
msgid "Import as Multiple Scenes+Materials"
msgstr ""
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Nodes"
+msgstr "Node"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Root Type"
+msgstr "Uri ng Kasapi"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Root Name"
+msgstr "Pangalan ng Node:"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Root Scale"
+msgstr "Lalim"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Custom Script"
+msgstr "Kopyahin ang mga Node"
+
+#: editor/import/resource_importer_scene.cpp scene/resources/texture.cpp
+#, fuzzy
+msgid "Storage"
+msgstr "Inimpok ang File:"
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Use Legacy Names"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+msgid "Materials"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Location"
+msgstr "Mag-ikot"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Keep On Reimport"
+msgstr "Panatiliin Ang Ratio"
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+msgid "Meshes"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Ensure Tangents"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Light Baking"
+msgstr "Huling Binago"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Lightmap Texel Size"
+msgstr "Paguurong na Pa-pixel"
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+msgid "Skins"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Use Named Skins"
+msgstr "Mga Hudyat"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "External Files"
+msgstr "Buksan ang File"
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Store In Subdir"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Filter Script"
+msgstr "Salain ang mga skrip"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Keep Custom Tracks"
+msgstr "Kopyahin ang mga Node"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Optimizer"
+msgstr "Pabilisin ang takbo"
+
+#: editor/import/resource_importer_scene.cpp main/main.cpp
+#: modules/mono/mono_gd/gd_mono.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp scene/2d/camera_2d.cpp scene/2d/light_2d.cpp
+#: scene/2d/navigation_polygon.cpp scene/2d/ray_cast_2d.cpp scene/2d/sprite.cpp
+#: scene/2d/y_sort.cpp scene/3d/audio_stream_player_3d.cpp
+#: scene/3d/baked_lightmap.cpp scene/3d/interpolated_camera.cpp
+#: scene/3d/light.cpp scene/3d/navigation_mesh_instance.cpp
+#: scene/3d/physics_joint.cpp scene/3d/ray_cast.cpp scene/3d/sprite_3d.cpp
+#: scene/gui/graph_edit.cpp scene/gui/rich_text_label.cpp
+#: scene/resources/curve.cpp scene/resources/environment.cpp
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Enabled"
+msgstr "Paganahin"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Max Linear Error"
+msgstr "Nabigo"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Max Angular Error"
+msgstr "Nabigo"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Max Angle"
+msgstr "Halaga:"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Remove Unused Tracks"
+msgstr "Alisin ang Anim Track"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Clips"
+msgstr "Mga Kabahagi ng Anim:"
+
+#: editor/import/resource_importer_scene.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/particles_2d.cpp scene/3d/area.cpp scene/3d/cpu_particles.cpp
+#: scene/3d/particles.cpp scene/resources/environment.cpp
+#, fuzzy
+msgid "Amount"
+msgstr "Bilang:"
+
#: editor/import/resource_importer_scene.cpp
#: editor/plugins/mesh_library_editor_plugin.cpp
msgid "Import Scene"
@@ -6538,12 +6877,146 @@ msgstr ""
msgid "Saving..."
msgstr "Nililigtas..."
+#: editor/import/resource_importer_texture.cpp scene/resources/texture.cpp
+msgid "Lossy Quality"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "HDR Mode"
+msgstr "Paraan ng Pagpili"
+
+#: editor/import/resource_importer_texture.cpp
+msgid "BPTC LDR"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/mesh_instance_2d.cpp scene/2d/multimesh_instance_2d.cpp
+#: scene/2d/particles_2d.cpp scene/2d/sprite.cpp scene/resources/style_box.cpp
+msgid "Normal Map"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Process"
+msgstr "Gumalaw"
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Fix Alpha Border"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Premult Alpha"
+msgstr "Ayusin ang Poly"
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Hdr As Srgb"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Invert Color"
+msgstr "Susunod na Koordinayt"
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Normal Map Invert Y"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
+#: scene/audio/audio_stream_player.cpp scene/gui/video_player.cpp
+msgid "Stream"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Size Limit"
+msgstr "Laki: "
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Detect 3D"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "SVG"
+msgstr ""
+
#: editor/import/resource_importer_texture.cpp
msgid ""
"Warning, no suitable PC VRAM compression enabled in Project Settings. This "
"texture will not display correctly on PC."
msgstr ""
+#: editor/import/resource_importer_texture_atlas.cpp
+#, fuzzy
+msgid "Atlas File"
+msgstr "Bagong Atlas"
+
+#: editor/import/resource_importer_texture_atlas.cpp
+#, fuzzy
+msgid "Import Mode"
+msgstr "Umangkat ng Daungan"
+
+#: editor/import/resource_importer_texture_atlas.cpp
+#, fuzzy
+msgid "Crop To Region"
+msgstr "Itakda ang Saklaw ng Tile"
+
+#: editor/import/resource_importer_texture_atlas.cpp
+msgid "Trim Alpha Border From Region"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp scene/2d/physics_body_2d.cpp
+msgid "Force"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+msgid "8 Bit"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp main/main.cpp
+#: modules/mono/editor/csharp_project.cpp modules/mono/mono_gd/gd_mono.cpp
+msgid "Mono"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+#, fuzzy
+msgid "Max Rate"
+msgstr "Halaga:"
+
+#: editor/import/resource_importer_wav.cpp
+#, fuzzy
+msgid "Max Rate Hz"
+msgstr "Halaga:"
+
+#: editor/import/resource_importer_wav.cpp
+msgid "Trim"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+#, fuzzy
+msgid "Normalize"
+msgstr "Ibahin ang Punong-Uri"
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+#, fuzzy
+msgid "Loop Mode"
+msgstr "Gumalaw"
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+#, fuzzy
+msgid "Loop Begin"
+msgstr "Gumalaw"
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+#, fuzzy
+msgid "Loop End"
+msgstr "Gumalaw"
+
#: editor/import_defaults_editor.cpp
msgid "Select Importer"
msgstr ""
@@ -6612,6 +7085,29 @@ msgid "Failed to load resource."
msgstr ""
#: editor/inspector_dock.cpp
+#, fuzzy
+msgid "Property Name Style"
+msgstr "Pangalan ng Proyekto:"
+
+#: editor/inspector_dock.cpp scene/gui/color_picker.cpp
+msgid "Raw"
+msgstr ""
+
+#: editor/inspector_dock.cpp
+#, fuzzy
+msgid "Capitalized"
+msgstr "Simulan"
+
+#: editor/inspector_dock.cpp
+#, fuzzy
+msgid "Localized"
+msgstr "Simulan"
+
+#: editor/inspector_dock.cpp
+msgid "Localization not available for current language."
+msgstr ""
+
+#: editor/inspector_dock.cpp
msgid "Copy Properties"
msgstr "Kopyahin ang mga Katangian"
@@ -7648,18 +8144,25 @@ msgid "License (Z-A)"
msgstr "Lisensya (Z-A)"
#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgctxt "Pagination"
msgid "First"
msgstr "Panguna"
-#: editor/plugins/asset_library_editor_plugin.cpp scene/gui/control.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgctxt "Pagination"
msgid "Previous"
-msgstr ""
+msgstr "Nakaraang tab"
-#: editor/plugins/asset_library_editor_plugin.cpp scene/gui/control.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgctxt "Pagination"
msgid "Next"
-msgstr ""
+msgstr "Susunod na tab"
#: editor/plugins/asset_library_editor_plugin.cpp
+msgctxt "Pagination"
msgid "Last"
msgstr ""
@@ -7895,19 +8398,19 @@ msgid ""
"margins."
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Top Left"
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Top Right"
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Bottom Right"
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Bottom Left"
msgstr ""
@@ -8611,6 +9114,19 @@ msgstr ""
msgid "Gradient Edited"
msgstr ""
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+msgid "Swap GradientTexture2D Fill Points"
+msgstr ""
+
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+msgid "Swap Gradient Fill Points"
+msgstr ""
+
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+#, fuzzy
+msgid "Toggle Grid Snap"
+msgstr "Tignan ang Grid"
+
#: editor/plugins/item_list_editor_plugin.cpp
msgid "Item %d"
msgstr ""
@@ -8824,9 +9340,10 @@ msgid ""
"%s"
msgstr ""
-#: editor/plugins/mesh_library_editor_plugin.cpp modules/gridmap/grid_map.cpp
-msgid "Mesh Library"
-msgstr ""
+#: editor/plugins/mesh_library_editor_plugin.cpp
+#, fuzzy
+msgid "MeshLibrary"
+msgstr "MeshLibrary..."
#: editor/plugins/mesh_library_editor_plugin.cpp
msgid "Add Item"
@@ -9802,8 +10319,8 @@ msgstr ""
msgid "Source"
msgstr ""
-#: editor/plugins/script_text_editor.cpp scene/3d/interpolated_camera.cpp
-#: scene/animation/skeleton_ik.cpp
+#: editor/plugins/script_text_editor.cpp platform/uwp/export/export.cpp
+#: scene/3d/interpolated_camera.cpp scene/animation/skeleton_ik.cpp
msgid "Target"
msgstr "Pinagtututukan"
@@ -10763,7 +11280,9 @@ msgstr "Bilis:"
#: editor/plugins/sprite_frames_editor_plugin.cpp
#: modules/gltf/gltf_animation.cpp modules/minimp3/audio_stream_mp3.cpp
-#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp scene/2d/path_2d.cpp
+#: modules/minimp3/resource_importer_mp3.cpp
+#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp
+#: modules/stb_vorbis/resource_importer_ogg_vorbis.cpp scene/2d/path_2d.cpp
#: scene/3d/path.cpp scene/resources/animation.cpp scene/resources/material.cpp
msgid "Loop"
msgstr "Ipaulit-ulit"
@@ -11638,8 +12157,9 @@ msgstr ""
msgid "Priority"
msgstr "Pagpapahalaga"
-#: editor/plugins/tile_set_editor_plugin.cpp main/main.cpp scene/gui/button.cpp
-#: scene/gui/item_list.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp main/main.cpp
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#: scene/gui/button.cpp scene/gui/item_list.cpp
msgid "Icon"
msgstr "Icon"
@@ -12937,10 +13457,6 @@ msgid ""
msgstr ""
#: editor/project_export.cpp
-msgid "Release"
-msgstr ""
-
-#: editor/project_export.cpp
msgid "Exporting All"
msgstr ""
@@ -14716,6 +15232,7 @@ msgid "Change AudioStreamPlayer3D Emission Angle"
msgstr ""
#: editor/spatial_editor_gizmos.cpp modules/gltf/gltf_node.cpp
+#: platform/osx/export/export.cpp
msgid "Camera"
msgstr ""
@@ -14984,7 +15501,8 @@ msgstr ""
msgid "Use Nvidia Rect Flicker Workaround"
msgstr ""
-#: main/main.cpp platform/uwp/os_uwp.cpp
+#: main/main.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp platform/uwp/os_uwp.cpp
#, fuzzy
msgid "Display"
msgstr "Ipakita Lahat"
@@ -15042,19 +15560,6 @@ msgstr ""
msgid "Allowed"
msgstr ""
-#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp scene/2d/camera_2d.cpp
-#: scene/2d/light_2d.cpp scene/2d/navigation_polygon.cpp
-#: scene/2d/ray_cast_2d.cpp scene/2d/sprite.cpp scene/2d/y_sort.cpp
-#: scene/3d/audio_stream_player_3d.cpp scene/3d/baked_lightmap.cpp
-#: scene/3d/interpolated_camera.cpp scene/3d/light.cpp
-#: scene/3d/navigation_mesh_instance.cpp scene/3d/ray_cast.cpp
-#: scene/3d/sprite_3d.cpp scene/gui/graph_edit.cpp
-#: scene/gui/rich_text_label.cpp scene/resources/curve.cpp
-#: scene/resources/environment.cpp
-#, fuzzy
-msgid "Enabled"
-msgstr "Paganahin"
-
#: main/main.cpp
msgid "Intended Usage"
msgstr ""
@@ -15085,13 +15590,14 @@ msgstr ""
msgid "Handheld"
msgstr ""
-#: main/main.cpp
+#: main/main.cpp platform/javascript/export/export.cpp
+#: platform/uwp/export/export.cpp
#, fuzzy
msgid "Orientation"
msgstr "Mga Kasulatan sa Online"
#: main/main.cpp scene/gui/scroll_container.cpp scene/gui/text_edit.cpp
-#: scene/main/scene_tree.cpp
+#: scene/main/scene_tree.cpp scene/register_scene_types.cpp
#, fuzzy
msgid "Common"
msgstr "Pamayanan"
@@ -15132,7 +15638,7 @@ msgstr ""
#: main/main.cpp
#, fuzzy
-msgid "Frame Delay (msec)"
+msgid "Frame Delay Msec"
msgstr "Oras ng Frame (ms)"
#: main/main.cpp
@@ -15255,11 +15761,6 @@ msgstr ""
msgid "Tooltip Position Offset"
msgstr ""
-#: main/main.cpp modules/mono/editor/csharp_project.cpp
-#: modules/mono/mono_gd/gd_mono.cpp
-msgid "Mono"
-msgstr ""
-
#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp
msgid "Debugger Agent"
msgstr ""
@@ -15817,7 +16318,7 @@ msgstr "Mga Kulay"
msgid "Intensity"
msgstr ""
-#: modules/gltf/gltf_light.cpp scene/2d/light_2d.cpp
+#: modules/gltf/gltf_light.cpp scene/2d/light_2d.cpp scene/3d/light.cpp
#, fuzzy
msgid "Range"
msgstr "Baguhin"
@@ -15959,11 +16460,6 @@ msgstr ""
msgid "Use Named Skin Binds"
msgstr ""
-#: modules/gltf/gltf_state.cpp scene/3d/physics_joint.cpp
-#, fuzzy
-msgid "Nodes"
-msgstr "Node"
-
#: modules/gltf/gltf_state.cpp
msgid "Buffer Views"
msgstr ""
@@ -15973,14 +16469,6 @@ msgid "Accessors"
msgstr ""
#: modules/gltf/gltf_state.cpp
-msgid "Meshes"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp
-msgid "Materials"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp
#, fuzzy
msgid "Scene Name"
msgstr "Kinalalagyan ng Eksena:"
@@ -15997,15 +16485,11 @@ msgstr "Ilipat Ang Node"
msgid "Textures"
msgstr "Mga Tampok"
-#: modules/gltf/gltf_state.cpp
+#: modules/gltf/gltf_state.cpp platform/uwp/export/export.cpp
msgid "Images"
msgstr ""
#: modules/gltf/gltf_state.cpp
-msgid "Skins"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp
msgid "Cameras"
msgstr ""
@@ -16039,10 +16523,14 @@ msgid "Src Image"
msgstr "Ipakita Ang Mga Buto"
#: modules/gridmap/grid_map.cpp
-msgid "Physics Material"
+msgid "Mesh Library"
msgstr ""
#: modules/gridmap/grid_map.cpp
+msgid "Physics Material"
+msgstr ""
+
+#: modules/gridmap/grid_map.cpp scene/3d/visual_instance.cpp
msgid "Use In Baked Light"
msgstr ""
@@ -16073,6 +16561,7 @@ msgstr "Gitna"
#: modules/gridmap/grid_map.cpp scene/2d/collision_object_2d.cpp
#: scene/2d/tile_map.cpp scene/3d/collision_object.cpp scene/3d/soft_body.cpp
+#: scene/resources/material.cpp
msgid "Mask"
msgstr ""
@@ -16253,7 +16742,9 @@ msgid "Ultra Quality Ray Count"
msgstr ""
#: modules/minimp3/audio_stream_mp3.cpp
+#: modules/minimp3/resource_importer_mp3.cpp
#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp
+#: modules/stb_vorbis/resource_importer_ogg_vorbis.cpp
#, fuzzy
msgid "Loop Offset"
msgstr "Usog:"
@@ -17329,6 +17820,188 @@ msgid "The package must have at least one '.' separator."
msgstr ""
#: platform/android/export/export_plugin.cpp
+msgid "Use Custom Build"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Export Format"
+msgstr "Iluwas ang Library"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Keystore"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Debug User"
+msgstr "Debug"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+msgid "Debug Password"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Release User"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Release Password"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "One Click Deploy"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Clear Previous Install"
+msgstr "Nakaraang tab"
+
+#: platform/android/export/export_plugin.cpp scene/resources/shader.cpp
+msgid "Code"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Min SDK"
+msgstr "Pangunahing Skrip:"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Target SDK"
+msgstr "Pinagtututukan"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Package"
+msgstr "Iniimpake"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Unique Name"
+msgstr "Pangalan ng Node:"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Signed"
+msgstr "Hudyat"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Classify As Game"
+msgstr "Class"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Retain Data On Uninstall"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Exclude From Recents"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Graphics"
+msgstr "Usog:"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "OpenGL Debug"
+msgstr "Buksan"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "XR Features"
+msgstr "Mga Tampok"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "XR Mode"
+msgstr "Paraan ng Pag-pan"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Hand Tracking"
+msgstr "Iniimpake"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Hand Tracking Frequency"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Passthrough"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Immersive Mode"
+msgstr "Mag-ikot"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Support Small"
+msgstr "Naka-alalay"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Support Normal"
+msgstr "Naka-alalay"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Support Large"
+msgstr "Naka-alalay"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Support Xlarge"
+msgstr "Naka-alalay"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "User Data Backup"
+msgstr "Buksan ang User Data Folder ng Proyekto"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Allow"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Command Line"
+msgstr "Pamayanan"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Extra Args"
+msgstr "Mga Dagdag na Argumento ng Tawag:"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "APK Expansion"
+msgstr "Ekspresyon"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Salt"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Public Key"
+msgstr "Duplikahin ang (mga) Key"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Permissions"
+msgstr "Ekspresyon"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Custom Permissions"
+msgstr "Patakbuhin ang Pinasadyang Eksena"
+
+#: platform/android/export/export_plugin.cpp
msgid "Select device from the list"
msgstr ""
@@ -17618,6 +18291,175 @@ msgid "The character '%s' is not allowed in Identifier."
msgstr ""
#: platform/iphone/export/export.cpp
+msgid "App Store Team ID"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Provisioning Profile UUID Debug"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Code Sign Identity Debug"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Export Method Debug"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Provisioning Profile UUID Release"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Code Sign Identity Release"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Export Method Release"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Targeted Device Family"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Info"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Identifier"
+msgstr "I-urong Pakaliwa"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Signature"
+msgstr "Hudyat"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Short Version"
+msgstr "Bersyon"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Copyright"
+msgstr "Kopyahin"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Capabilities"
+msgstr "I-pasta ang mga Katangian"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Access Wi-Fi"
+msgstr "Tagumpay!"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Push Notifications"
+msgstr "Constant"
+
+#: platform/iphone/export/export.cpp scene/3d/baked_lightmap.cpp
+#, fuzzy
+msgid "User Data"
+msgstr "Buksan ang User Data Folder ng Proyekto"
+
+#: platform/iphone/export/export.cpp
+msgid "Accessible From Files App"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Accessible From Itunes Sharing"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Privacy"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Camera Usage Description"
+msgstr "Paglalarawan"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Microphone Usage Description"
+msgstr "Mga Paglalarawan ng Katangian"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Photolibrary Usage Description"
+msgstr "Mga Paglalarawan ng Katangian"
+
+#: platform/iphone/export/export.cpp
+msgid "iPhone 120 X 120"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPhone 180 X 180"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 76 X 76"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 152 X 152"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 167 X 167"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "App Store 1024 X 1024"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Spotlight 40 X 40"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Spotlight 80 X 80"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Storyboard"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Use Launch Screen Storyboard"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Image Scale Mode"
+msgstr "Magpalaki"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Custom Image @2x"
+msgstr "Kopyahin ang mga Node"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Custom Image @3x"
+msgstr "Kopyahin ang mga Node"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Use Custom BG Color"
+msgstr "Kopyahin ang mga Node"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Custom BG Color"
+msgstr "Kopyahin ang mga Node"
+
+#: platform/iphone/export/export.cpp
msgid "App Store Team ID not specified - cannot configure the project."
msgstr ""
@@ -17654,6 +18496,80 @@ msgid "Could not read file:"
msgstr ""
#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Variant"
+msgstr "Mga Enumerasyon"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Export Type"
+msgstr "Magluwas"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "VRAM Texture Compression"
+msgstr "Ekspresyon"
+
+#: platform/javascript/export/export.cpp
+msgid "For Desktop"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "For Mobile"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Html"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Export Icon"
+msgstr "Palakihin lahat"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Custom Html Shell"
+msgstr "Kopyahin ang mga Node"
+
+#: platform/javascript/export/export.cpp
+msgid "Head Include"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Canvas Resize Policy"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Focus Canvas On Start"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Experimental Virtual Keyboard"
+msgstr "Salain ang mga hudyat"
+
+#: platform/javascript/export/export.cpp
+msgid "Progressive Web App"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Offline Page"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 144 X 144"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 180 X 180"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 512 X 512"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
msgid "Could not read HTML shell:"
msgstr ""
@@ -17760,6 +18676,198 @@ msgid "Unknown object type."
msgstr ""
#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "App Category"
+msgstr "Kaurian:"
+
+#: platform/osx/export/export.cpp
+msgid "High Res"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Location Usage Description"
+msgstr "Paglalarawan"
+
+#: platform/osx/export/export.cpp
+msgid "Address Book Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Calendar Usage Description"
+msgstr "Paglalarawan"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Photos Library Usage Description"
+msgstr "Mga Paglalarawan ng Katangian"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Desktop Folder Usage Description"
+msgstr "Panglalarawan ng mga Method"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Documents Folder Usage Description"
+msgstr "Panglalarawan ng mga Method"
+
+#: platform/osx/export/export.cpp
+msgid "Downloads Folder Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Network Volumes Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Removable Volumes Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#, fuzzy
+msgid "Codesign"
+msgstr "Node"
+
+#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Identity"
+msgstr "I-urong Pakaliwa"
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#, fuzzy
+msgid "Timestamp"
+msgstr "Oras"
+
+#: platform/osx/export/export.cpp
+msgid "Hardened Runtime"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Replace Existing Signature"
+msgstr "Palitan Lahat"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Entitlements"
+msgstr "Mga Gizmo"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Custom File"
+msgstr "Kopyahin ang mga Node"
+
+#: platform/osx/export/export.cpp
+msgid "Allow JIT Code Execution"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Allow Unsigned Executable Memory"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Allow Dyld Environment Variables"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Disable Library Validation"
+msgstr "Nakikitang Collision Shapes"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Audio Input"
+msgstr "Palitan ang pangalan ng Audio Bus"
+
+#: platform/osx/export/export.cpp
+msgid "Address Book"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Calendars"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Photos Library"
+msgstr "Iluwas ang Library"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Apple Events"
+msgstr "I-apply ang Reset"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Debugging"
+msgstr "Debug"
+
+#: platform/osx/export/export.cpp
+msgid "App Sandbox"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Network Server"
+msgstr "Ihinto ang HTTP Server"
+
+#: platform/osx/export/export.cpp
+msgid "Network Client"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Device Usb"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Device Bluetooth"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Files Downloads"
+msgstr "I-download"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Files Pictures"
+msgstr "Mga Tampok"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Files Music"
+msgstr "File:"
+
+#: platform/osx/export/export.cpp
+msgid "Files Movies"
+msgstr ""
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#, fuzzy
+msgid "Custom Options"
+msgstr "Kaayusan ng Bus"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Notarization"
+msgstr "Nabigasyon"
+
+#: platform/osx/export/export.cpp
+msgid "Apple ID Name"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Apple ID Password"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Apple Team ID"
+msgstr ""
+
+#: platform/osx/export/export.cpp
msgid ""
"Note: The notarization process generally takes less than an hour. When the "
"process is completed, you'll receive an email."
@@ -17950,6 +19058,132 @@ msgid "Force Builtin Codesign"
msgstr ""
#: platform/uwp/export/export.cpp
+msgid "Architecture"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Display Name"
+msgstr "Ipakita Lahat"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Short Name"
+msgstr "Pangalan ng Skript:"
+
+#: platform/uwp/export/export.cpp
+msgid "Publisher"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Publisher Display Name"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Product Guid"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Publisher Guid"
+msgstr "Alisin ang mga Patnubay"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Signing"
+msgstr "Hudyat"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Certificate"
+msgstr "Mga Katangian"
+
+#: platform/uwp/export/export.cpp
+msgid "Algorithm"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Major"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Minor"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Build"
+msgstr "Paraan ng Pag-sukat"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Revision"
+msgstr "Ekspresyon"
+
+#: platform/uwp/export/export.cpp
+msgid "Landscape"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Portrait"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Landscape Flipped"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Portrait Flipped"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Store Logo"
+msgstr "Magpalaki"
+
+#: platform/uwp/export/export.cpp
+msgid "Square 44 X 44 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 71 X 71 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 150 X 150 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 310 X 310 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Wide 310 X 150 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Splash Screen"
+msgstr "Kumuha ng Screenshot"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Tiles"
+msgstr "File:"
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Square 150 X 150"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Wide 310 X 150"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Square 310 X 310"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
msgid "Invalid package short name."
msgstr ""
@@ -18015,11 +19249,48 @@ msgid "Debug Certificate"
msgstr ""
#: platform/uwp/export/export.cpp
-msgid "Debug Password"
+msgid "Debug Algorithm"
msgstr ""
-#: platform/uwp/export/export.cpp
-msgid "Debug Algorithm"
+#: platform/windows/export/export.cpp
+msgid "Identity Type"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Timestamp Server URL"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Digest Algorithm"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "File Version"
+msgstr "Bersyon"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Product Version"
+msgstr "Kasalukuyang Bersyon:"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Company Name"
+msgstr "Pangalan ng Node:"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Product Name"
+msgstr "Pangalan ng Proyekto:"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "File Description"
+msgstr "Paglalarawan"
+
+#: platform/windows/export/export.cpp
+msgid "Trademarks"
msgstr ""
#: platform/windows/export/export.cpp
@@ -18092,12 +19363,14 @@ msgstr "Patakbuhin"
msgid "Centered"
msgstr "Gitna"
-#: scene/2d/animated_sprite.cpp scene/2d/camera_2d.cpp scene/2d/light_2d.cpp
+#: scene/2d/animated_sprite.cpp scene/2d/camera_2d.cpp
+#: scene/2d/cpu_particles_2d.cpp scene/2d/light_2d.cpp
#: scene/2d/parallax_background.cpp scene/2d/parallax_layer.cpp
#: scene/2d/path_2d.cpp scene/2d/polygon_2d.cpp scene/2d/sprite.cpp
-#: scene/3d/path.cpp scene/3d/physics_body.cpp scene/3d/sprite_3d.cpp
-#: scene/gui/graph_node.cpp scene/gui/rich_text_effect.cpp
-#: scene/main/canvas_layer.cpp scene/resources/material.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/path.cpp scene/3d/physics_body.cpp
+#: scene/3d/sprite_3d.cpp scene/gui/graph_node.cpp
+#: scene/gui/rich_text_effect.cpp scene/main/canvas_layer.cpp
+#: scene/resources/material.cpp scene/resources/particles_material.cpp
#: scene/resources/style_box.cpp
#, fuzzy
msgid "Offset"
@@ -18169,11 +19442,6 @@ msgstr "Magdagdag ng Audio Bus"
msgid "Override"
msgstr "Ipagpalit"
-#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
-#: scene/audio/audio_stream_player.cpp scene/gui/video_player.cpp
-msgid "Stream"
-msgstr ""
-
#: scene/2d/audio_stream_player_2d.cpp scene/audio/audio_stream_player.cpp
#: scene/gui/video_player.cpp servers/audio/effects/audio_effect_amplify.cpp
msgid "Volume dB"
@@ -18198,12 +19466,12 @@ msgid "Stream Paused"
msgstr ""
#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
-#: scene/3d/reflection_probe.cpp scene/3d/visual_instance.cpp
-#: scene/resources/material.cpp
+#: scene/3d/light.cpp scene/3d/reflection_probe.cpp
+#: scene/3d/visual_instance.cpp scene/resources/material.cpp
msgid "Max Distance"
msgstr ""
-#: scene/2d/audio_stream_player_2d.cpp
+#: scene/2d/audio_stream_player_2d.cpp scene/3d/light.cpp
#, fuzzy
msgid "Attenuation"
msgstr "Animasyon"
@@ -18259,6 +19527,24 @@ msgstr "Gumalaw"
msgid "Limit"
msgstr ""
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/style_box.cpp
+#, fuzzy
+msgid "Left"
+msgstr "I-urong Pakaliwa"
+
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/style_box.cpp
+#, fuzzy
+msgid "Right"
+msgstr "I-urong Pakanan"
+
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/dynamic_font.cpp scene/resources/style_box.cpp
+#, fuzzy
+msgid "Bottom"
+msgstr "Pumili ng Kulay"
+
#: scene/2d/camera_2d.cpp
msgid "Smoothed"
msgstr ""
@@ -18462,13 +19748,6 @@ msgstr ""
msgid "Emitting"
msgstr "Kaayusan:"
-#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp scene/3d/area.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
-#: scene/resources/environment.cpp
-#, fuzzy
-msgid "Amount"
-msgstr "Bilang:"
-
#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp
#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
msgid "Lifetime"
@@ -18530,18 +19809,13 @@ msgstr ""
#: scene/2d/mesh_instance_2d.cpp scene/2d/multimesh_instance_2d.cpp
#: scene/2d/particles_2d.cpp scene/2d/polygon_2d.cpp scene/2d/sprite.cpp
#: scene/3d/sprite_3d.cpp scene/gui/nine_patch_rect.cpp
-#: scene/gui/texture_rect.cpp scene/resources/sky.cpp
-#: scene/resources/style_box.cpp scene/resources/visual_shader_nodes.cpp
+#: scene/gui/texture_rect.cpp scene/resources/material.cpp
+#: scene/resources/sky.cpp scene/resources/style_box.cpp
+#: scene/resources/visual_shader_nodes.cpp
#, fuzzy
msgid "Texture"
msgstr "Mga Tampok"
-#: scene/2d/cpu_particles_2d.cpp scene/2d/mesh_instance_2d.cpp
-#: scene/2d/multimesh_instance_2d.cpp scene/2d/particles_2d.cpp
-#: scene/2d/sprite.cpp scene/resources/style_box.cpp
-msgid "Normal Map"
-msgstr ""
-
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
#, fuzzy
@@ -18563,9 +19837,8 @@ msgid "Normals"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/3d/sprite_3d.cpp scene/resources/material.cpp
-#: scene/resources/particles_material.cpp scene/resources/texture.cpp
-msgid "Flags"
+#: scene/resources/particles_material.cpp
+msgid "Align Y"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
@@ -18587,6 +19860,12 @@ msgid "Initial Velocity"
msgstr "Simulan"
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Velocity Random"
+msgstr "Simulan"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp servers/physics_2d_server.cpp
#: servers/physics_server.cpp
msgid "Angular Velocity"
@@ -18594,6 +19873,12 @@ msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Velocity Curve"
+msgstr "Simulan"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
msgid "Orbit Velocity"
msgstr ""
@@ -18605,6 +19890,23 @@ msgstr "Pahanay"
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Accel"
+msgstr "Tagumpay!"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Accel Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Accel Curve"
+msgstr "Lalim"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
msgid "Radial Accel"
msgstr ""
@@ -18614,19 +19916,55 @@ msgid "Tangential Accel"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/2d/joints_2d.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/vehicle_body.cpp
-#: scene/resources/particles_material.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/physics_joint.cpp
+#: scene/3d/vehicle_body.cpp scene/resources/particles_material.cpp
#: servers/audio/effects/audio_effect_reverb.cpp
msgid "Damping"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+msgid "Damping Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Damping Curve"
+msgstr "Lalim"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp scene/3d/light.cpp
+#: scene/resources/particles_material.cpp
msgid "Angle"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+msgid "Angle Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Angle Curve"
+msgstr "Lalim"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#, fuzzy
+msgid "Scale Amount"
+msgstr "Bilang:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+msgid "Scale Amount Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#, fuzzy
+msgid "Scale Amount Curve"
+msgstr "Ibahin Ang Sukat Mula Sa Panturo"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
#, fuzzy
msgid "Color Ramp"
msgstr "Mga Kulay"
@@ -18642,6 +19980,47 @@ msgstr ""
msgid "Hue Variation"
msgstr "Mga Enumerasyon"
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Variation"
+msgstr "Mga Enumerasyon"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Variation Random"
+msgstr "Mga Enumerasyon"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Variation Curve"
+msgstr "Mga Enumerasyon"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Speed Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Speed Curve"
+msgstr "Piliin ang Tinututukan"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Offset Random"
+msgstr "Usog:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Offset Curve"
+msgstr "Lalim"
+
#: scene/2d/joints_2d.cpp
msgid "Node A and Node B must be PhysicsBody2Ds"
msgstr ""
@@ -18673,6 +20052,7 @@ msgid "Node B"
msgstr "Node"
#: scene/2d/joints_2d.cpp scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp
+#: scene/3d/light.cpp scene/3d/physics_joint.cpp
#: scene/resources/environment.cpp
msgid "Bias"
msgstr ""
@@ -18682,7 +20062,7 @@ msgstr ""
msgid "Disable Collision"
msgstr "Nakikitang Collision Shapes"
-#: scene/2d/joints_2d.cpp
+#: scene/2d/joints_2d.cpp scene/3d/physics_joint.cpp
msgid "Softness"
msgstr ""
@@ -18700,7 +20080,7 @@ msgstr "Simulan"
msgid "Rest Length"
msgstr ""
-#: scene/2d/joints_2d.cpp scene/3d/vehicle_body.cpp
+#: scene/2d/joints_2d.cpp scene/3d/physics_joint.cpp scene/3d/vehicle_body.cpp
msgid "Stiffness"
msgstr ""
@@ -18720,7 +20100,7 @@ msgid "Texture Scale"
msgstr ""
#: scene/2d/light_2d.cpp scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp
-#: scene/resources/environment.cpp scene/resources/sky.cpp
+#: scene/3d/light.cpp scene/resources/environment.cpp scene/resources/sky.cpp
msgid "Energy"
msgstr ""
@@ -18758,12 +20138,6 @@ msgstr "Ipagsama galing sa Eksena"
msgid "Gradient Length"
msgstr "Karaniwan"
-#: scene/2d/light_2d.cpp scene/gui/control.cpp
-#: scene/resources/navigation_mesh.cpp
-#, fuzzy
-msgid "Filter"
-msgstr "Salain ang mga node"
-
#: scene/2d/light_2d.cpp
#, fuzzy
msgid "Filter Smooth"
@@ -19166,10 +20540,6 @@ msgid "Applied Forces"
msgstr ""
#: scene/2d/physics_body_2d.cpp
-msgid "Force"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp
msgid "Torque"
msgstr ""
@@ -19182,7 +20552,7 @@ msgid "Sync To Physics"
msgstr ""
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-msgid "Moving platform"
+msgid "Moving Platform"
msgstr ""
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
@@ -19191,7 +20561,7 @@ msgstr ""
#: scene/2d/physics_body_2d.cpp scene/2d/touch_screen_button.cpp
#: scene/3d/physics_body.cpp scene/gui/texture_button.cpp
-#: scene/resources/line_shape_2d.cpp
+#: scene/resources/line_shape_2d.cpp scene/resources/material.cpp
msgid "Normal"
msgstr ""
@@ -19418,6 +20788,34 @@ msgid ""
"as parent."
msgstr ""
+#: scene/2d/visibility_notifier_2d.cpp scene/3d/visibility_notifier.cpp
+#, fuzzy
+msgid "Pause Animations"
+msgstr "Animasyon"
+
+#: scene/2d/visibility_notifier_2d.cpp scene/3d/visibility_notifier.cpp
+msgid "Freeze Bodies"
+msgstr ""
+
+#: scene/2d/visibility_notifier_2d.cpp
+#, fuzzy
+msgid "Pause Particles"
+msgstr "I-pasta ang mga Params"
+
+#: scene/2d/visibility_notifier_2d.cpp
+#, fuzzy
+msgid "Pause Animated Sprites"
+msgstr "Ibahin ang Baytang ng Animation"
+
+#: scene/2d/visibility_notifier_2d.cpp
+#, fuzzy
+msgid "Process Parent"
+msgstr "Pagpapahalaga"
+
+#: scene/2d/visibility_notifier_2d.cpp
+msgid "Physics Process Parent"
+msgstr ""
+
#: scene/3d/area.cpp
msgid "Reverb Bus"
msgstr ""
@@ -19510,6 +20908,7 @@ msgid "Attenuation Filter"
msgstr ""
#: scene/3d/audio_stream_player_3d.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
#: servers/audio/effects/audio_effect_filter.cpp
msgid "Cutoff Hz"
msgstr ""
@@ -19552,11 +20951,6 @@ msgid "Octree"
msgstr ""
#: scene/3d/baked_lightmap.cpp
-#, fuzzy
-msgid "User Data"
-msgstr "Buksan ang User Data Folder ng Proyekto"
-
-#: scene/3d/baked_lightmap.cpp
msgid "Finding meshes and lights"
msgstr ""
@@ -19807,6 +21201,16 @@ msgid "Ring Axis"
msgstr "Mga Babala"
#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Rotate Y"
+msgstr "Mag-ikot"
+
+#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Disable Z"
+msgstr "(Hindi Pinapagana Ang Editor)"
+
+#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
msgid "Flatness"
msgstr ""
@@ -19844,16 +21248,11 @@ msgstr ""
msgid "Dynamic Range"
msgstr ""
-#: scene/3d/gi_probe.cpp
+#: scene/3d/gi_probe.cpp scene/3d/light.cpp
msgid "Normal Bias"
msgstr ""
#: scene/3d/gi_probe.cpp
-#, fuzzy
-msgid "Compress"
-msgstr "Mga Bahagi"
-
-#: scene/3d/gi_probe.cpp
msgid "Plotting Meshes"
msgstr ""
@@ -19880,16 +21279,31 @@ msgstr ""
#: scene/3d/light.cpp
#, fuzzy
+msgid "Indirect Energy"
+msgstr "I-urong Pakanan"
+
+#: scene/3d/light.cpp
+#, fuzzy
msgid "Negative"
msgstr "GDNative"
#: scene/3d/light.cpp
#, fuzzy
+msgid "Specular"
+msgstr "Paraan ng Pag-sukat"
+
+#: scene/3d/light.cpp
+#, fuzzy
msgid "Bake Mode"
msgstr "Mag-ikot"
#: scene/3d/light.cpp
#, fuzzy
+msgid "Contact"
+msgstr "Pumili ng Kulay"
+
+#: scene/3d/light.cpp
+#, fuzzy
msgid "Reverse Cull Face"
msgstr "Ibalik sa Dati Ang Kaingayan ng Bus"
@@ -19899,11 +21313,31 @@ msgid "Directional Shadow"
msgstr "Mga Direksyon"
#: scene/3d/light.cpp
+#, fuzzy
+msgid "Split 1"
+msgstr "Usog:"
+
+#: scene/3d/light.cpp
+#, fuzzy
+msgid "Split 2"
+msgstr "Usog:"
+
+#: scene/3d/light.cpp
+#, fuzzy
+msgid "Split 3"
+msgstr "Usog:"
+
+#: scene/3d/light.cpp
msgid "Blend Splits"
msgstr ""
#: scene/3d/light.cpp
#, fuzzy
+msgid "Bias Split Scale"
+msgstr "Bagong Skrip"
+
+#: scene/3d/light.cpp
+#, fuzzy
msgid "Depth Range"
msgstr "Lalim"
@@ -19929,6 +21363,11 @@ msgstr ""
msgid "Spot"
msgstr ""
+#: scene/3d/light.cpp
+#, fuzzy
+msgid "Angle Attenuation"
+msgstr "Animasyon"
+
#: scene/3d/mesh_instance.cpp
msgid "Software Skinning"
msgstr ""
@@ -20050,6 +21489,63 @@ msgstr ""
#: scene/3d/physics_body.cpp
#, fuzzy
+msgid "Linear X"
+msgstr "Pahanay"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Linear Y"
+msgstr "Pahanay"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Linear Z"
+msgstr "Pahanay"
+
+#: scene/3d/physics_body.cpp
+msgid "Angular X"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Angular Y"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Angular Z"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Motion X"
+msgstr "Kondisyon"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Motion Y"
+msgstr "Kondisyon"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Motion Z"
+msgstr "Kondisyon"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Move Lock X"
+msgstr "Ilipat Ang Node"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Move Lock Y"
+msgstr "Ilipat Ang Node"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Move Lock Z"
+msgstr "Ilipat Ang Node"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
msgid "Body Offset"
msgstr "Usog:"
@@ -20082,6 +21578,15 @@ msgid "Exclude Nodes"
msgstr ""
#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Params"
+msgstr "I-pasta ang mga Params"
+
+#: scene/3d/physics_joint.cpp
+msgid "Impulse Clamp"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit"
msgstr ""
@@ -20093,6 +21598,55 @@ msgstr ""
msgid "Lower"
msgstr ""
+#: scene/3d/physics_joint.cpp scene/3d/vehicle_body.cpp
+#, fuzzy
+msgid "Relaxation"
+msgstr "Ibahin ang Pangalan ng Punsyon"
+
+#: scene/3d/physics_joint.cpp
+msgid "Motor"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Target Velocity"
+msgstr "Simulan"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Max Impulse"
+msgstr "Bilis:"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit"
+msgstr "Pahanay"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Upper Distance"
+msgstr "Pumili ng Pangunahing Eksena"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Lower Distance"
+msgstr "Pumili ng Pangunahing Eksena"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Restitution"
+msgstr "Paglalarawan"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motion"
+msgstr "Simulan"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Ortho"
+msgstr "Pahanay"
+
#: scene/3d/physics_joint.cpp
msgid "Upper Angle"
msgstr ""
@@ -20103,6 +21657,15 @@ msgstr ""
#: scene/3d/physics_joint.cpp
#, fuzzy
+msgid "Angular Motion"
+msgstr "Animasyon"
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Ortho"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
msgid "Swing Span"
msgstr "Sinasalba ang Eksena"
@@ -20111,17 +21674,98 @@ msgid "Twist Span"
msgstr ""
#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit X"
+msgstr "Pahanay"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motor X"
+msgstr "Simulan"
+
+#: scene/3d/physics_joint.cpp
+msgid "Force Limit"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Spring X"
+msgstr "Pahanay"
+
+#: scene/3d/physics_joint.cpp
+msgid "Equilibrium Point"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit X"
msgstr ""
#: scene/3d/physics_joint.cpp
+msgid "Erp"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Motor X"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Spring X"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit Y"
+msgstr "Pahanay"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motor Y"
+msgstr "Simulan"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Spring Y"
+msgstr "Pahanay"
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit Y"
msgstr ""
#: scene/3d/physics_joint.cpp
+msgid "Angular Motor Y"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Spring Y"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit Z"
+msgstr "Pahanay"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motor Z"
+msgstr "Simulan"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Spring Z"
+msgstr "Pahanay"
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit Z"
msgstr ""
+#: scene/3d/physics_joint.cpp
+msgid "Angular Motor Z"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Spring Z"
+msgstr ""
+
#: scene/3d/portal.cpp
msgid "The RoomManager should not be a child or grandchild of a Portal."
msgstr ""
@@ -20238,7 +21882,7 @@ msgstr ""
msgid "Use Default Simplify"
msgstr ""
-#: scene/3d/room.cpp
+#: scene/3d/room.cpp scene/3d/room_manager.cpp
msgid "Room Simplify"
msgstr ""
@@ -20277,6 +21921,13 @@ msgstr ""
msgid "Main"
msgstr ""
+#: scene/3d/room_manager.cpp scene/animation/animation_player.cpp
+#: scene/animation/animation_tree.cpp scene/animation/animation_tree_player.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+#, fuzzy
+msgid "Active"
+msgstr "Aktibahin na ngayon?"
+
#: scene/3d/room_manager.cpp
msgid "Roomlist"
msgstr ""
@@ -20300,6 +21951,52 @@ msgid "Gameplay"
msgstr ""
#: scene/3d/room_manager.cpp
+msgid "Gameplay Monitor"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "Use Secondary PVS"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Merge Meshes"
+msgstr "Ipagsama galing sa Eksena"
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Show Margins"
+msgstr "Ipakita sa FileSystem"
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Debug Sprawl"
+msgstr "Debug"
+
+#: scene/3d/room_manager.cpp
+msgid "Overlap Warning Threshold"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Preview Camera"
+msgstr "Pasilip"
+
+#: scene/3d/room_manager.cpp
+msgid "Portal Depth Limit"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Default Portal Margin"
+msgstr "Karaniwan"
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Roaming Expansion Margin"
+msgstr "Palakihin lahat"
+
+#: scene/3d/room_manager.cpp
msgid ""
"RoomList path is invalid.\n"
"Please check the RoomList branch has been assigned in the RoomManager."
@@ -20424,6 +22121,19 @@ msgstr "Paguurong na Pa-pixel"
msgid "Billboard"
msgstr ""
+#: scene/3d/sprite_3d.cpp scene/resources/material.cpp
+#, fuzzy
+msgid "Transparent"
+msgstr "Transisyon: "
+
+#: scene/3d/sprite_3d.cpp
+msgid "Shaded"
+msgstr ""
+
+#: scene/3d/sprite_3d.cpp
+msgid "Double Sided"
+msgstr ""
+
#: scene/3d/sprite_3d.cpp
msgid "Alpha Cut"
msgstr ""
@@ -20493,11 +22203,6 @@ msgstr "Ekspresyon"
msgid "Max Force"
msgstr "Nabigo"
-#: scene/3d/vehicle_body.cpp
-#, fuzzy
-msgid "Relaxation"
-msgstr "Ibahin ang Pangalan ng Punsyon"
-
#: scene/3d/visibility_notifier.cpp
msgid "AABB"
msgstr ""
@@ -20628,7 +22333,7 @@ msgstr ""
#: scene/animation/animation_blend_tree.cpp
#, fuzzy
-msgid "autorestart_"
+msgid "Auto Restart"
msgstr "Kusa Muling Pagumpisa:"
#: scene/animation/animation_blend_tree.cpp
@@ -20712,13 +22417,6 @@ msgstr "Mga Kaayusan ng Class:"
msgid "Default Blend Time"
msgstr "Karaniwan"
-#: scene/animation/animation_player.cpp scene/animation/animation_tree.cpp
-#: scene/animation/animation_tree_player.cpp
-#: servers/audio/effects/audio_effect_delay.cpp
-#, fuzzy
-msgid "Active"
-msgstr "Aktibahin na ngayon?"
-
#: scene/animation/animation_player.cpp
msgid "Method Call Mode"
msgstr ""
@@ -20838,10 +22536,6 @@ msgstr "Pinagtututukan"
msgid "Max Iterations"
msgstr "Gumawa ng Punsyon"
-#: scene/animation/tween.cpp scene/resources/texture.cpp
-msgid "Repeat"
-msgstr ""
-
#: scene/animation/tween.cpp
msgid "Playback Process Mode"
msgstr ""
@@ -20872,18 +22566,6 @@ msgstr "Paraan ng Pagpili"
msgid "Alignment"
msgstr ""
-#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
-#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
-#: scene/resources/style_box.cpp
-msgid "Horizontal"
-msgstr ""
-
-#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
-#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
-#: scene/resources/style_box.cpp
-msgid "Vertical"
-msgstr ""
-
#: scene/gui/base_button.cpp
msgid "Shortcut In Tooltip"
msgstr ""
@@ -20983,10 +22665,6 @@ msgid "HSV"
msgstr ""
#: scene/gui/color_picker.cpp
-msgid "Raw"
-msgstr ""
-
-#: scene/gui/color_picker.cpp
msgid "Switch between hexadecimal and code values."
msgstr ""
@@ -21046,6 +22724,30 @@ msgid "Focus"
msgstr ""
#: scene/gui/control.cpp
+msgid "Neighbour Left"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Neighbour Top"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Neighbour Right"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Neighbour Bottom"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Next"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Previous"
+msgstr ""
+
+#: scene/gui/control.cpp
msgid "Mouse"
msgstr ""
@@ -21082,7 +22784,7 @@ msgid "Dialog"
msgstr ""
#: scene/gui/dialogs.cpp
-msgid "Hide On Ok"
+msgid "Hide On OK"
msgstr ""
#: scene/gui/dialogs.cpp scene/gui/label.cpp
@@ -21180,7 +22882,7 @@ msgid "Timers"
msgstr "Oras"
#: scene/gui/item_list.cpp scene/gui/popup_menu.cpp scene/gui/tree.cpp
-msgid "Incremental Search Max Interval (msec)"
+msgid "Incremental Search Max Interval Msec"
msgstr ""
#: scene/gui/item_list.cpp scene/gui/tree.cpp
@@ -21736,6 +23438,26 @@ msgstr "Usog:"
msgid "Nine Patch Stretch"
msgstr "Paraang Interpolasyon"
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Left"
+msgstr "Paraan ng Pagpili"
+
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Top"
+msgstr "Paraan ng Pagpili"
+
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Right"
+msgstr "Paraan ng Pagpili"
+
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Bottom"
+msgstr "Paraan ng Pagpili"
+
#: scene/gui/tree.cpp
msgid "Custom Minimum Height"
msgstr ""
@@ -21770,8 +23492,9 @@ msgid "Paused"
msgstr ""
#: scene/gui/video_player.cpp
-msgid "Buffering (msec)"
-msgstr ""
+#, fuzzy
+msgid "Buffering Msec"
+msgstr "Ipagsama galing sa Eksena"
#: scene/gui/video_player.cpp
#, fuzzy
@@ -22111,6 +23834,22 @@ msgid "Shadow Atlas"
msgstr "Bagong Atlas"
#: scene/main/viewport.cpp
+msgid "Quad 0"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 1"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 2"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 3"
+msgstr ""
+
+#: scene/main/viewport.cpp
#, fuzzy
msgid "Canvas Transform"
msgstr "Pagbago ng Transform ng Animation"
@@ -22125,6 +23864,11 @@ msgid "Tooltip Delay (sec)"
msgstr ""
#: scene/register_scene_types.cpp
+#, fuzzy
+msgid "Swap OK Cancel"
+msgstr "Kanselahin"
+
+#: scene/register_scene_types.cpp
msgid "Use hiDPI"
msgstr ""
@@ -22139,21 +23883,6 @@ msgid "Custom Font"
msgstr "Kopyahin ang mga Node"
#: scene/resources/audio_stream_sample.cpp
-#, fuzzy
-msgid "Loop Mode"
-msgstr "Gumalaw"
-
-#: scene/resources/audio_stream_sample.cpp
-#, fuzzy
-msgid "Loop Begin"
-msgstr "Gumalaw"
-
-#: scene/resources/audio_stream_sample.cpp
-#, fuzzy
-msgid "Loop End"
-msgstr "Gumalaw"
-
-#: scene/resources/audio_stream_sample.cpp
#: servers/audio/effects/audio_stream_generator.cpp servers/audio_server.cpp
msgid "Mix Rate"
msgstr ""
@@ -22209,6 +23938,16 @@ msgstr "Karagdagang Kaayusan:"
#: scene/resources/dynamic_font.cpp
#, fuzzy
+msgid "Char"
+msgstr "Mga Pinapayagang Karakter:"
+
+#: scene/resources/dynamic_font.cpp scene/resources/world.cpp
+#: scene/resources/world_2d.cpp
+msgid "Space"
+msgstr ""
+
+#: scene/resources/dynamic_font.cpp
+#, fuzzy
msgid "Font"
msgstr "Mga Font"
@@ -22432,6 +24171,43 @@ msgid "Glow"
msgstr ""
#: scene/resources/environment.cpp
+#, fuzzy
+msgid "Levels"
+msgstr "Mga Developers"
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "1"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "2"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "3"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "4"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "5"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "6"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "7"
+msgstr ""
+
+#: scene/resources/environment.cpp
msgid "Bloom"
msgstr ""
@@ -22523,9 +24299,66 @@ msgid "Next Pass"
msgstr "Susunod na tab"
#: scene/resources/material.cpp
+msgid "Use Shadow To Opacity"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Unshaded"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Vertex Lighting"
+msgstr "I-urong Pakanan"
+
+#: scene/resources/material.cpp
+msgid "No Depth Test"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Use Point Size"
+msgstr "Pangunahing Skrip:"
+
+#: scene/resources/material.cpp
+msgid "World Triplanar"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Fixed Size"
+msgstr "Paguurong na Pa-pixel"
+
+#: scene/resources/material.cpp
+msgid "Albedo Tex Force sRGB"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Do Not Receive Shadows"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Disable Ambient Light"
+msgstr "I-urong Pakanan"
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Ensure Correct Normals"
+msgstr "Track na Pang-3D Transform"
+
+#: scene/resources/material.cpp
msgid "Vertex Color"
msgstr ""
+#: scene/resources/material.cpp
+msgid "Use As Albedo"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Is sRGB"
+msgstr ""
+
#: scene/resources/material.cpp servers/visual_server.cpp
msgid "Parameters"
msgstr ""
@@ -22561,6 +24394,11 @@ msgid "Billboard Mode"
msgstr "Paraan ng Pag-sukat"
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Billboard Keep Scale"
+msgstr "Paraan ng Pag-sukat"
+
+#: scene/resources/material.cpp
msgid "Grow"
msgstr ""
@@ -22570,6 +24408,10 @@ msgid "Grow Amount"
msgstr "Bilang:"
#: scene/resources/material.cpp
+msgid "Use Alpha Scissor"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Alpha Scissor Threshold"
msgstr ""
@@ -22600,10 +24442,20 @@ msgid "Metallic Specular"
msgstr ""
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Metallic Texture"
+msgstr "Ibahin ang Punong-Uri"
+
+#: scene/resources/material.cpp
msgid "Metallic Texture Channel"
msgstr ""
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Roughness Texture"
+msgstr "Gumawa ng mga Punto ng Bugahan Galing sa Mesh"
+
+#: scene/resources/material.cpp
msgid "Roughness Texture Channel"
msgstr ""
@@ -22621,6 +24473,16 @@ msgid "Emission Operator"
msgstr ""
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Emission On UV2"
+msgstr "Ekspresyon"
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Emission Texture"
+msgstr "Gumawa ng mga Punto ng Bugahan Galing sa Mesh"
+
+#: scene/resources/material.cpp
msgid "NormalMap"
msgstr ""
@@ -22634,6 +24496,11 @@ msgstr ""
#: scene/resources/material.cpp
#, fuzzy
+msgid "Rim Texture"
+msgstr "Mga Tampok"
+
+#: scene/resources/material.cpp
+#, fuzzy
msgid "Clearcoat"
msgstr "Linisin"
@@ -22643,14 +24510,27 @@ msgid "Clearcoat Gloss"
msgstr "Alisin Ang Mga Buto"
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Clearcoat Texture"
+msgstr "Iangkat ang Tema"
+
+#: scene/resources/material.cpp
msgid "Anisotropy"
msgstr ""
#: scene/resources/material.cpp
+msgid "Anisotropy Flowmap"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Ambient Occlusion"
msgstr ""
#: scene/resources/material.cpp
+msgid "On UV2"
+msgstr ""
+
+#: scene/resources/material.cpp
#, fuzzy
msgid "Texture Channel"
msgstr "Paraan ng Pag-sukat"
@@ -22688,6 +24568,11 @@ msgstr "Transisyon: "
#: scene/resources/material.cpp
#, fuzzy
+msgid "Transmission Texture"
+msgstr "Transisyon: "
+
+#: scene/resources/material.cpp
+#, fuzzy
msgid "Refraction"
msgstr "Ibahin ang Pangalan ng Punsyon"
@@ -22704,6 +24589,10 @@ msgid "UV1"
msgstr ""
#: scene/resources/material.cpp
+msgid "Triplanar"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Triplanar Sharpness"
msgstr ""
@@ -22909,6 +24798,16 @@ msgstr "Iangkat ang Tema"
msgid "Point Count"
msgstr "Gumawa ng mga Punto ng Bugahan Galing sa Mesh"
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Scale Random"
+msgstr "Ratio ng Pagiiba ng Sukat:"
+
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Scale Curve"
+msgstr "Magpalaki"
+
#: scene/resources/physics_material.cpp
msgid "Rough"
msgstr ""
@@ -22967,10 +24866,6 @@ msgid "A"
msgstr ""
#: scene/resources/shader.cpp
-msgid "Code"
-msgstr ""
-
-#: scene/resources/shader.cpp
#, fuzzy
msgid "Custom Defines"
msgstr "Patakbuhin ang Pinasadyang Eksena"
@@ -23064,15 +24959,6 @@ msgstr ""
#: scene/resources/texture.cpp
#, fuzzy
-msgid "Storage"
-msgstr "Inimpok ang File:"
-
-#: scene/resources/texture.cpp
-msgid "Lossy Quality"
-msgstr ""
-
-#: scene/resources/texture.cpp
-#, fuzzy
msgid "Load Path"
msgstr "I-load ang Karaniwan"
@@ -23199,10 +25085,6 @@ msgstr ""
msgid "Fallback Environment"
msgstr ""
-#: scene/resources/world.cpp scene/resources/world_2d.cpp
-msgid "Space"
-msgstr ""
-
#: scene/resources/world.cpp
#, fuzzy
msgid "Scenario"
@@ -23279,10 +25161,37 @@ msgstr ""
msgid "Wet"
msgstr ""
-#: servers/audio/effects/audio_effect_compressor.cpp
-msgid "Threshold"
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "Voice"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+msgid "Delay (ms)"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_phaser.cpp
+msgid "Rate Hz"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#, fuzzy
+msgid "Depth (ms)"
+msgstr "Lalim"
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+msgid "Level dB"
msgstr ""
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+#: servers/audio/effects/audio_effect_panner.cpp
+#, fuzzy
+msgid "Pan"
+msgstr "Iniimpake"
+
#: servers/audio/effects/audio_effect_compressor.cpp
#: servers/audio/effects/audio_effect_filter.cpp
msgid "Gain"
@@ -23305,20 +25214,6 @@ msgid "Tap 1"
msgstr ""
#: servers/audio/effects/audio_effect_delay.cpp
-msgid "Delay (ms)"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_delay.cpp
-msgid "Level dB"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_delay.cpp
-#: servers/audio/effects/audio_effect_panner.cpp
-#, fuzzy
-msgid "Pan"
-msgstr "Iniimpake"
-
-#: servers/audio/effects/audio_effect_delay.cpp
msgid "Tap 2"
msgstr ""
@@ -23378,10 +25273,6 @@ msgstr ""
msgid "Range Max Hz"
msgstr ""
-#: servers/audio/effects/audio_effect_phaser.cpp
-msgid "Rate Hz"
-msgstr ""
-
#: servers/audio/effects/audio_effect_pitch_shift.cpp
msgid "Oversampling"
msgstr ""
@@ -23397,7 +25288,7 @@ msgid "Predelay"
msgstr ""
#: servers/audio/effects/audio_effect_reverb.cpp
-msgid "(msec)"
+msgid "Msec"
msgstr ""
#: servers/audio/effects/audio_effect_reverb.cpp
diff --git a/editor/translations/tr.po b/editor/translations/tr.po
index b49972b6d7..506538b5fd 100644
--- a/editor/translations/tr.po
+++ b/editor/translations/tr.po
@@ -69,13 +69,14 @@
# Amigos Sus <amigossus66@gmail.com>, 2022.
# Ferhat Geçdoğan <ferhatgectao@gmail.com>, 2022.
# Recep GUCLUER <rgucluer@gmail.com>, 2022.
+# Emir Tunahan Alim <emrtnhalim@gmail.com>, 2022.
msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
"Report-Msgid-Bugs-To: https://github.com/godotengine/godot\n"
"POT-Creation-Date: \n"
-"PO-Revision-Date: 2022-02-13 20:11+0000\n"
-"Last-Translator: Recep GUCLUER <rgucluer@gmail.com>\n"
+"PO-Revision-Date: 2022-03-21 22:23+0000\n"
+"Last-Translator: Emir Tunahan Alim <emrtnhalim@gmail.com>\n"
"Language-Team: Turkish <https://hosted.weblate.org/projects/godot-engine/"
"godot/tr/>\n"
"Language: tr\n"
@@ -83,16 +84,16 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Generator: Weblate 4.11-dev\n"
+"X-Generator: Weblate 4.12-dev\n"
-#: core/bind/core_bind.cpp
+#: core/bind/core_bind.cpp main/main.cpp
msgid "Tablet Driver"
msgstr ""
#: core/bind/core_bind.cpp
#, fuzzy
msgid "Clipboard"
-msgstr "Pano boÅŸ!"
+msgstr "Pano"
#: core/bind/core_bind.cpp
#, fuzzy
@@ -106,7 +107,7 @@ msgstr ""
#: core/bind/core_bind.cpp
#, fuzzy
msgid "V-Sync Enabled"
-msgstr "Etkin"
+msgstr "V-Sync Etkin"
#: core/bind/core_bind.cpp main/main.cpp
msgid "V-Sync Via Compositor"
@@ -114,12 +115,12 @@ msgstr ""
#: core/bind/core_bind.cpp main/main.cpp
msgid "Delta Smoothing"
-msgstr ""
+msgstr "Delta YumuÅŸatma"
#: core/bind/core_bind.cpp
#, fuzzy
msgid "Low Processor Usage Mode"
-msgstr "Biçimi Taşı"
+msgstr "Düşük İşlemci Kullanımı Modu"
#: core/bind/core_bind.cpp
msgid "Low Processor Usage Mode Sleep (µsec)"
@@ -128,22 +129,22 @@ msgstr ""
#: core/bind/core_bind.cpp main/main.cpp platform/uwp/os_uwp.cpp
#, fuzzy
msgid "Keep Screen On"
-msgstr "Hata Ayıklayıcıyı Açık Tut"
+msgstr "Ekranı Açık Tut"
#: core/bind/core_bind.cpp
#, fuzzy
msgid "Min Window Size"
-msgstr "Kontur Boyutu:"
+msgstr "En Düşük Ekran Boyutu"
#: core/bind/core_bind.cpp
#, fuzzy
msgid "Max Window Size"
-msgstr "Kontur Boyutu:"
+msgstr "Maksimum Ekran Boyutu"
#: core/bind/core_bind.cpp
#, fuzzy
msgid "Screen Orientation"
-msgstr "Screen Etkisi operatörü."
+msgstr "Ekran Oryantasyonu"
#: core/bind/core_bind.cpp main/main.cpp platform/uwp/os_uwp.cpp
#, fuzzy
@@ -189,8 +190,8 @@ msgstr "Dock Pozisyonu"
#: core/bind/core_bind.cpp editor/editor_settings.cpp main/main.cpp
#: modules/gdscript/gdscript_editor.cpp modules/gridmap/grid_map.cpp
#: modules/mono/csharp_script.cpp modules/visual_script/visual_script_nodes.cpp
-#: scene/2d/tile_map.cpp scene/3d/camera.cpp scene/gui/control.cpp
-#: scene/gui/graph_edit.cpp scene/main/viewport.cpp
+#: scene/2d/tile_map.cpp scene/3d/camera.cpp scene/3d/light.cpp
+#: scene/gui/control.cpp scene/gui/graph_edit.cpp scene/main/viewport.cpp
#: scene/resources/dynamic_font.cpp scene/resources/navigation_mesh.cpp
#: scene/resources/primitive_meshes.cpp scene/resources/sky.cpp
#: scene/resources/style_box.cpp scene/resources/texture.cpp
@@ -294,8 +295,7 @@ msgid "Data"
msgstr "Veri ile"
#: core/io/file_access_network.cpp core/register_core_types.cpp
-#: editor/editor_settings.cpp editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp main/main.cpp
+#: editor/editor_settings.cpp main/main.cpp
#: modules/gdscript/language_server/gdscript_language_server.cpp
#, fuzzy
msgid "Network"
@@ -579,9 +579,10 @@ msgstr "Ön ayar"
msgid "Relative"
msgstr "Göreceli Yapış"
-#: core/os/input_event.cpp scene/2d/camera_2d.cpp
-#: scene/3d/interpolated_camera.cpp scene/animation/animation_player.cpp
-#: scene/resources/environment.cpp
+#: core/os/input_event.cpp scene/2d/camera_2d.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/interpolated_camera.cpp
+#: scene/animation/animation_player.cpp scene/resources/environment.cpp
+#: scene/resources/particles_material.cpp
#, fuzzy
msgid "Speed"
msgstr "Hız:"
@@ -631,8 +632,9 @@ msgstr "İşleme Mesajı"
msgid "Pitch"
msgstr "Perde:"
-#: core/os/input_event.cpp scene/2d/physics_body_2d.cpp
-#: scene/3d/physics_body.cpp
+#: core/os/input_event.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/physics_body_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/3d/physics_body.cpp scene/resources/particles_material.cpp
#, fuzzy
msgid "Velocity"
msgstr "Yörünge Görünümü Sağ"
@@ -651,6 +653,8 @@ msgid "Controller Value"
msgstr ""
#: core/project_settings.cpp editor/editor_node.cpp main/main.cpp
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/windows/export/export.cpp
#, fuzzy
msgid "Application"
msgstr "Eylem"
@@ -669,13 +673,16 @@ msgstr "Proje Ayarları..."
#: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp
#: editor/editor_plugin_settings.cpp editor/editor_profiler.cpp
#: editor/project_manager.cpp editor/settings_config_dialog.cpp
-#: modules/gdnative/nativescript/nativescript.cpp scene/2d/area_2d.cpp
-#: scene/3d/area.cpp scene/main/node.cpp
+#: modules/gdnative/nativescript/nativescript.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/osx/export/export.cpp scene/2d/area_2d.cpp scene/3d/area.cpp
+#: scene/main/node.cpp
msgid "Name"
msgstr "İsim"
#: core/project_settings.cpp editor/editor_help.cpp
-#: modules/visual_script/visual_script_nodes.cpp
+#: modules/visual_script/visual_script_nodes.cpp platform/uwp/export/export.cpp
+#: platform/windows/export/export.cpp
msgid "Description"
msgstr "Açıklama"
@@ -713,7 +720,7 @@ msgid "Custom User Dir Name"
msgstr ""
#: core/project_settings.cpp editor/animation_track_editor.cpp
-#: editor/editor_audio_buses.cpp servers/audio_server.cpp
+#: editor/editor_audio_buses.cpp main/main.cpp servers/audio_server.cpp
msgid "Audio"
msgstr "Ses"
@@ -881,10 +888,13 @@ msgstr "Süzgeçler:"
msgid "Sharpen Intensity"
msgstr ""
-#: core/project_settings.cpp editor/editor_node.cpp editor/editor_settings.cpp
-#: editor/plugins/script_editor_plugin.cpp editor/project_export.cpp
-#: main/main.cpp modules/gdscript/gdscript.cpp
-#: modules/visual_script/visual_script.cpp scene/3d/room_manager.cpp
+#: core/project_settings.cpp editor/editor_export.cpp editor/editor_node.cpp
+#: editor/editor_settings.cpp editor/plugins/script_editor_plugin.cpp
+#: editor/project_export.cpp main/main.cpp modules/gdscript/gdscript.cpp
+#: modules/visual_script/visual_script.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp scene/3d/room_manager.cpp
#: scene/main/scene_tree.cpp scene/resources/shape_2d.cpp
#: servers/visual_server.cpp
msgid "Debug"
@@ -1120,6 +1130,7 @@ msgid "Subsurface Scattering"
msgstr ""
#: drivers/gles3/rasterizer_scene_gles3.cpp
+#: editor/import/resource_importer_texture.cpp
#: editor/plugins/spatial_editor_plugin.cpp modules/gltf/gltf_node.cpp
#: modules/gridmap/grid_map.cpp scene/2d/cpu_particles_2d.cpp
#: scene/2d/node_2d.cpp scene/2d/parallax_layer.cpp scene/2d/polygon_2d.cpp
@@ -1417,6 +1428,7 @@ msgid "Editors"
msgstr "Düzenleyici"
#: editor/animation_track_editor.cpp editor/editor_settings.cpp
+#: editor/import/resource_importer_scene.cpp
#: editor/plugins/animation_player_editor_plugin.cpp editor/scene_tree_dock.cpp
#: scene/2d/animated_sprite.cpp scene/2d/cpu_particles_2d.cpp
#: scene/2d/sprite.cpp scene/3d/cpu_particles.cpp scene/3d/sprite_3d.cpp
@@ -1650,14 +1662,14 @@ msgstr "Animasyon adım değeri."
msgid "Seconds"
msgstr "Saniye"
-#: editor/animation_track_editor.cpp
+#: editor/animation_track_editor.cpp editor/import/resource_importer_scene.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp main/main.cpp
#: scene/resources/texture.cpp
msgid "FPS"
msgstr "FPS"
#: editor/animation_track_editor.cpp editor/editor_plugin_settings.cpp
-#: editor/editor_resource_picker.cpp
+#: editor/editor_resource_picker.cpp editor/import/resource_importer_wav.cpp
#: editor/plugins/polygon_2d_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
@@ -2621,7 +2633,9 @@ msgid "Remove Autoload"
msgstr "KendindenYüklenme'yi Kaldır"
#: editor/editor_autoload_settings.cpp editor/editor_plugin_settings.cpp
-#: modules/gdscript/gdscript.cpp scene/2d/polygon_2d.cpp scene/3d/area.cpp
+#: modules/gdscript/gdscript.cpp platform/android/export/export_plugin.cpp
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#: scene/2d/polygon_2d.cpp scene/3d/area.cpp scene/3d/physics_joint.cpp
#: scene/3d/reflection_probe.cpp scene/main/canvas_layer.cpp
#: scene/resources/material.cpp servers/visual_server.cpp
msgid "Enable"
@@ -2790,6 +2804,59 @@ msgstr ""
#: editor/editor_export.cpp platform/android/export/export_plugin.cpp
#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Custom Template"
+msgstr "Editör Teması"
+
+#: editor/editor_export.cpp editor/project_export.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp
+msgid "Release"
+msgstr "Yayınlamak"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Binary Format"
+msgstr "Renk operatörü."
+
+#: editor/editor_export.cpp
+msgid "64 Bits"
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Embed PCK"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Texture Format"
+msgstr "DokuBölgesi"
+
+#: editor/editor_export.cpp
+msgid "BPTC"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "S3TC"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "ETC"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "ETC2"
+msgstr ""
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "No BPTC Fallbacks"
+msgstr "Shader Yedeklerini Zorla"
+
+#: editor/editor_export.cpp platform/android/export/export_plugin.cpp
+#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
msgid "Custom debug template not found."
msgstr "Özel hata ayıklama şablonu bulunmadı."
@@ -2970,6 +3037,7 @@ msgid "Make Current"
msgstr "Geçerli Yap"
#: editor/editor_feature_profile.cpp editor/editor_node.cpp
+#: editor/import/resource_importer_scene.cpp
#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
msgid "Import"
msgstr "İçe Aktar"
@@ -3099,8 +3167,11 @@ msgstr "Başarılı!"
msgid "Display Mode"
msgstr "Oynatma Modu:"
-#: editor/editor_file_dialog.cpp main/main.cpp modules/csg/csg_shape.cpp
-#: modules/visual_script/visual_script_nodes.cpp
+#: editor/editor_file_dialog.cpp
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+#: editor/import/resource_importer_wav.cpp main/main.cpp
+#: modules/csg/csg_shape.cpp modules/visual_script/visual_script_nodes.cpp
#: modules/visual_script/visual_script_yield_nodes.cpp scene/2d/light_2d.cpp
#: scene/2d/physics_body_2d.cpp scene/2d/tile_map.cpp
#: scene/3d/baked_lightmap.cpp scene/3d/light.cpp scene/3d/physics_body.cpp
@@ -3239,7 +3310,9 @@ msgstr "Varlıklar Yeniden-İçe Aktarılıyor"
msgid "Reimport Missing Imported Files"
msgstr ""
-#: editor/editor_help.cpp
+#: editor/editor_help.cpp scene/2d/camera_2d.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/resources/dynamic_font.cpp
+#: scene/resources/style_box.cpp
msgid "Top"
msgstr "Üst"
@@ -3292,6 +3365,7 @@ msgid "Fonts"
msgstr "Yazı Tipleri"
#: editor/editor_help.cpp editor/plugins/theme_editor_plugin.cpp
+#: platform/iphone/export/export.cpp
msgid "Icons"
msgstr "Simgeler"
@@ -3462,7 +3536,9 @@ msgid "Pin value [Disabled because '%s' is editor-only]"
msgstr ""
"Değer sabitle [Devre dışı bırakıldı çünkü '%s' sadece editör için aktiftir]"
-#: editor/editor_inspector.cpp editor/scene_tree_dock.cpp
+#: editor/editor_inspector.cpp
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+#: editor/scene_tree_dock.cpp
#: modules/visual_script/visual_script_func_nodes.cpp
#: modules/visual_script/visual_script_nodes.cpp
#: modules/visual_script/visual_script_property_selector.cpp
@@ -3802,6 +3878,16 @@ msgid "Quick Open Script..."
msgstr "Betiği Hızlı Aç..."
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Save & Reload"
+msgstr "Kaydet ve BaÅŸtan BaÅŸlat"
+
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Save changes to '%s' before reloading?"
+msgstr "Kapatmadan önce değişklikler buraya '%s' kaydedilsin mi?"
+
+#: editor/editor_node.cpp
msgid "Save & Close"
msgstr "Kaydet & Kapat"
@@ -3918,6 +4004,11 @@ msgid "Open Project Manager?"
msgstr "Proje Yöneticisi Açılsın Mı?"
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Save changes to the following scene(s) before reloading?"
+msgstr "Çıkmadan önce değişiklikler aşağıdaki sahne(ler)e kaydedilsin mi?"
+
+#: editor/editor_node.cpp
msgid "Save & Quit"
msgstr "Kaydet & Çık"
@@ -4193,8 +4284,8 @@ msgstr "Materyal DeÄŸiÅŸiklikleri:"
#: editor/editor_node.cpp
#, fuzzy
-msgid "Translate Properties"
-msgstr "Özellikleri Yapıştır"
+msgid "Localize Settings"
+msgstr "YerelleÅŸtirme"
#: editor/editor_node.cpp
#, fuzzy
@@ -4211,8 +4302,8 @@ msgstr "Denetçi"
#: editor/editor_node.cpp
#, fuzzy
-msgid "Capitalize Properties"
-msgstr "Özellikleri Yapıştır"
+msgid "Default Property Name Style"
+msgstr "Proje Yolu:"
#: editor/editor_node.cpp
msgid "Default Float Step"
@@ -4821,7 +4912,9 @@ msgstr "Yüklü Eklentiler:"
msgid "Update"
msgstr "Güncelle"
-#: editor/editor_plugin_settings.cpp
+#: editor/editor_plugin_settings.cpp platform/android/export/export_plugin.cpp
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp
msgid "Version"
msgstr "Sürüm"
@@ -5864,7 +5957,7 @@ msgstr "Tam Kare"
msgid "Rect Custom Position"
msgstr "Eğri Çıkış Konumunu Ayarla"
-#: editor/editor_settings.cpp
+#: editor/editor_settings.cpp platform/android/export/export_plugin.cpp
msgid "Screen"
msgstr ""
@@ -5891,6 +5984,19 @@ msgid "Editor SSL Certificates"
msgstr "Düzenleyici Ayarları"
#: editor/editor_settings.cpp
+msgid "HTTP Proxy"
+msgstr ""
+
+#: editor/editor_settings.cpp
+msgid "Host"
+msgstr ""
+
+#: editor/editor_settings.cpp editor/fileserver/editor_file_server.cpp
+#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp
+msgid "Port"
+msgstr ""
+
+#: editor/editor_settings.cpp
msgid "Project Manager"
msgstr "Proje Yöneticisi"
@@ -5933,7 +6039,8 @@ msgstr ""
msgid "String Color"
msgstr "Dosya Depolama:"
-#: editor/editor_settings.cpp
+#: editor/editor_settings.cpp platform/javascript/export/export.cpp
+#: platform/uwp/export/export.cpp
#, fuzzy
msgid "Background Color"
msgstr "Geçersiz arkaplan rengi."
@@ -6112,22 +6219,6 @@ msgid "Starting the download..."
msgstr "İndirme başlatılıyor..."
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "HTTP Proxy"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Host"
-msgstr ""
-
-#: editor/export_template_manager.cpp editor/fileserver/editor_file_server.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp main/main.cpp
-#: modules/mono/mono_gd/gd_mono.cpp
-msgid "Port"
-msgstr ""
-
-#: editor/export_template_manager.cpp
msgid "Error requesting URL:"
msgstr "URL isteği hatası:"
@@ -6381,6 +6472,7 @@ msgstr ""
#: editor/fileserver/editor_file_server.cpp
#: editor/plugins/version_control_editor_plugin.cpp
+#: platform/uwp/export/export.cpp platform/windows/export/export.cpp
msgid "Password"
msgstr "Åžifre"
@@ -6758,6 +6850,117 @@ msgstr ""
msgid "Use Ambient"
msgstr ""
+#: editor/import/resource_importer_bitmask.cpp
+#, fuzzy
+msgid "Create From"
+msgstr "Klasör Oluştur"
+
+#: editor/import/resource_importer_bitmask.cpp
+#: servers/audio/effects/audio_effect_compressor.cpp
+msgid "Threshold"
+msgstr ""
+
+#: editor/import/resource_importer_csv_translation.cpp
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_scene.cpp
+#: editor/import/resource_importer_texture.cpp
+#: editor/import/resource_importer_wav.cpp scene/3d/gi_probe.cpp
+#, fuzzy
+msgid "Compress"
+msgstr "BileÅŸenler"
+
+#: editor/import/resource_importer_csv_translation.cpp
+msgid "Delimiter"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+msgid "No BPTC If RGB"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/sprite_3d.cpp
+#: scene/resources/material.cpp scene/resources/particles_material.cpp
+#: scene/resources/texture.cpp
+msgid "Flags"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/animation/tween.cpp
+#: scene/resources/texture.cpp
+msgid "Repeat"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/2d/light_2d.cpp
+#: scene/gui/control.cpp scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Filter"
+msgstr "Süzgeçler:"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Mipmaps"
+msgstr "sinyaller"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+msgid "Anisotropic"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+msgid "sRGB"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#, fuzzy
+msgid "Slices"
+msgstr "Otomatik Dilimle"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
+#: scene/resources/style_box.cpp
+#, fuzzy
+msgid "Horizontal"
+msgstr "Yatay:"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
+#: scene/resources/style_box.cpp
+#, fuzzy
+msgid "Vertical"
+msgstr "Dikey:"
+
+#: editor/import/resource_importer_obj.cpp
+#, fuzzy
+msgid "Generate Tangents"
+msgstr "Noktalar OluÅŸtur"
+
+#: editor/import/resource_importer_obj.cpp
+#, fuzzy
+msgid "Scale Mesh"
+msgstr "Esnetme Åžekli"
+
+#: editor/import/resource_importer_obj.cpp
+#, fuzzy
+msgid "Offset Mesh"
+msgstr "Kaydırma:"
+
+#: editor/import/resource_importer_obj.cpp
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Octahedral Compression"
+msgstr "İfade"
+
+#: editor/import/resource_importer_obj.cpp
+#, fuzzy
+msgid "Optimize Mesh Flags"
+msgstr "Boyut: "
+
#: editor/import/resource_importer_scene.cpp
msgid "Import as Single Scene"
msgstr "Tek Bir Sahne Şeklinde İçe Aktar"
@@ -6798,6 +7001,156 @@ msgstr "Çoklu Sahne Olarak İçe Aktar"
msgid "Import as Multiple Scenes+Materials"
msgstr "Çoklu Sahneler+Materyaller olarak İçe Aktar"
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Nodes"
+msgstr "Düğüm"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Root Type"
+msgstr "Dön"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Root Name"
+msgstr "Uzak Depo Adı"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Root Scale"
+msgstr "Ölçekle"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Custom Script"
+msgstr "ÖzelSınıf"
+
+#: editor/import/resource_importer_scene.cpp scene/resources/texture.cpp
+#, fuzzy
+msgid "Storage"
+msgstr "Dosya Depolama:"
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Use Legacy Names"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+#, fuzzy
+msgid "Materials"
+msgstr "Materyal DeÄŸiÅŸiklikleri:"
+
+#: editor/import/resource_importer_scene.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Location"
+msgstr "YerelleÅŸtirme"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Keep On Reimport"
+msgstr "Yeniden İçe Aktar"
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+#, fuzzy
+msgid "Meshes"
+msgstr "Örgü"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Ensure Tangents"
+msgstr "Eğri Tanjantını Değiştir"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Light Baking"
+msgstr "Işık-Haritalarını Pişir"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Lightmap Texel Size"
+msgstr "Işık-Haritalarını Pişir"
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+msgid "Skins"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Use Named Skins"
+msgstr "Esnetme Hizalaması Kullan"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "External Files"
+msgstr "Bir Dosya Aç"
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Store In Subdir"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Filter Script"
+msgstr "Betikleri Süz"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Keep Custom Tracks"
+msgstr "Dönüşüm"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Optimizer"
+msgstr "İyileştir"
+
+#: editor/import/resource_importer_scene.cpp main/main.cpp
+#: modules/mono/mono_gd/gd_mono.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp scene/2d/camera_2d.cpp scene/2d/light_2d.cpp
+#: scene/2d/navigation_polygon.cpp scene/2d/ray_cast_2d.cpp scene/2d/sprite.cpp
+#: scene/2d/y_sort.cpp scene/3d/audio_stream_player_3d.cpp
+#: scene/3d/baked_lightmap.cpp scene/3d/interpolated_camera.cpp
+#: scene/3d/light.cpp scene/3d/navigation_mesh_instance.cpp
+#: scene/3d/physics_joint.cpp scene/3d/ray_cast.cpp scene/3d/sprite_3d.cpp
+#: scene/gui/graph_edit.cpp scene/gui/rich_text_label.cpp
+#: scene/resources/curve.cpp scene/resources/environment.cpp
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Enabled"
+msgstr "Etkin"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Max Linear Error"
+msgstr "Maks. DoÄŸrusal Hata:"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Max Angular Error"
+msgstr "Maks. Açısal Hata:"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Max Angle"
+msgstr "DeÄŸer"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Remove Unused Tracks"
+msgstr "Animasyon İzini Kaldır"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Clips"
+msgstr "Animasyon Klipleri"
+
+#: editor/import/resource_importer_scene.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/particles_2d.cpp scene/3d/area.cpp scene/3d/cpu_particles.cpp
+#: scene/3d/particles.cpp scene/resources/environment.cpp
+#, fuzzy
+msgid "Amount"
+msgstr "DeÄŸer:"
+
#: editor/import/resource_importer_scene.cpp
#: editor/plugins/mesh_library_editor_plugin.cpp
msgid "Import Scene"
@@ -6841,12 +7194,149 @@ msgstr "`Post_import ()` yönteminde Node türevi bir nesne döndürdünüz mü?
msgid "Saving..."
msgstr "Kaydediliyor..."
+#: editor/import/resource_importer_texture.cpp scene/resources/texture.cpp
+msgid "Lossy Quality"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "HDR Mode"
+msgstr "Kip Seç"
+
+#: editor/import/resource_importer_texture.cpp
+msgid "BPTC LDR"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/mesh_instance_2d.cpp scene/2d/multimesh_instance_2d.cpp
+#: scene/2d/particles_2d.cpp scene/2d/sprite.cpp scene/resources/style_box.cpp
+msgid "Normal Map"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Process"
+msgstr "Rötuş"
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Fix Alpha Border"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Premult Alpha"
+msgstr "Çokluyu Düzenleyin"
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Hdr As Srgb"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Invert Color"
+msgstr "Köşe"
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Normal Map Invert Y"
+msgstr "Rastgele Ölçek:"
+
+#: editor/import/resource_importer_texture.cpp
+#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
+#: scene/audio/audio_stream_player.cpp scene/gui/video_player.cpp
+msgid "Stream"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Size Limit"
+msgstr "Boyut: "
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Detect 3D"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "SVG"
+msgstr "HSV"
+
#: editor/import/resource_importer_texture.cpp
msgid ""
"Warning, no suitable PC VRAM compression enabled in Project Settings. This "
"texture will not display correctly on PC."
msgstr ""
+#: editor/import/resource_importer_texture_atlas.cpp
+#, fuzzy
+msgid "Atlas File"
+msgstr "Kontur Boyutu:"
+
+#: editor/import/resource_importer_texture_atlas.cpp
+#, fuzzy
+msgid "Import Mode"
+msgstr "Dışa Aktarma Biçimi:"
+
+#: editor/import/resource_importer_texture_atlas.cpp
+#, fuzzy
+msgid "Crop To Region"
+msgstr "Döşeme Bölgesi Ata"
+
+#: editor/import/resource_importer_texture_atlas.cpp
+msgid "Trim Alpha Border From Region"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp scene/2d/physics_body_2d.cpp
+#, fuzzy
+msgid "Force"
+msgstr "Zorla Gönder"
+
+#: editor/import/resource_importer_wav.cpp
+msgid "8 Bit"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp main/main.cpp
+#: modules/mono/editor/csharp_project.cpp modules/mono/mono_gd/gd_mono.cpp
+msgid "Mono"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+#, fuzzy
+msgid "Max Rate"
+msgstr "Düğümü Çırp"
+
+#: editor/import/resource_importer_wav.cpp
+#, fuzzy
+msgid "Max Rate Hz"
+msgstr "Düğümü Çırp"
+
+#: editor/import/resource_importer_wav.cpp
+msgid "Trim"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+#, fuzzy
+msgid "Normalize"
+msgstr "Biçem"
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+#, fuzzy
+msgid "Loop Mode"
+msgstr "Biçimi Taşı"
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+#, fuzzy
+msgid "Loop Begin"
+msgstr "Biçimi Taşı"
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+#, fuzzy
+msgid "Loop End"
+msgstr "Biçimi Taşı"
+
#: editor/import_defaults_editor.cpp
msgid "Select Importer"
msgstr "İçe Aktarıcı'yı seçin"
@@ -6925,6 +7415,29 @@ msgid "Failed to load resource."
msgstr "Kaynak yükleme başarısız oldu."
#: editor/inspector_dock.cpp
+#, fuzzy
+msgid "Property Name Style"
+msgstr "Proje Adı:"
+
+#: editor/inspector_dock.cpp scene/gui/color_picker.cpp
+msgid "Raw"
+msgstr "Ham"
+
+#: editor/inspector_dock.cpp
+#, fuzzy
+msgid "Capitalized"
+msgstr "Büyük harfe çevirme"
+
+#: editor/inspector_dock.cpp
+#, fuzzy
+msgid "Localized"
+msgstr "Yerel"
+
+#: editor/inspector_dock.cpp
+msgid "Localization not available for current language."
+msgstr ""
+
+#: editor/inspector_dock.cpp
msgid "Copy Properties"
msgstr "Özellikleri Kopyala"
@@ -7970,18 +8483,26 @@ msgid "License (Z-A)"
msgstr "Lisans (Z-A)"
#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgctxt "Pagination"
msgid "First"
msgstr "İlk"
-#: editor/plugins/asset_library_editor_plugin.cpp scene/gui/control.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgctxt "Pagination"
msgid "Previous"
msgstr "Önceki"
-#: editor/plugins/asset_library_editor_plugin.cpp scene/gui/control.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgctxt "Pagination"
msgid "Next"
msgstr "Sonraki"
#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgctxt "Pagination"
msgid "Last"
msgstr "Son"
@@ -8230,19 +8751,19 @@ msgstr ""
"Etkin olduğunda, Denetim düğümünü taşımak kenar boşluklarını değil çapa "
"noktasını değiştirir."
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Top Left"
msgstr "Sol Üst"
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Top Right"
msgstr "Sağ Üst"
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Bottom Right"
msgstr "Alt SaÄŸ"
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Bottom Left"
msgstr "Alt Sol"
@@ -8955,6 +9476,19 @@ msgstr "GI Prob PiÅŸir"
msgid "Gradient Edited"
msgstr "Renk Geçişi Düzenlendi"
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+msgid "Swap GradientTexture2D Fill Points"
+msgstr ""
+
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+msgid "Swap Gradient Fill Points"
+msgstr ""
+
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+#, fuzzy
+msgid "Toggle Grid Snap"
+msgstr "Aç / Kapat Biçimi"
+
#: editor/plugins/item_list_editor_plugin.cpp
msgid "Item %d"
msgstr "Öğe%d"
@@ -9187,8 +9721,9 @@ msgstr ""
"Mevcut sahneden güncellensin mi?:\n"
"%s"
-#: editor/plugins/mesh_library_editor_plugin.cpp modules/gridmap/grid_map.cpp
-msgid "Mesh Library"
+#: editor/plugins/mesh_library_editor_plugin.cpp
+#, fuzzy
+msgid "MeshLibrary"
msgstr "Model Kütüphanesi"
#: editor/plugins/mesh_library_editor_plugin.cpp
@@ -10178,8 +10713,8 @@ msgstr "Metotlara bağlantılar:"
msgid "Source"
msgstr "Kaynak"
-#: editor/plugins/script_text_editor.cpp scene/3d/interpolated_camera.cpp
-#: scene/animation/skeleton_ik.cpp
+#: editor/plugins/script_text_editor.cpp platform/uwp/export/export.cpp
+#: scene/3d/interpolated_camera.cpp scene/animation/skeleton_ik.cpp
msgid "Target"
msgstr "Hedef"
@@ -11153,7 +11688,9 @@ msgstr "Hız:"
#: editor/plugins/sprite_frames_editor_plugin.cpp
#: modules/gltf/gltf_animation.cpp modules/minimp3/audio_stream_mp3.cpp
-#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp scene/2d/path_2d.cpp
+#: modules/minimp3/resource_importer_mp3.cpp
+#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp
+#: modules/stb_vorbis/resource_importer_ogg_vorbis.cpp scene/2d/path_2d.cpp
#: scene/3d/path.cpp scene/resources/animation.cpp scene/resources/material.cpp
msgid "Loop"
msgstr "Döngü"
@@ -12044,8 +12581,9 @@ msgstr "Bitmaskesi"
msgid "Priority"
msgstr "Öncelik"
-#: editor/plugins/tile_set_editor_plugin.cpp main/main.cpp scene/gui/button.cpp
-#: scene/gui/item_list.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp main/main.cpp
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#: scene/gui/button.cpp scene/gui/item_list.cpp
msgid "Icon"
msgstr "Simge"
@@ -13414,10 +13952,6 @@ msgstr ""
"yapılandırma sorunundan kaynaklanıyor olabilir."
#: editor/project_export.cpp
-msgid "Release"
-msgstr "Yayınlamak"
-
-#: editor/project_export.cpp
msgid "Exporting All"
msgstr "Tümünü Dışa Aktarma"
@@ -15291,6 +15825,7 @@ msgid "Change AudioStreamPlayer3D Emission Angle"
msgstr "AudioStreamPlayer3D Emisyon Açısı Değişimi"
#: editor/spatial_editor_gizmos.cpp modules/gltf/gltf_node.cpp
+#: platform/osx/export/export.cpp
msgid "Camera"
msgstr ""
@@ -15574,7 +16109,8 @@ msgstr ""
msgid "Use Nvidia Rect Flicker Workaround"
msgstr ""
-#: main/main.cpp platform/uwp/os_uwp.cpp
+#: main/main.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp platform/uwp/os_uwp.cpp
#, fuzzy
msgid "Display"
msgstr "Hepsini Görüntüle"
@@ -15635,19 +16171,6 @@ msgstr ""
msgid "Allowed"
msgstr ""
-#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp scene/2d/camera_2d.cpp
-#: scene/2d/light_2d.cpp scene/2d/navigation_polygon.cpp
-#: scene/2d/ray_cast_2d.cpp scene/2d/sprite.cpp scene/2d/y_sort.cpp
-#: scene/3d/audio_stream_player_3d.cpp scene/3d/baked_lightmap.cpp
-#: scene/3d/interpolated_camera.cpp scene/3d/light.cpp
-#: scene/3d/navigation_mesh_instance.cpp scene/3d/ray_cast.cpp
-#: scene/3d/sprite_3d.cpp scene/gui/graph_edit.cpp
-#: scene/gui/rich_text_label.cpp scene/resources/curve.cpp
-#: scene/resources/environment.cpp
-#, fuzzy
-msgid "Enabled"
-msgstr "Etkin"
-
#: main/main.cpp
msgid "Intended Usage"
msgstr ""
@@ -15679,13 +16202,14 @@ msgstr ""
msgid "Handheld"
msgstr ""
-#: main/main.cpp
+#: main/main.cpp platform/javascript/export/export.cpp
+#: platform/uwp/export/export.cpp
#, fuzzy
msgid "Orientation"
msgstr "Çevrimiçi Dokümanlar"
#: main/main.cpp scene/gui/scroll_container.cpp scene/gui/text_edit.cpp
-#: scene/main/scene_tree.cpp
+#: scene/main/scene_tree.cpp scene/register_scene_types.cpp
#, fuzzy
msgid "Common"
msgstr "Topluluk"
@@ -15728,7 +16252,7 @@ msgstr ""
#: main/main.cpp
#, fuzzy
-msgid "Frame Delay (msec)"
+msgid "Frame Delay Msec"
msgstr "Çerçeve Seçimi"
#: main/main.cpp
@@ -15857,11 +16381,6 @@ msgstr ""
msgid "Tooltip Position Offset"
msgstr "Dönme Kayması:"
-#: main/main.cpp modules/mono/editor/csharp_project.cpp
-#: modules/mono/mono_gd/gd_mono.cpp
-msgid "Mono"
-msgstr ""
-
#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp
#, fuzzy
msgid "Debugger Agent"
@@ -16440,7 +16959,7 @@ msgstr "Renkler"
msgid "Intensity"
msgstr ""
-#: modules/gltf/gltf_light.cpp scene/2d/light_2d.cpp
+#: modules/gltf/gltf_light.cpp scene/2d/light_2d.cpp scene/3d/light.cpp
#, fuzzy
msgid "Range"
msgstr "DeÄŸiÅŸtir"
@@ -16587,11 +17106,6 @@ msgstr "Veri ile"
msgid "Use Named Skin Binds"
msgstr ""
-#: modules/gltf/gltf_state.cpp scene/3d/physics_joint.cpp
-#, fuzzy
-msgid "Nodes"
-msgstr "Düğüm"
-
#: modules/gltf/gltf_state.cpp
#, fuzzy
msgid "Buffer Views"
@@ -16603,16 +17117,6 @@ msgstr ""
#: modules/gltf/gltf_state.cpp
#, fuzzy
-msgid "Meshes"
-msgstr "Örgü"
-
-#: modules/gltf/gltf_state.cpp
-#, fuzzy
-msgid "Materials"
-msgstr "Materyal DeÄŸiÅŸiklikleri:"
-
-#: modules/gltf/gltf_state.cpp
-#, fuzzy
msgid "Scene Name"
msgstr "Sahne Yolu:"
@@ -16628,15 +17132,11 @@ msgstr "Kök düğüm adı"
msgid "Textures"
msgstr "Özellikler"
-#: modules/gltf/gltf_state.cpp
+#: modules/gltf/gltf_state.cpp platform/uwp/export/export.cpp
msgid "Images"
msgstr ""
#: modules/gltf/gltf_state.cpp
-msgid "Skins"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp
msgid "Cameras"
msgstr ""
@@ -16671,11 +17171,15 @@ msgid "Src Image"
msgstr "Kemikleri Göster"
#: modules/gridmap/grid_map.cpp
+msgid "Mesh Library"
+msgstr "Model Kütüphanesi"
+
+#: modules/gridmap/grid_map.cpp
#, fuzzy
msgid "Physics Material"
msgstr "Fizik Kare %"
-#: modules/gridmap/grid_map.cpp
+#: modules/gridmap/grid_map.cpp scene/3d/visual_instance.cpp
#, fuzzy
msgid "Use In Baked Light"
msgstr "Işık-Haritalarını Pişir"
@@ -16707,6 +17211,7 @@ msgstr "Merkez"
#: modules/gridmap/grid_map.cpp scene/2d/collision_object_2d.cpp
#: scene/2d/tile_map.cpp scene/3d/collision_object.cpp scene/3d/soft_body.cpp
+#: scene/resources/material.cpp
msgid "Mask"
msgstr ""
@@ -16888,7 +17393,9 @@ msgid "Ultra Quality Ray Count"
msgstr ""
#: modules/minimp3/audio_stream_mp3.cpp
+#: modules/minimp3/resource_importer_mp3.cpp
#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp
+#: modules/stb_vorbis/resource_importer_ogg_vorbis.cpp
#, fuzzy
msgid "Loop Offset"
msgstr "Kaydırma:"
@@ -17979,6 +18486,193 @@ msgid "The package must have at least one '.' separator."
msgstr "Paket en azından bir tane '.' ayıracına sahip olmalıdır."
#: platform/android/export/export_plugin.cpp
+msgid "Use Custom Build"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Export Format"
+msgstr "Dışa aktarım Yolu"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Keystore"
+msgstr "Hata Ayıklayıcı"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Debug User"
+msgstr "Hata Ayıklayıcı"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Debug Password"
+msgstr "Åžifre"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Release User"
+msgstr "Yayınlamak"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Release Password"
+msgstr "Åžifre"
+
+#: platform/android/export/export_plugin.cpp
+msgid "One Click Deploy"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Clear Previous Install"
+msgstr "Önceki Örneği İncele"
+
+#: platform/android/export/export_plugin.cpp scene/resources/shader.cpp
+msgid "Code"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Min SDK"
+msgstr "Kontur Boyutu:"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Target SDK"
+msgstr "Hedef"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Package"
+msgstr "Çıkınla"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Unique Name"
+msgstr "Düğüm adı:"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Signed"
+msgstr "Sinyal"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Classify As Game"
+msgstr "Sınıf İsmi:"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Retain Data On Uninstall"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Exclude From Recents"
+msgstr "Düğümleri Sil"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Graphics"
+msgstr "Izgarayı Kaydır:"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "OpenGL Debug"
+msgstr "Aç"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "XR Features"
+msgstr "Özellikler"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "XR Mode"
+msgstr "Kaydırma Biçimi"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Hand Tracking"
+msgstr "Çıkınla"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Hand Tracking Frequency"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Passthrough"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Immersive Mode"
+msgstr "Öncelik Kipi"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Support Small"
+msgstr "Destek"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Support Normal"
+msgstr "Destek"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Support Large"
+msgstr "Destek"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Support Xlarge"
+msgstr "Destek"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "User Data Backup"
+msgstr "Kullanıcı Arayüzü"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Allow"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Command Line"
+msgstr "Topluluk"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Extra Args"
+msgstr "Ekstra Çağrı Argümanları:"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "APK Expansion"
+msgstr "İfade"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Salt"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Public Key"
+msgstr "SSH Genel Anahtar Yolu"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Permissions"
+msgstr "Emisyon Maskesi"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Custom Permissions"
+msgstr "Özel Sahneyi Oynat"
+
+#: platform/android/export/export_plugin.cpp
msgid "Select device from the list"
msgstr "Listeden aygıt seç"
@@ -18306,6 +19000,178 @@ msgid "The character '%s' is not allowed in Identifier."
msgstr "Tanımlayıcı'da '%s' karakterine izin verilmiyor."
#: platform/iphone/export/export.cpp
+msgid "App Store Team ID"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Provisioning Profile UUID Debug"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Code Sign Identity Debug"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Export Method Debug"
+msgstr "Hata Ayıklama İle Dışa Aktar"
+
+#: platform/iphone/export/export.cpp
+msgid "Provisioning Profile UUID Release"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Code Sign Identity Release"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Export Method Release"
+msgstr "Dışa Aktarma Biçimi:"
+
+#: platform/iphone/export/export.cpp
+msgid "Targeted Device Family"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Info"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Identifier"
+msgstr "Geçersiz Tanımlayıcı:"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Signature"
+msgstr "Sinyal"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Short Version"
+msgstr "Sürüm"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Copyright"
+msgstr "Sağ Üst"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Capabilities"
+msgstr "Özellikleri Yapıştır"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Access Wi-Fi"
+msgstr "Başarılı!"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Push Notifications"
+msgstr "Rastgele Döndürme:"
+
+#: platform/iphone/export/export.cpp scene/3d/baked_lightmap.cpp
+#, fuzzy
+msgid "User Data"
+msgstr "Kullanıcı Arayüzü"
+
+#: platform/iphone/export/export.cpp
+msgid "Accessible From Files App"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Accessible From Itunes Sharing"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Privacy"
+msgstr "SSH Özel Anahtar Yolu"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Camera Usage Description"
+msgstr "Açıklama"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Microphone Usage Description"
+msgstr "Özellik Açıklamaları"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Photolibrary Usage Description"
+msgstr "Özellik Açıklamaları"
+
+#: platform/iphone/export/export.cpp
+msgid "iPhone 120 X 120"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPhone 180 X 180"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 76 X 76"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 152 X 152"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 167 X 167"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "App Store 1024 X 1024"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Spotlight 40 X 40"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Spotlight 80 X 80"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Storyboard"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Use Launch Screen Storyboard"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Image Scale Mode"
+msgstr "Esnetme Åžekli"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Custom Image @2x"
+msgstr "ÖzelSınıf"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Custom Image @3x"
+msgstr "ÖzelSınıf"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Use Custom BG Color"
+msgstr "ÖzelSınıf"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Custom BG Color"
+msgstr "ÖzelSınıf"
+
+#: platform/iphone/export/export.cpp
msgid "App Store Team ID not specified - cannot configure the project."
msgstr "App Store Ekip Kimliği belirtilmedi - proje yapılandırılamıyor."
@@ -18342,6 +19208,80 @@ msgid "Could not read file:"
msgstr "Dosya okunamadı:"
#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Variant"
+msgstr "Ayrım:"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Export Type"
+msgstr "Dışa Aktar"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "VRAM Texture Compression"
+msgstr "İfade"
+
+#: platform/javascript/export/export.cpp
+msgid "For Desktop"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "For Mobile"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Html"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Export Icon"
+msgstr "Hepsini GeniÅŸlet"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Custom Html Shell"
+msgstr "ÖzelSınıf"
+
+#: platform/javascript/export/export.cpp
+msgid "Head Include"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Canvas Resize Policy"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Focus Canvas On Start"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Experimental Virtual Keyboard"
+msgstr "Sinyalleri filtrele"
+
+#: platform/javascript/export/export.cpp
+msgid "Progressive Web App"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Offline Page"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 144 X 144"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 180 X 180"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 512 X 512"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
msgid "Could not read HTML shell:"
msgstr "HTML kabuğu okunamadı:"
@@ -18455,6 +19395,202 @@ msgid "Unknown object type."
msgstr ""
#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "App Category"
+msgstr "Kategori:"
+
+#: platform/osx/export/export.cpp
+msgid "High Res"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Location Usage Description"
+msgstr "Açıklama"
+
+#: platform/osx/export/export.cpp
+msgid "Address Book Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Calendar Usage Description"
+msgstr "Açıklama"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Photos Library Usage Description"
+msgstr "Özellik Açıklamaları"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Desktop Folder Usage Description"
+msgstr "Yöntem Açıklamaları"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Documents Folder Usage Description"
+msgstr "Yöntem Açıklamaları"
+
+#: platform/osx/export/export.cpp
+msgid "Downloads Folder Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Network Volumes Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Removable Volumes Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#, fuzzy
+msgid "Codesign"
+msgstr "Düğüm"
+
+#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Identity"
+msgstr "Sola Girintile"
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#, fuzzy
+msgid "Timestamp"
+msgstr "Zaman"
+
+#: platform/osx/export/export.cpp
+msgid "Hardened Runtime"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Replace Existing Signature"
+msgstr "Dosyaiçlerinde Değiştir"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Entitlements"
+msgstr "Gizmolar"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Custom File"
+msgstr "ÖzelSınıf"
+
+#: platform/osx/export/export.cpp
+msgid "Allow JIT Code Execution"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Allow Unsigned Executable Memory"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Allow Dyld Environment Variables"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Disable Library Validation"
+msgstr "Pasif Düğme"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Audio Input"
+msgstr "GiriÅŸ Ekle"
+
+#: platform/osx/export/export.cpp
+msgid "Address Book"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Calendars"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Photos Library"
+msgstr "Betikevini Dışa Aktar"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Apple Events"
+msgstr "Olay Ekle"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Debugging"
+msgstr "Hata Ayıklama"
+
+#: platform/osx/export/export.cpp
+msgid "App Sandbox"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Network Server"
+msgstr "AÄŸ Profilcisi"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Network Client"
+msgstr "AÄŸ Profilcisi"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Device Usb"
+msgstr "Aygıt"
+
+#: platform/osx/export/export.cpp
+msgid "Device Bluetooth"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Files Downloads"
+msgstr "İndir"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Files Pictures"
+msgstr "Özellikler"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Files Music"
+msgstr "Dosya"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Files Movies"
+msgstr "Döşemelerde Bul"
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#, fuzzy
+msgid "Custom Options"
+msgstr "Bus ayarları"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Notarization"
+msgstr "YerelleÅŸtirme"
+
+#: platform/osx/export/export.cpp
+msgid "Apple ID Name"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Apple ID Password"
+msgstr "Åžifre"
+
+#: platform/osx/export/export.cpp
+msgid "Apple Team ID"
+msgstr ""
+
+#: platform/osx/export/export.cpp
msgid ""
"Note: The notarization process generally takes less than an hour. When the "
"process is completed, you'll receive an email."
@@ -18652,6 +19788,136 @@ msgid "Force Builtin Codesign"
msgstr ""
#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Architecture"
+msgstr "Bir yapı girdisi ekle"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Display Name"
+msgstr "Hepsini Görüntüle"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Short Name"
+msgstr "Betik Adı:"
+
+#: platform/uwp/export/export.cpp
+msgid "Publisher"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Publisher Display Name"
+msgstr "Geçersiz paket yayıncı görünen adı."
+
+#: platform/uwp/export/export.cpp
+msgid "Product Guid"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Publisher Guid"
+msgstr "Kılavuzları Temizle"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Signing"
+msgstr "Sinyal"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Certificate"
+msgstr "Köşenoktalar:"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Algorithm"
+msgstr "Hata Ayıklayıcı"
+
+#: platform/uwp/export/export.cpp
+msgid "Major"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Minor"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Build"
+msgstr "Cetvel Åžekli"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Revision"
+msgstr "İfade"
+
+#: platform/uwp/export/export.cpp
+msgid "Landscape"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Portrait"
+msgstr "Portalları Çevir"
+
+#: platform/uwp/export/export.cpp
+msgid "Landscape Flipped"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Portrait Flipped"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Store Logo"
+msgstr "Esnetme Åžekli"
+
+#: platform/uwp/export/export.cpp
+msgid "Square 44 X 44 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 71 X 71 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 150 X 150 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 310 X 310 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Wide 310 X 150 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Splash Screen"
+msgstr "Çizim Çağrıları:"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Tiles"
+msgstr "Dosya"
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Square 150 X 150"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Wide 310 X 150"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Square 310 X 310"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
msgid "Invalid package short name."
msgstr "Geçersiz paket kısa ismi."
@@ -18718,15 +19984,52 @@ msgstr ""
#: platform/uwp/export/export.cpp
#, fuzzy
-msgid "Debug Password"
-msgstr "Åžifre"
+msgid "Debug Algorithm"
+msgstr "Hata Ayıklayıcı"
-#: platform/uwp/export/export.cpp
+#: platform/windows/export/export.cpp
+msgid "Identity Type"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Timestamp Server URL"
+msgstr ""
+
+#: platform/windows/export/export.cpp
#, fuzzy
-msgid "Debug Algorithm"
+msgid "Digest Algorithm"
msgstr "Hata Ayıklayıcı"
#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "File Version"
+msgstr "Sürüm"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Product Version"
+msgstr "Geçersiz ürün GUID'i."
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Company Name"
+msgstr "Düğüm adı:"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Product Name"
+msgstr "Proje Adı:"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "File Description"
+msgstr "Açıklama"
+
+#: platform/windows/export/export.cpp
+msgid "Trademarks"
+msgstr ""
+
+#: platform/windows/export/export.cpp
msgid ""
"The rcedit tool must be configured in the Editor Settings (Export > Windows "
"> Rcedit) to change the icon or app information data."
@@ -18801,12 +20104,14 @@ msgstr "Oynat"
msgid "Centered"
msgstr "Merkez"
-#: scene/2d/animated_sprite.cpp scene/2d/camera_2d.cpp scene/2d/light_2d.cpp
+#: scene/2d/animated_sprite.cpp scene/2d/camera_2d.cpp
+#: scene/2d/cpu_particles_2d.cpp scene/2d/light_2d.cpp
#: scene/2d/parallax_background.cpp scene/2d/parallax_layer.cpp
#: scene/2d/path_2d.cpp scene/2d/polygon_2d.cpp scene/2d/sprite.cpp
-#: scene/3d/path.cpp scene/3d/physics_body.cpp scene/3d/sprite_3d.cpp
-#: scene/gui/graph_node.cpp scene/gui/rich_text_effect.cpp
-#: scene/main/canvas_layer.cpp scene/resources/material.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/path.cpp scene/3d/physics_body.cpp
+#: scene/3d/sprite_3d.cpp scene/gui/graph_node.cpp
+#: scene/gui/rich_text_effect.cpp scene/main/canvas_layer.cpp
+#: scene/resources/material.cpp scene/resources/particles_material.cpp
#: scene/resources/style_box.cpp
#, fuzzy
msgid "Offset"
@@ -18881,11 +20186,6 @@ msgstr "Audio Bus Ekle"
msgid "Override"
msgstr "Üzerine Yaz"
-#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
-#: scene/audio/audio_stream_player.cpp scene/gui/video_player.cpp
-msgid "Stream"
-msgstr ""
-
#: scene/2d/audio_stream_player_2d.cpp scene/audio/audio_stream_player.cpp
#: scene/gui/video_player.cpp servers/audio/effects/audio_effect_amplify.cpp
#, fuzzy
@@ -18912,13 +20212,13 @@ msgid "Stream Paused"
msgstr ""
#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
-#: scene/3d/reflection_probe.cpp scene/3d/visual_instance.cpp
-#: scene/resources/material.cpp
+#: scene/3d/light.cpp scene/3d/reflection_probe.cpp
+#: scene/3d/visual_instance.cpp scene/resources/material.cpp
#, fuzzy
msgid "Max Distance"
msgstr "Uzaklık Seç:"
-#: scene/2d/audio_stream_player_2d.cpp
+#: scene/2d/audio_stream_player_2d.cpp scene/3d/light.cpp
#, fuzzy
msgid "Attenuation"
msgstr "Animasyon"
@@ -18974,6 +20274,24 @@ msgstr "Biçimi Taşı"
msgid "Limit"
msgstr ""
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/style_box.cpp
+#, fuzzy
+msgid "Left"
+msgstr "Sol Üst"
+
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/style_box.cpp
+#, fuzzy
+msgid "Right"
+msgstr "Işık"
+
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/dynamic_font.cpp scene/resources/style_box.cpp
+#, fuzzy
+msgid "Bottom"
+msgstr "Alt Sol"
+
#: scene/2d/camera_2d.cpp
#, fuzzy
msgid "Smoothed"
@@ -19216,13 +20534,6 @@ msgstr ""
msgid "Emitting"
msgstr "Ayarlar:"
-#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp scene/3d/area.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
-#: scene/resources/environment.cpp
-#, fuzzy
-msgid "Amount"
-msgstr "DeÄŸer:"
-
#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp
#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
msgid "Lifetime"
@@ -19287,18 +20598,13 @@ msgstr ""
#: scene/2d/mesh_instance_2d.cpp scene/2d/multimesh_instance_2d.cpp
#: scene/2d/particles_2d.cpp scene/2d/polygon_2d.cpp scene/2d/sprite.cpp
#: scene/3d/sprite_3d.cpp scene/gui/nine_patch_rect.cpp
-#: scene/gui/texture_rect.cpp scene/resources/sky.cpp
-#: scene/resources/style_box.cpp scene/resources/visual_shader_nodes.cpp
+#: scene/gui/texture_rect.cpp scene/resources/material.cpp
+#: scene/resources/sky.cpp scene/resources/style_box.cpp
+#: scene/resources/visual_shader_nodes.cpp
#, fuzzy
msgid "Texture"
msgstr "Yazı"
-#: scene/2d/cpu_particles_2d.cpp scene/2d/mesh_instance_2d.cpp
-#: scene/2d/multimesh_instance_2d.cpp scene/2d/particles_2d.cpp
-#: scene/2d/sprite.cpp scene/resources/style_box.cpp
-msgid "Normal Map"
-msgstr ""
-
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
#, fuzzy
@@ -19322,10 +20628,10 @@ msgid "Normals"
msgstr "Biçem"
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/3d/sprite_3d.cpp scene/resources/material.cpp
-#: scene/resources/particles_material.cpp scene/resources/texture.cpp
-msgid "Flags"
-msgstr ""
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Align Y"
+msgstr "Ata"
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
@@ -19346,6 +20652,12 @@ msgid "Initial Velocity"
msgstr "EtkinleÅŸtir"
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Velocity Random"
+msgstr "Yörünge Görünümü Sağ"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp servers/physics_2d_server.cpp
#: servers/physics_server.cpp
msgid "Angular Velocity"
@@ -19354,6 +20666,12 @@ msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
#, fuzzy
+msgid "Velocity Curve"
+msgstr "Yörünge Görünümü Sağ"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
msgid "Orbit Velocity"
msgstr "Yörünge Görünümü Sağ"
@@ -19365,6 +20683,23 @@ msgstr "DoÄŸrusal"
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Accel"
+msgstr "Başarılı!"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Accel Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Accel Curve"
+msgstr "Eğriyi Böl"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
msgid "Radial Accel"
msgstr ""
@@ -19374,19 +20709,55 @@ msgid "Tangential Accel"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/2d/joints_2d.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/vehicle_body.cpp
-#: scene/resources/particles_material.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/physics_joint.cpp
+#: scene/3d/vehicle_body.cpp scene/resources/particles_material.cpp
#: servers/audio/effects/audio_effect_reverb.cpp
msgid "Damping"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+msgid "Damping Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Damping Curve"
+msgstr "Eğriyi Böl"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp scene/3d/light.cpp
+#: scene/resources/particles_material.cpp
msgid "Angle"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+msgid "Angle Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Angle Curve"
+msgstr "EÄŸriyi Kapat"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#, fuzzy
+msgid "Scale Amount"
+msgstr "DeÄŸer:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+msgid "Scale Amount Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#, fuzzy
+msgid "Scale Amount Curve"
+msgstr "İmleçten Ölçekle"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
#, fuzzy
msgid "Color Ramp"
msgstr "Renkler"
@@ -19402,6 +20773,48 @@ msgstr ""
msgid "Hue Variation"
msgstr "Ayrım:"
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Variation"
+msgstr "Ayrım:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Variation Random"
+msgstr "Ayrım:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Variation Curve"
+msgstr "Ayrım:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Speed Random"
+msgstr "Ölçekle"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Speed Curve"
+msgstr "Eğriyi Böl"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Offset Random"
+msgstr "Kaydırma:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Offset Curve"
+msgstr "EÄŸriyi Kapat"
+
#: scene/2d/joints_2d.cpp
msgid "Node A and Node B must be PhysicsBody2Ds"
msgstr "Düğüm A ve Düğüm B, PhysicsBody2D olmalıdır"
@@ -19433,6 +20846,7 @@ msgid "Node B"
msgstr "Düğüm"
#: scene/2d/joints_2d.cpp scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp
+#: scene/3d/light.cpp scene/3d/physics_joint.cpp
#: scene/resources/environment.cpp
msgid "Bias"
msgstr ""
@@ -19442,7 +20856,7 @@ msgstr ""
msgid "Disable Collision"
msgstr "Pasif Düğme"
-#: scene/2d/joints_2d.cpp
+#: scene/2d/joints_2d.cpp scene/3d/physics_joint.cpp
msgid "Softness"
msgstr ""
@@ -19460,7 +20874,7 @@ msgstr "EtkinleÅŸtir"
msgid "Rest Length"
msgstr ""
-#: scene/2d/joints_2d.cpp scene/3d/vehicle_body.cpp
+#: scene/2d/joints_2d.cpp scene/3d/physics_joint.cpp scene/3d/vehicle_body.cpp
msgid "Stiffness"
msgstr ""
@@ -19481,7 +20895,7 @@ msgid "Texture Scale"
msgstr "DokuBölgesi"
#: scene/2d/light_2d.cpp scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp
-#: scene/resources/environment.cpp scene/resources/sky.cpp
+#: scene/3d/light.cpp scene/resources/environment.cpp scene/resources/sky.cpp
msgid "Energy"
msgstr ""
@@ -19522,12 +20936,6 @@ msgstr "Arkadan Görünüm"
msgid "Gradient Length"
msgstr "Renk Geçişi Düzenlendi"
-#: scene/2d/light_2d.cpp scene/gui/control.cpp
-#: scene/resources/navigation_mesh.cpp
-#, fuzzy
-msgid "Filter"
-msgstr "Süzgeçler:"
-
#: scene/2d/light_2d.cpp
#, fuzzy
msgid "Filter Smooth"
@@ -19967,11 +21375,6 @@ msgid "Applied Forces"
msgstr ""
#: scene/2d/physics_body_2d.cpp
-#, fuzzy
-msgid "Force"
-msgstr "Zorla Gönder"
-
-#: scene/2d/physics_body_2d.cpp
msgid "Torque"
msgstr ""
@@ -19987,7 +21390,7 @@ msgstr " (Fiziksel)"
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
#, fuzzy
-msgid "Moving platform"
+msgid "Moving Platform"
msgstr "Çıktı taşınıyor"
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
@@ -19996,7 +21399,7 @@ msgstr ""
#: scene/2d/physics_body_2d.cpp scene/2d/touch_screen_button.cpp
#: scene/3d/physics_body.cpp scene/gui/texture_button.cpp
-#: scene/resources/line_shape_2d.cpp
+#: scene/resources/line_shape_2d.cpp scene/resources/material.cpp
#, fuzzy
msgid "Normal"
msgstr "Biçem"
@@ -20245,6 +21648,34 @@ msgstr ""
"VisibilityEnabler2D, düzenlenmiş sahne köküyle doğrudan üst öğe olarak "
"kullanıldığında en iyi sonucu verir."
+#: scene/2d/visibility_notifier_2d.cpp scene/3d/visibility_notifier.cpp
+#, fuzzy
+msgid "Pause Animations"
+msgstr "Animasyonu Yapıştır"
+
+#: scene/2d/visibility_notifier_2d.cpp scene/3d/visibility_notifier.cpp
+msgid "Freeze Bodies"
+msgstr ""
+
+#: scene/2d/visibility_notifier_2d.cpp
+#, fuzzy
+msgid "Pause Particles"
+msgstr "Parçacıklar"
+
+#: scene/2d/visibility_notifier_2d.cpp
+#, fuzzy
+msgid "Pause Animated Sprites"
+msgstr "Animasyonu Yapıştır"
+
+#: scene/2d/visibility_notifier_2d.cpp
+#, fuzzy
+msgid "Process Parent"
+msgstr "Önceliklemeyi Etkinleştir"
+
+#: scene/2d/visibility_notifier_2d.cpp
+msgid "Physics Process Parent"
+msgstr ""
+
#: scene/3d/area.cpp
msgid "Reverb Bus"
msgstr ""
@@ -20344,6 +21775,7 @@ msgid "Attenuation Filter"
msgstr ""
#: scene/3d/audio_stream_player_3d.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
#: servers/audio/effects/audio_effect_filter.cpp
msgid "Cutoff Hz"
msgstr ""
@@ -20388,11 +21820,6 @@ msgid "Octree"
msgstr "Altağaç"
#: scene/3d/baked_lightmap.cpp
-#, fuzzy
-msgid "User Data"
-msgstr "Kullanıcı Arayüzü"
-
-#: scene/3d/baked_lightmap.cpp
msgid "Finding meshes and lights"
msgstr "Örgü ve ışıkları bulmak"
@@ -20666,6 +22093,16 @@ msgid "Ring Axis"
msgstr "Uyarılar"
#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Rotate Y"
+msgstr "Döndür"
+
+#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Disable Z"
+msgstr "Pasif Öge"
+
+#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
msgid "Flatness"
msgstr ""
@@ -20706,16 +22143,11 @@ msgstr "Dinamik Kütüphane"
msgid "Dynamic Range"
msgstr "Dinamik Kütüphane"
-#: scene/3d/gi_probe.cpp
+#: scene/3d/gi_probe.cpp scene/3d/light.cpp
msgid "Normal Bias"
msgstr ""
#: scene/3d/gi_probe.cpp
-#, fuzzy
-msgid "Compress"
-msgstr "BileÅŸenler"
-
-#: scene/3d/gi_probe.cpp
msgid "Plotting Meshes"
msgstr "Örüntüler Haritalanıyor"
@@ -20748,16 +22180,31 @@ msgstr ""
#: scene/3d/light.cpp
#, fuzzy
+msgid "Indirect Energy"
+msgstr "Emisyon Renkleri"
+
+#: scene/3d/light.cpp
+#, fuzzy
msgid "Negative"
msgstr "GDYerel"
#: scene/3d/light.cpp
#, fuzzy
+msgid "Specular"
+msgstr "Cetvel Åžekli"
+
+#: scene/3d/light.cpp
+#, fuzzy
msgid "Bake Mode"
msgstr "Bitmask Kipi"
#: scene/3d/light.cpp
#, fuzzy
+msgid "Contact"
+msgstr "Renk Seç"
+
+#: scene/3d/light.cpp
+#, fuzzy
msgid "Reverse Cull Face"
msgstr "Bus Ses Düzeyini Sıfırla"
@@ -20768,11 +22215,31 @@ msgstr "Yönler"
#: scene/3d/light.cpp
#, fuzzy
+msgid "Split 1"
+msgstr "Ayır"
+
+#: scene/3d/light.cpp
+#, fuzzy
+msgid "Split 2"
+msgstr "Ayır"
+
+#: scene/3d/light.cpp
+#, fuzzy
+msgid "Split 3"
+msgstr "Ayır"
+
+#: scene/3d/light.cpp
+#, fuzzy
msgid "Blend Splits"
msgstr "Süreleri Karıştır:"
#: scene/3d/light.cpp
#, fuzzy
+msgid "Bias Split Scale"
+msgstr "Esnetme Hizalaması Kullan"
+
+#: scene/3d/light.cpp
+#, fuzzy
msgid "Depth Range"
msgstr "Derinlik"
@@ -20798,6 +22265,11 @@ msgstr "90 dereceden geniş açılı SpotIşık gölge oluşturamaz."
msgid "Spot"
msgstr ""
+#: scene/3d/light.cpp
+#, fuzzy
+msgid "Angle Attenuation"
+msgstr "Animasyon"
+
#: scene/3d/mesh_instance.cpp
msgid "Software Skinning"
msgstr ""
@@ -20939,6 +22411,63 @@ msgstr "Eksen"
#: scene/3d/physics_body.cpp
#, fuzzy
+msgid "Linear X"
+msgstr "DoÄŸrusal"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Linear Y"
+msgstr "DoÄŸrusal"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Linear Z"
+msgstr "DoÄŸrusal"
+
+#: scene/3d/physics_body.cpp
+msgid "Angular X"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Angular Y"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Angular Z"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Motion X"
+msgstr "Eylem"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Motion Y"
+msgstr "Eylem"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Motion Z"
+msgstr "Eylem"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Move Lock X"
+msgstr "Düğümü Taşı"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Move Lock Y"
+msgstr "Düğümü Taşı"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Move Lock Z"
+msgstr "Düğümü Taşı"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
msgid "Body Offset"
msgstr "Kaydırma:"
@@ -20972,6 +22501,15 @@ msgid "Exclude Nodes"
msgstr "Düğümleri Sil"
#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Params"
+msgstr "Parametre DeÄŸiÅŸtirildi:"
+
+#: scene/3d/physics_joint.cpp
+msgid "Impulse Clamp"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit"
msgstr ""
@@ -20985,6 +22523,55 @@ msgstr "Büyük harf"
msgid "Lower"
msgstr "Küçük harf"
+#: scene/3d/physics_joint.cpp scene/3d/vehicle_body.cpp
+#, fuzzy
+msgid "Relaxation"
+msgstr "Ayrım:"
+
+#: scene/3d/physics_joint.cpp
+msgid "Motor"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Target Velocity"
+msgstr "Yörünge Görünümü Sağ"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Max Impulse"
+msgstr "Hız:"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit"
+msgstr "DoÄŸrusal"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Upper Distance"
+msgstr "Uzaklık Seç:"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Lower Distance"
+msgstr "Uzaklık Seç:"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Restitution"
+msgstr "Açıklama"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motion"
+msgstr "EtkinleÅŸtir"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Ortho"
+msgstr "Arka Dikaçılı"
+
#: scene/3d/physics_joint.cpp
#, fuzzy
msgid "Upper Angle"
@@ -20997,6 +22584,16 @@ msgstr "Küçük harf"
#: scene/3d/physics_joint.cpp
#, fuzzy
+msgid "Angular Motion"
+msgstr "Animasyon"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Angular Ortho"
+msgstr "Maks. Açısal Hata:"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
msgid "Swing Span"
msgstr "Sahne Kaydediliyor"
@@ -21005,17 +22602,99 @@ msgid "Twist Span"
msgstr ""
#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit X"
+msgstr "DoÄŸrusal"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motor X"
+msgstr "EtkinleÅŸtir"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Force Limit"
+msgstr "Çizim Çağrıları:"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Spring X"
+msgstr "DoÄŸrusal"
+
+#: scene/3d/physics_joint.cpp
+msgid "Equilibrium Point"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit X"
msgstr ""
#: scene/3d/physics_joint.cpp
+msgid "Erp"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Motor X"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Spring X"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit Y"
+msgstr "DoÄŸrusal"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motor Y"
+msgstr "EtkinleÅŸtir"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Spring Y"
+msgstr "DoÄŸrusal"
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit Y"
msgstr ""
#: scene/3d/physics_joint.cpp
+msgid "Angular Motor Y"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Spring Y"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit Z"
+msgstr "DoÄŸrusal"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motor Z"
+msgstr "EtkinleÅŸtir"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Spring Z"
+msgstr "DoÄŸrusal"
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit Z"
msgstr ""
+#: scene/3d/physics_joint.cpp
+msgid "Angular Motor Z"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Spring Z"
+msgstr ""
+
#: scene/3d/portal.cpp
msgid "The RoomManager should not be a child or grandchild of a Portal."
msgstr "RoomManager, bir Portal'ın çocuğu veya torunu olmamalıdır."
@@ -21137,7 +22816,7 @@ msgstr ""
msgid "Use Default Simplify"
msgstr ""
-#: scene/3d/room.cpp
+#: scene/3d/room.cpp scene/3d/room_manager.cpp
msgid "Room Simplify"
msgstr ""
@@ -21178,6 +22857,13 @@ msgstr "SceneTree'de yalnızca bir RoomManager olmalıdır."
msgid "Main"
msgstr ""
+#: scene/3d/room_manager.cpp scene/animation/animation_player.cpp
+#: scene/animation/animation_tree.cpp scene/animation/animation_tree_player.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+#, fuzzy
+msgid "Active"
+msgstr "Eylem"
+
#: scene/3d/room_manager.cpp
msgid "Roomlist"
msgstr ""
@@ -21202,6 +22888,54 @@ msgid "Gameplay"
msgstr ""
#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Gameplay Monitor"
+msgstr "Görüntülük"
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Use Secondary PVS"
+msgstr "Esnetme Hizalaması Kullan"
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Merge Meshes"
+msgstr "Örgü"
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Show Margins"
+msgstr "Başlatımı Göster"
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Debug Sprawl"
+msgstr "Hata Ayıklama"
+
+#: scene/3d/room_manager.cpp
+msgid "Overlap Warning Threshold"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Preview Camera"
+msgstr "Önizleme"
+
+#: scene/3d/room_manager.cpp
+msgid "Portal Depth Limit"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Default Portal Margin"
+msgstr "Kenar BoÅŸluk Belirle"
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Roaming Expansion Margin"
+msgstr "Hepsini GeniÅŸlet"
+
+#: scene/3d/room_manager.cpp
msgid ""
"RoomList path is invalid.\n"
"Please check the RoomList branch has been assigned in the RoomManager."
@@ -21343,6 +23077,20 @@ msgstr "Nokta Yapışması"
msgid "Billboard"
msgstr ""
+#: scene/3d/sprite_3d.cpp scene/resources/material.cpp
+#, fuzzy
+msgid "Transparent"
+msgstr "Tersine Çevir"
+
+#: scene/3d/sprite_3d.cpp
+#, fuzzy
+msgid "Shaded"
+msgstr "Gölgelendirici"
+
+#: scene/3d/sprite_3d.cpp
+msgid "Double Sided"
+msgstr ""
+
#: scene/3d/sprite_3d.cpp
msgid "Alpha Cut"
msgstr ""
@@ -21418,11 +23166,6 @@ msgstr "İfade"
msgid "Max Force"
msgstr "Hata"
-#: scene/3d/vehicle_body.cpp
-#, fuzzy
-msgid "Relaxation"
-msgstr "Ayrım:"
-
#: scene/3d/visibility_notifier.cpp
msgid "AABB"
msgstr ""
@@ -21566,7 +23309,7 @@ msgstr "X-Sönülme Süresi (sn):"
#: scene/animation/animation_blend_tree.cpp
#, fuzzy
-msgid "autorestart_"
+msgid "Auto Restart"
msgstr "KendiliÄŸinden Yeniden BaÅŸlat:"
#: scene/animation/animation_blend_tree.cpp
@@ -21652,13 +23395,6 @@ msgstr "Sınıf Seçenekleri:"
msgid "Default Blend Time"
msgstr "Varsayılan tema"
-#: scene/animation/animation_player.cpp scene/animation/animation_tree.cpp
-#: scene/animation/animation_tree_player.cpp
-#: servers/audio/effects/audio_effect_delay.cpp
-#, fuzzy
-msgid "Active"
-msgstr "Eylem"
-
#: scene/animation/animation_player.cpp
msgid "Method Call Mode"
msgstr ""
@@ -21784,10 +23520,6 @@ msgstr "Düğümün Ebeveynliğini Değiştir"
msgid "Max Iterations"
msgstr "İşlev Yap"
-#: scene/animation/tween.cpp scene/resources/texture.cpp
-msgid "Repeat"
-msgstr ""
-
#: scene/animation/tween.cpp
msgid "Playback Process Mode"
msgstr ""
@@ -21818,20 +23550,6 @@ msgstr "Kip Seç"
msgid "Alignment"
msgstr ""
-#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
-#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
-#: scene/resources/style_box.cpp
-#, fuzzy
-msgid "Horizontal"
-msgstr "Yatay:"
-
-#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
-#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
-#: scene/resources/style_box.cpp
-#, fuzzy
-msgid "Vertical"
-msgstr "Dikey:"
-
#: scene/gui/base_button.cpp
#, fuzzy
msgid "Shortcut In Tooltip"
@@ -21934,10 +23652,6 @@ msgid "HSV"
msgstr "HSV"
#: scene/gui/color_picker.cpp
-msgid "Raw"
-msgstr "Ham"
-
-#: scene/gui/color_picker.cpp
msgid "Switch between hexadecimal and code values."
msgstr "Hex ve kod değerleri arasında geçiş yap."
@@ -22005,6 +23719,31 @@ msgid "Focus"
msgstr "Yola Odaklan"
#: scene/gui/control.cpp
+msgid "Neighbour Left"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Neighbour Top"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Neighbour Right"
+msgstr ""
+
+#: scene/gui/control.cpp
+#, fuzzy
+msgid "Neighbour Bottom"
+msgstr "Merkez Alt"
+
+#: scene/gui/control.cpp
+msgid "Next"
+msgstr "Sonraki"
+
+#: scene/gui/control.cpp
+msgid "Previous"
+msgstr "Önceki"
+
+#: scene/gui/control.cpp
msgid "Mouse"
msgstr ""
@@ -22042,7 +23781,7 @@ msgid "Dialog"
msgstr "XForm İletişim Kutusu"
#: scene/gui/dialogs.cpp
-msgid "Hide On Ok"
+msgid "Hide On OK"
msgstr ""
#: scene/gui/dialogs.cpp scene/gui/label.cpp
@@ -22141,7 +23880,7 @@ msgid "Timers"
msgstr "Zaman"
#: scene/gui/item_list.cpp scene/gui/popup_menu.cpp scene/gui/tree.cpp
-msgid "Incremental Search Max Interval (msec)"
+msgid "Incremental Search Max Interval Msec"
msgstr ""
#: scene/gui/item_list.cpp scene/gui/tree.cpp
@@ -22728,6 +24467,26 @@ msgstr "Sol Merkez"
msgid "Nine Patch Stretch"
msgstr "Ara DeÄŸerleme Kipi"
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Left"
+msgstr "Kenar BoÅŸluk Belirle"
+
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Top"
+msgstr "Kenar BoÅŸluk Belirle"
+
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Right"
+msgstr "Kenar BoÅŸluk Belirle"
+
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Bottom"
+msgstr "Kip Seç"
+
#: scene/gui/tree.cpp
msgid "Custom Minimum Height"
msgstr ""
@@ -22765,8 +24524,9 @@ msgid "Paused"
msgstr ""
#: scene/gui/video_player.cpp
-msgid "Buffering (msec)"
-msgstr ""
+#, fuzzy
+msgid "Buffering Msec"
+msgstr "Arkadan Görünüm"
#: scene/gui/video_player.cpp
#, fuzzy
@@ -23127,6 +24887,22 @@ msgid "Shadow Atlas"
msgstr "Yeni Atlas"
#: scene/main/viewport.cpp
+msgid "Quad 0"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 1"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 2"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 3"
+msgstr ""
+
+#: scene/main/viewport.cpp
#, fuzzy
msgid "Canvas Transform"
msgstr "Dönüşümü Temizle"
@@ -23141,6 +24917,11 @@ msgid "Tooltip Delay (sec)"
msgstr ""
#: scene/register_scene_types.cpp
+#, fuzzy
+msgid "Swap OK Cancel"
+msgstr "Vazgeç"
+
+#: scene/register_scene_types.cpp
msgid "Use hiDPI"
msgstr ""
@@ -23155,21 +24936,6 @@ msgid "Custom Font"
msgstr "ÖzelSınıf"
#: scene/resources/audio_stream_sample.cpp
-#, fuzzy
-msgid "Loop Mode"
-msgstr "Biçimi Taşı"
-
-#: scene/resources/audio_stream_sample.cpp
-#, fuzzy
-msgid "Loop Begin"
-msgstr "Biçimi Taşı"
-
-#: scene/resources/audio_stream_sample.cpp
-#, fuzzy
-msgid "Loop End"
-msgstr "Biçimi Taşı"
-
-#: scene/resources/audio_stream_sample.cpp
#: servers/audio/effects/audio_stream_generator.cpp servers/audio_server.cpp
#, fuzzy
msgid "Mix Rate"
@@ -23229,6 +24995,17 @@ msgstr "İlave Seçenekler:"
#: scene/resources/dynamic_font.cpp
#, fuzzy
+msgid "Char"
+msgstr "Geçerli karakterler:"
+
+#: scene/resources/dynamic_font.cpp scene/resources/world.cpp
+#: scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Space"
+msgstr "Ana Sahne"
+
+#: scene/resources/dynamic_font.cpp
+#, fuzzy
msgid "Font"
msgstr "Yazı Tipleri"
@@ -23456,6 +25233,43 @@ msgid "Glow"
msgstr ""
#: scene/resources/environment.cpp
+#, fuzzy
+msgid "Levels"
+msgstr "GeliÅŸtiriciler"
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "1"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "2"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "3"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "4"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "5"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "6"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "7"
+msgstr ""
+
+#: scene/resources/environment.cpp
msgid "Bloom"
msgstr ""
@@ -23548,10 +25362,68 @@ msgid "Next Pass"
msgstr "Sonraki sekme"
#: scene/resources/material.cpp
+msgid "Use Shadow To Opacity"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Unshaded"
+msgstr "Gölgesiz Görüntüle"
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Vertex Lighting"
+msgstr "Doğrudan aydınlatma"
+
+#: scene/resources/material.cpp
+msgid "No Depth Test"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Use Point Size"
+msgstr "Önden Görünüm"
+
+#: scene/resources/material.cpp
+msgid "World Triplanar"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Fixed Size"
+msgstr "Önden Görünüm"
+
+#: scene/resources/material.cpp
+msgid "Albedo Tex Force sRGB"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Do Not Receive Shadows"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Disable Ambient Light"
+msgstr "SaÄŸa Girintile"
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Ensure Correct Normals"
+msgstr "Dönüşüm Durduruldu."
+
+#: scene/resources/material.cpp
#, fuzzy
msgid "Vertex Color"
msgstr "Köşe"
+#: scene/resources/material.cpp
+msgid "Use As Albedo"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Is sRGB"
+msgstr ""
+
#: scene/resources/material.cpp servers/visual_server.cpp
#, fuzzy
msgid "Parameters"
@@ -23588,6 +25460,11 @@ msgid "Billboard Mode"
msgstr "Cetvel Åžekli"
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Billboard Keep Scale"
+msgstr "Cetvel Åžekli"
+
+#: scene/resources/material.cpp
msgid "Grow"
msgstr ""
@@ -23597,6 +25474,10 @@ msgid "Grow Amount"
msgstr "DeÄŸer:"
#: scene/resources/material.cpp
+msgid "Use Alpha Scissor"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Alpha Scissor Threshold"
msgstr ""
@@ -23628,10 +25509,20 @@ msgid "Metallic Specular"
msgstr ""
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Metallic Texture"
+msgstr "Emisyon Kaynağı: "
+
+#: scene/resources/material.cpp
msgid "Metallic Texture Channel"
msgstr ""
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Roughness Texture"
+msgstr "Dokuyu Kaldır"
+
+#: scene/resources/material.cpp
msgid "Roughness Texture Channel"
msgstr ""
@@ -23651,6 +25542,16 @@ msgid "Emission Operator"
msgstr "Emisyon Renkleri"
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Emission On UV2"
+msgstr "Emisyon Maskesi"
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Emission Texture"
+msgstr "Emisyon Kaynağı: "
+
+#: scene/resources/material.cpp
msgid "NormalMap"
msgstr ""
@@ -23665,6 +25566,11 @@ msgstr "Rastgele EÄŸilme:"
#: scene/resources/material.cpp
#, fuzzy
+msgid "Rim Texture"
+msgstr "Dokuyu Kaldır"
+
+#: scene/resources/material.cpp
+#, fuzzy
msgid "Clearcoat"
msgstr "Temizle"
@@ -23674,15 +25580,28 @@ msgid "Clearcoat Gloss"
msgstr "DuruÅŸu Temizle"
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Clearcoat Texture"
+msgstr "Editör Teması"
+
+#: scene/resources/material.cpp
msgid "Anisotropy"
msgstr ""
#: scene/resources/material.cpp
+msgid "Anisotropy Flowmap"
+msgstr ""
+
+#: scene/resources/material.cpp
#, fuzzy
msgid "Ambient Occlusion"
msgstr "Engel"
#: scene/resources/material.cpp
+msgid "On UV2"
+msgstr ""
+
+#: scene/resources/material.cpp
#, fuzzy
msgid "Texture Channel"
msgstr "DokuBölgesi"
@@ -23721,6 +25640,11 @@ msgstr "Geçiş: "
#: scene/resources/material.cpp
#, fuzzy
+msgid "Transmission Texture"
+msgstr "Geçiş: "
+
+#: scene/resources/material.cpp
+#, fuzzy
msgid "Refraction"
msgstr "Ayrım:"
@@ -23739,6 +25663,10 @@ msgid "UV1"
msgstr "UV"
#: scene/resources/material.cpp
+msgid "Triplanar"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Triplanar Sharpness"
msgstr ""
@@ -23950,6 +25878,16 @@ msgstr "Editör Teması"
msgid "Point Count"
msgstr "GiriÅŸ Portu Ekle"
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Scale Random"
+msgstr "Ölçek Oranı:"
+
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Scale Curve"
+msgstr "EÄŸriyi Kapat"
+
#: scene/resources/physics_material.cpp
msgid "Rough"
msgstr ""
@@ -24012,10 +25950,6 @@ msgid "A"
msgstr ""
#: scene/resources/shader.cpp
-msgid "Code"
-msgstr ""
-
-#: scene/resources/shader.cpp
#, fuzzy
msgid "Custom Defines"
msgstr "Özel Sahneyi Oynat"
@@ -24112,15 +26046,6 @@ msgstr ""
#: scene/resources/texture.cpp
#, fuzzy
-msgid "Storage"
-msgstr "Dosya Depolama:"
-
-#: scene/resources/texture.cpp
-msgid "Lossy Quality"
-msgstr ""
-
-#: scene/resources/texture.cpp
-#, fuzzy
msgid "Load Path"
msgstr "Önayar yükle"
@@ -24251,11 +26176,6 @@ msgstr "Bu tür için geçersiz karşılaştırma işlevi."
msgid "Fallback Environment"
msgstr "Ortamı Göster"
-#: scene/resources/world.cpp scene/resources/world_2d.cpp
-#, fuzzy
-msgid "Space"
-msgstr "Ana Sahne"
-
#: scene/resources/world.cpp
#, fuzzy
msgid "Scenario"
@@ -24336,10 +26256,37 @@ msgstr ""
msgid "Wet"
msgstr ""
-#: servers/audio/effects/audio_effect_compressor.cpp
-msgid "Threshold"
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "Voice"
msgstr ""
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+msgid "Delay (ms)"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_phaser.cpp
+msgid "Rate Hz"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#, fuzzy
+msgid "Depth (ms)"
+msgstr "Derinlik"
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+msgid "Level dB"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+#: servers/audio/effects/audio_effect_panner.cpp
+#, fuzzy
+msgid "Pan"
+msgstr "Sekme:"
+
#: servers/audio/effects/audio_effect_compressor.cpp
#: servers/audio/effects/audio_effect_filter.cpp
msgid "Gain"
@@ -24363,20 +26310,6 @@ msgid "Tap 1"
msgstr ""
#: servers/audio/effects/audio_effect_delay.cpp
-msgid "Delay (ms)"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_delay.cpp
-msgid "Level dB"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_delay.cpp
-#: servers/audio/effects/audio_effect_panner.cpp
-#, fuzzy
-msgid "Pan"
-msgstr "Sekme:"
-
-#: servers/audio/effects/audio_effect_delay.cpp
msgid "Tap 2"
msgstr ""
@@ -24438,10 +26371,6 @@ msgstr ""
msgid "Range Max Hz"
msgstr ""
-#: servers/audio/effects/audio_effect_phaser.cpp
-msgid "Rate Hz"
-msgstr ""
-
#: servers/audio/effects/audio_effect_pitch_shift.cpp
msgid "Oversampling"
msgstr ""
@@ -24457,7 +26386,7 @@ msgid "Predelay"
msgstr ""
#: servers/audio/effects/audio_effect_reverb.cpp
-msgid "(msec)"
+msgid "Msec"
msgstr ""
#: servers/audio/effects/audio_effect_reverb.cpp
diff --git a/editor/translations/tt.po b/editor/translations/tt.po
index 088d00b94a..34b9b825fa 100644
--- a/editor/translations/tt.po
+++ b/editor/translations/tt.po
@@ -18,7 +18,7 @@ msgstr ""
"Plural-Forms: nplurals=1; plural=0;\n"
"X-Generator: Weblate 4.7-dev\n"
-#: core/bind/core_bind.cpp
+#: core/bind/core_bind.cpp main/main.cpp
msgid "Tablet Driver"
msgstr ""
@@ -109,8 +109,8 @@ msgstr ""
#: core/bind/core_bind.cpp editor/editor_settings.cpp main/main.cpp
#: modules/gdscript/gdscript_editor.cpp modules/gridmap/grid_map.cpp
#: modules/mono/csharp_script.cpp modules/visual_script/visual_script_nodes.cpp
-#: scene/2d/tile_map.cpp scene/3d/camera.cpp scene/gui/control.cpp
-#: scene/gui/graph_edit.cpp scene/main/viewport.cpp
+#: scene/2d/tile_map.cpp scene/3d/camera.cpp scene/3d/light.cpp
+#: scene/gui/control.cpp scene/gui/graph_edit.cpp scene/main/viewport.cpp
#: scene/resources/dynamic_font.cpp scene/resources/navigation_mesh.cpp
#: scene/resources/primitive_meshes.cpp scene/resources/sky.cpp
#: scene/resources/style_box.cpp scene/resources/texture.cpp
@@ -203,8 +203,7 @@ msgid "Data"
msgstr ""
#: core/io/file_access_network.cpp core/register_core_types.cpp
-#: editor/editor_settings.cpp editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp main/main.cpp
+#: editor/editor_settings.cpp main/main.cpp
#: modules/gdscript/language_server/gdscript_language_server.cpp
msgid "Network"
msgstr ""
@@ -464,9 +463,10 @@ msgstr ""
msgid "Relative"
msgstr ""
-#: core/os/input_event.cpp scene/2d/camera_2d.cpp
-#: scene/3d/interpolated_camera.cpp scene/animation/animation_player.cpp
-#: scene/resources/environment.cpp
+#: core/os/input_event.cpp scene/2d/camera_2d.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/interpolated_camera.cpp
+#: scene/animation/animation_player.cpp scene/resources/environment.cpp
+#: scene/resources/particles_material.cpp
msgid "Speed"
msgstr ""
@@ -510,8 +510,9 @@ msgstr ""
msgid "Pitch"
msgstr ""
-#: core/os/input_event.cpp scene/2d/physics_body_2d.cpp
-#: scene/3d/physics_body.cpp
+#: core/os/input_event.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/physics_body_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/3d/physics_body.cpp scene/resources/particles_material.cpp
msgid "Velocity"
msgstr ""
@@ -528,6 +529,8 @@ msgid "Controller Value"
msgstr ""
#: core/project_settings.cpp editor/editor_node.cpp main/main.cpp
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/windows/export/export.cpp
msgid "Application"
msgstr ""
@@ -543,13 +546,16 @@ msgstr ""
#: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp
#: editor/editor_plugin_settings.cpp editor/editor_profiler.cpp
#: editor/project_manager.cpp editor/settings_config_dialog.cpp
-#: modules/gdnative/nativescript/nativescript.cpp scene/2d/area_2d.cpp
-#: scene/3d/area.cpp scene/main/node.cpp
+#: modules/gdnative/nativescript/nativescript.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/osx/export/export.cpp scene/2d/area_2d.cpp scene/3d/area.cpp
+#: scene/main/node.cpp
msgid "Name"
msgstr ""
#: core/project_settings.cpp editor/editor_help.cpp
-#: modules/visual_script/visual_script_nodes.cpp
+#: modules/visual_script/visual_script_nodes.cpp platform/uwp/export/export.cpp
+#: platform/windows/export/export.cpp
msgid "Description"
msgstr ""
@@ -585,7 +591,7 @@ msgid "Custom User Dir Name"
msgstr ""
#: core/project_settings.cpp editor/animation_track_editor.cpp
-#: editor/editor_audio_buses.cpp servers/audio_server.cpp
+#: editor/editor_audio_buses.cpp main/main.cpp servers/audio_server.cpp
msgid "Audio"
msgstr ""
@@ -736,10 +742,13 @@ msgstr ""
msgid "Sharpen Intensity"
msgstr ""
-#: core/project_settings.cpp editor/editor_node.cpp editor/editor_settings.cpp
-#: editor/plugins/script_editor_plugin.cpp editor/project_export.cpp
-#: main/main.cpp modules/gdscript/gdscript.cpp
-#: modules/visual_script/visual_script.cpp scene/3d/room_manager.cpp
+#: core/project_settings.cpp editor/editor_export.cpp editor/editor_node.cpp
+#: editor/editor_settings.cpp editor/plugins/script_editor_plugin.cpp
+#: editor/project_export.cpp main/main.cpp modules/gdscript/gdscript.cpp
+#: modules/visual_script/visual_script.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp scene/3d/room_manager.cpp
#: scene/main/scene_tree.cpp scene/resources/shape_2d.cpp
#: servers/visual_server.cpp
msgid "Debug"
@@ -961,6 +970,7 @@ msgid "Subsurface Scattering"
msgstr ""
#: drivers/gles3/rasterizer_scene_gles3.cpp
+#: editor/import/resource_importer_texture.cpp
#: editor/plugins/spatial_editor_plugin.cpp modules/gltf/gltf_node.cpp
#: modules/gridmap/grid_map.cpp scene/2d/cpu_particles_2d.cpp
#: scene/2d/node_2d.cpp scene/2d/parallax_layer.cpp scene/2d/polygon_2d.cpp
@@ -1256,6 +1266,7 @@ msgid "Editors"
msgstr ""
#: editor/animation_track_editor.cpp editor/editor_settings.cpp
+#: editor/import/resource_importer_scene.cpp
#: editor/plugins/animation_player_editor_plugin.cpp editor/scene_tree_dock.cpp
#: scene/2d/animated_sprite.cpp scene/2d/cpu_particles_2d.cpp
#: scene/2d/sprite.cpp scene/3d/cpu_particles.cpp scene/3d/sprite_3d.cpp
@@ -1472,14 +1483,14 @@ msgstr ""
msgid "Seconds"
msgstr ""
-#: editor/animation_track_editor.cpp
+#: editor/animation_track_editor.cpp editor/import/resource_importer_scene.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp main/main.cpp
#: scene/resources/texture.cpp
msgid "FPS"
msgstr ""
#: editor/animation_track_editor.cpp editor/editor_plugin_settings.cpp
-#: editor/editor_resource_picker.cpp
+#: editor/editor_resource_picker.cpp editor/import/resource_importer_wav.cpp
#: editor/plugins/polygon_2d_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
@@ -2421,7 +2432,9 @@ msgid "Remove Autoload"
msgstr ""
#: editor/editor_autoload_settings.cpp editor/editor_plugin_settings.cpp
-#: modules/gdscript/gdscript.cpp scene/2d/polygon_2d.cpp scene/3d/area.cpp
+#: modules/gdscript/gdscript.cpp platform/android/export/export_plugin.cpp
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#: scene/2d/polygon_2d.cpp scene/3d/area.cpp scene/3d/physics_joint.cpp
#: scene/3d/reflection_probe.cpp scene/main/canvas_layer.cpp
#: scene/resources/material.cpp servers/visual_server.cpp
msgid "Enable"
@@ -2574,6 +2587,55 @@ msgstr ""
#: editor/editor_export.cpp platform/android/export/export_plugin.cpp
#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
+msgid "Custom Template"
+msgstr ""
+
+#: editor/editor_export.cpp editor/project_export.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp
+msgid "Release"
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Binary Format"
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "64 Bits"
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Embed PCK"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "Texture Format"
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "BPTC"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "S3TC"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "ETC"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "ETC2"
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "No BPTC Fallbacks"
+msgstr ""
+
+#: editor/editor_export.cpp platform/android/export/export_plugin.cpp
+#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
msgid "Custom debug template not found."
msgstr ""
@@ -2747,6 +2809,7 @@ msgid "Make Current"
msgstr ""
#: editor/editor_feature_profile.cpp editor/editor_node.cpp
+#: editor/import/resource_importer_scene.cpp
#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
msgid "Import"
msgstr ""
@@ -2871,8 +2934,11 @@ msgstr ""
msgid "Display Mode"
msgstr ""
-#: editor/editor_file_dialog.cpp main/main.cpp modules/csg/csg_shape.cpp
-#: modules/visual_script/visual_script_nodes.cpp
+#: editor/editor_file_dialog.cpp
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+#: editor/import/resource_importer_wav.cpp main/main.cpp
+#: modules/csg/csg_shape.cpp modules/visual_script/visual_script_nodes.cpp
#: modules/visual_script/visual_script_yield_nodes.cpp scene/2d/light_2d.cpp
#: scene/2d/physics_body_2d.cpp scene/2d/tile_map.cpp
#: scene/3d/baked_lightmap.cpp scene/3d/light.cpp scene/3d/physics_body.cpp
@@ -3004,7 +3070,9 @@ msgstr ""
msgid "Reimport Missing Imported Files"
msgstr ""
-#: editor/editor_help.cpp
+#: editor/editor_help.cpp scene/2d/camera_2d.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/resources/dynamic_font.cpp
+#: scene/resources/style_box.cpp
msgid "Top"
msgstr ""
@@ -3056,6 +3124,7 @@ msgid "Fonts"
msgstr ""
#: editor/editor_help.cpp editor/plugins/theme_editor_plugin.cpp
+#: platform/iphone/export/export.cpp
msgid "Icons"
msgstr ""
@@ -3214,7 +3283,9 @@ msgstr ""
msgid "Pin value [Disabled because '%s' is editor-only]"
msgstr ""
-#: editor/editor_inspector.cpp editor/scene_tree_dock.cpp
+#: editor/editor_inspector.cpp
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+#: editor/scene_tree_dock.cpp
#: modules/visual_script/visual_script_func_nodes.cpp
#: modules/visual_script/visual_script_nodes.cpp
#: modules/visual_script/visual_script_property_selector.cpp
@@ -3525,6 +3596,14 @@ msgid "Quick Open Script..."
msgstr ""
#: editor/editor_node.cpp
+msgid "Save & Reload"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Save changes to '%s' before reloading?"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "Save & Close"
msgstr ""
@@ -3635,6 +3714,10 @@ msgid "Open Project Manager?"
msgstr ""
#: editor/editor_node.cpp
+msgid "Save changes to the following scene(s) before reloading?"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "Save & Quit"
msgstr ""
@@ -3874,7 +3957,7 @@ msgid "Update Vital Only"
msgstr ""
#: editor/editor_node.cpp
-msgid "Translate Properties"
+msgid "Localize Settings"
msgstr ""
#: editor/editor_node.cpp
@@ -3890,7 +3973,7 @@ msgid "Inspector"
msgstr ""
#: editor/editor_node.cpp
-msgid "Capitalize Properties"
+msgid "Default Property Name Style"
msgstr ""
#: editor/editor_node.cpp
@@ -4449,7 +4532,9 @@ msgstr ""
msgid "Update"
msgstr ""
-#: editor/editor_plugin_settings.cpp
+#: editor/editor_plugin_settings.cpp platform/android/export/export_plugin.cpp
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp
msgid "Version"
msgstr ""
@@ -5385,7 +5470,7 @@ msgstr ""
msgid "Rect Custom Position"
msgstr ""
-#: editor/editor_settings.cpp
+#: editor/editor_settings.cpp platform/android/export/export_plugin.cpp
msgid "Screen"
msgstr ""
@@ -5408,6 +5493,19 @@ msgid "Editor SSL Certificates"
msgstr ""
#: editor/editor_settings.cpp
+msgid "HTTP Proxy"
+msgstr ""
+
+#: editor/editor_settings.cpp
+msgid "Host"
+msgstr ""
+
+#: editor/editor_settings.cpp editor/fileserver/editor_file_server.cpp
+#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp
+msgid "Port"
+msgstr ""
+
+#: editor/editor_settings.cpp
msgid "Project Manager"
msgstr ""
@@ -5447,7 +5545,8 @@ msgstr ""
msgid "String Color"
msgstr ""
-#: editor/editor_settings.cpp
+#: editor/editor_settings.cpp platform/javascript/export/export.cpp
+#: platform/uwp/export/export.cpp
msgid "Background Color"
msgstr ""
@@ -5605,22 +5704,6 @@ msgid "Starting the download..."
msgstr ""
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "HTTP Proxy"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Host"
-msgstr ""
-
-#: editor/export_template_manager.cpp editor/fileserver/editor_file_server.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp main/main.cpp
-#: modules/mono/mono_gd/gd_mono.cpp
-msgid "Port"
-msgstr ""
-
-#: editor/export_template_manager.cpp
msgid "Error requesting URL:"
msgstr ""
@@ -5862,6 +5945,7 @@ msgstr ""
#: editor/fileserver/editor_file_server.cpp
#: editor/plugins/version_control_editor_plugin.cpp
+#: platform/uwp/export/export.cpp platform/windows/export/export.cpp
msgid "Password"
msgstr ""
@@ -6225,6 +6309,106 @@ msgstr ""
msgid "Use Ambient"
msgstr ""
+#: editor/import/resource_importer_bitmask.cpp
+msgid "Create From"
+msgstr ""
+
+#: editor/import/resource_importer_bitmask.cpp
+#: servers/audio/effects/audio_effect_compressor.cpp
+msgid "Threshold"
+msgstr ""
+
+#: editor/import/resource_importer_csv_translation.cpp
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_scene.cpp
+#: editor/import/resource_importer_texture.cpp
+#: editor/import/resource_importer_wav.cpp scene/3d/gi_probe.cpp
+msgid "Compress"
+msgstr ""
+
+#: editor/import/resource_importer_csv_translation.cpp
+msgid "Delimiter"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+msgid "No BPTC If RGB"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/sprite_3d.cpp
+#: scene/resources/material.cpp scene/resources/particles_material.cpp
+#: scene/resources/texture.cpp
+msgid "Flags"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/animation/tween.cpp
+#: scene/resources/texture.cpp
+msgid "Repeat"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/2d/light_2d.cpp
+#: scene/gui/control.cpp scene/resources/navigation_mesh.cpp
+msgid "Filter"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+msgid "Mipmaps"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+msgid "Anisotropic"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+msgid "sRGB"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+msgid "Slices"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
+#: scene/resources/style_box.cpp
+msgid "Horizontal"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
+#: scene/resources/style_box.cpp
+msgid "Vertical"
+msgstr ""
+
+#: editor/import/resource_importer_obj.cpp
+#, fuzzy
+msgid "Generate Tangents"
+msgstr "Төп"
+
+#: editor/import/resource_importer_obj.cpp
+msgid "Scale Mesh"
+msgstr ""
+
+#: editor/import/resource_importer_obj.cpp
+msgid "Offset Mesh"
+msgstr ""
+
+#: editor/import/resource_importer_obj.cpp
+#: editor/import/resource_importer_scene.cpp
+msgid "Octahedral Compression"
+msgstr ""
+
+#: editor/import/resource_importer_obj.cpp
+msgid "Optimize Mesh Flags"
+msgstr ""
+
#: editor/import/resource_importer_scene.cpp
msgid "Import as Single Scene"
msgstr ""
@@ -6265,6 +6449,131 @@ msgstr ""
msgid "Import as Multiple Scenes+Materials"
msgstr ""
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+#: scene/3d/physics_joint.cpp
+msgid "Nodes"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Root Type"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Root Name"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Root Scale"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Custom Script"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp scene/resources/texture.cpp
+msgid "Storage"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Use Legacy Names"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+msgid "Materials"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp platform/osx/export/export.cpp
+msgid "Location"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Keep On Reimport"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+msgid "Meshes"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Ensure Tangents"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Light Baking"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Lightmap Texel Size"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+msgid "Skins"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Use Named Skins"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "External Files"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Store In Subdir"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Filter Script"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Keep Custom Tracks"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Optimizer"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp main/main.cpp
+#: modules/mono/mono_gd/gd_mono.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp scene/2d/camera_2d.cpp scene/2d/light_2d.cpp
+#: scene/2d/navigation_polygon.cpp scene/2d/ray_cast_2d.cpp scene/2d/sprite.cpp
+#: scene/2d/y_sort.cpp scene/3d/audio_stream_player_3d.cpp
+#: scene/3d/baked_lightmap.cpp scene/3d/interpolated_camera.cpp
+#: scene/3d/light.cpp scene/3d/navigation_mesh_instance.cpp
+#: scene/3d/physics_joint.cpp scene/3d/ray_cast.cpp scene/3d/sprite_3d.cpp
+#: scene/gui/graph_edit.cpp scene/gui/rich_text_label.cpp
+#: scene/resources/curve.cpp scene/resources/environment.cpp
+#: scene/resources/material.cpp
+msgid "Enabled"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Max Linear Error"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Max Angular Error"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Max Angle"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Remove Unused Tracks"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Clips"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/particles_2d.cpp scene/3d/area.cpp scene/3d/cpu_particles.cpp
+#: scene/3d/particles.cpp scene/resources/environment.cpp
+msgid "Amount"
+msgstr ""
+
#: editor/import/resource_importer_scene.cpp
#: editor/plugins/mesh_library_editor_plugin.cpp
msgid "Import Scene"
@@ -6306,12 +6615,132 @@ msgstr ""
msgid "Saving..."
msgstr ""
+#: editor/import/resource_importer_texture.cpp scene/resources/texture.cpp
+msgid "Lossy Quality"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "HDR Mode"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "BPTC LDR"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/mesh_instance_2d.cpp scene/2d/multimesh_instance_2d.cpp
+#: scene/2d/particles_2d.cpp scene/2d/sprite.cpp scene/resources/style_box.cpp
+msgid "Normal Map"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Process"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Fix Alpha Border"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Premult Alpha"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Hdr As Srgb"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Invert Color"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Normal Map Invert Y"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
+#: scene/audio/audio_stream_player.cpp scene/gui/video_player.cpp
+msgid "Stream"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Size Limit"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Detect 3D"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "SVG"
+msgstr ""
+
#: editor/import/resource_importer_texture.cpp
msgid ""
"Warning, no suitable PC VRAM compression enabled in Project Settings. This "
"texture will not display correctly on PC."
msgstr ""
+#: editor/import/resource_importer_texture_atlas.cpp
+msgid "Atlas File"
+msgstr ""
+
+#: editor/import/resource_importer_texture_atlas.cpp
+msgid "Import Mode"
+msgstr ""
+
+#: editor/import/resource_importer_texture_atlas.cpp
+msgid "Crop To Region"
+msgstr ""
+
+#: editor/import/resource_importer_texture_atlas.cpp
+msgid "Trim Alpha Border From Region"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp scene/2d/physics_body_2d.cpp
+msgid "Force"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+msgid "8 Bit"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp main/main.cpp
+#: modules/mono/editor/csharp_project.cpp modules/mono/mono_gd/gd_mono.cpp
+msgid "Mono"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+msgid "Max Rate"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+msgid "Max Rate Hz"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+msgid "Trim"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+msgid "Normalize"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+msgid "Loop Mode"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+msgid "Loop Begin"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+msgid "Loop End"
+msgstr ""
+
#: editor/import_defaults_editor.cpp
msgid "Select Importer"
msgstr ""
@@ -6380,6 +6809,26 @@ msgid "Failed to load resource."
msgstr ""
#: editor/inspector_dock.cpp
+msgid "Property Name Style"
+msgstr ""
+
+#: editor/inspector_dock.cpp scene/gui/color_picker.cpp
+msgid "Raw"
+msgstr ""
+
+#: editor/inspector_dock.cpp
+msgid "Capitalized"
+msgstr ""
+
+#: editor/inspector_dock.cpp
+msgid "Localized"
+msgstr ""
+
+#: editor/inspector_dock.cpp
+msgid "Localization not available for current language."
+msgstr ""
+
+#: editor/inspector_dock.cpp
msgid "Copy Properties"
msgstr ""
@@ -7408,18 +7857,22 @@ msgid "License (Z-A)"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
+msgctxt "Pagination"
msgid "First"
msgstr ""
-#: editor/plugins/asset_library_editor_plugin.cpp scene/gui/control.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgctxt "Pagination"
msgid "Previous"
msgstr ""
-#: editor/plugins/asset_library_editor_plugin.cpp scene/gui/control.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgctxt "Pagination"
msgid "Next"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
+msgctxt "Pagination"
msgid "Last"
msgstr ""
@@ -7653,19 +8106,19 @@ msgid ""
"margins."
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Top Left"
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Top Right"
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Bottom Right"
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Bottom Left"
msgstr ""
@@ -8358,6 +8811,18 @@ msgstr ""
msgid "Gradient Edited"
msgstr ""
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+msgid "Swap GradientTexture2D Fill Points"
+msgstr ""
+
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+msgid "Swap Gradient Fill Points"
+msgstr ""
+
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+msgid "Toggle Grid Snap"
+msgstr ""
+
#: editor/plugins/item_list_editor_plugin.cpp
msgid "Item %d"
msgstr ""
@@ -8571,8 +9036,8 @@ msgid ""
"%s"
msgstr ""
-#: editor/plugins/mesh_library_editor_plugin.cpp modules/gridmap/grid_map.cpp
-msgid "Mesh Library"
+#: editor/plugins/mesh_library_editor_plugin.cpp
+msgid "MeshLibrary"
msgstr ""
#: editor/plugins/mesh_library_editor_plugin.cpp
@@ -9540,8 +10005,8 @@ msgstr ""
msgid "Source"
msgstr ""
-#: editor/plugins/script_text_editor.cpp scene/3d/interpolated_camera.cpp
-#: scene/animation/skeleton_ik.cpp
+#: editor/plugins/script_text_editor.cpp platform/uwp/export/export.cpp
+#: scene/3d/interpolated_camera.cpp scene/animation/skeleton_ik.cpp
msgid "Target"
msgstr ""
@@ -10498,7 +10963,9 @@ msgstr ""
#: editor/plugins/sprite_frames_editor_plugin.cpp
#: modules/gltf/gltf_animation.cpp modules/minimp3/audio_stream_mp3.cpp
-#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp scene/2d/path_2d.cpp
+#: modules/minimp3/resource_importer_mp3.cpp
+#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp
+#: modules/stb_vorbis/resource_importer_ogg_vorbis.cpp scene/2d/path_2d.cpp
#: scene/3d/path.cpp scene/resources/animation.cpp scene/resources/material.cpp
msgid "Loop"
msgstr ""
@@ -11358,8 +11825,9 @@ msgstr ""
msgid "Priority"
msgstr ""
-#: editor/plugins/tile_set_editor_plugin.cpp main/main.cpp scene/gui/button.cpp
-#: scene/gui/item_list.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp main/main.cpp
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#: scene/gui/button.cpp scene/gui/item_list.cpp
msgid "Icon"
msgstr ""
@@ -12640,10 +13108,6 @@ msgid ""
msgstr ""
#: editor/project_export.cpp
-msgid "Release"
-msgstr ""
-
-#: editor/project_export.cpp
msgid "Exporting All"
msgstr ""
@@ -14403,6 +14867,7 @@ msgid "Change AudioStreamPlayer3D Emission Angle"
msgstr ""
#: editor/spatial_editor_gizmos.cpp modules/gltf/gltf_node.cpp
+#: platform/osx/export/export.cpp
msgid "Camera"
msgstr ""
@@ -14663,7 +15128,8 @@ msgstr ""
msgid "Use Nvidia Rect Flicker Workaround"
msgstr ""
-#: main/main.cpp platform/uwp/os_uwp.cpp
+#: main/main.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp platform/uwp/os_uwp.cpp
msgid "Display"
msgstr ""
@@ -14718,18 +15184,6 @@ msgstr ""
msgid "Allowed"
msgstr ""
-#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp scene/2d/camera_2d.cpp
-#: scene/2d/light_2d.cpp scene/2d/navigation_polygon.cpp
-#: scene/2d/ray_cast_2d.cpp scene/2d/sprite.cpp scene/2d/y_sort.cpp
-#: scene/3d/audio_stream_player_3d.cpp scene/3d/baked_lightmap.cpp
-#: scene/3d/interpolated_camera.cpp scene/3d/light.cpp
-#: scene/3d/navigation_mesh_instance.cpp scene/3d/ray_cast.cpp
-#: scene/3d/sprite_3d.cpp scene/gui/graph_edit.cpp
-#: scene/gui/rich_text_label.cpp scene/resources/curve.cpp
-#: scene/resources/environment.cpp
-msgid "Enabled"
-msgstr ""
-
#: main/main.cpp
msgid "Intended Usage"
msgstr ""
@@ -14758,12 +15212,13 @@ msgstr ""
msgid "Handheld"
msgstr ""
-#: main/main.cpp
+#: main/main.cpp platform/javascript/export/export.cpp
+#: platform/uwp/export/export.cpp
msgid "Orientation"
msgstr ""
#: main/main.cpp scene/gui/scroll_container.cpp scene/gui/text_edit.cpp
-#: scene/main/scene_tree.cpp
+#: scene/main/scene_tree.cpp scene/register_scene_types.cpp
#, fuzzy
msgid "Common"
msgstr "Җәмәгать"
@@ -14803,7 +15258,7 @@ msgid "Verbose stdout"
msgstr ""
#: main/main.cpp
-msgid "Frame Delay (msec)"
+msgid "Frame Delay Msec"
msgstr ""
#: main/main.cpp
@@ -14920,11 +15375,6 @@ msgstr ""
msgid "Tooltip Position Offset"
msgstr ""
-#: main/main.cpp modules/mono/editor/csharp_project.cpp
-#: modules/mono/mono_gd/gd_mono.cpp
-msgid "Mono"
-msgstr ""
-
#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp
msgid "Debugger Agent"
msgstr ""
@@ -15442,7 +15892,7 @@ msgstr ""
msgid "Intensity"
msgstr ""
-#: modules/gltf/gltf_light.cpp scene/2d/light_2d.cpp
+#: modules/gltf/gltf_light.cpp scene/2d/light_2d.cpp scene/3d/light.cpp
msgid "Range"
msgstr ""
@@ -15572,10 +16022,6 @@ msgstr ""
msgid "Use Named Skin Binds"
msgstr ""
-#: modules/gltf/gltf_state.cpp scene/3d/physics_joint.cpp
-msgid "Nodes"
-msgstr ""
-
#: modules/gltf/gltf_state.cpp
msgid "Buffer Views"
msgstr ""
@@ -15585,14 +16031,6 @@ msgid "Accessors"
msgstr ""
#: modules/gltf/gltf_state.cpp
-msgid "Meshes"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp
-msgid "Materials"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp
msgid "Scene Name"
msgstr ""
@@ -15606,15 +16044,11 @@ msgstr ""
msgid "Textures"
msgstr ""
-#: modules/gltf/gltf_state.cpp
+#: modules/gltf/gltf_state.cpp platform/uwp/export/export.cpp
msgid "Images"
msgstr ""
#: modules/gltf/gltf_state.cpp
-msgid "Skins"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp
msgid "Cameras"
msgstr ""
@@ -15643,10 +16077,14 @@ msgid "Src Image"
msgstr ""
#: modules/gridmap/grid_map.cpp
-msgid "Physics Material"
+msgid "Mesh Library"
msgstr ""
#: modules/gridmap/grid_map.cpp
+msgid "Physics Material"
+msgstr ""
+
+#: modules/gridmap/grid_map.cpp scene/3d/visual_instance.cpp
msgid "Use In Baked Light"
msgstr ""
@@ -15673,6 +16111,7 @@ msgstr ""
#: modules/gridmap/grid_map.cpp scene/2d/collision_object_2d.cpp
#: scene/2d/tile_map.cpp scene/3d/collision_object.cpp scene/3d/soft_body.cpp
+#: scene/resources/material.cpp
msgid "Mask"
msgstr ""
@@ -15853,7 +16292,9 @@ msgid "Ultra Quality Ray Count"
msgstr ""
#: modules/minimp3/audio_stream_mp3.cpp
+#: modules/minimp3/resource_importer_mp3.cpp
#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp
+#: modules/stb_vorbis/resource_importer_ogg_vorbis.cpp
msgid "Loop Offset"
msgstr ""
@@ -16875,6 +17316,163 @@ msgid "The package must have at least one '.' separator."
msgstr ""
#: platform/android/export/export_plugin.cpp
+msgid "Use Custom Build"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Export Format"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Keystore"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Debug User"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+msgid "Debug Password"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Release User"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Release Password"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "One Click Deploy"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Clear Previous Install"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp scene/resources/shader.cpp
+msgid "Code"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Min SDK"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Target SDK"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+msgid "Package"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+msgid "Unique Name"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Signed"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Classify As Game"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Retain Data On Uninstall"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Exclude From Recents"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Graphics"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "OpenGL Debug"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "XR Features"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "XR Mode"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Hand Tracking"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Hand Tracking Frequency"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Passthrough"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Immersive Mode"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Support Small"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Support Normal"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Support Large"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Support Xlarge"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "User Data Backup"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Allow"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Command Line"
+msgstr "Җәмәгать"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+msgid "Extra Args"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "APK Expansion"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Salt"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Public Key"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Permissions"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Custom Permissions"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
msgid "Select device from the list"
msgstr ""
@@ -17160,6 +17758,159 @@ msgid "The character '%s' is not allowed in Identifier."
msgstr ""
#: platform/iphone/export/export.cpp
+msgid "App Store Team ID"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Provisioning Profile UUID Debug"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Code Sign Identity Debug"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Export Method Debug"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Provisioning Profile UUID Release"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Code Sign Identity Release"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Export Method Release"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Targeted Device Family"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Info"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Identifier"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Signature"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Short Version"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/windows/export/export.cpp
+msgid "Copyright"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Capabilities"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Access Wi-Fi"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Push Notifications"
+msgstr ""
+
+#: platform/iphone/export/export.cpp scene/3d/baked_lightmap.cpp
+msgid "User Data"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Accessible From Files App"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Accessible From Itunes Sharing"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Privacy"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Camera Usage Description"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Microphone Usage Description"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Photolibrary Usage Description"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPhone 120 X 120"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPhone 180 X 180"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 76 X 76"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 152 X 152"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 167 X 167"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "App Store 1024 X 1024"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Spotlight 40 X 40"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Spotlight 80 X 80"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Storyboard"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Use Launch Screen Storyboard"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Image Scale Mode"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Custom Image @2x"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Custom Image @3x"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Use Custom BG Color"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Custom BG Color"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
msgid "App Store Team ID not specified - cannot configure the project."
msgstr ""
@@ -17196,6 +17947,74 @@ msgid "Could not read file:"
msgstr ""
#: platform/javascript/export/export.cpp
+msgid "Variant"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Export Type"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "VRAM Texture Compression"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "For Desktop"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "For Mobile"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Html"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Export Icon"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Custom Html Shell"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Head Include"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Canvas Resize Policy"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Focus Canvas On Start"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Experimental Virtual Keyboard"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Progressive Web App"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Offline Page"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 144 X 144"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 180 X 180"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 512 X 512"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
msgid "Could not read HTML shell:"
msgstr ""
@@ -17300,6 +18119,175 @@ msgid "Unknown object type."
msgstr ""
#: platform/osx/export/export.cpp
+msgid "App Category"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "High Res"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Location Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Address Book Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Calendar Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Photos Library Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Desktop Folder Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Documents Folder Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Downloads Folder Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Network Volumes Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Removable Volumes Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+msgid "Codesign"
+msgstr ""
+
+#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
+#: platform/windows/export/export.cpp
+msgid "Identity"
+msgstr ""
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+msgid "Timestamp"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Hardened Runtime"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Replace Existing Signature"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Entitlements"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Custom File"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Allow JIT Code Execution"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Allow Unsigned Executable Memory"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Allow Dyld Environment Variables"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Disable Library Validation"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Audio Input"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Address Book"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Calendars"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Photos Library"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Apple Events"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Debugging"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "App Sandbox"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Network Server"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Network Client"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Device Usb"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Device Bluetooth"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Files Downloads"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Files Pictures"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Files Music"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Files Movies"
+msgstr ""
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+msgid "Custom Options"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Apple ID Name"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Apple ID Password"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Apple Team ID"
+msgstr ""
+
+#: platform/osx/export/export.cpp
msgid ""
"Note: The notarization process generally takes less than an hour. When the "
"process is completed, you'll receive an email."
@@ -17489,6 +18477,122 @@ msgid "Force Builtin Codesign"
msgstr ""
#: platform/uwp/export/export.cpp
+msgid "Architecture"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Display Name"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Short Name"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Publisher"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Publisher Display Name"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Product Guid"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Publisher Guid"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Signing"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Certificate"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Algorithm"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Major"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Minor"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Build"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Revision"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Landscape"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Portrait"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Landscape Flipped"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Portrait Flipped"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Store Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 44 X 44 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 71 X 71 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 150 X 150 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 310 X 310 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Wide 310 X 150 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Splash Screen"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Tiles"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Square 150 X 150"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Wide 310 X 150"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Square 310 X 310"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
msgid "Invalid package short name."
msgstr ""
@@ -17553,11 +18657,43 @@ msgid "Debug Certificate"
msgstr ""
#: platform/uwp/export/export.cpp
-msgid "Debug Password"
+msgid "Debug Algorithm"
msgstr ""
-#: platform/uwp/export/export.cpp
-msgid "Debug Algorithm"
+#: platform/windows/export/export.cpp
+msgid "Identity Type"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Timestamp Server URL"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Digest Algorithm"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "File Version"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Product Version"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Company Name"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Product Name"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "File Description"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Trademarks"
msgstr ""
#: platform/windows/export/export.cpp
@@ -17624,12 +18760,14 @@ msgstr ""
msgid "Centered"
msgstr ""
-#: scene/2d/animated_sprite.cpp scene/2d/camera_2d.cpp scene/2d/light_2d.cpp
+#: scene/2d/animated_sprite.cpp scene/2d/camera_2d.cpp
+#: scene/2d/cpu_particles_2d.cpp scene/2d/light_2d.cpp
#: scene/2d/parallax_background.cpp scene/2d/parallax_layer.cpp
#: scene/2d/path_2d.cpp scene/2d/polygon_2d.cpp scene/2d/sprite.cpp
-#: scene/3d/path.cpp scene/3d/physics_body.cpp scene/3d/sprite_3d.cpp
-#: scene/gui/graph_node.cpp scene/gui/rich_text_effect.cpp
-#: scene/main/canvas_layer.cpp scene/resources/material.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/path.cpp scene/3d/physics_body.cpp
+#: scene/3d/sprite_3d.cpp scene/gui/graph_node.cpp
+#: scene/gui/rich_text_effect.cpp scene/main/canvas_layer.cpp
+#: scene/resources/material.cpp scene/resources/particles_material.cpp
#: scene/resources/style_box.cpp
msgid "Offset"
msgstr ""
@@ -17693,11 +18831,6 @@ msgstr ""
msgid "Override"
msgstr ""
-#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
-#: scene/audio/audio_stream_player.cpp scene/gui/video_player.cpp
-msgid "Stream"
-msgstr ""
-
#: scene/2d/audio_stream_player_2d.cpp scene/audio/audio_stream_player.cpp
#: scene/gui/video_player.cpp servers/audio/effects/audio_effect_amplify.cpp
msgid "Volume dB"
@@ -17721,12 +18854,12 @@ msgid "Stream Paused"
msgstr ""
#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
-#: scene/3d/reflection_probe.cpp scene/3d/visual_instance.cpp
-#: scene/resources/material.cpp
+#: scene/3d/light.cpp scene/3d/reflection_probe.cpp
+#: scene/3d/visual_instance.cpp scene/resources/material.cpp
msgid "Max Distance"
msgstr ""
-#: scene/2d/audio_stream_player_2d.cpp
+#: scene/2d/audio_stream_player_2d.cpp scene/3d/light.cpp
msgid "Attenuation"
msgstr ""
@@ -17773,6 +18906,21 @@ msgstr ""
msgid "Limit"
msgstr ""
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/style_box.cpp
+msgid "Left"
+msgstr ""
+
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/style_box.cpp
+msgid "Right"
+msgstr ""
+
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/dynamic_font.cpp scene/resources/style_box.cpp
+msgid "Bottom"
+msgstr ""
+
#: scene/2d/camera_2d.cpp
msgid "Smoothed"
msgstr ""
@@ -17966,12 +19114,6 @@ msgstr ""
msgid "Emitting"
msgstr ""
-#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp scene/3d/area.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
-#: scene/resources/environment.cpp
-msgid "Amount"
-msgstr ""
-
#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp
#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
msgid "Lifetime"
@@ -18031,17 +19173,12 @@ msgstr ""
#: scene/2d/mesh_instance_2d.cpp scene/2d/multimesh_instance_2d.cpp
#: scene/2d/particles_2d.cpp scene/2d/polygon_2d.cpp scene/2d/sprite.cpp
#: scene/3d/sprite_3d.cpp scene/gui/nine_patch_rect.cpp
-#: scene/gui/texture_rect.cpp scene/resources/sky.cpp
-#: scene/resources/style_box.cpp scene/resources/visual_shader_nodes.cpp
+#: scene/gui/texture_rect.cpp scene/resources/material.cpp
+#: scene/resources/sky.cpp scene/resources/style_box.cpp
+#: scene/resources/visual_shader_nodes.cpp
msgid "Texture"
msgstr ""
-#: scene/2d/cpu_particles_2d.cpp scene/2d/mesh_instance_2d.cpp
-#: scene/2d/multimesh_instance_2d.cpp scene/2d/particles_2d.cpp
-#: scene/2d/sprite.cpp scene/resources/style_box.cpp
-msgid "Normal Map"
-msgstr ""
-
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
msgid "Emission Shape"
@@ -18061,9 +19198,8 @@ msgid "Normals"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/3d/sprite_3d.cpp scene/resources/material.cpp
-#: scene/resources/particles_material.cpp scene/resources/texture.cpp
-msgid "Flags"
+#: scene/resources/particles_material.cpp
+msgid "Align Y"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
@@ -18083,6 +19219,11 @@ msgid "Initial Velocity"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Velocity Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp servers/physics_2d_server.cpp
#: servers/physics_server.cpp
msgid "Angular Velocity"
@@ -18090,6 +19231,11 @@ msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+msgid "Velocity Curve"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
msgid "Orbit Velocity"
msgstr ""
@@ -18100,6 +19246,21 @@ msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+msgid "Accel"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Accel Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Accel Curve"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
msgid "Radial Accel"
msgstr ""
@@ -18109,19 +19270,51 @@ msgid "Tangential Accel"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/2d/joints_2d.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/vehicle_body.cpp
-#: scene/resources/particles_material.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/physics_joint.cpp
+#: scene/3d/vehicle_body.cpp scene/resources/particles_material.cpp
#: servers/audio/effects/audio_effect_reverb.cpp
msgid "Damping"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+msgid "Damping Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Damping Curve"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp scene/3d/light.cpp
+#: scene/resources/particles_material.cpp
msgid "Angle"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+msgid "Angle Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Angle Curve"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+msgid "Scale Amount"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+msgid "Scale Amount Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+msgid "Scale Amount Curve"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
msgid "Color Ramp"
msgstr ""
@@ -18135,6 +19328,41 @@ msgstr ""
msgid "Hue Variation"
msgstr ""
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Variation"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Variation Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Variation Curve"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Speed Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Speed Curve"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Offset Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Offset Curve"
+msgstr ""
+
#: scene/2d/joints_2d.cpp
msgid "Node A and Node B must be PhysicsBody2Ds"
msgstr ""
@@ -18164,6 +19392,7 @@ msgid "Node B"
msgstr ""
#: scene/2d/joints_2d.cpp scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp
+#: scene/3d/light.cpp scene/3d/physics_joint.cpp
#: scene/resources/environment.cpp
msgid "Bias"
msgstr ""
@@ -18172,7 +19401,7 @@ msgstr ""
msgid "Disable Collision"
msgstr ""
-#: scene/2d/joints_2d.cpp
+#: scene/2d/joints_2d.cpp scene/3d/physics_joint.cpp
msgid "Softness"
msgstr ""
@@ -18189,7 +19418,7 @@ msgstr ""
msgid "Rest Length"
msgstr ""
-#: scene/2d/joints_2d.cpp scene/3d/vehicle_body.cpp
+#: scene/2d/joints_2d.cpp scene/3d/physics_joint.cpp scene/3d/vehicle_body.cpp
msgid "Stiffness"
msgstr ""
@@ -18208,7 +19437,7 @@ msgid "Texture Scale"
msgstr ""
#: scene/2d/light_2d.cpp scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp
-#: scene/resources/environment.cpp scene/resources/sky.cpp
+#: scene/3d/light.cpp scene/resources/environment.cpp scene/resources/sky.cpp
msgid "Energy"
msgstr ""
@@ -18244,11 +19473,6 @@ msgstr ""
msgid "Gradient Length"
msgstr ""
-#: scene/2d/light_2d.cpp scene/gui/control.cpp
-#: scene/resources/navigation_mesh.cpp
-msgid "Filter"
-msgstr ""
-
#: scene/2d/light_2d.cpp
msgid "Filter Smooth"
msgstr ""
@@ -18620,10 +19844,6 @@ msgid "Applied Forces"
msgstr ""
#: scene/2d/physics_body_2d.cpp
-msgid "Force"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp
msgid "Torque"
msgstr ""
@@ -18636,7 +19856,7 @@ msgid "Sync To Physics"
msgstr ""
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-msgid "Moving platform"
+msgid "Moving Platform"
msgstr ""
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
@@ -18645,7 +19865,7 @@ msgstr ""
#: scene/2d/physics_body_2d.cpp scene/2d/touch_screen_button.cpp
#: scene/3d/physics_body.cpp scene/gui/texture_button.cpp
-#: scene/resources/line_shape_2d.cpp
+#: scene/resources/line_shape_2d.cpp scene/resources/material.cpp
msgid "Normal"
msgstr ""
@@ -18852,6 +20072,30 @@ msgid ""
"as parent."
msgstr ""
+#: scene/2d/visibility_notifier_2d.cpp scene/3d/visibility_notifier.cpp
+msgid "Pause Animations"
+msgstr ""
+
+#: scene/2d/visibility_notifier_2d.cpp scene/3d/visibility_notifier.cpp
+msgid "Freeze Bodies"
+msgstr ""
+
+#: scene/2d/visibility_notifier_2d.cpp
+msgid "Pause Particles"
+msgstr ""
+
+#: scene/2d/visibility_notifier_2d.cpp
+msgid "Pause Animated Sprites"
+msgstr ""
+
+#: scene/2d/visibility_notifier_2d.cpp
+msgid "Process Parent"
+msgstr ""
+
+#: scene/2d/visibility_notifier_2d.cpp
+msgid "Physics Process Parent"
+msgstr ""
+
#: scene/3d/area.cpp
msgid "Reverb Bus"
msgstr ""
@@ -18941,6 +20185,7 @@ msgid "Attenuation Filter"
msgstr ""
#: scene/3d/audio_stream_player_3d.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
#: servers/audio/effects/audio_effect_filter.cpp
msgid "Cutoff Hz"
msgstr ""
@@ -18980,10 +20225,6 @@ msgid "Octree"
msgstr ""
#: scene/3d/baked_lightmap.cpp
-msgid "User Data"
-msgstr ""
-
-#: scene/3d/baked_lightmap.cpp
msgid "Finding meshes and lights"
msgstr ""
@@ -19214,6 +20455,14 @@ msgid "Ring Axis"
msgstr ""
#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
+msgid "Rotate Y"
+msgstr ""
+
+#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
+msgid "Disable Z"
+msgstr ""
+
+#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
msgid "Flatness"
msgstr ""
@@ -19249,15 +20498,11 @@ msgstr ""
msgid "Dynamic Range"
msgstr ""
-#: scene/3d/gi_probe.cpp
+#: scene/3d/gi_probe.cpp scene/3d/light.cpp
msgid "Normal Bias"
msgstr ""
#: scene/3d/gi_probe.cpp
-msgid "Compress"
-msgstr ""
-
-#: scene/3d/gi_probe.cpp
msgid "Plotting Meshes"
msgstr ""
@@ -19283,14 +20528,26 @@ msgid "Subdiv"
msgstr ""
#: scene/3d/light.cpp
+msgid "Indirect Energy"
+msgstr ""
+
+#: scene/3d/light.cpp
msgid "Negative"
msgstr ""
#: scene/3d/light.cpp
+msgid "Specular"
+msgstr ""
+
+#: scene/3d/light.cpp
msgid "Bake Mode"
msgstr ""
#: scene/3d/light.cpp
+msgid "Contact"
+msgstr ""
+
+#: scene/3d/light.cpp
msgid "Reverse Cull Face"
msgstr ""
@@ -19299,10 +20556,26 @@ msgid "Directional Shadow"
msgstr ""
#: scene/3d/light.cpp
+msgid "Split 1"
+msgstr ""
+
+#: scene/3d/light.cpp
+msgid "Split 2"
+msgstr ""
+
+#: scene/3d/light.cpp
+msgid "Split 3"
+msgstr ""
+
+#: scene/3d/light.cpp
msgid "Blend Splits"
msgstr ""
#: scene/3d/light.cpp
+msgid "Bias Split Scale"
+msgstr ""
+
+#: scene/3d/light.cpp
msgid "Depth Range"
msgstr ""
@@ -19326,6 +20599,10 @@ msgstr ""
msgid "Spot"
msgstr ""
+#: scene/3d/light.cpp
+msgid "Angle Attenuation"
+msgstr ""
+
#: scene/3d/mesh_instance.cpp
msgid "Software Skinning"
msgstr ""
@@ -19442,6 +20719,54 @@ msgid "Axis Lock"
msgstr ""
#: scene/3d/physics_body.cpp
+msgid "Linear X"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Linear Y"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Linear Z"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Angular X"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Angular Y"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Angular Z"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Motion X"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Motion Y"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Motion Z"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Move Lock X"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Move Lock Y"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Move Lock Z"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
msgid "Body Offset"
msgstr ""
@@ -19474,6 +20799,14 @@ msgid "Exclude Nodes"
msgstr ""
#: scene/3d/physics_joint.cpp
+msgid "Params"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Impulse Clamp"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit"
msgstr ""
@@ -19485,6 +20818,46 @@ msgstr ""
msgid "Lower"
msgstr ""
+#: scene/3d/physics_joint.cpp scene/3d/vehicle_body.cpp
+msgid "Relaxation"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Motor"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Target Velocity"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Max Impulse"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Linear Limit"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Upper Distance"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Lower Distance"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Restitution"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Linear Motion"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Linear Ortho"
+msgstr ""
+
#: scene/3d/physics_joint.cpp
msgid "Upper Angle"
msgstr ""
@@ -19494,6 +20867,14 @@ msgid "Lower Angle"
msgstr ""
#: scene/3d/physics_joint.cpp
+msgid "Angular Motion"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Ortho"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
msgid "Swing Span"
msgstr ""
@@ -19502,17 +20883,89 @@ msgid "Twist Span"
msgstr ""
#: scene/3d/physics_joint.cpp
+msgid "Linear Limit X"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Linear Motor X"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Force Limit"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Linear Spring X"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Equilibrium Point"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit X"
msgstr ""
#: scene/3d/physics_joint.cpp
+msgid "Erp"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Motor X"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Spring X"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Linear Limit Y"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Linear Motor Y"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Linear Spring Y"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit Y"
msgstr ""
#: scene/3d/physics_joint.cpp
+msgid "Angular Motor Y"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Spring Y"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Linear Limit Z"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Linear Motor Z"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Linear Spring Z"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit Z"
msgstr ""
+#: scene/3d/physics_joint.cpp
+msgid "Angular Motor Z"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Spring Z"
+msgstr ""
+
#: scene/3d/portal.cpp
msgid "The RoomManager should not be a child or grandchild of a Portal."
msgstr ""
@@ -19617,7 +21070,7 @@ msgstr ""
msgid "Use Default Simplify"
msgstr ""
-#: scene/3d/room.cpp
+#: scene/3d/room.cpp scene/3d/room_manager.cpp
msgid "Room Simplify"
msgstr ""
@@ -19655,6 +21108,12 @@ msgstr ""
msgid "Main"
msgstr ""
+#: scene/3d/room_manager.cpp scene/animation/animation_player.cpp
+#: scene/animation/animation_tree.cpp scene/animation/animation_tree_player.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+msgid "Active"
+msgstr ""
+
#: scene/3d/room_manager.cpp
msgid "Roomlist"
msgstr ""
@@ -19676,6 +21135,46 @@ msgid "Gameplay"
msgstr ""
#: scene/3d/room_manager.cpp
+msgid "Gameplay Monitor"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "Use Secondary PVS"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "Merge Meshes"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "Show Margins"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "Debug Sprawl"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "Overlap Warning Threshold"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "Preview Camera"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "Portal Depth Limit"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "Default Portal Margin"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "Roaming Expansion Margin"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
msgid ""
"RoomList path is invalid.\n"
"Please check the RoomList branch has been assigned in the RoomManager."
@@ -19794,6 +21293,18 @@ msgstr ""
msgid "Billboard"
msgstr ""
+#: scene/3d/sprite_3d.cpp scene/resources/material.cpp
+msgid "Transparent"
+msgstr ""
+
+#: scene/3d/sprite_3d.cpp
+msgid "Shaded"
+msgstr ""
+
+#: scene/3d/sprite_3d.cpp
+msgid "Double Sided"
+msgstr ""
+
#: scene/3d/sprite_3d.cpp
msgid "Alpha Cut"
msgstr ""
@@ -19858,10 +21369,6 @@ msgstr ""
msgid "Max Force"
msgstr ""
-#: scene/3d/vehicle_body.cpp
-msgid "Relaxation"
-msgstr ""
-
#: scene/3d/visibility_notifier.cpp
msgid "AABB"
msgstr ""
@@ -19983,7 +21490,7 @@ msgid "Fadeout Time"
msgstr ""
#: scene/animation/animation_blend_tree.cpp
-msgid "autorestart_"
+msgid "Auto Restart"
msgstr ""
#: scene/animation/animation_blend_tree.cpp
@@ -20055,12 +21562,6 @@ msgstr ""
msgid "Default Blend Time"
msgstr ""
-#: scene/animation/animation_player.cpp scene/animation/animation_tree.cpp
-#: scene/animation/animation_tree_player.cpp
-#: servers/audio/effects/audio_effect_delay.cpp
-msgid "Active"
-msgstr ""
-
#: scene/animation/animation_player.cpp
msgid "Method Call Mode"
msgstr ""
@@ -20169,10 +21670,6 @@ msgstr ""
msgid "Max Iterations"
msgstr ""
-#: scene/animation/tween.cpp scene/resources/texture.cpp
-msgid "Repeat"
-msgstr ""
-
#: scene/animation/tween.cpp
msgid "Playback Process Mode"
msgstr ""
@@ -20199,18 +21696,6 @@ msgstr ""
msgid "Alignment"
msgstr ""
-#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
-#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
-#: scene/resources/style_box.cpp
-msgid "Horizontal"
-msgstr ""
-
-#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
-#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
-#: scene/resources/style_box.cpp
-msgid "Vertical"
-msgstr ""
-
#: scene/gui/base_button.cpp
msgid "Shortcut In Tooltip"
msgstr ""
@@ -20296,10 +21781,6 @@ msgid "HSV"
msgstr ""
#: scene/gui/color_picker.cpp
-msgid "Raw"
-msgstr ""
-
-#: scene/gui/color_picker.cpp
msgid "Switch between hexadecimal and code values."
msgstr ""
@@ -20353,6 +21834,30 @@ msgid "Focus"
msgstr ""
#: scene/gui/control.cpp
+msgid "Neighbour Left"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Neighbour Top"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Neighbour Right"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Neighbour Bottom"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Next"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Previous"
+msgstr ""
+
+#: scene/gui/control.cpp
msgid "Mouse"
msgstr ""
@@ -20385,7 +21890,7 @@ msgid "Dialog"
msgstr ""
#: scene/gui/dialogs.cpp
-msgid "Hide On Ok"
+msgid "Hide On OK"
msgstr ""
#: scene/gui/dialogs.cpp scene/gui/label.cpp
@@ -20471,7 +21976,7 @@ msgid "Timers"
msgstr ""
#: scene/gui/item_list.cpp scene/gui/popup_menu.cpp scene/gui/tree.cpp
-msgid "Incremental Search Max Interval (msec)"
+msgid "Incremental Search Max Interval Msec"
msgstr ""
#: scene/gui/item_list.cpp scene/gui/tree.cpp
@@ -20970,6 +22475,22 @@ msgstr ""
msgid "Nine Patch Stretch"
msgstr ""
+#: scene/gui/texture_progress.cpp
+msgid "Stretch Margin Left"
+msgstr ""
+
+#: scene/gui/texture_progress.cpp
+msgid "Stretch Margin Top"
+msgstr ""
+
+#: scene/gui/texture_progress.cpp
+msgid "Stretch Margin Right"
+msgstr ""
+
+#: scene/gui/texture_progress.cpp
+msgid "Stretch Margin Bottom"
+msgstr ""
+
#: scene/gui/tree.cpp
msgid "Custom Minimum Height"
msgstr ""
@@ -21003,7 +22524,7 @@ msgid "Paused"
msgstr ""
#: scene/gui/video_player.cpp
-msgid "Buffering (msec)"
+msgid "Buffering Msec"
msgstr ""
#: scene/gui/video_player.cpp
@@ -21307,6 +22828,22 @@ msgid "Shadow Atlas"
msgstr ""
#: scene/main/viewport.cpp
+msgid "Quad 0"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 1"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 2"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 3"
+msgstr ""
+
+#: scene/main/viewport.cpp
msgid "Canvas Transform"
msgstr ""
@@ -21319,6 +22856,10 @@ msgid "Tooltip Delay (sec)"
msgstr ""
#: scene/register_scene_types.cpp
+msgid "Swap OK Cancel"
+msgstr ""
+
+#: scene/register_scene_types.cpp
msgid "Use hiDPI"
msgstr ""
@@ -21331,18 +22872,6 @@ msgid "Custom Font"
msgstr ""
#: scene/resources/audio_stream_sample.cpp
-msgid "Loop Mode"
-msgstr ""
-
-#: scene/resources/audio_stream_sample.cpp
-msgid "Loop Begin"
-msgstr ""
-
-#: scene/resources/audio_stream_sample.cpp
-msgid "Loop End"
-msgstr ""
-
-#: scene/resources/audio_stream_sample.cpp
#: servers/audio/effects/audio_stream_generator.cpp servers/audio_server.cpp
msgid "Mix Rate"
msgstr ""
@@ -21392,6 +22921,15 @@ msgid "Extra Spacing"
msgstr ""
#: scene/resources/dynamic_font.cpp
+msgid "Char"
+msgstr ""
+
+#: scene/resources/dynamic_font.cpp scene/resources/world.cpp
+#: scene/resources/world_2d.cpp
+msgid "Space"
+msgstr ""
+
+#: scene/resources/dynamic_font.cpp
msgid "Font"
msgstr ""
@@ -21588,6 +23126,42 @@ msgid "Glow"
msgstr ""
#: scene/resources/environment.cpp
+msgid "Levels"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "1"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "2"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "3"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "4"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "5"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "6"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "7"
+msgstr ""
+
+#: scene/resources/environment.cpp
msgid "Bloom"
msgstr ""
@@ -21668,9 +23242,61 @@ msgid "Next Pass"
msgstr ""
#: scene/resources/material.cpp
+msgid "Use Shadow To Opacity"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Unshaded"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Vertex Lighting"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "No Depth Test"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Use Point Size"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "World Triplanar"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Fixed Size"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Albedo Tex Force sRGB"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Do Not Receive Shadows"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Disable Ambient Light"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Ensure Correct Normals"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Vertex Color"
msgstr ""
+#: scene/resources/material.cpp
+msgid "Use As Albedo"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Is sRGB"
+msgstr ""
+
#: scene/resources/material.cpp servers/visual_server.cpp
msgid "Parameters"
msgstr ""
@@ -21700,6 +23326,10 @@ msgid "Billboard Mode"
msgstr ""
#: scene/resources/material.cpp
+msgid "Billboard Keep Scale"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Grow"
msgstr ""
@@ -21708,6 +23338,10 @@ msgid "Grow Amount"
msgstr ""
#: scene/resources/material.cpp
+msgid "Use Alpha Scissor"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Alpha Scissor Threshold"
msgstr ""
@@ -21736,10 +23370,18 @@ msgid "Metallic Specular"
msgstr ""
#: scene/resources/material.cpp
+msgid "Metallic Texture"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Metallic Texture Channel"
msgstr ""
#: scene/resources/material.cpp
+msgid "Roughness Texture"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Roughness Texture Channel"
msgstr ""
@@ -21756,6 +23398,14 @@ msgid "Emission Operator"
msgstr ""
#: scene/resources/material.cpp
+msgid "Emission On UV2"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Emission Texture"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "NormalMap"
msgstr ""
@@ -21768,6 +23418,10 @@ msgid "Rim Tint"
msgstr ""
#: scene/resources/material.cpp
+msgid "Rim Texture"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Clearcoat"
msgstr ""
@@ -21776,14 +23430,26 @@ msgid "Clearcoat Gloss"
msgstr ""
#: scene/resources/material.cpp
+msgid "Clearcoat Texture"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Anisotropy"
msgstr ""
#: scene/resources/material.cpp
+msgid "Anisotropy Flowmap"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Ambient Occlusion"
msgstr ""
#: scene/resources/material.cpp
+msgid "On UV2"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Texture Channel"
msgstr ""
@@ -21816,6 +23482,10 @@ msgid "Transmission"
msgstr ""
#: scene/resources/material.cpp
+msgid "Transmission Texture"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Refraction"
msgstr ""
@@ -21832,6 +23502,10 @@ msgid "UV1"
msgstr ""
#: scene/resources/material.cpp
+msgid "Triplanar"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Triplanar Sharpness"
msgstr ""
@@ -22015,6 +23689,14 @@ msgstr ""
msgid "Point Count"
msgstr ""
+#: scene/resources/particles_material.cpp
+msgid "Scale Random"
+msgstr ""
+
+#: scene/resources/particles_material.cpp
+msgid "Scale Curve"
+msgstr ""
+
#: scene/resources/physics_material.cpp
msgid "Rough"
msgstr ""
@@ -22072,10 +23754,6 @@ msgid "A"
msgstr ""
#: scene/resources/shader.cpp
-msgid "Code"
-msgstr ""
-
-#: scene/resources/shader.cpp
msgid "Custom Defines"
msgstr ""
@@ -22160,14 +23838,6 @@ msgid "Grow End"
msgstr ""
#: scene/resources/texture.cpp
-msgid "Storage"
-msgstr ""
-
-#: scene/resources/texture.cpp
-msgid "Lossy Quality"
-msgstr ""
-
-#: scene/resources/texture.cpp
msgid "Load Path"
msgstr ""
@@ -22277,10 +23947,6 @@ msgstr ""
msgid "Fallback Environment"
msgstr ""
-#: scene/resources/world.cpp scene/resources/world_2d.cpp
-msgid "Space"
-msgstr ""
-
#: scene/resources/world.cpp
msgid "Scenario"
msgstr ""
@@ -22354,8 +24020,33 @@ msgstr ""
msgid "Wet"
msgstr ""
-#: servers/audio/effects/audio_effect_compressor.cpp
-msgid "Threshold"
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "Voice"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+msgid "Delay (ms)"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_phaser.cpp
+msgid "Rate Hz"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "Depth (ms)"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+msgid "Level dB"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+#: servers/audio/effects/audio_effect_panner.cpp
+msgid "Pan"
msgstr ""
#: servers/audio/effects/audio_effect_compressor.cpp
@@ -22380,19 +24071,6 @@ msgid "Tap 1"
msgstr ""
#: servers/audio/effects/audio_effect_delay.cpp
-msgid "Delay (ms)"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_delay.cpp
-msgid "Level dB"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_delay.cpp
-#: servers/audio/effects/audio_effect_panner.cpp
-msgid "Pan"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_delay.cpp
msgid "Tap 2"
msgstr ""
@@ -22450,10 +24128,6 @@ msgstr ""
msgid "Range Max Hz"
msgstr ""
-#: servers/audio/effects/audio_effect_phaser.cpp
-msgid "Rate Hz"
-msgstr ""
-
#: servers/audio/effects/audio_effect_pitch_shift.cpp
msgid "Oversampling"
msgstr ""
@@ -22468,7 +24142,7 @@ msgid "Predelay"
msgstr ""
#: servers/audio/effects/audio_effect_reverb.cpp
-msgid "(msec)"
+msgid "Msec"
msgstr ""
#: servers/audio/effects/audio_effect_reverb.cpp
diff --git a/editor/translations/tzm.po b/editor/translations/tzm.po
index ade91b21ad..7e2d7c8465 100644
--- a/editor/translations/tzm.po
+++ b/editor/translations/tzm.po
@@ -18,7 +18,7 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=n >= 2 && (n < 11 || n > 99);\n"
"X-Generator: Weblate 4.3.1-dev\n"
-#: core/bind/core_bind.cpp
+#: core/bind/core_bind.cpp main/main.cpp
msgid "Tablet Driver"
msgstr ""
@@ -109,8 +109,8 @@ msgstr ""
#: core/bind/core_bind.cpp editor/editor_settings.cpp main/main.cpp
#: modules/gdscript/gdscript_editor.cpp modules/gridmap/grid_map.cpp
#: modules/mono/csharp_script.cpp modules/visual_script/visual_script_nodes.cpp
-#: scene/2d/tile_map.cpp scene/3d/camera.cpp scene/gui/control.cpp
-#: scene/gui/graph_edit.cpp scene/main/viewport.cpp
+#: scene/2d/tile_map.cpp scene/3d/camera.cpp scene/3d/light.cpp
+#: scene/gui/control.cpp scene/gui/graph_edit.cpp scene/main/viewport.cpp
#: scene/resources/dynamic_font.cpp scene/resources/navigation_mesh.cpp
#: scene/resources/primitive_meshes.cpp scene/resources/sky.cpp
#: scene/resources/style_box.cpp scene/resources/texture.cpp
@@ -203,8 +203,7 @@ msgid "Data"
msgstr ""
#: core/io/file_access_network.cpp core/register_core_types.cpp
-#: editor/editor_settings.cpp editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp main/main.cpp
+#: editor/editor_settings.cpp main/main.cpp
#: modules/gdscript/language_server/gdscript_language_server.cpp
msgid "Network"
msgstr ""
@@ -461,9 +460,10 @@ msgstr ""
msgid "Relative"
msgstr ""
-#: core/os/input_event.cpp scene/2d/camera_2d.cpp
-#: scene/3d/interpolated_camera.cpp scene/animation/animation_player.cpp
-#: scene/resources/environment.cpp
+#: core/os/input_event.cpp scene/2d/camera_2d.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/interpolated_camera.cpp
+#: scene/animation/animation_player.cpp scene/resources/environment.cpp
+#: scene/resources/particles_material.cpp
msgid "Speed"
msgstr ""
@@ -508,8 +508,9 @@ msgstr ""
msgid "Pitch"
msgstr ""
-#: core/os/input_event.cpp scene/2d/physics_body_2d.cpp
-#: scene/3d/physics_body.cpp
+#: core/os/input_event.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/physics_body_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/3d/physics_body.cpp scene/resources/particles_material.cpp
msgid "Velocity"
msgstr ""
@@ -526,6 +527,8 @@ msgid "Controller Value"
msgstr ""
#: core/project_settings.cpp editor/editor_node.cpp main/main.cpp
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/windows/export/export.cpp
msgid "Application"
msgstr ""
@@ -541,13 +544,16 @@ msgstr ""
#: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp
#: editor/editor_plugin_settings.cpp editor/editor_profiler.cpp
#: editor/project_manager.cpp editor/settings_config_dialog.cpp
-#: modules/gdnative/nativescript/nativescript.cpp scene/2d/area_2d.cpp
-#: scene/3d/area.cpp scene/main/node.cpp
+#: modules/gdnative/nativescript/nativescript.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/osx/export/export.cpp scene/2d/area_2d.cpp scene/3d/area.cpp
+#: scene/main/node.cpp
msgid "Name"
msgstr ""
#: core/project_settings.cpp editor/editor_help.cpp
-#: modules/visual_script/visual_script_nodes.cpp
+#: modules/visual_script/visual_script_nodes.cpp platform/uwp/export/export.cpp
+#: platform/windows/export/export.cpp
msgid "Description"
msgstr ""
@@ -583,7 +589,7 @@ msgid "Custom User Dir Name"
msgstr ""
#: core/project_settings.cpp editor/animation_track_editor.cpp
-#: editor/editor_audio_buses.cpp servers/audio_server.cpp
+#: editor/editor_audio_buses.cpp main/main.cpp servers/audio_server.cpp
msgid "Audio"
msgstr ""
@@ -734,10 +740,13 @@ msgstr ""
msgid "Sharpen Intensity"
msgstr ""
-#: core/project_settings.cpp editor/editor_node.cpp editor/editor_settings.cpp
-#: editor/plugins/script_editor_plugin.cpp editor/project_export.cpp
-#: main/main.cpp modules/gdscript/gdscript.cpp
-#: modules/visual_script/visual_script.cpp scene/3d/room_manager.cpp
+#: core/project_settings.cpp editor/editor_export.cpp editor/editor_node.cpp
+#: editor/editor_settings.cpp editor/plugins/script_editor_plugin.cpp
+#: editor/project_export.cpp main/main.cpp modules/gdscript/gdscript.cpp
+#: modules/visual_script/visual_script.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp scene/3d/room_manager.cpp
#: scene/main/scene_tree.cpp scene/resources/shape_2d.cpp
#: servers/visual_server.cpp
msgid "Debug"
@@ -959,6 +968,7 @@ msgid "Subsurface Scattering"
msgstr ""
#: drivers/gles3/rasterizer_scene_gles3.cpp
+#: editor/import/resource_importer_texture.cpp
#: editor/plugins/spatial_editor_plugin.cpp modules/gltf/gltf_node.cpp
#: modules/gridmap/grid_map.cpp scene/2d/cpu_particles_2d.cpp
#: scene/2d/node_2d.cpp scene/2d/parallax_layer.cpp scene/2d/polygon_2d.cpp
@@ -1254,6 +1264,7 @@ msgid "Editors"
msgstr ""
#: editor/animation_track_editor.cpp editor/editor_settings.cpp
+#: editor/import/resource_importer_scene.cpp
#: editor/plugins/animation_player_editor_plugin.cpp editor/scene_tree_dock.cpp
#: scene/2d/animated_sprite.cpp scene/2d/cpu_particles_2d.cpp
#: scene/2d/sprite.cpp scene/3d/cpu_particles.cpp scene/3d/sprite_3d.cpp
@@ -1470,14 +1481,14 @@ msgstr ""
msgid "Seconds"
msgstr ""
-#: editor/animation_track_editor.cpp
+#: editor/animation_track_editor.cpp editor/import/resource_importer_scene.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp main/main.cpp
#: scene/resources/texture.cpp
msgid "FPS"
msgstr ""
#: editor/animation_track_editor.cpp editor/editor_plugin_settings.cpp
-#: editor/editor_resource_picker.cpp
+#: editor/editor_resource_picker.cpp editor/import/resource_importer_wav.cpp
#: editor/plugins/polygon_2d_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
@@ -2419,7 +2430,9 @@ msgid "Remove Autoload"
msgstr ""
#: editor/editor_autoload_settings.cpp editor/editor_plugin_settings.cpp
-#: modules/gdscript/gdscript.cpp scene/2d/polygon_2d.cpp scene/3d/area.cpp
+#: modules/gdscript/gdscript.cpp platform/android/export/export_plugin.cpp
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#: scene/2d/polygon_2d.cpp scene/3d/area.cpp scene/3d/physics_joint.cpp
#: scene/3d/reflection_probe.cpp scene/main/canvas_layer.cpp
#: scene/resources/material.cpp servers/visual_server.cpp
msgid "Enable"
@@ -2572,6 +2585,55 @@ msgstr ""
#: editor/editor_export.cpp platform/android/export/export_plugin.cpp
#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
+msgid "Custom Template"
+msgstr ""
+
+#: editor/editor_export.cpp editor/project_export.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp
+msgid "Release"
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Binary Format"
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "64 Bits"
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Embed PCK"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "Texture Format"
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "BPTC"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "S3TC"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "ETC"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "ETC2"
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "No BPTC Fallbacks"
+msgstr ""
+
+#: editor/editor_export.cpp platform/android/export/export_plugin.cpp
+#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
msgid "Custom debug template not found."
msgstr ""
@@ -2745,6 +2807,7 @@ msgid "Make Current"
msgstr ""
#: editor/editor_feature_profile.cpp editor/editor_node.cpp
+#: editor/import/resource_importer_scene.cpp
#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
msgid "Import"
msgstr ""
@@ -2869,8 +2932,11 @@ msgstr ""
msgid "Display Mode"
msgstr ""
-#: editor/editor_file_dialog.cpp main/main.cpp modules/csg/csg_shape.cpp
-#: modules/visual_script/visual_script_nodes.cpp
+#: editor/editor_file_dialog.cpp
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+#: editor/import/resource_importer_wav.cpp main/main.cpp
+#: modules/csg/csg_shape.cpp modules/visual_script/visual_script_nodes.cpp
#: modules/visual_script/visual_script_yield_nodes.cpp scene/2d/light_2d.cpp
#: scene/2d/physics_body_2d.cpp scene/2d/tile_map.cpp
#: scene/3d/baked_lightmap.cpp scene/3d/light.cpp scene/3d/physics_body.cpp
@@ -3002,7 +3068,9 @@ msgstr ""
msgid "Reimport Missing Imported Files"
msgstr ""
-#: editor/editor_help.cpp
+#: editor/editor_help.cpp scene/2d/camera_2d.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/resources/dynamic_font.cpp
+#: scene/resources/style_box.cpp
msgid "Top"
msgstr ""
@@ -3054,6 +3122,7 @@ msgid "Fonts"
msgstr ""
#: editor/editor_help.cpp editor/plugins/theme_editor_plugin.cpp
+#: platform/iphone/export/export.cpp
msgid "Icons"
msgstr ""
@@ -3212,7 +3281,9 @@ msgstr ""
msgid "Pin value [Disabled because '%s' is editor-only]"
msgstr ""
-#: editor/editor_inspector.cpp editor/scene_tree_dock.cpp
+#: editor/editor_inspector.cpp
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+#: editor/scene_tree_dock.cpp
#: modules/visual_script/visual_script_func_nodes.cpp
#: modules/visual_script/visual_script_nodes.cpp
#: modules/visual_script/visual_script_property_selector.cpp
@@ -3523,6 +3594,14 @@ msgid "Quick Open Script..."
msgstr ""
#: editor/editor_node.cpp
+msgid "Save & Reload"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Save changes to '%s' before reloading?"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "Save & Close"
msgstr ""
@@ -3633,6 +3712,10 @@ msgid "Open Project Manager?"
msgstr ""
#: editor/editor_node.cpp
+msgid "Save changes to the following scene(s) before reloading?"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "Save & Quit"
msgstr ""
@@ -3872,7 +3955,7 @@ msgid "Update Vital Only"
msgstr ""
#: editor/editor_node.cpp
-msgid "Translate Properties"
+msgid "Localize Settings"
msgstr ""
#: editor/editor_node.cpp
@@ -3888,7 +3971,7 @@ msgid "Inspector"
msgstr ""
#: editor/editor_node.cpp
-msgid "Capitalize Properties"
+msgid "Default Property Name Style"
msgstr ""
#: editor/editor_node.cpp
@@ -4447,7 +4530,9 @@ msgstr ""
msgid "Update"
msgstr ""
-#: editor/editor_plugin_settings.cpp
+#: editor/editor_plugin_settings.cpp platform/android/export/export_plugin.cpp
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp
msgid "Version"
msgstr ""
@@ -5383,7 +5468,7 @@ msgstr ""
msgid "Rect Custom Position"
msgstr ""
-#: editor/editor_settings.cpp
+#: editor/editor_settings.cpp platform/android/export/export_plugin.cpp
msgid "Screen"
msgstr ""
@@ -5406,6 +5491,19 @@ msgid "Editor SSL Certificates"
msgstr ""
#: editor/editor_settings.cpp
+msgid "HTTP Proxy"
+msgstr ""
+
+#: editor/editor_settings.cpp
+msgid "Host"
+msgstr ""
+
+#: editor/editor_settings.cpp editor/fileserver/editor_file_server.cpp
+#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp
+msgid "Port"
+msgstr ""
+
+#: editor/editor_settings.cpp
msgid "Project Manager"
msgstr ""
@@ -5445,7 +5543,8 @@ msgstr ""
msgid "String Color"
msgstr ""
-#: editor/editor_settings.cpp
+#: editor/editor_settings.cpp platform/javascript/export/export.cpp
+#: platform/uwp/export/export.cpp
msgid "Background Color"
msgstr ""
@@ -5603,22 +5702,6 @@ msgid "Starting the download..."
msgstr ""
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "HTTP Proxy"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Host"
-msgstr ""
-
-#: editor/export_template_manager.cpp editor/fileserver/editor_file_server.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp main/main.cpp
-#: modules/mono/mono_gd/gd_mono.cpp
-msgid "Port"
-msgstr ""
-
-#: editor/export_template_manager.cpp
msgid "Error requesting URL:"
msgstr ""
@@ -5860,6 +5943,7 @@ msgstr ""
#: editor/fileserver/editor_file_server.cpp
#: editor/plugins/version_control_editor_plugin.cpp
+#: platform/uwp/export/export.cpp platform/windows/export/export.cpp
msgid "Password"
msgstr ""
@@ -6223,6 +6307,105 @@ msgstr ""
msgid "Use Ambient"
msgstr ""
+#: editor/import/resource_importer_bitmask.cpp
+msgid "Create From"
+msgstr ""
+
+#: editor/import/resource_importer_bitmask.cpp
+#: servers/audio/effects/audio_effect_compressor.cpp
+msgid "Threshold"
+msgstr ""
+
+#: editor/import/resource_importer_csv_translation.cpp
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_scene.cpp
+#: editor/import/resource_importer_texture.cpp
+#: editor/import/resource_importer_wav.cpp scene/3d/gi_probe.cpp
+msgid "Compress"
+msgstr ""
+
+#: editor/import/resource_importer_csv_translation.cpp
+msgid "Delimiter"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+msgid "No BPTC If RGB"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/sprite_3d.cpp
+#: scene/resources/material.cpp scene/resources/particles_material.cpp
+#: scene/resources/texture.cpp
+msgid "Flags"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/animation/tween.cpp
+#: scene/resources/texture.cpp
+msgid "Repeat"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/2d/light_2d.cpp
+#: scene/gui/control.cpp scene/resources/navigation_mesh.cpp
+msgid "Filter"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+msgid "Mipmaps"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+msgid "Anisotropic"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+msgid "sRGB"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+msgid "Slices"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
+#: scene/resources/style_box.cpp
+msgid "Horizontal"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
+#: scene/resources/style_box.cpp
+msgid "Vertical"
+msgstr ""
+
+#: editor/import/resource_importer_obj.cpp
+msgid "Generate Tangents"
+msgstr ""
+
+#: editor/import/resource_importer_obj.cpp
+msgid "Scale Mesh"
+msgstr ""
+
+#: editor/import/resource_importer_obj.cpp
+msgid "Offset Mesh"
+msgstr ""
+
+#: editor/import/resource_importer_obj.cpp
+#: editor/import/resource_importer_scene.cpp
+msgid "Octahedral Compression"
+msgstr ""
+
+#: editor/import/resource_importer_obj.cpp
+msgid "Optimize Mesh Flags"
+msgstr ""
+
#: editor/import/resource_importer_scene.cpp
msgid "Import as Single Scene"
msgstr ""
@@ -6263,6 +6446,132 @@ msgstr ""
msgid "Import as Multiple Scenes+Materials"
msgstr ""
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+#: scene/3d/physics_joint.cpp
+msgid "Nodes"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Root Type"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Root Name"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Root Scale"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Custom Script"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp scene/resources/texture.cpp
+msgid "Storage"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Use Legacy Names"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+msgid "Materials"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp platform/osx/export/export.cpp
+msgid "Location"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Keep On Reimport"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+msgid "Meshes"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Ensure Tangents"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Light Baking"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Lightmap Texel Size"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+msgid "Skins"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Use Named Skins"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "External Files"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Store In Subdir"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Filter Script"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Keep Custom Tracks"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Optimizer"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp main/main.cpp
+#: modules/mono/mono_gd/gd_mono.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp scene/2d/camera_2d.cpp scene/2d/light_2d.cpp
+#: scene/2d/navigation_polygon.cpp scene/2d/ray_cast_2d.cpp scene/2d/sprite.cpp
+#: scene/2d/y_sort.cpp scene/3d/audio_stream_player_3d.cpp
+#: scene/3d/baked_lightmap.cpp scene/3d/interpolated_camera.cpp
+#: scene/3d/light.cpp scene/3d/navigation_mesh_instance.cpp
+#: scene/3d/physics_joint.cpp scene/3d/ray_cast.cpp scene/3d/sprite_3d.cpp
+#: scene/gui/graph_edit.cpp scene/gui/rich_text_label.cpp
+#: scene/resources/curve.cpp scene/resources/environment.cpp
+#: scene/resources/material.cpp
+msgid "Enabled"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Max Linear Error"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Max Angular Error"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Max Angle"
+msgstr "Azal:"
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Remove Unused Tracks"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Clips"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/particles_2d.cpp scene/3d/area.cpp scene/3d/cpu_particles.cpp
+#: scene/3d/particles.cpp scene/resources/environment.cpp
+msgid "Amount"
+msgstr ""
+
#: editor/import/resource_importer_scene.cpp
#: editor/plugins/mesh_library_editor_plugin.cpp
msgid "Import Scene"
@@ -6304,12 +6613,134 @@ msgstr ""
msgid "Saving..."
msgstr ""
+#: editor/import/resource_importer_texture.cpp scene/resources/texture.cpp
+msgid "Lossy Quality"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "HDR Mode"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "BPTC LDR"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/mesh_instance_2d.cpp scene/2d/multimesh_instance_2d.cpp
+#: scene/2d/particles_2d.cpp scene/2d/sprite.cpp scene/resources/style_box.cpp
+msgid "Normal Map"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Process"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Fix Alpha Border"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Premult Alpha"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Hdr As Srgb"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Invert Color"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Normal Map Invert Y"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
+#: scene/audio/audio_stream_player.cpp scene/gui/video_player.cpp
+msgid "Stream"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Size Limit"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Detect 3D"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "SVG"
+msgstr ""
+
#: editor/import/resource_importer_texture.cpp
msgid ""
"Warning, no suitable PC VRAM compression enabled in Project Settings. This "
"texture will not display correctly on PC."
msgstr ""
+#: editor/import/resource_importer_texture_atlas.cpp
+msgid "Atlas File"
+msgstr ""
+
+#: editor/import/resource_importer_texture_atlas.cpp
+msgid "Import Mode"
+msgstr ""
+
+#: editor/import/resource_importer_texture_atlas.cpp
+msgid "Crop To Region"
+msgstr ""
+
+#: editor/import/resource_importer_texture_atlas.cpp
+msgid "Trim Alpha Border From Region"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp scene/2d/physics_body_2d.cpp
+msgid "Force"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+msgid "8 Bit"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp main/main.cpp
+#: modules/mono/editor/csharp_project.cpp modules/mono/mono_gd/gd_mono.cpp
+msgid "Mono"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+#, fuzzy
+msgid "Max Rate"
+msgstr "Azal:"
+
+#: editor/import/resource_importer_wav.cpp
+#, fuzzy
+msgid "Max Rate Hz"
+msgstr "Azal:"
+
+#: editor/import/resource_importer_wav.cpp
+msgid "Trim"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+msgid "Normalize"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+msgid "Loop Mode"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+msgid "Loop Begin"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+msgid "Loop End"
+msgstr ""
+
#: editor/import_defaults_editor.cpp
msgid "Select Importer"
msgstr ""
@@ -6378,6 +6809,26 @@ msgid "Failed to load resource."
msgstr ""
#: editor/inspector_dock.cpp
+msgid "Property Name Style"
+msgstr ""
+
+#: editor/inspector_dock.cpp scene/gui/color_picker.cpp
+msgid "Raw"
+msgstr ""
+
+#: editor/inspector_dock.cpp
+msgid "Capitalized"
+msgstr ""
+
+#: editor/inspector_dock.cpp
+msgid "Localized"
+msgstr ""
+
+#: editor/inspector_dock.cpp
+msgid "Localization not available for current language."
+msgstr ""
+
+#: editor/inspector_dock.cpp
msgid "Copy Properties"
msgstr ""
@@ -7406,18 +7857,22 @@ msgid "License (Z-A)"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
+msgctxt "Pagination"
msgid "First"
msgstr ""
-#: editor/plugins/asset_library_editor_plugin.cpp scene/gui/control.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgctxt "Pagination"
msgid "Previous"
msgstr ""
-#: editor/plugins/asset_library_editor_plugin.cpp scene/gui/control.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgctxt "Pagination"
msgid "Next"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
+msgctxt "Pagination"
msgid "Last"
msgstr ""
@@ -7651,19 +8106,19 @@ msgid ""
"margins."
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Top Left"
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Top Right"
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Bottom Right"
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Bottom Left"
msgstr ""
@@ -8356,6 +8811,18 @@ msgstr ""
msgid "Gradient Edited"
msgstr ""
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+msgid "Swap GradientTexture2D Fill Points"
+msgstr ""
+
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+msgid "Swap Gradient Fill Points"
+msgstr ""
+
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+msgid "Toggle Grid Snap"
+msgstr ""
+
#: editor/plugins/item_list_editor_plugin.cpp
msgid "Item %d"
msgstr ""
@@ -8569,8 +9036,8 @@ msgid ""
"%s"
msgstr ""
-#: editor/plugins/mesh_library_editor_plugin.cpp modules/gridmap/grid_map.cpp
-msgid "Mesh Library"
+#: editor/plugins/mesh_library_editor_plugin.cpp
+msgid "MeshLibrary"
msgstr ""
#: editor/plugins/mesh_library_editor_plugin.cpp
@@ -9538,8 +10005,8 @@ msgstr ""
msgid "Source"
msgstr ""
-#: editor/plugins/script_text_editor.cpp scene/3d/interpolated_camera.cpp
-#: scene/animation/skeleton_ik.cpp
+#: editor/plugins/script_text_editor.cpp platform/uwp/export/export.cpp
+#: scene/3d/interpolated_camera.cpp scene/animation/skeleton_ik.cpp
msgid "Target"
msgstr ""
@@ -10496,7 +10963,9 @@ msgstr ""
#: editor/plugins/sprite_frames_editor_plugin.cpp
#: modules/gltf/gltf_animation.cpp modules/minimp3/audio_stream_mp3.cpp
-#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp scene/2d/path_2d.cpp
+#: modules/minimp3/resource_importer_mp3.cpp
+#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp
+#: modules/stb_vorbis/resource_importer_ogg_vorbis.cpp scene/2d/path_2d.cpp
#: scene/3d/path.cpp scene/resources/animation.cpp scene/resources/material.cpp
msgid "Loop"
msgstr ""
@@ -11356,8 +11825,9 @@ msgstr ""
msgid "Priority"
msgstr ""
-#: editor/plugins/tile_set_editor_plugin.cpp main/main.cpp scene/gui/button.cpp
-#: scene/gui/item_list.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp main/main.cpp
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#: scene/gui/button.cpp scene/gui/item_list.cpp
msgid "Icon"
msgstr ""
@@ -12636,10 +13106,6 @@ msgid ""
msgstr ""
#: editor/project_export.cpp
-msgid "Release"
-msgstr ""
-
-#: editor/project_export.cpp
msgid "Exporting All"
msgstr ""
@@ -14399,6 +14865,7 @@ msgid "Change AudioStreamPlayer3D Emission Angle"
msgstr ""
#: editor/spatial_editor_gizmos.cpp modules/gltf/gltf_node.cpp
+#: platform/osx/export/export.cpp
msgid "Camera"
msgstr ""
@@ -14659,7 +15126,8 @@ msgstr ""
msgid "Use Nvidia Rect Flicker Workaround"
msgstr ""
-#: main/main.cpp platform/uwp/os_uwp.cpp
+#: main/main.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp platform/uwp/os_uwp.cpp
msgid "Display"
msgstr ""
@@ -14714,18 +15182,6 @@ msgstr ""
msgid "Allowed"
msgstr ""
-#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp scene/2d/camera_2d.cpp
-#: scene/2d/light_2d.cpp scene/2d/navigation_polygon.cpp
-#: scene/2d/ray_cast_2d.cpp scene/2d/sprite.cpp scene/2d/y_sort.cpp
-#: scene/3d/audio_stream_player_3d.cpp scene/3d/baked_lightmap.cpp
-#: scene/3d/interpolated_camera.cpp scene/3d/light.cpp
-#: scene/3d/navigation_mesh_instance.cpp scene/3d/ray_cast.cpp
-#: scene/3d/sprite_3d.cpp scene/gui/graph_edit.cpp
-#: scene/gui/rich_text_label.cpp scene/resources/curve.cpp
-#: scene/resources/environment.cpp
-msgid "Enabled"
-msgstr ""
-
#: main/main.cpp
msgid "Intended Usage"
msgstr ""
@@ -14754,12 +15210,13 @@ msgstr ""
msgid "Handheld"
msgstr ""
-#: main/main.cpp
+#: main/main.cpp platform/javascript/export/export.cpp
+#: platform/uwp/export/export.cpp
msgid "Orientation"
msgstr ""
#: main/main.cpp scene/gui/scroll_container.cpp scene/gui/text_edit.cpp
-#: scene/main/scene_tree.cpp
+#: scene/main/scene_tree.cpp scene/register_scene_types.cpp
msgid "Common"
msgstr ""
@@ -14798,7 +15255,7 @@ msgid "Verbose stdout"
msgstr ""
#: main/main.cpp
-msgid "Frame Delay (msec)"
+msgid "Frame Delay Msec"
msgstr ""
#: main/main.cpp
@@ -14915,11 +15372,6 @@ msgstr ""
msgid "Tooltip Position Offset"
msgstr ""
-#: main/main.cpp modules/mono/editor/csharp_project.cpp
-#: modules/mono/mono_gd/gd_mono.cpp
-msgid "Mono"
-msgstr ""
-
#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp
msgid "Debugger Agent"
msgstr ""
@@ -15437,7 +15889,7 @@ msgstr ""
msgid "Intensity"
msgstr ""
-#: modules/gltf/gltf_light.cpp scene/2d/light_2d.cpp
+#: modules/gltf/gltf_light.cpp scene/2d/light_2d.cpp scene/3d/light.cpp
msgid "Range"
msgstr ""
@@ -15567,10 +16019,6 @@ msgstr ""
msgid "Use Named Skin Binds"
msgstr ""
-#: modules/gltf/gltf_state.cpp scene/3d/physics_joint.cpp
-msgid "Nodes"
-msgstr ""
-
#: modules/gltf/gltf_state.cpp
msgid "Buffer Views"
msgstr ""
@@ -15580,14 +16028,6 @@ msgid "Accessors"
msgstr ""
#: modules/gltf/gltf_state.cpp
-msgid "Meshes"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp
-msgid "Materials"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp
msgid "Scene Name"
msgstr ""
@@ -15601,15 +16041,11 @@ msgstr ""
msgid "Textures"
msgstr ""
-#: modules/gltf/gltf_state.cpp
+#: modules/gltf/gltf_state.cpp platform/uwp/export/export.cpp
msgid "Images"
msgstr ""
#: modules/gltf/gltf_state.cpp
-msgid "Skins"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp
msgid "Cameras"
msgstr ""
@@ -15638,10 +16074,14 @@ msgid "Src Image"
msgstr ""
#: modules/gridmap/grid_map.cpp
-msgid "Physics Material"
+msgid "Mesh Library"
msgstr ""
#: modules/gridmap/grid_map.cpp
+msgid "Physics Material"
+msgstr ""
+
+#: modules/gridmap/grid_map.cpp scene/3d/visual_instance.cpp
msgid "Use In Baked Light"
msgstr ""
@@ -15668,6 +16108,7 @@ msgstr ""
#: modules/gridmap/grid_map.cpp scene/2d/collision_object_2d.cpp
#: scene/2d/tile_map.cpp scene/3d/collision_object.cpp scene/3d/soft_body.cpp
+#: scene/resources/material.cpp
msgid "Mask"
msgstr ""
@@ -15848,7 +16289,9 @@ msgid "Ultra Quality Ray Count"
msgstr ""
#: modules/minimp3/audio_stream_mp3.cpp
+#: modules/minimp3/resource_importer_mp3.cpp
#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp
+#: modules/stb_vorbis/resource_importer_ogg_vorbis.cpp
msgid "Loop Offset"
msgstr ""
@@ -16870,6 +17313,162 @@ msgid "The package must have at least one '.' separator."
msgstr ""
#: platform/android/export/export_plugin.cpp
+msgid "Use Custom Build"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Export Format"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Keystore"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Debug User"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+msgid "Debug Password"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Release User"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Release Password"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "One Click Deploy"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Clear Previous Install"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp scene/resources/shader.cpp
+msgid "Code"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Min SDK"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Target SDK"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+msgid "Package"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+msgid "Unique Name"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Signed"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Classify As Game"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Retain Data On Uninstall"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Exclude From Recents"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Graphics"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "OpenGL Debug"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "XR Features"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "XR Mode"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Hand Tracking"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Hand Tracking Frequency"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Passthrough"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Immersive Mode"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Support Small"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Support Normal"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Support Large"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Support Xlarge"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "User Data Backup"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Allow"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+msgid "Command Line"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+msgid "Extra Args"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "APK Expansion"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Salt"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Public Key"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Permissions"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Custom Permissions"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
msgid "Select device from the list"
msgstr ""
@@ -17155,6 +17754,160 @@ msgid "The character '%s' is not allowed in Identifier."
msgstr ""
#: platform/iphone/export/export.cpp
+msgid "App Store Team ID"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Provisioning Profile UUID Debug"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Code Sign Identity Debug"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Export Method Debug"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Provisioning Profile UUID Release"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Code Sign Identity Release"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Export Method Release"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Targeted Device Family"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Info"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Identifier"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Signature"
+msgstr "Amẓ"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Short Version"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/windows/export/export.cpp
+msgid "Copyright"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Capabilities"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Access Wi-Fi"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Push Notifications"
+msgstr ""
+
+#: platform/iphone/export/export.cpp scene/3d/baked_lightmap.cpp
+msgid "User Data"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Accessible From Files App"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Accessible From Itunes Sharing"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Privacy"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Camera Usage Description"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Microphone Usage Description"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Photolibrary Usage Description"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPhone 120 X 120"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPhone 180 X 180"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 76 X 76"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 152 X 152"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 167 X 167"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "App Store 1024 X 1024"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Spotlight 40 X 40"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Spotlight 80 X 80"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Storyboard"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Use Launch Screen Storyboard"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Image Scale Mode"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Custom Image @2x"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Custom Image @3x"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Use Custom BG Color"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Custom BG Color"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
msgid "App Store Team ID not specified - cannot configure the project."
msgstr ""
@@ -17191,6 +17944,74 @@ msgid "Could not read file:"
msgstr ""
#: platform/javascript/export/export.cpp
+msgid "Variant"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Export Type"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "VRAM Texture Compression"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "For Desktop"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "For Mobile"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Html"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Export Icon"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Custom Html Shell"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Head Include"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Canvas Resize Policy"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Focus Canvas On Start"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Experimental Virtual Keyboard"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Progressive Web App"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Offline Page"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 144 X 144"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 180 X 180"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 512 X 512"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
msgid "Could not read HTML shell:"
msgstr ""
@@ -17295,6 +18116,176 @@ msgid "Unknown object type."
msgstr ""
#: platform/osx/export/export.cpp
+msgid "App Category"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "High Res"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Location Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Address Book Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Calendar Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Photos Library Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Desktop Folder Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Documents Folder Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Downloads Folder Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Network Volumes Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Removable Volumes Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+msgid "Codesign"
+msgstr ""
+
+#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
+#: platform/windows/export/export.cpp
+msgid "Identity"
+msgstr ""
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#, fuzzy
+msgid "Timestamp"
+msgstr "Akud:"
+
+#: platform/osx/export/export.cpp
+msgid "Hardened Runtime"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Replace Existing Signature"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Entitlements"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Custom File"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Allow JIT Code Execution"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Allow Unsigned Executable Memory"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Allow Dyld Environment Variables"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Disable Library Validation"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Audio Input"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Address Book"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Calendars"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Photos Library"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Apple Events"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Debugging"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "App Sandbox"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Network Server"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Network Client"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Device Usb"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Device Bluetooth"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Files Downloads"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Files Pictures"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Files Music"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Files Movies"
+msgstr ""
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+msgid "Custom Options"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Apple ID Name"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Apple ID Password"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Apple Team ID"
+msgstr ""
+
+#: platform/osx/export/export.cpp
msgid ""
"Note: The notarization process generally takes less than an hour. When the "
"process is completed, you'll receive an email."
@@ -17484,6 +18475,122 @@ msgid "Force Builtin Codesign"
msgstr ""
#: platform/uwp/export/export.cpp
+msgid "Architecture"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Display Name"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Short Name"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Publisher"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Publisher Display Name"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Product Guid"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Publisher Guid"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Signing"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Certificate"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Algorithm"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Major"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Minor"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Build"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Revision"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Landscape"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Portrait"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Landscape Flipped"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Portrait Flipped"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Store Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 44 X 44 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 71 X 71 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 150 X 150 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 310 X 310 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Wide 310 X 150 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Splash Screen"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Tiles"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Square 150 X 150"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Wide 310 X 150"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Square 310 X 310"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
msgid "Invalid package short name."
msgstr ""
@@ -17548,11 +18655,43 @@ msgid "Debug Certificate"
msgstr ""
#: platform/uwp/export/export.cpp
-msgid "Debug Password"
+msgid "Debug Algorithm"
msgstr ""
-#: platform/uwp/export/export.cpp
-msgid "Debug Algorithm"
+#: platform/windows/export/export.cpp
+msgid "Identity Type"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Timestamp Server URL"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Digest Algorithm"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "File Version"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Product Version"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Company Name"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Product Name"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "File Description"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Trademarks"
msgstr ""
#: platform/windows/export/export.cpp
@@ -17619,12 +18758,14 @@ msgstr ""
msgid "Centered"
msgstr ""
-#: scene/2d/animated_sprite.cpp scene/2d/camera_2d.cpp scene/2d/light_2d.cpp
+#: scene/2d/animated_sprite.cpp scene/2d/camera_2d.cpp
+#: scene/2d/cpu_particles_2d.cpp scene/2d/light_2d.cpp
#: scene/2d/parallax_background.cpp scene/2d/parallax_layer.cpp
#: scene/2d/path_2d.cpp scene/2d/polygon_2d.cpp scene/2d/sprite.cpp
-#: scene/3d/path.cpp scene/3d/physics_body.cpp scene/3d/sprite_3d.cpp
-#: scene/gui/graph_node.cpp scene/gui/rich_text_effect.cpp
-#: scene/main/canvas_layer.cpp scene/resources/material.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/path.cpp scene/3d/physics_body.cpp
+#: scene/3d/sprite_3d.cpp scene/gui/graph_node.cpp
+#: scene/gui/rich_text_effect.cpp scene/main/canvas_layer.cpp
+#: scene/resources/material.cpp scene/resources/particles_material.cpp
#: scene/resources/style_box.cpp
msgid "Offset"
msgstr ""
@@ -17688,11 +18829,6 @@ msgstr ""
msgid "Override"
msgstr ""
-#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
-#: scene/audio/audio_stream_player.cpp scene/gui/video_player.cpp
-msgid "Stream"
-msgstr ""
-
#: scene/2d/audio_stream_player_2d.cpp scene/audio/audio_stream_player.cpp
#: scene/gui/video_player.cpp servers/audio/effects/audio_effect_amplify.cpp
msgid "Volume dB"
@@ -17716,12 +18852,12 @@ msgid "Stream Paused"
msgstr ""
#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
-#: scene/3d/reflection_probe.cpp scene/3d/visual_instance.cpp
-#: scene/resources/material.cpp
+#: scene/3d/light.cpp scene/3d/reflection_probe.cpp
+#: scene/3d/visual_instance.cpp scene/resources/material.cpp
msgid "Max Distance"
msgstr ""
-#: scene/2d/audio_stream_player_2d.cpp
+#: scene/2d/audio_stream_player_2d.cpp scene/3d/light.cpp
msgid "Attenuation"
msgstr ""
@@ -17768,6 +18904,21 @@ msgstr ""
msgid "Limit"
msgstr ""
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/style_box.cpp
+msgid "Left"
+msgstr ""
+
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/style_box.cpp
+msgid "Right"
+msgstr ""
+
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/dynamic_font.cpp scene/resources/style_box.cpp
+msgid "Bottom"
+msgstr ""
+
#: scene/2d/camera_2d.cpp
msgid "Smoothed"
msgstr ""
@@ -17961,12 +19112,6 @@ msgstr ""
msgid "Emitting"
msgstr ""
-#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp scene/3d/area.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
-#: scene/resources/environment.cpp
-msgid "Amount"
-msgstr ""
-
#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp
#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
msgid "Lifetime"
@@ -18026,17 +19171,12 @@ msgstr ""
#: scene/2d/mesh_instance_2d.cpp scene/2d/multimesh_instance_2d.cpp
#: scene/2d/particles_2d.cpp scene/2d/polygon_2d.cpp scene/2d/sprite.cpp
#: scene/3d/sprite_3d.cpp scene/gui/nine_patch_rect.cpp
-#: scene/gui/texture_rect.cpp scene/resources/sky.cpp
-#: scene/resources/style_box.cpp scene/resources/visual_shader_nodes.cpp
+#: scene/gui/texture_rect.cpp scene/resources/material.cpp
+#: scene/resources/sky.cpp scene/resources/style_box.cpp
+#: scene/resources/visual_shader_nodes.cpp
msgid "Texture"
msgstr ""
-#: scene/2d/cpu_particles_2d.cpp scene/2d/mesh_instance_2d.cpp
-#: scene/2d/multimesh_instance_2d.cpp scene/2d/particles_2d.cpp
-#: scene/2d/sprite.cpp scene/resources/style_box.cpp
-msgid "Normal Map"
-msgstr ""
-
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
msgid "Emission Shape"
@@ -18056,9 +19196,8 @@ msgid "Normals"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/3d/sprite_3d.cpp scene/resources/material.cpp
-#: scene/resources/particles_material.cpp scene/resources/texture.cpp
-msgid "Flags"
+#: scene/resources/particles_material.cpp
+msgid "Align Y"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
@@ -18078,6 +19217,11 @@ msgid "Initial Velocity"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Velocity Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp servers/physics_2d_server.cpp
#: servers/physics_server.cpp
msgid "Angular Velocity"
@@ -18085,6 +19229,11 @@ msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+msgid "Velocity Curve"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
msgid "Orbit Velocity"
msgstr ""
@@ -18095,6 +19244,21 @@ msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+msgid "Accel"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Accel Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Accel Curve"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
msgid "Radial Accel"
msgstr ""
@@ -18104,19 +19268,51 @@ msgid "Tangential Accel"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/2d/joints_2d.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/vehicle_body.cpp
-#: scene/resources/particles_material.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/physics_joint.cpp
+#: scene/3d/vehicle_body.cpp scene/resources/particles_material.cpp
#: servers/audio/effects/audio_effect_reverb.cpp
msgid "Damping"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+msgid "Damping Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Damping Curve"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp scene/3d/light.cpp
+#: scene/resources/particles_material.cpp
msgid "Angle"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+msgid "Angle Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Angle Curve"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+msgid "Scale Amount"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+msgid "Scale Amount Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+msgid "Scale Amount Curve"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
msgid "Color Ramp"
msgstr ""
@@ -18130,6 +19326,41 @@ msgstr ""
msgid "Hue Variation"
msgstr ""
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Variation"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Variation Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Variation Curve"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Speed Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Speed Curve"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Offset Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Offset Curve"
+msgstr ""
+
#: scene/2d/joints_2d.cpp
msgid "Node A and Node B must be PhysicsBody2Ds"
msgstr ""
@@ -18159,6 +19390,7 @@ msgid "Node B"
msgstr ""
#: scene/2d/joints_2d.cpp scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp
+#: scene/3d/light.cpp scene/3d/physics_joint.cpp
#: scene/resources/environment.cpp
msgid "Bias"
msgstr ""
@@ -18167,7 +19399,7 @@ msgstr ""
msgid "Disable Collision"
msgstr ""
-#: scene/2d/joints_2d.cpp
+#: scene/2d/joints_2d.cpp scene/3d/physics_joint.cpp
msgid "Softness"
msgstr ""
@@ -18184,7 +19416,7 @@ msgstr ""
msgid "Rest Length"
msgstr ""
-#: scene/2d/joints_2d.cpp scene/3d/vehicle_body.cpp
+#: scene/2d/joints_2d.cpp scene/3d/physics_joint.cpp scene/3d/vehicle_body.cpp
msgid "Stiffness"
msgstr ""
@@ -18203,7 +19435,7 @@ msgid "Texture Scale"
msgstr ""
#: scene/2d/light_2d.cpp scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp
-#: scene/resources/environment.cpp scene/resources/sky.cpp
+#: scene/3d/light.cpp scene/resources/environment.cpp scene/resources/sky.cpp
msgid "Energy"
msgstr ""
@@ -18239,11 +19471,6 @@ msgstr ""
msgid "Gradient Length"
msgstr ""
-#: scene/2d/light_2d.cpp scene/gui/control.cpp
-#: scene/resources/navigation_mesh.cpp
-msgid "Filter"
-msgstr ""
-
#: scene/2d/light_2d.cpp
msgid "Filter Smooth"
msgstr ""
@@ -18615,10 +19842,6 @@ msgid "Applied Forces"
msgstr ""
#: scene/2d/physics_body_2d.cpp
-msgid "Force"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp
msgid "Torque"
msgstr ""
@@ -18631,7 +19854,7 @@ msgid "Sync To Physics"
msgstr ""
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-msgid "Moving platform"
+msgid "Moving Platform"
msgstr ""
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
@@ -18640,7 +19863,7 @@ msgstr ""
#: scene/2d/physics_body_2d.cpp scene/2d/touch_screen_button.cpp
#: scene/3d/physics_body.cpp scene/gui/texture_button.cpp
-#: scene/resources/line_shape_2d.cpp
+#: scene/resources/line_shape_2d.cpp scene/resources/material.cpp
msgid "Normal"
msgstr ""
@@ -18847,6 +20070,30 @@ msgid ""
"as parent."
msgstr ""
+#: scene/2d/visibility_notifier_2d.cpp scene/3d/visibility_notifier.cpp
+msgid "Pause Animations"
+msgstr ""
+
+#: scene/2d/visibility_notifier_2d.cpp scene/3d/visibility_notifier.cpp
+msgid "Freeze Bodies"
+msgstr ""
+
+#: scene/2d/visibility_notifier_2d.cpp
+msgid "Pause Particles"
+msgstr ""
+
+#: scene/2d/visibility_notifier_2d.cpp
+msgid "Pause Animated Sprites"
+msgstr ""
+
+#: scene/2d/visibility_notifier_2d.cpp
+msgid "Process Parent"
+msgstr ""
+
+#: scene/2d/visibility_notifier_2d.cpp
+msgid "Physics Process Parent"
+msgstr ""
+
#: scene/3d/area.cpp
msgid "Reverb Bus"
msgstr ""
@@ -18936,6 +20183,7 @@ msgid "Attenuation Filter"
msgstr ""
#: scene/3d/audio_stream_player_3d.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
#: servers/audio/effects/audio_effect_filter.cpp
msgid "Cutoff Hz"
msgstr ""
@@ -18975,10 +20223,6 @@ msgid "Octree"
msgstr ""
#: scene/3d/baked_lightmap.cpp
-msgid "User Data"
-msgstr ""
-
-#: scene/3d/baked_lightmap.cpp
msgid "Finding meshes and lights"
msgstr ""
@@ -19209,6 +20453,14 @@ msgid "Ring Axis"
msgstr ""
#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
+msgid "Rotate Y"
+msgstr ""
+
+#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
+msgid "Disable Z"
+msgstr ""
+
+#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
msgid "Flatness"
msgstr ""
@@ -19244,15 +20496,11 @@ msgstr ""
msgid "Dynamic Range"
msgstr ""
-#: scene/3d/gi_probe.cpp
+#: scene/3d/gi_probe.cpp scene/3d/light.cpp
msgid "Normal Bias"
msgstr ""
#: scene/3d/gi_probe.cpp
-msgid "Compress"
-msgstr ""
-
-#: scene/3d/gi_probe.cpp
msgid "Plotting Meshes"
msgstr ""
@@ -19278,14 +20526,26 @@ msgid "Subdiv"
msgstr ""
#: scene/3d/light.cpp
+msgid "Indirect Energy"
+msgstr ""
+
+#: scene/3d/light.cpp
msgid "Negative"
msgstr ""
#: scene/3d/light.cpp
+msgid "Specular"
+msgstr ""
+
+#: scene/3d/light.cpp
msgid "Bake Mode"
msgstr ""
#: scene/3d/light.cpp
+msgid "Contact"
+msgstr ""
+
+#: scene/3d/light.cpp
msgid "Reverse Cull Face"
msgstr ""
@@ -19294,10 +20554,26 @@ msgid "Directional Shadow"
msgstr ""
#: scene/3d/light.cpp
+msgid "Split 1"
+msgstr ""
+
+#: scene/3d/light.cpp
+msgid "Split 2"
+msgstr ""
+
+#: scene/3d/light.cpp
+msgid "Split 3"
+msgstr ""
+
+#: scene/3d/light.cpp
msgid "Blend Splits"
msgstr ""
#: scene/3d/light.cpp
+msgid "Bias Split Scale"
+msgstr ""
+
+#: scene/3d/light.cpp
msgid "Depth Range"
msgstr ""
@@ -19321,6 +20597,10 @@ msgstr ""
msgid "Spot"
msgstr ""
+#: scene/3d/light.cpp
+msgid "Angle Attenuation"
+msgstr ""
+
#: scene/3d/mesh_instance.cpp
msgid "Software Skinning"
msgstr ""
@@ -19437,6 +20717,54 @@ msgid "Axis Lock"
msgstr ""
#: scene/3d/physics_body.cpp
+msgid "Linear X"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Linear Y"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Linear Z"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Angular X"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Angular Y"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Angular Z"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Motion X"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Motion Y"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Motion Z"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Move Lock X"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Move Lock Y"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Move Lock Z"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
msgid "Body Offset"
msgstr ""
@@ -19469,6 +20797,14 @@ msgid "Exclude Nodes"
msgstr ""
#: scene/3d/physics_joint.cpp
+msgid "Params"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Impulse Clamp"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit"
msgstr ""
@@ -19480,6 +20816,47 @@ msgstr ""
msgid "Lower"
msgstr ""
+#: scene/3d/physics_joint.cpp scene/3d/vehicle_body.cpp
+msgid "Relaxation"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Motor"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Target Velocity"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Max Impulse"
+msgstr "Azal:"
+
+#: scene/3d/physics_joint.cpp
+msgid "Linear Limit"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Upper Distance"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Lower Distance"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Restitution"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Linear Motion"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Linear Ortho"
+msgstr ""
+
#: scene/3d/physics_joint.cpp
msgid "Upper Angle"
msgstr ""
@@ -19489,6 +20866,14 @@ msgid "Lower Angle"
msgstr ""
#: scene/3d/physics_joint.cpp
+msgid "Angular Motion"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Ortho"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
msgid "Swing Span"
msgstr ""
@@ -19497,17 +20882,89 @@ msgid "Twist Span"
msgstr ""
#: scene/3d/physics_joint.cpp
+msgid "Linear Limit X"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Linear Motor X"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Force Limit"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Linear Spring X"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Equilibrium Point"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit X"
msgstr ""
#: scene/3d/physics_joint.cpp
+msgid "Erp"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Motor X"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Spring X"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Linear Limit Y"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Linear Motor Y"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Linear Spring Y"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit Y"
msgstr ""
#: scene/3d/physics_joint.cpp
+msgid "Angular Motor Y"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Spring Y"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Linear Limit Z"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Linear Motor Z"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Linear Spring Z"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit Z"
msgstr ""
+#: scene/3d/physics_joint.cpp
+msgid "Angular Motor Z"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Spring Z"
+msgstr ""
+
#: scene/3d/portal.cpp
msgid "The RoomManager should not be a child or grandchild of a Portal."
msgstr ""
@@ -19612,7 +21069,7 @@ msgstr ""
msgid "Use Default Simplify"
msgstr ""
-#: scene/3d/room.cpp
+#: scene/3d/room.cpp scene/3d/room_manager.cpp
msgid "Room Simplify"
msgstr ""
@@ -19650,6 +21107,12 @@ msgstr ""
msgid "Main"
msgstr ""
+#: scene/3d/room_manager.cpp scene/animation/animation_player.cpp
+#: scene/animation/animation_tree.cpp scene/animation/animation_tree_player.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+msgid "Active"
+msgstr ""
+
#: scene/3d/room_manager.cpp
msgid "Roomlist"
msgstr ""
@@ -19671,6 +21134,46 @@ msgid "Gameplay"
msgstr ""
#: scene/3d/room_manager.cpp
+msgid "Gameplay Monitor"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "Use Secondary PVS"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "Merge Meshes"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "Show Margins"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "Debug Sprawl"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "Overlap Warning Threshold"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "Preview Camera"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "Portal Depth Limit"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "Default Portal Margin"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "Roaming Expansion Margin"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
msgid ""
"RoomList path is invalid.\n"
"Please check the RoomList branch has been assigned in the RoomManager."
@@ -19789,6 +21292,18 @@ msgstr ""
msgid "Billboard"
msgstr ""
+#: scene/3d/sprite_3d.cpp scene/resources/material.cpp
+msgid "Transparent"
+msgstr ""
+
+#: scene/3d/sprite_3d.cpp
+msgid "Shaded"
+msgstr ""
+
+#: scene/3d/sprite_3d.cpp
+msgid "Double Sided"
+msgstr ""
+
#: scene/3d/sprite_3d.cpp
msgid "Alpha Cut"
msgstr ""
@@ -19853,10 +21368,6 @@ msgstr ""
msgid "Max Force"
msgstr ""
-#: scene/3d/vehicle_body.cpp
-msgid "Relaxation"
-msgstr ""
-
#: scene/3d/visibility_notifier.cpp
msgid "AABB"
msgstr ""
@@ -19978,7 +21489,7 @@ msgid "Fadeout Time"
msgstr ""
#: scene/animation/animation_blend_tree.cpp
-msgid "autorestart_"
+msgid "Auto Restart"
msgstr ""
#: scene/animation/animation_blend_tree.cpp
@@ -20050,12 +21561,6 @@ msgstr ""
msgid "Default Blend Time"
msgstr ""
-#: scene/animation/animation_player.cpp scene/animation/animation_tree.cpp
-#: scene/animation/animation_tree_player.cpp
-#: servers/audio/effects/audio_effect_delay.cpp
-msgid "Active"
-msgstr ""
-
#: scene/animation/animation_player.cpp
msgid "Method Call Mode"
msgstr ""
@@ -20164,10 +21669,6 @@ msgstr ""
msgid "Max Iterations"
msgstr ""
-#: scene/animation/tween.cpp scene/resources/texture.cpp
-msgid "Repeat"
-msgstr ""
-
#: scene/animation/tween.cpp
msgid "Playback Process Mode"
msgstr ""
@@ -20194,18 +21695,6 @@ msgstr ""
msgid "Alignment"
msgstr ""
-#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
-#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
-#: scene/resources/style_box.cpp
-msgid "Horizontal"
-msgstr ""
-
-#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
-#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
-#: scene/resources/style_box.cpp
-msgid "Vertical"
-msgstr ""
-
#: scene/gui/base_button.cpp
msgid "Shortcut In Tooltip"
msgstr ""
@@ -20291,10 +21780,6 @@ msgid "HSV"
msgstr ""
#: scene/gui/color_picker.cpp
-msgid "Raw"
-msgstr ""
-
-#: scene/gui/color_picker.cpp
msgid "Switch between hexadecimal and code values."
msgstr ""
@@ -20348,6 +21833,30 @@ msgid "Focus"
msgstr ""
#: scene/gui/control.cpp
+msgid "Neighbour Left"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Neighbour Top"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Neighbour Right"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Neighbour Bottom"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Next"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Previous"
+msgstr ""
+
+#: scene/gui/control.cpp
msgid "Mouse"
msgstr ""
@@ -20380,7 +21889,7 @@ msgid "Dialog"
msgstr ""
#: scene/gui/dialogs.cpp
-msgid "Hide On Ok"
+msgid "Hide On OK"
msgstr ""
#: scene/gui/dialogs.cpp scene/gui/label.cpp
@@ -20466,7 +21975,7 @@ msgid "Timers"
msgstr "Akud:"
#: scene/gui/item_list.cpp scene/gui/popup_menu.cpp scene/gui/tree.cpp
-msgid "Incremental Search Max Interval (msec)"
+msgid "Incremental Search Max Interval Msec"
msgstr ""
#: scene/gui/item_list.cpp scene/gui/tree.cpp
@@ -20967,6 +22476,22 @@ msgstr ""
msgid "Nine Patch Stretch"
msgstr ""
+#: scene/gui/texture_progress.cpp
+msgid "Stretch Margin Left"
+msgstr ""
+
+#: scene/gui/texture_progress.cpp
+msgid "Stretch Margin Top"
+msgstr ""
+
+#: scene/gui/texture_progress.cpp
+msgid "Stretch Margin Right"
+msgstr ""
+
+#: scene/gui/texture_progress.cpp
+msgid "Stretch Margin Bottom"
+msgstr ""
+
#: scene/gui/tree.cpp
msgid "Custom Minimum Height"
msgstr ""
@@ -21000,7 +22525,7 @@ msgid "Paused"
msgstr ""
#: scene/gui/video_player.cpp
-msgid "Buffering (msec)"
+msgid "Buffering Msec"
msgstr ""
#: scene/gui/video_player.cpp
@@ -21305,6 +22830,22 @@ msgid "Shadow Atlas"
msgstr ""
#: scene/main/viewport.cpp
+msgid "Quad 0"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 1"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 2"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 3"
+msgstr ""
+
+#: scene/main/viewport.cpp
msgid "Canvas Transform"
msgstr ""
@@ -21317,6 +22858,10 @@ msgid "Tooltip Delay (sec)"
msgstr ""
#: scene/register_scene_types.cpp
+msgid "Swap OK Cancel"
+msgstr ""
+
+#: scene/register_scene_types.cpp
msgid "Use hiDPI"
msgstr ""
@@ -21329,18 +22874,6 @@ msgid "Custom Font"
msgstr ""
#: scene/resources/audio_stream_sample.cpp
-msgid "Loop Mode"
-msgstr ""
-
-#: scene/resources/audio_stream_sample.cpp
-msgid "Loop Begin"
-msgstr ""
-
-#: scene/resources/audio_stream_sample.cpp
-msgid "Loop End"
-msgstr ""
-
-#: scene/resources/audio_stream_sample.cpp
#: servers/audio/effects/audio_stream_generator.cpp servers/audio_server.cpp
msgid "Mix Rate"
msgstr ""
@@ -21390,6 +22923,15 @@ msgid "Extra Spacing"
msgstr ""
#: scene/resources/dynamic_font.cpp
+msgid "Char"
+msgstr ""
+
+#: scene/resources/dynamic_font.cpp scene/resources/world.cpp
+#: scene/resources/world_2d.cpp
+msgid "Space"
+msgstr ""
+
+#: scene/resources/dynamic_font.cpp
msgid "Font"
msgstr ""
@@ -21586,6 +23128,42 @@ msgid "Glow"
msgstr ""
#: scene/resources/environment.cpp
+msgid "Levels"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "1"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "2"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "3"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "4"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "5"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "6"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "7"
+msgstr ""
+
+#: scene/resources/environment.cpp
msgid "Bloom"
msgstr ""
@@ -21666,9 +23244,61 @@ msgid "Next Pass"
msgstr ""
#: scene/resources/material.cpp
+msgid "Use Shadow To Opacity"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Unshaded"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Vertex Lighting"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "No Depth Test"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Use Point Size"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "World Triplanar"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Fixed Size"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Albedo Tex Force sRGB"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Do Not Receive Shadows"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Disable Ambient Light"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Ensure Correct Normals"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Vertex Color"
msgstr ""
+#: scene/resources/material.cpp
+msgid "Use As Albedo"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Is sRGB"
+msgstr ""
+
#: scene/resources/material.cpp servers/visual_server.cpp
msgid "Parameters"
msgstr ""
@@ -21698,6 +23328,10 @@ msgid "Billboard Mode"
msgstr ""
#: scene/resources/material.cpp
+msgid "Billboard Keep Scale"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Grow"
msgstr ""
@@ -21706,6 +23340,10 @@ msgid "Grow Amount"
msgstr ""
#: scene/resources/material.cpp
+msgid "Use Alpha Scissor"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Alpha Scissor Threshold"
msgstr ""
@@ -21734,10 +23372,18 @@ msgid "Metallic Specular"
msgstr ""
#: scene/resources/material.cpp
+msgid "Metallic Texture"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Metallic Texture Channel"
msgstr ""
#: scene/resources/material.cpp
+msgid "Roughness Texture"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Roughness Texture Channel"
msgstr ""
@@ -21754,6 +23400,14 @@ msgid "Emission Operator"
msgstr ""
#: scene/resources/material.cpp
+msgid "Emission On UV2"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Emission Texture"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "NormalMap"
msgstr ""
@@ -21766,6 +23420,10 @@ msgid "Rim Tint"
msgstr ""
#: scene/resources/material.cpp
+msgid "Rim Texture"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Clearcoat"
msgstr ""
@@ -21774,14 +23432,26 @@ msgid "Clearcoat Gloss"
msgstr ""
#: scene/resources/material.cpp
+msgid "Clearcoat Texture"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Anisotropy"
msgstr ""
#: scene/resources/material.cpp
+msgid "Anisotropy Flowmap"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Ambient Occlusion"
msgstr ""
#: scene/resources/material.cpp
+msgid "On UV2"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Texture Channel"
msgstr ""
@@ -21816,6 +23486,10 @@ msgid "Transmission"
msgstr ""
#: scene/resources/material.cpp
+msgid "Transmission Texture"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Refraction"
msgstr ""
@@ -21832,6 +23506,10 @@ msgid "UV1"
msgstr ""
#: scene/resources/material.cpp
+msgid "Triplanar"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Triplanar Sharpness"
msgstr ""
@@ -22015,6 +23693,14 @@ msgstr ""
msgid "Point Count"
msgstr ""
+#: scene/resources/particles_material.cpp
+msgid "Scale Random"
+msgstr ""
+
+#: scene/resources/particles_material.cpp
+msgid "Scale Curve"
+msgstr ""
+
#: scene/resources/physics_material.cpp
msgid "Rough"
msgstr ""
@@ -22072,10 +23758,6 @@ msgid "A"
msgstr ""
#: scene/resources/shader.cpp
-msgid "Code"
-msgstr ""
-
-#: scene/resources/shader.cpp
msgid "Custom Defines"
msgstr ""
@@ -22160,14 +23842,6 @@ msgid "Grow End"
msgstr ""
#: scene/resources/texture.cpp
-msgid "Storage"
-msgstr ""
-
-#: scene/resources/texture.cpp
-msgid "Lossy Quality"
-msgstr ""
-
-#: scene/resources/texture.cpp
msgid "Load Path"
msgstr ""
@@ -22279,10 +23953,6 @@ msgstr ""
msgid "Fallback Environment"
msgstr ""
-#: scene/resources/world.cpp scene/resources/world_2d.cpp
-msgid "Space"
-msgstr ""
-
#: scene/resources/world.cpp
msgid "Scenario"
msgstr ""
@@ -22356,8 +24026,33 @@ msgstr ""
msgid "Wet"
msgstr ""
-#: servers/audio/effects/audio_effect_compressor.cpp
-msgid "Threshold"
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "Voice"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+msgid "Delay (ms)"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_phaser.cpp
+msgid "Rate Hz"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "Depth (ms)"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+msgid "Level dB"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+#: servers/audio/effects/audio_effect_panner.cpp
+msgid "Pan"
msgstr ""
#: servers/audio/effects/audio_effect_compressor.cpp
@@ -22382,19 +24077,6 @@ msgid "Tap 1"
msgstr ""
#: servers/audio/effects/audio_effect_delay.cpp
-msgid "Delay (ms)"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_delay.cpp
-msgid "Level dB"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_delay.cpp
-#: servers/audio/effects/audio_effect_panner.cpp
-msgid "Pan"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_delay.cpp
msgid "Tap 2"
msgstr ""
@@ -22452,10 +24134,6 @@ msgstr ""
msgid "Range Max Hz"
msgstr ""
-#: servers/audio/effects/audio_effect_phaser.cpp
-msgid "Rate Hz"
-msgstr ""
-
#: servers/audio/effects/audio_effect_pitch_shift.cpp
msgid "Oversampling"
msgstr ""
@@ -22470,7 +24148,7 @@ msgid "Predelay"
msgstr ""
#: servers/audio/effects/audio_effect_reverb.cpp
-msgid "(msec)"
+msgid "Msec"
msgstr ""
#: servers/audio/effects/audio_effect_reverb.cpp
diff --git a/editor/translations/uk.po b/editor/translations/uk.po
index 9b4ca34e91..e97b814379 100644
--- a/editor/translations/uk.po
+++ b/editor/translations/uk.po
@@ -18,12 +18,14 @@
# Miroslav <zinmirx@gmail.com>, 2020.
# IllusiveMan196 <hamsterrv@gmail.com>, 2021.
# KazanskiyMaks <kazanskiy.maks@gmail.com>, 2022.
+# МироÑлав <hlopukmyroslav@gmail.com>, 2022.
+# Ostap <ostapbataj79@gmail.com>, 2022.
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: 2022-03-18 08:52+0000\n"
+"PO-Revision-Date: 2022-03-23 04:18+0000\n"
"Last-Translator: Yuri Chornoivan <yurchor@ukr.net>\n"
"Language-Team: Ukrainian <https://hosted.weblate.org/projects/godot-engine/"
"godot/uk/>\n"
@@ -35,61 +37,53 @@ msgstr ""
"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
"X-Generator: Weblate 4.12-dev\n"
-#: core/bind/core_bind.cpp
-#, fuzzy
+#: core/bind/core_bind.cpp main/main.cpp
msgid "Tablet Driver"
-msgstr "Драйвер"
+msgstr "Драйвер планшета"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Clipboard"
-msgstr "Буфер обміну порожній!"
+msgstr "Буфер обміну"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Current Screen"
-msgstr "Поточна Ñцена"
+msgstr "Поточний екран"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Exit Code"
-msgstr "Код"
+msgstr "Код виходу"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "V-Sync Enabled"
-msgstr "Увімкнено"
+msgstr "Увімкнено верт. Ñинхронізацію"
#: core/bind/core_bind.cpp main/main.cpp
msgid "V-Sync Via Compositor"
-msgstr ""
+msgstr "Верт. Ñинхр. через заÑіб композиції"
#: core/bind/core_bind.cpp main/main.cpp
msgid "Delta Smoothing"
-msgstr ""
+msgstr "Ð—Ð³Ð»Ð°Ð´Ð¶ÑƒÐ²Ð°Ð½Ð½Ñ Ñ€Ñ–Ð·Ð½Ð¸Ñ†Ñ–"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Low Processor Usage Mode"
-msgstr "Режим переміщеннÑ"
+msgstr "Режим низького ÑÐ¿Ð¾Ð¶Ð¸Ð²Ð°Ð½Ð½Ñ Ð¿Ñ€Ð¾Ñ†ÐµÑора"
#: core/bind/core_bind.cpp
msgid "Low Processor Usage Mode Sleep (µsec)"
-msgstr ""
+msgstr "ПриÑиплÑÐ½Ð½Ñ Ñƒ режимі низького ÑÐ¿Ð¾Ð¶Ð¸Ð²Ð°Ð½Ð½Ñ Ð¿Ñ€Ð¾Ñ†ÐµÑора (мкÑ)"
#: core/bind/core_bind.cpp main/main.cpp platform/uwp/os_uwp.cpp
msgid "Keep Screen On"
msgstr "Залишити зневаджувач відкритим"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Min Window Size"
-msgstr "Розмір обведеннÑ:"
+msgstr "Мін. розмір вікна"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Max Window Size"
-msgstr "Розмір обведеннÑ:"
+msgstr "МакÑ. розмір вікна"
#: core/bind/core_bind.cpp
msgid "Screen Orientation"
@@ -105,7 +99,7 @@ msgstr "Без рамки"
#: core/bind/core_bind.cpp
msgid "Per Pixel Transparency Enabled"
-msgstr ""
+msgstr "Увімкнено прозоріÑть за пікÑелÑми"
#: core/bind/core_bind.cpp main/main.cpp
msgid "Fullscreen"
@@ -113,12 +107,11 @@ msgstr "Ðа веÑÑŒ екран"
#: core/bind/core_bind.cpp
msgid "Maximized"
-msgstr ""
+msgstr "МакÑимізовано"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Minimized"
-msgstr "Мінімальна ширина:"
+msgstr "Мінімізовано"
#: core/bind/core_bind.cpp main/main.cpp scene/gui/dialogs.cpp
#: scene/gui/graph_node.cpp
@@ -129,15 +122,14 @@ msgstr "Зі зміною розміру"
#: scene/2d/physics_body_2d.cpp scene/2d/remote_transform_2d.cpp
#: scene/3d/physics_body.cpp scene/3d/remote_transform.cpp
#: scene/gui/control.cpp scene/gui/line_edit.cpp
-#, fuzzy
msgid "Position"
-msgstr "ÐŸÐ¾Ð»Ð¾Ð¶ÐµÐ½Ð½Ñ Ð¿Ð°Ð½ÐµÐ»ÐµÐ¹"
+msgstr "РозташуваннÑ"
#: core/bind/core_bind.cpp editor/editor_settings.cpp main/main.cpp
#: modules/gdscript/gdscript_editor.cpp modules/gridmap/grid_map.cpp
#: modules/mono/csharp_script.cpp modules/visual_script/visual_script_nodes.cpp
-#: scene/2d/tile_map.cpp scene/3d/camera.cpp scene/gui/control.cpp
-#: scene/gui/graph_edit.cpp scene/main/viewport.cpp
+#: scene/2d/tile_map.cpp scene/3d/camera.cpp scene/3d/light.cpp
+#: scene/gui/control.cpp scene/gui/graph_edit.cpp scene/main/viewport.cpp
#: scene/resources/dynamic_font.cpp scene/resources/navigation_mesh.cpp
#: scene/resources/primitive_meshes.cpp scene/resources/sky.cpp
#: scene/resources/style_box.cpp scene/resources/texture.cpp
@@ -147,31 +139,27 @@ msgstr "Розмір"
#: core/bind/core_bind.cpp
msgid "Endian Swap"
-msgstr ""
+msgstr "ПереÑтавлÑÐ½Ð½Ñ Ð±Ð°Ð¹Ñ‚Ñ–Ð²"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Editor Hint"
-msgstr "Редактор"
+msgstr "Підказка редактора"
#: core/bind/core_bind.cpp
msgid "Print Error Messages"
-msgstr ""
+msgstr "Виводити Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ð¿Ñ€Ð¾ помилки"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Iterations Per Second"
-msgstr "Режим інтерполÑції"
+msgstr "Ітерацій за Ñекунду"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Target FPS"
-msgstr "ПризначеннÑ"
+msgstr "ЧаÑтота кадрів призначеннÑ"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Time Scale"
-msgstr "Вузол чаÑової шкали"
+msgstr "Шкала чаÑу"
#: core/bind/core_bind.cpp main/main.cpp
msgid "Physics Jitter Fix"
@@ -182,14 +170,12 @@ msgid "Error"
msgstr "Помилка"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Error String"
-msgstr "Помилка збереженнÑ"
+msgstr "РÑдок Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ð¿Ñ€Ð¾ помилку"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Error Line"
-msgstr "Помилка збереженнÑ"
+msgstr "РÑдок помилки"
#: core/bind/core_bind.cpp
msgid "Result"
@@ -236,8 +222,7 @@ msgid "Data"
msgstr "Дані"
#: core/io/file_access_network.cpp core/register_core_types.cpp
-#: editor/editor_settings.cpp editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp main/main.cpp
+#: editor/editor_settings.cpp main/main.cpp
#: modules/gdscript/language_server/gdscript_language_server.cpp
msgid "Network"
msgstr "Мережа"
@@ -256,7 +241,7 @@ msgstr "Випереджальне Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ Ñторінок"
#: core/io/http_client.cpp
msgid "Blocking Mode Enabled"
-msgstr ""
+msgstr "Увімкнено режим блокуваннÑ"
#: core/io/http_client.cpp
msgid "Connection"
@@ -267,18 +252,16 @@ msgid "Read Chunk Size"
msgstr "Розмір фрагмента читаннÑ"
#: core/io/marshalls.cpp
-#, fuzzy
msgid "Object ID"
-msgstr "Ðамальовано об'єктів:"
+msgstr "Ідентифікатор об'єкта"
#: core/io/multiplayer_api.cpp core/io/packet_peer.cpp
-#, fuzzy
msgid "Allow Object Decoding"
-msgstr "Увімкнути калькуваннÑ"
+msgstr "Дозволити Ð´ÐµÐºÐ¾Ð´ÑƒÐ²Ð°Ð½Ð½Ñ Ð¾Ð±'єктів"
#: core/io/multiplayer_api.cpp scene/main/scene_tree.cpp
msgid "Refuse New Network Connections"
-msgstr ""
+msgstr "ВідмовлÑти у нових з'єднаннÑÑ… мережею"
#: core/io/multiplayer_api.cpp scene/main/scene_tree.cpp
msgid "Network Peer"
@@ -286,12 +269,11 @@ msgstr "Вузол мережі"
#: core/io/multiplayer_api.cpp scene/animation/animation_player.cpp
msgid "Root Node"
-msgstr "Ðазва кореневого вузла"
+msgstr "Кореневий вузол"
#: core/io/networked_multiplayer_peer.cpp
-#, fuzzy
msgid "Refuse New Connections"
-msgstr "З'єднаннÑ"
+msgstr "ВідмовлÑти у нових з'єднаннÑÑ…"
#: core/io/networked_multiplayer_peer.cpp
msgid "Transfer Mode"
@@ -299,35 +281,35 @@ msgstr "Режим передаваннÑ"
#: core/io/packet_peer.cpp
msgid "Encode Buffer Max Size"
-msgstr ""
+msgstr "МакÑ. розмір буфера кодуваннÑ"
#: core/io/packet_peer.cpp
msgid "Input Buffer Max Size"
-msgstr ""
+msgstr "МакÑ. розмір буфера введеннÑ"
#: core/io/packet_peer.cpp
msgid "Output Buffer Max Size"
-msgstr ""
+msgstr "МакÑ. розмір буфера виведеннÑ"
#: core/io/packet_peer.cpp
msgid "Stream Peer"
-msgstr ""
+msgstr "Вузол потоку даних"
#: core/io/stream_peer.cpp
msgid "Big Endian"
-msgstr ""
+msgstr "Зворотний"
#: core/io/stream_peer.cpp
msgid "Data Array"
-msgstr ""
+msgstr "МаÑив даних"
#: core/io/stream_peer_ssl.cpp
msgid "Blocking Handshake"
-msgstr ""
+msgstr "Ð£Ð·Ð³Ð¾Ð´Ð¶ÐµÐ½Ð½Ñ Ð±Ð»Ð¾ÐºÑƒÐ²Ð°Ð½Ð½Ñ"
#: core/io/udp_server.cpp
msgid "Max Pending Connections"
-msgstr "Редагувати з’єднаннÑ:"
+msgstr "МакÑ. к-ть з'єднань у черзі"
#: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp
#: modules/visual_script/visual_script_builtin_funcs.cpp
@@ -379,12 +361,11 @@ msgstr "При виклику \"%s\":"
#: core/math/random_number_generator.cpp
#: modules/opensimplex/open_simplex_noise.cpp
msgid "Seed"
-msgstr ""
+msgstr "База"
#: core/math/random_number_generator.cpp
-#, fuzzy
msgid "State"
-msgstr "СтатуÑ"
+msgstr "Стан"
#: core/message_queue.cpp
msgid "Message Queue"
@@ -422,7 +403,7 @@ msgstr "ЗавершеннÑ"
#: scene/animation/animation_player.cpp scene/gui/control.cpp
#: scene/main/node.cpp scene/resources/material.cpp
msgid "Use Single Quotes"
-msgstr "Ðова окрема плитка"
+msgstr "Одинарні лапки"
#: core/os/input_event.cpp editor/project_settings_editor.cpp
#: servers/audio_server.cpp
@@ -430,27 +411,24 @@ msgid "Device"
msgstr "ПриÑтрій"
#: core/os/input_event.cpp
-#, fuzzy
msgid "Alt"
-msgstr "Ð’Ñе"
+msgstr "Alt"
#: core/os/input_event.cpp
msgid "Shift"
-msgstr ""
+msgstr "Shift"
#: core/os/input_event.cpp
-#, fuzzy
msgid "Control"
-msgstr "КонтраÑтніÑть"
+msgstr "Ctrl"
#: core/os/input_event.cpp
msgid "Meta"
-msgstr ""
+msgstr "Meta"
#: core/os/input_event.cpp
-#, fuzzy
msgid "Command"
-msgstr "Загальні"
+msgstr "Команда"
#: core/os/input_event.cpp scene/2d/touch_screen_button.cpp
#: scene/gui/base_button.cpp scene/gui/texture_button.cpp
@@ -458,66 +436,59 @@ msgid "Pressed"
msgstr "ÐатиÑнута"
#: core/os/input_event.cpp
-#, fuzzy
msgid "Scancode"
-msgstr "Сканувати"
+msgstr "Сканкод"
#: core/os/input_event.cpp
-#, fuzzy
msgid "Physical Scancode"
-msgstr "Фізична клавіша"
+msgstr "Фізичний Ñканкод"
#: core/os/input_event.cpp
msgid "Unicode"
-msgstr ""
+msgstr "Юнікод"
#: core/os/input_event.cpp
msgid "Echo"
-msgstr ""
+msgstr "Луна"
#: core/os/input_event.cpp scene/gui/base_button.cpp
msgid "Button Mask"
msgstr "Кнопка"
#: core/os/input_event.cpp scene/2d/node_2d.cpp scene/gui/control.cpp
-#, fuzzy
msgid "Global Position"
-msgstr "Загальна Ñтала"
+msgstr "Загальне розташуваннÑ"
#: core/os/input_event.cpp
-#, fuzzy
msgid "Factor"
-msgstr "Вектор"
+msgstr "Множник"
#: core/os/input_event.cpp
-#, fuzzy
msgid "Button Index"
-msgstr "Ð†Ð½Ð´ÐµÐºÑ ÐºÐ½Ð¾Ð¿ÐºÐ¸ миші:"
+msgstr "Ð†Ð½Ð´ÐµÐºÑ ÐºÐ½Ð¾Ð¿ÐºÐ¸"
#: core/os/input_event.cpp
msgid "Doubleclick"
-msgstr ""
+msgstr "Подвійне клацаннÑ"
#: core/os/input_event.cpp
msgid "Tilt"
-msgstr ""
+msgstr "Ðахил"
#: core/os/input_event.cpp
-#, fuzzy
msgid "Pressure"
-msgstr "ÐатиÑнута"
+msgstr "ТиÑк"
#: core/os/input_event.cpp
-#, fuzzy
msgid "Relative"
-msgstr "ВідноÑна прив'Ñзка"
+msgstr "ВідноÑний"
-#: core/os/input_event.cpp scene/2d/camera_2d.cpp
-#: scene/3d/interpolated_camera.cpp scene/animation/animation_player.cpp
-#: scene/resources/environment.cpp
-#, fuzzy
+#: core/os/input_event.cpp scene/2d/camera_2d.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/interpolated_camera.cpp
+#: scene/animation/animation_player.cpp scene/resources/environment.cpp
+#: scene/resources/particles_material.cpp
msgid "Speed"
-msgstr "ШвидкіÑть:"
+msgstr "ШвидкіÑть"
#: core/os/input_event.cpp editor/project_settings_editor.cpp
#: scene/3d/sprite_3d.cpp
@@ -525,9 +496,8 @@ msgid "Axis"
msgstr "Ð’Ñ–ÑÑŒ"
#: core/os/input_event.cpp
-#, fuzzy
msgid "Axis Value"
-msgstr "Мін. значеннÑ"
+msgstr "Ð—Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð²Ñ–ÑÑ–"
#: core/os/input_event.cpp modules/visual_script/visual_script_func_nodes.cpp
msgid "Index"
@@ -546,42 +516,41 @@ msgstr "ПотужніÑть"
#: core/os/input_event.cpp
msgid "Delta"
-msgstr ""
+msgstr "Зміна"
#: core/os/input_event.cpp
-#, fuzzy
msgid "Channel"
-msgstr "Змінити"
+msgstr "Канал"
#: core/os/input_event.cpp main/main.cpp
msgid "Message"
msgstr "ПовідомленнÑ"
#: core/os/input_event.cpp
-#, fuzzy
msgid "Pitch"
-msgstr "Тон:"
+msgstr "ВиÑота тону"
-#: core/os/input_event.cpp scene/2d/physics_body_2d.cpp
-#: scene/3d/physics_body.cpp
-#, fuzzy
+#: core/os/input_event.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/physics_body_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/3d/physics_body.cpp scene/resources/particles_material.cpp
msgid "Velocity"
-msgstr "Орбітальний вид праворуч"
+msgstr "ШвидкіÑть"
#: core/os/input_event.cpp
msgid "Instrument"
-msgstr ""
+msgstr "ІнÑтрумент"
#: core/os/input_event.cpp
-#, fuzzy
msgid "Controller Number"
-msgstr "Ðомер Ñ€Ñдка:"
+msgstr "Ðомер контролера"
#: core/os/input_event.cpp
msgid "Controller Value"
-msgstr ""
+msgstr "Ð—Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ ÐºÐ¾Ð½Ñ‚Ñ€Ð¾Ð»ÐµÑ€Ð°"
#: core/project_settings.cpp editor/editor_node.cpp main/main.cpp
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/windows/export/export.cpp
msgid "Application"
msgstr "Програма"
@@ -591,19 +560,22 @@ msgstr "ÐалаштуваннÑ"
#: core/project_settings.cpp
msgid "Project Settings Override"
-msgstr "Параметри проєкту…"
+msgstr "ÐŸÐµÑ€ÐµÐ²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ñ–Ð² проєкту"
#: core/project_settings.cpp core/resource.cpp
#: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp
#: editor/editor_plugin_settings.cpp editor/editor_profiler.cpp
#: editor/project_manager.cpp editor/settings_config_dialog.cpp
-#: modules/gdnative/nativescript/nativescript.cpp scene/2d/area_2d.cpp
-#: scene/3d/area.cpp scene/main/node.cpp
+#: modules/gdnative/nativescript/nativescript.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/osx/export/export.cpp scene/2d/area_2d.cpp scene/3d/area.cpp
+#: scene/main/node.cpp
msgid "Name"
msgstr "Ðазва"
#: core/project_settings.cpp editor/editor_help.cpp
-#: modules/visual_script/visual_script_nodes.cpp
+#: modules/visual_script/visual_script_nodes.cpp platform/uwp/export/export.cpp
+#: platform/windows/export/export.cpp
msgid "Description"
msgstr "ОпиÑ"
@@ -620,32 +592,32 @@ msgstr "Головна Ñцена"
#: core/project_settings.cpp
msgid "Disable stdout"
-msgstr "Вимкнути автоплитки"
+msgstr "Вимкнути stdout"
#: core/project_settings.cpp
msgid "Disable stderr"
-msgstr "Вимкнений елемент"
+msgstr "Вимкнути stderr"
#: core/project_settings.cpp
msgid "Use Hidden Project Data Directory"
-msgstr ""
+msgstr "Прихований каталог даних проєкту"
#: core/project_settings.cpp
msgid "Use Custom User Dir"
-msgstr ""
+msgstr "Ðетиповий каталог кориÑтувача"
#: core/project_settings.cpp
msgid "Custom User Dir Name"
-msgstr ""
+msgstr "Ðетипова назва каталогу кориÑтувача"
#: core/project_settings.cpp editor/animation_track_editor.cpp
-#: editor/editor_audio_buses.cpp servers/audio_server.cpp
+#: editor/editor_audio_buses.cpp main/main.cpp servers/audio_server.cpp
msgid "Audio"
msgstr "Ðудіо"
#: core/project_settings.cpp
msgid "Default Bus Layout"
-msgstr "Завантажити типове ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð½Ð½Ñ ÑˆÐ¸Ð½Ð¸."
+msgstr "Типове ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð½Ð½Ñ ÑˆÐ¸Ð½Ð¸"
#: core/project_settings.cpp editor/editor_export.cpp
#: editor/editor_file_system.cpp editor/editor_node.cpp
@@ -656,15 +628,15 @@ msgstr "Редактор"
#: core/project_settings.cpp
msgid "Main Run Args"
-msgstr "Ðргументи головної Ñцени:"
+msgstr "Ðргументи оÑновного запуÑку"
#: core/project_settings.cpp
msgid "Search In File Extensions"
-msgstr ""
+msgstr "Ð Ð¾Ð·ÑˆÐ¸Ñ€ÐµÐ½Ð½Ñ Ð¿Ð¾ÑˆÑƒÐºÑƒ у файлах"
#: core/project_settings.cpp
msgid "Script Templates Search Path"
-msgstr ""
+msgstr "ШлÑÑ… пошуку Ð´Ð»Ñ ÑˆÐ°Ð±Ð»Ð¾Ð½Ñ–Ð² Ñкриптів"
#: core/project_settings.cpp editor/editor_node.cpp
#: editor/plugins/version_control_editor_plugin.cpp
@@ -673,24 +645,24 @@ msgstr "ÐšÐµÑ€ÑƒÐ²Ð°Ð½Ð½Ñ Ð²ÐµÑ€ÑÑ–Ñми"
#: core/project_settings.cpp
msgid "Autoload On Startup"
-msgstr ""
+msgstr "Ðвтоматично завантажувати під Ñ‡Ð°Ñ Ð·Ð°Ð¿ÑƒÑку"
#: core/project_settings.cpp
msgid "Plugin Name"
-msgstr "Ðазва додатка:"
+msgstr "Ðазва додатка"
#: core/project_settings.cpp scene/2d/collision_object_2d.cpp
#: scene/3d/collision_object.cpp scene/gui/control.cpp
msgid "Input"
-msgstr "Вхідні дані"
+msgstr "ВведеннÑ"
#: core/project_settings.cpp
msgid "UI Accept"
-msgstr ""
+msgstr "ПрийнÑти"
#: core/project_settings.cpp
msgid "UI Select"
-msgstr "Виділити"
+msgstr "Вибрати"
#: core/project_settings.cpp
msgid "UI Cancel"
@@ -698,43 +670,43 @@ msgstr "СкаÑувати"
#: core/project_settings.cpp
msgid "UI Focus Next"
-msgstr "ФокуÑувати шлÑÑ…"
+msgstr "ФокуÑувати наÑтупний"
#: core/project_settings.cpp
msgid "UI Focus Prev"
-msgstr "ФокуÑувати шлÑÑ…"
+msgstr "ФокуÑувати попередній"
#: core/project_settings.cpp
msgid "UI Left"
-msgstr "Згори ліворуч"
+msgstr "Ліворуч"
#: core/project_settings.cpp
msgid "UI Right"
-msgstr "Згори праворуч"
+msgstr "Праворуч"
#: core/project_settings.cpp
msgid "UI Up"
-msgstr ""
+msgstr "Вгору"
#: core/project_settings.cpp
msgid "UI Down"
-msgstr "ОтриманнÑ"
+msgstr "Вниз"
#: core/project_settings.cpp
msgid "UI Page Up"
-msgstr "Сторінка:"
+msgstr "Ðа Ñторінку вище"
#: core/project_settings.cpp
msgid "UI Page Down"
-msgstr ""
+msgstr "Ðа Ñторінку нижче"
#: core/project_settings.cpp
msgid "UI Home"
-msgstr ""
+msgstr "Домівка"
#: core/project_settings.cpp
msgid "UI End"
-msgstr "Ðа кінець"
+msgstr "Кінець"
#: core/project_settings.cpp main/main.cpp modules/bullet/register_types.cpp
#: modules/bullet/space_bullet.cpp scene/2d/physics_body_2d.cpp
@@ -756,7 +728,7 @@ msgstr "ПроÑторова графіка"
#: core/project_settings.cpp
msgid "Smooth Trimesh Collision"
-msgstr "Створити увігнуту облаÑть зіткненнÑ"
+msgstr "Згладжувати увігнуту облаÑть зіткненнÑ"
#: core/project_settings.cpp drivers/gles2/rasterizer_canvas_base_gles2.cpp
#: drivers/gles2/rasterizer_scene_gles2.cpp
@@ -788,12 +760,15 @@ msgstr "Фільтри"
#: core/project_settings.cpp scene/main/viewport.cpp
msgid "Sharpen Intensity"
-msgstr ""
+msgstr "ІнтенÑивніÑть різкоÑті"
-#: core/project_settings.cpp editor/editor_node.cpp editor/editor_settings.cpp
-#: editor/plugins/script_editor_plugin.cpp editor/project_export.cpp
-#: main/main.cpp modules/gdscript/gdscript.cpp
-#: modules/visual_script/visual_script.cpp scene/3d/room_manager.cpp
+#: core/project_settings.cpp editor/editor_export.cpp editor/editor_node.cpp
+#: editor/editor_settings.cpp editor/plugins/script_editor_plugin.cpp
+#: editor/project_export.cpp main/main.cpp modules/gdscript/gdscript.cpp
+#: modules/visual_script/visual_script.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp scene/3d/room_manager.cpp
#: scene/main/scene_tree.cpp scene/resources/shape_2d.cpp
#: servers/visual_server.cpp
msgid "Debug"
@@ -811,7 +786,7 @@ msgstr "ЗаÑіб профілюваннÑ"
#: core/project_settings.cpp
msgid "Max Functions"
-msgstr "Створити функцію"
+msgstr "МакÑ. функцій"
#: core/project_settings.cpp scene/3d/vehicle_body.cpp
msgid "Compression"
@@ -823,11 +798,11 @@ msgstr "Формати"
#: core/project_settings.cpp
msgid "Zstd"
-msgstr ""
+msgstr "Zstd"
#: core/project_settings.cpp
msgid "Long Distance Matching"
-msgstr ""
+msgstr "ВідповідніÑть удалині"
#: core/project_settings.cpp
msgid "Compression Level"
@@ -835,15 +810,15 @@ msgstr "Рівень ÑтиÑканнÑ"
#: core/project_settings.cpp
msgid "Window Log Size"
-msgstr ""
+msgstr "Розмір журналу вікна"
#: core/project_settings.cpp
msgid "Zlib"
-msgstr ""
+msgstr "Zlib"
#: core/project_settings.cpp
msgid "Gzip"
-msgstr "gzip"
+msgstr "Gzip"
#: core/project_settings.cpp platform/android/export/export.cpp
msgid "Android"
@@ -859,15 +834,15 @@ msgstr "TCP"
#: core/register_core_types.cpp
msgid "Connect Timeout Seconds"
-msgstr "З'Ñ”Ð´Ð½Ð°Ð½Ð½Ñ Ð· методом:"
+msgstr "Ð§Ð°Ñ Ð¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð½Ð½Ñ Ð½Ð° з'Ñ”Ð´Ð½Ð°Ð½Ð½Ñ Ñƒ Ñекундах"
#: core/register_core_types.cpp
msgid "Packet Peer Stream"
-msgstr ""
+msgstr "Пакетний потік вузла"
#: core/register_core_types.cpp
msgid "Max Buffer (Power of 2)"
-msgstr ""
+msgstr "МакÑ. буфер (Ñтепінь 2)"
#: core/register_core_types.cpp editor/editor_settings.cpp main/main.cpp
msgid "SSL"
@@ -884,9 +859,8 @@ msgid "Resource"
msgstr "РеÑурÑ"
#: core/resource.cpp
-#, fuzzy
msgid "Local To Scene"
-msgstr "Закрити Ñцену"
+msgstr "Локальне у Ñцену"
#: core/resource.cpp editor/dependency_editor.cpp
#: editor/editor_autoload_settings.cpp editor/plugins/path_editor_plugin.cpp
@@ -900,7 +874,6 @@ msgid "Source Code"
msgstr "Початковий код"
#: core/translation.cpp
-#, fuzzy
msgid "Messages"
msgstr "ПовідомленнÑ"
@@ -910,11 +883,11 @@ msgstr "Мова"
#: core/translation.cpp
msgid "Test"
-msgstr "Перевірити"
+msgstr "ТеÑÑ‚"
#: core/translation.cpp scene/resources/font.cpp
msgid "Fallback"
-msgstr ""
+msgstr "Резерв"
#: core/ustring.cpp scene/resources/segment_shape_2d.cpp
msgid "B"
@@ -955,12 +928,12 @@ msgstr "Буфери"
#: drivers/gles2/rasterizer_canvas_base_gles2.cpp
#: drivers/gles3/rasterizer_canvas_base_gles3.cpp
msgid "Canvas Polygon Buffer Size (KB)"
-msgstr ""
+msgstr "Розмір буфера полігонів полотна (кБ)"
#: drivers/gles2/rasterizer_canvas_base_gles2.cpp
#: drivers/gles3/rasterizer_canvas_base_gles3.cpp
msgid "Canvas Polygon Index Buffer Size (KB)"
-msgstr ""
+msgstr "Розмір буфера індекÑів багатокутника на полотні (кБ)"
#: drivers/gles2/rasterizer_canvas_base_gles2.cpp
#: drivers/gles3/rasterizer_canvas_base_gles3.cpp editor/editor_settings.cpp
@@ -969,7 +942,7 @@ msgstr ""
#: servers/physics_2d/physics_2d_server_wrap_mt.h
#: servers/physics_2d/space_2d_sw.cpp servers/visual_server.cpp
msgid "2D"
-msgstr "2D"
+msgstr "Двовимірна графіка"
#: drivers/gles2/rasterizer_canvas_base_gles2.cpp
#: drivers/gles3/rasterizer_canvas_base_gles3.cpp
@@ -984,39 +957,40 @@ msgstr "ВикориÑтати Ð¿Ñ€Ð¸Ð»Ð¸Ð¿Ð°Ð½Ð½Ñ Ð´Ð¾ пікÑелів"
#: drivers/gles2/rasterizer_scene_gles2.cpp
#: drivers/gles3/rasterizer_scene_gles3.cpp
msgid "Immediate Buffer Size (KB)"
-msgstr ""
+msgstr "Розмір ближнього буфера (кБ)"
#: drivers/gles2/rasterizer_storage_gles2.cpp
#: drivers/gles3/rasterizer_storage_gles3.cpp
msgid "Lightmapping"
-msgstr "Запікати карти оÑвітленнÑ"
+msgstr "Карта оÑвітленнÑ"
#: drivers/gles2/rasterizer_storage_gles2.cpp
#: drivers/gles3/rasterizer_storage_gles3.cpp
msgid "Use Bicubic Sampling"
-msgstr ""
+msgstr "Бікубічна диÑкретизаціÑ"
#: drivers/gles3/rasterizer_scene_gles3.cpp
msgid "Max Renderable Elements"
-msgstr ""
+msgstr "МакÑ. оброблені елементи"
#: drivers/gles3/rasterizer_scene_gles3.cpp
msgid "Max Renderable Lights"
-msgstr ""
+msgstr "МакÑ. оброблене оÑвітленнÑ"
#: drivers/gles3/rasterizer_scene_gles3.cpp
msgid "Max Renderable Reflections"
-msgstr "Центрувати на вибраному"
+msgstr "МакÑ. оброблені відбиттÑ"
#: drivers/gles3/rasterizer_scene_gles3.cpp
msgid "Max Lights Per Object"
-msgstr ""
+msgstr "МакÑ. Ñвітла на об'єкт"
#: drivers/gles3/rasterizer_scene_gles3.cpp
msgid "Subsurface Scattering"
-msgstr ""
+msgstr "РозÑÑ–ÑŽÐ²Ð°Ð½Ð½Ñ Ð¿Ñ–Ð´Ð¿Ð¾Ð²ÐµÑ€Ñ…Ð¾Ð½ÑŒ"
#: drivers/gles3/rasterizer_scene_gles3.cpp
+#: editor/import/resource_importer_texture.cpp
#: editor/plugins/spatial_editor_plugin.cpp modules/gltf/gltf_node.cpp
#: modules/gridmap/grid_map.cpp scene/2d/cpu_particles_2d.cpp
#: scene/2d/node_2d.cpp scene/2d/parallax_layer.cpp scene/2d/polygon_2d.cpp
@@ -1029,15 +1003,15 @@ msgstr "МаÑштаб"
#: drivers/gles3/rasterizer_scene_gles3.cpp
msgid "Follow Surface"
-msgstr "Заповнити поверхню"
+msgstr "За поверхнею"
#: drivers/gles3/rasterizer_scene_gles3.cpp
msgid "Weight Samples"
-msgstr ""
+msgstr "Зважити Ñемпли"
#: drivers/gles3/rasterizer_scene_gles3.cpp
msgid "Voxel Cone Tracing"
-msgstr ""
+msgstr "ТраÑÑƒÐ²Ð°Ð½Ð½Ñ ÐºÐ¾Ð½ÑƒÑа вокÑелів"
#: drivers/gles3/rasterizer_scene_gles3.cpp scene/resources/environment.cpp
msgid "High Quality"
@@ -1045,7 +1019,7 @@ msgstr "ВиÑока ÑкіÑть"
#: drivers/gles3/rasterizer_storage_gles3.cpp
msgid "Blend Shape Max Buffer Size (KB)"
-msgstr ""
+msgstr "МакÑ. розмір буфера форми Ð·Ð»Ð¸Ñ‚Ñ‚Ñ (кБ)"
#: editor/animation_bezier_editor.cpp
msgid "Free"
@@ -1069,7 +1043,7 @@ msgstr "ЗначеннÑ:"
#: editor/animation_bezier_editor.cpp
msgid "Insert Key Here"
-msgstr "Ð’Ñтавити ключ тут"
+msgstr "Тут можна вÑтавити ключ"
#: editor/animation_bezier_editor.cpp
msgid "Duplicate Selected Key(s)"
@@ -1089,27 +1063,27 @@ msgstr "ПереміÑтити точки Безьє"
#: editor/animation_bezier_editor.cpp editor/animation_track_editor.cpp
msgid "Anim Duplicate Keys"
-msgstr "Дублювати ключі"
+msgstr "Дублювати ключові кадри анімації"
#: editor/animation_bezier_editor.cpp editor/animation_track_editor.cpp
msgid "Anim Delete Keys"
-msgstr "Видалити ключі"
+msgstr "Вилучити ключові кадри анімації"
#: editor/animation_track_editor.cpp
msgid "Anim Change Keyframe Time"
-msgstr "Змінити Ñ‡Ð°Ñ ÐºÐ»ÑŽÑ‡Ð¾Ð²Ð¾Ð³Ð¾ кадру"
+msgstr "Змінити Ñ‡Ð°Ñ ÐºÐ»ÑŽÑ‡Ð¾Ð²Ð¾Ð³Ð¾ кадру анімації"
#: editor/animation_track_editor.cpp
msgid "Anim Change Transition"
-msgstr "Змінити перехід"
+msgstr "Змінити перехід анімації"
#: editor/animation_track_editor.cpp
msgid "Anim Change Transform"
-msgstr "Змінити перетвореннÑ"
+msgstr "Змінити Ð¿ÐµÑ€ÐµÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ð°Ð½Ñ–Ð¼Ð°Ñ†Ñ–Ñ—"
#: editor/animation_track_editor.cpp
msgid "Anim Change Keyframe Value"
-msgstr "Змінити Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ ÐºÐ»ÑŽÑ‡Ð¾Ð²Ð¾Ð³Ð¾ кадру"
+msgstr "Змінити Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ ÐºÐ»ÑŽÑ‡Ð¾Ð²Ð¾Ð³Ð¾ кадру анімації"
#: editor/animation_track_editor.cpp
msgid "Anim Change Call"
@@ -1312,6 +1286,7 @@ msgid "Editors"
msgstr "Редактори"
#: editor/animation_track_editor.cpp editor/editor_settings.cpp
+#: editor/import/resource_importer_scene.cpp
#: editor/plugins/animation_player_editor_plugin.cpp editor/scene_tree_dock.cpp
#: scene/2d/animated_sprite.cpp scene/2d/cpu_particles_2d.cpp
#: scene/2d/sprite.cpp scene/3d/cpu_particles.cpp scene/3d/sprite_3d.cpp
@@ -1322,7 +1297,7 @@ msgstr "ÐнімаціÑ"
#: editor/animation_track_editor.cpp editor/editor_settings.cpp
msgid "Confirm Insert Track"
-msgstr "Ð’Ñтавити доріжку Ñ– ключ анімації"
+msgstr "ÐŸÑ–Ð´Ñ‚Ð²ÐµÑ€Ð´Ð¶ÐµÐ½Ð½Ñ Ð²ÑÑ‚Ð°Ð²Ð»ÐµÐ½Ð½Ñ Ð´Ð¾Ñ€Ñ–Ð¶ÐºÐ¸"
#. TRANSLATORS: %s will be replaced by a phrase describing the target of track.
#: editor/animation_track_editor.cpp
@@ -1469,7 +1444,7 @@ msgstr "Методи"
#: editor/animation_track_editor.cpp
msgid "Bezier"
-msgstr "Крива Безьє"
+msgstr "Безьє"
#: editor/animation_track_editor.cpp
#: modules/visual_script/visual_script_editor.cpp
@@ -1547,14 +1522,14 @@ msgstr "Ð—Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ ÐºÑ€Ð¾ÐºÑƒ анімації."
msgid "Seconds"
msgstr "Секунди"
-#: editor/animation_track_editor.cpp
+#: editor/animation_track_editor.cpp editor/import/resource_importer_scene.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp main/main.cpp
#: scene/resources/texture.cpp
msgid "FPS"
msgstr "Кадри за Ñекунду"
#: editor/animation_track_editor.cpp editor/editor_plugin_settings.cpp
-#: editor/editor_resource_picker.cpp
+#: editor/editor_resource_picker.cpp editor/import/resource_importer_wav.cpp
#: editor/plugins/polygon_2d_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
@@ -2171,10 +2146,9 @@ msgstr "Ведучий розробник"
#. TRANSLATORS: This refers to a job title.
#: editor/editor_about.cpp
-#, fuzzy
msgctxt "Job Title"
msgid "Project Manager"
-msgstr "Керівник проєкту"
+msgstr "ÐšÐµÑ€ÑƒÐ²Ð°Ð½Ð½Ñ Ð¿Ñ€Ð¾Ñ”ÐºÑ‚Ð°Ð¼Ð¸"
#: editor/editor_about.cpp
msgid "Developers"
@@ -2518,7 +2492,9 @@ msgid "Remove Autoload"
msgstr "Видалити автозавантаженнÑ"
#: editor/editor_autoload_settings.cpp editor/editor_plugin_settings.cpp
-#: modules/gdscript/gdscript.cpp scene/2d/polygon_2d.cpp scene/3d/area.cpp
+#: modules/gdscript/gdscript.cpp platform/android/export/export_plugin.cpp
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#: scene/2d/polygon_2d.cpp scene/3d/area.cpp scene/3d/physics_joint.cpp
#: scene/3d/reflection_probe.cpp scene/main/canvas_layer.cpp
#: scene/resources/material.cpp servers/visual_server.cpp
msgid "Enable"
@@ -2687,6 +2663,60 @@ msgstr ""
#: editor/editor_export.cpp platform/android/export/export_plugin.cpp
#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Custom Template"
+msgstr "Ðетипова тема"
+
+#: editor/editor_export.cpp editor/project_export.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp
+msgid "Release"
+msgstr "ВипуÑк"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Binary Format"
+msgstr "Формат кольору"
+
+#: editor/editor_export.cpp
+msgid "64 Bits"
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Embed PCK"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Texture Format"
+msgstr "TextureRegion"
+
+#: editor/editor_export.cpp
+msgid "BPTC"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "S3TC"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "ETC"
+msgstr "TCP"
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "ETC2"
+msgstr ""
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "No BPTC Fallbacks"
+msgstr "Резерв"
+
+#: editor/editor_export.cpp platform/android/export/export_plugin.cpp
+#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
msgid "Custom debug template not found."
msgstr "Ðетипового шаблону діагноÑтики не знайдено."
@@ -2708,7 +2738,7 @@ msgstr ""
#: editor/editor_export.cpp
msgid "Convert Text Resources To Binary On Export"
-msgstr ""
+msgstr "ÐŸÐµÑ€ÐµÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ñ‚ÐµÐºÑтових реÑурÑів на двійкові при екÑпортуванні"
#: editor/editor_feature_profile.cpp
msgid "3D Editor"
@@ -2872,6 +2902,7 @@ msgid "Make Current"
msgstr "Зробити поточним"
#: editor/editor_feature_profile.cpp editor/editor_node.cpp
+#: editor/import/resource_importer_scene.cpp
#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
msgid "Import"
msgstr "Імпорт"
@@ -2919,7 +2950,7 @@ msgstr "ÐšÐµÑ€ÑƒÐ²Ð°Ð½Ð½Ñ Ð¿Ñ€Ð¾Ñ„Ñ–Ð»Ñми можливоÑтей редакÑ
#: editor/editor_feature_profile.cpp
msgid "Default Feature Profile"
-msgstr "Профіль можливоÑтей Godot"
+msgstr "Типовий профіль можливоÑтей"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
msgid "Select Current Folder"
@@ -2996,10 +3027,13 @@ msgstr "ДоÑтуп"
#: editor/editor_file_dialog.cpp editor/editor_settings.cpp
msgid "Display Mode"
-msgstr "// Режим показу"
+msgstr "Режим показу"
-#: editor/editor_file_dialog.cpp main/main.cpp modules/csg/csg_shape.cpp
-#: modules/visual_script/visual_script_nodes.cpp
+#: editor/editor_file_dialog.cpp
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+#: editor/import/resource_importer_wav.cpp main/main.cpp
+#: modules/csg/csg_shape.cpp modules/visual_script/visual_script_nodes.cpp
#: modules/visual_script/visual_script_yield_nodes.cpp scene/2d/light_2d.cpp
#: scene/2d/physics_body_2d.cpp scene/2d/tile_map.cpp
#: scene/3d/baked_lightmap.cpp scene/3d/light.cpp scene/3d/physics_body.cpp
@@ -3011,15 +3045,15 @@ msgstr "Режим"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
msgid "Current Dir"
-msgstr "Поточний:"
+msgstr "Поточний каталог"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
msgid "Current File"
-msgstr "Поточний профіль:"
+msgstr "Поточний файл"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
msgid "Current Path"
-msgstr "Поточний:"
+msgstr "Поточний шлÑÑ…"
#: editor/editor_file_dialog.cpp editor/editor_settings.cpp
#: scene/gui/file_dialog.cpp
@@ -3028,15 +3062,15 @@ msgstr "Показувати приховані файли"
#: editor/editor_file_dialog.cpp
msgid "Disable Overwrite Warning"
-msgstr ""
+msgstr "Вимкнути Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ Ð¿Ñ€Ð¾ перезапиÑ"
#: editor/editor_file_dialog.cpp
msgid "Go Back"
-msgstr "ПовернутиÑÑ Ð½Ð°Ð·Ð°Ð´"
+msgstr "Перейти назад"
#: editor/editor_file_dialog.cpp
msgid "Go Forward"
-msgstr "Йти вперед"
+msgstr "Перейти вперед"
#: editor/editor_file_dialog.cpp
msgid "Go Up"
@@ -3053,7 +3087,7 @@ msgstr "Перемкнути обране"
#: editor/editor_file_dialog.cpp editor/editor_resource_picker.cpp
#: scene/gui/base_button.cpp
msgid "Toggle Mode"
-msgstr "Режим ПеремиканнÑ"
+msgstr "Перемкнути режим"
#: editor/editor_file_dialog.cpp
msgid "Focus Path"
@@ -3061,11 +3095,11 @@ msgstr "ФокуÑувати шлÑÑ…"
#: editor/editor_file_dialog.cpp
msgid "Move Favorite Up"
-msgstr "ПереміÑтити вибране вгору"
+msgstr "ПереміÑтити вибране вище"
#: editor/editor_file_dialog.cpp
msgid "Move Favorite Down"
-msgstr "ПереміÑтити вибране вниз"
+msgstr "ПереміÑтити вибране нижче"
#: editor/editor_file_dialog.cpp
msgid "Go to previous folder."
@@ -3131,9 +3165,11 @@ msgstr "Ð†Ð¼Ð¿Ð¾Ñ€Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ñ€ÐµÑурÑів"
#: editor/editor_file_system.cpp
msgid "Reimport Missing Imported Files"
-msgstr ""
+msgstr "Повторно імпортувати пропущені імпортовані файли"
-#: editor/editor_help.cpp
+#: editor/editor_help.cpp scene/2d/camera_2d.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/resources/dynamic_font.cpp
+#: scene/resources/style_box.cpp
msgid "Top"
msgstr "Верхівка"
@@ -3185,6 +3221,7 @@ msgid "Fonts"
msgstr "Шрифти"
#: editor/editor_help.cpp editor/plugins/theme_editor_plugin.cpp
+#: platform/iphone/export/export.cpp
msgid "Icons"
msgstr "Піктограми"
@@ -3231,16 +3268,16 @@ msgstr "Довідка"
#: editor/editor_help.cpp
msgid "Sort Functions Alphabetically"
-msgstr ""
+msgstr "УпорÑдкувати функції за абеткою"
#: editor/editor_help_search.cpp editor/editor_node.cpp
#: editor/plugins/script_editor_plugin.cpp
msgid "Search Help"
-msgstr "Пошук довідки"
+msgstr "Пошук у довідці"
#: editor/editor_help_search.cpp
msgid "Case Sensitive"
-msgstr "ЧутливіÑть регіÑтра"
+msgstr "З урахуваннÑм регіÑтру"
#: editor/editor_help_search.cpp
msgid "Show Hierarchy"
@@ -3311,34 +3348,28 @@ msgid "Property:"
msgstr "ВлаÑтивіÑть:"
#: editor/editor_inspector.cpp editor/editor_spin_slider.cpp
-#, fuzzy
msgid "Label"
-msgstr "Мітка X"
+msgstr "Мітка"
#: editor/editor_inspector.cpp editor/editor_spin_slider.cpp
-#, fuzzy
msgid "Read Only"
-msgstr "Лише методи"
+msgstr "Лише Ð´Ð»Ñ Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ"
#: editor/editor_inspector.cpp
-#, fuzzy
msgid "Checkable"
-msgstr "Позначити елемент"
+msgstr "Можна позначати"
#: editor/editor_inspector.cpp
-#, fuzzy
msgid "Checked"
-msgstr "Позначений елемент"
+msgstr "Позначено"
#: editor/editor_inspector.cpp
-#, fuzzy
msgid "Draw Red"
-msgstr "Ðамалювати виклики:"
+msgstr "Малювати червоним"
#: editor/editor_inspector.cpp
-#, fuzzy
msgid "Keying"
-msgstr "ВідтвореннÑ"
+msgstr "Ðабір"
#: editor/editor_inspector.cpp
msgid "Pin value"
@@ -3356,7 +3387,9 @@ msgid "Pin value [Disabled because '%s' is editor-only]"
msgstr ""
"Пришпилити Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ [вимкнено, оÑкільки «%s» призначено лише Ð´Ð»Ñ Ñ€ÐµÐ´Ð°Ð³ÑƒÐ²Ð°Ð½Ð½Ñ]"
-#: editor/editor_inspector.cpp editor/scene_tree_dock.cpp
+#: editor/editor_inspector.cpp
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+#: editor/scene_tree_dock.cpp
#: modules/visual_script/visual_script_func_nodes.cpp
#: modules/visual_script/visual_script_nodes.cpp
#: modules/visual_script/visual_script_property_selector.cpp
@@ -3696,6 +3729,16 @@ msgid "Quick Open Script..."
msgstr "Швидке Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ñ‚Ñ Ñкрипту..."
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Save & Reload"
+msgstr "Зберегти Ñ– перезапуÑтити"
+
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Save changes to '%s' before reloading?"
+msgstr "Зберегти зміни, внеÑені до '%s' перед закриттÑм?"
+
+#: editor/editor_node.cpp
msgid "Save & Close"
msgstr "Зберегти та закрити"
@@ -3813,6 +3856,11 @@ msgid "Open Project Manager?"
msgstr "Відкрити менеджер проєктів?"
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Save changes to the following scene(s) before reloading?"
+msgstr "Зберегти зміни в наÑтупній(их) Ñцені(ах) перед тим, Ñк вийти?"
+
+#: editor/editor_node.cpp
msgid "Save & Quit"
msgstr "Зберегти та вийти"
@@ -3999,6 +4047,8 @@ msgstr "%d більше файлів"
msgid ""
"Unable to write to file '%s', file in use, locked or lacking permissions."
msgstr ""
+"Ðе вдалоÑÑ Ð·Ð°Ð¿Ð¸Ñати до файла «%s», файл викориÑтовує інша програма, його "
+"заблоковано або у Ð²Ð°Ñ Ð½ÐµÐ¼Ð°Ñ” відповідних прав доÑтупу до нього."
#: editor/editor_node.cpp editor/plugins/theme_editor_plugin.cpp
msgid "Scene"
@@ -4006,7 +4056,7 @@ msgstr "Сцена"
#: editor/editor_node.cpp
msgid "Scene Naming"
-msgstr "ШлÑÑ… до Ñцени:"
+msgstr "Ð†Ð¼ÐµÐ½ÑƒÐ²Ð°Ð½Ð½Ñ Ñцен"
#: editor/editor_node.cpp editor/editor_settings.cpp editor/scene_tree_dock.cpp
#: servers/arvr/arvr_interface.cpp
@@ -4015,19 +4065,19 @@ msgstr "ІнтерфейÑ"
#: editor/editor_node.cpp editor/editor_settings.cpp
msgid "Scene Tabs"
-msgstr "ÐŸÐµÑ€ÐµÐ¼Ð¸ÐºÐ°Ð½Ð½Ñ Ð²ÐºÐ»Ð°Ð´ÐºÐ¸ \"Сцена\""
+msgstr "Вкладки Ñцен"
#: editor/editor_node.cpp
msgid "Always Show Close Button"
-msgstr "Завжди показувати ґратку"
+msgstr "Завжди показувати кнопку закриттÑ"
#: editor/editor_node.cpp editor/editor_settings.cpp
msgid "Resize If Many Tabs"
-msgstr ""
+msgstr "Змінювати розмір, Ñкщо багато вкладок"
#: editor/editor_node.cpp editor/editor_settings.cpp
msgid "Minimum Width"
-msgstr "Мінімальна ширина:"
+msgstr "Мінімальна ширина"
#: editor/editor_node.cpp editor/editor_settings.cpp
msgid "Output"
@@ -4035,15 +4085,15 @@ msgstr "Результат"
#: editor/editor_node.cpp editor/editor_settings.cpp
msgid "Always Clear Output On Play"
-msgstr "ОчиÑтити вивід"
+msgstr "Завжди очищувати Ð²Ð¸Ð²ÐµÐ´ÐµÐ½Ð½Ñ Ð¿Ñ€Ð¸ відтворенні"
#: editor/editor_node.cpp editor/editor_settings.cpp
msgid "Always Open Output On Play"
-msgstr ""
+msgstr "Завжди відкривати Ð²Ð¸Ð²ÐµÐ´ÐµÐ½Ð½Ñ Ð¿Ñ€Ð¸ відтворенні"
#: editor/editor_node.cpp editor/editor_settings.cpp
msgid "Always Close Output On Stop"
-msgstr ""
+msgstr "Завжди закривати Ð²Ð¸Ð²ÐµÐ´ÐµÐ½Ð½Ñ Ð¿Ñ€Ð¸ зупинці"
#: editor/editor_node.cpp editor/editor_settings.cpp
msgid "Auto Save"
@@ -4051,23 +4101,23 @@ msgstr "ÐвтозбереженнÑ"
#: editor/editor_node.cpp editor/editor_settings.cpp
msgid "Save Before Running"
-msgstr "Зберегти Ñцену перед запуÑком…"
+msgstr "Зберігати перед запуÑком"
#: editor/editor_node.cpp
msgid "Save On Focus Loss"
-msgstr ""
+msgstr "Зберігати при втраті фокуÑуваннÑ"
#: editor/editor_node.cpp editor/editor_settings.cpp
msgid "Save Each Scene On Quit"
-msgstr "Зберегти гілку Ñк Ñцену"
+msgstr "Зберегти уÑÑ– Ñцени при виході"
#: editor/editor_node.cpp editor/editor_settings.cpp
msgid "Quit Confirmation"
-msgstr "ПереглÑд відомоÑтей"
+msgstr "ÐŸÑ–Ð´Ñ‚Ð²ÐµÑ€Ð´Ð¶ÐµÐ½Ð½Ñ Ð²Ð¸Ñ…Ð¾Ð´Ñƒ"
#: editor/editor_node.cpp
msgid "Show Update Spinner"
-msgstr "Приховати Ð¾Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð»Ñ–Ñ‡Ð¸Ð»ÑŒÐ½Ð¸ÐºÐ°"
+msgstr "Показувати індикатор оновленнÑ"
#: editor/editor_node.cpp
msgid "Update Continuously"
@@ -4075,11 +4125,12 @@ msgstr "Оновлювати неперервно"
#: editor/editor_node.cpp
msgid "Update Vital Only"
-msgstr "Оновити критичні зміни"
+msgstr "Оновлювати лише критичні"
#: editor/editor_node.cpp
-msgid "Translate Properties"
-msgstr "Ð’Ñтавити влаÑтивоÑті"
+#, fuzzy
+msgid "Localize Settings"
+msgstr "ЛокалізаціÑ"
#: editor/editor_node.cpp
msgid "Restore Scenes On Load"
@@ -4087,47 +4138,48 @@ msgstr "Отримати вузол Ñцени"
#: editor/editor_node.cpp editor/editor_settings.cpp
msgid "Show Thumbnail On Hover"
-msgstr ""
+msgstr "Показувати мініатюри при наведенні"
#: editor/editor_node.cpp editor/editor_settings.cpp
msgid "Inspector"
msgstr "ІнÑпектор"
#: editor/editor_node.cpp
-msgid "Capitalize Properties"
-msgstr "Ð’Ñтавити влаÑтивоÑті"
+#, fuzzy
+msgid "Default Property Name Style"
+msgstr "Типовий шлÑÑ… до проєкту"
#: editor/editor_node.cpp
msgid "Default Float Step"
-msgstr ""
+msgstr "Типовий крок переÑуваннÑ"
#: editor/editor_node.cpp scene/gui/tree.cpp
msgid "Disable Folding"
-msgstr "Вимкнена кнопка"
+msgstr "Вимкнути згортаннÑ"
#: editor/editor_node.cpp
msgid "Auto Unfold Foreign Scenes"
-msgstr ""
+msgstr "Ðвтоматично розгортати Ñторонні Ñцени"
#: editor/editor_node.cpp
msgid "Horizontal Vector2 Editing"
-msgstr ""
+msgstr "Ð ÐµÐ´Ð°Ð³ÑƒÐ²Ð°Ð½Ð½Ñ Ð³Ð¾Ñ€Ð¸Ð·Ð¾Ð½Ñ‚Ð°Ð»ÑŒÐ½Ð¾Ð³Ð¾ вектора2"
#: editor/editor_node.cpp
msgid "Horizontal Vector Types Editing"
-msgstr ""
+msgstr "Ð ÐµÐ´Ð°Ð³ÑƒÐ²Ð°Ð½Ð½Ñ Ñ‚Ð¸Ð¿Ñ–Ð² горизонтального вектора"
#: editor/editor_node.cpp
msgid "Open Resources In Current Inspector"
-msgstr "Відкрити в інÑпекторі"
+msgstr "Відкрити реÑурÑи у поточному інÑпекторі"
#: editor/editor_node.cpp
msgid "Resources To Open In New Inspector"
-msgstr "Відкрити в інÑпекторі"
+msgstr "РеÑурÑи, Ñкі Ñлід відкрити у новому інÑпекторі"
#: editor/editor_node.cpp
msgid "Default Color Picker Mode"
-msgstr ""
+msgstr "Типовий режим піпетки кольорів"
#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
msgid "Username"
@@ -4699,7 +4751,9 @@ msgstr "Ð’Ñтановлені плаґіни:"
msgid "Update"
msgstr "Оновити"
-#: editor/editor_plugin_settings.cpp
+#: editor/editor_plugin_settings.cpp platform/android/export/export_plugin.cpp
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp
msgid "Version"
msgstr "ВерÑÑ–Ñ"
@@ -4773,11 +4827,11 @@ msgstr "Виклики"
#: editor/editor_profiler.cpp editor/plugins/script_editor_plugin.cpp
#: editor/script_editor_debugger.cpp
msgid "Debugger"
-msgstr "Зневаджувач"
+msgstr "ЗаÑіб діагноÑтики"
#: editor/editor_profiler.cpp
msgid "Profiler Frame History Size"
-msgstr ""
+msgstr "Розмір журналу панелі заÑобу профілюваннÑ"
#: editor/editor_profiler.cpp
msgid "Profiler Frame Max Functions"
@@ -4916,13 +4970,12 @@ msgstr "Базовий тип"
#: editor/editor_resource_picker.cpp
msgid "Edited Resource"
-msgstr "Додати реÑурÑ"
+msgstr "Редагований реÑурÑ"
#: editor/editor_resource_picker.cpp scene/gui/line_edit.cpp
#: scene/gui/slider.cpp scene/gui/spin_box.cpp
-#, fuzzy
msgid "Editable"
-msgstr "Редагований елемент"
+msgstr "Можна редагувати"
#: editor/editor_resource_picker.cpp editor/property_editor.cpp
msgid "New Script"
@@ -4934,7 +4987,7 @@ msgstr "Розширити Ñкрипт"
#: editor/editor_resource_picker.cpp
msgid "Script Owner"
-msgstr "Ðазва Ñкрипту:"
+msgstr "ВлаÑник Ñкрипту"
#: editor/editor_run_native.cpp
msgid ""
@@ -4973,31 +5026,31 @@ msgstr "Ви забули метод '_run'?"
#: editor/editor_settings.cpp
msgid "Editor Language"
-msgstr "Редактор компонуваннÑ"
+msgstr "Мова редактора"
#: editor/editor_settings.cpp
msgid "Display Scale"
-msgstr "Показати уÑе"
+msgstr "МаÑштаб показу"
#: editor/editor_settings.cpp
msgid "Custom Display Scale"
-msgstr ""
+msgstr "Ðетиповий маÑштаб диÑплеÑ"
#: editor/editor_settings.cpp
msgid "Main Font Size"
-msgstr ""
+msgstr "Розмір оÑновного шрифту"
#: editor/editor_settings.cpp
msgid "Code Font Size"
-msgstr ""
+msgstr "Розмір шрифту коду"
#: editor/editor_settings.cpp
msgid "Font Antialiased"
-msgstr ""
+msgstr "Ð—Ð³Ð»Ð°Ð´Ð¶ÑƒÐ²Ð°Ð½Ð½Ñ ÑˆÑ€Ð¸Ñ„Ñ‚Ñƒ"
#: editor/editor_settings.cpp
msgid "Font Hinting"
-msgstr ""
+msgstr "Гінтінґ шрифту"
#: editor/editor_settings.cpp
msgid "Main Font"
@@ -5005,35 +5058,37 @@ msgstr "ОÑновний шрифт"
#: editor/editor_settings.cpp
msgid "Main Font Bold"
-msgstr ""
+msgstr "Жирний оÑновний шрифт"
#: editor/editor_settings.cpp
msgid "Code Font"
-msgstr "Додати вузлову точку"
+msgstr "Шрифт коду"
#: editor/editor_settings.cpp
msgid "Dim Editor On Dialog Popup"
-msgstr ""
+msgstr "Притлумлювати редактор при поÑві контекÑтних вікон"
#: editor/editor_settings.cpp main/main.cpp
msgid "Low Processor Mode Sleep (µsec)"
-msgstr ""
+msgstr "ПриÑиплÑÐ½Ð½Ñ Ñƒ режимі низького ÑÐ¿Ð¾Ð¶Ð¸Ð²Ð°Ð½Ð½Ñ Ð¿Ñ€Ð¾Ñ†ÐµÑора (мкÑ)"
#: editor/editor_settings.cpp
msgid "Unfocused Low Processor Mode Sleep (µsec)"
msgstr ""
+"ПриÑиплÑÐ½Ð½Ñ Ñƒ режимі низького ÑÐ¿Ð¾Ð¶Ð¸Ð²Ð°Ð½Ð½Ñ Ð¿Ñ€Ð¾Ñ†ÐµÑора при втраті фокуÑÑƒÐ²Ð°Ð½Ð½Ñ "
+"(мкÑ)"
#: editor/editor_settings.cpp
msgid "Separate Distraction Mode"
-msgstr "Режим без відволіканнÑ"
+msgstr "Окремий режим без відволіканнÑ"
#: editor/editor_settings.cpp
msgid "Automatically Open Screenshots"
-msgstr ""
+msgstr "Ðвтоматично відкривати знімки вікон"
#: editor/editor_settings.cpp
msgid "Max Array Dictionary Items Per Page"
-msgstr ""
+msgstr "МакÑимальна к-ть запиÑів маÑиву Ñловників на Ñторінку"
#: editor/editor_settings.cpp editor/plugins/script_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp editor/plugins/text_editor.cpp
@@ -5048,7 +5103,7 @@ msgstr "Ðабір"
#: editor/editor_settings.cpp
msgid "Icon And Font Color"
-msgstr ""
+msgstr "Колір піктограм і шрифту"
#: editor/editor_settings.cpp
msgid "Base Color"
@@ -5056,7 +5111,7 @@ msgstr "Базовий колір"
#: editor/editor_settings.cpp
msgid "Accent Color"
-msgstr "Вибрати колір"
+msgstr "Колір акценту"
#: editor/editor_settings.cpp scene/resources/environment.cpp
msgid "Contrast"
@@ -5064,11 +5119,11 @@ msgstr "КонтраÑтніÑть"
#: editor/editor_settings.cpp
msgid "Relationship Line Opacity"
-msgstr ""
+msgstr "ÐепрозоріÑть лінії зв'Ñзку"
#: editor/editor_settings.cpp
msgid "Highlight Tabs"
-msgstr "Ð—Ð±ÐµÑ€ÐµÐ¶ÐµÐ½Ð½Ñ ÐºÐ°Ñ€Ñ‚ оÑвітленнÑ"
+msgstr "ПідÑвічувати вкладки"
#: editor/editor_settings.cpp
msgid "Border Size"
@@ -5076,19 +5131,19 @@ msgstr "Розмір рамки"
#: editor/editor_settings.cpp
msgid "Use Graph Node Headers"
-msgstr ""
+msgstr "Заголовки вузлів графу"
#: editor/editor_settings.cpp
msgid "Additional Spacing"
-msgstr "ЦиклічніÑть анімації"
+msgstr "Додаткові інтервали"
#: editor/editor_settings.cpp
msgid "Custom Theme"
-msgstr "Тема редактора"
+msgstr "Ðетипова тема"
#: editor/editor_settings.cpp
msgid "Show Script Button"
-msgstr "Кнопка коліщатка праворуч"
+msgstr "Показувати кнопку Ñкрипту"
#: editor/editor_settings.cpp editor/fileserver/editor_file_server.cpp
msgid "Filesystem"
@@ -5100,23 +5155,23 @@ msgstr "Каталоги"
#: editor/editor_settings.cpp
msgid "Autoscan Project Path"
-msgstr "ШлÑÑ… проєкту:"
+msgstr "Ðвтоматичне ÑÐºÐ°Ð½ÑƒÐ²Ð°Ð½Ð½Ñ ÑˆÐ»Ñху проєкту"
#: editor/editor_settings.cpp
msgid "Default Project Path"
-msgstr "ШлÑÑ… проєкту:"
+msgstr "Типовий шлÑÑ… до проєкту"
#: editor/editor_settings.cpp
msgid "On Save"
-msgstr "Зберегти"
+msgstr "При зберіганні"
#: editor/editor_settings.cpp
msgid "Compress Binary Resources"
-msgstr "Копіювати реÑурÑ"
+msgstr "СтиÑкати двійкові реÑурÑи"
#: editor/editor_settings.cpp
msgid "Safe Save On Backup Then Rename"
-msgstr ""
+msgstr "Безпечне Ð·Ð±ÐµÑ€Ñ–Ð³Ð°Ð½Ð½Ñ Ð¿Ñ€Ð¸ резервному копіюванні Ñ– перейменуваннÑ"
#: editor/editor_settings.cpp
msgid "File Dialog"
@@ -5132,15 +5187,15 @@ msgstr "Панелі"
#: editor/editor_settings.cpp
msgid "Scene Tree"
-msgstr "Отримати ієрархію Ñцен"
+msgstr "Ð†Ñ”Ñ€Ð°Ñ€Ñ…Ñ–Ñ Ñцен"
#: editor/editor_settings.cpp
msgid "Start Create Dialog Fully Expanded"
-msgstr ""
+msgstr "ЗапуÑкати із повніÑтю розгорнутим вікном ÑтвореннÑ"
#: editor/editor_settings.cpp
msgid "Always Show Folders"
-msgstr "Завжди показувати ґратку"
+msgstr "Завжди показувати теки"
#: editor/editor_settings.cpp
msgid "Property Editor"
@@ -5148,11 +5203,11 @@ msgstr "Редактор влаÑтивоÑтей"
#: editor/editor_settings.cpp
msgid "Auto Refresh Interval"
-msgstr ""
+msgstr "Інтервал автооновленнÑ"
#: editor/editor_settings.cpp
msgid "Subresource Hue Tint"
-msgstr "ПідреÑурÑи"
+msgstr "Ухил відтінку підреÑурÑів"
#: editor/editor_settings.cpp
msgid "Color Theme"
@@ -5174,7 +5229,7 @@ msgstr "ПідÑÐ²Ñ–Ñ‡ÑƒÐ²Ð°Ð½Ð½Ñ ÑинтакÑиÑу"
#: editor/editor_settings.cpp scene/gui/text_edit.cpp
msgid "Highlight All Occurrences"
-msgstr ""
+msgstr "ПідÑвічувати уÑÑ– входженнÑ"
#: editor/editor_settings.cpp scene/gui/text_edit.cpp
msgid "Highlight Current Line"
@@ -5182,7 +5237,7 @@ msgstr "ПідÑвічувати поточний Ñ€Ñдок"
#: editor/editor_settings.cpp editor/plugins/script_text_editor.cpp
msgid "Highlight Type Safe Lines"
-msgstr ""
+msgstr "ПідÑвічувати Ñ€Ñдки із безпечними типами"
#: editor/editor_settings.cpp modules/gdscript/gdscript_editor.cpp
#: modules/mono/csharp_script.cpp
@@ -5203,15 +5258,15 @@ msgstr "ÐвтовідÑтуп"
#: editor/editor_settings.cpp
msgid "Convert Indent On Save"
-msgstr "Перетворити відÑтуп на пропуÑки"
+msgstr "Перетворювати відÑтупи при збереженні"
#: editor/editor_settings.cpp scene/gui/text_edit.cpp
msgid "Draw Tabs"
-msgstr "Ðамалювати виклики:"
+msgstr "Ð’Ñ–Ð·ÑƒÐ°Ð»Ñ–Ð·Ð°Ñ†Ñ–Ñ Ñ‚Ð°Ð±ÑƒÐ»Ñцій"
#: editor/editor_settings.cpp scene/gui/text_edit.cpp
msgid "Draw Spaces"
-msgstr "Ðамалювати виклики:"
+msgstr "Ð’Ñ–Ð·ÑƒÐ°Ð»Ñ–Ð·Ð°Ñ†Ñ–Ñ Ð¿Ñ€Ð¾Ð±Ñ–Ð»Ñ–Ð²"
#: editor/editor_settings.cpp editor/plugins/spatial_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/main/scene_tree.cpp
@@ -5224,11 +5279,11 @@ msgstr "Плавне гортаннÑ"
#: editor/editor_settings.cpp scene/gui/text_edit.cpp
msgid "V Scroll Speed"
-msgstr ""
+msgstr "ШвидкіÑть верт. гортаннÑ"
#: editor/editor_settings.cpp
msgid "Show Minimap"
-msgstr "Показати центр"
+msgstr "Показувати мінікарту"
#: editor/editor_settings.cpp
msgid "Minimap Width"
@@ -5236,7 +5291,7 @@ msgstr "Ширина мінікарти"
#: editor/editor_settings.cpp
msgid "Mouse Extra Buttons Navigate History"
-msgstr ""
+msgstr "Додаткові кнопки миші Ð´Ð»Ñ Ð½Ð°Ð²Ñ–Ð³Ð°Ñ†Ñ–Ñ— журналом"
#: editor/editor_settings.cpp
msgid "Appearance"
@@ -5248,19 +5303,19 @@ msgstr "Показувати номери Ñ€Ñдків"
#: editor/editor_settings.cpp
msgid "Line Numbers Zero Padded"
-msgstr "Ðомер Ñ€Ñдка:"
+msgstr "Ðомери Ñ€Ñдків із нульовою фаÑкою"
#: editor/editor_settings.cpp
msgid "Show Bookmark Gutter"
-msgstr ""
+msgstr "Показувати міжÑтовпцевий проміжок закладок"
#: editor/editor_settings.cpp
msgid "Show Breakpoint Gutter"
-msgstr "ПропуÑтити точки зупину"
+msgstr "Показувати міжÑтовпцевий проміжок точок зупину"
#: editor/editor_settings.cpp
msgid "Show Info Gutter"
-msgstr ""
+msgstr "Показувати міжÑтовпцевий проміжок відомоÑтей"
#: editor/editor_settings.cpp
msgid "Code Folding"
@@ -5272,23 +5327,23 @@ msgstr "ПеренеÑÐµÐ½Ð½Ñ Ñлів"
#: editor/editor_settings.cpp
msgid "Show Line Length Guidelines"
-msgstr ""
+msgstr "Показувати напрÑмні довжини Ñ€Ñдків"
#: editor/editor_settings.cpp
msgid "Line Length Guideline Soft Column"
-msgstr ""
+msgstr "ÐŸÐ¾Ð·Ð¸Ñ†Ñ–Ñ Ð»Ñ–Ð½Ñ–Ñ— напрÑмної м'Ñкого перенеÑеннÑ"
#: editor/editor_settings.cpp
msgid "Line Length Guideline Hard Column"
-msgstr ""
+msgstr "ÐŸÐ¾Ð·Ð¸Ñ†Ñ–Ñ Ð»Ñ–Ð½Ñ–Ñ— напрÑмної жорÑткого перенеÑеннÑ"
#: editor/editor_settings.cpp editor/plugins/script_editor_plugin.cpp
msgid "Script List"
-msgstr "Редактор Ñкриптів"
+msgstr "СпиÑок Ñкриптів"
#: editor/editor_settings.cpp
msgid "Show Members Overview"
-msgstr ""
+msgstr "Показувати оглÑд елементів"
#: editor/editor_settings.cpp editor/plugins/script_editor_plugin.cpp
#: editor/plugins/shader_editor_plugin.cpp
@@ -5297,23 +5352,23 @@ msgstr "Файли"
#: editor/editor_settings.cpp
msgid "Trim Trailing Whitespace On Save"
-msgstr "Обрізати кінцевий пробіл"
+msgstr "Обрізати кінцевий пробіл при зберіганні"
#: editor/editor_settings.cpp
msgid "Autosave Interval Secs"
-msgstr ""
+msgstr "Інтервал Ð°Ð²Ñ‚Ð¾Ð·Ð±ÐµÑ€ÐµÐ¶ÐµÐ½Ð½Ñ Ñƒ Ñекундах"
#: editor/editor_settings.cpp editor/plugins/script_editor_plugin.cpp
msgid "Restore Scripts On Load"
-msgstr ""
+msgstr "Відновлювати Ñкрипти при завантаженні"
#: editor/editor_settings.cpp
msgid "Create Signal Callbacks"
-msgstr "ПримуÑово вÑтановити резерви Ð´Ð»Ñ ÑˆÐµÐ¹Ð´ÐµÑ€Ñ–Ð²"
+msgstr "Створювати зворотні виклики Ñигналів"
#: editor/editor_settings.cpp
msgid "Sort Members Outline Alphabetically"
-msgstr ""
+msgstr "УпорÑдковувати оглÑд елементів за абеткою"
#: editor/editor_settings.cpp scene/gui/line_edit.cpp
msgid "Cursor"
@@ -5321,67 +5376,67 @@ msgstr "КурÑор"
#: editor/editor_settings.cpp
msgid "Scroll Past End Of File"
-msgstr ""
+msgstr "Ð“Ð¾Ñ€Ñ‚Ð°Ð½Ð½Ñ Ð·Ð° кінець файла"
#: editor/editor_settings.cpp
msgid "Block Caret"
-msgstr ""
+msgstr "Блокова каретка"
#: editor/editor_settings.cpp scene/gui/line_edit.cpp
msgid "Caret Blink"
-msgstr ""
+msgstr "Ð‘Ð»Ð¸Ð¼Ð°Ð½Ð½Ñ ÐºÐ°Ñ€ÐµÑ‚ÐºÐ¸"
#: editor/editor_settings.cpp scene/gui/line_edit.cpp
msgid "Caret Blink Speed"
-msgstr ""
+msgstr "ШвидкіÑть Ð±Ð»Ð¸Ð¼Ð°Ð½Ð½Ñ ÐºÐ°Ñ€ÐµÑ‚ÐºÐ¸"
#: editor/editor_settings.cpp
msgid "Right Click Moves Caret"
-msgstr "Клацніть правою кнопкою миші, щоб додати точку"
+msgstr "ÐšÐ»Ð°Ñ†Ð°Ð½Ð½Ñ Ð¿Ñ€Ð°Ð²Ð¾ÑŽ кнопкою переÑуває каретку"
#: editor/editor_settings.cpp
msgid "Idle Parse Delay"
-msgstr ""
+msgstr "Затримка відкладеної обробки"
#: editor/editor_settings.cpp
msgid "Auto Brace Complete"
-msgstr ""
+msgstr "Ðвтоматичне Ð´Ð¾Ð¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ Ð´ÑƒÐ¶Ð¾Ðº"
#: editor/editor_settings.cpp
msgid "Code Complete Delay"
-msgstr ""
+msgstr "Затримка Ð´Ð¾Ð¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ ÐºÐ¾Ð´Ñƒ"
#: editor/editor_settings.cpp
msgid "Put Callhint Tooltip Below Current Line"
-msgstr ""
+msgstr "Розташовувати підказку викликів під поточним Ñ€Ñдком"
#: editor/editor_settings.cpp
msgid "Callhint Tooltip Offset"
-msgstr ""
+msgstr "ВідÑтуп підказки викликів"
#: editor/editor_settings.cpp
msgid "Complete File Paths"
-msgstr "Копіювати вузол шлÑху"
+msgstr "Повні шлÑхи до файлів"
#: editor/editor_settings.cpp modules/gdscript/gdscript_editor.cpp
msgid "Add Type Hints"
-msgstr "Додати тип"
+msgstr "Додати підказки щодо типу"
#: editor/editor_settings.cpp
msgid "Show Help Index"
-msgstr "Показати помічники"
+msgstr "Показати покажчик довідки"
#: editor/editor_settings.cpp
msgid "Help Font Size"
-msgstr ""
+msgstr "Розмір шрифт довідки"
#: editor/editor_settings.cpp
msgid "Help Source Font Size"
-msgstr ""
+msgstr "Розмір шрифту коду у довідці"
#: editor/editor_settings.cpp
msgid "Help Title Font Size"
-msgstr ""
+msgstr "Розмір шрифту заголовків у довідці"
#: editor/editor_settings.cpp editor/plugins/mesh_library_editor_plugin.cpp
#: modules/gridmap/grid_map_editor_plugin.cpp
@@ -5390,39 +5445,39 @@ msgstr "Карта Ñітки"
#: editor/editor_settings.cpp modules/gridmap/grid_map_editor_plugin.cpp
msgid "Pick Distance"
-msgstr "ВідÑтань вибору:"
+msgstr "ВідÑтань вибору"
#: editor/editor_settings.cpp
msgid "Primary Grid Color"
-msgstr ""
+msgstr "Колір оÑновної Ñітки"
#: editor/editor_settings.cpp
msgid "Secondary Grid Color"
-msgstr ""
+msgstr "Колір вторинної Ñітки"
#: editor/editor_settings.cpp
msgid "Selection Box Color"
-msgstr "Тільки виділити"
+msgstr "Колір прÑмокутника позначеннÑ"
#: editor/editor_settings.cpp
msgid "Primary Grid Steps"
-msgstr "Крок Ñітки:"
+msgstr "КількіÑть кроків оÑновної Ñітки"
#: editor/editor_settings.cpp
msgid "Grid Size"
-msgstr "Розмір ґратки:"
+msgstr "Розмір Ñітки"
#: editor/editor_settings.cpp
msgid "Grid Division Level Max"
-msgstr ""
+msgstr "МакÑ. рівень поділу Ñітки"
#: editor/editor_settings.cpp
msgid "Grid Division Level Min"
-msgstr ""
+msgstr "Мін. рівень поділу Ñітки"
#: editor/editor_settings.cpp
msgid "Grid Division Level Bias"
-msgstr ""
+msgstr "Ухил Ñ€Ñ–Ð²Ð½Ñ Ð¿Ð¾Ð´Ñ–Ð»Ñƒ Ñітки"
#: editor/editor_settings.cpp
msgid "Grid XZ Plane"
@@ -5430,116 +5485,115 @@ msgstr "Малюнок GridMap"
#: editor/editor_settings.cpp
msgid "Grid XY Plane"
-msgstr "Малюнок GridMap"
+msgstr "Сітка площини XY"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Grid YZ Plane"
-msgstr "Малюнок GridMap"
+msgstr "Сітка площини YZ"
#: editor/editor_settings.cpp editor/plugins/spatial_editor_plugin.cpp
msgid "Default FOV"
-msgstr "Типовий"
+msgstr "Типове поле зору"
#: editor/editor_settings.cpp editor/plugins/spatial_editor_plugin.cpp
msgid "Default Z Near"
-msgstr "Типова тема"
+msgstr "Типове Z близьке"
#: editor/editor_settings.cpp editor/plugins/spatial_editor_plugin.cpp
msgid "Default Z Far"
-msgstr "Типовий"
+msgstr "Типове Z далеке"
#: editor/editor_settings.cpp
msgid "Lightmap Baking Number Of CPU Threads"
-msgstr ""
+msgstr "КількіÑть потоків процеÑора при запіканні карти оÑвітленнÑ"
#: editor/editor_settings.cpp
msgid "Navigation Scheme"
-msgstr "Режим навігації"
+msgstr "Схема навігації"
#: editor/editor_settings.cpp
msgid "Invert Y Axis"
-msgstr "Редагувати віÑÑŒ Y"
+msgstr "Інвертувати віÑÑŒ Y"
#: editor/editor_settings.cpp
msgid "Invert X Axis"
-msgstr "Редагувати віÑÑŒ X"
+msgstr "Інвертувати віÑÑŒ X"
#: editor/editor_settings.cpp
msgid "Zoom Style"
-msgstr "ЗменшеннÑ"
+msgstr "Стиль маÑштабуваннÑ"
#: editor/editor_settings.cpp
msgid "Emulate Numpad"
-msgstr ""
+msgstr "Імітувати цифрову панель"
#: editor/editor_settings.cpp
msgid "Emulate 3 Button Mouse"
-msgstr ""
+msgstr "Імітувати 3-кнопкову мишу"
#: editor/editor_settings.cpp
msgid "Orbit Modifier"
-msgstr "УпорÑдкувати за початковим внеÑеннÑм змін"
+msgstr "Модифікатор орбіти"
#: editor/editor_settings.cpp
msgid "Pan Modifier"
-msgstr "Режим панорамуваннÑ"
+msgstr "Модифікатор панорамуваннÑ"
#: editor/editor_settings.cpp
msgid "Zoom Modifier"
-msgstr "Змінено"
+msgstr "Модифікатор маÑштабуваннÑ"
#: editor/editor_settings.cpp editor/plugins/spatial_editor_plugin.cpp
msgid "Warped Mouse Panning"
-msgstr ""
+msgstr "Зациклене Ð¿Ð°Ð½Ð¾Ñ€Ð°Ð¼ÑƒÐ²Ð°Ð½Ð½Ñ Ð¼Ð¸ÑˆÐµÑŽ"
#: editor/editor_settings.cpp
msgid "Navigation Feel"
-msgstr "Режим навігації"
+msgstr "Поведінка навігації"
#: editor/editor_settings.cpp
msgid "Orbit Sensitivity"
-msgstr ""
+msgstr "ЧутливіÑть орбіти"
#: editor/editor_settings.cpp
msgid "Orbit Inertia"
-msgstr ""
+msgstr "Ð†Ð½ÐµÑ€Ñ†Ñ–Ñ Ð¾Ñ€Ð±Ñ–Ñ‚Ð¸"
#: editor/editor_settings.cpp
msgid "Translation Inertia"
-msgstr "Переклади"
+msgstr "Ð†Ð½ÐµÑ€Ñ†Ñ–Ñ Ð¿ÐµÑ€ÐµÐ½ÐµÑеннÑ"
#: editor/editor_settings.cpp
msgid "Zoom Inertia"
-msgstr "Збільшувати"
+msgstr "Ð†Ð½ÐµÑ€Ñ†Ñ–Ñ Ð¼Ð°ÑштабуваннÑ"
#: editor/editor_settings.cpp
msgid "Freelook"
-msgstr "ОглÑд вгору"
+msgstr "Довільний оглÑд"
#: editor/editor_settings.cpp
msgid "Freelook Navigation Scheme"
-msgstr "Створити навігаційну Ñітку"
+msgstr "Схема навігації довільного оглÑду"
#: editor/editor_settings.cpp
msgid "Freelook Sensitivity"
-msgstr "ОглÑд ліворуч"
+msgstr "ЧутливіÑть довільного оглÑду"
#: editor/editor_settings.cpp
msgid "Freelook Inertia"
-msgstr "ОглÑд ліворуч"
+msgstr "Ð†Ð½ÐµÑ€Ñ†Ñ–Ñ Ð´Ð¾Ð²Ñ–Ð»ÑŒÐ½Ð¾Ð³Ð¾ оглÑду"
#: editor/editor_settings.cpp
msgid "Freelook Base Speed"
-msgstr "Коефіцієнт швидкоÑті оглÑду"
+msgstr "Базова швидкіÑть довільного оглÑду"
#: editor/editor_settings.cpp
msgid "Freelook Activation Modifier"
-msgstr "Модифікатор швидкоÑті довільного оглÑду"
+msgstr "Модифікатор активації довільного оглÑду"
#: editor/editor_settings.cpp
msgid "Freelook Speed Zoom Link"
-msgstr "Коефіцієнт швидкоÑті оглÑду"
+msgstr "Зв'Ñзок швидкоÑті маÑÑˆÑ‚Ð°Ð±ÑƒÐ²Ð°Ð½Ð½Ñ Ð´Ð¾Ð²Ñ–Ð»ÑŒÐ½Ð¾Ð³Ð¾ оглÑду"
#: editor/editor_settings.cpp editor/plugins/tile_map_editor_plugin.cpp
msgid "Grid Color"
@@ -5547,79 +5601,79 @@ msgstr "Колір Ñітки"
#: editor/editor_settings.cpp
msgid "Guides Color"
-msgstr "Вибрати колір"
+msgstr "Колір напрÑмних"
#: editor/editor_settings.cpp
msgid "Smart Snapping Line Color"
-msgstr "Інтелектуальне прилипаннÑ"
+msgstr "Колір ліній інтелектуального прилипаннÑ"
#: editor/editor_settings.cpp
msgid "Bone Width"
-msgstr ""
+msgstr "Товщина кіÑток"
#: editor/editor_settings.cpp
msgid "Bone Color 1"
-msgstr "Перейменувати Ð·Ð°Ð¿Ð¸Ñ ÐºÐ¾Ð»ÑŒÐ¾Ñ€Ñƒ"
+msgstr "Колір кіÑток 1"
#: editor/editor_settings.cpp
msgid "Bone Color 2"
-msgstr "Перейменувати Ð·Ð°Ð¿Ð¸Ñ ÐºÐ¾Ð»ÑŒÐ¾Ñ€Ñƒ"
+msgstr "Колір кіÑток 2"
#: editor/editor_settings.cpp
msgid "Bone Selected Color"
-msgstr "Ðалаштувати позначений профіль:"
+msgstr "Колір Ð¿Ð¾Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ ÐºÑ–Ñток"
#: editor/editor_settings.cpp
msgid "Bone IK Color"
-msgstr ""
+msgstr "Колір IK кіÑток"
#: editor/editor_settings.cpp
msgid "Bone Outline Color"
-msgstr ""
+msgstr "Колір контуру кіÑток"
#: editor/editor_settings.cpp
msgid "Bone Outline Size"
-msgstr "Розмір обведеннÑ:"
+msgstr "Розмір контуру кіÑток"
#: editor/editor_settings.cpp
msgid "Viewport Border Color"
-msgstr ""
+msgstr "Колір рамки панелі переглÑду"
#: editor/editor_settings.cpp
msgid "Constrain Editor View"
-msgstr ""
+msgstr "Панель редактора обмежень"
#: editor/editor_settings.cpp
msgid "Simple Panning"
-msgstr ""
+msgstr "ПроÑте панорамуваннÑ"
#: editor/editor_settings.cpp
msgid "Scroll To Pan"
-msgstr ""
+msgstr "Ð“Ð¾Ñ€Ñ‚Ð°Ð½Ð½Ñ Ð´Ð»Ñ Ð¿Ð°Ð½Ð¾Ñ€Ð°Ð¼ÑƒÐ²Ð°Ð½Ð½Ñ"
#: editor/editor_settings.cpp
msgid "Pan Speed"
-msgstr "ШвидкіÑть:"
+msgstr "ШвидкіÑть панорамуваннÑ"
#: editor/editor_settings.cpp editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Poly Editor"
-msgstr "Редактор плоÑких полігонів UV"
+msgstr "Редактор полігонів"
#: editor/editor_settings.cpp
msgid "Point Grab Radius"
-msgstr ""
+msgstr "Ð Ð°Ð´Ñ–ÑƒÑ Ð·Ð°Ñ…Ð¾Ð¿Ð»ÐµÐ½Ð½Ñ Ñ‚Ð¾Ñ‡ÐºÐ¸"
#: editor/editor_settings.cpp editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Show Previous Outline"
-msgstr "ÐŸÐ¾Ð¿ÐµÑ€ÐµÐ´Ð½Ñ Ð¿Ð»Ð¾Ñ‰Ð¸Ð½Ð°"
+msgstr "Показувати попередній контур"
#: editor/editor_settings.cpp editor/scene_tree_dock.cpp
msgid "Autorename Animation Tracks"
-msgstr "Перейменувати анімацію"
+msgstr "Ðвтоматично перейменовувати доріжки анімації"
#: editor/editor_settings.cpp
msgid "Default Create Bezier Tracks"
-msgstr ""
+msgstr "Типове ÑÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ð´Ð¾Ñ€Ñ–Ð¶Ð¾Ðº Безьє"
#: editor/editor_settings.cpp
msgid "Default Create Reset Tracks"
@@ -5627,35 +5681,35 @@ msgstr "Створити доріжки RESET"
#: editor/editor_settings.cpp
msgid "Onion Layers Past Color"
-msgstr ""
+msgstr "Колір шарів кальки минулого"
#: editor/editor_settings.cpp
msgid "Onion Layers Future Color"
-msgstr ""
+msgstr "Колір шарів кальки майбутнього"
#: editor/editor_settings.cpp
msgid "Visual Editors"
-msgstr "Редактор груп"
+msgstr "Візуальні редактори"
#: editor/editor_settings.cpp
msgid "Minimap Opacity"
-msgstr ""
+msgstr "ÐепрозоріÑть мінікарти"
#: editor/editor_settings.cpp
msgid "Window Placement"
-msgstr "Ñ€Ð¾Ð·Ñ‚Ð°ÑˆÑƒÐ²Ð°Ð½Ð½Ñ Ð²Ñ–ÐºÐ¾Ð½"
+msgstr "Ð Ð¾Ð·Ñ‚Ð°ÑˆÑƒÐ²Ð°Ð½Ð½Ñ Ð²Ñ–ÐºÐ¾Ð½"
#: editor/editor_settings.cpp scene/2d/back_buffer_copy.cpp scene/2d/sprite.cpp
#: scene/2d/visibility_notifier_2d.cpp scene/3d/sprite_3d.cpp
#: scene/gui/control.cpp
msgid "Rect"
-msgstr "прÑмий кут"
+msgstr "ПрÑмокутник"
#: editor/editor_settings.cpp
msgid "Rect Custom Position"
-msgstr "Ð’Ñтановити Ð¿Ð¾Ð»Ð¾Ð¶ÐµÐ½Ð½Ñ Ð²Ð¸Ñ…Ð¾Ð´Ñƒ кривої"
+msgstr "Ðетипове Ñ€Ð¾Ð·Ñ‚Ð°ÑˆÑƒÐ²Ð°Ð½Ð½Ñ Ð¿Ñ€Ñмокутника"
-#: editor/editor_settings.cpp
+#: editor/editor_settings.cpp platform/android/export/export_plugin.cpp
msgid "Screen"
msgstr "Екран"
@@ -5666,28 +5720,41 @@ msgstr "Розмір шрифту"
#: editor/editor_settings.cpp
#: modules/gdscript/language_server/gdscript_language_server.cpp
msgid "Remote Host"
-msgstr "<br><b>Віддалений вузол:</b> %1"
+msgstr "Віддалений вузол"
#: editor/editor_settings.cpp
#: modules/gdscript/language_server/gdscript_language_server.cpp
msgid "Remote Port"
-msgstr "Вилучити точку"
+msgstr "Віддалений порт"
#: editor/editor_settings.cpp
msgid "Editor SSL Certificates"
-msgstr "Параметри редактора"
+msgstr "Сертифікати SSL редактора"
+
+#: editor/editor_settings.cpp
+msgid "HTTP Proxy"
+msgstr "HTTP-прокÑÑ–"
+
+#: editor/editor_settings.cpp
+msgid "Host"
+msgstr "Вузол"
+
+#: editor/editor_settings.cpp editor/fileserver/editor_file_server.cpp
+#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp
+msgid "Port"
+msgstr "Порт"
#: editor/editor_settings.cpp
msgid "Project Manager"
-msgstr "Керівник проєкту"
+msgstr "ÐšÐµÑ€ÑƒÐ²Ð°Ð½Ð½Ñ Ð¿Ñ€Ð¾Ñ”ÐºÑ‚Ð°Ð¼Ð¸"
#: editor/editor_settings.cpp
msgid "Sorting Order"
-msgstr "у порÑдку:"
+msgstr "Режим упорÑдковуваннÑ"
#: editor/editor_settings.cpp
msgid "Symbol Color"
-msgstr "Колір Ñимволу:"
+msgstr "Колір Ñимволу"
#: editor/editor_settings.cpp
msgid "Keyword Color"
@@ -5695,51 +5762,52 @@ msgstr "Колір ключових Ñлів"
#: editor/editor_settings.cpp
msgid "Control Flow Keyword Color"
-msgstr ""
+msgstr "Колір ключових Ñлів керівної логіки"
#: editor/editor_settings.cpp
msgid "Base Type Color"
-msgstr "Базовий тип"
+msgstr "Колір базових типів"
#: editor/editor_settings.cpp
msgid "Engine Type Color"
-msgstr ""
+msgstr "Колір типів рушіÑ"
#: editor/editor_settings.cpp
msgid "User Type Color"
-msgstr ""
+msgstr "Колір типів кориÑтувача"
#: editor/editor_settings.cpp
msgid "Comment Color"
-msgstr ""
+msgstr "Колір коментарів"
#: editor/editor_settings.cpp
msgid "String Color"
-msgstr "Ð—Ð±ÐµÑ€ÐµÐ¶ÐµÐ½Ð½Ñ Ñ„Ð°Ð¹Ð»Ñƒ:"
+msgstr "Колір Ñ€Ñдків"
-#: editor/editor_settings.cpp
+#: editor/editor_settings.cpp platform/javascript/export/export.cpp
+#: platform/uwp/export/export.cpp
msgid "Background Color"
msgstr "Колір тла"
#: editor/editor_settings.cpp
msgid "Completion Background Color"
-msgstr "Ðекоректний колір тла."
+msgstr "Колір тла доповненнÑ"
#: editor/editor_settings.cpp
msgid "Completion Selected Color"
-msgstr "Імпортувати позначене"
+msgstr "Колір Ð¿Ð¾Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð´Ð¾Ð¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ"
#: editor/editor_settings.cpp
msgid "Completion Existing Color"
-msgstr ""
+msgstr "ÐаÑвний колір доповненнÑ"
#: editor/editor_settings.cpp
msgid "Completion Scroll Color"
-msgstr ""
+msgstr "Колір Ð³Ð¾Ñ€Ñ‚Ð°Ð½Ð½Ñ Ð´Ð¾Ð¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ"
#: editor/editor_settings.cpp
msgid "Completion Font Color"
-msgstr ""
+msgstr "Колір шрифту доповненнÑ"
#: editor/editor_settings.cpp
msgid "Text Color"
@@ -5747,31 +5815,31 @@ msgstr "Колір текÑту"
#: editor/editor_settings.cpp
msgid "Line Number Color"
-msgstr "Ðомер Ñ€Ñдка:"
+msgstr "Колір номерів Ñ€Ñдків"
#: editor/editor_settings.cpp
msgid "Safe Line Number Color"
-msgstr "Ðомер Ñ€Ñдка:"
+msgstr "Безпечний колір номерів Ñ€Ñдків"
#: editor/editor_settings.cpp
msgid "Caret Color"
-msgstr ""
+msgstr "Колір каретки"
#: editor/editor_settings.cpp
msgid "Caret Background Color"
-msgstr "Ðекоректний колір тла."
+msgstr "Колір тла каретки"
#: editor/editor_settings.cpp
msgid "Text Selected Color"
-msgstr "Вилучити вибране"
+msgstr "Колір позначеного текÑту"
#: editor/editor_settings.cpp
msgid "Selection Color"
-msgstr "Тільки виділити"
+msgstr "Колір позначеннÑ"
#: editor/editor_settings.cpp
msgid "Brace Mismatch Color"
-msgstr ""
+msgstr "Колір дужок без відповідників"
#: editor/editor_settings.cpp
msgid "Current Line Color"
@@ -5779,51 +5847,51 @@ msgstr "Колір поточного Ñ€Ñдка"
#: editor/editor_settings.cpp
msgid "Line Length Guideline Color"
-msgstr ""
+msgstr "Колір напрÑмної довжини Ñ€Ñдка"
#: editor/editor_settings.cpp
msgid "Word Highlighted Color"
-msgstr "ЗаÑіб підÑÐ²Ñ–Ñ‡ÑƒÐ²Ð°Ð½Ð½Ñ ÑинтакÑиÑу"
+msgstr "Колір підÑвічених Ñлів"
#: editor/editor_settings.cpp
msgid "Number Color"
-msgstr "Колір номерів:"
+msgstr "Колір номерів"
#: editor/editor_settings.cpp
msgid "Function Color"
-msgstr "ФункціÑ"
+msgstr "Колір функцій"
#: editor/editor_settings.cpp
msgid "Member Variable Color"
-msgstr "Перейменувати змінну"
+msgstr "Колір змінних-елементів"
#: editor/editor_settings.cpp
msgid "Mark Color"
-msgstr "Вибрати колір"
+msgstr "Колір позначок"
#: editor/editor_settings.cpp
msgid "Bookmark Color"
-msgstr "Закладки"
+msgstr "Колір закладок"
#: editor/editor_settings.cpp
msgid "Breakpoint Color"
-msgstr "Точки зупину"
+msgstr "Колір точок зупину"
#: editor/editor_settings.cpp
msgid "Executing Line Color"
-msgstr ""
+msgstr "Колір виконуваного Ñ€Ñдка"
#: editor/editor_settings.cpp
msgid "Code Folding Color"
-msgstr ""
+msgstr "Колір Ð·Ð³Ð¾Ñ€Ñ‚Ð°Ð½Ð½Ñ ÐºÐ¾Ð´Ñƒ"
#: editor/editor_settings.cpp
msgid "Search Result Color"
-msgstr "Результати пошуку"
+msgstr "Колір результатів пошуку"
#: editor/editor_settings.cpp
msgid "Search Result Border Color"
-msgstr "Результати пошуку"
+msgstr "Колір рамки результатів пошуку"
#: editor/editor_spin_slider.cpp
msgid "Hold %s to round to integers. Hold Shift for more precise changes."
@@ -5832,9 +5900,8 @@ msgstr ""
"Shift, щоб зміни були точнішими."
#: editor/editor_spin_slider.cpp scene/gui/button.cpp
-#, fuzzy
msgid "Flat"
-msgstr "ПлаÑкий 0"
+msgstr "ПлоÑка"
#: editor/editor_sub_scene.cpp
msgid "Select Node(s) to Import"
@@ -5878,22 +5945,6 @@ msgid "Starting the download..."
msgstr "Розпочинаємо Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ð½Ð½Ñ Ð´Ð°Ð½Ð¸Ñ…â€¦"
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "HTTP Proxy"
-msgstr "HTTP-прокÑÑ–"
-
-#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Host"
-msgstr "Вузол"
-
-#: editor/export_template_manager.cpp editor/fileserver/editor_file_server.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp main/main.cpp
-#: modules/mono/mono_gd/gd_mono.cpp
-msgid "Port"
-msgstr "Порт"
-
-#: editor/export_template_manager.cpp
msgid "Error requesting URL:"
msgstr "Помилка під Ñ‡Ð°Ñ Ð·Ð°Ð¿Ð¸Ñ‚Ñƒ за такою адреÑою:"
@@ -6147,6 +6198,7 @@ msgstr "Файловий Ñервер"
#: editor/fileserver/editor_file_server.cpp
#: editor/plugins/version_control_editor_plugin.cpp
+#: platform/uwp/export/export.cpp platform/windows/export/export.cpp
msgid "Password"
msgstr "Пароль"
@@ -6523,15 +6575,123 @@ msgstr "ÐšÐµÑ€ÑƒÐ²Ð°Ð½Ð½Ñ Ð³Ñ€ÑƒÐ¿Ð°Ð¼Ð¸"
#: editor/import/editor_import_collada.cpp
msgid "Collada"
-msgstr ""
+msgstr "Collada"
#: editor/import/editor_import_collada.cpp
msgid "Use Ambient"
+msgstr "ВикориÑтовувати адаптивний"
+
+#: editor/import/resource_importer_bitmask.cpp
+#, fuzzy
+msgid "Create From"
+msgstr "Створити Теку"
+
+#: editor/import/resource_importer_bitmask.cpp
+#: servers/audio/effects/audio_effect_compressor.cpp
+msgid "Threshold"
+msgstr "Поріг"
+
+#: editor/import/resource_importer_csv_translation.cpp
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_scene.cpp
+#: editor/import/resource_importer_texture.cpp
+#: editor/import/resource_importer_wav.cpp scene/3d/gi_probe.cpp
+msgid "Compress"
+msgstr "СтиÑнути"
+
+#: editor/import/resource_importer_csv_translation.cpp
+msgid "Delimiter"
msgstr ""
+#: editor/import/resource_importer_layered_texture.cpp
+msgid "No BPTC If RGB"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/sprite_3d.cpp
+#: scene/resources/material.cpp scene/resources/particles_material.cpp
+#: scene/resources/texture.cpp
+msgid "Flags"
+msgstr "Прапорці"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/animation/tween.cpp
+#: scene/resources/texture.cpp
+msgid "Repeat"
+msgstr "ПовтореннÑ"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/2d/light_2d.cpp
+#: scene/gui/control.cpp scene/resources/navigation_mesh.cpp
+msgid "Filter"
+msgstr "Фільтр"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Mipmaps"
+msgstr "Множинне відтвореннÑ"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Anisotropic"
+msgstr "ÐнізотропіÑ"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+msgid "sRGB"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#, fuzzy
+msgid "Slices"
+msgstr "ÐвтонарізаннÑ"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
+#: scene/resources/style_box.cpp
+msgid "Horizontal"
+msgstr "Горизонтальний"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
+#: scene/resources/style_box.cpp
+msgid "Vertical"
+msgstr "Вертикальний"
+
+#: editor/import/resource_importer_obj.cpp
+#, fuzzy
+msgid "Generate Tangents"
+msgstr "Створити точки"
+
+#: editor/import/resource_importer_obj.cpp
+#, fuzzy
+msgid "Scale Mesh"
+msgstr "Режим маÑштабуваннÑ"
+
+#: editor/import/resource_importer_obj.cpp
+#, fuzzy
+msgid "Offset Mesh"
+msgstr "ЗміщеннÑ"
+
+#: editor/import/resource_importer_obj.cpp
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Octahedral Compression"
+msgstr "СтиÑненнÑ"
+
+#: editor/import/resource_importer_obj.cpp
+#, fuzzy
+msgid "Optimize Mesh Flags"
+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"
@@ -6569,6 +6729,150 @@ msgstr "Імпортувати Ñк кілька Ñцен"
msgid "Import as Multiple Scenes+Materials"
msgstr "Імпортувати Ñк кілька Ñцен + матеріали"
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+#: scene/3d/physics_joint.cpp
+msgid "Nodes"
+msgstr "Вузли"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Root Type"
+msgstr "Тип результату"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Root Name"
+msgstr "Ðазва віддаленого Ñховища"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Root Scale"
+msgstr "МаÑштаб HDR"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Custom Script"
+msgstr "Ðетиповий вузол"
+
+#: editor/import/resource_importer_scene.cpp scene/resources/texture.cpp
+msgid "Storage"
+msgstr "Сховище даних"
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Use Legacy Names"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+msgid "Materials"
+msgstr "Матеріали"
+
+#: editor/import/resource_importer_scene.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Location"
+msgstr "ЛокалізаціÑ"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Keep On Reimport"
+msgstr "Переімпортувати"
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+msgid "Meshes"
+msgstr "Сітка"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Ensure Tangents"
+msgstr "Змінити дотичну до кривої"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Light Baking"
+msgstr "Карта оÑвітленнÑ"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Lightmap Texel Size"
+msgstr "Підказка розміру карти оÑвітленнÑ"
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+msgid "Skins"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Use Named Skins"
+msgstr "ВикориÑтати прив'ÑÐ·ÑƒÐ²Ð°Ð½Ð½Ñ Ð¼Ð°Ñштабу"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "External Files"
+msgstr "Зовнішній"
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Store In Subdir"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Filter Script"
+msgstr "Фільтрувати Ñкрипти"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Keep Custom Tracks"
+msgstr "Ðетипове перетвореннÑ"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Optimizer"
+msgstr "Оптимізувати"
+
+#: editor/import/resource_importer_scene.cpp main/main.cpp
+#: modules/mono/mono_gd/gd_mono.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp scene/2d/camera_2d.cpp scene/2d/light_2d.cpp
+#: scene/2d/navigation_polygon.cpp scene/2d/ray_cast_2d.cpp scene/2d/sprite.cpp
+#: scene/2d/y_sort.cpp scene/3d/audio_stream_player_3d.cpp
+#: scene/3d/baked_lightmap.cpp scene/3d/interpolated_camera.cpp
+#: scene/3d/light.cpp scene/3d/navigation_mesh_instance.cpp
+#: scene/3d/physics_joint.cpp scene/3d/ray_cast.cpp scene/3d/sprite_3d.cpp
+#: scene/gui/graph_edit.cpp scene/gui/rich_text_label.cpp
+#: scene/resources/curve.cpp scene/resources/environment.cpp
+#: scene/resources/material.cpp
+msgid "Enabled"
+msgstr "Увімкнено"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Max Linear Error"
+msgstr "МакÑ. лінійна похибка:"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Max Angular Error"
+msgstr "МакÑ. кутова похибка:"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Max Angle"
+msgstr "Кут"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Remove Unused Tracks"
+msgstr "Видалити доріжку"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Clips"
+msgstr "Кліпи анімації"
+
+#: editor/import/resource_importer_scene.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/particles_2d.cpp scene/3d/area.cpp scene/3d/cpu_particles.cpp
+#: scene/3d/particles.cpp scene/resources/environment.cpp
+msgid "Amount"
+msgstr "Сума"
+
#: editor/import/resource_importer_scene.cpp
#: editor/plugins/mesh_library_editor_plugin.cpp
msgid "Import Scene"
@@ -6610,11 +6914,146 @@ msgstr "Повернули об'єкт, що походить від Node, у м
msgid "Saving..."
msgstr "ЗбереженнÑ..."
+#: editor/import/resource_importer_texture.cpp scene/resources/texture.cpp
+msgid "Lossy Quality"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "HDR Mode"
+msgstr "Режим HSV"
+
+#: editor/import/resource_importer_texture.cpp
+msgid "BPTC LDR"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/mesh_instance_2d.cpp scene/2d/multimesh_instance_2d.cpp
+#: scene/2d/particles_2d.cpp scene/2d/sprite.cpp scene/resources/style_box.cpp
+msgid "Normal Map"
+msgstr "Ðормальне картографуваннÑ"
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Process"
+msgstr "preprocess()"
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Fix Alpha Border"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Premult Alpha"
+msgstr "Редагувати прозоріÑть"
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Hdr As Srgb"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Invert Color"
+msgstr "Вершина"
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Normal Map Invert Y"
+msgstr "Ðормальне картографуваннÑ"
+
+#: editor/import/resource_importer_texture.cpp
+#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
+#: scene/audio/audio_stream_player.cpp scene/gui/video_player.cpp
+msgid "Stream"
+msgstr "Потік"
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Size Limit"
+msgstr "ÐžÐ±Ð¼ÐµÐ¶ÐµÐ½Ð½Ñ Ñ€Ð¾Ð·Ð¼Ñ–Ñ€Ñƒ вміÑту"
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Detect 3D"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "SVG"
+msgstr "HSV"
+
#: editor/import/resource_importer_texture.cpp
msgid ""
"Warning, no suitable PC VRAM compression enabled in Project Settings. This "
"texture will not display correctly on PC."
msgstr ""
+"Увага! У параметрах проєкту не увімкнено відповідного ÑтиÑÐºÐ°Ð½Ð½Ñ PC VRAM. Цю "
+"текÑтуру буде показано правильно на перÑональних комп'ютерах."
+
+#: editor/import/resource_importer_texture_atlas.cpp
+#, fuzzy
+msgid "Atlas File"
+msgstr "Розмір атлаÑу"
+
+#: editor/import/resource_importer_texture_atlas.cpp
+#, fuzzy
+msgid "Import Mode"
+msgstr "Режим екÑпортуваннÑ:"
+
+#: editor/import/resource_importer_texture_atlas.cpp
+#, fuzzy
+msgid "Crop To Region"
+msgstr "Ð’Ñтановити облаÑть плитки"
+
+#: editor/import/resource_importer_texture_atlas.cpp
+msgid "Trim Alpha Border From Region"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp scene/2d/physics_body_2d.cpp
+msgid "Force"
+msgstr "Сила"
+
+#: editor/import/resource_importer_wav.cpp
+msgid "8 Bit"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp main/main.cpp
+#: modules/mono/editor/csharp_project.cpp modules/mono/mono_gd/gd_mono.cpp
+msgid "Mono"
+msgstr "Моно"
+
+#: editor/import/resource_importer_wav.cpp
+#, fuzzy
+msgid "Max Rate"
+msgstr "Змішувати вузол"
+
+#: editor/import/resource_importer_wav.cpp
+#, fuzzy
+msgid "Max Rate Hz"
+msgstr "ЧаÑтота (Гц)"
+
+#: editor/import/resource_importer_wav.cpp
+msgid "Trim"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+#, fuzzy
+msgid "Normalize"
+msgstr "Ðормалізовано"
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+msgid "Loop Mode"
+msgstr "Режим переміщеннÑ"
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+msgid "Loop Begin"
+msgstr "Початок циклу"
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+msgid "Loop End"
+msgstr "Кінець циклу"
#: editor/import_defaults_editor.cpp
msgid "Select Importer"
@@ -6693,6 +7132,29 @@ msgid "Failed to load resource."
msgstr "Ðе вдалоÑÑ Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶Ð¸Ñ‚Ð¸ реÑурÑ."
#: editor/inspector_dock.cpp
+#, fuzzy
+msgid "Property Name Style"
+msgstr "Ðазва проєкту:"
+
+#: editor/inspector_dock.cpp scene/gui/color_picker.cpp
+msgid "Raw"
+msgstr "Без обробки"
+
+#: editor/inspector_dock.cpp
+#, fuzzy
+msgid "Capitalized"
+msgstr "З Великої"
+
+#: editor/inspector_dock.cpp
+#, fuzzy
+msgid "Localized"
+msgstr "Мова"
+
+#: editor/inspector_dock.cpp
+msgid "Localization not available for current language."
+msgstr ""
+
+#: editor/inspector_dock.cpp
msgid "Copy Properties"
msgstr "Копіювати влаÑтивоÑті"
@@ -7713,7 +8175,7 @@ msgstr "Помилка завантаженнÑ"
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Available URLs"
-msgstr "ДоÑтупні профілі:"
+msgstr "ДоÑтупні адреÑи"
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Download for this asset is already in progress!"
@@ -7744,18 +8206,26 @@ msgid "License (Z-A)"
msgstr "Ð›Ñ–Ñ†ÐµÐ½Ð·ÑƒÐ²Ð°Ð½Ð½Ñ (Z-A)"
#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgctxt "Pagination"
msgid "First"
msgstr "Перший"
-#: editor/plugins/asset_library_editor_plugin.cpp scene/gui/control.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgctxt "Pagination"
msgid "Previous"
msgstr "Ðазад"
-#: editor/plugins/asset_library_editor_plugin.cpp scene/gui/control.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgctxt "Pagination"
msgid "Next"
msgstr "Далі"
#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgctxt "Pagination"
msgid "Last"
msgstr "ОÑтанній"
@@ -8006,19 +8476,19 @@ msgstr ""
"Якщо позначено, переÑÑƒÐ²Ð°Ð½Ð½Ñ Ð²ÑƒÐ·Ð»Ñ–Ð² Control змінюватиме їхню прив'Ñзку, а не "
"їхні полÑ."
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Top Left"
msgstr "Згори ліворуч"
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Top Right"
msgstr "Згори праворуч"
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Bottom Right"
msgstr "Внизу праворуч"
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Bottom Left"
msgstr "Внизу ліворуч"
@@ -8730,6 +9200,19 @@ msgstr "Запекти пробу GI"
msgid "Gradient Edited"
msgstr "Змінено градієнт"
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+msgid "Swap GradientTexture2D Fill Points"
+msgstr ""
+
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+msgid "Swap Gradient Fill Points"
+msgstr ""
+
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+#, fuzzy
+msgid "Toggle Grid Snap"
+msgstr "Режим ПеремиканнÑ"
+
#: editor/plugins/item_list_editor_plugin.cpp
msgid "Item %d"
msgstr "Елемент %d"
@@ -8962,8 +9445,9 @@ msgstr ""
"Оновити з наÑвної Ñцени?\n"
"%s"
-#: editor/plugins/mesh_library_editor_plugin.cpp modules/gridmap/grid_map.cpp
-msgid "Mesh Library"
+#: editor/plugins/mesh_library_editor_plugin.cpp
+#, fuzzy
+msgid "MeshLibrary"
msgstr "Бібліотека Ñітки"
#: editor/plugins/mesh_library_editor_plugin.cpp
@@ -9314,7 +9798,7 @@ msgstr "Розділити Ñегмент (кривої)"
#: editor/plugins/spatial_editor_plugin.cpp editor/spatial_editor_gizmos.cpp
#: modules/csg/csg_gizmos.cpp
msgid "3D Gizmos"
-msgstr "Гаджети"
+msgstr "ПроÑторові гаджети"
#: editor/plugins/path_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp editor/spatial_editor_gizmos.cpp
@@ -9627,7 +10111,7 @@ msgstr "Закрити та зберегти зміни?"
#: editor/plugins/script_editor_plugin.cpp
#: editor/plugins/shader_editor_plugin.cpp
msgid "Auto Reload Scripts On External Change"
-msgstr ""
+msgstr "Ðвтоматично перезавантажувати Ñкрипти при зміні зовні"
#: editor/plugins/script_editor_plugin.cpp
msgid "Error writing TextFile:"
@@ -9712,17 +10196,17 @@ msgstr "Довідник з клаÑу %s"
#: editor/plugins/script_editor_plugin.cpp
msgid "Auto Reload And Parse Scripts On Save"
-msgstr ""
+msgstr "Ðвтоматично перезавантажувати Ñ– оброблÑти Ñкрипти при збереженні"
#: editor/plugins/script_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
msgid "Find Next"
-msgstr "Знайти наÑтупне"
+msgstr "Знайти далі"
#: editor/plugins/script_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
msgid "Find Previous"
-msgstr "Знайти попереднє"
+msgstr "Знайти позаду"
#: editor/plugins/script_editor_plugin.cpp
msgid "Filter scripts"
@@ -9886,7 +10370,7 @@ msgstr "Результати пошуку"
#: editor/plugins/script_editor_plugin.cpp
msgid "Open Dominant Script On Scene Change"
-msgstr ""
+msgstr "Відкривати оÑновний Ñкрипт при зміні Ñцени"
#: editor/plugins/script_editor_plugin.cpp
msgid "External"
@@ -9906,15 +10390,15 @@ msgstr "Виберіть файл шаблону"
#: editor/plugins/script_editor_plugin.cpp
msgid "Highlight Current Script"
-msgstr ""
+msgstr "ПідÑвічувати поточний Ñкрипт"
#: editor/plugins/script_editor_plugin.cpp
msgid "Script Temperature History Size"
-msgstr ""
+msgstr "Розмір журналу температури Ñкриптів"
#: editor/plugins/script_editor_plugin.cpp
msgid "Current Script Background Color"
-msgstr "Ðекоректний колір тла."
+msgstr "Колір тла поточного Ñкрипту"
#: editor/plugins/script_editor_plugin.cpp
msgid "Group Help Pages"
@@ -9926,11 +10410,11 @@ msgstr "Створити Ñкрипт"
#: editor/plugins/script_editor_plugin.cpp
msgid "List Script Names As"
-msgstr "Ðазва Ñкрипту:"
+msgstr "Показувати ÑпиÑок назв Ñкриптів Ñк"
#: editor/plugins/script_editor_plugin.cpp
msgid "Exec Flags"
-msgstr ""
+msgstr "Виконувані прапорці"
#: editor/plugins/script_editor_plugin.cpp
msgid "Clear Recent Scripts"
@@ -9945,8 +10429,8 @@ msgstr "З'Ñ”Ð´Ð½Ð°Ð½Ð½Ñ Ð· методом:"
msgid "Source"
msgstr "Джерело"
-#: editor/plugins/script_text_editor.cpp scene/3d/interpolated_camera.cpp
-#: scene/animation/skeleton_ik.cpp
+#: editor/plugins/script_text_editor.cpp platform/uwp/export/export.cpp
+#: scene/3d/interpolated_camera.cpp scene/animation/skeleton_ik.cpp
msgid "Target"
msgstr "ПризначеннÑ"
@@ -10749,19 +11233,19 @@ msgstr "ПіÑлÑ"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Manipulator Gizmo Size"
-msgstr ""
+msgstr "Розмір гаджета маніпулÑтора"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Manipulator Gizmo Opacity"
-msgstr ""
+msgstr "ÐепрозоріÑть гаджета маніпулÑтора"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Show Viewport Rotation Gizmo"
-msgstr "ЗафікÑувати Ð¾Ð±ÐµÑ€Ñ‚Ð°Ð½Ð½Ñ Ð¿ÐµÑ€ÐµÐ³Ð»Ñду"
+msgstr "Показувати гаджет Ð¾Ð±ÐµÑ€Ñ‚Ð°Ð½Ð½Ñ Ð¿Ð°Ð½ÐµÐ»Ñ– переглÑду"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Instanced"
-msgstr "ЕкземплÑÑ€"
+msgstr "Має екземплÑÑ€"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Unnamed Gizmo"
@@ -10923,7 +11407,9 @@ msgstr "ШвидкіÑть:"
#: editor/plugins/sprite_frames_editor_plugin.cpp
#: modules/gltf/gltf_animation.cpp modules/minimp3/audio_stream_mp3.cpp
-#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp scene/2d/path_2d.cpp
+#: modules/minimp3/resource_importer_mp3.cpp
+#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp
+#: modules/stb_vorbis/resource_importer_ogg_vorbis.cpp scene/2d/path_2d.cpp
#: scene/3d/path.cpp scene/resources/animation.cpp scene/resources/material.cpp
msgid "Loop"
msgstr "Зациклити"
@@ -11695,16 +12181,16 @@ msgstr "ЗнÑти перетвореннÑ"
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Tile Map"
-msgstr "Ðамалювати карту плиток"
+msgstr "Карта плиток"
#: editor/plugins/tile_map_editor_plugin.cpp
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Palette Min Width"
-msgstr ""
+msgstr "Мінімальна ширина палітри"
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Palette Item Hseparation"
-msgstr ""
+msgstr "Гор. роздільник елемента палітри"
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Show Tile Names"
@@ -11808,8 +12294,9 @@ msgstr "Бітова маÑка"
msgid "Priority"
msgstr "ПріоритетніÑть"
-#: editor/plugins/tile_set_editor_plugin.cpp main/main.cpp scene/gui/button.cpp
-#: scene/gui/item_list.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp main/main.cpp
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#: scene/gui/button.cpp scene/gui/item_list.cpp
msgid "Icon"
msgstr "Піктограма"
@@ -13188,10 +13675,6 @@ msgstr ""
"екÑÐ¿Ð¾Ñ€Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð°Ð±Ð¾ параметрах екÑпортуваннÑ."
#: editor/project_export.cpp
-msgid "Release"
-msgstr "ВипуÑк"
-
-#: editor/project_export.cpp
msgid "Exporting All"
msgstr "ЕкÑÐ¿Ð¾Ñ€Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ ÑƒÑього"
@@ -13312,10 +13795,12 @@ msgid ""
"Note: Encryption key needs to be stored in the binary,\n"
"you need to build the export templates from source."
msgstr ""
+"ЗауваженнÑ: ключ ÑˆÐ¸Ñ„Ñ€ÑƒÐ²Ð°Ð½Ð½Ñ Ð¼Ð°Ñ” бути збережено у двійковому файлі,\n"
+"вам Ñлід зібрати шаблони екÑÐ¿Ð¾Ñ€Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð· початкового коду."
#: editor/project_export.cpp
msgid "More Info..."
-msgstr "Додаткова інформаціÑ"
+msgstr "Додаткова інформаціÑ…"
#: editor/project_export.cpp
msgid "Export PCK/Zip"
@@ -13648,10 +14133,9 @@ msgstr ""
#. TRANSLATORS: This refers to the application where users manage their Godot projects.
#: editor/project_manager.cpp
-#, fuzzy
msgctxt "Application"
msgid "Project Manager"
-msgstr "Керівник проєкту"
+msgstr "ÐšÐµÑ€ÑƒÐ²Ð°Ð½Ð½Ñ Ð¿Ñ€Ð¾Ñ”ÐºÑ‚Ð°Ð¼Ð¸"
#: editor/project_manager.cpp
msgid "Local Projects"
@@ -14638,11 +15122,11 @@ msgstr "Вилучити уÑпадковуваннÑ? (Без можливоÑÑ
#: editor/scene_tree_dock.cpp
msgid "Show Scene Tree Root Selection"
-msgstr "Центрувати на вибраному"
+msgstr "Показувати кореневе Ð¿Ð¾Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ñ–Ñ”Ñ€Ð°Ñ€Ñ…Ñ–Ñ— Ñцени"
#: editor/scene_tree_dock.cpp
msgid "Derive Script Globals By Name"
-msgstr ""
+msgstr "ÐŸÐ¾Ñ…Ð¾Ð´Ð¶ÐµÐ½Ð½Ñ Ð·Ð°Ð³Ð°Ð»ÑŒÐ½Ð¸Ñ… змінних Ñкрипту за назвами"
#: editor/scene_tree_dock.cpp
msgid "Use Favorites Root Selection"
@@ -14958,15 +15442,15 @@ msgstr "Фільтрувати змінні Ñтека"
#: editor/script_editor_debugger.cpp
msgid "Auto Switch To Remote Scene Tree"
-msgstr ""
+msgstr "Ðвтоматично перемикатиÑÑ Ð½Ð° ієрархію віддаленої Ñцени"
#: editor/script_editor_debugger.cpp
msgid "Remote Scene Tree Refresh Interval"
-msgstr ""
+msgstr "Інтервал Ð¾Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ñ–Ñ”Ñ€Ð°Ñ€Ñ…Ñ–Ñ— віддаленої Ñцени"
#: editor/script_editor_debugger.cpp
msgid "Remote Inspect Refresh Interval"
-msgstr ""
+msgstr "Інтервал Ð¾Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð²Ñ–Ð´Ð´Ð°Ð»ÐµÐ½Ð¾Ð³Ð¾ інÑпектуваннÑ"
#: editor/script_editor_debugger.cpp
msgid "Network Profiler"
@@ -15069,13 +15553,14 @@ msgstr "Змінити Ñ€Ð°Ð´Ñ–ÑƒÑ Ð¾ÑвітленнÑ"
#: editor/spatial_editor_gizmos.cpp
msgid "Stream Player 3D"
-msgstr ""
+msgstr "Потокове Ð¼Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð¿Ñ€Ð¾Ñторового програвача"
#: editor/spatial_editor_gizmos.cpp
msgid "Change AudioStreamPlayer3D Emission Angle"
msgstr "Змінити кут Ð²Ð¸Ð¿Ñ€Ð¾Ð¼Ñ–Ð½ÑŽÐ²Ð°Ð½Ð½Ñ AudioStreamPlayer3D"
#: editor/spatial_editor_gizmos.cpp modules/gltf/gltf_node.cpp
+#: platform/osx/export/export.cpp
msgid "Camera"
msgstr "Фотоапарат"
@@ -15103,7 +15588,7 @@ msgstr "Форма"
#: editor/spatial_editor_gizmos.cpp
msgid "Visibility Notifier"
-msgstr ""
+msgstr "Сповіщувач щодо видимоÑті"
#: editor/spatial_editor_gizmos.cpp
msgid "Change Notifier AABB"
@@ -15175,19 +15660,19 @@ msgstr "Режим навігації"
#: editor/spatial_editor_gizmos.cpp
msgid "Joint Body A"
-msgstr ""
+msgstr "З'Ñ”Ð´Ð½Ð°Ð½Ð½Ñ Ñ‚Ñ–Ð» A"
#: editor/spatial_editor_gizmos.cpp
msgid "Joint Body B"
-msgstr ""
+msgstr "З'Ñ”Ð´Ð½Ð°Ð½Ð½Ñ Ñ‚Ñ–Ð» B"
#: editor/spatial_editor_gizmos.cpp
msgid "Room Edge"
-msgstr ""
+msgstr "Край кімнати"
#: editor/spatial_editor_gizmos.cpp
msgid "Room Overlap"
-msgstr ""
+msgstr "ÐŸÐµÑ€ÐµÐºÑ€Ð¸Ñ‚Ñ‚Ñ ÐºÑ–Ð¼Ð½Ð°Ñ‚Ð¸"
#: editor/spatial_editor_gizmos.cpp
msgid "Set Room Point Position"
@@ -15195,15 +15680,15 @@ msgstr "Задати Ð¿Ð¾Ð»Ð¾Ð¶ÐµÐ½Ð½Ñ Ñ‚Ð¾Ñ‡ÐºÐ¸ кімнати"
#: editor/spatial_editor_gizmos.cpp scene/3d/portal.cpp
msgid "Portal Margin"
-msgstr "Ð’Ñтановити поле"
+msgstr "Поле порталу"
#: editor/spatial_editor_gizmos.cpp
msgid "Portal Edge"
-msgstr ""
+msgstr "Край порталу"
#: editor/spatial_editor_gizmos.cpp
msgid "Portal Arrow"
-msgstr ""
+msgstr "Стрілка порталу"
#: editor/spatial_editor_gizmos.cpp
msgid "Set Portal Point Position"
@@ -15211,20 +15696,20 @@ msgstr "Задати Ð¿Ð¾Ð»Ð¾Ð¶ÐµÐ½Ð½Ñ Ñ‚Ð¾Ñ‡ÐºÐ¸ порталу"
#: editor/spatial_editor_gizmos.cpp
msgid "Portal Front"
-msgstr ""
+msgstr "ÐŸÐµÑ€ÐµÐ´Ð½Ñ Ñ‡Ð°Ñтина порталу"
#: editor/spatial_editor_gizmos.cpp
msgid "Portal Back"
-msgstr "ПовернутиÑÑ Ð½Ð°Ð·Ð°Ð´"
+msgstr "Ð—Ð°Ð´Ð½Ñ Ñ‡Ð°Ñтина порталу"
#: editor/spatial_editor_gizmos.cpp scene/2d/light_occluder_2d.cpp
#: scene/2d/tile_map.cpp
msgid "Occluder"
-msgstr "Режим перешкоди"
+msgstr "ЗакупорюваннÑ"
#: editor/spatial_editor_gizmos.cpp
msgid "Set Occluder Sphere Radius"
-msgstr "Змінити Ñ€Ð°Ð´Ñ–ÑƒÑ Ñфери закупорюваннÑ"
+msgstr "Ð’Ñтановити Ñ€Ð°Ð´Ñ–ÑƒÑ Ñфери закупорюваннÑ"
#: editor/spatial_editor_gizmos.cpp
msgid "Set Occluder Sphere Position"
@@ -15252,21 +15737,21 @@ msgstr "Створено затінювальний полігон"
#: main/main.cpp
msgid "Godot Physics"
-msgstr ""
+msgstr "Фізика Godot"
#: main/main.cpp servers/physics_2d/physics_2d_server_sw.cpp
#: servers/visual/visual_server_scene.cpp
msgid "Use BVH"
-msgstr ""
+msgstr "ВикориÑтовувати BVH"
#: main/main.cpp servers/physics_2d/physics_2d_server_sw.cpp
#: servers/visual/visual_server_scene.cpp
msgid "BVH Collision Margin"
-msgstr "Режим перешкоди"
+msgstr "Поле Ð·Ñ–Ñ‚ÐºÐ½ÐµÐ½Ð½Ñ BVH"
#: main/main.cpp
msgid "Crash Handler"
-msgstr "Ð’Ñтановити обробник"
+msgstr "Обробник аварій"
#: main/main.cpp
msgid "Multithreaded Server"
@@ -15274,31 +15759,31 @@ msgstr "Мультивузловий набір"
#: main/main.cpp
msgid "RID Pool Prealloc"
-msgstr ""
+msgstr "Попереднє Ñ€Ð¾Ð·Ð¼Ñ–Ñ‰ÐµÐ½Ð½Ñ Ð±ÑƒÑ„ÐµÑ€Ð° RID"
#: main/main.cpp
msgid "Debugger stdout"
-msgstr "Зневаджувач"
+msgstr "ДіагноÑтичне Ñтандартне виведеннÑ"
#: main/main.cpp
msgid "Max Chars Per Second"
-msgstr ""
+msgstr "МакÑ. к-ть Ñимволів на Ñекунду"
#: main/main.cpp
msgid "Max Messages Per Frame"
-msgstr ""
+msgstr "МакÑ. к-ть повідомлень на кадр"
#: main/main.cpp
msgid "Max Errors Per Second"
-msgstr ""
+msgstr "МакÑ. к-ть помилок на Ñекунду"
#: main/main.cpp
msgid "Max Warnings Per Second"
-msgstr ""
+msgstr "МакÑ. к-ть попереджень на Ñекунду"
#: main/main.cpp
msgid "Flush stdout On Print"
-msgstr ""
+msgstr "Стирати stdout при виведенні"
#: main/main.cpp servers/visual_server.cpp
msgid "Logging"
@@ -15306,11 +15791,11 @@ msgstr "ЖурналюваннÑ"
#: main/main.cpp
msgid "File Logging"
-msgstr ""
+msgstr "Ð–ÑƒÑ€Ð½Ð°Ð»ÑŽÐ²Ð°Ð½Ð½Ñ Ð´Ð¾ файлів"
#: main/main.cpp
msgid "Enable File Logging"
-msgstr "Увімкнути фільтруваннÑ"
+msgstr "Увімкнути Ð¶ÑƒÑ€Ð½Ð°Ð»ÑŽÐ²Ð°Ð½Ð½Ñ Ð´Ð¾ файлів"
#: main/main.cpp
msgid "Log Path"
@@ -15318,7 +15803,7 @@ msgstr "ШлÑÑ… до журналу"
#: main/main.cpp
msgid "Max Log Files"
-msgstr ""
+msgstr "МакÑ. к-ть файлів журналу"
#: main/main.cpp
msgid "Driver"
@@ -15326,17 +15811,18 @@ msgstr "Драйвер"
#: main/main.cpp
msgid "Driver Name"
-msgstr "Ðазва Ñкрипту:"
+msgstr "Ðазва драйвера"
#: main/main.cpp
msgid "Fallback To GLES2"
-msgstr ""
+msgstr "Резервний GLES2"
#: main/main.cpp
msgid "Use Nvidia Rect Flicker Workaround"
-msgstr ""
+msgstr "Обхідний шлÑÑ… Ð´Ð»Ñ ÑƒÑÑƒÐ²Ð°Ð½Ð½Ñ Ð±Ð»Ð¸Ð¼Ð°Ð½Ð½Ñ Ð¿Ñ€Ñмокутників на Nvidia"
-#: main/main.cpp platform/uwp/os_uwp.cpp
+#: main/main.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp platform/uwp/os_uwp.cpp
msgid "Display"
msgstr "Показ"
@@ -15361,11 +15847,11 @@ msgstr "Завжди згори"
#: main/main.cpp
msgid "Test Width"
-msgstr "Ліворуч за шириною"
+msgstr "Перевірити ширину"
#: main/main.cpp
msgid "Test Height"
-msgstr "ТеÑтуваннÑ"
+msgstr "Перевірити виÑоту"
#: main/main.cpp
msgid "DPI"
@@ -15373,43 +15859,31 @@ msgstr "РоздільніÑть"
#: main/main.cpp
msgid "Allow hiDPI"
-msgstr ""
+msgstr "Дозволити hiDPI"
#: main/main.cpp
msgid "V-Sync"
-msgstr "Синхронізувати"
+msgstr "Верт. ÑинхронізаціÑ"
#: main/main.cpp
msgid "Use V-Sync"
-msgstr "За допомогою функції прив'Ñзки"
+msgstr "ВикориÑтовувати верт. Ñинхронізацію"
#: main/main.cpp
msgid "Per Pixel Transparency"
-msgstr ""
+msgstr "ПрозоріÑть за пікÑелÑми"
#: main/main.cpp
msgid "Allowed"
-msgstr "дозволено"
-
-#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp scene/2d/camera_2d.cpp
-#: scene/2d/light_2d.cpp scene/2d/navigation_polygon.cpp
-#: scene/2d/ray_cast_2d.cpp scene/2d/sprite.cpp scene/2d/y_sort.cpp
-#: scene/3d/audio_stream_player_3d.cpp scene/3d/baked_lightmap.cpp
-#: scene/3d/interpolated_camera.cpp scene/3d/light.cpp
-#: scene/3d/navigation_mesh_instance.cpp scene/3d/ray_cast.cpp
-#: scene/3d/sprite_3d.cpp scene/gui/graph_edit.cpp
-#: scene/gui/rich_text_label.cpp scene/resources/curve.cpp
-#: scene/resources/environment.cpp
-msgid "Enabled"
-msgstr "Увімкнено"
+msgstr "Дозволено"
#: main/main.cpp
msgid "Intended Usage"
-msgstr ""
+msgstr "Бажане викориÑтаннÑ"
#: main/main.cpp
msgid "Framebuffer Allocation"
-msgstr "Кадрувати вибране"
+msgstr "Ð Ð¾Ð·Ð¼Ñ–Ñ‰ÐµÐ½Ð½Ñ Ð±ÑƒÑ„ÐµÑ€Ð° кадрів"
#: main/main.cpp platform/uwp/os_uwp.cpp
msgid "Energy Saving"
@@ -15421,36 +15895,37 @@ msgstr "Потоки"
#: main/main.cpp servers/physics_2d/physics_2d_server_wrap_mt.h
msgid "Thread Model"
-msgstr "Режим ПеремиканнÑ"
+msgstr "Модель потоків"
#: main/main.cpp
msgid "Thread Safe BVH"
-msgstr ""
+msgstr "BVH, безпечна Ð´Ð»Ñ Ð¿Ð¾Ñ‚Ð¾ÐºÑ–Ð²"
#: main/main.cpp
msgid "Handheld"
msgstr "Кишеньковий приÑтрій"
-#: main/main.cpp
+#: main/main.cpp platform/javascript/export/export.cpp
+#: platform/uwp/export/export.cpp
msgid "Orientation"
msgstr "ОрієнтаціÑ"
#: main/main.cpp scene/gui/scroll_container.cpp scene/gui/text_edit.cpp
-#: scene/main/scene_tree.cpp
+#: scene/main/scene_tree.cpp scene/register_scene_types.cpp
msgid "Common"
msgstr "Загальні"
#: main/main.cpp
msgid "Physics FPS"
-msgstr "Фізичний кадр %"
+msgstr "ЧаÑтота кадрів фізики"
#: main/main.cpp
msgid "Force FPS"
-msgstr "ПримуÑово запиÑати"
+msgstr "ПримуÑова чаÑтота кадрів"
#: main/main.cpp
msgid "Enable Pause Aware Picking"
-msgstr ""
+msgstr "Увімкнути вибір із врахуваннÑм пауз"
#: main/main.cpp scene/gui/item_list.cpp scene/gui/popup_menu.cpp
#: scene/gui/scroll_container.cpp scene/gui/text_edit.cpp scene/gui/tree.cpp
@@ -15468,24 +15943,24 @@ msgstr "stdout"
#: main/main.cpp
msgid "Print FPS"
-msgstr ""
+msgstr "Виводити чаÑтоту кадрів"
#: main/main.cpp
msgid "Verbose stdout"
-msgstr ""
+msgstr "Докладно до stdout"
#: main/main.cpp
#, fuzzy
-msgid "Frame Delay (msec)"
-msgstr "Кадрувати вибране"
+msgid "Frame Delay Msec"
+msgstr "Затримка кадру (мÑ)"
#: main/main.cpp
msgid "Low Processor Mode"
-msgstr ""
+msgstr "Режим низького ÑÐ¿Ð¾Ð¶Ð¸Ð²Ð°Ð½Ð½Ñ Ð¿Ñ€Ð¾Ñ†ÐµÑора"
#: main/main.cpp
msgid "Delta Sync After Draw"
-msgstr ""
+msgstr "Дельта-ÑÐ¸Ð½Ñ…Ñ€Ð¾Ð½Ñ–Ð·Ð°Ñ†Ñ–Ñ Ð¿Ñ–ÑÐ»Ñ Ð¼Ð°Ð»ÑŽÐ²Ð°Ð½Ð½Ñ"
#: main/main.cpp
msgid "iOS"
@@ -15493,7 +15968,7 @@ msgstr "iOS"
#: main/main.cpp
msgid "Hide Home Indicator"
-msgstr ""
+msgstr "Приховати індикатор домівки"
#: main/main.cpp
msgid "Input Devices"
@@ -15501,19 +15976,19 @@ msgstr "ПриÑтрої вводу"
#: main/main.cpp
msgid "Pointing"
-msgstr "&ФокуÑ"
+msgstr "ФокуÑ"
#: main/main.cpp
msgid "Touch Delay"
-msgstr ""
+msgstr "Затримка торканнÑ"
#: main/main.cpp servers/visual_server.cpp
msgid "GLES3"
-msgstr ""
+msgstr "GLES3"
#: main/main.cpp servers/visual_server.cpp
msgid "Shaders"
-msgstr "Шейдер"
+msgstr "Шейдери"
#: main/main.cpp
msgid "Debug Shader Fallbacks"
@@ -15527,7 +16002,7 @@ msgstr "Середовище"
#: main/main.cpp
msgid "Default Clear Color"
-msgstr ""
+msgstr "Типовий колір очищеннÑ"
#: main/main.cpp
msgid "Boot Splash"
@@ -15543,24 +16018,23 @@ msgstr "ЗображеннÑ"
#: main/main.cpp
msgid "Fullsize"
-msgstr ""
+msgstr "Повний розмір"
#: main/main.cpp scene/resources/dynamic_font.cpp
msgid "Use Filter"
-msgstr "Фільтр:"
+msgstr "ФільтруваннÑ"
#: main/main.cpp scene/resources/style_box.cpp
-#, fuzzy
msgid "BG Color"
-msgstr "Кольори"
+msgstr "Колір тла"
#: main/main.cpp
msgid "macOS Native Icon"
-msgstr "Ð’Ñтановити піктограму плитки"
+msgstr "ВлаÑна піктограма Ð´Ð»Ñ macOS"
#: main/main.cpp
msgid "Windows Native Icon"
-msgstr ""
+msgstr "ВлаÑна піктограма Ð´Ð»Ñ Windows"
#: main/main.cpp
msgid "Buffering"
@@ -15572,15 +16046,15 @@ msgstr ""
#: main/main.cpp
msgid "Emulate Touch From Mouse"
-msgstr ""
+msgstr "Емулювати дотик з миші"
#: main/main.cpp
msgid "Emulate Mouse From Touch"
-msgstr ""
+msgstr "Емулювати мишу з дотику"
#: main/main.cpp
msgid "Mouse Cursor"
-msgstr "КурÑор мишки"
+msgstr "КурÑор миші"
#: main/main.cpp
msgid "Custom Image"
@@ -15592,12 +16066,7 @@ msgstr ""
#: main/main.cpp
msgid "Tooltip Position Offset"
-msgstr "ВідÑтуп повороту:"
-
-#: main/main.cpp modules/mono/editor/csharp_project.cpp
-#: modules/mono/mono_gd/gd_mono.cpp
-msgid "Mono"
-msgstr "Моно"
+msgstr "ВідÑтуп позиції підказки"
#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp
msgid "Debugger Agent"
@@ -15609,7 +16078,7 @@ msgstr "Зневаджувач"
#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp
msgid "Wait Timeout"
-msgstr "Перевищено Ñ‡Ð°Ñ Ð¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð½Ð½Ñ Ð½Ð° відповідь."
+msgstr "Ð§Ð°Ñ Ð¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð½Ð½Ñ Ð½Ð° відповідь"
#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp
msgid "Args"
@@ -15634,7 +16103,7 @@ msgstr "РозтÑгнути"
#: main/main.cpp
msgid "Aspect"
-msgstr "ÐÑпект:"
+msgstr "ÐÑпект"
#: main/main.cpp
msgid "Shrink"
@@ -15693,7 +16162,6 @@ msgid "Calculate Tangents"
msgstr ""
#: modules/csg/csg_shape.cpp
-#, fuzzy
msgid "Use Collision"
msgstr "ЗіткненнÑ"
@@ -15708,9 +16176,8 @@ msgid "Collision Mask"
msgstr "Режим перешкоди"
#: modules/csg/csg_shape.cpp
-#, fuzzy
msgid "Invert Faces"
-msgstr "Перемкнути регіÑтр"
+msgstr "Інвертувати поверхні"
#: modules/csg/csg_shape.cpp scene/2d/canvas_item.cpp scene/2d/particles_2d.cpp
#: scene/resources/primitive_meshes.cpp
@@ -15730,16 +16197,15 @@ msgstr "РадіуÑ"
#: modules/csg/csg_shape.cpp scene/resources/primitive_meshes.cpp
msgid "Radial Segments"
-msgstr "Ðргументи головної Ñцени:"
+msgstr "Радіальні Ñегменти"
#: modules/csg/csg_shape.cpp scene/resources/primitive_meshes.cpp
msgid "Rings"
msgstr "КільцÑ"
#: modules/csg/csg_shape.cpp
-#, fuzzy
msgid "Smooth Faces"
-msgstr "Згладжений"
+msgstr "Згладжені поверхні"
#: modules/csg/csg_shape.cpp
msgid "Sides"
@@ -15747,15 +16213,15 @@ msgstr "Сторони"
#: modules/csg/csg_shape.cpp
msgid "Cone"
-msgstr ""
+msgstr "КонуÑ"
#: modules/csg/csg_shape.cpp
msgid "Inner Radius"
-msgstr "Внутрішній радіуÑ:"
+msgstr "Внутрішній радіуÑ"
#: modules/csg/csg_shape.cpp
msgid "Outer Radius"
-msgstr "Внутрішній радіуÑ:"
+msgstr "Зовнішній радіуÑ"
#: modules/csg/csg_shape.cpp
msgid "Ring Sides"
@@ -15776,9 +16242,8 @@ msgid "Spin Sides"
msgstr ""
#: modules/csg/csg_shape.cpp
-#, fuzzy
msgid "Path Node"
-msgstr "Ð’Ñтавити вузли"
+msgstr "Вузол контуру"
#: modules/csg/csg_shape.cpp
msgid "Path Interval Type"
@@ -15794,45 +16259,39 @@ msgstr ""
#: modules/csg/csg_shape.cpp
msgid "Path Rotation"
-msgstr "Випадкове обертаннÑ:"
+msgstr "ÐžÐ±ÐµÑ€Ñ‚Ð°Ð½Ð½Ñ ÐºÐ¾Ð½Ñ‚ÑƒÑ€Ñƒ"
#: modules/csg/csg_shape.cpp
-#, fuzzy
msgid "Path Local"
-msgstr "Зробити локальним"
+msgstr "Локальний контур"
#: modules/csg/csg_shape.cpp
-#, fuzzy
msgid "Path Continuous U"
-msgstr "Ðеперервна"
+msgstr "Ðеперервна U контуру"
#: modules/csg/csg_shape.cpp
msgid "Path U Distance"
-msgstr "ВідÑтань вибору:"
+msgstr "U-відÑтань контуру"
#: modules/csg/csg_shape.cpp
-#, fuzzy
msgid "Path Joined"
-msgstr "Випадкове обертаннÑ:"
+msgstr "Контур з'єднано"
#: modules/enet/networked_multiplayer_enet.cpp
msgid "Compression Mode"
msgstr "Режим перешкоди"
#: modules/enet/networked_multiplayer_enet.cpp
-#, fuzzy
msgid "Transfer Channel"
-msgstr "Зміна перетвореннÑ"
+msgstr "Канал перенеÑеннÑ"
#: modules/enet/networked_multiplayer_enet.cpp
-#, fuzzy
msgid "Channel Count"
-msgstr "ЕкземплÑÑ€"
+msgstr "КількіÑть каналів"
#: modules/enet/networked_multiplayer_enet.cpp
-#, fuzzy
msgid "Always Ordered"
-msgstr "Завжди показувати ґратку"
+msgstr "Завжди упорÑдковані"
#: modules/enet/networked_multiplayer_enet.cpp
msgid "Server Relay"
@@ -15844,37 +16303,32 @@ msgstr ""
#: modules/enet/networked_multiplayer_enet.cpp
msgid "DTLS Hostname"
-msgstr ""
+msgstr "Ðазва вузла DTLS"
#: modules/enet/networked_multiplayer_enet.cpp
-#, fuzzy
msgid "Use DTLS"
-msgstr "ВикориÑтовувати SSL"
+msgstr "DTLS"
#: modules/gdnative/gdnative.cpp
msgid "Config File"
msgstr "Файл налаштувань"
#: modules/gdnative/gdnative.cpp
-#, fuzzy
msgid "Load Once"
-msgstr "Завантажити реÑурÑ"
+msgstr "Одноразова завантаженнÑ"
#: modules/gdnative/gdnative.cpp
#: modules/visual_script/visual_script_func_nodes.cpp
-#, fuzzy
msgid "Singleton"
-msgstr "КаркаÑ"
+msgstr "Одинак (шаблон проєктуваннÑ)"
#: modules/gdnative/gdnative.cpp
-#, fuzzy
msgid "Symbol Prefix"
-msgstr "Колір Ñимволу:"
+msgstr "ÐŸÑ€ÐµÑ„Ñ–ÐºÑ Ñимволу"
#: modules/gdnative/gdnative.cpp
-#, fuzzy
msgid "Reloadable"
-msgstr "Перезавантажити"
+msgstr "Можна перезавантажувати"
#: modules/gdnative/gdnative.cpp
#: modules/gdnative/gdnative_library_singleton_editor.cpp
@@ -15931,18 +16385,16 @@ msgid "Libraries: "
msgstr "Бібліотеки: "
#: modules/gdnative/nativescript/nativescript.cpp
-#, fuzzy
msgid "Class Name"
-msgstr "Ðазва клаÑу:"
+msgstr "Ðазва клаÑу"
#: modules/gdnative/nativescript/nativescript.cpp
msgid "Script Class"
-msgstr "Ðазва Ñкрипту:"
+msgstr "ÐšÐ»Ð°Ñ Ñкрипту"
#: modules/gdnative/nativescript/nativescript.cpp
-#, fuzzy
msgid "Icon Path"
-msgstr "ФокуÑувати шлÑÑ…"
+msgstr "ШлÑÑ… до піктограми"
#: modules/gdnative/register_types.cpp
msgid "GDNative"
@@ -16017,7 +16469,7 @@ msgstr "Об'єкт не може надавати довжину."
#: modules/gdscript/language_server/gdscript_language_server.cpp
msgid "Language Server"
-msgstr "Мова:"
+msgstr "Сервер мови"
#: modules/gdscript/language_server/gdscript_language_server.cpp
msgid "Enable Smart Resolve"
@@ -16025,11 +16477,11 @@ msgstr "Ðе вдаєтьÑÑ Ð²Ð¸Ñ€Ñ–ÑˆÐ¸Ñ‚Ð¸"
#: modules/gdscript/language_server/gdscript_language_server.cpp
msgid "Show Native Symbols In Editor"
-msgstr ""
+msgstr "Показувати природні Ñимволи у редакторі"
#: modules/gdscript/language_server/gdscript_language_server.cpp
msgid "Use Thread"
-msgstr ""
+msgstr "Потік обробки"
#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp
msgid "Export Mesh GLTF2"
@@ -16040,44 +16492,36 @@ msgid "Export GLTF..."
msgstr "ЕкÑпортувати GLTF…"
#: modules/gltf/gltf_accessor.cpp
-#, fuzzy
msgid "Buffer View"
-msgstr "ВиглÑд ззаду"
+msgstr "ПереглÑд буфера"
#: modules/gltf/gltf_accessor.cpp modules/gltf/gltf_buffer_view.cpp
-#, fuzzy
msgid "Byte Offset"
-msgstr "ВідÑтуп Ñітки:"
+msgstr "ВідÑтуп у байтах"
#: modules/gltf/gltf_accessor.cpp
-#, fuzzy
msgid "Component Type"
-msgstr "Складники"
+msgstr "Тип компонента"
#: modules/gltf/gltf_accessor.cpp
-#, fuzzy
msgid "Normalized"
-msgstr "Звичайний"
+msgstr "Ðормалізовано"
#: modules/gltf/gltf_accessor.cpp
-#, fuzzy
msgid "Count"
-msgstr "Сума"
+msgstr "КількіÑть"
#: modules/gltf/gltf_accessor.cpp scene/resources/visual_shader_nodes.cpp
-#, fuzzy
msgid "Min"
-msgstr "ОÑновний"
+msgstr "Мін."
#: modules/gltf/gltf_accessor.cpp scene/resources/visual_shader_nodes.cpp
-#, fuzzy
msgid "Max"
-msgstr "ПоєднаннÑ"
+msgstr "МакÑ."
#: modules/gltf/gltf_accessor.cpp
-#, fuzzy
msgid "Sparse Count"
-msgstr "ЕкземплÑÑ€"
+msgstr "КількіÑть розÑіюваннÑ"
#: modules/gltf/gltf_accessor.cpp
msgid "Sparse Indices Buffer View"
@@ -16088,9 +16532,8 @@ msgid "Sparse Indices Byte Offset"
msgstr ""
#: modules/gltf/gltf_accessor.cpp
-#, fuzzy
msgid "Sparse Indices Component Type"
-msgstr "Ðналіз геометрії..."
+msgstr "Тип компонентів індекÑів розÑіюваннÑ"
#: modules/gltf/gltf_accessor.cpp
msgid "Sparse Values Buffer View"
@@ -16101,37 +16544,32 @@ msgid "Sparse Values Byte Offset"
msgstr ""
#: modules/gltf/gltf_buffer_view.cpp
-#, fuzzy
msgid "Buffer"
-msgstr "Буфери"
+msgstr "Буфер"
#: modules/gltf/gltf_buffer_view.cpp
-#, fuzzy
msgid "Byte Length"
-msgstr "&Розмір буфера:"
+msgstr "Байтова довжина"
#: modules/gltf/gltf_buffer_view.cpp
msgid "Byte Stride"
msgstr ""
#: modules/gltf/gltf_buffer_view.cpp
-#, fuzzy
msgid "Indices"
-msgstr "ПриÑтрої вводу"
+msgstr "ІндекÑи"
#: modules/gltf/gltf_camera.cpp
-#, fuzzy
msgid "FOV Size"
-msgstr "Розмір:"
+msgstr "Розмір Ð¿Ð¾Ð»Ñ Ð·Ð¾Ñ€Ñƒ"
#: modules/gltf/gltf_camera.cpp
msgid "Zfar"
msgstr ""
#: modules/gltf/gltf_camera.cpp
-#, fuzzy
msgid "Znear"
-msgstr "Лінійний"
+msgstr "Znear"
#: modules/gltf/gltf_light.cpp scene/2d/canvas_modulate.cpp
#: scene/2d/cpu_particles_2d.cpp scene/2d/light_2d.cpp scene/2d/polygon_2d.cpp
@@ -16149,7 +16587,7 @@ msgstr "Колір"
msgid "Intensity"
msgstr "ІнтенÑивніÑть"
-#: modules/gltf/gltf_light.cpp scene/2d/light_2d.cpp
+#: modules/gltf/gltf_light.cpp scene/2d/light_2d.cpp scene/3d/light.cpp
msgid "Range"
msgstr "Діапазон"
@@ -16162,33 +16600,28 @@ msgid "Outer Cone Angle"
msgstr ""
#: modules/gltf/gltf_mesh.cpp
-#, fuzzy
msgid "Blend Weights"
-msgstr "Запікати карти оÑвітленнÑ"
+msgstr "Ваги злиттÑ"
#: modules/gltf/gltf_mesh.cpp
-#, fuzzy
msgid "Instance Materials"
-msgstr "Матеріали"
+msgstr "Матеріали екземплÑра"
#: modules/gltf/gltf_node.cpp
-#, fuzzy
msgid "Parent"
-msgstr "Змінити батьківÑький"
+msgstr "БатьківÑький"
#: modules/gltf/gltf_node.cpp
-#, fuzzy
msgid "Xform"
-msgstr "Платформа"
+msgstr "Xform"
#: modules/gltf/gltf_node.cpp scene/3d/mesh_instance.cpp
msgid "Skin"
msgstr "Оболонка"
#: modules/gltf/gltf_node.cpp scene/3d/spatial.cpp
-#, fuzzy
msgid "Translation"
-msgstr "Переклади"
+msgstr "ПеренеÑеннÑ"
#: modules/gltf/gltf_node.cpp scene/2d/node_2d.cpp scene/2d/polygon_2d.cpp
#: scene/2d/remote_transform_2d.cpp scene/3d/remote_transform.cpp
@@ -16197,19 +16630,16 @@ msgid "Rotation"
msgstr "ОбертаннÑ"
#: modules/gltf/gltf_node.cpp
-#, fuzzy
msgid "Children"
-msgstr "Редагований дочірній елемент"
+msgstr "Дочірні"
#: modules/gltf/gltf_skeleton.cpp modules/gltf/gltf_skin.cpp
-#, fuzzy
msgid "Joints"
-msgstr "З’єднаннÑ"
+msgstr "Суглоби"
#: modules/gltf/gltf_skeleton.cpp modules/gltf/gltf_skin.cpp
-#, fuzzy
msgid "Roots"
-msgstr "Корінь"
+msgstr "Корені"
#: modules/gltf/gltf_skeleton.cpp modules/gltf/gltf_state.cpp
msgid "Unique Names"
@@ -16220,23 +16650,20 @@ msgid "Godot Bone Node"
msgstr "Отримати вузол Ñцени"
#: modules/gltf/gltf_skin.cpp
-#, fuzzy
msgid "Skin Root"
-msgstr "Оболонка"
+msgstr "Корінь оболонки"
#: modules/gltf/gltf_skin.cpp
-#, fuzzy
msgid "Joints Original"
-msgstr "Ð¤Ð¾ÐºÑƒÑ Ð½Ð° центрі"
+msgstr "Початок з'єднаннÑ"
#: modules/gltf/gltf_skin.cpp
msgid "Inverse Binds"
msgstr ""
#: modules/gltf/gltf_skin.cpp
-#, fuzzy
msgid "Non Joints"
-msgstr "ПереÑунути з'єднаннÑ"
+msgstr "Без з'єднань"
#: modules/gltf/gltf_skin.cpp
msgid "Joint I To Bone I"
@@ -16263,9 +16690,8 @@ msgid "Gloss Factor"
msgstr ""
#: modules/gltf/gltf_spec_gloss.cpp
-#, fuzzy
msgid "Specular Factor"
-msgstr "СкалÑрний оператор."
+msgstr "Коефіцієнт дзеркальноÑті"
#: modules/gltf/gltf_spec_gloss.cpp
msgid "Spec Gloss Img"
@@ -16273,56 +16699,39 @@ msgstr ""
#: modules/gltf/gltf_state.cpp
msgid "Json"
-msgstr ""
+msgstr "Json"
#: modules/gltf/gltf_state.cpp
-#, fuzzy
msgid "Major Version"
-msgstr "ВерÑÑ–Ñ"
+msgstr "ОÑновна верÑÑ–Ñ"
#: modules/gltf/gltf_state.cpp
-#, fuzzy
msgid "Minor Version"
-msgstr "ВерÑÑ–Ñ"
+msgstr "ДругорÑдна верÑÑ–Ñ"
#: modules/gltf/gltf_state.cpp
-#, fuzzy
msgid "GLB Data"
-msgstr "З даними"
+msgstr "Дані GLB"
#: modules/gltf/gltf_state.cpp
msgid "Use Named Skin Binds"
msgstr ""
-#: modules/gltf/gltf_state.cpp scene/3d/physics_joint.cpp
-msgid "Nodes"
-msgstr "Вузли"
-
#: modules/gltf/gltf_state.cpp
msgid "Buffer Views"
msgstr "ВиглÑд ззаду"
#: modules/gltf/gltf_state.cpp
msgid "Accessors"
-msgstr ""
+msgstr "ЗаÑоби доÑтупу"
#: modules/gltf/gltf_state.cpp
-msgid "Meshes"
-msgstr "Сітка"
-
-#: modules/gltf/gltf_state.cpp
-msgid "Materials"
-msgstr "Матеріали"
-
-#: modules/gltf/gltf_state.cpp
-#, fuzzy
msgid "Scene Name"
-msgstr "ШлÑÑ… до Ñцени:"
+msgstr "Ðазва Ñцени"
#: modules/gltf/gltf_state.cpp
-#, fuzzy
msgid "Root Nodes"
-msgstr "Ðазва кореневого вузла"
+msgstr "Кореневі вузли"
#: modules/gltf/gltf_state.cpp scene/2d/particles_2d.cpp
#: scene/gui/texture_button.cpp scene/gui/texture_progress.cpp
@@ -16330,15 +16739,11 @@ msgstr "Ðазва кореневого вузла"
msgid "Textures"
msgstr "ТекÑтури"
-#: modules/gltf/gltf_state.cpp
+#: modules/gltf/gltf_state.cpp platform/uwp/export/export.cpp
msgid "Images"
msgstr "ЗображеннÑ"
#: modules/gltf/gltf_state.cpp
-msgid "Skins"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp
msgid "Cameras"
msgstr "Фотоапарати"
@@ -16348,7 +16753,7 @@ msgstr "ОÑвітленнÑ"
#: modules/gltf/gltf_state.cpp
msgid "Unique Animation Names"
-msgstr "Ðове ім'Ñ Ð°Ð½Ñ–Ð¼Ð°Ñ†Ñ–Ñ—:"
+msgstr "Унікальні назви анімації"
#: modules/gltf/gltf_state.cpp
msgid "Skeletons"
@@ -16363,18 +16768,20 @@ msgid "Animations"
msgstr "Ðнімації"
#: modules/gltf/gltf_texture.cpp
-#, fuzzy
msgid "Src Image"
-msgstr "Показати зображеннÑ"
+msgstr "Початкове зображеннÑ"
+
+#: modules/gridmap/grid_map.cpp
+msgid "Mesh Library"
+msgstr "Бібліотека Ñітки"
#: modules/gridmap/grid_map.cpp
msgid "Physics Material"
msgstr "Фізичний кадр %"
-#: modules/gridmap/grid_map.cpp
-#, fuzzy
+#: modules/gridmap/grid_map.cpp scene/3d/visual_instance.cpp
msgid "Use In Baked Light"
-msgstr "Запікати карти оÑвітленнÑ"
+msgstr "ВикориÑтовувати у запеченому Ñвітлі"
#: modules/gridmap/grid_map.cpp scene/2d/tile_map.cpp
#: scene/resources/navigation_mesh.cpp
@@ -16382,29 +16789,26 @@ msgid "Cell"
msgstr "Мобільний"
#: modules/gridmap/grid_map.cpp
-#, fuzzy
msgid "Octant Size"
-msgstr "Розмір шрифту"
+msgstr "Розмір октанта"
#: modules/gridmap/grid_map.cpp
-#, fuzzy
msgid "Center X"
-msgstr "За центром"
+msgstr "Центр за X"
#: modules/gridmap/grid_map.cpp
-#, fuzzy
msgid "Center Y"
-msgstr "За центром"
+msgstr "Центр за Y"
#: modules/gridmap/grid_map.cpp
-#, fuzzy
msgid "Center Z"
-msgstr "За центром"
+msgstr "Центр за Z"
#: modules/gridmap/grid_map.cpp scene/2d/collision_object_2d.cpp
#: scene/2d/tile_map.cpp scene/3d/collision_object.cpp scene/3d/soft_body.cpp
+#: scene/resources/material.cpp
msgid "Mask"
-msgstr ""
+msgstr "МаÑка"
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Next Plane"
@@ -16584,19 +16988,19 @@ msgid "Ultra Quality Ray Count"
msgstr ""
#: modules/minimp3/audio_stream_mp3.cpp
+#: modules/minimp3/resource_importer_mp3.cpp
#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp
-#, fuzzy
+#: modules/stb_vorbis/resource_importer_ogg_vorbis.cpp
msgid "Loop Offset"
-msgstr "ЗміщеннÑ"
+msgstr "Ð—Ð¼Ñ–Ñ‰ÐµÐ½Ð½Ñ Ñ†Ð¸ÐºÐ»Ñƒ"
#: modules/mobile_vr/mobile_vr_interface.cpp
msgid "Eye Height"
msgstr ""
#: modules/mobile_vr/mobile_vr_interface.cpp
-#, fuzzy
msgid "IOD"
-msgstr "Лод"
+msgstr "IOD"
#: modules/mobile_vr/mobile_vr_interface.cpp
msgid "Display Width"
@@ -16611,14 +17015,12 @@ msgid "Oversample"
msgstr ""
#: modules/mobile_vr/mobile_vr_interface.cpp
-#, fuzzy
msgid "K1"
-msgstr "К"
+msgstr "K1"
#: modules/mobile_vr/mobile_vr_interface.cpp
-#, fuzzy
msgid "K2"
-msgstr "К"
+msgstr "K2"
#: modules/mono/csharp_script.cpp
msgid "Class name can't be a reserved keyword"
@@ -16705,29 +17107,27 @@ msgstr "Зроблено!"
#: modules/opensimplex/noise_texture.cpp
msgid "Seamless"
-msgstr ""
+msgstr "Без швів"
#: modules/opensimplex/noise_texture.cpp
-#, fuzzy
msgid "As Normal Map"
-msgstr "Ðормальне картографуваннÑ"
+msgstr "Як нормальна карта"
#: modules/opensimplex/noise_texture.cpp
msgid "Bump Strength"
-msgstr ""
+msgstr "ПотужніÑть витиÑканнÑ"
#: modules/opensimplex/noise_texture.cpp
msgid "Noise"
msgstr "Шум"
#: modules/opensimplex/noise_texture.cpp
-#, fuzzy
msgid "Noise Offset"
-msgstr "ВідÑтуп Ñітки:"
+msgstr "ВідÑтуп шуму"
#: modules/opensimplex/open_simplex_noise.cpp
msgid "Octaves"
-msgstr "Октави:"
+msgstr "Октави"
#: modules/opensimplex/open_simplex_noise.cpp
msgid "Period"
@@ -16739,61 +17139,55 @@ msgstr "СталіÑть"
#: modules/opensimplex/open_simplex_noise.cpp
msgid "Lacunarity"
-msgstr ""
+msgstr "ЛакунарніÑть"
#: modules/regex/regex.cpp
msgid "Subject"
-msgstr ""
+msgstr "ПризначеннÑ"
#: modules/regex/regex.cpp
-#, fuzzy
msgid "Names"
-msgstr "Ðазва"
+msgstr "Ðазви"
#: modules/regex/regex.cpp
-#, fuzzy
msgid "Strings"
-msgstr "Параметри"
+msgstr "РÑдки"
#: modules/upnp/upnp.cpp
msgid "Discover Multicast If"
-msgstr ""
+msgstr "ВиÑвлÑти групову транÑлÑцію, Ñкщо"
#: modules/upnp/upnp.cpp
msgid "Discover Local Port"
-msgstr ""
+msgstr "ВиÑвлÑти локальний порт"
#: modules/upnp/upnp.cpp
msgid "Discover IPv6"
-msgstr ""
+msgstr "ВиÑвлÑти IPv6"
#: modules/upnp/upnp_device.cpp
-#, fuzzy
msgid "Description URL"
-msgstr "ОпиÑ"
+msgstr "ÐÐ´Ñ€ÐµÑ Ð¾Ð¿Ð¸Ñу"
#: modules/upnp/upnp_device.cpp
-#, fuzzy
msgid "Service Type"
-msgstr "Ð’Ñтановити тип змінної"
+msgstr "Тип Ñлужби"
#: modules/upnp/upnp_device.cpp
msgid "IGD Control URL"
-msgstr ""
+msgstr "ÐдреÑа ÐºÐµÑ€ÑƒÐ²Ð°Ð½Ð½Ñ IGD"
#: modules/upnp/upnp_device.cpp
-#, fuzzy
msgid "IGD Service Type"
-msgstr "Ð’Ñтановити тип змінної"
+msgstr "Тип Ñлужби IGD"
#: modules/upnp/upnp_device.cpp
msgid "IGD Our Addr"
msgstr ""
#: modules/upnp/upnp_device.cpp
-#, fuzzy
msgid "IGD Status"
-msgstr "СтатуÑ"
+msgstr "Стан IGD"
#: modules/visual_script/visual_script.cpp scene/resources/visual_shader.cpp
msgid "Default Input Values"
@@ -17168,9 +17562,8 @@ msgid "Return"
msgstr "ПовернутиÑÑ"
#: modules/visual_script/visual_script_flow_control.cpp
-#, fuzzy
msgid "Return Enabled"
-msgstr "Ðктивний"
+msgstr "Увімкнено поверненнÑ"
#: modules/visual_script/visual_script_flow_control.cpp
msgid "Return Type"
@@ -17267,28 +17660,24 @@ msgstr "Базовий тип"
#: modules/visual_script/visual_script_func_nodes.cpp
#: modules/visual_script/visual_script_nodes.cpp
#: modules/visual_script/visual_script_yield_nodes.cpp
-#, fuzzy
msgid "Node Path"
-msgstr "Копіювати вузол шлÑху"
+msgstr "ШлÑÑ… до вузла"
#: modules/visual_script/visual_script_func_nodes.cpp
msgid "Argument Cache"
msgstr "Змінити назву аргументу"
#: modules/visual_script/visual_script_func_nodes.cpp
-#, fuzzy
msgid "Use Default Args"
-msgstr "Відновити типові параметри"
+msgstr "Типові параметри"
#: modules/visual_script/visual_script_func_nodes.cpp
-#, fuzzy
msgid "Validate"
-msgstr "ПрипуÑтимі Ñимволи:"
+msgstr "Перевірити"
#: modules/visual_script/visual_script_func_nodes.cpp
-#, fuzzy
msgid "RPC Call Mode"
-msgstr "Режим маÑштабуваннÑ"
+msgstr "Режим виклику RPC"
#: modules/visual_script/visual_script_func_nodes.cpp
msgid "Subtract %s"
@@ -17386,9 +17775,8 @@ msgid "a if cond, else b"
msgstr "a Ñкщо cond, інакше b"
#: modules/visual_script/visual_script_nodes.cpp
-#, fuzzy
msgid "Var Name"
-msgstr "Ðазва"
+msgstr "Ðазва змінної"
#: modules/visual_script/visual_script_nodes.cpp
msgid "VariableGet not found in script: "
@@ -17464,7 +17852,7 @@ msgstr "Підвиклик"
#: modules/visual_script/visual_script_nodes.cpp scene/gui/graph_node.cpp
msgid "Title"
-msgstr ""
+msgstr "Заголовок"
#: modules/visual_script/visual_script_nodes.cpp
msgid "Construct %s"
@@ -17540,33 +17928,31 @@ msgstr "Режим пріоритетноÑті"
#: modules/websocket/websocket_client.cpp
msgid "Verify SSL"
-msgstr ""
+msgstr "Перевірити SSL"
#: modules/websocket/websocket_client.cpp
msgid "Trusted SSL Certificate"
-msgstr ""
+msgstr "Довірений Ñертифікат SSL"
#: modules/websocket/websocket_server.cpp
msgid "Bind IP"
-msgstr ""
+msgstr "IP прив'Ñзки"
#: modules/websocket/websocket_server.cpp
msgid "Private Key"
-msgstr "Закритий ключ:"
+msgstr "Закритий ключ"
#: modules/websocket/websocket_server.cpp platform/javascript/export/export.cpp
msgid "SSL Certificate"
-msgstr ""
+msgstr "Сертифікат SSL"
#: modules/websocket/websocket_server.cpp
-#, fuzzy
msgid "CA Chain"
-msgstr "ОчиÑтити ІК-ланцюг"
+msgstr "Ланцюжок CA"
#: modules/websocket/websocket_server.cpp
-#, fuzzy
msgid "Handshake Timeout"
-msgstr "Перевищено Ñ‡Ð°Ñ Ð¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð½Ð½Ñ Ð½Ð° відповідь."
+msgstr "ÐŸÐµÑ€ÐµÐ²Ð¸Ñ‰ÐµÐ½Ð½Ñ Ñ‡Ð°Ñу початкового етапу обміну даними"
#: modules/webxr/webxr_interface.cpp
msgid "Session Mode"
@@ -17574,11 +17960,11 @@ msgstr "Режим облаÑті"
#: modules/webxr/webxr_interface.cpp
msgid "Required Features"
-msgstr "ОÑновні можливоÑті:"
+msgstr "Обов'Ñзкові можливоÑті"
#: modules/webxr/webxr_interface.cpp
msgid "Optional Features"
-msgstr "ОÑновні можливоÑті:"
+msgstr "Ðеобов'Ñзкові можливоÑті"
#: modules/webxr/webxr_interface.cpp
msgid "Requested Reference Space Types"
@@ -17593,9 +17979,8 @@ msgid "Visibility State"
msgstr "Перемкнути видиміÑть"
#: modules/webxr/webxr_interface.cpp
-#, fuzzy
msgid "Bounds Geometry"
-msgstr "ГеометріÑ"
+msgstr "Ð“ÐµÐ¾Ð¼ÐµÑ‚Ñ€Ñ–Ñ Ñ€Ð°Ð¼Ð¾Ðº"
#: platform/android/export/export.cpp
msgid "Android SDK Path"
@@ -17648,6 +18033,194 @@ msgid "The package must have at least one '.' separator."
msgstr "У назві пакунка має бути принаймні один роздільник «.»."
#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Use Custom Build"
+msgstr "Ðетиповий каталог кориÑтувача"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Export Format"
+msgstr "ШлÑÑ… екÑпорту"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Keystore"
+msgstr "Зневаджувач"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Debug User"
+msgstr "ЗаÑіб діагноÑтики"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+msgid "Debug Password"
+msgstr "Пароль"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Release User"
+msgstr "ВідпуÑÐºÐ°Ð½Ð½Ñ (мÑ)"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Release Password"
+msgstr "Пароль"
+
+#: platform/android/export/export_plugin.cpp
+msgid "One Click Deploy"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Clear Previous Install"
+msgstr "ІнÑпектувати попередній екземплÑÑ€"
+
+#: platform/android/export/export_plugin.cpp scene/resources/shader.cpp
+msgid "Code"
+msgstr "Код"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Min SDK"
+msgstr "Мін. розмір"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Target SDK"
+msgstr "ЧаÑтота кадрів призначеннÑ"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Package"
+msgstr "ПакуваннÑ"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Unique Name"
+msgstr "Ðазва кіÑтки"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Signed"
+msgstr "Сигнал"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Classify As Game"
+msgstr "Ðазва клаÑу"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Retain Data On Uninstall"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Exclude From Recents"
+msgstr "Виключити батьківÑький"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Graphics"
+msgstr "ЗÑув графіки"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "OpenGL Debug"
+msgstr "OpenGL"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "XR Features"
+msgstr "МожливоÑті"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "XR Mode"
+msgstr "Raw (Ñирий) режим"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Hand Tracking"
+msgstr "СтеженнÑ"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Hand Tracking Frequency"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Passthrough"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Immersive Mode"
+msgstr "Режим пріоритетноÑті"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Support Small"
+msgstr "Підтримка"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Support Normal"
+msgstr "Підтримка"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Support Large"
+msgstr "Підтримка"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Support Xlarge"
+msgstr "Підтримка"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "User Data Backup"
+msgstr "Дані кориÑтувача"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Allow"
+msgstr "Дозволено"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Command Line"
+msgstr "Команда"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Extra Args"
+msgstr "Додаткові аргументи виклику:"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "APK Expansion"
+msgstr "Вираз"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Salt"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Public Key"
+msgstr "ШлÑÑ… до відкритого ключа SSH"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Permissions"
+msgstr "МаÑка випромінюваннÑ"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Custom Permissions"
+msgstr "Відтворити вибіркову Ñцену"
+
+#: platform/android/export/export_plugin.cpp
msgid "Select device from the list"
msgstr "Вибрати приÑтрій зі ÑпиÑку"
@@ -17991,6 +18564,177 @@ msgid "The character '%s' is not allowed in Identifier."
msgstr "У назві ідентифікатора не можна викориÑтовувати Ñимволи «%s»."
#: platform/iphone/export/export.cpp
+msgid "App Store Team ID"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Provisioning Profile UUID Debug"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Code Sign Identity Debug"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Export Method Debug"
+msgstr "ЕкÑпортувати із діагноÑтикою"
+
+#: platform/iphone/export/export.cpp
+msgid "Provisioning Profile UUID Release"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Code Sign Identity Release"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Export Method Release"
+msgstr "Режим екÑпортуваннÑ:"
+
+#: platform/iphone/export/export.cpp
+msgid "Targeted Device Family"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Info"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Identifier"
+msgstr "Ðекоректний ідентифікатор:"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Signature"
+msgstr "Сигнал"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Short Version"
+msgstr "ОÑновна верÑÑ–Ñ"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Copyright"
+msgstr "Згори праворуч"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Capabilities"
+msgstr "СуміÑніÑть"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Access Wi-Fi"
+msgstr "ДоÑтуп"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Push Notifications"
+msgstr "ÐžÐ±ÐµÑ€Ñ‚Ð°Ð½Ð½Ñ ÐºÐ¾Ð½Ñ‚ÑƒÑ€Ñƒ"
+
+#: platform/iphone/export/export.cpp scene/3d/baked_lightmap.cpp
+msgid "User Data"
+msgstr "Дані кориÑтувача"
+
+#: platform/iphone/export/export.cpp
+msgid "Accessible From Files App"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Accessible From Itunes Sharing"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Privacy"
+msgstr "Закритий ключ"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Camera Usage Description"
+msgstr "ОпиÑ"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Microphone Usage Description"
+msgstr "ОпиÑи влаÑтивоÑтей"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Photolibrary Usage Description"
+msgstr "ОпиÑи влаÑтивоÑтей"
+
+#: platform/iphone/export/export.cpp
+msgid "iPhone 120 X 120"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPhone 180 X 180"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 76 X 76"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 152 X 152"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 167 X 167"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "App Store 1024 X 1024"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Spotlight 40 X 40"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Spotlight 80 X 80"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Storyboard"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Use Launch Screen Storyboard"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Image Scale Mode"
+msgstr "Режим маÑштабуваннÑ"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Custom Image @2x"
+msgstr "Ðетиповий вузол"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Custom Image @3x"
+msgstr "Ðетиповий вузол"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Use Custom BG Color"
+msgstr "Ðетиповий колір"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Custom BG Color"
+msgstr "Ðетиповий колір"
+
+#: platform/iphone/export/export.cpp
msgid "App Store Team ID not specified - cannot configure the project."
msgstr ""
"Ðе вказано ідентифікатор команди App Store — проєкт неможливо налаштувати."
@@ -18028,6 +18772,80 @@ msgid "Could not read file:"
msgstr "Ðе вдалоÑÑ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚Ð¸ файл:"
#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Variant"
+msgstr "ДиÑперÑÑ–Ñ Ð²Ñ–Ð´Ñ‚Ñ–Ð½ÐºÑ–Ð²"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Export Type"
+msgstr "ЕкÑпортуваннÑ"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "VRAM Texture Compression"
+msgstr "Вираз"
+
+#: platform/javascript/export/export.cpp
+msgid "For Desktop"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "For Mobile"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Html"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Export Icon"
+msgstr "Піктограма розгортаннÑ"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Custom Html Shell"
+msgstr "Ðетиповий вузол"
+
+#: platform/javascript/export/export.cpp
+msgid "Head Include"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Canvas Resize Policy"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Focus Canvas On Start"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Experimental Virtual Keyboard"
+msgstr "Увімкнено віртуальну клавіатуру"
+
+#: platform/javascript/export/export.cpp
+msgid "Progressive Web App"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Offline Page"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 144 X 144"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 180 X 180"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 512 X 512"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
msgid "Could not read HTML shell:"
msgstr "Ðе вдалоÑÑ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚Ð¸ оболонку HTML:"
@@ -18132,6 +18950,203 @@ msgid "Unknown object type."
msgstr "Ðевідомий тип об'єктів."
#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "App Category"
+msgstr "КатегоріÑ:"
+
+#: platform/osx/export/export.cpp
+msgid "High Res"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Location Usage Description"
+msgstr "ОпиÑ"
+
+#: platform/osx/export/export.cpp
+msgid "Address Book Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Calendar Usage Description"
+msgstr "ОпиÑ"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Photos Library Usage Description"
+msgstr "ОпиÑи влаÑтивоÑтей"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Desktop Folder Usage Description"
+msgstr "ОпиÑи методів"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Documents Folder Usage Description"
+msgstr "ОпиÑи методів"
+
+#: platform/osx/export/export.cpp
+msgid "Downloads Folder Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Network Volumes Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Removable Volumes Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#, fuzzy
+msgid "Codesign"
+msgstr "DMG із підпиÑуваннÑм коду"
+
+#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Identity"
+msgstr "ВідÑтуп"
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#, fuzzy
+msgid "Timestamp"
+msgstr "Таймери"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Hardened Runtime"
+msgstr "Середовище виконаннÑ"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Replace Existing Signature"
+msgstr "Замінити у файлах"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Entitlements"
+msgstr "Розміри"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Custom File"
+msgstr "Ðетиповий шрифт"
+
+#: platform/osx/export/export.cpp
+msgid "Allow JIT Code Execution"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Allow Unsigned Executable Memory"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Allow Dyld Environment Variables"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Disable Library Validation"
+msgstr "Вимкнути зіткненнÑ"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Audio Input"
+msgstr "Додати вхід"
+
+#: platform/osx/export/export.cpp
+msgid "Address Book"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Calendars"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Photos Library"
+msgstr "ЕкÑпортувати бібліотеку"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Apple Events"
+msgstr "Додати подію"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Debugging"
+msgstr "ДіагноÑтика"
+
+#: platform/osx/export/export.cpp
+msgid "App Sandbox"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Network Server"
+msgstr "Вузол мережі"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Network Client"
+msgstr "Вузол мережі"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Device Usb"
+msgstr "ПриÑтрій"
+
+#: platform/osx/export/export.cpp
+msgid "Device Bluetooth"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Files Downloads"
+msgstr "Завантажити"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Files Pictures"
+msgstr "МожливоÑті"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Files Music"
+msgstr "Файли"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Files Movies"
+msgstr "Фільтрувати плитки"
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#, fuzzy
+msgid "Custom Options"
+msgstr "Параметри шини"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Notarization"
+msgstr "ЛокалізаціÑ"
+
+#: platform/osx/export/export.cpp
+msgid "Apple ID Name"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Apple ID Password"
+msgstr "Пароль"
+
+#: platform/osx/export/export.cpp
+msgid "Apple Team ID"
+msgstr ""
+
+#: platform/osx/export/export.cpp
msgid ""
"Note: The notarization process generally takes less than an hour. When the "
"process is completed, you'll receive an email."
@@ -18366,6 +19381,136 @@ msgid "Force Builtin Codesign"
msgstr ""
#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Architecture"
+msgstr "Додати Ð·Ð°Ð¿Ð¸Ñ Ð°Ñ€Ñ…Ñ–Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð¸"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Display Name"
+msgstr "МаÑштаб показу"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Short Name"
+msgstr "Ðазва Ñкрипту:"
+
+#: platform/uwp/export/export.cpp
+msgid "Publisher"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Publisher Display Name"
+msgstr "Ðекоректна показана назва оприлюднювача пакунка."
+
+#: platform/uwp/export/export.cpp
+msgid "Product Guid"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Publisher Guid"
+msgstr "Вилучити напрÑмні"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Signing"
+msgstr "Сигнал"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Certificate"
+msgstr "Сертифікати"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Algorithm"
+msgstr "Зневаджувач"
+
+#: platform/uwp/export/export.cpp
+msgid "Major"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Minor"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Build"
+msgstr "Режим вимірюваннÑ"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Revision"
+msgstr "ТочніÑть"
+
+#: platform/uwp/export/export.cpp
+msgid "Landscape"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Portrait"
+msgstr "Порт"
+
+#: platform/uwp/export/export.cpp
+msgid "Landscape Flipped"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Portrait Flipped"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Store Logo"
+msgstr "Режим зберіганнÑ"
+
+#: platform/uwp/export/export.cpp
+msgid "Square 44 X 44 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 71 X 71 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 150 X 150 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 310 X 310 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Wide 310 X 150 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Splash Screen"
+msgstr "Ðамалювати екран"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Tiles"
+msgstr "Файли"
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Square 150 X 150"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Wide 310 X 150"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Square 310 X 310"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
msgid "Invalid package short name."
msgstr "Ðекоректна Ñкорочена назва пакунка."
@@ -18440,14 +19585,52 @@ msgid "Debug Certificate"
msgstr ""
#: platform/uwp/export/export.cpp
-msgid "Debug Password"
-msgstr "Пароль"
-
-#: platform/uwp/export/export.cpp
msgid "Debug Algorithm"
msgstr "Зневаджувач"
#: platform/windows/export/export.cpp
+msgid "Identity Type"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Timestamp Server URL"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Digest Algorithm"
+msgstr "Зневаджувач"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "File Version"
+msgstr "ВерÑÑ–Ñ"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Product Version"
+msgstr "Ðекоректна верÑÑ–Ñ Ð¿Ñ€Ð¾Ð´ÑƒÐºÑ‚Ñƒ:"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Company Name"
+msgstr "Ðазва кіÑтки"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Product Name"
+msgstr "Ðазва проєкту:"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "File Description"
+msgstr "ОпиÑ"
+
+#: platform/windows/export/export.cpp
+msgid "Trademarks"
+msgstr ""
+
+#: platform/windows/export/export.cpp
msgid ""
"The rcedit tool must be configured in the Editor Settings (Export > Windows "
"> Rcedit) to change the icon or app information data."
@@ -18498,9 +19681,8 @@ msgstr ""
"у влаÑтивоÑті «Frames» реÑÑƒÑ€Ñ SpriteFrames."
#: scene/2d/animated_sprite.cpp scene/2d/sprite.cpp scene/3d/sprite_3d.cpp
-#, fuzzy
msgid "Frame"
-msgstr "Кадри"
+msgstr "Кадр"
#: scene/2d/animated_sprite.cpp scene/2d/cpu_particles_2d.cpp
#: scene/2d/particles_2d.cpp scene/3d/cpu_particles.cpp scene/3d/particles.cpp
@@ -18514,16 +19696,17 @@ msgid "Playing"
msgstr "ВідтвореннÑ"
#: scene/2d/animated_sprite.cpp scene/2d/sprite.cpp scene/3d/sprite_3d.cpp
-#, fuzzy
msgid "Centered"
msgstr "За центром"
-#: scene/2d/animated_sprite.cpp scene/2d/camera_2d.cpp scene/2d/light_2d.cpp
+#: scene/2d/animated_sprite.cpp scene/2d/camera_2d.cpp
+#: scene/2d/cpu_particles_2d.cpp scene/2d/light_2d.cpp
#: scene/2d/parallax_background.cpp scene/2d/parallax_layer.cpp
#: scene/2d/path_2d.cpp scene/2d/polygon_2d.cpp scene/2d/sprite.cpp
-#: scene/3d/path.cpp scene/3d/physics_body.cpp scene/3d/sprite_3d.cpp
-#: scene/gui/graph_node.cpp scene/gui/rich_text_effect.cpp
-#: scene/main/canvas_layer.cpp scene/resources/material.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/path.cpp scene/3d/physics_body.cpp
+#: scene/3d/sprite_3d.cpp scene/gui/graph_node.cpp
+#: scene/gui/rich_text_effect.cpp scene/main/canvas_layer.cpp
+#: scene/resources/material.cpp scene/resources/particles_material.cpp
#: scene/resources/style_box.cpp
msgid "Offset"
msgstr "ЗміщеннÑ"
@@ -18531,22 +19714,20 @@ msgstr "ЗміщеннÑ"
#: scene/2d/animated_sprite.cpp scene/2d/sprite.cpp scene/3d/sprite_3d.cpp
#: scene/gui/texture_button.cpp scene/gui/texture_rect.cpp
msgid "Flip H"
-msgstr ""
+msgstr "Гор. віддзеркаленнÑ"
#: scene/2d/animated_sprite.cpp scene/2d/sprite.cpp scene/3d/sprite_3d.cpp
#: scene/gui/texture_button.cpp scene/gui/texture_rect.cpp
msgid "Flip V"
-msgstr ""
+msgstr "Верт. віддзеркаленнÑ"
#: scene/2d/area_2d.cpp scene/3d/area.cpp
-#, fuzzy
msgid "Monitoring"
-msgstr "Монітор"
+msgstr "СпоÑтереженнÑ"
#: scene/2d/area_2d.cpp scene/3d/area.cpp
-#, fuzzy
msgid "Monitorable"
-msgstr "Монітор"
+msgstr "Можна ÑпоÑтерігати"
#: scene/2d/area_2d.cpp scene/3d/area.cpp
msgid "Physics Overrides"
@@ -18557,18 +19738,16 @@ msgid "Space Override"
msgstr "ПеревизначеннÑ"
#: scene/2d/area_2d.cpp scene/3d/area.cpp
-#, fuzzy
msgid "Gravity Point"
-msgstr "Створити точки"
+msgstr "Точка Ñ‚ÑжіннÑ"
#: scene/2d/area_2d.cpp scene/3d/area.cpp
msgid "Gravity Distance Scale"
msgstr "ÐžÑ‡Ñ–ÐºÑƒÐ²Ð°Ð½Ð½Ñ Ñигналу екземплÑра"
#: scene/2d/area_2d.cpp scene/3d/area.cpp
-#, fuzzy
msgid "Gravity Vec"
-msgstr "ТÑжіннÑ"
+msgstr "Вектор Ñ‚ÑжіннÑ"
#: scene/2d/area_2d.cpp scene/2d/cpu_particles_2d.cpp scene/3d/area.cpp
#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
@@ -18588,19 +19767,13 @@ msgid "Audio Bus"
msgstr "Ð”Ð¾Ð´Ð°Ð²Ð°Ð½Ð½Ñ Ð°ÑƒÐ´Ñ–Ð¾ шини"
#: scene/2d/area_2d.cpp scene/3d/area.cpp
-#, fuzzy
msgid "Override"
-msgstr "ПеревизначеннÑ"
-
-#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
-#: scene/audio/audio_stream_player.cpp scene/gui/video_player.cpp
-msgid "Stream"
-msgstr "Потік"
+msgstr "Перевизначити"
#: scene/2d/audio_stream_player_2d.cpp scene/audio/audio_stream_player.cpp
#: scene/gui/video_player.cpp servers/audio/effects/audio_effect_amplify.cpp
msgid "Volume dB"
-msgstr "&ГучніÑть (дБ):"
+msgstr "ГучніÑть (дБ)"
#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
#: scene/audio/audio_stream_player.cpp
@@ -18620,12 +19793,12 @@ msgid "Stream Paused"
msgstr ""
#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
-#: scene/3d/reflection_probe.cpp scene/3d/visual_instance.cpp
-#: scene/resources/material.cpp
+#: scene/3d/light.cpp scene/3d/reflection_probe.cpp
+#: scene/3d/visual_instance.cpp scene/resources/material.cpp
msgid "Max Distance"
-msgstr "ВідÑтань вибору:"
+msgstr "МакÑ. відÑтань"
-#: scene/2d/audio_stream_player_2d.cpp
+#: scene/2d/audio_stream_player_2d.cpp scene/3d/light.cpp
msgid "Attenuation"
msgstr "ÐнімаціÑ"
@@ -18647,14 +19820,12 @@ msgid "Anchor Mode"
msgstr "Режим піктограм"
#: scene/2d/camera_2d.cpp
-#, fuzzy
msgid "Rotating"
msgstr "ОбертаннÑ"
#: scene/2d/camera_2d.cpp scene/3d/camera.cpp
-#, fuzzy
msgid "Current"
-msgstr "Поточний:"
+msgstr "Поточний"
#: scene/2d/camera_2d.cpp scene/gui/graph_edit.cpp
msgid "Zoom"
@@ -18674,8 +19845,25 @@ msgstr "Режим переміщеннÑ"
msgid "Limit"
msgstr "ОбмеженнÑ"
-#: scene/2d/camera_2d.cpp
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/style_box.cpp
+#, fuzzy
+msgid "Left"
+msgstr "Ліворуч"
+
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/style_box.cpp
#, fuzzy
+msgid "Right"
+msgstr "Світло"
+
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/dynamic_font.cpp scene/resources/style_box.cpp
+#, fuzzy
+msgid "Bottom"
+msgstr "Внизу ліворуч"
+
+#: scene/2d/camera_2d.cpp
msgid "Smoothed"
msgstr "Згладжений"
@@ -18684,14 +19872,12 @@ msgid "Draw Margin"
msgstr "Ð’Ñтановити поле"
#: scene/2d/camera_2d.cpp
-#, fuzzy
msgid "Drag Margin H Enabled"
-msgstr "Ð’Ñтановити поле"
+msgstr "Увімкнено гор. поле перетÑгуваннÑ"
#: scene/2d/camera_2d.cpp
-#, fuzzy
msgid "Drag Margin V Enabled"
-msgstr "Ð’Ñтановити поле"
+msgstr "Увімкнено верт. поле перетÑгуваннÑ"
#: scene/2d/camera_2d.cpp
msgid "Smoothing"
@@ -18699,31 +19885,27 @@ msgstr "ЗгладжуваннÑ"
#: scene/2d/camera_2d.cpp
msgid "H"
-msgstr ""
+msgstr "Г"
#: scene/2d/camera_2d.cpp
-#, fuzzy
msgid "V"
-msgstr "UV"
+msgstr "Ð’"
#: scene/2d/camera_2d.cpp
msgid "Drag Margin"
-msgstr "Ð’Ñтановити поле"
+msgstr "Поле перетÑгуваннÑ"
#: scene/2d/camera_2d.cpp
-#, fuzzy
msgid "Draw Screen"
-msgstr "Ðамалювати виклики:"
+msgstr "Ðамалювати екран"
#: scene/2d/camera_2d.cpp
-#, fuzzy
msgid "Draw Limits"
-msgstr "ОбмеженнÑ"
+msgstr "ÐžÐ±Ð¼ÐµÐ¶ÐµÐ½Ð½Ñ Ð¼Ð°Ð»ÑŽÐ²Ð°Ð½Ð½Ñ"
#: scene/2d/camera_2d.cpp
-#, fuzzy
msgid "Draw Drag Margin"
-msgstr "Ð’Ñтановити поле"
+msgstr "Малювати поле перетÑгуваннÑ"
#: scene/2d/canvas_item.cpp scene/animation/animation_blend_space_2d.cpp
#: scene/resources/environment.cpp scene/resources/material.cpp
@@ -18735,9 +19917,8 @@ msgid "Light Mode"
msgstr "Праворуч за шириною"
#: scene/2d/canvas_item.cpp
-#, fuzzy
msgid "Particles Animation"
-msgstr "ЧаÑтинки"
+msgstr "ÐÐ½Ñ–Ð¼Ð°Ñ†Ñ–Ñ Ñ‡Ð°Ñтинок"
#: scene/2d/canvas_item.cpp
msgid "Particles Anim H Frames"
@@ -18748,9 +19929,8 @@ msgid "Particles Anim V Frames"
msgstr ""
#: scene/2d/canvas_item.cpp
-#, fuzzy
msgid "Particles Anim Loop"
-msgstr "ЧаÑтинки"
+msgstr "Цикл анімації чаÑтинок"
#: scene/2d/canvas_item.cpp scene/3d/spatial.cpp
msgid "Visibility"
@@ -18758,9 +19938,8 @@ msgstr "ВидиміÑть"
#: scene/2d/canvas_item.cpp scene/3d/spatial.cpp scene/gui/progress_bar.cpp
#: scene/gui/rich_text_effect.cpp scene/main/canvas_layer.cpp
-#, fuzzy
msgid "Visible"
-msgstr "ВидиміÑть"
+msgstr "Видимий"
#: scene/2d/canvas_item.cpp scene/3d/sprite_3d.cpp
#: scene/resources/style_box.cpp
@@ -18768,9 +19947,8 @@ msgid "Modulate"
msgstr "модулÑціÑ"
#: scene/2d/canvas_item.cpp
-#, fuzzy
msgid "Self Modulate"
-msgstr "модулÑціÑ"
+msgstr "СамомодулÑціÑ"
#: scene/2d/canvas_item.cpp
msgid "Show Behind Parent"
@@ -18813,9 +19991,8 @@ msgstr ""
"Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð¹Ð¾Ð³Ð¾ форми."
#: scene/2d/collision_object_2d.cpp
-#, fuzzy
msgid "Pickable"
-msgstr "Вибрати плитку"
+msgstr "Можна вибирати"
#: scene/2d/collision_polygon_2d.cpp
msgid ""
@@ -18849,14 +20026,12 @@ msgstr "Режим вимірюваннÑ"
#: scene/3d/collision_polygon.cpp scene/3d/collision_shape.cpp
#: scene/animation/animation_node_state_machine.cpp scene/gui/base_button.cpp
#: scene/gui/texture_button.cpp
-#, fuzzy
msgid "Disabled"
-msgstr "Вимкнений елемент"
+msgstr "Вимкнено"
#: scene/2d/collision_polygon_2d.cpp scene/2d/collision_shape_2d.cpp
-#, fuzzy
msgid "One Way Collision"
-msgstr "Створити полігон зіткненнÑ"
+msgstr "Однобічне зіткненнÑ"
#: scene/2d/collision_polygon_2d.cpp scene/2d/collision_shape_2d.cpp
msgid "One Way Collision Margin"
@@ -18899,15 +20074,8 @@ msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp
#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
-#, fuzzy
msgid "Emitting"
-msgstr "УточненнÑ"
-
-#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp scene/3d/area.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
-#: scene/resources/environment.cpp
-msgid "Amount"
-msgstr "Сума"
+msgstr "ÐадÑиланнÑ"
#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp
#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
@@ -18916,9 +20084,8 @@ msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp
#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp scene/main/timer.cpp
-#, fuzzy
msgid "One Shot"
-msgstr "Одноразовий вузол"
+msgstr "Один знімок"
#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp
#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
@@ -18957,30 +20124,24 @@ msgstr "Малюнок"
#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp
#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
-#, fuzzy
msgid "Local Coords"
-msgstr "Локальні проєкти"
+msgstr "Локальні координати"
#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp
#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
msgid "Draw Order"
-msgstr ""
+msgstr "ПорÑдок малюваннÑ"
#: scene/2d/cpu_particles_2d.cpp scene/2d/light_2d.cpp scene/2d/line_2d.cpp
#: scene/2d/mesh_instance_2d.cpp scene/2d/multimesh_instance_2d.cpp
#: scene/2d/particles_2d.cpp scene/2d/polygon_2d.cpp scene/2d/sprite.cpp
#: scene/3d/sprite_3d.cpp scene/gui/nine_patch_rect.cpp
-#: scene/gui/texture_rect.cpp scene/resources/sky.cpp
-#: scene/resources/style_box.cpp scene/resources/visual_shader_nodes.cpp
+#: scene/gui/texture_rect.cpp scene/resources/material.cpp
+#: scene/resources/sky.cpp scene/resources/style_box.cpp
+#: scene/resources/visual_shader_nodes.cpp
msgid "Texture"
msgstr "ТекÑтура"
-#: scene/2d/cpu_particles_2d.cpp scene/2d/mesh_instance_2d.cpp
-#: scene/2d/multimesh_instance_2d.cpp scene/2d/particles_2d.cpp
-#: scene/2d/sprite.cpp scene/resources/style_box.cpp
-msgid "Normal Map"
-msgstr "Ðормальне картографуваннÑ"
-
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
msgid "Emission Shape"
@@ -18988,25 +20149,22 @@ msgstr "МаÑка випромінюваннÑ"
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
-#, fuzzy
msgid "Sphere Radius"
-msgstr "Джерело випромінюваннÑ:"
+msgstr "Ð Ð°Ð´Ñ–ÑƒÑ Ñфери"
#: scene/2d/cpu_particles_2d.cpp
-#, fuzzy
msgid "Rect Extents"
-msgstr "Гаджети"
+msgstr "Розміри прÑмокутника"
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#, fuzzy
msgid "Normals"
-msgstr "Звичайний"
+msgstr "Ðормалі"
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/3d/sprite_3d.cpp scene/resources/material.cpp
-#: scene/resources/particles_material.cpp scene/resources/texture.cpp
-msgid "Flags"
-msgstr "Прапорці"
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Align Y"
+msgstr "ВирівнюваннÑ"
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
@@ -19025,6 +20183,12 @@ msgid "Initial Velocity"
msgstr "Ініціалізувати"
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Velocity Random"
+msgstr "ШвидкіÑть"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp servers/physics_2d_server.cpp
#: servers/physics_server.cpp
msgid "Angular Velocity"
@@ -19032,6 +20196,12 @@ msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Velocity Curve"
+msgstr "ШвидкіÑть"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
msgid "Orbit Velocity"
msgstr "Орбітальний вид праворуч"
@@ -19042,6 +20212,23 @@ msgstr "Лінійний"
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Accel"
+msgstr "ДоÑтуп"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Accel Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Accel Curve"
+msgstr "Розділити криву"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
msgid "Radial Accel"
msgstr ""
@@ -19051,19 +20238,57 @@ msgid "Tangential Accel"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/2d/joints_2d.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/vehicle_body.cpp
-#: scene/resources/particles_material.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/physics_joint.cpp
+#: scene/3d/vehicle_body.cpp scene/resources/particles_material.cpp
#: servers/audio/effects/audio_effect_reverb.cpp
msgid "Damping"
msgstr "В’ÑзкіÑть"
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Damping Random"
+msgstr "В’ÑзкіÑть"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Damping Curve"
+msgstr "В’ÑзкіÑть"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp scene/3d/light.cpp
+#: scene/resources/particles_material.cpp
msgid "Angle"
msgstr "Кут"
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Angle Random"
+msgstr "Мін. кут"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Angle Curve"
+msgstr "Закрити криву"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#, fuzzy
+msgid "Scale Amount"
+msgstr "ПотужніÑть ÑонцÑ"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+msgid "Scale Amount Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#, fuzzy
+msgid "Scale Amount Curve"
+msgstr "МаÑштаб від курÑору"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
msgid "Color Ramp"
msgstr "Кольори"
@@ -19075,7 +20300,49 @@ msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
msgid "Hue Variation"
-msgstr "ВідокремленнÑ:"
+msgstr "ДиÑперÑÑ–Ñ Ð²Ñ–Ð´Ñ‚Ñ–Ð½ÐºÑ–Ð²"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Variation"
+msgstr "ДиÑперÑÑ–Ñ Ð²Ñ–Ð´Ñ‚Ñ–Ð½ÐºÑ–Ð²"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Variation Random"
+msgstr "ДиÑперÑÑ–Ñ Ð²Ñ–Ð´Ñ‚Ñ–Ð½ÐºÑ–Ð²"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Variation Curve"
+msgstr "ДиÑперÑÑ–Ñ Ð²Ñ–Ð´Ñ‚Ñ–Ð½ÐºÑ–Ð²"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Speed Random"
+msgstr "МаÑштаб"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Speed Curve"
+msgstr "Розділити криву"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Offset Random"
+msgstr "ЗміщеннÑ"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Offset Curve"
+msgstr "Закрити криву"
#: scene/2d/joints_2d.cpp
msgid "Node A and Node B must be PhysicsBody2Ds"
@@ -19098,26 +20365,24 @@ msgid "Node A and Node B must be different PhysicsBody2Ds"
msgstr "Вузол A і вузол B мають бути різними PhysicsBody2D"
#: scene/2d/joints_2d.cpp scene/3d/physics_joint.cpp
-#, fuzzy
msgid "Node A"
-msgstr "Вузол"
+msgstr "Вузол A"
#: scene/2d/joints_2d.cpp scene/3d/physics_joint.cpp
-#, fuzzy
msgid "Node B"
-msgstr "Вузол"
+msgstr "Вузол B"
#: scene/2d/joints_2d.cpp scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp
+#: scene/3d/light.cpp scene/3d/physics_joint.cpp
#: scene/resources/environment.cpp
msgid "Bias"
-msgstr "Зміщений"
+msgstr "Ðахил"
#: scene/2d/joints_2d.cpp
-#, fuzzy
msgid "Disable Collision"
-msgstr "Вимкнена кнопка"
+msgstr "Вимкнути зіткненнÑ"
-#: scene/2d/joints_2d.cpp
+#: scene/2d/joints_2d.cpp scene/3d/physics_joint.cpp
msgid "Softness"
msgstr "М’ÑкіÑть"
@@ -19134,7 +20399,7 @@ msgstr "Ініціалізувати"
msgid "Rest Length"
msgstr "Довжина у нерозтÑгненому Ñтані"
-#: scene/2d/joints_2d.cpp scene/3d/vehicle_body.cpp
+#: scene/2d/joints_2d.cpp scene/3d/physics_joint.cpp scene/3d/vehicle_body.cpp
msgid "Stiffness"
msgstr "ЖорÑткіÑть"
@@ -19145,36 +20410,33 @@ msgid ""
msgstr "Ð”Ð»Ñ Ð²Ð»Ð°ÑтивоÑті «Texture» Ñлід надати текÑтуру із формою оÑвітленнÑ."
#: scene/2d/light_2d.cpp scene/3d/light.cpp scene/gui/reference_rect.cpp
-#, fuzzy
msgid "Editor Only"
-msgstr "Редактор"
+msgstr "Лише редактор"
#: scene/2d/light_2d.cpp
msgid "Texture Scale"
msgstr "TextureRegion"
#: scene/2d/light_2d.cpp scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp
-#: scene/resources/environment.cpp scene/resources/sky.cpp
+#: scene/3d/light.cpp scene/resources/environment.cpp scene/resources/sky.cpp
msgid "Energy"
msgstr "ЕнергіÑ"
#: scene/2d/light_2d.cpp
msgid "Z Min"
-msgstr ""
+msgstr "Мін. за Z"
#: scene/2d/light_2d.cpp
msgid "Z Max"
-msgstr ""
+msgstr "МакÑ. за Z"
#: scene/2d/light_2d.cpp
-#, fuzzy
msgid "Layer Min"
-msgstr "Змінити розмір камери"
+msgstr "Мін. за шаром"
#: scene/2d/light_2d.cpp
-#, fuzzy
msgid "Layer Max"
-msgstr "Шар"
+msgstr "МакÑ. за шаром"
#: scene/2d/light_2d.cpp
msgid "Item Cull Mask"
@@ -19185,30 +20447,20 @@ msgid "Shadow"
msgstr "Тінь"
#: scene/2d/light_2d.cpp
-#, fuzzy
msgid "Buffer Size"
-msgstr "ВиглÑд ззаду"
+msgstr "Розмір буфера"
#: scene/2d/light_2d.cpp
-#, fuzzy
msgid "Gradient Length"
-msgstr "Градієнт"
-
-#: scene/2d/light_2d.cpp scene/gui/control.cpp
-#: scene/resources/navigation_mesh.cpp
-#, fuzzy
-msgid "Filter"
-msgstr "Фільтри"
+msgstr "Довжина градієнта"
#: scene/2d/light_2d.cpp
-#, fuzzy
msgid "Filter Smooth"
-msgstr "Фільтрувати методи"
+msgstr "Ð—Ð³Ð»Ð°Ð´Ð¶ÑƒÐ²Ð°Ð½Ð½Ñ Ñ„Ñ–Ð»ÑŒÑ‚Ñ€ÑƒÐ²Ð°Ð½Ð½Ñ"
#: scene/2d/light_occluder_2d.cpp
-#, fuzzy
msgid "Closed"
-msgstr "Закрити"
+msgstr "Замкнено"
#: scene/2d/light_occluder_2d.cpp scene/resources/material.cpp
msgid "Cull Mode"
@@ -19232,9 +20484,8 @@ msgid "Width Curve"
msgstr "Розділити криву"
#: scene/2d/line_2d.cpp
-#, fuzzy
msgid "Default Color"
-msgstr "&Типовий шрифт:"
+msgstr "Типовий колір"
#: scene/2d/line_2d.cpp scene/resources/texture.cpp
msgid "Fill"
@@ -19250,7 +20501,7 @@ msgstr "TextureRegion"
#: scene/2d/line_2d.cpp
msgid "Capping"
-msgstr "Вершина:"
+msgstr "Вершина"
#: scene/2d/line_2d.cpp
msgid "Joint Mode"
@@ -19262,16 +20513,15 @@ msgstr "Режим облаÑті"
#: scene/2d/line_2d.cpp
msgid "End Cap Mode"
-msgstr "Режим прилипаннÑ:"
+msgstr "Режим кінцевої вершини"
#: scene/2d/line_2d.cpp scene/2d/polygon_2d.cpp scene/resources/style_box.cpp
msgid "Border"
msgstr "Кордон"
#: scene/2d/line_2d.cpp
-#, fuzzy
msgid "Sharp Limit"
-msgstr "ОбмеженнÑ"
+msgstr "ÐžÐ±Ð¼ÐµÐ¶ÐµÐ½Ð½Ñ Ñ€Ñ–Ð·ÐºÐ¾Ñті"
#: scene/2d/line_2d.cpp
msgid "Round Precision"
@@ -19279,9 +20529,8 @@ msgstr ""
#: scene/2d/line_2d.cpp scene/2d/polygon_2d.cpp
#: scene/resources/dynamic_font.cpp
-#, fuzzy
msgid "Antialiased"
-msgstr "Ініціалізувати"
+msgstr "Згладжена"
#: scene/2d/multimesh_instance_2d.cpp scene/3d/multimesh_instance.cpp
msgid "Multimesh"
@@ -19291,12 +20540,11 @@ msgstr "Помножити на %s"
#: scene/3d/navigation.cpp scene/animation/root_motion_view.cpp
#: scene/resources/world_2d.cpp servers/physics_2d/physics_2d_server_sw.cpp
msgid "Cell Size"
-msgstr "Розмір комірки:"
+msgstr "Розмір комірки"
#: scene/2d/navigation_2d.cpp scene/3d/navigation.cpp
-#, fuzzy
msgid "Edge Connection Margin"
-msgstr "Редагувати з’єднаннÑ:"
+msgstr "Поле з'Ñ”Ð´Ð½Ð°Ð½Ð½Ñ Ñ€ÐµÐ±ÐµÑ€"
#: scene/2d/navigation_agent_2d.cpp scene/3d/navigation_agent.cpp
msgid "Target Desired Distance"
@@ -19320,16 +20568,15 @@ msgstr "МакÑ. швидкіÑть"
#: scene/2d/navigation_agent_2d.cpp scene/3d/navigation_agent.cpp
msgid "Path Max Distance"
-msgstr "ВідÑтань вибору:"
+msgstr "МакÑ. відÑтань контуру"
#: scene/2d/navigation_agent_2d.cpp
msgid "The NavigationAgent2D can be used only under a Node2D node."
msgstr "NavigationAgent2D можна викориÑтовувати лише під вузлом Node2D."
#: scene/2d/navigation_obstacle_2d.cpp scene/3d/navigation_obstacle.cpp
-#, fuzzy
msgid "Estimate Radius"
-msgstr "Внутрішній радіуÑ:"
+msgstr "Оцінка радіуÑа"
#: scene/2d/navigation_obstacle_2d.cpp
msgid ""
@@ -19340,13 +20587,12 @@ msgstr ""
"Ð´Ð»Ñ Ð¾Ð±'єкта Node2D."
#: scene/2d/navigation_polygon.cpp scene/resources/navigation_mesh.cpp
-#, fuzzy
msgid "Vertices"
-msgstr "Вершини:"
+msgstr "Вершини"
#: scene/2d/navigation_polygon.cpp
msgid "Outlines"
-msgstr "Розмір обведеннÑ:"
+msgstr "Контури"
#: scene/2d/navigation_polygon.cpp
msgid ""
@@ -19372,7 +20618,7 @@ msgstr ""
#: scene/2d/node_2d.cpp scene/2d/polygon_2d.cpp scene/3d/spatial.cpp
#: scene/main/canvas_layer.cpp
msgid "Rotation Degrees"
-msgstr "ÐžÐ±ÐµÑ€Ñ‚Ð°Ð½Ð½Ñ Ð½Ð° %s градуÑів."
+msgstr "ГрудуÑи обертаннÑ"
#: scene/2d/node_2d.cpp
msgid "Global Rotation"
@@ -19380,45 +20626,39 @@ msgstr "Загальна Ñтала"
#: scene/2d/node_2d.cpp
msgid "Global Rotation Degrees"
-msgstr "ÐžÐ±ÐµÑ€Ñ‚Ð°Ð½Ð½Ñ Ð½Ð° %s градуÑів."
+msgstr "ГрадуÑи загального обертаннÑ"
#: scene/2d/node_2d.cpp
-#, fuzzy
msgid "Global Scale"
-msgstr "Звичайне маÑштабуваннÑ"
+msgstr "Загальний маÑштаб"
#: scene/2d/node_2d.cpp scene/3d/spatial.cpp
msgid "Global Transform"
msgstr "Зберегти загальне перетвореннÑ"
#: scene/2d/node_2d.cpp
-#, fuzzy
msgid "Z As Relative"
-msgstr "ВідноÑна прив'Ñзка"
+msgstr "Z Ñк відноÑне"
#: scene/2d/parallax_background.cpp scene/gui/scroll_container.cpp
msgid "Scroll"
msgstr "ГортаннÑ"
#: scene/2d/parallax_background.cpp
-#, fuzzy
msgid "Base Offset"
-msgstr "ЗміщеннÑ"
+msgstr "Базове зміщеннÑ"
#: scene/2d/parallax_background.cpp
-#, fuzzy
msgid "Base Scale"
-msgstr "ВикориÑтати прив'ÑÐ·ÑƒÐ²Ð°Ð½Ð½Ñ Ð¼Ð°Ñштабу"
+msgstr "Базовий маÑштаб"
#: scene/2d/parallax_background.cpp
-#, fuzzy
msgid "Limit Begin"
-msgstr "ОбмеженнÑ"
+msgstr "Початок обмеженнÑ"
#: scene/2d/parallax_background.cpp
-#, fuzzy
msgid "Limit End"
-msgstr "ОбмеженнÑ"
+msgstr "Кінець обмеженнÑ"
#: scene/2d/parallax_background.cpp
msgid "Ignore Camera Zoom"
@@ -19438,9 +20678,8 @@ msgid "Motion"
msgstr "Рух"
#: scene/2d/parallax_layer.cpp
-#, fuzzy
msgid "Mirroring"
-msgstr "Віддзеркалені"
+msgstr "ВіддзеркаленнÑ"
#: scene/2d/particles_2d.cpp
msgid ""
@@ -19485,9 +20724,8 @@ msgstr ""
"параметром «ÐÐ½Ñ–Ð¼Ð°Ñ†Ñ–Ñ Ñ‡Ð°Ñток»."
#: scene/2d/particles_2d.cpp
-#, fuzzy
msgid "Visibility Rect"
-msgstr "Режим пріоритетноÑті"
+msgstr "ПрÑмокутник видимоÑті"
#: scene/2d/particles_2d.cpp scene/3d/particles.cpp
msgid "Process Material"
@@ -19504,21 +20742,19 @@ msgstr "PathFollow2D працюватиме лише Ñк дочірній елÐ
#: scene/2d/path_2d.cpp scene/3d/path.cpp
msgid "Unit Offset"
-msgstr "ВідÑтуп Ñітки:"
+msgstr "ВідÑтуп модулÑ"
#: scene/2d/path_2d.cpp scene/3d/camera.cpp scene/3d/path.cpp
-#, fuzzy
msgid "H Offset"
-msgstr "ЗміщеннÑ"
+msgstr "Гор. зміщеннÑ"
#: scene/2d/path_2d.cpp scene/3d/camera.cpp scene/3d/path.cpp
-#, fuzzy
msgid "V Offset"
-msgstr "ЗміщеннÑ"
+msgstr "Верт. зміщеннÑ"
#: scene/2d/path_2d.cpp scene/3d/path.cpp
msgid "Cubic Interp"
-msgstr ""
+msgstr "Кубічна інтерп"
#: scene/2d/path_2d.cpp
msgid "Lookahead"
@@ -19529,14 +20765,12 @@ msgid "Layers"
msgstr "Шари"
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-#, fuzzy
msgid "Constant Linear Velocity"
-msgstr "Ініціалізувати"
+msgstr "Стала лінійна швидкіÑть"
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-#, fuzzy
msgid "Constant Angular Velocity"
-msgstr "Ініціалізувати"
+msgstr "Стала кутова швидкіÑть"
#: scene/2d/physics_body_2d.cpp scene/2d/tile_map.cpp scene/3d/physics_body.cpp
#: scene/resources/physics_material.cpp
@@ -19573,7 +20807,7 @@ msgstr "МаÑа"
#: scene/2d/physics_body_2d.cpp
msgid "Inertia"
-msgstr "інерціÑ"
+msgstr "ІнерціÑ"
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
msgid "Weight"
@@ -19581,40 +20815,34 @@ msgstr "Вага"
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
msgid "Gravity Scale"
-msgstr ""
+msgstr "МаÑштаб Ñ‚ÑжіннÑ"
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-#, fuzzy
msgid "Custom Integrator"
-msgstr "Ðетиповий вузол"
+msgstr "Ðетиповий інтегратор"
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-#, fuzzy
msgid "Continuous CD"
-msgstr "Ðеперервна"
+msgstr "Ðеперервне CD"
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
msgid "Contacts Reported"
msgstr ""
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-#, fuzzy
msgid "Contact Monitor"
-msgstr "Вибрати колір"
+msgstr "Монітор контакту"
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
#: servers/physics_2d_server.cpp servers/physics_server.cpp
-#, fuzzy
msgid "Sleeping"
-msgstr "ПрилипаннÑ"
+msgstr "Сон"
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-#, fuzzy
msgid "Can Sleep"
-msgstr "ШвидкіÑть:"
+msgstr "Може Ñпати"
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-#, fuzzy
msgid "Damp"
msgstr "В’ÑзкіÑть"
@@ -19624,28 +20852,23 @@ msgstr "Кутовий"
#: scene/2d/physics_body_2d.cpp
msgid "Applied Forces"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp
-#, fuzzy
-msgid "Force"
-msgstr "ПримуÑово запиÑати"
+msgstr "ЗаÑтоÑовані Ñили"
#: scene/2d/physics_body_2d.cpp
msgid "Torque"
-msgstr ""
+msgstr "Момент"
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
msgid "Safe Margin"
msgstr "Ð’Ñтановити поле"
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-#, fuzzy
msgid "Sync To Physics"
-msgstr "Фізика"
+msgstr "Ð¡Ð¸Ð½Ñ…Ñ€Ð¾Ð½Ñ–Ð·Ð°Ñ†Ñ–Ñ Ð· фізикою"
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-msgid "Moving platform"
+#, fuzzy
+msgid "Moving Platform"
msgstr "ПереÑÑƒÐ²Ð°Ð½Ð½Ñ Ð²Ð¸Ð²ÐµÐ´ÐµÐ½Ð¸Ñ… даних"
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
@@ -19654,25 +20877,22 @@ msgstr ""
#: scene/2d/physics_body_2d.cpp scene/2d/touch_screen_button.cpp
#: scene/3d/physics_body.cpp scene/gui/texture_button.cpp
-#: scene/resources/line_shape_2d.cpp
+#: scene/resources/line_shape_2d.cpp scene/resources/material.cpp
msgid "Normal"
msgstr "Звичайний"
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-#, fuzzy
msgid "Remainder"
-msgstr "Обробка"
+msgstr "Залишок"
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-#, fuzzy
msgid "Local Shape"
-msgstr "Мова"
+msgstr "Локальна форма"
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
#: servers/physics_2d_server.cpp servers/physics_server.cpp
-#, fuzzy
msgid "Collider"
-msgstr "Режим перешкоди"
+msgstr "Перешкода"
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
#: servers/physics_2d_server.cpp servers/physics_server.cpp
@@ -19681,26 +20901,22 @@ msgstr ""
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
#: servers/physics_2d_server.cpp servers/physics_server.cpp
-#, fuzzy
msgid "Collider RID"
-msgstr "Ðекоректний RID"
+msgstr "RID заÑобу зіткненнÑ"
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
#: servers/physics_2d_server.cpp servers/physics_server.cpp
-#, fuzzy
msgid "Collider Shape"
-msgstr "Режим перешкоди"
+msgstr "Форма перешкоди"
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-#, fuzzy
msgid "Collider Shape Index"
-msgstr "Режим перешкоди"
+msgstr "Ð†Ð½Ð´ÐµÐºÑ Ñ„Ð¾Ñ€Ð¼Ð¸ перешкоди"
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
#: servers/physics_2d_server.cpp servers/physics_server.cpp
-#, fuzzy
msgid "Collider Velocity"
-msgstr "Орбітальний вид праворуч"
+msgstr "ШвидкіÑть перешкоди"
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
msgid "Collider Metadata"
@@ -19711,9 +20927,8 @@ msgid "Invert"
msgstr "Інвертувати"
#: scene/2d/polygon_2d.cpp
-#, fuzzy
msgid "Vertex Colors"
-msgstr "Вершина"
+msgstr "Кольори вершин"
#: scene/2d/polygon_2d.cpp
msgid "Internal Vertex Count"
@@ -19724,14 +20939,12 @@ msgid "Gizmo Extents"
msgstr "Гаджети"
#: scene/2d/ray_cast_2d.cpp scene/3d/ray_cast.cpp
-#, fuzzy
msgid "Exclude Parent"
-msgstr "Виключити"
+msgstr "Виключити батьківÑький"
#: scene/2d/ray_cast_2d.cpp scene/3d/ray_cast.cpp
-#, fuzzy
msgid "Cast To"
-msgstr "ÐаклаÑти тінь"
+msgstr "ПриведеннÑ"
#: scene/2d/ray_cast_2d.cpp scene/3d/ray_cast.cpp
msgid "Collide With"
@@ -19739,7 +20952,7 @@ msgstr ""
#: scene/2d/ray_cast_2d.cpp scene/3d/camera.cpp scene/3d/ray_cast.cpp
msgid "Areas"
-msgstr ""
+msgstr "ОблаÑті"
#: scene/2d/ray_cast_2d.cpp scene/3d/camera.cpp scene/3d/ray_cast.cpp
msgid "Bodies"
@@ -19752,19 +20965,16 @@ msgstr ""
"коректний вузол Node2D."
#: scene/2d/remote_transform_2d.cpp scene/3d/remote_transform.cpp
-#, fuzzy
msgid "Remote Path"
-msgstr "Вилучити точку"
+msgstr "Віддалений шлÑÑ…"
#: scene/2d/remote_transform_2d.cpp scene/3d/remote_transform.cpp
-#, fuzzy
msgid "Use Global Coordinates"
-msgstr "ÐаÑтупна координата"
+msgstr "Глобальні координати"
#: scene/2d/skeleton_2d.cpp
-#, fuzzy
msgid "Rest"
-msgstr "ПерезапуÑтити"
+msgstr "Відпочинок"
#: scene/2d/skeleton_2d.cpp
msgid "Default Length"
@@ -19794,14 +21004,12 @@ msgid "Vframes"
msgstr ""
#: scene/2d/sprite.cpp scene/3d/sprite_3d.cpp
-#, fuzzy
msgid "Frame Coords"
-msgstr "Кадри"
+msgstr "Координати кадру"
#: scene/2d/sprite.cpp scene/resources/texture.cpp
-#, fuzzy
msgid "Filter Clip"
-msgstr "Фільтрувати Ñкрипти"
+msgstr "ÐžÐ±Ñ€Ñ–Ð·Ð°Ð½Ð½Ñ Ñ„Ñ–Ð»ÑŒÑ‚Ñ€Ð°"
#: scene/2d/tile_map.cpp
msgid ""
@@ -19819,67 +21027,56 @@ msgid "Tile Set"
msgstr "Ðабір плитки"
#: scene/2d/tile_map.cpp
-#, fuzzy
msgid "Quadrant Size"
-msgstr "Змінити розмір камери"
+msgstr "Розмір квадранта"
#: scene/2d/tile_map.cpp
-#, fuzzy
msgid "Custom Transform"
-msgstr "ПеретвореннÑ"
+msgstr "Ðетипове перетвореннÑ"
#: scene/2d/tile_map.cpp
-#, fuzzy
msgid "Half Offset"
-msgstr "Ініціалізувати"
+msgstr "Ðапів відÑтуп"
#: scene/2d/tile_map.cpp
-#, fuzzy
msgid "Tile Origin"
-msgstr "ПереглÑд центра"
+msgstr "Центр плитки"
#: scene/2d/tile_map.cpp
-#, fuzzy
msgid "Y Sort"
-msgstr "Сортувати"
+msgstr "УпорÑÐ´ÐºÑƒÐ²Ð°Ð½Ð½Ñ Ð·Ð° Y"
#: scene/2d/tile_map.cpp
-#, fuzzy
msgid "Show Collision"
-msgstr "ЗіткненнÑ"
+msgstr "Показувати зіткненнÑ"
#: scene/2d/tile_map.cpp
-#, fuzzy
msgid "Compatibility Mode"
-msgstr "СуміÑніÑть"
+msgstr "Режим ÑуміÑноÑті"
#: scene/2d/tile_map.cpp
-#, fuzzy
msgid "Centered Textures"
-msgstr "ОÑновні можливоÑті:"
+msgstr "Центровані текÑтури"
#: scene/2d/tile_map.cpp
msgid "Cell Clip UV"
msgstr ""
#: scene/2d/tile_map.cpp
-#, fuzzy
msgid "Use Parent"
-msgstr "Режим перешкоди"
+msgstr "БатьківÑький"
#: scene/2d/tile_map.cpp
msgid "Use Kinematic"
msgstr ""
#: scene/2d/touch_screen_button.cpp
-#, fuzzy
msgid "Shape Centered"
-msgstr "ÐŸÑ€Ð¸Ð»Ð¸Ð¿Ð°Ð½Ð½Ñ Ð´Ð¾ центру вузла"
+msgstr "Центрована форма"
#: scene/2d/touch_screen_button.cpp
-#, fuzzy
msgid "Shape Visible"
-msgstr "Перемкнути видиміÑть"
+msgstr "ВидиміÑть форми"
#: scene/2d/touch_screen_button.cpp
msgid "Passby Press"
@@ -19897,14 +21094,41 @@ msgstr ""
"VisibilityEnable2D найкраще працюватиме, Ñкщо його викориÑтано із "
"безпоÑереднім батьківÑьким елементом — редагованим коренем Ñцени."
+#: scene/2d/visibility_notifier_2d.cpp scene/3d/visibility_notifier.cpp
+#, fuzzy
+msgid "Pause Animations"
+msgstr "Ð’Ñтавити анімацію"
+
+#: scene/2d/visibility_notifier_2d.cpp scene/3d/visibility_notifier.cpp
+msgid "Freeze Bodies"
+msgstr ""
+
+#: scene/2d/visibility_notifier_2d.cpp
+#, fuzzy
+msgid "Pause Particles"
+msgstr "ЧаÑтинки"
+
+#: scene/2d/visibility_notifier_2d.cpp
+#, fuzzy
+msgid "Pause Animated Sprites"
+msgstr "Ð’Ñтавити анімацію"
+
+#: scene/2d/visibility_notifier_2d.cpp
+#, fuzzy
+msgid "Process Parent"
+msgstr "ПріоритетніÑть процеÑу"
+
+#: scene/2d/visibility_notifier_2d.cpp
+msgid "Physics Process Parent"
+msgstr ""
+
#: scene/3d/area.cpp
msgid "Reverb Bus"
msgstr ""
#: scene/3d/area.cpp
-#, fuzzy
msgid "Uniformity"
-msgstr "Ð’Ñтановити однорідну назву"
+msgstr "ОднорідніÑть"
#: scene/3d/arvr_nodes.cpp
msgid "ARVRCamera must have an ARVROrigin node as its parent."
@@ -19931,9 +21155,8 @@ msgstr ""
"цей контролер не буде пов'Ñзано із Ñправжнім елементом керуваннÑ."
#: scene/3d/arvr_nodes.cpp
-#, fuzzy
msgid "Anchor ID"
-msgstr "Тільки прив'Ñзки"
+msgstr "Ідентифікатор прив'Ñзки"
#: scene/3d/arvr_nodes.cpp
msgid "ARVRAnchor must have an ARVROrigin node as its parent."
@@ -19952,9 +21175,8 @@ msgid "ARVROrigin requires an ARVRCamera child node."
msgstr "ARVROrigin повинен мати дочірній вузол ARVRCamera."
#: scene/3d/arvr_nodes.cpp servers/arvr_server.cpp
-#, fuzzy
msgid "World Scale"
-msgstr "Звичайне маÑштабуваннÑ"
+msgstr "МаÑштаб Ñвіту"
#: scene/3d/audio_stream_player_3d.cpp
msgid "Attenuation Model"
@@ -19981,20 +21203,19 @@ msgid "Emission Angle"
msgstr "Кольори випромінюваннÑ"
#: scene/3d/audio_stream_player_3d.cpp
-#, fuzzy
msgid "Degrees"
-msgstr "ÐžÐ±ÐµÑ€Ñ‚Ð°Ð½Ð½Ñ Ð½Ð° %s градуÑів."
+msgstr "ГрадуÑи"
#: scene/3d/audio_stream_player_3d.cpp
-#, fuzzy
msgid "Filter Attenuation dB"
-msgstr "ÐнімаціÑ"
+msgstr "ÐŸÐ¾Ð³Ð»Ð¸Ð½Ð°Ð½Ð½Ñ Ñ„Ñ–Ð»ÑŒÑ‚Ñ€Ð° у дБ"
#: scene/3d/audio_stream_player_3d.cpp
msgid "Attenuation Filter"
msgstr ""
#: scene/3d/audio_stream_player_3d.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
#: servers/audio/effects/audio_effect_filter.cpp
msgid "Cutoff Hz"
msgstr "ПропуÑÐºÐ°Ð½Ð½Ñ (у Гц)"
@@ -20009,9 +21230,8 @@ msgid "Doppler"
msgstr "Доплер"
#: scene/3d/audio_stream_player_3d.cpp
-#, fuzzy
msgid "Tracking"
-msgstr "ПакуваннÑ"
+msgstr "СтеженнÑ"
#: scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp
msgid "Bounds"
@@ -20031,13 +21251,8 @@ msgid "Interior"
msgstr ""
#: scene/3d/baked_lightmap.cpp
-#, fuzzy
msgid "Octree"
-msgstr "Піддерево"
-
-#: scene/3d/baked_lightmap.cpp
-msgid "User Data"
-msgstr "Дані кориÑтувача"
+msgstr "Дерево октантів"
#: scene/3d/baked_lightmap.cpp
msgid "Finding meshes and lights"
@@ -20066,9 +21281,8 @@ msgstr "Зроблено"
#: scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp
#: scene/3d/reflection_probe.cpp scene/resources/box_shape.cpp
#: scene/resources/rectangle_shape_2d.cpp
-#, fuzzy
msgid "Extents"
-msgstr "Гаджети"
+msgstr "Розміри"
#: scene/3d/baked_lightmap.cpp
msgid "Tweaks"
@@ -20083,18 +21297,16 @@ msgid "Bounce Indirect Energy"
msgstr ""
#: scene/3d/baked_lightmap.cpp
-#, fuzzy
msgid "Use Denoiser"
-msgstr "Фільтр:"
+msgstr "ВикориÑтати уÑÑƒÐ²Ð°Ð½Ð½Ñ ÑˆÑƒÐ¼Ñƒ"
#: scene/3d/baked_lightmap.cpp scene/resources/texture.cpp
msgid "Use HDR"
msgstr ""
#: scene/3d/baked_lightmap.cpp
-#, fuzzy
msgid "Use Color"
-msgstr "Базовий колір"
+msgstr "ВикориÑтати колір"
#: scene/3d/baked_lightmap.cpp
msgid "Default Texels Per Unit"
@@ -20105,39 +21317,32 @@ msgid "Atlas"
msgstr "ÐтлаÑ"
#: scene/3d/baked_lightmap.cpp
-#, fuzzy
msgid "Generate"
-msgstr "Загальне"
+msgstr "Створити"
#: scene/3d/baked_lightmap.cpp
-#, fuzzy
msgid "Max Size"
-msgstr "МакÑ. розмір (кБ)"
+msgstr "МакÑ. розмір"
#: scene/3d/baked_lightmap.cpp
-#, fuzzy
msgid "Custom Sky"
-msgstr "Ðетиповий вузол"
+msgstr "Ðетипове небо"
#: scene/3d/baked_lightmap.cpp
-#, fuzzy
msgid "Custom Sky Rotation Degrees"
-msgstr "ÐžÐ±ÐµÑ€Ñ‚Ð°Ð½Ð½Ñ Ð½Ð° %s градуÑів."
+msgstr "Ðетипові градуÑи Ð¾Ð±ÐµÑ€Ñ‚Ð°Ð½Ð½Ñ Ð½ÐµÐ±Ð°"
#: scene/3d/baked_lightmap.cpp scene/3d/ray_cast.cpp
-#, fuzzy
msgid "Custom Color"
-msgstr "Ðетиповий шрифт"
+msgstr "Ðетиповий колір"
#: scene/3d/baked_lightmap.cpp
-#, fuzzy
msgid "Custom Energy"
-msgstr "СонÑчна енергіÑ"
+msgstr "Ðетипова енергіÑ"
#: scene/3d/baked_lightmap.cpp
-#, fuzzy
msgid "Min Light"
-msgstr "Збільшити відÑтуп"
+msgstr "Мін. Ñвітло"
#: scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp
msgid "Propagation"
@@ -20152,9 +21357,8 @@ msgid "Light Data"
msgstr "З даними"
#: scene/3d/bone_attachment.cpp
-#, fuzzy
msgid "Bone Name"
-msgstr "Ім'Ñ Ð’ÑƒÐ·Ð»Ð°:"
+msgstr "Ðазва кіÑтки"
#: scene/3d/camera.cpp
msgid "Keep Aspect"
@@ -20177,9 +21381,8 @@ msgid "FOV"
msgstr "ПЗ"
#: scene/3d/camera.cpp
-#, fuzzy
msgid "Frustum Offset"
-msgstr "ВідÑтуп Ñітки:"
+msgstr "ЗÑув обрізка"
#: scene/3d/camera.cpp
msgid "Near"
@@ -20198,16 +21401,15 @@ msgstr "Поле"
#: scene/3d/camera.cpp
msgid "Clip To"
-msgstr "Обрізати до:"
+msgstr "Обрізати до"
#: scene/3d/collision_object.cpp scene/3d/soft_body.cpp
msgid "Ray Pickable"
msgstr ""
#: scene/3d/collision_object.cpp
-#, fuzzy
msgid "Capture On Drag"
-msgstr "ЗахопленнÑ"
+msgstr "Ð—Ð°Ñ…Ð¾Ð¿Ð»ÐµÐ½Ð½Ñ Ð¿Ñ€Ð¸ перетÑгуванні"
#: scene/3d/collision_object.cpp
msgid ""
@@ -20280,33 +21482,38 @@ msgstr ""
"Billboard Ñкого Ñлід вÑтановити у Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Â«Particle Billboard»."
#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
-#, fuzzy
msgid "Box Extents"
-msgstr "Гаджети"
+msgstr "Розміри панелі"
#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
-#, fuzzy
msgid "Ring Radius"
-msgstr "МаÑка випромінюваннÑ"
+msgstr "Ð Ð°Ð´Ñ–ÑƒÑ ÐºÑ–Ð»ÑŒÑ†Ñ"
#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
-#, fuzzy
msgid "Ring Inner Radius"
-msgstr "Внутрішній радіуÑ:"
+msgstr "Внутрішній Ñ€Ð°Ð´Ñ–ÑƒÑ ÐºÑ–Ð»ÑŒÑ†Ñ"
#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
-#, fuzzy
msgid "Ring Height"
-msgstr "Обернути праворуч"
+msgstr "ВиÑота кільцÑ"
#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
-#, fuzzy
msgid "Ring Axis"
-msgstr "КільцÑ"
+msgstr "Ð’Ñ–ÑÑŒ кільцÑ"
+
+#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Rotate Y"
+msgstr "Обертати"
+
+#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Disable Z"
+msgstr "Вимкнути тривимірніÑть"
#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
msgid "Flatness"
-msgstr "ПлаÑкіÑть:"
+msgstr "ПлаÑкіÑть"
#: scene/3d/cull_instance.cpp servers/visual_server.cpp
msgid "Portals"
@@ -20321,9 +21528,8 @@ msgid "Include In Bound"
msgstr ""
#: scene/3d/cull_instance.cpp
-#, fuzzy
msgid "Allow Merging"
-msgstr "дозволено"
+msgstr "Дозволити об’єднаннÑ"
#: scene/3d/cull_instance.cpp
msgid "Autoplace Priority"
@@ -20334,23 +21540,18 @@ msgid "To Cell Xform"
msgstr ""
#: scene/3d/gi_probe.cpp
-#, fuzzy
msgid "Dynamic Data"
-msgstr "Динамічний діапазон"
+msgstr "Динамічні дані"
#: scene/3d/gi_probe.cpp
msgid "Dynamic Range"
msgstr "Динамічний діапазон"
-#: scene/3d/gi_probe.cpp
+#: scene/3d/gi_probe.cpp scene/3d/light.cpp
msgid "Normal Bias"
msgstr ""
#: scene/3d/gi_probe.cpp
-msgid "Compress"
-msgstr "СтиÑнути"
-
-#: scene/3d/gi_probe.cpp
msgid "Plotting Meshes"
msgstr "Побудова Ñітки"
@@ -20382,18 +21583,30 @@ msgstr ""
#: scene/3d/light.cpp
#, fuzzy
+msgid "Indirect Energy"
+msgstr "Ð—Ð¾Ð²Ð½Ñ–ÑˆÐ½Ñ ÐµÐ½ÐµÑ€Ð³Ñ–Ñ"
+
+#: scene/3d/light.cpp
msgid "Negative"
-msgstr "GDNative"
+msgstr "Від'ємний"
#: scene/3d/light.cpp
#, fuzzy
+msgid "Specular"
+msgstr "Режим віддзеркаленнÑ"
+
+#: scene/3d/light.cpp
msgid "Bake Mode"
-msgstr "Режим бітової маÑки"
+msgstr "Режим запіканнÑ"
#: scene/3d/light.cpp
#, fuzzy
+msgid "Contact"
+msgstr "КонтраÑтніÑть"
+
+#: scene/3d/light.cpp
msgid "Reverse Cull Face"
-msgstr "Скинути гучніÑть шини"
+msgstr "Обернути поверхню відбраковуваннÑ"
#: scene/3d/light.cpp servers/visual_server.cpp
msgid "Directional Shadow"
@@ -20401,27 +21614,43 @@ msgstr "ÐапрÑмки"
#: scene/3d/light.cpp
#, fuzzy
+msgid "Split 1"
+msgstr "Розділити"
+
+#: scene/3d/light.cpp
+#, fuzzy
+msgid "Split 2"
+msgstr "Розділити"
+
+#: scene/3d/light.cpp
+#, fuzzy
+msgid "Split 3"
+msgstr "Розділити"
+
+#: scene/3d/light.cpp
msgid "Blend Splits"
-msgstr "Ð§Ð°Ñ Ð·Ð¼Ñ–ÑˆÑƒÐ²Ð°Ð½Ð½Ñ:"
+msgstr "Поділи змішуваннÑ"
#: scene/3d/light.cpp
#, fuzzy
+msgid "Bias Split Scale"
+msgstr "Базовий маÑштаб"
+
+#: scene/3d/light.cpp
msgid "Depth Range"
-msgstr "Глибина"
+msgstr "Діапазон глибин"
#: scene/3d/light.cpp
msgid "Omni"
msgstr ""
#: scene/3d/light.cpp
-#, fuzzy
msgid "Shadow Mode"
-msgstr "Розмір ті&ні:"
+msgstr "Режим тіней"
#: scene/3d/light.cpp
-#, fuzzy
msgid "Shadow Detail"
-msgstr "Показати типовий"
+msgstr "Подробиці затіненнÑ"
#: scene/3d/light.cpp
msgid "A SpotLight with an angle wider than 90 degrees cannot cast shadows."
@@ -20431,32 +21660,34 @@ msgstr "SpotLight з кутом, Ñкий Ñ” більшим за 90 градуÑ
msgid "Spot"
msgstr "ПлÑма"
+#: scene/3d/light.cpp
+#, fuzzy
+msgid "Angle Attenuation"
+msgstr "ÐнімаціÑ"
+
#: scene/3d/mesh_instance.cpp
msgid "Software Skinning"
msgstr ""
#: scene/3d/mesh_instance.cpp
-#, fuzzy
msgid "Transform Normals"
-msgstr "ÐŸÐµÑ€ÐµÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ð¿ÐµÑ€ÐµÑ€Ð²Ð°Ð½Ð¾."
+msgstr "Перетворити нормалі"
#: scene/3d/navigation.cpp scene/resources/curve.cpp
msgid "Up Vector"
msgstr "Вектор"
#: scene/3d/navigation.cpp
-#, fuzzy
msgid "Cell Height"
-msgstr "ТеÑтуваннÑ"
+msgstr "ВиÑота комірки"
#: scene/3d/navigation_agent.cpp
msgid "Agent Height Offset"
msgstr ""
#: scene/3d/navigation_agent.cpp
-#, fuzzy
msgid "Ignore Y"
-msgstr "[Ігнорувати]"
+msgstr "Ігнорувати Y"
#: scene/3d/navigation_agent.cpp
msgid "The NavigationAgent can be used only under a spatial node."
@@ -20530,18 +21761,16 @@ msgstr ""
"Ñкого Ñлід вÑтановити у Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Â«Particle Billboard»."
#: scene/3d/particles.cpp
-#, fuzzy
msgid "Visibility AABB"
-msgstr "ВидиміÑть"
+msgstr "AABB видимоÑті"
#: scene/3d/particles.cpp
msgid "Draw Passes"
-msgstr "Ðамалювати виклики:"
+msgstr "Ðамалювати проходи"
#: scene/3d/particles.cpp
-#, fuzzy
msgid "Passes"
-msgstr "Ðамалювати виклики:"
+msgstr "Проходи"
#: scene/3d/path.cpp
msgid "PathFollow only works when set as a child of a Path node."
@@ -20575,8 +21804,67 @@ msgstr "Ð’Ñ–ÑÑŒ"
#: scene/3d/physics_body.cpp
#, fuzzy
+msgid "Linear X"
+msgstr "Лінійний"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Linear Y"
+msgstr "Лінійний"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Linear Z"
+msgstr "Лінійний"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Angular X"
+msgstr "Кутовий"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Angular Y"
+msgstr "Кутовий"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Angular Z"
+msgstr "Кутовий"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Motion X"
+msgstr "Рух"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Motion Y"
+msgstr "Рух"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Motion Z"
+msgstr "Рух"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Move Lock X"
+msgstr "ПереÑунути вузол"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Move Lock Y"
+msgstr "ПереÑунути вузол"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Move Lock Z"
+msgstr "ПереÑунути вузол"
+
+#: scene/3d/physics_body.cpp
msgid "Body Offset"
-msgstr "ЗміщеннÑ"
+msgstr "Ð—Ð¼Ñ–Ñ‰ÐµÐ½Ð½Ñ Ð²Ð¼Ñ–Ñту"
#: scene/3d/physics_joint.cpp
msgid "Node A and Node B must be PhysicsBodies"
@@ -20603,9 +21891,17 @@ msgid "Solver"
msgstr "Розв’Ñзувач"
#: scene/3d/physics_joint.cpp
-#, fuzzy
msgid "Exclude Nodes"
-msgstr "Виключити"
+msgstr "Виключити вузли"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Params"
+msgstr "Параметри"
+
+#: scene/3d/physics_joint.cpp
+msgid "Impulse Clamp"
+msgstr ""
#: scene/3d/physics_joint.cpp
msgid "Angular Limit"
@@ -20619,6 +21915,54 @@ msgstr "ВерхнÑ"
msgid "Lower"
msgstr "ОпуÑтити"
+#: scene/3d/physics_joint.cpp scene/3d/vehicle_body.cpp
+msgid "Relaxation"
+msgstr "РелакÑаціÑ"
+
+#: scene/3d/physics_joint.cpp
+msgid "Motor"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Target Velocity"
+msgstr "Орбітальний вид праворуч"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Max Impulse"
+msgstr "МакÑ. швидкіÑть"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit"
+msgstr "Лінійний"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Upper Distance"
+msgstr "ВідÑтань диÑкретизації"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Lower Distance"
+msgstr "ВідÑтань"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Restitution"
+msgstr "ОпиÑ"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motion"
+msgstr "Лінійна швидкіÑть"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Ortho"
+msgstr "Задній ортогональний"
+
#: scene/3d/physics_joint.cpp
msgid "Upper Angle"
msgstr "ВЕРХÐІЙ РЕГІСТР"
@@ -20628,6 +21972,16 @@ msgid "Lower Angle"
msgstr "нижній регіÑтр"
#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Angular Motion"
+msgstr "Кутовий"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Angular Ortho"
+msgstr "Кутовий"
+
+#: scene/3d/physics_joint.cpp
msgid "Swing Span"
msgstr "Ð—Ð±ÐµÑ€ÐµÐ¶ÐµÐ½Ð½Ñ Ñцени"
@@ -20636,17 +21990,105 @@ msgid "Twist Span"
msgstr ""
#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit X"
+msgstr "Лінійний"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motor X"
+msgstr "Лінійна швидкіÑть"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Force Limit"
+msgstr "ÐžÐ±Ð¼ÐµÐ¶ÐµÐ½Ð½Ñ Ð¼Ð°Ð»ÑŽÐ²Ð°Ð½Ð½Ñ"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Spring X"
+msgstr "Інтервал між Ñ€Ñдками"
+
+#: scene/3d/physics_joint.cpp
+msgid "Equilibrium Point"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit X"
msgstr ""
#: scene/3d/physics_joint.cpp
+msgid "Erp"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Angular Motor X"
+msgstr "Кутовий"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Angular Spring X"
+msgstr "Кутовий"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit Y"
+msgstr "Лінійний"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motor Y"
+msgstr "Лінійна швидкіÑть"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Spring Y"
+msgstr "Інтервал між Ñ€Ñдками"
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit Y"
msgstr ""
#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Angular Motor Y"
+msgstr "Кутовий"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Angular Spring Y"
+msgstr "Кутовий"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit Z"
+msgstr "Лінійний"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motor Z"
+msgstr "Лінійна швидкіÑть"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Spring Z"
+msgstr "Інтервал між Ñ€Ñдками"
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit Z"
msgstr ""
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Angular Motor Z"
+msgstr "Кутовий"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Angular Spring Z"
+msgstr "Кутовий"
+
#: scene/3d/portal.cpp
msgid "The RoomManager should not be a child or grandchild of a Portal."
msgstr ""
@@ -20666,37 +22108,32 @@ msgstr ""
"Ð´Ð»Ñ Portal."
#: scene/3d/portal.cpp
-#, fuzzy
msgid "Portal Active"
-msgstr " [портали активні]"
+msgstr "Ðктивний портал"
#: scene/3d/portal.cpp scene/resources/occluder_shape_polygon.cpp
msgid "Two Way"
-msgstr ""
+msgstr "Двобічний"
#: scene/3d/portal.cpp
-#, fuzzy
msgid "Linked Room"
-msgstr "Корінь інтерактивного редагуваннÑ:"
+msgstr "Пов'Ñзаний проÑтір"
#: scene/3d/portal.cpp
-#, fuzzy
msgid "Use Default Margin"
-msgstr "Типовий"
+msgstr "ВикориÑтовувати типове поле"
#: scene/3d/proximity_group.cpp
-#, fuzzy
msgid "Group Name"
-msgstr "Згруповано"
+msgstr "Ðазва групи"
#: scene/3d/proximity_group.cpp
msgid "Dispatch Mode"
msgstr ""
#: scene/3d/proximity_group.cpp
-#, fuzzy
msgid "Grid Radius"
-msgstr "РадіуÑ"
+msgstr "Ð Ð°Ð´Ñ–ÑƒÑ Ñітки"
#: scene/3d/ray_cast.cpp
msgid "Debug Shape"
@@ -20711,34 +22148,28 @@ msgid "Update Mode"
msgstr "Режим повороту"
#: scene/3d/reflection_probe.cpp
-#, fuzzy
msgid "Origin Offset"
-msgstr "ВідÑтуп Ñітки:"
+msgstr "ЗÑув початку координат"
#: scene/3d/reflection_probe.cpp
-#, fuzzy
msgid "Box Projection"
-msgstr "ПроєкціÑ"
+msgstr "ÐŸÑ€Ð¾Ñ”ÐºÑ†Ñ–Ñ Ð¿Ð°Ð½ÐµÐ»Ñ–"
#: scene/3d/reflection_probe.cpp
-#, fuzzy
msgid "Enable Shadows"
-msgstr "Дозволити прилипаннÑ"
+msgstr "Увімкнути тіні"
#: scene/3d/reflection_probe.cpp
-#, fuzzy
msgid "Ambient Color"
-msgstr "Вибрати колір"
+msgstr "Зовнішній колір"
#: scene/3d/reflection_probe.cpp
-#, fuzzy
msgid "Ambient Energy"
-msgstr "Кольори випромінюваннÑ"
+msgstr "Ð—Ð¾Ð²Ð½Ñ–ÑˆÐ½Ñ ÐµÐ½ÐµÑ€Ð³Ñ–Ñ"
#: scene/3d/reflection_probe.cpp
-#, fuzzy
msgid "Ambient Contrib"
-msgstr "Збільшити відÑтуп"
+msgstr "Зовнішній внеÑок"
#: scene/3d/remote_transform.cpp
msgid ""
@@ -20772,11 +22203,11 @@ msgstr ""
#: scene/3d/room.cpp
msgid "Use Default Simplify"
-msgstr ""
+msgstr "Типове ÑпрощеннÑ"
-#: scene/3d/room.cpp
+#: scene/3d/room.cpp scene/3d/room_manager.cpp
msgid "Room Simplify"
-msgstr ""
+msgstr "Ð¡Ð¿Ñ€Ð¾Ñ‰ÐµÐ½Ð½Ñ ÐºÑ–Ð¼Ð½Ð°Ñ‚Ð¸"
#: scene/3d/room.cpp
msgid "Bound"
@@ -20814,6 +22245,12 @@ msgstr "У SceneTree має бути лише один Ð·Ð°Ð¿Ð¸Ñ RoomManager."
msgid "Main"
msgstr "ОÑновний"
+#: scene/3d/room_manager.cpp scene/animation/animation_player.cpp
+#: scene/animation/animation_tree.cpp scene/animation/animation_tree_player.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+msgid "Active"
+msgstr "Ðктивний"
+
#: scene/3d/room_manager.cpp
msgid "Roomlist"
msgstr ""
@@ -20835,6 +22272,54 @@ msgid "Gameplay"
msgstr ""
#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Gameplay Monitor"
+msgstr "Монітор"
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Use Secondary PVS"
+msgstr "ВикориÑтати прив'ÑÐ·ÑƒÐ²Ð°Ð½Ð½Ñ Ð¼Ð°Ñштабу"
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Merge Meshes"
+msgstr "Сітка"
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Show Margins"
+msgstr "Показати центр"
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Debug Sprawl"
+msgstr "ДіагноÑтика"
+
+#: scene/3d/room_manager.cpp
+msgid "Overlap Warning Threshold"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Preview Camera"
+msgstr "Розмір переглÑду"
+
+#: scene/3d/room_manager.cpp
+msgid "Portal Depth Limit"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Default Portal Margin"
+msgstr "Поле порталу"
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Roaming Expansion Margin"
+msgstr "Розгорнути вÑе"
+
+#: scene/3d/room_manager.cpp
msgid ""
"RoomList path is invalid.\n"
"Please check the RoomList branch has been assigned in the RoomManager."
@@ -20885,18 +22370,16 @@ msgstr ""
"ПереконайтеÑÑ, що Ð´Ð»Ñ ÑƒÑÑ–Ñ… кімнат вказано межі вручну або геометричні межі."
#: scene/3d/soft_body.cpp
-#, fuzzy
msgid "Physics Enabled"
-msgstr "Фізичний кадр %"
+msgstr "Фізику увімкнено"
#: scene/3d/soft_body.cpp
-#, fuzzy
msgid "Parent Collision Ignore"
-msgstr "Створити полігон зіткненнÑ"
+msgstr "Ігнорувати батьківÑькі зіткненнÑ"
#: scene/3d/soft_body.cpp
msgid "Simulation Precision"
-msgstr "Дерево анімації недійÑне."
+msgstr "ТочніÑть імітації"
#: scene/3d/soft_body.cpp
msgid "Total Mass"
@@ -20915,9 +22398,8 @@ msgid "Volume Stiffness"
msgstr ""
#: scene/3d/soft_body.cpp
-#, fuzzy
msgid "Pressure Coefficient"
-msgstr "Коефіцієнт опору"
+msgstr "Коефіцієнт тиÑку"
#: scene/3d/soft_body.cpp
msgid "Damping Coefficient"
@@ -20953,14 +22435,12 @@ msgid "Gizmo"
msgstr "Гаджети"
#: scene/3d/spatial_velocity_tracker.cpp
-#, fuzzy
msgid "Track Physics Step"
-msgstr "Фізичний кадр %"
+msgstr "Крок ÑÑ‚ÐµÐ¶ÐµÐ½Ð½Ñ Ð·Ð° фізикою"
#: scene/3d/spring_arm.cpp
-#, fuzzy
msgid "Spring Length"
-msgstr "ПотужніÑть"
+msgstr "Довжина пружини"
#: scene/3d/sprite_3d.cpp scene/gui/graph_edit.cpp
msgid "Opacity"
@@ -20974,6 +22454,21 @@ msgstr "Розмір у пікÑелÑÑ…"
msgid "Billboard"
msgstr ""
+#: scene/3d/sprite_3d.cpp scene/resources/material.cpp
+#, fuzzy
+msgid "Transparent"
+msgstr "Прозоре тло"
+
+#: scene/3d/sprite_3d.cpp
+#, fuzzy
+msgid "Shaded"
+msgstr "Шейдер"
+
+#: scene/3d/sprite_3d.cpp
+#, fuzzy
+msgid "Double Sided"
+msgstr "Подвійне клацаннÑ"
+
#: scene/3d/sprite_3d.cpp
msgid "Alpha Cut"
msgstr ""
@@ -21015,9 +22510,8 @@ msgid "VehicleBody Motion"
msgstr ""
#: scene/3d/vehicle_body.cpp
-#, fuzzy
msgid "Use As Traction"
-msgstr "ВідокремленнÑ:"
+msgstr "ВикориÑтовувати Ñ‚Ñги"
#: scene/3d/vehicle_body.cpp
msgid "Use As Steering"
@@ -21032,23 +22526,16 @@ msgid "Roll Influence"
msgstr ""
#: scene/3d/vehicle_body.cpp
-#, fuzzy
msgid "Friction Slip"
-msgstr "ФункціÑ"
+msgstr "ÐšÐ¾Ð²Ð·Ð°Ð½Ð½Ñ Ð· тертÑм"
#: scene/3d/vehicle_body.cpp
msgid "Suspension"
msgstr "ПризупиненнÑ"
#: scene/3d/vehicle_body.cpp
-#, fuzzy
msgid "Max Force"
-msgstr "Помилка"
-
-#: scene/3d/vehicle_body.cpp
-#, fuzzy
-msgid "Relaxation"
-msgstr "ВідокремленнÑ:"
+msgstr "МакÑимальна Ñила"
#: scene/3d/visibility_notifier.cpp
msgid "AABB"
@@ -21064,7 +22551,7 @@ msgstr "ПеревизначеннÑ"
#: scene/3d/visual_instance.cpp
msgid "Material Overlay"
-msgstr "Зміни матеріалу:"
+msgstr "ÐÐ°ÐºÐ»Ð°Ð´Ð°Ð½Ð½Ñ Ð¼Ð°Ñ‚ÐµÑ€Ñ–Ð°Ð»Ñƒ"
#: scene/3d/visual_instance.cpp
msgid "Cast Shadow"
@@ -21072,16 +22559,15 @@ msgstr "ÐаклаÑти тінь"
#: scene/3d/visual_instance.cpp
msgid "Extra Cull Margin"
-msgstr "Додаткові аргументи виклику:"
+msgstr "Додаткове поле відбракуваннÑ"
#: scene/3d/visual_instance.cpp
msgid "Baked Light"
msgstr "Запікати карти оÑвітленнÑ"
#: scene/3d/visual_instance.cpp
-#, fuzzy
msgid "Generate Lightmap"
-msgstr "Ð¡Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ ÐºÐ°Ñ€Ñ‚ оÑвітленнÑ"
+msgstr "Створити карту оÑвітленнÑ"
#: scene/3d/visual_instance.cpp
msgid "Lightmap Scale"
@@ -21093,9 +22579,8 @@ msgstr "Лод"
#: scene/3d/visual_instance.cpp scene/animation/skeleton_ik.cpp
#: scene/resources/material.cpp
-#, fuzzy
msgid "Min Distance"
-msgstr "ВідÑтань вибору:"
+msgstr "Мін. відÑтань"
#: scene/3d/visual_instance.cpp
msgid "Min Hysteresis"
@@ -21148,9 +22633,8 @@ msgid "Auto Triangles"
msgstr "Увімкнути або вимкнути автоматичні трикутники"
#: scene/animation/animation_blend_space_2d.cpp
-#, fuzzy
msgid "Triangles"
-msgstr "Увімкнути або вимкнути автоматичні трикутники"
+msgstr "Трикутники"
#: scene/animation/animation_blend_space_2d.cpp
msgid "X Label"
@@ -21174,24 +22658,24 @@ msgstr "Змішувати вузол"
#: scene/animation/animation_blend_tree.cpp
msgid "Fadein Time"
-msgstr "Ð§Ð°Ñ X-Fade (Ñ):"
+msgstr "Ð§Ð°Ñ Ð½Ð°Ñ€Ð¾ÑтаннÑ"
#: scene/animation/animation_blend_tree.cpp
msgid "Fadeout Time"
-msgstr "Ð§Ð°Ñ X-Fade (Ñ):"
+msgstr "Ð§Ð°Ñ Ð·Ð³Ð°ÑаннÑ"
#: scene/animation/animation_blend_tree.cpp
-msgid "autorestart_"
+#, fuzzy
+msgid "Auto Restart"
msgstr "Ðвтоматичний перезапуÑк:"
#: scene/animation/animation_blend_tree.cpp
-#, fuzzy
msgid "Autorestart"
-msgstr "Ðвтоматичний перезапуÑк:"
+msgstr "Ðвтоматичний перезапуÑк"
#: scene/animation/animation_blend_tree.cpp
msgid "Autorestart Delay"
-msgstr "Ðвтоматичний перезапуÑк:"
+msgstr "Затримка автоматичного перезапуÑку"
#: scene/animation/animation_blend_tree.cpp
msgid "Autorestart Random Delay"
@@ -21204,26 +22688,23 @@ msgstr "Додати вхідний порт"
#: scene/animation/animation_blend_tree.cpp
#: scene/animation/animation_node_state_machine.cpp
msgid "Xfade Time"
-msgstr "Ð§Ð°Ñ X-Fade (Ñ):"
+msgstr "Ð§Ð°Ñ X-Fade"
#: scene/animation/animation_blend_tree.cpp scene/resources/visual_shader.cpp
-#, fuzzy
msgid "Graph Offset"
-msgstr "ВідÑтуп Ñітки:"
+msgstr "ЗÑув графіки"
#: scene/animation/animation_node_state_machine.cpp
msgid "Switch Mode"
msgstr "Перемкнути режим"
#: scene/animation/animation_node_state_machine.cpp
-#, fuzzy
msgid "Auto Advance"
-msgstr "Ðвтоматичні параметри"
+msgstr "Ðвтоматичний перехід"
#: scene/animation/animation_node_state_machine.cpp
-#, fuzzy
msgid "Advance Condition"
-msgstr "Додаткові параметри"
+msgstr "Умова переходу"
#: scene/animation/animation_player.cpp
msgid "Anim Apply Reset"
@@ -21251,19 +22732,11 @@ msgstr "Додати точку анімації"
#: scene/animation/animation_player.cpp
msgid "Playback Options"
-msgstr "Параметри клаÑу:"
+msgstr "Параметри відтвореннÑ"
#: scene/animation/animation_player.cpp
-#, fuzzy
msgid "Default Blend Time"
-msgstr "Типова тема"
-
-#: scene/animation/animation_player.cpp scene/animation/animation_tree.cpp
-#: scene/animation/animation_tree_player.cpp
-#: servers/audio/effects/audio_effect_delay.cpp
-#, fuzzy
-msgid "Active"
-msgstr "ДіÑ"
+msgstr "Типовий Ñ‡Ð°Ñ Ð·Ð¼Ñ–ÑˆÑƒÐ²Ð°Ð½Ð½Ñ"
#: scene/animation/animation_player.cpp
msgid "Method Call Mode"
@@ -21304,21 +22777,19 @@ msgstr "Кореневий елемент AnimationPlayer не є коректн
#: scene/animation/animation_tree.cpp
msgid "Tree Root"
-msgstr "Створити кореневий вузол:"
+msgstr "Корінь дерева"
#: scene/animation/animation_tree.cpp
-#, fuzzy
msgid "Anim Player"
-msgstr "Пришпилити AnimationPlayer"
+msgstr "Програвач анімації"
#: scene/animation/animation_tree.cpp
msgid "Root Motion"
msgstr ""
#: scene/animation/animation_tree.cpp
-#, fuzzy
msgid "Track"
-msgstr "Додати доріжку"
+msgstr "Доріжка"
#: scene/animation/animation_tree_player.cpp
msgid "This node has been deprecated. Use AnimationTree instead."
@@ -21330,43 +22801,36 @@ msgid "Playback"
msgstr "ВідтвореннÑ"
#: scene/animation/animation_tree_player.cpp
-#, fuzzy
msgid "Master Player"
-msgstr "Ð’Ñтавити параметри"
+msgstr "ОÑновний програвач"
#: scene/animation/animation_tree_player.cpp
-#, fuzzy
msgid "Base Path"
-msgstr "ÐдреÑа зображеннÑ"
+msgstr "Базовий шлÑÑ…"
#: scene/animation/root_motion_view.cpp
-#, fuzzy
msgid "Animation Path"
-msgstr "ÐнімаціÑ"
+msgstr "ШлÑÑ… анімації"
#: scene/animation/root_motion_view.cpp
-#, fuzzy
msgid "Zero Y"
-msgstr "Ðуль"
+msgstr "Ðуль за Y"
#: scene/animation/skeleton_ik.cpp
-#, fuzzy
msgid "Root Bone"
-msgstr "Ðазва кореневого вузла"
+msgstr "Коренева кіÑтка"
#: scene/animation/skeleton_ik.cpp
-#, fuzzy
msgid "Tip Bone"
-msgstr "КіÑтки"
+msgstr "Кінчик кіÑтки"
#: scene/animation/skeleton_ik.cpp
msgid "Interpolation"
msgstr "ІнтерполÑціÑ"
#: scene/animation/skeleton_ik.cpp
-#, fuzzy
msgid "Override Tip Basis"
-msgstr "ПеревизначеннÑ"
+msgstr "Перевизначити оÑнову кінцÑ"
#: scene/animation/skeleton_ik.cpp
msgid "Use Magnet"
@@ -21374,21 +22838,15 @@ msgstr ""
#: scene/animation/skeleton_ik.cpp
msgid "Magnet"
-msgstr ""
+msgstr "Магніт"
#: scene/animation/skeleton_ik.cpp
-#, fuzzy
msgid "Target Node"
-msgstr "Змінити батьківÑький вузол"
+msgstr "Цільовий вузол"
#: scene/animation/skeleton_ik.cpp
-#, fuzzy
msgid "Max Iterations"
-msgstr "Створити функцію"
-
-#: scene/animation/tween.cpp scene/resources/texture.cpp
-msgid "Repeat"
-msgstr "ПовтореннÑ"
+msgstr "ÐœÐ°ÐºÑ Ðº-ть ітерацій"
#: scene/animation/tween.cpp
msgid "Playback Process Mode"
@@ -21416,24 +22874,9 @@ msgstr "Режим виділеннÑ"
msgid "Alignment"
msgstr "ВирівнюваннÑ"
-#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
-#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
-#: scene/resources/style_box.cpp
-#, fuzzy
-msgid "Horizontal"
-msgstr "Горизонтально:"
-
-#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
-#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
-#: scene/resources/style_box.cpp
-#, fuzzy
-msgid "Vertical"
-msgstr "Вертикально:"
-
#: scene/gui/base_button.cpp
-#, fuzzy
msgid "Shortcut In Tooltip"
-msgstr "Показати центр"
+msgstr "Ð¡ÐºÐ¾Ñ€Ð¾Ñ‡ÐµÐ½Ð½Ñ Ñƒ підказці"
#: scene/gui/base_button.cpp
msgid "Action Mode"
@@ -21456,9 +22899,8 @@ msgid "Group"
msgstr "Група"
#: scene/gui/button.cpp scene/gui/label.cpp
-#, fuzzy
msgid "Clip Text"
-msgstr "Копіювати текÑÑ‚"
+msgstr "ТекÑÑ‚ кліпу"
#: scene/gui/button.cpp scene/gui/label.cpp scene/gui/line_edit.cpp
#: scene/gui/spin_box.cpp
@@ -21470,12 +22912,10 @@ msgid "Icon Align"
msgstr ""
#: scene/gui/button.cpp
-#, fuzzy
msgid "Expand Icon"
-msgstr "Розгорнути"
+msgstr "Піктограма розгортаннÑ"
#: scene/gui/center_container.cpp
-#, fuzzy
msgid "Use Top Left"
msgstr "Згори ліворуч"
@@ -21490,34 +22930,28 @@ msgstr ""
"Права кнопка: вилучити взірець"
#: scene/gui/color_picker.cpp
-#, fuzzy
msgid "Edit Alpha"
-msgstr "Редагувати полігон"
+msgstr "Редагувати прозоріÑть"
#: scene/gui/color_picker.cpp
-#, fuzzy
msgid "HSV Mode"
-msgstr "Режим виділеннÑ"
+msgstr "Режим HSV"
#: scene/gui/color_picker.cpp
-#, fuzzy
msgid "Raw Mode"
-msgstr "Режим панорамуваннÑ"
+msgstr "Raw (Ñирий) режим"
#: scene/gui/color_picker.cpp
-#, fuzzy
msgid "Deferred Mode"
-msgstr "Відкладені"
+msgstr "Відкладений режим"
#: scene/gui/color_picker.cpp
-#, fuzzy
msgid "Presets Enabled"
-msgstr "Ðабори"
+msgstr "Увімкнені набори"
#: scene/gui/color_picker.cpp
-#, fuzzy
msgid "Presets Visible"
-msgstr "Перемкнути видиміÑть"
+msgstr "Видимі набори"
#: scene/gui/color_picker.cpp
msgid "Pick a color from the editor window."
@@ -21528,10 +22962,6 @@ msgid "HSV"
msgstr "HSV"
#: scene/gui/color_picker.cpp
-msgid "Raw"
-msgstr "Без обробки"
-
-#: scene/gui/color_picker.cpp
msgid "Switch between hexadecimal and code values."
msgstr "ÐŸÐµÑ€ÐµÐ¼Ð¸ÐºÐ°Ð½Ð½Ñ Ð¼Ñ–Ð¶ шіÑтнадцÑтковими значеннÑми Ñ– кодами."
@@ -21569,39 +22999,60 @@ msgstr "ÐапрÑмки"
#: scene/gui/control.cpp scene/resources/navigation_mesh.cpp
msgid "Min Size"
-msgstr "Розмір обведеннÑ:"
+msgstr "Мін. розмір"
#: scene/gui/control.cpp
-#, fuzzy
msgid "Pivot Offset"
-msgstr "ВідÑтуп Ñітки:"
+msgstr "ВідÑтуп точки обертаннÑ"
#: scene/gui/control.cpp
-#, fuzzy
msgid "Clip Content"
-msgstr "Стала клаÑу"
+msgstr "ВміÑÑ‚ кліпу"
#: scene/gui/control.cpp scene/resources/visual_shader_nodes.cpp
msgid "Hint"
msgstr "Підказка"
#: scene/gui/control.cpp
-#, fuzzy
msgid "Tooltip"
-msgstr "ІнÑтрументи"
+msgstr "Підказка"
#: scene/gui/control.cpp
msgid "Focus"
msgstr "ФокуÑуваннÑ"
#: scene/gui/control.cpp
+msgid "Neighbour Left"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Neighbour Top"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Neighbour Right"
+msgstr ""
+
+#: scene/gui/control.cpp
+#, fuzzy
+msgid "Neighbour Bottom"
+msgstr "За центром внизу"
+
+#: scene/gui/control.cpp
+msgid "Next"
+msgstr "Далі"
+
+#: scene/gui/control.cpp
+msgid "Previous"
+msgstr "Ðазад"
+
+#: scene/gui/control.cpp
msgid "Mouse"
msgstr "Миша"
#: scene/gui/control.cpp
-#, fuzzy
msgid "Default Cursor Shape"
-msgstr "Завантажити типове ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð½Ð½Ñ ÑˆÐ¸Ð½Ð¸."
+msgstr "Типова форма курÑора"
#: scene/gui/control.cpp
msgid "Pass On Modal Close Click"
@@ -21609,12 +23060,11 @@ msgstr ""
#: scene/gui/control.cpp
msgid "Size Flags"
-msgstr "Розмір:"
+msgstr "Прапорці розміру"
#: scene/gui/control.cpp
-#, fuzzy
msgid "Stretch Ratio"
-msgstr "Режим виділеннÑ"
+msgstr "Ð¡Ð¿Ñ–Ð²Ð²Ñ–Ð´Ð½Ð¾ÑˆÐµÐ½Ð½Ñ Ñ€Ð¾Ð·Ñ‚ÑгуваннÑ"
#: scene/gui/control.cpp
msgid "Theme Type Variation"
@@ -21629,13 +23079,12 @@ msgid "Dialog"
msgstr "Діалогове вікно"
#: scene/gui/dialogs.cpp
-msgid "Hide On Ok"
+msgid "Hide On OK"
msgstr ""
#: scene/gui/dialogs.cpp scene/gui/label.cpp
-#, fuzzy
msgid "Autowrap"
-msgstr "ÐвтозавантаженнÑ"
+msgstr "ÐвтозацикленіÑть"
#: scene/gui/dialogs.cpp
msgid "Alert!"
@@ -21646,48 +23095,40 @@ msgid "Please Confirm..."
msgstr "Будь лаÑка, підтвердьте..."
#: scene/gui/file_dialog.cpp
-#, fuzzy
msgid "Mode Overrides Title"
-msgstr "Перевизначити запиÑ"
+msgstr "Режим Ð¿ÐµÑ€ÐµÐ²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²ÐºÑ–Ð²"
#: scene/gui/file_dialog.cpp
msgid "Must use a valid extension."
msgstr "Ðеобхідно викориÑтовувати допуÑтиме розширеннÑ."
#: scene/gui/graph_edit.cpp
-#, fuzzy
msgid "Right Disconnects"
-msgstr "Роз'єднати"
+msgstr "Праворуч роз'єднує"
#: scene/gui/graph_edit.cpp
-#, fuzzy
msgid "Scroll Offset"
-msgstr "ВідÑтуп Ñітки:"
+msgstr "ВідÑтуп гортаннÑ"
#: scene/gui/graph_edit.cpp
-#, fuzzy
msgid "Snap Distance"
-msgstr "ВідÑтань вибору:"
+msgstr "ВідÑтань прилипаннÑ"
#: scene/gui/graph_edit.cpp
-#, fuzzy
msgid "Zoom Min"
-msgstr "Збільшувати"
+msgstr "Мін. маÑштабу"
#: scene/gui/graph_edit.cpp
-#, fuzzy
msgid "Zoom Max"
-msgstr "Збільшувати"
+msgstr "МакÑ. маÑштабу"
#: scene/gui/graph_edit.cpp
-#, fuzzy
msgid "Zoom Step"
-msgstr "ЗменшеннÑ"
+msgstr "Крок маÑштабуваннÑ"
#: scene/gui/graph_edit.cpp
-#, fuzzy
msgid "Show Zoom Label"
-msgstr "Показати зображеннÑ"
+msgstr "Показувати мітку маÑштабу"
#: scene/gui/graph_edit.cpp scene/gui/text_edit.cpp
msgid "Minimap"
@@ -21698,19 +23139,16 @@ msgid "Enable grid minimap."
msgstr "Увімкнути мінікарту ґратки."
#: scene/gui/graph_node.cpp
-#, fuzzy
msgid "Show Close"
-msgstr "Колір тіні"
+msgstr "Показувати замиканнÑ"
#: scene/gui/graph_node.cpp scene/gui/option_button.cpp
-#, fuzzy
msgid "Selected"
-msgstr "Виділити"
+msgstr "Позначено"
#: scene/gui/graph_node.cpp
-#, fuzzy
msgid "Comment"
-msgstr "ВнеÑок"
+msgstr "Коментар"
#: scene/gui/graph_node.cpp
msgid "Overlay"
@@ -21726,50 +23164,44 @@ msgid "Timers"
msgstr "Таймери"
#: scene/gui/item_list.cpp scene/gui/popup_menu.cpp scene/gui/tree.cpp
-msgid "Incremental Search Max Interval (msec)"
+msgid "Incremental Search Max Interval Msec"
msgstr ""
#: scene/gui/item_list.cpp scene/gui/tree.cpp
-#, fuzzy
msgid "Allow Reselect"
-msgstr "ЗаÑтоÑувати ÑкиданнÑ"
+msgstr "Дозволити повторне позначеннÑ"
#: scene/gui/item_list.cpp scene/gui/tree.cpp
-#, fuzzy
msgid "Allow RMB Select"
-msgstr "Заповнити позначене"
+msgstr "Дозволити Ð¿Ð¾Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð¿Ñ€Ð°Ð²Ð¾ÑŽ кнопкою"
#: scene/gui/item_list.cpp
msgid "Max Text Lines"
msgstr ""
#: scene/gui/item_list.cpp
-#, fuzzy
msgid "Auto Height"
-msgstr "ТеÑтуваннÑ"
+msgstr "Ðвтоматична виÑота"
#: scene/gui/item_list.cpp
msgid "Max Columns"
msgstr ""
#: scene/gui/item_list.cpp
-#, fuzzy
msgid "Same Column Width"
-msgstr "ФікÑована ширина Ñтовпчику:"
+msgstr "Однакова ширина Ñтовпчиків"
#: scene/gui/item_list.cpp
msgid "Fixed Column Width"
-msgstr "ФікÑована ширина Ñтовпчику:"
+msgstr "ФікÑована ширина Ñтовпчика"
#: scene/gui/item_list.cpp
-#, fuzzy
msgid "Icon Scale"
-msgstr "Випадковий маÑштаб:"
+msgstr "МаÑштаб піктограм"
#: scene/gui/item_list.cpp
-#, fuzzy
msgid "Fixed Icon Size"
-msgstr "Розмір шрифту"
+msgstr "ФікÑований розмір піктограм"
#: scene/gui/label.cpp
msgid "Valign"
@@ -21777,7 +23209,7 @@ msgstr ""
#: scene/gui/label.cpp scene/gui/rich_text_label.cpp
msgid "Visible Characters"
-msgstr "ПрипуÑтимі Ñимволи:"
+msgstr "Видимі Ñимволи"
#: scene/gui/label.cpp scene/gui/rich_text_label.cpp
msgid "Percent Visible"
@@ -21797,46 +23229,39 @@ msgstr "МакÑимальна довжина"
#: scene/gui/line_edit.cpp
msgid "Secret"
-msgstr ""
+msgstr "Пароль"
#: scene/gui/line_edit.cpp
-#, fuzzy
msgid "Secret Character"
-msgstr "ПрипуÑтимі Ñимволи:"
+msgstr "Символ паролÑ"
#: scene/gui/line_edit.cpp
msgid "Expand To Text Length"
msgstr ""
#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
-#, fuzzy
msgid "Context Menu Enabled"
-msgstr "КонтекÑтна довідка"
+msgstr "Увімкнено контекÑтне меню"
#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
-#, fuzzy
msgid "Virtual Keyboard Enabled"
-msgstr "Фільтрувати Ñигнали"
+msgstr "Увімкнено віртуальну клавіатуру"
#: scene/gui/line_edit.cpp
-#, fuzzy
msgid "Clear Button Enabled"
-msgstr "Фільтрувати Ñигнали"
+msgstr "Увімкнено кнопку очищеннÑ"
#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
-#, fuzzy
msgid "Shortcut Keys Enabled"
-msgstr "Клавіатурні ÑкороченнÑ"
+msgstr "Увімкнено клавіатурні ÑкороченнÑ"
#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
-#, fuzzy
msgid "Middle Mouse Paste Enabled"
-msgstr "Фільтрувати Ñигнали"
+msgstr "Увімкнено вÑÑ‚Ð°Ð²Ð»ÐµÐ½Ð½Ñ Ñередньою кнопкою миші"
#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
-#, fuzzy
msgid "Selecting Enabled"
-msgstr "Тільки виділити"
+msgstr "Увімкнено позначеннÑ"
#: scene/gui/line_edit.cpp scene/gui/rich_text_label.cpp
#: scene/gui/text_edit.cpp
@@ -21853,7 +23278,7 @@ msgstr "Проміжний"
#: scene/gui/line_edit.cpp
msgid "Alpha"
-msgstr ""
+msgstr "Ðльфа"
#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Caret"
@@ -21861,31 +23286,27 @@ msgstr "Позначка вÑтавки"
#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Blink"
-msgstr ""
+msgstr "БлиманнÑ"
#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
-#, fuzzy
msgid "Blink Speed"
-msgstr "ШвидкіÑть:"
+msgstr "ШвидкіÑть блиманнÑ"
#: scene/gui/link_button.cpp
msgid "Underline"
msgstr "ПідкреÑлений"
#: scene/gui/menu_button.cpp
-#, fuzzy
msgid "Switch On Hover"
-msgstr "Перемкнути режим"
+msgstr "ÐŸÐµÑ€ÐµÐ¼Ð¸ÐºÐ°Ð½Ð½Ñ Ð¿Ñ€Ð¸ наведенні"
#: scene/gui/nine_patch_rect.cpp scene/resources/style_box.cpp
-#, fuzzy
msgid "Draw Center"
-msgstr "За центром"
+msgstr "Малювати центр"
#: scene/gui/nine_patch_rect.cpp scene/resources/style_box.cpp
-#, fuzzy
msgid "Region Rect"
-msgstr "Ð’Ñтановити прÑмокутник облаÑті"
+msgstr "ПрÑмокутник облаÑті"
#: scene/gui/nine_patch_rect.cpp
msgid "Patch Margin"
@@ -21893,7 +23314,7 @@ msgstr "Ð’Ñтановити поле"
#: scene/gui/nine_patch_rect.cpp scene/resources/style_box.cpp
msgid "Axis Stretch"
-msgstr ""
+msgstr "РозтÑÐ³ÑƒÐ²Ð°Ð½Ð½Ñ Ð²Ñ–ÑÑ–"
#: scene/gui/nine_patch_rect.cpp
msgid ""
@@ -21912,9 +23333,8 @@ msgid "Popup"
msgstr "Вигульк"
#: scene/gui/popup.cpp
-#, fuzzy
msgid "Exclusive"
-msgstr "Включно"
+msgstr "Виключна"
#: scene/gui/popup.cpp
msgid ""
@@ -21927,28 +23347,24 @@ msgstr ""
"практика. Втім, Ñлід пам'Ñтати, що під Ñ‡Ð°Ñ Ð·Ð°Ð¿ÑƒÑку Ñ—Ñ… буде приховано."
#: scene/gui/popup_menu.cpp
-#, fuzzy
msgid "Hide On Item Selection"
-msgstr "Центрувати на вибраному"
+msgstr "Ховати при позначенні елемента"
#: scene/gui/popup_menu.cpp
-#, fuzzy
msgid "Hide On Checkable Item Selection"
-msgstr "Ð’Ð¸Ð»ÑƒÑ‡ÐµÐ½Ð½Ñ Ð¿Ð¾Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¾Ð³Ð¾ GridMap"
+msgstr "Ховати при виборі призначеного Ð´Ð»Ñ Ð¿Ð¾Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ ÐµÐ»ÐµÐ¼ÐµÐ½Ñ‚Ð°"
#: scene/gui/popup_menu.cpp
-#, fuzzy
msgid "Hide On State Item Selection"
-msgstr "Вилучити позначене"
+msgstr "Ховати при виборі елемента Ñтану"
#: scene/gui/popup_menu.cpp
msgid "Submenu Popup Delay"
-msgstr ""
+msgstr "Затримка показу контекÑтного підменю"
#: scene/gui/popup_menu.cpp
-#, fuzzy
msgid "Allow Search"
-msgstr "Пошук"
+msgstr "Дозволити пошук"
#: scene/gui/progress_bar.cpp
msgid "Percent"
@@ -21967,100 +23383,84 @@ msgid "Max Value"
msgstr "МакÑ. значеннÑ"
#: scene/gui/range.cpp
-#, fuzzy
msgid "Page"
-msgstr "Сторінка: "
+msgstr "Сторінка"
#: scene/gui/range.cpp
-#, fuzzy
msgid "Exp Edit"
-msgstr "Редагувати"
+msgstr "Редагувати Ñтепінь"
#: scene/gui/range.cpp
-#, fuzzy
msgid "Rounded"
-msgstr ": межі"
+msgstr "Округлений"
#: scene/gui/range.cpp
-#, fuzzy
msgid "Allow Greater"
-msgstr "дозволено"
+msgstr "Дозволити більше"
#: scene/gui/range.cpp
-#, fuzzy
msgid "Allow Lesser"
-msgstr "дозволено"
+msgstr "Дозволити менше"
#: scene/gui/reference_rect.cpp
-#, fuzzy
msgid "Border Color"
-msgstr "Перейменувати Ð·Ð°Ð¿Ð¸Ñ ÐºÐ¾Ð»ÑŒÐ¾Ñ€Ñƒ"
+msgstr "Колір рамки"
#: scene/gui/reference_rect.cpp scene/resources/style_box.cpp
msgid "Border Width"
msgstr "Ширина Ñмуг"
#: scene/gui/rich_text_effect.cpp
-#, fuzzy
msgid "Relative Index"
-msgstr "Отримати індекÑ"
+msgstr "ВідноÑний індекÑ"
#: scene/gui/rich_text_effect.cpp
-#, fuzzy
msgid "Absolute Index"
-msgstr "ÐвтовідÑтуп"
+msgstr "ÐбÑолютний індекÑ"
#: scene/gui/rich_text_effect.cpp
-#, fuzzy
msgid "Elapsed Time"
-msgstr "Ð§Ð°Ñ Ð·Ð¼Ñ–ÑˆÑƒÐ²Ð°Ð½Ð½Ñ:"
+msgstr "Витрачений чаÑ"
#: scene/gui/rich_text_effect.cpp
-#, fuzzy
msgid "Env"
-msgstr "Кінець"
+msgstr "Сер."
#: scene/gui/rich_text_effect.cpp
-#, fuzzy
msgid "Character"
-msgstr "ПрипуÑтимі Ñимволи:"
+msgstr "Символ"
#: scene/gui/rich_text_label.cpp
msgid "BBCode"
-msgstr ""
+msgstr "BBCode"
#: scene/gui/rich_text_label.cpp
-#, fuzzy
msgid "Meta Underlined"
-msgstr "ПідкреÑлений"
+msgstr "ПідкреÑлена Meta"
#: scene/gui/rich_text_label.cpp
msgid "Tab Size"
msgstr "Розмір табулÑції"
#: scene/gui/rich_text_label.cpp
-#, fuzzy
msgid "Fit Content Height"
-msgstr "Малювати ваги кіÑток"
+msgstr "ВиÑота Ð¿Ñ–Ð´Ð±Ð¸Ñ€Ð°Ð½Ð½Ñ Ð·Ð° вміÑтом"
#: scene/gui/rich_text_label.cpp
-#, fuzzy
msgid "Scroll Active"
-msgstr "ГортаннÑ"
+msgstr "Ðктивне гортаннÑ"
#: scene/gui/rich_text_label.cpp
msgid "Scroll Following"
msgstr ""
#: scene/gui/rich_text_label.cpp
-#, fuzzy
msgid "Selection Enabled"
-msgstr "Тільки виділити"
+msgstr "Увімкнено позначеннÑ"
#: scene/gui/rich_text_label.cpp scene/gui/text_edit.cpp
-#, fuzzy
msgid "Override Selected Font Color"
-msgstr "Ðалаштувати позначений профіль:"
+msgstr "Перевизначити колір шрифту позначеного"
#: scene/gui/rich_text_label.cpp
msgid "Custom Effects"
@@ -22082,57 +23482,48 @@ msgstr ""
"Control Ñ– вÑтановіть нетиповий мінімальний розмір вручну."
#: scene/gui/scroll_container.cpp
-#, fuzzy
msgid "Follow Focus"
-msgstr "Заповнити поверхню"
+msgstr "Слідувати за фокуÑом"
#: scene/gui/scroll_container.cpp
-#, fuzzy
msgid "Horizontal Enabled"
-msgstr "Горизонтально:"
+msgstr "Увімкнено горизонтально"
#: scene/gui/scroll_container.cpp
-#, fuzzy
msgid "Vertical Enabled"
-msgstr "Фільтрувати Ñигнали"
+msgstr "Увімкнено вертикально"
#: scene/gui/scroll_container.cpp
msgid "Default Scroll Deadzone"
msgstr ""
#: scene/gui/slider.cpp
-#, fuzzy
msgid "Scrollable"
-msgstr "ГортаннÑ"
+msgstr "З гортаннÑм"
#: scene/gui/slider.cpp
msgid "Tick Count"
msgstr "Вибрати колір"
#: scene/gui/slider.cpp
-#, fuzzy
msgid "Ticks On Borders"
-msgstr "у порÑдку:"
+msgstr "Позначки на рамках"
#: scene/gui/spin_box.cpp
-#, fuzzy
msgid "Prefix"
-msgstr "ПрефікÑ:"
+msgstr "ПрефікÑ"
#: scene/gui/spin_box.cpp
-#, fuzzy
msgid "Suffix"
-msgstr "СуфікÑ:"
+msgstr "СуфікÑ"
#: scene/gui/split_container.cpp
-#, fuzzy
msgid "Split Offset"
-msgstr "ВідÑтуп Ñітки:"
+msgstr "ВідÑтуп поділу"
#: scene/gui/split_container.cpp scene/gui/tree.cpp
-#, fuzzy
msgid "Collapsed"
-msgstr "Згорнути вÑе"
+msgstr "Згорнуто"
#: scene/gui/split_container.cpp
msgid "Dragger Visibility"
@@ -22140,90 +23531,79 @@ msgstr "Перемкнути видиміÑть"
#: scene/gui/tab_container.cpp scene/gui/tabs.cpp
msgid "Tab Align"
-msgstr ""
+msgstr "Ð’Ð¸Ñ€Ñ–Ð²Ð½ÑŽÐ²Ð°Ð½Ð½Ñ Ð²ÐºÐ»Ð°Ð´Ð¾Ðº"
#: scene/gui/tab_container.cpp scene/gui/tabs.cpp
msgid "Current Tab"
msgstr "Поточна вкладка"
#: scene/gui/tab_container.cpp
-#, fuzzy
msgid "Tabs Visible"
-msgstr "Перемкнути видиміÑть"
+msgstr "Вкладки видимі"
#: scene/gui/tab_container.cpp
msgid "All Tabs In Front"
-msgstr ""
+msgstr "УÑÑ– вкладки Ñпереду"
#: scene/gui/tab_container.cpp scene/gui/tabs.cpp
-#, fuzzy
msgid "Drag To Rearrange Enabled"
-msgstr "ПорÑдок можна змінити перетÑгуваннÑм зі ÑкиданнÑм."
+msgstr "Увімкнено перетÑÐ³ÑƒÐ²Ð°Ð½Ð½Ñ Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÑƒÐ¿Ð¾Ñ€ÑдковуваннÑ"
#: scene/gui/tab_container.cpp
msgid "Use Hidden Tabs For Min Size"
-msgstr ""
+msgstr "Приховані вкладки Ð´Ð»Ñ Ð¼Ñ–Ð½. розміру"
#: scene/gui/tabs.cpp
msgid "Tab Close Display Policy"
-msgstr ""
+msgstr "Правила показу Ð·Ð°ÐºÑ€Ð¸Ñ‚Ñ‚Ñ Ð²ÐºÐ»Ð°Ð´Ð¾Ðº"
#: scene/gui/tabs.cpp
msgid "Scrolling Enabled"
-msgstr ""
+msgstr "Ð“Ð¾Ñ€Ñ‚Ð°Ð½Ð½Ñ ÑƒÐ²Ñ–Ð¼ÐºÐ½ÐµÐ½Ð¾"
#: scene/gui/text_edit.cpp
msgid "Readonly"
-msgstr ""
+msgstr "Лише читаннÑ"
#: scene/gui/text_edit.cpp
-#, fuzzy
msgid "Bookmark Gutter"
-msgstr "Закладки"
+msgstr "МіжÑтовпцевий проміжок закладок"
#: scene/gui/text_edit.cpp
-#, fuzzy
msgid "Breakpoint Gutter"
-msgstr "ПропуÑтити точки зупину"
+msgstr "МіжÑтовпцевий проміжок точок зупину"
#: scene/gui/text_edit.cpp
-#, fuzzy
msgid "Fold Gutter"
-msgstr "Тека:"
+msgstr "МіжÑтовпцевий проміжок згортаннÑ"
#: scene/gui/text_edit.cpp
-#, fuzzy
msgid "Hiding Enabled"
-msgstr "Увімкнено"
+msgstr "ÐŸÑ€Ð¸Ñ…Ð¾Ð²ÑƒÐ²Ð°Ð½Ð½Ñ ÑƒÐ²Ñ–Ð¼ÐºÐ½ÐµÐ½Ð¾"
#: scene/gui/text_edit.cpp
-#, fuzzy
msgid "Wrap Enabled"
-msgstr "Увімкнено"
+msgstr "Ð—Ð°Ð³Ð¾Ñ€Ñ‚Ð°Ð½Ð½Ñ ÑƒÐ²Ñ–Ð¼ÐºÐ½ÐµÐ½Ð¾"
#: scene/gui/text_edit.cpp
-#, fuzzy
msgid "Scroll Vertical"
-msgstr "Вертикально:"
+msgstr "Ð“Ð¾Ñ€Ñ‚Ð°Ð½Ð½Ñ Ð²ÐµÑ€Ñ‚Ð¸ÐºÐ°Ð»ÑŒÐ½Ð¾"
#: scene/gui/text_edit.cpp
-#, fuzzy
msgid "Scroll Horizontal"
-msgstr "Горизонтально:"
+msgstr "Ð“Ð¾Ñ€Ñ‚Ð°Ð½Ð½Ñ Ð³Ð¾Ñ€Ð¸Ð·Ð¾Ð½Ñ‚Ð°Ð»ÑŒÐ½Ð¾"
#: scene/gui/text_edit.cpp
-#, fuzzy
msgid "Draw"
-msgstr "Малюнок"
+msgstr "КреÑленнÑ"
#: scene/gui/text_edit.cpp
-#, fuzzy
msgid "Block Mode"
-msgstr "Розблокувати вузол"
+msgstr "Режим блоків"
#: scene/gui/text_edit.cpp
msgid "Moving By Right Click"
-msgstr ""
+msgstr "ПереÑÑƒÐ²Ð°Ð½Ð½Ñ ÐºÐ»Ð°Ñ†Ð°Ð½Ð½Ñм правою"
#: scene/gui/text_edit.cpp
msgid "Text Edit Idle Detect (sec)"
@@ -22235,17 +23615,15 @@ msgstr ""
#: scene/gui/texture_button.cpp
msgid "Hover"
-msgstr ""
+msgstr "ÐаведеннÑ"
#: scene/gui/texture_button.cpp
-#, fuzzy
msgid "Focused"
-msgstr "ФокуÑуваннÑ"
+msgstr "ФокуÑоване"
#: scene/gui/texture_button.cpp
-#, fuzzy
msgid "Click Mask"
-msgstr "Режим перешкоди"
+msgstr "МаÑка клацаннÑ"
#: scene/gui/texture_button.cpp scene/gui/texture_rect.cpp
#: scene/gui/video_player.cpp
@@ -22253,19 +23631,16 @@ msgid "Expand"
msgstr "Розгорнути"
#: scene/gui/texture_progress.cpp
-#, fuzzy
msgid "Under"
-msgstr "ПідкреÑлений"
+msgstr "Ðижче"
#: scene/gui/texture_progress.cpp
-#, fuzzy
msgid "Over"
-msgstr "ÐакладаннÑ"
+msgstr "Згори"
#: scene/gui/texture_progress.cpp
-#, fuzzy
msgid "Progress"
-msgstr "ВлаÑтивоÑті теми"
+msgstr "ПоÑтуп"
#: scene/gui/texture_progress.cpp
msgid "Progress Offset"
@@ -22281,27 +23656,43 @@ msgstr "ЗатіненнÑ"
#: scene/gui/texture_progress.cpp
msgid "Radial Fill"
-msgstr ""
+msgstr "Радіальне заповненнÑ"
#: scene/gui/texture_progress.cpp
-#, fuzzy
msgid "Initial Angle"
-msgstr "Ініціалізувати"
+msgstr "Початковий кут"
#: scene/gui/texture_progress.cpp
-#, fuzzy
msgid "Fill Degrees"
-msgstr "ÐžÐ±ÐµÑ€Ñ‚Ð°Ð½Ð½Ñ Ð½Ð° %s градуÑів."
+msgstr "ГрадуÑи заповненнÑ"
#: scene/gui/texture_progress.cpp scene/resources/primitive_meshes.cpp
-#, fuzzy
msgid "Center Offset"
-msgstr "За центром ліворуч"
+msgstr "Центральний зÑув"
#: scene/gui/texture_progress.cpp
-#, fuzzy
msgid "Nine Patch Stretch"
-msgstr "Режим інтерполÑції"
+msgstr "РозтÑÐ³ÑƒÐ²Ð°Ð½Ð½Ñ Ð·Ð° дев'Ñтьма позиціÑми"
+
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Left"
+msgstr "Ð’Ñтановити поле"
+
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Top"
+msgstr "Ð’Ñтановити поле"
+
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Right"
+msgstr "Ð’Ñтановити поле"
+
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Bottom"
+msgstr "Ð¡Ð¿Ñ–Ð²Ð²Ñ–Ð´Ð½Ð¾ÑˆÐµÐ½Ð½Ñ Ñ€Ð¾Ð·Ñ‚ÑгуваннÑ"
#: scene/gui/tree.cpp
msgid "Custom Minimum Height"
@@ -22312,23 +23703,20 @@ msgid "(Other)"
msgstr "(Інші)"
#: scene/gui/tree.cpp
-#, fuzzy
msgid "Column Titles Visible"
-msgstr "Перемкнути видиміÑть"
+msgstr "ВидиміÑть заголовків Ñтовпчиків"
#: scene/gui/tree.cpp
-#, fuzzy
msgid "Hide Folding"
-msgstr "Ð—Ð³Ð¾Ñ€Ñ‚Ð°Ð½Ð½Ñ ÐºÐ¾Ð´Ñƒ"
+msgstr "Приховати згортаннÑ"
#: scene/gui/tree.cpp
-#, fuzzy
msgid "Hide Root"
-msgstr "Створити кореневий вузол:"
+msgstr "Приховати кореневий"
#: scene/gui/tree.cpp
msgid "Drop Mode Flags"
-msgstr ""
+msgstr "Прапорці режиму ÑкиданнÑ"
#: scene/gui/video_player.cpp
msgid "Audio Track"
@@ -22340,17 +23728,16 @@ msgstr "Призупинено"
#: scene/gui/video_player.cpp
#, fuzzy
-msgid "Buffering (msec)"
-msgstr "БуферизаціÑ"
+msgid "Buffering Msec"
+msgstr "Ð‘ÑƒÑ„ÐµÑ€Ð¸Ð·Ð°Ñ†Ñ–Ñ (мÑ)"
#: scene/gui/video_player.cpp
msgid "Stream Position"
msgstr "Ð’Ñтановити криву в позиції"
#: scene/gui/viewport_container.cpp
-#, fuzzy
msgid "Stretch Shrink"
-msgstr "РозтÑгнути"
+msgstr "СтÑÐ³ÑƒÐ²Ð°Ð½Ð½Ñ Ñ€Ð¾Ð·Ñ‚ÑгуваннÑ"
#: scene/main/canvas_layer.cpp
msgid "Follow Viewport"
@@ -22366,11 +23753,11 @@ msgstr "ЗавантаженнÑ"
#: scene/main/http_request.cpp
msgid "Body Size Limit"
-msgstr ""
+msgstr "ÐžÐ±Ð¼ÐµÐ¶ÐµÐ½Ð½Ñ Ñ€Ð¾Ð·Ð¼Ñ–Ñ€Ñƒ вміÑту"
#: scene/main/http_request.cpp
msgid "Max Redirects"
-msgstr ""
+msgstr "МакÑ. переÑпрÑмувань"
#: scene/main/http_request.cpp
msgid "Timeout"
@@ -22382,16 +23769,15 @@ msgstr "Іменований роздільник"
#: scene/main/node.cpp
msgid "Name Casing"
-msgstr ""
+msgstr "РегіÑтр назв"
#: scene/main/node.cpp
msgid "Editor Description"
msgstr "ОпиÑ"
#: scene/main/node.cpp
-#, fuzzy
msgid "Import Path"
-msgstr "ШлÑÑ… екÑпорту"
+msgstr "ШлÑÑ… імпорту"
#: scene/main/node.cpp
msgid "Pause Mode"
@@ -22415,31 +23801,27 @@ msgstr "Декілька гравців"
#: scene/main/node.cpp
msgid "Custom Multiplayer"
-msgstr "Ð’Ñтановити кратніÑть:"
+msgstr "Ðетипові параметри гри з багатьма гравцÑми"
#: scene/main/node.cpp
-#, fuzzy
msgid "Process Priority"
-msgstr "Увімкнути пріоритетніÑть"
+msgstr "ПріоритетніÑть процеÑу"
#: scene/main/node.cpp
-#, fuzzy
msgid "Physics Interpolated"
-msgstr "Режим інтерполÑції"
+msgstr "Інтерпольована фізика"
#: scene/main/scene_tree.cpp scene/main/timer.cpp
msgid "Time Left"
msgstr "ЗалишилоÑÑŒ чаÑу"
#: scene/main/scene_tree.cpp
-#, fuzzy
msgid "Debug Collisions Hint"
-msgstr "Режим перешкоди"
+msgstr "Підказка діагноÑтики зіткнень"
#: scene/main/scene_tree.cpp
-#, fuzzy
msgid "Debug Navigation Hint"
-msgstr "Режим навігації"
+msgstr "Підказка діагноÑтики навігації"
#: scene/main/scene_tree.cpp
msgid "Use Font Oversampling"
@@ -22454,9 +23836,8 @@ msgid "Root"
msgstr "Корінь"
#: scene/main/scene_tree.cpp
-#, fuzzy
msgid "Multiplayer Poll"
-msgstr "Декілька гравців"
+msgstr "ÐžÐ¿Ð¸Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ñ‰Ð¾Ð´Ð¾ декількох гравців"
#: scene/main/scene_tree.cpp scene/resources/multimesh.cpp
msgid "Physics Interpolation"
@@ -22476,7 +23857,7 @@ msgstr "Вибрати колір"
#: scene/main/scene_tree.cpp
msgid "Geometry Color"
-msgstr ""
+msgstr "Колір геометрії"
#: scene/main/scene_tree.cpp
msgid "Disabled Geometry Color"
@@ -22484,7 +23865,7 @@ msgstr "Вимкнений елемент"
#: scene/main/scene_tree.cpp
msgid "Max Contacts Displayed"
-msgstr ""
+msgstr "МакÑ. к-ть показаних контактів"
#: scene/main/scene_tree.cpp scene/resources/shape_2d.cpp
msgid "Draw 2D Outlines"
@@ -22496,7 +23877,7 @@ msgstr "ВідбиттÑ"
#: scene/main/scene_tree.cpp
msgid "Atlas Size"
-msgstr "Розмір обведеннÑ:"
+msgstr "Розмір атлаÑу"
#: scene/main/scene_tree.cpp
msgid "Atlas Subdiv"
@@ -22504,11 +23885,11 @@ msgstr ""
#: scene/main/scene_tree.cpp scene/main/viewport.cpp
msgid "MSAA"
-msgstr ""
+msgstr "MSAA"
#: scene/main/scene_tree.cpp
msgid "Use FXAA"
-msgstr ""
+msgstr "ВикориÑтовувати FXAA"
#: scene/main/scene_tree.cpp
msgid "Use Debanding"
@@ -22552,14 +23933,12 @@ msgstr ""
"проміжків очікуваннÑ."
#: scene/main/timer.cpp
-#, fuzzy
msgid "Autostart"
-msgstr "Ðвтоматичний перезапуÑк:"
+msgstr "ÐвтозапуÑк"
#: scene/main/viewport.cpp
-#, fuzzy
msgid "Viewport Path"
-msgstr "ШлÑÑ… екÑпорту"
+msgstr "ШлÑÑ… до панелі переглÑду"
#: scene/main/viewport.cpp
msgid ""
@@ -22583,17 +23962,15 @@ msgstr ""
#: scene/main/viewport.cpp
msgid "ARVR"
-msgstr ""
+msgstr "ARVR"
#: scene/main/viewport.cpp
-#, fuzzy
msgid "Size Override Stretch"
-msgstr "Перевизначити запиÑ"
+msgstr "РозтÑÐ³ÑƒÐ²Ð°Ð½Ð½Ñ Ð¿ÐµÑ€ÐµÐ²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ñ€Ð¾Ð·Ð¼Ñ–Ñ€Ñ–Ð²"
#: scene/main/viewport.cpp
-#, fuzzy
msgid "Own World"
-msgstr "Світ"
+msgstr "ВлаÑний Ñвіт"
#: scene/main/viewport.cpp scene/resources/world_2d.cpp
msgid "World"
@@ -22604,37 +23981,32 @@ msgid "World 2D"
msgstr ""
#: scene/main/viewport.cpp
-#, fuzzy
msgid "Transparent BG"
-msgstr "ТранÑпонувати"
+msgstr "Прозоре тло"
#: scene/main/viewport.cpp
-#, fuzzy
msgid "Handle Input Locally"
-msgstr "Зміна вхідного значеннÑ"
+msgstr "ОброблÑти Ð²Ð²ÐµÐ´ÐµÐ½Ð½Ñ Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ð¾"
#: scene/main/viewport.cpp
msgid "FXAA"
-msgstr ""
+msgstr "FXAA"
#: scene/main/viewport.cpp
-#, fuzzy
msgid "Debanding"
-msgstr "Палітурка"
+msgstr "УÑÑƒÐ²Ð°Ð½Ð½Ñ Ñмуг"
#: scene/main/viewport.cpp
-#, fuzzy
msgid "Disable 3D"
-msgstr "Вимкнений елемент"
+msgstr "Вимкнути тривимірніÑть"
#: scene/main/viewport.cpp
-#, fuzzy
msgid "Keep 3D Linear"
-msgstr "Лівий лінійний"
+msgstr "Зберігати тривимірніÑть лінійною"
#: scene/main/viewport.cpp
msgid "Render Direct To Screen"
-msgstr ""
+msgstr "Обробка безпоÑередньо на екран"
#: scene/main/viewport.cpp
msgid "Debug Draw"
@@ -22642,58 +24014,72 @@ msgstr "ДіагноÑтика"
#: scene/main/viewport.cpp
msgid "Render Target"
-msgstr "Обробник:"
+msgstr "ÐŸÑ€Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð¾Ð±Ñ€Ð¾Ð±ÐºÐ¸"
#: scene/main/viewport.cpp
msgid "V Flip"
-msgstr ""
+msgstr "Верт. віддзеркаленнÑ"
#: scene/main/viewport.cpp
-#, fuzzy
msgid "Clear Mode"
-msgstr "Режим вимірюваннÑ"
+msgstr "ОчиÑтити режим"
#: scene/main/viewport.cpp
-#, fuzzy
msgid "Enable 2D"
-msgstr "Увімкнути"
+msgstr "Увімкнути двовимірніÑть"
#: scene/main/viewport.cpp
-#, fuzzy
msgid "Enable 3D"
-msgstr "Увімкнути"
+msgstr "Увімкнути тривимірніÑть"
#: scene/main/viewport.cpp
-#, fuzzy
msgid "Object Picking"
-msgstr "Увімкнути калькуваннÑ"
+msgstr "Вибір об'єктів"
#: scene/main/viewport.cpp
-#, fuzzy
msgid "Disable Input"
-msgstr "Вимкнений елемент"
+msgstr "Вимкнути введеннÑ"
#: scene/main/viewport.cpp servers/visual_server.cpp
msgid "Shadow Atlas"
msgstr "Ðовий атлаÑ"
#: scene/main/viewport.cpp
-#, fuzzy
+msgid "Quad 0"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 1"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 2"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 3"
+msgstr ""
+
+#: scene/main/viewport.cpp
msgid "Canvas Transform"
-msgstr "ЗнÑти перетвореннÑ"
+msgstr "ÐŸÐµÑ€ÐµÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ð¿Ð¾Ð»Ð¾Ñ‚Ð½Ð°"
#: scene/main/viewport.cpp
-#, fuzzy
msgid "Global Canvas Transform"
-msgstr "Зберегти загальне перетвореннÑ"
+msgstr "Загальне Ð¿ÐµÑ€ÐµÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ð¿Ð¾Ð»Ð¾Ñ‚Ð½Ð°"
#: scene/main/viewport.cpp
msgid "Tooltip Delay (sec)"
-msgstr ""
+msgstr "Затримка підказки (Ñ)"
+
+#: scene/register_scene_types.cpp
+#, fuzzy
+msgid "Swap OK Cancel"
+msgstr "СкаÑувати"
#: scene/register_scene_types.cpp
msgid "Use hiDPI"
-msgstr ""
+msgstr "ВикориÑтовувати hiDPI"
#: scene/register_scene_types.cpp
msgid "Custom"
@@ -22704,32 +24090,17 @@ msgid "Custom Font"
msgstr "Ðетиповий шрифт"
#: scene/resources/audio_stream_sample.cpp
-msgid "Loop Mode"
-msgstr "Режим переміщеннÑ"
-
-#: scene/resources/audio_stream_sample.cpp
-#, fuzzy
-msgid "Loop Begin"
-msgstr "Режим переміщеннÑ"
-
-#: scene/resources/audio_stream_sample.cpp
-#, fuzzy
-msgid "Loop End"
-msgstr "Режим переміщеннÑ"
-
-#: scene/resources/audio_stream_sample.cpp
#: servers/audio/effects/audio_stream_generator.cpp servers/audio_server.cpp
msgid "Mix Rate"
msgstr "Змішувати вузол"
#: scene/resources/audio_stream_sample.cpp
msgid "Stereo"
-msgstr ""
+msgstr "Стерео"
#: scene/resources/concave_polygon_shape_2d.cpp
-#, fuzzy
msgid "Segments"
-msgstr "Ðргументи головної Ñцени:"
+msgstr "Сегменти"
#: scene/resources/curve.cpp
msgid "Bake Resolution"
@@ -22737,16 +24108,15 @@ msgstr "Половина роздільноÑті"
#: scene/resources/curve.cpp
msgid "Bake Interval"
-msgstr ""
+msgstr "Інтервал запіканнÑ"
#: scene/resources/dynamic_font.cpp
msgid "Hinting"
msgstr "УточненнÑ"
#: scene/resources/dynamic_font.cpp
-#, fuzzy
msgid "Override Oversampling"
-msgstr "Перевизначити запиÑ"
+msgstr "Перевизначити передиÑкретизацію"
#: scene/resources/dynamic_font.cpp
msgid "Font Path"
@@ -22754,21 +24124,29 @@ msgstr "ФокуÑувати шлÑÑ…"
#: scene/resources/dynamic_font.cpp
msgid "Outline Size"
-msgstr "Розмір обведеннÑ:"
+msgstr "Розмір обведеннÑ"
#: scene/resources/dynamic_font.cpp
-#, fuzzy
msgid "Outline Color"
-msgstr "ФункціÑ"
+msgstr "Колір контуру"
#: scene/resources/dynamic_font.cpp
-#, fuzzy
msgid "Use Mipmaps"
-msgstr "Сигнали"
+msgstr "Множинне відтвореннÑ"
#: scene/resources/dynamic_font.cpp
msgid "Extra Spacing"
-msgstr "Додаткові параметри:"
+msgstr "Додатковий інтервал"
+
+#: scene/resources/dynamic_font.cpp
+#, fuzzy
+msgid "Char"
+msgstr "Символи"
+
+#: scene/resources/dynamic_font.cpp scene/resources/world.cpp
+#: scene/resources/world_2d.cpp
+msgid "Space"
+msgstr "ПроÑтір"
#: scene/resources/dynamic_font.cpp
msgid "Font"
@@ -22787,119 +24165,100 @@ msgid "Sky"
msgstr "Ðебо"
#: scene/resources/environment.cpp
-#, fuzzy
msgid "Sky Custom FOV"
-msgstr "Ðетиповий шрифт"
+msgstr "Ðетипове поле зору неба"
#: scene/resources/environment.cpp
-#, fuzzy
msgid "Sky Orientation"
-msgstr "ОрієнтаціÑ"
+msgstr "ÐžÑ€Ñ–Ñ”Ð½Ñ‚Ð°Ñ†Ñ–Ñ Ð½ÐµÐ±Ð°"
#: scene/resources/environment.cpp
-#, fuzzy
msgid "Sky Rotation"
-msgstr "ОбертаннÑ"
+msgstr "ÐžÐ±ÐµÑ€Ñ‚Ð°Ð½Ð½Ñ Ð½ÐµÐ±Ð°"
#: scene/resources/environment.cpp
-#, fuzzy
msgid "Sky Rotation Degrees"
-msgstr "ÐžÐ±ÐµÑ€Ñ‚Ð°Ð½Ð½Ñ Ð½Ð° %s градуÑів."
+msgstr "ГрадуÑи Ð¾Ð±ÐµÑ€Ñ‚Ð°Ð½Ð½Ñ Ð½ÐµÐ±Ð°"
#: scene/resources/environment.cpp
msgid "Canvas Max Layer"
msgstr ""
#: scene/resources/environment.cpp scene/resources/texture.cpp
-#, fuzzy
msgid "Camera Feed ID"
-msgstr "Фотоапарат"
+msgstr "Ідентифікатор Ð¶Ð¸Ð²Ð»ÐµÐ½Ð½Ñ ÐºÐ°Ð¼ÐµÑ€Ð¸"
#: scene/resources/environment.cpp
msgid "Ambient Light"
msgstr "Збільшити відÑтуп"
#: scene/resources/environment.cpp
-#, fuzzy
msgid "Sky Contribution"
-msgstr "Умова"
+msgstr "ВнеÑок неба"
#: scene/resources/environment.cpp
msgid "Fog"
msgstr "Туман"
#: scene/resources/environment.cpp
-#, fuzzy
msgid "Sun Color"
-msgstr "Ð—Ð±ÐµÑ€ÐµÐ¶ÐµÐ½Ð½Ñ Ñ„Ð°Ð¹Ð»Ñƒ:"
+msgstr "Колір ÑонцÑ"
#: scene/resources/environment.cpp
-#, fuzzy
msgid "Sun Amount"
-msgstr "Сума"
+msgstr "ПотужніÑть ÑонцÑ"
#: scene/resources/environment.cpp
-#, fuzzy
msgid "Depth Enabled"
-msgstr "Глибина"
+msgstr "Увімкнено глибину"
#: scene/resources/environment.cpp
-#, fuzzy
msgid "Depth Begin"
-msgstr "Глибина"
+msgstr "Початок глибини"
#: scene/resources/environment.cpp
-#, fuzzy
msgid "Depth End"
-msgstr "Глибина"
+msgstr "Кінець глибини"
#: scene/resources/environment.cpp
-#, fuzzy
msgid "Depth Curve"
-msgstr "Розділити криву"
+msgstr "Крива глибини"
#: scene/resources/environment.cpp
-#, fuzzy
msgid "Transmit Enabled"
-msgstr "Фільтрувати Ñигнали"
+msgstr "Увімкнено пропуÑканнÑ"
#: scene/resources/environment.cpp
-#, fuzzy
msgid "Transmit Curve"
-msgstr "Розділити криву"
+msgstr "Крива пропуÑканнÑ"
#: scene/resources/environment.cpp
-#, fuzzy
msgid "Height Enabled"
-msgstr "Фільтрувати Ñигнали"
+msgstr "Увімкнено виÑоту"
#: scene/resources/environment.cpp
-#, fuzzy
msgid "Height Min"
-msgstr "ВиÑота"
+msgstr "Мін. виÑоти"
#: scene/resources/environment.cpp
-#, fuzzy
msgid "Height Max"
-msgstr "ВиÑота"
+msgstr "МакÑ. виÑоти"
#: scene/resources/environment.cpp
-#, fuzzy
msgid "Height Curve"
-msgstr "Розділити криву"
+msgstr "Крива виÑоти"
#: scene/resources/environment.cpp
msgid "Tonemap"
msgstr "ПереÑпрÑмуваннÑ"
#: scene/resources/environment.cpp
-#, fuzzy
msgid "Exposure"
-msgstr "ÐвтоекÑпозиціÑ"
+msgstr "ЕкÑпозиціÑ"
#: scene/resources/environment.cpp
msgid "White"
-msgstr ""
+msgstr "Білий"
#: scene/resources/environment.cpp
msgid "Auto Exposure"
@@ -22918,24 +24277,20 @@ msgid "SS Reflections"
msgstr "Вибір маÑштабу"
#: scene/resources/environment.cpp
-#, fuzzy
msgid "Max Steps"
-msgstr "Кроки"
+msgstr "МакÑ. к-ть кроків"
#: scene/resources/environment.cpp
-#, fuzzy
msgid "Fade In"
-msgstr "ÐароÑÑ‚Ð°Ð½Ð½Ñ (Ñ):"
+msgstr "ÐароÑтаннÑ"
#: scene/resources/environment.cpp
-#, fuzzy
msgid "Fade Out"
-msgstr "Ð—Ð°Ñ‚ÑƒÑ…Ð°Ð½Ð½Ñ (Ñ):"
+msgstr "ЗгаÑаннÑ"
#: scene/resources/environment.cpp
-#, fuzzy
msgid "Depth Tolerance"
-msgstr "Глибина"
+msgstr "ЧутливіÑть глибини"
#: scene/resources/environment.cpp scene/resources/material.cpp
msgid "Roughness"
@@ -22946,28 +24301,24 @@ msgid "SSAO"
msgstr ""
#: scene/resources/environment.cpp
-#, fuzzy
msgid "Radius 2"
-msgstr "РадіуÑ"
+msgstr "Ð Ð°Ð´Ñ–ÑƒÑ 2"
#: scene/resources/environment.cpp
-#, fuzzy
msgid "Intensity 2"
-msgstr "ІнтенÑивніÑть"
+msgstr "ІнтенÑивніÑть 2"
#: scene/resources/environment.cpp scene/resources/material.cpp
-#, fuzzy
msgid "Light Affect"
-msgstr "Праворуч за шириною"
+msgstr "Вплив на Ñвітло"
#: scene/resources/environment.cpp
-#, fuzzy
msgid "AO Channel Affect"
-msgstr "ДіагноÑтика UV-каналу"
+msgstr "Вплив на канали AO"
#: scene/resources/environment.cpp
msgid "Blur"
-msgstr ""
+msgstr "РозмиваннÑ"
#: scene/resources/environment.cpp
msgid "Edge Sharpness"
@@ -22978,14 +24329,12 @@ msgid "DOF Far Blur"
msgstr ""
#: scene/resources/environment.cpp scene/resources/material.cpp
-#, fuzzy
msgid "Distance"
-msgstr "ВідÑтань вибору:"
+msgstr "ВідÑтань"
#: scene/resources/environment.cpp
-#, fuzzy
msgid "Transition"
-msgstr "Перехід: "
+msgstr "Перехід"
#: scene/resources/environment.cpp
msgid "DOF Near Blur"
@@ -22996,86 +24345,116 @@ msgid "Glow"
msgstr "СÑйво"
#: scene/resources/environment.cpp
-msgid "Bloom"
-msgstr ""
+#, fuzzy
+msgid "Levels"
+msgstr "Рівень (дБ)"
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+#, fuzzy
+msgid "1"
+msgstr "K1"
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+#, fuzzy
+msgid "2"
+msgstr "Двовимірна графіка"
#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
#, fuzzy
+msgid "3"
+msgstr "ПроÑторова графіка"
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "4"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "5"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "6"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "7"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "Bloom"
+msgstr "ЦвітіннÑ"
+
+#: scene/resources/environment.cpp
msgid "HDR Threshold"
-msgstr "Поріг"
+msgstr "Поріг HDR"
#: scene/resources/environment.cpp
msgid "HDR Luminance Cap"
msgstr ""
#: scene/resources/environment.cpp
-#, fuzzy
msgid "HDR Scale"
-msgstr "МаÑштаб"
+msgstr "МаÑштаб HDR"
#: scene/resources/environment.cpp
msgid "Bicubic Upscale"
-msgstr ""
+msgstr "Бікубічне Ð·Ð±Ñ–Ð»ÑŒÑˆÐµÐ½Ð½Ñ Ð¼Ð°Ñштабу"
#: scene/resources/environment.cpp
msgid "Adjustments"
msgstr "КоригуваннÑ"
#: scene/resources/environment.cpp
-#, fuzzy
msgid "Brightness"
-msgstr "ШорÑткіÑть"
+msgstr "ЯÑкравіÑть"
#: scene/resources/environment.cpp
-#, fuzzy
msgid "Saturation"
-msgstr "ВідокремленнÑ:"
+msgstr "ÐаÑиченіÑть"
#: scene/resources/environment.cpp
-#, fuzzy
msgid "Color Correction"
-msgstr "Ð¤ÑƒÐ½ÐºÑ†Ñ–Ñ ÐºÐ¾Ð»ÑŒÐ¾Ñ€Ñƒ."
+msgstr "Кольорова компенÑаціÑ"
#: scene/resources/font.cpp
msgid "Chars"
-msgstr ""
+msgstr "Символи"
#: scene/resources/font.cpp
-#, fuzzy
msgid "Kernings"
-msgstr "ПопередженнÑ"
+msgstr "Кернінґи"
#: scene/resources/font.cpp
msgid "Ascent"
-msgstr "Підйом:"
+msgstr "Підйом"
#: scene/resources/font.cpp
-#, fuzzy
msgid "Distance Field"
-msgstr "Режим без відволіканнÑ"
+msgstr "Поле відÑтані"
#: scene/resources/gradient.cpp
-#, fuzzy
msgid "Offsets"
msgstr "ЗміщеннÑ"
#: scene/resources/height_map_shape.cpp
msgid "Map Width"
-msgstr ""
+msgstr "Ширина карти"
#: scene/resources/height_map_shape.cpp
msgid "Map Depth"
msgstr "Глибина"
#: scene/resources/height_map_shape.cpp
-#, fuzzy
msgid "Map Data"
-msgstr "Глибина"
+msgstr "Дані карти"
#: scene/resources/line_shape_2d.cpp
-#, fuzzy
msgid "D"
-msgstr "ПроÑторова графіка"
+msgstr "D"
#: scene/resources/material.cpp
msgid "Render Priority"
@@ -23086,51 +24465,113 @@ msgid "Next Pass"
msgstr "ÐаÑтупна площина"
#: scene/resources/material.cpp
+msgid "Use Shadow To Opacity"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Unshaded"
+msgstr "ПереглÑд без тіней"
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Vertex Lighting"
+msgstr "БезпоÑереднє оÑвітленнÑ"
+
+#: scene/resources/material.cpp
+msgid "No Depth Test"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Use Point Size"
+msgstr "Розмір крапки"
+
+#: scene/resources/material.cpp
+msgid "World Triplanar"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Fixed Size"
+msgstr "ФікÑований розмір піктограм"
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Albedo Tex Force sRGB"
+msgstr "ЗаÑтоÑовані Ñили"
+
+#: scene/resources/material.cpp
+msgid "Do Not Receive Shadows"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Disable Ambient Light"
+msgstr "Збільшити відÑтуп"
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Ensure Correct Normals"
+msgstr "Перетворити нормалі"
+
+#: scene/resources/material.cpp
msgid "Vertex Color"
msgstr "Вершина"
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Use As Albedo"
+msgstr "Ðльбедо"
+
+#: scene/resources/material.cpp
+msgid "Is sRGB"
+msgstr ""
+
#: scene/resources/material.cpp servers/visual_server.cpp
msgid "Parameters"
msgstr "Параметри"
#: scene/resources/material.cpp
-#, fuzzy
msgid "Diffuse Mode"
-msgstr "Режим панорамуваннÑ"
+msgstr "Режим розÑіюваннÑ"
#: scene/resources/material.cpp
-#, fuzzy
msgid "Specular Mode"
-msgstr "Режим вимірюваннÑ"
+msgstr "Режим віддзеркаленнÑ"
#: scene/resources/material.cpp
-#, fuzzy
msgid "Depth Draw Mode"
-msgstr "Режим інтерполÑції"
+msgstr "Режим Ð¼Ð°Ð»ÑŽÐ²Ð°Ð½Ð½Ñ Ð³Ð»Ð¸Ð±Ð¸Ð½Ð¸"
#: scene/resources/material.cpp
-#, fuzzy
msgid "Line Width"
-msgstr "Ліворуч за шириною"
+msgstr "Товщина лінії"
#: scene/resources/material.cpp
-#, fuzzy
msgid "Point Size"
-msgstr "Розмір шрифту"
+msgstr "Розмір крапки"
#: scene/resources/material.cpp
-#, fuzzy
msgid "Billboard Mode"
-msgstr "Режим вимірюваннÑ"
+msgstr "Режим афіші"
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Billboard Keep Scale"
+msgstr "Режим афіші"
#: scene/resources/material.cpp
msgid "Grow"
-msgstr ""
+msgstr "Збільшити"
#: scene/resources/material.cpp
-#, fuzzy
msgid "Grow Amount"
-msgstr "Сума"
+msgstr "Величина роÑту"
+
+#: scene/resources/material.cpp
+msgid "Use Alpha Scissor"
+msgstr ""
#: scene/resources/material.cpp
msgid "Alpha Scissor Threshold"
@@ -23141,14 +24582,12 @@ msgid "Particles Anim"
msgstr "ЧаÑтинки"
#: scene/resources/material.cpp
-#, fuzzy
msgid "H Frames"
-msgstr "Кадри"
+msgstr "H-кадри"
#: scene/resources/material.cpp
-#, fuzzy
msgid "V Frames"
-msgstr "Кадри"
+msgstr "V-кадри"
#: scene/resources/material.cpp
msgid "Albedo"
@@ -23163,10 +24602,20 @@ msgid "Metallic Specular"
msgstr ""
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Metallic Texture"
+msgstr "Ðормальна текÑтура"
+
+#: scene/resources/material.cpp
msgid "Metallic Texture Channel"
msgstr ""
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Roughness Texture"
+msgstr "Вилучити текÑтуру"
+
+#: scene/resources/material.cpp
msgid "Roughness Texture Channel"
msgstr ""
@@ -23183,6 +24632,16 @@ msgid "Emission Operator"
msgstr "Кольори випромінюваннÑ"
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Emission On UV2"
+msgstr "МаÑка випромінюваннÑ"
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Emission Texture"
+msgstr "Джерело випромінюваннÑ: "
+
+#: scene/resources/material.cpp
msgid "NormalMap"
msgstr ""
@@ -23192,7 +24651,12 @@ msgstr ""
#: scene/resources/material.cpp
msgid "Rim Tint"
-msgstr "Випадковий нахил:"
+msgstr "Ðахил краю"
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Rim Texture"
+msgstr "Вилучити текÑтуру"
#: scene/resources/material.cpp
msgid "Clearcoat"
@@ -23203,40 +24667,50 @@ msgid "Clearcoat Gloss"
msgstr "ОчиÑтити позу"
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Clearcoat Texture"
+msgstr "Кольорова текÑтура"
+
+#: scene/resources/material.cpp
msgid "Anisotropy"
msgstr "ÐнізотропіÑ"
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Anisotropy Flowmap"
+msgstr "ÐнізотропіÑ"
+
+#: scene/resources/material.cpp
msgid "Ambient Occlusion"
msgstr "Перешкода"
#: scene/resources/material.cpp
-#, fuzzy
+msgid "On UV2"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Texture Channel"
-msgstr "TextureRegion"
+msgstr "Канал текÑтур"
#: scene/resources/material.cpp
msgid "Deep Parallax"
msgstr ""
#: scene/resources/material.cpp
-#, fuzzy
msgid "Min Layers"
-msgstr "Шари"
+msgstr "Мін. к-ть шарів"
#: scene/resources/material.cpp
-#, fuzzy
msgid "Max Layers"
-msgstr "Шари"
+msgstr "МакÑ. к-ть шарів"
#: scene/resources/material.cpp
msgid "Flip Tangent"
msgstr ""
#: scene/resources/material.cpp
-#, fuzzy
msgid "Flip Binormal"
-msgstr "Віддзеркалити портал"
+msgstr "Віддзеркалити бінормально"
#: scene/resources/material.cpp
msgid "Subsurf Scatter"
@@ -23244,26 +24718,34 @@ msgstr ""
#: scene/resources/material.cpp
msgid "Transmission"
-msgstr "Перехід:"
+msgstr "Перехід"
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Transmission Texture"
+msgstr "Перехід"
#: scene/resources/material.cpp
msgid "Refraction"
-msgstr "ВідокремленнÑ:"
+msgstr "ЗаломленнÑ"
#: scene/resources/material.cpp scene/resources/navigation_mesh.cpp
msgid "Detail"
msgstr "Подробиці"
#: scene/resources/material.cpp
-#, fuzzy
msgid "UV Layer"
-msgstr "Шар"
+msgstr "УФ-шар"
#: scene/resources/material.cpp
msgid "UV1"
msgstr "UV"
#: scene/resources/material.cpp
+msgid "Triplanar"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Triplanar Sharpness"
msgstr ""
@@ -23284,9 +24766,8 @@ msgid "Async Mode"
msgstr "Режим панорамуваннÑ"
#: scene/resources/mesh.cpp
-#, fuzzy
msgid "Lightmap Size Hint"
-msgstr "ÐŸÑ€Ð¸Ð³Ð¾Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ ÐºÐ°Ñ€Ñ‚Ð¸ оÑвітленнÑ"
+msgstr "Підказка розміру карти оÑвітленнÑ"
#: scene/resources/mesh.cpp
msgid "Blend Shape Mode"
@@ -23298,11 +24779,11 @@ msgstr ""
#: scene/resources/multimesh.cpp
msgid "Color Format"
-msgstr "Оператор кольору."
+msgstr "Формат кольору"
#: scene/resources/multimesh.cpp
msgid "Transform Format"
-msgstr "ÐŸÐµÑ€ÐµÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ð¿ÐµÑ€ÐµÑ€Ð²Ð°Ð½Ð¾."
+msgstr "Формат перетвореннÑ"
#: scene/resources/multimesh.cpp
msgid "Custom Data Format"
@@ -23317,24 +24798,20 @@ msgid "Visible Instance Count"
msgstr ""
#: scene/resources/multimesh.cpp
-#, fuzzy
msgid "Transform Array"
-msgstr "ÐŸÐµÑ€ÐµÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ð¿ÐµÑ€ÐµÑ€Ð²Ð°Ð½Ð¾."
+msgstr "МаÑив перетвореннÑ"
#: scene/resources/multimesh.cpp
-#, fuzzy
msgid "Transform 2D Array"
-msgstr "Перетворити UV-карту"
+msgstr "Двовимірний маÑив перетвореннÑ"
#: scene/resources/multimesh.cpp
-#, fuzzy
msgid "Color Array"
-msgstr "Композитний маÑив"
+msgstr "МаÑив кольорів"
#: scene/resources/multimesh.cpp
-#, fuzzy
msgid "Custom Data Array"
-msgstr "Композитний маÑив"
+msgstr "Ðетиповий маÑив даних"
#: scene/resources/navigation_mesh.cpp
msgid "Sample Partition Type"
@@ -23342,16 +24819,15 @@ msgstr "Ð’Ñтановити базовий тип змінної"
#: scene/resources/navigation_mesh.cpp
msgid "Parsed Geometry Type"
-msgstr "Ðналіз геометрії..."
+msgstr "Оброблений тип геометрії"
#: scene/resources/navigation_mesh.cpp
msgid "Source Geometry Mode"
msgstr ""
#: scene/resources/navigation_mesh.cpp
-#, fuzzy
msgid "Source Group Name"
-msgstr "Початковий код"
+msgstr "Ðазва групи джерел"
#: scene/resources/navigation_mesh.cpp
msgid "Agent"
@@ -23383,7 +24859,7 @@ msgstr ""
#: scene/resources/navigation_mesh.cpp
msgid "Sample Distance"
-msgstr "ВідÑтань вибору:"
+msgstr "ВідÑтань диÑкретизації"
#: scene/resources/navigation_mesh.cpp
msgid "Sample Max Error"
@@ -23394,9 +24870,8 @@ msgid "Low Hanging Obstacles"
msgstr ""
#: scene/resources/navigation_mesh.cpp
-#, fuzzy
msgid "Ledge Spans"
-msgstr "Інтервал між Ñ€Ñдками"
+msgstr "Розміри планки"
#: scene/resources/navigation_mesh.cpp
msgid "Filter Walkable Low Height Spans"
@@ -23411,76 +24886,74 @@ msgid "OccluderShapeSphere Set Spheres"
msgstr "Сфери набору OccluderShapeSphere"
#: scene/resources/occluder_shape_polygon.cpp
-#, fuzzy
msgid "Polygon Points"
-msgstr "Полігони"
+msgstr "Точки багатокутника"
#: scene/resources/occluder_shape_polygon.cpp
-#, fuzzy
msgid "Hole Points"
-msgstr "ПереміÑтити точки"
+msgstr "Точки отвору"
#: scene/resources/packed_scene.cpp
msgid "Bundled"
-msgstr ""
+msgstr "З'єднане"
#: scene/resources/particles_material.cpp
msgid "Trail"
msgstr "Слід"
#: scene/resources/particles_material.cpp
-#, fuzzy
msgid "Divisor"
-msgstr "Поділити на %s"
+msgstr "Дільник"
#: scene/resources/particles_material.cpp
-#, fuzzy
msgid "Size Modifier"
-msgstr "Коефіцієнт швидкоÑті оглÑду"
+msgstr "Модифікатор розміру"
#: scene/resources/particles_material.cpp
-#, fuzzy
msgid "Color Modifier"
-msgstr "Модифікатор швидкоÑті довільного оглÑду"
+msgstr "Модифікатор кольору"
#: scene/resources/particles_material.cpp
-#, fuzzy
msgid "Point Texture"
-msgstr "Точок випромінюваннÑ:"
+msgstr "Точкова текÑтура"
#: scene/resources/particles_material.cpp
-#, fuzzy
msgid "Normal Texture"
-msgstr "Джерело випромінюваннÑ:"
+msgstr "Ðормальна текÑтура"
#: scene/resources/particles_material.cpp
-#, fuzzy
msgid "Color Texture"
-msgstr "Тема кольорів"
+msgstr "Кольорова текÑтура"
#: scene/resources/particles_material.cpp
-#, fuzzy
msgid "Point Count"
-msgstr "Додати вхідний порт"
+msgstr "КількіÑть точок"
-#: scene/resources/physics_material.cpp
+#: scene/resources/particles_material.cpp
#, fuzzy
+msgid "Scale Random"
+msgstr "Ð¡Ð¿Ñ–Ð²Ð²Ñ–Ð´Ð½Ð¾ÑˆÐµÐ½Ð½Ñ Ð¼Ð°Ñштабу:"
+
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Scale Curve"
+msgstr "Закрити криву"
+
+#: scene/resources/physics_material.cpp
msgid "Rough"
-msgstr "ШорÑткіÑть"
+msgstr "Грубо"
#: scene/resources/physics_material.cpp
msgid "Absorbent"
msgstr ""
#: scene/resources/plane_shape.cpp
-#, fuzzy
msgid "Plane"
-msgstr "Площина:"
+msgstr "Площина"
#: scene/resources/primitive_meshes.cpp
-#, fuzzy
msgid "Flip Faces"
-msgstr "Віддзеркалити портали"
+msgstr "Віддзеркалити поверхні"
#: scene/resources/primitive_meshes.cpp
msgid "Mid Height"
@@ -23500,7 +24973,7 @@ msgstr ""
#: scene/resources/primitive_meshes.cpp
msgid "Top Radius"
-msgstr "РадіуÑ:"
+msgstr "Ð Ð°Ð´Ñ–ÑƒÑ Ð·Ð³Ð¾Ñ€Ð¸"
#: scene/resources/primitive_meshes.cpp
msgid "Bottom Radius"
@@ -23519,13 +24992,8 @@ msgid "Slips On Slope"
msgstr ""
#: scene/resources/segment_shape_2d.cpp
-#, fuzzy
msgid "A"
-msgstr "ar"
-
-#: scene/resources/shader.cpp
-msgid "Code"
-msgstr "Код"
+msgstr "A"
#: scene/resources/shader.cpp
msgid "Custom Defines"
@@ -23533,57 +25001,51 @@ msgstr "Відтворити вибіркову Ñцену"
#: scene/resources/shape_2d.cpp
msgid "Custom Solver Bias"
-msgstr ""
+msgstr "Ðетиповий нахил розв'ÑзуваннÑ"
#: scene/resources/sky.cpp
msgid "Radiance Size"
-msgstr "Розмір обведеннÑ:"
+msgstr "Розмір ÑÑйва"
#: scene/resources/sky.cpp
msgid "Panorama"
msgstr "Панорама"
#: scene/resources/sky.cpp
-#, fuzzy
msgid "Top Color"
-msgstr "Колір текÑту"
+msgstr "Колір верху"
#: scene/resources/sky.cpp
-#, fuzzy
msgid "Horizon Color"
-msgstr "Ð—Ð±ÐµÑ€ÐµÐ¶ÐµÐ½Ð½Ñ Ñ„Ð°Ð¹Ð»Ñƒ:"
+msgstr "Колір горизонту"
#: scene/resources/sky.cpp
msgid "Ground"
msgstr "ЗемлÑ"
#: scene/resources/sky.cpp
-#, fuzzy
msgid "Bottom Color"
-msgstr "Закладки"
+msgstr "Колір низу"
#: scene/resources/sky.cpp
msgid "Sun"
msgstr "Сонце"
#: scene/resources/sky.cpp
-#, fuzzy
msgid "Latitude"
-msgstr "ПідÑтавити"
+msgstr "Широта"
#: scene/resources/sky.cpp
msgid "Longitude"
-msgstr ""
+msgstr "Довгота"
#: scene/resources/sky.cpp
-#, fuzzy
msgid "Angle Min"
-msgstr "Кут"
+msgstr "Мін. кут"
#: scene/resources/sky.cpp
-#, fuzzy
msgid "Angle Max"
-msgstr "Кут"
+msgstr "МакÑ. кут"
#: scene/resources/style_box.cpp
msgid "Content Margin"
@@ -23618,14 +25080,6 @@ msgid "Grow End"
msgstr ""
#: scene/resources/texture.cpp
-msgid "Storage"
-msgstr "Сховище даних"
-
-#: scene/resources/texture.cpp
-msgid "Lossy Quality"
-msgstr ""
-
-#: scene/resources/texture.cpp
msgid "Load Path"
msgstr "Завантажити шаблон"
@@ -23634,28 +25088,24 @@ msgid "Base Texture"
msgstr "Вилучити текÑтуру"
#: scene/resources/texture.cpp
-#, fuzzy
msgid "Image Size"
-msgstr "Розмір Ñторінки"
+msgstr "Розмір зображеннÑ"
#: scene/resources/texture.cpp
msgid "Storage Mode"
msgstr "Режим зберіганнÑ"
#: scene/resources/texture.cpp
-#, fuzzy
msgid "Lossy Storage Quality"
-msgstr "ЗахопленнÑ"
+msgstr "ЯкіÑть Ð·Ð±ÐµÑ€Ñ–Ð³Ð°Ð½Ð½Ñ Ñ–Ð· втратами"
#: scene/resources/texture.cpp
-#, fuzzy
msgid "Fill From"
-msgstr "Режим заповненнÑ"
+msgstr "Джерело заповненнÑ"
#: scene/resources/texture.cpp
-#, fuzzy
msgid "Fill To"
-msgstr "Режим заповненнÑ"
+msgstr "ÐŸÑ€Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð·Ð°Ð¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ"
#: scene/resources/texture.cpp
msgid "Base"
@@ -23663,25 +25113,23 @@ msgstr "ОÑнова"
#: scene/resources/texture.cpp
msgid "Current Frame"
-msgstr "Поточний кадр:"
+msgstr "Поточний кадр"
#: scene/resources/texture.cpp
-#, fuzzy
msgid "Pause"
-msgstr "Призупинено"
+msgstr "Пауза"
#: scene/resources/texture.cpp
msgid "Which Feed"
msgstr ""
#: scene/resources/texture.cpp
-#, fuzzy
msgid "Camera Is Active"
-msgstr "Фотоапарати"
+msgstr "Камера є активною"
#: scene/resources/theme.cpp
msgid "Default Font"
-msgstr "&Типовий шрифт:"
+msgstr "Типовий шрифт"
#: scene/resources/visual_shader.cpp
msgid "Output Port For Preview"
@@ -23724,14 +25172,12 @@ msgid "Cube Map"
msgstr ""
#: scene/resources/visual_shader_nodes.cpp
-#, fuzzy
msgid "Default Value Enabled"
-msgstr "Профіль можливоÑтей Godot"
+msgstr "Увімкнено типове значеннÑ"
#: scene/resources/visual_shader_nodes.cpp
-#, fuzzy
msgid "Default Value"
-msgstr "Зміна вхідного значеннÑ"
+msgstr "Типове значеннÑ"
#: scene/resources/visual_shader_nodes.cpp
msgid "Color Default"
@@ -23745,15 +25191,9 @@ msgstr "Ðекоректна Ñ„ÑƒÐ½ÐºÑ†Ñ–Ñ Ð¿Ð¾Ñ€Ñ–Ð²Ð½ÑÐ½Ð½Ñ Ð´Ð»Ñ Ñ†ÑŒÐ¾Ð³
msgid "Fallback Environment"
msgstr "ПереглÑд Ñередовища"
-#: scene/resources/world.cpp scene/resources/world_2d.cpp
-#, fuzzy
-msgid "Space"
-msgstr "Головна Ñцена"
-
#: scene/resources/world.cpp
-#, fuzzy
msgid "Scenario"
-msgstr "Сцена"
+msgstr "Сценарій"
#: scene/resources/world.cpp scene/resources/world_2d.cpp
msgid "Direct Space State"
@@ -23773,16 +25213,15 @@ msgstr ""
#: scene/resources/world_2d.cpp
msgid "Canvas"
-msgstr ""
+msgstr "Полотно"
#: servers/arvr/arvr_interface.cpp
msgid "Is Primary"
msgstr ""
#: servers/arvr/arvr_interface.cpp
-#, fuzzy
msgid "Is Initialized"
-msgstr "Ініціалізувати"
+msgstr "Ініціалізовано"
#: servers/arvr/arvr_interface.cpp
msgid "AR"
@@ -23793,9 +25232,8 @@ msgid "Is Anchor Detection Enabled"
msgstr ""
#: servers/arvr_server.cpp
-#, fuzzy
msgid "Primary Interface"
-msgstr "Ð†Ð½Ñ‚ÐµÑ€Ñ„ÐµÐ¹Ñ ÐºÐ¾Ñ€Ð¸Ñтувача"
+msgstr "ОÑновний інтерфейÑ"
#: servers/audio/audio_stream.cpp
msgid "Audio Stream"
@@ -23803,13 +25241,13 @@ msgstr "Потік звукових даних %1"
#: servers/audio/audio_stream.cpp
msgid "Random Pitch"
-msgstr "Випадковий нахил:"
+msgstr "Випадковий тон"
#: servers/audio/effects/audio_effect_capture.cpp
#: servers/audio/effects/audio_effect_spectrum_analyzer.cpp
#: servers/audio/effects/audio_stream_generator.cpp
msgid "Buffer Length"
-msgstr "&Розмір буфера:"
+msgstr "Розмір буфера"
#: servers/audio/effects/audio_effect_chorus.cpp
msgid "Voice Count"
@@ -23826,9 +25264,35 @@ msgstr ""
msgid "Wet"
msgstr "мокрий"
-#: servers/audio/effects/audio_effect_compressor.cpp
-msgid "Threshold"
-msgstr "Поріг"
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "Voice"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+msgid "Delay (ms)"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_phaser.cpp
+msgid "Rate Hz"
+msgstr "ЧаÑтота (Гц)"
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#, fuzzy
+msgid "Depth (ms)"
+msgstr "Глибина"
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+msgid "Level dB"
+msgstr "Рівень (дБ)"
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+#: servers/audio/effects/audio_effect_panner.cpp
+msgid "Pan"
+msgstr "ПанорамуваннÑ"
#: servers/audio/effects/audio_effect_compressor.cpp
#: servers/audio/effects/audio_effect_filter.cpp
@@ -23840,9 +25304,8 @@ msgid "Attack (µs)"
msgstr ""
#: servers/audio/effects/audio_effect_compressor.cpp
-#, fuzzy
msgid "Release (ms)"
-msgstr "ВипуÑк"
+msgstr "ВідпуÑÐºÐ°Ð½Ð½Ñ (мÑ)"
#: servers/audio/effects/audio_effect_compressor.cpp
msgid "Sidechain"
@@ -23853,19 +25316,6 @@ msgid "Tap 1"
msgstr "удар"
#: servers/audio/effects/audio_effect_delay.cpp
-msgid "Delay (ms)"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_delay.cpp
-msgid "Level dB"
-msgstr "&Рівень (дБ):"
-
-#: servers/audio/effects/audio_effect_delay.cpp
-#: servers/audio/effects/audio_effect_panner.cpp
-msgid "Pan"
-msgstr "ПанорамуваннÑ"
-
-#: servers/audio/effects/audio_effect_delay.cpp
msgid "Tap 2"
msgstr "удар"
@@ -23876,9 +25326,8 @@ msgid "Feedback"
msgstr "Зворотній зв’Ñзок"
#: servers/audio/effects/audio_effect_delay.cpp
-#, fuzzy
msgid "Low-pass"
-msgstr "ÐизькочаÑтотний"
+msgstr "Ðижні чаÑтоти"
#: servers/audio/effects/audio_effect_distortion.cpp
msgid "Pre Gain"
@@ -23924,36 +25373,30 @@ msgstr ""
msgid "Range Max Hz"
msgstr ""
-#: servers/audio/effects/audio_effect_phaser.cpp
-msgid "Rate Hz"
-msgstr "ЧаÑтота (Гц)"
-
#: servers/audio/effects/audio_effect_pitch_shift.cpp
msgid "Oversampling"
msgstr ""
#: servers/audio/effects/audio_effect_pitch_shift.cpp
#: servers/audio/effects/audio_effect_spectrum_analyzer.cpp
-#, fuzzy
msgid "FFT Size"
-msgstr "Розмір табулÑції"
+msgstr "Розмір ШПФ"
#: servers/audio/effects/audio_effect_reverb.cpp
msgid "Predelay"
msgstr ""
#: servers/audio/effects/audio_effect_reverb.cpp
-msgid "(msec)"
+msgid "Msec"
msgstr ""
#: servers/audio/effects/audio_effect_reverb.cpp
msgid "Room Size"
-msgstr "&Розмір зали (%):"
+msgstr "Розмір зали"
#: servers/audio/effects/audio_effect_reverb.cpp
-#, fuzzy
msgid "High-pass"
-msgstr "Обхід"
+msgstr "ВиÑокі чаÑтоти"
#: servers/audio/effects/audio_effect_spectrum_analyzer.cpp
msgid "Tap Back Pos"
@@ -23964,9 +25407,8 @@ msgid "Pan Pullout"
msgstr ""
#: servers/audio/effects/audio_effect_stereo_enhance.cpp
-#, fuzzy
msgid "Time Pullout (ms)"
-msgstr "Перевищено Ñ‡Ð°Ñ Ð¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð½Ð½Ñ Ð½Ð° відповідь."
+msgstr "ВідтÑÐ³ÑƒÐ²Ð°Ð½Ð½Ñ Ñ‡Ð°Ñу (мÑ)"
#: servers/audio/effects/audio_effect_stereo_enhance.cpp
msgid "Surround"
@@ -23993,28 +25435,24 @@ msgid "Video Delay Compensation (ms)"
msgstr ""
#: servers/audio_server.cpp
-#, fuzzy
msgid "Bus Count"
-msgstr "Додати вхідний порт"
+msgstr "КількіÑть шин"
#: servers/audio_server.cpp
-#, fuzzy
msgid "Capture Device"
-msgstr "Захопити з пікÑелÑ"
+msgstr "ПриÑтрій захопленнÑ"
#: servers/audio_server.cpp
-#, fuzzy
msgid "Global Rate Scale"
-msgstr "Загальна змінна"
+msgstr "Шкала загальної чаÑтоти"
#: servers/camera/camera_feed.cpp
msgid "Feed"
msgstr "Подача"
#: servers/camera/camera_feed.cpp
-#, fuzzy
msgid "Is Active"
-msgstr "ПерÑпектива"
+msgstr "Ðктивний"
#: servers/physics/space_sw.cpp servers/physics_2d/space_2d_sw.cpp
msgid "Sleep Threshold Linear"
@@ -24029,9 +25467,8 @@ msgid "Time Before Sleep"
msgstr ""
#: servers/physics_2d/physics_2d_server_sw.cpp
-#, fuzzy
msgid "BP Hash Table Size"
-msgstr "Розмір табулÑції"
+msgstr "Розмір таблиці хешів BP"
#: servers/physics_2d/physics_2d_server_sw.cpp
msgid "Large Object Surface Threshold In Cells"
@@ -24042,37 +25479,32 @@ msgid "Inverse Mass"
msgstr ""
#: servers/physics_2d_server.cpp servers/physics_server.cpp
-#, fuzzy
msgid "Inverse Inertia"
-msgstr "ОглÑд ліворуч"
+msgstr "Зворотна інерціÑ"
#: servers/physics_2d_server.cpp servers/physics_server.cpp
msgid "Total Angular Damp"
msgstr ""
#: servers/physics_2d_server.cpp servers/physics_server.cpp
-#, fuzzy
msgid "Total Linear Damp"
-msgstr "Лінійний"
+msgstr "Загальне лінійне згаÑаннÑ"
#: servers/physics_2d_server.cpp servers/physics_server.cpp
-#, fuzzy
msgid "Total Gravity"
-msgstr "Типове Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ð¿ÐµÑ€ÐµÐ³Ð»Ñду"
+msgstr "Загальне Ñ‚ÑжіннÑ"
#: servers/physics_2d_server.cpp servers/physics_server.cpp
-#, fuzzy
msgid "Linear Velocity"
-msgstr "Ініціалізувати"
+msgstr "Лінійна швидкіÑть"
#: servers/physics_2d_server.cpp servers/physics_server.cpp
msgid "Exclude"
msgstr "Виключити"
#: servers/physics_2d_server.cpp servers/physics_server.cpp
-#, fuzzy
msgid "Shape RID"
-msgstr "Форма"
+msgstr "RID форми"
#: servers/physics_2d_server.cpp servers/physics_server.cpp
msgid "Collide With Bodies"
@@ -24087,38 +25519,32 @@ msgid "Motion Remainder"
msgstr ""
#: servers/physics_2d_server.cpp servers/physics_server.cpp
-#, fuzzy
msgid "Collision Point"
-msgstr "Режим перешкоди"
+msgstr "Точка зіткненнÑ"
#: servers/physics_2d_server.cpp servers/physics_server.cpp
-#, fuzzy
msgid "Collision Normal"
-msgstr "Режим перешкоди"
+msgstr "Ðормаль зіткненнÑ"
#: servers/physics_2d_server.cpp servers/physics_server.cpp
-#, fuzzy
msgid "Collision Depth"
-msgstr "Режим перешкоди"
+msgstr "Глибина зіткненнÑ"
#: servers/physics_2d_server.cpp servers/physics_server.cpp
-#, fuzzy
msgid "Collision Safe Fraction"
-msgstr "Режим перешкоди"
+msgstr "Безпечна чаÑтка зіткненнÑ"
#: servers/physics_2d_server.cpp servers/physics_server.cpp
-#, fuzzy
msgid "Collision Unsafe Fraction"
-msgstr "Режим перешкоди"
+msgstr "Ðебезпечна чаÑтка зіткненнÑ"
#: servers/physics_server.cpp
-#, fuzzy
msgid "Center Of Mass"
-msgstr "За центром ліворуч"
+msgstr "Центр маÑ"
#: servers/physics_server.cpp
msgid "Principal Inertia Axes"
-msgstr ""
+msgstr "Головні віÑÑ– інерції"
#: servers/visual/shader_language.cpp
msgid "Varying may not be assigned in the '%s' function."
@@ -24154,12 +25580,11 @@ msgstr "Сталі не можна змінювати."
#: servers/visual/visual_server_scene.cpp
msgid "Spatial Partitioning"
-msgstr "РозбиттÑ..."
+msgstr "ПроÑторове розбиттÑ"
#: servers/visual_server.cpp
-#, fuzzy
msgid "Render Loop Enabled"
-msgstr "Фільтрувати Ñигнали"
+msgstr "Увімкнено цикл обробки"
#: servers/visual_server.cpp
msgid "VRAM Compression"
@@ -24203,7 +25628,7 @@ msgstr ""
#: servers/visual_server.cpp
msgid "Cubemap Size"
-msgstr "Розмір кубічної карти:"
+msgstr "Розмір кубічної карти"
#: servers/visual_server.cpp
msgid "Quadrant 0 Subdiv"
@@ -24227,7 +25652,7 @@ msgstr "Тіні"
#: servers/visual_server.cpp
msgid "Filter Mode"
-msgstr "Режим фільтруваннÑ:"
+msgstr "Режим фільтруваннÑ"
#: servers/visual_server.cpp
msgid "Texture Array Reflections"
@@ -24306,9 +25731,8 @@ msgid "Ninepatch Mode"
msgstr "Режим інтерполÑції"
#: servers/visual_server.cpp
-#, fuzzy
msgid "OpenGL"
-msgstr "Відкрити"
+msgstr "OpenGL"
#: servers/visual_server.cpp
msgid "Batching Send Null"
@@ -24328,7 +25752,7 @@ msgstr ""
#: servers/visual_server.cpp
msgid "Batching"
-msgstr "Шукаємо…"
+msgstr "Пакетна обробка"
#: servers/visual_server.cpp
msgid "Use Batching"
@@ -24348,19 +25772,19 @@ msgstr ""
#: servers/visual_server.cpp
msgid "Colored Vertex Format Threshold"
-msgstr ""
+msgstr "Поріг формату розфарбованих вершин"
#: servers/visual_server.cpp
msgid "Scissor Area Threshold"
-msgstr ""
+msgstr "Поріг облаÑті ножиць"
#: servers/visual_server.cpp
msgid "Max Join Items"
-msgstr "Керувати запиÑами…"
+msgstr "МакÑ. к-ть елементів об'єднаннÑ"
#: servers/visual_server.cpp
msgid "Batch Buffer Size"
-msgstr ""
+msgstr "Розмір пакетного буфера"
#: servers/visual_server.cpp
msgid "Item Reordering Lookahead"
@@ -24376,7 +25800,7 @@ msgstr "Ð’Ñтавити кадр"
#: servers/visual_server.cpp
msgid "GLES2"
-msgstr ""
+msgstr "GLES2"
#: servers/visual_server.cpp
msgid "Compatibility"
@@ -24443,6 +25867,5 @@ msgid "Log Active Async Compiles Count"
msgstr ""
#: servers/visual_server.cpp
-#, fuzzy
msgid "Shader Cache Size (MB)"
-msgstr "Змінити розмір камери"
+msgstr "Розмір кешу шейдерів (МБ)"
diff --git a/editor/translations/ur_PK.po b/editor/translations/ur_PK.po
index 3c912a3f98..85ea89e83e 100644
--- a/editor/translations/ur_PK.po
+++ b/editor/translations/ur_PK.po
@@ -21,7 +21,7 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 4.10-dev\n"
-#: core/bind/core_bind.cpp
+#: core/bind/core_bind.cpp main/main.cpp
msgid "Tablet Driver"
msgstr ""
@@ -117,8 +117,8 @@ msgstr ".تمام کا انتخاب"
#: core/bind/core_bind.cpp editor/editor_settings.cpp main/main.cpp
#: modules/gdscript/gdscript_editor.cpp modules/gridmap/grid_map.cpp
#: modules/mono/csharp_script.cpp modules/visual_script/visual_script_nodes.cpp
-#: scene/2d/tile_map.cpp scene/3d/camera.cpp scene/gui/control.cpp
-#: scene/gui/graph_edit.cpp scene/main/viewport.cpp
+#: scene/2d/tile_map.cpp scene/3d/camera.cpp scene/3d/light.cpp
+#: scene/gui/control.cpp scene/gui/graph_edit.cpp scene/main/viewport.cpp
#: scene/resources/dynamic_font.cpp scene/resources/navigation_mesh.cpp
#: scene/resources/primitive_meshes.cpp scene/resources/sky.cpp
#: scene/resources/style_box.cpp scene/resources/texture.cpp
@@ -215,8 +215,7 @@ msgid "Data"
msgstr ""
#: core/io/file_access_network.cpp core/register_core_types.cpp
-#: editor/editor_settings.cpp editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp main/main.cpp
+#: editor/editor_settings.cpp main/main.cpp
#: modules/gdscript/language_server/gdscript_language_server.cpp
#, fuzzy
msgid "Network"
@@ -487,9 +486,10 @@ msgstr ""
msgid "Relative"
msgstr ""
-#: core/os/input_event.cpp scene/2d/camera_2d.cpp
-#: scene/3d/interpolated_camera.cpp scene/animation/animation_player.cpp
-#: scene/resources/environment.cpp
+#: core/os/input_event.cpp scene/2d/camera_2d.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/interpolated_camera.cpp
+#: scene/animation/animation_player.cpp scene/resources/environment.cpp
+#: scene/resources/particles_material.cpp
#, fuzzy
msgid "Speed"
msgstr "ایکشن منتقل کریں"
@@ -538,8 +538,9 @@ msgstr "کمیونٹی"
msgid "Pitch"
msgstr "ایکشن منتقل کریں"
-#: core/os/input_event.cpp scene/2d/physics_body_2d.cpp
-#: scene/3d/physics_body.cpp
+#: core/os/input_event.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/physics_body_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/3d/physics_body.cpp scene/resources/particles_material.cpp
msgid "Velocity"
msgstr ""
@@ -556,6 +557,8 @@ msgid "Controller Value"
msgstr ""
#: core/project_settings.cpp editor/editor_node.cpp main/main.cpp
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/windows/export/export.cpp
#, fuzzy
msgid "Application"
msgstr "ایکشن منتقل کریں"
@@ -572,13 +575,16 @@ msgstr ""
#: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp
#: editor/editor_plugin_settings.cpp editor/editor_profiler.cpp
#: editor/project_manager.cpp editor/settings_config_dialog.cpp
-#: modules/gdnative/nativescript/nativescript.cpp scene/2d/area_2d.cpp
-#: scene/3d/area.cpp scene/main/node.cpp
+#: modules/gdnative/nativescript/nativescript.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/osx/export/export.cpp scene/2d/area_2d.cpp scene/3d/area.cpp
+#: scene/main/node.cpp
msgid "Name"
msgstr ""
#: core/project_settings.cpp editor/editor_help.cpp
-#: modules/visual_script/visual_script_nodes.cpp
+#: modules/visual_script/visual_script_nodes.cpp platform/uwp/export/export.cpp
+#: platform/windows/export/export.cpp
#, fuzzy
msgid "Description"
msgstr "سب سکریپشن بنائیں"
@@ -615,7 +621,7 @@ msgid "Custom User Dir Name"
msgstr ""
#: core/project_settings.cpp editor/animation_track_editor.cpp
-#: editor/editor_audio_buses.cpp servers/audio_server.cpp
+#: editor/editor_audio_buses.cpp main/main.cpp servers/audio_server.cpp
msgid "Audio"
msgstr ""
@@ -769,10 +775,13 @@ msgstr "سب سکریپشن بنائیں"
msgid "Sharpen Intensity"
msgstr ""
-#: core/project_settings.cpp editor/editor_node.cpp editor/editor_settings.cpp
-#: editor/plugins/script_editor_plugin.cpp editor/project_export.cpp
-#: main/main.cpp modules/gdscript/gdscript.cpp
-#: modules/visual_script/visual_script.cpp scene/3d/room_manager.cpp
+#: core/project_settings.cpp editor/editor_export.cpp editor/editor_node.cpp
+#: editor/editor_settings.cpp editor/plugins/script_editor_plugin.cpp
+#: editor/project_export.cpp main/main.cpp modules/gdscript/gdscript.cpp
+#: modules/visual_script/visual_script.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp scene/3d/room_manager.cpp
#: scene/main/scene_tree.cpp scene/resources/shape_2d.cpp
#: servers/visual_server.cpp
msgid "Debug"
@@ -1000,6 +1009,7 @@ msgid "Subsurface Scattering"
msgstr ""
#: drivers/gles3/rasterizer_scene_gles3.cpp
+#: editor/import/resource_importer_texture.cpp
#: editor/plugins/spatial_editor_plugin.cpp modules/gltf/gltf_node.cpp
#: modules/gridmap/grid_map.cpp scene/2d/cpu_particles_2d.cpp
#: scene/2d/node_2d.cpp scene/2d/parallax_layer.cpp scene/2d/polygon_2d.cpp
@@ -1300,6 +1310,7 @@ msgid "Editors"
msgstr "سب سکریپشن بنائیں"
#: editor/animation_track_editor.cpp editor/editor_settings.cpp
+#: editor/import/resource_importer_scene.cpp
#: editor/plugins/animation_player_editor_plugin.cpp editor/scene_tree_dock.cpp
#: scene/2d/animated_sprite.cpp scene/2d/cpu_particles_2d.cpp
#: scene/2d/sprite.cpp scene/3d/cpu_particles.cpp scene/3d/sprite_3d.cpp
@@ -1517,14 +1528,14 @@ msgstr ""
msgid "Seconds"
msgstr ""
-#: editor/animation_track_editor.cpp
+#: editor/animation_track_editor.cpp editor/import/resource_importer_scene.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp main/main.cpp
#: scene/resources/texture.cpp
msgid "FPS"
msgstr ""
#: editor/animation_track_editor.cpp editor/editor_plugin_settings.cpp
-#: editor/editor_resource_picker.cpp
+#: editor/editor_resource_picker.cpp editor/import/resource_importer_wav.cpp
#: editor/plugins/polygon_2d_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
@@ -2486,7 +2497,9 @@ msgid "Remove Autoload"
msgstr ""
#: editor/editor_autoload_settings.cpp editor/editor_plugin_settings.cpp
-#: modules/gdscript/gdscript.cpp scene/2d/polygon_2d.cpp scene/3d/area.cpp
+#: modules/gdscript/gdscript.cpp platform/android/export/export_plugin.cpp
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#: scene/2d/polygon_2d.cpp scene/3d/area.cpp scene/3d/physics_joint.cpp
#: scene/3d/reflection_probe.cpp scene/main/canvas_layer.cpp
#: scene/resources/material.cpp servers/visual_server.cpp
msgid "Enable"
@@ -2639,6 +2652,58 @@ msgstr ""
#: editor/editor_export.cpp platform/android/export/export_plugin.cpp
#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Custom Template"
+msgstr ".تمام کا انتخاب"
+
+#: editor/editor_export.cpp editor/project_export.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp
+msgid "Release"
+msgstr ""
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Binary Format"
+msgstr "سب سکریپشن بنائیں"
+
+#: editor/editor_export.cpp
+msgid "64 Bits"
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Embed PCK"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Texture Format"
+msgstr "ایکشن منتقل کریں"
+
+#: editor/editor_export.cpp
+msgid "BPTC"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "S3TC"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "ETC"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "ETC2"
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "No BPTC Fallbacks"
+msgstr ""
+
+#: editor/editor_export.cpp platform/android/export/export_plugin.cpp
+#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
msgid "Custom debug template not found."
msgstr ""
@@ -2821,6 +2886,7 @@ msgid "Make Current"
msgstr ""
#: editor/editor_feature_profile.cpp editor/editor_node.cpp
+#: editor/import/resource_importer_scene.cpp
#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
msgid "Import"
msgstr "درآمد"
@@ -2950,8 +3016,11 @@ msgstr ""
msgid "Display Mode"
msgstr "ایکشن منتقل کریں"
-#: editor/editor_file_dialog.cpp main/main.cpp modules/csg/csg_shape.cpp
-#: modules/visual_script/visual_script_nodes.cpp
+#: editor/editor_file_dialog.cpp
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+#: editor/import/resource_importer_wav.cpp main/main.cpp
+#: modules/csg/csg_shape.cpp modules/visual_script/visual_script_nodes.cpp
#: modules/visual_script/visual_script_yield_nodes.cpp scene/2d/light_2d.cpp
#: scene/2d/physics_body_2d.cpp scene/2d/tile_map.cpp
#: scene/3d/baked_lightmap.cpp scene/3d/light.cpp scene/3d/physics_body.cpp
@@ -3092,7 +3161,9 @@ msgstr ""
msgid "Reimport Missing Imported Files"
msgstr ""
-#: editor/editor_help.cpp
+#: editor/editor_help.cpp scene/2d/camera_2d.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/resources/dynamic_font.cpp
+#: scene/resources/style_box.cpp
msgid "Top"
msgstr ""
@@ -3145,6 +3216,7 @@ msgid "Fonts"
msgstr ""
#: editor/editor_help.cpp editor/plugins/theme_editor_plugin.cpp
+#: platform/iphone/export/export.cpp
msgid "Icons"
msgstr ""
@@ -3308,7 +3380,9 @@ msgstr ""
msgid "Pin value [Disabled because '%s' is editor-only]"
msgstr ""
-#: editor/editor_inspector.cpp editor/scene_tree_dock.cpp
+#: editor/editor_inspector.cpp
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+#: editor/scene_tree_dock.cpp
#: modules/visual_script/visual_script_func_nodes.cpp
#: modules/visual_script/visual_script_nodes.cpp
#: modules/visual_script/visual_script_property_selector.cpp
@@ -3624,6 +3698,14 @@ msgid "Quick Open Script..."
msgstr ""
#: editor/editor_node.cpp
+msgid "Save & Reload"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Save changes to '%s' before reloading?"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "Save & Close"
msgstr ""
@@ -3735,6 +3817,10 @@ msgid "Open Project Manager?"
msgstr ""
#: editor/editor_node.cpp
+msgid "Save changes to the following scene(s) before reloading?"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "Save & Quit"
msgstr ""
@@ -3980,9 +4066,8 @@ msgid "Update Vital Only"
msgstr "سب سکریپشن بنائیں"
#: editor/editor_node.cpp
-#, fuzzy
-msgid "Translate Properties"
-msgstr ".تمام کا انتخاب"
+msgid "Localize Settings"
+msgstr ""
#: editor/editor_node.cpp
#, fuzzy
@@ -3998,9 +4083,8 @@ msgid "Inspector"
msgstr ""
#: editor/editor_node.cpp
-#, fuzzy
-msgid "Capitalize Properties"
-msgstr ".تمام کا انتخاب"
+msgid "Default Property Name Style"
+msgstr ""
#: editor/editor_node.cpp
msgid "Default Float Step"
@@ -4573,7 +4657,9 @@ msgstr ""
msgid "Update"
msgstr ""
-#: editor/editor_plugin_settings.cpp
+#: editor/editor_plugin_settings.cpp platform/android/export/export_plugin.cpp
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp
msgid "Version"
msgstr ""
@@ -5546,7 +5632,7 @@ msgstr ""
msgid "Rect Custom Position"
msgstr ".تمام کا انتخاب"
-#: editor/editor_settings.cpp
+#: editor/editor_settings.cpp platform/android/export/export_plugin.cpp
msgid "Screen"
msgstr ""
@@ -5571,6 +5657,19 @@ msgid "Editor SSL Certificates"
msgstr ""
#: editor/editor_settings.cpp
+msgid "HTTP Proxy"
+msgstr ""
+
+#: editor/editor_settings.cpp
+msgid "Host"
+msgstr ""
+
+#: editor/editor_settings.cpp editor/fileserver/editor_file_server.cpp
+#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp
+msgid "Port"
+msgstr ""
+
+#: editor/editor_settings.cpp
msgid "Project Manager"
msgstr ""
@@ -5611,7 +5710,8 @@ msgstr ""
msgid "String Color"
msgstr ""
-#: editor/editor_settings.cpp
+#: editor/editor_settings.cpp platform/javascript/export/export.cpp
+#: platform/uwp/export/export.cpp
msgid "Background Color"
msgstr ""
@@ -5778,22 +5878,6 @@ msgid "Starting the download..."
msgstr ""
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "HTTP Proxy"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Host"
-msgstr ""
-
-#: editor/export_template_manager.cpp editor/fileserver/editor_file_server.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp main/main.cpp
-#: modules/mono/mono_gd/gd_mono.cpp
-msgid "Port"
-msgstr ""
-
-#: editor/export_template_manager.cpp
msgid "Error requesting URL:"
msgstr ""
@@ -6042,6 +6126,7 @@ msgstr ""
#: editor/fileserver/editor_file_server.cpp
#: editor/plugins/version_control_editor_plugin.cpp
+#: platform/uwp/export/export.cpp platform/windows/export/export.cpp
msgid "Password"
msgstr ""
@@ -6418,6 +6503,113 @@ msgstr ""
msgid "Use Ambient"
msgstr ""
+#: editor/import/resource_importer_bitmask.cpp
+#, fuzzy
+msgid "Create From"
+msgstr ".تمام کا انتخاب"
+
+#: editor/import/resource_importer_bitmask.cpp
+#: servers/audio/effects/audio_effect_compressor.cpp
+msgid "Threshold"
+msgstr ""
+
+#: editor/import/resource_importer_csv_translation.cpp
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_scene.cpp
+#: editor/import/resource_importer_texture.cpp
+#: editor/import/resource_importer_wav.cpp scene/3d/gi_probe.cpp
+msgid "Compress"
+msgstr ""
+
+#: editor/import/resource_importer_csv_translation.cpp
+msgid "Delimiter"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+msgid "No BPTC If RGB"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/sprite_3d.cpp
+#: scene/resources/material.cpp scene/resources/particles_material.cpp
+#: scene/resources/texture.cpp
+msgid "Flags"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/animation/tween.cpp
+#: scene/resources/texture.cpp
+msgid "Repeat"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/2d/light_2d.cpp
+#: scene/gui/control.cpp scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Filter"
+msgstr "سب سکریپشن بنائیں"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Mipmaps"
+msgstr "سگنلز"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+msgid "Anisotropic"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+msgid "sRGB"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+msgid "Slices"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
+#: scene/resources/style_box.cpp
+#, fuzzy
+msgid "Horizontal"
+msgstr ".تمام کا انتخاب"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
+#: scene/resources/style_box.cpp
+#, fuzzy
+msgid "Vertical"
+msgstr "سب سکریپشن بنائیں"
+
+#: editor/import/resource_importer_obj.cpp
+#, fuzzy
+msgid "Generate Tangents"
+msgstr ".تمام کا انتخاب"
+
+#: editor/import/resource_importer_obj.cpp
+#, fuzzy
+msgid "Scale Mesh"
+msgstr "ایکشن منتقل کریں"
+
+#: editor/import/resource_importer_obj.cpp
+msgid "Offset Mesh"
+msgstr ""
+
+#: editor/import/resource_importer_obj.cpp
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Octahedral Compression"
+msgstr "سب سکریپشن بنائیں"
+
+#: editor/import/resource_importer_obj.cpp
+msgid "Optimize Mesh Flags"
+msgstr ""
+
#: editor/import/resource_importer_scene.cpp
msgid "Import as Single Scene"
msgstr ""
@@ -6458,6 +6650,143 @@ msgstr ""
msgid "Import as Multiple Scenes+Materials"
msgstr ""
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Nodes"
+msgstr "نوڈ"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Root Type"
+msgstr ".Ù†ÙˆÙ¹ÙØ¦Ø± Ú©Û’ اکسٹنٹ Ú©Ùˆ تبدیل کیجیۓ"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Root Name"
+msgstr "ریموٹ "
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Root Scale"
+msgstr "ایکشن منتقل کریں"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Custom Script"
+msgstr "ایکشن منتقل کریں"
+
+#: editor/import/resource_importer_scene.cpp scene/resources/texture.cpp
+msgid "Storage"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Use Legacy Names"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+msgid "Materials"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Location"
+msgstr "ایکشن منتقل کریں"
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Keep On Reimport"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+msgid "Meshes"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Ensure Tangents"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Light Baking"
+msgstr "سب سکریپشن بنائیں"
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Lightmap Texel Size"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+msgid "Skins"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Use Named Skins"
+msgstr "سگنلز"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "External Files"
+msgstr "سب سکریپشن بنائیں"
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Store In Subdir"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Filter Script"
+msgstr "سب سکریپشن بنائیں"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Keep Custom Tracks"
+msgstr ".تمام کا انتخاب"
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Optimizer"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp main/main.cpp
+#: modules/mono/mono_gd/gd_mono.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp scene/2d/camera_2d.cpp scene/2d/light_2d.cpp
+#: scene/2d/navigation_polygon.cpp scene/2d/ray_cast_2d.cpp scene/2d/sprite.cpp
+#: scene/2d/y_sort.cpp scene/3d/audio_stream_player_3d.cpp
+#: scene/3d/baked_lightmap.cpp scene/3d/interpolated_camera.cpp
+#: scene/3d/light.cpp scene/3d/navigation_mesh_instance.cpp
+#: scene/3d/physics_joint.cpp scene/3d/ray_cast.cpp scene/3d/sprite_3d.cpp
+#: scene/gui/graph_edit.cpp scene/gui/rich_text_label.cpp
+#: scene/resources/curve.cpp scene/resources/environment.cpp
+#: scene/resources/material.cpp
+msgid "Enabled"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Max Linear Error"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Max Angular Error"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Max Angle"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Remove Unused Tracks"
+msgstr "انیم ٹریک Ûٹائیں"
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Clips"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/particles_2d.cpp scene/3d/area.cpp scene/3d/cpu_particles.cpp
+#: scene/3d/particles.cpp scene/resources/environment.cpp
+msgid "Amount"
+msgstr ""
+
#: editor/import/resource_importer_scene.cpp
#: editor/plugins/mesh_library_editor_plugin.cpp
msgid "Import Scene"
@@ -6499,12 +6828,145 @@ msgstr ""
msgid "Saving..."
msgstr ""
+#: editor/import/resource_importer_texture.cpp scene/resources/texture.cpp
+msgid "Lossy Quality"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "HDR Mode"
+msgstr "ایکشن منتقل کریں"
+
+#: editor/import/resource_importer_texture.cpp
+msgid "BPTC LDR"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/mesh_instance_2d.cpp scene/2d/multimesh_instance_2d.cpp
+#: scene/2d/particles_2d.cpp scene/2d/sprite.cpp scene/resources/style_box.cpp
+msgid "Normal Map"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Process"
+msgstr "ایکشن منتقل کریں"
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Fix Alpha Border"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Premult Alpha"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Hdr As Srgb"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Invert Color"
+msgstr "سب سکریپشن بنائیں"
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Normal Map Invert Y"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
+#: scene/audio/audio_stream_player.cpp scene/gui/video_player.cpp
+msgid "Stream"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Size Limit"
+msgstr "ایکشن منتقل کریں"
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Detect 3D"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "SVG"
+msgstr ""
+
#: editor/import/resource_importer_texture.cpp
msgid ""
"Warning, no suitable PC VRAM compression enabled in Project Settings. This "
"texture will not display correctly on PC."
msgstr ""
+#: editor/import/resource_importer_texture_atlas.cpp
+#, fuzzy
+msgid "Atlas File"
+msgstr "Ø§Ø«Ø§Ø«Û Ú©ÛŒ زپ ÙØ§Ø¦Ù„"
+
+#: editor/import/resource_importer_texture_atlas.cpp
+#, fuzzy
+msgid "Import Mode"
+msgstr "ایکشن منتقل کریں"
+
+#: editor/import/resource_importer_texture_atlas.cpp
+#, fuzzy
+msgid "Crop To Region"
+msgstr "ایکشن منتقل کریں"
+
+#: editor/import/resource_importer_texture_atlas.cpp
+msgid "Trim Alpha Border From Region"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp scene/2d/physics_body_2d.cpp
+msgid "Force"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+msgid "8 Bit"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp main/main.cpp
+#: modules/mono/editor/csharp_project.cpp modules/mono/mono_gd/gd_mono.cpp
+msgid "Mono"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+#, fuzzy
+msgid "Max Rate"
+msgstr ".تمام کا انتخاب"
+
+#: editor/import/resource_importer_wav.cpp
+#, fuzzy
+msgid "Max Rate Hz"
+msgstr ".تمام کا انتخاب"
+
+#: editor/import/resource_importer_wav.cpp
+msgid "Trim"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+#, fuzzy
+msgid "Normalize"
+msgstr ".تمام کا انتخاب"
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+#, fuzzy
+msgid "Loop Mode"
+msgstr "ایکشن منتقل کریں"
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+#, fuzzy
+msgid "Loop Begin"
+msgstr "ایکشن منتقل کریں"
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+#, fuzzy
+msgid "Loop End"
+msgstr "ایکشن منتقل کریں"
+
#: editor/import_defaults_editor.cpp
#, fuzzy
msgid "Select Importer"
@@ -6576,6 +7038,27 @@ msgid "Failed to load resource."
msgstr ""
#: editor/inspector_dock.cpp
+msgid "Property Name Style"
+msgstr ""
+
+#: editor/inspector_dock.cpp scene/gui/color_picker.cpp
+msgid "Raw"
+msgstr ""
+
+#: editor/inspector_dock.cpp
+#, fuzzy
+msgid "Capitalized"
+msgstr ".تمام کا انتخاب"
+
+#: editor/inspector_dock.cpp
+msgid "Localized"
+msgstr ""
+
+#: editor/inspector_dock.cpp
+msgid "Localization not available for current language."
+msgstr ""
+
+#: editor/inspector_dock.cpp
#, fuzzy
msgid "Copy Properties"
msgstr ".تمام کا انتخاب"
@@ -7632,18 +8115,24 @@ msgid "License (Z-A)"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
+msgctxt "Pagination"
msgid "First"
msgstr ""
-#: editor/plugins/asset_library_editor_plugin.cpp scene/gui/control.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgctxt "Pagination"
msgid "Previous"
-msgstr ""
+msgstr "سب سکریپشن بنائیں"
-#: editor/plugins/asset_library_editor_plugin.cpp scene/gui/control.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgctxt "Pagination"
msgid "Next"
-msgstr ""
+msgstr "ایکشن منتقل کریں"
#: editor/plugins/asset_library_editor_plugin.cpp
+msgctxt "Pagination"
msgid "Last"
msgstr ""
@@ -7890,19 +8379,19 @@ msgid ""
"margins."
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Top Left"
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Top Right"
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Bottom Right"
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Bottom Left"
msgstr ""
@@ -8619,6 +9108,18 @@ msgstr ""
msgid "Gradient Edited"
msgstr ""
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+msgid "Swap GradientTexture2D Fill Points"
+msgstr ""
+
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+msgid "Swap Gradient Fill Points"
+msgstr ""
+
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+msgid "Toggle Grid Snap"
+msgstr ""
+
#: editor/plugins/item_list_editor_plugin.cpp
msgid "Item %d"
msgstr ""
@@ -8840,8 +9341,8 @@ msgid ""
"%s"
msgstr ""
-#: editor/plugins/mesh_library_editor_plugin.cpp modules/gridmap/grid_map.cpp
-msgid "Mesh Library"
+#: editor/plugins/mesh_library_editor_plugin.cpp
+msgid "MeshLibrary"
msgstr ""
#: editor/plugins/mesh_library_editor_plugin.cpp
@@ -9839,8 +10340,8 @@ msgstr ""
msgid "Source"
msgstr ""
-#: editor/plugins/script_text_editor.cpp scene/3d/interpolated_camera.cpp
-#: scene/animation/skeleton_ik.cpp
+#: editor/plugins/script_text_editor.cpp platform/uwp/export/export.cpp
+#: scene/3d/interpolated_camera.cpp scene/animation/skeleton_ik.cpp
msgid "Target"
msgstr ""
@@ -10822,7 +11323,9 @@ msgstr ""
#: editor/plugins/sprite_frames_editor_plugin.cpp
#: modules/gltf/gltf_animation.cpp modules/minimp3/audio_stream_mp3.cpp
-#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp scene/2d/path_2d.cpp
+#: modules/minimp3/resource_importer_mp3.cpp
+#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp
+#: modules/stb_vorbis/resource_importer_ogg_vorbis.cpp scene/2d/path_2d.cpp
#: scene/3d/path.cpp scene/resources/animation.cpp scene/resources/material.cpp
msgid "Loop"
msgstr ""
@@ -11729,8 +12232,9 @@ msgstr ""
msgid "Priority"
msgstr ""
-#: editor/plugins/tile_set_editor_plugin.cpp main/main.cpp scene/gui/button.cpp
-#: scene/gui/item_list.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp main/main.cpp
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#: scene/gui/button.cpp scene/gui/item_list.cpp
msgid "Icon"
msgstr ""
@@ -13070,10 +13574,6 @@ msgid ""
msgstr ""
#: editor/project_export.cpp
-msgid "Release"
-msgstr ""
-
-#: editor/project_export.cpp
msgid "Exporting All"
msgstr ""
@@ -14874,6 +15374,7 @@ msgid "Change AudioStreamPlayer3D Emission Angle"
msgstr ""
#: editor/spatial_editor_gizmos.cpp modules/gltf/gltf_node.cpp
+#: platform/osx/export/export.cpp
msgid "Camera"
msgstr ""
@@ -15151,7 +15652,8 @@ msgstr ""
msgid "Use Nvidia Rect Flicker Workaround"
msgstr ""
-#: main/main.cpp platform/uwp/os_uwp.cpp
+#: main/main.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp platform/uwp/os_uwp.cpp
msgid "Display"
msgstr ""
@@ -15206,18 +15708,6 @@ msgstr ""
msgid "Allowed"
msgstr ""
-#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp scene/2d/camera_2d.cpp
-#: scene/2d/light_2d.cpp scene/2d/navigation_polygon.cpp
-#: scene/2d/ray_cast_2d.cpp scene/2d/sprite.cpp scene/2d/y_sort.cpp
-#: scene/3d/audio_stream_player_3d.cpp scene/3d/baked_lightmap.cpp
-#: scene/3d/interpolated_camera.cpp scene/3d/light.cpp
-#: scene/3d/navigation_mesh_instance.cpp scene/3d/ray_cast.cpp
-#: scene/3d/sprite_3d.cpp scene/gui/graph_edit.cpp
-#: scene/gui/rich_text_label.cpp scene/resources/curve.cpp
-#: scene/resources/environment.cpp
-msgid "Enabled"
-msgstr ""
-
#: main/main.cpp
msgid "Intended Usage"
msgstr ""
@@ -15246,13 +15736,14 @@ msgstr ""
msgid "Handheld"
msgstr ""
-#: main/main.cpp
+#: main/main.cpp platform/javascript/export/export.cpp
+#: platform/uwp/export/export.cpp
#, fuzzy
msgid "Orientation"
msgstr "سب سکریپشن بنائیں"
#: main/main.cpp scene/gui/scroll_container.cpp scene/gui/text_edit.cpp
-#: scene/main/scene_tree.cpp
+#: scene/main/scene_tree.cpp scene/register_scene_types.cpp
#, fuzzy
msgid "Common"
msgstr "کمیونٹی"
@@ -15293,7 +15784,7 @@ msgstr ""
#: main/main.cpp
#, fuzzy
-msgid "Frame Delay (msec)"
+msgid "Frame Delay Msec"
msgstr "ایکشن منتقل کریں"
#: main/main.cpp
@@ -15415,11 +15906,6 @@ msgstr ""
msgid "Tooltip Position Offset"
msgstr ""
-#: main/main.cpp modules/mono/editor/csharp_project.cpp
-#: modules/mono/mono_gd/gd_mono.cpp
-msgid "Mono"
-msgstr ""
-
#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp
msgid "Debugger Agent"
msgstr ""
@@ -15965,7 +16451,7 @@ msgstr ""
msgid "Intensity"
msgstr ""
-#: modules/gltf/gltf_light.cpp scene/2d/light_2d.cpp
+#: modules/gltf/gltf_light.cpp scene/2d/light_2d.cpp scene/3d/light.cpp
msgid "Range"
msgstr ""
@@ -16100,11 +16586,6 @@ msgstr ""
msgid "Use Named Skin Binds"
msgstr ""
-#: modules/gltf/gltf_state.cpp scene/3d/physics_joint.cpp
-#, fuzzy
-msgid "Nodes"
-msgstr "نوڈ"
-
#: modules/gltf/gltf_state.cpp
msgid "Buffer Views"
msgstr ""
@@ -16114,14 +16595,6 @@ msgid "Accessors"
msgstr ""
#: modules/gltf/gltf_state.cpp
-msgid "Meshes"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp
-msgid "Materials"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp
#, fuzzy
msgid "Scene Name"
msgstr "سب سکریپشن بنائیں"
@@ -16138,15 +16611,11 @@ msgstr "سب سکریپشن بنائیں"
msgid "Textures"
msgstr ".تمام کا انتخاب"
-#: modules/gltf/gltf_state.cpp
+#: modules/gltf/gltf_state.cpp platform/uwp/export/export.cpp
msgid "Images"
msgstr ""
#: modules/gltf/gltf_state.cpp
-msgid "Skins"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp
msgid "Cameras"
msgstr ""
@@ -16178,10 +16647,14 @@ msgid "Src Image"
msgstr ""
#: modules/gridmap/grid_map.cpp
-msgid "Physics Material"
+msgid "Mesh Library"
msgstr ""
#: modules/gridmap/grid_map.cpp
+msgid "Physics Material"
+msgstr ""
+
+#: modules/gridmap/grid_map.cpp scene/3d/visual_instance.cpp
msgid "Use In Baked Light"
msgstr ""
@@ -16212,6 +16685,7 @@ msgstr ".اینیمیشن کی کیز کو ڈیلیٹ کرو"
#: modules/gridmap/grid_map.cpp scene/2d/collision_object_2d.cpp
#: scene/2d/tile_map.cpp scene/3d/collision_object.cpp scene/3d/soft_body.cpp
+#: scene/resources/material.cpp
msgid "Mask"
msgstr ""
@@ -16401,7 +16875,9 @@ msgid "Ultra Quality Ray Count"
msgstr ""
#: modules/minimp3/audio_stream_mp3.cpp
+#: modules/minimp3/resource_importer_mp3.cpp
#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp
+#: modules/stb_vorbis/resource_importer_ogg_vorbis.cpp
#, fuzzy
msgid "Loop Offset"
msgstr "ایکشن منتقل کریں"
@@ -17477,6 +17953,181 @@ msgid "The package must have at least one '.' separator."
msgstr ""
#: platform/android/export/export_plugin.cpp
+msgid "Use Custom Build"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Export Format"
+msgstr "سب سکریپشن بنائیں"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Keystore"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Debug User"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+msgid "Debug Password"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Release User"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Release Password"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "One Click Deploy"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Clear Previous Install"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp scene/resources/shader.cpp
+msgid "Code"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Min SDK"
+msgstr "سب سکریپشن بنائیں"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Target SDK"
+msgstr ".اینیمیشن کی کیز کو ڈیلیٹ کرو"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Package"
+msgstr ".تمام کا انتخاب"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Unique Name"
+msgstr "ریموٹ "
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Signed"
+msgstr ".تمام کا انتخاب"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Classify As Game"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Retain Data On Uninstall"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Exclude From Recents"
+msgstr ".اینیمیشن کی کیز کو ڈیلیٹ کرو"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Graphics"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "OpenGL Debug"
+msgstr "سب سکریپشن بنائیں"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "XR Features"
+msgstr ".تمام کا انتخاب"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "XR Mode"
+msgstr "ایکشن منتقل کریں"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Hand Tracking"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Hand Tracking Frequency"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Passthrough"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Immersive Mode"
+msgstr "ایکشن منتقل کریں"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Support Small"
+msgstr ".سپورٹ"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Support Normal"
+msgstr ".سپورٹ"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Support Large"
+msgstr ".سپورٹ"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Support Xlarge"
+msgstr ".سپورٹ"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "User Data Backup"
+msgstr "سب سکریپشن بنائیں"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Allow"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Command Line"
+msgstr "کمیونٹی"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Extra Args"
+msgstr "سب سکریپشن بنائیں"
+
+#: platform/android/export/export_plugin.cpp
+msgid "APK Expansion"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Salt"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Public Key"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Permissions"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Custom Permissions"
+msgstr ".تمام کا انتخاب"
+
+#: platform/android/export/export_plugin.cpp
msgid "Select device from the list"
msgstr ""
@@ -17767,6 +18418,171 @@ msgid "The character '%s' is not allowed in Identifier."
msgstr ""
#: platform/iphone/export/export.cpp
+msgid "App Store Team ID"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Provisioning Profile UUID Debug"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Code Sign Identity Debug"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Export Method Debug"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Provisioning Profile UUID Release"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Code Sign Identity Release"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Export Method Release"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Targeted Device Family"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Info"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Identifier"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Signature"
+msgstr ".تمام کا انتخاب"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Short Version"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/windows/export/export.cpp
+msgid "Copyright"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Capabilities"
+msgstr ".تمام کا انتخاب"
+
+#: platform/iphone/export/export.cpp
+msgid "Access Wi-Fi"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Push Notifications"
+msgstr "مستقل"
+
+#: platform/iphone/export/export.cpp scene/3d/baked_lightmap.cpp
+#, fuzzy
+msgid "User Data"
+msgstr "سب سکریپشن بنائیں"
+
+#: platform/iphone/export/export.cpp
+msgid "Accessible From Files App"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Accessible From Itunes Sharing"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Privacy"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Camera Usage Description"
+msgstr "سب سکریپشن بنائیں"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Microphone Usage Description"
+msgstr "سب سکریپشن بنائیں"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Photolibrary Usage Description"
+msgstr "سب سکریپشن بنائیں"
+
+#: platform/iphone/export/export.cpp
+msgid "iPhone 120 X 120"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPhone 180 X 180"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 76 X 76"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 152 X 152"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 167 X 167"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "App Store 1024 X 1024"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Spotlight 40 X 40"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Spotlight 80 X 80"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Storyboard"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Use Launch Screen Storyboard"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Image Scale Mode"
+msgstr "ایکشن منتقل کریں"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Custom Image @2x"
+msgstr "ایکشن منتقل کریں"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Custom Image @3x"
+msgstr "ایکشن منتقل کریں"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Use Custom BG Color"
+msgstr "ایکشن منتقل کریں"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Custom BG Color"
+msgstr "ایکشن منتقل کریں"
+
+#: platform/iphone/export/export.cpp
msgid "App Store Team ID not specified - cannot configure the project."
msgstr ""
@@ -17806,6 +18622,80 @@ msgstr "سب سکریپشن بنائیں"
#: platform/javascript/export/export.cpp
#, fuzzy
+msgid "Variant"
+msgstr ".تمام کا انتخاب"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Export Type"
+msgstr ".سپورٹ"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "VRAM Texture Compression"
+msgstr "سب سکریپشن بنائیں"
+
+#: platform/javascript/export/export.cpp
+msgid "For Desktop"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "For Mobile"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Html"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Export Icon"
+msgstr ".سپورٹ"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Custom Html Shell"
+msgstr "ایکشن منتقل کریں"
+
+#: platform/javascript/export/export.cpp
+msgid "Head Include"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Canvas Resize Policy"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Focus Canvas On Start"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Experimental Virtual Keyboard"
+msgstr "سب سکریپشن بنائیں"
+
+#: platform/javascript/export/export.cpp
+msgid "Progressive Web App"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Offline Page"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 144 X 144"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 180 X 180"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 512 X 512"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
msgid "Could not read HTML shell:"
msgstr "سب سکریپشن بنائیں"
@@ -17911,6 +18801,193 @@ msgid "Unknown object type."
msgstr ""
#: platform/osx/export/export.cpp
+msgid "App Category"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "High Res"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Location Usage Description"
+msgstr "سب سکریپشن بنائیں"
+
+#: platform/osx/export/export.cpp
+msgid "Address Book Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Calendar Usage Description"
+msgstr "سب سکریپشن بنائیں"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Photos Library Usage Description"
+msgstr "سب سکریپشن بنائیں"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Desktop Folder Usage Description"
+msgstr "سب سکریپشن بنائیں"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Documents Folder Usage Description"
+msgstr "سب سکریپشن بنائیں"
+
+#: platform/osx/export/export.cpp
+msgid "Downloads Folder Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Network Volumes Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Removable Volumes Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#, fuzzy
+msgid "Codesign"
+msgstr "نوڈ"
+
+#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
+#: platform/windows/export/export.cpp
+msgid "Identity"
+msgstr ""
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+msgid "Timestamp"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Hardened Runtime"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Replace Existing Signature"
+msgstr "سب سکریپشن بنائیں"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Entitlements"
+msgstr "سب سکریپشن بنائیں"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Custom File"
+msgstr "ایکشن منتقل کریں"
+
+#: platform/osx/export/export.cpp
+msgid "Allow JIT Code Execution"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Allow Unsigned Executable Memory"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Allow Dyld Environment Variables"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Disable Library Validation"
+msgstr ".Ù†ÙˆÙ¹ÙØ¦Ø± Ú©Û’ اکسٹنٹ Ú©Ùˆ تبدیل کیجیۓ"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Audio Input"
+msgstr ".تمام کا انتخاب"
+
+#: platform/osx/export/export.cpp
+msgid "Address Book"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Calendars"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Photos Library"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Apple Events"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Debugging"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "App Sandbox"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Network Server"
+msgstr ".تمام کا انتخاب"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Network Client"
+msgstr ".تمام کا انتخاب"
+
+#: platform/osx/export/export.cpp
+msgid "Device Usb"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Device Bluetooth"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Files Downloads"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Files Pictures"
+msgstr "سب سکریپشن بنائیں"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Files Music"
+msgstr "Ø§Ø«Ø§Ø«Û Ú©ÛŒ زپ ÙØ§Ø¦Ù„"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Files Movies"
+msgstr "سب سکریپشن بنائیں"
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#, fuzzy
+msgid "Custom Options"
+msgstr "سب سکریپشن بنائیں"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Notarization"
+msgstr "سب سکریپشن بنائیں"
+
+#: platform/osx/export/export.cpp
+msgid "Apple ID Name"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Apple ID Password"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Apple Team ID"
+msgstr ""
+
+#: platform/osx/export/export.cpp
msgid ""
"Note: The notarization process generally takes less than an hour. When the "
"process is completed, you'll receive an email."
@@ -18100,6 +19177,130 @@ msgid "Force Builtin Codesign"
msgstr ""
#: platform/uwp/export/export.cpp
+msgid "Architecture"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Display Name"
+msgstr "ایکشن منتقل کریں"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Short Name"
+msgstr ".Ù†ÙˆÙ¹ÙØ¦Ø± Ú©Û’ اکسٹنٹ Ú©Ùˆ تبدیل کیجیۓ"
+
+#: platform/uwp/export/export.cpp
+msgid "Publisher"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Publisher Display Name"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Product Guid"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Publisher Guid"
+msgstr ".تمام کا انتخاب"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Signing"
+msgstr ".تمام کا انتخاب"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Certificate"
+msgstr "سب سکریپشن بنائیں"
+
+#: platform/uwp/export/export.cpp
+msgid "Algorithm"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Major"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Minor"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Build"
+msgstr "ایکشن منتقل کریں"
+
+#: platform/uwp/export/export.cpp
+msgid "Revision"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Landscape"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Portrait"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Landscape Flipped"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Portrait Flipped"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Store Logo"
+msgstr "ایکشن منتقل کریں"
+
+#: platform/uwp/export/export.cpp
+msgid "Square 44 X 44 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 71 X 71 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 150 X 150 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 310 X 310 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Wide 310 X 150 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Splash Screen"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Tiles"
+msgstr "Ø§Ø«Ø§Ø«Û Ú©ÛŒ زپ ÙØ§Ø¦Ù„"
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Square 150 X 150"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Wide 310 X 150"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Square 310 X 310"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
msgid "Invalid package short name."
msgstr ""
@@ -18165,11 +19366,46 @@ msgid "Debug Certificate"
msgstr ""
#: platform/uwp/export/export.cpp
-msgid "Debug Password"
+msgid "Debug Algorithm"
msgstr ""
-#: platform/uwp/export/export.cpp
-msgid "Debug Algorithm"
+#: platform/windows/export/export.cpp
+msgid "Identity Type"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Timestamp Server URL"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Digest Algorithm"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "File Version"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Product Version"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Company Name"
+msgstr "ریموٹ "
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Product Name"
+msgstr ".تمام کا انتخاب"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "File Description"
+msgstr "سب سکریپشن بنائیں"
+
+#: platform/windows/export/export.cpp
+msgid "Trademarks"
msgstr ""
#: platform/windows/export/export.cpp
@@ -18240,12 +19476,14 @@ msgstr ""
msgid "Centered"
msgstr ".اینیمیشن کی کیز کو ڈیلیٹ کرو"
-#: scene/2d/animated_sprite.cpp scene/2d/camera_2d.cpp scene/2d/light_2d.cpp
+#: scene/2d/animated_sprite.cpp scene/2d/camera_2d.cpp
+#: scene/2d/cpu_particles_2d.cpp scene/2d/light_2d.cpp
#: scene/2d/parallax_background.cpp scene/2d/parallax_layer.cpp
#: scene/2d/path_2d.cpp scene/2d/polygon_2d.cpp scene/2d/sprite.cpp
-#: scene/3d/path.cpp scene/3d/physics_body.cpp scene/3d/sprite_3d.cpp
-#: scene/gui/graph_node.cpp scene/gui/rich_text_effect.cpp
-#: scene/main/canvas_layer.cpp scene/resources/material.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/path.cpp scene/3d/physics_body.cpp
+#: scene/3d/sprite_3d.cpp scene/gui/graph_node.cpp
+#: scene/gui/rich_text_effect.cpp scene/main/canvas_layer.cpp
+#: scene/resources/material.cpp scene/resources/particles_material.cpp
#: scene/resources/style_box.cpp
msgid "Offset"
msgstr ""
@@ -18311,11 +19549,6 @@ msgstr "ایکشن منتقل کریں"
msgid "Override"
msgstr ""
-#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
-#: scene/audio/audio_stream_player.cpp scene/gui/video_player.cpp
-msgid "Stream"
-msgstr ""
-
#: scene/2d/audio_stream_player_2d.cpp scene/audio/audio_stream_player.cpp
#: scene/gui/video_player.cpp servers/audio/effects/audio_effect_amplify.cpp
msgid "Volume dB"
@@ -18340,12 +19573,12 @@ msgid "Stream Paused"
msgstr ""
#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
-#: scene/3d/reflection_probe.cpp scene/3d/visual_instance.cpp
-#: scene/resources/material.cpp
+#: scene/3d/light.cpp scene/3d/reflection_probe.cpp
+#: scene/3d/visual_instance.cpp scene/resources/material.cpp
msgid "Max Distance"
msgstr ""
-#: scene/2d/audio_stream_player_2d.cpp
+#: scene/2d/audio_stream_player_2d.cpp scene/3d/light.cpp
#, fuzzy
msgid "Attenuation"
msgstr "گنتی"
@@ -18398,6 +19631,22 @@ msgstr "ایکشن منتقل کریں"
msgid "Limit"
msgstr ""
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/style_box.cpp
+msgid "Left"
+msgstr ""
+
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/style_box.cpp
+msgid "Right"
+msgstr ""
+
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/dynamic_font.cpp scene/resources/style_box.cpp
+#, fuzzy
+msgid "Bottom"
+msgstr ".تمام کا انتخاب"
+
#: scene/2d/camera_2d.cpp
msgid "Smoothed"
msgstr ""
@@ -18600,12 +19849,6 @@ msgstr ""
msgid "Emitting"
msgstr ".تمام کا انتخاب"
-#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp scene/3d/area.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
-#: scene/resources/environment.cpp
-msgid "Amount"
-msgstr ""
-
#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp
#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
msgid "Lifetime"
@@ -18666,18 +19909,13 @@ msgstr ""
#: scene/2d/mesh_instance_2d.cpp scene/2d/multimesh_instance_2d.cpp
#: scene/2d/particles_2d.cpp scene/2d/polygon_2d.cpp scene/2d/sprite.cpp
#: scene/3d/sprite_3d.cpp scene/gui/nine_patch_rect.cpp
-#: scene/gui/texture_rect.cpp scene/resources/sky.cpp
-#: scene/resources/style_box.cpp scene/resources/visual_shader_nodes.cpp
+#: scene/gui/texture_rect.cpp scene/resources/material.cpp
+#: scene/resources/sky.cpp scene/resources/style_box.cpp
+#: scene/resources/visual_shader_nodes.cpp
#, fuzzy
msgid "Texture"
msgstr ".تمام کا انتخاب"
-#: scene/2d/cpu_particles_2d.cpp scene/2d/mesh_instance_2d.cpp
-#: scene/2d/multimesh_instance_2d.cpp scene/2d/particles_2d.cpp
-#: scene/2d/sprite.cpp scene/resources/style_box.cpp
-msgid "Normal Map"
-msgstr ""
-
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
msgid "Emission Shape"
@@ -18697,9 +19935,8 @@ msgid "Normals"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/3d/sprite_3d.cpp scene/resources/material.cpp
-#: scene/resources/particles_material.cpp scene/resources/texture.cpp
-msgid "Flags"
+#: scene/resources/particles_material.cpp
+msgid "Align Y"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
@@ -18720,6 +19957,11 @@ msgid "Initial Velocity"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Velocity Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp servers/physics_2d_server.cpp
#: servers/physics_server.cpp
msgid "Angular Velocity"
@@ -18727,6 +19969,12 @@ msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Velocity Curve"
+msgstr ".تمام کا انتخاب"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
msgid "Orbit Velocity"
msgstr ""
@@ -18737,6 +19985,22 @@ msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+msgid "Accel"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Accel Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Accel Curve"
+msgstr "ایکشن منتقل کریں"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
msgid "Radial Accel"
msgstr ""
@@ -18746,19 +20010,54 @@ msgid "Tangential Accel"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/2d/joints_2d.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/vehicle_body.cpp
-#: scene/resources/particles_material.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/physics_joint.cpp
+#: scene/3d/vehicle_body.cpp scene/resources/particles_material.cpp
#: servers/audio/effects/audio_effect_reverb.cpp
msgid "Damping"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+msgid "Damping Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Damping Curve"
+msgstr "ایکشن منتقل کریں"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp scene/3d/light.cpp
+#: scene/resources/particles_material.cpp
msgid "Angle"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+msgid "Angle Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Angle Curve"
+msgstr "ایکشن منتقل کریں"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#, fuzzy
+msgid "Scale Amount"
+msgstr ".تمام کا انتخاب"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+msgid "Scale Amount Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+msgid "Scale Amount Curve"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
msgid "Color Ramp"
msgstr ""
@@ -18773,6 +20072,47 @@ msgstr ""
msgid "Hue Variation"
msgstr ".تمام کا انتخاب"
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Variation"
+msgstr ".تمام کا انتخاب"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Variation Random"
+msgstr ".تمام کا انتخاب"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Variation Curve"
+msgstr ".تمام کا انتخاب"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Speed Random"
+msgstr "ایکشن منتقل کریں"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Speed Curve"
+msgstr ".تمام کا انتخاب"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Offset Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Offset Curve"
+msgstr "ایکشن منتقل کریں"
+
#: scene/2d/joints_2d.cpp
msgid "Node A and Node B must be PhysicsBody2Ds"
msgstr ""
@@ -18804,6 +20144,7 @@ msgid "Node B"
msgstr "نوڈ"
#: scene/2d/joints_2d.cpp scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp
+#: scene/3d/light.cpp scene/3d/physics_joint.cpp
#: scene/resources/environment.cpp
msgid "Bias"
msgstr ""
@@ -18813,7 +20154,7 @@ msgstr ""
msgid "Disable Collision"
msgstr ".Ù†ÙˆÙ¹ÙØ¦Ø± Ú©Û’ اکسٹنٹ Ú©Ùˆ تبدیل کیجیۓ"
-#: scene/2d/joints_2d.cpp
+#: scene/2d/joints_2d.cpp scene/3d/physics_joint.cpp
msgid "Softness"
msgstr ""
@@ -18830,7 +20171,7 @@ msgstr ""
msgid "Rest Length"
msgstr ""
-#: scene/2d/joints_2d.cpp scene/3d/vehicle_body.cpp
+#: scene/2d/joints_2d.cpp scene/3d/physics_joint.cpp scene/3d/vehicle_body.cpp
msgid "Stiffness"
msgstr ""
@@ -18850,7 +20191,7 @@ msgid "Texture Scale"
msgstr ""
#: scene/2d/light_2d.cpp scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp
-#: scene/resources/environment.cpp scene/resources/sky.cpp
+#: scene/3d/light.cpp scene/resources/environment.cpp scene/resources/sky.cpp
msgid "Energy"
msgstr ""
@@ -18887,12 +20228,6 @@ msgstr ""
msgid "Gradient Length"
msgstr ".Ù†ÙˆÙ¹ÙØ¦Ø± Ú©Û’ اکسٹنٹ Ú©Ùˆ تبدیل کیجیۓ"
-#: scene/2d/light_2d.cpp scene/gui/control.cpp
-#: scene/resources/navigation_mesh.cpp
-#, fuzzy
-msgid "Filter"
-msgstr "سب سکریپشن بنائیں"
-
#: scene/2d/light_2d.cpp
#, fuzzy
msgid "Filter Smooth"
@@ -19277,10 +20612,6 @@ msgid "Applied Forces"
msgstr ""
#: scene/2d/physics_body_2d.cpp
-msgid "Force"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp
msgid "Torque"
msgstr ""
@@ -19293,7 +20624,7 @@ msgid "Sync To Physics"
msgstr ""
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-msgid "Moving platform"
+msgid "Moving Platform"
msgstr ""
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
@@ -19302,7 +20633,7 @@ msgstr ""
#: scene/2d/physics_body_2d.cpp scene/2d/touch_screen_button.cpp
#: scene/3d/physics_body.cpp scene/gui/texture_button.cpp
-#: scene/resources/line_shape_2d.cpp
+#: scene/resources/line_shape_2d.cpp scene/resources/material.cpp
msgid "Normal"
msgstr ""
@@ -19525,6 +20856,32 @@ msgid ""
"as parent."
msgstr ""
+#: scene/2d/visibility_notifier_2d.cpp scene/3d/visibility_notifier.cpp
+#, fuzzy
+msgid "Pause Animations"
+msgstr "سب سکریپشن بنائیں"
+
+#: scene/2d/visibility_notifier_2d.cpp scene/3d/visibility_notifier.cpp
+msgid "Freeze Bodies"
+msgstr ""
+
+#: scene/2d/visibility_notifier_2d.cpp
+msgid "Pause Particles"
+msgstr ""
+
+#: scene/2d/visibility_notifier_2d.cpp
+msgid "Pause Animated Sprites"
+msgstr ""
+
+#: scene/2d/visibility_notifier_2d.cpp
+#, fuzzy
+msgid "Process Parent"
+msgstr "ایکشن منتقل کریں"
+
+#: scene/2d/visibility_notifier_2d.cpp
+msgid "Physics Process Parent"
+msgstr ""
+
#: scene/3d/area.cpp
msgid "Reverb Bus"
msgstr ""
@@ -19618,6 +20975,7 @@ msgid "Attenuation Filter"
msgstr ""
#: scene/3d/audio_stream_player_3d.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
#: servers/audio/effects/audio_effect_filter.cpp
msgid "Cutoff Hz"
msgstr ""
@@ -19658,11 +21016,6 @@ msgid "Octree"
msgstr ""
#: scene/3d/baked_lightmap.cpp
-#, fuzzy
-msgid "User Data"
-msgstr "سب سکریپشن بنائیں"
-
-#: scene/3d/baked_lightmap.cpp
msgid "Finding meshes and lights"
msgstr ""
@@ -19904,6 +21257,16 @@ msgid "Ring Axis"
msgstr ""
#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Rotate Y"
+msgstr "مستقل"
+
+#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Disable Z"
+msgstr ".Ù†ÙˆÙ¹ÙØ¦Ø± Ú©Û’ اکسٹنٹ Ú©Ùˆ تبدیل کیجیۓ"
+
+#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
msgid "Flatness"
msgstr ""
@@ -19940,15 +21303,11 @@ msgstr ""
msgid "Dynamic Range"
msgstr ""
-#: scene/3d/gi_probe.cpp
+#: scene/3d/gi_probe.cpp scene/3d/light.cpp
msgid "Normal Bias"
msgstr ""
#: scene/3d/gi_probe.cpp
-msgid "Compress"
-msgstr ""
-
-#: scene/3d/gi_probe.cpp
msgid "Plotting Meshes"
msgstr ""
@@ -19974,15 +21333,28 @@ msgid "Subdiv"
msgstr ""
#: scene/3d/light.cpp
+msgid "Indirect Energy"
+msgstr ""
+
+#: scene/3d/light.cpp
msgid "Negative"
msgstr ""
#: scene/3d/light.cpp
#, fuzzy
+msgid "Specular"
+msgstr "ایکشن منتقل کریں"
+
+#: scene/3d/light.cpp
+#, fuzzy
msgid "Bake Mode"
msgstr "ایکشن منتقل کریں"
#: scene/3d/light.cpp
+msgid "Contact"
+msgstr ""
+
+#: scene/3d/light.cpp
#, fuzzy
msgid "Reverse Cull Face"
msgstr "ریموٹ "
@@ -19993,11 +21365,28 @@ msgid "Directional Shadow"
msgstr "سب سکریپشن بنائیں"
#: scene/3d/light.cpp
+msgid "Split 1"
+msgstr ""
+
+#: scene/3d/light.cpp
+msgid "Split 2"
+msgstr ""
+
+#: scene/3d/light.cpp
+msgid "Split 3"
+msgstr ""
+
+#: scene/3d/light.cpp
msgid "Blend Splits"
msgstr ""
#: scene/3d/light.cpp
#, fuzzy
+msgid "Bias Split Scale"
+msgstr "سب سکریپشن بنائیں"
+
+#: scene/3d/light.cpp
+#, fuzzy
msgid "Depth Range"
msgstr "ایکشن منتقل کریں"
@@ -20023,6 +21412,11 @@ msgstr ""
msgid "Spot"
msgstr ""
+#: scene/3d/light.cpp
+#, fuzzy
+msgid "Angle Attenuation"
+msgstr "گنتی"
+
#: scene/3d/mesh_instance.cpp
msgid "Software Skinning"
msgstr ""
@@ -20141,6 +21535,60 @@ msgid "Axis Lock"
msgstr ""
#: scene/3d/physics_body.cpp
+msgid "Linear X"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Linear Y"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Linear Z"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Angular X"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Angular Y"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Angular Z"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Motion X"
+msgstr "ایکشن منتقل کریں"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Motion Y"
+msgstr "ایکشن منتقل کریں"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Motion Z"
+msgstr "ایکشن منتقل کریں"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Move Lock X"
+msgstr "ایکشن منتقل کریں"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Move Lock Y"
+msgstr "ایکشن منتقل کریں"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Move Lock Z"
+msgstr "ایکشن منتقل کریں"
+
+#: scene/3d/physics_body.cpp
msgid "Body Offset"
msgstr ""
@@ -20174,6 +21622,14 @@ msgid "Exclude Nodes"
msgstr ".اینیمیشن کی کیز کو ڈیلیٹ کرو"
#: scene/3d/physics_joint.cpp
+msgid "Params"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Impulse Clamp"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit"
msgstr ""
@@ -20185,6 +21641,53 @@ msgstr ""
msgid "Lower"
msgstr ""
+#: scene/3d/physics_joint.cpp scene/3d/vehicle_body.cpp
+#, fuzzy
+msgid "Relaxation"
+msgstr ".تمام کا انتخاب"
+
+#: scene/3d/physics_joint.cpp
+msgid "Motor"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Target Velocity"
+msgstr ".اینیمیشن کی کیز کو ڈیلیٹ کرو"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Max Impulse"
+msgstr ".تمام کا انتخاب"
+
+#: scene/3d/physics_joint.cpp
+msgid "Linear Limit"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Upper Distance"
+msgstr "ایک مینو منظر چنیں"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Lower Distance"
+msgstr "ایک مینو منظر چنیں"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Restitution"
+msgstr "سب سکریپشن بنائیں"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motion"
+msgstr "ایکشن منتقل کریں"
+
+#: scene/3d/physics_joint.cpp
+msgid "Linear Ortho"
+msgstr ""
+
#: scene/3d/physics_joint.cpp
msgid "Upper Angle"
msgstr ""
@@ -20194,6 +21697,15 @@ msgid "Lower Angle"
msgstr ""
#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Angular Motion"
+msgstr "گنتی"
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Ortho"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
msgid "Swing Span"
msgstr ""
@@ -20202,17 +21714,89 @@ msgid "Twist Span"
msgstr ""
#: scene/3d/physics_joint.cpp
+msgid "Linear Limit X"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Linear Motor X"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Force Limit"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Linear Spring X"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Equilibrium Point"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit X"
msgstr ""
#: scene/3d/physics_joint.cpp
+msgid "Erp"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Motor X"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Spring X"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Linear Limit Y"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Linear Motor Y"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Linear Spring Y"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit Y"
msgstr ""
#: scene/3d/physics_joint.cpp
+msgid "Angular Motor Y"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Spring Y"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Linear Limit Z"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Linear Motor Z"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Linear Spring Z"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit Z"
msgstr ""
+#: scene/3d/physics_joint.cpp
+msgid "Angular Motor Z"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Spring Z"
+msgstr ""
+
#: scene/3d/portal.cpp
msgid "The RoomManager should not be a child or grandchild of a Portal."
msgstr ""
@@ -20325,7 +21909,7 @@ msgstr ""
msgid "Use Default Simplify"
msgstr ""
-#: scene/3d/room.cpp
+#: scene/3d/room.cpp scene/3d/room_manager.cpp
msgid "Room Simplify"
msgstr ""
@@ -20363,6 +21947,13 @@ msgstr ""
msgid "Main"
msgstr ""
+#: scene/3d/room_manager.cpp scene/animation/animation_player.cpp
+#: scene/animation/animation_tree.cpp scene/animation/animation_tree_player.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+#, fuzzy
+msgid "Active"
+msgstr "ایکشن منتقل کریں"
+
#: scene/3d/room_manager.cpp
msgid "Roomlist"
msgstr ""
@@ -20386,6 +21977,49 @@ msgid "Gameplay"
msgstr ""
#: scene/3d/room_manager.cpp
+msgid "Gameplay Monitor"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "Use Secondary PVS"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Merge Meshes"
+msgstr "سب سکریپشن بنائیں"
+
+#: scene/3d/room_manager.cpp
+msgid "Show Margins"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "Debug Sprawl"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "Overlap Warning Threshold"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Preview Camera"
+msgstr ".تمام کا انتخاب"
+
+#: scene/3d/room_manager.cpp
+msgid "Portal Depth Limit"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Default Portal Margin"
+msgstr ".Ù†ÙˆÙ¹ÙØ¦Ø± Ú©Û’ اکسٹنٹ Ú©Ùˆ تبدیل کیجیۓ"
+
+#: scene/3d/room_manager.cpp
+msgid "Roaming Expansion Margin"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
msgid ""
"RoomList path is invalid.\n"
"Please check the RoomList branch has been assigned in the RoomManager."
@@ -20506,6 +22140,20 @@ msgstr ""
msgid "Billboard"
msgstr ""
+#: scene/3d/sprite_3d.cpp scene/resources/material.cpp
+#, fuzzy
+msgid "Transparent"
+msgstr "سب سکریپشن بنائیں"
+
+#: scene/3d/sprite_3d.cpp
+#, fuzzy
+msgid "Shaded"
+msgstr ".Ù†ÙˆÙ¹ÙØ¦Ø± Ú©Û’ اکسٹنٹ Ú©Ùˆ تبدیل کیجیۓ"
+
+#: scene/3d/sprite_3d.cpp
+msgid "Double Sided"
+msgstr ""
+
#: scene/3d/sprite_3d.cpp
msgid "Alpha Cut"
msgstr ""
@@ -20572,11 +22220,6 @@ msgstr ""
msgid "Max Force"
msgstr ""
-#: scene/3d/vehicle_body.cpp
-#, fuzzy
-msgid "Relaxation"
-msgstr ".تمام کا انتخاب"
-
#: scene/3d/visibility_notifier.cpp
msgid "AABB"
msgstr ""
@@ -20702,7 +22345,7 @@ msgid "Fadeout Time"
msgstr ""
#: scene/animation/animation_blend_tree.cpp
-msgid "autorestart_"
+msgid "Auto Restart"
msgstr ""
#: scene/animation/animation_blend_tree.cpp
@@ -20781,13 +22424,6 @@ msgstr "سب سکریپشن بنائیں"
msgid "Default Blend Time"
msgstr ".Ù†ÙˆÙ¹ÙØ¦Ø± Ú©Û’ اکسٹنٹ Ú©Ùˆ تبدیل کیجیۓ"
-#: scene/animation/animation_player.cpp scene/animation/animation_tree.cpp
-#: scene/animation/animation_tree_player.cpp
-#: servers/audio/effects/audio_effect_delay.cpp
-#, fuzzy
-msgid "Active"
-msgstr "ایکشن منتقل کریں"
-
#: scene/animation/animation_player.cpp
msgid "Method Call Mode"
msgstr ""
@@ -20904,10 +22540,6 @@ msgstr ".اینیمیشن کی کیز کو ڈیلیٹ کرو"
msgid "Max Iterations"
msgstr ".تمام کا انتخاب"
-#: scene/animation/tween.cpp scene/resources/texture.cpp
-msgid "Repeat"
-msgstr ""
-
#: scene/animation/tween.cpp
msgid "Playback Process Mode"
msgstr ""
@@ -20935,20 +22567,6 @@ msgstr "ایکشن منتقل کریں"
msgid "Alignment"
msgstr ""
-#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
-#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
-#: scene/resources/style_box.cpp
-#, fuzzy
-msgid "Horizontal"
-msgstr ".تمام کا انتخاب"
-
-#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
-#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
-#: scene/resources/style_box.cpp
-#, fuzzy
-msgid "Vertical"
-msgstr "سب سکریپشن بنائیں"
-
#: scene/gui/base_button.cpp
msgid "Shortcut In Tooltip"
msgstr ""
@@ -21042,10 +22660,6 @@ msgid "HSV"
msgstr ""
#: scene/gui/color_picker.cpp
-msgid "Raw"
-msgstr ""
-
-#: scene/gui/color_picker.cpp
msgid "Switch between hexadecimal and code values."
msgstr ""
@@ -21102,6 +22716,30 @@ msgid "Focus"
msgstr ""
#: scene/gui/control.cpp
+msgid "Neighbour Left"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Neighbour Top"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Neighbour Right"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Neighbour Bottom"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Next"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Previous"
+msgstr ""
+
+#: scene/gui/control.cpp
msgid "Mouse"
msgstr ""
@@ -21137,7 +22775,7 @@ msgid "Dialog"
msgstr ""
#: scene/gui/dialogs.cpp
-msgid "Hide On Ok"
+msgid "Hide On OK"
msgstr ""
#: scene/gui/dialogs.cpp scene/gui/label.cpp
@@ -21227,7 +22865,7 @@ msgid "Timers"
msgstr ""
#: scene/gui/item_list.cpp scene/gui/popup_menu.cpp scene/gui/tree.cpp
-msgid "Incremental Search Max Interval (msec)"
+msgid "Incremental Search Max Interval Msec"
msgstr ""
#: scene/gui/item_list.cpp scene/gui/tree.cpp
@@ -21758,6 +23396,26 @@ msgstr ".اینیمیشن کی کیز کو ڈیلیٹ کرو"
msgid "Nine Patch Stretch"
msgstr "سب سکریپشن بنائیں"
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Left"
+msgstr "ایکشن منتقل کریں"
+
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Top"
+msgstr "ایکشن منتقل کریں"
+
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Right"
+msgstr "ایکشن منتقل کریں"
+
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Bottom"
+msgstr "ایکشن منتقل کریں"
+
#: scene/gui/tree.cpp
msgid "Custom Minimum Height"
msgstr ""
@@ -21793,7 +23451,7 @@ msgid "Paused"
msgstr ""
#: scene/gui/video_player.cpp
-msgid "Buffering (msec)"
+msgid "Buffering Msec"
msgstr ""
#: scene/gui/video_player.cpp
@@ -22115,6 +23773,22 @@ msgid "Shadow Atlas"
msgstr ""
#: scene/main/viewport.cpp
+msgid "Quad 0"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 1"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 2"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 3"
+msgstr ""
+
+#: scene/main/viewport.cpp
msgid "Canvas Transform"
msgstr ""
@@ -22128,6 +23802,10 @@ msgid "Tooltip Delay (sec)"
msgstr ""
#: scene/register_scene_types.cpp
+msgid "Swap OK Cancel"
+msgstr ""
+
+#: scene/register_scene_types.cpp
msgid "Use hiDPI"
msgstr ""
@@ -22142,21 +23820,6 @@ msgid "Custom Font"
msgstr "ایکشن منتقل کریں"
#: scene/resources/audio_stream_sample.cpp
-#, fuzzy
-msgid "Loop Mode"
-msgstr "ایکشن منتقل کریں"
-
-#: scene/resources/audio_stream_sample.cpp
-#, fuzzy
-msgid "Loop Begin"
-msgstr "ایکشن منتقل کریں"
-
-#: scene/resources/audio_stream_sample.cpp
-#, fuzzy
-msgid "Loop End"
-msgstr "ایکشن منتقل کریں"
-
-#: scene/resources/audio_stream_sample.cpp
#: servers/audio/effects/audio_stream_generator.cpp servers/audio_server.cpp
msgid "Mix Rate"
msgstr ""
@@ -22210,6 +23873,15 @@ msgid "Extra Spacing"
msgstr "سب سکریپشن بنائیں"
#: scene/resources/dynamic_font.cpp
+msgid "Char"
+msgstr ""
+
+#: scene/resources/dynamic_font.cpp scene/resources/world.cpp
+#: scene/resources/world_2d.cpp
+msgid "Space"
+msgstr ""
+
+#: scene/resources/dynamic_font.cpp
msgid "Font"
msgstr ""
@@ -22426,6 +24098,42 @@ msgid "Glow"
msgstr ""
#: scene/resources/environment.cpp
+msgid "Levels"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "1"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "2"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "3"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "4"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "5"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "6"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "7"
+msgstr ""
+
+#: scene/resources/environment.cpp
msgid "Bloom"
msgstr ""
@@ -22510,9 +24218,66 @@ msgid "Next Pass"
msgstr "ایکشن منتقل کریں"
#: scene/resources/material.cpp
+msgid "Use Shadow To Opacity"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Unshaded"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Vertex Lighting"
+msgstr "سب سکریپشن بنائیں"
+
+#: scene/resources/material.cpp
+msgid "No Depth Test"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Use Point Size"
+msgstr "سب سکریپشن بنائیں"
+
+#: scene/resources/material.cpp
+msgid "World Triplanar"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Fixed Size"
+msgstr "سب سکریپشن بنائیں"
+
+#: scene/resources/material.cpp
+msgid "Albedo Tex Force sRGB"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Do Not Receive Shadows"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Disable Ambient Light"
+msgstr ".Ù†ÙˆÙ¹ÙØ¦Ø± Ú©Û’ اکسٹنٹ Ú©Ùˆ تبدیل کیجیۓ"
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Ensure Correct Normals"
+msgstr "سب سکریپشن بنائیں"
+
+#: scene/resources/material.cpp
msgid "Vertex Color"
msgstr ""
+#: scene/resources/material.cpp
+msgid "Use As Albedo"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Is sRGB"
+msgstr ""
+
#: scene/resources/material.cpp servers/visual_server.cpp
msgid "Parameters"
msgstr ""
@@ -22547,6 +24312,11 @@ msgid "Billboard Mode"
msgstr "ایکشن منتقل کریں"
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Billboard Keep Scale"
+msgstr "ایکشن منتقل کریں"
+
+#: scene/resources/material.cpp
msgid "Grow"
msgstr ""
@@ -22556,6 +24326,10 @@ msgid "Grow Amount"
msgstr ".تمام کا انتخاب"
#: scene/resources/material.cpp
+msgid "Use Alpha Scissor"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Alpha Scissor Threshold"
msgstr ""
@@ -22586,10 +24360,20 @@ msgid "Metallic Specular"
msgstr ""
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Metallic Texture"
+msgstr ".تمام کا انتخاب"
+
+#: scene/resources/material.cpp
msgid "Metallic Texture Channel"
msgstr ""
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Roughness Texture"
+msgstr ".تمام کا انتخاب"
+
+#: scene/resources/material.cpp
msgid "Roughness Texture Channel"
msgstr ""
@@ -22606,6 +24390,15 @@ msgid "Emission Operator"
msgstr ""
#: scene/resources/material.cpp
+msgid "Emission On UV2"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Emission Texture"
+msgstr ".تمام کا انتخاب"
+
+#: scene/resources/material.cpp
msgid "NormalMap"
msgstr ""
@@ -22619,6 +24412,11 @@ msgstr ""
#: scene/resources/material.cpp
#, fuzzy
+msgid "Rim Texture"
+msgstr ".تمام کا انتخاب"
+
+#: scene/resources/material.cpp
+#, fuzzy
msgid "Clearcoat"
msgstr ".تمام کا انتخاب"
@@ -22628,15 +24426,28 @@ msgid "Clearcoat Gloss"
msgstr ".تمام کا انتخاب"
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Clearcoat Texture"
+msgstr ".تمام کا انتخاب"
+
+#: scene/resources/material.cpp
msgid "Anisotropy"
msgstr ""
#: scene/resources/material.cpp
+msgid "Anisotropy Flowmap"
+msgstr ""
+
+#: scene/resources/material.cpp
#, fuzzy
msgid "Ambient Occlusion"
msgstr "سب سکریپشن بنائیں"
#: scene/resources/material.cpp
+msgid "On UV2"
+msgstr ""
+
+#: scene/resources/material.cpp
#, fuzzy
msgid "Texture Channel"
msgstr "ایکشن منتقل کریں"
@@ -22672,6 +24483,11 @@ msgstr ""
#: scene/resources/material.cpp
#, fuzzy
+msgid "Transmission Texture"
+msgstr ".تمام کا انتخاب"
+
+#: scene/resources/material.cpp
+#, fuzzy
msgid "Refraction"
msgstr ".تمام کا انتخاب"
@@ -22688,6 +24504,10 @@ msgid "UV1"
msgstr ""
#: scene/resources/material.cpp
+msgid "Triplanar"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Triplanar Sharpness"
msgstr ""
@@ -22886,6 +24706,16 @@ msgstr ".تمام کا انتخاب"
msgid "Point Count"
msgstr ".تمام کا انتخاب"
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Scale Random"
+msgstr "ایکشن منتقل کریں"
+
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Scale Curve"
+msgstr "ایکشن منتقل کریں"
+
#: scene/resources/physics_material.cpp
msgid "Rough"
msgstr ""
@@ -22943,10 +24773,6 @@ msgid "A"
msgstr ""
#: scene/resources/shader.cpp
-msgid "Code"
-msgstr ""
-
-#: scene/resources/shader.cpp
msgid "Custom Defines"
msgstr ""
@@ -23035,14 +24861,6 @@ msgid "Grow End"
msgstr ""
#: scene/resources/texture.cpp
-msgid "Storage"
-msgstr ""
-
-#: scene/resources/texture.cpp
-msgid "Lossy Quality"
-msgstr ""
-
-#: scene/resources/texture.cpp
msgid "Load Path"
msgstr ""
@@ -23164,10 +24982,6 @@ msgstr ""
msgid "Fallback Environment"
msgstr ""
-#: scene/resources/world.cpp scene/resources/world_2d.cpp
-msgid "Space"
-msgstr ""
-
#: scene/resources/world.cpp
msgid "Scenario"
msgstr ""
@@ -23242,8 +25056,34 @@ msgstr ""
msgid "Wet"
msgstr ""
-#: servers/audio/effects/audio_effect_compressor.cpp
-msgid "Threshold"
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "Voice"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+msgid "Delay (ms)"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_phaser.cpp
+msgid "Rate Hz"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#, fuzzy
+msgid "Depth (ms)"
+msgstr "ایکشن منتقل کریں"
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+msgid "Level dB"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+#: servers/audio/effects/audio_effect_panner.cpp
+msgid "Pan"
msgstr ""
#: servers/audio/effects/audio_effect_compressor.cpp
@@ -23268,19 +25108,6 @@ msgid "Tap 1"
msgstr ""
#: servers/audio/effects/audio_effect_delay.cpp
-msgid "Delay (ms)"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_delay.cpp
-msgid "Level dB"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_delay.cpp
-#: servers/audio/effects/audio_effect_panner.cpp
-msgid "Pan"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_delay.cpp
msgid "Tap 2"
msgstr ""
@@ -23338,10 +25165,6 @@ msgstr ""
msgid "Range Max Hz"
msgstr ""
-#: servers/audio/effects/audio_effect_phaser.cpp
-msgid "Rate Hz"
-msgstr ""
-
#: servers/audio/effects/audio_effect_pitch_shift.cpp
msgid "Oversampling"
msgstr ""
@@ -23357,7 +25180,7 @@ msgid "Predelay"
msgstr ""
#: servers/audio/effects/audio_effect_reverb.cpp
-msgid "(msec)"
+msgid "Msec"
msgstr ""
#: servers/audio/effects/audio_effect_reverb.cpp
diff --git a/editor/translations/vi.po b/editor/translations/vi.po
index 3d972bd1ae..22375079c4 100644
--- a/editor/translations/vi.po
+++ b/editor/translations/vi.po
@@ -36,7 +36,7 @@ msgstr ""
"Plural-Forms: nplurals=1; plural=0;\n"
"X-Generator: Weblate 4.11.1-dev\n"
-#: core/bind/core_bind.cpp
+#: core/bind/core_bind.cpp main/main.cpp
msgid "Tablet Driver"
msgstr ""
@@ -140,8 +140,8 @@ msgstr "Vị trí Khung"
#: core/bind/core_bind.cpp editor/editor_settings.cpp main/main.cpp
#: modules/gdscript/gdscript_editor.cpp modules/gridmap/grid_map.cpp
#: modules/mono/csharp_script.cpp modules/visual_script/visual_script_nodes.cpp
-#: scene/2d/tile_map.cpp scene/3d/camera.cpp scene/gui/control.cpp
-#: scene/gui/graph_edit.cpp scene/main/viewport.cpp
+#: scene/2d/tile_map.cpp scene/3d/camera.cpp scene/3d/light.cpp
+#: scene/gui/control.cpp scene/gui/graph_edit.cpp scene/main/viewport.cpp
#: scene/resources/dynamic_font.cpp scene/resources/navigation_mesh.cpp
#: scene/resources/primitive_meshes.cpp scene/resources/sky.cpp
#: scene/resources/style_box.cpp scene/resources/texture.cpp
@@ -245,8 +245,7 @@ msgid "Data"
msgstr ""
#: core/io/file_access_network.cpp core/register_core_types.cpp
-#: editor/editor_settings.cpp editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp main/main.cpp
+#: editor/editor_settings.cpp main/main.cpp
#: modules/gdscript/language_server/gdscript_language_server.cpp
#, fuzzy
msgid "Network"
@@ -529,9 +528,10 @@ msgstr "Cài sẵn"
msgid "Relative"
msgstr "Dính tương đối"
-#: core/os/input_event.cpp scene/2d/camera_2d.cpp
-#: scene/3d/interpolated_camera.cpp scene/animation/animation_player.cpp
-#: scene/resources/environment.cpp
+#: core/os/input_event.cpp scene/2d/camera_2d.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/interpolated_camera.cpp
+#: scene/animation/animation_player.cpp scene/resources/environment.cpp
+#: scene/resources/particles_material.cpp
#, fuzzy
msgid "Speed"
msgstr "Tốc độ:"
@@ -582,8 +582,9 @@ msgstr "Äổi"
msgid "Pitch"
msgstr "Tỷ lệ:"
-#: core/os/input_event.cpp scene/2d/physics_body_2d.cpp
-#: scene/3d/physics_body.cpp
+#: core/os/input_event.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/physics_body_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/3d/physics_body.cpp scene/resources/particles_material.cpp
#, fuzzy
msgid "Velocity"
msgstr "Khởi tạo"
@@ -602,6 +603,8 @@ msgid "Controller Value"
msgstr ""
#: core/project_settings.cpp editor/editor_node.cpp main/main.cpp
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/windows/export/export.cpp
#, fuzzy
msgid "Application"
msgstr "Chá»n tất cả"
@@ -620,13 +623,16 @@ msgstr "Cài đặt Dá»± Ãn..."
#: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp
#: editor/editor_plugin_settings.cpp editor/editor_profiler.cpp
#: editor/project_manager.cpp editor/settings_config_dialog.cpp
-#: modules/gdnative/nativescript/nativescript.cpp scene/2d/area_2d.cpp
-#: scene/3d/area.cpp scene/main/node.cpp
+#: modules/gdnative/nativescript/nativescript.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/osx/export/export.cpp scene/2d/area_2d.cpp scene/3d/area.cpp
+#: scene/main/node.cpp
msgid "Name"
msgstr "Tên"
#: core/project_settings.cpp editor/editor_help.cpp
-#: modules/visual_script/visual_script_nodes.cpp
+#: modules/visual_script/visual_script_nodes.cpp platform/uwp/export/export.cpp
+#: platform/windows/export/export.cpp
msgid "Description"
msgstr "Ná»™i dung"
@@ -664,7 +670,7 @@ msgid "Custom User Dir Name"
msgstr ""
#: core/project_settings.cpp editor/animation_track_editor.cpp
-#: editor/editor_audio_buses.cpp servers/audio_server.cpp
+#: editor/editor_audio_buses.cpp main/main.cpp servers/audio_server.cpp
msgid "Audio"
msgstr "Âm thanh"
@@ -831,10 +837,13 @@ msgstr "Lá»c:"
msgid "Sharpen Intensity"
msgstr ""
-#: core/project_settings.cpp editor/editor_node.cpp editor/editor_settings.cpp
-#: editor/plugins/script_editor_plugin.cpp editor/project_export.cpp
-#: main/main.cpp modules/gdscript/gdscript.cpp
-#: modules/visual_script/visual_script.cpp scene/3d/room_manager.cpp
+#: core/project_settings.cpp editor/editor_export.cpp editor/editor_node.cpp
+#: editor/editor_settings.cpp editor/plugins/script_editor_plugin.cpp
+#: editor/project_export.cpp main/main.cpp modules/gdscript/gdscript.cpp
+#: modules/visual_script/visual_script.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp scene/3d/room_manager.cpp
#: scene/main/scene_tree.cpp scene/resources/shape_2d.cpp
#: servers/visual_server.cpp
msgid "Debug"
@@ -1069,6 +1078,7 @@ msgid "Subsurface Scattering"
msgstr ""
#: drivers/gles3/rasterizer_scene_gles3.cpp
+#: editor/import/resource_importer_texture.cpp
#: editor/plugins/spatial_editor_plugin.cpp modules/gltf/gltf_node.cpp
#: modules/gridmap/grid_map.cpp scene/2d/cpu_particles_2d.cpp
#: scene/2d/node_2d.cpp scene/2d/parallax_layer.cpp scene/2d/polygon_2d.cpp
@@ -1367,6 +1377,7 @@ msgid "Editors"
msgstr "Trình chỉnh sửa"
#: editor/animation_track_editor.cpp editor/editor_settings.cpp
+#: editor/import/resource_importer_scene.cpp
#: editor/plugins/animation_player_editor_plugin.cpp editor/scene_tree_dock.cpp
#: scene/2d/animated_sprite.cpp scene/2d/cpu_particles_2d.cpp
#: scene/2d/sprite.cpp scene/3d/cpu_particles.cpp scene/3d/sprite_3d.cpp
@@ -1598,14 +1609,14 @@ msgstr "Giá trị bước hoạt ảnh."
msgid "Seconds"
msgstr "Giây"
-#: editor/animation_track_editor.cpp
+#: editor/animation_track_editor.cpp editor/import/resource_importer_scene.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp main/main.cpp
#: scene/resources/texture.cpp
msgid "FPS"
msgstr "Khung hình(FPS)"
#: editor/animation_track_editor.cpp editor/editor_plugin_settings.cpp
-#: editor/editor_resource_picker.cpp
+#: editor/editor_resource_picker.cpp editor/import/resource_importer_wav.cpp
#: editor/plugins/polygon_2d_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
@@ -2574,7 +2585,9 @@ msgid "Remove Autoload"
msgstr "Xóa Nạp tự động"
#: editor/editor_autoload_settings.cpp editor/editor_plugin_settings.cpp
-#: modules/gdscript/gdscript.cpp scene/2d/polygon_2d.cpp scene/3d/area.cpp
+#: modules/gdscript/gdscript.cpp platform/android/export/export_plugin.cpp
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#: scene/2d/polygon_2d.cpp scene/3d/area.cpp scene/3d/physics_joint.cpp
#: scene/3d/reflection_probe.cpp scene/main/canvas_layer.cpp
#: scene/resources/material.cpp servers/visual_server.cpp
msgid "Enable"
@@ -2742,6 +2755,58 @@ msgstr ""
#: editor/editor_export.cpp platform/android/export/export_plugin.cpp
#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Custom Template"
+msgstr "Chỉnh Tông màu"
+
+#: editor/editor_export.cpp editor/project_export.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp
+msgid "Release"
+msgstr "Phát hành"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Binary Format"
+msgstr "Äổi Transform Animation"
+
+#: editor/editor_export.cpp
+msgid "64 Bits"
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Embed PCK"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Texture Format"
+msgstr "TextureRegion"
+
+#: editor/editor_export.cpp
+msgid "BPTC"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "S3TC"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "ETC"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "ETC2"
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "No BPTC Fallbacks"
+msgstr ""
+
+#: editor/editor_export.cpp platform/android/export/export_plugin.cpp
+#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
msgid "Custom debug template not found."
msgstr "Không tìm thấy mẫu gỡ lỗi tuỳ chỉnh."
@@ -2917,6 +2982,7 @@ msgid "Make Current"
msgstr "Äặt làm hiện tại"
#: editor/editor_feature_profile.cpp editor/editor_node.cpp
+#: editor/import/resource_importer_scene.cpp
#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
msgid "Import"
msgstr "Nhập"
@@ -3044,8 +3110,11 @@ msgstr "Thành công!"
msgid "Display Mode"
msgstr "Chế độ chơi:"
-#: editor/editor_file_dialog.cpp main/main.cpp modules/csg/csg_shape.cpp
-#: modules/visual_script/visual_script_nodes.cpp
+#: editor/editor_file_dialog.cpp
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+#: editor/import/resource_importer_wav.cpp main/main.cpp
+#: modules/csg/csg_shape.cpp modules/visual_script/visual_script_nodes.cpp
#: modules/visual_script/visual_script_yield_nodes.cpp scene/2d/light_2d.cpp
#: scene/2d/physics_body_2d.cpp scene/2d/tile_map.cpp
#: scene/3d/baked_lightmap.cpp scene/3d/light.cpp scene/3d/physics_body.cpp
@@ -3184,7 +3253,9 @@ msgstr "Nhập lại tài nguyên"
msgid "Reimport Missing Imported Files"
msgstr ""
-#: editor/editor_help.cpp
+#: editor/editor_help.cpp scene/2d/camera_2d.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/resources/dynamic_font.cpp
+#: scene/resources/style_box.cpp
msgid "Top"
msgstr "Trên đầu"
@@ -3239,6 +3310,7 @@ msgid "Fonts"
msgstr "Phông chữ"
#: editor/editor_help.cpp editor/plugins/theme_editor_plugin.cpp
+#: platform/iphone/export/export.cpp
#, fuzzy
msgid "Icons"
msgstr "Biểu tượng"
@@ -3410,7 +3482,9 @@ msgstr ""
msgid "Pin value [Disabled because '%s' is editor-only]"
msgstr ""
-#: editor/editor_inspector.cpp editor/scene_tree_dock.cpp
+#: editor/editor_inspector.cpp
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+#: editor/scene_tree_dock.cpp
#: modules/visual_script/visual_script_func_nodes.cpp
#: modules/visual_script/visual_script_nodes.cpp
#: modules/visual_script/visual_script_property_selector.cpp
@@ -3747,6 +3821,16 @@ msgid "Quick Open Script..."
msgstr "Mở Nhanh Tệp lệnh..."
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Save & Reload"
+msgstr "Lưu & Khởi động lại"
+
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Save changes to '%s' before reloading?"
+msgstr "Lưu thay đổi vào '%s' trước khi đóng?"
+
+#: editor/editor_node.cpp
msgid "Save & Close"
msgstr "Lưu & Äóng"
@@ -3862,6 +3946,11 @@ msgid "Open Project Manager?"
msgstr "Mở Quản lý Dự án?"
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Save changes to the following scene(s) before reloading?"
+msgstr "Lưu thay đổi trong các scene sau trước khi thoát?"
+
+#: editor/editor_node.cpp
msgid "Save & Quit"
msgstr "Lưu & Thoát"
@@ -4133,8 +4222,8 @@ msgstr "Äối số đã thay đổi"
#: editor/editor_node.cpp
#, fuzzy
-msgid "Translate Properties"
-msgstr "Thuộc tính"
+msgid "Localize Settings"
+msgstr "Bản địa hoá"
#: editor/editor_node.cpp
#, fuzzy
@@ -4151,8 +4240,8 @@ msgstr "Quan Sát Viên"
#: editor/editor_node.cpp
#, fuzzy
-msgid "Capitalize Properties"
-msgstr "Thuộc tính"
+msgid "Default Property Name Style"
+msgstr "ÄÆ°á»ng dẫn Dá»± án:"
#: editor/editor_node.cpp
msgid "Default Float Step"
@@ -4749,7 +4838,9 @@ msgstr "Các Tiện ích đã cài:"
msgid "Update"
msgstr "Cập nhật"
-#: editor/editor_plugin_settings.cpp
+#: editor/editor_plugin_settings.cpp platform/android/export/export_plugin.cpp
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp
msgid "Version"
msgstr "Phiên bản"
@@ -5768,7 +5859,7 @@ msgstr "Rộng hết cỡ"
msgid "Rect Custom Position"
msgstr "Xóa Äa giác Tùy chỉnh"
-#: editor/editor_settings.cpp
+#: editor/editor_settings.cpp platform/android/export/export_plugin.cpp
msgid "Screen"
msgstr ""
@@ -5795,6 +5886,19 @@ msgid "Editor SSL Certificates"
msgstr "Cài đặt Trình biên tập"
#: editor/editor_settings.cpp
+msgid "HTTP Proxy"
+msgstr ""
+
+#: editor/editor_settings.cpp
+msgid "Host"
+msgstr ""
+
+#: editor/editor_settings.cpp editor/fileserver/editor_file_server.cpp
+#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp
+msgid "Port"
+msgstr ""
+
+#: editor/editor_settings.cpp
msgid "Project Manager"
msgstr "Trình quản lý Dự án"
@@ -5837,7 +5941,8 @@ msgstr ""
msgid "String Color"
msgstr "Lưu trữ tệp tin:"
-#: editor/editor_settings.cpp
+#: editor/editor_settings.cpp platform/javascript/export/export.cpp
+#: platform/uwp/export/export.cpp
#, fuzzy
msgid "Background Color"
msgstr "Màu ná»n không hợp lệ."
@@ -6017,22 +6122,6 @@ msgid "Starting the download..."
msgstr ""
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "HTTP Proxy"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Host"
-msgstr ""
-
-#: editor/export_template_manager.cpp editor/fileserver/editor_file_server.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp main/main.cpp
-#: modules/mono/mono_gd/gd_mono.cpp
-msgid "Port"
-msgstr ""
-
-#: editor/export_template_manager.cpp
msgid "Error requesting URL:"
msgstr "Lá»—i khi yêu cầu đưá»ng dẫn:"
@@ -6301,6 +6390,7 @@ msgstr ""
#: editor/fileserver/editor_file_server.cpp
#: editor/plugins/version_control_editor_plugin.cpp
+#: platform/uwp/export/export.cpp platform/windows/export/export.cpp
msgid "Password"
msgstr ""
@@ -6680,6 +6770,117 @@ msgstr ""
msgid "Use Ambient"
msgstr ""
+#: editor/import/resource_importer_bitmask.cpp
+#, fuzzy
+msgid "Create From"
+msgstr "Tạo thư mục"
+
+#: editor/import/resource_importer_bitmask.cpp
+#: servers/audio/effects/audio_effect_compressor.cpp
+msgid "Threshold"
+msgstr ""
+
+#: editor/import/resource_importer_csv_translation.cpp
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_scene.cpp
+#: editor/import/resource_importer_texture.cpp
+#: editor/import/resource_importer_wav.cpp scene/3d/gi_probe.cpp
+#, fuzzy
+msgid "Compress"
+msgstr "Thành phần"
+
+#: editor/import/resource_importer_csv_translation.cpp
+msgid "Delimiter"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+msgid "No BPTC If RGB"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/sprite_3d.cpp
+#: scene/resources/material.cpp scene/resources/particles_material.cpp
+#: scene/resources/texture.cpp
+msgid "Flags"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/animation/tween.cpp
+#: scene/resources/texture.cpp
+msgid "Repeat"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/2d/light_2d.cpp
+#: scene/gui/control.cpp scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Filter"
+msgstr "Lá»c:"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Mipmaps"
+msgstr "Tín hiệu"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+msgid "Anisotropic"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+msgid "sRGB"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#, fuzzy
+msgid "Slices"
+msgstr "Tất cả thiết bị"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
+#: scene/resources/style_box.cpp
+#, fuzzy
+msgid "Horizontal"
+msgstr "Ngang:"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
+#: scene/resources/style_box.cpp
+#, fuzzy
+msgid "Vertical"
+msgstr "Dá»c:"
+
+#: editor/import/resource_importer_obj.cpp
+#, fuzzy
+msgid "Generate Tangents"
+msgstr "Xóa Point"
+
+#: editor/import/resource_importer_obj.cpp
+#, fuzzy
+msgid "Scale Mesh"
+msgstr "Chế độ căn Tỉ lệ"
+
+#: editor/import/resource_importer_obj.cpp
+#, fuzzy
+msgid "Offset Mesh"
+msgstr "Äá»™ dá»i:"
+
+#: editor/import/resource_importer_obj.cpp
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Octahedral Compression"
+msgstr "Äặt phép diá»…n đạt"
+
+#: editor/import/resource_importer_obj.cpp
+#, fuzzy
+msgid "Optimize Mesh Flags"
+msgstr "Kích thước: "
+
#: editor/import/resource_importer_scene.cpp
msgid "Import as Single Scene"
msgstr "Nhập vào Cảnh đơn"
@@ -6720,6 +6921,156 @@ msgstr "Nhập vào Nhiá»u cảnh"
msgid "Import as Multiple Scenes+Materials"
msgstr "Nhập nhiá»u Scene + Vật liệu"
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Nodes"
+msgstr "Nút"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Root Type"
+msgstr "Loại"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Root Name"
+msgstr "Tên Node:"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Root Scale"
+msgstr "Tỷ lệ:"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Custom Script"
+msgstr "Cắt các nút"
+
+#: editor/import/resource_importer_scene.cpp scene/resources/texture.cpp
+#, fuzzy
+msgid "Storage"
+msgstr "Lưu trữ tệp tin:"
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Use Legacy Names"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+#, fuzzy
+msgid "Materials"
+msgstr "Äối số đã thay đổi"
+
+#: editor/import/resource_importer_scene.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Location"
+msgstr "Bản địa hoá"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Keep On Reimport"
+msgstr "Nhập vào lại"
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+#, fuzzy
+msgid "Meshes"
+msgstr "Lưới"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Ensure Tangents"
+msgstr "Sửa tiếp tuyến điểm uốn"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Light Baking"
+msgstr "Ãnh sáng"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Lightmap Texel Size"
+msgstr "Dính Äiểm ảnh"
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+msgid "Skins"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Use Named Skins"
+msgstr "Dính theo bước tỉ lệ"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "External Files"
+msgstr "Mở một Tệp tin"
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Store In Subdir"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Filter Script"
+msgstr "Lá»c tệp lệnh"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Keep Custom Tracks"
+msgstr "Biến đổi"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Optimizer"
+msgstr "Tối ưu"
+
+#: editor/import/resource_importer_scene.cpp main/main.cpp
+#: modules/mono/mono_gd/gd_mono.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp scene/2d/camera_2d.cpp scene/2d/light_2d.cpp
+#: scene/2d/navigation_polygon.cpp scene/2d/ray_cast_2d.cpp scene/2d/sprite.cpp
+#: scene/2d/y_sort.cpp scene/3d/audio_stream_player_3d.cpp
+#: scene/3d/baked_lightmap.cpp scene/3d/interpolated_camera.cpp
+#: scene/3d/light.cpp scene/3d/navigation_mesh_instance.cpp
+#: scene/3d/physics_joint.cpp scene/3d/ray_cast.cpp scene/3d/sprite_3d.cpp
+#: scene/gui/graph_edit.cpp scene/gui/rich_text_label.cpp
+#: scene/resources/curve.cpp scene/resources/environment.cpp
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Enabled"
+msgstr "Mở"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Max Linear Error"
+msgstr "Sai lệch tuyến tính lớn nhất:"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Max Angular Error"
+msgstr "Sai lệch góc lớn nhất:"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Max Angle"
+msgstr "Giá trị"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Remove Unused Tracks"
+msgstr "Xóa Anim Track"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Clips"
+msgstr "Các đoạn hoạt ảnh"
+
+#: editor/import/resource_importer_scene.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/particles_2d.cpp scene/3d/area.cpp scene/3d/cpu_particles.cpp
+#: scene/3d/particles.cpp scene/resources/environment.cpp
+#, fuzzy
+msgid "Amount"
+msgstr "Số lượng:"
+
#: editor/import/resource_importer_scene.cpp
#: editor/plugins/mesh_library_editor_plugin.cpp
msgid "Import Scene"
@@ -6762,12 +7113,147 @@ msgstr ""
msgid "Saving..."
msgstr "Äang lưu ..."
+#: editor/import/resource_importer_texture.cpp scene/resources/texture.cpp
+msgid "Lossy Quality"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "HDR Mode"
+msgstr "Chế độ chá»n"
+
+#: editor/import/resource_importer_texture.cpp
+msgid "BPTC LDR"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/mesh_instance_2d.cpp scene/2d/multimesh_instance_2d.cpp
+#: scene/2d/particles_2d.cpp scene/2d/sprite.cpp scene/resources/style_box.cpp
+msgid "Normal Map"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Process"
+msgstr "Hậu xử lí"
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Fix Alpha Border"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Premult Alpha"
+msgstr "Sá»­a Poly"
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Hdr As Srgb"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Invert Color"
+msgstr "Äỉnh"
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Normal Map Invert Y"
+msgstr "Thu phóng ngẫu nhiên:"
+
+#: editor/import/resource_importer_texture.cpp
+#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
+#: scene/audio/audio_stream_player.cpp scene/gui/video_player.cpp
+msgid "Stream"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Size Limit"
+msgstr "Kích thước: "
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Detect 3D"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "SVG"
+msgstr ""
+
#: editor/import/resource_importer_texture.cpp
msgid ""
"Warning, no suitable PC VRAM compression enabled in Project Settings. This "
"texture will not display correctly on PC."
msgstr ""
+#: editor/import/resource_importer_texture_atlas.cpp
+#, fuzzy
+msgid "Atlas File"
+msgstr "Kích cỡ viá»n:"
+
+#: editor/import/resource_importer_texture_atlas.cpp
+#, fuzzy
+msgid "Import Mode"
+msgstr "Chế độ xuất:"
+
+#: editor/import/resource_importer_texture_atlas.cpp
+msgid "Crop To Region"
+msgstr ""
+
+#: editor/import/resource_importer_texture_atlas.cpp
+msgid "Trim Alpha Border From Region"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp scene/2d/physics_body_2d.cpp
+#, fuzzy
+msgid "Force"
+msgstr "Lưới nguồn:"
+
+#: editor/import/resource_importer_wav.cpp
+msgid "8 Bit"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp main/main.cpp
+#: modules/mono/editor/csharp_project.cpp modules/mono/mono_gd/gd_mono.cpp
+msgid "Mono"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+#, fuzzy
+msgid "Max Rate"
+msgstr "Nút Mix"
+
+#: editor/import/resource_importer_wav.cpp
+#, fuzzy
+msgid "Max Rate Hz"
+msgstr "Nút Mix"
+
+#: editor/import/resource_importer_wav.cpp
+msgid "Trim"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+#, fuzzy
+msgid "Normalize"
+msgstr "Äịnh dạng"
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+#, fuzzy
+msgid "Loop Mode"
+msgstr "Chế độ Di chuyển"
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+#, fuzzy
+msgid "Loop Begin"
+msgstr "Chế độ Di chuyển"
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+#, fuzzy
+msgid "Loop End"
+msgstr "Chế độ Di chuyển"
+
#: editor/import_defaults_editor.cpp
msgid "Select Importer"
msgstr "Chá»n bá»™ nhập"
@@ -6839,6 +7325,29 @@ msgstr "Nạp tài nguyên thất bại."
#: editor/inspector_dock.cpp
#, fuzzy
+msgid "Property Name Style"
+msgstr "Tên Dự án:"
+
+#: editor/inspector_dock.cpp scene/gui/color_picker.cpp
+msgid "Raw"
+msgstr ""
+
+#: editor/inspector_dock.cpp
+#, fuzzy
+msgid "Capitalized"
+msgstr "Khởi tạo"
+
+#: editor/inspector_dock.cpp
+#, fuzzy
+msgid "Localized"
+msgstr "Vùng vị trí"
+
+#: editor/inspector_dock.cpp
+msgid "Localization not available for current language."
+msgstr ""
+
+#: editor/inspector_dock.cpp
+#, fuzzy
msgid "Copy Properties"
msgstr "Thuộc tính"
@@ -7885,18 +8394,26 @@ msgid "License (Z-A)"
msgstr "Giấy phép (Z-A)"
#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgctxt "Pagination"
msgid "First"
msgstr "Äầu tiên"
-#: editor/plugins/asset_library_editor_plugin.cpp scene/gui/control.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgctxt "Pagination"
msgid "Previous"
msgstr "Trước đó"
-#: editor/plugins/asset_library_editor_plugin.cpp scene/gui/control.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgctxt "Pagination"
msgid "Next"
msgstr "Tiếp theo"
#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgctxt "Pagination"
msgid "Last"
msgstr "Cuối cùng"
@@ -8134,19 +8651,19 @@ msgid ""
msgstr ""
"Khi bật, di chuyển các nút Control sẽ thay đổi neo thay vì lỠcủa chúng."
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Top Left"
msgstr "Góc trên trái"
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Top Right"
msgstr "Góc trên phải"
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Bottom Right"
msgstr "Góc dưới phải"
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Bottom Left"
msgstr "Góc dưới trái"
@@ -8872,6 +9389,19 @@ msgstr ""
msgid "Gradient Edited"
msgstr "Dải màu đã được chỉnh sửa"
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+msgid "Swap GradientTexture2D Fill Points"
+msgstr ""
+
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+msgid "Swap Gradient Fill Points"
+msgstr ""
+
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+#, fuzzy
+msgid "Toggle Grid Snap"
+msgstr "Bật tắt Chức năng"
+
#: editor/plugins/item_list_editor_plugin.cpp
msgid "Item %d"
msgstr "Mục %d"
@@ -9102,8 +9632,9 @@ msgstr ""
"Cập nhật từ cảnh hiện có?:\n"
"%s"
-#: editor/plugins/mesh_library_editor_plugin.cpp modules/gridmap/grid_map.cpp
-msgid "Mesh Library"
+#: editor/plugins/mesh_library_editor_plugin.cpp
+#, fuzzy
+msgid "MeshLibrary"
msgstr "Thư viện Lưới"
#: editor/plugins/mesh_library_editor_plugin.cpp
@@ -10104,8 +10635,8 @@ msgstr "Kết nối đến phương thức:"
msgid "Source"
msgstr "Nguồn"
-#: editor/plugins/script_text_editor.cpp scene/3d/interpolated_camera.cpp
-#: scene/animation/skeleton_ik.cpp
+#: editor/plugins/script_text_editor.cpp platform/uwp/export/export.cpp
+#: scene/3d/interpolated_camera.cpp scene/animation/skeleton_ik.cpp
msgid "Target"
msgstr ""
@@ -11105,7 +11636,9 @@ msgstr "Tốc độ:"
#: editor/plugins/sprite_frames_editor_plugin.cpp
#: modules/gltf/gltf_animation.cpp modules/minimp3/audio_stream_mp3.cpp
-#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp scene/2d/path_2d.cpp
+#: modules/minimp3/resource_importer_mp3.cpp
+#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp
+#: modules/stb_vorbis/resource_importer_ogg_vorbis.cpp scene/2d/path_2d.cpp
#: scene/3d/path.cpp scene/resources/animation.cpp scene/resources/material.cpp
msgid "Loop"
msgstr "Lặp"
@@ -12054,8 +12587,9 @@ msgstr "Bitmask"
msgid "Priority"
msgstr "Ưu tiên"
-#: editor/plugins/tile_set_editor_plugin.cpp main/main.cpp scene/gui/button.cpp
-#: scene/gui/item_list.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp main/main.cpp
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#: scene/gui/button.cpp scene/gui/item_list.cpp
msgid "Icon"
msgstr "Biểu tượng"
@@ -13403,10 +13937,6 @@ msgstr ""
"của bạn."
#: editor/project_export.cpp
-msgid "Release"
-msgstr "Phát hành"
-
-#: editor/project_export.cpp
msgid "Exporting All"
msgstr "Xuất tất cả"
@@ -15299,6 +15829,7 @@ msgid "Change AudioStreamPlayer3D Emission Angle"
msgstr ""
#: editor/spatial_editor_gizmos.cpp modules/gltf/gltf_node.cpp
+#: platform/osx/export/export.cpp
msgid "Camera"
msgstr ""
@@ -15583,7 +16114,8 @@ msgstr ""
msgid "Use Nvidia Rect Flicker Workaround"
msgstr ""
-#: main/main.cpp platform/uwp/os_uwp.cpp
+#: main/main.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp platform/uwp/os_uwp.cpp
#, fuzzy
msgid "Display"
msgstr "Hiển thị tất cả"
@@ -15644,19 +16176,6 @@ msgstr ""
msgid "Allowed"
msgstr ""
-#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp scene/2d/camera_2d.cpp
-#: scene/2d/light_2d.cpp scene/2d/navigation_polygon.cpp
-#: scene/2d/ray_cast_2d.cpp scene/2d/sprite.cpp scene/2d/y_sort.cpp
-#: scene/3d/audio_stream_player_3d.cpp scene/3d/baked_lightmap.cpp
-#: scene/3d/interpolated_camera.cpp scene/3d/light.cpp
-#: scene/3d/navigation_mesh_instance.cpp scene/3d/ray_cast.cpp
-#: scene/3d/sprite_3d.cpp scene/gui/graph_edit.cpp
-#: scene/gui/rich_text_label.cpp scene/resources/curve.cpp
-#: scene/resources/environment.cpp
-#, fuzzy
-msgid "Enabled"
-msgstr "Mở"
-
#: main/main.cpp
msgid "Intended Usage"
msgstr ""
@@ -15688,13 +16207,14 @@ msgstr ""
msgid "Handheld"
msgstr ""
-#: main/main.cpp
+#: main/main.cpp platform/javascript/export/export.cpp
+#: platform/uwp/export/export.cpp
#, fuzzy
msgid "Orientation"
msgstr "Mở Hướng dẫn"
#: main/main.cpp scene/gui/scroll_container.cpp scene/gui/text_edit.cpp
-#: scene/main/scene_tree.cpp
+#: scene/main/scene_tree.cpp scene/register_scene_types.cpp
#, fuzzy
msgid "Common"
msgstr "Cộng đồng"
@@ -15737,7 +16257,7 @@ msgstr ""
#: main/main.cpp
#, fuzzy
-msgid "Frame Delay (msec)"
+msgid "Frame Delay Msec"
msgstr "Lá»±a chá»n khung hình"
#: main/main.cpp
@@ -15864,11 +16384,6 @@ msgstr ""
msgid "Tooltip Position Offset"
msgstr "Äá»™ lệch xoay:"
-#: main/main.cpp modules/mono/editor/csharp_project.cpp
-#: modules/mono/mono_gd/gd_mono.cpp
-msgid "Mono"
-msgstr ""
-
#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp
#, fuzzy
msgid "Debugger Agent"
@@ -16446,7 +16961,7 @@ msgstr "Màu"
msgid "Intensity"
msgstr ""
-#: modules/gltf/gltf_light.cpp scene/2d/light_2d.cpp
+#: modules/gltf/gltf_light.cpp scene/2d/light_2d.cpp scene/3d/light.cpp
#, fuzzy
msgid "Range"
msgstr "Äổi"
@@ -16593,11 +17108,6 @@ msgstr "Ãnh sáng"
msgid "Use Named Skin Binds"
msgstr ""
-#: modules/gltf/gltf_state.cpp scene/3d/physics_joint.cpp
-#, fuzzy
-msgid "Nodes"
-msgstr "Nút"
-
#: modules/gltf/gltf_state.cpp
#, fuzzy
msgid "Buffer Views"
@@ -16609,16 +17119,6 @@ msgstr ""
#: modules/gltf/gltf_state.cpp
#, fuzzy
-msgid "Meshes"
-msgstr "Lưới"
-
-#: modules/gltf/gltf_state.cpp
-#, fuzzy
-msgid "Materials"
-msgstr "Äối số đã thay đổi"
-
-#: modules/gltf/gltf_state.cpp
-#, fuzzy
msgid "Scene Name"
msgstr "ÄÆ°á»ng dẫn Cảnh:"
@@ -16634,15 +17134,11 @@ msgstr "Tên nút gốc"
msgid "Textures"
msgstr "Tính năng"
-#: modules/gltf/gltf_state.cpp
+#: modules/gltf/gltf_state.cpp platform/uwp/export/export.cpp
msgid "Images"
msgstr ""
#: modules/gltf/gltf_state.cpp
-msgid "Skins"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp
msgid "Cameras"
msgstr ""
@@ -16677,11 +17173,15 @@ msgid "Src Image"
msgstr "Hiển thị Xương"
#: modules/gridmap/grid_map.cpp
+msgid "Mesh Library"
+msgstr "Thư viện Lưới"
+
+#: modules/gridmap/grid_map.cpp
#, fuzzy
msgid "Physics Material"
msgstr "Khung hình Vật lý %"
-#: modules/gridmap/grid_map.cpp
+#: modules/gridmap/grid_map.cpp scene/3d/visual_instance.cpp
#, fuzzy
msgid "Use In Baked Light"
msgstr "Ãnh sáng"
@@ -16713,6 +17213,7 @@ msgstr "Giữa"
#: modules/gridmap/grid_map.cpp scene/2d/collision_object_2d.cpp
#: scene/2d/tile_map.cpp scene/3d/collision_object.cpp scene/3d/soft_body.cpp
+#: scene/resources/material.cpp
msgid "Mask"
msgstr ""
@@ -16900,7 +17401,9 @@ msgid "Ultra Quality Ray Count"
msgstr ""
#: modules/minimp3/audio_stream_mp3.cpp
+#: modules/minimp3/resource_importer_mp3.cpp
#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp
+#: modules/stb_vorbis/resource_importer_ogg_vorbis.cpp
#, fuzzy
msgid "Loop Offset"
msgstr "Äá»™ dá»i:"
@@ -18008,6 +18511,192 @@ msgid "The package must have at least one '.' separator."
msgstr "Kí tự phân cách '.' phải xuất hiện ít nhất một lần trong tên gói."
#: platform/android/export/export_plugin.cpp
+msgid "Use Custom Build"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Export Format"
+msgstr "ÄÆ°á»ng dẫn xuất"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Keystore"
+msgstr "Trình gỡ lỗi"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Debug User"
+msgstr "Trình gỡ lỗi"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+msgid "Debug Password"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Release User"
+msgstr "Phát hành"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Release Password"
+msgstr "Phát hành"
+
+#: platform/android/export/export_plugin.cpp
+msgid "One Click Deploy"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Clear Previous Install"
+msgstr "Cửa sổ trước"
+
+#: platform/android/export/export_plugin.cpp scene/resources/shader.cpp
+msgid "Code"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Min SDK"
+msgstr "Kích cỡ viá»n:"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Target SDK"
+msgstr "BỠmặt mục tiêu:"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Package"
+msgstr "Äóng gói"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Unique Name"
+msgstr "Tên Node:"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Signed"
+msgstr "Tín hiệu"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Classify As Game"
+msgstr "Tên Lớp:"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Retain Data On Uninstall"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Exclude From Recents"
+msgstr "Xoá các nút"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Graphics"
+msgstr "Äá»™ lệch lưới:"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "OpenGL Debug"
+msgstr "Mở"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "XR Features"
+msgstr "Tính năng"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "XR Mode"
+msgstr "Chế độ Xoay"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Hand Tracking"
+msgstr "Äóng gói"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Hand Tracking Frequency"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Passthrough"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Immersive Mode"
+msgstr "Chế độ Ưu tiên"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Support Small"
+msgstr "Hỗ trợ"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Support Normal"
+msgstr "Hỗ trợ"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Support Large"
+msgstr "Hỗ trợ"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Support Xlarge"
+msgstr "Hỗ trợ"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "User Data Backup"
+msgstr "Giao diện ngưá»i dùng"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Allow"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Command Line"
+msgstr "Cộng đồng"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Extra Args"
+msgstr "Äối số mở rá»™ng được gá»i:"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "APK Expansion"
+msgstr "Äặt phép diá»…n đạt"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Salt"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Public Key"
+msgstr "Nhân bản các khoá hoạt ảnh"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Permissions"
+msgstr "Äặt phép diá»…n đạt"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Custom Permissions"
+msgstr "Chạy Cảnh Tuỳ Chá»n"
+
+#: platform/android/export/export_plugin.cpp
msgid "Select device from the list"
msgstr "Chá»n thiết bị trong danh sách"
@@ -18337,6 +19026,177 @@ msgid "The character '%s' is not allowed in Identifier."
msgstr "Không được phép có kí tá»± '%s' trong Äịnh danh."
#: platform/iphone/export/export.cpp
+msgid "App Store Team ID"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Provisioning Profile UUID Debug"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Code Sign Identity Debug"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Export Method Debug"
+msgstr "Xuất cùng gỡ lỗi"
+
+#: platform/iphone/export/export.cpp
+msgid "Provisioning Profile UUID Release"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Code Sign Identity Release"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Export Method Release"
+msgstr "Chế độ xuất:"
+
+#: platform/iphone/export/export.cpp
+msgid "Targeted Device Family"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Info"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Identifier"
+msgstr "Äịnh danh không hợp lệ:"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Signature"
+msgstr "Tín hiệu"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Short Version"
+msgstr "Phiên bản"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Copyright"
+msgstr "Góc trên phải"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Capabilities"
+msgstr "Thuộc tính"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Access Wi-Fi"
+msgstr "Thành công!"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Push Notifications"
+msgstr "Xoay ngẫu nhiên:"
+
+#: platform/iphone/export/export.cpp scene/3d/baked_lightmap.cpp
+#, fuzzy
+msgid "User Data"
+msgstr "Giao diện ngưá»i dùng"
+
+#: platform/iphone/export/export.cpp
+msgid "Accessible From Files App"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Accessible From Itunes Sharing"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Privacy"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Camera Usage Description"
+msgstr "Ná»™i dung"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Microphone Usage Description"
+msgstr "Nội dung Thuộc tính"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Photolibrary Usage Description"
+msgstr "Nội dung Thuộc tính"
+
+#: platform/iphone/export/export.cpp
+msgid "iPhone 120 X 120"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPhone 180 X 180"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 76 X 76"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 152 X 152"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 167 X 167"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "App Store 1024 X 1024"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Spotlight 40 X 40"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Spotlight 80 X 80"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Storyboard"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Use Launch Screen Storyboard"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Image Scale Mode"
+msgstr "Chế độ căn Tỉ lệ"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Custom Image @2x"
+msgstr "Cắt các nút"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Custom Image @3x"
+msgstr "Cắt các nút"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Use Custom BG Color"
+msgstr "Cắt các nút"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Custom BG Color"
+msgstr "Cắt các nút"
+
+#: platform/iphone/export/export.cpp
msgid "App Store Team ID not specified - cannot configure the project."
msgstr "App Store Team ID không được chỉ định - không thể cấu hình dự án."
@@ -18375,6 +19235,80 @@ msgstr "Không viết được file:"
#: platform/javascript/export/export.cpp
#, fuzzy
+msgid "Variant"
+msgstr "Thu phóng (theo tỉ lệ):"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Export Type"
+msgstr "Xuất ra"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "VRAM Texture Compression"
+msgstr "Äặt phép diá»…n đạt"
+
+#: platform/javascript/export/export.cpp
+msgid "For Desktop"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "For Mobile"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Html"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Export Icon"
+msgstr "Mở rộng Tất cả"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Custom Html Shell"
+msgstr "Cắt các nút"
+
+#: platform/javascript/export/export.cpp
+msgid "Head Include"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Canvas Resize Policy"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Focus Canvas On Start"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Experimental Virtual Keyboard"
+msgstr "Lá»c tín hiệu"
+
+#: platform/javascript/export/export.cpp
+msgid "Progressive Web App"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Offline Page"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 144 X 144"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 180 X 180"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 512 X 512"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
msgid "Could not read HTML shell:"
msgstr "Không Ä‘á»c được file hình khởi động:"
@@ -18490,6 +19424,201 @@ msgid "Unknown object type."
msgstr ""
#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "App Category"
+msgstr "Danh mục:"
+
+#: platform/osx/export/export.cpp
+msgid "High Res"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Location Usage Description"
+msgstr "Ná»™i dung"
+
+#: platform/osx/export/export.cpp
+msgid "Address Book Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Calendar Usage Description"
+msgstr "Ná»™i dung"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Photos Library Usage Description"
+msgstr "Nội dung Thuộc tính"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Desktop Folder Usage Description"
+msgstr "Mô tả phương thức"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Documents Folder Usage Description"
+msgstr "Mô tả phương thức"
+
+#: platform/osx/export/export.cpp
+msgid "Downloads Folder Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Network Volumes Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Removable Volumes Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#, fuzzy
+msgid "Codesign"
+msgstr "Nút"
+
+#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Identity"
+msgstr "Thụt lỠTrái"
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#, fuzzy
+msgid "Timestamp"
+msgstr "Thá»i gian"
+
+#: platform/osx/export/export.cpp
+msgid "Hardened Runtime"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Replace Existing Signature"
+msgstr "Thay thế tất cả"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Entitlements"
+msgstr "Ná»™i dung:"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Custom File"
+msgstr "Cắt các nút"
+
+#: platform/osx/export/export.cpp
+msgid "Allow JIT Code Execution"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Allow Unsigned Executable Memory"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Allow Dyld Environment Variables"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Disable Library Validation"
+msgstr "Tắt"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Audio Input"
+msgstr "Thêm Input"
+
+#: platform/osx/export/export.cpp
+msgid "Address Book"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Calendars"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Photos Library"
+msgstr "Xuất thư viện ra"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Apple Events"
+msgstr "Thêm Sự kiện"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Debugging"
+msgstr "Gỡ lỗi"
+
+#: platform/osx/export/export.cpp
+msgid "App Sandbox"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Network Server"
+msgstr "Xuất hồ sơ"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Network Client"
+msgstr "Xuất hồ sơ"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Device Usb"
+msgstr "Thiết bị"
+
+#: platform/osx/export/export.cpp
+msgid "Device Bluetooth"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Files Downloads"
+msgstr "Tải"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Files Pictures"
+msgstr "Tính năng"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Files Music"
+msgstr "Tệp"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Files Movies"
+msgstr "Lá»c ô"
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#, fuzzy
+msgid "Custom Options"
+msgstr "Tùy chá»n Bus"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Notarization"
+msgstr "Bản địa hoá"
+
+#: platform/osx/export/export.cpp
+msgid "Apple ID Name"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Apple ID Password"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Apple Team ID"
+msgstr ""
+
+#: platform/osx/export/export.cpp
msgid ""
"Note: The notarization process generally takes less than an hour. When the "
"process is completed, you'll receive an email."
@@ -18683,6 +19812,136 @@ msgid "Force Builtin Codesign"
msgstr ""
#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Architecture"
+msgstr "Thêm mục kiến trúc máy"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Display Name"
+msgstr "Hiển thị tất cả"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Short Name"
+msgstr "Tên Mã lệnh:"
+
+#: platform/uwp/export/export.cpp
+msgid "Publisher"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Publisher Display Name"
+msgstr "Gói có tên hiển thị của nhà phát hành không hợp lệ."
+
+#: platform/uwp/export/export.cpp
+msgid "Product Guid"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Publisher Guid"
+msgstr "Xóa hết đưá»ng căn"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Signing"
+msgstr "Tín hiệu"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Certificate"
+msgstr "Äỉnh"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Algorithm"
+msgstr "Trình gỡ lỗi"
+
+#: platform/uwp/export/export.cpp
+msgid "Major"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Minor"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Build"
+msgstr "Chế độ thước"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Revision"
+msgstr "Äặt phép diá»…n đạt"
+
+#: platform/uwp/export/export.cpp
+msgid "Landscape"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Portrait"
+msgstr "Lật Ngang"
+
+#: platform/uwp/export/export.cpp
+msgid "Landscape Flipped"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Portrait Flipped"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Store Logo"
+msgstr "Chế độ căn Tỉ lệ"
+
+#: platform/uwp/export/export.cpp
+msgid "Square 44 X 44 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 71 X 71 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 150 X 150 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 310 X 310 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Wide 310 X 150 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Splash Screen"
+msgstr "Lượt gá»i"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Tiles"
+msgstr "Tệp"
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Square 150 X 150"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Wide 310 X 150"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Square 310 X 310"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
msgid "Invalid package short name."
msgstr "Gói có tên ngắn không hợp lệ."
@@ -18748,15 +20007,53 @@ msgid "Debug Certificate"
msgstr ""
#: platform/uwp/export/export.cpp
-msgid "Debug Password"
+#, fuzzy
+msgid "Debug Algorithm"
+msgstr "Trình gỡ lỗi"
+
+#: platform/windows/export/export.cpp
+msgid "Identity Type"
msgstr ""
-#: platform/uwp/export/export.cpp
+#: platform/windows/export/export.cpp
+msgid "Timestamp Server URL"
+msgstr ""
+
+#: platform/windows/export/export.cpp
#, fuzzy
-msgid "Debug Algorithm"
+msgid "Digest Algorithm"
msgstr "Trình gỡ lỗi"
#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "File Version"
+msgstr "Phiên bản"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Product Version"
+msgstr "GUID sản phẩm không hợp lệ."
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Company Name"
+msgstr "Tên Node:"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Product Name"
+msgstr "Tên Dự án:"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "File Description"
+msgstr "Ná»™i dung"
+
+#: platform/windows/export/export.cpp
+msgid "Trademarks"
+msgstr ""
+
+#: platform/windows/export/export.cpp
msgid ""
"The rcedit tool must be configured in the Editor Settings (Export > Windows "
"> Rcedit) to change the icon or app information data."
@@ -18831,12 +20128,14 @@ msgstr "Chạy"
msgid "Centered"
msgstr "Giữa"
-#: scene/2d/animated_sprite.cpp scene/2d/camera_2d.cpp scene/2d/light_2d.cpp
+#: scene/2d/animated_sprite.cpp scene/2d/camera_2d.cpp
+#: scene/2d/cpu_particles_2d.cpp scene/2d/light_2d.cpp
#: scene/2d/parallax_background.cpp scene/2d/parallax_layer.cpp
#: scene/2d/path_2d.cpp scene/2d/polygon_2d.cpp scene/2d/sprite.cpp
-#: scene/3d/path.cpp scene/3d/physics_body.cpp scene/3d/sprite_3d.cpp
-#: scene/gui/graph_node.cpp scene/gui/rich_text_effect.cpp
-#: scene/main/canvas_layer.cpp scene/resources/material.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/path.cpp scene/3d/physics_body.cpp
+#: scene/3d/sprite_3d.cpp scene/gui/graph_node.cpp
+#: scene/gui/rich_text_effect.cpp scene/main/canvas_layer.cpp
+#: scene/resources/material.cpp scene/resources/particles_material.cpp
#: scene/resources/style_box.cpp
#, fuzzy
msgid "Offset"
@@ -18911,11 +20210,6 @@ msgstr "Thêm Bus âm thanh"
msgid "Override"
msgstr "Ghi đè"
-#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
-#: scene/audio/audio_stream_player.cpp scene/gui/video_player.cpp
-msgid "Stream"
-msgstr ""
-
#: scene/2d/audio_stream_player_2d.cpp scene/audio/audio_stream_player.cpp
#: scene/gui/video_player.cpp servers/audio/effects/audio_effect_amplify.cpp
#, fuzzy
@@ -18942,13 +20236,13 @@ msgid "Stream Paused"
msgstr ""
#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
-#: scene/3d/reflection_probe.cpp scene/3d/visual_instance.cpp
-#: scene/resources/material.cpp
+#: scene/3d/light.cpp scene/3d/reflection_probe.cpp
+#: scene/3d/visual_instance.cpp scene/resources/material.cpp
#, fuzzy
msgid "Max Distance"
msgstr "Thêm vào Cảnh"
-#: scene/2d/audio_stream_player_2d.cpp
+#: scene/2d/audio_stream_player_2d.cpp scene/3d/light.cpp
#, fuzzy
msgid "Attenuation"
msgstr "Hoạt ảnh"
@@ -19004,6 +20298,24 @@ msgstr "Chế độ Di chuyển"
msgid "Limit"
msgstr ""
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/style_box.cpp
+#, fuzzy
+msgid "Left"
+msgstr "Góc trên trái"
+
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/style_box.cpp
+#, fuzzy
+msgid "Right"
+msgstr "Ãnh sáng"
+
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/dynamic_font.cpp scene/resources/style_box.cpp
+#, fuzzy
+msgid "Bottom"
+msgstr "Góc dưới trái"
+
#: scene/2d/camera_2d.cpp
msgid "Smoothed"
msgstr ""
@@ -19237,13 +20549,6 @@ msgstr ""
msgid "Emitting"
msgstr "Cài đặt:"
-#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp scene/3d/area.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
-#: scene/resources/environment.cpp
-#, fuzzy
-msgid "Amount"
-msgstr "Số lượng:"
-
#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp
#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
msgid "Lifetime"
@@ -19308,18 +20613,13 @@ msgstr ""
#: scene/2d/mesh_instance_2d.cpp scene/2d/multimesh_instance_2d.cpp
#: scene/2d/particles_2d.cpp scene/2d/polygon_2d.cpp scene/2d/sprite.cpp
#: scene/3d/sprite_3d.cpp scene/gui/nine_patch_rect.cpp
-#: scene/gui/texture_rect.cpp scene/resources/sky.cpp
-#: scene/resources/style_box.cpp scene/resources/visual_shader_nodes.cpp
+#: scene/gui/texture_rect.cpp scene/resources/material.cpp
+#: scene/resources/sky.cpp scene/resources/style_box.cpp
+#: scene/resources/visual_shader_nodes.cpp
#, fuzzy
msgid "Texture"
msgstr "Văn bản"
-#: scene/2d/cpu_particles_2d.cpp scene/2d/mesh_instance_2d.cpp
-#: scene/2d/multimesh_instance_2d.cpp scene/2d/particles_2d.cpp
-#: scene/2d/sprite.cpp scene/resources/style_box.cpp
-msgid "Normal Map"
-msgstr ""
-
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
#, fuzzy
@@ -19342,10 +20642,10 @@ msgid "Normals"
msgstr "Äịnh dạng"
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/3d/sprite_3d.cpp scene/resources/material.cpp
-#: scene/resources/particles_material.cpp scene/resources/texture.cpp
-msgid "Flags"
-msgstr ""
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Align Y"
+msgstr "Gán"
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
@@ -19366,6 +20666,12 @@ msgid "Initial Velocity"
msgstr "Khởi tạo"
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Velocity Random"
+msgstr "Khởi tạo"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp servers/physics_2d_server.cpp
#: servers/physics_server.cpp
msgid "Angular Velocity"
@@ -19373,6 +20679,12 @@ msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Velocity Curve"
+msgstr "Khởi tạo"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
msgid "Orbit Velocity"
msgstr ""
@@ -19384,6 +20696,23 @@ msgstr "Tịnh tuyến"
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Accel"
+msgstr "Thành công!"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Accel Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Accel Curve"
+msgstr "Chia đưá»ng Curve"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
msgid "Radial Accel"
msgstr ""
@@ -19393,19 +20722,55 @@ msgid "Tangential Accel"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/2d/joints_2d.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/vehicle_body.cpp
-#: scene/resources/particles_material.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/physics_joint.cpp
+#: scene/3d/vehicle_body.cpp scene/resources/particles_material.cpp
#: servers/audio/effects/audio_effect_reverb.cpp
msgid "Damping"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+msgid "Damping Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Damping Curve"
+msgstr "Chia đưá»ng Curve"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp scene/3d/light.cpp
+#: scene/resources/particles_material.cpp
msgid "Angle"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+msgid "Angle Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Angle Curve"
+msgstr "Äóng đưá»ng cong"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#, fuzzy
+msgid "Scale Amount"
+msgstr "Số lượng:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+msgid "Scale Amount Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#, fuzzy
+msgid "Scale Amount Curve"
+msgstr "Scale từ trỠchuột"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
#, fuzzy
msgid "Color Ramp"
msgstr "Màu"
@@ -19421,6 +20786,48 @@ msgstr ""
msgid "Hue Variation"
msgstr "Thu phóng (theo tỉ lệ):"
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Variation"
+msgstr "Thu phóng (theo tỉ lệ):"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Variation Random"
+msgstr "Thu phóng (theo tỉ lệ):"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Variation Curve"
+msgstr "Thu phóng (theo tỉ lệ):"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Speed Random"
+msgstr "Tỷ lệ:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Speed Curve"
+msgstr "Chia đưá»ng Curve"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Offset Random"
+msgstr "Äá»™ dá»i:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Offset Curve"
+msgstr "Äóng đưá»ng cong"
+
#: scene/2d/joints_2d.cpp
msgid "Node A and Node B must be PhysicsBody2Ds"
msgstr "Nút A và Nút B phải là PhysicsBody2D"
@@ -19452,6 +20859,7 @@ msgid "Node B"
msgstr "Nút"
#: scene/2d/joints_2d.cpp scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp
+#: scene/3d/light.cpp scene/3d/physics_joint.cpp
#: scene/resources/environment.cpp
msgid "Bias"
msgstr ""
@@ -19461,7 +20869,7 @@ msgstr ""
msgid "Disable Collision"
msgstr "Tắt"
-#: scene/2d/joints_2d.cpp
+#: scene/2d/joints_2d.cpp scene/3d/physics_joint.cpp
msgid "Softness"
msgstr ""
@@ -19479,7 +20887,7 @@ msgstr "Khởi tạo"
msgid "Rest Length"
msgstr ""
-#: scene/2d/joints_2d.cpp scene/3d/vehicle_body.cpp
+#: scene/2d/joints_2d.cpp scene/3d/physics_joint.cpp scene/3d/vehicle_body.cpp
msgid "Stiffness"
msgstr ""
@@ -19500,7 +20908,7 @@ msgid "Texture Scale"
msgstr "TextureRegion"
#: scene/2d/light_2d.cpp scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp
-#: scene/resources/environment.cpp scene/resources/sky.cpp
+#: scene/3d/light.cpp scene/resources/environment.cpp scene/resources/sky.cpp
msgid "Energy"
msgstr ""
@@ -19541,12 +20949,6 @@ msgstr "Góc nhìn lưng"
msgid "Gradient Length"
msgstr "Dải màu đã được chỉnh sửa"
-#: scene/2d/light_2d.cpp scene/gui/control.cpp
-#: scene/resources/navigation_mesh.cpp
-#, fuzzy
-msgid "Filter"
-msgstr "Lá»c:"
-
#: scene/2d/light_2d.cpp
#, fuzzy
msgid "Filter Smooth"
@@ -19977,11 +21379,6 @@ msgid "Applied Forces"
msgstr ""
#: scene/2d/physics_body_2d.cpp
-#, fuzzy
-msgid "Force"
-msgstr "Lưới nguồn:"
-
-#: scene/2d/physics_body_2d.cpp
msgid "Torque"
msgstr ""
@@ -19997,7 +21394,7 @@ msgstr "Khung hình Vật lý %"
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
#, fuzzy
-msgid "Moving platform"
+msgid "Moving Platform"
msgstr "Ná»n tảng"
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
@@ -20006,7 +21403,7 @@ msgstr ""
#: scene/2d/physics_body_2d.cpp scene/2d/touch_screen_button.cpp
#: scene/3d/physics_body.cpp scene/gui/texture_button.cpp
-#: scene/resources/line_shape_2d.cpp
+#: scene/resources/line_shape_2d.cpp scene/resources/material.cpp
#, fuzzy
msgid "Normal"
msgstr "Äịnh dạng"
@@ -20246,6 +21643,34 @@ msgid ""
"as parent."
msgstr ""
+#: scene/2d/visibility_notifier_2d.cpp scene/3d/visibility_notifier.cpp
+#, fuzzy
+msgid "Pause Animations"
+msgstr "Dán Hoạt ảnh"
+
+#: scene/2d/visibility_notifier_2d.cpp scene/3d/visibility_notifier.cpp
+msgid "Freeze Bodies"
+msgstr ""
+
+#: scene/2d/visibility_notifier_2d.cpp
+#, fuzzy
+msgid "Pause Particles"
+msgstr "Hạt"
+
+#: scene/2d/visibility_notifier_2d.cpp
+#, fuzzy
+msgid "Pause Animated Sprites"
+msgstr "Dán Hoạt ảnh"
+
+#: scene/2d/visibility_notifier_2d.cpp
+#, fuzzy
+msgid "Process Parent"
+msgstr "Chỉnh độ ưu tiên của ô"
+
+#: scene/2d/visibility_notifier_2d.cpp
+msgid "Physics Process Parent"
+msgstr ""
+
#: scene/3d/area.cpp
msgid "Reverb Bus"
msgstr ""
@@ -20344,6 +21769,7 @@ msgid "Attenuation Filter"
msgstr ""
#: scene/3d/audio_stream_player_3d.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
#: servers/audio/effects/audio_effect_filter.cpp
msgid "Cutoff Hz"
msgstr ""
@@ -20388,11 +21814,6 @@ msgid "Octree"
msgstr "Cây con"
#: scene/3d/baked_lightmap.cpp
-#, fuzzy
-msgid "User Data"
-msgstr "Giao diện ngưá»i dùng"
-
-#: scene/3d/baked_lightmap.cpp
msgid "Finding meshes and lights"
msgstr ""
@@ -20664,6 +22085,16 @@ msgid "Ring Axis"
msgstr "Cảnh báo"
#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Rotate Y"
+msgstr "Chế độ Xoay"
+
+#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Disable Z"
+msgstr "Các mục tắt"
+
+#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
msgid "Flatness"
msgstr ""
@@ -20704,16 +22135,11 @@ msgstr "Thư viện động"
msgid "Dynamic Range"
msgstr "Thư viện động"
-#: scene/3d/gi_probe.cpp
+#: scene/3d/gi_probe.cpp scene/3d/light.cpp
msgid "Normal Bias"
msgstr ""
#: scene/3d/gi_probe.cpp
-#, fuzzy
-msgid "Compress"
-msgstr "Thành phần"
-
-#: scene/3d/gi_probe.cpp
msgid "Plotting Meshes"
msgstr ""
@@ -20740,16 +22166,31 @@ msgstr ""
#: scene/3d/light.cpp
#, fuzzy
+msgid "Indirect Energy"
+msgstr "Nguồn phát ra: "
+
+#: scene/3d/light.cpp
+#, fuzzy
msgid "Negative"
msgstr "GDNative"
#: scene/3d/light.cpp
#, fuzzy
+msgid "Specular"
+msgstr "Chế độ thước"
+
+#: scene/3d/light.cpp
+#, fuzzy
msgid "Bake Mode"
msgstr "Chế độ Bitmask"
#: scene/3d/light.cpp
#, fuzzy
+msgid "Contact"
+msgstr "Chá»n màu"
+
+#: scene/3d/light.cpp
+#, fuzzy
msgid "Reverse Cull Face"
msgstr "Äặt lại âm lượng Bus"
@@ -20759,11 +22200,31 @@ msgid "Directional Shadow"
msgstr "Hướng đi"
#: scene/3d/light.cpp
+#, fuzzy
+msgid "Split 1"
+msgstr "Tách đưá»ng"
+
+#: scene/3d/light.cpp
+#, fuzzy
+msgid "Split 2"
+msgstr "Tách đưá»ng"
+
+#: scene/3d/light.cpp
+#, fuzzy
+msgid "Split 3"
+msgstr "Tách đưá»ng"
+
+#: scene/3d/light.cpp
msgid "Blend Splits"
msgstr ""
#: scene/3d/light.cpp
#, fuzzy
+msgid "Bias Split Scale"
+msgstr "Dính theo bước tỉ lệ"
+
+#: scene/3d/light.cpp
+#, fuzzy
msgid "Depth Range"
msgstr "Chiá»u sâu"
@@ -20789,6 +22250,11 @@ msgstr ""
msgid "Spot"
msgstr ""
+#: scene/3d/light.cpp
+#, fuzzy
+msgid "Angle Attenuation"
+msgstr "Hoạt ảnh"
+
#: scene/3d/mesh_instance.cpp
msgid "Software Skinning"
msgstr ""
@@ -20924,6 +22390,63 @@ msgstr "Trục"
#: scene/3d/physics_body.cpp
#, fuzzy
+msgid "Linear X"
+msgstr "Tịnh tuyến"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Linear Y"
+msgstr "Tịnh tuyến"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Linear Z"
+msgstr "Tịnh tuyến"
+
+#: scene/3d/physics_body.cpp
+msgid "Angular X"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Angular Y"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Angular Z"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Motion X"
+msgstr "Chá»n tất cả"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Motion Y"
+msgstr "Chá»n tất cả"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Motion Z"
+msgstr "Chá»n tất cả"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Move Lock X"
+msgstr "Di chuyển Nút"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Move Lock Y"
+msgstr "Di chuyển Nút"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Move Lock Z"
+msgstr "Di chuyển Nút"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
msgid "Body Offset"
msgstr "Äá»™ dá»i:"
@@ -20957,6 +22480,15 @@ msgid "Exclude Nodes"
msgstr "Xoá các nút"
#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Params"
+msgstr "Äối số đã thay đổi"
+
+#: scene/3d/physics_joint.cpp
+msgid "Impulse Clamp"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit"
msgstr ""
@@ -20970,6 +22502,55 @@ msgstr "Chữ hoa"
msgid "Lower"
msgstr "Chữ thưá»ng"
+#: scene/3d/physics_joint.cpp scene/3d/vehicle_body.cpp
+#, fuzzy
+msgid "Relaxation"
+msgstr "Thu phóng (theo tỉ lệ):"
+
+#: scene/3d/physics_joint.cpp
+msgid "Motor"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Target Velocity"
+msgstr "Khởi tạo"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Max Impulse"
+msgstr "Tốc độ:"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit"
+msgstr "Tịnh tuyến"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Upper Distance"
+msgstr "Thêm vào Cảnh"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Lower Distance"
+msgstr "Thêm vào Cảnh"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Restitution"
+msgstr "Ná»™i dung"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motion"
+msgstr "Khởi tạo"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Ortho"
+msgstr "Vuông góc"
+
#: scene/3d/physics_joint.cpp
#, fuzzy
msgid "Upper Angle"
@@ -20982,6 +22563,16 @@ msgstr "Chữ thưá»ng"
#: scene/3d/physics_joint.cpp
#, fuzzy
+msgid "Angular Motion"
+msgstr "Hoạt ảnh"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Angular Ortho"
+msgstr "Sai lệch góc lớn nhất:"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
msgid "Swing Span"
msgstr "Lưu cảnh"
@@ -20990,17 +22581,99 @@ msgid "Twist Span"
msgstr ""
#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit X"
+msgstr "Tịnh tuyến"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motor X"
+msgstr "Khởi tạo"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Force Limit"
+msgstr "Lượt gá»i"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Spring X"
+msgstr "Tịnh tuyến"
+
+#: scene/3d/physics_joint.cpp
+msgid "Equilibrium Point"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit X"
msgstr ""
#: scene/3d/physics_joint.cpp
+msgid "Erp"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Motor X"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Spring X"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit Y"
+msgstr "Tịnh tuyến"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motor Y"
+msgstr "Khởi tạo"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Spring Y"
+msgstr "Tịnh tuyến"
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit Y"
msgstr ""
#: scene/3d/physics_joint.cpp
+msgid "Angular Motor Y"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Spring Y"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit Z"
+msgstr "Tịnh tuyến"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motor Z"
+msgstr "Khởi tạo"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Spring Z"
+msgstr "Tịnh tuyến"
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit Z"
msgstr ""
+#: scene/3d/physics_joint.cpp
+msgid "Angular Motor Z"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Spring Z"
+msgstr ""
+
#: scene/3d/portal.cpp
msgid "The RoomManager should not be a child or grandchild of a Portal."
msgstr ""
@@ -21117,7 +22790,7 @@ msgstr ""
msgid "Use Default Simplify"
msgstr ""
-#: scene/3d/room.cpp
+#: scene/3d/room.cpp scene/3d/room_manager.cpp
msgid "Room Simplify"
msgstr ""
@@ -21156,6 +22829,13 @@ msgstr ""
msgid "Main"
msgstr ""
+#: scene/3d/room_manager.cpp scene/animation/animation_player.cpp
+#: scene/animation/animation_tree.cpp scene/animation/animation_tree_player.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+#, fuzzy
+msgid "Active"
+msgstr "Chá»n tất cả"
+
#: scene/3d/room_manager.cpp
msgid "Roomlist"
msgstr ""
@@ -21180,6 +22860,54 @@ msgid "Gameplay"
msgstr ""
#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Gameplay Monitor"
+msgstr "Màn hình"
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Use Secondary PVS"
+msgstr "Dính theo bước tỉ lệ"
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Merge Meshes"
+msgstr "Lưới"
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Show Margins"
+msgstr "Hiện Gốc"
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Debug Sprawl"
+msgstr "Gỡ lỗi"
+
+#: scene/3d/room_manager.cpp
+msgid "Overlap Warning Threshold"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Preview Camera"
+msgstr "Xem thá»­"
+
+#: scene/3d/room_manager.cpp
+msgid "Portal Depth Limit"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Default Portal Margin"
+msgstr "Äặt Lá»"
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Roaming Expansion Margin"
+msgstr "Mở rộng Tất cả"
+
+#: scene/3d/room_manager.cpp
msgid ""
"RoomList path is invalid.\n"
"Please check the RoomList branch has been assigned in the RoomManager."
@@ -21306,6 +23034,20 @@ msgstr "Dính Äiểm ảnh"
msgid "Billboard"
msgstr ""
+#: scene/3d/sprite_3d.cpp scene/resources/material.cpp
+#, fuzzy
+msgid "Transparent"
+msgstr "Chuyển vị"
+
+#: scene/3d/sprite_3d.cpp
+#, fuzzy
+msgid "Shaded"
+msgstr "Shader"
+
+#: scene/3d/sprite_3d.cpp
+msgid "Double Sided"
+msgstr ""
+
#: scene/3d/sprite_3d.cpp
msgid "Alpha Cut"
msgstr ""
@@ -21377,11 +23119,6 @@ msgstr "Äặt phép diá»…n đạt"
msgid "Max Force"
msgstr "Lá»—i"
-#: scene/3d/vehicle_body.cpp
-#, fuzzy
-msgid "Relaxation"
-msgstr "Thu phóng (theo tỉ lệ):"
-
#: scene/3d/visibility_notifier.cpp
msgid "AABB"
msgstr ""
@@ -21518,7 +23255,7 @@ msgstr ""
#: scene/animation/animation_blend_tree.cpp
#, fuzzy
-msgid "autorestart_"
+msgid "Auto Restart"
msgstr "Tự khởi động lại:"
#: scene/animation/animation_blend_tree.cpp
@@ -21603,13 +23340,6 @@ msgstr "Tuỳ chá»n Lá»›p:"
msgid "Default Blend Time"
msgstr "Mặc định"
-#: scene/animation/animation_player.cpp scene/animation/animation_tree.cpp
-#: scene/animation/animation_tree_player.cpp
-#: servers/audio/effects/audio_effect_delay.cpp
-#, fuzzy
-msgid "Active"
-msgstr "Chá»n tất cả"
-
#: scene/animation/animation_player.cpp
msgid "Method Call Mode"
msgstr ""
@@ -21735,10 +23465,6 @@ msgstr "Äổi mẹ cá»§a nút"
msgid "Max Iterations"
msgstr "Tạo Hàm"
-#: scene/animation/tween.cpp scene/resources/texture.cpp
-msgid "Repeat"
-msgstr ""
-
#: scene/animation/tween.cpp
msgid "Playback Process Mode"
msgstr ""
@@ -21768,20 +23494,6 @@ msgstr "Chế độ chá»n"
msgid "Alignment"
msgstr ""
-#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
-#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
-#: scene/resources/style_box.cpp
-#, fuzzy
-msgid "Horizontal"
-msgstr "Ngang:"
-
-#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
-#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
-#: scene/resources/style_box.cpp
-#, fuzzy
-msgid "Vertical"
-msgstr "Dá»c:"
-
#: scene/gui/base_button.cpp
#, fuzzy
msgid "Shortcut In Tooltip"
@@ -21880,10 +23592,6 @@ msgid "HSV"
msgstr ""
#: scene/gui/color_picker.cpp
-msgid "Raw"
-msgstr ""
-
-#: scene/gui/color_picker.cpp
msgid "Switch between hexadecimal and code values."
msgstr ""
@@ -21944,6 +23652,31 @@ msgid "Focus"
msgstr "ÄÆ°á»ng dẫn Tập trung"
#: scene/gui/control.cpp
+msgid "Neighbour Left"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Neighbour Top"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Neighbour Right"
+msgstr ""
+
+#: scene/gui/control.cpp
+#, fuzzy
+msgid "Neighbour Bottom"
+msgstr "Dưới giữa"
+
+#: scene/gui/control.cpp
+msgid "Next"
+msgstr "Tiếp theo"
+
+#: scene/gui/control.cpp
+msgid "Previous"
+msgstr "Trước đó"
+
+#: scene/gui/control.cpp
msgid "Mouse"
msgstr ""
@@ -21980,7 +23713,7 @@ msgid "Dialog"
msgstr ""
#: scene/gui/dialogs.cpp
-msgid "Hide On Ok"
+msgid "Hide On OK"
msgstr ""
#: scene/gui/dialogs.cpp scene/gui/label.cpp
@@ -22079,7 +23812,7 @@ msgid "Timers"
msgstr "Thá»i gian"
#: scene/gui/item_list.cpp scene/gui/popup_menu.cpp scene/gui/tree.cpp
-msgid "Incremental Search Max Interval (msec)"
+msgid "Incremental Search Max Interval Msec"
msgstr ""
#: scene/gui/item_list.cpp scene/gui/tree.cpp
@@ -22655,6 +24388,26 @@ msgstr "Giữa bên trái"
msgid "Nine Patch Stretch"
msgstr "Ná»™i suy"
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Left"
+msgstr "Äặt Lá»"
+
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Top"
+msgstr "Äặt Lá»"
+
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Right"
+msgstr "Äặt Lá»"
+
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Bottom"
+msgstr "Chế độ chá»n"
+
#: scene/gui/tree.cpp
msgid "Custom Minimum Height"
msgstr ""
@@ -22691,8 +24444,9 @@ msgid "Paused"
msgstr ""
#: scene/gui/video_player.cpp
-msgid "Buffering (msec)"
-msgstr ""
+#, fuzzy
+msgid "Buffering Msec"
+msgstr "Góc nhìn lưng"
#: scene/gui/video_player.cpp
#, fuzzy
@@ -23042,6 +24796,22 @@ msgid "Shadow Atlas"
msgstr "Tập bản đồ mới"
#: scene/main/viewport.cpp
+msgid "Quad 0"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 1"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 2"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 3"
+msgstr ""
+
+#: scene/main/viewport.cpp
#, fuzzy
msgid "Canvas Transform"
msgstr "Xóa biến đổi"
@@ -23056,6 +24826,11 @@ msgid "Tooltip Delay (sec)"
msgstr ""
#: scene/register_scene_types.cpp
+#, fuzzy
+msgid "Swap OK Cancel"
+msgstr "Huá»· bá»"
+
+#: scene/register_scene_types.cpp
msgid "Use hiDPI"
msgstr ""
@@ -23070,21 +24845,6 @@ msgid "Custom Font"
msgstr "Cắt các nút"
#: scene/resources/audio_stream_sample.cpp
-#, fuzzy
-msgid "Loop Mode"
-msgstr "Chế độ Di chuyển"
-
-#: scene/resources/audio_stream_sample.cpp
-#, fuzzy
-msgid "Loop Begin"
-msgstr "Chế độ Di chuyển"
-
-#: scene/resources/audio_stream_sample.cpp
-#, fuzzy
-msgid "Loop End"
-msgstr "Chế độ Di chuyển"
-
-#: scene/resources/audio_stream_sample.cpp
#: servers/audio/effects/audio_stream_generator.cpp servers/audio_server.cpp
#, fuzzy
msgid "Mix Rate"
@@ -23144,6 +24904,17 @@ msgstr "Tuỳ chá»n bổ sung:"
#: scene/resources/dynamic_font.cpp
#, fuzzy
+msgid "Char"
+msgstr "Ký tự hợp lệ:"
+
+#: scene/resources/dynamic_font.cpp scene/resources/world.cpp
+#: scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Space"
+msgstr "Cảnh chính"
+
+#: scene/resources/dynamic_font.cpp
+#, fuzzy
msgid "Font"
msgstr "Phông chữ"
@@ -23369,6 +25140,43 @@ msgid "Glow"
msgstr ""
#: scene/resources/environment.cpp
+#, fuzzy
+msgid "Levels"
+msgstr "Nhà phát triển"
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "1"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "2"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "3"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "4"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "5"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "6"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "7"
+msgstr ""
+
+#: scene/resources/environment.cpp
msgid "Bloom"
msgstr ""
@@ -23461,10 +25269,67 @@ msgid "Next Pass"
msgstr "Mặt phẳng tiếp theo"
#: scene/resources/material.cpp
+msgid "Use Shadow To Opacity"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Unshaded"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Vertex Lighting"
+msgstr "Hướng đi"
+
+#: scene/resources/material.cpp
+msgid "No Depth Test"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Use Point Size"
+msgstr "Góc nhìn trực diện"
+
+#: scene/resources/material.cpp
+msgid "World Triplanar"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Fixed Size"
+msgstr "Góc nhìn trực diện"
+
+#: scene/resources/material.cpp
+msgid "Albedo Tex Force sRGB"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Do Not Receive Shadows"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Disable Ambient Light"
+msgstr "Thụt lỠphải"
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Ensure Correct Normals"
+msgstr "Hủy Biến đổi."
+
+#: scene/resources/material.cpp
#, fuzzy
msgid "Vertex Color"
msgstr "Äỉnh"
+#: scene/resources/material.cpp
+msgid "Use As Albedo"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Is sRGB"
+msgstr ""
+
#: scene/resources/material.cpp servers/visual_server.cpp
#, fuzzy
msgid "Parameters"
@@ -23501,6 +25366,11 @@ msgid "Billboard Mode"
msgstr "Chế độ thước"
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Billboard Keep Scale"
+msgstr "Chế độ thước"
+
+#: scene/resources/material.cpp
msgid "Grow"
msgstr ""
@@ -23510,6 +25380,10 @@ msgid "Grow Amount"
msgstr "Số lượng:"
#: scene/resources/material.cpp
+msgid "Use Alpha Scissor"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Alpha Scissor Threshold"
msgstr ""
@@ -23541,10 +25415,20 @@ msgid "Metallic Specular"
msgstr ""
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Metallic Texture"
+msgstr "Nguồn phát ra: "
+
+#: scene/resources/material.cpp
msgid "Metallic Texture Channel"
msgstr ""
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Roughness Texture"
+msgstr "Xóa Há»a tiết"
+
+#: scene/resources/material.cpp
msgid "Roughness Texture Channel"
msgstr ""
@@ -23564,6 +25448,16 @@ msgid "Emission Operator"
msgstr "Nguồn phát ra: "
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Emission On UV2"
+msgstr "Äặt phép diá»…n đạt"
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Emission Texture"
+msgstr "Nguồn phát ra: "
+
+#: scene/resources/material.cpp
msgid "NormalMap"
msgstr ""
@@ -23578,6 +25472,11 @@ msgstr "Nghiêng ngẫu nhiên:"
#: scene/resources/material.cpp
#, fuzzy
+msgid "Rim Texture"
+msgstr "Xóa Há»a tiết"
+
+#: scene/resources/material.cpp
+#, fuzzy
msgid "Clearcoat"
msgstr "Xoá"
@@ -23587,15 +25486,28 @@ msgid "Clearcoat Gloss"
msgstr "Xoá sạch tư thế"
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Clearcoat Texture"
+msgstr "Chỉnh Tông màu"
+
+#: scene/resources/material.cpp
msgid "Anisotropy"
msgstr ""
#: scene/resources/material.cpp
+msgid "Anisotropy Flowmap"
+msgstr ""
+
+#: scene/resources/material.cpp
#, fuzzy
msgid "Ambient Occlusion"
msgstr "Tạo"
#: scene/resources/material.cpp
+msgid "On UV2"
+msgstr ""
+
+#: scene/resources/material.cpp
#, fuzzy
msgid "Texture Channel"
msgstr "TextureRegion"
@@ -23634,6 +25546,11 @@ msgstr "Chuyển tiếp: "
#: scene/resources/material.cpp
#, fuzzy
+msgid "Transmission Texture"
+msgstr "Chuyển tiếp: "
+
+#: scene/resources/material.cpp
+#, fuzzy
msgid "Refraction"
msgstr "Thu phóng (theo tỉ lệ):"
@@ -23652,6 +25569,10 @@ msgid "UV1"
msgstr "UV"
#: scene/resources/material.cpp
+msgid "Triplanar"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Triplanar Sharpness"
msgstr ""
@@ -23858,6 +25779,16 @@ msgstr "Chỉnh Tông màu"
msgid "Point Count"
msgstr "Thêm cổng vào"
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Scale Random"
+msgstr "Tỉ lệ phóng đại:"
+
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Scale Curve"
+msgstr "Äóng đưá»ng cong"
+
#: scene/resources/physics_material.cpp
msgid "Rough"
msgstr ""
@@ -23920,10 +25851,6 @@ msgid "A"
msgstr ""
#: scene/resources/shader.cpp
-msgid "Code"
-msgstr ""
-
-#: scene/resources/shader.cpp
#, fuzzy
msgid "Custom Defines"
msgstr "Chạy Cảnh Tuỳ Chá»n"
@@ -24020,15 +25947,6 @@ msgstr ""
#: scene/resources/texture.cpp
#, fuzzy
-msgid "Storage"
-msgstr "Lưu trữ tệp tin:"
-
-#: scene/resources/texture.cpp
-msgid "Lossy Quality"
-msgstr ""
-
-#: scene/resources/texture.cpp
-#, fuzzy
msgid "Load Path"
msgstr "Nạp cài đặt trước"
@@ -24157,11 +26075,6 @@ msgstr "nguồn vô hiệu cho shader."
msgid "Fallback Environment"
msgstr ""
-#: scene/resources/world.cpp scene/resources/world_2d.cpp
-#, fuzzy
-msgid "Space"
-msgstr "Cảnh chính"
-
#: scene/resources/world.cpp
#, fuzzy
msgid "Scenario"
@@ -24242,10 +26155,37 @@ msgstr ""
msgid "Wet"
msgstr ""
-#: servers/audio/effects/audio_effect_compressor.cpp
-msgid "Threshold"
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "Voice"
msgstr ""
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+msgid "Delay (ms)"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_phaser.cpp
+msgid "Rate Hz"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#, fuzzy
+msgid "Depth (ms)"
+msgstr "Chiá»u sâu"
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+msgid "Level dB"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+#: servers/audio/effects/audio_effect_panner.cpp
+#, fuzzy
+msgid "Pan"
+msgstr "Mặt phẳng:"
+
#: servers/audio/effects/audio_effect_compressor.cpp
#: servers/audio/effects/audio_effect_filter.cpp
msgid "Gain"
@@ -24269,20 +26209,6 @@ msgid "Tap 1"
msgstr ""
#: servers/audio/effects/audio_effect_delay.cpp
-msgid "Delay (ms)"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_delay.cpp
-msgid "Level dB"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_delay.cpp
-#: servers/audio/effects/audio_effect_panner.cpp
-#, fuzzy
-msgid "Pan"
-msgstr "Mặt phẳng:"
-
-#: servers/audio/effects/audio_effect_delay.cpp
msgid "Tap 2"
msgstr ""
@@ -24344,10 +26270,6 @@ msgstr ""
msgid "Range Max Hz"
msgstr ""
-#: servers/audio/effects/audio_effect_phaser.cpp
-msgid "Rate Hz"
-msgstr ""
-
#: servers/audio/effects/audio_effect_pitch_shift.cpp
msgid "Oversampling"
msgstr ""
@@ -24363,7 +26285,7 @@ msgid "Predelay"
msgstr ""
#: servers/audio/effects/audio_effect_reverb.cpp
-msgid "(msec)"
+msgid "Msec"
msgstr ""
#: servers/audio/effects/audio_effect_reverb.cpp
diff --git a/editor/translations/zh_CN.po b/editor/translations/zh_CN.po
index 9dfec92ed8..9d822f7c6a 100644
--- a/editor/translations/zh_CN.po
+++ b/editor/translations/zh_CN.po
@@ -83,13 +83,14 @@
# è‹è½¼ <youwanyuyu@gmail.com>, 2021.
# nitenook <admin@alterbaum.net>, 2021.
# jker <cxgmfy@163.com>, 2021.
+# Ankar <1511276198@qq.com>, 2022.
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: 2022-03-18 10:46+0000\n"
-"Last-Translator: suplife <2634557184@qq.com>\n"
+"PO-Revision-Date: 2022-03-26 23:26+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"
"Language: zh_CN\n"
@@ -99,29 +100,25 @@ msgstr ""
"Plural-Forms: nplurals=1; plural=0;\n"
"X-Generator: Weblate 4.12-dev\n"
-#: core/bind/core_bind.cpp
-#, fuzzy
+#: core/bind/core_bind.cpp main/main.cpp
msgid "Tablet Driver"
-msgstr "驱动"
+msgstr "å¹³æ¿é©±åЍ"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Clipboard"
-msgstr "公告æ¿"
+msgstr "剪贴æ¿"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Current Screen"
-msgstr "当å‰åœºæ™¯"
+msgstr "当å‰å±å¹•"
#: core/bind/core_bind.cpp
msgid "Exit Code"
-msgstr ""
+msgstr "退出ç "
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "V-Sync Enabled"
-msgstr "å¯ç”¨"
+msgstr "å¯ç”¨åž‚ç›´åŒæ­¥"
#: core/bind/core_bind.cpp main/main.cpp
msgid "V-Sync Via Compositor"
@@ -132,28 +129,24 @@ msgid "Delta Smoothing"
msgstr "增é‡å¹³æ»‘"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Low Processor Usage Mode"
-msgstr "低处ç†å™¨æ¨¡å¼"
+msgstr "低处ç†å™¨ä½¿ç”¨æ¨¡å¼"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Low Processor Usage Mode Sleep (µsec)"
-msgstr "低处ç†å™¨æ¨¡å¼ç¡çœ ï¼ˆå¾®ç§’)"
+msgstr "低处ç†å™¨ä½¿ç”¨æ¨¡å¼ç¡çœ ï¼ˆå¾®ç§’)"
#: core/bind/core_bind.cpp main/main.cpp platform/uwp/os_uwp.cpp
msgid "Keep Screen On"
msgstr "å±å¹•常亮"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Min Window Size"
-msgstr "窗å£å¯¹æ•°å¤§å°"
+msgstr "çª—å£æœ€å°å¤§å°"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Max Window Size"
-msgstr "窗å£å¯¹æ•°å¤§å°"
+msgstr "çª—å£æœ€å¤§å¤§å°"
#: core/bind/core_bind.cpp
msgid "Screen Orientation"
@@ -168,9 +161,8 @@ msgid "Borderless"
msgstr "无边框"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Per Pixel Transparency Enabled"
-msgstr "åƒç´ çº§é€æ˜Ž"
+msgstr "å¯ç”¨åƒç´ çº§é€æ˜Ž"
#: core/bind/core_bind.cpp main/main.cpp
msgid "Fullscreen"
@@ -178,12 +170,11 @@ msgstr "å…¨å±"
#: core/bind/core_bind.cpp
msgid "Maximized"
-msgstr ""
+msgstr "最大化"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Minimized"
-msgstr "最å°å®½åº¦"
+msgstr "最å°åŒ–"
#: core/bind/core_bind.cpp main/main.cpp scene/gui/dialogs.cpp
#: scene/gui/graph_node.cpp
@@ -194,15 +185,14 @@ msgstr "å¯è°ƒæ•´å¤§å°"
#: scene/2d/physics_body_2d.cpp scene/2d/remote_transform_2d.cpp
#: scene/3d/physics_body.cpp scene/3d/remote_transform.cpp
#: scene/gui/control.cpp scene/gui/line_edit.cpp
-#, fuzzy
msgid "Position"
-msgstr "颿¿ä½ç½®"
+msgstr "ä½ç½®"
#: core/bind/core_bind.cpp editor/editor_settings.cpp main/main.cpp
#: modules/gdscript/gdscript_editor.cpp modules/gridmap/grid_map.cpp
#: modules/mono/csharp_script.cpp modules/visual_script/visual_script_nodes.cpp
-#: scene/2d/tile_map.cpp scene/3d/camera.cpp scene/gui/control.cpp
-#: scene/gui/graph_edit.cpp scene/main/viewport.cpp
+#: scene/2d/tile_map.cpp scene/3d/camera.cpp scene/3d/light.cpp
+#: scene/gui/control.cpp scene/gui/graph_edit.cpp scene/main/viewport.cpp
#: scene/resources/dynamic_font.cpp scene/resources/navigation_mesh.cpp
#: scene/resources/primitive_meshes.cpp scene/resources/sky.cpp
#: scene/resources/style_box.cpp scene/resources/texture.cpp
@@ -212,31 +202,27 @@ msgstr "大å°"
#: core/bind/core_bind.cpp
msgid "Endian Swap"
-msgstr ""
+msgstr "切æ¢å­—节åº"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Editor Hint"
-msgstr "编辑器侧边"
+msgstr "编辑器æç¤º"
#: core/bind/core_bind.cpp
msgid "Print Error Messages"
-msgstr ""
+msgstr "打å°é”™è¯¯æ¶ˆæ¯"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Iterations Per Second"
-msgstr "æ¯ç§’最大警告数"
+msgstr "æ¯ç§’迭代数"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Target FPS"
-msgstr "目标"
+msgstr "目标 FPS"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Time Scale"
-msgstr "TimeScale 节点"
+msgstr "时间缩放"
#: core/bind/core_bind.cpp main/main.cpp
msgid "Physics Jitter Fix"
@@ -247,14 +233,12 @@ msgid "Error"
msgstr "错误"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Error String"
-msgstr "ä¿å­˜å‡ºé”™"
+msgstr "出错字符串"
#: core/bind/core_bind.cpp
-#, fuzzy
msgid "Error Line"
-msgstr "ä¿å­˜å‡ºé”™"
+msgstr "出错行å·"
#: core/bind/core_bind.cpp
msgid "Result"
@@ -301,8 +285,7 @@ msgid "Data"
msgstr "æ•°æ®"
#: core/io/file_access_network.cpp core/register_core_types.cpp
-#: editor/editor_settings.cpp editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp main/main.cpp
+#: editor/editor_settings.cpp main/main.cpp
#: modules/gdscript/language_server/gdscript_language_server.cpp
msgid "Network"
msgstr "网络"
@@ -321,7 +304,7 @@ msgstr "预加载页数"
#: core/io/http_client.cpp
msgid "Blocking Mode Enabled"
-msgstr ""
+msgstr "å¯ç”¨é˜»å¡žæ¨¡å¼"
#: core/io/http_client.cpp
msgid "Connection"
@@ -332,18 +315,16 @@ msgid "Read Chunk Size"
msgstr "加载å—大å°"
#: core/io/marshalls.cpp
-#, fuzzy
msgid "Object ID"
-msgstr "绘制对象:"
+msgstr "对象 ID"
#: core/io/multiplayer_api.cpp core/io/packet_peer.cpp
-#, fuzzy
msgid "Allow Object Decoding"
-msgstr "å¯ç”¨å¯¹è±¡æ‹¾å–"
+msgstr "å…许解ç å¯¹è±¡"
#: core/io/multiplayer_api.cpp scene/main/scene_tree.cpp
msgid "Refuse New Network Connections"
-msgstr ""
+msgstr "æ‹’ç»æ–°ç½‘络连接"
#: core/io/multiplayer_api.cpp scene/main/scene_tree.cpp
msgid "Network Peer"
@@ -354,28 +335,24 @@ msgid "Root Node"
msgstr "根节点"
#: core/io/networked_multiplayer_peer.cpp
-#, fuzzy
msgid "Refuse New Connections"
-msgstr "连接"
+msgstr "æ‹’ç»æ–°è¿žæŽ¥"
#: core/io/networked_multiplayer_peer.cpp
msgid "Transfer Mode"
msgstr "传输模å¼"
#: core/io/packet_peer.cpp
-#, fuzzy
msgid "Encode Buffer Max Size"
-msgstr "分批缓冲区大å°"
+msgstr "ç¼–ç ç¼“冲区大å°ä¸Šé™"
#: core/io/packet_peer.cpp
-#, fuzzy
msgid "Input Buffer Max Size"
-msgstr "分批缓冲区大å°"
+msgstr "输入缓冲区大å°ä¸Šé™"
#: core/io/packet_peer.cpp
-#, fuzzy
msgid "Output Buffer Max Size"
-msgstr "分批缓冲区大å°"
+msgstr "输出缓冲区大å°ä¸Šé™"
#: core/io/packet_peer.cpp
msgid "Stream Peer"
@@ -383,15 +360,15 @@ msgstr "æµå¯¹ç­‰ä½“"
#: core/io/stream_peer.cpp
msgid "Big Endian"
-msgstr ""
+msgstr "大端åº"
#: core/io/stream_peer.cpp
msgid "Data Array"
-msgstr ""
+msgstr "æ•°æ®æ•°ç»„"
#: core/io/stream_peer_ssl.cpp
msgid "Blocking Handshake"
-msgstr ""
+msgstr "é˜»å¡žæ¡æ‰‹"
#: core/io/udp_server.cpp
msgid "Max Pending Connections"
@@ -443,10 +420,9 @@ msgstr "在调用 '%s' 时:"
#: core/math/random_number_generator.cpp
#: modules/opensimplex/open_simplex_noise.cpp
msgid "Seed"
-msgstr ""
+msgstr "ç§å­"
#: core/math/random_number_generator.cpp
-#, fuzzy
msgid "State"
msgstr "状æ€"
@@ -494,28 +470,24 @@ msgid "Device"
msgstr "设备"
#: core/os/input_event.cpp
-#, fuzzy
msgid "Alt"
-msgstr "全部"
+msgstr "Alt"
#: core/os/input_event.cpp
msgid "Shift"
-msgstr ""
+msgstr "Shift"
#: core/os/input_event.cpp
-#, fuzzy
msgid "Control"
-msgstr "对比度"
+msgstr "Control"
#: core/os/input_event.cpp
-#, fuzzy
msgid "Meta"
-msgstr "金属性"
+msgstr "Meta"
#: core/os/input_event.cpp
-#, fuzzy
msgid "Command"
-msgstr "通用"
+msgstr "Command"
#: core/os/input_event.cpp scene/2d/touch_screen_button.cpp
#: scene/gui/base_button.cpp scene/gui/texture_button.cpp
@@ -523,66 +495,59 @@ msgid "Pressed"
msgstr "按下"
#: core/os/input_event.cpp
-#, fuzzy
msgid "Scancode"
-msgstr "扫æ"
+msgstr "扫æç "
#: core/os/input_event.cpp
-#, fuzzy
msgid "Physical Scancode"
-msgstr "ç‰©ç†æŒ‰é”®"
+msgstr "ç‰©ç†æ‰«æç "
#: core/os/input_event.cpp
msgid "Unicode"
-msgstr ""
+msgstr "Unicode"
#: core/os/input_event.cpp
msgid "Echo"
-msgstr ""
+msgstr "回显"
#: core/os/input_event.cpp scene/gui/base_button.cpp
msgid "Button Mask"
msgstr "按钮é®ç½©"
#: core/os/input_event.cpp scene/2d/node_2d.cpp scene/gui/control.cpp
-#, fuzzy
msgid "Global Position"
-msgstr "全局旋转"
+msgstr "全局ä½ç½®"
#: core/os/input_event.cpp
-#, fuzzy
msgid "Factor"
-msgstr "å‘é‡"
+msgstr "å› ç´ "
#: core/os/input_event.cpp
-#, fuzzy
msgid "Button Index"
-msgstr "鼠标按键索引:"
+msgstr "按钮索引"
#: core/os/input_event.cpp
msgid "Doubleclick"
-msgstr ""
+msgstr "åŒå‡»"
#: core/os/input_event.cpp
msgid "Tilt"
-msgstr ""
+msgstr "倾斜"
#: core/os/input_event.cpp
-#, fuzzy
msgid "Pressure"
-msgstr "按下"
+msgstr "压力"
#: core/os/input_event.cpp
-#, fuzzy
msgid "Relative"
-msgstr "相对å¸é™„"
+msgstr "相对"
-#: core/os/input_event.cpp scene/2d/camera_2d.cpp
-#: scene/3d/interpolated_camera.cpp scene/animation/animation_player.cpp
-#: scene/resources/environment.cpp
-#, fuzzy
+#: core/os/input_event.cpp scene/2d/camera_2d.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/interpolated_camera.cpp
+#: scene/animation/animation_player.cpp scene/resources/environment.cpp
+#: scene/resources/particles_material.cpp
msgid "Speed"
-msgstr "速度:"
+msgstr "速度"
#: core/os/input_event.cpp editor/project_settings_editor.cpp
#: scene/3d/sprite_3d.cpp
@@ -590,9 +555,8 @@ msgid "Axis"
msgstr "è½´"
#: core/os/input_event.cpp
-#, fuzzy
msgid "Axis Value"
-msgstr "最å°å€¼"
+msgstr "轴值"
#: core/os/input_event.cpp modules/visual_script/visual_script_func_nodes.cpp
msgid "Index"
@@ -611,42 +575,41 @@ msgstr "强度"
#: core/os/input_event.cpp
msgid "Delta"
-msgstr ""
+msgstr "增é‡"
#: core/os/input_event.cpp
-#, fuzzy
msgid "Channel"
-msgstr "更改"
+msgstr "通é“"
#: core/os/input_event.cpp main/main.cpp
msgid "Message"
msgstr "消æ¯"
#: core/os/input_event.cpp
-#, fuzzy
msgid "Pitch"
-msgstr "俯仰角:"
+msgstr "音高"
-#: core/os/input_event.cpp scene/2d/physics_body_2d.cpp
-#: scene/3d/physics_body.cpp
-#, fuzzy
+#: core/os/input_event.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/physics_body_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/3d/physics_body.cpp scene/resources/particles_material.cpp
msgid "Velocity"
-msgstr "环绕速度"
+msgstr "速度"
#: core/os/input_event.cpp
msgid "Instrument"
-msgstr ""
+msgstr "ä¹å™¨"
#: core/os/input_event.cpp
-#, fuzzy
msgid "Controller Number"
-msgstr "行å·ï¼š"
+msgstr "控制器编å·"
#: core/os/input_event.cpp
msgid "Controller Value"
-msgstr ""
+msgstr "控制器值"
#: core/project_settings.cpp editor/editor_node.cpp main/main.cpp
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/windows/export/export.cpp
msgid "Application"
msgstr "应用"
@@ -662,13 +625,16 @@ msgstr "项目设置覆盖"
#: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp
#: editor/editor_plugin_settings.cpp editor/editor_profiler.cpp
#: editor/project_manager.cpp editor/settings_config_dialog.cpp
-#: modules/gdnative/nativescript/nativescript.cpp scene/2d/area_2d.cpp
-#: scene/3d/area.cpp scene/main/node.cpp
+#: modules/gdnative/nativescript/nativescript.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/osx/export/export.cpp scene/2d/area_2d.cpp scene/3d/area.cpp
+#: scene/main/node.cpp
msgid "Name"
msgstr "åç§°"
#: core/project_settings.cpp editor/editor_help.cpp
-#: modules/visual_script/visual_script_nodes.cpp
+#: modules/visual_script/visual_script_nodes.cpp platform/uwp/export/export.cpp
+#: platform/windows/export/export.cpp
msgid "Description"
msgstr "æè¿°"
@@ -704,7 +670,7 @@ msgid "Custom User Dir Name"
msgstr "自定义用户目录åç§°"
#: core/project_settings.cpp editor/animation_track_editor.cpp
-#: editor/editor_audio_buses.cpp servers/audio_server.cpp
+#: editor/editor_audio_buses.cpp main/main.cpp servers/audio_server.cpp
msgid "Audio"
msgstr "音频"
@@ -849,16 +815,19 @@ msgstr "è´¨é‡"
#: scene/gui/file_dialog.cpp scene/main/scene_tree.cpp
#: servers/visual_server.cpp
msgid "Filters"
-msgstr "过滤器"
+msgstr "过滤"
#: core/project_settings.cpp scene/main/viewport.cpp
msgid "Sharpen Intensity"
msgstr "é”化强度"
-#: core/project_settings.cpp editor/editor_node.cpp editor/editor_settings.cpp
-#: editor/plugins/script_editor_plugin.cpp editor/project_export.cpp
-#: main/main.cpp modules/gdscript/gdscript.cpp
-#: modules/visual_script/visual_script.cpp scene/3d/room_manager.cpp
+#: core/project_settings.cpp editor/editor_export.cpp editor/editor_node.cpp
+#: editor/editor_settings.cpp editor/plugins/script_editor_plugin.cpp
+#: editor/project_export.cpp main/main.cpp modules/gdscript/gdscript.cpp
+#: modules/visual_script/visual_script.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp scene/3d/room_manager.cpp
#: scene/main/scene_tree.cpp scene/resources/shape_2d.cpp
#: servers/visual_server.cpp
msgid "Debug"
@@ -949,9 +918,8 @@ msgid "Resource"
msgstr "资æº"
#: core/resource.cpp
-#, fuzzy
msgid "Local To Scene"
-msgstr "关闭场景"
+msgstr "对场景本地化"
#: core/resource.cpp editor/dependency_editor.cpp
#: editor/editor_autoload_settings.cpp editor/plugins/path_editor_plugin.cpp
@@ -965,7 +933,6 @@ msgid "Source Code"
msgstr "æºä»£ç "
#: core/translation.cpp
-#, fuzzy
msgid "Messages"
msgstr "消æ¯"
@@ -979,7 +946,7 @@ msgstr "测试"
#: core/translation.cpp scene/resources/font.cpp
msgid "Fallback"
-msgstr "备用"
+msgstr "回退"
#: core/ustring.cpp scene/resources/segment_shape_2d.cpp
msgid "B"
@@ -1082,6 +1049,7 @@ msgid "Subsurface Scattering"
msgstr "æ¬¡è¡¨é¢æ•£å°„"
#: drivers/gles3/rasterizer_scene_gles3.cpp
+#: editor/import/resource_importer_texture.cpp
#: editor/plugins/spatial_editor_plugin.cpp modules/gltf/gltf_node.cpp
#: modules/gridmap/grid_map.cpp scene/2d/cpu_particles_2d.cpp
#: scene/2d/node_2d.cpp scene/2d/parallax_layer.cpp scene/2d/polygon_2d.cpp
@@ -1377,6 +1345,7 @@ msgid "Editors"
msgstr "å„编辑器"
#: editor/animation_track_editor.cpp editor/editor_settings.cpp
+#: editor/import/resource_importer_scene.cpp
#: editor/plugins/animation_player_editor_plugin.cpp editor/scene_tree_dock.cpp
#: scene/2d/animated_sprite.cpp scene/2d/cpu_particles_2d.cpp
#: scene/2d/sprite.cpp scene/3d/cpu_particles.cpp scene/3d/sprite_3d.cpp
@@ -1603,14 +1572,14 @@ msgstr "动画步进值。"
msgid "Seconds"
msgstr "ç§’"
-#: editor/animation_track_editor.cpp
+#: editor/animation_track_editor.cpp editor/import/resource_importer_scene.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp main/main.cpp
#: scene/resources/texture.cpp
msgid "FPS"
msgstr "FPS"
#: editor/animation_track_editor.cpp editor/editor_plugin_settings.cpp
-#: editor/editor_resource_picker.cpp
+#: editor/editor_resource_picker.cpp editor/import/resource_importer_wav.cpp
#: editor/plugins/polygon_2d_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
@@ -2220,10 +2189,9 @@ msgstr "主è¦å¼€å‘者"
#. TRANSLATORS: This refers to a job title.
#: editor/editor_about.cpp
-#, fuzzy
msgctxt "Job Title"
msgid "Project Manager"
-msgstr "项目管ç†å™¨"
+msgstr "项目管ç†å‘˜"
#: editor/editor_about.cpp
msgid "Developers"
@@ -2564,7 +2532,9 @@ msgid "Remove Autoload"
msgstr "移除 Autoload"
#: editor/editor_autoload_settings.cpp editor/editor_plugin_settings.cpp
-#: modules/gdscript/gdscript.cpp scene/2d/polygon_2d.cpp scene/3d/area.cpp
+#: modules/gdscript/gdscript.cpp platform/android/export/export_plugin.cpp
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#: scene/2d/polygon_2d.cpp scene/3d/area.cpp scene/3d/physics_joint.cpp
#: scene/3d/reflection_probe.cpp scene/main/canvas_layer.cpp
#: scene/resources/material.cpp servers/visual_server.cpp
msgid "Enable"
@@ -2725,6 +2695,60 @@ msgstr ""
#: editor/editor_export.cpp platform/android/export/export_plugin.cpp
#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Custom Template"
+msgstr "自定义主题"
+
+#: editor/editor_export.cpp editor/project_export.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp
+msgid "Release"
+msgstr "å‘布"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Binary Format"
+msgstr "颜色格å¼"
+
+#: editor/editor_export.cpp
+msgid "64 Bits"
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Embed PCK"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Texture Format"
+msgstr "çº¹ç†æ¨¡å¼"
+
+#: editor/editor_export.cpp
+msgid "BPTC"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "S3TC"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "ETC"
+msgstr "TCP"
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "ETC2"
+msgstr ""
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "No BPTC Fallbacks"
+msgstr "回退"
+
+#: editor/editor_export.cpp platform/android/export/export_plugin.cpp
+#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
msgid "Custom debug template not found."
msgstr "找ä¸åˆ°è‡ªå®šä¹‰è°ƒè¯•模æ¿ã€‚"
@@ -2898,6 +2922,7 @@ msgid "Make Current"
msgstr "设为当å‰"
#: editor/editor_feature_profile.cpp editor/editor_node.cpp
+#: editor/import/resource_importer_scene.cpp
#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
msgid "Import"
msgstr "导入"
@@ -3022,8 +3047,11 @@ msgstr "访问"
msgid "Display Mode"
msgstr "显示模å¼"
-#: editor/editor_file_dialog.cpp main/main.cpp modules/csg/csg_shape.cpp
-#: modules/visual_script/visual_script_nodes.cpp
+#: editor/editor_file_dialog.cpp
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+#: editor/import/resource_importer_wav.cpp main/main.cpp
+#: modules/csg/csg_shape.cpp modules/visual_script/visual_script_nodes.cpp
#: modules/visual_script/visual_script_yield_nodes.cpp scene/2d/light_2d.cpp
#: scene/2d/physics_body_2d.cpp scene/2d/tile_map.cpp
#: scene/3d/baked_lightmap.cpp scene/3d/light.cpp scene/3d/physics_body.cpp
@@ -3052,7 +3080,7 @@ msgstr "显示éšè—文件"
#: editor/editor_file_dialog.cpp
msgid "Disable Overwrite Warning"
-msgstr ""
+msgstr "ç¦ç”¨è¦†ç›–警告"
#: editor/editor_file_dialog.cpp
msgid "Go Back"
@@ -3155,7 +3183,9 @@ msgstr "æ­£åœ¨å¯¼å…¥æˆ–é‡æ–°å¯¼å…¥ç´ æ"
msgid "Reimport Missing Imported Files"
msgstr "釿–°å¯¼å…¥ç¼ºå¤±çš„已导入文件"
-#: editor/editor_help.cpp
+#: editor/editor_help.cpp scene/2d/camera_2d.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/resources/dynamic_font.cpp
+#: scene/resources/style_box.cpp
msgid "Top"
msgstr "顶部"
@@ -3207,6 +3237,7 @@ msgid "Fonts"
msgstr "字体"
#: editor/editor_help.cpp editor/plugins/theme_editor_plugin.cpp
+#: platform/iphone/export/export.cpp
msgid "Icons"
msgstr "图标"
@@ -3333,34 +3364,28 @@ msgid "Property:"
msgstr "属性:"
#: editor/editor_inspector.cpp editor/editor_spin_slider.cpp
-#, fuzzy
msgid "Label"
-msgstr "X 标签"
+msgstr "标签"
#: editor/editor_inspector.cpp editor/editor_spin_slider.cpp
-#, fuzzy
msgid "Read Only"
-msgstr "仅方法"
+msgstr "åªè¯»"
#: editor/editor_inspector.cpp
-#, fuzzy
msgid "Checkable"
-msgstr "检查项目"
+msgstr "å¯å‹¾é€‰"
#: editor/editor_inspector.cpp
-#, fuzzy
msgid "Checked"
-msgstr "已选项目"
+msgstr "已勾选"
#: editor/editor_inspector.cpp
-#, fuzzy
msgid "Draw Red"
-msgstr "绘制顺åº"
+msgstr "绘制红色"
#: editor/editor_inspector.cpp
-#, fuzzy
msgid "Keying"
-msgstr "正在播放"
+msgstr "制作关键帧"
#: editor/editor_inspector.cpp
msgid "Pin value"
@@ -3375,7 +3400,9 @@ msgstr "将值固定会强制ä¿å­˜è¿™ä¸ªå€¼ï¼Œå³ä¾¿å®ƒä¸Žé»˜è®¤å€¼ç›¸ç­‰ã€‚"
msgid "Pin value [Disabled because '%s' is editor-only]"
msgstr "固定值 [å·²ç¦ç”¨ï¼Œå› ä¸ºâ€œ%sâ€ä»…适用于编辑器]"
-#: editor/editor_inspector.cpp editor/scene_tree_dock.cpp
+#: editor/editor_inspector.cpp
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+#: editor/scene_tree_dock.cpp
#: modules/visual_script/visual_script_func_nodes.cpp
#: modules/visual_script/visual_script_nodes.cpp
#: modules/visual_script/visual_script_property_selector.cpp
@@ -3703,6 +3730,16 @@ msgid "Quick Open Script..."
msgstr "快速打开脚本..."
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Save & Reload"
+msgstr "ä¿å­˜å¹¶é‡å¯"
+
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Save changes to '%s' before reloading?"
+msgstr "是å¦åœ¨å…³é—­å‰ä¿å­˜å¯¹ “%s†的更改?"
+
+#: editor/editor_node.cpp
msgid "Save & Close"
msgstr "ä¿å­˜å¹¶å…³é—­"
@@ -3815,6 +3852,11 @@ msgid "Open Project Manager?"
msgstr "打开项目管ç†å™¨ï¼Ÿ"
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Save changes to the following scene(s) before reloading?"
+msgstr "退出å‰è¦ä¿å­˜ä»¥ä¸‹åœºæ™¯æ›´æ”¹å—?"
+
+#: editor/editor_node.cpp
msgid "Save & Quit"
msgstr "ä¿å­˜åŽé€€å‡º"
@@ -4066,8 +4108,9 @@ msgid "Update Vital Only"
msgstr "仅更新关键修改"
#: editor/editor_node.cpp
-msgid "Translate Properties"
-msgstr "翻译属性"
+#, fuzzy
+msgid "Localize Settings"
+msgstr "本地化"
#: editor/editor_node.cpp
msgid "Restore Scenes On Load"
@@ -4082,8 +4125,9 @@ msgid "Inspector"
msgstr "检查器"
#: editor/editor_node.cpp
-msgid "Capitalize Properties"
-msgstr "属性首字æ¯å¤§å°"
+#, fuzzy
+msgid "Default Property Name Style"
+msgstr "默认项目路径"
#: editor/editor_node.cpp
msgid "Default Float Step"
@@ -4319,7 +4363,7 @@ msgstr "å¯ç”¨è¯¥é€‰é¡¹æ—¶ï¼Œå¯¼èˆªç½‘格和多边形将在项目è¿è¡Œæ—¶å¯è§
#: editor/editor_node.cpp
msgid "Force Shader Fallbacks"
-msgstr "强制备用ç€è‰²å™¨"
+msgstr "强制ç€è‰²å™¨å›žé€€"
#: editor/editor_node.cpp
msgid ""
@@ -4330,9 +4374,9 @@ msgid ""
"Asynchronous shader compilation must be enabled in the project settings for "
"this option to make a difference."
msgstr ""
-"å¯ç”¨è¯¥é€‰é¡¹æ—¶ï¼Œç€è‰²å™¨åœ¨è¿è¡Œæ—¶ä¼šä½¿ç”¨å…¶å¤‡ç”¨å½¢å¼ï¼ˆå€ŸåŠ©è¶…çº§ç€è‰²å™¨æ˜¾ç¤ºæˆ–è€…ä¸æ˜¾"
+"å¯ç”¨è¯¥é€‰é¡¹æ—¶ï¼Œç€è‰²å™¨åœ¨è¿è¡Œæ—¶ä¼šä½¿ç”¨å…¶å›žé€€å½¢å¼ï¼ˆå€ŸåŠ©è¶…çº§ç€è‰²å™¨æ˜¾ç¤ºæˆ–è€…ä¸æ˜¾"
"示)。\n"
-"å¯ç”¨äºŽéªŒè¯å¤‡ç”¨å¤–观和性能,正常情况下åªä¼šçŸ­æš‚显示。\n"
+"å¯ç”¨äºŽéªŒè¯å›žé€€å¤–观和性能,正常情况下åªä¼šçŸ­æš‚显示。\n"
"必须在项目设置中å¯ç”¨å¼‚æ­¥ç€è‰²å™¨ç¼–译,该选项æ‰ä¼šæœ‰æ•ˆæžœã€‚"
#: editor/editor_node.cpp
@@ -4667,7 +4711,9 @@ msgstr "已安装æ’件:"
msgid "Update"
msgstr "æ›´æ–°"
-#: editor/editor_plugin_settings.cpp
+#: editor/editor_plugin_settings.cpp platform/android/export/export_plugin.cpp
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp
msgid "Version"
msgstr "版本"
@@ -4882,9 +4928,8 @@ msgstr "编辑资æº"
#: editor/editor_resource_picker.cpp scene/gui/line_edit.cpp
#: scene/gui/slider.cpp scene/gui/spin_box.cpp
-#, fuzzy
msgid "Editable"
-msgstr "å¯ç¼–辑的项目"
+msgstr "å¯ç¼–辑"
#: editor/editor_resource_picker.cpp editor/property_editor.cpp
msgid "New Script"
@@ -5393,9 +5438,8 @@ msgid "Grid XY Plane"
msgstr "网格 XY å¹³é¢"
#: editor/editor_settings.cpp
-#, fuzzy
msgid "Grid YZ Plane"
-msgstr "网格 XZ å¹³é¢"
+msgstr "网格 YZ å¹³é¢"
#: editor/editor_settings.cpp editor/plugins/spatial_editor_plugin.cpp
msgid "Default FOV"
@@ -5615,7 +5659,7 @@ msgstr "矩形"
msgid "Rect Custom Position"
msgstr "矩形自定义ä½ç½®"
-#: editor/editor_settings.cpp
+#: editor/editor_settings.cpp platform/android/export/export_plugin.cpp
msgid "Screen"
msgstr "å±å¹•"
@@ -5638,6 +5682,19 @@ msgid "Editor SSL Certificates"
msgstr "编辑器 SSL è¯ä¹¦"
#: editor/editor_settings.cpp
+msgid "HTTP Proxy"
+msgstr "HTTP 代ç†"
+
+#: editor/editor_settings.cpp
+msgid "Host"
+msgstr "主机"
+
+#: editor/editor_settings.cpp editor/fileserver/editor_file_server.cpp
+#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp
+msgid "Port"
+msgstr "端å£"
+
+#: editor/editor_settings.cpp
msgid "Project Manager"
msgstr "项目管ç†å™¨"
@@ -5677,7 +5734,8 @@ msgstr "注释颜色"
msgid "String Color"
msgstr "字符串颜色"
-#: editor/editor_settings.cpp
+#: editor/editor_settings.cpp platform/javascript/export/export.cpp
+#: platform/uwp/export/export.cpp
msgid "Background Color"
msgstr "背景色"
@@ -5790,9 +5848,8 @@ msgid "Hold %s to round to integers. Hold Shift for more precise changes."
msgstr "æŒ‰ä½ %s å–æ•´ã€‚ æŒ‰ä½ Shift èŽ·å–æ›´ç²¾ç¡®çš„å˜åŒ–。"
#: editor/editor_spin_slider.cpp scene/gui/button.cpp
-#, fuzzy
msgid "Flat"
-msgstr "å¹³é¢ 0"
+msgstr "æ‰å¹³"
#: editor/editor_sub_scene.cpp
msgid "Select Node(s) to Import"
@@ -5836,22 +5893,6 @@ msgid "Starting the download..."
msgstr "正在开始下载……"
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "HTTP Proxy"
-msgstr "HTTP 代ç†"
-
-#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Host"
-msgstr "主机"
-
-#: editor/export_template_manager.cpp editor/fileserver/editor_file_server.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp main/main.cpp
-#: modules/mono/mono_gd/gd_mono.cpp
-msgid "Port"
-msgstr "端å£"
-
-#: editor/export_template_manager.cpp
msgid "Error requesting URL:"
msgstr "请求 URL 时出错:"
@@ -6097,6 +6138,7 @@ msgstr "文件æœåС噍"
#: editor/fileserver/editor_file_server.cpp
#: editor/plugins/version_control_editor_plugin.cpp
+#: platform/uwp/export/export.cpp platform/windows/export/export.cpp
msgid "Password"
msgstr "密ç "
@@ -6470,6 +6512,114 @@ msgstr "Collada"
msgid "Use Ambient"
msgstr "使用环境光"
+#: editor/import/resource_importer_bitmask.cpp
+#, fuzzy
+msgid "Create From"
+msgstr "创建文件夹"
+
+#: editor/import/resource_importer_bitmask.cpp
+#: servers/audio/effects/audio_effect_compressor.cpp
+msgid "Threshold"
+msgstr "阈值"
+
+#: editor/import/resource_importer_csv_translation.cpp
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_scene.cpp
+#: editor/import/resource_importer_texture.cpp
+#: editor/import/resource_importer_wav.cpp scene/3d/gi_probe.cpp
+msgid "Compress"
+msgstr "压缩"
+
+#: editor/import/resource_importer_csv_translation.cpp
+msgid "Delimiter"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+msgid "No BPTC If RGB"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/sprite_3d.cpp
+#: scene/resources/material.cpp scene/resources/particles_material.cpp
+#: scene/resources/texture.cpp
+msgid "Flags"
+msgstr "标志"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/animation/tween.cpp
+#: scene/resources/texture.cpp
+msgid "Repeat"
+msgstr "é‡å¤"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/2d/light_2d.cpp
+#: scene/gui/control.cpp scene/resources/navigation_mesh.cpp
+msgid "Filter"
+msgstr "过滤器"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Mipmaps"
+msgstr "使用 Mipmap"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Anisotropic"
+msgstr "å„å‘异性"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+msgid "sRGB"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#, fuzzy
+msgid "Slices"
+msgstr "自动è£å‰ª"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
+#: scene/resources/style_box.cpp
+msgid "Horizontal"
+msgstr "æ°´å¹³"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
+#: scene/resources/style_box.cpp
+msgid "Vertical"
+msgstr "垂直"
+
+#: editor/import/resource_importer_obj.cpp
+#, fuzzy
+msgid "Generate Tangents"
+msgstr "生æˆé¡¶ç‚¹"
+
+#: editor/import/resource_importer_obj.cpp
+#, fuzzy
+msgid "Scale Mesh"
+msgstr "缩放模å¼"
+
+#: editor/import/resource_importer_obj.cpp
+#, fuzzy
+msgid "Offset Mesh"
+msgstr "åç§»"
+
+#: editor/import/resource_importer_obj.cpp
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Octahedral Compression"
+msgstr "压缩"
+
+#: editor/import/resource_importer_obj.cpp
+#, fuzzy
+msgid "Optimize Mesh Flags"
+msgstr "大尿 ‡å¿—"
+
#: editor/import/resource_importer_scene.cpp
msgid "Import as Single Scene"
msgstr "导入为å•一场景"
@@ -6510,6 +6660,151 @@ msgstr "导入为多个场景"
msgid "Import as Multiple Scenes+Materials"
msgstr "导入为多个场景 + æè´¨"
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+#: scene/3d/physics_joint.cpp
+msgid "Nodes"
+msgstr "节点"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Root Type"
+msgstr "返回类型"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Root Name"
+msgstr "远程仓库åç§°"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Root Scale"
+msgstr "HDR 缩放"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Custom Script"
+msgstr "自定义步长"
+
+#: editor/import/resource_importer_scene.cpp scene/resources/texture.cpp
+msgid "Storage"
+msgstr "存储"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Use Legacy Names"
+msgstr "旧有æµ"
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+msgid "Materials"
+msgstr "æè´¨"
+
+#: editor/import/resource_importer_scene.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Location"
+msgstr "本地化"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Keep On Reimport"
+msgstr "釿–°å¯¼å…¥"
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+msgid "Meshes"
+msgstr "网格"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Ensure Tangents"
+msgstr "计算切线"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Light Baking"
+msgstr "光照贴图"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Lightmap Texel Size"
+msgstr "å…‰ç…§è´´å›¾å¤§å°æç¤º"
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+msgid "Skins"
+msgstr "蒙皮"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Use Named Skins"
+msgstr "使用具å蒙皮绑定"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "External Files"
+msgstr "外部"
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Store In Subdir"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Filter Script"
+msgstr "筛选脚本"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Keep Custom Tracks"
+msgstr "è‡ªå®šä¹‰å˜æ¢"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Optimizer"
+msgstr "优化"
+
+#: editor/import/resource_importer_scene.cpp main/main.cpp
+#: modules/mono/mono_gd/gd_mono.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp scene/2d/camera_2d.cpp scene/2d/light_2d.cpp
+#: scene/2d/navigation_polygon.cpp scene/2d/ray_cast_2d.cpp scene/2d/sprite.cpp
+#: scene/2d/y_sort.cpp scene/3d/audio_stream_player_3d.cpp
+#: scene/3d/baked_lightmap.cpp scene/3d/interpolated_camera.cpp
+#: scene/3d/light.cpp scene/3d/navigation_mesh_instance.cpp
+#: scene/3d/physics_joint.cpp scene/3d/ray_cast.cpp scene/3d/sprite_3d.cpp
+#: scene/gui/graph_edit.cpp scene/gui/rich_text_label.cpp
+#: scene/resources/curve.cpp scene/resources/environment.cpp
+#: scene/resources/material.cpp
+msgid "Enabled"
+msgstr "å¯ç”¨"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Max Linear Error"
+msgstr "最大线性误差:"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Max Angular Error"
+msgstr "最大角度误差:"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Max Angle"
+msgstr "角度"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Remove Unused Tracks"
+msgstr "移除动画轨é“"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Clips"
+msgstr "动画剪辑"
+
+#: editor/import/resource_importer_scene.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/particles_2d.cpp scene/3d/area.cpp scene/3d/cpu_particles.cpp
+#: scene/3d/particles.cpp scene/resources/environment.cpp
+msgid "Amount"
+msgstr "æ•°é‡"
+
#: editor/import/resource_importer_scene.cpp
#: editor/plugins/mesh_library_editor_plugin.cpp
msgid "Import Scene"
@@ -6551,6 +6846,73 @@ msgstr "有在 `post_import()` 方法中返回继承了 Node 的对象å—?"
msgid "Saving..."
msgstr "ä¿å­˜ä¸­..."
+#: editor/import/resource_importer_texture.cpp scene/resources/texture.cpp
+msgid "Lossy Quality"
+msgstr "有æŸè´¨é‡"
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "HDR Mode"
+msgstr "HSV 模å¼"
+
+#: editor/import/resource_importer_texture.cpp
+msgid "BPTC LDR"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/mesh_instance_2d.cpp scene/2d/multimesh_instance_2d.cpp
+#: scene/2d/particles_2d.cpp scene/2d/sprite.cpp scene/resources/style_box.cpp
+msgid "Normal Map"
+msgstr "法线贴图"
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Process"
+msgstr "预处ç†"
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Fix Alpha Border"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Premult Alpha"
+msgstr "编辑 Alpha"
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Hdr As Srgb"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Invert Color"
+msgstr "顶点颜色"
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Normal Map Invert Y"
+msgstr "法线贴图"
+
+#: editor/import/resource_importer_texture.cpp
+#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
+#: scene/audio/audio_stream_player.cpp scene/gui/video_player.cpp
+msgid "Stream"
+msgstr "æµ"
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Size Limit"
+msgstr "å“应体大å°é™åˆ¶"
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Detect 3D"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "SVG"
+msgstr "CSG"
+
#: editor/import/resource_importer_texture.cpp
msgid ""
"Warning, no suitable PC VRAM compression enabled in Project Settings. This "
@@ -6558,6 +6920,72 @@ msgid ""
msgstr ""
"警告,项目设置中未å¯ç”¨åˆé€‚çš„ PC VRAM 压缩。这个纹ç†åœ¨ PC 上无法正确显示。"
+#: editor/import/resource_importer_texture_atlas.cpp
+#, fuzzy
+msgid "Atlas File"
+msgstr "图集大å°"
+
+#: editor/import/resource_importer_texture_atlas.cpp
+#, fuzzy
+msgid "Import Mode"
+msgstr "导出模å¼ï¼š"
+
+#: editor/import/resource_importer_texture_atlas.cpp
+#, fuzzy
+msgid "Crop To Region"
+msgstr "设置图å—区域"
+
+#: editor/import/resource_importer_texture_atlas.cpp
+msgid "Trim Alpha Border From Region"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp scene/2d/physics_body_2d.cpp
+msgid "Force"
+msgstr "力"
+
+#: editor/import/resource_importer_wav.cpp
+msgid "8 Bit"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp main/main.cpp
+#: modules/mono/editor/csharp_project.cpp modules/mono/mono_gd/gd_mono.cpp
+msgid "Mono"
+msgstr "Mono"
+
+#: editor/import/resource_importer_wav.cpp
+#, fuzzy
+msgid "Max Rate"
+msgstr "混音率"
+
+#: editor/import/resource_importer_wav.cpp
+#, fuzzy
+msgid "Max Rate Hz"
+msgstr "频率 Hz"
+
+#: editor/import/resource_importer_wav.cpp
+msgid "Trim"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+#, fuzzy
+msgid "Normalize"
+msgstr "归一化"
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+msgid "Loop Mode"
+msgstr "æ··æ¢æ¨¡å¼"
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+msgid "Loop Begin"
+msgstr "循环起点"
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+msgid "Loop End"
+msgstr "循环终点"
+
#: editor/import_defaults_editor.cpp
msgid "Select Importer"
msgstr "选择导入器"
@@ -6629,6 +7057,29 @@ msgid "Failed to load resource."
msgstr "加载资æºå¤±è´¥ã€‚"
#: editor/inspector_dock.cpp
+#, fuzzy
+msgid "Property Name Style"
+msgstr "项目å称:"
+
+#: editor/inspector_dock.cpp scene/gui/color_picker.cpp
+msgid "Raw"
+msgstr "原始"
+
+#: editor/inspector_dock.cpp
+#, fuzzy
+msgid "Capitalized"
+msgstr "首字æ¯å¤§å†™"
+
+#: editor/inspector_dock.cpp
+#, fuzzy
+msgid "Localized"
+msgstr "区域"
+
+#: editor/inspector_dock.cpp
+msgid "Localization not available for current language."
+msgstr ""
+
+#: editor/inspector_dock.cpp
msgid "Copy Properties"
msgstr "å¤åˆ¶å±žæ€§"
@@ -7665,18 +8116,26 @@ msgid "License (Z-A)"
msgstr "许å¯è¯ï¼ˆZ-A)"
#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgctxt "Pagination"
msgid "First"
msgstr "首页"
-#: editor/plugins/asset_library_editor_plugin.cpp scene/gui/control.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgctxt "Pagination"
msgid "Previous"
msgstr "上一页"
-#: editor/plugins/asset_library_editor_plugin.cpp scene/gui/control.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgctxt "Pagination"
msgid "Next"
msgstr "下一页"
#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgctxt "Pagination"
msgid "Last"
msgstr "末页"
@@ -7915,19 +8374,19 @@ msgid ""
"margins."
msgstr "激活åŽï¼Œç§»åЍ Control 节点会更改å˜é”šç‚¹ï¼Œè€Œéžè¾¹è·ã€‚"
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Top Left"
msgstr "左上"
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Top Right"
msgstr "å³ä¸Š"
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Bottom Right"
msgstr "å³ä¸‹"
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Bottom Left"
msgstr "左下"
@@ -8631,6 +9090,19 @@ msgstr "烘焙 GI 探针"
msgid "Gradient Edited"
msgstr "编辑æ¸å˜"
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+msgid "Swap GradientTexture2D Fill Points"
+msgstr ""
+
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+msgid "Swap Gradient Fill Points"
+msgstr ""
+
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+#, fuzzy
+msgid "Toggle Grid Snap"
+msgstr "切æ¢ç½‘æ ¼"
+
#: editor/plugins/item_list_editor_plugin.cpp
msgid "Item %d"
msgstr "第 %d 项"
@@ -8858,8 +9330,9 @@ msgstr ""
"是å¦ä»Žå·²æœ‰åœºæ™¯ä¸­æ›´æ–°ï¼Ÿï¼š\n"
"%s"
-#: editor/plugins/mesh_library_editor_plugin.cpp modules/gridmap/grid_map.cpp
-msgid "Mesh Library"
+#: editor/plugins/mesh_library_editor_plugin.cpp
+#, fuzzy
+msgid "MeshLibrary"
msgstr "网格库"
#: editor/plugins/mesh_library_editor_plugin.cpp
@@ -9831,8 +10304,8 @@ msgstr "与方法的连接:"
msgid "Source"
msgstr "æ¥æº"
-#: editor/plugins/script_text_editor.cpp scene/3d/interpolated_camera.cpp
-#: scene/animation/skeleton_ik.cpp
+#: editor/plugins/script_text_editor.cpp platform/uwp/export/export.cpp
+#: scene/3d/interpolated_camera.cpp scene/animation/skeleton_ik.cpp
msgid "Target"
msgstr "目标"
@@ -10798,7 +11271,9 @@ msgstr "速度:"
#: editor/plugins/sprite_frames_editor_plugin.cpp
#: modules/gltf/gltf_animation.cpp modules/minimp3/audio_stream_mp3.cpp
-#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp scene/2d/path_2d.cpp
+#: modules/minimp3/resource_importer_mp3.cpp
+#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp
+#: modules/stb_vorbis/resource_importer_ogg_vorbis.cpp scene/2d/path_2d.cpp
#: scene/3d/path.cpp scene/resources/animation.cpp scene/resources/material.cpp
msgid "Loop"
msgstr "循环"
@@ -11669,8 +12144,9 @@ msgstr "掩ç "
msgid "Priority"
msgstr "优先级"
-#: editor/plugins/tile_set_editor_plugin.cpp main/main.cpp scene/gui/button.cpp
-#: scene/gui/item_list.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp main/main.cpp
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#: scene/gui/button.cpp scene/gui/item_list.cpp
msgid "Icon"
msgstr "图标"
@@ -12999,10 +13475,6 @@ msgstr ""
"原因å¯èƒ½æ˜¯å¯¼å‡ºé¢„设或导出设置内的é…置有问题。"
#: editor/project_export.cpp
-msgid "Release"
-msgstr "å‘布"
-
-#: editor/project_export.cpp
msgid "Exporting All"
msgstr "全部导出"
@@ -13446,7 +13918,6 @@ msgstr ""
#. TRANSLATORS: This refers to the application where users manage their Godot projects.
#: editor/project_manager.cpp
-#, fuzzy
msgctxt "Application"
msgid "Project Manager"
msgstr "项目管ç†å™¨"
@@ -14840,8 +15311,9 @@ msgid "Change AudioStreamPlayer3D Emission Angle"
msgstr "修改 AudioStreamPlayer3D å‘å°„è§’"
#: editor/spatial_editor_gizmos.cpp modules/gltf/gltf_node.cpp
+#: platform/osx/export/export.cpp
msgid "Camera"
-msgstr "Camera"
+msgstr "相机"
#: editor/spatial_editor_gizmos.cpp
msgid "Change Camera FOV"
@@ -14863,7 +15335,7 @@ msgstr "关节"
#: scene/resources/particles_material.cpp servers/physics_2d_server.cpp
#: servers/physics_server.cpp
msgid "Shape"
-msgstr "Shape"
+msgstr "形状"
#: editor/spatial_editor_gizmos.cpp
msgid "Visibility Notifier"
@@ -15037,7 +15509,6 @@ msgid "Multithreaded Server"
msgstr "多线程æœåС噍"
#: main/main.cpp
-#, fuzzy
msgid "RID Pool Prealloc"
msgstr "RID 池预分é…"
@@ -15101,7 +15572,8 @@ msgstr "回退至 GLES2"
msgid "Use Nvidia Rect Flicker Workaround"
msgstr "使用 Nvidia 矩形闪çƒå˜é€šæŽªæ–½"
-#: main/main.cpp platform/uwp/os_uwp.cpp
+#: main/main.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp platform/uwp/os_uwp.cpp
msgid "Display"
msgstr "显示"
@@ -15156,18 +15628,6 @@ msgstr "åƒç´ çº§é€æ˜Ž"
msgid "Allowed"
msgstr "å…许"
-#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp scene/2d/camera_2d.cpp
-#: scene/2d/light_2d.cpp scene/2d/navigation_polygon.cpp
-#: scene/2d/ray_cast_2d.cpp scene/2d/sprite.cpp scene/2d/y_sort.cpp
-#: scene/3d/audio_stream_player_3d.cpp scene/3d/baked_lightmap.cpp
-#: scene/3d/interpolated_camera.cpp scene/3d/light.cpp
-#: scene/3d/navigation_mesh_instance.cpp scene/3d/ray_cast.cpp
-#: scene/3d/sprite_3d.cpp scene/gui/graph_edit.cpp
-#: scene/gui/rich_text_label.cpp scene/resources/curve.cpp
-#: scene/resources/environment.cpp
-msgid "Enabled"
-msgstr "å¯ç”¨"
-
#: main/main.cpp
msgid "Intended Usage"
msgstr "预期用法"
@@ -15196,12 +15656,13 @@ msgstr "线程安全 BVH"
msgid "Handheld"
msgstr "手æŒè®¾å¤‡"
-#: main/main.cpp
+#: main/main.cpp platform/javascript/export/export.cpp
+#: platform/uwp/export/export.cpp
msgid "Orientation"
msgstr "æœå‘"
#: main/main.cpp scene/gui/scroll_container.cpp scene/gui/text_edit.cpp
-#: scene/main/scene_tree.cpp
+#: scene/main/scene_tree.cpp scene/register_scene_types.cpp
msgid "Common"
msgstr "通用"
@@ -15241,8 +15702,8 @@ msgstr "冗长标准输出"
#: main/main.cpp
#, fuzzy
-msgid "Frame Delay (msec)"
-msgstr "帧延迟毫秒"
+msgid "Frame Delay Msec"
+msgstr "帧延迟(毫秒)"
#: main/main.cpp
msgid "Low Processor Mode"
@@ -15282,7 +15743,7 @@ msgstr "ç€è‰²å™¨"
#: main/main.cpp
msgid "Debug Shader Fallbacks"
-msgstr "调试备用ç€è‰²å™¨"
+msgstr "调试ç€è‰²å™¨å›žé€€"
#: main/main.cpp scene/3d/baked_lightmap.cpp scene/3d/camera.cpp
#: scene/3d/world_environment.cpp scene/main/scene_tree.cpp
@@ -15315,7 +15776,6 @@ msgid "Use Filter"
msgstr "使用过滤器"
#: main/main.cpp scene/resources/style_box.cpp
-#, fuzzy
msgid "BG Color"
msgstr "背景色"
@@ -15359,11 +15819,6 @@ msgstr "自定义图åƒçƒ­åŒº"
msgid "Tooltip Position Offset"
msgstr "工具æç¤ºä½ç½®åç§»"
-#: main/main.cpp modules/mono/editor/csharp_project.cpp
-#: modules/mono/mono_gd/gd_mono.cpp
-msgid "Mono"
-msgstr "Mono"
-
#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp
msgid "Debugger Agent"
msgstr "调试器代ç†"
@@ -15455,12 +15910,11 @@ msgstr "æ“作"
#: modules/csg/csg_shape.cpp
msgid "Calculate Tangents"
-msgstr ""
+msgstr "计算切线"
#: modules/csg/csg_shape.cpp
-#, fuzzy
msgid "Use Collision"
-msgstr "碰撞"
+msgstr "使用碰撞"
#: modules/csg/csg_shape.cpp servers/physics_2d_server.cpp
msgid "Collision Layer"
@@ -15473,9 +15927,8 @@ msgid "Collision Mask"
msgstr "碰撞é®ç½©"
#: modules/csg/csg_shape.cpp
-#, fuzzy
msgid "Invert Faces"
-msgstr "转æ¢å¤§å°å†™"
+msgstr "翻转表é¢"
#: modules/csg/csg_shape.cpp scene/2d/canvas_item.cpp scene/2d/particles_2d.cpp
#: scene/resources/primitive_meshes.cpp
@@ -15502,9 +15955,8 @@ msgid "Rings"
msgstr "环数"
#: modules/csg/csg_shape.cpp
-#, fuzzy
msgid "Smooth Faces"
-msgstr "平滑æ’值"
+msgstr "平滑表é¢"
#: modules/csg/csg_shape.cpp
msgid "Sides"
@@ -15512,7 +15964,7 @@ msgstr "边数"
#: modules/csg/csg_shape.cpp
msgid "Cone"
-msgstr ""
+msgstr "圆锥"
#: modules/csg/csg_shape.cpp
msgid "Inner Radius"
@@ -15541,9 +15993,8 @@ msgid "Spin Sides"
msgstr "旋转边数"
#: modules/csg/csg_shape.cpp
-#, fuzzy
msgid "Path Node"
-msgstr "粘贴节点"
+msgstr "路径节点"
#: modules/csg/csg_shape.cpp
msgid "Path Interval Type"
@@ -15562,84 +16013,73 @@ msgid "Path Rotation"
msgstr "路径旋转"
#: modules/csg/csg_shape.cpp
-#, fuzzy
msgid "Path Local"
-msgstr "转为本地"
+msgstr "路径本地"
#: modules/csg/csg_shape.cpp
-#, fuzzy
msgid "Path Continuous U"
-msgstr "连续"
+msgstr "路径连续 U"
#: modules/csg/csg_shape.cpp
msgid "Path U Distance"
msgstr "路径 U è·ç¦»"
#: modules/csg/csg_shape.cpp
-#, fuzzy
msgid "Path Joined"
-msgstr "路径旋转"
+msgstr "路径接åˆ"
#: modules/enet/networked_multiplayer_enet.cpp
msgid "Compression Mode"
msgstr "压缩模å¼"
#: modules/enet/networked_multiplayer_enet.cpp
-#, fuzzy
msgid "Transfer Channel"
-msgstr "ä¿®æ”¹å˜æ¢"
+msgstr "传输通é“"
#: modules/enet/networked_multiplayer_enet.cpp
-#, fuzzy
msgid "Channel Count"
-msgstr "实例数"
+msgstr "é€šé“æ•°"
#: modules/enet/networked_multiplayer_enet.cpp
-#, fuzzy
msgid "Always Ordered"
-msgstr "总是显示文件夹"
+msgstr "总是有åº"
#: modules/enet/networked_multiplayer_enet.cpp
msgid "Server Relay"
-msgstr ""
+msgstr "æœåŠ¡å™¨æŽ¥åŠ›"
#: modules/enet/networked_multiplayer_enet.cpp
msgid "DTLS Verify"
-msgstr ""
+msgstr "DTLS 验è¯"
#: modules/enet/networked_multiplayer_enet.cpp
msgid "DTLS Hostname"
-msgstr ""
+msgstr "DTLS 主机å"
#: modules/enet/networked_multiplayer_enet.cpp
-#, fuzzy
msgid "Use DTLS"
-msgstr "使用 SSL"
+msgstr "使用 DTLS"
#: modules/gdnative/gdnative.cpp
msgid "Config File"
msgstr "é…置文件"
#: modules/gdnative/gdnative.cpp
-#, fuzzy
msgid "Load Once"
-msgstr "加载资æº"
+msgstr "啿¬¡åŠ è½½"
#: modules/gdnative/gdnative.cpp
#: modules/visual_script/visual_script_func_nodes.cpp
-#, fuzzy
msgid "Singleton"
-msgstr "Skeleton"
+msgstr "å•例"
#: modules/gdnative/gdnative.cpp
-#, fuzzy
msgid "Symbol Prefix"
-msgstr "符å·é¢œè‰²"
+msgstr "符å·å‰ç¼€"
#: modules/gdnative/gdnative.cpp
-#, fuzzy
msgid "Reloadable"
-msgstr "釿–°åŠ è½½"
+msgstr "å¯é‡æ–°åŠ è½½"
#: modules/gdnative/gdnative.cpp
#: modules/gdnative/gdnative_library_singleton_editor.cpp
@@ -15696,18 +16136,16 @@ msgid "Libraries: "
msgstr "库: "
#: modules/gdnative/nativescript/nativescript.cpp
-#, fuzzy
msgid "Class Name"
-msgstr "ç±»å:"
+msgstr "ç±»å"
#: modules/gdnative/nativescript/nativescript.cpp
msgid "Script Class"
msgstr "脚本类"
#: modules/gdnative/nativescript/nativescript.cpp
-#, fuzzy
msgid "Icon Path"
-msgstr "字体路径"
+msgstr "图标路径"
#: modules/gdnative/register_types.cpp
msgid "GDNative"
@@ -15803,98 +16241,84 @@ msgid "Export GLTF..."
msgstr "导出 GLTF..."
#: modules/gltf/gltf_accessor.cpp
-#, fuzzy
msgid "Buffer View"
msgstr "缓冲视图"
#: modules/gltf/gltf_accessor.cpp modules/gltf/gltf_buffer_view.cpp
-#, fuzzy
msgid "Byte Offset"
-msgstr "å•ä½åç§»"
+msgstr "字节åç§»"
#: modules/gltf/gltf_accessor.cpp
-#, fuzzy
msgid "Component Type"
-msgstr "组件"
+msgstr "组件类型"
#: modules/gltf/gltf_accessor.cpp
-#, fuzzy
msgid "Normalized"
-msgstr "正常"
+msgstr "归一化"
#: modules/gltf/gltf_accessor.cpp
-#, fuzzy
msgid "Count"
msgstr "æ•°é‡"
#: modules/gltf/gltf_accessor.cpp scene/resources/visual_shader_nodes.cpp
-#, fuzzy
msgid "Min"
-msgstr "主è¦"
+msgstr "最å°å€¼"
#: modules/gltf/gltf_accessor.cpp scene/resources/visual_shader_nodes.cpp
-#, fuzzy
msgid "Max"
-msgstr "æ··åˆ (Mix)"
+msgstr "最大值"
#: modules/gltf/gltf_accessor.cpp
-#, fuzzy
msgid "Sparse Count"
-msgstr "实例数"
+msgstr "ç¨€ç–æ•°é‡"
#: modules/gltf/gltf_accessor.cpp
msgid "Sparse Indices Buffer View"
-msgstr ""
+msgstr "稀ç–顶点缓冲视图"
#: modules/gltf/gltf_accessor.cpp
msgid "Sparse Indices Byte Offset"
-msgstr ""
+msgstr "稀ç–顶点字节åç§»"
#: modules/gltf/gltf_accessor.cpp
-#, fuzzy
msgid "Sparse Indices Component Type"
-msgstr "è§£æžå‡ ä½•体类型"
+msgstr "稀ç–顶点组件类型"
#: modules/gltf/gltf_accessor.cpp
msgid "Sparse Values Buffer View"
-msgstr ""
+msgstr "稀ç–值缓冲视图"
#: modules/gltf/gltf_accessor.cpp
msgid "Sparse Values Byte Offset"
-msgstr ""
+msgstr "稀ç–值字节åç§»"
#: modules/gltf/gltf_buffer_view.cpp
-#, fuzzy
msgid "Buffer"
msgstr "缓冲区"
#: modules/gltf/gltf_buffer_view.cpp
-#, fuzzy
msgid "Byte Length"
-msgstr "长度"
+msgstr "字节长度"
#: modules/gltf/gltf_buffer_view.cpp
msgid "Byte Stride"
-msgstr ""
+msgstr "字节步长"
#: modules/gltf/gltf_buffer_view.cpp
-#, fuzzy
msgid "Indices"
-msgstr "输入设备"
+msgstr "索引"
#: modules/gltf/gltf_camera.cpp
-#, fuzzy
msgid "FOV Size"
-msgstr "大å°ï¼š"
+msgstr "FOV 大å°"
#: modules/gltf/gltf_camera.cpp
msgid "Zfar"
-msgstr ""
+msgstr "Zfar"
#: modules/gltf/gltf_camera.cpp
-#, fuzzy
msgid "Znear"
-msgstr "线性"
+msgstr "Znear"
#: modules/gltf/gltf_light.cpp scene/2d/canvas_modulate.cpp
#: scene/2d/cpu_particles_2d.cpp scene/2d/light_2d.cpp scene/2d/polygon_2d.cpp
@@ -15912,46 +16336,41 @@ msgstr "颜色"
msgid "Intensity"
msgstr "强度"
-#: modules/gltf/gltf_light.cpp scene/2d/light_2d.cpp
+#: modules/gltf/gltf_light.cpp scene/2d/light_2d.cpp scene/3d/light.cpp
msgid "Range"
msgstr "范围"
#: modules/gltf/gltf_light.cpp
msgid "Inner Cone Angle"
-msgstr ""
+msgstr "圆锥体内角"
#: modules/gltf/gltf_light.cpp
msgid "Outer Cone Angle"
-msgstr ""
+msgstr "圆锥体外角"
#: modules/gltf/gltf_mesh.cpp
-#, fuzzy
msgid "Blend Weights"
-msgstr "烘焙光照贴图"
+msgstr "æ··åˆæƒé‡"
#: modules/gltf/gltf_mesh.cpp
-#, fuzzy
msgid "Instance Materials"
-msgstr "æè´¨"
+msgstr "实例æè´¨"
#: modules/gltf/gltf_node.cpp
-#, fuzzy
msgid "Parent"
-msgstr "é‡è®¾çˆ¶èŠ‚ç‚¹"
+msgstr "父节点"
#: modules/gltf/gltf_node.cpp
-#, fuzzy
msgid "Xform"
-msgstr "å¹³å°"
+msgstr "å˜æ¢"
#: modules/gltf/gltf_node.cpp scene/3d/mesh_instance.cpp
msgid "Skin"
-msgstr ""
+msgstr "蒙皮"
#: modules/gltf/gltf_node.cpp scene/3d/spatial.cpp
-#, fuzzy
msgid "Translation"
-msgstr "翻译"
+msgstr "平移"
#: modules/gltf/gltf_node.cpp scene/2d/node_2d.cpp scene/2d/polygon_2d.cpp
#: scene/2d/remote_transform_2d.cpp scene/3d/remote_transform.cpp
@@ -15960,17 +16379,14 @@ msgid "Rotation"
msgstr "旋转"
#: modules/gltf/gltf_node.cpp
-#, fuzzy
msgid "Children"
-msgstr "å­èŠ‚ç‚¹å¯ç¼–辑"
+msgstr "å­èŠ‚ç‚¹"
#: modules/gltf/gltf_skeleton.cpp modules/gltf/gltf_skin.cpp
-#, fuzzy
msgid "Joints"
msgstr "关节"
#: modules/gltf/gltf_skeleton.cpp modules/gltf/gltf_skin.cpp
-#, fuzzy
msgid "Roots"
msgstr "æ ¹"
@@ -15983,84 +16399,72 @@ msgid "Godot Bone Node"
msgstr "Godot 骨骼节点"
#: modules/gltf/gltf_skin.cpp
-#, fuzzy
msgid "Skin Root"
-msgstr "æ ¹"
+msgstr "蒙皮根"
#: modules/gltf/gltf_skin.cpp
-#, fuzzy
msgid "Joints Original"
-msgstr "èšç„¦åŽŸç‚¹"
+msgstr "原关节"
#: modules/gltf/gltf_skin.cpp
msgid "Inverse Binds"
-msgstr ""
+msgstr "å转绑定"
#: modules/gltf/gltf_skin.cpp
-#, fuzzy
msgid "Non Joints"
-msgstr "移动关节"
+msgstr "éžå…³èŠ‚"
#: modules/gltf/gltf_skin.cpp
msgid "Joint I To Bone I"
-msgstr ""
+msgstr "关节 I 至骨骼 I"
#: modules/gltf/gltf_skin.cpp
msgid "Joint I To Name"
-msgstr ""
+msgstr "关节 I 至åç§°"
#: modules/gltf/gltf_skin.cpp
-#, fuzzy
msgid "Godot Skin"
-msgstr "Godot Physics"
+msgstr "Godot 蒙皮"
#: modules/gltf/gltf_spec_gloss.cpp
msgid "Diffuse Img"
-msgstr ""
+msgstr "漫å射图åƒ"
#: modules/gltf/gltf_spec_gloss.cpp
msgid "Diffuse Factor"
-msgstr ""
+msgstr "漫å射系数"
#: modules/gltf/gltf_spec_gloss.cpp
msgid "Gloss Factor"
-msgstr ""
+msgstr "光泽系数"
#: modules/gltf/gltf_spec_gloss.cpp
-#, fuzzy
msgid "Specular Factor"
-msgstr "æ ‡é‡è¿ç®—符。"
+msgstr "高光系数"
#: modules/gltf/gltf_spec_gloss.cpp
msgid "Spec Gloss Img"
-msgstr ""
+msgstr "高光光泽图åƒ"
#: modules/gltf/gltf_state.cpp
msgid "Json"
-msgstr ""
+msgstr "JSON"
#: modules/gltf/gltf_state.cpp
-#, fuzzy
msgid "Major Version"
-msgstr "版本"
+msgstr "主版本"
#: modules/gltf/gltf_state.cpp
-#, fuzzy
msgid "Minor Version"
-msgstr "版本"
+msgstr "次版本"
#: modules/gltf/gltf_state.cpp
-#, fuzzy
msgid "GLB Data"
-msgstr "光照数æ®"
+msgstr "GLB æ•°æ®"
#: modules/gltf/gltf_state.cpp
msgid "Use Named Skin Binds"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp scene/3d/physics_joint.cpp
-msgid "Nodes"
-msgstr "节点"
+msgstr "使用具å蒙皮绑定"
#: modules/gltf/gltf_state.cpp
msgid "Buffer Views"
@@ -16068,23 +16472,13 @@ msgstr "缓冲视图"
#: modules/gltf/gltf_state.cpp
msgid "Accessors"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp
-msgid "Meshes"
-msgstr "网格"
-
-#: modules/gltf/gltf_state.cpp
-msgid "Materials"
-msgstr "æè´¨"
+msgstr "访问器"
#: modules/gltf/gltf_state.cpp
-#, fuzzy
msgid "Scene Name"
msgstr "场景命å"
#: modules/gltf/gltf_state.cpp
-#, fuzzy
msgid "Root Nodes"
msgstr "根节点"
@@ -16094,20 +16488,15 @@ msgstr "根节点"
msgid "Textures"
msgstr "纹ç†"
-#: modules/gltf/gltf_state.cpp
+#: modules/gltf/gltf_state.cpp platform/uwp/export/export.cpp
msgid "Images"
msgstr "图åƒ"
#: modules/gltf/gltf_state.cpp
-msgid "Skins"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp
msgid "Cameras"
-msgstr ""
+msgstr "æ‘„åƒæœº"
#: modules/gltf/gltf_state.cpp servers/visual_server.cpp
-#, fuzzy
msgid "Lights"
msgstr "ç¯å…‰"
@@ -16120,27 +16509,28 @@ msgid "Skeletons"
msgstr "骨架"
#: modules/gltf/gltf_state.cpp
-#, fuzzy
msgid "Skeleton To Node"
-msgstr "选择一个节点"
+msgstr "骨架至节点"
#: modules/gltf/gltf_state.cpp scene/2d/animated_sprite.cpp
msgid "Animations"
msgstr "动画"
#: modules/gltf/gltf_texture.cpp
-#, fuzzy
msgid "Src Image"
-msgstr "显示图åƒ"
+msgstr "æ¥æºå›¾åƒ"
+
+#: modules/gridmap/grid_map.cpp
+msgid "Mesh Library"
+msgstr "网格库"
#: modules/gridmap/grid_map.cpp
msgid "Physics Material"
msgstr "ç‰©ç†æè´¨"
-#: modules/gridmap/grid_map.cpp
-#, fuzzy
+#: modules/gridmap/grid_map.cpp scene/3d/visual_instance.cpp
msgid "Use In Baked Light"
-msgstr "烘焙光照贴图"
+msgstr "用于烘焙光照"
#: modules/gridmap/grid_map.cpp scene/2d/tile_map.cpp
#: scene/resources/navigation_mesh.cpp
@@ -16148,30 +16538,26 @@ msgid "Cell"
msgstr "å•元格"
#: modules/gridmap/grid_map.cpp
-#, fuzzy
msgid "Octant Size"
-msgstr "字体大å°"
+msgstr "八分区大å°"
#: modules/gridmap/grid_map.cpp
-#, fuzzy
msgid "Center X"
-msgstr "居中"
+msgstr "X 轴居中"
#: modules/gridmap/grid_map.cpp
-#, fuzzy
msgid "Center Y"
-msgstr "居中"
+msgstr "Y 轴居中"
#: modules/gridmap/grid_map.cpp
-#, fuzzy
msgid "Center Z"
-msgstr "居中"
+msgstr "Z 轴居中"
#: modules/gridmap/grid_map.cpp scene/2d/collision_object_2d.cpp
#: scene/2d/tile_map.cpp scene/3d/collision_object.cpp scene/3d/soft_body.cpp
-#, fuzzy
+#: scene/resources/material.cpp
msgid "Mask"
-msgstr "区域é®ç½©"
+msgstr "é®ç½©"
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Next Plane"
@@ -16335,56 +16721,54 @@ msgstr "CPU 光照贴图器"
#: modules/lightmapper_cpu/register_types.cpp
msgid "Low Quality Ray Count"
-msgstr ""
+msgstr "低等质é‡å°„线数"
#: modules/lightmapper_cpu/register_types.cpp
msgid "Medium Quality Ray Count"
-msgstr ""
+msgstr "中等质é‡å°„线数"
#: modules/lightmapper_cpu/register_types.cpp
msgid "High Quality Ray Count"
-msgstr ""
+msgstr "高等质é‡å°„线数"
#: modules/lightmapper_cpu/register_types.cpp
msgid "Ultra Quality Ray Count"
-msgstr ""
+msgstr "超级质é‡å°„线数"
#: modules/minimp3/audio_stream_mp3.cpp
+#: modules/minimp3/resource_importer_mp3.cpp
#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp
-#, fuzzy
+#: modules/stb_vorbis/resource_importer_ogg_vorbis.cpp
msgid "Loop Offset"
-msgstr "åç§»"
+msgstr "循环åç§»"
#: modules/mobile_vr/mobile_vr_interface.cpp
msgid "Eye Height"
-msgstr ""
+msgstr "眼ç›é«˜åº¦"
#: modules/mobile_vr/mobile_vr_interface.cpp
-#, fuzzy
msgid "IOD"
-msgstr "LOD"
+msgstr "IOD"
#: modules/mobile_vr/mobile_vr_interface.cpp
-#, fuzzy
msgid "Display Width"
-msgstr "显示线框"
+msgstr "显示宽度"
#: modules/mobile_vr/mobile_vr_interface.cpp
-#, fuzzy
msgid "Display To Lens"
-msgstr "显示无阴影"
+msgstr "显示至镜头"
#: modules/mobile_vr/mobile_vr_interface.cpp
msgid "Oversample"
-msgstr ""
+msgstr "过采样"
#: modules/mobile_vr/mobile_vr_interface.cpp
msgid "K1"
-msgstr ""
+msgstr "K1"
#: modules/mobile_vr/mobile_vr_interface.cpp
msgid "K2"
-msgstr ""
+msgstr "K2"
#: modules/mono/csharp_script.cpp
msgid "Class name can't be a reserved keyword"
@@ -16469,25 +16853,23 @@ msgstr "完æˆï¼"
#: modules/opensimplex/noise_texture.cpp
msgid "Seamless"
-msgstr ""
+msgstr "æ— ç¼"
#: modules/opensimplex/noise_texture.cpp
-#, fuzzy
msgid "As Normal Map"
-msgstr "法线贴图"
+msgstr "作为法线贴图"
#: modules/opensimplex/noise_texture.cpp
msgid "Bump Strength"
-msgstr ""
+msgstr "凹凸强度"
#: modules/opensimplex/noise_texture.cpp
msgid "Noise"
-msgstr ""
+msgstr "噪声"
#: modules/opensimplex/noise_texture.cpp
-#, fuzzy
msgid "Noise Offset"
-msgstr "å•ä½åç§»"
+msgstr "噪声åç§»"
#: modules/opensimplex/open_simplex_noise.cpp
msgid "Octaves"
@@ -16498,67 +16880,60 @@ msgid "Period"
msgstr "周期"
#: modules/opensimplex/open_simplex_noise.cpp
-#, fuzzy
msgid "Persistence"
-msgstr "é€è§†"
+msgstr "æŒä¹…"
#: modules/opensimplex/open_simplex_noise.cpp
msgid "Lacunarity"
-msgstr ""
+msgstr "缺项性"
#: modules/regex/regex.cpp
msgid "Subject"
-msgstr ""
+msgstr "对象"
#: modules/regex/regex.cpp
-#, fuzzy
msgid "Names"
msgstr "åç§°"
#: modules/regex/regex.cpp
-#, fuzzy
msgid "Strings"
-msgstr "设置"
+msgstr "字符串"
#: modules/upnp/upnp.cpp
msgid "Discover Multicast If"
-msgstr ""
+msgstr "å‘现多播接å£"
#: modules/upnp/upnp.cpp
msgid "Discover Local Port"
-msgstr ""
+msgstr "å‘现本地端å£"
#: modules/upnp/upnp.cpp
msgid "Discover IPv6"
-msgstr ""
+msgstr "å‘现 IPv6"
#: modules/upnp/upnp_device.cpp
-#, fuzzy
msgid "Description URL"
-msgstr "æè¿°"
+msgstr "æè¿° URL"
#: modules/upnp/upnp_device.cpp
-#, fuzzy
msgid "Service Type"
-msgstr "设置å˜é‡ç±»åž‹"
+msgstr "æœåŠ¡ç±»åž‹"
#: modules/upnp/upnp_device.cpp
msgid "IGD Control URL"
-msgstr ""
+msgstr "IGD 控制 URL"
#: modules/upnp/upnp_device.cpp
-#, fuzzy
msgid "IGD Service Type"
-msgstr "设置å˜é‡ç±»åž‹"
+msgstr "IGD æœåŠ¡ç±»åž‹"
#: modules/upnp/upnp_device.cpp
msgid "IGD Our Addr"
-msgstr ""
+msgstr "IGD 我方地å€"
#: modules/upnp/upnp_device.cpp
-#, fuzzy
msgid "IGD Status"
-msgstr "状æ€"
+msgstr "IGD 状æ€"
#: modules/visual_script/visual_script.cpp scene/resources/visual_shader.cpp
msgid "Default Input Values"
@@ -16922,9 +17297,8 @@ msgid "Return"
msgstr "返回"
#: modules/visual_script/visual_script_flow_control.cpp
-#, fuzzy
msgid "Return Enabled"
-msgstr "坿‰§è¡Œçš„"
+msgstr "返回å¯ç”¨"
#: modules/visual_script/visual_script_flow_control.cpp
msgid "Return Type"
@@ -16976,9 +17350,8 @@ msgid "in order:"
msgstr "按顺åºï¼š"
#: modules/visual_script/visual_script_flow_control.cpp
-#, fuzzy
msgid "Steps"
-msgstr "步长"
+msgstr "步数"
#: modules/visual_script/visual_script_flow_control.cpp
msgid "Switch"
@@ -16998,9 +17371,8 @@ msgstr "是 %s å—?"
#: modules/visual_script/visual_script_flow_control.cpp
#: modules/visual_script/visual_script_func_nodes.cpp
-#, fuzzy
msgid "Base Script"
-msgstr "新建脚本"
+msgstr "基础脚本"
#: modules/visual_script/visual_script_func_nodes.cpp
msgid "On %s"
@@ -17023,26 +17395,22 @@ msgstr "基本类型"
#: modules/visual_script/visual_script_func_nodes.cpp
#: modules/visual_script/visual_script_nodes.cpp
#: modules/visual_script/visual_script_yield_nodes.cpp
-#, fuzzy
msgid "Node Path"
-msgstr "å¤åˆ¶èŠ‚ç‚¹è·¯å¾„"
+msgstr "节点路径"
#: modules/visual_script/visual_script_func_nodes.cpp
msgid "Argument Cache"
msgstr "傿•°ç¼“å­˜"
#: modules/visual_script/visual_script_func_nodes.cpp
-#, fuzzy
msgid "Use Default Args"
-msgstr "é‡ç½®ä¸ºé»˜è®¤å€¼"
+msgstr "ä½¿ç”¨é»˜è®¤å‚æ•°"
#: modules/visual_script/visual_script_func_nodes.cpp
-#, fuzzy
msgid "Validate"
-msgstr "有效字符:"
+msgstr "校验"
#: modules/visual_script/visual_script_func_nodes.cpp
-#, fuzzy
msgid "RPC Call Mode"
msgstr "RPC 调用模å¼"
@@ -17142,9 +17510,8 @@ msgid "a if cond, else b"
msgstr "如果 cond 则 a,å¦åˆ™ b"
#: modules/visual_script/visual_script_nodes.cpp
-#, fuzzy
msgid "Var Name"
-msgstr "åç§°"
+msgstr "å˜é‡åç§°"
#: modules/visual_script/visual_script_nodes.cpp
msgid "VariableGet not found in script: "
@@ -17218,7 +17585,7 @@ msgstr "å­è°ƒç”¨"
#: modules/visual_script/visual_script_nodes.cpp scene/gui/graph_node.cpp
msgid "Title"
-msgstr ""
+msgstr "标题"
#: modules/visual_script/visual_script_nodes.cpp
msgid "Construct %s"
@@ -17246,7 +17613,7 @@ msgstr "解构 %s"
#: modules/visual_script/visual_script_nodes.cpp
msgid "Elem Cache"
-msgstr ""
+msgstr "元素缓冲"
#: modules/visual_script/visual_script_property_selector.cpp
msgid "Search VisualScript"
@@ -17302,7 +17669,7 @@ msgstr "ä¿¡ä»» SSL è¯ä¹¦"
#: modules/websocket/websocket_server.cpp
msgid "Bind IP"
-msgstr ""
+msgstr "绑定 IP"
#: modules/websocket/websocket_server.cpp
msgid "Private Key"
@@ -17313,19 +17680,16 @@ msgid "SSL Certificate"
msgstr "SSL è¯ä¹¦"
#: modules/websocket/websocket_server.cpp
-#, fuzzy
msgid "CA Chain"
-msgstr "清除 IK 链"
+msgstr "CA 链"
#: modules/websocket/websocket_server.cpp
-#, fuzzy
msgid "Handshake Timeout"
-msgstr "等待超时"
+msgstr "æ¡æ‰‹è¶…æ—¶"
#: modules/webxr/webxr_interface.cpp
-#, fuzzy
msgid "Session Mode"
-msgstr "区域模å¼"
+msgstr "ä¼šè¯æ¨¡å¼"
#: modules/webxr/webxr_interface.cpp
msgid "Required Features"
@@ -17337,21 +17701,19 @@ msgstr "å¯é€‰ç‰¹æ€§"
#: modules/webxr/webxr_interface.cpp
msgid "Requested Reference Space Types"
-msgstr ""
+msgstr "请求å‚照空间类型"
#: modules/webxr/webxr_interface.cpp
msgid "Reference Space Type"
-msgstr ""
+msgstr "å‚照空间类型"
#: modules/webxr/webxr_interface.cpp
-#, fuzzy
msgid "Visibility State"
-msgstr "åˆ‡æ¢ éšè—/å¯è§"
+msgstr "å¯è§çжæ€"
#: modules/webxr/webxr_interface.cpp
-#, fuzzy
msgid "Bounds Geometry"
-msgstr "几何体"
+msgstr "界é™å‡ ä½•体"
#: platform/android/export/export.cpp
msgid "Android SDK Path"
@@ -17402,6 +17764,194 @@ msgid "The package must have at least one '.' separator."
msgstr "包必须至少有一个 “.†分隔符。"
#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Use Custom Build"
+msgstr "使用自定义用户目录"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Export Format"
+msgstr "导出路径"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Keystore"
+msgstr "调试 Keystore"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Debug User"
+msgstr "调试器"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+msgid "Debug Password"
+msgstr "调试密ç "
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Release User"
+msgstr "释音(毫秒)"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Release Password"
+msgstr "调试密ç "
+
+#: platform/android/export/export_plugin.cpp
+msgid "One Click Deploy"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Clear Previous Install"
+msgstr "查看上一个实例"
+
+#: platform/android/export/export_plugin.cpp scene/resources/shader.cpp
+msgid "Code"
+msgstr "代ç "
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Min SDK"
+msgstr "最å°å¤§å°"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Target SDK"
+msgstr "目标 FPS"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Package"
+msgstr "打包中"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Unique Name"
+msgstr "唯一åç§°"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Signed"
+msgstr "ä¿¡å·"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Classify As Game"
+msgstr "ç±»å"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Retain Data On Uninstall"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Exclude From Recents"
+msgstr "排除父节点"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Graphics"
+msgstr "图表åç§»"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "OpenGL Debug"
+msgstr "OpenGL"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "XR Features"
+msgstr "特性"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "XR Mode"
+msgstr "原始模å¼"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Hand Tracking"
+msgstr "跟踪"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Hand Tracking Frequency"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Passthrough"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Immersive Mode"
+msgstr "写模å¼"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Support Small"
+msgstr "支æŒ"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Support Normal"
+msgstr "支æŒ"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Support Large"
+msgstr "支æŒ"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Support Xlarge"
+msgstr "支æŒ"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "User Data Backup"
+msgstr "用户数æ®"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Allow"
+msgstr "å…许"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Command Line"
+msgstr "Command"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Extra Args"
+msgstr "é¢å¤–è°ƒç”¨å‚æ•°ï¼š"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "APK Expansion"
+msgstr "表达å¼"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Salt"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Public Key"
+msgstr "SSH 公钥路径"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Permissions"
+msgstr "å‘å°„"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Custom Permissions"
+msgstr "自定义定义"
+
+#: platform/android/export/export_plugin.cpp
msgid "Select device from the list"
msgstr "从列表中选择设备"
@@ -17707,6 +18257,177 @@ msgid "The character '%s' is not allowed in Identifier."
msgstr "标识符中ä¸å…许使用字符“%sâ€ã€‚"
#: platform/iphone/export/export.cpp
+msgid "App Store Team ID"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Provisioning Profile UUID Debug"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Code Sign Identity Debug"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Export Method Debug"
+msgstr "使用调试导出"
+
+#: platform/iphone/export/export.cpp
+msgid "Provisioning Profile UUID Release"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Code Sign Identity Release"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Export Method Release"
+msgstr "导出模å¼ï¼š"
+
+#: platform/iphone/export/export.cpp
+msgid "Targeted Device Family"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Info"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Identifier"
+msgstr "无效的标识符:"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Signature"
+msgstr "ä¿¡å·"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Short Version"
+msgstr "主版本"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Copyright"
+msgstr "å³ä¸Š"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Capabilities"
+msgstr "兼容性"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Access Wi-Fi"
+msgstr "访问"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Push Notifications"
+msgstr "路径旋转"
+
+#: platform/iphone/export/export.cpp scene/3d/baked_lightmap.cpp
+msgid "User Data"
+msgstr "用户数æ®"
+
+#: platform/iphone/export/export.cpp
+msgid "Accessible From Files App"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Accessible From Itunes Sharing"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Privacy"
+msgstr "ç§é’¥"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Camera Usage Description"
+msgstr "æè¿°"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Microphone Usage Description"
+msgstr "属性说明"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Photolibrary Usage Description"
+msgstr "属性说明"
+
+#: platform/iphone/export/export.cpp
+msgid "iPhone 120 X 120"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPhone 180 X 180"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 76 X 76"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 152 X 152"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 167 X 167"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "App Store 1024 X 1024"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Spotlight 40 X 40"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Spotlight 80 X 80"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Storyboard"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Use Launch Screen Storyboard"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Image Scale Mode"
+msgstr "缩放模å¼"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Custom Image @2x"
+msgstr "自定义图åƒ"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Custom Image @3x"
+msgstr "自定义图åƒ"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Use Custom BG Color"
+msgstr "自定义颜色"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Custom BG Color"
+msgstr "自定义颜色"
+
+#: platform/iphone/export/export.cpp
msgid "App Store Team ID not specified - cannot configure the project."
msgstr "未指定 App Store Team ID - 无法é…置项目。"
@@ -17743,6 +18464,80 @@ msgid "Could not read file:"
msgstr "æ— æ³•è¯»å–æ–‡ä»¶ï¼š"
#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Variant"
+msgstr "色相å˜åŒ–"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Export Type"
+msgstr "导出"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "VRAM Texture Compression"
+msgstr "VRAM 压缩"
+
+#: platform/javascript/export/export.cpp
+msgid "For Desktop"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "For Mobile"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Html"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Export Icon"
+msgstr "扩展图标"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Custom Html Shell"
+msgstr "自定义步长"
+
+#: platform/javascript/export/export.cpp
+msgid "Head Include"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Canvas Resize Policy"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Focus Canvas On Start"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Experimental Virtual Keyboard"
+msgstr "虚拟键盘å¯ç”¨"
+
+#: platform/javascript/export/export.cpp
+msgid "Progressive Web App"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Offline Page"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 144 X 144"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 180 X 180"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 512 X 512"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
msgid "Could not read HTML shell:"
msgstr "æ— æ³•è¯»å– HTML 壳:"
@@ -17847,6 +18642,203 @@ msgid "Unknown object type."
msgstr "未知对象类型。"
#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "App Category"
+msgstr "分类:"
+
+#: platform/osx/export/export.cpp
+msgid "High Res"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Location Usage Description"
+msgstr "编辑器æè¿°"
+
+#: platform/osx/export/export.cpp
+msgid "Address Book Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Calendar Usage Description"
+msgstr "编辑器æè¿°"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Photos Library Usage Description"
+msgstr "属性说明"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Desktop Folder Usage Description"
+msgstr "方法说明"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Documents Folder Usage Description"
+msgstr "方法说明"
+
+#: platform/osx/export/export.cpp
+msgid "Downloads Folder Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Network Volumes Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Removable Volumes Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#, fuzzy
+msgid "Codesign"
+msgstr "正在对 DMG 进行代ç ç­¾å"
+
+#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Identity"
+msgstr "缩进"
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#, fuzzy
+msgid "Timestamp"
+msgstr "计时器"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Hardened Runtime"
+msgstr "è¿è¡Œæ—¶"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Replace Existing Signature"
+msgstr "在文件中替æ¢"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Entitlements"
+msgstr "范围"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Custom File"
+msgstr "自定字体"
+
+#: platform/osx/export/export.cpp
+msgid "Allow JIT Code Execution"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Allow Unsigned Executable Memory"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Allow Dyld Environment Variables"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Disable Library Validation"
+msgstr "ç¦ç”¨ç¢°æ’ž"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Audio Input"
+msgstr "添加输入"
+
+#: platform/osx/export/export.cpp
+msgid "Address Book"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Calendars"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Photos Library"
+msgstr "导出库"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Apple Events"
+msgstr "添加事件"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Debugging"
+msgstr "调试"
+
+#: platform/osx/export/export.cpp
+msgid "App Sandbox"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Network Server"
+msgstr "网络对等体"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Network Client"
+msgstr "网络对等体"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Device Usb"
+msgstr "设备"
+
+#: platform/osx/export/export.cpp
+msgid "Device Bluetooth"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Files Downloads"
+msgstr "下载"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Files Pictures"
+msgstr "特性"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Files Music"
+msgstr "文件"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Files Movies"
+msgstr "筛选图å—"
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#, fuzzy
+msgid "Custom Options"
+msgstr "总线选项"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Notarization"
+msgstr "本地化"
+
+#: platform/osx/export/export.cpp
+msgid "Apple ID Name"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Apple ID Password"
+msgstr "调试密ç "
+
+#: platform/osx/export/export.cpp
+msgid "Apple Team ID"
+msgstr ""
+
+#: platform/osx/export/export.cpp
msgid ""
"Note: The notarization process generally takes less than an hour. When the "
"process is completed, you'll receive an email."
@@ -18045,6 +19037,137 @@ msgid "Force Builtin Codesign"
msgstr "强制内置 codesign"
#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Architecture"
+msgstr "添加架构项"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Display Name"
+msgstr "显示缩放"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Short Name"
+msgstr "脚本å:"
+
+#: platform/uwp/export/export.cpp
+msgid "Publisher"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Publisher Display Name"
+msgstr "å‘布者显示å称无效。"
+
+#: platform/uwp/export/export.cpp
+msgid "Product Guid"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Publisher Guid"
+msgstr "清除å‚考线"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Signing"
+msgstr "蒙皮"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Certificate"
+msgstr "è¯ä¹¦"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Algorithm"
+msgstr "调试算法"
+
+#: platform/uwp/export/export.cpp
+msgid "Major"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Minor"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Build"
+msgstr "构建模å¼"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Revision"
+msgstr "精度"
+
+#: platform/uwp/export/export.cpp
+msgid "Landscape"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Portrait"
+msgstr "端å£"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Landscape Flipped"
+msgstr "跳过行数"
+
+#: platform/uwp/export/export.cpp
+msgid "Portrait Flipped"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Store Logo"
+msgstr "存储模å¼"
+
+#: platform/uwp/export/export.cpp
+msgid "Square 44 X 44 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 71 X 71 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 150 X 150 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 310 X 310 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Wide 310 X 150 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Splash Screen"
+msgstr "绘制å±å¹•"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Tiles"
+msgstr "文件"
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Square 150 X 150"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Wide 310 X 150"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Square 310 X 310"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
msgid "Invalid package short name."
msgstr "无效的包短å称。"
@@ -18109,14 +19232,52 @@ msgid "Debug Certificate"
msgstr "调试è¯ä¹¦"
#: platform/uwp/export/export.cpp
-msgid "Debug Password"
-msgstr "调试密ç "
-
-#: platform/uwp/export/export.cpp
msgid "Debug Algorithm"
msgstr "调试算法"
#: platform/windows/export/export.cpp
+msgid "Identity Type"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Timestamp Server URL"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Digest Algorithm"
+msgstr "调试算法"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "File Version"
+msgstr "版本"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Product Version"
+msgstr "产å“版本无效:"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Company Name"
+msgstr "骨骼åç§°"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Product Name"
+msgstr "项目å称:"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "File Description"
+msgstr "æè¿°"
+
+#: platform/windows/export/export.cpp
+msgid "Trademarks"
+msgstr ""
+
+#: platform/windows/export/export.cpp
msgid ""
"The rcedit tool must be configured in the Editor Settings (Export > Windows "
"> Rcedit) to change the icon or app information data."
@@ -18166,9 +19327,8 @@ msgstr ""
"AnimatedSprite 显示帧。"
#: scene/2d/animated_sprite.cpp scene/2d/sprite.cpp scene/3d/sprite_3d.cpp
-#, fuzzy
msgid "Frame"
-msgstr "帧"
+msgstr "帧å·"
#: scene/2d/animated_sprite.cpp scene/2d/cpu_particles_2d.cpp
#: scene/2d/particles_2d.cpp scene/3d/cpu_particles.cpp scene/3d/particles.cpp
@@ -18182,16 +19342,17 @@ msgid "Playing"
msgstr "正在播放"
#: scene/2d/animated_sprite.cpp scene/2d/sprite.cpp scene/3d/sprite_3d.cpp
-#, fuzzy
msgid "Centered"
msgstr "居中"
-#: scene/2d/animated_sprite.cpp scene/2d/camera_2d.cpp scene/2d/light_2d.cpp
+#: scene/2d/animated_sprite.cpp scene/2d/camera_2d.cpp
+#: scene/2d/cpu_particles_2d.cpp scene/2d/light_2d.cpp
#: scene/2d/parallax_background.cpp scene/2d/parallax_layer.cpp
#: scene/2d/path_2d.cpp scene/2d/polygon_2d.cpp scene/2d/sprite.cpp
-#: scene/3d/path.cpp scene/3d/physics_body.cpp scene/3d/sprite_3d.cpp
-#: scene/gui/graph_node.cpp scene/gui/rich_text_effect.cpp
-#: scene/main/canvas_layer.cpp scene/resources/material.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/path.cpp scene/3d/physics_body.cpp
+#: scene/3d/sprite_3d.cpp scene/gui/graph_node.cpp
+#: scene/gui/rich_text_effect.cpp scene/main/canvas_layer.cpp
+#: scene/resources/material.cpp scene/resources/particles_material.cpp
#: scene/resources/style_box.cpp
msgid "Offset"
msgstr "åç§»"
@@ -18207,14 +19368,12 @@ msgid "Flip V"
msgstr "垂直翻转"
#: scene/2d/area_2d.cpp scene/3d/area.cpp
-#, fuzzy
msgid "Monitoring"
msgstr "监视"
#: scene/2d/area_2d.cpp scene/3d/area.cpp
-#, fuzzy
msgid "Monitorable"
-msgstr "监视"
+msgstr "å¯è¢«ç›‘视"
#: scene/2d/area_2d.cpp scene/3d/area.cpp
msgid "Physics Overrides"
@@ -18225,18 +19384,16 @@ msgid "Space Override"
msgstr "空间覆盖"
#: scene/2d/area_2d.cpp scene/3d/area.cpp
-#, fuzzy
msgid "Gravity Point"
-msgstr "生æˆé¡¶ç‚¹"
+msgstr "é‡åŠ›ç‚¹"
#: scene/2d/area_2d.cpp scene/3d/area.cpp
msgid "Gravity Distance Scale"
msgstr "é‡åŠ›è·ç¦»ç¼©æ”¾"
#: scene/2d/area_2d.cpp scene/3d/area.cpp
-#, fuzzy
msgid "Gravity Vec"
-msgstr "é‡åŠ›"
+msgstr "é‡åŠ›å‘é‡"
#: scene/2d/area_2d.cpp scene/2d/cpu_particles_2d.cpp scene/3d/area.cpp
#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
@@ -18256,14 +19413,8 @@ msgid "Audio Bus"
msgstr "音频总线"
#: scene/2d/area_2d.cpp scene/3d/area.cpp
-#, fuzzy
msgid "Override"
-msgstr "é‡å†™"
-
-#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
-#: scene/audio/audio_stream_player.cpp scene/gui/video_player.cpp
-msgid "Stream"
-msgstr "æµ"
+msgstr "覆盖"
#: scene/2d/audio_stream_player_2d.cpp scene/audio/audio_stream_player.cpp
#: scene/gui/video_player.cpp servers/audio/effects/audio_effect_amplify.cpp
@@ -18288,12 +19439,12 @@ msgid "Stream Paused"
msgstr "æš‚åœæµ"
#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
-#: scene/3d/reflection_probe.cpp scene/3d/visual_instance.cpp
-#: scene/resources/material.cpp
+#: scene/3d/light.cpp scene/3d/reflection_probe.cpp
+#: scene/3d/visual_instance.cpp scene/resources/material.cpp
msgid "Max Distance"
msgstr "最大è·ç¦»"
-#: scene/2d/audio_stream_player_2d.cpp
+#: scene/2d/audio_stream_player_2d.cpp scene/3d/light.cpp
msgid "Attenuation"
msgstr "è¡°å‡"
@@ -18315,14 +19466,12 @@ msgid "Anchor Mode"
msgstr "锚点模å¼"
#: scene/2d/camera_2d.cpp
-#, fuzzy
msgid "Rotating"
msgstr "旋转"
#: scene/2d/camera_2d.cpp scene/3d/camera.cpp
-#, fuzzy
msgid "Current"
-msgstr "当å‰ï¼š"
+msgstr "当å‰"
#: scene/2d/camera_2d.cpp scene/gui/graph_edit.cpp
msgid "Zoom"
@@ -18342,24 +19491,39 @@ msgstr "å¤„ç†æ¨¡å¼"
msgid "Limit"
msgstr "é™åˆ¶"
-#: scene/2d/camera_2d.cpp
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/style_box.cpp
+#, fuzzy
+msgid "Left"
+msgstr "UI å·¦"
+
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/style_box.cpp
+#, fuzzy
+msgid "Right"
+msgstr "ç¯å…‰"
+
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/dynamic_font.cpp scene/resources/style_box.cpp
#, fuzzy
+msgid "Bottom"
+msgstr "左下"
+
+#: scene/2d/camera_2d.cpp
msgid "Smoothed"
-msgstr "平滑æ’值"
+msgstr "平滑"
#: scene/2d/camera_2d.cpp
msgid "Draw Margin"
msgstr "绘制边è·"
#: scene/2d/camera_2d.cpp
-#, fuzzy
msgid "Drag Margin H Enabled"
-msgstr "拖拽边è·"
+msgstr "水平拖拽边è·å¯ç”¨"
#: scene/2d/camera_2d.cpp
-#, fuzzy
msgid "Drag Margin V Enabled"
-msgstr "拖拽边è·"
+msgstr "垂直拖拽边è·å¯ç”¨"
#: scene/2d/camera_2d.cpp
msgid "Smoothing"
@@ -18367,31 +19531,27 @@ msgstr "平滑"
#: scene/2d/camera_2d.cpp
msgid "H"
-msgstr ""
+msgstr "æ°´å¹³"
#: scene/2d/camera_2d.cpp
-#, fuzzy
msgid "V"
-msgstr "UV"
+msgstr "垂直"
#: scene/2d/camera_2d.cpp
msgid "Drag Margin"
msgstr "拖拽边è·"
#: scene/2d/camera_2d.cpp
-#, fuzzy
msgid "Draw Screen"
-msgstr "绘制空格"
+msgstr "绘制å±å¹•"
#: scene/2d/camera_2d.cpp
-#, fuzzy
msgid "Draw Limits"
-msgstr "é™åˆ¶"
+msgstr "绘制é™åˆ¶"
#: scene/2d/camera_2d.cpp
-#, fuzzy
msgid "Draw Drag Margin"
-msgstr "拖拽边è·"
+msgstr "绘制拖拽边è·"
#: scene/2d/canvas_item.cpp scene/animation/animation_blend_space_2d.cpp
#: scene/resources/environment.cpp scene/resources/material.cpp
@@ -18403,9 +19563,8 @@ msgid "Light Mode"
msgstr "光照模å¼"
#: scene/2d/canvas_item.cpp
-#, fuzzy
msgid "Particles Animation"
-msgstr "ç²’å­"
+msgstr "ç²’å­åŠ¨ç”»"
#: scene/2d/canvas_item.cpp
msgid "Particles Anim H Frames"
@@ -18416,9 +19575,8 @@ msgid "Particles Anim V Frames"
msgstr "ç²’å­åŠ¨ç”»åž‚ç›´å¸§æ•°"
#: scene/2d/canvas_item.cpp
-#, fuzzy
msgid "Particles Anim Loop"
-msgstr "ç²’å­"
+msgstr "ç²’å­åŠ¨ç”»å¾ªçŽ¯"
#: scene/2d/canvas_item.cpp scene/3d/spatial.cpp
msgid "Visibility"
@@ -18426,9 +19584,8 @@ msgstr "å¯è§æ€§"
#: scene/2d/canvas_item.cpp scene/3d/spatial.cpp scene/gui/progress_bar.cpp
#: scene/gui/rich_text_effect.cpp scene/main/canvas_layer.cpp
-#, fuzzy
msgid "Visible"
-msgstr "å¯è§æ€§"
+msgstr "å¯è§"
#: scene/2d/canvas_item.cpp scene/3d/sprite_3d.cpp
#: scene/resources/style_box.cpp
@@ -18436,13 +19593,12 @@ msgid "Modulate"
msgstr "调制"
#: scene/2d/canvas_item.cpp
-#, fuzzy
msgid "Self Modulate"
-msgstr "调制"
+msgstr "自我调制"
#: scene/2d/canvas_item.cpp
msgid "Show Behind Parent"
-msgstr ""
+msgstr "显示在父级之åŽ"
#: scene/2d/canvas_item.cpp
msgid "Show On Top"
@@ -18454,9 +19610,8 @@ msgid "Light Mask"
msgstr "光线é®ç½©"
#: scene/2d/canvas_item.cpp
-#, fuzzy
msgid "Use Parent Material"
-msgstr "å¤„ç†æè´¨"
+msgstr "使用父级æè´¨"
#: scene/2d/canvas_item.cpp
msgid "Toplevel"
@@ -18481,9 +19636,8 @@ msgstr ""
"状。"
#: scene/2d/collision_object_2d.cpp
-#, fuzzy
msgid "Pickable"
-msgstr "选择图å—"
+msgstr "坿‹¾å–"
#: scene/2d/collision_polygon_2d.cpp
msgid ""
@@ -18514,14 +19668,12 @@ msgstr "构建模å¼"
#: scene/3d/collision_polygon.cpp scene/3d/collision_shape.cpp
#: scene/animation/animation_node_state_machine.cpp scene/gui/base_button.cpp
#: scene/gui/texture_button.cpp
-#, fuzzy
msgid "Disabled"
-msgstr "ä¸å¯ç”¨çš„项目"
+msgstr "ç¦ç”¨"
#: scene/2d/collision_polygon_2d.cpp scene/2d/collision_shape_2d.cpp
-#, fuzzy
msgid "One Way Collision"
-msgstr "å•å‘碰撞边è·"
+msgstr "å•å‘碰撞"
#: scene/2d/collision_polygon_2d.cpp scene/2d/collision_shape_2d.cpp
msgid "One Way Collision Margin"
@@ -18560,15 +19712,8 @@ msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp
#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
-#, fuzzy
msgid "Emitting"
-msgstr "微调"
-
-#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp scene/3d/area.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
-#: scene/resources/environment.cpp
-msgid "Amount"
-msgstr "æ•°é‡"
+msgstr "å‘å°„"
#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp
#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
@@ -18577,9 +19722,8 @@ msgstr "生命期"
#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp
#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp scene/main/timer.cpp
-#, fuzzy
msgid "One Shot"
-msgstr "OneShot 节点"
+msgstr "啿¬¡"
#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp
#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
@@ -18609,7 +19753,7 @@ msgstr "固定 FPS"
#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp
#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
msgid "Fract Delta"
-msgstr ""
+msgstr "分数增é‡"
#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp
#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
@@ -18618,9 +19762,8 @@ msgstr "绘制"
#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp
#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
-#, fuzzy
msgid "Local Coords"
-msgstr "本地项目"
+msgstr "æœ¬åœ°åæ ‡"
#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp
#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
@@ -18631,17 +19774,12 @@ msgstr "绘制顺åº"
#: scene/2d/mesh_instance_2d.cpp scene/2d/multimesh_instance_2d.cpp
#: scene/2d/particles_2d.cpp scene/2d/polygon_2d.cpp scene/2d/sprite.cpp
#: scene/3d/sprite_3d.cpp scene/gui/nine_patch_rect.cpp
-#: scene/gui/texture_rect.cpp scene/resources/sky.cpp
-#: scene/resources/style_box.cpp scene/resources/visual_shader_nodes.cpp
+#: scene/gui/texture_rect.cpp scene/resources/material.cpp
+#: scene/resources/sky.cpp scene/resources/style_box.cpp
+#: scene/resources/visual_shader_nodes.cpp
msgid "Texture"
msgstr "纹ç†"
-#: scene/2d/cpu_particles_2d.cpp scene/2d/mesh_instance_2d.cpp
-#: scene/2d/multimesh_instance_2d.cpp scene/2d/particles_2d.cpp
-#: scene/2d/sprite.cpp scene/resources/style_box.cpp
-msgid "Normal Map"
-msgstr "法线贴图"
-
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
msgid "Emission Shape"
@@ -18649,25 +19787,22 @@ msgstr "å‘射形状"
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
-#, fuzzy
msgid "Sphere Radius"
-msgstr "å‘å°„çƒä½“åŠå¾„"
+msgstr "çƒä½“åŠå¾„"
#: scene/2d/cpu_particles_2d.cpp
-#, fuzzy
msgid "Rect Extents"
-msgstr "控制器大å°"
+msgstr "矩形大å°"
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#, fuzzy
msgid "Normals"
-msgstr "正常"
+msgstr "法线"
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/3d/sprite_3d.cpp scene/resources/material.cpp
-#: scene/resources/particles_material.cpp scene/resources/texture.cpp
-msgid "Flags"
-msgstr "标志"
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Align Y"
+msgstr "对é½"
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
@@ -18686,6 +19821,12 @@ msgid "Initial Velocity"
msgstr "åˆé€Ÿåº¦"
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Velocity Random"
+msgstr "速度"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp servers/physics_2d_server.cpp
#: servers/physics_server.cpp
msgid "Angular Velocity"
@@ -18693,6 +19834,12 @@ msgstr "角速度"
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Velocity Curve"
+msgstr "速度"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
msgid "Orbit Velocity"
msgstr "环绕速度"
@@ -18703,6 +19850,23 @@ msgstr "线性加速度"
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Accel"
+msgstr "访问"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Accel Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Accel Curve"
+msgstr "拆分曲线"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
msgid "Radial Accel"
msgstr "径å‘加速度"
@@ -18712,19 +19876,57 @@ msgid "Tangential Accel"
msgstr "切å‘加速度"
#: scene/2d/cpu_particles_2d.cpp scene/2d/joints_2d.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/vehicle_body.cpp
-#: scene/resources/particles_material.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/physics_joint.cpp
+#: scene/3d/vehicle_body.cpp scene/resources/particles_material.cpp
#: servers/audio/effects/audio_effect_reverb.cpp
msgid "Damping"
msgstr "阻尼"
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Damping Random"
+msgstr "阻尼"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Damping Curve"
+msgstr "阻尼"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp scene/3d/light.cpp
+#: scene/resources/particles_material.cpp
msgid "Angle"
msgstr "角度"
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Angle Random"
+msgstr "最å°è§’度"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Angle Curve"
+msgstr "é—­åˆæ›²çº¿"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#, fuzzy
+msgid "Scale Amount"
+msgstr "太阳é‡"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+msgid "Scale Amount Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#, fuzzy
+msgid "Scale Amount Curve"
+msgstr "通过光标缩放"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
msgid "Color Ramp"
msgstr "颜色映射"
@@ -18738,6 +19940,48 @@ msgstr "颜色åˆå§‹æ˜ å°„"
msgid "Hue Variation"
msgstr "色相å˜åŒ–"
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Variation"
+msgstr "色相å˜åŒ–"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Variation Random"
+msgstr "色相å˜åŒ–"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Variation Curve"
+msgstr "色相å˜åŒ–"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Speed Random"
+msgstr "速度缩放"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Speed Curve"
+msgstr "拆分曲线"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Offset Random"
+msgstr "åç§»"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Offset Curve"
+msgstr "é—­åˆæ›²çº¿"
+
#: scene/2d/joints_2d.cpp
msgid "Node A and Node B must be PhysicsBody2Ds"
msgstr "Node A 与 Node B 必须为 PhysicsBody2D"
@@ -18759,28 +20003,26 @@ msgid "Node A and Node B must be different PhysicsBody2Ds"
msgstr "Node A 与 Node B 必须为ä¸åŒçš„ PhysicsBody2D"
#: scene/2d/joints_2d.cpp scene/3d/physics_joint.cpp
-#, fuzzy
msgid "Node A"
-msgstr "节点"
+msgstr "节点 A"
#: scene/2d/joints_2d.cpp scene/3d/physics_joint.cpp
-#, fuzzy
msgid "Node B"
-msgstr "节点"
+msgstr "节点 B"
#: scene/2d/joints_2d.cpp scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp
+#: scene/3d/light.cpp scene/3d/physics_joint.cpp
#: scene/resources/environment.cpp
msgid "Bias"
msgstr "å倚"
#: scene/2d/joints_2d.cpp
-#, fuzzy
msgid "Disable Collision"
-msgstr "ç¦ç”¨æŠ˜å "
+msgstr "ç¦ç”¨ç¢°æ’ž"
-#: scene/2d/joints_2d.cpp
+#: scene/2d/joints_2d.cpp scene/3d/physics_joint.cpp
msgid "Softness"
-msgstr ""
+msgstr "软度"
#: scene/2d/joints_2d.cpp scene/resources/animation.cpp
#: scene/resources/ray_shape.cpp scene/resources/segment_shape_2d.cpp
@@ -18793,11 +20035,11 @@ msgstr "åˆå§‹åç§»"
#: scene/2d/joints_2d.cpp scene/3d/vehicle_body.cpp
msgid "Rest Length"
-msgstr ""
+msgstr "放æ¾é•¿åº¦"
-#: scene/2d/joints_2d.cpp scene/3d/vehicle_body.cpp
+#: scene/2d/joints_2d.cpp scene/3d/physics_joint.cpp scene/3d/vehicle_body.cpp
msgid "Stiffness"
-msgstr ""
+msgstr "硬度"
#: scene/2d/light_2d.cpp
msgid ""
@@ -18806,69 +20048,55 @@ msgid ""
msgstr "必须将具有ç¯å…‰å½¢çŠ¶çš„çº¹ç†æä¾›ç»™ “Textureâ€ï¼ˆçº¹ç†ï¼‰å±žæ€§ã€‚"
#: scene/2d/light_2d.cpp scene/3d/light.cpp scene/gui/reference_rect.cpp
-#, fuzzy
msgid "Editor Only"
-msgstr "编辑器"
+msgstr "仅编辑器"
#: scene/2d/light_2d.cpp
msgid "Texture Scale"
msgstr "纹ç†ç¼©æ”¾"
#: scene/2d/light_2d.cpp scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp
-#: scene/resources/environment.cpp scene/resources/sky.cpp
+#: scene/3d/light.cpp scene/resources/environment.cpp scene/resources/sky.cpp
msgid "Energy"
msgstr "能é‡"
#: scene/2d/light_2d.cpp
msgid "Z Min"
-msgstr ""
+msgstr "Z 下é™"
#: scene/2d/light_2d.cpp
msgid "Z Max"
-msgstr ""
+msgstr "Z 上é™"
#: scene/2d/light_2d.cpp
-#, fuzzy
msgid "Layer Min"
-msgstr "ä¿®æ”¹æ‘„åƒæœºå°ºå¯¸"
+msgstr "层下é™"
#: scene/2d/light_2d.cpp
-#, fuzzy
msgid "Layer Max"
-msgstr "层"
+msgstr "层上é™"
#: scene/2d/light_2d.cpp
-#, fuzzy
msgid "Item Cull Mask"
-msgstr "剔除é®ç½©"
+msgstr "项目剔除é®ç½©"
#: scene/2d/light_2d.cpp scene/3d/light.cpp scene/resources/style_box.cpp
msgid "Shadow"
msgstr "阴影"
#: scene/2d/light_2d.cpp
-#, fuzzy
msgid "Buffer Size"
-msgstr "分批缓冲区大å°"
+msgstr "缓冲区大å°"
#: scene/2d/light_2d.cpp
-#, fuzzy
msgid "Gradient Length"
-msgstr "过渡"
-
-#: scene/2d/light_2d.cpp scene/gui/control.cpp
-#: scene/resources/navigation_mesh.cpp
-#, fuzzy
-msgid "Filter"
-msgstr "过滤器"
+msgstr "æ¸å˜é•¿åº¦"
#: scene/2d/light_2d.cpp
-#, fuzzy
msgid "Filter Smooth"
-msgstr "筛选方法"
+msgstr "过滤器平滑"
#: scene/2d/light_occluder_2d.cpp
-#, fuzzy
msgid "Closed"
msgstr "关闭"
@@ -18890,9 +20118,8 @@ msgid "Width Curve"
msgstr "宽度曲线"
#: scene/2d/line_2d.cpp
-#, fuzzy
msgid "Default Color"
-msgstr "默认清å±é¢œè‰²"
+msgstr "默认颜色"
#: scene/2d/line_2d.cpp scene/resources/texture.cpp
msgid "Fill"
@@ -18908,73 +20135,66 @@ msgstr "çº¹ç†æ¨¡å¼"
#: scene/2d/line_2d.cpp
msgid "Capping"
-msgstr ""
+msgstr "端点"
#: scene/2d/line_2d.cpp
msgid "Joint Mode"
-msgstr "关节模å¼"
+msgstr "交点模å¼"
#: scene/2d/line_2d.cpp
-#, fuzzy
msgid "Begin Cap Mode"
-msgstr "区域模å¼"
+msgstr "首端模å¼"
#: scene/2d/line_2d.cpp
-#, fuzzy
msgid "End Cap Mode"
-msgstr "å¸é™„模å¼ï¼š"
+msgstr "尾端模å¼"
#: scene/2d/line_2d.cpp scene/2d/polygon_2d.cpp scene/resources/style_box.cpp
msgid "Border"
msgstr "边框"
#: scene/2d/line_2d.cpp
-#, fuzzy
msgid "Sharp Limit"
-msgstr "角度é™åˆ¶"
+msgstr "é”度é™åˆ¶"
#: scene/2d/line_2d.cpp
msgid "Round Precision"
-msgstr ""
+msgstr "圆角精度"
#: scene/2d/line_2d.cpp scene/2d/polygon_2d.cpp
#: scene/resources/dynamic_font.cpp
-#, fuzzy
msgid "Antialiased"
-msgstr "字体抗锯齿"
+msgstr "抗锯齿"
#: scene/2d/multimesh_instance_2d.cpp scene/3d/multimesh_instance.cpp
-#, fuzzy
msgid "Multimesh"
-msgstr "将 %s 乘以"
+msgstr "MultiMesh"
#: scene/2d/navigation_2d.cpp scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp
#: scene/3d/navigation.cpp scene/animation/root_motion_view.cpp
#: scene/resources/world_2d.cpp servers/physics_2d/physics_2d_server_sw.cpp
msgid "Cell Size"
-msgstr ""
+msgstr "å•元格大å°"
#: scene/2d/navigation_2d.cpp scene/3d/navigation.cpp
-#, fuzzy
msgid "Edge Connection Margin"
-msgstr "编辑连接:"
+msgstr "边缘连接边è·"
#: scene/2d/navigation_agent_2d.cpp scene/3d/navigation_agent.cpp
msgid "Target Desired Distance"
-msgstr ""
+msgstr "目标期望è·ç¦»"
#: scene/2d/navigation_agent_2d.cpp scene/3d/navigation_agent.cpp
msgid "Neighbor Dist"
-msgstr ""
+msgstr "邻接è·ç¦»"
#: scene/2d/navigation_agent_2d.cpp scene/3d/navigation_agent.cpp
msgid "Max Neighbors"
-msgstr ""
+msgstr "最大相邻数"
#: scene/2d/navigation_agent_2d.cpp scene/3d/navigation_agent.cpp
-#, fuzzy
msgid "Time Horizon"
-msgstr "水平翻转"
+msgstr "时间下é™"
#: scene/2d/navigation_agent_2d.cpp scene/3d/navigation_agent.cpp
msgid "Max Speed"
@@ -18989,9 +20209,8 @@ msgid "The NavigationAgent2D can be used only under a Node2D node."
msgstr "NavigationAgent2D åªèƒ½åœ¨ Node2D 节点下使用。"
#: scene/2d/navigation_obstacle_2d.cpp scene/3d/navigation_obstacle.cpp
-#, fuzzy
msgid "Estimate Radius"
-msgstr "外径"
+msgstr "估计åŠå¾„"
#: scene/2d/navigation_obstacle_2d.cpp
msgid ""
@@ -19000,9 +20219,8 @@ msgid ""
msgstr "NavigationObstacle2D åªèƒ½ç”¨äºŽä¸º Node2D 对象é¿å…碰撞。"
#: scene/2d/navigation_polygon.cpp scene/resources/navigation_mesh.cpp
-#, fuzzy
msgid "Vertices"
-msgstr "顶点:"
+msgstr "顶点"
#: scene/2d/navigation_polygon.cpp
msgid "Outlines"
@@ -19025,7 +20243,7 @@ msgstr ""
#: scene/2d/navigation_polygon.cpp
msgid "Navpoly"
-msgstr ""
+msgstr "导航多边形"
#: scene/2d/node_2d.cpp scene/2d/polygon_2d.cpp scene/3d/spatial.cpp
#: scene/main/canvas_layer.cpp
@@ -19041,46 +20259,40 @@ msgid "Global Rotation Degrees"
msgstr "全局旋转角度"
#: scene/2d/node_2d.cpp
-#, fuzzy
msgid "Global Scale"
-msgstr "法线缩放"
+msgstr "全局缩放"
#: scene/2d/node_2d.cpp scene/3d/spatial.cpp
msgid "Global Transform"
msgstr "å…¨å±€å˜æ¢"
#: scene/2d/node_2d.cpp
-#, fuzzy
msgid "Z As Relative"
-msgstr "相对å¸é™„"
+msgstr "Z 为相对é‡"
#: scene/2d/parallax_background.cpp scene/gui/scroll_container.cpp
msgid "Scroll"
-msgstr ""
+msgstr "滚动"
#: scene/2d/parallax_background.cpp
-#, fuzzy
msgid "Base Offset"
-msgstr "åç§»"
+msgstr "基础åç§»"
#: scene/2d/parallax_background.cpp
-#, fuzzy
msgid "Base Scale"
-msgstr "使用缩放å¸é™„"
+msgstr "基础缩放"
#: scene/2d/parallax_background.cpp
-#, fuzzy
msgid "Limit Begin"
-msgstr "é™åˆ¶"
+msgstr "起点é™åˆ¶"
#: scene/2d/parallax_background.cpp
-#, fuzzy
msgid "Limit End"
-msgstr "é™åˆ¶"
+msgstr "终点é™åˆ¶"
#: scene/2d/parallax_background.cpp
msgid "Ignore Camera Zoom"
-msgstr ""
+msgstr "忽略相机缩放"
#: scene/2d/parallax_layer.cpp
msgid ""
@@ -19091,12 +20303,10 @@ msgstr ""
#: scene/2d/parallax_layer.cpp scene/2d/physics_body_2d.cpp
#: scene/3d/physics_body.cpp scene/3d/vehicle_body.cpp
#: servers/physics_2d_server.cpp servers/physics_server.cpp
-#, fuzzy
msgid "Motion"
-msgstr "动作"
+msgstr "è¿åЍ"
#: scene/2d/parallax_layer.cpp
-#, fuzzy
msgid "Mirroring"
msgstr "镜åƒ"
@@ -19137,9 +20347,8 @@ msgstr ""
"Particles2D 动画需è¦ä½¿ç”¨å¯ç”¨äº† “Particles Animation†的 CanvasItemMaterial。"
#: scene/2d/particles_2d.cpp
-#, fuzzy
msgid "Visibility Rect"
-msgstr "å¯è§æ¨¡å¼"
+msgstr "å¯è§çŸ©å½¢"
#: scene/2d/particles_2d.cpp scene/3d/particles.cpp
msgid "Process Material"
@@ -19159,51 +20368,46 @@ msgid "Unit Offset"
msgstr "å•ä½åç§»"
#: scene/2d/path_2d.cpp scene/3d/camera.cpp scene/3d/path.cpp
-#, fuzzy
msgid "H Offset"
-msgstr "åç§»"
+msgstr "æ°´å¹³åç§»"
#: scene/2d/path_2d.cpp scene/3d/camera.cpp scene/3d/path.cpp
-#, fuzzy
msgid "V Offset"
-msgstr "åç§»"
+msgstr "垂直åç§»"
#: scene/2d/path_2d.cpp scene/3d/path.cpp
msgid "Cubic Interp"
-msgstr ""
+msgstr "三次æ’值"
#: scene/2d/path_2d.cpp
msgid "Lookahead"
-msgstr ""
+msgstr "æå‰é‡"
#: scene/2d/physics_body_2d.cpp scene/3d/visual_instance.cpp
msgid "Layers"
msgstr "层"
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-#, fuzzy
msgid "Constant Linear Velocity"
-msgstr "åˆé€Ÿåº¦"
+msgstr "常线速度"
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-#, fuzzy
msgid "Constant Angular Velocity"
-msgstr "角速度"
+msgstr "常角速度"
#: scene/2d/physics_body_2d.cpp scene/2d/tile_map.cpp scene/3d/physics_body.cpp
#: scene/resources/physics_material.cpp
-#, fuzzy
msgid "Friction"
-msgstr "函数"
+msgstr "摩擦"
#: scene/2d/physics_body_2d.cpp scene/2d/tile_map.cpp scene/3d/physics_body.cpp
#: scene/resources/physics_material.cpp
msgid "Bounce"
-msgstr ""
+msgstr "åå¼¹"
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
msgid "Physics Material Override"
-msgstr ""
+msgstr "ç‰©ç†æè´¨è¦†ç›–"
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
#: scene/resources/world.cpp scene/resources/world_2d.cpp
@@ -19222,205 +20426,176 @@ msgstr ""
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
msgid "Mass"
-msgstr ""
+msgstr "è´¨é‡"
#: scene/2d/physics_body_2d.cpp
msgid "Inertia"
msgstr "惯性"
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-#, fuzzy
msgid "Weight"
-msgstr "ç¯å…‰"
+msgstr "é‡é‡"
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
msgid "Gravity Scale"
-msgstr ""
+msgstr "é‡åŠ›ç¼©æ”¾"
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-#, fuzzy
msgid "Custom Integrator"
-msgstr "自定义步长"
+msgstr "自定义集æˆå™¨"
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-#, fuzzy
msgid "Continuous CD"
msgstr "连续碰撞检测"
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
msgid "Contacts Reported"
-msgstr ""
+msgstr "报告接触"
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-#, fuzzy
msgid "Contact Monitor"
-msgstr "接触颜色"
+msgstr "接触监视器"
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
#: servers/physics_2d_server.cpp servers/physics_server.cpp
-#, fuzzy
msgid "Sleeping"
-msgstr "å¸é™„"
+msgstr "ç¡çœ "
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-#, fuzzy
msgid "Can Sleep"
-msgstr "平移速度"
+msgstr "å¯ä»¥ç¡çœ "
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-#, fuzzy
msgid "Damp"
msgstr "阻尼"
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
msgid "Angular"
-msgstr ""
+msgstr "è§’"
#: scene/2d/physics_body_2d.cpp
msgid "Applied Forces"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp
-#, fuzzy
-msgid "Force"
-msgstr "强制 FPS"
+msgstr "应用力"
#: scene/2d/physics_body_2d.cpp
msgid "Torque"
-msgstr ""
+msgstr "力矩"
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
msgid "Safe Margin"
msgstr "安全边è·"
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-#, fuzzy
msgid "Sync To Physics"
-msgstr "Godot Physics"
+msgstr "与物ç†åŒæ­¥"
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
#, fuzzy
-msgid "Moving platform"
-msgstr "移动输出"
+msgid "Moving Platform"
+msgstr "移动平å°"
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
msgid "Apply Velocity On Leave"
-msgstr ""
+msgstr "离开时应用速度"
#: scene/2d/physics_body_2d.cpp scene/2d/touch_screen_button.cpp
#: scene/3d/physics_body.cpp scene/gui/texture_button.cpp
-#: scene/resources/line_shape_2d.cpp
+#: scene/resources/line_shape_2d.cpp scene/resources/material.cpp
msgid "Normal"
msgstr "正常"
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-#, fuzzy
msgid "Remainder"
-msgstr "渲染"
+msgstr "ä½™é‡"
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-#, fuzzy
msgid "Local Shape"
-msgstr "区域"
+msgstr "本地形状"
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
#: servers/physics_2d_server.cpp servers/physics_server.cpp
-#, fuzzy
msgid "Collider"
-msgstr "碰撞体 ID"
+msgstr "碰撞体"
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
#: servers/physics_2d_server.cpp servers/physics_server.cpp
-#, fuzzy
msgid "Collider ID"
msgstr "碰撞体 ID"
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
#: servers/physics_2d_server.cpp servers/physics_server.cpp
-#, fuzzy
msgid "Collider RID"
-msgstr "碰撞体 ID"
+msgstr "碰撞体 RID"
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
#: servers/physics_2d_server.cpp servers/physics_server.cpp
-#, fuzzy
msgid "Collider Shape"
-msgstr "碰撞体 ID"
+msgstr "碰撞体形状"
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-#, fuzzy
msgid "Collider Shape Index"
-msgstr "碰撞体 ID"
+msgstr "碰撞体形状索引"
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
#: servers/physics_2d_server.cpp servers/physics_server.cpp
-#, fuzzy
msgid "Collider Velocity"
-msgstr "角速度"
+msgstr "碰撞体速度"
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
msgid "Collider Metadata"
-msgstr ""
+msgstr "碰撞体元数æ®"
#: scene/2d/polygon_2d.cpp
msgid "Invert"
-msgstr ""
+msgstr "翻转"
#: scene/2d/polygon_2d.cpp
-#, fuzzy
msgid "Vertex Colors"
msgstr "顶点颜色"
#: scene/2d/polygon_2d.cpp
-#, fuzzy
msgid "Internal Vertex Count"
-msgstr "创建内部顶点"
+msgstr "内部顶点数"
#: scene/2d/position_2d.cpp
msgid "Gizmo Extents"
msgstr "控制器大å°"
#: scene/2d/ray_cast_2d.cpp scene/3d/ray_cast.cpp
-#, fuzzy
msgid "Exclude Parent"
-msgstr "排除"
+msgstr "排除父节点"
#: scene/2d/ray_cast_2d.cpp scene/3d/ray_cast.cpp
-#, fuzzy
msgid "Cast To"
-msgstr "投射阴影"
+msgstr "投射至"
#: scene/2d/ray_cast_2d.cpp scene/3d/ray_cast.cpp
msgid "Collide With"
-msgstr ""
+msgstr "碰撞对象"
#: scene/2d/ray_cast_2d.cpp scene/3d/camera.cpp scene/3d/ray_cast.cpp
-#, fuzzy
msgid "Areas"
-msgstr "区域é®ç½©"
+msgstr "区域"
#: scene/2d/ray_cast_2d.cpp scene/3d/camera.cpp scene/3d/ray_cast.cpp
msgid "Bodies"
-msgstr ""
+msgstr "实体"
#: scene/2d/remote_transform_2d.cpp
msgid "Path property must point to a valid Node2D node to work."
msgstr "Path å±žæ€§å¿…é¡»æŒ‡å‘æœ‰æ•ˆçš„ Node2D 节点æ‰èƒ½æ­£å¸¸å·¥ä½œã€‚"
#: scene/2d/remote_transform_2d.cpp scene/3d/remote_transform.cpp
-#, fuzzy
msgid "Remote Path"
-msgstr "远程端å£"
+msgstr "远程路径"
#: scene/2d/remote_transform_2d.cpp scene/3d/remote_transform.cpp
-#, fuzzy
msgid "Use Global Coordinates"
-msgstr "ä¸‹ä¸€ä¸ªåæ ‡"
+msgstr "ä½¿ç”¨å…¨å±€åæ ‡"
#: scene/2d/skeleton_2d.cpp
-#, fuzzy
msgid "Rest"
-msgstr "釿–°å¯åЍ"
+msgstr "放æ¾"
#: scene/2d/skeleton_2d.cpp
msgid "Default Length"
@@ -19449,14 +20624,12 @@ msgid "Vframes"
msgstr "垂直帧数"
#: scene/2d/sprite.cpp scene/3d/sprite_3d.cpp
-#, fuzzy
msgid "Frame Coords"
-msgstr "帧"
+msgstr "叧忠‡"
#: scene/2d/sprite.cpp scene/resources/texture.cpp
-#, fuzzy
msgid "Filter Clip"
-msgstr "筛选脚本"
+msgstr "过滤è£å‰ª"
#: scene/2d/tile_map.cpp
msgid ""
@@ -19473,71 +20646,60 @@ msgid "Tile Set"
msgstr "图å—集"
#: scene/2d/tile_map.cpp
-#, fuzzy
msgid "Quadrant Size"
-msgstr "ä¿®æ”¹æ‘„åƒæœºå°ºå¯¸"
+msgstr "象é™å¤§å°"
#: scene/2d/tile_map.cpp
-#, fuzzy
msgid "Custom Transform"
-msgstr "å˜æ¢"
+msgstr "è‡ªå®šä¹‰å˜æ¢"
#: scene/2d/tile_map.cpp
-#, fuzzy
msgid "Half Offset"
-msgstr "å•元格åŠåç§»"
+msgstr "åŠåç§»"
#: scene/2d/tile_map.cpp
-#, fuzzy
msgid "Tile Origin"
-msgstr "显示原点"
+msgstr "图å—原点"
#: scene/2d/tile_map.cpp
-#, fuzzy
msgid "Y Sort"
-msgstr "排åº"
+msgstr "Y 排åº"
#: scene/2d/tile_map.cpp
-#, fuzzy
msgid "Show Collision"
-msgstr "碰撞"
+msgstr "显示碰撞"
#: scene/2d/tile_map.cpp
-#, fuzzy
msgid "Compatibility Mode"
-msgstr "兼容性"
+msgstr "兼容模å¼"
#: scene/2d/tile_map.cpp
-#, fuzzy
msgid "Centered Textures"
-msgstr "å¿…è¦ç‰¹æ€§"
+msgstr "纹ç†å±…中"
#: scene/2d/tile_map.cpp
msgid "Cell Clip UV"
-msgstr ""
+msgstr "图å—è£å‰ª UV"
#: scene/2d/tile_map.cpp
-#, fuzzy
msgid "Use Parent"
-msgstr "碰撞模å¼"
+msgstr "使用父节点"
#: scene/2d/tile_map.cpp
msgid "Use Kinematic"
-msgstr ""
+msgstr "使用 Kinematic"
#: scene/2d/touch_screen_button.cpp
-#, fuzzy
msgid "Shape Centered"
-msgstr "å¸é™„到节点中心"
+msgstr "形状居中"
#: scene/2d/touch_screen_button.cpp
-#, fuzzy
msgid "Shape Visible"
-msgstr "切æ¢å¯è§æ€§"
+msgstr "形状å¯è§"
#: scene/2d/touch_screen_button.cpp
msgid "Passby Press"
-msgstr ""
+msgstr "ç»è¿‡ç‚¹å‡»"
#: scene/2d/touch_screen_button.cpp
msgid "Visibility Mode"
@@ -19549,27 +20711,55 @@ msgid ""
"as parent."
msgstr "当直接将已编辑的场景根作为父级使用时,VisibilityEnabler2D 效果最佳。"
+#: scene/2d/visibility_notifier_2d.cpp scene/3d/visibility_notifier.cpp
+#, fuzzy
+msgid "Pause Animations"
+msgstr "粘贴动画"
+
+#: scene/2d/visibility_notifier_2d.cpp scene/3d/visibility_notifier.cpp
+#, fuzzy
+msgid "Freeze Bodies"
+msgstr "实体"
+
+#: scene/2d/visibility_notifier_2d.cpp
+#, fuzzy
+msgid "Pause Particles"
+msgstr "ç²’å­"
+
+#: scene/2d/visibility_notifier_2d.cpp
+#, fuzzy
+msgid "Pause Animated Sprites"
+msgstr "粘贴动画"
+
+#: scene/2d/visibility_notifier_2d.cpp
+#, fuzzy
+msgid "Process Parent"
+msgstr "处ç†ä¼˜å…ˆçº§"
+
+#: scene/2d/visibility_notifier_2d.cpp
+#, fuzzy
+msgid "Physics Process Parent"
+msgstr "æ’­æ”¾å¤„ç†æ¨¡å¼"
+
#: scene/3d/area.cpp
msgid "Reverb Bus"
msgstr "æ··å“æ€»çº¿"
#: scene/3d/area.cpp
-#, fuzzy
msgid "Uniformity"
-msgstr "Uniform åç§°"
+msgstr "统一性"
#: scene/3d/arvr_nodes.cpp
msgid "ARVRCamera must have an ARVROrigin node as its parent."
msgstr "ARVRCamera 必须将 ARVROrigin 节点作为其父节点。"
#: scene/3d/arvr_nodes.cpp
-#, fuzzy
msgid "Controller ID"
-msgstr "碰撞体 ID"
+msgstr "控制器 ID"
#: scene/3d/arvr_nodes.cpp servers/arvr/arvr_positional_tracker.cpp
msgid "Rumble"
-msgstr ""
+msgstr "震动"
#: scene/3d/arvr_nodes.cpp
msgid "ARVRController must have an ARVROrigin node as its parent."
@@ -19582,7 +20772,6 @@ msgid ""
msgstr "控制器 ID ä¸èƒ½ä¸º 0,å¦åˆ™æ­¤æŽ§åˆ¶å™¨å°†ä¸ä¼šç»‘定到实际的控制器。"
#: scene/3d/arvr_nodes.cpp
-#, fuzzy
msgid "Anchor ID"
msgstr "锚点 ID"
@@ -19601,9 +20790,8 @@ msgid "ARVROrigin requires an ARVRCamera child node."
msgstr "ARVROrigin 需è¦ä¸€ä¸ª ARVRCamera å­èŠ‚ç‚¹ã€‚"
#: scene/3d/arvr_nodes.cpp servers/arvr_server.cpp
-#, fuzzy
msgid "World Scale"
-msgstr "法线缩放"
+msgstr "世界缩放"
#: scene/3d/audio_stream_player_3d.cpp
msgid "Attenuation Model"
@@ -19611,42 +20799,41 @@ msgstr "è¡°å‡æ¨¡åž‹"
#: scene/3d/audio_stream_player_3d.cpp
msgid "Unit dB"
-msgstr ""
+msgstr "å•ä½ dB"
#: scene/3d/audio_stream_player_3d.cpp
msgid "Unit Size"
-msgstr ""
+msgstr "å•ä½å¤§å°"
#: scene/3d/audio_stream_player_3d.cpp
msgid "Max dB"
-msgstr ""
+msgstr "最大 dB"
#: scene/3d/audio_stream_player_3d.cpp
msgid "Out Of Range Mode"
-msgstr ""
+msgstr "超出范围模å¼"
#: scene/3d/audio_stream_player_3d.cpp
msgid "Emission Angle"
msgstr "å‘å°„è§’"
#: scene/3d/audio_stream_player_3d.cpp
-#, fuzzy
msgid "Degrees"
-msgstr "旋转度数"
+msgstr "度数"
#: scene/3d/audio_stream_player_3d.cpp
-#, fuzzy
msgid "Filter Attenuation dB"
-msgstr "è¡°å‡"
+msgstr "è¿‡æ»¤è¡°å‡ dB"
#: scene/3d/audio_stream_player_3d.cpp
msgid "Attenuation Filter"
-msgstr ""
+msgstr "è¡°å‡è¿‡æ»¤"
#: scene/3d/audio_stream_player_3d.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
#: servers/audio/effects/audio_effect_filter.cpp
msgid "Cutoff Hz"
-msgstr ""
+msgstr "截频 Hz"
#: scene/3d/audio_stream_player_3d.cpp
#: servers/audio/effects/audio_effect_filter.cpp
@@ -19654,41 +20841,33 @@ msgid "dB"
msgstr "分è´"
#: scene/3d/audio_stream_player_3d.cpp
-#, fuzzy
msgid "Doppler"
-msgstr "å¯ç”¨å¤šæ™®å‹’效应"
+msgstr "多普勒"
#: scene/3d/audio_stream_player_3d.cpp
-#, fuzzy
msgid "Tracking"
-msgstr "打包中"
+msgstr "跟踪"
#: scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp
msgid "Bounds"
-msgstr ""
+msgstr "界é™"
#: scene/3d/baked_lightmap.cpp
-#, fuzzy
msgid "Cell Space Transform"
-msgstr "æ¸…é™¤å˜æ¢"
+msgstr "å•å…ƒæ ¼ç©ºé—´å˜æ¢"
#: scene/3d/baked_lightmap.cpp
msgid "Cell Subdiv"
-msgstr ""
+msgstr "å•元格细分"
#: scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp
#: scene/3d/reflection_probe.cpp
msgid "Interior"
-msgstr ""
+msgstr "内部"
#: scene/3d/baked_lightmap.cpp
-#, fuzzy
msgid "Octree"
-msgstr "å­æ ‘"
-
-#: scene/3d/baked_lightmap.cpp
-msgid "User Data"
-msgstr "用户数æ®"
+msgstr "八剿 ‘"
#: scene/3d/baked_lightmap.cpp
msgid "Finding meshes and lights"
@@ -19717,85 +20896,72 @@ msgstr "完æˆ"
#: scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp
#: scene/3d/reflection_probe.cpp scene/resources/box_shape.cpp
#: scene/resources/rectangle_shape_2d.cpp
-#, fuzzy
msgid "Extents"
-msgstr "控制器大å°"
+msgstr "范围"
#: scene/3d/baked_lightmap.cpp
msgid "Tweaks"
-msgstr ""
+msgstr "调整"
#: scene/3d/baked_lightmap.cpp
msgid "Bounces"
-msgstr ""
+msgstr "弹射"
#: scene/3d/baked_lightmap.cpp
msgid "Bounce Indirect Energy"
-msgstr ""
+msgstr "弹射间接能é‡"
#: scene/3d/baked_lightmap.cpp
-#, fuzzy
msgid "Use Denoiser"
-msgstr "使用过滤器"
+msgstr "使用é™å™ªå™¨"
#: scene/3d/baked_lightmap.cpp scene/resources/texture.cpp
-#, fuzzy
msgid "Use HDR"
-msgstr "使用 BVH"
+msgstr "使用 HDR"
#: scene/3d/baked_lightmap.cpp
-#, fuzzy
msgid "Use Color"
-msgstr "基础颜色"
+msgstr "使用颜色"
#: scene/3d/baked_lightmap.cpp
msgid "Default Texels Per Unit"
msgstr "默认æ¯å•ä½çº¹ç´ æ•°"
#: scene/3d/baked_lightmap.cpp scene/resources/texture.cpp
-#, fuzzy
msgid "Atlas"
-msgstr "新建图集"
+msgstr "图集"
#: scene/3d/baked_lightmap.cpp
-#, fuzzy
msgid "Generate"
-msgstr "常规"
+msgstr "生æˆ"
#: scene/3d/baked_lightmap.cpp
-#, fuzzy
msgid "Max Size"
-msgstr "最大大å°ï¼ˆKB)"
+msgstr "大å°ä¸Šé™"
#: scene/3d/baked_lightmap.cpp
-#, fuzzy
msgid "Custom Sky"
-msgstr "自定义步长"
+msgstr "自定义天空"
#: scene/3d/baked_lightmap.cpp
-#, fuzzy
msgid "Custom Sky Rotation Degrees"
-msgstr "旋转角度"
+msgstr "自定义天空旋转角度"
#: scene/3d/baked_lightmap.cpp scene/3d/ray_cast.cpp
-#, fuzzy
msgid "Custom Color"
-msgstr "注释颜色"
+msgstr "自定义颜色"
#: scene/3d/baked_lightmap.cpp
-#, fuzzy
msgid "Custom Energy"
-msgstr "自定义特效"
+msgstr "自定义能é‡"
#: scene/3d/baked_lightmap.cpp
-#, fuzzy
msgid "Min Light"
-msgstr "环境光"
+msgstr "最低光照"
#: scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp
-#, fuzzy
msgid "Propagation"
-msgstr "导航"
+msgstr "ä¼ æ’­"
#: scene/3d/baked_lightmap.cpp
msgid "Image Path"
@@ -19806,9 +20972,8 @@ msgid "Light Data"
msgstr "光照数æ®"
#: scene/3d/bone_attachment.cpp
-#, fuzzy
msgid "Bone Name"
-msgstr "节点å称:"
+msgstr "骨骼åç§°"
#: scene/3d/camera.cpp
msgid "Keep Aspect"
@@ -19819,9 +20984,8 @@ msgid "Cull Mask"
msgstr "剔除é®ç½©"
#: scene/3d/camera.cpp
-#, fuzzy
msgid "Doppler Tracking"
-msgstr "属性轨é“"
+msgstr "多普勒跟踪"
#: scene/3d/camera.cpp
msgid "Projection"
@@ -19832,9 +20996,8 @@ msgid "FOV"
msgstr "FOV"
#: scene/3d/camera.cpp
-#, fuzzy
msgid "Frustum Offset"
-msgstr "å•ä½åç§»"
+msgstr "视锥åç§»"
#: scene/3d/camera.cpp
msgid "Near"
@@ -19852,18 +21015,16 @@ msgid "Margin"
msgstr "è¾¹è·"
#: scene/3d/camera.cpp
-#, fuzzy
msgid "Clip To"
-msgstr "å‘上è£å‰ª"
+msgstr "è£å‰ªè‡³"
#: scene/3d/collision_object.cpp scene/3d/soft_body.cpp
msgid "Ray Pickable"
-msgstr ""
+msgstr "å°„çº¿å¯æ‹¾å–"
#: scene/3d/collision_object.cpp
-#, fuzzy
msgid "Capture On Drag"
-msgstr "æ•获"
+msgstr "拖拽时æ•获"
#: scene/3d/collision_object.cpp
msgid ""
@@ -19927,33 +21088,38 @@ msgstr ""
"SpatialMaterial。"
#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
-#, fuzzy
msgid "Box Extents"
-msgstr "控制器大å°"
+msgstr "ç›’å­èŒƒå›´"
#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
-#, fuzzy
msgid "Ring Radius"
-msgstr "å‘å°„é®ç½©"
+msgstr "环åŠå¾„"
#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
-#, fuzzy
msgid "Ring Inner Radius"
-msgstr "内径"
+msgstr "环内径"
#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
-#, fuzzy
msgid "Ring Height"
-msgstr "å‘峿—‹è½¬"
+msgstr "环高度"
#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
-#, fuzzy
msgid "Ring Axis"
-msgstr "环边数"
+msgstr "环轴"
+
+#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Rotate Y"
+msgstr "旋转"
+
+#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Disable Z"
+msgstr "ç¦ç”¨ 3D"
#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
msgid "Flatness"
-msgstr ""
+msgstr "æ‰å¹³åº¦"
#: scene/3d/cull_instance.cpp servers/visual_server.cpp
msgid "Portals"
@@ -19965,12 +21131,11 @@ msgstr "入壿¨¡å¼"
#: scene/3d/cull_instance.cpp
msgid "Include In Bound"
-msgstr ""
+msgstr "包å«äºŽç•Œé™"
#: scene/3d/cull_instance.cpp
-#, fuzzy
msgid "Allow Merging"
-msgstr "å…许"
+msgstr "å…许åˆå¹¶"
#: scene/3d/cull_instance.cpp
msgid "Autoplace Priority"
@@ -19978,27 +21143,21 @@ msgstr "自动放置优先级"
#: scene/3d/gi_probe.cpp
msgid "To Cell Xform"
-msgstr ""
+msgstr "至å•å…ƒæ ¼å˜æ¢"
#: scene/3d/gi_probe.cpp
-#, fuzzy
msgid "Dynamic Data"
-msgstr "动æ€å­—体"
+msgstr "åŠ¨æ€æ•°æ®"
#: scene/3d/gi_probe.cpp
-#, fuzzy
msgid "Dynamic Range"
-msgstr "动æ€é“¾æŽ¥åº“"
+msgstr "动æ€èŒƒå›´"
-#: scene/3d/gi_probe.cpp
+#: scene/3d/gi_probe.cpp scene/3d/light.cpp
msgid "Normal Bias"
msgstr "法线å倚"
#: scene/3d/gi_probe.cpp
-msgid "Compress"
-msgstr "压缩"
-
-#: scene/3d/gi_probe.cpp
msgid "Plotting Meshes"
msgstr "正在绘制网格"
@@ -20029,18 +21188,30 @@ msgstr "细分"
#: scene/3d/light.cpp
#, fuzzy
+msgid "Indirect Energy"
+msgstr "弹射间接能é‡"
+
+#: scene/3d/light.cpp
msgid "Negative"
-msgstr "GDNative"
+msgstr "逆转"
#: scene/3d/light.cpp
#, fuzzy
+msgid "Specular"
+msgstr "高光模å¼"
+
+#: scene/3d/light.cpp
msgid "Bake Mode"
-msgstr "ä½æŽ©ç æ¨¡å¼"
+msgstr "烘焙模å¼"
#: scene/3d/light.cpp
#, fuzzy
+msgid "Contact"
+msgstr "对比度"
+
+#: scene/3d/light.cpp
msgid "Reverse Cull Face"
-msgstr "æ··å“æ€»çº¿åç§°"
+msgstr "å转剔除表é¢"
#: scene/3d/light.cpp servers/visual_server.cpp
msgid "Directional Shadow"
@@ -20048,27 +21219,43 @@ msgstr "æ–¹å‘阴影"
#: scene/3d/light.cpp
#, fuzzy
+msgid "Split 1"
+msgstr "拆分"
+
+#: scene/3d/light.cpp
+#, fuzzy
+msgid "Split 2"
+msgstr "拆分"
+
+#: scene/3d/light.cpp
+#, fuzzy
+msgid "Split 3"
+msgstr "拆分"
+
+#: scene/3d/light.cpp
msgid "Blend Splits"
-msgstr "æ··åˆæ—¶é—´ï¼š"
+msgstr "æ··åˆæ‹†åˆ†"
#: scene/3d/light.cpp
#, fuzzy
+msgid "Bias Split Scale"
+msgstr "基础缩放"
+
+#: scene/3d/light.cpp
msgid "Depth Range"
-msgstr "深度"
+msgstr "深度范围"
#: scene/3d/light.cpp
msgid "Omni"
msgstr "å…¨å‘"
#: scene/3d/light.cpp
-#, fuzzy
msgid "Shadow Mode"
-msgstr "å…¨å‘阴影模å¼"
+msgstr "阴影模å¼"
#: scene/3d/light.cpp
-#, fuzzy
msgid "Shadow Detail"
-msgstr "å…¨å‘阴影细节"
+msgstr "阴影细节"
#: scene/3d/light.cpp
msgid "A SpotLight with an angle wider than 90 degrees cannot cast shadows."
@@ -20076,34 +21263,36 @@ msgstr "角度宽于 90 度的 SpotLight 无法投射出阴影。"
#: scene/3d/light.cpp
msgid "Spot"
-msgstr ""
+msgstr "èšå…‰"
+
+#: scene/3d/light.cpp
+#, fuzzy
+msgid "Angle Attenuation"
+msgstr "è¡°å‡"
#: scene/3d/mesh_instance.cpp
msgid "Software Skinning"
-msgstr ""
+msgstr "软件蒙皮"
#: scene/3d/mesh_instance.cpp
-#, fuzzy
msgid "Transform Normals"
-msgstr "å˜æ¢æ ¼å¼"
+msgstr "å˜æ¢æ³•线"
#: scene/3d/navigation.cpp scene/resources/curve.cpp
msgid "Up Vector"
msgstr "上å‘é‡"
#: scene/3d/navigation.cpp
-#, fuzzy
msgid "Cell Height"
-msgstr "测试高度"
+msgstr "å•元格高度"
#: scene/3d/navigation_agent.cpp
msgid "Agent Height Offset"
-msgstr ""
+msgstr "代ç†é«˜åº¦åç§»"
#: scene/3d/navigation_agent.cpp
-#, fuzzy
msgid "Ignore Y"
-msgstr "[忽略]"
+msgstr "忽略 Y"
#: scene/3d/navigation_agent.cpp
msgid "The NavigationAgent can be used only under a spatial node."
@@ -20119,7 +21308,7 @@ msgstr ""
#: scene/3d/navigation_mesh_instance.cpp
msgid "Navmesh"
-msgstr ""
+msgstr "导航网格"
#: scene/3d/navigation_obstacle.cpp
msgid ""
@@ -20171,19 +21360,16 @@ msgstr ""
"SpatialMaterial。"
#: scene/3d/particles.cpp
-#, fuzzy
msgid "Visibility AABB"
-msgstr "å¯è§æ€§"
+msgstr "å¯è§æ€§ AABB"
#: scene/3d/particles.cpp
-#, fuzzy
msgid "Draw Passes"
-msgstr "绘制调用:"
+msgstr "绘制阶段"
#: scene/3d/particles.cpp
-#, fuzzy
msgid "Passes"
-msgstr "绘制调用:"
+msgstr "阶段"
#: scene/3d/path.cpp
msgid "PathFollow only works when set as a child of a Path node."
@@ -20198,7 +21384,6 @@ msgstr ""
"Vectorâ€ã€‚"
#: scene/3d/path.cpp
-#, fuzzy
msgid "Rotation Mode"
msgstr "旋转模å¼"
@@ -20218,8 +21403,67 @@ msgstr "è½´é”定"
#: scene/3d/physics_body.cpp
#, fuzzy
+msgid "Linear X"
+msgstr "线性"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Linear Y"
+msgstr "线性"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Linear Z"
+msgstr "线性"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Angular X"
+msgstr "è§’"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Angular Y"
+msgstr "è§’"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Angular Z"
+msgstr "è§’"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Motion X"
+msgstr "è¿åЍ"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Motion Y"
+msgstr "è¿åЍ"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Motion Z"
+msgstr "è¿åЍ"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Move Lock X"
+msgstr "移动节点"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Move Lock Y"
+msgstr "移动节点"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Move Lock Z"
+msgstr "移动节点"
+
+#: scene/3d/physics_body.cpp
msgid "Body Offset"
-msgstr "åç§»"
+msgstr "实体åç§»"
#: scene/3d/physics_joint.cpp
msgid "Node A and Node B must be PhysicsBodies"
@@ -20243,12 +21487,20 @@ msgstr "Node A 与 Node B 必须为ä¸åŒçš„ PhysicsBody"
#: scene/3d/physics_joint.cpp
msgid "Solver"
-msgstr ""
+msgstr "求解器"
#: scene/3d/physics_joint.cpp
-#, fuzzy
msgid "Exclude Nodes"
-msgstr "排除æ’ä»¶"
+msgstr "排除节点"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Params"
+msgstr "傿•°"
+
+#: scene/3d/physics_joint.cpp
+msgid "Impulse Clamp"
+msgstr ""
#: scene/3d/physics_joint.cpp
msgid "Angular Limit"
@@ -20262,6 +21514,54 @@ msgstr "上端"
msgid "Lower"
msgstr "下端"
+#: scene/3d/physics_joint.cpp scene/3d/vehicle_body.cpp
+msgid "Relaxation"
+msgstr "æ¾é©°"
+
+#: scene/3d/physics_joint.cpp
+msgid "Motor"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Target Velocity"
+msgstr "环绕速度"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Max Impulse"
+msgstr "最大速度"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit"
+msgstr "角度é™åˆ¶"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Upper Distance"
+msgstr "采样è·ç¦»"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Lower Distance"
+msgstr "è·ç¦»"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Restitution"
+msgstr "æè¿°"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motion"
+msgstr "线性硬度"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Ortho"
+msgstr "正交åŽè§†å›¾"
+
#: scene/3d/physics_joint.cpp
msgid "Upper Angle"
msgstr "上端角"
@@ -20272,11 +21572,44 @@ msgstr "下端角"
#: scene/3d/physics_joint.cpp
#, fuzzy
+msgid "Angular Motion"
+msgstr "角速度"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Angular Ortho"
+msgstr "è§’"
+
+#: scene/3d/physics_joint.cpp
msgid "Swing Span"
-msgstr "正在ä¿å­˜åœºæ™¯"
+msgstr "摆动范围"
#: scene/3d/physics_joint.cpp
msgid "Twist Span"
+msgstr "扭转范围"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit X"
+msgstr "角度é™åˆ¶ X"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motor X"
+msgstr "线性速度"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Force Limit"
+msgstr "绘制é™åˆ¶"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Spring X"
+msgstr "行间è·"
+
+#: scene/3d/physics_joint.cpp
+msgid "Equilibrium Point"
msgstr ""
#: scene/3d/physics_joint.cpp
@@ -20284,13 +21617,77 @@ msgid "Angular Limit X"
msgstr "角度é™åˆ¶ X"
#: scene/3d/physics_joint.cpp
+msgid "Erp"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Angular Motor X"
+msgstr "角度é™åˆ¶ X"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Angular Spring X"
+msgstr "角度é™åˆ¶ X"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit Y"
+msgstr "角度é™åˆ¶ Y"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motor Y"
+msgstr "线性速度"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Spring Y"
+msgstr "行间è·"
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit Y"
msgstr "角度é™åˆ¶ Y"
#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Angular Motor Y"
+msgstr "角度é™åˆ¶ Y"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Angular Spring Y"
+msgstr "角度é™åˆ¶ Y"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit Z"
+msgstr "角度é™åˆ¶ Z"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motor Z"
+msgstr "线性速度"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Spring Z"
+msgstr "行间è·"
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit Z"
msgstr "角度é™åˆ¶ Z"
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Angular Motor Z"
+msgstr "角度é™åˆ¶ Z"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Angular Spring Z"
+msgstr "角度é™åˆ¶ Z"
+
#: scene/3d/portal.cpp
msgid "The RoomManager should not be a child or grandchild of a Portal."
msgstr "RoomManager ä¸åº”该是 Portal çš„å­èŠ‚ç‚¹æˆ–å­™èŠ‚ç‚¹ã€‚"
@@ -20304,37 +21701,32 @@ msgid "A RoomGroup should not be a child or grandchild of a Portal."
msgstr "RoomGroup ä¸åº”该是 Portal çš„å­èŠ‚ç‚¹æˆ–å­™èŠ‚ç‚¹ã€‚"
#: scene/3d/portal.cpp
-#, fuzzy
msgid "Portal Active"
-msgstr " [å…¥å£ç”Ÿæ•ˆ]"
+msgstr "å…¥å£ç”Ÿæ•ˆ"
#: scene/3d/portal.cpp scene/resources/occluder_shape_polygon.cpp
msgid "Two Way"
-msgstr ""
+msgstr "åŒå‘"
#: scene/3d/portal.cpp
-#, fuzzy
msgid "Linked Room"
-msgstr "实时编辑根节点:"
+msgstr "连接房间"
#: scene/3d/portal.cpp
-#, fuzzy
msgid "Use Default Margin"
-msgstr "默认 Z Far"
+msgstr "使用默认边è·"
#: scene/3d/proximity_group.cpp
-#, fuzzy
msgid "Group Name"
-msgstr "已分组"
+msgstr "分组åç§°"
#: scene/3d/proximity_group.cpp
msgid "Dispatch Mode"
-msgstr ""
+msgstr "调度模å¼"
#: scene/3d/proximity_group.cpp
-#, fuzzy
msgid "Grid Radius"
-msgstr "åŠå¾„"
+msgstr "网格åŠå¾„"
#: scene/3d/ray_cast.cpp
msgid "Debug Shape"
@@ -20349,34 +21741,28 @@ msgid "Update Mode"
msgstr "更新模å¼"
#: scene/3d/reflection_probe.cpp
-#, fuzzy
msgid "Origin Offset"
-msgstr "网格å移:"
+msgstr "原点åç§»"
#: scene/3d/reflection_probe.cpp
-#, fuzzy
msgid "Box Projection"
-msgstr "投影"
+msgstr "盒投影"
#: scene/3d/reflection_probe.cpp
-#, fuzzy
msgid "Enable Shadows"
-msgstr "å¯ç”¨å¸é™„"
+msgstr "å¯ç”¨é˜´å½±"
#: scene/3d/reflection_probe.cpp
-#, fuzzy
msgid "Ambient Color"
-msgstr "强调颜色"
+msgstr "环境光颜色"
#: scene/3d/reflection_probe.cpp
-#, fuzzy
msgid "Ambient Energy"
-msgstr "å‘射色彩"
+msgstr "环境光能é‡"
#: scene/3d/reflection_probe.cpp
-#, fuzzy
msgid "Ambient Contrib"
-msgstr "环境光"
+msgstr "环境光贡献"
#: scene/3d/remote_transform.cpp
msgid ""
@@ -20407,15 +21793,15 @@ msgstr ""
#: scene/3d/room.cpp
msgid "Use Default Simplify"
-msgstr ""
+msgstr "使用默认简化"
-#: scene/3d/room.cpp
+#: scene/3d/room.cpp scene/3d/room_manager.cpp
msgid "Room Simplify"
msgstr "房间简化"
#: scene/3d/room.cpp
msgid "Bound"
-msgstr ""
+msgstr "界é™"
#: scene/3d/room_group.cpp
msgid "Roomgroup Priority"
@@ -20449,9 +21835,15 @@ msgstr "场景树中仅能存在一个 RoomManager。"
msgid "Main"
msgstr "主è¦"
+#: scene/3d/room_manager.cpp scene/animation/animation_player.cpp
+#: scene/animation/animation_tree.cpp scene/animation/animation_tree_player.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+msgid "Active"
+msgstr "激活"
+
#: scene/3d/room_manager.cpp
msgid "Roomlist"
-msgstr ""
+msgstr "房间列表"
#: scene/3d/room_manager.cpp servers/visual_server.cpp
msgid "PVS"
@@ -20467,9 +21859,57 @@ msgstr "PVS 文件å"
#: scene/3d/room_manager.cpp servers/visual_server.cpp
msgid "Gameplay"
+msgstr "玩法"
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Gameplay Monitor"
+msgstr "玩法"
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Use Secondary PVS"
+msgstr "ä½¿ç”¨ç®€å• PVS"
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Merge Meshes"
+msgstr "网格"
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Show Margins"
+msgstr "显示原点"
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Debug Sprawl"
+msgstr "调试绘制"
+
+#: scene/3d/room_manager.cpp
+msgid "Overlap Warning Threshold"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Preview Camera"
+msgstr "预览大å°"
+
+#: scene/3d/room_manager.cpp
+msgid "Portal Depth Limit"
msgstr ""
#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Default Portal Margin"
+msgstr "å…¥å£è¾¹è·"
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Roaming Expansion Margin"
+msgstr "扩展边è·"
+
+#: scene/3d/room_manager.cpp
msgid ""
"RoomList path is invalid.\n"
"Please check the RoomList branch has been assigned in the RoomManager."
@@ -20514,14 +21954,12 @@ msgstr ""
"è¯·ç¡®ä¿æ‰€æœ‰æˆ¿é—´éƒ½åŒ…å«å‡ ä½•ç»“æž„ï¼Œæˆ–è€…åŒ…å«æ‰‹åŠ¨è¾¹ç•Œã€‚"
#: scene/3d/soft_body.cpp
-#, fuzzy
msgid "Physics Enabled"
-msgstr "物ç†å¸§ %"
+msgstr "å¯ç”¨ç‰©ç†"
#: scene/3d/soft_body.cpp
-#, fuzzy
msgid "Parent Collision Ignore"
-msgstr "创建碰撞多边形"
+msgstr "忽略父节点碰撞"
#: scene/3d/soft_body.cpp
msgid "Simulation Precision"
@@ -20533,31 +21971,31 @@ msgstr "总质é‡"
#: scene/3d/soft_body.cpp
msgid "Linear Stiffness"
-msgstr ""
+msgstr "线性硬度"
#: scene/3d/soft_body.cpp
msgid "Areaangular Stiffness"
-msgstr ""
+msgstr "区域角硬度"
#: scene/3d/soft_body.cpp
msgid "Volume Stiffness"
-msgstr ""
+msgstr "体积硬度"
#: scene/3d/soft_body.cpp
msgid "Pressure Coefficient"
-msgstr ""
+msgstr "压力系数"
#: scene/3d/soft_body.cpp
msgid "Damping Coefficient"
-msgstr ""
+msgstr "阻尼系数"
#: scene/3d/soft_body.cpp
msgid "Drag Coefficient"
-msgstr ""
+msgstr "阻力系数"
#: scene/3d/soft_body.cpp
msgid "Pose Matching Coefficient"
-msgstr ""
+msgstr "姿势匹é…系数"
#: scene/3d/soft_body.cpp
msgid "This body will be ignored until you set a mesh."
@@ -20581,14 +22019,12 @@ msgid "Gizmo"
msgstr "控制器"
#: scene/3d/spatial_velocity_tracker.cpp
-#, fuzzy
msgid "Track Physics Step"
-msgstr "ç‰©ç† FPS"
+msgstr "跟踪物ç†è¿­ä»£"
#: scene/3d/spring_arm.cpp
-#, fuzzy
msgid "Spring Length"
-msgstr "强度"
+msgstr "弹簧长度"
#: scene/3d/sprite_3d.cpp scene/gui/graph_edit.cpp
msgid "Opacity"
@@ -20602,6 +22038,21 @@ msgstr "åƒç´ å¤§å°"
msgid "Billboard"
msgstr "公告æ¿"
+#: scene/3d/sprite_3d.cpp scene/resources/material.cpp
+#, fuzzy
+msgid "Transparent"
+msgstr "逿˜ŽèƒŒæ™¯"
+
+#: scene/3d/sprite_3d.cpp
+#, fuzzy
+msgid "Shaded"
+msgstr "ç€è‰²å™¨"
+
+#: scene/3d/sprite_3d.cpp
+#, fuzzy
+msgid "Double Sided"
+msgstr "åŒå‡»"
+
#: scene/3d/sprite_3d.cpp
msgid "Alpha Cut"
msgstr "Alpha 切除"
@@ -20643,14 +22094,12 @@ msgid "VehicleBody Motion"
msgstr "VehicleBody è¿åЍ"
#: scene/3d/vehicle_body.cpp
-#, fuzzy
msgid "Use As Traction"
-msgstr "分隔:"
+msgstr "用作牵引"
#: scene/3d/vehicle_body.cpp
-#, fuzzy
msgid "Use As Steering"
-msgstr "æ–¹å‘æŽ§åˆ¶"
+msgstr "用作方å‘"
#: scene/3d/vehicle_body.cpp
msgid "Wheel"
@@ -20658,30 +22107,23 @@ msgstr "车轮"
#: scene/3d/vehicle_body.cpp
msgid "Roll Influence"
-msgstr ""
+msgstr "翻滚影å“"
#: scene/3d/vehicle_body.cpp
-#, fuzzy
msgid "Friction Slip"
-msgstr "函数"
+msgstr "摩擦滑动"
#: scene/3d/vehicle_body.cpp
msgid "Suspension"
msgstr "悬架"
#: scene/3d/vehicle_body.cpp
-#, fuzzy
msgid "Max Force"
-msgstr "最大空间"
-
-#: scene/3d/vehicle_body.cpp
-#, fuzzy
-msgid "Relaxation"
-msgstr "分隔:"
+msgstr "最大力度"
#: scene/3d/visibility_notifier.cpp
msgid "AABB"
-msgstr ""
+msgstr "AABB"
#: scene/3d/visual_instance.cpp scene/resources/navigation_mesh.cpp
msgid "Geometry"
@@ -20704,14 +22146,12 @@ msgid "Extra Cull Margin"
msgstr "é¢å¤–剔除边è·"
#: scene/3d/visual_instance.cpp
-#, fuzzy
msgid "Baked Light"
-msgstr "烘焙光照贴图"
+msgstr "烘焙光照"
#: scene/3d/visual_instance.cpp
-#, fuzzy
msgid "Generate Lightmap"
-msgstr "正在生æˆå…‰ç…§è´´å›¾"
+msgstr "生æˆå…‰ç…§è´´å›¾"
#: scene/3d/visual_instance.cpp
msgid "Lightmap Scale"
@@ -20723,19 +22163,16 @@ msgstr "LOD"
#: scene/3d/visual_instance.cpp scene/animation/skeleton_ik.cpp
#: scene/resources/material.cpp
-#, fuzzy
msgid "Min Distance"
-msgstr "LOD 最å°è·ç¦»"
+msgstr "最å°è·ç¦»"
#: scene/3d/visual_instance.cpp
-#, fuzzy
msgid "Min Hysteresis"
-msgstr "LOD æœ€å°æ»žåŽ"
+msgstr "æœ€å°æ»žåŽ"
#: scene/3d/visual_instance.cpp
-#, fuzzy
msgid "Max Hysteresis"
-msgstr "LOD 最大滞åŽ"
+msgstr "最大滞åŽ"
#: scene/3d/world_environment.cpp
msgid ""
@@ -20777,9 +22214,8 @@ msgid "Auto Triangles"
msgstr "自动三角形"
#: scene/animation/animation_blend_space_2d.cpp
-#, fuzzy
msgid "Triangles"
-msgstr "自动三角形"
+msgstr "三角形"
#: scene/animation/animation_blend_space_2d.cpp
msgid "X Label"
@@ -20810,11 +22246,11 @@ msgid "Fadeout Time"
msgstr "淡出时间"
#: scene/animation/animation_blend_tree.cpp
-msgid "autorestart_"
-msgstr "自动é‡å¯"
+#, fuzzy
+msgid "Auto Restart"
+msgstr "è‡ªåŠ¨é‡æ–°å¼€å§‹ï¼š"
#: scene/animation/animation_blend_tree.cpp
-#, fuzzy
msgid "Autorestart"
msgstr "自动é‡å¯"
@@ -20836,23 +22272,20 @@ msgid "Xfade Time"
msgstr "淡入淡出时间"
#: scene/animation/animation_blend_tree.cpp scene/resources/visual_shader.cpp
-#, fuzzy
msgid "Graph Offset"
-msgstr "网格å移:"
+msgstr "图表åç§»"
#: scene/animation/animation_node_state_machine.cpp
msgid "Switch Mode"
msgstr "åˆ‡æ¢æ¨¡å¼"
#: scene/animation/animation_node_state_machine.cpp
-#, fuzzy
msgid "Auto Advance"
-msgstr "设置自动推进"
+msgstr "自动推进"
#: scene/animation/animation_node_state_machine.cpp
-#, fuzzy
msgid "Advance Condition"
-msgstr "高级选项"
+msgstr "推进æ¡ä»¶"
#: scene/animation/animation_player.cpp
msgid "Anim Apply Reset"
@@ -20883,16 +22316,8 @@ msgid "Playback Options"
msgstr "播放选项"
#: scene/animation/animation_player.cpp
-#, fuzzy
msgid "Default Blend Time"
-msgstr "æ’­æ”¾é»˜è®¤æ··åˆæ—¶é—´"
-
-#: scene/animation/animation_player.cpp scene/animation/animation_tree.cpp
-#: scene/animation/animation_tree_player.cpp
-#: servers/audio/effects/audio_effect_delay.cpp
-#, fuzzy
-msgid "Active"
-msgstr "动作"
+msgstr "é»˜è®¤æ··åˆæ—¶é—´"
#: scene/animation/animation_player.cpp
msgid "Method Call Mode"
@@ -20920,11 +22345,11 @@ 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."
-msgstr "动画播放器的路径没有加载一个 AnimationPlayer 节点。"
+msgstr "AnimationPlayer 的路径指å‘çš„ä¸æ˜¯ AnimationPlayer 节点。"
#: scene/animation/animation_tree.cpp
msgid "The AnimationPlayer root node is not a valid node."
@@ -20935,18 +22360,16 @@ msgid "Tree Root"
msgstr "æ ‘æ ¹"
#: scene/animation/animation_tree.cpp
-#, fuzzy
msgid "Anim Player"
-msgstr "固定 AnimationPlayer"
+msgstr "动画播放器"
#: scene/animation/animation_tree.cpp
msgid "Root Motion"
msgstr "æ ¹è¿åЍ"
#: scene/animation/animation_tree.cpp
-#, fuzzy
msgid "Track"
-msgstr "添加轨é“"
+msgstr "轨é“"
#: scene/animation/animation_tree_player.cpp
msgid "This node has been deprecated. Use AnimationTree instead."
@@ -20957,65 +22380,52 @@ msgid "Playback"
msgstr "播放"
#: scene/animation/animation_tree_player.cpp
-#, fuzzy
msgid "Master Player"
-msgstr "ç²˜è´´å‚æ•°"
+msgstr "主播放器"
#: scene/animation/animation_tree_player.cpp
-#, fuzzy
msgid "Base Path"
-msgstr "图åƒè·¯å¾„"
+msgstr "基础路径"
#: scene/animation/root_motion_view.cpp
-#, fuzzy
msgid "Animation Path"
-msgstr "动画"
+msgstr "动画路径"
#: scene/animation/root_motion_view.cpp
-#, fuzzy
msgid "Zero Y"
-msgstr "置零"
+msgstr "零点 Y"
#: scene/animation/skeleton_ik.cpp
-#, fuzzy
msgid "Root Bone"
-msgstr "根节点"
+msgstr "根骨骼"
#: scene/animation/skeleton_ik.cpp
-#, fuzzy
msgid "Tip Bone"
-msgstr "骨骼"
+msgstr "尖端骨骼"
#: scene/animation/skeleton_ik.cpp
msgid "Interpolation"
msgstr "æ’值"
#: scene/animation/skeleton_ik.cpp
-#, fuzzy
msgid "Override Tip Basis"
-msgstr "é‡å†™"
+msgstr "覆盖尖端基"
#: scene/animation/skeleton_ik.cpp
msgid "Use Magnet"
-msgstr ""
+msgstr "使用ç£å¸"
#: scene/animation/skeleton_ik.cpp
msgid "Magnet"
-msgstr ""
+msgstr "ç£å¸"
#: scene/animation/skeleton_ik.cpp
-#, fuzzy
msgid "Target Node"
-msgstr "é‡è®¾çˆ¶èŠ‚ç‚¹"
+msgstr "目标节点"
#: scene/animation/skeleton_ik.cpp
-#, fuzzy
msgid "Max Iterations"
-msgstr "最大函数数"
-
-#: scene/animation/tween.cpp scene/resources/texture.cpp
-msgid "Repeat"
-msgstr "é‡å¤"
+msgstr "最大迭代数"
#: scene/animation/tween.cpp
msgid "Playback Process Mode"
@@ -21031,7 +22441,6 @@ msgstr "混音目标"
#: scene/gui/aspect_ratio_container.cpp scene/gui/range.cpp
#: servers/audio/effects/audio_effect_compressor.cpp
-#, fuzzy
msgid "Ratio"
msgstr "比例"
@@ -21044,24 +22453,9 @@ msgstr "拉伸模å¼"
msgid "Alignment"
msgstr "对é½"
-#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
-#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
-#: scene/resources/style_box.cpp
-#, fuzzy
-msgid "Horizontal"
-msgstr "æ°´å¹³:"
-
-#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
-#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
-#: scene/resources/style_box.cpp
-#, fuzzy
-msgid "Vertical"
-msgstr "垂直:"
-
#: scene/gui/base_button.cpp
-#, fuzzy
msgid "Shortcut In Tooltip"
-msgstr "显示在上方"
+msgstr "工具æç¤ºæ˜¾ç¤ºå¿«æ·é”®"
#: scene/gui/base_button.cpp
msgid "Action Mode"
@@ -21073,7 +22467,7 @@ msgstr "å¯ç”¨èšç„¦æ¨¡å¼"
#: scene/gui/base_button.cpp
msgid "Keep Pressed Outside"
-msgstr ""
+msgstr "å¤–éƒ¨ä¿æŒæŒ‰ä¸‹"
#: scene/gui/base_button.cpp scene/gui/shortcut.cpp
msgid "Shortcut"
@@ -21084,9 +22478,8 @@ msgid "Group"
msgstr "分组"
#: scene/gui/button.cpp scene/gui/label.cpp
-#, fuzzy
msgid "Clip Text"
-msgstr "å¤åˆ¶æ–‡æœ¬"
+msgstr "è£å‰ªæ–‡æœ¬"
#: scene/gui/button.cpp scene/gui/label.cpp scene/gui/line_edit.cpp
#: scene/gui/spin_box.cpp
@@ -21098,14 +22491,12 @@ msgid "Icon Align"
msgstr "图标对é½"
#: scene/gui/button.cpp
-#, fuzzy
msgid "Expand Icon"
-msgstr "扩展"
+msgstr "扩展图标"
#: scene/gui/center_container.cpp
-#, fuzzy
msgid "Use Top Left"
-msgstr "左上"
+msgstr "使用左上角"
#: scene/gui/color_picker.cpp
msgid ""
@@ -21118,34 +22509,28 @@ msgstr ""
"é¼ æ ‡å³é”®ï¼šç§»é™¤é¢„设"
#: scene/gui/color_picker.cpp
-#, fuzzy
msgid "Edit Alpha"
-msgstr "编辑多边形"
+msgstr "编辑 Alpha"
#: scene/gui/color_picker.cpp
-#, fuzzy
msgid "HSV Mode"
-msgstr "设置模å¼"
+msgstr "HSV 模å¼"
#: scene/gui/color_picker.cpp
-#, fuzzy
msgid "Raw Mode"
-msgstr "平移模å¼"
+msgstr "原始模å¼"
#: scene/gui/color_picker.cpp
-#, fuzzy
msgid "Deferred Mode"
-msgstr "延迟"
+msgstr "延迟模å¼"
#: scene/gui/color_picker.cpp
-#, fuzzy
msgid "Presets Enabled"
-msgstr "预设"
+msgstr "å¯ç”¨é¢„设"
#: scene/gui/color_picker.cpp
-#, fuzzy
msgid "Presets Visible"
-msgstr "å¯è§ç™¾åˆ†æ¯”"
+msgstr "预设å¯è§"
#: scene/gui/color_picker.cpp
msgid "Pick a color from the editor window."
@@ -21156,10 +22541,6 @@ msgid "HSV"
msgstr "HSV"
#: scene/gui/color_picker.cpp
-msgid "Raw"
-msgstr "原始"
-
-#: scene/gui/color_picker.cpp
msgid "Switch between hexadecimal and code values."
msgstr "在å六进制值和代ç å€¼ä¹‹é—´åˆ‡æ¢ã€‚"
@@ -21197,21 +22578,18 @@ msgid "Min Size"
msgstr "最å°å¤§å°"
#: scene/gui/control.cpp
-#, fuzzy
msgid "Pivot Offset"
-msgstr "å•ä½åç§»"
+msgstr "轴心åç§»"
#: scene/gui/control.cpp
-#, fuzzy
msgid "Clip Content"
-msgstr "类常é‡"
+msgstr "è£å‰ªå†…容"
#: scene/gui/control.cpp scene/resources/visual_shader_nodes.cpp
msgid "Hint"
msgstr "æç¤º"
#: scene/gui/control.cpp
-#, fuzzy
msgid "Tooltip"
msgstr "工具æç¤º"
@@ -21220,26 +22598,52 @@ msgid "Focus"
msgstr "èšç„¦"
#: scene/gui/control.cpp
+#, fuzzy
+msgid "Neighbour Left"
+msgstr "邻接è·ç¦»"
+
+#: scene/gui/control.cpp
+#, fuzzy
+msgid "Neighbour Top"
+msgstr "邻接è·ç¦»"
+
+#: scene/gui/control.cpp
+#, fuzzy
+msgid "Neighbour Right"
+msgstr "邻接è·ç¦»"
+
+#: scene/gui/control.cpp
+#, fuzzy
+msgid "Neighbour Bottom"
+msgstr "邻接è·ç¦»"
+
+#: scene/gui/control.cpp
+msgid "Next"
+msgstr "下一页"
+
+#: scene/gui/control.cpp
+msgid "Previous"
+msgstr "上一页"
+
+#: scene/gui/control.cpp
msgid "Mouse"
msgstr "é¼ æ ‡"
#: scene/gui/control.cpp
-#, fuzzy
msgid "Default Cursor Shape"
-msgstr "鼠标默认光标形状"
+msgstr "默认光标形状"
#: scene/gui/control.cpp
msgid "Pass On Modal Close Click"
-msgstr ""
+msgstr "传递关闭模æ€ç‚¹å‡»"
#: scene/gui/control.cpp
msgid "Size Flags"
msgstr "大尿 ‡å¿—"
#: scene/gui/control.cpp
-#, fuzzy
msgid "Stretch Ratio"
-msgstr "拉伸模å¼"
+msgstr "拉伸比例"
#: scene/gui/control.cpp
msgid "Theme Type Variation"
@@ -21254,13 +22658,13 @@ msgid "Dialog"
msgstr "å¯¹è¯æ¡†"
#: scene/gui/dialogs.cpp
-msgid "Hide On Ok"
-msgstr ""
+#, fuzzy
+msgid "Hide On OK"
+msgstr "确定时éšè—"
#: scene/gui/dialogs.cpp scene/gui/label.cpp
-#, fuzzy
msgid "Autowrap"
-msgstr "自动加载"
+msgstr "自动æ¢è¡Œ"
#: scene/gui/dialogs.cpp
msgid "Alert!"
@@ -21271,48 +22675,40 @@ msgid "Please Confirm..."
msgstr "请确认..."
#: scene/gui/file_dialog.cpp
-#, fuzzy
msgid "Mode Overrides Title"
-msgstr "覆盖项目"
+msgstr "模å¼è¦†ç›–标题"
#: scene/gui/file_dialog.cpp
msgid "Must use a valid extension."
msgstr "必须使用有效的扩展å。"
#: scene/gui/graph_edit.cpp
-#, fuzzy
msgid "Right Disconnects"
-msgstr "断开连接"
+msgstr "å³ä¾§æ–­å¼€è¿žæŽ¥"
#: scene/gui/graph_edit.cpp
-#, fuzzy
msgid "Scroll Offset"
-msgstr "网格å移:"
+msgstr "滚动åç§»"
#: scene/gui/graph_edit.cpp
-#, fuzzy
msgid "Snap Distance"
-msgstr "拾å–è·ç¦»ï¼š"
+msgstr "å¸é™„è·ç¦»"
#: scene/gui/graph_edit.cpp
-#, fuzzy
msgid "Zoom Min"
-msgstr "放大"
+msgstr "缩放下é™"
#: scene/gui/graph_edit.cpp
-#, fuzzy
msgid "Zoom Max"
-msgstr "放大"
+msgstr "缩放上é™"
#: scene/gui/graph_edit.cpp
-#, fuzzy
msgid "Zoom Step"
-msgstr "缩放样å¼"
+msgstr "缩放步长"
#: scene/gui/graph_edit.cpp
-#, fuzzy
msgid "Show Zoom Label"
-msgstr "显示图åƒ"
+msgstr "显示缩放标签"
#: scene/gui/graph_edit.cpp scene/gui/text_edit.cpp
msgid "Minimap"
@@ -21323,19 +22719,16 @@ msgid "Enable grid minimap."
msgstr "å¯ç”¨ç½‘æ ¼å°åœ°å›¾ã€‚"
#: scene/gui/graph_node.cpp
-#, fuzzy
msgid "Show Close"
-msgstr "阴影颜色"
+msgstr "显示关闭"
#: scene/gui/graph_node.cpp scene/gui/option_button.cpp
-#, fuzzy
msgid "Selected"
-msgstr "选择"
+msgstr "选中"
#: scene/gui/graph_node.cpp
-#, fuzzy
msgid "Comment"
-msgstr "æäº¤"
+msgstr "注释"
#: scene/gui/graph_node.cpp
msgid "Overlay"
@@ -21352,54 +22745,48 @@ msgstr "计时器"
#: scene/gui/item_list.cpp scene/gui/popup_menu.cpp scene/gui/tree.cpp
#, fuzzy
-msgid "Incremental Search Max Interval (msec)"
-msgstr "å¢žé‡æœç´¢æœ€å¤§é—´é𔿝«ç§’"
+msgid "Incremental Search Max Interval Msec"
+msgstr "å¢žé‡æœç´¢æœ€å¤§é—´éš”(毫秒)"
#: scene/gui/item_list.cpp scene/gui/tree.cpp
-#, fuzzy
msgid "Allow Reselect"
-msgstr "应用é‡ç½®"
+msgstr "å…许é‡é€‰"
#: scene/gui/item_list.cpp scene/gui/tree.cpp
-#, fuzzy
msgid "Allow RMB Select"
-msgstr "填充选中项"
+msgstr "å…许å³é”®é€‰æ‹©"
#: scene/gui/item_list.cpp
msgid "Max Text Lines"
msgstr "最大文本行数"
#: scene/gui/item_list.cpp
-#, fuzzy
msgid "Auto Height"
-msgstr "测试高度"
+msgstr "自动高度"
#: scene/gui/item_list.cpp
msgid "Max Columns"
msgstr "最大列数"
#: scene/gui/item_list.cpp
-#, fuzzy
msgid "Same Column Width"
-msgstr "最å°å®½åº¦"
+msgstr "相åŒåˆ—宽"
#: scene/gui/item_list.cpp
msgid "Fixed Column Width"
-msgstr ""
+msgstr "固定列宽"
#: scene/gui/item_list.cpp
-#, fuzzy
msgid "Icon Scale"
-msgstr "éšæœºç¼©æ”¾ï¼š"
+msgstr "图标缩放"
#: scene/gui/item_list.cpp
-#, fuzzy
msgid "Fixed Icon Size"
-msgstr "字体大å°"
+msgstr "固定图标大å°"
#: scene/gui/label.cpp
msgid "Valign"
-msgstr ""
+msgstr "垂直对é½"
#: scene/gui/label.cpp scene/gui/rich_text_label.cpp
msgid "Visible Characters"
@@ -21423,52 +22810,44 @@ msgstr "最大长度"
#: scene/gui/line_edit.cpp
msgid "Secret"
-msgstr ""
+msgstr "秘密"
#: scene/gui/line_edit.cpp
-#, fuzzy
msgid "Secret Character"
-msgstr "å¯è§å­—符"
+msgstr "秘密字符"
#: scene/gui/line_edit.cpp
msgid "Expand To Text Length"
-msgstr ""
+msgstr "扩展至文本长度"
#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
-#, fuzzy
msgid "Context Menu Enabled"
-msgstr "上下文帮助"
+msgstr "上下文èœå•å¯ç”¨"
#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
-#, fuzzy
msgid "Virtual Keyboard Enabled"
-msgstr "å¯ç”¨ç­›é€‰"
+msgstr "虚拟键盘å¯ç”¨"
#: scene/gui/line_edit.cpp
-#, fuzzy
msgid "Clear Button Enabled"
-msgstr "å¯ç”¨ç­›é€‰"
+msgstr "清除按钮å¯ç”¨"
#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
-#, fuzzy
msgid "Shortcut Keys Enabled"
-msgstr "å¿«æ·é”®"
+msgstr "å¿«æ·é”®å¯ç”¨"
#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
-#, fuzzy
msgid "Middle Mouse Paste Enabled"
-msgstr "å¯ç”¨ç­›é€‰"
+msgstr "鼠标中键粘贴å¯ç”¨"
#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
-#, fuzzy
msgid "Selecting Enabled"
-msgstr "仅选中"
+msgstr "选择å¯ç”¨"
#: scene/gui/line_edit.cpp scene/gui/rich_text_label.cpp
#: scene/gui/text_edit.cpp
-#, fuzzy
msgid "Deselect On Focus Loss Enabled"
-msgstr "焦点丢失时ä¿å­˜"
+msgstr "ä¸¢å¤±ç„¦ç‚¹æ—¶å–æ¶ˆé€‰æ‹©å¯ç”¨"
#: scene/gui/line_edit.cpp
msgid "Right Icon"
@@ -21479,47 +22858,40 @@ msgid "Placeholder"
msgstr "å ä½ç¬¦"
#: scene/gui/line_edit.cpp
-#, fuzzy
msgid "Alpha"
-msgstr "Alpha 切除"
+msgstr "Alpha"
#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Caret"
msgstr "光标"
#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
-#, fuzzy
msgid "Blink"
-msgstr "光标闪çƒ"
+msgstr "é—ªçƒ"
#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
-#, fuzzy
msgid "Blink Speed"
-msgstr "光标闪çƒé€Ÿåº¦"
+msgstr "é—ªçƒé€Ÿåº¦"
#: scene/gui/link_button.cpp
msgid "Underline"
msgstr "下划线"
#: scene/gui/menu_button.cpp
-#, fuzzy
msgid "Switch On Hover"
-msgstr "åˆ‡æ¢æ¨¡å¼"
+msgstr "æ‚¬åœæ‰“å¼€"
#: scene/gui/nine_patch_rect.cpp scene/resources/style_box.cpp
-#, fuzzy
msgid "Draw Center"
-msgstr "居中"
+msgstr "绘制中心"
#: scene/gui/nine_patch_rect.cpp scene/resources/style_box.cpp
-#, fuzzy
msgid "Region Rect"
-msgstr "设置纹ç†åŒºåŸŸ"
+msgstr "区域矩形"
#: scene/gui/nine_patch_rect.cpp
-#, fuzzy
msgid "Patch Margin"
-msgstr "设置边è·"
+msgstr "宫格边è·"
#: scene/gui/nine_patch_rect.cpp scene/resources/style_box.cpp
msgid "Axis Stretch"
@@ -21536,14 +22908,12 @@ msgstr ""
"当å‰ä½¿ç”¨çš„æ˜¯ GLES2 åŽç«¯ï¼Œå°†ä½¿ç”¨ Stretch 的行为代替这些模å¼ã€‚"
#: scene/gui/popup.cpp
-#, fuzzy
msgid "Popup"
-msgstr "å¡«å……"
+msgstr "弹出"
#: scene/gui/popup.cpp
-#, fuzzy
msgid "Exclusive"
-msgstr "全部"
+msgstr "独å "
#: scene/gui/popup.cpp
msgid ""
@@ -21555,28 +22925,24 @@ msgstr ""
"æ¥è¿›è¡Œç¼–辑,但在è¿è¡Œæ—¶ä¼šéšè—。"
#: scene/gui/popup_menu.cpp
-#, fuzzy
msgid "Hide On Item Selection"
-msgstr "居中显示所选项"
+msgstr "选择项目时éšè—"
#: scene/gui/popup_menu.cpp
-#, fuzzy
msgid "Hide On Checkable Item Selection"
-msgstr "GridMap 删除所选项"
+msgstr "勾选项目时éšè—"
#: scene/gui/popup_menu.cpp
-#, fuzzy
msgid "Hide On State Item Selection"
-msgstr "删除选中项"
+msgstr "选择状æ€é¡¹ç›®æ—¶éšè—"
#: scene/gui/popup_menu.cpp
msgid "Submenu Popup Delay"
-msgstr ""
+msgstr "å­èœå•弹出延迟"
#: scene/gui/popup_menu.cpp
-#, fuzzy
msgid "Allow Search"
-msgstr "æœç´¢"
+msgstr "å…许æœç´¢"
#: scene/gui/progress_bar.cpp
msgid "Percent"
@@ -21595,100 +22961,84 @@ msgid "Max Value"
msgstr "最大之"
#: scene/gui/range.cpp
-#, fuzzy
msgid "Page"
-msgstr "页: "
+msgstr "页"
#: scene/gui/range.cpp
-#, fuzzy
msgid "Exp Edit"
-msgstr "编辑"
+msgstr "指数编辑"
#: scene/gui/range.cpp
-#, fuzzy
msgid "Rounded"
-msgstr "地é¢"
+msgstr "èˆå…¥"
#: scene/gui/range.cpp
-#, fuzzy
msgid "Allow Greater"
-msgstr "å…许"
+msgstr "å…许更多"
#: scene/gui/range.cpp
-#, fuzzy
msgid "Allow Lesser"
-msgstr "å…许"
+msgstr "å…许更少"
#: scene/gui/reference_rect.cpp
-#, fuzzy
msgid "Border Color"
-msgstr "骨骼颜色 1"
+msgstr "边框颜色"
#: scene/gui/reference_rect.cpp scene/resources/style_box.cpp
msgid "Border Width"
msgstr "边框宽度"
#: scene/gui/rich_text_effect.cpp
-#, fuzzy
msgid "Relative Index"
-msgstr "获å–索引"
+msgstr "相对索引"
#: scene/gui/rich_text_effect.cpp
-#, fuzzy
msgid "Absolute Index"
-msgstr "自动缩进"
+msgstr "ç»å¯¹ç´¢å¼•"
#: scene/gui/rich_text_effect.cpp
-#, fuzzy
msgid "Elapsed Time"
-msgstr "æ··åˆæ—¶é—´ï¼š"
+msgstr "å·²ç»è¿‡æ—¶é—´"
#: scene/gui/rich_text_effect.cpp
-#, fuzzy
msgid "Env"
-msgstr "结æŸ"
+msgstr "环境"
#: scene/gui/rich_text_effect.cpp
-#, fuzzy
msgid "Character"
-msgstr "å¯è§å­—符"
+msgstr "字符"
#: scene/gui/rich_text_label.cpp
msgid "BBCode"
msgstr "BBCode"
#: scene/gui/rich_text_label.cpp
-#, fuzzy
msgid "Meta Underlined"
-msgstr "下划线"
+msgstr "元数æ®ä¸‹åˆ’线"
#: scene/gui/rich_text_label.cpp
msgid "Tab Size"
msgstr "制表符大å°"
#: scene/gui/rich_text_label.cpp
-#, fuzzy
msgid "Fit Content Height"
-msgstr "绘制骨骼æƒé‡"
+msgstr "适é…内容高度"
#: scene/gui/rich_text_label.cpp
msgid "Scroll Active"
-msgstr ""
+msgstr "滚动激活"
#: scene/gui/rich_text_label.cpp
-#, fuzzy
msgid "Scroll Following"
-msgstr "滚动平移"
+msgstr "滚动跟éš"
#: scene/gui/rich_text_label.cpp
-#, fuzzy
msgid "Selection Enabled"
-msgstr "仅选中"
+msgstr "å¯ç”¨é€‰æ‹©"
#: scene/gui/rich_text_label.cpp scene/gui/text_edit.cpp
-#, fuzzy
msgid "Override Selected Font Color"
-msgstr "骨骼选中颜色"
+msgstr "覆盖选中字体颜色"
#: scene/gui/rich_text_label.cpp
msgid "Custom Effects"
@@ -21709,63 +23059,52 @@ msgstr ""
"寸。"
#: scene/gui/scroll_container.cpp
-#, fuzzy
msgid "Follow Focus"
-msgstr "è·Ÿéšè¡¨é¢"
+msgstr "è·Ÿéšç„¦ç‚¹"
#: scene/gui/scroll_container.cpp
-#, fuzzy
msgid "Horizontal Enabled"
-msgstr "æ°´å¹³:"
+msgstr "å¯ç”¨æ°´å¹³"
#: scene/gui/scroll_container.cpp
-#, fuzzy
msgid "Vertical Enabled"
-msgstr "å¯ç”¨ç­›é€‰"
+msgstr "å¯ç”¨åž‚ç›´"
#: scene/gui/scroll_container.cpp
msgid "Default Scroll Deadzone"
-msgstr ""
+msgstr "默认滚动死区"
#: scene/gui/slider.cpp
-#, fuzzy
msgid "Scrollable"
-msgstr "滚动平移"
+msgstr "坿»šåЍ"
#: scene/gui/slider.cpp
-#, fuzzy
msgid "Tick Count"
-msgstr "拾å–颜色"
+msgstr "刻度数é‡"
#: scene/gui/slider.cpp
-#, fuzzy
msgid "Ticks On Borders"
-msgstr "按顺åºï¼š"
+msgstr "边界刻度"
#: scene/gui/spin_box.cpp
-#, fuzzy
msgid "Prefix"
-msgstr "å‰ç¼€ï¼š"
+msgstr "å‰ç¼€"
#: scene/gui/spin_box.cpp
-#, fuzzy
msgid "Suffix"
-msgstr "åŽç¼€ï¼š"
+msgstr "åŽç¼€"
#: scene/gui/split_container.cpp
-#, fuzzy
msgid "Split Offset"
-msgstr "å•ä½åç§»"
+msgstr "拆分åç§»"
#: scene/gui/split_container.cpp scene/gui/tree.cpp
-#, fuzzy
msgid "Collapsed"
-msgstr "全部折å "
+msgstr "折å "
#: scene/gui/split_container.cpp
-#, fuzzy
msgid "Dragger Visibility"
-msgstr "åˆ‡æ¢ éšè—/å¯è§"
+msgstr "拖动器å¯è§æ€§"
#: scene/gui/tab_container.cpp scene/gui/tabs.cpp
msgid "Tab Align"
@@ -21776,105 +23115,92 @@ msgid "Current Tab"
msgstr "当å‰é€‰é¡¹å¡"
#: scene/gui/tab_container.cpp
-#, fuzzy
msgid "Tabs Visible"
-msgstr "切æ¢å¯è§æ€§"
+msgstr "选项å¡å¯è§"
#: scene/gui/tab_container.cpp
msgid "All Tabs In Front"
-msgstr ""
+msgstr "所有选项å¡å‰ç½®"
#: scene/gui/tab_container.cpp scene/gui/tabs.cpp
-#, fuzzy
msgid "Drag To Rearrange Enabled"
-msgstr "æ‹–æ”¾ä»¥é‡æ–°æŽ’列。"
+msgstr "å¯ç”¨æ‹–æ”¾é‡æŽ’"
#: scene/gui/tab_container.cpp
msgid "Use Hidden Tabs For Min Size"
-msgstr ""
+msgstr "最å°å¤§å°ä½¿ç”¨éšè—选项å¡"
#: scene/gui/tabs.cpp
msgid "Tab Close Display Policy"
-msgstr ""
+msgstr "选项å¡å…³é—­æ˜¾ç¤ºç­–ç•¥"
#: scene/gui/tabs.cpp
msgid "Scrolling Enabled"
-msgstr ""
+msgstr "å¯ç”¨æ»šåЍ"
#: scene/gui/text_edit.cpp
msgid "Readonly"
-msgstr ""
+msgstr "åªè¯»"
#: scene/gui/text_edit.cpp
-#, fuzzy
msgid "Bookmark Gutter"
-msgstr "显示书签æ "
+msgstr "书签æ "
#: scene/gui/text_edit.cpp
-#, fuzzy
msgid "Breakpoint Gutter"
-msgstr "显示断点æ "
+msgstr "断点æ "
#: scene/gui/text_edit.cpp
-#, fuzzy
msgid "Fold Gutter"
-msgstr "文件夹:"
+msgstr "æŠ˜å æ "
#: scene/gui/text_edit.cpp
-#, fuzzy
msgid "Hiding Enabled"
-msgstr "å¯ç”¨"
+msgstr "å¯ç”¨éšè—"
#: scene/gui/text_edit.cpp
-#, fuzzy
msgid "Wrap Enabled"
-msgstr "å¯ç”¨"
+msgstr "å¯ç”¨æ¢è¡Œ"
#: scene/gui/text_edit.cpp
-#, fuzzy
msgid "Scroll Vertical"
-msgstr "垂直伸长"
+msgstr "垂直滚动"
#: scene/gui/text_edit.cpp
-#, fuzzy
msgid "Scroll Horizontal"
-msgstr "水平伸长"
+msgstr "水平桂东"
#: scene/gui/text_edit.cpp
-#, fuzzy
msgid "Draw"
msgstr "绘制"
#: scene/gui/text_edit.cpp
-#, fuzzy
msgid "Block Mode"
-msgstr "è§£é”节点"
+msgstr "æ–¹å—æ¨¡å¼"
#: scene/gui/text_edit.cpp
msgid "Moving By Right Click"
-msgstr ""
+msgstr "å³é”®ç§»åЍ"
#: scene/gui/text_edit.cpp
msgid "Text Edit Idle Detect (sec)"
-msgstr ""
+msgstr "TextEdit 空闲检测(秒)"
#: scene/gui/text_edit.cpp
msgid "Text Edit Undo Stack Max Size"
-msgstr ""
+msgstr "TextEdit 撤销栈大å°ä¸Šé™"
#: scene/gui/texture_button.cpp
msgid "Hover"
-msgstr ""
+msgstr "悬åœ"
#: scene/gui/texture_button.cpp
-#, fuzzy
msgid "Focused"
msgstr "èšç„¦"
#: scene/gui/texture_button.cpp
-#, fuzzy
msgid "Click Mask"
-msgstr "剔除é®ç½©"
+msgstr "点击é®ç½©"
#: scene/gui/texture_button.cpp scene/gui/texture_rect.cpp
#: scene/gui/video_player.cpp
@@ -21882,23 +23208,20 @@ msgid "Expand"
msgstr "扩展"
#: scene/gui/texture_progress.cpp
-#, fuzzy
msgid "Under"
-msgstr "下划线"
+msgstr "下方"
#: scene/gui/texture_progress.cpp
-#, fuzzy
msgid "Over"
-msgstr "覆盖层"
+msgstr "上方"
#: scene/gui/texture_progress.cpp
-#, fuzzy
msgid "Progress"
-msgstr "进度纹ç†"
+msgstr "进度"
#: scene/gui/texture_progress.cpp
msgid "Progress Offset"
-msgstr ""
+msgstr "进度åç§»"
#: scene/gui/texture_progress.cpp
msgid "Fill Mode"
@@ -21910,50 +23233,63 @@ msgstr "染色"
#: scene/gui/texture_progress.cpp
msgid "Radial Fill"
-msgstr ""
+msgstr "径å‘å¡«å……"
#: scene/gui/texture_progress.cpp
-#, fuzzy
msgid "Initial Angle"
-msgstr "åˆå§‹åŒ–"
+msgstr "åˆå§‹è§’"
#: scene/gui/texture_progress.cpp
-#, fuzzy
msgid "Fill Degrees"
-msgstr "旋转度数"
+msgstr "填充角度"
#: scene/gui/texture_progress.cpp scene/resources/primitive_meshes.cpp
-#, fuzzy
msgid "Center Offset"
-msgstr "左侧居中"
+msgstr "中心åç§»"
#: scene/gui/texture_progress.cpp
-#, fuzzy
msgid "Nine Patch Stretch"
-msgstr "ä¹å®«æ ¼æ¨¡å¼"
+msgstr "ä¹å®«æ ¼æ‹‰ä¼¸"
+
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Left"
+msgstr "设置边è·"
+
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Top"
+msgstr "设置边è·"
+
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Right"
+msgstr "设置边è·"
+
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Bottom"
+msgstr "拉伸比例"
#: scene/gui/tree.cpp
msgid "Custom Minimum Height"
-msgstr ""
+msgstr "自定义最å°é«˜åº¦"
#: scene/gui/tree.cpp
msgid "(Other)"
msgstr "(其他)"
#: scene/gui/tree.cpp
-#, fuzzy
msgid "Column Titles Visible"
-msgstr "最大å¯è§è¡Œæ•°"
+msgstr "列标题å¯è§"
#: scene/gui/tree.cpp
-#, fuzzy
msgid "Hide Folding"
-msgstr "ä»£ç æŠ˜å "
+msgstr "éšè—折å "
#: scene/gui/tree.cpp
-#, fuzzy
msgid "Hide Root"
-msgstr "æ ‘æ ¹"
+msgstr "éšè—æ ¹"
#: scene/gui/tree.cpp
msgid "Drop Mode Flags"
@@ -21969,17 +23305,16 @@ msgstr "æš‚åœ"
#: scene/gui/video_player.cpp
#, fuzzy
-msgid "Buffering (msec)"
-msgstr "缓冲毫秒"
+msgid "Buffering Msec"
+msgstr "缓冲(毫秒)"
#: scene/gui/video_player.cpp
msgid "Stream Position"
msgstr "æµä½ç½®"
#: scene/gui/viewport_container.cpp
-#, fuzzy
msgid "Stretch Shrink"
-msgstr "拉伸"
+msgstr "拉伸收缩"
#: scene/main/canvas_layer.cpp
msgid "Follow Viewport"
@@ -21995,11 +23330,11 @@ msgstr "下载分å—大å°"
#: scene/main/http_request.cpp
msgid "Body Size Limit"
-msgstr ""
+msgstr "å“应体大å°é™åˆ¶"
#: scene/main/http_request.cpp
msgid "Max Redirects"
-msgstr ""
+msgstr "最大跳转"
#: scene/main/http_request.cpp
msgid "Timeout"
@@ -22018,9 +23353,8 @@ msgid "Editor Description"
msgstr "编辑器æè¿°"
#: scene/main/node.cpp
-#, fuzzy
msgid "Import Path"
-msgstr "导出路径"
+msgstr "导入路径"
#: scene/main/node.cpp
msgid "Pause Mode"
@@ -22047,12 +23381,10 @@ msgid "Custom Multiplayer"
msgstr "自定义多人"
#: scene/main/node.cpp
-#, fuzzy
msgid "Process Priority"
-msgstr "自动放置优先级"
+msgstr "处ç†ä¼˜å…ˆçº§"
#: scene/main/node.cpp
-#, fuzzy
msgid "Physics Interpolated"
msgstr "ç‰©ç†æ’值"
@@ -22061,19 +23393,16 @@ msgid "Time Left"
msgstr "剩余时间"
#: scene/main/scene_tree.cpp
-#, fuzzy
msgid "Debug Collisions Hint"
-msgstr "BVH 碰撞边è·"
+msgstr "调试碰撞æç¤º"
#: scene/main/scene_tree.cpp
-#, fuzzy
msgid "Debug Navigation Hint"
-msgstr "导航实体"
+msgstr "调试导航æç¤º"
#: scene/main/scene_tree.cpp
-#, fuzzy
msgid "Use Font Oversampling"
-msgstr "使用过采样"
+msgstr "使用字体过采样"
#: scene/main/scene_tree.cpp
msgid "Edited Scene Root"
@@ -22084,9 +23413,8 @@ msgid "Root"
msgstr "æ ¹"
#: scene/main/scene_tree.cpp
-#, fuzzy
msgid "Multiplayer Poll"
-msgstr "多人"
+msgstr "多人轮询"
#: scene/main/scene_tree.cpp scene/resources/multimesh.cpp
msgid "Physics Interpolation"
@@ -22125,13 +23453,12 @@ msgid "Reflections"
msgstr "åå°„"
#: scene/main/scene_tree.cpp
-#, fuzzy
msgid "Atlas Size"
-msgstr "轮廓大å°ï¼š"
+msgstr "图集大å°"
#: scene/main/scene_tree.cpp
msgid "Atlas Subdiv"
-msgstr ""
+msgstr "图集细分"
#: scene/main/scene_tree.cpp scene/main/viewport.cpp
msgid "MSAA"
@@ -22143,7 +23470,7 @@ msgstr "使用 FXAA"
#: scene/main/scene_tree.cpp
msgid "Use Debanding"
-msgstr ""
+msgstr "使用去æ¡å¸¦"
#: scene/main/scene_tree.cpp scene/main/viewport.cpp
msgid "HDR"
@@ -22151,7 +23478,7 @@ msgstr "HDR"
#: scene/main/scene_tree.cpp scene/main/viewport.cpp
msgid "Use 32 BPC Depth"
-msgstr ""
+msgstr "使用 32 ä½è‰²æ·±"
#: scene/main/scene_tree.cpp
msgid "Default Environment"
@@ -22179,14 +23506,12 @@ msgstr ""
"建议使用脚本的 process 循环代替此类计时器。"
#: scene/main/timer.cpp
-#, fuzzy
msgid "Autostart"
-msgstr "è‡ªåŠ¨é‡æ–°å¼€å§‹ï¼š"
+msgstr "自动开始"
#: scene/main/viewport.cpp
-#, fuzzy
msgid "Viewport Path"
-msgstr "导出路径"
+msgstr "Viewport 路径"
#: scene/main/viewport.cpp
msgid ""
@@ -22207,58 +23532,51 @@ msgstr "Viewport 的宽高都大于等于 2 åƒç´ æ—¶æ‰èƒ½è¿›è¡Œæ¸²æŸ“。"
#: scene/main/viewport.cpp
msgid "ARVR"
-msgstr ""
+msgstr "ARVR"
#: scene/main/viewport.cpp
-#, fuzzy
msgid "Size Override Stretch"
-msgstr "覆盖项目"
+msgstr "大å°è¦†ç›–拉伸"
#: scene/main/viewport.cpp
msgid "Own World"
-msgstr ""
+msgstr "自有世界"
#: scene/main/viewport.cpp scene/resources/world_2d.cpp
msgid "World"
-msgstr ""
+msgstr "世界"
#: scene/main/viewport.cpp
msgid "World 2D"
-msgstr ""
+msgstr "2D 世界"
#: scene/main/viewport.cpp
-#, fuzzy
msgid "Transparent BG"
-msgstr "转置"
+msgstr "逿˜ŽèƒŒæ™¯"
#: scene/main/viewport.cpp
-#, fuzzy
msgid "Handle Input Locally"
-msgstr "修改输入值"
+msgstr "输入本地处ç†"
#: scene/main/viewport.cpp
-#, fuzzy
msgid "FXAA"
-msgstr "使用 FXAA"
+msgstr "FXAA"
#: scene/main/viewport.cpp
-#, fuzzy
msgid "Debanding"
-msgstr "绑定"
+msgstr "去æ¡å¸¦"
#: scene/main/viewport.cpp
-#, fuzzy
msgid "Disable 3D"
-msgstr "ä¸å¯ç”¨çš„项目"
+msgstr "ç¦ç”¨ 3D"
#: scene/main/viewport.cpp
-#, fuzzy
msgid "Keep 3D Linear"
-msgstr "左线性"
+msgstr "ä¿æŒ 3D 线性"
#: scene/main/viewport.cpp
msgid "Render Direct To Screen"
-msgstr ""
+msgstr "直接渲染至å±å¹•"
#: scene/main/viewport.cpp
msgid "Debug Draw"
@@ -22269,54 +23587,65 @@ msgid "Render Target"
msgstr "渲染目标"
#: scene/main/viewport.cpp
-#, fuzzy
msgid "V Flip"
-msgstr "水平翻转"
+msgstr "垂直翻转"
#: scene/main/viewport.cpp
-#, fuzzy
msgid "Clear Mode"
-msgstr "标尺模å¼"
+msgstr "æ¸…å±æ¨¡å¼"
#: scene/main/viewport.cpp
-#, fuzzy
msgid "Enable 2D"
-msgstr "å¯ç”¨"
+msgstr "å¯ç”¨ 2D"
#: scene/main/viewport.cpp
-#, fuzzy
msgid "Enable 3D"
-msgstr "å¯ç”¨"
+msgstr "å¯ç”¨ 3D"
#: scene/main/viewport.cpp
-#, fuzzy
msgid "Object Picking"
-msgstr "å¯ç”¨å¯¹è±¡æ‹¾å–"
+msgstr "对象拾å–"
#: scene/main/viewport.cpp
-#, fuzzy
msgid "Disable Input"
-msgstr "ä¸å¯ç”¨çš„项目"
+msgstr "ç¦ç”¨è¾“å…¥"
#: scene/main/viewport.cpp servers/visual_server.cpp
-#, fuzzy
msgid "Shadow Atlas"
msgstr "新建图集"
#: scene/main/viewport.cpp
-#, fuzzy
+msgid "Quad 0"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 1"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 2"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 3"
+msgstr ""
+
+#: scene/main/viewport.cpp
msgid "Canvas Transform"
-msgstr "æ¸…é™¤å˜æ¢"
+msgstr "ç”»å¸ƒå˜æ¢"
#: scene/main/viewport.cpp
-#, fuzzy
msgid "Global Canvas Transform"
-msgstr "å…¨å±€å˜æ¢"
+msgstr "å…¨å±€ç”»å¸ƒå˜æ¢"
#: scene/main/viewport.cpp
-#, fuzzy
msgid "Tooltip Delay (sec)"
-msgstr "工具æç¤ºå»¶è¿Ÿç§’æ•°"
+msgstr "工具æç¤ºå»¶è¿Ÿï¼ˆç§’)"
+
+#: scene/register_scene_types.cpp
+#, fuzzy
+msgid "Swap OK Cancel"
+msgstr "UI å–æ¶ˆ"
#: scene/register_scene_types.cpp
msgid "Use hiDPI"
@@ -22331,50 +23660,33 @@ msgid "Custom Font"
msgstr "自定字体"
#: scene/resources/audio_stream_sample.cpp
-msgid "Loop Mode"
-msgstr "æ··æ¢æ¨¡å¼"
-
-#: scene/resources/audio_stream_sample.cpp
-#, fuzzy
-msgid "Loop Begin"
-msgstr "å‘å‰ä¼¸é•¿"
-
-#: scene/resources/audio_stream_sample.cpp
-#, fuzzy
-msgid "Loop End"
-msgstr "æ··æ¢æ¨¡å¼"
-
-#: scene/resources/audio_stream_sample.cpp
#: servers/audio/effects/audio_stream_generator.cpp servers/audio_server.cpp
msgid "Mix Rate"
msgstr "混音率"
#: scene/resources/audio_stream_sample.cpp
msgid "Stereo"
-msgstr ""
+msgstr "立体声"
#: scene/resources/concave_polygon_shape_2d.cpp
-#, fuzzy
msgid "Segments"
-msgstr "径呿®µæ•°"
+msgstr "分段"
#: scene/resources/curve.cpp
-#, fuzzy
msgid "Bake Resolution"
-msgstr "åŠåˆ†è¾¨çއ"
+msgstr "烘焙分辨率"
#: scene/resources/curve.cpp
msgid "Bake Interval"
-msgstr ""
+msgstr "烘焙间隔"
#: scene/resources/dynamic_font.cpp
msgid "Hinting"
msgstr "微调"
#: scene/resources/dynamic_font.cpp
-#, fuzzy
msgid "Override Oversampling"
-msgstr "使用过采样"
+msgstr "覆盖过采样"
#: scene/resources/dynamic_font.cpp
msgid "Font Path"
@@ -22385,20 +23697,28 @@ msgid "Outline Size"
msgstr "轮廓大å°"
#: scene/resources/dynamic_font.cpp
-#, fuzzy
msgid "Outline Color"
-msgstr "骨骼轮廓颜色"
+msgstr "轮廓颜色"
#: scene/resources/dynamic_font.cpp
-#, fuzzy
msgid "Use Mipmaps"
-msgstr "使用信å·"
+msgstr "使用 Mipmap"
#: scene/resources/dynamic_font.cpp
msgid "Extra Spacing"
msgstr "é¢å¤–é—´è·"
#: scene/resources/dynamic_font.cpp
+#, fuzzy
+msgid "Char"
+msgstr "字符"
+
+#: scene/resources/dynamic_font.cpp scene/resources/world.cpp
+#: scene/resources/world_2d.cpp
+msgid "Space"
+msgstr "空间"
+
+#: scene/resources/dynamic_font.cpp
msgid "Font"
msgstr "字体"
@@ -22415,119 +23735,100 @@ msgid "Sky"
msgstr "天空"
#: scene/resources/environment.cpp
-#, fuzzy
msgid "Sky Custom FOV"
-msgstr "自定字体"
+msgstr "天空自定义 FOV"
#: scene/resources/environment.cpp
-#, fuzzy
msgid "Sky Orientation"
-msgstr "æœå‘"
+msgstr "天空æœå‘"
#: scene/resources/environment.cpp
-#, fuzzy
msgid "Sky Rotation"
-msgstr "旋转"
+msgstr "天空旋转"
#: scene/resources/environment.cpp
-#, fuzzy
msgid "Sky Rotation Degrees"
-msgstr "旋转角度"
+msgstr "天空旋转度数"
#: scene/resources/environment.cpp
msgid "Canvas Max Layer"
-msgstr ""
+msgstr "画布最大层"
#: scene/resources/environment.cpp scene/resources/texture.cpp
-#, fuzzy
msgid "Camera Feed ID"
-msgstr "Camera"
+msgstr "ç›¸æœºæº ID"
#: scene/resources/environment.cpp
msgid "Ambient Light"
msgstr "环境光"
#: scene/resources/environment.cpp
-#, fuzzy
msgid "Sky Contribution"
-msgstr "æ¡ä»¶"
+msgstr "天空贡献"
#: scene/resources/environment.cpp
msgid "Fog"
msgstr "雾"
#: scene/resources/environment.cpp
-#, fuzzy
msgid "Sun Color"
-msgstr "字符串颜色"
+msgstr "太阳颜色"
#: scene/resources/environment.cpp
-#, fuzzy
msgid "Sun Amount"
-msgstr "æ•°é‡"
+msgstr "太阳é‡"
#: scene/resources/environment.cpp
-#, fuzzy
msgid "Depth Enabled"
-msgstr "深度"
+msgstr "å¯ç”¨æ·±åº¦"
#: scene/resources/environment.cpp
-#, fuzzy
msgid "Depth Begin"
-msgstr "深度"
+msgstr "深度起点"
#: scene/resources/environment.cpp
-#, fuzzy
msgid "Depth End"
-msgstr "深度"
+msgstr "深度终点"
#: scene/resources/environment.cpp
-#, fuzzy
msgid "Depth Curve"
-msgstr "拆分曲线"
+msgstr "深度曲线"
#: scene/resources/environment.cpp
-#, fuzzy
msgid "Transmit Enabled"
-msgstr "å¯ç”¨ç­›é€‰"
+msgstr "å¯ç”¨é€å…‰"
#: scene/resources/environment.cpp
-#, fuzzy
msgid "Transmit Curve"
-msgstr "拆分曲线"
+msgstr "é€å…‰æ›²çº¿"
#: scene/resources/environment.cpp
-#, fuzzy
msgid "Height Enabled"
-msgstr "å¯ç”¨ç­›é€‰"
+msgstr "å¯ç”¨é«˜åº¦"
#: scene/resources/environment.cpp
-#, fuzzy
msgid "Height Min"
-msgstr "高度"
+msgstr "最å°é«˜åº¦"
#: scene/resources/environment.cpp
-#, fuzzy
msgid "Height Max"
-msgstr "高度"
+msgstr "最大高度"
#: scene/resources/environment.cpp
-#, fuzzy
msgid "Height Curve"
-msgstr "拆分曲线"
+msgstr "高度曲线"
#: scene/resources/environment.cpp
msgid "Tonemap"
msgstr "色调映射"
#: scene/resources/environment.cpp
-#, fuzzy
msgid "Exposure"
-msgstr "自动æ›å…‰"
+msgstr "æ›å…‰"
#: scene/resources/environment.cpp
msgid "White"
-msgstr ""
+msgstr "白点"
#: scene/resources/environment.cpp
msgid "Auto Exposure"
@@ -22535,155 +23836,177 @@ msgstr "自动æ›å…‰"
#: scene/resources/environment.cpp
msgid "Min Luma"
-msgstr ""
+msgstr "最å°äº®åº¦"
#: scene/resources/environment.cpp
-#, fuzzy
msgid "Max Luma"
-msgstr "最大列数"
+msgstr "最大亮度"
#: scene/resources/environment.cpp
msgid "SS Reflections"
msgstr "å±å¹•空间åå°„"
#: scene/resources/environment.cpp
-#, fuzzy
msgid "Max Steps"
-msgstr "步长"
+msgstr "最大步数"
#: scene/resources/environment.cpp
-#, fuzzy
msgid "Fade In"
-msgstr "淡入(秒):"
+msgstr "æ·¡å…¥"
#: scene/resources/environment.cpp
-#, fuzzy
msgid "Fade Out"
-msgstr "淡出(秒):"
+msgstr "淡出"
#: scene/resources/environment.cpp
-#, fuzzy
msgid "Depth Tolerance"
-msgstr "深度"
+msgstr "深度公差"
#: scene/resources/environment.cpp scene/resources/material.cpp
msgid "Roughness"
-msgstr ""
+msgstr "粗糙度"
#: scene/resources/environment.cpp
msgid "SSAO"
msgstr "SSAO"
#: scene/resources/environment.cpp
-#, fuzzy
msgid "Radius 2"
-msgstr "åŠå¾„"
+msgstr "åŠå¾„ 2"
#: scene/resources/environment.cpp
-#, fuzzy
msgid "Intensity 2"
-msgstr "强度"
+msgstr "强度 2"
#: scene/resources/environment.cpp scene/resources/material.cpp
-#, fuzzy
msgid "Light Affect"
-msgstr "光照模å¼"
+msgstr "光照影å“"
#: scene/resources/environment.cpp
-#, fuzzy
msgid "AO Channel Affect"
-msgstr "调试 UV 通é“"
+msgstr "AO 通é“å½±å“"
#: scene/resources/environment.cpp
msgid "Blur"
-msgstr ""
+msgstr "模糊"
#: scene/resources/environment.cpp
msgid "Edge Sharpness"
-msgstr ""
+msgstr "边缘é”度"
#: scene/resources/environment.cpp
msgid "DOF Far Blur"
-msgstr ""
+msgstr "DOF 远端模糊"
#: scene/resources/environment.cpp scene/resources/material.cpp
-#, fuzzy
msgid "Distance"
-msgstr "最大è·ç¦»"
+msgstr "è·ç¦»"
#: scene/resources/environment.cpp
-#, fuzzy
msgid "Transition"
-msgstr "过渡: "
+msgstr "过渡"
#: scene/resources/environment.cpp
msgid "DOF Near Blur"
-msgstr ""
+msgstr "DOF 近端模糊"
#: scene/resources/environment.cpp
msgid "Glow"
msgstr "å‘å…‰"
#: scene/resources/environment.cpp
-msgid "Bloom"
+#, fuzzy
+msgid "Levels"
+msgstr "电平 dB"
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+#, fuzzy
+msgid "1"
+msgstr "K1"
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+#, fuzzy
+msgid "2"
+msgstr "2D"
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+#, fuzzy
+msgid "3"
+msgstr "3D"
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "4"
msgstr ""
#: scene/resources/environment.cpp
-msgid "HDR Threshold"
+msgid "5"
msgstr ""
#: scene/resources/environment.cpp
-msgid "HDR Luminance Cap"
+msgid "6"
msgstr ""
#: scene/resources/environment.cpp
-#, fuzzy
+msgid "7"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "Bloom"
+msgstr "光晕"
+
+#: scene/resources/environment.cpp
+msgid "HDR Threshold"
+msgstr "HDR 阈值"
+
+#: scene/resources/environment.cpp
+msgid "HDR Luminance Cap"
+msgstr "HDR 亮度上é™"
+
+#: scene/resources/environment.cpp
msgid "HDR Scale"
-msgstr "缩放"
+msgstr "HDR 缩放"
#: scene/resources/environment.cpp
msgid "Bicubic Upscale"
-msgstr ""
+msgstr "åŒä¸‰æ¬¡æ”¾å¤§"
#: scene/resources/environment.cpp
msgid "Adjustments"
msgstr "调整"
#: scene/resources/environment.cpp
-#, fuzzy
msgid "Brightness"
-msgstr "ç¯å…‰"
+msgstr "亮度"
#: scene/resources/environment.cpp
-#, fuzzy
msgid "Saturation"
-msgstr "分隔:"
+msgstr "对比度"
#: scene/resources/environment.cpp
-#, fuzzy
msgid "Color Correction"
-msgstr "颜色函数。"
+msgstr "颜色校正"
#: scene/resources/font.cpp
msgid "Chars"
-msgstr ""
+msgstr "字符"
#: scene/resources/font.cpp
-#, fuzzy
msgid "Kernings"
-msgstr "警告"
+msgstr "å­—å¶å¯¹"
#: scene/resources/font.cpp
msgid "Ascent"
msgstr "å‡éƒ¨"
#: scene/resources/font.cpp
-#, fuzzy
msgid "Distance Field"
-msgstr "专注模å¼"
+msgstr "è·ç¦»åœº"
#: scene/resources/gradient.cpp
-#, fuzzy
msgid "Offsets"
msgstr "åç§»"
@@ -22696,14 +24019,12 @@ msgid "Map Depth"
msgstr "贴图深度"
#: scene/resources/height_map_shape.cpp
-#, fuzzy
msgid "Map Data"
-msgstr "贴图深度"
+msgstr "地图数æ®"
#: scene/resources/line_shape_2d.cpp
-#, fuzzy
msgid "D"
-msgstr "3D"
+msgstr "è·ç¦»"
#: scene/resources/material.cpp
msgid "Render Priority"
@@ -22711,74 +24032,134 @@ msgstr "渲染优先级"
#: scene/resources/material.cpp
msgid "Next Pass"
-msgstr "下一é"
+msgstr "下一阶段"
+
+#: scene/resources/material.cpp
+msgid "Use Shadow To Opacity"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Unshaded"
+msgstr "显示无阴影"
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Vertex Lighting"
+msgstr "直接光照"
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "No Depth Test"
+msgstr "深度å‰ç½®é˜¶æ®µ"
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Use Point Size"
+msgstr "点大å°"
+
+#: scene/resources/material.cpp
+msgid "World Triplanar"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Fixed Size"
+msgstr "固定图标大å°"
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Albedo Tex Force sRGB"
+msgstr "应用力"
+
+#: scene/resources/material.cpp
+msgid "Do Not Receive Shadows"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Disable Ambient Light"
+msgstr "环境光"
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Ensure Correct Normals"
+msgstr "å˜æ¢æ³•线"
#: scene/resources/material.cpp
msgid "Vertex Color"
msgstr "顶点颜色"
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Use As Albedo"
+msgstr "å照率"
+
+#: scene/resources/material.cpp
+msgid "Is sRGB"
+msgstr ""
+
#: scene/resources/material.cpp servers/visual_server.cpp
msgid "Parameters"
msgstr "傿•°"
#: scene/resources/material.cpp
-#, fuzzy
msgid "Diffuse Mode"
-msgstr "æš‚åœæ¨¡å¼"
+msgstr "漫å射模å¼"
#: scene/resources/material.cpp
-#, fuzzy
msgid "Specular Mode"
-msgstr "标尺模å¼"
+msgstr "高光模å¼"
#: scene/resources/material.cpp
-#, fuzzy
msgid "Depth Draw Mode"
-msgstr "方法调用模å¼"
+msgstr "深度绘制模å¼"
#: scene/resources/material.cpp
-#, fuzzy
msgid "Line Width"
-msgstr "骨骼宽度"
+msgstr "线宽度"
#: scene/resources/material.cpp
-#, fuzzy
msgid "Point Size"
-msgstr "字体大å°"
+msgstr "点大å°"
#: scene/resources/material.cpp
-#, fuzzy
msgid "Billboard Mode"
-msgstr "公告æ¿"
+msgstr "å…¬å‘Šæ¿æ¨¡å¼"
#: scene/resources/material.cpp
#, fuzzy
+msgid "Billboard Keep Scale"
+msgstr "å…¬å‘Šæ¿æ¨¡å¼"
+
+#: scene/resources/material.cpp
msgid "Grow"
-msgstr "å‘åŽä¼¸é•¿"
+msgstr "å‘å…‰"
#: scene/resources/material.cpp
-#, fuzzy
msgid "Grow Amount"
-msgstr "æ•°é‡"
+msgstr "å‘å…‰é‡"
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Use Alpha Scissor"
+msgstr "Alpha è£å‰ªé˜ˆå€¼"
#: scene/resources/material.cpp
msgid "Alpha Scissor Threshold"
-msgstr ""
+msgstr "Alpha è£å‰ªé˜ˆå€¼"
#: scene/resources/material.cpp
-#, fuzzy
msgid "Particles Anim"
-msgstr "ç²’å­"
+msgstr "ç²’å­åŠ¨ç”»"
#: scene/resources/material.cpp
-#, fuzzy
msgid "H Frames"
-msgstr "帧"
+msgstr "水平帧数"
#: scene/resources/material.cpp
-#, fuzzy
msgid "V Frames"
-msgstr "帧"
+msgstr "垂直帧数"
#: scene/resources/material.cpp
msgid "Albedo"
@@ -22790,30 +24171,47 @@ msgstr "金属性"
#: scene/resources/material.cpp
msgid "Metallic Specular"
-msgstr ""
+msgstr "金属性高光"
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Metallic Texture"
+msgstr "金属性纹ç†é€šé“"
#: scene/resources/material.cpp
msgid "Metallic Texture Channel"
-msgstr ""
+msgstr "金属性纹ç†é€šé“"
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Roughness Texture"
+msgstr "粗糙度纹ç†é€šé“"
#: scene/resources/material.cpp
msgid "Roughness Texture Channel"
-msgstr ""
+msgstr "粗糙度纹ç†é€šé“"
#: scene/resources/material.cpp
-#, fuzzy
msgid "Emission"
-msgstr "å‘å°„é®ç½©"
+msgstr "å‘å°„"
#: scene/resources/material.cpp
-#, fuzzy
msgid "Emission Energy"
-msgstr "å‘射色彩"
+msgstr "å‘射能é‡"
#: scene/resources/material.cpp
-#, fuzzy
msgid "Emission Operator"
-msgstr "å‘射色彩"
+msgstr "å‘å°„æ“作"
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Emission On UV2"
+msgstr "å‘å°„"
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Emission Texture"
+msgstr "å‘å°„æºï¼š "
#: scene/resources/material.cpp
msgid "NormalMap"
@@ -22821,62 +24219,74 @@ msgstr "法线贴图"
#: scene/resources/material.cpp
msgid "Rim"
-msgstr ""
+msgstr "边缘"
#: scene/resources/material.cpp
-#, fuzzy
msgid "Rim Tint"
-msgstr "éšæœºå€¾æ–œï¼š"
+msgstr "边缘染色"
#: scene/resources/material.cpp
#, fuzzy
+msgid "Rim Texture"
+msgstr "移除纹ç†"
+
+#: scene/resources/material.cpp
msgid "Clearcoat"
-msgstr "清除"
+msgstr "清漆"
#: scene/resources/material.cpp
-#, fuzzy
msgid "Clearcoat Gloss"
-msgstr "清除姿势"
+msgstr "清漆光泽"
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Clearcoat Texture"
+msgstr "颜色纹ç†"
#: scene/resources/material.cpp
msgid "Anisotropy"
msgstr "å„å‘异性"
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Anisotropy Flowmap"
+msgstr "å„å‘异性"
+
+#: scene/resources/material.cpp
msgid "Ambient Occlusion"
msgstr "环境光é®è”½"
#: scene/resources/material.cpp
-#, fuzzy
+msgid "On UV2"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Texture Channel"
-msgstr "纹ç†ç¼©æ”¾"
+msgstr "纹ç†é€šé“"
#: scene/resources/material.cpp
msgid "Deep Parallax"
-msgstr ""
+msgstr "深度视差"
#: scene/resources/material.cpp
-#, fuzzy
msgid "Min Layers"
-msgstr "层"
+msgstr "最å°å±‚æ•°"
#: scene/resources/material.cpp
-#, fuzzy
msgid "Max Layers"
-msgstr "层"
+msgstr "最大层数"
#: scene/resources/material.cpp
msgid "Flip Tangent"
-msgstr ""
+msgstr "翻转切线"
#: scene/resources/material.cpp
-#, fuzzy
msgid "Flip Binormal"
-msgstr "翻转入å£"
+msgstr "翻转次法线"
#: scene/resources/material.cpp
msgid "Subsurf Scatter"
-msgstr ""
+msgstr "æ¬¡è¡¨é¢æ•£å°„"
#: scene/resources/material.cpp
msgid "Transmission"
@@ -22884,47 +24294,53 @@ msgstr "传递"
#: scene/resources/material.cpp
#, fuzzy
+msgid "Transmission Texture"
+msgstr "传递"
+
+#: scene/resources/material.cpp
msgid "Refraction"
-msgstr "分隔:"
+msgstr "折射"
#: scene/resources/material.cpp scene/resources/navigation_mesh.cpp
msgid "Detail"
msgstr "细节"
#: scene/resources/material.cpp
-#, fuzzy
msgid "UV Layer"
-msgstr "层"
+msgstr "UV 层"
#: scene/resources/material.cpp
msgid "UV1"
msgstr "UV1"
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Triplanar"
+msgstr "三平é¢é”度"
+
+#: scene/resources/material.cpp
msgid "Triplanar Sharpness"
-msgstr ""
+msgstr "三平é¢é”度"
#: scene/resources/material.cpp
msgid "UV2"
msgstr "UV2"
#: scene/resources/material.cpp
-#, fuzzy
msgid "Proximity Fade"
-msgstr "优先模å¼"
+msgstr "接近淡出"
#: scene/resources/material.cpp
msgid "Distance Fade"
-msgstr ""
+msgstr "è·ç¦»æ·¡å‡º"
#: scene/resources/material.cpp
msgid "Async Mode"
msgstr "异步模å¼"
#: scene/resources/mesh.cpp
-#, fuzzy
msgid "Lightmap Size Hint"
-msgstr "光照贴图缩放"
+msgstr "å…‰ç…§è´´å›¾å¤§å°æç¤º"
#: scene/resources/mesh.cpp
msgid "Blend Shape Mode"
@@ -22955,24 +24371,20 @@ msgid "Visible Instance Count"
msgstr "å¯è§å®žä¾‹æ•°"
#: scene/resources/multimesh.cpp
-#, fuzzy
msgid "Transform Array"
-msgstr "å˜æ¢æ ¼å¼"
+msgstr "Transform 数组"
#: scene/resources/multimesh.cpp
-#, fuzzy
msgid "Transform 2D Array"
-msgstr "å˜æ¢ UV 贴图"
+msgstr "Transform2D 数组"
#: scene/resources/multimesh.cpp
-#, fuzzy
msgid "Color Array"
-msgstr "ç»„æˆæ•°ç»„"
+msgstr "Color 数组"
#: scene/resources/multimesh.cpp
-#, fuzzy
msgid "Custom Data Array"
-msgstr "è‡ªå®šä¹‰æ•°æ®æ ¼å¼"
+msgstr "è‡ªå®šä¹‰æ•°æ®æ•°ç»„"
#: scene/resources/navigation_mesh.cpp
msgid "Sample Partition Type"
@@ -22987,9 +24399,8 @@ msgid "Source Geometry Mode"
msgstr "æ¥æºå‡ ä½•体模å¼"
#: scene/resources/navigation_mesh.cpp
-#, fuzzy
msgid "Source Group Name"
-msgstr "æºä»£ç "
+msgstr "æ¥æºåˆ†ç»„åç§°"
#: scene/resources/navigation_mesh.cpp
msgid "Agent"
@@ -23009,39 +24420,35 @@ msgstr "åˆå¹¶å¤§å°"
#: scene/resources/navigation_mesh.cpp
msgid "Edge"
-msgstr ""
+msgstr "边缘"
#: scene/resources/navigation_mesh.cpp
-#, fuzzy
msgid "Max Error"
-msgstr "错误"
+msgstr "最大误差"
#: scene/resources/navigation_mesh.cpp
msgid "Verts Per Poly"
-msgstr ""
+msgstr "æ¯å¤šè¾¹å½¢é¡¶ç‚¹æ•°"
#: scene/resources/navigation_mesh.cpp
-#, fuzzy
msgid "Sample Distance"
-msgstr "拾å–è·ç¦»ï¼š"
+msgstr "采样è·ç¦»"
#: scene/resources/navigation_mesh.cpp
-#, fuzzy
msgid "Sample Max Error"
-msgstr "采样 Sampler"
+msgstr "采样最大误差"
#: scene/resources/navigation_mesh.cpp
msgid "Low Hanging Obstacles"
-msgstr ""
+msgstr "低垂障ç¢ç‰©"
#: scene/resources/navigation_mesh.cpp
-#, fuzzy
msgid "Ledge Spans"
-msgstr "行间è·"
+msgstr "凸å°èŒƒå›´"
#: scene/resources/navigation_mesh.cpp
msgid "Filter Walkable Low Height Spans"
-msgstr ""
+msgstr "过滤å¯è¡Œèµ°ä½Žé«˜åº¦èŒƒå›´"
#: scene/resources/occluder_shape.cpp
msgid "Spheres"
@@ -23052,91 +24459,90 @@ msgid "OccluderShapeSphere Set Spheres"
msgstr "OccluderShapeSphere 设置 Spheres"
#: scene/resources/occluder_shape_polygon.cpp
-#, fuzzy
msgid "Polygon Points"
-msgstr "多边形"
+msgstr "多边形顶点"
#: scene/resources/occluder_shape_polygon.cpp
-#, fuzzy
msgid "Hole Points"
-msgstr "移动点"
+msgstr "空洞顶点"
#: scene/resources/packed_scene.cpp
msgid "Bundled"
-msgstr ""
+msgstr "æ†ç»‘"
#: scene/resources/particles_material.cpp
msgid "Trail"
msgstr "æ‹–å°¾"
#: scene/resources/particles_material.cpp
-#, fuzzy
msgid "Divisor"
-msgstr "将 %s 除以"
+msgstr "除数"
#: scene/resources/particles_material.cpp
-#, fuzzy
msgid "Size Modifier"
-msgstr "自由观看加速调整"
+msgstr "大å°ä¿®æ”¹å™¨"
#: scene/resources/particles_material.cpp
-#, fuzzy
msgid "Color Modifier"
-msgstr "自由观看å‡é€Ÿè°ƒæ•´"
+msgstr "颜色修改器"
#: scene/resources/particles_material.cpp
-#, fuzzy
msgid "Point Texture"
-msgstr "å‘å°„ä½ç½®ï¼š"
+msgstr "点纹ç†"
#: scene/resources/particles_material.cpp
-#, fuzzy
msgid "Normal Texture"
-msgstr "å‘射法线纹ç†"
+msgstr "法线纹ç†"
#: scene/resources/particles_material.cpp
-#, fuzzy
msgid "Color Texture"
-msgstr "颜色主题"
+msgstr "颜色纹ç†"
#: scene/resources/particles_material.cpp
-#, fuzzy
msgid "Point Count"
-msgstr "输入数é‡"
+msgstr "点数"
+
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Scale Random"
+msgstr "缩放比率:"
+
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Scale Curve"
+msgstr "é—­åˆæ›²çº¿"
#: scene/resources/physics_material.cpp
msgid "Rough"
-msgstr ""
+msgstr "ç²—ç³™"
#: scene/resources/physics_material.cpp
msgid "Absorbent"
-msgstr ""
+msgstr "叿”¶"
#: scene/resources/plane_shape.cpp
-#, fuzzy
msgid "Plane"
-msgstr "å¹³é¢ï¼š"
+msgstr "å¹³é¢"
#: scene/resources/primitive_meshes.cpp
-#, fuzzy
msgid "Flip Faces"
-msgstr "翻转入å£"
+msgstr "翻转表é¢"
#: scene/resources/primitive_meshes.cpp
msgid "Mid Height"
-msgstr ""
+msgstr "中段高度"
#: scene/resources/primitive_meshes.cpp
msgid "Subdivide Width"
-msgstr ""
+msgstr "细分宽度"
#: scene/resources/primitive_meshes.cpp
msgid "Subdivide Height"
-msgstr ""
+msgstr "细分高度"
#: scene/resources/primitive_meshes.cpp
msgid "Subdivide Depth"
-msgstr ""
+msgstr "细分深度"
#: scene/resources/primitive_meshes.cpp
msgid "Top Radius"
@@ -23147,86 +24553,72 @@ msgid "Bottom Radius"
msgstr "底部åŠå¾„"
#: scene/resources/primitive_meshes.cpp
-#, fuzzy
msgid "Left To Right"
-msgstr "å³ä¸Š"
+msgstr "从左到å³"
#: scene/resources/primitive_meshes.cpp
msgid "Is Hemisphere"
-msgstr ""
+msgstr "是å¦åŠçƒ"
#: scene/resources/ray_shape.cpp scene/resources/segment_shape_2d.cpp
msgid "Slips On Slope"
-msgstr ""
+msgstr "æ–œå¡æ»‘动"
#: scene/resources/segment_shape_2d.cpp
-#, fuzzy
msgid "A"
-msgstr "AR"
-
-#: scene/resources/shader.cpp
-msgid "Code"
-msgstr ""
+msgstr "A"
#: scene/resources/shader.cpp
-#, fuzzy
msgid "Custom Defines"
-msgstr "è¿è¡Œè‡ªå®šä¹‰åœºæ™¯"
+msgstr "自定义定义"
#: scene/resources/shape_2d.cpp
msgid "Custom Solver Bias"
-msgstr ""
+msgstr "自定义求解器å倚"
#: scene/resources/sky.cpp
-#, fuzzy
msgid "Radiance Size"
-msgstr "轮廓大å°ï¼š"
+msgstr "è¾å°„大å°"
#: scene/resources/sky.cpp
msgid "Panorama"
-msgstr ""
+msgstr "全景"
#: scene/resources/sky.cpp
-#, fuzzy
msgid "Top Color"
-msgstr "文本颜色"
+msgstr "顶部颜色"
#: scene/resources/sky.cpp
-#, fuzzy
msgid "Horizon Color"
-msgstr "字符串颜色"
+msgstr "地平线颜色"
#: scene/resources/sky.cpp
msgid "Ground"
msgstr "地é¢"
#: scene/resources/sky.cpp
-#, fuzzy
msgid "Bottom Color"
-msgstr "书签颜色"
+msgstr "底部颜色"
#: scene/resources/sky.cpp
msgid "Sun"
msgstr "太阳"
#: scene/resources/sky.cpp
-#, fuzzy
msgid "Latitude"
-msgstr "替æ¢"
+msgstr "纬度"
#: scene/resources/sky.cpp
msgid "Longitude"
-msgstr ""
+msgstr "ç»åº¦"
#: scene/resources/sky.cpp
-#, fuzzy
msgid "Angle Min"
-msgstr "角度"
+msgstr "最å°è§’度"
#: scene/resources/sky.cpp
-#, fuzzy
msgid "Angle Max"
-msgstr "角度"
+msgstr "最大角度"
#: scene/resources/style_box.cpp
msgid "Content Margin"
@@ -23261,69 +24653,52 @@ msgid "Grow End"
msgstr "å‘åŽä¼¸é•¿"
#: scene/resources/texture.cpp
-msgid "Storage"
-msgstr "存储"
-
-#: scene/resources/texture.cpp
-msgid "Lossy Quality"
-msgstr ""
-
-#: scene/resources/texture.cpp
-#, fuzzy
msgid "Load Path"
-msgstr "载入预设"
+msgstr "加载路径"
#: scene/resources/texture.cpp
-#, fuzzy
msgid "Base Texture"
-msgstr "移除纹ç†"
+msgstr "基础纹ç†"
#: scene/resources/texture.cpp
-#, fuzzy
msgid "Image Size"
-msgstr "页大å°"
+msgstr "图åƒå¤§å°"
#: scene/resources/texture.cpp
msgid "Storage Mode"
msgstr "存储模å¼"
#: scene/resources/texture.cpp
-#, fuzzy
msgid "Lossy Storage Quality"
-msgstr "æ•获"
+msgstr "有æŸå­˜å‚¨è´¨é‡"
#: scene/resources/texture.cpp
-#, fuzzy
msgid "Fill From"
-msgstr "填充模å¼"
+msgstr "填充起点"
#: scene/resources/texture.cpp
-#, fuzzy
msgid "Fill To"
-msgstr "填充模å¼"
+msgstr "填充终点"
#: scene/resources/texture.cpp
-#, fuzzy
msgid "Base"
-msgstr "基础类型"
+msgstr "基础"
#: scene/resources/texture.cpp
msgid "Current Frame"
msgstr "当å‰å¸§"
#: scene/resources/texture.cpp
-#, fuzzy
msgid "Pause"
msgstr "æš‚åœ"
#: scene/resources/texture.cpp
msgid "Which Feed"
-msgstr ""
+msgstr "æº"
#: scene/resources/texture.cpp
-#, fuzzy
msgid "Camera Is Active"
-msgstr "区分大å°å†™"
+msgstr "ç›¸æœºæ˜¯å¦æ´»åЍ"
#: scene/resources/theme.cpp
msgid "Default Font"
@@ -23331,12 +24706,11 @@ msgstr "默认字体"
#: scene/resources/visual_shader.cpp
msgid "Output Port For Preview"
-msgstr ""
+msgstr "输出端å£é¢„览"
#: scene/resources/visual_shader.cpp
-#, fuzzy
msgid "Initialized"
-msgstr "åˆå§‹åŒ–"
+msgstr "å·²åˆå§‹åŒ–"
#: scene/resources/visual_shader.cpp
msgid "Input Name"
@@ -23366,17 +24740,15 @@ msgstr "纹ç†ç±»åž‹"
#: scene/resources/visual_shader_nodes.cpp
msgid "Cube Map"
-msgstr ""
+msgstr "立方体贴图"
#: scene/resources/visual_shader_nodes.cpp
-#, fuzzy
msgid "Default Value Enabled"
-msgstr "默认功能é…置文件"
+msgstr "å¯ç”¨é»˜è®¤å€¼"
#: scene/resources/visual_shader_nodes.cpp
-#, fuzzy
msgid "Default Value"
-msgstr "默认输入值"
+msgstr "默认值"
#: scene/resources/visual_shader_nodes.cpp
msgid "Color Default"
@@ -23388,21 +24760,15 @@ msgstr "该类型的比较功能无效。"
#: scene/resources/world.cpp
msgid "Fallback Environment"
-msgstr "备用环境"
-
-#: scene/resources/world.cpp scene/resources/world_2d.cpp
-#, fuzzy
-msgid "Space"
-msgstr "最å°ç©ºé—´"
+msgstr "回退环境"
#: scene/resources/world.cpp
-#, fuzzy
msgid "Scenario"
msgstr "场景"
#: scene/resources/world.cpp scene/resources/world_2d.cpp
msgid "Direct Space State"
-msgstr ""
+msgstr "DirectSpaceState"
#: scene/resources/world.cpp scene/resources/world_2d.cpp
msgid "Default Gravity Vector"
@@ -23414,20 +24780,19 @@ msgstr "默认线性阻尼"
#: scene/resources/world.cpp scene/resources/world_2d.cpp
msgid "Default Angular Damp"
-msgstr ""
+msgstr "默认角度阻尼"
#: scene/resources/world_2d.cpp
msgid "Canvas"
-msgstr ""
+msgstr "画布"
#: servers/arvr/arvr_interface.cpp
msgid "Is Primary"
-msgstr ""
+msgstr "是å¦ä¸»è¦"
#: servers/arvr/arvr_interface.cpp
-#, fuzzy
msgid "Is Initialized"
-msgstr "åˆå§‹åŒ–"
+msgstr "是å¦åˆå§‹åŒ–"
#: servers/arvr/arvr_interface.cpp
msgid "AR"
@@ -23435,17 +24800,15 @@ msgstr "AR"
#: servers/arvr/arvr_interface.cpp
msgid "Is Anchor Detection Enabled"
-msgstr ""
+msgstr "锚点检测是å¦å¯ç”¨"
#: servers/arvr_server.cpp
-#, fuzzy
msgid "Primary Interface"
-msgstr "用户界é¢"
+msgstr "主接å£"
#: servers/audio/audio_stream.cpp
-#, fuzzy
msgid "Audio Stream"
-msgstr "å•选项目"
+msgstr "音频æµ"
#: servers/audio/audio_stream.cpp
msgid "Random Pitch"
@@ -23455,130 +24818,132 @@ msgstr "éšæœºéŸ³é«˜"
#: servers/audio/effects/audio_effect_spectrum_analyzer.cpp
#: servers/audio/effects/audio_stream_generator.cpp
msgid "Buffer Length"
-msgstr ""
+msgstr "缓冲长度"
#: servers/audio/effects/audio_effect_chorus.cpp
msgid "Voice Count"
-msgstr ""
+msgstr "语音数é‡"
#: servers/audio/effects/audio_effect_chorus.cpp
#: servers/audio/effects/audio_effect_delay.cpp
#: servers/audio/effects/audio_effect_reverb.cpp
msgid "Dry"
-msgstr ""
+msgstr "å¹²"
#: servers/audio/effects/audio_effect_chorus.cpp
#: servers/audio/effects/audio_effect_reverb.cpp
msgid "Wet"
-msgstr ""
+msgstr "湿"
-#: servers/audio/effects/audio_effect_compressor.cpp
-msgid "Threshold"
-msgstr ""
+#: servers/audio/effects/audio_effect_chorus.cpp
+#, fuzzy
+msgid "Voice"
+msgstr "语音数é‡"
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+msgid "Delay (ms)"
+msgstr "延迟(毫秒)"
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_phaser.cpp
+msgid "Rate Hz"
+msgstr "频率 Hz"
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#, fuzzy
+msgid "Depth (ms)"
+msgstr "延迟(毫秒)"
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+msgid "Level dB"
+msgstr "电平 dB"
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+#: servers/audio/effects/audio_effect_panner.cpp
+msgid "Pan"
+msgstr "平移"
#: servers/audio/effects/audio_effect_compressor.cpp
#: servers/audio/effects/audio_effect_filter.cpp
msgid "Gain"
-msgstr ""
+msgstr "增益"
#: servers/audio/effects/audio_effect_compressor.cpp
-#, fuzzy
msgid "Attack (µs)"
-msgstr "起音微秒"
+msgstr "起音(微秒)"
#: servers/audio/effects/audio_effect_compressor.cpp
-#, fuzzy
msgid "Release (ms)"
-msgstr "释音毫秒"
+msgstr "释音(毫秒)"
#: servers/audio/effects/audio_effect_compressor.cpp
msgid "Sidechain"
-msgstr ""
+msgstr "支链"
#: servers/audio/effects/audio_effect_delay.cpp
msgid "Tap 1"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_delay.cpp
-#, fuzzy
-msgid "Delay (ms)"
-msgstr "延迟毫秒"
-
-#: servers/audio/effects/audio_effect_delay.cpp
-msgid "Level dB"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_delay.cpp
-#: servers/audio/effects/audio_effect_panner.cpp
-#, fuzzy
-msgid "Pan"
-msgstr "å¹³é¢ï¼š"
+msgstr "èŠ‚æ‹ 1"
#: servers/audio/effects/audio_effect_delay.cpp
msgid "Tap 2"
-msgstr ""
+msgstr "èŠ‚æ‹ 2"
#: servers/audio/effects/audio_effect_delay.cpp
#: servers/audio/effects/audio_effect_phaser.cpp
#: servers/audio/effects/audio_effect_reverb.cpp
-#, fuzzy
msgid "Feedback"
-msgstr "å‘逿–‡æ¡£å馈"
+msgstr "å馈"
#: servers/audio/effects/audio_effect_delay.cpp
-#, fuzzy
msgid "Low-pass"
-msgstr "æ—通"
+msgstr "低通"
#: servers/audio/effects/audio_effect_distortion.cpp
msgid "Pre Gain"
-msgstr ""
+msgstr "预增益"
#: servers/audio/effects/audio_effect_distortion.cpp
msgid "Keep Hf Hz"
-msgstr ""
+msgstr "ä¿ç•™é«˜é€šæ»¤æ³¢ Hz"
#: servers/audio/effects/audio_effect_distortion.cpp
msgid "Drive"
-msgstr ""
+msgstr "驱动"
#: servers/audio/effects/audio_effect_distortion.cpp
-#, fuzzy
msgid "Post Gain"
-msgstr "åŽç½®"
+msgstr "åŽå¢žç›Š"
#: servers/audio/effects/audio_effect_filter.cpp
-#, fuzzy
msgid "Resonance"
-msgstr "资æº"
+msgstr "共振"
#: servers/audio/effects/audio_effect_limiter.cpp
msgid "Ceiling dB"
-msgstr ""
+msgstr "ä¸Šé™ dB"
#: servers/audio/effects/audio_effect_limiter.cpp
msgid "Threshold dB"
-msgstr ""
+msgstr "阈值 dB"
#: servers/audio/effects/audio_effect_limiter.cpp
msgid "Soft Clip dB"
-msgstr ""
+msgstr "软è£å‰ª dB"
#: servers/audio/effects/audio_effect_limiter.cpp
msgid "Soft Clip Ratio"
-msgstr ""
+msgstr "软è£å‰ªçއ"
#: servers/audio/effects/audio_effect_phaser.cpp
msgid "Range Min Hz"
-msgstr ""
+msgstr "èŒƒå›´æœ€å° Hz"
#: servers/audio/effects/audio_effect_phaser.cpp
msgid "Range Max Hz"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_phaser.cpp
-msgid "Rate Hz"
-msgstr ""
+msgstr "范围最大 Hz"
#: servers/audio/effects/audio_effect_pitch_shift.cpp
msgid "Oversampling"
@@ -23586,16 +24951,15 @@ msgstr "过采样"
#: servers/audio/effects/audio_effect_pitch_shift.cpp
#: servers/audio/effects/audio_effect_spectrum_analyzer.cpp
-#, fuzzy
msgid "FFT Size"
-msgstr "制表符大å°"
+msgstr "FFT 大å°"
#: servers/audio/effects/audio_effect_reverb.cpp
msgid "Predelay"
-msgstr ""
+msgstr "预延迟"
#: servers/audio/effects/audio_effect_reverb.cpp
-msgid "(msec)"
+msgid "Msec"
msgstr ""
#: servers/audio/effects/audio_effect_reverb.cpp
@@ -23603,26 +24967,24 @@ msgid "Room Size"
msgstr "房间大å°"
#: servers/audio/effects/audio_effect_reverb.cpp
-#, fuzzy
msgid "High-pass"
-msgstr "æ—通"
+msgstr "高通"
#: servers/audio/effects/audio_effect_spectrum_analyzer.cpp
msgid "Tap Back Pos"
-msgstr ""
+msgstr "回æ‹ä½ç½®"
#: servers/audio/effects/audio_effect_stereo_enhance.cpp
msgid "Pan Pullout"
-msgstr ""
+msgstr "平移撤离"
#: servers/audio/effects/audio_effect_stereo_enhance.cpp
-#, fuzzy
msgid "Time Pullout (ms)"
-msgstr "超时。"
+msgstr "撤离时间(毫秒)"
#: servers/audio/effects/audio_effect_stereo_enhance.cpp
msgid "Surround"
-msgstr ""
+msgstr "环绕"
#: servers/audio_server.cpp
msgid "Enable Audio Input"
@@ -23634,146 +24996,127 @@ msgstr "输出延迟"
#: servers/audio_server.cpp
msgid "Channel Disable Threshold dB"
-msgstr ""
+msgstr "声é“ç¦ç”¨é˜ˆå€¼ dB"
#: servers/audio_server.cpp
-#, fuzzy
msgid "Channel Disable Time"
-msgstr "ä¿®æ”¹æ··åˆæ—¶é—´"
+msgstr "声é“ç¦ç”¨æ—¶é—´"
#: servers/audio_server.cpp
msgid "Video Delay Compensation (ms)"
-msgstr ""
+msgstr "视频延迟补å¿ï¼ˆæ¯«ç§’)"
#: servers/audio_server.cpp
-#, fuzzy
msgid "Bus Count"
-msgstr "输入数é‡"
+msgstr "总线数é‡"
#: servers/audio_server.cpp
-#, fuzzy
msgid "Capture Device"
-msgstr "从åƒç´ æ•获"
+msgstr "æ•获设备"
#: servers/audio_server.cpp
-#, fuzzy
msgid "Global Rate Scale"
-msgstr "全局å˜é‡"
+msgstr "全局频率缩放"
#: servers/camera/camera_feed.cpp
msgid "Feed"
-msgstr ""
+msgstr "æº"
#: servers/camera/camera_feed.cpp
-#, fuzzy
msgid "Is Active"
-msgstr "é€è§†"
+msgstr "æ˜¯å¦æ¿€æ´»"
#: servers/physics/space_sw.cpp servers/physics_2d/space_2d_sw.cpp
msgid "Sleep Threshold Linear"
-msgstr ""
+msgstr "ç¡çœ çº¿é˜ˆå€¼"
#: servers/physics/space_sw.cpp servers/physics_2d/space_2d_sw.cpp
msgid "Sleep Threshold Angular"
-msgstr ""
+msgstr "ç¡çœ è§’阈值"
#: servers/physics/space_sw.cpp servers/physics_2d/space_2d_sw.cpp
msgid "Time Before Sleep"
-msgstr ""
+msgstr "ç¡çœ å‰æ—¶é—´"
#: servers/physics_2d/physics_2d_server_sw.cpp
-#, fuzzy
msgid "BP Hash Table Size"
-msgstr "制表符大å°"
+msgstr "BP 哈希表大å°"
#: servers/physics_2d/physics_2d_server_sw.cpp
msgid "Large Object Surface Threshold In Cells"
-msgstr ""
+msgstr "å•元格内较大对象表é¢é˜ˆå€¼"
#: servers/physics_2d_server.cpp servers/physics_server.cpp
msgid "Inverse Mass"
-msgstr ""
+msgstr "逆转质é‡"
#: servers/physics_2d_server.cpp servers/physics_server.cpp
-#, fuzzy
msgid "Inverse Inertia"
-msgstr "自由观看惯性"
+msgstr "逆转惯性"
#: servers/physics_2d_server.cpp servers/physics_server.cpp
-#, fuzzy
msgid "Total Angular Damp"
-msgstr "角度阻尼"
+msgstr "总角度阻尼"
#: servers/physics_2d_server.cpp servers/physics_server.cpp
-#, fuzzy
msgid "Total Linear Damp"
-msgstr "线性阻尼"
+msgstr "总线性阻尼"
#: servers/physics_2d_server.cpp servers/physics_server.cpp
-#, fuzzy
msgid "Total Gravity"
-msgstr "默认é‡åŠ›"
+msgstr "总é‡åŠ›"
#: servers/physics_2d_server.cpp servers/physics_server.cpp
-#, fuzzy
msgid "Linear Velocity"
-msgstr "角速度"
+msgstr "线性速度"
#: servers/physics_2d_server.cpp servers/physics_server.cpp
msgid "Exclude"
msgstr "排除"
#: servers/physics_2d_server.cpp servers/physics_server.cpp
-#, fuzzy
msgid "Shape RID"
-msgstr "Shape"
+msgstr "形状 RID"
#: servers/physics_2d_server.cpp servers/physics_server.cpp
-#, fuzzy
msgid "Collide With Bodies"
-msgstr "碰撞模å¼"
+msgstr "与实体碰撞"
#: servers/physics_2d_server.cpp servers/physics_server.cpp
msgid "Collide With Areas"
-msgstr ""
+msgstr "与区域碰撞"
#: servers/physics_2d_server.cpp servers/physics_server.cpp
msgid "Motion Remainder"
-msgstr ""
+msgstr "è¿åЍ余é‡"
#: servers/physics_2d_server.cpp servers/physics_server.cpp
-#, fuzzy
msgid "Collision Point"
-msgstr "碰撞模å¼"
+msgstr "碰撞点"
#: servers/physics_2d_server.cpp servers/physics_server.cpp
-#, fuzzy
msgid "Collision Normal"
-msgstr "碰撞模å¼"
+msgstr "碰撞法线"
#: servers/physics_2d_server.cpp servers/physics_server.cpp
-#, fuzzy
msgid "Collision Depth"
-msgstr "碰撞模å¼"
+msgstr "碰撞深度"
#: servers/physics_2d_server.cpp servers/physics_server.cpp
-#, fuzzy
msgid "Collision Safe Fraction"
-msgstr "碰撞模å¼"
+msgstr "ç¢°æ’žå®‰å…¨å°æ•°"
#: servers/physics_2d_server.cpp servers/physics_server.cpp
-#, fuzzy
msgid "Collision Unsafe Fraction"
-msgstr "碰撞模å¼"
+msgstr "碰撞ä¸å®‰å…¨å°æ•°"
#: servers/physics_server.cpp
-#, fuzzy
msgid "Center Of Mass"
-msgstr "左侧居中"
+msgstr "è´¨é‡ä¸­å¿ƒ"
#: servers/physics_server.cpp
msgid "Principal Inertia Axes"
-msgstr ""
+msgstr "主惯性轴"
#: servers/visual/shader_language.cpp
msgid "Varying may not be assigned in the '%s' function."
@@ -23808,9 +25151,8 @@ msgid "Spatial Partitioning"
msgstr "空间分割"
#: servers/visual_server.cpp
-#, fuzzy
msgid "Render Loop Enabled"
-msgstr "å¯ç”¨ç­›é€‰"
+msgstr "å¯ç”¨æ¸²æŸ“循环"
#: servers/visual_server.cpp
msgid "VRAM Compression"
@@ -23850,28 +25192,27 @@ msgstr "WebP 压缩等级"
#: servers/visual_server.cpp
msgid "Time Rollover Secs"
-msgstr ""
+msgstr "时间翻转秒数"
#: servers/visual_server.cpp
-#, fuzzy
msgid "Cubemap Size"
-msgstr "ä¿®æ”¹æ‘„åƒæœºå°ºå¯¸"
+msgstr "立方体贴图大å°"
#: servers/visual_server.cpp
msgid "Quadrant 0 Subdiv"
-msgstr ""
+msgstr "è±¡é™ 0 细分"
#: servers/visual_server.cpp
msgid "Quadrant 1 Subdiv"
-msgstr ""
+msgstr "è±¡é™ 1 细分"
#: servers/visual_server.cpp
msgid "Quadrant 2 Subdiv"
-msgstr ""
+msgstr "è±¡é™ 2 细分"
#: servers/visual_server.cpp
msgid "Quadrant 3 Subdiv"
-msgstr ""
+msgstr "è±¡é™ 3 细分"
#: servers/visual_server.cpp
msgid "Shadows"
@@ -23882,17 +25223,16 @@ msgid "Filter Mode"
msgstr "过滤模å¼"
#: servers/visual_server.cpp
-#, fuzzy
msgid "Texture Array Reflections"
-msgstr "居中显示所选项"
+msgstr "çº¹ç†æ•°ç»„åå°„"
#: servers/visual_server.cpp
msgid "High Quality GGX"
-msgstr ""
+msgstr "é«˜è´¨é‡ GGX"
#: servers/visual_server.cpp
msgid "Irradiance Max Size"
-msgstr ""
+msgstr "è¾ç…§æœ€å¤§å¤§å°"
#: servers/visual_server.cpp
msgid "Shading"
@@ -23904,65 +25244,63 @@ msgstr "强制顶点ç€è‰²"
#: servers/visual_server.cpp
msgid "Force Lambert Over Burley"
-msgstr ""
+msgstr "强制基于 Burley 的 Lambert"
#: servers/visual_server.cpp
msgid "Force Blinn Over GGX"
-msgstr ""
+msgstr "强制基于 GGX 的 Blinn"
#: servers/visual_server.cpp
msgid "Mesh Storage"
-msgstr ""
+msgstr "网格存储"
#: servers/visual_server.cpp
-#, fuzzy
msgid "Split Stream"
-msgstr "拆分曲线"
+msgstr "拆分æµ"
#: servers/visual_server.cpp
msgid "Use Physical Light Attenuation"
-msgstr ""
+msgstr "使用物ç†å…‰çº¿è¡°å‡"
#: servers/visual_server.cpp
msgid "Depth Prepass"
-msgstr ""
+msgstr "深度å‰ç½®é˜¶æ®µ"
#: servers/visual_server.cpp
msgid "Disable For Vendors"
-msgstr ""
+msgstr "针对厂商ç¦ç”¨"
#: servers/visual_server.cpp
msgid "Anisotropic Filter Level"
-msgstr ""
+msgstr "å„å‘异性过滤等级"
#: servers/visual_server.cpp
msgid "Use Nearest Mipmap Filter"
-msgstr ""
+msgstr "使用最近 Mipmap 过滤"
#: servers/visual_server.cpp
msgid "Skinning"
-msgstr ""
+msgstr "蒙皮"
#: servers/visual_server.cpp
msgid "Software Skinning Fallback"
-msgstr ""
+msgstr "软件蒙皮回退"
#: servers/visual_server.cpp
msgid "Force Software Skinning"
-msgstr ""
+msgstr "强制软件蒙皮"
#: servers/visual_server.cpp
msgid "Use Software Skinning"
-msgstr ""
+msgstr "使用软件蒙皮"
#: servers/visual_server.cpp
msgid "Ninepatch Mode"
msgstr "ä¹å®«æ ¼æ¨¡å¼"
#: servers/visual_server.cpp
-#, fuzzy
msgid "OpenGL"
-msgstr "打开"
+msgstr "OpenGL"
#: servers/visual_server.cpp
msgid "Batching Send Null"
@@ -23974,11 +25312,11 @@ msgstr "分批æµ"
#: servers/visual_server.cpp
msgid "Legacy Orphan Buffers"
-msgstr ""
+msgstr "旧有孤立缓冲区"
#: servers/visual_server.cpp
msgid "Legacy Stream"
-msgstr ""
+msgstr "旧有æµ"
#: servers/visual_server.cpp
msgid "Batching"
@@ -23994,24 +25332,23 @@ msgstr "在编辑器中使用分批"
#: servers/visual_server.cpp
msgid "Single Rect Fallback"
-msgstr ""
+msgstr "å•矩形回退"
#: servers/visual_server.cpp
msgid "Max Join Item Commands"
-msgstr ""
+msgstr "最大åˆå¹¶é¡¹ç›®å‘½ä»¤æ•°"
#: servers/visual_server.cpp
msgid "Colored Vertex Format Threshold"
-msgstr ""
+msgstr "彩色顶点格å¼é˜ˆå€¼"
#: servers/visual_server.cpp
msgid "Scissor Area Threshold"
-msgstr ""
+msgstr "è£å‰ªåŒºåŸŸé˜ˆå€¼"
#: servers/visual_server.cpp
-#, fuzzy
msgid "Max Join Items"
-msgstr "管ç†é¡¹ç›®..."
+msgstr "最大åˆå¹¶é¡¹ç›®æ•°"
#: servers/visual_server.cpp
msgid "Batch Buffer Size"
@@ -24019,11 +25356,11 @@ msgstr "分批缓冲区大å°"
#: servers/visual_server.cpp
msgid "Item Reordering Lookahead"
-msgstr ""
+msgstr "é¡¹ç›®é‡æŽ’æå‰é‡"
#: servers/visual_server.cpp
msgid "Flash Batching"
-msgstr ""
+msgstr "é—ªçƒåˆ†æ‰¹"
#: servers/visual_server.cpp
msgid "Diagnose Frame"
@@ -24047,11 +25384,11 @@ msgstr "精度"
#: servers/visual_server.cpp
msgid "UV Contract"
-msgstr ""
+msgstr "UV 收缩"
#: servers/visual_server.cpp
msgid "UV Contract Amount"
-msgstr ""
+msgstr "UV 收缩é‡"
#: servers/visual_server.cpp
msgid "Use Simple PVS"
@@ -24066,9 +25403,8 @@ msgid "Use Signals"
msgstr "使用信å·"
#: servers/visual_server.cpp
-#, fuzzy
msgid "Remove Danglers"
-msgstr "移除图å—"
+msgstr "移除空悬"
#: servers/visual_server.cpp
msgid "Flip Imported Portals"
@@ -24099,6 +25435,5 @@ msgid "Log Active Async Compiles Count"
msgstr "将活动异步编译数记入日志"
#: servers/visual_server.cpp
-#, fuzzy
msgid "Shader Cache Size (MB)"
-msgstr "ç€è‰²å™¨ç¼“å­˜å¤§å° MB"
+msgstr "ç€è‰²å™¨ç¼“存大å°ï¼ˆMB)"
diff --git a/editor/translations/zh_HK.po b/editor/translations/zh_HK.po
index 05f4d30d08..3165ecb55b 100644
--- a/editor/translations/zh_HK.po
+++ b/editor/translations/zh_HK.po
@@ -20,7 +20,7 @@ msgstr ""
"Plural-Forms: nplurals=1; plural=0;\n"
"X-Generator: Weblate 4.0.2\n"
-#: core/bind/core_bind.cpp
+#: core/bind/core_bind.cpp main/main.cpp
msgid "Tablet Driver"
msgstr ""
@@ -120,8 +120,8 @@ msgstr "åªé™é¸ä¸­"
#: core/bind/core_bind.cpp editor/editor_settings.cpp main/main.cpp
#: modules/gdscript/gdscript_editor.cpp modules/gridmap/grid_map.cpp
#: modules/mono/csharp_script.cpp modules/visual_script/visual_script_nodes.cpp
-#: scene/2d/tile_map.cpp scene/3d/camera.cpp scene/gui/control.cpp
-#: scene/gui/graph_edit.cpp scene/main/viewport.cpp
+#: scene/2d/tile_map.cpp scene/3d/camera.cpp scene/3d/light.cpp
+#: scene/gui/control.cpp scene/gui/graph_edit.cpp scene/main/viewport.cpp
#: scene/resources/dynamic_font.cpp scene/resources/navigation_mesh.cpp
#: scene/resources/primitive_meshes.cpp scene/resources/sky.cpp
#: scene/resources/style_box.cpp scene/resources/texture.cpp
@@ -223,8 +223,7 @@ msgid "Data"
msgstr ""
#: core/io/file_access_network.cpp core/register_core_types.cpp
-#: editor/editor_settings.cpp editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp main/main.cpp
+#: editor/editor_settings.cpp main/main.cpp
#: modules/gdscript/language_server/gdscript_language_server.cpp
#, fuzzy
msgid "Network"
@@ -501,9 +500,10 @@ msgstr "é‡è¨­ç¸®æ”¾æ¯”例"
msgid "Relative"
msgstr ""
-#: core/os/input_event.cpp scene/2d/camera_2d.cpp
-#: scene/3d/interpolated_camera.cpp scene/animation/animation_player.cpp
-#: scene/resources/environment.cpp
+#: core/os/input_event.cpp scene/2d/camera_2d.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/interpolated_camera.cpp
+#: scene/animation/animation_player.cpp scene/resources/environment.cpp
+#: scene/resources/particles_material.cpp
#, fuzzy
msgid "Speed"
msgstr "鏿“‡æ¨¡å¼"
@@ -552,8 +552,9 @@ msgstr "åŒæ­¥æ›´æ–°è…³æœ¬"
msgid "Pitch"
msgstr "鏿“‡æ¨¡å¼"
-#: core/os/input_event.cpp scene/2d/physics_body_2d.cpp
-#: scene/3d/physics_body.cpp
+#: core/os/input_event.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/physics_body_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/3d/physics_body.cpp scene/resources/particles_material.cpp
msgid "Velocity"
msgstr ""
@@ -571,6 +572,8 @@ msgid "Controller Value"
msgstr ""
#: core/project_settings.cpp editor/editor_node.cpp main/main.cpp
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/windows/export/export.cpp
#, fuzzy
msgid "Application"
msgstr "行為"
@@ -588,13 +591,16 @@ msgstr "專案設定"
#: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp
#: editor/editor_plugin_settings.cpp editor/editor_profiler.cpp
#: editor/project_manager.cpp editor/settings_config_dialog.cpp
-#: modules/gdnative/nativescript/nativescript.cpp scene/2d/area_2d.cpp
-#: scene/3d/area.cpp scene/main/node.cpp
+#: modules/gdnative/nativescript/nativescript.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/osx/export/export.cpp scene/2d/area_2d.cpp scene/3d/area.cpp
+#: scene/main/node.cpp
msgid "Name"
msgstr "å稱"
#: core/project_settings.cpp editor/editor_help.cpp
-#: modules/visual_script/visual_script_nodes.cpp
+#: modules/visual_script/visual_script_nodes.cpp platform/uwp/export/export.cpp
+#: platform/windows/export/export.cpp
#, fuzzy
msgid "Description"
msgstr "æè¿°ï¼š"
@@ -633,7 +639,7 @@ msgid "Custom User Dir Name"
msgstr ""
#: core/project_settings.cpp editor/animation_track_editor.cpp
-#: editor/editor_audio_buses.cpp servers/audio_server.cpp
+#: editor/editor_audio_buses.cpp main/main.cpp servers/audio_server.cpp
msgid "Audio"
msgstr ""
@@ -792,10 +798,13 @@ msgstr "篩é¸:"
msgid "Sharpen Intensity"
msgstr ""
-#: core/project_settings.cpp editor/editor_node.cpp editor/editor_settings.cpp
-#: editor/plugins/script_editor_plugin.cpp editor/project_export.cpp
-#: main/main.cpp modules/gdscript/gdscript.cpp
-#: modules/visual_script/visual_script.cpp scene/3d/room_manager.cpp
+#: core/project_settings.cpp editor/editor_export.cpp editor/editor_node.cpp
+#: editor/editor_settings.cpp editor/plugins/script_editor_plugin.cpp
+#: editor/project_export.cpp main/main.cpp modules/gdscript/gdscript.cpp
+#: modules/visual_script/visual_script.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp scene/3d/room_manager.cpp
#: scene/main/scene_tree.cpp scene/resources/shape_2d.cpp
#: servers/visual_server.cpp
msgid "Debug"
@@ -1028,6 +1037,7 @@ msgid "Subsurface Scattering"
msgstr ""
#: drivers/gles3/rasterizer_scene_gles3.cpp
+#: editor/import/resource_importer_texture.cpp
#: editor/plugins/spatial_editor_plugin.cpp modules/gltf/gltf_node.cpp
#: modules/gridmap/grid_map.cpp scene/2d/cpu_particles_2d.cpp
#: scene/2d/node_2d.cpp scene/2d/parallax_layer.cpp scene/2d/polygon_2d.cpp
@@ -1347,6 +1357,7 @@ msgid "Editors"
msgstr "編輯器"
#: editor/animation_track_editor.cpp editor/editor_settings.cpp
+#: editor/import/resource_importer_scene.cpp
#: editor/plugins/animation_player_editor_plugin.cpp editor/scene_tree_dock.cpp
#: scene/2d/animated_sprite.cpp scene/2d/cpu_particles_2d.cpp
#: scene/2d/sprite.cpp scene/3d/cpu_particles.cpp scene/3d/sprite_3d.cpp
@@ -1586,14 +1597,14 @@ msgstr "新增動畫"
msgid "Seconds"
msgstr ""
-#: editor/animation_track_editor.cpp
+#: editor/animation_track_editor.cpp editor/import/resource_importer_scene.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp main/main.cpp
#: scene/resources/texture.cpp
msgid "FPS"
msgstr ""
#: editor/animation_track_editor.cpp editor/editor_plugin_settings.cpp
-#: editor/editor_resource_picker.cpp
+#: editor/editor_resource_picker.cpp editor/import/resource_importer_wav.cpp
#: editor/plugins/polygon_2d_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
@@ -2597,7 +2608,9 @@ msgid "Remove Autoload"
msgstr "移除Autoload"
#: editor/editor_autoload_settings.cpp editor/editor_plugin_settings.cpp
-#: modules/gdscript/gdscript.cpp scene/2d/polygon_2d.cpp scene/3d/area.cpp
+#: modules/gdscript/gdscript.cpp platform/android/export/export_plugin.cpp
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#: scene/2d/polygon_2d.cpp scene/3d/area.cpp scene/3d/physics_joint.cpp
#: scene/3d/reflection_probe.cpp scene/main/canvas_layer.cpp
#: scene/resources/material.cpp servers/visual_server.cpp
#, fuzzy
@@ -2755,6 +2768,58 @@ msgstr ""
#: editor/editor_export.cpp platform/android/export/export_plugin.cpp
#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Custom Template"
+msgstr "檔案"
+
+#: editor/editor_export.cpp editor/project_export.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp
+msgid "Release"
+msgstr ""
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Binary Format"
+msgstr "常數"
+
+#: editor/editor_export.cpp
+msgid "64 Bits"
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Embed PCK"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Texture Format"
+msgstr "鏿“‡æ¨¡å¼"
+
+#: editor/editor_export.cpp
+msgid "BPTC"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "S3TC"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "ETC"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "ETC2"
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "No BPTC Fallbacks"
+msgstr ""
+
+#: editor/editor_export.cpp platform/android/export/export_plugin.cpp
+#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
msgid "Custom debug template not found."
msgstr ""
@@ -2945,6 +3010,7 @@ msgid "Make Current"
msgstr ""
#: editor/editor_feature_profile.cpp editor/editor_node.cpp
+#: editor/import/resource_importer_scene.cpp
#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
msgid "Import"
msgstr "å°Žå…¥"
@@ -3082,8 +3148,11 @@ msgstr "æˆåŠŸï¼"
msgid "Display Mode"
msgstr "匯出"
-#: editor/editor_file_dialog.cpp main/main.cpp modules/csg/csg_shape.cpp
-#: modules/visual_script/visual_script_nodes.cpp
+#: editor/editor_file_dialog.cpp
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+#: editor/import/resource_importer_wav.cpp main/main.cpp
+#: modules/csg/csg_shape.cpp modules/visual_script/visual_script_nodes.cpp
#: modules/visual_script/visual_script_yield_nodes.cpp scene/2d/light_2d.cpp
#: scene/2d/physics_body_2d.cpp scene/2d/tile_map.cpp
#: scene/3d/baked_lightmap.cpp scene/3d/light.cpp scene/3d/physics_body.cpp
@@ -3229,7 +3298,9 @@ msgstr "導入中:"
msgid "Reimport Missing Imported Files"
msgstr ""
-#: editor/editor_help.cpp
+#: editor/editor_help.cpp scene/2d/camera_2d.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/resources/dynamic_font.cpp
+#: scene/resources/style_box.cpp
#, fuzzy
msgid "Top"
msgstr "最頂"
@@ -3286,6 +3357,7 @@ msgid "Fonts"
msgstr ""
#: editor/editor_help.cpp editor/plugins/theme_editor_plugin.cpp
+#: platform/iphone/export/export.cpp
msgid "Icons"
msgstr ""
@@ -3454,7 +3526,9 @@ msgstr ""
msgid "Pin value [Disabled because '%s' is editor-only]"
msgstr ""
-#: editor/editor_inspector.cpp editor/scene_tree_dock.cpp
+#: editor/editor_inspector.cpp
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+#: editor/scene_tree_dock.cpp
#: modules/visual_script/visual_script_func_nodes.cpp
#: modules/visual_script/visual_script_nodes.cpp
#: modules/visual_script/visual_script_property_selector.cpp
@@ -3779,6 +3853,16 @@ msgstr "快速開啟腳本.."
#: editor/editor_node.cpp
#, fuzzy
+msgid "Save & Reload"
+msgstr "儲存檔案"
+
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Save changes to '%s' before reloading?"
+msgstr "關閉å‰è¦å…ˆå„²å­˜å° '%s' 任何更改嗎?"
+
+#: editor/editor_node.cpp
+#, fuzzy
msgid "Save & Close"
msgstr "儲存檔案"
@@ -3895,6 +3979,11 @@ msgstr "開啟 Project Manager?"
#: editor/editor_node.cpp
#, fuzzy
+msgid "Save changes to the following scene(s) before reloading?"
+msgstr "離開å‰è¦å…ˆå„²å­˜ä»¥ä¸‹ scene 的任何更改嗎?"
+
+#: editor/editor_node.cpp
+#, fuzzy
msgid "Save & Quit"
msgstr "儲存檔案"
@@ -4164,8 +4253,8 @@ msgstr "當改變時更新"
#: editor/editor_node.cpp
#, fuzzy
-msgid "Translate Properties"
-msgstr "內客"
+msgid "Localize Settings"
+msgstr "本地化"
#: editor/editor_node.cpp
#, fuzzy
@@ -4182,8 +4271,8 @@ msgstr "監視器"
#: editor/editor_node.cpp
#, fuzzy
-msgid "Capitalize Properties"
-msgstr "內客"
+msgid "Default Property Name Style"
+msgstr "é è¦½:"
#: editor/editor_node.cpp
msgid "Default Float Step"
@@ -4788,7 +4877,9 @@ msgstr ""
msgid "Update"
msgstr "æ›´æ–°"
-#: editor/editor_plugin_settings.cpp
+#: editor/editor_plugin_settings.cpp platform/android/export/export_plugin.cpp
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp
#, fuzzy
msgid "Version"
msgstr "版本:"
@@ -5802,7 +5893,7 @@ msgstr "有效å稱"
msgid "Rect Custom Position"
msgstr "åªé™é¸ä¸­"
-#: editor/editor_settings.cpp
+#: editor/editor_settings.cpp platform/android/export/export_plugin.cpp
msgid "Screen"
msgstr ""
@@ -5828,6 +5919,19 @@ msgid "Editor SSL Certificates"
msgstr "編輯器設定"
#: editor/editor_settings.cpp
+msgid "HTTP Proxy"
+msgstr ""
+
+#: editor/editor_settings.cpp
+msgid "Host"
+msgstr ""
+
+#: editor/editor_settings.cpp editor/fileserver/editor_file_server.cpp
+#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp
+msgid "Port"
+msgstr ""
+
+#: editor/editor_settings.cpp
msgid "Project Manager"
msgstr ""
@@ -5869,7 +5973,8 @@ msgstr ""
msgid "String Color"
msgstr ""
-#: editor/editor_settings.cpp
+#: editor/editor_settings.cpp platform/javascript/export/export.cpp
+#: platform/uwp/export/export.cpp
#, fuzzy
msgid "Background Color"
msgstr "無效å稱"
@@ -6044,22 +6149,6 @@ msgid "Starting the download..."
msgstr ""
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "HTTP Proxy"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Host"
-msgstr ""
-
-#: editor/export_template_manager.cpp editor/fileserver/editor_file_server.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp main/main.cpp
-#: modules/mono/mono_gd/gd_mono.cpp
-msgid "Port"
-msgstr ""
-
-#: editor/export_template_manager.cpp
#, fuzzy
msgid "Error requesting URL:"
msgstr "請求URL時出ç¾éŒ¯èª¤ï¼š"
@@ -6339,6 +6428,7 @@ msgstr ""
#: editor/fileserver/editor_file_server.cpp
#: editor/plugins/version_control_editor_plugin.cpp
+#: platform/uwp/export/export.cpp platform/windows/export/export.cpp
msgid "Password"
msgstr ""
@@ -6736,6 +6826,115 @@ msgstr ""
msgid "Use Ambient"
msgstr ""
+#: editor/import/resource_importer_bitmask.cpp
+#, fuzzy
+msgid "Create From"
+msgstr "新增資料夾"
+
+#: editor/import/resource_importer_bitmask.cpp
+#: servers/audio/effects/audio_effect_compressor.cpp
+msgid "Threshold"
+msgstr ""
+
+#: editor/import/resource_importer_csv_translation.cpp
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_scene.cpp
+#: editor/import/resource_importer_texture.cpp
+#: editor/import/resource_importer_wav.cpp scene/3d/gi_probe.cpp
+#, fuzzy
+msgid "Compress"
+msgstr "內容:"
+
+#: editor/import/resource_importer_csv_translation.cpp
+msgid "Delimiter"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+msgid "No BPTC If RGB"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/sprite_3d.cpp
+#: scene/resources/material.cpp scene/resources/particles_material.cpp
+#: scene/resources/texture.cpp
+msgid "Flags"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/animation/tween.cpp
+#: scene/resources/texture.cpp
+msgid "Repeat"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/2d/light_2d.cpp
+#: scene/gui/control.cpp scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Filter"
+msgstr "篩é¸:"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Mipmaps"
+msgstr "訊號"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+msgid "Anisotropic"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+msgid "sRGB"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#, fuzzy
+msgid "Slices"
+msgstr "設備"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
+#: scene/resources/style_box.cpp
+#, fuzzy
+msgid "Horizontal"
+msgstr "åªé™é¸ä¸­"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
+#: scene/resources/style_box.cpp
+#, fuzzy
+msgid "Vertical"
+msgstr "新增"
+
+#: editor/import/resource_importer_obj.cpp
+#, fuzzy
+msgid "Generate Tangents"
+msgstr "刪除"
+
+#: editor/import/resource_importer_obj.cpp
+#, fuzzy
+msgid "Scale Mesh"
+msgstr "鏿“‡æ¨¡å¼"
+
+#: editor/import/resource_importer_obj.cpp
+msgid "Offset Mesh"
+msgstr ""
+
+#: editor/import/resource_importer_obj.cpp
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Octahedral Compression"
+msgstr "無干擾模å¼"
+
+#: editor/import/resource_importer_obj.cpp
+msgid "Optimize Mesh Flags"
+msgstr ""
+
#: editor/import/resource_importer_scene.cpp
#, fuzzy
msgid "Import as Single Scene"
@@ -6779,6 +6978,150 @@ msgstr "導入為多個場景"
msgid "Import as Multiple Scenes+Materials"
msgstr "導入為多個場景+Materials"
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Nodes"
+msgstr "貼上"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Root Type"
+msgstr "更改動畫循環"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Root Name"
+msgstr "移除"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Root Scale"
+msgstr "鏿“‡æ¨¡å¼"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Custom Script"
+msgstr "貼上"
+
+#: editor/import/resource_importer_scene.cpp scene/resources/texture.cpp
+msgid "Storage"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Use Legacy Names"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+#, fuzzy
+msgid "Materials"
+msgstr "當改變時更新"
+
+#: editor/import/resource_importer_scene.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Location"
+msgstr "本地化"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Keep On Reimport"
+msgstr "å°Žå…¥"
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+msgid "Meshes"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Ensure Tangents"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Light Baking"
+msgstr "線性"
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Lightmap Texel Size"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+msgid "Skins"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Use Named Skins"
+msgstr "訊號"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "External Files"
+msgstr "開啟檔案"
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Store In Subdir"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Filter Script"
+msgstr "篩é¸:"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Keep Custom Tracks"
+msgstr "檔案"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Optimizer"
+msgstr "優化"
+
+#: editor/import/resource_importer_scene.cpp main/main.cpp
+#: modules/mono/mono_gd/gd_mono.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp scene/2d/camera_2d.cpp scene/2d/light_2d.cpp
+#: scene/2d/navigation_polygon.cpp scene/2d/ray_cast_2d.cpp scene/2d/sprite.cpp
+#: scene/2d/y_sort.cpp scene/3d/audio_stream_player_3d.cpp
+#: scene/3d/baked_lightmap.cpp scene/3d/interpolated_camera.cpp
+#: scene/3d/light.cpp scene/3d/navigation_mesh_instance.cpp
+#: scene/3d/physics_joint.cpp scene/3d/ray_cast.cpp scene/3d/sprite_3d.cpp
+#: scene/gui/graph_edit.cpp scene/gui/rich_text_label.cpp
+#: scene/resources/curve.cpp scene/resources/environment.cpp
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Enabled"
+msgstr "啟用"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Max Linear Error"
+msgstr "最大的線性錯誤:"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Max Angular Error"
+msgstr "最大的角度錯誤:"
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Max Angle"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Remove Unused Tracks"
+msgstr "移除動畫軌跡"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Clips"
+msgstr "動畫片段:"
+
+#: editor/import/resource_importer_scene.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/particles_2d.cpp scene/3d/area.cpp scene/3d/cpu_particles.cpp
+#: scene/3d/particles.cpp scene/resources/environment.cpp
+msgid "Amount"
+msgstr ""
+
#: editor/import/resource_importer_scene.cpp
#: editor/plugins/mesh_library_editor_plugin.cpp
msgid "Import Scene"
@@ -6820,12 +7163,145 @@ msgstr ""
msgid "Saving..."
msgstr "儲存中..."
+#: editor/import/resource_importer_texture.cpp scene/resources/texture.cpp
+msgid "Lossy Quality"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "HDR Mode"
+msgstr "鏿“‡æ¨¡å¼"
+
+#: editor/import/resource_importer_texture.cpp
+msgid "BPTC LDR"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/mesh_instance_2d.cpp scene/2d/multimesh_instance_2d.cpp
+#: scene/2d/particles_2d.cpp scene/2d/sprite.cpp scene/resources/style_box.cpp
+msgid "Normal Map"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Process"
+msgstr "移動模å¼"
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Fix Alpha Border"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Premult Alpha"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Hdr As Srgb"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Invert Color"
+msgstr "下一個腳本"
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Normal Map Invert Y"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
+#: scene/audio/audio_stream_player.cpp scene/gui/video_player.cpp
+msgid "Stream"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Size Limit"
+msgstr "下滾"
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Detect 3D"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+msgid "SVG"
+msgstr ""
+
#: editor/import/resource_importer_texture.cpp
msgid ""
"Warning, no suitable PC VRAM compression enabled in Project Settings. This "
"texture will not display correctly on PC."
msgstr ""
+#: editor/import/resource_importer_texture_atlas.cpp
+#, fuzzy
+msgid "Atlas File"
+msgstr "Assets ZIP 檔"
+
+#: editor/import/resource_importer_texture_atlas.cpp
+#, fuzzy
+msgid "Import Mode"
+msgstr "å°Žå…¥"
+
+#: editor/import/resource_importer_texture_atlas.cpp
+#, fuzzy
+msgid "Crop To Region"
+msgstr "無干擾模å¼"
+
+#: editor/import/resource_importer_texture_atlas.cpp
+msgid "Trim Alpha Border From Region"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp scene/2d/physics_body_2d.cpp
+msgid "Force"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+msgid "8 Bit"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp main/main.cpp
+#: modules/mono/editor/csharp_project.cpp modules/mono/mono_gd/gd_mono.cpp
+msgid "Mono"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+#, fuzzy
+msgid "Max Rate"
+msgstr "管ç†è¼¸å‡ºç¯„本"
+
+#: editor/import/resource_importer_wav.cpp
+#, fuzzy
+msgid "Max Rate Hz"
+msgstr "管ç†è¼¸å‡ºç¯„本"
+
+#: editor/import/resource_importer_wav.cpp
+msgid "Trim"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+#, fuzzy
+msgid "Normalize"
+msgstr "移除é¸é …"
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+#, fuzzy
+msgid "Loop Mode"
+msgstr "移動模å¼"
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+#, fuzzy
+msgid "Loop Begin"
+msgstr "移動模å¼"
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+#, fuzzy
+msgid "Loop End"
+msgstr "移動模å¼"
+
#: editor/import_defaults_editor.cpp
#, fuzzy
msgid "Select Importer"
@@ -6900,6 +7376,28 @@ msgid "Failed to load resource."
msgstr "資æºåŠ è¼‰å¤±æ•—ã€‚"
#: editor/inspector_dock.cpp
+msgid "Property Name Style"
+msgstr ""
+
+#: editor/inspector_dock.cpp scene/gui/color_picker.cpp
+msgid "Raw"
+msgstr ""
+
+#: editor/inspector_dock.cpp
+#, fuzzy
+msgid "Capitalized"
+msgstr "內客"
+
+#: editor/inspector_dock.cpp
+#, fuzzy
+msgid "Localized"
+msgstr "本地化"
+
+#: editor/inspector_dock.cpp
+msgid "Localization not available for current language."
+msgstr ""
+
+#: editor/inspector_dock.cpp
#, fuzzy
msgid "Copy Properties"
msgstr "內客"
@@ -8015,19 +8513,24 @@ msgstr "æŽˆæ¬Šæ¢æ¬¾"
#: editor/plugins/asset_library_editor_plugin.cpp
#, fuzzy
+msgctxt "Pagination"
msgid "First"
msgstr "首é "
-#: editor/plugins/asset_library_editor_plugin.cpp scene/gui/control.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
#, fuzzy
+msgctxt "Pagination"
msgid "Previous"
msgstr "上一個tab"
-#: editor/plugins/asset_library_editor_plugin.cpp scene/gui/control.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgctxt "Pagination"
msgid "Next"
msgstr "下一個"
#: editor/plugins/asset_library_editor_plugin.cpp
+msgctxt "Pagination"
msgid "Last"
msgstr ""
@@ -8276,19 +8779,19 @@ msgid ""
"margins."
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Top Left"
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Top Right"
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Bottom Right"
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Bottom Left"
msgstr ""
@@ -9031,6 +9534,19 @@ msgstr ""
msgid "Gradient Edited"
msgstr ""
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+msgid "Swap GradientTexture2D Fill Points"
+msgstr ""
+
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+msgid "Swap Gradient Fill Points"
+msgstr ""
+
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+#, fuzzy
+msgid "Toggle Grid Snap"
+msgstr "(ä¸ï¼‰é¡¯ç¤ºæœ€æ„›"
+
#: editor/plugins/item_list_editor_plugin.cpp
msgid "Item %d"
msgstr ""
@@ -9254,9 +9770,9 @@ msgid ""
"%s"
msgstr ""
-#: editor/plugins/mesh_library_editor_plugin.cpp modules/gridmap/grid_map.cpp
+#: editor/plugins/mesh_library_editor_plugin.cpp
#, fuzzy
-msgid "Mesh Library"
+msgid "MeshLibrary"
msgstr "MeshLibrary..."
#: editor/plugins/mesh_library_editor_plugin.cpp
@@ -10287,8 +10803,8 @@ msgstr "連到:"
msgid "Source"
msgstr "來æº:"
-#: editor/plugins/script_text_editor.cpp scene/3d/interpolated_camera.cpp
-#: scene/animation/skeleton_ik.cpp
+#: editor/plugins/script_text_editor.cpp platform/uwp/export/export.cpp
+#: scene/3d/interpolated_camera.cpp scene/animation/skeleton_ik.cpp
msgid "Target"
msgstr "目標"
@@ -11312,7 +11828,9 @@ msgstr ""
#: editor/plugins/sprite_frames_editor_plugin.cpp
#: modules/gltf/gltf_animation.cpp modules/minimp3/audio_stream_mp3.cpp
-#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp scene/2d/path_2d.cpp
+#: modules/minimp3/resource_importer_mp3.cpp
+#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp
+#: modules/stb_vorbis/resource_importer_ogg_vorbis.cpp scene/2d/path_2d.cpp
#: scene/3d/path.cpp scene/resources/animation.cpp scene/resources/material.cpp
msgid "Loop"
msgstr ""
@@ -12263,8 +12781,9 @@ msgstr ""
msgid "Priority"
msgstr "匯出"
-#: editor/plugins/tile_set_editor_plugin.cpp main/main.cpp scene/gui/button.cpp
-#: scene/gui/item_list.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp main/main.cpp
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#: scene/gui/button.cpp scene/gui/item_list.cpp
msgid "Icon"
msgstr ""
@@ -13637,10 +14156,6 @@ msgid ""
msgstr ""
#: editor/project_export.cpp
-msgid "Release"
-msgstr ""
-
-#: editor/project_export.cpp
#, fuzzy
msgid "Exporting All"
msgstr "匯出"
@@ -15528,6 +16043,7 @@ msgid "Change AudioStreamPlayer3D Emission Angle"
msgstr ""
#: editor/spatial_editor_gizmos.cpp modules/gltf/gltf_node.cpp
+#: platform/osx/export/export.cpp
msgid "Camera"
msgstr ""
@@ -15807,7 +16323,8 @@ msgstr ""
msgid "Use Nvidia Rect Flicker Workaround"
msgstr ""
-#: main/main.cpp platform/uwp/os_uwp.cpp
+#: main/main.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp platform/uwp/os_uwp.cpp
#, fuzzy
msgid "Display"
msgstr "全部å–代"
@@ -15865,19 +16382,6 @@ msgstr ""
msgid "Allowed"
msgstr ""
-#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp scene/2d/camera_2d.cpp
-#: scene/2d/light_2d.cpp scene/2d/navigation_polygon.cpp
-#: scene/2d/ray_cast_2d.cpp scene/2d/sprite.cpp scene/2d/y_sort.cpp
-#: scene/3d/audio_stream_player_3d.cpp scene/3d/baked_lightmap.cpp
-#: scene/3d/interpolated_camera.cpp scene/3d/light.cpp
-#: scene/3d/navigation_mesh_instance.cpp scene/3d/ray_cast.cpp
-#: scene/3d/sprite_3d.cpp scene/gui/graph_edit.cpp
-#: scene/gui/rich_text_label.cpp scene/resources/curve.cpp
-#: scene/resources/environment.cpp
-#, fuzzy
-msgid "Enabled"
-msgstr "啟用"
-
#: main/main.cpp
msgid "Intended Usage"
msgstr ""
@@ -15907,13 +16411,14 @@ msgstr ""
msgid "Handheld"
msgstr ""
-#: main/main.cpp
+#: main/main.cpp platform/javascript/export/export.cpp
+#: platform/uwp/export/export.cpp
#, fuzzy
msgid "Orientation"
msgstr "開啓最近的"
#: main/main.cpp scene/gui/scroll_container.cpp scene/gui/text_edit.cpp
-#: scene/main/scene_tree.cpp
+#: scene/main/scene_tree.cpp scene/register_scene_types.cpp
#, fuzzy
msgid "Common"
msgstr "社群"
@@ -15955,7 +16460,7 @@ msgstr ""
#: main/main.cpp
#, fuzzy
-msgid "Frame Delay (msec)"
+msgid "Frame Delay Msec"
msgstr "時間:"
#: main/main.cpp
@@ -16078,11 +16583,6 @@ msgstr ""
msgid "Tooltip Position Offset"
msgstr ""
-#: main/main.cpp modules/mono/editor/csharp_project.cpp
-#: modules/mono/mono_gd/gd_mono.cpp
-msgid "Mono"
-msgstr ""
-
#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp
msgid "Debugger Agent"
msgstr ""
@@ -16646,7 +17146,7 @@ msgstr ""
msgid "Intensity"
msgstr ""
-#: modules/gltf/gltf_light.cpp scene/2d/light_2d.cpp
+#: modules/gltf/gltf_light.cpp scene/2d/light_2d.cpp scene/3d/light.cpp
#, fuzzy
msgid "Range"
msgstr "當改變時更新"
@@ -16787,11 +17287,6 @@ msgstr ""
msgid "Use Named Skin Binds"
msgstr ""
-#: modules/gltf/gltf_state.cpp scene/3d/physics_joint.cpp
-#, fuzzy
-msgid "Nodes"
-msgstr "貼上"
-
#: modules/gltf/gltf_state.cpp
msgid "Buffer Views"
msgstr ""
@@ -16801,15 +17296,6 @@ msgid "Accessors"
msgstr ""
#: modules/gltf/gltf_state.cpp
-msgid "Meshes"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp
-#, fuzzy
-msgid "Materials"
-msgstr "當改變時更新"
-
-#: modules/gltf/gltf_state.cpp
#, fuzzy
msgid "Scene Name"
msgstr "場景路徑:"
@@ -16826,15 +17312,11 @@ msgstr "釿–°å‘½å..."
msgid "Textures"
msgstr "文字"
-#: modules/gltf/gltf_state.cpp
+#: modules/gltf/gltf_state.cpp platform/uwp/export/export.cpp
msgid "Images"
msgstr ""
#: modules/gltf/gltf_state.cpp
-msgid "Skins"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp
msgid "Cameras"
msgstr ""
@@ -16868,10 +17350,15 @@ msgstr ""
#: modules/gridmap/grid_map.cpp
#, fuzzy
+msgid "Mesh Library"
+msgstr "MeshLibrary..."
+
+#: modules/gridmap/grid_map.cpp
+#, fuzzy
msgid "Physics Material"
msgstr "物ç†å¹€ %"
-#: modules/gridmap/grid_map.cpp
+#: modules/gridmap/grid_map.cpp scene/3d/visual_instance.cpp
msgid "Use In Baked Light"
msgstr ""
@@ -16902,6 +17389,7 @@ msgstr "ä¸é¸"
#: modules/gridmap/grid_map.cpp scene/2d/collision_object_2d.cpp
#: scene/2d/tile_map.cpp scene/3d/collision_object.cpp scene/3d/soft_body.cpp
+#: scene/resources/material.cpp
msgid "Mask"
msgstr ""
@@ -17097,7 +17585,9 @@ msgid "Ultra Quality Ray Count"
msgstr ""
#: modules/minimp3/audio_stream_mp3.cpp
+#: modules/minimp3/resource_importer_mp3.cpp
#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp
+#: modules/stb_vorbis/resource_importer_ogg_vorbis.cpp
#, fuzzy
msgid "Loop Offset"
msgstr "移動模å¼"
@@ -18204,6 +18694,187 @@ msgid "The package must have at least one '.' separator."
msgstr ""
#: platform/android/export/export_plugin.cpp
+msgid "Use Custom Build"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Export Format"
+msgstr "匯出"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Keystore"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Debug User"
+msgstr "線性"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+msgid "Debug Password"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Release User"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Release Password"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "One Click Deploy"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Clear Previous Install"
+msgstr "上一個tab"
+
+#: platform/android/export/export_plugin.cpp scene/resources/shader.cpp
+msgid "Code"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Min SDK"
+msgstr "下一個腳本"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Target SDK"
+msgstr "目標"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Package"
+msgstr "移除é¸é …"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Unique Name"
+msgstr "Nodeå稱"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Signed"
+msgstr "訊號"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Classify As Game"
+msgstr "å稱:"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Retain Data On Uninstall"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Exclude From Recents"
+msgstr "ä¸é¸"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Graphics"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "OpenGL Debug"
+msgstr "開啟"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "XR Features"
+msgstr "管ç†è¼¸å‡ºç¯„本"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "XR Mode"
+msgstr "鏿“‡æ¨¡å¼"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Hand Tracking"
+msgstr "新增動畫軌跡"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Hand Tracking Frequency"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Passthrough"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Immersive Mode"
+msgstr "匯出"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Support Small"
+msgstr "å°Žå…¥"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Support Normal"
+msgstr "å°Žå…¥"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Support Large"
+msgstr "å°Žå…¥"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Support Xlarge"
+msgstr "å°Žå…¥"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "User Data Backup"
+msgstr "開啟 Project Manager?"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Allow"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Command Line"
+msgstr "社群"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Extra Args"
+msgstr "æè¿°ï¼š"
+
+#: platform/android/export/export_plugin.cpp
+msgid "APK Expansion"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Salt"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Public Key"
+msgstr "複製動畫幀"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Permissions"
+msgstr "版本:"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Custom Permissions"
+msgstr "é‹è¡Œå ´æ™¯"
+
+#: platform/android/export/export_plugin.cpp
msgid "Select device from the list"
msgstr "從列表é¸å–設備"
@@ -18506,6 +19177,177 @@ msgid "The character '%s' is not allowed in Identifier."
msgstr ""
#: platform/iphone/export/export.cpp
+msgid "App Store Team ID"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Provisioning Profile UUID Debug"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Code Sign Identity Debug"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Export Method Debug"
+msgstr "匯出"
+
+#: platform/iphone/export/export.cpp
+msgid "Provisioning Profile UUID Release"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Code Sign Identity Release"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Export Method Release"
+msgstr "匯出"
+
+#: platform/iphone/export/export.cpp
+msgid "Targeted Device Family"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Info"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Identifier"
+msgstr "無效字型"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Signature"
+msgstr "訊號"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Short Version"
+msgstr "版本:"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Copyright"
+msgstr "複製"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Capabilities"
+msgstr "內客"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Access Wi-Fi"
+msgstr "æˆåŠŸï¼"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Push Notifications"
+msgstr "貼上動畫"
+
+#: platform/iphone/export/export.cpp scene/3d/baked_lightmap.cpp
+#, fuzzy
+msgid "User Data"
+msgstr "開啟 Project Manager?"
+
+#: platform/iphone/export/export.cpp
+msgid "Accessible From Files App"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Accessible From Itunes Sharing"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Privacy"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Camera Usage Description"
+msgstr "æè¿°ï¼š"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Microphone Usage Description"
+msgstr "簡述:"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Photolibrary Usage Description"
+msgstr "簡述:"
+
+#: platform/iphone/export/export.cpp
+msgid "iPhone 120 X 120"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPhone 180 X 180"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 76 X 76"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 152 X 152"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 167 X 167"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "App Store 1024 X 1024"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Spotlight 40 X 40"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Spotlight 80 X 80"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Storyboard"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Use Launch Screen Storyboard"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Image Scale Mode"
+msgstr "鏿“‡æ¨¡å¼"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Custom Image @2x"
+msgstr "貼上"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Custom Image @3x"
+msgstr "貼上"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Use Custom BG Color"
+msgstr "貼上"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Custom BG Color"
+msgstr "貼上"
+
+#: platform/iphone/export/export.cpp
msgid "App Store Team ID not specified - cannot configure the project."
msgstr ""
@@ -18549,6 +19391,80 @@ msgstr "無法新增資料夾"
#: platform/javascript/export/export.cpp
#, fuzzy
+msgid "Variant"
+msgstr "翻譯:"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Export Type"
+msgstr "匯出"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "VRAM Texture Compression"
+msgstr "無干擾模å¼"
+
+#: platform/javascript/export/export.cpp
+msgid "For Desktop"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "For Mobile"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Html"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Export Icon"
+msgstr "全部展開"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Custom Html Shell"
+msgstr "貼上"
+
+#: platform/javascript/export/export.cpp
+msgid "Head Include"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Canvas Resize Policy"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Focus Canvas On Start"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Experimental Virtual Keyboard"
+msgstr "ç¯©é¸æª”案..."
+
+#: platform/javascript/export/export.cpp
+msgid "Progressive Web App"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Offline Page"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 144 X 144"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 180 X 180"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 512 X 512"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
msgid "Could not read HTML shell:"
msgstr "無法新增資料夾"
@@ -18662,6 +19578,199 @@ msgid "Unknown object type."
msgstr ""
#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "App Category"
+msgstr "分類:"
+
+#: platform/osx/export/export.cpp
+msgid "High Res"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Location Usage Description"
+msgstr "æè¿°ï¼š"
+
+#: platform/osx/export/export.cpp
+msgid "Address Book Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Calendar Usage Description"
+msgstr "æè¿°ï¼š"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Photos Library Usage Description"
+msgstr "簡述:"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Desktop Folder Usage Description"
+msgstr "æè¿°ï¼š"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Documents Folder Usage Description"
+msgstr "æè¿°ï¼š"
+
+#: platform/osx/export/export.cpp
+msgid "Downloads Folder Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Network Volumes Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Removable Volumes Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#, fuzzy
+msgid "Codesign"
+msgstr "貼上"
+
+#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
+#: platform/windows/export/export.cpp
+msgid "Identity"
+msgstr ""
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#, fuzzy
+msgid "Timestamp"
+msgstr "時間:"
+
+#: platform/osx/export/export.cpp
+msgid "Hardened Runtime"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Replace Existing Signature"
+msgstr "全部å–代"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Entitlements"
+msgstr "內容:"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Custom File"
+msgstr "貼上"
+
+#: platform/osx/export/export.cpp
+msgid "Allow JIT Code Execution"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Allow Unsigned Executable Memory"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Allow Dyld Environment Variables"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Disable Library Validation"
+msgstr "å·²åœç”¨"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Audio Input"
+msgstr "釿–°å‘½åAudio Bus"
+
+#: platform/osx/export/export.cpp
+msgid "Address Book"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Calendars"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Photos Library"
+msgstr "MeshLibrary..."
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Apple Events"
+msgstr "é‡è¨­ç¸®æ”¾æ¯”例"
+
+#: platform/osx/export/export.cpp
+msgid "Debugging"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "App Sandbox"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Network Server"
+msgstr "匯出"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Network Client"
+msgstr "匯出"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Device Usb"
+msgstr "設備"
+
+#: platform/osx/export/export.cpp
+msgid "Device Bluetooth"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Files Downloads"
+msgstr "下載"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Files Pictures"
+msgstr "ç¯©é¸æª”案..."
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Files Music"
+msgstr "檔案"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Files Movies"
+msgstr "ç¯©é¸æª”案..."
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#, fuzzy
+msgid "Custom Options"
+msgstr "é¸é …"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Notarization"
+msgstr "本地化"
+
+#: platform/osx/export/export.cpp
+msgid "Apple ID Name"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Apple ID Password"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Apple Team ID"
+msgstr ""
+
+#: platform/osx/export/export.cpp
msgid ""
"Note: The notarization process generally takes less than an hour. When the "
"process is completed, you'll receive an email."
@@ -18855,6 +19964,133 @@ msgid "Force Builtin Codesign"
msgstr ""
#: platform/uwp/export/export.cpp
+msgid "Architecture"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Display Name"
+msgstr "全部å–代"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Short Name"
+msgstr "腳本"
+
+#: platform/uwp/export/export.cpp
+msgid "Publisher"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Publisher Display Name"
+msgstr "無效å稱"
+
+#: platform/uwp/export/export.cpp
+msgid "Product Guid"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Publisher Guid"
+msgstr "é‹è¡Œå ´æ™¯"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Signing"
+msgstr "訊號"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Certificate"
+msgstr "內客"
+
+#: platform/uwp/export/export.cpp
+msgid "Algorithm"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Major"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Minor"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Build"
+msgstr "鏿“‡æ¨¡å¼"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Revision"
+msgstr "版本:"
+
+#: platform/uwp/export/export.cpp
+msgid "Landscape"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Portrait"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Landscape Flipped"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Portrait Flipped"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Store Logo"
+msgstr "鏿“‡æ¨¡å¼"
+
+#: platform/uwp/export/export.cpp
+msgid "Square 44 X 44 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 71 X 71 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 150 X 150 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 310 X 310 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Wide 310 X 150 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Splash Screen"
+msgstr "儲存場景"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Tiles"
+msgstr "檔案"
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Square 150 X 150"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Wide 310 X 150"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Square 310 X 310"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
#, fuzzy
msgid "Invalid package short name."
msgstr "無效å稱"
@@ -18926,11 +20162,48 @@ msgid "Debug Certificate"
msgstr ""
#: platform/uwp/export/export.cpp
-msgid "Debug Password"
+msgid "Debug Algorithm"
msgstr ""
-#: platform/uwp/export/export.cpp
-msgid "Debug Algorithm"
+#: platform/windows/export/export.cpp
+msgid "Identity Type"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Timestamp Server URL"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+msgid "Digest Algorithm"
+msgstr ""
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "File Version"
+msgstr "版本:"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Product Version"
+msgstr "無效字型"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Company Name"
+msgstr "Nodeå稱"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Product Name"
+msgstr "Groups"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "File Description"
+msgstr "æè¿°ï¼š"
+
+#: platform/windows/export/export.cpp
+msgid "Trademarks"
msgstr ""
#: platform/windows/export/export.cpp
@@ -19005,12 +20278,14 @@ msgstr "é‹è¡Œ"
msgid "Centered"
msgstr "ä¸é¸"
-#: scene/2d/animated_sprite.cpp scene/2d/camera_2d.cpp scene/2d/light_2d.cpp
+#: scene/2d/animated_sprite.cpp scene/2d/camera_2d.cpp
+#: scene/2d/cpu_particles_2d.cpp scene/2d/light_2d.cpp
#: scene/2d/parallax_background.cpp scene/2d/parallax_layer.cpp
#: scene/2d/path_2d.cpp scene/2d/polygon_2d.cpp scene/2d/sprite.cpp
-#: scene/3d/path.cpp scene/3d/physics_body.cpp scene/3d/sprite_3d.cpp
-#: scene/gui/graph_node.cpp scene/gui/rich_text_effect.cpp
-#: scene/main/canvas_layer.cpp scene/resources/material.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/path.cpp scene/3d/physics_body.cpp
+#: scene/3d/sprite_3d.cpp scene/gui/graph_node.cpp
+#: scene/gui/rich_text_effect.cpp scene/main/canvas_layer.cpp
+#: scene/resources/material.cpp scene/resources/particles_material.cpp
#: scene/resources/style_box.cpp
msgid "Offset"
msgstr ""
@@ -19082,11 +20357,6 @@ msgstr "移動 Audio Bus"
msgid "Override"
msgstr "覆蓋"
-#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
-#: scene/audio/audio_stream_player.cpp scene/gui/video_player.cpp
-msgid "Stream"
-msgstr ""
-
#: scene/2d/audio_stream_player_2d.cpp scene/audio/audio_stream_player.cpp
#: scene/gui/video_player.cpp servers/audio/effects/audio_effect_amplify.cpp
msgid "Volume dB"
@@ -19112,13 +20382,13 @@ msgid "Stream Paused"
msgstr ""
#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
-#: scene/3d/reflection_probe.cpp scene/3d/visual_instance.cpp
-#: scene/resources/material.cpp
+#: scene/3d/light.cpp scene/3d/reflection_probe.cpp
+#: scene/3d/visual_instance.cpp scene/resources/material.cpp
#, fuzzy
msgid "Max Distance"
msgstr "Instance"
-#: scene/2d/audio_stream_player_2d.cpp
+#: scene/2d/audio_stream_player_2d.cpp scene/3d/light.cpp
#, fuzzy
msgid "Attenuation"
msgstr "新增動畫"
@@ -19172,6 +20442,24 @@ msgstr "移動模å¼"
msgid "Limit"
msgstr ""
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/style_box.cpp
+#, fuzzy
+msgid "Left"
+msgstr "線性"
+
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/style_box.cpp
+#, fuzzy
+msgid "Right"
+msgstr "線性"
+
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/dynamic_font.cpp scene/resources/style_box.cpp
+#, fuzzy
+msgid "Bottom"
+msgstr "移除é¸é …"
+
#: scene/2d/camera_2d.cpp
msgid "Smoothed"
msgstr ""
@@ -19378,12 +20666,6 @@ msgstr ""
msgid "Emitting"
msgstr "設定"
-#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp scene/3d/area.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
-#: scene/resources/environment.cpp
-msgid "Amount"
-msgstr ""
-
#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp
#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
msgid "Lifetime"
@@ -19445,18 +20727,13 @@ msgstr ""
#: scene/2d/mesh_instance_2d.cpp scene/2d/multimesh_instance_2d.cpp
#: scene/2d/particles_2d.cpp scene/2d/polygon_2d.cpp scene/2d/sprite.cpp
#: scene/3d/sprite_3d.cpp scene/gui/nine_patch_rect.cpp
-#: scene/gui/texture_rect.cpp scene/resources/sky.cpp
-#: scene/resources/style_box.cpp scene/resources/visual_shader_nodes.cpp
+#: scene/gui/texture_rect.cpp scene/resources/material.cpp
+#: scene/resources/sky.cpp scene/resources/style_box.cpp
+#: scene/resources/visual_shader_nodes.cpp
#, fuzzy
msgid "Texture"
msgstr "文字"
-#: scene/2d/cpu_particles_2d.cpp scene/2d/mesh_instance_2d.cpp
-#: scene/2d/multimesh_instance_2d.cpp scene/2d/particles_2d.cpp
-#: scene/2d/sprite.cpp scene/resources/style_box.cpp
-msgid "Normal Map"
-msgstr ""
-
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
#, fuzzy
@@ -19477,9 +20754,8 @@ msgid "Normals"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/3d/sprite_3d.cpp scene/resources/material.cpp
-#: scene/resources/particles_material.cpp scene/resources/texture.cpp
-msgid "Flags"
+#: scene/resources/particles_material.cpp
+msgid "Align Y"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
@@ -19500,6 +20776,11 @@ msgid "Initial Velocity"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Velocity Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp servers/physics_2d_server.cpp
#: servers/physics_server.cpp
msgid "Angular Velocity"
@@ -19507,6 +20788,12 @@ msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Velocity Curve"
+msgstr "編輯Node Curve"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
msgid "Orbit Velocity"
msgstr ""
@@ -19518,6 +20805,23 @@ msgstr "線性"
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Accel"
+msgstr "æˆåŠŸï¼"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Accel Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Accel Curve"
+msgstr "編輯Node Curve"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
msgid "Radial Accel"
msgstr ""
@@ -19527,19 +20831,55 @@ msgid "Tangential Accel"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/2d/joints_2d.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/vehicle_body.cpp
-#: scene/resources/particles_material.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/physics_joint.cpp
+#: scene/3d/vehicle_body.cpp scene/resources/particles_material.cpp
#: servers/audio/effects/audio_effect_reverb.cpp
msgid "Damping"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+msgid "Damping Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Damping Curve"
+msgstr "編輯Node Curve"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp scene/3d/light.cpp
+#: scene/resources/particles_material.cpp
msgid "Angle"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+msgid "Angle Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Angle Curve"
+msgstr "編輯Node Curve"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#, fuzzy
+msgid "Scale Amount"
+msgstr "Instance"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+msgid "Scale Amount Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#, fuzzy
+msgid "Scale Amount Curve"
+msgstr "由鼠標縮放"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
msgid "Color Ramp"
msgstr ""
@@ -19554,6 +20894,47 @@ msgstr ""
msgid "Hue Variation"
msgstr "翻譯:"
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Variation"
+msgstr "翻譯:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Variation Random"
+msgstr "翻譯:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Variation Curve"
+msgstr "翻譯:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Speed Random"
+msgstr "鏿“‡æ¨¡å¼"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Speed Curve"
+msgstr "編輯Node Curve"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Offset Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Offset Curve"
+msgstr "編輯Node Curve"
+
#: scene/2d/joints_2d.cpp
msgid "Node A and Node B must be PhysicsBody2Ds"
msgstr ""
@@ -19585,6 +20966,7 @@ msgid "Node B"
msgstr "貼上"
#: scene/2d/joints_2d.cpp scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp
+#: scene/3d/light.cpp scene/3d/physics_joint.cpp
#: scene/resources/environment.cpp
msgid "Bias"
msgstr ""
@@ -19594,7 +20976,7 @@ msgstr ""
msgid "Disable Collision"
msgstr "å·²åœç”¨"
-#: scene/2d/joints_2d.cpp
+#: scene/2d/joints_2d.cpp scene/3d/physics_joint.cpp
msgid "Softness"
msgstr ""
@@ -19611,7 +20993,7 @@ msgstr ""
msgid "Rest Length"
msgstr ""
-#: scene/2d/joints_2d.cpp scene/3d/vehicle_body.cpp
+#: scene/2d/joints_2d.cpp scene/3d/physics_joint.cpp scene/3d/vehicle_body.cpp
msgid "Stiffness"
msgstr ""
@@ -19631,7 +21013,7 @@ msgid "Texture Scale"
msgstr ""
#: scene/2d/light_2d.cpp scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp
-#: scene/resources/environment.cpp scene/resources/sky.cpp
+#: scene/3d/light.cpp scene/resources/environment.cpp scene/resources/sky.cpp
msgid "Energy"
msgstr ""
@@ -19669,12 +21051,6 @@ msgstr "設定"
msgid "Gradient Length"
msgstr "é è¨­"
-#: scene/2d/light_2d.cpp scene/gui/control.cpp
-#: scene/resources/navigation_mesh.cpp
-#, fuzzy
-msgid "Filter"
-msgstr "篩é¸:"
-
#: scene/2d/light_2d.cpp
#, fuzzy
msgid "Filter Smooth"
@@ -20073,10 +21449,6 @@ msgid "Applied Forces"
msgstr ""
#: scene/2d/physics_body_2d.cpp
-msgid "Force"
-msgstr ""
-
-#: scene/2d/physics_body_2d.cpp
msgid "Torque"
msgstr ""
@@ -20090,7 +21462,7 @@ msgid "Sync To Physics"
msgstr "物ç†å¹€ %"
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
-msgid "Moving platform"
+msgid "Moving Platform"
msgstr ""
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
@@ -20099,7 +21471,7 @@ msgstr ""
#: scene/2d/physics_body_2d.cpp scene/2d/touch_screen_button.cpp
#: scene/3d/physics_body.cpp scene/gui/texture_button.cpp
-#: scene/resources/line_shape_2d.cpp
+#: scene/resources/line_shape_2d.cpp scene/resources/material.cpp
msgid "Normal"
msgstr ""
@@ -20328,6 +21700,34 @@ msgid ""
"as parent."
msgstr ""
+#: scene/2d/visibility_notifier_2d.cpp scene/3d/visibility_notifier.cpp
+#, fuzzy
+msgid "Pause Animations"
+msgstr "貼上動畫"
+
+#: scene/2d/visibility_notifier_2d.cpp scene/3d/visibility_notifier.cpp
+msgid "Freeze Bodies"
+msgstr ""
+
+#: scene/2d/visibility_notifier_2d.cpp
+#, fuzzy
+msgid "Pause Particles"
+msgstr "è²¼ä¸Šåƒæ•¸"
+
+#: scene/2d/visibility_notifier_2d.cpp
+#, fuzzy
+msgid "Pause Animated Sprites"
+msgstr "貼上動畫"
+
+#: scene/2d/visibility_notifier_2d.cpp
+#, fuzzy
+msgid "Process Parent"
+msgstr "檔案"
+
+#: scene/2d/visibility_notifier_2d.cpp
+msgid "Physics Process Parent"
+msgstr ""
+
#: scene/3d/area.cpp
msgid "Reverb Bus"
msgstr ""
@@ -20422,6 +21822,7 @@ msgid "Attenuation Filter"
msgstr ""
#: scene/3d/audio_stream_player_3d.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
#: servers/audio/effects/audio_effect_filter.cpp
msgid "Cutoff Hz"
msgstr ""
@@ -20463,11 +21864,6 @@ msgid "Octree"
msgstr ""
#: scene/3d/baked_lightmap.cpp
-#, fuzzy
-msgid "User Data"
-msgstr "開啟 Project Manager?"
-
-#: scene/3d/baked_lightmap.cpp
msgid "Finding meshes and lights"
msgstr ""
@@ -20717,6 +22113,16 @@ msgid "Ring Axis"
msgstr "警告"
#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Rotate Y"
+msgstr "本地化"
+
+#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Disable Z"
+msgstr "å·²åœç”¨"
+
+#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
msgid "Flatness"
msgstr ""
@@ -20756,16 +22162,11 @@ msgstr "MeshLibrary..."
msgid "Dynamic Range"
msgstr "MeshLibrary..."
-#: scene/3d/gi_probe.cpp
+#: scene/3d/gi_probe.cpp scene/3d/light.cpp
msgid "Normal Bias"
msgstr ""
#: scene/3d/gi_probe.cpp
-#, fuzzy
-msgid "Compress"
-msgstr "內容:"
-
-#: scene/3d/gi_probe.cpp
msgid "Plotting Meshes"
msgstr ""
@@ -20791,16 +22192,30 @@ msgid "Subdiv"
msgstr ""
#: scene/3d/light.cpp
+msgid "Indirect Energy"
+msgstr ""
+
+#: scene/3d/light.cpp
msgid "Negative"
msgstr ""
#: scene/3d/light.cpp
#, fuzzy
+msgid "Specular"
+msgstr "鏿“‡æ¨¡å¼"
+
+#: scene/3d/light.cpp
+#, fuzzy
msgid "Bake Mode"
msgstr "鏿“‡æ¨¡å¼"
#: scene/3d/light.cpp
#, fuzzy
+msgid "Contact"
+msgstr "內容:"
+
+#: scene/3d/light.cpp
+#, fuzzy
msgid "Reverse Cull Face"
msgstr "é‡è¨­ç¸®æ”¾æ¯”例"
@@ -20810,11 +22225,31 @@ msgid "Directional Shadow"
msgstr "æè¿°ï¼š"
#: scene/3d/light.cpp
+#, fuzzy
+msgid "Split 1"
+msgstr "編輯Node Curve"
+
+#: scene/3d/light.cpp
+#, fuzzy
+msgid "Split 2"
+msgstr "編輯Node Curve"
+
+#: scene/3d/light.cpp
+#, fuzzy
+msgid "Split 3"
+msgstr "編輯Node Curve"
+
+#: scene/3d/light.cpp
msgid "Blend Splits"
msgstr ""
#: scene/3d/light.cpp
#, fuzzy
+msgid "Bias Split Scale"
+msgstr "下一個腳本"
+
+#: scene/3d/light.cpp
+#, fuzzy
msgid "Depth Range"
msgstr "鏿“‡æ¨¡å¼"
@@ -20840,6 +22275,11 @@ msgstr ""
msgid "Spot"
msgstr ""
+#: scene/3d/light.cpp
+#, fuzzy
+msgid "Angle Attenuation"
+msgstr "新增動畫"
+
#: scene/3d/mesh_instance.cpp
msgid "Software Skinning"
msgstr ""
@@ -20962,6 +22402,63 @@ msgid "Axis Lock"
msgstr "中軸"
#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Linear X"
+msgstr "線性"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Linear Y"
+msgstr "線性"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Linear Z"
+msgstr "線性"
+
+#: scene/3d/physics_body.cpp
+msgid "Angular X"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Angular Y"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Angular Z"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Motion X"
+msgstr "行為"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Motion Y"
+msgstr "行為"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Motion Z"
+msgstr "行為"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Move Lock X"
+msgstr "移動模å¼"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Move Lock Y"
+msgstr "移動模å¼"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Move Lock Z"
+msgstr "移動模å¼"
+
+#: scene/3d/physics_body.cpp
msgid "Body Offset"
msgstr ""
@@ -20995,6 +22492,15 @@ msgid "Exclude Nodes"
msgstr "ä¸é¸"
#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Params"
+msgstr "當改變時更新"
+
+#: scene/3d/physics_joint.cpp
+msgid "Impulse Clamp"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit"
msgstr ""
@@ -21006,6 +22512,55 @@ msgstr ""
msgid "Lower"
msgstr ""
+#: scene/3d/physics_joint.cpp scene/3d/vehicle_body.cpp
+#, fuzzy
+msgid "Relaxation"
+msgstr "翻譯:"
+
+#: scene/3d/physics_joint.cpp
+msgid "Motor"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Target Velocity"
+msgstr "線性"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Max Impulse"
+msgstr "管ç†è¼¸å‡ºç¯„本"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit"
+msgstr "線性"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Upper Distance"
+msgstr "Instance"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Lower Distance"
+msgstr "Instance"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Restitution"
+msgstr "æè¿°ï¼š"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motion"
+msgstr "線性"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Ortho"
+msgstr "線性"
+
#: scene/3d/physics_joint.cpp
msgid "Upper Angle"
msgstr ""
@@ -21016,6 +22571,16 @@ msgstr ""
#: scene/3d/physics_joint.cpp
#, fuzzy
+msgid "Angular Motion"
+msgstr "新增動畫"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Angular Ortho"
+msgstr "最大的角度錯誤:"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
msgid "Swing Span"
msgstr "場景儲存中"
@@ -21024,17 +22589,98 @@ msgid "Twist Span"
msgstr ""
#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit X"
+msgstr "線性"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motor X"
+msgstr "線性"
+
+#: scene/3d/physics_joint.cpp
+msgid "Force Limit"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Spring X"
+msgstr "線性"
+
+#: scene/3d/physics_joint.cpp
+msgid "Equilibrium Point"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit X"
msgstr ""
#: scene/3d/physics_joint.cpp
+msgid "Erp"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Motor X"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Spring X"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit Y"
+msgstr "線性"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motor Y"
+msgstr "線性"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Spring Y"
+msgstr "線性"
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit Y"
msgstr ""
#: scene/3d/physics_joint.cpp
+msgid "Angular Motor Y"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Spring Y"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit Z"
+msgstr "線性"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motor Z"
+msgstr "線性"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Spring Z"
+msgstr "線性"
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit Z"
msgstr ""
+#: scene/3d/physics_joint.cpp
+msgid "Angular Motor Z"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Spring Z"
+msgstr ""
+
#: scene/3d/portal.cpp
msgid "The RoomManager should not be a child or grandchild of a Portal."
msgstr ""
@@ -21148,7 +22794,7 @@ msgstr ""
msgid "Use Default Simplify"
msgstr ""
-#: scene/3d/room.cpp
+#: scene/3d/room.cpp scene/3d/room_manager.cpp
msgid "Room Simplify"
msgstr ""
@@ -21187,6 +22833,13 @@ msgstr ""
msgid "Main"
msgstr ""
+#: scene/3d/room_manager.cpp scene/animation/animation_player.cpp
+#: scene/animation/animation_tree.cpp scene/animation/animation_tree_player.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+#, fuzzy
+msgid "Active"
+msgstr "行為"
+
#: scene/3d/room_manager.cpp
msgid "Roomlist"
msgstr ""
@@ -21210,6 +22863,52 @@ msgid "Gameplay"
msgstr ""
#: scene/3d/room_manager.cpp
+msgid "Gameplay Monitor"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "Use Secondary PVS"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Merge Meshes"
+msgstr "篩é¸:"
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Show Margins"
+msgstr "檔案系統"
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Debug Sprawl"
+msgstr "線性"
+
+#: scene/3d/room_manager.cpp
+msgid "Overlap Warning Threshold"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Preview Camera"
+msgstr "é è¦½:"
+
+#: scene/3d/room_manager.cpp
+msgid "Portal Depth Limit"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Default Portal Margin"
+msgstr "é è¨­"
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Roaming Expansion Margin"
+msgstr "全部展開"
+
+#: scene/3d/room_manager.cpp
msgid ""
"RoomList path is invalid.\n"
"Please check the RoomList branch has been assigned in the RoomManager."
@@ -21331,6 +23030,20 @@ msgstr ""
msgid "Billboard"
msgstr ""
+#: scene/3d/sprite_3d.cpp scene/resources/material.cpp
+#, fuzzy
+msgid "Transparent"
+msgstr "翻譯"
+
+#: scene/3d/sprite_3d.cpp
+#, fuzzy
+msgid "Shaded"
+msgstr "當改變時更新"
+
+#: scene/3d/sprite_3d.cpp
+msgid "Double Sided"
+msgstr ""
+
#: scene/3d/sprite_3d.cpp
msgid "Alpha Cut"
msgstr ""
@@ -21400,11 +23113,6 @@ msgstr ""
msgid "Max Force"
msgstr "錯誤!"
-#: scene/3d/vehicle_body.cpp
-#, fuzzy
-msgid "Relaxation"
-msgstr "翻譯:"
-
#: scene/3d/visibility_notifier.cpp
msgid "AABB"
msgstr ""
@@ -21537,7 +23245,7 @@ msgstr ""
#: scene/animation/animation_blend_tree.cpp
#, fuzzy
-msgid "autorestart_"
+msgid "Auto Restart"
msgstr "儲存檔案"
#: scene/animation/animation_blend_tree.cpp
@@ -21621,13 +23329,6 @@ msgstr "æè¿°ï¼š"
msgid "Default Blend Time"
msgstr "é è¨­"
-#: scene/animation/animation_player.cpp scene/animation/animation_tree.cpp
-#: scene/animation/animation_tree_player.cpp
-#: servers/audio/effects/audio_effect_delay.cpp
-#, fuzzy
-msgid "Active"
-msgstr "行為"
-
#: scene/animation/animation_player.cpp
msgid "Method Call Mode"
msgstr ""
@@ -21752,10 +23453,6 @@ msgstr "目標"
msgid "Max Iterations"
msgstr "åªé™é¸ä¸­"
-#: scene/animation/tween.cpp scene/resources/texture.cpp
-msgid "Repeat"
-msgstr ""
-
#: scene/animation/tween.cpp
msgid "Playback Process Mode"
msgstr ""
@@ -21786,20 +23483,6 @@ msgstr "鏿“‡æ¨¡å¼"
msgid "Alignment"
msgstr ""
-#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
-#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
-#: scene/resources/style_box.cpp
-#, fuzzy
-msgid "Horizontal"
-msgstr "åªé™é¸ä¸­"
-
-#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
-#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
-#: scene/resources/style_box.cpp
-#, fuzzy
-msgid "Vertical"
-msgstr "新增"
-
#: scene/gui/base_button.cpp
msgid "Shortcut In Tooltip"
msgstr ""
@@ -21895,10 +23578,6 @@ msgid "HSV"
msgstr ""
#: scene/gui/color_picker.cpp
-msgid "Raw"
-msgstr ""
-
-#: scene/gui/color_picker.cpp
msgid "Switch between hexadecimal and code values."
msgstr ""
@@ -21956,6 +23635,31 @@ msgid "Focus"
msgstr ""
#: scene/gui/control.cpp
+msgid "Neighbour Left"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Neighbour Top"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Neighbour Right"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Neighbour Bottom"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Next"
+msgstr "下一個"
+
+#: scene/gui/control.cpp
+#, fuzzy
+msgid "Previous"
+msgstr "上一個tab"
+
+#: scene/gui/control.cpp
msgid "Mouse"
msgstr ""
@@ -21991,7 +23695,7 @@ msgid "Dialog"
msgstr ""
#: scene/gui/dialogs.cpp
-msgid "Hide On Ok"
+msgid "Hide On OK"
msgstr ""
#: scene/gui/dialogs.cpp scene/gui/label.cpp
@@ -22087,7 +23791,7 @@ msgid "Timers"
msgstr "時間:"
#: scene/gui/item_list.cpp scene/gui/popup_menu.cpp scene/gui/tree.cpp
-msgid "Incremental Search Max Interval (msec)"
+msgid "Incremental Search Max Interval Msec"
msgstr ""
#: scene/gui/item_list.cpp scene/gui/tree.cpp
@@ -22641,6 +24345,26 @@ msgstr "ä¸é¸"
msgid "Nine Patch Stretch"
msgstr "模å¼"
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Left"
+msgstr "鏿“‡æ¨¡å¼"
+
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Top"
+msgstr "鏿“‡æ¨¡å¼"
+
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Right"
+msgstr "鏿“‡æ¨¡å¼"
+
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Bottom"
+msgstr "鏿“‡æ¨¡å¼"
+
#: scene/gui/tree.cpp
msgid "Custom Minimum Height"
msgstr ""
@@ -22678,8 +24402,9 @@ msgid "Paused"
msgstr ""
#: scene/gui/video_player.cpp
-msgid "Buffering (msec)"
-msgstr ""
+#, fuzzy
+msgid "Buffering Msec"
+msgstr "設定"
#: scene/gui/video_player.cpp
#, fuzzy
@@ -23017,6 +24742,22 @@ msgid "Shadow Atlas"
msgstr ""
#: scene/main/viewport.cpp
+msgid "Quad 0"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 1"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 2"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 3"
+msgstr ""
+
+#: scene/main/viewport.cpp
#, fuzzy
msgid "Canvas Transform"
msgstr "å‹•ç•«è®ŠåŒ–éŽæ¸¡"
@@ -23031,6 +24772,11 @@ msgid "Tooltip Delay (sec)"
msgstr ""
#: scene/register_scene_types.cpp
+#, fuzzy
+msgid "Swap OK Cancel"
+msgstr "å–æ¶ˆ"
+
+#: scene/register_scene_types.cpp
msgid "Use hiDPI"
msgstr ""
@@ -23045,21 +24791,6 @@ msgid "Custom Font"
msgstr "貼上"
#: scene/resources/audio_stream_sample.cpp
-#, fuzzy
-msgid "Loop Mode"
-msgstr "移動模å¼"
-
-#: scene/resources/audio_stream_sample.cpp
-#, fuzzy
-msgid "Loop Begin"
-msgstr "移動模å¼"
-
-#: scene/resources/audio_stream_sample.cpp
-#, fuzzy
-msgid "Loop End"
-msgstr "移動模å¼"
-
-#: scene/resources/audio_stream_sample.cpp
#: servers/audio/effects/audio_stream_generator.cpp servers/audio_server.cpp
msgid "Mix Rate"
msgstr ""
@@ -23115,6 +24846,16 @@ msgid "Extra Spacing"
msgstr "æè¿°ï¼š"
#: scene/resources/dynamic_font.cpp
+#, fuzzy
+msgid "Char"
+msgstr "有效字符:"
+
+#: scene/resources/dynamic_font.cpp scene/resources/world.cpp
+#: scene/resources/world_2d.cpp
+msgid "Space"
+msgstr ""
+
+#: scene/resources/dynamic_font.cpp
msgid "Font"
msgstr ""
@@ -23335,6 +25076,43 @@ msgid "Glow"
msgstr ""
#: scene/resources/environment.cpp
+#, fuzzy
+msgid "Levels"
+msgstr "開發者"
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "1"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "2"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "3"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "4"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "5"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "6"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "7"
+msgstr ""
+
+#: scene/resources/environment.cpp
msgid "Bloom"
msgstr ""
@@ -23423,9 +25201,66 @@ msgid "Next Pass"
msgstr "下一個"
#: scene/resources/material.cpp
+msgid "Use Shadow To Opacity"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Unshaded"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Vertex Lighting"
+msgstr "æè¿°ï¼š"
+
+#: scene/resources/material.cpp
+msgid "No Depth Test"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Use Point Size"
+msgstr "下一個腳本"
+
+#: scene/resources/material.cpp
+msgid "World Triplanar"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Fixed Size"
+msgstr "下一個腳本"
+
+#: scene/resources/material.cpp
+msgid "Albedo Tex Force sRGB"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Do Not Receive Shadows"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Disable Ambient Light"
+msgstr "å·²åœç”¨"
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Ensure Correct Normals"
+msgstr "縮放selection"
+
+#: scene/resources/material.cpp
msgid "Vertex Color"
msgstr ""
+#: scene/resources/material.cpp
+msgid "Use As Albedo"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Is sRGB"
+msgstr ""
+
#: scene/resources/material.cpp servers/visual_server.cpp
#, fuzzy
msgid "Parameters"
@@ -23462,6 +25297,11 @@ msgid "Billboard Mode"
msgstr "鏿“‡æ¨¡å¼"
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Billboard Keep Scale"
+msgstr "鏿“‡æ¨¡å¼"
+
+#: scene/resources/material.cpp
msgid "Grow"
msgstr ""
@@ -23471,6 +25311,10 @@ msgid "Grow Amount"
msgstr "åªé™é¸ä¸­"
#: scene/resources/material.cpp
+msgid "Use Alpha Scissor"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Alpha Scissor Threshold"
msgstr ""
@@ -23502,10 +25346,20 @@ msgid "Metallic Specular"
msgstr ""
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Metallic Texture"
+msgstr "移除é¸é …"
+
+#: scene/resources/material.cpp
msgid "Metallic Texture Channel"
msgstr ""
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Roughness Texture"
+msgstr "移除é¸é …"
+
+#: scene/resources/material.cpp
msgid "Roughness Texture Channel"
msgstr ""
@@ -23522,6 +25376,16 @@ msgid "Emission Operator"
msgstr ""
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Emission On UV2"
+msgstr "å¯è¦‹ç¢°æ’žåœ–å½¢"
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Emission Texture"
+msgstr "文字"
+
+#: scene/resources/material.cpp
msgid "NormalMap"
msgstr ""
@@ -23535,6 +25399,11 @@ msgstr ""
#: scene/resources/material.cpp
#, fuzzy
+msgid "Rim Texture"
+msgstr "移除é¸é …"
+
+#: scene/resources/material.cpp
+#, fuzzy
msgid "Clearcoat"
msgstr "清空"
@@ -23544,15 +25413,28 @@ msgid "Clearcoat Gloss"
msgstr "é‹è¡Œå ´æ™¯"
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Clearcoat Texture"
+msgstr "檔案"
+
+#: scene/resources/material.cpp
msgid "Anisotropy"
msgstr ""
#: scene/resources/material.cpp
+msgid "Anisotropy Flowmap"
+msgstr ""
+
+#: scene/resources/material.cpp
#, fuzzy
msgid "Ambient Occlusion"
msgstr "æ’ä»¶"
#: scene/resources/material.cpp
+msgid "On UV2"
+msgstr ""
+
+#: scene/resources/material.cpp
#, fuzzy
msgid "Texture Channel"
msgstr "鏿“‡æ¨¡å¼"
@@ -23589,6 +25471,11 @@ msgstr "éŽæ¸¡"
#: scene/resources/material.cpp
#, fuzzy
+msgid "Transmission Texture"
+msgstr "éŽæ¸¡"
+
+#: scene/resources/material.cpp
+#, fuzzy
msgid "Refraction"
msgstr "翻譯:"
@@ -23605,6 +25492,10 @@ msgid "UV1"
msgstr ""
#: scene/resources/material.cpp
+msgid "Triplanar"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Triplanar Sharpness"
msgstr ""
@@ -23808,6 +25699,16 @@ msgstr "檔案"
msgid "Point Count"
msgstr "新增訊號"
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Scale Random"
+msgstr "縮放比例:"
+
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Scale Curve"
+msgstr "編輯Node Curve"
+
#: scene/resources/physics_material.cpp
msgid "Rough"
msgstr ""
@@ -23866,10 +25767,6 @@ msgid "A"
msgstr ""
#: scene/resources/shader.cpp
-msgid "Code"
-msgstr ""
-
-#: scene/resources/shader.cpp
#, fuzzy
msgid "Custom Defines"
msgstr "é‹è¡Œå ´æ™¯"
@@ -23962,14 +25859,6 @@ msgid "Grow End"
msgstr ""
#: scene/resources/texture.cpp
-msgid "Storage"
-msgstr ""
-
-#: scene/resources/texture.cpp
-msgid "Lossy Quality"
-msgstr ""
-
-#: scene/resources/texture.cpp
#, fuzzy
msgid "Load Path"
msgstr "載入錯誤"
@@ -24097,10 +25986,6 @@ msgstr "無效的函å¼é¡žåž‹å°æ¯”。"
msgid "Fallback Environment"
msgstr ""
-#: scene/resources/world.cpp scene/resources/world_2d.cpp
-msgid "Space"
-msgstr ""
-
#: scene/resources/world.cpp
#, fuzzy
msgid "Scenario"
@@ -24177,8 +26062,34 @@ msgstr ""
msgid "Wet"
msgstr ""
-#: servers/audio/effects/audio_effect_compressor.cpp
-msgid "Threshold"
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "Voice"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+msgid "Delay (ms)"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_phaser.cpp
+msgid "Rate Hz"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#, fuzzy
+msgid "Depth (ms)"
+msgstr "鏿“‡æ¨¡å¼"
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+msgid "Level dB"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+#: servers/audio/effects/audio_effect_panner.cpp
+msgid "Pan"
msgstr ""
#: servers/audio/effects/audio_effect_compressor.cpp
@@ -24203,19 +26114,6 @@ msgid "Tap 1"
msgstr ""
#: servers/audio/effects/audio_effect_delay.cpp
-msgid "Delay (ms)"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_delay.cpp
-msgid "Level dB"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_delay.cpp
-#: servers/audio/effects/audio_effect_panner.cpp
-msgid "Pan"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_delay.cpp
msgid "Tap 2"
msgstr ""
@@ -24275,10 +26173,6 @@ msgstr ""
msgid "Range Max Hz"
msgstr ""
-#: servers/audio/effects/audio_effect_phaser.cpp
-msgid "Rate Hz"
-msgstr ""
-
#: servers/audio/effects/audio_effect_pitch_shift.cpp
msgid "Oversampling"
msgstr ""
@@ -24294,7 +26188,7 @@ msgid "Predelay"
msgstr ""
#: servers/audio/effects/audio_effect_reverb.cpp
-msgid "(msec)"
+msgid "Msec"
msgstr ""
#: servers/audio/effects/audio_effect_reverb.cpp
diff --git a/editor/translations/zh_TW.po b/editor/translations/zh_TW.po
index b94f4dfe35..ee2c22c535 100644
--- a/editor/translations/zh_TW.po
+++ b/editor/translations/zh_TW.po
@@ -45,7 +45,7 @@ msgstr ""
"Plural-Forms: nplurals=1; plural=0;\n"
"X-Generator: Weblate 4.11-dev\n"
-#: core/bind/core_bind.cpp
+#: core/bind/core_bind.cpp main/main.cpp
msgid "Tablet Driver"
msgstr ""
@@ -149,8 +149,8 @@ msgstr "åœé§åˆ—ä½ç½®"
#: core/bind/core_bind.cpp editor/editor_settings.cpp main/main.cpp
#: modules/gdscript/gdscript_editor.cpp modules/gridmap/grid_map.cpp
#: modules/mono/csharp_script.cpp modules/visual_script/visual_script_nodes.cpp
-#: scene/2d/tile_map.cpp scene/3d/camera.cpp scene/gui/control.cpp
-#: scene/gui/graph_edit.cpp scene/main/viewport.cpp
+#: scene/2d/tile_map.cpp scene/3d/camera.cpp scene/3d/light.cpp
+#: scene/gui/control.cpp scene/gui/graph_edit.cpp scene/main/viewport.cpp
#: scene/resources/dynamic_font.cpp scene/resources/navigation_mesh.cpp
#: scene/resources/primitive_meshes.cpp scene/resources/sky.cpp
#: scene/resources/style_box.cpp scene/resources/texture.cpp
@@ -255,8 +255,7 @@ msgid "Data"
msgstr "åŒ…å«æ•¸æ“š"
#: core/io/file_access_network.cpp core/register_core_types.cpp
-#: editor/editor_settings.cpp editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp main/main.cpp
+#: editor/editor_settings.cpp main/main.cpp
#: modules/gdscript/language_server/gdscript_language_server.cpp
#, fuzzy
msgid "Network"
@@ -540,9 +539,10 @@ msgstr "é è¨­è¨­å®š"
msgid "Relative"
msgstr "相å°å¸é™„"
-#: core/os/input_event.cpp scene/2d/camera_2d.cpp
-#: scene/3d/interpolated_camera.cpp scene/animation/animation_player.cpp
-#: scene/resources/environment.cpp
+#: core/os/input_event.cpp scene/2d/camera_2d.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/interpolated_camera.cpp
+#: scene/animation/animation_player.cpp scene/resources/environment.cpp
+#: scene/resources/particles_material.cpp
#, fuzzy
msgid "Speed"
msgstr "速度:"
@@ -592,8 +592,9 @@ msgstr "æäº¤æ”¹å‹•"
msgid "Pitch"
msgstr "仰角:"
-#: core/os/input_event.cpp scene/2d/physics_body_2d.cpp
-#: scene/3d/physics_body.cpp
+#: core/os/input_event.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/physics_body_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/3d/physics_body.cpp scene/resources/particles_material.cpp
#, fuzzy
msgid "Velocity"
msgstr "å‘å³ç’°è¦–"
@@ -612,6 +613,8 @@ msgid "Controller Value"
msgstr ""
#: core/project_settings.cpp editor/editor_node.cpp main/main.cpp
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/windows/export/export.cpp
#, fuzzy
msgid "Application"
msgstr "æ“作"
@@ -630,13 +633,16 @@ msgstr "專案設定..."
#: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp
#: editor/editor_plugin_settings.cpp editor/editor_profiler.cpp
#: editor/project_manager.cpp editor/settings_config_dialog.cpp
-#: modules/gdnative/nativescript/nativescript.cpp scene/2d/area_2d.cpp
-#: scene/3d/area.cpp scene/main/node.cpp
+#: modules/gdnative/nativescript/nativescript.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/osx/export/export.cpp scene/2d/area_2d.cpp scene/3d/area.cpp
+#: scene/main/node.cpp
msgid "Name"
msgstr "å稱"
#: core/project_settings.cpp editor/editor_help.cpp
-#: modules/visual_script/visual_script_nodes.cpp
+#: modules/visual_script/visual_script_nodes.cpp platform/uwp/export/export.cpp
+#: platform/windows/export/export.cpp
msgid "Description"
msgstr "說明"
@@ -674,7 +680,7 @@ msgid "Custom User Dir Name"
msgstr ""
#: core/project_settings.cpp editor/animation_track_editor.cpp
-#: editor/editor_audio_buses.cpp servers/audio_server.cpp
+#: editor/editor_audio_buses.cpp main/main.cpp servers/audio_server.cpp
msgid "Audio"
msgstr "音訊"
@@ -842,10 +848,13 @@ msgstr "篩é¸ï¼š"
msgid "Sharpen Intensity"
msgstr ""
-#: core/project_settings.cpp editor/editor_node.cpp editor/editor_settings.cpp
-#: editor/plugins/script_editor_plugin.cpp editor/project_export.cpp
-#: main/main.cpp modules/gdscript/gdscript.cpp
-#: modules/visual_script/visual_script.cpp scene/3d/room_manager.cpp
+#: core/project_settings.cpp editor/editor_export.cpp editor/editor_node.cpp
+#: editor/editor_settings.cpp editor/plugins/script_editor_plugin.cpp
+#: editor/project_export.cpp main/main.cpp modules/gdscript/gdscript.cpp
+#: modules/visual_script/visual_script.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp scene/3d/room_manager.cpp
#: scene/main/scene_tree.cpp scene/resources/shape_2d.cpp
#: servers/visual_server.cpp
msgid "Debug"
@@ -1081,6 +1090,7 @@ msgid "Subsurface Scattering"
msgstr ""
#: drivers/gles3/rasterizer_scene_gles3.cpp
+#: editor/import/resource_importer_texture.cpp
#: editor/plugins/spatial_editor_plugin.cpp modules/gltf/gltf_node.cpp
#: modules/gridmap/grid_map.cpp scene/2d/cpu_particles_2d.cpp
#: scene/2d/node_2d.cpp scene/2d/parallax_layer.cpp scene/2d/polygon_2d.cpp
@@ -1379,6 +1389,7 @@ msgid "Editors"
msgstr "編輯器"
#: editor/animation_track_editor.cpp editor/editor_settings.cpp
+#: editor/import/resource_importer_scene.cpp
#: editor/plugins/animation_player_editor_plugin.cpp editor/scene_tree_dock.cpp
#: scene/2d/animated_sprite.cpp scene/2d/cpu_particles_2d.cpp
#: scene/2d/sprite.cpp scene/3d/cpu_particles.cpp scene/3d/sprite_3d.cpp
@@ -1607,14 +1618,14 @@ msgstr "動畫步進值。"
msgid "Seconds"
msgstr "ç§’"
-#: editor/animation_track_editor.cpp
+#: editor/animation_track_editor.cpp editor/import/resource_importer_scene.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp main/main.cpp
#: scene/resources/texture.cpp
msgid "FPS"
msgstr "FPS"
#: editor/animation_track_editor.cpp editor/editor_plugin_settings.cpp
-#: editor/editor_resource_picker.cpp
+#: editor/editor_resource_picker.cpp editor/import/resource_importer_wav.cpp
#: editor/plugins/polygon_2d_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
@@ -2569,7 +2580,9 @@ msgid "Remove Autoload"
msgstr "刪除 Autoload"
#: editor/editor_autoload_settings.cpp editor/editor_plugin_settings.cpp
-#: modules/gdscript/gdscript.cpp scene/2d/polygon_2d.cpp scene/3d/area.cpp
+#: modules/gdscript/gdscript.cpp platform/android/export/export_plugin.cpp
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#: scene/2d/polygon_2d.cpp scene/3d/area.cpp scene/3d/physics_joint.cpp
#: scene/3d/reflection_probe.cpp scene/main/canvas_layer.cpp
#: scene/resources/material.cpp servers/visual_server.cpp
msgid "Enable"
@@ -2734,6 +2747,58 @@ msgstr ""
#: editor/editor_export.cpp platform/android/export/export_plugin.cpp
#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Custom Template"
+msgstr "編輯器主題"
+
+#: editor/editor_export.cpp editor/project_export.cpp
+#: platform/android/export/export_plugin.cpp platform/iphone/export/export.cpp
+#: platform/javascript/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp
+msgid "Release"
+msgstr "發行"
+
+#: editor/editor_export.cpp
+#, fuzzy
+msgid "Binary Format"
+msgstr "色彩é‹ç®—å­ã€‚"
+
+#: editor/editor_export.cpp
+msgid "64 Bits"
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Embed PCK"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Texture Format"
+msgstr "ç´‹ç†è²¼åœ–å€åŸŸ"
+
+#: editor/editor_export.cpp
+msgid "BPTC"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "S3TC"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "ETC"
+msgstr ""
+
+#: editor/editor_export.cpp platform/osx/export/export.cpp
+msgid "ETC2"
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "No BPTC Fallbacks"
+msgstr ""
+
+#: editor/editor_export.cpp platform/android/export/export_plugin.cpp
+#: platform/iphone/export/export.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
msgid "Custom debug template not found."
msgstr "找ä¸åˆ°è‡ªå®šç¾©åµéŒ¯æ¨£æ¿ã€‚"
@@ -2907,6 +2972,7 @@ msgid "Make Current"
msgstr "設為目å‰çš„"
#: editor/editor_feature_profile.cpp editor/editor_node.cpp
+#: editor/import/resource_importer_scene.cpp
#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
msgid "Import"
msgstr "匯入"
@@ -3034,8 +3100,11 @@ msgstr "æˆåŠŸï¼"
msgid "Display Mode"
msgstr "播放模å¼ï¼š"
-#: editor/editor_file_dialog.cpp main/main.cpp modules/csg/csg_shape.cpp
-#: modules/visual_script/visual_script_nodes.cpp
+#: editor/editor_file_dialog.cpp
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+#: editor/import/resource_importer_wav.cpp main/main.cpp
+#: modules/csg/csg_shape.cpp modules/visual_script/visual_script_nodes.cpp
#: modules/visual_script/visual_script_yield_nodes.cpp scene/2d/light_2d.cpp
#: scene/2d/physics_body_2d.cpp scene/2d/tile_map.cpp
#: scene/3d/baked_lightmap.cpp scene/3d/light.cpp scene/3d/physics_body.cpp
@@ -3172,7 +3241,9 @@ msgstr "ï¼ˆé‡æ–°ï¼‰åŒ¯å…¥ç´ æ"
msgid "Reimport Missing Imported Files"
msgstr ""
-#: editor/editor_help.cpp
+#: editor/editor_help.cpp scene/2d/camera_2d.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/resources/dynamic_font.cpp
+#: scene/resources/style_box.cpp
msgid "Top"
msgstr "頂端"
@@ -3225,6 +3296,7 @@ msgid "Fonts"
msgstr "å­—é«”"
#: editor/editor_help.cpp editor/plugins/theme_editor_plugin.cpp
+#: platform/iphone/export/export.cpp
msgid "Icons"
msgstr "圖示"
@@ -3392,7 +3464,9 @@ msgstr ""
msgid "Pin value [Disabled because '%s' is editor-only]"
msgstr ""
-#: editor/editor_inspector.cpp editor/scene_tree_dock.cpp
+#: editor/editor_inspector.cpp
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+#: editor/scene_tree_dock.cpp
#: modules/visual_script/visual_script_func_nodes.cpp
#: modules/visual_script/visual_script_nodes.cpp
#: modules/visual_script/visual_script_property_selector.cpp
@@ -3723,6 +3797,16 @@ msgid "Quick Open Script..."
msgstr "快速開啟腳本…"
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Save & Reload"
+msgstr "ä¿å­˜ä¸¦é‡æ–°å•Ÿå‹•"
+
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Save changes to '%s' before reloading?"
+msgstr "é—œé–‰å‰æ˜¯å¦ä¿å­˜å°ã€Œ%sã€çš„æ›´æ”¹ï¼Ÿ"
+
+#: editor/editor_node.cpp
msgid "Save & Close"
msgstr "ä¿å­˜ä¸¦é—œé–‰"
@@ -3835,6 +3919,11 @@ msgid "Open Project Manager?"
msgstr "è¦é–‹å•Ÿå°ˆæ¡ˆç®¡ç†å“¡å—Žï¼Ÿ"
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Save changes to the following scene(s) before reloading?"
+msgstr "退出å‰è¦å…ˆä¿å­˜ä¸‹åˆ—場景嗎?"
+
+#: editor/editor_node.cpp
msgid "Save & Quit"
msgstr "ä¿å­˜ä¸¦é€€å‡º"
@@ -4098,8 +4187,8 @@ msgstr "æè³ªè®Šæ›´ï¼š"
#: editor/editor_node.cpp
#, fuzzy
-msgid "Translate Properties"
-msgstr "貼上屬性"
+msgid "Localize Settings"
+msgstr "本地化"
#: editor/editor_node.cpp
#, fuzzy
@@ -4116,8 +4205,8 @@ msgstr "å±¬æ€§é¢æ¿"
#: editor/editor_node.cpp
#, fuzzy
-msgid "Capitalize Properties"
-msgstr "貼上屬性"
+msgid "Default Property Name Style"
+msgstr "專案路徑:"
#: editor/editor_node.cpp
msgid "Default Float Step"
@@ -4704,7 +4793,9 @@ msgstr "已安è£çš„外掛:"
msgid "Update"
msgstr "æ›´æ–°"
-#: editor/editor_plugin_settings.cpp
+#: editor/editor_plugin_settings.cpp platform/android/export/export_plugin.cpp
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/uwp/export/export.cpp
msgid "Version"
msgstr "版本"
@@ -5739,7 +5830,7 @@ msgstr "全矩形"
msgid "Rect Custom Position"
msgstr "設定曲線外控制點ä½ç½®"
-#: editor/editor_settings.cpp
+#: editor/editor_settings.cpp platform/android/export/export_plugin.cpp
msgid "Screen"
msgstr ""
@@ -5766,6 +5857,19 @@ msgid "Editor SSL Certificates"
msgstr "編輯器設定"
#: editor/editor_settings.cpp
+msgid "HTTP Proxy"
+msgstr ""
+
+#: editor/editor_settings.cpp
+msgid "Host"
+msgstr ""
+
+#: editor/editor_settings.cpp editor/fileserver/editor_file_server.cpp
+#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp
+msgid "Port"
+msgstr ""
+
+#: editor/editor_settings.cpp
msgid "Project Manager"
msgstr "專案管ç†å“¡"
@@ -5808,7 +5912,8 @@ msgstr ""
msgid "String Color"
msgstr "儲存檔案:"
-#: editor/editor_settings.cpp
+#: editor/editor_settings.cpp platform/javascript/export/export.cpp
+#: platform/uwp/export/export.cpp
#, fuzzy
msgid "Background Color"
msgstr "無效的背景é¡è‰²ã€‚"
@@ -5986,22 +6091,6 @@ msgid "Starting the download..."
msgstr "正在開始下載……"
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "HTTP Proxy"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Host"
-msgstr ""
-
-#: editor/export_template_manager.cpp editor/fileserver/editor_file_server.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp main/main.cpp
-#: modules/mono/mono_gd/gd_mono.cpp
-msgid "Port"
-msgstr ""
-
-#: editor/export_template_manager.cpp
msgid "Error requesting URL:"
msgstr "請求 URL 時發生錯誤:"
@@ -6247,6 +6336,7 @@ msgstr ""
#: editor/fileserver/editor_file_server.cpp
#: editor/plugins/version_control_editor_plugin.cpp
+#: platform/uwp/export/export.cpp platform/windows/export/export.cpp
msgid "Password"
msgstr ""
@@ -6619,6 +6709,117 @@ msgstr ""
msgid "Use Ambient"
msgstr ""
+#: editor/import/resource_importer_bitmask.cpp
+#, fuzzy
+msgid "Create From"
+msgstr "建立資料夾"
+
+#: editor/import/resource_importer_bitmask.cpp
+#: servers/audio/effects/audio_effect_compressor.cpp
+msgid "Threshold"
+msgstr ""
+
+#: editor/import/resource_importer_csv_translation.cpp
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_scene.cpp
+#: editor/import/resource_importer_texture.cpp
+#: editor/import/resource_importer_wav.cpp scene/3d/gi_probe.cpp
+#, fuzzy
+msgid "Compress"
+msgstr "元件"
+
+#: editor/import/resource_importer_csv_translation.cpp
+msgid "Delimiter"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+msgid "No BPTC If RGB"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/sprite_3d.cpp
+#: scene/resources/material.cpp scene/resources/particles_material.cpp
+#: scene/resources/texture.cpp
+msgid "Flags"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/animation/tween.cpp
+#: scene/resources/texture.cpp
+msgid "Repeat"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp scene/2d/light_2d.cpp
+#: scene/gui/control.cpp scene/resources/navigation_mesh.cpp
+#, fuzzy
+msgid "Filter"
+msgstr "篩é¸ï¼š"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Mipmaps"
+msgstr "訊號"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+msgid "Anisotropic"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: editor/import/resource_importer_texture.cpp
+msgid "sRGB"
+msgstr ""
+
+#: editor/import/resource_importer_layered_texture.cpp
+#, fuzzy
+msgid "Slices"
+msgstr "自動剪è£"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
+#: scene/resources/style_box.cpp
+#, fuzzy
+msgid "Horizontal"
+msgstr "水平:"
+
+#: editor/import/resource_importer_layered_texture.cpp
+#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
+#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
+#: scene/resources/style_box.cpp
+#, fuzzy
+msgid "Vertical"
+msgstr "垂直:"
+
+#: editor/import/resource_importer_obj.cpp
+#, fuzzy
+msgid "Generate Tangents"
+msgstr "產生點"
+
+#: editor/import/resource_importer_obj.cpp
+#, fuzzy
+msgid "Scale Mesh"
+msgstr "縮放模å¼"
+
+#: editor/import/resource_importer_obj.cpp
+#, fuzzy
+msgid "Offset Mesh"
+msgstr "å移:"
+
+#: editor/import/resource_importer_obj.cpp
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Octahedral Compression"
+msgstr "設定表示å¼"
+
+#: editor/import/resource_importer_obj.cpp
+#, fuzzy
+msgid "Optimize Mesh Flags"
+msgstr "大å°ï¼š "
+
#: editor/import/resource_importer_scene.cpp
msgid "Import as Single Scene"
msgstr "匯入為單一場景"
@@ -6659,6 +6860,156 @@ msgstr "匯入為多個場景"
msgid "Import as Multiple Scenes+Materials"
msgstr "匯入為多個場景 + ç´ æ"
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Nodes"
+msgstr "節點"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Root Type"
+msgstr "æˆå“¡åž‹åˆ¥"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Root Name"
+msgstr "é ç«¯ "
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Root Scale"
+msgstr "縮放"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Custom Script"
+msgstr "剪下節點"
+
+#: editor/import/resource_importer_scene.cpp scene/resources/texture.cpp
+#, fuzzy
+msgid "Storage"
+msgstr "儲存檔案:"
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Use Legacy Names"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+#, fuzzy
+msgid "Materials"
+msgstr "æè³ªè®Šæ›´ï¼š"
+
+#: editor/import/resource_importer_scene.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Location"
+msgstr "本地化"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Keep On Reimport"
+msgstr "釿–°åŒ¯å…¥"
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+#, fuzzy
+msgid "Meshes"
+msgstr "網格"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Ensure Tangents"
+msgstr "修改曲線切線"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Light Baking"
+msgstr "烘焙光照圖"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Lightmap Texel Size"
+msgstr "烘焙光照圖"
+
+#: editor/import/resource_importer_scene.cpp modules/gltf/gltf_state.cpp
+msgid "Skins"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Use Named Skins"
+msgstr "使用縮放å¸é™„"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "External Files"
+msgstr "開啟檔案"
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Store In Subdir"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Filter Script"
+msgstr "篩é¸è…³æœ¬"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Keep Custom Tracks"
+msgstr "變æ›"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Optimizer"
+msgstr "最佳化"
+
+#: editor/import/resource_importer_scene.cpp main/main.cpp
+#: modules/mono/mono_gd/gd_mono.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp scene/2d/camera_2d.cpp scene/2d/light_2d.cpp
+#: scene/2d/navigation_polygon.cpp scene/2d/ray_cast_2d.cpp scene/2d/sprite.cpp
+#: scene/2d/y_sort.cpp scene/3d/audio_stream_player_3d.cpp
+#: scene/3d/baked_lightmap.cpp scene/3d/interpolated_camera.cpp
+#: scene/3d/light.cpp scene/3d/navigation_mesh_instance.cpp
+#: scene/3d/physics_joint.cpp scene/3d/ray_cast.cpp scene/3d/sprite_3d.cpp
+#: scene/gui/graph_edit.cpp scene/gui/rich_text_label.cpp
+#: scene/resources/curve.cpp scene/resources/environment.cpp
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Enabled"
+msgstr "啟用"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Max Linear Error"
+msgstr "最大線性誤差:"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Max Angular Error"
+msgstr "最大角度誤差:"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Max Angle"
+msgstr "數值"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Remove Unused Tracks"
+msgstr "刪除動畫軌"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Clips"
+msgstr "動畫片段"
+
+#: editor/import/resource_importer_scene.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/particles_2d.cpp scene/3d/area.cpp scene/3d/cpu_particles.cpp
+#: scene/3d/particles.cpp scene/resources/environment.cpp
+#, fuzzy
+msgid "Amount"
+msgstr "數é‡ï¼š"
+
#: editor/import/resource_importer_scene.cpp
#: editor/plugins/mesh_library_editor_plugin.cpp
msgid "Import Scene"
@@ -6700,12 +7051,149 @@ msgstr "æ˜¯å¦æœ‰åœ¨ `post_import()` 方法內回傳繼承 Node 之物件?"
msgid "Saving..."
msgstr "正在ä¿å­˜..."
+#: editor/import/resource_importer_texture.cpp scene/resources/texture.cpp
+msgid "Lossy Quality"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "HDR Mode"
+msgstr "鏿“‡æ¨¡å¼"
+
+#: editor/import/resource_importer_texture.cpp
+msgid "BPTC LDR"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp scene/2d/cpu_particles_2d.cpp
+#: scene/2d/mesh_instance_2d.cpp scene/2d/multimesh_instance_2d.cpp
+#: scene/2d/particles_2d.cpp scene/2d/sprite.cpp scene/resources/style_box.cpp
+msgid "Normal Map"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Process"
+msgstr "後處ç†"
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Fix Alpha Border"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Premult Alpha"
+msgstr "編輯多邊形"
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Hdr As Srgb"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Invert Color"
+msgstr "頂點"
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Normal Map Invert Y"
+msgstr "隨機縮放:"
+
+#: editor/import/resource_importer_texture.cpp
+#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
+#: scene/audio/audio_stream_player.cpp scene/gui/video_player.cpp
+msgid "Stream"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "Size Limit"
+msgstr "大å°ï¼š "
+
+#: editor/import/resource_importer_texture.cpp
+msgid "Detect 3D"
+msgstr ""
+
+#: editor/import/resource_importer_texture.cpp
+#, fuzzy
+msgid "SVG"
+msgstr "HSV"
+
#: editor/import/resource_importer_texture.cpp
msgid ""
"Warning, no suitable PC VRAM compression enabled in Project Settings. This "
"texture will not display correctly on PC."
msgstr ""
+#: editor/import/resource_importer_texture_atlas.cpp
+#, fuzzy
+msgid "Atlas File"
+msgstr "輪廓尺寸:"
+
+#: editor/import/resource_importer_texture_atlas.cpp
+#, fuzzy
+msgid "Import Mode"
+msgstr "匯出模å¼ï¼š"
+
+#: editor/import/resource_importer_texture_atlas.cpp
+#, fuzzy
+msgid "Crop To Region"
+msgstr "鏿“‡åœ–塊å€åŸŸ"
+
+#: editor/import/resource_importer_texture_atlas.cpp
+msgid "Trim Alpha Border From Region"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp scene/2d/physics_body_2d.cpp
+#, fuzzy
+msgid "Force"
+msgstr "來æºç¶²æ ¼ï¼š"
+
+#: editor/import/resource_importer_wav.cpp
+msgid "8 Bit"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp main/main.cpp
+#: modules/mono/editor/csharp_project.cpp modules/mono/mono_gd/gd_mono.cpp
+msgid "Mono"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+#, fuzzy
+msgid "Max Rate"
+msgstr "Mix 節點"
+
+#: editor/import/resource_importer_wav.cpp
+#, fuzzy
+msgid "Max Rate Hz"
+msgstr "Mix 節點"
+
+#: editor/import/resource_importer_wav.cpp
+msgid "Trim"
+msgstr ""
+
+#: editor/import/resource_importer_wav.cpp
+#, fuzzy
+msgid "Normalize"
+msgstr "æ ¼å¼"
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+#, fuzzy
+msgid "Loop Mode"
+msgstr "移動模å¼"
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+#, fuzzy
+msgid "Loop Begin"
+msgstr "移動模å¼"
+
+#: editor/import/resource_importer_wav.cpp
+#: scene/resources/audio_stream_sample.cpp
+#, fuzzy
+msgid "Loop End"
+msgstr "移動模å¼"
+
#: editor/import_defaults_editor.cpp
msgid "Select Importer"
msgstr "鏿“‡åŒ¯å…¥ç¨‹å¼"
@@ -6777,6 +7265,29 @@ msgid "Failed to load resource."
msgstr "加載資æºå¤±æ•—。"
#: editor/inspector_dock.cpp
+#, fuzzy
+msgid "Property Name Style"
+msgstr "專案å稱:"
+
+#: editor/inspector_dock.cpp scene/gui/color_picker.cpp
+msgid "Raw"
+msgstr "原始"
+
+#: editor/inspector_dock.cpp
+#, fuzzy
+msgid "Capitalized"
+msgstr "首字æ¯å¤§å¯«"
+
+#: editor/inspector_dock.cpp
+#, fuzzy
+msgid "Localized"
+msgstr "地å€"
+
+#: editor/inspector_dock.cpp
+msgid "Localization not available for current language."
+msgstr ""
+
+#: editor/inspector_dock.cpp
msgid "Copy Properties"
msgstr "複製屬性"
@@ -7814,18 +8325,26 @@ msgid "License (Z-A)"
msgstr "授權(Z-A)"
#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgctxt "Pagination"
msgid "First"
msgstr "首é "
-#: editor/plugins/asset_library_editor_plugin.cpp scene/gui/control.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgctxt "Pagination"
msgid "Previous"
msgstr "上一é "
-#: editor/plugins/asset_library_editor_plugin.cpp scene/gui/control.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgctxt "Pagination"
msgid "Next"
msgstr "下一é "
#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgctxt "Pagination"
msgid "Last"
msgstr "最後"
@@ -8063,19 +8582,19 @@ msgid ""
"margins."
msgstr "啟用後,移動控制節點將修改錨點而éžå¤–邊è·ã€‚"
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Top Left"
msgstr "左上"
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Top Right"
msgstr "å³ä¸Š"
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Bottom Right"
msgstr "å³ä¸‹"
-#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp scene/resources/style_box.cpp
msgid "Bottom Left"
msgstr "左下"
@@ -8787,6 +9306,19 @@ msgstr "烘焙 GI 探查"
msgid "Gradient Edited"
msgstr "漸層編輯"
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+msgid "Swap GradientTexture2D Fill Points"
+msgstr ""
+
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+msgid "Swap Gradient Fill Points"
+msgstr ""
+
+#: editor/plugins/gradient_texture_2d_editor_plugin.cpp
+#, fuzzy
+msgid "Toggle Grid Snap"
+msgstr "åˆ‡æ›æ¨¡å¼"
+
#: editor/plugins/item_list_editor_plugin.cpp
msgid "Item %d"
msgstr "第 %d 項"
@@ -9014,8 +9546,9 @@ msgstr ""
"è‡ªç¾æœ‰å ´æ™¯ä¸­æ›´æ–°ï¼Ÿ\n"
"%s"
-#: editor/plugins/mesh_library_editor_plugin.cpp modules/gridmap/grid_map.cpp
-msgid "Mesh Library"
+#: editor/plugins/mesh_library_editor_plugin.cpp
+#, fuzzy
+msgid "MeshLibrary"
msgstr "網格庫"
#: editor/plugins/mesh_library_editor_plugin.cpp
@@ -9999,8 +10532,8 @@ msgstr "連接至方法:"
msgid "Source"
msgstr "來æº"
-#: editor/plugins/script_text_editor.cpp scene/3d/interpolated_camera.cpp
-#: scene/animation/skeleton_ik.cpp
+#: editor/plugins/script_text_editor.cpp platform/uwp/export/export.cpp
+#: scene/3d/interpolated_camera.cpp scene/animation/skeleton_ik.cpp
msgid "Target"
msgstr "目標"
@@ -10971,7 +11504,9 @@ msgstr "速度:"
#: editor/plugins/sprite_frames_editor_plugin.cpp
#: modules/gltf/gltf_animation.cpp modules/minimp3/audio_stream_mp3.cpp
-#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp scene/2d/path_2d.cpp
+#: modules/minimp3/resource_importer_mp3.cpp
+#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp
+#: modules/stb_vorbis/resource_importer_ogg_vorbis.cpp scene/2d/path_2d.cpp
#: scene/3d/path.cpp scene/resources/animation.cpp scene/resources/material.cpp
msgid "Loop"
msgstr "循環"
@@ -11856,8 +12391,9 @@ msgstr "é®ç½©"
msgid "Priority"
msgstr "優先級"
-#: editor/plugins/tile_set_editor_plugin.cpp main/main.cpp scene/gui/button.cpp
-#: scene/gui/item_list.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp main/main.cpp
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#: scene/gui/button.cpp scene/gui/item_list.cpp
msgid "Icon"
msgstr "圖示"
@@ -13213,10 +13749,6 @@ msgstr ""
"å¯èƒ½æ˜¯ç”±æ–¼åŒ¯å‡ºé è¨­è¨­å®šæˆ–匯出設定中的組態設定有å•題導致。"
#: editor/project_export.cpp
-msgid "Release"
-msgstr "發行"
-
-#: editor/project_export.cpp
msgid "Exporting All"
msgstr "全部匯出"
@@ -15050,6 +15582,7 @@ msgid "Change AudioStreamPlayer3D Emission Angle"
msgstr "更改 AudioStreamPlayer3D 發射角"
#: editor/spatial_editor_gizmos.cpp modules/gltf/gltf_node.cpp
+#: platform/osx/export/export.cpp
msgid "Camera"
msgstr ""
@@ -15333,7 +15866,8 @@ msgstr ""
msgid "Use Nvidia Rect Flicker Workaround"
msgstr ""
-#: main/main.cpp platform/uwp/os_uwp.cpp
+#: main/main.cpp platform/javascript/export/export.cpp
+#: platform/osx/export/export.cpp platform/uwp/os_uwp.cpp
#, fuzzy
msgid "Display"
msgstr "全部顯示"
@@ -15394,19 +15928,6 @@ msgstr ""
msgid "Allowed"
msgstr ""
-#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp scene/2d/camera_2d.cpp
-#: scene/2d/light_2d.cpp scene/2d/navigation_polygon.cpp
-#: scene/2d/ray_cast_2d.cpp scene/2d/sprite.cpp scene/2d/y_sort.cpp
-#: scene/3d/audio_stream_player_3d.cpp scene/3d/baked_lightmap.cpp
-#: scene/3d/interpolated_camera.cpp scene/3d/light.cpp
-#: scene/3d/navigation_mesh_instance.cpp scene/3d/ray_cast.cpp
-#: scene/3d/sprite_3d.cpp scene/gui/graph_edit.cpp
-#: scene/gui/rich_text_label.cpp scene/resources/curve.cpp
-#: scene/resources/environment.cpp
-#, fuzzy
-msgid "Enabled"
-msgstr "啟用"
-
#: main/main.cpp
msgid "Intended Usage"
msgstr ""
@@ -15438,13 +15959,14 @@ msgstr ""
msgid "Handheld"
msgstr ""
-#: main/main.cpp
+#: main/main.cpp platform/javascript/export/export.cpp
+#: platform/uwp/export/export.cpp
#, fuzzy
msgid "Orientation"
msgstr "線上說明文件"
#: main/main.cpp scene/gui/scroll_container.cpp scene/gui/text_edit.cpp
-#: scene/main/scene_tree.cpp
+#: scene/main/scene_tree.cpp scene/register_scene_types.cpp
#, fuzzy
msgid "Common"
msgstr "社群"
@@ -15487,7 +16009,7 @@ msgstr ""
#: main/main.cpp
#, fuzzy
-msgid "Frame Delay (msec)"
+msgid "Frame Delay Msec"
msgstr "完整顯示所é¸"
#: main/main.cpp
@@ -15615,11 +16137,6 @@ msgstr ""
msgid "Tooltip Position Offset"
msgstr "旋轉åç§»é‡ï¼š"
-#: main/main.cpp modules/mono/editor/csharp_project.cpp
-#: modules/mono/mono_gd/gd_mono.cpp
-msgid "Mono"
-msgstr ""
-
#: main/main.cpp modules/mono/mono_gd/gd_mono.cpp
#, fuzzy
msgid "Debugger Agent"
@@ -16197,7 +16714,7 @@ msgstr "é¡è‰²"
msgid "Intensity"
msgstr ""
-#: modules/gltf/gltf_light.cpp scene/2d/light_2d.cpp
+#: modules/gltf/gltf_light.cpp scene/2d/light_2d.cpp scene/3d/light.cpp
#, fuzzy
msgid "Range"
msgstr "更改"
@@ -16344,11 +16861,6 @@ msgstr "åŒ…å«æ•¸æ“š"
msgid "Use Named Skin Binds"
msgstr ""
-#: modules/gltf/gltf_state.cpp scene/3d/physics_joint.cpp
-#, fuzzy
-msgid "Nodes"
-msgstr "節點"
-
#: modules/gltf/gltf_state.cpp
#, fuzzy
msgid "Buffer Views"
@@ -16360,16 +16872,6 @@ msgstr ""
#: modules/gltf/gltf_state.cpp
#, fuzzy
-msgid "Meshes"
-msgstr "網格"
-
-#: modules/gltf/gltf_state.cpp
-#, fuzzy
-msgid "Materials"
-msgstr "æè³ªè®Šæ›´ï¼š"
-
-#: modules/gltf/gltf_state.cpp
-#, fuzzy
msgid "Scene Name"
msgstr "場景路徑:"
@@ -16385,15 +16887,11 @@ msgstr "根節點å稱"
msgid "Textures"
msgstr "功能"
-#: modules/gltf/gltf_state.cpp
+#: modules/gltf/gltf_state.cpp platform/uwp/export/export.cpp
msgid "Images"
msgstr ""
#: modules/gltf/gltf_state.cpp
-msgid "Skins"
-msgstr ""
-
-#: modules/gltf/gltf_state.cpp
msgid "Cameras"
msgstr ""
@@ -16428,11 +16926,15 @@ msgid "Src Image"
msgstr "顯示骨骼"
#: modules/gridmap/grid_map.cpp
+msgid "Mesh Library"
+msgstr "網格庫"
+
+#: modules/gridmap/grid_map.cpp
#, fuzzy
msgid "Physics Material"
msgstr "物ç†å½±æ ¼ %"
-#: modules/gridmap/grid_map.cpp
+#: modules/gridmap/grid_map.cpp scene/3d/visual_instance.cpp
#, fuzzy
msgid "Use In Baked Light"
msgstr "烘焙光照圖"
@@ -16464,6 +16966,7 @@ msgstr "中央"
#: modules/gridmap/grid_map.cpp scene/2d/collision_object_2d.cpp
#: scene/2d/tile_map.cpp scene/3d/collision_object.cpp scene/3d/soft_body.cpp
+#: scene/resources/material.cpp
msgid "Mask"
msgstr ""
@@ -16645,7 +17148,9 @@ msgid "Ultra Quality Ray Count"
msgstr ""
#: modules/minimp3/audio_stream_mp3.cpp
+#: modules/minimp3/resource_importer_mp3.cpp
#: modules/stb_vorbis/audio_stream_ogg_vorbis.cpp
+#: modules/stb_vorbis/resource_importer_ogg_vorbis.cpp
#, fuzzy
msgid "Loop Offset"
msgstr "å移:"
@@ -17747,6 +18252,192 @@ msgid "The package must have at least one '.' separator."
msgstr "套件必須至少有一個「.ã€åˆ†éš”字元。"
#: platform/android/export/export_plugin.cpp
+msgid "Use Custom Build"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Export Format"
+msgstr "匯出路徑"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Keystore"
+msgstr "除錯工具"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Debug User"
+msgstr "除錯工具"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+msgid "Debug Password"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Release User"
+msgstr "發行"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Release Password"
+msgstr "發行"
+
+#: platform/android/export/export_plugin.cpp
+msgid "One Click Deploy"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Clear Previous Install"
+msgstr "嵿Ÿ¥å‰ä¸€å€‹å¯¦é«”"
+
+#: platform/android/export/export_plugin.cpp scene/resources/shader.cpp
+msgid "Code"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Min SDK"
+msgstr "輪廓尺寸:"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Target SDK"
+msgstr "目標"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Package"
+msgstr "正在打包"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Unique Name"
+msgstr "節點å稱:"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Signed"
+msgstr "訊號"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Classify As Game"
+msgstr "類別å稱:"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Retain Data On Uninstall"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Exclude From Recents"
+msgstr "刪除節點"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Graphics"
+msgstr "網格åç§»é‡ï¼š"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "OpenGL Debug"
+msgstr "開啟"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "XR Features"
+msgstr "功能"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "XR Mode"
+msgstr "平移模å¼"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Hand Tracking"
+msgstr "正在打包"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Hand Tracking Frequency"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+msgid "Passthrough"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Immersive Mode"
+msgstr "優先模å¼"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Support Small"
+msgstr "支æ´"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Support Normal"
+msgstr "支æ´"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Support Large"
+msgstr "支æ´"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Support Xlarge"
+msgstr "支æ´"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "User Data Backup"
+msgstr "使用者界é¢"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Allow"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Command Line"
+msgstr "社群"
+
+#: platform/android/export/export_plugin.cpp platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Extra Args"
+msgstr "é¡å¤–呼å«å¼•數:"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "APK Expansion"
+msgstr "設定表示å¼"
+
+#: platform/android/export/export_plugin.cpp
+msgid "Salt"
+msgstr ""
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Public Key"
+msgstr "實體按éµ"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Permissions"
+msgstr "發射é®ç½©"
+
+#: platform/android/export/export_plugin.cpp
+#, fuzzy
+msgid "Custom Permissions"
+msgstr "執行自定義場景"
+
+#: platform/android/export/export_plugin.cpp
msgid "Select device from the list"
msgstr "è‡ªæ¸…å–®ä¸­é¸æ“‡è£ç½®"
@@ -18049,6 +18740,178 @@ msgid "The character '%s' is not allowed in Identifier."
msgstr "字元「%sã€ä¸å¯ç”¨æ–¼è­˜åˆ¥ç¬¦ä¸­ã€‚"
#: platform/iphone/export/export.cpp
+msgid "App Store Team ID"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Provisioning Profile UUID Debug"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Code Sign Identity Debug"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Export Method Debug"
+msgstr "以åµéŒ¯æ¨¡å¼åŒ¯å‡º"
+
+#: platform/iphone/export/export.cpp
+msgid "Provisioning Profile UUID Release"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Code Sign Identity Release"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Export Method Release"
+msgstr "匯出模å¼ï¼š"
+
+#: platform/iphone/export/export.cpp
+msgid "Targeted Device Family"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+msgid "Info"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Identifier"
+msgstr "無效的識別符:"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Signature"
+msgstr "訊號"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Short Version"
+msgstr "版本"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Copyright"
+msgstr "å³ä¸Š"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Capabilities"
+msgstr "貼上屬性"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Access Wi-Fi"
+msgstr "æˆåŠŸï¼"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Push Notifications"
+msgstr "隨機旋轉:"
+
+#: platform/iphone/export/export.cpp scene/3d/baked_lightmap.cpp
+#, fuzzy
+msgid "User Data"
+msgstr "使用者界é¢"
+
+#: platform/iphone/export/export.cpp
+msgid "Accessible From Files App"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Accessible From Itunes Sharing"
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Privacy"
+msgstr "實體按éµ"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Camera Usage Description"
+msgstr "說明"
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
+#, fuzzy
+msgid "Microphone Usage Description"
+msgstr "屬性說明"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Photolibrary Usage Description"
+msgstr "屬性說明"
+
+#: platform/iphone/export/export.cpp
+msgid "iPhone 120 X 120"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPhone 180 X 180"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 76 X 76"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 152 X 152"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "iPad 167 X 167"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "App Store 1024 X 1024"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Spotlight 40 X 40"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Spotlight 80 X 80"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Storyboard"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+msgid "Use Launch Screen Storyboard"
+msgstr ""
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Image Scale Mode"
+msgstr "縮放模å¼"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Custom Image @2x"
+msgstr "剪下節點"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Custom Image @3x"
+msgstr "剪下節點"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Use Custom BG Color"
+msgstr "剪下節點"
+
+#: platform/iphone/export/export.cpp
+#, fuzzy
+msgid "Custom BG Color"
+msgstr "剪下節點"
+
+#: platform/iphone/export/export.cpp
msgid "App Store Team ID not specified - cannot configure the project."
msgstr "尚未設定 App Store Team ID - 無法設定專案。"
@@ -18085,6 +18948,80 @@ msgid "Could not read file:"
msgstr "ç„¡æ³•è®€å–æª”案:"
#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Variant"
+msgstr "分隔:"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Export Type"
+msgstr "匯出"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "VRAM Texture Compression"
+msgstr "設定表示å¼"
+
+#: platform/javascript/export/export.cpp
+msgid "For Desktop"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "For Mobile"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Html"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Export Icon"
+msgstr "展開全部"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Custom Html Shell"
+msgstr "剪下節點"
+
+#: platform/javascript/export/export.cpp
+msgid "Head Include"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Canvas Resize Policy"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Focus Canvas On Start"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Experimental Virtual Keyboard"
+msgstr "篩é¸è¨Šè™Ÿ"
+
+#: platform/javascript/export/export.cpp
+msgid "Progressive Web App"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Offline Page"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 144 X 144"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 180 X 180"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Icon 512 X 512"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
msgid "Could not read HTML shell:"
msgstr "無法讀å–HTML殼層:"
@@ -18198,6 +19135,201 @@ msgid "Unknown object type."
msgstr ""
#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "App Category"
+msgstr "分類:"
+
+#: platform/osx/export/export.cpp
+msgid "High Res"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Location Usage Description"
+msgstr "說明"
+
+#: platform/osx/export/export.cpp
+msgid "Address Book Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Calendar Usage Description"
+msgstr "說明"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Photos Library Usage Description"
+msgstr "屬性說明"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Desktop Folder Usage Description"
+msgstr "方法說明"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Documents Folder Usage Description"
+msgstr "方法說明"
+
+#: platform/osx/export/export.cpp
+msgid "Downloads Folder Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Network Volumes Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Removable Volumes Usage Description"
+msgstr ""
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#, fuzzy
+msgid "Codesign"
+msgstr "節點"
+
+#: platform/osx/export/export.cpp platform/uwp/export/export.cpp
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Identity"
+msgstr "å‘左縮排"
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#, fuzzy
+msgid "Timestamp"
+msgstr "時間"
+
+#: platform/osx/export/export.cpp
+msgid "Hardened Runtime"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Replace Existing Signature"
+msgstr "å–代全部"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Entitlements"
+msgstr "Gizmo"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Custom File"
+msgstr "剪下節點"
+
+#: platform/osx/export/export.cpp
+msgid "Allow JIT Code Execution"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Allow Unsigned Executable Memory"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Allow Dyld Environment Variables"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Disable Library Validation"
+msgstr "å·²åœç”¨çš„æŒ‰éˆ•"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Audio Input"
+msgstr "新增輸入"
+
+#: platform/osx/export/export.cpp
+msgid "Address Book"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Calendars"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Photos Library"
+msgstr "匯出函å¼åº«"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Apple Events"
+msgstr "新增事件"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Debugging"
+msgstr "åµéŒ¯"
+
+#: platform/osx/export/export.cpp
+msgid "App Sandbox"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Network Server"
+msgstr "網路分æžå·¥å…·"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Network Client"
+msgstr "網路分æžå·¥å…·"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Device Usb"
+msgstr "è£ç½®"
+
+#: platform/osx/export/export.cpp
+msgid "Device Bluetooth"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Files Downloads"
+msgstr "下載"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Files Pictures"
+msgstr "功能"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Files Music"
+msgstr "檔案"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Files Movies"
+msgstr "篩é¸åœ–塊"
+
+#: platform/osx/export/export.cpp platform/windows/export/export.cpp
+#, fuzzy
+msgid "Custom Options"
+msgstr "åŒ¯æµæŽ’é¸é …"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Notarization"
+msgstr "本地化"
+
+#: platform/osx/export/export.cpp
+msgid "Apple ID Name"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Apple ID Password"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Apple Team ID"
+msgstr ""
+
+#: platform/osx/export/export.cpp
msgid ""
"Note: The notarization process generally takes less than an hour. When the "
"process is completed, you'll receive an email."
@@ -18395,6 +19527,136 @@ msgid "Force Builtin Codesign"
msgstr ""
#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Architecture"
+msgstr "新增一個架構項目"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Display Name"
+msgstr "全部顯示"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Short Name"
+msgstr "腳本å稱:"
+
+#: platform/uwp/export/export.cpp
+msgid "Publisher"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Publisher Display Name"
+msgstr "無效的套件發佈者顯示å稱。"
+
+#: platform/uwp/export/export.cpp
+msgid "Product Guid"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Publisher Guid"
+msgstr "清除åƒè€ƒç·š"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Signing"
+msgstr "訊號"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Certificate"
+msgstr "頂點:"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Algorithm"
+msgstr "除錯工具"
+
+#: platform/uwp/export/export.cpp
+msgid "Major"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Minor"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Build"
+msgstr "å°ºè¦æ¨¡å¼"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Revision"
+msgstr "設定表示å¼"
+
+#: platform/uwp/export/export.cpp
+msgid "Landscape"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Portrait"
+msgstr "翻轉入å£"
+
+#: platform/uwp/export/export.cpp
+msgid "Landscape Flipped"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Portrait Flipped"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Store Logo"
+msgstr "縮放模å¼"
+
+#: platform/uwp/export/export.cpp
+msgid "Square 44 X 44 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 71 X 71 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 150 X 150 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Square 310 X 310 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Wide 310 X 150 Logo"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Splash Screen"
+msgstr "繪製呼å«ï¼š"
+
+#: platform/uwp/export/export.cpp
+#, fuzzy
+msgid "Tiles"
+msgstr "檔案"
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Square 150 X 150"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Wide 310 X 150"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
+msgid "Show Name On Square 310 X 310"
+msgstr ""
+
+#: platform/uwp/export/export.cpp
msgid "Invalid package short name."
msgstr "無效的套件段å稱。"
@@ -18460,15 +19722,53 @@ msgid "Debug Certificate"
msgstr ""
#: platform/uwp/export/export.cpp
-msgid "Debug Password"
+#, fuzzy
+msgid "Debug Algorithm"
+msgstr "除錯工具"
+
+#: platform/windows/export/export.cpp
+msgid "Identity Type"
msgstr ""
-#: platform/uwp/export/export.cpp
+#: platform/windows/export/export.cpp
+msgid "Timestamp Server URL"
+msgstr ""
+
+#: platform/windows/export/export.cpp
#, fuzzy
-msgid "Debug Algorithm"
+msgid "Digest Algorithm"
msgstr "除錯工具"
#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "File Version"
+msgstr "版本"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Product Version"
+msgstr "ç„¡æ•ˆçš„ç”¢å“ GUID。"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Company Name"
+msgstr "節點å稱:"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "Product Name"
+msgstr "專案å稱:"
+
+#: platform/windows/export/export.cpp
+#, fuzzy
+msgid "File Description"
+msgstr "說明"
+
+#: platform/windows/export/export.cpp
+msgid "Trademarks"
+msgstr ""
+
+#: platform/windows/export/export.cpp
msgid ""
"The rcedit tool must be configured in the Editor Settings (Export > Windows "
"> Rcedit) to change the icon or app information data."
@@ -18543,12 +19843,14 @@ msgstr "執行"
msgid "Centered"
msgstr "中央"
-#: scene/2d/animated_sprite.cpp scene/2d/camera_2d.cpp scene/2d/light_2d.cpp
+#: scene/2d/animated_sprite.cpp scene/2d/camera_2d.cpp
+#: scene/2d/cpu_particles_2d.cpp scene/2d/light_2d.cpp
#: scene/2d/parallax_background.cpp scene/2d/parallax_layer.cpp
#: scene/2d/path_2d.cpp scene/2d/polygon_2d.cpp scene/2d/sprite.cpp
-#: scene/3d/path.cpp scene/3d/physics_body.cpp scene/3d/sprite_3d.cpp
-#: scene/gui/graph_node.cpp scene/gui/rich_text_effect.cpp
-#: scene/main/canvas_layer.cpp scene/resources/material.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/path.cpp scene/3d/physics_body.cpp
+#: scene/3d/sprite_3d.cpp scene/gui/graph_node.cpp
+#: scene/gui/rich_text_effect.cpp scene/main/canvas_layer.cpp
+#: scene/resources/material.cpp scene/resources/particles_material.cpp
#: scene/resources/style_box.cpp
#, fuzzy
msgid "Offset"
@@ -18623,11 +19925,6 @@ msgstr "æ–°å¢žéŸ³è¨ŠåŒ¯æµæŽ’"
msgid "Override"
msgstr "複寫"
-#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
-#: scene/audio/audio_stream_player.cpp scene/gui/video_player.cpp
-msgid "Stream"
-msgstr ""
-
#: scene/2d/audio_stream_player_2d.cpp scene/audio/audio_stream_player.cpp
#: scene/gui/video_player.cpp servers/audio/effects/audio_effect_amplify.cpp
#, fuzzy
@@ -18654,13 +19951,13 @@ msgid "Stream Paused"
msgstr ""
#: scene/2d/audio_stream_player_2d.cpp scene/3d/audio_stream_player_3d.cpp
-#: scene/3d/reflection_probe.cpp scene/3d/visual_instance.cpp
-#: scene/resources/material.cpp
+#: scene/3d/light.cpp scene/3d/reflection_probe.cpp
+#: scene/3d/visual_instance.cpp scene/resources/material.cpp
#, fuzzy
msgid "Max Distance"
msgstr "鏿“‡è·é›¢ï¼š"
-#: scene/2d/audio_stream_player_2d.cpp
+#: scene/2d/audio_stream_player_2d.cpp scene/3d/light.cpp
#, fuzzy
msgid "Attenuation"
msgstr "å‹•ç•«"
@@ -18716,6 +20013,24 @@ msgstr "移動模å¼"
msgid "Limit"
msgstr ""
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/style_box.cpp
+#, fuzzy
+msgid "Left"
+msgstr "左上"
+
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/style_box.cpp
+#, fuzzy
+msgid "Right"
+msgstr "燈光"
+
+#: scene/2d/camera_2d.cpp scene/gui/control.cpp scene/gui/nine_patch_rect.cpp
+#: scene/resources/dynamic_font.cpp scene/resources/style_box.cpp
+#, fuzzy
+msgid "Bottom"
+msgstr "左下"
+
#: scene/2d/camera_2d.cpp
#, fuzzy
msgid "Smoothed"
@@ -18949,13 +20264,6 @@ msgstr ""
msgid "Emitting"
msgstr "設定:"
-#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp scene/3d/area.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
-#: scene/resources/environment.cpp
-#, fuzzy
-msgid "Amount"
-msgstr "數é‡ï¼š"
-
#: scene/2d/cpu_particles_2d.cpp scene/2d/particles_2d.cpp
#: scene/3d/cpu_particles.cpp scene/3d/particles.cpp
msgid "Lifetime"
@@ -19020,18 +20328,13 @@ msgstr ""
#: scene/2d/mesh_instance_2d.cpp scene/2d/multimesh_instance_2d.cpp
#: scene/2d/particles_2d.cpp scene/2d/polygon_2d.cpp scene/2d/sprite.cpp
#: scene/3d/sprite_3d.cpp scene/gui/nine_patch_rect.cpp
-#: scene/gui/texture_rect.cpp scene/resources/sky.cpp
-#: scene/resources/style_box.cpp scene/resources/visual_shader_nodes.cpp
+#: scene/gui/texture_rect.cpp scene/resources/material.cpp
+#: scene/resources/sky.cpp scene/resources/style_box.cpp
+#: scene/resources/visual_shader_nodes.cpp
#, fuzzy
msgid "Texture"
msgstr "純文字"
-#: scene/2d/cpu_particles_2d.cpp scene/2d/mesh_instance_2d.cpp
-#: scene/2d/multimesh_instance_2d.cpp scene/2d/particles_2d.cpp
-#: scene/2d/sprite.cpp scene/resources/style_box.cpp
-msgid "Normal Map"
-msgstr ""
-
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
#, fuzzy
@@ -19055,10 +20358,10 @@ msgid "Normals"
msgstr "æ ¼å¼"
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
-#: scene/3d/sprite_3d.cpp scene/resources/material.cpp
-#: scene/resources/particles_material.cpp scene/resources/texture.cpp
-msgid "Flags"
-msgstr ""
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Align Y"
+msgstr "指派"
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
@@ -19079,6 +20382,12 @@ msgid "Initial Velocity"
msgstr "åˆå§‹åŒ–"
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Velocity Random"
+msgstr "å‘å³ç’°è¦–"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp servers/physics_2d_server.cpp
#: servers/physics_server.cpp
msgid "Angular Velocity"
@@ -19087,6 +20396,12 @@ msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
#, fuzzy
+msgid "Velocity Curve"
+msgstr "å‘å³ç’°è¦–"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
msgid "Orbit Velocity"
msgstr "å‘å³ç’°è¦–"
@@ -19098,6 +20413,23 @@ msgstr "線性"
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Accel"
+msgstr "æˆåŠŸï¼"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+msgid "Accel Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Accel Curve"
+msgstr "拆分控制點"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
msgid "Radial Accel"
msgstr ""
@@ -19107,19 +20439,55 @@ msgid "Tangential Accel"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/2d/joints_2d.cpp
-#: scene/3d/cpu_particles.cpp scene/3d/vehicle_body.cpp
-#: scene/resources/particles_material.cpp
+#: scene/3d/cpu_particles.cpp scene/3d/physics_joint.cpp
+#: scene/3d/vehicle_body.cpp scene/resources/particles_material.cpp
#: servers/audio/effects/audio_effect_reverb.cpp
msgid "Damping"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+msgid "Damping Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Damping Curve"
+msgstr "拆分控制點"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp scene/3d/light.cpp
+#: scene/resources/particles_material.cpp
msgid "Angle"
msgstr ""
#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
#: scene/resources/particles_material.cpp
+msgid "Angle Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Angle Curve"
+msgstr "關閉曲線"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#, fuzzy
+msgid "Scale Amount"
+msgstr "數é‡ï¼š"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+msgid "Scale Amount Random"
+msgstr ""
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#, fuzzy
+msgid "Scale Amount Curve"
+msgstr "以游標縮放"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
#, fuzzy
msgid "Color Ramp"
msgstr "é¡è‰²"
@@ -19135,6 +20503,48 @@ msgstr ""
msgid "Hue Variation"
msgstr "分隔:"
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Variation"
+msgstr "分隔:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Variation Random"
+msgstr "分隔:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Variation Curve"
+msgstr "分隔:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Speed Random"
+msgstr "縮放"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Speed Curve"
+msgstr "拆分控制點"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Offset Random"
+msgstr "å移:"
+
+#: scene/2d/cpu_particles_2d.cpp scene/3d/cpu_particles.cpp
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Offset Curve"
+msgstr "關閉曲線"
+
#: scene/2d/joints_2d.cpp
msgid "Node A and Node B must be PhysicsBody2Ds"
msgstr "Node A 與 Node B 必須為 PhysicsBody2D"
@@ -19166,6 +20576,7 @@ msgid "Node B"
msgstr "節點"
#: scene/2d/joints_2d.cpp scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp
+#: scene/3d/light.cpp scene/3d/physics_joint.cpp
#: scene/resources/environment.cpp
msgid "Bias"
msgstr ""
@@ -19175,7 +20586,7 @@ msgstr ""
msgid "Disable Collision"
msgstr "å·²åœç”¨çš„æŒ‰éˆ•"
-#: scene/2d/joints_2d.cpp
+#: scene/2d/joints_2d.cpp scene/3d/physics_joint.cpp
msgid "Softness"
msgstr ""
@@ -19193,7 +20604,7 @@ msgstr "åˆå§‹åŒ–"
msgid "Rest Length"
msgstr ""
-#: scene/2d/joints_2d.cpp scene/3d/vehicle_body.cpp
+#: scene/2d/joints_2d.cpp scene/3d/physics_joint.cpp scene/3d/vehicle_body.cpp
msgid "Stiffness"
msgstr ""
@@ -19214,7 +20625,7 @@ msgid "Texture Scale"
msgstr "ç´‹ç†è²¼åœ–å€åŸŸ"
#: scene/2d/light_2d.cpp scene/3d/baked_lightmap.cpp scene/3d/gi_probe.cpp
-#: scene/resources/environment.cpp scene/resources/sky.cpp
+#: scene/3d/light.cpp scene/resources/environment.cpp scene/resources/sky.cpp
msgid "Energy"
msgstr ""
@@ -19255,12 +20666,6 @@ msgstr "後視圖"
msgid "Gradient Length"
msgstr "漸層編輯"
-#: scene/2d/light_2d.cpp scene/gui/control.cpp
-#: scene/resources/navigation_mesh.cpp
-#, fuzzy
-msgid "Filter"
-msgstr "篩é¸ï¼š"
-
#: scene/2d/light_2d.cpp
#, fuzzy
msgid "Filter Smooth"
@@ -19691,11 +21096,6 @@ msgid "Applied Forces"
msgstr ""
#: scene/2d/physics_body_2d.cpp
-#, fuzzy
-msgid "Force"
-msgstr "來æºç¶²æ ¼ï¼š"
-
-#: scene/2d/physics_body_2d.cpp
msgid "Torque"
msgstr ""
@@ -19711,7 +21111,7 @@ msgstr " (物ç†ï¼‰"
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
#, fuzzy
-msgid "Moving platform"
+msgid "Moving Platform"
msgstr "移動輸出"
#: scene/2d/physics_body_2d.cpp scene/3d/physics_body.cpp
@@ -19720,7 +21120,7 @@ msgstr ""
#: scene/2d/physics_body_2d.cpp scene/2d/touch_screen_button.cpp
#: scene/3d/physics_body.cpp scene/gui/texture_button.cpp
-#: scene/resources/line_shape_2d.cpp
+#: scene/resources/line_shape_2d.cpp scene/resources/material.cpp
#, fuzzy
msgid "Normal"
msgstr "æ ¼å¼"
@@ -19960,6 +21360,34 @@ msgid ""
"as parent."
msgstr "VisibilityEnabler2D 在直接作為已編輯場景的根節點的æ¯ç´šç¯€é»žæ™‚效果最佳。"
+#: scene/2d/visibility_notifier_2d.cpp scene/3d/visibility_notifier.cpp
+#, fuzzy
+msgid "Pause Animations"
+msgstr "貼上動畫"
+
+#: scene/2d/visibility_notifier_2d.cpp scene/3d/visibility_notifier.cpp
+msgid "Freeze Bodies"
+msgstr ""
+
+#: scene/2d/visibility_notifier_2d.cpp
+#, fuzzy
+msgid "Pause Particles"
+msgstr "ç²’å­"
+
+#: scene/2d/visibility_notifier_2d.cpp
+#, fuzzy
+msgid "Pause Animated Sprites"
+msgstr "貼上動畫"
+
+#: scene/2d/visibility_notifier_2d.cpp
+#, fuzzy
+msgid "Process Parent"
+msgstr "啟用優先級"
+
+#: scene/2d/visibility_notifier_2d.cpp
+msgid "Physics Process Parent"
+msgstr ""
+
#: scene/3d/area.cpp
msgid "Reverb Bus"
msgstr ""
@@ -20056,6 +21484,7 @@ msgid "Attenuation Filter"
msgstr ""
#: scene/3d/audio_stream_player_3d.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
#: servers/audio/effects/audio_effect_filter.cpp
msgid "Cutoff Hz"
msgstr ""
@@ -20100,11 +21529,6 @@ msgid "Octree"
msgstr "å­æ¨¹"
#: scene/3d/baked_lightmap.cpp
-#, fuzzy
-msgid "User Data"
-msgstr "使用者界é¢"
-
-#: scene/3d/baked_lightmap.cpp
msgid "Finding meshes and lights"
msgstr "正在尋找網格與光照"
@@ -20369,6 +21793,16 @@ msgid "Ring Axis"
msgstr "警告"
#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Rotate Y"
+msgstr "旋轉"
+
+#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Disable Z"
+msgstr "å·²åœç”¨çš„é …ç›®"
+
+#: scene/3d/cpu_particles.cpp scene/resources/particles_material.cpp
msgid "Flatness"
msgstr ""
@@ -20409,16 +21843,11 @@ msgstr "動態函å¼åº«"
msgid "Dynamic Range"
msgstr "動態函å¼åº«"
-#: scene/3d/gi_probe.cpp
+#: scene/3d/gi_probe.cpp scene/3d/light.cpp
msgid "Normal Bias"
msgstr ""
#: scene/3d/gi_probe.cpp
-#, fuzzy
-msgid "Compress"
-msgstr "元件"
-
-#: scene/3d/gi_probe.cpp
msgid "Plotting Meshes"
msgstr "正在繪製網格"
@@ -20449,16 +21878,31 @@ msgstr ""
#: scene/3d/light.cpp
#, fuzzy
+msgid "Indirect Energy"
+msgstr "發射色彩"
+
+#: scene/3d/light.cpp
+#, fuzzy
msgid "Negative"
msgstr "GDNative"
#: scene/3d/light.cpp
#, fuzzy
+msgid "Specular"
+msgstr "å°ºè¦æ¨¡å¼"
+
+#: scene/3d/light.cpp
+#, fuzzy
msgid "Bake Mode"
msgstr "優先模å¼"
#: scene/3d/light.cpp
#, fuzzy
+msgid "Contact"
+msgstr "鏿“‡é¡è‰²"
+
+#: scene/3d/light.cpp
+#, fuzzy
msgid "Reverse Cull Face"
msgstr "é‡è¨­åŒ¯æµæŽ’音é‡"
@@ -20469,11 +21913,31 @@ msgstr "æ–¹å‘"
#: scene/3d/light.cpp
#, fuzzy
+msgid "Split 1"
+msgstr "拆分路徑"
+
+#: scene/3d/light.cpp
+#, fuzzy
+msgid "Split 2"
+msgstr "拆分路徑"
+
+#: scene/3d/light.cpp
+#, fuzzy
+msgid "Split 3"
+msgstr "拆分路徑"
+
+#: scene/3d/light.cpp
+#, fuzzy
msgid "Blend Splits"
msgstr "æ··åˆæ™‚間:"
#: scene/3d/light.cpp
#, fuzzy
+msgid "Bias Split Scale"
+msgstr "使用縮放å¸é™„"
+
+#: scene/3d/light.cpp
+#, fuzzy
msgid "Depth Range"
msgstr "深度"
@@ -20499,6 +21963,11 @@ msgstr "角度大於 90 度的 SpotLight 無法投射出陰影。"
msgid "Spot"
msgstr ""
+#: scene/3d/light.cpp
+#, fuzzy
+msgid "Angle Attenuation"
+msgstr "å‹•ç•«"
+
#: scene/3d/mesh_instance.cpp
msgid "Software Skinning"
msgstr ""
@@ -20637,6 +22106,63 @@ msgstr "類比軸"
#: scene/3d/physics_body.cpp
#, fuzzy
+msgid "Linear X"
+msgstr "線性"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Linear Y"
+msgstr "線性"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Linear Z"
+msgstr "線性"
+
+#: scene/3d/physics_body.cpp
+msgid "Angular X"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Angular Y"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid "Angular Z"
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Motion X"
+msgstr "æ“作"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Motion Y"
+msgstr "æ“作"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Motion Z"
+msgstr "æ“作"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Move Lock X"
+msgstr "移動節點"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Move Lock Y"
+msgstr "移動節點"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
+msgid "Move Lock Z"
+msgstr "移動節點"
+
+#: scene/3d/physics_body.cpp
+#, fuzzy
msgid "Body Offset"
msgstr "å移:"
@@ -20670,6 +22196,15 @@ msgid "Exclude Nodes"
msgstr "刪除節點"
#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Params"
+msgstr "å·²æ›´æ”¹åƒæ•¸ï¼š"
+
+#: scene/3d/physics_joint.cpp
+msgid "Impulse Clamp"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit"
msgstr ""
@@ -20683,6 +22218,55 @@ msgstr "大寫"
msgid "Lower"
msgstr "å°å¯«"
+#: scene/3d/physics_joint.cpp scene/3d/vehicle_body.cpp
+#, fuzzy
+msgid "Relaxation"
+msgstr "分隔:"
+
+#: scene/3d/physics_joint.cpp
+msgid "Motor"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Target Velocity"
+msgstr "å‘å³ç’°è¦–"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Max Impulse"
+msgstr "速度:"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit"
+msgstr "線性"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Upper Distance"
+msgstr "鏿“‡è·é›¢ï¼š"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Lower Distance"
+msgstr "鏿“‡è·é›¢ï¼š"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Restitution"
+msgstr "說明"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motion"
+msgstr "åˆå§‹åŒ–"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Ortho"
+msgstr "正交後視圖"
+
#: scene/3d/physics_joint.cpp
#, fuzzy
msgid "Upper Angle"
@@ -20695,6 +22279,16 @@ msgstr "å°å¯«"
#: scene/3d/physics_joint.cpp
#, fuzzy
+msgid "Angular Motion"
+msgstr "å‹•ç•«"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Angular Ortho"
+msgstr "最大角度誤差:"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
msgid "Swing Span"
msgstr "正在ä¿å­˜å ´æ™¯"
@@ -20703,17 +22297,99 @@ msgid "Twist Span"
msgstr ""
#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit X"
+msgstr "線性"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motor X"
+msgstr "åˆå§‹åŒ–"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Force Limit"
+msgstr "繪製呼å«ï¼š"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Spring X"
+msgstr "線性"
+
+#: scene/3d/physics_joint.cpp
+msgid "Equilibrium Point"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit X"
msgstr ""
#: scene/3d/physics_joint.cpp
+msgid "Erp"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Motor X"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Spring X"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit Y"
+msgstr "線性"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motor Y"
+msgstr "åˆå§‹åŒ–"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Spring Y"
+msgstr "線性"
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit Y"
msgstr ""
#: scene/3d/physics_joint.cpp
+msgid "Angular Motor Y"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Spring Y"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Limit Z"
+msgstr "線性"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Motor Z"
+msgstr "åˆå§‹åŒ–"
+
+#: scene/3d/physics_joint.cpp
+#, fuzzy
+msgid "Linear Spring Z"
+msgstr "線性"
+
+#: scene/3d/physics_joint.cpp
msgid "Angular Limit Z"
msgstr ""
+#: scene/3d/physics_joint.cpp
+msgid "Angular Motor Z"
+msgstr ""
+
+#: scene/3d/physics_joint.cpp
+msgid "Angular Spring Z"
+msgstr ""
+
#: scene/3d/portal.cpp
msgid "The RoomManager should not be a child or grandchild of a Portal."
msgstr "RoomManager䏿‡‰ç‚ºå…¥å£çš„å­æˆ–孫節點。"
@@ -20834,7 +22510,7 @@ msgstr ""
msgid "Use Default Simplify"
msgstr ""
-#: scene/3d/room.cpp
+#: scene/3d/room.cpp scene/3d/room_manager.cpp
msgid "Room Simplify"
msgstr ""
@@ -20875,6 +22551,13 @@ msgstr "在SceneTree中僅能有一個RoomManager。"
msgid "Main"
msgstr ""
+#: scene/3d/room_manager.cpp scene/animation/animation_player.cpp
+#: scene/animation/animation_tree.cpp scene/animation/animation_tree_player.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+#, fuzzy
+msgid "Active"
+msgstr "æ“作"
+
#: scene/3d/room_manager.cpp
msgid "Roomlist"
msgstr ""
@@ -20899,6 +22582,54 @@ msgid "Gameplay"
msgstr ""
#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Gameplay Monitor"
+msgstr "檢視程å¼"
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Use Secondary PVS"
+msgstr "使用縮放å¸é™„"
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Merge Meshes"
+msgstr "網格"
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Show Margins"
+msgstr "顯示原點"
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Debug Sprawl"
+msgstr "åµéŒ¯"
+
+#: scene/3d/room_manager.cpp
+msgid "Overlap Warning Threshold"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Preview Camera"
+msgstr "é è¦½"
+
+#: scene/3d/room_manager.cpp
+msgid "Portal Depth Limit"
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Default Portal Margin"
+msgstr "設定外邊è·"
+
+#: scene/3d/room_manager.cpp
+#, fuzzy
+msgid "Roaming Expansion Margin"
+msgstr "展開全部"
+
+#: scene/3d/room_manager.cpp
msgid ""
"RoomList path is invalid.\n"
"Please check the RoomList branch has been assigned in the RoomManager."
@@ -21034,6 +22765,20 @@ msgstr "åƒç´ å¸é™„"
msgid "Billboard"
msgstr ""
+#: scene/3d/sprite_3d.cpp scene/resources/material.cpp
+#, fuzzy
+msgid "Transparent"
+msgstr "切æ›è¡Œåˆ—(縱橫)顯示"
+
+#: scene/3d/sprite_3d.cpp
+#, fuzzy
+msgid "Shaded"
+msgstr "著色器"
+
+#: scene/3d/sprite_3d.cpp
+msgid "Double Sided"
+msgstr ""
+
#: scene/3d/sprite_3d.cpp
msgid "Alpha Cut"
msgstr ""
@@ -21109,11 +22854,6 @@ msgstr "設定表示å¼"
msgid "Max Force"
msgstr "錯誤"
-#: scene/3d/vehicle_body.cpp
-#, fuzzy
-msgid "Relaxation"
-msgstr "分隔:"
-
#: scene/3d/visibility_notifier.cpp
msgid "AABB"
msgstr ""
@@ -21255,7 +22995,7 @@ msgstr "淡入與淡出時間(秒):"
#: scene/animation/animation_blend_tree.cpp
#, fuzzy
-msgid "autorestart_"
+msgid "Auto Restart"
msgstr "è‡ªå‹•é‡æ–°é–‹å§‹ï¼š"
#: scene/animation/animation_blend_tree.cpp
@@ -21341,13 +23081,6 @@ msgstr "類別é¸é …:"
msgid "Default Blend Time"
msgstr "é è¨­ä¸»é¡Œ"
-#: scene/animation/animation_player.cpp scene/animation/animation_tree.cpp
-#: scene/animation/animation_tree_player.cpp
-#: servers/audio/effects/audio_effect_delay.cpp
-#, fuzzy
-msgid "Active"
-msgstr "æ“作"
-
#: scene/animation/animation_player.cpp
msgid "Method Call Mode"
msgstr ""
@@ -21471,10 +23204,6 @@ msgstr "é‡è¨­æ¯ç¯€é»ž"
msgid "Max Iterations"
msgstr "產生函å¼"
-#: scene/animation/tween.cpp scene/resources/texture.cpp
-msgid "Repeat"
-msgstr ""
-
#: scene/animation/tween.cpp
msgid "Playback Process Mode"
msgstr ""
@@ -21505,20 +23234,6 @@ msgstr "鏿“‡æ¨¡å¼"
msgid "Alignment"
msgstr ""
-#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
-#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
-#: scene/resources/style_box.cpp
-#, fuzzy
-msgid "Horizontal"
-msgstr "水平:"
-
-#: scene/gui/aspect_ratio_container.cpp scene/gui/control.cpp
-#: scene/gui/nine_patch_rect.cpp scene/gui/scroll_container.cpp
-#: scene/resources/style_box.cpp
-#, fuzzy
-msgid "Vertical"
-msgstr "垂直:"
-
#: scene/gui/base_button.cpp
#, fuzzy
msgid "Shortcut In Tooltip"
@@ -21621,10 +23336,6 @@ msgid "HSV"
msgstr "HSV"
#: scene/gui/color_picker.cpp
-msgid "Raw"
-msgstr "原始"
-
-#: scene/gui/color_picker.cpp
msgid "Switch between hexadecimal and code values."
msgstr "在 16 進ä½èˆ‡ä»£ç¢¼å€¼ä¹‹é–“切æ›ã€‚"
@@ -21690,6 +23401,31 @@ msgid "Focus"
msgstr "èšç„¦è·¯å¾‘"
#: scene/gui/control.cpp
+msgid "Neighbour Left"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Neighbour Top"
+msgstr ""
+
+#: scene/gui/control.cpp
+msgid "Neighbour Right"
+msgstr ""
+
+#: scene/gui/control.cpp
+#, fuzzy
+msgid "Neighbour Bottom"
+msgstr "中下"
+
+#: scene/gui/control.cpp
+msgid "Next"
+msgstr "下一é "
+
+#: scene/gui/control.cpp
+msgid "Previous"
+msgstr "上一é "
+
+#: scene/gui/control.cpp
msgid "Mouse"
msgstr ""
@@ -21727,7 +23463,7 @@ msgid "Dialog"
msgstr "XForm å°è©±æ¡†"
#: scene/gui/dialogs.cpp
-msgid "Hide On Ok"
+msgid "Hide On OK"
msgstr ""
#: scene/gui/dialogs.cpp scene/gui/label.cpp
@@ -21826,7 +23562,7 @@ msgid "Timers"
msgstr "時間"
#: scene/gui/item_list.cpp scene/gui/popup_menu.cpp scene/gui/tree.cpp
-msgid "Incremental Search Max Interval (msec)"
+msgid "Incremental Search Max Interval Msec"
msgstr ""
#: scene/gui/item_list.cpp scene/gui/tree.cpp
@@ -22411,6 +24147,26 @@ msgstr "中左"
msgid "Nine Patch Stretch"
msgstr "æ’值模å¼"
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Left"
+msgstr "設定外邊è·"
+
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Top"
+msgstr "設定外邊è·"
+
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Right"
+msgstr "設定外邊è·"
+
+#: scene/gui/texture_progress.cpp
+#, fuzzy
+msgid "Stretch Margin Bottom"
+msgstr "鏿“‡æ¨¡å¼"
+
#: scene/gui/tree.cpp
msgid "Custom Minimum Height"
msgstr ""
@@ -22448,8 +24204,9 @@ msgid "Paused"
msgstr ""
#: scene/gui/video_player.cpp
-msgid "Buffering (msec)"
-msgstr ""
+#, fuzzy
+msgid "Buffering Msec"
+msgstr "後視圖"
#: scene/gui/video_player.cpp
#, fuzzy
@@ -22806,6 +24563,22 @@ msgid "Shadow Atlas"
msgstr "新增åˆé›†"
#: scene/main/viewport.cpp
+msgid "Quad 0"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 1"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 2"
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid "Quad 3"
+msgstr ""
+
+#: scene/main/viewport.cpp
#, fuzzy
msgid "Canvas Transform"
msgstr "清除變æ›"
@@ -22820,6 +24593,11 @@ msgid "Tooltip Delay (sec)"
msgstr ""
#: scene/register_scene_types.cpp
+#, fuzzy
+msgid "Swap OK Cancel"
+msgstr "å–æ¶ˆ"
+
+#: scene/register_scene_types.cpp
msgid "Use hiDPI"
msgstr ""
@@ -22834,21 +24612,6 @@ msgid "Custom Font"
msgstr "剪下節點"
#: scene/resources/audio_stream_sample.cpp
-#, fuzzy
-msgid "Loop Mode"
-msgstr "移動模å¼"
-
-#: scene/resources/audio_stream_sample.cpp
-#, fuzzy
-msgid "Loop Begin"
-msgstr "移動模å¼"
-
-#: scene/resources/audio_stream_sample.cpp
-#, fuzzy
-msgid "Loop End"
-msgstr "移動模å¼"
-
-#: scene/resources/audio_stream_sample.cpp
#: servers/audio/effects/audio_stream_generator.cpp servers/audio_server.cpp
#, fuzzy
msgid "Mix Rate"
@@ -22908,6 +24671,17 @@ msgstr "更多é¸é …:"
#: scene/resources/dynamic_font.cpp
#, fuzzy
+msgid "Char"
+msgstr "å¯ä½¿ç”¨çš„字元:"
+
+#: scene/resources/dynamic_font.cpp scene/resources/world.cpp
+#: scene/resources/world_2d.cpp
+#, fuzzy
+msgid "Space"
+msgstr "主場景"
+
+#: scene/resources/dynamic_font.cpp
+#, fuzzy
msgid "Font"
msgstr "å­—é«”"
@@ -23135,6 +24909,43 @@ msgid "Glow"
msgstr ""
#: scene/resources/environment.cpp
+#, fuzzy
+msgid "Levels"
+msgstr "開發人員"
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "1"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "2"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "3"
+msgstr ""
+
+#: scene/resources/environment.cpp
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "4"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "5"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "6"
+msgstr ""
+
+#: scene/resources/environment.cpp
+msgid "7"
+msgstr ""
+
+#: scene/resources/environment.cpp
msgid "Bloom"
msgstr ""
@@ -23227,10 +25038,68 @@ msgid "Next Pass"
msgstr "下一個平é¢"
#: scene/resources/material.cpp
+msgid "Use Shadow To Opacity"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Unshaded"
+msgstr "顯示無陰影"
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Vertex Lighting"
+msgstr "呿€§å…‰ç…§"
+
+#: scene/resources/material.cpp
+msgid "No Depth Test"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Use Point Size"
+msgstr "å‰è¦–圖"
+
+#: scene/resources/material.cpp
+msgid "World Triplanar"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Fixed Size"
+msgstr "å‰è¦–圖"
+
+#: scene/resources/material.cpp
+msgid "Albedo Tex Force sRGB"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Do Not Receive Shadows"
+msgstr ""
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Disable Ambient Light"
+msgstr "å‘å³ç¸®æŽ’"
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Ensure Correct Normals"
+msgstr "已中止變æ›ã€‚"
+
+#: scene/resources/material.cpp
#, fuzzy
msgid "Vertex Color"
msgstr "頂點"
+#: scene/resources/material.cpp
+msgid "Use As Albedo"
+msgstr ""
+
+#: scene/resources/material.cpp
+msgid "Is sRGB"
+msgstr ""
+
#: scene/resources/material.cpp servers/visual_server.cpp
#, fuzzy
msgid "Parameters"
@@ -23267,6 +25136,11 @@ msgid "Billboard Mode"
msgstr "å°ºè¦æ¨¡å¼"
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Billboard Keep Scale"
+msgstr "å°ºè¦æ¨¡å¼"
+
+#: scene/resources/material.cpp
msgid "Grow"
msgstr ""
@@ -23276,6 +25150,10 @@ msgid "Grow Amount"
msgstr "數é‡ï¼š"
#: scene/resources/material.cpp
+msgid "Use Alpha Scissor"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Alpha Scissor Threshold"
msgstr ""
@@ -23307,10 +25185,20 @@ msgid "Metallic Specular"
msgstr ""
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Metallic Texture"
+msgstr "發射æºï¼š "
+
+#: scene/resources/material.cpp
msgid "Metallic Texture Channel"
msgstr ""
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Roughness Texture"
+msgstr "移除紋ç†"
+
+#: scene/resources/material.cpp
msgid "Roughness Texture Channel"
msgstr ""
@@ -23330,6 +25218,16 @@ msgid "Emission Operator"
msgstr "發射色彩"
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Emission On UV2"
+msgstr "發射é®ç½©"
+
+#: scene/resources/material.cpp
+#, fuzzy
+msgid "Emission Texture"
+msgstr "發射æºï¼š "
+
+#: scene/resources/material.cpp
msgid "NormalMap"
msgstr ""
@@ -23344,6 +25242,11 @@ msgstr "隨機傾斜:"
#: scene/resources/material.cpp
#, fuzzy
+msgid "Rim Texture"
+msgstr "移除紋ç†"
+
+#: scene/resources/material.cpp
+#, fuzzy
msgid "Clearcoat"
msgstr "清除"
@@ -23353,15 +25256,28 @@ msgid "Clearcoat Gloss"
msgstr "清除姿勢"
#: scene/resources/material.cpp
+#, fuzzy
+msgid "Clearcoat Texture"
+msgstr "編輯器主題"
+
+#: scene/resources/material.cpp
msgid "Anisotropy"
msgstr ""
#: scene/resources/material.cpp
+msgid "Anisotropy Flowmap"
+msgstr ""
+
+#: scene/resources/material.cpp
#, fuzzy
msgid "Ambient Occlusion"
msgstr "鮿“‹"
#: scene/resources/material.cpp
+msgid "On UV2"
+msgstr ""
+
+#: scene/resources/material.cpp
#, fuzzy
msgid "Texture Channel"
msgstr "ç´‹ç†è²¼åœ–å€åŸŸ"
@@ -23400,6 +25316,11 @@ msgstr "轉場: "
#: scene/resources/material.cpp
#, fuzzy
+msgid "Transmission Texture"
+msgstr "轉場: "
+
+#: scene/resources/material.cpp
+#, fuzzy
msgid "Refraction"
msgstr "分隔:"
@@ -23418,6 +25339,10 @@ msgid "UV1"
msgstr "UV"
#: scene/resources/material.cpp
+msgid "Triplanar"
+msgstr ""
+
+#: scene/resources/material.cpp
msgid "Triplanar Sharpness"
msgstr ""
@@ -23628,6 +25553,16 @@ msgstr "編輯器主題"
msgid "Point Count"
msgstr "新增輸入埠å£"
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Scale Random"
+msgstr "縮放比例:"
+
+#: scene/resources/particles_material.cpp
+#, fuzzy
+msgid "Scale Curve"
+msgstr "關閉曲線"
+
#: scene/resources/physics_material.cpp
msgid "Rough"
msgstr ""
@@ -23690,10 +25625,6 @@ msgid "A"
msgstr ""
#: scene/resources/shader.cpp
-msgid "Code"
-msgstr ""
-
-#: scene/resources/shader.cpp
#, fuzzy
msgid "Custom Defines"
msgstr "執行自定義場景"
@@ -23790,15 +25721,6 @@ msgstr ""
#: scene/resources/texture.cpp
#, fuzzy
-msgid "Storage"
-msgstr "儲存檔案:"
-
-#: scene/resources/texture.cpp
-msgid "Lossy Quality"
-msgstr ""
-
-#: scene/resources/texture.cpp
-#, fuzzy
msgid "Load Path"
msgstr "載入é è¨­è¨­å®š"
@@ -23927,11 +25849,6 @@ msgstr "該型別的比較函å¼ç„¡æ•ˆã€‚"
msgid "Fallback Environment"
msgstr "檢視環境"
-#: scene/resources/world.cpp scene/resources/world_2d.cpp
-#, fuzzy
-msgid "Space"
-msgstr "主場景"
-
#: scene/resources/world.cpp
#, fuzzy
msgid "Scenario"
@@ -24012,10 +25929,37 @@ msgstr ""
msgid "Wet"
msgstr ""
-#: servers/audio/effects/audio_effect_compressor.cpp
-msgid "Threshold"
+#: servers/audio/effects/audio_effect_chorus.cpp
+msgid "Voice"
msgstr ""
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+msgid "Delay (ms)"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_phaser.cpp
+msgid "Rate Hz"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#, fuzzy
+msgid "Depth (ms)"
+msgstr "深度"
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+msgid "Level dB"
+msgstr ""
+
+#: servers/audio/effects/audio_effect_chorus.cpp
+#: servers/audio/effects/audio_effect_delay.cpp
+#: servers/audio/effects/audio_effect_panner.cpp
+#, fuzzy
+msgid "Pan"
+msgstr "å¹³é¢ï¼š"
+
#: servers/audio/effects/audio_effect_compressor.cpp
#: servers/audio/effects/audio_effect_filter.cpp
msgid "Gain"
@@ -24039,20 +25983,6 @@ msgid "Tap 1"
msgstr ""
#: servers/audio/effects/audio_effect_delay.cpp
-msgid "Delay (ms)"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_delay.cpp
-msgid "Level dB"
-msgstr ""
-
-#: servers/audio/effects/audio_effect_delay.cpp
-#: servers/audio/effects/audio_effect_panner.cpp
-#, fuzzy
-msgid "Pan"
-msgstr "å¹³é¢ï¼š"
-
-#: servers/audio/effects/audio_effect_delay.cpp
msgid "Tap 2"
msgstr ""
@@ -24114,10 +26044,6 @@ msgstr ""
msgid "Range Max Hz"
msgstr ""
-#: servers/audio/effects/audio_effect_phaser.cpp
-msgid "Rate Hz"
-msgstr ""
-
#: servers/audio/effects/audio_effect_pitch_shift.cpp
msgid "Oversampling"
msgstr ""
@@ -24133,7 +26059,7 @@ msgid "Predelay"
msgstr ""
#: servers/audio/effects/audio_effect_reverb.cpp
-msgid "(msec)"
+msgid "Msec"
msgstr ""
#: servers/audio/effects/audio_effect_reverb.cpp
diff --git a/main/main.cpp b/main/main.cpp
index f41fa136ba..89b56a814e 100644
--- a/main/main.cpp
+++ b/main/main.cpp
@@ -1488,6 +1488,28 @@ Error Main::setup(const char *execpath, int argc, char *argv[], bool p_second_ph
GLOBAL_DEF("display/window/ios/hide_home_indicator", true);
GLOBAL_DEF("input_devices/pointing/ios/touch_delay", 0.150);
+ // XR project settings.
+ GLOBAL_DEF_BASIC("xr/openxr/enabled", false);
+ GLOBAL_DEF_BASIC("xr/openxr/default_action_map", "res://default_action_map.tres");
+ ProjectSettings::get_singleton()->set_custom_property_info("xr/openxr/default_action_map", PropertyInfo(Variant::STRING, "xr/openxr/default_action_map", PROPERTY_HINT_FILE, "*.tres"));
+
+ GLOBAL_DEF_BASIC("xr/openxr/form_factor", "0");
+ ProjectSettings::get_singleton()->set_custom_property_info("xr/openxr/form_factor", PropertyInfo(Variant::INT, "xr/openxr/form_factor", PROPERTY_HINT_ENUM, "Head mounted,Handheld"));
+
+ GLOBAL_DEF_BASIC("xr/openxr/view_configuration", "1");
+ ProjectSettings::get_singleton()->set_custom_property_info("xr/openxr/view_configuration", PropertyInfo(Variant::INT, "xr/openxr/view_configuration", PROPERTY_HINT_ENUM, "Mono,Stereo")); // "Mono,Stereo,Quad,Observer"
+
+ GLOBAL_DEF_BASIC("xr/openxr/reference_space", "1");
+ ProjectSettings::get_singleton()->set_custom_property_info("xr/openxr/reference_space", PropertyInfo(Variant::INT, "xr/openxr/reference_space", PROPERTY_HINT_ENUM, "Local,Stage"));
+
+#ifdef TOOLS_ENABLED
+ // Disabled for now, using XR inside of the editor we'll be working on during the coming months.
+
+ // editor settings (it seems we're too early in the process when setting up rendering, to access editor settings...)
+ // EDITOR_DEF_RST("xr/openxr/in_editor", false);
+ // GLOBAL_DEF("xr/openxr/in_editor", false);
+#endif
+
Engine::get_singleton()->set_frame_delay(frame_delay);
message_queue = memnew(MessageQueue);
@@ -2276,9 +2298,10 @@ bool Main::start() {
bool embed_subwindows = GLOBAL_DEF("display/window/subwindows/embed_subwindows", true);
- if (OS::get_singleton()->is_single_window() || (!project_manager && !editor && embed_subwindows)) {
+ if (OS::get_singleton()->is_single_window() || (!project_manager && !editor && embed_subwindows) || !DisplayServer::get_singleton()->has_feature(DisplayServer::Feature::FEATURE_SUBWINDOWS)) {
sml->get_root()->set_embedding_subwindows(true);
}
+
ResourceLoader::add_custom_loaders();
ResourceSaver::add_custom_savers();
diff --git a/misc/scripts/clang_format.sh b/misc/scripts/clang_format.sh
index 13b5ab79b6..5ab9c1bbb9 100755
--- a/misc/scripts/clang_format.sh
+++ b/misc/scripts/clang_format.sh
@@ -19,6 +19,10 @@ while read -r f; do
continue
elif [[ "$f" == "platform/android/java/lib/src/org/godotengine/godot/input/InputManager"* ]]; then
continue
+ elif [[ "$f" == "platform/android/java/lib/src/org/godotengine/godot/gl/GLSurfaceView"* ]]; then
+ continue
+ elif [[ "$f" == "platform/android/java/lib/src/org/godotengine/godot/gl/EGLLogWrapper"* ]]; then
+ continue
fi
python misc/scripts/copyright_headers.py "$f"
diff --git a/misc/scripts/codespell.sh b/misc/scripts/codespell.sh
index 2822c6421b..7c5f824b5e 100644
--- a/misc/scripts/codespell.sh
+++ b/misc/scripts/codespell.sh
@@ -1,5 +1,5 @@
#!/bin/sh
SKIP_LIST="./thirdparty,*.gen.*,*.po,*.pot,package-lock.json,./core/string/locales.h,./DONORS.md,./misc/scripts/codespell.sh"
-IGNORE_LIST="ba,childs,curvelinear,expct,fave,findn,gird,inout,lod,nd,numer,ois,ro,statics,te,varn"
+IGNORE_LIST="ba,childs,complies,curvelinear,expct,fave,findn,gird,inout,lod,nd,numer,ois,ro,statics,te,varn"
codespell -w -q 3 -S "${SKIP_LIST}" -L "${IGNORE_LIST}"
diff --git a/modules/basis_universal/SCsub b/modules/basis_universal/SCsub
index 1f9fde966d..a44a7f0db3 100644
--- a/modules/basis_universal/SCsub
+++ b/modules/basis_universal/SCsub
@@ -13,16 +13,14 @@ thirdparty_obj = []
thirdparty_dir = "#thirdparty/basis_universal/"
# Sync list with upstream CMakeLists.txt
encoder_sources = [
- "apg_bmp.c",
- "basisu_astc_decomp.cpp",
"basisu_backend.cpp",
"basisu_basis_file.cpp",
"basisu_bc7enc.cpp",
+ "basisu_opencl.cpp",
"basisu_comp.cpp",
"basisu_enc.cpp",
"basisu_etc.cpp",
"basisu_frontend.cpp",
- "basisu_global_selector_palette_helpers.cpp",
"basisu_gpu_texture.cpp",
"basisu_kernels_sse.cpp",
"basisu_pvrtc1_4.cpp",
@@ -31,7 +29,7 @@ encoder_sources = [
"basisu_ssim.cpp",
"basisu_uastc_enc.cpp",
"jpgd.cpp",
- "lodepng.cpp",
+ "pvpngreader.cpp",
]
encoder_sources = [thirdparty_dir + "encoder/" + file for file in encoder_sources]
transcoder_sources = [thirdparty_dir + "transcoder/basisu_transcoder.cpp"]
diff --git a/modules/basis_universal/register_types.cpp b/modules/basis_universal/register_types.cpp
index a3c662ba08..4c2ebe603f 100644
--- a/modules/basis_universal/register_types.cpp
+++ b/modules/basis_universal/register_types.cpp
@@ -49,8 +49,6 @@ enum BasisDecompressFormat {
//workaround for lack of ETC2 RG
#define USE_RG_AS_RGBA
-basist::etc1_global_selector_codebook *sel_codebook = nullptr;
-
#ifdef TOOLS_ENABLED
static Vector<uint8_t> basis_universal_packer(const Ref<Image> &p_image, Image::UsedChannels p_channels) {
Vector<uint8_t> budata;
@@ -77,18 +75,14 @@ static Vector<uint8_t> basis_universal_packer(const Ref<Image> &p_image, Image::
memcpy(buimg.get_ptr(), r, vec.size());
}
- //image->save_png("pepeche.png");
-
basisu::basis_compressor_params params;
+ params.m_uastc = true;
params.m_max_endpoint_clusters = 512;
params.m_max_selector_clusters = 512;
params.m_multithreading = true;
- //params.m_no_hybrid_sel_cb = true; //fixme, default on this causes crashes //seems fixed?
- params.m_pSel_codebook = sel_codebook;
//params.m_quality_level = 0;
//params.m_disable_hierarchical_endpoint_codebooks = true;
//params.m_no_selector_rdo = true;
- params.m_auto_global_sel_pal = false;
basisu::job_pool jpool(OS::get_singleton()->get_processor_count());
params.m_pJob_pool = &jpool;
@@ -149,12 +143,11 @@ static Vector<uint8_t> basis_universal_packer(const Ref<Image> &p_image, Image::
}
#endif // TOOLS_ENABLED
-static Ref<Image> basis_universal_unpacker(const Vector<uint8_t> &p_buffer) {
+static Ref<Image> basis_universal_unpacker_ptr(const uint8_t *p_data, int p_size) {
Ref<Image> image;
- const uint8_t *r = p_buffer.ptr();
- const uint8_t *ptr = r;
- int size = p_buffer.size();
+ const uint8_t *ptr = p_data;
+ int size = p_size;
basist::transcoder_texture_format format = basist::transcoder_texture_format::cTFTotalTextureFormats;
Image::Format imgfmt = Image::FORMAT_MAX;
@@ -225,7 +218,7 @@ static Ref<Image> basis_universal_unpacker(const Vector<uint8_t> &p_buffer) {
ptr += 4;
size -= 4;
- basist::basisu_transcoder tr(nullptr);
+ basist::basisu_transcoder tr;
ERR_FAIL_COND_V(!tr.validate_header(ptr, size), image);
@@ -265,18 +258,29 @@ static Ref<Image> basis_universal_unpacker(const Vector<uint8_t> &p_buffer) {
return image;
}
+static Ref<Image> basis_universal_unpacker(const Vector<uint8_t> &p_buffer) {
+ Ref<Image> image;
+
+ const uint8_t *r = p_buffer.ptr();
+ int size = p_buffer.size();
+ return basis_universal_unpacker_ptr(r, size);
+}
+
void register_basis_universal_types() {
#ifdef TOOLS_ENABLED
- sel_codebook = new basist::etc1_global_selector_codebook(basist::g_global_selector_cb_size, basist::g_global_selector_cb);
+ using namespace basisu;
+ using namespace basist;
+ basisu_encoder_init();
Image::basis_universal_packer = basis_universal_packer;
#endif
Image::basis_universal_unpacker = basis_universal_unpacker;
+ Image::basis_universal_unpacker_ptr = basis_universal_unpacker_ptr;
}
void unregister_basis_universal_types() {
#ifdef TOOLS_ENABLED
- delete sel_codebook;
Image::basis_universal_packer = nullptr;
#endif
Image::basis_universal_unpacker = nullptr;
+ Image::basis_universal_unpacker_ptr = nullptr;
}
diff --git a/modules/csg/SCsub b/modules/csg/SCsub
index 641a42c187..c7307ddefd 100644
--- a/modules/csg/SCsub
+++ b/modules/csg/SCsub
@@ -3,7 +3,10 @@
Import("env")
Import("env_modules")
+# Godot's own source files
env_csg = env_modules.Clone()
# Godot's own source files
env_csg.add_source_files(env.modules_sources, "*.cpp")
+if env["tools"]:
+ env_csg.add_source_files(env.modules_sources, "editor/*.cpp")
diff --git a/modules/csg/csg_gizmos.cpp b/modules/csg/editor/csg_gizmos.cpp
index 95a0fc7ada..be29810252 100644
--- a/modules/csg/csg_gizmos.cpp
+++ b/modules/csg/editor/csg_gizmos.cpp
@@ -30,6 +30,8 @@
#include "csg_gizmos.h"
+#ifdef TOOLS_ENABLED
+
#include "editor/editor_settings.h"
#include "editor/plugins/node_3d_editor_plugin.h"
#include "scene/3d/camera_3d.h"
@@ -425,3 +427,5 @@ EditorPluginCSG::EditorPluginCSG() {
Ref<CSGShape3DGizmoPlugin> gizmo_plugin = Ref<CSGShape3DGizmoPlugin>(memnew(CSGShape3DGizmoPlugin));
Node3DEditor::get_singleton()->add_gizmo_plugin(gizmo_plugin);
}
+
+#endif // TOOLS_ENABLED
diff --git a/modules/csg/csg_gizmos.h b/modules/csg/editor/csg_gizmos.h
index 43efe57e64..fa51010f98 100644
--- a/modules/csg/csg_gizmos.h
+++ b/modules/csg/editor/csg_gizmos.h
@@ -31,7 +31,9 @@
#ifndef CSG_GIZMOS_H
#define CSG_GIZMOS_H
-#include "csg_shape.h"
+#ifdef TOOLS_ENABLED
+
+#include "../csg_shape.h"
#include "editor/editor_plugin.h"
#include "editor/plugins/node_3d_editor_gizmos.h"
@@ -60,4 +62,6 @@ public:
EditorPluginCSG();
};
+#endif // TOOLS_ENABLED
+
#endif // CSG_GIZMOS_H
diff --git a/modules/csg/register_types.cpp b/modules/csg/register_types.cpp
index f8db42b1a9..72ed027dc9 100644
--- a/modules/csg/register_types.cpp
+++ b/modules/csg/register_types.cpp
@@ -30,12 +30,15 @@
#include "register_types.h"
-#include "csg_gizmos.h"
+#ifndef _3D_DISABLED
+
#include "csg_shape.h"
-void register_csg_types() {
-#ifndef _3D_DISABLED
+#ifdef TOOLS_ENABLED
+#include "editor/csg_gizmos.h"
+#endif
+void register_csg_types() {
GDREGISTER_ABSTRACT_CLASS(CSGShape3D);
GDREGISTER_ABSTRACT_CLASS(CSGPrimitive3D);
GDREGISTER_CLASS(CSGMesh3D);
@@ -49,8 +52,9 @@ void register_csg_types() {
#ifdef TOOLS_ENABLED
EditorPlugins::add_by_type<EditorPluginCSG>();
#endif
-#endif
}
void unregister_csg_types() {
}
+
+#endif // _3D_DISABLED
diff --git a/modules/fbx/README.md b/modules/fbx/README.md
deleted file mode 100644
index 8eca4bd3c9..0000000000
--- a/modules/fbx/README.md
+++ /dev/null
@@ -1,196 +0,0 @@
-# Open Source FBX Specification for the Importer
-
-The goal of this document is to make everything in FBX clearly stated, any errors will be corrected over time this
-is a first draft.
-
-## fbx parser - originally from assimp
-
-- Folder: /modules/fbx/fbx_parser
-- Upstream: assimp
-- Original Version: git (308db73d0b3c2d1870cd3e465eaa283692a4cf23, 2019)
-- License: BSD-3-Clause
-
-This can never be updated from upstream, we have heavily modified the parser to provide memory safety and add some
-functionality. If anything we should give this parser back to assimp at some point as it has a lot of new features.
-
-# Updating assimp fbx parser
-
-Don't. It's not possible the code is rewritten in many areas to remove thirdparty deps and various bugs are fixed.
-
-Many days were put into rewriting the parser to use safe code and safe memory accessors.
-
-# File Headers
-
-FBX Binaries start with the header "Kaydara FBX Binary"
-
-FBX ASCII documents contain a larger header, sometimes with copyright information for a file.
-
-Detecting these is pretty simple.
-
-# What is an OP link?
-It's an object to property link. It lists the properties for that object in some cases. Source and destination based by
-ID.
-
-# What is a OO link?
-Its an object to object link, it contains the ID source and destination ID.
-
-# FBX Node connections
-
-Nodes in FBX are connected using OO links, This means Object to Object.
-
-FBX has a single other kind of link which is Object Property, this is used for Object to Property Links, this can be
- extra attributes, defaults, or even some simple settings.
-
-# Bones / Joints / Locators
-
-Bones in FBX are nodes, they initially have the Model:: Type, then have links to SubDeformer the sub deformer
-is part of the skin there is also an explicit Skin link, which then links to the geometry using OO links in the
-document.
-
-# Rotation Order in FBX compared to Godot
-
-**Godot uses the rotation order:** YXZ
-
-**FBX has dynamic rotation order to prevent gimbal lock with complex animations**
-
-```cpp
-enum RotOrder {
- RotOrder_EulerXYZ = 0
- RotOrder_EulerXZY,
- RotOrder_EulerYZX,
- RotOrder_EulerYXZ,
- RotOrder_EulerZXY,
- RotOrder_EulerZYX,
- RotOrder_SphericXYZ // nobody uses this - as far as we can tell
-};
-```
-
-
-# Pivot transforms
-
-### Pivot description:
-- Maya and 3DS max consider everything to be in node space (bones joints, skins, lights, cameras, etc)
-- Everything is a node, this means essentially nodes are auto or variants
-- They are local to the node in the tree.
-- They are used to calculate where a node is in space
-```c++
-// For a better reference you can check editor_scene_importer_fbx.h
-// references: GenFBXTransform / read the data in
-// references: ComputePivotTransform / run the calculation
-// This is the local pivot transform for the node, not the global transforms
-Transform ComputePivotTransform(
- Transform3D chain[TransformationComp_MAXIMUM],
- Transform3D &geometric_transform) {
- // Maya pivots
- Transform3D T = chain[TransformationComp_Translation];
- Transform3D Roff = chain[TransformationComp_RotationOffset];
- Transform3D Rp = chain[TransformationComp_RotationPivot];
- Transform3D Rpre = chain[TransformationComp_PreRotation];
- Transform3D R = chain[TransformationComp_Rotation];
- Transform3D Rpost = chain[TransformationComp_PostRotation];
- Transform3D Soff = chain[TransformationComp_ScalingOffset];
- Transform3D Sp = chain[TransformationComp_ScalingPivot];
- Transform3D S = chain[TransformationComp_Scaling];
-
- // 3DS Max Pivots
- Transform3D OT = chain[TransformationComp_GeometricTranslation];
- Transform3D OR = chain[TransformationComp_GeometricRotation];
- Transform3D OS = chain[TransformationComp_GeometricScaling];
-
- // Calculate 3DS max pivot transform - use geometric space (e.g doesn't effect children nodes only the current node)
- geometric_transform = OT * OR * OS;
- // Calculate standard maya pivots
- return T * Roff * Rp * Rpre * R * Rpost.inverse() * Rp.inverse() * Soff * Sp * S * Sp.inverse();
-}
-```
-
-# Transform inheritance for FBX Nodes
-
-The goal of below is to explain why they implement this in the first place.
-
-The use case is to make nodes have an option to override their local scaling or to make scaling influenced by orientation, which i would imagine would be useful for when you need to rotate a node and the child to scale based on the orientation rather than setting on the rotation matrix planes.
-```cpp
-// not modified the formatting here since this code must remain clear
-enum TransformInheritance {
- Transform_RrSs = 0,
- // Parent Rotation * Local Rotation * Parent Scale * Local Scale -- Parent Rotation Offset * Parent ScalingOffset (Local scaling is offset by rotation of parent node)
- Transform_RSrs = 1, // Parent Rotation * Parent Scale * Local Rotation * Local Scale -- Parent * Local (normal mode)
- Transform_Rrs = 2, // Parent Rotation * Local Rotation * Local Scale -- Node transform scale is the only relevant component
- TransformInheritance_MAX // end-of-enum sentinel
-};
-
-enum TransformInheritance {
- Transform_RrSs = 0,
- // Local scaling is offset by rotation of parent node
- Transform_RSrs = 1,
- // Parent * Local (normal mode)
- Transform_Rrs = 2,
- // Node transform scale is the only relevant component
- TransformInheritance_MAX // end-of-enum sentinel
-};
-```
-
-# Axis in FBX
-
-Godot has one format for the declared axis
-
-AXIS X, AXIS Y, -AXIS Z
-
-FBX supports any format you can think of. As it has to support Maya and 3DS Max.
-
-#### FBX File Header
-```json
-GlobalSettings: {
- Version: 1000
- Properties70: {
- P: "UpAxis", "int", "Integer", "",1
- P: "UpAxisSign", "int", "Integer", "",1
- P: "FrontAxis", "int", "Integer", "",2
- P: "FrontAxisSign", "int", "Integer", "",1
- P: "CoordAxis", "int", "Integer", "",0
- P: "CoordAxisSign", "int", "Integer", "",1
- P: "OriginalUpAxis", "int", "Integer", "",1
- P: "OriginalUpAxisSign", "int", "Integer", "",1
- P: "UnitScaleFactor", "double", "Number", "",1
- P: "OriginalUnitScaleFactor", "double", "Number", "",1
- P: "AmbientColor", "ColorRGB", "Color", "",0,0,0
- P: "DefaultCamera", "KString", "", "", "Producer Perspective"
- P: "TimeMode", "enum", "", "",6
- P: "TimeProtocol", "enum", "", "",2
- P: "SnapOnFrameMode", "enum", "", "",0
- P: "TimeSpanStart", "KTime", "Time", "",0
- P: "TimeSpanStop", "KTime", "Time", "",92372316000
- P: "CustomFrameRate", "double", "Number", "",-1
- P: "TimeMarker", "Compound", "", ""
- P: "CurrentTimeMarker", "int", "Integer", "",-1
- }
-}
-```
-
-#### FBX FILE declares axis dynamically using FBX header
-Coord is X
-Up is Y
-Front is Z
-
-#### GODOT - constant reference point
-Coord is X positive,
-Y is up positive,
-Front is -Z negative
-
-### Explaining MeshGeometry indexing
-
-Reference type declared:
-- Direct (directly related to the mapping information type)
-- IndexToDirect (Map with key value, meaning depends on the MappingInformationType)
-
-ControlPoint is a vertex
-* None The mapping is undetermined.
-* ByVertex There will be one mapping coordinate for each surface control point/vertex.
- * If you have direct reference type vertices [x]
- * If you have IndexToDirect reference type the UV
-* ByPolygonVertex There will be one mapping coordinate for each vertex, for every polygon of which it is a part. This means that a vertex will have as many mapping coordinates as polygons of which it is a part. (Sorted by polygon, referencing vertex)
-* ByPolygon There can be only one mapping coordinate for the whole polygon.
- * One mapping per polygon polygon x has this normal x
- * For each vertex of the polygon then set the normal to x
-* ByEdge There will be one mapping coordinate for each unique edge in the mesh. This is meant to be used with smoothing layer elements. (Mapping is referencing the edge id)
-* AllSame There can be only one mapping coordinate for the whole surface.
diff --git a/modules/fbx/SCsub b/modules/fbx/SCsub
deleted file mode 100644
index 0311fddfee..0000000000
--- a/modules/fbx/SCsub
+++ /dev/null
@@ -1,18 +0,0 @@
-#!/usr/bin/env python
-
-Import("env")
-Import("env_modules")
-
-env_fbx = env_modules.Clone()
-
-# Make includes relative to the folder path specified here so our includes are clean
-env_fbx.Prepend(CPPPATH=["#modules/fbx/"])
-
-if env["builtin_zlib"]:
- env_fbx.Prepend(CPPPATH=["#thirdparty/zlib/"])
-
-# Godot's own source files
-env_fbx.add_source_files(env.modules_sources, "tools/*.cpp")
-env_fbx.add_source_files(env.modules_sources, "data/*.cpp")
-env_fbx.add_source_files(env.modules_sources, "fbx_parser/*.cpp")
-env_fbx.add_source_files(env.modules_sources, "*.cpp")
diff --git a/modules/fbx/config.py b/modules/fbx/config.py
deleted file mode 100644
index 78929800b3..0000000000
--- a/modules/fbx/config.py
+++ /dev/null
@@ -1,16 +0,0 @@
-def can_build(env, platform):
- return env["tools"]
-
-
-def configure(env):
- pass
-
-
-def get_doc_classes():
- return [
- "EditorSceneImporterFBX",
- ]
-
-
-def get_doc_path():
- return "doc_classes"
diff --git a/modules/fbx/data/fbx_anim_container.h b/modules/fbx/data/fbx_anim_container.h
deleted file mode 100644
index 6559add858..0000000000
--- a/modules/fbx/data/fbx_anim_container.h
+++ /dev/null
@@ -1,46 +0,0 @@
-/*************************************************************************/
-/* fbx_anim_container.h */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* https://godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2022 Juan Linietsky, Ariel Manzur. */
-/* Copyright (c) 2014-2022 Godot Engine contributors (cf. AUTHORS.md). */
-/* */
-/* Permission is hereby granted, free of charge, to any person obtaining */
-/* a copy of this software and associated documentation files (the */
-/* "Software"), to deal in the Software without restriction, including */
-/* without limitation the rights to use, copy, modify, merge, publish, */
-/* distribute, sublicense, and/or sell copies of the Software, and to */
-/* permit persons to whom the Software is furnished to do so, subject to */
-/* the following conditions: */
-/* */
-/* The above copyright notice and this permission notice shall be */
-/* included in all copies or substantial portions of the Software. */
-/* */
-/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
-/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
-/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
-/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
-/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
-/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
-/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
-/*************************************************************************/
-
-#ifndef FBX_ANIM_CONTAINER_H
-#define FBX_ANIM_CONTAINER_H
-
-#include "core/math/vector3.h"
-
-// Generic keyframes 99.99 percent of files will be vector3, except if quat interp is used, or visibility tracks
-// FBXTrack is used in a map in the implementation in fbx/editor_scene_importer_fbx.cpp
-// to avoid having to rewrite the entire logic I refactored this into the code instead.
-// once it works I can rewrite so we can add the fun misc features / small features
-struct FBXTrack {
- bool has_default = false;
- Vector3 default_value;
- std::map<int64_t, Vector3> keyframes;
-};
-
-#endif //MODEL_ABSTRACTION_ANIM_CONTAINER_H
diff --git a/modules/fbx/data/fbx_material.cpp b/modules/fbx/data/fbx_material.cpp
deleted file mode 100644
index 36e20df3a9..0000000000
--- a/modules/fbx/data/fbx_material.cpp
+++ /dev/null
@@ -1,468 +0,0 @@
-/*************************************************************************/
-/* fbx_material.cpp */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* https://godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2022 Juan Linietsky, Ariel Manzur. */
-/* Copyright (c) 2014-2022 Godot Engine contributors (cf. AUTHORS.md). */
-/* */
-/* Permission is hereby granted, free of charge, to any person obtaining */
-/* a copy of this software and associated documentation files (the */
-/* "Software"), to deal in the Software without restriction, including */
-/* without limitation the rights to use, copy, modify, merge, publish, */
-/* distribute, sublicense, and/or sell copies of the Software, and to */
-/* permit persons to whom the Software is furnished to do so, subject to */
-/* the following conditions: */
-/* */
-/* The above copyright notice and this permission notice shall be */
-/* included in all copies or substantial portions of the Software. */
-/* */
-/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
-/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
-/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
-/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
-/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
-/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
-/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
-/*************************************************************************/
-
-#include "fbx_material.h"
-
-// FIXME: Shouldn't depend on core_bind.h! Use DirAccessRef like the rest of
-// the engine instead of core_bind::Directory.
-#include "core/core_bind.h"
-#include "scene/resources/material.h"
-#include "scene/resources/texture.h"
-#include "tools/validation_tools.h"
-
-String FBXMaterial::get_material_name() const {
- return material_name;
-}
-
-void FBXMaterial::set_imported_material(FBXDocParser::Material *p_material) {
- material = p_material;
-}
-
-void FBXMaterial::add_search_string(String p_filename, String p_current_directory, String search_directory, Vector<String> &texture_search_paths) {
- if (search_directory.is_empty()) {
- texture_search_paths.push_back(p_current_directory.get_base_dir().plus_file(p_filename));
- } else {
- texture_search_paths.push_back(p_current_directory.get_base_dir().plus_file(search_directory + "/" + p_filename));
- texture_search_paths.push_back(p_current_directory.get_base_dir().plus_file("../" + search_directory + "/" + p_filename));
- }
-}
-
-String find_file(const String &p_base, const String &p_file_to_find) {
- core_bind::Directory dir;
- dir.open(p_base);
-
- dir.list_dir_begin();
- String n = dir.get_next();
- while (!n.is_empty()) {
- if (n == "." || n == "..") {
- n = dir.get_next();
- continue;
- }
- if (dir.current_is_dir()) {
- // Don't use `path_to` or the returned path will be wrong.
- const String f = find_file(p_base + "/" + n, p_file_to_find);
- if (!f.is_empty()) {
- return f;
- }
- } else if (n == p_file_to_find) {
- return p_base + "/" + n;
- }
- n = dir.get_next();
- }
- dir.list_dir_end();
-
- return String();
-}
-
-// fbx will not give us good path information and let's not regex them to fix them
-// no relative paths are in fbx generally they have a rel field but it's populated incorrectly by the SDK.
-String FBXMaterial::find_texture_path_by_filename(const String p_filename, const String p_current_directory) {
- core_bind::Directory dir;
- Vector<String> paths;
- add_search_string(p_filename, p_current_directory, "", paths);
- add_search_string(p_filename, p_current_directory, "texture", paths);
- add_search_string(p_filename, p_current_directory, "textures", paths);
- add_search_string(p_filename, p_current_directory, "Textures", paths);
- add_search_string(p_filename, p_current_directory, "materials", paths);
- add_search_string(p_filename, p_current_directory, "mats", paths);
- add_search_string(p_filename, p_current_directory, "pictures", paths);
- add_search_string(p_filename, p_current_directory, "images", paths);
-
- for (int i = 0; i < paths.size(); i++) {
- if (dir.file_exists(paths[i])) {
- return paths[i];
- }
- }
-
- // We were not able to find the texture in the common locations,
- // try to find it into the project globally.
- // The common textures can be stored into one of those folders:
- // res://asset
- // res://texture
- // res://material
- // res://mat
- // res://image
- // res://picture
- //
- // Note the folders can also be called with custom names, like:
- // res://my_assets
- // since the keyword `asset` is into the directory name the textures will be
- // searched there too.
-
- dir.open("res://");
- dir.list_dir_begin();
- String n = dir.get_next();
- while (!n.is_empty()) {
- if (n == "." || n == "..") {
- n = dir.get_next();
- continue;
- }
- if (dir.current_is_dir()) {
- const String lower_n = n.to_lower();
- if (
- // Don't need to use plural.
- lower_n.find("asset") >= 0 ||
- lower_n.find("texture") >= 0 ||
- lower_n.find("material") >= 0 ||
- lower_n.find("mat") >= 0 ||
- lower_n.find("image") >= 0 ||
- lower_n.find("picture") >= 0) {
- // Don't use `path_to` or the returned path will be wrong.
- const String f = find_file(String("res://") + n, p_filename);
- if (!f.is_empty()) {
- return f;
- }
- }
- }
- n = dir.get_next();
- }
- dir.list_dir_end();
-
- return "";
-}
-
-template <class T>
-T extract_from_prop(FBXDocParser::PropertyPtr prop, const T &p_default, const std::string &p_name, const String &p_type) {
- ERR_FAIL_COND_V_MSG(prop == nullptr, p_default, "invalid property passed to extractor");
- const FBXDocParser::TypedProperty<T> *val = dynamic_cast<const FBXDocParser::TypedProperty<T> *>(prop);
-
- ERR_FAIL_COND_V_MSG(val == nullptr, p_default, "The FBX is corrupted, the property `" + String(p_name.c_str()) + "` is a `" + String(typeid(*prop).name()) + "` but should be a " + p_type);
- // Make sure to not lost any eventual opacity.
- return val->Value();
-}
-
-Ref<StandardMaterial3D> FBXMaterial::import_material(ImportState &state) {
- ERR_FAIL_COND_V(material == nullptr, nullptr);
-
- const String p_fbx_current_directory = state.path;
-
- Ref<StandardMaterial3D> spatial_material;
- spatial_material.instantiate();
-
- // read the material file
- // is material two sided
- // read material name
- print_verbose("[material] material name: " + ImportUtils::FBXNodeToName(material->Name()));
-
- material_name = ImportUtils::FBXNodeToName(material->Name());
-
- for (const std::pair<std::string, const FBXDocParser::Texture *> iter : material->Textures()) {
- const uint64_t texture_id = iter.second->ID();
- const std::string &fbx_mapping_name = iter.first;
- const FBXDocParser::Texture *fbx_texture_data = iter.second;
- const String absolute_texture_path = iter.second->FileName().c_str();
- const String texture_name = absolute_texture_path.get_file();
- const String file_extension = absolute_texture_path.get_extension().to_upper();
-
- const String debug_string = "texture id: " + itos(texture_id) + " texture name: " + String(iter.second->Name().c_str()) + " mapping name: " + String(fbx_mapping_name.c_str());
- // remember errors STILL need this string at the end for when you aren't in verbose debug mode :) they need context for when you're not verbose-ing.
- print_verbose(debug_string);
-
- const String file_extension_uppercase = file_extension.to_upper();
-
- if (fbx_transparency_flags.count(fbx_mapping_name) > 0) {
- // just enable it later let's make this fine-tuned.
- spatial_material->set_transparency(BaseMaterial3D::TRANSPARENCY_ALPHA);
- }
-
- ERR_CONTINUE_MSG(file_extension.is_empty(), "your texture has no file extension so we had to ignore it, let us know if you think this is wrong file an issue on github! " + debug_string);
- ERR_CONTINUE_MSG(fbx_texture_map.count(fbx_mapping_name) <= 0, "This material has a texture with mapping name: " + String(fbx_mapping_name.c_str()) + " which is not yet supported by this importer. Consider opening an issue so we can support it.");
- ERR_CONTINUE_MSG(
- file_extension_uppercase != "PNG" &&
- file_extension_uppercase != "JPEG" &&
- file_extension_uppercase != "JPG" &&
- file_extension_uppercase != "TGA" &&
- file_extension_uppercase != "WEBP" &&
- file_extension_uppercase != "DDS",
- "The FBX file contains a texture with an unrecognized extension: " + file_extension_uppercase);
-
- print_verbose("Getting FBX mapping mode for " + String(fbx_mapping_name.c_str()));
- // get the texture map type
- const StandardMaterial3D::TextureParam mapping_mode = fbx_texture_map.at(fbx_mapping_name);
- print_verbose("Set FBX mapping mode to " + get_texture_param_name(mapping_mode));
-
- Ref<Texture> texture;
- print_verbose("texture mapping name: " + texture_name);
-
- if (state.cached_image_searches.has(texture_name)) {
- texture = state.cached_image_searches[texture_name];
- } else {
- String path = find_texture_path_by_filename(texture_name, p_fbx_current_directory);
- if (!path.is_empty()) {
- Ref<Texture2D> image_texture = ResourceLoader::load(path);
-
- ERR_CONTINUE(image_texture.is_null());
-
- texture = image_texture;
- state.cached_image_searches.insert(texture_name, texture);
- print_verbose("Created texture from loaded image file.");
-
- } else if (fbx_texture_data != nullptr && fbx_texture_data->Media() != nullptr && fbx_texture_data->Media()->IsEmbedded()) {
- // This is an embedded texture. Extract it.
- Ref<Image> image;
- //image.instantiate(); // oooo double instance bug? why make Image::_png_blah call
-
- const String extension = texture_name.get_extension().to_upper();
- if (extension == "PNG") {
- // The stored file is a PNG.
- image = Image::_png_mem_loader_func(fbx_texture_data->Media()->Content(), fbx_texture_data->Media()->ContentLength());
- ERR_CONTINUE_MSG(image.is_valid() == false, "FBX Embedded PNG image load fail.");
-
- } else if (
- extension == "JPEG" ||
- extension == "JPG") {
- // The stored file is a JPEG.
- image = Image::_jpg_mem_loader_func(fbx_texture_data->Media()->Content(), fbx_texture_data->Media()->ContentLength());
- ERR_CONTINUE_MSG(image.is_valid() == false, "FBX Embedded JPEG image load fail.");
-
- } else if (extension == "TGA") {
- // The stored file is a TGA.
- image = Image::_tga_mem_loader_func(fbx_texture_data->Media()->Content(), fbx_texture_data->Media()->ContentLength());
- ERR_CONTINUE_MSG(image.is_valid() == false, "FBX Embedded TGA image load fail.");
-
- } else if (extension == "WEBP") {
- // The stored file is a WEBP.
- image = Image::_webp_mem_loader_func(fbx_texture_data->Media()->Content(), fbx_texture_data->Media()->ContentLength());
- ERR_CONTINUE_MSG(image.is_valid() == false, "FBX Embedded WEBP image load fail.");
-
- // } else if (extension == "DDS") {
- // // In this moment is not possible to extract a DDS from a buffer, TODO consider add it to godot. See `textureloader_dds.cpp::load().
- // // The stored file is a DDS.
- } else {
- ERR_CONTINUE_MSG(true, "The embedded image with extension: " + extension + " is not yet supported. Open an issue please.");
- }
-
- Ref<ImageTexture> image_texture;
- image_texture.instantiate();
- image_texture->create_from_image(image);
-
- texture = image_texture;
-
- // TODO: this is potentially making something with the same name have a match incorrectly USE FBX ID as Hash. #fuck it later.
- state.cached_image_searches[texture_name] = texture;
- print_verbose("Created texture from embedded image.");
- } else {
- ERR_CONTINUE_MSG(true, "The FBX texture, with name: `" + texture_name + "`, is not found into the project nor is stored as embedded file. Make sure to insert the texture as embedded file or into the project, then reimport.");
- }
- }
-
- spatial_material->set_texture(mapping_mode, texture);
- }
-
- if (spatial_material.is_valid()) {
- spatial_material->set_name(material_name);
- }
-
- /// ALL below is related to properties
- for (FBXDocParser::LazyPropertyMap::value_type iter : material->GetLazyProperties()) {
- const std::string name = iter.first;
-
- if (name.empty()) {
- continue;
- }
-
- PropertyDesc desc = PROPERTY_DESC_NOT_FOUND;
- if (fbx_properties_desc.count(name) > 0) {
- desc = fbx_properties_desc.at(name);
- }
-
- // check if we can ignore this it will be done at the next phase
- if (desc == PROPERTY_DESC_NOT_FOUND || desc == PROPERTY_DESC_IGNORE) {
- // count the texture mapping references. Skip this one if it's found and we can't look up a property value.
- if (fbx_texture_map.count(name) > 0) {
- continue; // safe to ignore it's a texture mapping.
- }
- }
-
- if (desc == PROPERTY_DESC_IGNORE) {
- //WARN_PRINT("[Ignored] The FBX material parameter: `" + String(name.c_str()) + "` is ignored.");
- continue;
- } else {
- print_verbose("FBX Material parameter: " + String(name.c_str()));
-
- // Check for Diffuse material system / lambert materials / legacy basically
- if (name == "Diffuse" && !warning_non_pbr_material) {
- ValidationTracker::get_singleton()->add_validation_error(state.path, "Invalid material settings change to Ai Standard Surface shader, mat name: " + material_name.c_escape());
- warning_non_pbr_material = true;
- }
- }
-
- // DISABLE when adding support for all weird and wonderful material formats
- if (desc == PROPERTY_DESC_NOT_FOUND) {
- continue;
- }
-
- ERR_CONTINUE_MSG(desc == PROPERTY_DESC_NOT_FOUND, "The FBX material parameter: `" + String(name.c_str()) + "` was not recognized. Please open an issue so we can add the support to it.");
-
- const FBXDocParser::PropertyTable *tbl = material;
- FBXDocParser::PropertyPtr prop = tbl->Get(name);
-
- ERR_CONTINUE_MSG(prop == nullptr, "This file may be corrupted because is not possible to extract the material parameter: " + String(name.c_str()));
-
- if (spatial_material.is_null()) {
- // Done here so if no data no material is created.
- spatial_material.instantiate();
- }
-
- const FBXDocParser::TypedProperty<real_t> *real_value = dynamic_cast<const FBXDocParser::TypedProperty<real_t> *>(prop);
- const FBXDocParser::TypedProperty<Vector3> *vector_value = dynamic_cast<const FBXDocParser::TypedProperty<Vector3> *>(prop);
-
- if (!real_value && !vector_value) {
- //WARN_PRINT("unsupported datatype in property: " + String(name.c_str()));
- continue;
- }
-
- if (vector_value && !real_value) {
- if (vector_value->Value() == Vector3(0, 0, 0) && !real_value) {
- continue;
- }
- }
-
- switch (desc) {
- case PROPERTY_DESC_ALBEDO_COLOR: {
- if (vector_value) {
- const Vector3 &color = vector_value->Value();
- // Make sure to not lost any eventual opacity.
- if (color != Vector3(0, 0, 0)) {
- Color c = Color();
- c[0] = color[0];
- c[1] = color[1];
- c[2] = color[2];
- spatial_material->set_albedo(c);
- }
-
- } else if (real_value) {
- print_error("albedo is unsupported format?");
- }
- } break;
- case PROPERTY_DESC_TRANSPARENT: {
- if (real_value) {
- const real_t opacity = real_value->Value();
- if (opacity < (1.0 - CMP_EPSILON)) {
- Color c = spatial_material->get_albedo();
- c.a = opacity;
- spatial_material->set_albedo(c);
-
- spatial_material->set_transparency(BaseMaterial3D::TRANSPARENCY_ALPHA);
- spatial_material->set_depth_draw_mode(BaseMaterial3D::DEPTH_DRAW_OPAQUE_ONLY);
- }
- } else if (vector_value) {
- print_error("unsupported transparent desc type vector!");
- }
- } break;
- case PROPERTY_DESC_SPECULAR: {
- if (real_value) {
- print_verbose("specular real value: " + rtos(real_value->Value()));
- spatial_material->set_specular(MIN(1.0, real_value->Value()));
- }
-
- if (vector_value) {
- print_error("unsupported specular vector value: " + vector_value->Value());
- }
- } break;
-
- case PROPERTY_DESC_SPECULAR_COLOR: {
- if (vector_value) {
- print_error("unsupported specular color: " + vector_value->Value());
- }
- } break;
- case PROPERTY_DESC_SHINYNESS: {
- if (real_value) {
- print_error("unsupported shinyness:" + rtos(real_value->Value()));
- }
- } break;
- case PROPERTY_DESC_METALLIC: {
- if (real_value) {
- print_verbose("metallic real value: " + rtos(real_value->Value()));
- spatial_material->set_metallic(MIN(1.0f, real_value->Value()));
- } else {
- print_error("unsupported value type for metallic");
- }
- } break;
- case PROPERTY_DESC_ROUGHNESS: {
- if (real_value) {
- print_verbose("roughness real value: " + rtos(real_value->Value()));
- spatial_material->set_roughness(MIN(1.0f, real_value->Value()));
- } else {
- print_error("unsupported value type for roughness");
- }
- } break;
- case PROPERTY_DESC_COAT: {
- if (real_value) {
- print_verbose("clearcoat real value: " + rtos(real_value->Value()));
- spatial_material->set_clearcoat(MIN(1.0f, real_value->Value()));
- } else {
- print_error("unsupported value type for clearcoat");
- }
- } break;
- case PROPERTY_DESC_COAT_ROUGHNESS: {
- // meaning is that approx equal to zero is disabled not actually zero. ;)
- if (real_value && Math::is_zero_approx(real_value->Value())) {
- print_verbose("clearcoat real value: " + rtos(real_value->Value()));
- spatial_material->set_clearcoat_roughness(real_value->Value());
- } else {
- print_error("unsupported value type for clearcoat gloss");
- }
- } break;
- case PROPERTY_DESC_EMISSIVE: {
- if (real_value && Math::is_zero_approx(real_value->Value())) {
- print_verbose("Emissive real value: " + rtos(real_value->Value()));
- spatial_material->set_emission_energy(real_value->Value());
- } else if (vector_value && !vector_value->Value().is_equal_approx(Vector3(0, 0, 0))) {
- const Vector3 &color = vector_value->Value();
- Color c;
- c[0] = color[0];
- c[1] = color[1];
- c[2] = color[2];
- spatial_material->set_emission(c);
- }
- } break;
- case PROPERTY_DESC_EMISSIVE_COLOR: {
- if (vector_value && !vector_value->Value().is_equal_approx(Vector3(0, 0, 0))) {
- const Vector3 &color = vector_value->Value();
- Color c;
- c[0] = color[0];
- c[1] = color[1];
- c[2] = color[2];
- spatial_material->set_emission(c);
- } else {
- print_error("unsupported value type for emissive color");
- }
- } break;
- case PROPERTY_DESC_NOT_FOUND:
- case PROPERTY_DESC_IGNORE:
- break;
- default:
- break;
- }
- }
-
- return spatial_material;
-}
diff --git a/modules/fbx/data/fbx_material.h b/modules/fbx/data/fbx_material.h
deleted file mode 100644
index e20b43561b..0000000000
--- a/modules/fbx/data/fbx_material.h
+++ /dev/null
@@ -1,285 +0,0 @@
-/*************************************************************************/
-/* fbx_material.h */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* https://godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2022 Juan Linietsky, Ariel Manzur. */
-/* Copyright (c) 2014-2022 Godot Engine contributors (cf. AUTHORS.md). */
-/* */
-/* Permission is hereby granted, free of charge, to any person obtaining */
-/* a copy of this software and associated documentation files (the */
-/* "Software"), to deal in the Software without restriction, including */
-/* without limitation the rights to use, copy, modify, merge, publish, */
-/* distribute, sublicense, and/or sell copies of the Software, and to */
-/* permit persons to whom the Software is furnished to do so, subject to */
-/* the following conditions: */
-/* */
-/* The above copyright notice and this permission notice shall be */
-/* included in all copies or substantial portions of the Software. */
-/* */
-/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
-/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
-/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
-/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
-/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
-/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
-/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
-/*************************************************************************/
-
-#ifndef FBX_MATERIAL_H
-#define FBX_MATERIAL_H
-
-#include "tools/import_utils.h"
-
-#include "core/object/ref_counted.h"
-#include "core/string/ustring.h"
-
-struct FBXMaterial : public RefCounted {
- String material_name = String();
- bool warning_non_pbr_material = false;
- FBXDocParser::Material *material = nullptr;
-
- /* Godot materials
- *** Texture Maps:
- * Albedo - color, texture
- * Metallic - specular, metallic, texture
- * Roughness - roughness, texture
- * Emission - color, texture
- * Normal Map - scale, texture
- * Ambient Occlusion - texture
- * Refraction - scale, texture
- *** Has Settings for:
- * UV1 - SCALE, OFFSET
- * UV2 - SCALE, OFFSET
- *** Flags for
- * Transparent
- * Cull Mode
- */
-
- enum class MapMode {
- AlbedoM = 0,
- MetallicM,
- SpecularM,
- EmissionM,
- RoughnessM,
- NormalM,
- AmbientOcclusionM,
- RefractionM,
- ReflectionM,
- };
-
- /* Returns the string representation of the TextureParam enum */
- static String get_texture_param_name(StandardMaterial3D::TextureParam param) {
- switch (param) {
- case StandardMaterial3D::TEXTURE_ALBEDO:
- return "TEXTURE_ALBEDO";
- case StandardMaterial3D::TEXTURE_METALLIC:
- return "TEXTURE_METALLIC";
- case StandardMaterial3D::TEXTURE_ROUGHNESS:
- return "TEXTURE_ROUGHNESS";
- case StandardMaterial3D::TEXTURE_EMISSION:
- return "TEXTURE_EMISSION";
- case StandardMaterial3D::TEXTURE_NORMAL:
- return "TEXTURE_NORMAL";
- case StandardMaterial3D::TEXTURE_RIM:
- return "TEXTURE_RIM";
- case StandardMaterial3D::TEXTURE_CLEARCOAT:
- return "TEXTURE_CLEARCOAT";
- case StandardMaterial3D::TEXTURE_FLOWMAP:
- return "TEXTURE_FLOWMAP";
- case StandardMaterial3D::TEXTURE_AMBIENT_OCCLUSION:
- return "TEXTURE_AMBIENT_OCCLUSION";
- // case StandardMaterial3D::TEXTURE_DEPTH: // TODO: work out how to make this function again!
- // return "TEXTURE_DEPTH";
- case StandardMaterial3D::TEXTURE_SUBSURFACE_SCATTERING:
- return "TEXTURE_SUBSURFACE_SCATTERING";
- // case StandardMaterial3D::TEXTURE_TRANSMISSION: // TODO: work out how to make this function again!
- // return "TEXTURE_TRANSMISSION";
- case StandardMaterial3D::TEXTURE_REFRACTION:
- return "TEXTURE_REFRACTION";
- case StandardMaterial3D::TEXTURE_DETAIL_MASK:
- return "TEXTURE_DETAIL_MASK";
- case StandardMaterial3D::TEXTURE_DETAIL_ALBEDO:
- return "TEXTURE_DETAIL_ALBEDO";
- case StandardMaterial3D::TEXTURE_DETAIL_NORMAL:
- return "TEXTURE_DETAIL_NORMAL";
- case StandardMaterial3D::TEXTURE_MAX:
- return "TEXTURE_MAX";
- default:
- return "broken horribly";
- }
- };
-
- // TODO make this static?
- const std::map<std::string, bool> fbx_transparency_flags = {
- /* Transparent */
- { "TransparentColor", true },
- { "Maya|opacity", true }
- };
-
- // TODO make this static?
- const std::map<std::string, StandardMaterial3D::TextureParam> fbx_texture_map = {
- /* Diffuse */
- { "Maya|base", StandardMaterial3D::TextureParam::TEXTURE_ALBEDO },
- { "DiffuseColor", StandardMaterial3D::TextureParam::TEXTURE_ALBEDO },
- { "Maya|DiffuseTexture", StandardMaterial3D::TextureParam::TEXTURE_ALBEDO },
- { "Maya|baseColor", StandardMaterial3D::TextureParam::TEXTURE_ALBEDO },
- { "Maya|baseColor|file", StandardMaterial3D::TextureParam::TEXTURE_ALBEDO },
- { "3dsMax|Parameters|base_color_map", StandardMaterial3D::TextureParam::TEXTURE_ALBEDO },
- { "Maya|TEX_color_map|file", StandardMaterial3D::TextureParam::TEXTURE_ALBEDO },
- { "Maya|TEX_color_map", StandardMaterial3D::TextureParam::TEXTURE_ALBEDO },
- /* Emission */
- { "EmissiveColor", StandardMaterial3D::TextureParam::TEXTURE_EMISSION },
- { "EmissiveFactor", StandardMaterial3D::TextureParam::TEXTURE_EMISSION },
- { "Maya|emissionColor", StandardMaterial3D::TextureParam::TEXTURE_EMISSION },
- { "Maya|emissionColor|file", StandardMaterial3D::TextureParam::TEXTURE_EMISSION },
- { "3dsMax|Parameters|emission_map", StandardMaterial3D::TextureParam::TEXTURE_EMISSION },
- { "Maya|TEX_emissive_map", StandardMaterial3D::TextureParam::TEXTURE_EMISSION },
- { "Maya|TEX_emissive_map|file", StandardMaterial3D::TextureParam::TEXTURE_EMISSION },
- /* Metallic */
- { "Maya|metalness", StandardMaterial3D::TextureParam::TEXTURE_METALLIC },
- { "Maya|metalness|file", StandardMaterial3D::TextureParam::TEXTURE_METALLIC },
- { "3dsMax|Parameters|metalness_map", StandardMaterial3D::TextureParam::TEXTURE_METALLIC },
- { "Maya|TEX_metallic_map", StandardMaterial3D::TextureParam::TEXTURE_METALLIC },
- { "Maya|TEX_metallic_map|file", StandardMaterial3D::TextureParam::TEXTURE_METALLIC },
-
- /* Roughness */
- // Arnold Roughness Map
- { "Maya|specularRoughness", StandardMaterial3D::TextureParam::TEXTURE_ROUGHNESS },
-
- { "3dsMax|Parameters|roughness_map", StandardMaterial3D::TextureParam::TEXTURE_ROUGHNESS },
- { "Maya|TEX_roughness_map", StandardMaterial3D::TextureParam::TEXTURE_ROUGHNESS },
- { "Maya|TEX_roughness_map|file", StandardMaterial3D::TextureParam::TEXTURE_ROUGHNESS },
-
- /* Normal */
- { "NormalMap", StandardMaterial3D::TextureParam::TEXTURE_NORMAL },
- //{ "Bump", Material::TextureParam::TEXTURE_NORMAL },
- //{ "3dsMax|Parameters|bump_map", Material::TextureParam::TEXTURE_NORMAL },
- { "Maya|NormalTexture", StandardMaterial3D::TextureParam::TEXTURE_NORMAL },
- //{ "Maya|normalCamera", Material::TextureParam::TEXTURE_NORMAL },
- //{ "Maya|normalCamera|file", Material::TextureParam::TEXTURE_NORMAL },
- { "Maya|TEX_normal_map", StandardMaterial3D::TextureParam::TEXTURE_NORMAL },
- { "Maya|TEX_normal_map|file", StandardMaterial3D::TextureParam::TEXTURE_NORMAL },
- /* AO */
- { "Maya|TEX_ao_map", StandardMaterial3D::TextureParam::TEXTURE_AMBIENT_OCCLUSION },
- { "Maya|TEX_ao_map|file", StandardMaterial3D::TextureParam::TEXTURE_AMBIENT_OCCLUSION },
-
- // TODO: specular workflow conversion
- // { "SpecularColor", StandardMaterial3D::TextureParam::TEXTURE_METALLIC },
- // { "Maya|specularColor", StandardMaterial3D::TextureParam::TEXTURE_METALLIC },
- // { "Maya|SpecularTexture", StandardMaterial3D::TextureParam::TEXTURE_METALLIC },
- // { "Maya|SpecularTexture|file", StandardMaterial3D::TextureParam::TEXTURE_METALLIC },
- // { "ShininessExponent", SpatialMaterial::TextureParam::UNSUPPORTED },
- // { "ReflectionFactor", SpatialMaterial::TextureParam::UNSUPPORTED },
-
- //{ "TransparentColor",SpatialMaterial::TextureParam::TEXTURE_CHANNEL_ALPHA },
- //{ "TransparencyFactor",SpatialMaterial::TextureParam::TEXTURE_CHANNEL_ALPHA }
-
- // TODO: diffuse roughness
- //{ "Maya|diffuseRoughness", SpatialMaterial::TextureParam::UNSUPPORTED },
- //{ "Maya|diffuseRoughness|file", SpatialMaterial::TextureParam::UNSUPPORTED },
-
- };
-
- // TODO make this static?
- enum PropertyDesc {
- PROPERTY_DESC_NOT_FOUND,
- PROPERTY_DESC_ALBEDO_COLOR,
- PROPERTY_DESC_TRANSPARENT,
- PROPERTY_DESC_METALLIC,
- PROPERTY_DESC_ROUGHNESS,
- PROPERTY_DESC_SPECULAR,
- PROPERTY_DESC_SPECULAR_COLOR,
- PROPERTY_DESC_SHINYNESS,
- PROPERTY_DESC_COAT,
- PROPERTY_DESC_COAT_ROUGHNESS,
- PROPERTY_DESC_EMISSIVE,
- PROPERTY_DESC_EMISSIVE_COLOR,
- PROPERTY_DESC_IGNORE
- };
-
- const std::map<std::string, PropertyDesc> fbx_properties_desc = {
- /* Albedo */
- { "DiffuseColor", PROPERTY_DESC_ALBEDO_COLOR },
- { "Maya|baseColor", PROPERTY_DESC_ALBEDO_COLOR },
-
- /* Specular */
- { "Maya|specular", PROPERTY_DESC_SPECULAR },
- { "Maya|specularColor", PROPERTY_DESC_SPECULAR_COLOR },
-
- /* Specular roughness - arnold roughness map */
- { "Maya|specularRoughness", PROPERTY_DESC_ROUGHNESS },
-
- /* Transparent */
- { "Opacity", PROPERTY_DESC_TRANSPARENT },
- { "TransparencyFactor", PROPERTY_DESC_TRANSPARENT },
- { "Maya|opacity", PROPERTY_DESC_TRANSPARENT },
-
- { "Maya|metalness", PROPERTY_DESC_METALLIC },
- { "Maya|metallic", PROPERTY_DESC_METALLIC },
-
- /* Roughness */
- { "Maya|roughness", PROPERTY_DESC_ROUGHNESS },
-
- /* Coat */
- //{ "Maya|coat", PROPERTY_DESC_COAT },
-
- /* Coat roughness */
- //{ "Maya|coatRoughness", PROPERTY_DESC_COAT_ROUGHNESS },
-
- /* Emissive */
- { "Maya|emission", PROPERTY_DESC_EMISSIVE },
- { "Maya|emissive", PROPERTY_DESC_EMISSIVE },
-
- /* Emissive color */
- { "EmissiveColor", PROPERTY_DESC_EMISSIVE_COLOR },
- { "Maya|emissionColor", PROPERTY_DESC_EMISSIVE_COLOR },
-
- /* Ignore */
- { "Shininess", PROPERTY_DESC_IGNORE },
- { "Reflectivity", PROPERTY_DESC_IGNORE },
- { "Maya|diffuseRoughness", PROPERTY_DESC_IGNORE },
- { "Maya", PROPERTY_DESC_IGNORE },
- { "Diffuse", PROPERTY_DESC_ALBEDO_COLOR },
- { "Maya|TypeId", PROPERTY_DESC_IGNORE },
- { "Ambient", PROPERTY_DESC_IGNORE },
- { "AmbientColor", PROPERTY_DESC_IGNORE },
- { "ShininessExponent", PROPERTY_DESC_IGNORE },
- { "Specular", PROPERTY_DESC_IGNORE },
- { "SpecularColor", PROPERTY_DESC_IGNORE },
- { "SpecularFactor", PROPERTY_DESC_IGNORE },
- //{ "BumpFactor", PROPERTY_DESC_IGNORE },
- { "Maya|exitToBackground", PROPERTY_DESC_IGNORE },
- { "Maya|indirectDiffuse", PROPERTY_DESC_IGNORE },
- { "Maya|indirectSpecular", PROPERTY_DESC_IGNORE },
- { "Maya|internalReflections", PROPERTY_DESC_IGNORE },
- { "DiffuseFactor", PROPERTY_DESC_IGNORE },
- { "AmbientFactor", PROPERTY_DESC_IGNORE },
- { "ReflectionColor", PROPERTY_DESC_IGNORE },
- { "Emissive", PROPERTY_DESC_IGNORE },
- { "Maya|coatColor", PROPERTY_DESC_IGNORE },
- { "Maya|coatNormal", PROPERTY_DESC_IGNORE },
- { "Maya|coatIOR", PROPERTY_DESC_IGNORE },
- };
-
- /* storing the texture properties like color */
- template <class T>
- struct TexturePropertyMapping : RefCounted {
- StandardMaterial3D::TextureParam map_mode = StandardMaterial3D::TextureParam::TEXTURE_ALBEDO;
- const T property = T();
- };
-
- static void add_search_string(String p_filename, String p_current_directory, String search_directory, Vector<String> &texture_search_paths);
-
- static String find_texture_path_by_filename(const String p_filename, const String p_current_directory);
-
- String get_material_name() const;
-
- void set_imported_material(FBXDocParser::Material *p_material);
-
- Ref<StandardMaterial3D> import_material(ImportState &state);
-};
-
-#endif // FBX_MATERIAL_H
diff --git a/modules/fbx/data/fbx_mesh_data.cpp b/modules/fbx/data/fbx_mesh_data.cpp
deleted file mode 100644
index 643a74f83e..0000000000
--- a/modules/fbx/data/fbx_mesh_data.cpp
+++ /dev/null
@@ -1,1435 +0,0 @@
-/*************************************************************************/
-/* fbx_mesh_data.cpp */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* https://godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2022 Juan Linietsky, Ariel Manzur. */
-/* Copyright (c) 2014-2022 Godot Engine contributors (cf. AUTHORS.md). */
-/* */
-/* Permission is hereby granted, free of charge, to any person obtaining */
-/* a copy of this software and associated documentation files (the */
-/* "Software"), to deal in the Software without restriction, including */
-/* without limitation the rights to use, copy, modify, merge, publish, */
-/* distribute, sublicense, and/or sell copies of the Software, and to */
-/* permit persons to whom the Software is furnished to do so, subject to */
-/* the following conditions: */
-/* */
-/* The above copyright notice and this permission notice shall be */
-/* included in all copies or substantial portions of the Software. */
-/* */
-/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
-/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
-/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
-/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
-/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
-/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
-/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
-/*************************************************************************/
-
-#include "fbx_mesh_data.h"
-
-#include "core/templates/local_vector.h"
-#include "scene/resources/importer_mesh.h"
-#include "scene/resources/mesh.h"
-#include "scene/resources/surface_tool.h"
-
-#include "thirdparty/misc/polypartition.h"
-
-template <class T>
-T collect_first(const Vector<VertexData<T>> *p_data, T p_fall_back) {
- if (p_data->is_empty()) {
- return p_fall_back;
- }
-
- return (*p_data)[0].data;
-}
-
-template <class T>
-HashMap<int, T> collect_all(const Vector<VertexData<T>> *p_data, HashMap<int, T> p_fall_back) {
- if (p_data->is_empty()) {
- return p_fall_back;
- }
-
- HashMap<int, T> collection;
- for (int i = 0; i < p_data->size(); i += 1) {
- const VertexData<T> &vd = (*p_data)[i];
- collection[vd.polygon_index] = vd.data;
- }
- return collection;
-}
-
-template <class T>
-T collect_average(const Vector<VertexData<T>> *p_data, T p_fall_back) {
- if (p_data->is_empty()) {
- return p_fall_back;
- }
-
- T combined = (*p_data)[0].data; // Make sure the data is always correctly initialized.
- print_verbose("size of data: " + itos(p_data->size()));
- for (int i = 1; i < p_data->size(); i += 1) {
- combined += (*p_data)[i].data;
- }
- combined = combined / real_t(p_data->size());
-
- return combined.normalized();
-}
-
-HashMap<int, Vector3> collect_normal(const Vector<VertexData<Vector3>> *p_data, HashMap<int, Vector3> p_fall_back) {
- if (p_data->is_empty()) {
- return p_fall_back;
- }
-
- HashMap<int, Vector3> collection;
- for (int i = 0; i < p_data->size(); i += 1) {
- const VertexData<Vector3> &vd = (*p_data)[i];
- collection[vd.polygon_index] = vd.data;
- }
- return collection;
-}
-
-HashMap<int, Vector2> collect_uv(const Vector<VertexData<Vector2>> *p_data, HashMap<int, Vector2> p_fall_back) {
- if (p_data->is_empty()) {
- return p_fall_back;
- }
-
- HashMap<int, Vector2> collection;
- for (int i = 0; i < p_data->size(); i += 1) {
- const VertexData<Vector2> &vd = (*p_data)[i];
- collection[vd.polygon_index] = vd.data;
- }
- return collection;
-}
-
-ImporterMeshInstance3D *FBXMeshData::create_fbx_mesh(const ImportState &state, const FBXDocParser::MeshGeometry *p_mesh_geometry, const FBXDocParser::Model *model, bool use_compression) {
- mesh_geometry = p_mesh_geometry;
- // todo: make this just use a uint64_t FBX ID this is a copy of our original materials unfortunately.
- const std::vector<const FBXDocParser::Material *> &material_lookup = model->GetMaterials();
-
- // TODO: perf hotspot on large files
- // this can be a very large copy
- std::vector<int> polygon_indices = mesh_geometry->get_polygon_indices();
- std::vector<Vector3> vertices = mesh_geometry->get_vertices();
-
- // Phase 1. Parse all FBX data.
- HashMap<int, Vector3> normals;
- HashMap<int, HashMap<int, Vector3>> normals_raw = extract_per_vertex_data(
- vertices.size(),
- mesh_geometry->get_edge_map(),
- polygon_indices,
- mesh_geometry->get_normals(),
- &collect_all,
- HashMap<int, Vector3>());
-
- HashMap<int, Vector2> uvs_0;
- HashMap<int, HashMap<int, Vector2>> uvs_0_raw = extract_per_vertex_data(
- vertices.size(),
- mesh_geometry->get_edge_map(),
- polygon_indices,
- mesh_geometry->get_uv_0(),
- &collect_all,
- HashMap<int, Vector2>());
-
- HashMap<int, Vector2> uvs_1;
- HashMap<int, HashMap<int, Vector2>> uvs_1_raw = extract_per_vertex_data(
- vertices.size(),
- mesh_geometry->get_edge_map(),
- polygon_indices,
- mesh_geometry->get_uv_1(),
- &collect_all,
- HashMap<int, Vector2>());
-
- HashMap<int, Color> colors;
- HashMap<int, HashMap<int, Color>> colors_raw = extract_per_vertex_data(
- vertices.size(),
- mesh_geometry->get_edge_map(),
- polygon_indices,
- mesh_geometry->get_colors(),
- &collect_all,
- HashMap<int, Color>());
-
- // TODO what about tangents?
- // TODO what about bi-nomials?
- // TODO there is other?
-
- HashMap<int, SurfaceId> polygon_surfaces = extract_per_polygon(
- vertices.size(),
- polygon_indices,
- mesh_geometry->get_material_allocation_id(),
- -1);
-
- HashMap<String, MorphVertexData> morphs;
- extract_morphs(mesh_geometry, morphs);
-
- // TODO please add skinning.
- //mesh_id = mesh_geometry->ID();
-
- sanitize_vertex_weights(state);
-
- // Reorganize polygon vertices to correctly take into account strange
- // UVs.
- reorganize_vertices(
- polygon_indices,
- vertices,
- normals,
- uvs_0,
- uvs_1,
- colors,
- morphs,
- normals_raw,
- colors_raw,
- uvs_0_raw,
- uvs_1_raw);
-
- const int color_count = colors.size();
- print_verbose("Vertex color count: " + itos(color_count));
-
- // Make sure that from this moment on the mesh_geometry is no used anymore.
- // This is a safety step, because the mesh_geometry data are no more valid
- // at this point.
-
- const int vertex_count = vertices.size();
-
- print_verbose("Vertex count: " + itos(vertex_count));
-
- // The map key is the material allocator id that is also used as surface id.
- HashMap<SurfaceId, SurfaceData> surfaces;
-
- // Phase 2. For each material create a surface tool (So a different mesh).
- {
- if (polygon_surfaces.is_empty()) {
- // No material, just use the default one with index -1.
- // Set -1 to all polygons.
- const int polygon_count = count_polygons(polygon_indices);
- for (int p = 0; p < polygon_count; p += 1) {
- polygon_surfaces[p] = -1;
- }
- }
-
- // Create the surface now.
- for (const int *polygon_id = polygon_surfaces.next(nullptr); polygon_id != nullptr; polygon_id = polygon_surfaces.next(polygon_id)) {
- const int surface_id = polygon_surfaces[*polygon_id];
- if (surfaces.has(surface_id) == false) {
- SurfaceData sd;
- sd.surface_tool.instantiate();
- sd.surface_tool->begin(Mesh::PRIMITIVE_TRIANGLES);
-
- if (surface_id < 0) {
- // nothing to do
- } else if (surface_id < (int)material_lookup.size()) {
- const FBXDocParser::Material *mat_mapping = material_lookup.at(surface_id);
- const uint64_t mapping_id = mat_mapping->ID();
- if (state.cached_materials.has(mapping_id)) {
- sd.material = state.cached_materials[mapping_id];
- }
- } else {
- WARN_PRINT("out of bounds surface detected, FBX file has corrupt material data");
- }
-
- surfaces.set(surface_id, sd);
- }
- }
- }
-
- // Phase 3. Map the vertices relative to each surface, in this way we can
- // just insert the vertices that we need per each surface.
- {
- PolygonId polygon_index = -1;
- SurfaceId surface_id = -1;
- SurfaceData *surface_data = nullptr;
-
- for (size_t polygon_vertex = 0; polygon_vertex < polygon_indices.size(); polygon_vertex += 1) {
- if (is_start_of_polygon(polygon_indices, polygon_vertex)) {
- polygon_index += 1;
- ERR_FAIL_COND_V_MSG(polygon_surfaces.has(polygon_index) == false, nullptr, "The FBX file is corrupted, This surface_index is not expected.");
- surface_id = polygon_surfaces[polygon_index];
- surface_data = surfaces.getptr(surface_id);
- CRASH_COND(surface_data == nullptr); // Can't be null.
- }
-
- const int vertex = get_vertex_from_polygon_vertex(polygon_indices, polygon_vertex);
-
- // The vertex position in the surface
- // Uses a lookup table for speed with large scenes
- bool has_polygon_vertex_index = surface_data->lookup_table.has(vertex);
- int surface_polygon_vertex_index = -1;
-
- if (has_polygon_vertex_index) {
- surface_polygon_vertex_index = surface_data->lookup_table[vertex];
- } else {
- surface_polygon_vertex_index = surface_data->vertices_map.size();
- surface_data->lookup_table[vertex] = surface_polygon_vertex_index;
- surface_data->vertices_map.push_back(vertex);
- }
-
- surface_data->surface_polygon_vertex[polygon_index].push_back(surface_polygon_vertex_index);
- }
- }
-
- //print_verbose("[debug UV 1] UV1: " + itos(uvs_0.size()));
- //print_verbose("[debug UV 2] UV2: " + itos(uvs_1.size()));
-
- // Phase 4. Per each surface just insert the vertices and add the indices.
- for (const SurfaceId *surface_id = surfaces.next(nullptr); surface_id != nullptr; surface_id = surfaces.next(surface_id)) {
- SurfaceData *surface = surfaces.getptr(*surface_id);
-
- // Just add the vertices data.
- for (unsigned int i = 0; i < surface->vertices_map.size(); i += 1) {
- const Vertex vertex = surface->vertices_map[i];
-
- // This must be done before add_vertex because the surface tool is
- // expecting this before the st->add_vertex() call
- add_vertex(state,
- surface->surface_tool,
- state.scale,
- vertex,
- vertices,
- normals,
- uvs_0,
- uvs_1,
- colors);
- }
-
- // Triangulate the various polygons and add the indices.
- for (const PolygonId *polygon_id = surface->surface_polygon_vertex.next(nullptr); polygon_id != nullptr; polygon_id = surface->surface_polygon_vertex.next(polygon_id)) {
- const Vector<DataIndex> *indices = surface->surface_polygon_vertex.getptr(*polygon_id);
- triangulate_polygon(
- surface,
- *indices,
- vertices);
- }
- }
-
- // Phase 5. Compose the morphs if any.
- for (const SurfaceId *surface_id = surfaces.next(nullptr); surface_id != nullptr; surface_id = surfaces.next(surface_id)) {
- SurfaceData *surface = surfaces.getptr(*surface_id);
-
- for (const String *morph_name = morphs.next(nullptr); morph_name != nullptr; morph_name = morphs.next(morph_name)) {
- MorphVertexData *morph_data = morphs.getptr(*morph_name);
-
- // As said by the docs, this is not supposed to be different than
- // vertex_count.
- CRASH_COND(morph_data->vertices.size() != vertex_count);
- CRASH_COND(morph_data->normals.size() != vertex_count);
-
- Vector3 *vertices_ptr = morph_data->vertices.ptrw();
- Vector3 *normals_ptr = morph_data->normals.ptrw();
-
- Ref<SurfaceTool> morph_st;
- morph_st.instantiate();
- morph_st->begin(Mesh::PRIMITIVE_TRIANGLES);
-
- for (unsigned int vi = 0; vi < surface->vertices_map.size(); vi += 1) {
- const Vertex &vertex = surface->vertices_map[vi];
- add_vertex(
- state,
- morph_st,
- state.scale,
- vertex,
- vertices,
- normals,
- uvs_0,
- uvs_1,
- colors,
- vertices_ptr[vertex],
- normals_ptr[vertex]);
- }
-
- if (state.is_blender_fbx) {
- morph_st->generate_normals();
- }
- morph_st->generate_tangents();
- surface->morphs.push_back(morph_st->commit_to_arrays());
- }
- }
-
- // Phase 6. Compose the mesh and return it.
- Ref<ImporterMesh> mesh;
- mesh.instantiate();
-
- // Add blend shape info.
- for (const String *morph_name = morphs.next(nullptr); morph_name != nullptr; morph_name = morphs.next(morph_name)) {
- mesh->add_blend_shape(*morph_name);
- }
-
- // TODO always normalized, Why?
- mesh->set_blend_shape_mode(Mesh::BLEND_SHAPE_MODE_NORMALIZED);
-
- // Add surfaces.
- for (const SurfaceId *surface_id = surfaces.next(nullptr); surface_id != nullptr; surface_id = surfaces.next(surface_id)) {
- SurfaceData *surface = surfaces.getptr(*surface_id);
-
- if (state.is_blender_fbx) {
- surface->surface_tool->generate_normals();
- }
- // you can't generate them without a valid uv map.
- if (uvs_0_raw.size() > 0) {
- surface->surface_tool->generate_tangents();
- }
-
- Array mesh_array = surface->surface_tool->commit_to_arrays();
- Array blend_shapes = surface->morphs;
-
- if (surface->material.is_valid()) {
- mesh->add_surface(Mesh::PRIMITIVE_TRIANGLES, mesh_array, blend_shapes, Dictionary(), surface->material, surface->material->get_name());
- } else {
- mesh->add_surface(Mesh::PRIMITIVE_TRIANGLES, mesh_array, blend_shapes);
- }
- }
-
- ImporterMeshInstance3D *godot_mesh = memnew(ImporterMeshInstance3D);
- godot_mesh->set_mesh(mesh);
- const String name = ImportUtils::FBXNodeToName(model->Name());
- godot_mesh->set_name(name); // hurry up compiling >.<
- mesh->set_name("mesh3d-" + name);
- return godot_mesh;
-}
-
-void FBXMeshData::sanitize_vertex_weights(const ImportState &state) {
- const int max_vertex_influence_count = RS::ARRAY_WEIGHTS_SIZE;
- Map<int, int> skeleton_to_skin_bind_id;
- // TODO: error's need added
- const FBXDocParser::Skin *fbx_skin = mesh_geometry->DeformerSkin();
-
- if (fbx_skin == nullptr || fbx_skin->Clusters().size() == 0) {
- return; // do nothing
- }
-
- //
- // Precalculate the skin cluster mapping
- //
-
- int bind_id = 0;
- for (const FBXDocParser::Cluster *cluster : fbx_skin->Clusters()) {
- ERR_CONTINUE_MSG(!state.fbx_bone_map.has(cluster->TargetNode()->ID()), "Missing bone map for cluster target node with id " + uitos(cluster->TargetNode()->ID()) + ".");
- Ref<FBXBone> bone = state.fbx_bone_map[cluster->TargetNode()->ID()];
- skeleton_to_skin_bind_id.insert(bone->godot_bone_id, bind_id);
- bind_id++;
- }
-
- for (const Vertex *v = vertex_weights.next(nullptr); v != nullptr; v = vertex_weights.next(v)) {
- VertexWeightMapping *vm = vertex_weights.getptr(*v);
- ERR_CONTINUE(vm->bones.size() != vm->weights.size()); // No message, already checked.
- ERR_CONTINUE(vm->bones_ref.size() != vm->weights.size()); // No message, already checked.
-
- const int initial_size = vm->weights.size();
- {
- // Init bone id
- int *bones_ptr = vm->bones.ptrw();
- Ref<FBXBone> *bones_ref_ptr = vm->bones_ref.ptrw();
-
- for (int i = 0; i < vm->weights.size(); i += 1) {
- // At this point this is not possible because the skeleton is already initialized.
- CRASH_COND(bones_ref_ptr[i]->godot_bone_id == -2);
- bones_ptr[i] = skeleton_to_skin_bind_id[bones_ref_ptr[i]->godot_bone_id];
- }
-
- // From this point on the data is no more valid.
- vm->bones_ref.clear();
- }
-
- {
- // Sort
- float *weights_ptr = vm->weights.ptrw();
- int *bones_ptr = vm->bones.ptrw();
- for (int i = 0; i < vm->weights.size(); i += 1) {
- for (int x = i + 1; x < vm->weights.size(); x += 1) {
- if (weights_ptr[i] < weights_ptr[x]) {
- SWAP(weights_ptr[i], weights_ptr[x]);
- SWAP(bones_ptr[i], bones_ptr[x]);
- }
- }
- }
- }
-
- {
- // Resize
- vm->weights.resize(max_vertex_influence_count);
- vm->bones.resize(max_vertex_influence_count);
- float *weights_ptr = vm->weights.ptrw();
- int *bones_ptr = vm->bones.ptrw();
- for (int i = initial_size; i < max_vertex_influence_count; i += 1) {
- weights_ptr[i] = 0.0;
- bones_ptr[i] = 0;
- }
-
- // Normalize
- real_t sum = 0.0;
- for (int i = 0; i < max_vertex_influence_count; i += 1) {
- sum += weights_ptr[i];
- }
- if (sum > 0.0) {
- for (int i = 0; i < vm->weights.size(); i += 1) {
- weights_ptr[i] = weights_ptr[i] / sum;
- }
- }
- }
- }
-}
-
-void FBXMeshData::reorganize_vertices(
- // TODO: perf hotspot on insane files
- std::vector<int> &r_polygon_indices,
- std::vector<Vector3> &r_vertices,
- HashMap<int, Vector3> &r_normals,
- HashMap<int, Vector2> &r_uv_1,
- HashMap<int, Vector2> &r_uv_2,
- HashMap<int, Color> &r_color,
- HashMap<String, MorphVertexData> &r_morphs,
- HashMap<int, HashMap<int, Vector3>> &r_normals_raw,
- HashMap<int, HashMap<int, Color>> &r_colors_raw,
- HashMap<int, HashMap<int, Vector2>> &r_uv_1_raw,
- HashMap<int, HashMap<int, Vector2>> &r_uv_2_raw) {
- // Key: OldVertex; Value: [New vertices];
- HashMap<int, Vector<int>> duplicated_vertices;
-
- PolygonId polygon_index = -1;
- for (int pv = 0; pv < (int)r_polygon_indices.size(); pv += 1) {
- if (is_start_of_polygon(r_polygon_indices, pv)) {
- polygon_index += 1;
- }
- const Vertex index = get_vertex_from_polygon_vertex(r_polygon_indices, pv);
-
- bool need_duplication = false;
- Vector2 this_vert_poly_uv1 = Vector2();
- Vector2 this_vert_poly_uv2 = Vector2();
- Vector3 this_vert_poly_normal = Vector3();
- Color this_vert_poly_color = Color();
-
- // Take the normal and see if we need to duplicate this polygon.
- if (r_normals_raw.has(index)) {
- const HashMap<PolygonId, Vector3> *nrml_arr = r_normals_raw.getptr(index);
-
- if (nrml_arr->has(polygon_index)) {
- this_vert_poly_normal = nrml_arr->get(polygon_index);
- } else if (nrml_arr->has(-1)) {
- this_vert_poly_normal = nrml_arr->get(-1);
- } else {
- print_error("invalid normal detected: " + itos(index) + " polygon index: " + itos(polygon_index));
- for (const PolygonId *pid = nrml_arr->next(nullptr); pid != nullptr; pid = nrml_arr->next(pid)) {
- print_verbose("debug contents key: " + itos(*pid));
-
- if (nrml_arr->has(*pid)) {
- print_verbose("contents valid: " + nrml_arr->get(*pid));
- }
- }
- }
-
- // Now, check if we need to duplicate it.
- for (const PolygonId *pid = nrml_arr->next(nullptr); pid != nullptr; pid = nrml_arr->next(pid)) {
- if (*pid == polygon_index) {
- continue;
- }
-
- const Vector3 vert_poly_normal = *nrml_arr->getptr(*pid);
- if (!vert_poly_normal.is_equal_approx(this_vert_poly_normal)) {
- // Yes this polygon need duplication.
- need_duplication = true;
- break;
- }
- }
- }
-
- // TODO: make me vertex color
- // Take the normal and see if we need to duplicate this polygon.
- if (r_colors_raw.has(index)) {
- const HashMap<PolygonId, Color> *color_arr = r_colors_raw.getptr(index);
-
- if (color_arr->has(polygon_index)) {
- this_vert_poly_color = color_arr->get(polygon_index);
- } else if (color_arr->has(-1)) {
- this_vert_poly_color = color_arr->get(-1);
- } else {
- print_error("invalid color detected: " + itos(index) + " polygon index: " + itos(polygon_index));
- for (const PolygonId *pid = color_arr->next(nullptr); pid != nullptr; pid = color_arr->next(pid)) {
- print_verbose("debug contents key: " + itos(*pid));
-
- if (color_arr->has(*pid)) {
- print_verbose("contents valid: " + color_arr->get(*pid));
- }
- }
- }
-
- // Now, check if we need to duplicate it.
- for (const PolygonId *pid = color_arr->next(nullptr); pid != nullptr; pid = color_arr->next(pid)) {
- if (*pid == polygon_index) {
- continue;
- }
-
- const Color vert_poly_color = *color_arr->getptr(*pid);
- if (!this_vert_poly_color.is_equal_approx(vert_poly_color)) {
- // Yes this polygon need duplication.
- need_duplication = true;
- break;
- }
- }
- }
-
- // Take the UV1 and UV2 and see if we need to duplicate this polygon.
- {
- HashMap<int, HashMap<int, Vector2>> *uv_raw = &r_uv_1_raw;
- Vector2 *this_vert_poly_uv = &this_vert_poly_uv1;
- for (int kk = 0; kk < 2; kk++) {
- if (uv_raw->has(index)) {
- const HashMap<PolygonId, Vector2> *uvs = uv_raw->getptr(index);
-
- if (uvs->has(polygon_index)) {
- // This Polygon has its own uv.
- (*this_vert_poly_uv) = *uvs->getptr(polygon_index);
-
- // Check if we need to duplicate it.
- for (const PolygonId *pid = uvs->next(nullptr); pid != nullptr; pid = uvs->next(pid)) {
- if (*pid == polygon_index) {
- continue;
- }
- const Vector2 vert_poly_uv = *uvs->getptr(*pid);
- if (!vert_poly_uv.is_equal_approx(*this_vert_poly_uv)) {
- // Yes this polygon need duplication.
- need_duplication = true;
- break;
- }
- }
- } else if (uvs->has(-1)) {
- // It has the default UV.
- (*this_vert_poly_uv) = *uvs->getptr(-1);
- } else if (uvs->size() > 0) {
- // No uv, this is strange, just take the first and duplicate.
- (*this_vert_poly_uv) = *uvs->getptr(*uvs->next(nullptr));
- WARN_PRINT("No UVs for this polygon, while there is no default and some other polygons have it. This FBX file may be corrupted.");
- }
- }
- uv_raw = &r_uv_2_raw;
- this_vert_poly_uv = &this_vert_poly_uv2;
- }
- }
-
- // If we want to duplicate it, Let's see if we already duplicated this
- // vertex.
- if (need_duplication) {
- if (duplicated_vertices.has(index)) {
- Vertex similar_vertex = -1;
- // Let's see if one of the new vertices has the same data of this.
- const Vector<int> *new_vertices = duplicated_vertices.getptr(index);
- for (int j = 0; j < new_vertices->size(); j += 1) {
- const Vertex new_vertex = (*new_vertices)[j];
- bool same_uv1 = false;
- bool same_uv2 = false;
- bool same_normal = false;
- bool same_color = false;
-
- if (r_uv_1.has(new_vertex)) {
- if ((this_vert_poly_uv1 - (*r_uv_1.getptr(new_vertex))).length_squared() <= CMP_EPSILON) {
- same_uv1 = true;
- }
- }
-
- if (r_uv_2.has(new_vertex)) {
- if ((this_vert_poly_uv2 - (*r_uv_2.getptr(new_vertex))).length_squared() <= CMP_EPSILON) {
- same_uv2 = true;
- }
- }
-
- if (r_color.has(new_vertex)) {
- if (this_vert_poly_color.is_equal_approx((*r_color.getptr(new_vertex)))) {
- same_color = true;
- }
- }
-
- if (r_normals.has(new_vertex)) {
- if ((this_vert_poly_normal - (*r_normals.getptr(new_vertex))).length_squared() <= CMP_EPSILON) {
- same_uv2 = true;
- }
- }
-
- if (same_uv1 && same_uv2 && same_normal && same_color) {
- similar_vertex = new_vertex;
- break;
- }
- }
-
- if (similar_vertex != -1) {
- // Update polygon.
- if (is_end_of_polygon(r_polygon_indices, pv)) {
- r_polygon_indices[pv] = ~similar_vertex;
- } else {
- r_polygon_indices[pv] = similar_vertex;
- }
- need_duplication = false;
- }
- }
- }
-
- if (need_duplication) {
- const Vertex old_index = index;
- const Vertex new_index = r_vertices.size();
-
- // Polygon index.
- if (is_end_of_polygon(r_polygon_indices, pv)) {
- r_polygon_indices[pv] = ~new_index;
- } else {
- r_polygon_indices[pv] = new_index;
- }
-
- // Vertex position.
- r_vertices.push_back(r_vertices[old_index]);
-
- // Normals
- if (r_normals_raw.has(old_index)) {
- r_normals.set(new_index, this_vert_poly_normal);
- r_normals_raw.getptr(old_index)->erase(polygon_index);
- r_normals_raw[new_index][polygon_index] = this_vert_poly_normal;
- }
-
- // Vertex Color
- if (r_colors_raw.has(old_index)) {
- r_color.set(new_index, this_vert_poly_color);
- r_colors_raw.getptr(old_index)->erase(polygon_index);
- r_colors_raw[new_index][polygon_index] = this_vert_poly_color;
- }
-
- // UV 0
- if (r_uv_1_raw.has(old_index)) {
- r_uv_1.set(new_index, this_vert_poly_uv1);
- r_uv_1_raw.getptr(old_index)->erase(polygon_index);
- r_uv_1_raw[new_index][polygon_index] = this_vert_poly_uv1;
- }
-
- // UV 1
- if (r_uv_2_raw.has(old_index)) {
- r_uv_2.set(new_index, this_vert_poly_uv2);
- r_uv_2_raw.getptr(old_index)->erase(polygon_index);
- r_uv_2_raw[new_index][polygon_index] = this_vert_poly_uv2;
- }
-
- // Morphs
- for (const String *mname = r_morphs.next(nullptr); mname != nullptr; mname = r_morphs.next(mname)) {
- MorphVertexData *d = r_morphs.getptr(*mname);
- // This can't never happen.
- CRASH_COND(d == nullptr);
- if (d->vertices.size() > old_index) {
- d->vertices.push_back(d->vertices[old_index]);
- }
- if (d->normals.size() > old_index) {
- d->normals.push_back(d->normals[old_index]);
- }
- }
-
- if (vertex_weights.has(old_index)) {
- vertex_weights.set(new_index, vertex_weights[old_index]);
- }
-
- duplicated_vertices[old_index].push_back(new_index);
- } else {
- if (r_normals_raw.has(index) &&
- r_normals.has(index) == false) {
- r_normals.set(index, this_vert_poly_normal);
- }
-
- if (r_colors_raw.has(index) && r_color.has(index) == false) {
- r_color.set(index, this_vert_poly_color);
- }
-
- if (r_uv_1_raw.has(index) &&
- r_uv_1.has(index) == false) {
- r_uv_1.set(index, this_vert_poly_uv1);
- }
-
- if (r_uv_2_raw.has(index) &&
- r_uv_2.has(index) == false) {
- r_uv_2.set(index, this_vert_poly_uv2);
- }
- }
- }
-}
-
-void FBXMeshData::add_vertex(
- const ImportState &state,
- Ref<SurfaceTool> p_surface_tool,
- real_t p_scale,
- Vertex p_vertex,
- const std::vector<Vector3> &p_vertices_position,
- const HashMap<int, Vector3> &p_normals,
- const HashMap<int, Vector2> &p_uvs_0,
- const HashMap<int, Vector2> &p_uvs_1,
- const HashMap<int, Color> &p_colors,
- const Vector3 &p_morph_value,
- const Vector3 &p_morph_normal) {
- ERR_FAIL_INDEX_MSG(p_vertex, (Vertex)p_vertices_position.size(), "FBX file is corrupted, the position of the vertex can't be retrieved.");
-
- if (p_normals.has(p_vertex) && !state.is_blender_fbx) {
- p_surface_tool->set_normal(p_normals[p_vertex] + p_morph_normal);
- }
-
- if (p_uvs_0.has(p_vertex)) {
- //print_verbose("uv1: [" + itos(p_vertex) + "] " + p_uvs_0[p_vertex]);
- // Inverts Y UV.
- p_surface_tool->set_uv(Vector2(p_uvs_0[p_vertex].x, 1 - p_uvs_0[p_vertex].y));
- }
-
- if (p_uvs_1.has(p_vertex)) {
- //print_verbose("uv2: [" + itos(p_vertex) + "] " + p_uvs_1[p_vertex]);
- // Inverts Y UV.
- p_surface_tool->set_uv2(Vector2(p_uvs_1[p_vertex].x, 1 - p_uvs_1[p_vertex].y));
- }
-
- if (p_colors.has(p_vertex)) {
- p_surface_tool->set_color(p_colors[p_vertex]);
- }
-
- // TODO what about binormals?
- // TODO there is other?
-
- if (vertex_weights.has(p_vertex)) {
- // Let's extract the weight info.
- const VertexWeightMapping *vm = vertex_weights.getptr(p_vertex);
- const Vector<int> &bones = vm->bones;
-
- // the bug is that the bone idx is wrong because it is not ref'ing the skin.
-
- if (bones.size() > RS::ARRAY_WEIGHTS_SIZE) {
- print_error("[weight overflow detected]");
- }
-
- p_surface_tool->set_weights(vm->weights);
- // 0 1 2 3 4 5 6 7 < local skeleton / skin for mesh
- // 0 1 2 3 4 5 6 7 8 9 10 < actual skeleton with all joints
- p_surface_tool->set_bones(bones);
- }
-
- // The surface tool want the vertex position as last thing.
- p_surface_tool->add_vertex((p_vertices_position[p_vertex] + p_morph_value) * p_scale);
-}
-
-void FBXMeshData::triangulate_polygon(SurfaceData *surface, const Vector<int> &p_polygon_vertex, const std::vector<Vector3> &p_vertices) const {
- Ref<SurfaceTool> st(surface->surface_tool);
- const int polygon_vertex_count = p_polygon_vertex.size();
- //const Vector<Vertex>& p_surface_vertex_map
- if (polygon_vertex_count == 1) {
- // point to triangle
- st->add_index(p_polygon_vertex[0]);
- st->add_index(p_polygon_vertex[0]);
- st->add_index(p_polygon_vertex[0]);
- return;
- } else if (polygon_vertex_count == 2) {
- // line to triangle
- st->add_index(p_polygon_vertex[1]);
- st->add_index(p_polygon_vertex[1]);
- st->add_index(p_polygon_vertex[0]);
- return;
- } else if (polygon_vertex_count == 3) {
- // triangle to triangle
- st->add_index(p_polygon_vertex[0]);
- st->add_index(p_polygon_vertex[2]);
- st->add_index(p_polygon_vertex[1]);
- return;
- } else if (polygon_vertex_count == 4) {
- // quad to triangle - this code is awesome for import times
- // it prevents triangles being generated slowly
- st->add_index(p_polygon_vertex[0]);
- st->add_index(p_polygon_vertex[2]);
- st->add_index(p_polygon_vertex[1]);
- st->add_index(p_polygon_vertex[2]);
- st->add_index(p_polygon_vertex[0]);
- st->add_index(p_polygon_vertex[3]);
- return;
- } else {
- // non triangulated - we must run the triangulation algorithm
- bool is_simple_convex = false;
- // this code is 'slow' but required it triangulates all the unsupported geometry.
- // Doesn't allow for bigger polygons because those are unlikely be convex
- if (polygon_vertex_count <= 6) {
- // Start from true, check if it's false.
- is_simple_convex = true;
- Vector3 first_vec;
- for (int i = 0; i < polygon_vertex_count; i += 1) {
- const Vector3 p1 = p_vertices[surface->vertices_map[p_polygon_vertex[i]]];
- const Vector3 p2 = p_vertices[surface->vertices_map[p_polygon_vertex[(i + 1) % polygon_vertex_count]]];
- const Vector3 p3 = p_vertices[surface->vertices_map[p_polygon_vertex[(i + 2) % polygon_vertex_count]]];
-
- const Vector3 edge1 = p1 - p2;
- const Vector3 edge2 = p3 - p2;
-
- const Vector3 res = edge1.normalized().cross(edge2.normalized()).normalized();
- if (i == 0) {
- first_vec = res;
- } else {
- if (first_vec.dot(res) < 0.0) {
- // Ok we found an angle that is not the same dir of the
- // others.
- is_simple_convex = false;
- break;
- }
- }
- }
- }
-
- if (is_simple_convex) {
- // This is a convex polygon, so just triangulate it.
- for (int i = 0; i < (polygon_vertex_count - 2); i += 1) {
- st->add_index(p_polygon_vertex[2 + i]);
- st->add_index(p_polygon_vertex[1 + i]);
- st->add_index(p_polygon_vertex[0]);
- }
- return;
- }
- }
-
- {
- // This is a concave polygon.
-
- std::vector<Vector3> poly_vertices(polygon_vertex_count);
- for (int i = 0; i < polygon_vertex_count; i += 1) {
- poly_vertices[i] = p_vertices[surface->vertices_map[p_polygon_vertex[i]]];
- }
-
- const Vector3 poly_norm = get_poly_normal(poly_vertices);
- if (poly_norm.length_squared() <= CMP_EPSILON) {
- ERR_FAIL_COND_MSG(poly_norm.length_squared() <= CMP_EPSILON, "The normal of this poly was not computed. Is this FBX file corrupted.");
- }
-
- // Select the plan coordinate.
- int axis_1_coord = 0;
- int axis_2_coord = 1;
- {
- real_t inv = poly_norm.z;
-
- const real_t axis_x = ABS(poly_norm.x);
- const real_t axis_y = ABS(poly_norm.y);
- const real_t axis_z = ABS(poly_norm.z);
-
- if (axis_x > axis_y) {
- if (axis_x > axis_z) {
- // For the most part the normal point toward X.
- axis_1_coord = 1;
- axis_2_coord = 2;
- inv = poly_norm.x;
- }
- } else if (axis_y > axis_z) {
- // For the most part the normal point toward Y.
- axis_1_coord = 2;
- axis_2_coord = 0;
- inv = poly_norm.y;
- }
-
- // Swap projection axes to take the negated projection vector into account
- if (inv < 0.0f) {
- SWAP(axis_1_coord, axis_2_coord);
- }
- }
-
- TPPLPoly tppl_poly;
- tppl_poly.Init(polygon_vertex_count);
- std::vector<Vector2> projected_vertices(polygon_vertex_count);
- for (int i = 0; i < polygon_vertex_count; i += 1) {
- const Vector2 pv(poly_vertices[i][axis_1_coord], poly_vertices[i][axis_2_coord]);
- projected_vertices[i] = pv;
- tppl_poly.GetPoint(i) = pv;
- }
- tppl_poly.SetOrientation(TPPL_ORIENTATION_CCW);
-
- List<TPPLPoly> out_poly;
-
- TPPLPartition tppl_partition;
- if (tppl_partition.Triangulate_OPT(&tppl_poly, &out_poly) == 0) { // Good result.
- if (tppl_partition.Triangulate_EC(&tppl_poly, &out_poly) == 0) { // Medium result.
- if (tppl_partition.Triangulate_MONO(&tppl_poly, &out_poly) == 0) { // Really poor result.
- ERR_FAIL_MSG("The triangulation of this polygon failed, please try to triangulate your mesh or check if it has broken polygons.");
- }
- }
- }
-
- std::vector<Vector2> tris(out_poly.size());
- for (List<TPPLPoly>::Element *I = out_poly.front(); I; I = I->next()) {
- TPPLPoly &tp = I->get();
-
- ERR_FAIL_COND_MSG(tp.GetNumPoints() != 3, "The triangulator returned more points, how this is possible?");
- // Find Index
- for (int i = 2; i >= 0; i -= 1) {
- const Vector2 vertex = tp.GetPoint(i);
- bool done = false;
- // Find Index
- for (int y = 0; y < polygon_vertex_count; y += 1) {
- if ((projected_vertices[y] - vertex).length_squared() <= CMP_EPSILON) {
- // This seems the right vertex
- st->add_index(p_polygon_vertex[y]);
- done = true;
- break;
- }
- }
- ERR_FAIL_COND(done == false);
- }
- }
- }
-}
-
-void FBXMeshData::gen_weight_info(Ref<SurfaceTool> st, Vertex vertex_id) const {
- if (vertex_weights.is_empty()) {
- return;
- }
-
- if (vertex_weights.has(vertex_id)) {
- // Let's extract the weight info.
- const VertexWeightMapping *vm = vertex_weights.getptr(vertex_id);
- st->set_weights(vm->weights);
- st->set_bones(vm->bones);
- }
-}
-
-int FBXMeshData::get_vertex_from_polygon_vertex(const std::vector<int> &p_polygon_indices, int p_index) const {
- if (p_index < 0 || p_index >= (int)p_polygon_indices.size()) {
- return -1;
- }
-
- const int vertex = p_polygon_indices[p_index];
- if (vertex >= 0) {
- return vertex;
- } else {
- // Negative numbers are the end of the face, reversing the bits is
- // possible to obtain the positive correct vertex number.
- return ~vertex;
- }
-}
-
-bool FBXMeshData::is_end_of_polygon(const std::vector<int> &p_polygon_indices, int p_index) const {
- if (p_index < 0 || p_index >= (int)p_polygon_indices.size()) {
- return false;
- }
-
- const int vertex = p_polygon_indices[p_index];
-
- // If the index is negative this is the end of the Polygon.
- return vertex < 0;
-}
-
-bool FBXMeshData::is_start_of_polygon(const std::vector<int> &p_polygon_indices, int p_index) const {
- if (p_index < 0 || p_index >= (int)p_polygon_indices.size()) {
- return false;
- }
-
- if (p_index == 0) {
- return true;
- }
-
- // If the previous indices is negative this is the begin of a new Polygon.
- return p_polygon_indices[p_index - 1] < 0;
-}
-
-int FBXMeshData::count_polygons(const std::vector<int> &p_polygon_indices) const {
- // The negative numbers define the end of the polygon. Counting the amount of
- // negatives the numbers of polygons are obtained.
- int count = 0;
- for (size_t i = 0; i < p_polygon_indices.size(); i += 1) {
- if (p_polygon_indices[i] < 0) {
- count += 1;
- }
- }
- return count;
-}
-
-template <class R, class T>
-HashMap<int, R> FBXMeshData::extract_per_vertex_data(
- int p_vertex_count,
- const std::vector<FBXDocParser::MeshGeometry::Edge> &p_edge_map,
- const std::vector<int> &p_mesh_indices,
- const FBXDocParser::MeshGeometry::MappingData<T> &p_mapping_data,
- R (*collector_function)(const Vector<VertexData<T>> *p_vertex_data, R p_fall_back),
- R p_fall_back) const {
- /* When index_to_direct is set
- * index size is 184 ( contains index for the data array [values 0, 96] )
- * data size is 96 (contains uv coordinates)
- * this means index is simple data reduction basically
- */
- ////
- if (p_mapping_data.ref_type == FBXDocParser::MeshGeometry::ReferenceType::index_to_direct && p_mapping_data.index.size() == 0) {
- print_verbose("debug count: index size: " + itos(p_mapping_data.index.size()) + ", data size: " + itos(p_mapping_data.data.size()));
- print_verbose("vertex indices count: " + itos(p_mesh_indices.size()));
- print_verbose("Edge map size: " + itos(p_edge_map.size()));
- }
-
- ERR_FAIL_COND_V_MSG(p_mapping_data.ref_type == FBXDocParser::MeshGeometry::ReferenceType::index_to_direct && p_mapping_data.index.size() == 0, (HashMap<int, R>()), "FBX importer needs to map correctly to this field, please specify the override index name to fix this problem!");
- ERR_FAIL_COND_V_MSG(p_mapping_data.ref_type == FBXDocParser::MeshGeometry::ReferenceType::index && p_mapping_data.index.size() == 0, (HashMap<int, R>()), "The FBX seems corrupted");
-
- // Aggregate vertex data.
- HashMap<Vertex, Vector<VertexData<T>>> aggregate_vertex_data;
-
- switch (p_mapping_data.map_type) {
- case FBXDocParser::MeshGeometry::MapType::none: {
- // No data nothing to do.
- return (HashMap<int, R>());
- }
- case FBXDocParser::MeshGeometry::MapType::vertex: {
- ERR_FAIL_COND_V_MSG(p_mapping_data.ref_type == FBXDocParser::MeshGeometry::ReferenceType::index_to_direct, (HashMap<int, R>()), "We will support in future");
-
- if (p_mapping_data.ref_type == FBXDocParser::MeshGeometry::ReferenceType::direct) {
- // The data is mapped per vertex directly.
- ERR_FAIL_COND_V_MSG((int)p_mapping_data.data.size() != p_vertex_count, (HashMap<int, R>()), "FBX file corrupted: #ERR01");
- for (size_t vertex_index = 0; vertex_index < p_mapping_data.data.size(); vertex_index += 1) {
- aggregate_vertex_data[vertex_index].push_back({ -1, p_mapping_data.data[vertex_index] });
- }
- } else {
- // The data is mapped per vertex using a reference.
- // The indices array, contains a *reference_id for each vertex.
- // * Note that the reference_id is the id of data into the data array.
- //
- // https://help.autodesk.com/view/FBX/2017/ENU/?guid=__cpp_ref_class_fbx_layer_element_html
- ERR_FAIL_COND_V_MSG((int)p_mapping_data.index.size() != p_vertex_count, (HashMap<int, R>()), "FBX file corrupted: #ERR02");
- for (size_t vertex_index = 0; vertex_index < p_mapping_data.index.size(); vertex_index += 1) {
- ERR_FAIL_INDEX_V_MSG(p_mapping_data.index[vertex_index], (int)p_mapping_data.data.size(), (HashMap<int, R>()), "FBX file seems corrupted: #ERR03.");
- aggregate_vertex_data[vertex_index].push_back({ -1, p_mapping_data.data[p_mapping_data.index[vertex_index]] });
- }
- }
- } break;
- case FBXDocParser::MeshGeometry::MapType::polygon_vertex: {
- if (p_mapping_data.ref_type == FBXDocParser::MeshGeometry::ReferenceType::index_to_direct) {
- // The data is mapped using each index from the indexes array then direct to the data (data reduction algorithm)
- ERR_FAIL_COND_V_MSG((int)p_mesh_indices.size() != (int)p_mapping_data.index.size(), (HashMap<int, R>()), "FBX file seems corrupted: #ERR04");
- int polygon_id = -1;
- for (size_t polygon_vertex_index = 0; polygon_vertex_index < p_mapping_data.index.size(); polygon_vertex_index += 1) {
- if (is_start_of_polygon(p_mesh_indices, polygon_vertex_index)) {
- polygon_id += 1;
- }
- const int vertex_index = get_vertex_from_polygon_vertex(p_mesh_indices, polygon_vertex_index);
- ERR_FAIL_COND_V_MSG(vertex_index < 0, (HashMap<int, R>()), "FBX file corrupted: #ERR05");
- ERR_FAIL_COND_V_MSG(vertex_index >= p_vertex_count, (HashMap<int, R>()), "FBX file corrupted: #ERR06");
- const int index_to_direct = get_vertex_from_polygon_vertex(p_mapping_data.index, polygon_vertex_index);
- T value = p_mapping_data.data[index_to_direct];
- aggregate_vertex_data[vertex_index].push_back({ polygon_id, value });
- }
- } else if (p_mapping_data.ref_type == FBXDocParser::MeshGeometry::ReferenceType::direct) {
- // The data are mapped per polygon vertex directly.
- ERR_FAIL_COND_V_MSG((int)p_mesh_indices.size() != (int)p_mapping_data.data.size(), (HashMap<int, R>()), "FBX file seems corrupted: #ERR04");
- int polygon_id = -1;
- for (size_t polygon_vertex_index = 0; polygon_vertex_index < p_mapping_data.data.size(); polygon_vertex_index += 1) {
- if (is_start_of_polygon(p_mesh_indices, polygon_vertex_index)) {
- polygon_id += 1;
- }
- const int vertex_index = get_vertex_from_polygon_vertex(p_mesh_indices, polygon_vertex_index);
- ERR_FAIL_COND_V_MSG(vertex_index < 0, (HashMap<int, R>()), "FBX file corrupted: #ERR05");
- ERR_FAIL_COND_V_MSG(vertex_index >= p_vertex_count, (HashMap<int, R>()), "FBX file corrupted: #ERR06");
-
- aggregate_vertex_data[vertex_index].push_back({ polygon_id, p_mapping_data.data[polygon_vertex_index] });
- }
- } else {
- // The data is mapped per polygon_vertex using a reference.
- // The indices array, contains a *reference_id for each polygon_vertex.
- // * Note that the reference_id is the id of data into the data array.
- //
- // https://help.autodesk.com/view/FBX/2017/ENU/?guid=__cpp_ref_class_fbx_layer_element_html
- ERR_FAIL_COND_V_MSG(p_mesh_indices.size() != p_mapping_data.index.size(), (HashMap<int, R>()), "FBX file corrupted: #ERR7");
- int polygon_id = -1;
- for (size_t polygon_vertex_index = 0; polygon_vertex_index < p_mapping_data.index.size(); polygon_vertex_index += 1) {
- if (is_start_of_polygon(p_mesh_indices, polygon_vertex_index)) {
- polygon_id += 1;
- }
- const int vertex_index = get_vertex_from_polygon_vertex(p_mesh_indices, polygon_vertex_index);
- ERR_FAIL_COND_V_MSG(vertex_index < 0, (HashMap<int, R>()), "FBX file corrupted: #ERR8");
- ERR_FAIL_COND_V_MSG(vertex_index >= p_vertex_count, (HashMap<int, R>()), "FBX file seems corrupted: #ERR9.");
- ERR_FAIL_COND_V_MSG(p_mapping_data.index[polygon_vertex_index] < 0, (HashMap<int, R>()), "FBX file seems corrupted: #ERR10.");
- ERR_FAIL_COND_V_MSG(p_mapping_data.index[polygon_vertex_index] >= (int)p_mapping_data.data.size(), (HashMap<int, R>()), "FBX file seems corrupted: #ERR11.");
- aggregate_vertex_data[vertex_index].push_back({ polygon_id, p_mapping_data.data[p_mapping_data.index[polygon_vertex_index]] });
- }
- }
- } break;
- case FBXDocParser::MeshGeometry::MapType::polygon: {
- if (p_mapping_data.ref_type == FBXDocParser::MeshGeometry::ReferenceType::direct) {
- // The data are mapped per polygon directly.
- const int polygon_count = count_polygons(p_mesh_indices);
- ERR_FAIL_COND_V_MSG(polygon_count != (int)p_mapping_data.data.size(), (HashMap<int, R>()), "FBX file seems corrupted: #ERR12");
-
- // Advance each polygon vertex, each new polygon advance the polygon index.
- int polygon_index = -1;
- for (size_t polygon_vertex_index = 0;
- polygon_vertex_index < p_mesh_indices.size();
- polygon_vertex_index += 1) {
- if (is_start_of_polygon(p_mesh_indices, polygon_vertex_index)) {
- polygon_index += 1;
- ERR_FAIL_INDEX_V_MSG(polygon_index, (int)p_mapping_data.data.size(), (HashMap<int, R>()), "FBX file seems corrupted: #ERR13");
- }
-
- const int vertex_index = get_vertex_from_polygon_vertex(p_mesh_indices, polygon_vertex_index);
- ERR_FAIL_INDEX_V_MSG(vertex_index, p_vertex_count, (HashMap<int, R>()), "FBX file corrupted: #ERR14");
-
- aggregate_vertex_data[vertex_index].push_back({ polygon_index, p_mapping_data.data[polygon_index] });
- }
- ERR_FAIL_COND_V_MSG((polygon_index + 1) != polygon_count, (HashMap<int, R>()), "FBX file seems corrupted: #ERR16. Not all Polygons are present in the file.");
- } else {
- // The data is mapped per polygon using a reference.
- // The indices array, contains a *reference_id for each polygon.
- // * Note that the reference_id is the id of data into the data array.
- //
- // https://help.autodesk.com/view/FBX/2017/ENU/?guid=__cpp_ref_class_fbx_layer_element_html
- const int polygon_count = count_polygons(p_mesh_indices);
- ERR_FAIL_COND_V_MSG(polygon_count != (int)p_mapping_data.index.size(), (HashMap<int, R>()), "FBX file seems corrupted: #ERR17");
-
- // Advance each polygon vertex, each new polygon advance the polygon index.
- int polygon_index = -1;
- for (size_t polygon_vertex_index = 0;
- polygon_vertex_index < p_mesh_indices.size();
- polygon_vertex_index += 1) {
- if (is_start_of_polygon(p_mesh_indices, polygon_vertex_index)) {
- polygon_index += 1;
- ERR_FAIL_INDEX_V_MSG(polygon_index, (int)p_mapping_data.index.size(), (HashMap<int, R>()), "FBX file seems corrupted: #ERR18");
- ERR_FAIL_INDEX_V_MSG(p_mapping_data.index[polygon_index], (int)p_mapping_data.data.size(), (HashMap<int, R>()), "FBX file seems corrupted: #ERR19");
- }
-
- const int vertex_index = get_vertex_from_polygon_vertex(p_mesh_indices, polygon_vertex_index);
- ERR_FAIL_INDEX_V_MSG(vertex_index, p_vertex_count, (HashMap<int, R>()), "FBX file corrupted: #ERR20");
-
- aggregate_vertex_data[vertex_index].push_back({ polygon_index, p_mapping_data.data[p_mapping_data.index[polygon_index]] });
- }
- ERR_FAIL_COND_V_MSG((polygon_index + 1) != polygon_count, (HashMap<int, R>()), "FBX file seems corrupted: #ERR22. Not all Polygons are present in the file.");
- }
- } break;
- case FBXDocParser::MeshGeometry::MapType::edge: {
- if (p_mapping_data.ref_type == FBXDocParser::MeshGeometry::ReferenceType::direct) {
- // The data are mapped per edge directly.
- ERR_FAIL_COND_V_MSG(p_edge_map.size() != p_mapping_data.data.size(), (HashMap<int, R>()), "FBX file seems corrupted: #ERR23");
- for (size_t edge_index = 0; edge_index < p_mapping_data.data.size(); edge_index += 1) {
- const FBXDocParser::MeshGeometry::Edge edge = FBXDocParser::MeshGeometry::get_edge(p_edge_map, edge_index);
- ERR_FAIL_INDEX_V_MSG(edge.vertex_0, p_vertex_count, (HashMap<int, R>()), "FBX file corrupted: #ERR24");
- ERR_FAIL_INDEX_V_MSG(edge.vertex_1, p_vertex_count, (HashMap<int, R>()), "FBX file corrupted: #ERR25");
- ERR_FAIL_INDEX_V_MSG(edge.vertex_0, (int)p_mapping_data.data.size(), (HashMap<int, R>()), "FBX file corrupted: #ERR26");
- ERR_FAIL_INDEX_V_MSG(edge.vertex_1, (int)p_mapping_data.data.size(), (HashMap<int, R>()), "FBX file corrupted: #ERR27");
- aggregate_vertex_data[edge.vertex_0].push_back({ -1, p_mapping_data.data[edge_index] });
- aggregate_vertex_data[edge.vertex_1].push_back({ -1, p_mapping_data.data[edge_index] });
- }
- } else {
- // The data is mapped per edge using a reference.
- // The indices array, contains a *reference_id for each polygon.
- // * Note that the reference_id is the id of data into the data array.
- //
- // https://help.autodesk.com/view/FBX/2017/ENU/?guid=__cpp_ref_class_fbx_layer_element_html
- ERR_FAIL_COND_V_MSG(p_edge_map.size() != p_mapping_data.index.size(), (HashMap<int, R>()), "FBX file seems corrupted: #ERR28");
- for (size_t edge_index = 0; edge_index < p_mapping_data.data.size(); edge_index += 1) {
- const FBXDocParser::MeshGeometry::Edge edge = FBXDocParser::MeshGeometry::get_edge(p_edge_map, edge_index);
- ERR_FAIL_INDEX_V_MSG(edge.vertex_0, p_vertex_count, (HashMap<int, R>()), "FBX file corrupted: #ERR29");
- ERR_FAIL_INDEX_V_MSG(edge.vertex_1, p_vertex_count, (HashMap<int, R>()), "FBX file corrupted: #ERR30");
- ERR_FAIL_INDEX_V_MSG(edge.vertex_0, (int)p_mapping_data.index.size(), (HashMap<int, R>()), "FBX file corrupted: #ERR31");
- ERR_FAIL_INDEX_V_MSG(edge.vertex_1, (int)p_mapping_data.index.size(), (HashMap<int, R>()), "FBX file corrupted: #ERR32");
- ERR_FAIL_INDEX_V_MSG(p_mapping_data.index[edge.vertex_0], (int)p_mapping_data.data.size(), (HashMap<int, R>()), "FBX file corrupted: #ERR33");
- ERR_FAIL_INDEX_V_MSG(p_mapping_data.index[edge.vertex_1], (int)p_mapping_data.data.size(), (HashMap<int, R>()), "FBX file corrupted: #ERR34");
- aggregate_vertex_data[edge.vertex_0].push_back({ -1, p_mapping_data.data[p_mapping_data.index[edge_index]] });
- aggregate_vertex_data[edge.vertex_1].push_back({ -1, p_mapping_data.data[p_mapping_data.index[edge_index]] });
- }
- }
- } break;
- case FBXDocParser::MeshGeometry::MapType::all_the_same: {
- // No matter the mode, no matter the data size; The first always win
- // and is set to all the vertices.
- ERR_FAIL_COND_V_MSG(p_mapping_data.data.size() <= 0, (HashMap<int, R>()), "FBX file seems corrupted: #ERR35");
- if (p_mapping_data.data.size() > 0) {
- for (int vertex_index = 0; vertex_index < p_vertex_count; vertex_index += 1) {
- aggregate_vertex_data[vertex_index].push_back({ -1, p_mapping_data.data[0] });
- }
- }
- } break;
- }
-
- if (aggregate_vertex_data.size() == 0) {
- return (HashMap<int, R>());
- }
-
- // A map is used because turns out that the some FBX file are not well organized
- // with vertices well compacted. Using a map allows avoid those issues.
- HashMap<Vertex, R> result;
-
- // Aggregate the collected data.
- for (const Vertex *index = aggregate_vertex_data.next(nullptr); index != nullptr; index = aggregate_vertex_data.next(index)) {
- Vector<VertexData<T>> *aggregated_vertex = aggregate_vertex_data.getptr(*index);
- // This can't be null because we are just iterating.
- CRASH_COND(aggregated_vertex == nullptr);
-
- ERR_FAIL_INDEX_V_MSG(0, aggregated_vertex->size(), (HashMap<int, R>()), "The FBX file is corrupted, No valid data for this vertex index.");
- result[*index] = collector_function(aggregated_vertex, p_fall_back);
- }
-
- // Sanitize the data now, if the file is broken we can try import it anyway.
- bool problem_found = false;
- for (size_t i = 0; i < p_mesh_indices.size(); i += 1) {
- const Vertex vertex = get_vertex_from_polygon_vertex(p_mesh_indices, i);
- if (result.has(vertex) == false) {
- result[vertex] = p_fall_back;
- problem_found = true;
- }
- }
- if (problem_found) {
- WARN_PRINT("Some data is missing, this FBX file may be corrupted: #WARN0.");
- }
-
- return result;
-}
-
-template <class T>
-HashMap<int, T> FBXMeshData::extract_per_polygon(
- int p_vertex_count,
- const std::vector<int> &p_polygon_indices,
- const FBXDocParser::MeshGeometry::MappingData<T> &p_fbx_data,
- T p_fallback_value) const {
- ERR_FAIL_COND_V_MSG(p_fbx_data.ref_type == FBXDocParser::MeshGeometry::ReferenceType::index_to_direct && p_fbx_data.data.size() == 0, (HashMap<int, T>()), "invalid index to direct array");
- ERR_FAIL_COND_V_MSG(p_fbx_data.ref_type == FBXDocParser::MeshGeometry::ReferenceType::index && p_fbx_data.index.size() == 0, (HashMap<int, T>()), "The FBX seems corrupted");
-
- const int polygon_count = count_polygons(p_polygon_indices);
-
- // Aggregate vertex data.
- HashMap<int, Vector<T>> aggregate_polygon_data;
-
- switch (p_fbx_data.map_type) {
- case FBXDocParser::MeshGeometry::MapType::none: {
- // No data nothing to do.
- return (HashMap<int, T>());
- }
- case FBXDocParser::MeshGeometry::MapType::vertex: {
- ERR_FAIL_V_MSG((HashMap<int, T>()), "This data can't be extracted and organized per polygon, since into the FBX is mapped per vertex. This should not happen.");
- } break;
- case FBXDocParser::MeshGeometry::MapType::polygon_vertex: {
- ERR_FAIL_V_MSG((HashMap<int, T>()), "This data can't be extracted and organized per polygon, since into the FBX is mapped per polygon vertex. This should not happen.");
- } break;
- case FBXDocParser::MeshGeometry::MapType::polygon: {
- if (p_fbx_data.ref_type == FBXDocParser::MeshGeometry::ReferenceType::index_to_direct) {
- // The data is stored efficiently index_to_direct allows less data in the FBX file.
- for (int polygon_index = 0;
- polygon_index < polygon_count;
- polygon_index += 1) {
- if (p_fbx_data.index.size() == 0) {
- ERR_FAIL_INDEX_V_MSG(polygon_index, (int)p_fbx_data.data.size(), (HashMap<int, T>()), "FBX file is corrupted: #ERR62");
- aggregate_polygon_data[polygon_index].push_back(p_fbx_data.data[polygon_index]);
- } else {
- ERR_FAIL_INDEX_V_MSG(polygon_index, (int)p_fbx_data.index.size(), (HashMap<int, T>()), "FBX file is corrupted: #ERR62");
-
- const int index_to_direct = get_vertex_from_polygon_vertex(p_fbx_data.index, polygon_index);
- T value = p_fbx_data.data[index_to_direct];
- aggregate_polygon_data[polygon_index].push_back(value);
- }
- }
- } else if (p_fbx_data.ref_type == FBXDocParser::MeshGeometry::ReferenceType::direct) {
- // The data are mapped per polygon directly.
- ERR_FAIL_COND_V_MSG(polygon_count != (int)p_fbx_data.data.size(), (HashMap<int, T>()), "FBX file is corrupted: #ERR51");
-
- // Advance each polygon vertex, each new polygon advance the polygon index.
- for (int polygon_index = 0;
- polygon_index < polygon_count;
- polygon_index += 1) {
- ERR_FAIL_INDEX_V_MSG(polygon_index, (int)p_fbx_data.data.size(), (HashMap<int, T>()), "FBX file is corrupted: #ERR52");
- aggregate_polygon_data[polygon_index].push_back(p_fbx_data.data[polygon_index]);
- }
- } else {
- // The data is mapped per polygon using a reference.
- // The indices array, contains a *reference_id for each polygon.
- // * Note that the reference_id is the id of data into the data array.
- //
- // https://help.autodesk.com/view/FBX/2017/ENU/?guid=__cpp_ref_class_fbx_layer_element_html
- ERR_FAIL_COND_V_MSG(polygon_count != (int)p_fbx_data.index.size(), (HashMap<int, T>()), "FBX file seems corrupted: #ERR52");
-
- // Advance each polygon vertex, each new polygon advance the polygon index.
- for (int polygon_index = 0;
- polygon_index < polygon_count;
- polygon_index += 1) {
- ERR_FAIL_INDEX_V_MSG(polygon_index, (int)p_fbx_data.index.size(), (HashMap<int, T>()), "FBX file is corrupted: #ERR53");
- ERR_FAIL_INDEX_V_MSG(p_fbx_data.index[polygon_index], (int)p_fbx_data.data.size(), (HashMap<int, T>()), "FBX file is corrupted: #ERR54");
- aggregate_polygon_data[polygon_index].push_back(p_fbx_data.data[p_fbx_data.index[polygon_index]]);
- }
- }
- } break;
- case FBXDocParser::MeshGeometry::MapType::edge: {
- ERR_FAIL_V_MSG((HashMap<int, T>()), "This data can't be extracted and organized per polygon, since into the FBX is mapped per edge. This should not happen.");
- } break;
- case FBXDocParser::MeshGeometry::MapType::all_the_same: {
- // No matter the mode, no matter the data size; The first always win
- // and is set to all the vertices.
- ERR_FAIL_COND_V_MSG(p_fbx_data.data.size() <= 0, (HashMap<int, T>()), "FBX file seems corrupted: #ERR55");
- if (p_fbx_data.data.size() > 0) {
- for (int polygon_index = 0; polygon_index < polygon_count; polygon_index += 1) {
- aggregate_polygon_data[polygon_index].push_back(p_fbx_data.data[0]);
- }
- }
- } break;
- }
-
- if (aggregate_polygon_data.size() == 0) {
- return (HashMap<int, T>());
- }
-
- // A map is used because turns out that the some FBX file are not well organized
- // with vertices well compacted. Using a map allows avoid those issues.
- HashMap<int, T> polygons;
-
- // Take the first value for each vertex.
- for (const Vertex *index = aggregate_polygon_data.next(nullptr); index != nullptr; index = aggregate_polygon_data.next(index)) {
- Vector<T> *aggregated_polygon = aggregate_polygon_data.getptr(*index);
- // This can't be null because we are just iterating.
- CRASH_COND(aggregated_polygon == nullptr);
-
- ERR_FAIL_INDEX_V_MSG(0, (int)aggregated_polygon->size(), (HashMap<int, T>()), "The FBX file is corrupted, No valid data for this polygon index.");
-
- // Validate the final value.
- polygons[*index] = (*aggregated_polygon)[0];
- }
-
- // Sanitize the data now, if the file is broken we can try import it anyway.
- bool problem_found = false;
- for (int polygon_i = 0; polygon_i < polygon_count; polygon_i += 1) {
- if (polygons.has(polygon_i) == false) {
- polygons[polygon_i] = p_fallback_value;
- problem_found = true;
- }
- }
- if (problem_found) {
- WARN_PRINT("Some data is missing, this FBX file may be corrupted: #WARN1.");
- }
-
- return polygons;
-}
-
-void FBXMeshData::extract_morphs(const FBXDocParser::MeshGeometry *mesh_geometry, HashMap<String, MorphVertexData> &r_data) {
- r_data.clear();
-
- const int vertex_count = mesh_geometry->get_vertices().size();
-
- for (const FBXDocParser::BlendShape *blend_shape : mesh_geometry->get_blend_shapes()) {
- for (const FBXDocParser::BlendShapeChannel *blend_shape_channel : blend_shape->BlendShapeChannels()) {
- const std::vector<const FBXDocParser::ShapeGeometry *> &shape_geometries = blend_shape_channel->GetShapeGeometries();
- for (const FBXDocParser::ShapeGeometry *shape_geometry : shape_geometries) {
- String morph_name = ImportUtils::FBXAnimMeshName(shape_geometry->Name()).c_str();
- if (morph_name.is_empty()) {
- morph_name = "morph";
- }
-
- // TODO we have only these??
- const std::vector<unsigned int> &morphs_vertex_indices = shape_geometry->GetIndices();
- const std::vector<Vector3> &morphs_vertices = shape_geometry->GetVertices();
- const std::vector<Vector3> &morphs_normals = shape_geometry->GetNormals();
-
- ERR_FAIL_COND_MSG((int)morphs_vertex_indices.size() > vertex_count, "The FBX file is corrupted: #ERR103");
- ERR_FAIL_COND_MSG(morphs_vertex_indices.size() != morphs_vertices.size(), "The FBX file is corrupted: #ERR104");
- ERR_FAIL_COND_MSG((int)morphs_vertices.size() > vertex_count, "The FBX file is corrupted: #ERR105");
- ERR_FAIL_COND_MSG(morphs_normals.size() != 0 && morphs_normals.size() != morphs_vertices.size(), "The FBX file is corrupted: #ERR106");
-
- if (r_data.has(morph_name) == false) {
- // This morph doesn't exist yet.
- // Create it.
- MorphVertexData md;
- md.vertices.resize(vertex_count);
- md.normals.resize(vertex_count);
- r_data.set(morph_name, md);
- }
-
- MorphVertexData *data = r_data.getptr(morph_name);
- Vector3 *data_vertices_ptr = data->vertices.ptrw();
- Vector3 *data_normals_ptr = data->normals.ptrw();
-
- for (int i = 0; i < (int)morphs_vertex_indices.size(); i += 1) {
- const Vertex vertex = morphs_vertex_indices[i];
-
- ERR_FAIL_INDEX_MSG(vertex, vertex_count, "The blend shapes of this FBX file are corrupted. It has a not valid vertex.");
-
- data_vertices_ptr[vertex] = morphs_vertices[i];
-
- if (morphs_normals.size() != 0) {
- data_normals_ptr[vertex] = morphs_normals[i];
- }
- }
- }
- }
- }
-}
diff --git a/modules/fbx/data/fbx_mesh_data.h b/modules/fbx/data/fbx_mesh_data.h
deleted file mode 100644
index 358d0c2cb6..0000000000
--- a/modules/fbx/data/fbx_mesh_data.h
+++ /dev/null
@@ -1,200 +0,0 @@
-/*************************************************************************/
-/* fbx_mesh_data.h */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* https://godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2022 Juan Linietsky, Ariel Manzur. */
-/* Copyright (c) 2014-2022 Godot Engine contributors (cf. AUTHORS.md). */
-/* */
-/* Permission is hereby granted, free of charge, to any person obtaining */
-/* a copy of this software and associated documentation files (the */
-/* "Software"), to deal in the Software without restriction, including */
-/* without limitation the rights to use, copy, modify, merge, publish, */
-/* distribute, sublicense, and/or sell copies of the Software, and to */
-/* permit persons to whom the Software is furnished to do so, subject to */
-/* the following conditions: */
-/* */
-/* The above copyright notice and this permission notice shall be */
-/* included in all copies or substantial portions of the Software. */
-/* */
-/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
-/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
-/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
-/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
-/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
-/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
-/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
-/*************************************************************************/
-
-#ifndef FBX_MESH_DATA_H
-#define FBX_MESH_DATA_H
-
-#include "core/templates/hash_map.h"
-#include "core/templates/local_vector.h"
-#include "core/templates/ordered_hash_map.h"
-#include "editor/import/resource_importer_scene.h"
-#include "scene/3d/importer_mesh_instance_3d.h"
-#include "scene/3d/mesh_instance_3d.h"
-#include "scene/resources/surface_tool.h"
-
-#include "fbx_bone.h"
-#include "fbx_parser/FBXMeshGeometry.h"
-#include "import_state.h"
-#include "tools/import_utils.h"
-
-struct FBXNode;
-struct FBXMeshData;
-struct FBXBone;
-struct ImportState;
-
-typedef int Vertex;
-typedef int SurfaceId;
-typedef int PolygonId;
-typedef int DataIndex;
-
-struct SurfaceData {
- Ref<SurfaceTool> surface_tool;
- OrderedHashMap<Vertex, int> lookup_table; // proposed fix is to replace lookup_table[vertex_id] to give the position of the vertices_map[int] index.
- LocalVector<Vertex> vertices_map; // this must be ordered the same as insertion <-- slow to do find() operation.
- Ref<Material> material;
- HashMap<PolygonId, Vector<DataIndex>> surface_polygon_vertex;
- Array morphs;
-};
-
-struct VertexWeightMapping {
- Vector<float> weights;
- Vector<int> bones;
- // This extra vector is used because the bone id is computed in a second step.
- // TODO Get rid of this extra step is a good idea.
- Vector<Ref<FBXBone>> bones_ref;
-};
-
-template <class T>
-struct VertexData {
- int polygon_index;
- T data;
-};
-
-// Caches mesh information and instantiates meshes for you using helper functions.
-struct FBXMeshData : RefCounted {
- struct MorphVertexData {
- // TODO we have only these??
- /// Each element is a vertex. Not supposed to be void.
- Vector<Vector3> vertices;
- /// Each element is a vertex. Not supposed to be void.
- Vector<Vector3> normals;
- };
-
- // FIXME: remove this is a hack for testing only
- mutable const FBXDocParser::MeshGeometry *mesh_geometry = nullptr;
-
- Ref<FBXNode> mesh_node = nullptr;
- /// vertex id, Weight Info
- /// later: perf we can use array here
- HashMap<int, VertexWeightMapping> vertex_weights;
-
- // translate fbx mesh data from document context to FBX Mesh Geometry Context
- bool valid_weight_indexes = false;
-
- ImporterMeshInstance3D *create_fbx_mesh(const ImportState &state, const FBXDocParser::MeshGeometry *p_mesh_geometry, const FBXDocParser::Model *model, bool use_compression);
-
- void gen_weight_info(Ref<SurfaceTool> st, int vertex_id) const;
-
- /* mesh maximum weight count */
- bool valid_weight_count = false;
- int max_weight_count = 0;
- uint64_t armature_id = 0;
- bool valid_armature_id = false;
- ImporterMeshInstance3D *godot_mesh_instance = nullptr;
-
-private:
- void sanitize_vertex_weights(const ImportState &state);
-
- /// Make sure to reorganize the vertices so that the correct UV is taken.
- /// This step is needed because differently from the normal, that can be
- /// combined, the UV may need its own triangle because sometimes they have
- /// really different UV for the same vertex but different polygon.
- /// This function make sure to add another vertex for those UVS.
- void reorganize_vertices(
- std::vector<int> &r_polygon_indices,
- std::vector<Vector3> &r_vertices,
- HashMap<int, Vector3> &r_normals,
- HashMap<int, Vector2> &r_uv_1,
- HashMap<int, Vector2> &r_uv_2,
- HashMap<int, Color> &r_color,
- HashMap<String, MorphVertexData> &r_morphs,
- HashMap<int, HashMap<int, Vector3>> &r_normals_raw,
- HashMap<int, HashMap<int, Color>> &r_colors_raw,
- HashMap<int, HashMap<int, Vector2>> &r_uv_1_raw,
- HashMap<int, HashMap<int, Vector2>> &r_uv_2_raw);
-
- void add_vertex(
- const ImportState &state,
- Ref<SurfaceTool> p_surface_tool,
- real_t p_scale,
- int p_vertex,
- const std::vector<Vector3> &p_vertices_position,
- const HashMap<int, Vector3> &p_normals,
- const HashMap<int, Vector2> &p_uvs_0,
- const HashMap<int, Vector2> &p_uvs_1,
- const HashMap<int, Color> &p_colors,
- const Vector3 &p_morph_value = Vector3(),
- const Vector3 &p_morph_normal = Vector3());
-
- void triangulate_polygon(SurfaceData *surface, const Vector<int> &p_polygon_vertex, const std::vector<Vector3> &p_vertices) const;
-
- /// This function is responsible to convert the FBX polygon vertex to
- /// vertex index.
- /// The polygon vertices are stored in an array with some negative
- /// values. The negative values define the last face index.
- /// For example the following `face_array` contains two faces, the former
- /// with 3 vertices and the latter with a line:
- /// [0,2,-2,3,-5]
- /// Parsed as:
- /// [0, 2, 1, 3, 4]
- /// The negative values are computed using this formula: `(-value) - 1`
- ///
- /// Returns the vertex index from the polygon vertex.
- /// Returns -1 if `p_index` is invalid.
- int get_vertex_from_polygon_vertex(const std::vector<int> &p_face_indices, int p_index) const;
-
- /// Returns true if this polygon_vertex_index is the end of a new polygon.
- bool is_end_of_polygon(const std::vector<int> &p_face_indices, int p_index) const;
-
- /// Returns true if this polygon_vertex_index is the begin of a new polygon.
- bool is_start_of_polygon(const std::vector<int> &p_face_indices, int p_index) const;
-
- /// Returns the number of polygons.
- int count_polygons(const std::vector<int> &p_face_indices) const;
-
- /// Used to extract data from the `MappingData` aligned with vertex.
- /// Useful to extract normal/uvs/colors/tangents/etc...
- /// If the function fails somehow, it returns an hollow vector and print an error.
- template <class R, class T>
- HashMap<int, R> extract_per_vertex_data(
- int p_vertex_count,
- const std::vector<FBXDocParser::MeshGeometry::Edge> &p_edges,
- const std::vector<int> &p_mesh_indices,
- const FBXDocParser::MeshGeometry::MappingData<T> &p_mapping_data,
- R (*collector_function)(const Vector<VertexData<T>> *p_vertex_data, R p_fall_back),
- R p_fall_back) const;
-
- /// Used to extract data from the `MappingData` organized per polygon.
- /// Useful to extract the material
- /// If the function fails somehow, it returns an hollow vector and print an error.
- template <class T>
- HashMap<int, T> extract_per_polygon(
- int p_vertex_count,
- const std::vector<int> &p_face_indices,
- const FBXDocParser::MeshGeometry::MappingData<T> &p_fbx_data,
- T p_fallback_value) const;
-
- /// Extracts the morph data and organizes it per vertices.
- /// The returned `MorphVertexData` arrays are never something different
- /// then the `vertex_count`.
- void extract_morphs(const FBXDocParser::MeshGeometry *mesh_geometry, HashMap<String, MorphVertexData> &r_data);
-};
-
-#endif // FBX_MESH_DATA_H
diff --git a/modules/fbx/data/fbx_node.h b/modules/fbx/data/fbx_node.h
deleted file mode 100644
index 7a4139dcdf..0000000000
--- a/modules/fbx/data/fbx_node.h
+++ /dev/null
@@ -1,63 +0,0 @@
-/*************************************************************************/
-/* fbx_node.h */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* https://godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2022 Juan Linietsky, Ariel Manzur. */
-/* Copyright (c) 2014-2022 Godot Engine contributors (cf. AUTHORS.md). */
-/* */
-/* Permission is hereby granted, free of charge, to any person obtaining */
-/* a copy of this software and associated documentation files (the */
-/* "Software"), to deal in the Software without restriction, including */
-/* without limitation the rights to use, copy, modify, merge, publish, */
-/* distribute, sublicense, and/or sell copies of the Software, and to */
-/* permit persons to whom the Software is furnished to do so, subject to */
-/* the following conditions: */
-/* */
-/* The above copyright notice and this permission notice shall be */
-/* included in all copies or substantial portions of the Software. */
-/* */
-/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
-/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
-/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
-/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
-/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
-/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
-/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
-/*************************************************************************/
-
-#ifndef FBX_NODE_H
-#define FBX_NODE_H
-
-#include "fbx_skeleton.h"
-#include "model_abstraction.h"
-#include "pivot_transform.h"
-
-#include "fbx_parser/FBXDocument.h"
-
-class Node3D;
-struct PivotTransform;
-
-struct FBXNode : RefCounted, ModelAbstraction {
- uint64_t current_node_id = 0;
- String node_name = String();
- Node3D *godot_node = nullptr;
-
- // used to parent the skeleton once the tree is built.
- Ref<FBXSkeleton> skeleton_node = Ref<FBXSkeleton>();
-
- void set_parent(Ref<FBXNode> p_parent) {
- fbx_parent = p_parent;
- }
-
- void set_pivot_transform(Ref<PivotTransform> p_pivot_transform) {
- pivot_transform = p_pivot_transform;
- }
-
- Ref<PivotTransform> pivot_transform = Ref<PivotTransform>(); // local and global xform data
- Ref<FBXNode> fbx_parent = Ref<FBXNode>(); // parent node
-};
-
-#endif // FBX_NODE_H
diff --git a/modules/fbx/data/fbx_skeleton.cpp b/modules/fbx/data/fbx_skeleton.cpp
deleted file mode 100644
index 0225df16af..0000000000
--- a/modules/fbx/data/fbx_skeleton.cpp
+++ /dev/null
@@ -1,130 +0,0 @@
-/*************************************************************************/
-/* fbx_skeleton.cpp */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* https://godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2022 Juan Linietsky, Ariel Manzur. */
-/* Copyright (c) 2014-2022 Godot Engine contributors (cf. AUTHORS.md). */
-/* */
-/* Permission is hereby granted, free of charge, to any person obtaining */
-/* a copy of this software and associated documentation files (the */
-/* "Software"), to deal in the Software without restriction, including */
-/* without limitation the rights to use, copy, modify, merge, publish, */
-/* distribute, sublicense, and/or sell copies of the Software, and to */
-/* permit persons to whom the Software is furnished to do so, subject to */
-/* the following conditions: */
-/* */
-/* The above copyright notice and this permission notice shall be */
-/* included in all copies or substantial portions of the Software. */
-/* */
-/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
-/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
-/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
-/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
-/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
-/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
-/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
-/*************************************************************************/
-
-#include "fbx_skeleton.h"
-
-#include "import_state.h"
-
-#include "tools/import_utils.h"
-
-void FBXSkeleton::init_skeleton(const ImportState &state) {
- int skeleton_bone_count = skeleton_bones.size();
-
- if (skeleton == nullptr && skeleton_bone_count > 0) {
- skeleton = memnew(Skeleton3D);
-
- if (fbx_node.is_valid()) {
- // cache skeleton attachment for later during node creation
- // can't be done until after node hierarchy is built
- if (fbx_node->godot_node != state.root) {
- fbx_node->skeleton_node = Ref<FBXSkeleton>(this);
- print_verbose("cached armature skeleton attachment for node " + fbx_node->node_name);
- } else {
- // root node must never be a skeleton to prevent cyclic skeletons from being allowed (skeleton in a skeleton)
- fbx_node->godot_node->add_child(skeleton);
- skeleton->set_owner(state.root_owner);
- skeleton->set_name("Skeleton3D");
- print_verbose("created armature skeleton for root");
- }
- } else {
- memfree(skeleton);
- skeleton = nullptr;
- print_error("[doc] skeleton has no valid node to parent nodes to - erasing");
- skeleton_bones.clear();
- return;
- }
- }
-
- // Make the bone name uniques.
- for (int x = 0; x < skeleton_bone_count; x++) {
- Ref<FBXBone> bone = skeleton_bones[x];
- if (bone.is_valid()) {
- // Make sure the bone name is unique.
- const String bone_name = bone->bone_name;
- int same_name_count = 0;
- for (int y = x + 1; y < skeleton_bone_count; y++) {
- Ref<FBXBone> other_bone = skeleton_bones[y];
- if (other_bone.is_valid()) {
- if (other_bone->bone_name == bone_name) {
- same_name_count += 1;
- other_bone->bone_name += "_" + itos(same_name_count);
- }
- }
- }
- }
- }
-
- Map<int, Ref<FBXBone>> bone_map;
- // implement fbx cluster skin logic here this is where it goes
- int bone_count = 0;
- for (int x = 0; x < skeleton_bone_count; x++) {
- Ref<FBXBone> bone = skeleton_bones[x];
- if (bone.is_valid()) {
- skeleton->add_bone(bone->bone_name);
- bone->godot_bone_id = bone_count;
- bone->fbx_skeleton = Ref<FBXSkeleton>(this);
- bone_map.insert(bone_count, bone);
- print_verbose("added bone " + itos(bone->bone_id) + " " + bone->bone_name);
- bone_count++;
- }
- }
-
- ERR_FAIL_COND_MSG(skeleton->get_bone_count() != bone_count, "Not all bones got added, is the file corrupted?");
-
- for (const KeyValue<int, Ref<FBXBone>> &bone_element : bone_map) {
- const Ref<FBXBone> bone = bone_element.value;
- int bone_index = bone_element.key;
- 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)) {
- Ref<FBXBone> parent_bone = state.fbx_bone_map[bone->parent_bone_id];
- int bone_id = skeleton->find_bone(parent_bone->bone_name);
- if (bone_id != -1) {
- skeleton->set_bone_parent(bone_index, bone_id);
- } else {
- print_error("invalid bone parent: " + parent_bone->bone_name);
- }
- } else {
- if (bone->godot_bone_id != -1) {
- skeleton->set_bone_parent(bone_index, -1); // no parent for this bone
- }
- }
- }
-}
diff --git a/modules/fbx/data/fbx_skeleton.h b/modules/fbx/data/fbx_skeleton.h
deleted file mode 100644
index e615d0f5e3..0000000000
--- a/modules/fbx/data/fbx_skeleton.h
+++ /dev/null
@@ -1,53 +0,0 @@
-/*************************************************************************/
-/* fbx_skeleton.h */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* https://godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2022 Juan Linietsky, Ariel Manzur. */
-/* Copyright (c) 2014-2022 Godot Engine contributors (cf. AUTHORS.md). */
-/* */
-/* Permission is hereby granted, free of charge, to any person obtaining */
-/* a copy of this software and associated documentation files (the */
-/* "Software"), to deal in the Software without restriction, including */
-/* without limitation the rights to use, copy, modify, merge, publish, */
-/* distribute, sublicense, and/or sell copies of the Software, and to */
-/* permit persons to whom the Software is furnished to do so, subject to */
-/* the following conditions: */
-/* */
-/* The above copyright notice and this permission notice shall be */
-/* included in all copies or substantial portions of the Software. */
-/* */
-/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
-/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
-/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
-/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
-/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
-/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
-/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
-/*************************************************************************/
-
-#ifndef FBX_SKELETON_H
-#define FBX_SKELETON_H
-
-#include "fbx_bone.h"
-#include "fbx_node.h"
-#include "model_abstraction.h"
-
-#include "core/object/ref_counted.h"
-#include "scene/3d/skeleton_3d.h"
-
-struct FBXNode;
-struct ImportState;
-struct FBXBone;
-
-struct FBXSkeleton : RefCounted {
- Ref<FBXNode> fbx_node = Ref<FBXNode>();
- Vector<Ref<FBXBone>> skeleton_bones = Vector<Ref<FBXBone>>();
- Skeleton3D *skeleton = nullptr;
-
- void init_skeleton(const ImportState &state);
-};
-
-#endif // FBX_SKELETON_H
diff --git a/modules/fbx/data/import_state.h b/modules/fbx/data/import_state.h
deleted file mode 100644
index eff11e3bb8..0000000000
--- a/modules/fbx/data/import_state.h
+++ /dev/null
@@ -1,112 +0,0 @@
-/*************************************************************************/
-/* import_state.h */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* https://godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2022 Juan Linietsky, Ariel Manzur. */
-/* Copyright (c) 2014-2022 Godot Engine contributors (cf. AUTHORS.md). */
-/* */
-/* Permission is hereby granted, free of charge, to any person obtaining */
-/* a copy of this software and associated documentation files (the */
-/* "Software"), to deal in the Software without restriction, including */
-/* without limitation the rights to use, copy, modify, merge, publish, */
-/* distribute, sublicense, and/or sell copies of the Software, and to */
-/* permit persons to whom the Software is furnished to do so, subject to */
-/* the following conditions: */
-/* */
-/* The above copyright notice and this permission notice shall be */
-/* included in all copies or substantial portions of the Software. */
-/* */
-/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
-/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
-/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
-/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
-/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
-/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
-/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
-/*************************************************************************/
-
-#ifndef IMPORT_STATE_H
-#define IMPORT_STATE_H
-
-#include "fbx_mesh_data.h"
-#include "tools/import_utils.h"
-#include "tools/validation_tools.h"
-
-#include "pivot_transform.h"
-
-#include "core/io/resource_importer.h"
-#include "core/templates/vector.h"
-#include "editor/import/resource_importer_scene.h"
-#include "editor/project_settings_editor.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"
-#include "scene/resources/animation.h"
-#include "scene/resources/surface_tool.h"
-
-#include "modules/fbx/fbx_parser/FBXDocument.h"
-#include "modules/fbx/fbx_parser/FBXImportSettings.h"
-#include "modules/fbx/fbx_parser/FBXMeshGeometry.h"
-#include "modules/fbx/fbx_parser/FBXParser.h"
-#include "modules/fbx/fbx_parser/FBXTokenizer.h"
-#include "modules/fbx/fbx_parser/FBXUtil.h"
-
-struct FBXBone;
-struct FBXMeshData;
-struct FBXNode;
-struct FBXSkeleton;
-
-struct ImportState {
- bool enable_material_import = true;
- bool enable_animation_import = true;
- bool is_blender_fbx = false;
-
- Map<StringName, Ref<Texture>> cached_image_searches;
- Map<uint64_t, Ref<Material>> cached_materials;
-
- String path = String();
- Node3D *root_owner = nullptr;
- Node3D *root = nullptr;
- real_t scale = 0.01;
- Ref<FBXNode> fbx_root_node = Ref<FBXNode>();
- // skeleton map - merged automatically when they are on the same x node in the tree so we can merge them automatically.
- Map<uint64_t, Ref<FBXSkeleton>> skeleton_map = Map<uint64_t, Ref<FBXSkeleton>>();
-
- // nodes on the same level get merged automatically.
- //Map<uint64_t, Skeleton3D *> armature_map;
- AnimationPlayer *animation_player = nullptr;
-
- // Generation 4 - Raw document accessing for bone/skin/joint/kLocators
- // joints are not necessarily bones but must be merged into the skeleton
- // (bone id), bone
- Map<uint64_t, Ref<FBXBone>> fbx_bone_map = Map<uint64_t, Ref<FBXBone>>(); // this is the bone name and setup information required for joints
- // this will never contain joints only bones attached to a mesh.
-
- // Generation 4 - Raw document for creating the nodes transforms in the scene
- // this is a list of the nodes in the scene
- // (id, node)
- List<Ref<FBXNode>> fbx_node_list = List<Ref<FBXNode>>();
-
- // All nodes which have been created in the scene
- // this will not contain the root node of the scene
- Map<uint64_t, Ref<FBXNode>> fbx_target_map = Map<uint64_t, Ref<FBXNode>>();
-
- // mesh nodes which are created in node / mesh step - used for populating skin poses in MeshSkins
- Map<uint64_t, Ref<FBXNode>> MeshNodes = Map<uint64_t, Ref<FBXNode>>();
- // mesh skin map
- Map<uint64_t, Ref<Skin>> MeshSkins = Map<uint64_t, Ref<Skin>>();
-
- // this is the container for the mesh weight information and eventually
- // any mesh data
- // but not the skin, just stuff important for rendering
- // skin is applied to mesh instance so not really required to be in here yet.
- // maybe later
- // fbx mesh id, FBXMeshData
- Map<uint64_t, Ref<FBXMeshData>> renderer_mesh_data = Map<uint64_t, Ref<FBXMeshData>>();
-};
-
-#endif // IMPORT_STATE_H
diff --git a/modules/fbx/data/pivot_transform.cpp b/modules/fbx/data/pivot_transform.cpp
deleted file mode 100644
index 9457b19a7f..0000000000
--- a/modules/fbx/data/pivot_transform.cpp
+++ /dev/null
@@ -1,307 +0,0 @@
-/*************************************************************************/
-/* pivot_transform.cpp */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* https://godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2022 Juan Linietsky, Ariel Manzur. */
-/* Copyright (c) 2014-2022 Godot Engine contributors (cf. AUTHORS.md). */
-/* */
-/* Permission is hereby granted, free of charge, to any person obtaining */
-/* a copy of this software and associated documentation files (the */
-/* "Software"), to deal in the Software without restriction, including */
-/* without limitation the rights to use, copy, modify, merge, publish, */
-/* distribute, sublicense, and/or sell copies of the Software, and to */
-/* permit persons to whom the Software is furnished to do so, subject to */
-/* the following conditions: */
-/* */
-/* The above copyright notice and this permission notice shall be */
-/* included in all copies or substantial portions of the Software. */
-/* */
-/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
-/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
-/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
-/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
-/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
-/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
-/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
-/*************************************************************************/
-
-#include "pivot_transform.h"
-
-#include "tools/import_utils.h"
-
-void PivotTransform::ReadTransformChain() {
- const FBXDocParser::PropertyTable *props = fbx_model;
- const FBXDocParser::Model::RotOrder &rot = fbx_model->RotationOrder();
- const FBXDocParser::TransformInheritance &inheritType = fbx_model->InheritType();
- inherit_type = inheritType; // copy the inherit type we need it in the second step.
- print_verbose("Model: " + String(fbx_model->Name().c_str()) + " Has inherit type: " + itos(fbx_model->InheritType()));
- bool ok = false;
- raw_pre_rotation = ImportUtils::safe_import_vector3(FBXDocParser::PropertyGet<Vector3>(props, "PreRotation", ok));
- if (ok) {
- pre_rotation = ImportUtils::EulerToQuaternion(rot, ImportUtils::deg2rad(raw_pre_rotation));
- print_verbose("valid pre_rotation: " + raw_pre_rotation + " euler conversion: " + (pre_rotation.get_euler() * (180 / Math_PI)));
- }
- raw_post_rotation = ImportUtils::safe_import_vector3(FBXDocParser::PropertyGet<Vector3>(props, "PostRotation", ok));
- if (ok) {
- post_rotation = ImportUtils::EulerToQuaternion(FBXDocParser::Model::RotOrder_EulerXYZ, ImportUtils::deg2rad(raw_post_rotation));
- print_verbose("valid post_rotation: " + raw_post_rotation + " euler conversion: " + (pre_rotation.get_euler() * (180 / Math_PI)));
- }
- const Vector3 &RotationPivot = ImportUtils::safe_import_vector3(FBXDocParser::PropertyGet<Vector3>(props, "RotationPivot", ok));
- if (ok) {
- rotation_pivot = ImportUtils::FixAxisConversions(RotationPivot);
- }
- const Vector3 &RotationOffset = ImportUtils::safe_import_vector3(FBXDocParser::PropertyGet<Vector3>(props, "RotationOffset", ok));
- if (ok) {
- rotation_offset = ImportUtils::FixAxisConversions(RotationOffset);
- }
- const Vector3 &ScalingOffset = ImportUtils::safe_import_vector3(FBXDocParser::PropertyGet<Vector3>(props, "ScalingOffset", ok));
- if (ok) {
- scaling_offset = ImportUtils::FixAxisConversions(ScalingOffset);
- }
- const Vector3 &ScalingPivot = ImportUtils::safe_import_vector3(FBXDocParser::PropertyGet<Vector3>(props, "ScalingPivot", ok));
- if (ok) {
- scaling_pivot = ImportUtils::FixAxisConversions(ScalingPivot);
- }
- const Vector3 &Translation = ImportUtils::safe_import_vector3(FBXDocParser::PropertyGet<Vector3>(props, "Lcl Translation", ok));
- if (ok) {
- translation = ImportUtils::FixAxisConversions(Translation);
- }
- raw_rotation = ImportUtils::safe_import_vector3(FBXDocParser::PropertyGet<Vector3>(props, "Lcl Rotation", ok));
- if (ok) {
- rotation = ImportUtils::EulerToQuaternion(rot, ImportUtils::deg2rad(raw_rotation));
- }
- const Vector3 &Scaling = ImportUtils::safe_import_vector3(FBXDocParser::PropertyGet<Vector3>(props, "Lcl Scaling", ok));
- if (ok) {
- scaling = Scaling;
- } else {
- scaling = Vector3(1, 1, 1);
- }
- const Vector3 &GeometricScaling = ImportUtils::safe_import_vector3(FBXDocParser::PropertyGet<Vector3>(props, "GeometricScaling", ok));
- if (ok) {
- geometric_scaling = GeometricScaling;
- } else {
- geometric_scaling = Vector3(1, 1, 1);
- }
-
- const Vector3 &GeometricRotation = ImportUtils::safe_import_vector3(FBXDocParser::PropertyGet<Vector3>(props, "GeometricRotation", ok));
- if (ok) {
- geometric_rotation = ImportUtils::EulerToQuaternion(rot, ImportUtils::deg2rad(GeometricRotation));
- } else {
- geometric_rotation = Quaternion();
- }
-
- const Vector3 &GeometricTranslation = ImportUtils::safe_import_vector3(FBXDocParser::PropertyGet<Vector3>(props, "GeometricTranslation", ok));
- if (ok) {
- geometric_translation = ImportUtils::FixAxisConversions(GeometricTranslation);
- } else {
- geometric_translation = Vector3(0, 0, 0);
- }
-
- if (geometric_rotation != Quaternion()) {
- print_error("geometric rotation is unsupported!");
- //CRASH_COND(true);
- }
-
- if (!geometric_scaling.is_equal_approx(Vector3(1, 1, 1))) {
- print_error("geometric scaling is unsupported!");
- //CRASH_COND(true);
- }
-
- if (!geometric_translation.is_equal_approx(Vector3(0, 0, 0))) {
- print_error("geometric translation is unsupported.");
- //CRASH_COND(true);
- }
-}
-
-Transform3D PivotTransform::ComputeLocalTransform(Vector3 p_translation, Quaternion p_rotation, Vector3 p_scaling) const {
- Transform3D T, Roff, Rp, Soff, Sp, S;
-
- // Here I assume this is the operation which needs done.
- // Its WorldTransform * V
-
- // Origin pivots
- T.set_origin(p_translation);
- Roff.set_origin(rotation_offset);
- Rp.set_origin(rotation_pivot);
- Soff.set_origin(scaling_offset);
- Sp.set_origin(scaling_pivot);
-
- // Scaling node
- S.scale(p_scaling);
- // Rotation pivots
- Transform3D Rpre = Transform3D(pre_rotation);
- Transform3D R = Transform3D(p_rotation);
- Transform3D Rpost = Transform3D(post_rotation);
-
- return T * Roff * Rp * Rpre * R * Rpost.affine_inverse() * Rp.affine_inverse() * Soff * Sp * S * Sp.affine_inverse();
-}
-
-Transform3D PivotTransform::ComputeGlobalTransform(Transform3D t) const {
- Vector3 pos = t.origin;
- Vector3 scale = t.basis.get_scale();
- Quaternion rot = t.basis.get_rotation_quaternion();
- return ComputeGlobalTransform(pos, rot, scale);
-}
-
-Transform3D PivotTransform::ComputeLocalTransform(Transform3D t) const {
- Vector3 pos = t.origin;
- Vector3 scale = t.basis.get_scale();
- Quaternion rot = t.basis.get_rotation_quaternion();
- return ComputeLocalTransform(pos, rot, scale);
-}
-
-Transform3D PivotTransform::ComputeGlobalTransform(Vector3 p_translation, Quaternion p_rotation, Vector3 p_scaling) const {
- Transform3D T, Roff, Rp, Soff, Sp, S;
-
- // Here I assume this is the operation which needs done.
- // Its WorldTransform * V
-
- // Origin pivots
- T.set_origin(p_translation);
- Roff.set_origin(rotation_offset);
- Rp.set_origin(rotation_pivot);
- Soff.set_origin(scaling_offset);
- Sp.set_origin(scaling_pivot);
-
- // Scaling node
- S.scale(p_scaling);
-
- // Rotation pivots
- Transform3D Rpre = Transform3D(pre_rotation);
- Transform3D R = Transform3D(p_rotation);
- Transform3D Rpost = Transform3D(post_rotation);
-
- Transform3D parent_global_xform;
- Transform3D parent_local_scaling_m;
-
- if (parent_transform.is_valid()) {
- parent_global_xform = parent_transform->GlobalTransform;
- parent_local_scaling_m = parent_transform->Local_Scaling_Matrix;
- }
-
- Transform3D local_rotation_m, parent_global_rotation_m;
- Quaternion parent_global_rotation = parent_global_xform.basis.get_rotation_quaternion();
- parent_global_rotation_m.basis.set_quaternion(parent_global_rotation);
- local_rotation_m = Rpre * R * Rpost;
-
- //Basis parent_global_rotation = Basis(parent_global_xform.get_basis().get_rotation_quaternion().normalized());
-
- Transform3D local_shear_scaling, parent_shear_scaling, parent_shear_rotation, parent_shear_translation;
- Vector3 parent_translation = parent_global_xform.get_origin();
- parent_shear_translation.origin = parent_translation;
- parent_shear_rotation = parent_shear_translation.affine_inverse() * parent_global_xform;
- parent_shear_scaling = parent_global_rotation_m.affine_inverse() * parent_shear_rotation;
- local_shear_scaling = S;
-
- // Inherit type handler - we don't care about T here, just reordering RSrs etc.
- Transform3D global_rotation_scale;
- if (inherit_type == FBXDocParser::Transform_RrSs) {
- global_rotation_scale = parent_global_rotation_m * local_rotation_m * parent_shear_scaling * local_shear_scaling;
- } else if (inherit_type == FBXDocParser::Transform_RSrs) {
- global_rotation_scale = parent_global_rotation_m * parent_shear_scaling * local_rotation_m * local_shear_scaling;
- } else if (inherit_type == FBXDocParser::Transform_Rrs) {
- Transform3D parent_global_shear_m_noLocal = parent_shear_scaling * parent_local_scaling_m.affine_inverse();
- global_rotation_scale = parent_global_rotation_m * local_rotation_m * parent_global_shear_m_noLocal * local_shear_scaling;
- }
- Transform3D local_transform = T * Roff * Rp * Rpre * R * Rpost.affine_inverse() * Rp.affine_inverse() * Soff * Sp * S * Sp.affine_inverse();
- //Transform3D local_translation_pivoted = Transform3D(Basis(), LocalTransform.origin);
-
- ERR_FAIL_COND_V_MSG(local_transform.basis.determinant() == 0, Transform3D(), "Det == 0 prevented in scene file");
-
- // manual hack to force SSC not to be compensated for - until we can handle it properly with tests
- return parent_global_xform * local_transform;
-}
-
-void PivotTransform::ComputePivotTransform() {
- Transform3D T, Roff, Rp, Soff, Sp, S;
-
- // Here I assume this is the operation which needs done.
- // Its WorldTransform * V
-
- // Origin pivots
- T.set_origin(translation);
- Roff.set_origin(rotation_offset);
- Rp.set_origin(rotation_pivot);
- Soff.set_origin(scaling_offset);
- Sp.set_origin(scaling_pivot);
-
- // Scaling node
- if (!scaling.is_equal_approx(Vector3())) {
- S.scale(scaling);
- } else {
- S.scale(Vector3(1, 1, 1));
- }
- Local_Scaling_Matrix = S; // copy for when node / child is looking for the value of this.
-
- // Rotation pivots
- Transform3D Rpre = Transform3D(pre_rotation);
- Transform3D R = Transform3D(rotation);
- Transform3D Rpost = Transform3D(post_rotation);
-
- Transform3D parent_global_xform;
- Transform3D parent_local_scaling_m;
-
- if (parent_transform.is_valid()) {
- parent_global_xform = parent_transform->GlobalTransform;
- parent_local_scaling_m = parent_transform->Local_Scaling_Matrix;
- }
-
- Transform3D local_rotation_m, parent_global_rotation_m;
- Quaternion parent_global_rotation = parent_global_xform.basis.get_rotation_quaternion();
- parent_global_rotation_m.basis.set_quaternion(parent_global_rotation);
- local_rotation_m = Rpre * R * Rpost;
-
- //Basis parent_global_rotation = Basis(parent_global_xform.get_basis().get_rotation_quaternion().normalized());
-
- Transform3D local_shear_scaling, parent_shear_scaling, parent_shear_rotation, parent_shear_translation;
- Vector3 parent_translation = parent_global_xform.get_origin();
- parent_shear_translation.origin = parent_translation;
- parent_shear_rotation = parent_shear_translation.affine_inverse() * parent_global_xform;
- parent_shear_scaling = parent_global_rotation_m.affine_inverse() * parent_shear_rotation;
- local_shear_scaling = S;
-
- // Inherit type handler - we don't care about T here, just reordering RSrs etc.
- Transform3D global_rotation_scale;
- if (inherit_type == FBXDocParser::Transform_RrSs) {
- global_rotation_scale = parent_global_rotation_m * local_rotation_m * parent_shear_scaling * local_shear_scaling;
- } else if (inherit_type == FBXDocParser::Transform_RSrs) {
- global_rotation_scale = parent_global_rotation_m * parent_shear_scaling * local_rotation_m * local_shear_scaling;
- } else if (inherit_type == FBXDocParser::Transform_Rrs) {
- Transform3D parent_global_shear_m_noLocal = parent_shear_scaling * parent_local_scaling_m.inverse();
- global_rotation_scale = parent_global_rotation_m * local_rotation_m * parent_global_shear_m_noLocal * local_shear_scaling;
- }
- LocalTransform = Transform3D();
- LocalTransform = T * Roff * Rp * Rpre * R * Rpost.affine_inverse() * Rp.affine_inverse() * Soff * Sp * S * Sp.affine_inverse();
-
- ERR_FAIL_COND_MSG(LocalTransform.basis.determinant() == 0, "invalid scale reset");
-
- Transform3D local_translation_pivoted = Transform3D(Basis(), LocalTransform.origin);
- GlobalTransform = Transform3D();
- //GlobalTransform = parent_global_xform * LocalTransform;
- Transform3D global_origin = Transform3D(Basis(), parent_translation);
- GlobalTransform = (global_origin * local_translation_pivoted) * global_rotation_scale;
-
- ImportUtils::debug_xform("local xform calculation", LocalTransform);
- print_verbose("scale of node: " + S.basis.get_scale_local());
- print_verbose("---------------------------------------------------------------");
-}
-
-void PivotTransform::Execute() {
- ReadTransformChain();
- ComputePivotTransform();
-
- ImportUtils::debug_xform("global xform: ", GlobalTransform);
-
- if (LocalTransform.basis.determinant() == 0) {
- print_error("Serious det == 0!");
- }
-
- if (GlobalTransform.basis.determinant() == 0) {
- print_error("Serious! node has det == 0!");
- }
-
- computed_global_xform = true;
-}
diff --git a/modules/fbx/data/pivot_transform.h b/modules/fbx/data/pivot_transform.h
deleted file mode 100644
index df97c8db57..0000000000
--- a/modules/fbx/data/pivot_transform.h
+++ /dev/null
@@ -1,115 +0,0 @@
-/*************************************************************************/
-/* pivot_transform.h */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* https://godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2022 Juan Linietsky, Ariel Manzur. */
-/* Copyright (c) 2014-2022 Godot Engine contributors (cf. AUTHORS.md). */
-/* */
-/* Permission is hereby granted, free of charge, to any person obtaining */
-/* a copy of this software and associated documentation files (the */
-/* "Software"), to deal in the Software without restriction, including */
-/* without limitation the rights to use, copy, modify, merge, publish, */
-/* distribute, sublicense, and/or sell copies of the Software, and to */
-/* permit persons to whom the Software is furnished to do so, subject to */
-/* the following conditions: */
-/* */
-/* The above copyright notice and this permission notice shall be */
-/* included in all copies or substantial portions of the Software. */
-/* */
-/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
-/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
-/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
-/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
-/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
-/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
-/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
-/*************************************************************************/
-
-#ifndef PIVOT_TRANSFORM_H
-#define PIVOT_TRANSFORM_H
-
-#include "core/math/transform_3d.h"
-#include "core/object/ref_counted.h"
-
-#include "model_abstraction.h"
-
-#include "fbx_parser/FBXDocument.h"
-#include "tools/import_utils.h"
-
-enum TransformationComp {
- TransformationComp_Translation,
- TransformationComp_Scaling,
- TransformationComp_Rotation,
- TransformationComp_RotationOffset,
- TransformationComp_RotationPivot,
- TransformationComp_PreRotation,
- TransformationComp_PostRotation,
- TransformationComp_ScalingOffset,
- TransformationComp_ScalingPivot,
- TransformationComp_GeometricTranslation,
- TransformationComp_GeometricRotation,
- TransformationComp_GeometricScaling,
- TransformationComp_MAXIMUM
-};
-// Abstract away pivot data so its simpler to handle
-struct PivotTransform : RefCounted, ModelAbstraction {
- // at the end we want to keep geometric_ everything, post and pre rotation
- // these are used during animation data processing / keyframe ingestion the rest can be simplified down / out.
- Quaternion pre_rotation = Quaternion();
- Quaternion post_rotation = Quaternion();
- Quaternion rotation = Quaternion();
- Quaternion geometric_rotation = Quaternion();
- Vector3 rotation_pivot = Vector3();
- Vector3 rotation_offset = Vector3();
- Vector3 scaling_offset = Vector3(1.0, 1.0, 1.0);
- Vector3 scaling_pivot = Vector3(1.0, 1.0, 1.0);
- Vector3 translation = Vector3();
- Vector3 scaling = Vector3(1.0, 1.0, 1.0);
- Vector3 geometric_scaling = Vector3(1.0, 1.0, 1.0);
- Vector3 geometric_translation = Vector3();
-
- Vector3 raw_rotation = Vector3();
- Vector3 raw_post_rotation = Vector3();
- Vector3 raw_pre_rotation = Vector3();
-
- /* Read pivots from the document */
- void ReadTransformChain();
-
- void debug_pivot_xform(String p_name) {
- print_verbose("debugging node name: " + p_name);
- print_verbose("raw rotation: " + raw_rotation * (180 / Math_PI));
- print_verbose("raw pre_rotation " + raw_pre_rotation * (180 / Math_PI));
- print_verbose("raw post_rotation " + raw_post_rotation * (180 / Math_PI));
- }
-
- Transform3D ComputeGlobalTransform(Transform3D t) const;
- Transform3D ComputeLocalTransform(Transform3D t) const;
- Transform3D ComputeGlobalTransform(Vector3 p_translation, Quaternion p_rotation, Vector3 p_scaling) const;
- Transform3D ComputeLocalTransform(Vector3 p_translation, Quaternion p_rotation, Vector3 p_scaling) const;
-
- /* Extract into xforms and calculate once */
- void ComputePivotTransform();
-
- /* Execute the command for the pivot generation */
- void Execute();
-
- void set_parent(Ref<PivotTransform> p_parent) {
- parent_transform = p_parent;
- }
-
- bool computed_global_xform = false;
- Ref<PivotTransform> parent_transform = Ref<PivotTransform>();
- //Transform chain[TransformationComp_MAXIMUM];
-
- // cached for later use
- Transform3D GlobalTransform = Transform3D();
- Transform3D LocalTransform = Transform3D();
- Transform3D Local_Scaling_Matrix = Transform3D(); // used for inherit type.
- Transform3D GeometricTransform = Transform3D(); // 3DS max only
- FBXDocParser::TransformInheritance inherit_type = FBXDocParser::TransformInheritance_MAX; // maya fbx requires this - sorry <3
-};
-
-#endif // PIVOT_TRANSFORM_H
diff --git a/modules/fbx/editor_scene_importer_fbx.cpp b/modules/fbx/editor_scene_importer_fbx.cpp
deleted file mode 100644
index 758c47eecc..0000000000
--- a/modules/fbx/editor_scene_importer_fbx.cpp
+++ /dev/null
@@ -1,1475 +0,0 @@
-/*************************************************************************/
-/* editor_scene_importer_fbx.cpp */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* https://godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2022 Juan Linietsky, Ariel Manzur. */
-/* Copyright (c) 2014-2022 Godot Engine contributors (cf. AUTHORS.md). */
-/* */
-/* Permission is hereby granted, free of charge, to any person obtaining */
-/* a copy of this software and associated documentation files (the */
-/* "Software"), to deal in the Software without restriction, including */
-/* without limitation the rights to use, copy, modify, merge, publish, */
-/* distribute, sublicense, and/or sell copies of the Software, and to */
-/* permit persons to whom the Software is furnished to do so, subject to */
-/* the following conditions: */
-/* */
-/* The above copyright notice and this permission notice shall be */
-/* included in all copies or substantial portions of the Software. */
-/* */
-/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
-/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
-/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
-/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
-/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
-/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
-/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
-/*************************************************************************/
-
-#include "editor_scene_importer_fbx.h"
-
-#include "data/fbx_anim_container.h"
-#include "data/fbx_material.h"
-#include "data/fbx_mesh_data.h"
-#include "data/fbx_skeleton.h"
-#include "tools/import_utils.h"
-
-#include "core/io/image_loader.h"
-#include "editor/editor_log.h"
-#include "editor/editor_node.h"
-#include "editor/import/resource_importer_scene.h"
-#include "scene/3d/bone_attachment_3d.h"
-#include "scene/3d/camera_3d.h"
-#include "scene/3d/importer_mesh_instance_3d.h"
-#include "scene/3d/light_3d.h"
-#include "scene/main/node.h"
-#include "scene/resources/material.h"
-
-#include "fbx_parser/FBXDocument.h"
-#include "fbx_parser/FBXImportSettings.h"
-#include "fbx_parser/FBXMeshGeometry.h"
-#include "fbx_parser/FBXParser.h"
-#include "fbx_parser/FBXProperties.h"
-#include "fbx_parser/FBXTokenizer.h"
-
-#include <string>
-
-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";
- Vector<String> exts;
- exts.push_back(fbx_str);
- _register_project_setting_import(fbx_str, import_setting_string, exts, r_extensions, true);
-}
-
-void EditorSceneFormatImporterFBX::_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 {
- const String use_generic = "use_" + generic;
- _GLOBAL_DEF(import_setting_string + use_generic, p_enabled, true);
- if (ProjectSettings::get_singleton()->get(import_setting_string + use_generic)) {
- for (int32_t i = 0; i < exts.size(); i++) {
- r_extensions->push_back(exts[i]);
- }
- }
-}
-
-uint32_t EditorSceneFormatImporterFBX::get_import_flags() const {
- return IMPORT_SCENE;
-}
-
-Node3D *EditorSceneFormatImporterFBX::import_scene(const String &p_path, uint32_t p_flags, const Map<StringName, Variant> &p_options, 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()) {
- EditorLog *log = EditorNode::get_log();
- log->clear();
- }
- Error err;
- FileAccessRef f = FileAccess::open(p_path, FileAccess::READ, &err);
-
- ERR_FAIL_COND_V(!f, nullptr);
-
- {
- PackedByteArray data;
- // broadphase tokenizing pass in which we identify the core
- // syntax elements of FBX (brackets, commas, key:value mappings)
- FBXDocParser::TokenList tokens;
-
- bool is_binary = false;
- data.resize(f->get_length());
-
- ERR_FAIL_COND_V(data.size() < 64, nullptr);
-
- f->get_buffer(data.ptrw(), data.size());
- PackedByteArray fbx_header;
- fbx_header.resize(64);
- for (int32_t byte_i = 0; byte_i < 64; byte_i++) {
- fbx_header.ptrw()[byte_i] = data.ptr()[byte_i];
- }
-
- String fbx_header_string;
- if (fbx_header.size() >= 0) {
- fbx_header_string.parse_utf8((const char *)fbx_header.ptr(), fbx_header.size());
- }
-
- print_verbose("[doc] opening fbx file: " + p_path);
- print_verbose("[doc] fbx header: " + fbx_header_string);
- bool corrupt = false;
-
- // safer to check this way as there can be different formatted headers
- if (fbx_header_string.contains("Kaydara FBX Binary")) {
- is_binary = true;
- print_verbose("[doc] is binary");
-
- FBXDocParser::TokenizeBinary(tokens, (const char *)data.ptrw(), (size_t)data.size(), corrupt);
-
- } else {
- print_verbose("[doc] is ascii");
- FBXDocParser::Tokenize(tokens, (const char *)data.ptrw(), (size_t)data.size(), corrupt);
- }
-
- if (corrupt) {
- for (FBXDocParser::TokenPtr token : tokens) {
- delete token;
- }
- tokens.clear();
- ERR_PRINT(vformat("Cannot import FBX file: %s the file is corrupt so we safely exited parsing the file.", p_path));
- return memnew(Node3D);
- }
-
- // The import process explained:
- // 1. Tokens are made, these are then taken into the 'parser' below
- // 2. The parser constructs 'Elements' and all 'real' FBX Types.
- // 3. This creates a problem: shared_ptr ownership, should Elements later 'take ownership'
- // 4. No, it shouldn't so we should either a.) use weak ref for elements; but this is not correct.
-
- // use this information to construct a very rudimentary
- // parse-tree representing the FBX scope structure
- FBXDocParser::Parser parser(tokens, is_binary);
-
- if (parser.IsCorrupt()) {
- for (FBXDocParser::TokenPtr token : tokens) {
- delete token;
- }
- tokens.clear();
- ERR_PRINT(vformat("Cannot import FBX file: %s the file is corrupt so we safely exited parsing the file.", p_path));
- return memnew(Node3D);
- }
-
- FBXDocParser::ImportSettings settings;
- settings.strictMode = false;
-
- // this function leaks a lot
- FBXDocParser::Document doc(parser, settings);
-
- // yeah so closing the file is a good idea (prevents readonly states)
- f->close();
-
- // safety for version handling
- if (doc.IsSafeToImport()) {
- bool is_blender_fbx = false;
- const FBXDocParser::PropertyTable &import_props = doc.GetMetadataProperties();
- const FBXDocParser::PropertyPtr app_name = import_props.Get("Original|ApplicationName");
- const FBXDocParser::PropertyPtr app_vendor = import_props.Get("Original|ApplicationVendor");
- const FBXDocParser::PropertyPtr app_version = import_props.Get("Original|ApplicationVersion");
- //
- if (app_name) {
- const FBXDocParser::TypedProperty<std::string> *app_name_string = dynamic_cast<const FBXDocParser::TypedProperty<std::string> *>(app_name);
- if (app_name_string) {
- print_verbose("FBX App Name: " + String(app_name_string->Value().c_str()));
- }
- }
-
- if (app_vendor) {
- const FBXDocParser::TypedProperty<std::string> *app_vendor_string = dynamic_cast<const FBXDocParser::TypedProperty<std::string> *>(app_vendor);
- if (app_vendor_string) {
- print_verbose("FBX App Vendor: " + String(app_vendor_string->Value().c_str()));
- is_blender_fbx = app_vendor_string->Value().find("Blender") != std::string::npos;
- }
- }
-
- if (app_version) {
- const FBXDocParser::TypedProperty<std::string> *app_version_string = dynamic_cast<const FBXDocParser::TypedProperty<std::string> *>(app_version);
- if (app_version_string) {
- print_verbose("FBX App Version: " + String(app_version_string->Value().c_str()));
- }
- }
-
- if (is_blender_fbx) {
- WARN_PRINT("We don't officially support Blender FBX animations yet, due to issues with upstream Blender,\n"
- "so please wait for us to work around remaining issues. We will continue to import the file but it may be broken.\n"
- "For minimal breakage, please export FBX from Blender with -Z forward, and Y up.");
- }
-
- Node3D *spatial = _generate_scene(p_path, &doc, p_flags, p_bake_fps, 8, is_blender_fbx);
- // todo: move to document shutdown (will need to be validated after moving; this code has been validated already)
- for (FBXDocParser::TokenPtr token : tokens) {
- if (token) {
- delete token;
- token = nullptr;
- }
- }
-
- return spatial;
-
- } else {
- for (FBXDocParser::TokenPtr token : tokens) {
- delete token;
- }
- tokens.clear();
-
- ERR_PRINT(vformat("Cannot import FBX file: %s. It uses file format %d which is unsupported by Godot. Please re-export it or convert it to a newer format.", p_path, doc.FBXVersion()));
- }
- }
-
- return memnew(Node3D);
-}
-
-template <class T>
-struct EditorSceneFormatImporterAssetImportInterpolate {
- T lerp(const T &a, const T &b, float c) const {
- return a + (b - a) * c;
- }
-
- T catmull_rom(const T &p0, const T &p1, const T &p2, const T &p3, float t) {
- const float t2 = t * t;
- const float t3 = t2 * t;
-
- return 0.5f * ((2.0f * p1) + (-p0 + p2) * t + (2.0f * p0 - 5.0f * p1 + 4.0f * p2 - p3) * t2 + (-p0 + 3.0f * p1 - 3.0f * p2 + p3) * t3);
- }
-
- T bezier(T start, T control_1, T control_2, T end, float t) {
- /* Formula from Wikipedia article on Bezier curves. */
- const real_t omt = (1.0 - t);
- const real_t omt2 = omt * omt;
- const real_t omt3 = omt2 * omt;
- const real_t t2 = t * t;
- const real_t t3 = t2 * t;
-
- return start * omt3 + control_1 * omt2 * t * 3.0 + control_2 * omt * t2 * 3.0 + end * t3;
- }
-};
-
-//thank you for existing, partial specialization
-template <>
-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());
-
- return a.slerp(b, c).normalized();
- }
-
- Quaternion catmull_rom(const Quaternion &p0, const Quaternion &p1, const Quaternion &p2, const Quaternion &p3, float c) {
- ERR_FAIL_COND_V(!p1.is_normalized(), Quaternion());
- ERR_FAIL_COND_V(!p2.is_normalized(), Quaternion());
-
- return p1.slerp(p2, c).normalized();
- }
-
- Quaternion bezier(Quaternion start, Quaternion control_1, Quaternion control_2, Quaternion end, float t) {
- ERR_FAIL_COND_V(!start.is_normalized(), Quaternion());
- ERR_FAIL_COND_V(!end.is_normalized(), Quaternion());
-
- return start.slerp(end, t).normalized();
- }
-};
-
-template <class T>
-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;
- for (int i = 0; i < p_times.size(); i++) {
- if (p_times[i] > p_time) {
- break;
- }
- idx++;
- }
-
- EditorSceneFormatImporterAssetImportInterpolate<T> interp;
-
- switch (p_interp) {
- case AssetImportAnimation::INTERP_LINEAR: {
- if (idx == -1) {
- return p_values[0];
- } else if (idx >= p_times.size() - 1) {
- return p_values[p_times.size() - 1];
- }
-
- float c = (p_time - p_times[idx]) / (p_times[idx + 1] - p_times[idx]);
-
- return interp.lerp(p_values[idx], p_values[idx + 1], c);
-
- } break;
- case AssetImportAnimation::INTERP_STEP: {
- if (idx == -1) {
- return p_values[0];
- } else if (idx >= p_times.size() - 1) {
- return p_values[p_times.size() - 1];
- }
-
- return p_values[idx];
-
- } break;
- case AssetImportAnimation::INTERP_CATMULLROMSPLINE: {
- if (idx == -1) {
- return p_values[1];
- } else if (idx >= p_times.size() - 1) {
- return p_values[1 + p_times.size() - 1];
- }
-
- float c = (p_time - p_times[idx]) / (p_times[idx + 1] - p_times[idx]);
-
- return interp.catmull_rom(p_values[idx - 1], p_values[idx], p_values[idx + 1], p_values[idx + 3], c);
-
- } break;
- case AssetImportAnimation::INTERP_CUBIC_SPLINE: {
- if (idx == -1) {
- return p_values[1];
- } else if (idx >= p_times.size() - 1) {
- return p_values[(p_times.size() - 1) * 3 + 1];
- }
-
- float c = (p_time - p_times[idx]) / (p_times[idx + 1] - p_times[idx]);
-
- T from = p_values[idx * 3 + 1];
- T c1 = from + p_values[idx * 3 + 2];
- T to = p_values[idx * 3 + 4];
- T c2 = to + p_values[idx * 3 + 3];
-
- return interp.bezier(from, c1, c2, to, c);
-
- } break;
- }
-
- ERR_FAIL_V(p_values[0]);
-}
-
-Node3D *EditorSceneFormatImporterFBX::_generate_scene(
- const String &p_path,
- const FBXDocParser::Document *p_document,
- const uint32_t p_flags,
- int p_bake_fps,
- const int32_t p_max_bone_weights,
- bool p_is_blender_fbx) {
- ImportState state;
- state.is_blender_fbx = p_is_blender_fbx;
- state.path = p_path;
- state.animation_player = nullptr;
-
- // create new root node for scene
- Node3D *scene_root = memnew(Node3D);
- state.root = memnew(Node3D);
- state.root_owner = scene_root; // the real scene root... sorry compatibility code is painful...
-
- state.root->set_name("RootNode");
- scene_root->add_child(state.root);
- state.root->set_owner(scene_root);
-
- state.fbx_root_node.instantiate();
- state.fbx_root_node->godot_node = state.root;
-
- // Size relative to cm.
- const real_t fbx_unit_scale = p_document->GlobalSettingsPtr()->UnitScaleFactor();
-
- print_verbose("FBX unit scale import value: " + rtos(fbx_unit_scale));
- // Set FBX file scale is relative to CM must be converted to M
- state.scale = fbx_unit_scale / 100.0;
- print_verbose("FBX unit scale is: " + rtos(state.scale));
-
- // Enabled by default.
- state.enable_material_import = true;
- // Enabled by default.
- state.enable_animation_import = true;
- Ref<FBXNode> root_node;
- root_node.instantiate();
-
- // make sure fake noFBXDocParser::PropertyPtr ptrde always has a transform too ;)
- Ref<PivotTransform> pivot_transform;
- pivot_transform.instantiate();
- root_node->pivot_transform = pivot_transform;
- root_node->node_name = "root node";
- root_node->current_node_id = 0;
- root_node->godot_node = state.root;
-
- // cache this node onto the fbx_target map.
- state.fbx_target_map.insert(0, root_node);
-
- // cache basic node information from FBX document
- // grabs all FBX bones
- BuildDocumentBones(Ref<FBXBone>(), state, p_document, 0L);
- BuildDocumentNodes(Ref<PivotTransform>(), state, p_document, 0L, nullptr);
-
- // Build document skinning information
-
- // Algorithm is this:
- // Get Deformer: object with "Skin" class.
- // Deformer:: has link to Geometry:: (correct mesh for skin)
- // Deformer:: has Source which is the SubDeformer:: (e.g. the Cluster)
- // Notes at the end it configures the vertex weight mapping.
-
- for (uint64_t skin_id : p_document->GetSkinIDs()) {
- // Validate the parser
- FBXDocParser::LazyObject *lazy_skin = p_document->GetObject(skin_id);
- ERR_CONTINUE_MSG(lazy_skin == nullptr, "invalid lazy object [serious parser bug]");
-
- // Validate the parser
- const FBXDocParser::Skin *skin = lazy_skin->Get<FBXDocParser::Skin>();
- ERR_CONTINUE_MSG(skin == nullptr, "invalid skin added to skin list [parser bug]");
-
- const std::vector<const FBXDocParser::Connection *> source_to_destination = p_document->GetConnectionsBySourceSequenced(skin_id);
- FBXDocParser::MeshGeometry *mesh = nullptr;
- uint64_t mesh_id = 0;
-
- // Most likely only contains the mesh link for the skin
- // The mesh geometry.
- for (const FBXDocParser::Connection *con : source_to_destination) {
- // do something
- print_verbose("src: " + itos(con->src));
- FBXDocParser::Object *ob = con->DestinationObject();
- mesh = dynamic_cast<FBXDocParser::MeshGeometry *>(ob);
-
- if (mesh) {
- mesh_id = mesh->ID();
- break;
- }
- }
-
- // Validate the mesh exists and was retrieved
- ERR_CONTINUE_MSG(mesh_id == 0, "mesh id is invalid");
- const std::vector<const FBXDocParser::Cluster *> clusters = skin->Clusters();
-
- // NOTE: this will ONLY work on skinned bones (it is by design.)
- // A cluster is a skinned bone so SKINS won't contain unskinned bones so we need to pre-add all bones and parent them in a step beforehand.
- for (const FBXDocParser::Cluster *cluster : clusters) {
- ERR_CONTINUE_MSG(cluster == nullptr, "invalid bone cluster");
- const uint64_t deformer_id = cluster->ID();
- std::vector<const FBXDocParser::Connection *> connections = p_document->GetConnectionsByDestinationSequenced(deformer_id);
-
- // Weight data always has a node in the scene lets grab the limb's node in the scene :) (reverse set to true since it's the opposite way around)
- const FBXDocParser::ModelLimbNode *limb_node = ProcessDOMConnection<FBXDocParser::ModelLimbNode>(p_document, deformer_id, true);
-
- ERR_CONTINUE_MSG(limb_node == nullptr, "unable to resolve model for skinned bone");
-
- const uint64_t model_id = limb_node->ID();
-
- // This will never happen, so if it does you know you fucked up.
- ERR_CONTINUE_MSG(!state.fbx_bone_map.has(model_id), "missing LimbNode detected");
-
- // new bone instance
- Ref<FBXBone> bone_element = state.fbx_bone_map[model_id];
-
- //
- // Bone Weight Information Configuration
- //
-
- // Cache Weight Information into bone for later usage if you want the raw data.
- const std::vector<unsigned int> &indexes = cluster->GetIndices();
- const std::vector<float> &weights = cluster->GetWeights();
- Ref<FBXMeshData> mesh_vertex_data;
-
- // this data will pre-exist if vertex weight information is found
- if (state.renderer_mesh_data.has(mesh_id)) {
- mesh_vertex_data = state.renderer_mesh_data[mesh_id];
- } else {
- mesh_vertex_data.instantiate();
- state.renderer_mesh_data.insert(mesh_id, mesh_vertex_data);
- }
-
- mesh_vertex_data->armature_id = bone_element->armature_id;
- mesh_vertex_data->valid_armature_id = true;
-
- //print_verbose("storing mesh vertex data for mesh to use later");
- ERR_CONTINUE_MSG(indexes.size() != weights.size(), "[doc] error mismatch between weight info");
-
- for (size_t idx = 0; idx < indexes.size(); idx++) {
- const size_t vertex_index = indexes[idx];
- const real_t influence_weight = weights[idx];
-
- VertexWeightMapping &vm = mesh_vertex_data->vertex_weights[vertex_index];
- vm.weights.push_back(influence_weight);
- vm.bones.push_back(0); // bone id is pushed on here during sanitization phase
- vm.bones_ref.push_back(bone_element);
- }
-
- for (const int *vertex_index = mesh_vertex_data->vertex_weights.next(nullptr);
- vertex_index != nullptr;
- vertex_index = mesh_vertex_data->vertex_weights.next(vertex_index)) {
- VertexWeightMapping *vm = mesh_vertex_data->vertex_weights.getptr(*vertex_index);
- const int influence_count = vm->weights.size();
- if (influence_count > mesh_vertex_data->max_weight_count) {
- mesh_vertex_data->max_weight_count = influence_count;
- mesh_vertex_data->valid_weight_count = true;
- }
- }
-
- if (mesh_vertex_data->max_weight_count > 4) {
- if (mesh_vertex_data->max_weight_count > 8) {
- ERR_PRINT("[doc] Serious: maximum bone influences is 8 in this branch.");
- }
- // Clamp to 8 bone vertex influences.
- mesh_vertex_data->max_weight_count = 8;
- print_verbose("[doc] Using 8 vertex bone influences configuration.");
- } else {
- mesh_vertex_data->max_weight_count = 4;
- print_verbose("[doc] Using 4 vertex bone influences configuration.");
- }
- }
- }
-
- // do we globally allow for import of materials
- // (prevents overwrite of materials; so you can handle them explicitly)
- if (state.enable_material_import) {
- const std::vector<uint64_t> &materials = p_document->GetMaterialIDs();
-
- for (uint64_t material_id : materials) {
- FBXDocParser::LazyObject *lazy_material = p_document->GetObject(material_id);
- FBXDocParser::Material *mat = (FBXDocParser::Material *)lazy_material->Get<FBXDocParser::Material>();
- ERR_CONTINUE_MSG(!mat, "Could not convert fbx material by id: " + itos(material_id));
-
- Ref<FBXMaterial> material;
- material.instantiate();
- material->set_imported_material(mat);
-
- Ref<StandardMaterial3D> godot_material = material->import_material(state);
-
- state.cached_materials.insert(material_id, godot_material);
- }
- }
-
- // build skin and skeleton information
- print_verbose("[doc] Skeleton3D Bone count: " + itos(state.fbx_bone_map.size()));
-
- // Importing bones using document based method from FBX directly
- // We do not use the assimp bone format to determine this information anymore.
- if (state.fbx_bone_map.size() > 0) {
- // We are using a single skeleton only method here
- // this is because we really have no concept of skeletons in FBX
- // their are bones in a scene but they have no specific armature
- // we can detect armatures but the issue lies in the complexity
- // we opted to merge the entire scene onto one skeleton for now
- // if we need to change this we have an archive of the old code.
-
- // bind pose normally only has 1 per mesh but can have more than one
- // this is the point of skins
- // in FBX first bind pose is the master for the first skin
-
- // In order to handle the FBX skeleton we must also inverse any parent transforms on the bones
- // just to rule out any parent node transforms in the bone data
- // this is trivial to do and allows us to use the single skeleton method and merge them
- // this means that the nodes from maya kLocators will be preserved as bones
- // in the same rig without having to match this across skeletons and merge by detection
- // we can just merge and undo any parent transforms
- for (KeyValue<uint64_t, Ref<FBXBone>> &bone_element : state.fbx_bone_map) {
- Ref<FBXBone> bone = bone_element.value;
- Ref<FBXSkeleton> fbx_skeleton_inst;
-
- uint64_t armature_id = bone->armature_id;
- if (state.skeleton_map.has(armature_id)) {
- fbx_skeleton_inst = state.skeleton_map[armature_id];
- } else {
- fbx_skeleton_inst.instantiate();
- state.skeleton_map.insert(armature_id, fbx_skeleton_inst);
- }
-
- print_verbose("populating skeleton with bone: " + bone->bone_name);
-
- //// populate bone skeleton - since fbx has no DOM for the skeleton just a node.
- //bone->bone_skeleton = fbx_skeleton_inst;
-
- // now populate bone on the armature node list
- fbx_skeleton_inst->skeleton_bones.push_back(bone);
-
- CRASH_COND_MSG(!state.fbx_target_map.has(armature_id), "invalid armature [serious]");
-
- Ref<FBXNode> node = state.fbx_target_map[armature_id];
-
- CRASH_COND_MSG(node.is_null(), "invalid node [serious]");
- CRASH_COND_MSG(node->pivot_transform.is_null(), "invalid pivot transform [serious]");
- fbx_skeleton_inst->fbx_node = node;
-
- ERR_CONTINUE_MSG(fbx_skeleton_inst->fbx_node.is_null(), "invalid skeleton node [serious]");
-
- // we need to have a valid armature id and the model configured for the bone to be assigned fully.
- // happens once per skeleton
-
- if (state.fbx_target_map.has(armature_id) && !fbx_skeleton_inst->fbx_node->has_model()) {
- print_verbose("allocated fbx skeleton primary / armature node for the level: " + fbx_skeleton_inst->fbx_node->node_name);
- } else if (!state.fbx_target_map.has(armature_id) && !fbx_skeleton_inst->fbx_node->has_model()) {
- print_error("bones are not mapped to an armature node for armature id: " + itos(armature_id) + " bone: " + bone->bone_name);
- // this means bone will be removed and not used, which is safe actually and no skeleton will be created.
- }
- }
-
- // setup skeleton instances if required :)
- for (KeyValue<uint64_t, Ref<FBXSkeleton>> &skeleton_node : state.skeleton_map) {
- Ref<FBXSkeleton> &skeleton = skeleton_node.value;
- skeleton->init_skeleton(state);
-
- ERR_CONTINUE_MSG(skeleton->fbx_node.is_null(), "invalid fbx target map, missing skeleton");
- }
-
- // This list is not populated
- for (Map<uint64_t, Ref<FBXNode>>::Element *skin_mesh = state.MeshNodes.front(); skin_mesh; skin_mesh = skin_mesh->next()) {
- }
- }
-
- // build godot node tree
- if (state.fbx_node_list.size() > 0) {
- for (List<Ref<FBXNode>>::Element *node_element = state.fbx_node_list.front();
- node_element;
- node_element = node_element->next()) {
- Ref<FBXNode> fbx_node = node_element->get();
- ImporterMeshInstance3D *mesh_node = nullptr;
- Ref<FBXMeshData> mesh_data_precached;
-
- // check for valid geometry
- if (fbx_node->fbx_model == nullptr) {
- print_error("[doc] fundamental flaw, submit bug immediately with full import log with verbose logging on");
- } else {
- const std::vector<const FBXDocParser::Geometry *> &geometry = fbx_node->fbx_model->GetGeometry();
- for (const FBXDocParser::Geometry *mesh : geometry) {
- print_verbose("[doc] [" + itos(mesh->ID()) + "] mesh: " + fbx_node->node_name);
-
- if (mesh == nullptr) {
- continue;
- }
-
- const FBXDocParser::MeshGeometry *mesh_geometry = dynamic_cast<const FBXDocParser::MeshGeometry *>(mesh);
- if (mesh_geometry) {
- uint64_t mesh_id = mesh_geometry->ID();
-
- // this data will pre-exist if vertex weight information is found
- if (state.renderer_mesh_data.has(mesh_id)) {
- mesh_data_precached = state.renderer_mesh_data[mesh_id];
- } else {
- mesh_data_precached.instantiate();
- state.renderer_mesh_data.insert(mesh_id, mesh_data_precached);
- }
-
- mesh_data_precached->mesh_node = fbx_node;
-
- // mesh node, mesh id
- mesh_node = mesh_data_precached->create_fbx_mesh(state, mesh_geometry, fbx_node->fbx_model, false);
- if (!state.MeshNodes.has(mesh_id)) {
- state.MeshNodes.insert(mesh_id, fbx_node);
- }
- }
-
- const FBXDocParser::ShapeGeometry *shape_geometry = dynamic_cast<const FBXDocParser::ShapeGeometry *>(mesh);
- if (shape_geometry != nullptr) {
- print_verbose("[doc] valid shape geometry converted");
- }
- }
- }
-
- Ref<FBXSkeleton> node_skeleton = fbx_node->skeleton_node;
-
- if (node_skeleton.is_valid()) {
- Skeleton3D *skel = node_skeleton->skeleton;
- fbx_node->godot_node = skel;
- } else if (mesh_node == nullptr) {
- fbx_node->godot_node = memnew(Node3D);
- } else {
- fbx_node->godot_node = mesh_node;
- }
-
- fbx_node->godot_node->set_name(fbx_node->node_name);
-
- // assign parent if valid
- if (fbx_node->fbx_parent.is_valid()) {
- fbx_node->fbx_parent->godot_node->add_child(fbx_node->godot_node);
- fbx_node->godot_node->set_owner(state.root_owner);
- }
-
- // Node Transform debug, set local xform data.
- fbx_node->godot_node->set_transform(get_unscaled_transform(fbx_node->pivot_transform->LocalTransform, state.scale));
-
- // populate our mesh node reference
- if (mesh_node != nullptr && mesh_data_precached.is_valid()) {
- mesh_data_precached->godot_mesh_instance = mesh_node;
- }
- }
- }
-
- for (KeyValue<uint64_t, Ref<FBXMeshData>> &mesh_data : state.renderer_mesh_data) {
- const uint64_t mesh_id = mesh_data.key;
- Ref<FBXMeshData> mesh = mesh_data.value;
-
- const FBXDocParser::MeshGeometry *mesh_geometry = p_document->GetObject(mesh_id)->Get<FBXDocParser::MeshGeometry>();
-
- ERR_CONTINUE_MSG(mesh->mesh_node.is_null(), "invalid mesh allocation");
-
- const FBXDocParser::Skin *mesh_skin = mesh_geometry->DeformerSkin();
-
- if (!mesh_skin) {
- continue; // safe to continue
- }
-
- //
- // Skin bone configuration
- //
-
- //
- // Get Mesh Node Xform only
- //
- //ERR_CONTINUE_MSG(!state.fbx_target_map.has(mesh_id), "invalid xform for the skin pose: " + itos(mesh_id));
- //Ref<FBXNode> mesh_node_xform_data = state.fbx_target_map[mesh_id];
-
- if (!mesh_skin) {
- continue; // not a deformer.
- }
-
- if (mesh_skin->Clusters().size() == 0) {
- continue; // possibly buggy mesh
- }
-
- // Lookup skin or create it if it's not found.
- Ref<Skin> skin;
- if (!state.MeshSkins.has(mesh_id)) {
- print_verbose("Created new skin");
- skin.instantiate();
- state.MeshSkins.insert(mesh_id, skin);
- } else {
- print_verbose("Grabbed skin");
- skin = state.MeshSkins[mesh_id];
- }
-
- for (const FBXDocParser::Cluster *cluster : mesh_skin->Clusters()) {
- // node or bone this cluster targets (in theory will only be a bone target)
- uint64_t skin_target_id = cluster->TargetNode()->ID();
-
- print_verbose("adding cluster [" + itos(cluster->ID()) + "] " + String(cluster->Name().c_str()) + " for target: [" + itos(skin_target_id) + "] " + String(cluster->TargetNode()->Name().c_str()));
- ERR_CONTINUE_MSG(!state.fbx_bone_map.has(skin_target_id), "no bone found by that ID? locator");
-
- const Ref<FBXBone> bone = state.fbx_bone_map[skin_target_id];
- const Ref<FBXSkeleton> skeleton = bone->fbx_skeleton;
- const Ref<FBXNode> skeleton_node = skeleton->fbx_node;
-
- skin->add_named_bind(
- bone->bone_name,
- get_unscaled_transform(
- skeleton_node->pivot_transform->GlobalTransform.affine_inverse() * cluster->TransformLink().affine_inverse(), state.scale));
- }
-
- print_verbose("cluster name / id: " + String(mesh_skin->Name().c_str()) + " [" + itos(mesh_skin->ID()) + "]");
- print_verbose("skeleton has " + itos(state.fbx_bone_map.size()) + " binds");
- print_verbose("fbx skin has " + itos(mesh_skin->Clusters().size()) + " binds");
- }
-
- // mesh data iteration for populating skeleton mapping
- for (KeyValue<uint64_t, Ref<FBXMeshData>> &mesh_data : state.renderer_mesh_data) {
- Ref<FBXMeshData> mesh = mesh_data.value;
- const uint64_t mesh_id = mesh_data.key;
- ImporterMeshInstance3D *mesh_instance = mesh->godot_mesh_instance;
- const int mesh_weights = mesh->max_weight_count;
- Ref<FBXSkeleton> skeleton;
- const bool valid_armature = mesh->valid_armature_id;
- const uint64_t armature = mesh->armature_id;
-
- if (mesh_weights > 0) {
- // this is a bug, it means the weights were found but the skeleton wasn't
- ERR_CONTINUE_MSG(!valid_armature, "[doc] fbx armature is missing");
- } else {
- continue; // safe to continue not a bug just a normal mesh
- }
-
- if (state.skeleton_map.has(armature)) {
- skeleton = state.skeleton_map[armature];
- print_verbose("[doc] armature mesh to skeleton mapping has been allocated");
- } else {
- print_error("[doc] unable to find armature mapping");
- }
-
- ERR_CONTINUE_MSG(!mesh_instance, "[doc] invalid mesh mapping for skeleton assignment");
- ERR_CONTINUE_MSG(skeleton.is_null(), "[doc] unable to resolve the correct skeleton but we have weights!");
-
- mesh_instance->set_skeleton_path(mesh_instance->get_path_to(skeleton->skeleton));
- print_verbose("[doc] allocated skeleton to mesh " + mesh_instance->get_name());
-
- // do we have a mesh skin for this mesh
- ERR_CONTINUE_MSG(!state.MeshSkins.has(mesh_id), "no skin found for mesh");
-
- Ref<Skin> mesh_skin = state.MeshSkins[mesh_id];
-
- ERR_CONTINUE_MSG(mesh_skin.is_null(), "invalid skin stored in map");
- print_verbose("[doc] allocated skin to mesh " + mesh_instance->get_name());
- mesh_instance->set_skin(mesh_skin);
- }
-
- // build skin and skeleton information
- print_verbose("[doc] Skeleton3D Bone count: " + itos(state.fbx_bone_map.size()));
- const FBXDocParser::FileGlobalSettings *FBXSettings = p_document->GlobalSettingsPtr();
-
- // Configure constraints
- // NOTE: constraints won't be added quite yet, we don't have a real need for them *yet*. (they can be supported later on)
- // const std::vector<uint64_t> fbx_constraints = p_document->GetConstraintStackIDs();
-
- // get the animation FPS
- float fps_setting = ImportUtils::get_fbx_fps(FBXSettings);
-
- // enable animation import, only if local animation is enabled
- if (state.enable_animation_import && (p_flags & IMPORT_ANIMATION)) {
- // document animation stack list - get by ID so we can unload any non used animation stack
- const std::vector<uint64_t> animation_stack = p_document->GetAnimationStackIDs();
-
- for (uint64_t anim_id : animation_stack) {
- FBXDocParser::LazyObject *lazyObject = p_document->GetObject(anim_id);
- const FBXDocParser::AnimationStack *stack = lazyObject->Get<FBXDocParser::AnimationStack>();
-
- if (stack != nullptr) {
- String animation_name = ImportUtils::FBXNodeToName(stack->Name());
- print_verbose("Valid animation stack has been found: " + animation_name);
- // ReferenceTime is the same for some animations?
- // LocalStop time is the start and end time
- float r_start = CONVERT_FBX_TIME(stack->ReferenceStart());
- float r_stop = CONVERT_FBX_TIME(stack->ReferenceStop());
- float start_time = CONVERT_FBX_TIME(stack->LocalStart());
- float end_time = CONVERT_FBX_TIME(stack->LocalStop());
- float duration = end_time - start_time;
-
- print_verbose("r_start " + rtos(r_start) + ", r_stop " + rtos(r_stop));
- print_verbose("start_time" + rtos(start_time) + " end_time " + rtos(end_time));
- print_verbose("anim duration : " + rtos(duration));
-
- // we can safely create the animation player
- if (state.animation_player == nullptr) {
- print_verbose("Creating animation player");
- state.animation_player = memnew(AnimationPlayer);
- state.root->add_child(state.animation_player, true);
- state.animation_player->set_owner(state.root_owner);
- }
-
- Ref<Animation> animation;
- animation.instantiate();
- animation->set_name(animation_name);
- animation->set_length(duration);
-
- print_verbose("Animation length: " + rtos(animation->get_length()) + " seconds");
-
- // i think assimp was duplicating things, this lets me know to just reference or ignore this to prevent duplicate information in tracks
- // this would mean that we would be doing three times as much work per track if my theory is correct.
- // this was not the case but this is a good sanity check for the animation handler from the document.
- // it also lets us know if the FBX specification massively changes the animation system, in theory such a change would make this show
- // an fbx specification error, so best keep it in
- // the overhead is tiny.
- Map<uint64_t, const FBXDocParser::AnimationCurve *> CheckForDuplication;
-
- const std::vector<const FBXDocParser::AnimationLayer *> &layers = stack->Layers();
- print_verbose("FBX Animation layers: " + itos(layers.size()));
- for (const FBXDocParser::AnimationLayer *layer : layers) {
- std::vector<const FBXDocParser::AnimationCurveNode *> node_list = layer->Nodes();
- print_verbose("Layer: " + ImportUtils::FBXNodeToName(layer->Name()) + ", " + " AnimCurveNode count " + itos(node_list.size()));
-
- // first thing to do here is that i need to first get the animcurvenode to a Vector3
- // we now need to put this into the track information for godot.
- // to do this we need to know which track is what?
-
- // target id, [ track name, [time index, vector] ]
- // new map needs to be [ track name, keyframe_data ]
- Map<uint64_t, Map<StringName, FBXTrack>> AnimCurveNodes;
-
- // struct AnimTrack {
- // // Animation track can be
- // // visible, T, R, S
- // Map<StringName, Map<uint64_t, Vector3> > animation_track;
- // };
-
- // Map<uint64_t, AnimTrack> AnimCurveNodes;
-
- // so really, what does this mean to make an animtion track.
- // we need to know what object the curves are for.
- // we need the target ID and the target name for the track reduction.
-
- FBXDocParser::Model::RotOrder quaternion_rotation_order = FBXDocParser::Model::RotOrder_EulerXYZ;
-
- // T:: R:: S:: Visible:: Custom::
- for (const FBXDocParser::AnimationCurveNode *curve_node : node_list) {
- // when Curves() is called the curves are actually read, we could replace this with our own ProcessDomConnection code here if required.
- // We may need to do this but ideally we use Curves
- // note: when you call this there might be a delay in opening it
- // uses mutable type to 'cache' the response until the AnimationCurveNode is cleaned up.
- std::map<std::string, const FBXDocParser::AnimationCurve *> curves = curve_node->Curves();
- const FBXDocParser::Object *object = curve_node->Target();
- const FBXDocParser::Model *target = curve_node->TargetAsModel();
- if (target == nullptr) {
- if (object != nullptr) {
- print_error("[doc] warning failed to find a target Model for curve: " + String(object->Name().c_str()));
- } else {
- //print_error("[doc] failed to resolve object");
- continue;
- }
-
- continue;
- } else {
- //print_verbose("[doc] applied rotation order: " + itos(target->RotationOrder()));
- quaternion_rotation_order = target->RotationOrder();
- }
-
- uint64_t target_id = target->ID();
- String target_name = ImportUtils::FBXNodeToName(target->Name());
-
- const FBXDocParser::PropertyTable *properties = curve_node;
- bool got_x = false, got_y = false, got_z = false;
- float offset_x = FBXDocParser::PropertyGet<float>(properties, "d|X", got_x);
- float offset_y = FBXDocParser::PropertyGet<float>(properties, "d|Y", got_y);
- float offset_z = FBXDocParser::PropertyGet<float>(properties, "d|Z", got_z);
-
- String curve_node_name = ImportUtils::FBXNodeToName(curve_node->Name());
-
- // Reduce all curves for this node into a single container
- // T, R, S is what we expect, although other tracks are possible
- // like for example visibility tracks.
-
- // We are not ordered here, we don't care about ordering, this happens automagically by godot when we insert with the
- // key time :), so order is unimportant because the insertion will happen at a time index
- // good to know: we do not need a list of these in another format :)
- //Map<String, Vector<const Assimp::FBX::AnimationCurve *> > unordered_track;
-
- // T
- // R
- // S
- // Map[String, List<VECTOR>]
-
- // So this is a reduction of the animation curve nodes
- // We build this as a lookup, this is essentially our 'animation track'
- //AnimCurveNodes.insert(curve_node_name, Map<uint64_t, Vector3>());
-
- // create the animation curve information with the target id
- // so the point of this makes a track with the name "T" for example
- // the target ID is also set here, this means we don't need to do anything extra when we are in the 'create all animation tracks' step
- FBXTrack &keyframe_map = AnimCurveNodes[target_id][StringName(curve_node_name)];
-
- if (got_x && got_y && got_z) {
- Vector3 default_value = Vector3(offset_x, offset_y, offset_z);
- keyframe_map.default_value = default_value;
- keyframe_map.has_default = true;
- //print_verbose("track name: " + curve_node_name);
- //print_verbose("xyz default: " + default_value);
- }
- // target id, [ track name, [time index, vector] ]
- // Map<uint64_t, Map<StringName, Map<uint64_t, Vector3> > > AnimCurveNodes;
-
- // we probably need the target id here.
- // so map[uint64_t map]...
- // Map<uint64_t, Vector3D> translation_keys, rotation_keys, scale_keys;
-
- // extra const required by C++11 colon/Range operator
- // note: do not use C++17 syntax here for dicts.
- // this is banned in Godot.
- for (std::pair<const std::string, const FBXDocParser::AnimationCurve *> &kvp : curves) {
- const String curve_element = ImportUtils::FBXNodeToName(kvp.first);
- const FBXDocParser::AnimationCurve *curve = kvp.second;
- String curve_name = ImportUtils::FBXNodeToName(curve->Name());
- uint64_t curve_id = curve->ID();
-
- if (CheckForDuplication.has(curve_id)) {
- print_error("(FBX spec changed?) We found a duplicate curve being used for an alternative node - report to godot issue tracker");
- } else {
- CheckForDuplication.insert(curve_id, curve);
- }
-
- // FBX has no name for AnimCurveNode::, most of the time, not seen any with valid name here.
- const std::map<int64_t, float> &track_time = curve->GetValueTimeTrack();
-
- if (track_time.size() > 0) {
- for (std::pair<int64_t, float> keyframe : track_time) {
- if (curve_element == "d|X") {
- keyframe_map.keyframes[keyframe.first].x = keyframe.second;
- } else if (curve_element == "d|Y") {
- keyframe_map.keyframes[keyframe.first].y = keyframe.second;
- } else if (curve_element == "d|Z") {
- keyframe_map.keyframes[keyframe.first].z = keyframe.second;
- } else {
- //print_error("FBX Unsupported element: " + curve_element);
- }
-
- //print_verbose("[" + itos(target_id) + "] Keyframe added: " + itos(keyframe_map.size()));
-
- //print_verbose("Keyframe t:" + rtos(animation_track_time) + " v: " + rtos(keyframe.second));
- }
- }
- }
- }
-
- // Map<uint64_t, Map<StringName, Map<uint64_t, Vector3> > > AnimCurveNodes;
- // add this animation track here
-
- // target id, [ track name, [time index, vector] ]
- //std::map<uint64_t, std::map<StringName, FBXTrack > > AnimCurveNodes;
- for (KeyValue<uint64_t, Map<StringName, FBXTrack>> &track : AnimCurveNodes) {
- // 5 tracks
- // current track index
- // track count is 5
- // track count is 5.
- // next track id is 5.
- const uint64_t target_id = track.key;
-
- 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.
- // remember that state.fbx_bone_map[target_id] will create a new entry EVEN if you only read.
- // this would break node animation targets, so if you change this be warned. :)
- if (state.fbx_bone_map.has(target_id)) {
- bone = state.fbx_bone_map[target_id];
- }
-
- Transform3D target_transform;
-
- if (state.fbx_target_map.has(target_id)) {
- Ref<FBXNode> node_ref = state.fbx_target_map[target_id];
- target_transform = node_ref->pivot_transform->GlobalTransform;
- //print_verbose("[doc] allocated animation node transform");
- }
-
- //int size_targets = state.fbx_target_map.size();
- //print_verbose("Target ID map: " + itos(size_targets));
- //print_verbose("[doc] debug bone map size: " + itos(state.fbx_bone_map.size()));
-
- // 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);
- 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);
- track_path = node_path;
- //print_verbose("[doc] node animation path: " + node_path);
- }
- } else {
- // note: this could actually be unsafe this means we should be careful about continuing here, if we see bizarre effects later we should disable this.
- // I am not sure if this is unsafe or not, testing will tell us this.
- print_error("[doc] invalid fbx target detected for this track");
- continue;
- }
-
- // everything in FBX and Maya is a node therefore if this happens something is seriously broken.
- if (!state.fbx_target_map.has(target_id)) {
- print_error("unable to resolve this to an FBX object.");
- continue;
- }
-
- Ref<FBXNode> target_node = state.fbx_target_map[target_id];
- const FBXDocParser::Model *model = target_node->fbx_model;
- const FBXDocParser::PropertyTable *props = dynamic_cast<const FBXDocParser::PropertyTable *>(model);
-
- Map<StringName, FBXTrack> &track_data = track.value;
- FBXTrack &translation_keys = track_data[StringName("T")];
- FBXTrack &rotation_keys = track_data[StringName("R")];
- FBXTrack &scale_keys = track_data[StringName("S")];
-
- double increment = 1.0f / fps_setting;
- double time = 0.0f;
-
- bool last = false;
-
- Vector<Vector3> pos_values;
- Vector<float> pos_times;
- Vector<Vector3> scale_values;
- Vector<float> scale_times;
- Vector<Quaternion> rot_values;
- Vector<float> rot_times;
-
- double max_duration = 0;
- double anim_length = animation->get_length();
-
- for (std::pair<int64_t, Vector3> position_key : translation_keys.keyframes) {
- pos_values.push_back(position_key.second * state.scale);
- double animation_track_time = CONVERT_FBX_TIME(position_key.first);
-
- if (animation_track_time > max_duration) {
- max_duration = animation_track_time;
- }
-
- //print_verbose("pos keyframe: t:" + rtos(animation_track_time) + " value " + position_key.second);
- pos_times.push_back(animation_track_time);
- }
-
- for (std::pair<int64_t, Vector3> scale_key : scale_keys.keyframes) {
- scale_values.push_back(scale_key.second);
- double animation_track_time = CONVERT_FBX_TIME(scale_key.first);
-
- if (animation_track_time > max_duration) {
- max_duration = animation_track_time;
- }
- //print_verbose("scale keyframe t:" + rtos(animation_track_time));
- scale_times.push_back(animation_track_time);
- }
-
- //
- // Pre and Post keyframe rotation handler
- // -- Required because Maya and Autodesk <3 the pain when it comes to implementing animation code! enjoy <3
-
- bool got_pre = false;
- bool got_post = false;
-
- Quaternion post_rotation;
- Quaternion pre_rotation;
-
- // Rotation matrix
- const Vector3 &PreRotation = FBXDocParser::PropertyGet<Vector3>(props, "PreRotation", got_pre);
- const Vector3 &PostRotation = FBXDocParser::PropertyGet<Vector3>(props, "PostRotation", got_post);
-
- FBXDocParser::Model::RotOrder rot_order = model->RotationOrder();
- if (got_pre) {
- pre_rotation = ImportUtils::EulerToQuaternion(rot_order, ImportUtils::deg2rad(PreRotation));
- }
- if (got_post) {
- post_rotation = ImportUtils::EulerToQuaternion(rot_order, ImportUtils::deg2rad(PostRotation));
- }
-
- Quaternion lastQuaternion = Quaternion();
-
- for (std::pair<int64_t, Vector3> rotation_key : rotation_keys.keyframes) {
- double animation_track_time = CONVERT_FBX_TIME(rotation_key.first);
-
- //print_verbose("euler rotation key: " + rotation_key.second);
- Quaternion rot_key_value = ImportUtils::EulerToQuaternion(quaternion_rotation_order, ImportUtils::deg2rad(rotation_key.second));
-
- if (lastQuaternion != Quaternion() && rot_key_value.dot(lastQuaternion) < 0) {
- rot_key_value.x = -rot_key_value.x;
- rot_key_value.y = -rot_key_value.y;
- rot_key_value.z = -rot_key_value.z;
- rot_key_value.w = -rot_key_value.w;
- }
- // pre_post rotation possibly could fix orientation
- Quaternion final_rotation = pre_rotation * rot_key_value * post_rotation;
-
- lastQuaternion = final_rotation;
-
- if (animation_track_time > max_duration) {
- max_duration = animation_track_time;
- }
-
- rot_values.push_back(final_rotation.normalized());
- rot_times.push_back(animation_track_time);
- }
-
- bool valid_rest = false;
- Transform3D bone_rest;
- int skeleton_bone = -1;
- if (state.fbx_bone_map.has(target_id)) {
- if (bone.is_valid() && bone->fbx_skeleton.is_valid()) {
- skeleton_bone = bone->godot_bone_id;
- if (skeleton_bone >= 0) {
- bone_rest = bone->fbx_skeleton->skeleton->get_bone_rest(skeleton_bone);
- valid_rest = true;
- }
- }
-
- if (!valid_rest) {
- print_verbose("invalid rest!");
- }
- }
-
- const Vector3 def_pos = translation_keys.has_default ? (translation_keys.default_value * state.scale) : bone_rest.origin;
- const Quaternion def_rot = rotation_keys.has_default ? ImportUtils::EulerToQuaternion(quaternion_rotation_order, ImportUtils::deg2rad(rotation_keys.default_value)) : bone_rest.basis.get_rotation_quaternion();
- 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;
- Vector3 scale = def_scale;
-
- if (pos_values.size()) {
- pos = _interpolate_track<Vector3>(pos_times, pos_values, time,
- AssetImportAnimation::INTERP_LINEAR);
- }
-
- if (rot_values.size()) {
- rot = _interpolate_track<Quaternion>(rot_times, rot_values, time,
- AssetImportAnimation::INTERP_LINEAR);
- }
-
- if (scale_values.size()) {
- scale = _interpolate_track<Vector3>(scale_times, scale_values, time,
- AssetImportAnimation::INTERP_LINEAR);
- }
-
- 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);
- }
-
- if (last) {
- break;
- }
-
- time += increment;
- if (time > anim_length) {
- last = true;
- time = anim_length;
- break;
- }
- }
- }
- }
- state.animation_player->add_animation(animation_name, animation);
- }
- }
-
- // AnimStack elements contain start stop time and name of animation
- // AnimLayer is the current active layer of the animation (multiple layers can be active we only support 1)
- // AnimCurveNode has a OP link back to the model which is the real node.
- // AnimCurveNode has a direct link to AnimationCurve (of which it may have more than one)
-
- // Store animation stack in list
- // iterate over all AnimStacks like the cache node algorithm recursively
- // this can then be used with ProcessDomConnection<> to link from
- // AnimStack:: <-- (OO) --> AnimLayer:: <-- (OO) --> AnimCurveNode:: (which can OP resolve) to Model::
- }
-
- //
- // Cleanup operations - explicit to prevent errors on shutdown - found that ref to ref does behave badly sometimes.
- //
-
- state.renderer_mesh_data.clear();
- state.MeshSkins.clear();
- state.fbx_target_map.clear();
- state.fbx_node_list.clear();
-
- for (KeyValue<uint64_t, Ref<FBXBone>> &element : state.fbx_bone_map) {
- Ref<FBXBone> bone = element.value;
- bone->parent_bone.unref();
- bone->node.unref();
- bone->fbx_skeleton.unref();
- }
-
- for (KeyValue<uint64_t, Ref<FBXSkeleton>> &element : state.skeleton_map) {
- Ref<FBXSkeleton> skel = element.value;
- skel->fbx_node.unref();
- skel->skeleton_bones.clear();
- }
-
- state.fbx_bone_map.clear();
- state.skeleton_map.clear();
- state.fbx_root_node.unref();
-
- return scene_root;
-}
-
-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");
- // FBX can do an join like this
- // Model -> SubDeformer (bone) -> Deformer (skin pose)
- // This is important because we need to somehow link skin back to bone id in skeleton :)
- // The rules are:
- // A subdeformer will exist if 'limbnode' class tag present
- // The subdeformer will not necessarily have a deformer as joints do not have one
- for (const FBXDocParser::Connection *con : conns) {
- // goto: bone creation
- //print_verbose("con: " + String(con->PropertyName().c_str()));
-
- // ignore object-property links we want the object to object links nothing else
- if (con->PropertyName().length()) {
- continue;
- }
-
- // convert connection source object into Object base class
- const FBXDocParser::Object *const object = con->SourceObject();
-
- if (nullptr == object) {
- print_verbose("failed to convert source object for Model link");
- continue;
- }
-
- // FBX Model::Cube, Model::Bone001, etc elements
- // This detects if we can cast the object into this model structure.
- const FBXDocParser::Model *const model = dynamic_cast<const FBXDocParser::Model *>(object);
-
- // declare our bone element reference (invalid, unless we create a bone in this step)
- // this lets us pass valid armature information into children objects and this is why we moved this up here
- // previously this was created .instantiated() on the same line.
- Ref<FBXBone> bone_element;
-
- if (model != nullptr) {
- // model marked with limb node / casted.
- const FBXDocParser::ModelLimbNode *const limb_node = dynamic_cast<const FBXDocParser::ModelLimbNode *>(model);
- if (limb_node != nullptr) {
- // Write bone into bone list for FBX
-
- ERR_FAIL_COND_MSG(state.fbx_bone_map.has(limb_node->ID()), "[serious] duplicate LimbNode detected");
-
- bool parent_is_bone = state.fbx_bone_map.find(p_id);
- bone_element.instantiate();
-
- // used to build the bone hierarchy in the skeleton
- bone_element->parent_bone_id = parent_is_bone ? p_id : 0;
- bone_element->valid_parent = parent_is_bone;
- bone_element->limb_node = limb_node;
-
- // parent is a node and this is the first bone
- if (!parent_is_bone) {
- uint64_t armature_id = p_id;
- bone_element->valid_armature_id = true;
- bone_element->armature_id = armature_id;
- print_verbose("[doc] valid armature has been configured for first child: " + itos(armature_id));
- } else if (p_parent_bone.is_valid()) {
- if (p_parent_bone->valid_armature_id) {
- bone_element->valid_armature_id = true;
- bone_element->armature_id = p_parent_bone->armature_id;
- print_verbose("[doc] bone has valid armature id:" + itos(bone_element->armature_id));
- } else {
- print_error("[doc] unassigned armature id: " + String(limb_node->Name().c_str()));
- }
- } else {
- print_error("[doc] error is this a bone? " + String(limb_node->Name().c_str()));
- }
-
- if (!parent_is_bone) {
- print_verbose("[doc] Root bone: " + bone_element->bone_name);
- }
-
- uint64_t limb_id = limb_node->ID();
- bone_element->bone_id = limb_id;
- bone_element->bone_name = ImportUtils::FBXNodeToName(model->Name());
- bone_element->parent_bone = p_parent_bone;
-
- // insert limb by ID into list.
- state.fbx_bone_map.insert(limb_node->ID(), bone_element);
- }
-
- // recursion call - child nodes
- BuildDocumentBones(bone_element, state, p_doc, model->ID());
- }
- }
-}
-
-void EditorSceneFormatImporterFBX::BuildDocumentNodes(
- Ref<PivotTransform> parent_transform,
- ImportState &state,
- const FBXDocParser::Document *p_doc,
- uint64_t id,
- Ref<FBXNode> parent_node) {
- // tree
- // here we get the node 0 on the root by default
- const std::vector<const FBXDocParser::Connection *> &conns = p_doc->GetConnectionsByDestinationSequenced(id, "Model");
-
- // branch
- for (const FBXDocParser::Connection *con : conns) {
- // ignore object-property links
- if (con->PropertyName().length()) {
- // really important we document why this is ignored.
- print_verbose("ignoring property link - no docs on why this is ignored");
- continue;
- }
-
- // convert connection source object into Object base class
- // Source objects can exist with 'null connections' this means that we only for sure know the source exists.
- const FBXDocParser::Object *const source_object = con->SourceObject();
-
- if (nullptr == source_object) {
- print_verbose("failed to convert source object for Model link");
- continue;
- }
-
- // FBX Model::Cube, Model::Bone001, etc elements
- // This detects if we can cast the object into this model structure.
- const FBXDocParser::Model *const model = dynamic_cast<const FBXDocParser::Model *>(source_object);
- // model is the current node
- if (nullptr != model) {
- uint64_t current_node_id = model->ID();
-
- Ref<FBXNode> new_node;
- new_node.instantiate();
- new_node->current_node_id = current_node_id;
- new_node->node_name = ImportUtils::FBXNodeToName(model->Name());
-
- Ref<PivotTransform> fbx_transform;
- fbx_transform.instantiate();
- fbx_transform->set_parent(parent_transform);
- fbx_transform->set_model(model);
- fbx_transform->debug_pivot_xform("name: " + new_node->node_name);
- fbx_transform->Execute();
-
- new_node->set_pivot_transform(fbx_transform);
-
- // check if this node is a bone
- if (state.fbx_bone_map.has(current_node_id)) {
- Ref<FBXBone> bone = state.fbx_bone_map[current_node_id];
- if (bone.is_valid()) {
- bone->set_node(new_node);
- print_verbose("allocated bone data: " + bone->bone_name);
- }
- }
-
- // set the model, we can't just assign this safely
- new_node->set_model(model);
-
- if (parent_node.is_valid()) {
- new_node->set_parent(parent_node);
- } else {
- new_node->set_parent(state.fbx_root_node);
- }
-
- CRASH_COND_MSG(new_node->pivot_transform.is_null(), "invalid fbx target map pivot transform [serious]");
-
- // populate lookup tables with references
- // [fbx_node_id, fbx_node]
-
- state.fbx_node_list.push_back(new_node);
- if (!state.fbx_target_map.has(new_node->current_node_id)) {
- state.fbx_target_map[new_node->current_node_id] = new_node;
- }
-
- // print node name
- print_verbose("[doc] new node " + new_node->node_name);
-
- // sub branches
- BuildDocumentNodes(new_node->pivot_transform, state, p_doc, current_node_id, new_node);
- }
- }
-}
-Ref<Animation> EditorSceneFormatImporterFBX::import_animation(const String &p_path,
- uint32_t p_flags, const Map<StringName, Variant> &p_options,
- int p_bake_fps) {
- return Ref<Animation>();
-}
diff --git a/modules/fbx/editor_scene_importer_fbx.h b/modules/fbx/editor_scene_importer_fbx.h
deleted file mode 100644
index eebcb86409..0000000000
--- a/modules/fbx/editor_scene_importer_fbx.h
+++ /dev/null
@@ -1,137 +0,0 @@
-/*************************************************************************/
-/* editor_scene_importer_fbx.h */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* https://godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2022 Juan Linietsky, Ariel Manzur. */
-/* Copyright (c) 2014-2022 Godot Engine contributors (cf. AUTHORS.md). */
-/* */
-/* Permission is hereby granted, free of charge, to any person obtaining */
-/* a copy of this software and associated documentation files (the */
-/* "Software"), to deal in the Software without restriction, including */
-/* without limitation the rights to use, copy, modify, merge, publish, */
-/* distribute, sublicense, and/or sell copies of the Software, and to */
-/* permit persons to whom the Software is furnished to do so, subject to */
-/* the following conditions: */
-/* */
-/* The above copyright notice and this permission notice shall be */
-/* included in all copies or substantial portions of the Software. */
-/* */
-/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
-/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
-/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
-/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
-/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
-/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
-/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
-/*************************************************************************/
-
-#ifndef EDITOR_SCENE_IMPORTER_FBX_H
-#define EDITOR_SCENE_IMPORTER_FBX_H
-
-#ifdef TOOLS_ENABLED
-
-#include "data/import_state.h"
-#include "tools/import_utils.h"
-
-#include "core/io/resource_importer.h"
-#include "core/string/ustring.h"
-#include "core/templates/local_vector.h"
-#include "core/templates/vector.h"
-#include "core/variant/dictionary.h"
-#include "editor/import/resource_importer_scene.h"
-#include "editor/project_settings_editor.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"
-#include "scene/resources/animation.h"
-#include "scene/resources/surface_tool.h"
-
-#include "fbx_parser/FBXDocument.h"
-#include "fbx_parser/FBXImportSettings.h"
-#include "fbx_parser/FBXMeshGeometry.h"
-#include "fbx_parser/FBXUtil.h"
-
-#define CONVERT_FBX_TIME(time) static_cast<double>(time) / 46186158000LL
-
-class EditorSceneFormatImporterFBX : public EditorSceneFormatImporter {
-private:
- GDCLASS(EditorSceneFormatImporterFBX, EditorSceneFormatImporter);
-
- struct AssetImportAnimation {
- enum Interpolation {
- INTERP_LINEAR,
- INTERP_STEP,
- INTERP_CATMULLROMSPLINE,
- INTERP_CUBIC_SPLINE
- };
- };
-
- // ------------------------------------------------------------------------------------------------
- template <typename T>
- const T *ProcessDOMConnection(
- const FBXDocParser::Document *doc,
- uint64_t current_element,
- bool reverse_lookup = false) {
- const std::vector<const FBXDocParser::Connection *> &conns = reverse_lookup ? doc->GetConnectionsByDestinationSequenced(current_element) : doc->GetConnectionsBySourceSequenced(current_element);
- //print_verbose("[doc] looking for " + String(element_to_find));
- // using the temp pattern here so we can debug before it returns
- // in some cases we return too early, with 'deformer object base class' in wrong place
- // in assimp this means we can accidentally return too early...
- const T *return_obj = nullptr;
-
- for (const FBXDocParser::Connection *con : conns) {
- const FBXDocParser::Object *source_object = con->SourceObject();
- const FBXDocParser::Object *dest_object = con->DestinationObject();
- if (source_object && dest_object != nullptr) {
- //print_verbose("[doc] connection name: " + String(source_object->Name().c_str()) + ", dest: " + String(dest_object->Name().c_str()));
- const T *temp = dynamic_cast<const T *>(reverse_lookup ? source_object : dest_object);
- if (temp) {
- return_obj = temp;
- }
- }
- }
-
- if (return_obj != nullptr) {
- //print_verbose("[doc] returned valid element");
- //print_verbose("Found object for bone");
- return return_obj;
- }
-
- // safe to return nothing, need to use nullptr here as nullptr is used internally for FBX document.
- return nullptr;
- }
-
- void BuildDocumentBones(Ref<FBXBone> p_parent_bone,
- ImportState &state, const FBXDocParser::Document *p_doc,
- uint64_t p_id);
-
- void BuildDocumentNodes(Ref<PivotTransform> parent_transform, ImportState &state, const FBXDocParser::Document *doc, uint64_t id, Ref<FBXNode> fbx_parent);
-
- Node3D *_generate_scene(const String &p_path, const FBXDocParser::Document *p_document,
- const uint32_t p_flags,
- int p_bake_fps,
- const int32_t p_max_bone_weights,
- bool p_is_blender_fbx);
-
- template <class T>
- T _interpolate_track(const Vector<float> &p_times, const Vector<T> &p_values, float p_time, AssetImportAnimation::Interpolation p_interp);
- 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:
- EditorSceneFormatImporterFBX() {}
- ~EditorSceneFormatImporterFBX() {}
-
- virtual void get_extensions(List<String> *r_extensions) const override;
- virtual uint32_t get_import_flags() const override;
- virtual Node3D *import_scene(const String &p_path, uint32_t p_flags, const Map<StringName, Variant> &p_options, int p_bake_fps, List<String> *r_missing_deps, Error *r_err = nullptr) override;
- virtual Ref<Animation> import_animation(const String &p_path,
- uint32_t p_flags, const Map<StringName, Variant> &p_options,
- int p_bake_fps) override;
-};
-
-#endif // TOOLS_ENABLED
-#endif // EDITOR_SCENE_IMPORTER_FBX_H
diff --git a/modules/fbx/fbx_parser/ByteSwapper.h b/modules/fbx/fbx_parser/ByteSwapper.h
deleted file mode 100644
index 21c5557001..0000000000
--- a/modules/fbx/fbx_parser/ByteSwapper.h
+++ /dev/null
@@ -1,283 +0,0 @@
-/*************************************************************************/
-/* ByteSwapper.h */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* https://godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2022 Juan Linietsky, Ariel Manzur. */
-/* Copyright (c) 2014-2022 Godot Engine contributors (cf. AUTHORS.md). */
-/* */
-/* Permission is hereby granted, free of charge, to any person obtaining */
-/* a copy of this software and associated documentation files (the */
-/* "Software"), to deal in the Software without restriction, including */
-/* without limitation the rights to use, copy, modify, merge, publish, */
-/* distribute, sublicense, and/or sell copies of the Software, and to */
-/* permit persons to whom the Software is furnished to do so, subject to */
-/* the following conditions: */
-/* */
-/* The above copyright notice and this permission notice shall be */
-/* included in all copies or substantial portions of the Software. */
-/* */
-/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
-/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
-/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
-/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
-/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
-/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
-/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
-/*************************************************************************/
-
-/*
-Open Asset Import Library (assimp)
-----------------------------------------------------------------------
-
-Copyright (c) 2006-2020, assimp team
-
-
-All rights reserved.
-
-Redistribution and use of this software in source and binary forms,
-with or without modification, are permitted provided that the
-following conditions are met:
-
-* Redistributions of source code must retain the above
- copyright notice, this list of conditions and the
- following disclaimer.
-
-* Redistributions in binary form must 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 the assimp team, nor the names of its
- contributors may be used to endorse or promote products
- derived from this software without specific prior
- written permission of the assimp team.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(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 Helper class tp perform various byte order swappings
- (e.g. little to big endian) */
-#ifndef BYTE_SWAPPER_H
-#define BYTE_SWAPPER_H
-
-#include <stdint.h>
-#include <algorithm>
-#include <locale>
-
-namespace FBXDocParser {
-// --------------------------------------------------------------------------------------
-/** Defines some useful byte order swap routines.
- *
- * This is required to read big-endian model formats on little-endian machines,
- * and vice versa. Direct use of this class is DEPRECATED. Use #StreamReader instead. */
-// --------------------------------------------------------------------------------------
-class ByteSwap {
- ByteSwap() {}
-
-public:
- // ----------------------------------------------------------------------
- /** Swap two bytes of data
- * @param[inout] _szOut A void* to save the reintcasts for the caller. */
- static inline void Swap2(void *_szOut) {
- uint8_t *const szOut = reinterpret_cast<uint8_t *>(_szOut);
- std::swap(szOut[0], szOut[1]);
- }
-
- // ----------------------------------------------------------------------
- /** Swap four bytes of data
- * @param[inout] _szOut A void* to save the reintcasts for the caller. */
- static inline void Swap4(void *_szOut) {
- uint8_t *const szOut = reinterpret_cast<uint8_t *>(_szOut);
- std::swap(szOut[0], szOut[3]);
- std::swap(szOut[1], szOut[2]);
- }
-
- // ----------------------------------------------------------------------
- /** Swap eight bytes of data
- * @param[inout] _szOut A void* to save the reintcasts for the caller. */
- static inline void Swap8(void *_szOut) {
- uint8_t *const szOut = reinterpret_cast<uint8_t *>(_szOut);
- std::swap(szOut[0], szOut[7]);
- std::swap(szOut[1], szOut[6]);
- std::swap(szOut[2], szOut[5]);
- std::swap(szOut[3], szOut[4]);
- }
-
- // ----------------------------------------------------------------------
- /** ByteSwap a float. Not a joke.
- * @param[inout] fOut ehm. .. */
- static inline void Swap(float *fOut) {
- Swap4(fOut);
- }
-
- // ----------------------------------------------------------------------
- /** ByteSwap a double. Not a joke.
- * @param[inout] fOut ehm. .. */
- static inline void Swap(double *fOut) {
- Swap8(fOut);
- }
-
- // ----------------------------------------------------------------------
- /** ByteSwap an int16t. Not a joke.
- * @param[inout] fOut ehm. .. */
- static inline void Swap(int16_t *fOut) {
- Swap2(fOut);
- }
-
- static inline void Swap(uint16_t *fOut) {
- Swap2(fOut);
- }
-
- // ----------------------------------------------------------------------
- /** ByteSwap an int32t. Not a joke.
- * @param[inout] fOut ehm. .. */
- static inline void Swap(int32_t *fOut) {
- Swap4(fOut);
- }
-
- static inline void Swap(uint32_t *fOut) {
- Swap4(fOut);
- }
-
- // ----------------------------------------------------------------------
- /** ByteSwap an int64t. Not a joke.
- * @param[inout] fOut ehm. .. */
- static inline void Swap(int64_t *fOut) {
- Swap8(fOut);
- }
-
- static inline void Swap(uint64_t *fOut) {
- Swap8(fOut);
- }
-
- // ----------------------------------------------------------------------
- //! Templatized ByteSwap
- //! \returns param tOut as swapped
- template <typename Type>
- static inline Type Swapped(Type tOut) {
- return _swapper<Type, sizeof(Type)>()(tOut);
- }
-
-private:
- template <typename T, size_t size>
- struct _swapper;
-};
-
-template <typename T>
-struct ByteSwap::_swapper<T, 2> {
- T operator()(T tOut) {
- Swap2(&tOut);
- return tOut;
- }
-};
-
-template <typename T>
-struct ByteSwap::_swapper<T, 4> {
- T operator()(T tOut) {
- Swap4(&tOut);
- return tOut;
- }
-};
-
-template <typename T>
-struct ByteSwap::_swapper<T, 8> {
- T operator()(T tOut) {
- Swap8(&tOut);
- return tOut;
- }
-};
-
-// --------------------------------------------------------------------------------------
-// ByteSwap macros for BigEndian/LittleEndian support
-// --------------------------------------------------------------------------------------
-#if (defined AI_BUILD_BIG_ENDIAN)
-#define AI_LE(t) (t)
-#define AI_BE(t) ByteSwap::Swapped(t)
-#define AI_LSWAP2(p)
-#define AI_LSWAP4(p)
-#define AI_LSWAP8(p)
-#define AI_LSWAP2P(p)
-#define AI_LSWAP4P(p)
-#define AI_LSWAP8P(p)
-#define LE_NCONST const
-#define AI_SWAP2(p) ByteSwap::Swap2(&(p))
-#define AI_SWAP4(p) ByteSwap::Swap4(&(p))
-#define AI_SWAP8(p) ByteSwap::Swap8(&(p))
-#define AI_SWAP2P(p) ByteSwap::Swap2((p))
-#define AI_SWAP4P(p) ByteSwap::Swap4((p))
-#define AI_SWAP8P(p) ByteSwap::Swap8((p))
-#define BE_NCONST
-#else
-#define AI_BE(t) (t)
-#define AI_LE(t) ByteSwap::Swapped(t)
-#define AI_SWAP2(p)
-#define AI_SWAP4(p)
-#define AI_SWAP8(p)
-#define AI_SWAP2P(p)
-#define AI_SWAP4P(p)
-#define AI_SWAP8P(p)
-#define BE_NCONST const
-#define AI_LSWAP2(p) ByteSwap::Swap2(&(p))
-#define AI_LSWAP4(p) ByteSwap::Swap4(&(p))
-#define AI_LSWAP8(p) ByteSwap::Swap8(&(p))
-#define AI_LSWAP2P(p) ByteSwap::Swap2((p))
-#define AI_LSWAP4P(p) ByteSwap::Swap4((p))
-#define AI_LSWAP8P(p) ByteSwap::Swap8((p))
-#define LE_NCONST
-#endif
-
-namespace Intern {
-
-// --------------------------------------------------------------------------------------------
-template <typename T, bool doit>
-struct ByteSwapper {
- void operator()(T *inout) {
- ByteSwap::Swap(inout);
- }
-};
-
-template <typename T>
-struct ByteSwapper<T, false> {
- void operator()(T *) {
- }
-};
-
-// --------------------------------------------------------------------------------------------
-template <bool SwapEndianess, typename T, bool RuntimeSwitch>
-struct Getter {
- void operator()(T *inout, bool le) {
- le = !le;
- if (le) {
- ByteSwapper<T, (sizeof(T) > 1 ? true : false)>()(inout);
- } else {
- ByteSwapper<T, false>()(inout);
- }
- }
-};
-
-template <bool SwapEndianess, typename T>
-struct Getter<SwapEndianess, T, false> {
- void operator()(T *inout, bool /*le*/) {
- // static branch
- ByteSwapper<T, (SwapEndianess && sizeof(T) > 1)>()(inout);
- }
-};
-} // namespace Intern
-} // namespace FBXDocParser
-
-#endif // BYTE_SWAPPER_H
diff --git a/modules/fbx/fbx_parser/CREDITS b/modules/fbx/fbx_parser/CREDITS
deleted file mode 100644
index 62b449614e..0000000000
--- a/modules/fbx/fbx_parser/CREDITS
+++ /dev/null
@@ -1,183 +0,0 @@
-===============================================================
-Open Asset Import Library (Assimp)
-Developers and Contributors
-===============================================================
-
-The following is a non-exhaustive list of all constributors over the years.
-If you think your name should be listed here, drop us a line and we'll add you.
-
-- Alexander Gessler,
-3DS-, BLEND-, ASE-, DXF-, HMP-, MDL-, MD2-, MD3-, MD5-, MDC-, NFF-, PLY-, STL-, RAW-, OFF-, MS3D-, Q3D- and LWO-Loader, Assimp-Viewer, assimp-cmd, -noboost, Website (Design).
-
-- Thomas Schulze,
-X-, Collada-, BVH-Loader, Postprocessing framework. Data structure & Interface design, documentation.
-
-- Kim Kulling,
-Obj-, Q3BSD-, OpenGEX-Loader, Logging system, CMake-build-environment, Linux-build, Website ( Admin ), Coverity ( Admin ), Glitter ( Admin ).
-
-- R.Schmidt,
-Linux build, eclipse support.
-
-- Matthias Gubisch,
-Assimp.net
-Visual Studio 9 support, bugfixes.
-
-- Mark Sibly
-B3D-Loader, Assimp testing
-
-- Jonathan Klein
-Ogre Loader, VC2010 fixes and CMake fixes.
-
-- Sebastian Hempel,
-PyAssimp (first version)
-Compile-Bugfixes for mingw, add environment for static library support in make.
-
-- Jonathan Pokrass
-Supplied a bugfix concerning the scaling in the md3 loader.
-
-- Andrew Galante,
-Submitted patches to make Assimp compile with GCC-4, a makefile and the xcode3 workspace.
-
-- Andreas Nagel
-First Assimp testing & verification under Windows Vista 64 Bit.
-
-- Marius Schr�der
-Allowed us to use many of his models for screenshots and testing.
-
-- Christian Schubert
-Supplied various XFiles for testing purposes.
-
-- Tizian Wieland
-Searched the web for hundreds of test models for internal use
-
-- John Connors
-Supplied patches for linux and SCons.
-
-- T. R.
-The GUY who performed some of the CSM mocaps.
-
-- Andy Maloney
-Contributed fixes for the documentation and the doxygen markup
-
-- Zhao Lei
-Contributed several bugfixes fixing memory leaks and improving float parsing
-
-- sueastside
-Updated PyAssimp to the latest Assimp data structures and provided a script to keep the Python binding up-to-date.
-
-- Tobias Rittig
-Collada testing with Cinema 4D
-
-- Brad Grantham
-Improvements in OpenGL-Sample.
-
-- Robert Ramirez
-Add group loading feature to Obj-Loader.
-
-- Chris Maiwald
-Many bugreports, improving Assimp's portability, regular testing & feedback.
-
-- Stepan Hrbek
-Bugreport and fix for a obj-materialloader crash.
-
-- David Nadlinger
-D bindings, CMake install support.
-
-- Dario Accornero
-Contributed several patches regarding Mac OS/XCode targets, bug reports.
-
-- Martin Walser (Samhayne)
-Contributed the 'SimpleTexturedOpenGl' sample.
-
-- Matthias Fauconneau
-Contributed a fix for the Q3-BSP loader.
-
-- Jørgen P. Tjernø
-Contributed updated and improved xcode workspaces
-
-- drparallax
-Contributed the /samples/SimpleAssimpViewX sample
-
-- Carsten Fuchs
-Contributed a fix for the Normalize method in aiQuaternion.
-
-- dbburgess
-Contributes a Android-specific build issue: log the hardware architecture for ARM.
-
-- alfiereinre7
-Contributes a obj-fileparser fix: missing tokens in the obj-token list.
-
-- Roman Kharitonov
-Contributes a fix for the configure script environment.
-
-- Ed Diana
-Contributed AssimpDelphi (/port/AssimpDelphi).
-
-- rdb
-Contributes a bundle of fixes and improvements for the bsp-importer.
-
-- Mick P
-For contributing the De-bone postprocessing step and filing various bug reports.
-
-- Rosen Diankov
-Contributed patches to build assimp debian packages using cmake.
-
-- Mark Page
-Contributed a patch to fix the VertexTriangleAdjacency postprocessing step.
-
-- IOhannes
-Contributed the Debian build fixes ( architecture macro ).
-
-- gellule
-Several LWO and LWS fixes (pivoting).
-
-- Marcel Metz
-GCC/Linux fixes for the SimpleOpenGL sample.
-
-- Brian Miller
-Bugfix for a compiler fix for iOS on arm.
-
-- Séverin Lemaignan
-Rewrite of PyAssimp, distutils and Python3 support
-
-- albert-wang
-Bugfixes for the collada parser
-
-- Ya ping Jin
-Bugfixes for uv-tanget calculation.
-
-- Jonne Nauha
-Ogre Binary format support
-
-- Filip Wasil, Tieto Poland Sp. z o.o.
-Android JNI asset extraction support
-
-- Richard Steffen
-Contributed ExportProperties interface
-Contributed X File exporter
-Contributed Step (stp) exporter
-
-- Thomas Iorns (mesilliac)
-Initial FBX Export support
-
-For a more detailed list just check: https://github.com/assimp/assimp/network/members
-
-
-========
-Patreons
-========
-
-Huge thanks to our Patreons!
-
-- migenius
-- Marcus
-- Cort
-- elect
-- Steffen
-
-
-===================
-Commercial Sponsors
-===================
-
-- MyDidimo (mydidimo.com): Sponsored development of FBX Export support
diff --git a/modules/fbx/fbx_parser/FBXAnimation.cpp b/modules/fbx/fbx_parser/FBXAnimation.cpp
deleted file mode 100644
index 8627c95012..0000000000
--- a/modules/fbx/fbx_parser/FBXAnimation.cpp
+++ /dev/null
@@ -1,273 +0,0 @@
-/*************************************************************************/
-/* FBXAnimation.cpp */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* https://godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2022 Juan Linietsky, Ariel Manzur. */
-/* Copyright (c) 2014-2022 Godot Engine contributors (cf. AUTHORS.md). */
-/* */
-/* Permission is hereby granted, free of charge, to any person obtaining */
-/* a copy of this software and associated documentation files (the */
-/* "Software"), to deal in the Software without restriction, including */
-/* without limitation the rights to use, copy, modify, merge, publish, */
-/* distribute, sublicense, and/or sell copies of the Software, and to */
-/* permit persons to whom the Software is furnished to do so, subject to */
-/* the following conditions: */
-/* */
-/* The above copyright notice and this permission notice shall be */
-/* included in all copies or substantial portions of the Software. */
-/* */
-/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
-/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
-/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
-/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
-/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
-/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
-/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
-/*************************************************************************/
-
-/*
-Open Asset Import Library (assimp)
-----------------------------------------------------------------------
-
-Copyright (c) 2006-2019, assimp team
-
-
-All rights reserved.
-
-Redistribution and use of this software in source and binary forms,
-with or without modification, are permitted provided that the
-following conditions are met:
-
-* Redistributions of source code must retain the above
- copyright notice, this list of conditions and the
- following disclaimer.
-
-* Redistributions in binary form must 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 the assimp team, nor the names of its
- contributors may be used to endorse or promote products
- derived from this software without specific prior
- written permission of the assimp team.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(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 FBXAnimation.cpp
- * @brief Assimp::FBX::AnimationCurve, Assimp::FBX::AnimationCurveNode,
- * Assimp::FBX::AnimationLayer, Assimp::FBX::AnimationStack
- */
-
-#include "FBXCommon.h"
-#include "FBXDocument.h"
-#include "FBXDocumentUtil.h"
-#include "FBXParser.h"
-
-namespace FBXDocParser {
-
-using namespace Util;
-
-// ------------------------------------------------------------------------------------------------
-AnimationCurve::AnimationCurve(uint64_t id, const ElementPtr element, const std::string &name, const Document & /*doc*/) :
- Object(id, element, name) {
- const ScopePtr sc = GetRequiredScope(element);
- const ElementPtr KeyTime = GetRequiredElement(sc, "KeyTime");
- const ElementPtr KeyValueFloat = GetRequiredElement(sc, "KeyValueFloat");
-
- // note preserved keys and values for legacy FBXConverter.cpp
- // we can remove this once the animation system is written
- // and clean up this code so we do not have copies everywhere.
- ParseVectorDataArray(keys, KeyTime);
- ParseVectorDataArray(values, KeyValueFloat);
-
- if (keys.size() != values.size()) {
- DOMError("the number of key times does not match the number of keyframe values", KeyTime);
- }
-
- // put the two lists into the map, underlying container is really just a dictionary
- // these will always match, if not an error will throw and the file will not import
- // this is useful because we then can report something and fix this later if it becomes an issue
- // at this point we do not need a different count of these elements so this makes the
- // most sense to do.
- for (size_t x = 0; x < keys.size(); x++) {
- keyvalues[keys[x]] = values[x];
- }
-
- const ElementPtr KeyAttrDataFloat = sc->GetElement("KeyAttrDataFloat");
- if (KeyAttrDataFloat) {
- ParseVectorDataArray(attributes, KeyAttrDataFloat);
- }
-
- const ElementPtr KeyAttrFlags = sc->GetElement("KeyAttrFlags");
- if (KeyAttrFlags) {
- ParseVectorDataArray(flags, KeyAttrFlags);
- }
-}
-
-// ------------------------------------------------------------------------------------------------
-AnimationCurve::~AnimationCurve() {
- // empty
-}
-
-// ------------------------------------------------------------------------------------------------
-AnimationCurveNode::AnimationCurveNode(uint64_t id, const ElementPtr element, const std::string &name,
- const Document &doc, const char *const *target_prop_whitelist /*= nullptr*/,
- size_t whitelist_size /*= 0*/) :
- Object(id, element, name), doc(doc) {
- // find target node
- const char *whitelist[] = { "Model", "NodeAttribute", "Deformer" };
- const std::vector<const Connection *> &conns = doc.GetConnectionsBySourceSequenced(ID(), whitelist, 3);
-
- for (const Connection *con : conns) {
- // link should go for a property
- if (!con->PropertyName().length()) {
- continue;
- }
-
- Object *object = con->DestinationObject();
-
- if (!object) {
- DOMWarning("failed to read destination object for AnimationCurveNode->Model link, ignoring", element);
- continue;
- }
-
- target = object;
- prop = con->PropertyName();
- break;
- }
-}
-
-// ------------------------------------------------------------------------------------------------
-AnimationCurveNode::~AnimationCurveNode() {
- curves.clear();
-}
-
-// ------------------------------------------------------------------------------------------------
-const AnimationMap &AnimationCurveNode::Curves() const {
- /* Lazy loaded animation curves, will only load if required */
- if (curves.empty()) {
- // resolve attached animation curves
- const std::vector<const Connection *> &conns = doc.GetConnectionsByDestinationSequenced(ID(), "AnimationCurve");
-
- for (const Connection *con : conns) {
- // So the advantage of having this STL boilerplate is that it's dead simple once you get it.
- // The other advantage is casting is guaranteed to be safe and nullptr will be returned in the last step if it fails.
- Object *ob = con->SourceObject();
- AnimationCurve *anim_curve = dynamic_cast<AnimationCurve *>(ob);
- ERR_CONTINUE_MSG(!anim_curve, "Failed to convert animation curve from object");
-
- curves.insert(std::make_pair(con->PropertyName(), anim_curve));
- }
- }
-
- return curves;
-}
-
-// ------------------------------------------------------------------------------------------------
-AnimationLayer::AnimationLayer(uint64_t id, const ElementPtr element, const std::string &name, const Document &doc) :
- Object(id, element, name), doc(doc) {
-}
-
-// ------------------------------------------------------------------------------------------------
-AnimationLayer::~AnimationLayer() {
- // empty
-}
-
-// ------------------------------------------------------------------------------------------------
-const AnimationCurveNodeList AnimationLayer::Nodes(const char *const *target_prop_whitelist,
- size_t whitelist_size /*= 0*/) const {
- AnimationCurveNodeList nodes;
-
- // resolve attached animation nodes
- const std::vector<const Connection *> &conns = doc.GetConnectionsByDestinationSequenced(ID(), "AnimationCurveNode");
- nodes.reserve(conns.size());
-
- for (const Connection *con : conns) {
- // link should not go to a property
- if (con->PropertyName().length()) {
- continue;
- }
-
- Object *ob = con->SourceObject();
-
- if (!ob) {
- DOMWarning("failed to read source object for AnimationCurveNode->AnimationLayer link, ignoring", element);
- continue;
- }
-
- const AnimationCurveNode *anim = dynamic_cast<AnimationCurveNode *>(ob);
- if (!anim) {
- DOMWarning("source object for ->AnimationLayer link is not an AnimationCurveNode", element);
- continue;
- }
-
- if (target_prop_whitelist) {
- const char *s = anim->TargetProperty().c_str();
- bool ok = false;
- for (size_t i = 0; i < whitelist_size; ++i) {
- if (!strcmp(s, target_prop_whitelist[i])) {
- ok = true;
- break;
- }
- }
- if (!ok) {
- continue;
- }
- }
- nodes.push_back(anim);
- }
-
- return nodes;
-}
-
-// ------------------------------------------------------------------------------------------------
-AnimationStack::AnimationStack(uint64_t id, const ElementPtr element, const std::string &name, const Document &doc) :
- Object(id, element, name) {
- // resolve attached animation layers
- const std::vector<const Connection *> &conns = doc.GetConnectionsByDestinationSequenced(ID(), "AnimationLayer");
- layers.reserve(conns.size());
-
- for (const Connection *con : conns) {
- // link should not go to a property
- if (con->PropertyName().length()) {
- continue;
- }
-
- Object *ob = con->SourceObject();
- if (!ob) {
- DOMWarning("failed to read source object for AnimationLayer->AnimationStack link, ignoring", element);
- continue;
- }
-
- const AnimationLayer *anim = dynamic_cast<const AnimationLayer *>(ob);
-
- if (!anim) {
- DOMWarning("source object for ->AnimationStack link is not an AnimationLayer", element);
- continue;
- }
-
- layers.push_back(anim);
- }
-}
-
-// ------------------------------------------------------------------------------------------------
-AnimationStack::~AnimationStack() {
-}
-} // namespace FBXDocParser
diff --git a/modules/fbx/fbx_parser/FBXBinaryTokenizer.cpp b/modules/fbx/fbx_parser/FBXBinaryTokenizer.cpp
deleted file mode 100644
index f982e0ca4d..0000000000
--- a/modules/fbx/fbx_parser/FBXBinaryTokenizer.cpp
+++ /dev/null
@@ -1,442 +0,0 @@
-/*************************************************************************/
-/* FBXBinaryTokenizer.cpp */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* https://godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2022 Juan Linietsky, Ariel Manzur. */
-/* Copyright (c) 2014-2022 Godot Engine contributors (cf. AUTHORS.md). */
-/* */
-/* Permission is hereby granted, free of charge, to any person obtaining */
-/* a copy of this software and associated documentation files (the */
-/* "Software"), to deal in the Software without restriction, including */
-/* without limitation the rights to use, copy, modify, merge, publish, */
-/* distribute, sublicense, and/or sell copies of the Software, and to */
-/* permit persons to whom the Software is furnished to do so, subject to */
-/* the following conditions: */
-/* */
-/* The above copyright notice and this permission notice shall be */
-/* included in all copies or substantial portions of the Software. */
-/* */
-/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
-/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
-/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
-/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
-/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
-/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
-/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
-/*************************************************************************/
-
-/*
-Open Asset Import Library (assimp)
-----------------------------------------------------------------------
-
-Copyright (c) 2006-2019, assimp team
-
-
-All rights reserved.
-
-Redistribution and use of this software in source and binary forms,
-with or without modification, are permitted provided that the
-following conditions are met:
-
-* Redistributions of source code must retain the above
- copyright notice, this list of conditions and the
- following disclaimer.
-
-* Redistributions in binary form must 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 the assimp team, nor the names of its
- contributors may be used to endorse or promote products
- derived from this software without specific prior
- written permission of the assimp team.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(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 FBXBinaryTokenizer.cpp
- * @brief Implementation of a fake lexer for binary fbx files -
- * we emit tokens so the parser needs almost no special handling
- * for binary files.
- */
-
-#include "ByteSwapper.h"
-#include "FBXTokenizer.h"
-#include "core/string/print_string.h"
-
-#include <stdint.h>
-
-namespace FBXDocParser {
-// ------------------------------------------------------------------------------------------------
-Token::Token(const char *sbegin, const char *send, TokenType type, size_t offset) :
- sbegin(sbegin),
- send(send),
- type(type),
- line(offset),
- column(BINARY_MARKER) {
-#ifdef DEBUG_ENABLED
- // contents is bad.. :/
- contents = std::string(sbegin, static_cast<size_t>(send - sbegin));
-#endif
- // calc length
- // measure from sBegin to sEnd and validate?
-}
-
-namespace {
-
-// ------------------------------------------------------------------------------------------------
-// signal tokenization error
-void TokenizeError(const std::string &message, size_t offset) {
- print_error("[FBX-Tokenize] " + String(message.c_str()) + ", offset " + itos(offset));
-}
-
-// ------------------------------------------------------------------------------------------------
-size_t Offset(const char *begin, const char *cursor) {
- //ai_assert(begin <= cursor);
-
- return cursor - begin;
-}
-
-// ------------------------------------------------------------------------------------------------
-void TokenizeError(const std::string &message, const char *begin, const char *cursor) {
- TokenizeError(message, Offset(begin, cursor));
-}
-
-// ------------------------------------------------------------------------------------------------
-uint32_t ReadWord(const char *input, const char *&cursor, const char *end) {
- const size_t k_to_read = sizeof(uint32_t);
- if (Offset(cursor, end) < k_to_read) {
- TokenizeError("cannot ReadWord, out of bounds", input, cursor);
- }
-
- uint32_t word;
- ::memcpy(&word, cursor, 4);
- AI_SWAP4(word);
-
- cursor += k_to_read;
-
- return word;
-}
-
-// ------------------------------------------------------------------------------------------------
-uint64_t ReadDoubleWord(const char *input, const char *&cursor, const char *end) {
- const size_t k_to_read = sizeof(uint64_t);
- if (Offset(cursor, end) < k_to_read) {
- TokenizeError("cannot ReadDoubleWord, out of bounds", input, cursor);
- }
-
- uint64_t dword /*= *reinterpret_cast<const uint64_t*>(cursor)*/;
- ::memcpy(&dword, cursor, sizeof(uint64_t));
- AI_SWAP8(dword);
-
- cursor += k_to_read;
-
- return dword;
-}
-
-// ------------------------------------------------------------------------------------------------
-uint8_t ReadByte(const char *input, const char *&cursor, const char *end) {
- if (Offset(cursor, end) < sizeof(uint8_t)) {
- TokenizeError("cannot ReadByte, out of bounds", input, cursor);
- }
-
- uint8_t word; /* = *reinterpret_cast< const uint8_t* >( cursor )*/
- ::memcpy(&word, cursor, sizeof(uint8_t));
- ++cursor;
-
- return word;
-}
-
-// ------------------------------------------------------------------------------------------------
-unsigned int ReadString(const char *&sbegin_out, const char *&send_out, const char *input,
- const char *&cursor, const char *end, bool long_length = false, bool allow_null = false) {
- const uint32_t len_len = long_length ? 4 : 1;
- if (Offset(cursor, end) < len_len) {
- TokenizeError("cannot ReadString, out of bounds reading length", input, cursor);
- }
-
- const uint32_t length = long_length ? ReadWord(input, cursor, end) : ReadByte(input, cursor, end);
-
- if (Offset(cursor, end) < length) {
- TokenizeError("cannot ReadString, length is out of bounds", input, cursor);
- }
-
- sbegin_out = cursor;
- cursor += length;
-
- send_out = cursor;
-
- if (!allow_null) {
- for (unsigned int i = 0; i < length; ++i) {
- if (sbegin_out[i] == '\0') {
- TokenizeError("failed ReadString, unexpected NUL character in string", input, cursor);
- }
- }
- }
-
- return length;
-}
-
-// ------------------------------------------------------------------------------------------------
-void ReadData(const char *&sbegin_out, const char *&send_out, const char *input, const char *&cursor, const char *end, bool &corrupt) {
- if (Offset(cursor, end) < 1) {
- TokenizeError("cannot ReadData, out of bounds reading length", input, cursor);
- corrupt = true;
- return;
- }
-
- const char type = *cursor;
- sbegin_out = cursor++;
-
- switch (type) {
- // 16 bit int
- case 'Y':
- cursor += 2;
- break;
-
- // 1 bit bool flag (yes/no)
- case 'C':
- cursor += 1;
- break;
-
- // 32 bit int
- case 'I':
- // <- fall through
-
- // float
- case 'F':
- cursor += 4;
- break;
-
- // double
- case 'D':
- cursor += 8;
- break;
-
- // 64 bit int
- case 'L':
- cursor += 8;
- break;
-
- // note: do not write cursor += ReadWord(...cursor) as this would be UB
-
- // raw binary data
- case 'R': {
- const uint32_t length = ReadWord(input, cursor, end);
- cursor += length;
- break;
- }
-
- case 'b':
- // TODO: what is the 'b' type code? Right now we just skip over it /
- // take the full range we could get
- cursor = end;
- break;
-
- // array of *
- case 'f':
- case 'd':
- case 'l':
- case 'i':
- case 'c': {
- const uint32_t length = ReadWord(input, cursor, end);
- const uint32_t encoding = ReadWord(input, cursor, end);
-
- const uint32_t comp_len = ReadWord(input, cursor, end);
-
- // compute length based on type and check against the stored value
- if (encoding == 0) {
- uint32_t stride = 0;
- switch (type) {
- case 'f':
- case 'i':
- stride = 4;
- break;
-
- case 'd':
- case 'l':
- stride = 8;
- break;
-
- case 'c':
- stride = 1;
- break;
-
- default:
- break;
- };
- //ai_assert(stride > 0);
- if (length * stride != comp_len) {
- TokenizeError("cannot ReadData, calculated data stride differs from what the file claims", input, cursor);
- }
- }
- // zip/deflate algorithm (encoding==1)? take given length. anything else? die
- else if (encoding != 1) {
- TokenizeError("cannot ReadData, unknown encoding", input, cursor);
- }
- cursor += comp_len;
- break;
- } // string
- case 'S': {
- const char *sb, *se;
- // 0 characters can legally happen in such strings
- ReadString(sb, se, input, cursor, end, true, true);
- break;
- }
- default:
- corrupt = true; // must exit
- TokenizeError("cannot ReadData, unexpected type code: " + std::string(&type, 1), input, cursor);
- return;
- }
-
- if (cursor > end) {
- corrupt = true; // must exit
- TokenizeError("cannot ReadData, the remaining size is too small for the data type: " + std::string(&type, 1), input, cursor);
- return;
- }
-
- // the type code is contained in the returned range
- send_out = cursor;
-}
-
-// ------------------------------------------------------------------------------------------------
-bool ReadScope(TokenList &output_tokens, const char *input, const char *&cursor, const char *end, bool const is64bits, bool &corrupt) {
- // the first word contains the offset at which this block ends
- const uint64_t end_offset = is64bits ? ReadDoubleWord(input, cursor, end) : ReadWord(input, cursor, end);
-
- // we may get 0 if reading reached the end of the file -
- // fbx files have a mysterious extra footer which I don't know
- // how to extract any information from, but at least it always
- // starts with a 0.
- if (!end_offset) {
- return false;
- }
-
- if (end_offset > Offset(input, end)) {
- TokenizeError("block offset is out of range", input, cursor);
- corrupt = true;
- return false;
- } else if (end_offset < Offset(input, cursor)) {
- TokenizeError("block offset is negative out of range", input, cursor);
- corrupt = true;
- return false;
- }
-
- // the second data word contains the number of properties in the scope
- const uint64_t prop_count = is64bits ? ReadDoubleWord(input, cursor, end) : ReadWord(input, cursor, end);
-
- // the third data word contains the length of the property list
- const uint64_t prop_length = is64bits ? ReadDoubleWord(input, cursor, end) : ReadWord(input, cursor, end);
-
- // now comes the name of the scope/key
- const char *sbeg = nullptr, *send = nullptr;
- ReadString(sbeg, send, input, cursor, end);
-
- output_tokens.push_back(new_Token(sbeg, send, TokenType_KEY, Offset(input, cursor)));
-
- // now come the individual properties
- const char *begin_cursor = cursor;
- for (unsigned int i = 0; i < prop_count; ++i) {
- ReadData(sbeg, send, input, cursor, begin_cursor + prop_length, corrupt);
- if (corrupt) {
- return false;
- }
-
- output_tokens.push_back(new_Token(sbeg, send, TokenType_DATA, Offset(input, cursor)));
-
- if (i != prop_count - 1) {
- output_tokens.push_back(new_Token(cursor, cursor + 1, TokenType_COMMA, Offset(input, cursor)));
- }
- }
-
- if (Offset(begin_cursor, cursor) != prop_length) {
- TokenizeError("property length not reached, something is wrong", input, cursor);
- corrupt = true;
- return false;
- }
-
- // at the end of each nested block, there is a NUL record to indicate
- // that the sub-scope exists (i.e. to distinguish between P: and P : {})
- // this NUL record is 13 bytes long on 32 bit version and 25 bytes long on 64 bit.
- const size_t sentinel_block_length = is64bits ? (sizeof(uint64_t) * 3 + 1) : (sizeof(uint32_t) * 3 + 1);
-
- if (Offset(input, cursor) < end_offset) {
- if (end_offset - Offset(input, cursor) < sentinel_block_length) {
- TokenizeError("insufficient padding bytes at block end", input, cursor);
- }
-
- output_tokens.push_back(new_Token(cursor, cursor + 1, TokenType_OPEN_BRACKET, Offset(input, cursor)));
-
- // XXX this is vulnerable to stack overflowing ..
- while (Offset(input, cursor) < end_offset - sentinel_block_length) {
- ReadScope(output_tokens, input, cursor, input + end_offset - sentinel_block_length, is64bits, corrupt);
- if (corrupt) {
- return false;
- }
- }
- output_tokens.push_back(new_Token(cursor, cursor + 1, TokenType_CLOSE_BRACKET, Offset(input, cursor)));
-
- for (unsigned int i = 0; i < sentinel_block_length; ++i) {
- if (cursor[i] != '\0') {
- TokenizeError("failed to read nested block sentinel, expected all bytes to be 0", input, cursor);
- corrupt = true;
- return false;
- }
- }
- cursor += sentinel_block_length;
- }
-
- if (Offset(input, cursor) != end_offset) {
- TokenizeError("scope length not reached, something is wrong", input, cursor);
- corrupt = true;
- return false;
- }
-
- return true;
-}
-} // anonymous namespace
-
-// ------------------------------------------------------------------------------------------------
-// TODO: Test FBX Binary files newer than the 7500 version to check if the 64 bits address behaviour is consistent
-void TokenizeBinary(TokenList &output_tokens, const char *input, size_t length, bool &corrupt) {
- if (length < 0x1b) {
- //TokenizeError("file is too short",0);
- }
-
- if (strncmp(input, "Kaydara FBX Binary", 18)) {
- TokenizeError("magic bytes not found", 0);
- }
-
- const char *cursor = input + 18;
- /*Result ignored*/ ReadByte(input, cursor, input + length);
- /*Result ignored*/ ReadByte(input, cursor, input + length);
- /*Result ignored*/ ReadByte(input, cursor, input + length);
- /*Result ignored*/ ReadByte(input, cursor, input + length);
- /*Result ignored*/ ReadByte(input, cursor, input + length);
- const uint32_t version = ReadWord(input, cursor, input + length);
- print_verbose("FBX Version: " + itos(version));
- //ASSIMP_LOG_DEBUG_F("FBX version: ", version);
- const bool is64bits = version >= 7500;
- const char *end = input + length;
- while (cursor < end) {
- if (!ReadScope(output_tokens, input, cursor, input + length, is64bits, corrupt)) {
- break;
- }
- }
-}
-} // namespace FBXDocParser
diff --git a/modules/fbx/fbx_parser/FBXCommon.h b/modules/fbx/fbx_parser/FBXCommon.h
deleted file mode 100644
index d0d4790ba8..0000000000
--- a/modules/fbx/fbx_parser/FBXCommon.h
+++ /dev/null
@@ -1,110 +0,0 @@
-/*************************************************************************/
-/* FBXCommon.h */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* https://godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2022 Juan Linietsky, Ariel Manzur. */
-/* Copyright (c) 2014-2022 Godot Engine contributors (cf. AUTHORS.md). */
-/* */
-/* Permission is hereby granted, free of charge, to any person obtaining */
-/* a copy of this software and associated documentation files (the */
-/* "Software"), to deal in the Software without restriction, including */
-/* without limitation the rights to use, copy, modify, merge, publish, */
-/* distribute, sublicense, and/or sell copies of the Software, and to */
-/* permit persons to whom the Software is furnished to do so, subject to */
-/* the following conditions: */
-/* */
-/* The above copyright notice and this permission notice shall be */
-/* included in all copies or substantial portions of the Software. */
-/* */
-/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
-/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
-/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
-/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
-/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
-/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
-/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
-/*************************************************************************/
-
-/*
-Open Asset Import Library (assimp)
-----------------------------------------------------------------------
-
-Copyright (c) 2006-2019, assimp team
-
-All rights reserved.
-
-Redistribution and use of this software in source and binary forms,
-with or without modification, are permitted provided that the
-following conditions are met:
-
-* Redistributions of source code must retain the above
-copyright notice, this list of conditions and the
-following disclaimer.
-
-* Redistributions in binary form must 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 the assimp team, nor the names of its
-contributors may be used to endorse or promote products
-derived from this software without specific prior
-written permission of the assimp team.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(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 FBXCommon.h
- * Some useful constants and enums for dealing with FBX files.
- */
-#ifndef FBX_COMMON_H
-#define FBX_COMMON_H
-
-#include <string>
-
-namespace FBXDocParser {
-const std::string NULL_RECORD = { // 13 null bytes
- '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0'
-}; // who knows why
-const std::string SEPARATOR = { '\x00', '\x01' }; // for use inside strings
-const std::string MAGIC_NODE_TAG = "_$AssimpFbx$"; // from import
-const int64_t SECOND = 46186158000; // FBX's kTime unit
-
-// rotation order. We'll probably use EulerXYZ for everything
-enum RotOrder {
- RotOrder_EulerXYZ = 0,
- RotOrder_EulerXZY,
- RotOrder_EulerYZX,
- RotOrder_EulerYXZ,
- RotOrder_EulerZXY,
- RotOrder_EulerZYX,
-
- RotOrder_SphericXYZ,
-
- RotOrder_MAX // end-of-enum sentinel
-};
-
-enum TransformInheritance {
- Transform_RrSs = 0,
- Transform_RSrs = 1,
- Transform_Rrs = 2,
- TransformInheritance_MAX // end-of-enum sentinel
-};
-} // namespace FBXDocParser
-
-#endif // FBX_COMMON_H
diff --git a/modules/fbx/fbx_parser/FBXDeformer.cpp b/modules/fbx/fbx_parser/FBXDeformer.cpp
deleted file mode 100644
index a2b216ab09..0000000000
--- a/modules/fbx/fbx_parser/FBXDeformer.cpp
+++ /dev/null
@@ -1,271 +0,0 @@
-/*************************************************************************/
-/* FBXDeformer.cpp */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* https://godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2022 Juan Linietsky, Ariel Manzur. */
-/* Copyright (c) 2014-2022 Godot Engine contributors (cf. AUTHORS.md). */
-/* */
-/* Permission is hereby granted, free of charge, to any person obtaining */
-/* a copy of this software and associated documentation files (the */
-/* "Software"), to deal in the Software without restriction, including */
-/* without limitation the rights to use, copy, modify, merge, publish, */
-/* distribute, sublicense, and/or sell copies of the Software, and to */
-/* permit persons to whom the Software is furnished to do so, subject to */
-/* the following conditions: */
-/* */
-/* The above copyright notice and this permission notice shall be */
-/* included in all copies or substantial portions of the Software. */
-/* */
-/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
-/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
-/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
-/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
-/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
-/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
-/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
-/*************************************************************************/
-
-/*
-Open Asset Import Library (assimp)
-----------------------------------------------------------------------
-
-Copyright (c) 2006-2019, assimp team
-
-All rights reserved.
-
-Redistribution and use of this software in source and binary forms,
-with or without modification, are permitted provided that the
-following conditions are met:
-
-* Redistributions of source code must retain the above
- copyright notice, this list of conditions and the
- following disclaimer.
-
-* Redistributions in binary form must 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 the assimp team, nor the names of its
- contributors may be used to endorse or promote products
- derived from this software without specific prior
- written permission of the assimp team.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(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 FBXNoteAttribute.cpp
- * @brief Assimp::FBX::NodeAttribute (and subclasses) implementation
- */
-
-#include "FBXDocument.h"
-#include "FBXDocumentUtil.h"
-#include "FBXMeshGeometry.h"
-#include "FBXParser.h"
-#include "core/math/math_funcs.h"
-#include "core/math/transform_3d.h"
-
-#include <iostream>
-
-namespace FBXDocParser {
-
-using namespace Util;
-
-// ------------------------------------------------------------------------------------------------
-Deformer::Deformer(uint64_t id, const ElementPtr element, const Document &doc, const std::string &name) :
- Object(id, element, name) {
-}
-
-// ------------------------------------------------------------------------------------------------
-Deformer::~Deformer() {
-}
-
-Constraint::Constraint(uint64_t id, const ElementPtr element, const Document &doc, const std::string &name) :
- Object(id, element, name) {
-}
-
-Constraint::~Constraint() {
-}
-
-// ------------------------------------------------------------------------------------------------
-Cluster::Cluster(uint64_t id, const ElementPtr element, const Document &doc, const std::string &name) :
- Deformer(id, element, doc, name) {
- const ScopePtr sc = GetRequiredScope(element);
- // for( auto element : sc.Elements())
- // {
- // std::cout << "cluster element: " << element.first << std::endl;
- // }
- //
- // element: Indexes
- // element: Transform
- // element: TransformAssociateModel
- // element: TransformLink
- // element: UserData
- // element: Version
- // element: Weights
-
- const ElementPtr Indexes = sc->GetElement("Indexes");
- const ElementPtr Weights = sc->GetElement("Weights");
-
- const ElementPtr TransformAssociateModel = sc->GetElement("TransformAssociateModel");
- if (TransformAssociateModel != nullptr) {
- //Transform t = ReadMatrix(*TransformAssociateModel);
- link_mode = SkinLinkMode_Additive;
- valid_transformAssociateModel = true;
- } else {
- link_mode = SkinLinkMode_Normalized;
- valid_transformAssociateModel = false;
- }
-
- const ElementPtr Transform = GetRequiredElement(sc, "Transform", element);
- const ElementPtr TransformLink = GetRequiredElement(sc, "TransformLink", element);
-
- // todo: check if we need this
- //const Element& TransformAssociateModel = GetRequiredElement(sc, "TransformAssociateModel", &element);
-
- transform = ReadMatrix(Transform);
- transformLink = ReadMatrix(TransformLink);
-
- // it is actually possible that there be Deformer's with no weights
- if (!!Indexes != !!Weights) {
- DOMError("either Indexes or Weights are missing from Cluster", element);
- }
-
- if (Indexes) {
- ParseVectorDataArray(indices, Indexes);
- ParseVectorDataArray(weights, Weights);
- }
-
- if (indices.size() != weights.size()) {
- DOMError("sizes of index and weight array don't match up", element);
- }
-
- // read assigned node
- const std::vector<const Connection *> &conns = doc.GetConnectionsByDestinationSequenced(ID(), "Model");
- for (const Connection *con : conns) {
- const Model *mod = ProcessSimpleConnection<Model>(*con, false, "Model -> Cluster", element);
- if (mod) {
- node = mod;
- break;
- }
- }
-
- if (!node) {
- DOMError("failed to read target Node for Cluster", element);
- node = nullptr;
- }
-}
-
-// ------------------------------------------------------------------------------------------------
-Cluster::~Cluster() {
-}
-
-// ------------------------------------------------------------------------------------------------
-Skin::Skin(uint64_t id, const ElementPtr element, const Document &doc, const std::string &name) :
- Deformer(id, element, doc, name) {
- const ScopePtr sc = GetRequiredScope(element);
-
- // keep this it is used for debugging and any FBX format changes
- // for (auto element : sc.Elements()) {
- // std::cout << "skin element: " << element.first << std::endl;
- // }
-
- const ElementPtr Link_DeformAcuracy = sc->GetElement("Link_DeformAcuracy");
- if (Link_DeformAcuracy) {
- accuracy = ParseTokenAsFloat(GetRequiredToken(Link_DeformAcuracy, 0));
- }
-
- const ElementPtr SkinType = sc->GetElement("SkinningType");
-
- if (SkinType) {
- std::string skin_type = ParseTokenAsString(GetRequiredToken(SkinType, 0));
-
- if (skin_type == "Linear") {
- skinType = Skin_Linear;
- } else if (skin_type == "Rigid") {
- skinType = Skin_Rigid;
- } else if (skin_type == "DualQuaternion") {
- skinType = Skin_DualQuaternion;
- } else if (skin_type == "Blend") {
- skinType = Skin_Blend;
- } else {
- print_error("[doc:skin] could not find valid skin type: " + String(skin_type.c_str()));
- }
- }
-
- // resolve assigned clusters
- const std::vector<const Connection *> &conns = doc.GetConnectionsByDestinationSequenced(ID(), "Deformer");
-
- //
-
- clusters.reserve(conns.size());
- for (const Connection *con : conns) {
- const Cluster *cluster = ProcessSimpleConnection<Cluster>(*con, false, "Cluster -> Skin", element);
- if (cluster) {
- clusters.push_back(cluster);
- continue;
- }
- }
-}
-
-// ------------------------------------------------------------------------------------------------
-Skin::~Skin() {
-}
-// ------------------------------------------------------------------------------------------------
-BlendShape::BlendShape(uint64_t id, const ElementPtr element, const Document &doc, const std::string &name) :
- Deformer(id, element, doc, name) {
- const std::vector<const Connection *> &conns = doc.GetConnectionsByDestinationSequenced(ID(), "Deformer");
- blendShapeChannels.reserve(conns.size());
- for (const Connection *con : conns) {
- const BlendShapeChannel *bspc = ProcessSimpleConnection<BlendShapeChannel>(*con, false, "BlendShapeChannel -> BlendShape", element);
- if (bspc) {
- blendShapeChannels.push_back(bspc);
- continue;
- }
- }
-}
-// ------------------------------------------------------------------------------------------------
-BlendShape::~BlendShape() {
-}
-// ------------------------------------------------------------------------------------------------
-BlendShapeChannel::BlendShapeChannel(uint64_t id, const ElementPtr element, const Document &doc, const std::string &name) :
- Deformer(id, element, doc, name) {
- const ScopePtr sc = GetRequiredScope(element);
- const ElementPtr DeformPercent = sc->GetElement("DeformPercent");
- if (DeformPercent) {
- percent = ParseTokenAsFloat(GetRequiredToken(DeformPercent, 0));
- }
- const ElementPtr FullWeights = sc->GetElement("FullWeights");
- if (FullWeights) {
- ParseVectorDataArray(fullWeights, FullWeights);
- }
- const std::vector<const Connection *> &conns = doc.GetConnectionsByDestinationSequenced(ID(), "Geometry");
- shapeGeometries.reserve(conns.size());
- for (const Connection *con : conns) {
- const ShapeGeometry *const sg = ProcessSimpleConnection<ShapeGeometry>(*con, false, "Shape -> BlendShapeChannel", element);
- if (sg) {
- shapeGeometries.push_back(sg);
- continue;
- }
- }
-}
-// ------------------------------------------------------------------------------------------------
-BlendShapeChannel::~BlendShapeChannel() {
-}
-// ------------------------------------------------------------------------------------------------
-} // namespace FBXDocParser
diff --git a/modules/fbx/fbx_parser/FBXDocument.cpp b/modules/fbx/fbx_parser/FBXDocument.cpp
deleted file mode 100644
index 929272c972..0000000000
--- a/modules/fbx/fbx_parser/FBXDocument.cpp
+++ /dev/null
@@ -1,636 +0,0 @@
-/*************************************************************************/
-/* FBXDocument.cpp */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* https://godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2022 Juan Linietsky, Ariel Manzur. */
-/* Copyright (c) 2014-2022 Godot Engine contributors (cf. AUTHORS.md). */
-/* */
-/* Permission is hereby granted, free of charge, to any person obtaining */
-/* a copy of this software and associated documentation files (the */
-/* "Software"), to deal in the Software without restriction, including */
-/* without limitation the rights to use, copy, modify, merge, publish, */
-/* distribute, sublicense, and/or sell copies of the Software, and to */
-/* permit persons to whom the Software is furnished to do so, subject to */
-/* the following conditions: */
-/* */
-/* The above copyright notice and this permission notice shall be */
-/* included in all copies or substantial portions of the Software. */
-/* */
-/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
-/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
-/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
-/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
-/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
-/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
-/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
-/*************************************************************************/
-
-/*
-Open Asset Import Library (assimp)
-----------------------------------------------------------------------
-
-Copyright (c) 2006-2019, assimp team
-
-All rights reserved.
-
-Redistribution and use of this software in source and binary forms,
-with or without modification, are permitted provided that the
-following conditions are met:
-
-* Redistributions of source code must retain the above
- copyright notice, this list of conditions and the
- following disclaimer.
-
-* Redistributions in binary form must 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 the assimp team, nor the names of its
- contributors may be used to endorse or promote products
- derived from this software without specific prior
- written permission of the assimp team.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(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 FBXDocument.cpp
- * @brief Implementation of the FBX DOM classes
- */
-
-#include "FBXDocument.h"
-#include "FBXDocumentUtil.h"
-#include "FBXImportSettings.h"
-#include "FBXMeshGeometry.h"
-#include "FBXParser.h"
-#include "FBXProperties.h"
-#include "FBXUtil.h"
-
-#include <algorithm>
-#include <functional>
-#include <iostream>
-#include <map>
-#include <memory>
-
-namespace FBXDocParser {
-
-using namespace Util;
-
-// ------------------------------------------------------------------------------------------------
-LazyObject::LazyObject(uint64_t id, const ElementPtr element, const Document &doc) :
- doc(doc), element(element), id(id) {
- // empty
-}
-
-// ------------------------------------------------------------------------------------------------
-LazyObject::~LazyObject() {
- object.reset();
-}
-
-ObjectPtr LazyObject::LoadObject() {
- if (IsBeingConstructed() || FailedToConstruct()) {
- return nullptr;
- }
-
- if (object) {
- return object.get();
- }
-
- TokenPtr key = element->KeyToken();
- ERR_FAIL_COND_V(!key, nullptr);
- const TokenList &tokens = element->Tokens();
-
- if (tokens.size() < 3) {
- //DOMError("expected at least 3 tokens: id, name and class tag",&element);
- return nullptr;
- }
-
- const char *err = nullptr;
- std::string name = ParseTokenAsString(tokens[1], err);
- if (err) {
- DOMError(err, element);
- }
-
- // small fix for binary reading: binary fbx files don't use
- // prefixes such as Model:: in front of their names. The
- // loading code expects this at many places, though!
- // so convert the binary representation (a 0x0001) to the
- // double colon notation.
- if (tokens[1]->IsBinary()) {
- for (size_t i = 0; i < name.length(); ++i) {
- if (name[i] == 0x0 && name[i + 1] == 0x1) {
- name = name.substr(i + 2) + "::" + name.substr(0, i);
- }
- }
- }
-
- const std::string classtag = ParseTokenAsString(tokens[2], err);
- if (err) {
- DOMError(err, element);
- }
-
- // prevent recursive calls
- flags |= BEING_CONSTRUCTED;
-
- // this needs to be relatively fast since it happens a lot,
- // so avoid constructing strings all the time.
- const char *obtype = key->begin();
- const size_t length = static_cast<size_t>(key->end() - key->begin());
-
- if (!strncmp(obtype, "Pose", length)) {
- object.reset(new FbxPose(id, element, doc, name));
- } else if (!strncmp(obtype, "Geometry", length)) {
- if (!strcmp(classtag.c_str(), "Mesh")) {
- object.reset(new MeshGeometry(id, element, name, doc));
- }
- if (!strcmp(classtag.c_str(), "Shape")) {
- object.reset(new ShapeGeometry(id, element, name, doc));
- }
- if (!strcmp(classtag.c_str(), "Line")) {
- object.reset(new LineGeometry(id, element, name, doc));
- }
- } else if (!strncmp(obtype, "NodeAttribute", length)) {
- if (!strcmp(classtag.c_str(), "Camera")) {
- object.reset(new Camera(id, element, doc, name));
- } else if (!strcmp(classtag.c_str(), "CameraSwitcher")) {
- object.reset(new CameraSwitcher(id, element, doc, name));
- } else if (!strcmp(classtag.c_str(), "Light")) {
- object.reset(new Light(id, element, doc, name));
- } else if (!strcmp(classtag.c_str(), "Null")) {
- object.reset(new Null(id, element, doc, name));
- } else if (!strcmp(classtag.c_str(), "LimbNode")) {
- // This is an older format for bones
- // this is what blender uses I believe
- object.reset(new LimbNode(id, element, doc, name));
- }
- } else if (!strncmp(obtype, "Constraint", length)) {
- object.reset(new Constraint(id, element, doc, name));
- } else if (!strncmp(obtype, "Deformer", length)) {
- if (!strcmp(classtag.c_str(), "Cluster")) {
- object.reset(new Cluster(id, element, doc, name));
- } else if (!strcmp(classtag.c_str(), "Skin")) {
- object.reset(new Skin(id, element, doc, name));
- } else if (!strcmp(classtag.c_str(), "BlendShape")) {
- object.reset(new BlendShape(id, element, doc, name));
- } else if (!strcmp(classtag.c_str(), "BlendShapeChannel")) {
- object.reset(new BlendShapeChannel(id, element, doc, name));
- }
- } else if (!strncmp(obtype, "Model", length)) {
- // Model is normal node
-
- // LimbNode model is a 'bone' node.
- if (!strcmp(classtag.c_str(), "LimbNode")) {
- object.reset(new ModelLimbNode(id, element, doc, name));
-
- } else if (strcmp(classtag.c_str(), "IKEffector") && strcmp(classtag.c_str(), "FKEffector")) {
- // FK and IK effectors are not supported.
- object.reset(new Model(id, element, doc, name));
- }
- } else if (!strncmp(obtype, "Material", length)) {
- object.reset(new Material(id, element, doc, name));
- } else if (!strncmp(obtype, "Texture", length)) {
- object.reset(new Texture(id, element, doc, name));
- } else if (!strncmp(obtype, "LayeredTexture", length)) {
- object.reset(new LayeredTexture(id, element, doc, name));
- } else if (!strncmp(obtype, "Video", length)) {
- object.reset(new Video(id, element, doc, name));
- } else if (!strncmp(obtype, "AnimationStack", length)) {
- object.reset(new AnimationStack(id, element, name, doc));
- } else if (!strncmp(obtype, "AnimationLayer", length)) {
- object.reset(new AnimationLayer(id, element, name, doc));
- } else if (!strncmp(obtype, "AnimationCurve", length)) {
- object.reset(new AnimationCurve(id, element, name, doc));
- } else if (!strncmp(obtype, "AnimationCurveNode", length)) {
- object.reset(new AnimationCurveNode(id, element, name, doc));
- } else {
- ERR_FAIL_V_MSG(nullptr, "FBX contains unsupported object: " + String(obtype));
- }
-
- flags &= ~BEING_CONSTRUCTED;
-
- return object.get();
-}
-
-// ------------------------------------------------------------------------------------------------
-Object::Object(uint64_t id, const ElementPtr element, const std::string &name) :
- PropertyTable(element), element(element), name(name), id(id) {
-}
-
-// ------------------------------------------------------------------------------------------------
-Object::~Object() {
- // empty
-}
-
-// ------------------------------------------------------------------------------------------------
-FileGlobalSettings::FileGlobalSettings(const Document &doc) :
- PropertyTable(), doc(doc) {
- // empty
-}
-
-// ------------------------------------------------------------------------------------------------
-FileGlobalSettings::~FileGlobalSettings() {
-}
-
-// ------------------------------------------------------------------------------------------------
-Document::Document(const Parser &parser, const ImportSettings &settings) :
- settings(settings), parser(parser) {
- // Cannot use array default initialization syntax because vc8 fails on it
- for (unsigned int &timeStamp : creationTimeStamp) {
- timeStamp = 0;
- }
-
- // we must check if we can read the header version safely, if its outdated then drop it.
- if (ReadHeader()) {
- SafeToImport = true;
- ReadPropertyTemplates();
-
- ReadGlobalSettings();
-
- // This order is important, connections need parsed objects to check
- // whether connections are ok or not. Objects may not be evaluated yet,
- // though, since this may require valid connections.
- ReadObjects();
- ReadConnections();
- }
-}
-
-// ------------------------------------------------------------------------------------------------
-Document::~Document() {
- for (PropertyTemplateMap::value_type v : templates) {
- delete v.second;
- }
-
- for (ObjectMap::value_type &v : objects) {
- delete v.second;
- }
-
- for (ConnectionMap::value_type &v : src_connections) {
- delete v.second;
- }
-
- // clear globals import pointer
- globals.reset();
-}
-
-// ------------------------------------------------------------------------------------------------
-static const unsigned int LowerSupportedVersion = 7100;
-static const unsigned int UpperSupportedVersion = 7700;
-
-bool Document::ReadHeader() {
- // Read ID objects from "Objects" section
- ScopePtr sc = parser.GetRootScope();
- ElementPtr ehead = sc->GetElement("FBXHeaderExtension");
- if (!ehead || !ehead->Compound()) {
- DOMError("no FBXHeaderExtension dictionary found");
- }
-
- if (parser.IsCorrupt()) {
- DOMError("File is corrupt");
- return false;
- }
-
- const ScopePtr shead = ehead->Compound();
- fbxVersion = ParseTokenAsInt(GetRequiredToken(GetRequiredElement(shead, "FBXVersion", ehead), 0));
-
- // While we may have some success with newer files, we don't support
- // the older 6.n fbx format
- if (fbxVersion < LowerSupportedVersion) {
- DOMWarning("unsupported, old format version, FBX 2015-2020, you must re-export in a more modern version of your original modelling application");
- return false;
- }
- if (fbxVersion > UpperSupportedVersion) {
- DOMWarning("unsupported, newer format version, supported are only FBX 2015, up to FBX 2020"
- " trying to read it nevertheless");
- }
-
- const ElementPtr ecreator = shead->GetElement("Creator");
- if (ecreator) {
- creator = ParseTokenAsString(GetRequiredToken(ecreator, 0));
- }
-
- // Scene Info
- const ElementPtr scene_info = shead->GetElement("SceneInfo");
-
- if (scene_info) {
- metadata_properties.Setup(scene_info);
- }
-
- const ElementPtr etimestamp = shead->GetElement("CreationTimeStamp");
- if (etimestamp && etimestamp->Compound()) {
- const ScopePtr stimestamp = etimestamp->Compound();
- creationTimeStamp[0] = ParseTokenAsInt(GetRequiredToken(GetRequiredElement(stimestamp, "Year"), 0));
- creationTimeStamp[1] = ParseTokenAsInt(GetRequiredToken(GetRequiredElement(stimestamp, "Month"), 0));
- creationTimeStamp[2] = ParseTokenAsInt(GetRequiredToken(GetRequiredElement(stimestamp, "Day"), 0));
- creationTimeStamp[3] = ParseTokenAsInt(GetRequiredToken(GetRequiredElement(stimestamp, "Hour"), 0));
- creationTimeStamp[4] = ParseTokenAsInt(GetRequiredToken(GetRequiredElement(stimestamp, "Minute"), 0));
- creationTimeStamp[5] = ParseTokenAsInt(GetRequiredToken(GetRequiredElement(stimestamp, "Second"), 0));
- creationTimeStamp[6] = ParseTokenAsInt(GetRequiredToken(GetRequiredElement(stimestamp, "Millisecond"), 0));
- }
-
- return true;
-}
-
-// ------------------------------------------------------------------------------------------------
-void Document::ReadGlobalSettings() {
- ERR_FAIL_COND_MSG(globals != nullptr, "Global settings is already setup this is a serious error and should be reported");
-
- globals = std::make_shared<FileGlobalSettings>(*this);
-}
-
-// ------------------------------------------------------------------------------------------------
-void Document::ReadObjects() {
- // read ID objects from "Objects" section
- const ScopePtr sc = parser.GetRootScope();
- const ElementPtr eobjects = sc->GetElement("Objects");
- if (!eobjects || !eobjects->Compound()) {
- DOMError("no Objects dictionary found");
- }
-
- // add a dummy entry to represent the Model::RootNode object (id 0),
- // which is only indirectly defined in the input file
- objects[0] = new LazyObject(0L, eobjects, *this);
-
- const ScopePtr sobjects = eobjects->Compound();
- for (const ElementMap::value_type &iter : sobjects->Elements()) {
- // extract ID
- const TokenList &tok = iter.second->Tokens();
-
- if (tok.empty()) {
- DOMError("expected ID after object key", iter.second);
- }
-
- const char *err;
- const uint64_t id = ParseTokenAsID(tok[0], err);
- if (err) {
- DOMError(err, iter.second);
- }
-
- // id=0 is normally implicit
- if (id == 0L) {
- DOMError("encountered object with implicitly defined id 0", iter.second);
- }
-
- if (objects.find(id) != objects.end()) {
- DOMWarning("encountered duplicate object id, ignoring first occurrence", iter.second);
- }
-
- objects[id] = new LazyObject(id, iter.second, *this);
-
- // grab all animation stacks upfront since there is no listing of them
- if (!strcmp(iter.first.c_str(), "AnimationStack")) {
- animationStacks.push_back(id);
- } else if (!strcmp(iter.first.c_str(), "Constraint")) {
- constraints.push_back(id);
- } else if (!strcmp(iter.first.c_str(), "Pose")) {
- bind_poses.push_back(id);
- } else if (!strcmp(iter.first.c_str(), "Material")) {
- materials.push_back(id);
- } else if (!strcmp(iter.first.c_str(), "Deformer")) {
- TokenPtr key = iter.second->KeyToken();
- ERR_CONTINUE_MSG(!key, "[parser bug] invalid token key for deformer");
- const TokenList &tokens = iter.second->Tokens();
- const std::string class_tag = ParseTokenAsString(tokens[2], err);
-
- if (err) {
- DOMError(err, iter.second);
- }
-
- if (class_tag == "Skin") {
- //print_verbose("registered skin:" + itos(id));
- skins.push_back(id);
- }
- }
- }
-}
-
-// ------------------------------------------------------------------------------------------------
-void Document::ReadPropertyTemplates() {
-}
-
-// ------------------------------------------------------------------------------------------------
-void Document::ReadConnections() {
- const ScopePtr sc = parser.GetRootScope();
-
- // read property templates from "Definitions" section
- const ElementPtr econns = sc->GetElement("Connections");
- if (!econns || !econns->Compound()) {
- DOMError("no Connections dictionary found");
- }
-
- uint64_t insertionOrder = 0l;
- const ScopePtr sconns = econns->Compound();
- const ElementCollection conns = sconns->GetCollection("C");
- for (ElementMap::const_iterator it = conns.first; it != conns.second; ++it) {
- const ElementPtr el = (*it).second;
- const std::string &type = ParseTokenAsString(GetRequiredToken(el, 0));
-
- // PP = property-property connection, ignored for now
- // (tokens: "PP", ID1, "Property1", ID2, "Property2")
- if (type == "PP") {
- continue;
- }
-
- const uint64_t src = ParseTokenAsID(GetRequiredToken(el, 1));
- const uint64_t dest = ParseTokenAsID(GetRequiredToken(el, 2));
-
- // OO = object-object connection
- // OP = object-property connection, in which case the destination property follows the object ID
- const std::string &prop = (type == "OP" ? ParseTokenAsString(GetRequiredToken(el, 3)) : "");
-
- if (objects.find(src) == objects.end()) {
- DOMWarning("source object for connection does not exist", el);
- continue;
- }
-
- // dest may be 0 (root node) but we added a dummy object before
- if (objects.find(dest) == objects.end()) {
- DOMWarning("destination object for connection does not exist", el);
- continue;
- }
-
- // add new connection
- const Connection *const c = new Connection(insertionOrder++, src, dest, prop, *this);
- src_connections.insert(ConnectionMap::value_type(src, c));
- dest_connections.insert(ConnectionMap::value_type(dest, c));
- }
-}
-
-// ------------------------------------------------------------------------------------------------
-const std::vector<const AnimationStack *> &Document::AnimationStacks() const {
- if (!animationStacksResolved.empty() || animationStacks.empty()) {
- return animationStacksResolved;
- }
-
- animationStacksResolved.reserve(animationStacks.size());
- for (uint64_t id : animationStacks) {
- LazyObject *lazy = GetObject(id);
-
- // Two things happen here:
- // We cast internally an Object PTR to an Animation Stack PTR
- // We return invalid weak_ptrs for objects which are invalid
-
- const AnimationStack *stack = lazy->Get<AnimationStack>();
- ERR_CONTINUE_MSG(!stack, "invalid ptr to AnimationStack - conversion failure");
-
- // We push back the weak reference :) to keep things simple, as ownership is on the parser side so it won't be cleaned up.
- animationStacksResolved.push_back(stack);
- }
-
- return animationStacksResolved;
-}
-
-// ------------------------------------------------------------------------------------------------
-LazyObject *Document::GetObject(uint64_t id) const {
- ObjectMap::const_iterator it = objects.find(id);
- return it == objects.end() ? nullptr : (*it).second;
-}
-
-#define MAX_CLASSNAMES 6
-
-// ------------------------------------------------------------------------------------------------
-std::vector<const Connection *> Document::GetConnectionsSequenced(uint64_t id, const ConnectionMap &conns) const {
- std::vector<const Connection *> temp;
-
- const std::pair<ConnectionMap::const_iterator, ConnectionMap::const_iterator> range =
- conns.equal_range(id);
-
- temp.reserve(std::distance(range.first, range.second));
- for (ConnectionMap::const_iterator it = range.first; it != range.second; ++it) {
- temp.push_back((*it).second);
- }
-
- std::sort(temp.begin(), temp.end(), std::mem_fn(&Connection::Compare));
-
- return temp; // NRVO should handle this
-}
-
-// ------------------------------------------------------------------------------------------------
-std::vector<const Connection *> Document::GetConnectionsSequenced(uint64_t id, bool is_src,
- const ConnectionMap &conns,
- const char *const *classnames,
- size_t count) const
-
-{
- size_t lengths[MAX_CLASSNAMES];
-
- const size_t c = count;
- for (size_t i = 0; i < c; ++i) {
- lengths[i] = strlen(classnames[i]);
- }
-
- std::vector<const Connection *> temp;
- const std::pair<ConnectionMap::const_iterator, ConnectionMap::const_iterator> range =
- conns.equal_range(id);
-
- temp.reserve(std::distance(range.first, range.second));
- for (ConnectionMap::const_iterator it = range.first; it != range.second; ++it) {
- TokenPtr key = (is_src ? (*it).second->LazyDestinationObject() : (*it).second->LazySourceObject())->GetElement()->KeyToken();
-
- const char *obtype = key->begin();
-
- for (size_t i = 0; i < c; ++i) {
- //ai_assert(classnames[i]);
- if (static_cast<size_t>(std::distance(key->begin(), key->end())) == lengths[i] && !strncmp(classnames[i], obtype, lengths[i])) {
- obtype = nullptr;
- break;
- }
- }
-
- if (obtype) {
- continue;
- }
-
- temp.push_back((*it).second);
- }
-
- std::sort(temp.begin(), temp.end(), std::mem_fn(&Connection::Compare));
- return temp; // NRVO should handle this
-}
-
-// ------------------------------------------------------------------------------------------------
-std::vector<const Connection *> Document::GetConnectionsBySourceSequenced(uint64_t source) const {
- return GetConnectionsSequenced(source, ConnectionsBySource());
-}
-
-// ------------------------------------------------------------------------------------------------
-std::vector<const Connection *> Document::GetConnectionsBySourceSequenced(uint64_t src, const char *classname) const {
- const char *arr[] = { classname };
- return GetConnectionsBySourceSequenced(src, arr, 1);
-}
-
-// ------------------------------------------------------------------------------------------------
-std::vector<const Connection *> Document::GetConnectionsBySourceSequenced(uint64_t source,
- const char *const *classnames, size_t count) const {
- return GetConnectionsSequenced(source, true, ConnectionsBySource(), classnames, count);
-}
-
-// ------------------------------------------------------------------------------------------------
-std::vector<const Connection *> Document::GetConnectionsByDestinationSequenced(uint64_t dest,
- const char *classname) const {
- const char *arr[] = { classname };
- return GetConnectionsByDestinationSequenced(dest, arr, 1);
-}
-
-// ------------------------------------------------------------------------------------------------
-std::vector<const Connection *> Document::GetConnectionsByDestinationSequenced(uint64_t dest) const {
- return GetConnectionsSequenced(dest, ConnectionsByDestination());
-}
-
-// ------------------------------------------------------------------------------------------------
-std::vector<const Connection *> Document::GetConnectionsByDestinationSequenced(uint64_t dest,
- const char *const *classnames, size_t count) const {
- return GetConnectionsSequenced(dest, false, ConnectionsByDestination(), classnames, count);
-}
-
-// ------------------------------------------------------------------------------------------------
-Connection::Connection(uint64_t insertionOrder, uint64_t src, uint64_t dest, const std::string &prop,
- const Document &doc) :
- insertionOrder(insertionOrder), prop(prop), src(src), dest(dest), doc(doc) {
-}
-
-// ------------------------------------------------------------------------------------------------
-Connection::~Connection() {
- // empty
-}
-
-// ------------------------------------------------------------------------------------------------
-LazyObject *Connection::LazySourceObject() const {
- LazyObject *const lazy = doc.GetObject(src);
- return lazy;
-}
-
-// ------------------------------------------------------------------------------------------------
-LazyObject *Connection::LazyDestinationObject() const {
- LazyObject *const lazy = doc.GetObject(dest);
- return lazy;
-}
-
-// ------------------------------------------------------------------------------------------------
-Object *Connection::SourceObject() const {
- LazyObject *lazy = doc.GetObject(src);
- //ai_assert(lazy);
- return lazy->LoadObject();
-}
-
-// ------------------------------------------------------------------------------------------------
-Object *Connection::DestinationObject() const {
- LazyObject *lazy = doc.GetObject(dest);
- //ai_assert(lazy);
- return lazy->LoadObject();
-}
-} // namespace FBXDocParser
diff --git a/modules/fbx/fbx_parser/FBXDocument.h b/modules/fbx/fbx_parser/FBXDocument.h
deleted file mode 100644
index 5bf280a1dc..0000000000
--- a/modules/fbx/fbx_parser/FBXDocument.h
+++ /dev/null
@@ -1,1252 +0,0 @@
-/*************************************************************************/
-/* FBXDocument.h */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* https://godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2022 Juan Linietsky, Ariel Manzur. */
-/* Copyright (c) 2014-2022 Godot Engine contributors (cf. AUTHORS.md). */
-/* */
-/* Permission is hereby granted, free of charge, to any person obtaining */
-/* a copy of this software and associated documentation files (the */
-/* "Software"), to deal in the Software without restriction, including */
-/* without limitation the rights to use, copy, modify, merge, publish, */
-/* distribute, sublicense, and/or sell copies of the Software, and to */
-/* permit persons to whom the Software is furnished to do so, subject to */
-/* the following conditions: */
-/* */
-/* The above copyright notice and this permission notice shall be */
-/* included in all copies or substantial portions of the Software. */
-/* */
-/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
-/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
-/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
-/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
-/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
-/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
-/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
-/*************************************************************************/
-
-/** @file FBXDocument.h
- * @brief FBX DOM
- */
-#ifndef FBX_DOCUMENT_H
-#define FBX_DOCUMENT_H
-
-#include "FBXCommon.h"
-#include "FBXParser.h"
-#include "FBXProperties.h"
-#include "core/math/transform_3d.h"
-#include "core/math/vector2.h"
-#include "core/math/vector3.h"
-#include "core/string/print_string.h"
-#include <stdint.h>
-#include <numeric>
-
-#define _AI_CONCAT(a, b) a##b
-#define AI_CONCAT(a, b) _AI_CONCAT(a, b)
-
-namespace FBXDocParser {
-
-class Parser;
-class Object;
-struct ImportSettings;
-class Connection;
-
-class PropertyTable;
-class Document;
-class Material;
-class ShapeGeometry;
-class LineGeometry;
-class Geometry;
-
-class Video;
-
-class AnimationCurve;
-class AnimationCurveNode;
-class AnimationLayer;
-class AnimationStack;
-
-class BlendShapeChannel;
-class BlendShape;
-class Skin;
-class Cluster;
-
-typedef Object *ObjectPtr;
-#define new_Object new Object
-
-/** Represents a delay-parsed FBX objects. Many objects in the scene
- * are not needed by assimp, so it makes no sense to parse them
- * upfront. */
-class LazyObject {
-public:
- LazyObject(uint64_t id, const ElementPtr element, const Document &doc);
- ~LazyObject();
-
- ObjectPtr LoadObject();
-
- /* Casting weak pointers to their templated type safely and preserving ref counting and safety
- * with lock() keyword to prevent leaking memory
- */
- template <typename T>
- const T *Get() {
- ObjectPtr ob = LoadObject();
- return dynamic_cast<const T *>(ob);
- }
-
- uint64_t ID() const {
- return id;
- }
-
- bool IsBeingConstructed() const {
- return (flags & BEING_CONSTRUCTED) != 0;
- }
-
- bool FailedToConstruct() const {
- return (flags & FAILED_TO_CONSTRUCT) != 0;
- }
-
- ElementPtr GetElement() const {
- return element;
- }
-
- const Document &GetDocument() const {
- return doc;
- }
-
-private:
- const Document &doc;
- ElementPtr element = nullptr;
- std::shared_ptr<Object> object = nullptr;
- const uint64_t id = 0;
-
- enum Flags {
- BEING_CONSTRUCTED = 0x1,
- FAILED_TO_CONSTRUCT = 0x2
- };
-
- unsigned int flags = 0;
-};
-
-/** Base class for in-memory (DOM) representations of FBX objects */
-class Object : public PropertyTable {
-public:
- Object(uint64_t id, const ElementPtr element, const std::string &name);
-
- virtual ~Object();
-
- ElementPtr SourceElement() const {
- return element;
- }
-
- const std::string &Name() const {
- return name;
- }
-
- uint64_t ID() const {
- return id;
- }
-
-protected:
- const ElementPtr element = nullptr;
- const std::string name;
- const uint64_t id;
-};
-
-/** DOM class for generic FBX NoteAttribute blocks. NoteAttribute's just hold a property table,
- * fixed members are added by deriving classes. */
-class NodeAttribute : public Object {
-public:
- NodeAttribute(uint64_t id, const ElementPtr element, const Document &doc, const std::string &name);
- virtual ~NodeAttribute();
-};
-
-/** DOM base class for FBX camera settings attached to a node */
-class CameraSwitcher : public NodeAttribute {
-public:
- CameraSwitcher(uint64_t id, const ElementPtr element, const Document &doc, const std::string &name);
- virtual ~CameraSwitcher();
-
- int CameraID() const {
- return cameraId;
- }
-
- const std::string &CameraName() const {
- return cameraName;
- }
-
- const std::string &CameraIndexName() const {
- return cameraIndexName;
- }
-
-private:
- int cameraId = 0;
- std::string cameraName;
- std::string cameraIndexName;
-};
-
-#define fbx_stringize(a) #a
-
-#define fbx_simple_property(name, type, default_value) \
- type name() const { \
- return PropertyGet<type>(this, fbx_stringize(name), (default_value)); \
- }
-
-// XXX improve logging
-#define fbx_simple_enum_property(name, type, default_value) \
- type name() const { \
- const int ival = PropertyGet<int>(this, fbx_stringize(name), static_cast<int>(default_value)); \
- if (ival < 0 || ival >= AI_CONCAT(type, _MAX)) { \
- return static_cast<type>(default_value); \
- } \
- return static_cast<type>(ival); \
- }
-
-class FbxPoseNode;
-class FbxPose : public Object {
-public:
- FbxPose(uint64_t id, const ElementPtr element, const Document &doc, const std::string &name);
-
- const std::vector<FbxPoseNode *> &GetBindPoses() const {
- return pose_nodes;
- }
-
- virtual ~FbxPose();
-
-private:
- std::vector<FbxPoseNode *> pose_nodes;
-};
-
-class FbxPoseNode {
-public:
- FbxPoseNode(const ElementPtr element, const Document &doc, const std::string &name) {
- const ScopePtr sc = GetRequiredScope(element);
-
- // get pose node transform
- const ElementPtr Transform = GetRequiredElement(sc, "Matrix", element);
- transform = ReadMatrix(Transform);
-
- // get node id this pose node is for
- const ElementPtr NodeId = sc->GetElement("Node3D");
- if (NodeId) {
- target_id = ParseTokenAsInt64(GetRequiredToken(NodeId, 0));
- }
-
- print_verbose("added posenode " + itos(target_id) + " transform: " + transform);
- }
- virtual ~FbxPoseNode() {
- }
-
- uint64_t GetNodeID() const {
- return target_id;
- }
-
- Transform3D GetBindPose() const {
- return transform;
- }
-
-private:
- uint64_t target_id = 0;
- Transform3D transform;
-};
-
-/** DOM base class for FBX cameras attached to a node */
-class Camera : public NodeAttribute {
-public:
- Camera(uint64_t id, const ElementPtr element, const Document &doc, const std::string &name);
- virtual ~Camera();
-
- fbx_simple_property(Position, Vector3, Vector3(0, 0, 0));
- fbx_simple_property(UpVector, Vector3, Vector3(0, 1, 0));
- fbx_simple_property(InterestPosition, Vector3, Vector3(0, 0, 0));
-
- fbx_simple_property(AspectWidth, float, 1.0f);
- fbx_simple_property(AspectHeight, float, 1.0f);
- fbx_simple_property(FilmWidth, float, 1.0f);
- fbx_simple_property(FilmHeight, float, 1.0f);
-
- fbx_simple_property(NearPlane, float, 0.1f);
- fbx_simple_property(FarPlane, float, 100.0f);
-
- fbx_simple_property(FilmAspectRatio, float, 1.0f);
- fbx_simple_property(ApertureMode, int, 0);
-
- fbx_simple_property(FieldOfView, float, 1.0f);
- fbx_simple_property(FocalLength, float, 1.0f);
-};
-
-/** DOM base class for FBX null markers attached to a node */
-class Null : public NodeAttribute {
-public:
- Null(uint64_t id, const ElementPtr element, const Document &doc, const std::string &name);
- virtual ~Null();
-};
-
-/** DOM base class for FBX limb node markers attached to a node */
-class LimbNode : public NodeAttribute {
-public:
- LimbNode(uint64_t id, const ElementPtr element, const Document &doc, const std::string &name);
- virtual ~LimbNode();
-};
-
-/** DOM base class for FBX lights attached to a node */
-class Light : public NodeAttribute {
-public:
- Light(uint64_t id, const ElementPtr element, const Document &doc, const std::string &name);
- virtual ~Light();
-
- enum Type {
- Type_Point,
- Type_Directional,
- Type_Spot,
- Type_Area,
- Type_Volume,
-
- Type_MAX // end-of-enum sentinel
- };
-
- enum Decay {
- Decay_None,
- Decay_Linear,
- Decay_Quadratic,
- Decay_Cubic,
-
- Decay_MAX // end-of-enum sentinel
- };
-
- fbx_simple_property(Color, Vector3, Vector3(1, 1, 1));
- fbx_simple_enum_property(LightType, Type, 0);
- fbx_simple_property(CastLightOnObject, bool, false);
- fbx_simple_property(DrawVolumetricLight, bool, true);
- fbx_simple_property(DrawGroundProjection, bool, true);
- fbx_simple_property(DrawFrontFacingVolumetricLight, bool, false);
- fbx_simple_property(Intensity, float, 100.0f);
- fbx_simple_property(InnerAngle, float, 0.0f);
- fbx_simple_property(OuterAngle, float, 45.0f);
- fbx_simple_property(Fog, int, 50);
- fbx_simple_enum_property(DecayType, Decay, 2);
- fbx_simple_property(DecayStart, float, 1.0f);
- fbx_simple_property(FileName, std::string, "");
-
- fbx_simple_property(EnableNearAttenuation, bool, false);
- fbx_simple_property(NearAttenuationStart, float, 0.0f);
- fbx_simple_property(NearAttenuationEnd, float, 0.0f);
- fbx_simple_property(EnableFarAttenuation, bool, false);
- fbx_simple_property(FarAttenuationStart, float, 0.0f);
- fbx_simple_property(FarAttenuationEnd, float, 0.0f);
-
- fbx_simple_property(CastShadows, bool, true);
- fbx_simple_property(ShadowColor, Vector3, Vector3(0, 0, 0));
-
- fbx_simple_property(AreaLightShape, int, 0);
-
- fbx_simple_property(LeftBarnDoor, float, 20.0f);
- fbx_simple_property(RightBarnDoor, float, 20.0f);
- fbx_simple_property(TopBarnDoor, float, 20.0f);
- fbx_simple_property(BottomBarnDoor, float, 20.0f);
- fbx_simple_property(EnableBarnDoor, bool, true);
-};
-
-class Model;
-
-typedef Model *ModelPtr;
-#define new_Model new Model
-
-/** DOM base class for FBX models (even though its semantics are more "node" than "model" */
-class Model : public Object {
-public:
- enum RotOrder {
- RotOrder_EulerXYZ = 0,
- RotOrder_EulerXZY,
- RotOrder_EulerYZX,
- RotOrder_EulerYXZ,
- RotOrder_EulerZXY,
- RotOrder_EulerZYX,
-
- RotOrder_SphericXYZ,
-
- RotOrder_MAX // end-of-enum sentinel
- };
-
- Model(uint64_t id, const ElementPtr element, const Document &doc, const std::string &name);
- virtual ~Model();
-
- fbx_simple_property(QuaternionInterpolate, int, 0);
-
- fbx_simple_property(RotationOffset, Vector3, Vector3());
- fbx_simple_property(RotationPivot, Vector3, Vector3());
- fbx_simple_property(ScalingOffset, Vector3, Vector3());
- fbx_simple_property(ScalingPivot, Vector3, Vector3());
- fbx_simple_property(TranslationActive, bool, false);
- fbx_simple_property(TranslationMin, Vector3, Vector3());
- fbx_simple_property(TranslationMax, Vector3, Vector3());
-
- fbx_simple_property(TranslationMinX, bool, false);
- fbx_simple_property(TranslationMaxX, bool, false);
- fbx_simple_property(TranslationMinY, bool, false);
- fbx_simple_property(TranslationMaxY, bool, false);
- fbx_simple_property(TranslationMinZ, bool, false);
- fbx_simple_property(TranslationMaxZ, bool, false);
-
- fbx_simple_enum_property(RotationOrder, RotOrder, 0);
- fbx_simple_property(RotationSpaceForLimitOnly, bool, false);
- fbx_simple_property(RotationStiffnessX, float, 0.0f);
- fbx_simple_property(RotationStiffnessY, float, 0.0f);
- fbx_simple_property(RotationStiffnessZ, float, 0.0f);
- fbx_simple_property(AxisLen, float, 0.0f);
-
- fbx_simple_property(PreRotation, Vector3, Vector3());
- fbx_simple_property(PostRotation, Vector3, Vector3());
- fbx_simple_property(RotationActive, bool, false);
-
- fbx_simple_property(RotationMin, Vector3, Vector3());
- fbx_simple_property(RotationMax, Vector3, Vector3());
-
- fbx_simple_property(RotationMinX, bool, false);
- fbx_simple_property(RotationMaxX, bool, false);
- fbx_simple_property(RotationMinY, bool, false);
- fbx_simple_property(RotationMaxY, bool, false);
- fbx_simple_property(RotationMinZ, bool, false);
- fbx_simple_property(RotationMaxZ, bool, false);
- fbx_simple_enum_property(InheritType, TransformInheritance, 0);
-
- fbx_simple_property(ScalingActive, bool, false);
- fbx_simple_property(ScalingMin, Vector3, Vector3());
- fbx_simple_property(ScalingMax, Vector3, Vector3(1, 1, 1));
- fbx_simple_property(ScalingMinX, bool, false);
- fbx_simple_property(ScalingMaxX, bool, false);
- fbx_simple_property(ScalingMinY, bool, false);
- fbx_simple_property(ScalingMaxY, bool, false);
- fbx_simple_property(ScalingMinZ, bool, false);
- fbx_simple_property(ScalingMaxZ, bool, false);
-
- fbx_simple_property(GeometricTranslation, Vector3, Vector3());
- fbx_simple_property(GeometricRotation, Vector3, Vector3());
- fbx_simple_property(GeometricScaling, Vector3, Vector3(1, 1, 1));
-
- fbx_simple_property(MinDampRangeX, float, 0.0f);
- fbx_simple_property(MinDampRangeY, float, 0.0f);
- fbx_simple_property(MinDampRangeZ, float, 0.0f);
- fbx_simple_property(MaxDampRangeX, float, 0.0f);
- fbx_simple_property(MaxDampRangeY, float, 0.0f);
- fbx_simple_property(MaxDampRangeZ, float, 0.0f);
-
- fbx_simple_property(MinDampStrengthX, float, 0.0f);
- fbx_simple_property(MinDampStrengthY, float, 0.0f);
- fbx_simple_property(MinDampStrengthZ, float, 0.0f);
- fbx_simple_property(MaxDampStrengthX, float, 0.0f);
- fbx_simple_property(MaxDampStrengthY, float, 0.0f);
- fbx_simple_property(MaxDampStrengthZ, float, 0.0f);
-
- fbx_simple_property(PreferredAngleX, float, 0.0f);
- fbx_simple_property(PreferredAngleY, float, 0.0f);
- fbx_simple_property(PreferredAngleZ, float, 0.0f);
-
- fbx_simple_property(Show, bool, true);
- fbx_simple_property(LODBox, bool, false);
- fbx_simple_property(Freeze, bool, false);
-
- const std::string &Shading() const {
- return shading;
- }
-
- const std::string &Culling() const {
- return culling;
- }
-
- /** Get material links */
- const std::vector<const Material *> &GetMaterials() const {
- return materials;
- }
-
- /** Get geometry links */
- const std::vector<const Geometry *> &GetGeometry() const {
- return geometry;
- }
-
- /** Get node attachments */
- const std::vector<const NodeAttribute *> &GetAttributes() const {
- return attributes;
- }
-
- /** convenience method to check if the node has a Null node marker */
- bool IsNull() const;
-
-private:
- void ResolveLinks(const ElementPtr element, const Document &doc);
-
-private:
- std::vector<const Material *> materials;
- std::vector<const Geometry *> geometry;
- std::vector<const NodeAttribute *> attributes;
-
- std::string shading;
- std::string culling;
-};
-
-class ModelLimbNode : public Model {
-public:
- ModelLimbNode(uint64_t id, const ElementPtr element, const Document &doc, const std::string &name);
- virtual ~ModelLimbNode();
-};
-
-/** DOM class for generic FBX textures */
-class Texture : public Object {
-public:
- Texture(uint64_t id, const ElementPtr element, const Document &doc, const std::string &name);
- virtual ~Texture();
-
- const std::string &Type() const {
- return type;
- }
-
- const std::string &FileName() const {
- return fileName;
- }
-
- const std::string &RelativeFilename() const {
- return relativeFileName;
- }
-
- const std::string &AlphaSource() const {
- return alphaSource;
- }
-
- const Vector2 &UVTranslation() const {
- return uvTrans;
- }
-
- const Vector2 &UVScaling() const {
- return uvScaling;
- }
-
- // return a 4-tuple
- const unsigned int *Crop() const {
- return crop;
- }
-
- const Video *Media() const {
- return media;
- }
-
-private:
- Vector2 uvTrans;
- Vector2 uvScaling;
-
- std::string type;
- std::string relativeFileName;
- std::string fileName;
- std::string alphaSource;
-
- unsigned int crop[4] = { 0 };
- const Video *media = nullptr;
-};
-
-/** DOM class for layered FBX textures */
-class LayeredTexture : public Object {
-public:
- LayeredTexture(uint64_t id, const ElementPtr element, const Document &doc, const std::string &name);
- virtual ~LayeredTexture();
-
- // Can only be called after construction of the layered texture object due to construction flag.
- void fillTexture(const Document &doc);
-
- enum BlendMode {
- BlendMode_Translucent,
- BlendMode_Additive,
- BlendMode_Modulate,
- BlendMode_Modulate2,
- BlendMode_Over,
- BlendMode_Normal,
- BlendMode_Dissolve,
- BlendMode_Darken,
- BlendMode_ColorBurn,
- BlendMode_LinearBurn,
- BlendMode_DarkerColor,
- BlendMode_Lighten,
- BlendMode_Screen,
- BlendMode_ColorDodge,
- BlendMode_LinearDodge,
- BlendMode_LighterColor,
- BlendMode_SoftLight,
- BlendMode_HardLight,
- BlendMode_VividLight,
- BlendMode_LinearLight,
- BlendMode_PinLight,
- BlendMode_HardMix,
- BlendMode_Difference,
- BlendMode_Exclusion,
- BlendMode_Subtract,
- BlendMode_Divide,
- BlendMode_Hue,
- BlendMode_Saturation,
- BlendMode_Color,
- BlendMode_Luminosity,
- BlendMode_Overlay,
- BlendMode_BlendModeCount
- };
-
- const Texture *getTexture(int index = 0) const {
- return textures[index];
- }
- int textureCount() const {
- return static_cast<int>(textures.size());
- }
- BlendMode GetBlendMode() const {
- return blendMode;
- }
- float Alpha() {
- return alpha;
- }
-
-private:
- std::vector<const Texture *> textures;
- BlendMode blendMode = BlendMode::BlendMode_Additive;
- float alpha = 0;
-};
-
-typedef std::map<std::string, const Texture *> TextureMap;
-typedef std::map<std::string, const LayeredTexture *> LayeredTextureMap;
-
-/** DOM class for generic FBX videos */
-class Video : public Object {
-public:
- Video(uint64_t id, const ElementPtr element, const Document &doc, const std::string &name);
-
- virtual ~Video();
-
- const std::string &Type() const {
- return type;
- }
-
- bool IsEmbedded() const {
- return contentLength > 0;
- }
-
- const std::string &FileName() const {
- return fileName;
- }
-
- const std::string &RelativeFilename() const {
- return relativeFileName;
- }
-
- const uint8_t *Content() const {
- return content;
- }
-
- uint64_t ContentLength() const {
- return contentLength;
- }
-
- uint8_t *RelinquishContent() {
- uint8_t *ptr = content;
- content = nullptr;
- return ptr;
- }
-
- bool operator==(const Video &other) const {
- return (
- type == other.type && relativeFileName == other.relativeFileName && fileName == other.fileName);
- }
-
- bool operator<(const Video &other) const {
- return std::tie(type, relativeFileName, fileName) < std::tie(other.type, other.relativeFileName, other.fileName);
- }
-
-private:
- std::string type;
- std::string relativeFileName;
- std::string fileName;
-
- uint64_t contentLength = 0;
- uint8_t *content = nullptr;
-};
-
-/** DOM class for generic FBX materials */
-class Material : public Object {
-public:
- Material(uint64_t id, const ElementPtr element, const Document &doc, const std::string &name);
-
- virtual ~Material();
-
- const std::string &GetShadingModel() const {
- return shading;
- }
-
- bool IsMultilayer() const {
- return multilayer;
- }
-
- const TextureMap &Textures() const {
- return textures;
- }
-
- const LayeredTextureMap &LayeredTextures() const {
- return layeredTextures;
- }
-
-private:
- std::string shading;
- bool multilayer = false;
-
- TextureMap textures;
- LayeredTextureMap layeredTextures;
-};
-
-// signed int keys (this can happen!)
-typedef std::vector<int64_t> KeyTimeList;
-typedef std::vector<float> KeyValueList;
-
-/** Represents a FBX animation curve (i.e. a 1-dimensional set of keyframes and values therefore) */
-class AnimationCurve : public Object {
-public:
- AnimationCurve(uint64_t id, const ElementPtr element, const std::string &name, const Document &doc);
- virtual ~AnimationCurve();
-
- /** get list of keyframe positions (time).
- * Invariant: |GetKeys()| > 0 */
- const KeyTimeList &GetKeys() const {
- return keys;
- }
-
- /** get list of keyframe values.
- * Invariant: |GetKeys()| == |GetValues()| && |GetKeys()| > 0*/
- const KeyValueList &GetValues() const {
- return values;
- }
-
- const std::map<int64_t, float> &GetValueTimeTrack() const {
- return keyvalues;
- }
-
- const std::vector<float> &GetAttributes() const {
- return attributes;
- }
-
- const std::vector<unsigned int> &GetFlags() const {
- return flags;
- }
-
-private:
- KeyTimeList keys;
- KeyValueList values;
- std::vector<float> attributes;
- std::map<int64_t, float> keyvalues;
- std::vector<unsigned int> flags;
-};
-
-/* Typedef for pointers for the animation handler */
-typedef std::shared_ptr<AnimationCurve> AnimationCurvePtr;
-typedef std::weak_ptr<AnimationCurve> AnimationCurveWeakPtr;
-typedef std::map<std::string, const AnimationCurve *> AnimationMap;
-
-/* Animation Curve node ptr */
-typedef std::shared_ptr<AnimationCurveNode> AnimationCurveNodePtr;
-typedef std::weak_ptr<AnimationCurveNode> AnimationCurveNodeWeakPtr;
-
-/** Represents a FBX animation curve (i.e. a mapping from single animation curves to nodes) */
-class AnimationCurveNode : public Object {
-public:
- /* the optional white list specifies a list of property names for which the caller
- wants animations for. If the curve node does not match one of these, std::range_error
- will be thrown. */
- AnimationCurveNode(uint64_t id, const ElementPtr element, const std::string &name, const Document &doc,
- const char *const *target_prop_whitelist = nullptr, size_t whitelist_size = 0);
-
- virtual ~AnimationCurveNode();
-
- const AnimationMap &Curves() const;
-
- /** Object the curve is assigned to, this can be nullptr if the
- * target object has no DOM representation or could not
- * be read for other reasons.*/
- Object *Target() const {
- return target;
- }
-
- Model *TargetAsModel() const {
- return dynamic_cast<Model *>(target);
- }
-
- NodeAttribute *TargetAsNodeAttribute() const {
- return dynamic_cast<NodeAttribute *>(target);
- }
-
- /** Property of Target() that is being animated*/
- const std::string &TargetProperty() const {
- return prop;
- }
-
-private:
- Object *target = nullptr;
- mutable AnimationMap curves;
- std::string prop;
- const Document &doc;
-};
-
-typedef std::vector<const AnimationCurveNode *> AnimationCurveNodeList;
-
-typedef std::shared_ptr<AnimationLayer> AnimationLayerPtr;
-typedef std::weak_ptr<AnimationLayer> AnimationLayerWeakPtr;
-typedef std::vector<const AnimationLayer *> AnimationLayerList;
-
-/** Represents a FBX animation layer (i.e. a list of node animations) */
-class AnimationLayer : public Object {
-public:
- AnimationLayer(uint64_t id, const ElementPtr element, const std::string &name, const Document &doc);
- virtual ~AnimationLayer();
-
- /* the optional white list specifies a list of property names for which the caller
- wants animations for. Curves not matching this list will not be added to the
- animation layer. */
- const AnimationCurveNodeList Nodes(const char *const *target_prop_whitelist = nullptr, size_t whitelist_size = 0) const;
-
-private:
- const Document &doc;
-};
-
-/** Represents a FBX animation stack (i.e. a list of animation layers) */
-class AnimationStack : public Object {
-public:
- AnimationStack(uint64_t id, const ElementPtr element, const std::string &name, const Document &doc);
- virtual ~AnimationStack();
-
- fbx_simple_property(LocalStart, int64_t, 0L);
- fbx_simple_property(LocalStop, int64_t, 0L);
- fbx_simple_property(ReferenceStart, int64_t, 0L);
- fbx_simple_property(ReferenceStop, int64_t, 0L);
-
- const AnimationLayerList &Layers() const {
- return layers;
- }
-
-private:
- AnimationLayerList layers;
-};
-
-/** DOM class for deformers */
-class Deformer : public Object {
-public:
- Deformer(uint64_t id, const ElementPtr element, const Document &doc, const std::string &name);
- virtual ~Deformer();
-};
-
-/** Constraints are from Maya they can help us with BoneAttachments :) **/
-class Constraint : public Object {
-public:
- Constraint(uint64_t id, const ElementPtr element, const Document &doc, const std::string &name);
- virtual ~Constraint();
-};
-
-typedef std::vector<float> WeightArray;
-typedef std::vector<unsigned int> WeightIndexArray;
-
-/** DOM class for BlendShapeChannel deformers */
-class BlendShapeChannel : public Deformer {
-public:
- BlendShapeChannel(uint64_t id, const ElementPtr element, const Document &doc, const std::string &name);
-
- virtual ~BlendShapeChannel();
-
- float DeformPercent() const {
- return percent;
- }
-
- const WeightArray &GetFullWeights() const {
- return fullWeights;
- }
-
- const std::vector<const ShapeGeometry *> &GetShapeGeometries() const {
- return shapeGeometries;
- }
-
-private:
- float percent = 0;
- WeightArray fullWeights;
- std::vector<const ShapeGeometry *> shapeGeometries;
-};
-
-/** DOM class for BlendShape deformers */
-class BlendShape : public Deformer {
-public:
- BlendShape(uint64_t id, const ElementPtr element, const Document &doc, const std::string &name);
-
- virtual ~BlendShape();
-
- const std::vector<const BlendShapeChannel *> &BlendShapeChannels() const {
- return blendShapeChannels;
- }
-
-private:
- std::vector<const BlendShapeChannel *> blendShapeChannels;
-};
-
-/** DOM class for skin deformer clusters (aka sub-deformers) */
-class Cluster : public Deformer {
-public:
- Cluster(uint64_t id, const ElementPtr element, const Document &doc, const std::string &name);
-
- virtual ~Cluster();
-
- /** get the list of deformer weights associated with this cluster.
- * Use #GetIndices() to get the associated vertices. Both arrays
- * have the same size (and may also be empty). */
- const std::vector<float> &GetWeights() const {
- return weights;
- }
-
- /** get indices into the vertex data of the geometry associated
- * with this cluster. Use #GetWeights() to get the associated weights.
- * Both arrays have the same size (and may also be empty). */
- const std::vector<unsigned int> &GetIndices() const {
- return indices;
- }
-
- /** */
- const Transform3D &GetTransform() const {
- return transform;
- }
-
- const Transform3D &TransformLink() const {
- return transformLink;
- }
-
- const Model *TargetNode() const {
- return node;
- }
-
- const Transform3D &TransformAssociateModel() const {
- return transformAssociateModel;
- }
-
- bool TransformAssociateModelValid() const {
- return valid_transformAssociateModel;
- }
-
- // property is not in the fbx file
- // if the cluster has an associate model
- // we then have an additive type
- enum SkinLinkMode {
- SkinLinkMode_Normalized = 0,
- SkinLinkMode_Additive = 1
- };
-
- SkinLinkMode GetLinkMode() {
- return link_mode;
- }
-
-private:
- std::vector<float> weights;
- std::vector<unsigned int> indices;
-
- Transform3D transform;
- Transform3D transformLink;
- Transform3D transformAssociateModel;
- SkinLinkMode link_mode;
- bool valid_transformAssociateModel = false;
- const Model *node = nullptr;
-};
-
-/** DOM class for skin deformers */
-class Skin : public Deformer {
-public:
- Skin(uint64_t id, const ElementPtr element, const Document &doc, const std::string &name);
-
- virtual ~Skin();
-
- float DeformAccuracy() const {
- return accuracy;
- }
-
- const std::vector<const Cluster *> &Clusters() const {
- return clusters;
- }
-
- enum SkinType {
- Skin_Rigid = 0,
- Skin_Linear,
- Skin_DualQuaternion,
- Skin_Blend
- };
-
- const SkinType &GetSkinType() const {
- return skinType;
- }
-
-private:
- float accuracy = 0;
- SkinType skinType = SkinType::Skin_Linear;
- std::vector<const Cluster *> clusters;
-};
-
-/** Represents a link between two FBX objects. */
-class Connection {
-public:
- Connection(uint64_t insertionOrder, uint64_t src, uint64_t dest, const std::string &prop, const Document &doc);
- ~Connection();
-
- // note: a connection ensures that the source and dest objects exist, but
- // not that they have DOM representations, so the return value of one of
- // these functions can still be nullptr.
- Object *SourceObject() const;
- Object *DestinationObject() const;
-
- // these, however, are always guaranteed to be valid
- LazyObject *LazySourceObject() const;
- LazyObject *LazyDestinationObject() const;
-
- /** return the name of the property the connection is attached to.
- * this is an empty string for object to object (OO) connections. */
- const std::string &PropertyName() const {
- return prop;
- }
-
- uint64_t InsertionOrder() const {
- return insertionOrder;
- }
-
- int CompareTo(const Connection *c) const {
- //ai_assert(nullptr != c);
-
- // note: can't subtract because this would overflow uint64_t
- if (InsertionOrder() > c->InsertionOrder()) {
- return 1;
- } else if (InsertionOrder() < c->InsertionOrder()) {
- return -1;
- }
- return 0;
- }
-
- bool Compare(const Connection *c) const {
- //ai_assert(nullptr != c);
-
- return InsertionOrder() < c->InsertionOrder();
- }
-
-public:
- uint64_t insertionOrder = 0;
- const std::string prop;
-
- uint64_t src = 0, dest = 0;
- const Document &doc;
-};
-
-// XXX again, unique_ptr would be useful. shared_ptr is too
-// bloated since the objects have a well-defined single owner
-// during their entire lifetime (Document). FBX files have
-// up to many thousands of objects (most of which we never use),
-// so the memory overhead for them should be kept at a minimum.
-typedef std::map<uint64_t, LazyObject *> ObjectMap;
-typedef std::map<std::string, const PropertyTable *> PropertyTemplateMap;
-typedef std::multimap<uint64_t, const Connection *> ConnectionMap;
-
-/** DOM class for global document settings, a single instance per document can
- * be accessed via Document.Globals(). */
-class FileGlobalSettings : public PropertyTable {
-public:
- FileGlobalSettings(const Document &doc);
- virtual ~FileGlobalSettings();
-
- const Document &GetDocument() const {
- return doc;
- }
-
- fbx_simple_property(UpAxis, int, 1);
- fbx_simple_property(UpAxisSign, int, 1);
- fbx_simple_property(FrontAxis, int, 2);
- fbx_simple_property(FrontAxisSign, int, 1);
- fbx_simple_property(CoordAxis, int, 0);
- fbx_simple_property(CoordAxisSign, int, 1);
- fbx_simple_property(OriginalUpAxis, int, 0);
- fbx_simple_property(OriginalUpAxisSign, int, 1);
- fbx_simple_property(UnitScaleFactor, float, 1);
- fbx_simple_property(OriginalUnitScaleFactor, float, 1);
- fbx_simple_property(AmbientColor, Vector3, Vector3(0, 0, 0));
- fbx_simple_property(DefaultCamera, std::string, "");
-
- enum FrameRate {
- FrameRate_DEFAULT = 0,
- FrameRate_120 = 1,
- FrameRate_100 = 2,
- FrameRate_60 = 3,
- FrameRate_50 = 4,
- FrameRate_48 = 5,
- FrameRate_30 = 6,
- FrameRate_30_DROP = 7,
- FrameRate_NTSC_DROP_FRAME = 8,
- FrameRate_NTSC_FULL_FRAME = 9,
- FrameRate_PAL = 10,
- FrameRate_CINEMA = 11,
- FrameRate_1000 = 12,
- FrameRate_CINEMA_ND = 13,
- FrameRate_CUSTOM = 14,
-
- FrameRate_MAX // end-of-enum sentinel
- };
-
- fbx_simple_enum_property(TimeMode, FrameRate, FrameRate_DEFAULT);
- fbx_simple_property(TimeSpanStart, uint64_t, 0L);
- fbx_simple_property(TimeSpanStop, uint64_t, 0L);
- fbx_simple_property(CustomFrameRate, float, -1.0f);
-
-private:
- const Document &doc;
-};
-
-/** DOM root for a FBX file */
-class Document {
-public:
- Document(const Parser &parser, const ImportSettings &settings);
-
- ~Document();
-
- LazyObject *GetObject(uint64_t id) const;
-
- bool IsSafeToImport() const {
- return SafeToImport;
- }
-
- bool IsBinary() const {
- return parser.IsBinary();
- }
-
- unsigned int FBXVersion() const {
- return fbxVersion;
- }
-
- const std::string &Creator() const {
- return creator;
- }
-
- // elements (in this order): Year, Month, Day, Hour, Second, Millisecond
- const unsigned int *CreationTimeStamp() const {
- return creationTimeStamp;
- }
-
- const FileGlobalSettings *GlobalSettingsPtr() const {
- return globals.get();
- }
-
- const PropertyTable &GetMetadataProperties() const {
- return metadata_properties;
- }
-
- const PropertyTemplateMap &Templates() const {
- return templates;
- }
-
- const ObjectMap &Objects() const {
- return objects;
- }
-
- const ImportSettings &Settings() const {
- return settings;
- }
-
- const ConnectionMap &ConnectionsBySource() const {
- return src_connections;
- }
-
- const ConnectionMap &ConnectionsByDestination() const {
- return dest_connections;
- }
-
- // note: the implicit rule in all DOM classes is to always resolve
- // from destination to source (since the FBX object hierarchy is,
- // with very few exceptions, a DAG, this avoids cycles). In all
- // cases that may involve back-facing edges in the object graph,
- // use LazyObject::IsBeingConstructed() to check.
-
- std::vector<const Connection *> GetConnectionsBySourceSequenced(uint64_t source) const;
- std::vector<const Connection *> GetConnectionsByDestinationSequenced(uint64_t dest) const;
-
- std::vector<const Connection *> GetConnectionsBySourceSequenced(uint64_t source, const char *classname) const;
- std::vector<const Connection *> GetConnectionsByDestinationSequenced(uint64_t dest, const char *classname) const;
-
- std::vector<const Connection *> GetConnectionsBySourceSequenced(uint64_t source,
- const char *const *classnames, size_t count) const;
- std::vector<const Connection *> GetConnectionsByDestinationSequenced(uint64_t dest,
- const char *const *classnames,
- size_t count) const;
-
- const std::vector<const AnimationStack *> &AnimationStacks() const;
- const std::vector<uint64_t> &GetAnimationStackIDs() const {
- return animationStacks;
- }
-
- const std::vector<uint64_t> &GetConstraintStackIDs() const {
- return constraints;
- }
-
- const std::vector<uint64_t> &GetBindPoseIDs() const {
- return bind_poses;
- };
-
- const std::vector<uint64_t> &GetMaterialIDs() const {
- return materials;
- };
-
- const std::vector<uint64_t> &GetSkinIDs() const {
- return skins;
- }
-
-private:
- std::vector<const Connection *> GetConnectionsSequenced(uint64_t id, const ConnectionMap &) const;
- std::vector<const Connection *> GetConnectionsSequenced(uint64_t id, bool is_src,
- const ConnectionMap &,
- const char *const *classnames,
- size_t count) const;
- bool ReadHeader();
- void ReadObjects();
- void ReadPropertyTemplates();
- void ReadConnections();
- void ReadGlobalSettings();
-
-private:
- const ImportSettings &settings;
-
- ObjectMap objects;
- const Parser &parser;
- bool SafeToImport = false;
-
- PropertyTemplateMap templates;
- ConnectionMap src_connections;
- ConnectionMap dest_connections;
-
- unsigned int fbxVersion = 0;
- std::string creator;
- unsigned int creationTimeStamp[7] = { 0 };
-
- std::vector<uint64_t> animationStacks;
- std::vector<uint64_t> bind_poses;
- // constraints aren't in the tree / at least they are not easy to access.
- std::vector<uint64_t> constraints;
- std::vector<uint64_t> materials;
- std::vector<uint64_t> skins;
- mutable std::vector<const AnimationStack *> animationStacksResolved;
- PropertyTable metadata_properties;
- std::shared_ptr<FileGlobalSettings> globals = nullptr;
-};
-} // namespace FBXDocParser
-
-namespace std {
-template <>
-struct hash<const FBXDocParser::Video> {
- std::size_t operator()(const FBXDocParser::Video &video) const {
- using std::hash;
- using std::size_t;
- using std::string;
-
- size_t res = 17;
- res = res * 31 + hash<string>()(video.Name());
- res = res * 31 + hash<string>()(video.RelativeFilename());
- res = res * 31 + hash<string>()(video.Type());
-
- return res;
- }
-};
-} // namespace std
-
-#endif // FBX_DOCUMENT_H
diff --git a/modules/fbx/fbx_parser/FBXDocumentUtil.cpp b/modules/fbx/fbx_parser/FBXDocumentUtil.cpp
deleted file mode 100644
index 4ee8a42b33..0000000000
--- a/modules/fbx/fbx_parser/FBXDocumentUtil.cpp
+++ /dev/null
@@ -1,141 +0,0 @@
-/*************************************************************************/
-/* FBXDocumentUtil.cpp */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* https://godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2022 Juan Linietsky, Ariel Manzur. */
-/* Copyright (c) 2014-2022 Godot Engine contributors (cf. AUTHORS.md). */
-/* */
-/* Permission is hereby granted, free of charge, to any person obtaining */
-/* a copy of this software and associated documentation files (the */
-/* "Software"), to deal in the Software without restriction, including */
-/* without limitation the rights to use, copy, modify, merge, publish, */
-/* distribute, sublicense, and/or sell copies of the Software, and to */
-/* permit persons to whom the Software is furnished to do so, subject to */
-/* the following conditions: */
-/* */
-/* The above copyright notice and this permission notice shall be */
-/* included in all copies or substantial portions of the Software. */
-/* */
-/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
-/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
-/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
-/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
-/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
-/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
-/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
-/*************************************************************************/
-
-/*
-Open Asset Import Library (assimp)
-----------------------------------------------------------------------
-
-Copyright (c) 2006-2019, assimp team
-
-All rights reserved.
-
-Redistribution and use of this software in source and binary forms,
-with or without modification, are permitted provided that the
-following conditions are met:
-
-* Redistributions of source code must retain the above
- copyright notice, this list of conditions and the
- following disclaimer.
-
-* Redistributions in binary form must 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 the assimp team, nor the names of its
- contributors may be used to endorse or promote products
- derived from this software without specific prior
- written permission of the assimp team.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(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 FBXDocumentUtil.cpp
- * @brief Implementation of the FBX DOM utility functions declared in FBXDocumentUtil.h
- */
-
-#include "FBXDocumentUtil.h"
-#include "FBXDocument.h"
-#include "FBXParser.h"
-#include "FBXProperties.h"
-#include "FBXUtil.h"
-#include "core/string/print_string.h"
-
-namespace FBXDocParser {
-namespace Util {
-
-void DOMError(const std::string &message) {
- print_error("[FBX-DOM]" + String(message.c_str()));
-}
-
-void DOMError(const std::string &message, const Token *token) {
- print_error("[FBX-DOM]" + String(message.c_str()) + ";" + String(token->StringContents().c_str()));
-}
-
-void DOMError(const std::string &message, const std::shared_ptr<Token> token) {
- print_error("[FBX-DOM]" + String(message.c_str()) + ";" + String(token->StringContents().c_str()));
-}
-
-void DOMError(const std::string &message, const Element *element /*= nullptr*/) {
- if (element) {
- DOMError(message, element->KeyToken());
- }
- print_error("[FBX-DOM] " + String(message.c_str()));
-}
-
-void DOMError(const std::string &message, const std::shared_ptr<Element> element /*= nullptr*/) {
- if (element) {
- DOMError(message, element->KeyToken());
- }
- print_error("[FBX-DOM] " + String(message.c_str()));
-}
-
-void DOMWarning(const std::string &message) {
- print_verbose("[FBX-DOM] warning:" + String(message.c_str()));
-}
-
-void DOMWarning(const std::string &message, const Token *token) {
- print_verbose("[FBX-DOM] warning:" + String(message.c_str()) + ";" + String(token->StringContents().c_str()));
-}
-
-void DOMWarning(const std::string &message, const Element *element /*= nullptr*/) {
- if (element) {
- DOMWarning(message, element->KeyToken());
- return;
- }
- print_verbose("[FBX-DOM] warning:" + String(message.c_str()));
-}
-
-void DOMWarning(const std::string &message, const std::shared_ptr<Token> token) {
- print_verbose("[FBX-DOM] warning:" + String(message.c_str()) + ";" + String(token->StringContents().c_str()));
-}
-
-void DOMWarning(const std::string &message, const std::shared_ptr<Element> element /*= nullptr*/) {
- if (element) {
- DOMWarning(message, element->KeyToken());
- return;
- }
- print_verbose("[FBX-DOM] warning:" + String(message.c_str()));
-}
-
-} // namespace Util
-} // namespace FBXDocParser
diff --git a/modules/fbx/fbx_parser/FBXDocumentUtil.h b/modules/fbx/fbx_parser/FBXDocumentUtil.h
deleted file mode 100644
index 61c92dbc83..0000000000
--- a/modules/fbx/fbx_parser/FBXDocumentUtil.h
+++ /dev/null
@@ -1,134 +0,0 @@
-/*************************************************************************/
-/* FBXDocumentUtil.h */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* https://godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2022 Juan Linietsky, Ariel Manzur. */
-/* Copyright (c) 2014-2022 Godot Engine contributors (cf. AUTHORS.md). */
-/* */
-/* Permission is hereby granted, free of charge, to any person obtaining */
-/* a copy of this software and associated documentation files (the */
-/* "Software"), to deal in the Software without restriction, including */
-/* without limitation the rights to use, copy, modify, merge, publish, */
-/* distribute, sublicense, and/or sell copies of the Software, and to */
-/* permit persons to whom the Software is furnished to do so, subject to */
-/* the following conditions: */
-/* */
-/* The above copyright notice and this permission notice shall be */
-/* included in all copies or substantial portions of the Software. */
-/* */
-/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
-/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
-/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
-/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
-/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
-/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
-/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
-/*************************************************************************/
-
-/*
-Open Asset Import Library (assimp)
-----------------------------------------------------------------------
-
-Copyright (c) 2006-2012, assimp team
-All rights reserved.
-
-Redistribution and use of this software in source and binary forms,
-with or without modification, are permitted provided that the
-following conditions are met:
-
-* Redistributions of source code must retain the above
- copyright notice, this list of conditions and the
- following disclaimer.
-
-* Redistributions in binary form must 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 the assimp team, nor the names of its
- contributors may be used to endorse or promote products
- derived from this software without specific prior
- written permission of the assimp team.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(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 FBXDocumentUtil.h
- * @brief FBX internal utilities used by the DOM reading code
- */
-#ifndef FBX_DOCUMENT_UTIL_H
-#define FBX_DOCUMENT_UTIL_H
-
-#include "FBXDocument.h"
-#include <memory>
-#include <string>
-
-struct Token;
-struct Element;
-
-namespace FBXDocParser {
-namespace Util {
-
-// Parser errors
-void DOMError(const std::string &message);
-void DOMError(const std::string &message, const Token *token);
-void DOMError(const std::string &message, const Element *element);
-void DOMError(const std::string &message, const std::shared_ptr<Element> element);
-void DOMError(const std::string &message, const std::shared_ptr<Token> token);
-
-// Parser warnings
-void DOMWarning(const std::string &message);
-void DOMWarning(const std::string &message, const Token *token);
-void DOMWarning(const std::string &message, const Element *element);
-void DOMWarning(const std::string &message, const std::shared_ptr<Token> token);
-void DOMWarning(const std::string &message, const std::shared_ptr<Element> element);
-
-// ------------------------------------------------------------------------------------------------
-template <typename T>
-const T *ProcessSimpleConnection(const Connection &con,
- bool is_object_property_conn,
- const char *name,
- const ElementPtr element,
- const char **propNameOut = nullptr) {
- if (is_object_property_conn && !con.PropertyName().length()) {
- DOMWarning("expected incoming " + std::string(name) +
- " link to be an object-object connection, ignoring",
- element);
- return nullptr;
- } else if (!is_object_property_conn && con.PropertyName().length()) {
- DOMWarning("expected incoming " + std::string(name) +
- " link to be an object-property connection, ignoring",
- element);
- return nullptr;
- }
-
- if (is_object_property_conn && propNameOut) {
- // note: this is ok, the return value of PropertyValue() is guaranteed to
- // remain valid and unchanged as long as the document exists.
- *propNameOut = con.PropertyName().c_str();
- }
-
- // Cast Object to AnimationPlayer for example using safe functions, which return nullptr etc
- Object *ob = con.SourceObject();
- ERR_FAIL_COND_V_MSG(!ob, nullptr, "Failed to load object from SourceObject ptr");
- return dynamic_cast<const T *>(ob);
-}
-} // namespace Util
-} // namespace FBXDocParser
-
-#endif // FBX_DOCUMENT_UTIL_H
diff --git a/modules/fbx/fbx_parser/FBXImportSettings.h b/modules/fbx/fbx_parser/FBXImportSettings.h
deleted file mode 100644
index fa93f275c2..0000000000
--- a/modules/fbx/fbx_parser/FBXImportSettings.h
+++ /dev/null
@@ -1,162 +0,0 @@
-/*************************************************************************/
-/* FBXImportSettings.h */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* https://godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2022 Juan Linietsky, Ariel Manzur. */
-/* Copyright (c) 2014-2022 Godot Engine contributors (cf. AUTHORS.md). */
-/* */
-/* Permission is hereby granted, free of charge, to any person obtaining */
-/* a copy of this software and associated documentation files (the */
-/* "Software"), to deal in the Software without restriction, including */
-/* without limitation the rights to use, copy, modify, merge, publish, */
-/* distribute, sublicense, and/or sell copies of the Software, and to */
-/* permit persons to whom the Software is furnished to do so, subject to */
-/* the following conditions: */
-/* */
-/* The above copyright notice and this permission notice shall be */
-/* included in all copies or substantial portions of the Software. */
-/* */
-/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
-/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
-/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
-/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
-/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
-/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
-/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
-/*************************************************************************/
-
-/*
-Open Asset Import Library (assimp)
-----------------------------------------------------------------------
-
-Copyright (c) 2006-2019, assimp team
-
-
-All rights reserved.
-
-Redistribution and use of this software in source and binary forms,
-with or without modification, are permitted provided that the
-following conditions are met:
-
-* Redistributions of source code must retain the above
- copyright notice, this list of conditions and the
- following disclaimer.
-
-* Redistributions in binary form must 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 the assimp team, nor the names of its
- contributors may be used to endorse or promote products
- derived from this software without specific prior
- written permission of the assimp team.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(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 FBXImportSettings.h
- * @brief FBX importer runtime configuration
- */
-#ifndef FBX_IMPORT_SETTINGS_H
-#define FBX_IMPORT_SETTINGS_H
-
-namespace FBXDocParser {
-
-/** FBX import settings, parts of which are publicly accessible via their corresponding AI_CONFIG constants */
-struct ImportSettings {
- /** enable strict mode:
- * - only accept fbx 2012, 2013 files
- * - on the slightest error, give up.
- *
- * Basically, strict mode means that the fbx file will actually
- * be validated.*/
- bool strictMode = true;
-
- /** specifies whether all geometry layers are read and scanned for
- * usable data channels. The FBX spec indicates that many readers
- * will only read the first channel and that this is in some way
- * the recommended way- in reality, however, it happens a lot that
- * vertex data is spread among multiple layers.*/
- bool readAllLayers = true;
-
- /** specifies whether all materials are read, or only those that
- * are referenced by at least one mesh. Reading all materials
- * may make FBX reading a lot slower since all objects
- * need to be processed.
- * This bit is ignored unless readMaterials=true.*/
- bool readAllMaterials = true;
-
- /** import materials (true) or skip them and assign a default
- * material.*/
- bool readMaterials = true;
-
- /** import embedded textures?*/
- bool readTextures = true;
-
- /** import cameras?*/
- bool readCameras = true;
-
- /** import light sources?*/
- bool readLights = true;
-
- /** import animations (i.e. animation curves, the node
- * skeleton is always imported).*/
- bool readAnimations = true;
-
- /** read bones (vertex weights and deform info).*/
- bool readWeights = true;
-
- /** preserve transformation pivots and offsets. Since these can
- * not directly be represented in assimp, additional dummy
- * nodes will be generated. Note that settings this to false
- * can make animation import a lot slower.
- *
- * The naming scheme for the generated nodes is:
- * <OriginalName>_$AssimpFbx$_<TransformName>
- *
- * where <TransformName> is one of
- * RotationPivot
- * RotationOffset
- * PreRotation
- * PostRotation
- * ScalingPivot
- * ScalingOffset
- * Translation
- * Scaling
- * Rotation
- **/
- bool preservePivots = true;
-
- /** do not import animation curves that specify a constant
- * values matching the corresponding node transformation.*/
- bool optimizeEmptyAnimationCurves = true;
-
- /** use legacy naming for embedded textures eg: (*0, *1, *2).*/
- bool useLegacyEmbeddedTextureNaming = false;
-
- /** Empty bones shall be removed.*/
- bool removeEmptyBones = true;
-
- /** Set to true to perform a conversion from cm to meter after
- * the import.*/
- bool convertToMeters = false;
-};
-} // namespace FBXDocParser
-
-#endif // FBX_IMPORT_SETTINGS_H
diff --git a/modules/fbx/fbx_parser/FBXMaterial.cpp b/modules/fbx/fbx_parser/FBXMaterial.cpp
deleted file mode 100644
index e4ee77e850..0000000000
--- a/modules/fbx/fbx_parser/FBXMaterial.cpp
+++ /dev/null
@@ -1,388 +0,0 @@
-/*************************************************************************/
-/* FBXMaterial.cpp */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* https://godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2022 Juan Linietsky, Ariel Manzur. */
-/* Copyright (c) 2014-2022 Godot Engine contributors (cf. AUTHORS.md). */
-/* */
-/* Permission is hereby granted, free of charge, to any person obtaining */
-/* a copy of this software and associated documentation files (the */
-/* "Software"), to deal in the Software without restriction, including */
-/* without limitation the rights to use, copy, modify, merge, publish, */
-/* distribute, sublicense, and/or sell copies of the Software, and to */
-/* permit persons to whom the Software is furnished to do so, subject to */
-/* the following conditions: */
-/* */
-/* The above copyright notice and this permission notice shall be */
-/* included in all copies or substantial portions of the Software. */
-/* */
-/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
-/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
-/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
-/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
-/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
-/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
-/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
-/*************************************************************************/
-
-/*
-Open Asset Import Library (assimp)
-----------------------------------------------------------------------
-
-Copyright (c) 2006-2020, assimp team
-
-All rights reserved.
-
-Redistribution and use of this software in source and binary forms,
-with or without modification, are permitted provided that the
-following conditions are met:
-
-* Redistributions of source code must retain the above
- copyright notice, this list of conditions and the
- following disclaimer.
-
-* Redistributions in binary form must 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 the assimp team, nor the names of its
- contributors may be used to endorse or promote products
- derived from this software without specific prior
- written permission of the assimp team.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(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 FBXMaterial.cpp
- * @brief Assimp::FBX::Material and Assimp::FBX::Texture implementation
- */
-
-#include "ByteSwapper.h"
-#include "FBXDocument.h"
-#include "FBXDocumentUtil.h"
-#include "FBXImportSettings.h"
-#include "FBXParser.h"
-#include "FBXProperties.h"
-
-#include "FBXUtil.h"
-#include <algorithm> // std::transform
-
-namespace FBXDocParser {
-
-using namespace Util;
-
-// ------------------------------------------------------------------------------------------------
-Material::Material(uint64_t id, const ElementPtr element, const Document &doc, const std::string &name) :
- Object(id, element, name) {
- const ScopePtr sc = GetRequiredScope(element);
-
- const ElementPtr ShadingModel = sc->GetElement("ShadingModel");
- const ElementPtr MultiLayer = sc->GetElement("MultiLayer");
-
- if (MultiLayer) {
- multilayer = !!ParseTokenAsInt(GetRequiredToken(MultiLayer, 0));
- }
-
- if (ShadingModel) {
- shading = ParseTokenAsString(GetRequiredToken(ShadingModel, 0));
- } else {
- DOMWarning("shading mode not specified, assuming phong", element);
- shading = "phong";
- }
-
- std::string templateName;
-
- if (shading == "phong") {
- templateName = "Material.Phong";
- } else if (shading == "lambert") {
- templateName = "Material.Lambert";
- } else if (shading == "unknown") {
- templateName = "Material.StingRay";
- } else {
- DOMWarning("shading mode not recognized: " + shading, element);
- }
-
- // resolve texture links
- const std::vector<const Connection *> &conns = doc.GetConnectionsByDestinationSequenced(ID());
- for (const Connection *con : conns) {
- // texture link to properties, not objects
- if (!con->PropertyName().length()) {
- continue;
- }
-
- Object *ob = con->SourceObject();
- if (!ob) {
- DOMWarning("failed to read source object for texture link, ignoring", element);
- continue;
- }
-
- const Texture *tex = dynamic_cast<const Texture *>(ob);
- if (!tex) {
- LayeredTexture *layeredTexture = dynamic_cast<LayeredTexture *>(ob);
-
- if (!layeredTexture) {
- DOMWarning("source object for texture link is not a texture or layered texture, ignoring", element);
- continue;
- }
-
- const std::string &prop = con->PropertyName();
- if (layeredTextures.find(prop) != layeredTextures.end()) {
- DOMWarning("duplicate layered texture link: " + prop, element);
- }
-
- layeredTextures[prop] = layeredTexture;
- layeredTexture->fillTexture(doc);
- } else {
- const std::string &prop = con->PropertyName();
- if (textures.find(prop) != textures.end()) {
- DOMWarning("duplicate texture link: " + prop, element);
- }
-
- textures[prop] = tex;
- }
- }
-}
-
-// ------------------------------------------------------------------------------------------------
-Material::~Material() {
-}
-
-// ------------------------------------------------------------------------------------------------
-Texture::Texture(uint64_t id, const ElementPtr element, const Document &doc, const std::string &name) :
- Object(id, element, name), uvScaling(1.0f, 1.0f) {
- const ScopePtr sc = GetRequiredScope(element);
-
- const ElementPtr Type = sc->GetElement("Type");
- const ElementPtr FileName = sc->GetElement("FileName");
- const ElementPtr RelativeFilename = sc->GetElement("RelativeFilename");
- const ElementPtr ModelUVTranslation = sc->GetElement("ModelUVTranslation");
- const ElementPtr ModelUVScaling = sc->GetElement("ModelUVScaling");
- const ElementPtr Texture_Alpha_Source = sc->GetElement("Texture_Alpha_Source");
- const ElementPtr Cropping = sc->GetElement("Cropping");
-
- if (Type) {
- type = ParseTokenAsString(GetRequiredToken(Type, 0));
- }
-
- if (FileName) {
- fileName = ParseTokenAsString(GetRequiredToken(FileName, 0));
- }
-
- if (RelativeFilename) {
- relativeFileName = ParseTokenAsString(GetRequiredToken(RelativeFilename, 0));
- }
-
- if (ModelUVTranslation) {
- uvTrans = Vector2(ParseTokenAsFloat(GetRequiredToken(ModelUVTranslation, 0)),
- ParseTokenAsFloat(GetRequiredToken(ModelUVTranslation, 1)));
- }
-
- if (ModelUVScaling) {
- uvScaling = Vector2(ParseTokenAsFloat(GetRequiredToken(ModelUVScaling, 0)),
- ParseTokenAsFloat(GetRequiredToken(ModelUVScaling, 1)));
- }
-
- if (Cropping) {
- crop[0] = ParseTokenAsInt(GetRequiredToken(Cropping, 0));
- crop[1] = ParseTokenAsInt(GetRequiredToken(Cropping, 1));
- crop[2] = ParseTokenAsInt(GetRequiredToken(Cropping, 2));
- crop[3] = ParseTokenAsInt(GetRequiredToken(Cropping, 3));
- } else {
- // vc8 doesn't support the crop() syntax in initialization lists
- // (and vc9 WARNS about the new (i.e. compliant) behaviour).
- crop[0] = crop[1] = crop[2] = crop[3] = 0;
- }
-
- if (Texture_Alpha_Source) {
- alphaSource = ParseTokenAsString(GetRequiredToken(Texture_Alpha_Source, 0));
- }
-
- // 3DS Max and FBX SDK use "Scaling" and "Translation" instead of "ModelUVScaling" and "ModelUVTranslation". Use these properties if available.
- bool ok = true;
- const Vector3 &scaling = PropertyGet<Vector3>(this, "Scaling", ok);
- if (ok) {
- uvScaling.x = scaling.x;
- uvScaling.y = scaling.y;
- }
-
- const Vector3 &trans = PropertyGet<Vector3>(this, "Translation", ok);
- if (ok) {
- uvTrans.x = trans.x;
- uvTrans.y = trans.y;
- }
-
- // resolve video links
- if (doc.Settings().readTextures) {
- const std::vector<const Connection *> &conns = doc.GetConnectionsByDestinationSequenced(ID());
- for (const Connection *con : conns) {
- const Object *const ob = con->SourceObject();
- if (!ob) {
- DOMWarning("failed to read source object for texture link, ignoring", element);
- continue;
- }
-
- const Video *const video = dynamic_cast<const Video *>(ob);
- if (video) {
- media = video;
- }
- }
- }
-}
-
-Texture::~Texture() {
-}
-
-LayeredTexture::LayeredTexture(uint64_t id, const ElementPtr element, const Document & /*doc*/, const std::string &name) :
- Object(id, element, name), blendMode(BlendMode_Modulate), alpha(1) {
- const ScopePtr sc = GetRequiredScope(element);
-
- ElementPtr BlendModes = sc->GetElement("BlendModes");
- ElementPtr Alphas = sc->GetElement("Alphas");
-
- if (BlendModes != nullptr) {
- blendMode = (BlendMode)ParseTokenAsInt(GetRequiredToken(BlendModes, 0));
- }
- if (Alphas != nullptr) {
- alpha = ParseTokenAsFloat(GetRequiredToken(Alphas, 0));
- }
-}
-
-LayeredTexture::~LayeredTexture() {
-}
-
-void LayeredTexture::fillTexture(const Document &doc) {
- const std::vector<const Connection *> &conns = doc.GetConnectionsByDestinationSequenced(ID());
- for (size_t i = 0; i < conns.size(); ++i) {
- const Connection *con = conns.at(i);
-
- const Object *const ob = con->SourceObject();
- if (!ob) {
- DOMWarning("failed to read source object for texture link, ignoring", element);
- continue;
- }
-
- const Texture *const tex = dynamic_cast<const Texture *>(ob);
-
- textures.push_back(tex);
- }
-}
-
-// ------------------------------------------------------------------------------------------------
-Video::Video(uint64_t id, const ElementPtr element, const Document &doc, const std::string &name) :
- Object(id, element, name) {
- const ScopePtr sc = GetRequiredScope(element);
-
- const ElementPtr Type = sc->GetElement("Type");
- // File Version 7500 Crashes if this is not checked fully.
- // As of writing this comment 7700 exists, in August 2020
- ElementPtr FileName = nullptr;
- if (HasElement(sc, "Filename")) {
- FileName = (ElementPtr)sc->GetElement("Filename");
- } else if (HasElement(sc, "FileName")) {
- FileName = (ElementPtr)sc->GetElement("FileName");
- } else {
- print_error("file has invalid video material returning...");
- return;
- }
- const ElementPtr RelativeFilename = sc->GetElement("RelativeFilename");
- const ElementPtr Content = sc->GetElement("Content");
-
- if (Type) {
- type = ParseTokenAsString(GetRequiredToken(Type, 0));
- }
-
- if (FileName) {
- fileName = ParseTokenAsString(GetRequiredToken(FileName, 0));
- }
-
- if (RelativeFilename) {
- relativeFileName = ParseTokenAsString(GetRequiredToken(RelativeFilename, 0));
- }
-
- if (Content && !Content->Tokens().empty()) {
- //this field is omitted when the embedded texture is already loaded, let's ignore if it's not found
- try {
- const Token *token = GetRequiredToken(Content, 0);
- const char *data = token->begin();
- if (!token->IsBinary()) {
- if (*data != '"') {
- DOMError("embedded content is not surrounded by quotation marks", element);
- } else {
- size_t targetLength = 0;
- const size_t numTokens = Content->Tokens().size();
- // First time compute size (it could be large like 64Gb and it is good to allocate it once)
- for (uint32_t tokenIdx = 0; tokenIdx < numTokens; ++tokenIdx) {
- const Token *dataToken = GetRequiredToken(Content, tokenIdx);
- size_t tokenLength = dataToken->end() - dataToken->begin() - 2; // ignore double quotes
- const char *base64data = dataToken->begin() + 1;
- const size_t outLength = Util::ComputeDecodedSizeBase64(base64data, tokenLength);
- if (outLength == 0) {
- DOMError("Corrupted embedded content found", element);
- }
- targetLength += outLength;
- }
- if (targetLength == 0) {
- DOMError("Corrupted embedded content found", element);
- } else {
- content = new uint8_t[targetLength];
- contentLength = static_cast<uint64_t>(targetLength);
- size_t dst_offset = 0;
- for (uint32_t tokenIdx = 0; tokenIdx < numTokens; ++tokenIdx) {
- const Token *dataToken = GetRequiredToken(Content, tokenIdx);
- ERR_FAIL_COND(!dataToken);
- size_t tokenLength = dataToken->end() - dataToken->begin() - 2; // ignore double quotes
- const char *base64data = dataToken->begin() + 1;
- dst_offset += Util::DecodeBase64(base64data, tokenLength, content + dst_offset, targetLength - dst_offset);
- }
- if (targetLength != dst_offset) {
- delete[] content;
- contentLength = 0;
- DOMError("Corrupted embedded content found", element);
- }
- }
- }
- } else if (static_cast<size_t>(token->end() - data) < 5) {
- DOMError("binary data array is too short, need five (5) bytes for type signature and element count", element);
- } else if (*data != 'R') {
- DOMWarning("video content is not raw binary data, ignoring", element);
- } else {
- // read number of elements
- uint32_t len = 0;
- ::memcpy(&len, data + 1, sizeof(len));
- AI_SWAP4(len);
-
- contentLength = len;
-
- content = new uint8_t[len];
- ::memcpy(content, data + 5, len);
- }
- } catch (...) {
- // //we don't need the content data for contents that has already been loaded
- // ASSIMP_LOG_VERBOSE_DEBUG_F("Caught exception in FBXMaterial (likely because content was already loaded): ",
- // runtimeError.what());
- }
- }
-}
-
-Video::~Video() {
- if (content) {
- delete[] content;
- }
-}
-} // namespace FBXDocParser
diff --git a/modules/fbx/fbx_parser/FBXMeshGeometry.cpp b/modules/fbx/fbx_parser/FBXMeshGeometry.cpp
deleted file mode 100644
index 591f2e5503..0000000000
--- a/modules/fbx/fbx_parser/FBXMeshGeometry.cpp
+++ /dev/null
@@ -1,459 +0,0 @@
-/*************************************************************************/
-/* FBXMeshGeometry.cpp */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* https://godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2022 Juan Linietsky, Ariel Manzur. */
-/* Copyright (c) 2014-2022 Godot Engine contributors (cf. AUTHORS.md). */
-/* */
-/* Permission is hereby granted, free of charge, to any person obtaining */
-/* a copy of this software and associated documentation files (the */
-/* "Software"), to deal in the Software without restriction, including */
-/* without limitation the rights to use, copy, modify, merge, publish, */
-/* distribute, sublicense, and/or sell copies of the Software, and to */
-/* permit persons to whom the Software is furnished to do so, subject to */
-/* the following conditions: */
-/* */
-/* The above copyright notice and this permission notice shall be */
-/* included in all copies or substantial portions of the Software. */
-/* */
-/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
-/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
-/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
-/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
-/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
-/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
-/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
-/*************************************************************************/
-
-/*
-Open Asset Import Library (assimp)
-----------------------------------------------------------------------
-
-Copyright (c) 2006-2019, assimp team
-
-
-All rights reserved.
-
-Redistribution and use of this software in source and binary forms,
-with or without modification, are permitted provided that the
-following conditions are met:
-
-* Redistributions of source code must retain the above
- copyright notice, this list of conditions and the
- following disclaimer.
-
-* Redistributions in binary form must 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 the assimp team, nor the names of its
- contributors may be used to endorse or promote products
- derived from this software without specific prior
- written permission of the assimp team.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(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 FBXMeshGeometry.cpp
- * @brief Assimp::FBX::MeshGeometry implementation
- */
-
-#include <functional>
-
-#include "FBXDocument.h"
-#include "FBXDocumentUtil.h"
-#include "FBXImportSettings.h"
-#include "FBXMeshGeometry.h"
-#include "core/math/vector3.h"
-
-namespace FBXDocParser {
-
-using namespace Util;
-
-// ------------------------------------------------------------------------------------------------
-Geometry::Geometry(uint64_t id, const ElementPtr element, const std::string &name, const Document &doc) :
- Object(id, element, name) {
- const std::vector<const Connection *> &conns = doc.GetConnectionsByDestinationSequenced(ID(), "Deformer");
- for (const Connection *con : conns) {
- const Skin *sk = ProcessSimpleConnection<Skin>(*con, false, "Skin -> Geometry", element);
- if (sk) {
- skin = sk;
- }
- const BlendShape *bsp = ProcessSimpleConnection<BlendShape>(*con, false, "BlendShape -> Geometry",
- element);
- if (bsp) {
- blendShapes.push_back(bsp);
- }
- }
-}
-
-// ------------------------------------------------------------------------------------------------
-Geometry::~Geometry() {
- // empty
-}
-
-// ------------------------------------------------------------------------------------------------
-const std::vector<const BlendShape *> &Geometry::get_blend_shapes() const {
- return blendShapes;
-}
-
-// ------------------------------------------------------------------------------------------------
-const Skin *Geometry::DeformerSkin() const {
- return skin;
-}
-
-// ------------------------------------------------------------------------------------------------
-MeshGeometry::MeshGeometry(uint64_t id, const ElementPtr element, const std::string &name, const Document &doc) :
- Geometry(id, element, name, doc) {
- print_verbose("mesh name: " + String(name.c_str()));
-
- ScopePtr sc = element->Compound();
- ERR_FAIL_COND_MSG(sc == nullptr, "failed to read geometry, prevented crash");
- ERR_FAIL_COND_MSG(!HasElement(sc, "Vertices"), "Detected mesh with no vertices, didn't populate the mesh");
-
- // must have Mesh elements:
- const ElementPtr Vertices = GetRequiredElement(sc, "Vertices", element);
- const ElementPtr PolygonVertexIndex = GetRequiredElement(sc, "PolygonVertexIndex", element);
-
- if (HasElement(sc, "Edges")) {
- const ElementPtr element_edges = GetRequiredElement(sc, "Edges", element);
- ParseVectorDataArray(m_edges, element_edges);
- }
-
- // read mesh data into arrays
- ParseVectorDataArray(m_vertices, Vertices);
- ParseVectorDataArray(m_face_indices, PolygonVertexIndex);
-
- ERR_FAIL_COND_MSG(m_vertices.empty(), "mesh with no vertices in FBX file, did you mean to delete it?");
- ERR_FAIL_COND_MSG(m_face_indices.empty(), "mesh has no faces, was this intended?");
-
- // Retrieve layer elements, for all of the mesh
- const ElementCollection &Layer = sc->GetCollection("Layer");
-
- // Store all layers
- std::vector<std::tuple<int, std::string>> valid_layers;
-
- // now read the sub mesh information from the geometry (normals, uvs, etc)
- for (ElementMap::const_iterator it = Layer.first; it != Layer.second; ++it) {
- const ScopePtr layer = GetRequiredScope(it->second);
- const ElementCollection &LayerElement = layer->GetCollection("LayerElement");
- for (ElementMap::const_iterator eit = LayerElement.first; eit != LayerElement.second; ++eit) {
- std::string layer_name = eit->first;
- ElementPtr element_layer = eit->second;
- const ScopePtr layer_element = GetRequiredScope(element_layer);
-
- // Actual usable 'type' LayerElementUV, LayerElementNormal, etc
- const ElementPtr Type = GetRequiredElement(layer_element, "Type");
- const ElementPtr TypedIndex = GetRequiredElement(layer_element, "TypedIndex");
- const std::string &type = ParseTokenAsString(GetRequiredToken(Type, 0));
- const int typedIndex = ParseTokenAsInt(GetRequiredToken(TypedIndex, 0));
-
- // we only need the layer name and the typed index.
- valid_layers.push_back(std::tuple<int, std::string>(typedIndex, type));
- }
- }
-
- // get object / mesh directly from the FBX by the element ID.
- const ScopePtr top = GetRequiredScope(element);
-
- // iterate over all layers for the mesh (uvs, normals, smoothing groups, colors, etc)
- for (size_t x = 0; x < valid_layers.size(); x++) {
- const int layer_id = std::get<0>(valid_layers[x]);
- const std::string &layer_type_name = std::get<1>(valid_layers[x]);
-
- // Get collection of elements from the XLayerMap (example: LayerElementUV)
- // this must contain our proper elements.
-
- // This is stupid, because it means we select them ALL not just the one we want.
- // but it's fine we can match by id.
-
- const ElementCollection &candidates = top->GetCollection(layer_type_name);
-
- ElementMap::const_iterator iter;
- for (iter = candidates.first; iter != candidates.second; ++iter) {
- const ScopePtr layer_scope = GetRequiredScope(iter->second);
- TokenPtr layer_token = GetRequiredToken(iter->second, 0);
- const int index = ParseTokenAsInt(layer_token);
-
- ERR_FAIL_COND_MSG(layer_scope == nullptr, "prevented crash, layer scope is invalid");
-
- if (index == layer_id) {
- const std::string &MappingInformationType = ParseTokenAsString(GetRequiredToken(
- GetRequiredElement(layer_scope, "MappingInformationType"), 0));
-
- const std::string &ReferenceInformationType = ParseTokenAsString(GetRequiredToken(
- GetRequiredElement(layer_scope, "ReferenceInformationType"), 0));
-
- if (layer_type_name == "LayerElementUV") {
- if (index == 0) {
- m_uv_0 = resolve_vertex_data_array<Vector2>(layer_scope, MappingInformationType, ReferenceInformationType, "UV");
- } else if (index == 1) {
- m_uv_1 = resolve_vertex_data_array<Vector2>(layer_scope, MappingInformationType, ReferenceInformationType, "UV");
- }
- } else if (layer_type_name == "LayerElementMaterial") {
- m_material_allocation_ids = resolve_vertex_data_array<int>(layer_scope, MappingInformationType, ReferenceInformationType, "Materials");
- } else if (layer_type_name == "LayerElementNormal") {
- m_normals = resolve_vertex_data_array<Vector3>(layer_scope, MappingInformationType, ReferenceInformationType, "Normals");
- } else if (layer_type_name == "LayerElementColor") {
- m_colors = resolve_vertex_data_array<Color>(layer_scope, MappingInformationType, ReferenceInformationType, "Colors", "ColorIndex");
- }
- }
- }
- }
-
- print_verbose("Mesh statistics \nuv_0: " + m_uv_0.debug_info() + "\nuv_1: " + m_uv_1.debug_info() + "\nvertices: " + itos(m_vertices.size()));
-
- // Compose the edge of the mesh.
- // You can see how the edges are stored into the FBX here: https://gist.github.com/AndreaCatania/da81840f5aa3b2feedf189e26c5a87e6
- for (size_t i = 0; i < m_edges.size(); i += 1) {
- ERR_FAIL_INDEX_MSG((size_t)m_edges[i], m_face_indices.size(), "The edge is pointing to a weird location in the face indices. The FBX is corrupted.");
- int polygon_vertex_0 = m_face_indices[m_edges[i]];
- int polygon_vertex_1;
- if (polygon_vertex_0 < 0) {
- // The polygon_vertex_0 points to the end of a polygon, so it's
- // connected with the beginning of polygon in the edge list.
-
- // Fist invert the vertex.
- polygon_vertex_0 = ~polygon_vertex_0;
-
- // Search the start vertex of the polygon.
- // Iterate from the polygon_vertex_index backward till the start of
- // the polygon is found.
- ERR_FAIL_COND_MSG(m_edges[i] - 1 < 0, "The polygon is not yet started and we already need the final vertex. This FBX is corrupted.");
- bool found_it = false;
- for (int x = m_edges[i] - 1; x >= 0; x -= 1) {
- if (x == 0) {
- // This for sure is the start.
- polygon_vertex_1 = m_face_indices[x];
- found_it = true;
- break;
- } else if (m_face_indices[x] < 0) {
- // This is the end of the previous polygon, so the next is
- // the start of the polygon we need.
- polygon_vertex_1 = m_face_indices[x + 1];
- found_it = true;
- break;
- }
- }
- // As the algorithm above, this check is useless. Because the first
- // ever vertex is always considered the beginning of a polygon.
- ERR_FAIL_COND_MSG(found_it == false, "Was not possible to find the first vertex of this polygon. FBX file is corrupted.");
-
- } else {
- ERR_FAIL_INDEX_MSG((size_t)(m_edges[i] + 1), m_face_indices.size(), "FBX The other FBX edge seems to point to an invalid vertices. This FBX file is corrupted.");
- // Take the next vertex
- polygon_vertex_1 = m_face_indices[m_edges[i] + 1];
- }
-
- if (polygon_vertex_1 < 0) {
- // We don't care if the `polygon_vertex_1` is the end of the polygon,
- // for `polygon_vertex_1` so we can just invert it.
- polygon_vertex_1 = ~polygon_vertex_1;
- }
-
- ERR_FAIL_COND_MSG(polygon_vertex_0 == polygon_vertex_1, "The vertices of this edge can't be the same, Is this a point???. This FBX file is corrupted.");
-
- // Just create the edge.
- edge_map.push_back({ polygon_vertex_0, polygon_vertex_1 });
- }
-}
-
-MeshGeometry::~MeshGeometry() {
- // empty
-}
-
-const std::vector<Vector3> &MeshGeometry::get_vertices() const {
- return m_vertices;
-}
-
-const std::vector<MeshGeometry::Edge> &MeshGeometry::get_edge_map() const {
- return edge_map;
-}
-
-const std::vector<int> &MeshGeometry::get_polygon_indices() const {
- return m_face_indices;
-}
-
-const std::vector<int> &MeshGeometry::get_edges() const {
- return m_edges;
-}
-
-const MeshGeometry::MappingData<Vector3> &MeshGeometry::get_normals() const {
- return m_normals;
-}
-
-const MeshGeometry::MappingData<Vector2> &MeshGeometry::get_uv_0() const {
- //print_verbose("get uv_0 " + m_uv_0.debug_info() );
- return m_uv_0;
-}
-
-const MeshGeometry::MappingData<Vector2> &MeshGeometry::get_uv_1() const {
- //print_verbose("get uv_1 " + m_uv_1.debug_info() );
- return m_uv_1;
-}
-
-const MeshGeometry::MappingData<Color> &MeshGeometry::get_colors() const {
- return m_colors;
-}
-
-const MeshGeometry::MappingData<int> &MeshGeometry::get_material_allocation_id() const {
- return m_material_allocation_ids;
-}
-
-int MeshGeometry::get_edge_id(const std::vector<Edge> &p_map, int p_vertex_a, int p_vertex_b) {
- for (size_t i = 0; i < p_map.size(); i += 1) {
- if ((p_map[i].vertex_0 == p_vertex_a && p_map[i].vertex_1 == p_vertex_b) || (p_map[i].vertex_1 == p_vertex_a && p_map[i].vertex_0 == p_vertex_b)) {
- return i;
- }
- }
- return -1;
-}
-
-MeshGeometry::Edge MeshGeometry::get_edge(const std::vector<Edge> &p_map, int p_id) {
- ERR_FAIL_INDEX_V_MSG((size_t)p_id, p_map.size(), Edge({ -1, -1 }), "ID not found.");
- return p_map[p_id];
-}
-
-template <class T>
-MeshGeometry::MappingData<T> MeshGeometry::resolve_vertex_data_array(
- const ScopePtr source,
- const std::string &MappingInformationType,
- const std::string &ReferenceInformationType,
- const std::string &dataElementName,
- const std::string &indexOverride) {
- ERR_FAIL_COND_V_MSG(source == nullptr, MappingData<T>(), "Invalid scope operator preventing memory corruption");
-
- // UVIndex, MaterialIndex, NormalIndex, etc..
- std::string indexDataElementName;
-
- if (!indexOverride.empty()) {
- // Colors should become ColorIndex
- indexDataElementName = indexOverride;
- } else {
- // Some indexes will exist.
- indexDataElementName = dataElementName + "Index";
- }
-
- // goal: expand everything to be per vertex
-
- ReferenceType l_ref_type = ReferenceType::direct;
-
- // Read the reference type into the enumeration
- if (ReferenceInformationType == "IndexToDirect") {
- l_ref_type = ReferenceType::index_to_direct;
- } else if (ReferenceInformationType == "Index") {
- // set non legacy index to direct mapping
- l_ref_type = ReferenceType::index;
- } else if (ReferenceInformationType == "Direct") {
- l_ref_type = ReferenceType::direct;
- } else {
- ERR_FAIL_V_MSG(MappingData<T>(), "invalid reference type has the FBX format changed?");
- }
-
- MapType l_map_type = MapType::none;
-
- if (MappingInformationType == "None") {
- l_map_type = MapType::none;
- } else if (MappingInformationType == "ByVertice") {
- l_map_type = MapType::vertex;
- } else if (MappingInformationType == "ByPolygonVertex") {
- l_map_type = MapType::polygon_vertex;
- } else if (MappingInformationType == "ByPolygon") {
- l_map_type = MapType::polygon;
- } else if (MappingInformationType == "ByEdge") {
- l_map_type = MapType::edge;
- } else if (MappingInformationType == "AllSame") {
- l_map_type = MapType::all_the_same;
- } else {
- print_error("invalid mapping type: " + String(MappingInformationType.c_str()));
- }
-
- // create mapping data
- MeshGeometry::MappingData<T> tempData;
- tempData.map_type = l_map_type;
- tempData.ref_type = l_ref_type;
-
- // parse data into array
- ParseVectorDataArray(tempData.data, GetRequiredElement(source, dataElementName));
-
- // index array won't always exist
- const ElementPtr element = GetOptionalElement(source, indexDataElementName);
- if (element) {
- ParseVectorDataArray(tempData.index, element);
- }
-
- return tempData;
-}
-// ------------------------------------------------------------------------------------------------
-ShapeGeometry::ShapeGeometry(uint64_t id, const ElementPtr element, const std::string &name, const Document &doc) :
- Geometry(id, element, name, doc) {
- const ScopePtr sc = element->Compound();
- if (nullptr == sc) {
- DOMError("failed to read Geometry object (class: Shape), no data scope found");
- }
- const ElementPtr Indexes = GetRequiredElement(sc, "Indexes", element);
- const ElementPtr Normals = GetRequiredElement(sc, "Normals", element);
- const ElementPtr Vertices = GetRequiredElement(sc, "Vertices", element);
- ParseVectorDataArray(m_indices, Indexes);
- ParseVectorDataArray(m_vertices, Vertices);
- ParseVectorDataArray(m_normals, Normals);
-}
-
-// ------------------------------------------------------------------------------------------------
-ShapeGeometry::~ShapeGeometry() {
- // empty
-}
-// ------------------------------------------------------------------------------------------------
-const std::vector<Vector3> &ShapeGeometry::GetVertices() const {
- return m_vertices;
-}
-// ------------------------------------------------------------------------------------------------
-const std::vector<Vector3> &ShapeGeometry::GetNormals() const {
- return m_normals;
-}
-// ------------------------------------------------------------------------------------------------
-const std::vector<unsigned int> &ShapeGeometry::GetIndices() const {
- return m_indices;
-}
-// ------------------------------------------------------------------------------------------------
-LineGeometry::LineGeometry(uint64_t id, const ElementPtr element, const std::string &name, const Document &doc) :
- Geometry(id, element, name, doc) {
- const ScopePtr sc = element->Compound();
- if (!sc) {
- DOMError("failed to read Geometry object (class: Line), no data scope found");
- }
- const ElementPtr Points = GetRequiredElement(sc, "Points", element);
- const ElementPtr PointsIndex = GetRequiredElement(sc, "PointsIndex", element);
- ParseVectorDataArray(m_vertices, Points);
- ParseVectorDataArray(m_indices, PointsIndex);
-}
-
-// ------------------------------------------------------------------------------------------------
-LineGeometry::~LineGeometry() {
- // empty
-}
-// ------------------------------------------------------------------------------------------------
-const std::vector<Vector3> &LineGeometry::GetVertices() const {
- return m_vertices;
-}
-// ------------------------------------------------------------------------------------------------
-const std::vector<int> &LineGeometry::GetIndices() const {
- return m_indices;
-}
-} // namespace FBXDocParser
diff --git a/modules/fbx/fbx_parser/FBXMeshGeometry.h b/modules/fbx/fbx_parser/FBXMeshGeometry.h
deleted file mode 100644
index 9f0242d233..0000000000
--- a/modules/fbx/fbx_parser/FBXMeshGeometry.h
+++ /dev/null
@@ -1,263 +0,0 @@
-/*************************************************************************/
-/* FBXMeshGeometry.h */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* https://godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2022 Juan Linietsky, Ariel Manzur. */
-/* Copyright (c) 2014-2022 Godot Engine contributors (cf. AUTHORS.md). */
-/* */
-/* Permission is hereby granted, free of charge, to any person obtaining */
-/* a copy of this software and associated documentation files (the */
-/* "Software"), to deal in the Software without restriction, including */
-/* without limitation the rights to use, copy, modify, merge, publish, */
-/* distribute, sublicense, and/or sell copies of the Software, and to */
-/* permit persons to whom the Software is furnished to do so, subject to */
-/* the following conditions: */
-/* */
-/* The above copyright notice and this permission notice shall be */
-/* included in all copies or substantial portions of the Software. */
-/* */
-/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
-/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
-/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
-/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
-/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
-/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
-/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
-/*************************************************************************/
-
-/*
-Open Asset Import Library (assimp)
-----------------------------------------------------------------------
-
-Copyright (c) 2006-2019, assimp team
-
-
-All rights reserved.
-
-Redistribution and use of this software in source and binary forms,
-with or without modification, are permitted provided that the
-following conditions are met:
-
-* Redistributions of source code must retain the above
-copyright notice, this list of conditions and the
-following disclaimer.
-
-* Redistributions in binary form must 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 the assimp team, nor the names of its
-contributors may be used to endorse or promote products
-derived from this software without specific prior
-written permission of the assimp team.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(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 FBX_MESH_GEOMETRY_H
-#define FBX_MESH_GEOMETRY_H
-
-#include "core/math/color.h"
-#include "core/math/vector2.h"
-#include "core/math/vector3.h"
-#include "core/templates/vector.h"
-
-#include "FBXDocument.h"
-#include "FBXParser.h"
-
-#include <iostream>
-
-#define AI_MAX_NUMBER_OF_TEXTURECOORDS 4
-#define AI_MAX_NUMBER_OF_COLOR_SETS 8
-
-namespace FBXDocParser {
-
-/*
- * DOM base class for all kinds of FBX geometry
- */
-class Geometry : public Object {
-public:
- Geometry(uint64_t id, const ElementPtr element, const std::string &name, const Document &doc);
- virtual ~Geometry();
-
- /** Get the Skin attached to this geometry or nullptr */
- const Skin *DeformerSkin() const;
-
- const std::vector<const BlendShape *> &get_blend_shapes() const;
-
- size_t get_blend_shape_count() const {
- return blendShapes.size();
- }
-
-private:
- const Skin *skin = nullptr;
- std::vector<const BlendShape *> blendShapes;
-};
-
-typedef std::vector<int> MatIndexArray;
-
-/// Map Geometry stores the FBX file information.
-///
-/// # FBX doc.
-/// ## Reference type declared:
-/// - Direct (directly related to the mapping information type)
-/// - IndexToDirect (Map with key value, meaning depends on the MappingInformationType)
-///
-/// ## Map Type:
-/// * None The mapping is undetermined.
-/// * ByVertex There will be one mapping coordinate for each surface control point/vertex (ControlPoint is a vertex).
-/// * If you have direct reference type vertices[x]
-/// * If you have IndexToDirect reference type the UV
-/// * ByPolygonVertex There will be one mapping coordinate for each vertex, for every polygon of which it is a part. This means that a vertex will have as many mapping coordinates as polygons of which it is a part. (Sorted by polygon, referencing vertex)
-/// * ByPolygon There can be only one mapping coordinate for the whole polygon.
-/// * One mapping per polygon polygon x has this normal x
-/// * For each vertex of the polygon then set the normal to x
-/// * ByEdge There will be one mapping coordinate for each unique edge in the mesh. This is meant to be used with smoothing layer elements. (Mapping is referencing the edge id)
-/// * AllSame There can be only one mapping coordinate for the whole surface.
-class MeshGeometry : public Geometry {
-public:
- enum class MapType {
- none = 0, // No mapping type. Stored as "None".
- vertex, // Maps per vertex. Stored as "ByVertice".
- polygon_vertex, // Maps per polygon vertex. Stored as "ByPolygonVertex".
- polygon, // Maps per polygon. Stored as "ByPolygon".
- edge, // Maps per edge. Stored as "ByEdge".
- all_the_same // Uaps to everything. Stored as "AllSame".
- };
-
- enum class ReferenceType {
- direct = 0,
- index = 1,
- index_to_direct = 2
- };
-
- template <class T>
- struct MappingData {
- MapType map_type = MapType::none;
- ReferenceType ref_type = ReferenceType::direct;
- std::vector<T> data;
- /// The meaning of the indices depends from the `MapType`.
- /// If `ref_type` is `direct` this map is hollow.
- std::vector<int> index;
-
- String debug_info() const {
- return "indexes: " + itos(index.size()) + " data: " + itos(data.size());
- }
- };
-
- struct Edge {
- int vertex_0 = 0, vertex_1 = 0;
- Edge(int v0, int v1) :
- vertex_0(v0), vertex_1(v1) {}
- Edge() {}
- };
-
-public:
- MeshGeometry(uint64_t id, const ElementPtr element, const std::string &name, const Document &doc);
-
- virtual ~MeshGeometry();
-
- const std::vector<Vector3> &get_vertices() const;
- const std::vector<Edge> &get_edge_map() const;
- const std::vector<int> &get_polygon_indices() const;
- const std::vector<int> &get_edges() const;
- const MappingData<Vector3> &get_normals() const;
- const MappingData<Vector2> &get_uv_0() const;
- const MappingData<Vector2> &get_uv_1() const;
- const MappingData<Color> &get_colors() const;
- const MappingData<int> &get_material_allocation_id() const;
-
- /// Returns -1 if the vertices doesn't form an edge. Vertex order, doesn't
- // matter.
- static int get_edge_id(const std::vector<Edge> &p_map, int p_vertex_a, int p_vertex_b);
- // Returns the edge point bu that ID, or the edge with -1 vertices if the
- // id is not valid.
- static Edge get_edge(const std::vector<Edge> &p_map, int p_id);
-
-private:
- // Read directly from the FBX file.
- std::vector<Vector3> m_vertices;
- std::vector<Edge> edge_map;
- std::vector<int> m_face_indices;
- std::vector<int> m_edges;
- MappingData<Vector3> m_normals;
- MappingData<Vector2> m_uv_0; // first uv coordinates
- MappingData<Vector2> m_uv_1; // second uv coordinates
- MappingData<Color> m_colors; // colors for the mesh
- MappingData<int> m_material_allocation_ids; // slot of material used
-
- template <class T>
- MappingData<T> resolve_vertex_data_array(
- const ScopePtr source,
- const std::string &MappingInformationType,
- const std::string &ReferenceInformationType,
- const std::string &dataElementName,
- const std::string &indexOverride = "");
-};
-
-/*
- * DOM class for FBX geometry of type "Shape"
- */
-class ShapeGeometry : public Geometry {
-public:
- /** The class constructor */
- ShapeGeometry(uint64_t id, const ElementPtr element, const std::string &name, const Document &doc);
-
- /** The class destructor */
- virtual ~ShapeGeometry();
-
- /** Get a list of all vertex points, non-unique*/
- const std::vector<Vector3> &GetVertices() const;
-
- /** Get a list of all vertex normals or an empty array if
- * no normals are specified. */
- const std::vector<Vector3> &GetNormals() const;
-
- /** Return list of vertex indices. */
- const std::vector<unsigned int> &GetIndices() const;
-
-private:
- std::vector<Vector3> m_vertices;
- std::vector<Vector3> m_normals;
- std::vector<unsigned int> m_indices;
-};
-/**
- * DOM class for FBX geometry of type "Line"
- */
-class LineGeometry : public Geometry {
-public:
- /** The class constructor */
- LineGeometry(uint64_t id, const ElementPtr element, const std::string &name, const Document &doc);
-
- /** The class destructor */
- virtual ~LineGeometry();
-
- /** Get a list of all vertex points, non-unique*/
- const std::vector<Vector3> &GetVertices() const;
-
- /** Return list of vertex indices. */
- const std::vector<int> &GetIndices() const;
-
-private:
- std::vector<Vector3> m_vertices;
- std::vector<int> m_indices;
-};
-} // namespace FBXDocParser
-
-#endif // FBX_MESH_GEOMETRY_H
diff --git a/modules/fbx/fbx_parser/FBXModel.cpp b/modules/fbx/fbx_parser/FBXModel.cpp
deleted file mode 100644
index 625ee6237b..0000000000
--- a/modules/fbx/fbx_parser/FBXModel.cpp
+++ /dev/null
@@ -1,171 +0,0 @@
-/*************************************************************************/
-/* FBXModel.cpp */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* https://godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2022 Juan Linietsky, Ariel Manzur. */
-/* Copyright (c) 2014-2022 Godot Engine contributors (cf. AUTHORS.md). */
-/* */
-/* Permission is hereby granted, free of charge, to any person obtaining */
-/* a copy of this software and associated documentation files (the */
-/* "Software"), to deal in the Software without restriction, including */
-/* without limitation the rights to use, copy, modify, merge, publish, */
-/* distribute, sublicense, and/or sell copies of the Software, and to */
-/* permit persons to whom the Software is furnished to do so, subject to */
-/* the following conditions: */
-/* */
-/* The above copyright notice and this permission notice shall be */
-/* included in all copies or substantial portions of the Software. */
-/* */
-/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
-/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
-/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
-/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
-/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
-/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
-/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
-/*************************************************************************/
-
-/*
-Open Asset Import Library (assimp)
-----------------------------------------------------------------------
-
-Copyright (c) 2006-2019, assimp team
-
-
-All rights reserved.
-
-Redistribution and use of this software in source and binary forms,
-with or without modification, are permitted provided that the
-following conditions are met:
-
-* Redistributions of source code must retain the above
- copyright notice, this list of conditions and the
- following disclaimer.
-
-* Redistributions in binary form must 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 the assimp team, nor the names of its
- contributors may be used to endorse or promote products
- derived from this software without specific prior
- written permission of the assimp team.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(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 FBXModel.cpp
- * @brief Assimp::FBX::Model implementation
- */
-
-#include "FBXDocument.h"
-#include "FBXDocumentUtil.h"
-#include "FBXMeshGeometry.h"
-#include "FBXParser.h"
-
-namespace FBXDocParser {
-
-using namespace Util;
-
-// ------------------------------------------------------------------------------------------------
-Model::Model(uint64_t id, const ElementPtr element, const Document &doc, const std::string &name) :
- Object(id, element, name), shading("Y") {
- const ScopePtr sc = GetRequiredScope(element);
- const ElementPtr Shading = sc->GetElement("Shading");
- const ElementPtr Culling = sc->GetElement("Culling");
-
- if (Shading) {
- shading = GetRequiredToken(Shading, 0)->StringContents();
- }
-
- if (Culling) {
- culling = ParseTokenAsString(GetRequiredToken(Culling, 0));
- }
-
- ResolveLinks(element, doc);
-}
-
-// ------------------------------------------------------------------------------------------------
-Model::~Model() {
-}
-
-ModelLimbNode::ModelLimbNode(uint64_t id, const ElementPtr element, const Document &doc, const std::string &name) :
- Model(id, element, doc, name){};
-
-ModelLimbNode::~ModelLimbNode() {
-}
-
-// ------------------------------------------------------------------------------------------------
-void Model::ResolveLinks(const ElementPtr element, const Document &doc) {
- const char *const arr[] = { "Geometry", "Material", "NodeAttribute" };
-
- // resolve material
- const std::vector<const Connection *> &conns = doc.GetConnectionsByDestinationSequenced(ID(), arr, 3);
-
- materials.reserve(conns.size());
- geometry.reserve(conns.size());
- attributes.reserve(conns.size());
- for (const Connection *con : conns) {
- // material and geometry links should be Object-Object connections
- if (con->PropertyName().length()) {
- continue;
- }
-
- const Object *const ob = con->SourceObject();
- if (!ob) {
- //DOMWarning("failed to read source object for incoming Model link, ignoring",&element);
- continue;
- }
-
- const Material *const mat = dynamic_cast<const Material *>(ob);
- if (mat) {
- materials.push_back(mat);
- continue;
- }
-
- const Geometry *const geo = dynamic_cast<const Geometry *>(ob);
- if (geo) {
- geometry.push_back(geo);
- continue;
- }
-
- const NodeAttribute *const att = dynamic_cast<const NodeAttribute *>(ob);
- if (att) {
- attributes.push_back(att);
- continue;
- }
-
- DOMWarning("source object for model link is neither Material, NodeAttribute nor Geometry, ignoring", element);
- continue;
- }
-}
-
-// ------------------------------------------------------------------------------------------------
-bool Model::IsNull() const {
- const std::vector<const NodeAttribute *> &attrs = GetAttributes();
- for (const NodeAttribute *att : attrs) {
- const Null *null_tag = dynamic_cast<const Null *>(att);
- if (null_tag) {
- return true;
- }
- }
-
- return false;
-}
-} // namespace FBXDocParser
diff --git a/modules/fbx/fbx_parser/FBXNodeAttribute.cpp b/modules/fbx/fbx_parser/FBXNodeAttribute.cpp
deleted file mode 100644
index c8ea03adec..0000000000
--- a/modules/fbx/fbx_parser/FBXNodeAttribute.cpp
+++ /dev/null
@@ -1,174 +0,0 @@
-/*************************************************************************/
-/* FBXNodeAttribute.cpp */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* https://godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2022 Juan Linietsky, Ariel Manzur. */
-/* Copyright (c) 2014-2022 Godot Engine contributors (cf. AUTHORS.md). */
-/* */
-/* Permission is hereby granted, free of charge, to any person obtaining */
-/* a copy of this software and associated documentation files (the */
-/* "Software"), to deal in the Software without restriction, including */
-/* without limitation the rights to use, copy, modify, merge, publish, */
-/* distribute, sublicense, and/or sell copies of the Software, and to */
-/* permit persons to whom the Software is furnished to do so, subject to */
-/* the following conditions: */
-/* */
-/* The above copyright notice and this permission notice shall be */
-/* included in all copies or substantial portions of the Software. */
-/* */
-/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
-/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
-/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
-/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
-/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
-/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
-/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
-/*************************************************************************/
-
-/*
-Open Asset Import Library (assimp)
-----------------------------------------------------------------------
-
-Copyright (c) 2006-2019, assimp team
-
-
-All rights reserved.
-
-Redistribution and use of this software in source and binary forms,
-with or without modification, are permitted provided that the
-following conditions are met:
-
-* Redistributions of source code must retain the above
- copyright notice, this list of conditions and the
- following disclaimer.
-
-* Redistributions in binary form must 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 the assimp team, nor the names of its
- contributors may be used to endorse or promote products
- derived from this software without specific prior
- written permission of the assimp team.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(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 FBXNoteAttribute.cpp
- * @brief Assimp::FBX::NodeAttribute (and subclasses) implementation
- */
-
-#include "FBXDocument.h"
-#include "FBXDocumentUtil.h"
-#include "FBXParser.h"
-#include <iostream>
-
-namespace FBXDocParser {
-using namespace Util;
-
-// ------------------------------------------------------------------------------------------------
-NodeAttribute::NodeAttribute(uint64_t id, const ElementPtr element, const Document &doc, const std::string &name) :
- Object(id, element, name) {
-}
-
-// ------------------------------------------------------------------------------------------------
-NodeAttribute::~NodeAttribute() {
- // empty
-}
-
-// ------------------------------------------------------------------------------------------------
-CameraSwitcher::CameraSwitcher(uint64_t id, const ElementPtr element, const Document &doc, const std::string &name) :
- NodeAttribute(id, element, doc, name) {
- const ScopePtr sc = GetRequiredScope(element);
- const ElementPtr CameraId = sc->GetElement("CameraId");
- const ElementPtr CameraName = sc->GetElement("CameraName");
- const ElementPtr CameraIndexName = sc->GetElement("CameraIndexName");
-
- if (CameraId) {
- cameraId = ParseTokenAsInt(GetRequiredToken(CameraId, 0));
- }
-
- if (CameraName) {
- cameraName = GetRequiredToken(CameraName, 0)->StringContents();
- }
-
- if (CameraIndexName && CameraIndexName->Tokens().size()) {
- cameraIndexName = GetRequiredToken(CameraIndexName, 0)->StringContents();
- }
-}
-
-// ------------------------------------------------------------------------------------------------
-CameraSwitcher::~CameraSwitcher() {
- // empty
-}
-
-// ------------------------------------------------------------------------------------------------
-Camera::Camera(uint64_t id, const ElementPtr element, const Document &doc, const std::string &name) :
- NodeAttribute(id, element, doc, name) {
- // empty
-}
-
-// ------------------------------------------------------------------------------------------------
-Camera::~Camera() {
- // empty
-}
-
-// ------------------------------------------------------------------------------------------------
-Light::Light(uint64_t id, const ElementPtr element, const Document &doc, const std::string &name) :
- NodeAttribute(id, element, doc, name) {
- // empty
-}
-
-// ------------------------------------------------------------------------------------------------
-Light::~Light() {
-}
-
-// ------------------------------------------------------------------------------------------------
-Null::Null(uint64_t id, const ElementPtr element, const Document &doc, const std::string &name) :
- NodeAttribute(id, element, doc, name) {
-}
-
-// ------------------------------------------------------------------------------------------------
-Null::~Null() {
-}
-
-// ------------------------------------------------------------------------------------------------
-LimbNode::LimbNode(uint64_t id, const ElementPtr element, const Document &doc, const std::string &name) :
- NodeAttribute(id, element, doc, name) {
- //std::cout << "limb node: " << name << std::endl;
- //const Scope &sc = GetRequiredScope(element);
-
- //const ElementPtr const TypeFlag = sc["TypeFlags"];
-
- // keep this it can dump new properties for you
- // for( auto element : sc.Elements())
- // {
- // std::cout << "limbnode element: " << element.first << std::endl;
- // }
-
- // if(TypeFlag)
- // {
- // // std::cout << "type flag: " << GetRequiredToken(*TypeFlag, 0).StringContents() << std::endl;
- // }
-}
-
-// ------------------------------------------------------------------------------------------------
-LimbNode::~LimbNode() {
-}
-} // namespace FBXDocParser
diff --git a/modules/fbx/fbx_parser/FBXParseTools.h b/modules/fbx/fbx_parser/FBXParseTools.h
deleted file mode 100644
index 37a7ccad2a..0000000000
--- a/modules/fbx/fbx_parser/FBXParseTools.h
+++ /dev/null
@@ -1,111 +0,0 @@
-/*************************************************************************/
-/* FBXParseTools.h */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* https://godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2022 Juan Linietsky, Ariel Manzur. */
-/* Copyright (c) 2014-2022 Godot Engine contributors (cf. AUTHORS.md). */
-/* */
-/* Permission is hereby granted, free of charge, to any person obtaining */
-/* a copy of this software and associated documentation files (the */
-/* "Software"), to deal in the Software without restriction, including */
-/* without limitation the rights to use, copy, modify, merge, publish, */
-/* distribute, sublicense, and/or sell copies of the Software, and to */
-/* permit persons to whom the Software is furnished to do so, subject to */
-/* the following conditions: */
-/* */
-/* The above copyright notice and this permission notice shall be */
-/* included in all copies or substantial portions of the Software. */
-/* */
-/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
-/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
-/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
-/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
-/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
-/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
-/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
-/*************************************************************************/
-
-#ifndef FBX_PARSE_TOOLS_H
-#define FBX_PARSE_TOOLS_H
-
-#include "core/error/error_macros.h"
-#include "core/string/ustring.h"
-
-#include <stdint.h>
-#include <algorithm>
-#include <locale>
-
-template <class char_t>
-inline bool IsNewLine(char_t c) {
- return c == '\n' || c == '\r';
-}
-template <class char_t>
-inline bool IsSpace(char_t c) {
- return (c == (char_t)' ' || c == (char_t)'\t');
-}
-
-template <class char_t>
-inline bool IsSpaceOrNewLine(char_t c) {
- return IsNewLine(c) || IsSpace(c);
-}
-
-template <class char_t>
-inline bool IsLineEnd(char_t c) {
- return (c == (char_t)'\r' || c == (char_t)'\n' || c == (char_t)'\0' || c == (char_t)'\f');
-}
-
-// ------------------------------------------------------------------------------------
-// Special version of the function, providing higher accuracy and safety
-// It is mainly used by fast_atof to prevent ugly and unwanted integer overflows.
-// ------------------------------------------------------------------------------------
-inline uint64_t strtoul10_64(const char *in, bool &errored, const char **out = nullptr, unsigned int *max_inout = nullptr) {
- unsigned int cur = 0;
- uint64_t value = 0;
-
- errored = *in < '0' || *in > '9';
- ERR_FAIL_COND_V_MSG(errored, 0, "The string cannot be converted parser error");
-
- for (;;) {
- if (*in < '0' || *in > '9') {
- break;
- }
-
- const uint64_t new_value = (value * (uint64_t)10) + ((uint64_t)(*in - '0'));
-
- // numeric overflow, we rely on you
- if (new_value < value) {
- //WARN_PRINT( "Converting the string \" " + in + " \" into a value resulted in overflow." );
- return 0;
- }
-
- value = new_value;
-
- ++in;
- ++cur;
-
- if (max_inout && *max_inout == cur) {
- if (out) { /* skip to end */
- while (*in >= '0' && *in <= '9') {
- ++in;
- }
- *out = in;
- }
-
- return value;
- }
- }
- if (out) {
- *out = in;
- }
-
- if (max_inout) {
- *max_inout = cur;
- }
-
- return value;
-}
-
-#endif // FBX_PARSE_TOOLS_H
diff --git a/modules/fbx/fbx_parser/FBXParser.cpp b/modules/fbx/fbx_parser/FBXParser.cpp
deleted file mode 100644
index e345b7fc18..0000000000
--- a/modules/fbx/fbx_parser/FBXParser.cpp
+++ /dev/null
@@ -1,1322 +0,0 @@
-/*************************************************************************/
-/* FBXParser.cpp */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* https://godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2022 Juan Linietsky, Ariel Manzur. */
-/* Copyright (c) 2014-2022 Godot Engine contributors (cf. AUTHORS.md). */
-/* */
-/* Permission is hereby granted, free of charge, to any person obtaining */
-/* a copy of this software and associated documentation files (the */
-/* "Software"), to deal in the Software without restriction, including */
-/* without limitation the rights to use, copy, modify, merge, publish, */
-/* distribute, sublicense, and/or sell copies of the Software, and to */
-/* permit persons to whom the Software is furnished to do so, subject to */
-/* the following conditions: */
-/* */
-/* The above copyright notice and this permission notice shall be */
-/* included in all copies or substantial portions of the Software. */
-/* */
-/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
-/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
-/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
-/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
-/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
-/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
-/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
-/*************************************************************************/
-
-/*
-Open Asset Import Library (assimp)
-----------------------------------------------------------------------
-
-Copyright (c) 2006-2019, assimp team
-
-
-All rights reserved.
-
-Redistribution and use of this software in source and binary forms,
-with or without modification, are permitted provided that the
-following conditions are met:
-
-* Redistributions of source code must retain the above
- copyright notice, this list of conditions and the
- following disclaimer.
-
-* Redistributions in binary form must 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 the assimp team, nor the names of its
- contributors may be used to endorse or promote products
- derived from this software without specific prior
- written permission of the assimp team.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(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 FBXParser.cpp
- * @brief Implementation of the FBX parser and the rudimentary DOM that we use
- */
-
-#include <stdlib.h> /* strtol */
-#include <zlib.h>
-
-#include "ByteSwapper.h"
-#include "FBXParseTools.h"
-#include "FBXParser.h"
-#include "FBXTokenizer.h"
-#include "core/math/math_defs.h"
-#include "core/math/transform_3d.h"
-#include "core/math/vector3.h"
-#include "core/string/print_string.h"
-
-using namespace FBXDocParser;
-namespace {
-
-// Initially, we did reinterpret_cast, breaking strict aliasing rules.
-// This actually caused trouble on Android, so let's be safe this time.
-// https://github.com/assimp/assimp/issues/24
-template <typename T>
-T SafeParse(const char *data, const char *end) {
- // Actual size validation happens during Tokenization so
- // this is valid as an assertion.
- (void)(end);
- //ai_assert(static_cast<size_t>(end - data) >= sizeof(T));
- T result = static_cast<T>(0);
- ::memcpy(&result, data, sizeof(T));
- return result;
-}
-} // namespace
-
-namespace FBXDocParser {
-
-// ------------------------------------------------------------------------------------------------
-Element::Element(const TokenPtr key_token, Parser &parser) :
- key_token(key_token) {
- TokenPtr n = nullptr;
- do {
- n = parser.AdvanceToNextToken();
- if (n == nullptr) {
- continue;
- }
-
- if (!n) {
- print_error("unexpected end of file, expected closing bracket" + String(parser.LastToken()->StringContents().c_str()));
- }
-
- if (n && n->Type() == TokenType_DATA) {
- tokens.push_back(n);
- TokenPtr prev = n;
- n = parser.AdvanceToNextToken();
-
- if (n == nullptr) {
- break;
- }
-
- if (!n) {
- print_error("unexpected end of file, expected bracket, comma or key" + String(parser.LastToken()->StringContents().c_str()));
- parser.corrupt = true;
- return;
- }
-
- const TokenType ty = n->Type();
-
- // some exporters are missing a comma on the next line
- if (ty == TokenType_DATA && prev->Type() == TokenType_DATA && (n->Line() == prev->Line() + 1)) {
- tokens.push_back(n);
- continue;
- }
-
- if (ty != TokenType_OPEN_BRACKET && ty != TokenType_CLOSE_BRACKET && ty != TokenType_COMMA && ty != TokenType_KEY) {
- print_error("unexpected token; expected bracket, comma or key" + String(n->StringContents().c_str()));
- parser.corrupt = true;
- return;
- }
- }
-
- if (n && n->Type() == TokenType_OPEN_BRACKET) {
- compound = new_Scope(parser);
- parser.scopes.push_back(compound);
-
- if (parser.corrupt) {
- return;
- }
-
- // current token should be a TOK_CLOSE_BRACKET
- n = parser.CurrentToken();
-
- if (n && n->Type() != TokenType_CLOSE_BRACKET) {
- print_error("expected closing bracket" + String(n->StringContents().c_str()));
- parser.corrupt = true;
- return;
- }
-
- parser.AdvanceToNextToken();
- return;
- }
- } while (n && n->Type() != TokenType_KEY && n->Type() != TokenType_CLOSE_BRACKET);
-}
-
-// ------------------------------------------------------------------------------------------------
-Element::~Element() {
-}
-
-// ------------------------------------------------------------------------------------------------
-Scope::Scope(Parser &parser, bool topLevel) {
- if (!topLevel) {
- TokenPtr t = parser.CurrentToken();
- if (t->Type() != TokenType_OPEN_BRACKET) {
- print_error("expected open bracket" + String(t->StringContents().c_str()));
- parser.corrupt = true;
- return;
- }
- }
-
- TokenPtr n = parser.AdvanceToNextToken();
- if (n == nullptr) {
- print_error("unexpected end of file");
- parser.corrupt = true;
- return;
- }
-
- // note: empty scopes are allowed
- while (n && n->Type() != TokenType_CLOSE_BRACKET) {
- if (n->Type() != TokenType_KEY) {
- print_error("unexpected token, expected TOK_KEY" + String(n->StringContents().c_str()));
- parser.corrupt = true;
- return;
- }
-
- const std::string str = n->StringContents();
-
- if (parser.corrupt) {
- return;
- }
- // std::multimap<std::string, ElementPtr> (key and value)
- elements.insert(ElementMap::value_type(str, new_Element(n, parser)));
-
- // Element() should stop at the next Key token (or right after a Close token)
- n = parser.CurrentToken();
- if (n == nullptr) {
- if (topLevel) {
- return;
- }
-
- //print_error("unexpected end of file" + String(parser.LastToken()->StringContents().c_str()));
- }
- }
-}
-
-// ------------------------------------------------------------------------------------------------
-Scope::~Scope() {
- for (ElementMap::value_type &v : elements) {
- delete v.second;
- v.second = nullptr;
- }
-
- elements.clear();
-}
-
-// ------------------------------------------------------------------------------------------------
-Parser::Parser(const TokenList &tokens, bool is_binary) :
- tokens(tokens), cursor(tokens.begin()), is_binary(is_binary) {
- root = new_Scope(*this, true);
- scopes.push_back(root);
-}
-
-// ------------------------------------------------------------------------------------------------
-Parser::~Parser() {
- for (ScopePtr scope : scopes) {
- delete scope;
- scope = nullptr;
- }
-}
-
-// ------------------------------------------------------------------------------------------------
-TokenPtr Parser::AdvanceToNextToken() {
- last = current;
- if (cursor == tokens.end()) {
- current = nullptr;
- } else {
- current = *cursor++;
- }
- return current;
-}
-
-// ------------------------------------------------------------------------------------------------
-TokenPtr Parser::CurrentToken() const {
- return current;
-}
-
-// ------------------------------------------------------------------------------------------------
-TokenPtr Parser::LastToken() const {
- return last;
-}
-
-// ------------------------------------------------------------------------------------------------
-uint64_t ParseTokenAsID(const TokenPtr t, const char *&err_out) {
- ERR_FAIL_COND_V_MSG(t == nullptr, 0L, "Invalid token passed to ParseTokenAsID");
- err_out = nullptr;
-
- if (t->Type() != TokenType_DATA) {
- err_out = "expected TOK_DATA token";
- return 0L;
- }
-
- if (t->IsBinary()) {
- const char *data = t->begin();
- if (data[0] != 'L') {
- err_out = "failed to parse ID, unexpected data type, expected L(ong) (binary)";
- return 0L;
- }
-
- uint64_t id = SafeParse<uint64_t>(data + 1, t->end());
- return id;
- }
-
- // XXX: should use size_t here
- unsigned int length = static_cast<unsigned int>(t->end() - t->begin());
- //ai_assert(length > 0);
-
- const char *out = nullptr;
- bool errored = false;
-
- const uint64_t id = strtoul10_64(t->begin(), errored, &out, &length);
- if (errored || out > t->end()) {
- err_out = "failed to parse ID (text)";
- return 0L;
- }
-
- return id;
-}
-
-// ------------------------------------------------------------------------------------------------
-// wrapper around ParseTokenAsID() with print_error handling
-uint64_t ParseTokenAsID(const TokenPtr t) {
- const char *err = nullptr;
- const uint64_t i = ParseTokenAsID(t, err);
- if (err) {
- print_error(String(err) + " " + String(t->StringContents().c_str()));
- }
- return i;
-}
-
-// ------------------------------------------------------------------------------------------------
-size_t ParseTokenAsDim(const TokenPtr t, const char *&err_out) {
- // same as ID parsing, except there is a trailing asterisk
- err_out = nullptr;
-
- if (t->Type() != TokenType_DATA) {
- err_out = "expected TOK_DATA token";
- return 0;
- }
-
- if (t->IsBinary()) {
- const char *data = t->begin();
- if (data[0] != 'L') {
- err_out = "failed to parse ID, unexpected data type, expected L(ong) (binary)";
- return 0;
- }
-
- uint64_t id = SafeParse<uint64_t>(data + 1, t->end());
- AI_SWAP8(id);
- return static_cast<size_t>(id);
- }
-
- if (*t->begin() != '*') {
- err_out = "expected asterisk before array dimension";
- return 0;
- }
-
- // XXX: should use size_t here
- unsigned int length = static_cast<unsigned int>(t->end() - t->begin());
- if (length == 0) {
- err_out = "expected valid integer number after asterisk";
- return 0;
- }
-
- const char *out = nullptr;
- bool errored = false;
- const size_t id = static_cast<size_t>(strtoul10_64(t->begin() + 1, errored, &out, &length));
- if (errored || out > t->end()) {
- print_error("failed to parse id");
- err_out = "failed to parse ID";
- return 0;
- }
-
- return id;
-}
-
-// ------------------------------------------------------------------------------------------------
-float ParseTokenAsFloat(const TokenPtr t, const char *&err_out) {
- err_out = nullptr;
-
- if (t->Type() != TokenType_DATA) {
- err_out = "expected TOK_DATA token";
- return 0.0f;
- }
-
- if (t->IsBinary()) {
- const char *data = t->begin();
- if (data[0] != 'F' && data[0] != 'D') {
- err_out = "failed to parse F(loat) or D(ouble), unexpected data type (binary)";
- return 0.0f;
- }
-
- if (data[0] == 'F') {
- return SafeParse<float>(data + 1, t->end());
- } else {
- return static_cast<float>(SafeParse<double>(data + 1, t->end()));
- }
- }
-
-// need to copy the input string to a temporary buffer
-// first - next in the fbx token stream comes ',',
-// which fast_atof could interpret as decimal point.
-#define MAX_FLOAT_LENGTH 31
- char temp[MAX_FLOAT_LENGTH + 1];
- const size_t length = static_cast<size_t>(t->end() - t->begin());
- std::copy(t->begin(), t->end(), temp);
- temp[std::min(static_cast<size_t>(MAX_FLOAT_LENGTH), length)] = '\0';
-
- return atof(temp);
-}
-
-// ------------------------------------------------------------------------------------------------
-int ParseTokenAsInt(const TokenPtr t, const char *&err_out) {
- err_out = nullptr;
-
- if (t->Type() != TokenType_DATA) {
- err_out = "expected TOK_DATA token";
- return 0;
- }
-
- // binary files are simple to parse
- if (t->IsBinary()) {
- const char *data = t->begin();
- if (data[0] != 'I') {
- err_out = "failed to parse I(nt), unexpected data type (binary)";
- return 0;
- }
-
- int32_t ival = SafeParse<int32_t>(data + 1, t->end());
- AI_SWAP4(ival);
- return static_cast<int>(ival);
- }
-
- // ASCII files are unsafe.
- const size_t length = static_cast<size_t>(t->end() - t->begin());
- if (length == 0) {
- err_out = "expected valid integer number after asterisk";
- ERR_FAIL_V_MSG(0, "expected valid integer number after asterisk");
- }
-
- // must not be null for strtol to work
- char *out = (char *)t->end();
- // string begin, end ptr ref, base 10
- const int value = strtol(t->begin(), &out, 10);
- if (out == nullptr || out != t->end()) {
- err_out = "failed to parse ID";
- ERR_FAIL_V_MSG(0, "failed to parse ID");
- }
-
- return value;
-}
-
-// ------------------------------------------------------------------------------------------------
-int64_t ParseTokenAsInt64(const TokenPtr t, const char *&err_out) {
- err_out = nullptr;
-
- if (t->Type() != TokenType_DATA) {
- err_out = "expected TOK_DATA token";
- return 0L;
- }
-
- if (t->IsBinary()) {
- const char *data = t->begin();
- if (data[0] != 'L') {
- err_out = "failed to parse Int64, unexpected data type";
- return 0L;
- }
-
- int64_t id = SafeParse<int64_t>(data + 1, t->end());
- AI_SWAP8(id);
- return id;
- }
-
- // XXX: should use size_t here
- unsigned int length = static_cast<unsigned int>(t->end() - t->begin());
- //ai_assert(length > 0);
-
- char *out = nullptr;
- const int64_t id = strtol(t->begin(), &out, length);
- if (out > t->end()) {
- err_out = "failed to parse Int64 (text)";
- return 0L;
- }
-
- return id;
-}
-
-// ------------------------------------------------------------------------------------------------
-std::string ParseTokenAsString(const TokenPtr t, const char *&err_out) {
- err_out = nullptr;
-
- if (t->Type() != TokenType_DATA) {
- err_out = "expected TOK_DATA token";
- return "";
- }
-
- if (t->IsBinary()) {
- const char *data = t->begin();
- if (data[0] != 'S') {
- err_out = "failed to parse String, unexpected data type (binary)";
- return "";
- }
-
- // read string length
- int32_t len = SafeParse<int32_t>(data + 1, t->end());
- AI_SWAP4(len);
-
- //ai_assert(t.end() - data == 5 + len);
- return std::string(data + 5, len);
- }
-
- const size_t length = static_cast<size_t>(t->end() - t->begin());
- if (length < 2) {
- err_out = "token is too short to hold a string";
- return "";
- }
-
- const char *s = t->begin(), *e = t->end() - 1;
- if (*s != '\"' || *e != '\"') {
- err_out = "expected double quoted string";
- return "";
- }
-
- return std::string(s + 1, length - 2);
-}
-
-namespace {
-
-// ------------------------------------------------------------------------------------------------
-// read the type code and element count of a binary data array and stop there
-void ReadBinaryDataArrayHead(const char *&data, const char *end, char &type, uint32_t &count,
- const ElementPtr el) {
- TokenPtr token = el->KeyToken();
- if (static_cast<size_t>(end - data) < 5) {
- print_error("binary data array is too short, need five (5) bytes for type signature and element count: " + String(token->StringContents().c_str()));
- }
-
- // data type
- type = *data;
-
- // read number of elements
- uint32_t len = SafeParse<uint32_t>(data + 1, end);
- AI_SWAP4(len);
-
- count = len;
- data += 5;
-}
-
-// ------------------------------------------------------------------------------------------------
-// read binary data array, assume cursor points to the 'compression mode' field (i.e. behind the header)
-void ReadBinaryDataArray(char type, uint32_t count, const char *&data, const char *end,
- std::vector<char> &buff,
- const ElementPtr /*el*/) {
- uint32_t encmode = SafeParse<uint32_t>(data, end);
- AI_SWAP4(encmode);
- data += 4;
-
- // next comes the compressed length
- uint32_t comp_len = SafeParse<uint32_t>(data, end);
- AI_SWAP4(comp_len);
- data += 4;
-
- //ai_assert(data + comp_len == end);
-
- // determine the length of the uncompressed data by looking at the type signature
- uint32_t stride = 0;
- switch (type) {
- case 'f':
- case 'i':
- stride = 4;
- break;
-
- case 'd':
- case 'l':
- stride = 8;
- break;
- }
-
- const uint32_t full_length = stride * count;
- buff.resize(full_length);
-
- if (encmode == 0) {
- //ai_assert(full_length == comp_len);
-
- // plain data, no compression
- std::copy(data, end, buff.begin());
- } else if (encmode == 1) {
- // zlib/deflate, next comes ZIP head (0x78 0x01)
- // see https://www.ietf.org/rfc/rfc1950.txt
-
- z_stream zstream;
- zstream.opaque = Z_NULL;
- zstream.zalloc = Z_NULL;
- zstream.zfree = Z_NULL;
- zstream.data_type = Z_BINARY;
-
- // http://hewgill.com/journal/entries/349-how-to-decompress-gzip-stream-with-zlib
- if (Z_OK != inflateInit(&zstream)) {
- print_error("failure initializing zlib");
- }
-
- zstream.next_in = reinterpret_cast<Bytef *>(const_cast<char *>(data));
- zstream.avail_in = comp_len;
-
- zstream.avail_out = static_cast<uInt>(buff.size());
- zstream.next_out = reinterpret_cast<Bytef *>(&*buff.begin());
- const int ret = inflate(&zstream, Z_FINISH);
-
- if (ret != Z_STREAM_END && ret != Z_OK) {
- print_error("failure decompressing compressed data section");
- }
-
- // terminate zlib
- inflateEnd(&zstream);
- }
-#ifdef ASSIMP_BUILD_DEBUG
- else {
- // runtime check for this happens at tokenization stage
- //ai_assert(false);
- }
-#endif
-
- data += comp_len;
- //ai_assert(data == end);
-}
-} // namespace
-
-// ------------------------------------------------------------------------------------------------
-// read an array of float3 tuples
-void ParseVectorDataArray(std::vector<Vector3> &out, const ElementPtr el) {
- out.resize(0);
-
- const TokenList &tok = el->Tokens();
- TokenPtr token = el->KeyToken();
- if (tok.empty()) {
- print_error("unexpected empty element" + String(token->StringContents().c_str()));
- }
-
- if (tok[0]->IsBinary()) {
- const char *data = tok[0]->begin(), *end = tok[0]->end();
-
- char type;
- uint32_t count;
- ReadBinaryDataArrayHead(data, end, type, count, el);
-
- if (count % 3 != 0) {
- print_error("number of floats is not a multiple of three (3) (binary)" + String(token->StringContents().c_str()));
- }
-
- if (!count) {
- return;
- }
-
- if (type != 'd' && type != 'f') {
- print_error("expected float or double array (binary)" + String(token->StringContents().c_str()));
- }
-
- std::vector<char> buff;
- ReadBinaryDataArray(type, count, data, end, buff, el);
-
- //ai_assert(data == end);
- //ai_assert(buff.size() == count * (type == 'd' ? 8 : 4));
-
- const uint32_t count3 = count / 3;
- out.reserve(count3);
-
- if (type == 'd') {
- const double *d = reinterpret_cast<const double *>(&buff[0]);
- for (unsigned int i = 0; i < count3; ++i, d += 3) {
- out.push_back(Vector3(static_cast<real_t>(d[0]),
- static_cast<real_t>(d[1]),
- static_cast<real_t>(d[2])));
- }
- } else if (type == 'f') {
- const float *f = reinterpret_cast<const float *>(&buff[0]);
- for (unsigned int i = 0; i < count3; ++i, f += 3) {
- out.push_back(Vector3(f[0], f[1], f[2]));
- }
- }
-
- return;
- }
-
- const size_t dim = ParseTokenAsDim(tok[0]);
-
- // may throw bad_alloc if the input is rubbish, but this need
- // not to be prevented - importing would fail but we wouldn't
- // crash since assimp handles this case properly.
- out.reserve(dim);
-
- const ScopePtr scope = GetRequiredScope(el);
- const ElementPtr a = GetRequiredElement(scope, "a", el);
-
- if (a->Tokens().size() % 3 != 0) {
- print_error("number of floats is not a multiple of three (3)" + String(token->StringContents().c_str()));
- } else {
- for (TokenList::const_iterator it = a->Tokens().begin(), end = a->Tokens().end(); it != end;) {
- Vector3 v;
- v.x = ParseTokenAsFloat(*it++);
- v.y = ParseTokenAsFloat(*it++);
- v.z = ParseTokenAsFloat(*it++);
-
- out.push_back(v);
- }
- }
-}
-
-// ------------------------------------------------------------------------------------------------
-// read an array of color4 tuples
-void ParseVectorDataArray(std::vector<Color> &out, const ElementPtr el) {
- out.resize(0);
- const TokenList &tok = el->Tokens();
-
- TokenPtr token = el->KeyToken();
-
- if (tok.empty()) {
- print_error("unexpected empty element" + String(token->StringContents().c_str()));
- }
-
- if (tok[0]->IsBinary()) {
- const char *data = tok[0]->begin(), *end = tok[0]->end();
-
- char type;
- uint32_t count;
- ReadBinaryDataArrayHead(data, end, type, count, el);
-
- if (count % 4 != 0) {
- print_error("number of floats is not a multiple of four (4) (binary)" + String(token->StringContents().c_str()));
- }
-
- if (!count) {
- return;
- }
-
- if (type != 'd' && type != 'f') {
- print_error("expected float or double array (binary)" + String(token->StringContents().c_str()));
- }
-
- std::vector<char> buff;
- ReadBinaryDataArray(type, count, data, end, buff, el);
-
- //ai_assert(data == end);
- //ai_assert(buff.size() == count * (type == 'd' ? 8 : 4));
-
- const uint32_t count4 = count / 4;
- out.reserve(count4);
-
- if (type == 'd') {
- const double *d = reinterpret_cast<const double *>(&buff[0]);
- for (unsigned int i = 0; i < count4; ++i, d += 4) {
- out.push_back(Color(static_cast<float>(d[0]),
- static_cast<float>(d[1]),
- static_cast<float>(d[2]),
- static_cast<float>(d[3])));
- }
- } else if (type == 'f') {
- const float *f = reinterpret_cast<const float *>(&buff[0]);
- for (unsigned int i = 0; i < count4; ++i, f += 4) {
- out.push_back(Color(f[0], f[1], f[2], f[3]));
- }
- }
- return;
- }
-
- const size_t dim = ParseTokenAsDim(tok[0]);
-
- // see notes in ParseVectorDataArray() above
- out.reserve(dim);
-
- const ScopePtr scope = GetRequiredScope(el);
- const ElementPtr a = GetRequiredElement(scope, "a", el);
-
- if (a->Tokens().size() % 4 != 0) {
- print_error("number of floats is not a multiple of four (4)" + String(token->StringContents().c_str()));
- }
- for (TokenList::const_iterator it = a->Tokens().begin(), end = a->Tokens().end(); it != end;) {
- Color v;
- v.r = ParseTokenAsFloat(*it++);
- v.g = ParseTokenAsFloat(*it++);
- v.b = ParseTokenAsFloat(*it++);
- v.a = ParseTokenAsFloat(*it++);
-
- out.push_back(v);
- }
-}
-
-// ------------------------------------------------------------------------------------------------
-// read an array of float2 tuples
-void ParseVectorDataArray(std::vector<Vector2> &out, const ElementPtr el) {
- out.resize(0);
- const TokenList &tok = el->Tokens();
- TokenPtr token = el->KeyToken();
- if (tok.empty()) {
- print_error("unexpected empty element" + String(token->StringContents().c_str()));
- }
-
- if (tok[0]->IsBinary()) {
- const char *data = tok[0]->begin(), *end = tok[0]->end();
-
- char type;
- uint32_t count;
- ReadBinaryDataArrayHead(data, end, type, count, el);
-
- if (count % 2 != 0) {
- print_error("number of floats is not a multiple of two (2) (binary)" + String(token->StringContents().c_str()));
- }
-
- if (!count) {
- return;
- }
-
- if (type != 'd' && type != 'f') {
- print_error("expected float or double array (binary)" + String(token->StringContents().c_str()));
- }
-
- std::vector<char> buff;
- ReadBinaryDataArray(type, count, data, end, buff, el);
-
- //ai_assert(data == end);
- //ai_assert(buff.size() == count * (type == 'd' ? 8 : 4));
-
- const uint32_t count2 = count / 2;
- out.reserve(count2);
-
- if (type == 'd') {
- const double *d = reinterpret_cast<const double *>(&buff[0]);
- for (unsigned int i = 0; i < count2; ++i, d += 2) {
- out.push_back(Vector2(static_cast<float>(d[0]),
- static_cast<float>(d[1])));
- }
- } else if (type == 'f') {
- const float *f = reinterpret_cast<const float *>(&buff[0]);
- for (unsigned int i = 0; i < count2; ++i, f += 2) {
- out.push_back(Vector2(f[0], f[1]));
- }
- }
-
- return;
- }
-
- const size_t dim = ParseTokenAsDim(tok[0]);
-
- // see notes in ParseVectorDataArray() above
- out.reserve(dim);
-
- const ScopePtr scope = GetRequiredScope(el);
- const ElementPtr a = GetRequiredElement(scope, "a", el);
-
- if (a->Tokens().size() % 2 != 0) {
- print_error("number of floats is not a multiple of two (2)" + String(token->StringContents().c_str()));
- } else {
- for (TokenList::const_iterator it = a->Tokens().begin(), end = a->Tokens().end(); it != end;) {
- Vector2 v;
- v.x = ParseTokenAsFloat(*it++);
- v.y = ParseTokenAsFloat(*it++);
- out.push_back(v);
- }
- }
-}
-
-// ------------------------------------------------------------------------------------------------
-// read an array of ints
-void ParseVectorDataArray(std::vector<int> &out, const ElementPtr el) {
- out.resize(0);
- const TokenList &tok = el->Tokens();
- TokenPtr token = el->KeyToken();
- if (tok.empty()) {
- print_error("unexpected empty element" + String(token->StringContents().c_str()));
- }
-
- if (tok[0]->IsBinary()) {
- const char *data = tok[0]->begin(), *end = tok[0]->end();
-
- char type;
- uint32_t count;
- ReadBinaryDataArrayHead(data, end, type, count, el);
-
- if (!count) {
- return;
- }
-
- if (type != 'i') {
- print_error("expected int array (binary)" + String(token->StringContents().c_str()));
- }
-
- std::vector<char> buff;
- ReadBinaryDataArray(type, count, data, end, buff, el);
-
- //ai_assert(data == end);
- //ai_assert(buff.size() == count * 4);
-
- out.reserve(count);
-
- const int32_t *ip = reinterpret_cast<const int32_t *>(&buff[0]);
- for (unsigned int i = 0; i < count; ++i, ++ip) {
- int32_t val = *ip;
- AI_SWAP4(val);
- out.push_back(val);
- }
-
- return;
- }
-
- const size_t dim = ParseTokenAsDim(tok[0]);
-
- // see notes in ParseVectorDataArray()
- out.reserve(dim);
-
- const ScopePtr scope = GetRequiredScope(el);
- const ElementPtr a = GetRequiredElement(scope, "a", el);
-
- for (TokenList::const_iterator it = a->Tokens().begin(), end = a->Tokens().end(); it != end;) {
- const int ival = ParseTokenAsInt(*it++);
- out.push_back(ival);
- }
-}
-
-// ------------------------------------------------------------------------------------------------
-// read an array of floats
-void ParseVectorDataArray(std::vector<float> &out, const ElementPtr el) {
- out.resize(0);
- const TokenList &tok = el->Tokens();
- TokenPtr token = el->KeyToken();
- if (tok.empty()) {
- print_error("unexpected empty element: " + String(token->StringContents().c_str()));
- }
-
- if (tok[0]->IsBinary()) {
- const char *data = tok[0]->begin(), *end = tok[0]->end();
-
- char type;
- uint32_t count;
- ReadBinaryDataArrayHead(data, end, type, count, el);
-
- if (!count) {
- return;
- }
-
- if (type != 'd' && type != 'f') {
- print_error("expected float or double array (binary) " + String(token->StringContents().c_str()));
- }
-
- std::vector<char> buff;
- ReadBinaryDataArray(type, count, data, end, buff, el);
-
- //ai_assert(data == end);
- //ai_assert(buff.size() == count * (type == 'd' ? 8 : 4));
-
- if (type == 'd') {
- const double *d = reinterpret_cast<const double *>(&buff[0]);
- for (unsigned int i = 0; i < count; ++i, ++d) {
- out.push_back(static_cast<float>(*d));
- }
- } else if (type == 'f') {
- const float *f = reinterpret_cast<const float *>(&buff[0]);
- for (unsigned int i = 0; i < count; ++i, ++f) {
- out.push_back(*f);
- }
- }
-
- return;
- }
-
- const size_t dim = ParseTokenAsDim(tok[0]);
-
- // see notes in ParseVectorDataArray()
- out.reserve(dim);
-
- const ScopePtr scope = GetRequiredScope(el);
- const ElementPtr a = GetRequiredElement(scope, "a", el);
-
- for (TokenList::const_iterator it = a->Tokens().begin(), end = a->Tokens().end(); it != end;) {
- const float ival = ParseTokenAsFloat(*it++);
- out.push_back(ival);
- }
-}
-
-// ------------------------------------------------------------------------------------------------
-// read an array of uints
-void ParseVectorDataArray(std::vector<unsigned int> &out, const ElementPtr el) {
- out.resize(0);
- const TokenList &tok = el->Tokens();
- const TokenPtr token = el->KeyToken();
-
- ERR_FAIL_COND_MSG(!token, "invalid ParseVectorDataArrat token invalid");
-
- if (tok.empty()) {
- print_error("unexpected empty element: " + String(token->StringContents().c_str()));
- }
-
- if (tok[0]->IsBinary()) {
- const char *data = tok[0]->begin(), *end = tok[0]->end();
-
- char type;
- uint32_t count;
- ReadBinaryDataArrayHead(data, end, type, count, el);
-
- if (!count) {
- return;
- }
-
- if (type != 'i') {
- print_error("expected (u)int array (binary)" + String(token->StringContents().c_str()));
- }
-
- std::vector<char> buff;
- ReadBinaryDataArray(type, count, data, end, buff, el);
-
- //ai_assert(data == end);
- //ai_assert(buff.size() == count * 4);
-
- out.reserve(count);
-
- const int32_t *ip = reinterpret_cast<const int32_t *>(&buff[0]);
- for (unsigned int i = 0; i < count; ++i, ++ip) {
- int32_t val = *ip;
- if (val < 0) {
- print_error("encountered negative integer index (binary)");
- }
-
- out.push_back(val);
- }
-
- return;
- }
-
- const size_t dim = ParseTokenAsDim(tok[0]);
-
- // see notes in ParseVectorDataArray()
- out.reserve(dim);
-
- const ScopePtr scope = GetRequiredScope(el);
- const ElementPtr a = GetRequiredElement(scope, "a", el);
-
- for (TokenList::const_iterator it = a->Tokens().begin(), end = a->Tokens().end(); it != end;) {
- const int ival = ParseTokenAsInt(*it++);
- if (ival < 0) {
- print_error("encountered negative integer index");
- }
- out.push_back(static_cast<unsigned int>(ival));
- }
-}
-
-// ------------------------------------------------------------------------------------------------
-// read an array of uint64_ts
-void ParseVectorDataArray(std::vector<uint64_t> &out, const ElementPtr el) {
- out.resize(0);
-
- const TokenList &tok = el->Tokens();
- TokenPtr token = el->KeyToken();
- ERR_FAIL_COND(!token);
-
- if (tok.empty()) {
- print_error("unexpected empty element " + String(token->StringContents().c_str()));
- }
-
- if (tok[0]->IsBinary()) {
- const char *data = tok[0]->begin(), *end = tok[0]->end();
-
- char type;
- uint32_t count;
- ReadBinaryDataArrayHead(data, end, type, count, el);
-
- if (!count) {
- return;
- }
-
- if (type != 'l') {
- print_error("expected long array (binary): " + String(token->StringContents().c_str()));
- }
-
- std::vector<char> buff;
- ReadBinaryDataArray(type, count, data, end, buff, el);
-
- //ai_assert(data == end);
- //ai_assert(buff.size() == count * 8);
-
- out.reserve(count);
-
- const uint64_t *ip = reinterpret_cast<const uint64_t *>(&buff[0]);
- for (unsigned int i = 0; i < count; ++i, ++ip) {
- uint64_t val = *ip;
- AI_SWAP8(val);
- out.push_back(val);
- }
-
- return;
- }
-
- const size_t dim = ParseTokenAsDim(tok[0]);
-
- // see notes in ParseVectorDataArray()
- out.reserve(dim);
-
- const ScopePtr scope = GetRequiredScope(el);
- const ElementPtr a = GetRequiredElement(scope, "a", el);
-
- for (TokenList::const_iterator it = a->Tokens().begin(), end = a->Tokens().end(); it != end;) {
- const uint64_t ival = ParseTokenAsID(*it++);
-
- out.push_back(ival);
- }
-}
-
-// ------------------------------------------------------------------------------------------------
-// read an array of int64_ts
-void ParseVectorDataArray(std::vector<int64_t> &out, const ElementPtr el) {
- out.resize(0);
- const TokenList &tok = el->Tokens();
- TokenPtr token = el->KeyToken();
- ERR_FAIL_COND(!token);
- if (tok.empty()) {
- print_error("unexpected empty element: " + String(token->StringContents().c_str()));
- }
-
- if (tok[0]->IsBinary()) {
- const char *data = tok[0]->begin(), *end = tok[0]->end();
-
- char type;
- uint32_t count;
- ReadBinaryDataArrayHead(data, end, type, count, el);
-
- if (!count) {
- return;
- }
-
- if (type != 'l') {
- print_error("expected long array (binary) " + String(token->StringContents().c_str()));
- }
-
- std::vector<char> buff;
- ReadBinaryDataArray(type, count, data, end, buff, el);
-
- //ai_assert(data == end);
- //ai_assert(buff.size() == count * 8);
-
- out.reserve(count);
-
- const int64_t *ip = reinterpret_cast<const int64_t *>(&buff[0]);
- for (unsigned int i = 0; i < count; ++i, ++ip) {
- int64_t val = *ip;
- AI_SWAP8(val);
- out.push_back(val);
- }
-
- return;
- }
-
- const size_t dim = ParseTokenAsDim(tok[0]);
-
- // see notes in ParseVectorDataArray()
- out.reserve(dim);
-
- const ScopePtr scope = GetRequiredScope(el);
- const ElementPtr a = GetRequiredElement(scope, "a", el);
-
- for (TokenList::const_iterator it = a->Tokens().begin(), end = a->Tokens().end(); it != end;) {
- const int64_t val = ParseTokenAsInt64(*it++);
- out.push_back(val);
- }
-}
-
-// ------------------------------------------------------------------------------------------------
-Transform3D ReadMatrix(const ElementPtr element) {
- std::vector<float> values;
- ParseVectorDataArray(values, element);
-
- if (values.size() != 16) {
- print_error("expected 16 matrix elements");
- }
-
- // clean values to prevent any IBM damage on inverse() / affine_inverse()
- for (float &value : values) {
- if (::Math::is_zero_approx(value)) {
- value = 0;
- }
- }
-
- Transform3D xform;
- Basis basis;
-
- basis.set(
- Vector3(values[0], values[1], values[2]),
- Vector3(values[4], values[5], values[6]),
- Vector3(values[8], values[9], values[10]));
-
- xform.basis = basis;
- xform.origin = Vector3(values[12], values[13], values[14]);
- // determine if we need to think about this with dynamic rotation order?
- // for example:
- // xform.basis = z_axis * y_axis * x_axis;
- //xform.basis.transpose();
-
- print_verbose("xform verbose basis: " + (xform.basis.get_euler() * (180 / Math_PI)) + " xform origin:" + xform.origin);
-
- return xform;
-}
-
-// ------------------------------------------------------------------------------------------------
-// wrapper around ParseTokenAsString() with print_error handling
-std::string ParseTokenAsString(const TokenPtr t) {
- ERR_FAIL_COND_V(!t, "");
- const char *err;
- const std::string &i = ParseTokenAsString(t, err);
- if (err) {
- print_error(String(err) + ", " + String(t->StringContents().c_str()));
- }
- return i;
-}
-
-// ------------------------------------------------------------------------------------------------
-// extract a required element from a scope, abort if the element cannot be found
-ElementPtr GetRequiredElement(const ScopePtr sc, const std::string &index, const ElementPtr element /*= nullptr*/) {
- const ElementPtr el = sc->GetElement(index);
- TokenPtr token = el->KeyToken();
- ERR_FAIL_COND_V(!token, nullptr);
- if (!el) {
- print_error("did not find required element \"" + String(index.c_str()) + "\" " + String(token->StringContents().c_str()));
- }
- return el;
-}
-
-bool HasElement(const ScopePtr sc, const std::string &index) {
- const ElementPtr el = sc->GetElement(index);
- if (nullptr == el) {
- return false;
- }
-
- return true;
-}
-
-// ------------------------------------------------------------------------------------------------
-// extract a required element from a scope, abort if the element cannot be found
-ElementPtr GetOptionalElement(const ScopePtr sc, const std::string &index, const ElementPtr element /*= nullptr*/) {
- const ElementPtr el = sc->GetElement(index);
- return el;
-}
-
-// ------------------------------------------------------------------------------------------------
-// extract required compound scope
-ScopePtr GetRequiredScope(const ElementPtr el) {
- if (el) {
- ScopePtr s = el->Compound();
- TokenPtr token = el->KeyToken();
- ERR_FAIL_COND_V(!token, nullptr);
- if (s) {
- return s;
- }
-
- ERR_FAIL_V_MSG(nullptr, "expected compound scope " + String(token->StringContents().c_str()));
- }
-
- ERR_FAIL_V_MSG(nullptr, "Invalid element supplied to parser");
-}
-
-// ------------------------------------------------------------------------------------------------
-// extract optional compound scope
-ScopePtr GetOptionalScope(const ElementPtr el) {
- if (el) {
- ScopePtr s = el->Compound();
- TokenPtr token = el->KeyToken();
-
- if (token && s) {
- return s;
- }
- }
-
- return nullptr;
-}
-
-// ------------------------------------------------------------------------------------------------
-// get token at a particular index
-TokenPtr GetRequiredToken(const ElementPtr el, unsigned int index) {
- if (el) {
- const TokenList &x = el->Tokens();
- TokenPtr token = el->KeyToken();
-
- ERR_FAIL_COND_V(!token, nullptr);
-
- if (index >= x.size()) {
- ERR_FAIL_V_MSG(nullptr, "missing token at index: " + itos(index) + " " + String(token->StringContents().c_str()));
- }
-
- return x[index];
- }
-
- return nullptr;
-}
-
-// ------------------------------------------------------------------------------------------------
-// wrapper around ParseTokenAsDim() with print_error handling
-size_t ParseTokenAsDim(const TokenPtr t) {
- const char *err;
- const size_t i = ParseTokenAsDim(t, err);
- if (err) {
- print_error(String(err) + " " + String(t->StringContents().c_str()));
- }
- return i;
-}
-
-// ------------------------------------------------------------------------------------------------
-// wrapper around ParseTokenAsFloat() with print_error handling
-float ParseTokenAsFloat(const TokenPtr t) {
- const char *err;
- const float i = ParseTokenAsFloat(t, err);
- if (err) {
- print_error(String(err) + " " + String(t->StringContents().c_str()));
- }
- return i;
-}
-
-// ------------------------------------------------------------------------------------------------
-// wrapper around ParseTokenAsInt() with print_error handling
-int ParseTokenAsInt(const TokenPtr t) {
- const char *err;
- const int i = ParseTokenAsInt(t, err);
- if (err) {
- print_error(String(err) + " " + String(t->StringContents().c_str()));
- }
- return i;
-}
-
-// ------------------------------------------------------------------------------------------------
-// wrapper around ParseTokenAsInt64() with print_error handling
-int64_t ParseTokenAsInt64(const TokenPtr t) {
- const char *err;
- const int64_t i = ParseTokenAsInt64(t, err);
- if (err) {
- print_error(String(err) + " " + String(t->StringContents().c_str()));
- }
- return i;
-}
-} // namespace FBXDocParser
diff --git a/modules/fbx/fbx_parser/FBXParser.h b/modules/fbx/fbx_parser/FBXParser.h
deleted file mode 100644
index c5e3f5bf6b..0000000000
--- a/modules/fbx/fbx_parser/FBXParser.h
+++ /dev/null
@@ -1,270 +0,0 @@
-/*************************************************************************/
-/* FBXParser.h */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* https://godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2022 Juan Linietsky, Ariel Manzur. */
-/* Copyright (c) 2014-2022 Godot Engine contributors (cf. AUTHORS.md). */
-/* */
-/* Permission is hereby granted, free of charge, to any person obtaining */
-/* a copy of this software and associated documentation files (the */
-/* "Software"), to deal in the Software without restriction, including */
-/* without limitation the rights to use, copy, modify, merge, publish, */
-/* distribute, sublicense, and/or sell copies of the Software, and to */
-/* permit persons to whom the Software is furnished to do so, subject to */
-/* the following conditions: */
-/* */
-/* The above copyright notice and this permission notice shall be */
-/* included in all copies or substantial portions of the Software. */
-/* */
-/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
-/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
-/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
-/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
-/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
-/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
-/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
-/*************************************************************************/
-
-/*
-Open Asset Import Library (assimp)
-----------------------------------------------------------------------
-
-Copyright (c) 2006-2019, assimp team
-
-
-All rights reserved.
-
-Redistribution and use of this software in source and binary forms,
-with or without modification, are permitted provided that the
-following conditions are met:
-
-* Redistributions of source code must retain the above
- copyright notice, this list of conditions and the
- following disclaimer.
-
-* Redistributions in binary form must 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 the assimp team, nor the names of its
- contributors may be used to endorse or promote products
- derived from this software without specific prior
- written permission of the assimp team.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(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 FBXParser.h
- * @brief FBX parsing code
- */
-#ifndef FBX_PARSER_H
-#define FBX_PARSER_H
-
-#include <stdint.h>
-#include <map>
-#include <memory>
-
-#include "core/math/color.h"
-#include "core/math/transform_3d.h"
-#include "core/math/vector2.h"
-#include "core/math/vector3.h"
-
-#include "FBXTokenizer.h"
-
-namespace FBXDocParser {
-
-class Scope;
-class Parser;
-class Element;
-
-typedef Element *ElementPtr;
-typedef Scope *ScopePtr;
-
-typedef std::vector<ScopePtr> ScopeList;
-typedef std::multimap<std::string, ElementPtr> ElementMap;
-typedef std::pair<ElementMap::const_iterator, ElementMap::const_iterator> ElementCollection;
-
-#define new_Scope new Scope
-#define new_Element new Element
-
-/** FBX data entity that consists of a key:value tuple.
- *
- * Example:
- * @verbatim
- * AnimationCurve: 23, "AnimCurve::", "" {
- * [..]
- * }
- * @endverbatim
- *
- * As can be seen in this sample, elements can contain nested #Scope
- * as their trailing member. **/
-class Element {
-public:
- Element(TokenPtr key_token, Parser &parser);
- ~Element();
-
- ScopePtr Compound() const {
- return compound;
- }
-
- TokenPtr KeyToken() const {
- return key_token;
- }
-
- const TokenList &Tokens() const {
- return tokens;
- }
-
-private:
- TokenList tokens;
- ScopePtr compound = nullptr;
- std::vector<ScopePtr> compound_scope;
- TokenPtr key_token = nullptr;
-};
-
-/** FBX data entity that consists of a 'scope', a collection
- * of not necessarily unique #Element instances.
- *
- * Example:
- * @verbatim
- * GlobalSettings: {
- * Version: 1000
- * Properties70:
- * [...]
- * }
- * @endverbatim */
-class Scope {
-public:
- Scope(Parser &parser, bool topLevel = false);
- ~Scope();
-
- ElementPtr GetElement(const std::string &index) const {
- ElementMap::const_iterator it = elements.find(index);
- return it == elements.end() ? nullptr : (*it).second;
- }
-
- ElementPtr FindElementCaseInsensitive(const std::string &elementName) const {
- for (FBXDocParser::ElementMap::const_iterator element = elements.begin(); element != elements.end(); ++element) {
- if (element->first.compare(elementName)) {
- return element->second;
- }
- }
-
- // nothing to reference / expired.
- return nullptr;
- }
-
- ElementCollection GetCollection(const std::string &index) const {
- return elements.equal_range(index);
- }
-
- const ElementMap &Elements() const {
- return elements;
- }
-
-private:
- ElementMap elements;
-};
-
-/** FBX parsing class, takes a list of input tokens and generates a hierarchy
- * of nested #Scope instances, representing the fbx DOM.*/
-class Parser {
-public:
- /** Parse given a token list. Does not take ownership of the tokens -
- * the objects must persist during the entire parser lifetime */
- Parser(const TokenList &tokens, bool is_binary);
- ~Parser();
-
- ScopePtr GetRootScope() const {
- return root;
- }
-
- bool IsBinary() const {
- return is_binary;
- }
-
- bool IsCorrupt() const {
- return corrupt;
- }
-
-private:
- friend class Scope;
- friend class Element;
-
- TokenPtr AdvanceToNextToken();
- TokenPtr LastToken() const;
- TokenPtr CurrentToken() const;
-
-private:
- bool corrupt = false;
- ScopeList scopes;
- const TokenList &tokens;
-
- TokenPtr last = nullptr, current = nullptr;
- TokenList::const_iterator cursor;
- ScopePtr root = nullptr;
-
- const bool is_binary;
-};
-
-/* token parsing - this happens when building the DOM out of the parse-tree*/
-uint64_t ParseTokenAsID(const TokenPtr t, const char *&err_out);
-size_t ParseTokenAsDim(const TokenPtr t, const char *&err_out);
-float ParseTokenAsFloat(const TokenPtr t, const char *&err_out);
-int ParseTokenAsInt(const TokenPtr t, const char *&err_out);
-int64_t ParseTokenAsInt64(const TokenPtr t, const char *&err_out);
-std::string ParseTokenAsString(const TokenPtr t, const char *&err_out);
-
-/* wrapper around ParseTokenAsXXX() with DOMError handling */
-uint64_t ParseTokenAsID(const TokenPtr t);
-size_t ParseTokenAsDim(const TokenPtr t);
-float ParseTokenAsFloat(const TokenPtr t);
-int ParseTokenAsInt(const TokenPtr t);
-int64_t ParseTokenAsInt64(const TokenPtr t);
-std::string ParseTokenAsString(const TokenPtr t);
-
-/* read data arrays */
-void ParseVectorDataArray(std::vector<Vector3> &out, const ElementPtr el);
-void ParseVectorDataArray(std::vector<Color> &out, const ElementPtr el);
-void ParseVectorDataArray(std::vector<Vector2> &out, const ElementPtr el);
-void ParseVectorDataArray(std::vector<int> &out, const ElementPtr el);
-void ParseVectorDataArray(std::vector<float> &out, const ElementPtr el);
-void ParseVectorDataArray(std::vector<float> &out, const ElementPtr el);
-void ParseVectorDataArray(std::vector<unsigned int> &out, const ElementPtr el);
-void ParseVectorDataArray(std::vector<uint64_t> &out, const ElementPtr ep);
-void ParseVectorDataArray(std::vector<int64_t> &out, const ElementPtr el);
-bool HasElement(const ScopePtr sc, const std::string &index);
-
-// extract a required element from a scope, abort if the element cannot be found
-ElementPtr GetRequiredElement(const ScopePtr sc, const std::string &index, const ElementPtr element = nullptr);
-ScopePtr GetRequiredScope(const ElementPtr el); // New in 2020. (less likely to destroy application)
-ScopePtr GetOptionalScope(const ElementPtr el); // New in 2021. (even LESS likely to destroy application now)
-
-ElementPtr GetOptionalElement(const ScopePtr sc, const std::string &index, const ElementPtr element = nullptr);
-// extract required compound scope
-ScopePtr GetRequiredScope(const ElementPtr el);
-// get token at a particular index
-TokenPtr GetRequiredToken(const ElementPtr el, unsigned int index);
-
-// ------------------------------------------------------------------------------------------------
-// read a 4x4 matrix from an array of 16 floats
-Transform3D ReadMatrix(const ElementPtr element);
-} // namespace FBXDocParser
-
-#endif // FBX_PARSER_H
diff --git a/modules/fbx/fbx_parser/FBXPose.cpp b/modules/fbx/fbx_parser/FBXPose.cpp
deleted file mode 100644
index 738b9131b6..0000000000
--- a/modules/fbx/fbx_parser/FBXPose.cpp
+++ /dev/null
@@ -1,104 +0,0 @@
-/*************************************************************************/
-/* FBXPose.cpp */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* https://godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2022 Juan Linietsky, Ariel Manzur. */
-/* Copyright (c) 2014-2022 Godot Engine contributors (cf. AUTHORS.md). */
-/* */
-/* Permission is hereby granted, free of charge, to any person obtaining */
-/* a copy of this software and associated documentation files (the */
-/* "Software"), to deal in the Software without restriction, including */
-/* without limitation the rights to use, copy, modify, merge, publish, */
-/* distribute, sublicense, and/or sell copies of the Software, and to */
-/* permit persons to whom the Software is furnished to do so, subject to */
-/* the following conditions: */
-/* */
-/* The above copyright notice and this permission notice shall be */
-/* included in all copies or substantial portions of the Software. */
-/* */
-/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
-/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
-/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
-/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
-/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
-/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
-/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
-/*************************************************************************/
-
-/*
-Open Asset Import Library (assimp)
-----------------------------------------------------------------------
-
-Copyright (c) 2006-2019, assimp team
-
-
-All rights reserved.
-
-Redistribution and use of this software in source and binary forms,
-with or without modification, are permitted provided that the
-following conditions are met:
-
-* Redistributions of source code must retain the above
- copyright notice, this list of conditions and the
- following disclaimer.
-
-* Redistributions in binary form must 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 the assimp team, nor the names of its
- contributors may be used to endorse or promote products
- derived from this software without specific prior
- written permission of the assimp team.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(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 FBXNoteAttribute.cpp
- * @brief Assimp::FBX::NodeAttribute (and subclasses) implementation
- */
-
-#include "FBXDocument.h"
-#include "FBXParser.h"
-#include <iostream>
-
-namespace FBXDocParser {
-
-class FbxPoseNode;
-// ------------------------------------------------------------------------------------------------
-FbxPose::FbxPose(uint64_t id, const ElementPtr element, const Document &doc, const std::string &name) :
- Object(id, element, name) {
- const ScopePtr sc = GetRequiredScope(element);
- //const std::string &classname = ParseTokenAsString(GetRequiredToken(element, 2));
-
- const ElementCollection &PoseNodes = sc->GetCollection("PoseNode");
- for (ElementMap::const_iterator it = PoseNodes.first; it != PoseNodes.second; ++it) {
- std::string entry_name = (*it).first;
- ElementPtr some_element = (*it).second;
- FbxPoseNode *pose_node = new FbxPoseNode(some_element, doc, entry_name);
- pose_nodes.push_back(pose_node);
- }
-}
-
-// ------------------------------------------------------------------------------------------------
-FbxPose::~FbxPose() {
- pose_nodes.clear();
- // empty
-}
-} // namespace FBXDocParser
diff --git a/modules/fbx/fbx_parser/FBXProperties.cpp b/modules/fbx/fbx_parser/FBXProperties.cpp
deleted file mode 100644
index 7cbb3a2eda..0000000000
--- a/modules/fbx/fbx_parser/FBXProperties.cpp
+++ /dev/null
@@ -1,245 +0,0 @@
-/*************************************************************************/
-/* FBXProperties.cpp */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* https://godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2022 Juan Linietsky, Ariel Manzur. */
-/* Copyright (c) 2014-2022 Godot Engine contributors (cf. AUTHORS.md). */
-/* */
-/* Permission is hereby granted, free of charge, to any person obtaining */
-/* a copy of this software and associated documentation files (the */
-/* "Software"), to deal in the Software without restriction, including */
-/* without limitation the rights to use, copy, modify, merge, publish, */
-/* distribute, sublicense, and/or sell copies of the Software, and to */
-/* permit persons to whom the Software is furnished to do so, subject to */
-/* the following conditions: */
-/* */
-/* The above copyright notice and this permission notice shall be */
-/* included in all copies or substantial portions of the Software. */
-/* */
-/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
-/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
-/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
-/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
-/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
-/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
-/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
-/*************************************************************************/
-
-/*
-Open Asset Import Library (assimp)
-----------------------------------------------------------------------
-
-Copyright (c) 2006-2019, assimp team
-
-
-All rights reserved.
-
-Redistribution and use of this software in source and binary forms,
-with or without modification, are permitted provided that the
-following conditions are met:
-
-* Redistributions of source code must retain the above
- copyright notice, this list of conditions and the
- following disclaimer.
-
-* Redistributions in binary form must 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 the assimp team, nor the names of its
- contributors may be used to endorse or promote products
- derived from this software without specific prior
- written permission of the assimp team.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(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 FBXProperties.cpp
- * @brief Implementation of the FBX dynamic properties system
- */
-
-#include "FBXProperties.h"
-#include "FBXDocumentUtil.h"
-#include "FBXParser.h"
-#include "FBXTokenizer.h"
-
-namespace FBXDocParser {
-
-using namespace Util;
-
-// ------------------------------------------------------------------------------------------------
-Property::Property() {
-}
-
-// ------------------------------------------------------------------------------------------------
-Property::~Property() {
-}
-
-namespace {
-
-// ------------------------------------------------------------------------------------------------
-// read a typed property out of a FBX element. The return value is nullptr if the property cannot be read.
-PropertyPtr ReadTypedProperty(const ElementPtr element) {
- //ai_assert(element.KeyToken().StringContents() == "P");
-
- const TokenList &tok = element->Tokens();
- //ai_assert(tok.size() >= 5);
-
- const std::string &s = ParseTokenAsString(tok[1]);
- const char *const cs = s.c_str();
- if (!strcmp(cs, "KString")) {
- return new TypedProperty<std::string>(ParseTokenAsString(tok[4]));
- } else if (!strcmp(cs, "bool") || !strcmp(cs, "Bool")) {
- return new TypedProperty<bool>(ParseTokenAsInt(tok[4]) != 0);
- } else if (!strcmp(cs, "int") || !strcmp(cs, "Int") || !strcmp(cs, "enum") || !strcmp(cs, "Enum")) {
- return new TypedProperty<int>(ParseTokenAsInt(tok[4]));
- } else if (!strcmp(cs, "ULongLong")) {
- return new TypedProperty<uint64_t>(ParseTokenAsID(tok[4]));
- } else if (!strcmp(cs, "KTime")) {
- return new TypedProperty<int64_t>(ParseTokenAsInt64(tok[4]));
- } else if (!strcmp(cs, "Vector3D") ||
- !strcmp(cs, "ColorRGB") ||
- !strcmp(cs, "Vector") ||
- !strcmp(cs, "Color") ||
- !strcmp(cs, "Lcl Translation") ||
- !strcmp(cs, "Lcl Rotation") ||
- !strcmp(cs, "Lcl Scaling")) {
- return new TypedProperty<Vector3>(Vector3(
- ParseTokenAsFloat(tok[4]),
- ParseTokenAsFloat(tok[5]),
- ParseTokenAsFloat(tok[6])));
- } else if (!strcmp(cs, "double") || !strcmp(cs, "Number") || !strcmp(cs, "Float") || !strcmp(cs, "float") || !strcmp(cs, "FieldOfView") || !strcmp(cs, "UnitScaleFactor")) {
- return new TypedProperty<float>(ParseTokenAsFloat(tok[4]));
- }
-
- return nullptr;
-}
-
-// ------------------------------------------------------------------------------------------------
-// peek into an element and check if it contains a FBX property, if so return its name.
-std::string PeekPropertyName(const Element &element) {
- //ai_assert(element.KeyToken().StringContents() == "P");
- const TokenList &tok = element.Tokens();
- if (tok.size() < 4) {
- return "";
- }
-
- return ParseTokenAsString(tok[0]);
-}
-} // namespace
-
-// ------------------------------------------------------------------------------------------------
-PropertyTable::PropertyTable() {
-}
-
-// Is used when dealing with FBX Objects not metadata.
-PropertyTable::PropertyTable(const ElementPtr element) :
- element(element) {
- Setup(element);
-}
-
-// ------------------------------------------------------------------------------------------------
-PropertyTable::~PropertyTable() {
- for (PropertyMap::value_type &v : props) {
- delete v.second;
- }
-}
-
-void PropertyTable::Setup(ElementPtr ptr) {
- const ScopePtr sc = GetRequiredScope(ptr);
- const ElementPtr Properties70 = sc->GetElement("Properties70");
- const ScopePtr scope = GetOptionalScope(Properties70);
-
- // no scope, no care.
- if (!scope) {
- return; // NOTE: this is not an error this is actually a Object, without properties, here we will nullptr it.
- }
-
- for (const ElementMap::value_type &v : scope->Elements()) {
- if (v.first != "P") {
- DOMWarning("expected only P elements in property table", v.second);
- continue;
- }
-
- const std::string &name = PeekPropertyName(*v.second);
- if (!name.length()) {
- DOMWarning("could not read property name", v.second);
- continue;
- }
-
- LazyPropertyMap::const_iterator it = lazyProps.find(name);
- if (it != lazyProps.end()) {
- DOMWarning("duplicate property name, will hide previous value: " + name, v.second);
- continue;
- }
-
- // since the above checks for duplicates we can be sure to insert the only match here.
- lazyProps[name] = v.second;
- }
-}
-
-// ------------------------------------------------------------------------------------------------
-PropertyPtr PropertyTable::Get(const std::string &name) const {
- PropertyMap::const_iterator it = props.find(name);
- if (it == props.end()) {
- // hasn't been parsed yet?
- LazyPropertyMap::const_iterator lit = lazyProps.find(name);
- if (lit != lazyProps.end()) {
- props[name] = ReadTypedProperty(lit->second);
- it = props.find(name);
-
- //ai_assert(it != props.end());
- }
-
- if (it == props.end()) {
- // check property template
- return nullptr;
- }
- }
-
- return (*it).second;
-}
-
-DirectPropertyMap PropertyTable::GetUnparsedProperties() const {
- DirectPropertyMap result;
-
- // Loop through all the lazy properties (which is all the properties)
- for (const LazyPropertyMap::value_type &element : lazyProps) {
- // Skip parsed properties
- if (props.end() != props.find(element.first)) {
- continue;
- }
-
- // Read the element's value.
- // Wrap the naked pointer (since the call site is required to acquire ownership)
- // std::unique_ptr from C++11 would be preferred both as a wrapper and a return value.
- Property *prop = ReadTypedProperty(element.second);
-
- // Element could not be read. Skip it.
- if (!prop) {
- continue;
- }
-
- // Add to result
- result[element.first] = prop;
- }
-
- return result;
-}
-} // namespace FBXDocParser
diff --git a/modules/fbx/fbx_parser/FBXProperties.h b/modules/fbx/fbx_parser/FBXProperties.h
deleted file mode 100644
index 4d74a1db17..0000000000
--- a/modules/fbx/fbx_parser/FBXProperties.h
+++ /dev/null
@@ -1,212 +0,0 @@
-/*************************************************************************/
-/* FBXProperties.h */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* https://godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2022 Juan Linietsky, Ariel Manzur. */
-/* Copyright (c) 2014-2022 Godot Engine contributors (cf. AUTHORS.md). */
-/* */
-/* Permission is hereby granted, free of charge, to any person obtaining */
-/* a copy of this software and associated documentation files (the */
-/* "Software"), to deal in the Software without restriction, including */
-/* without limitation the rights to use, copy, modify, merge, publish, */
-/* distribute, sublicense, and/or sell copies of the Software, and to */
-/* permit persons to whom the Software is furnished to do so, subject to */
-/* the following conditions: */
-/* */
-/* The above copyright notice and this permission notice shall be */
-/* included in all copies or substantial portions of the Software. */
-/* */
-/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
-/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
-/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
-/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
-/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
-/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
-/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
-/*************************************************************************/
-
-/*
-Open Asset Import Library (assimp)
-----------------------------------------------------------------------
-
-Copyright (c) 2006-2019, assimp team
-
-
-All rights reserved.
-
-Redistribution and use of this software in source and binary forms,
-with or without modification, are permitted provided that the
-following conditions are met:
-
-* Redistributions of source code must retain the above
- copyright notice, this list of conditions and the
- following disclaimer.
-
-* Redistributions in binary form must 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 the assimp team, nor the names of its
- contributors may be used to endorse or promote products
- derived from this software without specific prior
- written permission of the assimp team.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(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 FBXProperties.h
- * @brief FBX dynamic properties
- */
-#ifndef FBX_PROPERTIES_H
-#define FBX_PROPERTIES_H
-
-#include "FBXParser.h"
-#include <map>
-#include <memory>
-#include <string>
-#include <vector>
-
-namespace FBXDocParser {
-
-// Forward declarations
-class Element;
-
-/** Represents a dynamic property. Type info added by deriving classes,
- * see #TypedProperty.
- Example:
- @verbatim
- P: "ShininessExponent", "double", "Number", "",0.5
- @endvebatim
-*/
-class Property {
-protected:
- Property();
-
-public:
- virtual ~Property();
-
-public:
- template <typename T>
- const T *As() const {
- return dynamic_cast<const T *>(this);
- }
-};
-
-template <typename T>
-class TypedProperty : public Property {
-public:
- explicit TypedProperty(const T &value) :
- value(value) {
- // empty
- }
-
- const T &Value() const {
- return value;
- }
-
-private:
- T value;
-};
-
-#define new_Property new Property
-typedef Property *PropertyPtr;
-typedef std::map<std::string, PropertyPtr> DirectPropertyMap;
-typedef std::map<std::string, PropertyPtr> PropertyMap;
-typedef std::map<std::string, ElementPtr> LazyPropertyMap;
-
-/**
- * Represents a property table as can be found in the newer FBX files (Properties60, Properties70)
- */
-class PropertyTable {
-public:
- // in-memory property table with no source element
- PropertyTable();
- PropertyTable(const ElementPtr element);
- virtual ~PropertyTable();
-
- PropertyPtr Get(const std::string &name) const;
- void Setup(ElementPtr ptr);
-
- // PropertyTable's need not be coupled with FBX elements so this can be NULL
- ElementPtr GetElement() {
- return element;
- }
-
- PropertyMap &GetProperties() {
- return props;
- }
-
- const LazyPropertyMap &GetLazyProperties() {
- return lazyProps;
- }
-
- DirectPropertyMap GetUnparsedProperties() const;
-
-private:
- LazyPropertyMap lazyProps;
- mutable PropertyMap props;
- ElementPtr element = nullptr;
-};
-
-// ------------------------------------------------------------------------------------------------
-template <typename T>
-inline T PropertyGet(const PropertyTable *in, const std::string &name, const T &defaultValue) {
- PropertyPtr prop = in->Get(name);
- if (nullptr == prop) {
- return defaultValue;
- }
-
- // strong typing, no need to be lenient
- const TypedProperty<T> *const tprop = prop->As<TypedProperty<T>>();
- if (nullptr == tprop) {
- return defaultValue;
- }
-
- return tprop->Value();
-}
-
-// ------------------------------------------------------------------------------------------------
-template <typename T>
-inline T PropertyGet(const PropertyTable *in, const std::string &name, bool &result, bool useTemplate = false) {
- PropertyPtr prop = in->Get(name);
- if (nullptr == prop) {
- if (nullptr == in) {
- result = false;
- return T();
- }
- prop = in->Get(name);
- if (nullptr == prop) {
- result = false;
- return T();
- }
- }
-
- // strong typing, no need to be lenient
- const TypedProperty<T> *const tprop = prop->As<TypedProperty<T>>();
- if (nullptr == tprop) {
- result = false;
- return T();
- }
-
- result = true;
- return tprop->Value();
-}
-} // namespace FBXDocParser
-
-#endif // FBX_PROPERTIES_H
diff --git a/modules/fbx/fbx_parser/FBXTokenizer.cpp b/modules/fbx/fbx_parser/FBXTokenizer.cpp
deleted file mode 100644
index bac3e6d5c4..0000000000
--- a/modules/fbx/fbx_parser/FBXTokenizer.cpp
+++ /dev/null
@@ -1,253 +0,0 @@
-/*************************************************************************/
-/* FBXTokenizer.cpp */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* https://godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2022 Juan Linietsky, Ariel Manzur. */
-/* Copyright (c) 2014-2022 Godot Engine contributors (cf. AUTHORS.md). */
-/* */
-/* Permission is hereby granted, free of charge, to any person obtaining */
-/* a copy of this software and associated documentation files (the */
-/* "Software"), to deal in the Software without restriction, including */
-/* without limitation the rights to use, copy, modify, merge, publish, */
-/* distribute, sublicense, and/or sell copies of the Software, and to */
-/* permit persons to whom the Software is furnished to do so, subject to */
-/* the following conditions: */
-/* */
-/* The above copyright notice and this permission notice shall be */
-/* included in all copies or substantial portions of the Software. */
-/* */
-/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
-/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
-/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
-/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
-/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
-/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
-/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
-/*************************************************************************/
-
-/*
-Open Asset Import Library (assimp)
-----------------------------------------------------------------------
-
-Copyright (c) 2006-2019, assimp team
-
-
-All rights reserved.
-
-Redistribution and use of this software in source and binary forms,
-with or without modification, are permitted provided that the
-following conditions are met:
-
-* Redistributions of source code must retain the above
- copyright notice, this list of conditions and the
- following disclaimer.
-
-* Redistributions in binary form must 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 the assimp team, nor the names of its
- contributors may be used to endorse or promote products
- derived from this software without specific prior
- written permission of the assimp team.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(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 FBXTokenizer.cpp
- * @brief Implementation of the FBX broadphase lexer
- */
-
-// tab width for logging columns
-#define ASSIMP_FBX_TAB_WIDTH 4
-
-#include "FBXTokenizer.h"
-#include "core/string/print_string.h"
-
-namespace FBXDocParser {
-
-// ------------------------------------------------------------------------------------------------
-Token::Token(const char *p_sbegin, const char *p_send, TokenType p_type, unsigned int p_line, unsigned int p_column) :
- sbegin(p_sbegin),
- send(p_send),
- type(p_type),
- line(p_line),
- column(p_column) {
-#ifdef DEBUG_ENABLED
- contents = std::string(sbegin, static_cast<size_t>(send - sbegin));
-#endif
-}
-
-// ------------------------------------------------------------------------------------------------
-Token::~Token() {
-}
-
-namespace {
-
-// ------------------------------------------------------------------------------------------------
-void TokenizeError(const std::string &message, unsigned int line, unsigned int column) {
- print_error("[FBX-Tokenize]" + String(message.c_str()) + " " + itos(line) + ":" + itos(column));
-}
-
-// process a potential data token up to 'cur', adding it to 'output_tokens'.
-// ------------------------------------------------------------------------------------------------
-void ProcessDataToken(TokenList &output_tokens, const char *&start, const char *&end,
- unsigned int line,
- unsigned int column,
- TokenType type = TokenType_DATA,
- bool must_have_token = false) {
- if (start && end) {
- // sanity check:
- // tokens should have no whitespace outside quoted text and [start,end] should
- // properly delimit the valid range.
- bool in_double_quotes = false;
- for (const char *c = start; c != end + 1; ++c) {
- if (*c == '\"') {
- in_double_quotes = !in_double_quotes;
- }
-
- if (!in_double_quotes && IsSpaceOrNewLine(*c)) {
- TokenizeError("unexpected whitespace in token", line, column);
- }
- }
-
- if (in_double_quotes) {
- TokenizeError("non-terminated double quotes", line, column);
- }
-
- output_tokens.push_back(new_Token(start, end + 1, type, line, column));
- } else if (must_have_token) {
- TokenizeError("unexpected character, expected data token", line, column);
- }
-
- start = end = nullptr;
-}
-} // namespace
-
-// ------------------------------------------------------------------------------------------------
-void Tokenize(TokenList &output_tokens, const char *input, size_t length, bool &corrupt) {
- // line and column numbers numbers are one-based
- unsigned int line = 1;
- unsigned int column = 1;
-
- bool comment = false;
- bool in_double_quotes = false;
- bool pending_data_token = false;
-
- const char *token_begin = nullptr, *token_end = nullptr;
-
- // input (starting string), *cur the current string, column +=
- // modified to fix strlen() and stop buffer overflow
- for (size_t x = 0; x < length; x++) {
- const char c = input[x];
- const char *cur = &input[x];
- column += (c == '\t' ? ASSIMP_FBX_TAB_WIDTH : 1);
-
- if (IsLineEnd(c)) {
- comment = false;
-
- column = 0;
- ++line;
- }
-
- if (comment) {
- continue;
- }
-
- if (in_double_quotes) {
- if (c == '\"') {
- in_double_quotes = false;
- token_end = cur;
-
- ProcessDataToken(output_tokens, token_begin, token_end, line, column);
- pending_data_token = false;
- }
- continue;
- }
-
- switch (c) {
- case '\"':
- if (token_begin) {
- TokenizeError("unexpected double-quote", line, column);
- corrupt = true;
- return;
- }
- token_begin = cur;
- in_double_quotes = true;
- continue;
-
- case ';':
- ProcessDataToken(output_tokens, token_begin, token_end, line, column);
- comment = true;
- continue;
-
- case '{':
- ProcessDataToken(output_tokens, token_begin, token_end, line, column);
- output_tokens.push_back(new_Token(cur, cur + 1, TokenType_OPEN_BRACKET, line, column));
- continue;
-
- case '}':
- ProcessDataToken(output_tokens, token_begin, token_end, line, column);
- output_tokens.push_back(new_Token(cur, cur + 1, TokenType_CLOSE_BRACKET, line, column));
- continue;
-
- case ',':
- if (pending_data_token) {
- ProcessDataToken(output_tokens, token_begin, token_end, line, column, TokenType_DATA, true);
- }
- output_tokens.push_back(new_Token(cur, cur + 1, TokenType_COMMA, line, column));
- continue;
-
- case ':':
- if (pending_data_token) {
- ProcessDataToken(output_tokens, token_begin, token_end, line, column, TokenType_KEY, true);
- } else {
- TokenizeError("unexpected colon", line, column);
- }
- continue;
- }
-
- if (IsSpaceOrNewLine(c)) {
- if (token_begin) {
- // peek ahead and check if the next token is a colon in which
- // case this counts as KEY token.
- TokenType type = TokenType_DATA;
- for (const char *peek = cur; *peek && IsSpaceOrNewLine(*peek); ++peek) {
- if (*peek == ':') {
- type = TokenType_KEY;
- cur = peek;
- break;
- }
- }
-
- ProcessDataToken(output_tokens, token_begin, token_end, line, column, type);
- }
-
- pending_data_token = false;
- } else {
- token_end = cur;
- if (!token_begin) {
- token_begin = cur;
- }
-
- pending_data_token = true;
- }
- }
-}
-} // namespace FBXDocParser
diff --git a/modules/fbx/fbx_parser/FBXTokenizer.h b/modules/fbx/fbx_parser/FBXTokenizer.h
deleted file mode 100644
index 789f8b5d9d..0000000000
--- a/modules/fbx/fbx_parser/FBXTokenizer.h
+++ /dev/null
@@ -1,203 +0,0 @@
-/*************************************************************************/
-/* FBXTokenizer.h */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* https://godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2022 Juan Linietsky, Ariel Manzur. */
-/* Copyright (c) 2014-2022 Godot Engine contributors (cf. AUTHORS.md). */
-/* */
-/* Permission is hereby granted, free of charge, to any person obtaining */
-/* a copy of this software and associated documentation files (the */
-/* "Software"), to deal in the Software without restriction, including */
-/* without limitation the rights to use, copy, modify, merge, publish, */
-/* distribute, sublicense, and/or sell copies of the Software, and to */
-/* permit persons to whom the Software is furnished to do so, subject to */
-/* the following conditions: */
-/* */
-/* The above copyright notice and this permission notice shall be */
-/* included in all copies or substantial portions of the Software. */
-/* */
-/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
-/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
-/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
-/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
-/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
-/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
-/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
-/*************************************************************************/
-
-/*
-Open Asset Import Library (assimp)
-----------------------------------------------------------------------
-
-Copyright (c) 2006-2019, assimp team
-
-
-All rights reserved.
-
-Redistribution and use of this software in source and binary forms,
-with or without modification, are permitted provided that the
-following conditions are met:
-
-* Redistributions of source code must retain the above
- copyright notice, this list of conditions and the
- following disclaimer.
-
-* Redistributions in binary form must 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 the assimp team, nor the names of its
- contributors may be used to endorse or promote products
- derived from this software without specific prior
- written permission of the assimp team.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(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 FBXTokenizer.h
- * @brief FBX lexer
- */
-#ifndef FBX_TOKENIZER_H
-#define FBX_TOKENIZER_H
-
-#include "FBXParseTools.h"
-#include "core/string/ustring.h"
-#include <iostream>
-#include <memory>
-#include <string>
-#include <vector>
-
-namespace FBXDocParser {
-/** Rough classification for text FBX tokens used for constructing the
- * basic scope hierarchy. */
-enum TokenType {
- // {
- TokenType_OPEN_BRACKET = 0,
-
- // }
- TokenType_CLOSE_BRACKET,
-
- // '"blablubb"', '2', '*14' - very general token class,
- // further processing happens at a later stage.
- TokenType_DATA,
-
- //
- TokenType_BINARY_DATA,
-
- // ,
- TokenType_COMMA,
-
- // blubb:
- TokenType_KEY
-};
-
-/** Represents a single token in a FBX file. Tokens are
- * classified by the #TokenType enumerated types.
- *
- * Offers iterator protocol. Tokens are immutable. */
-class Token {
-private:
- static const unsigned int BINARY_MARKER = static_cast<unsigned int>(-1);
-
-public:
- /** construct a textual token */
- Token(const char *p_sbegin, const char *p_send, TokenType p_type, unsigned int p_line, unsigned int p_column);
-
- /** construct a binary token */
- Token(const char *p_sbegin, const char *p_send, TokenType p_type, size_t p_offset);
- ~Token();
-
-public:
- std::string StringContents() const {
- return std::string(begin(), end());
- }
-
- bool IsBinary() const {
- return column == BINARY_MARKER;
- }
-
- const char *begin() const {
- return sbegin;
- }
-
- const char *end() const {
- return send;
- }
-
- TokenType Type() const {
- return type;
- }
-
- size_t Offset() const {
- return offset;
- }
-
- unsigned int Line() const {
- return static_cast<unsigned int>(line);
- }
-
- unsigned int Column() const {
- return column;
- }
-
-private:
-#ifdef DEBUG_ENABLED
- // full string copy for the sole purpose that it nicely appears
- // in msvc's debugger window.
- std::string contents;
-#endif
-
- const char *sbegin = nullptr;
- const char *send = nullptr;
- const TokenType type;
-
- union {
- size_t line;
- size_t offset;
- };
- const unsigned int column = 0;
-};
-
-// Fixed leak by using shared_ptr for tokens
-typedef Token *TokenPtr;
-typedef std::vector<TokenPtr> TokenList;
-
-#define new_Token new Token
-
-/** Main FBX tokenizer function. Transform input buffer into a list of preprocessed tokens.
- *
- * Skips over comments and generates line and column numbers.
- *
- * @param output_tokens Receives a list of all tokens in the input data.
- * @param input_buffer Textual input buffer to be processed, 0-terminated.
- * @print_error if something goes wrong */
-void Tokenize(TokenList &output_tokens, const char *input, size_t length, bool &corrupt);
-
-/** Tokenizer function for binary FBX files.
- *
- * Emits a token list suitable for direct parsing.
- *
- * @param output_tokens Receives a list of all tokens in the input data.
- * @param input_buffer Binary input buffer to be processed.
- * @param length Length of input buffer, in bytes. There is no 0-terminal.
- * @print_error if something goes wrong */
-void TokenizeBinary(TokenList &output_tokens, const char *input, size_t length, bool &corrupt);
-} // namespace FBXDocParser
-
-#endif // FBX_TOKENIZER_H
diff --git a/modules/fbx/fbx_parser/FBXUtil.cpp b/modules/fbx/fbx_parser/FBXUtil.cpp
deleted file mode 100644
index e4958547d4..0000000000
--- a/modules/fbx/fbx_parser/FBXUtil.cpp
+++ /dev/null
@@ -1,222 +0,0 @@
-/*************************************************************************/
-/* FBXUtil.cpp */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* https://godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2022 Juan Linietsky, Ariel Manzur. */
-/* Copyright (c) 2014-2022 Godot Engine contributors (cf. AUTHORS.md). */
-/* */
-/* Permission is hereby granted, free of charge, to any person obtaining */
-/* a copy of this software and associated documentation files (the */
-/* "Software"), to deal in the Software without restriction, including */
-/* without limitation the rights to use, copy, modify, merge, publish, */
-/* distribute, sublicense, and/or sell copies of the Software, and to */
-/* permit persons to whom the Software is furnished to do so, subject to */
-/* the following conditions: */
-/* */
-/* The above copyright notice and this permission notice shall be */
-/* included in all copies or substantial portions of the Software. */
-/* */
-/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
-/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
-/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
-/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
-/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
-/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
-/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
-/*************************************************************************/
-
-/*
-Open Asset Import Library (assimp)
-----------------------------------------------------------------------
-
-Copyright (c) 2006-2019, assimp team
-
-
-All rights reserved.
-
-Redistribution and use of this software in source and binary forms,
-with or without modification, are permitted provided that the
-following conditions are met:
-
-* Redistributions of source code must retain the above
- copyright notice, this list of conditions and the
- following disclaimer.
-
-* Redistributions in binary form must 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 the assimp team, nor the names of its
- contributors may be used to endorse or promote products
- derived from this software without specific prior
- written permission of the assimp team.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(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 FBXUtil.cpp
- * @brief Implementation of internal FBX utility functions
- */
-
-#include "FBXUtil.h"
-#include "FBXTokenizer.h"
-#include <cstring>
-#include <string>
-
-namespace FBXDocParser {
-namespace Util {
-
-// ------------------------------------------------------------------------------------------------
-const char *TokenTypeString(TokenType t) {
- switch (t) {
- case TokenType_OPEN_BRACKET:
- return "TOK_OPEN_BRACKET";
-
- case TokenType_CLOSE_BRACKET:
- return "TOK_CLOSE_BRACKET";
-
- case TokenType_DATA:
- return "TOK_DATA";
-
- case TokenType_COMMA:
- return "TOK_COMMA";
-
- case TokenType_KEY:
- return "TOK_KEY";
-
- case TokenType_BINARY_DATA:
- return "TOK_BINARY_DATA";
- }
-
- //ai_assert(false);
- return "";
-}
-
-// Generated by this formula: T["ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"[i]] = i;
-static const uint8_t base64DecodeTable[128] = {
- 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, 62, 255, 255, 255, 63,
- 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 255, 255, 255, 255, 255, 255,
- 255, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
- 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 255, 255, 255, 255, 255,
- 255, 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, 255, 255, 255, 255, 255
-};
-
-uint8_t DecodeBase64(char ch) {
- const uint8_t idx = static_cast<uint8_t>(ch);
- if (idx > 127) {
- return 255;
- }
- return base64DecodeTable[idx];
-}
-
-size_t ComputeDecodedSizeBase64(const char *in, size_t inLength) {
- if (inLength < 2) {
- return 0;
- }
- const size_t equals = size_t(in[inLength - 1] == '=') + size_t(in[inLength - 2] == '=');
- const size_t full_length = (inLength * 3) >> 2; // div by 4
- if (full_length < equals) {
- return 0;
- }
- return full_length - equals;
-}
-
-size_t DecodeBase64(const char *in, size_t inLength, uint8_t *out, size_t maxOutLength) {
- if (maxOutLength == 0 || inLength < 2) {
- return 0;
- }
- const size_t realLength = inLength - size_t(in[inLength - 1] == '=') - size_t(in[inLength - 2] == '=');
- size_t dst_offset = 0;
- int val = 0, valb = -8;
- for (size_t src_offset = 0; src_offset < realLength; ++src_offset) {
- const uint8_t table_value = Util::DecodeBase64(in[src_offset]);
- if (table_value == 255) {
- return 0;
- }
- val = (val << 6) + table_value;
- valb += 6;
- if (valb >= 0) {
- out[dst_offset++] = static_cast<uint8_t>((val >> valb) & 0xFF);
- valb -= 8;
- val &= 0xFFF;
- }
- }
- return dst_offset;
-}
-
-static const char to_base64_string[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
-char EncodeBase64(char byte) {
- return to_base64_string[(size_t)byte];
-}
-
-/** Encodes a block of 4 bytes to base64 encoding
- * @param bytes Bytes to encode.
- * @param out_string String to write encoded values to.
- * @param string_pos Position in out_string.
- */
-void EncodeByteBlock(const char *bytes, std::string &out_string, size_t string_pos) {
- char b0 = (bytes[0] & 0xFC) >> 2;
- char b1 = (bytes[0] & 0x03) << 4 | ((bytes[1] & 0xF0) >> 4);
- char b2 = (bytes[1] & 0x0F) << 2 | ((bytes[2] & 0xC0) >> 6);
- char b3 = (bytes[2] & 0x3F);
-
- out_string[string_pos + 0] = EncodeBase64(b0);
- out_string[string_pos + 1] = EncodeBase64(b1);
- out_string[string_pos + 2] = EncodeBase64(b2);
- out_string[string_pos + 3] = EncodeBase64(b3);
-}
-
-std::string EncodeBase64(const char *data, size_t length) {
- // calculate extra bytes needed to get a multiple of 3
- size_t extraBytes = 3 - length % 3;
-
- // number of base64 bytes
- size_t encodedBytes = 4 * (length + extraBytes) / 3;
-
- std::string encoded_string(encodedBytes, '=');
-
- // read blocks of 3 bytes
- for (size_t ib3 = 0; ib3 < length / 3; ib3++) {
- const size_t iByte = ib3 * 3;
- const size_t iEncodedByte = ib3 * 4;
- const char *currData = &data[iByte];
-
- EncodeByteBlock(currData, encoded_string, iEncodedByte);
- }
-
- // if size of data is not a multiple of 3, also encode the final bytes (and add zeros where needed)
- if (extraBytes > 0) {
- char finalBytes[4] = { 0, 0, 0, 0 };
- memcpy(&finalBytes[0], &data[length - length % 3], length % 3);
-
- const size_t iEncodedByte = encodedBytes - 4;
- EncodeByteBlock(&finalBytes[0], encoded_string, iEncodedByte);
-
- // add '=' at the end
- for (size_t i = 0; i < 4 * extraBytes / 3; i++) {
- encoded_string[encodedBytes - i - 1] = '=';
- }
- }
- return encoded_string;
-}
-} // namespace Util
-} // namespace FBXDocParser
diff --git a/modules/fbx/fbx_parser/FBXUtil.h b/modules/fbx/fbx_parser/FBXUtil.h
deleted file mode 100644
index 8022233029..0000000000
--- a/modules/fbx/fbx_parser/FBXUtil.h
+++ /dev/null
@@ -1,122 +0,0 @@
-/*************************************************************************/
-/* FBXUtil.h */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* https://godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2022 Juan Linietsky, Ariel Manzur. */
-/* Copyright (c) 2014-2022 Godot Engine contributors (cf. AUTHORS.md). */
-/* */
-/* Permission is hereby granted, free of charge, to any person obtaining */
-/* a copy of this software and associated documentation files (the */
-/* "Software"), to deal in the Software without restriction, including */
-/* without limitation the rights to use, copy, modify, merge, publish, */
-/* distribute, sublicense, and/or sell copies of the Software, and to */
-/* permit persons to whom the Software is furnished to do so, subject to */
-/* the following conditions: */
-/* */
-/* The above copyright notice and this permission notice shall be */
-/* included in all copies or substantial portions of the Software. */
-/* */
-/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
-/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
-/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
-/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
-/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
-/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
-/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
-/*************************************************************************/
-
-/*
-Open Asset Import Library (assimp)
-----------------------------------------------------------------------
-
-Copyright (c) 2006-2019, assimp team
-
-
-All rights reserved.
-
-Redistribution and use of this software in source and binary forms,
-with or without modification, are permitted provided that the
-following conditions are met:
-
-* Redistributions of source code must retain the above
- copyright notice, this list of conditions and the
- following disclaimer.
-
-* Redistributions in binary form must 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 the assimp team, nor the names of its
- contributors may be used to endorse or promote products
- derived from this software without specific prior
- written permission of the assimp team.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(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 FBXUtil.h
- * @brief FBX utility functions for internal use
- */
-#ifndef FBX_UTIL_H
-#define FBX_UTIL_H
-
-#include "FBXTokenizer.h"
-#include <stdint.h>
-
-namespace FBXDocParser {
-
-namespace Util {
-
-/** Get a string representation for a #TokenType. */
-const char *TokenTypeString(TokenType t);
-
-/** Decode a single Base64-encoded character.
- *
- * @param ch Character to decode (from base64 to binary).
- * @return decoded byte value*/
-uint8_t DecodeBase64(char ch);
-
-/** Compute decoded size of a Base64-encoded string
- *
- * @param in Characters to decode.
- * @param inLength Number of characters to decode.
- * @return size of the decoded data (number of bytes)*/
-size_t ComputeDecodedSizeBase64(const char *in, size_t inLength);
-
-/** Decode a Base64-encoded string
- *
- * @param in Characters to decode.
- * @param inLength Number of characters to decode.
- * @param out Pointer where we will store the decoded data.
- * @param maxOutLength Size of output buffer.
- * @return size of the decoded data (number of bytes)*/
-size_t DecodeBase64(const char *in, size_t inLength, uint8_t *out, size_t maxOutLength);
-
-char EncodeBase64(char byte);
-
-/** Encode bytes in base64-encoding
- *
- * @param data Binary data to encode.
- * @param inLength Number of bytes to encode.
- * @return base64-encoded string*/
-std::string EncodeBase64(const char *data, size_t length);
-} // namespace Util
-} // namespace FBXDocParser
-
-#endif // FBX_UTIL_H
diff --git a/modules/fbx/fbx_parser/LICENSE b/modules/fbx/fbx_parser/LICENSE
deleted file mode 100644
index b42fc6efe6..0000000000
--- a/modules/fbx/fbx_parser/LICENSE
+++ /dev/null
@@ -1,39 +0,0 @@
-The files in this folder were originally from ASSIMP, but have been heavily modified to fix bugs and match coding
-conventions of the Godot Engine project. We have kept a copy of the applicable licenses in the folder as required by
-the license.
-
-Open Asset Import Library (assimp)
-
-Copyright (c) 2006-2020, assimp team
-All rights reserved.
-
-Redistribution and use of this software in source and binary forms,
-with or without modification, are permitted provided that the
-following conditions are met:
-
-* Redistributions of source code must retain the above
- copyright notice, this list of conditions and the
- following disclaimer.
-
-* Redistributions in binary form must 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 the assimp team, nor the names of its
- contributors may be used to endorse or promote products
- derived from this software without specific prior
- written permission of the assimp team.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(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/modules/fbx/tools/import_utils.cpp b/modules/fbx/tools/import_utils.cpp
deleted file mode 100644
index 5a49f24c00..0000000000
--- a/modules/fbx/tools/import_utils.cpp
+++ /dev/null
@@ -1,151 +0,0 @@
-/*************************************************************************/
-/* import_utils.cpp */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* https://godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2022 Juan Linietsky, Ariel Manzur. */
-/* Copyright (c) 2014-2022 Godot Engine contributors (cf. AUTHORS.md). */
-/* */
-/* Permission is hereby granted, free of charge, to any person obtaining */
-/* a copy of this software and associated documentation files (the */
-/* "Software"), to deal in the Software without restriction, including */
-/* without limitation the rights to use, copy, modify, merge, publish, */
-/* distribute, sublicense, and/or sell copies of the Software, and to */
-/* permit persons to whom the Software is furnished to do so, subject to */
-/* the following conditions: */
-/* */
-/* The above copyright notice and this permission notice shall be */
-/* included in all copies or substantial portions of the Software. */
-/* */
-/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
-/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
-/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
-/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
-/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
-/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
-/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
-/*************************************************************************/
-
-#include "import_utils.h"
-
-Vector3 ImportUtils::deg2rad(const Vector3 &p_rotation) {
- return p_rotation / 180.0 * Math_PI;
-}
-
-Vector3 ImportUtils::rad2deg(const Vector3 &p_rotation) {
- return p_rotation / Math_PI * 180.0;
-}
-
-Basis ImportUtils::EulerToBasis(FBXDocParser::Model::RotOrder mode, const Vector3 &p_rotation) {
- Basis ret;
-
- // FBX is using intrinsic euler, we can convert intrinsic to extrinsic (the one used in godot
- // by simply invert its order: https://www.cs.utexas.edu/~theshark/courses/cs354/lectures/cs354-14.pdf
- switch (mode) {
- case FBXDocParser::Model::RotOrder_EulerXYZ:
- ret.set_euler(p_rotation, Basis::EULER_ORDER_XYZ);
- break;
-
- case FBXDocParser::Model::RotOrder_EulerXZY:
- ret.set_euler(p_rotation, Basis::EULER_ORDER_XZY);
- break;
-
- case FBXDocParser::Model::RotOrder_EulerYZX:
- ret.set_euler(p_rotation, Basis::EULER_ORDER_YZX);
- break;
-
- case FBXDocParser::Model::RotOrder_EulerYXZ:
- ret.set_euler(p_rotation, Basis::EULER_ORDER_YXZ);
- break;
-
- case FBXDocParser::Model::RotOrder_EulerZXY:
- ret.set_euler(p_rotation, Basis::EULER_ORDER_ZXY);
- break;
-
- case FBXDocParser::Model::RotOrder_EulerZYX:
- ret.set_euler(p_rotation, Basis::EULER_ORDER_ZYX);
- break;
-
- case FBXDocParser::Model::RotOrder_SphericXYZ:
- // TODO do this.
- break;
-
- default:
- // If you land here, Please integrate all enums.
- CRASH_NOW_MSG("This is not unreachable.");
- }
-
- return ret;
-}
-
-Quaternion ImportUtils::EulerToQuaternion(FBXDocParser::Model::RotOrder mode, const Vector3 &p_rotation) {
- return ImportUtils::EulerToBasis(mode, p_rotation);
-}
-
-Vector3 ImportUtils::BasisToEuler(FBXDocParser::Model::RotOrder mode, const Basis &p_rotation) {
- // FBX is using intrinsic euler, we can convert intrinsic to extrinsic (the one used in godot
- // by simply invert its order: https://www.cs.utexas.edu/~theshark/courses/cs354/lectures/cs354-14.pdf
- switch (mode) {
- case FBXDocParser::Model::RotOrder_EulerXYZ:
- return p_rotation.get_euler(Basis::EULER_ORDER_XYZ);
-
- case FBXDocParser::Model::RotOrder_EulerXZY:
- return p_rotation.get_euler(Basis::EULER_ORDER_XZY);
-
- case FBXDocParser::Model::RotOrder_EulerYZX:
- return p_rotation.get_euler(Basis::EULER_ORDER_YZX);
-
- case FBXDocParser::Model::RotOrder_EulerYXZ:
- return p_rotation.get_euler(Basis::EULER_ORDER_YXZ);
-
- case FBXDocParser::Model::RotOrder_EulerZXY:
- return p_rotation.get_euler(Basis::EULER_ORDER_ZXY);
-
- case FBXDocParser::Model::RotOrder_EulerZYX:
- return p_rotation.get_euler(Basis::EULER_ORDER_ZYX);
-
- case FBXDocParser::Model::RotOrder_SphericXYZ:
- // TODO
- return Vector3();
-
- default:
- // If you land here, Please integrate all enums.
- CRASH_NOW_MSG("This is not unreachable.");
- return Vector3();
- }
-}
-
-Vector3 ImportUtils::QuaternionToEuler(FBXDocParser::Model::RotOrder mode, const Quaternion &p_rotation) {
- return BasisToEuler(mode, p_rotation);
-}
-
-Transform3D get_unscaled_transform(const Transform3D &p_initial, real_t p_scale) {
- Transform3D unscaled = Transform3D(p_initial.basis, p_initial.origin * p_scale);
- ERR_FAIL_COND_V_MSG(unscaled.basis.determinant() == 0, Transform3D(), "det is zero unscaled?");
- return unscaled;
-}
-
-Vector3 get_poly_normal(const std::vector<Vector3> &p_vertices) {
- ERR_FAIL_COND_V_MSG(p_vertices.size() < 3, Vector3(0, 0, 0), "At least 3 vertices are necessary");
- // Using long double to make sure that normal is computed for even really tiny objects.
- typedef long double ldouble;
- ldouble x = 0.0;
- ldouble y = 0.0;
- ldouble z = 0.0;
- for (size_t i = 0; i < p_vertices.size(); i += 1) {
- const Vector3 current = p_vertices[i];
- const Vector3 next = p_vertices[(i + 1) % p_vertices.size()];
- x += (ldouble(current.y) - ldouble(next.y)) * (ldouble(current.z) + ldouble(next.z));
- y += (ldouble(current.z) - ldouble(next.z)) * (ldouble(current.x) + ldouble(next.x));
- z += (ldouble(current.x) - ldouble(next.x)) * (ldouble(current.y) + ldouble(next.y));
- }
- const ldouble l2 = x * x + y * y + z * z;
- if (l2 == 0.0) {
- return (p_vertices[0] - p_vertices[1]).normalized().cross((p_vertices[0] - p_vertices[2]).normalized()).normalized();
- } else {
- const double l = Math::sqrt(double(l2));
- return Vector3(x / l, y / l, z / l);
- }
-}
diff --git a/modules/fbx/tools/import_utils.h b/modules/fbx/tools/import_utils.h
deleted file mode 100644
index b52263c2ac..0000000000
--- a/modules/fbx/tools/import_utils.h
+++ /dev/null
@@ -1,400 +0,0 @@
-/*************************************************************************/
-/* import_utils.h */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* https://godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2022 Juan Linietsky, Ariel Manzur. */
-/* Copyright (c) 2014-2022 Godot Engine contributors (cf. AUTHORS.md). */
-/* */
-/* Permission is hereby granted, free of charge, to any person obtaining */
-/* a copy of this software and associated documentation files (the */
-/* "Software"), to deal in the Software without restriction, including */
-/* without limitation the rights to use, copy, modify, merge, publish, */
-/* distribute, sublicense, and/or sell copies of the Software, and to */
-/* permit persons to whom the Software is furnished to do so, subject to */
-/* the following conditions: */
-/* */
-/* The above copyright notice and this permission notice shall be */
-/* included in all copies or substantial portions of the Software. */
-/* */
-/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
-/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
-/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
-/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
-/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
-/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
-/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
-/*************************************************************************/
-
-#ifndef IMPORT_UTILS_FBX_IMPORTER_H
-#define IMPORT_UTILS_FBX_IMPORTER_H
-
-#include "core/io/image_loader.h"
-
-#include "data/import_state.h"
-#include "fbx_parser/FBXDocument.h"
-
-#include <string>
-
-#define CONVERT_FBX_TIME(time) static_cast<double>(time) / 46186158000LL
-
-/**
- * Import Utils
- * Conversion tools / glue code to convert from FBX to Godot
- */
-class ImportUtils {
-public:
- /// Convert a vector from degrees to radians.
- static Vector3 deg2rad(const Vector3 &p_rotation);
-
- /// Convert a vector from radians to degrees.
- static Vector3 rad2deg(const Vector3 &p_rotation);
-
- /// Converts rotation order vector (in rad) to quaternion.
- static Basis EulerToBasis(FBXDocParser::Model::RotOrder mode, const Vector3 &p_rotation);
-
- /// Converts rotation order vector (in rad) to quaternion.
- static Quaternion EulerToQuaternion(FBXDocParser::Model::RotOrder mode, const Vector3 &p_rotation);
-
- /// Converts basis into rotation order vector (in rad).
- static Vector3 BasisToEuler(FBXDocParser::Model::RotOrder mode, const Basis &p_rotation);
-
- /// Converts quaternion into rotation order vector (in rad).
- static Vector3 QuaternionToEuler(FBXDocParser::Model::RotOrder mode, const Quaternion &p_rotation);
-
- static void debug_xform(String name, const Transform3D &t) {
- print_verbose(name + " " + t.origin + " rotation: " + (t.basis.get_euler() * (180 / Math_PI)));
- }
-
- static String FBXNodeToName(const std::string &name) {
- // strip Model:: prefix, avoiding ambiguities (i.e. don't strip if
- // this causes ambiguities, well possible between empty identifiers,
- // such as "Model::" and ""). Make sure the behaviour is consistent
- // across multiple calls to FixNodeName().
-
- // We must remove this from the name
- // Some bones have this
- // SubDeformer::
- // Meshes, Joints have this, some other IK elements too.
- // Model::
-
- String node_name = String(name.c_str());
-
- if (node_name.substr(0, 7) == "Model::") {
- node_name = node_name.substr(7, node_name.length() - 7);
- return node_name.replace(":", "");
- }
-
- if (node_name.substr(0, 13) == "SubDeformer::") {
- node_name = node_name.substr(13, node_name.length() - 13);
- return node_name.replace(":", "");
- }
-
- if (node_name.substr(0, 11) == "AnimStack::") {
- node_name = node_name.substr(11, node_name.length() - 11);
- return node_name.replace(":", "");
- }
-
- if (node_name.substr(0, 15) == "AnimCurveNode::") {
- node_name = node_name.substr(15, node_name.length() - 15);
- return node_name.replace(":", "");
- }
-
- if (node_name.substr(0, 11) == "AnimCurve::") {
- node_name = node_name.substr(11, node_name.length() - 11);
- return node_name.replace(":", "");
- }
-
- if (node_name.substr(0, 10) == "Geometry::") {
- node_name = node_name.substr(10, node_name.length() - 10);
- return node_name.replace(":", "");
- }
-
- if (node_name.substr(0, 10) == "Material::") {
- node_name = node_name.substr(10, node_name.length() - 10);
- return node_name.replace(":", "");
- }
-
- if (node_name.substr(0, 9) == "Texture::") {
- node_name = node_name.substr(9, node_name.length() - 9);
- return node_name.replace(":", "");
- }
-
- return node_name.replace(":", "");
- }
-
- static std::string FBXAnimMeshName(const std::string &name) {
- if (name.length()) {
- size_t indexOf = name.find_first_of("::");
- if (indexOf != std::string::npos && indexOf < name.size() - 2) {
- return name.substr(indexOf + 2);
- }
- }
- return name.length() ? name : "AnimMesh";
- }
-
- static Vector3 safe_import_vector3(const Vector3 &p_vec) {
- Vector3 vector = p_vec;
- if (Math::is_zero_approx(vector.x)) {
- vector.x = 0;
- }
-
- if (Math::is_zero_approx(vector.y)) {
- vector.y = 0;
- }
-
- if (Math::is_zero_approx(vector.z)) {
- vector.z = 0;
- }
- return vector;
- }
-
- static void debug_xform(String name, const Basis &t) {
- //print_verbose(name + " rotation: " + (t.get_euler() * (180 / Math_PI)));
- }
-
- static Vector3 FixAxisConversions(Vector3 input) {
- return Vector3(input.x, input.y, input.z);
- }
-
- static void AlignMeshAxes(std::vector<Vector3> &vertex_data) {
- for (size_t x = 0; x < vertex_data.size(); x++) {
- vertex_data[x] = FixAxisConversions(vertex_data[x]);
- }
- }
-
- struct AssetImportFbx {
- enum ETimeMode {
- TIME_MODE_DEFAULT = 0,
- TIME_MODE_120 = 1,
- TIME_MODE_100 = 2,
- TIME_MODE_60 = 3,
- TIME_MODE_50 = 4,
- TIME_MODE_48 = 5,
- TIME_MODE_30 = 6,
- TIME_MODE_30_DROP = 7,
- TIME_MODE_NTSC_DROP_FRAME = 8,
- TIME_MODE_NTSC_FULL_FRAME = 9,
- TIME_MODE_PAL = 10,
- TIME_MODE_CINEMA = 11,
- TIME_MODE_1000 = 12,
- TIME_MODE_CINEMA_ND = 13,
- TIME_MODE_CUSTOM = 14,
- TIME_MODE_TIME_MODE_COUNT = 15
- };
- enum UpAxis {
- UP_VECTOR_AXIS_X = 1,
- UP_VECTOR_AXIS_Y = 2,
- UP_VECTOR_AXIS_Z = 3
- };
- enum FrontAxis {
- FRONT_PARITY_EVEN = 1,
- FRONT_PARITY_ODD = 2,
- };
-
- enum CoordAxis {
- COORD_RIGHT = 0,
- COORD_LEFT = 1
- };
- };
-
- /** Get fbx fps for time mode meta data
- */
- static float get_fbx_fps(int32_t time_mode) {
- switch (time_mode) {
- case AssetImportFbx::TIME_MODE_DEFAULT:
- return 24;
- case AssetImportFbx::TIME_MODE_120:
- return 120;
- case AssetImportFbx::TIME_MODE_100:
- return 100;
- case AssetImportFbx::TIME_MODE_60:
- return 60;
- case AssetImportFbx::TIME_MODE_50:
- return 50;
- case AssetImportFbx::TIME_MODE_48:
- return 48;
- case AssetImportFbx::TIME_MODE_30:
- return 30;
- case AssetImportFbx::TIME_MODE_30_DROP:
- return 30;
- case AssetImportFbx::TIME_MODE_NTSC_DROP_FRAME:
- return 29.9700262f;
- case AssetImportFbx::TIME_MODE_NTSC_FULL_FRAME:
- return 29.9700262f;
- case AssetImportFbx::TIME_MODE_PAL:
- return 25;
- case AssetImportFbx::TIME_MODE_CINEMA:
- return 24;
- case AssetImportFbx::TIME_MODE_1000:
- return 1000;
- case AssetImportFbx::TIME_MODE_CINEMA_ND:
- return 23.976f;
- case AssetImportFbx::TIME_MODE_CUSTOM:
- return -1;
- }
- return 0;
- }
-
- static float get_fbx_fps(const FBXDocParser::FileGlobalSettings *FBXSettings) {
- int time_mode = FBXSettings->TimeMode();
-
- // get the animation FPS
- float frames_per_second = get_fbx_fps(time_mode);
-
- // handle animation custom FPS time.
- if (time_mode == ImportUtils::AssetImportFbx::TIME_MODE_CUSTOM) {
- print_verbose("FBX Animation has custom FPS setting");
- frames_per_second = FBXSettings->CustomFrameRate();
-
- // not our problem this is the modeller, we can print as an error so they can fix the source.
- if (frames_per_second == 0) {
- print_error("Custom animation time in file is set to 0 value, animation won't play, please edit your file to correct the FPS value");
- }
- }
- return frames_per_second;
- }
-
- /**
- * Find hardcoded textures from assimp which could be in many different directories
- */
-
- /**
- * set_texture_mapping_mode
- * Helper to check the mapping mode of the texture (repeat, clamp and mirror)
- */
- // static void set_texture_mapping_mode(aiTextureMapMode *map_mode, Ref<ImageTexture> texture) {
- // ERR_FAIL_COND(texture.is_null());
- // ERR_FAIL_COND(map_mode == nullptr);
- // aiTextureMapMode tex_mode = map_mode[0];
-
- // int32_t flags = Texture::FLAGS_DEFAULT;
- // if (tex_mode == aiTextureMapMode_Wrap) {
- // //Default
- // } else if (tex_mode == aiTextureMapMode_Clamp) {
- // flags = flags & ~Texture::FLAG_REPEAT;
- // } else if (tex_mode == aiTextureMapMode_Mirror) {
- // flags = flags | Texture::FLAG_MIRRORED_REPEAT;
- // }
- // texture->set_flags(flags);
- // }
-
- /**
- * Load or load from cache image :)
- * We need to upgrade this in the later version :) should not be hard
- */
- //static Ref<Image> load_image(ImportState &state, const aiScene *p_scene, String p_path){
- // Map<String, Ref<Image> >::Element *match = state.path_to_image_cache.find(p_path);
-
- // // if our cache contains this image then don't bother
- // if (match) {
- // return match->get();
- // }
-
- // Vector<String> split_path = p_path.get_basename().split("*");
- // if (split_path.size() == 2) {
- // size_t texture_idx = split_path[1].to_int();
- // ERR_FAIL_COND_V(texture_idx >= p_scene->mNumTextures, Ref<Image>());
- // aiTexture *tex = p_scene->mTextures[texture_idx];
- // String filename = AssimpUtils::get_raw_string_from_assimp(tex->mFilename);
- // filename = filename.get_file();
- // print_verbose("Open Asset Import: Loading embedded texture " + filename);
- // if (tex->mHeight == 0) {
- // if (tex->CheckFormat("png")) {
- // Ref<Image> img = Image::_png_mem_loader_func((uint8_t *)tex->pcData, tex->mWidth);
- // ERR_FAIL_COND_V(img.is_null(), Ref<Image>());
- // state.path_to_image_cache.insert(p_path, img);
- // return img;
- // } else if (tex->CheckFormat("jpg")) {
- // Ref<Image> img = Image::_jpg_mem_loader_func((uint8_t *)tex->pcData, tex->mWidth);
- // ERR_FAIL_COND_V(img.is_null(), Ref<Image>());
- // state.path_to_image_cache.insert(p_path, img);
- // return img;
- // } else if (tex->CheckFormat("dds")) {
- // ERR_FAIL_COND_V_MSG(true, Ref<Image>(), "Open Asset Import: Embedded dds not implemented");
- // }
- // } else {
- // Ref<Image> img;
- // img.instantiate();
- // PoolByteArray arr;
- // uint32_t size = tex->mWidth * tex->mHeight;
- // arr.resize(size);
- // memcpy(arr.write().ptr(), tex->pcData, size);
- // ERR_FAIL_COND_V(arr.size() % 4 != 0, Ref<Image>());
- // //ARGB8888 to RGBA8888
- // for (int32_t i = 0; i < arr.size() / 4; i++) {
- // arr.write().ptr()[(4 * i) + 3] = arr[(4 * i) + 0];
- // arr.write().ptr()[(4 * i) + 0] = arr[(4 * i) + 1];
- // arr.write().ptr()[(4 * i) + 1] = arr[(4 * i) + 2];
- // arr.write().ptr()[(4 * i) + 2] = arr[(4 * i) + 3];
- // }
- // img->create(tex->mWidth, tex->mHeight, true, Image::FORMAT_RGBA8, arr);
- // ERR_FAIL_COND_V(img.is_null(), Ref<Image>());
- // state.path_to_image_cache.insert(p_path, img);
- // return img;
- // }
- // return Ref<Image>();
- // } else {
- // Ref<Texture> texture = ResourceLoader::load(p_path);
- // ERR_FAIL_COND_V(texture.is_null(), Ref<Image>());
- // Ref<Image> image = texture->get_image();
- // ERR_FAIL_COND_V(image.is_null(), Ref<Image>());
- // state.path_to_image_cache.insert(p_path, image);
- // return image;
- // }
-
- // return Ref<Image>();
- //}
-
- // /* create texture from assimp data, if found in path */
- // static bool CreateAssimpTexture(
- // AssimpImporter::ImportState &state,
- // aiString texture_path,
- // String &filename,
- // String &path,
- // AssimpImageData &image_state) {
- // filename = get_raw_string_from_assimp(texture_path);
- // path = state.path.get_base_dir().plus_file(filename.replace("\\", "/"));
- // bool found = false;
- // find_texture_path(state.path, path, found);
- // if (found) {
- // image_state.raw_image = AssimpUtils::load_image(state, state.assimp_scene, path);
- // if (image_state.raw_image.is_valid()) {
- // image_state.texture.instantiate();
- // image_state.texture->create_from_image(image_state.raw_image);
- // image_state.texture->set_storage(ImageTexture::STORAGE_COMPRESS_LOSSY);
- // return true;
- // }
- // }
-
- // return false;
- // }
- // /** GetAssimpTexture
- // * Designed to retrieve textures for you
- // */
- // static bool GetAssimpTexture(
- // AssimpImporter::ImportState &state,
- // aiMaterial *ai_material,
- // aiTextureType texture_type,
- // String &filename,
- // String &path,
- // AssimpImageData &image_state) {
- // aiString ai_filename = aiString();
- // if (AI_SUCCESS == ai_material->GetTexture(texture_type, 0, &ai_filename, nullptr, nullptr, nullptr, nullptr, image_state.map_mode)) {
- // return CreateAssimpTexture(state, ai_filename, filename, path, image_state);
- // }
-
- // return false;
- // }
-};
-
-// Apply the transforms so the basis will have scale 1.
-Transform3D get_unscaled_transform(const Transform3D &p_initial, real_t p_scale);
-
-/// Uses the Newell's method to compute any polygon normal.
-/// The polygon must be at least size of 3 or bigger.
-Vector3 get_poly_normal(const std::vector<Vector3> &p_vertices);
-
-#endif // IMPORT_UTILS_FBX_IMPORTER_H
diff --git a/modules/fbx/tools/validation_tools.h b/modules/fbx/tools/validation_tools.h
deleted file mode 100644
index 69a2673197..0000000000
--- a/modules/fbx/tools/validation_tools.h
+++ /dev/null
@@ -1,92 +0,0 @@
-/*************************************************************************/
-/* validation_tools.h */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* https://godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2022 Juan Linietsky, Ariel Manzur. */
-/* Copyright (c) 2014-2022 Godot Engine contributors (cf. AUTHORS.md). */
-/* */
-/* Permission is hereby granted, free of charge, to any person obtaining */
-/* a copy of this software and associated documentation files (the */
-/* "Software"), to deal in the Software without restriction, including */
-/* without limitation the rights to use, copy, modify, merge, publish, */
-/* distribute, sublicense, and/or sell copies of the Software, and to */
-/* permit persons to whom the Software is furnished to do so, subject to */
-/* the following conditions: */
-/* */
-/* The above copyright notice and this permission notice shall be */
-/* included in all copies or substantial portions of the Software. */
-/* */
-/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
-/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
-/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
-/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
-/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
-/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
-/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
-/*************************************************************************/
-
-#ifndef FBX_VALIDATION_TOOLS_H
-#define FBX_VALIDATION_TOOLS_H
-
-#ifdef TOOLS_ENABLED
-
-#include "core/io/file_access.h"
-#include "core/string/print_string.h"
-#include "core/templates/local_vector.h"
-#include "core/templates/map.h"
-
-class ValidationTracker {
-protected:
- struct Entries {
- Map<String, LocalVector<String>> validation_entries = Map<String, LocalVector<String>>();
-
- // for printing our CSV to dump validation problems of files
- // later we can make some agnostic tooling for this but this is fine for the time being.
- void add_validation_error(String asset_path, String message);
- void print_to_csv() {
- print_verbose("Exporting assset validation log please wait");
- String massive_log_file;
-
- String csv_header = "file_path, error message, extra data\n";
- massive_log_file += csv_header;
-
- for (const KeyValue<String, LocalVector<String>> &element : validation_entries) {
- for (unsigned int x = 0; x < element.value.size(); x++) {
- const String &line_entry = element.key + ", " + element.value[x].c_escape() + "\n";
- massive_log_file += line_entry;
- }
- }
-
- String path = "asset_validation_errors.csv";
- Error err;
- FileAccess *file = FileAccess::open(path, FileAccess::WRITE, &err);
- if (!file || err) {
- if (file) {
- memdelete(file);
- }
- print_error("ValidationTracker Error - failed to create file - path: %s\n" + path);
- return;
- }
-
- file->store_string(massive_log_file);
- if (file->get_error() != OK && file->get_error() != ERR_FILE_EOF) {
- print_error("ValidationTracker Error - failed to write to file - path: %s\n" + path);
- }
- file->close();
- memdelete(file);
- }
- };
- // asset path, error messages
- static Entries *entries_singleton;
-
-public:
- static Entries *get_singleton() {
- return entries_singleton;
- }
-};
-
-#endif // TOOLS_ENABLED
-#endif // FBX_VALIDATION_TOOLS_H
diff --git a/modules/freetype/SCsub b/modules/freetype/SCsub
index 27d0777c17..d23c4b637c 100644
--- a/modules/freetype/SCsub
+++ b/modules/freetype/SCsub
@@ -57,6 +57,26 @@ if env["builtin_freetype"]:
]
thirdparty_sources = [thirdparty_dir + file for file in thirdparty_sources]
+ thirdparty_brotli_dir = "#thirdparty/brotli/"
+ thirdparty_brotli_sources = [
+ "common/constants.c",
+ "common/context.c",
+ "common/dictionary.c",
+ "common/platform.c",
+ "common/shared_dictionary.c",
+ "common/transform.c",
+ "dec/bit_reader.c",
+ "dec/decode.c",
+ "dec/huffman.c",
+ "dec/state.c",
+ ]
+ thirdparty_sources += [thirdparty_brotli_dir + file for file in thirdparty_brotli_sources]
+ env_freetype.Append(CPPDEFINES=["FT_CONFIG_OPTION_USE_BROTLI"])
+ env_freetype.Prepend(CPPPATH=[thirdparty_brotli_dir + "include"])
+
+ if env.get("use_ubsan") or env.get("use_asan") or env.get("use_tsan") or env.get("use_lsan") or env.get("use_msan"):
+ env_freetype.Append(CPPDEFINES=["BROTLI_BUILD_PORTABLE"])
+
if env["platform"] == "uwp":
# Include header for UWP to fix build issues
env_freetype.Append(CCFLAGS=["/FI", '"modules/freetype/uwpdef.h"'])
diff --git a/modules/gdscript/SCsub b/modules/gdscript/SCsub
index c6121ec7fe..2f507db548 100644
--- a/modules/gdscript/SCsub
+++ b/modules/gdscript/SCsub
@@ -10,6 +10,8 @@ env_gdscript.add_source_files(env.modules_sources, "*.cpp")
if env["tools"]:
env_gdscript.add_source_files(env.modules_sources, "./editor/*.cpp")
+ SConscript("editor/script_templates/SCsub")
+
# Those two modules are required for the language server protocol
if env["module_jsonrpc_enabled"] and env["module_websocket_enabled"]:
env_gdscript.add_source_files(env.modules_sources, "./language_server/*.cpp")
@@ -18,8 +20,7 @@ if env["tools"]:
# in regular builds where all modules are enabled.
env_gdscript.Append(CPPDEFINES=["GDSCRIPT_NO_LSP"])
+
if env["tests"]:
env_gdscript.Append(CPPDEFINES=["TESTS_ENABLED"])
env_gdscript.add_source_files(env.modules_sources, "./tests/*.cpp")
-
-SConscript("editor_templates/SCsub")
diff --git a/modules/gdscript/editor_templates/CharacterBody2D/basic_movement.gd b/modules/gdscript/editor/script_templates/CharacterBody2D/basic_movement.gd
index 34b5ba45b7..a379d915a9 100644
--- a/modules/gdscript/editor_templates/CharacterBody2D/basic_movement.gd
+++ b/modules/gdscript/editor/script_templates/CharacterBody2D/basic_movement.gd
@@ -2,8 +2,9 @@
extends _BASE_
-const SPEED: float = 300.0
-const JUMP_VELOCITY: float = -400.0
+
+const SPEED = 300.0
+const JUMP_VELOCITY = -400.0
# Get the gravity from the project settings to be synced with RigidDynamicBody nodes.
var gravity: int = ProjectSettings.get_setting("physics/2d/default_gravity")
diff --git a/modules/gdscript/editor_templates/CharacterBody3D/basic_movement.gd b/modules/gdscript/editor/script_templates/CharacterBody3D/basic_movement.gd
index cbc9cf1064..360b199e56 100644
--- a/modules/gdscript/editor_templates/CharacterBody3D/basic_movement.gd
+++ b/modules/gdscript/editor/script_templates/CharacterBody3D/basic_movement.gd
@@ -2,8 +2,9 @@
extends _BASE_
-const SPEED: float = 5.0
-const JUMP_VELOCITY: float = 4.5
+
+const SPEED = 5.0
+const JUMP_VELOCITY = 4.5
# Get the gravity from the project settings to be synced with RigidDynamicBody nodes.
var gravity: float = ProjectSettings.get_setting("physics/3d/default_gravity")
diff --git a/modules/gdscript/editor_templates/EditorPlugin/plugin.gd b/modules/gdscript/editor/script_templates/EditorPlugin/plugin.gd
index 8614bb8b17..b27b3e5655 100644
--- a/modules/gdscript/editor_templates/EditorPlugin/plugin.gd
+++ b/modules/gdscript/editor/script_templates/EditorPlugin/plugin.gd
@@ -2,10 +2,12 @@
@tool
extends EditorPlugin
+
func _enter_tree() -> void:
- # Initialization of the plugin goes here.
- pass
+ # Initialization of the plugin goes here.
+ pass
+
func _exit_tree() -> void:
- # Clean-up of the plugin goes here.
- pass
+ # Clean-up of the plugin goes here.
+ pass
diff --git a/modules/gdscript/editor_templates/EditorScript/basic_editor_script.gd b/modules/gdscript/editor/script_templates/EditorScript/basic_editor_script.gd
index fdb174c7ed..fdb8550d43 100644
--- a/modules/gdscript/editor_templates/EditorScript/basic_editor_script.gd
+++ b/modules/gdscript/editor/script_templates/EditorScript/basic_editor_script.gd
@@ -2,6 +2,7 @@
@tool
extends EditorScript
+
+# Called when the script is executed (using File -> Run in Script Editor).
func _run() -> void:
- # Called when the script is executed (using File -> Run in Script Editor).
- pass
+ pass
diff --git a/modules/gdscript/editor_templates/Node/default.gd b/modules/gdscript/editor/script_templates/Node/default.gd
index ee5c0b99cc..cb96a21537 100644
--- a/modules/gdscript/editor_templates/Node/default.gd
+++ b/modules/gdscript/editor/script_templates/Node/default.gd
@@ -2,10 +2,12 @@
extends _BASE_
+
# Called when the node enters the scene tree for the first time.
func _ready() -> void:
pass # Replace with function body.
+
# Called every frame. 'delta' is the elapsed time since the previous frame.
func _process(delta: float) -> void:
pass
diff --git a/modules/gdscript/editor_templates/Object/empty.gd b/modules/gdscript/editor/script_templates/Object/empty.gd
index 387786b0a4..387786b0a4 100644
--- a/modules/gdscript/editor_templates/Object/empty.gd
+++ b/modules/gdscript/editor/script_templates/Object/empty.gd
diff --git a/modules/gdscript/editor_templates/SCsub b/modules/gdscript/editor/script_templates/SCsub
index 2266ef2d01..2266ef2d01 100644
--- a/modules/gdscript/editor_templates/SCsub
+++ b/modules/gdscript/editor/script_templates/SCsub
diff --git a/modules/gdscript/editor_templates/VisualShaderNodeCustom/basic.gd b/modules/gdscript/editor/script_templates/VisualShaderNodeCustom/basic.gd
index cf6d68333d..283a95d3b4 100644
--- a/modules/gdscript/editor_templates/VisualShaderNodeCustom/basic.gd
+++ b/modules/gdscript/editor/script_templates/VisualShaderNodeCustom/basic.gd
@@ -1,38 +1,50 @@
# meta-description: Visual shader's node plugin template
@tool
-extends _BASE_
class_name VisualShaderNode_CLASS_
+extends _BASE_
+
func _get_name() -> String:
return "_CLASS_"
+
func _get_category() -> String:
return ""
+
func _get_description() -> String:
return ""
+
func _get_return_icon_type() -> int:
return PORT_TYPE_SCALAR
+
func _get_input_port_count() -> int:
return 0
+
func _get_input_port_name(port: int) -> String:
return ""
+
func _get_input_port_type(port: int) -> int:
return PORT_TYPE_SCALAR
+
func _get_output_port_count() -> int:
return 1
+
func _get_output_port_name(port: int) -> String:
return "result"
+
func _get_output_port_type(port: int) -> int:
return PORT_TYPE_SCALAR
-func _get_code(input_vars: Array[String], output_vars: Array[String], mode: int, type: int) -> String:
+
+func _get_code(input_vars: Array[String], output_vars: Array[String],
+ mode: int, type: int) -> String:
return output_vars[0] + " = 0.0;"
diff --git a/modules/gdscript/gdscript.cpp b/modules/gdscript/gdscript.cpp
index c12c1a43a3..3a0e320e9b 100644
--- a/modules/gdscript/gdscript.cpp
+++ b/modules/gdscript/gdscript.cpp
@@ -824,11 +824,7 @@ Error GDScript::reload(bool p_keep_state) {
// Loading a template, don't parse.
#ifdef TOOLS_ENABLED
- if (basedir.begins_with(EditorSettings::get_singleton()->get_project_script_templates_dir())) {
- return OK;
- }
-#else
- if (source.contains("_BASE_")) {
+ if (EditorSettings::get_singleton() && basedir.begins_with(EditorSettings::get_singleton()->get_project_script_templates_dir())) {
return OK;
}
#endif
diff --git a/modules/gdscript/gdscript.h b/modules/gdscript/gdscript.h
index 30e60e2b91..f7fa967883 100644
--- a/modules/gdscript/gdscript.h
+++ b/modules/gdscript/gdscript.h
@@ -212,7 +212,7 @@ public:
virtual void update_exports() override;
#ifdef TOOLS_ENABLED
- virtual const Vector<DocData::ClassDoc> &get_documentation() const override {
+ virtual Vector<DocData::ClassDoc> get_documentation() const override {
return docs;
}
#endif // TOOLS_ENABLED
@@ -455,7 +455,7 @@ public:
virtual bool can_inherit_from_file() const override { return true; }
virtual int find_function(const String &p_function, const String &p_code) const override;
virtual String make_function(const String &p_class, const String &p_name, const PackedStringArray &p_args) const override;
- virtual Error complete_code(const String &p_code, const String &p_path, Object *p_owner, List<ScriptCodeCompletionOption> *r_options, bool &r_forced, String &r_call_hint) override;
+ virtual Error complete_code(const String &p_code, const String &p_path, Object *p_owner, List<ScriptLanguage::CodeCompletionOption> *r_options, bool &r_forced, String &r_call_hint) override;
#ifdef TOOLS_ENABLED
virtual Error lookup_code(const String &p_code, const String &p_symbol, const String &p_path, Object *p_owner, LookupResult &r_result) override;
#endif
diff --git a/modules/gdscript/gdscript_analyzer.cpp b/modules/gdscript/gdscript_analyzer.cpp
index 326720ce86..00931961b7 100644
--- a/modules/gdscript/gdscript_analyzer.cpp
+++ b/modules/gdscript/gdscript_analyzer.cpp
@@ -277,6 +277,7 @@ Error GDScriptAnalyzer::resolve_inheritance(GDScriptParser::ClassNode *p_class,
base = parser->get_parser()->head->get_datatype();
} else {
if (p_class->extends.is_empty()) {
+ push_error("Could not resolve an empty super class path.", p_class);
return ERR_PARSE_ERROR;
}
const StringName &name = p_class->extends[extends_index++];
@@ -646,7 +647,7 @@ void GDScriptAnalyzer::resolve_class_interface(GDScriptParser::ClassNode *p_clas
}
}
- // Check if initalizer is an unset identifier (ie: a variable within scope, but declared below)
+ // Check if initializer is an unset identifier (ie: a variable within scope, but declared below)
if (member.variable->initializer && !member.variable->initializer->get_datatype().is_set()) {
if (member.variable->initializer->type == GDScriptParser::Node::IDENTIFIER) {
GDScriptParser::IdentifierNode *initializer_identifier = static_cast<GDScriptParser::IdentifierNode *>(member.variable->initializer);
@@ -1124,6 +1125,10 @@ void GDScriptAnalyzer::resolve_function_signature(GDScriptParser::FunctionNode *
GDScriptParser::FunctionNode *previous_function = parser->current_function;
parser->current_function = p_function;
+#ifdef TOOLS_ENABLED
+ int default_value_count = 0;
+#endif // TOOLS_ENABLED
+
for (int i = 0; i < p_function->parameters.size(); i++) {
resolve_parameter(p_function->parameters[i]);
#ifdef DEBUG_ENABLED
@@ -1133,8 +1138,12 @@ void GDScriptAnalyzer::resolve_function_signature(GDScriptParser::FunctionNode *
is_shadowing(p_function->parameters[i]->identifier, "function parameter");
#endif // DEBUG_ENABLED
#ifdef TOOLS_ENABLED
- if (p_function->parameters[i]->default_value && p_function->parameters[i]->default_value->is_constant) {
- p_function->default_arg_values.push_back(p_function->parameters[i]->default_value->reduced_value);
+ if (p_function->parameters[i]->default_value) {
+ default_value_count++;
+
+ if (p_function->parameters[i]->default_value->is_constant) {
+ p_function->default_arg_values.push_back(p_function->parameters[i]->default_value->reduced_value);
+ }
}
#endif // TOOLS_ENABLED
}
@@ -1169,7 +1178,7 @@ void GDScriptAnalyzer::resolve_function_signature(GDScriptParser::FunctionNode *
int par_count_diff = p_function->parameters.size() - parameters_types.size();
valid = valid && par_count_diff >= 0;
- valid = valid && p_function->default_arg_values.size() >= default_par_count + par_count_diff;
+ valid = valid && default_value_count >= default_par_count + par_count_diff;
int i = 0;
for (const GDScriptParser::DataType &par_type : parameters_types) {
@@ -1203,7 +1212,7 @@ void GDScriptAnalyzer::resolve_function_signature(GDScriptParser::FunctionNode *
push_error(vformat(R"(The function signature doesn't match the parent. Parent signature is "%s".)", parent_signature), p_function);
}
}
-#endif
+#endif // TOOLS_ENABLED
}
parser->current_function = previous_function;
@@ -2294,7 +2303,7 @@ void GDScriptAnalyzer::reduce_call(GDScriptParser::CallNode *p_call, bool p_is_a
break;
#ifdef DEBUG_ENABLED
} else {
- if (par_type.builtin_type == Variant::INT && p_call->arguments[i]->get_datatype().builtin_type == Variant::FLOAT) {
+ if (par_type.builtin_type == Variant::INT && p_call->arguments[i]->get_datatype().builtin_type == Variant::FLOAT && builtin_type != Variant::INT) {
parser->push_warning(p_call, GDScriptWarning::NARROWING_CONVERSION, p_call->function_name);
}
#endif
@@ -2417,6 +2426,10 @@ void GDScriptAnalyzer::reduce_call(GDScriptParser::CallNode *p_call, bool p_is_a
base_type = parser->current_class->base_type;
base_type.is_meta_type = false;
is_self = true;
+
+ if (p_call->callee == nullptr && !lambda_stack.is_empty()) {
+ push_error("Cannot use `super()` inside a lambda.", p_call);
+ }
} else if (callee_type == GDScriptParser::Node::IDENTIFIER) {
base_type = parser->current_class->get_datatype();
base_type.is_meta_type = false;
@@ -2485,12 +2498,12 @@ void GDScriptAnalyzer::reduce_call(GDScriptParser::CallNode *p_call, bool p_is_a
}
if (is_self && parser->current_function != nullptr && parser->current_function->is_static && !is_static) {
- push_error(vformat(R"*(Cannot call non-static function "%s()" from static function "%s()".)*", p_call->function_name, parser->current_function->identifier->name), p_call->callee);
+ push_error(vformat(R"*(Cannot call non-static function "%s()" from static function "%s()".)*", p_call->function_name, parser->current_function->identifier->name), p_call);
} else if (!is_self && base_type.is_meta_type && !is_static) {
base_type.is_meta_type = false; // For `to_string()`.
- push_error(vformat(R"*(Cannot call non-static function "%s()" on the class "%s" directly. Make an instance instead.)*", p_call->function_name, base_type.to_string()), p_call->callee);
+ push_error(vformat(R"*(Cannot call non-static function "%s()" on the class "%s" directly. Make an instance instead.)*", p_call->function_name, base_type.to_string()), p_call);
} else if (is_self && !is_static && !lambda_stack.is_empty()) {
- push_error(vformat(R"*(Cannot call non-static function "%s()" from a lambda function.)*", p_call->function_name), p_call->callee);
+ push_error(vformat(R"*(Cannot call non-static function "%s()" from a lambda function.)*", p_call->function_name), p_call);
}
call_type = return_type;
@@ -2530,7 +2543,7 @@ void GDScriptAnalyzer::reduce_call(GDScriptParser::CallNode *p_call, bool p_is_a
}
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);
+ push_error(vformat(R"*(Function "%s()" is a coroutine, so it must be called with "await".)*", p_call->function_name), p_call);
}
p_call->set_datatype(call_type);
diff --git a/modules/gdscript/gdscript_editor.cpp b/modules/gdscript/gdscript_editor.cpp
index 350962ba1b..5ed4054c57 100644
--- a/modules/gdscript/gdscript_editor.cpp
+++ b/modules/gdscript/gdscript_editor.cpp
@@ -33,7 +33,6 @@
#include "core/config/engine.h"
#include "core/core_constants.h"
#include "core/io/file_access.h"
-#include "editor_templates/templates.gen.h"
#include "gdscript_analyzer.h"
#include "gdscript_compiler.h"
#include "gdscript_parser.h"
@@ -44,6 +43,7 @@
#include "core/config/project_settings.h"
#include "editor/editor_file_system.h"
#include "editor/editor_settings.h"
+#include "editor/script_templates/templates.gen.h"
#endif
void GDScriptLanguage::get_comment_delimiters(List<String> *p_delimiters) const {
@@ -64,20 +64,20 @@ Ref<Script> GDScriptLanguage::make_template(const String &p_template, const Stri
Ref<GDScript> script;
script.instantiate();
String processed_template = p_template;
+ bool type_hints = false;
#ifdef TOOLS_ENABLED
- if (!EDITOR_GET("text_editor/completion/add_type_hints")) {
+ type_hints = EDITOR_GET("text_editor/completion/add_type_hints");
+#endif
+ if (!type_hints) {
processed_template = processed_template.replace(": int", "")
.replace(": String", "")
+ .replace(": Array[String]", "")
.replace(": float", "")
.replace(":=", "=")
+ .replace(" -> String", "")
+ .replace(" -> int", "")
.replace(" -> void", "");
}
-#else
- processed_template = processed_template.replace(": int", "")
- .replace(": String", "")
- .replace(": float", "")
- .replace(" -> void", "");
-#endif
processed_template = processed_template.replace("_BASE_", p_base_class_name)
.replace("_CLASS_", p_class_name)
@@ -88,11 +88,13 @@ Ref<Script> GDScriptLanguage::make_template(const String &p_template, const Stri
Vector<ScriptLanguage::ScriptTemplate> GDScriptLanguage::get_built_in_templates(StringName p_object) {
Vector<ScriptLanguage::ScriptTemplate> templates;
+#ifdef TOOLS_ENABLED
for (int i = 0; i < TEMPLATES_ARRAY_SIZE; i++) {
if (TEMPLATES[i].inherit == p_object) {
templates.append(TEMPLATES[i]);
}
}
+#endif
return templates;
}
@@ -637,11 +639,11 @@ static String _make_arguments_hint(const GDScriptParser::FunctionNode *p_functio
return arghint;
}
-static void _get_directory_contents(EditorFileSystemDirectory *p_dir, Map<String, ScriptCodeCompletionOption> &r_list) {
+static void _get_directory_contents(EditorFileSystemDirectory *p_dir, Map<String, ScriptLanguage::CodeCompletionOption> &r_list) {
const String quote_style = EDITOR_GET("text_editor/completion/use_single_quotes") ? "'" : "\"";
for (int i = 0; i < p_dir->get_file_count(); i++) {
- ScriptCodeCompletionOption option(p_dir->get_file_path(i), ScriptCodeCompletionOption::KIND_FILE_PATH);
+ ScriptLanguage::CodeCompletionOption option(p_dir->get_file_path(i), ScriptLanguage::CODE_COMPLETION_KIND_FILE_PATH);
option.insert_text = option.display.quote(quote_style);
r_list.insert(option.display, option);
}
@@ -651,29 +653,29 @@ static void _get_directory_contents(EditorFileSystemDirectory *p_dir, Map<String
}
}
-static void _find_annotation_arguments(const GDScriptParser::AnnotationNode *p_annotation, int p_argument, const String p_quote_style, Map<String, ScriptCodeCompletionOption> &r_result) {
+static void _find_annotation_arguments(const GDScriptParser::AnnotationNode *p_annotation, int p_argument, const String p_quote_style, Map<String, ScriptLanguage::CodeCompletionOption> &r_result) {
if (p_annotation->name == SNAME("@export_range")) {
if (p_argument == 3 || p_argument == 4) {
// Slider hint.
- ScriptCodeCompletionOption slider1("or_greater", ScriptCodeCompletionOption::KIND_PLAIN_TEXT);
+ ScriptLanguage::CodeCompletionOption slider1("or_greater", ScriptLanguage::CODE_COMPLETION_KIND_PLAIN_TEXT);
slider1.insert_text = slider1.display.quote(p_quote_style);
r_result.insert(slider1.display, slider1);
- ScriptCodeCompletionOption slider2("or_lesser", ScriptCodeCompletionOption::KIND_PLAIN_TEXT);
+ ScriptLanguage::CodeCompletionOption slider2("or_lesser", ScriptLanguage::CODE_COMPLETION_KIND_PLAIN_TEXT);
slider2.insert_text = slider2.display.quote(p_quote_style);
r_result.insert(slider2.display, slider2);
}
} else if (p_annotation->name == SNAME("@export_exp_easing")) {
if (p_argument == 0 || p_argument == 1) {
// Easing hint.
- ScriptCodeCompletionOption hint1("attenuation", ScriptCodeCompletionOption::KIND_PLAIN_TEXT);
+ ScriptLanguage::CodeCompletionOption hint1("attenuation", ScriptLanguage::CODE_COMPLETION_KIND_PLAIN_TEXT);
hint1.insert_text = hint1.display.quote(p_quote_style);
r_result.insert(hint1.display, hint1);
- ScriptCodeCompletionOption hint2("inout", ScriptCodeCompletionOption::KIND_PLAIN_TEXT);
+ ScriptLanguage::CodeCompletionOption hint2("inout", ScriptLanguage::CODE_COMPLETION_KIND_PLAIN_TEXT);
hint2.insert_text = hint2.display.quote(p_quote_style);
r_result.insert(hint2.display, hint2);
}
} else if (p_annotation->name == SNAME("@export_node_path")) {
- ScriptCodeCompletionOption node("Node", ScriptCodeCompletionOption::KIND_CLASS);
+ ScriptLanguage::CodeCompletionOption node("Node", ScriptLanguage::CODE_COMPLETION_KIND_CLASS);
r_result.insert(node.display, node);
List<StringName> node_types;
ClassDB::get_inheriters_from_class("Node", &node_types);
@@ -681,23 +683,23 @@ static void _find_annotation_arguments(const GDScriptParser::AnnotationNode *p_a
if (!ClassDB::is_class_exposed(E)) {
continue;
}
- ScriptCodeCompletionOption option(E, ScriptCodeCompletionOption::KIND_CLASS);
+ ScriptLanguage::CodeCompletionOption option(E, ScriptLanguage::CODE_COMPLETION_KIND_CLASS);
r_result.insert(option.display, option);
}
} else if (p_annotation->name == SNAME("@warning_ignore")) {
for (int warning_code = 0; warning_code < GDScriptWarning::WARNING_MAX; warning_code++) {
- ScriptCodeCompletionOption warning(GDScriptWarning::get_name_from_code((GDScriptWarning::Code)warning_code).to_lower(), ScriptCodeCompletionOption::KIND_PLAIN_TEXT);
+ ScriptLanguage::CodeCompletionOption warning(GDScriptWarning::get_name_from_code((GDScriptWarning::Code)warning_code).to_lower(), ScriptLanguage::CODE_COMPLETION_KIND_PLAIN_TEXT);
r_result.insert(warning.display, warning);
}
}
}
-static void _list_available_types(bool p_inherit_only, GDScriptParser::CompletionContext &p_context, Map<String, ScriptCodeCompletionOption> &r_result) {
+static void _list_available_types(bool p_inherit_only, GDScriptParser::CompletionContext &p_context, Map<String, ScriptLanguage::CodeCompletionOption> &r_result) {
List<StringName> native_types;
ClassDB::get_class_list(&native_types);
for (const StringName &E : native_types) {
if (ClassDB::is_class_exposed(E) && !Engine::get_singleton()->has_singleton(E)) {
- ScriptCodeCompletionOption option(E, ScriptCodeCompletionOption::KIND_CLASS);
+ ScriptLanguage::CodeCompletionOption option(E, ScriptLanguage::CODE_COMPLETION_KIND_CLASS);
r_result.insert(option.display, option);
}
}
@@ -708,7 +710,7 @@ static void _list_available_types(bool p_inherit_only, GDScriptParser::Completio
List<StringName> enums;
ClassDB::get_enum_list(p_context.current_class->base_type.native_type, &enums);
for (const StringName &E : enums) {
- ScriptCodeCompletionOption option(E, ScriptCodeCompletionOption::KIND_ENUM);
+ ScriptLanguage::CodeCompletionOption option(E, ScriptLanguage::CODE_COMPLETION_KIND_ENUM);
r_result.insert(option.display, option);
}
}
@@ -719,18 +721,18 @@ static void _list_available_types(bool p_inherit_only, GDScriptParser::Completio
const GDScriptParser::ClassNode::Member &member = current->members[i];
switch (member.type) {
case GDScriptParser::ClassNode::Member::CLASS: {
- ScriptCodeCompletionOption option(member.m_class->identifier->name, ScriptCodeCompletionOption::KIND_CLASS);
+ ScriptLanguage::CodeCompletionOption option(member.m_class->identifier->name, ScriptLanguage::CODE_COMPLETION_KIND_CLASS);
r_result.insert(option.display, option);
} break;
case GDScriptParser::ClassNode::Member::ENUM: {
if (!p_inherit_only) {
- ScriptCodeCompletionOption option(member.m_enum->identifier->name, ScriptCodeCompletionOption::KIND_ENUM);
+ ScriptLanguage::CodeCompletionOption option(member.m_enum->identifier->name, ScriptLanguage::CODE_COMPLETION_KIND_ENUM);
r_result.insert(option.display, option);
}
} break;
case GDScriptParser::ClassNode::Member::CONSTANT: {
if (member.constant->get_datatype().is_meta_type && p_context.current_class->outer != nullptr) {
- ScriptCodeCompletionOption option(member.constant->identifier->name, ScriptCodeCompletionOption::KIND_CLASS);
+ ScriptLanguage::CodeCompletionOption option(member.constant->identifier->name, ScriptLanguage::CODE_COMPLETION_KIND_CLASS);
r_result.insert(option.display, option);
}
} break;
@@ -746,7 +748,7 @@ static void _list_available_types(bool p_inherit_only, GDScriptParser::Completio
List<StringName> global_classes;
ScriptServer::get_global_class_list(&global_classes);
for (const StringName &E : global_classes) {
- ScriptCodeCompletionOption option(E, ScriptCodeCompletionOption::KIND_CLASS);
+ ScriptLanguage::CodeCompletionOption option(E, ScriptLanguage::CODE_COMPLETION_KIND_CLASS);
r_result.insert(option.display, option);
}
@@ -757,19 +759,19 @@ static void _list_available_types(bool p_inherit_only, GDScriptParser::Completio
if (!info.is_singleton || info.path.get_extension().to_lower() != "gd") {
continue;
}
- ScriptCodeCompletionOption option(info.name, ScriptCodeCompletionOption::KIND_CLASS);
+ ScriptLanguage::CodeCompletionOption option(info.name, ScriptLanguage::CODE_COMPLETION_KIND_CLASS);
r_result.insert(option.display, option);
}
}
-static void _find_identifiers_in_suite(const GDScriptParser::SuiteNode *p_suite, Map<String, ScriptCodeCompletionOption> &r_result) {
+static void _find_identifiers_in_suite(const GDScriptParser::SuiteNode *p_suite, Map<String, ScriptLanguage::CodeCompletionOption> &r_result) {
for (int i = 0; i < p_suite->locals.size(); i++) {
- ScriptCodeCompletionOption option;
+ ScriptLanguage::CodeCompletionOption option;
if (p_suite->locals[i].type == GDScriptParser::SuiteNode::Local::CONSTANT) {
- option = ScriptCodeCompletionOption(p_suite->locals[i].name, ScriptCodeCompletionOption::KIND_CONSTANT);
+ option = ScriptLanguage::CodeCompletionOption(p_suite->locals[i].name, ScriptLanguage::CODE_COMPLETION_KIND_CONSTANT);
option.default_value = p_suite->locals[i].constant->initializer->reduced_value;
} else {
- option = ScriptCodeCompletionOption(p_suite->locals[i].name, ScriptCodeCompletionOption::KIND_VARIABLE);
+ option = ScriptLanguage::CodeCompletionOption(p_suite->locals[i].name, ScriptLanguage::CODE_COMPLETION_KIND_VARIABLE);
}
r_result.insert(option.display, option);
}
@@ -778,9 +780,9 @@ static void _find_identifiers_in_suite(const GDScriptParser::SuiteNode *p_suite,
}
}
-static void _find_identifiers_in_base(const GDScriptCompletionIdentifier &p_base, bool p_only_functions, Map<String, ScriptCodeCompletionOption> &r_result, int p_recursion_depth);
+static void _find_identifiers_in_base(const GDScriptCompletionIdentifier &p_base, bool p_only_functions, Map<String, ScriptLanguage::CodeCompletionOption> &r_result, int p_recursion_depth);
-static void _find_identifiers_in_class(const GDScriptParser::ClassNode *p_class, bool p_only_functions, bool p_static, bool p_parent_only, Map<String, ScriptCodeCompletionOption> &r_result, int p_recursion_depth) {
+static void _find_identifiers_in_class(const GDScriptParser::ClassNode *p_class, bool p_only_functions, bool p_static, bool p_parent_only, Map<String, ScriptLanguage::CodeCompletionOption> &r_result, int p_recursion_depth) {
ERR_FAIL_COND(p_recursion_depth > COMPLETION_RECURSION_LIMIT);
if (!p_parent_only) {
@@ -789,13 +791,13 @@ static void _find_identifiers_in_class(const GDScriptParser::ClassNode *p_class,
while (clss) {
for (int i = 0; i < clss->members.size(); i++) {
const GDScriptParser::ClassNode::Member &member = clss->members[i];
- ScriptCodeCompletionOption option;
+ ScriptLanguage::CodeCompletionOption option;
switch (member.type) {
case GDScriptParser::ClassNode::Member::VARIABLE:
if (p_only_functions || outer || (p_static)) {
continue;
}
- option = ScriptCodeCompletionOption(member.variable->identifier->name, ScriptCodeCompletionOption::KIND_MEMBER);
+ option = ScriptLanguage::CodeCompletionOption(member.variable->identifier->name, ScriptLanguage::CODE_COMPLETION_KIND_MEMBER);
break;
case GDScriptParser::ClassNode::Member::CONSTANT:
if (p_only_functions) {
@@ -804,7 +806,7 @@ static void _find_identifiers_in_class(const GDScriptParser::ClassNode *p_class,
if (r_result.has(member.constant->identifier->name)) {
continue;
}
- option = ScriptCodeCompletionOption(member.constant->identifier->name, ScriptCodeCompletionOption::KIND_CONSTANT);
+ option = ScriptLanguage::CodeCompletionOption(member.constant->identifier->name, ScriptLanguage::CODE_COMPLETION_KIND_CONSTANT);
if (member.constant->initializer) {
option.default_value = member.constant->initializer->reduced_value;
}
@@ -813,25 +815,25 @@ static void _find_identifiers_in_class(const GDScriptParser::ClassNode *p_class,
if (p_only_functions) {
continue;
}
- option = ScriptCodeCompletionOption(member.m_class->identifier->name, ScriptCodeCompletionOption::KIND_CLASS);
+ option = ScriptLanguage::CodeCompletionOption(member.m_class->identifier->name, ScriptLanguage::CODE_COMPLETION_KIND_CLASS);
break;
case GDScriptParser::ClassNode::Member::ENUM_VALUE:
if (p_only_functions) {
continue;
}
- option = ScriptCodeCompletionOption(member.enum_value.identifier->name, ScriptCodeCompletionOption::KIND_CONSTANT);
+ option = ScriptLanguage::CodeCompletionOption(member.enum_value.identifier->name, ScriptLanguage::CODE_COMPLETION_KIND_CONSTANT);
break;
case GDScriptParser::ClassNode::Member::ENUM:
if (p_only_functions) {
continue;
}
- option = ScriptCodeCompletionOption(member.m_enum->identifier->name, ScriptCodeCompletionOption::KIND_ENUM);
+ option = ScriptLanguage::CodeCompletionOption(member.m_enum->identifier->name, ScriptLanguage::CODE_COMPLETION_KIND_ENUM);
break;
case GDScriptParser::ClassNode::Member::FUNCTION:
if (outer || (p_static && !member.function->is_static) || member.function->identifier->name.operator String().begins_with("@")) {
continue;
}
- option = ScriptCodeCompletionOption(member.function->identifier->name, ScriptCodeCompletionOption::KIND_FUNCTION);
+ option = ScriptLanguage::CodeCompletionOption(member.function->identifier->name, ScriptLanguage::CODE_COMPLETION_KIND_FUNCTION);
if (member.function->parameters.size() > 0) {
option.insert_text += "(";
} else {
@@ -842,7 +844,7 @@ static void _find_identifiers_in_class(const GDScriptParser::ClassNode *p_class,
if (p_only_functions || outer) {
continue;
}
- option = ScriptCodeCompletionOption(member.signal->identifier->name, ScriptCodeCompletionOption::KIND_SIGNAL);
+ option = ScriptLanguage::CodeCompletionOption(member.signal->identifier->name, ScriptLanguage::CODE_COMPLETION_KIND_SIGNAL);
break;
case GDScriptParser::ClassNode::Member::UNDEFINED:
break;
@@ -862,14 +864,14 @@ static void _find_identifiers_in_class(const GDScriptParser::ClassNode *p_class,
_find_identifiers_in_base(base_type, p_only_functions, r_result, p_recursion_depth + 1);
}
-static void _find_identifiers_in_base(const GDScriptCompletionIdentifier &p_base, bool p_only_functions, Map<String, ScriptCodeCompletionOption> &r_result, int p_recursion_depth) {
+static void _find_identifiers_in_base(const GDScriptCompletionIdentifier &p_base, bool p_only_functions, Map<String, ScriptLanguage::CodeCompletionOption> &r_result, int p_recursion_depth) {
ERR_FAIL_COND(p_recursion_depth > COMPLETION_RECURSION_LIMIT);
GDScriptParser::DataType base_type = p_base.type;
bool _static = base_type.is_meta_type;
if (_static && base_type.kind != GDScriptParser::DataType::BUILTIN) {
- ScriptCodeCompletionOption option("new", ScriptCodeCompletionOption::KIND_FUNCTION);
+ ScriptLanguage::CodeCompletionOption option("new", ScriptLanguage::CODE_COMPLETION_KIND_FUNCTION);
option.insert_text += "(";
r_result.insert(option.display, option);
}
@@ -889,21 +891,21 @@ static void _find_identifiers_in_base(const GDScriptCompletionIdentifier &p_base
List<PropertyInfo> members;
scr->get_script_property_list(&members);
for (const PropertyInfo &E : members) {
- ScriptCodeCompletionOption option(E.name, ScriptCodeCompletionOption::KIND_MEMBER);
+ ScriptLanguage::CodeCompletionOption option(E.name, ScriptLanguage::CODE_COMPLETION_KIND_MEMBER);
r_result.insert(option.display, option);
}
}
Map<StringName, Variant> constants;
scr->get_constants(&constants);
for (const KeyValue<StringName, Variant> &E : constants) {
- ScriptCodeCompletionOption option(E.key.operator String(), ScriptCodeCompletionOption::KIND_CONSTANT);
+ ScriptLanguage::CodeCompletionOption option(E.key.operator String(), ScriptLanguage::CODE_COMPLETION_KIND_CONSTANT);
r_result.insert(option.display, option);
}
List<MethodInfo> signals;
scr->get_script_signal_list(&signals);
for (const MethodInfo &E : signals) {
- ScriptCodeCompletionOption option(E.name, ScriptCodeCompletionOption::KIND_SIGNAL);
+ ScriptLanguage::CodeCompletionOption option(E.name, ScriptLanguage::CODE_COMPLETION_KIND_SIGNAL);
r_result.insert(option.display, option);
}
}
@@ -914,7 +916,7 @@ static void _find_identifiers_in_base(const GDScriptCompletionIdentifier &p_base
if (E.name.begins_with("@")) {
continue;
}
- ScriptCodeCompletionOption option(E.name, ScriptCodeCompletionOption::KIND_FUNCTION);
+ ScriptLanguage::CodeCompletionOption option(E.name, ScriptLanguage::CODE_COMPLETION_KIND_FUNCTION);
if (E.arguments.size()) {
option.insert_text += "(";
} else {
@@ -944,7 +946,7 @@ static void _find_identifiers_in_base(const GDScriptCompletionIdentifier &p_base
List<String> constants;
ClassDB::get_integer_constant_list(type, &constants);
for (const String &E : constants) {
- ScriptCodeCompletionOption option(E, ScriptCodeCompletionOption::KIND_CONSTANT);
+ ScriptLanguage::CodeCompletionOption option(E, ScriptLanguage::CODE_COMPLETION_KIND_CONSTANT);
r_result.insert(option.display, option);
}
@@ -958,7 +960,7 @@ static void _find_identifiers_in_base(const GDScriptCompletionIdentifier &p_base
if (E.name.contains("/")) {
continue;
}
- ScriptCodeCompletionOption option(E.name, ScriptCodeCompletionOption::KIND_MEMBER);
+ ScriptLanguage::CodeCompletionOption option(E.name, ScriptLanguage::CODE_COMPLETION_KIND_MEMBER);
r_result.insert(option.display, option);
}
}
@@ -971,7 +973,7 @@ static void _find_identifiers_in_base(const GDScriptCompletionIdentifier &p_base
if (E.name.begins_with("_")) {
continue;
}
- ScriptCodeCompletionOption option(E.name, ScriptCodeCompletionOption::KIND_FUNCTION);
+ ScriptLanguage::CodeCompletionOption option(E.name, ScriptLanguage::CODE_COMPLETION_KIND_FUNCTION);
if (E.arguments.size()) {
option.insert_text += "(";
} else {
@@ -1001,7 +1003,7 @@ static void _find_identifiers_in_base(const GDScriptCompletionIdentifier &p_base
for (const PropertyInfo &E : members) {
if (!String(E.name).contains("/")) {
- ScriptCodeCompletionOption option(E.name, ScriptCodeCompletionOption::KIND_MEMBER);
+ ScriptLanguage::CodeCompletionOption option(E.name, ScriptLanguage::CODE_COMPLETION_KIND_MEMBER);
r_result.insert(option.display, option);
}
}
@@ -1010,7 +1012,7 @@ static void _find_identifiers_in_base(const GDScriptCompletionIdentifier &p_base
List<MethodInfo> methods;
tmp.get_method_list(&methods);
for (const MethodInfo &E : methods) {
- ScriptCodeCompletionOption option(E.name, ScriptCodeCompletionOption::KIND_FUNCTION);
+ ScriptLanguage::CodeCompletionOption option(E.name, ScriptLanguage::CODE_COMPLETION_KIND_FUNCTION);
if (E.arguments.size()) {
option.insert_text += "(";
} else {
@@ -1028,7 +1030,7 @@ static void _find_identifiers_in_base(const GDScriptCompletionIdentifier &p_base
}
}
-static void _find_identifiers(GDScriptParser::CompletionContext &p_context, bool p_only_functions, Map<String, ScriptCodeCompletionOption> &r_result, int p_recursion_depth) {
+static void _find_identifiers(GDScriptParser::CompletionContext &p_context, bool p_only_functions, Map<String, ScriptLanguage::CodeCompletionOption> &r_result, int p_recursion_depth) {
if (!p_only_functions && p_context.current_suite) {
// This includes function parameters, since they are also locals.
_find_identifiers_in_suite(p_context.current_suite, r_result);
@@ -1043,7 +1045,7 @@ static void _find_identifiers(GDScriptParser::CompletionContext &p_context, bool
for (const StringName &E : functions) {
MethodInfo function = GDScriptUtilityFunctions::get_function_info(E);
- ScriptCodeCompletionOption option(String(E), ScriptCodeCompletionOption::KIND_FUNCTION);
+ ScriptLanguage::CodeCompletionOption option(String(E), ScriptLanguage::CODE_COMPLETION_KIND_FUNCTION);
if (function.arguments.size() || (function.flags & METHOD_FLAG_VARARG)) {
option.insert_text += "(";
} else {
@@ -1064,7 +1066,7 @@ static void _find_identifiers(GDScriptParser::CompletionContext &p_context, bool
static_assert((sizeof(_type_names) / sizeof(*_type_names)) == Variant::VARIANT_MAX, "Completion for builtin types is incomplete");
for (int i = 0; i < Variant::VARIANT_MAX; i++) {
- ScriptCodeCompletionOption option(_type_names[i], ScriptCodeCompletionOption::KIND_CLASS);
+ ScriptLanguage::CodeCompletionOption option(_type_names[i], ScriptLanguage::CODE_COMPLETION_KIND_CLASS);
r_result.insert(option.display, option);
}
@@ -1076,7 +1078,7 @@ static void _find_identifiers(GDScriptParser::CompletionContext &p_context, bool
const char **kw = _keywords;
while (*kw) {
- ScriptCodeCompletionOption option(*kw, ScriptCodeCompletionOption::KIND_PLAIN_TEXT);
+ ScriptLanguage::CodeCompletionOption option(*kw, ScriptLanguage::CODE_COMPLETION_KIND_PLAIN_TEXT);
r_result.insert(option.display, option);
kw++;
}
@@ -1089,7 +1091,7 @@ static void _find_identifiers(GDScriptParser::CompletionContext &p_context, bool
const char **kws = _keywords_with_space;
while (*kws) {
- ScriptCodeCompletionOption option(*kws, ScriptCodeCompletionOption::KIND_PLAIN_TEXT);
+ ScriptLanguage::CodeCompletionOption option(*kws, ScriptLanguage::CODE_COMPLETION_KIND_PLAIN_TEXT);
option.insert_text += " ";
r_result.insert(option.display, option);
kws++;
@@ -1102,7 +1104,7 @@ static void _find_identifiers(GDScriptParser::CompletionContext &p_context, bool
const char **kwa = _keywords_with_args;
while (*kwa) {
- ScriptCodeCompletionOption option(*kwa, ScriptCodeCompletionOption::KIND_FUNCTION);
+ ScriptLanguage::CodeCompletionOption option(*kwa, ScriptLanguage::CODE_COMPLETION_KIND_FUNCTION);
option.insert_text += "(";
r_result.insert(option.display, option);
kwa++;
@@ -1112,7 +1114,7 @@ static void _find_identifiers(GDScriptParser::CompletionContext &p_context, bool
Variant::get_utility_function_list(&utility_func_names);
for (List<StringName>::Element *E = utility_func_names.front(); E; E = E->next()) {
- ScriptCodeCompletionOption option(E->get(), ScriptCodeCompletionOption::KIND_FUNCTION);
+ ScriptLanguage::CodeCompletionOption option(E->get(), ScriptLanguage::CODE_COMPLETION_KIND_FUNCTION);
option.insert_text += "(";
r_result.insert(option.display, option);
}
@@ -1122,17 +1124,17 @@ static void _find_identifiers(GDScriptParser::CompletionContext &p_context, bool
if (!E.value().is_singleton) {
continue;
}
- ScriptCodeCompletionOption option(E.key(), ScriptCodeCompletionOption::KIND_CONSTANT);
+ ScriptLanguage::CodeCompletionOption option(E.key(), ScriptLanguage::CODE_COMPLETION_KIND_CONSTANT);
r_result.insert(option.display, option);
}
// Native classes and global constants.
for (const KeyValue<StringName, int> &E : GDScriptLanguage::get_singleton()->get_global_map()) {
- ScriptCodeCompletionOption option;
+ ScriptLanguage::CodeCompletionOption option;
if (ClassDB::class_exists(E.key) || Engine::get_singleton()->has_singleton(E.key)) {
- option = ScriptCodeCompletionOption(E.key.operator String(), ScriptCodeCompletionOption::KIND_CLASS);
+ option = ScriptLanguage::CodeCompletionOption(E.key.operator String(), ScriptLanguage::CODE_COMPLETION_KIND_CLASS);
} else {
- option = ScriptCodeCompletionOption(E.key.operator String(), ScriptCodeCompletionOption::KIND_CONSTANT);
+ option = ScriptLanguage::CodeCompletionOption(E.key.operator String(), ScriptLanguage::CODE_COMPLETION_KIND_CONSTANT);
}
r_result.insert(option.display, option);
}
@@ -2210,20 +2212,20 @@ static bool _guess_method_return_type_from_base(GDScriptParser::CompletionContex
return false;
}
-static void _find_enumeration_candidates(GDScriptParser::CompletionContext &p_context, const String &p_enum_hint, Map<String, ScriptCodeCompletionOption> &r_result) {
+static void _find_enumeration_candidates(GDScriptParser::CompletionContext &p_context, const String &p_enum_hint, Map<String, ScriptLanguage::CodeCompletionOption> &r_result) {
if (!p_enum_hint.contains(".")) {
// Global constant or in the current class.
StringName current_enum = p_enum_hint;
if (p_context.current_class && p_context.current_class->has_member(current_enum) && p_context.current_class->get_member(current_enum).type == GDScriptParser::ClassNode::Member::ENUM) {
const GDScriptParser::EnumNode *_enum = p_context.current_class->get_member(current_enum).m_enum;
for (int i = 0; i < _enum->values.size(); i++) {
- ScriptCodeCompletionOption option(_enum->values[i].identifier->name, ScriptCodeCompletionOption::KIND_ENUM);
+ ScriptLanguage::CodeCompletionOption option(_enum->values[i].identifier->name, ScriptLanguage::CODE_COMPLETION_KIND_ENUM);
r_result.insert(option.display, option);
}
} else {
for (int i = 0; i < CoreConstants::get_global_constant_count(); i++) {
if (CoreConstants::get_global_constant_enum(i) == current_enum) {
- ScriptCodeCompletionOption option(CoreConstants::get_global_constant_name(i), ScriptCodeCompletionOption::KIND_ENUM);
+ ScriptLanguage::CodeCompletionOption option(CoreConstants::get_global_constant_name(i), ScriptLanguage::CODE_COMPLETION_KIND_ENUM);
r_result.insert(option.display, option);
}
}
@@ -2240,13 +2242,13 @@ static void _find_enumeration_candidates(GDScriptParser::CompletionContext &p_co
ClassDB::get_enum_constants(class_name, enum_name, &enum_constants);
for (const StringName &E : enum_constants) {
String candidate = class_name + "." + E;
- ScriptCodeCompletionOption option(candidate, ScriptCodeCompletionOption::KIND_ENUM);
+ ScriptLanguage::CodeCompletionOption option(candidate, ScriptLanguage::CODE_COMPLETION_KIND_ENUM);
r_result.insert(option.display, option);
}
}
}
-static void _find_call_arguments(GDScriptParser::CompletionContext &p_context, const GDScriptCompletionIdentifier &p_base, const StringName &p_method, int p_argidx, bool p_static, Map<String, ScriptCodeCompletionOption> &r_result, String &r_arghint) {
+static void _find_call_arguments(GDScriptParser::CompletionContext &p_context, const GDScriptCompletionIdentifier &p_base, const StringName &p_method, int p_argidx, bool p_static, Map<String, ScriptLanguage::CodeCompletionOption> &r_result, String &r_arghint) {
Variant base = p_base.value;
GDScriptParser::DataType base_type = p_base.type;
@@ -2287,7 +2289,7 @@ static void _find_call_arguments(GDScriptParser::CompletionContext &p_context, c
if (opt.is_quoted()) {
opt = opt.unquote().quote(quote_style); // Handle user preference.
}
- ScriptCodeCompletionOption option(opt, ScriptCodeCompletionOption::KIND_FUNCTION);
+ ScriptLanguage::CodeCompletionOption option(opt, ScriptLanguage::CODE_COMPLETION_KIND_FUNCTION);
r_result.insert(option.display, option);
}
}
@@ -2314,7 +2316,7 @@ static void _find_call_arguments(GDScriptParser::CompletionContext &p_context, c
continue;
}
String name = s.get_slice("/", 1);
- ScriptCodeCompletionOption option("/root/" + name, ScriptCodeCompletionOption::KIND_NODE_PATH);
+ ScriptLanguage::CodeCompletionOption option("/root/" + name, ScriptLanguage::CODE_COMPLETION_KIND_NODE_PATH);
option.insert_text = option.display.quote(quote_style);
r_result.insert(option.display, option);
}
@@ -2330,7 +2332,7 @@ static void _find_call_arguments(GDScriptParser::CompletionContext &p_context, c
continue;
}
String name = s.get_slice("/", 1);
- ScriptCodeCompletionOption option(name, ScriptCodeCompletionOption::KIND_CONSTANT);
+ ScriptLanguage::CodeCompletionOption option(name, ScriptLanguage::CODE_COMPLETION_KIND_CONSTANT);
option.insert_text = option.display.quote(quote_style);
r_result.insert(option.display, option);
}
@@ -2365,7 +2367,7 @@ static void _find_call_arguments(GDScriptParser::CompletionContext &p_context, c
}
}
-static void _find_call_arguments(GDScriptParser::CompletionContext &p_context, const GDScriptParser::Node *p_call, int p_argidx, Map<String, ScriptCodeCompletionOption> &r_result, bool &r_forced, String &r_arghint) {
+static void _find_call_arguments(GDScriptParser::CompletionContext &p_context, const GDScriptParser::Node *p_call, int p_argidx, Map<String, ScriptLanguage::CodeCompletionOption> &r_result, bool &r_forced, String &r_arghint) {
if (p_call->type == GDScriptParser::Node::PRELOAD) {
if (p_argidx == 0 && bool(EditorSettings::get_singleton()->get("text_editor/completion/complete_file_paths"))) {
_get_directory_contents(EditorFileSystem::get_singleton()->get_filesystem(), r_result);
@@ -2395,7 +2397,7 @@ static void _find_call_arguments(GDScriptParser::CompletionContext &p_context, c
r_arghint = _make_arguments_hint(info, p_argidx);
return;
} else if (GDScriptParser::get_builtin_type(call->function_name) < Variant::VARIANT_MAX) {
- // Complete constructor
+ // Complete constructor.
List<MethodInfo> constructors;
Variant::get_constructor_list(GDScriptParser::get_builtin_type(call->function_name), &constructors);
@@ -2421,6 +2423,32 @@ static void _find_call_arguments(GDScriptParser::CompletionContext &p_context, c
} else if (callee_type == GDScriptParser::Node::SUBSCRIPT) {
const GDScriptParser::SubscriptNode *subscript = static_cast<const GDScriptParser::SubscriptNode *>(call->callee);
+ if (subscript->base != nullptr && subscript->base->type == GDScriptParser::Node::IDENTIFIER) {
+ const GDScriptParser::IdentifierNode *base_identifier = static_cast<const GDScriptParser::IdentifierNode *>(subscript->base);
+
+ Variant::Type method_type = GDScriptParser::get_builtin_type(base_identifier->name);
+ if (method_type < Variant::VARIANT_MAX) {
+ Variant v;
+ Callable::CallError err;
+ Variant::construct(method_type, v, nullptr, 0, err);
+ if (err.error != Callable::CallError::CALL_OK) {
+ return;
+ }
+ List<MethodInfo> methods;
+ v.get_method_list(&methods);
+
+ for (MethodInfo &E : methods) {
+ if (p_argidx >= E.arguments.size()) {
+ continue;
+ }
+ if (E.name == call->function_name) {
+ r_arghint += _make_arguments_hint(E, p_argidx);
+ return;
+ }
+ }
+ }
+ }
+
if (subscript->is_attribute) {
GDScriptCompletionIdentifier ci;
if (_guess_expression_type(p_context, subscript->base, ci)) {
@@ -2444,7 +2472,7 @@ static void _find_call_arguments(GDScriptParser::CompletionContext &p_context, c
r_forced = r_result.size() > 0;
}
-::Error GDScriptLanguage::complete_code(const String &p_code, const String &p_path, Object *p_owner, List<ScriptCodeCompletionOption> *r_options, bool &r_forced, String &r_call_hint) {
+::Error GDScriptLanguage::complete_code(const String &p_code, const String &p_path, Object *p_owner, List<ScriptLanguage::CodeCompletionOption> *r_options, bool &r_forced, String &r_call_hint) {
const String quote_style = EDITOR_GET("text_editor/completion/use_single_quotes") ? "'" : "\"";
GDScriptParser parser;
@@ -2454,7 +2482,7 @@ static void _find_call_arguments(GDScriptParser::CompletionContext &p_context, c
analyzer.analyze();
r_forced = false;
- Map<String, ScriptCodeCompletionOption> options;
+ Map<String, ScriptLanguage::CodeCompletionOption> options;
GDScriptParser::CompletionContext completion_context = parser.get_completion_context();
completion_context.base = p_owner;
@@ -2467,7 +2495,7 @@ static void _find_call_arguments(GDScriptParser::CompletionContext &p_context, c
List<MethodInfo> annotations;
parser.get_annotation_list(&annotations);
for (const MethodInfo &E : annotations) {
- ScriptCodeCompletionOption option(E.name.substr(1), ScriptCodeCompletionOption::KIND_PLAIN_TEXT);
+ ScriptLanguage::CodeCompletionOption option(E.name.substr(1), ScriptLanguage::CODE_COMPLETION_KIND_PLAIN_TEXT);
if (E.arguments.size() > 0) {
option.insert_text += "(";
}
@@ -2483,17 +2511,36 @@ static void _find_call_arguments(GDScriptParser::CompletionContext &p_context, c
_find_annotation_arguments(annotation, completion_context.current_argument, quote_style, options);
r_forced = true;
} break;
- case GDScriptParser::COMPLETION_BUILT_IN_TYPE_CONSTANT: {
- List<StringName> constants;
- Variant::get_constants_for_type(completion_context.builtin_type, &constants);
- for (const StringName &E : constants) {
- ScriptCodeCompletionOption option(E, ScriptCodeCompletionOption::KIND_CONSTANT);
- bool valid = false;
- Variant default_value = Variant::get_constant_value(completion_context.builtin_type, E, &valid);
- if (valid) {
- option.default_value = default_value;
+ case GDScriptParser::COMPLETION_BUILT_IN_TYPE_CONSTANT_OR_STATIC_METHOD: {
+ // Constants.
+ {
+ List<StringName> constants;
+ Variant::get_constants_for_type(completion_context.builtin_type, &constants);
+ for (const StringName &E : constants) {
+ ScriptLanguage::CodeCompletionOption option(E, ScriptLanguage::CODE_COMPLETION_KIND_CONSTANT);
+ bool valid = false;
+ Variant default_value = Variant::get_constant_value(completion_context.builtin_type, E, &valid);
+ if (valid) {
+ option.default_value = default_value;
+ }
+ options.insert(option.display, option);
+ }
+ }
+ // Methods.
+ {
+ List<StringName> methods;
+ Variant::get_builtin_method_list(completion_context.builtin_type, &methods);
+ for (const StringName &E : methods) {
+ if (Variant::is_builtin_method_static(completion_context.builtin_type, E)) {
+ ScriptLanguage::CodeCompletionOption option(E, ScriptLanguage::CODE_COMPLETION_KIND_FUNCTION);
+ if (Variant::get_builtin_method_argument_count(completion_context.builtin_type, E) > 0 || Variant::is_builtin_method_vararg(completion_context.builtin_type, E)) {
+ option.insert_text += "(";
+ } else {
+ option.insert_text += "()";
+ }
+ options.insert(option.display, option);
+ }
}
- options.insert(option.display, option);
}
} break;
case GDScriptParser::COMPLETION_INHERIT_TYPE: {
@@ -2501,7 +2548,7 @@ static void _find_call_arguments(GDScriptParser::CompletionContext &p_context, c
r_forced = true;
} break;
case GDScriptParser::COMPLETION_TYPE_NAME_OR_VOID: {
- ScriptCodeCompletionOption option("void", ScriptCodeCompletionOption::KIND_PLAIN_TEXT);
+ ScriptLanguage::CodeCompletionOption option("void", ScriptLanguage::CODE_COMPLETION_KIND_PLAIN_TEXT);
options.insert(option.display, option);
}
[[fallthrough]];
@@ -2511,16 +2558,16 @@ static void _find_call_arguments(GDScriptParser::CompletionContext &p_context, c
} break;
case GDScriptParser::COMPLETION_PROPERTY_DECLARATION_OR_TYPE: {
_list_available_types(false, completion_context, options);
- ScriptCodeCompletionOption get("get", ScriptCodeCompletionOption::KIND_PLAIN_TEXT);
+ ScriptLanguage::CodeCompletionOption get("get", ScriptLanguage::CODE_COMPLETION_KIND_PLAIN_TEXT);
options.insert(get.display, get);
- ScriptCodeCompletionOption set("set", ScriptCodeCompletionOption::KIND_PLAIN_TEXT);
+ ScriptLanguage::CodeCompletionOption set("set", ScriptLanguage::CODE_COMPLETION_KIND_PLAIN_TEXT);
options.insert(set.display, set);
r_forced = true;
} break;
case GDScriptParser::COMPLETION_PROPERTY_DECLARATION: {
- ScriptCodeCompletionOption get("get", ScriptCodeCompletionOption::KIND_PLAIN_TEXT);
+ ScriptLanguage::CodeCompletionOption get("get", ScriptLanguage::CODE_COMPLETION_KIND_PLAIN_TEXT);
options.insert(get.display, get);
- ScriptCodeCompletionOption set("set", ScriptCodeCompletionOption::KIND_PLAIN_TEXT);
+ ScriptLanguage::CodeCompletionOption set("set", ScriptLanguage::CODE_COMPLETION_KIND_PLAIN_TEXT);
options.insert(set.display, set);
r_forced = true;
} break;
@@ -2536,7 +2583,7 @@ static void _find_call_arguments(GDScriptParser::CompletionContext &p_context, c
if (member.function->is_static) {
continue;
}
- ScriptCodeCompletionOption option(member.function->identifier->name, ScriptCodeCompletionOption::KIND_FUNCTION);
+ ScriptLanguage::CodeCompletionOption option(member.function->identifier->name, ScriptLanguage::CODE_COMPLETION_KIND_FUNCTION);
options.insert(option.display, option);
}
r_forced = true;
@@ -2706,7 +2753,7 @@ static void _find_call_arguments(GDScriptParser::CompletionContext &p_context, c
}
method_hint += ":";
- ScriptCodeCompletionOption option(method_hint, ScriptCodeCompletionOption::KIND_FUNCTION);
+ ScriptLanguage::CodeCompletionOption option(method_hint, ScriptLanguage::CODE_COMPLETION_KIND_FUNCTION);
options.insert(option.display, option);
}
} break;
@@ -2729,7 +2776,7 @@ static void _find_call_arguments(GDScriptParser::CompletionContext &p_context, c
if (!opt.replace("/", "_").is_valid_identifier()) {
opt = opt.quote(quote_style); // Handle user preference.
}
- ScriptCodeCompletionOption option(opt, ScriptCodeCompletionOption::KIND_NODE_PATH);
+ ScriptLanguage::CodeCompletionOption option(opt, ScriptLanguage::CODE_COMPLETION_KIND_NODE_PATH);
options.insert(option.display, option);
}
@@ -2738,7 +2785,7 @@ static void _find_call_arguments(GDScriptParser::CompletionContext &p_context, c
for (OrderedHashMap<StringName, ProjectSettings::AutoloadInfo>::Element E = autoloads.front(); E; E = E.next()) {
String path = "/root/" + E.key();
- ScriptCodeCompletionOption option(path.quote(quote_style), ScriptCodeCompletionOption::KIND_NODE_PATH);
+ ScriptLanguage::CodeCompletionOption option(path.quote(quote_style), ScriptLanguage::CODE_COMPLETION_KIND_NODE_PATH);
options.insert(option.display, option);
}
}
@@ -2751,7 +2798,7 @@ static void _find_call_arguments(GDScriptParser::CompletionContext &p_context, c
} break;
}
- for (const KeyValue<String, ScriptCodeCompletionOption> &E : options) {
+ for (const KeyValue<String, ScriptLanguage::CodeCompletionOption> &E : options) {
r_options->push_back(E.value);
}
@@ -2760,7 +2807,7 @@ static void _find_call_arguments(GDScriptParser::CompletionContext &p_context, c
#else
-Error GDScriptLanguage::complete_code(const String &p_code, const String &p_path, Object *p_owner, List<ScriptCodeCompletionOption> *r_options, bool &r_forced, String &r_call_hint) {
+Error GDScriptLanguage::complete_code(const String &p_code, const String &p_path, Object *p_owner, List<ScriptLanguage::CodeCompletionOption> *r_options, bool &r_forced, String &r_call_hint) {
return OK;
}
@@ -2859,7 +2906,7 @@ static Error _lookup_symbol_from_base(const GDScriptParser::DataType &p_base, co
case GDScriptParser::DataType::CLASS: {
if (base_type.class_type) {
if (base_type.class_type->has_member(p_symbol)) {
- r_result.type = ScriptLanguage::LookupResult::RESULT_SCRIPT_LOCATION;
+ r_result.type = ScriptLanguage::LOOKUP_RESULT_SCRIPT_LOCATION;
r_result.location = base_type.class_type->get_member(p_symbol).get_line();
r_result.class_path = base_type.script_path;
r_result.script = GDScriptCache::get_shallow_script(r_result.class_path);
@@ -2873,7 +2920,7 @@ static Error _lookup_symbol_from_base(const GDScriptParser::DataType &p_base, co
if (scr.is_valid()) {
int line = scr->get_member_line(p_symbol);
if (line >= 0) {
- r_result.type = ScriptLanguage::LookupResult::RESULT_SCRIPT_LOCATION;
+ r_result.type = ScriptLanguage::LOOKUP_RESULT_SCRIPT_LOCATION;
r_result.location = line;
r_result.script = scr;
return OK;
@@ -2897,7 +2944,7 @@ static Error _lookup_symbol_from_base(const GDScriptParser::DataType &p_base, co
}
if (ClassDB::has_method(class_name, p_symbol, true)) {
- r_result.type = ScriptLanguage::LookupResult::RESULT_CLASS_METHOD;
+ r_result.type = ScriptLanguage::LOOKUP_RESULT_CLASS_METHOD;
r_result.class_name = base_type.native_type;
r_result.class_member = p_symbol;
return OK;
@@ -2907,7 +2954,7 @@ static Error _lookup_symbol_from_base(const GDScriptParser::DataType &p_base, co
ClassDB::get_virtual_methods(class_name, &virtual_methods, true);
for (const MethodInfo &E : virtual_methods) {
if (E.name == p_symbol) {
- r_result.type = ScriptLanguage::LookupResult::RESULT_CLASS_METHOD;
+ r_result.type = ScriptLanguage::LOOKUP_RESULT_CLASS_METHOD;
r_result.class_name = base_type.native_type;
r_result.class_member = p_symbol;
return OK;
@@ -2916,7 +2963,7 @@ static Error _lookup_symbol_from_base(const GDScriptParser::DataType &p_base, co
StringName enum_name = ClassDB::get_integer_constant_enum(class_name, p_symbol, true);
if (enum_name != StringName()) {
- r_result.type = ScriptLanguage::LookupResult::RESULT_CLASS_ENUM;
+ r_result.type = ScriptLanguage::LOOKUP_RESULT_CLASS_ENUM;
r_result.class_name = base_type.native_type;
r_result.class_member = enum_name;
return OK;
@@ -2926,7 +2973,7 @@ static Error _lookup_symbol_from_base(const GDScriptParser::DataType &p_base, co
ClassDB::get_integer_constant_list(class_name, &constants, true);
for (const String &E : constants) {
if (E == p_symbol) {
- r_result.type = ScriptLanguage::LookupResult::RESULT_CLASS_CONSTANT;
+ r_result.type = ScriptLanguage::LOOKUP_RESULT_CLASS_CONSTANT;
r_result.class_name = base_type.native_type;
r_result.class_member = p_symbol;
return OK;
@@ -2934,7 +2981,7 @@ static Error _lookup_symbol_from_base(const GDScriptParser::DataType &p_base, co
}
if (ClassDB::has_property(class_name, p_symbol, true)) {
- r_result.type = ScriptLanguage::LookupResult::RESULT_CLASS_PROPERTY;
+ r_result.type = ScriptLanguage::LOOKUP_RESULT_CLASS_PROPERTY;
r_result.class_name = base_type.native_type;
r_result.class_member = p_symbol;
return OK;
@@ -2951,7 +2998,7 @@ static Error _lookup_symbol_from_base(const GDScriptParser::DataType &p_base, co
base_type.kind = GDScriptParser::DataType::UNRESOLVED;
if (Variant::has_constant(base_type.builtin_type, p_symbol)) {
- r_result.type = ScriptLanguage::LookupResult::RESULT_CLASS_CONSTANT;
+ r_result.type = ScriptLanguage::LOOKUP_RESULT_CLASS_CONSTANT;
r_result.class_name = Variant::get_type_name(base_type.builtin_type);
r_result.class_member = p_symbol;
return OK;
@@ -2971,7 +3018,7 @@ static Error _lookup_symbol_from_base(const GDScriptParser::DataType &p_base, co
}
if (v.has_method(p_symbol)) {
- r_result.type = ScriptLanguage::LookupResult::RESULT_CLASS_METHOD;
+ r_result.type = ScriptLanguage::LOOKUP_RESULT_CLASS_METHOD;
r_result.class_name = Variant::get_type_name(base_type.builtin_type);
r_result.class_member = p_symbol;
return OK;
@@ -2980,7 +3027,7 @@ static Error _lookup_symbol_from_base(const GDScriptParser::DataType &p_base, co
bool valid = false;
v.get(p_symbol, &valid);
if (valid) {
- r_result.type = ScriptLanguage::LookupResult::RESULT_CLASS_PROPERTY;
+ r_result.type = ScriptLanguage::LOOKUP_RESULT_CLASS_PROPERTY;
r_result.class_name = Variant::get_type_name(base_type.builtin_type);
r_result.class_member = p_symbol;
return OK;
@@ -2998,7 +3045,7 @@ static Error _lookup_symbol_from_base(const GDScriptParser::DataType &p_base, co
::Error GDScriptLanguage::lookup_code(const String &p_code, const String &p_symbol, const String &p_path, Object *p_owner, LookupResult &r_result) {
// Before parsing, try the usual stuff
if (ClassDB::class_exists(p_symbol)) {
- r_result.type = ScriptLanguage::LookupResult::RESULT_CLASS;
+ r_result.type = ScriptLanguage::LOOKUP_RESULT_CLASS;
r_result.class_name = p_symbol;
return OK;
}
@@ -3006,21 +3053,21 @@ static Error _lookup_symbol_from_base(const GDScriptParser::DataType &p_base, co
for (int i = 0; i < Variant::VARIANT_MAX; i++) {
Variant::Type t = Variant::Type(i);
if (Variant::get_type_name(t) == p_symbol) {
- r_result.type = ScriptLanguage::LookupResult::RESULT_CLASS;
+ r_result.type = ScriptLanguage::LOOKUP_RESULT_CLASS;
r_result.class_name = Variant::get_type_name(t);
return OK;
}
}
if (GDScriptUtilityFunctions::function_exists(p_symbol)) {
- r_result.type = ScriptLanguage::LookupResult::RESULT_CLASS_METHOD;
+ r_result.type = ScriptLanguage::LOOKUP_RESULT_CLASS_METHOD;
r_result.class_name = "@GDScript";
r_result.class_member = p_symbol;
return OK;
}
if ("PI" == p_symbol || "TAU" == p_symbol || "INF" == p_symbol || "NAN" == p_symbol) {
- r_result.type = ScriptLanguage::LookupResult::RESULT_CLASS_CONSTANT;
+ r_result.type = ScriptLanguage::LOOKUP_RESULT_CLASS_CONSTANT;
r_result.class_name = "@GDScript";
r_result.class_member = p_symbol;
return OK;
@@ -3037,7 +3084,7 @@ static Error _lookup_symbol_from_base(const GDScriptParser::DataType &p_base, co
bool success = false;
ClassDB::get_integer_constant(context.current_class->extends[0], p_symbol, &success);
if (success) {
- r_result.type = ScriptLanguage::LookupResult::RESULT_CLASS_CONSTANT;
+ r_result.type = ScriptLanguage::LOOKUP_RESULT_CLASS_CONSTANT;
r_result.class_name = context.current_class->extends[0];
r_result.class_member = p_symbol;
return OK;
@@ -3047,11 +3094,21 @@ static Error _lookup_symbol_from_base(const GDScriptParser::DataType &p_base, co
bool is_function = false;
switch (context.type) {
- case GDScriptParser::COMPLETION_BUILT_IN_TYPE_CONSTANT: {
- r_result.type = ScriptLanguage::LookupResult::RESULT_CLASS_CONSTANT;
- r_result.class_name = Variant::get_type_name(context.builtin_type);
- r_result.class_member = p_symbol;
- return OK;
+ case GDScriptParser::COMPLETION_BUILT_IN_TYPE_CONSTANT_OR_STATIC_METHOD: {
+ if (!Variant::has_builtin_method(context.builtin_type, StringName(p_symbol))) {
+ // A constant.
+ r_result.type = ScriptLanguage::LOOKUP_RESULT_CLASS_CONSTANT;
+ r_result.class_name = Variant::get_type_name(context.builtin_type);
+ r_result.class_member = p_symbol;
+ return OK;
+ }
+ // A method.
+ GDScriptParser::DataType base_type;
+ base_type.kind = GDScriptParser::DataType::BUILTIN;
+ base_type.builtin_type = context.builtin_type;
+ if (_lookup_symbol_from_base(base_type, p_symbol, true, r_result) == OK) {
+ return OK;
+ }
} break;
case GDScriptParser::COMPLETION_SUPER_METHOD:
case GDScriptParser::COMPLETION_METHOD: {
@@ -3076,7 +3133,7 @@ static Error _lookup_symbol_from_base(const GDScriptParser::DataType &p_base, co
const GDScriptParser::SuiteNode *suite = context.current_suite;
while (suite) {
if (suite->has_local(p_symbol)) {
- r_result.type = ScriptLanguage::LookupResult::RESULT_SCRIPT_LOCATION;
+ r_result.type = ScriptLanguage::LOOKUP_RESULT_SCRIPT_LOCATION;
r_result.location = suite->get_local(p_symbol).start_line;
return OK;
}
@@ -3101,7 +3158,7 @@ static Error _lookup_symbol_from_base(const GDScriptParser::DataType &p_base, co
}
if (FileAccess::exists(script)) {
- r_result.type = ScriptLanguage::LookupResult::RESULT_SCRIPT_LOCATION;
+ r_result.type = ScriptLanguage::LOOKUP_RESULT_SCRIPT_LOCATION;
r_result.location = 0;
r_result.script = ResourceLoader::load(script);
return OK;
@@ -3117,10 +3174,10 @@ static Error _lookup_symbol_from_base(const GDScriptParser::DataType &p_base, co
Object *obj = value;
if (obj) {
if (Object::cast_to<GDScriptNativeClass>(obj)) {
- r_result.type = ScriptLanguage::LookupResult::RESULT_CLASS;
+ r_result.type = ScriptLanguage::LOOKUP_RESULT_CLASS;
r_result.class_name = Object::cast_to<GDScriptNativeClass>(obj)->get_name();
} else {
- r_result.type = ScriptLanguage::LookupResult::RESULT_CLASS;
+ r_result.type = ScriptLanguage::LOOKUP_RESULT_CLASS;
r_result.class_name = obj->get_class();
}
@@ -3137,18 +3194,18 @@ static Error _lookup_symbol_from_base(const GDScriptParser::DataType &p_base, co
// Otherwise these codes would work
StringName enumName = ClassDB::get_integer_constant_enum("@GlobalScope", p_symbol, true);
if (enumName != nullptr) {
- r_result.type = ScriptLanguage::LookupResult::RESULT_CLASS_ENUM;
+ r_result.type = ScriptLanguage::LOOKUP_RESULT_CLASS_ENUM;
r_result.class_name = "@GlobalScope";
r_result.class_member = enumName;
return OK;
}
else {
- r_result.type = ScriptLanguage::LookupResult::RESULT_CLASS_CONSTANT;
+ r_result.type = ScriptLanguage::LOOKUP_RESULT_CLASS_CONSTANT;
r_result.class_name = "@GlobalScope";
r_result.class_member = p_symbol;
return OK;
}*/
- r_result.type = ScriptLanguage::LookupResult::RESULT_CLASS_TBD_GLOBALSCOPE;
+ r_result.type = ScriptLanguage::LOOKUP_RESULT_CLASS_TBD_GLOBALSCOPE;
r_result.class_name = "@GlobalScope";
r_result.class_member = p_symbol;
return OK;
@@ -3157,7 +3214,7 @@ static Error _lookup_symbol_from_base(const GDScriptParser::DataType &p_base, co
List<StringName> utility_functions;
Variant::get_utility_function_list(&utility_functions);
if (utility_functions.find(p_symbol) != nullptr) {
- r_result.type = ScriptLanguage::LookupResult::RESULT_CLASS_TBD_GLOBALSCOPE;
+ r_result.type = ScriptLanguage::LOOKUP_RESULT_CLASS_TBD_GLOBALSCOPE;
r_result.class_name = "@GlobalScope";
r_result.class_member = p_symbol;
return OK;
diff --git a/modules/gdscript/gdscript_parser.cpp b/modules/gdscript/gdscript_parser.cpp
index 725b62f6d6..67d778f932 100644
--- a/modules/gdscript/gdscript_parser.cpp
+++ b/modules/gdscript/gdscript_parser.cpp
@@ -1380,6 +1380,7 @@ GDScriptParser::AnnotationNode *GDScriptParser::parse_annotation(uint32_t p_vali
push_completion_call(annotation);
make_completion_context(COMPLETION_ANNOTATION_ARGUMENTS, annotation, 0, true);
if (!check(GDScriptTokenizer::Token::PARENTHESIS_CLOSE) && !is_at_end()) {
+ push_multiline(true);
int argument_index = 0;
do {
make_completion_context(COMPLETION_ANNOTATION_ARGUMENTS, annotation, argument_index, true);
@@ -1391,6 +1392,7 @@ GDScriptParser::AnnotationNode *GDScriptParser::parse_annotation(uint32_t p_vali
}
annotation->arguments.push_back(argument);
} while (match(GDScriptTokenizer::Token::COMMA));
+ pop_multiline();
consume(GDScriptTokenizer::Token::PARENTHESIS_CLOSE, R"*(Expected ")" after annotation arguments.)*");
}
@@ -2683,7 +2685,7 @@ GDScriptParser::ExpressionNode *GDScriptParser::parse_attribute(ExpressionNode *
const IdentifierNode *id = static_cast<const IdentifierNode *>(p_previous_operand);
Variant::Type builtin_type = get_builtin_type(id->name);
if (builtin_type < Variant::VARIANT_MAX) {
- make_completion_context(COMPLETION_BUILT_IN_TYPE_CONSTANT, builtin_type, true);
+ make_completion_context(COMPLETION_BUILT_IN_TYPE_CONSTANT_OR_STATIC_METHOD, builtin_type, true);
is_builtin = true;
}
}
@@ -2750,7 +2752,11 @@ GDScriptParser::ExpressionNode *GDScriptParser::parse_call(ExpressionNode *p_pre
pop_multiline();
return nullptr;
}
- call->function_name = current_function->identifier->name;
+ if (current_function->identifier) {
+ call->function_name = current_function->identifier->name;
+ } else {
+ call->function_name = SNAME("<anonymous>");
+ }
} else {
consume(GDScriptTokenizer::Token::PERIOD, R"(Expected "." or "(" after "super".)");
make_completion_context(COMPLETION_SUPER_METHOD, call, true);
@@ -3480,6 +3486,15 @@ template <PropertyHint t_hint, Variant::Type t_type>
bool GDScriptParser::export_annotations(const AnnotationNode *p_annotation, Node *p_node) {
ERR_FAIL_COND_V_MSG(p_node->type != Node::VARIABLE, false, vformat(R"("%s" annotation can only be applied to variables.)", p_annotation->name));
+ {
+ const int max_flags = 32;
+
+ if (t_hint == PropertyHint::PROPERTY_HINT_FLAGS && p_annotation->resolved_arguments.size() > max_flags) {
+ push_error(vformat(R"(The argument count limit for "@export_flags" is exceeded (%d/%d).)", p_annotation->resolved_arguments.size(), max_flags), p_annotation);
+ return false;
+ }
+ }
+
VariableNode *variable = static_cast<VariableNode *>(p_node);
if (variable->exported) {
push_error(vformat(R"(Annotation "%s" cannot be used with another "@export" annotation.)", p_annotation->name), p_annotation);
diff --git a/modules/gdscript/gdscript_parser.h b/modules/gdscript/gdscript_parser.h
index c09b07282f..0da1896936 100644
--- a/modules/gdscript/gdscript_parser.h
+++ b/modules/gdscript/gdscript_parser.h
@@ -1146,7 +1146,7 @@ public:
COMPLETION_ASSIGN, // Assignment based on type (e.g. enum values).
COMPLETION_ATTRIBUTE, // After id.| to look for members.
COMPLETION_ATTRIBUTE_METHOD, // After id.| to look for methods.
- COMPLETION_BUILT_IN_TYPE_CONSTANT, // Constants inside a built-in type (e.g. Color.blue).
+ COMPLETION_BUILT_IN_TYPE_CONSTANT_OR_STATIC_METHOD, // Constants inside a built-in type (e.g. Color.BLUE) or static methods (e.g. Color.html).
COMPLETION_CALL_ARGUMENTS, // Complete with nodes, input actions, enum values (or usual expressions).
// TODO: COMPLETION_DECLARATION, // Potential declaration (var, const, func).
COMPLETION_GET_NODE, // Get node with $ notation.
diff --git a/modules/gdscript/language_server/gdscript_text_document.cpp b/modules/gdscript/language_server/gdscript_text_document.cpp
index 961295b076..d5ef8fed74 100644
--- a/modules/gdscript/language_server/gdscript_text_document.cpp
+++ b/modules/gdscript/language_server/gdscript_text_document.cpp
@@ -166,49 +166,51 @@ Array GDScriptTextDocument::completion(const Dictionary &p_params) {
params.load(p_params);
Dictionary request_data = params.to_json();
- List<ScriptCodeCompletionOption> options;
+ List<ScriptLanguage::CodeCompletionOption> options;
GDScriptLanguageProtocol::get_singleton()->get_workspace()->completion(params, &options);
if (!options.is_empty()) {
int i = 0;
arr.resize(options.size());
- for (const ScriptCodeCompletionOption &option : options) {
+ for (const ScriptLanguage::CodeCompletionOption &option : options) {
lsp::CompletionItem item;
item.label = option.display;
item.data = request_data;
switch (option.kind) {
- case ScriptCodeCompletionOption::KIND_ENUM:
+ case ScriptLanguage::CODE_COMPLETION_KIND_ENUM:
item.kind = lsp::CompletionItemKind::Enum;
break;
- case ScriptCodeCompletionOption::KIND_CLASS:
+ case ScriptLanguage::CODE_COMPLETION_KIND_CLASS:
item.kind = lsp::CompletionItemKind::Class;
break;
- case ScriptCodeCompletionOption::KIND_MEMBER:
+ case ScriptLanguage::CODE_COMPLETION_KIND_MEMBER:
item.kind = lsp::CompletionItemKind::Property;
break;
- case ScriptCodeCompletionOption::KIND_FUNCTION:
+ case ScriptLanguage::CODE_COMPLETION_KIND_FUNCTION:
item.kind = lsp::CompletionItemKind::Method;
break;
- case ScriptCodeCompletionOption::KIND_SIGNAL:
+ case ScriptLanguage::CODE_COMPLETION_KIND_SIGNAL:
item.kind = lsp::CompletionItemKind::Event;
break;
- case ScriptCodeCompletionOption::KIND_CONSTANT:
+ case ScriptLanguage::CODE_COMPLETION_KIND_CONSTANT:
item.kind = lsp::CompletionItemKind::Constant;
break;
- case ScriptCodeCompletionOption::KIND_VARIABLE:
+ case ScriptLanguage::CODE_COMPLETION_KIND_VARIABLE:
item.kind = lsp::CompletionItemKind::Variable;
break;
- case ScriptCodeCompletionOption::KIND_FILE_PATH:
+ case ScriptLanguage::CODE_COMPLETION_KIND_FILE_PATH:
item.kind = lsp::CompletionItemKind::File;
break;
- case ScriptCodeCompletionOption::KIND_NODE_PATH:
+ case ScriptLanguage::CODE_COMPLETION_KIND_NODE_PATH:
item.kind = lsp::CompletionItemKind::Snippet;
break;
- case ScriptCodeCompletionOption::KIND_PLAIN_TEXT:
+ case ScriptLanguage::CODE_COMPLETION_KIND_PLAIN_TEXT:
item.kind = lsp::CompletionItemKind::Text;
break;
+ default: {
+ }
}
arr[i] = item.to_json();
diff --git a/modules/gdscript/language_server/gdscript_workspace.cpp b/modules/gdscript/language_server/gdscript_workspace.cpp
index d20b243616..1bf0b40842 100644
--- a/modules/gdscript/language_server/gdscript_workspace.cpp
+++ b/modules/gdscript/language_server/gdscript_workspace.cpp
@@ -571,7 +571,7 @@ Node *GDScriptWorkspace::_get_owner_scene_node(String p_path) {
return owner_scene_node;
}
-void GDScriptWorkspace::completion(const lsp::CompletionParams &p_params, List<ScriptCodeCompletionOption> *r_options) {
+void GDScriptWorkspace::completion(const lsp::CompletionParams &p_params, List<ScriptLanguage::CodeCompletionOption> *r_options) {
String path = get_file_path(p_params.textDocument.uri);
String call_hint;
bool forced = false;
@@ -638,7 +638,7 @@ const lsp::DocumentSymbol *GDScriptWorkspace::resolve_symbol(const lsp::TextDocu
symbol_identifier = "_init";
}
if (OK == GDScriptLanguage::get_singleton()->lookup_code(parser->get_text_for_lookup_symbol(pos, symbol_identifier, p_func_required), symbol_identifier, path, nullptr, ret)) {
- if (ret.type == ScriptLanguage::LookupResult::RESULT_SCRIPT_LOCATION) {
+ if (ret.type == ScriptLanguage::LOOKUP_RESULT_SCRIPT_LOCATION) {
String target_script_path = path;
if (!ret.script.is_null()) {
target_script_path = ret.script->get_path();
diff --git a/modules/gdscript/language_server/gdscript_workspace.h b/modules/gdscript/language_server/gdscript_workspace.h
index ce5bba5f00..92e78f8992 100644
--- a/modules/gdscript/language_server/gdscript_workspace.h
+++ b/modules/gdscript/language_server/gdscript_workspace.h
@@ -85,7 +85,7 @@ public:
String get_file_uri(const String &p_path) const;
void publish_diagnostics(const String &p_path);
- void completion(const lsp::CompletionParams &p_params, List<ScriptCodeCompletionOption> *r_options);
+ void completion(const lsp::CompletionParams &p_params, List<ScriptLanguage::CodeCompletionOption> *r_options);
const lsp::DocumentSymbol *resolve_symbol(const lsp::TextDocumentPositionParams &p_doc_pos, const String &p_symbol_name = "", bool p_func_required = false);
void resolve_related_symbols(const lsp::TextDocumentPositionParams &p_doc_pos, List<const lsp::DocumentSymbol *> &r_list);
diff --git a/modules/gltf/SCsub b/modules/gltf/SCsub
index 5d03ee8361..3379404a00 100644
--- a/modules/gltf/SCsub
+++ b/modules/gltf/SCsub
@@ -4,7 +4,8 @@ Import("env")
Import("env_modules")
env_gltf = env_modules.Clone()
-env_gltf.Prepend(CPPPATH=["."])
# Godot's own source files
env_gltf.add_source_files(env.modules_sources, "*.cpp")
+if env["tools"]:
+ env_gltf.add_source_files(env.modules_sources, "editor/*.cpp")
diff --git a/modules/gltf/config.py b/modules/gltf/config.py
index a4736321fa..189b5a831a 100644
--- a/modules/gltf/config.py
+++ b/modules/gltf/config.py
@@ -8,12 +8,16 @@ def configure(env):
def get_doc_classes():
return [
- "EditorSceneImporterGLTF",
+ "EditorSceneFormatImporterBlend",
+ "EditorSceneFormatImporterFBX",
+ "EditorSceneFormatImporterGLTF",
"GLTFAccessor",
"GLTFAnimation",
"GLTFBufferView",
"GLTFCamera",
"GLTFDocument",
+ "GLTFDocumentExtension",
+ "GLTFDocumentExtensionConvertImporterMesh",
"GLTFLight",
"GLTFMesh",
"GLTFNode",
@@ -22,8 +26,6 @@ def get_doc_classes():
"GLTFSpecGloss",
"GLTFState",
"GLTFTexture",
- "GLTFDocumentExtension",
- "GLTFDocumentExtensionConvertImporterMesh",
]
diff --git a/modules/gltf/doc_classes/EditorSceneFormatImporterBlend.xml b/modules/gltf/doc_classes/EditorSceneFormatImporterBlend.xml
new file mode 100644
index 0000000000..ca8eb9854f
--- /dev/null
+++ b/modules/gltf/doc_classes/EditorSceneFormatImporterBlend.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<class name="EditorSceneFormatImporterBlend" inherits="EditorSceneFormatImporter" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../doc/class.xsd">
+ <brief_description>
+ Importer for Blender's [code].blend[/code] scene file format.
+ </brief_description>
+ <description>
+ Imports Blender scenes in the [code].blend[/code] file format through the glTF 2.0 3D import pipeline. This importer requires Blender to be installed by the user, so that it can be used to export the scene as glTF 2.0.
+ The location of the Blender binary is set via the [code]filesystem/import/blender/blender3_path[/code] editor setting.
+ This importer is only used if [member ProjectSettings.filesystem/import/blender/enabled] is enabled, otherwise [code].blend[/code] files present in the project folder are not imported.
+ Blend import requires Blender 3.0.
+ Internally, the EditorSceneFormatImporterBlend uses the Blender glTF "Use Original" mode to reference external textures.
+ </description>
+ <tutorials>
+ </tutorials>
+</class>
diff --git a/modules/gltf/doc_classes/EditorSceneFormatImporterFBX.xml b/modules/gltf/doc_classes/EditorSceneFormatImporterFBX.xml
new file mode 100644
index 0000000000..6754d963ff
--- /dev/null
+++ b/modules/gltf/doc_classes/EditorSceneFormatImporterFBX.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<class name="EditorSceneFormatImporterFBX" inherits="EditorSceneFormatImporter" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../doc/class.xsd">
+ <brief_description>
+ Importer for the [code].fbx[/code] scene file format.
+ </brief_description>
+ <description>
+ Imports Autodesk FBX 3D scenes by way of converting them to glTF 2.0 using the FBX2glTF command line tool.
+ The location of the FBX2glTF binary is set via the [code]filesystem/import/fbx/fbx2gltf_path[/code] editor setting.
+ This importer is only used if [member ProjectSettings.filesystem/import/fbx/enabled] is enabled, otherwise [code].fbx[/code] files present in the project folder are not imported.
+ </description>
+ <tutorials>
+ </tutorials>
+</class>
diff --git a/doc/classes/EditorSceneFormatImporterGLTF.xml b/modules/gltf/doc_classes/EditorSceneFormatImporterGLTF.xml
index 6478e853eb..5a6a2f52d9 100644
--- a/doc/classes/EditorSceneFormatImporterGLTF.xml
+++ b/modules/gltf/doc_classes/EditorSceneFormatImporterGLTF.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="EditorSceneFormatImporterGLTF" inherits="EditorSceneFormatImporter" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd">
+<class name="EditorSceneFormatImporterGLTF" inherits="EditorSceneFormatImporter" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../doc/class.xsd">
<brief_description>
</brief_description>
<description>
diff --git a/modules/gltf/doc_classes/GLTFDocument.xml b/modules/gltf/doc_classes/GLTFDocument.xml
index 7adabdc605..cb0e3b6754 100644
--- a/modules/gltf/doc_classes/GLTFDocument.xml
+++ b/modules/gltf/doc_classes/GLTFDocument.xml
@@ -24,6 +24,7 @@
<argument index="1" name="state" type="GLTFState" />
<argument index="2" name="flags" type="int" default="0" />
<argument index="3" name="bake_fps" type="int" default="30" />
+ <argument index="4" name="base_path" type="String" default="&quot;&quot;" />
<description>
</description>
</method>
diff --git a/modules/gltf/editor_scene_exporter_gltf_plugin.cpp b/modules/gltf/editor/editor_scene_exporter_gltf_plugin.cpp
index 601c70791c..23a7b7fed6 100644
--- a/modules/gltf/editor_scene_exporter_gltf_plugin.cpp
+++ b/modules/gltf/editor/editor_scene_exporter_gltf_plugin.cpp
@@ -28,23 +28,24 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
-#if TOOLS_ENABLED
+#ifdef TOOLS_ENABLED
+
#include "editor_scene_exporter_gltf_plugin.h"
+#include "../gltf_document.h"
+#include "../gltf_state.h"
+
#include "core/config/project_settings.h"
#include "core/error/error_list.h"
#include "core/object/object.h"
#include "core/templates/vector.h"
#include "editor/editor_file_dialog.h"
#include "editor/editor_file_system.h"
-#include "gltf_document.h"
-#include "gltf_state.h"
+#include "editor/editor_node.h"
#include "scene/3d/mesh_instance_3d.h"
#include "scene/gui/check_box.h"
#include "scene/main/node.h"
-#include "editor/editor_node.h"
-
String SceneExporterGLTFPlugin::get_name() const {
return "ConvertGLTF2";
}
diff --git a/modules/gltf/editor_scene_exporter_gltf_plugin.h b/modules/gltf/editor/editor_scene_exporter_gltf_plugin.h
index c2c3f5710c..5af46bc752 100644
--- a/modules/gltf/editor_scene_exporter_gltf_plugin.h
+++ b/modules/gltf/editor/editor_scene_exporter_gltf_plugin.h
@@ -31,7 +31,8 @@
#ifndef EDITOR_SCENE_EXPORTER_GLTF_PLUGIN_H
#define EDITOR_SCENE_EXPORTER_GLTF_PLUGIN_H
-#if TOOLS_ENABLED
+#ifdef TOOLS_ENABLED
+
#include "editor/editor_plugin.h"
#include "editor_scene_importer_gltf.h"
@@ -47,5 +48,7 @@ public:
bool has_main_screen() const override;
SceneExporterGLTFPlugin();
};
+
#endif // TOOLS_ENABLED
+
#endif // EDITOR_SCENE_EXPORTER_GLTF_PLUGIN_H
diff --git a/modules/gltf/editor/editor_scene_importer_blend.cpp b/modules/gltf/editor/editor_scene_importer_blend.cpp
new file mode 100644
index 0000000000..cdb22b7d19
--- /dev/null
+++ b/modules/gltf/editor/editor_scene_importer_blend.cpp
@@ -0,0 +1,572 @@
+/*************************************************************************/
+/* editor_scene_importer_blend.cpp */
+/*************************************************************************/
+/* This file is part of: */
+/* GODOT ENGINE */
+/* https://godotengine.org */
+/*************************************************************************/
+/* Copyright (c) 2007-2022 Juan Linietsky, Ariel Manzur. */
+/* Copyright (c) 2014-2022 Godot Engine contributors (cf. AUTHORS.md). */
+/* */
+/* Permission is hereby granted, free of charge, to any person obtaining */
+/* a copy of this software and associated documentation files (the */
+/* "Software"), to deal in the Software without restriction, including */
+/* without limitation the rights to use, copy, modify, merge, publish, */
+/* distribute, sublicense, and/or sell copies of the Software, and to */
+/* permit persons to whom the Software is furnished to do so, subject to */
+/* the following conditions: */
+/* */
+/* The above copyright notice and this permission notice shall be */
+/* included in all copies or substantial portions of the Software. */
+/* */
+/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
+/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
+/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
+/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
+/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
+/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
+/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
+/*************************************************************************/
+
+#include "editor_scene_importer_blend.h"
+
+#ifdef TOOLS_ENABLED
+
+#include "../gltf_document.h"
+#include "../gltf_state.h"
+
+#include "core/config/project_settings.h"
+#include "editor/editor_file_dialog.h"
+#include "editor/editor_node.h"
+#include "editor/editor_scale.h"
+#include "editor/editor_settings.h"
+#include "main/main.h"
+#include "scene/main/node.h"
+#include "scene/resources/animation.h"
+
+#ifdef WINDOWS_ENABLED
+// Code by Pedro Estebanez (https://github.com/godotengine/godot/pull/59766)
+#include <shlwapi.h>
+#endif
+
+uint32_t EditorSceneFormatImporterBlend::get_import_flags() const {
+ return ImportFlags::IMPORT_SCENE | ImportFlags::IMPORT_ANIMATION;
+}
+
+void EditorSceneFormatImporterBlend::get_extensions(List<String> *r_extensions) const {
+ r_extensions->push_back("blend");
+}
+
+Node *EditorSceneFormatImporterBlend::import_scene(const String &p_path, uint32_t p_flags,
+ const Map<StringName, Variant> &p_options, int p_bake_fps,
+ List<String> *r_missing_deps, Error *r_err) {
+ // Get global paths for source and sink.
+
+ const String source_global = ProjectSettings::get_singleton()->globalize_path(p_path);
+ const String sink = ProjectSettings::get_singleton()->get_imported_files_path().plus_file(
+ vformat("%s-%s.gltf", p_path.get_file().get_basename(), p_path.md5_text()));
+ const String sink_global = ProjectSettings::get_singleton()->globalize_path(sink);
+
+ // Handle configuration options.
+
+ String parameters_arg;
+
+ if (p_options.has(SNAME("blender/nodes/custom_properties")) && p_options[SNAME("blender/nodes/custom_properties")]) {
+ parameters_arg += "export_extras=True,";
+ } else {
+ parameters_arg += "export_extras=False,";
+ }
+ if (p_options.has(SNAME("blender/meshes/skins")) && p_options[SNAME("blender/meshes/skins")]) {
+ int32_t skins = p_options["blender/meshes/skins"];
+ if (skins == BLEND_BONE_INFLUENCES_NONE) {
+ parameters_arg += "export_all_influences=False,";
+ } else if (skins == BLEND_BONE_INFLUENCES_COMPATIBLE) {
+ parameters_arg += "export_all_influences=False,";
+ } else if (skins == BLEND_BONE_INFLUENCES_ALL) {
+ parameters_arg += "export_all_influences=True,";
+ }
+ parameters_arg += "export_skins=True,";
+ } else {
+ parameters_arg += "export_skins=False,";
+ }
+ if (p_options.has(SNAME("blender/materials/export_materials")) && p_options[SNAME("blender/materials/export_materials")]) {
+ int32_t exports = p_options["blender/materials/export_materials"];
+ if (exports == BLEND_MATERIAL_EXPORT_PLACEHOLDER) {
+ parameters_arg += "export_materials='PLACEHOLDER',";
+ } else if (exports == BLEND_MATERIAL_EXPORT_EXPORT) {
+ parameters_arg += "export_materials='EXPORT',";
+ }
+ } else {
+ parameters_arg += "export_materials='PLACEHOLDER',";
+ }
+ if (p_options.has(SNAME("blender/nodes/cameras")) && p_options[SNAME("blender/nodes/cameras")]) {
+ parameters_arg += "export_cameras=True,";
+ } else {
+ parameters_arg += "export_cameras=False,";
+ }
+ if (p_options.has(SNAME("blender/nodes/punctual_lights")) && p_options[SNAME("blender/nodes/punctual_lights")]) {
+ parameters_arg += "export_lights=True,";
+ } else {
+ parameters_arg += "export_lights=False,";
+ }
+ if (p_options.has(SNAME("blender/meshes/colors")) && p_options[SNAME("blender/meshes/colors")]) {
+ parameters_arg += "export_colors=True,";
+ } else {
+ parameters_arg += "export_colors=False,";
+ }
+ if (p_options.has(SNAME("blender/nodes/visible")) && p_options[SNAME("blender/nodes/visible")]) {
+ int32_t visible = p_options["blender/nodes/visible"];
+ if (visible == BLEND_VISIBLE_VISIBLE_ONLY) {
+ parameters_arg += "use_visible=True,";
+ } else if (visible == BLEND_VISIBLE_RENDERABLE) {
+ parameters_arg += "use_renderable=True,";
+ } else if (visible == BLEND_VISIBLE_ALL) {
+ parameters_arg += "use_visible=False,use_renderable=False,";
+ }
+ } else {
+ parameters_arg += "use_visible=False,use_renderable=False,";
+ }
+
+ if (p_options.has(SNAME("blender/meshes/uvs")) && p_options[SNAME("blender/meshes/uvs")]) {
+ parameters_arg += "export_texcoords=True,";
+ } else {
+ parameters_arg += "export_texcoords=False,";
+ }
+ if (p_options.has(SNAME("blender/meshes/normals")) && p_options[SNAME("blender/meshes/normals")]) {
+ parameters_arg += "export_normals=True,";
+ } else {
+ parameters_arg += "export_normals=False,";
+ }
+ if (p_options.has(SNAME("blender/meshes/tangents")) && p_options[SNAME("blender/meshes/tangents")]) {
+ parameters_arg += "export_tangents=True,";
+ } else {
+ parameters_arg += "export_tangents=False,";
+ }
+ if (p_options.has(SNAME("blender/animation/group_tracks")) && p_options[SNAME("blender/animation/group_tracks")]) {
+ parameters_arg += "export_nla_strips=True,";
+ } else {
+ parameters_arg += "export_nla_strips=False,";
+ }
+ if (p_options.has(SNAME("blender/animation/limit_playback")) && p_options[SNAME("blender/animation/limit_playback")]) {
+ parameters_arg += "export_frame_range=True,";
+ } else {
+ parameters_arg += "export_frame_range=False,";
+ }
+ if (p_options.has(SNAME("blender/animation/always_sample")) && p_options[SNAME("blender/animation/always_sample")]) {
+ parameters_arg += "export_force_sampling=True,";
+ } else {
+ parameters_arg += "export_force_sampling=False,";
+ }
+ if (p_options.has(SNAME("blender/meshes/export_bones_deforming_mesh_only")) && p_options[SNAME("blender/meshes/export_bones_deforming_mesh_only")]) {
+ parameters_arg += "export_def_bones=True,";
+ } else {
+ parameters_arg += "export_def_bones=False,";
+ }
+ if (p_options.has(SNAME("blender/nodes/modifiers")) && p_options[SNAME("blender/nodes/modifiers")]) {
+ parameters_arg += "export_apply=True";
+ } else {
+ parameters_arg += "export_apply=False";
+ }
+
+ String unpack_all;
+ if (p_options.has(SNAME("blender/materials/unpack_enabled")) && p_options[SNAME("blender/materials/unpack_enabled")]) {
+ unpack_all = "bpy.ops.file.unpack_all(method='USE_LOCAL');";
+ }
+
+ // Prepare Blender export script.
+
+ String common_args = vformat("filepath='%s',", sink_global) +
+ "export_format='GLTF_SEPARATE',"
+ "export_yup=True," +
+ parameters_arg;
+ String script =
+ String("import bpy, sys;") +
+ "print('Blender 3.0 or higher is required.', file=sys.stderr) if bpy.app.version < (3, 0, 0) else None;" +
+ vformat("bpy.ops.wm.open_mainfile(filepath='%s');", source_global) +
+ unpack_all +
+ vformat("bpy.ops.export_scene.gltf(export_keep_originals=True,%s);", common_args);
+ print_verbose(script);
+
+ // Run script with configured Blender binary.
+
+ String blender_path = EDITOR_GET("filesystem/import/blender/blender3_path");
+
+#ifdef WINDOWS_ENABLED
+ blender_path = blender_path.plus_file("blender.exe");
+#else
+ blender_path = blender_path.plus_file("blender");
+#endif
+
+ List<String> args;
+ args.push_back("--background");
+ args.push_back("--python-expr");
+ args.push_back(script);
+
+ String standard_out;
+ int ret;
+ OS::get_singleton()->execute(blender_path, args, &standard_out, &ret, true);
+ print_verbose(blender_path);
+ print_verbose(standard_out);
+
+ if (ret != 0) {
+ if (r_err) {
+ *r_err = ERR_SCRIPT_FAILED;
+ }
+ ERR_PRINT(vformat("Blend export to glTF failed with error: %d.", ret));
+ return nullptr;
+ }
+
+ // Import the generated glTF.
+
+ // Use GLTFDocument instead of glTF importer to keep image references.
+ Ref<GLTFDocument> gltf;
+ gltf.instantiate();
+ Ref<GLTFState> state;
+ state.instantiate();
+ String base_dir;
+ if (p_options.has(SNAME("blender/materials/unpack_enabled")) && p_options[SNAME("blender/materials/unpack_enabled")]) {
+ base_dir = sink.get_base_dir();
+ }
+ Error err = gltf->append_from_file(sink.get_basename() + ".gltf", state, p_flags, p_bake_fps, base_dir);
+ if (err != OK) {
+ if (r_err) {
+ *r_err = FAILED;
+ }
+ return nullptr;
+ }
+ return gltf->generate_scene(state, p_bake_fps);
+}
+
+Ref<Animation> EditorSceneFormatImporterBlend::import_animation(const String &p_path, uint32_t p_flags,
+ const Map<StringName, Variant> &p_options, int p_bake_fps) {
+ return Ref<Animation>();
+}
+
+Variant EditorSceneFormatImporterBlend::get_option_visibility(const String &p_path, const String &p_option,
+ const Map<StringName, Variant> &p_options) {
+ if (p_option.begins_with("animation/")) {
+ if (p_option != "animation/import" && !bool(p_options["animation/import"])) {
+ return false;
+ }
+ }
+ return true;
+}
+
+void EditorSceneFormatImporterBlend::get_import_options(const String &p_path, List<ResourceImporter::ImportOption> *r_options) {
+#define ADD_OPTION_BOOL(PATH, VALUE) \
+ r_options->push_back(ResourceImporter::ImportOption(PropertyInfo(Variant::BOOL, SNAME(PATH)), VALUE));
+#define ADD_OPTION_ENUM(PATH, ENUM_HINT, VALUE) \
+ r_options->push_back(ResourceImporter::ImportOption(PropertyInfo(Variant::INT, SNAME(PATH), PROPERTY_HINT_ENUM, ENUM_HINT), VALUE));
+
+ ADD_OPTION_ENUM("blender/nodes/visible", "Visible Only,Renderable,All", BLEND_VISIBLE_ALL);
+ ADD_OPTION_BOOL("blender/nodes/punctual_lights", true);
+ ADD_OPTION_BOOL("blender/nodes/cameras", true);
+ ADD_OPTION_BOOL("blender/nodes/custom_properties", true);
+ ADD_OPTION_ENUM("blender/nodes/modifiers", "No Modifiers,All Modifiers", BLEND_MODIFIERS_ALL);
+ ADD_OPTION_BOOL("blender/meshes/colors", false);
+ ADD_OPTION_BOOL("blender/meshes/uvs", true);
+ ADD_OPTION_BOOL("blender/meshes/normals", true);
+ ADD_OPTION_BOOL("blender/meshes/tangents", true);
+ ADD_OPTION_ENUM("blender/meshes/skins", "None,4 Influences (Compatible),All Influences", BLEND_BONE_INFLUENCES_ALL);
+ ADD_OPTION_BOOL("blender/meshes/export_bones_deforming_mesh_only", false);
+ ADD_OPTION_BOOL("blender/materials/unpack_enabled", true);
+ ADD_OPTION_ENUM("blender/materials/export_materials", "Placeholder,Export", BLEND_MATERIAL_EXPORT_EXPORT);
+ ADD_OPTION_BOOL("blender/animation/limit_playback", true);
+ ADD_OPTION_BOOL("blender/animation/always_sample", true);
+ ADD_OPTION_BOOL("blender/animation/group_tracks", true);
+
+#undef ADD_OPTION_BOOL
+#undef ADD_OPTION_ENUM
+}
+
+///////////////////////////
+
+static bool _test_blender_path(const String &p_path, String *r_err = nullptr) {
+ String path = p_path;
+#ifdef WINDOWS_ENABLED
+ path = path.plus_file("blender.exe");
+#else
+ path = path.plus_file("blender");
+#endif
+
+#if defined(OSX_ENABLED)
+ if (!FileAccess::exists(path)) {
+ path = path.plus_file("Blender");
+ }
+#endif
+
+ if (!FileAccess::exists(path)) {
+ if (r_err) {
+ *r_err = TTR("Path does not contain a Blender installation.");
+ }
+ return false;
+ }
+ List<String> args;
+ args.push_back("--version");
+ String pipe;
+ Error err = OS::get_singleton()->execute(path, args, &pipe);
+ if (err != OK) {
+ if (r_err) {
+ *r_err = TTR("Can't excecute Blender binary.");
+ }
+ return false;
+ }
+
+ if (pipe.find("Blender ") != 0) {
+ if (r_err) {
+ *r_err = vformat(TTR("Unexpected --version output from Blender binary at: %s"), path);
+ }
+ return false;
+ }
+ pipe = pipe.replace_first("Blender ", "");
+ int pp = pipe.find(".");
+ if (pp == -1) {
+ if (r_err) {
+ *r_err = TTR("Path supplied lacks a Blender binary.");
+ }
+ return false;
+ }
+ String v = pipe.substr(0, pp);
+ int version = v.to_int();
+ if (version < 3) {
+ if (r_err) {
+ *r_err = TTR("This Blender installation is too old for this importer (not 3.0+).");
+ }
+ return false;
+ }
+ if (version > 3) {
+ if (r_err) {
+ *r_err = TTR("This Blender installation is too new for this importer (not 3.x).");
+ }
+ return false;
+ }
+
+ return true;
+}
+
+bool EditorFileSystemImportFormatSupportQueryBlend::is_active() const {
+ bool blend_enabled = GLOBAL_GET("filesystem/import/blender/enabled");
+
+ String blender_path = EDITOR_GET("filesystem/import/blender/blender3_path");
+
+ if (blend_enabled && !_test_blender_path(blender_path)) {
+ // Intending to import Blender, but blend not configured.
+ return true;
+ }
+
+ return false;
+}
+Vector<String> EditorFileSystemImportFormatSupportQueryBlend::get_file_extensions() const {
+ Vector<String> ret;
+ ret.push_back("blend");
+ return ret;
+}
+
+void EditorFileSystemImportFormatSupportQueryBlend::_validate_path(String p_path) {
+ String error;
+ bool success = false;
+ if (p_path == "") {
+ error = TTR("Path is empty.");
+ } else {
+ if (_test_blender_path(p_path, &error)) {
+ success = true;
+ if (auto_detected_path == p_path) {
+ error = TTR("Path to Blender installation is valid (Autodetected).");
+ } else {
+ error = TTR("Path to Blender installation is valid.");
+ }
+ }
+ }
+
+ path_status->set_text(error);
+
+ if (success) {
+ path_status->add_theme_color_override("font_color", path_status->get_theme_color(SNAME("success_color"), SNAME("Editor")));
+ configure_blender_dialog->get_ok_button()->set_disabled(false);
+ } else {
+ path_status->add_theme_color_override("font_color", path_status->get_theme_color(SNAME("error_color"), SNAME("Editor")));
+ configure_blender_dialog->get_ok_button()->set_disabled(true);
+ }
+}
+
+bool EditorFileSystemImportFormatSupportQueryBlend::_autodetect_path(String p_path) {
+ if (_test_blender_path(p_path)) {
+ auto_detected_path = p_path;
+ return true;
+ }
+ return false;
+}
+
+void EditorFileSystemImportFormatSupportQueryBlend::_path_confirmed() {
+ confirmed = true;
+}
+
+void EditorFileSystemImportFormatSupportQueryBlend::_select_install(String p_path) {
+ blender_path->set_text(p_path);
+ _validate_path(p_path);
+}
+void EditorFileSystemImportFormatSupportQueryBlend::_browse_install() {
+ if (blender_path->get_text() != String()) {
+ browse_dialog->set_current_dir(blender_path->get_text());
+ }
+
+ browse_dialog->popup_centered_ratio();
+}
+
+bool EditorFileSystemImportFormatSupportQueryBlend::query() {
+ if (!configure_blender_dialog) {
+ configure_blender_dialog = memnew(ConfirmationDialog);
+ configure_blender_dialog->set_title(TTR("Configure Blender Importer"));
+ configure_blender_dialog->set_flag(Window::FLAG_BORDERLESS, true); // Avoid closing accidentally .
+ configure_blender_dialog->set_close_on_escape(false);
+
+ VBoxContainer *vb = memnew(VBoxContainer);
+ vb->add_child(memnew(Label(TTR("Blender 3.0+ is required to import '.blend' files.\nPlease provide a valid path to a Blender installation:"))));
+
+ HBoxContainer *hb = memnew(HBoxContainer);
+
+ blender_path = memnew(LineEdit);
+ blender_path->set_h_size_flags(Control::SIZE_EXPAND_FILL);
+ hb->add_child(blender_path);
+ blender_path_browse = memnew(Button);
+ hb->add_child(blender_path_browse);
+ blender_path_browse->set_text(TTR("Browse"));
+ blender_path_browse->connect("pressed", callable_mp(this, &EditorFileSystemImportFormatSupportQueryBlend::_browse_install));
+ hb->set_h_size_flags(Control::SIZE_EXPAND_FILL);
+ hb->set_custom_minimum_size(Size2(400 * EDSCALE, 0));
+
+ vb->add_child(hb);
+
+ path_status = memnew(Label);
+ vb->add_child(path_status);
+
+ configure_blender_dialog->add_child(vb);
+
+ blender_path->connect("text_changed", callable_mp(this, &EditorFileSystemImportFormatSupportQueryBlend::_validate_path));
+
+ EditorNode::get_singleton()->get_gui_base()->add_child(configure_blender_dialog);
+
+ configure_blender_dialog->get_ok_button()->set_text(TTR("Confirm Path"));
+ configure_blender_dialog->get_cancel_button()->set_text(TTR("Disable '.blend' Import"));
+ configure_blender_dialog->get_cancel_button()->set_tooltip(TTR("Disables Blender '.blend' files import for this project. Can be re-enabled in Project Settings."));
+ configure_blender_dialog->connect("confirmed", callable_mp(this, &EditorFileSystemImportFormatSupportQueryBlend::_path_confirmed));
+
+ browse_dialog = memnew(EditorFileDialog);
+ browse_dialog->set_access(EditorFileDialog::ACCESS_FILESYSTEM);
+ browse_dialog->set_file_mode(EditorFileDialog::FILE_MODE_OPEN_DIR);
+ browse_dialog->connect("dir_selected", callable_mp(this, &EditorFileSystemImportFormatSupportQueryBlend::_select_install));
+
+ EditorNode::get_singleton()->get_gui_base()->add_child(browse_dialog);
+ }
+
+ String path = EDITOR_GET("filesystem/import/blender/blender3_path");
+
+ if (path == "") {
+ // Autodetect
+ auto_detected_path = "";
+
+#if defined(OSX_ENABLED)
+
+ {
+ Vector<String> mdfind_paths;
+ {
+ List<String> mdfind_args;
+ mdfind_args.push_back("kMDItemCFBundleIdentifier=org.blenderfoundation.blender");
+
+ String output;
+ Error err = OS::get_singleton()->execute("mdfind", mdfind_args, &output);
+ if (err == OK) {
+ mdfind_paths = output.split("\n");
+ }
+ }
+
+ bool found = false;
+ for (const String &path : mdfind_paths) {
+ found = _autodetect_path(path.plus_file("Contents/MacOS"));
+ if (found) {
+ break;
+ }
+ }
+ if (!found) {
+ found = _autodetect_path("/opt/homebrew/bin");
+ }
+ if (!found) {
+ found = _autodetect_path("/opt/local/bin");
+ }
+ if (!found) {
+ found = _autodetect_path("/usr/local/bin");
+ }
+ if (!found) {
+ found = _autodetect_path("/usr/local/opt");
+ }
+ if (!found) {
+ found = _autodetect_path("/Applications/Blender.app/Contents/MacOS");
+ }
+ }
+#elif defined(WINDOWS_ENABLED)
+ {
+ char blender_opener_path[MAX_PATH];
+ DWORD path_len = MAX_PATH;
+ HRESULT res = AssocQueryString(0, ASSOCSTR_EXECUTABLE, ".blend", "open", blender_opener_path, &path_len);
+ if (res == S_OK && _autodetect_path(String(blender_opener_path).get_base_dir())) {
+ // Good.
+ } else if (_autodetect_path("C:\\Program Files\\Blender Foundation")) {
+ // Good.
+ } else {
+ _autodetect_path("C:\\Program Files (x86)\\Blender Foundation");
+ }
+ }
+
+#elif defined(UNIX_ENABLED)
+ if (_autodetect_path("/usr/bin")) {
+ // Good.
+ } else if (_autodetect_path("/usr/local/bin")) {
+ // Good
+ } else {
+ _autodetect_path("/opt/blender/bin");
+ }
+#endif
+ if (auto_detected_path != "") {
+ path = auto_detected_path;
+ }
+ }
+
+ blender_path->set_text(path);
+
+ _validate_path(path);
+
+ configure_blender_dialog->popup_centered();
+ confirmed = false;
+
+ while (true) {
+ OS::get_singleton()->delay_usec(1);
+ DisplayServer::get_singleton()->process_events();
+ Main::iteration();
+ if (!configure_blender_dialog->is_visible() || confirmed) {
+ break;
+ }
+ }
+
+ if (confirmed) {
+ // Can only confirm a valid path.
+ EditorSettings::get_singleton()->set("filesystem/import/blender/blender3_path", blender_path->get_text());
+ EditorSettings::get_singleton()->save();
+ } else {
+ // Disable Blender import
+ ProjectSettings::get_singleton()->set("filesystem/import/blender/enabled", false);
+ ProjectSettings::get_singleton()->save();
+
+ if (EditorNode::immediate_confirmation_dialog(TTR("Disabling '.blend' file import requires restarting the editor."), TTR("Save & Restart"), TTR("Restart"))) {
+ EditorNode::get_singleton()->save_all_scenes();
+ }
+ EditorNode::get_singleton()->restart_editor();
+ return true;
+ }
+
+ return false;
+}
+
+EditorFileSystemImportFormatSupportQueryBlend::EditorFileSystemImportFormatSupportQueryBlend() {
+}
+
+#endif // TOOLS_ENABLED
diff --git a/modules/gltf/editor/editor_scene_importer_blend.h b/modules/gltf/editor/editor_scene_importer_blend.h
new file mode 100644
index 0000000000..05e8a565f7
--- /dev/null
+++ b/modules/gltf/editor/editor_scene_importer_blend.h
@@ -0,0 +1,114 @@
+/*************************************************************************/
+/* editor_scene_importer_blend.h */
+/*************************************************************************/
+/* This file is part of: */
+/* GODOT ENGINE */
+/* https://godotengine.org */
+/*************************************************************************/
+/* Copyright (c) 2007-2022 Juan Linietsky, Ariel Manzur. */
+/* Copyright (c) 2014-2022 Godot Engine contributors (cf. AUTHORS.md). */
+/* */
+/* Permission is hereby granted, free of charge, to any person obtaining */
+/* a copy of this software and associated documentation files (the */
+/* "Software"), to deal in the Software without restriction, including */
+/* without limitation the rights to use, copy, modify, merge, publish, */
+/* distribute, sublicense, and/or sell copies of the Software, and to */
+/* permit persons to whom the Software is furnished to do so, subject to */
+/* the following conditions: */
+/* */
+/* The above copyright notice and this permission notice shall be */
+/* included in all copies or substantial portions of the Software. */
+/* */
+/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
+/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
+/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
+/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
+/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
+/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
+/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
+/*************************************************************************/
+
+#ifndef EDITOR_SCENE_IMPORTER_BLEND_H
+#define EDITOR_SCENE_IMPORTER_BLEND_H
+
+#ifdef TOOLS_ENABLED
+
+#include "editor/editor_file_system.h"
+#include "editor/import/resource_importer_scene.h"
+
+class Animation;
+class Node;
+class ConfirmationDialog;
+
+class EditorSceneFormatImporterBlend : public EditorSceneFormatImporter {
+ GDCLASS(EditorSceneFormatImporterBlend, EditorSceneFormatImporter);
+
+public:
+ enum {
+ BLEND_VISIBLE_VISIBLE_ONLY,
+ BLEND_VISIBLE_RENDERABLE,
+ BLEND_VISIBLE_ALL
+ };
+ enum {
+ BLEND_BONE_INFLUENCES_NONE,
+ BLEND_BONE_INFLUENCES_COMPATIBLE,
+ BLEND_BONE_INFLUENCES_ALL
+ };
+ enum {
+ BLEND_MATERIAL_EXPORT_PLACEHOLDER,
+ BLEND_MATERIAL_EXPORT_EXPORT
+ };
+ enum {
+ BLEND_MODIFIERS_NONE,
+ BLEND_MODIFIERS_ALL
+ };
+
+ virtual uint32_t get_import_flags() const override;
+ virtual void get_extensions(List<String> *r_extensions) const override;
+ virtual Node *import_scene(const String &p_path, uint32_t p_flags,
+ const Map<StringName, Variant> &p_options, int p_bake_fps,
+ List<String> *r_missing_deps, Error *r_err = nullptr) override;
+ virtual Ref<Animation> import_animation(const String &p_path, uint32_t p_flags,
+ const Map<StringName, Variant> &p_options, int p_bake_fps) override;
+ virtual void get_import_options(const String &p_path,
+ List<ResourceImporter::ImportOption> *r_options) override;
+ virtual Variant get_option_visibility(const String &p_path, const String &p_option,
+ const Map<StringName, Variant> &p_options) override;
+};
+
+class LineEdit;
+class Button;
+class EditorFileDialog;
+class Label;
+
+class EditorFileSystemImportFormatSupportQueryBlend : public EditorFileSystemImportFormatSupportQuery {
+ GDCLASS(EditorFileSystemImportFormatSupportQueryBlend, EditorFileSystemImportFormatSupportQuery);
+
+ ConfirmationDialog *configure_blender_dialog;
+ LineEdit *blender_path;
+ Button *blender_path_browse;
+ EditorFileDialog *browse_dialog;
+ Label *path_status;
+ bool confirmed = false;
+
+ String auto_detected_path;
+ void _validate_path(String p_path);
+
+ bool _autodetect_path(String p_path);
+
+ void _path_confirmed();
+
+ void _select_install(String p_path);
+ void _browse_install();
+
+public:
+ virtual bool is_active() const override;
+ virtual Vector<String> get_file_extensions() const override;
+ virtual bool query() override;
+
+ EditorFileSystemImportFormatSupportQueryBlend();
+};
+
+#endif // TOOLS_ENABLED
+
+#endif // EDITOR_SCENE_IMPORTER_BLEND_H
diff --git a/modules/gltf/editor/editor_scene_importer_fbx.cpp b/modules/gltf/editor/editor_scene_importer_fbx.cpp
new file mode 100644
index 0000000000..7cfd85c73a
--- /dev/null
+++ b/modules/gltf/editor/editor_scene_importer_fbx.cpp
@@ -0,0 +1,119 @@
+/*************************************************************************/
+/* editor_scene_importer_fbx.cpp */
+/*************************************************************************/
+/* This file is part of: */
+/* GODOT ENGINE */
+/* https://godotengine.org */
+/*************************************************************************/
+/* Copyright (c) 2007-2022 Juan Linietsky, Ariel Manzur. */
+/* Copyright (c) 2014-2022 Godot Engine contributors (cf. AUTHORS.md). */
+/* */
+/* Permission is hereby granted, free of charge, to any person obtaining */
+/* a copy of this software and associated documentation files (the */
+/* "Software"), to deal in the Software without restriction, including */
+/* without limitation the rights to use, copy, modify, merge, publish, */
+/* distribute, sublicense, and/or sell copies of the Software, and to */
+/* permit persons to whom the Software is furnished to do so, subject to */
+/* the following conditions: */
+/* */
+/* The above copyright notice and this permission notice shall be */
+/* included in all copies or substantial portions of the Software. */
+/* */
+/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
+/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
+/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
+/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
+/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
+/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
+/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
+/*************************************************************************/
+
+#include "editor_scene_importer_fbx.h"
+
+#if TOOLS_ENABLED
+
+#include "../gltf_document.h"
+#include "../gltf_state.h"
+
+#include "core/config/project_settings.h"
+#include "editor/editor_settings.h"
+#include "scene/main/node.h"
+#include "scene/resources/animation.h"
+
+uint32_t EditorSceneFormatImporterFBX::get_import_flags() const {
+ return ImportFlags::IMPORT_SCENE | ImportFlags::IMPORT_ANIMATION;
+}
+
+void EditorSceneFormatImporterFBX::get_extensions(List<String> *r_extensions) const {
+ r_extensions->push_back("fbx");
+}
+
+Node *EditorSceneFormatImporterFBX::import_scene(const String &p_path, uint32_t p_flags,
+ const Map<StringName, Variant> &p_options, int p_bake_fps,
+ List<String> *r_missing_deps, Error *r_err) {
+ // Get global paths for source and sink.
+
+ const String source_global = ProjectSettings::get_singleton()->globalize_path(p_path);
+ const String sink = ProjectSettings::get_singleton()->get_imported_files_path().plus_file(
+ vformat("%s-%s.glb", p_path.get_file().get_basename(), p_path.md5_text()));
+ const String sink_global = ProjectSettings::get_singleton()->globalize_path(sink);
+
+ // Run fbx2gltf.
+
+ String fbx2gltf_path = EDITOR_GET("filesystem/import/fbx/fbx2gltf_path");
+
+ List<String> args;
+ args.push_back("--pbr-metallic-roughness");
+ args.push_back("--input");
+ args.push_back(vformat("\"%s\"", source_global));
+ args.push_back("--output");
+ args.push_back(vformat("\"%s\"", sink_global));
+ args.push_back("--binary");
+
+ String standard_out;
+ int ret;
+ OS::get_singleton()->execute(fbx2gltf_path, args, &standard_out, &ret, true);
+ print_verbose(fbx2gltf_path);
+ print_verbose(standard_out);
+
+ if (ret != 0) {
+ if (r_err) {
+ *r_err = ERR_SCRIPT_FAILED;
+ }
+ ERR_PRINT(vformat("FBX conversion to glTF failed with error: %d.", ret));
+ return nullptr;
+ }
+
+ // Import the generated glTF.
+
+ // Use GLTFDocument instead of glTF importer to keep image references.
+ Ref<GLTFDocument> gltf;
+ gltf.instantiate();
+ Ref<GLTFState> state;
+ state.instantiate();
+ print_verbose(vformat("glTF path: %s", sink));
+ Error err = gltf->append_from_file(sink, state, p_flags, p_bake_fps);
+ if (err != OK) {
+ if (r_err) {
+ *r_err = FAILED;
+ }
+ return nullptr;
+ }
+ return gltf->generate_scene(state, p_bake_fps);
+}
+
+Ref<Animation> EditorSceneFormatImporterFBX::import_animation(const String &p_path,
+ uint32_t p_flags, const Map<StringName, Variant> &p_options, int p_bake_fps) {
+ return Ref<Animation>();
+}
+
+Variant EditorSceneFormatImporterFBX::get_option_visibility(const String &p_path,
+ const String &p_option, const Map<StringName, Variant> &p_options) {
+ return true;
+}
+
+void EditorSceneFormatImporterFBX::get_import_options(const String &p_path,
+ List<ResourceImporter::ImportOption> *r_options) {
+}
+
+#endif // TOOLS_ENABLED
diff --git a/modules/fbx/tools/validation_tools.cpp b/modules/gltf/editor/editor_scene_importer_fbx.h
index f775480e69..bb69cfaa30 100644
--- a/modules/fbx/tools/validation_tools.cpp
+++ b/modules/gltf/editor/editor_scene_importer_fbx.h
@@ -1,5 +1,5 @@
/*************************************************************************/
-/* validation_tools.cpp */
+/* editor_scene_importer_fbx.h */
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
@@ -28,21 +28,33 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
-#include "validation_tools.h"
+#ifndef EDITOR_SCENE_IMPORTER_FBX_H
+#define EDITOR_SCENE_IMPORTER_FBX_H
#ifdef TOOLS_ENABLED
-#include "core/string/print_string.h"
-#include "core/string/ustring.h"
+#include "editor/import/resource_importer_scene.h"
-ValidationTracker::Entries *ValidationTracker::entries_singleton = memnew(ValidationTracker::Entries);
+class Animation;
+class Node;
-// for printing our CSV to dump validation problems of files
-// later we can make some agnostic tooling for this but this is fine for the time being.
-void ValidationTracker::Entries::add_validation_error(String asset_path, String message) {
- print_error(message);
- // note: implementation is static
- validation_entries[asset_path].push_back(message);
-}
+class EditorSceneFormatImporterFBX : public EditorSceneFormatImporter {
+ GDCLASS(EditorSceneFormatImporterFBX, EditorSceneFormatImporter);
+
+public:
+ virtual uint32_t get_import_flags() const override;
+ virtual void get_extensions(List<String> *r_extensions) const override;
+ virtual Node *import_scene(const String &p_path, uint32_t p_flags,
+ const Map<StringName, Variant> &p_options, int p_bake_fps,
+ List<String> *r_missing_deps, Error *r_err = nullptr) override;
+ virtual Ref<Animation> import_animation(const String &p_path, uint32_t p_flags,
+ const Map<StringName, Variant> &p_options, int p_bake_fps) override;
+ virtual void get_import_options(const String &p_path,
+ List<ResourceImporter::ImportOption> *r_options) override;
+ virtual Variant get_option_visibility(const String &p_path, const String &p_option,
+ const Map<StringName, Variant> &p_options) override;
+};
#endif // TOOLS_ENABLED
+
+#endif // EDITOR_SCENE_IMPORTER_FBX_H
diff --git a/modules/gltf/editor_scene_importer_gltf.cpp b/modules/gltf/editor/editor_scene_importer_gltf.cpp
index f063cc1e2b..1d6a82e58a 100644
--- a/modules/gltf/editor_scene_importer_gltf.cpp
+++ b/modules/gltf/editor/editor_scene_importer_gltf.cpp
@@ -28,14 +28,14 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
-#if TOOLS_ENABLED
+#ifdef TOOLS_ENABLED
+
#include "editor_scene_importer_gltf.h"
-#include "gltf_document.h"
-#include "gltf_state.h"
+#include "../gltf_document.h"
+#include "../gltf_state.h"
-#include "scene/3d/node_3d.h"
-#include "scene/animation/animation_player.h"
+#include "scene/main/node.h"
#include "scene/resources/animation.h"
uint32_t EditorSceneFormatImporterGLTF::get_import_flags() const {
@@ -47,26 +47,25 @@ void EditorSceneFormatImporterGLTF::get_extensions(List<String> *r_extensions) c
r_extensions->push_back("glb");
}
-Node *EditorSceneFormatImporterGLTF::import_scene(const String &p_path,
- uint32_t p_flags, const Map<StringName, Variant> &p_options, int p_bake_fps,
- List<String> *r_missing_deps,
- Error *r_err) {
+Node *EditorSceneFormatImporterGLTF::import_scene(const String &p_path, uint32_t p_flags,
+ const Map<StringName, Variant> &p_options, int p_bake_fps,
+ List<String> *r_missing_deps, Error *r_err) {
Ref<GLTFDocument> doc;
doc.instantiate();
Ref<GLTFState> state;
state.instantiate();
Error err = doc->append_from_file(p_path, state, p_flags, p_bake_fps);
if (err != OK) {
- *r_err = err;
+ if (r_err) {
+ *r_err = err;
+ }
return nullptr;
}
- Node *root = doc->generate_scene(state, p_bake_fps);
- return root;
+ return doc->generate_scene(state, p_bake_fps);
}
Ref<Animation> EditorSceneFormatImporterGLTF::import_animation(const String &p_path,
- uint32_t p_flags, const Map<StringName, Variant> &p_options,
- int p_bake_fps) {
+ uint32_t p_flags, const Map<StringName, Variant> &p_options, int p_bake_fps) {
return Ref<Animation>();
}
diff --git a/modules/gltf/editor_scene_importer_gltf.h b/modules/gltf/editor/editor_scene_importer_gltf.h
index 4410559b3d..1f62ca9537 100644
--- a/modules/gltf/editor_scene_importer_gltf.h
+++ b/modules/gltf/editor/editor_scene_importer_gltf.h
@@ -30,16 +30,13 @@
#ifndef EDITOR_SCENE_IMPORTER_GLTF_H
#define EDITOR_SCENE_IMPORTER_GLTF_H
-#ifdef TOOLS_ENABLED
-#include "gltf_state.h"
-#include "gltf_document_extension.h"
+#ifdef TOOLS_ENABLED
#include "editor/import/resource_importer_scene.h"
-#include "scene/main/node.h"
-#include "scene/resources/packed_scene.h"
class Animation;
+class Node;
class EditorSceneFormatImporterGLTF : public EditorSceneFormatImporter {
GDCLASS(EditorSceneFormatImporterGLTF, EditorSceneFormatImporter);
@@ -47,9 +44,13 @@ class EditorSceneFormatImporterGLTF : public EditorSceneFormatImporter {
public:
virtual uint32_t get_import_flags() const override;
virtual void get_extensions(List<String> *r_extensions) const override;
- virtual Node *import_scene(const String &p_path, uint32_t p_flags, const Map<StringName, Variant> &p_options, int p_bake_fps, List<String> *r_missing_deps, Error *r_err = nullptr) override;
- virtual Ref<Animation> import_animation(const String &p_path,
- uint32_t p_flags, const Map<StringName, Variant> &p_options, int p_bake_fps) override;
+ virtual Node *import_scene(const String &p_path, uint32_t p_flags,
+ const Map<StringName, Variant> &p_options, int p_bake_fps,
+ List<String> *r_missing_deps, Error *r_err = nullptr) override;
+ virtual Ref<Animation> import_animation(const String &p_path, uint32_t p_flags,
+ const Map<StringName, Variant> &p_options, int p_bake_fps) override;
};
+
#endif // TOOLS_ENABLED
+
#endif // EDITOR_SCENE_IMPORTER_GLTF_H
diff --git a/modules/gltf/gltf_document.cpp b/modules/gltf/gltf_document.cpp
index c70081a620..ee756c6d2e 100644
--- a/modules/gltf/gltf_document.cpp
+++ b/modules/gltf/gltf_document.cpp
@@ -58,7 +58,6 @@
#include "core/variant/variant.h"
#include "core/version.h"
#include "drivers/png/png_driver_common.h"
-#include "editor/import/resource_importer_scene.h"
#include "scene/2d/node_2d.h"
#include "scene/3d/camera_3d.h"
#include "scene/3d/mesh_instance_3d.h"
@@ -79,6 +78,9 @@
#include "modules/gridmap/grid_map.h"
#endif // MODULE_GRIDMAP_ENABLED
+// FIXME: Hardcoded to avoid editor dependency.
+#define GLTF_IMPORT_USE_NAMED_SKIN_BINDS 16
+
#include <stdio.h>
#include <stdlib.h>
#include <cstdint>
@@ -2907,6 +2909,13 @@ Error GLTFDocument::_parse_meshes(Ref<GLTFState> state) {
}
array_copy = blend_surface_tool->commit_to_arrays();
+ // Enforce blend shape mask array format
+ for (int l = 0; l < Mesh::ARRAY_MAX; l++) {
+ if (!(Mesh::ARRAY_FORMAT_BLEND_SHAPE_MASK & (1 << l))) {
+ array_copy[l] = Variant();
+ }
+ }
+
morphs.push_back(array_copy);
}
}
@@ -5741,7 +5750,7 @@ void GLTFDocument::_generate_skeleton_bone_node(Ref<GLTFState> state, Node *scen
}
template <class T>
-struct EditorSceneFormatImporterGLTFInterpolate {
+struct SceneFormatImporterGLTFInterpolate {
T lerp(const T &a, const T &b, float c) const {
return a + (b - a) * c;
}
@@ -5767,7 +5776,7 @@ struct EditorSceneFormatImporterGLTFInterpolate {
// thank you for existing, partial specialization
template <>
-struct EditorSceneFormatImporterGLTFInterpolate<Quaternion> {
+struct SceneFormatImporterGLTFInterpolate<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.");
@@ -5806,7 +5815,7 @@ T GLTFDocument::_interpolate_track(const Vector<real_t> &p_times, const Vector<T
idx++;
}
- EditorSceneFormatImporterGLTFInterpolate<T> interp;
+ SceneFormatImporterGLTFInterpolate<T> interp;
switch (p_interp) {
case GLTFAnimation::INTERP_LINEAR: {
@@ -6749,8 +6758,8 @@ Error GLTFDocument::_serialize_file(Ref<GLTFState> state, const String p_path) {
}
void GLTFDocument::_bind_methods() {
- ClassDB::bind_method(D_METHOD("append_from_file", "path", "state", "flags", "bake_fps"),
- &GLTFDocument::append_from_file, DEFVAL(0), DEFVAL(30));
+ ClassDB::bind_method(D_METHOD("append_from_file", "path", "state", "flags", "bake_fps", "base_path"),
+ &GLTFDocument::append_from_file, DEFVAL(0), DEFVAL(30), DEFVAL(String()));
ClassDB::bind_method(D_METHOD("append_from_buffer", "bytes", "base_path", "state", "flags", "bake_fps"),
&GLTFDocument::append_from_buffer, DEFVAL(0), DEFVAL(30));
ClassDB::bind_method(D_METHOD("append_from_scene", "node", "state", "flags", "bake_fps"),
@@ -6899,7 +6908,7 @@ Node *GLTFDocument::generate_scene(Ref<GLTFState> state, int32_t p_bake_fps) {
Error GLTFDocument::append_from_scene(Node *p_node, Ref<GLTFState> state, uint32_t p_flags, int32_t p_bake_fps) {
ERR_FAIL_COND_V(state.is_null(), FAILED);
state->use_named_skin_binds =
- p_flags & EditorSceneFormatImporter::IMPORT_USE_NAMED_SKIN_BINDS;
+ p_flags & GLTF_IMPORT_USE_NAMED_SKIN_BINDS;
_convert_scene_node(state, p_node, -1, -1);
if (!state->buffers.size()) {
@@ -6919,7 +6928,7 @@ Error GLTFDocument::append_from_buffer(PackedByteArray p_bytes, String p_base_pa
// TODO Add missing texture and missing .bin file paths to r_missing_deps 2021-09-10 fire
Error err = FAILED;
state->use_named_skin_binds =
- p_flags & EditorSceneFormatImporter::IMPORT_USE_NAMED_SKIN_BINDS;
+ p_flags & GLTF_IMPORT_USE_NAMED_SKIN_BINDS;
FileAccessMemory *file_access = memnew(FileAccessMemory);
file_access->open_custom(p_bytes.ptr(), p_bytes.size());
err = _parse(state, p_base_path.get_base_dir(), file_access, p_bake_fps);
@@ -7015,20 +7024,22 @@ Error GLTFDocument::_parse_gltf_state(Ref<GLTFState> state, const String &p_sear
return OK;
}
-Error GLTFDocument::append_from_file(String p_path, Ref<GLTFState> r_state, uint32_t p_flags, int32_t p_bake_fps) {
+Error GLTFDocument::append_from_file(String p_path, Ref<GLTFState> r_state, uint32_t p_flags, int32_t p_bake_fps, String p_base_path) {
// TODO Add missing texture and missing .bin file paths to r_missing_deps 2021-09-10 fire
if (r_state == Ref<GLTFState>()) {
r_state.instantiate();
}
r_state->filename = p_path.get_file().get_basename();
- r_state->use_named_skin_binds =
- p_flags & EditorSceneFormatImporter::IMPORT_USE_NAMED_SKIN_BINDS;
+ r_state->use_named_skin_binds = p_flags & GLTF_IMPORT_USE_NAMED_SKIN_BINDS;
Error err;
FileAccess *f = FileAccess::open(p_path, FileAccess::READ, &err);
ERR_FAIL_COND_V(err != OK, ERR_FILE_CANT_OPEN);
ERR_FAIL_NULL_V(f, ERR_FILE_CANT_OPEN);
-
- err = _parse(r_state, p_path.get_base_dir(), f, p_bake_fps);
+ String base_path = p_base_path;
+ if (base_path.is_empty()) {
+ base_path = p_path.get_base_dir();
+ }
+ err = _parse(r_state, base_path, f, p_bake_fps);
ERR_FAIL_COND_V(err != OK, ERR_PARSE_ERROR);
return err;
}
diff --git a/modules/gltf/gltf_document.h b/modules/gltf/gltf_document.h
index c0649e0129..0b7664a616 100644
--- a/modules/gltf/gltf_document.h
+++ b/modules/gltf/gltf_document.h
@@ -381,7 +381,7 @@ private:
static float get_max_component(const Color &p_color);
public:
- Error append_from_file(String p_path, Ref<GLTFState> r_state, uint32_t p_flags = 0, int32_t p_bake_fps = 30);
+ Error append_from_file(String p_path, Ref<GLTFState> r_state, uint32_t p_flags = 0, int32_t p_bake_fps = 30, String p_base_path = String());
Error append_from_buffer(PackedByteArray p_bytes, String p_base_path, Ref<GLTFState> r_state, uint32_t p_flags = 0, int32_t p_bake_fps = 30);
Error append_from_scene(Node *p_node, Ref<GLTFState> r_state, uint32_t p_flags = 0, int32_t p_bake_fps = 30);
diff --git a/modules/gltf/gltf_mesh.cpp b/modules/gltf/gltf_mesh.cpp
index 1251622642..3add8304b1 100644
--- a/modules/gltf/gltf_mesh.cpp
+++ b/modules/gltf/gltf_mesh.cpp
@@ -29,6 +29,7 @@
/*************************************************************************/
#include "gltf_mesh.h"
+
#include "scene/resources/importer_mesh.h"
void GLTFMesh::_bind_methods() {
diff --git a/modules/gltf/gltf_mesh.h b/modules/gltf/gltf_mesh.h
index aeab1ad68f..dc26120b48 100644
--- a/modules/gltf/gltf_mesh.h
+++ b/modules/gltf/gltf_mesh.h
@@ -32,7 +32,6 @@
#define GLTF_MESH_H
#include "core/io/resource.h"
-#include "editor/import/resource_importer_scene.h"
#include "scene/3d/importer_mesh_instance_3d.h"
#include "scene/resources/importer_mesh.h"
#include "scene/resources/mesh.h"
@@ -56,4 +55,5 @@ public:
Array get_instance_materials();
void set_instance_materials(Array p_instance_materials);
};
+
#endif // GLTF_MESH_H
diff --git a/modules/gltf/register_types.cpp b/modules/gltf/register_types.cpp
index 6ab202096d..4166f92502 100644
--- a/modules/gltf/register_types.cpp
+++ b/modules/gltf/register_types.cpp
@@ -30,9 +30,8 @@
#include "register_types.h"
-#include "editor/editor_node.h"
-#include "editor_scene_exporter_gltf_plugin.h"
-#include "editor_scene_importer_gltf.h"
+#ifndef _3D_DISABLED
+
#include "gltf_accessor.h"
#include "gltf_animation.h"
#include "gltf_buffer_view.h"
@@ -49,43 +48,98 @@
#include "gltf_state.h"
#include "gltf_texture.h"
-#ifndef _3D_DISABLED
#ifdef TOOLS_ENABLED
+#include "core/config/project_settings.h"
+#include "editor/editor_node.h"
+#include "editor/editor_scene_exporter_gltf_plugin.h"
+#include "editor/editor_scene_importer_blend.h"
+#include "editor/editor_scene_importer_fbx.h"
+#include "editor/editor_scene_importer_gltf.h"
+#include "editor/editor_settings.h"
+
static void _editor_init() {
Ref<EditorSceneFormatImporterGLTF> import_gltf;
import_gltf.instantiate();
ResourceImporterScene::get_singleton()->add_importer(import_gltf);
+
+ // Blend to glTF importer.
+
+ bool blend_enabled = GLOBAL_GET("filesystem/import/blender/enabled");
+ // Defined here because EditorSettings doesn't exist in `register_gltf_types` yet.
+ EDITOR_DEF_RST("filesystem/import/blender/blender3_path", "");
+ EditorSettings::get_singleton()->add_property_hint(PropertyInfo(Variant::STRING,
+ "filesystem/import/blender/blender3_path", PROPERTY_HINT_GLOBAL_DIR));
+ if (blend_enabled) {
+ Ref<EditorSceneFormatImporterBlend> importer;
+ importer.instantiate();
+ ResourceImporterScene::get_singleton()->add_importer(importer);
+
+ Ref<EditorFileSystemImportFormatSupportQueryBlend> blend_import_query;
+ blend_import_query.instantiate();
+ EditorFileSystem::get_singleton()->add_import_format_support_query(blend_import_query);
+ }
+
+ // FBX to glTF importer.
+
+ bool fbx_enabled = GLOBAL_GET("filesystem/import/fbx/enabled");
+ // Defined here because EditorSettings doesn't exist in `register_gltf_types` yet.
+ String fbx2gltf_path = EDITOR_DEF_RST("filesystem/import/fbx/fbx2gltf_path", "");
+ EditorSettings::get_singleton()->add_property_hint(PropertyInfo(Variant::STRING,
+ "filesystem/import/fbx/fbx2gltf_path", PROPERTY_HINT_GLOBAL_FILE));
+ if (fbx_enabled) {
+ DirAccessRef da = DirAccess::create(DirAccess::ACCESS_FILESYSTEM);
+ if (fbx2gltf_path.is_empty()) {
+ WARN_PRINT("FBX file import is enabled, but no FBX2glTF path is configured. FBX files will not be imported.");
+ } else if (!da->file_exists(fbx2gltf_path)) {
+ WARN_PRINT("FBX file import is enabled, but the FBX2glTF path doesn't point to a valid FBX2glTF executable. FBX files will not be imported.");
+ } else {
+ Ref<EditorSceneFormatImporterFBX> importer;
+ importer.instantiate();
+ ResourceImporterScene::get_singleton()->add_importer(importer);
+ }
+ }
}
-#endif
-#endif
+#endif // TOOLS_ENABLED
void register_gltf_types() {
-#ifndef _3D_DISABLED
+ // glTF API available at runtime.
+ GDREGISTER_CLASS(GLTFAccessor);
+ GDREGISTER_CLASS(GLTFAnimation);
+ GDREGISTER_CLASS(GLTFBufferView);
+ GDREGISTER_CLASS(GLTFCamera);
+ GDREGISTER_CLASS(GLTFDocument);
+ GDREGISTER_CLASS(GLTFDocumentExtension);
+ GDREGISTER_CLASS(GLTFDocumentExtensionConvertImporterMesh);
+ GDREGISTER_CLASS(GLTFLight);
+ GDREGISTER_CLASS(GLTFMesh);
+ GDREGISTER_CLASS(GLTFNode);
+ GDREGISTER_CLASS(GLTFSkeleton);
+ GDREGISTER_CLASS(GLTFSkin);
+ GDREGISTER_CLASS(GLTFSpecGloss);
+ GDREGISTER_CLASS(GLTFState);
+ GDREGISTER_CLASS(GLTFTexture);
+
#ifdef TOOLS_ENABLED
+ // Editor-specific API.
ClassDB::APIType prev_api = ClassDB::get_current_api();
ClassDB::set_current_api(ClassDB::API_EDITOR);
+
GDREGISTER_CLASS(EditorSceneFormatImporterGLTF);
- GDREGISTER_CLASS(GLTFMesh);
EditorPlugins::add_by_type<SceneExporterGLTFPlugin>();
+
+ // Project settings defined here so doctool finds them.
+ GLOBAL_DEF_RST("filesystem/import/blender/enabled", true);
+ GLOBAL_DEF_RST("filesystem/import/fbx/enabled", true);
+ GDREGISTER_CLASS(EditorSceneFormatImporterBlend);
+ GDREGISTER_CLASS(EditorSceneFormatImporterFBX);
+
ClassDB::set_current_api(prev_api);
EditorNode::add_init_callback(_editor_init);
-#endif
- GDREGISTER_CLASS(GLTFSpecGloss);
- GDREGISTER_CLASS(GLTFNode);
- GDREGISTER_CLASS(GLTFAnimation);
- GDREGISTER_CLASS(GLTFBufferView);
- GDREGISTER_CLASS(GLTFAccessor);
- GDREGISTER_CLASS(GLTFTexture);
- GDREGISTER_CLASS(GLTFSkeleton);
- GDREGISTER_CLASS(GLTFSkin);
- GDREGISTER_CLASS(GLTFCamera);
- GDREGISTER_CLASS(GLTFLight);
- GDREGISTER_CLASS(GLTFState);
- GDREGISTER_CLASS(GLTFDocumentExtensionConvertImporterMesh);
- GDREGISTER_CLASS(GLTFDocumentExtension);
- GDREGISTER_CLASS(GLTFDocument);
-#endif
+
+#endif // TOOLS_ENABLED
}
void unregister_gltf_types() {
}
+
+#endif // _3D_DISABLED
diff --git a/modules/gridmap/SCsub b/modules/gridmap/SCsub
index 970ce534f0..52777235b8 100644
--- a/modules/gridmap/SCsub
+++ b/modules/gridmap/SCsub
@@ -5,4 +5,7 @@ Import("env_modules")
env_gridmap = env_modules.Clone()
+# Godot's own source files
env_gridmap.add_source_files(env.modules_sources, "*.cpp")
+if env["tools"]:
+ env_gridmap.add_source_files(env.modules_sources, "editor/*.cpp")
diff --git a/modules/gridmap/grid_map_editor_plugin.cpp b/modules/gridmap/editor/grid_map_editor_plugin.cpp
index e8e096d52b..68968325dd 100644
--- a/modules/gridmap/grid_map_editor_plugin.cpp
+++ b/modules/gridmap/editor/grid_map_editor_plugin.cpp
@@ -29,14 +29,16 @@
/*************************************************************************/
#include "grid_map_editor_plugin.h"
+
+#ifdef TOOLS_ENABLED
+
#include "core/input/input.h"
+#include "core/os/keyboard.h"
#include "editor/editor_node.h"
#include "editor/editor_scale.h"
#include "editor/editor_settings.h"
#include "editor/plugins/node_3d_editor_plugin.h"
#include "scene/3d/camera_3d.h"
-
-#include "core/os/keyboard.h"
#include "scene/main/window.h"
void GridMapEditor::_node_removed(Node *p_node) {
@@ -1479,3 +1481,5 @@ GridMapEditorPlugin::GridMapEditorPlugin() {
GridMapEditorPlugin::~GridMapEditorPlugin() {
}
+
+#endif // TOOLS_ENABLED
diff --git a/modules/gridmap/grid_map_editor_plugin.h b/modules/gridmap/editor/grid_map_editor_plugin.h
index c44c4ca7e0..adb0da6e2c 100644
--- a/modules/gridmap/grid_map_editor_plugin.h
+++ b/modules/gridmap/editor/grid_map_editor_plugin.h
@@ -31,8 +31,10 @@
#ifndef GRID_MAP_EDITOR_PLUGIN_H
#define GRID_MAP_EDITOR_PLUGIN_H
+#ifdef TOOLS_ENABLED
+
+#include "../grid_map.h"
#include "editor/editor_plugin.h"
-#include "grid_map.h"
#include "scene/gui/item_list.h"
#include "scene/gui/slider.h"
#include "scene/gui/spin_box.h"
@@ -249,4 +251,6 @@ public:
~GridMapEditorPlugin();
};
-#endif // CUBE_GRID_MAP_EDITOR_PLUGIN_H
+#endif // TOOLS_ENABLED
+
+#endif // GRID_MAP_EDITOR_PLUGIN_H
diff --git a/modules/gridmap/register_types.cpp b/modules/gridmap/register_types.cpp
index f05c5de18b..d7c9f5c92e 100644
--- a/modules/gridmap/register_types.cpp
+++ b/modules/gridmap/register_types.cpp
@@ -28,21 +28,25 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
-#include "register_types.h"
#ifndef _3D_DISABLED
+
+#include "register_types.h"
+
#include "core/object/class_db.h"
#include "grid_map.h"
-#include "grid_map_editor_plugin.h"
+
+#ifdef TOOLS_ENABLED
+#include "editor/grid_map_editor_plugin.h"
#endif
void register_gridmap_types() {
-#ifndef _3D_DISABLED
GDREGISTER_CLASS(GridMap);
#ifdef TOOLS_ENABLED
EditorPlugins::add_by_type<GridMapEditorPlugin>();
#endif
-#endif
}
void unregister_gridmap_types() {
}
+
+#endif // _3D_DISABLED
diff --git a/modules/lightmapper_rd/lightmapper_rd.cpp b/modules/lightmapper_rd/lightmapper_rd.cpp
index 68b3a41b9a..faa1d21490 100644
--- a/modules/lightmapper_rd/lightmapper_rd.cpp
+++ b/modules/lightmapper_rd/lightmapper_rd.cpp
@@ -29,6 +29,7 @@
/*************************************************************************/
#include "lightmapper_rd.h"
+
#include "core/config/project_settings.h"
#include "core/math/geometry_2d.h"
#include "lm_blendseams.glsl.gen.h"
@@ -174,7 +175,7 @@ Lightmapper::BakeError LightmapperRD::_blit_meshes_into_atlas(int p_max_texture_
}
if (p_step_function) {
- p_step_function(0.1, TTR("Determining optimal atlas size"), p_bake_userdata, true);
+ p_step_function(0.1, RTR("Determining optimal atlas size"), p_bake_userdata, true);
}
atlas_size = Size2i(max, max);
@@ -243,7 +244,7 @@ Lightmapper::BakeError LightmapperRD::_blit_meshes_into_atlas(int p_max_texture_
emission_images.resize(atlas_slices);
if (p_step_function) {
- p_step_function(0.2, TTR("Blitting albedo and emission"), p_bake_userdata, true);
+ p_step_function(0.2, RTR("Blitting albedo and emission"), p_bake_userdata, true);
}
for (int i = 0; i < atlas_slices; i++) {
@@ -295,7 +296,7 @@ void LightmapperRD::_create_acceleration_structures(RenderingDevice *rd, Size2i
for (int m_i = 0; m_i < mesh_instances.size(); m_i++) {
if (p_step_function) {
float p = float(m_i + 1) / mesh_instances.size() * 0.1;
- p_step_function(0.3 + p, vformat(TTR("Plotting mesh into acceleration structure %d/%d"), m_i + 1, mesh_instances.size()), p_bake_userdata, false);
+ p_step_function(0.3 + p, vformat(RTR("Plotting mesh into acceleration structure %d/%d"), m_i + 1, mesh_instances.size()), p_bake_userdata, false);
}
HashMap<Edge, EdgeUV2, EdgeHash> edges;
@@ -409,7 +410,7 @@ void LightmapperRD::_create_acceleration_structures(RenderingDevice *rd, Size2i
seams.sort();
if (p_step_function) {
- p_step_function(0.4, TTR("Optimizing acceleration structure"), p_bake_userdata, true);
+ p_step_function(0.4, RTR("Optimizing acceleration structure"), p_bake_userdata, true);
}
//fill list of triangles in grid
@@ -668,7 +669,7 @@ LightmapperRD::BakeError LightmapperRD::_dilate(RenderingDevice *rd, Ref<RDShade
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);
+ p_step_function(0.0, RTR("Begin Bake"), p_bake_userdata, true);
}
bake_textures.clear();
int grid_size = 128;
@@ -819,7 +820,7 @@ LightmapperRD::BakeError LightmapperRD::bake(BakeQuality p_quality, bool p_use_d
_create_acceleration_structures(rd, atlas_size, atlas_slices, bounds, grid_size, probe_positions, p_generate_probes, slice_triangle_count, slice_seam_count, vertex_buffer, triangle_buffer, lights_buffer, triangle_cell_indices_buffer, probe_positions_buffer, grid_texture, seams_buffer, p_step_function, p_bake_userdata);
if (p_step_function) {
- p_step_function(0.47, TTR("Preparing shaders"), p_bake_userdata, true);
+ p_step_function(0.47, RTR("Preparing shaders"), p_bake_userdata, true);
}
//shaders
@@ -1046,7 +1047,7 @@ LightmapperRD::BakeError LightmapperRD::bake(BakeQuality p_quality, bool p_use_d
rd->sync();
if (p_step_function) {
- p_step_function(0.49, TTR("Un-occluding geometry"), p_bake_userdata, true);
+ p_step_function(0.49, RTR("Un-occluding geometry"), p_bake_userdata, true);
}
/* UNOCCLUDE */
@@ -1086,7 +1087,7 @@ LightmapperRD::BakeError LightmapperRD::bake(BakeQuality p_quality, bool p_use_d
}
if (p_step_function) {
- p_step_function(0.5, TTR("Plot direct lighting"), p_bake_userdata, true);
+ p_step_function(0.5, RTR("Plot direct lighting"), p_bake_userdata, true);
}
/* PRIMARY (direct) LIGHT PASS */
@@ -1166,7 +1167,7 @@ LightmapperRD::BakeError LightmapperRD::bake(BakeQuality p_quality, bool p_use_d
/* SECONDARY (indirect) LIGHT PASS(ES) */
if (p_step_function) {
- p_step_function(0.6, TTR("Integrate indirect lighting"), p_bake_userdata, true);
+ p_step_function(0.6, RTR("Integrate indirect lighting"), p_bake_userdata, true);
}
if (p_bounces > 0) {
@@ -1298,7 +1299,7 @@ LightmapperRD::BakeError LightmapperRD::bake(BakeQuality p_quality, bool p_use_d
int total = (atlas_slices * x_regions * y_regions * ray_iterations);
int percent = count * 100 / total;
float p = float(count) / total * 0.1;
- p_step_function(0.6 + p, vformat(TTR("Bounce %d/%d: Integrate indirect lighting %d%%"), b + 1, p_bounces, percent), p_bake_userdata, false);
+ p_step_function(0.6 + p, vformat(RTR("Bounce %d/%d: Integrate indirect lighting %d%%"), b + 1, p_bounces, percent), p_bake_userdata, false);
}
}
}
@@ -1323,7 +1324,7 @@ LightmapperRD::BakeError LightmapperRD::bake(BakeQuality p_quality, bool p_use_d
light_probe_buffer = rd->storage_buffer_create(sizeof(float) * 4 * 9 * probe_positions.size());
if (p_step_function) {
- p_step_function(0.7, TTR("Baking lightprobes"), p_bake_userdata, true);
+ p_step_function(0.7, RTR("Baking lightprobes"), p_bake_userdata, true);
}
Vector<RD::Uniform> uniforms;
@@ -1398,7 +1399,7 @@ LightmapperRD::BakeError LightmapperRD::bake(BakeQuality p_quality, bool p_use_d
if (p_step_function) {
int percent = i * 100 / ray_iterations;
float p = float(i) / ray_iterations * 0.1;
- p_step_function(0.7 + p, vformat(TTR("Integrating light probes %d%%"), percent), p_bake_userdata, false);
+ p_step_function(0.7 + p, vformat(RTR("Integrating light probes %d%%"), percent), p_bake_userdata, false);
}
}
@@ -1434,7 +1435,7 @@ LightmapperRD::BakeError LightmapperRD::bake(BakeQuality p_quality, bool p_use_d
if (p_use_denoiser) {
if (p_step_function) {
- p_step_function(0.8, TTR("Denoising"), p_bake_userdata, true);
+ p_step_function(0.8, RTR("Denoising"), p_bake_userdata, true);
}
Ref<LightmapDenoiser> denoiser = LightmapDenoiser::create();
@@ -1639,7 +1640,7 @@ LightmapperRD::BakeError LightmapperRD::bake(BakeQuality p_quality, bool p_use_d
}
#endif
if (p_step_function) {
- p_step_function(0.9, TTR("Retrieving textures"), p_bake_userdata, true);
+ p_step_function(0.9, RTR("Retrieving textures"), p_bake_userdata, true);
}
for (int i = 0; i < atlas_slices * (p_bake_sh ? 4 : 1); i++) {
diff --git a/modules/mono/SCsub b/modules/mono/SCsub
index db35e804aa..3bafa351a9 100644
--- a/modules/mono/SCsub
+++ b/modules/mono/SCsub
@@ -63,5 +63,4 @@ elif env["platform"] == "android":
if env["tools"]:
env_mono.add_source_files(env.modules_sources, "editor/*.cpp")
-
-SConscript("editor_templates/SCsub")
+ SConscript("editor/script_templates/SCsub")
diff --git a/modules/mono/csharp_script.cpp b/modules/mono/csharp_script.cpp
index 7ed0422236..8acd119880 100644
--- a/modules/mono/csharp_script.cpp
+++ b/modules/mono/csharp_script.cpp
@@ -45,17 +45,17 @@
#ifdef TOOLS_ENABLED
#include "core/os/keyboard.h"
#include "editor/bindings_generator.h"
+#include "editor/editor_internal_calls.h"
#include "editor/editor_node.h"
#include "editor/editor_settings.h"
#include "editor/node_dock.h"
+#include "editor/script_templates/templates.gen.h"
#endif
#ifdef DEBUG_METHODS_ENABLED
#include "class_db_api_json.h"
#endif
-#include "editor/editor_internal_calls.h"
-#include "editor_templates/templates.gen.h"
#include "godotsharp_dirs.h"
#include "mono_gd/gd_mono_cache.h"
#include "mono_gd/gd_mono_class.h"
@@ -373,11 +373,13 @@ Ref<Script> CSharpLanguage::make_template(const String &p_template, const String
Vector<ScriptLanguage::ScriptTemplate> CSharpLanguage::get_built_in_templates(StringName p_object) {
Vector<ScriptLanguage::ScriptTemplate> templates;
+#ifdef TOOLS_ENABLED
for (int i = 0; i < TEMPLATES_ARRAY_SIZE; i++) {
if (TEMPLATES[i].inherit == p_object) {
templates.append(TEMPLATES[i]);
}
}
+#endif
return templates;
}
@@ -386,7 +388,7 @@ String CSharpLanguage::validate_path(const String &p_path) const {
List<String> keywords;
get_reserved_words(&keywords);
if (keywords.find(class_name)) {
- return TTR("Class name can't be a reserved keyword");
+ return RTR("Class name can't be a reserved keyword");
}
return "";
}
diff --git a/modules/mono/csharp_script.h b/modules/mono/csharp_script.h
index 3b97d2acc4..1e5f218c95 100644
--- a/modules/mono/csharp_script.h
+++ b/modules/mono/csharp_script.h
@@ -202,9 +202,9 @@ public:
void set_source_code(const String &p_code) override;
#ifdef TOOLS_ENABLED
- virtual const Vector<DocData::ClassDoc> &get_documentation() const override {
+ virtual Vector<DocData::ClassDoc> get_documentation() const override {
// TODO
- static Vector<DocData::ClassDoc> docs;
+ Vector<DocData::ClassDoc> docs;
return docs;
}
#endif // TOOLS_ENABLED
diff --git a/modules/mono/editor/bindings_generator.cpp b/modules/mono/editor/bindings_generator.cpp
index eea7ed89cc..d8f5b814e4 100644
--- a/modules/mono/editor/bindings_generator.cpp
+++ b/modules/mono/editor/bindings_generator.cpp
@@ -802,10 +802,13 @@ void BindingsGenerator::_generate_method_icalls(const TypeInterface &p_itype) {
const TypeInterface *return_type = _get_type_or_placeholder(imethod.return_type);
- String im_sig = "IntPtr " CS_PARAM_METHODBIND ", ";
- String im_unique_sig = imethod.return_type.cname.operator String() + ",IntPtr,IntPtr";
+ String im_sig = "IntPtr " CS_PARAM_METHODBIND;
+ String im_unique_sig = imethod.return_type.cname.operator String() + ",IntPtr";
- im_sig += "IntPtr " CS_PARAM_INSTANCE;
+ if (!imethod.is_static) {
+ im_sig += ", IntPtr " CS_PARAM_INSTANCE;
+ im_unique_sig += ",IntPtr";
+ }
// Get arguments information
int i = 0;
@@ -1733,8 +1736,10 @@ Error BindingsGenerator::_generate_cs_method(const BindingsGenerator::TypeInterf
String arguments_sig;
String cs_in_statements;
- String icall_params = method_bind_field + ", ";
- icall_params += sformat(p_itype.cs_in, "this");
+ String icall_params = method_bind_field;
+ if (!p_imethod.is_static) {
+ icall_params += ", " + sformat(p_itype.cs_in, "this");
+ }
StringBuilder default_args_doc;
@@ -1892,7 +1897,7 @@ Error BindingsGenerator::_generate_cs_method(const BindingsGenerator::TypeInterf
p_output.append(MEMBER_BEGIN);
p_output.append(p_imethod.is_internal ? "internal " : "public ");
- if (p_itype.is_singleton) {
+ if (p_itype.is_singleton || p_imethod.is_static) {
p_output.append("static ");
} else if (p_imethod.is_virtual) {
p_output.append("virtual ");
@@ -2271,7 +2276,10 @@ Error BindingsGenerator::_generate_glue_method(const BindingsGenerator::TypeInte
String argc_str = itos(p_imethod.arguments.size());
- String c_func_sig = "MethodBind* " CS_PARAM_METHODBIND ", " + p_itype.c_type_in + " " CS_PARAM_INSTANCE;
+ String c_func_sig = "MethodBind* " CS_PARAM_METHODBIND;
+ if (!p_imethod.is_static) {
+ c_func_sig += ", " + p_itype.c_type_in + " " CS_PARAM_INSTANCE;
+ }
String c_in_statements;
String c_args_var_content;
@@ -2363,17 +2371,21 @@ Error BindingsGenerator::_generate_glue_method(const BindingsGenerator::TypeInte
String fail_ret = return_type->c_type_out.ends_with("*") && !return_type->ret_as_byref_arg ? "nullptr" : return_type->c_type_out + "()";
- if (return_type->ret_as_byref_arg) {
- p_output.append("\tif (" CS_PARAM_INSTANCE " == nullptr) { *arg_ret = ");
- p_output.append(fail_ret);
- p_output.append("; ERR_FAIL_MSG(\"Parameter ' " CS_PARAM_INSTANCE " ' is null.\"); }\n");
- } else {
- p_output.append("\tERR_FAIL_NULL_V(" CS_PARAM_INSTANCE ", ");
- p_output.append(fail_ret);
- p_output.append(");\n");
+ if (!p_imethod.is_static) {
+ if (return_type->ret_as_byref_arg) {
+ p_output.append("\tif (" CS_PARAM_INSTANCE " == nullptr) { *arg_ret = ");
+ p_output.append(fail_ret);
+ p_output.append("; ERR_FAIL_MSG(\"Parameter ' " CS_PARAM_INSTANCE " ' is null.\"); }\n");
+ } else {
+ p_output.append("\tERR_FAIL_NULL_V(" CS_PARAM_INSTANCE ", ");
+ p_output.append(fail_ret);
+ p_output.append(");\n");
+ }
}
} else {
- p_output.append("\tERR_FAIL_NULL(" CS_PARAM_INSTANCE ");\n");
+ if (!p_imethod.is_static) {
+ p_output.append("\tERR_FAIL_NULL(" CS_PARAM_INSTANCE ");\n");
+ }
}
if (p_imethod.arguments.size()) {
@@ -2417,7 +2429,9 @@ Error BindingsGenerator::_generate_glue_method(const BindingsGenerator::TypeInte
}
}
- p_output.append(CS_PARAM_METHODBIND "->call(" CS_PARAM_INSTANCE ", ");
+ p_output.append(CS_PARAM_METHODBIND "->call(");
+ p_output.append(p_imethod.is_static ? "nullptr" : CS_PARAM_INSTANCE);
+ p_output.append(", ");
p_output.append(p_imethod.arguments.size() ? C_LOCAL_PTRCALL_ARGS ".ptr()" : "nullptr");
p_output.append(", total_length, vcall_error);\n");
@@ -2428,7 +2442,9 @@ Error BindingsGenerator::_generate_glue_method(const BindingsGenerator::TypeInte
}
}
} else {
- p_output.append("\t" CS_PARAM_METHODBIND "->ptrcall(" CS_PARAM_INSTANCE ", ");
+ p_output.append("\t" CS_PARAM_METHODBIND "->ptrcall(");
+ p_output.append(p_imethod.is_static ? "nullptr" : CS_PARAM_INSTANCE);
+ p_output.append(", ");
p_output.append(p_imethod.arguments.size() ? C_LOCAL_PTRCALL_ARGS ", " : "nullptr, ");
p_output.append(!ret_void ? "&" C_LOCAL_RET ");\n" : "nullptr);\n");
}
@@ -2772,6 +2788,10 @@ bool BindingsGenerator::_populate_object_type_interfaces() {
imethod.name = method_info.name;
imethod.cname = cname;
+ if (method_info.flags & METHOD_FLAG_STATIC) {
+ imethod.is_static = true;
+ }
+
if (method_info.flags & METHOD_FLAG_VIRTUAL) {
imethod.is_virtual = true;
}
diff --git a/modules/mono/editor/bindings_generator.h b/modules/mono/editor/bindings_generator.h
index f601ffde2b..dec4fae8cd 100644
--- a/modules/mono/editor/bindings_generator.h
+++ b/modules/mono/editor/bindings_generator.h
@@ -137,6 +137,11 @@ class BindingsGenerator {
bool is_vararg = false;
/**
+ * Determines if the method is static.
+ */
+ bool is_static = false;
+
+ /**
* Virtual methods ("virtual" as defined by the Godot API) are methods that by default do nothing,
* but can be overridden by the user to add custom functionality.
* e.g.: _ready, _process, etc.
diff --git a/modules/mono/editor_templates/CharacterBody2D/basic_movement.cs b/modules/mono/editor/script_templates/CharacterBody2D/basic_movement.cs
index 2ca81ab7cd..2ca81ab7cd 100644
--- a/modules/mono/editor_templates/CharacterBody2D/basic_movement.cs
+++ b/modules/mono/editor/script_templates/CharacterBody2D/basic_movement.cs
diff --git a/modules/mono/editor_templates/CharacterBody3D/basic_movement.cs b/modules/mono/editor/script_templates/CharacterBody3D/basic_movement.cs
index a6935fe497..a6935fe497 100644
--- a/modules/mono/editor_templates/CharacterBody3D/basic_movement.cs
+++ b/modules/mono/editor/script_templates/CharacterBody3D/basic_movement.cs
diff --git a/modules/mono/editor_templates/EditorPlugin/plugin.cs b/modules/mono/editor/script_templates/EditorPlugin/plugin.cs
index 6e6a799be6..eba5fd12a4 100644
--- a/modules/mono/editor_templates/EditorPlugin/plugin.cs
+++ b/modules/mono/editor/script_templates/EditorPlugin/plugin.cs
@@ -1,4 +1,5 @@
// meta-description: Basic plugin template
+
#if TOOLS
using _BINDINGS_NAMESPACE_;
using System;
diff --git a/modules/mono/editor_templates/EditorScript/basic_editor_script.cs b/modules/mono/editor/script_templates/EditorScript/basic_editor_script.cs
index 2088822890..1b347edc1c 100644
--- a/modules/mono/editor_templates/EditorScript/basic_editor_script.cs
+++ b/modules/mono/editor/script_templates/EditorScript/basic_editor_script.cs
@@ -1,4 +1,5 @@
// meta-description: Basic editor script template
+
#if TOOLS
using _BINDINGS_NAMESPACE_;
using System;
@@ -6,9 +7,9 @@ using System;
[Tool]
public partial class _CLASS_ : _BASE_
{
+ // Called when the script is executed (using File -> Run in Script Editor).
public override void _Run()
{
- // Called when the script is executed (using File -> Run in Script Editor).
}
}
#endif
diff --git a/modules/mono/editor_templates/Node/default.cs b/modules/mono/editor/script_templates/Node/default.cs
index 73d69dd993..4c86d1666f 100644
--- a/modules/mono/editor_templates/Node/default.cs
+++ b/modules/mono/editor/script_templates/Node/default.cs
@@ -8,12 +8,10 @@ public partial class _CLASS_ : _BASE_
// Called when the node enters the scene tree for the first time.
public override void _Ready()
{
-
}
// Called every frame. 'delta' is the elapsed time since the previous frame.
public override void _Process(float delta)
{
-
}
}
diff --git a/modules/mono/editor_templates/Object/empty.cs b/modules/mono/editor/script_templates/Object/empty.cs
index e5bee64fe1..34526d514f 100644
--- a/modules/mono/editor_templates/Object/empty.cs
+++ b/modules/mono/editor/script_templates/Object/empty.cs
@@ -5,5 +5,4 @@ using System;
public partial class _CLASS_ : _BASE_
{
-
}
diff --git a/modules/mono/editor_templates/SCsub b/modules/mono/editor/script_templates/SCsub
index 39f6cb5c01..39f6cb5c01 100644
--- a/modules/mono/editor_templates/SCsub
+++ b/modules/mono/editor/script_templates/SCsub
diff --git a/modules/mono/editor_templates/VisualShaderNodeCustom/basic.cs b/modules/mono/editor/script_templates/VisualShaderNodeCustom/basic.cs
index a1b93e7daa..a1b93e7daa 100644
--- a/modules/mono/editor_templates/VisualShaderNodeCustom/basic.cs
+++ b/modules/mono/editor/script_templates/VisualShaderNodeCustom/basic.cs
diff --git a/modules/mono/mono_gd/gd_mono_class.cpp b/modules/mono/mono_gd/gd_mono_class.cpp
index 89c37e087b..3fc0f16e05 100644
--- a/modules/mono/mono_gd/gd_mono_class.cpp
+++ b/modules/mono/mono_gd/gd_mono_class.cpp
@@ -194,7 +194,7 @@ void GDMonoClass::fetch_methods_with_godot_api_checks(GDMonoClass *p_native_base
#ifdef DEBUG_ENABLED
// For debug builds, we also fetched from native base classes as well before if this is not a native base class.
- // This allows us to warn the user here if he is using snake_case by mistake.
+ // This allows us to warn the user here if they are using snake_case by mistake.
if (p_native_base != this) {
GDMonoClass *native_top = p_native_base;
diff --git a/modules/navigation/SCsub b/modules/navigation/SCsub
index 22b5509b32..24a6b12639 100644
--- a/modules/navigation/SCsub
+++ b/modules/navigation/SCsub
@@ -57,6 +57,8 @@ env.modules_sources += thirdparty_obj
module_obj = []
env_navigation.add_source_files(module_obj, "*.cpp")
+if env["tools"]:
+ env_navigation.add_source_files(module_obj, "editor/*.cpp")
env.modules_sources += module_obj
# Needed to force rebuilding the module files when the thirdparty library is updated.
diff --git a/modules/navigation/navigation_mesh_editor_plugin.cpp b/modules/navigation/editor/navigation_mesh_editor_plugin.cpp
index 511490ba07..c243e3e6e3 100644
--- a/modules/navigation/navigation_mesh_editor_plugin.cpp
+++ b/modules/navigation/editor/navigation_mesh_editor_plugin.cpp
@@ -28,13 +28,14 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
-#ifdef TOOLS_ENABLED
#include "navigation_mesh_editor_plugin.h"
+#ifdef TOOLS_ENABLED
+
+#include "../navigation_mesh_generator.h"
#include "core/io/marshalls.h"
#include "core/io/resource_saver.h"
#include "editor/editor_node.h"
-#include "navigation_mesh_generator.h"
#include "scene/3d/mesh_instance_3d.h"
#include "scene/gui/box_container.h"
@@ -153,4 +154,4 @@ NavigationMeshEditorPlugin::NavigationMeshEditorPlugin() {
NavigationMeshEditorPlugin::~NavigationMeshEditorPlugin() {
}
-#endif
+#endif // TOOLS_ENABLED
diff --git a/modules/navigation/navigation_mesh_editor_plugin.h b/modules/navigation/editor/navigation_mesh_editor_plugin.h
index d581b453b3..3c3e804fd2 100644
--- a/modules/navigation/navigation_mesh_editor_plugin.h
+++ b/modules/navigation/editor/navigation_mesh_editor_plugin.h
@@ -81,6 +81,6 @@ public:
~NavigationMeshEditorPlugin();
};
-#endif
+#endif // TOOLS_ENABLED
-#endif
+#endif // NAVIGATION_MESH_EDITOR_PLUGIN_H
diff --git a/modules/navigation/register_types.cpp b/modules/navigation/register_types.cpp
index e2264e843c..218f2c2937 100644
--- a/modules/navigation/register_types.cpp
+++ b/modules/navigation/register_types.cpp
@@ -40,7 +40,7 @@
#endif
#ifdef TOOLS_ENABLED
-#include "navigation_mesh_editor_plugin.h"
+#include "editor/navigation_mesh_editor_plugin.h"
#endif
#ifndef _3D_DISABLED
diff --git a/modules/opensimplex/SCsub b/modules/noise/SCsub
index 86d77c3dfb..3e8395b9b1 100644
--- a/modules/opensimplex/SCsub
+++ b/modules/noise/SCsub
@@ -3,21 +3,21 @@
Import("env")
Import("env_modules")
-env_opensimplex = env_modules.Clone()
+env_noise = env_modules.Clone()
# Thirdparty source files
thirdparty_obj = []
-thirdparty_dir = "#thirdparty/misc/"
+thirdparty_dir = "#thirdparty/noise/"
thirdparty_sources = [
- "open-simplex-noise.c",
+ # Add C++ source files for noise modules here
]
thirdparty_sources = [thirdparty_dir + file for file in thirdparty_sources]
-env_opensimplex.Prepend(CPPPATH=[thirdparty_dir])
+env_noise.Prepend(CPPPATH=[thirdparty_dir])
-env_thirdparty = env_opensimplex.Clone()
+env_thirdparty = env_noise.Clone()
env_thirdparty.disable_warnings()
env_thirdparty.add_source_files(thirdparty_obj, thirdparty_sources)
env.modules_sources += thirdparty_obj
@@ -26,7 +26,7 @@ env.modules_sources += thirdparty_obj
module_obj = []
-env_opensimplex.add_source_files(module_obj, "*.cpp")
+env_noise.add_source_files(module_obj, "*.cpp")
env.modules_sources += module_obj
# Needed to force rebuilding the module files when the thirdparty library is updated.
diff --git a/modules/opensimplex/config.py b/modules/noise/config.py
index 90b85dbd70..74db20f2a4 100644
--- a/modules/opensimplex/config.py
+++ b/modules/noise/config.py
@@ -8,8 +8,9 @@ def configure(env):
def get_doc_classes():
return [
+ "FastNoiseLite",
+ "Noise",
"NoiseTexture",
- "OpenSimplexNoise",
]
diff --git a/modules/noise/doc_classes/FastNoiseLite.xml b/modules/noise/doc_classes/FastNoiseLite.xml
new file mode 100644
index 0000000000..b6d91850c4
--- /dev/null
+++ b/modules/noise/doc_classes/FastNoiseLite.xml
@@ -0,0 +1,169 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<class name="FastNoiseLite" inherits="Noise" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../doc/class.xsd">
+ <brief_description>
+ Generates noise using the FastNoiseLite library.
+ </brief_description>
+ <description>
+ This class generates noise using the FastNoiseLite library, which is a collection of several noise algorithms including Cellular, Perlin, Value, and more.
+ Most generated noise values are in the range of [code][-1,1][/code], however not always. Some of the cellular noise algorithms return results above [code]1[/code].
+ </description>
+ <tutorials>
+ </tutorials>
+ <members>
+ <member name="cellular_distance_function" type="int" setter="set_cellular_distance_function" getter="get_cellular_distance_function" enum="FastNoiseLite.CellularDistanceFunction" default="0">
+ Determines how the distance to the nearest/second-nearest point is computed. See [enum CellularDistanceFunction] for options.
+ </member>
+ <member name="cellular_jitter" type="float" setter="set_cellular_jitter" getter="get_cellular_jitter" default="0.45">
+ Maximum distance a point can move off of its grid position. Set to [code]0[/code] for an even grid.
+ </member>
+ <member name="cellular_return_type" type="int" setter="set_cellular_return_type" getter="get_cellular_return_type" enum="FastNoiseLite.CellularReturnType" default="0">
+ Return type from cellular noise calculations. See [enum CellularReturnType].
+ </member>
+ <member name="color_ramp" type="Gradient" setter="set_color_ramp" getter="get_color_ramp">
+ A [Gradient] which is used to map the luminance of each pixel to a color value.
+ </member>
+ <member name="domain_warp_amplitude" type="float" setter="set_domain_warp_amplitude" getter="get_domain_warp_amplitude" default="30.0">
+ Sets the maximum warp distance from the origin.
+ </member>
+ <member name="domain_warp_enabled" type="bool" setter="set_domain_warp_enabled" getter="is_domain_warp_enabled" default="false">
+ If enabled, another FastNoiseLite instance is used to warp the space, resulting in a distortion of the noise.
+ </member>
+ <member name="domain_warp_fractal_gain" type="float" setter="set_domain_warp_fractal_gain" getter="get_domain_warp_fractal_gain" default="0.5">
+ Determines the strength of each subsequent layer of the noise which is used to warp the space.
+ A low value places more emphasis on the lower frequency base layers, while a high value puts more emphasis on the higher frequency layers.
+ </member>
+ <member name="domain_warp_fractal_lacunarity" type="float" setter="set_domain_warp_fractal_lacunarity" getter="get_domain_warp_fractal_lacunarity" default="6.0">
+ Octave lacunarity of the fractal noise which warps the space. Increasing this value results in higher octaves producing noise with finer details and a rougher appearance.
+ </member>
+ <member name="domain_warp_fractal_octaves" type="int" setter="set_domain_warp_fractal_octaves" getter="get_domain_warp_fractal_octaves" default="5">
+ The number of noise layers that are sampled to get the final value for the fractal noise which warps the space.
+ </member>
+ <member name="domain_warp_fractal_type" type="int" setter="set_domain_warp_fractal_type" getter="get_domain_warp_fractal_type" enum="FastNoiseLite.DomainWarpFractalType" default="1">
+ The method for combining octaves into a fractal which is used to warp the space. See [enum DomainWarpFractalType].
+ </member>
+ <member name="domain_warp_frequency" type="float" setter="set_domain_warp_frequency" getter="get_domain_warp_frequency" default="0.05">
+ Frequency of the noise which warps the space. Low frequency results in smooth noise while high frequency results in rougher, more granular noise.
+ </member>
+ <member name="domain_warp_type" type="int" setter="set_domain_warp_type" getter="get_domain_warp_type" enum="FastNoiseLite.DomainWarpType" default="0">
+ Sets the warp algorithm. See [enum DomainWarpType].
+ </member>
+ <member name="fractal_gain" type="float" setter="set_fractal_gain" getter="get_fractal_gain" default="0.5">
+ Determines the strength of each subsequent layer of noise in fractal noise.
+ A low value places more emphasis on the lower frequency base layers, while a high value puts more emphasis on the higher frequency layers.
+ </member>
+ <member name="fractal_lacunarity" type="float" setter="set_fractal_lacunarity" getter="get_fractal_lacunarity" default="2.0">
+ Frequency multiplier between subsequent octaves. Increasing this value results in higher octaves producing noise with finer details and a rougher appearance.
+ </member>
+ <member name="fractal_octaves" type="int" setter="set_fractal_octaves" getter="get_fractal_octaves" default="5">
+ The number of noise layers that are sampled to get the final value for fractal noise types.
+ </member>
+ <member name="fractal_ping_pong_strength" type="float" setter="set_fractal_ping_pong_strength" getter="get_fractal_ping_pong_strength" default="2.0">
+ Sets the strength of the fractal ping pong type.
+ </member>
+ <member name="fractal_type" type="int" setter="set_fractal_type" getter="get_fractal_type" enum="FastNoiseLite.FractalType" default="1">
+ The method for combining octaves into a fractal. See [enum FractalType].
+ </member>
+ <member name="fractal_weighted_strength" type="float" setter="set_fractal_weighted_strength" getter="get_fractal_weighted_strength" default="0.0">
+ Higher weighting means higher octaves have less impact if lower octaves have a large impact.
+ </member>
+ <member name="frequency" type="float" setter="set_frequency" getter="get_frequency" default="0.01">
+ The frequency for all noise types. Low frequency results in smooth noise while high frequency results in rougher, more granular noise.
+ </member>
+ <member name="in_3d_space" type="bool" setter="set_in_3d_space" getter="is_in_3d_space" default="false">
+ Determines whether the noise image returned by [method Noise.get_image] is calculated in 3d space. May result in reduced contrast.
+ </member>
+ <member name="noise_type" type="int" setter="set_noise_type" getter="get_noise_type" enum="FastNoiseLite.NoiseType" default="1">
+ The noise algorithm used. See [enum NoiseType].
+ </member>
+ <member name="offset" type="Vector3" setter="set_offset" getter="get_offset" default="Vector3(0, 0, 0)">
+ Translate the noise input coordinates by the given [Vector3].
+ </member>
+ <member name="seed" type="int" setter="set_seed" getter="get_seed" default="0">
+ The random number seed for all noise types.
+ </member>
+ </members>
+ <constants>
+ <constant name="TYPE_VALUE" value="5" enum="NoiseType">
+ A lattice of points are assigned random values then interpolated based on neighboring values.
+ </constant>
+ <constant name="TYPE_VALUE_CUBIC" value="4" enum="NoiseType">
+ Similar to Value noise, but slower. Has more variance in peaks and valleys.
+ Cubic noise can be used to avoid certain artifacts when using value noise to create a bumpmap. In general, you should always use this mode if the value noise is being used for a heightmap or bumpmap.
+ </constant>
+ <constant name="TYPE_PERLIN" value="3" enum="NoiseType">
+ A lattice of random gradients. Their dot products are interpolated to obtain values in between the lattices.
+ </constant>
+ <constant name="TYPE_CELLULAR" value="2" enum="NoiseType">
+ Cellular includes both Worley noise and Voronoi diagrams which creates various regions of the same value.
+ </constant>
+ <constant name="TYPE_SIMPLEX" value="0" enum="NoiseType">
+ As opposed to [constant TYPE_PERLIN], gradients exist in a simplex lattice rather than a grid lattice, avoiding directional artifacts.
+ </constant>
+ <constant name="TYPE_SIMPLEX_SMOOTH" value="1" enum="NoiseType">
+ Modified, higher quality version of [constant TYPE_SIMPLEX], but slower.
+ </constant>
+ <constant name="FRACTAL_NONE" value="0" enum="FractalType">
+ No fractal noise.
+ </constant>
+ <constant name="FRACTAL_FBM" value="1" enum="FractalType">
+ Method using Fractional Brownian Motion to combine octaves into a fractal.
+ </constant>
+ <constant name="FRACTAL_RIDGED" value="2" enum="FractalType">
+ Method of combining octaves into a fractal resulting in a "ridged" look.
+ </constant>
+ <constant name="FRACTAL_PING_PONG" value="3" enum="FractalType">
+ Method of combining octaves into a fractal with a ping pong effect.
+ </constant>
+ <constant name="DISTANCE_EUCLIDEAN" value="0" enum="CellularDistanceFunction">
+ Euclidean distance to the nearest point.
+ </constant>
+ <constant name="DISTANCE_EUCLIDEAN_SQUARED" value="1" enum="CellularDistanceFunction">
+ Squared Euclidean distance to the nearest point.
+ </constant>
+ <constant name="DISTANCE_MANHATTAN" value="2" enum="CellularDistanceFunction">
+ Manhattan distance (taxicab metric) to the nearest point.
+ </constant>
+ <constant name="DISTANCE_HYBRID" value="3" enum="CellularDistanceFunction">
+ Blend of [constant DISTANCE_EUCLIDEAN] and [constant DISTANCE_MANHATTAN] to give curved cell boundaries
+ </constant>
+ <constant name="RETURN_CELL_VALUE" value="0" enum="CellularReturnType">
+ The cellular distance function will return the same value for all points within a cell.
+ </constant>
+ <constant name="RETURN_DISTANCE" value="1" enum="CellularReturnType">
+ The cellular distance function will return a value determined by the distance to the nearest point.
+ </constant>
+ <constant name="RETURN_DISTANCE2" value="2" enum="CellularReturnType">
+ The cellular distance function returns the distance to the second-nearest point.
+ </constant>
+ <constant name="RETURN_DISTANCE2_ADD" value="3" enum="CellularReturnType">
+ The distance to the nearest point is added to the distance to the second-nearest point.
+ </constant>
+ <constant name="RETURN_DISTANCE2_SUB" value="4" enum="CellularReturnType">
+ The distance to the nearest point is subtracted from the distance to the second-nearest point.
+ </constant>
+ <constant name="RETURN_DISTANCE2_MUL" value="5" enum="CellularReturnType">
+ The distance to the nearest point is multiplied with the distance to the second-nearest point.
+ </constant>
+ <constant name="RETURN_DISTANCE2_DIV" value="6" enum="CellularReturnType">
+ The distance to the nearest point is divided by the distance to the second-nearest point.
+ </constant>
+ <constant name="DOMAIN_WARP_SIMPLEX" value="0" enum="DomainWarpType">
+ The domain is warped using the simplex noise algorithm.
+ </constant>
+ <constant name="DOMAIN_WARP_SIMPLEX_REDUCED" value="1" enum="DomainWarpType">
+ The domain is warped using a simplified version of the simplex noise algorithm.
+ </constant>
+ <constant name="DOMAIN_WARP_BASIC_GRID" value="2" enum="DomainWarpType">
+ The domain is warped using a simple noise grid (not as smooth as the other methods, but more performant).
+ </constant>
+ <constant name="DOMAIN_WARP_FRACTAL_NONE" value="0" enum="DomainWarpFractalType">
+ No fractal noise for warping the space.
+ </constant>
+ <constant name="DOMAIN_WARP_FRACTAL_PROGRESSIVE" value="1" enum="DomainWarpFractalType">
+ Warping the space progressively, octave for octave, resulting in a more "liquified" distortion.
+ </constant>
+ <constant name="DOMAIN_WARP_FRACTAL_INDEPENDENT" value="2" enum="DomainWarpFractalType">
+ Warping the space independently for each octave, resulting in a more chaotic distortion.
+ </constant>
+ </constants>
+</class>
diff --git a/modules/noise/doc_classes/Noise.xml b/modules/noise/doc_classes/Noise.xml
new file mode 100644
index 0000000000..db0dec18d2
--- /dev/null
+++ b/modules/noise/doc_classes/Noise.xml
@@ -0,0 +1,72 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<class name="Noise" inherits="Resource" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../doc/class.xsd">
+ <brief_description>
+ Abstract base class for noise generators.
+ </brief_description>
+ <description>
+ This class defines the interface for noise generation libraries to inherit from.
+ A default get_seamless_noise() implementation is provided for libraries that do not provide seamless noise. This function requests a larger image from get_image(), reverses the quadrants of the image, then uses the strips of extra width to blend over the seams.
+ Inheriting noise classes can optionally override this function to provide a more optimal algorithm.
+ </description>
+ <tutorials>
+ </tutorials>
+ <methods>
+ <method name="get_image">
+ <return type="Image" />
+ <argument index="0" name="width" type="int" />
+ <argument index="1" name="height" type="int" />
+ <argument index="2" name="invert" type="bool" default="false" />
+ <description>
+ Returns a 2D [Image] noise image.
+ </description>
+ </method>
+ <method name="get_noise_1d">
+ <return type="float" />
+ <argument index="0" name="x" type="float" />
+ <description>
+ Returns the 1D noise value at the given (x) coordinate.
+ </description>
+ </method>
+ <method name="get_noise_2d">
+ <return type="float" />
+ <argument index="0" name="x" type="float" />
+ <argument index="1" name="y" type="float" />
+ <description>
+ Returns the 2D noise value at the given position.
+ </description>
+ </method>
+ <method name="get_noise_2dv">
+ <return type="float" />
+ <argument index="0" name="v" type="Vector2" />
+ <description>
+ Returns the 2D noise value at the given position.
+ </description>
+ </method>
+ <method name="get_noise_3d">
+ <return type="float" />
+ <argument index="0" name="x" type="float" />
+ <argument index="1" name="y" type="float" />
+ <argument index="2" name="z" type="float" />
+ <description>
+ Returns the 3D noise value at the given position.
+ </description>
+ </method>
+ <method name="get_noise_3dv">
+ <return type="float" />
+ <argument index="0" name="v" type="Vector3" />
+ <description>
+ Returns the 3D noise value at the given position.
+ </description>
+ </method>
+ <method name="get_seamless_image">
+ <return type="Image" />
+ <argument index="0" name="width" type="int" />
+ <argument index="1" name="height" type="int" />
+ <argument index="2" name="invert" type="bool" default="false" />
+ <argument index="3" name="skirt" type="float" default="0.1" />
+ <description>
+ Returns a seamless 2D [Image] noise image.
+ </description>
+ </method>
+ </methods>
+</class>
diff --git a/modules/opensimplex/doc_classes/NoiseTexture.xml b/modules/noise/doc_classes/NoiseTexture.xml
index 497735ccf3..63630eccde 100644
--- a/modules/opensimplex/doc_classes/NoiseTexture.xml
+++ b/modules/noise/doc_classes/NoiseTexture.xml
@@ -1,15 +1,15 @@
<?xml version="1.0" encoding="UTF-8" ?>
<class name="NoiseTexture" inherits="Texture2D" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../doc/class.xsd">
<brief_description>
- [OpenSimplexNoise] filled texture.
+ A texture filled with noise generated by a [Noise] object.
</brief_description>
<description>
- 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.
- NoiseTexture can also generate normal map textures.
+ Uses [FastNoiseLite] or other libraries to fill the texture data of your desired size.
+ NoiseTexture can also generate normalmap textures.
The class uses [Thread]s to generate the texture data internally, so [method Texture2D.get_image] 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 image and the generated byte data:
[codeblock]
var texture = NoiseTexture.new()
- texture.noise = OpenSimplexNoise.new()
+ texture.noise = FastNoiseLite.new()
await texture.changed
var image = texture.get_image()
var data = image.get_data()
@@ -27,15 +27,18 @@
<member name="height" type="int" setter="set_height" getter="get_height" default="512">
Height of the generated texture.
</member>
- <member name="noise" type="OpenSimplexNoise" setter="set_noise" getter="get_noise">
- The [OpenSimplexNoise] instance used to generate the noise.
+ <member name="invert" type="bool" setter="set_invert" getter="get_invert" default="false">
+ If [code]true[/code], inverts the noise texture. White becomes black, black becomes white.
</member>
- <member name="noise_offset" type="Vector2" setter="set_noise_offset" getter="get_noise_offset" default="Vector2(0, 0)">
- 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.
+ <member name="noise" type="Noise" setter="set_noise" getter="get_noise">
+ The instance of the [Noise] object.
</member>
<member name="seamless" type="bool" setter="set_seamless" getter="get_seamless" default="false">
- Whether the texture can be tiled without visible seams or not. Seamless textures take longer to generate.
- [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.
+ If [code]true[/code], a seamless texture is requested from the [Noise] resource.
+ [b]Note:[/b] Seamless noise textures may take longer to generate and/or can have a lower contrast compared to non-seamless noise depending on the used [Noise] resource. This is because some implementations use higher dimensions for generating seamless noise.
+ </member>
+ <member name="seamless_blend_skirt" type="float" setter="set_seamless_blend_skirt" getter="get_seamless_blend_skirt" default="0.1">
+ Used for the default/fallback implementation of the seamless texture generation. It determines the distance over which the seams are blended. High values may result in less details and contrast. See [Noise] for further details.
</member>
<member name="width" type="int" setter="set_width" getter="get_width" default="512">
Width of the generated texture.
diff --git a/modules/noise/fastnoise_lite.cpp b/modules/noise/fastnoise_lite.cpp
new file mode 100644
index 0000000000..974b5c55bb
--- /dev/null
+++ b/modules/noise/fastnoise_lite.cpp
@@ -0,0 +1,577 @@
+/*************************************************************************/
+/* fastnoise_lite.cpp */
+/*************************************************************************/
+/* This file is part of: */
+/* GODOT ENGINE */
+/* https://godotengine.org */
+/*************************************************************************/
+/* Copyright (c) 2007-2022 Juan Linietsky, Ariel Manzur. */
+/* Copyright (c) 2014-2022 Godot Engine contributors (cf. AUTHORS.md). */
+/* */
+/* Permission is hereby granted, free of charge, to any person obtaining */
+/* a copy of this software and associated documentation files (the */
+/* "Software"), to deal in the Software without restriction, including */
+/* without limitation the rights to use, copy, modify, merge, publish, */
+/* distribute, sublicense, and/or sell copies of the Software, and to */
+/* permit persons to whom the Software is furnished to do so, subject to */
+/* the following conditions: */
+/* */
+/* The above copyright notice and this permission notice shall be */
+/* included in all copies or substantial portions of the Software. */
+/* */
+/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
+/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
+/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
+/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
+/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
+/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
+/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
+/*************************************************************************/
+
+#include "fastnoise_lite.h"
+
+FastNoiseLite::FastNoiseLite() {
+ // Most defaults copied from the library.
+ set_noise_type(TYPE_SIMPLEX_SMOOTH);
+ set_seed(0);
+ set_frequency(0.01);
+ set_in_3d_space(false);
+
+ set_fractal_type(FRACTAL_FBM);
+ set_fractal_octaves(5);
+ set_fractal_lacunarity(2.0);
+ set_fractal_gain(0.5);
+ set_fractal_weighted_strength(0.0);
+ set_fractal_ping_pong_strength(2.0);
+
+ set_cellular_distance_function(DISTANCE_EUCLIDEAN);
+ set_cellular_return_type(RETURN_CELL_VALUE);
+ set_cellular_jitter(0.45);
+
+ set_domain_warp_enabled(false);
+ set_domain_warp_type(DOMAIN_WARP_SIMPLEX);
+ set_domain_warp_amplitude(30.0);
+ set_domain_warp_frequency(0.05);
+ set_domain_warp_fractal_type(DOMAIN_WARP_FRACTAL_PROGRESSIVE);
+ set_domain_warp_fractal_octaves(5);
+ set_domain_warp_fractal_lacunarity(6);
+ set_domain_warp_fractal_gain(0.5);
+}
+
+FastNoiseLite::~FastNoiseLite() {
+}
+
+// General settings.
+
+void FastNoiseLite::set_noise_type(NoiseType p_noise_type) {
+ noise_type = p_noise_type;
+ _noise.SetNoiseType((_FastNoiseLite::NoiseType)p_noise_type);
+ emit_changed();
+ notify_property_list_changed();
+}
+
+FastNoiseLite::NoiseType FastNoiseLite::get_noise_type() const {
+ return noise_type;
+}
+
+void FastNoiseLite::set_seed(int p_seed) {
+ seed = p_seed;
+ _noise.SetSeed(p_seed);
+ emit_changed();
+}
+
+int FastNoiseLite::get_seed() const {
+ return seed;
+}
+
+void FastNoiseLite::set_frequency(real_t p_freq) {
+ frequency = p_freq;
+ _noise.SetFrequency(p_freq);
+ emit_changed();
+}
+
+real_t FastNoiseLite::get_frequency() const {
+ return frequency;
+}
+
+void FastNoiseLite::set_in_3d_space(bool p_enable) {
+ in_3d_space = p_enable;
+ emit_changed();
+}
+bool FastNoiseLite::is_in_3d_space() const {
+ return in_3d_space;
+}
+
+void FastNoiseLite::set_offset(Vector3 p_offset) {
+ offset = p_offset;
+ emit_changed();
+}
+
+Vector3 FastNoiseLite::get_offset() const {
+ return offset;
+}
+
+void FastNoiseLite::set_color_ramp(const Ref<Gradient> &p_gradient) {
+ color_ramp = p_gradient;
+ if (color_ramp.is_valid()) {
+ color_ramp->connect(SNAME("changed"), callable_mp(this, &FastNoiseLite::_changed));
+ emit_changed();
+ }
+}
+
+Ref<Gradient> FastNoiseLite::get_color_ramp() const {
+ return color_ramp;
+}
+
+// Noise functions.
+
+real_t FastNoiseLite::get_noise_1d(real_t p_x) {
+ return get_noise_2d(p_x, 0.0);
+}
+
+real_t FastNoiseLite::get_noise_2dv(Vector2 p_v) {
+ return get_noise_2d(p_v.x, p_v.y);
+}
+
+real_t FastNoiseLite::get_noise_2d(real_t p_x, real_t p_y) {
+ if (domain_warp_enabled) {
+ _domain_warp_noise.DomainWarp(p_x, p_y);
+ }
+ return _noise.GetNoise(p_x + offset.x, p_y + offset.y);
+}
+
+real_t FastNoiseLite::get_noise_3dv(Vector3 p_v) {
+ return get_noise_3d(p_v.x, p_v.y, p_v.z);
+}
+
+real_t FastNoiseLite::get_noise_3d(real_t p_x, real_t p_y, real_t p_z) {
+ if (domain_warp_enabled) {
+ _domain_warp_noise.DomainWarp(p_x, p_y, p_z);
+ }
+ return _noise.GetNoise(p_x + offset.x, p_y + offset.y, p_z + offset.z);
+}
+
+// Fractal.
+
+void FastNoiseLite::set_fractal_type(FractalType p_type) {
+ fractal_type = p_type;
+ _noise.SetFractalType((_FastNoiseLite::FractalType)p_type);
+ emit_changed();
+ notify_property_list_changed();
+}
+
+FastNoiseLite::FractalType FastNoiseLite::get_fractal_type() const {
+ return fractal_type;
+}
+
+void FastNoiseLite::set_fractal_octaves(int p_octaves) {
+ fractal_octaves = p_octaves;
+ _noise.SetFractalOctaves(p_octaves);
+ emit_changed();
+}
+
+int FastNoiseLite::get_fractal_octaves() const {
+ return fractal_octaves;
+}
+
+void FastNoiseLite::set_fractal_lacunarity(real_t p_lacunarity) {
+ fractal_lacunarity = p_lacunarity;
+ _noise.SetFractalLacunarity(p_lacunarity);
+ emit_changed();
+}
+
+real_t FastNoiseLite::get_fractal_lacunarity() const {
+ return fractal_lacunarity;
+}
+
+void FastNoiseLite::set_fractal_gain(real_t p_gain) {
+ fractal_gain = p_gain;
+ _noise.SetFractalGain(p_gain);
+ emit_changed();
+}
+
+real_t FastNoiseLite::get_fractal_gain() const {
+ return fractal_gain;
+}
+
+void FastNoiseLite::set_fractal_weighted_strength(real_t p_weighted_strength) {
+ fractal_weighted_strength = p_weighted_strength;
+ _noise.SetFractalWeightedStrength(p_weighted_strength);
+ emit_changed();
+}
+real_t FastNoiseLite::get_fractal_weighted_strength() const {
+ return fractal_weighted_strength;
+}
+
+void FastNoiseLite::set_fractal_ping_pong_strength(real_t p_ping_pong_strength) {
+ fractal_pinp_pong_strength = p_ping_pong_strength;
+ _noise.SetFractalPingPongStrength(p_ping_pong_strength);
+ emit_changed();
+}
+real_t FastNoiseLite::get_fractal_ping_pong_strength() const {
+ return fractal_pinp_pong_strength;
+}
+
+// Cellular.
+
+void FastNoiseLite::set_cellular_distance_function(CellularDistanceFunction p_func) {
+ cellular_distance_function = p_func;
+ _noise.SetCellularDistanceFunction((_FastNoiseLite::CellularDistanceFunction)p_func);
+ emit_changed();
+}
+
+FastNoiseLite::CellularDistanceFunction FastNoiseLite::get_cellular_distance_function() const {
+ return cellular_distance_function;
+}
+
+void FastNoiseLite::set_cellular_jitter(real_t p_jitter) {
+ cellular_jitter = p_jitter;
+ _noise.SetCellularJitter(p_jitter);
+ emit_changed();
+}
+
+real_t FastNoiseLite::get_cellular_jitter() const {
+ return cellular_jitter;
+}
+
+void FastNoiseLite::set_cellular_return_type(CellularReturnType p_ret) {
+ cellular_return_type = p_ret;
+ _noise.SetCellularReturnType((_FastNoiseLite::CellularReturnType)p_ret);
+
+ emit_changed();
+}
+
+FastNoiseLite::CellularReturnType FastNoiseLite::get_cellular_return_type() const {
+ return cellular_return_type;
+}
+
+// Domain warp specific.
+
+void FastNoiseLite::set_domain_warp_enabled(bool p_enabled) {
+ if (domain_warp_enabled != p_enabled) {
+ domain_warp_enabled = p_enabled;
+ emit_changed();
+ notify_property_list_changed();
+ }
+}
+
+bool FastNoiseLite::is_domain_warp_enabled() const {
+ return domain_warp_enabled;
+}
+
+void FastNoiseLite::set_domain_warp_type(DomainWarpType p_domain_warp_type) {
+ domain_warp_type = p_domain_warp_type;
+ _domain_warp_noise.SetDomainWarpType((_FastNoiseLite::DomainWarpType)p_domain_warp_type);
+ emit_changed();
+}
+
+FastNoiseLite::DomainWarpType FastNoiseLite::get_domain_warp_type() const {
+ return domain_warp_type;
+}
+
+void FastNoiseLite::set_domain_warp_amplitude(real_t p_amplitude) {
+ domain_warp_amplitude = p_amplitude;
+ _domain_warp_noise.SetDomainWarpAmp(p_amplitude);
+ emit_changed();
+}
+real_t FastNoiseLite::get_domain_warp_amplitude() const {
+ return domain_warp_amplitude;
+}
+
+void FastNoiseLite::set_domain_warp_frequency(real_t p_frequency) {
+ domain_warp_frequency = p_frequency;
+ _domain_warp_noise.SetFrequency(p_frequency);
+ emit_changed();
+}
+
+real_t FastNoiseLite::get_domain_warp_frequency() const {
+ return domain_warp_frequency;
+}
+
+void FastNoiseLite::set_domain_warp_fractal_type(DomainWarpFractalType p_domain_warp_fractal_type) {
+ domain_warp_fractal_type = p_domain_warp_fractal_type;
+
+ // This needs manual conversion because Godots Inspector property API does not support discontiguous enum indices.
+ _FastNoiseLite::FractalType type;
+ switch (p_domain_warp_fractal_type) {
+ case DOMAIN_WARP_FRACTAL_NONE:
+ type = _FastNoiseLite::FractalType_None;
+ break;
+ case DOMAIN_WARP_FRACTAL_PROGRESSIVE:
+ type = _FastNoiseLite::FractalType_DomainWarpProgressive;
+ break;
+ case DOMAIN_WARP_FRACTAL_INDEPENDENT:
+ type = _FastNoiseLite::FractalType_DomainWarpIndependent;
+ break;
+ default:
+ type = _FastNoiseLite::FractalType_None;
+ }
+
+ _domain_warp_noise.SetFractalType(type);
+ emit_changed();
+}
+
+FastNoiseLite::DomainWarpFractalType FastNoiseLite::get_domain_warp_fractal_type() const {
+ return domain_warp_fractal_type;
+}
+
+void FastNoiseLite::set_domain_warp_fractal_octaves(int p_octaves) {
+ domain_warp_fractal_octaves = p_octaves;
+ _domain_warp_noise.SetFractalOctaves(p_octaves);
+ emit_changed();
+}
+
+int FastNoiseLite::get_domain_warp_fractal_octaves() const {
+ return domain_warp_fractal_octaves;
+}
+
+void FastNoiseLite::set_domain_warp_fractal_lacunarity(real_t p_lacunarity) {
+ domain_warp_fractal_lacunarity = p_lacunarity;
+ _domain_warp_noise.SetFractalLacunarity(p_lacunarity);
+ emit_changed();
+}
+
+real_t FastNoiseLite::get_domain_warp_fractal_lacunarity() const {
+ return domain_warp_fractal_lacunarity;
+}
+
+void FastNoiseLite::set_domain_warp_fractal_gain(real_t p_gain) {
+ domain_warp_fractal_gain = p_gain;
+ _domain_warp_noise.SetFractalGain(p_gain);
+ emit_changed();
+}
+
+real_t FastNoiseLite::get_domain_warp_fractal_gain() const {
+ return domain_warp_fractal_gain;
+}
+
+// Textures.
+
+Ref<Image> FastNoiseLite::get_image(int p_width, int p_height, bool p_invert) {
+ bool grayscale = color_ramp.is_null();
+
+ Vector<uint8_t> data;
+ data.resize(p_width * p_height * (grayscale ? 1 : 4));
+
+ uint8_t *wd8 = data.ptrw();
+
+ // Get all values and identify min/max values.
+ Vector<real_t> values;
+ values.resize(p_width * p_height);
+ real_t min_val = 100;
+ real_t max_val = -100;
+
+ for (int y = 0, i = 0; y < p_height; y++) {
+ for (int x = 0; x < p_width; x++, i++) {
+ values.set(i, is_in_3d_space() ? get_noise_3d(x, y, 0.0) : get_noise_2d(x, y));
+ if (values[i] > max_val) {
+ max_val = values[i];
+ }
+ if (values[i] < min_val) {
+ min_val = values[i];
+ }
+ }
+ }
+
+ // Normalize values and write to texture.
+ uint8_t value;
+ for (int i = 0, x = 0; i < p_height; i++) {
+ for (int j = 0; j < p_width; j++, x++) {
+ if (max_val == min_val) {
+ value = 0;
+ } else {
+ value = uint8_t(CLAMP((values[x] - min_val) / (max_val - min_val) * 255.f, 0, 255));
+ }
+ if (p_invert) {
+ value = 255 - value;
+ }
+ if (grayscale) {
+ wd8[x] = value;
+ } else {
+ float luminance = value / 255.0;
+ Color ramp_color = color_ramp->get_color_at_offset(luminance);
+ wd8[x * 4 + 0] = uint8_t(CLAMP(ramp_color.r * 255, 0, 255));
+ wd8[x * 4 + 1] = uint8_t(CLAMP(ramp_color.g * 255, 0, 255));
+ wd8[x * 4 + 2] = uint8_t(CLAMP(ramp_color.b * 255, 0, 255));
+ wd8[x * 4 + 3] = uint8_t(CLAMP(ramp_color.a * 255, 0, 255));
+ }
+ }
+ }
+ if (grayscale) {
+ return memnew(Image(p_width, p_height, false, Image::FORMAT_L8, data));
+ } else {
+ return memnew(Image(p_width, p_height, false, Image::FORMAT_RGBA8, data));
+ }
+}
+
+Ref<Image> FastNoiseLite::get_seamless_image(int p_width, int p_height, bool p_invert, real_t p_blend_skirt) {
+ // Just return parent function. This is here only so Godot will properly document this function.
+ return Noise::get_seamless_image(p_width, p_height, p_invert, p_blend_skirt);
+}
+
+void FastNoiseLite::_changed() {
+ emit_changed();
+}
+
+void FastNoiseLite::_bind_methods() {
+ // General settings.
+
+ ClassDB::bind_method(D_METHOD("set_noise_type", "type"), &FastNoiseLite::set_noise_type);
+ ClassDB::bind_method(D_METHOD("get_noise_type"), &FastNoiseLite::get_noise_type);
+ ADD_PROPERTY(PropertyInfo(Variant::INT, "noise_type", PROPERTY_HINT_ENUM, "Simplex,Simplex Smooth,Cellular,Perlin,Value Cubic,Value"), "set_noise_type", "get_noise_type");
+
+ ClassDB::bind_method(D_METHOD("set_seed", "seed"), &FastNoiseLite::set_seed);
+ ClassDB::bind_method(D_METHOD("get_seed"), &FastNoiseLite::get_seed);
+ ADD_PROPERTY(PropertyInfo(Variant::INT, "seed"), "set_seed", "get_seed");
+
+ ClassDB::bind_method(D_METHOD("set_frequency", "freq"), &FastNoiseLite::set_frequency);
+ ClassDB::bind_method(D_METHOD("get_frequency"), &FastNoiseLite::get_frequency);
+ ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "frequency", PROPERTY_HINT_RANGE, ".001,1"), "set_frequency", "get_frequency");
+
+ ClassDB::bind_method(D_METHOD("set_in_3d_space", "enable"), &FastNoiseLite::set_in_3d_space);
+ ClassDB::bind_method(D_METHOD("is_in_3d_space"), &FastNoiseLite::is_in_3d_space);
+ ADD_PROPERTY(PropertyInfo(Variant::BOOL, "in_3d_space"), "set_in_3d_space", "is_in_3d_space");
+
+ ClassDB::bind_method(D_METHOD("set_offset", "offset"), &FastNoiseLite::set_offset);
+ ClassDB::bind_method(D_METHOD("get_offset"), &FastNoiseLite::get_offset);
+ ADD_PROPERTY(PropertyInfo(Variant::VECTOR3, "offset", PROPERTY_HINT_RANGE, "-999999999,999999999,1"), "set_offset", "get_offset");
+
+ ClassDB::bind_method(D_METHOD("set_color_ramp", "gradient"), &FastNoiseLite::set_color_ramp);
+ ClassDB::bind_method(D_METHOD("get_color_ramp"), &FastNoiseLite::get_color_ramp);
+ ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "color_ramp", PROPERTY_HINT_RESOURCE_TYPE, "Gradient"), "set_color_ramp", "get_color_ramp");
+
+ // Fractal.
+
+ ADD_GROUP("Fractal", "fractal_");
+ ClassDB::bind_method(D_METHOD("set_fractal_type", "type"), &FastNoiseLite::set_fractal_type);
+ ClassDB::bind_method(D_METHOD("get_fractal_type"), &FastNoiseLite::get_fractal_type);
+ ADD_PROPERTY(PropertyInfo(Variant::INT, "fractal_type", PROPERTY_HINT_ENUM, "None,FBM,Ridged,PingPong"), "set_fractal_type", "get_fractal_type");
+
+ ClassDB::bind_method(D_METHOD("set_fractal_octaves", "octave_count"), &FastNoiseLite::set_fractal_octaves);
+ ClassDB::bind_method(D_METHOD("get_fractal_octaves"), &FastNoiseLite::get_fractal_octaves);
+ ADD_PROPERTY(PropertyInfo(Variant::INT, "fractal_octaves", PROPERTY_HINT_RANGE, "1,10,1"), "set_fractal_octaves", "get_fractal_octaves");
+
+ ClassDB::bind_method(D_METHOD("set_fractal_lacunarity", "lacunarity"), &FastNoiseLite::set_fractal_lacunarity);
+ ClassDB::bind_method(D_METHOD("get_fractal_lacunarity"), &FastNoiseLite::get_fractal_lacunarity);
+ ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "fractal_lacunarity"), "set_fractal_lacunarity", "get_fractal_lacunarity");
+
+ ClassDB::bind_method(D_METHOD("set_fractal_gain", "gain"), &FastNoiseLite::set_fractal_gain);
+ ClassDB::bind_method(D_METHOD("get_fractal_gain"), &FastNoiseLite::get_fractal_gain);
+ ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "fractal_gain"), "set_fractal_gain", "get_fractal_gain");
+
+ ClassDB::bind_method(D_METHOD("set_fractal_weighted_strength", "weighted_strength"), &FastNoiseLite::set_fractal_weighted_strength);
+ ClassDB::bind_method(D_METHOD("get_fractal_weighted_strength"), &FastNoiseLite::get_fractal_weighted_strength);
+ ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "fractal_weighted_strength", PROPERTY_HINT_RANGE, "0,1,0.01"), "set_fractal_weighted_strength", "get_fractal_weighted_strength");
+
+ ClassDB::bind_method(D_METHOD("set_fractal_ping_pong_strength", "ping_pong_strength"), &FastNoiseLite::set_fractal_ping_pong_strength);
+ ClassDB::bind_method(D_METHOD("get_fractal_ping_pong_strength"), &FastNoiseLite::get_fractal_ping_pong_strength);
+ ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "fractal_ping_pong_strength"), "set_fractal_ping_pong_strength", "get_fractal_ping_pong_strength");
+
+ // Cellular.
+
+ ADD_GROUP("Cellular", "cellular_");
+ ClassDB::bind_method(D_METHOD("set_cellular_distance_function", "func"), &FastNoiseLite::set_cellular_distance_function);
+ ClassDB::bind_method(D_METHOD("get_cellular_distance_function"), &FastNoiseLite::get_cellular_distance_function);
+ ADD_PROPERTY(PropertyInfo(Variant::INT, "cellular_distance_function", PROPERTY_HINT_ENUM, "Euclidean,EuclideanSquared,Manhattan,Hybrid"), "set_cellular_distance_function", "get_cellular_distance_function");
+
+ ClassDB::bind_method(D_METHOD("set_cellular_jitter", "jitter"), &FastNoiseLite::set_cellular_jitter);
+ ClassDB::bind_method(D_METHOD("get_cellular_jitter"), &FastNoiseLite::get_cellular_jitter);
+ ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "cellular_jitter"), "set_cellular_jitter", "get_cellular_jitter");
+
+ ClassDB::bind_method(D_METHOD("set_cellular_return_type", "ret"), &FastNoiseLite::set_cellular_return_type);
+ ClassDB::bind_method(D_METHOD("get_cellular_return_type"), &FastNoiseLite::get_cellular_return_type);
+ ADD_PROPERTY(PropertyInfo(Variant::INT, "cellular_return_type", PROPERTY_HINT_ENUM, "CellValue,Distance,Distance2,Distance2Add,Distance2Sub,Distance2Mul,Distance2Div"), "set_cellular_return_type", "get_cellular_return_type");
+
+ // Domain warp.
+
+ ADD_GROUP("Domain Warp", "domain_warp_");
+
+ ClassDB::bind_method(D_METHOD("set_domain_warp_enabled", "domain_warp_enabled"), &FastNoiseLite::set_domain_warp_enabled);
+ ClassDB::bind_method(D_METHOD("is_domain_warp_enabled"), &FastNoiseLite::is_domain_warp_enabled);
+ ADD_PROPERTY(PropertyInfo(Variant::BOOL, "domain_warp_enabled"), "set_domain_warp_enabled", "is_domain_warp_enabled");
+
+ ClassDB::bind_method(D_METHOD("set_domain_warp_type", "domain_warp_type"), &FastNoiseLite::set_domain_warp_type);
+ ClassDB::bind_method(D_METHOD("get_domain_warp_type"), &FastNoiseLite::get_domain_warp_type);
+ ADD_PROPERTY(PropertyInfo(Variant::INT, "domain_warp_type", PROPERTY_HINT_ENUM, "Simplex,SimplexReduced,BasicGrid"), "set_domain_warp_type", "get_domain_warp_type");
+
+ ClassDB::bind_method(D_METHOD("set_domain_warp_amplitude", "domain_warp_amplitude"), &FastNoiseLite::set_domain_warp_amplitude);
+ ClassDB::bind_method(D_METHOD("get_domain_warp_amplitude"), &FastNoiseLite::get_domain_warp_amplitude);
+ ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "domain_warp_amplitude"), "set_domain_warp_amplitude", "get_domain_warp_amplitude");
+
+ ClassDB::bind_method(D_METHOD("set_domain_warp_frequency", "domain_warp_frequency"), &FastNoiseLite::set_domain_warp_frequency);
+ ClassDB::bind_method(D_METHOD("get_domain_warp_frequency"), &FastNoiseLite::get_domain_warp_frequency);
+ ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "domain_warp_frequency"), "set_domain_warp_frequency", "get_domain_warp_frequency");
+
+ ClassDB::bind_method(D_METHOD("set_domain_warp_fractal_type", "domain_warp_fractal_type"), &FastNoiseLite::set_domain_warp_fractal_type);
+ ClassDB::bind_method(D_METHOD("get_domain_warp_fractal_type"), &FastNoiseLite::get_domain_warp_fractal_type);
+ ADD_PROPERTY(PropertyInfo(Variant::INT, "domain_warp_fractal_type", PROPERTY_HINT_ENUM, "None,Progressive,Independent"), "set_domain_warp_fractal_type", "get_domain_warp_fractal_type");
+
+ ClassDB::bind_method(D_METHOD("set_domain_warp_fractal_octaves", "domain_warp_octave_count"), &FastNoiseLite::set_domain_warp_fractal_octaves);
+ ClassDB::bind_method(D_METHOD("get_domain_warp_fractal_octaves"), &FastNoiseLite::get_domain_warp_fractal_octaves);
+ ADD_PROPERTY(PropertyInfo(Variant::INT, "domain_warp_fractal_octaves", PROPERTY_HINT_RANGE, "1,10,1"), "set_domain_warp_fractal_octaves", "get_domain_warp_fractal_octaves");
+
+ ClassDB::bind_method(D_METHOD("set_domain_warp_fractal_lacunarity", "domain_warp_lacunarity"), &FastNoiseLite::set_domain_warp_fractal_lacunarity);
+ ClassDB::bind_method(D_METHOD("get_domain_warp_fractal_lacunarity"), &FastNoiseLite::get_domain_warp_fractal_lacunarity);
+ ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "domain_warp_fractal_lacunarity"), "set_domain_warp_fractal_lacunarity", "get_domain_warp_fractal_lacunarity");
+
+ ClassDB::bind_method(D_METHOD("set_domain_warp_fractal_gain", "domain_warp_gain"), &FastNoiseLite::set_domain_warp_fractal_gain);
+ ClassDB::bind_method(D_METHOD("get_domain_warp_fractal_gain"), &FastNoiseLite::get_domain_warp_fractal_gain);
+ ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "domain_warp_fractal_gain"), "set_domain_warp_fractal_gain", "get_domain_warp_fractal_gain");
+
+ ClassDB::bind_method(D_METHOD("_changed"), &FastNoiseLite::_changed);
+
+ BIND_ENUM_CONSTANT(TYPE_VALUE);
+ BIND_ENUM_CONSTANT(TYPE_VALUE_CUBIC);
+ BIND_ENUM_CONSTANT(TYPE_PERLIN);
+ BIND_ENUM_CONSTANT(TYPE_CELLULAR);
+ BIND_ENUM_CONSTANT(TYPE_SIMPLEX);
+ BIND_ENUM_CONSTANT(TYPE_SIMPLEX_SMOOTH);
+
+ BIND_ENUM_CONSTANT(FRACTAL_NONE);
+ BIND_ENUM_CONSTANT(FRACTAL_FBM);
+ BIND_ENUM_CONSTANT(FRACTAL_RIDGED);
+ BIND_ENUM_CONSTANT(FRACTAL_PING_PONG);
+
+ BIND_ENUM_CONSTANT(DISTANCE_EUCLIDEAN);
+ BIND_ENUM_CONSTANT(DISTANCE_EUCLIDEAN_SQUARED);
+ BIND_ENUM_CONSTANT(DISTANCE_MANHATTAN);
+ BIND_ENUM_CONSTANT(DISTANCE_HYBRID);
+
+ BIND_ENUM_CONSTANT(RETURN_CELL_VALUE);
+ BIND_ENUM_CONSTANT(RETURN_DISTANCE);
+ BIND_ENUM_CONSTANT(RETURN_DISTANCE2);
+ BIND_ENUM_CONSTANT(RETURN_DISTANCE2_ADD);
+ BIND_ENUM_CONSTANT(RETURN_DISTANCE2_SUB);
+ BIND_ENUM_CONSTANT(RETURN_DISTANCE2_MUL);
+ BIND_ENUM_CONSTANT(RETURN_DISTANCE2_DIV);
+
+ BIND_ENUM_CONSTANT(DOMAIN_WARP_SIMPLEX);
+ BIND_ENUM_CONSTANT(DOMAIN_WARP_SIMPLEX_REDUCED);
+ BIND_ENUM_CONSTANT(DOMAIN_WARP_BASIC_GRID);
+
+ BIND_ENUM_CONSTANT(DOMAIN_WARP_FRACTAL_NONE);
+ BIND_ENUM_CONSTANT(DOMAIN_WARP_FRACTAL_PROGRESSIVE);
+ BIND_ENUM_CONSTANT(DOMAIN_WARP_FRACTAL_INDEPENDENT);
+}
+
+void FastNoiseLite::_validate_property(PropertyInfo &property) const {
+ if (property.name.begins_with("cellular") && get_noise_type() != TYPE_CELLULAR) {
+ property.usage = PROPERTY_USAGE_NO_EDITOR;
+ return;
+ }
+
+ if (property.name != "fractal_type" && property.name.begins_with("fractal") && get_fractal_type() == FRACTAL_NONE) {
+ property.usage = PROPERTY_USAGE_NO_EDITOR;
+ return;
+ }
+
+ if (property.name == "fractal_ping_pong_strength" && get_fractal_type() != FRACTAL_PING_PONG) {
+ property.usage = PROPERTY_USAGE_NO_EDITOR;
+ return;
+ }
+
+ if (property.name != "domain_warp_enabled" && property.name.begins_with("domain_warp") && !domain_warp_enabled) {
+ property.usage = PROPERTY_USAGE_NO_EDITOR;
+ return;
+ }
+}
diff --git a/modules/noise/fastnoise_lite.h b/modules/noise/fastnoise_lite.h
new file mode 100644
index 0000000000..4635e26d28
--- /dev/null
+++ b/modules/noise/fastnoise_lite.h
@@ -0,0 +1,237 @@
+/*************************************************************************/
+/* fastnoise_lite.h */
+/*************************************************************************/
+/* This file is part of: */
+/* GODOT ENGINE */
+/* https://godotengine.org */
+/*************************************************************************/
+/* Copyright (c) 2007-2022 Juan Linietsky, Ariel Manzur. */
+/* Copyright (c) 2014-2022 Godot Engine contributors (cf. AUTHORS.md). */
+/* */
+/* Permission is hereby granted, free of charge, to any person obtaining */
+/* a copy of this software and associated documentation files (the */
+/* "Software"), to deal in the Software without restriction, including */
+/* without limitation the rights to use, copy, modify, merge, publish, */
+/* distribute, sublicense, and/or sell copies of the Software, and to */
+/* permit persons to whom the Software is furnished to do so, subject to */
+/* the following conditions: */
+/* */
+/* The above copyright notice and this permission notice shall be */
+/* included in all copies or substantial portions of the Software. */
+/* */
+/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
+/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
+/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
+/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
+/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
+/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
+/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
+/*************************************************************************/
+
+#ifndef FASTNOISE_LITE_H
+#define FASTNOISE_LITE_H
+
+#include "core/io/image.h"
+#include "core/object/ref_counted.h"
+#include "noise.h"
+#include "scene/resources/gradient.h"
+
+#include <thirdparty/noise/FastNoiseLite.h>
+
+typedef fastnoiselite::FastNoiseLite _FastNoiseLite;
+
+class FastNoiseLite : public Noise {
+ GDCLASS(FastNoiseLite, Noise);
+ OBJ_SAVE_TYPE(FastNoiseLite);
+
+public:
+ enum NoiseType {
+ TYPE_SIMPLEX = _FastNoiseLite::NoiseType_OpenSimplex2,
+ TYPE_SIMPLEX_SMOOTH = _FastNoiseLite::NoiseType_OpenSimplex2S,
+ TYPE_CELLULAR = _FastNoiseLite::NoiseType_Cellular,
+ TYPE_PERLIN = _FastNoiseLite::NoiseType_Perlin,
+ TYPE_VALUE_CUBIC = _FastNoiseLite::NoiseType_ValueCubic,
+ TYPE_VALUE = _FastNoiseLite::NoiseType_Value,
+ };
+
+ enum FractalType {
+ FRACTAL_NONE = _FastNoiseLite::FractalType_None,
+ FRACTAL_FBM = _FastNoiseLite::FractalType_FBm,
+ FRACTAL_RIDGED = _FastNoiseLite::FractalType_Ridged,
+ FRACTAL_PING_PONG = _FastNoiseLite::FractalType_PingPong,
+ };
+
+ enum CellularDistanceFunction {
+ DISTANCE_EUCLIDEAN = _FastNoiseLite::CellularDistanceFunction_Euclidean,
+ DISTANCE_EUCLIDEAN_SQUARED = _FastNoiseLite::CellularDistanceFunction_EuclideanSq,
+ DISTANCE_MANHATTAN = _FastNoiseLite::CellularDistanceFunction_Manhattan,
+ DISTANCE_HYBRID = _FastNoiseLite::CellularDistanceFunction_Hybrid
+ };
+
+ enum CellularReturnType {
+ RETURN_CELL_VALUE = _FastNoiseLite::CellularReturnType_CellValue,
+ RETURN_DISTANCE = _FastNoiseLite::CellularReturnType_Distance,
+ RETURN_DISTANCE2 = _FastNoiseLite::CellularReturnType_Distance2,
+ RETURN_DISTANCE2_ADD = _FastNoiseLite::CellularReturnType_Distance2Add,
+ RETURN_DISTANCE2_SUB = _FastNoiseLite::CellularReturnType_Distance2Sub,
+ RETURN_DISTANCE2_MUL = _FastNoiseLite::CellularReturnType_Distance2Mul,
+ RETURN_DISTANCE2_DIV = _FastNoiseLite::CellularReturnType_Distance2Div
+ };
+
+ enum DomainWarpType {
+ DOMAIN_WARP_SIMPLEX = _FastNoiseLite::DomainWarpType_OpenSimplex2,
+ DOMAIN_WARP_SIMPLEX_REDUCED = _FastNoiseLite::DomainWarpType_OpenSimplex2Reduced,
+ DOMAIN_WARP_BASIC_GRID = _FastNoiseLite::DomainWarpType_BasicGrid
+ };
+
+ enum DomainWarpFractalType {
+ DOMAIN_WARP_FRACTAL_NONE,
+ DOMAIN_WARP_FRACTAL_PROGRESSIVE,
+ DOMAIN_WARP_FRACTAL_INDEPENDENT
+ };
+
+protected:
+ static void _bind_methods();
+ virtual void _validate_property(PropertyInfo &property) const override;
+
+private:
+ _FastNoiseLite _noise;
+ _FastNoiseLite _domain_warp_noise;
+
+ Vector3 offset;
+ NoiseType noise_type;
+ Ref<Gradient> color_ramp;
+
+ int seed;
+ real_t frequency;
+ bool in_3d_space;
+
+ // Fractal specific.
+ FractalType fractal_type;
+ int fractal_octaves;
+ real_t fractal_lacunarity;
+ real_t fractal_gain;
+ real_t fractal_weighted_strength;
+ real_t fractal_pinp_pong_strength;
+
+ // Cellular specific.
+ CellularDistanceFunction cellular_distance_function;
+ CellularReturnType cellular_return_type;
+ real_t cellular_jitter;
+
+ // Domain warp specific.
+ bool domain_warp_enabled;
+ DomainWarpType domain_warp_type;
+ real_t domain_warp_frequency;
+ real_t domain_warp_amplitude;
+
+ DomainWarpFractalType domain_warp_fractal_type;
+ int domain_warp_fractal_octaves;
+ real_t domain_warp_fractal_lacunarity;
+ real_t domain_warp_fractal_gain;
+
+public:
+ FastNoiseLite();
+ ~FastNoiseLite();
+
+ // General noise settings.
+
+ void set_noise_type(NoiseType p_noise_type);
+ NoiseType get_noise_type() const;
+
+ void set_seed(int p_seed);
+ int get_seed() const;
+
+ void set_frequency(real_t p_freq);
+ real_t get_frequency() const;
+
+ void set_in_3d_space(bool p_enable);
+ bool is_in_3d_space() const;
+
+ void set_offset(Vector3 p_offset);
+ Vector3 get_offset() const;
+
+ void set_color_ramp(const Ref<Gradient> &p_gradient);
+ Ref<Gradient> get_color_ramp() const;
+
+ // Fractal specific.
+
+ void set_fractal_type(FractalType p_type);
+ FractalType get_fractal_type() const;
+
+ void set_fractal_octaves(int p_octaves);
+ int get_fractal_octaves() const;
+
+ void set_fractal_lacunarity(real_t p_lacunarity);
+ real_t get_fractal_lacunarity() const;
+
+ void set_fractal_gain(real_t p_gain);
+ real_t get_fractal_gain() const;
+
+ void set_fractal_weighted_strength(real_t p_weighted_strength);
+ real_t get_fractal_weighted_strength() const;
+
+ void set_fractal_ping_pong_strength(real_t p_ping_pong_strength);
+ real_t get_fractal_ping_pong_strength() const;
+
+ // Cellular specific.
+
+ void set_cellular_distance_function(CellularDistanceFunction p_func);
+ CellularDistanceFunction get_cellular_distance_function() const;
+
+ void set_cellular_return_type(CellularReturnType p_ret);
+ CellularReturnType get_cellular_return_type() const;
+
+ void set_cellular_jitter(real_t p_jitter);
+ real_t get_cellular_jitter() const;
+
+ // Domain warp specific.
+
+ void set_domain_warp_enabled(bool p_enabled);
+ bool is_domain_warp_enabled() const;
+
+ void set_domain_warp_type(DomainWarpType p_domain_warp_type);
+ DomainWarpType get_domain_warp_type() const;
+
+ void set_domain_warp_amplitude(real_t p_amplitude);
+ real_t get_domain_warp_amplitude() const;
+
+ void set_domain_warp_frequency(real_t p_frequency);
+ real_t get_domain_warp_frequency() const;
+
+ void set_domain_warp_fractal_type(DomainWarpFractalType p_domain_warp_fractal_type);
+ DomainWarpFractalType get_domain_warp_fractal_type() const;
+
+ void set_domain_warp_fractal_octaves(int p_octaves);
+ int get_domain_warp_fractal_octaves() const;
+
+ void set_domain_warp_fractal_lacunarity(real_t p_lacunarity);
+ real_t get_domain_warp_fractal_lacunarity() const;
+
+ void set_domain_warp_fractal_gain(real_t p_gain);
+ real_t get_domain_warp_fractal_gain() const;
+
+ // Interface methods.
+
+ Ref<Image> get_image(int p_width, int p_height, bool p_invert = false) override;
+ Ref<Image> get_seamless_image(int p_width, int p_height, bool p_invert = false, real_t p_blend_skirt = 0.1) override;
+
+ real_t get_noise_1d(real_t p_x) override;
+
+ real_t get_noise_2dv(Vector2 p_v) override;
+ real_t get_noise_2d(real_t p_x, real_t p_y) override;
+
+ real_t get_noise_3dv(Vector3 p_v) override;
+ real_t get_noise_3d(real_t p_x, real_t p_y, real_t p_z) override;
+
+ void _changed();
+};
+
+VARIANT_ENUM_CAST(FastNoiseLite::NoiseType);
+VARIANT_ENUM_CAST(FastNoiseLite::FractalType);
+VARIANT_ENUM_CAST(FastNoiseLite::CellularDistanceFunction);
+VARIANT_ENUM_CAST(FastNoiseLite::CellularReturnType);
+VARIANT_ENUM_CAST(FastNoiseLite::DomainWarpType);
+VARIANT_ENUM_CAST(FastNoiseLite::DomainWarpFractalType);
+
+#endif // FASTNOISE_LITE_H
diff --git a/modules/opensimplex/icons/NoiseTexture.svg b/modules/noise/icons/NoiseTexture.svg
index 479684cde2..479684cde2 100644
--- a/modules/opensimplex/icons/NoiseTexture.svg
+++ b/modules/noise/icons/NoiseTexture.svg
diff --git a/modules/fbx/data/fbx_bone.cpp b/modules/noise/noise.cpp
index 72aba20fd4..430e8c87cf 100644
--- a/modules/fbx/data/fbx_bone.cpp
+++ b/modules/noise/noise.cpp
@@ -1,5 +1,5 @@
/*************************************************************************/
-/* fbx_bone.cpp */
+/* noise.cpp */
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
@@ -28,29 +28,41 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
-#include "fbx_bone.h"
+#include "noise.h"
-#include "fbx_node.h"
-#include "import_state.h"
+Ref<Image> Noise::get_seamless_image(int p_width, int p_height, bool p_invert, real_t p_blend_skirt) {
+ int skirt_width = p_width * p_blend_skirt;
+ int skirt_height = p_height * p_blend_skirt;
+ int src_width = p_width + skirt_width;
+ int src_height = p_height + skirt_height;
-Ref<FBXNode> FBXSkinDeformer::get_link(const ImportState &state) const {
- print_verbose("bone name: " + bone->bone_name);
-
- // safe for when deformers must be polyfilled when skin has different count of binds to bones in the scene ;)
- if (!cluster) {
- return nullptr;
+ Ref<Image> src = get_image(src_width, src_height, p_invert);
+ bool grayscale = (src->get_format() == Image::FORMAT_L8);
+ if (grayscale) {
+ return _generate_seamless_image<uint8_t>(src, p_width, p_height, p_invert, p_blend_skirt);
+ } else {
+ return _generate_seamless_image<uint32_t>(src, p_width, p_height, p_invert, p_blend_skirt);
}
+}
- ERR_FAIL_COND_V_MSG(cluster->TargetNode() == nullptr, nullptr, "bone has invalid target node");
+// Template specialization for faster grayscale blending.
+template <>
+uint8_t Noise::_alpha_blend<uint8_t>(uint8_t p_bg, uint8_t p_fg, int p_alpha) const {
+ uint16_t alpha = p_alpha + 1;
+ uint16_t inv_alpha = 256 - p_alpha;
- Ref<FBXNode> link_node;
- uint64_t id = cluster->TargetNode()->ID();
- if (state.fbx_target_map.has(id)) {
- link_node = state.fbx_target_map[id];
- } else {
- print_error("link node not found for " + itos(id));
- }
+ return (uint8_t)((alpha * p_fg + inv_alpha * p_bg) >> 8);
+}
+
+void Noise::_bind_methods() {
+ // Noise functions.
+ ClassDB::bind_method(D_METHOD("get_noise_1d", "x"), &Noise::get_noise_1d);
+ ClassDB::bind_method(D_METHOD("get_noise_2d", "x", "y"), &Noise::get_noise_2d);
+ ClassDB::bind_method(D_METHOD("get_noise_2dv", "v"), &Noise::get_noise_2dv);
+ ClassDB::bind_method(D_METHOD("get_noise_3d", "x", "y", "z"), &Noise::get_noise_3d);
+ ClassDB::bind_method(D_METHOD("get_noise_3dv", "v"), &Noise::get_noise_3dv);
- // the node in space this is for, like if it's FOR a target.
- return link_node;
+ // Textures.
+ ClassDB::bind_method(D_METHOD("get_image", "width", "height", "invert"), &Noise::get_image, DEFVAL(false));
+ ClassDB::bind_method(D_METHOD("get_seamless_image", "width", "height", "invert", "skirt"), &Noise::get_seamless_image, DEFVAL(false), DEFVAL(0.1));
}
diff --git a/modules/noise/noise.h b/modules/noise/noise.h
new file mode 100644
index 0000000000..c05bc057da
--- /dev/null
+++ b/modules/noise/noise.h
@@ -0,0 +1,239 @@
+/*************************************************************************/
+/* noise.h */
+/*************************************************************************/
+/* This file is part of: */
+/* GODOT ENGINE */
+/* https://godotengine.org */
+/*************************************************************************/
+/* Copyright (c) 2007-2022 Juan Linietsky, Ariel Manzur. */
+/* Copyright (c) 2014-2022 Godot Engine contributors (cf. AUTHORS.md). */
+/* */
+/* Permission is hereby granted, free of charge, to any person obtaining */
+/* a copy of this software and associated documentation files (the */
+/* "Software"), to deal in the Software without restriction, including */
+/* without limitation the rights to use, copy, modify, merge, publish, */
+/* distribute, sublicense, and/or sell copies of the Software, and to */
+/* permit persons to whom the Software is furnished to do so, subject to */
+/* the following conditions: */
+/* */
+/* The above copyright notice and this permission notice shall be */
+/* included in all copies or substantial portions of the Software. */
+/* */
+/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
+/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
+/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
+/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
+/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
+/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
+/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
+/*************************************************************************/
+
+#ifndef NOISE_H
+#define NOISE_H
+
+#include "core/io/image.h"
+
+class Noise : public Resource {
+ GDCLASS(Noise, Resource);
+
+ // Helper struct for get_seamless_image(). See comments in .cpp for usage.
+ template <typename T>
+ struct img_buff {
+ T *img;
+ int width; // Array dimensions & default modulo for image.
+ int height;
+ int offset_x; // Offset index location on image (wrapped by specified modulo).
+ int offset_y;
+ int alt_width; // Alternate module for image.
+ int alt_height;
+
+ enum ALT_MODULO {
+ DEFAULT = 0,
+ ALT_X,
+ ALT_Y,
+ ALT_XY
+ };
+
+ // Multi-dimensional array indexer (e.g. img[x][y]) that supports multiple modulos.
+ T &operator()(int x, int y, ALT_MODULO mode = DEFAULT) {
+ switch (mode) {
+ case ALT_XY:
+ return img[(x + offset_x) % alt_width + ((y + offset_y) % alt_height) * width];
+ case ALT_X:
+ return img[(x + offset_x) % alt_width + ((y + offset_y) % height) * width];
+ case ALT_Y:
+ return img[(x + offset_x) % width + ((y + offset_y) % alt_height) * width];
+ default:
+ return img[(x + offset_x) % width + ((y + offset_y) % height) * width];
+ }
+ }
+ };
+
+ union l2c {
+ uint32_t l;
+ uint8_t c[4];
+ struct {
+ uint8_t r;
+ uint8_t g;
+ uint8_t b;
+ uint8_t a;
+ };
+ };
+
+ template <typename T>
+ Ref<Image> _generate_seamless_image(Ref<Image> p_src, int p_width, int p_height, bool p_invert, real_t p_blend_skirt) {
+ /*
+ To make a seamless image, we swap the quadrants so the edges are perfect matches.
+ We initially get a 10% larger image so we have an overlap we can use to blend over the seams.
+
+ Noise::img_buff::operator() acts as a multi-dimensional array indexer.
+ It does the array math, translates between the flipped and non-flipped quadrants, and manages offsets and modulos.
+
+ Here is how the larger source image and final output image map to each other:
+
+ Output size = p_width*p_height Source w/ extra 10% skirt `s` size = src_width*src_height
+ Q1 Q2 Q4 Q3 s1
+ Q3 Q4 Q2 Q1 s2
+ s5 s4 s3
+
+ All of the loops use output coordinates, so Output:Q1 == Source:Q1
+ Ex: Output(half_width, half_height) [the midpoint, corner of Q1/Q4] =>
+ on Source it's translated to
+ corner of Q1/s3 unless the ALT_XY modulo moves it to Q4
+ */
+
+ int skirt_width = MAX(1, p_width * p_blend_skirt);
+ int skirt_height = MAX(1, p_height * p_blend_skirt);
+ int src_width = p_width + skirt_width;
+ int src_height = p_height + skirt_height;
+ int half_width = p_width * .5;
+ int half_height = p_height * .5;
+ int skirt_edge_x = half_width + skirt_width;
+ int skirt_edge_y = half_height + skirt_height;
+
+ Vector<uint8_t> dest;
+ dest.resize(p_width * p_height * Image::get_format_pixel_size(p_src->get_format()));
+
+ img_buff<T> rd_src = {
+ (T *)p_src->get_data().ptr(),
+ src_width, src_height,
+ half_width, half_height,
+ p_width, p_height
+ };
+
+ // `wr` is setup for straight x/y coordinate array access.
+ img_buff<T> wr = {
+ (T *)dest.ptrw(),
+ p_width, p_height,
+ 0, 0, 0, 0
+ };
+ // `rd_dest` is a readable pointer to `wr`, i.e. what has already been written to the output buffer.
+ img_buff<T> rd_dest = {
+ (T *)dest.ptr(),
+ p_width, p_height,
+ 0, 0, 0, 0
+ };
+
+ // Swap the quadrants to make edges seamless.
+ for (int y = 0; y < p_height; y++) {
+ for (int x = 0; x < p_width; x++) {
+ // rd_src has a half offset and the shorter modulo ignores the skirt.
+ // It reads and writes in Q1-4 order (see map above), skipping the skirt.
+ wr(x, y) = rd_src(x, y, img_buff<T>::ALT_XY);
+ }
+ }
+
+ // Blend the vertical skirt over the middle seam.
+ for (int x = half_width; x < skirt_edge_x; x++) {
+ int alpha = 255 * (1 - Math::smoothstep(.1f, .9f, float(x - half_width) / float(skirt_width)));
+ for (int y = 0; y < p_height; y++) {
+ // Skip the center square
+ if (y == half_height) {
+ y = skirt_edge_y - 1;
+ } else {
+ // Starts reading at s2, ALT_Y skips s3, and continues with s1.
+ wr(x, y) = _alpha_blend<T>(rd_dest(x, y), rd_src(x, y, img_buff<T>::ALT_Y), alpha);
+ }
+ }
+ }
+
+ // Blend the horizontal skirt over the middle seam.
+ for (int y = half_height; y < skirt_edge_y; y++) {
+ int alpha = 255 * (1 - Math::smoothstep(.1f, .9f, float(y - half_height) / float(skirt_height)));
+ for (int x = 0; x < p_width; x++) {
+ // Skip the center square
+ if (x == half_width) {
+ x = skirt_edge_x - 1;
+ } else {
+ // Starts reading at s4, skips s3, continues with s5.
+ wr(x, y) = _alpha_blend<T>(rd_dest(x, y), rd_src(x, y, img_buff<T>::ALT_X), alpha);
+ }
+ }
+ }
+
+ // Fill in the center square. Wr starts at the top left of Q4, which is the equivalent of the top left of s3, unless a modulo is used.
+ for (int y = half_height; y < skirt_edge_y; y++) {
+ for (int x = half_width; x < skirt_edge_x; x++) {
+ int xpos = 255 * (1 - Math::smoothstep(.1f, .9f, float(x - half_width) / float(skirt_width)));
+ int ypos = 255 * (1 - Math::smoothstep(.1f, .9f, float(y - half_height) / float(skirt_height)));
+
+ // Blend s3(Q1) onto s5(Q2) for the top half.
+ T top_blend = _alpha_blend<T>(rd_src(x, y, img_buff<T>::ALT_X), rd_src(x, y, img_buff<T>::DEFAULT), xpos);
+ // Blend s1(Q3) onto Q4 for the bottom half.
+ T bottom_blend = _alpha_blend<T>(rd_src(x, y, img_buff<T>::ALT_XY), rd_src(x, y, img_buff<T>::ALT_Y), xpos);
+ // Blend the top half onto the bottom half.
+ wr(x, y) = _alpha_blend<T>(bottom_blend, top_blend, ypos);
+ }
+ }
+ Ref<Image> image = memnew(Image(p_width, p_height, false, p_src->get_format(), dest));
+ p_src.unref();
+ return image;
+ }
+
+ template <typename T>
+ T _alpha_blend(T p_bg, T p_fg, int p_alpha) const {
+ l2c fg, bg, out;
+
+ fg.l = p_fg;
+ bg.l = p_bg;
+
+ uint16_t alpha;
+ uint16_t inv_alpha;
+
+ // If no alpha argument specified, use the alpha channel in the color
+ if (p_alpha == -1) {
+ alpha = fg.c[3] + 1;
+ inv_alpha = 256 - fg.c[3];
+ } else {
+ alpha = p_alpha + 1;
+ inv_alpha = 256 - p_alpha;
+ }
+
+ out.c[0] = (uint8_t)((alpha * fg.c[0] + inv_alpha * bg.c[0]) >> 8);
+ out.c[1] = (uint8_t)((alpha * fg.c[1] + inv_alpha * bg.c[1]) >> 8);
+ out.c[2] = (uint8_t)((alpha * fg.c[2] + inv_alpha * bg.c[2]) >> 8);
+ out.c[3] = 0xFF;
+
+ return out.l;
+ }
+
+protected:
+ static void _bind_methods();
+
+public:
+ // Virtual destructor so we can delete any Noise derived object when referenced as a Noise*.
+ virtual ~Noise() {}
+
+ virtual real_t get_noise_1d(real_t p_x) = 0;
+
+ virtual real_t get_noise_2dv(Vector2 p_v) = 0;
+ virtual real_t get_noise_2d(real_t p_x, real_t p_y) = 0;
+
+ virtual real_t get_noise_3dv(Vector3 p_v) = 0;
+ virtual real_t get_noise_3d(real_t p_x, real_t p_y, real_t p_z) = 0;
+
+ virtual Ref<Image> get_image(int p_width, int p_height, bool p_invert = false) = 0;
+ virtual Ref<Image> get_seamless_image(int p_width, int p_height, bool p_invert = false, real_t p_blend_skirt = 0.1);
+};
+
+#endif // NOISE_H
diff --git a/modules/opensimplex/noise_texture.cpp b/modules/noise/noise_texture.cpp
index f3342dfd84..3721043a09 100644
--- a/modules/opensimplex/noise_texture.cpp
+++ b/modules/noise/noise_texture.cpp
@@ -31,9 +31,10 @@
#include "noise_texture.h"
#include "core/core_string_names.h"
+#include "noise.h"
NoiseTexture::NoiseTexture() {
- noise = Ref<OpenSimplexNoise>();
+ noise = Ref<Noise>();
_queue_update();
}
@@ -52,12 +53,15 @@ void NoiseTexture::_bind_methods() {
ClassDB::bind_method(D_METHOD("set_noise", "noise"), &NoiseTexture::set_noise);
ClassDB::bind_method(D_METHOD("get_noise"), &NoiseTexture::get_noise);
- ClassDB::bind_method(D_METHOD("set_noise_offset", "noise_offset"), &NoiseTexture::set_noise_offset);
- ClassDB::bind_method(D_METHOD("get_noise_offset"), &NoiseTexture::get_noise_offset);
+ ClassDB::bind_method(D_METHOD("set_invert", "invert"), &NoiseTexture::set_invert);
+ ClassDB::bind_method(D_METHOD("get_invert"), &NoiseTexture::get_invert);
ClassDB::bind_method(D_METHOD("set_seamless", "seamless"), &NoiseTexture::set_seamless);
ClassDB::bind_method(D_METHOD("get_seamless"), &NoiseTexture::get_seamless);
+ ClassDB::bind_method(D_METHOD("set_seamless_blend_skirt", "seamless_blend_skirt"), &NoiseTexture::set_seamless_blend_skirt);
+ ClassDB::bind_method(D_METHOD("get_seamless_blend_skirt"), &NoiseTexture::get_seamless_blend_skirt);
+
ClassDB::bind_method(D_METHOD("set_as_normal_map", "as_normal_map"), &NoiseTexture::set_as_normal_map);
ClassDB::bind_method(D_METHOD("is_normal_map"), &NoiseTexture::is_normal_map);
@@ -70,11 +74,12 @@ void NoiseTexture::_bind_methods() {
ADD_PROPERTY(PropertyInfo(Variant::INT, "width", PROPERTY_HINT_RANGE, "1,2048,1,or_greater"), "set_width", "get_width");
ADD_PROPERTY(PropertyInfo(Variant::INT, "height", PROPERTY_HINT_RANGE, "1,2048,1,or_greater"), "set_height", "get_height");
+ ADD_PROPERTY(PropertyInfo(Variant::BOOL, "invert"), "set_invert", "get_invert");
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "seamless"), "set_seamless", "get_seamless");
+ ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "seamless_blend_skirt", PROPERTY_HINT_RANGE, "0.05,1,0.001"), "set_seamless_blend_skirt", "get_seamless_blend_skirt");
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "as_normal_map"), "set_as_normal_map", "is_normal_map");
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "bump_strength", PROPERTY_HINT_RANGE, "0,32,0.1,or_greater"), "set_bump_strength", "get_bump_strength");
- ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "noise", PROPERTY_HINT_RESOURCE_TYPE, "OpenSimplexNoise"), "set_noise", "get_noise");
- ADD_PROPERTY(PropertyInfo(Variant::VECTOR2, "noise_offset"), "set_noise_offset", "get_noise_offset");
+ ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "noise", PROPERTY_HINT_RESOURCE_TYPE, "Noise"), "set_noise", "get_noise");
}
void NoiseTexture::_validate_property(PropertyInfo &property) const {
@@ -83,6 +88,12 @@ void NoiseTexture::_validate_property(PropertyInfo &property) const {
property.usage = PROPERTY_USAGE_NO_EDITOR | PROPERTY_USAGE_INTERNAL;
}
}
+
+ if (property.name == "seamless_blend_skirt") {
+ if (!seamless) {
+ property.usage = PROPERTY_USAGE_NO_EDITOR;
+ }
+ }
}
void NoiseTexture::_set_texture_image(const Ref<Image> &p_image) {
@@ -123,7 +134,7 @@ void NoiseTexture::_queue_update() {
Ref<Image> NoiseTexture::_generate_texture() {
// Prevent memdelete due to unref() on other thread.
- Ref<OpenSimplexNoise> ref_noise = noise;
+ Ref<Noise> ref_noise = noise;
if (ref_noise.is_null()) {
return Ref<Image>();
@@ -132,9 +143,9 @@ Ref<Image> NoiseTexture::_generate_texture() {
Ref<Image> image;
if (seamless) {
- image = ref_noise->get_seamless_image(size.x);
+ image = ref_noise->get_seamless_image(size.x, size.y, invert, seamless_blend_skirt);
} else {
- image = ref_noise->get_image(size.x, size.y, noise_offset);
+ image = ref_noise->get_image(size.x, size.y, invert);
}
if (as_normal_map) {
@@ -168,7 +179,7 @@ void NoiseTexture::_update_texture() {
update_queued = false;
}
-void NoiseTexture::set_noise(Ref<OpenSimplexNoise> p_noise) {
+void NoiseTexture::set_noise(Ref<Noise> p_noise) {
if (p_noise == noise) {
return;
}
@@ -182,7 +193,7 @@ void NoiseTexture::set_noise(Ref<OpenSimplexNoise> p_noise) {
_queue_update();
}
-Ref<OpenSimplexNoise> NoiseTexture::get_noise() {
+Ref<Noise> NoiseTexture::get_noise() {
return noise;
}
@@ -204,26 +215,42 @@ void NoiseTexture::set_height(int p_height) {
_queue_update();
}
-void NoiseTexture::set_noise_offset(Vector2 p_noise_offset) {
- if (noise_offset == p_noise_offset) {
+void NoiseTexture::set_invert(bool p_invert) {
+ if (p_invert == invert) {
return;
}
- noise_offset = p_noise_offset;
+ invert = p_invert;
_queue_update();
}
+bool NoiseTexture::get_invert() const {
+ return invert;
+}
+
void NoiseTexture::set_seamless(bool p_seamless) {
if (p_seamless == seamless) {
return;
}
seamless = p_seamless;
_queue_update();
+ notify_property_list_changed();
}
bool NoiseTexture::get_seamless() {
return seamless;
}
+void NoiseTexture::set_seamless_blend_skirt(real_t p_blend_skirt) {
+ if (p_blend_skirt == seamless_blend_skirt) {
+ return;
+ }
+ seamless_blend_skirt = p_blend_skirt;
+ _queue_update();
+}
+real_t NoiseTexture::get_seamless_blend_skirt() {
+ return seamless_blend_skirt;
+}
+
void NoiseTexture::set_as_normal_map(bool p_as_normal_map) {
if (p_as_normal_map == as_normal_map) {
return;
@@ -259,10 +286,6 @@ int NoiseTexture::get_height() const {
return size.y;
}
-Vector2 NoiseTexture::get_noise_offset() const {
- return noise_offset;
-}
-
RID NoiseTexture::get_rid() const {
if (!texture.is_valid()) {
texture = RS::get_singleton()->texture_2d_placeholder_create();
diff --git a/modules/opensimplex/noise_texture.h b/modules/noise/noise_texture.h
index ee8f88aaca..2a94df39d4 100644
--- a/modules/opensimplex/noise_texture.h
+++ b/modules/noise/noise_texture.h
@@ -31,10 +31,10 @@
#ifndef NOISE_TEXTURE_H
#define NOISE_TEXTURE_H
-#include "open_simplex_noise.h"
+#include "noise.h"
-#include "core/io/image.h"
#include "core/object/ref_counted.h"
+#include "scene/resources/texture.h"
class NoiseTexture : public Texture2D {
GDCLASS(NoiseTexture, Texture2D);
@@ -51,10 +51,12 @@ private:
mutable RID texture;
uint32_t flags = 0;
- Ref<OpenSimplexNoise> noise;
+ Ref<Noise> noise;
+ bool invert = false;
Vector2i size = Vector2i(512, 512);
Vector2 noise_offset;
bool seamless = false;
+ real_t seamless_blend_skirt = 0.1;
bool as_normal_map = false;
float bump_strength = 8.0;
@@ -71,18 +73,21 @@ protected:
virtual void _validate_property(PropertyInfo &property) const override;
public:
- void set_noise(Ref<OpenSimplexNoise> p_noise);
- Ref<OpenSimplexNoise> get_noise();
+ void set_noise(Ref<Noise> p_noise);
+ Ref<Noise> get_noise();
void set_width(int p_width);
void set_height(int p_height);
- void set_noise_offset(Vector2 p_noise_offset);
- Vector2 get_noise_offset() const;
+ void set_invert(bool p_invert);
+ bool get_invert() const;
void set_seamless(bool p_seamless);
bool get_seamless();
+ void set_seamless_blend_skirt(real_t p_blend_skirt);
+ real_t get_seamless_blend_skirt();
+
void set_as_normal_map(bool p_as_normal_map);
bool is_normal_map();
diff --git a/modules/opensimplex/register_types.cpp b/modules/noise/register_types.cpp
index 30dfdc3764..81bb0317c1 100644
--- a/modules/opensimplex/register_types.cpp
+++ b/modules/noise/register_types.cpp
@@ -29,13 +29,16 @@
/*************************************************************************/
#include "register_types.h"
+
+#include "fastnoise_lite.h"
+#include "noise.h"
#include "noise_texture.h"
-#include "open_simplex_noise.h"
-void register_opensimplex_types() {
- GDREGISTER_CLASS(OpenSimplexNoise);
+void register_noise_types() {
GDREGISTER_CLASS(NoiseTexture);
+ GDREGISTER_ABSTRACT_CLASS(Noise);
+ GDREGISTER_CLASS(FastNoiseLite);
}
-void unregister_opensimplex_types() {
+void unregister_noise_types() {
}
diff --git a/modules/fbx/register_types.h b/modules/noise/register_types.h
index 6e3cc0dc46..e441a48518 100644
--- a/modules/fbx/register_types.h
+++ b/modules/noise/register_types.h
@@ -28,10 +28,10 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
-#ifndef FBX_REGISTER_TYPES_H
-#define FBX_REGISTER_TYPES_H
+#ifndef NOISE_REGISTER_TYPES_H
+#define NOISE_REGISTER_TYPES_H
-void register_fbx_types();
-void unregister_fbx_types();
+void register_noise_types();
+void unregister_noise_types();
-#endif // FBX_REGISTER_TYPES_H
+#endif // NOISE_REGISTER_TYPES_H
diff --git a/modules/opensimplex/doc_classes/OpenSimplexNoise.xml b/modules/opensimplex/doc_classes/OpenSimplexNoise.xml
deleted file mode 100644
index 51dd83efc3..0000000000
--- a/modules/opensimplex/doc_classes/OpenSimplexNoise.xml
+++ /dev/null
@@ -1,112 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<class name="OpenSimplexNoise" inherits="Resource" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../doc/class.xsd">
- <brief_description>
- Noise generator based on Open Simplex.
- </brief_description>
- <description>
- 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:
- [codeblock]
- var noise = OpenSimplexNoise.new()
-
- # Configure
- noise.seed = randi()
- noise.octaves = 4
- noise.period = 20.0
- noise.persistence = 0.8
-
- # Sample
- print("Values:")
- print(noise.get_noise_2d(1.0, 1.0))
- print(noise.get_noise_3d(0.5, 3.0, 15.0))
- print(noise.get_noise_4d(0.5, 1.9, 4.7, 0.0))
- [/codeblock]
- </description>
- <tutorials>
- </tutorials>
- <methods>
- <method name="get_image" qualifiers="const">
- <return type="Image" />
- <argument index="0" name="width" type="int" />
- <argument index="1" name="height" type="int" />
- <argument index="2" name="noise_offset" type="Vector2" default="Vector2(0, 0)" />
- <description>
- 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.
- </description>
- </method>
- <method name="get_noise_1d" qualifiers="const">
- <return type="float" />
- <argument index="0" name="x" type="float" />
- <description>
- Returns the 1D noise value [code][-1,1][/code] at the given x-coordinate.
- [b]Note:[/b] This method actually returns the 2D noise value [code][-1,1][/code] with fixed y-coordinate value 0.0.
- </description>
- </method>
- <method name="get_noise_2d" qualifiers="const">
- <return type="float" />
- <argument index="0" name="x" type="float" />
- <argument index="1" name="y" type="float" />
- <description>
- Returns the 2D noise value [code][-1,1][/code] at the given position.
- </description>
- </method>
- <method name="get_noise_2dv" qualifiers="const">
- <return type="float" />
- <argument index="0" name="pos" type="Vector2" />
- <description>
- Returns the 2D noise value [code][-1,1][/code] at the given position.
- </description>
- </method>
- <method name="get_noise_3d" qualifiers="const">
- <return type="float" />
- <argument index="0" name="x" type="float" />
- <argument index="1" name="y" type="float" />
- <argument index="2" name="z" type="float" />
- <description>
- Returns the 3D noise value [code][-1,1][/code] at the given position.
- </description>
- </method>
- <method name="get_noise_3dv" qualifiers="const">
- <return type="float" />
- <argument index="0" name="pos" type="Vector3" />
- <description>
- Returns the 3D noise value [code][-1,1][/code] at the given position.
- </description>
- </method>
- <method name="get_noise_4d" qualifiers="const">
- <return type="float" />
- <argument index="0" name="x" type="float" />
- <argument index="1" name="y" type="float" />
- <argument index="2" name="z" type="float" />
- <argument index="3" name="w" type="float" />
- <description>
- Returns the 4D noise value [code][-1,1][/code] at the given position.
- </description>
- </method>
- <method name="get_seamless_image" qualifiers="const">
- <return type="Image" />
- <argument index="0" name="size" type="int" />
- <description>
- 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]).
- [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.
- </description>
- </method>
- </methods>
- <members>
- <member name="lacunarity" type="float" setter="set_lacunarity" getter="get_lacunarity" default="2.0">
- Difference in period between [member octaves].
- </member>
- <member name="octaves" type="int" setter="set_octaves" getter="get_octaves" default="3">
- 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.
- [b]Note:[/b] The maximum allowed value is 9.
- </member>
- <member name="period" type="float" setter="set_period" getter="get_period" default="64.0">
- Period of the base octave. A lower period results in a higher-frequency noise (more value changes across the same distance).
- </member>
- <member name="persistence" type="float" setter="set_persistence" getter="get_persistence" default="0.5">
- 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.
- </member>
- <member name="seed" type="int" setter="set_seed" getter="get_seed" default="0">
- Seed used to generate random values, different seeds will generate different noise maps.
- </member>
- </members>
-</class>
diff --git a/modules/opensimplex/open_simplex_noise.cpp b/modules/opensimplex/open_simplex_noise.cpp
deleted file mode 100644
index b7c901fd06..0000000000
--- a/modules/opensimplex/open_simplex_noise.cpp
+++ /dev/null
@@ -1,250 +0,0 @@
-/*************************************************************************/
-/* open_simplex_noise.cpp */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* https://godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2022 Juan Linietsky, Ariel Manzur. */
-/* Copyright (c) 2014-2022 Godot Engine contributors (cf. AUTHORS.md). */
-/* */
-/* Permission is hereby granted, free of charge, to any person obtaining */
-/* a copy of this software and associated documentation files (the */
-/* "Software"), to deal in the Software without restriction, including */
-/* without limitation the rights to use, copy, modify, merge, publish, */
-/* distribute, sublicense, and/or sell copies of the Software, and to */
-/* permit persons to whom the Software is furnished to do so, subject to */
-/* the following conditions: */
-/* */
-/* The above copyright notice and this permission notice shall be */
-/* included in all copies or substantial portions of the Software. */
-/* */
-/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
-/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
-/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
-/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
-/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
-/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
-/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
-/*************************************************************************/
-
-#include "open_simplex_noise.h"
-
-#include "core/core_string_names.h"
-
-OpenSimplexNoise::OpenSimplexNoise() {
- _init_seeds();
-}
-
-OpenSimplexNoise::~OpenSimplexNoise() {
-}
-
-void OpenSimplexNoise::_init_seeds() {
- for (int i = 0; i < MAX_OCTAVES; ++i) {
- open_simplex_noise(seed + i * 2, &(contexts[i]));
- }
-}
-
-void OpenSimplexNoise::set_seed(int p_seed) {
- if (seed == p_seed) {
- return;
- }
-
- seed = p_seed;
-
- _init_seeds();
-
- emit_changed();
-}
-
-int OpenSimplexNoise::get_seed() const {
- return seed;
-}
-
-void OpenSimplexNoise::set_octaves(int p_octaves) {
- if (p_octaves == octaves) {
- return;
- }
-
- ERR_FAIL_COND_MSG(p_octaves > MAX_OCTAVES, vformat("The number of OpenSimplexNoise octaves is limited to %d; ignoring the new value.", MAX_OCTAVES));
-
- octaves = CLAMP(p_octaves, 1, MAX_OCTAVES);
- emit_changed();
-}
-
-void OpenSimplexNoise::set_period(float p_period) {
- if (p_period == period) {
- return;
- }
- period = p_period;
- emit_changed();
-}
-
-void OpenSimplexNoise::set_persistence(float p_persistence) {
- if (p_persistence == persistence) {
- return;
- }
- persistence = p_persistence;
- emit_changed();
-}
-
-void OpenSimplexNoise::set_lacunarity(float p_lacunarity) {
- if (p_lacunarity == lacunarity) {
- return;
- }
- lacunarity = p_lacunarity;
- emit_changed();
-}
-
-Ref<Image> OpenSimplexNoise::get_image(int p_width, int p_height, const Vector2 &p_noise_offset) const {
- Vector<uint8_t> data;
- data.resize(p_width * p_height);
-
- uint8_t *wd8 = data.ptrw();
-
- for (int i = 0; i < p_height; i++) {
- for (int j = 0; j < p_width; j++) {
- float v = get_noise_2d(float(j) + p_noise_offset.x, float(i) + p_noise_offset.y);
- v = v * 0.5 + 0.5; // Normalize [0..1]
- wd8[(i * p_width + j)] = uint8_t(CLAMP(v * 255.0, 0, 255));
- }
- }
-
- Ref<Image> image = memnew(Image(p_width, p_height, false, Image::FORMAT_L8, data));
- return image;
-}
-
-Ref<Image> OpenSimplexNoise::get_seamless_image(int p_size) const {
- Vector<uint8_t> data;
- data.resize(p_size * p_size);
-
- uint8_t *wd8 = data.ptrw();
-
- for (int i = 0; i < p_size; i++) {
- for (int j = 0; j < p_size; j++) {
- float ii = (float)i / (float)p_size;
- float jj = (float)j / (float)p_size;
-
- ii *= Math_TAU;
- jj *= Math_TAU;
-
- float radius = p_size / Math_TAU;
-
- float x = radius * Math::sin(jj);
- float y = radius * Math::cos(jj);
- float z = radius * Math::sin(ii);
- float w = radius * Math::cos(ii);
- float v = get_noise_4d(x, y, z, w);
-
- v = v * 0.5 + 0.5; // Normalize [0..1]
- wd8[(i * p_size + j)] = uint8_t(CLAMP(v * 255.0, 0, 255));
- }
- }
-
- Ref<Image> image = memnew(Image(p_size, p_size, false, Image::FORMAT_L8, data));
- return image;
-}
-
-void OpenSimplexNoise::_bind_methods() {
- ClassDB::bind_method(D_METHOD("get_seed"), &OpenSimplexNoise::get_seed);
- ClassDB::bind_method(D_METHOD("set_seed", "seed"), &OpenSimplexNoise::set_seed);
-
- ClassDB::bind_method(D_METHOD("set_octaves", "octave_count"), &OpenSimplexNoise::set_octaves);
- ClassDB::bind_method(D_METHOD("get_octaves"), &OpenSimplexNoise::get_octaves);
-
- ClassDB::bind_method(D_METHOD("set_period", "period"), &OpenSimplexNoise::set_period);
- ClassDB::bind_method(D_METHOD("get_period"), &OpenSimplexNoise::get_period);
-
- ClassDB::bind_method(D_METHOD("set_persistence", "persistence"), &OpenSimplexNoise::set_persistence);
- ClassDB::bind_method(D_METHOD("get_persistence"), &OpenSimplexNoise::get_persistence);
-
- ClassDB::bind_method(D_METHOD("set_lacunarity", "lacunarity"), &OpenSimplexNoise::set_lacunarity);
- ClassDB::bind_method(D_METHOD("get_lacunarity"), &OpenSimplexNoise::get_lacunarity);
-
- ClassDB::bind_method(D_METHOD("get_image", "width", "height", "noise_offset"), &OpenSimplexNoise::get_image, DEFVAL(Vector2()));
- ClassDB::bind_method(D_METHOD("get_seamless_image", "size"), &OpenSimplexNoise::get_seamless_image);
-
- ClassDB::bind_method(D_METHOD("get_noise_1d", "x"), &OpenSimplexNoise::get_noise_1d);
- ClassDB::bind_method(D_METHOD("get_noise_2d", "x", "y"), &OpenSimplexNoise::get_noise_2d);
- ClassDB::bind_method(D_METHOD("get_noise_3d", "x", "y", "z"), &OpenSimplexNoise::get_noise_3d);
- ClassDB::bind_method(D_METHOD("get_noise_4d", "x", "y", "z", "w"), &OpenSimplexNoise::get_noise_4d);
-
- ClassDB::bind_method(D_METHOD("get_noise_2dv", "pos"), &OpenSimplexNoise::get_noise_2dv);
- ClassDB::bind_method(D_METHOD("get_noise_3dv", "pos"), &OpenSimplexNoise::get_noise_3dv);
-
- ADD_PROPERTY(PropertyInfo(Variant::INT, "seed"), "set_seed", "get_seed");
- ADD_PROPERTY(PropertyInfo(Variant::INT, "octaves", PROPERTY_HINT_RANGE, vformat("1,%d,1", MAX_OCTAVES)), "set_octaves", "get_octaves");
- ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "period", PROPERTY_HINT_RANGE, "0.1,256.0,0.1"), "set_period", "get_period");
- ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "persistence", PROPERTY_HINT_RANGE, "0.0,1.0,0.001"), "set_persistence", "get_persistence");
- ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "lacunarity", PROPERTY_HINT_RANGE, "0.1,4.0,0.01"), "set_lacunarity", "get_lacunarity");
-}
-
-float OpenSimplexNoise::get_noise_1d(float x) const {
- return get_noise_2d(x, 1.0);
-}
-
-float OpenSimplexNoise::get_noise_2d(float x, float y) const {
- x /= period;
- y /= period;
-
- float amp = 1.0;
- float max = 1.0;
- float sum = _get_octave_noise_2d(0, x, y);
-
- int i = 0;
- while (++i < octaves) {
- x *= lacunarity;
- y *= lacunarity;
- amp *= persistence;
- max += amp;
- sum += _get_octave_noise_2d(i, x, y) * amp;
- }
-
- return sum / max;
-}
-
-float OpenSimplexNoise::get_noise_3d(float x, float y, float z) const {
- x /= period;
- y /= period;
- z /= period;
-
- float amp = 1.0;
- float max = 1.0;
- float sum = _get_octave_noise_3d(0, x, y, z);
-
- int i = 0;
- while (++i < octaves) {
- x *= lacunarity;
- y *= lacunarity;
- z *= lacunarity;
- amp *= persistence;
- max += amp;
- sum += _get_octave_noise_3d(i, x, y, z) * amp;
- }
-
- return sum / max;
-}
-
-float OpenSimplexNoise::get_noise_4d(float x, float y, float z, float w) const {
- x /= period;
- y /= period;
- z /= period;
- w /= period;
-
- float amp = 1.0;
- float max = 1.0;
- float sum = _get_octave_noise_4d(0, x, y, z, w);
-
- int i = 0;
- while (++i < octaves) {
- x *= lacunarity;
- y *= lacunarity;
- z *= lacunarity;
- w *= lacunarity;
- amp *= persistence;
- max += amp;
- sum += _get_octave_noise_4d(i, x, y, z, w) * amp;
- }
-
- return sum / max;
-}
diff --git a/modules/opensimplex/open_simplex_noise.h b/modules/opensimplex/open_simplex_noise.h
deleted file mode 100644
index c34f998b78..0000000000
--- a/modules/opensimplex/open_simplex_noise.h
+++ /dev/null
@@ -1,99 +0,0 @@
-/*************************************************************************/
-/* open_simplex_noise.h */
-/*************************************************************************/
-/* This file is part of: */
-/* GODOT ENGINE */
-/* https://godotengine.org */
-/*************************************************************************/
-/* Copyright (c) 2007-2022 Juan Linietsky, Ariel Manzur. */
-/* Copyright (c) 2014-2022 Godot Engine contributors (cf. AUTHORS.md). */
-/* */
-/* Permission is hereby granted, free of charge, to any person obtaining */
-/* a copy of this software and associated documentation files (the */
-/* "Software"), to deal in the Software without restriction, including */
-/* without limitation the rights to use, copy, modify, merge, publish, */
-/* distribute, sublicense, and/or sell copies of the Software, and to */
-/* permit persons to whom the Software is furnished to do so, subject to */
-/* the following conditions: */
-/* */
-/* The above copyright notice and this permission notice shall be */
-/* included in all copies or substantial portions of the Software. */
-/* */
-/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
-/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
-/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
-/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
-/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
-/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
-/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
-/*************************************************************************/
-
-#ifndef OPEN_SIMPLEX_NOISE_H
-#define OPEN_SIMPLEX_NOISE_H
-
-#include "core/io/image.h"
-#include "core/object/ref_counted.h"
-#include "scene/resources/texture.h"
-
-#include "thirdparty/misc/open-simplex-noise.h"
-
-class OpenSimplexNoise : public Resource {
- GDCLASS(OpenSimplexNoise, Resource);
- OBJ_SAVE_TYPE(OpenSimplexNoise);
-
- // The maximum number of octaves allowed. Note that these are statically allocated.
- // Higher values become exponentially slower, so this shouldn't be set too high
- // to avoid freezing the editor for long periods of time.
- static const int MAX_OCTAVES = 9;
-
- osn_context contexts[MAX_OCTAVES];
-
- int seed = 0;
- float persistence = 0.5; // Controls details, value in [0,1]. Higher increases grain, lower increases smoothness.
- int octaves = 3; // Number of noise layers
- float period = 64.0; // Distance above which we start to see similarities. The higher, the longer "hills" will be on a terrain.
- float lacunarity = 2.0; // Controls period change across octaves. 2 is usually a good value to address all detail levels.
-
-public:
- OpenSimplexNoise();
- ~OpenSimplexNoise();
-
- void _init_seeds();
-
- void set_seed(int seed);
- int get_seed() const;
-
- void set_octaves(int p_octaves);
- int get_octaves() const { return octaves; }
-
- void set_period(float p_period);
- float get_period() const { return period; }
-
- void set_persistence(float p_persistence);
- float get_persistence() const { return persistence; }
-
- void set_lacunarity(float p_lacunarity);
- float get_lacunarity() const { return lacunarity; }
-
- Ref<Image> get_image(int p_width, int p_height, const Vector2 &p_noise_offset = Vector2()) const;
- Ref<Image> get_seamless_image(int p_size) const;
-
- float get_noise_1d(float x) const;
- float get_noise_2d(float x, float y) const;
- float get_noise_3d(float x, float y, float z) const;
- float get_noise_4d(float x, float y, float z, float w) const;
-
- _FORCE_INLINE_ float _get_octave_noise_2d(int octave, float x, float y) const { return open_simplex_noise2(&(contexts[octave]), x, y); }
- _FORCE_INLINE_ float _get_octave_noise_3d(int octave, float x, float y, float z) const { return open_simplex_noise3(&(contexts[octave]), x, y, z); }
- _FORCE_INLINE_ float _get_octave_noise_4d(int octave, float x, float y, float z, float w) const { return open_simplex_noise4(&(contexts[octave]), x, y, z, w); }
-
- // Convenience
-
- _FORCE_INLINE_ float get_noise_2dv(const Vector2 &v) const { return get_noise_2d(v.x, v.y); }
- _FORCE_INLINE_ float get_noise_3dv(const Vector3 &v) const { return get_noise_3d(v.x, v.y, v.z); }
-
-protected:
- static void _bind_methods();
-};
-
-#endif // OPEN_SIMPLEX_NOISE_H
diff --git a/modules/openxr/SCsub b/modules/openxr/SCsub
index 37a8f3909a..32cab1bef1 100644
--- a/modules/openxr/SCsub
+++ b/modules/openxr/SCsub
@@ -75,7 +75,7 @@ module_obj = []
env_openxr.add_source_files(module_obj, "*.cpp")
env_openxr.add_source_files(module_obj, "action_map/*.cpp")
-# We're a little more targetted with our extensions
+# We're a little more targeted with our extensions
if env["platform"] == "android":
env_openxr.add_source_files(module_obj, "extensions/openxr_android_extension.cpp")
if env["vulkan"]:
diff --git a/modules/openxr/action_map/openxr_action_map.cpp b/modules/openxr/action_map/openxr_action_map.cpp
index 5391f9569a..e14c68079d 100644
--- a/modules/openxr/action_map/openxr_action_map.cpp
+++ b/modules/openxr/action_map/openxr_action_map.cpp
@@ -165,7 +165,7 @@ void OpenXRActionMap::create_default_action_sets() {
profile->add_new_binding(menu_button, "/user/hand/left/input/menu/click,/user/hand/right/input/menu/click");
// wmr controller has no a/b/x/y buttons
profile->add_new_binding(trigger, "/user/hand/left/input/trigger/value,/user/hand/right/input/trigger/value");
- profile->add_new_binding(trigger_click, "/user/hand/left/input/trigger/value,/user/hand/right/input/trigger/value"); // OpenXR will conver float to bool
+ profile->add_new_binding(trigger_click, "/user/hand/left/input/trigger/value,/user/hand/right/input/trigger/value"); // OpenXR will convert float to bool
profile->add_new_binding(grip, "/user/hand/left/input/squeeze/click,/user/hand/right/input/squeeze/click"); // OpenXR will convert bool to float
profile->add_new_binding(grip_click, "/user/hand/left/input/squeeze/click,/user/hand/right/input/squeeze/click");
// primary on our wmr controller is our thumbstick, no touch
diff --git a/modules/openxr/doc_classes/OpenXRActionMap.xml b/modules/openxr/doc_classes/OpenXRActionMap.xml
index f1def8aad8..4dd2b83ca7 100644
--- a/modules/openxr/doc_classes/OpenXRActionMap.xml
+++ b/modules/openxr/doc_classes/OpenXRActionMap.xml
@@ -6,7 +6,7 @@
<description>
OpenXR uses an action system similar to Godots Input map system to bind inputs and outputs on various types of XR controllers to named actions. OpenXR specifies more detail on these inputs and outputs than Godot supports.
Another important distinction is that OpenXR offers no control over these bindings. The bindings we register are suggestions, it is up to the XR runtime to offer users the ability to change these bindings. This allows the XR runtime to fill in the gaps if new hardware becomes available.
- The action map therefor needs to be loaded at startup and can't be changed afterwards. This resource is a container for the entire action map.
+ The action map therefore needs to be loaded at startup and can't be changed afterwards. This resource is a container for the entire action map.
</description>
<tutorials>
</tutorials>
diff --git a/modules/openxr/openxr_api.cpp b/modules/openxr/openxr_api.cpp
index 4d533337f3..7752878d82 100644
--- a/modules/openxr/openxr_api.cpp
+++ b/modules/openxr/openxr_api.cpp
@@ -52,32 +52,6 @@
OpenXRAPI *OpenXRAPI::singleton = nullptr;
-void OpenXRAPI::setup_global_defs() {
- // As OpenXRAPI is not constructed if OpenXR is not enabled, we register our project and editor settings here
-
- // Project settings
- GLOBAL_DEF_BASIC("xr/openxr/enabled", false);
- GLOBAL_DEF_BASIC("xr/openxr/default_action_map", "res://default_action_map.tres");
- ProjectSettings::get_singleton()->set_custom_property_info("xr/openxr/default_action_map", PropertyInfo(Variant::STRING, "xr/openxr/default_action_map", PROPERTY_HINT_FILE, "*.tres"));
-
- GLOBAL_DEF_BASIC("xr/openxr/form_factor", "0");
- ProjectSettings::get_singleton()->set_custom_property_info("xr/openxr/form_factor", PropertyInfo(Variant::INT, "xr/openxr/form_factor", PROPERTY_HINT_ENUM, "Head mounted,Handheld"));
-
- GLOBAL_DEF_BASIC("xr/openxr/view_configuration", "1");
- ProjectSettings::get_singleton()->set_custom_property_info("xr/openxr/view_configuration", PropertyInfo(Variant::INT, "xr/openxr/view_configuration", PROPERTY_HINT_ENUM, "Mono,Stereo")); // "Mono,Stereo,Quad,Observer"
-
- GLOBAL_DEF_BASIC("xr/openxr/reference_space", "1");
- ProjectSettings::get_singleton()->set_custom_property_info("xr/openxr/reference_space", PropertyInfo(Variant::INT, "xr/openxr/reference_space", PROPERTY_HINT_ENUM, "Local,Stage"));
-
-#ifdef TOOLS_ENABLED
- // Disabled for now, using XR inside of the editor we'll be working on during the coming months.
-
- // editor settings (it seems we're too early in the process when setting up rendering, to access editor settings...)
- // EDITOR_DEF_RST("xr/openxr/in_editor", false);
- // GLOBAL_DEF("xr/openxr/in_editor", false);
-#endif
-}
-
bool OpenXRAPI::openxr_is_enabled() {
// @TODO we need an overrule switch so we can force enable openxr, i.e run "godot --openxr_enabled"
@@ -99,17 +73,7 @@ bool OpenXRAPI::openxr_is_enabled() {
}
OpenXRAPI *OpenXRAPI::get_singleton() {
- if (singleton != nullptr) {
- // already constructed, return our singleton
- return singleton;
- } else if (openxr_is_enabled()) {
- // construct our singleton and return it
- singleton = memnew(OpenXRAPI);
- return singleton;
- } else {
- // not enabled, don't instantiate, return nullptr
- return nullptr;
- }
+ return singleton;
}
String OpenXRAPI::get_default_action_map_resource_name() {
@@ -136,7 +100,7 @@ String OpenXRAPI::get_error_string(XrResult result) {
}
String OpenXRAPI::get_swapchain_format_name(int64_t p_swapchain_format) const {
- // This is rendering engine dependend...
+ // This is rendering engine dependent...
if (graphics_extension) {
return graphics_extension->get_swapchain_format_name(p_swapchain_format);
}
@@ -145,7 +109,7 @@ String OpenXRAPI::get_swapchain_format_name(int64_t p_swapchain_format) const {
}
bool OpenXRAPI::load_layer_properties() {
- // This queries additional layers that are available and can be initialised when we create our OpenXR instance
+ // This queries additional layers that are available and can be initialized when we create our OpenXR instance
if (layer_properties != nullptr) {
// already retrieved this
return true;
@@ -175,7 +139,7 @@ bool OpenXRAPI::load_layer_properties() {
}
bool OpenXRAPI::load_supported_extensions() {
- // This queries supported extensions that are available and can be initialised when we create our OpenXR instance
+ // This queries supported extensions that are available and can be initialized when we create our OpenXR instance
if (supported_extensions != nullptr) {
// already retrieved this
@@ -375,7 +339,7 @@ bool OpenXRAPI::get_system_info() {
}
bool OpenXRAPI::load_supported_view_configuration_types() {
- // This queries the supported configuration types, likely there will only be one chosing between Mono (phone AR) and Stereo (HMDs)
+ // This queries the supported configuration types, likely there will only be one choosing between Mono (phone AR) and Stereo (HMDs)
ERR_FAIL_COND_V(instance == XR_NULL_HANDLE, false);
@@ -1010,7 +974,7 @@ bool OpenXRAPI::is_running() {
return running;
}
-bool OpenXRAPI::initialise(const String &p_rendering_driver) {
+bool OpenXRAPI::initialize(const String &p_rendering_driver) {
ERR_FAIL_COND_V_MSG(instance != XR_NULL_HANDLE, false, "OpenXR instance was already created");
if (p_rendering_driver == "vulkan") {
@@ -1034,7 +998,7 @@ bool OpenXRAPI::initialise(const String &p_rendering_driver) {
ERR_FAIL_V_MSG(false, "OpenXR: Unsupported rendering device.");
}
- // initialise
+ // initialize
if (!load_layer_properties()) {
destroy_instance();
return false;
@@ -1068,7 +1032,7 @@ bool OpenXRAPI::initialise(const String &p_rendering_driver) {
return true;
}
-bool OpenXRAPI::initialise_session() {
+bool OpenXRAPI::initialize_session() {
if (!create_session()) {
destroy_session();
return false;
@@ -1599,7 +1563,7 @@ void OpenXRAPI::end_frame() {
OpenXRAPI::OpenXRAPI() {
// OpenXRAPI is only constructed if OpenXR is enabled.
- // It will be constructed when the rendering device first accesses OpenXR (be it the Vulkan or OpenGL rendering system)
+ singleton = this;
if (Engine::get_singleton()->is_editor_hint()) {
// Enabled OpenXR in the editor? Adjust our settings for the editor
@@ -1656,7 +1620,7 @@ OpenXRAPI::OpenXRAPI() {
frame_state.predictedDisplayPeriod = 0;
#ifdef ANDROID_ENABLED
- // our android wrapper will initialise our android loader at this point
+ // our android wrapper will initialize our android loader at this point
register_extension_wrapper(memnew(OpenXRAndroidExtension(this)));
#endif
}
@@ -1683,6 +1647,8 @@ OpenXRAPI::~OpenXRAPI() {
memfree(layer_properties);
layer_properties = nullptr;
}
+
+ singleton = nullptr;
}
Transform3D OpenXRAPI::transform_from_pose(const XrPosef &p_pose) {
diff --git a/modules/openxr/openxr_api.h b/modules/openxr/openxr_api.h
index e20826c849..1a1508e993 100644
--- a/modules/openxr/openxr_api.h
+++ b/modules/openxr/openxr_api.h
@@ -222,7 +222,6 @@ protected:
void parse_velocities(const XrSpaceVelocity &p_velocity, Vector3 &r_linear_velocity, Vector3 r_angular_velocity);
public:
- static void setup_global_defs();
static bool openxr_is_enabled();
static OpenXRAPI *get_singleton();
@@ -234,8 +233,8 @@ public:
bool is_initialized();
bool is_running();
- bool initialise(const String &p_rendering_driver);
- bool initialise_session();
+ bool initialize(const String &p_rendering_driver);
+ bool initialize_session();
void finish();
XrTime get_next_frame_time() { return frame_state.predictedDisplayTime + frame_state.predictedDisplayPeriod; };
diff --git a/modules/openxr/openxr_interface.cpp b/modules/openxr/openxr_interface.cpp
index 39f9153f0d..41ce8c019e 100644
--- a/modules/openxr/openxr_interface.cpp
+++ b/modules/openxr/openxr_interface.cpp
@@ -384,7 +384,7 @@ void OpenXRInterface::handle_tracker(Tracker *p_tracker) {
// profiles are suggested bindings for controller types we know about. OpenXR runtimes can stray away from these
// and rebind them or even offer bindings to controllers that are not known to us.
- // We don't really have a consistant way to detect whether a controller is active however as long as it is
+ // We don't really have a consistent way to detect whether a controller is active however as long as it is
// unbound it seems to be unavailable, so far unknown controller seem to mimic one of the profiles we've
// supplied.
if (p_tracker->interaction_profile.is_null()) {
@@ -466,7 +466,7 @@ void OpenXRInterface::free_interaction_profiles() {
interaction_profiles.clear();
}
-bool OpenXRInterface::initialise_on_startup() const {
+bool OpenXRInterface::initialize_on_startup() const {
if (openxr_api == nullptr) {
return false;
} else if (!openxr_api->is_initialized()) {
@@ -495,7 +495,7 @@ bool OpenXRInterface::initialize() {
// load up our action sets before setting up our session, note that our profiles are suggestions, OpenXR takes ownership of (re)binding
_load_action_map();
- if (!openxr_api->initialise_session()) {
+ if (!openxr_api->initialize_session()) {
return false;
}
diff --git a/modules/openxr/openxr_interface.h b/modules/openxr/openxr_interface.h
index 421838e445..a223acfed0 100644
--- a/modules/openxr/openxr_interface.h
+++ b/modules/openxr/openxr_interface.h
@@ -106,7 +106,7 @@ public:
virtual PackedStringArray get_suggested_tracker_names() const override;
virtual TrackingStatus get_tracking_status() const override;
- bool initialise_on_startup() const;
+ bool initialize_on_startup() const;
virtual bool is_initialized() const override;
virtual bool initialize() override;
virtual void uninitialize() override;
diff --git a/modules/openxr/register_types.cpp b/modules/openxr/register_types.cpp
index 7a74c8c089..47ee1316e7 100644
--- a/modules/openxr/register_types.cpp
+++ b/modules/openxr/register_types.cpp
@@ -44,10 +44,13 @@ Ref<OpenXRInterface> openxr_interface;
void preregister_openxr_types() {
// For now we create our openxr device here. If we merge it with openxr_interface we'll create that here soon.
- OpenXRAPI::setup_global_defs();
- openxr_api = OpenXRAPI::get_singleton();
- if (openxr_api) {
- if (!openxr_api->initialise(Main::get_rendering_driver_name())) {
+ if (OpenXRAPI::openxr_is_enabled()) {
+ openxr_api = memnew(OpenXRAPI);
+ ERR_FAIL_NULL(openxr_api);
+
+ if (!openxr_api->initialize(Main::get_rendering_driver_name())) {
+ memdelete(openxr_api);
+ openxr_api = nullptr;
return;
}
}
@@ -67,7 +70,7 @@ void register_openxr_types() {
openxr_interface.instantiate();
xr_server->add_interface(openxr_interface);
- if (openxr_interface->initialise_on_startup()) {
+ if (openxr_interface->initialize_on_startup()) {
openxr_interface->initialize();
}
}
@@ -75,7 +78,7 @@ void register_openxr_types() {
void unregister_openxr_types() {
if (openxr_interface.is_valid()) {
- // uninitialise just in case
+ // uninitialize just in case
if (openxr_interface->is_initialized()) {
openxr_interface->uninitialize();
}
@@ -96,5 +99,6 @@ void unregister_openxr_types() {
if (openxr_api) {
openxr_api->finish();
memdelete(openxr_api);
+ openxr_api = nullptr;
}
}
diff --git a/modules/svg/register_types.cpp b/modules/svg/register_types.cpp
index a4341c6f1e..b59c815056 100644
--- a/modules/svg/register_types.cpp
+++ b/modules/svg/register_types.cpp
@@ -38,7 +38,7 @@ static ImageLoaderSVG *image_loader_svg = nullptr;
void register_svg_types() {
tvg::CanvasEngine tvgEngine = tvg::CanvasEngine::Sw;
- if (tvg::Initializer::init(tvgEngine, 0) != tvg::Result::Success) {
+ if (tvg::Initializer::init(tvgEngine, 1) != tvg::Result::Success) {
return;
}
image_loader_svg = memnew(ImageLoaderSVG);
diff --git a/modules/text_server_adv/SCsub b/modules/text_server_adv/SCsub
index e999700d55..525d4d3efb 100644
--- a/modules/text_server_adv/SCsub
+++ b/modules/text_server_adv/SCsub
@@ -37,7 +37,7 @@ def make_icu_data(target, source, env):
thirdparty_obj = []
freetype_enabled = env.module_check_dependencies("text_server_adv", ["freetype"], True)
-msdngen_enabled = env.module_check_dependencies("text_server_adv", ["msdfgen"], True)
+msdfgen_enabled = env.module_check_dependencies("text_server_adv", ["msdfgen"], True)
if env["builtin_harfbuzz"]:
env_harfbuzz = env_modules.Clone()
@@ -117,20 +117,25 @@ if env["builtin_harfbuzz"]:
]
thirdparty_sources = [thirdparty_dir + file for file in thirdparty_sources]
- env_harfbuzz.Append(
- CPPPATH=[
- "#thirdparty/harfbuzz/src",
- "#thirdparty/icu4c/common/",
- ]
- )
+ env_harfbuzz.Append(CPPPATH=["#thirdparty/harfbuzz/src"])
+
+ env_harfbuzz.Append(CCFLAGS=["-DHAVE_ICU"])
+ if env["builtin_icu"]:
+ env_harfbuzz.Append(CPPPATH=["#thirdparty/icu4c/common/"])
+ env_harfbuzz.Append(CCFLAGS=["-DU_HAVE_LIB_SUFFIX=1", "-DU_LIB_SUFFIX_C_NAME=_godot", "-DHAVE_ICU_BUILTIN"])
if freetype_enabled:
env_harfbuzz.Append(
- CPPPATH=[
- "#thirdparty/freetype/include",
- "#thirdparty/graphite/include",
+ CCFLAGS=[
+ "-DHAVE_FREETYPE",
+ "-DHAVE_GRAPHITE2",
]
)
+ if env["builtin_freetype"]:
+ env_harfbuzz.Append(CPPPATH=["#thirdparty/freetype/include"])
+ if env["builtin_graphite"]:
+ env_harfbuzz.Append(CPPPATH=["#thirdparty/graphite/include"])
+ env_harfbuzz.Append(CCFLAGS=["-DGRAPHITE2_STATIC"])
if env["platform"] == "android" or env["platform"] == "linuxbsd":
env_harfbuzz.Append(CCFLAGS=["-DHAVE_PTHREAD"])
@@ -141,21 +146,7 @@ if env["builtin_harfbuzz"]:
else:
env_harfbuzz.Append(CCFLAGS=["-DHB_NO_MT"])
- env_harfbuzz.Append(
- CCFLAGS=[
- "-DHAVE_ICU_BUILTIN",
- "-DHAVE_ICU",
- ]
- )
-
- if freetype_enabled:
- env_harfbuzz.Append(
- CCFLAGS=[
- "-DHAVE_FREETYPE",
- "-DHAVE_GRAPHITE2",
- "-DGRAPHITE2_STATIC",
- ]
- )
+ env_text_server_adv.Append(CPPPATH=["#thirdparty/harfbuzz/src"])
lib = env_harfbuzz.add_library("harfbuzz_builtin", thirdparty_sources)
thirdparty_obj += lib
@@ -473,14 +464,23 @@ if env["builtin_icu"]:
"-DUCONFIG_NO_FILE_IO",
"-DUCONFIG_NO_TRANSLITERATION",
"-DPKGDATA_MODE=static",
+ "-DU_ENABLE_DYLOAD=0",
+ "-DU_HAVE_LIB_SUFFIX=1",
+ "-DU_LIB_SUFFIX_C_NAME=_godot",
"-DICU_DATA_NAME=" + icu_data_name,
]
)
env_text_server_adv.Append(
CXXFLAGS=[
+ "-DU_HAVE_LIB_SUFFIX=1",
+ "-DU_LIB_SUFFIX_C_NAME=_godot",
"-DICU_DATA_NAME=" + icu_data_name,
]
)
+ if env_text_server_adv["tools"]:
+ env_text_server_adv.Append(CXXFLAGS=["-DICU_STATIC_DATA"])
+
+ env_text_server_adv.Append(CPPPATH=["#thirdparty/icu4c/common/"])
lib = env_icu.add_library("icu_builtin", thirdparty_sources)
thirdparty_obj += lib
@@ -503,30 +503,14 @@ if env["builtin_icu"]:
module_obj = []
-if env_text_server_adv["tools"]:
- env_text_server_adv.Append(CXXFLAGS=["-DICU_STATIC_DATA"])
+if env["builtin_msdfgen"] and msdfgen_enabled:
+ env_text_server_adv.Append(CPPPATH=["#thirdparty/msdfgen"])
-env_text_server_adv.Append(
- CPPPATH=[
- "#thirdparty/harfbuzz/src",
- "#thirdparty/icu4c/common/",
- ]
-)
+if env["builtin_freetype"] and freetype_enabled:
+ env_text_server_adv.Append(CPPPATH=["#thirdparty/freetype/include"])
-if msdngen_enabled:
- env_text_server_adv.Append(
- CPPPATH=[
- "#thirdparty/msdfgen",
- ]
- )
-
-if freetype_enabled:
- env_text_server_adv.Append(
- CPPPATH=[
- "#thirdparty/freetype/include",
- "#thirdparty/graphite/include",
- ]
- )
+if env["builtin_graphite"] and freetype_enabled:
+ env_text_server_adv.Append(CPPPATH=["#thirdparty/graphite/include"])
env_text_server_adv.add_source_files(module_obj, "*.cpp")
env.modules_sources += module_obj
diff --git a/modules/text_server_adv/gdextension_build/SConstruct b/modules/text_server_adv/gdextension_build/SConstruct
index b294fab561..1c38398c88 100644
--- a/modules/text_server_adv/gdextension_build/SConstruct
+++ b/modules/text_server_adv/gdextension_build/SConstruct
@@ -273,6 +273,8 @@ if env["platform"] == "android" or env["platform"] == "linuxbsd":
env_harfbuzz.Append(
CCFLAGS=[
+ "-DU_HAVE_LIB_SUFFIX=1",
+ "-DU_LIB_SUFFIX_C_NAME=_godot",
"-DHAVE_ICU_BUILTIN",
"-DHAVE_ICU",
]
@@ -587,11 +589,16 @@ env_icu.Append(
"-DUCONFIG_NO_FILE_IO",
"-DUCONFIG_NO_TRANSLITERATION",
"-DPKGDATA_MODE=static",
+ "-DU_ENABLE_DYLOAD=0",
+ "-DU_HAVE_LIB_SUFFIX=1",
+ "-DU_LIB_SUFFIX_C_NAME=_godot",
"-DICU_DATA_NAME=" + icu_data_name,
]
)
env.Append(
CXXFLAGS=[
+ "-DU_HAVE_LIB_SUFFIX=1",
+ "-DU_LIB_SUFFIX_C_NAME=_godot",
"-DICU_DATA_NAME=" + icu_data_name,
]
)
diff --git a/modules/text_server_adv/text_server_adv.cpp b/modules/text_server_adv/text_server_adv.cpp
index b5912893b1..e02ddbb3f4 100644
--- a/modules/text_server_adv/text_server_adv.cpp
+++ b/modules/text_server_adv/text_server_adv.cpp
@@ -1355,6 +1355,8 @@ _FORCE_INLINE_ bool TextServerAdvanced::_ensure_cache_for_size(FontDataAdvanced
fd->underline_position = (-FT_MulFix(fd->face->underline_position, fd->face->size->metrics.y_scale) / 64.0) / fd->oversampling * fd->scale;
fd->underline_thickness = (FT_MulFix(fd->face->underline_thickness, fd->face->size->metrics.y_scale) / 64.0) / fd->oversampling * fd->scale;
+ hb_font_set_synthetic_slant(fd->hb_handle, p_font_data->transform.elements[0][1]);
+
if (!p_font_data->face_init) {
// Get style flags and name.
if (fd->face->family_name != nullptr) {
diff --git a/modules/text_server_fb/SCsub b/modules/text_server_fb/SCsub
index 31d1db6167..121f38fcd5 100644
--- a/modules/text_server_fb/SCsub
+++ b/modules/text_server_fb/SCsub
@@ -4,22 +4,14 @@ Import("env")
Import("env_modules")
freetype_enabled = env.module_check_dependencies("text_server_fb", ["freetype"], True)
-msdngen_enabled = env.module_check_dependencies("text_server_fb", ["msdfgen"], True)
+msdfgen_enabled = env.module_check_dependencies("text_server_fb", ["msdfgen"], True)
env_text_server_fb = env_modules.Clone()
-if msdngen_enabled:
- env_text_server_fb.Append(
- CPPPATH=[
- "#thirdparty/msdfgen",
- ]
- )
+if env["builtin_msdfgen"] and msdfgen_enabled:
+ env_text_server_fb.Append(CPPPATH=["#thirdparty/msdfgen"])
-if freetype_enabled:
- env_text_server_fb.Append(
- CPPPATH=[
- "#thirdparty/freetype/include",
- ]
- )
+if env["builtin_freetype"] and freetype_enabled:
+ env_text_server_fb.Append(CPPPATH=["#thirdparty/freetype/include"])
env_text_server_fb.add_source_files(env.modules_sources, "*.cpp")
diff --git a/modules/visual_script/visual_script.h b/modules/visual_script/visual_script.h
index d4dffdfc7a..d72bdf9128 100644
--- a/modules/visual_script/visual_script.h
+++ b/modules/visual_script/visual_script.h
@@ -338,8 +338,8 @@ public:
virtual Error reload(bool p_keep_state = false) override;
#ifdef TOOLS_ENABLED
- virtual const Vector<DocData::ClassDoc> &get_documentation() const override {
- static Vector<DocData::ClassDoc> docs;
+ virtual Vector<DocData::ClassDoc> get_documentation() const override {
+ Vector<DocData::ClassDoc> docs;
return docs;
}
#endif // TOOLS_ENABLED
diff --git a/modules/websocket/SCsub b/modules/websocket/SCsub
index 63c941c4a8..dc0661995f 100644
--- a/modules/websocket/SCsub
+++ b/modules/websocket/SCsub
@@ -41,6 +41,8 @@ elif env["builtin_wslay"]:
module_obj = []
env_ws.add_source_files(module_obj, "*.cpp")
+if env["tools"]:
+ env_ws.add_source_files(module_obj, "editor/*.cpp")
env.modules_sources += module_obj
# Needed to force rebuilding the module files when the thirdparty library is updated.
diff --git a/modules/websocket/editor_debugger_server_websocket.cpp b/modules/websocket/editor/editor_debugger_server_websocket.cpp
index 4f1a56f00b..0443147d98 100644
--- a/modules/websocket/editor_debugger_server_websocket.cpp
+++ b/modules/websocket/editor/editor_debugger_server_websocket.cpp
@@ -30,11 +30,13 @@
#include "editor_debugger_server_websocket.h"
+#ifdef TOOLS_ENABLED
+
+#include "../remote_debugger_peer_websocket.h"
#include "core/config/project_settings.h"
#include "editor/editor_log.h"
#include "editor/editor_node.h"
#include "editor/editor_settings.h"
-#include "modules/websocket/remote_debugger_peer_websocket.h"
void EditorDebuggerServerWebSocket::_peer_connected(int p_id, String _protocol) {
pending_peers.push_back(p_id);
@@ -129,3 +131,5 @@ EditorDebuggerServer *EditorDebuggerServerWebSocket::create(const String &p_prot
ERR_FAIL_COND_V(p_protocol != "ws://", nullptr);
return memnew(EditorDebuggerServerWebSocket);
}
+
+#endif // TOOLS_ENABLED
diff --git a/modules/websocket/editor_debugger_server_websocket.h b/modules/websocket/editor/editor_debugger_server_websocket.h
index cc14bf62ba..7c0705302d 100644
--- a/modules/websocket/editor_debugger_server_websocket.h
+++ b/modules/websocket/editor/editor_debugger_server_websocket.h
@@ -31,8 +31,10 @@
#ifndef EDITOR_DEBUGGER_SERVER_WEBSOCKET_H
#define EDITOR_DEBUGGER_SERVER_WEBSOCKET_H
+#ifdef TOOLS_ENABLED
+
+#include "../websocket_server.h"
#include "editor/debugger/editor_debugger_server.h"
-#include "modules/websocket/websocket_server.h"
class EditorDebuggerServerWebSocket : public EditorDebuggerServer {
GDCLASS(EditorDebuggerServerWebSocket, EditorDebuggerServer);
@@ -60,4 +62,6 @@ public:
~EditorDebuggerServerWebSocket();
};
+#endif // TOOLS_ENABLED
+
#endif // EDITOR_DEBUGGER_SERVER_WEBSOCKET_H
diff --git a/modules/websocket/library_godot_websocket.js b/modules/websocket/library_godot_websocket.js
index c88986fbe3..57f1f10b02 100644
--- a/modules/websocket/library_godot_websocket.js
+++ b/modules/websocket/library_godot_websocket.js
@@ -135,7 +135,7 @@ const GodotWebSocket = {
if (!ref) {
return;
}
- GodotWebSocket.close(p_id, 1001, '');
+ GodotWebSocket.close(p_id, 3001, 'destroyed');
IDHandler.remove(p_id);
ref.onopen = null;
ref.onmessage = null;
diff --git a/modules/websocket/register_types.cpp b/modules/websocket/register_types.cpp
index ff900f496f..6d63938d4f 100644
--- a/modules/websocket/register_types.cpp
+++ b/modules/websocket/register_types.cpp
@@ -29,8 +29,10 @@
/*************************************************************************/
#include "register_types.h"
+
#include "core/config/project_settings.h"
#include "core/error/error_macros.h"
+
#ifdef JAVASCRIPT_ENABLED
#include "emscripten.h"
#include "emws_client.h"
@@ -40,10 +42,11 @@
#include "wsl_client.h"
#include "wsl_server.h"
#endif
+
#ifdef TOOLS_ENABLED
#include "editor/debugger/editor_debugger_server.h"
+#include "editor/editor_debugger_server_websocket.h"
#include "editor/editor_node.h"
-#include "editor_debugger_server_websocket.h"
#endif
#ifdef TOOLS_ENABLED
diff --git a/modules/websocket/remote_debugger_peer_websocket.h b/modules/websocket/remote_debugger_peer_websocket.h
index ddf5425d81..84f9506625 100644
--- a/modules/websocket/remote_debugger_peer_websocket.h
+++ b/modules/websocket/remote_debugger_peer_websocket.h
@@ -31,12 +31,13 @@
#ifndef REMOTE_DEBUGGER_PEER_WEBSOCKET_H
#define REMOTE_DEBUGGER_PEER_WEBSOCKET_H
+#include "core/debugger/remote_debugger_peer.h"
+
#ifdef JAVASCRIPT_ENABLED
-#include "modules/websocket/emws_client.h"
+#include "emws_client.h"
#else
-#include "modules/websocket/wsl_client.h"
+#include "wsl_client.h"
#endif
-#include "core/debugger/remote_debugger_peer.h"
class RemoteDebuggerPeerWebSocket : public RemoteDebuggerPeer {
Ref<WebSocketClient> ws_client;
diff --git a/platform/android/SCsub b/platform/android/SCsub
index d031d14499..1a3c158d2e 100644
--- a/platform/android/SCsub
+++ b/platform/android/SCsub
@@ -53,10 +53,17 @@ else:
if lib_arch_dir != "":
if env["target"] == "release":
lib_type_dir = "release"
- else: # release_debug, debug
+ elif env["target"] == "release_debug":
lib_type_dir = "debug"
+ else: # debug
+ lib_type_dir = "dev"
- out_dir = "#platform/android/java/lib/libs/" + lib_type_dir + "/" + lib_arch_dir
+ if env["tools"]:
+ lib_tools_dir = "tools/"
+ else:
+ lib_tools_dir = ""
+
+ out_dir = "#platform/android/java/lib/libs/" + lib_tools_dir + lib_type_dir + "/" + lib_arch_dir
env_android.Command(
out_dir + "/libgodot_android.so", "#bin/libgodot" + env["SHLIBSUFFIX"], Move("$TARGET", "$SOURCE")
)
diff --git a/platform/android/java/app/build.gradle b/platform/android/java/app/build.gradle
index 5d1a9d7b99..b6303d1bc9 100644
--- a/platform/android/java/app/build.gradle
+++ b/platform/android/java/app/build.gradle
@@ -33,6 +33,11 @@ allprojects {
}
}
+configurations {
+ // Initializes a placeholder for the devImplementation dependency configuration.
+ devImplementation {}
+}
+
dependencies {
implementation libraries.kotlinStdLib
implementation libraries.androidxFragment
@@ -45,6 +50,7 @@ dependencies {
// Custom build mode. In this scenario this project is the only one around and the Godot
// library is available through the pre-generated godot-lib.*.aar android archive files.
debugImplementation fileTree(dir: 'libs/debug', include: ['*.jar', '*.aar'])
+ devImplementation fileTree(dir: 'libs/dev', include: ['*.jar', '*.aar'])
releaseImplementation fileTree(dir: 'libs/release', include: ['*.jar', '*.aar'])
}
@@ -66,6 +72,7 @@ dependencies {
android {
compileSdkVersion versions.compileSdk
buildToolsVersion versions.buildTools
+ ndkVersion versions.ndkVersion
compileOptions {
sourceCompatibility versions.javaVersion
@@ -93,6 +100,8 @@ android {
versionName getExportVersionName()
minSdkVersion getExportMinSdkVersion()
targetSdkVersion getExportTargetSdkVersion()
+
+ missingDimensionStrategy 'products', 'template'
}
lintOptions {
@@ -146,6 +155,18 @@ android {
}
}
+ dev {
+ initWith debug
+ // Signing and zip-aligning are skipped for prebuilt builds, but
+ // performed for custom builds.
+ zipAlignEnabled shouldZipAlign()
+ if (shouldSign()) {
+ signingConfig signingConfigs.debug
+ } else {
+ signingConfig null
+ }
+ }
+
release {
// Signing and zip-aligning are skipped for prebuilt builds, but
// performed for custom builds.
@@ -167,6 +188,7 @@ android {
assets.srcDirs = ['assets']
}
debug.jniLibs.srcDirs = ['libs/debug', 'libs/debug/vulkan_validation_layers']
+ dev.jniLibs.srcDirs = ['libs/dev']
release.jniLibs.srcDirs = ['libs/release']
}
@@ -183,6 +205,12 @@ task copyAndRenameDebugApk(type: Copy) {
rename "android_debug.apk", getExportFilename()
}
+task copyAndRenameDevApk(type: Copy) {
+ from "$buildDir/outputs/apk/dev/android_dev.apk"
+ into getExportPath()
+ rename "android_dev.apk", getExportFilename()
+}
+
task copyAndRenameReleaseApk(type: Copy) {
from "$buildDir/outputs/apk/release/android_release.apk"
into getExportPath()
@@ -195,6 +223,12 @@ task copyAndRenameDebugAab(type: Copy) {
rename "build-debug.aab", getExportFilename()
}
+task copyAndRenameDevAab(type: Copy) {
+ from "$buildDir/outputs/bundle/dev/build-dev.aab"
+ into getExportPath()
+ rename "build-dev.aab", getExportFilename()
+}
+
task copyAndRenameReleaseAab(type: Copy) {
from "$buildDir/outputs/bundle/release/build-release.aab"
into getExportPath()
diff --git a/platform/android/java/app/config.gradle b/platform/android/java/app/config.gradle
index c238d1b361..1b2976e715 100644
--- a/platform/android/java/app/config.gradle
+++ b/platform/android/java/app/config.gradle
@@ -76,7 +76,7 @@ ext.getGodotEditorVersion = { ->
String editorVersion = project.hasProperty("godot_editor_version") ? project.property("godot_editor_version") : ""
if (editorVersion == null || editorVersion.isEmpty()) {
// Try the library version first
- editorVersion = getGodotLibraryVersion()
+ editorVersion = getGodotLibraryVersionName()
if (editorVersion.isEmpty()) {
// Fallback value.
@@ -86,9 +86,24 @@ ext.getGodotEditorVersion = { ->
return editorVersion
}
+ext.getGodotLibraryVersionCode = { ->
+ String versionName = ""
+ int versionCode = 1
+ (versionName, versionCode) = getGodotLibraryVersion()
+ return versionCode
+}
+
+ext.getGodotLibraryVersionName = { ->
+ String versionName = ""
+ int versionCode = 1
+ (versionName, versionCode) = getGodotLibraryVersion()
+ return versionName
+}
+
ext.generateGodotLibraryVersion = { List<String> requiredKeys ->
// Attempt to read the version from the `version.py` file.
- String libraryVersion = ""
+ String libraryVersionName = ""
+ int libraryVersionCode = 0
File versionFile = new File("../../../version.py")
if (versionFile.isFile()) {
@@ -109,15 +124,35 @@ ext.generateGodotLibraryVersion = { List<String> requiredKeys ->
}
if (requiredKeys.empty) {
- libraryVersion = map.values().join(".")
+ libraryVersionName = map.values().join(".")
+ try {
+ if (map.containsKey("patch")) {
+ libraryVersionCode = Integer.parseInt(map["patch"])
+ }
+
+ if (map.containsKey("minor")) {
+ libraryVersionCode += (Integer.parseInt(map["minor"]) * 100)
+ }
+
+ if (map.containsKey("major")) {
+ libraryVersionCode += (Integer.parseInt(map["major"]) * 10000)
+ }
+ } catch (NumberFormatException ignore) {
+ libraryVersionCode = 1
+ }
}
}
- if (libraryVersion.isEmpty()) {
+ if (libraryVersionName.isEmpty()) {
// Fallback value in case we're unable to read the file.
- libraryVersion = "custom_build"
+ libraryVersionName = "custom_build"
+ }
+
+ if (libraryVersionCode == 0) {
+ libraryVersionCode = 1
}
- return libraryVersion
+
+ return [libraryVersionName, libraryVersionCode]
}
ext.getGodotLibraryVersion = { ->
@@ -127,7 +162,10 @@ ext.getGodotLibraryVersion = { ->
ext.getGodotPublishVersion = { ->
List<String> requiredKeys = ["major", "minor", "patch", "status"]
- return generateGodotLibraryVersion(requiredKeys)
+ String versionName = ""
+ int versionCode = 1
+ (versionName, versionCode) = generateGodotLibraryVersion(requiredKeys)
+ return versionName
}
final String VALUE_SEPARATOR_REGEX = "\\|"
diff --git a/platform/android/java/build.gradle b/platform/android/java/build.gradle
index 83bc68c992..e16ca65df5 100644
--- a/platform/android/java/build.gradle
+++ b/platform/android/java/build.gradle
@@ -26,21 +26,22 @@ allprojects {
ext {
supportedAbis = ["armv7", "arm64v8", "x86", "x86_64"]
- supportedTargets = ["release", "debug"]
+ supportedTargetsMap = [release: "release", dev: "debug", debug: "release_debug"]
+ supportedFlavors = ["editor", "template"]
- // Used by gradle to specify which architecture to build for by default when running `./gradlew build`.
- // This command is usually used by Android Studio.
+ // Used by gradle to specify which architecture to build for by default when running
+ // `./gradlew build` (this command is usually used by Android Studio).
// If building manually on the command line, it's recommended to use the
- // `./gradlew generateGodotTemplates` build command instead after running the `scons` command.
- // The defaultAbi must be one of the {supportedAbis} values.
- defaultAbi = "arm64v8"
+ // `./gradlew generateGodotTemplates` build command instead after running the `scons` command(s).
+ // The {selectedAbis} values must be from the {supportedAbis} values.
+ selectedAbis = ["arm64v8"]
}
def rootDir = "../../.."
def binDir = "$rootDir/bin/"
-def getSconsTaskName(String buildType) {
- return "compileGodotNativeLibs" + buildType.capitalize()
+def getSconsTaskName(String flavor, String buildType, String abi) {
+ return "compileGodotNativeLibs" + flavor.capitalize() + buildType.capitalize() + abi.capitalize()
}
/**
@@ -55,6 +56,17 @@ task copyDebugBinaryToBin(type: Copy) {
}
/**
+ * Copy the generated 'android_dev.apk' binary template into the Godot bin directory.
+ * Depends on the app build task to ensure the binary is generated prior to copying.
+ */
+task copyDevBinaryToBin(type: Copy) {
+ dependsOn ':app:assembleDev'
+ from('app/build/outputs/apk/dev')
+ into(binDir)
+ include('android_dev.apk')
+}
+
+/**
* Copy the generated 'android_release.apk' binary template into the Godot bin directory.
* Depends on the app build task to ensure the binary is generated prior to copying.
*/
@@ -70,7 +82,7 @@ task copyReleaseBinaryToBin(type: Copy) {
* Depends on the library build task to ensure the AAR file is generated prior to copying.
*/
task copyDebugAARToAppModule(type: Copy) {
- dependsOn ':lib:assembleDebug'
+ dependsOn ':lib:assembleTemplateDebug'
from('lib/build/outputs/aar')
into('app/libs/debug')
include('godot-lib.debug.aar')
@@ -81,18 +93,40 @@ task copyDebugAARToAppModule(type: Copy) {
* Depends on the library build task to ensure the AAR file is generated prior to copying.
*/
task copyDebugAARToBin(type: Copy) {
- dependsOn ':lib:assembleDebug'
+ dependsOn ':lib:assembleTemplateDebug'
from('lib/build/outputs/aar')
into(binDir)
include('godot-lib.debug.aar')
}
/**
+ * Copy the Godot android library archive dev file into the app module dev libs directory.
+ * Depends on the library build task to ensure the AAR file is generated prior to copying.
+ */
+task copyDevAARToAppModule(type: Copy) {
+ dependsOn ':lib:assembleTemplateDev'
+ from('lib/build/outputs/aar')
+ into('app/libs/dev')
+ include('godot-lib.dev.aar')
+}
+
+/**
+ * Copy the Godot android library archive dev file into the root bin directory.
+ * Depends on the library build task to ensure the AAR file is generated prior to copying.
+ */
+task copyDevAARToBin(type: Copy) {
+ dependsOn ':lib:assembleTemplateDev'
+ from('lib/build/outputs/aar')
+ into(binDir)
+ include('godot-lib.dev.aar')
+}
+
+/**
* Copy the Godot android library archive release file into the app module release libs directory.
* Depends on the library build task to ensure the AAR file is generated prior to copying.
*/
task copyReleaseAARToAppModule(type: Copy) {
- dependsOn ':lib:assembleRelease'
+ dependsOn ':lib:assembleTemplateRelease'
from('lib/build/outputs/aar')
into('app/libs/release')
include('godot-lib.release.aar')
@@ -103,7 +137,7 @@ task copyReleaseAARToAppModule(type: Copy) {
* Depends on the library build task to ensure the AAR file is generated prior to copying.
*/
task copyReleaseAARToBin(type: Copy) {
- dependsOn ':lib:assembleRelease'
+ dependsOn ':lib:assembleTemplateRelease'
from('lib/build/outputs/aar')
into(binDir)
include('godot-lib.release.aar')
@@ -111,7 +145,7 @@ task copyReleaseAARToBin(type: Copy) {
/**
* Generate Godot custom build template by zipping the source files from the app directory, as well
- * as the AAR files generated by 'copyDebugAAR' and 'copyReleaseAAR'.
+ * as the AAR files generated by 'copyDebugAAR', 'copyDevAAR' and 'copyReleaseAAR'.
* The zip file also includes some gradle tools to allow building of the custom build.
*/
task zipCustomBuild(type: Zip) {
@@ -130,8 +164,18 @@ def templateExcludedBuildTask() {
def excludedTasks = []
if (!isAndroidStudio()) {
logger.lifecycle("Excluding Android studio build tasks")
- for (String buildType : supportedTargets) {
- excludedTasks += ":lib:" + getSconsTaskName(buildType)
+ for (String flavor : supportedFlavors) {
+ for (String buildType : supportedTargetsMap.keySet()) {
+ if (buildType == "release" && flavor == "editor") {
+ // The editor can't be used with target=release as debugging tools are then not
+ // included, and it would crash on errors instead of reporting them.
+ continue
+ }
+
+ for (String abi : selectedAbis) {
+ excludedTasks += ":lib:" + getSconsTaskName(flavor, buildType, abi)
+ }
+ }
}
}
return excludedTasks
@@ -141,7 +185,7 @@ def templateBuildTasks() {
def tasks = []
// Only build the apks and aar files for which we have native shared libraries.
- for (String target : supportedTargets) {
+ for (String target : supportedTargetsMap.keySet()) {
File targetLibs = new File("lib/libs/" + target)
if (targetLibs != null
&& targetLibs.isDirectory()
@@ -167,6 +211,50 @@ def isAndroidStudio() {
return sysProps != null && sysProps['idea.platform.prefix'] != null
}
+task copyEditorDebugBinaryToBin(type: Copy) {
+ dependsOn ':editor:assembleDebug'
+ from('editor/build/outputs/apk/debug')
+ into(binDir)
+ include('android_editor.apk')
+}
+
+task copyEditorDevBinaryToBin(type: Copy) {
+ dependsOn ':editor:assembleDev'
+ from('editor/build/outputs/apk/dev')
+ into(binDir)
+ include('android_editor_dev.apk')
+}
+
+/**
+ * Generate the Godot Editor Android apk.
+ *
+ * Note: The Godot 'tools' shared libraries must have been generated (via scons) prior to running
+ * this gradle task. The task will only build the apk(s) for which the shared libraries is
+ * available.
+ */
+task generateGodotEditor {
+ gradle.startParameter.excludedTaskNames += templateExcludedBuildTask()
+
+ def tasks = []
+
+ for (String target : supportedTargetsMap.keySet()) {
+ if (target == "release") {
+ // The editor can't be used with target=release as debugging tools are then not
+ // included, and it would crash on errors instead of reporting them.
+ continue
+ }
+ File targetLibs = new File("lib/libs/tools/" + target)
+ if (targetLibs != null
+ && targetLibs.isDirectory()
+ && targetLibs.listFiles() != null
+ && targetLibs.listFiles().length > 0) {
+ tasks += "copyEditor${target.capitalize()}BinaryToBin"
+ }
+ }
+
+ dependsOn = tasks
+}
+
/**
* Master task used to coordinate the tasks defined above to generate the set of Godot templates.
*/
@@ -191,7 +279,27 @@ task generateDevTemplate {
}
/**
- * Clean the generated artifacts.
+ * Clean the generated editor artifacts.
+ */
+task cleanGodotEditor(type: Delete) {
+ // Delete the generated native tools libs
+ delete("lib/libs/tools")
+
+ // Delete the library generated AAR files
+ delete("lib/build/outputs/aar")
+
+ // Delete the generated binary apks
+ delete("editor/build/outputs/apk")
+
+ // Delete the Godot editor apks in the Godot bin directory
+ delete("$binDir/android_editor.apk")
+ delete("$binDir/android_editor_dev.apk")
+
+ finalizedBy getTasksByName("clean", true)
+}
+
+/**
+ * Clean the generated template artifacts.
*/
task cleanGodotTemplates(type: Delete) {
// Delete the generated native libs
@@ -208,9 +316,11 @@ task cleanGodotTemplates(type: Delete) {
// Delete the Godot templates in the Godot bin directory
delete("$binDir/android_debug.apk")
+ delete("$binDir/android_dev.apk")
delete("$binDir/android_release.apk")
delete("$binDir/android_source.zip")
delete("$binDir/godot-lib.debug.aar")
+ delete("$binDir/godot-lib.dev.aar")
delete("$binDir/godot-lib.release.aar")
finalizedBy getTasksByName("clean", true)
diff --git a/platform/android/java/editor/build.gradle b/platform/android/java/editor/build.gradle
new file mode 100644
index 0000000000..3312f61ad3
--- /dev/null
+++ b/platform/android/java/editor/build.gradle
@@ -0,0 +1,74 @@
+// Gradle build config for Godot Engine's Android port.
+apply plugin: 'com.android.application'
+
+dependencies {
+ implementation libraries.kotlinStdLib
+ implementation libraries.androidxFragment
+ implementation project(":lib")
+}
+
+android {
+ compileSdkVersion versions.compileSdk
+ buildToolsVersion versions.buildTools
+ ndkVersion versions.ndkVersion
+
+ defaultConfig {
+ // The 'applicationId' suffix allows to install Godot 3.x(v3) and 4.x(v4) on the same device
+ applicationId "org.godotengine.editor.v4"
+ versionCode getGodotLibraryVersionCode()
+ versionName getGodotLibraryVersionName()
+ minSdkVersion versions.minSdk
+ //noinspection ExpiredTargetSdkVersion - Restrict to version 29 until https://github.com/godotengine/godot/pull/51815 is submitted
+ targetSdkVersion 29 // versions.targetSdk
+
+ missingDimensionStrategy 'products', 'editor'
+ }
+
+ compileOptions {
+ sourceCompatibility versions.javaVersion
+ targetCompatibility versions.javaVersion
+ }
+
+ buildTypes {
+ dev {
+ initWith debug
+ applicationIdSuffix ".dev"
+ }
+
+ debug {
+ initWith release
+
+ // Need to swap with the release signing config when this is ready for public release.
+ signingConfig signingConfigs.debug
+ }
+
+ release {
+ // This buildtype is disabled below.
+ // The editor can't be used with target=release only, as debugging tools are then not
+ // included, and it would crash on errors instead of reporting them.
+ }
+ }
+
+ packagingOptions {
+ // 'doNotStrip' is enabled for development within Android Studio
+ if (shouldNotStrip()) {
+ doNotStrip '**/*.so'
+ }
+ }
+
+ // Disable 'release' buildtype.
+ // The editor can't be used with target=release only, as debugging tools are then not
+ // included, and it would crash on errors instead of reporting them.
+ variantFilter { variant ->
+ if (variant.buildType.name == "release") {
+ setIgnore(true)
+ }
+ }
+
+ applicationVariants.all { variant ->
+ variant.outputs.all { output ->
+ def suffix = variant.name == "dev" ? "_dev" : ""
+ output.outputFileName = "android_editor${suffix}.apk"
+ }
+ }
+}
diff --git a/platform/android/java/editor/src/dev/res/values/strings.xml b/platform/android/java/editor/src/dev/res/values/strings.xml
new file mode 100644
index 0000000000..45fae3fd39
--- /dev/null
+++ b/platform/android/java/editor/src/dev/res/values/strings.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+ <string name="godot_editor_name_string">Godot Editor 4.x (dev)</string>
+</resources>
diff --git a/platform/android/java/editor/src/main/AndroidManifest.xml b/platform/android/java/editor/src/main/AndroidManifest.xml
new file mode 100644
index 0000000000..0708ffa32f
--- /dev/null
+++ b/platform/android/java/editor/src/main/AndroidManifest.xml
@@ -0,0 +1,67 @@
+<?xml version="1.0" encoding="utf-8"?>
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:tools="http://schemas.android.com/tools"
+ package="org.godotengine.editor"
+ android:installLocation="auto">
+
+ <supports-screens
+ android:largeScreens="true"
+ android:normalScreens="true"
+ android:smallScreens="true"
+ android:xlargeScreens="true" />
+
+ <uses-feature
+ android:glEsVersion="0x00020000"
+ android:required="true" />
+
+ <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
+ <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
+ <uses-permission android:name="android.permission.INTERNET" />
+
+ <application
+ android:allowBackup="false"
+ android:icon="@mipmap/icon"
+ android:label="@string/godot_editor_name_string"
+ tools:ignore="GoogleAppIndexingWarning"
+ android:requestLegacyExternalStorage="true">
+
+ <activity
+ android:name=".GodotProjectManager"
+ android:configChanges="orientation|keyboardHidden|screenSize|smallestScreenSize|density|keyboard|navigation|screenLayout|uiMode"
+ android:launchMode="singleTask"
+ android:resizeableActivity="false"
+ android:screenOrientation="landscape"
+ android:exported="true"
+ android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen"
+ android:process=":GodotProjectManager">
+
+ <intent-filter>
+ <action android:name="android.intent.action.MAIN" />
+ <category android:name="android.intent.category.LAUNCHER" />
+ </intent-filter>
+ </activity>
+
+ <activity
+ android:name=".GodotEditor"
+ android:configChanges="orientation|keyboardHidden|screenSize|smallestScreenSize|density|keyboard|navigation|screenLayout|uiMode"
+ android:process=":GodotEditor"
+ android:launchMode="singleTask"
+ android:resizeableActivity="false"
+ android:screenOrientation="landscape"
+ android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen">
+ </activity>
+
+ <activity
+ android:name=".GodotGame"
+ android:configChanges="orientation|keyboardHidden|screenSize|smallestScreenSize|density|keyboard|navigation|screenLayout|uiMode"
+ android:label="@string/godot_project_name_string"
+ android:process=":GodotGame"
+ android:launchMode="singleTask"
+ android:resizeableActivity="false"
+ android:screenOrientation="landscape"
+ android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen">
+ </activity>
+
+ </application>
+
+</manifest>
diff --git a/platform/android/java/editor/src/main/java/org/godotengine/editor/GodotEditor.java b/platform/android/java/editor/src/main/java/org/godotengine/editor/GodotEditor.java
new file mode 100644
index 0000000000..b3a340cc64
--- /dev/null
+++ b/platform/android/java/editor/src/main/java/org/godotengine/editor/GodotEditor.java
@@ -0,0 +1,110 @@
+/*************************************************************************/
+/* GodotEditor.java */
+/*************************************************************************/
+/* This file is part of: */
+/* GODOT ENGINE */
+/* https://godotengine.org */
+/*************************************************************************/
+/* Copyright (c) 2007-2022 Juan Linietsky, Ariel Manzur. */
+/* Copyright (c) 2014-2022 Godot Engine contributors (cf. AUTHORS.md). */
+/* */
+/* Permission is hereby granted, free of charge, to any person obtaining */
+/* a copy of this software and associated documentation files (the */
+/* "Software"), to deal in the Software without restriction, including */
+/* without limitation the rights to use, copy, modify, merge, publish, */
+/* distribute, sublicense, and/or sell copies of the Software, and to */
+/* permit persons to whom the Software is furnished to do so, subject to */
+/* the following conditions: */
+/* */
+/* The above copyright notice and this permission notice shall be */
+/* included in all copies or substantial portions of the Software. */
+/* */
+/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
+/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
+/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
+/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
+/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
+/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
+/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
+/*************************************************************************/
+
+package org.godotengine.editor;
+
+import org.godotengine.godot.FullScreenGodotApp;
+import org.godotengine.godot.utils.PermissionsUtil;
+
+import android.content.Intent;
+import android.os.Bundle;
+import android.os.Debug;
+
+import androidx.annotation.Nullable;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+/**
+ * Base class for the Godot Android Editor activities.
+ *
+ * This provides the basic templates for the activities making up this application.
+ * Each derived activity runs in its own process, which enable up to have several instances of
+ * the Godot engine up and running at the same time.
+ *
+ * It also plays the role of the primary editor window.
+ */
+public class GodotEditor extends FullScreenGodotApp {
+ private static final boolean WAIT_FOR_DEBUGGER = false;
+ private static final String COMMAND_LINE_PARAMS = "command_line_params";
+
+ private static final String EDITOR_ARG = "--editor";
+ private static final String PROJECT_MANAGER_ARG = "--project-manager";
+
+ private final List<String> commandLineParams = new ArrayList<>();
+
+ @Override
+ public void onCreate(Bundle savedInstanceState) {
+ PermissionsUtil.requestManifestPermissions(this);
+
+ String[] params = getIntent().getStringArrayExtra(COMMAND_LINE_PARAMS);
+ updateCommandLineParams(params);
+
+ if (BuildConfig.BUILD_TYPE.equals("debug") && WAIT_FOR_DEBUGGER) {
+ Debug.waitForDebugger();
+ }
+ super.onCreate(savedInstanceState);
+ }
+
+ private void updateCommandLineParams(@Nullable String[] args) {
+ // Update the list of command line params with the new args
+ commandLineParams.clear();
+ if (args != null && args.length > 0) {
+ commandLineParams.addAll(Arrays.asList(args));
+ }
+ }
+
+ @Override
+ public List<String> getCommandLine() {
+ return commandLineParams;
+ }
+
+ @Override
+ public void onNewGodotInstanceRequested(String[] args) {
+ // Parse the arguments to figure out which activity to start.
+ Class<?> targetClass = GodotGame.class;
+ for (String arg : args) {
+ if (EDITOR_ARG.equals(arg)) {
+ targetClass = GodotEditor.class;
+ break;
+ }
+
+ if (PROJECT_MANAGER_ARG.equals(arg)) {
+ targetClass = GodotProjectManager.class;
+ break;
+ }
+ }
+
+ // Launch a new activity
+ Intent newInstance = new Intent(this, targetClass).putExtra(COMMAND_LINE_PARAMS, args);
+ startActivity(newInstance);
+ }
+}
diff --git a/modules/opensimplex/register_types.h b/platform/android/java/editor/src/main/java/org/godotengine/editor/GodotGame.java
index 2262ab2f5e..5a0be391cf 100644
--- a/modules/opensimplex/register_types.h
+++ b/platform/android/java/editor/src/main/java/org/godotengine/editor/GodotGame.java
@@ -1,5 +1,5 @@
/*************************************************************************/
-/* register_types.h */
+/* GodotGame.java */
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
@@ -28,10 +28,10 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
-#ifndef OPENSIMPLEX_REGISTER_TYPES_H
-#define OPENSIMPLEX_REGISTER_TYPES_H
+package org.godotengine.editor;
-void register_opensimplex_types();
-void unregister_opensimplex_types();
-
-#endif // OPENSIMPLEX_REGISTER_TYPES_H
+/**
+ * Drives the 'run project' window of the Godot Editor.
+ */
+public class GodotGame extends GodotEditor {
+}
diff --git a/modules/fbx/data/model_abstraction.h b/platform/android/java/editor/src/main/java/org/godotengine/editor/GodotProjectManager.java
index 4c3f81b163..d30f66bb8c 100644
--- a/modules/fbx/data/model_abstraction.h
+++ b/platform/android/java/editor/src/main/java/org/godotengine/editor/GodotProjectManager.java
@@ -1,5 +1,5 @@
/*************************************************************************/
-/* model_abstraction.h */
+/* GodotProjectManager.java */
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
@@ -28,25 +28,14 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
-#ifndef MODEL_ABSTRACTION_H
-#define MODEL_ABSTRACTION_H
+package org.godotengine.editor;
-#include "modules/fbx/fbx_parser/FBXDocument.h"
-
-struct ModelAbstraction {
- mutable const FBXDocParser::Model *fbx_model = nullptr;
-
- void set_model(const FBXDocParser::Model *p_model) {
- fbx_model = p_model;
- }
-
- bool has_model() const {
- return fbx_model != nullptr;
- }
-
- const FBXDocParser::Model *get_model() const {
- return fbx_model;
- }
-};
-
-#endif // MODEL_ABSTRACTION_H
+/**
+ * Launcher activity for the Godot Android Editor.
+ *
+ * It presents the user with the project manager interface.
+ * Upon selection of a project, this activity (via its parent logic) starts the
+ * {@link GodotEditor} activity.
+ */
+public class GodotProjectManager extends GodotEditor {
+}
diff --git a/platform/android/java/editor/src/main/res/values/strings.xml b/platform/android/java/editor/src/main/res/values/strings.xml
new file mode 100644
index 0000000000..e8ce34f34d
--- /dev/null
+++ b/platform/android/java/editor/src/main/res/values/strings.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+ <string name="godot_editor_name_string">Godot Editor 4.x</string>
+</resources>
diff --git a/platform/android/java/lib/build.gradle b/platform/android/java/lib/build.gradle
index 120a40a31d..c806de1ded 100644
--- a/platform/android/java/lib/build.gradle
+++ b/platform/android/java/lib/build.gradle
@@ -18,14 +18,13 @@ def pathToRootDir = "../../../../"
android {
compileSdkVersion versions.compileSdk
buildToolsVersion versions.buildTools
-
ndkVersion versions.ndkVersion
defaultConfig {
minSdkVersion versions.minSdk
targetSdkVersion versions.targetSdk
- manifestPlaceholders = [godotLibraryVersion: getGodotLibraryVersion()]
+ manifestPlaceholders = [godotLibraryVersion: getGodotLibraryVersionName()]
}
namespace = "org.godotengine.godot"
@@ -35,6 +34,18 @@ android {
targetCompatibility versions.javaVersion
}
+ buildTypes {
+ dev {
+ initWith debug
+ }
+ }
+
+ flavorDimensions "products"
+ productFlavors {
+ editor {}
+ template {}
+ }
+
lintOptions {
abortOnError false
disable 'MissingTranslation', 'UnusedResources'
@@ -58,24 +69,50 @@ android {
aidl.srcDirs = ['aidl']
assets.srcDirs = ['assets']
}
+
debug.jniLibs.srcDirs = ['libs/debug']
+ dev.jniLibs.srcDirs = ['libs/dev']
release.jniLibs.srcDirs = ['libs/release']
+
+ // Editor jni library
+ editorDebug.jniLibs.srcDirs = ['libs/tools/debug']
+ editorDev.jniLibs.srcDirs = ['libs/tools/dev']
+ }
+
+ // Disable 'editorRelease'.
+ // The editor can't be used with target=release as debugging tools are then not
+ // included, and it would crash on errors instead of reporting them.
+ variantFilter { variant ->
+ if (variant.name == "editorRelease") {
+ setIgnore(true)
+ }
}
libraryVariants.all { variant ->
- variant.outputs.all { output ->
- output.outputFileName = "godot-lib.${variant.name}.aar"
+ def flavorName = variant.getFlavorName()
+ if (flavorName == null || flavorName == "") {
+ throw new GradleException("Invalid product flavor: $flavorName")
}
- def buildType = variant.buildType.name.capitalize()
+ boolean toolsFlag = flavorName == "editor"
- def releaseTarget = buildType.toLowerCase()
- if (releaseTarget == null || releaseTarget == "") {
- throw new GradleException("Invalid build type: " + buildType)
+ def buildType = variant.buildType.name
+ if (buildType == null || buildType == "" || !supportedTargetsMap.containsKey(buildType)) {
+ throw new GradleException("Invalid build type: $buildType")
}
- if (!supportedAbis.contains(defaultAbi)) {
- throw new GradleException("Invalid default abi: " + defaultAbi)
+ def sconsTarget = supportedTargetsMap[buildType]
+ if (sconsTarget == null || sconsTarget == "") {
+ throw new GradleException("Invalid scons target: $sconsTarget")
+ }
+
+ // Update the name of the generated library
+ def outputSuffix = "${buildType}.aar"
+ if (toolsFlag) {
+ outputSuffix = "tools.$outputSuffix"
+ }
+ variant.outputs.all { output ->
+ output.outputFileName = "godot-lib.${outputSuffix}"
}
// Find scons' executable path
@@ -88,13 +125,11 @@ android {
for (ext in sconsExts) {
String sconsNameExt = sconsName + ext
logger.lifecycle("Checking $sconsNameExt")
-
sconsExecutableFile = org.gradle.internal.os.OperatingSystem.current().findInPath(sconsNameExt)
if (sconsExecutableFile != null) {
// We're done!
break
}
-
// Check all the options in path
List<File> allOptions = org.gradle.internal.os.OperatingSystem.current().findAllInPath(sconsNameExt)
if (!allOptions.isEmpty()) {
@@ -103,27 +138,32 @@ android {
break
}
}
-
if (sconsExecutableFile == null) {
throw new GradleException("Unable to find executable path for the '$sconsName' command.")
} else {
logger.lifecycle("Found executable path for $sconsName: ${sconsExecutableFile.absolutePath}")
}
- // Creating gradle task to generate the native libraries for the default abi.
- def taskName = getSconsTaskName(buildType)
- tasks.create(name: taskName, type: Exec) {
- executable sconsExecutableFile.absolutePath
- args "--directory=${pathToRootDir}", "platform=android", "target=${releaseTarget}", "android_arch=${defaultAbi}", "-j" + Runtime.runtime.availableProcessors()
- }
+ for (String selectedAbi : selectedAbis) {
+ if (!supportedAbis.contains(selectedAbi)) {
+ throw new GradleException("Invalid selected abi: $selectedAbi")
+ }
- // Schedule the tasks so the generated libs are present before the aar file is packaged.
- tasks["merge${buildType}JniLibFolders"].dependsOn taskName
+ // Creating gradle task to generate the native libraries for the selected abi.
+ def taskName = getSconsTaskName(flavorName, buildType, selectedAbi)
+ tasks.create(name: taskName, type: Exec) {
+ executable sconsExecutableFile.absolutePath
+ args "--directory=${pathToRootDir}", "platform=android", "tools=${toolsFlag}", "target=${sconsTarget}", "android_arch=${selectedAbi}", "-j" + Runtime.runtime.availableProcessors()
+ }
+
+ // Schedule the tasks so the generated libs are present before the aar file is packaged.
+ tasks["merge${flavorName.capitalize()}${buildType.capitalize()}JniLibFolders"].dependsOn taskName
+ }
}
// TODO: Enable when issues with AGP 7.1+ are resolved (https://github.com/GodotVR/godot_openxr/issues/187).
// publishing {
-// singleVariant("release") {
+// singleVariant("templateRelease") {
// withSourcesJar()
// withJavadocJar()
// }
diff --git a/platform/android/java/lib/src/org/godotengine/godot/Godot.java b/platform/android/java/lib/src/org/godotengine/godot/Godot.java
index 78848c109a..8a86136daf 100644
--- a/platform/android/java/lib/src/org/godotengine/godot/Godot.java
+++ b/platform/android/java/lib/src/org/godotengine/godot/Godot.java
@@ -47,7 +47,6 @@ import android.app.AlertDialog;
import android.app.PendingIntent;
import android.content.ClipData;
import android.content.ClipboardManager;
-import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
@@ -333,9 +332,11 @@ public class Godot extends Fragment implements SensorEventListener, IDownloaderC
}
public void restart() {
- if (godotHost != null) {
- godotHost.onGodotRestartRequested(this);
- }
+ runOnUiThread(() -> {
+ if (godotHost != null) {
+ godotHost.onGodotRestartRequested(this);
+ }
+ });
}
public void alert(final String message, final String title) {
@@ -859,9 +860,11 @@ public class Godot extends Fragment implements SensorEventListener, IDownloaderC
private void forceQuit() {
// TODO: This is a temp solution. The proper fix will involve tracking down and properly shutting down each
// native Godot components that is started in Godot#onVideoInit.
- if (godotHost != null) {
- godotHost.onGodotForceQuit(this);
- }
+ runOnUiThread(() -> {
+ if (godotHost != null) {
+ godotHost.onGodotForceQuit(this);
+ }
+ });
}
private boolean obbIsCorrupted(String f, String main_pack_md5) {
@@ -1010,6 +1013,7 @@ public class Godot extends Fragment implements SensorEventListener, IDownloaderC
mProgressFraction.setText(Helpers.getDownloadProgressString(progress.mOverallProgress,
progress.mOverallTotal));
}
+
public void initInputDevices() {
mRenderView.initInputDevices();
}
@@ -1018,4 +1022,13 @@ public class Godot extends Fragment implements SensorEventListener, IDownloaderC
private GodotRenderView getRenderView() { // used by native side to get renderView
return mRenderView;
}
+
+ @Keep
+ private void createNewGodotInstance(String[] args) {
+ runOnUiThread(() -> {
+ if (godotHost != null) {
+ godotHost.onNewGodotInstanceRequested(args);
+ }
+ });
+ }
}
diff --git a/platform/android/java/lib/src/org/godotengine/godot/GodotGLRenderView.java b/platform/android/java/lib/src/org/godotengine/godot/GodotGLRenderView.java
index 61093d54de..08da1b1832 100644
--- a/platform/android/java/lib/src/org/godotengine/godot/GodotGLRenderView.java
+++ b/platform/android/java/lib/src/org/godotengine/godot/GodotGLRenderView.java
@@ -29,6 +29,8 @@
/*************************************************************************/
package org.godotengine.godot;
+import org.godotengine.godot.gl.GLSurfaceView;
+import org.godotengine.godot.gl.GodotRenderer;
import org.godotengine.godot.input.GodotGestureHandler;
import org.godotengine.godot.input.GodotInputHandler;
import org.godotengine.godot.utils.GLUtils;
@@ -43,7 +45,6 @@ import org.godotengine.godot.xr.regular.RegularFallbackConfigChooser;
import android.annotation.SuppressLint;
import android.content.Context;
import android.graphics.PixelFormat;
-import android.opengl.GLSurfaceView;
import android.os.Build;
import android.view.GestureDetector;
import android.view.KeyEvent;
diff --git a/platform/android/java/lib/src/org/godotengine/godot/GodotHost.java b/platform/android/java/lib/src/org/godotengine/godot/GodotHost.java
index 8e8f993369..2e7b67194f 100644
--- a/platform/android/java/lib/src/org/godotengine/godot/GodotHost.java
+++ b/platform/android/java/lib/src/org/godotengine/godot/GodotHost.java
@@ -60,8 +60,16 @@ public interface GodotHost {
default void onGodotForceQuit(Godot instance) {}
/**
- * Invoked on the GL thread when the Godot instance wants to be restarted. It's up to the host
+ * Invoked on the UI thread when the Godot instance wants to be restarted. It's up to the host
* to perform the appropriate action(s).
*/
default void onGodotRestartRequested(Godot instance) {}
+
+ /**
+ * Invoked on the UI thread when a new Godot instance is requested. It's up to the host to
+ * perform the appropriate action(s).
+ *
+ * @param args Arguments used to initialize the new instance.
+ */
+ default void onNewGodotInstanceRequested(String[] args) {}
}
diff --git a/platform/android/java/lib/src/org/godotengine/godot/GodotLib.java b/platform/android/java/lib/src/org/godotengine/godot/GodotLib.java
index 29e4b4b29e..253a51b83c 100644
--- a/platform/android/java/lib/src/org/godotengine/godot/GodotLib.java
+++ b/platform/android/java/lib/src/org/godotengine/godot/GodotLib.java
@@ -30,6 +30,8 @@
package org.godotengine.godot;
+import org.godotengine.godot.gl.GodotRenderer;
+
import android.app.Activity;
import android.hardware.SensorEvent;
import android.view.Surface;
@@ -68,7 +70,7 @@ public class GodotLib {
* @param p_surface
* @param p_width
* @param p_height
- * @see android.opengl.GLSurfaceView.Renderer#onSurfaceChanged(GL10, int, int)
+ * @see org.godotengine.godot.gl.GLSurfaceView.Renderer#onSurfaceChanged(GL10, int, int)
*/
public static native void resize(Surface p_surface, int p_width, int p_height);
@@ -85,9 +87,9 @@ public class GodotLib {
/**
* Invoked on the GL thread to draw the current frame.
- * @see android.opengl.GLSurfaceView.Renderer#onDrawFrame(GL10)
+ * @see org.godotengine.godot.gl.GLSurfaceView.Renderer#onDrawFrame(GL10)
*/
- public static native void step();
+ public static native boolean step();
/**
* Forward touch events from the main thread to the GL thread.
diff --git a/platform/android/java/lib/src/org/godotengine/godot/gl/EGLLogWrapper.java b/platform/android/java/lib/src/org/godotengine/godot/gl/EGLLogWrapper.java
new file mode 100644
index 0000000000..af16cfce74
--- /dev/null
+++ b/platform/android/java/lib/src/org/godotengine/godot/gl/EGLLogWrapper.java
@@ -0,0 +1,566 @@
+// clang-format off
+
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.godotengine.godot.gl;
+
+import android.opengl.GLDebugHelper;
+import android.opengl.GLException;
+
+import java.io.IOException;
+import java.io.Writer;
+
+import javax.microedition.khronos.egl.EGL;
+import javax.microedition.khronos.egl.EGL10;
+import javax.microedition.khronos.egl.EGL11;
+import javax.microedition.khronos.egl.EGLConfig;
+import javax.microedition.khronos.egl.EGLContext;
+import javax.microedition.khronos.egl.EGLDisplay;
+import javax.microedition.khronos.egl.EGLSurface;
+
+class EGLLogWrapper implements EGL11 {
+ private EGL10 mEgl10;
+ Writer mLog;
+ boolean mLogArgumentNames;
+ boolean mCheckError;
+ private int mArgCount;
+
+
+ public EGLLogWrapper(EGL egl, int configFlags, Writer log) {
+ mEgl10 = (EGL10) egl;
+ mLog = log;
+ mLogArgumentNames =
+ (GLDebugHelper.CONFIG_LOG_ARGUMENT_NAMES & configFlags) != 0;
+ mCheckError =
+ (GLDebugHelper.CONFIG_CHECK_GL_ERROR & configFlags) != 0;
+ }
+
+ public boolean eglChooseConfig(EGLDisplay display, int[] attrib_list,
+ EGLConfig[] configs, int config_size, int[] num_config) {
+ begin("eglChooseConfig");
+ arg("display", display);
+ arg("attrib_list", attrib_list);
+ arg("config_size", config_size);
+ end();
+
+ boolean result = mEgl10.eglChooseConfig(display, attrib_list, configs,
+ config_size, num_config);
+ arg("configs", configs);
+ arg("num_config", num_config);
+ returns(result);
+ checkError();
+ return result;
+ }
+
+ public boolean eglCopyBuffers(EGLDisplay display, EGLSurface surface,
+ Object native_pixmap) {
+ begin("eglCopyBuffers");
+ arg("display", display);
+ arg("surface", surface);
+ arg("native_pixmap", native_pixmap);
+ end();
+
+ boolean result = mEgl10.eglCopyBuffers(display, surface, native_pixmap);
+ returns(result);
+ checkError();
+ return result;
+ }
+
+ public EGLContext eglCreateContext(EGLDisplay display, EGLConfig config,
+ EGLContext share_context, int[] attrib_list) {
+ begin("eglCreateContext");
+ arg("display", display);
+ arg("config", config);
+ arg("share_context", share_context);
+ arg("attrib_list", attrib_list);
+ end();
+
+ EGLContext result = mEgl10.eglCreateContext(display, config,
+ share_context, attrib_list);
+ returns(result);
+ checkError();
+ return result;
+ }
+
+ public EGLSurface eglCreatePbufferSurface(EGLDisplay display,
+ EGLConfig config, int[] attrib_list) {
+ begin("eglCreatePbufferSurface");
+ arg("display", display);
+ arg("config", config);
+ arg("attrib_list", attrib_list);
+ end();
+
+ EGLSurface result = mEgl10.eglCreatePbufferSurface(display, config,
+ attrib_list);
+ returns(result);
+ checkError();
+ return result;
+ }
+
+ public EGLSurface eglCreatePixmapSurface(EGLDisplay display,
+ EGLConfig config, Object native_pixmap, int[] attrib_list) {
+ begin("eglCreatePixmapSurface");
+ arg("display", display);
+ arg("config", config);
+ arg("native_pixmap", native_pixmap);
+ arg("attrib_list", attrib_list);
+ end();
+
+ EGLSurface result = mEgl10.eglCreatePixmapSurface(display, config,
+ native_pixmap, attrib_list);
+ returns(result);
+ checkError();
+ return result;
+ }
+
+ public EGLSurface eglCreateWindowSurface(EGLDisplay display,
+ EGLConfig config, Object native_window, int[] attrib_list) {
+ begin("eglCreateWindowSurface");
+ arg("display", display);
+ arg("config", config);
+ arg("native_window", native_window);
+ arg("attrib_list", attrib_list);
+ end();
+
+ EGLSurface result = mEgl10.eglCreateWindowSurface(display, config,
+ native_window, attrib_list);
+ returns(result);
+ checkError();
+ return result;
+ }
+
+ public boolean eglDestroyContext(EGLDisplay display, EGLContext context) {
+ begin("eglDestroyContext");
+ arg("display", display);
+ arg("context", context);
+ end();
+
+ boolean result = mEgl10.eglDestroyContext(display, context);
+ returns(result);
+ checkError();
+ return result;
+ }
+
+ public boolean eglDestroySurface(EGLDisplay display, EGLSurface surface) {
+ begin("eglDestroySurface");
+ arg("display", display);
+ arg("surface", surface);
+ end();
+
+ boolean result = mEgl10.eglDestroySurface(display, surface);
+ returns(result);
+ checkError();
+ return result;
+ }
+
+ public boolean eglGetConfigAttrib(EGLDisplay display, EGLConfig config,
+ int attribute, int[] value) {
+ begin("eglGetConfigAttrib");
+ arg("display", display);
+ arg("config", config);
+ arg("attribute", attribute);
+ end();
+ boolean result = mEgl10.eglGetConfigAttrib(display, config, attribute,
+ value);
+ arg("value", value);
+ returns(result);
+ checkError();
+ return false;
+ }
+
+ public boolean eglGetConfigs(EGLDisplay display, EGLConfig[] configs,
+ int config_size, int[] num_config) {
+ begin("eglGetConfigs");
+ arg("display", display);
+ arg("config_size", config_size);
+ end();
+
+ boolean result = mEgl10.eglGetConfigs(display, configs, config_size,
+ num_config);
+ arg("configs", configs);
+ arg("num_config", num_config);
+ returns(result);
+ checkError();
+ return result;
+ }
+
+ public EGLContext eglGetCurrentContext() {
+ begin("eglGetCurrentContext");
+ end();
+
+ EGLContext result = mEgl10.eglGetCurrentContext();
+ returns(result);
+
+ checkError();
+ return result;
+ }
+
+ public EGLDisplay eglGetCurrentDisplay() {
+ begin("eglGetCurrentDisplay");
+ end();
+
+ EGLDisplay result = mEgl10.eglGetCurrentDisplay();
+ returns(result);
+
+ checkError();
+ return result;
+ }
+
+ public EGLSurface eglGetCurrentSurface(int readdraw) {
+ begin("eglGetCurrentSurface");
+ arg("readdraw", readdraw);
+ end();
+
+ EGLSurface result = mEgl10.eglGetCurrentSurface(readdraw);
+ returns(result);
+
+ checkError();
+ return result;
+ }
+
+ public EGLDisplay eglGetDisplay(Object native_display) {
+ begin("eglGetDisplay");
+ arg("native_display", native_display);
+ end();
+
+ EGLDisplay result = mEgl10.eglGetDisplay(native_display);
+ returns(result);
+
+ checkError();
+ return result;
+ }
+
+ public int eglGetError() {
+ begin("eglGetError");
+ end();
+
+ int result = mEgl10.eglGetError();
+ returns(getErrorString(result));
+
+ return result;
+ }
+
+ public boolean eglInitialize(EGLDisplay display, int[] major_minor) {
+ begin("eglInitialize");
+ arg("display", display);
+ end();
+ boolean result = mEgl10.eglInitialize(display, major_minor);
+ returns(result);
+ arg("major_minor", major_minor);
+ checkError();
+ return result;
+ }
+
+ public boolean eglMakeCurrent(EGLDisplay display, EGLSurface draw,
+ EGLSurface read, EGLContext context) {
+ begin("eglMakeCurrent");
+ arg("display", display);
+ arg("draw", draw);
+ arg("read", read);
+ arg("context", context);
+ end();
+ boolean result = mEgl10.eglMakeCurrent(display, draw, read, context);
+ returns(result);
+ checkError();
+ return result;
+ }
+
+ public boolean eglQueryContext(EGLDisplay display, EGLContext context,
+ int attribute, int[] value) {
+ begin("eglQueryContext");
+ arg("display", display);
+ arg("context", context);
+ arg("attribute", attribute);
+ end();
+ boolean result = mEgl10.eglQueryContext(display, context, attribute,
+ value);
+ returns(value[0]);
+ returns(result);
+ checkError();
+ return result;
+ }
+
+ public String eglQueryString(EGLDisplay display, int name) {
+ begin("eglQueryString");
+ arg("display", display);
+ arg("name", name);
+ end();
+ String result = mEgl10.eglQueryString(display, name);
+ returns(result);
+ checkError();
+ return result;
+ }
+
+ public boolean eglQuerySurface(EGLDisplay display, EGLSurface surface,
+ int attribute, int[] value) {
+ begin("eglQuerySurface");
+ arg("display", display);
+ arg("surface", surface);
+ arg("attribute", attribute);
+ end();
+ boolean result = mEgl10.eglQuerySurface(display, surface, attribute,
+ value);
+ returns(value[0]);
+ returns(result);
+ checkError();
+ return result;
+ }
+
+ public boolean eglSwapBuffers(EGLDisplay display, EGLSurface surface) {
+ begin("eglSwapBuffers");
+ arg("display", display);
+ arg("surface", surface);
+ end();
+ boolean result = mEgl10.eglSwapBuffers(display, surface);
+ returns(result);
+ checkError();
+ return result;
+ }
+
+ public boolean eglTerminate(EGLDisplay display) {
+ begin("eglTerminate");
+ arg("display", display);
+ end();
+ boolean result = mEgl10.eglTerminate(display);
+ returns(result);
+ checkError();
+ return result;
+ }
+
+ public boolean eglWaitGL() {
+ begin("eglWaitGL");
+ end();
+ boolean result = mEgl10.eglWaitGL();
+ returns(result);
+ checkError();
+ return result;
+ }
+
+ public boolean eglWaitNative(int engine, Object bindTarget) {
+ begin("eglWaitNative");
+ arg("engine", engine);
+ arg("bindTarget", bindTarget);
+ end();
+ boolean result = mEgl10.eglWaitNative(engine, bindTarget);
+ returns(result);
+ checkError();
+ return result;
+ }
+
+ private void checkError() {
+ int eglError;
+ if ((eglError = mEgl10.eglGetError()) != EGL_SUCCESS) {
+ String errorMessage = "eglError: " + getErrorString(eglError);
+ logLine(errorMessage);
+ if (mCheckError) {
+ throw new GLException(eglError, errorMessage);
+ }
+ }
+ }
+
+ private void logLine(String message) {
+ log(message + '\n');
+ }
+
+ private void log(String message) {
+ try {
+ mLog.write(message);
+ } catch (IOException e) {
+ // Ignore exception, keep on trying
+ }
+ }
+
+ private void begin(String name) {
+ log(name + '(');
+ mArgCount = 0;
+ }
+
+ private void arg(String name, String value) {
+ if (mArgCount++ > 0) {
+ log(", ");
+ }
+ if (mLogArgumentNames) {
+ log(name + "=");
+ }
+ log(value);
+ }
+
+ private void end() {
+ log(");\n");
+ flush();
+ }
+
+ private void flush() {
+ try {
+ mLog.flush();
+ } catch (IOException e) {
+ mLog = null;
+ }
+ }
+
+ private void arg(String name, int value) {
+ arg(name, Integer.toString(value));
+ }
+
+ private void arg(String name, Object object) {
+ arg(name, toString(object));
+ }
+
+ private void arg(String name, EGLDisplay object) {
+ if (object == EGL10.EGL_DEFAULT_DISPLAY) {
+ arg(name, "EGL10.EGL_DEFAULT_DISPLAY");
+ } else if (object == EGL_NO_DISPLAY) {
+ arg(name, "EGL10.EGL_NO_DISPLAY");
+ } else {
+ arg(name, toString(object));
+ }
+ }
+
+ private void arg(String name, EGLContext object) {
+ if (object == EGL10.EGL_NO_CONTEXT) {
+ arg(name, "EGL10.EGL_NO_CONTEXT");
+ } else {
+ arg(name, toString(object));
+ }
+ }
+
+ private void arg(String name, EGLSurface object) {
+ if (object == EGL10.EGL_NO_SURFACE) {
+ arg(name, "EGL10.EGL_NO_SURFACE");
+ } else {
+ arg(name, toString(object));
+ }
+ }
+
+ private void returns(String result) {
+ log(" returns " + result + ";\n");
+ flush();
+ }
+
+ private void returns(int result) {
+ returns(Integer.toString(result));
+ }
+
+ private void returns(boolean result) {
+ returns(Boolean.toString(result));
+ }
+
+ private void returns(Object result) {
+ returns(toString(result));
+ }
+
+ private String toString(Object obj) {
+ if (obj == null) {
+ return "null";
+ } else {
+ return obj.toString();
+ }
+ }
+
+ private void arg(String name, int[] arr) {
+ if (arr == null) {
+ arg(name, "null");
+ } else {
+ arg(name, toString(arr.length, arr, 0));
+ }
+ }
+
+ private void arg(String name, Object[] arr) {
+ if (arr == null) {
+ arg(name, "null");
+ } else {
+ arg(name, toString(arr.length, arr, 0));
+ }
+ }
+
+ private String toString(int n, int[] arr, int offset) {
+ StringBuilder buf = new StringBuilder();
+ buf.append("{\n");
+ int arrLen = arr.length;
+ for (int i = 0; i < n; i++) {
+ int index = offset + i;
+ buf.append(" [" + index + "] = ");
+ if (index < 0 || index >= arrLen) {
+ buf.append("out of bounds");
+ } else {
+ buf.append(arr[index]);
+ }
+ buf.append('\n');
+ }
+ buf.append("}");
+ return buf.toString();
+ }
+
+ private String toString(int n, Object[] arr, int offset) {
+ StringBuilder buf = new StringBuilder();
+ buf.append("{\n");
+ int arrLen = arr.length;
+ for (int i = 0; i < n; i++) {
+ int index = offset + i;
+ buf.append(" [" + index + "] = ");
+ if (index < 0 || index >= arrLen) {
+ buf.append("out of bounds");
+ } else {
+ buf.append(arr[index]);
+ }
+ buf.append('\n');
+ }
+ buf.append("}");
+ return buf.toString();
+ }
+
+ private static String getHex(int value) {
+ return "0x" + Integer.toHexString(value);
+ }
+
+ public static String getErrorString(int error) {
+ switch (error) {
+ case EGL_SUCCESS:
+ return "EGL_SUCCESS";
+ case EGL_NOT_INITIALIZED:
+ return "EGL_NOT_INITIALIZED";
+ case EGL_BAD_ACCESS:
+ return "EGL_BAD_ACCESS";
+ case EGL_BAD_ALLOC:
+ return "EGL_BAD_ALLOC";
+ case EGL_BAD_ATTRIBUTE:
+ return "EGL_BAD_ATTRIBUTE";
+ case EGL_BAD_CONFIG:
+ return "EGL_BAD_CONFIG";
+ case EGL_BAD_CONTEXT:
+ return "EGL_BAD_CONTEXT";
+ case EGL_BAD_CURRENT_SURFACE:
+ return "EGL_BAD_CURRENT_SURFACE";
+ case EGL_BAD_DISPLAY:
+ return "EGL_BAD_DISPLAY";
+ case EGL_BAD_MATCH:
+ return "EGL_BAD_MATCH";
+ case EGL_BAD_NATIVE_PIXMAP:
+ return "EGL_BAD_NATIVE_PIXMAP";
+ case EGL_BAD_NATIVE_WINDOW:
+ return "EGL_BAD_NATIVE_WINDOW";
+ case EGL_BAD_PARAMETER:
+ return "EGL_BAD_PARAMETER";
+ case EGL_BAD_SURFACE:
+ return "EGL_BAD_SURFACE";
+ case EGL11.EGL_CONTEXT_LOST:
+ return "EGL_CONTEXT_LOST";
+ default:
+ return getHex(error);
+ }
+ }
+}
diff --git a/platform/android/java/lib/src/org/godotengine/godot/gl/GLSurfaceView.java b/platform/android/java/lib/src/org/godotengine/godot/gl/GLSurfaceView.java
new file mode 100644
index 0000000000..8449c08b88
--- /dev/null
+++ b/platform/android/java/lib/src/org/godotengine/godot/gl/GLSurfaceView.java
@@ -0,0 +1,1939 @@
+// clang-format off
+
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.godotengine.godot.gl;
+
+import android.content.Context;
+import android.opengl.EGL14;
+import android.opengl.EGLExt;
+import android.opengl.GLDebugHelper;
+import android.util.AttributeSet;
+import android.util.Log;
+import android.view.SurfaceHolder;
+import android.view.SurfaceView;
+
+import java.io.Writer;
+import java.lang.ref.WeakReference;
+import java.util.ArrayList;
+
+import javax.microedition.khronos.egl.EGL10;
+import javax.microedition.khronos.egl.EGL11;
+import javax.microedition.khronos.egl.EGLConfig;
+import javax.microedition.khronos.egl.EGLContext;
+import javax.microedition.khronos.egl.EGLDisplay;
+import javax.microedition.khronos.egl.EGLSurface;
+import javax.microedition.khronos.opengles.GL;
+import javax.microedition.khronos.opengles.GL10;
+
+/**
+ * An implementation of SurfaceView that uses the dedicated surface for
+ * displaying OpenGL rendering.
+ * <p>
+ * A GLSurfaceView provides the following features:
+ * <p>
+ * <ul>
+ * <li>Manages a surface, which is a special piece of memory that can be
+ * composited into the Android view system.
+ * <li>Manages an EGL display, which enables OpenGL to render into a surface.
+ * <li>Accepts a user-provided Renderer object that does the actual rendering.
+ * <li>Renders on a dedicated thread to decouple rendering performance from the
+ * UI thread.
+ * <li>Supports both on-demand and continuous rendering.
+ * <li>Optionally wraps, traces, and/or error-checks the renderer's OpenGL calls.
+ * </ul>
+ *
+ * <div class="special reference">
+ * <h3>Developer Guides</h3>
+ * <p>For more information about how to use OpenGL, read the
+ * <a href="{@docRoot}guide/topics/graphics/opengl.html">OpenGL</a> developer guide.</p>
+ * </div>
+ *
+ * <h3>Using GLSurfaceView</h3>
+ * <p>
+ * Typically you use GLSurfaceView by subclassing it and overriding one or more of the
+ * View system input event methods. If your application does not need to override event
+ * methods then GLSurfaceView can be used as-is. For the most part
+ * GLSurfaceView behavior is customized by calling "set" methods rather than by subclassing.
+ * For example, unlike a regular View, drawing is delegated to a separate Renderer object which
+ * is registered with the GLSurfaceView
+ * using the {@link #setRenderer(Renderer)} call.
+ * <p>
+ * <h3>Initializing GLSurfaceView</h3>
+ * All you have to do to initialize a GLSurfaceView is call {@link #setRenderer(Renderer)}.
+ * However, if desired, you can modify the default behavior of GLSurfaceView by calling one or
+ * more of these methods before calling setRenderer:
+ * <ul>
+ * <li>{@link #setDebugFlags(int)}
+ * <li>{@link #setEGLConfigChooser(boolean)}
+ * <li>{@link #setEGLConfigChooser(EGLConfigChooser)}
+ * <li>{@link #setEGLConfigChooser(int, int, int, int, int, int)}
+ * <li>{@link #setGLWrapper(GLWrapper)}
+ * </ul>
+ * <p>
+ * <h4>Specifying the android.view.Surface</h4>
+ * By default GLSurfaceView will create a PixelFormat.RGB_888 format surface. If a translucent
+ * surface is required, call getHolder().setFormat(PixelFormat.TRANSLUCENT).
+ * The exact format of a TRANSLUCENT surface is device dependent, but it will be
+ * a 32-bit-per-pixel surface with 8 bits per component.
+ * <p>
+ * <h4>Choosing an EGL Configuration</h4>
+ * A given Android device may support multiple EGLConfig rendering configurations.
+ * The available configurations may differ in how many channels of data are present, as
+ * well as how many bits are allocated to each channel. Therefore, the first thing
+ * GLSurfaceView has to do when starting to render is choose what EGLConfig to use.
+ * <p>
+ * By default GLSurfaceView chooses a EGLConfig that has an RGB_888 pixel format,
+ * with at least a 16-bit depth buffer and no stencil.
+ * <p>
+ * If you would prefer a different EGLConfig
+ * you can override the default behavior by calling one of the
+ * setEGLConfigChooser methods.
+ * <p>
+ * <h4>Debug Behavior</h4>
+ * You can optionally modify the behavior of GLSurfaceView by calling
+ * one or more of the debugging methods {@link #setDebugFlags(int)},
+ * and {@link #setGLWrapper}. These methods may be called before and/or after setRenderer, but
+ * typically they are called before setRenderer so that they take effect immediately.
+ * <p>
+ * <h4>Setting a Renderer</h4>
+ * Finally, you must call {@link #setRenderer} to register a {@link Renderer}.
+ * The renderer is
+ * responsible for doing the actual OpenGL rendering.
+ * <p>
+ * <h3>Rendering Mode</h3>
+ * Once the renderer is set, you can control whether the renderer draws
+ * continuously or on-demand by calling
+ * {@link #setRenderMode}. The default is continuous rendering.
+ * <p>
+ * <h3>Activity Life-cycle</h3>
+ * A GLSurfaceView must be notified when to pause and resume rendering. GLSurfaceView clients
+ * are required to call {@link #onPause()} when the activity stops and
+ * {@link #onResume()} when the activity starts. These calls allow GLSurfaceView to
+ * pause and resume the rendering thread, and also allow GLSurfaceView to release and recreate
+ * the OpenGL display.
+ * <p>
+ * <h3>Handling events</h3>
+ * <p>
+ * To handle an event you will typically subclass GLSurfaceView and override the
+ * appropriate method, just as you would with any other View. However, when handling
+ * the event, you may need to communicate with the Renderer object
+ * that's running in the rendering thread. You can do this using any
+ * standard Java cross-thread communication mechanism. In addition,
+ * one relatively easy way to communicate with your renderer is
+ * to call
+ * {@link #queueEvent(Runnable)}. For example:
+ * <pre class="prettyprint">
+ * class MyGLSurfaceView extends GLSurfaceView {
+ *
+ * private MyRenderer mMyRenderer;
+ *
+ * public void start() {
+ * mMyRenderer = ...;
+ * setRenderer(mMyRenderer);
+ * }
+ *
+ * public boolean onKeyDown(int keyCode, KeyEvent event) {
+ * if (keyCode == KeyEvent.KEYCODE_DPAD_CENTER) {
+ * queueEvent(new Runnable() {
+ * // This method will be called on the rendering
+ * // thread:
+ * public void run() {
+ * mMyRenderer.handleDpadCenter();
+ * }});
+ * return true;
+ * }
+ * return super.onKeyDown(keyCode, event);
+ * }
+ * }
+ * </pre>
+ *
+ */
+public class GLSurfaceView extends SurfaceView implements SurfaceHolder.Callback2 {
+ private final static String TAG = "GLSurfaceView";
+ private final static boolean LOG_ATTACH_DETACH = false;
+ private final static boolean LOG_THREADS = false;
+ private final static boolean LOG_PAUSE_RESUME = false;
+ private final static boolean LOG_SURFACE = false;
+ private final static boolean LOG_RENDERER = false;
+ private final static boolean LOG_RENDERER_DRAW_FRAME = false;
+ private final static boolean LOG_EGL = false;
+ /**
+ * The renderer only renders
+ * when the surface is created, or when {@link #requestRender} is called.
+ *
+ * @see #getRenderMode()
+ * @see #setRenderMode(int)
+ * @see #requestRender()
+ */
+ public final static int RENDERMODE_WHEN_DIRTY = 0;
+ /**
+ * The renderer is called
+ * continuously to re-render the scene.
+ *
+ * @see #getRenderMode()
+ * @see #setRenderMode(int)
+ */
+ public final static int RENDERMODE_CONTINUOUSLY = 1;
+
+ /**
+ * Check glError() after every GL call and throw an exception if glError indicates
+ * that an error has occurred. This can be used to help track down which OpenGL ES call
+ * is causing an error.
+ *
+ * @see #getDebugFlags
+ * @see #setDebugFlags
+ */
+ public final static int DEBUG_CHECK_GL_ERROR = 1;
+
+ /**
+ * Log GL calls to the system log at "verbose" level with tag "GLSurfaceView".
+ *
+ * @see #getDebugFlags
+ * @see #setDebugFlags
+ */
+ public final static int DEBUG_LOG_GL_CALLS = 2;
+
+ /**
+ * Standard View constructor. In order to render something, you
+ * must call {@link #setRenderer} to register a renderer.
+ */
+ public GLSurfaceView(Context context) {
+ super(context);
+ init();
+ }
+
+ /**
+ * Standard View constructor. In order to render something, you
+ * must call {@link #setRenderer} to register a renderer.
+ */
+ public GLSurfaceView(Context context, AttributeSet attrs) {
+ super(context, attrs);
+ init();
+ }
+
+ @Override
+ protected void finalize() throws Throwable {
+ try {
+ if (mGLThread != null) {
+ // GLThread may still be running if this view was never
+ // attached to a window.
+ mGLThread.requestExitAndWait();
+ }
+ } finally {
+ super.finalize();
+ }
+ }
+
+ private void init() {
+ // Install a SurfaceHolder.Callback so we get notified when the
+ // underlying surface is created and destroyed
+ SurfaceHolder holder = getHolder();
+ holder.addCallback(this);
+ // setFormat is done by SurfaceView in SDK 2.3 and newer. Uncomment
+ // this statement if back-porting to 2.2 or older:
+ // holder.setFormat(PixelFormat.RGB_565);
+ //
+ // setType is not needed for SDK 2.0 or newer. Uncomment this
+ // statement if back-porting this code to older SDKs.
+ // holder.setType(SurfaceHolder.SURFACE_TYPE_GPU);
+ }
+
+ /**
+ * Set the glWrapper. If the glWrapper is not null, its
+ * {@link GLWrapper#wrap(GL)} method is called
+ * whenever a surface is created. A GLWrapper can be used to wrap
+ * the GL object that's passed to the renderer. Wrapping a GL
+ * object enables examining and modifying the behavior of the
+ * GL calls made by the renderer.
+ * <p>
+ * Wrapping is typically used for debugging purposes.
+ * <p>
+ * The default value is null.
+ * @param glWrapper the new GLWrapper
+ */
+ public void setGLWrapper(GLWrapper glWrapper) {
+ mGLWrapper = glWrapper;
+ }
+
+ /**
+ * Set the debug flags to a new value. The value is
+ * constructed by OR-together zero or more
+ * of the DEBUG_CHECK_* constants. The debug flags take effect
+ * whenever a surface is created. The default value is zero.
+ * @param debugFlags the new debug flags
+ * @see #DEBUG_CHECK_GL_ERROR
+ * @see #DEBUG_LOG_GL_CALLS
+ */
+ public void setDebugFlags(int debugFlags) {
+ mDebugFlags = debugFlags;
+ }
+
+ /**
+ * Get the current value of the debug flags.
+ * @return the current value of the debug flags.
+ */
+ public int getDebugFlags() {
+ return mDebugFlags;
+ }
+
+ /**
+ * Control whether the EGL context is preserved when the GLSurfaceView is paused and
+ * resumed.
+ * <p>
+ * If set to true, then the EGL context may be preserved when the GLSurfaceView is paused.
+ * <p>
+ * Prior to API level 11, whether the EGL context is actually preserved or not
+ * depends upon whether the Android device can support an arbitrary number of
+ * EGL contexts or not. Devices that can only support a limited number of EGL
+ * contexts must release the EGL context in order to allow multiple applications
+ * to share the GPU.
+ * <p>
+ * If set to false, the EGL context will be released when the GLSurfaceView is paused,
+ * and recreated when the GLSurfaceView is resumed.
+ * <p>
+ *
+ * The default is false.
+ *
+ * @param preserveOnPause preserve the EGL context when paused
+ */
+ public void setPreserveEGLContextOnPause(boolean preserveOnPause) {
+ mPreserveEGLContextOnPause = preserveOnPause;
+ }
+
+ /**
+ * @return true if the EGL context will be preserved when paused
+ */
+ public boolean getPreserveEGLContextOnPause() {
+ return mPreserveEGLContextOnPause;
+ }
+
+ /**
+ * Set the renderer associated with this view. Also starts the thread that
+ * will call the renderer, which in turn causes the rendering to start.
+ * <p>This method should be called once and only once in the life-cycle of
+ * a GLSurfaceView.
+ * <p>The following GLSurfaceView methods can only be called <em>before</em>
+ * setRenderer is called:
+ * <ul>
+ * <li>{@link #setEGLConfigChooser(boolean)}
+ * <li>{@link #setEGLConfigChooser(EGLConfigChooser)}
+ * <li>{@link #setEGLConfigChooser(int, int, int, int, int, int)}
+ * </ul>
+ * <p>
+ * The following GLSurfaceView methods can only be called <em>after</em>
+ * setRenderer is called:
+ * <ul>
+ * <li>{@link #getRenderMode()}
+ * <li>{@link #onPause()}
+ * <li>{@link #onResume()}
+ * <li>{@link #queueEvent(Runnable)}
+ * <li>{@link #requestRender()}
+ * <li>{@link #setRenderMode(int)}
+ * </ul>
+ *
+ * @param renderer the renderer to use to perform OpenGL drawing.
+ */
+ public void setRenderer(Renderer renderer) {
+ checkRenderThreadState();
+ if (mEGLConfigChooser == null) {
+ mEGLConfigChooser = new SimpleEGLConfigChooser(true);
+ }
+ if (mEGLContextFactory == null) {
+ mEGLContextFactory = new DefaultContextFactory();
+ }
+ if (mEGLWindowSurfaceFactory == null) {
+ mEGLWindowSurfaceFactory = new DefaultWindowSurfaceFactory();
+ }
+ mRenderer = renderer;
+ mGLThread = new GLThread(mThisWeakRef);
+ mGLThread.start();
+ }
+
+ /**
+ * Install a custom EGLContextFactory.
+ * <p>If this method is
+ * called, it must be called before {@link #setRenderer(Renderer)}
+ * is called.
+ * <p>
+ * If this method is not called, then by default
+ * a context will be created with no shared context and
+ * with a null attribute list.
+ */
+ public void setEGLContextFactory(EGLContextFactory factory) {
+ checkRenderThreadState();
+ mEGLContextFactory = factory;
+ }
+
+ /**
+ * Install a custom EGLWindowSurfaceFactory.
+ * <p>If this method is
+ * called, it must be called before {@link #setRenderer(Renderer)}
+ * is called.
+ * <p>
+ * If this method is not called, then by default
+ * a window surface will be created with a null attribute list.
+ */
+ public void setEGLWindowSurfaceFactory(EGLWindowSurfaceFactory factory) {
+ checkRenderThreadState();
+ mEGLWindowSurfaceFactory = factory;
+ }
+
+ /**
+ * Install a custom EGLConfigChooser.
+ * <p>If this method is
+ * called, it must be called before {@link #setRenderer(Renderer)}
+ * is called.
+ * <p>
+ * If no setEGLConfigChooser method is called, then by default the
+ * view will choose an EGLConfig that is compatible with the current
+ * android.view.Surface, with a depth buffer depth of
+ * at least 16 bits.
+ * @param configChooser
+ */
+ public void setEGLConfigChooser(EGLConfigChooser configChooser) {
+ checkRenderThreadState();
+ mEGLConfigChooser = configChooser;
+ }
+
+ /**
+ * Install a config chooser which will choose a config
+ * as close to 16-bit RGB as possible, with or without an optional depth
+ * buffer as close to 16-bits as possible.
+ * <p>If this method is
+ * called, it must be called before {@link #setRenderer(Renderer)}
+ * is called.
+ * <p>
+ * If no setEGLConfigChooser method is called, then by default the
+ * view will choose an RGB_888 surface with a depth buffer depth of
+ * at least 16 bits.
+ *
+ * @param needDepth
+ */
+ public void setEGLConfigChooser(boolean needDepth) {
+ setEGLConfigChooser(new SimpleEGLConfigChooser(needDepth));
+ }
+
+ /**
+ * Install a config chooser which will choose a config
+ * with at least the specified depthSize and stencilSize,
+ * and exactly the specified redSize, greenSize, blueSize and alphaSize.
+ * <p>If this method is
+ * called, it must be called before {@link #setRenderer(Renderer)}
+ * is called.
+ * <p>
+ * If no setEGLConfigChooser method is called, then by default the
+ * view will choose an RGB_888 surface with a depth buffer depth of
+ * at least 16 bits.
+ *
+ */
+ public void setEGLConfigChooser(int redSize, int greenSize, int blueSize,
+ int alphaSize, int depthSize, int stencilSize) {
+ setEGLConfigChooser(new ComponentSizeChooser(redSize, greenSize,
+ blueSize, alphaSize, depthSize, stencilSize));
+ }
+
+ /**
+ * Inform the default EGLContextFactory and default EGLConfigChooser
+ * which EGLContext client version to pick.
+ * <p>Use this method to create an OpenGL ES 2.0-compatible context.
+ * Example:
+ * <pre class="prettyprint">
+ * public MyView(Context context) {
+ * super(context);
+ * setEGLContextClientVersion(2); // Pick an OpenGL ES 2.0 context.
+ * setRenderer(new MyRenderer());
+ * }
+ * </pre>
+ * <p>Note: Activities which require OpenGL ES 2.0 should indicate this by
+ * setting @lt;uses-feature android:glEsVersion="0x00020000" /> in the activity's
+ * AndroidManifest.xml file.
+ * <p>If this method is called, it must be called before {@link #setRenderer(Renderer)}
+ * is called.
+ * <p>This method only affects the behavior of the default EGLContexFactory and the
+ * default EGLConfigChooser. If
+ * {@link #setEGLContextFactory(EGLContextFactory)} has been called, then the supplied
+ * EGLContextFactory is responsible for creating an OpenGL ES 2.0-compatible context.
+ * If
+ * {@link #setEGLConfigChooser(EGLConfigChooser)} has been called, then the supplied
+ * EGLConfigChooser is responsible for choosing an OpenGL ES 2.0-compatible config.
+ * @param version The EGLContext client version to choose. Use 2 for OpenGL ES 2.0
+ */
+ public void setEGLContextClientVersion(int version) {
+ checkRenderThreadState();
+ mEGLContextClientVersion = version;
+ }
+
+ /**
+ * Set the rendering mode. When renderMode is
+ * RENDERMODE_CONTINUOUSLY, the renderer is called
+ * repeatedly to re-render the scene. When renderMode
+ * is RENDERMODE_WHEN_DIRTY, the renderer only rendered when the surface
+ * is created, or when {@link #requestRender} is called. Defaults to RENDERMODE_CONTINUOUSLY.
+ * <p>
+ * Using RENDERMODE_WHEN_DIRTY can improve battery life and overall system performance
+ * by allowing the GPU and CPU to idle when the view does not need to be updated.
+ * <p>
+ * This method can only be called after {@link #setRenderer(Renderer)}
+ *
+ * @param renderMode one of the RENDERMODE_X constants
+ * @see #RENDERMODE_CONTINUOUSLY
+ * @see #RENDERMODE_WHEN_DIRTY
+ */
+ public void setRenderMode(int renderMode) {
+ mGLThread.setRenderMode(renderMode);
+ }
+
+ /**
+ * Get the current rendering mode. May be called
+ * from any thread. Must not be called before a renderer has been set.
+ * @return the current rendering mode.
+ * @see #RENDERMODE_CONTINUOUSLY
+ * @see #RENDERMODE_WHEN_DIRTY
+ */
+ public int getRenderMode() {
+ return mGLThread.getRenderMode();
+ }
+
+ /**
+ * Request that the renderer render a frame.
+ * This method is typically used when the render mode has been set to
+ * {@link #RENDERMODE_WHEN_DIRTY}, so that frames are only rendered on demand.
+ * May be called
+ * from any thread. Must not be called before a renderer has been set.
+ */
+ public void requestRender() {
+ mGLThread.requestRender();
+ }
+
+ /**
+ * This method is part of the SurfaceHolder.Callback interface, and is
+ * not normally called or subclassed by clients of GLSurfaceView.
+ */
+ public void surfaceCreated(SurfaceHolder holder) {
+ mGLThread.surfaceCreated();
+ }
+
+ /**
+ * This method is part of the SurfaceHolder.Callback interface, and is
+ * not normally called or subclassed by clients of GLSurfaceView.
+ */
+ public void surfaceDestroyed(SurfaceHolder holder) {
+ // Surface will be destroyed when we return
+ mGLThread.surfaceDestroyed();
+ }
+
+ /**
+ * This method is part of the SurfaceHolder.Callback interface, and is
+ * not normally called or subclassed by clients of GLSurfaceView.
+ */
+ public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) {
+ mGLThread.onWindowResize(w, h);
+ }
+
+ /**
+ * This method is part of the SurfaceHolder.Callback2 interface, and is
+ * not normally called or subclassed by clients of GLSurfaceView.
+ */
+ @Override
+ public void surfaceRedrawNeededAsync(SurfaceHolder holder, Runnable finishDrawing) {
+ if (mGLThread != null) {
+ mGLThread.requestRenderAndNotify(finishDrawing);
+ }
+ }
+
+ /**
+ * This method is part of the SurfaceHolder.Callback2 interface, and is
+ * not normally called or subclassed by clients of GLSurfaceView.
+ */
+ @Deprecated
+ @Override
+ public void surfaceRedrawNeeded(SurfaceHolder holder) {
+ // Since we are part of the framework we know only surfaceRedrawNeededAsync
+ // will be called.
+ }
+
+
+ /**
+ * Pause the rendering thread, optionally tearing down the EGL context
+ * depending upon the value of {@link #setPreserveEGLContextOnPause(boolean)}.
+ *
+ * This method should be called when it is no longer desirable for the
+ * GLSurfaceView to continue rendering, such as in response to
+ * {@link android.app.Activity#onStop Activity.onStop}.
+ *
+ * Must not be called before a renderer has been set.
+ */
+ public void onPause() {
+ mGLThread.onPause();
+ }
+
+ /**
+ * Resumes the rendering thread, re-creating the OpenGL context if necessary. It
+ * is the counterpart to {@link #onPause()}.
+ *
+ * This method should typically be called in
+ * {@link android.app.Activity#onStart Activity.onStart}.
+ *
+ * Must not be called before a renderer has been set.
+ */
+ public void onResume() {
+ mGLThread.onResume();
+ }
+
+ /**
+ * Queue a runnable to be run on the GL rendering thread. This can be used
+ * to communicate with the Renderer on the rendering thread.
+ * Must not be called before a renderer has been set.
+ * @param r the runnable to be run on the GL rendering thread.
+ */
+ public void queueEvent(Runnable r) {
+ mGLThread.queueEvent(r);
+ }
+
+ /**
+ * This method is used as part of the View class and is not normally
+ * called or subclassed by clients of GLSurfaceView.
+ */
+ @Override
+ protected void onAttachedToWindow() {
+ super.onAttachedToWindow();
+ if (LOG_ATTACH_DETACH) {
+ Log.d(TAG, "onAttachedToWindow reattach =" + mDetached);
+ }
+ if (mDetached && (mRenderer != null)) {
+ int renderMode = RENDERMODE_CONTINUOUSLY;
+ if (mGLThread != null) {
+ renderMode = mGLThread.getRenderMode();
+ }
+ mGLThread = new GLThread(mThisWeakRef);
+ if (renderMode != RENDERMODE_CONTINUOUSLY) {
+ mGLThread.setRenderMode(renderMode);
+ }
+ mGLThread.start();
+ }
+ mDetached = false;
+ }
+
+ @Override
+ protected void onDetachedFromWindow() {
+ if (LOG_ATTACH_DETACH) {
+ Log.d(TAG, "onDetachedFromWindow");
+ }
+ if (mGLThread != null) {
+ mGLThread.requestExitAndWait();
+ }
+ mDetached = true;
+ super.onDetachedFromWindow();
+ }
+
+ // ----------------------------------------------------------------------
+
+ /**
+ * An interface used to wrap a GL interface.
+ * <p>Typically
+ * used for implementing debugging and tracing on top of the default
+ * GL interface. You would typically use this by creating your own class
+ * that implemented all the GL methods by delegating to another GL instance.
+ * Then you could add your own behavior before or after calling the
+ * delegate. All the GLWrapper would do was instantiate and return the
+ * wrapper GL instance:
+ * <pre class="prettyprint">
+ * class MyGLWrapper implements GLWrapper {
+ * GL wrap(GL gl) {
+ * return new MyGLImplementation(gl);
+ * }
+ * static class MyGLImplementation implements GL,GL10,GL11,... {
+ * ...
+ * }
+ * }
+ * </pre>
+ * @see #setGLWrapper(GLWrapper)
+ */
+ public interface GLWrapper {
+ /**
+ * Wraps a gl interface in another gl interface.
+ * @param gl a GL interface that is to be wrapped.
+ * @return either the input argument or another GL object that wraps the input argument.
+ */
+ GL wrap(GL gl);
+ }
+
+ /**
+ * A generic renderer interface.
+ * <p>
+ * The renderer is responsible for making OpenGL calls to render a frame.
+ * <p>
+ * GLSurfaceView clients typically create their own classes that implement
+ * this interface, and then call {@link GLSurfaceView#setRenderer} to
+ * register the renderer with the GLSurfaceView.
+ * <p>
+ *
+ * <div class="special reference">
+ * <h3>Developer Guides</h3>
+ * <p>For more information about how to use OpenGL, read the
+ * <a href="{@docRoot}guide/topics/graphics/opengl.html">OpenGL</a> developer guide.</p>
+ * </div>
+ *
+ * <h3>Threading</h3>
+ * The renderer will be called on a separate thread, so that rendering
+ * performance is decoupled from the UI thread. Clients typically need to
+ * communicate with the renderer from the UI thread, because that's where
+ * input events are received. Clients can communicate using any of the
+ * standard Java techniques for cross-thread communication, or they can
+ * use the {@link GLSurfaceView#queueEvent(Runnable)} convenience method.
+ * <p>
+ * <h3>EGL Context Lost</h3>
+ * There are situations where the EGL rendering context will be lost. This
+ * typically happens when device wakes up after going to sleep. When
+ * the EGL context is lost, all OpenGL resources (such as textures) that are
+ * associated with that context will be automatically deleted. In order to
+ * keep rendering correctly, a renderer must recreate any lost resources
+ * that it still needs. The {@link #onSurfaceCreated(GL10, EGLConfig)} method
+ * is a convenient place to do this.
+ *
+ *
+ * @see #setRenderer(Renderer)
+ */
+ public interface Renderer {
+ /**
+ * Called when the surface is created or recreated.
+ * <p>
+ * Called when the rendering thread
+ * starts and whenever the EGL context is lost. The EGL context will typically
+ * be lost when the Android device awakes after going to sleep.
+ * <p>
+ * Since this method is called at the beginning of rendering, as well as
+ * every time the EGL context is lost, this method is a convenient place to put
+ * code to create resources that need to be created when the rendering
+ * starts, and that need to be recreated when the EGL context is lost.
+ * Textures are an example of a resource that you might want to create
+ * here.
+ * <p>
+ * Note that when the EGL context is lost, all OpenGL resources associated
+ * with that context will be automatically deleted. You do not need to call
+ * the corresponding "glDelete" methods such as glDeleteTextures to
+ * manually delete these lost resources.
+ * <p>
+ * @param gl the GL interface. Use <code>instanceof</code> to
+ * test if the interface supports GL11 or higher interfaces.
+ * @param config the EGLConfig of the created surface. Can be used
+ * to create matching pbuffers.
+ */
+ void onSurfaceCreated(GL10 gl, EGLConfig config);
+
+ /**
+ * Called when the surface changed size.
+ * <p>
+ * Called after the surface is created and whenever
+ * the OpenGL ES surface size changes.
+ * <p>
+ * Typically you will set your viewport here. If your camera
+ * is fixed then you could also set your projection matrix here:
+ * <pre class="prettyprint">
+ * void onSurfaceChanged(GL10 gl, int width, int height) {
+ * gl.glViewport(0, 0, width, height);
+ * // for a fixed camera, set the projection too
+ * float ratio = (float) width / height;
+ * gl.glMatrixMode(GL10.GL_PROJECTION);
+ * gl.glLoadIdentity();
+ * gl.glFrustumf(-ratio, ratio, -1, 1, 1, 10);
+ * }
+ * </pre>
+ * @param gl the GL interface. Use <code>instanceof</code> to
+ * test if the interface supports GL11 or higher interfaces.
+ * @param width
+ * @param height
+ */
+ void onSurfaceChanged(GL10 gl, int width, int height);
+
+ // -- GODOT start --
+ /**
+ * Called to draw the current frame.
+ * <p>
+ * This method is responsible for drawing the current frame.
+ * <p>
+ * The implementation of this method typically looks like this:
+ * <pre class="prettyprint">
+ * boolean onDrawFrame(GL10 gl) {
+ * gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT);
+ * //... other gl calls to render the scene ...
+ * return true;
+ * }
+ * </pre>
+ * @param gl the GL interface. Use <code>instanceof</code> to
+ * test if the interface supports GL11 or higher interfaces.
+ *
+ * @return true if the buffers should be swapped, false otherwise.
+ */
+ boolean onDrawFrame(GL10 gl);
+ // -- GODOT end --
+ }
+
+ /**
+ * An interface for customizing the eglCreateContext and eglDestroyContext calls.
+ * <p>
+ * This interface must be implemented by clients wishing to call
+ * {@link GLSurfaceView#setEGLContextFactory(EGLContextFactory)}
+ */
+ public interface EGLContextFactory {
+ EGLContext createContext(EGL10 egl, EGLDisplay display, EGLConfig eglConfig);
+ void destroyContext(EGL10 egl, EGLDisplay display, EGLContext context);
+ }
+
+ private class DefaultContextFactory implements EGLContextFactory {
+ private int EGL_CONTEXT_CLIENT_VERSION = 0x3098;
+
+ public EGLContext createContext(EGL10 egl, EGLDisplay display, EGLConfig config) {
+ int[] attrib_list = {EGL_CONTEXT_CLIENT_VERSION, mEGLContextClientVersion,
+ EGL10.EGL_NONE };
+
+ return egl.eglCreateContext(display, config, EGL10.EGL_NO_CONTEXT,
+ mEGLContextClientVersion != 0 ? attrib_list : null);
+ }
+
+ public void destroyContext(EGL10 egl, EGLDisplay display,
+ EGLContext context) {
+ if (!egl.eglDestroyContext(display, context)) {
+ Log.e("DefaultContextFactory", "display:" + display + " context: " + context);
+ if (LOG_THREADS) {
+ Log.i("DefaultContextFactory", "tid=" + Thread.currentThread().getId());
+ }
+ EglHelper.throwEglException("eglDestroyContex", egl.eglGetError());
+ }
+ }
+ }
+
+ /**
+ * An interface for customizing the eglCreateWindowSurface and eglDestroySurface calls.
+ * <p>
+ * This interface must be implemented by clients wishing to call
+ * {@link GLSurfaceView#setEGLWindowSurfaceFactory(EGLWindowSurfaceFactory)}
+ */
+ public interface EGLWindowSurfaceFactory {
+ /**
+ * @return null if the surface cannot be constructed.
+ */
+ EGLSurface createWindowSurface(EGL10 egl, EGLDisplay display, EGLConfig config,
+ Object nativeWindow);
+ void destroySurface(EGL10 egl, EGLDisplay display, EGLSurface surface);
+ }
+
+ private static class DefaultWindowSurfaceFactory implements EGLWindowSurfaceFactory {
+
+ public EGLSurface createWindowSurface(EGL10 egl, EGLDisplay display,
+ EGLConfig config, Object nativeWindow) {
+ EGLSurface result = null;
+ try {
+ result = egl.eglCreateWindowSurface(display, config, nativeWindow, null);
+ } catch (IllegalArgumentException e) {
+ // This exception indicates that the surface flinger surface
+ // is not valid. This can happen if the surface flinger surface has
+ // been torn down, but the application has not yet been
+ // notified via SurfaceHolder.Callback.surfaceDestroyed.
+ // In theory the application should be notified first,
+ // but in practice sometimes it is not. See b/4588890
+ Log.e(TAG, "eglCreateWindowSurface", e);
+ }
+ return result;
+ }
+
+ public void destroySurface(EGL10 egl, EGLDisplay display,
+ EGLSurface surface) {
+ egl.eglDestroySurface(display, surface);
+ }
+ }
+
+ /**
+ * An interface for choosing an EGLConfig configuration from a list of
+ * potential configurations.
+ * <p>
+ * This interface must be implemented by clients wishing to call
+ * {@link GLSurfaceView#setEGLConfigChooser(EGLConfigChooser)}
+ */
+ public interface EGLConfigChooser {
+ /**
+ * Choose a configuration from the list. Implementors typically
+ * implement this method by calling
+ * {@link EGL10#eglChooseConfig} and iterating through the results. Please consult the
+ * EGL specification available from The Khronos Group to learn how to call eglChooseConfig.
+ * @param egl the EGL10 for the current display.
+ * @param display the current display.
+ * @return the chosen configuration.
+ */
+ EGLConfig chooseConfig(EGL10 egl, EGLDisplay display);
+ }
+
+ private abstract class BaseConfigChooser
+ implements EGLConfigChooser {
+ public BaseConfigChooser(int[] configSpec) {
+ mConfigSpec = filterConfigSpec(configSpec);
+ }
+
+ public EGLConfig chooseConfig(EGL10 egl, EGLDisplay display) {
+ int[] num_config = new int[1];
+ if (!egl.eglChooseConfig(display, mConfigSpec, null, 0,
+ num_config)) {
+ throw new IllegalArgumentException("eglChooseConfig failed");
+ }
+
+ int numConfigs = num_config[0];
+
+ if (numConfigs <= 0) {
+ throw new IllegalArgumentException(
+ "No configs match configSpec");
+ }
+
+ EGLConfig[] configs = new EGLConfig[numConfigs];
+ if (!egl.eglChooseConfig(display, mConfigSpec, configs, numConfigs,
+ num_config)) {
+ throw new IllegalArgumentException("eglChooseConfig#2 failed");
+ }
+ EGLConfig config = chooseConfig(egl, display, configs);
+ if (config == null) {
+ throw new IllegalArgumentException("No config chosen");
+ }
+ return config;
+ }
+
+ abstract EGLConfig chooseConfig(EGL10 egl, EGLDisplay display,
+ EGLConfig[] configs);
+
+ protected int[] mConfigSpec;
+
+ private int[] filterConfigSpec(int[] configSpec) {
+ if (mEGLContextClientVersion != 2 && mEGLContextClientVersion != 3) {
+ return configSpec;
+ }
+ /* We know none of the subclasses define EGL_RENDERABLE_TYPE.
+ * And we know the configSpec is well formed.
+ */
+ int len = configSpec.length;
+ int[] newConfigSpec = new int[len + 2];
+ System.arraycopy(configSpec, 0, newConfigSpec, 0, len-1);
+ newConfigSpec[len-1] = EGL10.EGL_RENDERABLE_TYPE;
+ if (mEGLContextClientVersion == 2) {
+ newConfigSpec[len] = EGL14.EGL_OPENGL_ES2_BIT; /* EGL_OPENGL_ES2_BIT */
+ } else {
+ newConfigSpec[len] = EGLExt.EGL_OPENGL_ES3_BIT_KHR; /* EGL_OPENGL_ES3_BIT_KHR */
+ }
+ newConfigSpec[len+1] = EGL10.EGL_NONE;
+ return newConfigSpec;
+ }
+ }
+
+ /**
+ * Choose a configuration with exactly the specified r,g,b,a sizes,
+ * and at least the specified depth and stencil sizes.
+ */
+ private class ComponentSizeChooser extends BaseConfigChooser {
+ public ComponentSizeChooser(int redSize, int greenSize, int blueSize,
+ int alphaSize, int depthSize, int stencilSize) {
+ super(new int[] {
+ EGL10.EGL_RED_SIZE, redSize,
+ EGL10.EGL_GREEN_SIZE, greenSize,
+ EGL10.EGL_BLUE_SIZE, blueSize,
+ EGL10.EGL_ALPHA_SIZE, alphaSize,
+ EGL10.EGL_DEPTH_SIZE, depthSize,
+ EGL10.EGL_STENCIL_SIZE, stencilSize,
+ EGL10.EGL_NONE});
+ mValue = new int[1];
+ mRedSize = redSize;
+ mGreenSize = greenSize;
+ mBlueSize = blueSize;
+ mAlphaSize = alphaSize;
+ mDepthSize = depthSize;
+ mStencilSize = stencilSize;
+ }
+
+ @Override
+ public EGLConfig chooseConfig(EGL10 egl, EGLDisplay display,
+ EGLConfig[] configs) {
+ for (EGLConfig config : configs) {
+ int d = findConfigAttrib(egl, display, config,
+ EGL10.EGL_DEPTH_SIZE, 0);
+ int s = findConfigAttrib(egl, display, config,
+ EGL10.EGL_STENCIL_SIZE, 0);
+ if ((d >= mDepthSize) && (s >= mStencilSize)) {
+ int r = findConfigAttrib(egl, display, config,
+ EGL10.EGL_RED_SIZE, 0);
+ int g = findConfigAttrib(egl, display, config,
+ EGL10.EGL_GREEN_SIZE, 0);
+ int b = findConfigAttrib(egl, display, config,
+ EGL10.EGL_BLUE_SIZE, 0);
+ int a = findConfigAttrib(egl, display, config,
+ EGL10.EGL_ALPHA_SIZE, 0);
+ if ((r == mRedSize) && (g == mGreenSize)
+ && (b == mBlueSize) && (a == mAlphaSize)) {
+ return config;
+ }
+ }
+ }
+ return null;
+ }
+
+ private int findConfigAttrib(EGL10 egl, EGLDisplay display,
+ EGLConfig config, int attribute, int defaultValue) {
+
+ if (egl.eglGetConfigAttrib(display, config, attribute, mValue)) {
+ return mValue[0];
+ }
+ return defaultValue;
+ }
+
+ private int[] mValue;
+ // Subclasses can adjust these values:
+ protected int mRedSize;
+ protected int mGreenSize;
+ protected int mBlueSize;
+ protected int mAlphaSize;
+ protected int mDepthSize;
+ protected int mStencilSize;
+ }
+
+ /**
+ * This class will choose a RGB_888 surface with
+ * or without a depth buffer.
+ *
+ */
+ private class SimpleEGLConfigChooser extends ComponentSizeChooser {
+ public SimpleEGLConfigChooser(boolean withDepthBuffer) {
+ super(8, 8, 8, 0, withDepthBuffer ? 16 : 0, 0);
+ }
+ }
+
+ /**
+ * An EGL helper class.
+ */
+
+ private static class EglHelper {
+ public EglHelper(WeakReference<GLSurfaceView> glSurfaceViewWeakRef) {
+ mGLSurfaceViewWeakRef = glSurfaceViewWeakRef;
+ }
+
+ /**
+ * Initialize EGL for a given configuration spec.
+ */
+ public void start() {
+ if (LOG_EGL) {
+ Log.w("EglHelper", "start() tid=" + Thread.currentThread().getId());
+ }
+ /*
+ * Get an EGL instance
+ */
+ mEgl = (EGL10) EGLContext.getEGL();
+
+ /*
+ * Get to the default display.
+ */
+ mEglDisplay = mEgl.eglGetDisplay(EGL10.EGL_DEFAULT_DISPLAY);
+
+ if (mEglDisplay == EGL10.EGL_NO_DISPLAY) {
+ throw new RuntimeException("eglGetDisplay failed");
+ }
+
+ /*
+ * We can now initialize EGL for that display
+ */
+ int[] version = new int[2];
+ if(!mEgl.eglInitialize(mEglDisplay, version)) {
+ throw new RuntimeException("eglInitialize failed");
+ }
+ GLSurfaceView view = mGLSurfaceViewWeakRef.get();
+ if (view == null) {
+ mEglConfig = null;
+ mEglContext = null;
+ } else {
+ mEglConfig = view.mEGLConfigChooser.chooseConfig(mEgl, mEglDisplay);
+
+ /*
+ * Create an EGL context. We want to do this as rarely as we can, because an
+ * EGL context is a somewhat heavy object.
+ */
+ mEglContext = view.mEGLContextFactory.createContext(mEgl, mEglDisplay, mEglConfig);
+ }
+ if (mEglContext == null || mEglContext == EGL10.EGL_NO_CONTEXT) {
+ mEglContext = null;
+ throwEglException("createContext");
+ }
+ if (LOG_EGL) {
+ Log.w("EglHelper", "createContext " + mEglContext + " tid=" + Thread.currentThread().getId());
+ }
+
+ mEglSurface = null;
+ }
+
+ /**
+ * Create an egl surface for the current SurfaceHolder surface. If a surface
+ * already exists, destroy it before creating the new surface.
+ *
+ * @return true if the surface was created successfully.
+ */
+ public boolean createSurface() {
+ if (LOG_EGL) {
+ Log.w("EglHelper", "createSurface() tid=" + Thread.currentThread().getId());
+ }
+ /*
+ * Check preconditions.
+ */
+ if (mEgl == null) {
+ throw new RuntimeException("egl not initialized");
+ }
+ if (mEglDisplay == null) {
+ throw new RuntimeException("eglDisplay not initialized");
+ }
+ if (mEglConfig == null) {
+ throw new RuntimeException("mEglConfig not initialized");
+ }
+
+ /*
+ * The window size has changed, so we need to create a new
+ * surface.
+ */
+ destroySurfaceImp();
+
+ /*
+ * Create an EGL surface we can render into.
+ */
+ GLSurfaceView view = mGLSurfaceViewWeakRef.get();
+ if (view != null) {
+ mEglSurface = view.mEGLWindowSurfaceFactory.createWindowSurface(mEgl,
+ mEglDisplay, mEglConfig, view.getHolder());
+ } else {
+ mEglSurface = null;
+ }
+
+ if (mEglSurface == null || mEglSurface == EGL10.EGL_NO_SURFACE) {
+ int error = mEgl.eglGetError();
+ if (error == EGL10.EGL_BAD_NATIVE_WINDOW) {
+ Log.e("EglHelper", "createWindowSurface returned EGL_BAD_NATIVE_WINDOW.");
+ }
+ return false;
+ }
+
+ /*
+ * Before we can issue GL commands, we need to make sure
+ * the context is current and bound to a surface.
+ */
+ if (!mEgl.eglMakeCurrent(mEglDisplay, mEglSurface, mEglSurface, mEglContext)) {
+ /*
+ * Could not make the context current, probably because the underlying
+ * SurfaceView surface has been destroyed.
+ */
+ logEglErrorAsWarning("EGLHelper", "eglMakeCurrent", mEgl.eglGetError());
+ return false;
+ }
+
+ return true;
+ }
+
+ /**
+ * Create a GL object for the current EGL context.
+ * @return
+ */
+ GL createGL() {
+
+ GL gl = mEglContext.getGL();
+ GLSurfaceView view = mGLSurfaceViewWeakRef.get();
+ if (view != null) {
+ if (view.mGLWrapper != null) {
+ gl = view.mGLWrapper.wrap(gl);
+ }
+
+ if ((view.mDebugFlags & (DEBUG_CHECK_GL_ERROR | DEBUG_LOG_GL_CALLS)) != 0) {
+ int configFlags = 0;
+ Writer log = null;
+ if ((view.mDebugFlags & DEBUG_CHECK_GL_ERROR) != 0) {
+ configFlags |= GLDebugHelper.CONFIG_CHECK_GL_ERROR;
+ }
+ if ((view.mDebugFlags & DEBUG_LOG_GL_CALLS) != 0) {
+ log = new LogWriter();
+ }
+ gl = GLDebugHelper.wrap(gl, configFlags, log);
+ }
+ }
+ return gl;
+ }
+
+ /**
+ * Display the current render surface.
+ * @return the EGL error code from eglSwapBuffers.
+ */
+ public int swap() {
+ if (! mEgl.eglSwapBuffers(mEglDisplay, mEglSurface)) {
+ return mEgl.eglGetError();
+ }
+ return EGL10.EGL_SUCCESS;
+ }
+
+ public void destroySurface() {
+ if (LOG_EGL) {
+ Log.w("EglHelper", "destroySurface() tid=" + Thread.currentThread().getId());
+ }
+ destroySurfaceImp();
+ }
+
+ private void destroySurfaceImp() {
+ if (mEglSurface != null && mEglSurface != EGL10.EGL_NO_SURFACE) {
+ mEgl.eglMakeCurrent(mEglDisplay, EGL10.EGL_NO_SURFACE,
+ EGL10.EGL_NO_SURFACE,
+ EGL10.EGL_NO_CONTEXT);
+ GLSurfaceView view = mGLSurfaceViewWeakRef.get();
+ if (view != null) {
+ view.mEGLWindowSurfaceFactory.destroySurface(mEgl, mEglDisplay, mEglSurface);
+ }
+ mEglSurface = null;
+ }
+ }
+
+ public void finish() {
+ if (LOG_EGL) {
+ Log.w("EglHelper", "finish() tid=" + Thread.currentThread().getId());
+ }
+ if (mEglContext != null) {
+ GLSurfaceView view = mGLSurfaceViewWeakRef.get();
+ if (view != null) {
+ view.mEGLContextFactory.destroyContext(mEgl, mEglDisplay, mEglContext);
+ }
+ mEglContext = null;
+ }
+ if (mEglDisplay != null) {
+ mEgl.eglTerminate(mEglDisplay);
+ mEglDisplay = null;
+ }
+ }
+
+ private void throwEglException(String function) {
+ throwEglException(function, mEgl.eglGetError());
+ }
+
+ public static void throwEglException(String function, int error) {
+ String message = formatEglError(function, error);
+ if (LOG_THREADS) {
+ Log.e("EglHelper", "throwEglException tid=" + Thread.currentThread().getId() + " "
+ + message);
+ }
+ throw new RuntimeException(message);
+ }
+
+ public static void logEglErrorAsWarning(String tag, String function, int error) {
+ Log.w(tag, formatEglError(function, error));
+ }
+
+ public static String formatEglError(String function, int error) {
+ return function + " failed: " + EGLLogWrapper.getErrorString(error);
+ }
+
+ private WeakReference<GLSurfaceView> mGLSurfaceViewWeakRef;
+ EGL10 mEgl;
+ EGLDisplay mEglDisplay;
+ EGLSurface mEglSurface;
+ EGLConfig mEglConfig;
+ EGLContext mEglContext;
+
+ }
+
+ /**
+ * A generic GL Thread. Takes care of initializing EGL and GL. Delegates
+ * to a Renderer instance to do the actual drawing. Can be configured to
+ * render continuously or on request.
+ *
+ * All potentially blocking synchronization is done through the
+ * sGLThreadManager object. This avoids multiple-lock ordering issues.
+ *
+ */
+ static class GLThread extends Thread {
+ GLThread(WeakReference<GLSurfaceView> glSurfaceViewWeakRef) {
+ super();
+ mWidth = 0;
+ mHeight = 0;
+ mRequestRender = true;
+ mRenderMode = RENDERMODE_CONTINUOUSLY;
+ mWantRenderNotification = false;
+ mGLSurfaceViewWeakRef = glSurfaceViewWeakRef;
+ }
+
+ @Override
+ public void run() {
+ setName("GLThread " + getId());
+ if (LOG_THREADS) {
+ Log.i("GLThread", "starting tid=" + getId());
+ }
+
+ try {
+ guardedRun();
+ } catch (InterruptedException e) {
+ // fall thru and exit normally
+ } finally {
+ sGLThreadManager.threadExiting(this);
+ }
+ }
+
+ /*
+ * This private method should only be called inside a
+ * synchronized(sGLThreadManager) block.
+ */
+ private void stopEglSurfaceLocked() {
+ if (mHaveEglSurface) {
+ mHaveEglSurface = false;
+ mEglHelper.destroySurface();
+ }
+ }
+
+ /*
+ * This private method should only be called inside a
+ * synchronized(sGLThreadManager) block.
+ */
+ private void stopEglContextLocked() {
+ if (mHaveEglContext) {
+ mEglHelper.finish();
+ mHaveEglContext = false;
+ sGLThreadManager.releaseEglContextLocked(this);
+ }
+ }
+ private void guardedRun() throws InterruptedException {
+ mEglHelper = new EglHelper(mGLSurfaceViewWeakRef);
+ mHaveEglContext = false;
+ mHaveEglSurface = false;
+ mWantRenderNotification = false;
+
+ try {
+ GL10 gl = null;
+ boolean createEglContext = false;
+ boolean createEglSurface = false;
+ boolean createGlInterface = false;
+ boolean lostEglContext = false;
+ boolean sizeChanged = false;
+ boolean wantRenderNotification = false;
+ boolean doRenderNotification = false;
+ boolean askedToReleaseEglContext = false;
+ int w = 0;
+ int h = 0;
+ Runnable event = null;
+ Runnable finishDrawingRunnable = null;
+
+ while (true) {
+ synchronized (sGLThreadManager) {
+ while (true) {
+ if (mShouldExit) {
+ return;
+ }
+
+ if (! mEventQueue.isEmpty()) {
+ event = mEventQueue.remove(0);
+ break;
+ }
+
+ // Update the pause state.
+ boolean pausing = false;
+ if (mPaused != mRequestPaused) {
+ pausing = mRequestPaused;
+ mPaused = mRequestPaused;
+ sGLThreadManager.notifyAll();
+ if (LOG_PAUSE_RESUME) {
+ Log.i("GLThread", "mPaused is now " + mPaused + " tid=" + getId());
+ }
+ }
+
+ // Do we need to give up the EGL context?
+ if (mShouldReleaseEglContext) {
+ if (LOG_SURFACE) {
+ Log.i("GLThread", "releasing EGL context because asked to tid=" + getId());
+ }
+ stopEglSurfaceLocked();
+ stopEglContextLocked();
+ mShouldReleaseEglContext = false;
+ askedToReleaseEglContext = true;
+ }
+
+ // Have we lost the EGL context?
+ if (lostEglContext) {
+ stopEglSurfaceLocked();
+ stopEglContextLocked();
+ lostEglContext = false;
+ }
+
+ // When pausing, release the EGL surface:
+ if (pausing && mHaveEglSurface) {
+ if (LOG_SURFACE) {
+ Log.i("GLThread", "releasing EGL surface because paused tid=" + getId());
+ }
+ stopEglSurfaceLocked();
+ }
+
+ // When pausing, optionally release the EGL Context:
+ if (pausing && mHaveEglContext) {
+ GLSurfaceView view = mGLSurfaceViewWeakRef.get();
+ boolean preserveEglContextOnPause = view == null ?
+ false : view.mPreserveEGLContextOnPause;
+ if (!preserveEglContextOnPause) {
+ stopEglContextLocked();
+ if (LOG_SURFACE) {
+ Log.i("GLThread", "releasing EGL context because paused tid=" + getId());
+ }
+ }
+ }
+
+ // Have we lost the SurfaceView surface?
+ if ((! mHasSurface) && (! mWaitingForSurface)) {
+ if (LOG_SURFACE) {
+ Log.i("GLThread", "noticed surfaceView surface lost tid=" + getId());
+ }
+ if (mHaveEglSurface) {
+ stopEglSurfaceLocked();
+ }
+ mWaitingForSurface = true;
+ mSurfaceIsBad = false;
+ sGLThreadManager.notifyAll();
+ }
+
+ // Have we acquired the surface view surface?
+ if (mHasSurface && mWaitingForSurface) {
+ if (LOG_SURFACE) {
+ Log.i("GLThread", "noticed surfaceView surface acquired tid=" + getId());
+ }
+ mWaitingForSurface = false;
+ sGLThreadManager.notifyAll();
+ }
+
+ if (doRenderNotification) {
+ if (LOG_SURFACE) {
+ Log.i("GLThread", "sending render notification tid=" + getId());
+ }
+ mWantRenderNotification = false;
+ doRenderNotification = false;
+ mRenderComplete = true;
+ sGLThreadManager.notifyAll();
+ }
+
+ if (mFinishDrawingRunnable != null) {
+ finishDrawingRunnable = mFinishDrawingRunnable;
+ mFinishDrawingRunnable = null;
+ }
+
+ // Ready to draw?
+ if (readyToDraw()) {
+
+ // If we don't have an EGL context, try to acquire one.
+ if (! mHaveEglContext) {
+ if (askedToReleaseEglContext) {
+ askedToReleaseEglContext = false;
+ } else {
+ try {
+ mEglHelper.start();
+ } catch (RuntimeException t) {
+ sGLThreadManager.releaseEglContextLocked(this);
+ throw t;
+ }
+ mHaveEglContext = true;
+ createEglContext = true;
+
+ sGLThreadManager.notifyAll();
+ }
+ }
+
+ if (mHaveEglContext && !mHaveEglSurface) {
+ mHaveEglSurface = true;
+ createEglSurface = true;
+ createGlInterface = true;
+ sizeChanged = true;
+ }
+
+ if (mHaveEglSurface) {
+ if (mSizeChanged) {
+ sizeChanged = true;
+ w = mWidth;
+ h = mHeight;
+ mWantRenderNotification = true;
+ if (LOG_SURFACE) {
+ Log.i("GLThread",
+ "noticing that we want render notification tid="
+ + getId());
+ }
+
+ // Destroy and recreate the EGL surface.
+ createEglSurface = true;
+
+ mSizeChanged = false;
+ }
+ mRequestRender = false;
+ sGLThreadManager.notifyAll();
+ if (mWantRenderNotification) {
+ wantRenderNotification = true;
+ }
+ break;
+ }
+ } else {
+ if (finishDrawingRunnable != null) {
+ Log.w(TAG, "Warning, !readyToDraw() but waiting for " +
+ "draw finished! Early reporting draw finished.");
+ finishDrawingRunnable.run();
+ finishDrawingRunnable = null;
+ }
+ }
+ // By design, this is the only place in a GLThread thread where we wait().
+ if (LOG_THREADS) {
+ Log.i("GLThread", "waiting tid=" + getId()
+ + " mHaveEglContext: " + mHaveEglContext
+ + " mHaveEglSurface: " + mHaveEglSurface
+ + " mFinishedCreatingEglSurface: " + mFinishedCreatingEglSurface
+ + " mPaused: " + mPaused
+ + " mHasSurface: " + mHasSurface
+ + " mSurfaceIsBad: " + mSurfaceIsBad
+ + " mWaitingForSurface: " + mWaitingForSurface
+ + " mWidth: " + mWidth
+ + " mHeight: " + mHeight
+ + " mRequestRender: " + mRequestRender
+ + " mRenderMode: " + mRenderMode);
+ }
+ sGLThreadManager.wait();
+ }
+ } // end of synchronized(sGLThreadManager)
+
+ if (event != null) {
+ event.run();
+ event = null;
+ continue;
+ }
+
+ if (createEglSurface) {
+ if (LOG_SURFACE) {
+ Log.w("GLThread", "egl createSurface");
+ }
+ if (mEglHelper.createSurface()) {
+ synchronized(sGLThreadManager) {
+ mFinishedCreatingEglSurface = true;
+ sGLThreadManager.notifyAll();
+ }
+ } else {
+ synchronized(sGLThreadManager) {
+ mFinishedCreatingEglSurface = true;
+ mSurfaceIsBad = true;
+ sGLThreadManager.notifyAll();
+ }
+ continue;
+ }
+ createEglSurface = false;
+ }
+
+ if (createGlInterface) {
+ gl = (GL10) mEglHelper.createGL();
+
+ createGlInterface = false;
+ }
+
+ // -- GODOT start --
+ if (createEglContext) {
+ if (LOG_RENDERER) {
+ Log.w("GLThread", "onSurfaceCreated");
+ }
+ GLSurfaceView view = mGLSurfaceViewWeakRef.get();
+ if (view != null) {
+ try {
+ view.mRenderer.onSurfaceCreated(gl, mEglHelper.mEglConfig);
+ } finally {
+ }
+ }
+ createEglContext = false;
+ }
+
+ if (sizeChanged) {
+ if (LOG_RENDERER) {
+ Log.w("GLThread", "onSurfaceChanged(" + w + ", " + h + ")");
+ }
+ GLSurfaceView view = mGLSurfaceViewWeakRef.get();
+ if (view != null) {
+ try {
+ view.mRenderer.onSurfaceChanged(gl, w, h);
+ } finally {
+ }
+ }
+ sizeChanged = false;
+ }
+
+ boolean swapBuffers = false;
+ if (LOG_RENDERER_DRAW_FRAME) {
+ Log.w("GLThread", "onDrawFrame tid=" + getId());
+ }
+ {
+ GLSurfaceView view = mGLSurfaceViewWeakRef.get();
+ if (view != null) {
+ try {
+ swapBuffers = view.mRenderer.onDrawFrame(gl);
+ if (finishDrawingRunnable != null) {
+ finishDrawingRunnable.run();
+ finishDrawingRunnable = null;
+ }
+ } finally {}
+ }
+ }
+ if (swapBuffers) {
+ int swapError = mEglHelper.swap();
+ switch (swapError) {
+ case EGL10.EGL_SUCCESS:
+ break;
+ case EGL11.EGL_CONTEXT_LOST:
+ if (LOG_SURFACE) {
+ Log.i("GLThread", "egl context lost tid=" + getId());
+ }
+ lostEglContext = true;
+ break;
+ default:
+ // Other errors typically mean that the current surface is bad,
+ // probably because the SurfaceView surface has been destroyed,
+ // but we haven't been notified yet.
+ // Log the error to help developers understand why rendering stopped.
+ EglHelper.logEglErrorAsWarning("GLThread", "eglSwapBuffers", swapError);
+
+ synchronized (sGLThreadManager) {
+ mSurfaceIsBad = true;
+ sGLThreadManager.notifyAll();
+ }
+ break;
+ }
+ }
+ // -- GODOT end --
+
+ if (wantRenderNotification) {
+ doRenderNotification = true;
+ wantRenderNotification = false;
+ }
+ }
+
+ } finally {
+ /*
+ * clean-up everything...
+ */
+ synchronized (sGLThreadManager) {
+ stopEglSurfaceLocked();
+ stopEglContextLocked();
+ }
+ }
+ }
+
+ public boolean ableToDraw() {
+ return mHaveEglContext && mHaveEglSurface && readyToDraw();
+ }
+
+ private boolean readyToDraw() {
+ return (!mPaused) && mHasSurface && (!mSurfaceIsBad)
+ && (mWidth > 0) && (mHeight > 0)
+ && (mRequestRender || (mRenderMode == RENDERMODE_CONTINUOUSLY));
+ }
+
+ public void setRenderMode(int renderMode) {
+ if ( !((RENDERMODE_WHEN_DIRTY <= renderMode) && (renderMode <= RENDERMODE_CONTINUOUSLY)) ) {
+ throw new IllegalArgumentException("renderMode");
+ }
+ synchronized(sGLThreadManager) {
+ mRenderMode = renderMode;
+ sGLThreadManager.notifyAll();
+ }
+ }
+
+ public int getRenderMode() {
+ synchronized(sGLThreadManager) {
+ return mRenderMode;
+ }
+ }
+
+ public void requestRender() {
+ synchronized(sGLThreadManager) {
+ mRequestRender = true;
+ sGLThreadManager.notifyAll();
+ }
+ }
+
+ public void requestRenderAndNotify(Runnable finishDrawing) {
+ synchronized(sGLThreadManager) {
+ // If we are already on the GL thread, this means a client callback
+ // has caused reentrancy, for example via updating the SurfaceView parameters.
+ // We will return to the client rendering code, so here we don't need to
+ // do anything.
+ if (Thread.currentThread() == this) {
+ return;
+ }
+
+ mWantRenderNotification = true;
+ mRequestRender = true;
+ mRenderComplete = false;
+ mFinishDrawingRunnable = finishDrawing;
+
+ sGLThreadManager.notifyAll();
+ }
+ }
+
+ public void surfaceCreated() {
+ synchronized(sGLThreadManager) {
+ if (LOG_THREADS) {
+ Log.i("GLThread", "surfaceCreated tid=" + getId());
+ }
+ mHasSurface = true;
+ mFinishedCreatingEglSurface = false;
+ sGLThreadManager.notifyAll();
+ while (mWaitingForSurface
+ && !mFinishedCreatingEglSurface
+ && !mExited) {
+ try {
+ sGLThreadManager.wait();
+ } catch (InterruptedException e) {
+ Thread.currentThread().interrupt();
+ }
+ }
+ }
+ }
+
+ public void surfaceDestroyed() {
+ synchronized(sGLThreadManager) {
+ if (LOG_THREADS) {
+ Log.i("GLThread", "surfaceDestroyed tid=" + getId());
+ }
+ mHasSurface = false;
+ sGLThreadManager.notifyAll();
+ while((!mWaitingForSurface) && (!mExited)) {
+ try {
+ sGLThreadManager.wait();
+ } catch (InterruptedException e) {
+ Thread.currentThread().interrupt();
+ }
+ }
+ }
+ }
+
+ public void onPause() {
+ synchronized (sGLThreadManager) {
+ if (LOG_PAUSE_RESUME) {
+ Log.i("GLThread", "onPause tid=" + getId());
+ }
+ mRequestPaused = true;
+ sGLThreadManager.notifyAll();
+ while ((! mExited) && (! mPaused)) {
+ if (LOG_PAUSE_RESUME) {
+ Log.i("Main thread", "onPause waiting for mPaused.");
+ }
+ try {
+ sGLThreadManager.wait();
+ } catch (InterruptedException ex) {
+ Thread.currentThread().interrupt();
+ }
+ }
+ }
+ }
+
+ public void onResume() {
+ synchronized (sGLThreadManager) {
+ if (LOG_PAUSE_RESUME) {
+ Log.i("GLThread", "onResume tid=" + getId());
+ }
+ mRequestPaused = false;
+ mRequestRender = true;
+ mRenderComplete = false;
+ sGLThreadManager.notifyAll();
+ while ((! mExited) && mPaused && (!mRenderComplete)) {
+ if (LOG_PAUSE_RESUME) {
+ Log.i("Main thread", "onResume waiting for !mPaused.");
+ }
+ try {
+ sGLThreadManager.wait();
+ } catch (InterruptedException ex) {
+ Thread.currentThread().interrupt();
+ }
+ }
+ }
+ }
+
+ public void onWindowResize(int w, int h) {
+ synchronized (sGLThreadManager) {
+ mWidth = w;
+ mHeight = h;
+ mSizeChanged = true;
+ mRequestRender = true;
+ mRenderComplete = false;
+
+ // If we are already on the GL thread, this means a client callback
+ // has caused reentrancy, for example via updating the SurfaceView parameters.
+ // We need to process the size change eventually though and update our EGLSurface.
+ // So we set the parameters and return so they can be processed on our
+ // next iteration.
+ if (Thread.currentThread() == this) {
+ return;
+ }
+
+ sGLThreadManager.notifyAll();
+
+ // Wait for thread to react to resize and render a frame
+ while (! mExited && !mPaused && !mRenderComplete
+ && ableToDraw()) {
+ if (LOG_SURFACE) {
+ Log.i("Main thread", "onWindowResize waiting for render complete from tid=" + getId());
+ }
+ try {
+ sGLThreadManager.wait();
+ } catch (InterruptedException ex) {
+ Thread.currentThread().interrupt();
+ }
+ }
+ }
+ }
+
+ public void requestExitAndWait() {
+ // don't call this from GLThread thread or it is a guaranteed
+ // deadlock!
+ synchronized(sGLThreadManager) {
+ mShouldExit = true;
+ sGLThreadManager.notifyAll();
+ while (! mExited) {
+ try {
+ sGLThreadManager.wait();
+ } catch (InterruptedException ex) {
+ Thread.currentThread().interrupt();
+ }
+ }
+ }
+ }
+
+ public void requestReleaseEglContextLocked() {
+ mShouldReleaseEglContext = true;
+ sGLThreadManager.notifyAll();
+ }
+
+ /**
+ * Queue an "event" to be run on the GL rendering thread.
+ * @param r the runnable to be run on the GL rendering thread.
+ */
+ public void queueEvent(Runnable r) {
+ if (r == null) {
+ throw new IllegalArgumentException("r must not be null");
+ }
+ synchronized(sGLThreadManager) {
+ mEventQueue.add(r);
+ sGLThreadManager.notifyAll();
+ }
+ }
+
+ // Once the thread is started, all accesses to the following member
+ // variables are protected by the sGLThreadManager monitor
+ private boolean mShouldExit;
+ private boolean mExited;
+ private boolean mRequestPaused;
+ private boolean mPaused;
+ private boolean mHasSurface;
+ private boolean mSurfaceIsBad;
+ private boolean mWaitingForSurface;
+ private boolean mHaveEglContext;
+ private boolean mHaveEglSurface;
+ private boolean mFinishedCreatingEglSurface;
+ private boolean mShouldReleaseEglContext;
+ private int mWidth;
+ private int mHeight;
+ private int mRenderMode;
+ private boolean mRequestRender;
+ private boolean mWantRenderNotification;
+ private boolean mRenderComplete;
+ private ArrayList<Runnable> mEventQueue = new ArrayList<Runnable>();
+ private boolean mSizeChanged = true;
+ private Runnable mFinishDrawingRunnable = null;
+
+ // End of member variables protected by the sGLThreadManager monitor.
+
+ private EglHelper mEglHelper;
+
+ /**
+ * Set once at thread construction time, nulled out when the parent view is garbage
+ * called. This weak reference allows the GLSurfaceView to be garbage collected while
+ * the GLThread is still alive.
+ */
+ private WeakReference<GLSurfaceView> mGLSurfaceViewWeakRef;
+
+ }
+
+ static class LogWriter extends Writer {
+
+ @Override public void close() {
+ flushBuilder();
+ }
+
+ @Override public void flush() {
+ flushBuilder();
+ }
+
+ @Override public void write(char[] buf, int offset, int count) {
+ for(int i = 0; i < count; i++) {
+ char c = buf[offset + i];
+ if ( c == '\n') {
+ flushBuilder();
+ }
+ else {
+ mBuilder.append(c);
+ }
+ }
+ }
+
+ private void flushBuilder() {
+ if (mBuilder.length() > 0) {
+ Log.v("GLSurfaceView", mBuilder.toString());
+ mBuilder.delete(0, mBuilder.length());
+ }
+ }
+
+ private StringBuilder mBuilder = new StringBuilder();
+ }
+
+
+ private void checkRenderThreadState() {
+ if (mGLThread != null) {
+ throw new IllegalStateException(
+ "setRenderer has already been called for this instance.");
+ }
+ }
+
+ private static class GLThreadManager {
+ private static String TAG = "GLThreadManager";
+
+ public synchronized void threadExiting(GLThread thread) {
+ if (LOG_THREADS) {
+ Log.i("GLThread", "exiting tid=" + thread.getId());
+ }
+ thread.mExited = true;
+ notifyAll();
+ }
+
+ /*
+ * Releases the EGL context. Requires that we are already in the
+ * sGLThreadManager monitor when this is called.
+ */
+ public void releaseEglContextLocked(GLThread thread) {
+ notifyAll();
+ }
+ }
+
+ private static final GLThreadManager sGLThreadManager = new GLThreadManager();
+
+ private final WeakReference<GLSurfaceView> mThisWeakRef =
+ new WeakReference<GLSurfaceView>(this);
+ private GLThread mGLThread;
+ private Renderer mRenderer;
+ private boolean mDetached;
+ private EGLConfigChooser mEGLConfigChooser;
+ private EGLContextFactory mEGLContextFactory;
+ private EGLWindowSurfaceFactory mEGLWindowSurfaceFactory;
+ private GLWrapper mGLWrapper;
+ private int mDebugFlags;
+ private int mEGLContextClientVersion;
+ private boolean mPreserveEGLContextOnPause;
+}
+
diff --git a/platform/android/java/lib/src/org/godotengine/godot/GodotRenderer.java b/platform/android/java/lib/src/org/godotengine/godot/gl/GodotRenderer.java
index e3956ac459..5c4fd00f6d 100644
--- a/platform/android/java/lib/src/org/godotengine/godot/GodotRenderer.java
+++ b/platform/android/java/lib/src/org/godotengine/godot/gl/GodotRenderer.java
@@ -28,38 +28,38 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
-package org.godotengine.godot;
+package org.godotengine.godot.gl;
+import org.godotengine.godot.GodotLib;
import org.godotengine.godot.plugin.GodotPlugin;
import org.godotengine.godot.plugin.GodotPluginRegistry;
-import org.godotengine.godot.utils.GLUtils;
-
-import android.opengl.GLSurfaceView;
import javax.microedition.khronos.egl.EGLConfig;
import javax.microedition.khronos.opengles.GL10;
/**
- * Godot's renderer implementation.
+ * Godot's GL renderer implementation.
*/
-class GodotRenderer implements GLSurfaceView.Renderer {
+public class GodotRenderer implements GLSurfaceView.Renderer {
private final GodotPluginRegistry pluginRegistry;
private boolean activityJustResumed = false;
- GodotRenderer() {
+ public GodotRenderer() {
this.pluginRegistry = GodotPluginRegistry.getPluginRegistry();
}
- public void onDrawFrame(GL10 gl) {
+ public boolean onDrawFrame(GL10 gl) {
if (activityJustResumed) {
GodotLib.onRendererResumed();
activityJustResumed = false;
}
- GodotLib.step();
+ boolean swapBuffers = GodotLib.step();
for (GodotPlugin plugin : pluginRegistry.getAllPlugins()) {
plugin.onGLDrawFrame(gl);
}
+
+ return swapBuffers;
}
public void onSurfaceChanged(GL10 gl, int width, int height) {
@@ -76,13 +76,13 @@ class GodotRenderer implements GLSurfaceView.Renderer {
}
}
- void onActivityResumed() {
+ public void onActivityResumed() {
// We defer invoking GodotLib.onRendererResumed() until the first draw frame call.
// This ensures we have a valid GL context and surface when we do so.
activityJustResumed = true;
}
- void onActivityPaused() {
+ public void onActivityPaused() {
GodotLib.onRendererPaused();
}
}
diff --git a/platform/android/java/lib/src/org/godotengine/godot/xr/ovr/OvrConfigChooser.java b/platform/android/java/lib/src/org/godotengine/godot/xr/ovr/OvrConfigChooser.java
index 4c1c84affb..e35d4f5828 100644
--- a/platform/android/java/lib/src/org/godotengine/godot/xr/ovr/OvrConfigChooser.java
+++ b/platform/android/java/lib/src/org/godotengine/godot/xr/ovr/OvrConfigChooser.java
@@ -30,8 +30,9 @@
package org.godotengine.godot.xr.ovr;
+import org.godotengine.godot.gl.GLSurfaceView;
+
import android.opengl.EGLExt;
-import android.opengl.GLSurfaceView;
import javax.microedition.khronos.egl.EGL10;
import javax.microedition.khronos.egl.EGLConfig;
diff --git a/platform/android/java/lib/src/org/godotengine/godot/xr/ovr/OvrContextFactory.java b/platform/android/java/lib/src/org/godotengine/godot/xr/ovr/OvrContextFactory.java
index 2b4369b8a6..deb9c4bb1d 100644
--- a/platform/android/java/lib/src/org/godotengine/godot/xr/ovr/OvrContextFactory.java
+++ b/platform/android/java/lib/src/org/godotengine/godot/xr/ovr/OvrContextFactory.java
@@ -30,8 +30,9 @@
package org.godotengine.godot.xr.ovr;
+import org.godotengine.godot.gl.GLSurfaceView;
+
import android.opengl.EGL14;
-import android.opengl.GLSurfaceView;
import javax.microedition.khronos.egl.EGL10;
import javax.microedition.khronos.egl.EGLConfig;
diff --git a/platform/android/java/lib/src/org/godotengine/godot/xr/ovr/OvrWindowSurfaceFactory.java b/platform/android/java/lib/src/org/godotengine/godot/xr/ovr/OvrWindowSurfaceFactory.java
index fbfe0a3a75..f087b7dc74 100644
--- a/platform/android/java/lib/src/org/godotengine/godot/xr/ovr/OvrWindowSurfaceFactory.java
+++ b/platform/android/java/lib/src/org/godotengine/godot/xr/ovr/OvrWindowSurfaceFactory.java
@@ -30,7 +30,7 @@
package org.godotengine.godot.xr.ovr;
-import android.opengl.GLSurfaceView;
+import org.godotengine.godot.gl.GLSurfaceView;
import javax.microedition.khronos.egl.EGL10;
import javax.microedition.khronos.egl.EGLConfig;
diff --git a/platform/android/java/lib/src/org/godotengine/godot/xr/regular/RegularConfigChooser.java b/platform/android/java/lib/src/org/godotengine/godot/xr/regular/RegularConfigChooser.java
index 9fde1961ea..445238b1c2 100644
--- a/platform/android/java/lib/src/org/godotengine/godot/xr/regular/RegularConfigChooser.java
+++ b/platform/android/java/lib/src/org/godotengine/godot/xr/regular/RegularConfigChooser.java
@@ -30,10 +30,9 @@
package org.godotengine.godot.xr.regular;
+import org.godotengine.godot.gl.GLSurfaceView;
import org.godotengine.godot.utils.GLUtils;
-import android.opengl.GLSurfaceView;
-
import javax.microedition.khronos.egl.EGL10;
import javax.microedition.khronos.egl.EGLConfig;
import javax.microedition.khronos.egl.EGLDisplay;
diff --git a/platform/android/java/lib/src/org/godotengine/godot/xr/regular/RegularContextFactory.java b/platform/android/java/lib/src/org/godotengine/godot/xr/regular/RegularContextFactory.java
index ce1184a75c..5d62723170 100644
--- a/platform/android/java/lib/src/org/godotengine/godot/xr/regular/RegularContextFactory.java
+++ b/platform/android/java/lib/src/org/godotengine/godot/xr/regular/RegularContextFactory.java
@@ -30,9 +30,9 @@
package org.godotengine.godot.xr.regular;
+import org.godotengine.godot.gl.GLSurfaceView;
import org.godotengine.godot.utils.GLUtils;
-import android.opengl.GLSurfaceView;
import android.util.Log;
import javax.microedition.khronos.egl.EGL10;
diff --git a/platform/android/java/lib/src/org/godotengine/godot/xr/regular/RegularFallbackConfigChooser.java b/platform/android/java/lib/src/org/godotengine/godot/xr/regular/RegularFallbackConfigChooser.java
index 420dda45a0..68329c5c49 100644
--- a/platform/android/java/lib/src/org/godotengine/godot/xr/regular/RegularFallbackConfigChooser.java
+++ b/platform/android/java/lib/src/org/godotengine/godot/xr/regular/RegularFallbackConfigChooser.java
@@ -30,8 +30,6 @@
package org.godotengine.godot.xr.regular;
-import org.godotengine.godot.utils.GLUtils;
-
import android.util.Log;
import javax.microedition.khronos.egl.EGL10;
diff --git a/platform/android/java/nativeSrcsConfigs/CMakeLists.txt b/platform/android/java/nativeSrcsConfigs/CMakeLists.txt
index 966c02f7d7..711f7cd502 100644
--- a/platform/android/java/nativeSrcsConfigs/CMakeLists.txt
+++ b/platform/android/java/nativeSrcsConfigs/CMakeLists.txt
@@ -16,3 +16,5 @@ add_executable(${PROJECT_NAME} ${SOURCES} ${HEADERS})
target_include_directories(${PROJECT_NAME}
SYSTEM PUBLIC
${GODOT_ROOT_DIR})
+
+add_definitions(-DUNIX_ENABLED -DVULKAN_ENABLED -DANDROID_ENABLED)
diff --git a/platform/android/java/nativeSrcsConfigs/build.gradle b/platform/android/java/nativeSrcsConfigs/build.gradle
index 158bb2b98e..0cb769b539 100644
--- a/platform/android/java/nativeSrcsConfigs/build.gradle
+++ b/platform/android/java/nativeSrcsConfigs/build.gradle
@@ -6,6 +6,7 @@ plugins {
android {
compileSdkVersion versions.compileSdk
buildToolsVersion versions.buildTools
+ ndkVersion versions.ndkVersion
defaultConfig {
minSdkVersion versions.minSdk
@@ -28,8 +29,6 @@ android {
}
}
- ndkVersion versions.ndkVersion
-
externalNativeBuild {
cmake {
path "CMakeLists.txt"
diff --git a/platform/android/java/scripts/publish-module.gradle b/platform/android/java/scripts/publish-module.gradle
index 6b2aea5caf..32b749e493 100644
--- a/platform/android/java/scripts/publish-module.gradle
+++ b/platform/android/java/scripts/publish-module.gradle
@@ -7,20 +7,15 @@ version = PUBLISH_VERSION
afterEvaluate {
publishing {
publications {
- release(MavenPublication) {
+ templateRelease(MavenPublication) {
+ from components.templateRelease
+
// The coordinates of the library, being set from variables that
// we'll set up later
groupId ossrhGroupId
artifactId PUBLISH_ARTIFACT_ID
version PUBLISH_VERSION
- // Two artifacts, the `aar` (or `jar`) and the sources
- if (project.plugins.findPlugin("com.android.library")) {
- from components.release
- } else {
- from components.java
- }
-
// Mostly self-explanatory metadata
pom {
name = PUBLISH_ARTIFACT_ID
diff --git a/platform/android/java/settings.gradle b/platform/android/java/settings.gradle
index 584b626900..56e1b6fd3a 100644
--- a/platform/android/java/settings.gradle
+++ b/platform/android/java/settings.gradle
@@ -4,6 +4,7 @@ rootProject.name = "Godot"
include ':app'
include ':lib'
include ':nativeSrcsConfigs'
+include ':editor'
include ':assetPacks:installTime'
project(':assetPacks:installTime').projectDir = file("app/assetPacks/installTime")
diff --git a/platform/android/java_godot_lib_jni.cpp b/platform/android/java_godot_lib_jni.cpp
index 249717921f..ea72bc0e15 100644
--- a/platform/android/java_godot_lib_jni.cpp
+++ b/platform/android/java_godot_lib_jni.cpp
@@ -107,6 +107,9 @@ JNIEXPORT void JNICALL Java_org_godotengine_godot_GodotLib_initialize(JNIEnv *en
JNIEXPORT void JNICALL Java_org_godotengine_godot_GodotLib_ondestroy(JNIEnv *env, jclass clazz) {
// lets cleanup
+ if (java_class_wrapper) {
+ memdelete(java_class_wrapper);
+ }
if (godot_io_java) {
delete godot_io_java;
}
@@ -117,6 +120,7 @@ JNIEXPORT void JNICALL Java_org_godotengine_godot_GodotLib_ondestroy(JNIEnv *env
delete input_handler;
}
if (os_android) {
+ os_android->main_loop_end();
delete os_android;
}
}
@@ -146,7 +150,7 @@ JNIEXPORT void JNICALL Java_org_godotengine_godot_GodotLib_setup(JNIEnv *env, jc
}
}
- Error err = Main::setup("apk", cmdlen, (char **)cmdline, false);
+ Error err = Main::setup(OS_Android::ANDROID_EXEC_PATH, cmdlen, (char **)cmdline, false);
if (cmdline) {
if (j_cmdline) {
for (int i = 0; i < cmdlen; ++i) {
@@ -209,9 +213,9 @@ JNIEXPORT void JNICALL Java_org_godotengine_godot_GodotLib_back(JNIEnv *env, jcl
}
}
-JNIEXPORT void JNICALL Java_org_godotengine_godot_GodotLib_step(JNIEnv *env, jclass clazz) {
+JNIEXPORT jboolean JNICALL Java_org_godotengine_godot_GodotLib_step(JNIEnv *env, jclass clazz) {
if (step.get() == -1) {
- return;
+ return true;
}
if (step.get() == 0) {
@@ -220,12 +224,12 @@ JNIEXPORT void JNICALL Java_org_godotengine_godot_GodotLib_step(JNIEnv *env, jcl
Main::setup2(Thread::get_caller_id());
input_handler = new AndroidInputHandler();
step.increment();
- return;
+ return true;
}
if (step.get() == 1) {
if (!Main::start()) {
- return; // should exit instead and print the error
+ return true; // should exit instead and print the error
}
godot_java->on_godot_setup_completed(env);
@@ -239,9 +243,12 @@ JNIEXPORT void JNICALL Java_org_godotengine_godot_GodotLib_step(JNIEnv *env, jcl
DisplayServerAndroid::get_singleton()->process_magnetometer(magnetometer);
DisplayServerAndroid::get_singleton()->process_gyroscope(gyroscope);
- if (os_android->main_loop_iterate()) {
+ bool should_swap_buffers = false;
+ if (os_android->main_loop_iterate(&should_swap_buffers)) {
godot_java->force_quit(env);
}
+
+ return should_swap_buffers;
}
void touch_preprocessing(JNIEnv *env, jclass clazz, jint input_device, jint ev, jint pointer, jint pointer_count, jfloatArray positions, jint buttons_mask, jfloat vertical_factor, jfloat horizontal_factor) {
diff --git a/platform/android/java_godot_lib_jni.h b/platform/android/java_godot_lib_jni.h
index 927b44ddb6..e686ee5c09 100644
--- a/platform/android/java_godot_lib_jni.h
+++ b/platform/android/java_godot_lib_jni.h
@@ -42,7 +42,7 @@ JNIEXPORT void JNICALL Java_org_godotengine_godot_GodotLib_ondestroy(JNIEnv *env
JNIEXPORT void JNICALL Java_org_godotengine_godot_GodotLib_setup(JNIEnv *env, jclass clazz, jobjectArray p_cmdline);
JNIEXPORT void JNICALL Java_org_godotengine_godot_GodotLib_resize(JNIEnv *env, jclass clazz, jobject p_surface, jint p_width, jint p_height);
JNIEXPORT void JNICALL Java_org_godotengine_godot_GodotLib_newcontext(JNIEnv *env, jclass clazz, jobject p_surface);
-JNIEXPORT void JNICALL Java_org_godotengine_godot_GodotLib_step(JNIEnv *env, jclass clazz);
+JNIEXPORT jboolean JNICALL Java_org_godotengine_godot_GodotLib_step(JNIEnv *env, jclass clazz);
JNIEXPORT void JNICALL Java_org_godotengine_godot_GodotLib_back(JNIEnv *env, jclass clazz);
void touch_preprocessing(JNIEnv *env, jclass clazz, jint input_device, jint ev, jint pointer, jint pointer_count, jfloatArray positions, jint buttons_mask = 0, jfloat vertical_factor = 0, jfloat horizontal_factor = 0);
JNIEXPORT void JNICALL Java_org_godotengine_godot_GodotLib_touch__IIII_3F(JNIEnv *env, jclass clazz, jint input_device, jint ev, jint pointer, jint pointer_count, jfloatArray positions);
diff --git a/platform/android/java_godot_wrapper.cpp b/platform/android/java_godot_wrapper.cpp
index 754267c834..2c8378e685 100644
--- a/platform/android/java_godot_wrapper.cpp
+++ b/platform/android/java_godot_wrapper.cpp
@@ -77,6 +77,7 @@ GodotJavaWrapper::GodotJavaWrapper(JNIEnv *p_env, jobject p_activity, jobject p_
_get_input_fallback_mapping = p_env->GetMethodID(godot_class, "getInputFallbackMapping", "()Ljava/lang/String;");
_on_godot_setup_completed = p_env->GetMethodID(godot_class, "onGodotSetupCompleted", "()V");
_on_godot_main_loop_started = p_env->GetMethodID(godot_class, "onGodotMainLoopStarted", "()V");
+ _create_new_godot_instance = p_env->GetMethodID(godot_class, "createNewGodotInstance", "([Ljava/lang/String;)V");
// get some Activity method pointers...
_get_class_loader = p_env->GetMethodID(activity_class, "getClassLoader", "()Ljava/lang/ClassLoader;");
@@ -351,3 +352,16 @@ void GodotJavaWrapper::vibrate(int p_duration_ms) {
env->CallVoidMethod(godot_instance, _vibrate, p_duration_ms);
}
}
+
+void GodotJavaWrapper::create_new_godot_instance(List<String> args) {
+ if (_create_new_godot_instance) {
+ JNIEnv *env = get_jni_env();
+ ERR_FAIL_COND(env == nullptr);
+
+ jobjectArray jargs = env->NewObjectArray(args.size(), env->FindClass("java/lang/String"), env->NewStringUTF(""));
+ for (int i = 0; i < args.size(); i++) {
+ env->SetObjectArrayElement(jargs, i, env->NewStringUTF(args[i].utf8().get_data()));
+ }
+ env->CallVoidMethod(godot_instance, _create_new_godot_instance, jargs);
+ }
+}
diff --git a/platform/android/java_godot_wrapper.h b/platform/android/java_godot_wrapper.h
index 42ae91480f..f04fda7c3d 100644
--- a/platform/android/java_godot_wrapper.h
+++ b/platform/android/java_godot_wrapper.h
@@ -37,6 +37,7 @@
#include <android/log.h>
#include <jni.h>
+#include "core/templates/list.h"
#include "java_godot_view_wrapper.h"
#include "string_android.h"
@@ -70,6 +71,7 @@ private:
jmethodID _on_godot_setup_completed = 0;
jmethodID _on_godot_main_loop_started = 0;
jmethodID _get_class_loader = 0;
+ jmethodID _create_new_godot_instance = 0;
public:
GodotJavaWrapper(JNIEnv *p_env, jobject p_activity, jobject p_godot_instance);
@@ -103,6 +105,7 @@ public:
bool is_activity_resumed();
void vibrate(int p_duration_ms);
String get_input_fallback_mapping();
+ void create_new_godot_instance(List<String> args);
};
#endif /* !JAVA_GODOT_WRAPPER_H */
diff --git a/platform/android/os_android.cpp b/platform/android/os_android.cpp
index b17b0f3139..ef53415f16 100644
--- a/platform/android/os_android.cpp
+++ b/platform/android/os_android.cpp
@@ -35,6 +35,8 @@
#include "drivers/unix/file_access_unix.h"
#include "main/main.h"
#include "platform/android/display_server_android.h"
+#include "scene/main/scene_tree.h"
+#include "servers/rendering_server.h"
#include "dir_access_jandroid.h"
#include "file_access_android.h"
@@ -45,6 +47,8 @@
#include "java_godot_io_wrapper.h"
#include "java_godot_wrapper.h"
+const char *OS_Android::ANDROID_EXEC_PATH = "apk";
+
String _remove_symlink(const String &dir) {
// Workaround for Android 6.0+ using a symlink.
// Save the current directory.
@@ -81,18 +85,28 @@ void OS_Android::alert(const String &p_alert, const String &p_title) {
void OS_Android::initialize_core() {
OS_Unix::initialize_core();
+#ifdef TOOLS_ENABLED
+ FileAccess::make_default<FileAccessUnix>(FileAccess::ACCESS_RESOURCES);
+#else
if (use_apk_expansion) {
FileAccess::make_default<FileAccessUnix>(FileAccess::ACCESS_RESOURCES);
} else {
FileAccess::make_default<FileAccessAndroid>(FileAccess::ACCESS_RESOURCES);
}
+#endif
FileAccess::make_default<FileAccessUnix>(FileAccess::ACCESS_USERDATA);
FileAccess::make_default<FileAccessUnix>(FileAccess::ACCESS_FILESYSTEM);
+
+#ifdef TOOLS_ENABLED
+ DirAccess::make_default<DirAccessUnix>(DirAccess::ACCESS_RESOURCES);
+#else
if (use_apk_expansion) {
DirAccess::make_default<DirAccessUnix>(DirAccess::ACCESS_RESOURCES);
} else {
DirAccess::make_default<DirAccessJAndroid>(DirAccess::ACCESS_RESOURCES);
}
+#endif
+
DirAccess::make_default<DirAccessUnix>(DirAccess::ACCESS_USERDATA);
DirAccess::make_default<DirAccessUnix>(DirAccess::ACCESS_FILESYSTEM);
@@ -168,16 +182,26 @@ void OS_Android::main_loop_begin() {
}
}
-bool OS_Android::main_loop_iterate() {
+bool OS_Android::main_loop_iterate(bool *r_should_swap_buffers) {
if (!main_loop) {
return false;
}
DisplayServerAndroid::get_singleton()->process_events();
- return Main::iteration();
+ bool exit = Main::iteration();
+
+ if (r_should_swap_buffers) {
+ *r_should_swap_buffers = !is_in_low_processor_usage_mode() || RenderingServer::get_singleton()->has_changed();
+ }
+
+ return exit;
}
void OS_Android::main_loop_end() {
if (main_loop) {
+ SceneTree *scene_tree = Object::cast_to<SceneTree>(main_loop);
+ if (scene_tree) {
+ scene_tree->quit();
+ }
main_loop->finalize();
}
}
@@ -197,7 +221,11 @@ Error OS_Android::shell_open(String p_uri) {
}
String OS_Android::get_resource_dir() const {
+#ifdef TOOLS_ENABLED
+ return OS_Unix::get_resource_dir();
+#else
return "/"; //android has its own filesystem for resources inside the APK
+#endif
}
String OS_Android::get_locale() const {
@@ -222,6 +250,14 @@ String OS_Android::get_data_path() const {
return get_user_data_dir();
}
+String OS_Android::get_executable_path() const {
+ // Since unix process creation is restricted on Android, we bypass
+ // OS_Unix::get_executable_path() so we can return ANDROID_EXEC_PATH.
+ // Detection of ANDROID_EXEC_PATH allows to handle process creation in an Android compliant
+ // manner.
+ return OS::get_executable_path();
+}
+
String OS_Android::get_user_data_dir() const {
if (!data_dir_cache.is_empty()) {
return data_dir_cache;
@@ -294,6 +330,10 @@ void OS_Android::vibrate_handheld(int p_duration_ms) {
godot_java->vibrate(p_duration_ms);
}
+String OS_Android::get_config_path() const {
+ return get_user_data_dir().plus_file("config");
+}
+
bool OS_Android::_check_internal_feature_support(const String &p_feature) {
if (p_feature == "mobile") {
return true;
@@ -343,5 +383,26 @@ OS_Android::OS_Android(GodotJavaWrapper *p_godot_java, GodotIOJavaWrapper *p_god
DisplayServerAndroid::register_android_driver();
}
+Error OS_Android::execute(const String &p_path, const List<String> &p_arguments, String *r_pipe, int *r_exitcode, bool read_stderr, Mutex *p_pipe_mutex, bool p_open_console) {
+ if (p_path == ANDROID_EXEC_PATH) {
+ return create_instance(p_arguments);
+ } else {
+ return OS_Unix::execute(p_path, p_arguments, r_pipe, r_exitcode, read_stderr, p_pipe_mutex, p_open_console);
+ }
+}
+
+Error OS_Android::create_process(const String &p_path, const List<String> &p_arguments, ProcessID *r_child_id, bool p_open_console) {
+ if (p_path == ANDROID_EXEC_PATH) {
+ return create_instance(p_arguments, r_child_id);
+ } else {
+ return OS_Unix::create_process(p_path, p_arguments, r_child_id, p_open_console);
+ }
+}
+
+Error OS_Android::create_instance(const List<String> &p_arguments, ProcessID *r_child_id) {
+ godot_java->create_new_godot_instance(p_arguments);
+ return OK;
+}
+
OS_Android::~OS_Android() {
}
diff --git a/platform/android/os_android.h b/platform/android/os_android.h
index f523f172c6..48239b3f84 100644
--- a/platform/android/os_android.h
+++ b/platform/android/os_android.h
@@ -66,6 +66,8 @@ private:
GodotIOJavaWrapper *godot_io_java;
public:
+ static const char *ANDROID_EXEC_PATH;
+
virtual void initialize_core() override;
virtual void initialize() override;
@@ -94,7 +96,7 @@ public:
virtual MainLoop *get_main_loop() const override;
void main_loop_begin();
- bool main_loop_iterate();
+ bool main_loop_iterate(bool *r_should_swap_buffers = nullptr);
void main_loop_end();
void main_loop_focusout();
void main_loop_focusin();
@@ -108,6 +110,7 @@ public:
ANativeWindow *get_native_window() const;
virtual Error shell_open(String p_uri) override;
+ virtual String get_executable_path() const override;
virtual String get_user_data_dir() const override;
virtual String get_data_path() const override;
virtual String get_cache_path() const override;
@@ -121,6 +124,12 @@ public:
void vibrate_handheld(int p_duration_ms) override;
+ virtual String get_config_path() const override;
+
+ virtual Error execute(const String &p_path, const List<String> &p_arguments, String *r_pipe = nullptr, int *r_exitcode = nullptr, bool read_stderr = false, Mutex *p_pipe_mutex = nullptr, bool p_open_console = false) override;
+ virtual Error create_process(const String &p_path, const List<String> &p_arguments, ProcessID *r_child_id = nullptr, bool p_open_console = false) override;
+ virtual Error create_instance(const List<String> &p_arguments, ProcessID *r_child_id = nullptr) override;
+
virtual bool _check_internal_feature_support(const String &p_feature) override;
OS_Android(GodotJavaWrapper *p_godot_java, GodotIOJavaWrapper *p_godot_io_java, bool p_use_apk_expansion);
~OS_Android();
diff --git a/platform/javascript/export/export_plugin.cpp b/platform/javascript/export/export_plugin.cpp
index 4448acccc2..84694461cf 100644
--- a/platform/javascript/export/export_plugin.cpp
+++ b/platform/javascript/export/export_plugin.cpp
@@ -360,6 +360,15 @@ Ref<Texture2D> EditorExportPlatformJavaScript::get_logo() const {
}
bool EditorExportPlatformJavaScript::can_export(const Ref<EditorExportPreset> &p_preset, String &r_error, bool &r_missing_templates) const {
+#ifndef DEV_ENABLED
+ // We don't provide export templates for the HTML5 platform currently as there
+ // is no suitable renderer to use with them. So we forbid exporting and tell
+ // users why. This is skipped in DEV_ENABLED so that contributors can still test
+ // the pipeline once we start having WebGL or WebGPU support.
+ r_error = "The HTML5 platform is currently not supported in Godot 4.0, as there is no suitable renderer for it.\n";
+ return false;
+#endif
+
String err;
bool valid = false;
ExportMode mode = (ExportMode)(int)p_preset->get("variant/export_type");
diff --git a/platform/javascript/package-lock.json b/platform/javascript/package-lock.json
index 35f864f01a..f72cde955a 100644
--- a/platform/javascript/package-lock.json
+++ b/platform/javascript/package-lock.json
@@ -1884,9 +1884,9 @@
}
},
"node_modules/minimist": {
- "version": "1.2.5",
- "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz",
- "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==",
+ "version": "1.2.6",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz",
+ "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==",
"dev": true
},
"node_modules/mkdirp": {
@@ -4444,9 +4444,9 @@
}
},
"minimist": {
- "version": "1.2.5",
- "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz",
- "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==",
+ "version": "1.2.6",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz",
+ "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==",
"dev": true
},
"mkdirp": {
diff --git a/platform/linuxbsd/display_server_x11.cpp b/platform/linuxbsd/display_server_x11.cpp
index 07cb6a23e8..8fa8c64efe 100644
--- a/platform/linuxbsd/display_server_x11.cpp
+++ b/platform/linuxbsd/display_server_x11.cpp
@@ -363,15 +363,15 @@ DisplayServerX11::MouseMode DisplayServerX11::mouse_get_mode() const {
return mouse_mode;
}
-void DisplayServerX11::mouse_warp_to_position(const Point2i &p_to) {
+void DisplayServerX11::warp_mouse(const Point2i &p_position) {
_THREAD_SAFE_METHOD_
if (mouse_mode == MOUSE_MODE_CAPTURED) {
- last_mouse_pos = p_to;
+ last_mouse_pos = p_position;
} else {
WindowID window_id = windows.has(last_focused_window) ? last_focused_window : MAIN_WINDOW_ID;
XWarpPointer(x11_display, None, windows[window_id].x11_window,
- 0, 0, 0, 0, (int)p_to.x, (int)p_to.y);
+ 0, 0, 0, 0, (int)p_position.x, (int)p_position.y);
}
}
@@ -1732,8 +1732,15 @@ bool DisplayServerX11::_window_maximize_check(WindowID p_window, const char *p_a
if (result == Success && data) {
Atom *atoms = (Atom *)data;
- Atom wm_act_max_horz = XInternAtom(x11_display, "_NET_WM_ACTION_MAXIMIZE_HORZ", False);
- Atom wm_act_max_vert = XInternAtom(x11_display, "_NET_WM_ACTION_MAXIMIZE_VERT", False);
+ Atom wm_act_max_horz;
+ Atom wm_act_max_vert;
+ if (strcmp(p_atom_name, "_NET_WM_STATE") == 0) {
+ wm_act_max_horz = XInternAtom(x11_display, "_NET_WM_STATE_MAXIMIZED_HORZ", False);
+ wm_act_max_vert = XInternAtom(x11_display, "_NET_WM_STATE_MAXIMIZED_VERT", False);
+ } else {
+ wm_act_max_horz = XInternAtom(x11_display, "_NET_WM_ACTION_MAXIMIZE_HORZ", False);
+ wm_act_max_vert = XInternAtom(x11_display, "_NET_WM_ACTION_MAXIMIZE_VERT", False);
+ }
bool found_wm_act_max_horz = false;
bool found_wm_act_max_vert = false;
diff --git a/platform/linuxbsd/display_server_x11.h b/platform/linuxbsd/display_server_x11.h
index 63d32d939d..0f44aa4b11 100644
--- a/platform/linuxbsd/display_server_x11.h
+++ b/platform/linuxbsd/display_server_x11.h
@@ -301,7 +301,7 @@ public:
virtual void mouse_set_mode(MouseMode p_mode) override;
virtual MouseMode mouse_get_mode() const override;
- virtual void mouse_warp_to_position(const Point2i &p_to) override;
+ virtual void warp_mouse(const Point2i &p_position) override;
virtual Point2i mouse_get_position() const override;
virtual MouseButton mouse_get_button_state() const override;
diff --git a/platform/linuxbsd/export/export.cpp b/platform/linuxbsd/export/export.cpp
index 796e82594a..ec83e52f09 100644
--- a/platform/linuxbsd/export/export.cpp
+++ b/platform/linuxbsd/export/export.cpp
@@ -32,8 +32,6 @@
#include "export_plugin.h"
-static Error fixup_embedded_pck(const String &p_path, int64_t p_embedded_start, int64_t p_embedded_size);
-
void register_linuxbsd_exporter() {
Ref<EditorExportPlatformLinuxBSD> platform;
platform.instantiate();
@@ -44,120 +42,10 @@ void register_linuxbsd_exporter() {
logo->create_from_image(img);
platform->set_logo(logo);
platform->set_name("Linux/X11");
- platform->set_extension("x86");
+ platform->set_extension("x86_32");
platform->set_extension("x86_64", "binary_format/64_bits");
- platform->set_release_32("linux_x11_32_release");
- platform->set_debug_32("linux_x11_32_debug");
- platform->set_release_64("linux_x11_64_release");
- platform->set_debug_64("linux_x11_64_debug");
platform->set_os_name("LinuxBSD");
platform->set_chmod_flags(0755);
- platform->set_fixup_embedded_pck_func(&fixup_embedded_pck);
EditorExport::get_singleton()->add_export_platform(platform);
}
-
-static Error fixup_embedded_pck(const String &p_path, int64_t p_embedded_start, int64_t p_embedded_size) {
- // Patch the header of the "pck" section in the ELF file so that it corresponds to the embedded data
-
- FileAccess *f = FileAccess::open(p_path, FileAccess::READ_WRITE);
- if (!f) {
- return ERR_CANT_OPEN;
- }
-
- // Read and check ELF magic number
- {
- uint32_t magic = f->get_32();
- if (magic != 0x464c457f) { // 0x7F + "ELF"
- f->close();
- return ERR_FILE_CORRUPT;
- }
- }
-
- // Read program architecture bits from class field
-
- int bits = f->get_8() * 32;
-
- if (bits == 32 && p_embedded_size >= 0x100000000) {
- f->close();
- ERR_FAIL_V_MSG(ERR_INVALID_DATA, "32-bit executables cannot have embedded data >= 4 GiB.");
- }
-
- // Get info about the section header table
-
- int64_t section_table_pos;
- int64_t section_header_size;
- if (bits == 32) {
- section_header_size = 40;
- f->seek(0x20);
- section_table_pos = f->get_32();
- f->seek(0x30);
- } else { // 64
- section_header_size = 64;
- f->seek(0x28);
- section_table_pos = f->get_64();
- f->seek(0x3c);
- }
- int num_sections = f->get_16();
- int string_section_idx = f->get_16();
-
- // Load the strings table
- uint8_t *strings;
- {
- // Jump to the strings section header
- f->seek(section_table_pos + string_section_idx * section_header_size);
-
- // Read strings data size and offset
- int64_t string_data_pos;
- int64_t string_data_size;
- if (bits == 32) {
- f->seek(f->get_position() + 0x10);
- string_data_pos = f->get_32();
- string_data_size = f->get_32();
- } else { // 64
- f->seek(f->get_position() + 0x18);
- string_data_pos = f->get_64();
- string_data_size = f->get_64();
- }
-
- // Read strings data
- f->seek(string_data_pos);
- strings = (uint8_t *)memalloc(string_data_size);
- if (!strings) {
- f->close();
- return ERR_OUT_OF_MEMORY;
- }
- f->get_buffer(strings, string_data_size);
- }
-
- // Search for the "pck" section
-
- bool found = false;
- for (int i = 0; i < num_sections; ++i) {
- int64_t section_header_pos = section_table_pos + i * section_header_size;
- f->seek(section_header_pos);
-
- uint32_t name_offset = f->get_32();
- if (strcmp((char *)strings + name_offset, "pck") == 0) {
- // "pck" section found, let's patch!
-
- if (bits == 32) {
- f->seek(section_header_pos + 0x10);
- f->store_32(p_embedded_start);
- f->store_32(p_embedded_size);
- } else { // 64
- f->seek(section_header_pos + 0x18);
- f->store_64(p_embedded_start);
- f->store_64(p_embedded_size);
- }
-
- found = true;
- break;
- }
- }
-
- memfree(strings);
- f->close();
-
- return found ? OK : ERR_FILE_CORRUPT;
-}
diff --git a/platform/linuxbsd/export/export_plugin.cpp b/platform/linuxbsd/export/export_plugin.cpp
index 99f5b82b34..24906fa3fb 100644
--- a/platform/linuxbsd/export/export_plugin.cpp
+++ b/platform/linuxbsd/export/export_plugin.cpp
@@ -72,3 +72,133 @@ Error EditorExportPlatformLinuxBSD::export_project(const Ref<EditorExportPreset>
return err;
}
+
+void EditorExportPlatformLinuxBSD::set_extension(const String &p_extension, const String &p_feature_key) {
+ extensions[p_feature_key] = p_extension;
+}
+
+String EditorExportPlatformLinuxBSD::get_template_file_name(const String &p_target, const String &p_arch) const {
+ return "linux_x11_" + p_arch + "_" + p_target;
+}
+
+List<String> EditorExportPlatformLinuxBSD::get_binary_extensions(const Ref<EditorExportPreset> &p_preset) const {
+ List<String> list;
+ for (const KeyValue<String, String> &E : extensions) {
+ if (p_preset->get(E.key)) {
+ list.push_back(extensions[E.key]);
+ return list;
+ }
+ }
+
+ if (extensions.has("default")) {
+ list.push_back(extensions["default"]);
+ return list;
+ }
+
+ return list;
+}
+
+Error EditorExportPlatformLinuxBSD::fixup_embedded_pck(const String &p_path, int64_t p_embedded_start, int64_t p_embedded_size) const {
+ // Patch the header of the "pck" section in the ELF file so that it corresponds to the embedded data
+
+ FileAccess *f = FileAccess::open(p_path, FileAccess::READ_WRITE);
+ if (!f) {
+ return ERR_CANT_OPEN;
+ }
+
+ // Read and check ELF magic number
+ {
+ uint32_t magic = f->get_32();
+ if (magic != 0x464c457f) { // 0x7F + "ELF"
+ f->close();
+ return ERR_FILE_CORRUPT;
+ }
+ }
+
+ // Read program architecture bits from class field
+
+ int bits = f->get_8() * 32;
+
+ if (bits == 32 && p_embedded_size >= 0x100000000) {
+ f->close();
+ ERR_FAIL_V_MSG(ERR_INVALID_DATA, "32-bit executables cannot have embedded data >= 4 GiB.");
+ }
+
+ // Get info about the section header table
+
+ int64_t section_table_pos;
+ int64_t section_header_size;
+ if (bits == 32) {
+ section_header_size = 40;
+ f->seek(0x20);
+ section_table_pos = f->get_32();
+ f->seek(0x30);
+ } else { // 64
+ section_header_size = 64;
+ f->seek(0x28);
+ section_table_pos = f->get_64();
+ f->seek(0x3c);
+ }
+ int num_sections = f->get_16();
+ int string_section_idx = f->get_16();
+
+ // Load the strings table
+ uint8_t *strings;
+ {
+ // Jump to the strings section header
+ f->seek(section_table_pos + string_section_idx * section_header_size);
+
+ // Read strings data size and offset
+ int64_t string_data_pos;
+ int64_t string_data_size;
+ if (bits == 32) {
+ f->seek(f->get_position() + 0x10);
+ string_data_pos = f->get_32();
+ string_data_size = f->get_32();
+ } else { // 64
+ f->seek(f->get_position() + 0x18);
+ string_data_pos = f->get_64();
+ string_data_size = f->get_64();
+ }
+
+ // Read strings data
+ f->seek(string_data_pos);
+ strings = (uint8_t *)memalloc(string_data_size);
+ if (!strings) {
+ f->close();
+ return ERR_OUT_OF_MEMORY;
+ }
+ f->get_buffer(strings, string_data_size);
+ }
+
+ // Search for the "pck" section
+
+ bool found = false;
+ for (int i = 0; i < num_sections; ++i) {
+ int64_t section_header_pos = section_table_pos + i * section_header_size;
+ f->seek(section_header_pos);
+
+ uint32_t name_offset = f->get_32();
+ if (strcmp((char *)strings + name_offset, "pck") == 0) {
+ // "pck" section found, let's patch!
+
+ if (bits == 32) {
+ f->seek(section_header_pos + 0x10);
+ f->store_32(p_embedded_start);
+ f->store_32(p_embedded_size);
+ } else { // 64
+ f->seek(section_header_pos + 0x18);
+ f->store_64(p_embedded_start);
+ f->store_64(p_embedded_size);
+ }
+
+ found = true;
+ break;
+ }
+ }
+
+ memfree(strings);
+ f->close();
+
+ return found ? OK : ERR_FILE_CORRUPT;
+}
diff --git a/platform/linuxbsd/export/export_plugin.h b/platform/linuxbsd/export/export_plugin.h
index f482ddce3d..f46fc68e1d 100644
--- a/platform/linuxbsd/export/export_plugin.h
+++ b/platform/linuxbsd/export/export_plugin.h
@@ -38,10 +38,15 @@
#include "scene/resources/texture.h"
class EditorExportPlatformLinuxBSD : public EditorExportPlatformPC {
+ Map<String, String> extensions;
Error _export_debug_script(const Ref<EditorExportPreset> &p_preset, const String &p_app_name, const String &p_pkg_name, const String &p_path);
public:
+ void set_extension(const String &p_extension, const String &p_feature_key = "default");
+ virtual List<String> get_binary_extensions(const Ref<EditorExportPreset> &p_preset) const override;
virtual Error export_project(const Ref<EditorExportPreset> &p_preset, bool p_debug, const String &p_path, int p_flags = 0) override;
+ virtual String get_template_file_name(const String &p_target, const String &p_arch) const override;
+ virtual Error fixup_embedded_pck(const String &p_path, int64_t p_embedded_start, int64_t p_embedded_size) const override;
};
#endif
diff --git a/platform/osx/display_server_osx.h b/platform/osx/display_server_osx.h
index cc9ac162ea..fa3091ff81 100644
--- a/platform/osx/display_server_osx.h
+++ b/platform/osx/display_server_osx.h
@@ -186,6 +186,7 @@ private:
void _process_key_events();
void _update_keyboard_layouts();
static void _keyboard_layout_changed(CFNotificationCenterRef center, void *observer, CFStringRef name, const void *object, CFDictionaryRef user_info);
+ NSImage *_convert_to_nsimg(Ref<Image> &p_image) const;
static NSCursor *_cursor_from_selector(SEL p_selector, SEL p_fallback = nil);
@@ -217,24 +218,46 @@ public:
virtual bool has_feature(Feature p_feature) const override;
virtual String get_name() const override;
- virtual void global_menu_add_item(const String &p_menu_root, const String &p_label, const Callable &p_callback, const Variant &p_tag = Variant()) override;
- virtual void global_menu_add_check_item(const String &p_menu_root, const String &p_label, const Callable &p_callback, const Variant &p_tag = Variant()) override;
- virtual void global_menu_add_submenu_item(const String &p_menu_root, const String &p_label, const String &p_submenu) override;
- virtual void global_menu_add_separator(const String &p_menu_root) override;
+ virtual void global_menu_add_item(const String &p_menu_root, const String &p_label, const Callable &p_callback = Callable(), const Variant &p_tag = Variant(), Key p_accel = Key::NONE, int p_index = -1) override;
+ virtual void global_menu_add_check_item(const String &p_menu_root, const String &p_label, const Callable &p_callback = Callable(), const Variant &p_tag = Variant(), Key p_accel = Key::NONE, int p_index = -1) override;
+ virtual void global_menu_add_icon_item(const String &p_menu_root, const Ref<Texture2D> &p_icon, const String &p_label, const Callable &p_callback = Callable(), const Variant &p_tag = Variant(), Key p_accel = Key::NONE, int p_index = -1) override;
+ virtual void global_menu_add_icon_check_item(const String &p_menu_root, const Ref<Texture2D> &p_icon, const String &p_label, const Callable &p_callback = Callable(), const Variant &p_tag = Variant(), Key p_accel = Key::NONE, int p_index = -1) override;
+ virtual void global_menu_add_radio_check_item(const String &p_menu_root, const String &p_label, const Callable &p_callback = Callable(), const Variant &p_tag = Variant(), Key p_accel = Key::NONE, int p_index = -1) override;
+ virtual void global_menu_add_icon_radio_check_item(const String &p_menu_root, const Ref<Texture2D> &p_icon, const String &p_label, const Callable &p_callback = Callable(), const Variant &p_tag = Variant(), Key p_accel = Key::NONE, int p_index = -1) override;
+ virtual void global_menu_add_multistate_item(const String &p_menu_root, const String &p_label, int p_max_states, int p_default_state, const Callable &p_callback = Callable(), const Variant &p_tag = Variant(), Key p_accel = Key::NONE, int p_index = -1) override;
+ virtual void global_menu_add_submenu_item(const String &p_menu_root, const String &p_label, const String &p_submenu, int p_index = -1) override;
+ virtual void global_menu_add_separator(const String &p_menu_root, int p_index = -1) override;
+
+ virtual int global_menu_get_item_index_from_text(const String &p_menu_root, const String &p_text) const override;
+ virtual int global_menu_get_item_index_from_tag(const String &p_menu_root, const Variant &p_tag) const override;
virtual bool global_menu_is_item_checked(const String &p_menu_root, int p_idx) const override;
virtual bool global_menu_is_item_checkable(const String &p_menu_root, int p_idx) const override;
- virtual Callable global_menu_get_item_callback(const String &p_menu_root, int p_idx) override;
- virtual Variant global_menu_get_item_tag(const String &p_menu_root, int p_idx) override;
- virtual String global_menu_get_item_text(const String &p_menu_root, int p_idx) override;
- virtual String global_menu_get_item_submenu(const String &p_menu_root, int p_idx) override;
+ virtual bool global_menu_is_item_radio_checkable(const String &p_menu_root, int p_idx) const override;
+ virtual Callable global_menu_get_item_callback(const String &p_menu_root, int p_idx) const override;
+ virtual Variant global_menu_get_item_tag(const String &p_menu_root, int p_idx) const override;
+ virtual String global_menu_get_item_text(const String &p_menu_root, int p_idx) const override;
+ virtual String global_menu_get_item_submenu(const String &p_menu_root, int p_idx) const override;
+ virtual Key global_menu_get_item_accelerator(const String &p_menu_root, int p_idx) const override;
+ virtual bool global_menu_is_item_disabled(const String &p_menu_root, int p_idx) const override;
+ virtual String global_menu_get_item_tooltip(const String &p_menu_root, int p_idx) const override;
+ virtual int global_menu_get_item_state(const String &p_menu_root, int p_idx) const override;
+ virtual int global_menu_get_item_max_states(const String &p_menu_root, int p_idx) const override;
+ virtual Ref<Texture2D> global_menu_get_item_icon(const String &p_menu_root, int p_idx) const override;
virtual void global_menu_set_item_checked(const String &p_menu_root, int p_idx, bool p_checked) override;
virtual void global_menu_set_item_checkable(const String &p_menu_root, int p_idx, bool p_checkable) override;
+ virtual void global_menu_set_item_radio_checkable(const String &p_menu_root, int p_idx, bool p_checkable) override;
virtual void global_menu_set_item_callback(const String &p_menu_root, int p_idx, const Callable &p_callback) override;
virtual void global_menu_set_item_tag(const String &p_menu_root, int p_idx, const Variant &p_tag) override;
virtual void global_menu_set_item_text(const String &p_menu_root, int p_idx, const String &p_text) override;
virtual void global_menu_set_item_submenu(const String &p_menu_root, int p_idx, const String &p_submenu) override;
+ virtual void global_menu_set_item_accelerator(const String &p_menu_root, int p_idx, Key p_keycode) override;
+ virtual void global_menu_set_item_disabled(const String &p_menu_root, int p_idx, bool p_disabled) override;
+ virtual void global_menu_set_item_tooltip(const String &p_menu_root, int p_idx, const String &p_tooltip) override;
+ virtual void global_menu_set_item_state(const String &p_menu_root, int p_idx, int p_state) override;
+ virtual void global_menu_set_item_max_states(const String &p_menu_root, int p_idx, int p_max_states) override;
+ virtual void global_menu_set_item_icon(const String &p_menu_root, int p_idx, const Ref<Texture2D> &p_icon) override;
virtual int global_menu_get_item_count(const String &p_menu_root) const override;
@@ -248,7 +271,7 @@ public:
virtual MouseMode mouse_get_mode() const override;
bool update_mouse_wrap(WindowData &p_wd, NSPoint &r_delta, NSPoint &r_mpos, NSTimeInterval p_timestamp);
- virtual void mouse_warp_to_position(const Point2i &p_to) override;
+ virtual void warp_mouse(const Point2i &p_position) override;
virtual Point2i mouse_get_position() const override;
void mouse_set_button_state(MouseButton p_state);
virtual MouseButton mouse_get_button_state() const override;
diff --git a/platform/osx/display_server_osx.mm b/platform/osx/display_server_osx.mm
index 89ca6e50ec..6cdadcae39 100644
--- a/platform/osx/display_server_osx.mm
+++ b/platform/osx/display_server_osx.mm
@@ -91,6 +91,7 @@ NSMenu *DisplayServerOSX::_get_menu_root(const String &p_menu_root) {
// Submenu.
if (!submenu.has(p_menu_root)) {
NSMenu *n_menu = [[NSMenu alloc] initWithTitle:[NSString stringWithUTF8String:p_menu_root.utf8().get_data()]];
+ [n_menu setAutoenablesItems:NO];
submenu[p_menu_root] = n_menu;
}
menu = submenu[p_menu_root];
@@ -472,6 +473,40 @@ void DisplayServerOSX::_keyboard_layout_changed(CFNotificationCenterRef center,
}
}
+NSImage *DisplayServerOSX::_convert_to_nsimg(Ref<Image> &p_image) const {
+ p_image->convert(Image::FORMAT_RGBA8);
+ NSBitmapImageRep *imgrep = [[NSBitmapImageRep alloc]
+ initWithBitmapDataPlanes:NULL
+ pixelsWide:p_image->get_width()
+ pixelsHigh:p_image->get_height()
+ bitsPerSample:8
+ samplesPerPixel:4
+ hasAlpha:YES
+ isPlanar:NO
+ colorSpaceName:NSDeviceRGBColorSpace
+ bytesPerRow:int(p_image->get_width()) * 4
+ bitsPerPixel:32];
+ ERR_FAIL_COND_V(imgrep == nil, nil);
+ uint8_t *pixels = [imgrep bitmapData];
+
+ int len = p_image->get_width() * p_image->get_height();
+ const uint8_t *r = p_image->get_data().ptr();
+
+ /* Premultiply the alpha channel */
+ for (int i = 0; i < len; i++) {
+ uint8_t alpha = r[i * 4 + 3];
+ pixels[i * 4 + 0] = (uint8_t)(((uint16_t)r[i * 4 + 0] * alpha) / 255);
+ pixels[i * 4 + 1] = (uint8_t)(((uint16_t)r[i * 4 + 1] * alpha) / 255);
+ pixels[i * 4 + 2] = (uint8_t)(((uint16_t)r[i * 4 + 2] * alpha) / 255);
+ pixels[i * 4 + 3] = alpha;
+ }
+
+ NSImage *nsimg = [[NSImage alloc] initWithSize:NSMakeSize(p_image->get_width(), p_image->get_height())];
+ ERR_FAIL_COND_V(nsimg == nil, nil);
+ [nsimg addRepresentation:imgrep];
+ return nsimg;
+}
+
NSCursor *DisplayServerOSX::_cursor_from_selector(SEL p_selector, SEL p_fallback) {
if ([NSCursor respondsToSelector:p_selector]) {
id object = [NSCursor performSelector:p_selector];
@@ -498,7 +533,14 @@ void DisplayServerOSX::menu_callback(id p_sender) {
GodotMenuItem *value = [p_sender representedObject];
if (value) {
- if (value->checkable) {
+ if (value->max_states > 0) {
+ value->state++;
+ if (value->state >= value->max_states) {
+ value->state = 0;
+ }
+ }
+
+ if (value->checkable_type == CHECKABLE_TYPE_CHECK_BOX) {
if ([p_sender state] == NSControlStateValueOff) {
[p_sender setState:NSControlStateValueOn];
} else {
@@ -671,35 +713,195 @@ String DisplayServerOSX::get_name() const {
return "OSX";
}
-void DisplayServerOSX::global_menu_add_item(const String &p_menu_root, const String &p_label, const Callable &p_callback, const Variant &p_tag) {
+void DisplayServerOSX::global_menu_add_item(const String &p_menu_root, const String &p_label, const Callable &p_callback, const Variant &p_tag, Key p_accel, int p_index) {
+ _THREAD_SAFE_METHOD_
+
+ NSMenu *menu = _get_menu_root(p_menu_root);
+ if (menu) {
+ String keycode = KeyMappingOSX::keycode_get_native_string(p_accel & KeyModifierMask::CODE_MASK);
+ NSMenuItem *menu_item;
+ if (p_index != -1) {
+ menu_item = [menu insertItemWithTitle:[NSString stringWithUTF8String:p_label.utf8().get_data()] action:@selector(globalMenuCallback:) keyEquivalent:[NSString stringWithUTF8String:keycode.utf8().get_data()] atIndex:p_index];
+ } else {
+ menu_item = [menu addItemWithTitle:[NSString stringWithUTF8String:p_label.utf8().get_data()] action:@selector(globalMenuCallback:) keyEquivalent:[NSString stringWithUTF8String:keycode.utf8().get_data()]];
+ }
+ GodotMenuItem *obj = [[GodotMenuItem alloc] init];
+ obj->callback = p_callback;
+ obj->meta = p_tag;
+ obj->checkable_type = CHECKABLE_TYPE_NONE;
+ obj->max_states = 0;
+ obj->state = 0;
+ [menu_item setKeyEquivalentModifierMask:KeyMappingOSX::keycode_get_native_mask(p_accel)];
+ [menu_item setRepresentedObject:obj];
+ }
+}
+
+void DisplayServerOSX::global_menu_add_check_item(const String &p_menu_root, const String &p_label, const Callable &p_callback, const Variant &p_tag, Key p_accel, int p_index) {
+ _THREAD_SAFE_METHOD_
+
+ NSMenu *menu = _get_menu_root(p_menu_root);
+ if (menu) {
+ String keycode = KeyMappingOSX::keycode_get_native_string(p_accel & KeyModifierMask::CODE_MASK);
+ NSMenuItem *menu_item;
+ if (p_index != -1) {
+ menu_item = [menu insertItemWithTitle:[NSString stringWithUTF8String:p_label.utf8().get_data()] action:@selector(globalMenuCallback:) keyEquivalent:[NSString stringWithUTF8String:keycode.utf8().get_data()] atIndex:p_index];
+ } else {
+ menu_item = [menu addItemWithTitle:[NSString stringWithUTF8String:p_label.utf8().get_data()] action:@selector(globalMenuCallback:) keyEquivalent:[NSString stringWithUTF8String:keycode.utf8().get_data()]];
+ }
+ GodotMenuItem *obj = [[GodotMenuItem alloc] init];
+ obj->callback = p_callback;
+ obj->meta = p_tag;
+ obj->checkable_type = CHECKABLE_TYPE_CHECK_BOX;
+ obj->max_states = 0;
+ obj->state = 0;
+ [menu_item setKeyEquivalentModifierMask:KeyMappingOSX::keycode_get_native_mask(p_accel)];
+ [menu_item setRepresentedObject:obj];
+ }
+}
+
+void DisplayServerOSX::global_menu_add_icon_item(const String &p_menu_root, const Ref<Texture2D> &p_icon, const String &p_label, const Callable &p_callback, const Variant &p_tag, Key p_accel, int p_index) {
+ _THREAD_SAFE_METHOD_
+
+ NSMenu *menu = _get_menu_root(p_menu_root);
+ if (menu) {
+ String keycode = KeyMappingOSX::keycode_get_native_string(p_accel & KeyModifierMask::CODE_MASK);
+ NSMenuItem *menu_item;
+ if (p_index != -1) {
+ menu_item = [menu insertItemWithTitle:[NSString stringWithUTF8String:p_label.utf8().get_data()] action:@selector(globalMenuCallback:) keyEquivalent:[NSString stringWithUTF8String:keycode.utf8().get_data()] atIndex:p_index];
+ } else {
+ menu_item = [menu addItemWithTitle:[NSString stringWithUTF8String:p_label.utf8().get_data()] action:@selector(globalMenuCallback:) keyEquivalent:[NSString stringWithUTF8String:keycode.utf8().get_data()]];
+ }
+ GodotMenuItem *obj = [[GodotMenuItem alloc] init];
+ obj->callback = p_callback;
+ obj->meta = p_tag;
+ obj->checkable_type = CHECKABLE_TYPE_NONE;
+ obj->max_states = 0;
+ obj->state = 0;
+ if (p_icon.is_valid()) {
+ obj->img = p_icon->get_image();
+ obj->img = obj->img->duplicate();
+ if (obj->img->is_compressed()) {
+ obj->img->decompress();
+ }
+ obj->img->resize(16, 16, Image::INTERPOLATE_LANCZOS);
+ [menu_item setImage:_convert_to_nsimg(obj->img)];
+ }
+ [menu_item setKeyEquivalentModifierMask:KeyMappingOSX::keycode_get_native_mask(p_accel)];
+ [menu_item setRepresentedObject:obj];
+ }
+}
+
+void DisplayServerOSX::global_menu_add_icon_check_item(const String &p_menu_root, const Ref<Texture2D> &p_icon, const String &p_label, const Callable &p_callback, const Variant &p_tag, Key p_accel, int p_index) {
+ _THREAD_SAFE_METHOD_
+
+ NSMenu *menu = _get_menu_root(p_menu_root);
+ if (menu) {
+ String keycode = KeyMappingOSX::keycode_get_native_string(p_accel & KeyModifierMask::CODE_MASK);
+ NSMenuItem *menu_item;
+ if (p_index != -1) {
+ menu_item = [menu insertItemWithTitle:[NSString stringWithUTF8String:p_label.utf8().get_data()] action:@selector(globalMenuCallback:) keyEquivalent:[NSString stringWithUTF8String:keycode.utf8().get_data()] atIndex:p_index];
+ } else {
+ menu_item = [menu addItemWithTitle:[NSString stringWithUTF8String:p_label.utf8().get_data()] action:@selector(globalMenuCallback:) keyEquivalent:[NSString stringWithUTF8String:keycode.utf8().get_data()]];
+ }
+ GodotMenuItem *obj = [[GodotMenuItem alloc] init];
+ obj->callback = p_callback;
+ obj->meta = p_tag;
+ obj->checkable_type = CHECKABLE_TYPE_CHECK_BOX;
+ obj->max_states = 0;
+ obj->state = 0;
+ if (p_icon.is_valid()) {
+ obj->img = p_icon->get_image();
+ obj->img = obj->img->duplicate();
+ if (obj->img->is_compressed()) {
+ obj->img->decompress();
+ }
+ obj->img->resize(16, 16, Image::INTERPOLATE_LANCZOS);
+ [menu_item setImage:_convert_to_nsimg(obj->img)];
+ }
+ [menu_item setKeyEquivalentModifierMask:KeyMappingOSX::keycode_get_native_mask(p_accel)];
+ [menu_item setRepresentedObject:obj];
+ }
+}
+
+void DisplayServerOSX::global_menu_add_radio_check_item(const String &p_menu_root, const String &p_label, const Callable &p_callback, const Variant &p_tag, Key p_accel, int p_index) {
+ _THREAD_SAFE_METHOD_
+
+ NSMenu *menu = _get_menu_root(p_menu_root);
+ if (menu) {
+ String keycode = KeyMappingOSX::keycode_get_native_string(p_accel & KeyModifierMask::CODE_MASK);
+ NSMenuItem *menu_item;
+ if (p_index != -1) {
+ menu_item = [menu insertItemWithTitle:[NSString stringWithUTF8String:p_label.utf8().get_data()] action:@selector(globalMenuCallback:) keyEquivalent:[NSString stringWithUTF8String:keycode.utf8().get_data()] atIndex:p_index];
+ } else {
+ menu_item = [menu addItemWithTitle:[NSString stringWithUTF8String:p_label.utf8().get_data()] action:@selector(globalMenuCallback:) keyEquivalent:[NSString stringWithUTF8String:keycode.utf8().get_data()]];
+ }
+ GodotMenuItem *obj = [[GodotMenuItem alloc] init];
+ obj->callback = p_callback;
+ obj->meta = p_tag;
+ obj->checkable_type = CHECKABLE_TYPE_RADIO_BUTTON;
+ obj->max_states = 0;
+ obj->state = 0;
+ [menu_item setKeyEquivalentModifierMask:KeyMappingOSX::keycode_get_native_mask(p_accel)];
+ [menu_item setRepresentedObject:obj];
+ }
+}
+
+void DisplayServerOSX::global_menu_add_icon_radio_check_item(const String &p_menu_root, const Ref<Texture2D> &p_icon, const String &p_label, const Callable &p_callback, const Variant &p_tag, Key p_accel, int p_index) {
_THREAD_SAFE_METHOD_
NSMenu *menu = _get_menu_root(p_menu_root);
if (menu) {
- NSMenuItem *menu_item = [menu addItemWithTitle:[NSString stringWithUTF8String:p_label.utf8().get_data()] action:@selector(globalMenuCallback:) keyEquivalent:@""];
+ String keycode = KeyMappingOSX::keycode_get_native_string(p_accel & KeyModifierMask::CODE_MASK);
+ NSMenuItem *menu_item;
+ if (p_index != -1) {
+ menu_item = [menu insertItemWithTitle:[NSString stringWithUTF8String:p_label.utf8().get_data()] action:@selector(globalMenuCallback:) keyEquivalent:[NSString stringWithUTF8String:keycode.utf8().get_data()] atIndex:p_index];
+ } else {
+ menu_item = [menu addItemWithTitle:[NSString stringWithUTF8String:p_label.utf8().get_data()] action:@selector(globalMenuCallback:) keyEquivalent:[NSString stringWithUTF8String:keycode.utf8().get_data()]];
+ }
GodotMenuItem *obj = [[GodotMenuItem alloc] init];
obj->callback = p_callback;
obj->meta = p_tag;
- obj->checkable = false;
+ obj->checkable_type = CHECKABLE_TYPE_RADIO_BUTTON;
+ obj->max_states = 0;
+ obj->state = 0;
+ if (p_icon.is_valid()) {
+ obj->img = p_icon->get_image();
+ obj->img = obj->img->duplicate();
+ if (obj->img->is_compressed()) {
+ obj->img->decompress();
+ }
+ obj->img->resize(16, 16, Image::INTERPOLATE_LANCZOS);
+ [menu_item setImage:_convert_to_nsimg(obj->img)];
+ }
+ [menu_item setKeyEquivalentModifierMask:KeyMappingOSX::keycode_get_native_mask(p_accel)];
[menu_item setRepresentedObject:obj];
}
}
-void DisplayServerOSX::global_menu_add_check_item(const String &p_menu_root, const String &p_label, const Callable &p_callback, const Variant &p_tag) {
+void DisplayServerOSX::global_menu_add_multistate_item(const String &p_menu_root, const String &p_label, int p_max_states, int p_default_state, const Callable &p_callback, const Variant &p_tag, Key p_accel, int p_index) {
_THREAD_SAFE_METHOD_
NSMenu *menu = _get_menu_root(p_menu_root);
if (menu) {
- NSMenuItem *menu_item = [menu addItemWithTitle:[NSString stringWithUTF8String:p_label.utf8().get_data()] action:@selector(globalMenuCallback:) keyEquivalent:@""];
+ String keycode = KeyMappingOSX::keycode_get_native_string(p_accel & KeyModifierMask::CODE_MASK);
+ NSMenuItem *menu_item;
+ if (p_index != -1) {
+ menu_item = [menu insertItemWithTitle:[NSString stringWithUTF8String:p_label.utf8().get_data()] action:@selector(globalMenuCallback:) keyEquivalent:[NSString stringWithUTF8String:keycode.utf8().get_data()] atIndex:p_index];
+ } else {
+ menu_item = [menu addItemWithTitle:[NSString stringWithUTF8String:p_label.utf8().get_data()] action:@selector(globalMenuCallback:) keyEquivalent:[NSString stringWithUTF8String:keycode.utf8().get_data()]];
+ }
GodotMenuItem *obj = [[GodotMenuItem alloc] init];
obj->callback = p_callback;
obj->meta = p_tag;
- obj->checkable = true;
+ obj->checkable_type = CHECKABLE_TYPE_NONE;
+ obj->max_states = p_max_states;
+ obj->state = p_default_state;
+ [menu_item setKeyEquivalentModifierMask:KeyMappingOSX::keycode_get_native_mask(p_accel)];
[menu_item setRepresentedObject:obj];
}
}
-void DisplayServerOSX::global_menu_add_submenu_item(const String &p_menu_root, const String &p_label, const String &p_submenu) {
+void DisplayServerOSX::global_menu_add_submenu_item(const String &p_menu_root, const String &p_label, const String &p_submenu, int p_index) {
_THREAD_SAFE_METHOD_
NSMenu *menu = _get_menu_root(p_menu_root);
@@ -713,18 +915,58 @@ void DisplayServerOSX::global_menu_add_submenu_item(const String &p_menu_root, c
ERR_PRINT("Can't set submenu to menu that is already a submenu of some other menu!");
return;
}
- NSMenuItem *menu_item = [menu addItemWithTitle:[NSString stringWithUTF8String:p_label.utf8().get_data()] action:nil keyEquivalent:@""];
+ NSMenuItem *menu_item;
+ if (p_index != -1) {
+ menu_item = [menu insertItemWithTitle:[NSString stringWithUTF8String:p_label.utf8().get_data()] action:nil keyEquivalent:@"" atIndex:p_index];
+ } else {
+ menu_item = [menu addItemWithTitle:[NSString stringWithUTF8String:p_label.utf8().get_data()] action:nil keyEquivalent:@""];
+ }
+ [sub_menu setTitle:[NSString stringWithUTF8String:p_label.utf8().get_data()]];
[menu setSubmenu:sub_menu forItem:menu_item];
}
}
-void DisplayServerOSX::global_menu_add_separator(const String &p_menu_root) {
+void DisplayServerOSX::global_menu_add_separator(const String &p_menu_root, int p_index) {
_THREAD_SAFE_METHOD_
NSMenu *menu = _get_menu_root(p_menu_root);
if (menu) {
- [menu addItem:[NSMenuItem separatorItem]];
+ if (p_index != -1) {
+ [menu insertItem:[NSMenuItem separatorItem] atIndex:p_index];
+ } else {
+ [menu addItem:[NSMenuItem separatorItem]];
+ }
+ }
+}
+
+int DisplayServerOSX::global_menu_get_item_index_from_text(const String &p_menu_root, const String &p_text) const {
+ _THREAD_SAFE_METHOD_
+
+ const NSMenu *menu = _get_menu_root(p_menu_root);
+ if (menu) {
+ return [menu indexOfItemWithTitle:[NSString stringWithUTF8String:p_text.utf8().get_data()]];
}
+
+ return -1;
+}
+
+int DisplayServerOSX::global_menu_get_item_index_from_tag(const String &p_menu_root, const Variant &p_tag) const {
+ _THREAD_SAFE_METHOD_
+
+ const NSMenu *menu = _get_menu_root(p_menu_root);
+ if (menu) {
+ for (NSInteger i = 0; i < [menu numberOfItems]; i++) {
+ const NSMenuItem *menu_item = [menu itemAtIndex:i];
+ if (menu_item) {
+ const GodotMenuItem *obj = [menu_item representedObject];
+ if (obj && obj->meta == p_tag) {
+ return i;
+ }
+ }
+ }
+ }
+
+ return -1;
}
bool DisplayServerOSX::global_menu_is_item_checked(const String &p_menu_root, int p_idx) const {
@@ -749,14 +991,30 @@ bool DisplayServerOSX::global_menu_is_item_checkable(const String &p_menu_root,
if (menu_item) {
GodotMenuItem *obj = [menu_item representedObject];
if (obj) {
- return obj->checkable;
+ return obj->checkable_type == CHECKABLE_TYPE_CHECK_BOX;
+ }
+ }
+ }
+ return false;
+}
+
+bool DisplayServerOSX::global_menu_is_item_radio_checkable(const String &p_menu_root, int p_idx) const {
+ _THREAD_SAFE_METHOD_
+
+ const NSMenu *menu = _get_menu_root(p_menu_root);
+ if (menu) {
+ const NSMenuItem *menu_item = [menu itemAtIndex:p_idx];
+ if (menu_item) {
+ GodotMenuItem *obj = [menu_item representedObject];
+ if (obj) {
+ return obj->checkable_type == CHECKABLE_TYPE_RADIO_BUTTON;
}
}
}
return false;
}
-Callable DisplayServerOSX::global_menu_get_item_callback(const String &p_menu_root, int p_idx) {
+Callable DisplayServerOSX::global_menu_get_item_callback(const String &p_menu_root, int p_idx) const {
_THREAD_SAFE_METHOD_
const NSMenu *menu = _get_menu_root(p_menu_root);
@@ -772,7 +1030,7 @@ Callable DisplayServerOSX::global_menu_get_item_callback(const String &p_menu_ro
return Callable();
}
-Variant DisplayServerOSX::global_menu_get_item_tag(const String &p_menu_root, int p_idx) {
+Variant DisplayServerOSX::global_menu_get_item_tag(const String &p_menu_root, int p_idx) const {
_THREAD_SAFE_METHOD_
const NSMenu *menu = _get_menu_root(p_menu_root);
@@ -788,22 +1046,20 @@ Variant DisplayServerOSX::global_menu_get_item_tag(const String &p_menu_root, in
return Variant();
}
-String DisplayServerOSX::global_menu_get_item_text(const String &p_menu_root, int p_idx) {
+String DisplayServerOSX::global_menu_get_item_text(const String &p_menu_root, int p_idx) const {
_THREAD_SAFE_METHOD_
const NSMenu *menu = _get_menu_root(p_menu_root);
if (menu) {
const NSMenuItem *menu_item = [menu itemAtIndex:p_idx];
if (menu_item) {
- String ret;
- ret.parse_utf8([[menu_item title] UTF8String]);
- return ret;
+ return String::utf8([[menu_item title] UTF8String]);
}
}
return String();
}
-String DisplayServerOSX::global_menu_get_item_submenu(const String &p_menu_root, int p_idx) {
+String DisplayServerOSX::global_menu_get_item_submenu(const String &p_menu_root, int p_idx) const {
_THREAD_SAFE_METHOD_
const NSMenu *menu = _get_menu_root(p_menu_root);
@@ -823,6 +1079,116 @@ String DisplayServerOSX::global_menu_get_item_submenu(const String &p_menu_root,
return String();
}
+Key DisplayServerOSX::global_menu_get_item_accelerator(const String &p_menu_root, int p_idx) const {
+ _THREAD_SAFE_METHOD_
+
+ const NSMenu *menu = _get_menu_root(p_menu_root);
+ if (menu) {
+ const NSMenuItem *menu_item = [menu itemAtIndex:p_idx];
+ if (menu_item) {
+ String ret = String::utf8([[menu_item keyEquivalent] UTF8String]);
+ Key keycode = find_keycode(ret);
+ NSUInteger mask = [menu_item keyEquivalentModifierMask];
+ if (mask & NSEventModifierFlagControl) {
+ keycode |= KeyModifierMask::CTRL;
+ }
+ if (mask & NSEventModifierFlagOption) {
+ keycode |= KeyModifierMask::ALT;
+ }
+ if (mask & NSEventModifierFlagShift) {
+ keycode |= KeyModifierMask::SHIFT;
+ }
+ if (mask & NSEventModifierFlagCommand) {
+ keycode |= KeyModifierMask::META;
+ }
+ if (mask & NSEventModifierFlagNumericPad) {
+ keycode |= KeyModifierMask::KPAD;
+ }
+ return keycode;
+ }
+ }
+ return Key::NONE;
+}
+
+bool DisplayServerOSX::global_menu_is_item_disabled(const String &p_menu_root, int p_idx) const {
+ _THREAD_SAFE_METHOD_
+
+ const NSMenu *menu = _get_menu_root(p_menu_root);
+ if (menu) {
+ const NSMenuItem *menu_item = [menu itemAtIndex:p_idx];
+ if (menu_item) {
+ return ![menu_item isEnabled];
+ }
+ }
+ return false;
+}
+
+String DisplayServerOSX::global_menu_get_item_tooltip(const String &p_menu_root, int p_idx) const {
+ _THREAD_SAFE_METHOD_
+
+ const NSMenu *menu = _get_menu_root(p_menu_root);
+ if (menu) {
+ const NSMenuItem *menu_item = [menu itemAtIndex:p_idx];
+ if (menu_item) {
+ return String::utf8([[menu_item toolTip] UTF8String]);
+ }
+ }
+ return String();
+}
+
+int DisplayServerOSX::global_menu_get_item_state(const String &p_menu_root, int p_idx) const {
+ _THREAD_SAFE_METHOD_
+
+ const NSMenu *menu = _get_menu_root(p_menu_root);
+ if (menu) {
+ const NSMenuItem *menu_item = [menu itemAtIndex:p_idx];
+ if (menu_item) {
+ GodotMenuItem *obj = [menu_item representedObject];
+ if (obj) {
+ return obj->state;
+ }
+ }
+ }
+ return 0;
+}
+
+int DisplayServerOSX::global_menu_get_item_max_states(const String &p_menu_root, int p_idx) const {
+ _THREAD_SAFE_METHOD_
+
+ const NSMenu *menu = _get_menu_root(p_menu_root);
+ if (menu) {
+ const NSMenuItem *menu_item = [menu itemAtIndex:p_idx];
+ if (menu_item) {
+ GodotMenuItem *obj = [menu_item representedObject];
+ if (obj) {
+ return obj->max_states;
+ }
+ }
+ }
+ return 0;
+}
+
+Ref<Texture2D> DisplayServerOSX::global_menu_get_item_icon(const String &p_menu_root, int p_idx) const {
+ _THREAD_SAFE_METHOD_
+
+ const NSMenu *menu = _get_menu_root(p_menu_root);
+ if (menu) {
+ const NSMenuItem *menu_item = [menu itemAtIndex:p_idx];
+ if (menu_item) {
+ GodotMenuItem *obj = [menu_item representedObject];
+ if (obj) {
+ if (obj->img.is_valid()) {
+ Ref<ImageTexture> txt;
+ txt.instantiate();
+ txt->create_from_image(obj->img);
+ return txt;
+ }
+ }
+ }
+ }
+ return Ref<Texture2D>();
+}
+
void DisplayServerOSX::global_menu_set_item_checked(const String &p_menu_root, int p_idx, bool p_checked) {
_THREAD_SAFE_METHOD_
@@ -853,7 +1219,23 @@ void DisplayServerOSX::global_menu_set_item_checkable(const String &p_menu_root,
NSMenuItem *menu_item = [menu itemAtIndex:p_idx];
if (menu_item) {
GodotMenuItem *obj = [menu_item representedObject];
- obj->checkable = p_checkable;
+ obj->checkable_type = (p_checkable) ? CHECKABLE_TYPE_CHECK_BOX : CHECKABLE_TYPE_NONE;
+ }
+ }
+}
+
+void DisplayServerOSX::global_menu_set_item_radio_checkable(const String &p_menu_root, int p_idx, bool p_checkable) {
+ _THREAD_SAFE_METHOD_
+
+ NSMenu *menu = _get_menu_root(p_menu_root);
+ if (menu) {
+ if ((menu == [NSApp mainMenu]) && (p_idx == 0)) { // Do not edit Apple menu.
+ return;
+ }
+ NSMenuItem *menu_item = [menu itemAtIndex:p_idx];
+ if (menu_item) {
+ GodotMenuItem *obj = [menu_item representedObject];
+ obj->checkable_type = (p_checkable) ? CHECKABLE_TYPE_RADIO_BUTTON : CHECKABLE_TYPE_NONE;
}
}
}
@@ -929,6 +1311,116 @@ void DisplayServerOSX::global_menu_set_item_submenu(const String &p_menu_root, i
}
}
+void DisplayServerOSX::global_menu_set_item_accelerator(const String &p_menu_root, int p_idx, Key p_keycode) {
+ _THREAD_SAFE_METHOD_
+
+ NSMenu *menu = _get_menu_root(p_menu_root);
+ if (menu) {
+ if ((menu == [NSApp mainMenu]) && (p_idx == 0)) { // Do not edit Apple menu.
+ return;
+ }
+ NSMenuItem *menu_item = [menu itemAtIndex:p_idx];
+ if (menu_item) {
+ [menu_item setKeyEquivalentModifierMask:KeyMappingOSX::keycode_get_native_mask(p_keycode)];
+ String keycode = KeyMappingOSX::keycode_get_native_string(p_keycode & KeyModifierMask::CODE_MASK);
+ [menu_item setKeyEquivalent:[NSString stringWithUTF8String:keycode.utf8().get_data()]];
+ }
+ }
+}
+
+void DisplayServerOSX::global_menu_set_item_disabled(const String &p_menu_root, int p_idx, bool p_disabled) {
+ _THREAD_SAFE_METHOD_
+
+ NSMenu *menu = _get_menu_root(p_menu_root);
+ if (menu) {
+ if ((menu == [NSApp mainMenu]) && (p_idx == 0)) { // Do not edit Apple menu.
+ return;
+ }
+ NSMenuItem *menu_item = [menu itemAtIndex:p_idx];
+ if (menu_item) {
+ [menu_item setEnabled:(!p_disabled)];
+ }
+ }
+}
+
+void DisplayServerOSX::global_menu_set_item_tooltip(const String &p_menu_root, int p_idx, const String &p_tooltip) {
+ _THREAD_SAFE_METHOD_
+
+ NSMenu *menu = _get_menu_root(p_menu_root);
+ if (menu) {
+ if ((menu == [NSApp mainMenu]) && (p_idx == 0)) { // Do not edit Apple menu.
+ return;
+ }
+ NSMenuItem *menu_item = [menu itemAtIndex:p_idx];
+ if (menu_item) {
+ [menu_item setToolTip:[NSString stringWithUTF8String:p_tooltip.utf8().get_data()]];
+ }
+ }
+}
+
+void DisplayServerOSX::global_menu_set_item_state(const String &p_menu_root, int p_idx, int p_state) {
+ _THREAD_SAFE_METHOD_
+
+ NSMenu *menu = _get_menu_root(p_menu_root);
+ if (menu) {
+ if ((menu == [NSApp mainMenu]) && (p_idx == 0)) { // Do not edit Apple menu.
+ return;
+ }
+ NSMenuItem *menu_item = [menu itemAtIndex:p_idx];
+ if (menu_item) {
+ GodotMenuItem *obj = [menu_item representedObject];
+ if (obj) {
+ obj->state = p_state;
+ }
+ }
+ }
+}
+
+void DisplayServerOSX::global_menu_set_item_max_states(const String &p_menu_root, int p_idx, int p_max_states) {
+ _THREAD_SAFE_METHOD_
+
+ NSMenu *menu = _get_menu_root(p_menu_root);
+ if (menu) {
+ if ((menu == [NSApp mainMenu]) && (p_idx == 0)) { // Do not edit Apple menu.
+ return;
+ }
+ NSMenuItem *menu_item = [menu itemAtIndex:p_idx];
+ if (menu_item) {
+ GodotMenuItem *obj = [menu_item representedObject];
+ if (obj) {
+ obj->max_states = p_max_states;
+ }
+ }
+ }
+}
+
+void DisplayServerOSX::global_menu_set_item_icon(const String &p_menu_root, int p_idx, const Ref<Texture2D> &p_icon) {
+ _THREAD_SAFE_METHOD_
+
+ NSMenu *menu = _get_menu_root(p_menu_root);
+ if (menu) {
+ if ((menu == [NSApp mainMenu]) && (p_idx == 0)) { // Do not edit Apple menu.
+ return;
+ }
+ NSMenuItem *menu_item = [menu itemAtIndex:p_idx];
+ if (menu_item) {
+ GodotMenuItem *obj = [menu_item representedObject];
+ if (p_icon.is_valid()) {
+ obj->img = p_icon->get_image();
+ obj->img = obj->img->duplicate();
+ if (obj->img->is_compressed()) {
+ obj->img->decompress();
+ }
+ obj->img->resize(16, 16, Image::INTERPOLATE_LANCZOS);
+ [menu_item setImage:_convert_to_nsimg(obj->img)];
+ } else {
+ obj->img = Ref<Image>();
+ [menu_item setImage:nil];
+ }
+ }
+ }
+}
+
int DisplayServerOSX::global_menu_get_item_count(const String &p_menu_root) const {
_THREAD_SAFE_METHOD_
@@ -1154,7 +1646,7 @@ bool DisplayServerOSX::update_mouse_wrap(WindowData &p_wd, NSPoint &r_delta, NSP
return false;
}
-void DisplayServerOSX::mouse_warp_to_position(const Point2i &p_to) {
+void DisplayServerOSX::warp_mouse(const Point2i &p_position) {
_THREAD_SAFE_METHOD_
if (mouse_mode != MOUSE_MODE_CAPTURED) {
@@ -1164,7 +1656,7 @@ void DisplayServerOSX::mouse_warp_to_position(const Point2i &p_to) {
// Local point in window coords.
const NSRect contentRect = [wd.window_view frame];
const float scale = screen_get_max_scale();
- NSRect pointInWindowRect = NSMakeRect(p_to.x / scale, contentRect.size.height - (p_to.y / scale - 1), 0, 0);
+ NSRect pointInWindowRect = NSMakeRect(p_position.x / scale, contentRect.size.height - (p_position.y / scale - 1), 0, 0);
NSPoint pointOnScreen = [[wd.window_view window] convertRectToScreen:pointInWindowRect].origin;
// Point in scren coords.
@@ -1190,7 +1682,11 @@ Point2i DisplayServerOSX::mouse_get_position() const {
for (NSScreen *screen in [NSScreen screens]) {
NSRect frame = [screen frame];
if (NSMouseInRect(mouse_pos, frame, NO)) {
- return Vector2i((int)mouse_pos.x, (int)-mouse_pos.y) * scale + _get_screens_origin();
+ Vector2i pos = Vector2i((int)mouse_pos.x, (int)mouse_pos.y);
+ pos *= scale;
+ pos -= _get_screens_origin();
+ pos.y *= -1;
+ return pos;
}
}
return Vector2i();
@@ -2628,11 +3124,13 @@ DisplayServerOSX::DisplayServerOSX(const String &p_rendering_driver, WindowMode
// Setup Dock menu.
dock_menu = [[NSMenu alloc] initWithTitle:@"_dock"];
+ [dock_menu setAutoenablesItems:NO];
// Setup Apple menu.
apple_menu = [[NSMenu alloc] initWithTitle:@""];
title = [NSString stringWithFormat:NSLocalizedString(@"About %@", nil), nsappname];
[apple_menu addItemWithTitle:title action:@selector(showAbout:) keyEquivalent:@""];
+ [apple_menu setAutoenablesItems:NO];
[apple_menu addItem:[NSMenuItem separatorItem]];
@@ -2660,6 +3158,7 @@ DisplayServerOSX::DisplayServerOSX(const String &p_rendering_driver, WindowMode
NSMenu *main_menu = [NSApp mainMenu];
menu_item = [main_menu addItemWithTitle:@"" action:nil keyEquivalent:@""];
[main_menu setSubmenu:apple_menu forItem:menu_item];
+ [main_menu setAutoenablesItems:NO];
//!!!!!!!!!!!!!!!!!!!!!!!!!!
//TODO - do Vulkan and OpenGL support checks, driver selection and fallback
diff --git a/platform/osx/godot_menu_item.h b/platform/osx/godot_menu_item.h
index 50c4709c18..2c12897f10 100644
--- a/platform/osx/godot_menu_item.h
+++ b/platform/osx/godot_menu_item.h
@@ -36,12 +36,21 @@
#import <AppKit/AppKit.h>
#import <Foundation/Foundation.h>
+enum GlobalMenuCheckType {
+ CHECKABLE_TYPE_NONE,
+ CHECKABLE_TYPE_CHECK_BOX,
+ CHECKABLE_TYPE_RADIO_BUTTON,
+};
+
@interface GodotMenuItem : NSObject {
@public
Callable callback;
Variant meta;
int id;
- bool checkable;
+ GlobalMenuCheckType checkable_type;
+ int max_states;
+ int state;
+ Ref<Image> img;
}
@end
diff --git a/platform/uwp/export/export_plugin.cpp b/platform/uwp/export/export_plugin.cpp
index 230e5c749c..88343d6f85 100644
--- a/platform/uwp/export/export_plugin.cpp
+++ b/platform/uwp/export/export_plugin.cpp
@@ -131,6 +131,14 @@ void EditorExportPlatformUWP::get_export_options(List<ExportOption> *r_options)
}
bool EditorExportPlatformUWP::can_export(const Ref<EditorExportPreset> &p_preset, String &r_error, bool &r_missing_templates) const {
+#ifndef DEV_ENABLED
+ // We don't provide export templates for the UWP platform currently as it
+ // has not been ported for Godot 4.0. This is skipped in DEV_ENABLED so that
+ // contributors can still test the pipeline if/when we can build it again.
+ r_error = "The UWP platform is currently not supported in Godot 4.0.\n";
+ return false;
+#endif
+
String err;
bool valid = false;
diff --git a/platform/windows/display_server_windows.cpp b/platform/windows/display_server_windows.cpp
index d243d4c05d..877e82e707 100644
--- a/platform/windows/display_server_windows.cpp
+++ b/platform/windows/display_server_windows.cpp
@@ -150,7 +150,7 @@ DisplayServer::MouseMode DisplayServerWindows::mouse_get_mode() const {
return mouse_mode;
}
-void DisplayServerWindows::mouse_warp_to_position(const Point2i &p_to) {
+void DisplayServerWindows::warp_mouse(const Point2i &p_position) {
_THREAD_SAFE_METHOD_
if (!windows.has(last_focused_window)) {
@@ -158,12 +158,12 @@ void DisplayServerWindows::mouse_warp_to_position(const Point2i &p_to) {
}
if (mouse_mode == MOUSE_MODE_CAPTURED) {
- old_x = p_to.x;
- old_y = p_to.y;
+ old_x = p_position.x;
+ old_y = p_position.y;
} else {
POINT p;
- p.x = p_to.x;
- p.y = p_to.y;
+ p.x = p_position.x;
+ p.y = p_position.y;
ClientToScreen(windows[last_focused_window].hWnd, &p);
SetCursorPos(p.x, p.y);
@@ -2849,7 +2849,7 @@ LRESULT DisplayServerWindows::WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARA
}
}
} else {
- // For reasons unknown to mankind, wheel comes in screen coordinates.
+ // For reasons unknown to humanity, wheel comes in screen coordinates.
POINT coords;
coords.x = mb->get_position().x;
coords.y = mb->get_position().y;
@@ -3626,7 +3626,11 @@ DisplayServerWindows::DisplayServerWindows(const String &p_rendering_driver, Win
}
#endif
- if (!OS::get_singleton()->is_in_low_processor_usage_mode()) {
+ if (!Engine::get_singleton()->is_editor_hint() && !OS::get_singleton()->is_in_low_processor_usage_mode()) {
+ // Increase priority for projects that are not in low-processor mode (typically games)
+ // to reduce the risk of frame stuttering.
+ // This is not done for the editor to prevent importers or resource bakers
+ // from making the system unresponsive.
SetPriorityClass(GetCurrentProcess(), ABOVE_NORMAL_PRIORITY_CLASS);
DWORD index = 0;
HANDLE handle = AvSetMmThreadCharacteristics("Games", &index);
diff --git a/platform/windows/display_server_windows.h b/platform/windows/display_server_windows.h
index a56a2b83ac..71fedf2bca 100644
--- a/platform/windows/display_server_windows.h
+++ b/platform/windows/display_server_windows.h
@@ -457,7 +457,7 @@ public:
virtual void mouse_set_mode(MouseMode p_mode) override;
virtual MouseMode mouse_get_mode() const override;
- virtual void mouse_warp_to_position(const Point2i &p_to) override;
+ virtual void warp_mouse(const Point2i &p_position) override;
virtual Point2i mouse_get_position() const override;
virtual MouseButton mouse_get_button_state() const override;
diff --git a/platform/windows/export/export.cpp b/platform/windows/export/export.cpp
index 17a24c08bf..0fa2913218 100644
--- a/platform/windows/export/export.cpp
+++ b/platform/windows/export/export.cpp
@@ -32,8 +32,6 @@
#include "export_plugin.h"
-static Error fixup_embedded_pck(const String &p_path, int64_t p_embedded_start, int64_t p_embedded_size);
-
void register_windows_exporter() {
EDITOR_DEF("export/windows/rcedit", "");
EditorSettings::get_singleton()->add_property_hint(PropertyInfo(Variant::STRING, "export/windows/rcedit", PROPERTY_HINT_GLOBAL_FILE, "*.exe"));
@@ -57,84 +55,7 @@ void register_windows_exporter() {
logo->create_from_image(img);
platform->set_logo(logo);
platform->set_name("Windows Desktop");
- platform->set_extension("exe");
- platform->set_release_32("windows_32_release.exe");
- platform->set_debug_32("windows_32_debug.exe");
- platform->set_release_64("windows_64_release.exe");
- platform->set_debug_64("windows_64_debug.exe");
platform->set_os_name("Windows");
- platform->set_fixup_embedded_pck_func(&fixup_embedded_pck);
EditorExport::get_singleton()->add_export_platform(platform);
}
-
-static Error fixup_embedded_pck(const String &p_path, int64_t p_embedded_start, int64_t p_embedded_size) {
- // Patch the header of the "pck" section in the PE file so that it corresponds to the embedded data
-
- FileAccess *f = FileAccess::open(p_path, FileAccess::READ_WRITE);
- if (!f) {
- return ERR_CANT_OPEN;
- }
-
- // Jump to the PE header and check the magic number
- {
- f->seek(0x3c);
- uint32_t pe_pos = f->get_32();
-
- f->seek(pe_pos);
- uint32_t magic = f->get_32();
- if (magic != 0x00004550) {
- f->close();
- return ERR_FILE_CORRUPT;
- }
- }
-
- // Process header
-
- int num_sections;
- {
- int64_t header_pos = f->get_position();
-
- f->seek(header_pos + 2);
- num_sections = f->get_16();
- f->seek(header_pos + 16);
- uint16_t opt_header_size = f->get_16();
-
- // Skip rest of header + optional header to go to the section headers
- f->seek(f->get_position() + 2 + opt_header_size);
- }
-
- // Search for the "pck" section
-
- int64_t section_table_pos = f->get_position();
-
- bool found = false;
- for (int i = 0; i < num_sections; ++i) {
- int64_t section_header_pos = section_table_pos + i * 40;
- f->seek(section_header_pos);
-
- uint8_t section_name[9];
- f->get_buffer(section_name, 8);
- section_name[8] = '\0';
-
- if (strcmp((char *)section_name, "pck") == 0) {
- // "pck" section found, let's patch!
-
- // Set virtual size to a little to avoid it taking memory (zero would give issues)
- f->seek(section_header_pos + 8);
- f->store_32(8);
-
- f->seek(section_header_pos + 16);
- f->store_32(p_embedded_size);
- f->seek(section_header_pos + 20);
- f->store_32(p_embedded_start);
-
- found = true;
- break;
- }
- }
-
- f->close();
-
- return found ? OK : ERR_FILE_CORRUPT;
-}
diff --git a/platform/windows/export/export_plugin.cpp b/platform/windows/export/export_plugin.cpp
index 7b9cb59896..e627253739 100644
--- a/platform/windows/export/export_plugin.cpp
+++ b/platform/windows/export/export_plugin.cpp
@@ -86,6 +86,16 @@ Error EditorExportPlatformWindows::export_project(const Ref<EditorExportPreset>
return err;
}
+String EditorExportPlatformWindows::get_template_file_name(const String &p_target, const String &p_arch) const {
+ return "windows_" + p_arch + "_" + p_target + ".exe";
+}
+
+List<String> EditorExportPlatformWindows::get_binary_extensions(const Ref<EditorExportPreset> &p_preset) const {
+ List<String> list;
+ list.push_back("exe");
+ return list;
+}
+
bool EditorExportPlatformWindows::get_export_option_visibility(const String &p_option, const Map<StringName, Variant> &p_options) const {
// This option is not supported by "osslsigncode", used on non-Windows host.
if (!OS::get_singleton()->has_feature("windows") && p_option == "codesign/identity_type") {
@@ -403,3 +413,74 @@ bool EditorExportPlatformWindows::can_export(const Ref<EditorExportPreset> &p_pr
return valid;
}
+
+Error EditorExportPlatformWindows::fixup_embedded_pck(const String &p_path, int64_t p_embedded_start, int64_t p_embedded_size) const {
+ // Patch the header of the "pck" section in the PE file so that it corresponds to the embedded data
+
+ FileAccess *f = FileAccess::open(p_path, FileAccess::READ_WRITE);
+ if (!f) {
+ return ERR_CANT_OPEN;
+ }
+
+ // Jump to the PE header and check the magic number
+ {
+ f->seek(0x3c);
+ uint32_t pe_pos = f->get_32();
+
+ f->seek(pe_pos);
+ uint32_t magic = f->get_32();
+ if (magic != 0x00004550) {
+ f->close();
+ return ERR_FILE_CORRUPT;
+ }
+ }
+
+ // Process header
+
+ int num_sections;
+ {
+ int64_t header_pos = f->get_position();
+
+ f->seek(header_pos + 2);
+ num_sections = f->get_16();
+ f->seek(header_pos + 16);
+ uint16_t opt_header_size = f->get_16();
+
+ // Skip rest of header + optional header to go to the section headers
+ f->seek(f->get_position() + 2 + opt_header_size);
+ }
+
+ // Search for the "pck" section
+
+ int64_t section_table_pos = f->get_position();
+
+ bool found = false;
+ for (int i = 0; i < num_sections; ++i) {
+ int64_t section_header_pos = section_table_pos + i * 40;
+ f->seek(section_header_pos);
+
+ uint8_t section_name[9];
+ f->get_buffer(section_name, 8);
+ section_name[8] = '\0';
+
+ if (strcmp((char *)section_name, "pck") == 0) {
+ // "pck" section found, let's patch!
+
+ // Set virtual size to a little to avoid it taking memory (zero would give issues)
+ f->seek(section_header_pos + 8);
+ f->store_32(8);
+
+ f->seek(section_header_pos + 16);
+ f->store_32(p_embedded_size);
+ f->seek(section_header_pos + 20);
+ f->store_32(p_embedded_start);
+
+ found = true;
+ break;
+ }
+ }
+
+ f->close();
+
+ return found ? OK : ERR_FILE_CORRUPT;
+}
diff --git a/platform/windows/export/export_plugin.h b/platform/windows/export/export_plugin.h
index b40e872461..39d1cf4c77 100644
--- a/platform/windows/export/export_plugin.h
+++ b/platform/windows/export/export_plugin.h
@@ -45,9 +45,12 @@ class EditorExportPlatformWindows : public EditorExportPlatformPC {
public:
virtual Error export_project(const Ref<EditorExportPreset> &p_preset, bool p_debug, const String &p_path, int p_flags = 0) override;
virtual Error sign_shared_object(const Ref<EditorExportPreset> &p_preset, bool p_debug, const String &p_path) override;
+ virtual List<String> get_binary_extensions(const Ref<EditorExportPreset> &p_preset) const override;
virtual void get_export_options(List<ExportOption> *r_options) override;
virtual bool get_export_option_visibility(const String &p_option, const Map<StringName, Variant> &p_options) const override;
virtual bool can_export(const Ref<EditorExportPreset> &p_preset, String &r_error, bool &r_missing_templates) const override;
+ virtual String get_template_file_name(const String &p_target, const String &p_arch) const override;
+ virtual Error fixup_embedded_pck(const String &p_path, int64_t p_embedded_start, int64_t p_embedded_size) const override;
};
#endif
diff --git a/scene/2d/animated_sprite_2d.cpp b/scene/2d/animated_sprite_2d.cpp
index 257e334873..d3783aadd1 100644
--- a/scene/2d/animated_sprite_2d.cpp
+++ b/scene/2d/animated_sprite_2d.cpp
@@ -437,7 +437,7 @@ TypedArray<String> AnimatedSprite2D::get_configuration_warnings() const {
TypedArray<String> warnings = Node::get_configuration_warnings();
if (frames.is_null()) {
- warnings.push_back(TTR("A SpriteFrames resource must be created or set in the \"Frames\" property in order for AnimatedSprite to display frames."));
+ warnings.push_back(RTR("A SpriteFrames resource must be created or set in the \"Frames\" property in order for AnimatedSprite to display frames."));
}
return warnings;
diff --git a/scene/2d/canvas_modulate.cpp b/scene/2d/canvas_modulate.cpp
index 7f7eae51a6..61a17a4845 100644
--- a/scene/2d/canvas_modulate.cpp
+++ b/scene/2d/canvas_modulate.cpp
@@ -86,7 +86,7 @@ TypedArray<String> CanvasModulate::get_configuration_warnings() const {
get_tree()->get_nodes_in_group("_canvas_modulate_" + itos(get_canvas().get_id()), &nodes);
if (nodes.size() > 1) {
- warnings.push_back(TTR("Only one visible CanvasModulate is allowed per scene (or set of instantiated scenes). The first created one will work, while the rest will be ignored."));
+ warnings.push_back(RTR("Only one visible CanvasModulate is allowed per scene (or set of instantiated scenes). The first created one will work, while the rest will be ignored."));
}
}
diff --git a/scene/2d/collision_object_2d.cpp b/scene/2d/collision_object_2d.cpp
index fbfe1d7eff..c503de2d59 100644
--- a/scene/2d/collision_object_2d.cpp
+++ b/scene/2d/collision_object_2d.cpp
@@ -81,7 +81,7 @@ void CollisionObject2D::_notification(int p_what) {
return;
}
- Transform2D global_transform = get_global_transform();
+ Transform2D global_transform = get_global_transform_with_canvas();
if (area) {
PhysicsServer2D::get_singleton()->area_set_transform(rid, global_transform);
@@ -558,7 +558,7 @@ TypedArray<String> CollisionObject2D::get_configuration_warnings() const {
TypedArray<String> warnings = Node::get_configuration_warnings();
if (shapes.is_empty()) {
- warnings.push_back(TTR("This node has no shape, so it can't collide or interact with other objects.\nConsider adding a CollisionShape2D or CollisionPolygon2D as a child to define its shape."));
+ warnings.push_back(RTR("This node has no shape, so it can't collide or interact with other objects.\nConsider adding a CollisionShape2D or CollisionPolygon2D as a child to define its shape."));
}
return warnings;
diff --git a/scene/2d/collision_polygon_2d.cpp b/scene/2d/collision_polygon_2d.cpp
index e3939130ec..c8986e3c94 100644
--- a/scene/2d/collision_polygon_2d.cpp
+++ b/scene/2d/collision_polygon_2d.cpp
@@ -238,20 +238,20 @@ TypedArray<String> CollisionPolygon2D::get_configuration_warnings() const {
TypedArray<String> warnings = Node::get_configuration_warnings();
if (!Object::cast_to<CollisionObject2D>(get_parent())) {
- warnings.push_back(TTR("CollisionPolygon2D only serves to provide a collision shape to a CollisionObject2D derived node. Please only use it as a child of Area2D, StaticBody2D, RigidDynamicBody2D, CharacterBody2D, etc. to give them a shape."));
+ warnings.push_back(RTR("CollisionPolygon2D only serves to provide a collision shape to a CollisionObject2D derived node. Please only use it as a child of Area2D, StaticBody2D, RigidDynamicBody2D, CharacterBody2D, etc. to give them a shape."));
}
int polygon_count = polygon.size();
if (polygon_count == 0) {
- warnings.push_back(TTR("An empty CollisionPolygon2D has no effect on collision."));
+ warnings.push_back(RTR("An empty CollisionPolygon2D has no effect on collision."));
} else {
bool solids = build_mode == BUILD_SOLIDS;
if (solids) {
if (polygon_count < 3) {
- warnings.push_back(TTR("Invalid polygon. At least 3 points are needed in 'Solids' build mode."));
+ warnings.push_back(RTR("Invalid polygon. At least 3 points are needed in 'Solids' build mode."));
}
} else if (polygon_count < 2) {
- warnings.push_back(TTR("Invalid polygon. At least 2 points are needed in 'Segments' build mode."));
+ warnings.push_back(RTR("Invalid polygon. At least 2 points are needed in 'Segments' build mode."));
}
}
diff --git a/scene/2d/collision_shape_2d.cpp b/scene/2d/collision_shape_2d.cpp
index db9a745436..dd47ae6cb5 100644
--- a/scene/2d/collision_shape_2d.cpp
+++ b/scene/2d/collision_shape_2d.cpp
@@ -171,16 +171,16 @@ TypedArray<String> CollisionShape2D::get_configuration_warnings() const {
TypedArray<String> warnings = Node::get_configuration_warnings();
if (!Object::cast_to<CollisionObject2D>(get_parent())) {
- warnings.push_back(TTR("CollisionShape2D only serves to provide a collision shape to a CollisionObject2D derived node. Please only use it as a child of Area2D, StaticBody2D, RigidDynamicBody2D, CharacterBody2D, etc. to give them a shape."));
+ warnings.push_back(RTR("CollisionShape2D only serves to provide a collision shape to a CollisionObject2D derived node. Please only use it as a child of Area2D, StaticBody2D, RigidDynamicBody2D, CharacterBody2D, etc. to give them a shape."));
}
if (!shape.is_valid()) {
- warnings.push_back(TTR("A shape must be provided for CollisionShape2D to function. Please create a shape resource for it!"));
+ warnings.push_back(RTR("A shape must be provided for CollisionShape2D to function. Please create a shape resource for it!"));
}
Ref<ConvexPolygonShape2D> convex = shape;
Ref<ConcavePolygonShape2D> concave = shape;
if (convex.is_valid() || concave.is_valid()) {
- warnings.push_back(TTR("Polygon-based shapes are not meant be used nor edited directly through the CollisionShape2D node. Please use the CollisionPolygon2D node instead."));
+ warnings.push_back(RTR("Polygon-based shapes are not meant be used nor edited directly through the CollisionShape2D node. Please use the CollisionPolygon2D node instead."));
}
return warnings;
diff --git a/scene/2d/cpu_particles_2d.cpp b/scene/2d/cpu_particles_2d.cpp
index dd9df3c485..bad1488d5a 100644
--- a/scene/2d/cpu_particles_2d.cpp
+++ b/scene/2d/cpu_particles_2d.cpp
@@ -250,7 +250,7 @@ TypedArray<String> CPUParticles2D::get_configuration_warnings() const {
if (get_material().is_null() || (mat && !mat->get_particles_animation())) {
if (get_param_max(PARAM_ANIM_SPEED) != 0.0 || get_param_max(PARAM_ANIM_OFFSET) != 0.0 ||
get_param_curve(PARAM_ANIM_SPEED).is_valid() || get_param_curve(PARAM_ANIM_OFFSET).is_valid()) {
- warnings.push_back(TTR("CPUParticles2D animation requires the usage of a CanvasItemMaterial with \"Particles Animation\" enabled."));
+ warnings.push_back(RTR("CPUParticles2D animation requires the usage of a CanvasItemMaterial with \"Particles Animation\" enabled."));
}
}
diff --git a/scene/2d/gpu_particles_2d.cpp b/scene/2d/gpu_particles_2d.cpp
index 8b0840e7c8..c69eeb52a8 100644
--- a/scene/2d/gpu_particles_2d.cpp
+++ b/scene/2d/gpu_particles_2d.cpp
@@ -291,11 +291,11 @@ TypedArray<String> GPUParticles2D::get_configuration_warnings() const {
TypedArray<String> warnings = Node::get_configuration_warnings();
if (RenderingServer::get_singleton()->is_low_end()) {
- warnings.push_back(TTR("GPU-based particles are not supported by the OpenGL video driver.\nUse the CPUParticles2D node instead. You can use the \"Convert to CPUParticles2D\" option for this purpose."));
+ warnings.push_back(RTR("GPU-based particles are not supported by the OpenGL video driver.\nUse the CPUParticles2D node instead. You can use the \"Convert to CPUParticles2D\" option for this purpose."));
}
if (process_material.is_null()) {
- warnings.push_back(TTR("A material to process the particles is not assigned, so no behavior is imprinted."));
+ warnings.push_back(RTR("A material to process the particles is not assigned, so no behavior is imprinted."));
} else {
CanvasItemMaterial *mat = Object::cast_to<CanvasItemMaterial>(get_material().ptr());
@@ -304,7 +304,7 @@ TypedArray<String> GPUParticles2D::get_configuration_warnings() const {
if (process &&
(process->get_param_max(ParticlesMaterial::PARAM_ANIM_SPEED) != 0.0 || process->get_param_max(ParticlesMaterial::PARAM_ANIM_OFFSET) != 0.0 ||
process->get_param_texture(ParticlesMaterial::PARAM_ANIM_SPEED).is_valid() || process->get_param_texture(ParticlesMaterial::PARAM_ANIM_OFFSET).is_valid())) {
- warnings.push_back(TTR("Particles2D animation requires the usage of a CanvasItemMaterial with \"Particles Animation\" enabled."));
+ warnings.push_back(RTR("Particles2D animation requires the usage of a CanvasItemMaterial with \"Particles Animation\" enabled."));
}
}
}
diff --git a/scene/2d/joint_2d.cpp b/scene/2d/joint_2d.cpp
index c2773191ea..cd82b47333 100644
--- a/scene/2d/joint_2d.cpp
+++ b/scene/2d/joint_2d.cpp
@@ -77,15 +77,15 @@ void Joint2D::_update_joint(bool p_only_free) {
bool valid = false;
if (node_a && !body_a && node_b && !body_b) {
- warning = TTR("Node A and Node B must be PhysicsBody2Ds");
+ warning = RTR("Node A and Node B must be PhysicsBody2Ds");
} else if (node_a && !body_a) {
- warning = TTR("Node A must be a PhysicsBody2D");
+ warning = RTR("Node A must be a PhysicsBody2D");
} else if (node_b && !body_b) {
- warning = TTR("Node B must be a PhysicsBody2D");
+ warning = RTR("Node B must be a PhysicsBody2D");
} else if (!body_a || !body_b) {
- warning = TTR("Joint is not connected to two PhysicsBody2Ds");
+ warning = RTR("Joint is not connected to two PhysicsBody2Ds");
} else if (body_a == body_b) {
- warning = TTR("Node A and Node B must be different PhysicsBody2Ds");
+ warning = RTR("Node A and Node B must be different PhysicsBody2Ds");
} else {
warning = String();
valid = true;
diff --git a/scene/2d/light_2d.cpp b/scene/2d/light_2d.cpp
index ba168eeb86..b09b1b5047 100644
--- a/scene/2d/light_2d.cpp
+++ b/scene/2d/light_2d.cpp
@@ -394,7 +394,7 @@ TypedArray<String> PointLight2D::get_configuration_warnings() const {
TypedArray<String> warnings = Node::get_configuration_warnings();
if (!texture.is_valid()) {
- warnings.push_back(TTR("A texture with the shape of the light must be supplied to the \"Texture\" property."));
+ warnings.push_back(RTR("A texture with the shape of the light must be supplied to the \"Texture\" property."));
}
return warnings;
diff --git a/scene/2d/light_occluder_2d.cpp b/scene/2d/light_occluder_2d.cpp
index 0310817592..c4e57b375d 100644
--- a/scene/2d/light_occluder_2d.cpp
+++ b/scene/2d/light_occluder_2d.cpp
@@ -250,11 +250,11 @@ TypedArray<String> LightOccluder2D::get_configuration_warnings() const {
TypedArray<String> warnings = Node::get_configuration_warnings();
if (!occluder_polygon.is_valid()) {
- warnings.push_back(TTR("An occluder polygon must be set (or drawn) for this occluder to take effect."));
+ warnings.push_back(RTR("An occluder polygon must be set (or drawn) for this occluder to take effect."));
}
if (occluder_polygon.is_valid() && occluder_polygon->get_polygon().size() == 0) {
- warnings.push_back(TTR("The occluder polygon for this occluder is empty. Please draw a polygon."));
+ warnings.push_back(RTR("The occluder polygon for this occluder is empty. Please draw a polygon."));
}
return warnings;
diff --git a/scene/2d/navigation_agent_2d.cpp b/scene/2d/navigation_agent_2d.cpp
index 661d5361ee..91549d75f0 100644
--- a/scene/2d/navigation_agent_2d.cpp
+++ b/scene/2d/navigation_agent_2d.cpp
@@ -248,7 +248,7 @@ TypedArray<String> NavigationAgent2D::get_configuration_warnings() const {
TypedArray<String> warnings = Node::get_configuration_warnings();
if (!Object::cast_to<Node2D>(get_parent())) {
- warnings.push_back(TTR("The NavigationAgent2D can be used only under a Node2D node."));
+ warnings.push_back(RTR("The NavigationAgent2D can be used only under a Node2D node."));
}
return warnings;
diff --git a/scene/2d/navigation_obstacle_2d.cpp b/scene/2d/navigation_obstacle_2d.cpp
index 65f7adb7a6..d1e5bc11bc 100644
--- a/scene/2d/navigation_obstacle_2d.cpp
+++ b/scene/2d/navigation_obstacle_2d.cpp
@@ -100,7 +100,7 @@ TypedArray<String> NavigationObstacle2D::get_configuration_warnings() const {
TypedArray<String> warnings = Node::get_configuration_warnings();
if (!Object::cast_to<Node2D>(get_parent())) {
- warnings.push_back(TTR("The NavigationObstacle2D only serves to provide collision avoidance to a Node2D object."));
+ warnings.push_back(RTR("The NavigationObstacle2D only serves to provide collision avoidance to a Node2D object."));
}
return warnings;
diff --git a/scene/2d/navigation_region_2d.cpp b/scene/2d/navigation_region_2d.cpp
index 34ac02a82a..261d371dc4 100644
--- a/scene/2d/navigation_region_2d.cpp
+++ b/scene/2d/navigation_region_2d.cpp
@@ -517,7 +517,7 @@ TypedArray<String> NavigationRegion2D::get_configuration_warnings() const {
if (is_visible_in_tree() && is_inside_tree()) {
if (!navpoly.is_valid()) {
- warnings.push_back(TTR("A NavigationMesh resource must be set or created for this node to work. Please set a property or draw a polygon."));
+ warnings.push_back(RTR("A NavigationMesh resource must be set or created for this node to work. Please set a property or draw a polygon."));
}
}
diff --git a/scene/2d/parallax_layer.cpp b/scene/2d/parallax_layer.cpp
index 849412a7ae..9e8ab224dc 100644
--- a/scene/2d/parallax_layer.cpp
+++ b/scene/2d/parallax_layer.cpp
@@ -143,7 +143,7 @@ TypedArray<String> ParallaxLayer::get_configuration_warnings() const {
TypedArray<String> warnings = Node::get_configuration_warnings();
if (!Object::cast_to<ParallaxBackground>(get_parent())) {
- warnings.push_back(TTR("ParallaxLayer node only works when set as child of a ParallaxBackground node."));
+ warnings.push_back(RTR("ParallaxLayer node only works when set as child of a ParallaxBackground node."));
}
return warnings;
diff --git a/scene/2d/path_2d.cpp b/scene/2d/path_2d.cpp
index d001652ca3..aa68349329 100644
--- a/scene/2d/path_2d.cpp
+++ b/scene/2d/path_2d.cpp
@@ -263,7 +263,7 @@ TypedArray<String> PathFollow2D::get_configuration_warnings() const {
if (is_visible_in_tree() && is_inside_tree()) {
if (!Object::cast_to<Path2D>(get_parent())) {
- warnings.push_back(TTR("PathFollow2D only works when set as a child of a Path2D node."));
+ warnings.push_back(RTR("PathFollow2D only works when set as a child of a Path2D node."));
}
}
diff --git a/scene/2d/physical_bone_2d.cpp b/scene/2d/physical_bone_2d.cpp
index 1fc4b651d8..2999736d64 100644
--- a/scene/2d/physical_bone_2d.cpp
+++ b/scene/2d/physical_bone_2d.cpp
@@ -110,15 +110,15 @@ TypedArray<String> PhysicalBone2D::get_configuration_warnings() const {
TypedArray<String> warnings = Node::get_configuration_warnings();
if (!parent_skeleton) {
- warnings.push_back(TTR("A PhysicalBone2D only works with a Skeleton2D or another PhysicalBone2D as a parent node!"));
+ warnings.push_back(RTR("A PhysicalBone2D only works with a Skeleton2D or another PhysicalBone2D as a parent node!"));
}
if (parent_skeleton && bone2d_index <= -1) {
- warnings.push_back(TTR("A PhysicalBone2D needs to be assigned to a Bone2D node in order to function! Please set a Bone2D node in the inspector."));
+ warnings.push_back(RTR("A PhysicalBone2D needs to be assigned to a Bone2D node in order to function! Please set a Bone2D node in the inspector."));
}
if (!child_joint) {
PhysicalBone2D *parent_bone = Object::cast_to<PhysicalBone2D>(get_parent());
if (parent_bone) {
- warnings.push_back(TTR("A PhysicalBone2D node should have a Joint2D-based child node to keep bones connected! Please add a Joint2D-based node as a child to this node!"));
+ warnings.push_back(RTR("A PhysicalBone2D node should have a Joint2D-based child node to keep bones connected! Please add a Joint2D-based node as a child to this node!"));
}
}
diff --git a/scene/2d/physics_body_2d.cpp b/scene/2d/physics_body_2d.cpp
index eb4d9d6445..f96c7b512f 100644
--- a/scene/2d/physics_body_2d.cpp
+++ b/scene/2d/physics_body_2d.cpp
@@ -925,7 +925,7 @@ TypedArray<String> RigidDynamicBody2D::get_configuration_warnings() const {
TypedArray<String> warnings = CollisionObject2D::get_configuration_warnings();
if (ABS(t.elements[0].length() - 1.0) > 0.05 || ABS(t.elements[1].length() - 1.0) > 0.05) {
- warnings.push_back(TTR("Size changes to RigidDynamicBody2D will be overridden by the physics engine when running.\nChange the size in children collision shapes instead."));
+ warnings.push_back(RTR("Size changes to RigidDynamicBody2D will be overridden by the physics engine when running.\nChange the size in children collision shapes instead."));
}
return warnings;
@@ -1760,7 +1760,7 @@ void CharacterBody2D::_bind_methods() {
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "floor_block_on_wall"), "set_floor_block_on_wall_enabled", "is_floor_block_on_wall_enabled");
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "floor_max_angle", PROPERTY_HINT_RANGE, "0,180,0.1,radians"), "set_floor_max_angle", "get_floor_max_angle");
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "floor_snap_length", PROPERTY_HINT_RANGE, "0,32,0.1,or_greater"), "set_floor_snap_length", "get_floor_snap_length");
- ADD_GROUP("Moving platform", "moving_platform");
+ ADD_GROUP("Moving Platform", "moving_platform");
ADD_PROPERTY(PropertyInfo(Variant::INT, "moving_platform_apply_velocity_on_leave", PROPERTY_HINT_ENUM, "Always,Upward Only,Never", PROPERTY_USAGE_DEFAULT), "set_moving_platform_apply_velocity_on_leave", "get_moving_platform_apply_velocity_on_leave");
ADD_PROPERTY(PropertyInfo(Variant::INT, "moving_platform_floor_layers", PROPERTY_HINT_LAYERS_2D_PHYSICS), "set_moving_platform_floor_layers", "get_moving_platform_floor_layers");
ADD_PROPERTY(PropertyInfo(Variant::INT, "moving_platform_wall_layers", PROPERTY_HINT_LAYERS_2D_PHYSICS), "set_moving_platform_wall_layers", "get_moving_platform_wall_layers");
diff --git a/scene/2d/remote_transform_2d.cpp b/scene/2d/remote_transform_2d.cpp
index 429f0f6f6f..6c4bfd58ce 100644
--- a/scene/2d/remote_transform_2d.cpp
+++ b/scene/2d/remote_transform_2d.cpp
@@ -187,7 +187,7 @@ TypedArray<String> RemoteTransform2D::get_configuration_warnings() const {
TypedArray<String> warnings = Node::get_configuration_warnings();
if (!has_node(remote_node) || !Object::cast_to<Node2D>(get_node(remote_node))) {
- warnings.push_back(TTR("Path property must point to a valid Node2D node to work."));
+ warnings.push_back(RTR("Path property must point to a valid Node2D node to work."));
}
return warnings;
diff --git a/scene/2d/shape_cast_2d.cpp b/scene/2d/shape_cast_2d.cpp
index a2c5d73b59..a2f4b16ed3 100644
--- a/scene/2d/shape_cast_2d.cpp
+++ b/scene/2d/shape_cast_2d.cpp
@@ -382,7 +382,7 @@ TypedArray<String> ShapeCast2D::get_configuration_warnings() const {
TypedArray<String> warnings = Node2D::get_configuration_warnings();
if (shape.is_null()) {
- warnings.push_back(TTR("This node cannot interact with other objects unless a Shape2D is assigned."));
+ warnings.push_back(RTR("This node cannot interact with other objects unless a Shape2D is assigned."));
}
return warnings;
}
diff --git a/scene/2d/skeleton_2d.cpp b/scene/2d/skeleton_2d.cpp
index 360650c724..aa039e07ee 100644
--- a/scene/2d/skeleton_2d.cpp
+++ b/scene/2d/skeleton_2d.cpp
@@ -438,14 +438,14 @@ TypedArray<String> Bone2D::get_configuration_warnings() const {
TypedArray<String> warnings = Node::get_configuration_warnings();
if (!skeleton) {
if (parent_bone) {
- warnings.push_back(TTR("This Bone2D chain should end at a Skeleton2D node."));
+ warnings.push_back(RTR("This Bone2D chain should end at a Skeleton2D node."));
} else {
- warnings.push_back(TTR("A Bone2D only works with a Skeleton2D or another Bone2D as parent node."));
+ warnings.push_back(RTR("A Bone2D only works with a Skeleton2D or another Bone2D as parent node."));
}
}
if (rest == Transform2D(0, 0, 0, 0, 0, 0)) {
- warnings.push_back(TTR("This bone lacks a proper REST pose. Go to the Skeleton2D node and set one."));
+ warnings.push_back(RTR("This bone lacks a proper REST pose. Go to the Skeleton2D node and set one."));
}
return warnings;
diff --git a/scene/2d/tile_map.cpp b/scene/2d/tile_map.cpp
index db33e6561a..cbbadf1178 100644
--- a/scene/2d/tile_map.cpp
+++ b/scene/2d/tile_map.cpp
@@ -3586,7 +3586,7 @@ TypedArray<String> TileMap::get_configuration_warnings() const {
// Check if we have a non-sorted layer in a Z-index with a Y-sorted layer.
for (int layer = 0; layer < (int)layers.size(); layer++) {
if (!layers[layer].y_sort_enabled && y_sorted_z_index.has(layers[layer].z_index)) {
- warnings.push_back(TTR("A Y-sorted layer has the same Z-index value as a not Y-sorted layer.\nThis may lead to unwanted behaviors, as a layer that is not Y-sorted will be Y-sorted as a whole with tiles from Y-sorted layers."));
+ warnings.push_back(RTR("A Y-sorted layer has the same Z-index value as a not Y-sorted layer.\nThis may lead to unwanted behaviors, as a layer that is not Y-sorted will be Y-sorted as a whole with tiles from Y-sorted layers."));
break;
}
}
diff --git a/scene/3d/bone_attachment_3d.cpp b/scene/3d/bone_attachment_3d.cpp
index 8623c7d8b6..d0aeffb166 100644
--- a/scene/3d/bone_attachment_3d.cpp
+++ b/scene/3d/bone_attachment_3d.cpp
@@ -107,17 +107,17 @@ TypedArray<String> BoneAttachment3D::get_configuration_warnings() const {
if (use_external_skeleton) {
if (external_skeleton_node_cache.is_null()) {
- warnings.append(TTR("External Skeleton3D node not set! Please set a path to an external Skeleton3D node."));
+ warnings.push_back(RTR("External Skeleton3D node not set! Please set a path to an external Skeleton3D node."));
}
} else {
Skeleton3D *parent = Object::cast_to<Skeleton3D>(get_parent());
if (!parent) {
- warnings.append(TTR("Parent node is not a Skeleton3D node! Please use an external Skeleton3D if you intend to use the BoneAttachment3D without it being a child of a Skeleton3D node."));
+ warnings.push_back(RTR("Parent node is not a Skeleton3D node! Please use an external Skeleton3D if you intend to use the BoneAttachment3D without it being a child of a Skeleton3D node."));
}
}
if (bone_idx == -1) {
- warnings.append(TTR("BoneAttachment3D node is not bound to any bones! Please select a bone to attach this node."));
+ warnings.push_back(RTR("BoneAttachment3D node is not bound to any bones! Please select a bone to attach this node."));
}
return warnings;
diff --git a/scene/3d/collision_object_3d.cpp b/scene/3d/collision_object_3d.cpp
index 3ab09550fa..40c09593a4 100644
--- a/scene/3d/collision_object_3d.cpp
+++ b/scene/3d/collision_object_3d.cpp
@@ -689,7 +689,7 @@ TypedArray<String> CollisionObject3D::get_configuration_warnings() const {
TypedArray<String> warnings = Node::get_configuration_warnings();
if (shapes.is_empty()) {
- warnings.push_back(TTR("This node has no shape, so it can't collide or interact with other objects.\nConsider adding a CollisionShape3D or CollisionPolygon3D as a child to define its shape."));
+ warnings.push_back(RTR("This node has no shape, so it can't collide or interact with other objects.\nConsider adding a CollisionShape3D or CollisionPolygon3D as a child to define its shape."));
}
return warnings;
diff --git a/scene/3d/collision_polygon_3d.cpp b/scene/3d/collision_polygon_3d.cpp
index 88ef44b71f..5a286d7b55 100644
--- a/scene/3d/collision_polygon_3d.cpp
+++ b/scene/3d/collision_polygon_3d.cpp
@@ -171,11 +171,11 @@ TypedArray<String> CollisionPolygon3D::get_configuration_warnings() const {
TypedArray<String> warnings = Node::get_configuration_warnings();
if (!Object::cast_to<CollisionObject3D>(get_parent())) {
- warnings.push_back(TTR("CollisionPolygon3D only serves to provide a collision shape to a CollisionObject3D derived node. Please only use it as a child of Area3D, StaticBody3D, RigidDynamicBody3D, CharacterBody3D, etc. to give them a shape."));
+ warnings.push_back(RTR("CollisionPolygon3D only serves to provide a collision shape to a CollisionObject3D derived node. Please only use it as a child of Area3D, StaticBody3D, RigidDynamicBody3D, CharacterBody3D, etc. to give them a shape."));
}
if (polygon.is_empty()) {
- warnings.push_back(TTR("An empty CollisionPolygon3D has no effect on collision."));
+ warnings.push_back(RTR("An empty CollisionPolygon3D has no effect on collision."));
}
return warnings;
diff --git a/scene/3d/collision_shape_3d.cpp b/scene/3d/collision_shape_3d.cpp
index e1a0e1427b..d28e11a2e9 100644
--- a/scene/3d/collision_shape_3d.cpp
+++ b/scene/3d/collision_shape_3d.cpp
@@ -118,17 +118,17 @@ TypedArray<String> CollisionShape3D::get_configuration_warnings() const {
TypedArray<String> warnings = Node::get_configuration_warnings();
if (!Object::cast_to<CollisionObject3D>(get_parent())) {
- warnings.push_back(TTR("CollisionShape3D only serves to provide a collision shape to a CollisionObject3D derived node. Please only use it as a child of Area3D, StaticBody3D, RigidDynamicBody3D, CharacterBody3D, etc. to give them a shape."));
+ warnings.push_back(RTR("CollisionShape3D only serves to provide a collision shape to a CollisionObject3D derived node. Please only use it as a child of Area3D, StaticBody3D, RigidDynamicBody3D, CharacterBody3D, etc. to give them a shape."));
}
if (!shape.is_valid()) {
- warnings.push_back(TTR("A shape must be provided for CollisionShape3D to function. Please create a shape resource for it."));
+ warnings.push_back(RTR("A shape must be provided for CollisionShape3D to function. Please create a shape resource for it."));
}
if (shape.is_valid() &&
Object::cast_to<RigidDynamicBody3D>(get_parent()) &&
Object::cast_to<ConcavePolygonShape3D>(*shape)) {
- warnings.push_back(TTR("ConcavePolygonShape3D doesn't support RigidDynamicBody3D in another mode than static."));
+ warnings.push_back(RTR("ConcavePolygonShape3D doesn't support RigidDynamicBody3D in another mode than static."));
}
return warnings;
diff --git a/scene/3d/collision_shape_3d.h b/scene/3d/collision_shape_3d.h
index bd5595f974..fbcabf6529 100644
--- a/scene/3d/collision_shape_3d.h
+++ b/scene/3d/collision_shape_3d.h
@@ -37,7 +37,6 @@
class CollisionObject3D;
class CollisionShape3D : public Node3D {
GDCLASS(CollisionShape3D, Node3D);
- OBJ_CATEGORY("3D Physics Nodes");
Ref<Shape3D> shape;
diff --git a/scene/3d/cpu_particles_3d.cpp b/scene/3d/cpu_particles_3d.cpp
index 8c8596fc2e..0befda4168 100644
--- a/scene/3d/cpu_particles_3d.cpp
+++ b/scene/3d/cpu_particles_3d.cpp
@@ -206,11 +206,11 @@ TypedArray<String> CPUParticles3D::get_configuration_warnings() const {
anim_material_found = anim_material_found || (spat && spat->get_billboard_mode() == StandardMaterial3D::BILLBOARD_PARTICLES);
if (!mesh_found) {
- warnings.push_back(TTR("Nothing is visible because no mesh has been assigned."));
+ warnings.push_back(RTR("Nothing is visible because no mesh has been assigned."));
}
if (!anim_material_found && (get_param_max(PARAM_ANIM_SPEED) != 0.0 || get_param_max(PARAM_ANIM_OFFSET) != 0.0 || get_param_curve(PARAM_ANIM_SPEED).is_valid() || get_param_curve(PARAM_ANIM_OFFSET).is_valid())) {
- warnings.push_back(TTR("CPUParticles3D animation requires the usage of a StandardMaterial3D whose Billboard Mode is set to \"Particle Billboard\"."));
+ warnings.push_back(RTR("CPUParticles3D animation requires the usage of a StandardMaterial3D whose Billboard Mode is set to \"Particle Billboard\"."));
}
return warnings;
diff --git a/scene/3d/decal.cpp b/scene/3d/decal.cpp
index 8d0edfd1f3..a50f75f127 100644
--- a/scene/3d/decal.cpp
+++ b/scene/3d/decal.cpp
@@ -163,15 +163,15 @@ TypedArray<String> Decal::get_configuration_warnings() const {
TypedArray<String> warnings = Node::get_configuration_warnings();
if (textures[TEXTURE_ALBEDO].is_null() && textures[TEXTURE_NORMAL].is_null() && textures[TEXTURE_ORM].is_null() && textures[TEXTURE_EMISSION].is_null()) {
- warnings.push_back(TTR("The decal has no textures loaded into any of its texture properties, and will therefore not be visible."));
+ warnings.push_back(RTR("The decal has no textures loaded into any of its texture properties, and will therefore not be visible."));
}
if ((textures[TEXTURE_NORMAL].is_valid() || textures[TEXTURE_ORM].is_valid()) && textures[TEXTURE_ALBEDO].is_null()) {
- warnings.push_back(TTR("The decal has a Normal and/or ORM texture, but no Albedo texture is set.\nAn Albedo texture with an alpha channel is required to blend the normal/ORM maps onto the underlying surface.\nIf you don't want the Albedo texture to be visible, set Albedo Mix to 0."));
+ warnings.push_back(RTR("The decal has a Normal and/or ORM texture, but no Albedo texture is set.\nAn Albedo texture with an alpha channel is required to blend the normal/ORM maps onto the underlying surface.\nIf you don't want the Albedo texture to be visible, set Albedo Mix to 0."));
}
if (cull_mask == 0) {
- warnings.push_back(TTR("The decal's Cull Mask has no bits enabled, which means the decal will not paint objects on any layer.\nTo resolve this, enable at least one bit in the Cull Mask property."));
+ warnings.push_back(RTR("The decal's Cull Mask has no bits enabled, which means the decal will not paint objects on any layer.\nTo resolve this, enable at least one bit in the Cull Mask property."));
}
return warnings;
diff --git a/scene/3d/gpu_particles_3d.cpp b/scene/3d/gpu_particles_3d.cpp
index 9fe2210de6..33ce9fc6fe 100644
--- a/scene/3d/gpu_particles_3d.cpp
+++ b/scene/3d/gpu_particles_3d.cpp
@@ -273,7 +273,7 @@ TypedArray<String> GPUParticles3D::get_configuration_warnings() const {
TypedArray<String> warnings = Node::get_configuration_warnings();
if (RenderingServer::get_singleton()->is_low_end()) {
- warnings.push_back(TTR("GPU-based particles are not supported by the OpenGL video driver.\nUse the CPUParticles3D node instead. You can use the \"Convert to CPUParticles3D\" option for this purpose."));
+ warnings.push_back(RTR("GPU-based particles are not supported by the OpenGL video driver.\nUse the CPUParticles3D node instead. You can use the \"Convert to CPUParticles3D\" option for this purpose."));
}
bool meshes_found = false;
@@ -300,17 +300,17 @@ TypedArray<String> GPUParticles3D::get_configuration_warnings() const {
}
if (!meshes_found) {
- warnings.push_back(TTR("Nothing is visible because meshes have not been assigned to draw passes."));
+ warnings.push_back(RTR("Nothing is visible because meshes have not been assigned to draw passes."));
}
if (process_material.is_null()) {
- warnings.push_back(TTR("A material to process the particles is not assigned, so no behavior is imprinted."));
+ warnings.push_back(RTR("A material to process the particles is not assigned, so no behavior is imprinted."));
} else {
const ParticlesMaterial *process = Object::cast_to<ParticlesMaterial>(process_material.ptr());
if (!anim_material_found && process &&
(process->get_param_max(ParticlesMaterial::PARAM_ANIM_SPEED) != 0.0 || process->get_param_max(ParticlesMaterial::PARAM_ANIM_OFFSET) != 0.0 ||
process->get_param_texture(ParticlesMaterial::PARAM_ANIM_SPEED).is_valid() || process->get_param_texture(ParticlesMaterial::PARAM_ANIM_OFFSET).is_valid())) {
- warnings.push_back(TTR("Particles animation requires the usage of a BaseMaterial3D whose Billboard Mode is set to \"Particle Billboard\"."));
+ warnings.push_back(RTR("Particles animation requires the usage of a BaseMaterial3D whose Billboard Mode is set to \"Particle Billboard\"."));
}
}
@@ -352,15 +352,15 @@ TypedArray<String> GPUParticles3D::get_configuration_warnings() const {
}
if (dp_count && skin.is_valid()) {
- warnings.push_back(TTR("Using Trail meshes with a skin causes Skin to override Trail poses. Suggest removing the Skin."));
+ warnings.push_back(RTR("Using Trail meshes with a skin causes Skin to override Trail poses. Suggest removing the Skin."));
} else if (dp_count == 0 && skin.is_null()) {
- warnings.push_back(TTR("Trails active, but neither Trail meshes or a Skin were found."));
+ warnings.push_back(RTR("Trails active, but neither Trail meshes or a Skin were found."));
} else if (dp_count > 1) {
- warnings.push_back(TTR("Only one Trail mesh is supported. If you want to use more than a single mesh, a Skin is needed (see documentation)."));
+ warnings.push_back(RTR("Only one Trail mesh is supported. If you want to use more than a single mesh, a Skin is needed (see documentation)."));
}
if ((dp_count || !skin.is_null()) && (missing_trails || no_materials)) {
- warnings.push_back(TTR("Trails enabled, but one or more mesh materials are either missing or not set for trails rendering."));
+ warnings.push_back(RTR("Trails enabled, but one or more mesh materials are either missing or not set for trails rendering."));
}
}
diff --git a/scene/3d/joint_3d.cpp b/scene/3d/joint_3d.cpp
index ce7c0d8292..c22e3f6d91 100644
--- a/scene/3d/joint_3d.cpp
+++ b/scene/3d/joint_3d.cpp
@@ -76,15 +76,15 @@ void Joint3D::_update_joint(bool p_only_free) {
PhysicsBody3D *body_b = Object::cast_to<PhysicsBody3D>(node_b);
if (node_a && !body_a && node_b && !body_b) {
- warning = TTR("Node A and Node B must be PhysicsBody3Ds");
+ warning = RTR("Node A and Node B must be PhysicsBody3Ds");
} else if (node_a && !body_a) {
- warning = TTR("Node A must be a PhysicsBody3D");
+ warning = RTR("Node A must be a PhysicsBody3D");
} else if (node_b && !body_b) {
- warning = TTR("Node B must be a PhysicsBody3D");
+ warning = RTR("Node B must be a PhysicsBody3D");
} else if (!body_a && !body_b) {
- warning = TTR("Joint is not connected to any PhysicsBody3Ds");
+ warning = RTR("Joint is not connected to any PhysicsBody3Ds");
} else if (body_a == body_b) {
- warning = TTR("Node A and Node B must be different PhysicsBody3Ds");
+ warning = RTR("Node A and Node B must be different PhysicsBody3Ds");
} else {
warning = String();
}
diff --git a/scene/3d/light_3d.cpp b/scene/3d/light_3d.cpp
index 8396c23af7..c95806b2d0 100644
--- a/scene/3d/light_3d.cpp
+++ b/scene/3d/light_3d.cpp
@@ -497,7 +497,7 @@ TypedArray<String> OmniLight3D::get_configuration_warnings() const {
TypedArray<String> warnings = Node::get_configuration_warnings();
if (!has_shadow() && get_projector().is_valid()) {
- warnings.push_back(TTR("Projector texture only works with shadows active."));
+ warnings.push_back(RTR("Projector texture only works with shadows active."));
}
return warnings;
@@ -527,11 +527,11 @@ TypedArray<String> SpotLight3D::get_configuration_warnings() const {
TypedArray<String> warnings = Node::get_configuration_warnings();
if (has_shadow() && get_param(PARAM_SPOT_ANGLE) >= 90.0) {
- warnings.push_back(TTR("A SpotLight3D with an angle wider than 90 degrees cannot cast shadows."));
+ warnings.push_back(RTR("A SpotLight3D with an angle wider than 90 degrees cannot cast shadows."));
}
if (!has_shadow() && get_projector().is_valid()) {
- warnings.push_back(TTR("Projector texture only works with shadows active."));
+ warnings.push_back(RTR("Projector texture only works with shadows active."));
}
return warnings;
diff --git a/scene/3d/light_3d.h b/scene/3d/light_3d.h
index 81c25f01c3..383fa644e5 100644
--- a/scene/3d/light_3d.h
+++ b/scene/3d/light_3d.h
@@ -35,7 +35,6 @@
class Light3D : public VisualInstance3D {
GDCLASS(Light3D, VisualInstance3D);
- OBJ_CATEGORY("3D Light Nodes");
public:
enum Param {
diff --git a/scene/3d/lightmap_gi.cpp b/scene/3d/lightmap_gi.cpp
index c74654b4bd..191a04b6a0 100644
--- a/scene/3d/lightmap_gi.cpp
+++ b/scene/3d/lightmap_gi.cpp
@@ -635,7 +635,7 @@ LightmapGI::BakeError LightmapGI::bake(Node *p_from_node, String p_image_data_pa
bsud.to_percent = 0.8;
if (p_bake_step) {
- p_bake_step(0.0, TTR("Finding meshes, lights and probes"), p_bake_userdata, true);
+ p_bake_step(0.0, RTR("Finding meshes, lights and probes"), p_bake_userdata, true);
}
/* STEP 1, FIND MESHES, LIGHTS AND PROBES */
Vector<Lightmapper::MeshData> mesh_data;
@@ -655,7 +655,7 @@ LightmapGI::BakeError LightmapGI::bake(Node *p_from_node, String p_image_data_pa
for (int m_i = 0; m_i < meshes_found.size(); m_i++) {
if (p_bake_step) {
float p = (float)(m_i) / meshes_found.size();
- p_bake_step(p * 0.1, vformat(TTR("Preparing geometry %d/%d"), m_i, meshes_found.size()), p_bake_userdata, false);
+ p_bake_step(p * 0.1, vformat(RTR("Preparing geometry %d/%d"), m_i, meshes_found.size()), p_bake_userdata, false);
}
MeshesFound &mf = meshes_found.write[m_i];
@@ -790,7 +790,7 @@ LightmapGI::BakeError LightmapGI::bake(Node *p_from_node, String p_image_data_pa
/* STEP 2, CREATE PROBES */
if (p_bake_step) {
- p_bake_step(0.3, TTR("Creating probes"), p_bake_userdata, true);
+ p_bake_step(0.3, RTR("Creating probes"), p_bake_userdata, true);
}
//bounds need to include the user probes
@@ -832,7 +832,7 @@ LightmapGI::BakeError LightmapGI::bake(Node *p_from_node, String p_image_data_pa
for (int i = 0; i < mesh_data.size(); i++) {
if (p_bake_step) {
float p = (float)(i) / mesh_data.size();
- p_bake_step(0.3 + p * 0.1, vformat(TTR("Creating probes from mesh %d/%d"), i, mesh_data.size()), p_bake_userdata, false);
+ p_bake_step(0.3 + p * 0.1, vformat(RTR("Creating probes from mesh %d/%d"), i, mesh_data.size()), p_bake_userdata, false);
}
for (int j = 0; j < mesh_data[i].points.size(); j += 3) {
@@ -873,7 +873,7 @@ LightmapGI::BakeError LightmapGI::bake(Node *p_from_node, String p_image_data_pa
// Add everything to lightmapper
if (p_bake_step) {
- p_bake_step(0.4, TTR("Preparing Lightmapper"), p_bake_userdata, true);
+ p_bake_step(0.4, RTR("Preparing Lightmapper"), p_bake_userdata, true);
}
{
@@ -907,7 +907,7 @@ LightmapGI::BakeError LightmapGI::bake(Node *p_from_node, String p_image_data_pa
// Add everything to lightmapper
if (environment_mode != ENVIRONMENT_MODE_DISABLED) {
if (p_bake_step) {
- p_bake_step(4.1, TTR("Preparing Environment"), p_bake_userdata, true);
+ p_bake_step(4.1, RTR("Preparing Environment"), p_bake_userdata, true);
}
environment_transform = get_global_transform().basis;
@@ -1046,7 +1046,7 @@ LightmapGI::BakeError LightmapGI::bake(Node *p_from_node, String p_image_data_pa
//Obtain solved simplices
if (p_bake_step) {
- p_bake_step(0.8, TTR("Generating Probe Volumes"), p_bake_userdata, true);
+ p_bake_step(0.8, RTR("Generating Probe Volumes"), p_bake_userdata, true);
}
Vector<Delaunay3D::OutputSimplex> solved_simplices = Delaunay3D::tetrahedralize(points);
@@ -1130,7 +1130,7 @@ LightmapGI::BakeError LightmapGI::bake(Node *p_from_node, String p_image_data_pa
}
if (p_bake_step) {
- p_bake_step(0.9, TTR("Generating Probe Acceleration Structures"), p_bake_userdata, true);
+ p_bake_step(0.9, RTR("Generating Probe Acceleration Structures"), p_bake_userdata, true);
}
_compute_bsp_tree(points, bsp_planes, planes_tested, bsp_simplices, bsp_simplex_indices, bsp_nodes);
diff --git a/scene/3d/navigation_agent_3d.cpp b/scene/3d/navigation_agent_3d.cpp
index 4628d03466..86c11b3789 100644
--- a/scene/3d/navigation_agent_3d.cpp
+++ b/scene/3d/navigation_agent_3d.cpp
@@ -263,7 +263,7 @@ TypedArray<String> NavigationAgent3D::get_configuration_warnings() const {
TypedArray<String> warnings = Node::get_configuration_warnings();
if (!Object::cast_to<Node3D>(get_parent())) {
- warnings.push_back(TTR("The NavigationAgent3D can be used only under a spatial node."));
+ warnings.push_back(RTR("The NavigationAgent3D can be used only under a spatial node."));
}
return warnings;
diff --git a/scene/3d/navigation_obstacle_3d.cpp b/scene/3d/navigation_obstacle_3d.cpp
index 308545b2cc..78dbecc0c5 100644
--- a/scene/3d/navigation_obstacle_3d.cpp
+++ b/scene/3d/navigation_obstacle_3d.cpp
@@ -107,7 +107,7 @@ TypedArray<String> NavigationObstacle3D::get_configuration_warnings() const {
TypedArray<String> warnings = Node::get_configuration_warnings();
if (!Object::cast_to<Node3D>(get_parent())) {
- warnings.push_back(TTR("The NavigationObstacle3D only serves to provide collision avoidance to a spatial object."));
+ warnings.push_back(RTR("The NavigationObstacle3D only serves to provide collision avoidance to a spatial object."));
}
return warnings;
diff --git a/scene/3d/navigation_region_3d.cpp b/scene/3d/navigation_region_3d.cpp
index 8f0fd8706d..215e18869a 100644
--- a/scene/3d/navigation_region_3d.cpp
+++ b/scene/3d/navigation_region_3d.cpp
@@ -181,7 +181,7 @@ TypedArray<String> NavigationRegion3D::get_configuration_warnings() const {
if (is_visible_in_tree() && is_inside_tree()) {
if (!navmesh.is_valid()) {
- warnings.push_back(TTR("A NavigationMesh resource must be set or created for this node to work."));
+ warnings.push_back(RTR("A NavigationMesh resource must be set or created for this node to work."));
}
}
diff --git a/scene/3d/node_3d.h b/scene/3d/node_3d.h
index 65d0e071cf..6d857a83ea 100644
--- a/scene/3d/node_3d.h
+++ b/scene/3d/node_3d.h
@@ -50,7 +50,6 @@ public:
class Node3D : public Node {
GDCLASS(Node3D, Node);
- OBJ_CATEGORY("3D");
public:
enum RotationEditMode {
diff --git a/scene/3d/occluder_instance_3d.cpp b/scene/3d/occluder_instance_3d.cpp
index b82f05544b..f848eaab2e 100644
--- a/scene/3d/occluder_instance_3d.cpp
+++ b/scene/3d/occluder_instance_3d.cpp
@@ -686,25 +686,25 @@ TypedArray<String> OccluderInstance3D::get_configuration_warnings() const {
TypedArray<String> warnings = Node::get_configuration_warnings();
if (!bool(GLOBAL_GET("rendering/occlusion_culling/use_occlusion_culling"))) {
- warnings.push_back(TTR("Occlusion culling is disabled in the Project Settings, which means occlusion culling won't be performed in the root viewport.\nTo resolve this, open the Project Settings and enable Rendering > Occlusion Culling > Use Occlusion Culling."));
+ warnings.push_back(RTR("Occlusion culling is disabled in the Project Settings, which means occlusion culling won't be performed in the root viewport.\nTo resolve this, open the Project Settings and enable Rendering > Occlusion Culling > Use Occlusion Culling."));
}
if (bake_mask == 0) {
- warnings.push_back(TTR("The Bake Mask has no bits enabled, which means baking will not produce any occluder meshes for this OccluderInstance3D.\nTo resolve this, enable at least one bit in the Bake Mask property."));
+ warnings.push_back(RTR("The Bake Mask has no bits enabled, which means baking will not produce any occluder meshes for this OccluderInstance3D.\nTo resolve this, enable at least one bit in the Bake Mask property."));
}
if (occluder.is_null()) {
- warnings.push_back(TTR("No occluder mesh is defined in the Occluder property, so no occlusion culling will be performed using this OccluderInstance3D.\nTo resolve this, set the Occluder property to one of the primitive occluder types or bake the scene meshes by selecting the OccluderInstance3D and pressing the Bake Occluders button at the top of the 3D editor viewport."));
+ warnings.push_back(RTR("No occluder mesh is defined in the Occluder property, so no occlusion culling will be performed using this OccluderInstance3D.\nTo resolve this, set the Occluder property to one of the primitive occluder types or bake the scene meshes by selecting the OccluderInstance3D and pressing the Bake Occluders button at the top of the 3D editor viewport."));
} else {
Ref<ArrayOccluder3D> arr_occluder = occluder;
if (arr_occluder.is_valid() && arr_occluder->get_indices().size() < 3) {
// Setting a new ArrayOccluder3D from the inspector will create an empty occluder,
// so warn the user about this.
- warnings.push_back(TTR("The occluder mesh has less than 3 vertices, so no occlusion culling will be performed using this OccluderInstance3D.\nTo generate a proper occluder mesh, select the OccluderInstance3D then use the Bake Occluders button at the top of the 3D editor viewport."));
+ warnings.push_back(RTR("The occluder mesh has less than 3 vertices, so no occlusion culling will be performed using this OccluderInstance3D.\nTo generate a proper occluder mesh, select the OccluderInstance3D then use the Bake Occluders button at the top of the 3D editor viewport."));
}
Ref<PolygonOccluder3D> poly_occluder = occluder;
if (poly_occluder.is_valid() && poly_occluder->get_polygon().size() < 3) {
- warnings.push_back(TTR("The polygon occluder has less than 3 vertices, so no occlusion culling will be performed using this OccluderInstance3D.\nVertices can be added in the inspector or using the polygon editing tools at the top of the 3D editor viewport."));
+ warnings.push_back(RTR("The polygon occluder has less than 3 vertices, so no occlusion culling will be performed using this OccluderInstance3D.\nVertices can be added in the inspector or using the polygon editing tools at the top of the 3D editor viewport."));
}
}
diff --git a/scene/3d/path_3d.cpp b/scene/3d/path_3d.cpp
index 5fd28a6ff3..7a5cb26a29 100644
--- a/scene/3d/path_3d.cpp
+++ b/scene/3d/path_3d.cpp
@@ -253,11 +253,11 @@ TypedArray<String> PathFollow3D::get_configuration_warnings() const {
if (is_visible_in_tree() && is_inside_tree()) {
if (!Object::cast_to<Path3D>(get_parent())) {
- warnings.push_back(TTR("PathFollow3D only works when set as a child of a Path3D node."));
+ warnings.push_back(RTR("PathFollow3D only works when set as a child of a Path3D node."));
} else {
Path3D *path = Object::cast_to<Path3D>(get_parent());
if (path->get_curve().is_valid() && !path->get_curve()->is_up_vector_enabled() && rotation_mode == ROTATION_ORIENTED) {
- warnings.push_back(TTR("PathFollow3D's ROTATION_ORIENTED requires \"Up Vector\" to be enabled in its parent Path3D's Curve resource."));
+ warnings.push_back(RTR("PathFollow3D's ROTATION_ORIENTED requires \"Up Vector\" to be enabled in its parent Path3D's Curve resource."));
}
}
}
diff --git a/scene/3d/physics_body_3d.cpp b/scene/3d/physics_body_3d.cpp
index 47baa9e023..dee76aef10 100644
--- a/scene/3d/physics_body_3d.cpp
+++ b/scene/3d/physics_body_3d.cpp
@@ -988,7 +988,7 @@ TypedArray<String> RigidDynamicBody3D::get_configuration_warnings() const {
TypedArray<String> warnings = Node::get_configuration_warnings();
if (ABS(t.basis.get_axis(0).length() - 1.0) > 0.05 || ABS(t.basis.get_axis(1).length() - 1.0) > 0.05 || ABS(t.basis.get_axis(2).length() - 1.0) > 0.05) {
- warnings.push_back(TTR("Size changes to RigidDynamicBody will be overridden by the physics engine when running.\nChange the size in children collision shapes instead."));
+ warnings.push_back(RTR("Size changes to RigidDynamicBody will be overridden by the physics engine when running.\nChange the size in children collision shapes instead."));
}
return warnings;
@@ -2006,7 +2006,7 @@ void CharacterBody3D::_bind_methods() {
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "floor_block_on_wall"), "set_floor_block_on_wall_enabled", "is_floor_block_on_wall_enabled");
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "floor_max_angle", PROPERTY_HINT_RANGE, "0,180,0.1,radians"), "set_floor_max_angle", "get_floor_max_angle");
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "floor_snap_length", PROPERTY_HINT_RANGE, "0,1,0.01,or_greater"), "set_floor_snap_length", "get_floor_snap_length");
- ADD_GROUP("Moving platform", "moving_platform");
+ ADD_GROUP("Moving Platform", "moving_platform");
ADD_PROPERTY(PropertyInfo(Variant::INT, "moving_platform_apply_velocity_on_leave", PROPERTY_HINT_ENUM, "Always,Upward Only,Never", PROPERTY_USAGE_DEFAULT), "set_moving_platform_apply_velocity_on_leave", "get_moving_platform_apply_velocity_on_leave");
ADD_PROPERTY(PropertyInfo(Variant::INT, "moving_platform_floor_layers", PROPERTY_HINT_LAYERS_2D_PHYSICS), "set_moving_platform_floor_layers", "get_moving_platform_floor_layers");
ADD_PROPERTY(PropertyInfo(Variant::INT, "moving_platform_wall_layers", PROPERTY_HINT_LAYERS_2D_PHYSICS), "set_moving_platform_wall_layers", "get_moving_platform_wall_layers");
diff --git a/scene/3d/remote_transform_3d.cpp b/scene/3d/remote_transform_3d.cpp
index 8b714850d6..9979052385 100644
--- a/scene/3d/remote_transform_3d.cpp
+++ b/scene/3d/remote_transform_3d.cpp
@@ -182,7 +182,7 @@ TypedArray<String> RemoteTransform3D::get_configuration_warnings() const {
TypedArray<String> warnings = Node::get_configuration_warnings();
if (!has_node(remote_node) || !Object::cast_to<Node3D>(get_node(remote_node))) {
- warnings.push_back(TTR("The \"Remote Path\" property must point to a valid Node3D or Node3D-derived node to work."));
+ warnings.push_back(RTR("The \"Remote Path\" property must point to a valid Node3D or Node3D-derived node to work."));
}
return warnings;
diff --git a/scene/3d/skeleton_3d.cpp b/scene/3d/skeleton_3d.cpp
index 598897456d..783edf7fc6 100644
--- a/scene/3d/skeleton_3d.cpp
+++ b/scene/3d/skeleton_3d.cpp
@@ -32,7 +32,6 @@
#include "core/object/message_queue.h"
#include "core/variant/type_info.h"
-#include "editor/plugins/skeleton_3d_editor_plugin.h"
#include "scene/3d/physics_body_3d.h"
#include "scene/resources/skeleton_modification_3d.h"
#include "scene/resources/surface_tool.h"
diff --git a/scene/3d/soft_dynamic_body_3d.cpp b/scene/3d/soft_dynamic_body_3d.cpp
index eafb74f203..6724754214 100644
--- a/scene/3d/soft_dynamic_body_3d.cpp
+++ b/scene/3d/soft_dynamic_body_3d.cpp
@@ -378,12 +378,12 @@ TypedArray<String> SoftDynamicBody3D::get_configuration_warnings() const {
TypedArray<String> warnings = Node::get_configuration_warnings();
if (mesh.is_null()) {
- warnings.push_back(TTR("This body will be ignored until you set a mesh."));
+ warnings.push_back(RTR("This body will be ignored until you set a mesh."));
}
Transform3D t = get_transform();
if ((ABS(t.basis.get_axis(0).length() - 1.0) > 0.05 || ABS(t.basis.get_axis(1).length() - 1.0) > 0.05 || ABS(t.basis.get_axis(2).length() - 1.0) > 0.05)) {
- warnings.push_back(TTR("Size changes to SoftDynamicBody3D will be overridden by the physics engine when running.\nChange the size in children collision shapes instead."));
+ warnings.push_back(RTR("Size changes to SoftDynamicBody3D will be overridden by the physics engine when running.\nChange the size in children collision shapes instead."));
}
return warnings;
diff --git a/scene/3d/sprite_3d.cpp b/scene/3d/sprite_3d.cpp
index 514bd4aba0..8d813e8b2b 100644
--- a/scene/3d/sprite_3d.cpp
+++ b/scene/3d/sprite_3d.cpp
@@ -1200,7 +1200,7 @@ StringName AnimatedSprite3D::get_animation() const {
TypedArray<String> AnimatedSprite3D::get_configuration_warnings() const {
TypedArray<String> warnings = SpriteBase3D::get_configuration_warnings();
if (frames.is_null()) {
- warnings.push_back(TTR("A SpriteFrames resource must be created or set in the \"Frames\" property in order for AnimatedSprite3D to display frames."));
+ warnings.push_back(RTR("A SpriteFrames resource must be created or set in the \"Frames\" property in order for AnimatedSprite3D to display frames."));
}
return warnings;
diff --git a/scene/3d/vehicle_body_3d.cpp b/scene/3d/vehicle_body_3d.cpp
index 8d02d26fc4..f5a451ca04 100644
--- a/scene/3d/vehicle_body_3d.cpp
+++ b/scene/3d/vehicle_body_3d.cpp
@@ -109,7 +109,7 @@ TypedArray<String> VehicleWheel3D::get_configuration_warnings() const {
TypedArray<String> warnings = Node::get_configuration_warnings();
if (!Object::cast_to<VehicleBody3D>(get_parent())) {
- warnings.push_back(TTR("VehicleWheel3D serves to provide a wheel system to a VehicleBody3D. Please use it as a child of a VehicleBody3D."));
+ warnings.push_back(RTR("VehicleWheel3D serves to provide a wheel system to a VehicleBody3D. Please use it as a child of a VehicleBody3D."));
}
return warnings;
diff --git a/scene/3d/visual_instance_3d.cpp b/scene/3d/visual_instance_3d.cpp
index b8a68cdca9..669017c4b4 100644
--- a/scene/3d/visual_instance_3d.cpp
+++ b/scene/3d/visual_instance_3d.cpp
@@ -389,15 +389,15 @@ TypedArray<String> GeometryInstance3D::get_configuration_warnings() const {
TypedArray<String> warnings = Node::get_configuration_warnings();
if (!Math::is_zero_approx(visibility_range_end) && visibility_range_end <= visibility_range_begin) {
- warnings.push_back(TTR("The GeometryInstance3D visibility range's End distance is set to a non-zero value, but is lower than the Begin distance.\nThis means the GeometryInstance3D will never be visible.\nTo resolve this, set the End distance to 0 or to a value greater than the Begin distance."));
+ warnings.push_back(RTR("The GeometryInstance3D visibility range's End distance is set to a non-zero value, but is lower than the Begin distance.\nThis means the GeometryInstance3D will never be visible.\nTo resolve this, set the End distance to 0 or to a value greater than the Begin distance."));
}
if ((visibility_range_fade_mode == VISIBILITY_RANGE_FADE_SELF || visibility_range_fade_mode == VISIBILITY_RANGE_FADE_DEPENDENCIES) && !Math::is_zero_approx(visibility_range_begin) && Math::is_zero_approx(visibility_range_begin_margin)) {
- warnings.push_back(TTR("The GeometryInstance3D is configured to fade in smoothly over distance, but the fade transition distance is set to 0.\nTo resolve this, increase Visibility Range Begin Margin above 0."));
+ warnings.push_back(RTR("The GeometryInstance3D is configured to fade in smoothly over distance, but the fade transition distance is set to 0.\nTo resolve this, increase Visibility Range Begin Margin above 0."));
}
if ((visibility_range_fade_mode == VISIBILITY_RANGE_FADE_SELF || visibility_range_fade_mode == VISIBILITY_RANGE_FADE_DEPENDENCIES) && !Math::is_zero_approx(visibility_range_end) && Math::is_zero_approx(visibility_range_end_margin)) {
- warnings.push_back(TTR("The GeometryInstance3D is configured to fade out smoothly over distance, but the fade transition distance is set to 0.\nTo resolve this, increase Visibility Range End Margin above 0."));
+ warnings.push_back(RTR("The GeometryInstance3D is configured to fade out smoothly over distance, but the fade transition distance is set to 0.\nTo resolve this, increase Visibility Range End Margin above 0."));
}
return warnings;
diff --git a/scene/3d/visual_instance_3d.h b/scene/3d/visual_instance_3d.h
index 1c044ba681..f8fd4378fe 100644
--- a/scene/3d/visual_instance_3d.h
+++ b/scene/3d/visual_instance_3d.h
@@ -35,7 +35,6 @@
class VisualInstance3D : public Node3D {
GDCLASS(VisualInstance3D, Node3D);
- OBJ_CATEGORY("3D Visual Nodes");
RID base;
RID instance;
diff --git a/scene/3d/voxel_gi.cpp b/scene/3d/voxel_gi.cpp
index 6840d15f78..29e495ce1b 100644
--- a/scene/3d/voxel_gi.cpp
+++ b/scene/3d/voxel_gi.cpp
@@ -454,9 +454,9 @@ TypedArray<String> VoxelGI::get_configuration_warnings() const {
TypedArray<String> warnings = Node::get_configuration_warnings();
if (RenderingServer::get_singleton()->is_low_end()) {
- warnings.push_back(TTR("VoxelGIs are not supported by the OpenGL video driver.\nUse a LightmapGI instead."));
+ warnings.push_back(RTR("VoxelGIs are not supported by the OpenGL video driver.\nUse a LightmapGI instead."));
} else if (probe_data.is_null()) {
- warnings.push_back(TTR("No VoxelGI data set, so this node is disabled. Bake static objects to enable GI."));
+ warnings.push_back(RTR("No VoxelGI data set, so this node is disabled. Bake static objects to enable GI."));
}
return warnings;
}
diff --git a/scene/3d/world_environment.cpp b/scene/3d/world_environment.cpp
index 300e761f39..f638644628 100644
--- a/scene/3d/world_environment.cpp
+++ b/scene/3d/world_environment.cpp
@@ -139,7 +139,7 @@ TypedArray<String> WorldEnvironment::get_configuration_warnings() const {
TypedArray<String> warnings = Node::get_configuration_warnings();
if (!environment.is_valid() && !camera_effects.is_valid()) {
- warnings.push_back(TTR("To have any visible effect, WorldEnvironment requires its \"Environment\" property to contain an Environment, its \"Camera Effects\" property to contain a CameraEffects resource, or both."));
+ warnings.push_back(RTR("To have any visible effect, WorldEnvironment requires its \"Environment\" property to contain an Environment, its \"Camera Effects\" property to contain a CameraEffects resource, or both."));
}
if (!is_inside_tree()) {
@@ -151,7 +151,7 @@ TypedArray<String> WorldEnvironment::get_configuration_warnings() const {
}
if (camera_effects.is_valid() && get_viewport()->find_world_3d()->get_camera_effects() != camera_effects) {
- warnings.push_back(TTR("Only one WorldEnvironment is allowed per scene (or set of instantiated scenes)."));
+ warnings.push_back(RTR("Only one WorldEnvironment is allowed per scene (or set of instantiated scenes)."));
}
return warnings;
diff --git a/scene/3d/xr_nodes.cpp b/scene/3d/xr_nodes.cpp
index efae81e048..3085d84643 100644
--- a/scene/3d/xr_nodes.cpp
+++ b/scene/3d/xr_nodes.cpp
@@ -95,7 +95,7 @@ TypedArray<String> XRCamera3D::get_configuration_warnings() const {
// must be child node of XROrigin3D!
XROrigin3D *origin = Object::cast_to<XROrigin3D>(get_parent());
if (origin == nullptr) {
- warnings.push_back(TTR("XRCamera3D must have an XROrigin3D node as its parent."));
+ warnings.push_back(RTR("XRCamera3D must have an XROrigin3D node as its parent."));
};
}
@@ -423,15 +423,15 @@ TypedArray<String> XRNode3D::get_configuration_warnings() const {
// must be child node of XROrigin!
XROrigin3D *origin = Object::cast_to<XROrigin3D>(get_parent());
if (origin == nullptr) {
- warnings.push_back(TTR("XRController3D must have an XROrigin3D node as its parent."));
+ warnings.push_back(RTR("XRController3D must have an XROrigin3D node as its parent."));
}
if (tracker_name == "") {
- warnings.push_back(TTR("No tracker name is set."));
+ warnings.push_back(RTR("No tracker name is set."));
}
if (pose_name == "") {
- warnings.push_back(TTR("No pose is set."));
+ warnings.push_back(RTR("No pose is set."));
}
}
@@ -589,13 +589,13 @@ TypedArray<String> XROrigin3D::get_configuration_warnings() const {
if (is_visible() && is_inside_tree()) {
if (tracked_camera == nullptr) {
- warnings.push_back(TTR("XROrigin3D requires an XRCamera3D child node."));
+ warnings.push_back(RTR("XROrigin3D requires an XRCamera3D child node."));
}
}
bool xr_enabled = GLOBAL_GET("xr/shaders/enabled");
if (!xr_enabled) {
- warnings.push_back(TTR("XR is not enabled in rendering project settings. Stereoscopic output is not supported unless this is enabled."));
+ warnings.push_back(RTR("XR is not enabled in rendering project settings. Stereoscopic output is not supported unless this is enabled."));
}
return warnings;
diff --git a/scene/animation/animation_player.cpp b/scene/animation/animation_player.cpp
index 402418e5a9..1ab2e2419e 100644
--- a/scene/animation/animation_player.cpp
+++ b/scene/animation/animation_player.cpp
@@ -1789,7 +1789,7 @@ Ref<AnimatedValuesBackup> AnimationPlayer::apply_reset(bool p_user_initiated) {
bool AnimationPlayer::can_apply_reset() const {
return has_animation(SceneStringNames::get_singleton()->RESET) && playback.assigned != SceneStringNames::get_singleton()->RESET;
}
-#endif
+#endif // TOOLS_ENABLED
void AnimationPlayer::_bind_methods() {
ClassDB::bind_method(D_METHOD("add_animation", "name", "animation"), &AnimationPlayer::add_animation);
diff --git a/scene/animation/animation_player.h b/scene/animation/animation_player.h
index c4fc69f370..a68f6b9d5b 100644
--- a/scene/animation/animation_player.h
+++ b/scene/animation/animation_player.h
@@ -62,7 +62,6 @@ public:
class AnimationPlayer : public Node {
GDCLASS(AnimationPlayer, Node);
- OBJ_CATEGORY("Animation Nodes");
public:
enum AnimationProcessCallback {
diff --git a/scene/animation/animation_tree.cpp b/scene/animation/animation_tree.cpp
index 309c2b5245..64c71697a5 100644
--- a/scene/animation/animation_tree.cpp
+++ b/scene/animation/animation_tree.cpp
@@ -1641,18 +1641,18 @@ TypedArray<String> AnimationTree::get_configuration_warnings() const {
TypedArray<String> warnings = Node::get_configuration_warnings();
if (!root.is_valid()) {
- warnings.push_back(TTR("No root AnimationNode for the graph is set."));
+ warnings.push_back(RTR("No root AnimationNode for the graph is set."));
}
if (!has_node(animation_player)) {
- warnings.push_back(TTR("Path to an AnimationPlayer node containing animations is not set."));
+ warnings.push_back(RTR("Path to an AnimationPlayer node containing animations is not set."));
} else {
AnimationPlayer *player = Object::cast_to<AnimationPlayer>(get_node(animation_player));
if (!player) {
- warnings.push_back(TTR("Path set for AnimationPlayer does not lead to an AnimationPlayer node."));
+ warnings.push_back(RTR("Path set for AnimationPlayer does not lead to an AnimationPlayer node."));
} else if (!player->has_node(player->get_root())) {
- warnings.push_back(TTR("The AnimationPlayer root node is not a valid node."));
+ warnings.push_back(RTR("The AnimationPlayer root node is not a valid node."));
}
}
diff --git a/scene/animation/tween.cpp b/scene/animation/tween.cpp
index a2fed718be..c8eb270a0a 100644
--- a/scene/animation/tween.cpp
+++ b/scene/animation/tween.cpp
@@ -741,12 +741,12 @@ bool PropertyTweener::step(float &r_delta) {
}
float time = MIN(elapsed_time - delay, duration);
- target_instance->set_indexed(property, tween->interpolate_variant(initial_val, delta_val, time, duration, trans_type, ease_type));
-
if (time < duration) {
+ target_instance->set_indexed(property, tween->interpolate_variant(initial_val, delta_val, time, duration, trans_type, ease_type));
r_delta = 0;
return true;
} else {
+ target_instance->set_indexed(property, final_val);
finished = true;
r_delta = elapsed_time - delay - duration;
emit_signal(SNAME("finished"));
@@ -895,8 +895,13 @@ bool MethodTweener::step(float &r_delta) {
return true;
}
+ Variant current_val;
float time = MIN(elapsed_time - delay, duration);
- Variant current_val = tween->interpolate_variant(initial_val, delta_val, time, duration, trans_type, ease_type);
+ if (time < duration) {
+ current_val = tween->interpolate_variant(initial_val, delta_val, time, duration, trans_type, ease_type);
+ } else {
+ current_val = final_val;
+ }
const Variant **argptr = (const Variant **)alloca(sizeof(Variant *));
argptr[0] = &current_val;
@@ -938,6 +943,7 @@ MethodTweener::MethodTweener(Callable p_callback, Variant p_from, Variant p_to,
callback = p_callback;
initial_val = p_from;
delta_val = tween->calculate_delta_value(p_from, p_to);
+ final_val = p_to;
duration = p_duration;
}
diff --git a/scene/animation/tween.h b/scene/animation/tween.h
index 5b0745b2b3..62c357dfb4 100644
--- a/scene/animation/tween.h
+++ b/scene/animation/tween.h
@@ -274,6 +274,7 @@ private:
Ref<Tween> tween;
Variant initial_val;
Variant delta_val;
+ Variant final_val;
Callable callback;
};
diff --git a/scene/gui/code_edit.cpp b/scene/gui/code_edit.cpp
index 3fa0cec302..2e87e71972 100644
--- a/scene/gui/code_edit.cpp
+++ b/scene/gui/code_edit.cpp
@@ -1782,10 +1782,10 @@ void CodeEdit::request_code_completion(bool p_force) {
/* Don't re-query if all existing options are quoted types, eg path, signal. */
bool ignored = code_completion_active && !code_completion_options.is_empty();
if (ignored) {
- ScriptCodeCompletionOption::Kind kind = ScriptCodeCompletionOption::KIND_PLAIN_TEXT;
- const ScriptCodeCompletionOption *previous_option = nullptr;
+ ScriptLanguage::CodeCompletionKind kind = ScriptLanguage::CODE_COMPLETION_KIND_PLAIN_TEXT;
+ const ScriptLanguage::CodeCompletionOption *previous_option = nullptr;
for (int i = 0; i < code_completion_options.size(); i++) {
- const ScriptCodeCompletionOption &current_option = code_completion_options[i];
+ const ScriptLanguage::CodeCompletionOption &current_option = code_completion_options[i];
if (!previous_option) {
previous_option = &current_option;
kind = current_option.kind;
@@ -1795,7 +1795,7 @@ void CodeEdit::request_code_completion(bool p_force) {
break;
}
}
- ignored = ignored && (kind == ScriptCodeCompletionOption::KIND_FILE_PATH || kind == ScriptCodeCompletionOption::KIND_NODE_PATH || kind == ScriptCodeCompletionOption::KIND_SIGNAL);
+ ignored = ignored && (kind == ScriptLanguage::CODE_COMPLETION_KIND_FILE_PATH || kind == ScriptLanguage::CODE_COMPLETION_KIND_NODE_PATH || kind == ScriptLanguage::CODE_COMPLETION_KIND_SIGNAL);
}
if (ignored) {
@@ -1818,8 +1818,8 @@ void CodeEdit::request_code_completion(bool p_force) {
}
void CodeEdit::add_code_completion_option(CodeCompletionKind p_type, const String &p_display_text, const String &p_insert_text, const Color &p_text_color, const RES &p_icon, const Variant &p_value) {
- ScriptCodeCompletionOption completion_option;
- completion_option.kind = (ScriptCodeCompletionOption::Kind)p_type;
+ ScriptLanguage::CodeCompletionOption completion_option;
+ completion_option.kind = (ScriptLanguage::CodeCompletionKind)p_type;
completion_option.display = p_display_text;
completion_option.insert_text = p_insert_text;
completion_option.font_color = p_text_color;
@@ -2261,7 +2261,7 @@ void CodeEdit::_bind_methods() {
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "indent_automatic"), "set_auto_indent_enabled", "is_auto_indent_enabled");
ADD_PROPERTY(PropertyInfo(Variant::PACKED_STRING_ARRAY, "indent_automatic_prefixes"), "set_auto_indent_prefixes", "get_auto_indent_prefixes");
- ADD_GROUP("Auto brace completion", "auto_brace_completion_");
+ ADD_GROUP("Auto Brace Completion", "auto_brace_completion_");
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "auto_brace_completion_enabled"), "set_auto_brace_completion_enabled", "is_auto_brace_completion_enabled");
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "auto_brace_completion_highlight_matching"), "set_highlight_matching_braces_enabled", "is_highlight_matching_braces_enabled");
ADD_PROPERTY(PropertyInfo(Variant::DICTIONARY, "auto_brace_completion_pairs"), "set_auto_brace_completion_pairs", "get_auto_brace_completion_pairs");
@@ -2702,7 +2702,7 @@ void CodeEdit::_filter_code_completion_candidates_impl() {
TypedArray<Dictionary> completion_options_sources;
completion_options_sources.resize(code_completion_option_sources.size());
int i = 0;
- for (const ScriptCodeCompletionOption &E : code_completion_option_sources) {
+ for (const ScriptLanguage::CodeCompletionOption &E : code_completion_option_sources) {
Dictionary option;
option["kind"] = E.kind;
option["display_text"] = E.display;
@@ -2727,8 +2727,8 @@ void CodeEdit::_filter_code_completion_candidates_impl() {
/* Convert back into options. */
int max_width = 0;
for (i = 0; i < completion_options.size(); i++) {
- ScriptCodeCompletionOption option;
- option.kind = (ScriptCodeCompletionOption::Kind)(int)completion_options[i].get("kind");
+ ScriptLanguage::CodeCompletionOption option;
+ option.kind = (ScriptLanguage::CodeCompletionKind)(int)completion_options[i].get("kind");
option.display = completion_options[i].get("display_text");
option.insert_text = completion_options[i].get("insert_text");
option.font_color = completion_options[i].get("font_color");
@@ -2821,15 +2821,15 @@ void CodeEdit::_filter_code_completion_candidates_impl() {
code_completion_options.clear();
code_completion_base = string_to_complete;
- Vector<ScriptCodeCompletionOption> completion_options_casei;
- Vector<ScriptCodeCompletionOption> completion_options_substr;
- Vector<ScriptCodeCompletionOption> completion_options_substr_casei;
- Vector<ScriptCodeCompletionOption> completion_options_subseq;
- Vector<ScriptCodeCompletionOption> completion_options_subseq_casei;
+ Vector<ScriptLanguage::CodeCompletionOption> completion_options_casei;
+ Vector<ScriptLanguage::CodeCompletionOption> completion_options_substr;
+ Vector<ScriptLanguage::CodeCompletionOption> completion_options_substr_casei;
+ Vector<ScriptLanguage::CodeCompletionOption> completion_options_subseq;
+ Vector<ScriptLanguage::CodeCompletionOption> completion_options_subseq_casei;
int max_width = 0;
String string_to_complete_lower = string_to_complete.to_lower();
- for (ScriptCodeCompletionOption &option : code_completion_option_sources) {
+ for (ScriptLanguage::CodeCompletionOption &option : code_completion_option_sources) {
if (single_quote && option.display.is_quoted()) {
option.display = option.display.unquote().quote("'");
}
diff --git a/scene/gui/code_edit.h b/scene/gui/code_edit.h
index cb1309ced3..596a065f12 100644
--- a/scene/gui/code_edit.h
+++ b/scene/gui/code_edit.h
@@ -38,7 +38,7 @@ class CodeEdit : public TextEdit {
public:
/* Keep enum in sync with: */
- /* /core/object/script_language.h - ScriptCodeCompletionOption::Kind */
+ /* /core/object/script_language.h - ScriptLanguage::CodeCompletionKind */
enum CodeCompletionKind {
KIND_CLASS,
KIND_FUNCTION,
@@ -208,15 +208,15 @@ private:
Color code_completion_existing_color = Color(0, 0, 0, 0);
bool code_completion_active = false;
- Vector<ScriptCodeCompletionOption> code_completion_options;
+ Vector<ScriptLanguage::CodeCompletionOption> code_completion_options;
int code_completion_line_ofs = 0;
int code_completion_current_selected = 0;
int code_completion_longest_line = 0;
Rect2i code_completion_rect;
Set<char32_t> code_completion_prefixes;
- List<ScriptCodeCompletionOption> code_completion_option_submitted;
- List<ScriptCodeCompletionOption> code_completion_option_sources;
+ List<ScriptLanguage::CodeCompletionOption> code_completion_option_submitted;
+ List<ScriptLanguage::CodeCompletionOption> code_completion_option_sources;
String code_completion_base;
void _filter_code_completion_candidates_impl();
diff --git a/scene/gui/color_picker.cpp b/scene/gui/color_picker.cpp
index 9f32ac223c..48fadb0cf8 100644
--- a/scene/gui/color_picker.cpp
+++ b/scene/gui/color_picker.cpp
@@ -1221,7 +1221,7 @@ ColorPicker::ColorPicker() :
hhb->add_child(text_type);
text_type->set_text("#");
- text_type->set_tooltip(TTR("Switch between hexadecimal and code values."));
+ text_type->set_tooltip(RTR("Switch between hexadecimal and code values."));
if (Engine::get_singleton()->is_editor_hint()) {
text_type->connect("pressed", callable_mp(this, &ColorPicker::_text_type_toggled));
} else {
diff --git a/scene/gui/container.cpp b/scene/gui/container.cpp
index 1dd88371ea..5512c0f1fd 100644
--- a/scene/gui/container.cpp
+++ b/scene/gui/container.cpp
@@ -196,7 +196,7 @@ TypedArray<String> Container::get_configuration_warnings() const {
TypedArray<String> warnings = Control::get_configuration_warnings();
if (get_class() == "Container" && get_script().is_null()) {
- warnings.push_back(TTR("Container by itself serves no purpose unless a script configures its children placement behavior.\nIf you don't intend to add a script, use a plain Control node instead."));
+ warnings.push_back(RTR("Container by itself serves no purpose unless a script configures its children placement behavior.\nIf you don't intend to add a script, use a plain Control node instead."));
}
return warnings;
diff --git a/scene/gui/control.cpp b/scene/gui/control.cpp
index d2d1b5e9b7..96d2b29fc1 100644
--- a/scene/gui/control.cpp
+++ b/scene/gui/control.cpp
@@ -367,7 +367,7 @@ bool Control::_get(const StringName &p_name, Variant &r_ret) const {
void Control::_get_property_list(List<PropertyInfo> *p_list) const {
Ref<Theme> theme = Theme::get_default();
- p_list->push_back(PropertyInfo(Variant::NIL, "Theme Overrides", PROPERTY_HINT_NONE, "theme_override_", PROPERTY_USAGE_GROUP));
+ p_list->push_back(PropertyInfo(Variant::NIL, TTRC("Theme Overrides"), PROPERTY_HINT_NONE, "theme_override_", PROPERTY_USAGE_GROUP));
{
List<StringName> names;
@@ -2937,9 +2937,9 @@ Control::MouseFilter Control::get_mouse_filter() const {
return data.mouse_filter;
}
-void Control::warp_mouse(const Point2 &p_to_pos) {
+void Control::warp_mouse(const Point2 &p_position) {
ERR_FAIL_COND(!is_inside_tree());
- get_viewport()->warp_mouse(get_global_transform().xform(p_to_pos));
+ get_viewport()->warp_mouse(get_global_transform_with_canvas().xform(p_position));
}
bool Control::is_text_field() const {
@@ -3141,7 +3141,7 @@ TypedArray<String> Control::get_configuration_warnings() const {
TypedArray<String> warnings = Node::get_configuration_warnings();
if (data.mouse_filter == MOUSE_FILTER_IGNORE && !data.tooltip.is_empty()) {
- warnings.push_back(TTR("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\"."));
+ warnings.push_back(RTR("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\"."));
}
return warnings;
@@ -3331,7 +3331,7 @@ void Control::_bind_methods() {
ClassDB::bind_method(D_METHOD("set_drag_preview", "control"), &Control::set_drag_preview);
ClassDB::bind_method(D_METHOD("is_drag_successful"), &Control::is_drag_successful);
- ClassDB::bind_method(D_METHOD("warp_mouse", "to_position"), &Control::warp_mouse);
+ ClassDB::bind_method(D_METHOD("warp_mouse", "position"), &Control::warp_mouse);
ClassDB::bind_method(D_METHOD("update_minimum_size"), &Control::update_minimum_size);
diff --git a/scene/gui/control.h b/scene/gui/control.h
index becb50a118..4240d52b65 100644
--- a/scene/gui/control.h
+++ b/scene/gui/control.h
@@ -44,7 +44,6 @@ class Panel;
class Control : public CanvasItem {
GDCLASS(Control, CanvasItem);
- OBJ_CATEGORY("GUI Nodes");
public:
enum Anchor {
@@ -548,7 +547,7 @@ public:
void grab_click_focus();
- void warp_mouse(const Point2 &p_to_pos);
+ void warp_mouse(const Point2 &p_position);
virtual bool is_text_field() const;
diff --git a/scene/gui/dialogs.cpp b/scene/gui/dialogs.cpp
index e3744eedca..0bb96a18a5 100644
--- a/scene/gui/dialogs.cpp
+++ b/scene/gui/dialogs.cpp
@@ -39,13 +39,13 @@
void AcceptDialog::_input_from_window(const Ref<InputEvent> &p_event) {
Ref<InputEventKey> key = p_event;
- if (key.is_valid() && key->is_pressed() && key->get_keycode() == Key::ESCAPE) {
+ if (close_on_escape && key.is_valid() && key->is_pressed() && key->get_keycode() == Key::ESCAPE) {
_cancel_pressed();
}
}
void AcceptDialog::_parent_focused() {
- if (!is_exclusive()) {
+ if (close_on_escape && !is_exclusive()) {
_cancel_pressed();
}
}
@@ -93,6 +93,9 @@ void AcceptDialog::_notification(int p_what) {
}
void AcceptDialog::_text_submitted(const String &p_text) {
+ if (get_ok_button() && get_ok_button()->is_disabled()) {
+ return; // Do not allow submission if OK button is disabled.
+ }
_ok_pressed();
}
@@ -142,6 +145,14 @@ bool AcceptDialog::get_hide_on_ok() const {
return hide_on_ok;
}
+void AcceptDialog::set_close_on_escape(bool p_hide) {
+ close_on_escape = p_hide;
+}
+
+bool AcceptDialog::get_close_on_escape() const {
+ return close_on_escape;
+}
+
void AcceptDialog::set_autowrap(bool p_autowrap) {
label->set_autowrap_mode(p_autowrap ? Label::AUTOWRAP_WORD : Label::AUTOWRAP_OFF);
}
@@ -285,6 +296,8 @@ void AcceptDialog::_bind_methods() {
ClassDB::bind_method(D_METHOD("get_label"), &AcceptDialog::get_label);
ClassDB::bind_method(D_METHOD("set_hide_on_ok", "enabled"), &AcceptDialog::set_hide_on_ok);
ClassDB::bind_method(D_METHOD("get_hide_on_ok"), &AcceptDialog::get_hide_on_ok);
+ ClassDB::bind_method(D_METHOD("set_close_on_escape", "enabled"), &AcceptDialog::set_close_on_escape);
+ ClassDB::bind_method(D_METHOD("get_close_on_escape"), &AcceptDialog::get_close_on_escape);
ClassDB::bind_method(D_METHOD("add_button", "text", "right", "action"), &AcceptDialog::add_button, DEFVAL(false), DEFVAL(""));
ClassDB::bind_method(D_METHOD("add_cancel_button", "name"), &AcceptDialog::add_cancel_button);
ClassDB::bind_method(D_METHOD("remove_button", "button"), &AcceptDialog::remove_button);
@@ -301,6 +314,7 @@ void AcceptDialog::_bind_methods() {
ADD_GROUP("Dialog", "dialog");
ADD_PROPERTY(PropertyInfo(Variant::STRING, "dialog_text", PROPERTY_HINT_MULTILINE_TEXT, "", PROPERTY_USAGE_DEFAULT_INTL), "set_text", "get_text");
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "dialog_hide_on_ok"), "set_hide_on_ok", "get_hide_on_ok");
+ ADD_PROPERTY(PropertyInfo(Variant::BOOL, "dialog_close_on_escape"), "set_close_on_escape", "get_close_on_escape");
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "dialog_autowrap"), "set_autowrap", "has_autowrap");
}
diff --git a/scene/gui/dialogs.h b/scene/gui/dialogs.h
index 1365b1df24..11c701b0d5 100644
--- a/scene/gui/dialogs.h
+++ b/scene/gui/dialogs.h
@@ -50,6 +50,7 @@ class AcceptDialog : public Window {
Label *label;
Button *ok;
bool hide_on_ok = true;
+ bool close_on_escape = true;
void _custom_action(const String &p_action);
void _update_child_rects();
@@ -87,6 +88,9 @@ public:
void set_hide_on_ok(bool p_hide);
bool get_hide_on_ok() const;
+ void set_close_on_escape(bool p_enable);
+ bool get_close_on_escape() const;
+
void set_text(String p_text);
String get_text() const;
diff --git a/scene/gui/progress_bar.cpp b/scene/gui/progress_bar.cpp
index 20b3513375..50ffb3ca67 100644
--- a/scene/gui/progress_bar.cpp
+++ b/scene/gui/progress_bar.cpp
@@ -100,7 +100,7 @@ bool ProgressBar::is_percent_visible() const {
void ProgressBar::_bind_methods() {
ClassDB::bind_method(D_METHOD("set_percent_visible", "visible"), &ProgressBar::set_percent_visible);
ClassDB::bind_method(D_METHOD("is_percent_visible"), &ProgressBar::is_percent_visible);
- ADD_GROUP("Percent", "percent_");
+
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "percent_visible"), "set_percent_visible", "is_percent_visible");
}
diff --git a/scene/gui/range.cpp b/scene/gui/range.cpp
index 2fb6452a97..8e66826e9d 100644
--- a/scene/gui/range.cpp
+++ b/scene/gui/range.cpp
@@ -34,7 +34,7 @@ TypedArray<String> Range::get_configuration_warnings() const {
TypedArray<String> warnings = Node::get_configuration_warnings();
if (shared->exp_ratio && shared->min <= 0) {
- warnings.push_back(TTR("If \"Exp Edit\" is enabled, \"Min Value\" must be greater than 0."));
+ warnings.push_back(RTR("If \"Exp Edit\" is enabled, \"Min Value\" must be greater than 0."));
}
return warnings;
@@ -282,7 +282,7 @@ void Range::_bind_methods() {
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "allow_greater"), "set_allow_greater", "is_greater_allowed");
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "allow_lesser"), "set_allow_lesser", "is_lesser_allowed");
- GDVIRTUAL_BIND(_value_changed);
+ GDVIRTUAL_BIND(_value_changed, "new_value");
ADD_LINKED_PROPERTY("min_value", "value");
ADD_LINKED_PROPERTY("min_value", "max_value");
diff --git a/scene/gui/rich_text_label.cpp b/scene/gui/rich_text_label.cpp
index d585fb3a7a..70755a2870 100644
--- a/scene/gui/rich_text_label.cpp
+++ b/scene/gui/rich_text_label.cpp
@@ -4500,7 +4500,7 @@ void RichTextLabel::_bind_methods() {
ClassDB::bind_method(D_METHOD("get_effects"), &RichTextLabel::get_effects);
ClassDB::bind_method(D_METHOD("install_effect", "effect"), &RichTextLabel::install_effect);
- // Note: set "bbcode_enabled" first, to avoid unnecessery "text" resets.
+ // Note: set "bbcode_enabled" first, to avoid unnecessary "text" resets.
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "bbcode_enabled"), "set_use_bbcode", "is_using_bbcode");
ADD_PROPERTY(PropertyInfo(Variant::INT, "tab_size", PROPERTY_HINT_RANGE, "0,24,1"), "set_tab_size", "get_tab_size");
diff --git a/scene/gui/scroll_container.cpp b/scene/gui/scroll_container.cpp
index b3cf2cbf7e..135bad4689 100644
--- a/scene/gui/scroll_container.cpp
+++ b/scene/gui/scroll_container.cpp
@@ -533,7 +533,7 @@ TypedArray<String> ScrollContainer::get_configuration_warnings() const {
}
if (found != 1) {
- warnings.push_back(TTR("ScrollContainer is intended to work with a single child control.\nUse a container as child (VBox, HBox, etc.), or a Control and set the custom minimum size manually."));
+ warnings.push_back(RTR("ScrollContainer is intended to work with a single child control.\nUse a container as child (VBox, HBox, etc.), or a Control and set the custom minimum size manually."));
}
return warnings;
diff --git a/scene/gui/subviewport_container.cpp b/scene/gui/subviewport_container.cpp
index c66e145bc4..68281b6a72 100644
--- a/scene/gui/subviewport_container.cpp
+++ b/scene/gui/subviewport_container.cpp
@@ -176,7 +176,7 @@ void SubViewportContainer::input(const Ref<InputEvent> &p_event) {
return;
}
- Transform2D xform = get_global_transform();
+ Transform2D xform = get_global_transform_with_canvas();
if (stretch) {
Transform2D scale_xf;
@@ -203,7 +203,7 @@ void SubViewportContainer::unhandled_input(const Ref<InputEvent> &p_event) {
return;
}
- Transform2D xform = get_global_transform();
+ Transform2D xform = get_global_transform_with_canvas();
if (stretch) {
Transform2D scale_xf;
@@ -223,6 +223,23 @@ void SubViewportContainer::unhandled_input(const Ref<InputEvent> &p_event) {
}
}
+TypedArray<String> SubViewportContainer::get_configuration_warnings() const {
+ TypedArray<String> warnings = Node::get_configuration_warnings();
+
+ bool has_viewport = false;
+ for (int i = 0; i < get_child_count(); i++) {
+ if (Object::cast_to<SubViewport>(get_child(i))) {
+ has_viewport = true;
+ break;
+ }
+ }
+ if (!has_viewport) {
+ warnings.push_back(RTR("This node doesn't have a SubViewport as child, so it can't display its intended content.\nConsider adding a SubViewport as a child to provide something displayable."));
+ }
+
+ return warnings;
+}
+
void SubViewportContainer::_bind_methods() {
ClassDB::bind_method(D_METHOD("set_stretch", "enable"), &SubViewportContainer::set_stretch);
ClassDB::bind_method(D_METHOD("is_stretch_enabled"), &SubViewportContainer::is_stretch_enabled);
diff --git a/scene/gui/subviewport_container.h b/scene/gui/subviewport_container.h
index f52f01e4e2..55b7802aa4 100644
--- a/scene/gui/subviewport_container.h
+++ b/scene/gui/subviewport_container.h
@@ -58,6 +58,8 @@ public:
virtual Vector<int> get_allowed_size_flags_horizontal() const override;
virtual Vector<int> get_allowed_size_flags_vertical() const override;
+ TypedArray<String> get_configuration_warnings() const override;
+
SubViewportContainer();
};
diff --git a/scene/gui/tab_bar.cpp b/scene/gui/tab_bar.cpp
index 8128bbd11d..ce2dca0ea3 100644
--- a/scene/gui/tab_bar.cpp
+++ b/scene/gui/tab_bar.cpp
@@ -35,6 +35,7 @@
#include "scene/gui/box_container.h"
#include "scene/gui/label.h"
#include "scene/gui/texture_rect.h"
+#include "scene/main/viewport.h"
Size2 TabBar::get_minimum_size() const {
Size2 ms;
@@ -158,7 +159,13 @@ void TabBar::gui_input(const Ref<InputEvent> &p_event) {
}
}
+ if (get_viewport()->gui_is_dragging() && can_drop_data(pos, get_viewport()->gui_get_drag_data())) {
+ dragging_valid_tab = true;
+ update();
+ }
+
_update_hover();
+
return;
}
@@ -333,6 +340,13 @@ void TabBar::_notification(int p_what) {
}
} break;
+ case NOTIFICATION_DRAG_END: {
+ if (dragging_valid_tab) {
+ dragging_valid_tab = false;
+ update();
+ }
+ } break;
+
case NOTIFICATION_DRAW: {
if (tabs.is_empty()) {
return;
@@ -346,8 +360,6 @@ void TabBar::_notification(int p_what) {
Color font_disabled_color = get_theme_color(SNAME("font_disabled_color"));
Ref<Texture2D> incr = get_theme_icon(SNAME("increment"));
Ref<Texture2D> decr = get_theme_icon(SNAME("decrement"));
- Ref<Texture2D> incr_hl = get_theme_icon(SNAME("increment_highlight"));
- Ref<Texture2D> decr_hl = get_theme_icon(SNAME("decrement_highlight"));
bool rtl = is_layout_rtl();
Vector2 size = get_size();
@@ -391,7 +403,10 @@ void TabBar::_notification(int p_what) {
}
if (buttons_visible) {
- int vofs = (get_size().height - incr->get_size().height) / 2;
+ Ref<Texture2D> incr_hl = get_theme_icon(SNAME("increment_highlight"));
+ Ref<Texture2D> decr_hl = get_theme_icon(SNAME("decrement_highlight"));
+
+ int vofs = (size.height - incr->get_size().height) / 2;
if (rtl) {
if (missing_right) {
@@ -419,6 +434,39 @@ void TabBar::_notification(int p_what) {
}
}
}
+
+ if (dragging_valid_tab) {
+ int x;
+
+ int tab_hover = get_hovered_tab();
+ if (tab_hover != -1) {
+ Rect2 tab_rect = get_tab_rect(tab_hover);
+
+ x = tab_rect.position.x;
+ if (get_local_mouse_position().x > x + tab_rect.size.width / 2) {
+ x += tab_rect.size.width;
+ }
+ } else {
+ if (rtl ^ (get_local_mouse_position().x < get_tab_rect(0).position.x)) {
+ x = get_tab_rect(0).position.x;
+ if (rtl) {
+ x += get_tab_rect(0).size.width;
+ }
+ } else {
+ Rect2 tab_rect = get_tab_rect(get_tab_count() - 1);
+
+ x = tab_rect.position.x;
+ if (!rtl) {
+ x += tab_rect.size.width;
+ }
+ }
+ }
+
+ Ref<Texture2D> drop_mark = get_theme_icon(SNAME("drop_mark"));
+ Color drop_mark_color = get_theme_color(SNAME("drop_mark_color"));
+
+ drop_mark->draw(get_canvas_item(), Point2(x - drop_mark->get_width() / 2, (size.height - drop_mark->get_height()) / 2), drop_mark_color);
+ }
} break;
}
}
@@ -906,6 +954,8 @@ void TabBar::_on_mouse_exited() {
cb_hover = -1;
hover = -1;
highlight_arrow = -1;
+ dragging_valid_tab = false;
+
update();
}
@@ -1057,13 +1107,29 @@ void TabBar::drop_data(const Point2 &p_point, const Variant &p_data) {
NodePath to_path = get_path();
if (from_path == to_path) {
- if (hover_now < 0) {
- hover_now = get_tab_count() - 1;
+ if (tab_from_id == hover_now) {
+ return;
+ }
+
+ // Drop the new tab to the left or right depending on where the target tab is being hovered.
+ if (hover_now != -1) {
+ Rect2 tab_rect = get_tab_rect(hover_now);
+ if (is_layout_rtl() ^ (p_point.x <= tab_rect.position.x + tab_rect.size.width / 2)) {
+ if (hover_now > tab_from_id) {
+ hover_now -= 1;
+ }
+ } else if (tab_from_id > hover_now) {
+ hover_now += 1;
+ }
+ } else {
+ hover_now = is_layout_rtl() ^ (p_point.x < get_tab_rect(0).position.x) ? 0 : get_tab_count() - 1;
}
move_tab(tab_from_id, hover_now);
- emit_signal(SNAME("active_tab_rearranged"), hover_now);
- set_current_tab(hover_now);
+ if (!is_tab_disabled(hover_now)) {
+ emit_signal(SNAME("active_tab_rearranged"), hover_now);
+ set_current_tab(hover_now);
+ }
} else if (get_tabs_rearrange_group() != -1) {
// Drag and drop between Tabs.
@@ -1075,11 +1141,17 @@ void TabBar::drop_data(const Point2 &p_point, const Variant &p_data) {
return;
}
- Tab moving_tab = from_tabs->tabs[tab_from_id];
- if (hover_now < 0) {
- hover_now = get_tab_count();
+ // Drop the new tab to the left or right depending on where the target tab is being hovered.
+ if (hover_now != -1) {
+ Rect2 tab_rect = get_tab_rect(hover_now);
+ if (is_layout_rtl() ^ (p_point.x > tab_rect.position.x + tab_rect.size.width / 2)) {
+ hover_now += 1;
+ }
+ } else {
+ hover_now = is_layout_rtl() ^ (p_point.x < get_tab_rect(0).position.x) ? 0 : get_tab_count();
}
+ Tab moving_tab = from_tabs->tabs[tab_from_id];
from_tabs->remove_tab(tab_from_id);
tabs.insert(hover_now, moving_tab);
@@ -1092,7 +1164,13 @@ void TabBar::drop_data(const Point2 &p_point, const Variant &p_data) {
}
}
- set_current_tab(hover_now);
+ if (!is_tab_disabled(hover_now)) {
+ set_current_tab(hover_now);
+ } else {
+ _update_cache();
+ update();
+ }
+
update_minimum_size();
if (tabs.size() == 1) {
diff --git a/scene/gui/tab_bar.h b/scene/gui/tab_bar.h
index e0c4ba85ef..548a2e62af 100644
--- a/scene/gui/tab_bar.h
+++ b/scene/gui/tab_bar.h
@@ -101,6 +101,7 @@ private:
int max_width = 0;
bool scrolling_enabled = true;
bool drag_to_rearrange_enabled = false;
+ bool dragging_valid_tab = false;
bool scroll_to_selected = true;
int tabs_rearrange_group = -1;
diff --git a/scene/gui/tab_container.cpp b/scene/gui/tab_container.cpp
index ee61c862b7..05f1ee3dad 100644
--- a/scene/gui/tab_container.cpp
+++ b/scene/gui/tab_container.cpp
@@ -173,9 +173,9 @@ void TabContainer::_notification(int p_what) {
int x = is_layout_rtl() ? 0 : get_size().width - menu->get_width();
if (menu_hovered) {
- menu_hl->draw(get_canvas_item(), Size2(x, (header_height - menu_hl->get_height()) / 2));
+ menu_hl->draw(get_canvas_item(), Point2(x, (header_height - menu_hl->get_height()) / 2));
} else {
- menu->draw(get_canvas_item(), Size2(x, (header_height - menu->get_height()) / 2));
+ menu->draw(get_canvas_item(), Point2(x, (header_height - menu->get_height()) / 2));
}
}
} break;
@@ -201,13 +201,15 @@ void TabContainer::_on_theme_changed() {
tab_bar->add_theme_icon_override(SNAME("increment_highlight"), get_theme_icon(SNAME("increment_highlight")));
tab_bar->add_theme_icon_override(SNAME("decrement"), get_theme_icon(SNAME("decrement")));
tab_bar->add_theme_icon_override(SNAME("decrement_highlight"), get_theme_icon(SNAME("decrement_highlight")));
+ tab_bar->add_theme_icon_override(SNAME("drop_mark"), get_theme_icon(SNAME("drop_mark")));
+ tab_bar->add_theme_color_override(SNAME("drop_mark_color"), get_theme_color(SNAME("drop_mark_color")));
tab_bar->add_theme_color_override(SNAME("font_selected_color"), get_theme_color(SNAME("font_selected_color")));
tab_bar->add_theme_color_override(SNAME("font_unselected_color"), get_theme_color(SNAME("font_unselected_color")));
tab_bar->add_theme_color_override(SNAME("font_disabled_color"), get_theme_color(SNAME("font_disabled_color")));
tab_bar->add_theme_color_override(SNAME("font_outline_color"), get_theme_color(SNAME("font_outline_color")));
tab_bar->add_theme_font_override(SNAME("font"), get_theme_font(SNAME("font")));
tab_bar->add_theme_constant_override(SNAME("font_size"), get_theme_constant(SNAME("font_size")));
- tab_bar->add_theme_constant_override(SNAME("icon_separation"), get_theme_constant(SNAME("icon_separation")));
+ tab_bar->add_theme_constant_override(SNAME("hseparation"), get_theme_constant(SNAME("icon_separation")));
tab_bar->add_theme_constant_override(SNAME("outline_size"), get_theme_constant(SNAME("outline_size")));
_update_margins();
@@ -384,8 +386,6 @@ void TabContainer::_drop_data_fw(const Point2 &p_point, const Variant &p_data, C
return;
}
- int hover_now = get_tab_idx_at_point(p_point);
-
Dictionary d = p_data;
if (!d.has("type")) {
return;
@@ -393,11 +393,27 @@ void TabContainer::_drop_data_fw(const Point2 &p_point, const Variant &p_data, C
if (String(d["type"]) == "tabc_element") {
int tab_from_id = d["tabc_element"];
+ int hover_now = get_tab_idx_at_point(p_point);
NodePath from_path = d["from_path"];
NodePath to_path = get_path();
+
if (from_path == to_path) {
- if (hover_now < 0) {
- hover_now = get_tab_count() - 1;
+ if (tab_from_id == hover_now) {
+ return;
+ }
+
+ // Drop the new tab to the left or right depending on where the target tab is being hovered.
+ if (hover_now != -1) {
+ Rect2 tab_rect = tab_bar->get_tab_rect(hover_now);
+ if (is_layout_rtl() ^ (p_point.x <= tab_rect.position.x + tab_rect.size.width / 2)) {
+ if (hover_now > tab_from_id) {
+ hover_now -= 1;
+ }
+ } else if (tab_from_id > hover_now) {
+ hover_now += 1;
+ }
+ } else {
+ hover_now = is_layout_rtl() ^ (p_point.x < tab_bar->get_tab_rect(0).position.x) ? 0 : get_tab_count() - 1;
}
move_child(get_tab_control(tab_from_id), get_tab_control(hover_now)->get_index(false));
@@ -407,16 +423,31 @@ void TabContainer::_drop_data_fw(const Point2 &p_point, const Variant &p_data, C
} else if (get_tabs_rearrange_group() != -1) {
// Drag and drop between TabContainers.
+
Node *from_node = get_node(from_path);
TabContainer *from_tabc = Object::cast_to<TabContainer>(from_node);
+
if (from_tabc && from_tabc->get_tabs_rearrange_group() == get_tabs_rearrange_group()) {
+ // Get the tab properties before they get erased by the child removal.
+ String tab_title = from_tabc->get_tab_title(tab_from_id);
+ bool tab_disabled = from_tabc->is_tab_disabled(tab_from_id);
+
+ // Drop the new tab to the left or right depending on where the target tab is being hovered.
+ if (hover_now != -1) {
+ Rect2 tab_rect = tab_bar->get_tab_rect(hover_now);
+ if (is_layout_rtl() ^ (p_point.x > tab_rect.position.x + tab_rect.size.width / 2)) {
+ hover_now += 1;
+ }
+ } else {
+ hover_now = is_layout_rtl() ^ (p_point.x < tab_bar->get_tab_rect(0).position.x) ? 0 : get_tab_count();
+ }
+
Control *moving_tabc = from_tabc->get_tab_control(tab_from_id);
from_tabc->remove_child(moving_tabc);
add_child(moving_tabc, true);
- if (hover_now < 0) {
- hover_now = get_tab_count() - 1;
- }
+ set_tab_title(get_tab_count() - 1, tab_title);
+ set_tab_disabled(get_tab_count() - 1, tab_disabled);
move_child(moving_tabc, get_tab_control(hover_now)->get_index(false));
if (!is_tab_disabled(hover_now)) {
@@ -466,6 +497,9 @@ void TabContainer::add_child_notify(Node *p_child) {
tab_bar->add_tab(p_child->get_name());
_update_margins();
+ if (get_tab_count() == 1) {
+ update();
+ }
p_child->connect("renamed", callable_mp(this, &TabContainer::_refresh_tab_names));
@@ -514,6 +548,9 @@ void TabContainer::remove_child_notify(Node *p_child) {
tab_bar->remove_tab(get_tab_idx_from_control(c));
_update_margins();
+ if (get_tab_count() == 0) {
+ update();
+ }
if (p_child->has_meta("_tab_name")) {
p_child->remove_meta("_tab_name");
diff --git a/scene/gui/texture_progress_bar.cpp b/scene/gui/texture_progress_bar.cpp
index 043c0f464c..f79c68671c 100644
--- a/scene/gui/texture_progress_bar.cpp
+++ b/scene/gui/texture_progress_bar.cpp
@@ -629,26 +629,30 @@ void TextureProgressBar::_bind_methods() {
ClassDB::bind_method(D_METHOD("set_nine_patch_stretch", "stretch"), &TextureProgressBar::set_nine_patch_stretch);
ClassDB::bind_method(D_METHOD("get_nine_patch_stretch"), &TextureProgressBar::get_nine_patch_stretch);
+ ADD_PROPERTY(PropertyInfo(Variant::INT, "fill_mode", PROPERTY_HINT_ENUM, "Left to Right,Right to Left,Top to Bottom,Bottom to Top,Clockwise,Counter Clockwise,Bilinear (Left and Right),Bilinear (Top and Bottom),Clockwise and Counter Clockwise"), "set_fill_mode", "get_fill_mode");
+ ADD_PROPERTY(PropertyInfo(Variant::BOOL, "nine_patch_stretch"), "set_nine_patch_stretch", "get_nine_patch_stretch");
+
+ ADD_GROUP("Stretch Margin", "stretch_margin_");
+ ADD_PROPERTYI(PropertyInfo(Variant::INT, "stretch_margin_left", PROPERTY_HINT_RANGE, "0,16384,1"), "set_stretch_margin", "get_stretch_margin", SIDE_LEFT);
+ ADD_PROPERTYI(PropertyInfo(Variant::INT, "stretch_margin_top", PROPERTY_HINT_RANGE, "0,16384,1"), "set_stretch_margin", "get_stretch_margin", SIDE_TOP);
+ ADD_PROPERTYI(PropertyInfo(Variant::INT, "stretch_margin_right", PROPERTY_HINT_RANGE, "0,16384,1"), "set_stretch_margin", "get_stretch_margin", SIDE_RIGHT);
+ ADD_PROPERTYI(PropertyInfo(Variant::INT, "stretch_margin_bottom", PROPERTY_HINT_RANGE, "0,16384,1"), "set_stretch_margin", "get_stretch_margin", SIDE_BOTTOM);
+
ADD_GROUP("Textures", "texture_");
ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "texture_under", PROPERTY_HINT_RESOURCE_TYPE, "Texture2D"), "set_under_texture", "get_under_texture");
ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "texture_over", PROPERTY_HINT_RESOURCE_TYPE, "Texture2D"), "set_over_texture", "get_over_texture");
ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "texture_progress", PROPERTY_HINT_RESOURCE_TYPE, "Texture2D"), "set_progress_texture", "get_progress_texture");
ADD_PROPERTY(PropertyInfo(Variant::VECTOR2, "texture_progress_offset"), "set_texture_progress_offset", "get_texture_progress_offset");
- ADD_PROPERTY(PropertyInfo(Variant::INT, "fill_mode", PROPERTY_HINT_ENUM, "Left to Right,Right to Left,Top to Bottom,Bottom to Top,Clockwise,Counter Clockwise,Bilinear (Left and Right),Bilinear (Top and Bottom),Clockwise and Counter Clockwise"), "set_fill_mode", "get_fill_mode");
+
ADD_GROUP("Tint", "tint_");
ADD_PROPERTY(PropertyInfo(Variant::COLOR, "tint_under"), "set_tint_under", "get_tint_under");
ADD_PROPERTY(PropertyInfo(Variant::COLOR, "tint_over"), "set_tint_over", "get_tint_over");
ADD_PROPERTY(PropertyInfo(Variant::COLOR, "tint_progress"), "set_tint_progress", "get_tint_progress");
+
ADD_GROUP("Radial Fill", "radial_");
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "radial_initial_angle", PROPERTY_HINT_RANGE, "0.0,360.0,0.1,slider"), "set_radial_initial_angle", "get_radial_initial_angle");
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "radial_fill_degrees", PROPERTY_HINT_RANGE, "0.0,360.0,0.1,slider"), "set_fill_degrees", "get_fill_degrees");
ADD_PROPERTY(PropertyInfo(Variant::VECTOR2, "radial_center_offset"), "set_radial_center_offset", "get_radial_center_offset");
- ADD_GROUP("Stretch", "stretch_");
- ADD_PROPERTY(PropertyInfo(Variant::BOOL, "nine_patch_stretch"), "set_nine_patch_stretch", "get_nine_patch_stretch");
- ADD_PROPERTYI(PropertyInfo(Variant::INT, "stretch_margin_left", PROPERTY_HINT_RANGE, "0,16384,1"), "set_stretch_margin", "get_stretch_margin", SIDE_LEFT);
- ADD_PROPERTYI(PropertyInfo(Variant::INT, "stretch_margin_top", PROPERTY_HINT_RANGE, "0,16384,1"), "set_stretch_margin", "get_stretch_margin", SIDE_TOP);
- ADD_PROPERTYI(PropertyInfo(Variant::INT, "stretch_margin_right", PROPERTY_HINT_RANGE, "0,16384,1"), "set_stretch_margin", "get_stretch_margin", SIDE_RIGHT);
- ADD_PROPERTYI(PropertyInfo(Variant::INT, "stretch_margin_bottom", PROPERTY_HINT_RANGE, "0,16384,1"), "set_stretch_margin", "get_stretch_margin", SIDE_BOTTOM);
BIND_ENUM_CONSTANT(FILL_LEFT_TO_RIGHT);
BIND_ENUM_CONSTANT(FILL_RIGHT_TO_LEFT);
diff --git a/scene/gui/tree.cpp b/scene/gui/tree.cpp
index ff8d2b88b1..ccd24ed2cf 100644
--- a/scene/gui/tree.cpp
+++ b/scene/gui/tree.cpp
@@ -1162,24 +1162,23 @@ Size2 TreeItem::get_minimum_size(int p_column) {
return cell.cached_minimum_size;
}
-Variant TreeItem::_call_recursive_bind(const Variant **p_args, int p_argcount, Callable::CallError &r_error) {
+void TreeItem::_call_recursive_bind(const Variant **p_args, int p_argcount, Callable::CallError &r_error) {
if (p_argcount < 1) {
r_error.error = Callable::CallError::CALL_ERROR_TOO_FEW_ARGUMENTS;
r_error.argument = 0;
- return Variant();
+ return;
}
if (p_args[0]->get_type() != Variant::STRING && p_args[0]->get_type() != Variant::STRING_NAME) {
r_error.error = Callable::CallError::CALL_ERROR_INVALID_ARGUMENT;
r_error.argument = 0;
r_error.expected = Variant::STRING_NAME;
- return Variant();
+ return;
}
StringName method = *p_args[0];
call_recursive(method, &p_args[1], p_argcount - 1, r_error);
- return Variant();
}
void recursive_call_aux(TreeItem *p_item, const StringName &p_method, const Variant **p_args, int p_argcount, Callable::CallError &r_error) {
diff --git a/scene/gui/tree.h b/scene/gui/tree.h
index dc786de6dc..04d4b9b935 100644
--- a/scene/gui/tree.h
+++ b/scene/gui/tree.h
@@ -189,7 +189,7 @@ protected:
return d;
}
- Variant _call_recursive_bind(const Variant **p_args, int p_argcount, Callable::CallError &r_error);
+ void _call_recursive_bind(const Variant **p_args, int p_argcount, Callable::CallError &r_error);
public:
/* cell mode */
diff --git a/scene/main/canvas_item.cpp b/scene/main/canvas_item.cpp
index b50f7866af..15d36d8230 100644
--- a/scene/main/canvas_item.cpp
+++ b/scene/main/canvas_item.cpp
@@ -978,6 +978,7 @@ void CanvasItem::_bind_methods() {
ADD_SIGNAL(MethodInfo("item_rect_changed"));
BIND_CONSTANT(NOTIFICATION_TRANSFORM_CHANGED);
+ BIND_CONSTANT(NOTIFICATION_LOCAL_TRANSFORM_CHANGED);
BIND_CONSTANT(NOTIFICATION_DRAW);
BIND_CONSTANT(NOTIFICATION_VISIBILITY_CHANGED);
BIND_CONSTANT(NOTIFICATION_ENTER_CANVAS);
diff --git a/scene/main/http_request.cpp b/scene/main/http_request.cpp
index 700ba761f6..ac10c2bad8 100644
--- a/scene/main/http_request.cpp
+++ b/scene/main/http_request.cpp
@@ -558,12 +558,12 @@ void HTTPRequest::set_https_proxy(const String &p_host, int p_port) {
client->set_https_proxy(p_host, p_port);
}
-void HTTPRequest::set_timeout(int p_timeout) {
+void HTTPRequest::set_timeout(double p_timeout) {
ERR_FAIL_COND(p_timeout < 0);
timeout = p_timeout;
}
-int HTTPRequest::get_timeout() {
+double HTTPRequest::get_timeout() {
return timeout;
}
@@ -615,7 +615,7 @@ void HTTPRequest::_bind_methods() {
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "accept_gzip"), "set_accept_gzip", "is_accepting_gzip");
ADD_PROPERTY(PropertyInfo(Variant::INT, "body_size_limit", PROPERTY_HINT_RANGE, "-1,2000000000"), "set_body_size_limit", "get_body_size_limit");
ADD_PROPERTY(PropertyInfo(Variant::INT, "max_redirects", PROPERTY_HINT_RANGE, "-1,64"), "set_max_redirects", "get_max_redirects");
- ADD_PROPERTY(PropertyInfo(Variant::INT, "timeout", PROPERTY_HINT_RANGE, "0,86400"), "set_timeout", "get_timeout");
+ ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "timeout", PROPERTY_HINT_RANGE, "0,3600,0.1,or_greater"), "set_timeout", "get_timeout");
ADD_SIGNAL(MethodInfo("request_completed", PropertyInfo(Variant::INT, "result"), PropertyInfo(Variant::INT, "response_code"), PropertyInfo(Variant::PACKED_STRING_ARRAY, "headers"), PropertyInfo(Variant::PACKED_BYTE_ARRAY, "body")));
diff --git a/scene/main/http_request.h b/scene/main/http_request.h
index 62880fa282..26d648458f 100644
--- a/scene/main/http_request.h
+++ b/scene/main/http_request.h
@@ -96,7 +96,7 @@ private:
int max_redirects = 8;
- int timeout = 0;
+ double timeout = 0;
void _redirect_request(const String &p_new_url);
@@ -146,8 +146,8 @@ public:
Timer *timer;
- void set_timeout(int p_timeout);
- int get_timeout();
+ void set_timeout(double p_timeout);
+ double get_timeout();
void _timeout();
diff --git a/scene/main/node.cpp b/scene/main/node.cpp
index 208bbe4d72..7933045c5f 100644
--- a/scene/main/node.cpp
+++ b/scene/main/node.cpp
@@ -582,11 +582,11 @@ uint16_t Node::rpc_config(const StringName &p_method, Multiplayer::RPCMode p_rpc
/***** RPC FUNCTIONS ********/
-Variant Node::_rpc_bind(const Variant **p_args, int p_argcount, Callable::CallError &r_error) {
+void Node::_rpc_bind(const Variant **p_args, int p_argcount, Callable::CallError &r_error) {
if (p_argcount < 1) {
r_error.error = Callable::CallError::CALL_ERROR_TOO_FEW_ARGUMENTS;
r_error.argument = 1;
- return Variant();
+ return;
}
Variant::Type type = p_args[0]->get_type();
@@ -594,7 +594,7 @@ Variant Node::_rpc_bind(const Variant **p_args, int p_argcount, Callable::CallEr
r_error.error = Callable::CallError::CALL_ERROR_INVALID_ARGUMENT;
r_error.argument = 0;
r_error.expected = Variant::STRING_NAME;
- return Variant();
+ return;
}
StringName method = (*p_args[0]).operator StringName();
@@ -602,21 +602,20 @@ Variant Node::_rpc_bind(const Variant **p_args, int p_argcount, Callable::CallEr
rpcp(0, method, &p_args[1], p_argcount - 1);
r_error.error = Callable::CallError::CALL_OK;
- return Variant();
}
-Variant Node::_rpc_id_bind(const Variant **p_args, int p_argcount, Callable::CallError &r_error) {
+void Node::_rpc_id_bind(const Variant **p_args, int p_argcount, Callable::CallError &r_error) {
if (p_argcount < 2) {
r_error.error = Callable::CallError::CALL_ERROR_TOO_FEW_ARGUMENTS;
r_error.argument = 2;
- return Variant();
+ return;
}
if (p_args[0]->get_type() != Variant::INT) {
r_error.error = Callable::CallError::CALL_ERROR_INVALID_ARGUMENT;
r_error.argument = 0;
r_error.expected = Variant::INT;
- return Variant();
+ return;
}
Variant::Type type = p_args[1]->get_type();
@@ -624,7 +623,7 @@ Variant Node::_rpc_id_bind(const Variant **p_args, int p_argcount, Callable::Cal
r_error.error = Callable::CallError::CALL_ERROR_INVALID_ARGUMENT;
r_error.argument = 1;
r_error.expected = Variant::STRING_NAME;
- return Variant();
+ return;
}
int peer_id = *p_args[0];
@@ -633,7 +632,6 @@ Variant Node::_rpc_id_bind(const Variant **p_args, int p_argcount, Callable::Cal
rpcp(peer_id, method, &p_args[2], p_argcount - 2);
r_error.error = Callable::CallError::CALL_OK;
- return Variant();
}
void Node::rpcp(int p_peer_id, const StringName &p_method, const Variant **p_arg, int p_argcount) {
@@ -2487,11 +2485,11 @@ static void _Node_debug_sn(Object *p_obj) {
}
#endif // DEBUG_ENABLED
-void Node::_print_stray_nodes() {
- print_stray_nodes();
+void Node::_print_orphan_nodes() {
+ print_orphan_nodes();
}
-void Node::print_stray_nodes() {
+void Node::print_orphan_nodes() {
#ifdef DEBUG_ENABLED
ObjectDB::debug_objects(_Node_debug_sn);
#endif
@@ -2703,7 +2701,7 @@ void Node::_bind_methods() {
ClassDB::bind_method(D_METHOD("set_process_mode", "mode"), &Node::set_process_mode);
ClassDB::bind_method(D_METHOD("get_process_mode"), &Node::get_process_mode);
ClassDB::bind_method(D_METHOD("can_process"), &Node::can_process);
- ClassDB::bind_method(D_METHOD("print_stray_nodes"), &Node::_print_stray_nodes);
+ ClassDB::bind_method(D_METHOD("print_orphan_nodes"), &Node::_print_orphan_nodes);
ClassDB::bind_method(D_METHOD("set_display_folded", "fold"), &Node::set_display_folded);
ClassDB::bind_method(D_METHOD("is_displayed_folded"), &Node::is_displayed_folded);
diff --git a/scene/main/node.h b/scene/main/node.h
index f5fbcf6587..1f973a0cb4 100644
--- a/scene/main/node.h
+++ b/scene/main/node.h
@@ -43,7 +43,6 @@ class PropertyTweener;
class Node : public Object {
GDCLASS(Node, Object);
- OBJ_CATEGORY("Nodes");
public:
enum ProcessMode {
@@ -169,7 +168,7 @@ private:
void _propagate_ready();
void _propagate_exit_tree();
void _propagate_after_exit_tree();
- void _print_stray_nodes();
+ void _print_orphan_nodes();
void _propagate_process_owner(Node *p_owner, int p_pause_notification, int p_enabled_notification);
Array _get_node_and_resource(const NodePath &p_path);
@@ -179,8 +178,8 @@ private:
TypedArray<Node> _get_children(bool p_include_internal = true) const;
Array _get_groups() const;
- Variant _rpc_bind(const Variant **p_args, int p_argcount, Callable::CallError &r_error);
- Variant _rpc_id_bind(const Variant **p_args, int p_argcount, Callable::CallError &r_error);
+ void _rpc_bind(const Variant **p_args, int p_argcount, Callable::CallError &r_error);
+ void _rpc_id_bind(const Variant **p_args, int p_argcount, Callable::CallError &r_error);
_FORCE_INLINE_ bool _is_internal_front() const { return data.parent && data.pos < data.parent->data.internal_children_front; }
_FORCE_INLINE_ bool _is_internal_back() const { return data.parent && data.pos >= data.parent->data.children.size() - data.parent->data.internal_children_back; }
@@ -436,7 +435,7 @@ public:
void request_ready();
- static void print_stray_nodes();
+ static void print_orphan_nodes();
#ifdef TOOLS_ENABLED
String validate_child_name(Node *p_child);
diff --git a/scene/main/scene_tree.cpp b/scene/main/scene_tree.cpp
index 3ddce28b69..8eeedf51a9 100644
--- a/scene/main/scene_tree.cpp
+++ b/scene/main/scene_tree.cpp
@@ -912,34 +912,32 @@ void SceneTree::_call_input_pause(const StringName &p_group, CallInputType p_cal
}
}
-Variant SceneTree::_call_group_flags(const Variant **p_args, int p_argcount, Callable::CallError &r_error) {
+void SceneTree::_call_group_flags(const Variant **p_args, int p_argcount, Callable::CallError &r_error) {
r_error.error = Callable::CallError::CALL_OK;
- ERR_FAIL_COND_V(p_argcount < 3, Variant());
- ERR_FAIL_COND_V(!p_args[0]->is_num(), Variant());
- ERR_FAIL_COND_V(p_args[1]->get_type() != Variant::STRING_NAME && p_args[1]->get_type() != Variant::STRING, Variant());
- ERR_FAIL_COND_V(p_args[2]->get_type() != Variant::STRING_NAME && p_args[2]->get_type() != Variant::STRING, Variant());
+ ERR_FAIL_COND(p_argcount < 3);
+ ERR_FAIL_COND(!p_args[0]->is_num());
+ ERR_FAIL_COND(p_args[1]->get_type() != Variant::STRING_NAME && p_args[1]->get_type() != Variant::STRING);
+ ERR_FAIL_COND(p_args[2]->get_type() != Variant::STRING_NAME && p_args[2]->get_type() != Variant::STRING);
int flags = *p_args[0];
StringName group = *p_args[1];
StringName method = *p_args[2];
call_group_flagsp(flags, group, method, p_args + 3, p_argcount - 3);
- return Variant();
}
-Variant SceneTree::_call_group(const Variant **p_args, int p_argcount, Callable::CallError &r_error) {
+void SceneTree::_call_group(const Variant **p_args, int p_argcount, Callable::CallError &r_error) {
r_error.error = Callable::CallError::CALL_OK;
- ERR_FAIL_COND_V(p_argcount < 2, Variant());
- ERR_FAIL_COND_V(p_args[0]->get_type() != Variant::STRING_NAME && p_args[0]->get_type() != Variant::STRING, Variant());
- ERR_FAIL_COND_V(p_args[1]->get_type() != Variant::STRING_NAME && p_args[1]->get_type() != Variant::STRING, Variant());
+ ERR_FAIL_COND(p_argcount < 2);
+ ERR_FAIL_COND(p_args[0]->get_type() != Variant::STRING_NAME && p_args[0]->get_type() != Variant::STRING);
+ ERR_FAIL_COND(p_args[1]->get_type() != Variant::STRING_NAME && p_args[1]->get_type() != Variant::STRING);
StringName group = *p_args[0];
StringName method = *p_args[1];
call_group_flagsp(0, group, method, p_args + 2, p_argcount - 2);
- return Variant();
}
int64_t SceneTree::get_frame() const {
diff --git a/scene/main/scene_tree.h b/scene/main/scene_tree.h
index 6197e52fc1..10839ca425 100644
--- a/scene/main/scene_tree.h
+++ b/scene/main/scene_tree.h
@@ -175,8 +175,8 @@ private:
void make_group_changed(const StringName &p_group);
void _notify_group_pause(const StringName &p_group, int p_notification);
- Variant _call_group_flags(const Variant **p_args, int p_argcount, Callable::CallError &r_error);
- Variant _call_group(const Variant **p_args, int p_argcount, Callable::CallError &r_error);
+ void _call_group_flags(const Variant **p_args, int p_argcount, Callable::CallError &r_error);
+ void _call_group(const Variant **p_args, int p_argcount, Callable::CallError &r_error);
void _flush_delete_queue();
// Optimization.
diff --git a/scene/main/shader_globals_override.cpp b/scene/main/shader_globals_override.cpp
index 5387dc01e2..9b85e9db38 100644
--- a/scene/main/shader_globals_override.cpp
+++ b/scene/main/shader_globals_override.cpp
@@ -277,7 +277,7 @@ TypedArray<String> ShaderGlobalsOverride::get_configuration_warnings() const {
TypedArray<String> warnings = Node::get_configuration_warnings();
if (!active) {
- warnings.push_back(TTR("ShaderGlobalsOverride is not active because another node of the same type is in the scene."));
+ warnings.push_back(RTR("ShaderGlobalsOverride is not active because another node of the same type is in the scene."));
}
return warnings;
diff --git a/scene/main/timer.cpp b/scene/main/timer.cpp
index 120b537e4f..5a5747e122 100644
--- a/scene/main/timer.cpp
+++ b/scene/main/timer.cpp
@@ -184,7 +184,7 @@ TypedArray<String> Timer::get_configuration_warnings() const {
TypedArray<String> warnings = Node::get_configuration_warnings();
if (wait_time < 0.05 - CMP_EPSILON) {
- warnings.push_back(TTR("Very low timer wait times (< 0.05 seconds) may behave in significantly different ways depending on the rendered or physics frame rate.\nConsider using a script's process loop instead of relying on a Timer for very low wait times."));
+ warnings.push_back(RTR("Very low timer wait times (< 0.05 seconds) may behave in significantly different ways depending on the rendered or physics frame rate.\nConsider using a script's process loop instead of relying on a Timer for very low wait times."));
}
return warnings;
diff --git a/scene/main/viewport.cpp b/scene/main/viewport.cpp
index ec33e5752e..a38bed71d1 100644
--- a/scene/main/viewport.cpp
+++ b/scene/main/viewport.cpp
@@ -1038,8 +1038,8 @@ Transform2D Viewport::get_final_transform() const {
void Viewport::_update_canvas_items(Node *p_node) {
if (p_node != this) {
- Viewport *vp = Object::cast_to<Viewport>(p_node);
- if (vp) {
+ Window *w = Object::cast_to<Window>(p_node);
+ if (w && (!w->is_inside_tree() || !w->is_embedded())) {
return;
}
@@ -1124,9 +1124,10 @@ Vector2 Viewport::get_mouse_position() const {
return gui.last_mouse_pos;
}
-void Viewport::warp_mouse(const Vector2 &p_pos) {
- Vector2 gpos = (get_final_transform().affine_inverse() * _get_input_pre_xform()).affine_inverse().xform(p_pos);
- Input::get_singleton()->warp_mouse_position(gpos);
+void Viewport::warp_mouse(const Vector2 &p_position) {
+ Transform2D xform = get_screen_transform();
+ Vector2 gpos = xform.xform(p_position).round();
+ Input::get_singleton()->warp_mouse(gpos);
}
void Viewport::_gui_sort_roots() {
@@ -1603,29 +1604,6 @@ void Viewport::_gui_input_event(Ref<InputEvent> p_event) {
_gui_call_input(mouse_focus, mb);
}
- // In case the mouse was released after for example dragging a scrollbar,
- // check whether the current control is different from the stored one. If
- // it is different, rather than wait for it to be updated the next time the
- // mouse is moved, notify the control so that it can e.g. drop the highlight.
- // This code is duplicated from the mm.is_valid()-case further below.
- Control *over = nullptr;
- if (gui.mouse_focus) {
- over = gui.mouse_focus;
- } else {
- over = gui_find_control(mpos);
- }
-
- if (gui.mouse_focus_mask == MouseButton::NONE && over != gui.mouse_over) {
- _drop_mouse_over();
- _gui_cancel_tooltip();
-
- if (over) {
- _gui_call_notification(over, Control::NOTIFICATION_MOUSE_ENTER);
- }
- }
-
- gui.mouse_over = over;
-
set_input_as_handled();
}
}
@@ -1685,9 +1663,7 @@ void Viewport::_gui_input_event(Ref<InputEvent> p_event) {
}
Control *over = nullptr;
- if (gui.mouse_focus) {
- over = gui.mouse_focus;
- } else if (gui.mouse_in_viewport) {
+ if (gui.mouse_in_viewport) {
over = gui_find_control(mpos);
}
@@ -1701,6 +1677,10 @@ void Viewport::_gui_input_event(Ref<InputEvent> p_event) {
}
}
+ if (gui.mouse_focus) {
+ over = gui.mouse_focus;
+ }
+
DisplayServer::CursorShape ds_cursor_shape = (DisplayServer::CursorShape)Input::get_singleton()->get_default_cursor_shape();
if (over) {
@@ -1871,8 +1851,10 @@ void Viewport::_gui_input_event(Ref<InputEvent> p_event) {
}
if (viewport_under) {
- Transform2D ai = (viewport_under->get_final_transform().affine_inverse() * viewport_under->_get_input_pre_xform());
- viewport_pos = ai.xform(viewport_pos);
+ if (viewport_under != this) {
+ Transform2D ai = (viewport_under->get_final_transform().affine_inverse() * viewport_under->_get_input_pre_xform());
+ viewport_pos = ai.xform(viewport_pos);
+ }
// Find control under at position.
gui.drag_mouse_over = viewport_under->gui_find_control(viewport_pos);
if (gui.drag_mouse_over) {
@@ -2001,30 +1983,58 @@ void Viewport::_gui_input_event(Ref<InputEvent> p_event) {
if (from && p_event->is_pressed()) {
Control *next = nullptr;
- if (p_event->is_action_pressed("ui_focus_next", true, true)) {
- next = from->find_next_valid_focus();
- }
+ Ref<InputEventJoypadMotion> joypadmotion_event = p_event;
+ if (joypadmotion_event.is_valid()) {
+ Input *input = Input::get_singleton();
- if (p_event->is_action_pressed("ui_focus_prev", true, true)) {
- next = from->find_prev_valid_focus();
- }
+ if (p_event->is_action_pressed("ui_focus_next") && input->is_action_just_pressed("ui_focus_next")) {
+ next = from->find_next_valid_focus();
+ }
- if (p_event->is_action_pressed("ui_up", true, true)) {
- next = from->_get_focus_neighbor(SIDE_TOP);
- }
+ if (p_event->is_action_pressed("ui_focus_prev") && input->is_action_just_pressed("ui_focus_prev")) {
+ next = from->find_prev_valid_focus();
+ }
- if (p_event->is_action_pressed("ui_left", true, true)) {
- next = from->_get_focus_neighbor(SIDE_LEFT);
- }
+ if (p_event->is_action_pressed("ui_up") && input->is_action_just_pressed("ui_up")) {
+ next = from->_get_focus_neighbor(SIDE_TOP);
+ }
- if (p_event->is_action_pressed("ui_right", true, true)) {
- next = from->_get_focus_neighbor(SIDE_RIGHT);
- }
+ if (p_event->is_action_pressed("ui_left") && input->is_action_just_pressed("ui_left")) {
+ next = from->_get_focus_neighbor(SIDE_LEFT);
+ }
- if (p_event->is_action_pressed("ui_down", true, true)) {
- next = from->_get_focus_neighbor(SIDE_BOTTOM);
- }
+ if (p_event->is_action_pressed("ui_right") && input->is_action_just_pressed("ui_right")) {
+ next = from->_get_focus_neighbor(SIDE_RIGHT);
+ }
+
+ if (p_event->is_action_pressed("ui_down") && input->is_action_just_pressed("ui_down")) {
+ next = from->_get_focus_neighbor(SIDE_BOTTOM);
+ }
+ } else {
+ if (p_event->is_action_pressed("ui_focus_next", true, true)) {
+ next = from->find_next_valid_focus();
+ }
+
+ if (p_event->is_action_pressed("ui_focus_prev", true, true)) {
+ next = from->find_prev_valid_focus();
+ }
+
+ if (p_event->is_action_pressed("ui_up", true, true)) {
+ next = from->_get_focus_neighbor(SIDE_TOP);
+ }
+
+ if (p_event->is_action_pressed("ui_left", true, true)) {
+ next = from->_get_focus_neighbor(SIDE_LEFT);
+ }
+
+ if (p_event->is_action_pressed("ui_right", true, true)) {
+ next = from->_get_focus_neighbor(SIDE_RIGHT);
+ }
+ if (p_event->is_action_pressed("ui_down", true, true)) {
+ next = from->_get_focus_neighbor(SIDE_BOTTOM);
+ }
+ }
if (next) {
next->grab_focus();
set_input_as_handled();
@@ -2691,7 +2701,7 @@ void Viewport::push_input(const Ref<InputEvent> &p_event, bool p_local_coords) {
ev = p_event;
}
- if (is_embedding_subwindows() && _sub_windows_forward_input(p_event)) {
+ if (is_embedding_subwindows() && _sub_windows_forward_input(ev)) {
set_input_as_handled();
return;
}
@@ -2805,7 +2815,7 @@ TypedArray<String> Viewport::get_configuration_warnings() const {
TypedArray<String> warnings = Node::get_configuration_warnings();
if (size.x == 0 || size.y == 0) {
- warnings.push_back(TTR("Viewport size must be greater than 0 to render anything."));
+ warnings.push_back(RTR("Viewport size must be greater than 0 to render anything."));
}
return warnings;
}
@@ -3106,6 +3116,10 @@ Viewport::SDFScale Viewport::get_sdf_scale() const {
return sdf_scale;
}
+Transform2D Viewport::get_screen_transform() const {
+ return _get_input_pre_xform().affine_inverse() * get_final_transform();
+}
+
#ifndef _3D_DISABLED
AudioListener3D *Viewport::get_audio_listener_3d() const {
return audio_listener_3d;
@@ -3614,7 +3628,7 @@ void Viewport::_bind_methods() {
ClassDB::bind_method(D_METHOD("is_audio_listener_2d"), &Viewport::is_audio_listener_2d);
ClassDB::bind_method(D_METHOD("get_mouse_position"), &Viewport::get_mouse_position);
- ClassDB::bind_method(D_METHOD("warp_mouse", "to_position"), &Viewport::warp_mouse);
+ ClassDB::bind_method(D_METHOD("warp_mouse", "position"), &Viewport::warp_mouse);
ClassDB::bind_method(D_METHOD("gui_get_drag_data"), &Viewport::gui_get_drag_data);
ClassDB::bind_method(D_METHOD("gui_is_dragging"), &Viewport::gui_is_dragging);
@@ -3964,6 +3978,20 @@ Transform2D SubViewport::_stretch_transform() {
return transform;
}
+Transform2D SubViewport::get_screen_transform() const {
+ Transform2D container_transform = Transform2D();
+ SubViewportContainer *c = Object::cast_to<SubViewportContainer>(get_parent());
+ if (c) {
+ if (c->is_stretch_enabled()) {
+ container_transform.scale(Vector2(c->get_stretch_shrink(), c->get_stretch_shrink()));
+ }
+ container_transform = c->get_viewport()->get_screen_transform() * c->get_global_transform_with_canvas() * container_transform;
+ } else {
+ WARN_PRINT_ONCE("SubViewport is not a child of a SubViewportContainer. get_screen_transform doesn't return the actual screen position.");
+ }
+ return container_transform * Viewport::get_screen_transform();
+}
+
void SubViewport::_notification(int p_what) {
switch (p_what) {
case NOTIFICATION_ENTER_TREE: {
diff --git a/scene/main/viewport.h b/scene/main/viewport.h
index e4912f31c5..80be53fab8 100644
--- a/scene/main/viewport.h
+++ b/scene/main/viewport.h
@@ -547,7 +547,7 @@ public:
bool is_input_disabled() const;
Vector2 get_mouse_position() const;
- void warp_mouse(const Vector2 &p_pos);
+ void warp_mouse(const Vector2 &p_position);
void set_physics_object_picking(bool p_enable);
bool get_physics_object_picking();
@@ -609,6 +609,8 @@ public:
void pass_mouse_focus_to(Viewport *p_viewport, Control *p_control);
+ virtual Transform2D get_screen_transform() const;
+
#ifndef _3D_DISABLED
bool use_xr = false;
friend class AudioListener3D;
@@ -732,6 +734,8 @@ public:
void set_clear_mode(ClearMode p_mode);
ClearMode get_clear_mode() const;
+ virtual Transform2D get_screen_transform() const override;
+
SubViewport();
~SubViewport();
};
diff --git a/scene/main/window.cpp b/scene/main/window.cpp
index 6837fcae21..2faa107fb4 100644
--- a/scene/main/window.cpp
+++ b/scene/main/window.cpp
@@ -1101,6 +1101,14 @@ void Window::popup_centered_ratio(float p_ratio) {
void Window::popup(const Rect2i &p_screen_rect) {
emit_signal(SNAME("about_to_popup"));
+ if (!_get_embedder() && get_flag(FLAG_POPUP)) {
+ // Send a focus-out notification when opening a Window Manager Popup.
+ SceneTree *scene_tree = get_tree();
+ if (scene_tree) {
+ scene_tree->notify_group("_viewports", NOTIFICATION_WM_WINDOW_FOCUS_OUT);
+ }
+ }
+
// Update window size to calculate the actual window size based on contents minimum size and minimum size.
_update_window_size();
@@ -1452,6 +1460,15 @@ void Window::_validate_property(PropertyInfo &property) const {
}
}
+Transform2D Window::get_screen_transform() const {
+ Transform2D embedder_transform = Transform2D();
+ if (_get_embedder()) {
+ embedder_transform.translate(get_position());
+ embedder_transform = _get_embedder()->get_screen_transform() * embedder_transform;
+ }
+ return embedder_transform * Viewport::get_screen_transform();
+}
+
void Window::_bind_methods() {
ClassDB::bind_method(D_METHOD("set_title", "title"), &Window::set_title);
ClassDB::bind_method(D_METHOD("get_title"), &Window::get_title);
diff --git a/scene/main/window.h b/scene/main/window.h
index 3d8e337b4a..f674f6425a 100644
--- a/scene/main/window.h
+++ b/scene/main/window.h
@@ -291,6 +291,8 @@ public:
Ref<Font> get_theme_default_font() const;
int get_theme_default_font_size() const;
+ virtual Transform2D get_screen_transform() const override;
+
Rect2i get_parent_rect() const;
virtual DisplayServer::WindowID get_window_id() const override;
diff --git a/scene/register_scene_types.cpp b/scene/register_scene_types.cpp
index fb5d57ab9e..032f43d9b9 100644
--- a/scene/register_scene_types.cpp
+++ b/scene/register_scene_types.cpp
@@ -809,6 +809,7 @@ void register_scene_types() {
GDREGISTER_VIRTUAL_CLASS(Texture2D);
GDREGISTER_CLASS(Sky);
GDREGISTER_CLASS(CompressedTexture2D);
+ GDREGISTER_CLASS(PortableCompressedTexture2D);
GDREGISTER_CLASS(ImageTexture);
GDREGISTER_CLASS(AtlasTexture);
GDREGISTER_CLASS(MeshTexture);
@@ -895,6 +896,7 @@ void register_scene_types() {
#ifndef DISABLE_DEPRECATED
// Dropped in 4.0, near approximation.
ClassDB::add_compatibility_class("AnimationTreePlayer", "AnimationTree");
+ ClassDB::add_compatibility_class("AStar", "AStar3D");
ClassDB::add_compatibility_class("BitmapFont", "Font");
ClassDB::add_compatibility_class("DynamicFont", "Font");
ClassDB::add_compatibility_class("DynamicFontData", "FontData");
diff --git a/scene/resources/audio_stream_sample.h b/scene/resources/audio_stream_sample.h
index 043a62ff70..357febc27a 100644
--- a/scene/resources/audio_stream_sample.h
+++ b/scene/resources/audio_stream_sample.h
@@ -89,6 +89,7 @@ public:
FORMAT_IMA_ADPCM
};
+ // Keep the ResourceImporterWAV `edit/loop_mode` enum hint in sync with these options.
enum LoopMode {
LOOP_DISABLED,
LOOP_FORWARD,
diff --git a/scene/resources/capsule_shape_2d.cpp b/scene/resources/capsule_shape_2d.cpp
index a1ad487bff..c7bd4cb698 100644
--- a/scene/resources/capsule_shape_2d.cpp
+++ b/scene/resources/capsule_shape_2d.cpp
@@ -109,8 +109,8 @@ void CapsuleShape2D::_bind_methods() {
ClassDB::bind_method(D_METHOD("set_height", "height"), &CapsuleShape2D::set_height);
ClassDB::bind_method(D_METHOD("get_height"), &CapsuleShape2D::get_height);
- ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "radius"), "set_radius", "get_radius");
- ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "height"), "set_height", "get_height");
+ ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "radius", PROPERTY_HINT_RANGE, "0.01,1024,0.01,or_greater"), "set_radius", "get_radius");
+ ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "height", PROPERTY_HINT_RANGE, "0.01,1024,0.01,or_greater"), "set_height", "get_height");
ADD_LINKED_PROPERTY("radius", "height");
ADD_LINKED_PROPERTY("height", "radius");
}
diff --git a/scene/resources/capsule_shape_3d.cpp b/scene/resources/capsule_shape_3d.cpp
index 2179ce82dd..d708706ff2 100644
--- a/scene/resources/capsule_shape_3d.cpp
+++ b/scene/resources/capsule_shape_3d.cpp
@@ -29,6 +29,7 @@
/*************************************************************************/
#include "capsule_shape_3d.h"
+
#include "servers/physics_server_3d.h"
Vector<Vector3> CapsuleShape3D::get_debug_mesh_lines() const {
@@ -112,8 +113,8 @@ void CapsuleShape3D::_bind_methods() {
ClassDB::bind_method(D_METHOD("set_height", "height"), &CapsuleShape3D::set_height);
ClassDB::bind_method(D_METHOD("get_height"), &CapsuleShape3D::get_height);
- ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "radius", PROPERTY_HINT_RANGE, "0.001,4096,0.001"), "set_radius", "get_radius");
- ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "height", PROPERTY_HINT_RANGE, "0.001,4096,0.001"), "set_height", "get_height");
+ ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "radius", PROPERTY_HINT_RANGE, "0.001,100,0.001,or_greater"), "set_radius", "get_radius");
+ ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "height", PROPERTY_HINT_RANGE, "0.001,100,0.001,or_greater"), "set_height", "get_height");
ADD_LINKED_PROPERTY("radius", "height");
ADD_LINKED_PROPERTY("height", "radius");
}
diff --git a/scene/resources/circle_shape_2d.cpp b/scene/resources/circle_shape_2d.cpp
index de931fca7e..c287de9ede 100644
--- a/scene/resources/circle_shape_2d.cpp
+++ b/scene/resources/circle_shape_2d.cpp
@@ -56,7 +56,7 @@ void CircleShape2D::_bind_methods() {
ClassDB::bind_method(D_METHOD("set_radius", "radius"), &CircleShape2D::set_radius);
ClassDB::bind_method(D_METHOD("get_radius"), &CircleShape2D::get_radius);
- ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "radius", PROPERTY_HINT_RANGE, "0.01,16384,0.5"), "set_radius", "get_radius");
+ ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "radius", PROPERTY_HINT_RANGE, "0.01,1024,0.01,or_greater"), "set_radius", "get_radius");
}
Rect2 CircleShape2D::get_rect() const {
diff --git a/scene/resources/cylinder_shape_3d.cpp b/scene/resources/cylinder_shape_3d.cpp
index c4f1cba341..a1fe5c46fb 100644
--- a/scene/resources/cylinder_shape_3d.cpp
+++ b/scene/resources/cylinder_shape_3d.cpp
@@ -29,6 +29,7 @@
/*************************************************************************/
#include "cylinder_shape_3d.h"
+
#include "servers/physics_server_3d.h"
Vector<Vector3> CylinderShape3D::get_debug_mesh_lines() const {
@@ -99,8 +100,8 @@ void CylinderShape3D::_bind_methods() {
ClassDB::bind_method(D_METHOD("set_height", "height"), &CylinderShape3D::set_height);
ClassDB::bind_method(D_METHOD("get_height"), &CylinderShape3D::get_height);
- ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "radius", PROPERTY_HINT_RANGE, "0.001,4096,0.001"), "set_radius", "get_radius");
- ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "height", PROPERTY_HINT_RANGE, "0.001,4096,0.001"), "set_height", "get_height");
+ ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "height", PROPERTY_HINT_RANGE, "0.001,100,0.001,or_greater"), "set_height", "get_height");
+ ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "radius", PROPERTY_HINT_RANGE, "0.001,100,0.001,or_greater"), "set_radius", "get_radius");
}
CylinderShape3D::CylinderShape3D() :
diff --git a/scene/resources/default_theme/SCsub b/scene/resources/default_theme/SCsub
index f27bd9144e..5bef7e5a6c 100644
--- a/scene/resources/default_theme/SCsub
+++ b/scene/resources/default_theme/SCsub
@@ -8,10 +8,10 @@ import default_theme_icons_builders
env.add_source_files(env.scene_sources, "*.cpp")
-env.Depends("#scene/resources/default_theme/default_font.gen.h", "#thirdparty/fonts/OpenSans_SemiBold.ttf")
+env.Depends("#scene/resources/default_theme/default_font.gen.h", "#thirdparty/fonts/OpenSans_SemiBold.woff2")
env.CommandNoCache(
"#scene/resources/default_theme/default_font.gen.h",
- "#thirdparty/fonts/OpenSans_SemiBold.ttf",
+ "#thirdparty/fonts/OpenSans_SemiBold.woff2",
run_in_subprocess(default_theme_builders.make_fonts_header),
)
diff --git a/scene/resources/default_theme/default_theme.cpp b/scene/resources/default_theme/default_theme.cpp
index da37228ed9..eb71401a3a 100644
--- a/scene/resources/default_theme/default_theme.cpp
+++ b/scene/resources/default_theme/default_theme.cpp
@@ -801,6 +801,7 @@ void fill_default_theme(Ref<Theme> &theme, const Ref<Font> &default_font, const
theme->set_icon("increment_highlight", "TabContainer", icons["scroll_button_right_hl"]);
theme->set_icon("decrement", "TabContainer", icons["scroll_button_left"]);
theme->set_icon("decrement_highlight", "TabContainer", icons["scroll_button_left_hl"]);
+ theme->set_icon("drop_mark", "TabContainer", icons["tabs_drop_mark"]);
theme->set_icon("menu", "TabContainer", icons["tabs_menu"]);
theme->set_icon("menu_highlight", "TabContainer", icons["tabs_menu_hl"]);
@@ -811,6 +812,7 @@ void fill_default_theme(Ref<Theme> &theme, const Ref<Font> &default_font, const
theme->set_color("font_unselected_color", "TabContainer", control_font_low_color);
theme->set_color("font_disabled_color", "TabContainer", control_font_disabled_color);
theme->set_color("font_outline_color", "TabContainer", Color(1, 1, 1));
+ theme->set_color("drop_mark_color", "TabContainer", Color(1, 1, 1));
theme->set_constant("side_margin", "TabContainer", 8 * scale);
theme->set_constant("icon_separation", "TabContainer", 4 * scale);
@@ -828,6 +830,7 @@ void fill_default_theme(Ref<Theme> &theme, const Ref<Font> &default_font, const
theme->set_icon("increment_highlight", "TabBar", icons["scroll_button_right_hl"]);
theme->set_icon("decrement", "TabBar", icons["scroll_button_left"]);
theme->set_icon("decrement_highlight", "TabBar", icons["scroll_button_left_hl"]);
+ theme->set_icon("drop_mark", "TabBar", icons["tabs_drop_mark"]);
theme->set_icon("close", "TabBar", icons["close"]);
theme->set_font("font", "TabBar", Ref<Font>());
@@ -837,6 +840,7 @@ void fill_default_theme(Ref<Theme> &theme, const Ref<Font> &default_font, const
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_color("drop_mark_color", "TabBar", Color(1, 1, 1));
theme->set_constant("hseparation", "TabBar", 4 * scale);
theme->set_constant("outline_size", "TabBar", 0);
diff --git a/scene/resources/default_theme/tabs_drop_mark.svg b/scene/resources/default_theme/tabs_drop_mark.svg
new file mode 100644
index 0000000000..b1415bec45
--- /dev/null
+++ b/scene/resources/default_theme/tabs_drop_mark.svg
@@ -0,0 +1 @@
+<svg height="32" viewBox="0 0 16 32" width="16" xmlns="http://www.w3.org/2000/svg"><path d="m5 1h6v30h-6z" fill="#d3d3d3"/></svg>
diff --git a/scene/resources/environment.cpp b/scene/resources/environment.cpp
index 82d8ad4444..78698835fc 100644
--- a/scene/resources/environment.cpp
+++ b/scene/resources/environment.cpp
@@ -1079,7 +1079,7 @@ void Environment::_validate_property(PropertyInfo &property) const {
"fog_",
"volumetric_fog_",
"auto_exposure_",
- "ss_reflections_",
+ "ssr_",
"ssao_",
"sdfgi_",
"glow_",
@@ -1091,7 +1091,7 @@ void Environment::_validate_property(PropertyInfo &property) const {
static const char *high_end_prefixes[] = {
"auto_exposure_",
"tonemap_",
- "ss_reflections_",
+ "ssr_",
"ssao_",
nullptr
@@ -1241,12 +1241,12 @@ void Environment::_bind_methods() {
ClassDB::bind_method(D_METHOD("set_ssr_depth_tolerance", "depth_tolerance"), &Environment::set_ssr_depth_tolerance);
ClassDB::bind_method(D_METHOD("get_ssr_depth_tolerance"), &Environment::get_ssr_depth_tolerance);
- ADD_GROUP("SS Reflections", "ss_reflections_");
- ADD_PROPERTY(PropertyInfo(Variant::BOOL, "ss_reflections_enabled"), "set_ssr_enabled", "is_ssr_enabled");
- ADD_PROPERTY(PropertyInfo(Variant::INT, "ss_reflections_max_steps", PROPERTY_HINT_RANGE, "1,512,1"), "set_ssr_max_steps", "get_ssr_max_steps");
- ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "ss_reflections_fade_in", PROPERTY_HINT_EXP_EASING), "set_ssr_fade_in", "get_ssr_fade_in");
- ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "ss_reflections_fade_out", PROPERTY_HINT_EXP_EASING), "set_ssr_fade_out", "get_ssr_fade_out");
- ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "ss_reflections_depth_tolerance", PROPERTY_HINT_RANGE, "0.01,128,0.1"), "set_ssr_depth_tolerance", "get_ssr_depth_tolerance");
+ ADD_GROUP("SSR", "ssr_");
+ ADD_PROPERTY(PropertyInfo(Variant::BOOL, "ssr_enabled"), "set_ssr_enabled", "is_ssr_enabled");
+ ADD_PROPERTY(PropertyInfo(Variant::INT, "ssr_max_steps", PROPERTY_HINT_RANGE, "1,512,1"), "set_ssr_max_steps", "get_ssr_max_steps");
+ ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "ssr_fade_in", PROPERTY_HINT_EXP_EASING), "set_ssr_fade_in", "get_ssr_fade_in");
+ ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "ssr_fade_out", PROPERTY_HINT_EXP_EASING), "set_ssr_fade_out", "get_ssr_fade_out");
+ ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "ssr_depth_tolerance", PROPERTY_HINT_RANGE, "0.01,128,0.1"), "set_ssr_depth_tolerance", "get_ssr_depth_tolerance");
// SSAO
ClassDB::bind_method(D_METHOD("set_ssao_enabled", "enabled"), &Environment::set_ssao_enabled);
diff --git a/scene/resources/font.cpp b/scene/resources/font.cpp
index 15594109e9..6e6ee7d3ac 100644
--- a/scene/resources/font.cpp
+++ b/scene/resources/font.cpp
@@ -741,9 +741,7 @@ Error FontData::load_bitmap_font(const String &p_path) {
oversampling = 1.0f;
FileAccessRef f = FileAccess::open(p_path, FileAccess::READ);
- if (f == nullptr) {
- ERR_FAIL_V_MSG(ERR_CANT_CREATE, TTR("Cannot open font from file ") + "\"" + p_path + "\".");
- }
+ ERR_FAIL_COND_V_MSG(!f, ERR_CANT_CREATE, vformat(RTR("Cannot open font from file: %s."), p_path));
int base_size = 16;
int height = 0;
@@ -762,7 +760,7 @@ Error FontData::load_bitmap_font(const String &p_path) {
f->get_buffer((unsigned char *)&magic, 4);
if (magic[0] == 'B' && magic[1] == 'M' && magic[2] == 'F') {
// Binary BMFont file.
- ERR_FAIL_COND_V_MSG(magic[3] != 3, ERR_CANT_CREATE, vformat(TTR("Version %d of BMFont is not supported."), (int)magic[3]));
+ ERR_FAIL_COND_V_MSG(magic[3] != 3, ERR_CANT_CREATE, vformat(RTR("Version %d of BMFont is not supported."), (int)magic[3]));
uint8_t block_type = f->get_8();
uint32_t block_size = f->get_32();
@@ -770,10 +768,10 @@ Error FontData::load_bitmap_font(const String &p_path) {
uint64_t off = f->get_position();
switch (block_type) {
case 1: /* info */ {
- ERR_FAIL_COND_V_MSG(block_size < 15, ERR_CANT_CREATE, TTR("Invalid BMFont info block size."));
+ ERR_FAIL_COND_V_MSG(block_size < 15, ERR_CANT_CREATE, RTR("Invalid BMFont info block size."));
base_size = f->get_16();
uint8_t flags = f->get_8();
- ERR_FAIL_COND_V_MSG(flags & 0x02, ERR_CANT_CREATE, TTR("Non-unicode version of BMFont is not supported."));
+ ERR_FAIL_COND_V_MSG(flags & 0x02, ERR_CANT_CREATE, RTR("Non-unicode version of BMFont is not supported."));
if (flags & (1 << 3)) {
st_flags |= TextServer::FONT_BOLD;
}
@@ -794,7 +792,7 @@ Error FontData::load_bitmap_font(const String &p_path) {
set_fixed_size(base_size);
} break;
case 2: /* common */ {
- ERR_FAIL_COND_V_MSG(block_size != 15, ERR_CANT_CREATE, TTR("Invalid BMFont common block size."));
+ ERR_FAIL_COND_V_MSG(block_size != 15, ERR_CANT_CREATE, RTR("Invalid BMFont common block size."));
height = f->get_16();
ascent = f->get_16();
f->get_32(); // scale, skip
@@ -829,40 +827,40 @@ Error FontData::load_bitmap_font(const String &p_path) {
Ref<Image> img;
img.instantiate();
Error err = ImageLoader::load_image(file, img);
- ERR_FAIL_COND_V_MSG(err != OK, ERR_FILE_CANT_READ, TTR("Can't load font texture: ") + "\"" + file + "\".");
+ ERR_FAIL_COND_V_MSG(err != OK, ERR_FILE_CANT_READ, vformat(RTR("Can't load font texture: %s."), file));
if (packed) {
if (ch[3] == 0) { // 4 x 8 bit monochrome, no outline
outline = 0;
- ERR_FAIL_COND_V_MSG(img->get_format() != Image::FORMAT_RGBA8, ERR_FILE_CANT_READ, TTR("Unsupported BMFont texture format."));
+ ERR_FAIL_COND_V_MSG(img->get_format() != Image::FORMAT_RGBA8, ERR_FILE_CANT_READ, RTR("Unsupported BMFont texture format."));
_convert_packed_8bit(img, page, base_size);
} else if ((ch[3] == 2) && (outline > 0)) { // 4 x 4 bit monochrome, gl + outline
- ERR_FAIL_COND_V_MSG(img->get_format() != Image::FORMAT_RGBA8, ERR_FILE_CANT_READ, TTR("Unsupported BMFont texture format."));
+ ERR_FAIL_COND_V_MSG(img->get_format() != Image::FORMAT_RGBA8, ERR_FILE_CANT_READ, RTR("Unsupported BMFont texture format."));
_convert_packed_4bit(img, page, base_size);
} else {
- ERR_FAIL_V_MSG(ERR_CANT_CREATE, TTR("Unsupported BMFont texture format."));
+ ERR_FAIL_V_MSG(ERR_CANT_CREATE, RTR("Unsupported BMFont texture format."));
}
} else {
if ((ch[0] == 0) && (ch[1] == 0) && (ch[2] == 0) && (ch[3] == 0)) { // RGBA8 color, no outline
outline = 0;
- ERR_FAIL_COND_V_MSG(img->get_format() != Image::FORMAT_RGBA8, ERR_FILE_CANT_READ, TTR("Unsupported BMFont texture format."));
+ ERR_FAIL_COND_V_MSG(img->get_format() != Image::FORMAT_RGBA8, ERR_FILE_CANT_READ, RTR("Unsupported BMFont texture format."));
set_texture_image(0, Vector2i(base_size, 0), page, img);
} else if ((ch[0] == 2) && (ch[1] == 2) && (ch[2] == 2) && (ch[3] == 2) && (outline > 0)) { // RGBA4 color, gl + outline
- ERR_FAIL_COND_V_MSG(img->get_format() != Image::FORMAT_RGBA8, ERR_FILE_CANT_READ, TTR("Unsupported BMFont texture format."));
+ ERR_FAIL_COND_V_MSG(img->get_format() != Image::FORMAT_RGBA8, ERR_FILE_CANT_READ, RTR("Unsupported BMFont texture format."));
_convert_rgba_4bit(img, page, base_size);
} else if ((first_gl_ch >= 0) && (first_ol_ch >= 0) && (outline > 0)) { // 1 x 8 bit monochrome, gl + outline
- ERR_FAIL_COND_V_MSG(img->get_format() != Image::FORMAT_RGBA8 && img->get_format() != Image::FORMAT_L8, ERR_FILE_CANT_READ, TTR("Unsupported BMFont texture format."));
+ ERR_FAIL_COND_V_MSG(img->get_format() != Image::FORMAT_RGBA8 && img->get_format() != Image::FORMAT_L8, ERR_FILE_CANT_READ, RTR("Unsupported BMFont texture format."));
_convert_mono_8bit(img, page, first_gl_ch, base_size, 0);
_convert_mono_8bit(img, page, first_ol_ch, base_size, 1);
} else if ((first_cm_ch >= 0) && (outline > 0)) { // 1 x 4 bit monochrome, gl + outline
- ERR_FAIL_COND_V_MSG(img->get_format() != Image::FORMAT_RGBA8 && img->get_format() != Image::FORMAT_L8, ERR_FILE_CANT_READ, TTR("Unsupported BMFont texture format."));
+ ERR_FAIL_COND_V_MSG(img->get_format() != Image::FORMAT_RGBA8 && img->get_format() != Image::FORMAT_L8, ERR_FILE_CANT_READ, RTR("Unsupported BMFont texture format."));
_convert_mono_4bit(img, page, first_cm_ch, base_size, 1);
} else if (first_gl_ch >= 0) { // 1 x 8 bit monochrome, no outline
outline = 0;
- ERR_FAIL_COND_V_MSG(img->get_format() != Image::FORMAT_RGBA8 && img->get_format() != Image::FORMAT_L8, ERR_FILE_CANT_READ, TTR("Unsupported BMFont texture format."));
+ ERR_FAIL_COND_V_MSG(img->get_format() != Image::FORMAT_RGBA8 && img->get_format() != Image::FORMAT_L8, ERR_FILE_CANT_READ, RTR("Unsupported BMFont texture format."));
_convert_mono_8bit(img, page, first_gl_ch, base_size, 0);
} else {
- ERR_FAIL_V_MSG(ERR_CANT_CREATE, TTR("Unsupported BMFont texture format."));
+ ERR_FAIL_V_MSG(ERR_CANT_CREATE, RTR("Unsupported BMFont texture format."));
}
}
}
@@ -899,7 +897,7 @@ Error FontData::load_bitmap_font(const String &p_path) {
int texture_idx = f->get_8();
uint8_t channel = f->get_8();
- ERR_FAIL_COND_V_MSG(!packed && channel != 15, ERR_CANT_CREATE, TTR("Invalid glyph channel."));
+ ERR_FAIL_COND_V_MSG(!packed && channel != 15, ERR_CANT_CREATE, RTR("Invalid glyph channel."));
int ch_off = 0;
switch (channel) {
case 1:
@@ -941,7 +939,7 @@ Error FontData::load_bitmap_font(const String &p_path) {
}
} break;
default: {
- ERR_FAIL_V_MSG(ERR_CANT_CREATE, TTR("Invalid BMFont block type."));
+ ERR_FAIL_V_MSG(ERR_CANT_CREATE, RTR("Invalid BMFont block type."));
} break;
}
f->seek(off + block_size);
@@ -1016,7 +1014,7 @@ Error FontData::load_bitmap_font(const String &p_path) {
if (keys.has("face")) {
font_name = keys["face"];
}
- ERR_FAIL_COND_V_MSG((!keys.has("unicode") || keys["unicode"].to_int() != 1), ERR_CANT_CREATE, TTR("Non-unicode version of BMFont is not supported."));
+ ERR_FAIL_COND_V_MSG((!keys.has("unicode") || keys["unicode"].to_int() != 1), ERR_CANT_CREATE, RTR("Non-unicode version of BMFont is not supported."));
} else if (type == "common") {
if (keys.has("lineHeight")) {
height = keys["lineHeight"].to_int();
@@ -1062,39 +1060,39 @@ Error FontData::load_bitmap_font(const String &p_path) {
Ref<Image> img;
img.instantiate();
Error err = ImageLoader::load_image(file, img);
- ERR_FAIL_COND_V_MSG(err != OK, ERR_FILE_CANT_READ, TTR("Can't load font texture: ") + "\"" + file + "\".");
+ ERR_FAIL_COND_V_MSG(err != OK, ERR_FILE_CANT_READ, vformat(RTR("Can't load font texture: %s."), file));
if (packed) {
if (ch[3] == 0) { // 4 x 8 bit monochrome, no outline
outline = 0;
- ERR_FAIL_COND_V_MSG(img->get_format() != Image::FORMAT_RGBA8, ERR_FILE_CANT_READ, TTR("Unsupported BMFont texture format."));
+ ERR_FAIL_COND_V_MSG(img->get_format() != Image::FORMAT_RGBA8, ERR_FILE_CANT_READ, RTR("Unsupported BMFont texture format."));
_convert_packed_8bit(img, page, base_size);
} else if ((ch[3] == 2) && (outline > 0)) { // 4 x 4 bit monochrome, gl + outline
- ERR_FAIL_COND_V_MSG(img->get_format() != Image::FORMAT_RGBA8, ERR_FILE_CANT_READ, TTR("Unsupported BMFont texture format."));
+ ERR_FAIL_COND_V_MSG(img->get_format() != Image::FORMAT_RGBA8, ERR_FILE_CANT_READ, RTR("Unsupported BMFont texture format."));
_convert_packed_4bit(img, page, base_size);
} else {
- ERR_FAIL_V_MSG(ERR_CANT_CREATE, TTR("Unsupported BMFont texture format."));
+ ERR_FAIL_V_MSG(ERR_CANT_CREATE, RTR("Unsupported BMFont texture format."));
}
} else {
if ((ch[0] == 0) && (ch[1] == 0) && (ch[2] == 0) && (ch[3] == 0)) { // RGBA8 color, no outline
outline = 0;
- ERR_FAIL_COND_V_MSG(img->get_format() != Image::FORMAT_RGBA8, ERR_FILE_CANT_READ, TTR("Unsupported BMFont texture format."));
+ ERR_FAIL_COND_V_MSG(img->get_format() != Image::FORMAT_RGBA8, ERR_FILE_CANT_READ, RTR("Unsupported BMFont texture format."));
set_texture_image(0, Vector2i(base_size, 0), page, img);
} else if ((ch[0] == 2) && (ch[1] == 2) && (ch[2] == 2) && (ch[3] == 2) && (outline > 0)) { // RGBA4 color, gl + outline
- ERR_FAIL_COND_V_MSG(img->get_format() != Image::FORMAT_RGBA8, ERR_FILE_CANT_READ, TTR("Unsupported BMFont texture format."));
+ ERR_FAIL_COND_V_MSG(img->get_format() != Image::FORMAT_RGBA8, ERR_FILE_CANT_READ, RTR("Unsupported BMFont texture format."));
_convert_rgba_4bit(img, page, base_size);
} else if ((first_gl_ch >= 0) && (first_ol_ch >= 0) && (outline > 0)) { // 1 x 8 bit monochrome, gl + outline
- ERR_FAIL_COND_V_MSG(img->get_format() != Image::FORMAT_RGBA8 && img->get_format() != Image::FORMAT_L8, ERR_FILE_CANT_READ, TTR("Unsupported BMFont texture format."));
+ ERR_FAIL_COND_V_MSG(img->get_format() != Image::FORMAT_RGBA8 && img->get_format() != Image::FORMAT_L8, ERR_FILE_CANT_READ, RTR("Unsupported BMFont texture format."));
_convert_mono_8bit(img, page, first_gl_ch, base_size, 0);
_convert_mono_8bit(img, page, first_ol_ch, base_size, 1);
} else if ((first_cm_ch >= 0) && (outline > 0)) { // 1 x 4 bit monochrome, gl + outline
- ERR_FAIL_COND_V_MSG(img->get_format() != Image::FORMAT_RGBA8 && img->get_format() != Image::FORMAT_L8, ERR_FILE_CANT_READ, TTR("Unsupported BMFont texture format."));
+ ERR_FAIL_COND_V_MSG(img->get_format() != Image::FORMAT_RGBA8 && img->get_format() != Image::FORMAT_L8, ERR_FILE_CANT_READ, RTR("Unsupported BMFont texture format."));
_convert_mono_4bit(img, page, first_cm_ch, base_size, 1);
} else if (first_gl_ch >= 0) { // 1 x 8 bit monochrome, no outline
outline = 0;
- ERR_FAIL_COND_V_MSG(img->get_format() != Image::FORMAT_RGBA8 && img->get_format() != Image::FORMAT_L8, ERR_FILE_CANT_READ, TTR("Unsupported BMFont texture format."));
+ ERR_FAIL_COND_V_MSG(img->get_format() != Image::FORMAT_RGBA8 && img->get_format() != Image::FORMAT_L8, ERR_FILE_CANT_READ, RTR("Unsupported BMFont texture format."));
_convert_mono_8bit(img, page, first_gl_ch, base_size, 0);
} else {
- ERR_FAIL_V_MSG(ERR_CANT_CREATE, TTR("Unsupported BMFont texture format."));
+ ERR_FAIL_V_MSG(ERR_CANT_CREATE, RTR("Unsupported BMFont texture format."));
}
}
}
@@ -1144,7 +1142,7 @@ Error FontData::load_bitmap_font(const String &p_path) {
channel = keys["chnl"].to_int();
}
- ERR_FAIL_COND_V_MSG(!packed && channel != 15, ERR_CANT_CREATE, TTR("Invalid glyph channel."));
+ ERR_FAIL_COND_V_MSG(!packed && channel != 15, ERR_CANT_CREATE, RTR("Invalid glyph channel."));
int ch_off = 0;
switch (channel) {
case 1:
diff --git a/scene/resources/gradient.cpp b/scene/resources/gradient.cpp
index 79ac1b57c3..caaa3d8628 100644
--- a/scene/resources/gradient.cpp
+++ b/scene/resources/gradient.cpp
@@ -71,7 +71,7 @@ void Gradient::_bind_methods() {
ADD_PROPERTY(PropertyInfo(Variant::INT, "interpolation_mode", PROPERTY_HINT_ENUM, "Linear,Constant,Cubic"), "set_interpolation_mode", "get_interpolation_mode");
- ADD_GROUP("Raw data", "");
+ ADD_GROUP("Raw Data", "");
ADD_PROPERTY(PropertyInfo(Variant::PACKED_FLOAT32_ARRAY, "offsets"), "set_offsets", "get_offsets");
ADD_PROPERTY(PropertyInfo(Variant::PACKED_COLOR_ARRAY, "colors"), "set_colors", "get_colors");
diff --git a/scene/resources/height_map_shape_3d.cpp b/scene/resources/height_map_shape_3d.cpp
index 121930d86f..824dc4a544 100644
--- a/scene/resources/height_map_shape_3d.cpp
+++ b/scene/resources/height_map_shape_3d.cpp
@@ -29,6 +29,7 @@
/*************************************************************************/
#include "height_map_shape_3d.h"
+
#include "servers/physics_server_3d.h"
Vector<Vector3> HeightMapShape3D::get_debug_mesh_lines() const {
@@ -186,8 +187,8 @@ void HeightMapShape3D::_bind_methods() {
ClassDB::bind_method(D_METHOD("set_map_data", "data"), &HeightMapShape3D::set_map_data);
ClassDB::bind_method(D_METHOD("get_map_data"), &HeightMapShape3D::get_map_data);
- ADD_PROPERTY(PropertyInfo(Variant::INT, "map_width", PROPERTY_HINT_RANGE, "1,4096,1"), "set_map_width", "get_map_width");
- ADD_PROPERTY(PropertyInfo(Variant::INT, "map_depth", PROPERTY_HINT_RANGE, "1,4096,1"), "set_map_depth", "get_map_depth");
+ ADD_PROPERTY(PropertyInfo(Variant::INT, "map_width", PROPERTY_HINT_RANGE, "0.001,100,0.001,or_greater"), "set_map_width", "get_map_width");
+ ADD_PROPERTY(PropertyInfo(Variant::INT, "map_depth", PROPERTY_HINT_RANGE, "0.001,100,0.001,or_greater"), "set_map_depth", "get_map_depth");
ADD_PROPERTY(PropertyInfo(Variant::PACKED_FLOAT32_ARRAY, "map_data"), "set_map_data", "get_map_data");
}
diff --git a/scene/resources/packed_scene.cpp b/scene/resources/packed_scene.cpp
index 2f1ac7a83a..b1c2702a1e 100644
--- a/scene/resources/packed_scene.cpp
+++ b/scene/resources/packed_scene.cpp
@@ -34,7 +34,6 @@
#include "core/config/project_settings.h"
#include "core/core_string_names.h"
#include "core/io/resource_loader.h"
-#include "editor/editor_inspector.h"
#include "scene/2d/node_2d.h"
#include "scene/3d/node_3d.h"
#include "scene/gui/control.h"
@@ -363,8 +362,11 @@ Node *SceneState::instantiate(GenEditState p_edit_state) const {
}
}
- const Variant *args = binds.ptr();
- callable = callable.bind(&args, binds.size());
+ const Variant **argptrs = (const Variant **)alloca(sizeof(Variant *) * binds.size());
+ for (int j = 0; j < binds.size(); j++) {
+ argptrs[j] = &binds[j];
+ }
+ callable = callable.bind(argptrs, binds.size());
}
cfrom->connect(snames[c.signal], callable, varray(), CONNECT_PERSIST | c.flags);
diff --git a/scene/resources/separation_ray_shape_2d.cpp b/scene/resources/separation_ray_shape_2d.cpp
index 0406c91b70..df7b0d969a 100644
--- a/scene/resources/separation_ray_shape_2d.cpp
+++ b/scene/resources/separation_ray_shape_2d.cpp
@@ -89,7 +89,7 @@ void SeparationRayShape2D::_bind_methods() {
ClassDB::bind_method(D_METHOD("set_slide_on_slope", "active"), &SeparationRayShape2D::set_slide_on_slope);
ClassDB::bind_method(D_METHOD("get_slide_on_slope"), &SeparationRayShape2D::get_slide_on_slope);
- ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "length"), "set_length", "get_length");
+ ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "length", PROPERTY_HINT_RANGE, "0.01,1024,0.01,or_greater"), "set_length", "get_length");
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "slide_on_slope"), "set_slide_on_slope", "get_slide_on_slope");
}
diff --git a/scene/resources/separation_ray_shape_3d.cpp b/scene/resources/separation_ray_shape_3d.cpp
index 5aa7616589..736cb60c1c 100644
--- a/scene/resources/separation_ray_shape_3d.cpp
+++ b/scene/resources/separation_ray_shape_3d.cpp
@@ -80,7 +80,7 @@ void SeparationRayShape3D::_bind_methods() {
ClassDB::bind_method(D_METHOD("set_slide_on_slope", "active"), &SeparationRayShape3D::set_slide_on_slope);
ClassDB::bind_method(D_METHOD("get_slide_on_slope"), &SeparationRayShape3D::get_slide_on_slope);
- ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "length", PROPERTY_HINT_RANGE, "0,4096,0.001"), "set_length", "get_length");
+ ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "length", PROPERTY_HINT_RANGE, "0.001,100,0.001,or_greater"), "set_length", "get_length");
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "slide_on_slope"), "set_slide_on_slope", "get_slide_on_slope");
}
diff --git a/scene/resources/sphere_shape_3d.cpp b/scene/resources/sphere_shape_3d.cpp
index 8282992401..8de0dc1650 100644
--- a/scene/resources/sphere_shape_3d.cpp
+++ b/scene/resources/sphere_shape_3d.cpp
@@ -29,6 +29,7 @@
/*************************************************************************/
#include "sphere_shape_3d.h"
+
#include "servers/physics_server_3d.h"
Vector<Vector3> SphereShape3D::get_debug_mesh_lines() const {
@@ -77,7 +78,7 @@ void SphereShape3D::_bind_methods() {
ClassDB::bind_method(D_METHOD("set_radius", "radius"), &SphereShape3D::set_radius);
ClassDB::bind_method(D_METHOD("get_radius"), &SphereShape3D::get_radius);
- ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "radius", PROPERTY_HINT_RANGE, "0,4096,0.001"), "set_radius", "get_radius");
+ ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "radius", PROPERTY_HINT_RANGE, "0.001,100,0.001,or_greater"), "set_radius", "get_radius");
}
SphereShape3D::SphereShape3D() :
diff --git a/scene/resources/texture.cpp b/scene/resources/texture.cpp
index 3113987fbc..a66d9d9f27 100644
--- a/scene/resources/texture.cpp
+++ b/scene/resources/texture.cpp
@@ -32,12 +32,12 @@
#include "core/core_string_names.h"
#include "core/io/image_loader.h"
+#include "core/io/marshalls.h"
#include "core/math/geometry_2d.h"
#include "core/os/os.h"
#include "mesh.h"
#include "scene/resources/bit_map.h"
#include "servers/camera/camera_feed.h"
-
int Texture2D::get_width() const {
int ret;
if (GDVIRTUAL_REQUIRED_CALL(_get_width, ret)) {
@@ -338,6 +338,312 @@ ImageTexture::~ImageTexture() {
}
}
+/////////////////////
+
+void PortableCompressedTexture2D::_set_data(const Vector<uint8_t> &p_data) {
+ if (p_data.size() == 0) {
+ return; //nothing to do
+ }
+
+ const uint8_t *data = p_data.ptr();
+ uint32_t data_size = p_data.size();
+ ERR_FAIL_COND(data_size < 20);
+ compression_mode = CompressionMode(decode_uint32(data + 0));
+ format = Image::Format(decode_uint32(data + 4));
+ uint32_t mipmap_count = decode_uint32(data + 8);
+ size.width = decode_uint32(data + 12);
+ size.height = decode_uint32(data + 16);
+ mipmaps = mipmap_count > 1;
+
+ data += 20;
+ data_size -= 20;
+
+ Ref<Image> image;
+
+ switch (compression_mode) {
+ case COMPRESSION_MODE_LOSSLESS:
+ case COMPRESSION_MODE_LOSSY: {
+ Vector<uint8_t> image_data;
+
+ ERR_FAIL_COND(data_size < 4);
+ for (uint32_t i = 0; i < mipmap_count; i++) {
+ uint32_t mipsize = decode_uint32(data);
+ data += 4;
+ data_size -= 4;
+ ERR_FAIL_COND(mipsize < data_size);
+ Ref<Image> img = memnew(Image(data, data_size));
+ ERR_FAIL_COND(img->is_empty());
+ if (img->get_format() != format) { // May happen due to webp/png in the tiny mipmaps.
+ img->convert(format);
+ }
+ image_data.append_array(img->get_data());
+
+ data += mipsize;
+ data_size -= mipsize;
+ }
+
+ image = Ref<Image>(memnew(Image(size.width, size.height, mipmap_count > 1, format, image_data)));
+
+ } break;
+ case COMPRESSION_MODE_BASIS_UNIVERSAL: {
+ ERR_FAIL_COND(!Image::basis_universal_unpacker_ptr);
+ image = Image::basis_universal_unpacker_ptr(data, data_size);
+
+ } break;
+ case COMPRESSION_MODE_S3TC:
+ case COMPRESSION_MODE_ETC2:
+ case COMPRESSION_MODE_BPTC: {
+ image = Ref<Image>(memnew(Image(size.width, size.height, mipmap_count > 1, format, p_data.slice(20))));
+ } break;
+ }
+ ERR_FAIL_COND(image.is_null());
+
+ if (texture.is_null()) {
+ texture = RenderingServer::get_singleton()->texture_2d_create(image);
+ } else {
+ RID new_texture = RenderingServer::get_singleton()->texture_2d_create(image);
+ RenderingServer::get_singleton()->texture_replace(texture, new_texture);
+ }
+
+ image_stored = true;
+ RenderingServer::get_singleton()->texture_set_size_override(texture, size_override.width, size_override.height);
+ alpha_cache.unref();
+
+ if (keep_all_compressed_buffers || keep_compressed_buffer) {
+ compressed_buffer = p_data;
+ } else {
+ compressed_buffer.clear();
+ }
+}
+
+PortableCompressedTexture2D::CompressionMode PortableCompressedTexture2D::get_compression_mode() const {
+ return compression_mode;
+}
+Vector<uint8_t> PortableCompressedTexture2D::_get_data() const {
+ return compressed_buffer;
+}
+
+void PortableCompressedTexture2D::create_from_image(const Ref<Image> &p_image, CompressionMode p_compression_mode, bool p_normal_map, float p_lossy_quality) {
+ ERR_FAIL_COND(p_image.is_null() || p_image->is_empty());
+
+ Vector<uint8_t> buffer;
+
+ buffer.resize(20);
+ encode_uint32(p_compression_mode, buffer.ptrw());
+ encode_uint32(p_image->get_format(), buffer.ptrw() + 4);
+ encode_uint32(p_image->get_mipmap_count() + 1, buffer.ptrw() + 8);
+ encode_uint32(p_image->get_width(), buffer.ptrw() + 12);
+ encode_uint32(p_image->get_height(), buffer.ptrw() + 16);
+
+ switch (p_compression_mode) {
+ case COMPRESSION_MODE_LOSSLESS:
+ case COMPRESSION_MODE_LOSSY: {
+ for (int i = 0; i < p_image->get_mipmap_count() + 1; i++) {
+ Vector<uint8_t> data;
+ if (p_compression_mode == COMPRESSION_MODE_LOSSY) {
+ data = Image::webp_lossy_packer(p_image->get_image_from_mipmap(i), p_lossy_quality);
+ } else {
+ data = Image::webp_lossless_packer(p_image->get_image_from_mipmap(i));
+ }
+ int data_len = data.size();
+ buffer.resize(buffer.size() + 4);
+ encode_uint32(data_len, buffer.ptrw() + buffer.size() - 4);
+ buffer.append_array(data);
+ }
+ } break;
+ case COMPRESSION_MODE_BASIS_UNIVERSAL: {
+ Image::UsedChannels uc = p_image->detect_used_channels(p_normal_map ? Image::COMPRESS_SOURCE_NORMAL : Image::COMPRESS_SOURCE_GENERIC);
+ Vector<uint8_t> budata = Image::basis_universal_packer(p_image, uc);
+ buffer.append_array(budata);
+
+ } break;
+ case COMPRESSION_MODE_S3TC:
+ case COMPRESSION_MODE_ETC2:
+ case COMPRESSION_MODE_BPTC: {
+ Ref<Image> copy = p_image->duplicate();
+ switch (p_compression_mode) {
+ case COMPRESSION_MODE_S3TC:
+ copy->compress(Image::COMPRESS_S3TC);
+ break;
+ case COMPRESSION_MODE_ETC2:
+ copy->compress(Image::COMPRESS_ETC2);
+ break;
+ case COMPRESSION_MODE_BPTC:
+ copy->compress(Image::COMPRESS_BPTC);
+ break;
+ default: {
+ };
+ }
+
+ buffer.append_array(copy->get_data());
+
+ } break;
+ }
+
+ _set_data(buffer);
+}
+
+Image::Format PortableCompressedTexture2D::get_format() const {
+ return format;
+}
+
+Ref<Image> PortableCompressedTexture2D::get_image() const {
+ if (image_stored) {
+ return RenderingServer::get_singleton()->texture_2d_get(texture);
+ } else {
+ return Ref<Image>();
+ }
+}
+
+int PortableCompressedTexture2D::get_width() const {
+ return size.width;
+}
+
+int PortableCompressedTexture2D::get_height() const {
+ return size.height;
+}
+
+RID PortableCompressedTexture2D::get_rid() const {
+ if (texture.is_null()) {
+ //we are in trouble, create something temporary
+ texture = RenderingServer::get_singleton()->texture_2d_placeholder_create();
+ }
+ return texture;
+}
+
+bool PortableCompressedTexture2D::has_alpha() const {
+ return (format == Image::FORMAT_LA8 || format == Image::FORMAT_RGBA8);
+}
+
+void PortableCompressedTexture2D::draw(RID p_canvas_item, const Point2 &p_pos, const Color &p_modulate, bool p_transpose) const {
+ if (size.width == 0 || size.height == 0) {
+ return;
+ }
+ RenderingServer::get_singleton()->canvas_item_add_texture_rect(p_canvas_item, Rect2(p_pos, size), texture, false, p_modulate, p_transpose);
+}
+
+void PortableCompressedTexture2D::draw_rect(RID p_canvas_item, const Rect2 &p_rect, bool p_tile, const Color &p_modulate, bool p_transpose) const {
+ if (size.width == 0 || size.height == 0) {
+ return;
+ }
+ RenderingServer::get_singleton()->canvas_item_add_texture_rect(p_canvas_item, p_rect, texture, p_tile, p_modulate, p_transpose);
+}
+
+void PortableCompressedTexture2D::draw_rect_region(RID p_canvas_item, const Rect2 &p_rect, const Rect2 &p_src_rect, const Color &p_modulate, bool p_transpose, bool p_clip_uv) const {
+ if (size.width == 0 || size.height == 0) {
+ return;
+ }
+ RenderingServer::get_singleton()->canvas_item_add_texture_rect_region(p_canvas_item, p_rect, texture, p_src_rect, p_modulate, p_transpose, p_clip_uv);
+}
+
+bool PortableCompressedTexture2D::is_pixel_opaque(int p_x, int p_y) const {
+ if (!alpha_cache.is_valid()) {
+ Ref<Image> img = get_image();
+ if (img.is_valid()) {
+ if (img->is_compressed()) { //must decompress, if compressed
+ Ref<Image> decom = img->duplicate();
+ decom->decompress();
+ img = decom;
+ }
+ alpha_cache.instantiate();
+ alpha_cache->create_from_image_alpha(img);
+ }
+ }
+
+ if (alpha_cache.is_valid()) {
+ int aw = int(alpha_cache->get_size().width);
+ int ah = int(alpha_cache->get_size().height);
+ if (aw == 0 || ah == 0) {
+ return true;
+ }
+
+ int x = p_x * aw / size.width;
+ int y = p_y * ah / size.height;
+
+ x = CLAMP(x, 0, aw);
+ y = CLAMP(y, 0, ah);
+
+ return alpha_cache->get_bit(Point2(x, y));
+ }
+
+ return true;
+}
+
+void PortableCompressedTexture2D::set_size_override(const Size2 &p_size) {
+ size_override = p_size;
+ RenderingServer::get_singleton()->texture_set_size_override(texture, size_override.width, size_override.height);
+}
+
+Size2 PortableCompressedTexture2D::get_size_override() const {
+ return size_override;
+}
+
+void PortableCompressedTexture2D::set_path(const String &p_path, bool p_take_over) {
+ if (texture.is_valid()) {
+ RenderingServer::get_singleton()->texture_set_path(texture, p_path);
+ }
+
+ Resource::set_path(p_path, p_take_over);
+}
+
+bool PortableCompressedTexture2D::keep_all_compressed_buffers = false;
+
+void PortableCompressedTexture2D::set_keep_all_compressed_buffers(bool p_keep) {
+ keep_all_compressed_buffers = p_keep;
+}
+
+bool PortableCompressedTexture2D::is_keeping_all_compressed_buffers() {
+ return keep_all_compressed_buffers;
+}
+
+void PortableCompressedTexture2D::set_keep_compressed_buffer(bool p_keep) {
+ keep_compressed_buffer = p_keep;
+ if (!p_keep) {
+ compressed_buffer.clear();
+ }
+}
+
+bool PortableCompressedTexture2D::is_keeping_compressed_buffer() const {
+ return keep_compressed_buffer;
+}
+
+void PortableCompressedTexture2D::_bind_methods() {
+ ClassDB::bind_method(D_METHOD("create_from_image", "image", "compression_mode", "normal_map", "lossy_quality"), &PortableCompressedTexture2D::create_from_image, DEFVAL(false), DEFVAL(0.8));
+ ClassDB::bind_method(D_METHOD("get_format"), &PortableCompressedTexture2D::get_format);
+ ClassDB::bind_method(D_METHOD("get_compression_mode"), &PortableCompressedTexture2D::get_compression_mode);
+
+ ClassDB::bind_method(D_METHOD("set_size_override", "size"), &PortableCompressedTexture2D::set_size_override);
+ ClassDB::bind_method(D_METHOD("get_size_override"), &PortableCompressedTexture2D::get_size_override);
+
+ ClassDB::bind_method(D_METHOD("set_keep_compressed_buffer", "keep"), &PortableCompressedTexture2D::set_keep_compressed_buffer);
+ ClassDB::bind_method(D_METHOD("is_keeping_compressed_buffer"), &PortableCompressedTexture2D::is_keeping_compressed_buffer);
+
+ ClassDB::bind_method(D_METHOD("_set_data", "data"), &PortableCompressedTexture2D::_set_data);
+ ClassDB::bind_method(D_METHOD("_get_data"), &PortableCompressedTexture2D::_get_data);
+
+ ClassDB::bind_static_method("PortableCompressedTexture2D", D_METHOD("set_keep_all_compressed_buffers", "keep"), &PortableCompressedTexture2D::set_keep_all_compressed_buffers);
+ ClassDB::bind_static_method("PortableCompressedTexture2D", D_METHOD("is_keeping_all_compressed_buffers"), &PortableCompressedTexture2D::is_keeping_all_compressed_buffers);
+
+ ADD_PROPERTY(PropertyInfo(Variant::PACKED_BYTE_ARRAY, "_data", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NO_EDITOR), "_set_data", "_get_data");
+ ADD_PROPERTY(PropertyInfo(Variant::VECTOR2, "size_override"), "set_size_override", "get_size_override");
+ ADD_PROPERTY(PropertyInfo(Variant::BOOL, "keep_compressed_buffer"), "set_keep_compressed_buffer", "is_keeping_compressed_buffer");
+
+ BIND_ENUM_CONSTANT(COMPRESSION_MODE_LOSSLESS);
+ BIND_ENUM_CONSTANT(COMPRESSION_MODE_LOSSY);
+ BIND_ENUM_CONSTANT(COMPRESSION_MODE_BASIS_UNIVERSAL);
+ BIND_ENUM_CONSTANT(COMPRESSION_MODE_S3TC);
+ BIND_ENUM_CONSTANT(COMPRESSION_MODE_ETC2);
+ BIND_ENUM_CONSTANT(COMPRESSION_MODE_BPTC);
+}
+
+PortableCompressedTexture2D::PortableCompressedTexture2D() {}
+
+PortableCompressedTexture2D::~PortableCompressedTexture2D() {
+ if (texture.is_valid()) {
+ RenderingServer::get_singleton()->free(texture);
+ }
+}
+
//////////////////////////////////////////
Ref<Image> CompressedTexture2D::load_image_from_file(FileAccess *f, int p_size_limit) {
diff --git a/scene/resources/texture.h b/scene/resources/texture.h
index 1e07b83547..7e194fd21d 100644
--- a/scene/resources/texture.h
+++ b/scene/resources/texture.h
@@ -137,6 +137,78 @@ public:
~ImageTexture();
};
+class PortableCompressedTexture2D : public Texture2D {
+ GDCLASS(PortableCompressedTexture2D, Texture2D);
+
+public:
+ enum CompressionMode {
+ COMPRESSION_MODE_LOSSLESS,
+ COMPRESSION_MODE_LOSSY,
+ COMPRESSION_MODE_BASIS_UNIVERSAL,
+ COMPRESSION_MODE_S3TC,
+ COMPRESSION_MODE_ETC2,
+ COMPRESSION_MODE_BPTC,
+ };
+
+private:
+ CompressionMode compression_mode = COMPRESSION_MODE_LOSSLESS;
+ static bool keep_all_compressed_buffers;
+ bool keep_compressed_buffer = false;
+ Vector<uint8_t> compressed_buffer;
+ Size2 size;
+ Size2 size_override;
+ bool mipmaps = false;
+ Image::Format format = Image::FORMAT_L8;
+
+ mutable RID texture;
+ mutable Ref<BitMap> alpha_cache;
+
+ bool image_stored = false;
+
+protected:
+ Vector<uint8_t> _get_data() const;
+ void _set_data(const Vector<uint8_t> &p_data);
+
+ static void _bind_methods();
+
+public:
+ CompressionMode get_compression_mode() const;
+ void create_from_image(const Ref<Image> &p_image, CompressionMode p_compression_mode, bool p_normal_map = false, float p_lossy_quality = 0.8);
+
+ Image::Format get_format() const;
+
+ void update(const Ref<Image> &p_image);
+ Ref<Image> get_image() const override;
+
+ int get_width() const override;
+ int get_height() const override;
+
+ virtual RID get_rid() const override;
+
+ bool has_alpha() const override;
+ virtual void draw(RID p_canvas_item, const Point2 &p_pos, const Color &p_modulate = Color(1, 1, 1), bool p_transpose = false) const override;
+ virtual void draw_rect(RID p_canvas_item, const Rect2 &p_rect, bool p_tile = false, const Color &p_modulate = Color(1, 1, 1), bool p_transpose = false) const override;
+ virtual void draw_rect_region(RID p_canvas_item, const Rect2 &p_rect, const Rect2 &p_src_rect, const Color &p_modulate = Color(1, 1, 1), bool p_transpose = false, bool p_clip_uv = true) const override;
+
+ bool is_pixel_opaque(int p_x, int p_y) const override;
+
+ virtual void set_path(const String &p_path, bool p_take_over = false) override;
+
+ void set_size_override(const Size2 &p_size);
+ Size2 get_size_override() const;
+
+ void set_keep_compressed_buffer(bool p_keep);
+ bool is_keeping_compressed_buffer() const;
+
+ static void set_keep_all_compressed_buffers(bool p_keep);
+ static bool is_keeping_all_compressed_buffers();
+
+ PortableCompressedTexture2D();
+ ~PortableCompressedTexture2D();
+};
+
+VARIANT_ENUM_CAST(PortableCompressedTexture2D::CompressionMode)
+
class CompressedTexture2D : public Texture2D {
GDCLASS(CompressedTexture2D, Texture2D);
diff --git a/scene/resources/tile_set.cpp b/scene/resources/tile_set.cpp
index 1174117028..da9e1ef2f6 100644
--- a/scene/resources/tile_set.cpp
+++ b/scene/resources/tile_set.cpp
@@ -3273,7 +3273,7 @@ void TileSet::_bind_methods() {
ADD_GROUP("Navigation", "");
ADD_ARRAY("navigation_layers", "navigation_layer_");
- ADD_GROUP("Custom data", "");
+ ADD_GROUP("Custom Data", "");
ADD_ARRAY("custom_data_layers", "custom_data_layer_");
// -- Enum binding --
diff --git a/scene/resources/visual_shader.cpp b/scene/resources/visual_shader.cpp
index 997b523d2e..129f76702e 100644
--- a/scene/resources/visual_shader.cpp
+++ b/scene/resources/visual_shader.cpp
@@ -2580,8 +2580,8 @@ const VisualShaderNodeInput::Port VisualShaderNodeInput::ports[] = {
{ Shader::MODE_SPATIAL, VisualShader::TYPE_VERTEX, VisualShaderNode::PORT_TYPE_TRANSFORM, "modelview_matrix", "MODELVIEW_MATRIX" },
{ Shader::MODE_SPATIAL, VisualShader::TYPE_VERTEX, VisualShaderNode::PORT_TYPE_TRANSFORM, "inv_view_matrix", "INV_VIEW_MATRIX" },
{ Shader::MODE_SPATIAL, VisualShader::TYPE_VERTEX, VisualShaderNode::PORT_TYPE_TRANSFORM, "view_matrix", "VIEW_MATRIX" },
- { Shader::MODE_SPATIAL, VisualShader::TYPE_VERTEX, VisualShaderNode::PORT_TYPE_TRANSFORM, "projection", "PROJECTION_MATRIX" },
- { Shader::MODE_SPATIAL, VisualShader::TYPE_VERTEX, VisualShaderNode::PORT_TYPE_TRANSFORM, "inv_projection", "INV_PROJECTION_MATRIX" },
+ { Shader::MODE_SPATIAL, VisualShader::TYPE_VERTEX, VisualShaderNode::PORT_TYPE_TRANSFORM, "projection_matrix", "PROJECTION_MATRIX" },
+ { Shader::MODE_SPATIAL, VisualShader::TYPE_VERTEX, VisualShaderNode::PORT_TYPE_TRANSFORM, "inv_projection_matrix", "INV_PROJECTION_MATRIX" },
{ Shader::MODE_SPATIAL, VisualShader::TYPE_VERTEX, VisualShaderNode::PORT_TYPE_SCALAR, "time", "TIME" },
{ Shader::MODE_SPATIAL, VisualShader::TYPE_VERTEX, VisualShaderNode::PORT_TYPE_VECTOR_2D, "viewport_size", "VIEWPORT_SIZE" },
{ Shader::MODE_SPATIAL, VisualShader::TYPE_VERTEX, VisualShaderNode::PORT_TYPE_BOOLEAN, "output_is_srgb", "OUTPUT_IS_SRGB" },
@@ -2627,7 +2627,6 @@ const VisualShaderNodeInput::Port VisualShaderNodeInput::ports[] = {
{ Shader::MODE_SPATIAL, VisualShader::TYPE_LIGHT, VisualShaderNode::PORT_TYPE_VECTOR_3D, "light", "LIGHT" },
{ Shader::MODE_SPATIAL, VisualShader::TYPE_LIGHT, VisualShaderNode::PORT_TYPE_VECTOR_3D, "light_color", "LIGHT_COLOR" },
{ Shader::MODE_SPATIAL, VisualShader::TYPE_LIGHT, VisualShaderNode::PORT_TYPE_SCALAR, "attenuation", "ATTENUATION" },
- { Shader::MODE_SPATIAL, VisualShader::TYPE_LIGHT, VisualShaderNode::PORT_TYPE_VECTOR_3D, "shadow_attenuation", "SHADOW_ATTENUATION" },
{ Shader::MODE_SPATIAL, VisualShader::TYPE_LIGHT, VisualShaderNode::PORT_TYPE_VECTOR_3D, "albedo", "ALBEDO" },
{ Shader::MODE_SPATIAL, VisualShader::TYPE_LIGHT, VisualShaderNode::PORT_TYPE_VECTOR_3D, "backlight", "BACKLIGHT" },
{ Shader::MODE_SPATIAL, VisualShader::TYPE_LIGHT, VisualShaderNode::PORT_TYPE_VECTOR_3D, "diffuse", "DIFFUSE_LIGHT" },
@@ -3106,7 +3105,7 @@ void VisualShaderNodeInput::_validate_property(PropertyInfo &property) const {
}
if (port_list.is_empty()) {
- port_list = TTR("None");
+ port_list = RTR("None");
}
property.hint_string = port_list;
}
@@ -3649,7 +3648,7 @@ String VisualShaderNodeUniform::get_warning(Shader::Mode p_mode, VisualShader::T
List<String> keyword_list;
ShaderLanguage::get_keyword_list(&keyword_list);
if (keyword_list.find(uniform_name)) {
- return TTR("Shader keywords cannot be used as uniform names.\nChoose another name.");
+ return RTR("Shader keywords cannot be used as uniform names.\nChoose another name.");
}
if (!is_qualifier_supported(qualifier)) {
String qualifier_str;
@@ -3665,11 +3664,11 @@ String VisualShaderNodeUniform::get_warning(Shader::Mode p_mode, VisualShader::T
default:
break;
}
- return vformat(TTR("This uniform type does not support the '%s' qualifier."), qualifier_str);
+ return vformat(RTR("This uniform type does not support the '%s' qualifier."), qualifier_str);
} else if (qualifier == Qualifier::QUAL_GLOBAL) {
RS::GlobalVariableType gvt = RS::get_singleton()->global_variable_get_type(uniform_name);
if (gvt == RS::GLOBAL_VAR_TYPE_MAX) {
- return vformat(TTR("Global uniform '%s' does not exist.\nCreate it in the Project Settings."), uniform_name);
+ return vformat(RTR("Global uniform '%s' does not exist.\nCreate it in the Project Settings."), uniform_name);
}
bool incompatible_type = false;
switch (gvt) {
@@ -3727,7 +3726,7 @@ String VisualShaderNodeUniform::get_warning(Shader::Mode p_mode, VisualShader::T
break;
}
if (incompatible_type) {
- return vformat(TTR("Global uniform '%s' has an incompatible type for this kind of node.\nChange it in the Project Settings."), uniform_name);
+ return vformat(RTR("Global uniform '%s' has an incompatible type for this kind of node.\nChange it in the Project Settings."), uniform_name);
}
}
diff --git a/scene/resources/visual_shader_nodes.cpp b/scene/resources/visual_shader_nodes.cpp
index c34aca32dc..4e16353460 100644
--- a/scene/resources/visual_shader_nodes.cpp
+++ b/scene/resources/visual_shader_nodes.cpp
@@ -892,7 +892,7 @@ Vector<StringName> VisualShaderNodeTexture::get_editable_properties() const {
String VisualShaderNodeTexture::get_warning(Shader::Mode p_mode, VisualShader::Type p_type) const {
if (is_input_port_connected(2) && source != SOURCE_PORT) {
- return TTR("The sampler port is connected but not used. Consider changing the source to 'SamplerPort'.");
+ return RTR("The sampler port is connected but not used. Consider changing the source to 'SamplerPort'.");
}
if (source == SOURCE_TEXTURE) {
@@ -917,12 +917,12 @@ String VisualShaderNodeTexture::get_warning(Shader::Mode p_mode, VisualShader::T
if (source == SOURCE_DEPTH && p_mode == Shader::MODE_SPATIAL && p_type == VisualShader::TYPE_FRAGMENT) {
if (get_output_port_for_preview() == 0) { // DEPTH_TEXTURE is not supported in preview(canvas_item) shader
- return TTR("Invalid source for preview.");
+ return RTR("Invalid source for preview.");
}
return String(); // all good
}
- return TTR("Invalid source for shader.");
+ return RTR("Invalid source for shader.");
}
void VisualShaderNodeTexture::_bind_methods() {
@@ -1255,7 +1255,7 @@ void VisualShaderNodeSample3D::_bind_methods() {
String VisualShaderNodeSample3D::get_warning(Shader::Mode p_mode, VisualShader::Type p_type) const {
if (is_input_port_connected(2) && source != SOURCE_PORT) {
- return TTR("The sampler port is connected but not used. Consider changing the source to 'SamplerPort'.");
+ return RTR("The sampler port is connected but not used. Consider changing the source to 'SamplerPort'.");
}
if (source == SOURCE_TEXTURE) {
@@ -1264,7 +1264,7 @@ String VisualShaderNodeSample3D::get_warning(Shader::Mode p_mode, VisualShader::
if (source == SOURCE_PORT) {
return String(); // all good
}
- return TTR("Invalid source for shader.");
+ return RTR("Invalid source for shader.");
}
VisualShaderNodeSample3D::VisualShaderNodeSample3D() {
@@ -1575,7 +1575,7 @@ Vector<StringName> VisualShaderNodeCubemap::get_editable_properties() const {
String VisualShaderNodeCubemap::get_warning(Shader::Mode p_mode, VisualShader::Type p_type) const {
if (is_input_port_connected(2) && source != SOURCE_PORT) {
- return TTR("The sampler port is connected but not used. Consider changing the source to 'SamplerPort'.");
+ return RTR("The sampler port is connected but not used. Consider changing the source to 'SamplerPort'.");
}
return String();
}
@@ -1967,7 +1967,7 @@ String VisualShaderNodeVectorOp::get_warning(Shader::Mode p_mode, VisualShader::
}
if (invalid_type) {
- return TTR("Invalid operator for that type.");
+ return RTR("Invalid operator for that type.");
}
return String();
@@ -2741,7 +2741,7 @@ String VisualShaderNodeVectorFunc::get_warning(Shader::Mode p_mode, VisualShader
}
if (invalid_type) {
- return TTR("Invalid function for that type.");
+ return RTR("Invalid function for that type.");
}
return String();
@@ -5586,10 +5586,10 @@ bool VisualShaderNodeTextureUniform::is_show_prop_names() const {
Map<StringName, String> VisualShaderNodeTextureUniform::get_editable_properties_names() const {
Map<StringName, String> names;
- names.insert("texture_type", TTR("Type"));
- names.insert("color_default", TTR("Default Color"));
- names.insert("texture_filter", TTR("Filter"));
- names.insert("texture_repeat", TTR("Repeat"));
+ names.insert("texture_type", RTR("Type"));
+ names.insert("color_default", RTR("Default Color"));
+ names.insert("texture_filter", RTR("Filter"));
+ names.insert("texture_repeat", RTR("Repeat"));
return names;
}
@@ -6458,7 +6458,7 @@ String VisualShaderNodeCompare::get_output_port_name(int p_port) const {
String VisualShaderNodeCompare::get_warning(Shader::Mode p_mode, VisualShader::Type p_type) const {
if (comparison_type == CTYPE_BOOLEAN || comparison_type == CTYPE_TRANSFORM) {
if (func > FUNC_NOT_EQUAL) {
- return TTR("Invalid comparison function for that type.");
+ return RTR("Invalid comparison function for that type.");
}
}
return "";
diff --git a/scene/resources/visual_shader_particle_nodes.cpp b/scene/resources/visual_shader_particle_nodes.cpp
index 398c33c452..0879f2e735 100644
--- a/scene/resources/visual_shader_particle_nodes.cpp
+++ b/scene/resources/visual_shader_particle_nodes.cpp
@@ -76,7 +76,7 @@ Vector<StringName> VisualShaderNodeParticleEmitter::get_editable_properties() co
Map<StringName, String> VisualShaderNodeParticleEmitter::get_editable_properties_names() const {
Map<StringName, String> names;
- names.insert("mode_2d", TTR("2D Mode"));
+ names.insert("mode_2d", RTR("2D Mode"));
return names;
}
@@ -707,10 +707,10 @@ Vector<StringName> VisualShaderNodeParticleMeshEmitter::get_editable_properties(
Map<StringName, String> VisualShaderNodeParticleMeshEmitter::get_editable_properties_names() const {
Map<StringName, String> names = VisualShaderNodeParticleEmitter::get_editable_properties_names();
- names.insert("mesh", TTR("Mesh"));
- names.insert("use_all_surfaces", TTR("Use All Surfaces"));
+ names.insert("mesh", RTR("Mesh"));
+ names.insert("use_all_surfaces", RTR("Use All Surfaces"));
if (!use_all_surfaces) {
- names.insert("surface_index", TTR("Surface Index"));
+ names.insert("surface_index", RTR("Surface Index"));
}
return names;
diff --git a/scene/resources/world_boundary_shape_2d.cpp b/scene/resources/world_boundary_shape_2d.cpp
index 9789388c6a..ac5be79d24 100644
--- a/scene/resources/world_boundary_shape_2d.cpp
+++ b/scene/resources/world_boundary_shape_2d.cpp
@@ -108,7 +108,7 @@ void WorldBoundaryShape2D::_bind_methods() {
ClassDB::bind_method(D_METHOD("get_distance"), &WorldBoundaryShape2D::get_distance);
ADD_PROPERTY(PropertyInfo(Variant::VECTOR2, "normal"), "set_normal", "get_normal");
- ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "distance"), "set_distance", "get_distance");
+ ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "distance", PROPERTY_HINT_RANGE, "0.01,1024,0.01,or_greater"), "set_distance", "get_distance");
}
WorldBoundaryShape2D::WorldBoundaryShape2D() :
diff --git a/servers/audio/effects/audio_effect_record.cpp b/servers/audio/effects/audio_effect_record.cpp
index a5866bb380..0069f6ad85 100644
--- a/servers/audio/effects/audio_effect_record.cpp
+++ b/servers/audio/effects/audio_effect_record.cpp
@@ -30,6 +30,11 @@
#include "audio_effect_record.h"
+#ifdef TOOLS_ENABLED
+// FIXME: This file shouldn't depend on editor stuff.
+#include "editor/import/resource_importer_wav.h"
+#endif
+
void AudioEffectRecordInstance::process(const AudioFrame *p_src_frames, AudioFrame *p_dst_frames, int p_frame_count) {
if (!is_recording) {
for (int i = 0; i < p_frame_count; i++) {
@@ -250,8 +255,12 @@ Ref<AudioStreamSample> AudioEffectRecord::get_recording() const {
Vector<uint8_t> bleft;
Vector<uint8_t> bright;
+#ifdef TOOLS_ENABLED
ResourceImporterWAV::_compress_ima_adpcm(left, bleft);
ResourceImporterWAV::_compress_ima_adpcm(right, bright);
+#else
+ ERR_PRINT("AudioEffectRecord cannot do IMA ADPCM compression at runtime.");
+#endif
int dl = bleft.size();
dst_data.resize(dl * 2);
diff --git a/servers/audio/effects/audio_effect_record.h b/servers/audio/effects/audio_effect_record.h
index 18b5d4d83c..305484d1cb 100644
--- a/servers/audio/effects/audio_effect_record.h
+++ b/servers/audio/effects/audio_effect_record.h
@@ -35,7 +35,6 @@
#include "core/io/marshalls.h"
#include "core/os/os.h"
#include "core/os/thread.h"
-#include "editor/import/resource_importer_wav.h"
#include "scene/resources/audio_stream_sample.h"
#include "servers/audio/audio_effect.h"
#include "servers/audio_server.h"
diff --git a/servers/display_server.cpp b/servers/display_server.cpp
index 819c151087..67bfc75426 100644
--- a/servers/display_server.cpp
+++ b/servers/display_server.cpp
@@ -44,22 +44,52 @@ DisplayServer::DisplayServerCreate DisplayServer::server_create_functions[Displa
int DisplayServer::server_create_count = 1;
-void DisplayServer::global_menu_add_item(const String &p_menu_root, const String &p_label, const Callable &p_callback, const Variant &p_tag) {
+void DisplayServer::global_menu_add_item(const String &p_menu_root, const String &p_label, const Callable &p_callback, const Variant &p_tag, Key p_accel, int p_index) {
WARN_PRINT("Global menus not supported by this display server.");
}
-void DisplayServer::global_menu_add_check_item(const String &p_menu_root, const String &p_label, const Callable &p_callback, const Variant &p_tag) {
+void DisplayServer::global_menu_add_check_item(const String &p_menu_root, const String &p_label, const Callable &p_callback, const Variant &p_tag, Key p_accel, int p_index) {
WARN_PRINT("Global menus not supported by this display server.");
}
-void DisplayServer::global_menu_add_submenu_item(const String &p_menu_root, const String &p_label, const String &p_submenu) {
+void DisplayServer::global_menu_add_icon_item(const String &p_menu_root, const Ref<Texture2D> &p_icon, const String &p_label, const Callable &p_callback, const Variant &p_tag, Key p_accel, int p_index) {
WARN_PRINT("Global menus not supported by this display server.");
}
-void DisplayServer::global_menu_add_separator(const String &p_menu_root) {
+void DisplayServer::global_menu_add_icon_check_item(const String &p_menu_root, const Ref<Texture2D> &p_icon, const String &p_label, const Callable &p_callback, const Variant &p_tag, Key p_accel, int p_index) {
WARN_PRINT("Global menus not supported by this display server.");
}
+void DisplayServer::global_menu_add_radio_check_item(const String &p_menu_root, const String &p_label, const Callable &p_callback, const Variant &p_tag, Key p_accel, int p_index) {
+ WARN_PRINT("Global menus not supported by this display server.");
+}
+
+void DisplayServer::global_menu_add_icon_radio_check_item(const String &p_menu_root, const Ref<Texture2D> &p_icon, const String &p_label, const Callable &p_callback, const Variant &p_tag, Key p_accel, int p_index) {
+ WARN_PRINT("Global menus not supported by this display server.");
+}
+
+void DisplayServer::global_menu_add_multistate_item(const String &p_menu_root, const String &p_label, int p_max_states, int p_default_state, const Callable &p_callback, const Variant &p_tag, Key p_accel, int p_index) {
+ WARN_PRINT("Global menus not supported by this display server.");
+}
+
+void DisplayServer::global_menu_add_submenu_item(const String &p_menu_root, const String &p_label, const String &p_submenu, int p_index) {
+ WARN_PRINT("Global menus not supported by this display server.");
+}
+
+void DisplayServer::global_menu_add_separator(const String &p_menu_root, int p_index) {
+ WARN_PRINT("Global menus not supported by this display server.");
+}
+
+int DisplayServer::global_menu_get_item_index_from_text(const String &p_menu_root, const String &p_text) const {
+ WARN_PRINT("Global menus not supported by this display server.");
+ return -1;
+}
+
+int DisplayServer::global_menu_get_item_index_from_tag(const String &p_menu_root, const Variant &p_tag) const {
+ WARN_PRINT("Global menus not supported by this display server.");
+ return -1;
+}
+
void DisplayServer::global_menu_set_item_callback(const String &p_menu_root, int p_idx, const Callable &p_callback) {
WARN_PRINT("Global menus not supported by this display server.");
}
@@ -74,26 +104,61 @@ bool DisplayServer::global_menu_is_item_checkable(const String &p_menu_root, int
return false;
}
-Callable DisplayServer::global_menu_get_item_callback(const String &p_menu_root, int p_idx) {
+bool DisplayServer::global_menu_is_item_radio_checkable(const String &p_menu_root, int p_idx) const {
+ WARN_PRINT("Global menus not supported by this display server.");
+ return false;
+}
+
+Callable DisplayServer::global_menu_get_item_callback(const String &p_menu_root, int p_idx) const {
WARN_PRINT("Global menus not supported by this display server.");
return Callable();
}
-Variant DisplayServer::global_menu_get_item_tag(const String &p_menu_root, int p_idx) {
+Variant DisplayServer::global_menu_get_item_tag(const String &p_menu_root, int p_idx) const {
WARN_PRINT("Global menus not supported by this display server.");
return Variant();
}
-String DisplayServer::global_menu_get_item_text(const String &p_menu_root, int p_idx) {
+String DisplayServer::global_menu_get_item_text(const String &p_menu_root, int p_idx) const {
WARN_PRINT("Global menus not supported by this display server.");
return String();
}
-String DisplayServer::global_menu_get_item_submenu(const String &p_menu_root, int p_idx) {
+String DisplayServer::global_menu_get_item_submenu(const String &p_menu_root, int p_idx) const {
WARN_PRINT("Global menus not supported by this display server.");
return String();
}
+Key DisplayServer::global_menu_get_item_accelerator(const String &p_menu_root, int p_idx) const {
+ WARN_PRINT("Global menus not supported by this display server.");
+ return Key::NONE;
+}
+
+bool DisplayServer::global_menu_is_item_disabled(const String &p_menu_root, int p_idx) const {
+ WARN_PRINT("Global menus not supported by this display server.");
+ return false;
+}
+
+String DisplayServer::global_menu_get_item_tooltip(const String &p_menu_root, int p_idx) const {
+ WARN_PRINT("Global menus not supported by this display server.");
+ return String();
+}
+
+int DisplayServer::global_menu_get_item_state(const String &p_menu_root, int p_idx) const {
+ WARN_PRINT("Global menus not supported by this display server.");
+ return -1;
+}
+
+int DisplayServer::global_menu_get_item_max_states(const String &p_menu_root, int p_idx) const {
+ WARN_PRINT("Global menus not supported by this display server.");
+ return -1;
+}
+
+Ref<Texture2D> DisplayServer::global_menu_get_item_icon(const String &p_menu_root, int p_idx) const {
+ WARN_PRINT("Global menus not supported by this display server.");
+ return Ref<Texture2D>();
+}
+
void DisplayServer::global_menu_set_item_checked(const String &p_menu_root, int p_idx, bool p_checked) {
WARN_PRINT("Global menus not supported by this display server.");
}
@@ -102,6 +167,10 @@ void DisplayServer::global_menu_set_item_checkable(const String &p_menu_root, in
WARN_PRINT("Global menus not supported by this display server.");
}
+void DisplayServer::global_menu_set_item_radio_checkable(const String &p_menu_root, int p_idx, bool p_checkable) {
+ WARN_PRINT("Global menus not supported by this display server.");
+}
+
void DisplayServer::global_menu_set_item_tag(const String &p_menu_root, int p_idx, const Variant &p_tag) {
WARN_PRINT("Global menus not supported by this display server.");
}
@@ -114,6 +183,30 @@ void DisplayServer::global_menu_set_item_submenu(const String &p_menu_root, int
WARN_PRINT("Global menus not supported by this display server.");
}
+void DisplayServer::global_menu_set_item_accelerator(const String &p_menu_root, int p_idx, Key p_keycode) {
+ WARN_PRINT("Global menus not supported by this display server.");
+}
+
+void DisplayServer::global_menu_set_item_disabled(const String &p_menu_root, int p_idx, bool p_disabled) {
+ WARN_PRINT("Global menus not supported by this display server.");
+}
+
+void DisplayServer::global_menu_set_item_tooltip(const String &p_menu_root, int p_idx, const String &p_tooltip) {
+ WARN_PRINT("Global menus not supported by this display server.");
+}
+
+void DisplayServer::global_menu_set_item_state(const String &p_menu_root, int p_idx, int p_state) {
+ WARN_PRINT("Global menus not supported by this display server.");
+}
+
+void DisplayServer::global_menu_set_item_max_states(const String &p_menu_root, int p_idx, int p_max_states) {
+ WARN_PRINT("Global menus not supported by this display server.");
+}
+
+void DisplayServer::global_menu_set_item_icon(const String &p_menu_root, int p_idx, const Ref<Texture2D> &p_icon) {
+ WARN_PRINT("Global menus not supported by this display server.");
+}
+
int DisplayServer::global_menu_get_item_count(const String &p_menu_root) const {
WARN_PRINT("Global menus not supported by this display server.");
return 0;
@@ -135,7 +228,7 @@ DisplayServer::MouseMode DisplayServer::mouse_get_mode() const {
return MOUSE_MODE_VISIBLE;
}
-void DisplayServer::mouse_warp_to_position(const Point2i &p_to) {
+void DisplayServer::warp_mouse(const Point2i &p_position) {
WARN_PRINT("Mouse warping is not supported by this display server.");
}
@@ -341,24 +434,46 @@ void DisplayServer::_bind_methods() {
ClassDB::bind_method(D_METHOD("has_feature", "feature"), &DisplayServer::has_feature);
ClassDB::bind_method(D_METHOD("get_name"), &DisplayServer::get_name);
- ClassDB::bind_method(D_METHOD("global_menu_add_item", "menu_root", "label", "callback", "tag"), &DisplayServer::global_menu_add_item, DEFVAL(Variant()));
- ClassDB::bind_method(D_METHOD("global_menu_add_check_item", "menu_root", "label", "callback", "tag"), &DisplayServer::global_menu_add_check_item, DEFVAL(Variant()));
- ClassDB::bind_method(D_METHOD("global_menu_add_submenu_item", "menu_root", "label", "submenu"), &DisplayServer::global_menu_add_submenu_item);
- ClassDB::bind_method(D_METHOD("global_menu_add_separator", "menu_root"), &DisplayServer::global_menu_add_separator);
+ ClassDB::bind_method(D_METHOD("global_menu_add_item", "menu_root", "label", "callback", "tag", "accelerator", "index"), &DisplayServer::global_menu_add_item, DEFVAL(Callable()), DEFVAL(Variant()), DEFVAL(Key::NONE), DEFVAL(-1));
+ ClassDB::bind_method(D_METHOD("global_menu_add_check_item", "menu_root", "label", "callback", "tag", "accelerator", "index"), &DisplayServer::global_menu_add_check_item, DEFVAL(Callable()), DEFVAL(Variant()), DEFVAL(Key::NONE), DEFVAL(-1));
+ ClassDB::bind_method(D_METHOD("global_menu_add_icon_item", "menu_root", "icon", "label", "callback", "tag", "accelerator", "index"), &DisplayServer::global_menu_add_icon_item, DEFVAL(Callable()), DEFVAL(Variant()), DEFVAL(Key::NONE), DEFVAL(-1));
+ ClassDB::bind_method(D_METHOD("global_menu_add_icon_check_item", "menu_root", "icon", "label", "callback", "tag", "accelerator", "index"), &DisplayServer::global_menu_add_icon_check_item, DEFVAL(Callable()), DEFVAL(Variant()), DEFVAL(Key::NONE), DEFVAL(-1));
+ ClassDB::bind_method(D_METHOD("global_menu_add_radio_check_item", "menu_root", "label", "callback", "tag", "accelerator", "index"), &DisplayServer::global_menu_add_radio_check_item, DEFVAL(Callable()), DEFVAL(Variant()), DEFVAL(Key::NONE), DEFVAL(-1));
+ ClassDB::bind_method(D_METHOD("global_menu_add_icon_radio_check_item", "menu_root", "icon", "label", "callback", "tag", "accelerator", "index"), &DisplayServer::global_menu_add_icon_radio_check_item, DEFVAL(Callable()), DEFVAL(Variant()), DEFVAL(Key::NONE), DEFVAL(-1));
+ ClassDB::bind_method(D_METHOD("global_menu_add_multistate_item", "menu_root", "labe", "max_states", "default_state", "callback", "tag", "accelerator", "index"), &DisplayServer::global_menu_add_multistate_item, DEFVAL(Callable()), DEFVAL(Variant()), DEFVAL(Key::NONE), DEFVAL(-1));
+ ClassDB::bind_method(D_METHOD("global_menu_add_submenu_item", "menu_root", "label", "submenu", "index"), &DisplayServer::global_menu_add_submenu_item, DEFVAL(-1));
+ ClassDB::bind_method(D_METHOD("global_menu_add_separator", "menu_root", "index"), &DisplayServer::global_menu_add_separator, DEFVAL(-1));
+
+ ClassDB::bind_method(D_METHOD("global_menu_get_item_index_from_text", "menu_root", "text"), &DisplayServer::global_menu_get_item_index_from_text);
+ ClassDB::bind_method(D_METHOD("global_menu_get_item_index_from_tag", "menu_root", "tag"), &DisplayServer::global_menu_get_item_index_from_tag);
ClassDB::bind_method(D_METHOD("global_menu_is_item_checked", "menu_root", "idx"), &DisplayServer::global_menu_is_item_checked);
ClassDB::bind_method(D_METHOD("global_menu_is_item_checkable", "menu_root", "idx"), &DisplayServer::global_menu_is_item_checkable);
+ ClassDB::bind_method(D_METHOD("global_menu_is_item_radio_checkable", "menu_root", "idx"), &DisplayServer::global_menu_is_item_radio_checkable);
ClassDB::bind_method(D_METHOD("global_menu_get_item_callback", "menu_root", "idx"), &DisplayServer::global_menu_get_item_callback);
ClassDB::bind_method(D_METHOD("global_menu_get_item_tag", "menu_root", "idx"), &DisplayServer::global_menu_get_item_tag);
ClassDB::bind_method(D_METHOD("global_menu_get_item_text", "menu_root", "idx"), &DisplayServer::global_menu_get_item_text);
ClassDB::bind_method(D_METHOD("global_menu_get_item_submenu", "menu_root", "idx"), &DisplayServer::global_menu_get_item_submenu);
+ ClassDB::bind_method(D_METHOD("global_menu_get_item_accelerator", "menu_root", "idx"), &DisplayServer::global_menu_get_item_accelerator);
+ ClassDB::bind_method(D_METHOD("global_menu_is_item_disabled", "menu_root", "idx"), &DisplayServer::global_menu_is_item_disabled);
+ ClassDB::bind_method(D_METHOD("global_menu_get_item_tooltip", "menu_root", "idx"), &DisplayServer::global_menu_get_item_tooltip);
+ ClassDB::bind_method(D_METHOD("global_menu_get_item_state", "menu_root", "idx"), &DisplayServer::global_menu_get_item_state);
+ ClassDB::bind_method(D_METHOD("global_menu_get_item_max_states", "menu_root", "idx"), &DisplayServer::global_menu_get_item_max_states);
+ ClassDB::bind_method(D_METHOD("global_menu_get_item_icon", "menu_root", "idx"), &DisplayServer::global_menu_get_item_icon);
ClassDB::bind_method(D_METHOD("global_menu_set_item_checked", "menu_root", "idx", "checked"), &DisplayServer::global_menu_set_item_checked);
ClassDB::bind_method(D_METHOD("global_menu_set_item_checkable", "menu_root", "idx", "checkable"), &DisplayServer::global_menu_set_item_checkable);
+ ClassDB::bind_method(D_METHOD("global_menu_set_item_radio_checkable", "menu_root", "idx", "checkable"), &DisplayServer::global_menu_set_item_radio_checkable);
ClassDB::bind_method(D_METHOD("global_menu_set_item_callback", "menu_root", "idx", "callback"), &DisplayServer::global_menu_set_item_callback);
ClassDB::bind_method(D_METHOD("global_menu_set_item_tag", "menu_root", "idx", "tag"), &DisplayServer::global_menu_set_item_tag);
ClassDB::bind_method(D_METHOD("global_menu_set_item_text", "menu_root", "idx", "text"), &DisplayServer::global_menu_set_item_text);
ClassDB::bind_method(D_METHOD("global_menu_set_item_submenu", "menu_root", "idx", "submenu"), &DisplayServer::global_menu_set_item_submenu);
+ ClassDB::bind_method(D_METHOD("global_menu_set_item_accelerator", "menu_root", "idx", "keycode"), &DisplayServer::global_menu_set_item_accelerator);
+ ClassDB::bind_method(D_METHOD("global_menu_set_item_disabled", "menu_root", "idx", "disabled"), &DisplayServer::global_menu_set_item_disabled);
+ ClassDB::bind_method(D_METHOD("global_menu_set_item_tooltip", "menu_root", "idx", "tooltip"), &DisplayServer::global_menu_set_item_tooltip);
+ ClassDB::bind_method(D_METHOD("global_menu_set_item_state", "menu_root", "idx", "state"), &DisplayServer::global_menu_set_item_state);
+ ClassDB::bind_method(D_METHOD("global_menu_set_item_max_states", "menu_root", "idx", "max_states"), &DisplayServer::global_menu_set_item_max_states);
+ ClassDB::bind_method(D_METHOD("global_menu_set_item_icon", "menu_root", "idx", "icon"), &DisplayServer::global_menu_set_item_icon);
ClassDB::bind_method(D_METHOD("global_menu_remove_item", "menu_root", "idx"), &DisplayServer::global_menu_remove_item);
ClassDB::bind_method(D_METHOD("global_menu_clear", "menu_root"), &DisplayServer::global_menu_clear);
@@ -366,7 +481,7 @@ void DisplayServer::_bind_methods() {
ClassDB::bind_method(D_METHOD("mouse_set_mode", "mouse_mode"), &DisplayServer::mouse_set_mode);
ClassDB::bind_method(D_METHOD("mouse_get_mode"), &DisplayServer::mouse_get_mode);
- ClassDB::bind_method(D_METHOD("mouse_warp_to_position", "position"), &DisplayServer::mouse_warp_to_position);
+ ClassDB::bind_method(D_METHOD("warp_mouse", "position"), &DisplayServer::warp_mouse);
ClassDB::bind_method(D_METHOD("mouse_get_position"), &DisplayServer::mouse_get_position);
ClassDB::bind_method(D_METHOD("mouse_get_button_state"), &DisplayServer::mouse_get_button_state);
@@ -614,7 +729,7 @@ Input::MouseMode DisplayServer::_input_get_mouse_mode() {
}
void DisplayServer::_input_warp(const Vector2 &p_to_pos) {
- singleton->mouse_warp_to_position(p_to_pos);
+ singleton->warp_mouse(p_to_pos);
}
Input::CursorShape DisplayServer::_input_get_current_cursor_shape() {
diff --git a/servers/display_server.h b/servers/display_server.h
index 67dbab0924..4961b07ba3 100644
--- a/servers/display_server.h
+++ b/servers/display_server.h
@@ -126,24 +126,46 @@ public:
virtual bool has_feature(Feature p_feature) const = 0;
virtual String get_name() const = 0;
- virtual void global_menu_add_item(const String &p_menu_root, const String &p_label, const Callable &p_callback, const Variant &p_tag = Variant());
- virtual void global_menu_add_check_item(const String &p_menu_root, const String &p_label, const Callable &p_callback, const Variant &p_tag = Variant());
- virtual void global_menu_add_submenu_item(const String &p_menu_root, const String &p_label, const String &p_submenu);
- virtual void global_menu_add_separator(const String &p_menu_root);
+ virtual void global_menu_add_item(const String &p_menu_root, const String &p_label, const Callable &p_callback = Callable(), const Variant &p_tag = Variant(), Key p_accel = Key::NONE, int p_index = -1);
+ virtual void global_menu_add_check_item(const String &p_menu_root, const String &p_label, const Callable &p_callback = Callable(), const Variant &p_tag = Variant(), Key p_accel = Key::NONE, int p_index = -1);
+ virtual void global_menu_add_icon_item(const String &p_menu_root, const Ref<Texture2D> &p_icon, const String &p_label, const Callable &p_callback = Callable(), const Variant &p_tag = Variant(), Key p_accel = Key::NONE, int p_index = -1);
+ virtual void global_menu_add_icon_check_item(const String &p_menu_root, const Ref<Texture2D> &p_icon, const String &p_label, const Callable &p_callback = Callable(), const Variant &p_tag = Variant(), Key p_accel = Key::NONE, int p_index = -1);
+ virtual void global_menu_add_radio_check_item(const String &p_menu_root, const String &p_label, const Callable &p_callback = Callable(), const Variant &p_tag = Variant(), Key p_accel = Key::NONE, int p_index = -1);
+ virtual void global_menu_add_icon_radio_check_item(const String &p_menu_root, const Ref<Texture2D> &p_icon, const String &p_label, const Callable &p_callback = Callable(), const Variant &p_tag = Variant(), Key p_accel = Key::NONE, int p_index = -1);
+ virtual void global_menu_add_multistate_item(const String &p_menu_root, const String &p_label, int p_max_states, int p_default_state, const Callable &p_callback = Callable(), const Variant &p_tag = Variant(), Key p_accel = Key::NONE, int p_index = -1);
+ virtual void global_menu_add_submenu_item(const String &p_menu_root, const String &p_label, const String &p_submenu, int p_index = -1);
+ virtual void global_menu_add_separator(const String &p_menu_root, int p_index = -1);
+
+ virtual int global_menu_get_item_index_from_text(const String &p_menu_root, const String &p_text) const;
+ virtual int global_menu_get_item_index_from_tag(const String &p_menu_root, const Variant &p_tag) const;
virtual bool global_menu_is_item_checked(const String &p_menu_root, int p_idx) const;
virtual bool global_menu_is_item_checkable(const String &p_menu_root, int p_idx) const;
- virtual Callable global_menu_get_item_callback(const String &p_menu_root, int p_idx);
- virtual Variant global_menu_get_item_tag(const String &p_menu_root, int p_idx);
- virtual String global_menu_get_item_text(const String &p_menu_root, int p_idx);
- virtual String global_menu_get_item_submenu(const String &p_menu_root, int p_idx);
+ virtual bool global_menu_is_item_radio_checkable(const String &p_menu_root, int p_idx) const;
+ virtual Callable global_menu_get_item_callback(const String &p_menu_root, int p_idx) const;
+ virtual Variant global_menu_get_item_tag(const String &p_menu_root, int p_idx) const;
+ virtual String global_menu_get_item_text(const String &p_menu_root, int p_idx) const;
+ virtual String global_menu_get_item_submenu(const String &p_menu_root, int p_idx) const;
+ virtual Key global_menu_get_item_accelerator(const String &p_menu_root, int p_idx) const;
+ virtual bool global_menu_is_item_disabled(const String &p_menu_root, int p_idx) const;
+ virtual String global_menu_get_item_tooltip(const String &p_menu_root, int p_idx) const;
+ virtual int global_menu_get_item_state(const String &p_menu_root, int p_idx) const;
+ virtual int global_menu_get_item_max_states(const String &p_menu_root, int p_idx) const;
+ virtual Ref<Texture2D> global_menu_get_item_icon(const String &p_menu_root, int p_idx) const;
virtual void global_menu_set_item_checked(const String &p_menu_root, int p_idx, bool p_checked);
virtual void global_menu_set_item_checkable(const String &p_menu_root, int p_idx, bool p_checkable);
+ virtual void global_menu_set_item_radio_checkable(const String &p_menu_root, int p_idx, bool p_checkable);
virtual void global_menu_set_item_callback(const String &p_menu_root, int p_idx, const Callable &p_callback);
virtual void global_menu_set_item_tag(const String &p_menu_root, int p_idx, const Variant &p_tag);
virtual void global_menu_set_item_text(const String &p_menu_root, int p_idx, const String &p_text);
virtual void global_menu_set_item_submenu(const String &p_menu_root, int p_idx, const String &p_submenu);
+ virtual void global_menu_set_item_accelerator(const String &p_menu_root, int p_idx, Key p_keycode);
+ virtual void global_menu_set_item_disabled(const String &p_menu_root, int p_idx, bool p_disabled);
+ virtual void global_menu_set_item_tooltip(const String &p_menu_root, int p_idx, const String &p_tooltip);
+ virtual void global_menu_set_item_state(const String &p_menu_root, int p_idx, int p_state);
+ virtual void global_menu_set_item_max_states(const String &p_menu_root, int p_idx, int p_max_states);
+ virtual void global_menu_set_item_icon(const String &p_menu_root, int p_idx, const Ref<Texture2D> &p_icon);
virtual int global_menu_get_item_count(const String &p_menu_root) const;
@@ -161,7 +183,7 @@ public:
virtual void mouse_set_mode(MouseMode p_mode);
virtual MouseMode mouse_get_mode() const;
- virtual void mouse_warp_to_position(const Point2i &p_to);
+ virtual void warp_mouse(const Point2i &p_position);
virtual Point2i mouse_get_position() const;
virtual MouseButton mouse_get_button_state() const;
diff --git a/servers/extensions/SCsub b/servers/extensions/SCsub
index eac66ea283..ba73353f2a 100644
--- a/servers/extensions/SCsub
+++ b/servers/extensions/SCsub
@@ -2,11 +2,6 @@
Import("env")
-import make_wrappers
-from platform_methods import run_in_subprocess
-
-env.CommandNoCache(["ext_wrappers.gen.inc"], "make_wrappers.py", run_in_subprocess(make_wrappers.run))
-
env_object = env.Clone()
env_object.add_source_files(env.servers_sources, "*.cpp")
diff --git a/servers/extensions/physics_server_3d_extension.h b/servers/extensions/physics_server_3d_extension.h
index b40ab8a295..77e867a05a 100644
--- a/servers/extensions/physics_server_3d_extension.h
+++ b/servers/extensions/physics_server_3d_extension.h
@@ -31,11 +31,11 @@
#ifndef PHYSICS_SERVER_3D_EXTENSION_H
#define PHYSICS_SERVER_3D_EXTENSION_H
+#include "core/extension/ext_wrappers.gen.inc"
#include "core/object/script_language.h"
#include "core/variant/native_ptr.h"
#include "core/variant/type_info.h"
#include "core/variant/typed_array.h"
-#include "servers/extensions/ext_wrappers.gen.inc"
#include "servers/physics_server_3d.h"
class PhysicsDirectBodyState3DExtension : public PhysicsDirectBodyState3D {
@@ -45,7 +45,7 @@ protected:
static void _bind_methods();
public:
- // The warning is valid, but unavoidable. If the function is not overriden it will error anyway.
+ // The warning is valid, but unavoidable. If the function is not overridden it will error anyway.
EXBIND0RC(Vector3, get_total_gravity)
EXBIND0RC(real_t, get_total_angular_damp)
@@ -208,7 +208,7 @@ protected:
static void _bind_methods();
public:
- // The warning is valid, but unavoidable. If the function is not overriden it will error anyway.
+ // The warning is valid, but unavoidable. If the function is not overridden it will error anyway.
EXBIND0R(RID, world_boundary_shape_create)
EXBIND0R(RID, separation_ray_shape_create)
diff --git a/servers/physics_2d/godot_broad_phase_2d_bvh.cpp b/servers/physics_2d/godot_broad_phase_2d_bvh.cpp
index 06f035a506..2cc60fc765 100644
--- a/servers/physics_2d/godot_broad_phase_2d_bvh.cpp
+++ b/servers/physics_2d/godot_broad_phase_2d_bvh.cpp
@@ -39,31 +39,37 @@ GodotBroadPhase2D::ID GodotBroadPhase2DBVH::create(GodotCollisionObject2D *p_obj
}
void GodotBroadPhase2DBVH::move(ID p_id, const Rect2 &p_aabb) {
+ ERR_FAIL_COND(!p_id);
bvh.move(p_id - 1, p_aabb);
}
void GodotBroadPhase2DBVH::set_static(ID p_id, bool p_static) {
+ ERR_FAIL_COND(!p_id);
uint32_t tree_id = p_static ? TREE_STATIC : TREE_DYNAMIC;
uint32_t tree_collision_mask = p_static ? TREE_FLAG_DYNAMIC : (TREE_FLAG_STATIC | TREE_FLAG_DYNAMIC);
bvh.set_tree(p_id - 1, tree_id, tree_collision_mask, false);
}
void GodotBroadPhase2DBVH::remove(ID p_id) {
+ ERR_FAIL_COND(!p_id);
bvh.erase(p_id - 1);
}
GodotCollisionObject2D *GodotBroadPhase2DBVH::get_object(ID p_id) const {
+ ERR_FAIL_COND_V(!p_id, nullptr);
GodotCollisionObject2D *it = bvh.get(p_id - 1);
ERR_FAIL_COND_V(!it, nullptr);
return it;
}
bool GodotBroadPhase2DBVH::is_static(ID p_id) const {
+ ERR_FAIL_COND_V(!p_id, false);
uint32_t tree_id = bvh.get_tree_id(p_id - 1);
return tree_id == 0;
}
int GodotBroadPhase2DBVH::get_subindex(ID p_id) const {
+ ERR_FAIL_COND_V(!p_id, 0);
return bvh.get_subindex(p_id - 1);
}
diff --git a/servers/physics_2d/godot_space_2d.cpp b/servers/physics_2d/godot_space_2d.cpp
index 04b8d3c741..99c0566fb1 100644
--- a/servers/physics_2d/godot_space_2d.cpp
+++ b/servers/physics_2d/godot_space_2d.cpp
@@ -158,7 +158,7 @@ bool GodotPhysicsDirectSpaceState2D::intersect_ray(const RayParameters &p_parame
if (p_parameters.hit_from_inside) {
// Hit shape at starting point.
min_d = 0;
- res_point = local_from;
+ res_point = begin;
res_normal = Vector2();
res_shape = shape_idx;
res_obj = col_obj;
diff --git a/servers/physics_3d/godot_broad_phase_3d_bvh.cpp b/servers/physics_3d/godot_broad_phase_3d_bvh.cpp
index ecdf74fd41..b34f9d214f 100644
--- a/servers/physics_3d/godot_broad_phase_3d_bvh.cpp
+++ b/servers/physics_3d/godot_broad_phase_3d_bvh.cpp
@@ -40,31 +40,37 @@ GodotBroadPhase3DBVH::ID GodotBroadPhase3DBVH::create(GodotCollisionObject3D *p_
}
void GodotBroadPhase3DBVH::move(ID p_id, const AABB &p_aabb) {
+ ERR_FAIL_COND(!p_id);
bvh.move(p_id - 1, p_aabb);
}
void GodotBroadPhase3DBVH::set_static(ID p_id, bool p_static) {
+ ERR_FAIL_COND(!p_id);
uint32_t tree_id = p_static ? TREE_STATIC : TREE_DYNAMIC;
uint32_t tree_collision_mask = p_static ? TREE_FLAG_DYNAMIC : (TREE_FLAG_STATIC | TREE_FLAG_DYNAMIC);
bvh.set_tree(p_id - 1, tree_id, tree_collision_mask, false);
}
void GodotBroadPhase3DBVH::remove(ID p_id) {
+ ERR_FAIL_COND(!p_id);
bvh.erase(p_id - 1);
}
GodotCollisionObject3D *GodotBroadPhase3DBVH::get_object(ID p_id) const {
+ ERR_FAIL_COND_V(!p_id, nullptr);
GodotCollisionObject3D *it = bvh.get(p_id - 1);
ERR_FAIL_COND_V(!it, nullptr);
return it;
}
bool GodotBroadPhase3DBVH::is_static(ID p_id) const {
+ ERR_FAIL_COND_V(!p_id, false);
uint32_t tree_id = bvh.get_tree_id(p_id - 1);
return tree_id == 0;
}
int GodotBroadPhase3DBVH::get_subindex(ID p_id) const {
+ ERR_FAIL_COND_V(!p_id, 0);
return bvh.get_subindex(p_id - 1);
}
diff --git a/servers/physics_3d/godot_space_3d.cpp b/servers/physics_3d/godot_space_3d.cpp
index e28b6da0d9..e8af2d7283 100644
--- a/servers/physics_3d/godot_space_3d.cpp
+++ b/servers/physics_3d/godot_space_3d.cpp
@@ -153,7 +153,7 @@ bool GodotPhysicsDirectSpaceState3D::intersect_ray(const RayParameters &p_parame
if (p_parameters.hit_from_inside) {
// Hit shape at starting point.
min_d = 0;
- res_point = local_from;
+ res_point = begin;
res_normal = Vector3();
res_shape = shape_idx;
res_obj = col_obj;
diff --git a/servers/rendering/dummy/rasterizer_dummy.h b/servers/rendering/dummy/rasterizer_dummy.h
index b3fbc18c46..069b2e6695 100644
--- a/servers/rendering/dummy/rasterizer_dummy.h
+++ b/servers/rendering/dummy/rasterizer_dummy.h
@@ -38,6 +38,8 @@
#include "servers/rendering/dummy/rasterizer_scene_dummy.h"
#include "servers/rendering/dummy/rasterizer_storage_dummy.h"
#include "servers/rendering/dummy/storage/canvas_texture_storage.h"
+#include "servers/rendering/dummy/storage/decal_atlas_storage.h"
+#include "servers/rendering/dummy/storage/material_storage.h"
#include "servers/rendering/dummy/storage/texture_storage.h"
#include "servers/rendering/renderer_compositor.h"
#include "servers/rendering_server.h"
@@ -50,13 +52,17 @@ private:
protected:
RasterizerCanvasDummy canvas;
RendererDummy::CanvasTextureStorage canvas_texture_storage;
+ RendererDummy::MaterialStorage material_storage;
RendererDummy::TextureStorage texture_storage;
+ RendererDummy::DecalAtlasStorage decal_atlas_storage;
RasterizerStorageDummy storage;
RasterizerSceneDummy scene;
public:
RendererCanvasTextureStorage *get_canvas_texture_storage() override { return &canvas_texture_storage; };
+ RendererMaterialStorage *get_material_storage() override { return &material_storage; };
RendererTextureStorage *get_texture_storage() override { return &texture_storage; };
+ RendererDecalAtlasStorage *get_decal_atlas_storage() override { return &decal_atlas_storage; };
RendererStorage *get_storage() override { return &storage; }
RendererCanvasRender *get_canvas() override { return &canvas; }
RendererSceneRender *get_scene() override { return &scene; }
diff --git a/servers/rendering/dummy/rasterizer_storage_dummy.h b/servers/rendering/dummy/rasterizer_storage_dummy.h
index 39837c794f..4ae2a51c7d 100644
--- a/servers/rendering/dummy/rasterizer_storage_dummy.h
+++ b/servers/rendering/dummy/rasterizer_storage_dummy.h
@@ -36,37 +36,6 @@
class RasterizerStorageDummy : public RendererStorage {
public:
- /* SHADER API */
-
- RID shader_allocate() override { return RID(); }
- void shader_initialize(RID p_rid) override {}
- void shader_set_code(RID p_shader, const String &p_code) override {}
- String shader_get_code(RID p_shader) const override { return ""; }
- void shader_get_param_list(RID p_shader, List<PropertyInfo> *p_param_list) const override {}
-
- void shader_set_default_texture_param(RID p_shader, const StringName &p_name, RID p_texture, int p_index) override {}
- RID shader_get_default_texture_param(RID p_shader, const StringName &p_name, int p_index) const override { return RID(); }
- Variant shader_get_param_default(RID p_material, const StringName &p_param) const override { return Variant(); }
-
- RS::ShaderNativeSourceCode shader_get_native_source_code(RID p_shader) const override { return RS::ShaderNativeSourceCode(); };
-
- /* COMMON MATERIAL API */
-
- RID material_allocate() override { return RID(); }
- void material_initialize(RID p_rid) override {}
- void material_set_render_priority(RID p_material, int priority) override {}
- void material_set_shader(RID p_shader_material, RID p_shader) override {}
-
- void material_set_param(RID p_material, const StringName &p_param, const Variant &p_value) override {}
- Variant material_get_param(RID p_material, const StringName &p_param) const override { return Variant(); }
-
- void material_set_next_pass(RID p_material, RID p_next_material) override {}
-
- bool material_is_animated(RID p_material) override { return false; }
- bool material_casts_shadows(RID p_material) override { return false; }
- void material_get_instance_shader_parameters(RID p_material, List<InstanceShaderParam> *r_parameters) override {}
- void material_update_dependency(RID p_material, DependencyTracker *p_instance) override {}
-
/* MESH API */
RID mesh_allocate() override { return RID(); }
@@ -214,25 +183,6 @@ public:
void base_update_dependency(RID p_base, DependencyTracker *p_instance) override {}
void skeleton_update_dependency(RID p_base, DependencyTracker *p_instance) override {}
- /* DECAL API */
-
- RID decal_allocate() override { return RID(); }
- void decal_initialize(RID p_rid) override {}
- void decal_set_extents(RID p_decal, const Vector3 &p_extents) override {}
- void decal_set_texture(RID p_decal, RS::DecalTexture p_type, RID p_texture) override {}
- void decal_set_emission_energy(RID p_decal, float p_energy) override {}
- void decal_set_albedo_mix(RID p_decal, float p_mix) override {}
- void decal_set_modulate(RID p_decal, const Color &p_modulate) override {}
- void decal_set_cull_mask(RID p_decal, uint32_t p_layers) override {}
- void decal_set_distance_fade(RID p_decal, bool p_enabled, float p_begin, float p_length) override {}
- void decal_set_fade(RID p_decal, float p_above, float p_below) override {}
- void decal_set_normal_fade(RID p_decal, float p_fade) override {}
-
- AABB decal_get_aabb(RID p_decal) const override { return AABB(); }
-
- void texture_add_to_decal_atlas(RID p_texture, bool p_panorama_to_dp = false) override {}
- void texture_remove_from_decal_atlas(RID p_texture, bool p_panorama_to_dp = false) override {}
-
/* VOXEL GI API */
RID voxel_gi_allocate() override { return RID(); }
@@ -371,6 +321,8 @@ public:
void particles_collision_instance_set_transform(RID p_collision_instance, const Transform3D &p_transform) override {}
void particles_collision_instance_set_active(RID p_collision_instance, bool p_active) override {}
+ bool particles_is_inactive(RID p_particles) const override { return false; }
+
/* FOG VOLUMES */
RID fog_volume_allocate() override { return RID(); }
@@ -391,26 +343,6 @@ public:
virtual AABB visibility_notifier_get_aabb(RID p_notifier) const override { return AABB(); }
virtual void visibility_notifier_call(RID p_notifier, bool p_enter, bool p_deferred) override {}
- /* GLOBAL VARIABLES */
-
- void global_variable_add(const StringName &p_name, RS::GlobalVariableType p_type, const Variant &p_value) override {}
- void global_variable_remove(const StringName &p_name) override {}
- Vector<StringName> global_variable_get_list() const override { return Vector<StringName>(); }
-
- void global_variable_set(const StringName &p_name, const Variant &p_value) override {}
- void global_variable_set_override(const StringName &p_name, const Variant &p_value) override {}
- Variant global_variable_get(const StringName &p_name) const override { return Variant(); }
- RS::GlobalVariableType global_variable_get_type(const StringName &p_name) const override { return RS::GLOBAL_VAR_TYPE_MAX; }
-
- void global_variables_load_settings(bool p_load_textures = true) override {}
- void global_variables_clear() override {}
-
- int32_t global_variables_instance_allocate(RID p_instance) override { return 0; }
- void global_variables_instance_free(RID p_instance) override {}
- void global_variables_instance_update(RID p_instance, int p_index, const Variant &p_value) override {}
-
- bool particles_is_inactive(RID p_particles) const override { return false; }
-
/* RENDER TARGET */
RID render_target_create() override { return RID(); }
diff --git a/servers/rendering/dummy/storage/decal_atlas_storage.h b/servers/rendering/dummy/storage/decal_atlas_storage.h
new file mode 100644
index 0000000000..04ddfaca6d
--- /dev/null
+++ b/servers/rendering/dummy/storage/decal_atlas_storage.h
@@ -0,0 +1,62 @@
+/*************************************************************************/
+/* decal_atlas_storage.h */
+/*************************************************************************/
+/* This file is part of: */
+/* GODOT ENGINE */
+/* https://godotengine.org */
+/*************************************************************************/
+/* Copyright (c) 2007-2022 Juan Linietsky, Ariel Manzur. */
+/* Copyright (c) 2014-2022 Godot Engine contributors (cf. AUTHORS.md). */
+/* */
+/* Permission is hereby granted, free of charge, to any person obtaining */
+/* a copy of this software and associated documentation files (the */
+/* "Software"), to deal in the Software without restriction, including */
+/* without limitation the rights to use, copy, modify, merge, publish, */
+/* distribute, sublicense, and/or sell copies of the Software, and to */
+/* permit persons to whom the Software is furnished to do so, subject to */
+/* the following conditions: */
+/* */
+/* The above copyright notice and this permission notice shall be */
+/* included in all copies or substantial portions of the Software. */
+/* */
+/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
+/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
+/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
+/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
+/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
+/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
+/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
+/*************************************************************************/
+
+#ifndef DECAL_ATLAS_STORAGE_DUMMY_H
+#define DECAL_ATLAS_STORAGE_DUMMY_H
+
+#include "servers/rendering/storage/decal_atlas_storage.h"
+
+namespace RendererDummy {
+
+class DecalAtlasStorage : public RendererDecalAtlasStorage {
+public:
+ virtual RID decal_allocate() override { return RID(); }
+ virtual void decal_initialize(RID p_rid) override {}
+ virtual void decal_free(RID p_rid) override{};
+
+ virtual void decal_set_extents(RID p_decal, const Vector3 &p_extents) override {}
+ virtual void decal_set_texture(RID p_decal, RS::DecalTexture p_type, RID p_texture) override {}
+ virtual void decal_set_emission_energy(RID p_decal, float p_energy) override {}
+ virtual void decal_set_albedo_mix(RID p_decal, float p_mix) override {}
+ virtual void decal_set_modulate(RID p_decal, const Color &p_modulate) override {}
+ virtual void decal_set_cull_mask(RID p_decal, uint32_t p_layers) override {}
+ virtual void decal_set_distance_fade(RID p_decal, bool p_enabled, float p_begin, float p_length) override {}
+ virtual void decal_set_fade(RID p_decal, float p_above, float p_below) override {}
+ virtual void decal_set_normal_fade(RID p_decal, float p_fade) override {}
+
+ virtual AABB decal_get_aabb(RID p_decal) const override { return AABB(); }
+
+ virtual void texture_add_to_decal_atlas(RID p_texture, bool p_panorama_to_dp = false) override {}
+ virtual void texture_remove_from_decal_atlas(RID p_texture, bool p_panorama_to_dp = false) override {}
+};
+
+} // namespace RendererDummy
+
+#endif // !DECAL_ATLAS_STORAGE_DUMMY_H
diff --git a/servers/rendering/dummy/storage/material_storage.h b/servers/rendering/dummy/storage/material_storage.h
new file mode 100644
index 0000000000..8890be8ea9
--- /dev/null
+++ b/servers/rendering/dummy/storage/material_storage.h
@@ -0,0 +1,95 @@
+/*************************************************************************/
+/* material_storage.h */
+/*************************************************************************/
+/* This file is part of: */
+/* GODOT ENGINE */
+/* https://godotengine.org */
+/*************************************************************************/
+/* Copyright (c) 2007-2022 Juan Linietsky, Ariel Manzur. */
+/* Copyright (c) 2014-2022 Godot Engine contributors (cf. AUTHORS.md). */
+/* */
+/* Permission is hereby granted, free of charge, to any person obtaining */
+/* a copy of this software and associated documentation files (the */
+/* "Software"), to deal in the Software without restriction, including */
+/* without limitation the rights to use, copy, modify, merge, publish, */
+/* distribute, sublicense, and/or sell copies of the Software, and to */
+/* permit persons to whom the Software is furnished to do so, subject to */
+/* the following conditions: */
+/* */
+/* The above copyright notice and this permission notice shall be */
+/* included in all copies or substantial portions of the Software. */
+/* */
+/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
+/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
+/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
+/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
+/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
+/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
+/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
+/*************************************************************************/
+
+#ifndef MATERIAL_STORAGE_DUMMY_H
+#define MATERIAL_STORAGE_DUMMY_H
+
+#include "servers/rendering/storage/material_storage.h"
+
+namespace RendererDummy {
+
+class MaterialStorage : public RendererMaterialStorage {
+public:
+ /* GLOBAL VARIABLE API */
+
+ virtual void global_variable_add(const StringName &p_name, RS::GlobalVariableType p_type, const Variant &p_value) override {}
+ virtual void global_variable_remove(const StringName &p_name) override {}
+ virtual Vector<StringName> global_variable_get_list() const override { return Vector<StringName>(); }
+
+ virtual void global_variable_set(const StringName &p_name, const Variant &p_value) override {}
+ virtual void global_variable_set_override(const StringName &p_name, const Variant &p_value) override {}
+ virtual Variant global_variable_get(const StringName &p_name) const override { return Variant(); }
+ virtual RS::GlobalVariableType global_variable_get_type(const StringName &p_name) const override { return RS::GLOBAL_VAR_TYPE_MAX; }
+
+ virtual void global_variables_load_settings(bool p_load_textures = true) override {}
+ virtual void global_variables_clear() override {}
+
+ virtual int32_t global_variables_instance_allocate(RID p_instance) override { return 0; }
+ virtual void global_variables_instance_free(RID p_instance) override {}
+ virtual void global_variables_instance_update(RID p_instance, int p_index, const Variant &p_value) override {}
+
+ /* SHADER API */
+
+ virtual RID shader_allocate() override { return RID(); }
+ virtual void shader_initialize(RID p_rid) override {}
+ virtual void shader_free(RID p_rid) override{};
+
+ virtual void shader_set_code(RID p_shader, const String &p_code) override {}
+ virtual String shader_get_code(RID p_shader) const override { return ""; }
+ virtual void shader_get_param_list(RID p_shader, List<PropertyInfo> *p_param_list) const override {}
+
+ virtual void shader_set_default_texture_param(RID p_shader, const StringName &p_name, RID p_texture, int p_index) override {}
+ virtual RID shader_get_default_texture_param(RID p_shader, const StringName &p_name, int p_index) const override { return RID(); }
+ virtual Variant shader_get_param_default(RID p_material, const StringName &p_param) const override { return Variant(); }
+
+ virtual RS::ShaderNativeSourceCode shader_get_native_source_code(RID p_shader) const override { return RS::ShaderNativeSourceCode(); };
+
+ /* MATERIAL API */
+ virtual RID material_allocate() override { return RID(); }
+ virtual void material_initialize(RID p_rid) override {}
+ virtual void material_free(RID p_rid) override{};
+
+ virtual void material_set_render_priority(RID p_material, int priority) override {}
+ virtual void material_set_shader(RID p_shader_material, RID p_shader) override {}
+
+ virtual void material_set_param(RID p_material, const StringName &p_param, const Variant &p_value) override {}
+ virtual Variant material_get_param(RID p_material, const StringName &p_param) const override { return Variant(); }
+
+ virtual void material_set_next_pass(RID p_material, RID p_next_material) override {}
+
+ virtual bool material_is_animated(RID p_material) override { return false; }
+ virtual bool material_casts_shadows(RID p_material) override { return false; }
+ virtual void material_get_instance_shader_parameters(RID p_material, List<InstanceShaderParam> *r_parameters) override {}
+ virtual void material_update_dependency(RID p_material, RendererStorage::DependencyTracker *p_instance) override {}
+};
+
+} // namespace RendererDummy
+
+#endif // !MATERIAL_STORAGE_DUMMY_H
diff --git a/servers/rendering/renderer_canvas_cull.cpp b/servers/rendering/renderer_canvas_cull.cpp
index 56eaa396c8..22149c9e43 100644
--- a/servers/rendering/renderer_canvas_cull.cpp
+++ b/servers/rendering/renderer_canvas_cull.cpp
@@ -1664,6 +1664,11 @@ bool RendererCanvasCull::free(RID p_rid) {
}
*/
+ if (canvas_item->canvas_group != nullptr) {
+ memdelete(canvas_item->canvas_group);
+ canvas_item->canvas_group = nullptr;
+ }
+
canvas_item_owner.free(p_rid);
} else if (canvas_light_owner.owns(p_rid)) {
diff --git a/servers/rendering/renderer_compositor.h b/servers/rendering/renderer_compositor.h
index c2bc2c03d0..28d4a9d75d 100644
--- a/servers/rendering/renderer_compositor.h
+++ b/servers/rendering/renderer_compositor.h
@@ -35,6 +35,8 @@
#include "servers/rendering/renderer_scene.h"
#include "servers/rendering/renderer_storage.h"
#include "servers/rendering/storage/canvas_texture_storage.h"
+#include "servers/rendering/storage/decal_atlas_storage.h"
+#include "servers/rendering/storage/material_storage.h"
#include "servers/rendering/storage/texture_storage.h"
#include "servers/rendering_server.h"
@@ -73,7 +75,9 @@ public:
static RendererCompositor *create();
virtual RendererCanvasTextureStorage *get_canvas_texture_storage() = 0;
+ virtual RendererMaterialStorage *get_material_storage() = 0;
virtual RendererTextureStorage *get_texture_storage() = 0;
+ virtual RendererDecalAtlasStorage *get_decal_atlas_storage() = 0;
virtual RendererStorage *get_storage() = 0;
virtual RendererCanvasRender *get_canvas() = 0;
virtual RendererSceneRender *get_scene() = 0;
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 53c44dc962..0c3bf58a85 100644
--- a/servers/rendering/renderer_rd/forward_clustered/render_forward_clustered.cpp
+++ b/servers/rendering/renderer_rd/forward_clustered/render_forward_clustered.cpp
@@ -30,6 +30,7 @@
#include "render_forward_clustered.h"
#include "core/config/project_settings.h"
+#include "servers/rendering/renderer_rd/storage_rd/decal_atlas_storage.h"
#include "servers/rendering/renderer_rd/uniform_set_cache_rd.h"
#include "servers/rendering/rendering_device.h"
#include "servers/rendering/rendering_server_default.h"
@@ -1367,7 +1368,7 @@ void RenderForwardClustered::_render_scene(RenderDataRD *p_render_data, const Co
clear_color.b *= bg_energy;
if (render_buffers_has_volumetric_fog(p_render_data->render_buffers) || environment_is_fog_enabled(p_render_data->environment)) {
draw_sky_fog_only = true;
- storage->material_set_param(sky.sky_scene_state.fog_material, "clear_color", Variant(clear_color.to_linear()));
+ RendererRD::MaterialStorage::get_singleton()->material_set_param(sky.sky_scene_state.fog_material, "clear_color", Variant(clear_color.to_linear()));
}
} break;
case RS::ENV_BG_COLOR: {
@@ -1377,7 +1378,7 @@ void RenderForwardClustered::_render_scene(RenderDataRD *p_render_data, const Co
clear_color.b *= bg_energy;
if (render_buffers_has_volumetric_fog(p_render_data->render_buffers) || environment_is_fog_enabled(p_render_data->environment)) {
draw_sky_fog_only = true;
- storage->material_set_param(sky.sky_scene_state.fog_material, "clear_color", Variant(clear_color.to_linear()));
+ RendererRD::MaterialStorage::get_singleton()->material_set_param(sky.sky_scene_state.fog_material, "clear_color", Variant(clear_color.to_linear()));
}
} break;
case RS::ENV_BG_SKY: {
@@ -2140,7 +2141,7 @@ void RenderForwardClustered::_update_render_base_uniform_set() {
RD::Uniform u;
u.binding = 11;
u.uniform_type = RD::UNIFORM_TYPE_TEXTURE;
- RID decal_atlas = storage->decal_atlas_get_texture();
+ RID decal_atlas = RendererRD::DecalAtlasStorage::get_singleton()->decal_atlas_get_texture();
u.append_id(decal_atlas);
uniforms.push_back(u);
}
@@ -2148,7 +2149,7 @@ void RenderForwardClustered::_update_render_base_uniform_set() {
RD::Uniform u;
u.binding = 12;
u.uniform_type = RD::UNIFORM_TYPE_TEXTURE;
- RID decal_atlas = storage->decal_atlas_get_texture_srgb();
+ RID decal_atlas = RendererRD::DecalAtlasStorage::get_singleton()->decal_atlas_get_texture_srgb();
u.append_id(decal_atlas);
uniforms.push_back(u);
}
@@ -2164,7 +2165,7 @@ void RenderForwardClustered::_update_render_base_uniform_set() {
RD::Uniform u;
u.uniform_type = RD::UNIFORM_TYPE_STORAGE_BUFFER;
u.binding = 14;
- u.append_id(storage->global_variables_get_storage_buffer());
+ u.append_id(RendererRD::MaterialStorage::get_singleton()->global_variables_get_storage_buffer());
uniforms.push_back(u);
}
@@ -2181,6 +2182,8 @@ void RenderForwardClustered::_update_render_base_uniform_set() {
}
RID RenderForwardClustered::_setup_render_pass_uniform_set(RenderListType p_render_list, const RenderDataRD *p_render_data, RID p_radiance_texture, bool p_use_directional_shadow_atlas, int p_index) {
+ RendererRD::TextureStorage *texture_storage = RendererRD::TextureStorage::get_singleton();
+
RenderBufferDataForwardClustered *rb = nullptr;
if (p_render_data && p_render_data->render_buffers.is_valid()) {
rb = (RenderBufferDataForwardClustered *)render_buffers_get_data(p_render_data->render_buffers);
@@ -2428,6 +2431,7 @@ RID RenderForwardClustered::_setup_render_pass_uniform_set(RenderListType p_rend
}
RID RenderForwardClustered::_setup_sdfgi_render_pass_uniform_set(RID p_albedo_texture, RID p_emission_texture, RID p_emission_aniso_texture, RID p_geom_facing_texture) {
+ RendererRD::TextureStorage *texture_storage = RendererRD::TextureStorage::get_singleton();
Vector<RD::Uniform> uniforms;
{
@@ -2632,7 +2636,7 @@ void RenderForwardClustered::_geometry_instance_add_surface_with_material(Geomet
void *surface_shadow = nullptr;
if (!p_material->shader_data->uses_particle_trails && !p_material->shader_data->writes_modelview_or_projection && !p_material->shader_data->uses_vertex && !p_material->shader_data->uses_position && !p_material->shader_data->uses_discard && !p_material->shader_data->uses_depth_pre_pass && !p_material->shader_data->uses_alpha_clip) {
flags |= GeometryInstanceSurfaceDataCache::FLAG_USES_SHARED_SHADOW_MATERIAL;
- material_shadow = (SceneShaderForwardClustered::MaterialData *)storage->material_get_data(scene_shader.default_material, RendererStorageRD::SHADER_TYPE_3D);
+ material_shadow = (SceneShaderForwardClustered::MaterialData *)RendererRD::MaterialStorage::get_singleton()->material_get_data(scene_shader.default_material, RendererRD::SHADER_TYPE_3D);
RID shadow_mesh = storage->mesh_get_shadow_mesh(p_mesh);
@@ -2687,23 +2691,25 @@ void RenderForwardClustered::_geometry_instance_add_surface_with_material(Geomet
void RenderForwardClustered::_geometry_instance_add_surface_with_material_chain(GeometryInstanceForwardClustered *ginstance, uint32_t p_surface, SceneShaderForwardClustered::MaterialData *p_material, RID p_mat_src, RID p_mesh) {
SceneShaderForwardClustered::MaterialData *material = p_material;
+ RendererRD::MaterialStorage *material_storage = RendererRD::MaterialStorage::get_singleton();
- _geometry_instance_add_surface_with_material(ginstance, p_surface, material, p_mat_src.get_local_index(), storage->material_get_shader_id(p_mat_src), p_mesh);
+ _geometry_instance_add_surface_with_material(ginstance, p_surface, material, p_mat_src.get_local_index(), material_storage->material_get_shader_id(p_mat_src), p_mesh);
while (material->next_pass.is_valid()) {
RID next_pass = material->next_pass;
- material = (SceneShaderForwardClustered::MaterialData *)storage->material_get_data(next_pass, RendererStorageRD::SHADER_TYPE_3D);
+ material = (SceneShaderForwardClustered::MaterialData *)material_storage->material_get_data(next_pass, RendererRD::SHADER_TYPE_3D);
if (!material || !material->shader_data->valid) {
break;
}
if (ginstance->data->dirty_dependencies) {
- storage->material_update_dependency(next_pass, &ginstance->data->dependency_tracker);
+ material_storage->material_update_dependency(next_pass, &ginstance->data->dependency_tracker);
}
- _geometry_instance_add_surface_with_material(ginstance, p_surface, material, next_pass.get_local_index(), storage->material_get_shader_id(next_pass), p_mesh);
+ _geometry_instance_add_surface_with_material(ginstance, p_surface, material, next_pass.get_local_index(), material_storage->material_get_shader_id(next_pass), p_mesh);
}
}
void RenderForwardClustered::_geometry_instance_add_surface(GeometryInstanceForwardClustered *ginstance, uint32_t p_surface, RID p_material, RID p_mesh) {
+ RendererRD::MaterialStorage *material_storage = RendererRD::MaterialStorage::get_singleton();
RID m_src;
m_src = ginstance->data->material_override.is_valid() ? ginstance->data->material_override : p_material;
@@ -2711,7 +2717,7 @@ void RenderForwardClustered::_geometry_instance_add_surface(GeometryInstanceForw
SceneShaderForwardClustered::MaterialData *material = nullptr;
if (m_src.is_valid()) {
- material = (SceneShaderForwardClustered::MaterialData *)storage->material_get_data(m_src, RendererStorageRD::SHADER_TYPE_3D);
+ material = (SceneShaderForwardClustered::MaterialData *)material_storage->material_get_data(m_src, RendererRD::SHADER_TYPE_3D);
if (!material || !material->shader_data->valid) {
material = nullptr;
}
@@ -2719,10 +2725,10 @@ void RenderForwardClustered::_geometry_instance_add_surface(GeometryInstanceForw
if (material) {
if (ginstance->data->dirty_dependencies) {
- storage->material_update_dependency(m_src, &ginstance->data->dependency_tracker);
+ material_storage->material_update_dependency(m_src, &ginstance->data->dependency_tracker);
}
} else {
- material = (SceneShaderForwardClustered::MaterialData *)storage->material_get_data(scene_shader.default_material, RendererStorageRD::SHADER_TYPE_3D);
+ material = (SceneShaderForwardClustered::MaterialData *)material_storage->material_get_data(scene_shader.default_material, RendererRD::SHADER_TYPE_3D);
m_src = scene_shader.default_material;
}
@@ -2733,10 +2739,10 @@ void RenderForwardClustered::_geometry_instance_add_surface(GeometryInstanceForw
if (ginstance->data->material_overlay.is_valid()) {
m_src = ginstance->data->material_overlay;
- material = (SceneShaderForwardClustered::MaterialData *)storage->material_get_data(m_src, RendererStorageRD::SHADER_TYPE_3D);
+ material = (SceneShaderForwardClustered::MaterialData *)material_storage->material_get_data(m_src, RendererRD::SHADER_TYPE_3D);
if (material && material->shader_data->valid) {
if (ginstance->data->dirty_dependencies) {
- storage->material_update_dependency(m_src, &ginstance->data->dependency_tracker);
+ material_storage->material_update_dependency(m_src, &ginstance->data->dependency_tracker);
}
_geometry_instance_add_surface_with_material_chain(ginstance, p_surface, material, m_src, p_mesh);
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 33ad2c2c31..bba13ab9bc 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
@@ -33,6 +33,7 @@
#include "core/math/math_defs.h"
#include "render_forward_clustered.h"
#include "servers/rendering/renderer_rd/renderer_compositor_rd.h"
+#include "servers/rendering/renderer_rd/storage_rd/material_storage.h"
using namespace RendererSceneRenderImplementation;
@@ -384,13 +385,13 @@ void SceneShaderForwardClustered::ShaderData::get_param_list(List<PropertyInfo>
}
}
-void SceneShaderForwardClustered::ShaderData::get_instance_param_list(List<RendererStorage::InstanceShaderParam> *p_param_list) const {
+void SceneShaderForwardClustered::ShaderData::get_instance_param_list(List<RendererMaterialStorage::InstanceShaderParam> *p_param_list) const {
for (const KeyValue<StringName, ShaderLanguage::ShaderNode::Uniform> &E : uniforms) {
if (E.value.scope != ShaderLanguage::ShaderNode::Uniform::SCOPE_INSTANCE) {
continue;
}
- RendererStorage::InstanceShaderParam p;
+ RendererMaterialStorage::InstanceShaderParam p;
p.info = ShaderLanguage::uniform_to_property_info(E.value);
p.info.name = E.key; //supply name
p.index = E.value.instance_index;
@@ -445,7 +446,7 @@ SceneShaderForwardClustered::ShaderData::~ShaderData() {
}
}
-RendererStorageRD::ShaderData *SceneShaderForwardClustered::_create_shader_func() {
+RendererRD::ShaderData *SceneShaderForwardClustered::_create_shader_func() {
ShaderData *shader_data = memnew(ShaderData);
singleton->shader_list.add(&shader_data->shader_list_element);
return shader_data;
@@ -469,7 +470,7 @@ SceneShaderForwardClustered::MaterialData::~MaterialData() {
free_parameters_uniform_set(uniform_set);
}
-RendererStorageRD::MaterialData *SceneShaderForwardClustered::_create_material_func(ShaderData *p_shader) {
+RendererRD::MaterialData *SceneShaderForwardClustered::_create_material_func(ShaderData *p_shader) {
MaterialData *material_data = memnew(MaterialData);
material_data->shader_data = p_shader;
//update will happen later anyway so do nothing.
@@ -484,17 +485,20 @@ SceneShaderForwardClustered::SceneShaderForwardClustered() {
}
SceneShaderForwardClustered::~SceneShaderForwardClustered() {
+ RendererRD::MaterialStorage *material_storage = RendererRD::MaterialStorage::get_singleton();
+
RD::get_singleton()->free(default_vec4_xform_buffer);
RD::get_singleton()->free(shadow_sampler);
- storage->free(overdraw_material_shader);
- storage->free(default_shader);
+ material_storage->shader_free(overdraw_material_shader);
+ material_storage->shader_free(default_shader);
- storage->free(overdraw_material);
- storage->free(default_material);
+ material_storage->material_free(overdraw_material);
+ material_storage->material_free(default_material);
}
void SceneShaderForwardClustered::init(RendererStorageRD *p_storage, const String p_defines) {
+ RendererRD::MaterialStorage *material_storage = RendererRD::MaterialStorage::get_singleton();
storage = p_storage;
{
@@ -524,8 +528,8 @@ void SceneShaderForwardClustered::init(RendererStorageRD *p_storage, const Strin
}
}
- storage->shader_set_data_request_function(RendererStorageRD::SHADER_TYPE_3D, _create_shader_funcs);
- storage->material_set_data_request_function(RendererStorageRD::SHADER_TYPE_3D, _create_material_funcs);
+ material_storage->shader_set_data_request_function(RendererRD::SHADER_TYPE_3D, _create_shader_funcs);
+ material_storage->material_set_data_request_function(RendererRD::SHADER_TYPE_3D, _create_material_funcs);
{
//shader compiler
@@ -616,7 +620,6 @@ void SceneShaderForwardClustered::init(RendererStorageRD *p_storage, const Strin
actions.renames["LIGHT_COLOR"] = "light_color";
actions.renames["LIGHT"] = "light";
actions.renames["ATTENUATION"] = "attenuation";
- actions.renames["SHADOW_ATTENUATION"] = "shadow_attenuation";
actions.renames["DIFFUSE_LIGHT"] = "diffuse_light";
actions.renames["SPECULAR_LIGHT"] = "specular_light";
@@ -711,9 +714,9 @@ void SceneShaderForwardClustered::init(RendererStorageRD *p_storage, const Strin
{
//default material and shader
- default_shader = storage->shader_allocate();
- storage->shader_initialize(default_shader);
- storage->shader_set_code(default_shader, R"(
+ default_shader = material_storage->shader_allocate();
+ material_storage->shader_initialize(default_shader);
+ material_storage->shader_set_code(default_shader, R"(
// Default 3D material shader (clustered).
shader_type spatial;
@@ -728,11 +731,11 @@ void fragment() {
METALLIC = 0.2;
}
)");
- default_material = storage->material_allocate();
- storage->material_initialize(default_material);
- storage->material_set_shader(default_material, default_shader);
+ default_material = material_storage->material_allocate();
+ material_storage->material_initialize(default_material);
+ material_storage->material_set_shader(default_material, default_shader);
- MaterialData *md = (MaterialData *)storage->material_get_data(default_material, RendererStorageRD::SHADER_TYPE_3D);
+ MaterialData *md = (MaterialData *)material_storage->material_get_data(default_material, RendererRD::SHADER_TYPE_3D);
default_shader_rd = shader.version_get_shader(md->shader_data->version, SHADER_VERSION_COLOR_PASS);
default_shader_sdfgi_rd = shader.version_get_shader(md->shader_data->version, SHADER_VERSION_DEPTH_PASS_WITH_SDF);
@@ -741,10 +744,10 @@ void fragment() {
}
{
- overdraw_material_shader = storage->shader_allocate();
- storage->shader_initialize(overdraw_material_shader);
+ overdraw_material_shader = material_storage->shader_allocate();
+ material_storage->shader_initialize(overdraw_material_shader);
// Use relatively low opacity so that more "layers" of overlapping objects can be distinguished.
- storage->shader_set_code(overdraw_material_shader, R"(
+ material_storage->shader_set_code(overdraw_material_shader, R"(
// 3D editor Overdraw debug draw mode shader (clustered).
shader_type spatial;
@@ -756,11 +759,11 @@ void fragment() {
ALPHA = 0.1;
}
)");
- overdraw_material = storage->material_allocate();
- storage->material_initialize(overdraw_material);
- storage->material_set_shader(overdraw_material, overdraw_material_shader);
+ overdraw_material = material_storage->material_allocate();
+ material_storage->material_initialize(overdraw_material);
+ material_storage->material_set_shader(overdraw_material, overdraw_material_shader);
- MaterialData *md = (MaterialData *)storage->material_get_data(overdraw_material, RendererStorageRD::SHADER_TYPE_3D);
+ MaterialData *md = (MaterialData *)material_storage->material_get_data(overdraw_material, RendererRD::SHADER_TYPE_3D);
overdraw_material_shader_ptr = md->shader_data;
overdraw_material_uniform_set = md->uniform_set;
}
diff --git a/servers/rendering/renderer_rd/forward_clustered/scene_shader_forward_clustered.h b/servers/rendering/renderer_rd/forward_clustered/scene_shader_forward_clustered.h
index 4398517259..9cc13c955d 100644
--- a/servers/rendering/renderer_rd/forward_clustered/scene_shader_forward_clustered.h
+++ b/servers/rendering/renderer_rd/forward_clustered/scene_shader_forward_clustered.h
@@ -93,7 +93,7 @@ public:
SHADER_SPECIALIZATION_DIRECTIONAL_SOFT_SHADOWS = 1 << 3,
};
- struct ShaderData : public RendererStorageRD::ShaderData {
+ struct ShaderData : public RendererRD::ShaderData {
enum BlendMode { //used internally
BLEND_MODE_MIX,
BLEND_MODE_ADD,
@@ -180,7 +180,7 @@ public:
virtual void set_code(const String &p_Code);
virtual void set_default_texture_param(const StringName &p_name, RID p_texture, int p_index);
virtual void get_param_list(List<PropertyInfo> *p_param_list) const;
- void get_instance_param_list(List<RendererStorage::InstanceShaderParam> *p_param_list) const;
+ void get_instance_param_list(List<RendererMaterialStorage::InstanceShaderParam> *p_param_list) const;
virtual bool is_param_texture(const StringName &p_param) const;
virtual bool is_animated() const;
@@ -195,12 +195,12 @@ public:
SelfList<ShaderData>::List shader_list;
- RendererStorageRD::ShaderData *_create_shader_func();
- static RendererStorageRD::ShaderData *_create_shader_funcs() {
+ RendererRD::ShaderData *_create_shader_func();
+ static RendererRD::ShaderData *_create_shader_funcs() {
return static_cast<SceneShaderForwardClustered *>(singleton)->_create_shader_func();
}
- struct MaterialData : public RendererStorageRD::MaterialData {
+ struct MaterialData : public RendererRD::MaterialData {
ShaderData *shader_data;
RID uniform_set;
uint64_t last_pass = 0;
@@ -213,8 +213,8 @@ public:
virtual ~MaterialData();
};
- RendererStorageRD::MaterialData *_create_material_func(ShaderData *p_shader);
- static RendererStorageRD::MaterialData *_create_material_funcs(RendererStorageRD::ShaderData *p_shader) {
+ RendererRD::MaterialData *_create_material_func(ShaderData *p_shader);
+ static RendererRD::MaterialData *_create_material_funcs(RendererRD::ShaderData *p_shader) {
return static_cast<SceneShaderForwardClustered *>(singleton)->_create_material_func(static_cast<ShaderData *>(p_shader));
}
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 6460fb2beb..1153a33a27 100644
--- a/servers/rendering/renderer_rd/forward_mobile/render_forward_mobile.cpp
+++ b/servers/rendering/renderer_rd/forward_mobile/render_forward_mobile.cpp
@@ -30,6 +30,7 @@
#include "render_forward_mobile.h"
#include "core/config/project_settings.h"
+#include "servers/rendering/renderer_rd/storage_rd/decal_atlas_storage.h"
#include "servers/rendering/rendering_device.h"
#include "servers/rendering/rendering_server_default.h"
@@ -289,6 +290,8 @@ bool RenderForwardMobile::_render_buffers_can_be_storage() {
}
RID RenderForwardMobile::_setup_render_pass_uniform_set(RenderListType p_render_list, const RenderDataRD *p_render_data, RID p_radiance_texture, bool p_use_directional_shadow_atlas, int p_index) {
+ RendererRD::TextureStorage *texture_storage = RendererRD::TextureStorage::get_singleton();
+
//there should always be enough uniform buffers for render passes, otherwise bugs
ERR_FAIL_INDEX_V(p_index, (int)scene_state.uniform_buffers.size(), RID());
@@ -592,7 +595,7 @@ void RenderForwardMobile::_render_scene(RenderDataRD *p_render_data, const Color
/*
if (render_buffers_has_volumetric_fog(p_render_data->render_buffers) || environment_is_fog_enabled(p_render_data->environment)) {
draw_sky_fog_only = true;
- storage->material_set_param(sky.sky_scene_state.fog_material, "clear_color", Variant(clear_color.to_linear()));
+ RendererRD::MaterialStorage::get_singleton()->material_set_param(sky.sky_scene_state.fog_material, "clear_color", Variant(clear_color.to_linear()));
}
*/
} break;
@@ -604,7 +607,7 @@ void RenderForwardMobile::_render_scene(RenderDataRD *p_render_data, const Color
/*
if (render_buffers_has_volumetric_fog(p_render_data->render_buffers) || environment_is_fog_enabled(p_render_data->environment)) {
draw_sky_fog_only = true;
- storage->material_set_param(sky.sky_scene_state.fog_material, "clear_color", Variant(clear_color.to_linear()));
+ RendererRD::MaterialStorage::get_singleton()->material_set_param(sky.sky_scene_state.fog_material, "clear_color", Variant(clear_color.to_linear()));
}
*/
} break;
@@ -1275,7 +1278,7 @@ void RenderForwardMobile::_update_render_base_uniform_set() {
RD::Uniform u;
u.binding = 11;
u.uniform_type = RD::UNIFORM_TYPE_TEXTURE;
- RID decal_atlas = storage->decal_atlas_get_texture();
+ RID decal_atlas = RendererRD::DecalAtlasStorage::get_singleton()->decal_atlas_get_texture();
u.append_id(decal_atlas);
uniforms.push_back(u);
}
@@ -1283,7 +1286,7 @@ void RenderForwardMobile::_update_render_base_uniform_set() {
RD::Uniform u;
u.binding = 12;
u.uniform_type = RD::UNIFORM_TYPE_TEXTURE;
- RID decal_atlas = storage->decal_atlas_get_texture_srgb();
+ RID decal_atlas = RendererRD::DecalAtlasStorage::get_singleton()->decal_atlas_get_texture_srgb();
u.append_id(decal_atlas);
uniforms.push_back(u);
}
@@ -1299,7 +1302,7 @@ void RenderForwardMobile::_update_render_base_uniform_set() {
RD::Uniform u;
u.uniform_type = RD::UNIFORM_TYPE_STORAGE_BUFFER;
u.binding = 14;
- u.append_id(storage->global_variables_get_storage_buffer());
+ u.append_id(RendererRD::MaterialStorage::get_singleton()->global_variables_get_storage_buffer());
uniforms.push_back(u);
}
@@ -2325,7 +2328,7 @@ void RenderForwardMobile::_geometry_instance_add_surface_with_material(GeometryI
void *surface_shadow = nullptr;
if (!p_material->shader_data->uses_particle_trails && !p_material->shader_data->writes_modelview_or_projection && !p_material->shader_data->uses_vertex && !p_material->shader_data->uses_discard && !p_material->shader_data->uses_depth_pre_pass && !p_material->shader_data->uses_alpha_clip) {
flags |= GeometryInstanceSurfaceDataCache::FLAG_USES_SHARED_SHADOW_MATERIAL;
- material_shadow = (SceneShaderForwardMobile::MaterialData *)storage->material_get_data(scene_shader.default_material, RendererStorageRD::SHADER_TYPE_3D);
+ material_shadow = (SceneShaderForwardMobile::MaterialData *)RendererRD::MaterialStorage::get_singleton()->material_get_data(scene_shader.default_material, RendererRD::SHADER_TYPE_3D);
RID shadow_mesh = storage->mesh_get_shadow_mesh(p_mesh);
@@ -2378,23 +2381,25 @@ void RenderForwardMobile::_geometry_instance_add_surface_with_material(GeometryI
void RenderForwardMobile::_geometry_instance_add_surface_with_material_chain(GeometryInstanceForwardMobile *ginstance, uint32_t p_surface, SceneShaderForwardMobile::MaterialData *p_material, RID p_mat_src, RID p_mesh) {
SceneShaderForwardMobile::MaterialData *material = p_material;
+ RendererRD::MaterialStorage *material_storage = RendererRD::MaterialStorage::get_singleton();
- _geometry_instance_add_surface_with_material(ginstance, p_surface, material, p_mat_src.get_local_index(), storage->material_get_shader_id(p_mat_src), p_mesh);
+ _geometry_instance_add_surface_with_material(ginstance, p_surface, material, p_mat_src.get_local_index(), material_storage->material_get_shader_id(p_mat_src), p_mesh);
while (material->next_pass.is_valid()) {
RID next_pass = material->next_pass;
- material = (SceneShaderForwardMobile::MaterialData *)storage->material_get_data(next_pass, RendererStorageRD::SHADER_TYPE_3D);
+ material = (SceneShaderForwardMobile::MaterialData *)material_storage->material_get_data(next_pass, RendererRD::SHADER_TYPE_3D);
if (!material || !material->shader_data->valid) {
break;
}
if (ginstance->data->dirty_dependencies) {
- storage->material_update_dependency(next_pass, &ginstance->data->dependency_tracker);
+ material_storage->material_update_dependency(next_pass, &ginstance->data->dependency_tracker);
}
- _geometry_instance_add_surface_with_material(ginstance, p_surface, material, next_pass.get_local_index(), storage->material_get_shader_id(next_pass), p_mesh);
+ _geometry_instance_add_surface_with_material(ginstance, p_surface, material, next_pass.get_local_index(), material_storage->material_get_shader_id(next_pass), p_mesh);
}
}
void RenderForwardMobile::_geometry_instance_add_surface(GeometryInstanceForwardMobile *ginstance, uint32_t p_surface, RID p_material, RID p_mesh) {
+ RendererRD::MaterialStorage *material_storage = RendererRD::MaterialStorage::get_singleton();
RID m_src;
m_src = ginstance->data->material_override.is_valid() ? ginstance->data->material_override : p_material;
@@ -2402,7 +2407,7 @@ void RenderForwardMobile::_geometry_instance_add_surface(GeometryInstanceForward
SceneShaderForwardMobile::MaterialData *material = nullptr;
if (m_src.is_valid()) {
- material = (SceneShaderForwardMobile::MaterialData *)storage->material_get_data(m_src, RendererStorageRD::SHADER_TYPE_3D);
+ material = (SceneShaderForwardMobile::MaterialData *)material_storage->material_get_data(m_src, RendererRD::SHADER_TYPE_3D);
if (!material || !material->shader_data->valid) {
material = nullptr;
}
@@ -2410,10 +2415,10 @@ void RenderForwardMobile::_geometry_instance_add_surface(GeometryInstanceForward
if (material) {
if (ginstance->data->dirty_dependencies) {
- storage->material_update_dependency(m_src, &ginstance->data->dependency_tracker);
+ material_storage->material_update_dependency(m_src, &ginstance->data->dependency_tracker);
}
} else {
- material = (SceneShaderForwardMobile::MaterialData *)storage->material_get_data(scene_shader.default_material, RendererStorageRD::SHADER_TYPE_3D);
+ material = (SceneShaderForwardMobile::MaterialData *)material_storage->material_get_data(scene_shader.default_material, RendererRD::SHADER_TYPE_3D);
m_src = scene_shader.default_material;
}
@@ -2424,10 +2429,10 @@ void RenderForwardMobile::_geometry_instance_add_surface(GeometryInstanceForward
if (ginstance->data->material_overlay.is_valid()) {
m_src = ginstance->data->material_overlay;
- material = (SceneShaderForwardMobile::MaterialData *)storage->material_get_data(m_src, RendererStorageRD::SHADER_TYPE_3D);
+ material = (SceneShaderForwardMobile::MaterialData *)material_storage->material_get_data(m_src, RendererRD::SHADER_TYPE_3D);
if (material && material->shader_data->valid) {
if (ginstance->data->dirty_dependencies) {
- storage->material_update_dependency(m_src, &ginstance->data->dependency_tracker);
+ material_storage->material_update_dependency(m_src, &ginstance->data->dependency_tracker);
}
_geometry_instance_add_surface_with_material_chain(ginstance, p_surface, material, m_src, p_mesh);
diff --git a/servers/rendering/renderer_rd/forward_mobile/scene_shader_forward_mobile.cpp b/servers/rendering/renderer_rd/forward_mobile/scene_shader_forward_mobile.cpp
index d7ed4a36f0..2f56dc0af6 100644
--- a/servers/rendering/renderer_rd/forward_mobile/scene_shader_forward_mobile.cpp
+++ b/servers/rendering/renderer_rd/forward_mobile/scene_shader_forward_mobile.cpp
@@ -33,6 +33,7 @@
#include "core/math/math_defs.h"
#include "render_forward_mobile.h"
#include "servers/rendering/renderer_rd/renderer_compositor_rd.h"
+#include "servers/rendering/renderer_rd/storage_rd/material_storage.h"
using namespace RendererSceneRenderImplementation;
@@ -366,13 +367,13 @@ void SceneShaderForwardMobile::ShaderData::get_param_list(List<PropertyInfo> *p_
}
}
-void SceneShaderForwardMobile::ShaderData::get_instance_param_list(List<RendererStorage::InstanceShaderParam> *p_param_list) const {
+void SceneShaderForwardMobile::ShaderData::get_instance_param_list(List<RendererMaterialStorage::InstanceShaderParam> *p_param_list) const {
for (const KeyValue<StringName, ShaderLanguage::ShaderNode::Uniform> &E : uniforms) {
if (E.value.scope != ShaderLanguage::ShaderNode::Uniform::SCOPE_INSTANCE) {
continue;
}
- RendererStorage::InstanceShaderParam p;
+ RendererMaterialStorage::InstanceShaderParam p;
p.info = ShaderLanguage::uniform_to_property_info(E.value);
p.info.name = E.key; //supply name
p.index = E.value.instance_index;
@@ -427,7 +428,7 @@ SceneShaderForwardMobile::ShaderData::~ShaderData() {
}
}
-RendererStorageRD::ShaderData *SceneShaderForwardMobile::_create_shader_func() {
+RendererRD::ShaderData *SceneShaderForwardMobile::_create_shader_func() {
ShaderData *shader_data = memnew(ShaderData);
singleton->shader_list.add(&shader_data->shader_list_element);
return shader_data;
@@ -451,7 +452,7 @@ SceneShaderForwardMobile::MaterialData::~MaterialData() {
free_parameters_uniform_set(uniform_set);
}
-RendererStorageRD::MaterialData *SceneShaderForwardMobile::_create_material_func(ShaderData *p_shader) {
+RendererRD::MaterialData *SceneShaderForwardMobile::_create_material_func(ShaderData *p_shader) {
MaterialData *material_data = memnew(MaterialData);
material_data->shader_data = p_shader;
//update will happen later anyway so do nothing.
@@ -469,6 +470,7 @@ SceneShaderForwardMobile::SceneShaderForwardMobile() {
void SceneShaderForwardMobile::init(RendererStorageRD *p_storage, const String p_defines) {
storage = p_storage;
+ RendererRD::MaterialStorage *material_storage = RendererRD::MaterialStorage::get_singleton();
/* SCENE SHADER */
@@ -494,8 +496,8 @@ void SceneShaderForwardMobile::init(RendererStorageRD *p_storage, const String p
}
}
- storage->shader_set_data_request_function(RendererStorageRD::SHADER_TYPE_3D, _create_shader_funcs);
- storage->material_set_data_request_function(RendererStorageRD::SHADER_TYPE_3D, _create_material_funcs);
+ material_storage->shader_set_data_request_function(RendererRD::SHADER_TYPE_3D, _create_shader_funcs);
+ material_storage->material_set_data_request_function(RendererRD::SHADER_TYPE_3D, _create_material_funcs);
{
//shader compiler
@@ -586,7 +588,6 @@ void SceneShaderForwardMobile::init(RendererStorageRD *p_storage, const String p
actions.renames["LIGHT_COLOR"] = "light_color";
actions.renames["LIGHT"] = "light";
actions.renames["ATTENUATION"] = "attenuation";
- actions.renames["SHADOW_ATTENUATION"] = "shadow_attenuation";
actions.renames["DIFFUSE_LIGHT"] = "diffuse_light";
actions.renames["SPECULAR_LIGHT"] = "specular_light";
@@ -678,9 +679,9 @@ void SceneShaderForwardMobile::init(RendererStorageRD *p_storage, const String p
{
//default material and shader
- default_shader = storage->shader_allocate();
- storage->shader_initialize(default_shader);
- storage->shader_set_code(default_shader, R"(
+ default_shader = material_storage->shader_allocate();
+ material_storage->shader_initialize(default_shader);
+ material_storage->shader_set_code(default_shader, R"(
// Default 3D material shader (mobile).
shader_type spatial;
@@ -695,11 +696,11 @@ void fragment() {
METALLIC = 0.2;
}
)");
- default_material = storage->material_allocate();
- storage->material_initialize(default_material);
- storage->material_set_shader(default_material, default_shader);
+ default_material = material_storage->material_allocate();
+ material_storage->material_initialize(default_material);
+ material_storage->material_set_shader(default_material, default_shader);
- MaterialData *md = (MaterialData *)storage->material_get_data(default_material, RendererStorageRD::SHADER_TYPE_3D);
+ MaterialData *md = (MaterialData *)material_storage->material_get_data(default_material, RendererRD::SHADER_TYPE_3D);
default_shader_rd = shader.version_get_shader(md->shader_data->version, SHADER_VERSION_COLOR_PASS);
default_material_shader_ptr = md->shader_data;
@@ -707,10 +708,10 @@ void fragment() {
}
{
- overdraw_material_shader = storage->shader_allocate();
- storage->shader_initialize(overdraw_material_shader);
+ overdraw_material_shader = material_storage->shader_allocate();
+ material_storage->shader_initialize(overdraw_material_shader);
// Use relatively low opacity so that more "layers" of overlapping objects can be distinguished.
- storage->shader_set_code(overdraw_material_shader, R"(
+ material_storage->shader_set_code(overdraw_material_shader, R"(
// 3D editor Overdraw debug draw mode shader (mobile).
shader_type spatial;
@@ -722,11 +723,11 @@ void fragment() {
ALPHA = 0.1;
}
)");
- overdraw_material = storage->material_allocate();
- storage->material_initialize(overdraw_material);
- storage->material_set_shader(overdraw_material, overdraw_material_shader);
+ overdraw_material = material_storage->material_allocate();
+ material_storage->material_initialize(overdraw_material);
+ material_storage->material_set_shader(overdraw_material, overdraw_material_shader);
- MaterialData *md = (MaterialData *)storage->material_get_data(overdraw_material, RendererStorageRD::SHADER_TYPE_3D);
+ MaterialData *md = (MaterialData *)material_storage->material_get_data(overdraw_material, RendererRD::SHADER_TYPE_3D);
overdraw_material_shader_ptr = md->shader_data;
overdraw_material_uniform_set = md->uniform_set;
}
@@ -766,12 +767,14 @@ void SceneShaderForwardMobile::set_default_specialization_constants(const Vector
}
SceneShaderForwardMobile::~SceneShaderForwardMobile() {
+ RendererRD::MaterialStorage *material_storage = RendererRD::MaterialStorage::get_singleton();
+
RD::get_singleton()->free(default_vec4_xform_buffer);
RD::get_singleton()->free(shadow_sampler);
- storage->free(overdraw_material_shader);
- storage->free(default_shader);
+ material_storage->shader_free(overdraw_material_shader);
+ material_storage->shader_free(default_shader);
- storage->free(overdraw_material);
- storage->free(default_material);
+ material_storage->material_free(overdraw_material);
+ material_storage->material_free(default_material);
}
diff --git a/servers/rendering/renderer_rd/forward_mobile/scene_shader_forward_mobile.h b/servers/rendering/renderer_rd/forward_mobile/scene_shader_forward_mobile.h
index 92db15e3b0..0f5017dba1 100644
--- a/servers/rendering/renderer_rd/forward_mobile/scene_shader_forward_mobile.h
+++ b/servers/rendering/renderer_rd/forward_mobile/scene_shader_forward_mobile.h
@@ -57,7 +57,7 @@ public:
SHADER_VERSION_MAX
};
- struct ShaderData : public RendererStorageRD::ShaderData {
+ struct ShaderData : public RendererRD::ShaderData {
enum BlendMode { //used internally
BLEND_MODE_MIX,
BLEND_MODE_ADD,
@@ -143,7 +143,7 @@ public:
virtual void set_code(const String &p_Code);
virtual void set_default_texture_param(const StringName &p_name, RID p_texture, int p_index);
virtual void get_param_list(List<PropertyInfo> *p_param_list) const;
- void get_instance_param_list(List<RendererStorage::InstanceShaderParam> *p_param_list) const;
+ void get_instance_param_list(List<RendererMaterialStorage::InstanceShaderParam> *p_param_list) const;
virtual bool is_param_texture(const StringName &p_param) const;
virtual bool is_animated() const;
@@ -157,12 +157,12 @@ public:
virtual ~ShaderData();
};
- RendererStorageRD::ShaderData *_create_shader_func();
- static RendererStorageRD::ShaderData *_create_shader_funcs() {
+ RendererRD::ShaderData *_create_shader_func();
+ static RendererRD::ShaderData *_create_shader_funcs() {
return static_cast<SceneShaderForwardMobile *>(singleton)->_create_shader_func();
}
- struct MaterialData : public RendererStorageRD::MaterialData {
+ struct MaterialData : public RendererRD::MaterialData {
ShaderData *shader_data;
RID uniform_set;
uint64_t last_pass = 0;
@@ -177,8 +177,8 @@ public:
SelfList<ShaderData>::List shader_list;
- RendererStorageRD::MaterialData *_create_material_func(ShaderData *p_shader);
- static RendererStorageRD::MaterialData *_create_material_funcs(RendererStorageRD::ShaderData *p_shader) {
+ RendererRD::MaterialData *_create_material_func(ShaderData *p_shader);
+ static RendererRD::MaterialData *_create_material_funcs(RendererRD::ShaderData *p_shader) {
return static_cast<SceneShaderForwardMobile *>(singleton)->_create_material_func(static_cast<ShaderData *>(p_shader));
}
diff --git a/servers/rendering/renderer_rd/renderer_canvas_render_rd.cpp b/servers/rendering/renderer_rd/renderer_canvas_render_rd.cpp
index a09f228b71..8c8532d367 100644
--- a/servers/rendering/renderer_rd/renderer_canvas_render_rd.cpp
+++ b/servers/rendering/renderer_rd/renderer_canvas_render_rd.cpp
@@ -35,6 +35,10 @@
#include "core/math/math_defs.h"
#include "core/math/math_funcs.h"
#include "renderer_compositor_rd.h"
+#include "servers/rendering/renderer_rd/storage_rd/canvas_texture_storage.h"
+#include "servers/rendering/renderer_rd/storage_rd/decal_atlas_storage.h"
+#include "servers/rendering/renderer_rd/storage_rd/material_storage.h"
+#include "servers/rendering/renderer_rd/storage_rd/texture_storage.h"
#include "servers/rendering/rendering_server_default.h"
void RendererCanvasRenderRD::_update_transform_2d_to_mat4(const Transform2D &p_transform, float *p_mat4) {
@@ -358,7 +362,7 @@ void RendererCanvasRenderRD::_bind_canvas_texture(RD::DrawListID p_draw_list, RI
bool use_normal;
bool use_specular;
- bool success = canvas_texture_storage->canvas_texture_get_uniform_set(p_texture, p_base_filter, p_base_repeat, shader.default_version_rd_shader, CANVAS_TEXTURE_UNIFORM_SET, uniform_set, size, specular_shininess, use_normal, use_specular);
+ bool success = RendererRD::CanvasTextureStorage::get_singleton()->canvas_texture_get_uniform_set(p_texture, p_base_filter, p_base_repeat, shader.default_version_rd_shader, CANVAS_TEXTURE_UNIFORM_SET, uniform_set, size, specular_shininess, use_normal, use_specular);
//something odd happened
if (!success) {
_bind_canvas_texture(p_draw_list, default_canvas_texture, p_base_filter, p_base_repeat, r_last_texture, push_constant, r_texpixel_size);
@@ -947,7 +951,7 @@ RID RendererCanvasRenderRD::_create_base_uniform_set(RID p_to_render_target, boo
RD::Uniform u;
u.uniform_type = RD::UNIFORM_TYPE_TEXTURE;
u.binding = 3;
- u.append_id(storage->decal_atlas_get_texture());
+ u.append_id(RendererRD::DecalAtlasStorage::get_singleton()->decal_atlas_get_texture());
uniforms.push_back(u);
}
@@ -977,7 +981,7 @@ RID RendererCanvasRenderRD::_create_base_uniform_set(RID p_to_render_target, boo
} else {
screen = storage->render_target_get_rd_backbuffer(p_to_render_target);
if (screen.is_null()) { //unallocated backbuffer
- screen = texture_storage->texture_rd_get_default(RendererRD::DEFAULT_RD_TEXTURE_WHITE);
+ screen = RendererRD::TextureStorage::get_singleton()->texture_rd_get_default(RendererRD::DEFAULT_RD_TEXTURE_WHITE);
}
}
u.append_id(screen);
@@ -1020,7 +1024,7 @@ RID RendererCanvasRenderRD::_create_base_uniform_set(RID p_to_render_target, boo
RD::Uniform u;
u.uniform_type = RD::UNIFORM_TYPE_STORAGE_BUFFER;
u.binding = 9;
- u.append_id(storage->global_variables_get_storage_buffer());
+ u.append_id(RendererRD::MaterialStorage::get_singleton()->global_variables_get_storage_buffer());
uniforms.push_back(u);
}
@@ -1035,6 +1039,7 @@ RID RendererCanvasRenderRD::_create_base_uniform_set(RID p_to_render_target, boo
}
void RendererCanvasRenderRD::_render_items(RID p_to_render_target, int p_item_count, const Transform2D &p_canvas_transform_inverse, Light *p_lights, bool p_to_backbuffer) {
+ RendererRD::MaterialStorage *material_storage = RendererRD::MaterialStorage::get_singleton();
Item *current_clip = nullptr;
Transform2D canvas_transform_inverse = p_canvas_transform_inverse;
@@ -1099,9 +1104,9 @@ void RendererCanvasRenderRD::_render_items(RID p_to_render_target, int p_item_co
}
if (material != prev_material) {
- MaterialData *material_data = nullptr;
+ CanvasMaterialData *material_data = nullptr;
if (material.is_valid()) {
- material_data = (MaterialData *)storage->material_get_data(material, RendererStorageRD::SHADER_TYPE_2D);
+ material_data = (CanvasMaterialData *)material_storage->material_get_data(material, RendererRD::SHADER_TYPE_2D);
}
if (material_data) {
@@ -1128,6 +1133,8 @@ void RendererCanvasRenderRD::_render_items(RID p_to_render_target, int p_item_co
}
void RendererCanvasRenderRD::canvas_render_items(RID p_to_render_target, Item *p_item_list, const Color &p_modulate, Light *p_light_list, Light *p_directional_light_list, const Transform2D &p_canvas_transform, RenderingServer::CanvasItemTextureFilter p_default_filter, RenderingServer::CanvasItemTextureRepeat p_default_repeat, bool p_snap_2d_vertices_to_pixel, bool &r_sdf_used) {
+ RendererRD::MaterialStorage *material_storage = RendererRD::MaterialStorage::get_singleton();
+
r_sdf_used = false;
int item_count = 0;
@@ -1253,7 +1260,7 @@ void RendererCanvasRenderRD::canvas_render_items(RID p_to_render_target, Item *p
}
if (clight->texture.is_valid()) {
- Rect2 atlas_rect = storage->decal_atlas_get_texture_rect(clight->texture);
+ Rect2 atlas_rect = RendererRD::DecalAtlasStorage::get_singleton()->decal_atlas_get_texture_rect(clight->texture);
state.light_uniforms[index].atlas_rect[0] = atlas_rect.position.x;
state.light_uniforms[index].atlas_rect[1] = atlas_rect.position.y;
state.light_uniforms[index].atlas_rect[2] = atlas_rect.size.width;
@@ -1363,7 +1370,7 @@ void RendererCanvasRenderRD::canvas_render_items(RID p_to_render_target, Item *p
RID material = ci->material_owner == nullptr ? ci->material : ci->material_owner->material;
if (material.is_valid()) {
- MaterialData *md = (MaterialData *)storage->material_get_data(material, RendererStorageRD::SHADER_TYPE_2D);
+ CanvasMaterialData *md = (CanvasMaterialData *)material_storage->material_get_data(material, RendererRD::SHADER_TYPE_2D);
if (md && md->shader_data->valid) {
if (md->shader_data->uses_screen_texture && canvas_group_owner == nullptr) {
if (!material_screen_texture_found) {
@@ -1479,18 +1486,20 @@ RID RendererCanvasRenderRD::light_create() {
}
void RendererCanvasRenderRD::light_set_texture(RID p_rid, RID p_texture) {
+ RendererRD::DecalAtlasStorage *decal_atlas_storage = RendererRD::DecalAtlasStorage::get_singleton();
+
CanvasLight *cl = canvas_light_owner.get_or_null(p_rid);
ERR_FAIL_COND(!cl);
if (cl->texture == p_texture) {
return;
}
if (cl->texture.is_valid()) {
- storage->texture_remove_from_decal_atlas(cl->texture);
+ decal_atlas_storage->texture_remove_from_decal_atlas(cl->texture);
}
cl->texture = p_texture;
if (cl->texture.is_valid()) {
- storage->texture_add_to_decal_atlas(cl->texture);
+ decal_atlas_storage->texture_add_to_decal_atlas(cl->texture);
}
}
@@ -1935,7 +1944,7 @@ void RendererCanvasRenderRD::occluder_polygon_set_cull_mode(RID p_occluder, RS::
oc->cull_mode = p_mode;
}
-void RendererCanvasRenderRD::ShaderData::set_code(const String &p_code) {
+void RendererCanvasRenderRD::CanvasShaderData::set_code(const String &p_code) {
//compile
code = p_code;
@@ -2117,7 +2126,7 @@ void RendererCanvasRenderRD::ShaderData::set_code(const String &p_code) {
valid = true;
}
-void RendererCanvasRenderRD::ShaderData::set_default_texture_param(const StringName &p_name, RID p_texture, int p_index) {
+void RendererCanvasRenderRD::CanvasShaderData::set_default_texture_param(const StringName &p_name, RID p_texture, int p_index) {
if (!p_texture.is_valid()) {
if (default_texture_params.has(p_name) && default_texture_params[p_name].has(p_index)) {
default_texture_params[p_name].erase(p_index);
@@ -2134,7 +2143,7 @@ void RendererCanvasRenderRD::ShaderData::set_default_texture_param(const StringN
}
}
-void RendererCanvasRenderRD::ShaderData::get_param_list(List<PropertyInfo> *p_param_list) const {
+void RendererCanvasRenderRD::CanvasShaderData::get_param_list(List<PropertyInfo> *p_param_list) const {
Map<int, StringName> order;
for (const KeyValue<StringName, ShaderLanguage::ShaderNode::Uniform> &E : uniforms) {
@@ -2155,13 +2164,13 @@ void RendererCanvasRenderRD::ShaderData::get_param_list(List<PropertyInfo> *p_pa
}
}
-void RendererCanvasRenderRD::ShaderData::get_instance_param_list(List<RendererStorage::InstanceShaderParam> *p_param_list) const {
+void RendererCanvasRenderRD::CanvasShaderData::get_instance_param_list(List<RendererMaterialStorage::InstanceShaderParam> *p_param_list) const {
for (const KeyValue<StringName, ShaderLanguage::ShaderNode::Uniform> &E : uniforms) {
if (E.value.scope != ShaderLanguage::ShaderNode::Uniform::SCOPE_INSTANCE) {
continue;
}
- RendererStorage::InstanceShaderParam p;
+ RendererMaterialStorage::InstanceShaderParam p;
p.info = ShaderLanguage::uniform_to_property_info(E.value);
p.info.name = E.key; //supply name
p.index = E.value.instance_index;
@@ -2170,7 +2179,7 @@ void RendererCanvasRenderRD::ShaderData::get_instance_param_list(List<RendererSt
}
}
-bool RendererCanvasRenderRD::ShaderData::is_param_texture(const StringName &p_param) const {
+bool RendererCanvasRenderRD::CanvasShaderData::is_param_texture(const StringName &p_param) const {
if (!uniforms.has(p_param)) {
return false;
}
@@ -2178,15 +2187,15 @@ bool RendererCanvasRenderRD::ShaderData::is_param_texture(const StringName &p_pa
return uniforms[p_param].texture_order >= 0;
}
-bool RendererCanvasRenderRD::ShaderData::is_animated() const {
+bool RendererCanvasRenderRD::CanvasShaderData::is_animated() const {
return false;
}
-bool RendererCanvasRenderRD::ShaderData::casts_shadows() const {
+bool RendererCanvasRenderRD::CanvasShaderData::casts_shadows() const {
return false;
}
-Variant RendererCanvasRenderRD::ShaderData::get_default_parameter(const StringName &p_parameter) const {
+Variant RendererCanvasRenderRD::CanvasShaderData::get_default_parameter(const StringName &p_parameter) const {
if (uniforms.has(p_parameter)) {
ShaderLanguage::ShaderNode::Uniform uniform = uniforms[p_parameter];
Vector<ShaderLanguage::ConstantNode::Value> default_value = uniform.default_value;
@@ -2195,18 +2204,18 @@ Variant RendererCanvasRenderRD::ShaderData::get_default_parameter(const StringNa
return Variant();
}
-RS::ShaderNativeSourceCode RendererCanvasRenderRD::ShaderData::get_native_source_code() const {
+RS::ShaderNativeSourceCode RendererCanvasRenderRD::CanvasShaderData::get_native_source_code() const {
RendererCanvasRenderRD *canvas_singleton = (RendererCanvasRenderRD *)RendererCanvasRender::singleton;
return canvas_singleton->shader.canvas_shader.version_get_native_source_code(version);
}
-RendererCanvasRenderRD::ShaderData::ShaderData() {
+RendererCanvasRenderRD::CanvasShaderData::CanvasShaderData() {
valid = false;
uses_screen_texture = false;
uses_sdf = false;
}
-RendererCanvasRenderRD::ShaderData::~ShaderData() {
+RendererCanvasRenderRD::CanvasShaderData::~CanvasShaderData() {
RendererCanvasRenderRD *canvas_singleton = (RendererCanvasRenderRD *)RendererCanvasRender::singleton;
ERR_FAIL_COND(!canvas_singleton);
//pipeline variants will clear themselves if shader is gone
@@ -2215,23 +2224,23 @@ RendererCanvasRenderRD::ShaderData::~ShaderData() {
}
}
-RendererStorageRD::ShaderData *RendererCanvasRenderRD::_create_shader_func() {
- ShaderData *shader_data = memnew(ShaderData);
+RendererRD::ShaderData *RendererCanvasRenderRD::_create_shader_func() {
+ CanvasShaderData *shader_data = memnew(CanvasShaderData);
return shader_data;
}
-bool RendererCanvasRenderRD::MaterialData::update_parameters(const Map<StringName, Variant> &p_parameters, bool p_uniform_dirty, bool p_textures_dirty) {
+bool RendererCanvasRenderRD::CanvasMaterialData::update_parameters(const Map<StringName, Variant> &p_parameters, bool p_uniform_dirty, bool p_textures_dirty) {
RendererCanvasRenderRD *canvas_singleton = (RendererCanvasRenderRD *)RendererCanvasRender::singleton;
return update_parameters_uniform_set(p_parameters, p_uniform_dirty, p_textures_dirty, shader_data->uniforms, shader_data->ubo_offsets.ptr(), shader_data->texture_uniforms, shader_data->default_texture_params, shader_data->ubo_size, uniform_set, canvas_singleton->shader.canvas_shader.version_get_shader(shader_data->version, 0), MATERIAL_UNIFORM_SET);
}
-RendererCanvasRenderRD::MaterialData::~MaterialData() {
+RendererCanvasRenderRD::CanvasMaterialData::~CanvasMaterialData() {
free_parameters_uniform_set(uniform_set);
}
-RendererStorageRD::MaterialData *RendererCanvasRenderRD::_create_material_func(ShaderData *p_shader) {
- MaterialData *material_data = memnew(MaterialData);
+RendererRD::MaterialData *RendererCanvasRenderRD::_create_material_func(CanvasShaderData *p_shader) {
+ CanvasMaterialData *material_data = memnew(CanvasMaterialData);
material_data->shader_data = p_shader;
//update will happen later anyway so do nothing.
return material_data;
@@ -2245,8 +2254,8 @@ void RendererCanvasRenderRD::update() {
}
RendererCanvasRenderRD::RendererCanvasRenderRD(RendererStorageRD *p_storage) {
- canvas_texture_storage = RendererRD::CanvasTextureStorage::get_singleton();
- texture_storage = RendererRD::TextureStorage::get_singleton();
+ RendererRD::CanvasTextureStorage *canvas_texture_storage = RendererRD::CanvasTextureStorage::get_singleton();
+ RendererRD::MaterialStorage *material_storage = RendererRD::MaterialStorage::get_singleton();
storage = p_storage;
{ //create default samplers
@@ -2583,16 +2592,16 @@ RendererCanvasRenderRD::RendererCanvasRenderRD(RendererStorageRD *p_storage) {
state.shadow_texture_size = GLOBAL_GET("rendering/2d/shadow_atlas/size");
//create functions for shader and material
- storage->shader_set_data_request_function(RendererStorageRD::SHADER_TYPE_2D, _create_shader_funcs);
- storage->material_set_data_request_function(RendererStorageRD::SHADER_TYPE_2D, _create_material_funcs);
+ material_storage->shader_set_data_request_function(RendererRD::SHADER_TYPE_2D, _create_shader_funcs);
+ material_storage->material_set_data_request_function(RendererRD::SHADER_TYPE_2D, _create_material_funcs);
state.time = 0;
{
- default_canvas_group_shader = storage->shader_allocate();
- storage->shader_initialize(default_canvas_group_shader);
+ default_canvas_group_shader = material_storage->shader_allocate();
+ material_storage->shader_initialize(default_canvas_group_shader);
- storage->shader_set_code(default_canvas_group_shader, R"(
+ material_storage->shader_set_code(default_canvas_group_shader, R"(
// Default CanvasGroup shader.
shader_type canvas_item;
@@ -2607,10 +2616,10 @@ void fragment() {
COLOR *= c;
}
)");
- default_canvas_group_material = storage->material_allocate();
- storage->material_initialize(default_canvas_group_material);
+ default_canvas_group_material = material_storage->material_allocate();
+ material_storage->material_initialize(default_canvas_group_material);
- storage->material_set_shader(default_canvas_group_material, default_canvas_group_shader);
+ material_storage->material_set_shader(default_canvas_group_material, default_canvas_group_shader);
}
static_assert(sizeof(PushConstant) == 128);
@@ -2658,10 +2667,11 @@ void RendererCanvasRenderRD::set_shadow_texture_size(int p_size) {
}
RendererCanvasRenderRD::~RendererCanvasRenderRD() {
+ RendererRD::MaterialStorage *material_storage = RendererRD::MaterialStorage::get_singleton();
//canvas state
- storage->free(default_canvas_group_material);
- storage->free(default_canvas_group_shader);
+ material_storage->material_free(default_canvas_group_material);
+ material_storage->shader_free(default_canvas_group_shader);
{
if (state.canvas_state_buffer.is_valid()) {
@@ -2698,6 +2708,6 @@ RendererCanvasRenderRD::~RendererCanvasRenderRD() {
}
RD::get_singleton()->free(state.shadow_texture);
- canvas_texture_storage->canvas_texture_free(default_canvas_texture);
+ RendererRD::CanvasTextureStorage::get_singleton()->canvas_texture_free(default_canvas_texture);
//pipelines don't need freeing, they are all gone after shaders are gone
}
diff --git a/servers/rendering/renderer_rd/renderer_canvas_render_rd.h b/servers/rendering/renderer_rd/renderer_canvas_render_rd.h
index c0138c4fe0..b33ee3fbfe 100644
--- a/servers/rendering/renderer_rd/renderer_canvas_render_rd.h
+++ b/servers/rendering/renderer_rd/renderer_canvas_render_rd.h
@@ -37,14 +37,10 @@
#include "servers/rendering/renderer_rd/renderer_storage_rd.h"
#include "servers/rendering/renderer_rd/shaders/canvas.glsl.gen.h"
#include "servers/rendering/renderer_rd/shaders/canvas_occlusion.glsl.gen.h"
-#include "servers/rendering/renderer_rd/storage_rd/canvas_texture_storage.h"
-#include "servers/rendering/renderer_rd/storage_rd/texture_storage.h"
#include "servers/rendering/rendering_device.h"
#include "servers/rendering/shader_compiler.h"
class RendererCanvasRenderRD : public RendererCanvasRender {
- RendererRD::CanvasTextureStorage *canvas_texture_storage;
- RendererRD::TextureStorage *texture_storage;
RendererStorageRD *storage;
enum {
@@ -155,7 +151,7 @@ class RendererCanvasRenderRD : public RendererCanvasRender {
ShaderCompiler compiler;
} shader;
- struct ShaderData : public RendererStorageRD::ShaderData {
+ struct CanvasShaderData : public RendererRD::ShaderData {
enum BlendMode { //used internally
BLEND_MODE_MIX,
BLEND_MODE_ADD,
@@ -186,7 +182,7 @@ class RendererCanvasRenderRD : public RendererCanvasRender {
virtual void set_code(const String &p_Code);
virtual void set_default_texture_param(const StringName &p_name, RID p_texture, int p_index);
virtual void get_param_list(List<PropertyInfo> *p_param_list) const;
- virtual void get_instance_param_list(List<RendererStorage::InstanceShaderParam> *p_param_list) const;
+ virtual void get_instance_param_list(List<RendererMaterialStorage::InstanceShaderParam> *p_param_list) const;
virtual bool is_param_texture(const StringName &p_param) const;
virtual bool is_animated() const;
@@ -194,28 +190,28 @@ class RendererCanvasRenderRD : public RendererCanvasRender {
virtual Variant get_default_parameter(const StringName &p_parameter) const;
virtual RS::ShaderNativeSourceCode get_native_source_code() const;
- ShaderData();
- virtual ~ShaderData();
+ CanvasShaderData();
+ virtual ~CanvasShaderData();
};
- RendererStorageRD::ShaderData *_create_shader_func();
- static RendererStorageRD::ShaderData *_create_shader_funcs() {
+ RendererRD::ShaderData *_create_shader_func();
+ static RendererRD::ShaderData *_create_shader_funcs() {
return static_cast<RendererCanvasRenderRD *>(singleton)->_create_shader_func();
}
- struct MaterialData : public RendererStorageRD::MaterialData {
- ShaderData *shader_data;
+ struct CanvasMaterialData : public RendererRD::MaterialData {
+ CanvasShaderData *shader_data;
RID uniform_set;
virtual void set_render_priority(int p_priority) {}
virtual void set_next_pass(RID p_pass) {}
virtual bool update_parameters(const Map<StringName, Variant> &p_parameters, bool p_uniform_dirty, bool p_textures_dirty);
- virtual ~MaterialData();
+ virtual ~CanvasMaterialData();
};
- RendererStorageRD::MaterialData *_create_material_func(ShaderData *p_shader);
- static RendererStorageRD::MaterialData *_create_material_funcs(RendererStorageRD::ShaderData *p_shader) {
- return static_cast<RendererCanvasRenderRD *>(singleton)->_create_material_func(static_cast<ShaderData *>(p_shader));
+ RendererRD::MaterialData *_create_material_func(CanvasShaderData *p_shader);
+ static RendererRD::MaterialData *_create_material_funcs(RendererRD::ShaderData *p_shader) {
+ return static_cast<RendererCanvasRenderRD *>(singleton)->_create_material_func(static_cast<CanvasShaderData *>(p_shader));
}
/**************************/
diff --git a/servers/rendering/renderer_rd/renderer_compositor_rd.cpp b/servers/rendering/renderer_rd/renderer_compositor_rd.cpp
index 46ec472121..cfec5dac5d 100644
--- a/servers/rendering/renderer_rd/renderer_compositor_rd.cpp
+++ b/servers/rendering/renderer_rd/renderer_compositor_rd.cpp
@@ -155,6 +155,8 @@ void RendererCompositorRD::finalize() {
memdelete(scene);
memdelete(canvas);
memdelete(storage);
+ memdelete(decal_atlas_storage);
+ memdelete(material_storage);
memdelete(texture_storage);
memdelete(canvas_texture_storage);
@@ -287,6 +289,8 @@ RendererCompositorRD::RendererCompositorRD() {
canvas_texture_storage = memnew(RendererRD::CanvasTextureStorage);
texture_storage = memnew(RendererRD::TextureStorage);
+ decal_atlas_storage = memnew(RendererRD::DecalAtlasStorage);
+ material_storage = memnew(RendererRD::MaterialStorage);
storage = memnew(RendererStorageRD);
canvas = memnew(RendererCanvasRenderRD(storage));
diff --git a/servers/rendering/renderer_rd/renderer_compositor_rd.h b/servers/rendering/renderer_rd/renderer_compositor_rd.h
index 07df38b2b2..f2d7679e23 100644
--- a/servers/rendering/renderer_rd/renderer_compositor_rd.h
+++ b/servers/rendering/renderer_rd/renderer_compositor_rd.h
@@ -40,6 +40,8 @@
#include "servers/rendering/renderer_rd/renderer_storage_rd.h"
#include "servers/rendering/renderer_rd/shaders/blit.glsl.gen.h"
#include "servers/rendering/renderer_rd/storage_rd/canvas_texture_storage.h"
+#include "servers/rendering/renderer_rd/storage_rd/decal_atlas_storage.h"
+#include "servers/rendering/renderer_rd/storage_rd/material_storage.h"
#include "servers/rendering/renderer_rd/storage_rd/texture_storage.h"
#include "servers/rendering/renderer_rd/uniform_set_cache_rd.h"
@@ -48,7 +50,9 @@ protected:
UniformSetCacheRD *uniform_set_cache;
RendererCanvasRenderRD *canvas;
RendererRD::CanvasTextureStorage *canvas_texture_storage;
+ RendererRD::MaterialStorage *material_storage;
RendererRD::TextureStorage *texture_storage;
+ RendererRD::DecalAtlasStorage *decal_atlas_storage;
RendererStorageRD *storage;
RendererSceneRenderRD *scene;
@@ -92,7 +96,9 @@ protected:
static uint64_t frame;
public:
- RendererCanvasTextureStorage *get_canvas_texture_storage() { return canvas_texture_storage; };
+ RendererCanvasTextureStorage *get_canvas_texture_storage() { return canvas_texture_storage; }
+ RendererDecalAtlasStorage *get_decal_atlas_storage() { return decal_atlas_storage; }
+ RendererMaterialStorage *get_material_storage() { return material_storage; };
RendererTextureStorage *get_texture_storage() { return texture_storage; };
RendererStorage *get_storage() { return storage; }
RendererCanvasRender *get_canvas() { return canvas; }
diff --git a/servers/rendering/renderer_rd/renderer_scene_render_rd.cpp b/servers/rendering/renderer_rd/renderer_scene_render_rd.cpp
index f5258d7923..b5a40f6c86 100644
--- a/servers/rendering/renderer_rd/renderer_scene_render_rd.cpp
+++ b/servers/rendering/renderer_rd/renderer_scene_render_rd.cpp
@@ -33,6 +33,9 @@
#include "core/config/project_settings.h"
#include "core/os/os.h"
#include "renderer_compositor_rd.h"
+#include "servers/rendering/renderer_rd/storage_rd/decal_atlas_storage.h"
+#include "servers/rendering/renderer_rd/storage_rd/material_storage.h"
+#include "servers/rendering/renderer_rd/storage_rd/texture_storage.h"
#include "servers/rendering/rendering_server_default.h"
void get_vogel_disk(float *r_kernel, int p_sample_count) {
@@ -2358,6 +2361,7 @@ void RendererSceneRenderRD::_render_buffers_copy_depth_texture(const RenderDataR
}
void RendererSceneRenderRD::_render_buffers_post_process_and_tonemap(const RenderDataRD *p_render_data) {
+ RendererRD::TextureStorage *texture_storage = RendererRD::TextureStorage::get_singleton();
RenderBuffers *rb = render_buffers_owner.get_or_null(p_render_data->render_buffers);
ERR_FAIL_COND(!rb);
@@ -2570,6 +2574,7 @@ void RendererSceneRenderRD::_render_buffers_post_process_and_tonemap(const Rende
}
void RendererSceneRenderRD::_post_process_subpass(RID p_source_texture, RID p_framebuffer, const RenderDataRD *p_render_data) {
+ RendererRD::TextureStorage *texture_storage = RendererRD::TextureStorage::get_singleton();
RD::get_singleton()->draw_command_begin_label("Post Process Subpass");
RenderBuffers *rb = render_buffers_owner.get_or_null(p_render_data->render_buffers);
@@ -2646,6 +2651,7 @@ void RendererSceneRenderRD::_disable_clear_request(const RenderDataRD *p_render_
}
void RendererSceneRenderRD::_render_buffers_debug_draw(RID p_render_buffers, RID p_shadow_atlas, RID p_occlusion_buffer) {
+ RendererRD::TextureStorage *texture_storage = RendererRD::TextureStorage::get_singleton();
EffectsRD *effects = storage->get_effects();
RenderBuffers *rb = render_buffers_owner.get_or_null(p_render_buffers);
@@ -2674,7 +2680,7 @@ void RendererSceneRenderRD::_render_buffers_debug_draw(RID p_render_buffers, RID
}
if (debug_draw == RS::VIEWPORT_DEBUG_DRAW_DECAL_ATLAS) {
- RID decal_atlas = storage->decal_atlas_get_texture();
+ RID decal_atlas = RendererRD::DecalAtlasStorage::get_singleton()->decal_atlas_get_texture();
if (decal_atlas.is_valid()) {
Size2 rtsize = storage->render_target_get_size(rb->render_target);
@@ -3262,6 +3268,8 @@ void RendererSceneRenderRD::_setup_reflections(const PagedArray<RID> &p_reflecti
}
void RendererSceneRenderRD::_setup_lights(const PagedArray<RID> &p_lights, const Transform3D &p_camera_transform, RID p_shadow_atlas, bool p_using_shadows, uint32_t &r_directional_light_count, uint32_t &r_positional_light_count, bool &r_directional_light_soft_shadows) {
+ RendererRD::DecalAtlasStorage *decal_atlas_storage = RendererRD::DecalAtlasStorage::get_singleton();
+
Transform3D inverse_transform = p_camera_transform.affine_inverse();
r_directional_light_count = 0;
@@ -3545,7 +3553,7 @@ void RendererSceneRenderRD::_setup_lights(const PagedArray<RID> &p_lights, const
RID projector = storage->light_get_projector(base);
if (projector.is_valid()) {
- Rect2 rect = storage->decal_atlas_get_texture_rect(projector);
+ Rect2 rect = decal_atlas_storage->decal_atlas_get_texture_rect(projector);
if (type == RS::LIGHT_SPOT) {
light_data.projector_rect[0] = rect.position.x;
@@ -3661,6 +3669,8 @@ void RendererSceneRenderRD::_setup_lights(const PagedArray<RID> &p_lights, const
}
void RendererSceneRenderRD::_setup_decals(const PagedArray<RID> &p_decals, const Transform3D &p_camera_inverse_xform) {
+ RendererRD::DecalAtlasStorage *decal_atlas_storage = RendererRD::DecalAtlasStorage::get_singleton();
+
Transform3D uv_xform;
uv_xform.basis.scale(Vector3(2.0, 1.0, 2.0));
uv_xform.origin = Vector3(-1.0, 0.0, -1.0);
@@ -3684,9 +3694,9 @@ void RendererSceneRenderRD::_setup_decals(const PagedArray<RID> &p_decals, const
real_t distance = -p_camera_inverse_xform.xform(xform.origin).z;
- if (storage->decal_is_distance_fade_enabled(decal)) {
- float fade_begin = storage->decal_get_distance_fade_begin(decal);
- float fade_length = storage->decal_get_distance_fade_length(decal);
+ if (decal_atlas_storage->decal_is_distance_fade_enabled(decal)) {
+ float fade_begin = decal_atlas_storage->decal_get_distance_fade_begin(decal);
+ float fade_length = decal_atlas_storage->decal_get_distance_fade_length(decal);
if (distance > fade_begin) {
if (distance > fade_begin + fade_length) {
@@ -3714,15 +3724,15 @@ void RendererSceneRenderRD::_setup_decals(const PagedArray<RID> &p_decals, const
_map_forward_id(FORWARD_ID_TYPE_DECAL, di->forward_id, i);
}
- di->cull_mask = storage->decal_get_cull_mask(decal);
+ di->cull_mask = decal_atlas_storage->decal_get_cull_mask(decal);
Transform3D xform = di->transform;
float fade = 1.0;
- if (storage->decal_is_distance_fade_enabled(decal)) {
+ if (decal_atlas_storage->decal_is_distance_fade_enabled(decal)) {
real_t distance = -p_camera_inverse_xform.xform(xform.origin).z;
- float fade_begin = storage->decal_get_distance_fade_begin(decal);
- float fade_length = storage->decal_get_distance_fade_length(decal);
+ float fade_begin = decal_atlas_storage->decal_get_distance_fade_begin(decal);
+ float fade_length = decal_atlas_storage->decal_get_distance_fade_length(decal);
if (distance > fade_begin) {
fade = 1.0 - (distance - fade_begin) / fade_length;
@@ -3731,7 +3741,7 @@ void RendererSceneRenderRD::_setup_decals(const PagedArray<RID> &p_decals, const
Cluster::DecalData &dd = cluster.decals[i];
- Vector3 decal_extents = storage->decal_get_extents(decal);
+ Vector3 decal_extents = decal_atlas_storage->decal_get_extents(decal);
Transform3D scale_xform;
scale_xform.basis.scale(decal_extents);
@@ -3744,12 +3754,12 @@ void RendererSceneRenderRD::_setup_decals(const PagedArray<RID> &p_decals, const
dd.normal[0] = normal.x;
dd.normal[1] = normal.y;
dd.normal[2] = normal.z;
- dd.normal_fade = storage->decal_get_normal_fade(decal);
+ dd.normal_fade = decal_atlas_storage->decal_get_normal_fade(decal);
- RID albedo_tex = storage->decal_get_texture(decal, RS::DECAL_TEXTURE_ALBEDO);
- RID emission_tex = storage->decal_get_texture(decal, RS::DECAL_TEXTURE_EMISSION);
+ RID albedo_tex = decal_atlas_storage->decal_get_texture(decal, RS::DECAL_TEXTURE_ALBEDO);
+ RID emission_tex = decal_atlas_storage->decal_get_texture(decal, RS::DECAL_TEXTURE_EMISSION);
if (albedo_tex.is_valid()) {
- Rect2 rect = storage->decal_atlas_get_texture_rect(albedo_tex);
+ Rect2 rect = decal_atlas_storage->decal_atlas_get_texture_rect(albedo_tex);
dd.albedo_rect[0] = rect.position.x;
dd.albedo_rect[1] = rect.position.y;
dd.albedo_rect[2] = rect.size.x;
@@ -3764,10 +3774,10 @@ void RendererSceneRenderRD::_setup_decals(const PagedArray<RID> &p_decals, const
dd.albedo_rect[3] = 0;
}
- RID normal_tex = storage->decal_get_texture(decal, RS::DECAL_TEXTURE_NORMAL);
+ RID normal_tex = decal_atlas_storage->decal_get_texture(decal, RS::DECAL_TEXTURE_NORMAL);
if (normal_tex.is_valid()) {
- Rect2 rect = storage->decal_atlas_get_texture_rect(normal_tex);
+ Rect2 rect = decal_atlas_storage->decal_atlas_get_texture_rect(normal_tex);
dd.normal_rect[0] = rect.position.x;
dd.normal_rect[1] = rect.position.y;
dd.normal_rect[2] = rect.size.x;
@@ -3782,9 +3792,9 @@ void RendererSceneRenderRD::_setup_decals(const PagedArray<RID> &p_decals, const
dd.normal_rect[3] = 0;
}
- RID orm_tex = storage->decal_get_texture(decal, RS::DECAL_TEXTURE_ORM);
+ RID orm_tex = decal_atlas_storage->decal_get_texture(decal, RS::DECAL_TEXTURE_ORM);
if (orm_tex.is_valid()) {
- Rect2 rect = storage->decal_atlas_get_texture_rect(orm_tex);
+ Rect2 rect = decal_atlas_storage->decal_atlas_get_texture_rect(orm_tex);
dd.orm_rect[0] = rect.position.x;
dd.orm_rect[1] = rect.position.y;
dd.orm_rect[2] = rect.size.x;
@@ -3797,7 +3807,7 @@ void RendererSceneRenderRD::_setup_decals(const PagedArray<RID> &p_decals, const
}
if (emission_tex.is_valid()) {
- Rect2 rect = storage->decal_atlas_get_texture_rect(emission_tex);
+ Rect2 rect = decal_atlas_storage->decal_atlas_get_texture_rect(emission_tex);
dd.emission_rect[0] = rect.position.x;
dd.emission_rect[1] = rect.position.y;
dd.emission_rect[2] = rect.size.x;
@@ -3809,16 +3819,16 @@ void RendererSceneRenderRD::_setup_decals(const PagedArray<RID> &p_decals, const
dd.emission_rect[3] = 0;
}
- Color modulate = storage->decal_get_modulate(decal);
+ Color modulate = decal_atlas_storage->decal_get_modulate(decal);
dd.modulate[0] = modulate.r;
dd.modulate[1] = modulate.g;
dd.modulate[2] = modulate.b;
dd.modulate[3] = modulate.a * fade;
- dd.emission_energy = storage->decal_get_emission_energy(decal) * fade;
- dd.albedo_mix = storage->decal_get_albedo_mix(decal);
- dd.mask = storage->decal_get_cull_mask(decal);
- dd.upper_fade = storage->decal_get_upper_fade(decal);
- dd.lower_fade = storage->decal_get_lower_fade(decal);
+ dd.emission_energy = decal_atlas_storage->decal_get_emission_energy(decal) * fade;
+ dd.albedo_mix = decal_atlas_storage->decal_get_albedo_mix(decal);
+ dd.mask = decal_atlas_storage->decal_get_cull_mask(decal);
+ dd.upper_fade = decal_atlas_storage->decal_get_upper_fade(decal);
+ dd.lower_fade = decal_atlas_storage->decal_get_lower_fade(decal);
if (current_cluster_builder != nullptr) {
current_cluster_builder->add_box(ClusterBuilderRD::BOX_TYPE_DECAL, xform, decal_extents);
@@ -3915,13 +3925,13 @@ void RendererSceneRenderRD::FogShaderData::get_param_list(List<PropertyInfo> *p_
}
}
-void RendererSceneRenderRD::FogShaderData::get_instance_param_list(List<RendererStorage::InstanceShaderParam> *p_param_list) const {
+void RendererSceneRenderRD::FogShaderData::get_instance_param_list(List<RendererMaterialStorage::InstanceShaderParam> *p_param_list) const {
for (Map<StringName, ShaderLanguage::ShaderNode::Uniform>::Element *E = uniforms.front(); E; E = E->next()) {
if (E->get().scope != ShaderLanguage::ShaderNode::Uniform::SCOPE_INSTANCE) {
continue;
}
- RendererStorage::InstanceShaderParam p;
+ RendererMaterialStorage::InstanceShaderParam p;
p.info = ShaderLanguage::uniform_to_property_info(E->get());
p.info.name = E->key(); //supply name
p.index = E->get().instance_index;
@@ -3989,23 +3999,23 @@ RendererSceneRenderRD::FogMaterialData::~FogMaterialData() {
free_parameters_uniform_set(uniform_set);
}
-RendererStorageRD::ShaderData *RendererSceneRenderRD::_create_fog_shader_func() {
+RendererRD::ShaderData *RendererSceneRenderRD::_create_fog_shader_func() {
FogShaderData *shader_data = memnew(FogShaderData);
return shader_data;
}
-RendererStorageRD::ShaderData *RendererSceneRenderRD::_create_fog_shader_funcs() {
+RendererRD::ShaderData *RendererSceneRenderRD::_create_fog_shader_funcs() {
return static_cast<RendererSceneRenderRD *>(RendererSceneRenderRD::singleton)->_create_fog_shader_func();
};
-RendererStorageRD::MaterialData *RendererSceneRenderRD::_create_fog_material_func(FogShaderData *p_shader) {
+RendererRD::MaterialData *RendererSceneRenderRD::_create_fog_material_func(FogShaderData *p_shader) {
FogMaterialData *material_data = memnew(FogMaterialData);
material_data->shader_data = p_shader;
//update will happen later anyway so do nothing.
return material_data;
}
-RendererStorageRD::MaterialData *RendererSceneRenderRD::_create_fog_material_funcs(RendererStorageRD::ShaderData *p_shader) {
+RendererRD::MaterialData *RendererSceneRenderRD::_create_fog_material_funcs(RendererRD::ShaderData *p_shader) {
return static_cast<RendererSceneRenderRD *>(RendererSceneRenderRD::singleton)->_create_fog_material_func(static_cast<FogShaderData *>(p_shader));
};
@@ -4063,6 +4073,9 @@ Vector3i RendererSceneRenderRD::_point_get_position_in_froxel_volume(const Vecto
}
void RendererSceneRenderRD::_update_volumetric_fog(RID p_render_buffers, RID p_environment, const CameraMatrix &p_cam_projection, const Transform3D &p_cam_transform, RID p_shadow_atlas, int p_directional_light_count, bool p_use_directional_shadows, int p_positional_light_count, int p_voxel_gi_count, const PagedArray<RID> &p_fog_volumes) {
+ RendererRD::TextureStorage *texture_storage = RendererRD::TextureStorage::get_singleton();
+ RendererRD::MaterialStorage *material_storage = RendererRD::MaterialStorage::get_singleton();
+
ERR_FAIL_COND(!is_clustered_enabled()); // can't use volumetric fog without clustered
RenderBuffers *rb = render_buffers_owner.get_or_null(p_render_buffers);
ERR_FAIL_COND(!rb);
@@ -4263,7 +4276,7 @@ void RendererSceneRenderRD::_update_volumetric_fog(RID p_render_buffers, RID p_e
FogMaterialData *material = nullptr;
if (fog_material.is_valid()) {
- material = (FogMaterialData *)storage->material_get_data(fog_material, RendererStorageRD::SHADER_TYPE_FOG);
+ material = (FogMaterialData *)material_storage->material_get_data(fog_material, RendererRD::SHADER_TYPE_FOG);
if (!material || !material->shader_data->valid) {
material = nullptr;
}
@@ -4271,7 +4284,7 @@ void RendererSceneRenderRD::_update_volumetric_fog(RID p_render_buffers, RID p_e
if (!material) {
fog_material = volumetric_fog.default_material;
- material = (FogMaterialData *)storage->material_get_data(fog_material, RendererStorageRD::SHADER_TYPE_FOG);
+ material = (FogMaterialData *)material_storage->material_get_data(fog_material, RendererRD::SHADER_TYPE_FOG);
}
ERR_FAIL_COND(!material);
@@ -5600,12 +5613,13 @@ uint32_t RendererSceneRenderRD::get_max_elements() const {
}
RendererSceneRenderRD::RendererSceneRenderRD(RendererStorageRD *p_storage) {
- texture_storage = RendererRD::TextureStorage::get_singleton();
storage = p_storage;
singleton = this;
}
void RendererSceneRenderRD::init() {
+ RendererRD::MaterialStorage *material_storage = RendererRD::MaterialStorage::get_singleton();
+
max_cluster_elements = get_max_elements();
directional_shadow.size = GLOBAL_GET("rendering/shadows/directional_shadow/size");
@@ -5662,8 +5676,8 @@ void RendererSceneRenderRD::init() {
volumetric_fog_modes.push_back("");
volumetric_fog.shader.initialize(volumetric_fog_modes);
- storage->shader_set_data_request_function(RendererStorageRD::SHADER_TYPE_FOG, _create_fog_shader_funcs);
- storage->material_set_data_request_function(RendererStorageRD::SHADER_TYPE_FOG, _create_fog_material_funcs);
+ material_storage->shader_set_data_request_function(RendererRD::SHADER_TYPE_FOG, _create_fog_shader_funcs);
+ material_storage->material_set_data_request_function(RendererRD::SHADER_TYPE_FOG, _create_fog_material_funcs);
volumetric_fog.volume_ubo = RD::get_singleton()->uniform_buffer_create(sizeof(VolumetricFogShader::VolumeUBO));
}
@@ -5702,9 +5716,9 @@ void RendererSceneRenderRD::init() {
{
// default material and shader for fog shader
- volumetric_fog.default_shader = storage->shader_allocate();
- storage->shader_initialize(volumetric_fog.default_shader);
- storage->shader_set_code(volumetric_fog.default_shader, R"(
+ volumetric_fog.default_shader = material_storage->shader_allocate();
+ material_storage->shader_initialize(volumetric_fog.default_shader);
+ material_storage->shader_set_code(volumetric_fog.default_shader, R"(
// Default fog shader.
shader_type fog;
@@ -5714,11 +5728,11 @@ void fog() {
ALBEDO = vec3(1.0);
}
)");
- volumetric_fog.default_material = storage->material_allocate();
- storage->material_initialize(volumetric_fog.default_material);
- storage->material_set_shader(volumetric_fog.default_material, volumetric_fog.default_shader);
+ volumetric_fog.default_material = material_storage->material_allocate();
+ material_storage->material_initialize(volumetric_fog.default_material);
+ material_storage->material_set_shader(volumetric_fog.default_material, volumetric_fog.default_shader);
- FogMaterialData *md = (FogMaterialData *)storage->material_get_data(volumetric_fog.default_material, RendererStorageRD::SHADER_TYPE_FOG);
+ FogMaterialData *md = (FogMaterialData *)material_storage->material_get_data(volumetric_fog.default_material, RendererRD::SHADER_TYPE_FOG);
volumetric_fog.default_shader_rd = volumetric_fog.shader.version_get_shader(md->shader_data->version, 0);
Vector<RD::Uniform> uniforms;
@@ -5748,7 +5762,7 @@ void fog() {
RD::Uniform u;
u.uniform_type = RD::UNIFORM_TYPE_STORAGE_BUFFER;
u.binding = 2;
- u.append_id(storage->global_variables_get_storage_buffer());
+ u.append_id(RendererRD::MaterialStorage::get_singleton()->global_variables_get_storage_buffer());
uniforms.push_back(u);
}
@@ -5817,6 +5831,8 @@ void fog() {
}
RendererSceneRenderRD::~RendererSceneRenderRD() {
+ RendererRD::MaterialStorage *material_storage = RendererRD::MaterialStorage::get_singleton();
+
for (const KeyValue<int, ShadowCubemap> &E : shadow_cubemaps) {
RD::get_singleton()->free(E.value.cubemap);
}
@@ -5833,20 +5849,10 @@ RendererSceneRenderRD::~RendererSceneRenderRD() {
volumetric_fog.process_shader.version_free(volumetric_fog.process_shader_version);
RD::get_singleton()->free(volumetric_fog.volume_ubo);
RD::get_singleton()->free(volumetric_fog.params_ubo);
- storage->free(volumetric_fog.default_shader);
- storage->free(volumetric_fog.default_material);
- }
-
- RendererSceneSkyRD::SkyMaterialData *md = (RendererSceneSkyRD::SkyMaterialData *)storage->material_get_data(sky.sky_shader.default_material, RendererStorageRD::SHADER_TYPE_SKY);
- sky.sky_shader.shader.version_free(md->shader_data->version);
- RD::get_singleton()->free(sky.sky_scene_state.directional_light_buffer);
- RD::get_singleton()->free(sky.sky_scene_state.uniform_buffer);
- memdelete_arr(sky.sky_scene_state.directional_lights);
- memdelete_arr(sky.sky_scene_state.last_frame_directional_lights);
- storage->free(sky.sky_shader.default_shader);
- storage->free(sky.sky_shader.default_material);
- storage->free(sky.sky_scene_state.fog_shader);
- storage->free(sky.sky_scene_state.fog_material);
+ material_storage->shader_free(volumetric_fog.default_shader);
+ material_storage->material_free(volumetric_fog.default_material);
+ }
+
memdelete_arr(directional_penumbra_shadow_kernel);
memdelete_arr(directional_soft_shadow_kernel);
memdelete_arr(penumbra_shadow_kernel);
diff --git a/servers/rendering/renderer_rd/renderer_scene_render_rd.h b/servers/rendering/renderer_rd/renderer_scene_render_rd.h
index e302db2631..77c0437e83 100644
--- a/servers/rendering/renderer_rd/renderer_scene_render_rd.h
+++ b/servers/rendering/renderer_rd/renderer_scene_render_rd.h
@@ -41,7 +41,6 @@
#include "servers/rendering/renderer_rd/renderer_storage_rd.h"
#include "servers/rendering/renderer_rd/shaders/volumetric_fog.glsl.gen.h"
#include "servers/rendering/renderer_rd/shaders/volumetric_fog_process.glsl.gen.h"
-#include "servers/rendering/renderer_rd/storage_rd/texture_storage.h"
#include "servers/rendering/renderer_scene.h"
#include "servers/rendering/renderer_scene_render.h"
#include "servers/rendering/rendering_device.h"
@@ -93,7 +92,6 @@ class RendererSceneRenderRD : public RendererSceneRender {
friend RendererSceneGIRD;
protected:
- RendererRD::TextureStorage *texture_storage;
RendererStorageRD *storage;
double time;
double time_step = 0;
@@ -909,7 +907,7 @@ private:
void _volumetric_fog_erase(RenderBuffers *rb);
void _update_volumetric_fog(RID p_render_buffers, RID p_environment, const CameraMatrix &p_cam_projection, const Transform3D &p_cam_transform, RID p_shadow_atlas, int p_directional_light_count, bool p_use_directional_shadows, int p_positional_light_count, int p_voxel_gi_count, const PagedArray<RID> &p_fog_volumes);
- struct FogShaderData : public RendererStorageRD::ShaderData {
+ struct FogShaderData : public RendererRD::ShaderData {
bool valid;
RID version;
@@ -929,7 +927,7 @@ private:
virtual void set_code(const String &p_Code);
virtual void set_default_texture_param(const StringName &p_name, RID p_texture, int p_index);
virtual void get_param_list(List<PropertyInfo> *p_param_list) const;
- virtual void get_instance_param_list(List<RendererStorage::InstanceShaderParam> *p_param_list) const;
+ virtual void get_instance_param_list(List<RendererMaterialStorage::InstanceShaderParam> *p_param_list) const;
virtual bool is_param_texture(const StringName &p_param) const;
virtual bool is_animated() const;
virtual bool casts_shadows() const;
@@ -939,7 +937,7 @@ private:
virtual ~FogShaderData();
};
- struct FogMaterialData : public RendererStorageRD::MaterialData {
+ struct FogMaterialData : public RendererRD::MaterialData {
FogShaderData *shader_data;
RID uniform_set;
bool uniform_set_updated;
@@ -950,11 +948,11 @@ private:
virtual ~FogMaterialData();
};
- RendererStorageRD::ShaderData *_create_fog_shader_func();
- static RendererStorageRD::ShaderData *_create_fog_shader_funcs();
+ RendererRD::ShaderData *_create_fog_shader_func();
+ static RendererRD::ShaderData *_create_fog_shader_funcs();
- RendererStorageRD::MaterialData *_create_fog_material_func(FogShaderData *p_shader);
- static RendererStorageRD::MaterialData *_create_fog_material_funcs(RendererStorageRD::ShaderData *p_shader);
+ RendererRD::MaterialData *_create_fog_material_func(FogShaderData *p_shader);
+ static RendererRD::MaterialData *_create_fog_material_funcs(RendererRD::ShaderData *p_shader);
RID shadow_sampler;
diff --git a/servers/rendering/renderer_rd/renderer_scene_sky_rd.cpp b/servers/rendering/renderer_rd/renderer_scene_sky_rd.cpp
index 44da9e40f8..1c4ddcb5e1 100644
--- a/servers/rendering/renderer_rd/renderer_scene_sky_rd.cpp
+++ b/servers/rendering/renderer_rd/renderer_scene_sky_rd.cpp
@@ -33,6 +33,7 @@
#include "core/math/math_defs.h"
#include "renderer_scene_render_rd.h"
#include "servers/rendering/renderer_rd/renderer_compositor_rd.h"
+#include "servers/rendering/renderer_rd/storage_rd/material_storage.h"
#include "servers/rendering/renderer_rd/storage_rd/texture_storage.h"
#include "servers/rendering/rendering_server_default.h"
@@ -177,13 +178,13 @@ void RendererSceneSkyRD::SkyShaderData::get_param_list(List<PropertyInfo> *p_par
}
}
-void RendererSceneSkyRD::SkyShaderData::get_instance_param_list(List<RendererStorage::InstanceShaderParam> *p_param_list) const {
+void RendererSceneSkyRD::SkyShaderData::get_instance_param_list(List<RendererMaterialStorage::InstanceShaderParam> *p_param_list) const {
for (const KeyValue<StringName, ShaderLanguage::ShaderNode::Uniform> &E : uniforms) {
if (E.value.scope != ShaderLanguage::ShaderNode::Uniform::SCOPE_INSTANCE) {
continue;
}
- RendererStorage::InstanceShaderParam p;
+ RendererMaterialStorage::InstanceShaderParam p;
p.info = ShaderLanguage::uniform_to_property_info(E.value);
p.info.name = E.key; //supply name
p.index = E.value.instance_index;
@@ -767,24 +768,24 @@ Ref<Image> RendererSceneSkyRD::Sky::bake_panorama(RendererStorageRD *p_storage,
////////////////////////////////////////////////////////////////////////////////
// RendererSceneSkyRD
-RendererStorageRD::ShaderData *RendererSceneSkyRD::_create_sky_shader_func() {
+RendererRD::ShaderData *RendererSceneSkyRD::_create_sky_shader_func() {
SkyShaderData *shader_data = memnew(SkyShaderData);
return shader_data;
}
-RendererStorageRD::ShaderData *RendererSceneSkyRD::_create_sky_shader_funcs() {
+RendererRD::ShaderData *RendererSceneSkyRD::_create_sky_shader_funcs() {
// !BAS! Why isn't _create_sky_shader_func not just static too?
return static_cast<RendererSceneRenderRD *>(RendererSceneRenderRD::singleton)->sky._create_sky_shader_func();
};
-RendererStorageRD::MaterialData *RendererSceneSkyRD::_create_sky_material_func(SkyShaderData *p_shader) {
+RendererRD::MaterialData *RendererSceneSkyRD::_create_sky_material_func(SkyShaderData *p_shader) {
SkyMaterialData *material_data = memnew(SkyMaterialData);
material_data->shader_data = p_shader;
//update will happen later anyway so do nothing.
return material_data;
}
-RendererStorageRD::MaterialData *RendererSceneSkyRD::_create_sky_material_funcs(RendererStorageRD::ShaderData *p_shader) {
+RendererRD::MaterialData *RendererSceneSkyRD::_create_sky_material_funcs(RendererRD::ShaderData *p_shader) {
// !BAS! same here, we could just make _create_sky_material_func static?
return static_cast<RendererSceneRenderRD *>(RendererSceneRenderRD::singleton)->sky._create_sky_material_func(static_cast<SkyShaderData *>(p_shader));
};
@@ -797,6 +798,7 @@ RendererSceneSkyRD::RendererSceneSkyRD() {
void RendererSceneSkyRD::init(RendererStorageRD *p_storage) {
RendererRD::TextureStorage *texture_storage = RendererRD::TextureStorage::get_singleton();
+ RendererRD::MaterialStorage *material_storage = RendererRD::MaterialStorage::get_singleton();
storage = p_storage;
{
@@ -833,8 +835,8 @@ void RendererSceneSkyRD::init(RendererStorageRD *p_storage) {
}
// register our shader funds
- storage->shader_set_data_request_function(RendererStorageRD::SHADER_TYPE_SKY, _create_sky_shader_funcs);
- storage->material_set_data_request_function(RendererStorageRD::SHADER_TYPE_SKY, _create_sky_material_funcs);
+ material_storage->shader_set_data_request_function(RendererRD::SHADER_TYPE_SKY, _create_sky_shader_funcs);
+ material_storage->material_set_data_request_function(RendererRD::SHADER_TYPE_SKY, _create_sky_material_funcs);
{
ShaderCompiler::DefaultIdentifierActions actions;
@@ -896,10 +898,10 @@ void RendererSceneSkyRD::init(RendererStorageRD *p_storage) {
{
// default material and shader for sky shader
- sky_shader.default_shader = storage->shader_allocate();
- storage->shader_initialize(sky_shader.default_shader);
+ sky_shader.default_shader = material_storage->shader_allocate();
+ material_storage->shader_initialize(sky_shader.default_shader);
- storage->shader_set_code(sky_shader.default_shader, R"(
+ material_storage->shader_set_code(sky_shader.default_shader, R"(
// Default sky shader.
shader_type sky;
@@ -909,12 +911,12 @@ void sky() {
}
)");
- sky_shader.default_material = storage->material_allocate();
- storage->material_initialize(sky_shader.default_material);
+ sky_shader.default_material = material_storage->material_allocate();
+ material_storage->material_initialize(sky_shader.default_material);
- storage->material_set_shader(sky_shader.default_material, sky_shader.default_shader);
+ material_storage->material_set_shader(sky_shader.default_material, sky_shader.default_shader);
- SkyMaterialData *md = (SkyMaterialData *)storage->material_get_data(sky_shader.default_material, RendererStorageRD::SHADER_TYPE_SKY);
+ SkyMaterialData *md = (SkyMaterialData *)material_storage->material_get_data(sky_shader.default_material, RendererRD::SHADER_TYPE_SKY);
sky_shader.default_shader_rd = sky_shader.shader.version_get_shader(md->shader_data->version, SKY_VERSION_BACKGROUND);
sky_scene_state.uniform_buffer = RD::get_singleton()->uniform_buffer_create(sizeof(SkySceneState::UBO));
@@ -947,7 +949,7 @@ void sky() {
RD::Uniform u;
u.uniform_type = RD::UNIFORM_TYPE_STORAGE_BUFFER;
u.binding = 1;
- u.append_id(storage->global_variables_get_storage_buffer());
+ u.append_id(RendererRD::MaterialStorage::get_singleton()->global_variables_get_storage_buffer());
uniforms.push_back(u);
}
@@ -986,10 +988,10 @@ void sky() {
{
// Need defaults for using fog with clear color
- sky_scene_state.fog_shader = storage->shader_allocate();
- storage->shader_initialize(sky_scene_state.fog_shader);
+ sky_scene_state.fog_shader = material_storage->shader_allocate();
+ material_storage->shader_initialize(sky_scene_state.fog_shader);
- storage->shader_set_code(sky_scene_state.fog_shader, R"(
+ material_storage->shader_set_code(sky_scene_state.fog_shader, R"(
// Default clear color sky shader.
shader_type sky;
@@ -1000,10 +1002,10 @@ void sky() {
COLOR = clear_color.rgb;
}
)");
- sky_scene_state.fog_material = storage->material_allocate();
- storage->material_initialize(sky_scene_state.fog_material);
+ sky_scene_state.fog_material = material_storage->material_allocate();
+ material_storage->material_initialize(sky_scene_state.fog_material);
- storage->material_set_shader(sky_scene_state.fog_material, sky_scene_state.fog_shader);
+ material_storage->material_set_shader(sky_scene_state.fog_material, sky_scene_state.fog_shader);
Vector<RD::Uniform> uniforms;
{
@@ -1054,7 +1056,19 @@ void RendererSceneSkyRD::set_texture_format(RD::DataFormat p_texture_format) {
}
RendererSceneSkyRD::~RendererSceneSkyRD() {
- // TODO cleanup anything created in init...
+ // cleanup anything created in init...
+ RendererRD::MaterialStorage *material_storage = RendererRD::MaterialStorage::get_singleton();
+
+ SkyMaterialData *md = (SkyMaterialData *)material_storage->material_get_data(sky_shader.default_material, RendererRD::SHADER_TYPE_SKY);
+ sky_shader.shader.version_free(md->shader_data->version);
+ RD::get_singleton()->free(sky_scene_state.directional_light_buffer);
+ RD::get_singleton()->free(sky_scene_state.uniform_buffer);
+ memdelete_arr(sky_scene_state.directional_lights);
+ memdelete_arr(sky_scene_state.last_frame_directional_lights);
+ material_storage->shader_free(sky_shader.default_shader);
+ material_storage->material_free(sky_shader.default_material);
+ material_storage->shader_free(sky_scene_state.fog_shader);
+ material_storage->material_free(sky_scene_state.fog_material);
if (RD::get_singleton()->uniform_set_is_valid(sky_scene_state.uniform_set)) {
RD::get_singleton()->free(sky_scene_state.uniform_set);
@@ -1072,6 +1086,7 @@ RendererSceneSkyRD::~RendererSceneSkyRD() {
}
void RendererSceneSkyRD::setup(RendererSceneEnvironmentRD *p_env, RID p_render_buffers, const PagedArray<RID> &p_lights, const CameraMatrix &p_projection, const Transform3D &p_transform, const Size2i p_screen_size, RendererSceneRenderRD *p_scene_render) {
+ RendererRD::MaterialStorage *material_storage = RendererRD::MaterialStorage::get_singleton();
ERR_FAIL_COND(!p_env);
SkyMaterialData *material = nullptr;
@@ -1085,7 +1100,7 @@ void RendererSceneSkyRD::setup(RendererSceneEnvironmentRD *p_env, RID p_render_b
sky_material = sky_get_material(p_env->sky);
if (sky_material.is_valid()) {
- material = (SkyMaterialData *)storage->material_get_data(sky_material, RendererStorageRD::SHADER_TYPE_SKY);
+ material = (SkyMaterialData *)material_storage->material_get_data(sky_material, RendererRD::SHADER_TYPE_SKY);
if (!material || !material->shader_data->valid) {
material = nullptr;
}
@@ -1093,7 +1108,7 @@ void RendererSceneSkyRD::setup(RendererSceneEnvironmentRD *p_env, RID p_render_b
if (!material) {
sky_material = sky_shader.default_material;
- material = (SkyMaterialData *)storage->material_get_data(sky_material, RendererStorageRD::SHADER_TYPE_SKY);
+ material = (SkyMaterialData *)material_storage->material_get_data(sky_material, RendererRD::SHADER_TYPE_SKY);
}
ERR_FAIL_COND(!material);
@@ -1282,6 +1297,7 @@ void RendererSceneSkyRD::setup(RendererSceneEnvironmentRD *p_env, RID p_render_b
}
void RendererSceneSkyRD::update(RendererSceneEnvironmentRD *p_env, const CameraMatrix &p_projection, const Transform3D &p_transform, double p_time, float p_luminance_multiplier) {
+ RendererRD::MaterialStorage *material_storage = RendererRD::MaterialStorage::get_singleton();
ERR_FAIL_COND(!p_env);
Sky *sky = get_sky(p_env->sky);
@@ -1292,7 +1308,7 @@ void RendererSceneSkyRD::update(RendererSceneEnvironmentRD *p_env, const CameraM
SkyMaterialData *material = nullptr;
if (sky_material.is_valid()) {
- material = (SkyMaterialData *)storage->material_get_data(sky_material, RendererStorageRD::SHADER_TYPE_SKY);
+ material = (SkyMaterialData *)material_storage->material_get_data(sky_material, RendererRD::SHADER_TYPE_SKY);
if (!material || !material->shader_data->valid) {
material = nullptr;
}
@@ -1300,7 +1316,7 @@ void RendererSceneSkyRD::update(RendererSceneEnvironmentRD *p_env, const CameraM
if (!material) {
sky_material = sky_shader.default_material;
- material = (SkyMaterialData *)storage->material_get_data(sky_material, RendererStorageRD::SHADER_TYPE_SKY);
+ material = (SkyMaterialData *)material_storage->material_get_data(sky_material, RendererRD::SHADER_TYPE_SKY);
}
ERR_FAIL_COND(!material);
@@ -1450,6 +1466,7 @@ void RendererSceneSkyRD::update(RendererSceneEnvironmentRD *p_env, const CameraM
}
void RendererSceneSkyRD::draw(RendererSceneEnvironmentRD *p_env, bool p_can_continue_color, bool p_can_continue_depth, RID p_fb, uint32_t p_view_count, const CameraMatrix *p_projections, const Transform3D &p_transform, double p_time) {
+ RendererRD::MaterialStorage *material_storage = RendererRD::MaterialStorage::get_singleton();
ERR_FAIL_COND(!p_env);
ERR_FAIL_COND(p_view_count == 0);
@@ -1467,7 +1484,7 @@ void RendererSceneSkyRD::draw(RendererSceneEnvironmentRD *p_env, bool p_can_cont
sky_material = sky_get_material(p_env->sky);
if (sky_material.is_valid()) {
- material = (SkyMaterialData *)storage->material_get_data(sky_material, RendererStorageRD::SHADER_TYPE_SKY);
+ material = (SkyMaterialData *)material_storage->material_get_data(sky_material, RendererRD::SHADER_TYPE_SKY);
if (!material || !material->shader_data->valid) {
material = nullptr;
}
@@ -1475,13 +1492,13 @@ void RendererSceneSkyRD::draw(RendererSceneEnvironmentRD *p_env, bool p_can_cont
if (!material) {
sky_material = sky_shader.default_material;
- material = (SkyMaterialData *)storage->material_get_data(sky_material, RendererStorageRD::SHADER_TYPE_SKY);
+ material = (SkyMaterialData *)material_storage->material_get_data(sky_material, RendererRD::SHADER_TYPE_SKY);
}
}
if (background == RS::ENV_BG_CLEAR_COLOR || background == RS::ENV_BG_COLOR) {
sky_material = sky_scene_state.fog_material;
- material = (SkyMaterialData *)storage->material_get_data(sky_material, RendererStorageRD::SHADER_TYPE_SKY);
+ material = (SkyMaterialData *)material_storage->material_get_data(sky_material, RendererRD::SHADER_TYPE_SKY);
}
ERR_FAIL_COND(!material);
@@ -1556,6 +1573,7 @@ void RendererSceneSkyRD::draw(RendererSceneEnvironmentRD *p_env, bool p_can_cont
}
void RendererSceneSkyRD::update_res_buffers(RendererSceneEnvironmentRD *p_env, uint32_t p_view_count, const CameraMatrix *p_projections, const Transform3D &p_transform, double p_time, float p_luminance_multiplier) {
+ RendererRD::MaterialStorage *material_storage = RendererRD::MaterialStorage::get_singleton();
ERR_FAIL_COND(!p_env);
ERR_FAIL_COND(p_view_count == 0);
@@ -1570,7 +1588,7 @@ void RendererSceneSkyRD::update_res_buffers(RendererSceneEnvironmentRD *p_env, u
sky_material = sky_get_material(p_env->sky);
if (sky_material.is_valid()) {
- material = (SkyMaterialData *)storage->material_get_data(sky_material, RendererStorageRD::SHADER_TYPE_SKY);
+ material = (SkyMaterialData *)material_storage->material_get_data(sky_material, RendererRD::SHADER_TYPE_SKY);
if (!material || !material->shader_data->valid) {
material = nullptr;
}
@@ -1578,7 +1596,7 @@ void RendererSceneSkyRD::update_res_buffers(RendererSceneEnvironmentRD *p_env, u
if (!material) {
sky_material = sky_shader.default_material;
- material = (SkyMaterialData *)storage->material_get_data(sky_material, RendererStorageRD::SHADER_TYPE_SKY);
+ material = (SkyMaterialData *)material_storage->material_get_data(sky_material, RendererRD::SHADER_TYPE_SKY);
}
ERR_FAIL_COND(!material);
@@ -1640,6 +1658,7 @@ void RendererSceneSkyRD::update_res_buffers(RendererSceneEnvironmentRD *p_env, u
}
void RendererSceneSkyRD::draw(RD::DrawListID p_draw_list, RendererSceneEnvironmentRD *p_env, RID p_fb, uint32_t p_view_count, const CameraMatrix *p_projections, const Transform3D &p_transform, double p_time, float p_luminance_multiplier) {
+ RendererRD::MaterialStorage *material_storage = RendererRD::MaterialStorage::get_singleton();
ERR_FAIL_COND(!p_env);
ERR_FAIL_COND(p_view_count == 0);
@@ -1657,7 +1676,7 @@ void RendererSceneSkyRD::draw(RD::DrawListID p_draw_list, RendererSceneEnvironme
sky_material = sky_get_material(p_env->sky);
if (sky_material.is_valid()) {
- material = (SkyMaterialData *)storage->material_get_data(sky_material, RendererStorageRD::SHADER_TYPE_SKY);
+ material = (SkyMaterialData *)material_storage->material_get_data(sky_material, RendererRD::SHADER_TYPE_SKY);
if (!material || !material->shader_data->valid) {
material = nullptr;
}
@@ -1665,13 +1684,13 @@ void RendererSceneSkyRD::draw(RD::DrawListID p_draw_list, RendererSceneEnvironme
if (!material) {
sky_material = sky_shader.default_material;
- material = (SkyMaterialData *)storage->material_get_data(sky_material, RendererStorageRD::SHADER_TYPE_SKY);
+ material = (SkyMaterialData *)material_storage->material_get_data(sky_material, RendererRD::SHADER_TYPE_SKY);
}
}
if (background == RS::ENV_BG_CLEAR_COLOR || background == RS::ENV_BG_COLOR) {
sky_material = sky_scene_state.fog_material;
- material = (SkyMaterialData *)storage->material_get_data(sky_material, RendererStorageRD::SHADER_TYPE_SKY);
+ material = (SkyMaterialData *)material_storage->material_get_data(sky_material, RendererRD::SHADER_TYPE_SKY);
}
ERR_FAIL_COND(!material);
diff --git a/servers/rendering/renderer_rd/renderer_scene_sky_rd.h b/servers/rendering/renderer_rd/renderer_scene_sky_rd.h
index 13d24e2508..7a3e545add 100644
--- a/servers/rendering/renderer_rd/renderer_scene_sky_rd.h
+++ b/servers/rendering/renderer_rd/renderer_scene_sky_rd.h
@@ -105,7 +105,7 @@ private:
// 128 is the max size of a push constant. We can replace "pad" but we can't add any more.
};
- struct SkyShaderData : public RendererStorageRD::ShaderData {
+ struct SkyShaderData : public RendererRD::ShaderData {
bool valid;
RID version;
@@ -129,7 +129,7 @@ private:
virtual void set_code(const String &p_Code);
virtual void set_default_texture_param(const StringName &p_name, RID p_texture, int p_index);
virtual void get_param_list(List<PropertyInfo> *p_param_list) const;
- virtual void get_instance_param_list(List<RendererStorage::InstanceShaderParam> *p_param_list) const;
+ virtual void get_instance_param_list(List<RendererMaterialStorage::InstanceShaderParam> *p_param_list) const;
virtual bool is_param_texture(const StringName &p_param) const;
virtual bool is_animated() const;
virtual bool casts_shadows() const;
@@ -227,7 +227,7 @@ public:
RID default_shader_rd;
} sky_shader;
- struct SkyMaterialData : public RendererStorageRD::MaterialData {
+ struct SkyMaterialData : public RendererRD::MaterialData {
SkyShaderData *shader_data;
RID uniform_set;
bool uniform_set_updated;
@@ -281,11 +281,11 @@ public:
mutable RID_Owner<Sky, true> sky_owner;
int roughness_layers;
- RendererStorageRD::ShaderData *_create_sky_shader_func();
- static RendererStorageRD::ShaderData *_create_sky_shader_funcs();
+ RendererRD::ShaderData *_create_sky_shader_func();
+ static RendererRD::ShaderData *_create_sky_shader_funcs();
- RendererStorageRD::MaterialData *_create_sky_material_func(SkyShaderData *p_shader);
- static RendererStorageRD::MaterialData *_create_sky_material_funcs(RendererStorageRD::ShaderData *p_shader);
+ RendererRD::MaterialData *_create_sky_material_func(SkyShaderData *p_shader);
+ static RendererRD::MaterialData *_create_sky_material_funcs(RendererRD::ShaderData *p_shader);
RendererSceneSkyRD();
void init(RendererStorageRD *p_storage);
diff --git a/servers/rendering/renderer_rd/renderer_storage_rd.cpp b/servers/rendering/renderer_rd/renderer_storage_rd.cpp
index 9076fc5bb8..c5df3a9f4e 100644
--- a/servers/rendering/renderer_rd/renderer_storage_rd.cpp
+++ b/servers/rendering/renderer_rd/renderer_storage_rd.cpp
@@ -35,8 +35,6 @@
#include "core/io/resource_loader.h"
#include "core/math/math_defs.h"
#include "renderer_compositor_rd.h"
-#include "servers/rendering/renderer_rd/storage_rd/canvas_texture_storage.h"
-#include "servers/rendering/renderer_rd/storage_rd/texture_storage.h"
#include "servers/rendering/rendering_server_globals.h"
#include "servers/rendering/shader_language.h"
@@ -136,1622 +134,6 @@ void RendererStorageRD::sampler_rd_configure_custom(float p_mipmap_bias) {
}
}
-/* SHADER API */
-
-RID RendererStorageRD::shader_allocate() {
- return shader_owner.allocate_rid();
-}
-void RendererStorageRD::shader_initialize(RID p_rid) {
- Shader shader;
- shader.data = nullptr;
- shader.type = SHADER_TYPE_MAX;
-
- shader_owner.initialize_rid(p_rid, shader);
-}
-
-void RendererStorageRD::shader_set_code(RID p_shader, const String &p_code) {
- Shader *shader = shader_owner.get_or_null(p_shader);
- ERR_FAIL_COND(!shader);
-
- shader->code = p_code;
- String mode_string = ShaderLanguage::get_shader_type(p_code);
-
- ShaderType new_type;
- if (mode_string == "canvas_item") {
- new_type = SHADER_TYPE_2D;
- } else if (mode_string == "particles") {
- new_type = SHADER_TYPE_PARTICLES;
- } else if (mode_string == "spatial") {
- new_type = SHADER_TYPE_3D;
- } else if (mode_string == "sky") {
- new_type = SHADER_TYPE_SKY;
- } else if (mode_string == "fog") {
- new_type = SHADER_TYPE_FOG;
- } else {
- new_type = SHADER_TYPE_MAX;
- }
-
- if (new_type != shader->type) {
- if (shader->data) {
- memdelete(shader->data);
- shader->data = nullptr;
- }
-
- for (Set<Material *>::Element *E = shader->owners.front(); E; E = E->next()) {
- Material *material = E->get();
- material->shader_type = new_type;
- if (material->data) {
- memdelete(material->data);
- material->data = nullptr;
- }
- }
-
- shader->type = new_type;
-
- if (new_type < SHADER_TYPE_MAX && shader_data_request_func[new_type]) {
- shader->data = shader_data_request_func[new_type]();
- } else {
- shader->type = SHADER_TYPE_MAX; //invalid
- }
-
- for (Set<Material *>::Element *E = shader->owners.front(); E; E = E->next()) {
- Material *material = E->get();
- if (shader->data) {
- material->data = material_data_request_func[new_type](shader->data);
- material->data->self = material->self;
- material->data->set_next_pass(material->next_pass);
- material->data->set_render_priority(material->priority);
- }
- material->shader_type = new_type;
- }
-
- if (shader->data) {
- for (const KeyValue<StringName, Map<int, RID>> &E : shader->default_texture_parameter) {
- for (const KeyValue<int, RID> &E2 : E.value) {
- shader->data->set_default_texture_param(E.key, E2.value, E2.key);
- }
- }
- }
- }
-
- if (shader->data) {
- shader->data->set_code(p_code);
- }
-
- for (Set<Material *>::Element *E = shader->owners.front(); E; E = E->next()) {
- Material *material = E->get();
- material->dependency.changed_notify(DEPENDENCY_CHANGED_MATERIAL);
- _material_queue_update(material, true, true);
- }
-}
-
-String RendererStorageRD::shader_get_code(RID p_shader) const {
- Shader *shader = shader_owner.get_or_null(p_shader);
- ERR_FAIL_COND_V(!shader, String());
- return shader->code;
-}
-
-void RendererStorageRD::shader_get_param_list(RID p_shader, List<PropertyInfo> *p_param_list) const {
- Shader *shader = shader_owner.get_or_null(p_shader);
- ERR_FAIL_COND(!shader);
- if (shader->data) {
- return shader->data->get_param_list(p_param_list);
- }
-}
-
-void RendererStorageRD::shader_set_default_texture_param(RID p_shader, const StringName &p_name, RID p_texture, int p_index) {
- Shader *shader = shader_owner.get_or_null(p_shader);
- ERR_FAIL_COND(!shader);
-
- if (p_texture.is_valid() && RendererRD::TextureStorage::get_singleton()->owns_texture(p_texture)) {
- if (!shader->default_texture_parameter.has(p_name)) {
- shader->default_texture_parameter[p_name] = Map<int, RID>();
- }
- shader->default_texture_parameter[p_name][p_index] = p_texture;
- } else {
- if (shader->default_texture_parameter.has(p_name) && shader->default_texture_parameter[p_name].has(p_index)) {
- shader->default_texture_parameter[p_name].erase(p_index);
-
- if (shader->default_texture_parameter[p_name].is_empty()) {
- shader->default_texture_parameter.erase(p_name);
- }
- }
- }
- if (shader->data) {
- shader->data->set_default_texture_param(p_name, p_texture, p_index);
- }
- for (Set<Material *>::Element *E = shader->owners.front(); E; E = E->next()) {
- Material *material = E->get();
- _material_queue_update(material, false, true);
- }
-}
-
-RID RendererStorageRD::shader_get_default_texture_param(RID p_shader, const StringName &p_name, int p_index) const {
- Shader *shader = shader_owner.get_or_null(p_shader);
- ERR_FAIL_COND_V(!shader, RID());
- if (shader->default_texture_parameter.has(p_name) && shader->default_texture_parameter[p_name].has(p_index)) {
- return shader->default_texture_parameter[p_name][p_index];
- }
-
- return RID();
-}
-
-Variant RendererStorageRD::shader_get_param_default(RID p_shader, const StringName &p_param) const {
- Shader *shader = shader_owner.get_or_null(p_shader);
- ERR_FAIL_COND_V(!shader, Variant());
- if (shader->data) {
- return shader->data->get_default_parameter(p_param);
- }
- return Variant();
-}
-
-void RendererStorageRD::shader_set_data_request_function(ShaderType p_shader_type, ShaderDataRequestFunction p_function) {
- ERR_FAIL_INDEX(p_shader_type, SHADER_TYPE_MAX);
- shader_data_request_func[p_shader_type] = p_function;
-}
-
-RS::ShaderNativeSourceCode RendererStorageRD::shader_get_native_source_code(RID p_shader) const {
- Shader *shader = shader_owner.get_or_null(p_shader);
- ERR_FAIL_COND_V(!shader, RS::ShaderNativeSourceCode());
- if (shader->data) {
- return shader->data->get_native_source_code();
- }
- return RS::ShaderNativeSourceCode();
-}
-
-/* COMMON MATERIAL API */
-
-RID RendererStorageRD::material_allocate() {
- return material_owner.allocate_rid();
-}
-void RendererStorageRD::material_initialize(RID p_rid) {
- material_owner.initialize_rid(p_rid);
- Material *material = material_owner.get_or_null(p_rid);
- material->self = p_rid;
-}
-
-void RendererStorageRD::_material_queue_update(Material *material, bool p_uniform, bool p_texture) {
- material->uniform_dirty = material->uniform_dirty || p_uniform;
- material->texture_dirty = material->texture_dirty || p_texture;
-
- if (material->update_element.in_list()) {
- return;
- }
-
- material_update_list.add(&material->update_element);
-}
-
-void RendererStorageRD::material_set_shader(RID p_material, RID p_shader) {
- Material *material = material_owner.get_or_null(p_material);
- ERR_FAIL_COND(!material);
-
- if (material->data) {
- memdelete(material->data);
- material->data = nullptr;
- }
-
- if (material->shader) {
- material->shader->owners.erase(material);
- material->shader = nullptr;
- material->shader_type = SHADER_TYPE_MAX;
- }
-
- if (p_shader.is_null()) {
- material->dependency.changed_notify(DEPENDENCY_CHANGED_MATERIAL);
- material->shader_id = 0;
- return;
- }
-
- Shader *shader = shader_owner.get_or_null(p_shader);
- ERR_FAIL_COND(!shader);
- material->shader = shader;
- material->shader_type = shader->type;
- material->shader_id = p_shader.get_local_index();
- shader->owners.insert(material);
-
- if (shader->type == SHADER_TYPE_MAX) {
- return;
- }
-
- ERR_FAIL_COND(shader->data == nullptr);
-
- material->data = material_data_request_func[shader->type](shader->data);
- material->data->self = p_material;
- material->data->set_next_pass(material->next_pass);
- material->data->set_render_priority(material->priority);
- //updating happens later
- material->dependency.changed_notify(DEPENDENCY_CHANGED_MATERIAL);
- _material_queue_update(material, true, true);
-}
-
-void RendererStorageRD::material_set_param(RID p_material, const StringName &p_param, const Variant &p_value) {
- Material *material = material_owner.get_or_null(p_material);
- ERR_FAIL_COND(!material);
-
- if (p_value.get_type() == Variant::NIL) {
- material->params.erase(p_param);
- } else {
- ERR_FAIL_COND(p_value.get_type() == Variant::OBJECT); //object not allowed
- material->params[p_param] = p_value;
- }
-
- if (material->shader && material->shader->data) { //shader is valid
- bool is_texture = material->shader->data->is_param_texture(p_param);
- _material_queue_update(material, !is_texture, is_texture);
- } else {
- _material_queue_update(material, true, true);
- }
-}
-
-Variant RendererStorageRD::material_get_param(RID p_material, const StringName &p_param) const {
- Material *material = material_owner.get_or_null(p_material);
- ERR_FAIL_COND_V(!material, Variant());
- if (material->params.has(p_param)) {
- return material->params[p_param];
- } else {
- return Variant();
- }
-}
-
-void RendererStorageRD::material_set_next_pass(RID p_material, RID p_next_material) {
- Material *material = material_owner.get_or_null(p_material);
- ERR_FAIL_COND(!material);
-
- if (material->next_pass == p_next_material) {
- return;
- }
-
- material->next_pass = p_next_material;
- if (material->data) {
- material->data->set_next_pass(p_next_material);
- }
-
- material->dependency.changed_notify(DEPENDENCY_CHANGED_MATERIAL);
-}
-
-void RendererStorageRD::material_set_render_priority(RID p_material, int priority) {
- Material *material = material_owner.get_or_null(p_material);
- ERR_FAIL_COND(!material);
- material->priority = priority;
- if (material->data) {
- material->data->set_render_priority(priority);
- }
-}
-
-bool RendererStorageRD::material_is_animated(RID p_material) {
- Material *material = material_owner.get_or_null(p_material);
- ERR_FAIL_COND_V(!material, false);
- if (material->shader && material->shader->data) {
- if (material->shader->data->is_animated()) {
- return true;
- } else if (material->next_pass.is_valid()) {
- return material_is_animated(material->next_pass);
- }
- }
- return false; //by default nothing is animated
-}
-
-bool RendererStorageRD::material_casts_shadows(RID p_material) {
- Material *material = material_owner.get_or_null(p_material);
- ERR_FAIL_COND_V(!material, true);
- if (material->shader && material->shader->data) {
- if (material->shader->data->casts_shadows()) {
- return true;
- } else if (material->next_pass.is_valid()) {
- return material_casts_shadows(material->next_pass);
- }
- }
- return true; //by default everything casts shadows
-}
-
-void RendererStorageRD::material_get_instance_shader_parameters(RID p_material, List<InstanceShaderParam> *r_parameters) {
- Material *material = material_owner.get_or_null(p_material);
- ERR_FAIL_COND(!material);
- if (material->shader && material->shader->data) {
- material->shader->data->get_instance_param_list(r_parameters);
-
- if (material->next_pass.is_valid()) {
- material_get_instance_shader_parameters(material->next_pass, r_parameters);
- }
- }
-}
-
-void RendererStorageRD::material_update_dependency(RID p_material, DependencyTracker *p_instance) {
- Material *material = material_owner.get_or_null(p_material);
- ERR_FAIL_COND(!material);
- p_instance->update_dependency(&material->dependency);
- if (material->next_pass.is_valid()) {
- material_update_dependency(material->next_pass, p_instance);
- }
-}
-
-void RendererStorageRD::material_set_data_request_function(ShaderType p_shader_type, MaterialDataRequestFunction p_function) {
- ERR_FAIL_INDEX(p_shader_type, SHADER_TYPE_MAX);
- material_data_request_func[p_shader_type] = p_function;
-}
-
-_FORCE_INLINE_ static void _fill_std140_variant_ubo_value(ShaderLanguage::DataType type, int p_array_size, const Variant &value, uint8_t *data, bool p_linear_color) {
- switch (type) {
- case ShaderLanguage::TYPE_BOOL: {
- uint32_t *gui = (uint32_t *)data;
-
- if (p_array_size > 0) {
- const PackedInt32Array &ba = value;
- int s = ba.size();
- const int *r = ba.ptr();
-
- for (int i = 0, j = 0; i < p_array_size; i++, j += 4) {
- if (i < s) {
- gui[j] = (r[i] != 0) ? 1 : 0;
- } else {
- gui[j] = 0;
- }
- gui[j + 1] = 0; // ignored
- gui[j + 2] = 0; // ignored
- gui[j + 3] = 0; // ignored
- }
- } else {
- bool v = value;
- gui[0] = v ? 1 : 0;
- }
- } break;
- case ShaderLanguage::TYPE_BVEC2: {
- uint32_t *gui = (uint32_t *)data;
-
- if (p_array_size > 0) {
- const PackedInt32Array &ba = value;
- int s = ba.size();
- const int *r = ba.ptr();
- int count = 2 * p_array_size;
-
- for (int i = 0, j = 0; i < count; i += 2, j += 4) {
- if (i < s) {
- gui[j] = r[i] ? 1 : 0;
- gui[j + 1] = r[i + 1] ? 1 : 0;
- } else {
- gui[j] = 0;
- gui[j + 1] = 0;
- }
- gui[j + 2] = 0; // ignored
- gui[j + 3] = 0; // ignored
- }
- } else {
- int v = value;
- gui[0] = v & 1 ? 1 : 0;
- gui[1] = v & 2 ? 1 : 0;
- }
- } break;
- case ShaderLanguage::TYPE_BVEC3: {
- uint32_t *gui = (uint32_t *)data;
-
- if (p_array_size > 0) {
- const PackedInt32Array &ba = value;
- int s = ba.size();
- const int *r = ba.ptr();
- int count = 3 * p_array_size;
-
- for (int i = 0, j = 0; i < count; i += 3, j += 4) {
- if (i < s) {
- gui[j] = r[i] ? 1 : 0;
- gui[j + 1] = r[i + 1] ? 1 : 0;
- gui[j + 2] = r[i + 2] ? 1 : 0;
- } else {
- gui[j] = 0;
- gui[j + 1] = 0;
- gui[j + 2] = 0;
- }
- gui[j + 3] = 0; // ignored
- }
- } else {
- int v = value;
- gui[0] = (v & 1) ? 1 : 0;
- gui[1] = (v & 2) ? 1 : 0;
- gui[2] = (v & 4) ? 1 : 0;
- }
- } break;
- case ShaderLanguage::TYPE_BVEC4: {
- uint32_t *gui = (uint32_t *)data;
-
- if (p_array_size > 0) {
- const PackedInt32Array &ba = value;
- int s = ba.size();
- const int *r = ba.ptr();
- int count = 4 * p_array_size;
-
- for (int i = 0; i < count; i += 4) {
- if (i < s) {
- gui[i] = r[i] ? 1 : 0;
- gui[i + 1] = r[i + 1] ? 1 : 0;
- gui[i + 2] = r[i + 2] ? 1 : 0;
- gui[i + 3] = r[i + 3] ? 1 : 0;
- } else {
- gui[i] = 0;
- gui[i + 1] = 0;
- gui[i + 2] = 0;
- gui[i + 3] = 0;
- }
- }
- } else {
- int v = value;
- gui[0] = (v & 1) ? 1 : 0;
- gui[1] = (v & 2) ? 1 : 0;
- gui[2] = (v & 4) ? 1 : 0;
- gui[3] = (v & 8) ? 1 : 0;
- }
- } break;
- case ShaderLanguage::TYPE_INT: {
- int32_t *gui = (int32_t *)data;
-
- if (p_array_size > 0) {
- Vector<int> iv = value;
- int s = iv.size();
- const int *r = iv.ptr();
-
- for (int i = 0, j = 0; i < p_array_size; i++, j += 4) {
- if (i < s) {
- gui[j] = r[i];
- } else {
- gui[j] = 0;
- }
- gui[j + 1] = 0; // ignored
- gui[j + 2] = 0; // ignored
- gui[j + 3] = 0; // ignored
- }
- } else {
- int v = value;
- gui[0] = v;
- }
- } break;
- case ShaderLanguage::TYPE_IVEC2: {
- Vector<int> iv = value;
- int s = iv.size();
- int32_t *gui = (int32_t *)data;
-
- if (p_array_size <= 0) {
- p_array_size = 1;
- }
- int count = 2 * p_array_size;
-
- const int *r = iv.ptr();
- for (int i = 0, j = 0; i < count; i += 2, j += 4) {
- if (i < s) {
- gui[j] = r[i];
- gui[j + 1] = r[i + 1];
- } else {
- gui[j] = 0;
- gui[j + 1] = 0;
- }
- gui[j + 2] = 0; // ignored
- gui[j + 3] = 0; // ignored
- }
- } break;
- case ShaderLanguage::TYPE_IVEC3: {
- Vector<int> iv = value;
- int s = iv.size();
- int32_t *gui = (int32_t *)data;
-
- if (p_array_size <= 0) {
- p_array_size = 1;
- }
- int count = 3 * p_array_size;
-
- const int *r = iv.ptr();
- for (int i = 0, j = 0; i < count; i += 3, j += 4) {
- if (i < s) {
- gui[j] = r[i];
- gui[j + 1] = r[i + 1];
- gui[j + 2] = r[i + 2];
- } else {
- gui[j] = 0;
- gui[j + 1] = 0;
- gui[j + 2] = 0;
- }
- gui[j + 3] = 0; // ignored
- }
- } break;
- case ShaderLanguage::TYPE_IVEC4: {
- Vector<int> iv = value;
- int s = iv.size();
- int32_t *gui = (int32_t *)data;
-
- if (p_array_size <= 0) {
- p_array_size = 1;
- }
- int count = 4 * p_array_size;
-
- const int *r = iv.ptr();
- for (int i = 0; i < count; i += 4) {
- if (i < s) {
- gui[i] = r[i];
- gui[i + 1] = r[i + 1];
- gui[i + 2] = r[i + 2];
- gui[i + 3] = r[i + 3];
- } else {
- gui[i] = 0;
- gui[i + 1] = 0;
- gui[i + 2] = 0;
- gui[i + 3] = 0;
- }
- }
- } break;
- case ShaderLanguage::TYPE_UINT: {
- uint32_t *gui = (uint32_t *)data;
-
- if (p_array_size > 0) {
- Vector<int> iv = value;
- int s = iv.size();
- const int *r = iv.ptr();
-
- for (int i = 0, j = 0; i < p_array_size; i++, j += 4) {
- if (i < s) {
- gui[j] = r[i];
- } else {
- gui[j] = 0;
- }
- gui[j + 1] = 0; // ignored
- gui[j + 2] = 0; // ignored
- gui[j + 3] = 0; // ignored
- }
- } else {
- int v = value;
- gui[0] = v;
- }
- } break;
- case ShaderLanguage::TYPE_UVEC2: {
- Vector<int> iv = value;
- int s = iv.size();
- uint32_t *gui = (uint32_t *)data;
-
- if (p_array_size <= 0) {
- p_array_size = 1;
- }
- int count = 2 * p_array_size;
-
- const int *r = iv.ptr();
- for (int i = 0, j = 0; i < count; i += 2, j += 4) {
- if (i < s) {
- gui[j] = r[i];
- gui[j + 1] = r[i + 1];
- } else {
- gui[j] = 0;
- gui[j + 1] = 0;
- }
- gui[j + 2] = 0; // ignored
- gui[j + 3] = 0; // ignored
- }
- } break;
- case ShaderLanguage::TYPE_UVEC3: {
- Vector<int> iv = value;
- int s = iv.size();
- uint32_t *gui = (uint32_t *)data;
-
- if (p_array_size <= 0) {
- p_array_size = 1;
- }
- int count = 3 * p_array_size;
-
- const int *r = iv.ptr();
- for (int i = 0, j = 0; i < count; i += 3, j += 4) {
- if (i < s) {
- gui[j] = r[i];
- gui[j + 1] = r[i + 1];
- gui[j + 2] = r[i + 2];
- } else {
- gui[j] = 0;
- gui[j + 1] = 0;
- gui[j + 2] = 0;
- }
- gui[j + 3] = 0; // ignored
- }
- } break;
- case ShaderLanguage::TYPE_UVEC4: {
- Vector<int> iv = value;
- int s = iv.size();
- uint32_t *gui = (uint32_t *)data;
-
- if (p_array_size <= 0) {
- p_array_size = 1;
- }
- int count = 4 * p_array_size;
-
- const int *r = iv.ptr();
- for (int i = 0; i < count; i++) {
- if (i < s) {
- gui[i] = r[i];
- gui[i + 1] = r[i + 1];
- gui[i + 2] = r[i + 2];
- gui[i + 3] = r[i + 3];
- } else {
- gui[i] = 0;
- gui[i + 1] = 0;
- gui[i + 2] = 0;
- gui[i + 3] = 0;
- }
- }
- } break;
- case ShaderLanguage::TYPE_FLOAT: {
- float *gui = (float *)data;
-
- if (p_array_size > 0) {
- const PackedFloat32Array &a = value;
- int s = a.size();
-
- for (int i = 0, j = 0; i < p_array_size; i++, j += 4) {
- if (i < s) {
- gui[j] = a[i];
- } else {
- gui[j] = 0;
- }
- gui[j + 1] = 0; // ignored
- gui[j + 2] = 0; // ignored
- gui[j + 3] = 0; // ignored
- }
- } else {
- float v = value;
- gui[0] = v;
- }
- } break;
- case ShaderLanguage::TYPE_VEC2: {
- float *gui = (float *)data;
-
- if (p_array_size > 0) {
- const PackedVector2Array &a = value;
- int s = a.size();
-
- for (int i = 0, j = 0; i < p_array_size; i++, j += 4) {
- if (i < s) {
- gui[j] = a[i].x;
- gui[j + 1] = a[i].y;
- } else {
- gui[j] = 0;
- gui[j + 1] = 0;
- }
- gui[j + 2] = 0; // ignored
- gui[j + 3] = 0; // ignored
- }
- } else {
- Vector2 v = value;
- gui[0] = v.x;
- gui[1] = v.y;
- }
- } break;
- case ShaderLanguage::TYPE_VEC3: {
- float *gui = (float *)data;
-
- if (p_array_size > 0) {
- const PackedVector3Array &a = value;
- int s = a.size();
-
- for (int i = 0, j = 0; i < p_array_size; i++, j += 4) {
- if (i < s) {
- gui[j] = a[i].x;
- gui[j + 1] = a[i].y;
- gui[j + 2] = a[i].z;
- } else {
- gui[j] = 0;
- gui[j + 1] = 0;
- gui[j + 2] = 0;
- }
- gui[j + 3] = 0; // ignored
- }
- } else {
- Vector3 v = value;
- gui[0] = v.x;
- gui[1] = v.y;
- gui[2] = v.z;
- }
- } break;
- case ShaderLanguage::TYPE_VEC4: {
- float *gui = (float *)data;
-
- if (p_array_size > 0) {
- if (value.get_type() == Variant::PACKED_COLOR_ARRAY) {
- const PackedColorArray &a = value;
- int s = a.size();
-
- for (int i = 0, j = 0; i < p_array_size; i++, j += 4) {
- if (i < s) {
- Color color = a[i];
- if (p_linear_color) {
- color = color.to_linear();
- }
- gui[j] = color.r;
- gui[j + 1] = color.g;
- gui[j + 2] = color.b;
- gui[j + 3] = color.a;
- } else {
- gui[j] = 0;
- gui[j + 1] = 0;
- gui[j + 2] = 0;
- gui[j + 3] = 0;
- }
- }
- } else {
- const PackedFloat32Array &a = value;
- int s = a.size();
- int count = 4 * p_array_size;
-
- for (int i = 0; i < count; i += 4) {
- if (i + 3 < s) {
- gui[i] = a[i];
- gui[i + 1] = a[i + 1];
- gui[i + 2] = a[i + 2];
- gui[i + 3] = a[i + 3];
- } else {
- gui[i] = 0;
- gui[i + 1] = 0;
- gui[i + 2] = 0;
- gui[i + 3] = 0;
- }
- }
- }
- } else {
- if (value.get_type() == Variant::COLOR) {
- Color v = value;
-
- if (p_linear_color) {
- v = v.to_linear();
- }
-
- gui[0] = v.r;
- gui[1] = v.g;
- gui[2] = v.b;
- gui[3] = v.a;
- } else if (value.get_type() == Variant::RECT2) {
- Rect2 v = value;
-
- gui[0] = v.position.x;
- gui[1] = v.position.y;
- gui[2] = v.size.x;
- gui[3] = v.size.y;
- } else if (value.get_type() == Variant::QUATERNION) {
- Quaternion v = value;
-
- gui[0] = v.x;
- gui[1] = v.y;
- gui[2] = v.z;
- gui[3] = v.w;
- } else {
- Plane v = value;
-
- gui[0] = v.normal.x;
- gui[1] = v.normal.y;
- gui[2] = v.normal.z;
- gui[3] = v.d;
- }
- }
- } break;
- case ShaderLanguage::TYPE_MAT2: {
- float *gui = (float *)data;
-
- if (p_array_size > 0) {
- const PackedFloat32Array &a = value;
- int s = a.size();
-
- for (int i = 0, j = 0; i < p_array_size * 4; i += 4, j += 8) {
- if (i + 3 < s) {
- gui[j] = a[i];
- gui[j + 1] = a[i + 1];
-
- gui[j + 4] = a[i + 2];
- gui[j + 5] = a[i + 3];
- } else {
- gui[j] = 1;
- gui[j + 1] = 0;
-
- gui[j + 4] = 0;
- gui[j + 5] = 1;
- }
- gui[j + 2] = 0; // ignored
- gui[j + 3] = 0; // ignored
- gui[j + 6] = 0; // ignored
- gui[j + 7] = 0; // ignored
- }
- } else {
- Transform2D v = value;
-
- //in std140 members of mat2 are treated as vec4s
- gui[0] = v.elements[0][0];
- gui[1] = v.elements[0][1];
- gui[2] = 0; // ignored
- gui[3] = 0; // ignored
-
- gui[4] = v.elements[1][0];
- gui[5] = v.elements[1][1];
- gui[6] = 0; // ignored
- gui[7] = 0; // ignored
- }
- } break;
- case ShaderLanguage::TYPE_MAT3: {
- float *gui = (float *)data;
-
- if (p_array_size > 0) {
- const PackedFloat32Array &a = value;
- int s = a.size();
-
- for (int i = 0, j = 0; i < p_array_size * 9; i += 9, j += 12) {
- if (i + 8 < s) {
- gui[j] = a[i];
- gui[j + 1] = a[i + 1];
- gui[j + 2] = a[i + 2];
-
- gui[j + 4] = a[i + 3];
- gui[j + 5] = a[i + 4];
- gui[j + 6] = a[i + 5];
-
- gui[j + 8] = a[i + 6];
- gui[j + 9] = a[i + 7];
- gui[j + 10] = a[i + 8];
- } else {
- gui[j] = 1;
- gui[j + 1] = 0;
- gui[j + 2] = 0;
-
- gui[j + 4] = 0;
- gui[j + 5] = 1;
- gui[j + 6] = 0;
-
- gui[j + 8] = 0;
- gui[j + 9] = 0;
- gui[j + 10] = 1;
- }
- gui[j + 3] = 0; // ignored
- gui[j + 7] = 0; // ignored
- gui[j + 11] = 0; // ignored
- }
- } else {
- Basis v = value;
- gui[0] = v.elements[0][0];
- gui[1] = v.elements[1][0];
- gui[2] = v.elements[2][0];
- gui[3] = 0; // ignored
-
- gui[4] = v.elements[0][1];
- gui[5] = v.elements[1][1];
- gui[6] = v.elements[2][1];
- gui[7] = 0; // ignored
-
- gui[8] = v.elements[0][2];
- gui[9] = v.elements[1][2];
- gui[10] = v.elements[2][2];
- gui[11] = 0; // ignored
- }
- } break;
- case ShaderLanguage::TYPE_MAT4: {
- float *gui = (float *)data;
-
- if (p_array_size > 0) {
- const PackedFloat32Array &a = value;
- int s = a.size();
-
- for (int i = 0; i < p_array_size * 16; i += 16) {
- if (i + 15 < s) {
- gui[i] = a[i];
- gui[i + 1] = a[i + 1];
- gui[i + 2] = a[i + 2];
- gui[i + 3] = a[i + 3];
-
- gui[i + 4] = a[i + 4];
- gui[i + 5] = a[i + 5];
- gui[i + 6] = a[i + 6];
- gui[i + 7] = a[i + 7];
-
- gui[i + 8] = a[i + 8];
- gui[i + 9] = a[i + 9];
- gui[i + 10] = a[i + 10];
- gui[i + 11] = a[i + 11];
-
- gui[i + 12] = a[i + 12];
- gui[i + 13] = a[i + 13];
- gui[i + 14] = a[i + 14];
- gui[i + 15] = a[i + 15];
- } else {
- gui[i] = 1;
- gui[i + 1] = 0;
- gui[i + 2] = 0;
- gui[i + 3] = 0;
-
- gui[i + 4] = 0;
- gui[i + 5] = 1;
- gui[i + 6] = 0;
- gui[i + 7] = 0;
-
- gui[i + 8] = 0;
- gui[i + 9] = 0;
- gui[i + 10] = 1;
- gui[i + 11] = 0;
-
- gui[i + 12] = 0;
- gui[i + 13] = 0;
- gui[i + 14] = 0;
- gui[i + 15] = 1;
- }
- }
- } else {
- Transform3D v = value;
- gui[0] = v.basis.elements[0][0];
- gui[1] = v.basis.elements[1][0];
- gui[2] = v.basis.elements[2][0];
- gui[3] = 0;
-
- gui[4] = v.basis.elements[0][1];
- gui[5] = v.basis.elements[1][1];
- gui[6] = v.basis.elements[2][1];
- gui[7] = 0;
-
- gui[8] = v.basis.elements[0][2];
- gui[9] = v.basis.elements[1][2];
- gui[10] = v.basis.elements[2][2];
- gui[11] = 0;
-
- gui[12] = v.origin.x;
- gui[13] = v.origin.y;
- gui[14] = v.origin.z;
- gui[15] = 1;
- }
- } break;
- default: {
- }
- }
-}
-
-_FORCE_INLINE_ static void _fill_std140_ubo_value(ShaderLanguage::DataType type, const Vector<ShaderLanguage::ConstantNode::Value> &value, uint8_t *data) {
- switch (type) {
- case ShaderLanguage::TYPE_BOOL: {
- uint32_t *gui = (uint32_t *)data;
- *gui = value[0].boolean ? 1 : 0;
- } break;
- case ShaderLanguage::TYPE_BVEC2: {
- uint32_t *gui = (uint32_t *)data;
- gui[0] = value[0].boolean ? 1 : 0;
- gui[1] = value[1].boolean ? 1 : 0;
-
- } break;
- case ShaderLanguage::TYPE_BVEC3: {
- uint32_t *gui = (uint32_t *)data;
- gui[0] = value[0].boolean ? 1 : 0;
- gui[1] = value[1].boolean ? 1 : 0;
- gui[2] = value[2].boolean ? 1 : 0;
-
- } break;
- case ShaderLanguage::TYPE_BVEC4: {
- uint32_t *gui = (uint32_t *)data;
- gui[0] = value[0].boolean ? 1 : 0;
- gui[1] = value[1].boolean ? 1 : 0;
- gui[2] = value[2].boolean ? 1 : 0;
- gui[3] = value[3].boolean ? 1 : 0;
-
- } break;
- case ShaderLanguage::TYPE_INT: {
- int32_t *gui = (int32_t *)data;
- gui[0] = value[0].sint;
-
- } break;
- case ShaderLanguage::TYPE_IVEC2: {
- int32_t *gui = (int32_t *)data;
-
- for (int i = 0; i < 2; i++) {
- gui[i] = value[i].sint;
- }
-
- } break;
- case ShaderLanguage::TYPE_IVEC3: {
- int32_t *gui = (int32_t *)data;
-
- for (int i = 0; i < 3; i++) {
- gui[i] = value[i].sint;
- }
-
- } break;
- case ShaderLanguage::TYPE_IVEC4: {
- int32_t *gui = (int32_t *)data;
-
- for (int i = 0; i < 4; i++) {
- gui[i] = value[i].sint;
- }
-
- } break;
- case ShaderLanguage::TYPE_UINT: {
- uint32_t *gui = (uint32_t *)data;
- gui[0] = value[0].uint;
-
- } break;
- case ShaderLanguage::TYPE_UVEC2: {
- int32_t *gui = (int32_t *)data;
-
- for (int i = 0; i < 2; i++) {
- gui[i] = value[i].uint;
- }
- } break;
- case ShaderLanguage::TYPE_UVEC3: {
- int32_t *gui = (int32_t *)data;
-
- for (int i = 0; i < 3; i++) {
- gui[i] = value[i].uint;
- }
-
- } break;
- case ShaderLanguage::TYPE_UVEC4: {
- int32_t *gui = (int32_t *)data;
-
- for (int i = 0; i < 4; i++) {
- gui[i] = value[i].uint;
- }
- } break;
- case ShaderLanguage::TYPE_FLOAT: {
- float *gui = (float *)data;
- gui[0] = value[0].real;
-
- } break;
- case ShaderLanguage::TYPE_VEC2: {
- float *gui = (float *)data;
-
- for (int i = 0; i < 2; i++) {
- gui[i] = value[i].real;
- }
-
- } break;
- case ShaderLanguage::TYPE_VEC3: {
- float *gui = (float *)data;
-
- for (int i = 0; i < 3; i++) {
- gui[i] = value[i].real;
- }
-
- } break;
- case ShaderLanguage::TYPE_VEC4: {
- float *gui = (float *)data;
-
- for (int i = 0; i < 4; i++) {
- gui[i] = value[i].real;
- }
- } break;
- case ShaderLanguage::TYPE_MAT2: {
- float *gui = (float *)data;
-
- //in std140 members of mat2 are treated as vec4s
- gui[0] = value[0].real;
- gui[1] = value[1].real;
- gui[2] = 0;
- gui[3] = 0;
- gui[4] = value[2].real;
- gui[5] = value[3].real;
- gui[6] = 0;
- gui[7] = 0;
- } break;
- case ShaderLanguage::TYPE_MAT3: {
- float *gui = (float *)data;
-
- gui[0] = value[0].real;
- gui[1] = value[1].real;
- gui[2] = value[2].real;
- gui[3] = 0;
- gui[4] = value[3].real;
- gui[5] = value[4].real;
- gui[6] = value[5].real;
- gui[7] = 0;
- gui[8] = value[6].real;
- gui[9] = value[7].real;
- gui[10] = value[8].real;
- gui[11] = 0;
- } break;
- case ShaderLanguage::TYPE_MAT4: {
- float *gui = (float *)data;
-
- for (int i = 0; i < 16; i++) {
- gui[i] = value[i].real;
- }
- } break;
- default: {
- }
- }
-}
-
-_FORCE_INLINE_ static void _fill_std140_ubo_empty(ShaderLanguage::DataType type, int p_array_size, uint8_t *data) {
- if (p_array_size <= 0) {
- p_array_size = 1;
- }
-
- switch (type) {
- case ShaderLanguage::TYPE_BOOL:
- case ShaderLanguage::TYPE_INT:
- case ShaderLanguage::TYPE_UINT:
- case ShaderLanguage::TYPE_FLOAT: {
- memset(data, 0, 4 * p_array_size);
- } break;
- case ShaderLanguage::TYPE_BVEC2:
- case ShaderLanguage::TYPE_IVEC2:
- case ShaderLanguage::TYPE_UVEC2:
- case ShaderLanguage::TYPE_VEC2: {
- memset(data, 0, 8 * p_array_size);
- } break;
- case ShaderLanguage::TYPE_BVEC3:
- case ShaderLanguage::TYPE_IVEC3:
- case ShaderLanguage::TYPE_UVEC3:
- case ShaderLanguage::TYPE_VEC3:
- case ShaderLanguage::TYPE_BVEC4:
- case ShaderLanguage::TYPE_IVEC4:
- case ShaderLanguage::TYPE_UVEC4:
- case ShaderLanguage::TYPE_VEC4: {
- memset(data, 0, 16 * p_array_size);
- } break;
- case ShaderLanguage::TYPE_MAT2: {
- memset(data, 0, 32 * p_array_size);
- } break;
- case ShaderLanguage::TYPE_MAT3: {
- memset(data, 0, 48 * p_array_size);
- } break;
- case ShaderLanguage::TYPE_MAT4: {
- memset(data, 0, 64 * p_array_size);
- } break;
-
- default: {
- }
- }
-}
-
-void RendererStorageRD::MaterialData::update_uniform_buffer(const Map<StringName, ShaderLanguage::ShaderNode::Uniform> &p_uniforms, const uint32_t *p_uniform_offsets, const Map<StringName, Variant> &p_parameters, uint8_t *p_buffer, uint32_t p_buffer_size, bool p_use_linear_color) {
- bool uses_global_buffer = false;
-
- for (const KeyValue<StringName, ShaderLanguage::ShaderNode::Uniform> &E : p_uniforms) {
- if (E.value.order < 0) {
- continue; // texture, does not go here
- }
-
- if (E.value.scope == ShaderLanguage::ShaderNode::Uniform::SCOPE_INSTANCE) {
- continue; //instance uniforms don't appear in the buffer
- }
-
- if (E.value.scope == ShaderLanguage::ShaderNode::Uniform::SCOPE_GLOBAL) {
- //this is a global variable, get the index to it
- RendererStorageRD *rs = base_singleton;
-
- GlobalVariables::Variable *gv = rs->global_variables.variables.getptr(E.key);
- uint32_t index = 0;
- if (gv) {
- index = gv->buffer_index;
- } else {
- WARN_PRINT("Shader uses global uniform '" + E.key + "', but it was removed at some point. Material will not display correctly.");
- }
-
- uint32_t offset = p_uniform_offsets[E.value.order];
- uint32_t *intptr = (uint32_t *)&p_buffer[offset];
- *intptr = index;
- uses_global_buffer = true;
- continue;
- }
-
- //regular uniform
- uint32_t offset = p_uniform_offsets[E.value.order];
-#ifdef DEBUG_ENABLED
- uint32_t size = 0U;
- // The following code enforces a 16-byte alignment of uniform arrays.
- if (E.value.array_size > 0) {
- size = ShaderLanguage::get_datatype_size(E.value.type) * E.value.array_size;
- int m = (16 * E.value.array_size);
- if ((size % m) != 0U) {
- size += m - (size % m);
- }
- } else {
- size = ShaderLanguage::get_datatype_size(E.value.type);
- }
- ERR_CONTINUE(offset + size > p_buffer_size);
-#endif
- uint8_t *data = &p_buffer[offset];
- const Map<StringName, Variant>::Element *V = p_parameters.find(E.key);
-
- if (V) {
- //user provided
- _fill_std140_variant_ubo_value(E.value.type, E.value.array_size, V->get(), data, p_use_linear_color);
-
- } else if (E.value.default_value.size()) {
- //default value
- _fill_std140_ubo_value(E.value.type, E.value.default_value, data);
- //value=E.value.default_value;
- } else {
- //zero because it was not provided
- if (E.value.type == ShaderLanguage::TYPE_VEC4 && E.value.hint == ShaderLanguage::ShaderNode::Uniform::HINT_COLOR) {
- //colors must be set as black, with alpha as 1.0
- _fill_std140_variant_ubo_value(E.value.type, E.value.array_size, Color(0, 0, 0, 1), data, p_use_linear_color);
- } else {
- //else just zero it out
- _fill_std140_ubo_empty(E.value.type, E.value.array_size, data);
- }
- }
- }
-
- if (uses_global_buffer != (global_buffer_E != nullptr)) {
- RendererStorageRD *rs = base_singleton;
- if (uses_global_buffer) {
- global_buffer_E = rs->global_variables.materials_using_buffer.push_back(self);
- } else {
- rs->global_variables.materials_using_buffer.erase(global_buffer_E);
- global_buffer_E = nullptr;
- }
- }
-}
-
-RendererStorageRD::MaterialData::~MaterialData() {
- if (global_buffer_E) {
- //unregister global buffers
- RendererStorageRD *rs = base_singleton;
- rs->global_variables.materials_using_buffer.erase(global_buffer_E);
- }
-
- if (global_texture_E) {
- //unregister global textures
- RendererStorageRD *rs = base_singleton;
-
- for (const KeyValue<StringName, uint64_t> &E : used_global_textures) {
- GlobalVariables::Variable *v = rs->global_variables.variables.getptr(E.key);
- if (v) {
- v->texture_materials.erase(self);
- }
- }
- //unregister material from those using global textures
- rs->global_variables.materials_using_texture.erase(global_texture_E);
- }
-
- if (uniform_buffer.is_valid()) {
- RD::get_singleton()->free(uniform_buffer);
- }
-}
-
-void RendererStorageRD::MaterialData::update_textures(const Map<StringName, Variant> &p_parameters, const Map<StringName, Map<int, RID>> &p_default_textures, const Vector<ShaderCompiler::GeneratedCode::Texture> &p_texture_uniforms, RID *p_textures, bool p_use_linear_color) {
- RendererRD::TextureStorage *texture_storage = RendererRD::TextureStorage::get_singleton();
-
-#ifdef TOOLS_ENABLED
- RendererRD::Texture *roughness_detect_texture = nullptr;
- RS::TextureDetectRoughnessChannel roughness_channel = RS::TEXTURE_DETECT_ROUGHNESS_R;
- RendererRD::Texture *normal_detect_texture = nullptr;
-#endif
-
- bool uses_global_textures = false;
- global_textures_pass++;
-
- for (int i = 0, k = 0; i < p_texture_uniforms.size(); i++) {
- const StringName &uniform_name = p_texture_uniforms[i].name;
- int uniform_array_size = p_texture_uniforms[i].array_size;
-
- Vector<RID> textures;
-
- if (p_texture_uniforms[i].global) {
- RendererStorageRD *rs = base_singleton;
-
- uses_global_textures = true;
-
- GlobalVariables::Variable *v = rs->global_variables.variables.getptr(uniform_name);
- if (v) {
- if (v->buffer_index >= 0) {
- WARN_PRINT("Shader uses global uniform texture '" + String(uniform_name) + "', but it changed type and is no longer a texture!.");
-
- } else {
- Map<StringName, uint64_t>::Element *E = used_global_textures.find(uniform_name);
- if (!E) {
- E = used_global_textures.insert(uniform_name, global_textures_pass);
- v->texture_materials.insert(self);
- } else {
- E->get() = global_textures_pass;
- }
-
- textures.push_back(v->override.get_type() != Variant::NIL ? v->override : v->value);
- }
-
- } else {
- WARN_PRINT("Shader uses global uniform texture '" + String(uniform_name) + "', but it was removed at some point. Material will not display correctly.");
- }
- } else {
- const Map<StringName, Variant>::Element *V = p_parameters.find(uniform_name);
- if (V) {
- if (V->get().is_array()) {
- Array array = (Array)V->get();
- if (uniform_array_size > 0) {
- for (int j = 0; j < array.size(); j++) {
- textures.push_back(array[j]);
- }
- } else {
- if (array.size() > 0) {
- textures.push_back(array[0]);
- }
- }
- } else {
- textures.push_back(V->get());
- }
- }
-
- if (uniform_array_size > 0) {
- if (textures.size() < uniform_array_size) {
- const Map<StringName, Map<int, RID>>::Element *W = p_default_textures.find(uniform_name);
- for (int j = textures.size(); j < uniform_array_size; j++) {
- if (W && W->get().has(j)) {
- textures.push_back(W->get()[j]);
- } else {
- textures.push_back(RID());
- }
- }
- }
- } else if (textures.is_empty()) {
- const Map<StringName, Map<int, RID>>::Element *W = p_default_textures.find(uniform_name);
- if (W && W->get().has(0)) {
- textures.push_back(W->get()[0]);
- }
- }
- }
-
- RID rd_texture;
-
- if (textures.is_empty()) {
- //check default usage
- switch (p_texture_uniforms[i].type) {
- case ShaderLanguage::TYPE_ISAMPLER2D:
- case ShaderLanguage::TYPE_USAMPLER2D:
- case ShaderLanguage::TYPE_SAMPLER2D: {
- switch (p_texture_uniforms[i].hint) {
- case ShaderLanguage::ShaderNode::Uniform::HINT_BLACK:
- case ShaderLanguage::ShaderNode::Uniform::HINT_BLACK_ALBEDO: {
- rd_texture = texture_storage->texture_rd_get_default(RendererRD::DEFAULT_RD_TEXTURE_BLACK);
- } break;
- case ShaderLanguage::ShaderNode::Uniform::HINT_ANISOTROPY: {
- rd_texture = texture_storage->texture_rd_get_default(RendererRD::DEFAULT_RD_TEXTURE_ANISO);
- } break;
- case ShaderLanguage::ShaderNode::Uniform::HINT_NORMAL: {
- rd_texture = texture_storage->texture_rd_get_default(RendererRD::DEFAULT_RD_TEXTURE_NORMAL);
- } break;
- case ShaderLanguage::ShaderNode::Uniform::HINT_ROUGHNESS_NORMAL: {
- rd_texture = texture_storage->texture_rd_get_default(RendererRD::DEFAULT_RD_TEXTURE_NORMAL);
- } break;
- default: {
- rd_texture = texture_storage->texture_rd_get_default(RendererRD::DEFAULT_RD_TEXTURE_WHITE);
- } break;
- }
- } break;
-
- case ShaderLanguage::TYPE_SAMPLERCUBE: {
- switch (p_texture_uniforms[i].hint) {
- case ShaderLanguage::ShaderNode::Uniform::HINT_BLACK:
- case ShaderLanguage::ShaderNode::Uniform::HINT_BLACK_ALBEDO: {
- rd_texture = texture_storage->texture_rd_get_default(RendererRD::DEFAULT_RD_TEXTURE_CUBEMAP_BLACK);
- } break;
- default: {
- rd_texture = texture_storage->texture_rd_get_default(RendererRD::DEFAULT_RD_TEXTURE_CUBEMAP_WHITE);
- } break;
- }
- } break;
- case ShaderLanguage::TYPE_SAMPLERCUBEARRAY: {
- rd_texture = texture_storage->texture_rd_get_default(RendererRD::DEFAULT_RD_TEXTURE_CUBEMAP_ARRAY_BLACK);
- } break;
-
- case ShaderLanguage::TYPE_ISAMPLER3D:
- case ShaderLanguage::TYPE_USAMPLER3D:
- case ShaderLanguage::TYPE_SAMPLER3D: {
- rd_texture = texture_storage->texture_rd_get_default(RendererRD::DEFAULT_RD_TEXTURE_3D_WHITE);
- } break;
-
- case ShaderLanguage::TYPE_ISAMPLER2DARRAY:
- case ShaderLanguage::TYPE_USAMPLER2DARRAY:
- case ShaderLanguage::TYPE_SAMPLER2DARRAY: {
- rd_texture = texture_storage->texture_rd_get_default(RendererRD::DEFAULT_RD_TEXTURE_2D_ARRAY_WHITE);
- } break;
-
- default: {
- }
- }
-#ifdef TOOLS_ENABLED
- if (roughness_detect_texture && normal_detect_texture && !normal_detect_texture->path.is_empty()) {
- roughness_detect_texture->detect_roughness_callback(roughness_detect_texture->detect_roughness_callback_ud, normal_detect_texture->path, roughness_channel);
- }
-#endif
- if (uniform_array_size > 0) {
- for (int j = 0; j < uniform_array_size; j++) {
- p_textures[k++] = rd_texture;
- }
- } else {
- p_textures[k++] = rd_texture;
- }
- } else {
- bool srgb = p_use_linear_color && (p_texture_uniforms[i].hint == ShaderLanguage::ShaderNode::Uniform::HINT_ALBEDO || p_texture_uniforms[i].hint == ShaderLanguage::ShaderNode::Uniform::HINT_BLACK_ALBEDO);
-
- for (int j = 0; j < textures.size(); j++) {
- RendererRD::Texture *tex = RendererRD::TextureStorage::get_singleton()->get_texture(textures[j]);
-
- if (tex) {
- rd_texture = (srgb && tex->rd_texture_srgb.is_valid()) ? tex->rd_texture_srgb : tex->rd_texture;
-#ifdef TOOLS_ENABLED
- if (tex->detect_3d_callback && p_use_linear_color) {
- tex->detect_3d_callback(tex->detect_3d_callback_ud);
- }
- if (tex->detect_normal_callback && (p_texture_uniforms[i].hint == ShaderLanguage::ShaderNode::Uniform::HINT_NORMAL || p_texture_uniforms[i].hint == ShaderLanguage::ShaderNode::Uniform::HINT_ROUGHNESS_NORMAL)) {
- if (p_texture_uniforms[i].hint == ShaderLanguage::ShaderNode::Uniform::HINT_ROUGHNESS_NORMAL) {
- normal_detect_texture = tex;
- }
- tex->detect_normal_callback(tex->detect_normal_callback_ud);
- }
- if (tex->detect_roughness_callback && (p_texture_uniforms[i].hint >= ShaderLanguage::ShaderNode::Uniform::HINT_ROUGHNESS_R || p_texture_uniforms[i].hint <= ShaderLanguage::ShaderNode::Uniform::HINT_ROUGHNESS_GRAY)) {
- //find the normal texture
- roughness_detect_texture = tex;
- roughness_channel = RS::TextureDetectRoughnessChannel(p_texture_uniforms[i].hint - ShaderLanguage::ShaderNode::Uniform::HINT_ROUGHNESS_R);
- }
-#endif
- }
- if (rd_texture.is_null()) {
- rd_texture = texture_storage->texture_rd_get_default(RendererRD::DEFAULT_RD_TEXTURE_WHITE);
- }
-#ifdef TOOLS_ENABLED
- if (roughness_detect_texture && normal_detect_texture && !normal_detect_texture->path.is_empty()) {
- roughness_detect_texture->detect_roughness_callback(roughness_detect_texture->detect_roughness_callback_ud, normal_detect_texture->path, roughness_channel);
- }
-#endif
- p_textures[k++] = rd_texture;
- }
- }
- }
- {
- //for textures no longer used, unregister them
- List<Map<StringName, uint64_t>::Element *> to_delete;
- RendererStorageRD *rs = base_singleton;
-
- for (Map<StringName, uint64_t>::Element *E = used_global_textures.front(); E; E = E->next()) {
- if (E->get() != global_textures_pass) {
- to_delete.push_back(E);
-
- GlobalVariables::Variable *v = rs->global_variables.variables.getptr(E->key());
- if (v) {
- v->texture_materials.erase(self);
- }
- }
- }
-
- while (to_delete.front()) {
- used_global_textures.erase(to_delete.front()->get());
- to_delete.pop_front();
- }
- //handle registering/unregistering global textures
- if (uses_global_textures != (global_texture_E != nullptr)) {
- if (uses_global_textures) {
- global_texture_E = rs->global_variables.materials_using_texture.push_back(self);
- } else {
- rs->global_variables.materials_using_texture.erase(global_texture_E);
- global_texture_E = nullptr;
- }
- }
- }
-}
-
-void RendererStorageRD::MaterialData::free_parameters_uniform_set(RID p_uniform_set) {
- if (p_uniform_set.is_valid() && RD::get_singleton()->uniform_set_is_valid(p_uniform_set)) {
- RD::get_singleton()->uniform_set_set_invalidation_callback(p_uniform_set, nullptr, nullptr);
- RD::get_singleton()->free(p_uniform_set);
- }
-}
-
-bool RendererStorageRD::MaterialData::update_parameters_uniform_set(const Map<StringName, Variant> &p_parameters, bool p_uniform_dirty, bool p_textures_dirty, const Map<StringName, ShaderLanguage::ShaderNode::Uniform> &p_uniforms, const uint32_t *p_uniform_offsets, const Vector<ShaderCompiler::GeneratedCode::Texture> &p_texture_uniforms, const Map<StringName, Map<int, RID>> &p_default_texture_params, uint32_t p_ubo_size, RID &uniform_set, RID p_shader, uint32_t p_shader_uniform_set, uint32_t p_barrier) {
- if ((uint32_t)ubo_data.size() != p_ubo_size) {
- p_uniform_dirty = true;
- if (uniform_buffer.is_valid()) {
- RD::get_singleton()->free(uniform_buffer);
- uniform_buffer = RID();
- }
-
- ubo_data.resize(p_ubo_size);
- if (ubo_data.size()) {
- uniform_buffer = RD::get_singleton()->uniform_buffer_create(ubo_data.size());
- memset(ubo_data.ptrw(), 0, ubo_data.size()); //clear
- }
-
- //clear previous uniform set
- if (uniform_set.is_valid() && RD::get_singleton()->uniform_set_is_valid(uniform_set)) {
- RD::get_singleton()->uniform_set_set_invalidation_callback(uniform_set, nullptr, nullptr);
- RD::get_singleton()->free(uniform_set);
- uniform_set = RID();
- }
- }
-
- //check whether buffer changed
- if (p_uniform_dirty && ubo_data.size()) {
- update_uniform_buffer(p_uniforms, p_uniform_offsets, p_parameters, ubo_data.ptrw(), ubo_data.size(), true);
- RD::get_singleton()->buffer_update(uniform_buffer, 0, ubo_data.size(), ubo_data.ptrw(), p_barrier);
- }
-
- uint32_t tex_uniform_count = 0U;
- for (int i = 0; i < p_texture_uniforms.size(); i++) {
- tex_uniform_count += uint32_t(p_texture_uniforms[i].array_size > 0 ? p_texture_uniforms[i].array_size : 1);
- }
-
- if ((uint32_t)texture_cache.size() != tex_uniform_count || p_textures_dirty) {
- texture_cache.resize(tex_uniform_count);
- p_textures_dirty = true;
-
- //clear previous uniform set
- if (uniform_set.is_valid() && RD::get_singleton()->uniform_set_is_valid(uniform_set)) {
- RD::get_singleton()->uniform_set_set_invalidation_callback(uniform_set, nullptr, nullptr);
- RD::get_singleton()->free(uniform_set);
- uniform_set = RID();
- }
- }
-
- if (p_textures_dirty && tex_uniform_count) {
- update_textures(p_parameters, p_default_texture_params, p_texture_uniforms, texture_cache.ptrw(), true);
- }
-
- if (p_ubo_size == 0 && p_texture_uniforms.size() == 0) {
- // This material does not require an uniform set, so don't create it.
- return false;
- }
-
- if (!p_textures_dirty && uniform_set.is_valid() && RD::get_singleton()->uniform_set_is_valid(uniform_set)) {
- //no reason to update uniform set, only UBO (or nothing) was needed to update
- return false;
- }
-
- Vector<RD::Uniform> uniforms;
-
- {
- if (p_ubo_size) {
- RD::Uniform u;
- u.uniform_type = RD::UNIFORM_TYPE_UNIFORM_BUFFER;
- u.binding = 0;
- u.append_id(uniform_buffer);
- uniforms.push_back(u);
- }
-
- const RID *textures = texture_cache.ptrw();
- for (int i = 0, k = 0; i < p_texture_uniforms.size(); i++) {
- const int array_size = p_texture_uniforms[i].array_size;
-
- RD::Uniform u;
- u.uniform_type = RD::UNIFORM_TYPE_TEXTURE;
- u.binding = 1 + k;
- if (array_size > 0) {
- for (int j = 0; j < array_size; j++) {
- u.append_id(textures[k++]);
- }
- } else {
- u.append_id(textures[k++]);
- }
- uniforms.push_back(u);
- }
- }
-
- uniform_set = RD::get_singleton()->uniform_set_create(uniforms, p_shader, p_shader_uniform_set);
-
- RD::get_singleton()->uniform_set_set_invalidation_callback(uniform_set, _material_uniform_set_erased, &self);
-
- return true;
-}
-
-void RendererStorageRD::_material_uniform_set_erased(void *p_material) {
- RID rid = *(RID *)p_material;
- Material *material = base_singleton->material_owner.get_or_null(rid);
- if (material) {
- if (material->data) {
- // Uniform set may be gone because a dependency was erased. This happens
- // if a texture is deleted, so re-create it.
- base_singleton->_material_queue_update(material, false, true);
- }
- material->dependency.changed_notify(DEPENDENCY_CHANGED_MATERIAL);
- }
-}
-
-void RendererStorageRD::_update_queued_materials() {
- while (material_update_list.first()) {
- Material *material = material_update_list.first()->self();
- bool uniforms_changed = false;
-
- if (material->data) {
- uniforms_changed = material->data->update_parameters(material->params, material->uniform_dirty, material->texture_dirty);
- }
- material->texture_dirty = false;
- material->uniform_dirty = false;
-
- material_update_list.remove(&material->update_element);
-
- if (uniforms_changed) {
- //some implementations such as 3D renderer cache the matreial uniform set, so update is required
- material->dependency.changed_notify(DEPENDENCY_CHANGED_MATERIAL);
- }
- }
-}
-
/* MESH API */
RID RendererStorageRD::mesh_allocate() {
@@ -3704,6 +2086,7 @@ void RendererStorageRD::particles_set_canvas_sdf_collision(RID p_particles, bool
void RendererStorageRD::_particles_process(Particles *p_particles, double p_delta) {
RendererRD::TextureStorage *texture_storage = RendererRD::TextureStorage::get_singleton();
+ RendererRD::MaterialStorage *material_storage = RendererRD::MaterialStorage::get_singleton();
if (p_particles->particles_material_uniform_set.is_null() || !RD::get_singleton()->uniform_set_is_valid(p_particles->particles_material_uniform_set)) {
Vector<RD::Uniform> uniforms;
@@ -4093,9 +2476,9 @@ void RendererStorageRD::_particles_process(Particles *p_particles, double p_delt
RD::get_singleton()->buffer_update(p_particles->frame_params_buffer, 0, sizeof(ParticlesFrameParams) * p_particles->trail_params.size(), p_particles->trail_params.ptr());
- ParticlesMaterialData *m = (ParticlesMaterialData *)material_get_data(p_particles->process_material, SHADER_TYPE_PARTICLES);
+ ParticlesMaterialData *m = (ParticlesMaterialData *)material_storage->material_get_data(p_particles->process_material, RendererRD::SHADER_TYPE_PARTICLES);
if (!m) {
- m = (ParticlesMaterialData *)material_get_data(particles_shader.default_material, SHADER_TYPE_PARTICLES);
+ m = (ParticlesMaterialData *)material_storage->material_get_data(particles_shader.default_material, RendererRD::SHADER_TYPE_PARTICLES);
}
ERR_FAIL_COND(!m);
@@ -4248,7 +2631,7 @@ void RendererStorageRD::particles_set_view_axis(RID p_particles, const Vector3 &
void RendererStorageRD::_particles_update_buffers(Particles *particles) {
uint32_t userdata_count = 0;
- const Material *material = material_owner.get_or_null(particles->process_material);
+ const RendererRD::Material *material = RendererRD::MaterialStorage::get_singleton()->get_material(particles->process_material);
if (material && material->shader && material->shader->data) {
const ParticlesShaderData *shader_data = static_cast<const ParticlesShaderData *>(material->shader->data);
userdata_count = shader_data->userdata_count;
@@ -4635,13 +3018,13 @@ void RendererStorageRD::ParticlesShaderData::get_param_list(List<PropertyInfo> *
}
}
-void RendererStorageRD::ParticlesShaderData::get_instance_param_list(List<RendererStorage::InstanceShaderParam> *p_param_list) const {
+void RendererStorageRD::ParticlesShaderData::get_instance_param_list(List<RendererMaterialStorage::InstanceShaderParam> *p_param_list) const {
for (const KeyValue<StringName, ShaderLanguage::ShaderNode::Uniform> &E : uniforms) {
if (E.value.scope != ShaderLanguage::ShaderNode::Uniform::SCOPE_INSTANCE) {
continue;
}
- RendererStorage::InstanceShaderParam p;
+ RendererMaterialStorage::InstanceShaderParam p;
p.info = ShaderLanguage::uniform_to_property_info(E.value);
p.info.name = E.key; //supply name
p.index = E.value.instance_index;
@@ -4690,7 +3073,7 @@ RendererStorageRD::ParticlesShaderData::~ParticlesShaderData() {
}
}
-RendererStorageRD::ShaderData *RendererStorageRD::_create_particles_shader_func() {
+RendererRD::ShaderData *RendererStorageRD::_create_particles_shader_func() {
ParticlesShaderData *shader_data = memnew(ParticlesShaderData);
return shader_data;
}
@@ -4703,7 +3086,7 @@ RendererStorageRD::ParticlesMaterialData::~ParticlesMaterialData() {
free_parameters_uniform_set(uniform_set);
}
-RendererStorageRD::MaterialData *RendererStorageRD::_create_particles_material_func(ParticlesShaderData *p_shader) {
+RendererRD::MaterialData *RendererStorageRD::_create_particles_material_func(ParticlesShaderData *p_shader) {
ParticlesMaterialData *material_data = memnew(ParticlesMaterialData);
material_data->shader_data = p_shader;
//update will happen later anyway so do nothing.
@@ -5315,6 +3698,7 @@ void RendererStorageRD::light_set_shadow(RID p_light, bool p_enabled) {
}
void RendererStorageRD::light_set_projector(RID p_light, RID p_texture) {
+ RendererRD::DecalAtlasStorage *decal_atlas_storage = RendererRD::DecalAtlasStorage::get_singleton();
Light *light = light_owner.get_or_null(p_light);
ERR_FAIL_COND(!light);
@@ -5323,14 +3707,14 @@ void RendererStorageRD::light_set_projector(RID p_light, RID p_texture) {
}
if (light->type != RS::LIGHT_DIRECTIONAL && light->projector.is_valid()) {
- texture_remove_from_decal_atlas(light->projector, light->type == RS::LIGHT_OMNI);
+ decal_atlas_storage->texture_remove_from_decal_atlas(light->projector, light->type == RS::LIGHT_OMNI);
}
light->projector = p_texture;
if (light->type != RS::LIGHT_DIRECTIONAL) {
if (light->projector.is_valid()) {
- texture_add_to_decal_atlas(light->projector, light->type == RS::LIGHT_OMNI);
+ decal_atlas_storage->texture_add_to_decal_atlas(light->projector, light->type == RS::LIGHT_OMNI);
}
light->dependency.changed_notify(DEPENDENCY_CHANGED_LIGHT_SOFT_SHADOW_AND_PROJECTOR);
}
@@ -5727,97 +4111,6 @@ float RendererStorageRD::reflection_probe_get_ambient_color_energy(RID p_probe)
return reflection_probe->ambient_color_energy;
}
-RID RendererStorageRD::decal_allocate() {
- return decal_owner.allocate_rid();
-}
-void RendererStorageRD::decal_initialize(RID p_decal) {
- decal_owner.initialize_rid(p_decal, Decal());
-}
-
-void RendererStorageRD::decal_set_extents(RID p_decal, const Vector3 &p_extents) {
- Decal *decal = decal_owner.get_or_null(p_decal);
- ERR_FAIL_COND(!decal);
- decal->extents = p_extents;
- decal->dependency.changed_notify(DEPENDENCY_CHANGED_AABB);
-}
-
-void RendererStorageRD::decal_set_texture(RID p_decal, RS::DecalTexture p_type, RID p_texture) {
- Decal *decal = decal_owner.get_or_null(p_decal);
- ERR_FAIL_COND(!decal);
- ERR_FAIL_INDEX(p_type, RS::DECAL_TEXTURE_MAX);
-
- if (decal->textures[p_type] == p_texture) {
- return;
- }
-
- ERR_FAIL_COND(p_texture.is_valid() && !RendererRD::TextureStorage::get_singleton()->owns_texture(p_texture));
-
- if (decal->textures[p_type].is_valid() && RendererRD::TextureStorage::get_singleton()->owns_texture(decal->textures[p_type])) {
- texture_remove_from_decal_atlas(decal->textures[p_type]);
- }
-
- decal->textures[p_type] = p_texture;
-
- if (decal->textures[p_type].is_valid()) {
- texture_add_to_decal_atlas(decal->textures[p_type]);
- }
-
- decal->dependency.changed_notify(DEPENDENCY_CHANGED_DECAL);
-}
-
-void RendererStorageRD::decal_set_emission_energy(RID p_decal, float p_energy) {
- Decal *decal = decal_owner.get_or_null(p_decal);
- ERR_FAIL_COND(!decal);
- decal->emission_energy = p_energy;
-}
-
-void RendererStorageRD::decal_set_albedo_mix(RID p_decal, float p_mix) {
- Decal *decal = decal_owner.get_or_null(p_decal);
- ERR_FAIL_COND(!decal);
- decal->albedo_mix = p_mix;
-}
-
-void RendererStorageRD::decal_set_modulate(RID p_decal, const Color &p_modulate) {
- Decal *decal = decal_owner.get_or_null(p_decal);
- ERR_FAIL_COND(!decal);
- decal->modulate = p_modulate;
-}
-
-void RendererStorageRD::decal_set_cull_mask(RID p_decal, uint32_t p_layers) {
- Decal *decal = decal_owner.get_or_null(p_decal);
- ERR_FAIL_COND(!decal);
- decal->cull_mask = p_layers;
- decal->dependency.changed_notify(DEPENDENCY_CHANGED_AABB);
-}
-
-void RendererStorageRD::decal_set_distance_fade(RID p_decal, bool p_enabled, float p_begin, float p_length) {
- Decal *decal = decal_owner.get_or_null(p_decal);
- ERR_FAIL_COND(!decal);
- decal->distance_fade = p_enabled;
- decal->distance_fade_begin = p_begin;
- decal->distance_fade_length = p_length;
-}
-
-void RendererStorageRD::decal_set_fade(RID p_decal, float p_above, float p_below) {
- Decal *decal = decal_owner.get_or_null(p_decal);
- ERR_FAIL_COND(!decal);
- decal->upper_fade = p_above;
- decal->lower_fade = p_below;
-}
-
-void RendererStorageRD::decal_set_normal_fade(RID p_decal, float p_fade) {
- Decal *decal = decal_owner.get_or_null(p_decal);
- ERR_FAIL_COND(!decal);
- decal->normal_fade = p_fade;
-}
-
-AABB RendererStorageRD::decal_get_aabb(RID p_decal) const {
- Decal *decal = decal_owner.get_or_null(p_decal);
- ERR_FAIL_COND_V(!decal, AABB());
-
- return AABB(-decal->extents, decal->extents * 2.0);
-}
-
RID RendererStorageRD::voxel_gi_allocate() {
return voxel_gi_owner.allocate_rid();
}
@@ -7030,8 +5323,8 @@ void RendererStorageRD::base_update_dependency(RID p_base, DependencyTracker *p_
} else if (reflection_probe_owner.owns(p_base)) {
ReflectionProbe *rp = reflection_probe_owner.get_or_null(p_base);
p_instance->update_dependency(&rp->dependency);
- } else if (decal_owner.owns(p_base)) {
- Decal *decal = decal_owner.get_or_null(p_base);
+ } else if (RendererRD::DecalAtlasStorage::get_singleton()->owns_decal(p_base)) {
+ RendererRD::Decal *decal = RendererRD::DecalAtlasStorage::get_singleton()->get_decal(p_base);
p_instance->update_dependency(&decal->dependency);
} else if (voxel_gi_owner.owns(p_base)) {
VoxelGI *gip = voxel_gi_owner.get_or_null(p_base);
@@ -7074,7 +5367,7 @@ RS::InstanceType RendererStorageRD::get_base_type(RID p_rid) const {
if (reflection_probe_owner.owns(p_rid)) {
return RS::INSTANCE_REFLECTION_PROBE;
}
- if (decal_owner.owns(p_rid)) {
+ if (RendererRD::DecalAtlasStorage::get_singleton()->owns_decal(p_rid)) {
return RS::INSTANCE_DECAL;
}
if (voxel_gi_owner.owns(p_rid)) {
@@ -7102,922 +5395,12 @@ RS::InstanceType RendererStorageRD::get_base_type(RID p_rid) const {
return RS::INSTANCE_NONE;
}
-void RendererStorageRD::decal_atlas_remove_texture(RID p_texture) {
- if (decal_atlas.textures.has(p_texture)) {
- decal_atlas.textures.erase(p_texture);
- //there is not much a point of making it dirty, just let it be.
- }
-}
-
-void RendererStorageRD::decal_atlas_mark_dirty_on_texture(RID p_texture) {
- if (decal_atlas.textures.has(p_texture)) {
- //belongs to decal atlas..
-
- decal_atlas.dirty = true; //mark it dirty since it was most likely modified
- }
-}
-
-void RendererStorageRD::texture_add_to_decal_atlas(RID p_texture, bool p_panorama_to_dp) {
- if (!decal_atlas.textures.has(p_texture)) {
- DecalAtlas::Texture t;
- t.users = 1;
- t.panorama_to_dp_users = p_panorama_to_dp ? 1 : 0;
- decal_atlas.textures[p_texture] = t;
- decal_atlas.dirty = true;
- } else {
- DecalAtlas::Texture *t = decal_atlas.textures.getptr(p_texture);
- t->users++;
- if (p_panorama_to_dp) {
- t->panorama_to_dp_users++;
- }
- }
-}
-
-void RendererStorageRD::texture_remove_from_decal_atlas(RID p_texture, bool p_panorama_to_dp) {
- DecalAtlas::Texture *t = decal_atlas.textures.getptr(p_texture);
- ERR_FAIL_COND(!t);
- t->users--;
- if (p_panorama_to_dp) {
- ERR_FAIL_COND(t->panorama_to_dp_users == 0);
- t->panorama_to_dp_users--;
- }
- if (t->users == 0) {
- decal_atlas.textures.erase(p_texture);
- //do not mark it dirty, there is no need to since it remains working
- }
-}
-
-RID RendererStorageRD::decal_atlas_get_texture() const {
- return decal_atlas.texture;
-}
-
-RID RendererStorageRD::decal_atlas_get_texture_srgb() const {
- return decal_atlas.texture_srgb;
-}
-
-void RendererStorageRD::_update_decal_atlas() {
- if (!decal_atlas.dirty) {
- return; //nothing to do
- }
-
- decal_atlas.dirty = false;
-
- if (decal_atlas.texture.is_valid()) {
- RD::get_singleton()->free(decal_atlas.texture);
- decal_atlas.texture = RID();
- decal_atlas.texture_srgb = RID();
- decal_atlas.texture_mipmaps.clear();
- }
-
- int border = 1 << decal_atlas.mipmaps;
-
- if (decal_atlas.textures.size()) {
- //generate atlas
- Vector<DecalAtlas::SortItem> itemsv;
- itemsv.resize(decal_atlas.textures.size());
- int base_size = 8;
- const RID *K = nullptr;
-
- int idx = 0;
- while ((K = decal_atlas.textures.next(K))) {
- DecalAtlas::SortItem &si = itemsv.write[idx];
-
- RendererRD::Texture *src_tex = RendererRD::TextureStorage::get_singleton()->get_texture(*K);
-
- si.size.width = (src_tex->width / border) + 1;
- si.size.height = (src_tex->height / border) + 1;
- si.pixel_size = Size2i(src_tex->width, src_tex->height);
-
- if (base_size < si.size.width) {
- base_size = nearest_power_of_2_templated(si.size.width);
- }
-
- si.texture = *K;
- idx++;
- }
-
- //sort items by size
- itemsv.sort();
-
- //attempt to create atlas
- int item_count = itemsv.size();
- DecalAtlas::SortItem *items = itemsv.ptrw();
-
- int atlas_height = 0;
-
- while (true) {
- Vector<int> v_offsetsv;
- v_offsetsv.resize(base_size);
-
- int *v_offsets = v_offsetsv.ptrw();
- memset(v_offsets, 0, sizeof(int) * base_size);
-
- int max_height = 0;
-
- for (int i = 0; i < item_count; i++) {
- //best fit
- DecalAtlas::SortItem &si = items[i];
- int best_idx = -1;
- int best_height = 0x7FFFFFFF;
- for (int j = 0; j <= base_size - si.size.width; j++) {
- int height = 0;
- for (int k = 0; k < si.size.width; k++) {
- int h = v_offsets[k + j];
- if (h > height) {
- height = h;
- if (height > best_height) {
- break; //already bad
- }
- }
- }
-
- if (height < best_height) {
- best_height = height;
- best_idx = j;
- }
- }
-
- //update
- for (int k = 0; k < si.size.width; k++) {
- v_offsets[k + best_idx] = best_height + si.size.height;
- }
-
- si.pos.x = best_idx;
- si.pos.y = best_height;
-
- if (si.pos.y + si.size.height > max_height) {
- max_height = si.pos.y + si.size.height;
- }
- }
-
- if (max_height <= base_size * 2) {
- atlas_height = max_height;
- break; //good ratio, break;
- }
-
- base_size *= 2;
- }
-
- decal_atlas.size.width = base_size * border;
- decal_atlas.size.height = nearest_power_of_2_templated(atlas_height * border);
-
- for (int i = 0; i < item_count; i++) {
- DecalAtlas::Texture *t = decal_atlas.textures.getptr(items[i].texture);
- t->uv_rect.position = items[i].pos * border + Vector2i(border / 2, border / 2);
- t->uv_rect.size = items[i].pixel_size;
-
- t->uv_rect.position /= Size2(decal_atlas.size);
- t->uv_rect.size /= Size2(decal_atlas.size);
- }
- } else {
- //use border as size, so it at least has enough mipmaps
- decal_atlas.size.width = border;
- decal_atlas.size.height = border;
- }
-
- //blit textures
-
- RD::TextureFormat tformat;
- tformat.format = RD::DATA_FORMAT_R8G8B8A8_UNORM;
- tformat.width = decal_atlas.size.width;
- tformat.height = decal_atlas.size.height;
- tformat.usage_bits = RD::TEXTURE_USAGE_SAMPLING_BIT | RD::TEXTURE_USAGE_COLOR_ATTACHMENT_BIT | RD::TEXTURE_USAGE_CAN_COPY_TO_BIT;
- tformat.texture_type = RD::TEXTURE_TYPE_2D;
- tformat.mipmaps = decal_atlas.mipmaps;
- tformat.shareable_formats.push_back(RD::DATA_FORMAT_R8G8B8A8_UNORM);
- tformat.shareable_formats.push_back(RD::DATA_FORMAT_R8G8B8A8_SRGB);
-
- decal_atlas.texture = RD::get_singleton()->texture_create(tformat, RD::TextureView());
- RD::get_singleton()->texture_clear(decal_atlas.texture, Color(0, 0, 0, 0), 0, decal_atlas.mipmaps, 0, 1);
-
- {
- //create the framebuffer
-
- Size2i s = decal_atlas.size;
-
- for (int i = 0; i < decal_atlas.mipmaps; i++) {
- DecalAtlas::MipMap mm;
- mm.texture = RD::get_singleton()->texture_create_shared_from_slice(RD::TextureView(), decal_atlas.texture, 0, i);
- Vector<RID> fb;
- fb.push_back(mm.texture);
- mm.fb = RD::get_singleton()->framebuffer_create(fb);
- mm.size = s;
- decal_atlas.texture_mipmaps.push_back(mm);
-
- s.width = MAX(1, s.width >> 1);
- s.height = MAX(1, s.height >> 1);
- }
- {
- //create the SRGB variant
- RD::TextureView rd_view;
- rd_view.format_override = RD::DATA_FORMAT_R8G8B8A8_SRGB;
- decal_atlas.texture_srgb = RD::get_singleton()->texture_create_shared(rd_view, decal_atlas.texture);
- }
- }
-
- RID prev_texture;
- for (int i = 0; i < decal_atlas.texture_mipmaps.size(); i++) {
- const DecalAtlas::MipMap &mm = decal_atlas.texture_mipmaps[i];
-
- Color clear_color(0, 0, 0, 0);
-
- if (decal_atlas.textures.size()) {
- if (i == 0) {
- Vector<Color> cc;
- cc.push_back(clear_color);
-
- RD::DrawListID draw_list = RD::get_singleton()->draw_list_begin(mm.fb, RD::INITIAL_ACTION_CLEAR, RD::FINAL_ACTION_READ, RD::INITIAL_ACTION_DROP, RD::FINAL_ACTION_DISCARD, cc);
-
- const RID *K = nullptr;
- while ((K = decal_atlas.textures.next(K))) {
- DecalAtlas::Texture *t = decal_atlas.textures.getptr(*K);
- RendererRD::Texture *src_tex = RendererRD::TextureStorage::get_singleton()->get_texture(*K);
- effects->copy_to_atlas_fb(src_tex->rd_texture, mm.fb, t->uv_rect, draw_list, false, t->panorama_to_dp_users > 0);
- }
-
- RD::get_singleton()->draw_list_end();
-
- prev_texture = mm.texture;
- } else {
- effects->copy_to_fb_rect(prev_texture, mm.fb, Rect2i(Point2i(), mm.size));
- prev_texture = mm.texture;
- }
- } else {
- RD::get_singleton()->texture_clear(mm.texture, clear_color, 0, 1, 0, 1);
- }
- }
-}
-
-int32_t RendererStorageRD::_global_variable_allocate(uint32_t p_elements) {
- int32_t idx = 0;
- while (idx + p_elements <= global_variables.buffer_size) {
- if (global_variables.buffer_usage[idx].elements == 0) {
- bool valid = true;
- for (uint32_t i = 1; i < p_elements; i++) {
- if (global_variables.buffer_usage[idx + i].elements > 0) {
- valid = false;
- idx += i + global_variables.buffer_usage[idx + i].elements;
- break;
- }
- }
-
- if (!valid) {
- continue; //if not valid, idx is in new position
- }
-
- return idx;
- } else {
- idx += global_variables.buffer_usage[idx].elements;
- }
- }
-
- return -1;
-}
-
-void RendererStorageRD::_global_variable_store_in_buffer(int32_t p_index, RS::GlobalVariableType p_type, const Variant &p_value) {
- switch (p_type) {
- case RS::GLOBAL_VAR_TYPE_BOOL: {
- GlobalVariables::Value &bv = global_variables.buffer_values[p_index];
- bool b = p_value;
- bv.x = b ? 1.0 : 0.0;
- bv.y = 0.0;
- bv.z = 0.0;
- bv.w = 0.0;
-
- } break;
- case RS::GLOBAL_VAR_TYPE_BVEC2: {
- GlobalVariables::Value &bv = global_variables.buffer_values[p_index];
- uint32_t bvec = p_value;
- bv.x = (bvec & 1) ? 1.0 : 0.0;
- bv.y = (bvec & 2) ? 1.0 : 0.0;
- bv.z = 0.0;
- bv.w = 0.0;
- } break;
- case RS::GLOBAL_VAR_TYPE_BVEC3: {
- GlobalVariables::Value &bv = global_variables.buffer_values[p_index];
- uint32_t bvec = p_value;
- bv.x = (bvec & 1) ? 1.0 : 0.0;
- bv.y = (bvec & 2) ? 1.0 : 0.0;
- bv.z = (bvec & 4) ? 1.0 : 0.0;
- bv.w = 0.0;
- } break;
- case RS::GLOBAL_VAR_TYPE_BVEC4: {
- GlobalVariables::Value &bv = global_variables.buffer_values[p_index];
- uint32_t bvec = p_value;
- bv.x = (bvec & 1) ? 1.0 : 0.0;
- bv.y = (bvec & 2) ? 1.0 : 0.0;
- bv.z = (bvec & 4) ? 1.0 : 0.0;
- bv.w = (bvec & 8) ? 1.0 : 0.0;
- } break;
- case RS::GLOBAL_VAR_TYPE_INT: {
- GlobalVariables::ValueInt &bv = *(GlobalVariables::ValueInt *)&global_variables.buffer_values[p_index];
- int32_t v = p_value;
- bv.x = v;
- bv.y = 0;
- bv.z = 0;
- bv.w = 0;
- } break;
- case RS::GLOBAL_VAR_TYPE_IVEC2: {
- GlobalVariables::ValueInt &bv = *(GlobalVariables::ValueInt *)&global_variables.buffer_values[p_index];
- Vector2i v = p_value;
- bv.x = v.x;
- bv.y = v.y;
- bv.z = 0;
- bv.w = 0;
- } break;
- case RS::GLOBAL_VAR_TYPE_IVEC3: {
- GlobalVariables::ValueInt &bv = *(GlobalVariables::ValueInt *)&global_variables.buffer_values[p_index];
- Vector3i v = p_value;
- bv.x = v.x;
- bv.y = v.y;
- bv.z = v.z;
- bv.w = 0;
- } break;
- case RS::GLOBAL_VAR_TYPE_IVEC4: {
- GlobalVariables::ValueInt &bv = *(GlobalVariables::ValueInt *)&global_variables.buffer_values[p_index];
- Vector<int32_t> v = p_value;
- bv.x = v.size() >= 1 ? v[0] : 0;
- bv.y = v.size() >= 2 ? v[1] : 0;
- bv.z = v.size() >= 3 ? v[2] : 0;
- bv.w = v.size() >= 4 ? v[3] : 0;
- } break;
- case RS::GLOBAL_VAR_TYPE_RECT2I: {
- GlobalVariables::ValueInt &bv = *(GlobalVariables::ValueInt *)&global_variables.buffer_values[p_index];
- Rect2i v = p_value;
- bv.x = v.position.x;
- bv.y = v.position.y;
- bv.z = v.size.x;
- bv.w = v.size.y;
- } break;
- case RS::GLOBAL_VAR_TYPE_UINT: {
- GlobalVariables::ValueUInt &bv = *(GlobalVariables::ValueUInt *)&global_variables.buffer_values[p_index];
- uint32_t v = p_value;
- bv.x = v;
- bv.y = 0;
- bv.z = 0;
- bv.w = 0;
- } break;
- case RS::GLOBAL_VAR_TYPE_UVEC2: {
- GlobalVariables::ValueUInt &bv = *(GlobalVariables::ValueUInt *)&global_variables.buffer_values[p_index];
- Vector2i v = p_value;
- bv.x = v.x;
- bv.y = v.y;
- bv.z = 0;
- bv.w = 0;
- } break;
- case RS::GLOBAL_VAR_TYPE_UVEC3: {
- GlobalVariables::ValueUInt &bv = *(GlobalVariables::ValueUInt *)&global_variables.buffer_values[p_index];
- Vector3i v = p_value;
- bv.x = v.x;
- bv.y = v.y;
- bv.z = v.z;
- bv.w = 0;
- } break;
- case RS::GLOBAL_VAR_TYPE_UVEC4: {
- GlobalVariables::ValueUInt &bv = *(GlobalVariables::ValueUInt *)&global_variables.buffer_values[p_index];
- Vector<int32_t> v = p_value;
- bv.x = v.size() >= 1 ? v[0] : 0;
- bv.y = v.size() >= 2 ? v[1] : 0;
- bv.z = v.size() >= 3 ? v[2] : 0;
- bv.w = v.size() >= 4 ? v[3] : 0;
- } break;
- case RS::GLOBAL_VAR_TYPE_FLOAT: {
- GlobalVariables::Value &bv = global_variables.buffer_values[p_index];
- float v = p_value;
- bv.x = v;
- bv.y = 0;
- bv.z = 0;
- bv.w = 0;
- } break;
- case RS::GLOBAL_VAR_TYPE_VEC2: {
- GlobalVariables::Value &bv = global_variables.buffer_values[p_index];
- Vector2 v = p_value;
- bv.x = v.x;
- bv.y = v.y;
- bv.z = 0;
- bv.w = 0;
- } break;
- case RS::GLOBAL_VAR_TYPE_VEC3: {
- GlobalVariables::Value &bv = global_variables.buffer_values[p_index];
- Vector3 v = p_value;
- bv.x = v.x;
- bv.y = v.y;
- bv.z = v.z;
- bv.w = 0;
- } break;
- case RS::GLOBAL_VAR_TYPE_VEC4: {
- GlobalVariables::Value &bv = global_variables.buffer_values[p_index];
- Plane v = p_value;
- bv.x = v.normal.x;
- bv.y = v.normal.y;
- bv.z = v.normal.z;
- bv.w = v.d;
- } break;
- case RS::GLOBAL_VAR_TYPE_COLOR: {
- GlobalVariables::Value &bv = global_variables.buffer_values[p_index];
- Color v = p_value;
- bv.x = v.r;
- bv.y = v.g;
- bv.z = v.b;
- bv.w = v.a;
-
- GlobalVariables::Value &bv_linear = global_variables.buffer_values[p_index + 1];
- v = v.to_linear();
- bv_linear.x = v.r;
- bv_linear.y = v.g;
- bv_linear.z = v.b;
- bv_linear.w = v.a;
-
- } break;
- case RS::GLOBAL_VAR_TYPE_RECT2: {
- GlobalVariables::Value &bv = global_variables.buffer_values[p_index];
- Rect2 v = p_value;
- bv.x = v.position.x;
- bv.y = v.position.y;
- bv.z = v.size.x;
- bv.w = v.size.y;
- } break;
- case RS::GLOBAL_VAR_TYPE_MAT2: {
- GlobalVariables::Value *bv = &global_variables.buffer_values[p_index];
- Vector<float> m2 = p_value;
- if (m2.size() < 4) {
- m2.resize(4);
- }
- bv[0].x = m2[0];
- bv[0].y = m2[1];
- bv[0].z = 0;
- bv[0].w = 0;
-
- bv[1].x = m2[2];
- bv[1].y = m2[3];
- bv[1].z = 0;
- bv[1].w = 0;
-
- } break;
- case RS::GLOBAL_VAR_TYPE_MAT3: {
- GlobalVariables::Value *bv = &global_variables.buffer_values[p_index];
- Basis v = p_value;
- bv[0].x = v.elements[0][0];
- bv[0].y = v.elements[1][0];
- bv[0].z = v.elements[2][0];
- bv[0].w = 0;
-
- bv[1].x = v.elements[0][1];
- bv[1].y = v.elements[1][1];
- bv[1].z = v.elements[2][1];
- bv[1].w = 0;
-
- bv[2].x = v.elements[0][2];
- bv[2].y = v.elements[1][2];
- bv[2].z = v.elements[2][2];
- bv[2].w = 0;
-
- } break;
- case RS::GLOBAL_VAR_TYPE_MAT4: {
- GlobalVariables::Value *bv = &global_variables.buffer_values[p_index];
-
- Vector<float> m2 = p_value;
- if (m2.size() < 16) {
- m2.resize(16);
- }
-
- bv[0].x = m2[0];
- bv[0].y = m2[1];
- bv[0].z = m2[2];
- bv[0].w = m2[3];
-
- bv[1].x = m2[4];
- bv[1].y = m2[5];
- bv[1].z = m2[6];
- bv[1].w = m2[7];
-
- bv[2].x = m2[8];
- bv[2].y = m2[9];
- bv[2].z = m2[10];
- bv[2].w = m2[11];
-
- bv[3].x = m2[12];
- bv[3].y = m2[13];
- bv[3].z = m2[14];
- bv[3].w = m2[15];
-
- } break;
- case RS::GLOBAL_VAR_TYPE_TRANSFORM_2D: {
- GlobalVariables::Value *bv = &global_variables.buffer_values[p_index];
- Transform2D v = p_value;
- bv[0].x = v.elements[0][0];
- bv[0].y = v.elements[0][1];
- bv[0].z = 0;
- bv[0].w = 0;
-
- bv[1].x = v.elements[1][0];
- bv[1].y = v.elements[1][1];
- bv[1].z = 0;
- bv[1].w = 0;
-
- bv[2].x = v.elements[2][0];
- bv[2].y = v.elements[2][1];
- bv[2].z = 1;
- bv[2].w = 0;
-
- } break;
- case RS::GLOBAL_VAR_TYPE_TRANSFORM: {
- GlobalVariables::Value *bv = &global_variables.buffer_values[p_index];
- Transform3D v = p_value;
- bv[0].x = v.basis.elements[0][0];
- bv[0].y = v.basis.elements[1][0];
- bv[0].z = v.basis.elements[2][0];
- bv[0].w = 0;
-
- bv[1].x = v.basis.elements[0][1];
- bv[1].y = v.basis.elements[1][1];
- bv[1].z = v.basis.elements[2][1];
- bv[1].w = 0;
-
- bv[2].x = v.basis.elements[0][2];
- bv[2].y = v.basis.elements[1][2];
- bv[2].z = v.basis.elements[2][2];
- bv[2].w = 0;
-
- bv[3].x = v.origin.x;
- bv[3].y = v.origin.y;
- bv[3].z = v.origin.z;
- bv[3].w = 1;
-
- } break;
- default: {
- ERR_FAIL();
- }
- }
-}
-
-void RendererStorageRD::_global_variable_mark_buffer_dirty(int32_t p_index, int32_t p_elements) {
- int32_t prev_chunk = -1;
-
- for (int32_t i = 0; i < p_elements; i++) {
- int32_t chunk = (p_index + i) / GlobalVariables::BUFFER_DIRTY_REGION_SIZE;
- if (chunk != prev_chunk) {
- if (!global_variables.buffer_dirty_regions[chunk]) {
- global_variables.buffer_dirty_regions[chunk] = true;
- global_variables.buffer_dirty_region_count++;
- }
- }
-
- prev_chunk = chunk;
- }
-}
-
-void RendererStorageRD::global_variable_add(const StringName &p_name, RS::GlobalVariableType p_type, const Variant &p_value) {
- ERR_FAIL_COND(global_variables.variables.has(p_name));
- GlobalVariables::Variable gv;
- gv.type = p_type;
- gv.value = p_value;
- gv.buffer_index = -1;
-
- if (p_type >= RS::GLOBAL_VAR_TYPE_SAMPLER2D) {
- //is texture
- global_variables.must_update_texture_materials = true; //normally there are none
- } else {
- gv.buffer_elements = 1;
- if (p_type == RS::GLOBAL_VAR_TYPE_COLOR || p_type == RS::GLOBAL_VAR_TYPE_MAT2) {
- //color needs to elements to store srgb and linear
- gv.buffer_elements = 2;
- }
- if (p_type == RS::GLOBAL_VAR_TYPE_MAT3 || p_type == RS::GLOBAL_VAR_TYPE_TRANSFORM_2D) {
- //color needs to elements to store srgb and linear
- gv.buffer_elements = 3;
- }
- if (p_type == RS::GLOBAL_VAR_TYPE_MAT4 || p_type == RS::GLOBAL_VAR_TYPE_TRANSFORM) {
- //color needs to elements to store srgb and linear
- gv.buffer_elements = 4;
- }
-
- //is vector, allocate in buffer and update index
- gv.buffer_index = _global_variable_allocate(gv.buffer_elements);
- ERR_FAIL_COND_MSG(gv.buffer_index < 0, vformat("Failed allocating global variable '%s' out of buffer memory. Consider increasing it in the Project Settings.", String(p_name)));
- global_variables.buffer_usage[gv.buffer_index].elements = gv.buffer_elements;
- _global_variable_store_in_buffer(gv.buffer_index, gv.type, gv.value);
- _global_variable_mark_buffer_dirty(gv.buffer_index, gv.buffer_elements);
-
- global_variables.must_update_buffer_materials = true; //normally there are none
- }
-
- global_variables.variables[p_name] = gv;
-}
-
-void RendererStorageRD::global_variable_remove(const StringName &p_name) {
- if (!global_variables.variables.has(p_name)) {
- return;
- }
- GlobalVariables::Variable &gv = global_variables.variables[p_name];
-
- if (gv.buffer_index >= 0) {
- global_variables.buffer_usage[gv.buffer_index].elements = 0;
- global_variables.must_update_buffer_materials = true;
- } else {
- global_variables.must_update_texture_materials = true;
- }
-
- global_variables.variables.erase(p_name);
-}
-
-Vector<StringName> RendererStorageRD::global_variable_get_list() const {
- if (!Engine::get_singleton()->is_editor_hint()) {
- ERR_FAIL_V_MSG(Vector<StringName>(), "This function should never be used outside the editor, it can severely damage performance.");
- }
-
- const StringName *K = nullptr;
- Vector<StringName> names;
- while ((K = global_variables.variables.next(K))) {
- names.push_back(*K);
- }
- names.sort_custom<StringName::AlphCompare>();
- return names;
-}
-
-void RendererStorageRD::global_variable_set(const StringName &p_name, const Variant &p_value) {
- ERR_FAIL_COND(!global_variables.variables.has(p_name));
- GlobalVariables::Variable &gv = global_variables.variables[p_name];
- gv.value = p_value;
- if (gv.override.get_type() == Variant::NIL) {
- if (gv.buffer_index >= 0) {
- //buffer
- _global_variable_store_in_buffer(gv.buffer_index, gv.type, gv.value);
- _global_variable_mark_buffer_dirty(gv.buffer_index, gv.buffer_elements);
- } else {
- //texture
- for (Set<RID>::Element *E = gv.texture_materials.front(); E; E = E->next()) {
- Material *material = material_owner.get_or_null(E->get());
- ERR_CONTINUE(!material);
- _material_queue_update(material, false, true);
- }
- }
- }
-}
-
-void RendererStorageRD::global_variable_set_override(const StringName &p_name, const Variant &p_value) {
- if (!global_variables.variables.has(p_name)) {
- return; //variable may not exist
- }
-
- ERR_FAIL_COND(p_value.get_type() == Variant::OBJECT);
-
- GlobalVariables::Variable &gv = global_variables.variables[p_name];
-
- gv.override = p_value;
-
- if (gv.buffer_index >= 0) {
- //buffer
- if (gv.override.get_type() == Variant::NIL) {
- _global_variable_store_in_buffer(gv.buffer_index, gv.type, gv.value);
- } else {
- _global_variable_store_in_buffer(gv.buffer_index, gv.type, gv.override);
- }
-
- _global_variable_mark_buffer_dirty(gv.buffer_index, gv.buffer_elements);
- } else {
- //texture
- for (Set<RID>::Element *E = gv.texture_materials.front(); E; E = E->next()) {
- Material *material = material_owner.get_or_null(E->get());
- ERR_CONTINUE(!material);
- _material_queue_update(material, false, true);
- }
- }
-}
-
-Variant RendererStorageRD::global_variable_get(const StringName &p_name) const {
- if (!Engine::get_singleton()->is_editor_hint()) {
- ERR_FAIL_V_MSG(Variant(), "This function should never be used outside the editor, it can severely damage performance.");
- }
-
- if (!global_variables.variables.has(p_name)) {
- return Variant();
- }
-
- return global_variables.variables[p_name].value;
-}
-
-RS::GlobalVariableType RendererStorageRD::global_variable_get_type_internal(const StringName &p_name) const {
- if (!global_variables.variables.has(p_name)) {
- return RS::GLOBAL_VAR_TYPE_MAX;
- }
-
- return global_variables.variables[p_name].type;
-}
-
-RS::GlobalVariableType RendererStorageRD::global_variable_get_type(const StringName &p_name) const {
- if (!Engine::get_singleton()->is_editor_hint()) {
- ERR_FAIL_V_MSG(RS::GLOBAL_VAR_TYPE_MAX, "This function should never be used outside the editor, it can severely damage performance.");
- }
-
- return global_variable_get_type_internal(p_name);
-}
-
-void RendererStorageRD::global_variables_load_settings(bool p_load_textures) {
- List<PropertyInfo> settings;
- ProjectSettings::get_singleton()->get_property_list(&settings);
-
- for (const PropertyInfo &E : settings) {
- if (E.name.begins_with("shader_globals/")) {
- StringName name = E.name.get_slice("/", 1);
- Dictionary d = ProjectSettings::get_singleton()->get(E.name);
-
- ERR_CONTINUE(!d.has("type"));
- ERR_CONTINUE(!d.has("value"));
-
- String type = d["type"];
-
- static const char *global_var_type_names[RS::GLOBAL_VAR_TYPE_MAX] = {
- "bool",
- "bvec2",
- "bvec3",
- "bvec4",
- "int",
- "ivec2",
- "ivec3",
- "ivec4",
- "rect2i",
- "uint",
- "uvec2",
- "uvec3",
- "uvec4",
- "float",
- "vec2",
- "vec3",
- "vec4",
- "color",
- "rect2",
- "mat2",
- "mat3",
- "mat4",
- "transform_2d",
- "transform",
- "sampler2D",
- "sampler2DArray",
- "sampler3D",
- "samplerCube",
- };
-
- RS::GlobalVariableType gvtype = RS::GLOBAL_VAR_TYPE_MAX;
-
- for (int i = 0; i < RS::GLOBAL_VAR_TYPE_MAX; i++) {
- if (global_var_type_names[i] == type) {
- gvtype = RS::GlobalVariableType(i);
- break;
- }
- }
-
- ERR_CONTINUE(gvtype == RS::GLOBAL_VAR_TYPE_MAX); //type invalid
-
- Variant value = d["value"];
-
- if (gvtype >= RS::GLOBAL_VAR_TYPE_SAMPLER2D) {
- //textire
- if (!p_load_textures) {
- value = RID();
- continue;
- }
-
- String path = value;
- RES resource = ResourceLoader::load(path);
- ERR_CONTINUE(resource.is_null());
- value = resource;
- }
-
- if (global_variables.variables.has(name)) {
- //has it, update it
- global_variable_set(name, value);
- } else {
- global_variable_add(name, gvtype, value);
- }
- }
- }
-}
-
-void RendererStorageRD::global_variables_clear() {
- global_variables.variables.clear(); //not right but for now enough
-}
-
-RID RendererStorageRD::global_variables_get_storage_buffer() const {
- return global_variables.buffer;
-}
-
-int32_t RendererStorageRD::global_variables_instance_allocate(RID p_instance) {
- ERR_FAIL_COND_V(global_variables.instance_buffer_pos.has(p_instance), -1);
- int32_t pos = _global_variable_allocate(ShaderLanguage::MAX_INSTANCE_UNIFORM_INDICES);
- global_variables.instance_buffer_pos[p_instance] = pos; //save anyway
- ERR_FAIL_COND_V_MSG(pos < 0, -1, "Too many instances using shader instance variables. Increase buffer size in Project Settings.");
- global_variables.buffer_usage[pos].elements = ShaderLanguage::MAX_INSTANCE_UNIFORM_INDICES;
- return pos;
-}
-
-void RendererStorageRD::global_variables_instance_free(RID p_instance) {
- ERR_FAIL_COND(!global_variables.instance_buffer_pos.has(p_instance));
- int32_t pos = global_variables.instance_buffer_pos[p_instance];
- if (pos >= 0) {
- global_variables.buffer_usage[pos].elements = 0;
- }
- global_variables.instance_buffer_pos.erase(p_instance);
-}
-
-void RendererStorageRD::global_variables_instance_update(RID p_instance, int p_index, const Variant &p_value) {
- if (!global_variables.instance_buffer_pos.has(p_instance)) {
- return; //just not allocated, ignore
- }
- int32_t pos = global_variables.instance_buffer_pos[p_instance];
-
- if (pos < 0) {
- return; //again, not allocated, ignore
- }
- ERR_FAIL_INDEX(p_index, ShaderLanguage::MAX_INSTANCE_UNIFORM_INDICES);
- ERR_FAIL_COND_MSG(p_value.get_type() > Variant::COLOR, "Unsupported variant type for instance parameter: " + Variant::get_type_name(p_value.get_type())); //anything greater not supported
-
- ShaderLanguage::DataType datatype_from_value[Variant::COLOR + 1] = {
- ShaderLanguage::TYPE_MAX, //nil
- ShaderLanguage::TYPE_BOOL, //bool
- ShaderLanguage::TYPE_INT, //int
- ShaderLanguage::TYPE_FLOAT, //float
- ShaderLanguage::TYPE_MAX, //string
- ShaderLanguage::TYPE_VEC2, //vec2
- ShaderLanguage::TYPE_IVEC2, //vec2i
- ShaderLanguage::TYPE_VEC4, //rect2
- ShaderLanguage::TYPE_IVEC4, //rect2i
- ShaderLanguage::TYPE_VEC3, // vec3
- ShaderLanguage::TYPE_IVEC3, //vec3i
- ShaderLanguage::TYPE_MAX, //xform2d not supported here
- ShaderLanguage::TYPE_VEC4, //plane
- ShaderLanguage::TYPE_VEC4, //quat
- ShaderLanguage::TYPE_MAX, //aabb not supported here
- ShaderLanguage::TYPE_MAX, //basis not supported here
- ShaderLanguage::TYPE_MAX, //xform not supported here
- ShaderLanguage::TYPE_VEC4 //color
- };
-
- ShaderLanguage::DataType datatype = datatype_from_value[p_value.get_type()];
-
- ERR_FAIL_COND_MSG(datatype == ShaderLanguage::TYPE_MAX, "Unsupported variant type for instance parameter: " + Variant::get_type_name(p_value.get_type())); //anything greater not supported
-
- pos += p_index;
-
- _fill_std140_variant_ubo_value(datatype, 0, p_value, (uint8_t *)&global_variables.buffer_values[pos], true); //instances always use linear color in this renderer
- _global_variable_mark_buffer_dirty(pos, 1);
-}
-
-void RendererStorageRD::_update_global_variables() {
- if (global_variables.buffer_dirty_region_count > 0) {
- uint32_t total_regions = global_variables.buffer_size / GlobalVariables::BUFFER_DIRTY_REGION_SIZE;
- if (total_regions / global_variables.buffer_dirty_region_count <= 4) {
- // 25% of regions dirty, just update all buffer
- RD::get_singleton()->buffer_update(global_variables.buffer, 0, sizeof(GlobalVariables::Value) * global_variables.buffer_size, global_variables.buffer_values);
- memset(global_variables.buffer_dirty_regions, 0, sizeof(bool) * total_regions);
- } else {
- uint32_t region_byte_size = sizeof(GlobalVariables::Value) * GlobalVariables::BUFFER_DIRTY_REGION_SIZE;
-
- for (uint32_t i = 0; i < total_regions; i++) {
- if (global_variables.buffer_dirty_regions[i]) {
- RD::get_singleton()->buffer_update(global_variables.buffer, i * region_byte_size, region_byte_size, &global_variables.buffer_values[i * GlobalVariables::BUFFER_DIRTY_REGION_SIZE]);
-
- global_variables.buffer_dirty_regions[i] = false;
- }
- }
- }
-
- global_variables.buffer_dirty_region_count = 0;
- }
-
- if (global_variables.must_update_buffer_materials) {
- // only happens in the case of a buffer variable added or removed,
- // so not often.
- for (const RID &E : global_variables.materials_using_buffer) {
- Material *material = material_owner.get_or_null(E);
- ERR_CONTINUE(!material); //wtf
-
- _material_queue_update(material, true, false);
- }
-
- global_variables.must_update_buffer_materials = false;
- }
-
- if (global_variables.must_update_texture_materials) {
- // only happens in the case of a buffer variable added or removed,
- // so not often.
- for (const RID &E : global_variables.materials_using_texture) {
- Material *material = material_owner.get_or_null(E);
- ERR_CONTINUE(!material); //wtf
-
- _material_queue_update(material, false, true);
- }
-
- global_variables.must_update_texture_materials = false;
- }
-}
-
void RendererStorageRD::update_dirty_resources() {
- _update_global_variables(); //must do before materials, so it can queue them for update
- _update_queued_materials();
+ RendererRD::MaterialStorage::get_singleton()->_update_global_variables(); //must do before materials, so it can queue them for update
+ RendererRD::MaterialStorage::get_singleton()->_update_queued_materials();
_update_dirty_multimeshes();
_update_dirty_skeletons();
- _update_decal_atlas();
+ RendererRD::DecalAtlasStorage::get_singleton()->update_decal_atlas();
}
bool RendererStorageRD::has_os_feature(const String &p_feature) const {
@@ -8045,24 +5428,10 @@ bool RendererStorageRD::free(RID p_rid) {
RendererRD::TextureStorage::get_singleton()->texture_free(p_rid);
} else if (RendererRD::CanvasTextureStorage::get_singleton()->owns_canvas_texture(p_rid)) {
RendererRD::CanvasTextureStorage::get_singleton()->canvas_texture_free(p_rid);
- } else if (shader_owner.owns(p_rid)) {
- Shader *shader = shader_owner.get_or_null(p_rid);
- //make material unreference this
- while (shader->owners.size()) {
- material_set_shader(shader->owners.front()->get()->self, RID());
- }
- //clear data if exists
- if (shader->data) {
- memdelete(shader->data);
- }
- shader_owner.free(p_rid);
-
- } else if (material_owner.owns(p_rid)) {
- Material *material = material_owner.get_or_null(p_rid);
- material_set_shader(p_rid, RID()); //clean up shader
- material->dependency.deleted_notify(p_rid);
-
- material_owner.free(p_rid);
+ } else if (RendererRD::MaterialStorage::get_singleton()->owns_shader(p_rid)) {
+ RendererRD::MaterialStorage::get_singleton()->shader_free(p_rid);
+ } else if (RendererRD::MaterialStorage::get_singleton()->owns_material(p_rid)) {
+ RendererRD::MaterialStorage::get_singleton()->material_free(p_rid);
} else if (mesh_owner.owns(p_rid)) {
mesh_clear(p_rid);
mesh_set_shadow_mesh(p_rid, RID());
@@ -8103,15 +5472,8 @@ bool RendererStorageRD::free(RID p_rid) {
ReflectionProbe *reflection_probe = reflection_probe_owner.get_or_null(p_rid);
reflection_probe->dependency.deleted_notify(p_rid);
reflection_probe_owner.free(p_rid);
- } else if (decal_owner.owns(p_rid)) {
- Decal *decal = decal_owner.get_or_null(p_rid);
- for (int i = 0; i < RS::DECAL_TEXTURE_MAX; i++) {
- if (decal->textures[i].is_valid() && RendererRD::TextureStorage::get_singleton()->owns_texture(decal->textures[i])) {
- texture_remove_from_decal_atlas(decal->textures[i]);
- }
- }
- decal->dependency.deleted_notify(p_rid);
- decal_owner.free(p_rid);
+ } else if (RendererRD::DecalAtlasStorage::get_singleton()->owns_decal(p_rid)) {
+ RendererRD::DecalAtlasStorage::get_singleton()->decal_free(p_rid);
} else if (voxel_gi_owner.owns(p_rid)) {
voxel_gi_allocate_data(p_rid, Transform3D(), AABB(), Vector3i(), Vector<uint8_t>(), Vector<uint8_t>(), Vector<uint8_t>(), Vector<int>()); //deallocate
VoxelGI *voxel_gi = voxel_gi_owner.get_or_null(p_rid);
@@ -8244,47 +5606,7 @@ RendererStorageRD::RendererStorageRD() {
base_singleton = this;
RendererRD::TextureStorage *texture_storage = RendererRD::TextureStorage::get_singleton();
-
- for (int i = 0; i < SHADER_TYPE_MAX; i++) {
- shader_data_request_func[i] = nullptr;
- }
-
- static_assert(sizeof(GlobalVariables::Value) == 16);
-
- global_variables.buffer_size = MAX(4096, (int)GLOBAL_GET("rendering/limits/global_shader_variables/buffer_size"));
- global_variables.buffer_values = memnew_arr(GlobalVariables::Value, global_variables.buffer_size);
- memset(global_variables.buffer_values, 0, sizeof(GlobalVariables::Value) * global_variables.buffer_size);
- global_variables.buffer_usage = memnew_arr(GlobalVariables::ValueUsage, global_variables.buffer_size);
- global_variables.buffer_dirty_regions = memnew_arr(bool, global_variables.buffer_size / GlobalVariables::BUFFER_DIRTY_REGION_SIZE);
- memset(global_variables.buffer_dirty_regions, 0, sizeof(bool) * global_variables.buffer_size / GlobalVariables::BUFFER_DIRTY_REGION_SIZE);
- global_variables.buffer = RD::get_singleton()->storage_buffer_create(sizeof(GlobalVariables::Value) * global_variables.buffer_size);
-
- { // default atlas texture
- RD::TextureFormat tformat;
- tformat.format = RD::DATA_FORMAT_R8G8B8A8_UNORM;
- tformat.width = 4;
- tformat.height = 4;
- tformat.usage_bits = RD::TEXTURE_USAGE_SAMPLING_BIT | RD::TEXTURE_USAGE_CAN_UPDATE_BIT;
- tformat.texture_type = RD::TEXTURE_TYPE_2D;
-
- Vector<uint8_t> pv;
- pv.resize(16 * 4);
-
- for (int i = 0; i < 16; i++) {
- pv.set(i * 4 + 0, 0);
- pv.set(i * 4 + 1, 0);
- pv.set(i * 4 + 2, 0);
- pv.set(i * 4 + 3, 255);
- }
-
- {
- //take the chance and initialize decal atlas to something
- Vector<Vector<uint8_t>> vpv;
- vpv.push_back(pv);
- decal_atlas.texture = RD::get_singleton()->texture_create(tformat, RD::TextureView(), vpv);
- decal_atlas.texture_srgb = decal_atlas.texture;
- }
- }
+ RendererRD::MaterialStorage *material_storage = RendererRD::MaterialStorage::get_singleton();
//default samplers
for (int i = 1; i < RS::CANVAS_ITEM_TEXTURE_FILTER_MAX; i++) {
@@ -8513,8 +5835,8 @@ RendererStorageRD::RendererStorageRD() {
particles_modes.push_back("");
particles_shader.shader.initialize(particles_modes, String());
}
- shader_set_data_request_function(RendererStorageRD::SHADER_TYPE_PARTICLES, _create_particles_shader_funcs);
- material_set_data_request_function(RendererStorageRD::SHADER_TYPE_PARTICLES, _create_particles_material_funcs);
+ RendererRD::MaterialStorage::get_singleton()->shader_set_data_request_function(RendererRD::SHADER_TYPE_PARTICLES, _create_particles_shader_funcs);
+ RendererRD::MaterialStorage::get_singleton()->material_set_data_request_function(RendererRD::SHADER_TYPE_PARTICLES, _create_particles_material_funcs);
{
ShaderCompiler::DefaultIdentifierActions actions;
@@ -8578,9 +5900,9 @@ RendererStorageRD::RendererStorageRD() {
{
// default material and shader for particles shader
- particles_shader.default_shader = shader_allocate();
- shader_initialize(particles_shader.default_shader);
- shader_set_code(particles_shader.default_shader, R"(
+ particles_shader.default_shader = material_storage->shader_allocate();
+ material_storage->shader_initialize(particles_shader.default_shader);
+ material_storage->shader_set_code(particles_shader.default_shader, R"(
// Default particles shader.
shader_type particles;
@@ -8589,11 +5911,11 @@ void process() {
COLOR = vec4(1.0);
}
)");
- particles_shader.default_material = material_allocate();
- material_initialize(particles_shader.default_material);
- material_set_shader(particles_shader.default_material, particles_shader.default_shader);
+ particles_shader.default_material = material_storage->material_allocate();
+ material_storage->material_initialize(particles_shader.default_material);
+ material_storage->material_set_shader(particles_shader.default_material, particles_shader.default_shader);
- ParticlesMaterialData *md = (ParticlesMaterialData *)material_get_data(particles_shader.default_material, RendererStorageRD::SHADER_TYPE_PARTICLES);
+ ParticlesMaterialData *md = (ParticlesMaterialData *)material_storage->material_get_data(particles_shader.default_material, RendererRD::SHADER_TYPE_PARTICLES);
particles_shader.default_shader_rd = particles_shader.shader.version_get_shader(md->shader_data->version, 0);
Vector<RD::Uniform> uniforms;
@@ -8623,7 +5945,7 @@ void process() {
RD::Uniform u;
u.uniform_type = RD::UNIFORM_TYPE_STORAGE_BUFFER;
u.binding = 2;
- u.append_id(global_variables_get_storage_buffer());
+ u.append_id(material_storage->global_variables_get_storage_buffer());
uniforms.push_back(u);
}
@@ -8701,10 +6023,7 @@ void process() {
}
RendererStorageRD::~RendererStorageRD() {
- memdelete_arr(global_variables.buffer_values);
- memdelete_arr(global_variables.buffer_usage);
- memdelete_arr(global_variables.buffer_dirty_regions);
- RD::get_singleton()->free(global_variables.buffer);
+ RendererRD::MaterialStorage *material_storage = RendererRD::MaterialStorage::get_singleton();
//def samplers
for (int i = 1; i < RS::CANVAS_ITEM_TEXTURE_FILTER_MAX; i++) {
@@ -8732,19 +6051,11 @@ RendererStorageRD::~RendererStorageRD() {
skeleton_shader.shader.version_free(skeleton_shader.version);
- RenderingServer::get_singleton()->free(particles_shader.default_material);
- RenderingServer::get_singleton()->free(particles_shader.default_shader);
+ material_storage->material_free(particles_shader.default_material);
+ material_storage->shader_free(particles_shader.default_shader);
RD::get_singleton()->free(default_rd_storage_buffer);
- if (decal_atlas.textures.size()) {
- ERR_PRINT("Decal Atlas: " + itos(decal_atlas.textures.size()) + " textures were not removed from the atlas.");
- }
-
- if (decal_atlas.texture.is_valid()) {
- RD::get_singleton()->free(decal_atlas.texture);
- }
-
if (effects) {
memdelete(effects);
effects = nullptr;
diff --git a/servers/rendering/renderer_rd/renderer_storage_rd.h b/servers/rendering/renderer_rd/renderer_storage_rd.h
index 872dd41fe5..42d4141f9c 100644
--- a/servers/rendering/renderer_rd/renderer_storage_rd.h
+++ b/servers/rendering/renderer_rd/renderer_storage_rd.h
@@ -42,6 +42,8 @@
#include "servers/rendering/renderer_rd/shaders/skeleton.glsl.gen.h"
#include "servers/rendering/renderer_rd/shaders/voxel_gi_sdf.glsl.gen.h"
#include "servers/rendering/renderer_rd/storage_rd/canvas_texture_storage.h"
+#include "servers/rendering/renderer_rd/storage_rd/decal_atlas_storage.h"
+#include "servers/rendering/renderer_rd/storage_rd/material_storage.h"
#include "servers/rendering/renderer_rd/storage_rd/texture_storage.h"
#include "servers/rendering/renderer_scene_render.h"
#include "servers/rendering/rendering_device.h"
@@ -127,61 +129,6 @@ public:
}
}
- enum ShaderType {
- SHADER_TYPE_2D,
- SHADER_TYPE_3D,
- SHADER_TYPE_PARTICLES,
- SHADER_TYPE_SKY,
- SHADER_TYPE_FOG,
- SHADER_TYPE_MAX
- };
-
- struct ShaderData {
- virtual void set_code(const String &p_Code) = 0;
- virtual void set_default_texture_param(const StringName &p_name, RID p_texture, int p_index) = 0;
- virtual void get_param_list(List<PropertyInfo> *p_param_list) const = 0;
-
- virtual void get_instance_param_list(List<InstanceShaderParam> *p_param_list) const = 0;
- virtual bool is_param_texture(const StringName &p_param) const = 0;
- virtual bool is_animated() const = 0;
- virtual bool casts_shadows() const = 0;
- virtual Variant get_default_parameter(const StringName &p_parameter) const = 0;
- virtual RS::ShaderNativeSourceCode get_native_source_code() const { return RS::ShaderNativeSourceCode(); }
-
- virtual ~ShaderData() {}
- };
-
- typedef ShaderData *(*ShaderDataRequestFunction)();
-
- struct MaterialData {
- void update_uniform_buffer(const Map<StringName, ShaderLanguage::ShaderNode::Uniform> &p_uniforms, const uint32_t *p_uniform_offsets, const Map<StringName, Variant> &p_parameters, uint8_t *p_buffer, uint32_t p_buffer_size, bool p_use_linear_color);
- void update_textures(const Map<StringName, Variant> &p_parameters, const Map<StringName, Map<int, RID>> &p_default_textures, const Vector<ShaderCompiler::GeneratedCode::Texture> &p_texture_uniforms, RID *p_textures, bool p_use_linear_color);
-
- virtual void set_render_priority(int p_priority) = 0;
- virtual void set_next_pass(RID p_pass) = 0;
- virtual bool update_parameters(const Map<StringName, Variant> &p_parameters, bool p_uniform_dirty, bool p_textures_dirty) = 0;
- virtual ~MaterialData();
-
- //to be used internally by update_parameters, in the most common configuration of material parameters
- bool update_parameters_uniform_set(const Map<StringName, Variant> &p_parameters, bool p_uniform_dirty, bool p_textures_dirty, const Map<StringName, ShaderLanguage::ShaderNode::Uniform> &p_uniforms, const uint32_t *p_uniform_offsets, const Vector<ShaderCompiler::GeneratedCode::Texture> &p_texture_uniforms, const Map<StringName, Map<int, RID>> &p_default_texture_params, uint32_t p_ubo_size, RID &uniform_set, RID p_shader, uint32_t p_shader_uniform_set, uint32_t p_barrier = RD::BARRIER_MASK_ALL);
- void free_parameters_uniform_set(RID p_uniform_set);
-
- private:
- friend class RendererStorageRD;
- RID self;
- List<RID>::Element *global_buffer_E = nullptr;
- List<RID>::Element *global_texture_E = nullptr;
- uint64_t global_textures_pass = 0;
- Map<StringName, uint64_t> used_global_textures;
-
- //internally by update_parameters_uniform_set
- Vector<uint8_t> ubo_data;
- RID uniform_buffer;
- Vector<RID> texture_cache;
- };
- typedef MaterialData *(*MaterialDataRequestFunction)(ShaderData *);
- static void _material_uniform_set_erased(void *p_material);
-
enum DefaultRDBuffer {
DEFAULT_RD_BUFFER_VERTEX,
DEFAULT_RD_BUFFER_NORMAL,
@@ -205,94 +152,6 @@ private:
RID custom_rd_samplers[RS::CANVAS_ITEM_TEXTURE_FILTER_MAX][RS::CANVAS_ITEM_TEXTURE_REPEAT_MAX];
RID default_rd_storage_buffer;
- /* DECAL ATLAS */
-
- struct DecalAtlas {
- struct Texture {
- int panorama_to_dp_users;
- int users;
- Rect2 uv_rect;
- };
-
- struct SortItem {
- RID texture;
- Size2i pixel_size;
- Size2i size;
- Point2i pos;
-
- bool operator<(const SortItem &p_item) const {
- //sort larger to smaller
- if (size.height == p_item.size.height) {
- return size.width > p_item.size.width;
- } else {
- return size.height > p_item.size.height;
- }
- }
- };
-
- HashMap<RID, Texture> textures;
- bool dirty = true;
- int mipmaps = 5;
-
- RID texture;
- RID texture_srgb;
- struct MipMap {
- RID fb;
- RID texture;
- Size2i size;
- };
- Vector<MipMap> texture_mipmaps;
-
- Size2i size;
-
- } decal_atlas;
-
- void _update_decal_atlas();
-
- /* SHADER */
-
- struct Material;
-
- struct Shader {
- ShaderData *data;
- String code;
- ShaderType type;
- Map<StringName, Map<int, RID>> default_texture_parameter;
- Set<Material *> owners;
- };
-
- ShaderDataRequestFunction shader_data_request_func[SHADER_TYPE_MAX];
- mutable RID_Owner<Shader, true> shader_owner;
-
- /* Material */
-
- struct Material {
- RID self;
- MaterialData *data = nullptr;
- Shader *shader = nullptr;
- //shortcut to shader data and type
- ShaderType shader_type = SHADER_TYPE_MAX;
- uint32_t shader_id = 0;
- bool uniform_dirty = false;
- bool texture_dirty = false;
- Map<StringName, Variant> params;
- int32_t priority = 0;
- RID next_pass;
- SelfList<Material> update_element;
-
- Dependency dependency;
-
- Material() :
- update_element(this) {}
- };
-
- MaterialDataRequestFunction material_data_request_func[SHADER_TYPE_MAX];
- mutable RID_Owner<Material, true> material_owner;
-
- SelfList<Material>::List material_update_list;
- void _material_queue_update(Material *material, bool p_uniform, bool p_texture);
- void _update_queued_materials();
-
/* Mesh */
struct MeshInstance;
@@ -758,7 +617,7 @@ private:
Particles *particle_update_list = nullptr;
- struct ParticlesShaderData : public ShaderData {
+ struct ParticlesShaderData : public RendererRD::ShaderData {
bool valid;
RID version;
bool uses_collision = false;
@@ -784,7 +643,7 @@ private:
virtual void set_code(const String &p_Code);
virtual void set_default_texture_param(const StringName &p_name, RID p_texture, int p_index);
virtual void get_param_list(List<PropertyInfo> *p_param_list) const;
- virtual void get_instance_param_list(List<RendererStorage::InstanceShaderParam> *p_param_list) const;
+ virtual void get_instance_param_list(List<RendererMaterialStorage::InstanceShaderParam> *p_param_list) const;
virtual bool is_param_texture(const StringName &p_param) const;
virtual bool is_animated() const;
virtual bool casts_shadows() const;
@@ -795,12 +654,12 @@ private:
virtual ~ParticlesShaderData();
};
- ShaderData *_create_particles_shader_func();
- static RendererStorageRD::ShaderData *_create_particles_shader_funcs() {
+ RendererRD::ShaderData *_create_particles_shader_func();
+ static RendererRD::ShaderData *_create_particles_shader_funcs() {
return base_singleton->_create_particles_shader_func();
}
- struct ParticlesMaterialData : public MaterialData {
+ struct ParticlesMaterialData : public RendererRD::MaterialData {
ParticlesShaderData *shader_data = nullptr;
RID uniform_set;
@@ -810,8 +669,8 @@ private:
virtual ~ParticlesMaterialData();
};
- MaterialData *_create_particles_material_func(ParticlesShaderData *p_shader);
- static RendererStorageRD::MaterialData *_create_particles_material_funcs(ShaderData *p_shader) {
+ RendererRD::MaterialData *_create_particles_material_func(ParticlesShaderData *p_shader);
+ static RendererRD::MaterialData *_create_particles_material_funcs(RendererRD::ShaderData *p_shader) {
return base_singleton->_create_particles_material_func(static_cast<ParticlesShaderData *>(p_shader));
}
@@ -952,27 +811,6 @@ private:
mutable RID_Owner<ReflectionProbe, true> reflection_probe_owner;
- /* DECAL */
-
- struct Decal {
- Vector3 extents = Vector3(1, 1, 1);
- RID textures[RS::DECAL_TEXTURE_MAX];
- float emission_energy = 1.0;
- float albedo_mix = 1.0;
- Color modulate = Color(1, 1, 1, 1);
- uint32_t cull_mask = (1 << 20) - 1;
- float upper_fade = 0.3;
- float lower_fade = 0.3;
- bool distance_fade = false;
- float distance_fade_begin = 10;
- float distance_fade_length = 1;
- float normal_fade = 0.0;
-
- Dependency dependency;
- };
-
- mutable RID_Owner<Decal, true> decal_owner;
-
/* VOXEL GI */
struct VoxelGI {
@@ -1119,88 +957,11 @@ private:
RID pipelines[SHADER_MAX];
} rt_sdf;
- /* GLOBAL SHADER VARIABLES */
-
- struct GlobalVariables {
- enum {
- BUFFER_DIRTY_REGION_SIZE = 1024
- };
- struct Variable {
- Set<RID> texture_materials; // materials using this
-
- RS::GlobalVariableType type;
- Variant value;
- Variant override;
- int32_t buffer_index; //for vectors
- int32_t buffer_elements; //for vectors
- };
-
- HashMap<StringName, Variable> variables;
-
- struct Value {
- float x;
- float y;
- float z;
- float w;
- };
-
- struct ValueInt {
- int32_t x;
- int32_t y;
- int32_t z;
- int32_t w;
- };
-
- struct ValueUInt {
- uint32_t x;
- uint32_t y;
- uint32_t z;
- uint32_t w;
- };
-
- struct ValueUsage {
- uint32_t elements = 0;
- };
-
- List<RID> materials_using_buffer;
- List<RID> materials_using_texture;
-
- RID buffer;
- Value *buffer_values;
- ValueUsage *buffer_usage;
- bool *buffer_dirty_regions;
- uint32_t buffer_dirty_region_count = 0;
-
- uint32_t buffer_size;
-
- bool must_update_texture_materials = false;
- bool must_update_buffer_materials = false;
-
- HashMap<RID, int32_t> instance_buffer_pos;
-
- } global_variables;
-
- int32_t _global_variable_allocate(uint32_t p_elements);
- void _global_variable_store_in_buffer(int32_t p_index, RS::GlobalVariableType p_type, const Variant &p_value);
- void _global_variable_mark_buffer_dirty(int32_t p_index, int32_t p_elements);
-
- void _update_global_variables();
/* EFFECTS */
EffectsRD *effects = nullptr;
public:
- RID decal_atlas_get_texture() const;
- RID decal_atlas_get_texture_srgb() const;
- _FORCE_INLINE_ Rect2 decal_atlas_get_texture_rect(RID p_texture) {
- DecalAtlas::Texture *t = decal_atlas.textures.getptr(p_texture);
- if (!t) {
- return Rect2();
- }
-
- return t->uv_rect;
- }
-
//internal usage
_FORCE_INLINE_ RID sampler_rd_get_default(RS::CanvasItemTextureFilter p_filter, RS::CanvasItemTextureRepeat p_repeat) {
@@ -1214,58 +975,6 @@ public:
void sampler_rd_set_default(float p_mipmap_bias);
- /* SHADER API */
-
- RID shader_allocate();
- void shader_initialize(RID p_shader);
-
- void shader_set_code(RID p_shader, const String &p_code);
- String shader_get_code(RID p_shader) const;
- void shader_get_param_list(RID p_shader, List<PropertyInfo> *p_param_list) const;
-
- void shader_set_default_texture_param(RID p_shader, const StringName &p_name, RID p_texture, int p_index);
- RID shader_get_default_texture_param(RID p_shader, const StringName &p_name, int p_index) const;
- Variant shader_get_param_default(RID p_shader, const StringName &p_param) const;
- void shader_set_data_request_function(ShaderType p_shader_type, ShaderDataRequestFunction p_function);
-
- virtual RS::ShaderNativeSourceCode shader_get_native_source_code(RID p_shader) const;
-
- /* COMMON MATERIAL API */
-
- RID material_allocate();
- void material_initialize(RID p_material);
-
- void material_set_shader(RID p_material, RID p_shader);
-
- void material_set_param(RID p_material, const StringName &p_param, const Variant &p_value);
- Variant material_get_param(RID p_material, const StringName &p_param) const;
-
- void material_set_next_pass(RID p_material, RID p_next_material);
- void material_set_render_priority(RID p_material, int priority);
-
- bool material_is_animated(RID p_material);
- bool material_casts_shadows(RID p_material);
-
- void material_get_instance_shader_parameters(RID p_material, List<InstanceShaderParam> *r_parameters);
-
- void material_update_dependency(RID p_material, DependencyTracker *p_instance);
-
- void material_set_data_request_function(ShaderType p_shader_type, MaterialDataRequestFunction p_function);
-
- _FORCE_INLINE_ uint32_t material_get_shader_id(RID p_material) {
- Material *material = material_owner.get_or_null(p_material);
- return material->shader_id;
- }
-
- _FORCE_INLINE_ MaterialData *material_get_data(RID p_material, ShaderType p_shader_type) {
- Material *material = material_owner.get_or_null(p_material);
- if (!material || material->shader_type != p_shader_type) {
- return nullptr;
- } else {
- return material->data;
- }
- }
-
/* MESH API */
RID mesh_allocate();
@@ -1791,89 +1500,6 @@ public:
void base_update_dependency(RID p_base, DependencyTracker *p_instance);
void skeleton_update_dependency(RID p_skeleton, DependencyTracker *p_instance);
- /* DECAL API */
-
- RID decal_allocate();
- void decal_initialize(RID p_decal);
-
- virtual void decal_set_extents(RID p_decal, const Vector3 &p_extents);
- virtual void decal_set_texture(RID p_decal, RS::DecalTexture p_type, RID p_texture);
- virtual void decal_set_emission_energy(RID p_decal, float p_energy);
- virtual void decal_set_albedo_mix(RID p_decal, float p_mix);
- virtual void decal_set_modulate(RID p_decal, const Color &p_modulate);
- virtual void decal_set_cull_mask(RID p_decal, uint32_t p_layers);
- virtual void decal_set_distance_fade(RID p_decal, bool p_enabled, float p_begin, float p_length);
- virtual void decal_set_fade(RID p_decal, float p_above, float p_below);
- virtual void decal_set_normal_fade(RID p_decal, float p_fade);
-
- void decal_atlas_mark_dirty_on_texture(RID p_texture);
- void decal_atlas_remove_texture(RID p_texture);
-
- virtual void texture_add_to_decal_atlas(RID p_texture, bool p_panorama_to_dp = false);
- virtual void texture_remove_from_decal_atlas(RID p_texture, bool p_panorama_to_dp = false);
-
- _FORCE_INLINE_ Vector3 decal_get_extents(RID p_decal) {
- const Decal *decal = decal_owner.get_or_null(p_decal);
- return decal->extents;
- }
-
- _FORCE_INLINE_ RID decal_get_texture(RID p_decal, RS::DecalTexture p_texture) {
- const Decal *decal = decal_owner.get_or_null(p_decal);
- return decal->textures[p_texture];
- }
-
- _FORCE_INLINE_ Color decal_get_modulate(RID p_decal) {
- const Decal *decal = decal_owner.get_or_null(p_decal);
- return decal->modulate;
- }
-
- _FORCE_INLINE_ float decal_get_emission_energy(RID p_decal) {
- const Decal *decal = decal_owner.get_or_null(p_decal);
- return decal->emission_energy;
- }
-
- _FORCE_INLINE_ float decal_get_albedo_mix(RID p_decal) {
- const Decal *decal = decal_owner.get_or_null(p_decal);
- return decal->albedo_mix;
- }
-
- _FORCE_INLINE_ uint32_t decal_get_cull_mask(RID p_decal) {
- const Decal *decal = decal_owner.get_or_null(p_decal);
- return decal->cull_mask;
- }
-
- _FORCE_INLINE_ float decal_get_upper_fade(RID p_decal) {
- const Decal *decal = decal_owner.get_or_null(p_decal);
- return decal->upper_fade;
- }
-
- _FORCE_INLINE_ float decal_get_lower_fade(RID p_decal) {
- const Decal *decal = decal_owner.get_or_null(p_decal);
- return decal->lower_fade;
- }
-
- _FORCE_INLINE_ float decal_get_normal_fade(RID p_decal) {
- const Decal *decal = decal_owner.get_or_null(p_decal);
- return decal->normal_fade;
- }
-
- _FORCE_INLINE_ bool decal_is_distance_fade_enabled(RID p_decal) {
- const Decal *decal = decal_owner.get_or_null(p_decal);
- return decal->distance_fade;
- }
-
- _FORCE_INLINE_ float decal_get_distance_fade_begin(RID p_decal) {
- const Decal *decal = decal_owner.get_or_null(p_decal);
- return decal->distance_fade_begin;
- }
-
- _FORCE_INLINE_ float decal_get_distance_fade_length(RID p_decal) {
- const Decal *decal = decal_owner.get_or_null(p_decal);
- return decal->distance_fade_length;
- }
-
- virtual AABB decal_get_aabb(RID p_decal) const;
-
/* VOXEL GI API */
RID voxel_gi_allocate();
@@ -2131,27 +1757,6 @@ public:
virtual void particles_collision_instance_set_transform(RID p_collision_instance, const Transform3D &p_transform);
virtual void particles_collision_instance_set_active(RID p_collision_instance, bool p_active);
- /* GLOBAL VARIABLES API */
-
- virtual void global_variable_add(const StringName &p_name, RS::GlobalVariableType p_type, const Variant &p_value);
- virtual void global_variable_remove(const StringName &p_name);
- virtual Vector<StringName> global_variable_get_list() const;
-
- virtual void global_variable_set(const StringName &p_name, const Variant &p_value);
- virtual void global_variable_set_override(const StringName &p_name, const Variant &p_value);
- virtual Variant global_variable_get(const StringName &p_name) const;
- virtual RS::GlobalVariableType global_variable_get_type(const StringName &p_name) const;
- RS::GlobalVariableType global_variable_get_type_internal(const StringName &p_name) const;
-
- virtual void global_variables_load_settings(bool p_load_textures = true);
- virtual void global_variables_clear();
-
- virtual int32_t global_variables_instance_allocate(RID p_instance);
- virtual void global_variables_instance_free(RID p_instance);
- virtual void global_variables_instance_update(RID p_instance, int p_index, const Variant &p_value);
-
- RID global_variables_get_storage_buffer() const;
-
/* RENDER TARGET API */
RID render_target_create();
diff --git a/servers/rendering/renderer_rd/shaders/scene_forward_clustered.glsl b/servers/rendering/renderer_rd/shaders/scene_forward_clustered.glsl
index 33b0ee5fae..4e6e50bc44 100644
--- a/servers/rendering/renderer_rd/shaders/scene_forward_clustered.glsl
+++ b/servers/rendering/renderer_rd/shaders/scene_forward_clustered.glsl
@@ -453,7 +453,7 @@ layout(location = 9) in flat uint instance_index_interp;
//defines to keep compatibility with vertex
-#define model_matrix instances.data[instance_index].transform
+#define model_matrix instances.data[draw_call.instance_index].transform
#ifdef USE_MULTIVIEW
#define projection_matrix scene_data.projection_matrix_view[ViewIndex]
#define inv_projection_matrix scene_data.inv_projection_matrix_view[ViewIndex]
diff --git a/servers/rendering/renderer_rd/storage_rd/decal_atlas_storage.cpp b/servers/rendering/renderer_rd/storage_rd/decal_atlas_storage.cpp
new file mode 100644
index 0000000000..73acc0fdd6
--- /dev/null
+++ b/servers/rendering/renderer_rd/storage_rd/decal_atlas_storage.cpp
@@ -0,0 +1,437 @@
+/*************************************************************************/
+/* decal_atlas_storage.cpp */
+/*************************************************************************/
+/* This file is part of: */
+/* GODOT ENGINE */
+/* https://godotengine.org */
+/*************************************************************************/
+/* Copyright (c) 2007-2022 Juan Linietsky, Ariel Manzur. */
+/* Copyright (c) 2014-2022 Godot Engine contributors (cf. AUTHORS.md). */
+/* */
+/* Permission is hereby granted, free of charge, to any person obtaining */
+/* a copy of this software and associated documentation files (the */
+/* "Software"), to deal in the Software without restriction, including */
+/* without limitation the rights to use, copy, modify, merge, publish, */
+/* distribute, sublicense, and/or sell copies of the Software, and to */
+/* permit persons to whom the Software is furnished to do so, subject to */
+/* the following conditions: */
+/* */
+/* The above copyright notice and this permission notice shall be */
+/* included in all copies or substantial portions of the Software. */
+/* */
+/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
+/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
+/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
+/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
+/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
+/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
+/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
+/*************************************************************************/
+
+#include "decal_atlas_storage.h"
+#include "texture_storage.h"
+
+// Should be able to remove this once we move effects into their own file and include the correct effects
+#include "servers/rendering/renderer_rd/renderer_storage_rd.h"
+
+using namespace RendererRD;
+
+DecalAtlasStorage *DecalAtlasStorage::singleton = nullptr;
+
+DecalAtlasStorage *DecalAtlasStorage::get_singleton() {
+ return singleton;
+}
+
+DecalAtlasStorage::DecalAtlasStorage() {
+ singleton = this;
+
+ { // default atlas texture
+ RD::TextureFormat tformat;
+ tformat.format = RD::DATA_FORMAT_R8G8B8A8_UNORM;
+ tformat.width = 4;
+ tformat.height = 4;
+ tformat.usage_bits = RD::TEXTURE_USAGE_SAMPLING_BIT | RD::TEXTURE_USAGE_CAN_UPDATE_BIT;
+ tformat.texture_type = RD::TEXTURE_TYPE_2D;
+
+ Vector<uint8_t> pv;
+ pv.resize(16 * 4);
+
+ for (int i = 0; i < 16; i++) {
+ pv.set(i * 4 + 0, 0);
+ pv.set(i * 4 + 1, 0);
+ pv.set(i * 4 + 2, 0);
+ pv.set(i * 4 + 3, 255);
+ }
+
+ {
+ //take the chance and initialize decal atlas to something
+ Vector<Vector<uint8_t>> vpv;
+ vpv.push_back(pv);
+ decal_atlas.texture = RD::get_singleton()->texture_create(tformat, RD::TextureView(), vpv);
+ decal_atlas.texture_srgb = decal_atlas.texture;
+ }
+ }
+}
+
+DecalAtlasStorage::~DecalAtlasStorage() {
+ if (decal_atlas.textures.size()) {
+ ERR_PRINT("Decal Atlas: " + itos(decal_atlas.textures.size()) + " textures were not removed from the atlas.");
+ }
+
+ if (decal_atlas.texture.is_valid()) {
+ RD::get_singleton()->free(decal_atlas.texture);
+ }
+
+ singleton = nullptr;
+}
+
+RID DecalAtlasStorage::decal_atlas_get_texture() const {
+ return decal_atlas.texture;
+}
+
+RID DecalAtlasStorage::decal_atlas_get_texture_srgb() const {
+ return decal_atlas.texture_srgb;
+}
+
+RID DecalAtlasStorage::decal_allocate() {
+ return decal_owner.allocate_rid();
+}
+
+void DecalAtlasStorage::decal_initialize(RID p_decal) {
+ decal_owner.initialize_rid(p_decal, Decal());
+}
+
+void DecalAtlasStorage::decal_free(RID p_rid) {
+ Decal *decal = decal_owner.get_or_null(p_rid);
+ for (int i = 0; i < RS::DECAL_TEXTURE_MAX; i++) {
+ if (decal->textures[i].is_valid() && TextureStorage::get_singleton()->owns_texture(decal->textures[i])) {
+ texture_remove_from_decal_atlas(decal->textures[i]);
+ }
+ }
+ decal->dependency.deleted_notify(p_rid);
+ decal_owner.free(p_rid);
+}
+
+void DecalAtlasStorage::decal_set_extents(RID p_decal, const Vector3 &p_extents) {
+ Decal *decal = decal_owner.get_or_null(p_decal);
+ ERR_FAIL_COND(!decal);
+ decal->extents = p_extents;
+ decal->dependency.changed_notify(RendererStorage::DEPENDENCY_CHANGED_AABB);
+}
+
+void DecalAtlasStorage::decal_set_texture(RID p_decal, RS::DecalTexture p_type, RID p_texture) {
+ Decal *decal = decal_owner.get_or_null(p_decal);
+ ERR_FAIL_COND(!decal);
+ ERR_FAIL_INDEX(p_type, RS::DECAL_TEXTURE_MAX);
+
+ if (decal->textures[p_type] == p_texture) {
+ return;
+ }
+
+ ERR_FAIL_COND(p_texture.is_valid() && !TextureStorage::get_singleton()->owns_texture(p_texture));
+
+ if (decal->textures[p_type].is_valid() && TextureStorage::get_singleton()->owns_texture(decal->textures[p_type])) {
+ texture_remove_from_decal_atlas(decal->textures[p_type]);
+ }
+
+ decal->textures[p_type] = p_texture;
+
+ if (decal->textures[p_type].is_valid()) {
+ texture_add_to_decal_atlas(decal->textures[p_type]);
+ }
+
+ decal->dependency.changed_notify(RendererStorage::DEPENDENCY_CHANGED_DECAL);
+}
+
+void DecalAtlasStorage::decal_set_emission_energy(RID p_decal, float p_energy) {
+ Decal *decal = decal_owner.get_or_null(p_decal);
+ ERR_FAIL_COND(!decal);
+ decal->emission_energy = p_energy;
+}
+
+void DecalAtlasStorage::decal_set_albedo_mix(RID p_decal, float p_mix) {
+ Decal *decal = decal_owner.get_or_null(p_decal);
+ ERR_FAIL_COND(!decal);
+ decal->albedo_mix = p_mix;
+}
+
+void DecalAtlasStorage::decal_set_modulate(RID p_decal, const Color &p_modulate) {
+ Decal *decal = decal_owner.get_or_null(p_decal);
+ ERR_FAIL_COND(!decal);
+ decal->modulate = p_modulate;
+}
+
+void DecalAtlasStorage::decal_set_cull_mask(RID p_decal, uint32_t p_layers) {
+ Decal *decal = decal_owner.get_or_null(p_decal);
+ ERR_FAIL_COND(!decal);
+ decal->cull_mask = p_layers;
+ decal->dependency.changed_notify(RendererStorage::DEPENDENCY_CHANGED_AABB);
+}
+
+void DecalAtlasStorage::decal_set_distance_fade(RID p_decal, bool p_enabled, float p_begin, float p_length) {
+ Decal *decal = decal_owner.get_or_null(p_decal);
+ ERR_FAIL_COND(!decal);
+ decal->distance_fade = p_enabled;
+ decal->distance_fade_begin = p_begin;
+ decal->distance_fade_length = p_length;
+}
+
+void DecalAtlasStorage::decal_set_fade(RID p_decal, float p_above, float p_below) {
+ Decal *decal = decal_owner.get_or_null(p_decal);
+ ERR_FAIL_COND(!decal);
+ decal->upper_fade = p_above;
+ decal->lower_fade = p_below;
+}
+
+void DecalAtlasStorage::decal_set_normal_fade(RID p_decal, float p_fade) {
+ Decal *decal = decal_owner.get_or_null(p_decal);
+ ERR_FAIL_COND(!decal);
+ decal->normal_fade = p_fade;
+}
+
+void DecalAtlasStorage::decal_atlas_mark_dirty_on_texture(RID p_texture) {
+ if (decal_atlas.textures.has(p_texture)) {
+ //belongs to decal atlas..
+
+ decal_atlas.dirty = true; //mark it dirty since it was most likely modified
+ }
+}
+
+void DecalAtlasStorage::decal_atlas_remove_texture(RID p_texture) {
+ if (decal_atlas.textures.has(p_texture)) {
+ decal_atlas.textures.erase(p_texture);
+ //there is not much a point of making it dirty, just let it be.
+ }
+}
+
+AABB DecalAtlasStorage::decal_get_aabb(RID p_decal) const {
+ Decal *decal = decal_owner.get_or_null(p_decal);
+ ERR_FAIL_COND_V(!decal, AABB());
+
+ return AABB(-decal->extents, decal->extents * 2.0);
+}
+
+void DecalAtlasStorage::update_decal_atlas() {
+ EffectsRD *effects = RendererStorageRD::base_singleton->get_effects();
+
+ if (!decal_atlas.dirty) {
+ return; //nothing to do
+ }
+
+ decal_atlas.dirty = false;
+
+ if (decal_atlas.texture.is_valid()) {
+ RD::get_singleton()->free(decal_atlas.texture);
+ decal_atlas.texture = RID();
+ decal_atlas.texture_srgb = RID();
+ decal_atlas.texture_mipmaps.clear();
+ }
+
+ int border = 1 << decal_atlas.mipmaps;
+
+ if (decal_atlas.textures.size()) {
+ //generate atlas
+ Vector<DecalAtlas::SortItem> itemsv;
+ itemsv.resize(decal_atlas.textures.size());
+ int base_size = 8;
+ const RID *K = nullptr;
+
+ int idx = 0;
+ while ((K = decal_atlas.textures.next(K))) {
+ DecalAtlas::SortItem &si = itemsv.write[idx];
+
+ Texture *src_tex = TextureStorage::get_singleton()->get_texture(*K);
+
+ si.size.width = (src_tex->width / border) + 1;
+ si.size.height = (src_tex->height / border) + 1;
+ si.pixel_size = Size2i(src_tex->width, src_tex->height);
+
+ if (base_size < si.size.width) {
+ base_size = nearest_power_of_2_templated(si.size.width);
+ }
+
+ si.texture = *K;
+ idx++;
+ }
+
+ //sort items by size
+ itemsv.sort();
+
+ //attempt to create atlas
+ int item_count = itemsv.size();
+ DecalAtlas::SortItem *items = itemsv.ptrw();
+
+ int atlas_height = 0;
+
+ while (true) {
+ Vector<int> v_offsetsv;
+ v_offsetsv.resize(base_size);
+
+ int *v_offsets = v_offsetsv.ptrw();
+ memset(v_offsets, 0, sizeof(int) * base_size);
+
+ int max_height = 0;
+
+ for (int i = 0; i < item_count; i++) {
+ //best fit
+ DecalAtlas::SortItem &si = items[i];
+ int best_idx = -1;
+ int best_height = 0x7FFFFFFF;
+ for (int j = 0; j <= base_size - si.size.width; j++) {
+ int height = 0;
+ for (int k = 0; k < si.size.width; k++) {
+ int h = v_offsets[k + j];
+ if (h > height) {
+ height = h;
+ if (height > best_height) {
+ break; //already bad
+ }
+ }
+ }
+
+ if (height < best_height) {
+ best_height = height;
+ best_idx = j;
+ }
+ }
+
+ //update
+ for (int k = 0; k < si.size.width; k++) {
+ v_offsets[k + best_idx] = best_height + si.size.height;
+ }
+
+ si.pos.x = best_idx;
+ si.pos.y = best_height;
+
+ if (si.pos.y + si.size.height > max_height) {
+ max_height = si.pos.y + si.size.height;
+ }
+ }
+
+ if (max_height <= base_size * 2) {
+ atlas_height = max_height;
+ break; //good ratio, break;
+ }
+
+ base_size *= 2;
+ }
+
+ decal_atlas.size.width = base_size * border;
+ decal_atlas.size.height = nearest_power_of_2_templated(atlas_height * border);
+
+ for (int i = 0; i < item_count; i++) {
+ DecalAtlas::Texture *t = decal_atlas.textures.getptr(items[i].texture);
+ t->uv_rect.position = items[i].pos * border + Vector2i(border / 2, border / 2);
+ t->uv_rect.size = items[i].pixel_size;
+
+ t->uv_rect.position /= Size2(decal_atlas.size);
+ t->uv_rect.size /= Size2(decal_atlas.size);
+ }
+ } else {
+ //use border as size, so it at least has enough mipmaps
+ decal_atlas.size.width = border;
+ decal_atlas.size.height = border;
+ }
+
+ //blit textures
+
+ RD::TextureFormat tformat;
+ tformat.format = RD::DATA_FORMAT_R8G8B8A8_UNORM;
+ tformat.width = decal_atlas.size.width;
+ tformat.height = decal_atlas.size.height;
+ tformat.usage_bits = RD::TEXTURE_USAGE_SAMPLING_BIT | RD::TEXTURE_USAGE_COLOR_ATTACHMENT_BIT | RD::TEXTURE_USAGE_CAN_COPY_TO_BIT;
+ tformat.texture_type = RD::TEXTURE_TYPE_2D;
+ tformat.mipmaps = decal_atlas.mipmaps;
+ tformat.shareable_formats.push_back(RD::DATA_FORMAT_R8G8B8A8_UNORM);
+ tformat.shareable_formats.push_back(RD::DATA_FORMAT_R8G8B8A8_SRGB);
+
+ decal_atlas.texture = RD::get_singleton()->texture_create(tformat, RD::TextureView());
+ RD::get_singleton()->texture_clear(decal_atlas.texture, Color(0, 0, 0, 0), 0, decal_atlas.mipmaps, 0, 1);
+
+ {
+ //create the framebuffer
+
+ Size2i s = decal_atlas.size;
+
+ for (int i = 0; i < decal_atlas.mipmaps; i++) {
+ DecalAtlas::MipMap mm;
+ mm.texture = RD::get_singleton()->texture_create_shared_from_slice(RD::TextureView(), decal_atlas.texture, 0, i);
+ Vector<RID> fb;
+ fb.push_back(mm.texture);
+ mm.fb = RD::get_singleton()->framebuffer_create(fb);
+ mm.size = s;
+ decal_atlas.texture_mipmaps.push_back(mm);
+
+ s.width = MAX(1, s.width >> 1);
+ s.height = MAX(1, s.height >> 1);
+ }
+ {
+ //create the SRGB variant
+ RD::TextureView rd_view;
+ rd_view.format_override = RD::DATA_FORMAT_R8G8B8A8_SRGB;
+ decal_atlas.texture_srgb = RD::get_singleton()->texture_create_shared(rd_view, decal_atlas.texture);
+ }
+ }
+
+ RID prev_texture;
+ for (int i = 0; i < decal_atlas.texture_mipmaps.size(); i++) {
+ const DecalAtlas::MipMap &mm = decal_atlas.texture_mipmaps[i];
+
+ Color clear_color(0, 0, 0, 0);
+
+ if (decal_atlas.textures.size()) {
+ if (i == 0) {
+ Vector<Color> cc;
+ cc.push_back(clear_color);
+
+ RD::DrawListID draw_list = RD::get_singleton()->draw_list_begin(mm.fb, RD::INITIAL_ACTION_CLEAR, RD::FINAL_ACTION_READ, RD::INITIAL_ACTION_DROP, RD::FINAL_ACTION_DISCARD, cc);
+
+ const RID *K = nullptr;
+ while ((K = decal_atlas.textures.next(K))) {
+ DecalAtlas::Texture *t = decal_atlas.textures.getptr(*K);
+ Texture *src_tex = TextureStorage::get_singleton()->get_texture(*K);
+ effects->copy_to_atlas_fb(src_tex->rd_texture, mm.fb, t->uv_rect, draw_list, false, t->panorama_to_dp_users > 0);
+ }
+
+ RD::get_singleton()->draw_list_end();
+
+ prev_texture = mm.texture;
+ } else {
+ effects->copy_to_fb_rect(prev_texture, mm.fb, Rect2i(Point2i(), mm.size));
+ prev_texture = mm.texture;
+ }
+ } else {
+ RD::get_singleton()->texture_clear(mm.texture, clear_color, 0, 1, 0, 1);
+ }
+ }
+}
+
+void DecalAtlasStorage::texture_add_to_decal_atlas(RID p_texture, bool p_panorama_to_dp) {
+ if (!decal_atlas.textures.has(p_texture)) {
+ DecalAtlas::Texture t;
+ t.users = 1;
+ t.panorama_to_dp_users = p_panorama_to_dp ? 1 : 0;
+ decal_atlas.textures[p_texture] = t;
+ decal_atlas.dirty = true;
+ } else {
+ DecalAtlas::Texture *t = decal_atlas.textures.getptr(p_texture);
+ t->users++;
+ if (p_panorama_to_dp) {
+ t->panorama_to_dp_users++;
+ }
+ }
+}
+
+void DecalAtlasStorage::texture_remove_from_decal_atlas(RID p_texture, bool p_panorama_to_dp) {
+ DecalAtlas::Texture *t = decal_atlas.textures.getptr(p_texture);
+ ERR_FAIL_COND(!t);
+ t->users--;
+ if (p_panorama_to_dp) {
+ ERR_FAIL_COND(t->panorama_to_dp_users == 0);
+ t->panorama_to_dp_users--;
+ }
+ if (t->users == 0) {
+ decal_atlas.textures.erase(p_texture);
+ //do not mark it dirty, there is no need to since it remains working
+ }
+}
diff --git a/servers/rendering/renderer_rd/storage_rd/decal_atlas_storage.h b/servers/rendering/renderer_rd/storage_rd/decal_atlas_storage.h
new file mode 100644
index 0000000000..a217a0f8b6
--- /dev/null
+++ b/servers/rendering/renderer_rd/storage_rd/decal_atlas_storage.h
@@ -0,0 +1,211 @@
+/*************************************************************************/
+/* decal_atlas_storage.h */
+/*************************************************************************/
+/* This file is part of: */
+/* GODOT ENGINE */
+/* https://godotengine.org */
+/*************************************************************************/
+/* Copyright (c) 2007-2022 Juan Linietsky, Ariel Manzur. */
+/* Copyright (c) 2014-2022 Godot Engine contributors (cf. AUTHORS.md). */
+/* */
+/* Permission is hereby granted, free of charge, to any person obtaining */
+/* a copy of this software and associated documentation files (the */
+/* "Software"), to deal in the Software without restriction, including */
+/* without limitation the rights to use, copy, modify, merge, publish, */
+/* distribute, sublicense, and/or sell copies of the Software, and to */
+/* permit persons to whom the Software is furnished to do so, subject to */
+/* the following conditions: */
+/* */
+/* The above copyright notice and this permission notice shall be */
+/* included in all copies or substantial portions of the Software. */
+/* */
+/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
+/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
+/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
+/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
+/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
+/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
+/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
+/*************************************************************************/
+
+#ifndef DECAL_ATLAS_STORAGE_RD_H
+#define DECAL_ATLAS_STORAGE_RD_H
+
+#include "core/templates/rid_owner.h"
+#include "servers/rendering/renderer_storage.h"
+#include "servers/rendering/storage/decal_atlas_storage.h"
+
+namespace RendererRD {
+
+struct DecalAtlas {
+ struct Texture {
+ int panorama_to_dp_users;
+ int users;
+ Rect2 uv_rect;
+ };
+
+ struct SortItem {
+ RID texture;
+ Size2i pixel_size;
+ Size2i size;
+ Point2i pos;
+
+ bool operator<(const SortItem &p_item) const {
+ //sort larger to smaller
+ if (size.height == p_item.size.height) {
+ return size.width > p_item.size.width;
+ } else {
+ return size.height > p_item.size.height;
+ }
+ }
+ };
+
+ HashMap<RID, Texture> textures;
+ bool dirty = true;
+ int mipmaps = 5;
+
+ RID texture;
+ RID texture_srgb;
+ struct MipMap {
+ RID fb;
+ RID texture;
+ Size2i size;
+ };
+ Vector<MipMap> texture_mipmaps;
+
+ Size2i size;
+};
+
+struct Decal {
+ Vector3 extents = Vector3(1, 1, 1);
+ RID textures[RS::DECAL_TEXTURE_MAX];
+ float emission_energy = 1.0;
+ float albedo_mix = 1.0;
+ Color modulate = Color(1, 1, 1, 1);
+ uint32_t cull_mask = (1 << 20) - 1;
+ float upper_fade = 0.3;
+ float lower_fade = 0.3;
+ bool distance_fade = false;
+ float distance_fade_begin = 10;
+ float distance_fade_length = 1;
+ float normal_fade = 0.0;
+
+ RendererStorage::Dependency dependency;
+};
+
+class DecalAtlasStorage : public RendererDecalAtlasStorage {
+private:
+ static DecalAtlasStorage *singleton;
+
+ DecalAtlas decal_atlas;
+
+ mutable RID_Owner<Decal, true> decal_owner;
+
+public:
+ static DecalAtlasStorage *get_singleton();
+
+ void update_decal_atlas();
+
+ DecalAtlasStorage();
+ virtual ~DecalAtlasStorage();
+
+ Decal *get_decal(RID p_rid) { return decal_owner.get_or_null(p_rid); };
+ bool owns_decal(RID p_rid) { return decal_owner.owns(p_rid); };
+
+ RID decal_atlas_get_texture() const;
+ RID decal_atlas_get_texture_srgb() const;
+ _FORCE_INLINE_ Rect2 decal_atlas_get_texture_rect(RID p_texture) {
+ DecalAtlas::Texture *t = decal_atlas.textures.getptr(p_texture);
+ if (!t) {
+ return Rect2();
+ }
+
+ return t->uv_rect;
+ }
+
+ virtual RID decal_allocate() override;
+ virtual void decal_initialize(RID p_decal) override;
+ virtual void decal_free(RID p_rid) override;
+
+ virtual void decal_set_extents(RID p_decal, const Vector3 &p_extents) override;
+ virtual void decal_set_texture(RID p_decal, RS::DecalTexture p_type, RID p_texture) override;
+ virtual void decal_set_emission_energy(RID p_decal, float p_energy) override;
+ virtual void decal_set_albedo_mix(RID p_decal, float p_mix) override;
+ virtual void decal_set_modulate(RID p_decal, const Color &p_modulate) override;
+ virtual void decal_set_cull_mask(RID p_decal, uint32_t p_layers) override;
+ virtual void decal_set_distance_fade(RID p_decal, bool p_enabled, float p_begin, float p_length) override;
+ virtual void decal_set_fade(RID p_decal, float p_above, float p_below) override;
+ virtual void decal_set_normal_fade(RID p_decal, float p_fade) override;
+
+ void decal_atlas_mark_dirty_on_texture(RID p_texture);
+ void decal_atlas_remove_texture(RID p_texture);
+
+ virtual void texture_add_to_decal_atlas(RID p_texture, bool p_panorama_to_dp = false) override;
+ virtual void texture_remove_from_decal_atlas(RID p_texture, bool p_panorama_to_dp = false) override;
+
+ _FORCE_INLINE_ Vector3 decal_get_extents(RID p_decal) {
+ const Decal *decal = decal_owner.get_or_null(p_decal);
+ return decal->extents;
+ }
+
+ _FORCE_INLINE_ RID decal_get_texture(RID p_decal, RS::DecalTexture p_texture) {
+ const Decal *decal = decal_owner.get_or_null(p_decal);
+ return decal->textures[p_texture];
+ }
+
+ _FORCE_INLINE_ Color decal_get_modulate(RID p_decal) {
+ const Decal *decal = decal_owner.get_or_null(p_decal);
+ return decal->modulate;
+ }
+
+ _FORCE_INLINE_ float decal_get_emission_energy(RID p_decal) {
+ const Decal *decal = decal_owner.get_or_null(p_decal);
+ return decal->emission_energy;
+ }
+
+ _FORCE_INLINE_ float decal_get_albedo_mix(RID p_decal) {
+ const Decal *decal = decal_owner.get_or_null(p_decal);
+ return decal->albedo_mix;
+ }
+
+ _FORCE_INLINE_ uint32_t decal_get_cull_mask(RID p_decal) {
+ const Decal *decal = decal_owner.get_or_null(p_decal);
+ return decal->cull_mask;
+ }
+
+ _FORCE_INLINE_ float decal_get_upper_fade(RID p_decal) {
+ const Decal *decal = decal_owner.get_or_null(p_decal);
+ return decal->upper_fade;
+ }
+
+ _FORCE_INLINE_ float decal_get_lower_fade(RID p_decal) {
+ const Decal *decal = decal_owner.get_or_null(p_decal);
+ return decal->lower_fade;
+ }
+
+ _FORCE_INLINE_ float decal_get_normal_fade(RID p_decal) {
+ const Decal *decal = decal_owner.get_or_null(p_decal);
+ return decal->normal_fade;
+ }
+
+ _FORCE_INLINE_ bool decal_is_distance_fade_enabled(RID p_decal) {
+ const Decal *decal = decal_owner.get_or_null(p_decal);
+ return decal->distance_fade;
+ }
+
+ _FORCE_INLINE_ float decal_get_distance_fade_begin(RID p_decal) {
+ const Decal *decal = decal_owner.get_or_null(p_decal);
+ return decal->distance_fade_begin;
+ }
+
+ _FORCE_INLINE_ float decal_get_distance_fade_length(RID p_decal) {
+ const Decal *decal = decal_owner.get_or_null(p_decal);
+ return decal->distance_fade_length;
+ }
+
+ virtual AABB decal_get_aabb(RID p_decal) const override;
+};
+
+} // namespace RendererRD
+
+#endif // !DECAL_ATLAS_STORAGE_RD_H
diff --git a/servers/rendering/renderer_rd/storage_rd/material_storage.cpp b/servers/rendering/renderer_rd/storage_rd/material_storage.cpp
new file mode 100644
index 0000000000..9e3d124bbb
--- /dev/null
+++ b/servers/rendering/renderer_rd/storage_rd/material_storage.cpp
@@ -0,0 +1,2392 @@
+/*************************************************************************/
+/* material_storage.cpp */
+/*************************************************************************/
+/* This file is part of: */
+/* GODOT ENGINE */
+/* https://godotengine.org */
+/*************************************************************************/
+/* Copyright (c) 2007-2022 Juan Linietsky, Ariel Manzur. */
+/* Copyright (c) 2014-2022 Godot Engine contributors (cf. AUTHORS.md). */
+/* */
+/* Permission is hereby granted, free of charge, to any person obtaining */
+/* a copy of this software and associated documentation files (the */
+/* "Software"), to deal in the Software without restriction, including */
+/* without limitation the rights to use, copy, modify, merge, publish, */
+/* distribute, sublicense, and/or sell copies of the Software, and to */
+/* permit persons to whom the Software is furnished to do so, subject to */
+/* the following conditions: */
+/* */
+/* The above copyright notice and this permission notice shall be */
+/* included in all copies or substantial portions of the Software. */
+/* */
+/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
+/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
+/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
+/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
+/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
+/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
+/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
+/*************************************************************************/
+
+#include "material_storage.h"
+#include "core/config/engine.h"
+#include "core/config/project_settings.h"
+#include "core/io/resource_loader.h"
+#include "texture_storage.h"
+
+using namespace RendererRD;
+
+///////////////////////////////////////////////////////////////////////////
+// UBI helper functions
+
+_FORCE_INLINE_ static void _fill_std140_variant_ubo_value(ShaderLanguage::DataType type, int p_array_size, const Variant &value, uint8_t *data, bool p_linear_color) {
+ switch (type) {
+ case ShaderLanguage::TYPE_BOOL: {
+ uint32_t *gui = (uint32_t *)data;
+
+ if (p_array_size > 0) {
+ const PackedInt32Array &ba = value;
+ int s = ba.size();
+ const int *r = ba.ptr();
+
+ for (int i = 0, j = 0; i < p_array_size; i++, j += 4) {
+ if (i < s) {
+ gui[j] = (r[i] != 0) ? 1 : 0;
+ } else {
+ gui[j] = 0;
+ }
+ gui[j + 1] = 0; // ignored
+ gui[j + 2] = 0; // ignored
+ gui[j + 3] = 0; // ignored
+ }
+ } else {
+ bool v = value;
+ gui[0] = v ? 1 : 0;
+ }
+ } break;
+ case ShaderLanguage::TYPE_BVEC2: {
+ uint32_t *gui = (uint32_t *)data;
+
+ if (p_array_size > 0) {
+ const PackedInt32Array &ba = value;
+ int s = ba.size();
+ const int *r = ba.ptr();
+ int count = 2 * p_array_size;
+
+ for (int i = 0, j = 0; i < count; i += 2, j += 4) {
+ if (i < s) {
+ gui[j] = r[i] ? 1 : 0;
+ gui[j + 1] = r[i + 1] ? 1 : 0;
+ } else {
+ gui[j] = 0;
+ gui[j + 1] = 0;
+ }
+ gui[j + 2] = 0; // ignored
+ gui[j + 3] = 0; // ignored
+ }
+ } else {
+ int v = value;
+ gui[0] = v & 1 ? 1 : 0;
+ gui[1] = v & 2 ? 1 : 0;
+ }
+ } break;
+ case ShaderLanguage::TYPE_BVEC3: {
+ uint32_t *gui = (uint32_t *)data;
+
+ if (p_array_size > 0) {
+ const PackedInt32Array &ba = value;
+ int s = ba.size();
+ const int *r = ba.ptr();
+ int count = 3 * p_array_size;
+
+ for (int i = 0, j = 0; i < count; i += 3, j += 4) {
+ if (i < s) {
+ gui[j] = r[i] ? 1 : 0;
+ gui[j + 1] = r[i + 1] ? 1 : 0;
+ gui[j + 2] = r[i + 2] ? 1 : 0;
+ } else {
+ gui[j] = 0;
+ gui[j + 1] = 0;
+ gui[j + 2] = 0;
+ }
+ gui[j + 3] = 0; // ignored
+ }
+ } else {
+ int v = value;
+ gui[0] = (v & 1) ? 1 : 0;
+ gui[1] = (v & 2) ? 1 : 0;
+ gui[2] = (v & 4) ? 1 : 0;
+ }
+ } break;
+ case ShaderLanguage::TYPE_BVEC4: {
+ uint32_t *gui = (uint32_t *)data;
+
+ if (p_array_size > 0) {
+ const PackedInt32Array &ba = value;
+ int s = ba.size();
+ const int *r = ba.ptr();
+ int count = 4 * p_array_size;
+
+ for (int i = 0; i < count; i += 4) {
+ if (i < s) {
+ gui[i] = r[i] ? 1 : 0;
+ gui[i + 1] = r[i + 1] ? 1 : 0;
+ gui[i + 2] = r[i + 2] ? 1 : 0;
+ gui[i + 3] = r[i + 3] ? 1 : 0;
+ } else {
+ gui[i] = 0;
+ gui[i + 1] = 0;
+ gui[i + 2] = 0;
+ gui[i + 3] = 0;
+ }
+ }
+ } else {
+ int v = value;
+ gui[0] = (v & 1) ? 1 : 0;
+ gui[1] = (v & 2) ? 1 : 0;
+ gui[2] = (v & 4) ? 1 : 0;
+ gui[3] = (v & 8) ? 1 : 0;
+ }
+ } break;
+ case ShaderLanguage::TYPE_INT: {
+ int32_t *gui = (int32_t *)data;
+
+ if (p_array_size > 0) {
+ Vector<int> iv = value;
+ int s = iv.size();
+ const int *r = iv.ptr();
+
+ for (int i = 0, j = 0; i < p_array_size; i++, j += 4) {
+ if (i < s) {
+ gui[j] = r[i];
+ } else {
+ gui[j] = 0;
+ }
+ gui[j + 1] = 0; // ignored
+ gui[j + 2] = 0; // ignored
+ gui[j + 3] = 0; // ignored
+ }
+ } else {
+ int v = value;
+ gui[0] = v;
+ }
+ } break;
+ case ShaderLanguage::TYPE_IVEC2: {
+ Vector<int> iv = value;
+ int s = iv.size();
+ int32_t *gui = (int32_t *)data;
+
+ if (p_array_size <= 0) {
+ p_array_size = 1;
+ }
+ int count = 2 * p_array_size;
+
+ const int *r = iv.ptr();
+ for (int i = 0, j = 0; i < count; i += 2, j += 4) {
+ if (i < s) {
+ gui[j] = r[i];
+ gui[j + 1] = r[i + 1];
+ } else {
+ gui[j] = 0;
+ gui[j + 1] = 0;
+ }
+ gui[j + 2] = 0; // ignored
+ gui[j + 3] = 0; // ignored
+ }
+ } break;
+ case ShaderLanguage::TYPE_IVEC3: {
+ Vector<int> iv = value;
+ int s = iv.size();
+ int32_t *gui = (int32_t *)data;
+
+ if (p_array_size <= 0) {
+ p_array_size = 1;
+ }
+ int count = 3 * p_array_size;
+
+ const int *r = iv.ptr();
+ for (int i = 0, j = 0; i < count; i += 3, j += 4) {
+ if (i < s) {
+ gui[j] = r[i];
+ gui[j + 1] = r[i + 1];
+ gui[j + 2] = r[i + 2];
+ } else {
+ gui[j] = 0;
+ gui[j + 1] = 0;
+ gui[j + 2] = 0;
+ }
+ gui[j + 3] = 0; // ignored
+ }
+ } break;
+ case ShaderLanguage::TYPE_IVEC4: {
+ Vector<int> iv = value;
+ int s = iv.size();
+ int32_t *gui = (int32_t *)data;
+
+ if (p_array_size <= 0) {
+ p_array_size = 1;
+ }
+ int count = 4 * p_array_size;
+
+ const int *r = iv.ptr();
+ for (int i = 0; i < count; i += 4) {
+ if (i < s) {
+ gui[i] = r[i];
+ gui[i + 1] = r[i + 1];
+ gui[i + 2] = r[i + 2];
+ gui[i + 3] = r[i + 3];
+ } else {
+ gui[i] = 0;
+ gui[i + 1] = 0;
+ gui[i + 2] = 0;
+ gui[i + 3] = 0;
+ }
+ }
+ } break;
+ case ShaderLanguage::TYPE_UINT: {
+ uint32_t *gui = (uint32_t *)data;
+
+ if (p_array_size > 0) {
+ Vector<int> iv = value;
+ int s = iv.size();
+ const int *r = iv.ptr();
+
+ for (int i = 0, j = 0; i < p_array_size; i++, j += 4) {
+ if (i < s) {
+ gui[j] = r[i];
+ } else {
+ gui[j] = 0;
+ }
+ gui[j + 1] = 0; // ignored
+ gui[j + 2] = 0; // ignored
+ gui[j + 3] = 0; // ignored
+ }
+ } else {
+ int v = value;
+ gui[0] = v;
+ }
+ } break;
+ case ShaderLanguage::TYPE_UVEC2: {
+ Vector<int> iv = value;
+ int s = iv.size();
+ uint32_t *gui = (uint32_t *)data;
+
+ if (p_array_size <= 0) {
+ p_array_size = 1;
+ }
+ int count = 2 * p_array_size;
+
+ const int *r = iv.ptr();
+ for (int i = 0, j = 0; i < count; i += 2, j += 4) {
+ if (i < s) {
+ gui[j] = r[i];
+ gui[j + 1] = r[i + 1];
+ } else {
+ gui[j] = 0;
+ gui[j + 1] = 0;
+ }
+ gui[j + 2] = 0; // ignored
+ gui[j + 3] = 0; // ignored
+ }
+ } break;
+ case ShaderLanguage::TYPE_UVEC3: {
+ Vector<int> iv = value;
+ int s = iv.size();
+ uint32_t *gui = (uint32_t *)data;
+
+ if (p_array_size <= 0) {
+ p_array_size = 1;
+ }
+ int count = 3 * p_array_size;
+
+ const int *r = iv.ptr();
+ for (int i = 0, j = 0; i < count; i += 3, j += 4) {
+ if (i < s) {
+ gui[j] = r[i];
+ gui[j + 1] = r[i + 1];
+ gui[j + 2] = r[i + 2];
+ } else {
+ gui[j] = 0;
+ gui[j + 1] = 0;
+ gui[j + 2] = 0;
+ }
+ gui[j + 3] = 0; // ignored
+ }
+ } break;
+ case ShaderLanguage::TYPE_UVEC4: {
+ Vector<int> iv = value;
+ int s = iv.size();
+ uint32_t *gui = (uint32_t *)data;
+
+ if (p_array_size <= 0) {
+ p_array_size = 1;
+ }
+ int count = 4 * p_array_size;
+
+ const int *r = iv.ptr();
+ for (int i = 0; i < count; i++) {
+ if (i < s) {
+ gui[i] = r[i];
+ gui[i + 1] = r[i + 1];
+ gui[i + 2] = r[i + 2];
+ gui[i + 3] = r[i + 3];
+ } else {
+ gui[i] = 0;
+ gui[i + 1] = 0;
+ gui[i + 2] = 0;
+ gui[i + 3] = 0;
+ }
+ }
+ } break;
+ case ShaderLanguage::TYPE_FLOAT: {
+ float *gui = (float *)data;
+
+ if (p_array_size > 0) {
+ const PackedFloat32Array &a = value;
+ int s = a.size();
+
+ for (int i = 0, j = 0; i < p_array_size; i++, j += 4) {
+ if (i < s) {
+ gui[j] = a[i];
+ } else {
+ gui[j] = 0;
+ }
+ gui[j + 1] = 0; // ignored
+ gui[j + 2] = 0; // ignored
+ gui[j + 3] = 0; // ignored
+ }
+ } else {
+ float v = value;
+ gui[0] = v;
+ }
+ } break;
+ case ShaderLanguage::TYPE_VEC2: {
+ float *gui = (float *)data;
+
+ if (p_array_size > 0) {
+ const PackedVector2Array &a = value;
+ int s = a.size();
+
+ for (int i = 0, j = 0; i < p_array_size; i++, j += 4) {
+ if (i < s) {
+ gui[j] = a[i].x;
+ gui[j + 1] = a[i].y;
+ } else {
+ gui[j] = 0;
+ gui[j + 1] = 0;
+ }
+ gui[j + 2] = 0; // ignored
+ gui[j + 3] = 0; // ignored
+ }
+ } else {
+ Vector2 v = value;
+ gui[0] = v.x;
+ gui[1] = v.y;
+ }
+ } break;
+ case ShaderLanguage::TYPE_VEC3: {
+ float *gui = (float *)data;
+
+ if (p_array_size > 0) {
+ const PackedVector3Array &a = value;
+ int s = a.size();
+
+ for (int i = 0, j = 0; i < p_array_size; i++, j += 4) {
+ if (i < s) {
+ gui[j] = a[i].x;
+ gui[j + 1] = a[i].y;
+ gui[j + 2] = a[i].z;
+ } else {
+ gui[j] = 0;
+ gui[j + 1] = 0;
+ gui[j + 2] = 0;
+ }
+ gui[j + 3] = 0; // ignored
+ }
+ } else {
+ Vector3 v = value;
+ gui[0] = v.x;
+ gui[1] = v.y;
+ gui[2] = v.z;
+ }
+ } break;
+ case ShaderLanguage::TYPE_VEC4: {
+ float *gui = (float *)data;
+
+ if (p_array_size > 0) {
+ if (value.get_type() == Variant::PACKED_COLOR_ARRAY) {
+ const PackedColorArray &a = value;
+ int s = a.size();
+
+ for (int i = 0, j = 0; i < p_array_size; i++, j += 4) {
+ if (i < s) {
+ Color color = a[i];
+ if (p_linear_color) {
+ color = color.to_linear();
+ }
+ gui[j] = color.r;
+ gui[j + 1] = color.g;
+ gui[j + 2] = color.b;
+ gui[j + 3] = color.a;
+ } else {
+ gui[j] = 0;
+ gui[j + 1] = 0;
+ gui[j + 2] = 0;
+ gui[j + 3] = 0;
+ }
+ }
+ } else {
+ const PackedFloat32Array &a = value;
+ int s = a.size();
+ int count = 4 * p_array_size;
+
+ for (int i = 0; i < count; i += 4) {
+ if (i + 3 < s) {
+ gui[i] = a[i];
+ gui[i + 1] = a[i + 1];
+ gui[i + 2] = a[i + 2];
+ gui[i + 3] = a[i + 3];
+ } else {
+ gui[i] = 0;
+ gui[i + 1] = 0;
+ gui[i + 2] = 0;
+ gui[i + 3] = 0;
+ }
+ }
+ }
+ } else {
+ if (value.get_type() == Variant::COLOR) {
+ Color v = value;
+
+ if (p_linear_color) {
+ v = v.to_linear();
+ }
+
+ gui[0] = v.r;
+ gui[1] = v.g;
+ gui[2] = v.b;
+ gui[3] = v.a;
+ } else if (value.get_type() == Variant::RECT2) {
+ Rect2 v = value;
+
+ gui[0] = v.position.x;
+ gui[1] = v.position.y;
+ gui[2] = v.size.x;
+ gui[3] = v.size.y;
+ } else if (value.get_type() == Variant::QUATERNION) {
+ Quaternion v = value;
+
+ gui[0] = v.x;
+ gui[1] = v.y;
+ gui[2] = v.z;
+ gui[3] = v.w;
+ } else {
+ Plane v = value;
+
+ gui[0] = v.normal.x;
+ gui[1] = v.normal.y;
+ gui[2] = v.normal.z;
+ gui[3] = v.d;
+ }
+ }
+ } break;
+ case ShaderLanguage::TYPE_MAT2: {
+ float *gui = (float *)data;
+
+ if (p_array_size > 0) {
+ const PackedFloat32Array &a = value;
+ int s = a.size();
+
+ for (int i = 0, j = 0; i < p_array_size * 4; i += 4, j += 8) {
+ if (i + 3 < s) {
+ gui[j] = a[i];
+ gui[j + 1] = a[i + 1];
+
+ gui[j + 4] = a[i + 2];
+ gui[j + 5] = a[i + 3];
+ } else {
+ gui[j] = 1;
+ gui[j + 1] = 0;
+
+ gui[j + 4] = 0;
+ gui[j + 5] = 1;
+ }
+ gui[j + 2] = 0; // ignored
+ gui[j + 3] = 0; // ignored
+ gui[j + 6] = 0; // ignored
+ gui[j + 7] = 0; // ignored
+ }
+ } else {
+ Transform2D v = value;
+
+ //in std140 members of mat2 are treated as vec4s
+ gui[0] = v.elements[0][0];
+ gui[1] = v.elements[0][1];
+ gui[2] = 0; // ignored
+ gui[3] = 0; // ignored
+
+ gui[4] = v.elements[1][0];
+ gui[5] = v.elements[1][1];
+ gui[6] = 0; // ignored
+ gui[7] = 0; // ignored
+ }
+ } break;
+ case ShaderLanguage::TYPE_MAT3: {
+ float *gui = (float *)data;
+
+ if (p_array_size > 0) {
+ const PackedFloat32Array &a = value;
+ int s = a.size();
+
+ for (int i = 0, j = 0; i < p_array_size * 9; i += 9, j += 12) {
+ if (i + 8 < s) {
+ gui[j] = a[i];
+ gui[j + 1] = a[i + 1];
+ gui[j + 2] = a[i + 2];
+
+ gui[j + 4] = a[i + 3];
+ gui[j + 5] = a[i + 4];
+ gui[j + 6] = a[i + 5];
+
+ gui[j + 8] = a[i + 6];
+ gui[j + 9] = a[i + 7];
+ gui[j + 10] = a[i + 8];
+ } else {
+ gui[j] = 1;
+ gui[j + 1] = 0;
+ gui[j + 2] = 0;
+
+ gui[j + 4] = 0;
+ gui[j + 5] = 1;
+ gui[j + 6] = 0;
+
+ gui[j + 8] = 0;
+ gui[j + 9] = 0;
+ gui[j + 10] = 1;
+ }
+ gui[j + 3] = 0; // ignored
+ gui[j + 7] = 0; // ignored
+ gui[j + 11] = 0; // ignored
+ }
+ } else {
+ Basis v = value;
+ gui[0] = v.elements[0][0];
+ gui[1] = v.elements[1][0];
+ gui[2] = v.elements[2][0];
+ gui[3] = 0; // ignored
+
+ gui[4] = v.elements[0][1];
+ gui[5] = v.elements[1][1];
+ gui[6] = v.elements[2][1];
+ gui[7] = 0; // ignored
+
+ gui[8] = v.elements[0][2];
+ gui[9] = v.elements[1][2];
+ gui[10] = v.elements[2][2];
+ gui[11] = 0; // ignored
+ }
+ } break;
+ case ShaderLanguage::TYPE_MAT4: {
+ float *gui = (float *)data;
+
+ if (p_array_size > 0) {
+ const PackedFloat32Array &a = value;
+ int s = a.size();
+
+ for (int i = 0; i < p_array_size * 16; i += 16) {
+ if (i + 15 < s) {
+ gui[i] = a[i];
+ gui[i + 1] = a[i + 1];
+ gui[i + 2] = a[i + 2];
+ gui[i + 3] = a[i + 3];
+
+ gui[i + 4] = a[i + 4];
+ gui[i + 5] = a[i + 5];
+ gui[i + 6] = a[i + 6];
+ gui[i + 7] = a[i + 7];
+
+ gui[i + 8] = a[i + 8];
+ gui[i + 9] = a[i + 9];
+ gui[i + 10] = a[i + 10];
+ gui[i + 11] = a[i + 11];
+
+ gui[i + 12] = a[i + 12];
+ gui[i + 13] = a[i + 13];
+ gui[i + 14] = a[i + 14];
+ gui[i + 15] = a[i + 15];
+ } else {
+ gui[i] = 1;
+ gui[i + 1] = 0;
+ gui[i + 2] = 0;
+ gui[i + 3] = 0;
+
+ gui[i + 4] = 0;
+ gui[i + 5] = 1;
+ gui[i + 6] = 0;
+ gui[i + 7] = 0;
+
+ gui[i + 8] = 0;
+ gui[i + 9] = 0;
+ gui[i + 10] = 1;
+ gui[i + 11] = 0;
+
+ gui[i + 12] = 0;
+ gui[i + 13] = 0;
+ gui[i + 14] = 0;
+ gui[i + 15] = 1;
+ }
+ }
+ } else {
+ Transform3D v = value;
+ gui[0] = v.basis.elements[0][0];
+ gui[1] = v.basis.elements[1][0];
+ gui[2] = v.basis.elements[2][0];
+ gui[3] = 0;
+
+ gui[4] = v.basis.elements[0][1];
+ gui[5] = v.basis.elements[1][1];
+ gui[6] = v.basis.elements[2][1];
+ gui[7] = 0;
+
+ gui[8] = v.basis.elements[0][2];
+ gui[9] = v.basis.elements[1][2];
+ gui[10] = v.basis.elements[2][2];
+ gui[11] = 0;
+
+ gui[12] = v.origin.x;
+ gui[13] = v.origin.y;
+ gui[14] = v.origin.z;
+ gui[15] = 1;
+ }
+ } break;
+ default: {
+ }
+ }
+}
+
+_FORCE_INLINE_ static void _fill_std140_ubo_value(ShaderLanguage::DataType type, const Vector<ShaderLanguage::ConstantNode::Value> &value, uint8_t *data) {
+ switch (type) {
+ case ShaderLanguage::TYPE_BOOL: {
+ uint32_t *gui = (uint32_t *)data;
+ *gui = value[0].boolean ? 1 : 0;
+ } break;
+ case ShaderLanguage::TYPE_BVEC2: {
+ uint32_t *gui = (uint32_t *)data;
+ gui[0] = value[0].boolean ? 1 : 0;
+ gui[1] = value[1].boolean ? 1 : 0;
+
+ } break;
+ case ShaderLanguage::TYPE_BVEC3: {
+ uint32_t *gui = (uint32_t *)data;
+ gui[0] = value[0].boolean ? 1 : 0;
+ gui[1] = value[1].boolean ? 1 : 0;
+ gui[2] = value[2].boolean ? 1 : 0;
+
+ } break;
+ case ShaderLanguage::TYPE_BVEC4: {
+ uint32_t *gui = (uint32_t *)data;
+ gui[0] = value[0].boolean ? 1 : 0;
+ gui[1] = value[1].boolean ? 1 : 0;
+ gui[2] = value[2].boolean ? 1 : 0;
+ gui[3] = value[3].boolean ? 1 : 0;
+
+ } break;
+ case ShaderLanguage::TYPE_INT: {
+ int32_t *gui = (int32_t *)data;
+ gui[0] = value[0].sint;
+
+ } break;
+ case ShaderLanguage::TYPE_IVEC2: {
+ int32_t *gui = (int32_t *)data;
+
+ for (int i = 0; i < 2; i++) {
+ gui[i] = value[i].sint;
+ }
+
+ } break;
+ case ShaderLanguage::TYPE_IVEC3: {
+ int32_t *gui = (int32_t *)data;
+
+ for (int i = 0; i < 3; i++) {
+ gui[i] = value[i].sint;
+ }
+
+ } break;
+ case ShaderLanguage::TYPE_IVEC4: {
+ int32_t *gui = (int32_t *)data;
+
+ for (int i = 0; i < 4; i++) {
+ gui[i] = value[i].sint;
+ }
+
+ } break;
+ case ShaderLanguage::TYPE_UINT: {
+ uint32_t *gui = (uint32_t *)data;
+ gui[0] = value[0].uint;
+
+ } break;
+ case ShaderLanguage::TYPE_UVEC2: {
+ int32_t *gui = (int32_t *)data;
+
+ for (int i = 0; i < 2; i++) {
+ gui[i] = value[i].uint;
+ }
+ } break;
+ case ShaderLanguage::TYPE_UVEC3: {
+ int32_t *gui = (int32_t *)data;
+
+ for (int i = 0; i < 3; i++) {
+ gui[i] = value[i].uint;
+ }
+
+ } break;
+ case ShaderLanguage::TYPE_UVEC4: {
+ int32_t *gui = (int32_t *)data;
+
+ for (int i = 0; i < 4; i++) {
+ gui[i] = value[i].uint;
+ }
+ } break;
+ case ShaderLanguage::TYPE_FLOAT: {
+ float *gui = (float *)data;
+ gui[0] = value[0].real;
+
+ } break;
+ case ShaderLanguage::TYPE_VEC2: {
+ float *gui = (float *)data;
+
+ for (int i = 0; i < 2; i++) {
+ gui[i] = value[i].real;
+ }
+
+ } break;
+ case ShaderLanguage::TYPE_VEC3: {
+ float *gui = (float *)data;
+
+ for (int i = 0; i < 3; i++) {
+ gui[i] = value[i].real;
+ }
+
+ } break;
+ case ShaderLanguage::TYPE_VEC4: {
+ float *gui = (float *)data;
+
+ for (int i = 0; i < 4; i++) {
+ gui[i] = value[i].real;
+ }
+ } break;
+ case ShaderLanguage::TYPE_MAT2: {
+ float *gui = (float *)data;
+
+ //in std140 members of mat2 are treated as vec4s
+ gui[0] = value[0].real;
+ gui[1] = value[1].real;
+ gui[2] = 0;
+ gui[3] = 0;
+ gui[4] = value[2].real;
+ gui[5] = value[3].real;
+ gui[6] = 0;
+ gui[7] = 0;
+ } break;
+ case ShaderLanguage::TYPE_MAT3: {
+ float *gui = (float *)data;
+
+ gui[0] = value[0].real;
+ gui[1] = value[1].real;
+ gui[2] = value[2].real;
+ gui[3] = 0;
+ gui[4] = value[3].real;
+ gui[5] = value[4].real;
+ gui[6] = value[5].real;
+ gui[7] = 0;
+ gui[8] = value[6].real;
+ gui[9] = value[7].real;
+ gui[10] = value[8].real;
+ gui[11] = 0;
+ } break;
+ case ShaderLanguage::TYPE_MAT4: {
+ float *gui = (float *)data;
+
+ for (int i = 0; i < 16; i++) {
+ gui[i] = value[i].real;
+ }
+ } break;
+ default: {
+ }
+ }
+}
+
+_FORCE_INLINE_ static void _fill_std140_ubo_empty(ShaderLanguage::DataType type, int p_array_size, uint8_t *data) {
+ if (p_array_size <= 0) {
+ p_array_size = 1;
+ }
+
+ switch (type) {
+ case ShaderLanguage::TYPE_BOOL:
+ case ShaderLanguage::TYPE_INT:
+ case ShaderLanguage::TYPE_UINT:
+ case ShaderLanguage::TYPE_FLOAT: {
+ memset(data, 0, 4 * p_array_size);
+ } break;
+ case ShaderLanguage::TYPE_BVEC2:
+ case ShaderLanguage::TYPE_IVEC2:
+ case ShaderLanguage::TYPE_UVEC2:
+ case ShaderLanguage::TYPE_VEC2: {
+ memset(data, 0, 8 * p_array_size);
+ } break;
+ case ShaderLanguage::TYPE_BVEC3:
+ case ShaderLanguage::TYPE_IVEC3:
+ case ShaderLanguage::TYPE_UVEC3:
+ case ShaderLanguage::TYPE_VEC3:
+ case ShaderLanguage::TYPE_BVEC4:
+ case ShaderLanguage::TYPE_IVEC4:
+ case ShaderLanguage::TYPE_UVEC4:
+ case ShaderLanguage::TYPE_VEC4: {
+ memset(data, 0, 16 * p_array_size);
+ } break;
+ case ShaderLanguage::TYPE_MAT2: {
+ memset(data, 0, 32 * p_array_size);
+ } break;
+ case ShaderLanguage::TYPE_MAT3: {
+ memset(data, 0, 48 * p_array_size);
+ } break;
+ case ShaderLanguage::TYPE_MAT4: {
+ memset(data, 0, 64 * p_array_size);
+ } break;
+
+ default: {
+ }
+ }
+}
+
+///////////////////////////////////////////////////////////////////////////
+// MaterialData
+
+void MaterialData::update_uniform_buffer(const Map<StringName, ShaderLanguage::ShaderNode::Uniform> &p_uniforms, const uint32_t *p_uniform_offsets, const Map<StringName, Variant> &p_parameters, uint8_t *p_buffer, uint32_t p_buffer_size, bool p_use_linear_color) {
+ MaterialStorage *material_storage = MaterialStorage::get_singleton();
+ bool uses_global_buffer = false;
+
+ for (const KeyValue<StringName, ShaderLanguage::ShaderNode::Uniform> &E : p_uniforms) {
+ if (E.value.order < 0) {
+ continue; // texture, does not go here
+ }
+
+ if (E.value.scope == ShaderLanguage::ShaderNode::Uniform::SCOPE_INSTANCE) {
+ continue; //instance uniforms don't appear in the buffer
+ }
+
+ if (E.value.scope == ShaderLanguage::ShaderNode::Uniform::SCOPE_GLOBAL) {
+ //this is a global variable, get the index to it
+ GlobalVariables::Variable *gv = material_storage->global_variables.variables.getptr(E.key);
+ uint32_t index = 0;
+ if (gv) {
+ index = gv->buffer_index;
+ } else {
+ WARN_PRINT("Shader uses global uniform '" + E.key + "', but it was removed at some point. Material will not display correctly.");
+ }
+
+ uint32_t offset = p_uniform_offsets[E.value.order];
+ uint32_t *intptr = (uint32_t *)&p_buffer[offset];
+ *intptr = index;
+ uses_global_buffer = true;
+ continue;
+ }
+
+ //regular uniform
+ uint32_t offset = p_uniform_offsets[E.value.order];
+#ifdef DEBUG_ENABLED
+ uint32_t size = 0U;
+ // The following code enforces a 16-byte alignment of uniform arrays.
+ if (E.value.array_size > 0) {
+ size = ShaderLanguage::get_datatype_size(E.value.type) * E.value.array_size;
+ int m = (16 * E.value.array_size);
+ if ((size % m) != 0U) {
+ size += m - (size % m);
+ }
+ } else {
+ size = ShaderLanguage::get_datatype_size(E.value.type);
+ }
+ ERR_CONTINUE(offset + size > p_buffer_size);
+#endif
+ uint8_t *data = &p_buffer[offset];
+ const Map<StringName, Variant>::Element *V = p_parameters.find(E.key);
+
+ if (V) {
+ //user provided
+ _fill_std140_variant_ubo_value(E.value.type, E.value.array_size, V->get(), data, p_use_linear_color);
+
+ } else if (E.value.default_value.size()) {
+ //default value
+ _fill_std140_ubo_value(E.value.type, E.value.default_value, data);
+ //value=E.value.default_value;
+ } else {
+ //zero because it was not provided
+ if (E.value.type == ShaderLanguage::TYPE_VEC4 && E.value.hint == ShaderLanguage::ShaderNode::Uniform::HINT_COLOR) {
+ //colors must be set as black, with alpha as 1.0
+ _fill_std140_variant_ubo_value(E.value.type, E.value.array_size, Color(0, 0, 0, 1), data, p_use_linear_color);
+ } else {
+ //else just zero it out
+ _fill_std140_ubo_empty(E.value.type, E.value.array_size, data);
+ }
+ }
+ }
+
+ if (uses_global_buffer != (global_buffer_E != nullptr)) {
+ if (uses_global_buffer) {
+ global_buffer_E = material_storage->global_variables.materials_using_buffer.push_back(self);
+ } else {
+ material_storage->global_variables.materials_using_buffer.erase(global_buffer_E);
+ global_buffer_E = nullptr;
+ }
+ }
+}
+
+MaterialData::~MaterialData() {
+ MaterialStorage *material_storage = MaterialStorage::get_singleton();
+
+ if (global_buffer_E) {
+ //unregister global buffers
+ material_storage->global_variables.materials_using_buffer.erase(global_buffer_E);
+ }
+
+ if (global_texture_E) {
+ //unregister global textures
+
+ for (const KeyValue<StringName, uint64_t> &E : used_global_textures) {
+ GlobalVariables::Variable *v = material_storage->global_variables.variables.getptr(E.key);
+ if (v) {
+ v->texture_materials.erase(self);
+ }
+ }
+ //unregister material from those using global textures
+ material_storage->global_variables.materials_using_texture.erase(global_texture_E);
+ }
+
+ if (uniform_buffer.is_valid()) {
+ RD::get_singleton()->free(uniform_buffer);
+ }
+}
+
+void MaterialData::update_textures(const Map<StringName, Variant> &p_parameters, const Map<StringName, Map<int, RID>> &p_default_textures, const Vector<ShaderCompiler::GeneratedCode::Texture> &p_texture_uniforms, RID *p_textures, bool p_use_linear_color) {
+ TextureStorage *texture_storage = TextureStorage::get_singleton();
+ MaterialStorage *material_storage = MaterialStorage::get_singleton();
+
+#ifdef TOOLS_ENABLED
+ Texture *roughness_detect_texture = nullptr;
+ RS::TextureDetectRoughnessChannel roughness_channel = RS::TEXTURE_DETECT_ROUGHNESS_R;
+ Texture *normal_detect_texture = nullptr;
+#endif
+
+ bool uses_global_textures = false;
+ global_textures_pass++;
+
+ for (int i = 0, k = 0; i < p_texture_uniforms.size(); i++) {
+ const StringName &uniform_name = p_texture_uniforms[i].name;
+ int uniform_array_size = p_texture_uniforms[i].array_size;
+
+ Vector<RID> textures;
+
+ if (p_texture_uniforms[i].global) {
+ uses_global_textures = true;
+
+ GlobalVariables::Variable *v = material_storage->global_variables.variables.getptr(uniform_name);
+ if (v) {
+ if (v->buffer_index >= 0) {
+ WARN_PRINT("Shader uses global uniform texture '" + String(uniform_name) + "', but it changed type and is no longer a texture!.");
+
+ } else {
+ Map<StringName, uint64_t>::Element *E = used_global_textures.find(uniform_name);
+ if (!E) {
+ E = used_global_textures.insert(uniform_name, global_textures_pass);
+ v->texture_materials.insert(self);
+ } else {
+ E->get() = global_textures_pass;
+ }
+
+ textures.push_back(v->override.get_type() != Variant::NIL ? v->override : v->value);
+ }
+
+ } else {
+ WARN_PRINT("Shader uses global uniform texture '" + String(uniform_name) + "', but it was removed at some point. Material will not display correctly.");
+ }
+ } else {
+ const Map<StringName, Variant>::Element *V = p_parameters.find(uniform_name);
+ if (V) {
+ if (V->get().is_array()) {
+ Array array = (Array)V->get();
+ if (uniform_array_size > 0) {
+ for (int j = 0; j < array.size(); j++) {
+ textures.push_back(array[j]);
+ }
+ } else {
+ if (array.size() > 0) {
+ textures.push_back(array[0]);
+ }
+ }
+ } else {
+ textures.push_back(V->get());
+ }
+ }
+
+ if (uniform_array_size > 0) {
+ if (textures.size() < uniform_array_size) {
+ const Map<StringName, Map<int, RID>>::Element *W = p_default_textures.find(uniform_name);
+ for (int j = textures.size(); j < uniform_array_size; j++) {
+ if (W && W->get().has(j)) {
+ textures.push_back(W->get()[j]);
+ } else {
+ textures.push_back(RID());
+ }
+ }
+ }
+ } else if (textures.is_empty()) {
+ const Map<StringName, Map<int, RID>>::Element *W = p_default_textures.find(uniform_name);
+ if (W && W->get().has(0)) {
+ textures.push_back(W->get()[0]);
+ }
+ }
+ }
+
+ RID rd_texture;
+
+ if (textures.is_empty()) {
+ //check default usage
+ switch (p_texture_uniforms[i].type) {
+ case ShaderLanguage::TYPE_ISAMPLER2D:
+ case ShaderLanguage::TYPE_USAMPLER2D:
+ case ShaderLanguage::TYPE_SAMPLER2D: {
+ switch (p_texture_uniforms[i].hint) {
+ case ShaderLanguage::ShaderNode::Uniform::HINT_BLACK:
+ case ShaderLanguage::ShaderNode::Uniform::HINT_BLACK_ALBEDO: {
+ rd_texture = texture_storage->texture_rd_get_default(DEFAULT_RD_TEXTURE_BLACK);
+ } break;
+ case ShaderLanguage::ShaderNode::Uniform::HINT_ANISOTROPY: {
+ rd_texture = texture_storage->texture_rd_get_default(DEFAULT_RD_TEXTURE_ANISO);
+ } break;
+ case ShaderLanguage::ShaderNode::Uniform::HINT_NORMAL: {
+ rd_texture = texture_storage->texture_rd_get_default(DEFAULT_RD_TEXTURE_NORMAL);
+ } break;
+ case ShaderLanguage::ShaderNode::Uniform::HINT_ROUGHNESS_NORMAL: {
+ rd_texture = texture_storage->texture_rd_get_default(DEFAULT_RD_TEXTURE_NORMAL);
+ } break;
+ default: {
+ rd_texture = texture_storage->texture_rd_get_default(DEFAULT_RD_TEXTURE_WHITE);
+ } break;
+ }
+ } break;
+
+ case ShaderLanguage::TYPE_SAMPLERCUBE: {
+ switch (p_texture_uniforms[i].hint) {
+ case ShaderLanguage::ShaderNode::Uniform::HINT_BLACK:
+ case ShaderLanguage::ShaderNode::Uniform::HINT_BLACK_ALBEDO: {
+ rd_texture = texture_storage->texture_rd_get_default(DEFAULT_RD_TEXTURE_CUBEMAP_BLACK);
+ } break;
+ default: {
+ rd_texture = texture_storage->texture_rd_get_default(DEFAULT_RD_TEXTURE_CUBEMAP_WHITE);
+ } break;
+ }
+ } break;
+ case ShaderLanguage::TYPE_SAMPLERCUBEARRAY: {
+ rd_texture = texture_storage->texture_rd_get_default(DEFAULT_RD_TEXTURE_CUBEMAP_ARRAY_BLACK);
+ } break;
+
+ case ShaderLanguage::TYPE_ISAMPLER3D:
+ case ShaderLanguage::TYPE_USAMPLER3D:
+ case ShaderLanguage::TYPE_SAMPLER3D: {
+ rd_texture = texture_storage->texture_rd_get_default(DEFAULT_RD_TEXTURE_3D_WHITE);
+ } break;
+
+ case ShaderLanguage::TYPE_ISAMPLER2DARRAY:
+ case ShaderLanguage::TYPE_USAMPLER2DARRAY:
+ case ShaderLanguage::TYPE_SAMPLER2DARRAY: {
+ rd_texture = texture_storage->texture_rd_get_default(DEFAULT_RD_TEXTURE_2D_ARRAY_WHITE);
+ } break;
+
+ default: {
+ }
+ }
+#ifdef TOOLS_ENABLED
+ if (roughness_detect_texture && normal_detect_texture && !normal_detect_texture->path.is_empty()) {
+ roughness_detect_texture->detect_roughness_callback(roughness_detect_texture->detect_roughness_callback_ud, normal_detect_texture->path, roughness_channel);
+ }
+#endif
+ if (uniform_array_size > 0) {
+ for (int j = 0; j < uniform_array_size; j++) {
+ p_textures[k++] = rd_texture;
+ }
+ } else {
+ p_textures[k++] = rd_texture;
+ }
+ } else {
+ bool srgb = p_use_linear_color && (p_texture_uniforms[i].hint == ShaderLanguage::ShaderNode::Uniform::HINT_ALBEDO || p_texture_uniforms[i].hint == ShaderLanguage::ShaderNode::Uniform::HINT_BLACK_ALBEDO);
+
+ for (int j = 0; j < textures.size(); j++) {
+ Texture *tex = TextureStorage::get_singleton()->get_texture(textures[j]);
+
+ if (tex) {
+ rd_texture = (srgb && tex->rd_texture_srgb.is_valid()) ? tex->rd_texture_srgb : tex->rd_texture;
+#ifdef TOOLS_ENABLED
+ if (tex->detect_3d_callback && p_use_linear_color) {
+ tex->detect_3d_callback(tex->detect_3d_callback_ud);
+ }
+ if (tex->detect_normal_callback && (p_texture_uniforms[i].hint == ShaderLanguage::ShaderNode::Uniform::HINT_NORMAL || p_texture_uniforms[i].hint == ShaderLanguage::ShaderNode::Uniform::HINT_ROUGHNESS_NORMAL)) {
+ if (p_texture_uniforms[i].hint == ShaderLanguage::ShaderNode::Uniform::HINT_ROUGHNESS_NORMAL) {
+ normal_detect_texture = tex;
+ }
+ tex->detect_normal_callback(tex->detect_normal_callback_ud);
+ }
+ if (tex->detect_roughness_callback && (p_texture_uniforms[i].hint >= ShaderLanguage::ShaderNode::Uniform::HINT_ROUGHNESS_R || p_texture_uniforms[i].hint <= ShaderLanguage::ShaderNode::Uniform::HINT_ROUGHNESS_GRAY)) {
+ //find the normal texture
+ roughness_detect_texture = tex;
+ roughness_channel = RS::TextureDetectRoughnessChannel(p_texture_uniforms[i].hint - ShaderLanguage::ShaderNode::Uniform::HINT_ROUGHNESS_R);
+ }
+#endif
+ }
+ if (rd_texture.is_null()) {
+ rd_texture = texture_storage->texture_rd_get_default(DEFAULT_RD_TEXTURE_WHITE);
+ }
+#ifdef TOOLS_ENABLED
+ if (roughness_detect_texture && normal_detect_texture && !normal_detect_texture->path.is_empty()) {
+ roughness_detect_texture->detect_roughness_callback(roughness_detect_texture->detect_roughness_callback_ud, normal_detect_texture->path, roughness_channel);
+ }
+#endif
+ p_textures[k++] = rd_texture;
+ }
+ }
+ }
+ {
+ //for textures no longer used, unregister them
+ List<Map<StringName, uint64_t>::Element *> to_delete;
+ for (Map<StringName, uint64_t>::Element *E = used_global_textures.front(); E; E = E->next()) {
+ if (E->get() != global_textures_pass) {
+ to_delete.push_back(E);
+
+ GlobalVariables::Variable *v = material_storage->global_variables.variables.getptr(E->key());
+ if (v) {
+ v->texture_materials.erase(self);
+ }
+ }
+ }
+
+ while (to_delete.front()) {
+ used_global_textures.erase(to_delete.front()->get());
+ to_delete.pop_front();
+ }
+ //handle registering/unregistering global textures
+ if (uses_global_textures != (global_texture_E != nullptr)) {
+ if (uses_global_textures) {
+ global_texture_E = material_storage->global_variables.materials_using_texture.push_back(self);
+ } else {
+ material_storage->global_variables.materials_using_texture.erase(global_texture_E);
+ global_texture_E = nullptr;
+ }
+ }
+ }
+}
+
+void MaterialData::free_parameters_uniform_set(RID p_uniform_set) {
+ if (p_uniform_set.is_valid() && RD::get_singleton()->uniform_set_is_valid(p_uniform_set)) {
+ RD::get_singleton()->uniform_set_set_invalidation_callback(p_uniform_set, nullptr, nullptr);
+ RD::get_singleton()->free(p_uniform_set);
+ }
+}
+
+bool MaterialData::update_parameters_uniform_set(const Map<StringName, Variant> &p_parameters, bool p_uniform_dirty, bool p_textures_dirty, const Map<StringName, ShaderLanguage::ShaderNode::Uniform> &p_uniforms, const uint32_t *p_uniform_offsets, const Vector<ShaderCompiler::GeneratedCode::Texture> &p_texture_uniforms, const Map<StringName, Map<int, RID>> &p_default_texture_params, uint32_t p_ubo_size, RID &uniform_set, RID p_shader, uint32_t p_shader_uniform_set, uint32_t p_barrier) {
+ if ((uint32_t)ubo_data.size() != p_ubo_size) {
+ p_uniform_dirty = true;
+ if (uniform_buffer.is_valid()) {
+ RD::get_singleton()->free(uniform_buffer);
+ uniform_buffer = RID();
+ }
+
+ ubo_data.resize(p_ubo_size);
+ if (ubo_data.size()) {
+ uniform_buffer = RD::get_singleton()->uniform_buffer_create(ubo_data.size());
+ memset(ubo_data.ptrw(), 0, ubo_data.size()); //clear
+ }
+
+ //clear previous uniform set
+ if (uniform_set.is_valid() && RD::get_singleton()->uniform_set_is_valid(uniform_set)) {
+ RD::get_singleton()->uniform_set_set_invalidation_callback(uniform_set, nullptr, nullptr);
+ RD::get_singleton()->free(uniform_set);
+ uniform_set = RID();
+ }
+ }
+
+ //check whether buffer changed
+ if (p_uniform_dirty && ubo_data.size()) {
+ update_uniform_buffer(p_uniforms, p_uniform_offsets, p_parameters, ubo_data.ptrw(), ubo_data.size(), true);
+ RD::get_singleton()->buffer_update(uniform_buffer, 0, ubo_data.size(), ubo_data.ptrw(), p_barrier);
+ }
+
+ uint32_t tex_uniform_count = 0U;
+ for (int i = 0; i < p_texture_uniforms.size(); i++) {
+ tex_uniform_count += uint32_t(p_texture_uniforms[i].array_size > 0 ? p_texture_uniforms[i].array_size : 1);
+ }
+
+ if ((uint32_t)texture_cache.size() != tex_uniform_count || p_textures_dirty) {
+ texture_cache.resize(tex_uniform_count);
+ p_textures_dirty = true;
+
+ //clear previous uniform set
+ if (uniform_set.is_valid() && RD::get_singleton()->uniform_set_is_valid(uniform_set)) {
+ RD::get_singleton()->uniform_set_set_invalidation_callback(uniform_set, nullptr, nullptr);
+ RD::get_singleton()->free(uniform_set);
+ uniform_set = RID();
+ }
+ }
+
+ if (p_textures_dirty && tex_uniform_count) {
+ update_textures(p_parameters, p_default_texture_params, p_texture_uniforms, texture_cache.ptrw(), true);
+ }
+
+ if (p_ubo_size == 0 && p_texture_uniforms.size() == 0) {
+ // This material does not require an uniform set, so don't create it.
+ return false;
+ }
+
+ if (!p_textures_dirty && uniform_set.is_valid() && RD::get_singleton()->uniform_set_is_valid(uniform_set)) {
+ //no reason to update uniform set, only UBO (or nothing) was needed to update
+ return false;
+ }
+
+ Vector<RD::Uniform> uniforms;
+
+ {
+ if (p_ubo_size) {
+ RD::Uniform u;
+ u.uniform_type = RD::UNIFORM_TYPE_UNIFORM_BUFFER;
+ u.binding = 0;
+ u.append_id(uniform_buffer);
+ uniforms.push_back(u);
+ }
+
+ const RID *textures = texture_cache.ptrw();
+ for (int i = 0, k = 0; i < p_texture_uniforms.size(); i++) {
+ const int array_size = p_texture_uniforms[i].array_size;
+
+ RD::Uniform u;
+ u.uniform_type = RD::UNIFORM_TYPE_TEXTURE;
+ u.binding = 1 + k;
+ if (array_size > 0) {
+ for (int j = 0; j < array_size; j++) {
+ u.append_id(textures[k++]);
+ }
+ } else {
+ u.append_id(textures[k++]);
+ }
+ uniforms.push_back(u);
+ }
+ }
+
+ uniform_set = RD::get_singleton()->uniform_set_create(uniforms, p_shader, p_shader_uniform_set);
+
+ RD::get_singleton()->uniform_set_set_invalidation_callback(uniform_set, MaterialStorage::_material_uniform_set_erased, &self);
+
+ return true;
+}
+
+///////////////////////////////////////////////////////////////////////////
+// MaterialStorage
+
+MaterialStorage *MaterialStorage::singleton = nullptr;
+
+MaterialStorage *MaterialStorage::get_singleton() {
+ return singleton;
+}
+
+MaterialStorage::MaterialStorage() {
+ singleton = this;
+
+ for (int i = 0; i < SHADER_TYPE_MAX; i++) {
+ shader_data_request_func[i] = nullptr;
+ }
+
+ static_assert(sizeof(GlobalVariables::Value) == 16);
+
+ global_variables.buffer_size = MAX(4096, (int)GLOBAL_GET("rendering/limits/global_shader_variables/buffer_size"));
+ global_variables.buffer_values = memnew_arr(GlobalVariables::Value, global_variables.buffer_size);
+ memset(global_variables.buffer_values, 0, sizeof(GlobalVariables::Value) * global_variables.buffer_size);
+ global_variables.buffer_usage = memnew_arr(GlobalVariables::ValueUsage, global_variables.buffer_size);
+ global_variables.buffer_dirty_regions = memnew_arr(bool, global_variables.buffer_size / GlobalVariables::BUFFER_DIRTY_REGION_SIZE);
+ memset(global_variables.buffer_dirty_regions, 0, sizeof(bool) * global_variables.buffer_size / GlobalVariables::BUFFER_DIRTY_REGION_SIZE);
+ global_variables.buffer = RD::get_singleton()->storage_buffer_create(sizeof(GlobalVariables::Value) * global_variables.buffer_size);
+}
+
+MaterialStorage::~MaterialStorage() {
+ memdelete_arr(global_variables.buffer_values);
+ memdelete_arr(global_variables.buffer_usage);
+ memdelete_arr(global_variables.buffer_dirty_regions);
+ RD::get_singleton()->free(global_variables.buffer);
+
+ singleton = nullptr;
+}
+
+/* GLOBAL VARIABLE API */
+
+int32_t MaterialStorage::_global_variable_allocate(uint32_t p_elements) {
+ int32_t idx = 0;
+ while (idx + p_elements <= global_variables.buffer_size) {
+ if (global_variables.buffer_usage[idx].elements == 0) {
+ bool valid = true;
+ for (uint32_t i = 1; i < p_elements; i++) {
+ if (global_variables.buffer_usage[idx + i].elements > 0) {
+ valid = false;
+ idx += i + global_variables.buffer_usage[idx + i].elements;
+ break;
+ }
+ }
+
+ if (!valid) {
+ continue; //if not valid, idx is in new position
+ }
+
+ return idx;
+ } else {
+ idx += global_variables.buffer_usage[idx].elements;
+ }
+ }
+
+ return -1;
+}
+
+void MaterialStorage::_global_variable_store_in_buffer(int32_t p_index, RS::GlobalVariableType p_type, const Variant &p_value) {
+ switch (p_type) {
+ case RS::GLOBAL_VAR_TYPE_BOOL: {
+ GlobalVariables::Value &bv = global_variables.buffer_values[p_index];
+ bool b = p_value;
+ bv.x = b ? 1.0 : 0.0;
+ bv.y = 0.0;
+ bv.z = 0.0;
+ bv.w = 0.0;
+
+ } break;
+ case RS::GLOBAL_VAR_TYPE_BVEC2: {
+ GlobalVariables::Value &bv = global_variables.buffer_values[p_index];
+ uint32_t bvec = p_value;
+ bv.x = (bvec & 1) ? 1.0 : 0.0;
+ bv.y = (bvec & 2) ? 1.0 : 0.0;
+ bv.z = 0.0;
+ bv.w = 0.0;
+ } break;
+ case RS::GLOBAL_VAR_TYPE_BVEC3: {
+ GlobalVariables::Value &bv = global_variables.buffer_values[p_index];
+ uint32_t bvec = p_value;
+ bv.x = (bvec & 1) ? 1.0 : 0.0;
+ bv.y = (bvec & 2) ? 1.0 : 0.0;
+ bv.z = (bvec & 4) ? 1.0 : 0.0;
+ bv.w = 0.0;
+ } break;
+ case RS::GLOBAL_VAR_TYPE_BVEC4: {
+ GlobalVariables::Value &bv = global_variables.buffer_values[p_index];
+ uint32_t bvec = p_value;
+ bv.x = (bvec & 1) ? 1.0 : 0.0;
+ bv.y = (bvec & 2) ? 1.0 : 0.0;
+ bv.z = (bvec & 4) ? 1.0 : 0.0;
+ bv.w = (bvec & 8) ? 1.0 : 0.0;
+ } break;
+ case RS::GLOBAL_VAR_TYPE_INT: {
+ GlobalVariables::ValueInt &bv = *(GlobalVariables::ValueInt *)&global_variables.buffer_values[p_index];
+ int32_t v = p_value;
+ bv.x = v;
+ bv.y = 0;
+ bv.z = 0;
+ bv.w = 0;
+ } break;
+ case RS::GLOBAL_VAR_TYPE_IVEC2: {
+ GlobalVariables::ValueInt &bv = *(GlobalVariables::ValueInt *)&global_variables.buffer_values[p_index];
+ Vector2i v = p_value;
+ bv.x = v.x;
+ bv.y = v.y;
+ bv.z = 0;
+ bv.w = 0;
+ } break;
+ case RS::GLOBAL_VAR_TYPE_IVEC3: {
+ GlobalVariables::ValueInt &bv = *(GlobalVariables::ValueInt *)&global_variables.buffer_values[p_index];
+ Vector3i v = p_value;
+ bv.x = v.x;
+ bv.y = v.y;
+ bv.z = v.z;
+ bv.w = 0;
+ } break;
+ case RS::GLOBAL_VAR_TYPE_IVEC4: {
+ GlobalVariables::ValueInt &bv = *(GlobalVariables::ValueInt *)&global_variables.buffer_values[p_index];
+ Vector<int32_t> v = p_value;
+ bv.x = v.size() >= 1 ? v[0] : 0;
+ bv.y = v.size() >= 2 ? v[1] : 0;
+ bv.z = v.size() >= 3 ? v[2] : 0;
+ bv.w = v.size() >= 4 ? v[3] : 0;
+ } break;
+ case RS::GLOBAL_VAR_TYPE_RECT2I: {
+ GlobalVariables::ValueInt &bv = *(GlobalVariables::ValueInt *)&global_variables.buffer_values[p_index];
+ Rect2i v = p_value;
+ bv.x = v.position.x;
+ bv.y = v.position.y;
+ bv.z = v.size.x;
+ bv.w = v.size.y;
+ } break;
+ case RS::GLOBAL_VAR_TYPE_UINT: {
+ GlobalVariables::ValueUInt &bv = *(GlobalVariables::ValueUInt *)&global_variables.buffer_values[p_index];
+ uint32_t v = p_value;
+ bv.x = v;
+ bv.y = 0;
+ bv.z = 0;
+ bv.w = 0;
+ } break;
+ case RS::GLOBAL_VAR_TYPE_UVEC2: {
+ GlobalVariables::ValueUInt &bv = *(GlobalVariables::ValueUInt *)&global_variables.buffer_values[p_index];
+ Vector2i v = p_value;
+ bv.x = v.x;
+ bv.y = v.y;
+ bv.z = 0;
+ bv.w = 0;
+ } break;
+ case RS::GLOBAL_VAR_TYPE_UVEC3: {
+ GlobalVariables::ValueUInt &bv = *(GlobalVariables::ValueUInt *)&global_variables.buffer_values[p_index];
+ Vector3i v = p_value;
+ bv.x = v.x;
+ bv.y = v.y;
+ bv.z = v.z;
+ bv.w = 0;
+ } break;
+ case RS::GLOBAL_VAR_TYPE_UVEC4: {
+ GlobalVariables::ValueUInt &bv = *(GlobalVariables::ValueUInt *)&global_variables.buffer_values[p_index];
+ Vector<int32_t> v = p_value;
+ bv.x = v.size() >= 1 ? v[0] : 0;
+ bv.y = v.size() >= 2 ? v[1] : 0;
+ bv.z = v.size() >= 3 ? v[2] : 0;
+ bv.w = v.size() >= 4 ? v[3] : 0;
+ } break;
+ case RS::GLOBAL_VAR_TYPE_FLOAT: {
+ GlobalVariables::Value &bv = global_variables.buffer_values[p_index];
+ float v = p_value;
+ bv.x = v;
+ bv.y = 0;
+ bv.z = 0;
+ bv.w = 0;
+ } break;
+ case RS::GLOBAL_VAR_TYPE_VEC2: {
+ GlobalVariables::Value &bv = global_variables.buffer_values[p_index];
+ Vector2 v = p_value;
+ bv.x = v.x;
+ bv.y = v.y;
+ bv.z = 0;
+ bv.w = 0;
+ } break;
+ case RS::GLOBAL_VAR_TYPE_VEC3: {
+ GlobalVariables::Value &bv = global_variables.buffer_values[p_index];
+ Vector3 v = p_value;
+ bv.x = v.x;
+ bv.y = v.y;
+ bv.z = v.z;
+ bv.w = 0;
+ } break;
+ case RS::GLOBAL_VAR_TYPE_VEC4: {
+ GlobalVariables::Value &bv = global_variables.buffer_values[p_index];
+ Plane v = p_value;
+ bv.x = v.normal.x;
+ bv.y = v.normal.y;
+ bv.z = v.normal.z;
+ bv.w = v.d;
+ } break;
+ case RS::GLOBAL_VAR_TYPE_COLOR: {
+ GlobalVariables::Value &bv = global_variables.buffer_values[p_index];
+ Color v = p_value;
+ bv.x = v.r;
+ bv.y = v.g;
+ bv.z = v.b;
+ bv.w = v.a;
+
+ GlobalVariables::Value &bv_linear = global_variables.buffer_values[p_index + 1];
+ v = v.to_linear();
+ bv_linear.x = v.r;
+ bv_linear.y = v.g;
+ bv_linear.z = v.b;
+ bv_linear.w = v.a;
+
+ } break;
+ case RS::GLOBAL_VAR_TYPE_RECT2: {
+ GlobalVariables::Value &bv = global_variables.buffer_values[p_index];
+ Rect2 v = p_value;
+ bv.x = v.position.x;
+ bv.y = v.position.y;
+ bv.z = v.size.x;
+ bv.w = v.size.y;
+ } break;
+ case RS::GLOBAL_VAR_TYPE_MAT2: {
+ GlobalVariables::Value *bv = &global_variables.buffer_values[p_index];
+ Vector<float> m2 = p_value;
+ if (m2.size() < 4) {
+ m2.resize(4);
+ }
+ bv[0].x = m2[0];
+ bv[0].y = m2[1];
+ bv[0].z = 0;
+ bv[0].w = 0;
+
+ bv[1].x = m2[2];
+ bv[1].y = m2[3];
+ bv[1].z = 0;
+ bv[1].w = 0;
+
+ } break;
+ case RS::GLOBAL_VAR_TYPE_MAT3: {
+ GlobalVariables::Value *bv = &global_variables.buffer_values[p_index];
+ Basis v = p_value;
+ bv[0].x = v.elements[0][0];
+ bv[0].y = v.elements[1][0];
+ bv[0].z = v.elements[2][0];
+ bv[0].w = 0;
+
+ bv[1].x = v.elements[0][1];
+ bv[1].y = v.elements[1][1];
+ bv[1].z = v.elements[2][1];
+ bv[1].w = 0;
+
+ bv[2].x = v.elements[0][2];
+ bv[2].y = v.elements[1][2];
+ bv[2].z = v.elements[2][2];
+ bv[2].w = 0;
+
+ } break;
+ case RS::GLOBAL_VAR_TYPE_MAT4: {
+ GlobalVariables::Value *bv = &global_variables.buffer_values[p_index];
+
+ Vector<float> m2 = p_value;
+ if (m2.size() < 16) {
+ m2.resize(16);
+ }
+
+ bv[0].x = m2[0];
+ bv[0].y = m2[1];
+ bv[0].z = m2[2];
+ bv[0].w = m2[3];
+
+ bv[1].x = m2[4];
+ bv[1].y = m2[5];
+ bv[1].z = m2[6];
+ bv[1].w = m2[7];
+
+ bv[2].x = m2[8];
+ bv[2].y = m2[9];
+ bv[2].z = m2[10];
+ bv[2].w = m2[11];
+
+ bv[3].x = m2[12];
+ bv[3].y = m2[13];
+ bv[3].z = m2[14];
+ bv[3].w = m2[15];
+
+ } break;
+ case RS::GLOBAL_VAR_TYPE_TRANSFORM_2D: {
+ GlobalVariables::Value *bv = &global_variables.buffer_values[p_index];
+ Transform2D v = p_value;
+ bv[0].x = v.elements[0][0];
+ bv[0].y = v.elements[0][1];
+ bv[0].z = 0;
+ bv[0].w = 0;
+
+ bv[1].x = v.elements[1][0];
+ bv[1].y = v.elements[1][1];
+ bv[1].z = 0;
+ bv[1].w = 0;
+
+ bv[2].x = v.elements[2][0];
+ bv[2].y = v.elements[2][1];
+ bv[2].z = 1;
+ bv[2].w = 0;
+
+ } break;
+ case RS::GLOBAL_VAR_TYPE_TRANSFORM: {
+ GlobalVariables::Value *bv = &global_variables.buffer_values[p_index];
+ Transform3D v = p_value;
+ bv[0].x = v.basis.elements[0][0];
+ bv[0].y = v.basis.elements[1][0];
+ bv[0].z = v.basis.elements[2][0];
+ bv[0].w = 0;
+
+ bv[1].x = v.basis.elements[0][1];
+ bv[1].y = v.basis.elements[1][1];
+ bv[1].z = v.basis.elements[2][1];
+ bv[1].w = 0;
+
+ bv[2].x = v.basis.elements[0][2];
+ bv[2].y = v.basis.elements[1][2];
+ bv[2].z = v.basis.elements[2][2];
+ bv[2].w = 0;
+
+ bv[3].x = v.origin.x;
+ bv[3].y = v.origin.y;
+ bv[3].z = v.origin.z;
+ bv[3].w = 1;
+
+ } break;
+ default: {
+ ERR_FAIL();
+ }
+ }
+}
+
+void MaterialStorage::_global_variable_mark_buffer_dirty(int32_t p_index, int32_t p_elements) {
+ int32_t prev_chunk = -1;
+
+ for (int32_t i = 0; i < p_elements; i++) {
+ int32_t chunk = (p_index + i) / GlobalVariables::BUFFER_DIRTY_REGION_SIZE;
+ if (chunk != prev_chunk) {
+ if (!global_variables.buffer_dirty_regions[chunk]) {
+ global_variables.buffer_dirty_regions[chunk] = true;
+ global_variables.buffer_dirty_region_count++;
+ }
+ }
+
+ prev_chunk = chunk;
+ }
+}
+
+void MaterialStorage::global_variable_add(const StringName &p_name, RS::GlobalVariableType p_type, const Variant &p_value) {
+ ERR_FAIL_COND(global_variables.variables.has(p_name));
+ GlobalVariables::Variable gv;
+ gv.type = p_type;
+ gv.value = p_value;
+ gv.buffer_index = -1;
+
+ if (p_type >= RS::GLOBAL_VAR_TYPE_SAMPLER2D) {
+ //is texture
+ global_variables.must_update_texture_materials = true; //normally there are none
+ } else {
+ gv.buffer_elements = 1;
+ if (p_type == RS::GLOBAL_VAR_TYPE_COLOR || p_type == RS::GLOBAL_VAR_TYPE_MAT2) {
+ //color needs to elements to store srgb and linear
+ gv.buffer_elements = 2;
+ }
+ if (p_type == RS::GLOBAL_VAR_TYPE_MAT3 || p_type == RS::GLOBAL_VAR_TYPE_TRANSFORM_2D) {
+ //color needs to elements to store srgb and linear
+ gv.buffer_elements = 3;
+ }
+ if (p_type == RS::GLOBAL_VAR_TYPE_MAT4 || p_type == RS::GLOBAL_VAR_TYPE_TRANSFORM) {
+ //color needs to elements to store srgb and linear
+ gv.buffer_elements = 4;
+ }
+
+ //is vector, allocate in buffer and update index
+ gv.buffer_index = _global_variable_allocate(gv.buffer_elements);
+ ERR_FAIL_COND_MSG(gv.buffer_index < 0, vformat("Failed allocating global variable '%s' out of buffer memory. Consider increasing it in the Project Settings.", String(p_name)));
+ global_variables.buffer_usage[gv.buffer_index].elements = gv.buffer_elements;
+ _global_variable_store_in_buffer(gv.buffer_index, gv.type, gv.value);
+ _global_variable_mark_buffer_dirty(gv.buffer_index, gv.buffer_elements);
+
+ global_variables.must_update_buffer_materials = true; //normally there are none
+ }
+
+ global_variables.variables[p_name] = gv;
+}
+
+void MaterialStorage::global_variable_remove(const StringName &p_name) {
+ if (!global_variables.variables.has(p_name)) {
+ return;
+ }
+ GlobalVariables::Variable &gv = global_variables.variables[p_name];
+
+ if (gv.buffer_index >= 0) {
+ global_variables.buffer_usage[gv.buffer_index].elements = 0;
+ global_variables.must_update_buffer_materials = true;
+ } else {
+ global_variables.must_update_texture_materials = true;
+ }
+
+ global_variables.variables.erase(p_name);
+}
+
+Vector<StringName> MaterialStorage::global_variable_get_list() const {
+ if (!Engine::get_singleton()->is_editor_hint()) {
+ ERR_FAIL_V_MSG(Vector<StringName>(), "This function should never be used outside the editor, it can severely damage performance.");
+ }
+
+ const StringName *K = nullptr;
+ Vector<StringName> names;
+ while ((K = global_variables.variables.next(K))) {
+ names.push_back(*K);
+ }
+ names.sort_custom<StringName::AlphCompare>();
+ return names;
+}
+
+void MaterialStorage::global_variable_set(const StringName &p_name, const Variant &p_value) {
+ ERR_FAIL_COND(!global_variables.variables.has(p_name));
+ GlobalVariables::Variable &gv = global_variables.variables[p_name];
+ gv.value = p_value;
+ if (gv.override.get_type() == Variant::NIL) {
+ if (gv.buffer_index >= 0) {
+ //buffer
+ _global_variable_store_in_buffer(gv.buffer_index, gv.type, gv.value);
+ _global_variable_mark_buffer_dirty(gv.buffer_index, gv.buffer_elements);
+ } else {
+ //texture
+ MaterialStorage *material_storage = MaterialStorage::get_singleton();
+ for (Set<RID>::Element *E = gv.texture_materials.front(); E; E = E->next()) {
+ Material *material = material_storage->get_material(E->get());
+ ERR_CONTINUE(!material);
+ material_storage->_material_queue_update(material, false, true);
+ }
+ }
+ }
+}
+
+void MaterialStorage::global_variable_set_override(const StringName &p_name, const Variant &p_value) {
+ if (!global_variables.variables.has(p_name)) {
+ return; //variable may not exist
+ }
+
+ ERR_FAIL_COND(p_value.get_type() == Variant::OBJECT);
+
+ GlobalVariables::Variable &gv = global_variables.variables[p_name];
+
+ gv.override = p_value;
+
+ if (gv.buffer_index >= 0) {
+ //buffer
+ if (gv.override.get_type() == Variant::NIL) {
+ _global_variable_store_in_buffer(gv.buffer_index, gv.type, gv.value);
+ } else {
+ _global_variable_store_in_buffer(gv.buffer_index, gv.type, gv.override);
+ }
+
+ _global_variable_mark_buffer_dirty(gv.buffer_index, gv.buffer_elements);
+ } else {
+ //texture
+ MaterialStorage *material_storage = MaterialStorage::get_singleton();
+ for (Set<RID>::Element *E = gv.texture_materials.front(); E; E = E->next()) {
+ Material *material = material_storage->get_material(E->get());
+ ERR_CONTINUE(!material);
+ material_storage->_material_queue_update(material, false, true);
+ }
+ }
+}
+
+Variant MaterialStorage::global_variable_get(const StringName &p_name) const {
+ if (!Engine::get_singleton()->is_editor_hint()) {
+ ERR_FAIL_V_MSG(Variant(), "This function should never be used outside the editor, it can severely damage performance.");
+ }
+
+ if (!global_variables.variables.has(p_name)) {
+ return Variant();
+ }
+
+ return global_variables.variables[p_name].value;
+}
+
+RS::GlobalVariableType MaterialStorage::global_variable_get_type_internal(const StringName &p_name) const {
+ if (!global_variables.variables.has(p_name)) {
+ return RS::GLOBAL_VAR_TYPE_MAX;
+ }
+
+ return global_variables.variables[p_name].type;
+}
+
+RS::GlobalVariableType MaterialStorage::global_variable_get_type(const StringName &p_name) const {
+ if (!Engine::get_singleton()->is_editor_hint()) {
+ ERR_FAIL_V_MSG(RS::GLOBAL_VAR_TYPE_MAX, "This function should never be used outside the editor, it can severely damage performance.");
+ }
+
+ return global_variable_get_type_internal(p_name);
+}
+
+void MaterialStorage::global_variables_load_settings(bool p_load_textures) {
+ List<PropertyInfo> settings;
+ ProjectSettings::get_singleton()->get_property_list(&settings);
+
+ for (const PropertyInfo &E : settings) {
+ if (E.name.begins_with("shader_globals/")) {
+ StringName name = E.name.get_slice("/", 1);
+ Dictionary d = ProjectSettings::get_singleton()->get(E.name);
+
+ ERR_CONTINUE(!d.has("type"));
+ ERR_CONTINUE(!d.has("value"));
+
+ String type = d["type"];
+
+ static const char *global_var_type_names[RS::GLOBAL_VAR_TYPE_MAX] = {
+ "bool",
+ "bvec2",
+ "bvec3",
+ "bvec4",
+ "int",
+ "ivec2",
+ "ivec3",
+ "ivec4",
+ "rect2i",
+ "uint",
+ "uvec2",
+ "uvec3",
+ "uvec4",
+ "float",
+ "vec2",
+ "vec3",
+ "vec4",
+ "color",
+ "rect2",
+ "mat2",
+ "mat3",
+ "mat4",
+ "transform_2d",
+ "transform",
+ "sampler2D",
+ "sampler2DArray",
+ "sampler3D",
+ "samplerCube",
+ };
+
+ RS::GlobalVariableType gvtype = RS::GLOBAL_VAR_TYPE_MAX;
+
+ for (int i = 0; i < RS::GLOBAL_VAR_TYPE_MAX; i++) {
+ if (global_var_type_names[i] == type) {
+ gvtype = RS::GlobalVariableType(i);
+ break;
+ }
+ }
+
+ ERR_CONTINUE(gvtype == RS::GLOBAL_VAR_TYPE_MAX); //type invalid
+
+ Variant value = d["value"];
+
+ if (gvtype >= RS::GLOBAL_VAR_TYPE_SAMPLER2D) {
+ //textire
+ if (!p_load_textures) {
+ value = RID();
+ continue;
+ }
+
+ String path = value;
+ RES resource = ResourceLoader::load(path);
+ ERR_CONTINUE(resource.is_null());
+ value = resource;
+ }
+
+ if (global_variables.variables.has(name)) {
+ //has it, update it
+ global_variable_set(name, value);
+ } else {
+ global_variable_add(name, gvtype, value);
+ }
+ }
+ }
+}
+
+void MaterialStorage::global_variables_clear() {
+ global_variables.variables.clear(); //not right but for now enough
+}
+
+RID MaterialStorage::global_variables_get_storage_buffer() const {
+ return global_variables.buffer;
+}
+
+int32_t MaterialStorage::global_variables_instance_allocate(RID p_instance) {
+ ERR_FAIL_COND_V(global_variables.instance_buffer_pos.has(p_instance), -1);
+ int32_t pos = _global_variable_allocate(ShaderLanguage::MAX_INSTANCE_UNIFORM_INDICES);
+ global_variables.instance_buffer_pos[p_instance] = pos; //save anyway
+ ERR_FAIL_COND_V_MSG(pos < 0, -1, "Too many instances using shader instance variables. Increase buffer size in Project Settings.");
+ global_variables.buffer_usage[pos].elements = ShaderLanguage::MAX_INSTANCE_UNIFORM_INDICES;
+ return pos;
+}
+
+void MaterialStorage::global_variables_instance_free(RID p_instance) {
+ ERR_FAIL_COND(!global_variables.instance_buffer_pos.has(p_instance));
+ int32_t pos = global_variables.instance_buffer_pos[p_instance];
+ if (pos >= 0) {
+ global_variables.buffer_usage[pos].elements = 0;
+ }
+ global_variables.instance_buffer_pos.erase(p_instance);
+}
+
+void MaterialStorage::global_variables_instance_update(RID p_instance, int p_index, const Variant &p_value) {
+ if (!global_variables.instance_buffer_pos.has(p_instance)) {
+ return; //just not allocated, ignore
+ }
+ int32_t pos = global_variables.instance_buffer_pos[p_instance];
+
+ if (pos < 0) {
+ return; //again, not allocated, ignore
+ }
+ ERR_FAIL_INDEX(p_index, ShaderLanguage::MAX_INSTANCE_UNIFORM_INDICES);
+ ERR_FAIL_COND_MSG(p_value.get_type() > Variant::COLOR, "Unsupported variant type for instance parameter: " + Variant::get_type_name(p_value.get_type())); //anything greater not supported
+
+ ShaderLanguage::DataType datatype_from_value[Variant::COLOR + 1] = {
+ ShaderLanguage::TYPE_MAX, //nil
+ ShaderLanguage::TYPE_BOOL, //bool
+ ShaderLanguage::TYPE_INT, //int
+ ShaderLanguage::TYPE_FLOAT, //float
+ ShaderLanguage::TYPE_MAX, //string
+ ShaderLanguage::TYPE_VEC2, //vec2
+ ShaderLanguage::TYPE_IVEC2, //vec2i
+ ShaderLanguage::TYPE_VEC4, //rect2
+ ShaderLanguage::TYPE_IVEC4, //rect2i
+ ShaderLanguage::TYPE_VEC3, // vec3
+ ShaderLanguage::TYPE_IVEC3, //vec3i
+ ShaderLanguage::TYPE_MAX, //xform2d not supported here
+ ShaderLanguage::TYPE_VEC4, //plane
+ ShaderLanguage::TYPE_VEC4, //quat
+ ShaderLanguage::TYPE_MAX, //aabb not supported here
+ ShaderLanguage::TYPE_MAX, //basis not supported here
+ ShaderLanguage::TYPE_MAX, //xform not supported here
+ ShaderLanguage::TYPE_VEC4 //color
+ };
+
+ ShaderLanguage::DataType datatype = datatype_from_value[p_value.get_type()];
+
+ ERR_FAIL_COND_MSG(datatype == ShaderLanguage::TYPE_MAX, "Unsupported variant type for instance parameter: " + Variant::get_type_name(p_value.get_type())); //anything greater not supported
+
+ pos += p_index;
+
+ _fill_std140_variant_ubo_value(datatype, 0, p_value, (uint8_t *)&global_variables.buffer_values[pos], true); //instances always use linear color in this renderer
+ _global_variable_mark_buffer_dirty(pos, 1);
+}
+
+void MaterialStorage::_update_global_variables() {
+ MaterialStorage *material_storage = MaterialStorage::get_singleton();
+ if (global_variables.buffer_dirty_region_count > 0) {
+ uint32_t total_regions = global_variables.buffer_size / GlobalVariables::BUFFER_DIRTY_REGION_SIZE;
+ if (total_regions / global_variables.buffer_dirty_region_count <= 4) {
+ // 25% of regions dirty, just update all buffer
+ RD::get_singleton()->buffer_update(global_variables.buffer, 0, sizeof(GlobalVariables::Value) * global_variables.buffer_size, global_variables.buffer_values);
+ memset(global_variables.buffer_dirty_regions, 0, sizeof(bool) * total_regions);
+ } else {
+ uint32_t region_byte_size = sizeof(GlobalVariables::Value) * GlobalVariables::BUFFER_DIRTY_REGION_SIZE;
+
+ for (uint32_t i = 0; i < total_regions; i++) {
+ if (global_variables.buffer_dirty_regions[i]) {
+ RD::get_singleton()->buffer_update(global_variables.buffer, i * region_byte_size, region_byte_size, &global_variables.buffer_values[i * GlobalVariables::BUFFER_DIRTY_REGION_SIZE]);
+
+ global_variables.buffer_dirty_regions[i] = false;
+ }
+ }
+ }
+
+ global_variables.buffer_dirty_region_count = 0;
+ }
+
+ if (global_variables.must_update_buffer_materials) {
+ // only happens in the case of a buffer variable added or removed,
+ // so not often.
+ for (const RID &E : global_variables.materials_using_buffer) {
+ Material *material = material_storage->get_material(E);
+ ERR_CONTINUE(!material); //wtf
+
+ material_storage->_material_queue_update(material, true, false);
+ }
+
+ global_variables.must_update_buffer_materials = false;
+ }
+
+ if (global_variables.must_update_texture_materials) {
+ // only happens in the case of a buffer variable added or removed,
+ // so not often.
+ for (const RID &E : global_variables.materials_using_texture) {
+ Material *material = material_storage->get_material(E);
+ ERR_CONTINUE(!material); //wtf
+
+ material_storage->_material_queue_update(material, false, true);
+ }
+
+ global_variables.must_update_texture_materials = false;
+ }
+}
+
+/* SHADER API */
+
+RID MaterialStorage::shader_allocate() {
+ return shader_owner.allocate_rid();
+}
+
+void MaterialStorage::shader_initialize(RID p_rid) {
+ Shader shader;
+ shader.data = nullptr;
+ shader.type = SHADER_TYPE_MAX;
+
+ shader_owner.initialize_rid(p_rid, shader);
+}
+
+void MaterialStorage::shader_free(RID p_rid) {
+ Shader *shader = shader_owner.get_or_null(p_rid);
+ ERR_FAIL_COND(!shader);
+
+ //make material unreference this
+ while (shader->owners.size()) {
+ material_set_shader(shader->owners.front()->get()->self, RID());
+ }
+
+ //clear data if exists
+ if (shader->data) {
+ memdelete(shader->data);
+ }
+ shader_owner.free(p_rid);
+}
+
+void MaterialStorage::shader_set_code(RID p_shader, const String &p_code) {
+ Shader *shader = shader_owner.get_or_null(p_shader);
+ ERR_FAIL_COND(!shader);
+
+ shader->code = p_code;
+ String mode_string = ShaderLanguage::get_shader_type(p_code);
+
+ ShaderType new_type;
+ if (mode_string == "canvas_item") {
+ new_type = SHADER_TYPE_2D;
+ } else if (mode_string == "particles") {
+ new_type = SHADER_TYPE_PARTICLES;
+ } else if (mode_string == "spatial") {
+ new_type = SHADER_TYPE_3D;
+ } else if (mode_string == "sky") {
+ new_type = SHADER_TYPE_SKY;
+ } else if (mode_string == "fog") {
+ new_type = SHADER_TYPE_FOG;
+ } else {
+ new_type = SHADER_TYPE_MAX;
+ }
+
+ if (new_type != shader->type) {
+ if (shader->data) {
+ memdelete(shader->data);
+ shader->data = nullptr;
+ }
+
+ for (Set<Material *>::Element *E = shader->owners.front(); E; E = E->next()) {
+ Material *material = E->get();
+ material->shader_type = new_type;
+ if (material->data) {
+ memdelete(material->data);
+ material->data = nullptr;
+ }
+ }
+
+ shader->type = new_type;
+
+ if (new_type < SHADER_TYPE_MAX && shader_data_request_func[new_type]) {
+ shader->data = shader_data_request_func[new_type]();
+ } else {
+ shader->type = SHADER_TYPE_MAX; //invalid
+ }
+
+ for (Set<Material *>::Element *E = shader->owners.front(); E; E = E->next()) {
+ Material *material = E->get();
+ if (shader->data) {
+ material->data = material_get_data_request_function(new_type)(shader->data);
+ material->data->self = material->self;
+ material->data->set_next_pass(material->next_pass);
+ material->data->set_render_priority(material->priority);
+ }
+ material->shader_type = new_type;
+ }
+
+ if (shader->data) {
+ for (const KeyValue<StringName, Map<int, RID>> &E : shader->default_texture_parameter) {
+ for (const KeyValue<int, RID> &E2 : E.value) {
+ shader->data->set_default_texture_param(E.key, E2.value, E2.key);
+ }
+ }
+ }
+ }
+
+ if (shader->data) {
+ shader->data->set_code(p_code);
+ }
+
+ for (Set<Material *>::Element *E = shader->owners.front(); E; E = E->next()) {
+ Material *material = E->get();
+ material->dependency.changed_notify(RendererStorage::DEPENDENCY_CHANGED_MATERIAL);
+ _material_queue_update(material, true, true);
+ }
+}
+
+String MaterialStorage::shader_get_code(RID p_shader) const {
+ Shader *shader = shader_owner.get_or_null(p_shader);
+ ERR_FAIL_COND_V(!shader, String());
+ return shader->code;
+}
+
+void MaterialStorage::shader_get_param_list(RID p_shader, List<PropertyInfo> *p_param_list) const {
+ Shader *shader = shader_owner.get_or_null(p_shader);
+ ERR_FAIL_COND(!shader);
+ if (shader->data) {
+ return shader->data->get_param_list(p_param_list);
+ }
+}
+
+void MaterialStorage::shader_set_default_texture_param(RID p_shader, const StringName &p_name, RID p_texture, int p_index) {
+ Shader *shader = shader_owner.get_or_null(p_shader);
+ ERR_FAIL_COND(!shader);
+
+ if (p_texture.is_valid() && TextureStorage::get_singleton()->owns_texture(p_texture)) {
+ if (!shader->default_texture_parameter.has(p_name)) {
+ shader->default_texture_parameter[p_name] = Map<int, RID>();
+ }
+ shader->default_texture_parameter[p_name][p_index] = p_texture;
+ } else {
+ if (shader->default_texture_parameter.has(p_name) && shader->default_texture_parameter[p_name].has(p_index)) {
+ shader->default_texture_parameter[p_name].erase(p_index);
+
+ if (shader->default_texture_parameter[p_name].is_empty()) {
+ shader->default_texture_parameter.erase(p_name);
+ }
+ }
+ }
+ if (shader->data) {
+ shader->data->set_default_texture_param(p_name, p_texture, p_index);
+ }
+ for (Set<Material *>::Element *E = shader->owners.front(); E; E = E->next()) {
+ Material *material = E->get();
+ _material_queue_update(material, false, true);
+ }
+}
+
+RID MaterialStorage::shader_get_default_texture_param(RID p_shader, const StringName &p_name, int p_index) const {
+ Shader *shader = shader_owner.get_or_null(p_shader);
+ ERR_FAIL_COND_V(!shader, RID());
+ if (shader->default_texture_parameter.has(p_name) && shader->default_texture_parameter[p_name].has(p_index)) {
+ return shader->default_texture_parameter[p_name][p_index];
+ }
+
+ return RID();
+}
+
+Variant MaterialStorage::shader_get_param_default(RID p_shader, const StringName &p_param) const {
+ Shader *shader = shader_owner.get_or_null(p_shader);
+ ERR_FAIL_COND_V(!shader, Variant());
+ if (shader->data) {
+ return shader->data->get_default_parameter(p_param);
+ }
+ return Variant();
+}
+
+void MaterialStorage::shader_set_data_request_function(ShaderType p_shader_type, ShaderDataRequestFunction p_function) {
+ ERR_FAIL_INDEX(p_shader_type, SHADER_TYPE_MAX);
+ shader_data_request_func[p_shader_type] = p_function;
+}
+
+RS::ShaderNativeSourceCode MaterialStorage::shader_get_native_source_code(RID p_shader) const {
+ Shader *shader = shader_owner.get_or_null(p_shader);
+ ERR_FAIL_COND_V(!shader, RS::ShaderNativeSourceCode());
+ if (shader->data) {
+ return shader->data->get_native_source_code();
+ }
+ return RS::ShaderNativeSourceCode();
+}
+
+/* MATERIAL API */
+
+void MaterialStorage::_material_uniform_set_erased(void *p_material) {
+ RID rid = *(RID *)p_material;
+ Material *material = MaterialStorage::get_singleton()->get_material(rid);
+ if (material) {
+ if (material->data) {
+ // Uniform set may be gone because a dependency was erased. This happens
+ // if a texture is deleted, so re-create it.
+ MaterialStorage::get_singleton()->_material_queue_update(material, false, true);
+ }
+ material->dependency.changed_notify(RendererStorage::DEPENDENCY_CHANGED_MATERIAL);
+ }
+}
+
+void MaterialStorage::_material_queue_update(Material *material, bool p_uniform, bool p_texture) {
+ material->uniform_dirty = material->uniform_dirty || p_uniform;
+ material->texture_dirty = material->texture_dirty || p_texture;
+
+ if (material->update_element.in_list()) {
+ return;
+ }
+
+ material_update_list.add(&material->update_element);
+}
+
+void MaterialStorage::_update_queued_materials() {
+ while (material_update_list.first()) {
+ Material *material = material_update_list.first()->self();
+ bool uniforms_changed = false;
+
+ if (material->data) {
+ uniforms_changed = material->data->update_parameters(material->params, material->uniform_dirty, material->texture_dirty);
+ }
+ material->texture_dirty = false;
+ material->uniform_dirty = false;
+
+ material_update_list.remove(&material->update_element);
+
+ if (uniforms_changed) {
+ //some implementations such as 3D renderer cache the matreial uniform set, so update is required
+ material->dependency.changed_notify(RendererStorage::DEPENDENCY_CHANGED_MATERIAL);
+ }
+ }
+}
+
+RID MaterialStorage::material_allocate() {
+ return material_owner.allocate_rid();
+}
+
+void MaterialStorage::material_initialize(RID p_rid) {
+ material_owner.initialize_rid(p_rid);
+ Material *material = material_owner.get_or_null(p_rid);
+ material->self = p_rid;
+}
+
+void MaterialStorage::material_free(RID p_rid) {
+ Material *material = material_owner.get_or_null(p_rid);
+ ERR_FAIL_COND(!material);
+
+ material_set_shader(p_rid, RID()); //clean up shader
+ material->dependency.deleted_notify(p_rid);
+
+ material_owner.free(p_rid);
+}
+
+void MaterialStorage::material_set_shader(RID p_material, RID p_shader) {
+ Material *material = material_owner.get_or_null(p_material);
+ ERR_FAIL_COND(!material);
+
+ if (material->data) {
+ memdelete(material->data);
+ material->data = nullptr;
+ }
+
+ if (material->shader) {
+ material->shader->owners.erase(material);
+ material->shader = nullptr;
+ material->shader_type = SHADER_TYPE_MAX;
+ }
+
+ if (p_shader.is_null()) {
+ material->dependency.changed_notify(RendererStorage::DEPENDENCY_CHANGED_MATERIAL);
+ material->shader_id = 0;
+ return;
+ }
+
+ Shader *shader = get_shader(p_shader);
+ ERR_FAIL_COND(!shader);
+ material->shader = shader;
+ material->shader_type = shader->type;
+ material->shader_id = p_shader.get_local_index();
+ shader->owners.insert(material);
+
+ if (shader->type == SHADER_TYPE_MAX) {
+ return;
+ }
+
+ ERR_FAIL_COND(shader->data == nullptr);
+
+ material->data = material_data_request_func[shader->type](shader->data);
+ material->data->self = p_material;
+ material->data->set_next_pass(material->next_pass);
+ material->data->set_render_priority(material->priority);
+ //updating happens later
+ material->dependency.changed_notify(RendererStorage::DEPENDENCY_CHANGED_MATERIAL);
+ _material_queue_update(material, true, true);
+}
+
+void MaterialStorage::material_set_param(RID p_material, const StringName &p_param, const Variant &p_value) {
+ Material *material = material_owner.get_or_null(p_material);
+ ERR_FAIL_COND(!material);
+
+ if (p_value.get_type() == Variant::NIL) {
+ material->params.erase(p_param);
+ } else {
+ ERR_FAIL_COND(p_value.get_type() == Variant::OBJECT); //object not allowed
+ material->params[p_param] = p_value;
+ }
+
+ if (material->shader && material->shader->data) { //shader is valid
+ bool is_texture = material->shader->data->is_param_texture(p_param);
+ _material_queue_update(material, !is_texture, is_texture);
+ } else {
+ _material_queue_update(material, true, true);
+ }
+}
+
+Variant MaterialStorage::material_get_param(RID p_material, const StringName &p_param) const {
+ Material *material = material_owner.get_or_null(p_material);
+ ERR_FAIL_COND_V(!material, Variant());
+ if (material->params.has(p_param)) {
+ return material->params[p_param];
+ } else {
+ return Variant();
+ }
+}
+
+void MaterialStorage::material_set_next_pass(RID p_material, RID p_next_material) {
+ Material *material = material_owner.get_or_null(p_material);
+ ERR_FAIL_COND(!material);
+
+ if (material->next_pass == p_next_material) {
+ return;
+ }
+
+ material->next_pass = p_next_material;
+ if (material->data) {
+ material->data->set_next_pass(p_next_material);
+ }
+
+ material->dependency.changed_notify(RendererStorage::DEPENDENCY_CHANGED_MATERIAL);
+}
+
+void MaterialStorage::material_set_render_priority(RID p_material, int priority) {
+ Material *material = material_owner.get_or_null(p_material);
+ ERR_FAIL_COND(!material);
+ material->priority = priority;
+ if (material->data) {
+ material->data->set_render_priority(priority);
+ }
+}
+
+bool MaterialStorage::material_is_animated(RID p_material) {
+ Material *material = material_owner.get_or_null(p_material);
+ ERR_FAIL_COND_V(!material, false);
+ if (material->shader && material->shader->data) {
+ if (material->shader->data->is_animated()) {
+ return true;
+ } else if (material->next_pass.is_valid()) {
+ return material_is_animated(material->next_pass);
+ }
+ }
+ return false; //by default nothing is animated
+}
+
+bool MaterialStorage::material_casts_shadows(RID p_material) {
+ Material *material = material_owner.get_or_null(p_material);
+ ERR_FAIL_COND_V(!material, true);
+ if (material->shader && material->shader->data) {
+ if (material->shader->data->casts_shadows()) {
+ return true;
+ } else if (material->next_pass.is_valid()) {
+ return material_casts_shadows(material->next_pass);
+ }
+ }
+ return true; //by default everything casts shadows
+}
+
+void MaterialStorage::material_get_instance_shader_parameters(RID p_material, List<InstanceShaderParam> *r_parameters) {
+ Material *material = material_owner.get_or_null(p_material);
+ ERR_FAIL_COND(!material);
+ if (material->shader && material->shader->data) {
+ material->shader->data->get_instance_param_list(r_parameters);
+
+ if (material->next_pass.is_valid()) {
+ material_get_instance_shader_parameters(material->next_pass, r_parameters);
+ }
+ }
+}
+
+void MaterialStorage::material_update_dependency(RID p_material, RendererStorage::DependencyTracker *p_instance) {
+ Material *material = material_owner.get_or_null(p_material);
+ ERR_FAIL_COND(!material);
+ p_instance->update_dependency(&material->dependency);
+ if (material->next_pass.is_valid()) {
+ material_update_dependency(material->next_pass, p_instance);
+ }
+}
+
+void MaterialStorage::material_set_data_request_function(ShaderType p_shader_type, MaterialDataRequestFunction p_function) {
+ ERR_FAIL_INDEX(p_shader_type, SHADER_TYPE_MAX);
+ material_data_request_func[p_shader_type] = p_function;
+}
+
+MaterialDataRequestFunction MaterialStorage::material_get_data_request_function(ShaderType p_shader_type) {
+ ERR_FAIL_INDEX_V(p_shader_type, SHADER_TYPE_MAX, nullptr);
+ return material_data_request_func[p_shader_type];
+}
diff --git a/servers/rendering/renderer_rd/storage_rd/material_storage.h b/servers/rendering/renderer_rd/storage_rd/material_storage.h
new file mode 100644
index 0000000000..69b7b702b0
--- /dev/null
+++ b/servers/rendering/renderer_rd/storage_rd/material_storage.h
@@ -0,0 +1,315 @@
+/*************************************************************************/
+/* material_storage.h */
+/*************************************************************************/
+/* This file is part of: */
+/* GODOT ENGINE */
+/* https://godotengine.org */
+/*************************************************************************/
+/* Copyright (c) 2007-2022 Juan Linietsky, Ariel Manzur. */
+/* Copyright (c) 2014-2022 Godot Engine contributors (cf. AUTHORS.md). */
+/* */
+/* Permission is hereby granted, free of charge, to any person obtaining */
+/* a copy of this software and associated documentation files (the */
+/* "Software"), to deal in the Software without restriction, including */
+/* without limitation the rights to use, copy, modify, merge, publish, */
+/* distribute, sublicense, and/or sell copies of the Software, and to */
+/* permit persons to whom the Software is furnished to do so, subject to */
+/* the following conditions: */
+/* */
+/* The above copyright notice and this permission notice shall be */
+/* included in all copies or substantial portions of the Software. */
+/* */
+/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
+/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
+/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
+/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
+/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
+/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
+/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
+/*************************************************************************/
+
+#ifndef MATERIAL_STORAGE_RD_H
+#define MATERIAL_STORAGE_RD_H
+
+#include "core/templates/local_vector.h"
+#include "core/templates/rid_owner.h"
+#include "core/templates/self_list.h"
+#include "servers/rendering/shader_compiler.h"
+#include "servers/rendering/shader_language.h"
+#include "servers/rendering/storage/material_storage.h"
+
+namespace RendererRD {
+
+class MaterialStorage;
+
+/* SHADER Structs */
+
+enum ShaderType {
+ SHADER_TYPE_2D,
+ SHADER_TYPE_3D,
+ SHADER_TYPE_PARTICLES,
+ SHADER_TYPE_SKY,
+ SHADER_TYPE_FOG,
+ SHADER_TYPE_MAX
+};
+
+struct ShaderData {
+ virtual void set_code(const String &p_Code) = 0;
+ virtual void set_default_texture_param(const StringName &p_name, RID p_texture, int p_index) = 0;
+ virtual void get_param_list(List<PropertyInfo> *p_param_list) const = 0;
+
+ virtual void get_instance_param_list(List<RendererMaterialStorage::InstanceShaderParam> *p_param_list) const = 0;
+ virtual bool is_param_texture(const StringName &p_param) const = 0;
+ virtual bool is_animated() const = 0;
+ virtual bool casts_shadows() const = 0;
+ virtual Variant get_default_parameter(const StringName &p_parameter) const = 0;
+ virtual RS::ShaderNativeSourceCode get_native_source_code() const { return RS::ShaderNativeSourceCode(); }
+
+ virtual ~ShaderData() {}
+};
+
+typedef ShaderData *(*ShaderDataRequestFunction)();
+
+struct Material;
+
+struct Shader {
+ ShaderData *data;
+ String code;
+ ShaderType type;
+ Map<StringName, Map<int, RID>> default_texture_parameter;
+ Set<Material *> owners;
+};
+
+/* Material structs */
+
+struct MaterialData {
+ void update_uniform_buffer(const Map<StringName, ShaderLanguage::ShaderNode::Uniform> &p_uniforms, const uint32_t *p_uniform_offsets, const Map<StringName, Variant> &p_parameters, uint8_t *p_buffer, uint32_t p_buffer_size, bool p_use_linear_color);
+ void update_textures(const Map<StringName, Variant> &p_parameters, const Map<StringName, Map<int, RID>> &p_default_textures, const Vector<ShaderCompiler::GeneratedCode::Texture> &p_texture_uniforms, RID *p_textures, bool p_use_linear_color);
+
+ virtual void set_render_priority(int p_priority) = 0;
+ virtual void set_next_pass(RID p_pass) = 0;
+ virtual bool update_parameters(const Map<StringName, Variant> &p_parameters, bool p_uniform_dirty, bool p_textures_dirty) = 0;
+ virtual ~MaterialData();
+
+ //to be used internally by update_parameters, in the most common configuration of material parameters
+ bool update_parameters_uniform_set(const Map<StringName, Variant> &p_parameters, bool p_uniform_dirty, bool p_textures_dirty, const Map<StringName, ShaderLanguage::ShaderNode::Uniform> &p_uniforms, const uint32_t *p_uniform_offsets, const Vector<ShaderCompiler::GeneratedCode::Texture> &p_texture_uniforms, const Map<StringName, Map<int, RID>> &p_default_texture_params, uint32_t p_ubo_size, RID &uniform_set, RID p_shader, uint32_t p_shader_uniform_set, uint32_t p_barrier = RD::BARRIER_MASK_ALL);
+ void free_parameters_uniform_set(RID p_uniform_set);
+
+private:
+ friend class MaterialStorage;
+ RID self;
+ List<RID>::Element *global_buffer_E = nullptr;
+ List<RID>::Element *global_texture_E = nullptr;
+ uint64_t global_textures_pass = 0;
+ Map<StringName, uint64_t> used_global_textures;
+
+ //internally by update_parameters_uniform_set
+ Vector<uint8_t> ubo_data;
+ RID uniform_buffer;
+ Vector<RID> texture_cache;
+};
+
+typedef MaterialData *(*MaterialDataRequestFunction)(ShaderData *);
+
+struct Material {
+ RID self;
+ MaterialData *data = nullptr;
+ Shader *shader = nullptr;
+ //shortcut to shader data and type
+ ShaderType shader_type = SHADER_TYPE_MAX;
+ uint32_t shader_id = 0;
+ bool uniform_dirty = false;
+ bool texture_dirty = false;
+ Map<StringName, Variant> params;
+ int32_t priority = 0;
+ RID next_pass;
+ SelfList<Material> update_element;
+
+ RendererStorage::Dependency dependency;
+
+ Material() :
+ update_element(this) {}
+};
+
+/* Global variable structs */
+struct GlobalVariables {
+ enum {
+ BUFFER_DIRTY_REGION_SIZE = 1024
+ };
+ struct Variable {
+ Set<RID> texture_materials; // materials using this
+
+ RS::GlobalVariableType type;
+ Variant value;
+ Variant override;
+ int32_t buffer_index; //for vectors
+ int32_t buffer_elements; //for vectors
+ };
+
+ HashMap<StringName, Variable> variables;
+
+ struct Value {
+ float x;
+ float y;
+ float z;
+ float w;
+ };
+
+ struct ValueInt {
+ int32_t x;
+ int32_t y;
+ int32_t z;
+ int32_t w;
+ };
+
+ struct ValueUInt {
+ uint32_t x;
+ uint32_t y;
+ uint32_t z;
+ uint32_t w;
+ };
+
+ struct ValueUsage {
+ uint32_t elements = 0;
+ };
+
+ List<RID> materials_using_buffer;
+ List<RID> materials_using_texture;
+
+ RID buffer;
+ Value *buffer_values;
+ ValueUsage *buffer_usage;
+ bool *buffer_dirty_regions;
+ uint32_t buffer_dirty_region_count = 0;
+
+ uint32_t buffer_size;
+
+ bool must_update_texture_materials = false;
+ bool must_update_buffer_materials = false;
+
+ HashMap<RID, int32_t> instance_buffer_pos;
+};
+
+class MaterialStorage : public RendererMaterialStorage {
+private:
+ friend struct MaterialData;
+ static MaterialStorage *singleton;
+
+ /* GLOBAL VARIABLE API */
+
+ GlobalVariables global_variables;
+
+ int32_t _global_variable_allocate(uint32_t p_elements);
+ void _global_variable_store_in_buffer(int32_t p_index, RS::GlobalVariableType p_type, const Variant &p_value);
+ void _global_variable_mark_buffer_dirty(int32_t p_index, int32_t p_elements);
+
+ /* SHADER API */
+
+ ShaderDataRequestFunction shader_data_request_func[SHADER_TYPE_MAX];
+ mutable RID_Owner<Shader, true> shader_owner;
+
+ /* MATERIAL API */
+ MaterialDataRequestFunction material_data_request_func[SHADER_TYPE_MAX];
+ mutable RID_Owner<Material, true> material_owner;
+
+ SelfList<Material>::List material_update_list;
+
+ static void _material_uniform_set_erased(void *p_material);
+
+public:
+ static MaterialStorage *get_singleton();
+
+ MaterialStorage();
+ virtual ~MaterialStorage();
+
+ /* GLOBAL VARIABLE API */
+
+ void _update_global_variables();
+
+ virtual void global_variable_add(const StringName &p_name, RS::GlobalVariableType p_type, const Variant &p_value) override;
+ virtual void global_variable_remove(const StringName &p_name) override;
+ virtual Vector<StringName> global_variable_get_list() const override;
+
+ virtual void global_variable_set(const StringName &p_name, const Variant &p_value) override;
+ virtual void global_variable_set_override(const StringName &p_name, const Variant &p_value) override;
+ virtual Variant global_variable_get(const StringName &p_name) const override;
+ virtual RS::GlobalVariableType global_variable_get_type(const StringName &p_name) const override;
+ RS::GlobalVariableType global_variable_get_type_internal(const StringName &p_name) const;
+
+ virtual void global_variables_load_settings(bool p_load_textures = true) override;
+ virtual void global_variables_clear() override;
+
+ virtual int32_t global_variables_instance_allocate(RID p_instance) override;
+ virtual void global_variables_instance_free(RID p_instance) override;
+ virtual void global_variables_instance_update(RID p_instance, int p_index, const Variant &p_value) override;
+
+ RID global_variables_get_storage_buffer() const;
+
+ /* SHADER API */
+
+ Shader *get_shader(RID p_rid) { return shader_owner.get_or_null(p_rid); };
+ bool owns_shader(RID p_rid) { return shader_owner.owns(p_rid); };
+
+ virtual RID shader_allocate() override;
+ virtual void shader_initialize(RID p_shader) override;
+ virtual void shader_free(RID p_rid) override;
+
+ virtual void shader_set_code(RID p_shader, const String &p_code) override;
+ virtual String shader_get_code(RID p_shader) const override;
+ virtual void shader_get_param_list(RID p_shader, List<PropertyInfo> *p_param_list) const override;
+
+ virtual void shader_set_default_texture_param(RID p_shader, const StringName &p_name, RID p_texture, int p_index) override;
+ virtual RID shader_get_default_texture_param(RID p_shader, const StringName &p_name, int p_index) const override;
+ virtual Variant shader_get_param_default(RID p_shader, const StringName &p_param) const override;
+ void shader_set_data_request_function(ShaderType p_shader_type, ShaderDataRequestFunction p_function);
+
+ virtual RS::ShaderNativeSourceCode shader_get_native_source_code(RID p_shader) const override;
+
+ /* MATERIAL API */
+
+ Material *get_material(RID p_rid) { return material_owner.get_or_null(p_rid); };
+ bool owns_material(RID p_rid) { return material_owner.owns(p_rid); };
+
+ void _material_queue_update(Material *material, bool p_uniform, bool p_texture);
+ void _update_queued_materials();
+
+ virtual RID material_allocate() override;
+ virtual void material_initialize(RID p_material) override;
+ virtual void material_free(RID p_rid) override;
+
+ virtual void material_set_shader(RID p_material, RID p_shader) override;
+
+ virtual void material_set_param(RID p_material, const StringName &p_param, const Variant &p_value) override;
+ virtual Variant material_get_param(RID p_material, const StringName &p_param) const override;
+
+ virtual void material_set_next_pass(RID p_material, RID p_next_material) override;
+ virtual void material_set_render_priority(RID p_material, int priority) override;
+
+ virtual bool material_is_animated(RID p_material) override;
+ virtual bool material_casts_shadows(RID p_material) override;
+
+ virtual void material_get_instance_shader_parameters(RID p_material, List<InstanceShaderParam> *r_parameters) override;
+
+ virtual void material_update_dependency(RID p_material, RendererStorage::DependencyTracker *p_instance) override;
+
+ void material_set_data_request_function(ShaderType p_shader_type, MaterialDataRequestFunction p_function);
+ MaterialDataRequestFunction material_get_data_request_function(ShaderType p_shader_type);
+
+ _FORCE_INLINE_ uint32_t material_get_shader_id(RID p_material) {
+ Material *material = material_owner.get_or_null(p_material);
+ return material->shader_id;
+ }
+
+ _FORCE_INLINE_ MaterialData *material_get_data(RID p_material, ShaderType p_shader_type) {
+ Material *material = material_owner.get_or_null(p_material);
+ if (!material || material->shader_type != p_shader_type) {
+ return nullptr;
+ } else {
+ return material->data;
+ }
+ }
+};
+
+} // namespace RendererRD
+
+#endif // !MATERIAL_STORAGE_RD_H
diff --git a/servers/rendering/renderer_rd/storage_rd/texture_storage.cpp b/servers/rendering/renderer_rd/storage_rd/texture_storage.cpp
index acdaaae7a4..a3ca7d3720 100644
--- a/servers/rendering/renderer_rd/storage_rd/texture_storage.cpp
+++ b/servers/rendering/renderer_rd/storage_rd/texture_storage.cpp
@@ -29,9 +29,7 @@
/*************************************************************************/
#include "texture_storage.h"
-
-// only include until we have DecalStorage sorted
-#include "servers/rendering/renderer_rd/renderer_storage_rd.h"
+#include "decal_atlas_storage.h"
using namespace RendererRD;
@@ -300,12 +298,14 @@ TextureStorage::TextureStorage() {
}
TextureStorage::~TextureStorage() {
- singleton = nullptr;
-
//def textures
for (int i = 0; i < DEFAULT_RD_TEXTURE_MAX; i++) {
- texture_free(default_rd_textures[i]);
+ if (default_rd_textures[i].is_valid()) {
+ RD::get_singleton()->free(default_rd_textures[i]);
+ }
}
+
+ singleton = nullptr;
}
bool TextureStorage::can_create_resources_async() const {
@@ -330,7 +330,7 @@ void TextureStorage::texture_free(RID p_texture) {
}
}
- RendererStorageRD::base_singleton->decal_atlas_remove_texture(p_texture);
+ DecalAtlasStorage::get_singleton()->decal_atlas_remove_texture(p_texture);
for (int i = 0; i < t->proxies.size(); i++) {
Texture *p = texture_owner.get_or_null(t->proxies[i]);
@@ -929,7 +929,7 @@ void TextureStorage::texture_replace(RID p_texture, RID p_by_texture) {
//delete last, so proxies can be updated
texture_owner.free(p_by_texture);
- RendererStorageRD::base_singleton->decal_atlas_mark_dirty_on_texture(p_texture);
+ DecalAtlasStorage::get_singleton()->decal_atlas_mark_dirty_on_texture(p_texture);
}
void TextureStorage::texture_set_size_override(RID p_texture, int p_width, int p_height) {
@@ -949,7 +949,7 @@ void TextureStorage::texture_set_path(RID p_texture, const String &p_path) {
}
String TextureStorage::texture_get_path(RID p_texture) const {
- RendererRD::Texture *tex = texture_owner.get_or_null(p_texture);
+ Texture *tex = texture_owner.get_or_null(p_texture);
ERR_FAIL_COND_V(!tex, String());
return tex->path;
diff --git a/servers/rendering/renderer_rd/uniform_set_cache_rd.cpp b/servers/rendering/renderer_rd/uniform_set_cache_rd.cpp
index 5843b9db24..84529ca400 100644
--- a/servers/rendering/renderer_rd/uniform_set_cache_rd.cpp
+++ b/servers/rendering/renderer_rd/uniform_set_cache_rd.cpp
@@ -36,7 +36,7 @@ void UniformSetCacheRD::_invalidate(Cache *p_cache) {
if (p_cache->prev) {
p_cache->prev->next = p_cache->next;
} else {
- // At begining of table
+ // At beginning of table
uint32_t table_idx = p_cache->hash % HASH_TABLE_SIZE;
hash_table[table_idx] = p_cache->next;
}
diff --git a/servers/rendering/renderer_scene_cull.cpp b/servers/rendering/renderer_scene_cull.cpp
index 700ca7e167..d70e4ffa0c 100644
--- a/servers/rendering/renderer_scene_cull.cpp
+++ b/servers/rendering/renderer_scene_cull.cpp
@@ -1438,7 +1438,7 @@ void RendererSceneCull::instance_geometry_set_shader_parameter(RID p_instance, c
E->get().value = p_value;
if (E->get().index >= 0 && instance->instance_allocated_shader_parameters) {
//update directly
- RSG::storage->global_variables_instance_update(p_instance, E->get().index, p_value);
+ RSG::material_storage->global_variables_instance_update(p_instance, E->get().index, p_value);
}
}
}
@@ -1887,7 +1887,7 @@ void RendererSceneCull::_update_instance_aabb(Instance *p_instance) {
} break;
case RenderingServer::INSTANCE_DECAL: {
- new_aabb = RSG::storage->decal_get_aabb(p_instance->base);
+ new_aabb = RSG::decal_atlas_storage->decal_get_aabb(p_instance->base);
} break;
case RenderingServer::INSTANCE_VOXEL_GI: {
@@ -3627,9 +3627,9 @@ void RendererSceneCull::render_particle_colliders() {
}
void RendererSceneCull::_update_instance_shader_parameters_from_material(Map<StringName, Instance::InstanceShaderParameter> &isparams, const Map<StringName, Instance::InstanceShaderParameter> &existing_isparams, RID p_material) {
- List<RendererStorage::InstanceShaderParam> plist;
- RSG::storage->material_get_instance_shader_parameters(p_material, &plist);
- for (const RendererStorage::InstanceShaderParam &E : plist) {
+ List<RendererMaterialStorage::InstanceShaderParam> plist;
+ RSG::material_storage->material_get_instance_shader_parameters(p_material, &plist);
+ for (const RendererMaterialStorage::InstanceShaderParam &E : plist) {
StringName name = E.info.name;
if (isparams.has(name)) {
if (isparams[name].info.type != E.info.type) {
@@ -3667,11 +3667,11 @@ void RendererSceneCull::_update_dirty_instance(Instance *p_instance) {
}
if (p_instance->material_override.is_valid()) {
- RSG::storage->material_update_dependency(p_instance->material_override, &p_instance->dependency_tracker);
+ RSG::material_storage->material_update_dependency(p_instance->material_override, &p_instance->dependency_tracker);
}
if (p_instance->material_overlay.is_valid()) {
- RSG::storage->material_update_dependency(p_instance->material_overlay, &p_instance->dependency_tracker);
+ RSG::material_storage->material_update_dependency(p_instance->material_overlay, &p_instance->dependency_tracker);
}
if (p_instance->base_type == RS::INSTANCE_MESH) {
@@ -3688,7 +3688,7 @@ void RendererSceneCull::_update_dirty_instance(Instance *p_instance) {
RID particle_material = RSG::storage->particles_get_process_material(p_instance->base);
if (particle_material.is_valid()) {
- RSG::storage->material_update_dependency(particle_material, &p_instance->dependency_tracker);
+ RSG::material_storage->material_update_dependency(particle_material, &p_instance->dependency_tracker);
}
}
@@ -3704,10 +3704,10 @@ void RendererSceneCull::_update_dirty_instance(Instance *p_instance) {
}
if (p_instance->material_override.is_valid()) {
- if (!RSG::storage->material_casts_shadows(p_instance->material_override)) {
+ if (!RSG::material_storage->material_casts_shadows(p_instance->material_override)) {
can_cast_shadows = false;
}
- is_animated = RSG::storage->material_is_animated(p_instance->material_override);
+ is_animated = RSG::material_storage->material_is_animated(p_instance->material_override);
_update_instance_shader_parameters_from_material(isparams, p_instance->instance_shader_parameters, p_instance->material_override);
} else {
if (p_instance->base_type == RS::INSTANCE_MESH) {
@@ -3722,17 +3722,17 @@ void RendererSceneCull::_update_dirty_instance(Instance *p_instance) {
if (!mat.is_valid()) {
cast_shadows = true;
} else {
- if (RSG::storage->material_casts_shadows(mat)) {
+ if (RSG::material_storage->material_casts_shadows(mat)) {
cast_shadows = true;
}
- if (RSG::storage->material_is_animated(mat)) {
+ if (RSG::material_storage->material_is_animated(mat)) {
is_animated = true;
}
_update_instance_shader_parameters_from_material(isparams, p_instance->instance_shader_parameters, mat);
- RSG::storage->material_update_dependency(mat, &p_instance->dependency_tracker);
+ RSG::material_storage->material_update_dependency(mat, &p_instance->dependency_tracker);
}
}
@@ -3754,16 +3754,16 @@ void RendererSceneCull::_update_dirty_instance(Instance *p_instance) {
cast_shadows = true;
} else {
- if (RSG::storage->material_casts_shadows(mat)) {
+ if (RSG::material_storage->material_casts_shadows(mat)) {
cast_shadows = true;
}
- if (RSG::storage->material_is_animated(mat)) {
+ if (RSG::material_storage->material_is_animated(mat)) {
is_animated = true;
}
_update_instance_shader_parameters_from_material(isparams, p_instance->instance_shader_parameters, mat);
- RSG::storage->material_update_dependency(mat, &p_instance->dependency_tracker);
+ RSG::material_storage->material_update_dependency(mat, &p_instance->dependency_tracker);
}
}
@@ -3791,17 +3791,17 @@ void RendererSceneCull::_update_dirty_instance(Instance *p_instance) {
if (!mat.is_valid()) {
cast_shadows = true;
} else {
- if (RSG::storage->material_casts_shadows(mat)) {
+ if (RSG::material_storage->material_casts_shadows(mat)) {
cast_shadows = true;
}
- if (RSG::storage->material_is_animated(mat)) {
+ if (RSG::material_storage->material_is_animated(mat)) {
is_animated = true;
}
_update_instance_shader_parameters_from_material(isparams, p_instance->instance_shader_parameters, mat);
- RSG::storage->material_update_dependency(mat, &p_instance->dependency_tracker);
+ RSG::material_storage->material_update_dependency(mat, &p_instance->dependency_tracker);
}
}
}
@@ -3813,8 +3813,8 @@ void RendererSceneCull::_update_dirty_instance(Instance *p_instance) {
}
if (p_instance->material_overlay.is_valid()) {
- can_cast_shadows = can_cast_shadows || RSG::storage->material_casts_shadows(p_instance->material_overlay);
- is_animated = is_animated || RSG::storage->material_is_animated(p_instance->material_overlay);
+ can_cast_shadows = can_cast_shadows || RSG::material_storage->material_casts_shadows(p_instance->material_overlay);
+ is_animated = is_animated || RSG::material_storage->material_is_animated(p_instance->material_overlay);
_update_instance_shader_parameters_from_material(isparams, p_instance->instance_shader_parameters, p_instance->material_overlay);
}
@@ -3834,16 +3834,16 @@ void RendererSceneCull::_update_dirty_instance(Instance *p_instance) {
if (p_instance->instance_allocated_shader_parameters != (p_instance->instance_shader_parameters.size() > 0)) {
p_instance->instance_allocated_shader_parameters = (p_instance->instance_shader_parameters.size() > 0);
if (p_instance->instance_allocated_shader_parameters) {
- p_instance->instance_allocated_shader_parameters_offset = RSG::storage->global_variables_instance_allocate(p_instance->self);
+ p_instance->instance_allocated_shader_parameters_offset = RSG::material_storage->global_variables_instance_allocate(p_instance->self);
scene_render->geometry_instance_set_instance_shader_parameters_offset(geom->geometry_instance, p_instance->instance_allocated_shader_parameters_offset);
for (const KeyValue<StringName, Instance::InstanceShaderParameter> &E : p_instance->instance_shader_parameters) {
if (E.value.value.get_type() != Variant::NIL) {
- RSG::storage->global_variables_instance_update(p_instance->self, E.value.index, E.value.value);
+ RSG::material_storage->global_variables_instance_update(p_instance->self, E.value.index, E.value.value);
}
}
} else {
- RSG::storage->global_variables_instance_free(p_instance->self);
+ RSG::material_storage->global_variables_instance_free(p_instance->self);
p_instance->instance_allocated_shader_parameters_offset = -1;
scene_render->geometry_instance_set_instance_shader_parameters_offset(geom->geometry_instance, -1);
}
@@ -3939,7 +3939,7 @@ bool RendererSceneCull::free(RID p_rid) {
if (instance->instance_allocated_shader_parameters) {
//free the used shader parameters
- RSG::storage->global_variables_instance_free(instance->self);
+ RSG::material_storage->global_variables_instance_free(instance->self);
}
update_dirty_instances(); //in case something changed this
diff --git a/servers/rendering/renderer_storage.h b/servers/rendering/renderer_storage.h
index b5d6aae718..b9cd1f55ba 100644
--- a/servers/rendering/renderer_storage.h
+++ b/servers/rendering/renderer_storage.h
@@ -54,7 +54,6 @@ public:
struct DependencyTracker;
-protected:
struct Dependency {
void changed_notify(DependencyChangedNotification p_notification);
void deleted_notify(const RID &p_rid);
@@ -66,7 +65,6 @@ protected:
Map<DependencyTracker *, uint32_t> instances;
};
-public:
struct DependencyTracker {
void *userdata = nullptr;
typedef void (*ChangedCallback)(DependencyChangedNotification, DependencyTracker *);
@@ -121,47 +119,6 @@ public:
Set<Dependency *> dependencies;
};
- /* SHADER API */
-
- virtual RID shader_allocate() = 0;
- virtual void shader_initialize(RID p_rid) = 0;
-
- virtual void shader_set_code(RID p_shader, const String &p_code) = 0;
- virtual String shader_get_code(RID p_shader) const = 0;
- virtual void shader_get_param_list(RID p_shader, List<PropertyInfo> *p_param_list) const = 0;
-
- virtual void shader_set_default_texture_param(RID p_shader, const StringName &p_name, RID p_texture, int p_index) = 0;
- virtual RID shader_get_default_texture_param(RID p_shader, const StringName &p_name, int p_index) const = 0;
- virtual Variant shader_get_param_default(RID p_material, const StringName &p_param) const = 0;
-
- virtual RS::ShaderNativeSourceCode shader_get_native_source_code(RID p_shader) const = 0;
-
- /* COMMON MATERIAL API */
-
- virtual RID material_allocate() = 0;
- virtual void material_initialize(RID p_rid) = 0;
-
- virtual void material_set_render_priority(RID p_material, int priority) = 0;
- virtual void material_set_shader(RID p_shader_material, RID p_shader) = 0;
-
- virtual void material_set_param(RID p_material, const StringName &p_param, const Variant &p_value) = 0;
- virtual Variant material_get_param(RID p_material, const StringName &p_param) const = 0;
-
- virtual void material_set_next_pass(RID p_material, RID p_next_material) = 0;
-
- virtual bool material_is_animated(RID p_material) = 0;
- virtual bool material_casts_shadows(RID p_material) = 0;
-
- struct InstanceShaderParam {
- PropertyInfo info;
- int index;
- Variant default_value;
- };
-
- virtual void material_get_instance_shader_parameters(RID p_material, List<InstanceShaderParam> *r_parameters) = 0;
-
- virtual void material_update_dependency(RID p_material, DependencyTracker *p_instance) = 0;
-
/* MESH API */
virtual RID mesh_allocate() = 0;
@@ -327,26 +284,6 @@ public:
virtual void base_update_dependency(RID p_base, DependencyTracker *p_instance) = 0;
virtual void skeleton_update_dependency(RID p_base, DependencyTracker *p_instance) = 0;
- /* DECAL API */
-
- virtual RID decal_allocate() = 0;
- virtual void decal_initialize(RID p_rid) = 0;
-
- virtual void decal_set_extents(RID p_decal, const Vector3 &p_extents) = 0;
- virtual void decal_set_texture(RID p_decal, RS::DecalTexture p_type, RID p_texture) = 0;
- virtual void decal_set_emission_energy(RID p_decal, float p_energy) = 0;
- virtual void decal_set_albedo_mix(RID p_decal, float p_mix) = 0;
- virtual void decal_set_modulate(RID p_decal, const Color &p_modulate) = 0;
- virtual void decal_set_cull_mask(RID p_decal, uint32_t p_layers) = 0;
- virtual void decal_set_distance_fade(RID p_decal, bool p_enabled, float p_begin, float p_length) = 0;
- virtual void decal_set_fade(RID p_decal, float p_above, float p_below) = 0;
- virtual void decal_set_normal_fade(RID p_decal, float p_fade) = 0;
-
- virtual AABB decal_get_aabb(RID p_decal) const = 0;
-
- virtual void texture_add_to_decal_atlas(RID p_texture, bool p_panorama_to_dp = false) = 0;
- virtual void texture_remove_from_decal_atlas(RID p_texture, bool p_panorama_to_dp = false) = 0;
-
/* VOXEL GI API */
virtual RID voxel_gi_allocate() = 0;
@@ -512,24 +449,6 @@ public:
virtual void particles_collision_instance_set_transform(RID p_collision_instance, const Transform3D &p_transform) = 0;
virtual void particles_collision_instance_set_active(RID p_collision_instance, bool p_active) = 0;
- /* GLOBAL VARIABLES */
-
- virtual void global_variable_add(const StringName &p_name, RS::GlobalVariableType p_type, const Variant &p_value) = 0;
- virtual void global_variable_remove(const StringName &p_name) = 0;
- virtual Vector<StringName> global_variable_get_list() const = 0;
-
- virtual void global_variable_set(const StringName &p_name, const Variant &p_value) = 0;
- virtual void global_variable_set_override(const StringName &p_name, const Variant &p_value) = 0;
- virtual Variant global_variable_get(const StringName &p_name) const = 0;
- virtual RS::GlobalVariableType global_variable_get_type(const StringName &p_name) const = 0;
-
- virtual void global_variables_load_settings(bool p_load_textures = true) = 0;
- virtual void global_variables_clear() = 0;
-
- virtual int32_t global_variables_instance_allocate(RID p_instance) = 0;
- virtual void global_variables_instance_free(RID p_instance) = 0;
- virtual void global_variables_instance_update(RID p_instance, int p_index, const Variant &p_value) = 0;
-
/* RENDER TARGET */
enum RenderTargetFlags {
diff --git a/servers/rendering/rendering_device.h b/servers/rendering/rendering_device.h
index 6ed4448638..ecbb11efca 100644
--- a/servers/rendering/rendering_device.h
+++ b/servers/rendering/rendering_device.h
@@ -729,7 +729,7 @@ public:
int binding; // Binding index as specified in shader.
private:
- // In most cases only one ID is provided per binding, so avoid allocating memory unnecesarily for performance.
+ // In most cases only one ID is provided per binding, so avoid allocating memory unnecessarily for performance.
RID id; // If only one is provided, this is used.
Vector<RID> ids; // If multiple ones are provided, this is used instead.
diff --git a/servers/rendering/rendering_server_default.cpp b/servers/rendering/rendering_server_default.cpp
index af02e25cd9..3969682e15 100644
--- a/servers/rendering/rendering_server_default.cpp
+++ b/servers/rendering/rendering_server_default.cpp
@@ -399,6 +399,8 @@ RenderingServerDefault::RenderingServerDefault(bool p_create_thread) :
RSG::scene = sr;
RSG::rasterizer = RendererCompositor::create();
RSG::canvas_texture_storage = RSG::rasterizer->get_canvas_texture_storage();
+ RSG::decal_atlas_storage = RSG::rasterizer->get_decal_atlas_storage();
+ RSG::material_storage = RSG::rasterizer->get_material_storage();
RSG::texture_storage = RSG::rasterizer->get_texture_storage();
RSG::storage = RSG::rasterizer->get_storage();
RSG::canvas_render = RSG::rasterizer->get_canvas();
diff --git a/servers/rendering/rendering_server_default.h b/servers/rendering/rendering_server_default.h
index d75caae018..52e0c2c0ac 100644
--- a/servers/rendering/rendering_server_default.h
+++ b/servers/rendering/rendering_server_default.h
@@ -213,14 +213,13 @@ public:
FUNC2(texture_set_force_redraw_if_visible, RID, bool)
-//from now on, calls forwarded to this singleton
+ /* SHADER API */
+
#undef ServerName
#undef server_name
-#define ServerName RendererStorage
-#define server_name RSG::storage
-
- /* SHADER API */
+#define ServerName RendererMaterialStorage
+#define server_name RSG::material_storage
FUNCRIDSPLIT(shader)
@@ -249,6 +248,13 @@ public:
/* MESH API */
+//from now on, calls forwarded to this singleton
+#undef ServerName
+#undef server_name
+
+#define ServerName RendererStorage
+#define server_name RSG::storage
+
virtual RID mesh_create_from_surfaces(const Vector<SurfaceData> &p_surfaces, int p_blend_shape_count = 0) override {
RID mesh = RSG::storage->mesh_allocate();
@@ -385,6 +391,12 @@ public:
/* DECAL API */
+#undef ServerName
+#undef server_name
+
+#define ServerName RendererDecalAtlasStorage
+#define server_name RSG::decal_atlas_storage
+
FUNCRIDSPLIT(decal)
FUNC2(decal_set_extents, RID, const Vector3 &)
@@ -399,6 +411,13 @@ public:
/* BAKED LIGHT API */
+//from now on, calls forwarded to this singleton
+#undef ServerName
+#undef server_name
+
+#define ServerName RendererStorage
+#define server_name RSG::storage
+
FUNCRIDSPLIT(voxel_gi)
FUNC8(voxel_gi_allocate_data, RID, const Transform3D &, const AABB &, const Vector3i &, const Vector<uint8_t> &, const Vector<uint8_t> &, const Vector<uint8_t> &, const Vector<int> &)
@@ -857,8 +876,8 @@ public:
#undef server_name
#undef ServerName
//from now on, calls forwarded to this singleton
-#define ServerName RendererStorage
-#define server_name RSG::storage
+#define ServerName RendererMaterialStorage
+#define server_name RSG::material_storage
FUNC3(global_variable_add, const StringName &, GlobalVariableType, const Variant &)
FUNC1(global_variable_remove, const StringName &)
diff --git a/servers/rendering/rendering_server_globals.cpp b/servers/rendering/rendering_server_globals.cpp
index 83aa8959c1..6a2ba5ee6b 100644
--- a/servers/rendering/rendering_server_globals.cpp
+++ b/servers/rendering/rendering_server_globals.cpp
@@ -33,6 +33,8 @@
bool RenderingServerGlobals::threaded = false;
RendererCanvasTextureStorage *RenderingServerGlobals::canvas_texture_storage = nullptr;
+RendererDecalAtlasStorage *RenderingServerGlobals::decal_atlas_storage = nullptr;
+RendererMaterialStorage *RenderingServerGlobals::material_storage = nullptr;
RendererTextureStorage *RenderingServerGlobals::texture_storage = nullptr;
RendererStorage *RenderingServerGlobals::storage = nullptr;
RendererCanvasRender *RenderingServerGlobals::canvas_render = nullptr;
diff --git a/servers/rendering/rendering_server_globals.h b/servers/rendering/rendering_server_globals.h
index 2bef490760..2f9eddff09 100644
--- a/servers/rendering/rendering_server_globals.h
+++ b/servers/rendering/rendering_server_globals.h
@@ -35,6 +35,8 @@
#include "servers/rendering/renderer_canvas_render.h"
#include "servers/rendering/renderer_scene.h"
#include "servers/rendering/storage/canvas_texture_storage.h"
+#include "servers/rendering/storage/decal_atlas_storage.h"
+#include "servers/rendering/storage/material_storage.h"
#include "servers/rendering/storage/texture_storage.h"
class RendererCanvasCull;
@@ -46,7 +48,9 @@ public:
static bool threaded;
static RendererCanvasTextureStorage *canvas_texture_storage;
+ static RendererMaterialStorage *material_storage;
static RendererTextureStorage *texture_storage;
+ static RendererDecalAtlasStorage *decal_atlas_storage;
static RendererStorage *storage;
static RendererCanvasRender *canvas_render;
static RendererCompositor *rasterizer;
diff --git a/servers/rendering/shader_language.cpp b/servers/rendering/shader_language.cpp
index 08f1ced803..a6f3a48398 100644
--- a/servers/rendering/shader_language.cpp
+++ b/servers/rendering/shader_language.cpp
@@ -9034,7 +9034,7 @@ Error ShaderLanguage::compile(const String &p_code, const ShaderCompileInfo &p_i
return OK;
}
-Error ShaderLanguage::complete(const String &p_code, const ShaderCompileInfo &p_info, List<ScriptCodeCompletionOption> *r_options, String &r_call_hint) {
+Error ShaderLanguage::complete(const String &p_code, const ShaderCompileInfo &p_info, List<ScriptLanguage::CodeCompletionOption> *r_options, String &r_call_hint) {
clear();
code = p_code;
@@ -9053,7 +9053,7 @@ Error ShaderLanguage::complete(const String &p_code, const ShaderCompileInfo &p_
} break;
case COMPLETION_SHADER_TYPE: {
for (const String &shader_type : p_info.shader_types) {
- ScriptCodeCompletionOption option(shader_type, ScriptCodeCompletionOption::KIND_PLAIN_TEXT);
+ ScriptLanguage::CodeCompletionOption option(shader_type, ScriptLanguage::CODE_COMPLETION_KIND_PLAIN_TEXT);
r_options->push_back(option);
}
return OK;
@@ -9073,7 +9073,7 @@ Error ShaderLanguage::complete(const String &p_code, const ShaderCompileInfo &p_
if (!found) {
for (int j = 0; j < info.options.size(); j++) {
- ScriptCodeCompletionOption option(String(info.name) + "_" + String(info.options[j]), ScriptCodeCompletionOption::KIND_PLAIN_TEXT);
+ ScriptLanguage::CodeCompletionOption option(String(info.name) + "_" + String(info.options[j]), ScriptLanguage::CODE_COMPLETION_KIND_PLAIN_TEXT);
r_options->push_back(option);
}
}
@@ -9081,7 +9081,7 @@ Error ShaderLanguage::complete(const String &p_code, const ShaderCompileInfo &p_
const String name = String(info.name);
if (!shader->render_modes.has(name)) {
- ScriptCodeCompletionOption option(name, ScriptCodeCompletionOption::KIND_PLAIN_TEXT);
+ ScriptLanguage::CodeCompletionOption option(name, ScriptLanguage::CODE_COMPLETION_KIND_PLAIN_TEXT);
r_options->push_back(option);
}
}
@@ -9093,7 +9093,7 @@ Error ShaderLanguage::complete(const String &p_code, const ShaderCompileInfo &p_
if (shader->structs.has(completion_struct)) {
StructNode *node = shader->structs[completion_struct].shader_struct;
for (int i = 0; i < node->members.size(); i++) {
- ScriptCodeCompletionOption option(node->members[i]->name, ScriptCodeCompletionOption::KIND_MEMBER);
+ ScriptLanguage::CodeCompletionOption option(node->members[i]->name, ScriptLanguage::CODE_COMPLETION_KIND_MEMBER);
r_options->push_back(option);
}
}
@@ -9115,7 +9115,7 @@ Error ShaderLanguage::complete(const String &p_code, const ShaderCompileInfo &p_
if (found) {
continue;
}
- ScriptCodeCompletionOption option(E.key, ScriptCodeCompletionOption::KIND_FUNCTION);
+ ScriptLanguage::CodeCompletionOption option(E.key, ScriptLanguage::CODE_COMPLETION_KIND_FUNCTION);
r_options->push_back(option);
}
@@ -9124,7 +9124,7 @@ Error ShaderLanguage::complete(const String &p_code, const ShaderCompileInfo &p_
case COMPLETION_IDENTIFIER:
case COMPLETION_FUNCTION_CALL: {
bool comp_ident = completion_type == COMPLETION_IDENTIFIER;
- Map<String, ScriptCodeCompletionOption::Kind> matches;
+ Map<String, ScriptLanguage::CodeCompletionKind> matches;
StringName skip_function;
BlockNode *block = completion_block;
@@ -9133,7 +9133,7 @@ Error ShaderLanguage::complete(const String &p_code, const ShaderCompileInfo &p_
if (comp_ident) {
for (const KeyValue<StringName, BlockNode::Variable> &E : block->variables) {
if (E.value.line < completion_line) {
- matches.insert(E.key, ScriptCodeCompletionOption::KIND_VARIABLE);
+ matches.insert(E.key, ScriptLanguage::CODE_COMPLETION_KIND_VARIABLE);
}
}
}
@@ -9141,7 +9141,7 @@ Error ShaderLanguage::complete(const String &p_code, const ShaderCompileInfo &p_
if (block->parent_function) {
if (comp_ident) {
for (int i = 0; i < block->parent_function->arguments.size(); i++) {
- matches.insert(block->parent_function->arguments[i].name, ScriptCodeCompletionOption::KIND_VARIABLE);
+ matches.insert(block->parent_function->arguments[i].name, ScriptLanguage::CODE_COMPLETION_KIND_VARIABLE);
}
}
skip_function = block->parent_function->name;
@@ -9152,9 +9152,9 @@ Error ShaderLanguage::complete(const String &p_code, const ShaderCompileInfo &p_
if (comp_ident) {
if (p_info.functions.has("global")) {
for (const KeyValue<StringName, BuiltInInfo> &E : p_info.functions["global"].built_ins) {
- ScriptCodeCompletionOption::Kind kind = ScriptCodeCompletionOption::KIND_MEMBER;
+ ScriptLanguage::CodeCompletionKind kind = ScriptLanguage::CODE_COMPLETION_KIND_MEMBER;
if (E.value.constant) {
- kind = ScriptCodeCompletionOption::KIND_CONSTANT;
+ kind = ScriptLanguage::CODE_COMPLETION_KIND_CONSTANT;
}
matches.insert(E.key, kind);
}
@@ -9162,9 +9162,9 @@ Error ShaderLanguage::complete(const String &p_code, const ShaderCompileInfo &p_
if (p_info.functions.has("constants")) {
for (const KeyValue<StringName, BuiltInInfo> &E : p_info.functions["constants"].built_ins) {
- ScriptCodeCompletionOption::Kind kind = ScriptCodeCompletionOption::KIND_MEMBER;
+ ScriptLanguage::CodeCompletionKind kind = ScriptLanguage::CODE_COMPLETION_KIND_MEMBER;
if (E.value.constant) {
- kind = ScriptCodeCompletionOption::KIND_CONSTANT;
+ kind = ScriptLanguage::CODE_COMPLETION_KIND_CONSTANT;
}
matches.insert(E.key, kind);
}
@@ -9172,22 +9172,22 @@ Error ShaderLanguage::complete(const String &p_code, const ShaderCompileInfo &p_
if (skip_function != StringName() && p_info.functions.has(skip_function)) {
for (const KeyValue<StringName, BuiltInInfo> &E : p_info.functions[skip_function].built_ins) {
- ScriptCodeCompletionOption::Kind kind = ScriptCodeCompletionOption::KIND_MEMBER;
+ ScriptLanguage::CodeCompletionKind kind = ScriptLanguage::CODE_COMPLETION_KIND_MEMBER;
if (E.value.constant) {
- kind = ScriptCodeCompletionOption::KIND_CONSTANT;
+ kind = ScriptLanguage::CODE_COMPLETION_KIND_CONSTANT;
}
matches.insert(E.key, kind);
}
}
for (const KeyValue<StringName, ShaderNode::Constant> &E : shader->constants) {
- matches.insert(E.key, ScriptCodeCompletionOption::KIND_CONSTANT);
+ matches.insert(E.key, ScriptLanguage::CODE_COMPLETION_KIND_CONSTANT);
}
for (const KeyValue<StringName, ShaderNode::Varying> &E : shader->varyings) {
- matches.insert(E.key, ScriptCodeCompletionOption::KIND_VARIABLE);
+ matches.insert(E.key, ScriptLanguage::CODE_COMPLETION_KIND_VARIABLE);
}
for (const KeyValue<StringName, ShaderNode::Uniform> &E : shader->uniforms) {
- matches.insert(E.key, ScriptCodeCompletionOption::KIND_MEMBER);
+ matches.insert(E.key, ScriptLanguage::CODE_COMPLETION_KIND_MEMBER);
}
}
@@ -9195,7 +9195,7 @@ Error ShaderLanguage::complete(const String &p_code, const ShaderCompileInfo &p_
if (!shader->functions[i].callable || shader->functions[i].name == skip_function) {
continue;
}
- matches.insert(String(shader->functions[i].name), ScriptCodeCompletionOption::KIND_FUNCTION);
+ matches.insert(String(shader->functions[i].name), ScriptLanguage::CODE_COMPLETION_KIND_FUNCTION);
}
int idx = 0;
@@ -9203,7 +9203,7 @@ Error ShaderLanguage::complete(const String &p_code, const ShaderCompileInfo &p_
if (stages && stages->has(skip_function)) {
for (const KeyValue<StringName, StageFunctionInfo> &E : (*stages)[skip_function].stage_functions) {
- matches.insert(String(E.key), ScriptCodeCompletionOption::KIND_FUNCTION);
+ matches.insert(String(E.key), ScriptLanguage::CODE_COMPLETION_KIND_FUNCTION);
}
}
@@ -9212,7 +9212,7 @@ Error ShaderLanguage::complete(const String &p_code, const ShaderCompileInfo &p_
idx++;
continue;
}
- matches.insert(String(builtin_func_defs[idx].name), ScriptCodeCompletionOption::KIND_FUNCTION);
+ matches.insert(String(builtin_func_defs[idx].name), ScriptLanguage::CODE_COMPLETION_KIND_FUNCTION);
idx++;
}
@@ -9226,15 +9226,15 @@ Error ShaderLanguage::complete(const String &p_code, const ShaderCompileInfo &p_
continue;
}
if (builtin_func_defs[idx].tag == completion_class) {
- matches.insert(String(builtin_func_defs[idx].name), ScriptCodeCompletionOption::KIND_FUNCTION);
+ matches.insert(String(builtin_func_defs[idx].name), ScriptLanguage::CODE_COMPLETION_KIND_FUNCTION);
}
idx++;
}
}
- for (const KeyValue<String, ScriptCodeCompletionOption::Kind> &E : matches) {
- ScriptCodeCompletionOption option(E.key, E.value);
- if (E.value == ScriptCodeCompletionOption::KIND_FUNCTION) {
+ for (const KeyValue<String, ScriptLanguage::CodeCompletionKind> &E : matches) {
+ ScriptLanguage::CodeCompletionOption option(E.key, E.value);
+ if (E.value == ScriptLanguage::CODE_COMPLETION_KIND_FUNCTION) {
option.insert_text += "(";
}
r_options->push_back(option);
@@ -9483,18 +9483,18 @@ Error ShaderLanguage::complete(const String &p_code, const ShaderCompileInfo &p_
}
for (int i = 0; i < limit; i++) {
- r_options->push_back(ScriptCodeCompletionOption(String::chr(colv[i]), ScriptCodeCompletionOption::KIND_PLAIN_TEXT));
- r_options->push_back(ScriptCodeCompletionOption(String::chr(coordv[i]), ScriptCodeCompletionOption::KIND_PLAIN_TEXT));
- r_options->push_back(ScriptCodeCompletionOption(String::chr(coordt[i]), ScriptCodeCompletionOption::KIND_PLAIN_TEXT));
+ r_options->push_back(ScriptLanguage::CodeCompletionOption(String::chr(colv[i]), ScriptLanguage::CODE_COMPLETION_KIND_PLAIN_TEXT));
+ r_options->push_back(ScriptLanguage::CodeCompletionOption(String::chr(coordv[i]), ScriptLanguage::CODE_COMPLETION_KIND_PLAIN_TEXT));
+ r_options->push_back(ScriptLanguage::CodeCompletionOption(String::chr(coordt[i]), ScriptLanguage::CODE_COMPLETION_KIND_PLAIN_TEXT));
}
} break;
case COMPLETION_HINT: {
if (completion_base == DataType::TYPE_VEC4) {
- ScriptCodeCompletionOption option("hint_color", ScriptCodeCompletionOption::KIND_PLAIN_TEXT);
+ ScriptLanguage::CodeCompletionOption option("hint_color", ScriptLanguage::CODE_COMPLETION_KIND_PLAIN_TEXT);
r_options->push_back(option);
} else if ((completion_base == DataType::TYPE_INT || completion_base == DataType::TYPE_FLOAT) && !completion_base_array) {
- ScriptCodeCompletionOption option("hint_range", ScriptCodeCompletionOption::KIND_PLAIN_TEXT);
+ ScriptLanguage::CodeCompletionOption option("hint_range", ScriptLanguage::CODE_COMPLETION_KIND_PLAIN_TEXT);
if (completion_base == DataType::TYPE_INT) {
option.insert_text = "hint_range(0, 100, 1)";
@@ -9530,12 +9530,12 @@ Error ShaderLanguage::complete(const String &p_code, const ShaderCompileInfo &p_
}
for (int i = 0; i < options.size(); i++) {
- ScriptCodeCompletionOption option(options[i], ScriptCodeCompletionOption::KIND_PLAIN_TEXT);
+ ScriptLanguage::CodeCompletionOption option(options[i], ScriptLanguage::CODE_COMPLETION_KIND_PLAIN_TEXT);
r_options->push_back(option);
}
}
if (!completion_base_array) {
- ScriptCodeCompletionOption option("instance_index", ScriptCodeCompletionOption::KIND_PLAIN_TEXT);
+ ScriptLanguage::CodeCompletionOption option("instance_index", ScriptLanguage::CODE_COMPLETION_KIND_PLAIN_TEXT);
option.insert_text = "instance_index(0)";
r_options->push_back(option);
}
diff --git a/servers/rendering/shader_language.h b/servers/rendering/shader_language.h
index f39b21621d..e5ac14a7db 100644
--- a/servers/rendering/shader_language.h
+++ b/servers/rendering/shader_language.h
@@ -1091,7 +1091,7 @@ public:
};
Error compile(const String &p_code, const ShaderCompileInfo &p_info);
- Error complete(const String &p_code, const ShaderCompileInfo &p_info, List<ScriptCodeCompletionOption> *r_options, String &r_call_hint);
+ Error complete(const String &p_code, const ShaderCompileInfo &p_info, List<ScriptLanguage::CodeCompletionOption> *r_options, String &r_call_hint);
String get_error_text();
int get_error_line();
diff --git a/servers/rendering/shader_types.cpp b/servers/rendering/shader_types.cpp
index f0785d4042..27a69fbc2e 100644
--- a/servers/rendering/shader_types.cpp
+++ b/servers/rendering/shader_types.cpp
@@ -178,7 +178,6 @@ ShaderTypes::ShaderTypes() {
shader_modes[RS::SHADER_SPATIAL].functions["light"].built_ins["LIGHT"] = constt(ShaderLanguage::TYPE_VEC3);
shader_modes[RS::SHADER_SPATIAL].functions["light"].built_ins["LIGHT_COLOR"] = constt(ShaderLanguage::TYPE_VEC3);
shader_modes[RS::SHADER_SPATIAL].functions["light"].built_ins["ATTENUATION"] = constt(ShaderLanguage::TYPE_FLOAT);
- shader_modes[RS::SHADER_SPATIAL].functions["light"].built_ins["SHADOW_ATTENUATION"] = constt(ShaderLanguage::TYPE_VEC3);
shader_modes[RS::SHADER_SPATIAL].functions["light"].built_ins["ALBEDO"] = constt(ShaderLanguage::TYPE_VEC3);
shader_modes[RS::SHADER_SPATIAL].functions["light"].built_ins["BACKLIGHT"] = constt(ShaderLanguage::TYPE_VEC3);
shader_modes[RS::SHADER_SPATIAL].functions["light"].built_ins["METALLIC"] = constt(ShaderLanguage::TYPE_FLOAT);
diff --git a/servers/rendering/storage/decal_atlas_storage.h b/servers/rendering/storage/decal_atlas_storage.h
new file mode 100644
index 0000000000..62cd76881b
--- /dev/null
+++ b/servers/rendering/storage/decal_atlas_storage.h
@@ -0,0 +1,60 @@
+/*************************************************************************/
+/* decal_atlas_storage.h */
+/*************************************************************************/
+/* This file is part of: */
+/* GODOT ENGINE */
+/* https://godotengine.org */
+/*************************************************************************/
+/* Copyright (c) 2007-2022 Juan Linietsky, Ariel Manzur. */
+/* Copyright (c) 2014-2022 Godot Engine contributors (cf. AUTHORS.md). */
+/* */
+/* Permission is hereby granted, free of charge, to any person obtaining */
+/* a copy of this software and associated documentation files (the */
+/* "Software"), to deal in the Software without restriction, including */
+/* without limitation the rights to use, copy, modify, merge, publish, */
+/* distribute, sublicense, and/or sell copies of the Software, and to */
+/* permit persons to whom the Software is furnished to do so, subject to */
+/* the following conditions: */
+/* */
+/* The above copyright notice and this permission notice shall be */
+/* included in all copies or substantial portions of the Software. */
+/* */
+/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
+/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
+/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
+/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
+/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
+/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
+/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
+/*************************************************************************/
+
+#ifndef DECAL_ATLAS_STORAGE_H
+#define DECAL_ATLAS_STORAGE_H
+
+#include "servers/rendering_server.h"
+
+class RendererDecalAtlasStorage {
+public:
+ virtual ~RendererDecalAtlasStorage(){};
+
+ virtual RID decal_allocate() = 0;
+ virtual void decal_initialize(RID p_rid) = 0;
+ virtual void decal_free(RID p_rid) = 0;
+
+ virtual void decal_set_extents(RID p_decal, const Vector3 &p_extents) = 0;
+ virtual void decal_set_texture(RID p_decal, RS::DecalTexture p_type, RID p_texture) = 0;
+ virtual void decal_set_emission_energy(RID p_decal, float p_energy) = 0;
+ virtual void decal_set_albedo_mix(RID p_decal, float p_mix) = 0;
+ virtual void decal_set_modulate(RID p_decal, const Color &p_modulate) = 0;
+ virtual void decal_set_cull_mask(RID p_decal, uint32_t p_layers) = 0;
+ virtual void decal_set_distance_fade(RID p_decal, bool p_enabled, float p_begin, float p_length) = 0;
+ virtual void decal_set_fade(RID p_decal, float p_above, float p_below) = 0;
+ virtual void decal_set_normal_fade(RID p_decal, float p_fade) = 0;
+
+ virtual AABB decal_get_aabb(RID p_decal) const = 0;
+
+ virtual void texture_add_to_decal_atlas(RID p_texture, bool p_panorama_to_dp = false) = 0;
+ virtual void texture_remove_from_decal_atlas(RID p_texture, bool p_panorama_to_dp = false) = 0;
+};
+
+#endif // !DECAL_ATLAS_STORAGE_H
diff --git a/servers/rendering/storage/material_storage.h b/servers/rendering/storage/material_storage.h
new file mode 100644
index 0000000000..f0363f129a
--- /dev/null
+++ b/servers/rendering/storage/material_storage.h
@@ -0,0 +1,101 @@
+/*************************************************************************/
+/* material_storage.h */
+/*************************************************************************/
+/* This file is part of: */
+/* GODOT ENGINE */
+/* https://godotengine.org */
+/*************************************************************************/
+/* Copyright (c) 2007-2022 Juan Linietsky, Ariel Manzur. */
+/* Copyright (c) 2014-2022 Godot Engine contributors (cf. AUTHORS.md). */
+/* */
+/* Permission is hereby granted, free of charge, to any person obtaining */
+/* a copy of this software and associated documentation files (the */
+/* "Software"), to deal in the Software without restriction, including */
+/* without limitation the rights to use, copy, modify, merge, publish, */
+/* distribute, sublicense, and/or sell copies of the Software, and to */
+/* permit persons to whom the Software is furnished to do so, subject to */
+/* the following conditions: */
+/* */
+/* The above copyright notice and this permission notice shall be */
+/* included in all copies or substantial portions of the Software. */
+/* */
+/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
+/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
+/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
+/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
+/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
+/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
+/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
+/*************************************************************************/
+
+#ifndef MATERIAL_STORAGE_H
+#define MATERIAL_STORAGE_H
+
+#include "servers/rendering/renderer_storage.h"
+#include "servers/rendering_server.h"
+
+class RendererMaterialStorage {
+public:
+ virtual ~RendererMaterialStorage(){};
+
+ /* GLOBAL VARIABLE API */
+ virtual void global_variable_add(const StringName &p_name, RS::GlobalVariableType p_type, const Variant &p_value) = 0;
+ virtual void global_variable_remove(const StringName &p_name) = 0;
+ virtual Vector<StringName> global_variable_get_list() const = 0;
+
+ virtual void global_variable_set(const StringName &p_name, const Variant &p_value) = 0;
+ virtual void global_variable_set_override(const StringName &p_name, const Variant &p_value) = 0;
+ virtual Variant global_variable_get(const StringName &p_name) const = 0;
+ virtual RS::GlobalVariableType global_variable_get_type(const StringName &p_name) const = 0;
+
+ virtual void global_variables_load_settings(bool p_load_textures = true) = 0;
+ virtual void global_variables_clear() = 0;
+
+ virtual int32_t global_variables_instance_allocate(RID p_instance) = 0;
+ virtual void global_variables_instance_free(RID p_instance) = 0;
+ virtual void global_variables_instance_update(RID p_instance, int p_index, const Variant &p_value) = 0;
+
+ /* SHADER API */
+ virtual RID shader_allocate() = 0;
+ virtual void shader_initialize(RID p_rid) = 0;
+ virtual void shader_free(RID p_rid) = 0;
+
+ virtual void shader_set_code(RID p_shader, const String &p_code) = 0;
+ virtual String shader_get_code(RID p_shader) const = 0;
+ virtual void shader_get_param_list(RID p_shader, List<PropertyInfo> *p_param_list) const = 0;
+
+ virtual void shader_set_default_texture_param(RID p_shader, const StringName &p_name, RID p_texture, int p_index) = 0;
+ virtual RID shader_get_default_texture_param(RID p_shader, const StringName &p_name, int p_index) const = 0;
+ virtual Variant shader_get_param_default(RID p_material, const StringName &p_param) const = 0;
+
+ virtual RS::ShaderNativeSourceCode shader_get_native_source_code(RID p_shader) const = 0;
+
+ /* MATERIAL API */
+
+ virtual RID material_allocate() = 0;
+ virtual void material_initialize(RID p_rid) = 0;
+ virtual void material_free(RID p_rid) = 0;
+
+ virtual void material_set_render_priority(RID p_material, int priority) = 0;
+ virtual void material_set_shader(RID p_shader_material, RID p_shader) = 0;
+
+ virtual void material_set_param(RID p_material, const StringName &p_param, const Variant &p_value) = 0;
+ virtual Variant material_get_param(RID p_material, const StringName &p_param) const = 0;
+
+ virtual void material_set_next_pass(RID p_material, RID p_next_material) = 0;
+
+ virtual bool material_is_animated(RID p_material) = 0;
+ virtual bool material_casts_shadows(RID p_material) = 0;
+
+ struct InstanceShaderParam {
+ PropertyInfo info;
+ int index;
+ Variant default_value;
+ };
+
+ virtual void material_get_instance_shader_parameters(RID p_material, List<InstanceShaderParam> *r_parameters) = 0;
+
+ virtual void material_update_dependency(RID p_material, RendererStorage::DependencyTracker *p_instance) = 0;
+};
+
+#endif // !MATERIAL_STORAGE_H
diff --git a/tests/core/io/test_resource.h b/tests/core/io/test_resource.h
index b3983bb06d..84d651b63f 100644
--- a/tests/core/io/test_resource.h
+++ b/tests/core/io/test_resource.h
@@ -69,7 +69,7 @@ TEST_CASE("[Resource] Duplication") {
TEST_CASE("[Resource] Saving and loading") {
Ref<Resource> resource = memnew(Resource);
resource->set_name("Hello world");
- resource->set_meta(" ExampleMetadata ", Vector2i(40, 80));
+ resource->set_meta("ExampleMetadata", Vector2i(40, 80));
resource->set_meta("string", "The\nstring\nwith\nunnecessary\nline\n\t\\\nbreaks");
Ref<Resource> child_resource = memnew(Resource);
child_resource->set_name("I'm a child resource");
@@ -84,7 +84,7 @@ TEST_CASE("[Resource] Saving and loading") {
loaded_resource_binary->get_name() == "Hello world",
"The loaded resource name should be equal to the expected value.");
CHECK_MESSAGE(
- loaded_resource_binary->get_meta(" ExampleMetadata ") == Vector2i(40, 80),
+ loaded_resource_binary->get_meta("ExampleMetadata") == Vector2i(40, 80),
"The loaded resource metadata should be equal to the expected value.");
CHECK_MESSAGE(
loaded_resource_binary->get_meta("string") == "The\nstring\nwith\nunnecessary\nline\n\t\\\nbreaks",
@@ -99,7 +99,7 @@ TEST_CASE("[Resource] Saving and loading") {
loaded_resource_text->get_name() == "Hello world",
"The loaded resource name should be equal to the expected value.");
CHECK_MESSAGE(
- loaded_resource_text->get_meta(" ExampleMetadata ") == Vector2i(40, 80),
+ loaded_resource_text->get_meta("ExampleMetadata") == Vector2i(40, 80),
"The loaded resource metadata should be equal to the expected value.");
CHECK_MESSAGE(
loaded_resource_text->get_meta("string") == "The\nstring\nwith\nunnecessary\nline\n\t\\\nbreaks",
diff --git a/tests/core/math/test_astar.h b/tests/core/math/test_astar.h
index 859172dca3..1306d3c20e 100644
--- a/tests/core/math/test_astar.h
+++ b/tests/core/math/test_astar.h
@@ -37,7 +37,7 @@
namespace TestAStar {
-class ABCX : public AStar {
+class ABCX : public AStar3D {
public:
enum {
A,
@@ -66,7 +66,7 @@ public:
}
};
-TEST_CASE("[AStar] ABC path") {
+TEST_CASE("[AStar3D] ABC path") {
ABCX abcx;
Vector<int> path = abcx.get_id_path(ABCX::A, ABCX::C);
REQUIRE(path.size() == 3);
@@ -75,7 +75,7 @@ TEST_CASE("[AStar] ABC path") {
CHECK(path[2] == ABCX::C);
}
-TEST_CASE("[AStar] ABCX path") {
+TEST_CASE("[AStar3D] ABCX path") {
ABCX abcx;
Vector<int> path = abcx.get_id_path(ABCX::X, ABCX::C);
REQUIRE(path.size() == 4);
@@ -85,8 +85,8 @@ TEST_CASE("[AStar] ABCX path") {
CHECK(path[3] == ABCX::C);
}
-TEST_CASE("[AStar] Add/Remove") {
- AStar a;
+TEST_CASE("[AStar3D] Add/Remove") {
+ AStar3D a;
// Manual tests.
a.add_point(1, Vector3(0, 0, 0));
@@ -213,13 +213,13 @@ TEST_CASE("[AStar] Add/Remove") {
// It's been great work, cheers. \(^ ^)/
}
-TEST_CASE("[Stress][AStar] Find paths") {
+TEST_CASE("[Stress][AStar3D] Find paths") {
// Random stress tests with Floyd-Warshall.
const int N = 30;
Math::seed(0);
for (int test = 0; test < 1000; test++) {
- AStar a;
+ AStar3D a;
Vector3 p[N];
bool adj[N][N] = { { false } };
diff --git a/tests/core/math/test_color.h b/tests/core/math/test_color.h
index 702f17a9cf..6f40f8ecc0 100644
--- a/tests/core/math/test_color.h
+++ b/tests/core/math/test_color.h
@@ -144,6 +144,24 @@ TEST_CASE("[Color] Conversion methods") {
"The string representation should match the expected value.");
}
+TEST_CASE("[Color] Linear <-> sRGB conversion") {
+ const Color color = Color(0.35, 0.5, 0.6, 0.7);
+ const Color color_linear = color.to_linear();
+ const Color color_srgb = color.to_srgb();
+ CHECK_MESSAGE(
+ color_linear.is_equal_approx(Color(0.100481, 0.214041, 0.318547, 0.7)),
+ "The color converted to linear color space should match the expected value.");
+ CHECK_MESSAGE(
+ color_srgb.is_equal_approx(Color(0.62621, 0.735357, 0.797738, 0.7)),
+ "The color converted to sRGB color space should match the expected value.");
+ CHECK_MESSAGE(
+ color_linear.to_srgb().is_equal_approx(Color(0.35, 0.5, 0.6, 0.7)),
+ "The linear color converted back to sRGB color space should match the expected value.");
+ CHECK_MESSAGE(
+ color_srgb.to_linear().is_equal_approx(Color(0.35, 0.5, 0.6, 0.7)),
+ "The sRGB color converted back to linear color space should match the expected value.");
+}
+
TEST_CASE("[Color] Named colors") {
CHECK_MESSAGE(
Color::named("red").is_equal_approx(Color::hex(0xFF0000FF)),
diff --git a/tests/core/object/test_object.h b/tests/core/object/test_object.h
index e44b93bb66..5b9d9cab53 100644
--- a/tests/core/object/test_object.h
+++ b/tests/core/object/test_object.h
@@ -133,7 +133,7 @@ TEST_CASE("[Object] Core getters") {
}
TEST_CASE("[Object] Metadata") {
- const String meta_path = "hello/world complex métadata\n\n\t\tpath";
+ const String meta_path = "complex_metadata_path";
Object object;
object.set_meta(meta_path, Color(0, 1, 0));
diff --git a/thirdparty/README.md b/thirdparty/README.md
index 547dfad964..02d73fbe18 100644
--- a/thirdparty/README.md
+++ b/thirdparty/README.md
@@ -20,7 +20,7 @@ Files extracted from upstream source:
## basis_universal
- Upstream: https://github.com/BinomialLLC/basis_universal
-- Version: git (646a9f826131cb0b9e14b5e4740874808315f83a, 2021)
+- Version: git (1531cfaf9ed5232248a0a45736686a849ca3befc, 2022)
- License: Apache 2.0
Files extracted from upstream source:
@@ -29,6 +29,18 @@ Files extracted from upstream source:
- `LICENSE`
+## brotli
+
+- Upstream: https://github.com/google/brotli
+- Version: git (f4153a09f87cbb9c826d8fc12c74642bb2d879ea, 2022)
+- License: MIT
+
+Files extracted from upstream source:
+
+- `common/`, `dec/` and `include/` folders
+- `LICENSE`
+
+
## certs
- Upstream: Mozilla, via https://github.com/bagder/ca-bundle
@@ -118,25 +130,25 @@ Files extracted from upstream source:
## fonts
-- `NotoSans*.ttf`, `NotoNaskhArabicUI_*.ttf`:
+- `NotoSans*.woff2`, `NotoNaskhArabicUI_*.woff2`:
* Upstream: https://github.com/googlefonts/noto-fonts
* Version: v2017-10-24-phase3-second-cleanup
* License: OFL-1.1
* Comment: Use UI font variant if available, because it has tight vertical metrics and
good for UI.
-- `JetBrainsMono_Regular.ttf`:
+- `JetBrainsMono_Regular.woff2`:
* Upstream: https://github.com/JetBrains/JetBrainsMono
* Version: 2.242
* License: OFL-1.1
-- `DroidSans*.ttf`:
+- `DroidSans*.woff2`:
* Upstream: https://android.googlesource.com/platform/frameworks/base/+/master/data/fonts/
* Version: ? (pre-2014 commit when DroidSansJapanese.ttf was obsoleted)
* License: Apache 2.0
-- `OpenSans_SemiBold.ttf`:
+- `OpenSans_SemiBold.woff2`:
* Upstream: https://fonts.google.com/specimen/Open+Sans
* Version: 1.10 (downloaded from Google Fonts in February 2021)
* License: Apache 2.0
-
+- All fonts are converted from the `.ttf` sources using `https://github.com/google/woff2` tool.
## freetype
@@ -192,7 +204,7 @@ Files extracted from upstream source:
## harfbuzz
- Upstream: https://github.com/harfbuzz/harfbuzz
-- Version: 4.0.1 (1f79ba9407ecd54e382997940cbcc3fb71bef8be, 2022)
+- Version: 4.2.0 (9d5730b958974bc9db95e46e6bad52e9e9cd6e1c, 2022)
- License: MIT
Files extracted from upstream source:
@@ -371,17 +383,17 @@ that file when upgrading.
## minizip
-- Upstream: http://www.zlib.net
-- Version: 1.2.11 (zlib contrib, 2017)
+- Upstream: https://www.zlib.net
+- Version: 1.2.12 (zlib contrib, 2022)
- License: zlib
Files extracted from the upstream source:
-- contrib/minizip/{crypt.h,ioapi.{c,h},zip.{c,h},unzip.{c,h}}
+- contrib/minizip/{crypt.h,ioapi.{c,h},unzip.{c,h},zip.{c,h}}
Important: Some files have Godot-made changes for use in core/io.
They are marked with `/* GODOT start */` and `/* GODOT end */`
-comments and a patch is provided in the minizip/ folder.
+comments and a patch is provided in the `patches` folder.
## misc
@@ -412,10 +424,10 @@ Collection of single-file libraries used in Godot components.
* Upstream: https://archive.blender.org/wiki/index.php/Dev:Shading/Tangent_Space_Normal_Maps/
* Version: 1.0 (2011)
* License: zlib
-- `open-simplex-noise.{c,h}`
- * Upstream: https://github.com/smcameron/open-simplex-noise-in-c
- * Version: git (826f1dd1724e6fb3ff45f58e48c0fbae864c3403, 2020) + custom changes
- * License: Public Domain or Unlicense
+- `FastNoiseLite.h}`
+ * Upstream: https://github.com/Auburn/FastNoiseLite
+ * Version: git (6be3d6bf7fb408de341285f9ee8a29b67fd953f1, 2022) + custom changes
+ * License: MIT
- `pcg.{cpp,h}`
* Upstream: http://www.pcg-random.org
* Version: minimal C implementation, http://www.pcg-random.org/download.html
@@ -676,7 +688,7 @@ Files extracted from upstream source:
SDK release: https://github.com/KhronosGroup/Vulkan-ValidationLayers/blob/master/layers/generated/vk_enum_string_helper.h
`vk_mem_alloc.h` is taken from https://github.com/GPUOpen-LibrariesAndSDKs/VulkanMemoryAllocator
-Version: 3.0.0-development (2022-02-24), commit `dc3f6bb9159df22ceed69c7765ddfb4fbb1b6ed0`
+Version: 3.0.1-development (2022-03-28), commit `5b598e0a359381d7e2a94149210a1b7642024ae5`
`vk_mem_alloc.cpp` is a Godot file and should be preserved on updates.
Patches in the `patches` directory should be re-applied after updates.
@@ -713,8 +725,8 @@ Files extracted from upstream source:
## zlib
-- Upstream: http://www.zlib.net
-- Version: 1.2.11 (2017)
+- Upstream: https://www.zlib.net
+- Version: 1.2.12 (2022)
- License: zlib
Files extracted from upstream source:
diff --git a/thirdparty/basis_universal/encoder/apg_bmp.c b/thirdparty/basis_universal/encoder/apg_bmp.c
deleted file mode 100644
index d342b20fc8..0000000000
--- a/thirdparty/basis_universal/encoder/apg_bmp.c
+++ /dev/null
@@ -1,541 +0,0 @@
-/*
-BMP File Reader/Writer Implementation
-Anton Gerdelan
-Version: 3
-Licence: see apg_bmp.h
-C99
-*/
-
-#ifdef _MSC_VER
-#define _CRT_SECURE_NO_WARNINGS 1
-#endif
-
-#include "apg_bmp.h"
-#include <assert.h>
-#include <stdbool.h>
-#include <stdint.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-/* Maximum pixel dimensions of width or height of an image. Should accommodate max used in graphics APIs.
- NOTE: 65536*65536 is the biggest number storable in 32 bits.
- This needs to be multiplied by n_channels so actual memory indices are not uint32 but size_t to avoid overflow.
- Note this will crash stb_image_write et al at maximum size which use 32bits, so reduce max size to accom. */
-#define _BMP_MAX_DIMS 65536
-#define _BMP_FILE_HDR_SZ 14
-#define _BMP_MIN_DIB_HDR_SZ 40
-#define _BMP_MIN_HDR_SZ ( _BMP_FILE_HDR_SZ + _BMP_MIN_DIB_HDR_SZ )
-#define _BMP_MAX_IMAGE_FILE_SIZE (1024ULL*1024ULL*1024ULL)
-
-#pragma pack( push, 1 ) // supported on GCC in addition to individual packing attribs
-/* All BMP files, regardless of type, start with this file header */
-typedef struct _bmp_file_header_t {
- char file_type[2];
- uint32_t file_sz;
- uint16_t reserved1;
- uint16_t reserved2;
- uint32_t image_data_offset;
-} _bmp_file_header_t;
-
-/* Following the file header is the BMP type header. this is the most commonly used format */
-typedef struct _bmp_dib_BITMAPINFOHEADER_t {
- uint32_t this_header_sz;
- int32_t w; // in older headers w & h these are shorts and may be unsigned
- int32_t h; //
- uint16_t n_planes; // must be 1
- uint16_t bpp; // bits per pixel. 1,4,8,16,24,32.
- uint32_t compression_method; // 16 and 32-bit images must have a value of 3 here
- uint32_t image_uncompressed_sz; // not consistently used in the wild, so ignored here.
- int32_t horiz_pixels_per_meter; // not used.
- int32_t vert_pixels_per_meter; // not used.
- uint32_t n_colours_in_palette; //
- uint32_t n_important_colours; // not used.
- /* NOTE(Anton) a DIB header may end here at 40-bytes. be careful using sizeof() */
- /* if 'compression' value, above, is set to 3 ie the image is 16 or 32-bit, then these colour channel masks follow the headers.
- these are big-endian order bit masks to assign bits of each pixel to different colours. bits used must be contiguous and not overlap. */
- uint32_t bitmask_r;
- uint32_t bitmask_g;
- uint32_t bitmask_b;
-} _bmp_dib_BITMAPINFOHEADER_t;
-#pragma pack( pop )
-
-typedef enum _bmp_compression_t {
- BI_RGB = 0,
- BI_RLE8 = 1,
- BI_RLE4 = 2,
- BI_BITFIELDS = 3,
- BI_JPEG = 4,
- BI_PNG = 5,
- BI_ALPHABITFIELDS = 6,
- BI_CMYK = 11,
- BI_CMYKRLE8 = 12,
- BI_CMYRLE4 = 13
-} _bmp_compression_t;
-
-/* convenience struct and file->memory function */
-typedef struct _entire_file_t {
- void* data;
- size_t sz;
-} _entire_file_t;
-
-/*
-RETURNS
-- true on success. record->data is allocated memory and must be freed by the caller.
-- false on any error. Any allocated memory is freed if false is returned */
-static bool _read_entire_file( const char* filename, _entire_file_t* record ) {
- FILE* fp = fopen( filename, "rb" );
- if ( !fp ) { return false; }
- fseek( fp, 0L, SEEK_END );
- record->sz = (size_t)ftell( fp );
-
- // Immediately bail on anything larger than _BMP_MAX_IMAGE_FILE_SIZE.
- if (record->sz > _BMP_MAX_IMAGE_FILE_SIZE) {
- fclose( fp );
- return false;
- }
-
- record->data = malloc( record->sz );
- if ( !record->data ) {
- fclose( fp );
- return false;
- }
- rewind( fp );
- size_t nr = fread( record->data, record->sz, 1, fp );
- fclose( fp );
- if ( 1 != nr ) { return false; }
- return true;
-}
-
-static bool _validate_file_hdr( _bmp_file_header_t* file_hdr_ptr, size_t file_sz ) {
- if ( !file_hdr_ptr ) { return false; }
- if ( file_hdr_ptr->file_type[0] != 'B' || file_hdr_ptr->file_type[1] != 'M' ) { return false; }
- if ( file_hdr_ptr->image_data_offset > file_sz ) { return false; }
- return true;
-}
-
-static bool _validate_dib_hdr( _bmp_dib_BITMAPINFOHEADER_t* dib_hdr_ptr, size_t file_sz ) {
- if ( !dib_hdr_ptr ) { return false; }
- if ( _BMP_FILE_HDR_SZ + dib_hdr_ptr->this_header_sz > file_sz ) { return false; }
- if ( ( 32 == dib_hdr_ptr->bpp || 16 == dib_hdr_ptr->bpp ) && ( BI_BITFIELDS != dib_hdr_ptr->compression_method && BI_ALPHABITFIELDS != dib_hdr_ptr->compression_method ) ) {
- return false;
- }
- if ( BI_RGB != dib_hdr_ptr->compression_method && BI_BITFIELDS != dib_hdr_ptr->compression_method && BI_ALPHABITFIELDS != dib_hdr_ptr->compression_method ) {
- return false;
- }
- // NOTE(Anton) using abs() in the if-statement was blowing up on large negative numbers. switched to labs()
- if ( 0 == dib_hdr_ptr->w || 0 == dib_hdr_ptr->h || labs( dib_hdr_ptr->w ) > _BMP_MAX_DIMS || labs( dib_hdr_ptr->h ) > _BMP_MAX_DIMS ) { return false; }
-
- /* NOTE(Anton) if images reliably used n_colours_in_palette we could have done a palette/file size integrity check here.
- because some always set 0 then we have to check every palette indexing as we read them */
- return true;
-}
-
-/* NOTE(Anton) this could have ifdef branches on different compilers for the intrinsics versions for perf */
-static uint32_t _bitscan( uint32_t dword ) {
- for ( uint32_t i = 0; i < 32; i++ ) {
- if ( 1 & dword ) { return i; }
- dword = dword >> 1;
- }
- return (uint32_t)-1;
-}
-
-unsigned char* apg_bmp_read( const char* filename, int* w, int* h, unsigned int* n_chans ) {
- if ( !filename || !w || !h || !n_chans ) { return NULL; }
-
- // read in the whole file into memory first - much faster than parsing on-the-fly
- _entire_file_t record;
- if ( !_read_entire_file( filename, &record ) ) { return NULL; }
- if ( record.sz < _BMP_MIN_HDR_SZ ) {
- free( record.data );
- return NULL;
- }
-
- // grab and validate the first, file, header
- _bmp_file_header_t* file_hdr_ptr = (_bmp_file_header_t*)record.data;
- if ( !_validate_file_hdr( file_hdr_ptr, record.sz ) ) {
- free( record.data );
- return NULL;
- }
-
- // grad and validate the second, DIB, header
- _bmp_dib_BITMAPINFOHEADER_t* dib_hdr_ptr = (_bmp_dib_BITMAPINFOHEADER_t*)( (uint8_t*)record.data + _BMP_FILE_HDR_SZ );
- if ( !_validate_dib_hdr( dib_hdr_ptr, record.sz ) ) {
- free( record.data );
- return NULL;
- }
-
- // bitmaps can have negative dims to indicate the image should be flipped
- uint32_t width = *w = abs( dib_hdr_ptr->w );
- uint32_t height = *h = abs( dib_hdr_ptr->h );
-
- // TODO(Anton) flip image memory at the end if this is true. because doing it per row was making me write bugs.
- // bool vertically_flip = dib_hdr_ptr->h > 0 ? false : true;
-
- // channel count and palette are not well defined in the header so we make a good guess here
- uint32_t n_dst_chans = 3, n_src_chans = 3;
- bool has_palette = false;
- switch ( dib_hdr_ptr->bpp ) {
- case 32: n_dst_chans = n_src_chans = 4; break; // technically can be RGB but not supported
- case 24: n_dst_chans = n_src_chans = 3; break; // technically can be RGBA but not supported
- case 8: // seems to always use a BGR0 palette, even for greyscale
- n_dst_chans = 3;
- has_palette = true;
- n_src_chans = 1;
- break;
- case 4: // always has a palette - needed for a MS-saved BMP
- n_dst_chans = 3;
- has_palette = true;
- n_src_chans = 1;
- break;
- case 1: // 1-bpp means the palette has 3 colour channels with 2 colours i.e. monochrome but not always black & white
- n_dst_chans = 3;
- has_palette = true;
- n_src_chans = 1;
- break;
- default: // this includes 2bpp and 16bpp
- free( record.data );
- return NULL;
- } // endswitch
- *n_chans = n_dst_chans;
- // NOTE(Anton) some image formats are not allowed a palette - could check for a bad header spec here also
- if ( dib_hdr_ptr->n_colours_in_palette > 0 ) { has_palette = true; }
-
-#ifdef APG_BMP_DEBUG_OUTPUT
- printf( "apg_bmp_debug: reading image\n|-filename `%s`\n|-dims %ux%u pixels\n|-bpp %u\n|-n_src_chans %u\n|-n_dst_chans %u\n", filename, *w, *h,
- dib_hdr_ptr->bpp, n_src_chans, n_dst_chans );
-#endif
-
- uint32_t palette_offset = _BMP_FILE_HDR_SZ + dib_hdr_ptr->this_header_sz;
- bool has_bitmasks = false;
- if ( BI_BITFIELDS == dib_hdr_ptr->compression_method || BI_ALPHABITFIELDS == dib_hdr_ptr->compression_method ) {
- has_bitmasks = true;
- palette_offset += 12;
- }
- if ( palette_offset > record.sz ) {
- free( record.data );
- return NULL;
- }
-
- // work out if any padding how much to skip at end of each row
- uint32_t unpadded_row_sz = width * n_src_chans;
- // bit-encoded palette indices have different padding properties
- if ( 4 == dib_hdr_ptr->bpp ) {
- unpadded_row_sz = width % 2 > 0 ? width / 2 + 1 : width / 2; // find how many whole bytes required for this bit width
- }
- if ( 1 == dib_hdr_ptr->bpp ) {
- unpadded_row_sz = width % 8 > 0 ? width / 8 + 1 : width / 8; // find how many whole bytes required for this bit width
- }
- uint32_t row_padding_sz = 0 == unpadded_row_sz % 4 ? 0 : 4 - ( unpadded_row_sz % 4 ); // NOTE(Anton) didn't expect operator precedence of - over %
-
- // another file size integrity check: partially validate source image data size
- // 'image_data_offset' is by row padded to 4 bytes and is either colour data or palette indices.
- if ( file_hdr_ptr->image_data_offset + ( unpadded_row_sz + row_padding_sz ) * height > record.sz ) {
- free( record.data );
- return NULL;
- }
-
- // find which bit number each colour channel starts at, so we can separate colours out
- uint32_t bitshift_rgba[4] = {0, 0, 0, 0}; // NOTE(Anton) noticed this was int and not uint32_t so changed it. 17 Mar 2020
- uint32_t bitmask_a = 0;
- if ( has_bitmasks ) {
- bitmask_a = ~( dib_hdr_ptr->bitmask_r | dib_hdr_ptr->bitmask_g | dib_hdr_ptr->bitmask_b );
- bitshift_rgba[0] = _bitscan( dib_hdr_ptr->bitmask_r );
- bitshift_rgba[1] = _bitscan( dib_hdr_ptr->bitmask_g );
- bitshift_rgba[2] = _bitscan( dib_hdr_ptr->bitmask_b );
- bitshift_rgba[3] = _bitscan( bitmask_a );
- }
-
- // allocate memory for the output pixels block. cast to size_t in case width and height are both the max of 65536 and n_dst_chans > 1
- unsigned char* dst_img_ptr = (unsigned char*)malloc( (size_t)width * (size_t)height * (size_t)n_dst_chans );
- if ( !dst_img_ptr ) {
- free( record.data );
- return NULL;
- }
-
- uint8_t* palette_data_ptr = (uint8_t*)record.data + palette_offset;
- uint8_t* src_img_ptr = (uint8_t*)record.data + file_hdr_ptr->image_data_offset;
- size_t dst_stride_sz = width * n_dst_chans;
-
- // == 32-bpp -> 32-bit RGBA. == 32-bit and 16-bit require bitmasks
- if ( 32 == dib_hdr_ptr->bpp ) {
- // check source image has enough data in it to read from
- if ( (size_t)file_hdr_ptr->image_data_offset + (size_t)height * (size_t)width * (size_t)n_src_chans > record.sz ) {
- free( record.data );
- free( dst_img_ptr );
- return NULL;
- }
- size_t src_byte_idx = 0;
- for ( uint32_t r = 0; r < height; r++ ) {
- size_t dst_pixels_idx = r * dst_stride_sz;
- for ( uint32_t c = 0; c < width; c++ ) {
- uint32_t pixel;
- memcpy( &pixel, &src_img_ptr[src_byte_idx], 4 );
- // NOTE(Anton) the below assumes 32-bits is always RGBA 1 byte per channel. 10,10,10 RGB exists though and isn't handled.
- dst_img_ptr[dst_pixels_idx++] = ( uint8_t )( ( pixel & dib_hdr_ptr->bitmask_r ) >> bitshift_rgba[0] );
- dst_img_ptr[dst_pixels_idx++] = ( uint8_t )( ( pixel & dib_hdr_ptr->bitmask_g ) >> bitshift_rgba[1] );
- dst_img_ptr[dst_pixels_idx++] = ( uint8_t )( ( pixel & dib_hdr_ptr->bitmask_b ) >> bitshift_rgba[2] );
- dst_img_ptr[dst_pixels_idx++] = ( uint8_t )( ( pixel & bitmask_a ) >> bitshift_rgba[3] );
- src_byte_idx += 4;
- }
- src_byte_idx += row_padding_sz;
- }
-
- // == 8-bpp -> 24-bit RGB ==
- } else if ( 8 == dib_hdr_ptr->bpp && has_palette ) {
- // validate indices (body of image data) fits in file
- if ( file_hdr_ptr->image_data_offset + height * width > record.sz ) {
- free( record.data );
- free( dst_img_ptr );
- return NULL;
- }
- size_t src_byte_idx = 0;
- for ( uint32_t r = 0; r < height; r++ ) {
- size_t dst_pixels_idx = ( height - 1 - r ) * dst_stride_sz;
- for ( uint32_t c = 0; c < width; c++ ) {
- // "most palettes are 4 bytes in RGB0 order but 3 for..." - it was actually BRG0 in old images -- Anton
- uint8_t index = src_img_ptr[src_byte_idx]; // 8-bit index value per pixel
-
- if ( palette_offset + index * 4 + 2 >= record.sz ) {
- free( record.data );
- return dst_img_ptr;
- }
- dst_img_ptr[dst_pixels_idx++] = palette_data_ptr[index * 4 + 2];
- dst_img_ptr[dst_pixels_idx++] = palette_data_ptr[index * 4 + 1];
- dst_img_ptr[dst_pixels_idx++] = palette_data_ptr[index * 4 + 0];
- src_byte_idx++;
- }
- src_byte_idx += row_padding_sz;
- }
-
- // == 4-bpp (16-colour) -> 24-bit RGB ==
- } else if ( 4 == dib_hdr_ptr->bpp && has_palette ) {
- size_t src_byte_idx = 0;
- for ( uint32_t r = 0; r < height; r++ ) {
- size_t dst_pixels_idx = ( height - 1 - r ) * dst_stride_sz;
- for ( uint32_t c = 0; c < width; c++ ) {
- if ( file_hdr_ptr->image_data_offset + src_byte_idx > record.sz ) {
- free( record.data );
- free( dst_img_ptr );
- return NULL;
- }
- // handle 2 pixels at a time
- uint8_t pixel_duo = src_img_ptr[src_byte_idx];
- uint8_t a_index = ( 0xFF & pixel_duo ) >> 4;
- uint8_t b_index = 0xF & pixel_duo;
-
- if ( palette_offset + a_index * 4 + 2 >= record.sz ) { // invalid src image
- free( record.data );
- return dst_img_ptr;
- }
- if ( dst_pixels_idx + 3 > width * height * n_dst_chans ) { // done
- free( record.data );
- return dst_img_ptr;
- }
- dst_img_ptr[dst_pixels_idx++] = palette_data_ptr[a_index * 4 + 2];
- dst_img_ptr[dst_pixels_idx++] = palette_data_ptr[a_index * 4 + 1];
- dst_img_ptr[dst_pixels_idx++] = palette_data_ptr[a_index * 4 + 0];
- if ( ++c >= width ) { // advance a column
- c = 0;
- r++;
- if ( r >= height ) { // done. no need to get second pixel. eg a 1x1 pixel image.
- free( record.data );
- return dst_img_ptr;
- }
- dst_pixels_idx = ( height - 1 - r ) * dst_stride_sz;
- }
-
- if ( palette_offset + b_index * 4 + 2 >= record.sz ) { // invalid src image
- free( record.data );
- return dst_img_ptr;
- }
- if ( dst_pixels_idx + 3 > width * height * n_dst_chans ) { // done. probably redundant check since checking r >= height.
- free( record.data );
- return dst_img_ptr;
- }
- dst_img_ptr[dst_pixels_idx++] = palette_data_ptr[b_index * 4 + 2];
- dst_img_ptr[dst_pixels_idx++] = palette_data_ptr[b_index * 4 + 1];
- dst_img_ptr[dst_pixels_idx++] = palette_data_ptr[b_index * 4 + 0];
- src_byte_idx++;
- }
- src_byte_idx += row_padding_sz;
- }
-
- // == 1-bpp -> 24-bit RGB ==
- } else if ( 1 == dib_hdr_ptr->bpp && has_palette ) {
- /* encoding method for monochrome is not well documented.
- a 2x2 pixel image is stored as 4 1-bit palette indexes
- the palette is stored as any 2 RGB0 colours (not necessarily B&W)
- so for an image with indexes like so:
- 1 1
- 0 1
- it is bit-encoded as follows, starting at MSB:
- 01000000 00000000 00000000 00000000 (first byte val 64)
- 11000000 00000000 00000000 00000000 (first byte val 192)
- data is still split by row and each row padded to 4 byte multiples
- */
- size_t src_byte_idx = 0;
- for ( uint32_t r = 0; r < height; r++ ) {
- uint8_t bit_idx = 0; // used in monochrome
- size_t dst_pixels_idx = ( height - 1 - r ) * dst_stride_sz;
- for ( uint32_t c = 0; c < width; c++ ) {
- if ( 8 == bit_idx ) { // start reading from the next byte
- src_byte_idx++;
- bit_idx = 0;
- }
- if ( file_hdr_ptr->image_data_offset + src_byte_idx > record.sz ) {
- free( record.data );
- return dst_img_ptr;
- }
- uint8_t pixel_oct = src_img_ptr[src_byte_idx];
- uint8_t bit = 128 >> bit_idx;
- uint8_t masked = pixel_oct & bit;
- uint8_t palette_idx = masked > 0 ? 1 : 0;
-
- if ( palette_offset + palette_idx * 4 + 2 >= record.sz ) {
- free( record.data );
- return dst_img_ptr;
- }
- dst_img_ptr[dst_pixels_idx++] = palette_data_ptr[palette_idx * 4 + 2];
- dst_img_ptr[dst_pixels_idx++] = palette_data_ptr[palette_idx * 4 + 1];
- dst_img_ptr[dst_pixels_idx++] = palette_data_ptr[palette_idx * 4 + 0];
- bit_idx++;
- }
- src_byte_idx += ( row_padding_sz + 1 ); // 1bpp is special here
- }
-
- // == 24-bpp -> 24-bit RGB == (but also should handle some other n_chans cases)
- } else {
- // NOTE(Anton) this only supports 1 byte per channel
- if ( file_hdr_ptr->image_data_offset + height * width * n_dst_chans > record.sz ) {
- free( record.data );
- free( dst_img_ptr );
- return NULL;
- }
- size_t src_byte_idx = 0;
- for ( uint32_t r = 0; r < height; r++ ) {
- size_t dst_pixels_idx = ( height - 1 - r ) * dst_stride_sz;
- for ( uint32_t c = 0; c < width; c++ ) {
- // re-orders from BGR to RGB
- if ( n_dst_chans > 3 ) { dst_img_ptr[dst_pixels_idx++] = src_img_ptr[src_byte_idx + 3]; }
- if ( n_dst_chans > 2 ) { dst_img_ptr[dst_pixels_idx++] = src_img_ptr[src_byte_idx + 2]; }
- if ( n_dst_chans > 1 ) { dst_img_ptr[dst_pixels_idx++] = src_img_ptr[src_byte_idx + 1]; }
- dst_img_ptr[dst_pixels_idx++] = src_img_ptr[src_byte_idx];
- src_byte_idx += n_src_chans;
- }
- src_byte_idx += row_padding_sz;
- }
- } // endif bpp
-
- free( record.data );
- return dst_img_ptr;
-}
-
-void apg_bmp_free( unsigned char* pixels_ptr ) {
- if ( !pixels_ptr ) { return; }
- free( pixels_ptr );
-}
-
-unsigned int apg_bmp_write( const char* filename, unsigned char* pixels_ptr, int w, int h, unsigned int n_chans ) {
- if ( !filename || !pixels_ptr ) { return 0; }
- if ( 0 == w || 0 == h ) { return 0; }
- if ( labs( w ) > _BMP_MAX_DIMS || labs( h ) > _BMP_MAX_DIMS ) { return 0; }
- if ( n_chans != 3 && n_chans != 4 ) { return 0; }
-
- uint32_t height = (uint32_t)labs( h );
- uint32_t width = (uint32_t)labs( w );
- // work out if any padding how much to skip at end of each row
- const size_t unpadded_row_sz = width * n_chans;
- const size_t row_padding_sz = 0 == unpadded_row_sz % 4 ? 0 : 4 - unpadded_row_sz % 4;
- const size_t row_sz = unpadded_row_sz + row_padding_sz;
- const size_t dst_pixels_padded_sz = row_sz * height;
-
- const size_t dib_hdr_sz = sizeof( _bmp_dib_BITMAPINFOHEADER_t );
- _bmp_file_header_t file_hdr;
- {
- file_hdr.file_type[0] = 'B';
- file_hdr.file_type[1] = 'M';
- file_hdr.file_sz = _BMP_FILE_HDR_SZ + (uint32_t)dib_hdr_sz + (uint32_t)dst_pixels_padded_sz;
- file_hdr.reserved1 = 0;
- file_hdr.reserved2 = 0;
- file_hdr.image_data_offset = _BMP_FILE_HDR_SZ + (uint32_t)dib_hdr_sz;
- }
- _bmp_dib_BITMAPINFOHEADER_t dib_hdr;
- {
- dib_hdr.this_header_sz = _BMP_MIN_DIB_HDR_SZ; // NOTE: must be 40 and not include the bitmask memory in size here
- dib_hdr.w = w;
- dib_hdr.h = h;
- dib_hdr.n_planes = 1;
- dib_hdr.bpp = 3 == n_chans ? 24 : 32;
- dib_hdr.compression_method = 3 == n_chans ? BI_RGB : BI_BITFIELDS;
- dib_hdr.image_uncompressed_sz = 0;
- dib_hdr.horiz_pixels_per_meter = 0;
- dib_hdr.vert_pixels_per_meter = 0;
- dib_hdr.n_colours_in_palette = 0;
- dib_hdr.n_important_colours = 0;
- // big-endian masks. only used in BI_BITFIELDS and BI_ALPHABITFIELDS ( 16 and 32-bit images )
- // important note: GIMP stores BMP data in this array order for 32-bit: [A][B][G][R]
- dib_hdr.bitmask_r = 0xFF000000;
- dib_hdr.bitmask_g = 0x00FF0000;
- dib_hdr.bitmask_b = 0x0000FF00;
- }
-
- uint8_t* dst_pixels_ptr = (uint8_t*)malloc( dst_pixels_padded_sz );
- if ( !dst_pixels_ptr ) { return 0; }
- {
- size_t dst_byte_idx = 0;
- uint8_t padding[4] = {0, 0, 0, 0};
- uint8_t rgba[4] = {0, 0, 0, 0};
- uint8_t bgra[4] = {0, 0, 0, 0};
-
- for ( uint32_t row = 0; row < height; row++ ) {
- size_t src_byte_idx = ( height - 1 - row ) * n_chans * width;
- for ( uint32_t col = 0; col < width; col++ ) {
- for ( uint32_t chan = 0; chan < n_chans; chan++ ) { rgba[chan] = pixels_ptr[src_byte_idx++]; }
- if ( 3 == n_chans ) {
- bgra[0] = rgba[2];
- bgra[1] = rgba[1];
- bgra[2] = rgba[0];
- } else {
- /* NOTE(Anton) RGBA with alpha channel would be better supported with an extended DIB header */
- bgra[0] = rgba[3];
- bgra[1] = rgba[2];
- bgra[2] = rgba[1];
- bgra[3] = rgba[0]; // alpha
- }
- memcpy( &dst_pixels_ptr[dst_byte_idx], bgra, n_chans );
- dst_byte_idx += (size_t)n_chans;
- } // endfor col
- if ( row_padding_sz > 0 ) {
- memcpy( &dst_pixels_ptr[dst_byte_idx], padding, row_padding_sz );
- dst_byte_idx += row_padding_sz;
- }
- } // endfor row
- }
- {
- FILE* fp = fopen( filename, "wb" );
- if ( !fp ) {
- free( dst_pixels_ptr );
- return 0;
- }
- if ( 1 != fwrite( &file_hdr, _BMP_FILE_HDR_SZ, 1, fp ) ) {
- free( dst_pixels_ptr );
- fclose( fp );
- return 0;
- }
- if ( 1 != fwrite( &dib_hdr, dib_hdr_sz, 1, fp ) ) {
- free( dst_pixels_ptr );
- fclose( fp );
- return 0;
- }
- if ( 1 != fwrite( dst_pixels_ptr, dst_pixels_padded_sz, 1, fp ) ) {
- free( dst_pixels_ptr );
- fclose( fp );
- return 0;
- }
- fclose( fp );
- }
- free( dst_pixels_ptr );
-
- return 1;
-}
diff --git a/thirdparty/basis_universal/encoder/apg_bmp.h b/thirdparty/basis_universal/encoder/apg_bmp.h
deleted file mode 100644
index 8cd73b62e0..0000000000
--- a/thirdparty/basis_universal/encoder/apg_bmp.h
+++ /dev/null
@@ -1,123 +0,0 @@
-/*
-BMP File Reader/Writer Implementation
-Anton Gerdelan
-Version: 3.1 18 March 2020.
-Licence: see bottom of file.
-C89 ( Implementation is C99 )
-
-Contributors:
-- Anton Gerdelan - Initial code.
-- Saija Sorsa - Fuzz testing.
-
-Instructions:
-- Just drop this header, and the matching .c file into your project.
-- To get debug printouts during parsing define APG_BMP_DEBUG_OUTPUT.
-
-Advantages:
-- The implementation is fast, simple, and supports more formats than most BMP reader libraries.
-- The reader function is fuzzed with AFL https://lcamtuf.coredump.cx/afl/.
-- The reader is robust to large files and malformed files, and will return any valid partial data in an image.
-- Reader supports 32bpp (with alpha channel), 24bpp, 8bpp, 4bpp, and 1bpp monochrome BMP images.
-- Reader handles indexed BMP images using a colour palette.
-- Writer supports 32bpp RGBA and 24bpp uncompressed RGB images.
-
-Current Limitations:
-- 16-bit images not supported (don't have any samples to test on).
-- No support for interleaved channel bit layouts eg RGB101010 RGB555 RGB565.
-- No support for compressed BMP images, although in practice these are not used.
-- Output images with alpha channel are written in BITMAPINFOHEADER format.
- For better alpha support in other apps the 124-bit v5 header could be used instead,
- at the cost of some backward compatibility and bloat.
-
-To Do:
-- FUZZING
- - create a unique fuzz test set for (8,4,1 BPP).
-- (maybe) FEATURE Flipping the image based on negative width and height in header, and/or function arguments.
-- (maybe) PERF ifdef intrinsics/asm for bitscan. Platform-specific code so won't include unless necessary.
-- (maybe) FEATURE Add parameter for padding output memory to eg 4-byte alignment or n channels.
-- (maybe) FEATURE Improved apps support in alpha channel writing (using v5 header).
-*/
-
-#ifndef APG_BMP_H_
-#define APG_BMP_H_
-
-#ifdef __cplusplus
-extern "C" {
-#endif /* CPP */
-
-/* Reads a bitmap from a file, allocates memory for the raw image data, and returns it.
-PARAMS
- * w,h, - Retrieves the width and height of the BMP in pixels.
- * n_chans - Retrieves the number of channels in the BMP.
-RETURNS
- * Tightly-packed pixel memory in RGBA order. The caller must call free() on the memory.
- * NULL on any error. Any allocated memory is freed before returning NULL. */
-unsigned char* apg_bmp_read( const char* filename, int* w, int* h, unsigned int* n_chans );
-
-/* Calls free() on memory created by apg_bmp_read */
-void apg_bmp_free( unsigned char* pixels_ptr );
-
-/* Writes a bitmap to a file.
-PARAMS
- * filename - e.g."my_bitmap.bmp". Must not be NULL.
- * pixels_ptr - Pointer to tightly-packed pixel memory in RGBA order. Must not be NULL. There must be abs(w)*abs(h)*n_chans bytes in the memory pointed to.
- * w,h, - Width and height of the image in pixels.
- * n_chans - The number of channels in the BMP. 3 or 4 supported for writing, which means RGB or RGBA memory, respectively.
-RETURNS
- * Zero on any error, non zero on success. */
-unsigned int apg_bmp_write( const char* filename, unsigned char* pixels_ptr, int w, int h, unsigned int n_chans );
-
-#ifdef __cplusplus
-}
-#endif /* CPP */
-
-#endif /*_APG_BMP_H_ */
-
-/*
--------------------------------------------------------------------------------------
-This software is available under two licences - you may use it under either licence.
--------------------------------------------------------------------------------------
-FIRST LICENCE OPTION
-
-> Apache License
-> Version 2.0, January 2004
-> http://www.apache.org/licenses/
-> Copyright 2019 Anton Gerdelan.
-> Licensed under the Apache License, Version 2.0 (the "License");
-> you may not use this file except in compliance with the License.
-> You may obtain a copy of the License at
-> http://www.apache.org/licenses/LICENSE-2.0
-> Unless required by applicable law or agreed to in writing, software
-> distributed under the License is distributed on an "AS IS" BASIS,
-> WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-> See the License for the specific language governing permissions and
-> limitations under the License.
--------------------------------------------------------------------------------------
-SECOND LICENCE OPTION
-
-> This is free and unencumbered software released into the public domain.
->
-> Anyone is free to copy, modify, publish, use, compile, sell, or
-> distribute this software, either in source code form or as a compiled
-> binary, for any purpose, commercial or non-commercial, and by any
-> means.
->
-> In jurisdictions that recognize copyright laws, the author or authors
-> of this software dedicate any and all copyright interest in the
-> software to the public domain. We make this dedication for the benefit
-> of the public at large and to the detriment of our heirs and
-> successors. We intend this dedication to be an overt act of
-> relinquishment in perpetuity of all present and future rights to this
-> software under copyright law.
->
-> 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 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.
->
-> For more information, please refer to <http://unlicense.org>
--------------------------------------------------------------------------------------
-*/
diff --git a/thirdparty/basis_universal/encoder/basisu_astc_decomp.cpp b/thirdparty/basis_universal/encoder/basisu_astc_decomp.cpp
deleted file mode 100644
index 53bccfc515..0000000000
--- a/thirdparty/basis_universal/encoder/basisu_astc_decomp.cpp
+++ /dev/null
@@ -1,1561 +0,0 @@
-// basisu_astc_decomp.cpp: Only used for ASTC decompression, to validate the transcoder's output.
-// This version does not support HDR.
-
-/*-------------------------------------------------------------------------
- * drawElements Quality Program Tester Core
- * ----------------------------------------
- *
- * Copyright 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * rg: Removed external dependencies, remarked out HDR support because
- * we don't need it, minor fix to decompress() so it converts non-sRGB
- * output to 8-bits correctly. I've compared this decoder's output
- * vs. astc-codec with random inputs on 4x4 blocks, and after fixing a few obvious
- * bugs in astc-codec where it didn't correctly follow the spec they match so
- * I'm assuming they are both correct for 4x4 now.
- * HDR support should be easily added back in, but as we don't need it
- * I'm leaving this for someone else.
- *
- *//*!
- * \file
- * \brief ASTC Utilities.
- *//*--------------------------------------------------------------------*/
-#include "basisu_astc_decomp.h"
-#include <assert.h>
-#include <algorithm>
-
-#define DE_LENGTH_OF_ARRAY(x) (sizeof(x)/sizeof(x[0]))
-#define DE_UNREF(x) (void)x
-
-typedef uint8_t deUint8;
-typedef int8_t deInt8;
-typedef uint32_t deUint32;
-typedef int32_t deInt32;
-typedef uint16_t deUint16;
-typedef int16_t deInt16;
-typedef int64_t deInt64;
-typedef uint64_t deUint64;
-
-#define DE_ASSERT assert
-
-#ifdef _MSC_VER
-#pragma warning (disable:4505) // unreferenced local function has been removed
-#elif defined(__GNUC__)
-#pragma GCC diagnostic push
-#pragma GCC diagnostic ignored "-Wunused-function"
-#endif
-
-namespace basisu_astc
-{
- static bool inBounds(int v, int l, int h)
- {
- return (v >= l) && (v < h);
- }
-
- static bool inRange(int v, int l, int h)
- {
- return (v >= l) && (v <= h);
- }
-
- template<typename T>
- static inline T max(T a, T b)
- {
- return (a > b) ? a : b;
- }
-
- template<typename T>
- static inline T min(T a, T b)
- {
- return (a < b) ? a : b;
- }
-
- template<typename T>
- static inline T clamp(T a, T l, T h)
- {
- if (a < l)
- return l;
- else if (a > h)
- return h;
- return a;
- }
-
- struct UVec4
- {
- uint32_t m_c[4];
-
- UVec4()
- {
- m_c[0] = 0;
- m_c[1] = 0;
- m_c[2] = 0;
- m_c[3] = 0;
- }
-
- UVec4(uint32_t x, uint32_t y, uint32_t z, uint32_t w)
- {
- m_c[0] = x;
- m_c[1] = y;
- m_c[2] = z;
- m_c[3] = w;
- }
-
- uint32_t x() const { return m_c[0]; }
- uint32_t y() const { return m_c[1]; }
- uint32_t z() const { return m_c[2]; }
- uint32_t w() const { return m_c[3]; }
-
- uint32_t& x() { return m_c[0]; }
- uint32_t& y() { return m_c[1]; }
- uint32_t& z() { return m_c[2]; }
- uint32_t& w() { return m_c[3]; }
-
- uint32_t operator[] (uint32_t idx) const { assert(idx < 4); return m_c[idx]; }
- uint32_t& operator[] (uint32_t idx) { assert(idx < 4); return m_c[idx]; }
- };
-
- struct IVec4
- {
- int32_t m_c[4];
-
- IVec4()
- {
- m_c[0] = 0;
- m_c[1] = 0;
- m_c[2] = 0;
- m_c[3] = 0;
- }
-
- IVec4(int32_t x, int32_t y, int32_t z, int32_t w)
- {
- m_c[0] = x;
- m_c[1] = y;
- m_c[2] = z;
- m_c[3] = w;
- }
-
- int32_t x() const { return m_c[0]; }
- int32_t y() const { return m_c[1]; }
- int32_t z() const { return m_c[2]; }
- int32_t w() const { return m_c[3]; }
-
- int32_t& x() { return m_c[0]; }
- int32_t& y() { return m_c[1]; }
- int32_t& z() { return m_c[2]; }
- int32_t& w() { return m_c[3]; }
-
- UVec4 asUint() const
- {
- return UVec4(basisu::maximum(0, m_c[0]), basisu::maximum(0, m_c[1]), basisu::maximum(0, m_c[2]), basisu::maximum(0, m_c[3]));
- }
-
- int32_t operator[] (uint32_t idx) const { assert(idx < 4); return m_c[idx]; }
- int32_t& operator[] (uint32_t idx) { assert(idx < 4); return m_c[idx]; }
- };
-
- struct IVec3
- {
- int32_t m_c[3];
-
- IVec3()
- {
- m_c[0] = 0;
- m_c[1] = 0;
- m_c[2] = 0;
- }
-
- IVec3(int32_t x, int32_t y, int32_t z)
- {
- m_c[0] = x;
- m_c[1] = y;
- m_c[2] = z;
- }
-
- int32_t x() const { return m_c[0]; }
- int32_t y() const { return m_c[1]; }
- int32_t z() const { return m_c[2]; }
-
- int32_t& x() { return m_c[0]; }
- int32_t& y() { return m_c[1]; }
- int32_t& z() { return m_c[2]; }
-
- int32_t operator[] (uint32_t idx) const { assert(idx < 3); return m_c[idx]; }
- int32_t& operator[] (uint32_t idx) { assert(idx < 3); return m_c[idx]; }
- };
-
- static uint32_t deDivRoundUp32(uint32_t a, uint32_t b)
- {
- return (a + b - 1) / b;
- }
-
- static bool deInBounds32(uint32_t v, uint32_t l, uint32_t h)
- {
- return (v >= l) && (v < h);
- }
-
-namespace astc
-{
-using std::vector;
-namespace
-{
-// Common utilities
-enum
-{
- MAX_BLOCK_WIDTH = 12,
- MAX_BLOCK_HEIGHT = 12
-};
-inline deUint32 getBit (deUint32 src, int ndx)
-{
- DE_ASSERT(basisu_astc::inBounds(ndx, 0, 32));
- return (src >> ndx) & 1;
-}
-inline deUint32 getBits (deUint32 src, int low, int high)
-{
- const int numBits = (high-low) + 1;
- DE_ASSERT(basisu_astc::inRange(numBits, 1, 32));
- if (numBits < 32)
- return (deUint32)((src >> low) & ((1u<<numBits)-1));
- else
- return (deUint32)((src >> low) & 0xFFFFFFFFu);
-}
-inline bool isBitSet (deUint32 src, int ndx)
-{
- return getBit(src, ndx) != 0;
-}
-inline deUint32 reverseBits (deUint32 src, int numBits)
-{
- DE_ASSERT(basisu_astc::inRange(numBits, 0, 32));
- deUint32 result = 0;
- for (int i = 0; i < numBits; i++)
- result |= ((src >> i) & 1) << (numBits-1-i);
- return result;
-}
-inline deUint32 bitReplicationScale (deUint32 src, int numSrcBits, int numDstBits)
-{
- DE_ASSERT(numSrcBits <= numDstBits);
- DE_ASSERT((src & ((1<<numSrcBits)-1)) == src);
- deUint32 dst = 0;
- for (int shift = numDstBits-numSrcBits; shift > -numSrcBits; shift -= numSrcBits)
- dst |= shift >= 0 ? src << shift : src >> -shift;
- return dst;
-}
-
-inline deInt32 signExtend (deInt32 src, int numSrcBits)
-{
- DE_ASSERT(basisu_astc::inRange(numSrcBits, 2, 31));
- const bool negative = (src & (1 << (numSrcBits-1))) != 0;
- return src | (negative ? ~((1 << numSrcBits) - 1) : 0);
-}
-
-//inline bool isFloat16InfOrNan (deFloat16 v)
-//{
-// return getBits(v, 10, 14) == 31;
-//}
-
-enum ISEMode
-{
- ISEMODE_TRIT = 0,
- ISEMODE_QUINT,
- ISEMODE_PLAIN_BIT,
- ISEMODE_LAST
-};
-struct ISEParams
-{
- ISEMode mode;
- int numBits;
- ISEParams (ISEMode mode_, int numBits_) : mode(mode_), numBits(numBits_) {}
-};
-inline int computeNumRequiredBits (const ISEParams& iseParams, int numValues)
-{
- switch (iseParams.mode)
- {
- case ISEMODE_TRIT: return deDivRoundUp32(numValues*8, 5) + numValues*iseParams.numBits;
- case ISEMODE_QUINT: return deDivRoundUp32(numValues*7, 3) + numValues*iseParams.numBits;
- case ISEMODE_PLAIN_BIT: return numValues*iseParams.numBits;
- default:
- DE_ASSERT(false);
- return -1;
- }
-}
-ISEParams computeMaximumRangeISEParams (int numAvailableBits, int numValuesInSequence)
-{
- int curBitsForTritMode = 6;
- int curBitsForQuintMode = 5;
- int curBitsForPlainBitMode = 8;
- while (true)
- {
- DE_ASSERT(curBitsForTritMode > 0 || curBitsForQuintMode > 0 || curBitsForPlainBitMode > 0);
- const int tritRange = curBitsForTritMode > 0 ? (3 << curBitsForTritMode) - 1 : -1;
- const int quintRange = curBitsForQuintMode > 0 ? (5 << curBitsForQuintMode) - 1 : -1;
- const int plainBitRange = curBitsForPlainBitMode > 0 ? (1 << curBitsForPlainBitMode) - 1 : -1;
- const int maxRange = basisu_astc::max(basisu_astc::max(tritRange, quintRange), plainBitRange);
- if (maxRange == tritRange)
- {
- const ISEParams params(ISEMODE_TRIT, curBitsForTritMode);
- if (computeNumRequiredBits(params, numValuesInSequence) <= numAvailableBits)
- return ISEParams(ISEMODE_TRIT, curBitsForTritMode);
- curBitsForTritMode--;
- }
- else if (maxRange == quintRange)
- {
- const ISEParams params(ISEMODE_QUINT, curBitsForQuintMode);
- if (computeNumRequiredBits(params, numValuesInSequence) <= numAvailableBits)
- return ISEParams(ISEMODE_QUINT, curBitsForQuintMode);
- curBitsForQuintMode--;
- }
- else
- {
- const ISEParams params(ISEMODE_PLAIN_BIT, curBitsForPlainBitMode);
- DE_ASSERT(maxRange == plainBitRange);
- if (computeNumRequiredBits(params, numValuesInSequence) <= numAvailableBits)
- return ISEParams(ISEMODE_PLAIN_BIT, curBitsForPlainBitMode);
- curBitsForPlainBitMode--;
- }
- }
-}
-inline int computeNumColorEndpointValues (deUint32 endpointMode)
-{
- DE_ASSERT(endpointMode < 16);
- return (endpointMode/4 + 1) * 2;
-}
-// Decompression utilities
-enum DecompressResult
-{
- DECOMPRESS_RESULT_VALID_BLOCK = 0, //!< Decompressed valid block
- DECOMPRESS_RESULT_ERROR, //!< Encountered error while decompressing, error color written
- DECOMPRESS_RESULT_LAST
-};
-// A helper for getting bits from a 128-bit block.
-class Block128
-{
-private:
- typedef deUint64 Word;
- enum
- {
- WORD_BYTES = sizeof(Word),
- WORD_BITS = 8*WORD_BYTES,
- NUM_WORDS = 128 / WORD_BITS
- };
- //DE_STATIC_ASSERT(128 % WORD_BITS == 0);
-public:
- Block128 (const deUint8* src)
- {
- for (int wordNdx = 0; wordNdx < NUM_WORDS; wordNdx++)
- {
- m_words[wordNdx] = 0;
- for (int byteNdx = 0; byteNdx < WORD_BYTES; byteNdx++)
- m_words[wordNdx] |= (Word)src[wordNdx*WORD_BYTES + byteNdx] << (8*byteNdx);
- }
- }
- deUint32 getBit (int ndx) const
- {
- DE_ASSERT(basisu_astc::inBounds(ndx, 0, 128));
- return (m_words[ndx / WORD_BITS] >> (ndx % WORD_BITS)) & 1;
- }
- deUint32 getBits (int low, int high) const
- {
- DE_ASSERT(basisu_astc::inBounds(low, 0, 128));
- DE_ASSERT(basisu_astc::inBounds(high, 0, 128));
- DE_ASSERT(basisu_astc::inRange(high-low+1, 0, 32));
- if (high-low+1 == 0)
- return 0;
- const int word0Ndx = low / WORD_BITS;
- const int word1Ndx = high / WORD_BITS;
- // \note "foo << bar << 1" done instead of "foo << (bar+1)" to avoid overflow, i.e. shift amount being too big.
- if (word0Ndx == word1Ndx)
- return (deUint32)((m_words[word0Ndx] & ((((Word)1 << high%WORD_BITS << 1) - 1))) >> ((Word)low % WORD_BITS));
- else
- {
- DE_ASSERT(word1Ndx == word0Ndx + 1);
- return (deUint32)(m_words[word0Ndx] >> (low%WORD_BITS)) |
- (deUint32)((m_words[word1Ndx] & (((Word)1 << high%WORD_BITS << 1) - 1)) << (high-low - high%WORD_BITS));
- }
- }
- bool isBitSet (int ndx) const
- {
- DE_ASSERT(basisu_astc::inBounds(ndx, 0, 128));
- return getBit(ndx) != 0;
- }
-private:
- Word m_words[NUM_WORDS];
-};
-// A helper for sequential access into a Block128.
-class BitAccessStream
-{
-public:
- BitAccessStream (const Block128& src, int startNdxInSrc, int length, bool forward)
- : m_src (src)
- , m_startNdxInSrc (startNdxInSrc)
- , m_length (length)
- , m_forward (forward)
- , m_ndx (0)
- {
- }
- // Get the next num bits. Bits at positions greater than or equal to m_length are zeros.
- deUint32 getNext (int num)
- {
- if (num == 0 || m_ndx >= m_length)
- return 0;
- const int end = m_ndx + num;
- const int numBitsFromSrc = basisu_astc::max(0, basisu_astc::min(m_length, end) - m_ndx);
- const int low = m_ndx;
- const int high = m_ndx + numBitsFromSrc - 1;
- m_ndx += num;
- return m_forward ? m_src.getBits(m_startNdxInSrc + low, m_startNdxInSrc + high)
- : reverseBits(m_src.getBits(m_startNdxInSrc - high, m_startNdxInSrc - low), numBitsFromSrc);
- }
-private:
- const Block128& m_src;
- const int m_startNdxInSrc;
- const int m_length;
- const bool m_forward;
- int m_ndx;
-};
-struct ISEDecodedResult
-{
- deUint32 m;
- deUint32 tq; //!< Trit or quint value, depending on ISE mode.
- deUint32 v;
-};
-// Data from an ASTC block's "block mode" part (i.e. bits [0,10]).
-struct ASTCBlockMode
-{
- bool isError;
- // \note Following fields only relevant if !isError.
- bool isVoidExtent;
- // \note Following fields only relevant if !isVoidExtent.
- bool isDualPlane;
- int weightGridWidth;
- int weightGridHeight;
- ISEParams weightISEParams;
- ASTCBlockMode (void)
- : isError (true)
- , isVoidExtent (true)
- , isDualPlane (true)
- , weightGridWidth (-1)
- , weightGridHeight (-1)
- , weightISEParams (ISEMODE_LAST, -1)
- {
- }
-};
-inline int computeNumWeights (const ASTCBlockMode& mode)
-{
- return mode.weightGridWidth * mode.weightGridHeight * (mode.isDualPlane ? 2 : 1);
-}
-struct ColorEndpointPair
-{
- UVec4 e0;
- UVec4 e1;
-};
-struct TexelWeightPair
-{
- deUint32 w[2];
-};
-ASTCBlockMode getASTCBlockMode (deUint32 blockModeData)
-{
- ASTCBlockMode blockMode;
- blockMode.isError = true; // \note Set to false later, if not error.
- blockMode.isVoidExtent = getBits(blockModeData, 0, 8) == 0x1fc;
- if (!blockMode.isVoidExtent)
- {
- if ((getBits(blockModeData, 0, 1) == 0 && getBits(blockModeData, 6, 8) == 7) || getBits(blockModeData, 0, 3) == 0)
- return blockMode; // Invalid ("reserved").
- deUint32 r = (deUint32)-1; // \note Set in the following branches.
- if (getBits(blockModeData, 0, 1) == 0)
- {
- const deUint32 r0 = getBit(blockModeData, 4);
- const deUint32 r1 = getBit(blockModeData, 2);
- const deUint32 r2 = getBit(blockModeData, 3);
- const deUint32 i78 = getBits(blockModeData, 7, 8);
- r = (r2 << 2) | (r1 << 1) | (r0 << 0);
- if (i78 == 3)
- {
- const bool i5 = isBitSet(blockModeData, 5);
- blockMode.weightGridWidth = i5 ? 10 : 6;
- blockMode.weightGridHeight = i5 ? 6 : 10;
- }
- else
- {
- const deUint32 a = getBits(blockModeData, 5, 6);
- switch (i78)
- {
- case 0: blockMode.weightGridWidth = 12; blockMode.weightGridHeight = a + 2; break;
- case 1: blockMode.weightGridWidth = a + 2; blockMode.weightGridHeight = 12; break;
- case 2: blockMode.weightGridWidth = a + 6; blockMode.weightGridHeight = getBits(blockModeData, 9, 10) + 6; break;
- default: DE_ASSERT(false);
- }
- }
- }
- else
- {
- const deUint32 r0 = getBit(blockModeData, 4);
- const deUint32 r1 = getBit(blockModeData, 0);
- const deUint32 r2 = getBit(blockModeData, 1);
- const deUint32 i23 = getBits(blockModeData, 2, 3);
- const deUint32 a = getBits(blockModeData, 5, 6);
- r = (r2 << 2) | (r1 << 1) | (r0 << 0);
- if (i23 == 3)
- {
- const deUint32 b = getBit(blockModeData, 7);
- const bool i8 = isBitSet(blockModeData, 8);
- blockMode.weightGridWidth = i8 ? b+2 : a+2;
- blockMode.weightGridHeight = i8 ? a+2 : b+6;
- }
- else
- {
- const deUint32 b = getBits(blockModeData, 7, 8);
- switch (i23)
- {
- case 0: blockMode.weightGridWidth = b + 4; blockMode.weightGridHeight = a + 2; break;
- case 1: blockMode.weightGridWidth = b + 8; blockMode.weightGridHeight = a + 2; break;
- case 2: blockMode.weightGridWidth = a + 2; blockMode.weightGridHeight = b + 8; break;
- default: DE_ASSERT(false);
- }
- }
- }
- const bool zeroDH = getBits(blockModeData, 0, 1) == 0 && getBits(blockModeData, 7, 8) == 2;
- const bool h = zeroDH ? 0 : isBitSet(blockModeData, 9);
- blockMode.isDualPlane = zeroDH ? 0 : isBitSet(blockModeData, 10);
- {
- ISEMode& m = blockMode.weightISEParams.mode;
- int& b = blockMode.weightISEParams.numBits;
- m = ISEMODE_PLAIN_BIT;
- b = 0;
- if (h)
- {
- switch (r)
- {
- case 2: m = ISEMODE_QUINT; b = 1; break;
- case 3: m = ISEMODE_TRIT; b = 2; break;
- case 4: b = 4; break;
- case 5: m = ISEMODE_QUINT; b = 2; break;
- case 6: m = ISEMODE_TRIT; b = 3; break;
- case 7: b = 5; break;
- default: DE_ASSERT(false);
- }
- }
- else
- {
- switch (r)
- {
- case 2: b = 1; break;
- case 3: m = ISEMODE_TRIT; break;
- case 4: b = 2; break;
- case 5: m = ISEMODE_QUINT; break;
- case 6: m = ISEMODE_TRIT; b = 1; break;
- case 7: b = 3; break;
- default: DE_ASSERT(false);
- }
- }
- }
- }
- blockMode.isError = false;
- return blockMode;
-}
-inline void setASTCErrorColorBlock (void* dst, int blockWidth, int blockHeight, bool isSRGB)
-{
- if (isSRGB)
- {
- deUint8* const dstU = (deUint8*)dst;
- for (int i = 0; i < blockWidth*blockHeight; i++)
- {
- dstU[4*i + 0] = 0xff;
- dstU[4*i + 1] = 0;
- dstU[4*i + 2] = 0xff;
- dstU[4*i + 3] = 0xff;
- }
- }
- else
- {
- float* const dstF = (float*)dst;
- for (int i = 0; i < blockWidth*blockHeight; i++)
- {
- dstF[4*i + 0] = 1.0f;
- dstF[4*i + 1] = 0.0f;
- dstF[4*i + 2] = 1.0f;
- dstF[4*i + 3] = 1.0f;
- }
- }
-}
-DecompressResult decodeVoidExtentBlock (void* dst, const Block128& blockData, int blockWidth, int blockHeight, bool isSRGB, bool isLDRMode)
-{
- const deUint32 minSExtent = blockData.getBits(12, 24);
- const deUint32 maxSExtent = blockData.getBits(25, 37);
- const deUint32 minTExtent = blockData.getBits(38, 50);
- const deUint32 maxTExtent = blockData.getBits(51, 63);
- const bool allExtentsAllOnes = minSExtent == 0x1fff && maxSExtent == 0x1fff && minTExtent == 0x1fff && maxTExtent == 0x1fff;
- const bool isHDRBlock = blockData.isBitSet(9);
- if ((isLDRMode && isHDRBlock) || (!allExtentsAllOnes && (minSExtent >= maxSExtent || minTExtent >= maxTExtent)))
- {
- setASTCErrorColorBlock(dst, blockWidth, blockHeight, isSRGB);
- return DECOMPRESS_RESULT_ERROR;
- }
- const deUint32 rgba[4] =
- {
- blockData.getBits(64, 79),
- blockData.getBits(80, 95),
- blockData.getBits(96, 111),
- blockData.getBits(112, 127)
- };
- if (isSRGB)
- {
- deUint8* const dstU = (deUint8*)dst;
- for (int i = 0; i < blockWidth*blockHeight; i++)
- for (int c = 0; c < 4; c++)
- dstU[i*4 + c] = (deUint8)((rgba[c] & 0xff00) >> 8);
- }
- else
- {
- float* const dstF = (float*)dst;
- if (isHDRBlock)
- {
- // rg - REMOVING HDR SUPPORT FOR NOW
-#if 0
- for (int c = 0; c < 4; c++)
- {
- if (isFloat16InfOrNan((deFloat16)rgba[c]))
- throw InternalError("Infinity or NaN color component in HDR void extent block in ASTC texture (behavior undefined by ASTC specification)");
- }
- for (int i = 0; i < blockWidth*blockHeight; i++)
- for (int c = 0; c < 4; c++)
- dstF[i*4 + c] = deFloat16To32((deFloat16)rgba[c]);
-#endif
- }
- else
- {
- for (int i = 0; i < blockWidth*blockHeight; i++)
- for (int c = 0; c < 4; c++)
- dstF[i*4 + c] = rgba[c] == 65535 ? 1.0f : (float)rgba[c] / 65536.0f;
- }
- }
- return DECOMPRESS_RESULT_VALID_BLOCK;
-}
-void decodeColorEndpointModes (deUint32* endpointModesDst, const Block128& blockData, int numPartitions, int extraCemBitsStart)
-{
- if (numPartitions == 1)
- endpointModesDst[0] = blockData.getBits(13, 16);
- else
- {
- const deUint32 highLevelSelector = blockData.getBits(23, 24);
- if (highLevelSelector == 0)
- {
- const deUint32 mode = blockData.getBits(25, 28);
- for (int i = 0; i < numPartitions; i++)
- endpointModesDst[i] = mode;
- }
- else
- {
- for (int partNdx = 0; partNdx < numPartitions; partNdx++)
- {
- const deUint32 cemClass = highLevelSelector - (blockData.isBitSet(25 + partNdx) ? 0 : 1);
- const deUint32 lowBit0Ndx = numPartitions + 2*partNdx;
- const deUint32 lowBit1Ndx = numPartitions + 2*partNdx + 1;
- const deUint32 lowBit0 = blockData.getBit(lowBit0Ndx < 4 ? 25+lowBit0Ndx : extraCemBitsStart+lowBit0Ndx-4);
- const deUint32 lowBit1 = blockData.getBit(lowBit1Ndx < 4 ? 25+lowBit1Ndx : extraCemBitsStart+lowBit1Ndx-4);
- endpointModesDst[partNdx] = (cemClass << 2) | (lowBit1 << 1) | lowBit0;
- }
- }
- }
-}
-int computeNumColorEndpointValues (const deUint32* endpointModes, int numPartitions)
-{
- int result = 0;
- for (int i = 0; i < numPartitions; i++)
- result += computeNumColorEndpointValues(endpointModes[i]);
- return result;
-}
-void decodeISETritBlock (ISEDecodedResult* dst, int numValues, BitAccessStream& data, int numBits)
-{
- DE_ASSERT(basisu_astc::inRange(numValues, 1, 5));
- deUint32 m[5];
- m[0] = data.getNext(numBits);
- deUint32 T01 = data.getNext(2);
- m[1] = data.getNext(numBits);
- deUint32 T23 = data.getNext(2);
- m[2] = data.getNext(numBits);
- deUint32 T4 = data.getNext(1);
- m[3] = data.getNext(numBits);
- deUint32 T56 = data.getNext(2);
- m[4] = data.getNext(numBits);
- deUint32 T7 = data.getNext(1);
- switch (numValues)
- {
- // \note Fall-throughs.
- case 1: T23 = 0;
- case 2: T4 = 0;
- case 3: T56 = 0;
- case 4: T7 = 0;
- case 5: break;
- default:
- DE_ASSERT(false);
- }
- const deUint32 T = (T7 << 7) | (T56 << 5) | (T4 << 4) | (T23 << 2) | (T01 << 0);
- static const deUint32 tritsFromT[256][5] =
- {
- { 0,0,0,0,0 }, { 1,0,0,0,0 }, { 2,0,0,0,0 }, { 0,0,2,0,0 }, { 0,1,0,0,0 }, { 1,1,0,0,0 }, { 2,1,0,0,0 }, { 1,0,2,0,0 }, { 0,2,0,0,0 }, { 1,2,0,0,0 }, { 2,2,0,0,0 }, { 2,0,2,0,0 }, { 0,2,2,0,0 }, { 1,2,2,0,0 }, { 2,2,2,0,0 }, { 2,0,2,0,0 },
- { 0,0,1,0,0 }, { 1,0,1,0,0 }, { 2,0,1,0,0 }, { 0,1,2,0,0 }, { 0,1,1,0,0 }, { 1,1,1,0,0 }, { 2,1,1,0,0 }, { 1,1,2,0,0 }, { 0,2,1,0,0 }, { 1,2,1,0,0 }, { 2,2,1,0,0 }, { 2,1,2,0,0 }, { 0,0,0,2,2 }, { 1,0,0,2,2 }, { 2,0,0,2,2 }, { 0,0,2,2,2 },
- { 0,0,0,1,0 }, { 1,0,0,1,0 }, { 2,0,0,1,0 }, { 0,0,2,1,0 }, { 0,1,0,1,0 }, { 1,1,0,1,0 }, { 2,1,0,1,0 }, { 1,0,2,1,0 }, { 0,2,0,1,0 }, { 1,2,0,1,0 }, { 2,2,0,1,0 }, { 2,0,2,1,0 }, { 0,2,2,1,0 }, { 1,2,2,1,0 }, { 2,2,2,1,0 }, { 2,0,2,1,0 },
- { 0,0,1,1,0 }, { 1,0,1,1,0 }, { 2,0,1,1,0 }, { 0,1,2,1,0 }, { 0,1,1,1,0 }, { 1,1,1,1,0 }, { 2,1,1,1,0 }, { 1,1,2,1,0 }, { 0,2,1,1,0 }, { 1,2,1,1,0 }, { 2,2,1,1,0 }, { 2,1,2,1,0 }, { 0,1,0,2,2 }, { 1,1,0,2,2 }, { 2,1,0,2,2 }, { 1,0,2,2,2 },
- { 0,0,0,2,0 }, { 1,0,0,2,0 }, { 2,0,0,2,0 }, { 0,0,2,2,0 }, { 0,1,0,2,0 }, { 1,1,0,2,0 }, { 2,1,0,2,0 }, { 1,0,2,2,0 }, { 0,2,0,2,0 }, { 1,2,0,2,0 }, { 2,2,0,2,0 }, { 2,0,2,2,0 }, { 0,2,2,2,0 }, { 1,2,2,2,0 }, { 2,2,2,2,0 }, { 2,0,2,2,0 },
- { 0,0,1,2,0 }, { 1,0,1,2,0 }, { 2,0,1,2,0 }, { 0,1,2,2,0 }, { 0,1,1,2,0 }, { 1,1,1,2,0 }, { 2,1,1,2,0 }, { 1,1,2,2,0 }, { 0,2,1,2,0 }, { 1,2,1,2,0 }, { 2,2,1,2,0 }, { 2,1,2,2,0 }, { 0,2,0,2,2 }, { 1,2,0,2,2 }, { 2,2,0,2,2 }, { 2,0,2,2,2 },
- { 0,0,0,0,2 }, { 1,0,0,0,2 }, { 2,0,0,0,2 }, { 0,0,2,0,2 }, { 0,1,0,0,2 }, { 1,1,0,0,2 }, { 2,1,0,0,2 }, { 1,0,2,0,2 }, { 0,2,0,0,2 }, { 1,2,0,0,2 }, { 2,2,0,0,2 }, { 2,0,2,0,2 }, { 0,2,2,0,2 }, { 1,2,2,0,2 }, { 2,2,2,0,2 }, { 2,0,2,0,2 },
- { 0,0,1,0,2 }, { 1,0,1,0,2 }, { 2,0,1,0,2 }, { 0,1,2,0,2 }, { 0,1,1,0,2 }, { 1,1,1,0,2 }, { 2,1,1,0,2 }, { 1,1,2,0,2 }, { 0,2,1,0,2 }, { 1,2,1,0,2 }, { 2,2,1,0,2 }, { 2,1,2,0,2 }, { 0,2,2,2,2 }, { 1,2,2,2,2 }, { 2,2,2,2,2 }, { 2,0,2,2,2 },
- { 0,0,0,0,1 }, { 1,0,0,0,1 }, { 2,0,0,0,1 }, { 0,0,2,0,1 }, { 0,1,0,0,1 }, { 1,1,0,0,1 }, { 2,1,0,0,1 }, { 1,0,2,0,1 }, { 0,2,0,0,1 }, { 1,2,0,0,1 }, { 2,2,0,0,1 }, { 2,0,2,0,1 }, { 0,2,2,0,1 }, { 1,2,2,0,1 }, { 2,2,2,0,1 }, { 2,0,2,0,1 },
- { 0,0,1,0,1 }, { 1,0,1,0,1 }, { 2,0,1,0,1 }, { 0,1,2,0,1 }, { 0,1,1,0,1 }, { 1,1,1,0,1 }, { 2,1,1,0,1 }, { 1,1,2,0,1 }, { 0,2,1,0,1 }, { 1,2,1,0,1 }, { 2,2,1,0,1 }, { 2,1,2,0,1 }, { 0,0,1,2,2 }, { 1,0,1,2,2 }, { 2,0,1,2,2 }, { 0,1,2,2,2 },
- { 0,0,0,1,1 }, { 1,0,0,1,1 }, { 2,0,0,1,1 }, { 0,0,2,1,1 }, { 0,1,0,1,1 }, { 1,1,0,1,1 }, { 2,1,0,1,1 }, { 1,0,2,1,1 }, { 0,2,0,1,1 }, { 1,2,0,1,1 }, { 2,2,0,1,1 }, { 2,0,2,1,1 }, { 0,2,2,1,1 }, { 1,2,2,1,1 }, { 2,2,2,1,1 }, { 2,0,2,1,1 },
- { 0,0,1,1,1 }, { 1,0,1,1,1 }, { 2,0,1,1,1 }, { 0,1,2,1,1 }, { 0,1,1,1,1 }, { 1,1,1,1,1 }, { 2,1,1,1,1 }, { 1,1,2,1,1 }, { 0,2,1,1,1 }, { 1,2,1,1,1 }, { 2,2,1,1,1 }, { 2,1,2,1,1 }, { 0,1,1,2,2 }, { 1,1,1,2,2 }, { 2,1,1,2,2 }, { 1,1,2,2,2 },
- { 0,0,0,2,1 }, { 1,0,0,2,1 }, { 2,0,0,2,1 }, { 0,0,2,2,1 }, { 0,1,0,2,1 }, { 1,1,0,2,1 }, { 2,1,0,2,1 }, { 1,0,2,2,1 }, { 0,2,0,2,1 }, { 1,2,0,2,1 }, { 2,2,0,2,1 }, { 2,0,2,2,1 }, { 0,2,2,2,1 }, { 1,2,2,2,1 }, { 2,2,2,2,1 }, { 2,0,2,2,1 },
- { 0,0,1,2,1 }, { 1,0,1,2,1 }, { 2,0,1,2,1 }, { 0,1,2,2,1 }, { 0,1,1,2,1 }, { 1,1,1,2,1 }, { 2,1,1,2,1 }, { 1,1,2,2,1 }, { 0,2,1,2,1 }, { 1,2,1,2,1 }, { 2,2,1,2,1 }, { 2,1,2,2,1 }, { 0,2,1,2,2 }, { 1,2,1,2,2 }, { 2,2,1,2,2 }, { 2,1,2,2,2 },
- { 0,0,0,1,2 }, { 1,0,0,1,2 }, { 2,0,0,1,2 }, { 0,0,2,1,2 }, { 0,1,0,1,2 }, { 1,1,0,1,2 }, { 2,1,0,1,2 }, { 1,0,2,1,2 }, { 0,2,0,1,2 }, { 1,2,0,1,2 }, { 2,2,0,1,2 }, { 2,0,2,1,2 }, { 0,2,2,1,2 }, { 1,2,2,1,2 }, { 2,2,2,1,2 }, { 2,0,2,1,2 },
- { 0,0,1,1,2 }, { 1,0,1,1,2 }, { 2,0,1,1,2 }, { 0,1,2,1,2 }, { 0,1,1,1,2 }, { 1,1,1,1,2 }, { 2,1,1,1,2 }, { 1,1,2,1,2 }, { 0,2,1,1,2 }, { 1,2,1,1,2 }, { 2,2,1,1,2 }, { 2,1,2,1,2 }, { 0,2,2,2,2 }, { 1,2,2,2,2 }, { 2,2,2,2,2 }, { 2,1,2,2,2 }
- };
- const deUint32 (& trits)[5] = tritsFromT[T];
- for (int i = 0; i < numValues; i++)
- {
- dst[i].m = m[i];
- dst[i].tq = trits[i];
- dst[i].v = (trits[i] << numBits) + m[i];
- }
-}
-void decodeISEQuintBlock (ISEDecodedResult* dst, int numValues, BitAccessStream& data, int numBits)
-{
- DE_ASSERT(basisu_astc::inRange(numValues, 1, 3));
- deUint32 m[3];
- m[0] = data.getNext(numBits);
- deUint32 Q012 = data.getNext(3);
- m[1] = data.getNext(numBits);
- deUint32 Q34 = data.getNext(2);
- m[2] = data.getNext(numBits);
- deUint32 Q56 = data.getNext(2);
- switch (numValues)
- {
- // \note Fall-throughs.
- case 1: Q34 = 0;
- case 2: Q56 = 0;
- case 3: break;
- default:
- DE_ASSERT(false);
- }
- const deUint32 Q = (Q56 << 5) | (Q34 << 3) | (Q012 << 0);
- static const deUint32 quintsFromQ[256][3] =
- {
- { 0,0,0 }, { 1,0,0 }, { 2,0,0 }, { 3,0,0 }, { 4,0,0 }, { 0,4,0 }, { 4,4,0 }, { 4,4,4 }, { 0,1,0 }, { 1,1,0 }, { 2,1,0 }, { 3,1,0 }, { 4,1,0 }, { 1,4,0 }, { 4,4,1 }, { 4,4,4 },
- { 0,2,0 }, { 1,2,0 }, { 2,2,0 }, { 3,2,0 }, { 4,2,0 }, { 2,4,0 }, { 4,4,2 }, { 4,4,4 }, { 0,3,0 }, { 1,3,0 }, { 2,3,0 }, { 3,3,0 }, { 4,3,0 }, { 3,4,0 }, { 4,4,3 }, { 4,4,4 },
- { 0,0,1 }, { 1,0,1 }, { 2,0,1 }, { 3,0,1 }, { 4,0,1 }, { 0,4,1 }, { 4,0,4 }, { 0,4,4 }, { 0,1,1 }, { 1,1,1 }, { 2,1,1 }, { 3,1,1 }, { 4,1,1 }, { 1,4,1 }, { 4,1,4 }, { 1,4,4 },
- { 0,2,1 }, { 1,2,1 }, { 2,2,1 }, { 3,2,1 }, { 4,2,1 }, { 2,4,1 }, { 4,2,4 }, { 2,4,4 }, { 0,3,1 }, { 1,3,1 }, { 2,3,1 }, { 3,3,1 }, { 4,3,1 }, { 3,4,1 }, { 4,3,4 }, { 3,4,4 },
- { 0,0,2 }, { 1,0,2 }, { 2,0,2 }, { 3,0,2 }, { 4,0,2 }, { 0,4,2 }, { 2,0,4 }, { 3,0,4 }, { 0,1,2 }, { 1,1,2 }, { 2,1,2 }, { 3,1,2 }, { 4,1,2 }, { 1,4,2 }, { 2,1,4 }, { 3,1,4 },
- { 0,2,2 }, { 1,2,2 }, { 2,2,2 }, { 3,2,2 }, { 4,2,2 }, { 2,4,2 }, { 2,2,4 }, { 3,2,4 }, { 0,3,2 }, { 1,3,2 }, { 2,3,2 }, { 3,3,2 }, { 4,3,2 }, { 3,4,2 }, { 2,3,4 }, { 3,3,4 },
- { 0,0,3 }, { 1,0,3 }, { 2,0,3 }, { 3,0,3 }, { 4,0,3 }, { 0,4,3 }, { 0,0,4 }, { 1,0,4 }, { 0,1,3 }, { 1,1,3 }, { 2,1,3 }, { 3,1,3 }, { 4,1,3 }, { 1,4,3 }, { 0,1,4 }, { 1,1,4 },
- { 0,2,3 }, { 1,2,3 }, { 2,2,3 }, { 3,2,3 }, { 4,2,3 }, { 2,4,3 }, { 0,2,4 }, { 1,2,4 }, { 0,3,3 }, { 1,3,3 }, { 2,3,3 }, { 3,3,3 }, { 4,3,3 }, { 3,4,3 }, { 0,3,4 }, { 1,3,4 }
- };
- const deUint32 (& quints)[3] = quintsFromQ[Q];
- for (int i = 0; i < numValues; i++)
- {
- dst[i].m = m[i];
- dst[i].tq = quints[i];
- dst[i].v = (quints[i] << numBits) + m[i];
- }
-}
-inline void decodeISEBitBlock (ISEDecodedResult* dst, BitAccessStream& data, int numBits)
-{
- dst[0].m = data.getNext(numBits);
- dst[0].v = dst[0].m;
-}
-void decodeISE (ISEDecodedResult* dst, int numValues, BitAccessStream& data, const ISEParams& params)
-{
- if (params.mode == ISEMODE_TRIT)
- {
- const int numBlocks = deDivRoundUp32(numValues, 5);
- for (int blockNdx = 0; blockNdx < numBlocks; blockNdx++)
- {
- const int numValuesInBlock = blockNdx == numBlocks-1 ? numValues - 5*(numBlocks-1) : 5;
- decodeISETritBlock(&dst[5*blockNdx], numValuesInBlock, data, params.numBits);
- }
- }
- else if (params.mode == ISEMODE_QUINT)
- {
- const int numBlocks = deDivRoundUp32(numValues, 3);
- for (int blockNdx = 0; blockNdx < numBlocks; blockNdx++)
- {
- const int numValuesInBlock = blockNdx == numBlocks-1 ? numValues - 3*(numBlocks-1) : 3;
- decodeISEQuintBlock(&dst[3*blockNdx], numValuesInBlock, data, params.numBits);
- }
- }
- else
- {
- DE_ASSERT(params.mode == ISEMODE_PLAIN_BIT);
- for (int i = 0; i < numValues; i++)
- decodeISEBitBlock(&dst[i], data, params.numBits);
- }
-}
-void unquantizeColorEndpoints (deUint32* dst, const ISEDecodedResult* iseResults, int numEndpoints, const ISEParams& iseParams)
-{
- if (iseParams.mode == ISEMODE_TRIT || iseParams.mode == ISEMODE_QUINT)
- {
- const int rangeCase = iseParams.numBits*2 - (iseParams.mode == ISEMODE_TRIT ? 2 : 1);
- DE_ASSERT(basisu_astc::inRange(rangeCase, 0, 10));
- static const deUint32 Ca[11] = { 204, 113, 93, 54, 44, 26, 22, 13, 11, 6, 5 };
- const deUint32 C = Ca[rangeCase];
- for (int endpointNdx = 0; endpointNdx < numEndpoints; endpointNdx++)
- {
- const deUint32 a = getBit(iseResults[endpointNdx].m, 0);
- const deUint32 b = getBit(iseResults[endpointNdx].m, 1);
- const deUint32 c = getBit(iseResults[endpointNdx].m, 2);
- const deUint32 d = getBit(iseResults[endpointNdx].m, 3);
- const deUint32 e = getBit(iseResults[endpointNdx].m, 4);
- const deUint32 f = getBit(iseResults[endpointNdx].m, 5);
- const deUint32 A = a == 0 ? 0 : (1<<9)-1;
- const deUint32 B = rangeCase == 0 ? 0
- : rangeCase == 1 ? 0
- : rangeCase == 2 ? (b << 8) | (b << 4) | (b << 2) | (b << 1)
- : rangeCase == 3 ? (b << 8) | (b << 3) | (b << 2)
- : rangeCase == 4 ? (c << 8) | (b << 7) | (c << 3) | (b << 2) | (c << 1) | (b << 0)
- : rangeCase == 5 ? (c << 8) | (b << 7) | (c << 2) | (b << 1) | (c << 0)
- : rangeCase == 6 ? (d << 8) | (c << 7) | (b << 6) | (d << 2) | (c << 1) | (b << 0)
- : rangeCase == 7 ? (d << 8) | (c << 7) | (b << 6) | (d << 1) | (c << 0)
- : rangeCase == 8 ? (e << 8) | (d << 7) | (c << 6) | (b << 5) | (e << 1) | (d << 0)
- : rangeCase == 9 ? (e << 8) | (d << 7) | (c << 6) | (b << 5) | (e << 0)
- : rangeCase == 10 ? (f << 8) | (e << 7) | (d << 6) | (c << 5) | (b << 4) | (f << 0)
- : (deUint32)-1;
- DE_ASSERT(B != (deUint32)-1);
- dst[endpointNdx] = (((iseResults[endpointNdx].tq*C + B) ^ A) >> 2) | (A & 0x80);
- }
- }
- else
- {
- DE_ASSERT(iseParams.mode == ISEMODE_PLAIN_BIT);
- for (int endpointNdx = 0; endpointNdx < numEndpoints; endpointNdx++)
- dst[endpointNdx] = bitReplicationScale(iseResults[endpointNdx].v, iseParams.numBits, 8);
- }
-}
-inline void bitTransferSigned (deInt32& a, deInt32& b)
-{
- b >>= 1;
- b |= a & 0x80;
- a >>= 1;
- a &= 0x3f;
- if (isBitSet(a, 5))
- a -= 0x40;
-}
-inline UVec4 clampedRGBA (const IVec4& rgba)
-{
- return UVec4(basisu_astc::clamp(rgba.x(), 0, 0xff),
- basisu_astc::clamp(rgba.y(), 0, 0xff),
- basisu_astc::clamp(rgba.z(), 0, 0xff),
- basisu_astc::clamp(rgba.w(), 0, 0xff));
-}
-inline IVec4 blueContract (int r, int g, int b, int a)
-{
- return IVec4((r+b)>>1, (g+b)>>1, b, a);
-}
-inline bool isColorEndpointModeHDR (deUint32 mode)
-{
- return mode == 2 ||
- mode == 3 ||
- mode == 7 ||
- mode == 11 ||
- mode == 14 ||
- mode == 15;
-}
-void decodeHDREndpointMode7 (UVec4& e0, UVec4& e1, deUint32 v0, deUint32 v1, deUint32 v2, deUint32 v3)
-{
- const deUint32 m10 = getBit(v1, 7) | (getBit(v2, 7) << 1);
- const deUint32 m23 = getBits(v0, 6, 7);
- const deUint32 majComp = m10 != 3 ? m10
- : m23 != 3 ? m23
- : 0;
- const deUint32 mode = m10 != 3 ? m23
- : m23 != 3 ? 4
- : 5;
- deInt32 red = (deInt32)getBits(v0, 0, 5);
- deInt32 green = (deInt32)getBits(v1, 0, 4);
- deInt32 blue = (deInt32)getBits(v2, 0, 4);
- deInt32 scale = (deInt32)getBits(v3, 0, 4);
- {
-#define SHOR(DST_VAR, SHIFT, BIT_VAR) (DST_VAR) |= (BIT_VAR) << (SHIFT)
-#define ASSIGN_X_BITS(V0,S0, V1,S1, V2,S2, V3,S3, V4,S4, V5,S5, V6,S6) do { SHOR(V0,S0,x0); SHOR(V1,S1,x1); SHOR(V2,S2,x2); SHOR(V3,S3,x3); SHOR(V4,S4,x4); SHOR(V5,S5,x5); SHOR(V6,S6,x6); } while (false)
- const deUint32 x0 = getBit(v1, 6);
- const deUint32 x1 = getBit(v1, 5);
- const deUint32 x2 = getBit(v2, 6);
- const deUint32 x3 = getBit(v2, 5);
- const deUint32 x4 = getBit(v3, 7);
- const deUint32 x5 = getBit(v3, 6);
- const deUint32 x6 = getBit(v3, 5);
- deInt32& R = red;
- deInt32& G = green;
- deInt32& B = blue;
- deInt32& S = scale;
- switch (mode)
- {
- case 0: ASSIGN_X_BITS(R,9, R,8, R,7, R,10, R,6, S,6, S,5); break;
- case 1: ASSIGN_X_BITS(R,8, G,5, R,7, B,5, R,6, R,10, R,9); break;
- case 2: ASSIGN_X_BITS(R,9, R,8, R,7, R,6, S,7, S,6, S,5); break;
- case 3: ASSIGN_X_BITS(R,8, G,5, R,7, B,5, R,6, S,6, S,5); break;
- case 4: ASSIGN_X_BITS(G,6, G,5, B,6, B,5, R,6, R,7, S,5); break;
- case 5: ASSIGN_X_BITS(G,6, G,5, B,6, B,5, R,6, S,6, S,5); break;
- default:
- DE_ASSERT(false);
- }
-#undef ASSIGN_X_BITS
-#undef SHOR
- }
- static const int shiftAmounts[] = { 1, 1, 2, 3, 4, 5 };
- DE_ASSERT(mode < DE_LENGTH_OF_ARRAY(shiftAmounts));
- red <<= shiftAmounts[mode];
- green <<= shiftAmounts[mode];
- blue <<= shiftAmounts[mode];
- scale <<= shiftAmounts[mode];
- if (mode != 5)
- {
- green = red - green;
- blue = red - blue;
- }
- if (majComp == 1)
- std::swap(red, green);
- else if (majComp == 2)
- std::swap(red, blue);
- e0 = UVec4(basisu_astc::clamp(red - scale, 0, 0xfff),
- basisu_astc::clamp(green - scale, 0, 0xfff),
- basisu_astc::clamp(blue - scale, 0, 0xfff),
- 0x780);
- e1 = UVec4(basisu_astc::clamp(red, 0, 0xfff),
- basisu_astc::clamp(green, 0, 0xfff),
- basisu_astc::clamp(blue, 0, 0xfff),
- 0x780);
-}
-void decodeHDREndpointMode11 (UVec4& e0, UVec4& e1, deUint32 v0, deUint32 v1, deUint32 v2, deUint32 v3, deUint32 v4, deUint32 v5)
-{
- const deUint32 major = (getBit(v5, 7) << 1) | getBit(v4, 7);
- if (major == 3)
- {
- e0 = UVec4(v0<<4, v2<<4, getBits(v4,0,6)<<5, 0x780);
- e1 = UVec4(v1<<4, v3<<4, getBits(v5,0,6)<<5, 0x780);
- }
- else
- {
- const deUint32 mode = (getBit(v3, 7) << 2) | (getBit(v2, 7) << 1) | getBit(v1, 7);
- deInt32 a = (deInt32)((getBit(v1, 6) << 8) | v0);
- deInt32 c = (deInt32)(getBits(v1, 0, 5));
- deInt32 b0 = (deInt32)(getBits(v2, 0, 5));
- deInt32 b1 = (deInt32)(getBits(v3, 0, 5));
- deInt32 d0 = (deInt32)(getBits(v4, 0, 4));
- deInt32 d1 = (deInt32)(getBits(v5, 0, 4));
- {
-#define SHOR(DST_VAR, SHIFT, BIT_VAR) (DST_VAR) |= (BIT_VAR) << (SHIFT)
-#define ASSIGN_X_BITS(V0,S0, V1,S1, V2,S2, V3,S3, V4,S4, V5,S5) do { SHOR(V0,S0,x0); SHOR(V1,S1,x1); SHOR(V2,S2,x2); SHOR(V3,S3,x3); SHOR(V4,S4,x4); SHOR(V5,S5,x5); } while (false)
- const deUint32 x0 = getBit(v2, 6);
- const deUint32 x1 = getBit(v3, 6);
- const deUint32 x2 = getBit(v4, 6);
- const deUint32 x3 = getBit(v5, 6);
- const deUint32 x4 = getBit(v4, 5);
- const deUint32 x5 = getBit(v5, 5);
- switch (mode)
- {
- case 0: ASSIGN_X_BITS(b0,6, b1,6, d0,6, d1,6, d0,5, d1,5); break;
- case 1: ASSIGN_X_BITS(b0,6, b1,6, b0,7, b1,7, d0,5, d1,5); break;
- case 2: ASSIGN_X_BITS(a,9, c,6, d0,6, d1,6, d0,5, d1,5); break;
- case 3: ASSIGN_X_BITS(b0,6, b1,6, a,9, c,6, d0,5, d1,5); break;
- case 4: ASSIGN_X_BITS(b0,6, b1,6, b0,7, b1,7, a,9, a,10); break;
- case 5: ASSIGN_X_BITS(a,9, a,10, c,7, c,6, d0,5, d1,5); break;
- case 6: ASSIGN_X_BITS(b0,6, b1,6, a,11, c,6, a,9, a,10); break;
- case 7: ASSIGN_X_BITS(a,9, a,10, a,11, c,6, d0,5, d1,5); break;
- default:
- DE_ASSERT(false);
- }
-#undef ASSIGN_X_BITS
-#undef SHOR
- }
- static const int numDBits[] = { 7, 6, 7, 6, 5, 6, 5, 6 };
- DE_ASSERT(mode < DE_LENGTH_OF_ARRAY(numDBits));
- d0 = signExtend(d0, numDBits[mode]);
- d1 = signExtend(d1, numDBits[mode]);
- const int shiftAmount = (mode >> 1) ^ 3;
- a <<= shiftAmount;
- c <<= shiftAmount;
- b0 <<= shiftAmount;
- b1 <<= shiftAmount;
- d0 <<= shiftAmount;
- d1 <<= shiftAmount;
- e0 = UVec4(basisu_astc::clamp(a-c, 0, 0xfff),
- basisu_astc::clamp(a-b0-c-d0, 0, 0xfff),
- basisu_astc::clamp(a-b1-c-d1, 0, 0xfff),
- 0x780);
- e1 = UVec4(basisu_astc::clamp(a, 0, 0xfff),
- basisu_astc::clamp(a-b0, 0, 0xfff),
- basisu_astc::clamp(a-b1, 0, 0xfff),
- 0x780);
- if (major == 1)
- {
- std::swap(e0.x(), e0.y());
- std::swap(e1.x(), e1.y());
- }
- else if (major == 2)
- {
- std::swap(e0.x(), e0.z());
- std::swap(e1.x(), e1.z());
- }
- }
-}
-void decodeHDREndpointMode15(UVec4& e0, UVec4& e1, deUint32 v0, deUint32 v1, deUint32 v2, deUint32 v3, deUint32 v4, deUint32 v5, deUint32 v6In, deUint32 v7In)
-{
- decodeHDREndpointMode11(e0, e1, v0, v1, v2, v3, v4, v5);
- const deUint32 mode = (getBit(v7In, 7) << 1) | getBit(v6In, 7);
- deInt32 v6 = (deInt32)getBits(v6In, 0, 6);
- deInt32 v7 = (deInt32)getBits(v7In, 0, 6);
- if (mode == 3)
- {
- e0.w() = v6 << 5;
- e1.w() = v7 << 5;
- }
- else
- {
- v6 |= (v7 << (mode+1)) & 0x780;
- v7 &= (0x3f >> mode);
- v7 ^= 0x20 >> mode;
- v7 -= 0x20 >> mode;
- v6 <<= 4-mode;
- v7 <<= 4-mode;
- v7 += v6;
- v7 = basisu_astc::clamp(v7, 0, 0xfff);
- e0.w() = v6;
- e1.w() = v7;
- }
-}
-void decodeColorEndpoints (ColorEndpointPair* dst, const deUint32* unquantizedEndpoints, const deUint32* endpointModes, int numPartitions)
-{
- int unquantizedNdx = 0;
- for (int partitionNdx = 0; partitionNdx < numPartitions; partitionNdx++)
- {
- const deUint32 endpointMode = endpointModes[partitionNdx];
- const deUint32* v = &unquantizedEndpoints[unquantizedNdx];
- UVec4& e0 = dst[partitionNdx].e0;
- UVec4& e1 = dst[partitionNdx].e1;
- unquantizedNdx += computeNumColorEndpointValues(endpointMode);
- switch (endpointMode)
- {
- case 0:
- e0 = UVec4(v[0], v[0], v[0], 0xff);
- e1 = UVec4(v[1], v[1], v[1], 0xff);
- break;
- case 1:
- {
- const deUint32 L0 = (v[0] >> 2) | (getBits(v[1], 6, 7) << 6);
- const deUint32 L1 = basisu_astc::min(0xffu, L0 + getBits(v[1], 0, 5));
- e0 = UVec4(L0, L0, L0, 0xff);
- e1 = UVec4(L1, L1, L1, 0xff);
- break;
- }
- case 2:
- {
- const deUint32 v1Gr = v[1] >= v[0];
- const deUint32 y0 = v1Gr ? v[0]<<4 : (v[1]<<4) + 8;
- const deUint32 y1 = v1Gr ? v[1]<<4 : (v[0]<<4) - 8;
- e0 = UVec4(y0, y0, y0, 0x780);
- e1 = UVec4(y1, y1, y1, 0x780);
- break;
- }
- case 3:
- {
- const bool m = isBitSet(v[0], 7);
- const deUint32 y0 = m ? (getBits(v[1], 5, 7) << 9) | (getBits(v[0], 0, 6) << 2)
- : (getBits(v[1], 4, 7) << 8) | (getBits(v[0], 0, 6) << 1);
- const deUint32 d = m ? getBits(v[1], 0, 4) << 2
- : getBits(v[1], 0, 3) << 1;
- const deUint32 y1 = basisu_astc::min(0xfffu, y0+d);
- e0 = UVec4(y0, y0, y0, 0x780);
- e1 = UVec4(y1, y1, y1, 0x780);
- break;
- }
- case 4:
- e0 = UVec4(v[0], v[0], v[0], v[2]);
- e1 = UVec4(v[1], v[1], v[1], v[3]);
- break;
- case 5:
- {
- deInt32 v0 = (deInt32)v[0];
- deInt32 v1 = (deInt32)v[1];
- deInt32 v2 = (deInt32)v[2];
- deInt32 v3 = (deInt32)v[3];
- bitTransferSigned(v1, v0);
- bitTransferSigned(v3, v2);
- e0 = clampedRGBA(IVec4(v0, v0, v0, v2));
- e1 = clampedRGBA(IVec4(v0+v1, v0+v1, v0+v1, v2+v3));
- break;
- }
- case 6:
- e0 = UVec4((v[0]*v[3]) >> 8, (v[1]*v[3]) >> 8, (v[2]*v[3]) >> 8, 0xff);
- e1 = UVec4(v[0], v[1], v[2], 0xff);
- break;
- case 7:
- decodeHDREndpointMode7(e0, e1, v[0], v[1], v[2], v[3]);
- break;
- case 8:
- if (v[1]+v[3]+v[5] >= v[0]+v[2]+v[4])
- {
- e0 = UVec4(v[0], v[2], v[4], 0xff);
- e1 = UVec4(v[1], v[3], v[5], 0xff);
- }
- else
- {
- e0 = blueContract(v[1], v[3], v[5], 0xff).asUint();
- e1 = blueContract(v[0], v[2], v[4], 0xff).asUint();
- }
- break;
- case 9:
- {
- deInt32 v0 = (deInt32)v[0];
- deInt32 v1 = (deInt32)v[1];
- deInt32 v2 = (deInt32)v[2];
- deInt32 v3 = (deInt32)v[3];
- deInt32 v4 = (deInt32)v[4];
- deInt32 v5 = (deInt32)v[5];
- bitTransferSigned(v1, v0);
- bitTransferSigned(v3, v2);
- bitTransferSigned(v5, v4);
- if (v1+v3+v5 >= 0)
- {
- e0 = clampedRGBA(IVec4(v0, v2, v4, 0xff));
- e1 = clampedRGBA(IVec4(v0+v1, v2+v3, v4+v5, 0xff));
- }
- else
- {
- e0 = clampedRGBA(blueContract(v0+v1, v2+v3, v4+v5, 0xff));
- e1 = clampedRGBA(blueContract(v0, v2, v4, 0xff));
- }
- break;
- }
- case 10:
- e0 = UVec4((v[0]*v[3]) >> 8, (v[1]*v[3]) >> 8, (v[2]*v[3]) >> 8, v[4]);
- e1 = UVec4(v[0], v[1], v[2], v[5]);
- break;
- case 11:
- decodeHDREndpointMode11(e0, e1, v[0], v[1], v[2], v[3], v[4], v[5]);
- break;
- case 12:
- if (v[1]+v[3]+v[5] >= v[0]+v[2]+v[4])
- {
- e0 = UVec4(v[0], v[2], v[4], v[6]);
- e1 = UVec4(v[1], v[3], v[5], v[7]);
- }
- else
- {
- e0 = clampedRGBA(blueContract(v[1], v[3], v[5], v[7]));
- e1 = clampedRGBA(blueContract(v[0], v[2], v[4], v[6]));
- }
- break;
- case 13:
- {
- deInt32 v0 = (deInt32)v[0];
- deInt32 v1 = (deInt32)v[1];
- deInt32 v2 = (deInt32)v[2];
- deInt32 v3 = (deInt32)v[3];
- deInt32 v4 = (deInt32)v[4];
- deInt32 v5 = (deInt32)v[5];
- deInt32 v6 = (deInt32)v[6];
- deInt32 v7 = (deInt32)v[7];
- bitTransferSigned(v1, v0);
- bitTransferSigned(v3, v2);
- bitTransferSigned(v5, v4);
- bitTransferSigned(v7, v6);
- if (v1+v3+v5 >= 0)
- {
- e0 = clampedRGBA(IVec4(v0, v2, v4, v6));
- e1 = clampedRGBA(IVec4(v0+v1, v2+v3, v4+v5, v6+v7));
- }
- else
- {
- e0 = clampedRGBA(blueContract(v0+v1, v2+v3, v4+v5, v6+v7));
- e1 = clampedRGBA(blueContract(v0, v2, v4, v6));
- }
- break;
- }
- case 14:
- decodeHDREndpointMode11(e0, e1, v[0], v[1], v[2], v[3], v[4], v[5]);
- e0.w() = v[6];
- e1.w() = v[7];
- break;
- case 15:
- decodeHDREndpointMode15(e0, e1, v[0], v[1], v[2], v[3], v[4], v[5], v[6], v[7]);
- break;
- default:
- DE_ASSERT(false);
- }
- }
-}
-void computeColorEndpoints (ColorEndpointPair* dst, const Block128& blockData, const deUint32* endpointModes, int numPartitions, int numColorEndpointValues, const ISEParams& iseParams, int numBitsAvailable)
-{
- const int colorEndpointDataStart = numPartitions == 1 ? 17 : 29;
- ISEDecodedResult colorEndpointData[18];
- {
- BitAccessStream dataStream(blockData, colorEndpointDataStart, numBitsAvailable, true);
- decodeISE(&colorEndpointData[0], numColorEndpointValues, dataStream, iseParams);
- }
- {
- deUint32 unquantizedEndpoints[18];
- unquantizeColorEndpoints(&unquantizedEndpoints[0], &colorEndpointData[0], numColorEndpointValues, iseParams);
- decodeColorEndpoints(dst, &unquantizedEndpoints[0], &endpointModes[0], numPartitions);
- }
-}
-void unquantizeWeights (deUint32 dst[64], const ISEDecodedResult* weightGrid, const ASTCBlockMode& blockMode)
-{
- const int numWeights = computeNumWeights(blockMode);
- const ISEParams& iseParams = blockMode.weightISEParams;
- if (iseParams.mode == ISEMODE_TRIT || iseParams.mode == ISEMODE_QUINT)
- {
- const int rangeCase = iseParams.numBits*2 + (iseParams.mode == ISEMODE_QUINT ? 1 : 0);
- if (rangeCase == 0 || rangeCase == 1)
- {
- static const deUint32 map0[3] = { 0, 32, 63 };
- static const deUint32 map1[5] = { 0, 16, 32, 47, 63 };
- const deUint32* const map = rangeCase == 0 ? &map0[0] : &map1[0];
- for (int i = 0; i < numWeights; i++)
- {
- DE_ASSERT(weightGrid[i].v < (rangeCase == 0 ? 3u : 5u));
- dst[i] = map[weightGrid[i].v];
- }
- }
- else
- {
- DE_ASSERT(rangeCase <= 6);
- static const deUint32 Ca[5] = { 50, 28, 23, 13, 11 };
- const deUint32 C = Ca[rangeCase-2];
- for (int weightNdx = 0; weightNdx < numWeights; weightNdx++)
- {
- const deUint32 a = getBit(weightGrid[weightNdx].m, 0);
- const deUint32 b = getBit(weightGrid[weightNdx].m, 1);
- const deUint32 c = getBit(weightGrid[weightNdx].m, 2);
- const deUint32 A = a == 0 ? 0 : (1<<7)-1;
- const deUint32 B = rangeCase == 2 ? 0
- : rangeCase == 3 ? 0
- : rangeCase == 4 ? (b << 6) | (b << 2) | (b << 0)
- : rangeCase == 5 ? (b << 6) | (b << 1)
- : rangeCase == 6 ? (c << 6) | (b << 5) | (c << 1) | (b << 0)
- : (deUint32)-1;
- dst[weightNdx] = (((weightGrid[weightNdx].tq*C + B) ^ A) >> 2) | (A & 0x20);
- }
- }
- }
- else
- {
- DE_ASSERT(iseParams.mode == ISEMODE_PLAIN_BIT);
- for (int weightNdx = 0; weightNdx < numWeights; weightNdx++)
- dst[weightNdx] = bitReplicationScale(weightGrid[weightNdx].v, iseParams.numBits, 6);
- }
- for (int weightNdx = 0; weightNdx < numWeights; weightNdx++)
- dst[weightNdx] += dst[weightNdx] > 32 ? 1 : 0;
- // Initialize nonexistent weights to poison values
- for (int weightNdx = numWeights; weightNdx < 64; weightNdx++)
- dst[weightNdx] = ~0u;
-}
-void interpolateWeights (TexelWeightPair* dst, const deUint32 (&unquantizedWeights) [64], int blockWidth, int blockHeight, const ASTCBlockMode& blockMode)
-{
- const int numWeightsPerTexel = blockMode.isDualPlane ? 2 : 1;
- const deUint32 scaleX = (1024 + blockWidth/2) / (blockWidth-1);
- const deUint32 scaleY = (1024 + blockHeight/2) / (blockHeight-1);
- DE_ASSERT(blockMode.weightGridWidth*blockMode.weightGridHeight*numWeightsPerTexel <= (int)DE_LENGTH_OF_ARRAY(unquantizedWeights));
- for (int texelY = 0; texelY < blockHeight; texelY++)
- {
- for (int texelX = 0; texelX < blockWidth; texelX++)
- {
- const deUint32 gX = (scaleX*texelX*(blockMode.weightGridWidth-1) + 32) >> 6;
- const deUint32 gY = (scaleY*texelY*(blockMode.weightGridHeight-1) + 32) >> 6;
- const deUint32 jX = gX >> 4;
- const deUint32 jY = gY >> 4;
- const deUint32 fX = gX & 0xf;
- const deUint32 fY = gY & 0xf;
- const deUint32 w11 = (fX*fY + 8) >> 4;
- const deUint32 w10 = fY - w11;
- const deUint32 w01 = fX - w11;
- const deUint32 w00 = 16 - fX - fY + w11;
- const deUint32 i00 = jY*blockMode.weightGridWidth + jX;
- const deUint32 i01 = i00 + 1;
- const deUint32 i10 = i00 + blockMode.weightGridWidth;
- const deUint32 i11 = i00 + blockMode.weightGridWidth + 1;
- // These addresses can be out of bounds, but respective weights will be 0 then.
- DE_ASSERT(deInBounds32(i00, 0, blockMode.weightGridWidth*blockMode.weightGridHeight) || w00 == 0);
- DE_ASSERT(deInBounds32(i01, 0, blockMode.weightGridWidth*blockMode.weightGridHeight) || w01 == 0);
- DE_ASSERT(deInBounds32(i10, 0, blockMode.weightGridWidth*blockMode.weightGridHeight) || w10 == 0);
- DE_ASSERT(deInBounds32(i11, 0, blockMode.weightGridWidth*blockMode.weightGridHeight) || w11 == 0);
- for (int texelWeightNdx = 0; texelWeightNdx < numWeightsPerTexel; texelWeightNdx++)
- {
- // & 0x3f clamps address to bounds of unquantizedWeights
- const deUint32 p00 = unquantizedWeights[(i00 * numWeightsPerTexel + texelWeightNdx) & 0x3f];
- const deUint32 p01 = unquantizedWeights[(i01 * numWeightsPerTexel + texelWeightNdx) & 0x3f];
- const deUint32 p10 = unquantizedWeights[(i10 * numWeightsPerTexel + texelWeightNdx) & 0x3f];
- const deUint32 p11 = unquantizedWeights[(i11 * numWeightsPerTexel + texelWeightNdx) & 0x3f];
- dst[texelY*blockWidth + texelX].w[texelWeightNdx] = (p00*w00 + p01*w01 + p10*w10 + p11*w11 + 8) >> 4;
- }
- }
- }
-}
-void computeTexelWeights (TexelWeightPair* dst, const Block128& blockData, int blockWidth, int blockHeight, const ASTCBlockMode& blockMode)
-{
- ISEDecodedResult weightGrid[64];
- {
- BitAccessStream dataStream(blockData, 127, computeNumRequiredBits(blockMode.weightISEParams, computeNumWeights(blockMode)), false);
- decodeISE(&weightGrid[0], computeNumWeights(blockMode), dataStream, blockMode.weightISEParams);
- }
- {
- deUint32 unquantizedWeights[64];
- unquantizeWeights(&unquantizedWeights[0], &weightGrid[0], blockMode);
- interpolateWeights(dst, unquantizedWeights, blockWidth, blockHeight, blockMode);
- }
-}
-inline deUint32 hash52 (deUint32 v)
-{
- deUint32 p = v;
- p ^= p >> 15; p -= p << 17; p += p << 7; p += p << 4;
- p ^= p >> 5; p += p << 16; p ^= p >> 7; p ^= p >> 3;
- p ^= p << 6; p ^= p >> 17;
- return p;
-}
-int computeTexelPartition (deUint32 seedIn, deUint32 xIn, deUint32 yIn, deUint32 zIn, int numPartitions, bool smallBlock)
-{
- DE_ASSERT(zIn == 0);
- const deUint32 x = smallBlock ? xIn << 1 : xIn;
- const deUint32 y = smallBlock ? yIn << 1 : yIn;
- const deUint32 z = smallBlock ? zIn << 1 : zIn;
- const deUint32 seed = seedIn + 1024*(numPartitions-1);
- const deUint32 rnum = hash52(seed);
- deUint8 seed1 = (deUint8)( rnum & 0xf);
- deUint8 seed2 = (deUint8)((rnum >> 4) & 0xf);
- deUint8 seed3 = (deUint8)((rnum >> 8) & 0xf);
- deUint8 seed4 = (deUint8)((rnum >> 12) & 0xf);
- deUint8 seed5 = (deUint8)((rnum >> 16) & 0xf);
- deUint8 seed6 = (deUint8)((rnum >> 20) & 0xf);
- deUint8 seed7 = (deUint8)((rnum >> 24) & 0xf);
- deUint8 seed8 = (deUint8)((rnum >> 28) & 0xf);
- deUint8 seed9 = (deUint8)((rnum >> 18) & 0xf);
- deUint8 seed10 = (deUint8)((rnum >> 22) & 0xf);
- deUint8 seed11 = (deUint8)((rnum >> 26) & 0xf);
- deUint8 seed12 = (deUint8)(((rnum >> 30) | (rnum << 2)) & 0xf);
- seed1 = (deUint8)(seed1 * seed1 );
- seed2 = (deUint8)(seed2 * seed2 );
- seed3 = (deUint8)(seed3 * seed3 );
- seed4 = (deUint8)(seed4 * seed4 );
- seed5 = (deUint8)(seed5 * seed5 );
- seed6 = (deUint8)(seed6 * seed6 );
- seed7 = (deUint8)(seed7 * seed7 );
- seed8 = (deUint8)(seed8 * seed8 );
- seed9 = (deUint8)(seed9 * seed9 );
- seed10 = (deUint8)(seed10 * seed10);
- seed11 = (deUint8)(seed11 * seed11);
- seed12 = (deUint8)(seed12 * seed12);
- const int shA = (seed & 2) != 0 ? 4 : 5;
- const int shB = numPartitions == 3 ? 6 : 5;
- const int sh1 = (seed & 1) != 0 ? shA : shB;
- const int sh2 = (seed & 1) != 0 ? shB : shA;
- const int sh3 = (seed & 0x10) != 0 ? sh1 : sh2;
- seed1 = (deUint8)(seed1 >> sh1);
- seed2 = (deUint8)(seed2 >> sh2);
- seed3 = (deUint8)(seed3 >> sh1);
- seed4 = (deUint8)(seed4 >> sh2);
- seed5 = (deUint8)(seed5 >> sh1);
- seed6 = (deUint8)(seed6 >> sh2);
- seed7 = (deUint8)(seed7 >> sh1);
- seed8 = (deUint8)(seed8 >> sh2);
- seed9 = (deUint8)(seed9 >> sh3);
- seed10 = (deUint8)(seed10 >> sh3);
- seed11 = (deUint8)(seed11 >> sh3);
- seed12 = (deUint8)(seed12 >> sh3);
- const int a = 0x3f & (seed1*x + seed2*y + seed11*z + (rnum >> 14));
- const int b = 0x3f & (seed3*x + seed4*y + seed12*z + (rnum >> 10));
- const int c = numPartitions >= 3 ? 0x3f & (seed5*x + seed6*y + seed9*z + (rnum >> 6)) : 0;
- const int d = numPartitions >= 4 ? 0x3f & (seed7*x + seed8*y + seed10*z + (rnum >> 2)) : 0;
- return a >= b && a >= c && a >= d ? 0
- : b >= c && b >= d ? 1
- : c >= d ? 2
- : 3;
-}
-DecompressResult setTexelColors (void* dst, ColorEndpointPair* colorEndpoints, TexelWeightPair* texelWeights, int ccs, deUint32 partitionIndexSeed,
- int numPartitions, int blockWidth, int blockHeight, bool isSRGB, bool isLDRMode, const deUint32* colorEndpointModes)
-{
- const bool smallBlock = blockWidth*blockHeight < 31;
- DecompressResult result = DECOMPRESS_RESULT_VALID_BLOCK;
- bool isHDREndpoint[4];
- for (int i = 0; i < numPartitions; i++)
- {
- isHDREndpoint[i] = isColorEndpointModeHDR(colorEndpointModes[i]);
-
- // rg - REMOVING HDR SUPPORT FOR NOW
- if (isHDREndpoint[i])
- return DECOMPRESS_RESULT_ERROR;
- }
-
- for (int texelY = 0; texelY < blockHeight; texelY++)
- for (int texelX = 0; texelX < blockWidth; texelX++)
- {
- const int texelNdx = texelY*blockWidth + texelX;
- const int colorEndpointNdx = numPartitions == 1 ? 0 : computeTexelPartition(partitionIndexSeed, texelX, texelY, 0, numPartitions, smallBlock);
- DE_ASSERT(colorEndpointNdx < numPartitions);
- const UVec4& e0 = colorEndpoints[colorEndpointNdx].e0;
- const UVec4& e1 = colorEndpoints[colorEndpointNdx].e1;
- const TexelWeightPair& weight = texelWeights[texelNdx];
- if (isLDRMode && isHDREndpoint[colorEndpointNdx])
- {
- if (isSRGB)
- {
- ((deUint8*)dst)[texelNdx*4 + 0] = 0xff;
- ((deUint8*)dst)[texelNdx*4 + 1] = 0;
- ((deUint8*)dst)[texelNdx*4 + 2] = 0xff;
- ((deUint8*)dst)[texelNdx*4 + 3] = 0xff;
- }
- else
- {
- ((float*)dst)[texelNdx*4 + 0] = 1.0f;
- ((float*)dst)[texelNdx*4 + 1] = 0;
- ((float*)dst)[texelNdx*4 + 2] = 1.0f;
- ((float*)dst)[texelNdx*4 + 3] = 1.0f;
- }
- result = DECOMPRESS_RESULT_ERROR;
- }
- else
- {
- for (int channelNdx = 0; channelNdx < 4; channelNdx++)
- {
- if (!isHDREndpoint[colorEndpointNdx] || (channelNdx == 3 && colorEndpointModes[colorEndpointNdx] == 14)) // \note Alpha for mode 14 is treated the same as LDR.
- {
- const deUint32 c0 = (e0[channelNdx] << 8) | (isSRGB ? 0x80 : e0[channelNdx]);
- const deUint32 c1 = (e1[channelNdx] << 8) | (isSRGB ? 0x80 : e1[channelNdx]);
- const deUint32 w = weight.w[ccs == channelNdx ? 1 : 0];
- const deUint32 c = (c0*(64-w) + c1*w + 32) / 64;
- if (isSRGB)
- ((deUint8*)dst)[texelNdx*4 + channelNdx] = (deUint8)((c & 0xff00) >> 8);
- else
- ((float*)dst)[texelNdx*4 + channelNdx] = c == 65535 ? 1.0f : (float)c / 65536.0f;
- }
- else
- {
- //DE_STATIC_ASSERT((basisu_astc::meta::TypesSame<deFloat16, deUint16>::Value));
- // rg - REMOVING HDR SUPPORT FOR NOW
-#if 0
- const deUint32 c0 = e0[channelNdx] << 4;
- const deUint32 c1 = e1[channelNdx] << 4;
- const deUint32 w = weight.w[ccs == channelNdx ? 1 : 0];
- const deUint32 c = (c0*(64-w) + c1*w + 32) / 64;
- const deUint32 e = getBits(c, 11, 15);
- const deUint32 m = getBits(c, 0, 10);
- const deUint32 mt = m < 512 ? 3*m
- : m >= 1536 ? 5*m - 2048
- : 4*m - 512;
- const deFloat16 cf = (deFloat16)((e << 10) + (mt >> 3));
- ((float*)dst)[texelNdx*4 + channelNdx] = deFloat16To32(isFloat16InfOrNan(cf) ? 0x7bff : cf);
-#endif
- }
- }
- }
- }
- return result;
-}
-DecompressResult decompressBlock (void* dst, const Block128& blockData, int blockWidth, int blockHeight, bool isSRGB, bool isLDR)
-{
- DE_ASSERT(isLDR || !isSRGB);
- // Decode block mode.
- const ASTCBlockMode blockMode = getASTCBlockMode(blockData.getBits(0, 10));
- // Check for block mode errors.
- if (blockMode.isError)
- {
- setASTCErrorColorBlock(dst, blockWidth, blockHeight, isSRGB);
- return DECOMPRESS_RESULT_ERROR;
- }
- // Separate path for void-extent.
- if (blockMode.isVoidExtent)
- return decodeVoidExtentBlock(dst, blockData, blockWidth, blockHeight, isSRGB, isLDR);
- // Compute weight grid values.
- const int numWeights = computeNumWeights(blockMode);
- const int numWeightDataBits = computeNumRequiredBits(blockMode.weightISEParams, numWeights);
- const int numPartitions = (int)blockData.getBits(11, 12) + 1;
- // Check for errors in weight grid, partition and dual-plane parameters.
- if (numWeights > 64 ||
- numWeightDataBits > 96 ||
- numWeightDataBits < 24 ||
- blockMode.weightGridWidth > blockWidth ||
- blockMode.weightGridHeight > blockHeight ||
- (numPartitions == 4 && blockMode.isDualPlane))
- {
- setASTCErrorColorBlock(dst, blockWidth, blockHeight, isSRGB);
- return DECOMPRESS_RESULT_ERROR;
- }
- // Compute number of bits available for color endpoint data.
- const bool isSingleUniqueCem = numPartitions == 1 || blockData.getBits(23, 24) == 0;
- const int numConfigDataBits = (numPartitions == 1 ? 17 : isSingleUniqueCem ? 29 : 25 + 3*numPartitions) +
- (blockMode.isDualPlane ? 2 : 0);
- const int numBitsForColorEndpoints = 128 - numWeightDataBits - numConfigDataBits;
- const int extraCemBitsStart = 127 - numWeightDataBits - (isSingleUniqueCem ? -1
- : numPartitions == 4 ? 7
- : numPartitions == 3 ? 4
- : numPartitions == 2 ? 1
- : 0);
- // Decode color endpoint modes.
- deUint32 colorEndpointModes[4];
- decodeColorEndpointModes(&colorEndpointModes[0], blockData, numPartitions, extraCemBitsStart);
- const int numColorEndpointValues = computeNumColorEndpointValues(colorEndpointModes, numPartitions);
- // Check for errors in color endpoint value count.
- if (numColorEndpointValues > 18 || numBitsForColorEndpoints < (int)deDivRoundUp32(13*numColorEndpointValues, 5))
- {
- setASTCErrorColorBlock(dst, blockWidth, blockHeight, isSRGB);
- return DECOMPRESS_RESULT_ERROR;
- }
- // Compute color endpoints.
- ColorEndpointPair colorEndpoints[4];
- computeColorEndpoints(&colorEndpoints[0], blockData, &colorEndpointModes[0], numPartitions, numColorEndpointValues,
- computeMaximumRangeISEParams(numBitsForColorEndpoints, numColorEndpointValues), numBitsForColorEndpoints);
- // Compute texel weights.
- TexelWeightPair texelWeights[MAX_BLOCK_WIDTH*MAX_BLOCK_HEIGHT];
- computeTexelWeights(&texelWeights[0], blockData, blockWidth, blockHeight, blockMode);
- // Set texel colors.
- const int ccs = blockMode.isDualPlane ? (int)blockData.getBits(extraCemBitsStart-2, extraCemBitsStart-1) : -1;
- const deUint32 partitionIndexSeed = numPartitions > 1 ? blockData.getBits(13, 22) : (deUint32)-1;
- return setTexelColors(dst, &colorEndpoints[0], &texelWeights[0], ccs, partitionIndexSeed, numPartitions, blockWidth, blockHeight, isSRGB, isLDR, &colorEndpointModes[0]);
-}
-
-} // anonymous
-
-bool decompress(uint8_t *pDst, const uint8_t * data, bool isSRGB, int blockWidth, int blockHeight)
-{
- // rg - We only support LDR here, although adding back in HDR would be easy.
- const bool isLDR = true;
- DE_ASSERT(isLDR || !isSRGB);
-
- float linear[MAX_BLOCK_WIDTH * MAX_BLOCK_HEIGHT * 4];
-
- const Block128 blockData(data);
- if (decompressBlock(isSRGB ? (void*)pDst : (void*)& linear[0],
- blockData, blockWidth, blockHeight, isSRGB, isLDR) != DECOMPRESS_RESULT_VALID_BLOCK)
- return false;
-
- if (!isSRGB)
- {
- int pix = 0;
- for (int i = 0; i < blockHeight; i++)
- {
- for (int j = 0; j < blockWidth; j++, pix++)
- {
- pDst[4 * pix + 0] = (uint8_t)(basisu_astc::clamp<int>((int)(linear[pix * 4 + 0] * 65536.0f + .5f), 0, 65535) >> 8);
- pDst[4 * pix + 1] = (uint8_t)(basisu_astc::clamp<int>((int)(linear[pix * 4 + 1] * 65536.0f + .5f), 0, 65535) >> 8);
- pDst[4 * pix + 2] = (uint8_t)(basisu_astc::clamp<int>((int)(linear[pix * 4 + 2] * 65536.0f + .5f), 0, 65535) >> 8);
- pDst[4 * pix + 3] = (uint8_t)(basisu_astc::clamp<int>((int)(linear[pix * 4 + 3] * 65536.0f + .5f), 0, 65535) >> 8);
- }
- }
- }
-
- return true;
-}
-
-} // astc
-} // basisu_astc
-
-#if defined(__GNUC__)
-#pragma GCC diagnostic pop
-#endif
diff --git a/thirdparty/basis_universal/encoder/basisu_astc_decomp.h b/thirdparty/basis_universal/encoder/basisu_astc_decomp.h
deleted file mode 100644
index 9ec2e46076..0000000000
--- a/thirdparty/basis_universal/encoder/basisu_astc_decomp.h
+++ /dev/null
@@ -1,43 +0,0 @@
-#ifndef _TCUASTCUTIL_HPP
-#define _TCUASTCUTIL_HPP
-/*-------------------------------------------------------------------------
- * drawElements Quality Program Tester Core
- * ----------------------------------------
- *
- * Copyright 2016 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- *//*!
- * \file
- * \brief ASTC Utilities.
- *//*--------------------------------------------------------------------*/
-
-#include "../transcoder/basisu.h" // to pick up the iterator debug level madness
-#include <vector>
-#include <stdint.h>
-
-namespace basisu_astc
-{
-namespace astc
-{
-
-// Unpacks a single ASTC block to pDst
-// If isSRGB is true, the spec requires the decoder to scale the LDR 8-bit endpoints to 16-bit before interpolation slightly differently,
-// which will lead to different outputs. So be sure to set it correctly (ideally it should match whatever the encoder did).
-bool decompress(uint8_t* pDst, const uint8_t* data, bool isSRGB, int blockWidth, int blockHeight);
-
-} // astc
-} // basisu
-
-#endif
diff --git a/thirdparty/basis_universal/encoder/basisu_backend.cpp b/thirdparty/basis_universal/encoder/basisu_backend.cpp
index 19911fcbb4..abb61750a6 100644
--- a/thirdparty/basis_universal/encoder/basisu_backend.cpp
+++ b/thirdparty/basis_universal/encoder/basisu_backend.cpp
@@ -49,22 +49,17 @@ namespace basisu
m_output.clear();
}
- void basisu_backend::init(basisu_frontend* pFront_end, basisu_backend_params& params, const basisu_backend_slice_desc_vec& slice_descs, const basist::etc1_global_selector_codebook* pGlobal_sel_codebook)
+ void basisu_backend::init(basisu_frontend* pFront_end, basisu_backend_params& params, const basisu_backend_slice_desc_vec& slice_descs)
{
m_pFront_end = pFront_end;
m_params = params;
m_slices = slice_descs;
- m_pGlobal_sel_codebook = pGlobal_sel_codebook;
-
- debug_printf("basisu_backend::Init: Slices: %u, ETC1S: %u, EndpointRDOQualityThresh: %f, SelectorRDOQualityThresh: %f, UseGlobalSelCodebook: %u, GlobalSelCodebookPalBits: %u, GlobalSelCodebookModBits: %u, Use hybrid selector codebooks: %u\n",
+
+ debug_printf("basisu_backend::Init: Slices: %u, ETC1S: %u, EndpointRDOQualityThresh: %f, SelectorRDOQualityThresh: %f\n",
m_slices.size(),
params.m_etc1s,
params.m_endpoint_rdo_quality_thresh,
- params.m_selector_rdo_quality_thresh,
- params.m_use_global_sel_codebook,
- params.m_global_sel_codebook_pal_bits,
- params.m_global_sel_codebook_mod_bits,
- params.m_use_hybrid_sel_codebooks);
+ params.m_selector_rdo_quality_thresh);
debug_printf("Frontend endpoints: %u selectors: %u\n", m_pFront_end->get_total_endpoint_clusters(), m_pFront_end->get_total_selector_clusters());
@@ -106,63 +101,17 @@ namespace basisu
m_selector_palette.resize(r.get_total_selector_clusters());
- if (m_params.m_use_global_sel_codebook)
+ for (uint32_t i = 0; i < r.get_total_selector_clusters(); i++)
{
- m_global_selector_palette_desc.resize(r.get_total_selector_clusters());
-
- for (int i = 0; i < static_cast<int>(r.get_total_selector_clusters()); i++)
- {
- basist::etc1_selector_palette_entry& selector_pal_entry = m_selector_palette[i];
-
- etc1_global_selector_cb_entry_desc& pal_entry_desc = m_global_selector_palette_desc[i];
- pal_entry_desc.m_pal_index = r.get_selector_cluster_global_selector_entry_ids()[i].m_palette_index;
- pal_entry_desc.m_mod_index = r.get_selector_cluster_global_selector_entry_ids()[i].m_modifier.get_index();
-
- pal_entry_desc.m_was_used = true;
- if (m_params.m_use_hybrid_sel_codebooks)
- pal_entry_desc.m_was_used = r.get_selector_cluster_uses_global_cb_vec()[i];
-
- if (pal_entry_desc.m_was_used)
- {
- const etc_block& selector_bits = r.get_selector_cluster_selector_bits(i);
- (void)selector_bits;
-
- basist::etc1_selector_palette_entry global_pal_entry(m_pGlobal_sel_codebook->get_entry(r.get_selector_cluster_global_selector_entry_ids()[i]));
+ etc1_selector_palette_entry& s = m_selector_palette[i];
- for (uint32_t y = 0; y < 4; y++)
- {
- for (uint32_t x = 0; x < 4; x++)
- {
- selector_pal_entry(x, y) = global_pal_entry(x, y);
+ const etc_block& selector_bits = r.get_selector_cluster_selector_bits(i);
- assert(selector_bits.get_selector(x, y) == global_pal_entry(x, y));
- }
- }
- }
- else
- {
- const etc_block& selector_bits = r.get_selector_cluster_selector_bits(i);
-
- for (uint32_t y = 0; y < 4; y++)
- for (uint32_t x = 0; x < 4; x++)
- selector_pal_entry[y * 4 + x] = static_cast<uint8_t>(selector_bits.get_selector(x, y));
- }
- }
- }
- else
- {
- for (uint32_t i = 0; i < r.get_total_selector_clusters(); i++)
+ for (uint32_t y = 0; y < 4; y++)
{
- basist::etc1_selector_palette_entry& s = m_selector_palette[i];
-
- const etc_block& selector_bits = r.get_selector_cluster_selector_bits(i);
-
- for (uint32_t y = 0; y < 4; y++)
+ for (uint32_t x = 0; x < 4; x++)
{
- for (uint32_t x = 0; x < 4; x++)
- {
- s[y * 4 + x] = static_cast<uint8_t>(selector_bits.get_selector(x, y));
- }
+ s[y * 4 + x] = static_cast<uint8_t>(selector_bits.get_selector(x, y));
}
}
}
@@ -388,6 +337,8 @@ namespace basisu
if (!is_video)
return;
+ debug_printf("basisu_backend::check_for_valid_cr_blocks\n");
+
uint32_t total_crs = 0;
uint32_t total_invalid_crs = 0;
@@ -454,6 +405,11 @@ namespace basisu
void basisu_backend::create_encoder_blocks()
{
+ debug_printf("basisu_backend::create_encoder_blocks\n");
+
+ interval_timer tm;
+ tm.start();
+
basisu_frontend& r = *m_pFront_end;
const bool is_video = r.get_params().m_tex_type == basist::cBASISTexTypeVideoFrames;
@@ -565,6 +521,7 @@ namespace basisu
{
if ((is_video) && (endpoint_pred == basist::CR_ENDPOINT_PRED_INDEX))
continue;
+
int pred_block_x = block_x + g_endpoint_preds[endpoint_pred].m_dx;
if ((pred_block_x < 0) || (pred_block_x >= (int)num_blocks_x))
continue;
@@ -586,11 +543,23 @@ namespace basisu
unpack_etc1(trial_etc_block, trial_colors);
uint64_t trial_err = 0;
- for (uint32_t p = 0; p < 16; p++)
+ if (r.get_params().m_perceptual)
{
- trial_err += color_distance(r.get_params().m_perceptual, src_pixels.get_ptr()[p], trial_colors[p], false);
- if (trial_err > thresh_err)
- break;
+ for (uint32_t p = 0; p < 16; p++)
+ {
+ trial_err += color_distance(true, src_pixels.get_ptr()[p], trial_colors[p], false);
+ if (trial_err > thresh_err)
+ break;
+ }
+ }
+ else
+ {
+ for (uint32_t p = 0; p < 16; p++)
+ {
+ trial_err += color_distance(false, src_pixels.get_ptr()[p], trial_colors[p], false);
+ if (trial_err > thresh_err)
+ break;
+ }
}
if (trial_err <= thresh_err)
@@ -643,6 +612,8 @@ namespace basisu
sort_selector_codebook();
check_for_valid_cr_blocks();
+
+ debug_printf("Elapsed time: %3.3f secs\n", tm.get_elapsed_secs());
}
void basisu_backend::compute_slice_crcs()
@@ -670,7 +641,9 @@ namespace basisu
etc_block& output_block = *(etc_block*)gi.get_block_ptr(block_x, block_y);
output_block.set_diff_bit(true);
- output_block.set_flip_bit(true);
+ // Setting the flip bit to false to be compatible with the Khronos KDFS.
+ //output_block.set_flip_bit(true);
+ output_block.set_flip_bit(false);
const uint32_t endpoint_index = m.m_endpoint_index;
@@ -679,7 +652,7 @@ namespace basisu
const uint32_t selector_idx = m.m_selector_index;
- const basist::etc1_selector_palette_entry& selectors = m_selector_palette[selector_idx];
+ const etc1_selector_palette_entry& selectors = m_selector_palette[selector_idx];
for (uint32_t sy = 0; sy < 4; sy++)
for (uint32_t sx = 0; sx < 4; sx++)
output_block.set_selector(sx, sy, selectors(sx, sy));
@@ -707,6 +680,9 @@ namespace basisu
} // slice_index
}
+ //uint32_t g_color_delta_hist[255 * 3 + 1];
+ //uint32_t g_color_delta_bad_hist[255 * 3 + 1];
+
// TODO: Split this into multiple methods.
bool basisu_backend::encode_image()
{
@@ -737,6 +713,12 @@ namespace basisu
uint_vec block_endpoint_indices, block_selector_indices;
+ interval_timer tm;
+ tm.start();
+
+ const int COLOR_DELTA_THRESH = 8;
+ const int SEL_DIFF_THRESHOLD = 11;
+
for (uint32_t slice_index = 0; slice_index < m_slices.size(); slice_index++)
{
//const int prev_frame_slice_index = is_video ? find_video_frame(slice_index, -1) : -1;
@@ -782,7 +764,7 @@ namespace basisu
} // block_x
} // block_y
-
+
for (uint32_t block_y = 0; block_y < num_blocks_y; block_y++)
{
for (uint32_t block_x = 0; block_x < num_blocks_x; block_x++)
@@ -857,68 +839,170 @@ namespace basisu
etc_block etc_blk(r.get_output_block(block_index));
const uint64_t cur_err = etc_blk.evaluate_etc1_error(src_pixels.get_ptr(), r.get_params().m_perceptual);
+ const uint32_t cur_inten5 = etc_blk.get_inten_table(0);
+ const etc1_endpoint_palette_entry& cur_endpoints = m_endpoint_palette[m.m_endpoint_index];
+
if (cur_err)
{
const float endpoint_remap_thresh = maximum(1.0f, m_params.m_endpoint_rdo_quality_thresh);
const uint64_t thresh_err = (uint64_t)(cur_err * endpoint_remap_thresh);
- uint64_t best_trial_err = UINT64_MAX;
- int best_trial_idx = 0;
-
- etc_block trial_etc_blk(etc_blk);
+ //const int MAX_ENDPOINT_SEARCH_DIST = (m_params.m_compression_level >= 2) ? 64 : 32;
+ const int MAX_ENDPOINT_SEARCH_DIST = (m_params.m_compression_level >= 2) ? 64 : 16;
- const int MAX_ENDPOINT_SEARCH_DIST = 32;
- const int search_dist = minimum<int>(iabs(endpoint_delta) - 1, MAX_ENDPOINT_SEARCH_DIST);
- for (int d = -search_dist; d < search_dist; d++)
+ if (!g_cpu_supports_sse41)
{
- int trial_idx = prev_endpoint_index + d;
- if (trial_idx < 0)
- trial_idx += (int)r.get_total_endpoint_clusters();
- else if (trial_idx >= (int)r.get_total_endpoint_clusters())
- trial_idx -= (int)r.get_total_endpoint_clusters();
+ const uint64_t initial_best_trial_err = UINT64_MAX;
+ uint64_t best_trial_err = initial_best_trial_err;
+ int best_trial_idx = 0;
+
+ etc_block trial_etc_blk(etc_blk);
+
+ const int search_dist = minimum<int>(iabs(endpoint_delta) - 1, MAX_ENDPOINT_SEARCH_DIST);
+ for (int d = -search_dist; d < search_dist; d++)
+ {
+ int trial_idx = prev_endpoint_index + d;
+ if (trial_idx < 0)
+ trial_idx += (int)r.get_total_endpoint_clusters();
+ else if (trial_idx >= (int)r.get_total_endpoint_clusters())
+ trial_idx -= (int)r.get_total_endpoint_clusters();
+
+ if (trial_idx == new_endpoint_index)
+ continue;
+
+ // Skip it if this new endpoint palette entry is actually never used.
+ if (!m_new_endpoint_was_used[trial_idx])
+ continue;
+
+ const etc1_endpoint_palette_entry& p = m_endpoint_palette[m_endpoint_remap_table_new_to_old[trial_idx]];
+
+ if (m_params.m_compression_level <= 1)
+ {
+ if (p.m_inten5 > cur_inten5)
+ continue;
+
+ int delta_r = iabs(cur_endpoints.m_color5.r - p.m_color5.r);
+ int delta_g = iabs(cur_endpoints.m_color5.g - p.m_color5.g);
+ int delta_b = iabs(cur_endpoints.m_color5.b - p.m_color5.b);
+ int color_delta = delta_r + delta_g + delta_b;
+
+ if (color_delta > COLOR_DELTA_THRESH)
+ continue;
+ }
- if (trial_idx == new_endpoint_index)
- continue;
+ trial_etc_blk.set_block_color5_etc1s(p.m_color5);
+ trial_etc_blk.set_inten_tables_etc1s(p.m_inten5);
- // Skip it if this new endpoint palette entry is actually never used.
- if (!m_new_endpoint_was_used[trial_idx])
- continue;
+ uint64_t trial_err = trial_etc_blk.evaluate_etc1_error(src_pixels.get_ptr(), r.get_params().m_perceptual);
+
+ if ((trial_err < best_trial_err) && (trial_err <= thresh_err))
+ {
+ best_trial_err = trial_err;
+ best_trial_idx = trial_idx;
+ }
+ }
+
+ if (best_trial_err != initial_best_trial_err)
+ {
+ m.m_endpoint_index = m_endpoint_remap_table_new_to_old[best_trial_idx];
- const etc1_endpoint_palette_entry& p = m_endpoint_palette[m_endpoint_remap_table_new_to_old[trial_idx]];
- trial_etc_blk.set_block_color5_etc1s(p.m_color5);
- trial_etc_blk.set_inten_tables_etc1s(p.m_inten5);
+ new_endpoint_index = best_trial_idx;
- uint64_t trial_err = trial_etc_blk.evaluate_etc1_error(src_pixels.get_ptr(), r.get_params().m_perceptual);
+ endpoint_delta = new_endpoint_index - prev_endpoint_index;
- if (trial_err <= thresh_err)
+ total_endpoint_indices_remapped++;
+ }
+ }
+ else
+ {
+#if BASISU_SUPPORT_SSE
+ uint8_t block_selectors[16];
+ for (uint32_t i = 0; i < 16; i++)
+ block_selectors[i] = (uint8_t)etc_blk.get_selector(i & 3, i >> 2);
+
+ const int64_t initial_best_trial_err = INT64_MAX;
+ int64_t best_trial_err = initial_best_trial_err;
+ int best_trial_idx = 0;
+
+ const int search_dist = minimum<int>(iabs(endpoint_delta) - 1, MAX_ENDPOINT_SEARCH_DIST);
+ for (int d = -search_dist; d < search_dist; d++)
{
- if (trial_err < best_trial_err)
+ int trial_idx = prev_endpoint_index + d;
+ if (trial_idx < 0)
+ trial_idx += (int)r.get_total_endpoint_clusters();
+ else if (trial_idx >= (int)r.get_total_endpoint_clusters())
+ trial_idx -= (int)r.get_total_endpoint_clusters();
+
+ if (trial_idx == new_endpoint_index)
+ continue;
+
+ // Skip it if this new endpoint palette entry is actually never used.
+ if (!m_new_endpoint_was_used[trial_idx])
+ continue;
+
+ const etc1_endpoint_palette_entry& p = m_endpoint_palette[m_endpoint_remap_table_new_to_old[trial_idx]];
+
+ if (m_params.m_compression_level <= 1)
+ {
+ if (p.m_inten5 > cur_inten5)
+ continue;
+
+ int delta_r = iabs(cur_endpoints.m_color5.r - p.m_color5.r);
+ int delta_g = iabs(cur_endpoints.m_color5.g - p.m_color5.g);
+ int delta_b = iabs(cur_endpoints.m_color5.b - p.m_color5.b);
+ int color_delta = delta_r + delta_g + delta_b;
+
+ if (color_delta > COLOR_DELTA_THRESH)
+ continue;
+ }
+
+ color_rgba block_colors[4];
+ etc_block::get_block_colors_etc1s(block_colors, p.m_color5, p.m_inten5);
+
+ int64_t trial_err;
+ if (r.get_params().m_perceptual)
+ {
+ perceptual_distance_rgb_4_N_sse41(&trial_err, block_selectors, block_colors, src_pixels.get_ptr(), 16, best_trial_err);
+ }
+ else
+ {
+ linear_distance_rgb_4_N_sse41(&trial_err, block_selectors, block_colors, src_pixels.get_ptr(), 16, best_trial_err);
+ }
+
+ //if (trial_err > thresh_err)
+ // g_color_delta_bad_hist[color_delta]++;
+
+ if ((trial_err < best_trial_err) && (trial_err <= (int64_t)thresh_err))
{
best_trial_err = trial_err;
best_trial_idx = trial_idx;
}
}
- }
- if (best_trial_err != UINT64_MAX)
- {
- m.m_endpoint_index = m_endpoint_remap_table_new_to_old[best_trial_idx];
+ if (best_trial_err != initial_best_trial_err)
+ {
+ m.m_endpoint_index = m_endpoint_remap_table_new_to_old[best_trial_idx];
- new_endpoint_index = best_trial_idx;
+ new_endpoint_index = best_trial_idx;
- endpoint_delta = new_endpoint_index - prev_endpoint_index;
+ endpoint_delta = new_endpoint_index - prev_endpoint_index;
- total_endpoint_indices_remapped++;
- }
- }
- }
+ total_endpoint_indices_remapped++;
+ }
+#endif // BASISU_SUPPORT_SSE
+ } // if (!g_cpu_supports_sse41)
+
+ } // if (cur_err)
+
+ } // if ((m_params.m_endpoint_rdo_quality_thresh > 1.0f) && (iabs(endpoint_delta) > 1) && (!block_endpoints_are_referenced(block_x, block_y)))
if (endpoint_delta < 0)
endpoint_delta += (int)r.get_total_endpoint_clusters();
delta_endpoint_histogram.inc(endpoint_delta);
- }
+
+ } // if (m.m_endpoint_predictor == basist::NO_ENDPOINT_PRED_INDEX)
block_endpoint_indices.push_back(m_endpoint_remap_table_new_to_old[new_endpoint_index]);
@@ -927,10 +1011,13 @@ namespace basisu
if ((!is_video) || (m.m_endpoint_predictor != basist::CR_ENDPOINT_PRED_INDEX))
{
int new_selector_index = m_selector_remap_table_old_to_new[m.m_selector_index];
+
+ const float selector_remap_thresh = maximum(1.0f, m_params.m_selector_rdo_quality_thresh); //2.5f;
int selector_history_buf_index = -1;
- if (m.m_is_cr_target)
+ // At low comp levels this hurts compression a tiny amount, but is significantly faster so it's a good tradeoff.
+ if ((m.m_is_cr_target) || (m_params.m_compression_level <= 1))
{
for (uint32_t j = 0; j < selector_history_buf.size(); j++)
{
@@ -944,89 +1031,99 @@ namespace basisu
}
}
}
- else
+
+ // If the block is a CR target we can't override its selectors.
+ if ((!m.m_is_cr_target) && (selector_history_buf_index == -1))
{
const pixel_block& src_pixels = r.get_source_pixel_block(block_index);
- const etc_block& etc_blk = r.get_output_block(block_index);
+ etc_block etc_blk = r.get_output_block(block_index);
+
+ // This is new code - the initial release just used the endpoints from the frontend, which isn't correct/accurate.
+ const etc1_endpoint_palette_entry& q = m_endpoint_palette[m_endpoint_remap_table_new_to_old[new_endpoint_index]];
+ etc_blk.set_block_color5_etc1s(q.m_color5);
+ etc_blk.set_inten_tables_etc1s(q.m_inten5);
+
+ color_rgba block_colors[4];
+ etc_blk.get_block_colors(block_colors, 0);
- color_rgba etc_blk_unpacked[16];
- unpack_etc1(etc_blk, etc_blk_unpacked);
+ const uint8_t* pCur_selectors = &m_selector_palette[m.m_selector_index][0];
uint64_t cur_err = 0;
if (r.get_params().m_perceptual)
{
for (uint32_t p = 0; p < 16; p++)
- cur_err += color_distance(true, src_pixels.get_ptr()[p], etc_blk_unpacked[p], false);
+ cur_err += color_distance(true, src_pixels.get_ptr()[p], block_colors[pCur_selectors[p]], false);
}
else
{
for (uint32_t p = 0; p < 16; p++)
- cur_err += color_distance(false, src_pixels.get_ptr()[p], etc_blk_unpacked[p], false);
+ cur_err += color_distance(false, src_pixels.get_ptr()[p], block_colors[pCur_selectors[p]], false);
}
-
+
+ const uint64_t limit_err = (uint64_t)ceilf(cur_err * selector_remap_thresh);
+
+ // Even if cur_err==limit_err, we still want to scan the history buffer because there may be equivalent entries that are cheaper to code.
+
uint64_t best_trial_err = UINT64_MAX;
int best_trial_idx = 0;
uint32_t best_trial_history_buf_idx = 0;
- const float selector_remap_thresh = maximum(1.0f, m_params.m_selector_rdo_quality_thresh); //2.5f;
- const bool use_strict_search = (m_params.m_compression_level == 0) && (selector_remap_thresh == 1.0f);
-
- const uint64_t limit_err = (uint64_t)ceilf(cur_err * selector_remap_thresh);
-
for (uint32_t j = 0; j < selector_history_buf.size(); j++)
{
const int trial_idx = selector_history_buf[j];
- if (use_strict_search)
+ const uint8_t* pSelectors = &m_selector_palette[m_selector_remap_table_new_to_old[trial_idx]][0];
+
+ if (m_params.m_compression_level <= 1)
{
- if (trial_idx == new_selector_index)
+ // Predict if evaluating the full color error would cause an early out, by summing the abs err of the selector indices.
+ int sel_diff = 0;
+ for (uint32_t p = 0; p < 16; p += 4)
{
- best_trial_err = 0;
- best_trial_idx = trial_idx;
- best_trial_history_buf_idx = j;
- break;
+ sel_diff += iabs(pCur_selectors[p + 0] - pSelectors[p + 0]);
+ sel_diff += iabs(pCur_selectors[p + 1] - pSelectors[p + 1]);
+ sel_diff += iabs(pCur_selectors[p + 2] - pSelectors[p + 2]);
+ sel_diff += iabs(pCur_selectors[p + 3] - pSelectors[p + 3]);
+ if (sel_diff >= SEL_DIFF_THRESHOLD)
+ break;
}
+ if (sel_diff >= SEL_DIFF_THRESHOLD)
+ continue;
}
- else
- {
- uint64_t trial_err = 0;
- const uint64_t thresh_err = minimum(limit_err, best_trial_err);
-
- color_rgba block_colors[4];
- etc_blk.get_block_colors(block_colors, 0);
-
- const uint8_t* pSelectors = &m_selector_palette[m_selector_remap_table_new_to_old[trial_idx]](0, 0);
- if (r.get_params().m_perceptual)
+ const uint64_t thresh_err = minimum(limit_err, best_trial_err);
+ uint64_t trial_err = 0;
+
+ // This tends to early out quickly, so SSE has a hard time competing.
+ if (r.get_params().m_perceptual)
+ {
+ for (uint32_t p = 0; p < 16; p++)
{
- for (uint32_t p = 0; p < 16; p++)
- {
- uint32_t sel = pSelectors[p];
- trial_err += color_distance(true, src_pixels.get_ptr()[p], block_colors[sel], false);
- if (trial_err > thresh_err)
- break;
- }
+ uint32_t sel = pSelectors[p];
+ trial_err += color_distance(true, src_pixels.get_ptr()[p], block_colors[sel], false);
+ if (trial_err > thresh_err)
+ break;
}
- else
+ }
+ else
+ {
+ for (uint32_t p = 0; p < 16; p++)
{
- for (uint32_t p = 0; p < 16; p++)
- {
- uint32_t sel = pSelectors[p];
- trial_err += color_distance(false, src_pixels.get_ptr()[p], block_colors[sel], false);
- if (trial_err > thresh_err)
- break;
- }
+ uint32_t sel = pSelectors[p];
+ trial_err += color_distance(false, src_pixels.get_ptr()[p], block_colors[sel], false);
+ if (trial_err > thresh_err)
+ break;
}
+ }
- if ((trial_err < best_trial_err) && (trial_err <= thresh_err))
- {
- assert(trial_err <= limit_err);
-
- best_trial_err = trial_err;
- best_trial_idx = trial_idx;
- best_trial_history_buf_idx = j;
- }
+ if ((trial_err < best_trial_err) && (trial_err <= thresh_err))
+ {
+ assert(trial_err <= limit_err);
+
+ best_trial_err = trial_err;
+ best_trial_idx = trial_idx;
+ best_trial_history_buf_idx = j;
}
}
@@ -1043,6 +1140,7 @@ namespace basisu
selector_history_buf_histogram.inc(best_trial_history_buf_idx);
}
+
} // if (m_params.m_selector_rdo_quality_thresh > 0.0f)
m.m_selector_index = m_selector_remap_table_new_to_old[new_selector_index];
@@ -1164,6 +1262,14 @@ namespace basisu
} // slice_index
+ //for (int i = 0; i <= 255 * 3; i++)
+ //{
+ // printf("%u, %u, %f\n", g_color_delta_bad_hist[i], g_color_delta_hist[i], g_color_delta_hist[i] ? g_color_delta_bad_hist[i] / (float)g_color_delta_hist[i] : 0);
+ //}
+
+ double total_prep_time = tm.get_elapsed_secs();
+ debug_printf("basisu_backend::encode_image: Total prep time: %3.2f\n", total_prep_time);
+
debug_printf("Endpoint pred RDO total endpoint indices remapped: %u %3.2f%%\n",
total_endpoint_indices_remapped, total_endpoint_indices_remapped * 100.0f / get_total_blocks());
@@ -1554,215 +1660,82 @@ namespace basisu
bool basisu_backend::encode_selector_palette()
{
const basisu_frontend& r = *m_pFront_end;
+
+ histogram delta_selector_pal_histogram(256);
- if ((m_params.m_use_global_sel_codebook) && (!m_params.m_use_hybrid_sel_codebooks))
+ for (uint32_t q = 0; q < r.get_total_selector_clusters(); q++)
{
- histogram global_mod_indices(1 << m_params.m_global_sel_codebook_mod_bits);
-
- for (uint32_t q = 0; q < r.get_total_selector_clusters(); q++)
- global_mod_indices.inc(m_global_selector_palette_desc[q].m_mod_index);
-
- huffman_encoding_table global_pal_model, global_mod_model;
-
- if (!global_mod_model.init(global_mod_indices, 16))
- {
- error_printf("global_mod_model.init() failed!");
- return false;
- }
-
- bitwise_coder coder;
- coder.init(1024 * 1024);
-
- coder.put_bits(1, 1); // use global codebook
-
- coder.put_bits(m_params.m_global_sel_codebook_pal_bits, 4); // pal bits
- coder.put_bits(m_params.m_global_sel_codebook_mod_bits, 4); // mod bits
-
- uint32_t mod_model_bits = 0;
- if (m_params.m_global_sel_codebook_mod_bits)
- mod_model_bits = coder.emit_huffman_table(global_mod_model);
-
- uint32_t total_pal_bits = 0;
- uint32_t total_mod_bits = 0;
- for (uint32_t q = 0; q < r.get_total_selector_clusters(); q++)
- {
- const uint32_t i = m_selector_remap_table_new_to_old[q];
-
- if (m_params.m_global_sel_codebook_pal_bits)
- {
- coder.put_bits(m_global_selector_palette_desc[i].m_pal_index, m_params.m_global_sel_codebook_pal_bits);
- total_pal_bits += m_params.m_global_sel_codebook_pal_bits;
- }
-
- if (m_params.m_global_sel_codebook_mod_bits)
- total_mod_bits += coder.put_code(m_global_selector_palette_desc[i].m_mod_index, global_mod_model);
- }
-
- coder.flush();
+ if (!q)
+ continue;
- m_output.m_selector_palette = coder.get_bytes();
+ const etc1_selector_palette_entry& cur = m_selector_palette[m_selector_remap_table_new_to_old[q]];
+ const etc1_selector_palette_entry predictor(m_selector_palette[m_selector_remap_table_new_to_old[q - 1]]);
- debug_printf("Modifier model bits: %u Avg per entry: %3.3f\n", mod_model_bits, mod_model_bits / float(r.get_total_selector_clusters()));
- debug_printf("Palette bits: %u Avg per entry: %3.3f, Modifier bits: %u Avg per entry: %3.3f\n", total_pal_bits, total_pal_bits / float(r.get_total_selector_clusters()), total_mod_bits, total_mod_bits / float(r.get_total_selector_clusters()));
+ for (uint32_t j = 0; j < 4; j++)
+ delta_selector_pal_histogram.inc(cur.get_byte(j) ^ predictor.get_byte(j));
}
- else if (m_params.m_use_hybrid_sel_codebooks)
- {
- huff2D used_global_cb_bitflag_huff2D(1, 8);
-
- histogram global_mod_indices(1 << m_params.m_global_sel_codebook_mod_bits);
-
- for (uint32_t s = 0; s < r.get_total_selector_clusters(); s++)
- {
- const uint32_t q = m_selector_remap_table_new_to_old[s];
-
- const bool used_global_cb_flag = r.get_selector_cluster_uses_global_cb_vec()[q];
-
- used_global_cb_bitflag_huff2D.emit(used_global_cb_flag);
- global_mod_indices.inc(m_global_selector_palette_desc[q].m_mod_index);
- }
-
- huffman_encoding_table global_mod_indices_model;
- if (!global_mod_indices_model.init(global_mod_indices, 16))
- {
- error_printf("global_mod_indices_model.init() failed!");
- return false;
- }
-
- bitwise_coder coder;
- coder.init(1024 * 1024);
+ if (!delta_selector_pal_histogram.get_total())
+ delta_selector_pal_histogram.inc(0);
- coder.put_bits(0, 1); // use global codebook
- coder.put_bits(1, 1); // uses hybrid codebooks
+ huffman_encoding_table delta_selector_pal_model;
+ if (!delta_selector_pal_model.init(delta_selector_pal_histogram, 16))
+ {
+ error_printf("delta_selector_pal_model.init() failed!");
+ return false;
+ }
- coder.put_bits(m_params.m_global_sel_codebook_pal_bits, 4); // pal bits
- coder.put_bits(m_params.m_global_sel_codebook_mod_bits, 4); // mod bits
+ bitwise_coder coder;
+ coder.init(1024 * 1024);
- used_global_cb_bitflag_huff2D.start_encoding(16);
- coder.emit_huffman_table(used_global_cb_bitflag_huff2D.get_encoding_table());
+ coder.put_bits(0, 1); // use global codebook
+ coder.put_bits(0, 1); // uses hybrid codebooks
- if (m_params.m_global_sel_codebook_mod_bits)
- coder.emit_huffman_table(global_mod_indices_model);
+ coder.put_bits(0, 1); // raw bytes
- uint32_t total_global_cb_entries = 0;
- uint32_t total_pal_bits = 0;
- uint32_t total_mod_bits = 0;
- uint32_t total_selectors = 0;
- uint32_t total_selector_bits = 0;
- uint32_t total_flag_bits = 0;
+ coder.emit_huffman_table(delta_selector_pal_model);
- for (uint32_t s = 0; s < r.get_total_selector_clusters(); s++)
+ for (uint32_t q = 0; q < r.get_total_selector_clusters(); q++)
+ {
+ if (!q)
{
- const uint32_t q = m_selector_remap_table_new_to_old[s];
-
- total_flag_bits += used_global_cb_bitflag_huff2D.emit_next_sym(coder);
-
- const bool used_global_cb_flag = r.get_selector_cluster_uses_global_cb_vec()[q];
-
- if (used_global_cb_flag)
- {
- total_global_cb_entries++;
-
- total_pal_bits += coder.put_bits(r.get_selector_cluster_global_selector_entry_ids()[q].m_palette_index, m_params.m_global_sel_codebook_pal_bits);
- total_mod_bits += coder.put_code(r.get_selector_cluster_global_selector_entry_ids()[q].m_modifier.get_index(), global_mod_indices_model);
- }
- else
- {
- total_selectors++;
- total_selector_bits += 32;
-
- for (uint32_t j = 0; j < 4; j++)
- coder.put_bits(m_selector_palette[q].get_byte(j), 8);
- }
+ for (uint32_t j = 0; j < 4; j++)
+ coder.put_bits(m_selector_palette[m_selector_remap_table_new_to_old[q]].get_byte(j), 8);
+ continue;
}
- coder.flush();
+ const etc1_selector_palette_entry& cur = m_selector_palette[m_selector_remap_table_new_to_old[q]];
+ const etc1_selector_palette_entry predictor(m_selector_palette[m_selector_remap_table_new_to_old[q - 1]]);
- m_output.m_selector_palette = coder.get_bytes();
-
- debug_printf("Total global CB entries: %u %3.2f%%\n", total_global_cb_entries, total_global_cb_entries * 100.0f / r.get_total_selector_clusters());
- debug_printf("Total selector entries: %u %3.2f%%\n", total_selectors, total_selectors * 100.0f / r.get_total_selector_clusters());
- debug_printf("Total pal bits: %u, mod bits: %u, selector bits: %u, flag bits: %u\n", total_pal_bits, total_mod_bits, total_selector_bits, total_flag_bits);
+ for (uint32_t j = 0; j < 4; j++)
+ coder.put_code(cur.get_byte(j) ^ predictor.get_byte(j), delta_selector_pal_model);
}
- else
- {
- histogram delta_selector_pal_histogram(256);
-
- for (uint32_t q = 0; q < r.get_total_selector_clusters(); q++)
- {
- if (!q)
- continue;
- const basist::etc1_selector_palette_entry& cur = m_selector_palette[m_selector_remap_table_new_to_old[q]];
- const basist::etc1_selector_palette_entry predictor(m_selector_palette[m_selector_remap_table_new_to_old[q - 1]]);
-
- for (uint32_t j = 0; j < 4; j++)
- delta_selector_pal_histogram.inc(cur.get_byte(j) ^ predictor.get_byte(j));
- }
-
- if (!delta_selector_pal_histogram.get_total())
- delta_selector_pal_histogram.inc(0);
+ coder.flush();
- huffman_encoding_table delta_selector_pal_model;
- if (!delta_selector_pal_model.init(delta_selector_pal_histogram, 16))
- {
- error_printf("delta_selector_pal_model.init() failed!");
- return false;
- }
+ m_output.m_selector_palette = coder.get_bytes();
- bitwise_coder coder;
+ if (m_output.m_selector_palette.size() >= r.get_total_selector_clusters() * 4)
+ {
coder.init(1024 * 1024);
coder.put_bits(0, 1); // use global codebook
coder.put_bits(0, 1); // uses hybrid codebooks
- coder.put_bits(0, 1); // raw bytes
-
- coder.emit_huffman_table(delta_selector_pal_model);
+ coder.put_bits(1, 1); // raw bytes
for (uint32_t q = 0; q < r.get_total_selector_clusters(); q++)
{
- if (!q)
- {
- for (uint32_t j = 0; j < 4; j++)
- coder.put_bits(m_selector_palette[m_selector_remap_table_new_to_old[q]].get_byte(j), 8);
- continue;
- }
-
- const basist::etc1_selector_palette_entry& cur = m_selector_palette[m_selector_remap_table_new_to_old[q]];
- const basist::etc1_selector_palette_entry predictor(m_selector_palette[m_selector_remap_table_new_to_old[q - 1]]);
+ const uint32_t i = m_selector_remap_table_new_to_old[q];
for (uint32_t j = 0; j < 4; j++)
- coder.put_code(cur.get_byte(j) ^ predictor.get_byte(j), delta_selector_pal_model);
+ coder.put_bits(m_selector_palette[i].get_byte(j), 8);
}
coder.flush();
m_output.m_selector_palette = coder.get_bytes();
-
- if (m_output.m_selector_palette.size() >= r.get_total_selector_clusters() * 4)
- {
- coder.init(1024 * 1024);
-
- coder.put_bits(0, 1); // use global codebook
- coder.put_bits(0, 1); // uses hybrid codebooks
-
- coder.put_bits(1, 1); // raw bytes
-
- for (uint32_t q = 0; q < r.get_total_selector_clusters(); q++)
- {
- const uint32_t i = m_selector_remap_table_new_to_old[q];
-
- for (uint32_t j = 0; j < 4; j++)
- coder.put_bits(m_selector_palette[i].get_byte(j), 8);
- }
-
- coder.flush();
-
- m_output.m_selector_palette = coder.get_bytes();
- }
-
- } // if (m_params.m_use_global_sel_codebook)
+ }
debug_printf("Selector codebook bits: %u bytes: %u, Bits per entry: %3.1f, Avg bits/texel: %3.3f\n",
(int)m_output.m_selector_palette.size() * 8, (int)m_output.m_selector_palette.size(),
diff --git a/thirdparty/basis_universal/encoder/basisu_backend.h b/thirdparty/basis_universal/encoder/basisu_backend.h
index 393dccd22f..07778aeb9b 100644
--- a/thirdparty/basis_universal/encoder/basisu_backend.h
+++ b/thirdparty/basis_universal/encoder/basisu_backend.h
@@ -17,11 +17,86 @@
#include "../transcoder/basisu.h"
#include "basisu_enc.h"
#include "../transcoder/basisu_transcoder_internal.h"
-#include "../transcoder/basisu_global_selector_palette.h"
#include "basisu_frontend.h"
namespace basisu
{
+ struct etc1_selector_palette_entry
+ {
+ etc1_selector_palette_entry()
+ {
+ clear();
+ }
+
+ void clear()
+ {
+ basisu::clear_obj(*this);
+ }
+
+ uint8_t operator[] (uint32_t i) const { assert(i < 16); return m_selectors[i]; }
+ uint8_t& operator[] (uint32_t i) { assert(i < 16); return m_selectors[i]; }
+
+ void set_uint32(uint32_t v)
+ {
+ for (uint32_t byte_index = 0; byte_index < 4; byte_index++)
+ {
+ uint32_t b = (v >> (byte_index * 8)) & 0xFF;
+
+ m_selectors[byte_index * 4 + 0] = b & 3;
+ m_selectors[byte_index * 4 + 1] = (b >> 2) & 3;
+ m_selectors[byte_index * 4 + 2] = (b >> 4) & 3;
+ m_selectors[byte_index * 4 + 3] = (b >> 6) & 3;
+ }
+ }
+
+ uint32_t get_uint32() const
+ {
+ return get_byte(0) | (get_byte(1) << 8) | (get_byte(2) << 16) | (get_byte(3) << 24);
+ }
+
+ uint32_t get_byte(uint32_t byte_index) const
+ {
+ assert(byte_index < 4);
+
+ return m_selectors[byte_index * 4 + 0] |
+ (m_selectors[byte_index * 4 + 1] << 2) |
+ (m_selectors[byte_index * 4 + 2] << 4) |
+ (m_selectors[byte_index * 4 + 3] << 6);
+ }
+
+ uint8_t operator()(uint32_t x, uint32_t y) const { assert((x < 4) && (y < 4)); return m_selectors[x + y * 4]; }
+ uint8_t& operator()(uint32_t x, uint32_t y) { assert((x < 4) && (y < 4)); return m_selectors[x + y * 4]; }
+
+ bool operator< (const etc1_selector_palette_entry& other) const
+ {
+ for (uint32_t i = 0; i < 16; i++)
+ {
+ if (m_selectors[i] < other.m_selectors[i])
+ return true;
+ else if (m_selectors[i] != other.m_selectors[i])
+ return false;
+ }
+
+ return false;
+ }
+
+ bool operator== (const etc1_selector_palette_entry& other) const
+ {
+ for (uint32_t i = 0; i < 16; i++)
+ {
+ if (m_selectors[i] != other.m_selectors[i])
+ return false;
+ }
+
+ return true;
+ }
+
+ private:
+ uint8_t m_selectors[16];
+ };
+
+ typedef basisu::vector<etc1_selector_palette_entry> etc1_selector_palette_entry_vec;
+
struct encoder_block
{
encoder_block()
@@ -78,14 +153,11 @@ namespace basisu
float m_endpoint_rdo_quality_thresh;
float m_selector_rdo_quality_thresh;
uint32_t m_compression_level;
-
- bool m_use_global_sel_codebook;
- uint32_t m_global_sel_codebook_pal_bits;
- uint32_t m_global_sel_codebook_mod_bits;
- bool m_use_hybrid_sel_codebooks;
-
+
bool m_used_global_codebooks;
+ bool m_validate;
+
basisu_backend_params()
{
clear();
@@ -99,12 +171,8 @@ namespace basisu
m_endpoint_rdo_quality_thresh = 0.0f;
m_selector_rdo_quality_thresh = 0.0f;
m_compression_level = 0;
-
- m_use_global_sel_codebook = false;
- m_global_sel_codebook_pal_bits = ETC1_GLOBAL_SELECTOR_CODEBOOK_MAX_PAL_BITS;
- m_global_sel_codebook_mod_bits = basist::etc1_global_palette_entry_modifier::cTotalBits;
- m_use_hybrid_sel_codebooks = false;
m_used_global_codebooks = false;
+ m_validate = true;
}
};
@@ -205,7 +273,7 @@ namespace basisu
void clear();
- void init(basisu_frontend *pFront_end, basisu_backend_params &params, const basisu_backend_slice_desc_vec &slice_desc, const basist::etc1_global_selector_codebook *pGlobal_sel_codebook);
+ void init(basisu_frontend *pFront_end, basisu_backend_params &params, const basisu_backend_slice_desc_vec &slice_desc);
uint32_t encode();
@@ -217,10 +285,9 @@ namespace basisu
basisu_backend_params m_params;
basisu_backend_slice_desc_vec m_slices;
basisu_backend_output m_output;
- const basist::etc1_global_selector_codebook *m_pGlobal_sel_codebook;
-
+
etc1_endpoint_palette_entry_vec m_endpoint_palette;
- basist::etc1_selector_palette_entry_vec m_selector_palette;
+ etc1_selector_palette_entry_vec m_selector_palette;
struct etc1_global_selector_cb_entry_desc
{
diff --git a/thirdparty/basis_universal/encoder/basisu_comp.cpp b/thirdparty/basis_universal/encoder/basisu_comp.cpp
index 10f96cec4a..166a1c4fe0 100644
--- a/thirdparty/basis_universal/encoder/basisu_comp.cpp
+++ b/thirdparty/basis_universal/encoder/basisu_comp.cpp
@@ -21,6 +21,8 @@
#define MINIZ_NO_ZLIB_COMPATIBLE_NAMES
#include "basisu_miniz.h"
+#include "basisu_opencl.h"
+
#if !BASISD_SUPPORT_KTX2
#error BASISD_SUPPORT_KTX2 must be enabled (set to 1).
#endif
@@ -45,21 +47,45 @@ using namespace buminiz;
namespace basisu
{
basis_compressor::basis_compressor() :
+ m_pOpenCL_context(nullptr),
m_basis_file_size(0),
m_basis_bits_per_texel(0.0f),
m_total_blocks(0),
- m_auto_global_sel_pal(false),
- m_any_source_image_has_alpha(false)
+ m_any_source_image_has_alpha(false),
+ m_opencl_failed(false)
{
debug_printf("basis_compressor::basis_compressor\n");
+
+ assert(g_library_initialized);
}
+ basis_compressor::~basis_compressor()
+ {
+ if (m_pOpenCL_context)
+ {
+ opencl_destroy_context(m_pOpenCL_context);
+ m_pOpenCL_context = nullptr;
+ }
+ }
+
bool basis_compressor::init(const basis_compressor_params &params)
{
debug_printf("basis_compressor::init\n");
+
+ if (!g_library_initialized)
+ {
+ error_printf("basis_compressor::init: basisu_encoder_init() MUST be called before using any encoder functionality!\n");
+ return false;
+ }
+ if (!params.m_pJob_pool)
+ {
+ error_printf("basis_compressor::init: A non-null job_pool pointer must be specified\n");
+ return false;
+ }
+
m_params = params;
-
+
if (m_params.m_debug)
{
debug_printf("basis_compressor::init:\n");
@@ -68,9 +94,7 @@ namespace basisu
#define PRINT_INT_VALUE(v) debug_printf("%s: %i %u\n", BASISU_STRINGIZE2(v), static_cast<int>(m_params.v), m_params.v.was_changed());
#define PRINT_UINT_VALUE(v) debug_printf("%s: %u %u\n", BASISU_STRINGIZE2(v), static_cast<uint32_t>(m_params.v), m_params.v.was_changed());
#define PRINT_FLOAT_VALUE(v) debug_printf("%s: %f %u\n", BASISU_STRINGIZE2(v), static_cast<float>(m_params.v), m_params.v.was_changed());
-
- debug_printf("Has global selector codebook: %i\n", m_params.m_pSel_codebook != nullptr);
-
+
debug_printf("Source images: %u, source filenames: %u, source alpha filenames: %i, Source mipmap images: %u\n",
m_params.m_source_images.size(), m_params.m_source_filenames.size(), m_params.m_source_alpha_filenames.size(), m_params.m_source_mipmap_images.size());
@@ -83,14 +107,12 @@ namespace basisu
}
PRINT_BOOL_VALUE(m_uastc);
+ PRINT_BOOL_VALUE(m_use_opencl);
PRINT_BOOL_VALUE(m_y_flip);
PRINT_BOOL_VALUE(m_debug);
- PRINT_BOOL_VALUE(m_validate);
+ PRINT_BOOL_VALUE(m_validate_etc1s);
PRINT_BOOL_VALUE(m_debug_images);
- PRINT_BOOL_VALUE(m_global_sel_pal);
- PRINT_BOOL_VALUE(m_auto_global_sel_pal);
PRINT_INT_VALUE(m_compression_level);
- PRINT_BOOL_VALUE(m_no_hybrid_sel_cb);
PRINT_BOOL_VALUE(m_perceptual);
PRINT_BOOL_VALUE(m_no_endpoint_rdo);
PRINT_BOOL_VALUE(m_no_selector_rdo);
@@ -107,12 +129,7 @@ namespace basisu
PRINT_BOOL_VALUE(m_renormalize);
PRINT_BOOL_VALUE(m_multithreading);
PRINT_BOOL_VALUE(m_disable_hierarchical_endpoint_codebooks);
-
- PRINT_FLOAT_VALUE(m_hybrid_sel_cb_quality_thresh);
-
- PRINT_INT_VALUE(m_global_pal_bits);
- PRINT_INT_VALUE(m_global_mod_bits);
-
+
PRINT_FLOAT_VALUE(m_endpoint_rdo_thresh);
PRINT_FLOAT_VALUE(m_selector_rdo_thresh);
@@ -148,6 +165,7 @@ namespace basisu
PRINT_INT_VALUE(m_resample_width);
PRINT_INT_VALUE(m_resample_height);
PRINT_FLOAT_VALUE(m_resample_factor);
+
debug_printf("Has global codebooks: %u\n", m_params.m_pGlobal_codebooks ? 1 : 0);
if (m_params.m_pGlobal_codebooks)
{
@@ -165,6 +183,8 @@ namespace basisu
debug_printf("Key: \"%s\"\n", m_params.m_ktx2_key_values[i].m_key.data());
debug_printf("Value size: %u\n", m_params.m_ktx2_key_values[i].m_value.size());
}
+
+ PRINT_BOOL_VALUE(m_validate_output_data);
#undef PRINT_BOOL_VALUE
#undef PRINT_INT_VALUE
@@ -178,6 +198,20 @@ namespace basisu
return false;
}
+ if ((m_params.m_compute_stats) && (!m_params.m_validate_output_data))
+ {
+ m_params.m_validate_output_data = true;
+
+ debug_printf("Note: m_compute_stats is true, so forcing m_validate_output_data to true as well\n");
+ }
+
+ if ((m_params.m_use_opencl) && opencl_is_available() && !m_pOpenCL_context && !m_opencl_failed)
+ {
+ m_pOpenCL_context = opencl_create_context();
+ if (!m_pOpenCL_context)
+ m_opencl_failed = true;
+ }
+
return true;
}
@@ -424,7 +458,7 @@ namespace basisu
#endif
if (m_params.m_debug)
- debug_printf("Total mipmap generation time: %f secs\n", tm.get_elapsed_secs());
+ debug_printf("Total mipmap generation time: %3.3f secs\n", tm.get_elapsed_secs());
return true;
}
@@ -579,11 +613,11 @@ namespace basisu
if ((file_image.get_width() > BASISU_MAX_SUPPORTED_TEXTURE_DIMENSION) || (file_image.get_height() > BASISU_MAX_SUPPORTED_TEXTURE_DIMENSION))
{
- error_printf("basis_compressor::read_source_images: Source image is too large!\n");
+ error_printf("basis_compressor::read_source_images: Source image \"%s\" is too large!\n", pSource_filename);
return false;
}
- source_images.push_back(file_image);
+ source_images.enlarge(1)->swap(file_image);
source_filenames.push_back(pSource_filename);
}
@@ -624,17 +658,19 @@ namespace basisu
for (uint32_t source_file_index = 0; source_file_index < total_source_files; source_file_index++)
{
- image &file_image = source_images[source_file_index];
const std::string &source_filename = source_filenames[source_file_index];
// Now, for each source image, create the slices corresponding to that image.
basisu::vector<image> slices;
slices.reserve(32);
-
+
// The first (largest) mipmap level.
- slices.push_back(file_image);
-
+ image& file_image = source_images[source_file_index];
+
+ // Reserve a slot for mip0.
+ slices.resize(1);
+
if (m_params.m_source_mipmap_images.size())
{
// User-provided mipmaps for each layer or image in the texture array.
@@ -666,6 +702,10 @@ namespace basisu
return false;
}
+ // Swap in the largest mipmap level here to avoid copying it, because generate_mips() will change the array.
+ // NOTE: file_image is now blank.
+ slices[0].swap(file_image);
+
uint_vec mip_indices(slices.size());
for (uint32_t i = 0; i < slices.size(); i++)
mip_indices[i] = i;
@@ -734,18 +774,16 @@ namespace basisu
save_png(string_format("basis_debug_source_image_%u_slice_%u.png", source_file_index, slice_index).c_str(), slice_image);
}
+ const uint32_t dest_image_index = m_slice_images.size();
+
enlarge_vector(m_stats, 1);
enlarge_vector(m_slice_images, 1);
enlarge_vector(m_slice_descs, 1);
-
- const uint32_t dest_image_index = (uint32_t)m_stats.size() - 1;
-
+
m_stats[dest_image_index].m_filename = source_filename.c_str();
m_stats[dest_image_index].m_width = orig_width;
m_stats[dest_image_index].m_height = orig_height;
-
- m_slice_images[dest_image_index] = slice_image;
-
+
debug_printf("****** Slice %u: mip %u, alpha_slice: %u, filename: \"%s\", original: %ux%u actual: %ux%u\n", m_slice_descs.size() - 1, mip_indices[slice_index], is_alpha_slice, source_filename.c_str(), orig_width, orig_height, slice_image.get_width(), slice_image.get_height());
basisu_backend_slice_desc &slice_desc = m_slice_descs[dest_image_index];
@@ -777,6 +815,10 @@ namespace basisu
m_total_blocks += slice_desc.m_num_blocks_x * slice_desc.m_num_blocks_y;
total_macroblocks += slice_desc.m_num_macroblocks_x * slice_desc.m_num_macroblocks_y;
+
+ // Finally, swap in the slice's image to avoid copying it.
+ // NOTE: slice_image is now blank.
+ m_slice_images[dest_image_index].swap(slice_image);
} // slice_index
@@ -1055,7 +1097,7 @@ namespace basisu
endpoint_clusters = clamp<uint32_t>((uint32_t)(.5f + lerp<float>(ENDPOINT_CODEBOOK_MID_QUALITY_CODEBOOK_SIZE, static_cast<float>(max_endpoints), color_endpoint_quality)), 32, basisu_frontend::cMaxEndpointClusters);
}
- float bits_per_selector_cluster = m_params.m_global_sel_pal ? 21.0f : 14.0f;
+ float bits_per_selector_cluster = 14.0f;
const float max_desired_selector_cluster_bits_per_texel = 1.0f; // .15f
int max_selectors = static_cast<int>((max_desired_selector_cluster_bits_per_texel * total_texels) / bits_per_selector_cluster);
@@ -1110,21 +1152,7 @@ namespace basisu
m_params.m_selector_rdo_thresh *= lerp<float>(1.0f, .75f, l);
}
}
-
- m_auto_global_sel_pal = false;
- if (!m_params.m_global_sel_pal && m_params.m_auto_global_sel_pal)
- {
- const float bits_per_selector_cluster = 31.0f;
- double selector_codebook_bpp_est = (bits_per_selector_cluster * selector_clusters) / total_texels;
- debug_printf("selector_codebook_bpp_est: %f\n", selector_codebook_bpp_est);
- const float force_global_sel_pal_bpp_threshold = .15f;
- if ((total_texels <= 128.0f*128.0f) && (selector_codebook_bpp_est > force_global_sel_pal_bpp_threshold))
- {
- m_auto_global_sel_pal = true;
- debug_printf("Auto global selector palette enabled\n");
- }
- }
-
+
basisu_frontend::params p;
p.m_num_source_blocks = m_total_blocks;
p.m_pSource_blocks = &m_source_blocks[0];
@@ -1137,27 +1165,24 @@ namespace basisu
p.m_tex_type = m_params.m_tex_type;
p.m_multithreaded = m_params.m_multithreading;
p.m_disable_hierarchical_endpoint_codebooks = m_params.m_disable_hierarchical_endpoint_codebooks;
- p.m_validate = m_params.m_validate;
+ p.m_validate = m_params.m_validate_etc1s;
p.m_pJob_pool = m_params.m_pJob_pool;
p.m_pGlobal_codebooks = m_params.m_pGlobal_codebooks;
-
- if ((m_params.m_global_sel_pal) || (m_auto_global_sel_pal))
- {
- p.m_pGlobal_sel_codebook = m_params.m_pSel_codebook;
- p.m_num_global_sel_codebook_pal_bits = m_params.m_global_pal_bits;
- p.m_num_global_sel_codebook_mod_bits = m_params.m_global_mod_bits;
- p.m_use_hybrid_selector_codebooks = !m_params.m_no_hybrid_sel_cb;
- p.m_hybrid_codebook_quality_thresh = m_params.m_hybrid_sel_cb_quality_thresh;
- }
+
+ // Don't keep trying to use OpenCL if it ever fails.
+ p.m_pOpenCL_context = !m_opencl_failed ? m_pOpenCL_context : nullptr;
if (!m_frontend.init(p))
{
error_printf("basisu_frontend::init() failed!\n");
return false;
}
-
+
m_frontend.compress();
+ if (m_frontend.get_opencl_failed())
+ m_opencl_failed = true;
+
if (m_params.m_debug_images)
{
for (uint32_t i = 0; i < m_slice_descs.size(); i++)
@@ -1184,6 +1209,9 @@ namespace basisu
bool basis_compressor::extract_frontend_texture_data()
{
+ if (!m_params.m_compute_stats)
+ return true;
+
debug_printf("basis_compressor::extract_frontend_texture_data\n");
m_frontend_output_textures.resize(m_slice_descs.size());
@@ -1242,13 +1270,10 @@ namespace basisu
if (!m_params.m_no_selector_rdo)
backend_params.m_selector_rdo_quality_thresh = m_params.m_selector_rdo_thresh;
- backend_params.m_use_global_sel_codebook = (m_frontend.get_params().m_pGlobal_sel_codebook != NULL);
- backend_params.m_global_sel_codebook_pal_bits = m_frontend.get_params().m_num_global_sel_codebook_pal_bits;
- backend_params.m_global_sel_codebook_mod_bits = m_frontend.get_params().m_num_global_sel_codebook_mod_bits;
- backend_params.m_use_hybrid_sel_codebooks = m_frontend.get_params().m_use_hybrid_selector_codebooks;
backend_params.m_used_global_codebooks = m_frontend.get_params().m_pGlobal_codebooks != nullptr;
+ backend_params.m_validate = m_params.m_validate_output_data;
- m_backend.init(&m_frontend, backend_params, m_slice_descs, m_params.m_pSel_codebook);
+ m_backend.init(&m_frontend, backend_params, m_slice_descs);
uint32_t total_packed_bytes = m_backend.encode();
if (!total_packed_bytes)
@@ -1278,140 +1303,143 @@ namespace basisu
m_output_basis_file = comp_data;
- interval_timer tm;
- tm.start();
-
- basist::basisu_transcoder_init();
-
- debug_printf("basist::basisu_transcoder_init: Took %f ms\n", tm.get_elapsed_ms());
-
- // Verify the compressed data by transcoding it to ASTC (or ETC1)/BC7 and validating the CRC's.
- basist::basisu_transcoder decoder(m_params.m_pSel_codebook);
- if (!decoder.validate_file_checksums(&comp_data[0], (uint32_t)comp_data.size(), true))
+ uint32_t total_orig_pixels = 0, total_texels = 0, total_orig_texels = 0;
+ for (uint32_t i = 0; i < m_slice_descs.size(); i++)
{
- error_printf("decoder.validate_file_checksums() failed!\n");
- return false;
+ const basisu_backend_slice_desc& slice_desc = m_slice_descs[i];
+
+ total_orig_pixels += slice_desc.m_orig_width * slice_desc.m_orig_height;
+ total_texels += slice_desc.m_width * slice_desc.m_height;
}
- m_decoded_output_textures.resize(m_slice_descs.size());
- m_decoded_output_textures_unpacked.resize(m_slice_descs.size());
+ m_basis_file_size = (uint32_t)comp_data.size();
+ m_basis_bits_per_texel = total_orig_texels ? (comp_data.size() * 8.0f) / total_orig_texels : 0;
- m_decoded_output_textures_bc7.resize(m_slice_descs.size());
- m_decoded_output_textures_unpacked_bc7.resize(m_slice_descs.size());
-
- tm.start();
- if (m_params.m_pGlobal_codebooks)
- {
- decoder.set_global_codebooks(m_params.m_pGlobal_codebooks);
- }
+ debug_printf("Total .basis output file size: %u, %3.3f bits/texel\n", comp_data.size(), comp_data.size() * 8.0f / total_orig_pixels);
- if (!decoder.start_transcoding(&comp_data[0], (uint32_t)comp_data.size()))
+ if (m_params.m_validate_output_data)
{
- error_printf("decoder.start_transcoding() failed!\n");
- return false;
- }
+ interval_timer tm;
+ tm.start();
- double start_transcoding_time = tm.get_elapsed_secs();
+ basist::basisu_transcoder_init();
- debug_printf("basisu_compressor::start_transcoding() took %3.3fms\n", start_transcoding_time * 1000.0f);
+ debug_printf("basist::basisu_transcoder_init: Took %f ms\n", tm.get_elapsed_ms());
- uint32_t total_orig_pixels = 0;
- uint32_t total_texels = 0;
+ // Verify the compressed data by transcoding it to ASTC (or ETC1)/BC7 and validating the CRC's.
+ basist::basisu_transcoder decoder;
+ if (!decoder.validate_file_checksums(&comp_data[0], (uint32_t)comp_data.size(), true))
+ {
+ error_printf("decoder.validate_file_checksums() failed!\n");
+ return false;
+ }
- double total_time_etc1s_or_astc = 0;
+ m_decoded_output_textures.resize(m_slice_descs.size());
+ m_decoded_output_textures_unpacked.resize(m_slice_descs.size());
- for (uint32_t i = 0; i < m_slice_descs.size(); i++)
- {
- gpu_image decoded_texture;
- decoded_texture.init(m_params.m_uastc ? texture_format::cASTC4x4 : texture_format::cETC1, m_slice_descs[i].m_width, m_slice_descs[i].m_height);
-
- tm.start();
+ m_decoded_output_textures_bc7.resize(m_slice_descs.size());
+ m_decoded_output_textures_unpacked_bc7.resize(m_slice_descs.size());
- basist::block_format format = m_params.m_uastc ? basist::block_format::cASTC_4x4 : basist::block_format::cETC1;
- uint32_t bytes_per_block = m_params.m_uastc ? 16 : 8;
-
- if (!decoder.transcode_slice(&comp_data[0], (uint32_t)comp_data.size(), i,
- reinterpret_cast<etc_block *>(decoded_texture.get_ptr()), m_slice_descs[i].m_num_blocks_x * m_slice_descs[i].m_num_blocks_y, format, bytes_per_block))
+ tm.start();
+ if (m_params.m_pGlobal_codebooks)
{
- error_printf("Transcoding failed on slice %u!\n", i);
- return false;
+ decoder.set_global_codebooks(m_params.m_pGlobal_codebooks);
}
- total_time_etc1s_or_astc += tm.get_elapsed_secs();
-
- if (encoded_output.m_tex_format == basist::basis_tex_format::cETC1S)
+ if (!decoder.start_transcoding(&comp_data[0], (uint32_t)comp_data.size()))
{
- uint32_t image_crc16 = basist::crc16(decoded_texture.get_ptr(), decoded_texture.get_size_in_bytes(), 0);
- if (image_crc16 != encoded_output.m_slice_image_crcs[i])
- {
- error_printf("Decoded image data CRC check failed on slice %u!\n", i);
- return false;
- }
- debug_printf("Decoded image data CRC check succeeded on slice %i\n", i);
+ error_printf("decoder.start_transcoding() failed!\n");
+ return false;
}
- m_decoded_output_textures[i] = decoded_texture;
+ double start_transcoding_time = tm.get_elapsed_secs();
- total_orig_pixels += m_slice_descs[i].m_orig_width * m_slice_descs[i].m_orig_height;
- total_texels += m_slice_descs[i].m_width * m_slice_descs[i].m_height;
- }
-
- double total_time_bc7 = 0;
+ debug_printf("basisu_compressor::start_transcoding() took %3.3fms\n", start_transcoding_time * 1000.0f);
+
+ double total_time_etc1s_or_astc = 0;
- if (basist::basis_is_format_supported(basist::transcoder_texture_format::cTFBC7_RGBA, basist::basis_tex_format::cUASTC4x4) &&
- basist::basis_is_format_supported(basist::transcoder_texture_format::cTFBC7_RGBA, basist::basis_tex_format::cETC1S))
- {
for (uint32_t i = 0; i < m_slice_descs.size(); i++)
{
gpu_image decoded_texture;
- decoded_texture.init(texture_format::cBC7, m_slice_descs[i].m_width, m_slice_descs[i].m_height);
+ decoded_texture.init(m_params.m_uastc ? texture_format::cUASTC4x4 : texture_format::cETC1, m_slice_descs[i].m_width, m_slice_descs[i].m_height);
tm.start();
+ basist::block_format format = m_params.m_uastc ? basist::block_format::cUASTC_4x4 : basist::block_format::cETC1;
+ uint32_t bytes_per_block = m_params.m_uastc ? 16 : 8;
+
if (!decoder.transcode_slice(&comp_data[0], (uint32_t)comp_data.size(), i,
- reinterpret_cast<etc_block*>(decoded_texture.get_ptr()), m_slice_descs[i].m_num_blocks_x * m_slice_descs[i].m_num_blocks_y, basist::block_format::cBC7, 16))
+ reinterpret_cast<etc_block*>(decoded_texture.get_ptr()), m_slice_descs[i].m_num_blocks_x * m_slice_descs[i].m_num_blocks_y, format, bytes_per_block))
{
- error_printf("Transcoding failed to BC7 on slice %u!\n", i);
+ error_printf("Transcoding failed on slice %u!\n", i);
return false;
}
- total_time_bc7 += tm.get_elapsed_secs();
+ total_time_etc1s_or_astc += tm.get_elapsed_secs();
+
+ if (encoded_output.m_tex_format == basist::basis_tex_format::cETC1S)
+ {
+ uint32_t image_crc16 = basist::crc16(decoded_texture.get_ptr(), decoded_texture.get_size_in_bytes(), 0);
+ if (image_crc16 != encoded_output.m_slice_image_crcs[i])
+ {
+ error_printf("Decoded image data CRC check failed on slice %u!\n", i);
+ return false;
+ }
+ debug_printf("Decoded image data CRC check succeeded on slice %i\n", i);
+ }
- m_decoded_output_textures_bc7[i] = decoded_texture;
+ m_decoded_output_textures[i] = decoded_texture;
}
- }
- for (uint32_t i = 0; i < m_slice_descs.size(); i++)
- {
- m_decoded_output_textures[i].unpack(m_decoded_output_textures_unpacked[i]);
+ double total_time_bc7 = 0;
- if (m_decoded_output_textures_bc7[i].get_pixel_width())
- m_decoded_output_textures_bc7[i].unpack(m_decoded_output_textures_unpacked_bc7[i]);
- }
+ if (basist::basis_is_format_supported(basist::transcoder_texture_format::cTFBC7_RGBA, basist::basis_tex_format::cUASTC4x4) &&
+ basist::basis_is_format_supported(basist::transcoder_texture_format::cTFBC7_RGBA, basist::basis_tex_format::cETC1S))
+ {
+ for (uint32_t i = 0; i < m_slice_descs.size(); i++)
+ {
+ gpu_image decoded_texture;
+ decoded_texture.init(texture_format::cBC7, m_slice_descs[i].m_width, m_slice_descs[i].m_height);
- debug_printf("Transcoded to %s in %3.3fms, %f texels/sec\n", m_params.m_uastc ? "ASTC" : "ETC1", total_time_etc1s_or_astc * 1000.0f, total_orig_pixels / total_time_etc1s_or_astc);
+ tm.start();
- if (total_time_bc7 != 0)
- debug_printf("Transcoded to BC7 in %3.3fms, %f texels/sec\n", total_time_bc7 * 1000.0f, total_orig_pixels / total_time_bc7);
+ if (!decoder.transcode_slice(&comp_data[0], (uint32_t)comp_data.size(), i,
+ reinterpret_cast<etc_block*>(decoded_texture.get_ptr()), m_slice_descs[i].m_num_blocks_x * m_slice_descs[i].m_num_blocks_y, basist::block_format::cBC7, 16))
+ {
+ error_printf("Transcoding failed to BC7 on slice %u!\n", i);
+ return false;
+ }
- debug_printf("Total .basis output file size: %u, %3.3f bits/texel\n", comp_data.size(), comp_data.size() * 8.0f / total_orig_pixels);
-
- uint32_t total_orig_texels = 0;
- for (uint32_t slice_index = 0; slice_index < m_slice_descs.size(); slice_index++)
- {
- const basisu_backend_slice_desc &slice_desc = m_slice_descs[slice_index];
+ total_time_bc7 += tm.get_elapsed_secs();
- total_orig_texels += slice_desc.m_orig_width * slice_desc.m_orig_height;
+ m_decoded_output_textures_bc7[i] = decoded_texture;
+ }
+ }
- const uint32_t total_blocks = slice_desc.m_num_blocks_x * slice_desc.m_num_blocks_y;
- BASISU_NOTE_UNUSED(total_blocks);
+ for (uint32_t i = 0; i < m_slice_descs.size(); i++)
+ {
+ m_decoded_output_textures[i].unpack(m_decoded_output_textures_unpacked[i]);
- assert(m_decoded_output_textures[slice_index].get_total_blocks() == total_blocks);
- }
+ if (m_decoded_output_textures_bc7[i].get_pixel_width())
+ m_decoded_output_textures_bc7[i].unpack(m_decoded_output_textures_unpacked_bc7[i]);
+ }
- m_basis_file_size = (uint32_t)comp_data.size();
- m_basis_bits_per_texel = (comp_data.size() * 8.0f) / total_orig_texels;
+ debug_printf("Transcoded to %s in %3.3fms, %f texels/sec\n", m_params.m_uastc ? "ASTC" : "ETC1", total_time_etc1s_or_astc * 1000.0f, total_orig_pixels / total_time_etc1s_or_astc);
+
+ if (total_time_bc7 != 0)
+ debug_printf("Transcoded to BC7 in %3.3fms, %f texels/sec\n", total_time_bc7 * 1000.0f, total_orig_pixels / total_time_bc7);
+ for (uint32_t slice_index = 0; slice_index < m_slice_descs.size(); slice_index++)
+ {
+ const basisu_backend_slice_desc& slice_desc = m_slice_descs[slice_index];
+
+ const uint32_t total_blocks = slice_desc.m_num_blocks_x * slice_desc.m_num_blocks_y;
+ BASISU_NOTE_UNUSED(total_blocks);
+
+ assert(m_decoded_output_textures[slice_index].get_total_blocks() == total_blocks);
+ }
+ } // if (m_params.m_validate_output_data)
+
return true;
}
@@ -1465,175 +1493,171 @@ namespace basisu
m_stats.resize(m_slice_descs.size());
- uint32_t total_orig_texels = 0;
-
- for (uint32_t slice_index = 0; slice_index < m_slice_descs.size(); slice_index++)
+ if (m_params.m_validate_output_data)
{
- const basisu_backend_slice_desc &slice_desc = m_slice_descs[slice_index];
-
- total_orig_texels += slice_desc.m_orig_width * slice_desc.m_orig_height;
-
- if (m_params.m_compute_stats)
+ for (uint32_t slice_index = 0; slice_index < m_slice_descs.size(); slice_index++)
{
- printf("Slice: %u\n", slice_index);
+ const basisu_backend_slice_desc& slice_desc = m_slice_descs[slice_index];
- image_stats &s = m_stats[slice_index];
+ if (m_params.m_compute_stats)
+ {
+ printf("Slice: %u\n", slice_index);
- // TODO: We used to output SSIM (during heavy encoder development), but this slowed down compression too much. We'll be adding it back.
+ image_stats& s = m_stats[slice_index];
- image_metrics em;
-
- // ---- .basis stats
- em.calc(m_slice_images[slice_index], m_decoded_output_textures_unpacked[slice_index], 0, 3);
- em.print(".basis RGB Avg: ");
- s.m_basis_rgb_avg_psnr = em.m_psnr;
+ // TODO: We used to output SSIM (during heavy encoder development), but this slowed down compression too much. We'll be adding it back.
- em.calc(m_slice_images[slice_index], m_decoded_output_textures_unpacked[slice_index], 0, 4);
- em.print(".basis RGBA Avg: ");
- s.m_basis_rgba_avg_psnr = em.m_psnr;
+ image_metrics em;
- em.calc(m_slice_images[slice_index], m_decoded_output_textures_unpacked[slice_index], 0, 1);
- em.print(".basis R Avg: ");
-
- em.calc(m_slice_images[slice_index], m_decoded_output_textures_unpacked[slice_index], 1, 1);
- em.print(".basis G Avg: ");
-
- em.calc(m_slice_images[slice_index], m_decoded_output_textures_unpacked[slice_index], 2, 1);
- em.print(".basis B Avg: ");
+ // ---- .basis stats
+ em.calc(m_slice_images[slice_index], m_decoded_output_textures_unpacked[slice_index], 0, 3);
+ em.print(".basis RGB Avg: ");
+ s.m_basis_rgb_avg_psnr = em.m_psnr;
- if (m_params.m_uastc)
- {
- em.calc(m_slice_images[slice_index], m_decoded_output_textures_unpacked[slice_index], 3, 1);
- em.print(".basis A Avg: ");
+ em.calc(m_slice_images[slice_index], m_decoded_output_textures_unpacked[slice_index], 0, 4);
+ em.print(".basis RGBA Avg: ");
+ s.m_basis_rgba_avg_psnr = em.m_psnr;
- s.m_basis_a_avg_psnr = em.m_psnr;
- }
+ em.calc(m_slice_images[slice_index], m_decoded_output_textures_unpacked[slice_index], 0, 1);
+ em.print(".basis R Avg: ");
- em.calc(m_slice_images[slice_index], m_decoded_output_textures_unpacked[slice_index], 0, 0);
- em.print(".basis 709 Luma: ");
- s.m_basis_luma_709_psnr = static_cast<float>(em.m_psnr);
- s.m_basis_luma_709_ssim = static_cast<float>(em.m_ssim);
+ em.calc(m_slice_images[slice_index], m_decoded_output_textures_unpacked[slice_index], 1, 1);
+ em.print(".basis G Avg: ");
- em.calc(m_slice_images[slice_index], m_decoded_output_textures_unpacked[slice_index], 0, 0, true, true);
- em.print(".basis 601 Luma: ");
- s.m_basis_luma_601_psnr = static_cast<float>(em.m_psnr);
-
- if (m_slice_descs.size() == 1)
- {
- const uint32_t output_size = comp_size ? (uint32_t)comp_size : (uint32_t)comp_data.size();
- debug_printf(".basis RGB PSNR per bit/texel*10000: %3.3f\n", 10000.0f * s.m_basis_rgb_avg_psnr / ((output_size * 8.0f) / (slice_desc.m_orig_width * slice_desc.m_orig_height)));
- debug_printf(".basis Luma 709 PSNR per bit/texel*10000: %3.3f\n", 10000.0f * s.m_basis_luma_709_psnr / ((output_size * 8.0f) / (slice_desc.m_orig_width * slice_desc.m_orig_height)));
- }
+ em.calc(m_slice_images[slice_index], m_decoded_output_textures_unpacked[slice_index], 2, 1);
+ em.print(".basis B Avg: ");
- if (m_decoded_output_textures_unpacked_bc7[slice_index].get_width())
- {
- // ---- BC7 stats
- em.calc(m_slice_images[slice_index], m_decoded_output_textures_unpacked_bc7[slice_index], 0, 3);
- em.print("BC7 RGB Avg: ");
- s.m_bc7_rgb_avg_psnr = em.m_psnr;
+ if (m_params.m_uastc)
+ {
+ em.calc(m_slice_images[slice_index], m_decoded_output_textures_unpacked[slice_index], 3, 1);
+ em.print(".basis A Avg: ");
- em.calc(m_slice_images[slice_index], m_decoded_output_textures_unpacked_bc7[slice_index], 0, 4);
- em.print("BC7 RGBA Avg: ");
- s.m_bc7_rgba_avg_psnr = em.m_psnr;
+ s.m_basis_a_avg_psnr = em.m_psnr;
+ }
- em.calc(m_slice_images[slice_index], m_decoded_output_textures_unpacked_bc7[slice_index], 0, 1);
- em.print("BC7 R Avg: ");
+ em.calc(m_slice_images[slice_index], m_decoded_output_textures_unpacked[slice_index], 0, 0);
+ em.print(".basis 709 Luma: ");
+ s.m_basis_luma_709_psnr = static_cast<float>(em.m_psnr);
+ s.m_basis_luma_709_ssim = static_cast<float>(em.m_ssim);
- em.calc(m_slice_images[slice_index], m_decoded_output_textures_unpacked_bc7[slice_index], 1, 1);
- em.print("BC7 G Avg: ");
+ em.calc(m_slice_images[slice_index], m_decoded_output_textures_unpacked[slice_index], 0, 0, true, true);
+ em.print(".basis 601 Luma: ");
+ s.m_basis_luma_601_psnr = static_cast<float>(em.m_psnr);
- em.calc(m_slice_images[slice_index], m_decoded_output_textures_unpacked_bc7[slice_index], 2, 1);
- em.print("BC7 B Avg: ");
+ if (m_slice_descs.size() == 1)
+ {
+ const uint32_t output_size = comp_size ? (uint32_t)comp_size : (uint32_t)comp_data.size();
+ debug_printf(".basis RGB PSNR per bit/texel*10000: %3.3f\n", 10000.0f * s.m_basis_rgb_avg_psnr / ((output_size * 8.0f) / (slice_desc.m_orig_width * slice_desc.m_orig_height)));
+ debug_printf(".basis Luma 709 PSNR per bit/texel*10000: %3.3f\n", 10000.0f * s.m_basis_luma_709_psnr / ((output_size * 8.0f) / (slice_desc.m_orig_width * slice_desc.m_orig_height)));
+ }
- if (m_params.m_uastc)
+ if (m_decoded_output_textures_unpacked_bc7[slice_index].get_width())
{
- em.calc(m_slice_images[slice_index], m_decoded_output_textures_unpacked_bc7[slice_index], 3, 1);
- em.print("BC7 A Avg: ");
+ // ---- BC7 stats
+ em.calc(m_slice_images[slice_index], m_decoded_output_textures_unpacked_bc7[slice_index], 0, 3);
+ em.print("BC7 RGB Avg: ");
+ s.m_bc7_rgb_avg_psnr = em.m_psnr;
- s.m_bc7_a_avg_psnr = em.m_psnr;
- }
+ em.calc(m_slice_images[slice_index], m_decoded_output_textures_unpacked_bc7[slice_index], 0, 4);
+ em.print("BC7 RGBA Avg: ");
+ s.m_bc7_rgba_avg_psnr = em.m_psnr;
- em.calc(m_slice_images[slice_index], m_decoded_output_textures_unpacked_bc7[slice_index], 0, 0);
- em.print("BC7 709 Luma: ");
- s.m_bc7_luma_709_psnr = static_cast<float>(em.m_psnr);
- s.m_bc7_luma_709_ssim = static_cast<float>(em.m_ssim);
+ em.calc(m_slice_images[slice_index], m_decoded_output_textures_unpacked_bc7[slice_index], 0, 1);
+ em.print("BC7 R Avg: ");
- em.calc(m_slice_images[slice_index], m_decoded_output_textures_unpacked_bc7[slice_index], 0, 0, true, true);
- em.print("BC7 601 Luma: ");
- s.m_bc7_luma_601_psnr = static_cast<float>(em.m_psnr);
- }
+ em.calc(m_slice_images[slice_index], m_decoded_output_textures_unpacked_bc7[slice_index], 1, 1);
+ em.print("BC7 G Avg: ");
- if (!m_params.m_uastc)
- {
- // ---- Nearly best possible ETC1S stats
- em.calc(m_slice_images[slice_index], m_best_etc1s_images_unpacked[slice_index], 0, 0);
- em.print("Unquantized ETC1S 709 Luma: ");
+ em.calc(m_slice_images[slice_index], m_decoded_output_textures_unpacked_bc7[slice_index], 2, 1);
+ em.print("BC7 B Avg: ");
- s.m_best_etc1s_luma_709_psnr = static_cast<float>(em.m_psnr);
- s.m_best_etc1s_luma_709_ssim = static_cast<float>(em.m_ssim);
+ if (m_params.m_uastc)
+ {
+ em.calc(m_slice_images[slice_index], m_decoded_output_textures_unpacked_bc7[slice_index], 3, 1);
+ em.print("BC7 A Avg: ");
- em.calc(m_slice_images[slice_index], m_best_etc1s_images_unpacked[slice_index], 0, 0, true, true);
- em.print("Unquantized ETC1S 601 Luma: ");
+ s.m_bc7_a_avg_psnr = em.m_psnr;
+ }
- s.m_best_etc1s_luma_601_psnr = static_cast<float>(em.m_psnr);
+ em.calc(m_slice_images[slice_index], m_decoded_output_textures_unpacked_bc7[slice_index], 0, 0);
+ em.print("BC7 709 Luma: ");
+ s.m_bc7_luma_709_psnr = static_cast<float>(em.m_psnr);
+ s.m_bc7_luma_709_ssim = static_cast<float>(em.m_ssim);
- em.calc(m_slice_images[slice_index], m_best_etc1s_images_unpacked[slice_index], 0, 3);
- em.print("Unquantized ETC1S RGB Avg: ");
+ em.calc(m_slice_images[slice_index], m_decoded_output_textures_unpacked_bc7[slice_index], 0, 0, true, true);
+ em.print("BC7 601 Luma: ");
+ s.m_bc7_luma_601_psnr = static_cast<float>(em.m_psnr);
+ }
- s.m_best_etc1s_rgb_avg_psnr = static_cast<float>(em.m_psnr);
+ if (!m_params.m_uastc)
+ {
+ // ---- Nearly best possible ETC1S stats
+ em.calc(m_slice_images[slice_index], m_best_etc1s_images_unpacked[slice_index], 0, 3);
+ em.print("Unquantized ETC1S RGB Avg: ");
+ s.m_best_etc1s_rgb_avg_psnr = static_cast<float>(em.m_psnr);
+
+ em.calc(m_slice_images[slice_index], m_best_etc1s_images_unpacked[slice_index], 0, 0);
+ em.print("Unquantized ETC1S 709 Luma: ");
+ s.m_best_etc1s_luma_709_psnr = static_cast<float>(em.m_psnr);
+ s.m_best_etc1s_luma_709_ssim = static_cast<float>(em.m_ssim);
+
+ em.calc(m_slice_images[slice_index], m_best_etc1s_images_unpacked[slice_index], 0, 0, true, true);
+ em.print("Unquantized ETC1S 601 Luma: ");
+ s.m_best_etc1s_luma_601_psnr = static_cast<float>(em.m_psnr);
+ }
}
- }
-
- std::string out_basename;
- if (m_params.m_out_filename.size())
- string_get_filename(m_params.m_out_filename.c_str(), out_basename);
- else if (m_params.m_source_filenames.size())
- string_get_filename(m_params.m_source_filenames[slice_desc.m_source_file_index].c_str(), out_basename);
- string_remove_extension(out_basename);
- out_basename = "basis_debug_" + out_basename + string_format("_slice_%u", slice_index);
+ std::string out_basename;
+ if (m_params.m_out_filename.size())
+ string_get_filename(m_params.m_out_filename.c_str(), out_basename);
+ else if (m_params.m_source_filenames.size())
+ string_get_filename(m_params.m_source_filenames[slice_desc.m_source_file_index].c_str(), out_basename);
- if ((!m_params.m_uastc) && (m_frontend.get_params().m_debug_images))
- {
- // Write "best" ETC1S debug images
- if (!m_params.m_uastc)
+ string_remove_extension(out_basename);
+ out_basename = "basis_debug_" + out_basename + string_format("_slice_%u", slice_index);
+
+ if ((!m_params.m_uastc) && (m_frontend.get_params().m_debug_images))
{
- gpu_image best_etc1s_gpu_image(m_best_etc1s_images[slice_index]);
- best_etc1s_gpu_image.override_dimensions(slice_desc.m_orig_width, slice_desc.m_orig_height);
- write_compressed_texture_file((out_basename + "_best_etc1s.ktx").c_str(), best_etc1s_gpu_image);
+ // Write "best" ETC1S debug images
+ if (!m_params.m_uastc)
+ {
+ gpu_image best_etc1s_gpu_image(m_best_etc1s_images[slice_index]);
+ best_etc1s_gpu_image.override_dimensions(slice_desc.m_orig_width, slice_desc.m_orig_height);
+ write_compressed_texture_file((out_basename + "_best_etc1s.ktx").c_str(), best_etc1s_gpu_image);
- image best_etc1s_unpacked;
- best_etc1s_gpu_image.unpack(best_etc1s_unpacked);
- save_png(out_basename + "_best_etc1s.png", best_etc1s_unpacked);
+ image best_etc1s_unpacked;
+ best_etc1s_gpu_image.unpack(best_etc1s_unpacked);
+ save_png(out_basename + "_best_etc1s.png", best_etc1s_unpacked);
+ }
}
- }
- if (m_params.m_debug_images)
- {
- // Write decoded ETC1S/ASTC debug images
+ if (m_params.m_debug_images)
{
- gpu_image decoded_etc1s_or_astc(m_decoded_output_textures[slice_index]);
- decoded_etc1s_or_astc.override_dimensions(slice_desc.m_orig_width, slice_desc.m_orig_height);
- write_compressed_texture_file((out_basename + "_transcoded_etc1s_or_astc.ktx").c_str(), decoded_etc1s_or_astc);
+ // Write decoded ETC1S/ASTC debug images
+ {
+ gpu_image decoded_etc1s_or_astc(m_decoded_output_textures[slice_index]);
+ decoded_etc1s_or_astc.override_dimensions(slice_desc.m_orig_width, slice_desc.m_orig_height);
+ write_compressed_texture_file((out_basename + "_transcoded_etc1s_or_astc.ktx").c_str(), decoded_etc1s_or_astc);
- image temp(m_decoded_output_textures_unpacked[slice_index]);
- temp.crop(slice_desc.m_orig_width, slice_desc.m_orig_height);
- save_png(out_basename + "_transcoded_etc1s_or_astc.png", temp);
- }
+ image temp(m_decoded_output_textures_unpacked[slice_index]);
+ temp.crop(slice_desc.m_orig_width, slice_desc.m_orig_height);
+ save_png(out_basename + "_transcoded_etc1s_or_astc.png", temp);
+ }
- // Write decoded BC7 debug images
- if (m_decoded_output_textures_bc7[slice_index].get_pixel_width())
- {
- gpu_image decoded_bc7(m_decoded_output_textures_bc7[slice_index]);
- decoded_bc7.override_dimensions(slice_desc.m_orig_width, slice_desc.m_orig_height);
- write_compressed_texture_file((out_basename + "_transcoded_bc7.ktx").c_str(), decoded_bc7);
+ // Write decoded BC7 debug images
+ if (m_decoded_output_textures_bc7[slice_index].get_pixel_width())
+ {
+ gpu_image decoded_bc7(m_decoded_output_textures_bc7[slice_index]);
+ decoded_bc7.override_dimensions(slice_desc.m_orig_width, slice_desc.m_orig_height);
+ write_compressed_texture_file((out_basename + "_transcoded_bc7.ktx").c_str(), decoded_bc7);
- image temp(m_decoded_output_textures_unpacked_bc7[slice_index]);
- temp.crop(slice_desc.m_orig_width, slice_desc.m_orig_height);
- save_png(out_basename + "_transcoded_bc7.png", temp);
+ image temp(m_decoded_output_textures_unpacked_bc7[slice_index]);
+ temp.crop(slice_desc.m_orig_width, slice_desc.m_orig_height);
+ save_png(out_basename + "_transcoded_bc7.png", temp);
+ }
}
}
- }
+ } // if (m_params.m_validate_output_data)
return true;
}
@@ -2116,4 +2140,252 @@ namespace basisu
return true;
}
+ bool basis_parallel_compress(
+ uint32_t total_threads,
+ const basisu::vector<basis_compressor_params>& params_vec,
+ basisu::vector< parallel_results >& results_vec)
+ {
+ assert(g_library_initialized);
+ if (!g_library_initialized)
+ {
+ error_printf("basis_parallel_compress: basisu_encoder_init() MUST be called before using any encoder functionality!\n");
+ return false;
+ }
+
+ assert(total_threads >= 1);
+ total_threads = basisu::maximum<uint32_t>(total_threads, 1);
+
+ job_pool jpool(total_threads);
+
+ results_vec.resize(0);
+ results_vec.resize(params_vec.size());
+
+ std::atomic<bool> result;
+ result = true;
+
+ std::atomic<bool> opencl_failed;
+ opencl_failed = false;
+
+ for (uint32_t pindex = 0; pindex < params_vec.size(); pindex++)
+ {
+ jpool.add_job([pindex, &params_vec, &results_vec, &result, &opencl_failed] {
+
+ basis_compressor_params params = params_vec[pindex];
+ parallel_results& results = results_vec[pindex];
+
+ interval_timer tm;
+ tm.start();
+
+ basis_compressor c;
+
+ // Dummy job pool
+ job_pool task_jpool(1);
+ params.m_pJob_pool = &task_jpool;
+ // TODO: Remove this flag entirely
+ params.m_multithreading = true;
+
+ // Stop using OpenCL if a failure ever occurs.
+ if (opencl_failed)
+ params.m_use_opencl = false;
+
+ bool status = c.init(params);
+
+ if (c.get_opencl_failed())
+ opencl_failed = true;
+
+ if (status)
+ {
+ basis_compressor::error_code ec = c.process();
+
+ if (c.get_opencl_failed())
+ opencl_failed = true;
+
+ results.m_error_code = ec;
+
+ if (ec == basis_compressor::cECSuccess)
+ {
+ results.m_basis_file = c.get_output_basis_file();
+ results.m_ktx2_file = c.get_output_ktx2_file();
+ results.m_stats = c.get_stats();
+ results.m_basis_bits_per_texel = c.get_basis_bits_per_texel();
+ results.m_any_source_image_has_alpha = c.get_any_source_image_has_alpha();
+ }
+ else
+ {
+ result = false;
+ }
+ }
+ else
+ {
+ results.m_error_code = basis_compressor::cECFailedInitializing;
+
+ result = false;
+ }
+
+ results.m_total_time = tm.get_elapsed_secs();
+ } );
+
+ } // pindex
+
+ jpool.wait_for_all();
+
+ if (opencl_failed)
+ error_printf("An OpenCL error occured sometime during compression. The compressor fell back to CPU processing after the failure.\n");
+
+ return result;
+ }
+
+ void* basis_compress(
+ const basisu::vector<image>& source_images,
+ uint32_t flags_and_quality, float uastc_rdo_quality,
+ size_t* pSize,
+ image_stats* pStats)
+ {
+ // Check input parameters
+ if ((!source_images.size()) || (!pSize))
+ {
+ error_printf("basis_compress: Invalid parameter\n");
+ assert(0);
+ return nullptr;
+ }
+
+ *pSize = 0;
+
+ // Initialize a job pool
+ uint32_t num_threads = 1;
+ if (flags_and_quality & cFlagThreaded)
+ num_threads = basisu::maximum<uint32_t>(1, std::thread::hardware_concurrency());
+
+ job_pool jp(num_threads);
+
+ // Initialize the compressor parameter struct
+ basis_compressor_params comp_params;
+ comp_params.m_pJob_pool = &jp;
+
+ comp_params.m_y_flip = (flags_and_quality & cFlagYFlip) != 0;
+ comp_params.m_debug = (flags_and_quality & cFlagDebug) != 0;
+
+ // Copy the largest mipmap level
+ comp_params.m_source_images.resize(1);
+ comp_params.m_source_images[0] = source_images[0];
+
+ // Copy the smaller mipmap levels, if any
+ if (source_images.size() > 1)
+ {
+ comp_params.m_source_mipmap_images.resize(1);
+ comp_params.m_source_mipmap_images[0].resize(source_images.size() - 1);
+
+ for (uint32_t i = 1; i < source_images.size(); i++)
+ comp_params.m_source_mipmap_images[0][i - 1] = source_images[i];
+ }
+
+ comp_params.m_multithreading = (flags_and_quality & cFlagThreaded) != 0;
+ comp_params.m_use_opencl = (flags_and_quality & cFlagUseOpenCL) != 0;
+
+ comp_params.m_write_output_basis_files = false;
+
+ comp_params.m_perceptual = (flags_and_quality & cFlagSRGB) != 0;
+ comp_params.m_mip_srgb = comp_params.m_perceptual;
+ comp_params.m_mip_gen = (flags_and_quality & (cFlagGenMipsWrap | cFlagGenMipsClamp)) != 0;
+ comp_params.m_mip_wrapping = (flags_and_quality & cFlagGenMipsWrap) != 0;
+
+ comp_params.m_uastc = (flags_and_quality & cFlagUASTC) != 0;
+ if (comp_params.m_uastc)
+ {
+ comp_params.m_pack_uastc_flags = flags_and_quality & cPackUASTCLevelMask;
+ comp_params.m_rdo_uastc = (flags_and_quality & cFlagUASTCRDO) != 0;
+ comp_params.m_rdo_uastc_quality_scalar = uastc_rdo_quality;
+ }
+ else
+ comp_params.m_quality_level = basisu::maximum<uint32_t>(1, flags_and_quality & 255);
+
+ comp_params.m_create_ktx2_file = (flags_and_quality & cFlagKTX2) != 0;
+
+ if (comp_params.m_create_ktx2_file)
+ {
+ // Set KTX2 specific parameters.
+ if ((flags_and_quality & cFlagKTX2UASTCSuperCompression) && (comp_params.m_uastc))
+ comp_params.m_ktx2_uastc_supercompression = basist::KTX2_SS_ZSTANDARD;
+
+ comp_params.m_ktx2_srgb_transfer_func = comp_params.m_perceptual;
+ }
+
+ comp_params.m_compute_stats = (pStats != nullptr);
+
+ // Create the compressor, initialize it, and process the input
+ basis_compressor comp;
+ if (!comp.init(comp_params))
+ {
+ error_printf("basis_compress: basis_compressor::init() failed!\n");
+ return nullptr;
+ }
+
+ basis_compressor::error_code ec = comp.process();
+
+ if (ec != basis_compressor::cECSuccess)
+ {
+ error_printf("basis_compress: basis_compressor::process() failed with error code %u\n", (uint32_t)ec);
+ return nullptr;
+ }
+
+ // Get the output file data and return it to the caller
+ void* pFile_data = nullptr;
+ const uint8_vec* pFile_data_vec = comp_params.m_create_ktx2_file ? &comp.get_output_ktx2_file() : &comp.get_output_basis_file();
+
+ pFile_data = malloc(pFile_data_vec->size());
+ if (!pFile_data)
+ {
+ error_printf("basis_compress: Out of memory\n");
+ return nullptr;
+ }
+ memcpy(pFile_data, pFile_data_vec->get_ptr(), pFile_data_vec->size());
+
+ *pSize = pFile_data_vec->size();
+
+ if ((pStats) && (comp.get_stats().size()))
+ {
+ *pStats = comp.get_stats()[0];
+ }
+
+ return pFile_data;
+ }
+
+ void* basis_compress(
+ const uint8_t* pImageRGBA, uint32_t width, uint32_t height, uint32_t pitch_in_pixels,
+ uint32_t flags_and_quality, float uastc_rdo_quality,
+ size_t* pSize,
+ image_stats* pStats)
+ {
+ if (!pitch_in_pixels)
+ pitch_in_pixels = width;
+
+ if ((!pImageRGBA) || (!width) || (!height) || (pitch_in_pixels < width) || (!pSize))
+ {
+ error_printf("basis_compress: Invalid parameter\n");
+ assert(0);
+ return nullptr;
+ }
+
+ *pSize = 0;
+
+ if ((width > BASISU_MAX_SUPPORTED_TEXTURE_DIMENSION) || (height > BASISU_MAX_SUPPORTED_TEXTURE_DIMENSION))
+ {
+ error_printf("basis_compress: Image too large\n");
+ return nullptr;
+ }
+
+ // Copy the source image
+ basisu::vector<image> source_image(1);
+ source_image[0].crop(width, height, width, g_black_color, false);
+ for (uint32_t y = 0; y < height; y++)
+ memcpy(source_image[0].get_ptr() + y * width, (const color_rgba*)pImageRGBA + y * pitch_in_pixels, width * sizeof(color_rgba));
+
+ return basis_compress(source_image, flags_and_quality, uastc_rdo_quality, pSize, pStats);
+ }
+
+ void basis_free_data(void* p)
+ {
+ free(p);
+ }
+
} // namespace basisu
diff --git a/thirdparty/basis_universal/encoder/basisu_comp.h b/thirdparty/basis_universal/encoder/basisu_comp.h
index 2c3af968f7..aa5ea6fec3 100644
--- a/thirdparty/basis_universal/encoder/basisu_comp.h
+++ b/thirdparty/basis_universal/encoder/basisu_comp.h
@@ -16,12 +16,11 @@
#include "basisu_frontend.h"
#include "basisu_backend.h"
#include "basisu_basis_file.h"
-#include "../transcoder/basisu_global_selector_palette.h"
#include "../transcoder/basisu_transcoder.h"
#include "basisu_uastc_enc.h"
-#define BASISU_LIB_VERSION 115
-#define BASISU_LIB_VERSION_STRING "1.15"
+#define BASISU_LIB_VERSION 116
+#define BASISU_LIB_VERSION_STRING "1.16"
#ifndef BASISD_SUPPORT_KTX2
#error BASISD_SUPPORT_KTX2 is undefined
@@ -36,6 +35,9 @@
namespace basisu
{
+ struct opencl_context;
+ typedef opencl_context* opencl_context_ptr;
+
const uint32_t BASISU_MAX_SUPPORTED_TEXTURE_DIMENSION = 16384;
// Allow block's color distance to increase by 1.5 while searching for an alternative nearby endpoint.
@@ -203,13 +205,9 @@ namespace basisu
struct basis_compressor_params
{
basis_compressor_params() :
- m_pSel_codebook(NULL),
m_compression_level((int)BASISU_DEFAULT_COMPRESSION_LEVEL, 0, (int)BASISU_MAX_COMPRESSION_LEVEL),
m_selector_rdo_thresh(BASISU_DEFAULT_SELECTOR_RDO_THRESH, 0.0f, 1e+10f),
m_endpoint_rdo_thresh(BASISU_DEFAULT_ENDPOINT_RDO_THRESH, 0.0f, 1e+10f),
- m_hybrid_sel_cb_quality_thresh(BASISU_DEFAULT_HYBRID_SEL_CB_QUALITY_THRESH, 0.0f, 1e+10f),
- m_global_pal_bits(8, 0, ETC1_GLOBAL_SELECTOR_CODEBOOK_MAX_PAL_BITS),
- m_global_mod_bits(8, 0, basist::etc1_global_palette_entry_modifier::cTotalBits),
m_mip_scale(1.0f, .000125f, 4.0f),
m_mip_smallest_dimension(1, 1, 16384),
m_max_endpoint_clusters(512),
@@ -234,9 +232,8 @@ namespace basisu
void clear()
{
- m_pSel_codebook = NULL;
-
m_uastc.clear();
+ m_use_opencl.clear();
m_status_output.clear();
m_source_filenames.clear();
@@ -249,11 +246,8 @@ namespace basisu
m_y_flip.clear();
m_debug.clear();
- m_validate.clear();
+ m_validate_etc1s.clear();
m_debug_images.clear();
- m_global_sel_pal.clear();
- m_auto_global_sel_pal.clear();
- m_no_hybrid_sel_cb.clear();
m_perceptual.clear();
m_no_selector_rdo.clear();
m_selector_rdo_thresh.clear();
@@ -269,9 +263,6 @@ namespace basisu
m_swizzle[2] = 2;
m_swizzle[3] = 3;
m_renormalize.clear();
- m_hybrid_sel_cb_quality_thresh.clear();
- m_global_pal_bits.clear();
- m_global_mod_bits.clear();
m_disable_hierarchical_endpoint_codebooks.clear();
m_no_endpoint_rdo.clear();
@@ -319,15 +310,16 @@ namespace basisu
m_ktx2_zstd_supercompression_level.clear();
m_ktx2_srgb_transfer_func.clear();
+ m_validate_output_data.clear();
+
m_pJob_pool = nullptr;
}
-
- // Pointer to the global selector codebook, or nullptr to not use a global selector codebook
- const basist::etc1_global_selector_codebook *m_pSel_codebook;
-
+
// True to generate UASTC .basis file data, otherwise ETC1S.
bool_param<false> m_uastc;
+ bool_param<false> m_use_opencl;
+
// If m_read_source_images is true, m_source_filenames (and optionally m_source_alpha_filenames) contains the filenames of PNG images to read.
// Otherwise, the compressor processes the images in m_source_images.
basisu::vector<std::string> m_source_filenames;
@@ -353,20 +345,16 @@ namespace basisu
// Output debug information during compression
bool_param<false> m_debug;
- bool_param<false> m_validate;
+ bool_param<false> m_validate_etc1s;
// m_debug_images is pretty slow
bool_param<false> m_debug_images;
- // Compression level, from 0 to BASISU_MAX_COMPRESSION_LEVEL (higher is slower)
+ // ETC1S compression level, from 0 to BASISU_MAX_COMPRESSION_LEVEL (higher is slower).
+ // This parameter controls numerous internal encoding speed vs. compression efficiency/performance tradeoffs.
+ // Note this is NOT the same as the ETC1S quality level, and most users shouldn't change this.
param<int> m_compression_level;
-
- bool_param<false> m_global_sel_pal;
- bool_param<false> m_auto_global_sel_pal;
-
- // Frontend/backend codec parameters
- bool_param<false> m_no_hybrid_sel_cb;
-
+
// Use perceptual sRGB colorspace metrics instead of linear
bool_param<true> m_perceptual;
@@ -398,13 +386,10 @@ namespace basisu
bool_param<false> m_renormalize;
+ // If true the front end will not use 2 level endpoint codebook searching, for slightly higher quality but much slower execution.
+ // Note some m_compression_level's disable this automatically.
bool_param<false> m_disable_hierarchical_endpoint_codebooks;
-
- // Global/hybrid selector codebook parameters
- param<float> m_hybrid_sel_cb_quality_thresh;
- param<int> m_global_pal_bits;
- param<int> m_global_mod_bits;
-
+
// mipmap generation parameters
bool_param<false> m_mip_gen;
param<float> m_mip_scale;
@@ -415,9 +400,9 @@ namespace basisu
bool_param<true> m_mip_wrapping;
bool_param<true> m_mip_fast;
param<int> m_mip_smallest_dimension;
-
+
// Codebook size (quality) control.
- // If m_quality_level != -1, it controls the quality level. It ranges from [0,255] or [BASISU_QUALITY_MIN, BASISU_QUALITY_MAX].
+ // If m_quality_level != -1, it controls the quality level. It ranges from [1,255] or [BASISU_QUALITY_MIN, BASISU_QUALITY_MAX].
// Otherwise m_max_endpoint_clusters/m_max_selector_clusters controls the codebook sizes directly.
uint32_t m_max_endpoint_clusters;
uint32_t m_max_selector_clusters;
@@ -444,6 +429,7 @@ namespace basisu
param<int> m_resample_width;
param<int> m_resample_height;
param<float> m_resample_factor;
+
const basist::basisu_lowlevel_etc1s_transcoder *m_pGlobal_codebooks;
// KTX2 specific parameters.
@@ -454,21 +440,27 @@ namespace basisu
param<int> m_ktx2_zstd_supercompression_level;
bool_param<false> m_ktx2_srgb_transfer_func;
+ bool_param<false> m_validate_output_data;
+
job_pool *m_pJob_pool;
};
-
+
+ // Important: basisu_encoder_init() MUST be called first before using this class.
class basis_compressor
{
BASISU_NO_EQUALS_OR_COPY_CONSTRUCT(basis_compressor);
public:
basis_compressor();
+ ~basis_compressor();
+ // Note it *should* be possible to call init() multiple times with different inputs, but this scenario isn't well tested. Ideally, create 1 object, compress, then delete it.
bool init(const basis_compressor_params &params);
enum error_code
{
cECSuccess = 0,
+ cECFailedInitializing,
cECFailedReadingSourceImages,
cECFailedValidating,
cECFailedEncodeUASTC,
@@ -495,9 +487,13 @@ namespace basisu
double get_basis_bits_per_texel() const { return m_basis_bits_per_texel; }
bool get_any_source_image_has_alpha() const { return m_any_source_image_has_alpha; }
+
+ bool get_opencl_failed() const { return m_opencl_failed; }
private:
basis_compressor_params m_params;
+
+ opencl_context_ptr m_pOpenCL_context;
basisu::vector<image> m_slice_images;
@@ -509,8 +505,7 @@ namespace basisu
basisu_backend_slice_desc_vec m_slice_descs;
uint32_t m_total_blocks;
- bool m_auto_global_sel_pal;
-
+
basisu_frontend m_frontend;
pixel_block_vec m_source_blocks;
@@ -536,6 +531,8 @@ namespace basisu
bool m_any_source_image_has_alpha;
+ bool m_opencl_failed;
+
bool read_source_images();
bool extract_source_blocks();
bool process_frontend();
@@ -550,6 +547,98 @@ namespace basisu
void get_dfd(uint8_vec& dfd, const basist::ktx2_header& hdr);
bool create_ktx2_file();
};
+
+ // Alternative simple C-style wrapper API around the basis_compressor class.
+ // This doesn't expose every encoder feature, but it's enough to get going.
+ // Important: basisu_encoder_init() MUST be called first before calling these functions.
+ //
+ // Input parameters:
+ // source_images: Array of "image" objects, one per mipmap level, largest mipmap level first.
+ // OR
+ // pImageRGBA: pointer to a 32-bpp RGBx or RGBA raster image, R first in memory, A last. Top scanline first in memory.
+ // width/height/pitch_in_pixels: dimensions of pImageRGBA
+ //
+ // flags_and_quality: Combination of the above flags logically OR'd with the ETC1S or UASTC level, i.e. "cFlagSRGB | cFlagGenMipsClamp | cFlagThreaded | 128" or "cFlagSRGB | cFlagGenMipsClamp | cFlagUASTC | cFlagThreaded | cPackUASTCLevelDefault".
+ // In ETC1S mode, the lower 8-bits are the ETC1S quality level which ranges from [1,255] (higher=better quality/larger files)
+ // In UASTC mode, the lower 8-bits are the UASTC pack level (see cPackUASTCLevelFastest, etc.). Fastest/lowest quality is 0, so be sure to set it correctly.
+ //
+ // uastc_rdo_quality: Float UASTC RDO quality level (0=no change, higher values lower quality but increase compressibility, initially try .5-1.5)
+ //
+ // pSize: Returns the output data's compressed size in bytes
+ //
+ // Return value is the compressed .basis or .ktx2 file data, or nullptr on failure. Must call basis_free() to free it.
+ enum
+ {
+ cFlagUseOpenCL = 1 << 8, // use OpenCL if available
+ cFlagThreaded = 1 << 9, // use multiple threads for compression
+ cFlagDebug = 1 << 10, // enable debug output
+
+ cFlagKTX2 = 1 << 11, // generate a KTX2 file
+ cFlagKTX2UASTCSuperCompression = 1 << 12, // use KTX2 Zstd supercompression on UASTC files
+
+ cFlagSRGB = 1 << 13, // input texture is sRGB, use perceptual colorspace metrics, also use sRGB filtering during mipmap gen, and also sets KTX2 output transfer func to sRGB
+ cFlagGenMipsClamp = 1 << 14, // generate mipmaps with clamp addressing
+ cFlagGenMipsWrap = 1 << 15, // generate mipmaps with wrap addressing
+
+ cFlagYFlip = 1 << 16, // flip source image on Y axis before compression
+
+ cFlagUASTC = 1 << 17, // use UASTC compression vs. ETC1S
+ cFlagUASTCRDO = 1 << 18 // use RDO postprocessing when generating UASTC files (must set uastc_rdo_quality to the quality scalar)
+ };
+ // This function accepts an array of source images.
+ // If more than one image is provided, it's assumed the images form a mipmap pyramid and automatic mipmap generation is disabled.
+ void* basis_compress(
+ const basisu::vector<image> &source_images,
+ uint32_t flags_and_quality, float uastc_rdo_quality,
+ size_t* pSize,
+ image_stats* pStats = nullptr);
+
+ // This function only accepts a single source image.
+ void* basis_compress(
+ const uint8_t* pImageRGBA, uint32_t width, uint32_t height, uint32_t pitch_in_pixels,
+ uint32_t flags_and_quality, float uastc_rdo_quality,
+ size_t* pSize,
+ image_stats* pStats = nullptr);
+
+ // Frees the dynamically allocated file data returned by basis_compress().
+ void basis_free_data(void* p);
+
+ // Parallel compression API
+ struct parallel_results
+ {
+ double m_total_time;
+ basis_compressor::error_code m_error_code;
+ uint8_vec m_basis_file;
+ uint8_vec m_ktx2_file;
+ basisu::vector<image_stats> m_stats;
+ double m_basis_bits_per_texel;
+ bool m_any_source_image_has_alpha;
+
+ parallel_results()
+ {
+ clear();
+ }
+
+ void clear()
+ {
+ m_total_time = 0.0f;
+ m_error_code = basis_compressor::cECFailedInitializing;
+ m_basis_file.clear();
+ m_ktx2_file.clear();
+ m_stats.clear();
+ m_basis_bits_per_texel = 0.0f;
+ m_any_source_image_has_alpha = false;
+ }
+ };
+
+ // Compresses an array of input textures across total_threads threads using the basis_compressor class.
+ // Compressing multiple textures at a time is substantially more efficient than just compressing one at a time.
+ // total_threads must be >= 1.
+ bool basis_parallel_compress(
+ uint32_t total_threads,
+ const basisu::vector<basis_compressor_params> &params_vec,
+ basisu::vector< parallel_results > &results_vec);
+
} // namespace basisu
diff --git a/thirdparty/basis_universal/encoder/basisu_enc.cpp b/thirdparty/basis_universal/encoder/basisu_enc.cpp
index daaf65badc..b427215ee3 100644
--- a/thirdparty/basis_universal/encoder/basisu_enc.cpp
+++ b/thirdparty/basis_universal/encoder/basisu_enc.cpp
@@ -13,16 +13,20 @@
// See the License for the specific language governing permissions and
// limitations under the License.
#include "basisu_enc.h"
-#include "lodepng.h"
#include "basisu_resampler.h"
#include "basisu_resampler_filters.h"
#include "basisu_etc.h"
#include "../transcoder/basisu_transcoder.h"
#include "basisu_bc7enc.h"
-#include "apg_bmp.h"
#include "jpgd.h"
+#include "pvpngreader.h"
+#include "basisu_opencl.h"
#include <vector>
+#define MINIZ_HEADER_FILE_ONLY
+#define MINIZ_NO_ZLIB_COMPATIBLE_NAMES
+#include "basisu_miniz.h"
+
#if defined(_WIN32)
// For QueryPerformanceCounter/QueryPerformanceFrequency
#define WIN32_LEAN_AND_MEAN
@@ -158,34 +162,62 @@ namespace basisu
{ 0x6E, 0x3B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // U+007E (~)
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00} // U+007F
};
-
+
+ bool g_library_initialized;
+ std::mutex g_encoder_init_mutex;
+
// Encoder library initialization (just call once at startup)
- void basisu_encoder_init()
+ void basisu_encoder_init(bool use_opencl, bool opencl_force_serialization)
{
+ std::lock_guard<std::mutex> lock(g_encoder_init_mutex);
+
+ if (g_library_initialized)
+ return;
+
detect_sse41();
basist::basisu_transcoder_init();
pack_etc1_solid_color_init();
//uastc_init();
bc7enc_compress_block_init(); // must be after uastc_init()
+
+ // Don't bother initializing the OpenCL module at all if it's been completely disabled.
+ if (use_opencl)
+ {
+ opencl_init(opencl_force_serialization);
+ }
+
+ g_library_initialized = true;
}
- void error_printf(const char *pFmt, ...)
+ void basisu_encoder_deinit()
{
- char buf[2048];
+ opencl_deinit();
+
+ g_library_initialized = false;
+ }
+
+ void error_vprintf(const char* pFmt, va_list args)
+ {
+ char buf[8192];
- va_list args;
- va_start(args, pFmt);
#ifdef _WIN32
vsprintf_s(buf, sizeof(buf), pFmt, args);
#else
vsnprintf(buf, sizeof(buf), pFmt, args);
#endif
- va_end(args);
fprintf(stderr, "ERROR: %s", buf);
}
+ void error_printf(const char *pFmt, ...)
+ {
+ va_list args;
+ va_start(args, pFmt);
+ error_vprintf(pFmt, args);
+ va_end(args);
+ }
+
#if defined(_WIN32)
inline void query_counter(timer_ticks* pTicks)
{
@@ -195,7 +227,7 @@ namespace basisu
{
QueryPerformanceFrequency(reinterpret_cast<LARGE_INTEGER*>(pTicks));
}
-#elif defined(__APPLE__) || defined(__OpenBSD__)
+#elif defined(__APPLE__) || defined(__FreeBSD__) || defined(__OpenBSD__)
#include <sys/time.h>
inline void query_counter(timer_ticks* pTicks)
{
@@ -284,59 +316,6 @@ namespace basisu
}
const uint32_t MAX_32BIT_ALLOC_SIZE = 250000000;
-
- bool load_bmp(const char* pFilename, image& img)
- {
- int w = 0, h = 0;
- unsigned int n_chans = 0;
- unsigned char* pImage_data = apg_bmp_read(pFilename, &w, &h, &n_chans);
-
- if ((!pImage_data) || (!w) || (!h) || ((n_chans != 3) && (n_chans != 4)))
- {
- error_printf("Failed loading .BMP image \"%s\"!\n", pFilename);
-
- if (pImage_data)
- apg_bmp_free(pImage_data);
-
- return false;
- }
-
- if (sizeof(void *) == sizeof(uint32_t))
- {
- if ((w * h * n_chans) > MAX_32BIT_ALLOC_SIZE)
- {
- error_printf("Image \"%s\" is too large (%ux%u) to process in a 32-bit build!\n", pFilename, w, h);
-
- if (pImage_data)
- apg_bmp_free(pImage_data);
-
- return false;
- }
- }
-
- img.resize(w, h);
-
- const uint8_t *pSrc = pImage_data;
- for (int y = 0; y < h; y++)
- {
- color_rgba *pDst = &img(0, y);
-
- for (int x = 0; x < w; x++)
- {
- pDst->r = pSrc[0];
- pDst->g = pSrc[1];
- pDst->b = pSrc[2];
- pDst->a = (n_chans == 3) ? 255 : pSrc[3];
-
- pSrc += n_chans;
- ++pDst;
- }
- }
-
- apg_bmp_free(pImage_data);
-
- return true;
- }
bool load_tga(const char* pFilename, image& img)
{
@@ -392,53 +371,35 @@ namespace basisu
bool load_png(const uint8_t *pBuf, size_t buf_size, image &img, const char *pFilename)
{
+ interval_timer tm;
+ tm.start();
+
if (!buf_size)
return false;
- unsigned err = 0, w = 0, h = 0;
-
- if (sizeof(void*) == sizeof(uint32_t))
+ uint32_t width = 0, height = 0, num_chans = 0;
+ void* pImage = pv_png::load_png(pBuf, buf_size, 4, width, height, num_chans);
+ if (!pBuf)
{
- // Inspect the image first on 32-bit builds, to see if the image would require too much memory.
- lodepng::State state;
- err = lodepng_inspect(&w, &h, &state, pBuf, buf_size);
- if ((err != 0) || (!w) || (!h))
- return false;
-
- const uint32_t exepected_alloc_size = w * h * sizeof(uint32_t);
-
- // If the file is too large on 32-bit builds then just bail now, to prevent causing a memory exception.
- if (exepected_alloc_size >= MAX_32BIT_ALLOC_SIZE)
- {
- error_printf("Image \"%s\" is too large (%ux%u) to process in a 32-bit build!\n", (pFilename != nullptr) ? pFilename : "<memory>", w, h);
- return false;
- }
-
- w = h = 0;
- }
-
- std::vector<uint8_t> out;
- err = lodepng::decode(out, w, h, pBuf, buf_size);
- if ((err != 0) || (!w) || (!h))
- return false;
-
- if (out.size() != (w * h * 4))
+ error_printf("pv_png::load_png failed while loading image \"%s\"\n", pFilename);
return false;
+ }
- img.resize(w, h);
+ img.grant_ownership(reinterpret_cast<color_rgba*>(pImage), width, height);
- memcpy(img.get_ptr(), &out[0], out.size());
+ //debug_printf("Total load_png() time: %3.3f secs\n", tm.get_elapsed_secs());
return true;
}
bool load_png(const char* pFilename, image& img)
{
- std::vector<uint8_t> buffer;
- unsigned err = lodepng::load_file(buffer, std::string(pFilename));
- if (err)
+ uint8_vec buffer;
+ if (!read_file_to_vec(pFilename, buffer))
+ {
+ error_printf("load_png: Failed reading file \"%s\"!\n", pFilename);
return false;
-
+ }
return load_png(buffer.data(), buffer.size(), img, pFilename);
}
@@ -468,8 +429,6 @@ namespace basisu
if (strcasecmp(pExt, "png") == 0)
return load_png(pFilename, img);
- if (strcasecmp(pExt, "bmp") == 0)
- return load_bmp(pFilename, img);
if (strcasecmp(pExt, "tga") == 0)
return load_tga(pFilename, img);
if ( (strcasecmp(pExt, "jpg") == 0) || (strcasecmp(pExt, "jfif") == 0) || (strcasecmp(pExt, "jpeg") == 0) )
@@ -482,61 +441,67 @@ namespace basisu
{
if (!img.get_total_pixels())
return false;
-
- const uint32_t MAX_PNG_IMAGE_DIM = 32768;
- if ((img.get_width() > MAX_PNG_IMAGE_DIM) || (img.get_height() > MAX_PNG_IMAGE_DIM))
- return false;
-
- std::vector<uint8_t> out;
- unsigned err = 0;
+ void* pPNG_data = nullptr;
+ size_t PNG_data_size = 0;
+
if (image_save_flags & cImageSaveGrayscale)
{
- uint8_vec g_pixels(img.get_width() * img.get_height());
- uint8_t *pDst = &g_pixels[0];
+ uint8_vec g_pixels(img.get_total_pixels());
+ uint8_t* pDst = &g_pixels[0];
for (uint32_t y = 0; y < img.get_height(); y++)
for (uint32_t x = 0; x < img.get_width(); x++)
*pDst++ = img(x, y)[grayscale_comp];
- err = lodepng::encode(out, (const uint8_t*)&g_pixels[0], img.get_width(), img.get_height(), LCT_GREY, 8);
+ pPNG_data = buminiz::tdefl_write_image_to_png_file_in_memory_ex(g_pixels.data(), img.get_width(), img.get_height(), 1, &PNG_data_size, 1, false);
}
else
{
- bool has_alpha = img.has_alpha();
- if ((!has_alpha) || ((image_save_flags & cImageSaveIgnoreAlpha) != 0))
+ bool has_alpha = false;
+
+ if ((image_save_flags & cImageSaveIgnoreAlpha) == 0)
+ has_alpha = img.has_alpha();
+
+ if (!has_alpha)
{
- const uint64_t total_bytes = (uint64_t)img.get_width() * 3U * (uint64_t)img.get_height();
- if (total_bytes > INT_MAX)
- return false;
- uint8_vec rgb_pixels(static_cast<size_t>(total_bytes));
- uint8_t *pDst = &rgb_pixels[0];
-
+ uint8_vec rgb_pixels(img.get_total_pixels() * 3);
+ uint8_t* pDst = &rgb_pixels[0];
+
for (uint32_t y = 0; y < img.get_height(); y++)
{
+ const color_rgba* pSrc = &img(0, y);
for (uint32_t x = 0; x < img.get_width(); x++)
{
- const color_rgba& c = img(x, y);
- pDst[0] = c.r;
- pDst[1] = c.g;
- pDst[2] = c.b;
+ pDst[0] = pSrc->r;
+ pDst[1] = pSrc->g;
+ pDst[2] = pSrc->b;
+
+ pSrc++;
pDst += 3;
}
}
- err = lodepng::encode(out, (const uint8_t*)& rgb_pixels[0], img.get_width(), img.get_height(), LCT_RGB, 8);
+ pPNG_data = buminiz::tdefl_write_image_to_png_file_in_memory_ex(rgb_pixels.data(), img.get_width(), img.get_height(), 3, &PNG_data_size, 1, false);
}
else
{
- err = lodepng::encode(out, (const uint8_t*)img.get_ptr(), img.get_width(), img.get_height(), LCT_RGBA, 8);
+ pPNG_data = buminiz::tdefl_write_image_to_png_file_in_memory_ex(img.get_ptr(), img.get_width(), img.get_height(), 4, &PNG_data_size, 1, false);
}
}
- err = lodepng::save_file(out, std::string(pFilename));
- if (err)
+ if (!pPNG_data)
return false;
- return true;
+ bool status = write_data_to_file(pFilename, pPNG_data, PNG_data_size);
+ if (!status)
+ {
+ error_printf("save_png: Failed writing to filename \"%s\"!\n", pFilename);
+ }
+
+ free(pPNG_data);
+
+ return status;
}
bool read_file_to_vec(const char* pFilename, uint8_vec& data)
@@ -1620,7 +1585,8 @@ namespace basisu
void job_pool::job_thread(uint32_t index)
{
- debug_printf("job_pool::job_thread: starting %u\n", index);
+ BASISU_NOTE_UNUSED(index);
+ //debug_printf("job_pool::job_thread: starting %u\n", index);
while (true)
{
@@ -1656,7 +1622,7 @@ namespace basisu
m_no_more_jobs.notify_all();
}
- debug_printf("job_pool::job_thread: exiting\n");
+ //debug_printf("job_pool::job_thread: exiting\n");
}
// .TGA image loading
@@ -1779,6 +1745,8 @@ namespace basisu
return nullptr;
}
+ //const uint32_t bytes_per_line = hdr.m_width * tga_bytes_per_pixel;
+
const uint8_t *pSrc = pBuf + sizeof(tga_header);
uint32_t bytes_remaining = buf_size - sizeof(tga_header);
diff --git a/thirdparty/basis_universal/encoder/basisu_enc.h b/thirdparty/basis_universal/encoder/basisu_enc.h
index 0ce011452d..0efeaa461f 100644
--- a/thirdparty/basis_universal/encoder/basisu_enc.h
+++ b/thirdparty/basis_universal/encoder/basisu_enc.h
@@ -33,14 +33,23 @@
// If BASISU_USE_HIGH_PRECISION_COLOR_DISTANCE is 1, quality in perceptual mode will be slightly greater, but at a large increase in encoding CPU time.
#define BASISU_USE_HIGH_PRECISION_COLOR_DISTANCE (0)
+#if BASISU_SUPPORT_SSE
+// Declared in basisu_kernels_imp.h, but we can't include that here otherwise it would lead to circular type errors.
+extern void update_covar_matrix_16x16_sse41(uint32_t num_vecs, const void* pWeighted_vecs, const void* pOrigin, const uint32_t *pVec_indices, void* pMatrix16x16);
+#endif
+
namespace basisu
{
extern uint8_t g_hamming_dist[256];
extern const uint8_t g_debug_font8x8_basic[127 - 32 + 1][8];
+ // true if basisu_encoder_init() has been called and returned.
+ extern bool g_library_initialized;
+
// Encoder library initialization.
// This function MUST be called before encoding anything!
- void basisu_encoder_init();
+ void basisu_encoder_init(bool use_opencl = false, bool opencl_force_serialization = false);
+ void basisu_encoder_deinit();
// basisu_kernels_sse.cpp - will be a no-op and g_cpu_supports_sse41 will always be false unless compiled with BASISU_SUPPORT_SSE=1
extern void detect_sse41();
@@ -51,8 +60,9 @@ namespace basisu
const bool g_cpu_supports_sse41 = false;
#endif
+ void error_vprintf(const char* pFmt, va_list args);
void error_printf(const char *pFmt, ...);
-
+
// Helpers
inline uint8_t clamp255(int32_t i)
@@ -170,18 +180,24 @@ namespace basisu
class running_stat
{
public:
- running_stat() :
- m_n(0),
- m_old_m(0), m_new_m(0), m_old_s(0), m_new_s(0)
- {
- }
+ running_stat() { clear(); }
+
void clear()
{
m_n = 0;
+ m_total = 0;
+ m_old_m = 0;
+ m_new_m = 0;
+ m_old_s = 0;
+ m_new_s = 0;
+ m_min = 0;
+ m_max = 0;
}
+
void push(double x)
{
m_n++;
+ m_total += x;
if (m_n == 1)
{
m_old_m = m_new_m = x;
@@ -191,6 +207,7 @@ namespace basisu
}
else
{
+ // See Knuth TAOCP vol 2, 3rd edition, page 232
m_new_m = m_old_m + (x - m_old_m) / m_n;
m_new_s = m_old_s + (x - m_old_m) * (x - m_new_m);
m_old_m = m_new_m;
@@ -199,15 +216,23 @@ namespace basisu
m_max = basisu::maximum(x, m_max);
}
}
+
uint32_t get_num() const
{
return m_n;
}
+
+ double get_total() const
+ {
+ return m_total;
+ }
+
double get_mean() const
{
return (m_n > 0) ? m_new_m : 0.0;
}
+ // Returns sample variance
double get_variance() const
{
return ((m_n > 1) ? m_new_s / (m_n - 1) : 0.0);
@@ -230,7 +255,7 @@ namespace basisu
private:
uint32_t m_n;
- double m_old_m, m_new_m, m_old_s, m_new_s, m_min, m_max;
+ double m_total, m_old_m, m_new_m, m_old_s, m_new_s, m_min, m_max;
};
// Linear algebra
@@ -401,6 +426,8 @@ namespace basisu
typedef vec<3, float> vec3F;
typedef vec<2, float> vec2F;
typedef vec<1, float> vec1F;
+
+ typedef vec<16, float> vec16F;
template <uint32_t Rows, uint32_t Cols, typename T>
class matrix
@@ -504,6 +531,164 @@ namespace basisu
[pKeys](uint32_t a, uint32_t b) { return pKeys[a] < pKeys[b]; }
);
}
+
+ // 1-4 byte direct Radix sort.
+ template <typename T>
+ T* radix_sort(uint32_t num_vals, T* pBuf0, T* pBuf1, uint32_t key_ofs, uint32_t key_size)
+ {
+ assert(key_ofs < sizeof(T));
+ assert((key_size >= 1) && (key_size <= 4));
+
+ uint32_t hist[256 * 4];
+
+ memset(hist, 0, sizeof(hist[0]) * 256 * key_size);
+
+#define BASISU_GET_KEY(p) (*(uint32_t *)((uint8_t *)(p) + key_ofs))
+
+ if (key_size == 4)
+ {
+ T* p = pBuf0;
+ T* q = pBuf0 + num_vals;
+ for (; p != q; p++)
+ {
+ const uint32_t key = BASISU_GET_KEY(p);
+
+ hist[key & 0xFF]++;
+ hist[256 + ((key >> 8) & 0xFF)]++;
+ hist[512 + ((key >> 16) & 0xFF)]++;
+ hist[768 + ((key >> 24) & 0xFF)]++;
+ }
+ }
+ else if (key_size == 3)
+ {
+ T* p = pBuf0;
+ T* q = pBuf0 + num_vals;
+ for (; p != q; p++)
+ {
+ const uint32_t key = BASISU_GET_KEY(p);
+
+ hist[key & 0xFF]++;
+ hist[256 + ((key >> 8) & 0xFF)]++;
+ hist[512 + ((key >> 16) & 0xFF)]++;
+ }
+ }
+ else if (key_size == 2)
+ {
+ T* p = pBuf0;
+ T* q = pBuf0 + (num_vals >> 1) * 2;
+
+ for (; p != q; p += 2)
+ {
+ const uint32_t key0 = BASISU_GET_KEY(p);
+ const uint32_t key1 = BASISU_GET_KEY(p + 1);
+
+ hist[key0 & 0xFF]++;
+ hist[256 + ((key0 >> 8) & 0xFF)]++;
+
+ hist[key1 & 0xFF]++;
+ hist[256 + ((key1 >> 8) & 0xFF)]++;
+ }
+
+ if (num_vals & 1)
+ {
+ const uint32_t key = BASISU_GET_KEY(p);
+
+ hist[key & 0xFF]++;
+ hist[256 + ((key >> 8) & 0xFF)]++;
+ }
+ }
+ else
+ {
+ assert(key_size == 1);
+ if (key_size != 1)
+ return NULL;
+
+ T* p = pBuf0;
+ T* q = pBuf0 + (num_vals >> 1) * 2;
+
+ for (; p != q; p += 2)
+ {
+ const uint32_t key0 = BASISU_GET_KEY(p);
+ const uint32_t key1 = BASISU_GET_KEY(p + 1);
+
+ hist[key0 & 0xFF]++;
+ hist[key1 & 0xFF]++;
+ }
+
+ if (num_vals & 1)
+ {
+ const uint32_t key = BASISU_GET_KEY(p);
+ hist[key & 0xFF]++;
+ }
+ }
+
+ T* pCur = pBuf0;
+ T* pNew = pBuf1;
+
+ for (uint32_t pass = 0; pass < key_size; pass++)
+ {
+ const uint32_t* pHist = &hist[pass << 8];
+
+ uint32_t offsets[256];
+
+ uint32_t cur_ofs = 0;
+ for (uint32_t i = 0; i < 256; i += 2)
+ {
+ offsets[i] = cur_ofs;
+ cur_ofs += pHist[i];
+
+ offsets[i + 1] = cur_ofs;
+ cur_ofs += pHist[i + 1];
+ }
+
+ const uint32_t pass_shift = pass << 3;
+
+ T* p = pCur;
+ T* q = pCur + (num_vals >> 1) * 2;
+
+ for (; p != q; p += 2)
+ {
+ uint32_t c0 = (BASISU_GET_KEY(p) >> pass_shift) & 0xFF;
+ uint32_t c1 = (BASISU_GET_KEY(p + 1) >> pass_shift) & 0xFF;
+
+ if (c0 == c1)
+ {
+ uint32_t dst_offset0 = offsets[c0];
+
+ offsets[c0] = dst_offset0 + 2;
+
+ pNew[dst_offset0] = p[0];
+ pNew[dst_offset0 + 1] = p[1];
+ }
+ else
+ {
+ uint32_t dst_offset0 = offsets[c0]++;
+ uint32_t dst_offset1 = offsets[c1]++;
+
+ pNew[dst_offset0] = p[0];
+ pNew[dst_offset1] = p[1];
+ }
+ }
+
+ if (num_vals & 1)
+ {
+ uint32_t c = (BASISU_GET_KEY(p) >> pass_shift) & 0xFF;
+
+ uint32_t dst_offset = offsets[c];
+ offsets[c] = dst_offset + 1;
+
+ pNew[dst_offset] = *p;
+ }
+
+ T* t = pCur;
+ pCur = pNew;
+ pNew = t;
+ }
+
+ return pCur;
+ }
+
+#undef BASISU_GET_KEY
// Very simple job pool with no dependencies.
class job_pool
@@ -805,17 +990,28 @@ namespace basisu
int dg = e1.g - e2.g;
int db = e1.b - e2.b;
+#if 0
int delta_l = dr * 27 + dg * 92 + db * 9;
int delta_cr = dr * 128 - delta_l;
int delta_cb = db * 128 - delta_l;
-
+
uint32_t id = ((uint32_t)(delta_l * delta_l) >> 7U) +
((((uint32_t)(delta_cr * delta_cr) >> 7U) * 26U) >> 7U) +
((((uint32_t)(delta_cb * delta_cb) >> 7U) * 3U) >> 7U);
+#else
+ int64_t delta_l = dr * 27 + dg * 92 + db * 9;
+ int64_t delta_cr = dr * 128 - delta_l;
+ int64_t delta_cb = db * 128 - delta_l;
+
+ uint32_t id = ((uint32_t)((delta_l * delta_l) >> 7U)) +
+ ((((uint32_t)((delta_cr * delta_cr) >> 7U)) * 26U) >> 7U) +
+ ((((uint32_t)((delta_cb * delta_cb) >> 7U)) * 3U) >> 7U);
+#endif
if (alpha)
{
int da = (e1.a - e2.a) << 7;
+ // This shouldn't overflow if da is 255 or -255: 29.99 bits after squaring.
id += ((uint32_t)(da * da) >> 7U);
}
@@ -1258,7 +1454,7 @@ namespace basisu
{
codebook.resize(codebook.size() + 1);
codebook.back() = cur.m_training_vecs;
-
+
if (node_stack.empty())
break;
@@ -1295,6 +1491,9 @@ namespace basisu
uint32_t total_leaf_nodes = 1;
+ //interval_timer tm;
+ //tm.start();
+
while ((var_heap.size()) && (total_leaf_nodes < max_size))
{
const uint32_t node_index = var_heap.get_top_index();
@@ -1315,6 +1514,8 @@ namespace basisu
}
}
+ //debug_printf("tree_vector_quant::generate %u: %3.3f secs\n", TrainingVectorType::num_elements, tm.get_elapsed_secs());
+
return true;
}
@@ -1443,17 +1644,32 @@ namespace basisu
{
const uint32_t N = TrainingVectorType::num_elements;
- matrix<N, N, float> cmatrix(cZero);
+ matrix<N, N, float> cmatrix;
- // Compute covariance matrix from weighted input vectors
- for (uint32_t i = 0; i < node.m_training_vecs.size(); i++)
+ if ((N != 16) || (!g_cpu_supports_sse41))
{
- const TrainingVectorType v(m_training_vecs[node.m_training_vecs[i]].first - node.m_origin);
- const TrainingVectorType w(static_cast<float>(m_training_vecs[node.m_training_vecs[i]].second) * v);
+ cmatrix.set_zero();
+
+ // Compute covariance matrix from weighted input vectors
+ for (uint32_t i = 0; i < node.m_training_vecs.size(); i++)
+ {
+ const TrainingVectorType v(m_training_vecs[node.m_training_vecs[i]].first - node.m_origin);
+ const TrainingVectorType w(static_cast<float>(m_training_vecs[node.m_training_vecs[i]].second) * v);
- for (uint32_t x = 0; x < N; x++)
- for (uint32_t y = x; y < N; y++)
- cmatrix[x][y] = cmatrix[x][y] + v[x] * w[y];
+ for (uint32_t x = 0; x < N; x++)
+ for (uint32_t y = x; y < N; y++)
+ cmatrix[x][y] = cmatrix[x][y] + v[x] * w[y];
+ }
+ }
+ else
+ {
+#if BASISU_SUPPORT_SSE
+ // Specialize the case with 16x16 matrices, which are quite expensive without SIMD.
+ // This SSE function takes pointers to void types, so do some sanity checks.
+ assert(sizeof(TrainingVectorType) == sizeof(float) * 16);
+ assert(sizeof(training_vec_with_weight) == sizeof(std::pair<vec16F, uint64_t>));
+ update_covar_matrix_16x16_sse41(node.m_training_vecs.size(), m_training_vecs.data(), &node.m_origin, node.m_training_vecs.data(), &cmatrix);
+#endif
}
const float renorm_scale = 1.0f / node.m_weight;
@@ -1632,16 +1848,19 @@ namespace basisu
}
}
+ // Node is unsplittable using the above algorithm - try something else to split it up.
if ((!l_weight) || (!r_weight))
{
l_children.resize(0);
new_l_child.set(0.0f);
l_ttsum = 0.0f;
l_weight = 0;
+
r_children.resize(0);
new_r_child.set(0.0f);
r_ttsum = 0.0f;
r_weight = 0;
+
TrainingVectorType firstVec;
for (uint32_t i = 0; i < node.m_training_vecs.size(); i++)
{
@@ -1847,31 +2066,67 @@ namespace basisu
uint32_t max_codebook_size, uint32_t max_parent_codebook_size,
basisu::vector<uint_vec>& codebook,
basisu::vector<uint_vec>& parent_codebook,
- uint32_t max_threads, job_pool *pJob_pool)
+ uint32_t max_threads, job_pool *pJob_pool,
+ bool even_odd_input_pairs_equal)
{
typedef bit_hasher<typename Quantizer::training_vec_type> training_vec_bit_hasher;
+
typedef std::unordered_map < typename Quantizer::training_vec_type, weighted_block_group,
training_vec_bit_hasher> group_hash;
+ //interval_timer tm;
+ //tm.start();
+
group_hash unique_vecs;
- weighted_block_group g;
- g.m_indices.resize(1);
+ unique_vecs.reserve(20000);
- for (uint32_t i = 0; i < q.get_training_vecs().size(); i++)
+ weighted_block_group g;
+
+ if (even_odd_input_pairs_equal)
{
- g.m_total_weight = q.get_training_vecs()[i].second;
- g.m_indices[0] = i;
+ g.m_indices.resize(2);
- auto ins_res = unique_vecs.insert(std::make_pair(q.get_training_vecs()[i].first, g));
+ assert(q.get_training_vecs().size() >= 2 && (q.get_training_vecs().size() & 1) == 0);
- if (!ins_res.second)
+ for (uint32_t i = 0; i < q.get_training_vecs().size(); i += 2)
{
- (ins_res.first)->second.m_total_weight += g.m_total_weight;
- (ins_res.first)->second.m_indices.push_back(i);
+ assert(q.get_training_vecs()[i].first == q.get_training_vecs()[i + 1].first);
+
+ g.m_total_weight = q.get_training_vecs()[i].second + q.get_training_vecs()[i + 1].second;
+ g.m_indices[0] = i;
+ g.m_indices[1] = i + 1;
+
+ auto ins_res = unique_vecs.insert(std::make_pair(q.get_training_vecs()[i].first, g));
+
+ if (!ins_res.second)
+ {
+ (ins_res.first)->second.m_total_weight += g.m_total_weight;
+ (ins_res.first)->second.m_indices.push_back(i);
+ (ins_res.first)->second.m_indices.push_back(i + 1);
+ }
+ }
+ }
+ else
+ {
+ g.m_indices.resize(1);
+
+ for (uint32_t i = 0; i < q.get_training_vecs().size(); i++)
+ {
+ g.m_total_weight = q.get_training_vecs()[i].second;
+ g.m_indices[0] = i;
+
+ auto ins_res = unique_vecs.insert(std::make_pair(q.get_training_vecs()[i].first, g));
+
+ if (!ins_res.second)
+ {
+ (ins_res.first)->second.m_total_weight += g.m_total_weight;
+ (ins_res.first)->second.m_indices.push_back(i);
+ }
}
}
+ //debug_printf("generate_hierarchical_codebook_threaded: %u training vectors, %u unique training vectors, %3.3f secs\n", q.get_total_training_vecs(), (uint32_t)unique_vecs.size(), tm.get_elapsed_secs());
debug_printf("generate_hierarchical_codebook_threaded: %u training vectors, %u unique training vectors\n", q.get_total_training_vecs(), (uint32_t)unique_vecs.size());
Quantizer group_quant;
@@ -2491,7 +2746,27 @@ namespace basisu
return *this;
}
- image &crop(uint32_t w, uint32_t h, uint32_t p = UINT32_MAX, const color_rgba &background = g_black_color)
+ // pPixels MUST have been allocated using malloc() (basisu::vector will eventually use free() on the pointer).
+ image& grant_ownership(color_rgba* pPixels, uint32_t w, uint32_t h, uint32_t p = UINT32_MAX)
+ {
+ if (p == UINT32_MAX)
+ p = w;
+
+ clear();
+
+ if ((!p) || (!w) || (!h))
+ return *this;
+
+ m_pixels.grant_ownership(pPixels, p * h, p * h);
+
+ m_width = w;
+ m_height = h;
+ m_pitch = p;
+
+ return *this;
+ }
+
+ image &crop(uint32_t w, uint32_t h, uint32_t p = UINT32_MAX, const color_rgba &background = g_black_color, bool init_image = true)
{
if (p == UINT32_MAX)
p = w;
@@ -2509,15 +2784,25 @@ namespace basisu
cur_state.swap(m_pixels);
m_pixels.resize(p * h);
-
- for (uint32_t y = 0; y < h; y++)
+
+ if (init_image)
{
- for (uint32_t x = 0; x < w; x++)
+ if (m_width || m_height)
{
- if ((x < m_width) && (y < m_height))
- m_pixels[x + y * p] = cur_state[x + y * m_pitch];
- else
- m_pixels[x + y * p] = background;
+ for (uint32_t y = 0; y < h; y++)
+ {
+ for (uint32_t x = 0; x < w; x++)
+ {
+ if ((x < m_width) && (y < m_height))
+ m_pixels[x + y * p] = cur_state[x + y * m_pitch];
+ else
+ m_pixels[x + y * p] = background;
+ }
+ }
+ }
+ else
+ {
+ m_pixels.set_all(background);
}
}
@@ -2590,9 +2875,25 @@ namespace basisu
const image &extract_block_clamped(color_rgba *pDst, uint32_t src_x, uint32_t src_y, uint32_t w, uint32_t h) const
{
- for (uint32_t y = 0; y < h; y++)
- for (uint32_t x = 0; x < w; x++)
- *pDst++ = get_clamped(src_x + x, src_y + y);
+ if (((src_x + w) > m_width) || ((src_y + h) > m_height))
+ {
+ // Slower clamping case
+ for (uint32_t y = 0; y < h; y++)
+ for (uint32_t x = 0; x < w; x++)
+ *pDst++ = get_clamped(src_x + x, src_y + y);
+ }
+ else
+ {
+ const color_rgba* pSrc = &m_pixels[src_x + src_y * m_pitch];
+
+ for (uint32_t y = 0; y < h; y++)
+ {
+ memcpy(pDst, pSrc, w * sizeof(color_rgba));
+ pSrc += m_pitch;
+ pDst += w;
+ }
+ }
+
return *this;
}
@@ -2947,21 +3248,18 @@ namespace basisu
};
// Image saving/loading/resampling
-
+
bool load_png(const uint8_t* pBuf, size_t buf_size, image& img, const char* pFilename = nullptr);
bool load_png(const char* pFilename, image& img);
inline bool load_png(const std::string &filename, image &img) { return load_png(filename.c_str(), img); }
- bool load_bmp(const char* pFilename, image& img);
- inline bool load_bmp(const std::string &filename, image &img) { return load_bmp(filename.c_str(), img); }
-
bool load_tga(const char* pFilename, image& img);
inline bool load_tga(const std::string &filename, image &img) { return load_tga(filename.c_str(), img); }
bool load_jpg(const char *pFilename, image& img);
inline bool load_jpg(const std::string &filename, image &img) { return load_jpg(filename.c_str(), img); }
- // Currently loads .BMP, .PNG, or .TGA.
+ // Currently loads .PNG, .TGA, or .JPG
bool load_image(const char* pFilename, image& img);
inline bool load_image(const std::string &filename, image &img) { return load_image(filename.c_str(), img); }
@@ -3129,6 +3427,29 @@ namespace basisu
}
void fill_buffer_with_random_bytes(void *pBuf, size_t size, uint32_t seed = 1);
+
+ const uint32_t cPixelBlockWidth = 4;
+ const uint32_t cPixelBlockHeight = 4;
+ const uint32_t cPixelBlockTotalPixels = cPixelBlockWidth * cPixelBlockHeight;
+
+ struct pixel_block
+ {
+ color_rgba m_pixels[cPixelBlockHeight][cPixelBlockWidth]; // [y][x]
+
+ inline const color_rgba& operator() (uint32_t x, uint32_t y) const { assert((x < cPixelBlockWidth) && (y < cPixelBlockHeight)); return m_pixels[y][x]; }
+ inline color_rgba& operator() (uint32_t x, uint32_t y) { assert((x < cPixelBlockWidth) && (y < cPixelBlockHeight)); return m_pixels[y][x]; }
+
+ inline const color_rgba* get_ptr() const { return &m_pixels[0][0]; }
+ inline color_rgba* get_ptr() { return &m_pixels[0][0]; }
+
+ inline void clear() { clear_obj(*this); }
+
+ inline bool operator== (const pixel_block& rhs) const
+ {
+ return memcmp(m_pixels, rhs.m_pixels, sizeof(m_pixels)) == 0;
+ }
+ };
+ typedef basisu::vector<pixel_block> pixel_block_vec;
} // namespace basisu
diff --git a/thirdparty/basis_universal/encoder/basisu_etc.cpp b/thirdparty/basis_universal/encoder/basisu_etc.cpp
index 232e8965b0..f8bd0f12e5 100644
--- a/thirdparty/basis_universal/encoder/basisu_etc.cpp
+++ b/thirdparty/basis_universal/encoder/basisu_etc.cpp
@@ -158,6 +158,22 @@ namespace basisu
}
}
}
+
+#if 0
+ for (uint32_t y = 0; y < 64; y++)
+ {
+ printf("{");
+ for (uint32_t x = 0; x < 256; x++)
+ {
+ printf("0x%X", g_etc1_inverse_lookup[y][x]);
+ if (x != 255)
+ printf(",");
+ if (((x & 63) == 63) && (x != 255))
+ printf("\n");
+ }
+ printf("},\n");
+ }
+#endif
}
// Packs solid color blocks efficiently using a set of small precomputed tables.
@@ -1126,6 +1142,7 @@ namespace basisu
if (!g_eval_dist_tables[inten_table][m_max_comp_spread])
continue;
}
+
#if 0
if (m_pParams->m_quality <= cETCQualityMedium)
{
diff --git a/thirdparty/basis_universal/encoder/basisu_etc.h b/thirdparty/basis_universal/encoder/basisu_etc.h
index 1e3ece43b8..208f2aac1b 100644
--- a/thirdparty/basis_universal/encoder/basisu_etc.h
+++ b/thirdparty/basis_universal/encoder/basisu_etc.h
@@ -490,6 +490,35 @@ namespace basisu
return dc;
}
+ void get_block_colors_etc1s(color_rgba* pBlock_colors) const
+ {
+ color_rgba b;
+
+ unpack_color5(b, get_base5_color(), true);
+
+ const int* pInten_table = g_etc1_inten_tables[get_inten_table(0)];
+
+ pBlock_colors[0].set(clamp255(b.r + pInten_table[0]), clamp255(b.g + pInten_table[0]), clamp255(b.b + pInten_table[0]), 255);
+ pBlock_colors[1].set(clamp255(b.r + pInten_table[1]), clamp255(b.g + pInten_table[1]), clamp255(b.b + pInten_table[1]), 255);
+ pBlock_colors[2].set(clamp255(b.r + pInten_table[2]), clamp255(b.g + pInten_table[2]), clamp255(b.b + pInten_table[2]), 255);
+ pBlock_colors[3].set(clamp255(b.r + pInten_table[3]), clamp255(b.g + pInten_table[3]), clamp255(b.b + pInten_table[3]), 255);
+ }
+
+ static void get_block_colors_etc1s(color_rgba* pBlock_colors, const color_rgba &base5_color, uint32_t inten_table)
+ {
+ color_rgba b;
+ b.r = (base5_color.r << 3U) | (base5_color.r >> 2U);
+ b.g = (base5_color.g << 3U) | (base5_color.g >> 2U);
+ b.b = (base5_color.b << 3U) | (base5_color.b >> 2U);
+
+ const int* pInten_table = g_etc1_inten_tables[inten_table];
+
+ pBlock_colors[0].set(clamp255(b.r + pInten_table[0]), clamp255(b.g + pInten_table[0]), clamp255(b.b + pInten_table[0]), 255);
+ pBlock_colors[1].set(clamp255(b.r + pInten_table[1]), clamp255(b.g + pInten_table[1]), clamp255(b.b + pInten_table[1]), 255);
+ pBlock_colors[2].set(clamp255(b.r + pInten_table[2]), clamp255(b.g + pInten_table[2]), clamp255(b.b + pInten_table[2]), 255);
+ pBlock_colors[3].set(clamp255(b.r + pInten_table[3]), clamp255(b.g + pInten_table[3]), clamp255(b.b + pInten_table[3]), 255);
+ }
+
void get_block_color(color_rgba& color, uint32_t subblock_index, uint32_t selector_index) const
{
color_rgba b;
diff --git a/thirdparty/basis_universal/encoder/basisu_frontend.cpp b/thirdparty/basis_universal/encoder/basisu_frontend.cpp
index 324fc8e447..00210e6679 100644
--- a/thirdparty/basis_universal/encoder/basisu_frontend.cpp
+++ b/thirdparty/basis_universal/encoder/basisu_frontend.cpp
@@ -19,6 +19,7 @@
//
#include "../transcoder/basisu.h"
#include "basisu_frontend.h"
+#include "basisu_opencl.h"
#include <unordered_set>
#include <unordered_map>
@@ -43,61 +44,15 @@ namespace basisu
// TODO - How to handle internal verifies in the basisu lib
static inline void handle_verify_failure(int line)
{
- fprintf(stderr, "ERROR: basisu_frontend: verify check failed at line %i!\n", line);
+ error_printf("basisu_frontend: verify check failed at line %i!\n", line);
abort();
}
bool basisu_frontend::init(const params &p)
{
-#if 0
- // HACK HACK
- FILE* pFile;
- fopen_s(&pFile, "tv.bin", "rb");
- if (pFile)
- {
- debug_printf("Using tv.bin\n");
-
- fseek(pFile, 0, SEEK_END);
- uint32_t size = ftell(pFile);
- fseek(pFile, 0, SEEK_SET);
-
- uint32_t tv = size / sizeof(vec6F_quantizer::training_vec_with_weight);
-
- basisu::vector<vec6F_quantizer::training_vec_with_weight> v(tv);
- fread(&v[0], 1, sizeof(v[0]) * tv, pFile);
-
- for (uint32_t i = 0; i < tv; i++)
- m_endpoint_clusterizer.add_training_vec(v[i].first, v[i].second);
-
- m_endpoint_clusterizer.generate(16128);
- basisu::vector<uint_vec> codebook;
- m_endpoint_clusterizer.retrieve(codebook);
-
- printf("Generated %u entries\n", (uint32_t)codebook.size());
-
- fclose(pFile);
- exit(0);
- }
-#endif
-
- if (p.m_use_hybrid_selector_codebooks)
- {
- if (!p.m_pGlobal_sel_codebook)
- {
- debug_printf("basisu_frontend::init: No global sel codebook!\n");
- assert(0);
- return false;
- }
- }
-
- debug_printf("basisu_frontend::init: Multithreaded: %u, NumEndpointClusters: %u, NumSelectorClusters: %u, Perceptual: %u, CompressionLevel: %u\n",
- p.m_multithreaded, p.m_max_endpoint_clusters, p.m_max_selector_clusters, p.m_perceptual, p.m_compression_level);
-
- debug_printf("Global sel codebook pal bits: %u, Global sel codebook mod bits: %u, Use hybrid selector codebook: %u, Hybrid codebook quality thresh: %f\n",
- p.m_num_global_sel_codebook_pal_bits,
- p.m_num_global_sel_codebook_mod_bits,
- p.m_use_hybrid_selector_codebooks,
- p.m_hybrid_codebook_quality_thresh);
+ debug_printf("basisu_frontend::init: Multithreaded: %u, Job pool total threads: %u, NumEndpointClusters: %u, NumSelectorClusters: %u, Perceptual: %u, CompressionLevel: %u\n",
+ p.m_multithreaded, p.m_pJob_pool ? p.m_pJob_pool->get_total_threads() : 0,
+ p.m_max_endpoint_clusters, p.m_max_selector_clusters, p.m_perceptual, p.m_compression_level);
if ((p.m_max_endpoint_clusters < 1) || (p.m_max_endpoint_clusters > cMaxEndpointClusters))
return false;
@@ -106,8 +61,22 @@ namespace basisu
m_source_blocks.resize(0);
append_vector(m_source_blocks, p.m_pSource_blocks, p.m_num_source_blocks);
-
+
m_params = p;
+
+ if (m_params.m_pOpenCL_context)
+ {
+ BASISU_ASSUME(sizeof(cl_pixel_block) == sizeof(pixel_block));
+
+ // Upload the RGBA pixel blocks a single time.
+ if (!opencl_set_pixel_blocks(m_params.m_pOpenCL_context, m_source_blocks.size(), (cl_pixel_block*)m_source_blocks.data()))
+ {
+ // This is not fatal, we just won't use OpenCL.
+ error_printf("basisu_frontend::init: opencl_set_pixel_blocks() failed\n");
+ m_params.m_pOpenCL_context = nullptr;
+ m_opencl_failed = true;
+ }
+ }
m_encoded_blocks.resize(m_params.m_num_source_blocks);
memset(&m_encoded_blocks[0], 0, m_encoded_blocks.size() * sizeof(m_encoded_blocks[0]));
@@ -194,8 +163,12 @@ namespace basisu
m_total_blocks = m_params.m_num_source_blocks;
m_total_pixels = m_total_blocks * cPixelBlockTotalPixels;
+ // Encode the initial high quality ETC1S texture
+
init_etc1_images();
+ // First quantize the ETC1S endpoints
+
if (m_params.m_pGlobal_codebooks)
{
init_global_codebooks();
@@ -205,16 +178,26 @@ namespace basisu
init_endpoint_training_vectors();
generate_endpoint_clusters();
-
+
for (uint32_t refine_endpoint_step = 0; refine_endpoint_step < m_num_endpoint_codebook_iterations; refine_endpoint_step++)
{
- BASISU_FRONTEND_VERIFY(check_etc1s_constraints());
+ if (m_params.m_validate)
+ {
+ BASISU_FRONTEND_VERIFY(check_etc1s_constraints());
+
+ BASISU_FRONTEND_VERIFY(validate_endpoint_cluster_hierarchy(false));
+ }
if (refine_endpoint_step)
{
introduce_new_endpoint_clusters();
}
+ if (m_params.m_validate)
+ {
+ BASISU_FRONTEND_VERIFY(validate_endpoint_cluster_hierarchy(false));
+ }
+
generate_endpoint_codebook(refine_endpoint_step);
if ((m_params.m_debug_images) && (m_params.m_dump_endpoint_clusterization))
@@ -236,7 +219,7 @@ namespace basisu
if ((m_params.m_tex_type == basist::cBASISTexTypeVideoFrames) && (!refine_endpoint_step) && (m_num_endpoint_codebook_iterations == 1))
{
eliminate_redundant_or_empty_endpoint_clusters();
- generate_endpoint_codebook(refine_endpoint_step);
+ generate_endpoint_codebook(basisu::maximum(1U, refine_endpoint_step));
}
if ((m_params.m_debug_images) && (m_params.m_dump_endpoint_clusterization))
@@ -250,22 +233,37 @@ namespace basisu
dump_endpoint_clusterization_visualization(buf, true);
}
}
+
+ if (m_params.m_validate)
+ {
+ BASISU_FRONTEND_VERIFY(validate_endpoint_cluster_hierarchy(false));
+ }
eliminate_redundant_or_empty_endpoint_clusters();
+ if (m_params.m_validate)
+ {
+ BASISU_FRONTEND_VERIFY(validate_endpoint_cluster_hierarchy(false));
+ }
+
if (m_params.m_debug_stats)
debug_printf("Total endpoint clusters: %u\n", (uint32_t)m_endpoint_clusters.size());
if (early_out)
break;
}
-
- BASISU_FRONTEND_VERIFY(check_etc1s_constraints());
+
+ if (m_params.m_validate)
+ {
+ BASISU_FRONTEND_VERIFY(check_etc1s_constraints());
+ }
generate_block_endpoint_clusters();
create_initial_packed_texture();
+ // Now quantize the ETC1S selectors
+
generate_selector_clusters();
if (m_use_hierarchical_selector_codebooks)
@@ -276,12 +274,12 @@ namespace basisu
create_optimized_selector_codebook(0);
find_optimal_selector_clusters_for_each_block();
-
+
introduce_special_selector_clusters();
}
else
{
- const uint32_t num_refine_selector_steps = m_params.m_pGlobal_sel_codebook ? 1 : m_num_selector_codebook_iterations;
+ const uint32_t num_refine_selector_steps = m_num_selector_codebook_iterations;
for (uint32_t refine_selector_steps = 0; refine_selector_steps < num_refine_selector_steps; refine_selector_steps++)
{
create_optimized_selector_codebook(refine_selector_steps);
@@ -289,7 +287,7 @@ namespace basisu
find_optimal_selector_clusters_for_each_block();
introduce_special_selector_clusters();
-
+
if ((m_params.m_compression_level >= 4) || (m_params.m_tex_type == basist::cBASISTexTypeVideoFrames))
{
if (!refine_block_endpoints_given_selectors())
@@ -297,7 +295,7 @@ namespace basisu
}
}
}
-
+
optimize_selector_codebook();
if (m_params.m_debug_stats)
@@ -574,9 +572,6 @@ namespace basisu
{
debug_printf("introduce_special_selector_clusters\n");
- if (m_params.m_pGlobal_sel_codebook)
- return;
-
uint32_t total_blocks_relocated = 0;
const uint32_t initial_selector_clusters = (uint32_t)m_selector_cluster_block_indices.size();
@@ -722,23 +717,15 @@ namespace basisu
}
basisu::vector<etc_block> new_optimized_cluster_selectors(m_optimized_cluster_selectors.size() ? total_new_entries : 0);
- basist::etc1_global_selector_codebook_entry_id_vec new_optimized_cluster_selector_global_cb_ids(m_optimized_cluster_selector_global_cb_ids.size() ? total_new_entries : 0);
basisu::vector<uint_vec> new_selector_cluster_indices(m_selector_cluster_block_indices.size() ? total_new_entries : 0);
- bool_vec new_selector_cluster_uses_global_cb(m_selector_cluster_uses_global_cb.size() ? total_new_entries : 0);
for (uint32_t i = 0; i < total_new_entries; i++)
{
if (m_optimized_cluster_selectors.size())
new_optimized_cluster_selectors[i] = m_optimized_cluster_selectors[new_to_old[i]];
- if (m_optimized_cluster_selector_global_cb_ids.size())
- new_optimized_cluster_selector_global_cb_ids[i] = m_optimized_cluster_selector_global_cb_ids[new_to_old[i]];
-
//if (m_selector_cluster_block_indices.size())
// new_selector_cluster_indices[i] = m_selector_cluster_block_indices[new_to_old[i]];
-
- if (m_selector_cluster_uses_global_cb.size())
- new_selector_cluster_uses_global_cb[i] = m_selector_cluster_uses_global_cb[new_to_old[i]];
}
for (uint32_t i = 0; i < m_block_selector_cluster_index.size(); i++)
@@ -747,9 +734,7 @@ namespace basisu
}
m_optimized_cluster_selectors.swap(new_optimized_cluster_selectors);
- m_optimized_cluster_selector_global_cb_ids.swap(new_optimized_cluster_selector_global_cb_ids);
m_selector_cluster_block_indices.swap(new_selector_cluster_indices);
- m_selector_cluster_uses_global_cb.swap(new_selector_cluster_uses_global_cb);
// This isn't strictly necessary - doing it for completeness/future sanity.
if (m_selector_clusters_within_each_parent_cluster.size())
@@ -771,66 +756,93 @@ namespace basisu
m_etc1_blocks_etc1s.resize(m_total_blocks);
- const uint32_t N = 4096;
- for (uint32_t block_index_iter = 0; block_index_iter < m_total_blocks; block_index_iter += N)
+ bool use_cpu = true;
+
+ if (m_params.m_pOpenCL_context)
+ {
+ uint32_t total_perms = 64;
+ if (m_params.m_compression_level == 0)
+ total_perms = 4;
+ else if (m_params.m_compression_level == 1)
+ total_perms = 16;
+ else if (m_params.m_compression_level == BASISU_MAX_COMPRESSION_LEVEL)
+ total_perms = OPENCL_ENCODE_ETC1S_MAX_PERMS;
+
+ bool status = opencl_encode_etc1s_blocks(m_params.m_pOpenCL_context, m_etc1_blocks_etc1s.data(), m_params.m_perceptual, total_perms);
+ if (status)
+ use_cpu = false;
+ else
+ {
+ error_printf("basisu_frontend::init_etc1_images: opencl_encode_etc1s_blocks() failed! Using CPU.\n");
+ m_params.m_pOpenCL_context = nullptr;
+ m_opencl_failed = true;
+ }
+ }
+
+ if (use_cpu)
{
- const uint32_t first_index = block_index_iter;
- const uint32_t last_index = minimum<uint32_t>(m_total_blocks, first_index + N);
+ const uint32_t N = 4096;
+ for (uint32_t block_index_iter = 0; block_index_iter < m_total_blocks; block_index_iter += N)
+ {
+ const uint32_t first_index = block_index_iter;
+ const uint32_t last_index = minimum<uint32_t>(m_total_blocks, first_index + N);
#ifndef __EMSCRIPTEN__
- m_params.m_pJob_pool->add_job( [this, first_index, last_index] {
+ m_params.m_pJob_pool->add_job([this, first_index, last_index] {
#endif
- for (uint32_t block_index = first_index; block_index < last_index; block_index++)
- {
- const pixel_block &source_blk = get_source_pixel_block(block_index);
+ for (uint32_t block_index = first_index; block_index < last_index; block_index++)
+ {
+ const pixel_block& source_blk = get_source_pixel_block(block_index);
- etc1_optimizer optimizer;
- etc1_optimizer::params optimizer_params;
- etc1_optimizer::results optimizer_results;
-
- if (m_params.m_compression_level == 0)
- optimizer_params.m_quality = cETCQualityFast;
- else if (m_params.m_compression_level == 1)
- optimizer_params.m_quality = cETCQualityMedium;
- else if (m_params.m_compression_level == BASISU_MAX_COMPRESSION_LEVEL)
- optimizer_params.m_quality = cETCQualityUber;
-
- optimizer_params.m_num_src_pixels = 16;
- optimizer_params.m_pSrc_pixels = source_blk.get_ptr();
- optimizer_params.m_perceptual = m_params.m_perceptual;
+ etc1_optimizer optimizer;
+ etc1_optimizer::params optimizer_params;
+ etc1_optimizer::results optimizer_results;
- uint8_t selectors[16];
- optimizer_results.m_pSelectors = selectors;
- optimizer_results.m_n = 16;
+ if (m_params.m_compression_level == 0)
+ optimizer_params.m_quality = cETCQualityFast;
+ else if (m_params.m_compression_level == 1)
+ optimizer_params.m_quality = cETCQualityMedium;
+ else if (m_params.m_compression_level == BASISU_MAX_COMPRESSION_LEVEL)
+ optimizer_params.m_quality = cETCQualityUber;
- optimizer.init(optimizer_params, optimizer_results);
- if (!optimizer.compute())
- BASISU_FRONTEND_VERIFY(false);
+ optimizer_params.m_num_src_pixels = 16;
+ optimizer_params.m_pSrc_pixels = source_blk.get_ptr();
+ optimizer_params.m_perceptual = m_params.m_perceptual;
- etc_block &blk = m_etc1_blocks_etc1s[block_index];
+ uint8_t selectors[16];
+ optimizer_results.m_pSelectors = selectors;
+ optimizer_results.m_n = 16;
- memset(&blk, 0, sizeof(blk));
- blk.set_block_color5_etc1s(optimizer_results.m_block_color_unscaled);
- blk.set_inten_tables_etc1s(optimizer_results.m_block_inten_table);
- blk.set_flip_bit(true);
+ optimizer.init(optimizer_params, optimizer_results);
+ if (!optimizer.compute())
+ BASISU_FRONTEND_VERIFY(false);
- for (uint32_t y = 0; y < 4; y++)
- for (uint32_t x = 0; x < 4; x++)
- blk.set_selector(x, y, selectors[x + y * 4]);
- }
+ etc_block& blk = m_etc1_blocks_etc1s[block_index];
+
+ memset(&blk, 0, sizeof(blk));
+ blk.set_block_color5_etc1s(optimizer_results.m_block_color_unscaled);
+ blk.set_inten_tables_etc1s(optimizer_results.m_block_inten_table);
+ blk.set_flip_bit(true);
+
+ for (uint32_t y = 0; y < 4; y++)
+ for (uint32_t x = 0; x < 4; x++)
+ blk.set_selector(x, y, selectors[x + y * 4]);
+ }
#ifndef __EMSCRIPTEN__
- } );
+ });
#endif
- }
+ }
#ifndef __EMSCRIPTEN__
- m_params.m_pJob_pool->wait_for_all();
+ m_params.m_pJob_pool->wait_for_all();
#endif
- debug_printf("Elapsed time: %3.3f secs\n", tm.get_elapsed_secs());
+ } // use_cpu
+
+ debug_printf("init_etc1_images: Elapsed time: %3.3f secs\n", tm.get_elapsed_secs());
}
void basisu_frontend::init_endpoint_training_vectors()
@@ -889,13 +901,15 @@ namespace basisu
const uint32_t parent_codebook_size = (m_params.m_max_endpoint_clusters >= 256) ? BASISU_ENDPOINT_PARENT_CODEBOOK_SIZE : 0;
uint32_t max_threads = 0;
max_threads = m_params.m_multithreaded ? minimum<int>(std::thread::hardware_concurrency(), cMaxCodebookCreationThreads) : 0;
+ if (m_params.m_pJob_pool)
+ max_threads = minimum<int>((int)m_params.m_pJob_pool->get_total_threads(), max_threads);
- debug_printf("Using %u threads to create codebook\n", max_threads);
+ debug_printf("max_threads: %u\n", max_threads);
bool status = generate_hierarchical_codebook_threaded(m_endpoint_clusterizer,
m_params.m_max_endpoint_clusters, m_use_hierarchical_endpoint_codebooks ? parent_codebook_size : 0,
m_endpoint_clusters,
m_endpoint_parent_clusters,
- max_threads, m_params.m_pJob_pool);
+ max_threads, m_params.m_pJob_pool, true);
BASISU_FRONTEND_VERIFY(status);
if (m_use_hierarchical_endpoint_codebooks)
@@ -940,6 +954,9 @@ namespace basisu
for (uint32_t j = 0; j < cluster.size(); j++)
{
const uint32_t block_index = cluster[j] >> 1;
+
+ BASISU_FRONTEND_VERIFY(block_index < m_block_parent_endpoint_cluster.size());
+
if (!j)
{
parent_cluster_index = m_block_parent_endpoint_cluster[block_index];
@@ -956,6 +973,7 @@ namespace basisu
debug_printf("Total endpoint clusters: %u, parent clusters: %u\n", (uint32_t)m_endpoint_clusters.size(), (uint32_t)m_endpoint_parent_clusters.size());
}
+ // Iterate through each array of endpoint cluster block indices and set the m_block_endpoint_clusters_indices[][] array to indicaste which cluster index each block uses.
void basisu_frontend::generate_block_endpoint_clusters()
{
m_block_endpoint_clusters_indices.resize(m_total_blocks);
@@ -974,11 +992,14 @@ namespace basisu
} // cluster_indices_iter
}
- for (uint32_t block_index = 0; block_index < m_total_blocks; block_index++)
+ if (m_params.m_validate)
{
- uint32_t cluster_0 = m_block_endpoint_clusters_indices[block_index][0];
- uint32_t cluster_1 = m_block_endpoint_clusters_indices[block_index][1];
- BASISU_FRONTEND_VERIFY(cluster_0 == cluster_1);
+ for (uint32_t block_index = 0; block_index < m_total_blocks; block_index++)
+ {
+ uint32_t cluster_0 = m_block_endpoint_clusters_indices[block_index][0];
+ uint32_t cluster_1 = m_block_endpoint_clusters_indices[block_index][1];
+ BASISU_FRONTEND_VERIFY(cluster_0 == cluster_1);
+ }
}
}
@@ -989,6 +1010,7 @@ namespace basisu
m_endpoint_clusters_within_each_parent_cluster.resize(0);
m_endpoint_clusters_within_each_parent_cluster.resize(m_endpoint_parent_clusters.size());
+ // Note: It's possible that some blocks got moved into the same cluster, but live in different parent clusters.
for (uint32_t block_index = 0; block_index < m_total_blocks; block_index++)
{
const uint32_t cluster_index = m_block_endpoint_clusters_indices[block_index][0];
@@ -1125,6 +1147,8 @@ namespace basisu
std::unordered_set<uint32_t> ignore_cluster;
+ uint32_t total_new_clusters = 0;
+
while (num_new_endpoint_clusters)
{
if (m_subblock_endpoint_quant_err_vec.size() == 0)
@@ -1173,10 +1197,14 @@ namespace basisu
cluster_sizes[subblock_to_move.m_cluster_index] -= 2;
ignore_cluster.insert(subblock_to_move.m_cluster_index);
+
+ total_new_clusters++;
num_new_endpoint_clusters--;
}
+ debug_printf("Introduced %i new endpoint clusters\n", total_new_clusters);
+
for (uint32_t i = 0; i < num_orig_endpoint_clusters; i++)
{
uint_vec &cluster_indices = m_endpoint_clusters[i];
@@ -1200,150 +1228,433 @@ namespace basisu
generate_block_endpoint_clusters();
}
+ struct color_rgba_hasher
+ {
+ inline std::size_t operator()(const color_rgba& k) const
+ {
+ uint32_t v = *(const uint32_t*)&k;
+
+ //return bitmix32(v);
+
+ //v ^= (v << 10);
+ //v ^= (v >> 12);
+
+ return v;
+ }
+ };
+
// Given each endpoint cluster, gather all the block pixels which are in that cluster and compute optimized ETC1S endpoints for them.
// TODO: Don't optimize endpoint clusters which haven't changed.
+ // If step>=1, we check to ensure the new endpoint values actually decrease quantization error.
void basisu_frontend::generate_endpoint_codebook(uint32_t step)
{
debug_printf("generate_endpoint_codebook\n");
+
+ interval_timer tm;
+ tm.start();
m_endpoint_cluster_etc_params.resize(m_endpoint_clusters.size());
- const uint32_t N = 128;
- for (uint32_t cluster_index_iter = 0; cluster_index_iter < m_endpoint_clusters.size(); cluster_index_iter += N)
+ bool use_cpu = true;
+ // TODO: Get this working when step>0
+ if (m_params.m_pOpenCL_context && !step)
{
- const uint32_t first_index = cluster_index_iter;
- const uint32_t last_index = minimum<uint32_t>((uint32_t)m_endpoint_clusters.size(), cluster_index_iter + N);
+ const uint32_t total_clusters = m_endpoint_clusters.size();
-#ifndef __EMSCRIPTEN__
- m_params.m_pJob_pool->add_job( [this, first_index, last_index, step ] {
-#endif
+ basisu::vector<cl_pixel_cluster> pixel_clusters(total_clusters);
+
+ std::vector<color_rgba> input_pixels;
+ input_pixels.reserve(m_total_blocks * 16);
- for (uint32_t cluster_index = first_index; cluster_index < last_index; cluster_index++)
+ std::vector<uint32_t> pixel_weights;
+ pixel_weights.reserve(m_total_blocks * 16);
+
+ uint_vec cluster_sizes(total_clusters);
+
+ //typedef basisu::hash_map<color_rgba, uint32_t, color_rgba_hasher> color_hasher_type;
+ //color_hasher_type color_hasher;
+ //color_hasher.reserve(2048);
+
+ interval_timer hash_tm;
+ hash_tm.start();
+
+ basisu::vector<uint32_t> colors, colors2;
+ colors.reserve(65536);
+ colors2.reserve(65536);
+
+ for (uint32_t cluster_index = 0; cluster_index < m_endpoint_clusters.size(); cluster_index++)
+ {
+ const basisu::vector<uint32_t>& cluster_indices = m_endpoint_clusters[cluster_index];
+ assert((cluster_indices.size() & 1) == 0);
+
+#if 0
+ uint64_t first_pixel_index = input_pixels.size();
+ const uint32_t total_pixels = 16 * (cluster_indices.size() / 2);
+
+ input_pixels.resize(input_pixels.size() + total_pixels);
+ pixel_weights.resize(pixel_weights.size() + total_pixels);
+
+ uint64_t dst_ofs = first_pixel_index;
+
+ uint64_t total_r = 0, total_g = 0, total_b = 0;
+ for (uint32_t cluster_indices_iter = 0; cluster_indices_iter < cluster_indices.size(); cluster_indices_iter++)
{
- const basisu::vector<uint32_t>& cluster_indices = m_endpoint_clusters[cluster_index];
+ const uint32_t subblock_index = cluster_indices[cluster_indices_iter] & 1;
+ if (subblock_index)
+ continue;
- BASISU_FRONTEND_VERIFY(cluster_indices.size());
+ const uint32_t block_index = cluster_indices[cluster_indices_iter] >> 1;
+ const color_rgba* pBlock_pixels = get_source_pixel_block(block_index).get_ptr();
- const uint32_t total_pixels = (uint32_t)cluster_indices.size() * 8;
+ for (uint32_t i = 0; i < 16; i++)
+ {
+ input_pixels[dst_ofs] = pBlock_pixels[i];
+ pixel_weights[dst_ofs] = 1;
+ dst_ofs++;
- basisu::vector<color_rgba> cluster_pixels(total_pixels);
+ total_r += pBlock_pixels[i].r;
+ total_g += pBlock_pixels[i].g;
+ total_b += pBlock_pixels[i].b;
+ }
+ }
- for (uint32_t cluster_indices_iter = 0; cluster_indices_iter < cluster_indices.size(); cluster_indices_iter++)
+ //printf("%i %f %f %f\n", cluster_index, total_r / (float)total_pixels, total_g / (float)total_pixels, total_b / (float)total_pixels);
+
+ pixel_clusters[cluster_index].m_first_pixel_index = first_pixel_index;
+ pixel_clusters[cluster_index].m_total_pixels = total_pixels;
+ cluster_sizes[cluster_index] = total_pixels;
+#elif 1
+ colors.resize(cluster_indices.size() * 8);
+ colors2.resize(cluster_indices.size() * 8);
+ uint32_t dst_ofs = 0;
+
+ for (uint32_t cluster_indices_iter = 0; cluster_indices_iter < cluster_indices.size(); cluster_indices_iter++)
+ {
+ const uint32_t subblock_index = cluster_indices[cluster_indices_iter] & 1;
+ if (subblock_index)
+ continue;
+
+ const uint32_t block_index = cluster_indices[cluster_indices_iter] >> 1;
+ const color_rgba* pBlock_pixels = get_source_pixel_block(block_index).get_ptr();
+
+ memcpy(colors.data() + dst_ofs, pBlock_pixels, sizeof(color_rgba) * 16);
+ dst_ofs += 16;
+
+ } // cluster_indices_iter
+
+ uint32_t* pSorted = radix_sort(colors.size(), colors.data(), colors2.data(), 0, 3);
+
+ const uint64_t first_pixel_index = input_pixels.size();
+
+ uint32_t prev_color = 0, cur_weight = 0;
+
+ for (uint32_t i = 0; i < colors.size(); i++)
+ {
+ uint32_t cur_color = pSorted[i];
+ if (cur_color == prev_color)
{
- const uint32_t block_index = cluster_indices[cluster_indices_iter] >> 1;
- const uint32_t subblock_index = cluster_indices[cluster_indices_iter] & 1;
+ if (++cur_weight == 0)
+ cur_weight--;
+ }
+ else
+ {
+ if (cur_weight)
+ {
+ input_pixels.push_back(*(const color_rgba*)&prev_color);
+ pixel_weights.push_back(cur_weight);
+ }
- const bool flipped = true;
+ prev_color = cur_color;
+ cur_weight = 1;
+ }
+ }
- const color_rgba *pBlock_pixels = get_source_pixel_block(block_index).get_ptr();
+ if (cur_weight)
+ {
+ input_pixels.push_back(*(const color_rgba*)&prev_color);
+ pixel_weights.push_back(cur_weight);
+ }
- for (uint32_t pixel_index = 0; pixel_index < 8; pixel_index++)
+ uint32_t total_unique_pixels = (uint32_t)(input_pixels.size() - first_pixel_index);
+
+ pixel_clusters[cluster_index].m_first_pixel_index = first_pixel_index;
+ pixel_clusters[cluster_index].m_total_pixels = total_unique_pixels;
+
+ cluster_sizes[cluster_index] = total_unique_pixels;
+#else
+ color_hasher.reset();
+
+ for (uint32_t cluster_indices_iter = 0; cluster_indices_iter < cluster_indices.size(); cluster_indices_iter++)
+ {
+ const uint32_t subblock_index = cluster_indices[cluster_indices_iter] & 1;
+ if (subblock_index)
+ continue;
+
+ const uint32_t block_index = cluster_indices[cluster_indices_iter] >> 1;
+ const color_rgba* pBlock_pixels = get_source_pixel_block(block_index).get_ptr();
+
+ uint32_t *pPrev_weight = nullptr;
+ color_rgba prev_color;
+
+ {
+ color_rgba cur_color = pBlock_pixels[0];
+ auto res = color_hasher.insert(cur_color, 0);
+
+ uint32_t& weight = (res.first)->second;
+ if (weight != UINT32_MAX)
+ weight++;
+
+ prev_color = cur_color;
+ pPrev_weight = &(res.first)->second;
+ }
+
+ for (uint32_t i = 1; i < 16; i++)
+ {
+ color_rgba cur_color = pBlock_pixels[i];
+
+ if (cur_color == prev_color)
+ {
+ if (*pPrev_weight != UINT32_MAX)
+ *pPrev_weight = *pPrev_weight + 1;
+ }
+ else
{
- const color_rgba &c = pBlock_pixels[g_etc1_pixel_indices[flipped][subblock_index][pixel_index]];
- cluster_pixels[cluster_indices_iter * 8 + pixel_index] = c;
+ auto res = color_hasher.insert(cur_color, 0);
+
+ uint32_t& weight = (res.first)->second;
+ if (weight != UINT32_MAX)
+ weight++;
+
+ prev_color = cur_color;
+ pPrev_weight = &(res.first)->second;
}
}
- endpoint_cluster_etc_params new_subblock_params;
+ } // cluster_indices_iter
+
+ const uint64_t first_pixel_index = input_pixels.size();
+ uint32_t total_unique_pixels = color_hasher.size();
+
+ pixel_clusters[cluster_index].m_first_pixel_index = first_pixel_index;
+ pixel_clusters[cluster_index].m_total_pixels = total_unique_pixels;
+
+ input_pixels.resize(first_pixel_index + total_unique_pixels);
+ pixel_weights.resize(first_pixel_index + total_unique_pixels);
- {
- etc1_optimizer optimizer;
- etc1_solution_coordinates solutions[2];
+ uint32_t j = 0;
+
+ for (auto it = color_hasher.begin(); it != color_hasher.end(); ++it, ++j)
+ {
+ input_pixels[first_pixel_index + j] = it->first;
+ pixel_weights[first_pixel_index + j] = it->second;
+ }
- etc1_optimizer::params cluster_optimizer_params;
- cluster_optimizer_params.m_num_src_pixels = total_pixels;
- cluster_optimizer_params.m_pSrc_pixels = &cluster_pixels[0];
+ cluster_sizes[cluster_index] = total_unique_pixels;
+#endif
- cluster_optimizer_params.m_use_color4 = false;
- cluster_optimizer_params.m_perceptual = m_params.m_perceptual;
+ } // cluster_index
- if (m_params.m_compression_level <= 1)
- cluster_optimizer_params.m_quality = cETCQualityMedium;
- else if (m_params.m_compression_level == BASISU_MAX_COMPRESSION_LEVEL)
- cluster_optimizer_params.m_quality = cETCQualityUber;
+ debug_printf("Total hash time: %3.3f secs\n", hash_tm.get_elapsed_secs());
- etc1_optimizer::results cluster_optimizer_results;
+ debug_printf("Total unique colors: %llu\n", input_pixels.size());
- basisu::vector<uint8_t> cluster_selectors(total_pixels);
- cluster_optimizer_results.m_n = total_pixels;
- cluster_optimizer_results.m_pSelectors = &cluster_selectors[0];
+ uint_vec sorted_cluster_indices_new_to_old(total_clusters);
+ indirect_sort(total_clusters, sorted_cluster_indices_new_to_old.data(), cluster_sizes.data());
+ //for (uint32_t i = 0; i < total_clusters; i++)
+ // sorted_cluster_indices_new_to_old[i] = i;
- optimizer.init(cluster_optimizer_params, cluster_optimizer_results);
+ uint_vec sorted_cluster_indices_old_to_new(total_clusters);
+ for (uint32_t i = 0; i < total_clusters; i++)
+ sorted_cluster_indices_old_to_new[sorted_cluster_indices_new_to_old[i]] = i;
- if (!optimizer.compute())
- BASISU_FRONTEND_VERIFY(false);
+ basisu::vector<cl_pixel_cluster> sorted_pixel_clusters(total_clusters);
+ for (uint32_t i = 0; i < total_clusters; i++)
+ sorted_pixel_clusters[i] = pixel_clusters[sorted_cluster_indices_new_to_old[i]];
- new_subblock_params.m_color_unscaled[0] = cluster_optimizer_results.m_block_color_unscaled;
- new_subblock_params.m_inten_table[0] = cluster_optimizer_results.m_block_inten_table;
- new_subblock_params.m_color_error[0] = cluster_optimizer_results.m_error;
- }
+ uint32_t total_perms = 64;
+ if (m_params.m_compression_level <= 1)
+ total_perms = 16;
+ else if (m_params.m_compression_level == BASISU_MAX_COMPRESSION_LEVEL)
+ total_perms = OPENCL_ENCODE_ETC1S_MAX_PERMS;
- endpoint_cluster_etc_params &prev_etc_params = m_endpoint_cluster_etc_params[cluster_index];
+ basisu::vector<etc_block> output_blocks(total_clusters);
- bool use_new_subblock_params = false;
- if ((!step) || (!prev_etc_params.m_valid))
- use_new_subblock_params = true;
- else
+ if (opencl_encode_etc1s_pixel_clusters(
+ m_params.m_pOpenCL_context,
+ output_blocks.data(),
+ total_clusters,
+ sorted_pixel_clusters.data(),
+ input_pixels.size(),
+ input_pixels.data(),
+ pixel_weights.data(),
+ m_params.m_perceptual, total_perms))
+ {
+ for (uint32_t old_cluster_index = 0; old_cluster_index < m_endpoint_clusters.size(); old_cluster_index++)
+ {
+ const uint32_t new_cluster_index = sorted_cluster_indices_old_to_new[old_cluster_index];
+
+ const etc_block& blk = output_blocks[new_cluster_index];
+
+ endpoint_cluster_etc_params& prev_etc_params = m_endpoint_cluster_etc_params[old_cluster_index];
+
+ prev_etc_params.m_valid = true;
+ etc_block::unpack_color5(prev_etc_params.m_color_unscaled[0], blk.get_base5_color(), false);
+ prev_etc_params.m_inten_table[0] = blk.get_inten_table(0);
+ prev_etc_params.m_color_error[0] = 0; // dummy value - we don't actually use this
+ }
+
+ use_cpu = false;
+ }
+ else
+ {
+ error_printf("basisu_frontend::generate_endpoint_codebook: opencl_encode_etc1s_pixel_clusters() failed! Using CPU.\n");
+ m_params.m_pOpenCL_context = nullptr;
+ m_opencl_failed = true;
+ }
+
+ } // if (opencl_is_available() && m_params.m_use_opencl)
+
+ if (use_cpu)
+ {
+ const uint32_t N = 128;
+ for (uint32_t cluster_index_iter = 0; cluster_index_iter < m_endpoint_clusters.size(); cluster_index_iter += N)
+ {
+ const uint32_t first_index = cluster_index_iter;
+ const uint32_t last_index = minimum<uint32_t>((uint32_t)m_endpoint_clusters.size(), cluster_index_iter + N);
+
+#ifndef __EMSCRIPTEN__
+ m_params.m_pJob_pool->add_job([this, first_index, last_index, step] {
+#endif
+
+ for (uint32_t cluster_index = first_index; cluster_index < last_index; cluster_index++)
{
- assert(prev_etc_params.m_valid);
+ const basisu::vector<uint32_t>& cluster_indices = m_endpoint_clusters[cluster_index];
- uint64_t total_prev_err = 0;
-
+ BASISU_FRONTEND_VERIFY(cluster_indices.size());
+
+ const uint32_t total_pixels = (uint32_t)cluster_indices.size() * 8;
+
+ basisu::vector<color_rgba> cluster_pixels(total_pixels);
+
+ for (uint32_t cluster_indices_iter = 0; cluster_indices_iter < cluster_indices.size(); cluster_indices_iter++)
{
- color_rgba block_colors[4];
+ const uint32_t block_index = cluster_indices[cluster_indices_iter] >> 1;
+ const uint32_t subblock_index = cluster_indices[cluster_indices_iter] & 1;
- etc_block::get_block_colors5(block_colors, prev_etc_params.m_color_unscaled[0], prev_etc_params.m_inten_table[0], false);
+ const bool flipped = true;
- uint64_t total_err = 0;
+ const color_rgba* pBlock_pixels = get_source_pixel_block(block_index).get_ptr();
- for (uint32_t i = 0; i < total_pixels; i++)
+ for (uint32_t pixel_index = 0; pixel_index < 8; pixel_index++)
{
- const color_rgba &c = cluster_pixels[i];
+ const color_rgba& c = pBlock_pixels[g_etc1_pixel_indices[flipped][subblock_index][pixel_index]];
+ cluster_pixels[cluster_indices_iter * 8 + pixel_index] = c;
+ }
+ }
- uint64_t best_err = UINT64_MAX;
- //uint32_t best_index = 0;
+ endpoint_cluster_etc_params new_subblock_params;
+
+ {
+ etc1_optimizer optimizer;
+ etc1_solution_coordinates solutions[2];
+
+ etc1_optimizer::params cluster_optimizer_params;
+ cluster_optimizer_params.m_num_src_pixels = total_pixels;
+ cluster_optimizer_params.m_pSrc_pixels = &cluster_pixels[0];
+
+ cluster_optimizer_params.m_use_color4 = false;
+ cluster_optimizer_params.m_perceptual = m_params.m_perceptual;
+
+ if (m_params.m_compression_level <= 1)
+ cluster_optimizer_params.m_quality = cETCQualityMedium;
+ else if (m_params.m_compression_level == BASISU_MAX_COMPRESSION_LEVEL)
+ cluster_optimizer_params.m_quality = cETCQualityUber;
+
+ etc1_optimizer::results cluster_optimizer_results;
+
+ basisu::vector<uint8_t> cluster_selectors(total_pixels);
+ cluster_optimizer_results.m_n = total_pixels;
+ cluster_optimizer_results.m_pSelectors = &cluster_selectors[0];
+
+ optimizer.init(cluster_optimizer_params, cluster_optimizer_results);
+
+ if (!optimizer.compute())
+ BASISU_FRONTEND_VERIFY(false);
+
+ new_subblock_params.m_color_unscaled[0] = cluster_optimizer_results.m_block_color_unscaled;
+ new_subblock_params.m_inten_table[0] = cluster_optimizer_results.m_block_inten_table;
+ new_subblock_params.m_color_error[0] = cluster_optimizer_results.m_error;
+ }
+
+ endpoint_cluster_etc_params& prev_etc_params = m_endpoint_cluster_etc_params[cluster_index];
+
+ bool use_new_subblock_params = false;
+ if ((!step) || (!prev_etc_params.m_valid))
+ use_new_subblock_params = true;
+ else
+ {
+ assert(prev_etc_params.m_valid);
+
+ uint64_t total_prev_err = 0;
+
+ {
+ color_rgba block_colors[4];
+
+ etc_block::get_block_colors5(block_colors, prev_etc_params.m_color_unscaled[0], prev_etc_params.m_inten_table[0], false);
- for (uint32_t s = 0; s < 4; s++)
+ uint64_t total_err = 0;
+
+ for (uint32_t i = 0; i < total_pixels; i++)
{
- uint64_t err = color_distance(m_params.m_perceptual, c, block_colors[s], false);
- if (err < best_err)
+ const color_rgba& c = cluster_pixels[i];
+
+ uint64_t best_err = UINT64_MAX;
+ //uint32_t best_index = 0;
+
+ for (uint32_t s = 0; s < 4; s++)
{
- best_err = err;
- //best_index = s;
+ uint64_t err = color_distance(m_params.m_perceptual, c, block_colors[s], false);
+ if (err < best_err)
+ {
+ best_err = err;
+ //best_index = s;
+ }
}
+
+ total_err += best_err;
}
- total_err += best_err;
+ total_prev_err += total_err;
}
- total_prev_err += total_err;
+ // See if we should update this cluster's endpoints (if the error has actually fallen)
+ if (total_prev_err > new_subblock_params.m_color_error[0])
+ {
+ use_new_subblock_params = true;
+ }
}
- // See if we should update this cluster's endpoints (if the error has actually fallen)
- if (total_prev_err > new_subblock_params.m_color_error[0])
+ if (use_new_subblock_params)
{
- use_new_subblock_params = true;
- }
- }
+ new_subblock_params.m_valid = true;
- if (use_new_subblock_params)
- {
- new_subblock_params.m_valid = true;
+ prev_etc_params = new_subblock_params;
+ }
- prev_etc_params = new_subblock_params;
- }
-
- } // cluster_index
+ } // cluster_index
#ifndef __EMSCRIPTEN__
- } );
+ });
#endif
- } // cluster_index_iter
+ } // cluster_index_iter
#ifndef __EMSCRIPTEN__
- m_params.m_pJob_pool->wait_for_all();
+ m_params.m_pJob_pool->wait_for_all();
#endif
+ }
+
+ debug_printf("Elapsed time: %3.3f secs\n", tm.get_elapsed_secs());
}
bool basisu_frontend::check_etc1s_constraints() const
@@ -1373,6 +1684,8 @@ namespace basisu
return true;
}
+ // For each block, determine which ETC1S endpoint cluster can encode that block with lowest error.
+ // This reassigns blocks to different endpoint clusters.
uint32_t basisu_frontend::refine_endpoint_clusterization()
{
debug_printf("refine_endpoint_clusterization\n");
@@ -1380,6 +1693,8 @@ namespace basisu
if (m_use_hierarchical_endpoint_codebooks)
compute_endpoint_clusters_within_each_parent_cluster();
+ // Note: It's possible that an endpoint cluster may live in more than one parent cluster after the first refinement step.
+
basisu::vector<vec2U> block_clusters(m_total_blocks);
for (int cluster_index = 0; cluster_index < static_cast<int>(m_endpoint_clusters.size()); cluster_index++)
@@ -1400,156 +1715,255 @@ namespace basisu
// Create a new endpoint clusterization
+ interval_timer tm;
+ tm.start();
+
uint_vec best_cluster_indices(m_total_blocks);
- const uint32_t N = 1024;
- for (uint32_t block_index_iter = 0; block_index_iter < m_total_blocks; block_index_iter += N)
+ bool use_cpu = true;
+ // TODO: Support non-hierarchical endpoint codebooks here
+ if (m_params.m_pOpenCL_context && m_use_hierarchical_endpoint_codebooks)
{
- const uint32_t first_index = block_index_iter;
- const uint32_t last_index = minimum<uint32_t>(m_total_blocks, first_index + N);
+ // For the OpenCL kernel, we order the parent endpoint clusters by smallest to largest for efficiency.
+ // We also prepare an array of block info structs that point into this new parent endpoint cluster array.
+ const uint32_t total_parent_clusters = m_endpoint_clusters_within_each_parent_cluster.size();
-#ifndef __EMSCRIPTEN__
- m_params.m_pJob_pool->add_job( [this, first_index, last_index, &best_cluster_indices, &block_clusters] {
-#endif
+ basisu::vector<cl_block_info_struct> cl_block_info_structs(m_total_blocks);
+
+ // the size of each parent cluster, in total clusters
+ uint_vec parent_cluster_sizes(total_parent_clusters);
+ for (uint32_t i = 0; i < total_parent_clusters; i++)
+ parent_cluster_sizes[i] = m_endpoint_clusters_within_each_parent_cluster[i].size();
+
+ uint_vec first_parent_cluster_ofs(total_parent_clusters);
+ uint32_t cur_ofs = 0;
+ for (uint32_t i = 0; i < total_parent_clusters; i++)
+ {
+ first_parent_cluster_ofs[i] = cur_ofs;
- for (uint32_t block_index = first_index; block_index < last_index; block_index++)
+ cur_ofs += parent_cluster_sizes[i];
+ }
+
+ // Note: total_actual_endpoint_clusters is not necessarly equal to m_endpoint_clusters.size(), because clusters may live in multiple parent clusters after the first refinement step.
+ BASISU_FRONTEND_VERIFY(cur_ofs >= m_endpoint_clusters.size());
+ const uint32_t total_actual_endpoint_clusters = cur_ofs;
+ basisu::vector<cl_endpoint_cluster_struct> cl_endpoint_cluster_structs(total_actual_endpoint_clusters);
+
+ for (uint32_t i = 0; i < total_parent_clusters; i++)
+ {
+ const uint32_t dst_ofs = first_parent_cluster_ofs[i];
+
+ const uint32_t parent_cluster_size = parent_cluster_sizes[i];
+
+ assert(m_endpoint_clusters_within_each_parent_cluster[i].size() == parent_cluster_size);
+
+ for (uint32_t j = 0; j < parent_cluster_size; j++)
{
- const uint32_t cluster_index = block_clusters[block_index][0];
- BASISU_FRONTEND_VERIFY(cluster_index == block_clusters[block_index][1]);
+ const uint32_t endpoint_cluster_index = m_endpoint_clusters_within_each_parent_cluster[i][j];
- const color_rgba *pSubblock_pixels = get_source_pixel_block(block_index).get_ptr();
- const uint32_t num_subblock_pixels = 16;
+ color_rgba cluster_etc_base_color(m_endpoint_cluster_etc_params[endpoint_cluster_index].m_color_unscaled[0]);
+ uint32_t cluster_etc_inten = m_endpoint_cluster_etc_params[endpoint_cluster_index].m_inten_table[0];
- uint64_t best_cluster_err = INT64_MAX;
- uint32_t best_cluster_index = 0;
+ cl_endpoint_cluster_structs[dst_ofs + j].m_unscaled_color = cluster_etc_base_color;
+ cl_endpoint_cluster_structs[dst_ofs + j].m_etc_inten = (uint8_t)cluster_etc_inten;
+ cl_endpoint_cluster_structs[dst_ofs + j].m_cluster_index = (uint16_t)endpoint_cluster_index;
+ }
+ }
+
+ for (uint32_t block_index = 0; block_index < m_total_blocks; block_index++)
+ {
+ const uint32_t block_parent_endpoint_cluster_index = m_block_parent_endpoint_cluster[block_index];
+
+ cl_block_info_structs[block_index].m_num_clusters = (uint16_t)(parent_cluster_sizes[block_parent_endpoint_cluster_index]);
+ cl_block_info_structs[block_index].m_first_cluster_ofs = (uint16_t)(first_parent_cluster_ofs[block_parent_endpoint_cluster_index]);
- const uint32_t block_parent_endpoint_cluster_index = m_block_parent_endpoint_cluster.size() ? m_block_parent_endpoint_cluster[block_index] : 0;
- const uint_vec *pCluster_indices = m_endpoint_clusters_within_each_parent_cluster.size() ? &m_endpoint_clusters_within_each_parent_cluster[block_parent_endpoint_cluster_index] : nullptr;
+ const uint32_t block_cluster_index = block_clusters[block_index][0];
+ cl_block_info_structs[block_index].m_cur_cluster_index = (uint16_t)block_cluster_index;
+ cl_block_info_structs[block_index].m_cur_cluster_etc_inten = (uint8_t)m_endpoint_cluster_etc_params[block_cluster_index].m_inten_table[0];
+ }
+
+ uint_vec block_cluster_indices(m_total_blocks);
+ for (uint32_t i = 0; i < m_total_blocks; i++)
+ block_cluster_indices[i] = block_clusters[i][0];
- const uint32_t total_clusters = m_use_hierarchical_endpoint_codebooks ? (uint32_t)pCluster_indices->size() : (uint32_t)m_endpoint_clusters.size();
+ uint_vec sorted_block_indices(m_total_blocks);
+ indirect_sort(m_total_blocks, sorted_block_indices.data(), block_cluster_indices.data());
- for (uint32_t i = 0; i < total_clusters; i++)
+ bool status = opencl_refine_endpoint_clusterization(
+ m_params.m_pOpenCL_context,
+ cl_block_info_structs.data(),
+ total_actual_endpoint_clusters,
+ cl_endpoint_cluster_structs.data(),
+ sorted_block_indices.data(),
+ best_cluster_indices.data(),
+ m_params.m_perceptual);
+
+ if (status)
+ {
+ use_cpu = false;
+ }
+ else
+ {
+ error_printf("basisu_frontend::refine_endpoint_clusterization: opencl_refine_endpoint_clusterization() failed! Using CPU.\n");
+ m_params.m_pOpenCL_context = nullptr;
+ m_opencl_failed = true;
+ }
+ }
+
+ if (use_cpu)
+ {
+ const uint32_t N = 1024;
+ for (uint32_t block_index_iter = 0; block_index_iter < m_total_blocks; block_index_iter += N)
+ {
+ const uint32_t first_index = block_index_iter;
+ const uint32_t last_index = minimum<uint32_t>(m_total_blocks, first_index + N);
+
+#ifndef __EMSCRIPTEN__
+ m_params.m_pJob_pool->add_job([this, first_index, last_index, &best_cluster_indices, &block_clusters] {
+#endif
+
+ for (uint32_t block_index = first_index; block_index < last_index; block_index++)
{
- const uint32_t cluster_iter = m_use_hierarchical_endpoint_codebooks ? (*pCluster_indices)[i] : i;
+ const uint32_t cluster_index = block_clusters[block_index][0];
+ BASISU_FRONTEND_VERIFY(cluster_index == block_clusters[block_index][1]);
- color_rgba cluster_etc_base_color(m_endpoint_cluster_etc_params[cluster_iter].m_color_unscaled[0]);
- uint32_t cluster_etc_inten = m_endpoint_cluster_etc_params[cluster_iter].m_inten_table[0];
+ const color_rgba* pSubblock_pixels = get_source_pixel_block(block_index).get_ptr();
+ const uint32_t num_subblock_pixels = 16;
- uint64_t total_err = 0;
+ uint64_t best_cluster_err = INT64_MAX;
+ uint32_t best_cluster_index = 0;
- const uint32_t low_selector = 0;//subblock_etc_params_vec[j].m_low_selectors[0];
- const uint32_t high_selector = 3;//subblock_etc_params_vec[j].m_high_selectors[0];
- color_rgba subblock_colors[4];
- // Can't assign it here - may result in too much error when selector quant occurs
- if (cluster_etc_inten > m_endpoint_cluster_etc_params[cluster_index].m_inten_table[0])
- {
- total_err = INT64_MAX;
- goto skip_cluster;
- }
+ const uint32_t block_parent_endpoint_cluster_index = m_block_parent_endpoint_cluster.size() ? m_block_parent_endpoint_cluster[block_index] : 0;
+ const uint_vec* pCluster_indices = m_endpoint_clusters_within_each_parent_cluster.size() ? &m_endpoint_clusters_within_each_parent_cluster[block_parent_endpoint_cluster_index] : nullptr;
- etc_block::get_block_colors5(subblock_colors, cluster_etc_base_color, cluster_etc_inten);
-
-#if 0
- for (uint32_t p = 0; p < num_subblock_pixels; p++)
+ const uint32_t total_clusters = m_use_hierarchical_endpoint_codebooks ? (uint32_t)pCluster_indices->size() : (uint32_t)m_endpoint_clusters.size();
+
+ for (uint32_t i = 0; i < total_clusters; i++)
{
- uint64_t best_err = UINT64_MAX;
+ const uint32_t cluster_iter = m_use_hierarchical_endpoint_codebooks ? (*pCluster_indices)[i] : i;
- for (uint32_t r = low_selector; r <= high_selector; r++)
+ color_rgba cluster_etc_base_color(m_endpoint_cluster_etc_params[cluster_iter].m_color_unscaled[0]);
+ uint32_t cluster_etc_inten = m_endpoint_cluster_etc_params[cluster_iter].m_inten_table[0];
+
+ uint64_t total_err = 0;
+
+ const uint32_t low_selector = 0;//subblock_etc_params_vec[j].m_low_selectors[0];
+ const uint32_t high_selector = 3;//subblock_etc_params_vec[j].m_high_selectors[0];
+ color_rgba subblock_colors[4];
+ // Can't assign it here - may result in too much error when selector quant occurs
+ if (cluster_etc_inten > m_endpoint_cluster_etc_params[cluster_index].m_inten_table[0])
{
- uint64_t err = color_distance(m_params.m_perceptual, pSubblock_pixels[p], subblock_colors[r], false);
- best_err = minimum(best_err, err);
- if (!best_err)
- break;
+ total_err = INT64_MAX;
+ goto skip_cluster;
}
- total_err += best_err;
- if (total_err > best_cluster_err)
- break;
- } // p
-#else
- if (m_params.m_perceptual)
- {
- if (!g_cpu_supports_sse41)
+ etc_block::get_block_colors5(subblock_colors, cluster_etc_base_color, cluster_etc_inten);
+
+#if 0
+ for (uint32_t p = 0; p < num_subblock_pixels; p++)
{
- for (uint32_t p = 0; p < num_subblock_pixels; p++)
+ uint64_t best_err = UINT64_MAX;
+
+ for (uint32_t r = low_selector; r <= high_selector; r++)
{
- uint64_t best_err = UINT64_MAX;
+ uint64_t err = color_distance(m_params.m_perceptual, pSubblock_pixels[p], subblock_colors[r], false);
+ best_err = minimum(best_err, err);
+ if (!best_err)
+ break;
+ }
- for (uint32_t r = low_selector; r <= high_selector; r++)
+ total_err += best_err;
+ if (total_err > best_cluster_err)
+ break;
+ } // p
+#else
+ if (m_params.m_perceptual)
+ {
+ if (!g_cpu_supports_sse41)
+ {
+ for (uint32_t p = 0; p < num_subblock_pixels; p++)
{
- uint64_t err = color_distance(true, pSubblock_pixels[p], subblock_colors[r], false);
- best_err = minimum(best_err, err);
- if (!best_err)
+ uint64_t best_err = UINT64_MAX;
+
+ for (uint32_t r = low_selector; r <= high_selector; r++)
+ {
+ uint64_t err = color_distance(true, pSubblock_pixels[p], subblock_colors[r], false);
+ best_err = minimum(best_err, err);
+ if (!best_err)
+ break;
+ }
+
+ total_err += best_err;
+ if (total_err > best_cluster_err)
break;
- }
-
- total_err += best_err;
- if (total_err > best_cluster_err)
- break;
- } // p
- }
- else
- {
+ } // p
+ }
+ else
+ {
#if BASISU_SUPPORT_SSE
- find_lowest_error_perceptual_rgb_4_N_sse41((int64_t*)&total_err, subblock_colors, pSubblock_pixels, num_subblock_pixels, best_cluster_err);
+ find_lowest_error_perceptual_rgb_4_N_sse41((int64_t*)&total_err, subblock_colors, pSubblock_pixels, num_subblock_pixels, best_cluster_err);
#endif
+ }
}
- }
- else
- {
- if (!g_cpu_supports_sse41)
+ else
{
- for (uint32_t p = 0; p < num_subblock_pixels; p++)
+ if (!g_cpu_supports_sse41)
{
- uint64_t best_err = UINT64_MAX;
-
- for (uint32_t r = low_selector; r <= high_selector; r++)
+ for (uint32_t p = 0; p < num_subblock_pixels; p++)
{
- uint64_t err = color_distance(false, pSubblock_pixels[p], subblock_colors[r], false);
- best_err = minimum(best_err, err);
- if (!best_err)
+ uint64_t best_err = UINT64_MAX;
+
+ for (uint32_t r = low_selector; r <= high_selector; r++)
+ {
+ uint64_t err = color_distance(false, pSubblock_pixels[p], subblock_colors[r], false);
+ best_err = minimum(best_err, err);
+ if (!best_err)
+ break;
+ }
+
+ total_err += best_err;
+ if (total_err > best_cluster_err)
break;
- }
-
- total_err += best_err;
- if (total_err > best_cluster_err)
- break;
- } // p
- }
- else
- {
+ } // p
+ }
+ else
+ {
#if BASISU_SUPPORT_SSE
- find_lowest_error_linear_rgb_4_N_sse41((int64_t*)&total_err, subblock_colors, pSubblock_pixels, num_subblock_pixels, best_cluster_err);
+ find_lowest_error_linear_rgb_4_N_sse41((int64_t*)&total_err, subblock_colors, pSubblock_pixels, num_subblock_pixels, best_cluster_err);
#endif
+ }
}
- }
#endif
- skip_cluster:
- if ((total_err < best_cluster_err) ||
- ((cluster_iter == cluster_index) && (total_err == best_cluster_err)))
- {
- best_cluster_err = total_err;
- best_cluster_index = cluster_iter;
-
- if (!best_cluster_err)
- break;
- }
- } // j
-
- best_cluster_indices[block_index] = best_cluster_index;
+ skip_cluster:
+ if ((total_err < best_cluster_err) ||
+ ((cluster_iter == cluster_index) && (total_err == best_cluster_err)))
+ {
+ best_cluster_err = total_err;
+ best_cluster_index = cluster_iter;
- } // block_index
+ if (!best_cluster_err)
+ break;
+ }
+ } // j
+
+ best_cluster_indices[block_index] = best_cluster_index;
+
+ } // block_index
#ifndef __EMSCRIPTEN__
- } );
+ });
#endif
-
- } // block_index_iter
+
+ } // block_index_iter
#ifndef __EMSCRIPTEN__
- m_params.m_pJob_pool->wait_for_all();
+ m_params.m_pJob_pool->wait_for_all();
#endif
+
+ } // use_cpu
+
+ debug_printf("refine_endpoint_clusterization time: %3.3f secs\n", tm.get_elapsed_secs());
basisu::vector<typename basisu::vector<uint32_t> > optimized_endpoint_clusters(m_endpoint_clusters.size());
uint32_t total_subblocks_reassigned = 0;
@@ -1647,51 +2061,91 @@ namespace basisu
void basisu_frontend::create_initial_packed_texture()
{
debug_printf("create_initial_packed_texture\n");
+
+ interval_timer tm;
+ tm.start();
- const uint32_t N = 4096;
- for (uint32_t block_index_iter = 0; block_index_iter < m_total_blocks; block_index_iter += N)
+ bool use_cpu = true;
+
+ if ((m_params.m_pOpenCL_context) && (opencl_is_available()))
{
- const uint32_t first_index = block_index_iter;
- const uint32_t last_index = minimum<uint32_t>(m_total_blocks, first_index + N);
+ basisu::vector<color_rgba> block_etc5_color_intens(m_total_blocks);
+
+ for (uint32_t block_index = 0; block_index < m_total_blocks; block_index++)
+ {
+ uint32_t cluster0 = m_block_endpoint_clusters_indices[block_index][0];
+
+ const color_rgba& color_unscaled = m_endpoint_cluster_etc_params[cluster0].m_color_unscaled[0];
+ uint32_t inten = m_endpoint_cluster_etc_params[cluster0].m_inten_table[0];
+
+ block_etc5_color_intens[block_index].set(color_unscaled.r, color_unscaled.g, color_unscaled.b, inten);
+ }
+
+ bool status = opencl_determine_selectors(m_params.m_pOpenCL_context, block_etc5_color_intens.data(),
+ m_encoded_blocks.data(),
+ m_params.m_perceptual);
+ if (!status)
+ {
+ error_printf("basisu_frontend::create_initial_packed_texture: opencl_determine_selectors() failed! Using CPU.\n");
+ m_params.m_pOpenCL_context = nullptr;
+ m_opencl_failed = true;
+ }
+ else
+ {
+ use_cpu = false;
+ }
+ }
+
+ if (use_cpu)
+ {
+ const uint32_t N = 4096;
+ for (uint32_t block_index_iter = 0; block_index_iter < m_total_blocks; block_index_iter += N)
+ {
+ const uint32_t first_index = block_index_iter;
+ const uint32_t last_index = minimum<uint32_t>(m_total_blocks, first_index + N);
#ifndef __EMSCRIPTEN__
- m_params.m_pJob_pool->add_job( [this, first_index, last_index] {
+ m_params.m_pJob_pool->add_job([this, first_index, last_index] {
#endif
-
- for (uint32_t block_index = first_index; block_index < last_index; block_index++)
- {
- uint32_t cluster0 = m_block_endpoint_clusters_indices[block_index][0];
- uint32_t cluster1 = m_block_endpoint_clusters_indices[block_index][1];
- BASISU_FRONTEND_VERIFY(cluster0 == cluster1);
- const color_rgba *pSource_pixels = get_source_pixel_block(block_index).get_ptr();
+ for (uint32_t block_index = first_index; block_index < last_index; block_index++)
+ {
+ uint32_t cluster0 = m_block_endpoint_clusters_indices[block_index][0];
+ uint32_t cluster1 = m_block_endpoint_clusters_indices[block_index][1];
+ BASISU_FRONTEND_VERIFY(cluster0 == cluster1);
- etc_block &blk = m_encoded_blocks[block_index];
+ const color_rgba* pSource_pixels = get_source_pixel_block(block_index).get_ptr();
- color_rgba unscaled[2] = { m_endpoint_cluster_etc_params[cluster0].m_color_unscaled[0], m_endpoint_cluster_etc_params[cluster1].m_color_unscaled[0] };
- uint32_t inten[2] = { m_endpoint_cluster_etc_params[cluster0].m_inten_table[0], m_endpoint_cluster_etc_params[cluster1].m_inten_table[0] };
-
- blk.set_block_color5(unscaled[0], unscaled[1]);
- blk.set_flip_bit(true);
+ etc_block& blk = m_encoded_blocks[block_index];
- blk.set_inten_table(0, inten[0]);
- blk.set_inten_table(1, inten[1]);
+ color_rgba unscaled[2] = { m_endpoint_cluster_etc_params[cluster0].m_color_unscaled[0], m_endpoint_cluster_etc_params[cluster1].m_color_unscaled[0] };
+ uint32_t inten[2] = { m_endpoint_cluster_etc_params[cluster0].m_inten_table[0], m_endpoint_cluster_etc_params[cluster1].m_inten_table[0] };
- blk.determine_selectors(pSource_pixels, m_params.m_perceptual);
-
- } // block_index
+ blk.set_block_color5(unscaled[0], unscaled[1]);
+ blk.set_flip_bit(true);
+
+ blk.set_inten_table(0, inten[0]);
+ blk.set_inten_table(1, inten[1]);
+
+ blk.determine_selectors(pSource_pixels, m_params.m_perceptual);
+
+ } // block_index
#ifndef __EMSCRIPTEN__
- } );
+ });
#endif
- } // block_index_iter
+ } // block_index_iter
#ifndef __EMSCRIPTEN__
- m_params.m_pJob_pool->wait_for_all();
+ m_params.m_pJob_pool->wait_for_all();
#endif
+ } // use_cpu
+
m_orig_encoded_blocks = m_encoded_blocks;
+
+ debug_printf("Elapsed time: %3.3f secs\n", tm.get_elapsed_secs());
}
void basisu_frontend::compute_selector_clusters_within_each_parent_cluster()
@@ -1739,8 +2193,7 @@ namespace basisu
void basisu_frontend::generate_selector_clusters()
{
debug_printf("generate_selector_clusters\n");
-
- typedef vec<16, float> vec16F;
+
typedef tree_vector_quant<vec16F> vec16F_clusterizer;
vec16F_clusterizer::array_of_weighted_training_vecs training_vecs(m_total_blocks);
@@ -1800,12 +2253,14 @@ namespace basisu
uint32_t max_threads = 0;
max_threads = m_params.m_multithreaded ? minimum<int>(std::thread::hardware_concurrency(), cMaxCodebookCreationThreads) : 0;
+ if (m_params.m_pJob_pool)
+ max_threads = minimum<int>((int)m_params.m_pJob_pool->get_total_threads(), max_threads);
bool status = generate_hierarchical_codebook_threaded(selector_clusterizer,
m_params.m_max_selector_clusters, m_use_hierarchical_selector_codebooks ? parent_codebook_size : 0,
m_selector_cluster_block_indices,
m_selector_parent_cluster_block_indices,
- max_threads, m_params.m_pJob_pool);
+ max_threads, m_params.m_pJob_pool, false);
BASISU_FRONTEND_VERIFY(status);
if (m_use_hierarchical_selector_codebooks)
@@ -1864,235 +2319,105 @@ namespace basisu
{
debug_printf("create_optimized_selector_codebook\n");
+ interval_timer tm;
+ tm.start();
+
const uint32_t total_selector_clusters = (uint32_t)m_selector_cluster_block_indices.size();
debug_printf("Total selector clusters (from m_selector_cluster_block_indices.size()): %u\n", (uint32_t)m_selector_cluster_block_indices.size());
m_optimized_cluster_selectors.resize(total_selector_clusters);
+
+ uint32_t total_clusters_processed = 0;
- if ((m_params.m_pGlobal_sel_codebook) && (!m_params.m_use_hybrid_selector_codebooks))
+ // For each selector codebook entry, and for each of the 4x4 selectors, determine which selector minimizes the error across all the blocks that use that quantized selector.
+ const uint32_t N = 256;
+ for (uint32_t cluster_index_iter = 0; cluster_index_iter < total_selector_clusters; cluster_index_iter += N)
{
- uint32_t total_clusters_processed = 0;
-
- m_optimized_cluster_selector_global_cb_ids.resize(total_selector_clusters);
+ const uint32_t first_index = cluster_index_iter;
+ const uint32_t last_index = minimum<uint32_t>((uint32_t)total_selector_clusters, cluster_index_iter + N);
- const uint32_t N = 256;
- for (uint32_t cluster_index_iter = 0; cluster_index_iter < total_selector_clusters; cluster_index_iter += N)
- {
- const uint32_t first_index = cluster_index_iter;
- const uint32_t last_index = minimum<uint32_t>((uint32_t)total_selector_clusters, cluster_index_iter + N);
-
-#ifndef __EMSCRIPTEN__
- m_params.m_pJob_pool->add_job( [this, first_index, last_index, &total_clusters_processed, &total_selector_clusters] {
-#endif
-
- for (uint32_t cluster_index = first_index; cluster_index < last_index; cluster_index++)
- {
- const basisu::vector<uint32_t> &cluster_block_indices = m_selector_cluster_block_indices[cluster_index];
-
- if (!cluster_block_indices.size())
- continue;
-
- etc_block_vec etc_blocks;
- pixel_block_vec pixel_blocks;
-
- for (uint32_t cluster_block_index = 0; cluster_block_index < cluster_block_indices.size(); cluster_block_index++)
- {
- const uint32_t block_index = cluster_block_indices[cluster_block_index];
-
- etc_blocks.push_back(m_encoded_blocks[block_index]);
-
- pixel_blocks.push_back(get_source_pixel_block(block_index));
- }
-
- uint32_t palette_index;
- basist::etc1_global_palette_entry_modifier palette_modifier;
-
- #if 0
- m_params.m_pGlobal_sel_codebook->find_best_entry(etc_blocks.size(), pixel_blocks.get_ptr(), etc_blocks.get_ptr(),
- palette_index, palette_modifier,
- m_params.m_perceptual, 1 << m_params.m_num_global_sel_codebook_pal_bits, 1 << m_params.m_num_global_sel_codebook_mod_bits);
- #else
- etc1_global_selector_codebook_find_best_entry(*m_params.m_pGlobal_sel_codebook,
- (uint32_t)etc_blocks.size(), &pixel_blocks[0], &etc_blocks[0],
- palette_index, palette_modifier,
- m_params.m_perceptual, 1 << m_params.m_num_global_sel_codebook_pal_bits, 1 << m_params.m_num_global_sel_codebook_mod_bits);
- #endif
-
- m_optimized_cluster_selector_global_cb_ids[cluster_index].set(palette_index, palette_modifier);
-
- basist::etc1_selector_palette_entry pal_entry(m_params.m_pGlobal_sel_codebook->get_entry(palette_index, palette_modifier));
-
- for (uint32_t y = 0; y < 4; y++)
- for (uint32_t x = 0; x < 4; x++)
- m_optimized_cluster_selectors[cluster_index].set_selector(x, y, pal_entry(x, y));
-
- {
- std::lock_guard<std::mutex> lock(m_lock);
-
- total_clusters_processed++;
- if ((total_clusters_processed % 63) == 0)
- debug_printf("Global selector palette optimization: %3.1f%% complete\n", total_clusters_processed * 100.0f / total_selector_clusters);
- }
-
- } // cluster_index
-
-#ifndef __EMSCRIPTEN__
- } );
+#ifndef __EMSCRIPTEN__
+ m_params.m_pJob_pool->add_job([this, first_index, last_index, &total_clusters_processed, &total_selector_clusters] {
#endif
- } // cluster_index_iter
-
-#ifndef __EMSCRIPTEN__
- m_params.m_pJob_pool->wait_for_all();
-#endif
- }
- else
- {
- const bool uses_hybrid_sel_codebook = ((m_params.m_pGlobal_sel_codebook) && (m_params.m_use_hybrid_selector_codebooks));
- if (uses_hybrid_sel_codebook)
- {
- m_selector_cluster_uses_global_cb.resize(total_selector_clusters);
- m_optimized_cluster_selector_global_cb_ids.resize(total_selector_clusters);
- }
+ for (uint32_t cluster_index = first_index; cluster_index < last_index; cluster_index++)
+ {
+ const basisu::vector<uint32_t>& cluster_block_indices = m_selector_cluster_block_indices[cluster_index];
- uint32_t total_clusters_processed = 0;
+ if (!cluster_block_indices.size())
+ continue;
- // For each selector codebook entry, and for each of the 4x4 selectors, determine which selector minimizes the error across all the blocks that use that quantized selector.
+ uint64_t overall_best_err = 0;
- const uint32_t N = 256;
- for (uint32_t cluster_index_iter = 0; cluster_index_iter < total_selector_clusters; cluster_index_iter += N)
- {
- const uint32_t first_index = cluster_index_iter;
- const uint32_t last_index = minimum<uint32_t>((uint32_t)total_selector_clusters, cluster_index_iter + N);
+ uint64_t total_err[4][4][4];
+ clear_obj(total_err);
-#ifndef __EMSCRIPTEN__
- m_params.m_pJob_pool->add_job( [this, first_index, last_index, &uses_hybrid_sel_codebook, &total_clusters_processed, &total_selector_clusters] {
-#endif
-
- for (uint32_t cluster_index = first_index; cluster_index < last_index; cluster_index++)
+ for (uint32_t cluster_block_index = 0; cluster_block_index < cluster_block_indices.size(); cluster_block_index++)
{
- const basisu::vector<uint32_t> &cluster_block_indices = m_selector_cluster_block_indices[cluster_index];
+ const uint32_t block_index = cluster_block_indices[cluster_block_index];
- if (!cluster_block_indices.size())
- continue;
+ const etc_block& blk = m_encoded_blocks[block_index];
- uint64_t overall_best_err = 0;
+ color_rgba blk_colors[4];
+ blk.get_block_colors(blk_colors, 0);
for (uint32_t y = 0; y < 4; y++)
{
for (uint32_t x = 0; x < 4; x++)
{
- uint64_t best_err = UINT64_MAX;
- uint32_t best_s = 0;
+ const color_rgba& orig_color = get_source_pixel_block(block_index)(x, y);
- for (uint32_t s = 0; s < 4; s++)
+ if (m_params.m_perceptual)
{
- uint32_t total_err = 0;
-
- for (uint32_t cluster_block_index = 0; cluster_block_index < cluster_block_indices.size(); cluster_block_index++)
- {
- const uint32_t block_index = cluster_block_indices[cluster_block_index];
-
- const etc_block &blk = m_encoded_blocks[block_index];
-
- const color_rgba &orig_color = get_source_pixel_block(block_index)(x, y);
-
- color_rgba block_color;
- blk.get_block_color(block_color, blk.get_subblock_index(x, y), s);
- total_err += color_distance(m_params.m_perceptual, block_color, orig_color, false);
-
- if (total_err > best_err)
- break;
-
- } // block_index
-
- if (total_err < best_err)
- {
- best_err = total_err;
- best_s = s;
- if (!best_err)
- break;
- }
-
- } // s
-
- m_optimized_cluster_selectors[cluster_index].set_selector(x, y, best_s);
-
- overall_best_err += best_err;
-
+ for (uint32_t s = 0; s < 4; s++)
+ total_err[y][x][s] += color_distance(true, blk_colors[s], orig_color, false);
+ }
+ else
+ {
+ for (uint32_t s = 0; s < 4; s++)
+ total_err[y][x][s] += color_distance(false, blk_colors[s], orig_color, false);
+ }
} // x
} // y
- if (uses_hybrid_sel_codebook)
- {
- etc_block_vec etc_blocks;
- pixel_block_vec pixel_blocks;
+ } // cluster_block_index
- for (uint32_t cluster_block_index = 0; cluster_block_index < cluster_block_indices.size(); cluster_block_index++)
- {
- const uint32_t block_index = cluster_block_indices[cluster_block_index];
-
- etc_blocks.push_back(m_encoded_blocks[block_index]);
-
- pixel_blocks.push_back(get_source_pixel_block(block_index));
- }
-
- uint32_t palette_index;
- basist::etc1_global_palette_entry_modifier palette_modifier;
-
- #if 0
- uint64_t best_global_cb_err = m_params.m_pGlobal_sel_codebook->find_best_entry(etc_blocks.size(), pixel_blocks.get_ptr(), etc_blocks.get_ptr(),
- palette_index, palette_modifier,
- m_params.m_perceptual, 1 << m_params.m_num_global_sel_codebook_pal_bits, 1 << m_params.m_num_global_sel_codebook_mod_bits);
- #else
- uint64_t best_global_cb_err = etc1_global_selector_codebook_find_best_entry(*m_params.m_pGlobal_sel_codebook, (uint32_t)etc_blocks.size(), &pixel_blocks[0], &etc_blocks[0],
- palette_index, palette_modifier,
- m_params.m_perceptual, 1 << m_params.m_num_global_sel_codebook_pal_bits, 1 << m_params.m_num_global_sel_codebook_mod_bits);
- #endif
+ for (uint32_t y = 0; y < 4; y++)
+ {
+ for (uint32_t x = 0; x < 4; x++)
+ {
+ uint64_t best_err = total_err[y][x][0];
+ uint8_t best_sel = 0;
- if (best_global_cb_err <= overall_best_err * m_params.m_hybrid_codebook_quality_thresh)
+ for (uint32_t s = 1; s < 4; s++)
{
- m_selector_cluster_uses_global_cb[cluster_index] = true;
-
- m_optimized_cluster_selector_global_cb_ids[cluster_index].set(palette_index, palette_modifier);
-
- basist::etc1_selector_palette_entry pal_entry(m_params.m_pGlobal_sel_codebook->get_entry(palette_index, palette_modifier));
-
- for (uint32_t y = 0; y < 4; y++)
- for (uint32_t x = 0; x < 4; x++)
- m_optimized_cluster_selectors[cluster_index].set_selector(x, y, pal_entry(x, y));
+ if (total_err[y][x][s] < best_err)
+ {
+ best_err = total_err[y][x][s];
+ best_sel = (uint8_t)s;
+ }
}
- else
- {
- m_optimized_cluster_selector_global_cb_ids[cluster_index].set(0, basist::etc1_global_palette_entry_modifier(0));
- m_selector_cluster_uses_global_cb[cluster_index] = false;
- }
- }
+ m_optimized_cluster_selectors[cluster_index].set_selector(x, y, best_sel);
- if (uses_hybrid_sel_codebook)
- {
- std::lock_guard<std::mutex> lock(m_lock);
-
- total_clusters_processed++;
- if ((total_clusters_processed % 63) == 0)
- debug_printf("Global selector palette optimization: %3.1f%% complete\n", total_clusters_processed * 100.0f / total_selector_clusters);
- }
+ overall_best_err += best_err;
+ } // x
+ } // y
- } // cluster_index
+ } // cluster_index
#ifndef __EMSCRIPTEN__
- } );
+ });
#endif
- } // cluster_index_iter
+ } // cluster_index_iter
#ifndef __EMSCRIPTEN__
- m_params.m_pJob_pool->wait_for_all();
+ m_params.m_pJob_pool->wait_for_all();
#endif
- } // if (m_params.m_pGlobal_sel_codebook)
+ debug_printf("Elapsed time: %3.3f secs\n", tm.get_elapsed_secs());
if (m_params.m_debug_images)
{
@@ -2133,17 +2458,25 @@ namespace basisu
}
}
+ // For each block: Determine which quantized selectors best encode that block, given its quantized endpoints.
+ // Note that this method may leave some empty clusters (i.e. arrays with no block indices), including at the end.
void basisu_frontend::find_optimal_selector_clusters_for_each_block()
{
debug_printf("find_optimal_selector_clusters_for_each_block\n");
- // Sanity checks
- BASISU_FRONTEND_VERIFY(m_selector_cluster_block_indices.size() == m_optimized_cluster_selectors.size());
- for (uint32_t i = 0; i < m_selector_clusters_within_each_parent_cluster.size(); i++)
+ interval_timer tm;
+ tm.start();
+
+ if (m_params.m_validate)
{
- for (uint32_t j = 0; j < m_selector_clusters_within_each_parent_cluster[i].size(); j++)
+ // Sanity checks
+ BASISU_FRONTEND_VERIFY(m_selector_cluster_block_indices.size() == m_optimized_cluster_selectors.size());
+ for (uint32_t i = 0; i < m_selector_clusters_within_each_parent_cluster.size(); i++)
{
- BASISU_FRONTEND_VERIFY(m_selector_clusters_within_each_parent_cluster[i][j] < m_optimized_cluster_selectors.size());
+ for (uint32_t j = 0; j < m_selector_clusters_within_each_parent_cluster[i].size(); j++)
+ {
+ BASISU_FRONTEND_VERIFY(m_selector_clusters_within_each_parent_cluster[i][j] < m_optimized_cluster_selectors.size());
+ }
}
}
@@ -2151,20 +2484,120 @@ namespace basisu
if (m_params.m_compression_level == 0)
{
- // Don't do anything, just leave the blocks in their original selector clusters.
- for (uint32_t i = 0; i < m_selector_cluster_block_indices.size(); i++)
+ // Just leave the blocks in their original selector clusters.
+ for (uint32_t selector_cluster_index = 0; selector_cluster_index < m_selector_cluster_block_indices.size(); selector_cluster_index++)
{
- for (uint32_t j = 0; j < m_selector_cluster_block_indices[i].size(); j++)
- m_block_selector_cluster_index[m_selector_cluster_block_indices[i][j]] = i;
+ for (uint32_t j = 0; j < m_selector_cluster_block_indices[selector_cluster_index].size(); j++)
+ {
+ const uint32_t block_index = m_selector_cluster_block_indices[selector_cluster_index][j];
+
+ m_block_selector_cluster_index[block_index] = selector_cluster_index;
+
+ etc_block& blk = m_encoded_blocks[block_index];
+ blk.set_raw_selector_bits(m_optimized_cluster_selectors[selector_cluster_index].get_raw_selector_bits());
+ }
}
+
+ debug_printf("Elapsed time: %3.3f secs\n", tm.get_elapsed_secs());
+
+ return;
}
- else
+
+ bool use_cpu = true;
+
+ if ((m_params.m_pOpenCL_context) && m_use_hierarchical_selector_codebooks)
{
- // Note that this method may leave some empty clusters (i.e. arrays with no block indices), including at the end.
- basisu::vector< basisu::vector<uint32_t> > new_cluster_indices(m_optimized_cluster_selectors.size());
+ const uint32_t num_parent_clusters = m_selector_clusters_within_each_parent_cluster.size();
+
+ basisu::vector<fosc_selector_struct> selector_structs;
+ selector_structs.reserve(m_optimized_cluster_selectors.size());
+
+ uint_vec parent_selector_cluster_offsets(num_parent_clusters);
+
+ uint_vec selector_cluster_indices;
+ selector_cluster_indices.reserve(m_optimized_cluster_selectors.size());
+
+ uint32_t cur_ofs = 0;
+ for (uint32_t parent_index = 0; parent_index < num_parent_clusters; parent_index++)
+ {
+ parent_selector_cluster_offsets[parent_index] = cur_ofs;
+
+ for (uint32_t j = 0; j < m_selector_clusters_within_each_parent_cluster[parent_index].size(); j++)
+ {
+ const uint32_t selector_cluster_index = m_selector_clusters_within_each_parent_cluster[parent_index][j];
+
+ uint32_t sel_bits = 0;
+ for (uint32_t p = 0; p < 16; p++)
+ sel_bits |= (m_optimized_cluster_selectors[selector_cluster_index].get_selector(p & 3, p >> 2) << (p * 2));
+
+ selector_structs.enlarge(1)->m_packed_selectors = sel_bits;
+
+ selector_cluster_indices.push_back(selector_cluster_index);
+ }
+
+ cur_ofs += m_selector_clusters_within_each_parent_cluster[parent_index].size();
+ }
+
+ const uint32_t total_input_selectors = cur_ofs;
- // For each block: Determine which quantized selectors best encode that block, given its quantized endpoints.
+ basisu::vector<fosc_block_struct> block_structs(m_total_blocks);
+ for (uint32_t i = 0; i < m_total_blocks; i++)
+ {
+ const uint32_t parent_selector_cluster = m_block_parent_selector_cluster[i];
+
+ const etc_block& blk = m_encoded_blocks[i];
+ blk.unpack_color5(block_structs[i].m_etc_color5_inten, blk.get_base5_color(), false);
+
+ block_structs[i].m_etc_color5_inten.a = (uint8_t)blk.get_inten_table(0);
+ block_structs[i].m_first_selector = parent_selector_cluster_offsets[parent_selector_cluster];
+ block_structs[i].m_num_selectors = m_selector_clusters_within_each_parent_cluster[parent_selector_cluster].size();
+ }
+
+ uint_vec output_selector_cluster_indices(m_total_blocks);
+
+ bool status = opencl_find_optimal_selector_clusters_for_each_block(
+ m_params.m_pOpenCL_context,
+ block_structs.data(),
+ total_input_selectors,
+ selector_structs.data(),
+ selector_cluster_indices.data(),
+ output_selector_cluster_indices.data(),
+ m_params.m_perceptual);
+
+ if (!status)
+ {
+ error_printf("basisu_frontend::find_optimal_selector_clusters_for_each_block: opencl_find_optimal_selector_clusters_for_each_block() failed! Using CPU.\n");
+ m_params.m_pOpenCL_context = nullptr;
+ m_opencl_failed = true;
+ }
+ else
+ {
+ for (uint32_t i = 0; i < m_selector_cluster_block_indices.size(); i++)
+ {
+ m_selector_cluster_block_indices[i].resize(0);
+ m_selector_cluster_block_indices[i].reserve(128);
+ }
+
+ for (uint32_t block_index = 0; block_index < m_total_blocks; block_index++)
+ {
+ etc_block& blk = m_encoded_blocks[block_index];
+
+ uint32_t best_cluster_index = output_selector_cluster_indices[block_index];
+
+ blk.set_raw_selector_bits(m_optimized_cluster_selectors[best_cluster_index].get_raw_selector_bits());
+ m_block_selector_cluster_index[block_index] = best_cluster_index;
+
+ vector_ensure_element_is_valid(m_selector_cluster_block_indices, best_cluster_index);
+ m_selector_cluster_block_indices[best_cluster_index].push_back(block_index);
+ }
+
+ use_cpu = false;
+ }
+ }
+
+ if (use_cpu)
+ {
basisu::vector<uint8_t> unpacked_optimized_cluster_selectors(16 * m_optimized_cluster_selectors.size());
for (uint32_t cluster_index = 0; cluster_index < m_optimized_cluster_selectors.size(); cluster_index++)
{
@@ -2176,36 +2609,74 @@ namespace basisu
}
}
}
-
- const uint32_t N = 1024;
+
+ const uint32_t N = 2048;
for (uint32_t block_index_iter = 0; block_index_iter < m_total_blocks; block_index_iter += N)
{
const uint32_t first_index = block_index_iter;
const uint32_t last_index = minimum<uint32_t>(m_total_blocks, first_index + N);
-#ifndef __EMSCRIPTEN__
- m_params.m_pJob_pool->add_job( [this, first_index, last_index, &new_cluster_indices, &unpacked_optimized_cluster_selectors] {
-#endif
+ #ifndef __EMSCRIPTEN__
+ m_params.m_pJob_pool->add_job( [this, first_index, last_index, &unpacked_optimized_cluster_selectors] {
+ #endif
+
+ int prev_best_cluster_index = 0;
for (uint32_t block_index = first_index; block_index < last_index; block_index++)
{
- const color_rgba* pBlock_pixels = get_source_pixel_block(block_index).get_ptr();
-
+ const pixel_block& block = get_source_pixel_block(block_index);
+
etc_block& blk = m_encoded_blocks[block_index];
-
+
+ if ((block_index > first_index) && (block == get_source_pixel_block(block_index - 1)))
+ {
+ blk.set_raw_selector_bits(m_optimized_cluster_selectors[prev_best_cluster_index].get_raw_selector_bits());
+
+ m_block_selector_cluster_index[block_index] = prev_best_cluster_index;
+
+ continue;
+ }
+
+ const color_rgba* pBlock_pixels = block.get_ptr();
+
color_rgba trial_block_colors[4];
- blk.get_block_colors(trial_block_colors, 0);
+ blk.get_block_colors_etc1s(trial_block_colors);
// precompute errors for the i-th block pixel and selector sel: [sel][i]
uint32_t trial_errors[4][16];
-
- for (int sel = 0; sel < 4; ++sel)
+
+ if (m_params.m_perceptual)
{
- for (int i = 0; i < 16; ++i)
- {
- trial_errors[sel][i] = color_distance(m_params.m_perceptual, pBlock_pixels[i], trial_block_colors[sel], false);
- }
+ for (uint32_t sel = 0; sel < 4; ++sel)
+ for (uint32_t i = 0; i < 16; ++i)
+ trial_errors[sel][i] = color_distance(true, pBlock_pixels[i], trial_block_colors[sel], false);
}
+ else
+ {
+ for (uint32_t sel = 0; sel < 4; ++sel)
+ for (uint32_t i = 0; i < 16; ++i)
+ trial_errors[sel][i] = color_distance(false, pBlock_pixels[i], trial_block_colors[sel], false);
+ }
+
+ // Compute the minimum possible errors (given any selectors) for pixels 0-15
+ uint64_t min_possible_error_0_15 = 0;
+ for (uint32_t i = 0; i < 16; i++)
+ min_possible_error_0_15 += basisu::minimum(trial_errors[0][i], trial_errors[1][i], trial_errors[2][i], trial_errors[3][i]);
+
+ // Compute the minimum possible errors (given any selectors) for pixels 4-15
+ uint64_t min_possible_error_4_15 = 0;
+ for (uint32_t i = 4; i < 16; i++)
+ min_possible_error_4_15 += basisu::minimum(trial_errors[0][i], trial_errors[1][i], trial_errors[2][i], trial_errors[3][i]);
+
+ // Compute the minimum possible errors (given any selectors) for pixels 8-15
+ uint64_t min_possible_error_8_15 = 0;
+ for (uint32_t i = 8; i < 16; i++)
+ min_possible_error_8_15 += basisu::minimum(trial_errors[0][i], trial_errors[1][i], trial_errors[2][i], trial_errors[3][i]);
+
+ // Compute the minimum possible errors (given any selectors) for pixels 12-15
+ uint64_t min_possible_error_12_15 = 0;
+ for (uint32_t i = 12; i < 16; i++)
+ min_possible_error_12_15 += basisu::minimum(trial_errors[0][i], trial_errors[1][i], trial_errors[2][i], trial_errors[3][i]);
uint64_t best_cluster_err = INT64_MAX;
uint32_t best_cluster_index = 0;
@@ -2215,7 +2686,7 @@ namespace basisu
const uint32_t total_clusters = m_use_hierarchical_selector_codebooks ? (uint32_t)pCluster_indices->size() : (uint32_t)m_selector_cluster_block_indices.size();
-#if 0
+ #if 0
for (uint32_t cluster_iter = 0; cluster_iter < total_clusters; cluster_iter++)
{
const uint32_t cluster_index = m_use_hierarchical_selector_codebooks ? (*pCluster_indices)[cluster_iter] : cluster_iter;
@@ -2246,99 +2717,73 @@ namespace basisu
early_out:
;
}
-#else
- if (m_params.m_perceptual)
- {
- for (uint32_t cluster_iter = 0; cluster_iter < total_clusters; cluster_iter++)
- {
- const uint32_t cluster_index = m_use_hierarchical_selector_codebooks ? (*pCluster_indices)[cluster_iter] : cluster_iter;
- //const etc_block& cluster_blk = m_optimized_cluster_selectors[cluster_index];
-
- uint64_t trial_err = 0;
-
- for (int i = 0; i < 16; i++)
- {
- const uint32_t sel = unpacked_optimized_cluster_selectors[cluster_index * 16 + i];
-
- trial_err += trial_errors[sel][i];
- if (trial_err > best_cluster_err)
- goto early_out;
- }
-
- if (trial_err < best_cluster_err)
- {
- best_cluster_err = trial_err;
- best_cluster_index = cluster_index;
- if (!best_cluster_err)
- break;
- }
-
- early_out:
- ;
-
- } // cluster_iter
- }
- else
+ #else
+ for (uint32_t cluster_iter = 0; cluster_iter < total_clusters; cluster_iter++)
{
- for (uint32_t cluster_iter = 0; cluster_iter < total_clusters; cluster_iter++)
- {
- const uint32_t cluster_index = m_use_hierarchical_selector_codebooks ? (*pCluster_indices)[cluster_iter] : cluster_iter;
- //const etc_block& cluster_blk = m_optimized_cluster_selectors[cluster_index];
+ const uint32_t cluster_index = m_use_hierarchical_selector_codebooks ? (*pCluster_indices)[cluster_iter] : cluster_iter;
+
+ const uint8_t* pSels = &unpacked_optimized_cluster_selectors[cluster_index * 16];
- uint64_t trial_err = 0;
+ uint64_t trial_err = (uint64_t)trial_errors[pSels[0]][0] + trial_errors[pSels[1]][1] + trial_errors[pSels[2]][2] + trial_errors[pSels[3]][3];
+ if ((trial_err + min_possible_error_4_15) >= best_cluster_err)
+ continue;
- for (int i = 0; i < 16; i++)
- {
- const uint32_t sel = unpacked_optimized_cluster_selectors[cluster_index * 16 + i];
+ trial_err += (uint64_t)trial_errors[pSels[4]][4] + trial_errors[pSels[5]][5] + trial_errors[pSels[6]][6] + trial_errors[pSels[7]][7];
+ if ((trial_err + min_possible_error_8_15) >= best_cluster_err)
+ continue;
- trial_err += trial_errors[sel][i];
- if (trial_err > best_cluster_err)
- goto early_out2;
- }
+ trial_err += (uint64_t)trial_errors[pSels[8]][8] + trial_errors[pSels[9]][9] + trial_errors[pSels[10]][10] + trial_errors[pSels[11]][11];
+ if ((trial_err + min_possible_error_12_15) >= best_cluster_err)
+ continue;
- if (trial_err < best_cluster_err)
- {
- best_cluster_err = trial_err;
- best_cluster_index = cluster_index;
- if (!best_cluster_err)
- break;
- }
+ trial_err += (uint64_t)trial_errors[pSels[12]][12] + trial_errors[pSels[13]][13] + trial_errors[pSels[14]][14] + trial_errors[pSels[15]][15];
- early_out2:
- ;
+ if (trial_err < best_cluster_err)
+ {
+ best_cluster_err = trial_err;
+ best_cluster_index = cluster_index;
+ if (best_cluster_err == min_possible_error_0_15)
+ break;
+ }
- } // cluster_iter
- }
-#endif
+ } // cluster_iter
+ #endif
blk.set_raw_selector_bits(m_optimized_cluster_selectors[best_cluster_index].get_raw_selector_bits());
m_block_selector_cluster_index[block_index] = best_cluster_index;
-
- {
- std::lock_guard<std::mutex> lock(m_lock);
- vector_ensure_element_is_valid(new_cluster_indices, best_cluster_index);
- new_cluster_indices[best_cluster_index].push_back(block_index);
- }
+ prev_best_cluster_index = best_cluster_index;
} // block_index
-#ifndef __EMSCRIPTEN__
+ #ifndef __EMSCRIPTEN__
} );
-#endif
+ #endif
} // block_index_iter
-#ifndef __EMSCRIPTEN__
+ #ifndef __EMSCRIPTEN__
m_params.m_pJob_pool->wait_for_all();
-#endif
+ #endif
+
+ for (uint32_t i = 0; i < m_selector_cluster_block_indices.size(); i++)
+ {
+ m_selector_cluster_block_indices[i].resize(0);
+ m_selector_cluster_block_indices[i].reserve(128);
+ }
- m_selector_cluster_block_indices.swap(new_cluster_indices);
- }
+ for (uint32_t block_index = 0; block_index < m_total_blocks; block_index++)
+ {
+ const uint32_t best_cluster_index = m_block_selector_cluster_index[block_index];
- for (uint32_t i = 0; i < m_selector_cluster_block_indices.size(); i++)
- vector_sort(m_selector_cluster_block_indices[i]);
+ vector_ensure_element_is_valid(m_selector_cluster_block_indices, best_cluster_index);
+ m_selector_cluster_block_indices[best_cluster_index].push_back(block_index);
+ }
+
+ } // if (use_cpu)
+
+ debug_printf("Elapsed time: %3.3f secs\n", tm.get_elapsed_secs());
}
// TODO: Remove old ETC1 specific stuff, and thread this.
@@ -2837,7 +3282,81 @@ namespace basisu
//debug_printf("validate_output: %u\n", validate_output());
}
-
+
+ // Endpoint clusterization hierarchy integrity checker.
+ // Note this doesn't check for empty clusters.
+ bool basisu_frontend::validate_endpoint_cluster_hierarchy(bool ensure_clusters_have_same_parents) const
+ {
+ if (!m_endpoint_parent_clusters.size())
+ return true;
+
+ int_vec subblock_parent_indices(m_total_blocks * 2);
+ subblock_parent_indices.set_all(-1);
+
+ int_vec subblock_cluster_indices(m_total_blocks * 2);
+ subblock_cluster_indices.set_all(-1);
+
+ for (uint32_t parent_index = 0; parent_index < m_endpoint_parent_clusters.size(); parent_index++)
+ {
+ for (uint32_t i = 0; i < m_endpoint_parent_clusters[parent_index].size(); i++)
+ {
+ uint32_t subblock_index = m_endpoint_parent_clusters[parent_index][i];
+ if (subblock_index >= m_total_blocks * 2)
+ return false;
+
+ // If the endpoint cluster lives in more than one parent node, that's wrong.
+ if (subblock_parent_indices[subblock_index] != -1)
+ return false;
+
+ subblock_parent_indices[subblock_index] = parent_index;
+ }
+ }
+
+ // Make sure all endpoint clusters are present in the parent cluster.
+ for (uint32_t i = 0; i < subblock_parent_indices.size(); i++)
+ {
+ if (subblock_parent_indices[i] == -1)
+ return false;
+ }
+
+ for (uint32_t cluster_index = 0; cluster_index < m_endpoint_clusters.size(); cluster_index++)
+ {
+ int parent_index = 0;
+
+ for (uint32_t i = 0; i < m_endpoint_clusters[cluster_index].size(); i++)
+ {
+ uint32_t subblock_index = m_endpoint_clusters[cluster_index][i];
+ if (subblock_index >= m_total_blocks * 2)
+ return false;
+
+ if (subblock_cluster_indices[subblock_index] != -1)
+ return false;
+
+ subblock_cluster_indices[subblock_index] = cluster_index;
+
+ // There are transformations on the endpoint clusters that can break the strict tree requirement
+ if (ensure_clusters_have_same_parents)
+ {
+ // Make sure all the subblocks are in the same parent cluster
+ if (!i)
+ parent_index = subblock_parent_indices[subblock_index];
+ else if (subblock_parent_indices[subblock_index] != parent_index)
+ return false;
+ }
+ }
+ }
+
+ // Make sure all endpoint clusters are present in the parent cluster.
+ for (uint32_t i = 0; i < subblock_cluster_indices.size(); i++)
+ {
+ if (subblock_cluster_indices[i] == -1)
+ return false;
+ }
+
+ return true;
+ }
+
+ // This is very slow and only intended for debugging/development. It's enabled using the "-validate_etc1s" command line option.
bool basisu_frontend::validate_output() const
{
debug_printf("validate_output\n");
@@ -2889,29 +3408,7 @@ namespace basisu
CHECK(rdo_output_block.get_base5_color() == blk.get_base5_color());
CHECK(rdo_output_block.get_delta3_color() == blk.get_delta3_color());
CHECK(rdo_output_block.get_raw_selector_bits() == blk.get_raw_selector_bits());
-
- if (m_params.m_pGlobal_sel_codebook)
- {
- bool used_global_cb = true;
- if (m_params.m_use_hybrid_selector_codebooks)
- used_global_cb = m_selector_cluster_uses_global_cb[selector_cluster_index];
-
- if (used_global_cb)
- {
- basist::etc1_global_selector_codebook_entry_id pal_id(get_selector_cluster_global_selector_entry_ids()[selector_cluster_index]);
-
- basist::etc1_selector_palette_entry pal_entry(m_params.m_pGlobal_sel_codebook->get_entry(pal_id));
-
- for (uint32_t y = 0; y < 4; y++)
- {
- for (uint32_t x = 0; x < 4; x++)
- {
- CHECK(pal_entry(x, y) == blk.get_selector(x, y));
- }
- }
- }
- }
-
+
#undef CHECK
}
diff --git a/thirdparty/basis_universal/encoder/basisu_frontend.h b/thirdparty/basis_universal/encoder/basisu_frontend.h
index 4ff6d40466..cda73f3984 100644
--- a/thirdparty/basis_universal/encoder/basisu_frontend.h
+++ b/thirdparty/basis_universal/encoder/basisu_frontend.h
@@ -16,12 +16,14 @@
#include "basisu_enc.h"
#include "basisu_etc.h"
#include "basisu_gpu_texture.h"
-#include "basisu_global_selector_palette_helpers.h"
#include "../transcoder/basisu_file_headers.h"
#include "../transcoder/basisu_transcoder.h"
namespace basisu
{
+ struct opencl_context;
+ typedef opencl_context* opencl_context_ptr;
+
struct vec2U
{
uint32_t m_comps[2];
@@ -51,7 +53,8 @@ namespace basisu
m_use_hierarchical_endpoint_codebooks(false),
m_use_hierarchical_selector_codebooks(false),
m_num_endpoint_codebook_iterations(0),
- m_num_selector_codebook_iterations(0)
+ m_num_selector_codebook_iterations(0),
+ m_opencl_failed(false)
{
}
@@ -73,19 +76,12 @@ namespace basisu
m_perceptual(true),
m_debug_stats(false),
m_debug_images(false),
-
m_dump_endpoint_clusterization(true),
m_validate(false),
m_multithreaded(false),
m_disable_hierarchical_endpoint_codebooks(false),
- m_pGlobal_sel_codebook(NULL),
- m_num_global_sel_codebook_pal_bits(0),
- m_num_global_sel_codebook_mod_bits(0),
- m_use_hybrid_selector_codebooks(false),
- m_hybrid_codebook_quality_thresh(0.0f),
m_tex_type(basist::cBASISTexType2D),
- m_pGlobal_codebooks(nullptr),
-
+ m_pOpenCL_context(nullptr),
m_pJob_pool(nullptr)
{
}
@@ -106,13 +102,10 @@ namespace basisu
bool m_multithreaded;
bool m_disable_hierarchical_endpoint_codebooks;
- const basist::etc1_global_selector_codebook *m_pGlobal_sel_codebook;
- uint32_t m_num_global_sel_codebook_pal_bits;
- uint32_t m_num_global_sel_codebook_mod_bits;
- bool m_use_hybrid_selector_codebooks;
- float m_hybrid_codebook_quality_thresh;
basist::basis_texture_type m_tex_type;
const basist::basisu_lowlevel_etc1s_transcoder *m_pGlobal_codebooks;
+
+ opencl_context_ptr m_pOpenCL_context;
job_pool *m_pJob_pool;
};
@@ -150,10 +143,7 @@ namespace basisu
uint32_t get_total_selector_clusters() const { return static_cast<uint32_t>(m_selector_cluster_block_indices.size()); }
uint32_t get_block_selector_cluster_index(uint32_t block_index) const { return m_block_selector_cluster_index[block_index]; }
const etc_block &get_selector_cluster_selector_bits(uint32_t cluster_index) const { return m_optimized_cluster_selectors[cluster_index]; }
-
- const basist::etc1_global_selector_codebook_entry_id_vec &get_selector_cluster_global_selector_entry_ids() const { return m_optimized_cluster_selector_global_cb_ids; }
- const bool_vec &get_selector_cluster_uses_global_cb_vec() const { return m_selector_cluster_uses_global_cb; }
-
+
// Returns block indices using each selector cluster
const uint_vec &get_selector_cluster_block_indices(uint32_t selector_cluster_index) const { return m_selector_cluster_block_indices[selector_cluster_index]; }
@@ -161,6 +151,8 @@ namespace basisu
void reoptimize_remapped_endpoints(const uint_vec &new_block_endpoints, int_vec &old_to_new_endpoint_cluster_indices, bool optimize_final_codebook, uint_vec *pBlock_selector_indices = nullptr);
+ bool get_opencl_failed() const { return m_opencl_failed; }
+
private:
params m_params;
uint32_t m_total_blocks;
@@ -192,13 +184,14 @@ namespace basisu
vec6F_quantizer m_endpoint_clusterizer;
// For each endpoint cluster: An array of which subblock indices (block_index*2+subblock) are located in that cluster.
- // Array of block indices for each endpoint cluster
basisu::vector<uint_vec> m_endpoint_clusters;
- // Array of block indices for each parent endpoint cluster
+ // Array of subblock indices for each parent endpoint cluster
+ // Note: Initially, each endpoint cluster will only live in a single parent cluster, in a shallow tree.
+ // As the endpoint clusters are manipulated this constraint gets broken.
basisu::vector<uint_vec> m_endpoint_parent_clusters;
- // Each block's parent cluster index
+ // Each block's parent endpoint cluster index
uint8_vec m_block_parent_endpoint_cluster;
// Array of endpoint cluster indices for each parent endpoint cluster
@@ -295,10 +288,7 @@ namespace basisu
// Array of selector cluster indices for each parent selector cluster
basisu::vector<uint_vec> m_selector_clusters_within_each_parent_cluster;
-
- basist::etc1_global_selector_codebook_entry_id_vec m_optimized_cluster_selector_global_cb_ids;
- bool_vec m_selector_cluster_uses_global_cb;
-
+
// Each block's selector cluster index
basisu::vector<uint32_t> m_block_selector_cluster_index;
@@ -330,6 +320,8 @@ namespace basisu
std::mutex m_lock;
+ bool m_opencl_failed;
+
//-----------------------------------------------------------------------------
void init_etc1_images();
@@ -351,6 +343,7 @@ namespace basisu
void find_optimal_selector_clusters_for_each_block();
uint32_t refine_block_endpoints_given_selectors();
void finalize();
+ bool validate_endpoint_cluster_hierarchy(bool ensure_clusters_have_same_parents) const;
bool validate_output() const;
void introduce_special_selector_clusters();
void optimize_selector_codebook();
diff --git a/thirdparty/basis_universal/encoder/basisu_global_selector_palette_helpers.cpp b/thirdparty/basis_universal/encoder/basisu_global_selector_palette_helpers.cpp
deleted file mode 100644
index 102fc24980..0000000000
--- a/thirdparty/basis_universal/encoder/basisu_global_selector_palette_helpers.cpp
+++ /dev/null
@@ -1,71 +0,0 @@
-// basiu_global_selector_palette_helpers.cpp
-// Copyright (C) 2019 Binomial LLC. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-#include "basisu_global_selector_palette_helpers.h"
-
-namespace basisu
-{
- uint64_t etc1_global_selector_codebook_find_best_entry(const basist::etc1_global_selector_codebook &codebook,
- uint32_t num_src_pixel_blocks, const pixel_block *pSrc_pixel_blocks, const etc_block *pBlock_endpoints,
- uint32_t &palette_index, basist::etc1_global_palette_entry_modifier &palette_modifier,
- bool perceptual, uint32_t max_pal_entries, uint32_t max_modifiers)
- {
- uint64_t best_err = UINT64_MAX;
- uint32_t best_pal_index = 0;
- basist::etc1_global_palette_entry_modifier best_pal_modifier;
-
- if (!max_pal_entries)
- max_pal_entries = codebook.size();
-
- if (!max_modifiers)
- max_modifiers = basist::etc1_global_palette_entry_modifier::cTotalValues;
-
- for (uint32_t pal_index = 0; pal_index < max_pal_entries; pal_index++)
- {
- for (uint32_t mod_index = 0; mod_index < max_modifiers; mod_index++)
- {
- const basist::etc1_global_palette_entry_modifier pal_modifier(mod_index);
-
- const basist::etc1_selector_palette_entry pal_entry(codebook.get_entry(pal_index, pal_modifier));
-
- uint64_t trial_err = 0;
- for (uint32_t block_index = 0; block_index < num_src_pixel_blocks; block_index++)
- {
- etc_block trial_block(pBlock_endpoints[block_index]);
-
- for (uint32_t y = 0; y < 4; y++)
- for (uint32_t x = 0; x < 4; x++)
- trial_block.set_selector(x, y, pal_entry(x, y));
-
- trial_err += trial_block.evaluate_etc1_error(reinterpret_cast<const basisu::color_rgba *>(pSrc_pixel_blocks[block_index].get_ptr()), perceptual);
- if (trial_err >= best_err)
- break;
- }
-
- if (trial_err < best_err)
- {
- best_err = trial_err;
- best_pal_index = pal_index;
- best_pal_modifier = pal_modifier;
- }
- } // mod_index
- } // pal_index
-
- palette_index = best_pal_index;
- palette_modifier = best_pal_modifier;
-
- return best_err;
- }
-
-} // namespace basisu
diff --git a/thirdparty/basis_universal/encoder/basisu_global_selector_palette_helpers.h b/thirdparty/basis_universal/encoder/basisu_global_selector_palette_helpers.h
deleted file mode 100644
index 7c35439df8..0000000000
--- a/thirdparty/basis_universal/encoder/basisu_global_selector_palette_helpers.h
+++ /dev/null
@@ -1,46 +0,0 @@
-// File: basisu_global_selector_palette_helpers.h
-// Copyright (C) 2019 Binomial LLC. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-#pragma once
-
-#include "../transcoder/basisu.h"
-#include "basisu_etc.h"
-#include "../transcoder/basisu_global_selector_palette.h"
-
-namespace basisu
-{
- const uint32_t cPixelBlockWidth = 4;
- const uint32_t cPixelBlockHeight = 4;
- const uint32_t cPixelBlockTotalPixels = cPixelBlockWidth * cPixelBlockHeight;
-
- struct pixel_block
- {
- color_rgba m_pixels[cPixelBlockHeight][cPixelBlockWidth]; // [y][x]
-
- const color_rgba &operator() (uint32_t x, uint32_t y) const { assert((x < cPixelBlockWidth) && (y < cPixelBlockHeight)); return m_pixels[y][x]; }
- color_rgba &operator() (uint32_t x, uint32_t y) { assert((x < cPixelBlockWidth) && (y < cPixelBlockHeight)); return m_pixels[y][x]; }
-
- const color_rgba *get_ptr() const { return &m_pixels[0][0]; }
- color_rgba *get_ptr() { return &m_pixels[0][0]; }
-
- void clear() { clear_obj(*this); }
- };
- typedef basisu::vector<pixel_block> pixel_block_vec;
-
- uint64_t etc1_global_selector_codebook_find_best_entry(const basist::etc1_global_selector_codebook &codebook,
- uint32_t num_src_pixel_blocks, const pixel_block *pSrc_pixel_blocks, const etc_block *pBlock_endpoints,
- uint32_t &palette_index, basist::etc1_global_palette_entry_modifier &palette_modifier,
- bool perceptual, uint32_t max_pal_entries, uint32_t max_modifiers);
-
-} // namespace basisu
diff --git a/thirdparty/basis_universal/encoder/basisu_gpu_texture.cpp b/thirdparty/basis_universal/encoder/basisu_gpu_texture.cpp
index 3f9fb67bdd..dec769d5ac 100644
--- a/thirdparty/basis_universal/encoder/basisu_gpu_texture.cpp
+++ b/thirdparty/basis_universal/encoder/basisu_gpu_texture.cpp
@@ -15,7 +15,9 @@
#include "basisu_gpu_texture.h"
#include "basisu_enc.h"
#include "basisu_pvrtc1_4.h"
+#if BASISU_USE_ASTC_DECOMPRESS
#include "basisu_astc_decomp.h"
+#endif
#include "basisu_bc7enc.h"
namespace basisu
@@ -1150,8 +1152,12 @@ namespace basisu
}
case texture_format::cASTC4x4:
{
+#if BASISU_USE_ASTC_DECOMPRESS
const bool astc_srgb = false;
basisu_astc::astc::decompress(reinterpret_cast<uint8_t*>(pPixels), static_cast<const uint8_t*>(pBlock), astc_srgb, 4, 4);
+#else
+ memset(pPixels, 255, 16 * sizeof(color_rgba));
+#endif
break;
}
case texture_format::cATC_RGB:
@@ -1498,6 +1504,8 @@ namespace basisu
header.m_pixelWidth = width;
header.m_pixelHeight = height;
+
+ header.m_glTypeSize = 1;
header.m_glInternalFormat = internal_fmt;
header.m_glBaseInternalFormat = base_internal_fmt;
diff --git a/thirdparty/basis_universal/encoder/basisu_kernels_declares.h b/thirdparty/basis_universal/encoder/basisu_kernels_declares.h
index e24bdd7978..b03e2ea6e8 100644
--- a/thirdparty/basis_universal/encoder/basisu_kernels_declares.h
+++ b/thirdparty/basis_universal/encoder/basisu_kernels_declares.h
@@ -22,4 +22,6 @@ void CPPSPMD_NAME(find_selectors_linear_rgb_4_N)(int64_t* pDistance, uint8_t* pS
void CPPSPMD_NAME(find_lowest_error_perceptual_rgb_4_N)(int64_t* pDistance, const basisu::color_rgba* pBlock_colors, const basisu::color_rgba* pSrc_pixels, uint32_t n, int64_t early_out_error);
void CPPSPMD_NAME(find_lowest_error_linear_rgb_4_N)(int64_t* pDistance, const basisu::color_rgba* pBlock_colors, const basisu::color_rgba* pSrc_pixels, uint32_t n, int64_t early_out_error);
+
+void CPPSPMD_NAME(update_covar_matrix_16x16)(uint32_t num_vecs, const void* pWeighted_vecs, const void *pOrigin, const uint32_t* pVec_indices, void *pMatrix16x16);
#endif
diff --git a/thirdparty/basis_universal/encoder/basisu_kernels_imp.h b/thirdparty/basis_universal/encoder/basisu_kernels_imp.h
index 046880517b..dcf1ce069a 100644
--- a/thirdparty/basis_universal/encoder/basisu_kernels_imp.h
+++ b/thirdparty/basis_universal/encoder/basisu_kernels_imp.h
@@ -548,6 +548,65 @@ namespace CPPSPMD_NAME(basisu_kernels_namespace)
}
};
+ struct update_covar_matrix_16x16 : spmd_kernel
+ {
+ void _call(
+ uint32_t num_vecs, const void* pWeighted_vecs_void, const void* pOrigin_void, const uint32_t* pVec_indices, void* pMatrix16x16_void)
+ {
+ const std::pair<vec16F, uint64_t>* pWeighted_vecs = static_cast< const std::pair<vec16F, uint64_t> *>(pWeighted_vecs_void);
+
+ const float* pOrigin = static_cast<const float*>(pOrigin_void);
+ vfloat org0 = loadu_linear_all(pOrigin), org1 = loadu_linear_all(pOrigin + 4), org2 = loadu_linear_all(pOrigin + 8), org3 = loadu_linear_all(pOrigin + 12);
+
+ vfloat mat[16][4];
+ vfloat vzero(zero_vfloat());
+
+ for (uint32_t i = 0; i < 16; i++)
+ {
+ store_all(mat[i][0], vzero);
+ store_all(mat[i][1], vzero);
+ store_all(mat[i][2], vzero);
+ store_all(mat[i][3], vzero);
+ }
+
+ for (uint32_t k = 0; k < num_vecs; k++)
+ {
+ const uint32_t vec_index = pVec_indices[k];
+
+ const float* pW = pWeighted_vecs[vec_index].first.get_ptr();
+ vfloat weight((float)pWeighted_vecs[vec_index].second);
+
+ vfloat vec[4] = { loadu_linear_all(pW) - org0, loadu_linear_all(pW + 4) - org1, loadu_linear_all(pW + 8) - org2, loadu_linear_all(pW + 12) - org3 };
+
+ vfloat wvec0 = vec[0] * weight, wvec1 = vec[1] * weight, wvec2 = vec[2] * weight, wvec3 = vec[3] * weight;
+
+ for (uint32_t j = 0; j < 16; j++)
+ {
+ vfloat vx = ((const float*)vec)[j];
+
+ store_all(mat[j][0], mat[j][0] + vx * wvec0);
+ store_all(mat[j][1], mat[j][1] + vx * wvec1);
+ store_all(mat[j][2], mat[j][2] + vx * wvec2);
+ store_all(mat[j][3], mat[j][3] + vx * wvec3);
+
+ } // j
+
+ } // k
+
+ float* pMatrix = static_cast<float*>(pMatrix16x16_void);
+
+ float* pDst = pMatrix;
+ for (uint32_t i = 0; i < 16; i++)
+ {
+ storeu_linear_all(pDst, mat[i][0]);
+ storeu_linear_all(pDst + 4, mat[i][1]);
+ storeu_linear_all(pDst + 8, mat[i][2]);
+ storeu_linear_all(pDst + 12, mat[i][3]);
+ pDst += 16;
+ }
+ }
+ };
+
} // namespace
using namespace CPPSPMD_NAME(basisu_kernels_namespace);
@@ -582,3 +641,7 @@ void CPPSPMD_NAME(find_lowest_error_linear_rgb_4_N)(int64_t* pDistance, const co
spmd_call< find_lowest_error_linear_rgb_4_N >(pDistance, pBlock_colors, pSrc_pixels, n, early_out_error);
}
+void CPPSPMD_NAME(update_covar_matrix_16x16)(uint32_t num_vecs, const void* pWeighted_vecs, const void* pOrigin, const uint32_t *pVec_indices, void* pMatrix16x16)
+{
+ spmd_call < update_covar_matrix_16x16 >(num_vecs, pWeighted_vecs, pOrigin, pVec_indices, pMatrix16x16);
+}
diff --git a/thirdparty/basis_universal/encoder/basisu_kernels_sse.cpp b/thirdparty/basis_universal/encoder/basisu_kernels_sse.cpp
index 12d2321f20..4f15a5a12b 100644
--- a/thirdparty/basis_universal/encoder/basisu_kernels_sse.cpp
+++ b/thirdparty/basis_universal/encoder/basisu_kernels_sse.cpp
@@ -32,7 +32,7 @@
#error SSE4.1/SSE3/SSE4.2/SSSE3 cannot be enabled to use this file
#endif
#else
- #if !__SSE4_1__ || !__SSE3__ || __SSE4_2__ || !__SSSE3__
+ #if !__SSE4_1__ || !__SSE3__ || !__SSSE3__
#error Please check your compiler options
#endif
#endif
diff --git a/thirdparty/basis_universal/encoder/basisu_miniz.h b/thirdparty/basis_universal/encoder/basisu_miniz.h
index 8627abe893..18de997232 100644
--- a/thirdparty/basis_universal/encoder/basisu_miniz.h
+++ b/thirdparty/basis_universal/encoder/basisu_miniz.h
@@ -76,6 +76,14 @@
#define MINIZ_USE_UNALIGNED_LOADS_AND_STORES 1
#endif
+// Using unaligned loads and stores causes errors when using UBSan. Jam it off.
+#if defined(__has_feature)
+#if __has_feature(undefined_behavior_sanitizer)
+#undef MINIZ_USE_UNALIGNED_LOADS_AND_STORES
+#define MINIZ_USE_UNALIGNED_LOADS_AND_STORES 0
+#endif
+#endif
+
#if defined(_M_X64) || defined(_WIN64) || defined(__MINGW64__) || defined(_LP64) || defined(__LP64__) || defined(__ia64__) || defined(__x86_64__)
// Set MINIZ_HAS_64BIT_REGISTERS to 1 if operations on 64-bit integers are reasonably fast (and don't involve compiler generated calls to helper functions).
#define MINIZ_HAS_64BIT_REGISTERS 1
@@ -236,6 +244,7 @@ int mz_inflateInit2(mz_streamp pStream, int window_bits);
// MZ_BUF_ERROR if no forward progress is possible because the input buffer is empty but the inflater needs more input to continue, or if the output buffer is not large enough. Call mz_inflate() again
// with more input data, or with more room in the output buffer (except when using single call decompression, described above).
int mz_inflate(mz_streamp pStream, int flush);
+int mz_inflate2(mz_streamp pStream, int flush, int adler32_checking);
// Deinitializes a decompressor.
int mz_inflateEnd(mz_streamp pStream);
@@ -880,10 +889,10 @@ int mz_inflateInit(mz_streamp pStream)
return mz_inflateInit2(pStream, MZ_DEFAULT_WINDOW_BITS);
}
-int mz_inflate(mz_streamp pStream, int flush)
+int mz_inflate2(mz_streamp pStream, int flush, int adler32_checking)
{
inflate_state* pState;
- mz_uint n, first_call, decomp_flags = TINFL_FLAG_COMPUTE_ADLER32;
+ mz_uint n, first_call, decomp_flags = adler32_checking ? TINFL_FLAG_COMPUTE_ADLER32 : 0;
size_t in_bytes, out_bytes, orig_avail_in;
tinfl_status status;
@@ -971,6 +980,11 @@ int mz_inflate(mz_streamp pStream, int flush)
return ((status == TINFL_STATUS_DONE) && (!pState->m_dict_avail)) ? MZ_STREAM_END : MZ_OK;
}
+int mz_inflate(mz_streamp pStream, int flush)
+{
+ return mz_inflate2(pStream, flush, MZ_TRUE);
+}
+
int mz_inflateEnd(mz_streamp pStream)
{
if (!pStream)
@@ -1348,7 +1362,8 @@ tinfl_status tinfl_decompress(tinfl_decompressor *r, const mz_uint8 *pIn_buf_nex
common_exit:
r->m_num_bits = num_bits; r->m_bit_buf = bit_buf; r->m_dist = dist; r->m_counter = counter; r->m_num_extra = num_extra; r->m_dist_from_out_buf_start = dist_from_out_buf_start;
*pIn_buf_size = pIn_buf_cur - pIn_buf_next; *pOut_buf_size = pOut_buf_cur - pOut_buf_next;
- if ((decomp_flags & (TINFL_FLAG_PARSE_ZLIB_HEADER | TINFL_FLAG_COMPUTE_ADLER32)) && (status >= 0))
+ //if ((decomp_flags & (TINFL_FLAG_PARSE_ZLIB_HEADER | TINFL_FLAG_COMPUTE_ADLER32)) && (status >= 0))
+ if ((decomp_flags & TINFL_FLAG_COMPUTE_ADLER32) && (status >= 0))
{
const mz_uint8 *ptr = pOut_buf_next; size_t buf_len = *pOut_buf_size;
mz_uint32 i, s1 = r->m_check_adler32 & 0xffff, s2 = r->m_check_adler32 >> 16; size_t block_len = buf_len % 5552;
@@ -1362,7 +1377,9 @@ common_exit:
for ( ; i < block_len; ++i) s1 += *ptr++, s2 += s1;
s1 %= 65521U, s2 %= 65521U; buf_len -= block_len; block_len = 5552;
}
- r->m_check_adler32 = (s2 << 16) + s1; if ((status == TINFL_STATUS_DONE) && (decomp_flags & TINFL_FLAG_PARSE_ZLIB_HEADER) && (r->m_check_adler32 != r->m_z_adler32)) status = TINFL_STATUS_ADLER32_MISMATCH;
+ r->m_check_adler32 = (s2 << 16) + s1;
+ if ((status == TINFL_STATUS_DONE) && (decomp_flags & TINFL_FLAG_PARSE_ZLIB_HEADER) && (r->m_check_adler32 != r->m_z_adler32))
+ status = TINFL_STATUS_ADLER32_MISMATCH;
}
return status;
}
@@ -2479,7 +2496,7 @@ void *tdefl_write_image_to_png_file_in_memory_ex(const void *pImage, int w, int
// write dummy header
for (z = 41; z; --z) tdefl_output_buffer_putter(&z, 1, &out_buf);
// compress image data
- tdefl_init(pComp, tdefl_output_buffer_putter, &out_buf, s_tdefl_png_num_probes[MZ_MIN(10, level)] | TDEFL_WRITE_ZLIB_HEADER);
+ tdefl_init(pComp, tdefl_output_buffer_putter, &out_buf, s_tdefl_png_num_probes[MZ_MIN(10, level)] | TDEFL_WRITE_ZLIB_HEADER | (level <= 3 ? TDEFL_GREEDY_PARSING_FLAG : 0));
for (y = 0; y < h; ++y) { tdefl_compress_buffer(pComp, &z, 1, TDEFL_NO_FLUSH); tdefl_compress_buffer(pComp, (mz_uint8*)pImage + (flip ? (h - 1 - y) : y) * bpl, bpl, TDEFL_NO_FLUSH); }
if (tdefl_compress_buffer(pComp, NULL, 0, TDEFL_FINISH) != TDEFL_STATUS_DONE) { MZ_FREE(pComp); MZ_FREE(out_buf.m_pBuf); return NULL; }
// write real header
diff --git a/thirdparty/basis_universal/encoder/basisu_ocl_kernels.h b/thirdparty/basis_universal/encoder/basisu_ocl_kernels.h
new file mode 100644
index 0000000000..46db61bf18
--- /dev/null
+++ b/thirdparty/basis_universal/encoder/basisu_ocl_kernels.h
@@ -0,0 +1,1439 @@
+unsigned char ocl_kernels_cl[] = {
+ 0x2f, 0x2f, 0x23, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x20, 0x5f, 0x44, 0x45, 0x42, 0x55, 0x47, 0x0d, 0x0a, 0x0d, 0x0a, 0x23, 0x69, 0x66, 0x6e, 0x64, 0x65, 0x66, 0x20, 0x4e, 0x55, 0x4c, 0x4c,
+ 0x0d, 0x0a, 0x09, 0x23, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x20, 0x4e, 0x55, 0x4c, 0x4c, 0x20, 0x30, 0x4c, 0x0d, 0x0a, 0x23, 0x65, 0x6e, 0x64, 0x69, 0x66, 0x0d, 0x0a, 0x0d, 0x0a, 0x74, 0x79,
+ 0x70, 0x65, 0x64, 0x65, 0x66, 0x20, 0x63, 0x68, 0x61, 0x72, 0x20, 0x69, 0x6e, 0x74, 0x38, 0x5f, 0x74, 0x3b, 0x0d, 0x0a, 0x74, 0x79, 0x70, 0x65, 0x64, 0x65, 0x66, 0x20, 0x75, 0x63, 0x68, 0x61,
+ 0x72, 0x20, 0x75, 0x69, 0x6e, 0x74, 0x38, 0x5f, 0x74, 0x3b, 0x0d, 0x0a, 0x0d, 0x0a, 0x74, 0x79, 0x70, 0x65, 0x64, 0x65, 0x66, 0x20, 0x73, 0x68, 0x6f, 0x72, 0x74, 0x20, 0x69, 0x6e, 0x74, 0x31,
+ 0x36, 0x5f, 0x74, 0x3b, 0x0d, 0x0a, 0x74, 0x79, 0x70, 0x65, 0x64, 0x65, 0x66, 0x20, 0x75, 0x73, 0x68, 0x6f, 0x72, 0x74, 0x20, 0x75, 0x69, 0x6e, 0x74, 0x31, 0x36, 0x5f, 0x74, 0x3b, 0x0d, 0x0a,
+ 0x0d, 0x0a, 0x74, 0x79, 0x70, 0x65, 0x64, 0x65, 0x66, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x74, 0x3b, 0x0d, 0x0a, 0x74, 0x79, 0x70, 0x65, 0x64, 0x65, 0x66, 0x20,
+ 0x75, 0x69, 0x6e, 0x74, 0x20, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x74, 0x3b, 0x0d, 0x0a, 0x0d, 0x0a, 0x74, 0x79, 0x70, 0x65, 0x64, 0x65, 0x66, 0x20, 0x6c, 0x6f, 0x6e, 0x67, 0x20, 0x69,
+ 0x6e, 0x74, 0x36, 0x34, 0x5f, 0x74, 0x3b, 0x0d, 0x0a, 0x74, 0x79, 0x70, 0x65, 0x64, 0x65, 0x66, 0x20, 0x75, 0x6c, 0x6f, 0x6e, 0x67, 0x20, 0x75, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x5f, 0x74, 0x3b,
+ 0x0d, 0x0a, 0x0d, 0x0a, 0x74, 0x79, 0x70, 0x65, 0x64, 0x65, 0x66, 0x20, 0x75, 0x63, 0x68, 0x61, 0x72, 0x34, 0x20, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x72, 0x67, 0x62, 0x61, 0x3b, 0x0d, 0x0a,
+ 0x0d, 0x0a, 0x23, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x20, 0x55, 0x49, 0x4e, 0x54, 0x33, 0x32, 0x5f, 0x4d, 0x41, 0x58, 0x20, 0x30, 0x78, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x55,
+ 0x4c, 0x0d, 0x0a, 0x23, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x20, 0x49, 0x4e, 0x54, 0x36, 0x34, 0x5f, 0x4d, 0x41, 0x58, 0x20, 0x4c, 0x4f, 0x4e, 0x47, 0x5f, 0x4d, 0x41, 0x58, 0x0d, 0x0a, 0x23,
+ 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x20, 0x55, 0x49, 0x4e, 0x54, 0x36, 0x34, 0x5f, 0x4d, 0x41, 0x58, 0x20, 0x55, 0x4c, 0x4f, 0x4e, 0x47, 0x5f, 0x4d, 0x41, 0x58, 0x0d, 0x0a, 0x0d, 0x0a, 0x69,
+ 0x6e, 0x74, 0x20, 0x73, 0x71, 0x75, 0x61, 0x72, 0x65, 0x69, 0x28, 0x69, 0x6e, 0x74, 0x20, 0x61, 0x29, 0x20, 0x7b, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x61, 0x20, 0x2a, 0x20, 0x61,
+ 0x3b, 0x20, 0x7d, 0x0d, 0x0a, 0x0d, 0x0a, 0x23, 0x69, 0x66, 0x64, 0x65, 0x66, 0x20, 0x5f, 0x44, 0x45, 0x42, 0x55, 0x47, 0x0d, 0x0a, 0x09, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x20, 0x76, 0x6f,
+ 0x69, 0x64, 0x20, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x5f, 0x61, 0x73, 0x73, 0x65, 0x72, 0x74, 0x28, 0x62, 0x6f, 0x6f, 0x6c, 0x20, 0x78, 0x2c, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74,
+ 0x61, 0x6e, 0x74, 0x20, 0x63, 0x68, 0x61, 0x72, 0x20, 0x2a, 0x70, 0x4d, 0x73, 0x67, 0x2c, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x6c, 0x69, 0x6e, 0x65, 0x29, 0x0d, 0x0a, 0x09, 0x7b, 0x0d, 0x0a, 0x09,
+ 0x09, 0x69, 0x66, 0x20, 0x28, 0x21, 0x78, 0x29, 0x0d, 0x0a, 0x09, 0x09, 0x09, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x66, 0x28, 0x22, 0x61, 0x73, 0x73, 0x65, 0x72, 0x74, 0x28, 0x29, 0x20, 0x66, 0x61,
+ 0x69, 0x6c, 0x65, 0x64, 0x20, 0x6f, 0x6e, 0x20, 0x6c, 0x69, 0x6e, 0x65, 0x20, 0x25, 0x69, 0x3a, 0x20, 0x25, 0x73, 0x5c, 0x6e, 0x22, 0x2c, 0x20, 0x6c, 0x69, 0x6e, 0x65, 0x2c, 0x20, 0x70, 0x4d,
+ 0x73, 0x67, 0x29, 0x3b, 0x0d, 0x0a, 0x09, 0x7d, 0x0d, 0x0a, 0x09, 0x23, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x20, 0x61, 0x73, 0x73, 0x65, 0x72, 0x74, 0x28, 0x78, 0x29, 0x20, 0x69, 0x6e, 0x74,
+ 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x5f, 0x61, 0x73, 0x73, 0x65, 0x72, 0x74, 0x28, 0x78, 0x2c, 0x20, 0x23, 0x78, 0x2c, 0x20, 0x5f, 0x5f, 0x4c, 0x49, 0x4e, 0x45, 0x5f, 0x5f, 0x29, 0x0d, 0x0a, 0x23,
+ 0x65, 0x6c, 0x73, 0x65, 0x0d, 0x0a, 0x09, 0x23, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x20, 0x61, 0x73, 0x73, 0x65, 0x72, 0x74, 0x28, 0x78, 0x29, 0x0d, 0x0a, 0x23, 0x65, 0x6e, 0x64, 0x69, 0x66,
+ 0x0d, 0x0a, 0x0d, 0x0a, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x20, 0x75, 0x69, 0x6e, 0x74, 0x38, 0x5f, 0x74, 0x20, 0x63, 0x6c, 0x61, 0x6d, 0x70, 0x32, 0x35, 0x35, 0x28, 0x69, 0x6e, 0x74, 0x20,
+ 0x78, 0x29, 0x0d, 0x0a, 0x7b, 0x0d, 0x0a, 0x09, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x63, 0x6c, 0x61, 0x6d, 0x70, 0x28, 0x78, 0x2c, 0x20, 0x30, 0x2c, 0x20, 0x32, 0x35, 0x35, 0x29, 0x3b,
+ 0x0d, 0x0a, 0x7d, 0x0d, 0x0a, 0x0d, 0x0a, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x20, 0x75, 0x69, 0x6e, 0x74, 0x38, 0x5f, 0x74, 0x20, 0x63, 0x6c, 0x61, 0x6d, 0x70, 0x32, 0x35, 0x35, 0x5f, 0x66,
+ 0x6c, 0x61, 0x67, 0x28, 0x69, 0x6e, 0x74, 0x20, 0x78, 0x2c, 0x20, 0x62, 0x6f, 0x6f, 0x6c, 0x20, 0x2a, 0x70, 0x44, 0x69, 0x64, 0x5f, 0x63, 0x6c, 0x61, 0x6d, 0x70, 0x29, 0x0d, 0x0a, 0x7b, 0x0d,
+ 0x0a, 0x09, 0x69, 0x66, 0x20, 0x28, 0x78, 0x20, 0x3c, 0x20, 0x30, 0x29, 0x0d, 0x0a, 0x09, 0x7b, 0x0d, 0x0a, 0x09, 0x09, 0x2a, 0x70, 0x44, 0x69, 0x64, 0x5f, 0x63, 0x6c, 0x61, 0x6d, 0x70, 0x20,
+ 0x3d, 0x20, 0x74, 0x72, 0x75, 0x65, 0x3b, 0x0d, 0x0a, 0x09, 0x09, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x30, 0x3b, 0x0d, 0x0a, 0x09, 0x7d, 0x0d, 0x0a, 0x09, 0x65, 0x6c, 0x73, 0x65, 0x20,
+ 0x69, 0x66, 0x20, 0x28, 0x78, 0x20, 0x3e, 0x20, 0x32, 0x35, 0x35, 0x29, 0x0d, 0x0a, 0x09, 0x7b, 0x0d, 0x0a, 0x09, 0x09, 0x2a, 0x70, 0x44, 0x69, 0x64, 0x5f, 0x63, 0x6c, 0x61, 0x6d, 0x70, 0x20,
+ 0x3d, 0x20, 0x74, 0x72, 0x75, 0x65, 0x3b, 0x0d, 0x0a, 0x09, 0x09, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x32, 0x35, 0x35, 0x3b, 0x0d, 0x0a, 0x09, 0x7d, 0x0d, 0x0a, 0x0d, 0x0a, 0x09, 0x72,
+ 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x28, 0x75, 0x69, 0x6e, 0x74, 0x38, 0x5f, 0x74, 0x29, 0x28, 0x78, 0x29, 0x3b, 0x0d, 0x0a, 0x7d, 0x0d, 0x0a, 0x0d, 0x0a, 0x74, 0x79, 0x70, 0x65, 0x64, 0x65,
+ 0x66, 0x20, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x5f, 0x5f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x5f, 0x5f, 0x20, 0x28, 0x28, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x29,
+ 0x29, 0x20, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x5f, 0x65, 0x74, 0x63, 0x31, 0x73, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x5f, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x5f, 0x74, 0x61, 0x67, 0x0d,
+ 0x0a, 0x7b, 0x0d, 0x0a, 0x09, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x74, 0x20, 0x6d, 0x5f, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x3b, 0x0d, 0x0a, 0x09,
+ 0x69, 0x6e, 0x74, 0x20, 0x6d, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x70, 0x74, 0x75, 0x61, 0x6c, 0x3b, 0x0d, 0x0a, 0x09, 0x69, 0x6e, 0x74, 0x20, 0x6d, 0x5f, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f,
+ 0x70, 0x65, 0x72, 0x6d, 0x73, 0x3b, 0x0d, 0x0a, 0x7d, 0x20, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x5f, 0x65, 0x74, 0x63, 0x31, 0x73, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x5f, 0x73, 0x74, 0x72,
+ 0x75, 0x63, 0x74, 0x3b, 0x0d, 0x0a, 0x0d, 0x0a, 0x74, 0x79, 0x70, 0x65, 0x64, 0x65, 0x66, 0x20, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x5f, 0x5f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75,
+ 0x74, 0x65, 0x5f, 0x5f, 0x20, 0x28, 0x28, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x29, 0x29, 0x20, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x74, 0x61, 0x67, 0x0d,
+ 0x0a, 0x7b, 0x0d, 0x0a, 0x09, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x72, 0x67, 0x62, 0x61, 0x20, 0x6d, 0x5f, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x73, 0x5b, 0x31, 0x36, 0x5d, 0x3b, 0x20, 0x2f, 0x2f,
+ 0x20, 0x5b, 0x79, 0x2a, 0x34, 0x2b, 0x78, 0x5d, 0x0d, 0x0a, 0x7d, 0x20, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x3b, 0x0d, 0x0a, 0x0d, 0x0a, 0x75, 0x69, 0x6e, 0x74,
+ 0x20, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x64, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x28, 0x62, 0x6f, 0x6f, 0x6c, 0x20, 0x70, 0x65, 0x72, 0x63, 0x65, 0x70, 0x74, 0x75, 0x61, 0x6c, 0x2c,
+ 0x20, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x72, 0x67, 0x62, 0x61, 0x20, 0x65, 0x31, 0x2c, 0x20, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x72, 0x67, 0x62, 0x61, 0x20, 0x65, 0x32, 0x2c, 0x20, 0x62,
+ 0x6f, 0x6f, 0x6c, 0x20, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x29, 0x0d, 0x0a, 0x7b, 0x0d, 0x0a, 0x09, 0x69, 0x66, 0x20, 0x28, 0x70, 0x65, 0x72, 0x63, 0x65, 0x70, 0x74, 0x75, 0x61, 0x6c, 0x29, 0x0d,
+ 0x0a, 0x09, 0x7b, 0x0d, 0x0a, 0x23, 0x69, 0x66, 0x20, 0x30, 0x0d, 0x0a, 0x09, 0x09, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x20, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x5f, 0x72, 0x67, 0x62, 0x20, 0x3d,
+ 0x20, 0x28, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x29, 0x28, 0x65, 0x31, 0x2e, 0x78, 0x20, 0x2d, 0x20, 0x65, 0x32, 0x2e, 0x78, 0x2c, 0x20, 0x65, 0x31, 0x2e, 0x79, 0x20, 0x2d, 0x20, 0x65, 0x32,
+ 0x2e, 0x79, 0x2c, 0x20, 0x65, 0x31, 0x2e, 0x7a, 0x20, 0x2d, 0x20, 0x65, 0x32, 0x2e, 0x7a, 0x29, 0x3b, 0x0d, 0x0a, 0x0d, 0x0a, 0x09, 0x09, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x20, 0x64, 0x65,
+ 0x6c, 0x74, 0x61, 0x5f, 0x79, 0x63, 0x62, 0x63, 0x72, 0x3b, 0x0d, 0x0a, 0x09, 0x09, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x5f, 0x79, 0x63, 0x62, 0x63, 0x72, 0x2e, 0x78, 0x20, 0x3d, 0x20, 0x64, 0x6f,
+ 0x74, 0x28, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x5f, 0x72, 0x67, 0x62, 0x2c, 0x20, 0x28, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x29, 0x28, 0x2e, 0x32, 0x31, 0x32, 0x36, 0x66, 0x2c, 0x20, 0x2e, 0x37,
+ 0x31, 0x35, 0x32, 0x66, 0x2c, 0x20, 0x2e, 0x30, 0x37, 0x32, 0x32, 0x66, 0x29, 0x29, 0x3b, 0x20, 0x2f, 0x2f, 0x20, 0x79, 0x0d, 0x0a, 0x09, 0x09, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x5f, 0x79, 0x63,
+ 0x62, 0x63, 0x72, 0x2e, 0x79, 0x20, 0x3d, 0x20, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x5f, 0x72, 0x67, 0x62, 0x2e, 0x78, 0x20, 0x2d, 0x20, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x5f, 0x79, 0x63, 0x62, 0x63,
+ 0x72, 0x2e, 0x78, 0x3b, 0x20, 0x2f, 0x2f, 0x20, 0x63, 0x72, 0x0d, 0x0a, 0x09, 0x09, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x5f, 0x79, 0x63, 0x62, 0x63, 0x72, 0x2e, 0x7a, 0x20, 0x3d, 0x20, 0x64, 0x65,
+ 0x6c, 0x74, 0x61, 0x5f, 0x72, 0x67, 0x62, 0x2e, 0x7a, 0x20, 0x2d, 0x20, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x5f, 0x79, 0x63, 0x62, 0x63, 0x72, 0x2e, 0x78, 0x3b, 0x20, 0x2f, 0x2f, 0x20, 0x63, 0x62,
+ 0x0d, 0x0a, 0x0d, 0x0a, 0x09, 0x09, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x5f, 0x79, 0x63, 0x62, 0x63, 0x72, 0x20, 0x2a, 0x3d, 0x20, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x5f, 0x79, 0x63, 0x62, 0x63, 0x72,
+ 0x3b, 0x0d, 0x0a, 0x0d, 0x0a, 0x09, 0x09, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x64, 0x20, 0x3d, 0x20, 0x64, 0x6f, 0x74, 0x28, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x5f, 0x79, 0x63, 0x62, 0x63, 0x72,
+ 0x2c, 0x20, 0x28, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x29, 0x28, 0x31, 0x2e, 0x30, 0x66, 0x2c, 0x20, 0x30, 0x2e, 0x32, 0x30, 0x33, 0x31, 0x32, 0x35, 0x66, 0x2c, 0x20, 0x30, 0x2e, 0x30, 0x32,
+ 0x33, 0x34, 0x33, 0x37, 0x35, 0x66, 0x29, 0x29, 0x3b, 0x0d, 0x0a, 0x0d, 0x0a, 0x09, 0x09, 0x69, 0x66, 0x20, 0x28, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x29, 0x0d, 0x0a, 0x09, 0x09, 0x7b, 0x0d, 0x0a,
+ 0x09, 0x09, 0x09, 0x69, 0x6e, 0x74, 0x20, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x5f, 0x61, 0x20, 0x3d, 0x20, 0x65, 0x31, 0x2e, 0x77, 0x20, 0x2d, 0x20, 0x65, 0x32, 0x2e, 0x77, 0x3b, 0x0d, 0x0a, 0x09,
+ 0x09, 0x09, 0x64, 0x20, 0x2b, 0x3d, 0x20, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x5f, 0x61, 0x20, 0x2a, 0x20, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x5f, 0x61, 0x3b, 0x0d, 0x0a, 0x09, 0x09, 0x7d, 0x0d, 0x0a,
+ 0x0d, 0x0a, 0x09, 0x09, 0x64, 0x20, 0x3d, 0x20, 0x63, 0x6c, 0x61, 0x6d, 0x70, 0x28, 0x64, 0x20, 0x2a, 0x20, 0x32, 0x35, 0x36, 0x2e, 0x30, 0x66, 0x20, 0x2b, 0x20, 0x2e, 0x35, 0x66, 0x2c, 0x20,
+ 0x30, 0x2e, 0x30, 0x66, 0x2c, 0x20, 0x28, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x29, 0x55, 0x49, 0x4e, 0x54, 0x33, 0x32, 0x5f, 0x4d, 0x41, 0x58, 0x29, 0x3b, 0x0d, 0x0a, 0x0d, 0x0a, 0x09, 0x09, 0x72,
+ 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x28, 0x75, 0x69, 0x6e, 0x74, 0x29, 0x28, 0x64, 0x29, 0x3b, 0x0d, 0x0a, 0x23, 0x65, 0x6c, 0x73, 0x65, 0x0d, 0x0a, 0x09, 0x09, 0x2f, 0x2f, 0x20, 0x54, 0x68,
+ 0x69, 0x73, 0x20, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x43, 0x50, 0x55, 0x20, 0x63, 0x6f, 0x64, 0x65, 0x2c, 0x20, 0x77, 0x68, 0x69, 0x63, 0x68, 0x20, 0x69,
+ 0x73, 0x20, 0x75, 0x73, 0x65, 0x66, 0x75, 0x6c, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x0d, 0x0a, 0x09, 0x09, 0x69, 0x6e, 0x74, 0x20, 0x64, 0x72, 0x20,
+ 0x3d, 0x20, 0x65, 0x31, 0x2e, 0x78, 0x20, 0x2d, 0x20, 0x65, 0x32, 0x2e, 0x78, 0x3b, 0x0d, 0x0a, 0x09, 0x09, 0x69, 0x6e, 0x74, 0x20, 0x64, 0x67, 0x20, 0x3d, 0x20, 0x65, 0x31, 0x2e, 0x79, 0x20,
+ 0x2d, 0x20, 0x65, 0x32, 0x2e, 0x79, 0x3b, 0x0d, 0x0a, 0x09, 0x09, 0x69, 0x6e, 0x74, 0x20, 0x64, 0x62, 0x20, 0x3d, 0x20, 0x65, 0x31, 0x2e, 0x7a, 0x20, 0x2d, 0x20, 0x65, 0x32, 0x2e, 0x7a, 0x3b,
+ 0x0d, 0x0a, 0x0d, 0x0a, 0x09, 0x09, 0x69, 0x6e, 0x74, 0x20, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x5f, 0x6c, 0x20, 0x3d, 0x20, 0x64, 0x72, 0x20, 0x2a, 0x20, 0x32, 0x37, 0x20, 0x2b, 0x20, 0x64, 0x67,
+ 0x20, 0x2a, 0x20, 0x39, 0x32, 0x20, 0x2b, 0x20, 0x64, 0x62, 0x20, 0x2a, 0x20, 0x39, 0x3b, 0x0d, 0x0a, 0x09, 0x09, 0x69, 0x6e, 0x74, 0x20, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x5f, 0x63, 0x72, 0x20,
+ 0x3d, 0x20, 0x64, 0x72, 0x20, 0x2a, 0x20, 0x31, 0x32, 0x38, 0x20, 0x2d, 0x20, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x5f, 0x6c, 0x3b, 0x0d, 0x0a, 0x09, 0x09, 0x69, 0x6e, 0x74, 0x20, 0x64, 0x65, 0x6c,
+ 0x74, 0x61, 0x5f, 0x63, 0x62, 0x20, 0x3d, 0x20, 0x64, 0x62, 0x20, 0x2a, 0x20, 0x31, 0x32, 0x38, 0x20, 0x2d, 0x20, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x5f, 0x6c, 0x3b, 0x0d, 0x0a, 0x0d, 0x0a, 0x09,
+ 0x09, 0x75, 0x69, 0x6e, 0x74, 0x20, 0x69, 0x64, 0x20, 0x3d, 0x20, 0x28, 0x28, 0x75, 0x69, 0x6e, 0x74, 0x29, 0x28, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x5f, 0x6c, 0x20, 0x2a, 0x20, 0x64, 0x65, 0x6c,
+ 0x74, 0x61, 0x5f, 0x6c, 0x29, 0x20, 0x3e, 0x3e, 0x20, 0x37, 0x55, 0x29, 0x20, 0x2b, 0x0d, 0x0a, 0x09, 0x09, 0x09, 0x28, 0x28, 0x28, 0x28, 0x75, 0x69, 0x6e, 0x74, 0x29, 0x28, 0x64, 0x65, 0x6c,
+ 0x74, 0x61, 0x5f, 0x63, 0x72, 0x20, 0x2a, 0x20, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x5f, 0x63, 0x72, 0x29, 0x20, 0x3e, 0x3e, 0x20, 0x37, 0x55, 0x29, 0x20, 0x2a, 0x20, 0x32, 0x36, 0x55, 0x29, 0x20,
+ 0x3e, 0x3e, 0x20, 0x37, 0x55, 0x29, 0x20, 0x2b, 0x0d, 0x0a, 0x09, 0x09, 0x09, 0x28, 0x28, 0x28, 0x28, 0x75, 0x69, 0x6e, 0x74, 0x29, 0x28, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x5f, 0x63, 0x62, 0x20,
+ 0x2a, 0x20, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x5f, 0x63, 0x62, 0x29, 0x20, 0x3e, 0x3e, 0x20, 0x37, 0x55, 0x29, 0x20, 0x2a, 0x20, 0x33, 0x55, 0x29, 0x20, 0x3e, 0x3e, 0x20, 0x37, 0x55, 0x29, 0x3b,
+ 0x0d, 0x0a, 0x0d, 0x0a, 0x09, 0x09, 0x69, 0x66, 0x20, 0x28, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x29, 0x0d, 0x0a, 0x09, 0x09, 0x7b, 0x0d, 0x0a, 0x09, 0x09, 0x09, 0x69, 0x6e, 0x74, 0x20, 0x64, 0x61,
+ 0x20, 0x3d, 0x20, 0x28, 0x65, 0x31, 0x2e, 0x77, 0x20, 0x2d, 0x20, 0x65, 0x32, 0x2e, 0x77, 0x29, 0x20, 0x3c, 0x3c, 0x20, 0x37, 0x3b, 0x0d, 0x0a, 0x09, 0x09, 0x09, 0x69, 0x64, 0x20, 0x2b, 0x3d,
+ 0x20, 0x28, 0x28, 0x75, 0x69, 0x6e, 0x74, 0x29, 0x28, 0x64, 0x61, 0x20, 0x2a, 0x20, 0x64, 0x61, 0x29, 0x20, 0x3e, 0x3e, 0x20, 0x37, 0x55, 0x29, 0x3b, 0x0d, 0x0a, 0x09, 0x09, 0x7d, 0x0d, 0x0a,
+ 0x09, 0x09, 0x0d, 0x0a, 0x09, 0x09, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x69, 0x64, 0x3b, 0x0d, 0x0a, 0x23, 0x65, 0x6e, 0x64, 0x69, 0x66, 0x0d, 0x0a, 0x09, 0x7d, 0x0d, 0x0a, 0x09, 0x65,
+ 0x6c, 0x73, 0x65, 0x20, 0x69, 0x66, 0x20, 0x28, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x29, 0x0d, 0x0a, 0x09, 0x7b, 0x0d, 0x0a, 0x09, 0x09, 0x69, 0x6e, 0x74, 0x20, 0x64, 0x72, 0x20, 0x3d, 0x20, 0x65,
+ 0x31, 0x2e, 0x78, 0x20, 0x2d, 0x20, 0x65, 0x32, 0x2e, 0x78, 0x3b, 0x0d, 0x0a, 0x09, 0x09, 0x69, 0x6e, 0x74, 0x20, 0x64, 0x67, 0x20, 0x3d, 0x20, 0x65, 0x31, 0x2e, 0x79, 0x20, 0x2d, 0x20, 0x65,
+ 0x32, 0x2e, 0x79, 0x3b, 0x0d, 0x0a, 0x09, 0x09, 0x69, 0x6e, 0x74, 0x20, 0x64, 0x62, 0x20, 0x3d, 0x20, 0x65, 0x31, 0x2e, 0x7a, 0x20, 0x2d, 0x20, 0x65, 0x32, 0x2e, 0x7a, 0x3b, 0x09, 0x0d, 0x0a,
+ 0x09, 0x09, 0x69, 0x6e, 0x74, 0x20, 0x64, 0x61, 0x20, 0x3d, 0x20, 0x65, 0x31, 0x2e, 0x77, 0x20, 0x2d, 0x20, 0x65, 0x32, 0x2e, 0x77, 0x3b, 0x0d, 0x0a, 0x09, 0x09, 0x72, 0x65, 0x74, 0x75, 0x72,
+ 0x6e, 0x20, 0x64, 0x72, 0x20, 0x2a, 0x20, 0x64, 0x72, 0x20, 0x2b, 0x20, 0x64, 0x67, 0x20, 0x2a, 0x20, 0x64, 0x67, 0x20, 0x2b, 0x20, 0x64, 0x62, 0x20, 0x2a, 0x20, 0x64, 0x62, 0x20, 0x2b, 0x20,
+ 0x64, 0x61, 0x20, 0x2a, 0x20, 0x64, 0x61, 0x3b, 0x0d, 0x0a, 0x09, 0x7d, 0x0d, 0x0a, 0x09, 0x65, 0x6c, 0x73, 0x65, 0x0d, 0x0a, 0x09, 0x7b, 0x0d, 0x0a, 0x09, 0x09, 0x69, 0x6e, 0x74, 0x20, 0x64,
+ 0x72, 0x20, 0x3d, 0x20, 0x65, 0x31, 0x2e, 0x78, 0x20, 0x2d, 0x20, 0x65, 0x32, 0x2e, 0x78, 0x3b, 0x0d, 0x0a, 0x09, 0x09, 0x69, 0x6e, 0x74, 0x20, 0x64, 0x67, 0x20, 0x3d, 0x20, 0x65, 0x31, 0x2e,
+ 0x79, 0x20, 0x2d, 0x20, 0x65, 0x32, 0x2e, 0x79, 0x3b, 0x0d, 0x0a, 0x09, 0x09, 0x69, 0x6e, 0x74, 0x20, 0x64, 0x62, 0x20, 0x3d, 0x20, 0x65, 0x31, 0x2e, 0x7a, 0x20, 0x2d, 0x20, 0x65, 0x32, 0x2e,
+ 0x7a, 0x3b, 0x09, 0x0d, 0x0a, 0x09, 0x09, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x64, 0x72, 0x20, 0x2a, 0x20, 0x64, 0x72, 0x20, 0x2b, 0x20, 0x64, 0x67, 0x20, 0x2a, 0x20, 0x64, 0x67, 0x20,
+ 0x2b, 0x20, 0x64, 0x62, 0x20, 0x2a, 0x20, 0x64, 0x62, 0x3b, 0x0d, 0x0a, 0x09, 0x7d, 0x0d, 0x0a, 0x7d, 0x0d, 0x0a, 0x0d, 0x0a, 0x74, 0x79, 0x70, 0x65, 0x64, 0x65, 0x66, 0x20, 0x73, 0x74, 0x72,
+ 0x75, 0x63, 0x74, 0x20, 0x5f, 0x5f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x5f, 0x5f, 0x20, 0x28, 0x28, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x29, 0x29, 0x20, 0x65, 0x74, 0x63,
+ 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x74, 0x61, 0x67, 0x0d, 0x0a, 0x7b, 0x0d, 0x0a, 0x09, 0x2f, 0x2f, 0x20, 0x62, 0x69, 0x67, 0x20, 0x65, 0x6e, 0x64, 0x69, 0x61, 0x6e, 0x20, 0x75, 0x69,
+ 0x6e, 0x74, 0x36, 0x34, 0x3a, 0x0d, 0x0a, 0x09, 0x2f, 0x2f, 0x20, 0x62, 0x69, 0x74, 0x20, 0x6f, 0x66, 0x73, 0x3a, 0x20, 0x20, 0x35, 0x36, 0x20, 0x20, 0x34, 0x38, 0x20, 0x20, 0x34, 0x30, 0x20,
+ 0x20, 0x33, 0x32, 0x20, 0x20, 0x32, 0x34, 0x20, 0x20, 0x31, 0x36, 0x20, 0x20, 0x20, 0x38, 0x20, 0x20, 0x20, 0x30, 0x0d, 0x0a, 0x09, 0x2f, 0x2f, 0x20, 0x62, 0x79, 0x74, 0x65, 0x20, 0x6f, 0x66,
+ 0x73, 0x3a, 0x20, 0x62, 0x30, 0x2c, 0x20, 0x62, 0x31, 0x2c, 0x20, 0x62, 0x32, 0x2c, 0x20, 0x62, 0x33, 0x2c, 0x20, 0x62, 0x34, 0x2c, 0x20, 0x62, 0x35, 0x2c, 0x20, 0x62, 0x36, 0x2c, 0x20, 0x62,
+ 0x37, 0x20, 0x0d, 0x0a, 0x09, 0x75, 0x6e, 0x69, 0x6f, 0x6e, 0x0d, 0x0a, 0x09, 0x7b, 0x0d, 0x0a, 0x09, 0x09, 0x75, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x5f, 0x74, 0x20, 0x6d, 0x5f, 0x75, 0x69, 0x6e,
+ 0x74, 0x36, 0x34, 0x3b, 0x0d, 0x0a, 0x09, 0x09, 0x75, 0x69, 0x6e, 0x74, 0x38, 0x5f, 0x74, 0x20, 0x6d, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x5b, 0x38, 0x5d, 0x3b, 0x0d, 0x0a, 0x09, 0x7d, 0x3b,
+ 0x0d, 0x0a, 0x0d, 0x0a, 0x7d, 0x20, 0x65, 0x74, 0x63, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x3b, 0x0d, 0x0a, 0x0d, 0x0a, 0x65, 0x6e, 0x75, 0x6d, 0x20, 0x65, 0x74, 0x63, 0x5f, 0x63, 0x6f, 0x6e,
+ 0x73, 0x74, 0x61, 0x6e, 0x74, 0x73, 0x0d, 0x0a, 0x7b, 0x0d, 0x0a, 0x09, 0x63, 0x45, 0x54, 0x43, 0x31, 0x42, 0x79, 0x74, 0x65, 0x73, 0x50, 0x65, 0x72, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x20, 0x3d,
+ 0x20, 0x38, 0x55, 0x2c, 0x0d, 0x0a, 0x0d, 0x0a, 0x09, 0x63, 0x45, 0x54, 0x43, 0x31, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x42, 0x69, 0x74, 0x73, 0x20, 0x3d, 0x20, 0x32, 0x55, 0x2c,
+ 0x0d, 0x0a, 0x09, 0x63, 0x45, 0x54, 0x43, 0x31, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x20, 0x3d, 0x20, 0x31, 0x55, 0x20, 0x3c, 0x3c, 0x20, 0x63,
+ 0x45, 0x54, 0x43, 0x31, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x42, 0x69, 0x74, 0x73, 0x2c, 0x0d, 0x0a, 0x09, 0x63, 0x45, 0x54, 0x43, 0x31, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f,
+ 0x72, 0x4d, 0x61, 0x73, 0x6b, 0x20, 0x3d, 0x20, 0x63, 0x45, 0x54, 0x43, 0x31, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x20, 0x2d, 0x20, 0x31, 0x55,
+ 0x2c, 0x0d, 0x0a, 0x0d, 0x0a, 0x09, 0x63, 0x45, 0x54, 0x43, 0x31, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x53, 0x68, 0x69, 0x66, 0x74, 0x20, 0x3d, 0x20, 0x32, 0x55, 0x2c, 0x0d, 0x0a, 0x09, 0x63, 0x45,
+ 0x54, 0x43, 0x31, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x53, 0x69, 0x7a, 0x65, 0x20, 0x3d, 0x20, 0x31, 0x55, 0x20, 0x3c, 0x3c, 0x20, 0x63, 0x45, 0x54, 0x43, 0x31, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x53,
+ 0x68, 0x69, 0x66, 0x74, 0x2c, 0x0d, 0x0a, 0x0d, 0x0a, 0x09, 0x63, 0x45, 0x54, 0x43, 0x31, 0x4c, 0x53, 0x42, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x49, 0x6e, 0x64, 0x69, 0x63, 0x65,
+ 0x73, 0x42, 0x69, 0x74, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x20, 0x3d, 0x20, 0x30, 0x2c, 0x0d, 0x0a, 0x09, 0x63, 0x45, 0x54, 0x43, 0x31, 0x4d, 0x53, 0x42, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74,
+ 0x6f, 0x72, 0x49, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x42, 0x69, 0x74, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x20, 0x3d, 0x20, 0x31, 0x36, 0x2c, 0x0d, 0x0a, 0x0d, 0x0a, 0x09, 0x63, 0x45, 0x54,
+ 0x43, 0x31, 0x46, 0x6c, 0x69, 0x70, 0x42, 0x69, 0x74, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x20, 0x3d, 0x20, 0x33, 0x32, 0x2c, 0x0d, 0x0a, 0x09, 0x63, 0x45, 0x54, 0x43, 0x31, 0x44, 0x69, 0x66,
+ 0x66, 0x42, 0x69, 0x74, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x20, 0x3d, 0x20, 0x33, 0x33, 0x2c, 0x0d, 0x0a, 0x0d, 0x0a, 0x09, 0x63, 0x45, 0x54, 0x43, 0x31, 0x49, 0x6e, 0x74, 0x65, 0x6e, 0x4d,
+ 0x6f, 0x64, 0x69, 0x66, 0x69, 0x65, 0x72, 0x4e, 0x75, 0x6d, 0x42, 0x69, 0x74, 0x73, 0x20, 0x3d, 0x20, 0x33, 0x2c, 0x0d, 0x0a, 0x09, 0x63, 0x45, 0x54, 0x43, 0x31, 0x49, 0x6e, 0x74, 0x65, 0x6e,
+ 0x4d, 0x6f, 0x64, 0x69, 0x66, 0x69, 0x65, 0x72, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x20, 0x3d, 0x20, 0x31, 0x20, 0x3c, 0x3c, 0x20, 0x63, 0x45, 0x54, 0x43, 0x31, 0x49, 0x6e, 0x74, 0x65, 0x6e,
+ 0x4d, 0x6f, 0x64, 0x69, 0x66, 0x69, 0x65, 0x72, 0x4e, 0x75, 0x6d, 0x42, 0x69, 0x74, 0x73, 0x2c, 0x0d, 0x0a, 0x09, 0x63, 0x45, 0x54, 0x43, 0x31, 0x52, 0x69, 0x67, 0x68, 0x74, 0x49, 0x6e, 0x74,
+ 0x65, 0x6e, 0x4d, 0x6f, 0x64, 0x69, 0x66, 0x69, 0x65, 0x72, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x69, 0x74, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x20, 0x3d, 0x20, 0x33, 0x34, 0x2c, 0x0d, 0x0a,
+ 0x09, 0x63, 0x45, 0x54, 0x43, 0x31, 0x4c, 0x65, 0x66, 0x74, 0x49, 0x6e, 0x74, 0x65, 0x6e, 0x4d, 0x6f, 0x64, 0x69, 0x66, 0x69, 0x65, 0x72, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x69, 0x74, 0x4f,
+ 0x66, 0x66, 0x73, 0x65, 0x74, 0x20, 0x3d, 0x20, 0x33, 0x37, 0x2c, 0x0d, 0x0a, 0x0d, 0x0a, 0x09, 0x2f, 0x2f, 0x20, 0x42, 0x61, 0x73, 0x65, 0x2b, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x20, 0x65, 0x6e,
+ 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x20, 0x28, 0x35, 0x20, 0x62, 0x69, 0x74, 0x20, 0x62, 0x61, 0x73, 0x65, 0x73, 0x2c, 0x20, 0x33, 0x20, 0x62, 0x69, 0x74, 0x20, 0x64, 0x65, 0x6c, 0x74, 0x61,
+ 0x29, 0x0d, 0x0a, 0x09, 0x63, 0x45, 0x54, 0x43, 0x31, 0x42, 0x61, 0x73, 0x65, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x43, 0x6f, 0x6d, 0x70, 0x4e, 0x75, 0x6d, 0x42, 0x69, 0x74, 0x73, 0x20, 0x3d, 0x20,
+ 0x35, 0x2c, 0x0d, 0x0a, 0x09, 0x63, 0x45, 0x54, 0x43, 0x31, 0x42, 0x61, 0x73, 0x65, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x43, 0x6f, 0x6d, 0x70, 0x4d, 0x61, 0x78, 0x20, 0x3d, 0x20, 0x31, 0x20, 0x3c,
+ 0x3c, 0x20, 0x63, 0x45, 0x54, 0x43, 0x31, 0x42, 0x61, 0x73, 0x65, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x43, 0x6f, 0x6d, 0x70, 0x4e, 0x75, 0x6d, 0x42, 0x69, 0x74, 0x73, 0x2c, 0x0d, 0x0a, 0x0d, 0x0a,
+ 0x09, 0x63, 0x45, 0x54, 0x43, 0x31, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x43, 0x6f, 0x6d, 0x70, 0x4e, 0x75, 0x6d, 0x42, 0x69, 0x74, 0x73, 0x20, 0x3d, 0x20, 0x33, 0x2c,
+ 0x0d, 0x0a, 0x09, 0x63, 0x45, 0x54, 0x43, 0x31, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x43, 0x6f, 0x6d, 0x70, 0x20, 0x3d, 0x20, 0x31, 0x20, 0x3c, 0x3c, 0x20, 0x63, 0x45,
+ 0x54, 0x43, 0x31, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x43, 0x6f, 0x6d, 0x70, 0x4e, 0x75, 0x6d, 0x42, 0x69, 0x74, 0x73, 0x2c, 0x0d, 0x0a, 0x09, 0x63, 0x45, 0x54, 0x43,
+ 0x31, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x43, 0x6f, 0x6d, 0x70, 0x4d, 0x61, 0x78, 0x20, 0x3d, 0x20, 0x31, 0x20, 0x3c, 0x3c, 0x20, 0x63, 0x45, 0x54, 0x43, 0x31, 0x44,
+ 0x65, 0x6c, 0x74, 0x61, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x43, 0x6f, 0x6d, 0x70, 0x4e, 0x75, 0x6d, 0x42, 0x69, 0x74, 0x73, 0x2c, 0x0d, 0x0a, 0x0d, 0x0a, 0x09, 0x63, 0x45, 0x54, 0x43, 0x31, 0x42,
+ 0x61, 0x73, 0x65, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x35, 0x52, 0x42, 0x69, 0x74, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x20, 0x3d, 0x20, 0x35, 0x39, 0x2c, 0x0d, 0x0a, 0x09, 0x63, 0x45, 0x54, 0x43,
+ 0x31, 0x42, 0x61, 0x73, 0x65, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x35, 0x47, 0x42, 0x69, 0x74, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x20, 0x3d, 0x20, 0x35, 0x31, 0x2c, 0x0d, 0x0a, 0x09, 0x63, 0x45,
+ 0x54, 0x43, 0x31, 0x42, 0x61, 0x73, 0x65, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x35, 0x42, 0x42, 0x69, 0x74, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x20, 0x3d, 0x20, 0x34, 0x33, 0x2c, 0x0d, 0x0a, 0x0d,
+ 0x0a, 0x09, 0x63, 0x45, 0x54, 0x43, 0x31, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x33, 0x52, 0x42, 0x69, 0x74, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x20, 0x3d, 0x20, 0x35,
+ 0x36, 0x2c, 0x0d, 0x0a, 0x09, 0x63, 0x45, 0x54, 0x43, 0x31, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x33, 0x47, 0x42, 0x69, 0x74, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x20,
+ 0x3d, 0x20, 0x34, 0x38, 0x2c, 0x0d, 0x0a, 0x09, 0x63, 0x45, 0x54, 0x43, 0x31, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x33, 0x42, 0x42, 0x69, 0x74, 0x4f, 0x66, 0x66, 0x73,
+ 0x65, 0x74, 0x20, 0x3d, 0x20, 0x34, 0x30, 0x2c, 0x0d, 0x0a, 0x0d, 0x0a, 0x09, 0x2f, 0x2f, 0x20, 0x41, 0x62, 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x65, 0x20, 0x28, 0x6e, 0x6f, 0x6e, 0x2d, 0x64, 0x65,
+ 0x6c, 0x74, 0x61, 0x29, 0x20, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x20, 0x28, 0x74, 0x77, 0x6f, 0x20, 0x34, 0x2d, 0x62, 0x69, 0x74, 0x20, 0x70, 0x65, 0x72, 0x20, 0x63, 0x6f, 0x6d,
+ 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x20, 0x62, 0x61, 0x73, 0x65, 0x73, 0x29, 0x0d, 0x0a, 0x09, 0x63, 0x45, 0x54, 0x43, 0x31, 0x41, 0x62, 0x73, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x43, 0x6f, 0x6d,
+ 0x70, 0x4e, 0x75, 0x6d, 0x42, 0x69, 0x74, 0x73, 0x20, 0x3d, 0x20, 0x34, 0x2c, 0x0d, 0x0a, 0x09, 0x63, 0x45, 0x54, 0x43, 0x31, 0x41, 0x62, 0x73, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x43, 0x6f, 0x6d,
+ 0x70, 0x4d, 0x61, 0x78, 0x20, 0x3d, 0x20, 0x31, 0x20, 0x3c, 0x3c, 0x20, 0x63, 0x45, 0x54, 0x43, 0x31, 0x41, 0x62, 0x73, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x43, 0x6f, 0x6d, 0x70, 0x4e, 0x75, 0x6d,
+ 0x42, 0x69, 0x74, 0x73, 0x2c, 0x0d, 0x0a, 0x0d, 0x0a, 0x09, 0x63, 0x45, 0x54, 0x43, 0x31, 0x41, 0x62, 0x73, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x34, 0x52, 0x31, 0x42, 0x69, 0x74, 0x4f, 0x66, 0x66,
+ 0x73, 0x65, 0x74, 0x20, 0x3d, 0x20, 0x36, 0x30, 0x2c, 0x0d, 0x0a, 0x09, 0x63, 0x45, 0x54, 0x43, 0x31, 0x41, 0x62, 0x73, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x34, 0x47, 0x31, 0x42, 0x69, 0x74, 0x4f,
+ 0x66, 0x66, 0x73, 0x65, 0x74, 0x20, 0x3d, 0x20, 0x35, 0x32, 0x2c, 0x0d, 0x0a, 0x09, 0x63, 0x45, 0x54, 0x43, 0x31, 0x41, 0x62, 0x73, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x34, 0x42, 0x31, 0x42, 0x69,
+ 0x74, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x20, 0x3d, 0x20, 0x34, 0x34, 0x2c, 0x0d, 0x0a, 0x0d, 0x0a, 0x09, 0x63, 0x45, 0x54, 0x43, 0x31, 0x41, 0x62, 0x73, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x34,
+ 0x52, 0x32, 0x42, 0x69, 0x74, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x20, 0x3d, 0x20, 0x35, 0x36, 0x2c, 0x0d, 0x0a, 0x09, 0x63, 0x45, 0x54, 0x43, 0x31, 0x41, 0x62, 0x73, 0x43, 0x6f, 0x6c, 0x6f,
+ 0x72, 0x34, 0x47, 0x32, 0x42, 0x69, 0x74, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x20, 0x3d, 0x20, 0x34, 0x38, 0x2c, 0x0d, 0x0a, 0x09, 0x63, 0x45, 0x54, 0x43, 0x31, 0x41, 0x62, 0x73, 0x43, 0x6f,
+ 0x6c, 0x6f, 0x72, 0x34, 0x42, 0x32, 0x42, 0x69, 0x74, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x20, 0x3d, 0x20, 0x34, 0x30, 0x2c, 0x0d, 0x0a, 0x0d, 0x0a, 0x09, 0x63, 0x45, 0x54, 0x43, 0x31, 0x43,
+ 0x6f, 0x6c, 0x6f, 0x72, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x4d, 0x69, 0x6e, 0x20, 0x3d, 0x20, 0x2d, 0x34, 0x2c, 0x0d, 0x0a, 0x09, 0x63, 0x45, 0x54, 0x43, 0x31, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x44,
+ 0x65, 0x6c, 0x74, 0x61, 0x4d, 0x61, 0x78, 0x20, 0x3d, 0x20, 0x33, 0x2c, 0x0d, 0x0a, 0x0d, 0x0a, 0x09, 0x2f, 0x2f, 0x20, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x33, 0x3a, 0x0d, 0x0a, 0x09, 0x2f, 0x2f,
+ 0x20, 0x30, 0x20, 0x20, 0x20, 0x31, 0x20, 0x20, 0x20, 0x32, 0x20, 0x20, 0x20, 0x33, 0x20, 0x20, 0x20, 0x34, 0x20, 0x20, 0x20, 0x35, 0x20, 0x20, 0x20, 0x36, 0x20, 0x20, 0x20, 0x37, 0x0d, 0x0a,
+ 0x09, 0x2f, 0x2f, 0x20, 0x30, 0x30, 0x30, 0x20, 0x30, 0x30, 0x31, 0x20, 0x30, 0x31, 0x30, 0x20, 0x30, 0x31, 0x31, 0x20, 0x31, 0x30, 0x30, 0x20, 0x31, 0x30, 0x31, 0x20, 0x31, 0x31, 0x30, 0x20,
+ 0x31, 0x31, 0x31, 0x0d, 0x0a, 0x09, 0x2f, 0x2f, 0x20, 0x30, 0x20, 0x20, 0x20, 0x31, 0x20, 0x20, 0x20, 0x32, 0x20, 0x20, 0x20, 0x33, 0x20, 0x20, 0x20, 0x2d, 0x34, 0x20, 0x20, 0x2d, 0x33, 0x20,
+ 0x20, 0x2d, 0x32, 0x20, 0x20, 0x2d, 0x31, 0x0d, 0x0a, 0x7d, 0x3b, 0x0d, 0x0a, 0x0d, 0x0a, 0x23, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x20, 0x42, 0x41, 0x53, 0x49, 0x53, 0x55, 0x5f, 0x45, 0x54,
+ 0x43, 0x31, 0x5f, 0x43, 0x4c, 0x55, 0x53, 0x54, 0x45, 0x52, 0x5f, 0x46, 0x49, 0x54, 0x5f, 0x4f, 0x52, 0x44, 0x45, 0x52, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x53, 0x49, 0x5a, 0x45, 0x20,
+ 0x28, 0x31, 0x36, 0x35, 0x29, 0x0d, 0x0a, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x20, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x7b, 0x20, 0x75, 0x69, 0x6e, 0x74, 0x38, 0x5f, 0x74,
+ 0x20, 0x6d, 0x5f, 0x76, 0x5b, 0x34, 0x5d, 0x3b, 0x20, 0x7d, 0x20, 0x67, 0x5f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x66, 0x69, 0x74, 0x5f, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x74,
+ 0x61, 0x62, 0x5b, 0x42, 0x41, 0x53, 0x49, 0x53, 0x55, 0x5f, 0x45, 0x54, 0x43, 0x31, 0x5f, 0x43, 0x4c, 0x55, 0x53, 0x54, 0x45, 0x52, 0x5f, 0x46, 0x49, 0x54, 0x5f, 0x4f, 0x52, 0x44, 0x45, 0x52,
+ 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x53, 0x49, 0x5a, 0x45, 0x5d, 0x20, 0x3d, 0x0d, 0x0a, 0x7b, 0x0d, 0x0a, 0x09, 0x7b, 0x20, 0x7b, 0x20, 0x30, 0x2c, 0x20, 0x30, 0x2c, 0x20, 0x30, 0x2c,
+ 0x20, 0x38, 0x20, 0x7d, 0x20, 0x7d, 0x2c, 0x7b, 0x20, 0x7b, 0x20, 0x30, 0x2c, 0x20, 0x35, 0x2c, 0x20, 0x32, 0x2c, 0x20, 0x31, 0x20, 0x7d, 0x20, 0x7d, 0x2c, 0x7b, 0x20, 0x7b, 0x20, 0x30, 0x2c,
+ 0x20, 0x36, 0x2c, 0x20, 0x31, 0x2c, 0x20, 0x31, 0x20, 0x7d, 0x20, 0x7d, 0x2c, 0x7b, 0x20, 0x7b, 0x20, 0x30, 0x2c, 0x20, 0x37, 0x2c, 0x20, 0x30, 0x2c, 0x20, 0x31, 0x20, 0x7d, 0x20, 0x7d, 0x2c,
+ 0x7b, 0x20, 0x7b, 0x20, 0x30, 0x2c, 0x20, 0x37, 0x2c, 0x20, 0x31, 0x2c, 0x20, 0x30, 0x20, 0x7d, 0x20, 0x7d, 0x2c, 0x0d, 0x0a, 0x09, 0x7b, 0x20, 0x7b, 0x20, 0x30, 0x2c, 0x20, 0x30, 0x2c, 0x20,
+ 0x38, 0x2c, 0x20, 0x30, 0x20, 0x7d, 0x20, 0x7d, 0x2c, 0x7b, 0x20, 0x7b, 0x20, 0x30, 0x2c, 0x20, 0x30, 0x2c, 0x20, 0x33, 0x2c, 0x20, 0x35, 0x20, 0x7d, 0x20, 0x7d, 0x2c, 0x7b, 0x20, 0x7b, 0x20,
+ 0x30, 0x2c, 0x20, 0x31, 0x2c, 0x20, 0x37, 0x2c, 0x20, 0x30, 0x20, 0x7d, 0x20, 0x7d, 0x2c, 0x7b, 0x20, 0x7b, 0x20, 0x30, 0x2c, 0x20, 0x30, 0x2c, 0x20, 0x34, 0x2c, 0x20, 0x34, 0x20, 0x7d, 0x20,
+ 0x7d, 0x2c, 0x7b, 0x20, 0x7b, 0x20, 0x30, 0x2c, 0x20, 0x30, 0x2c, 0x20, 0x32, 0x2c, 0x20, 0x36, 0x20, 0x7d, 0x20, 0x7d, 0x2c, 0x0d, 0x0a, 0x09, 0x7b, 0x20, 0x7b, 0x20, 0x30, 0x2c, 0x20, 0x30,
+ 0x2c, 0x20, 0x37, 0x2c, 0x20, 0x31, 0x20, 0x7d, 0x20, 0x7d, 0x2c, 0x7b, 0x20, 0x7b, 0x20, 0x30, 0x2c, 0x20, 0x30, 0x2c, 0x20, 0x31, 0x2c, 0x20, 0x37, 0x20, 0x7d, 0x20, 0x7d, 0x2c, 0x7b, 0x20,
+ 0x7b, 0x20, 0x30, 0x2c, 0x20, 0x30, 0x2c, 0x20, 0x35, 0x2c, 0x20, 0x33, 0x20, 0x7d, 0x20, 0x7d, 0x2c, 0x7b, 0x20, 0x7b, 0x20, 0x31, 0x2c, 0x20, 0x36, 0x2c, 0x20, 0x30, 0x2c, 0x20, 0x31, 0x20,
+ 0x7d, 0x20, 0x7d, 0x2c, 0x7b, 0x20, 0x7b, 0x20, 0x30, 0x2c, 0x20, 0x30, 0x2c, 0x20, 0x36, 0x2c, 0x20, 0x32, 0x20, 0x7d, 0x20, 0x7d, 0x2c, 0x0d, 0x0a, 0x09, 0x7b, 0x20, 0x7b, 0x20, 0x30, 0x2c,
+ 0x20, 0x32, 0x2c, 0x20, 0x36, 0x2c, 0x20, 0x30, 0x20, 0x7d, 0x20, 0x7d, 0x2c, 0x7b, 0x20, 0x7b, 0x20, 0x32, 0x2c, 0x20, 0x34, 0x2c, 0x20, 0x32, 0x2c, 0x20, 0x30, 0x20, 0x7d, 0x20, 0x7d, 0x2c,
+ 0x7b, 0x20, 0x7b, 0x20, 0x30, 0x2c, 0x20, 0x33, 0x2c, 0x20, 0x35, 0x2c, 0x20, 0x30, 0x20, 0x7d, 0x20, 0x7d, 0x2c, 0x7b, 0x20, 0x7b, 0x20, 0x33, 0x2c, 0x20, 0x33, 0x2c, 0x20, 0x31, 0x2c, 0x20,
+ 0x31, 0x20, 0x7d, 0x20, 0x7d, 0x2c, 0x7b, 0x20, 0x7b, 0x20, 0x34, 0x2c, 0x20, 0x32, 0x2c, 0x20, 0x30, 0x2c, 0x20, 0x32, 0x20, 0x7d, 0x20, 0x7d, 0x2c, 0x0d, 0x0a, 0x09, 0x7b, 0x20, 0x7b, 0x20,
+ 0x31, 0x2c, 0x20, 0x35, 0x2c, 0x20, 0x32, 0x2c, 0x20, 0x30, 0x20, 0x7d, 0x20, 0x7d, 0x2c, 0x7b, 0x20, 0x7b, 0x20, 0x30, 0x2c, 0x20, 0x35, 0x2c, 0x20, 0x33, 0x2c, 0x20, 0x30, 0x20, 0x7d, 0x20,
+ 0x7d, 0x2c, 0x7b, 0x20, 0x7b, 0x20, 0x30, 0x2c, 0x20, 0x36, 0x2c, 0x20, 0x32, 0x2c, 0x20, 0x30, 0x20, 0x7d, 0x20, 0x7d, 0x2c, 0x7b, 0x20, 0x7b, 0x20, 0x32, 0x2c, 0x20, 0x34, 0x2c, 0x20, 0x31,
+ 0x2c, 0x20, 0x31, 0x20, 0x7d, 0x20, 0x7d, 0x2c, 0x7b, 0x20, 0x7b, 0x20, 0x35, 0x2c, 0x20, 0x31, 0x2c, 0x20, 0x30, 0x2c, 0x20, 0x32, 0x20, 0x7d, 0x20, 0x7d, 0x2c, 0x0d, 0x0a, 0x09, 0x7b, 0x20,
+ 0x7b, 0x20, 0x36, 0x2c, 0x20, 0x31, 0x2c, 0x20, 0x31, 0x2c, 0x20, 0x30, 0x20, 0x7d, 0x20, 0x7d, 0x2c, 0x7b, 0x20, 0x7b, 0x20, 0x33, 0x2c, 0x20, 0x33, 0x2c, 0x20, 0x30, 0x2c, 0x20, 0x32, 0x20,
+ 0x7d, 0x20, 0x7d, 0x2c, 0x7b, 0x20, 0x7b, 0x20, 0x36, 0x2c, 0x20, 0x30, 0x2c, 0x20, 0x30, 0x2c, 0x20, 0x32, 0x20, 0x7d, 0x20, 0x7d, 0x2c, 0x7b, 0x20, 0x7b, 0x20, 0x30, 0x2c, 0x20, 0x38, 0x2c,
+ 0x20, 0x30, 0x2c, 0x20, 0x30, 0x20, 0x7d, 0x20, 0x7d, 0x2c, 0x7b, 0x20, 0x7b, 0x20, 0x36, 0x2c, 0x20, 0x31, 0x2c, 0x20, 0x30, 0x2c, 0x20, 0x31, 0x20, 0x7d, 0x20, 0x7d, 0x2c, 0x0d, 0x0a, 0x09,
+ 0x7b, 0x20, 0x7b, 0x20, 0x30, 0x2c, 0x20, 0x31, 0x2c, 0x20, 0x36, 0x2c, 0x20, 0x31, 0x20, 0x7d, 0x20, 0x7d, 0x2c, 0x7b, 0x20, 0x7b, 0x20, 0x31, 0x2c, 0x20, 0x36, 0x2c, 0x20, 0x31, 0x2c, 0x20,
+ 0x30, 0x20, 0x7d, 0x20, 0x7d, 0x2c, 0x7b, 0x20, 0x7b, 0x20, 0x34, 0x2c, 0x20, 0x31, 0x2c, 0x20, 0x33, 0x2c, 0x20, 0x30, 0x20, 0x7d, 0x20, 0x7d, 0x2c, 0x7b, 0x20, 0x7b, 0x20, 0x30, 0x2c, 0x20,
+ 0x32, 0x2c, 0x20, 0x35, 0x2c, 0x20, 0x31, 0x20, 0x7d, 0x20, 0x7d, 0x2c, 0x7b, 0x20, 0x7b, 0x20, 0x35, 0x2c, 0x20, 0x30, 0x2c, 0x20, 0x33, 0x2c, 0x20, 0x30, 0x20, 0x7d, 0x20, 0x7d, 0x2c, 0x0d,
+ 0x0a, 0x09, 0x7b, 0x20, 0x7b, 0x20, 0x35, 0x2c, 0x20, 0x33, 0x2c, 0x20, 0x30, 0x2c, 0x20, 0x30, 0x20, 0x7d, 0x20, 0x7d, 0x2c, 0x7b, 0x20, 0x7b, 0x20, 0x30, 0x2c, 0x20, 0x31, 0x2c, 0x20, 0x35,
+ 0x2c, 0x20, 0x32, 0x20, 0x7d, 0x20, 0x7d, 0x2c, 0x7b, 0x20, 0x7b, 0x20, 0x30, 0x2c, 0x20, 0x33, 0x2c, 0x20, 0x34, 0x2c, 0x20, 0x31, 0x20, 0x7d, 0x20, 0x7d, 0x2c, 0x7b, 0x20, 0x7b, 0x20, 0x32,
+ 0x2c, 0x20, 0x35, 0x2c, 0x20, 0x31, 0x2c, 0x20, 0x30, 0x20, 0x7d, 0x20, 0x7d, 0x2c, 0x7b, 0x20, 0x7b, 0x20, 0x31, 0x2c, 0x20, 0x37, 0x2c, 0x20, 0x30, 0x2c, 0x20, 0x30, 0x20, 0x7d, 0x20, 0x7d,
+ 0x2c, 0x0d, 0x0a, 0x09, 0x7b, 0x20, 0x7b, 0x20, 0x30, 0x2c, 0x20, 0x31, 0x2c, 0x20, 0x34, 0x2c, 0x20, 0x33, 0x20, 0x7d, 0x20, 0x7d, 0x2c, 0x7b, 0x20, 0x7b, 0x20, 0x36, 0x2c, 0x20, 0x30, 0x2c,
+ 0x20, 0x32, 0x2c, 0x20, 0x30, 0x20, 0x7d, 0x20, 0x7d, 0x2c, 0x7b, 0x20, 0x7b, 0x20, 0x30, 0x2c, 0x20, 0x34, 0x2c, 0x20, 0x34, 0x2c, 0x20, 0x30, 0x20, 0x7d, 0x20, 0x7d, 0x2c, 0x7b, 0x20, 0x7b,
+ 0x20, 0x32, 0x2c, 0x20, 0x36, 0x2c, 0x20, 0x30, 0x2c, 0x20, 0x30, 0x20, 0x7d, 0x20, 0x7d, 0x2c, 0x7b, 0x20, 0x7b, 0x20, 0x30, 0x2c, 0x20, 0x32, 0x2c, 0x20, 0x34, 0x2c, 0x20, 0x32, 0x20, 0x7d,
+ 0x20, 0x7d, 0x2c, 0x0d, 0x0a, 0x09, 0x7b, 0x20, 0x7b, 0x20, 0x30, 0x2c, 0x20, 0x35, 0x2c, 0x20, 0x31, 0x2c, 0x20, 0x32, 0x20, 0x7d, 0x20, 0x7d, 0x2c, 0x7b, 0x20, 0x7b, 0x20, 0x30, 0x2c, 0x20,
+ 0x36, 0x2c, 0x20, 0x30, 0x2c, 0x20, 0x32, 0x20, 0x7d, 0x20, 0x7d, 0x2c, 0x7b, 0x20, 0x7b, 0x20, 0x33, 0x2c, 0x20, 0x35, 0x2c, 0x20, 0x30, 0x2c, 0x20, 0x30, 0x20, 0x7d, 0x20, 0x7d, 0x2c, 0x7b,
+ 0x20, 0x7b, 0x20, 0x30, 0x2c, 0x20, 0x34, 0x2c, 0x20, 0x33, 0x2c, 0x20, 0x31, 0x20, 0x7d, 0x20, 0x7d, 0x2c, 0x7b, 0x20, 0x7b, 0x20, 0x33, 0x2c, 0x20, 0x34, 0x2c, 0x20, 0x31, 0x2c, 0x20, 0x30,
+ 0x20, 0x7d, 0x20, 0x7d, 0x2c, 0x0d, 0x0a, 0x09, 0x7b, 0x20, 0x7b, 0x20, 0x34, 0x2c, 0x20, 0x33, 0x2c, 0x20, 0x31, 0x2c, 0x20, 0x30, 0x20, 0x7d, 0x20, 0x7d, 0x2c, 0x7b, 0x20, 0x7b, 0x20, 0x31,
+ 0x2c, 0x20, 0x35, 0x2c, 0x20, 0x30, 0x2c, 0x20, 0x32, 0x20, 0x7d, 0x20, 0x7d, 0x2c, 0x7b, 0x20, 0x7b, 0x20, 0x30, 0x2c, 0x20, 0x33, 0x2c, 0x20, 0x33, 0x2c, 0x20, 0x32, 0x20, 0x7d, 0x20, 0x7d,
+ 0x2c, 0x7b, 0x20, 0x7b, 0x20, 0x31, 0x2c, 0x20, 0x34, 0x2c, 0x20, 0x31, 0x2c, 0x20, 0x32, 0x20, 0x7d, 0x20, 0x7d, 0x2c, 0x7b, 0x20, 0x7b, 0x20, 0x30, 0x2c, 0x20, 0x34, 0x2c, 0x20, 0x32, 0x2c,
+ 0x20, 0x32, 0x20, 0x7d, 0x20, 0x7d, 0x2c, 0x0d, 0x0a, 0x09, 0x7b, 0x20, 0x7b, 0x20, 0x32, 0x2c, 0x20, 0x33, 0x2c, 0x20, 0x33, 0x2c, 0x20, 0x30, 0x20, 0x7d, 0x20, 0x7d, 0x2c, 0x7b, 0x20, 0x7b,
+ 0x20, 0x34, 0x2c, 0x20, 0x34, 0x2c, 0x20, 0x30, 0x2c, 0x20, 0x30, 0x20, 0x7d, 0x20, 0x7d, 0x2c, 0x7b, 0x20, 0x7b, 0x20, 0x31, 0x2c, 0x20, 0x32, 0x2c, 0x20, 0x34, 0x2c, 0x20, 0x31, 0x20, 0x7d,
+ 0x20, 0x7d, 0x2c, 0x7b, 0x20, 0x7b, 0x20, 0x30, 0x2c, 0x20, 0x35, 0x2c, 0x20, 0x30, 0x2c, 0x20, 0x33, 0x20, 0x7d, 0x20, 0x7d, 0x2c, 0x7b, 0x20, 0x7b, 0x20, 0x30, 0x2c, 0x20, 0x31, 0x2c, 0x20,
+ 0x33, 0x2c, 0x20, 0x34, 0x20, 0x7d, 0x20, 0x7d, 0x2c, 0x0d, 0x0a, 0x09, 0x7b, 0x20, 0x7b, 0x20, 0x31, 0x2c, 0x20, 0x35, 0x2c, 0x20, 0x31, 0x2c, 0x20, 0x31, 0x20, 0x7d, 0x20, 0x7d, 0x2c, 0x7b,
+ 0x20, 0x7b, 0x20, 0x31, 0x2c, 0x20, 0x34, 0x2c, 0x20, 0x32, 0x2c, 0x20, 0x31, 0x20, 0x7d, 0x20, 0x7d, 0x2c, 0x7b, 0x20, 0x7b, 0x20, 0x31, 0x2c, 0x20, 0x33, 0x2c, 0x20, 0x32, 0x2c, 0x20, 0x32,
+ 0x20, 0x7d, 0x20, 0x7d, 0x2c, 0x7b, 0x20, 0x7b, 0x20, 0x35, 0x2c, 0x20, 0x32, 0x2c, 0x20, 0x31, 0x2c, 0x20, 0x30, 0x20, 0x7d, 0x20, 0x7d, 0x2c, 0x7b, 0x20, 0x7b, 0x20, 0x31, 0x2c, 0x20, 0x33,
+ 0x2c, 0x20, 0x33, 0x2c, 0x20, 0x31, 0x20, 0x7d, 0x20, 0x7d, 0x2c, 0x0d, 0x0a, 0x09, 0x7b, 0x20, 0x7b, 0x20, 0x30, 0x2c, 0x20, 0x31, 0x2c, 0x20, 0x32, 0x2c, 0x20, 0x35, 0x20, 0x7d, 0x20, 0x7d,
+ 0x2c, 0x7b, 0x20, 0x7b, 0x20, 0x31, 0x2c, 0x20, 0x31, 0x2c, 0x20, 0x35, 0x2c, 0x20, 0x31, 0x20, 0x7d, 0x20, 0x7d, 0x2c, 0x7b, 0x20, 0x7b, 0x20, 0x30, 0x2c, 0x20, 0x33, 0x2c, 0x20, 0x32, 0x2c,
+ 0x20, 0x33, 0x20, 0x7d, 0x20, 0x7d, 0x2c, 0x7b, 0x20, 0x7b, 0x20, 0x32, 0x2c, 0x20, 0x35, 0x2c, 0x20, 0x30, 0x2c, 0x20, 0x31, 0x20, 0x7d, 0x20, 0x7d, 0x2c, 0x7b, 0x20, 0x7b, 0x20, 0x33, 0x2c,
+ 0x20, 0x32, 0x2c, 0x20, 0x32, 0x2c, 0x20, 0x31, 0x20, 0x7d, 0x20, 0x7d, 0x2c, 0x0d, 0x0a, 0x09, 0x7b, 0x20, 0x7b, 0x20, 0x32, 0x2c, 0x20, 0x33, 0x2c, 0x20, 0x30, 0x2c, 0x20, 0x33, 0x20, 0x7d,
+ 0x20, 0x7d, 0x2c, 0x7b, 0x20, 0x7b, 0x20, 0x31, 0x2c, 0x20, 0x34, 0x2c, 0x20, 0x33, 0x2c, 0x20, 0x30, 0x20, 0x7d, 0x20, 0x7d, 0x2c, 0x7b, 0x20, 0x7b, 0x20, 0x32, 0x2c, 0x20, 0x32, 0x2c, 0x20,
+ 0x31, 0x2c, 0x20, 0x33, 0x20, 0x7d, 0x20, 0x7d, 0x2c, 0x7b, 0x20, 0x7b, 0x20, 0x36, 0x2c, 0x20, 0x32, 0x2c, 0x20, 0x30, 0x2c, 0x20, 0x30, 0x20, 0x7d, 0x20, 0x7d, 0x2c, 0x7b, 0x20, 0x7b, 0x20,
+ 0x31, 0x2c, 0x20, 0x30, 0x2c, 0x20, 0x36, 0x2c, 0x20, 0x31, 0x20, 0x7d, 0x20, 0x7d, 0x2c, 0x0d, 0x0a, 0x09, 0x7b, 0x20, 0x7b, 0x20, 0x33, 0x2c, 0x20, 0x33, 0x2c, 0x20, 0x32, 0x2c, 0x20, 0x30,
+ 0x20, 0x7d, 0x20, 0x7d, 0x2c, 0x7b, 0x20, 0x7b, 0x20, 0x37, 0x2c, 0x20, 0x31, 0x2c, 0x20, 0x30, 0x2c, 0x20, 0x30, 0x20, 0x7d, 0x20, 0x7d, 0x2c, 0x7b, 0x20, 0x7b, 0x20, 0x33, 0x2c, 0x20, 0x31,
+ 0x2c, 0x20, 0x34, 0x2c, 0x20, 0x30, 0x20, 0x7d, 0x20, 0x7d, 0x2c, 0x7b, 0x20, 0x7b, 0x20, 0x30, 0x2c, 0x20, 0x32, 0x2c, 0x20, 0x33, 0x2c, 0x20, 0x33, 0x20, 0x7d, 0x20, 0x7d, 0x2c, 0x7b, 0x20,
+ 0x7b, 0x20, 0x30, 0x2c, 0x20, 0x34, 0x2c, 0x20, 0x31, 0x2c, 0x20, 0x33, 0x20, 0x7d, 0x20, 0x7d, 0x2c, 0x0d, 0x0a, 0x09, 0x7b, 0x20, 0x7b, 0x20, 0x30, 0x2c, 0x20, 0x34, 0x2c, 0x20, 0x30, 0x2c,
+ 0x20, 0x34, 0x20, 0x7d, 0x20, 0x7d, 0x2c, 0x7b, 0x20, 0x7b, 0x20, 0x30, 0x2c, 0x20, 0x31, 0x2c, 0x20, 0x30, 0x2c, 0x20, 0x37, 0x20, 0x7d, 0x20, 0x7d, 0x2c, 0x7b, 0x20, 0x7b, 0x20, 0x32, 0x2c,
+ 0x20, 0x30, 0x2c, 0x20, 0x35, 0x2c, 0x20, 0x31, 0x20, 0x7d, 0x20, 0x7d, 0x2c, 0x7b, 0x20, 0x7b, 0x20, 0x32, 0x2c, 0x20, 0x30, 0x2c, 0x20, 0x34, 0x2c, 0x20, 0x32, 0x20, 0x7d, 0x20, 0x7d, 0x2c,
+ 0x7b, 0x20, 0x7b, 0x20, 0x33, 0x2c, 0x20, 0x30, 0x2c, 0x20, 0x32, 0x2c, 0x20, 0x33, 0x20, 0x7d, 0x20, 0x7d, 0x2c, 0x0d, 0x0a, 0x09, 0x7b, 0x20, 0x7b, 0x20, 0x32, 0x2c, 0x20, 0x32, 0x2c, 0x20,
+ 0x34, 0x2c, 0x20, 0x30, 0x20, 0x7d, 0x20, 0x7d, 0x2c, 0x7b, 0x20, 0x7b, 0x20, 0x32, 0x2c, 0x20, 0x32, 0x2c, 0x20, 0x33, 0x2c, 0x20, 0x31, 0x20, 0x7d, 0x20, 0x7d, 0x2c, 0x7b, 0x20, 0x7b, 0x20,
+ 0x34, 0x2c, 0x20, 0x30, 0x2c, 0x20, 0x33, 0x2c, 0x20, 0x31, 0x20, 0x7d, 0x20, 0x7d, 0x2c, 0x7b, 0x20, 0x7b, 0x20, 0x33, 0x2c, 0x20, 0x32, 0x2c, 0x20, 0x33, 0x2c, 0x20, 0x30, 0x20, 0x7d, 0x20,
+ 0x7d, 0x2c, 0x7b, 0x20, 0x7b, 0x20, 0x32, 0x2c, 0x20, 0x33, 0x2c, 0x20, 0x32, 0x2c, 0x20, 0x31, 0x20, 0x7d, 0x20, 0x7d, 0x2c, 0x0d, 0x0a, 0x09, 0x7b, 0x20, 0x7b, 0x20, 0x31, 0x2c, 0x20, 0x33,
+ 0x2c, 0x20, 0x34, 0x2c, 0x20, 0x30, 0x20, 0x7d, 0x20, 0x7d, 0x2c, 0x7b, 0x20, 0x7b, 0x20, 0x37, 0x2c, 0x20, 0x30, 0x2c, 0x20, 0x31, 0x2c, 0x20, 0x30, 0x20, 0x7d, 0x20, 0x7d, 0x2c, 0x7b, 0x20,
+ 0x7b, 0x20, 0x33, 0x2c, 0x20, 0x30, 0x2c, 0x20, 0x34, 0x2c, 0x20, 0x31, 0x20, 0x7d, 0x20, 0x7d, 0x2c, 0x7b, 0x20, 0x7b, 0x20, 0x31, 0x2c, 0x20, 0x30, 0x2c, 0x20, 0x35, 0x2c, 0x20, 0x32, 0x20,
+ 0x7d, 0x20, 0x7d, 0x2c, 0x7b, 0x20, 0x7b, 0x20, 0x38, 0x2c, 0x20, 0x30, 0x2c, 0x20, 0x30, 0x2c, 0x20, 0x30, 0x20, 0x7d, 0x20, 0x7d, 0x2c, 0x0d, 0x0a, 0x09, 0x7b, 0x20, 0x7b, 0x20, 0x33, 0x2c,
+ 0x20, 0x30, 0x2c, 0x20, 0x31, 0x2c, 0x20, 0x34, 0x20, 0x7d, 0x20, 0x7d, 0x2c, 0x7b, 0x20, 0x7b, 0x20, 0x34, 0x2c, 0x20, 0x31, 0x2c, 0x20, 0x31, 0x2c, 0x20, 0x32, 0x20, 0x7d, 0x20, 0x7d, 0x2c,
+ 0x7b, 0x20, 0x7b, 0x20, 0x34, 0x2c, 0x20, 0x30, 0x2c, 0x20, 0x32, 0x2c, 0x20, 0x32, 0x20, 0x7d, 0x20, 0x7d, 0x2c, 0x7b, 0x20, 0x7b, 0x20, 0x31, 0x2c, 0x20, 0x32, 0x2c, 0x20, 0x35, 0x2c, 0x20,
+ 0x30, 0x20, 0x7d, 0x20, 0x7d, 0x2c, 0x7b, 0x20, 0x7b, 0x20, 0x34, 0x2c, 0x20, 0x32, 0x2c, 0x20, 0x31, 0x2c, 0x20, 0x31, 0x20, 0x7d, 0x20, 0x7d, 0x2c, 0x0d, 0x0a, 0x09, 0x7b, 0x20, 0x7b, 0x20,
+ 0x33, 0x2c, 0x20, 0x34, 0x2c, 0x20, 0x30, 0x2c, 0x20, 0x31, 0x20, 0x7d, 0x20, 0x7d, 0x2c, 0x7b, 0x20, 0x7b, 0x20, 0x32, 0x2c, 0x20, 0x30, 0x2c, 0x20, 0x33, 0x2c, 0x20, 0x33, 0x20, 0x7d, 0x20,
+ 0x7d, 0x2c, 0x7b, 0x20, 0x7b, 0x20, 0x35, 0x2c, 0x20, 0x30, 0x2c, 0x20, 0x31, 0x2c, 0x20, 0x32, 0x20, 0x7d, 0x20, 0x7d, 0x2c, 0x7b, 0x20, 0x7b, 0x20, 0x35, 0x2c, 0x20, 0x30, 0x2c, 0x20, 0x30,
+ 0x2c, 0x20, 0x33, 0x20, 0x7d, 0x20, 0x7d, 0x2c, 0x7b, 0x20, 0x7b, 0x20, 0x32, 0x2c, 0x20, 0x34, 0x2c, 0x20, 0x30, 0x2c, 0x20, 0x32, 0x20, 0x7d, 0x20, 0x7d, 0x2c, 0x0d, 0x0a, 0x09, 0x7b, 0x20,
+ 0x7b, 0x20, 0x32, 0x2c, 0x20, 0x31, 0x2c, 0x20, 0x34, 0x2c, 0x20, 0x31, 0x20, 0x7d, 0x20, 0x7d, 0x2c, 0x7b, 0x20, 0x7b, 0x20, 0x34, 0x2c, 0x20, 0x30, 0x2c, 0x20, 0x31, 0x2c, 0x20, 0x33, 0x20,
+ 0x7d, 0x20, 0x7d, 0x2c, 0x7b, 0x20, 0x7b, 0x20, 0x32, 0x2c, 0x20, 0x31, 0x2c, 0x20, 0x35, 0x2c, 0x20, 0x30, 0x20, 0x7d, 0x20, 0x7d, 0x2c, 0x7b, 0x20, 0x7b, 0x20, 0x34, 0x2c, 0x20, 0x32, 0x2c,
+ 0x20, 0x32, 0x2c, 0x20, 0x30, 0x20, 0x7d, 0x20, 0x7d, 0x2c, 0x7b, 0x20, 0x7b, 0x20, 0x34, 0x2c, 0x20, 0x30, 0x2c, 0x20, 0x34, 0x2c, 0x20, 0x30, 0x20, 0x7d, 0x20, 0x7d, 0x2c, 0x0d, 0x0a, 0x09,
+ 0x7b, 0x20, 0x7b, 0x20, 0x31, 0x2c, 0x20, 0x30, 0x2c, 0x20, 0x34, 0x2c, 0x20, 0x33, 0x20, 0x7d, 0x20, 0x7d, 0x2c, 0x7b, 0x20, 0x7b, 0x20, 0x31, 0x2c, 0x20, 0x34, 0x2c, 0x20, 0x30, 0x2c, 0x20,
+ 0x33, 0x20, 0x7d, 0x20, 0x7d, 0x2c, 0x7b, 0x20, 0x7b, 0x20, 0x33, 0x2c, 0x20, 0x30, 0x2c, 0x20, 0x33, 0x2c, 0x20, 0x32, 0x20, 0x7d, 0x20, 0x7d, 0x2c, 0x7b, 0x20, 0x7b, 0x20, 0x34, 0x2c, 0x20,
+ 0x33, 0x2c, 0x20, 0x30, 0x2c, 0x20, 0x31, 0x20, 0x7d, 0x20, 0x7d, 0x2c, 0x7b, 0x20, 0x7b, 0x20, 0x30, 0x2c, 0x20, 0x31, 0x2c, 0x20, 0x31, 0x2c, 0x20, 0x36, 0x20, 0x7d, 0x20, 0x7d, 0x2c, 0x0d,
+ 0x0a, 0x09, 0x7b, 0x20, 0x7b, 0x20, 0x31, 0x2c, 0x20, 0x33, 0x2c, 0x20, 0x31, 0x2c, 0x20, 0x33, 0x20, 0x7d, 0x20, 0x7d, 0x2c, 0x7b, 0x20, 0x7b, 0x20, 0x30, 0x2c, 0x20, 0x32, 0x2c, 0x20, 0x32,
+ 0x2c, 0x20, 0x34, 0x20, 0x7d, 0x20, 0x7d, 0x2c, 0x7b, 0x20, 0x7b, 0x20, 0x32, 0x2c, 0x20, 0x30, 0x2c, 0x20, 0x32, 0x2c, 0x20, 0x34, 0x20, 0x7d, 0x20, 0x7d, 0x2c, 0x7b, 0x20, 0x7b, 0x20, 0x35,
+ 0x2c, 0x20, 0x31, 0x2c, 0x20, 0x31, 0x2c, 0x20, 0x31, 0x20, 0x7d, 0x20, 0x7d, 0x2c, 0x7b, 0x20, 0x7b, 0x20, 0x33, 0x2c, 0x20, 0x30, 0x2c, 0x20, 0x35, 0x2c, 0x20, 0x30, 0x20, 0x7d, 0x20, 0x7d,
+ 0x2c, 0x0d, 0x0a, 0x09, 0x7b, 0x20, 0x7b, 0x20, 0x32, 0x2c, 0x20, 0x33, 0x2c, 0x20, 0x31, 0x2c, 0x20, 0x32, 0x20, 0x7d, 0x20, 0x7d, 0x2c, 0x7b, 0x20, 0x7b, 0x20, 0x33, 0x2c, 0x20, 0x30, 0x2c,
+ 0x20, 0x30, 0x2c, 0x20, 0x35, 0x20, 0x7d, 0x20, 0x7d, 0x2c, 0x7b, 0x20, 0x7b, 0x20, 0x30, 0x2c, 0x20, 0x33, 0x2c, 0x20, 0x31, 0x2c, 0x20, 0x34, 0x20, 0x7d, 0x20, 0x7d, 0x2c, 0x7b, 0x20, 0x7b,
+ 0x20, 0x35, 0x2c, 0x20, 0x30, 0x2c, 0x20, 0x32, 0x2c, 0x20, 0x31, 0x20, 0x7d, 0x20, 0x7d, 0x2c, 0x7b, 0x20, 0x7b, 0x20, 0x32, 0x2c, 0x20, 0x31, 0x2c, 0x20, 0x33, 0x2c, 0x20, 0x32, 0x20, 0x7d,
+ 0x20, 0x7d, 0x2c, 0x0d, 0x0a, 0x09, 0x7b, 0x20, 0x7b, 0x20, 0x32, 0x2c, 0x20, 0x30, 0x2c, 0x20, 0x36, 0x2c, 0x20, 0x30, 0x20, 0x7d, 0x20, 0x7d, 0x2c, 0x7b, 0x20, 0x7b, 0x20, 0x33, 0x2c, 0x20,
+ 0x31, 0x2c, 0x20, 0x33, 0x2c, 0x20, 0x31, 0x20, 0x7d, 0x20, 0x7d, 0x2c, 0x7b, 0x20, 0x7b, 0x20, 0x35, 0x2c, 0x20, 0x31, 0x2c, 0x20, 0x32, 0x2c, 0x20, 0x30, 0x20, 0x7d, 0x20, 0x7d, 0x2c, 0x7b,
+ 0x20, 0x7b, 0x20, 0x31, 0x2c, 0x20, 0x30, 0x2c, 0x20, 0x33, 0x2c, 0x20, 0x34, 0x20, 0x7d, 0x20, 0x7d, 0x2c, 0x7b, 0x20, 0x7b, 0x20, 0x31, 0x2c, 0x20, 0x31, 0x2c, 0x20, 0x36, 0x2c, 0x20, 0x30,
+ 0x20, 0x7d, 0x20, 0x7d, 0x2c, 0x0d, 0x0a, 0x09, 0x7b, 0x20, 0x7b, 0x20, 0x34, 0x2c, 0x20, 0x30, 0x2c, 0x20, 0x30, 0x2c, 0x20, 0x34, 0x20, 0x7d, 0x20, 0x7d, 0x2c, 0x7b, 0x20, 0x7b, 0x20, 0x32,
+ 0x2c, 0x20, 0x30, 0x2c, 0x20, 0x31, 0x2c, 0x20, 0x35, 0x20, 0x7d, 0x20, 0x7d, 0x2c, 0x7b, 0x20, 0x7b, 0x20, 0x30, 0x2c, 0x20, 0x33, 0x2c, 0x20, 0x30, 0x2c, 0x20, 0x35, 0x20, 0x7d, 0x20, 0x7d,
+ 0x2c, 0x7b, 0x20, 0x7b, 0x20, 0x31, 0x2c, 0x20, 0x33, 0x2c, 0x20, 0x30, 0x2c, 0x20, 0x34, 0x20, 0x7d, 0x20, 0x7d, 0x2c, 0x7b, 0x20, 0x7b, 0x20, 0x34, 0x2c, 0x20, 0x31, 0x2c, 0x20, 0x32, 0x2c,
+ 0x20, 0x31, 0x20, 0x7d, 0x20, 0x7d, 0x2c, 0x0d, 0x0a, 0x09, 0x7b, 0x20, 0x7b, 0x20, 0x31, 0x2c, 0x20, 0x32, 0x2c, 0x20, 0x33, 0x2c, 0x20, 0x32, 0x20, 0x7d, 0x20, 0x7d, 0x2c, 0x7b, 0x20, 0x7b,
+ 0x20, 0x33, 0x2c, 0x20, 0x31, 0x2c, 0x20, 0x30, 0x2c, 0x20, 0x34, 0x20, 0x7d, 0x20, 0x7d, 0x2c, 0x7b, 0x20, 0x7b, 0x20, 0x35, 0x2c, 0x20, 0x32, 0x2c, 0x20, 0x30, 0x2c, 0x20, 0x31, 0x20, 0x7d,
+ 0x20, 0x7d, 0x2c, 0x7b, 0x20, 0x7b, 0x20, 0x31, 0x2c, 0x20, 0x32, 0x2c, 0x20, 0x32, 0x2c, 0x20, 0x33, 0x20, 0x7d, 0x20, 0x7d, 0x2c, 0x7b, 0x20, 0x7b, 0x20, 0x33, 0x2c, 0x20, 0x32, 0x2c, 0x20,
+ 0x31, 0x2c, 0x20, 0x32, 0x20, 0x7d, 0x20, 0x7d, 0x2c, 0x0d, 0x0a, 0x09, 0x7b, 0x20, 0x7b, 0x20, 0x32, 0x2c, 0x20, 0x32, 0x2c, 0x20, 0x32, 0x2c, 0x20, 0x32, 0x20, 0x7d, 0x20, 0x7d, 0x2c, 0x7b,
+ 0x20, 0x7b, 0x20, 0x36, 0x2c, 0x20, 0x30, 0x2c, 0x20, 0x31, 0x2c, 0x20, 0x31, 0x20, 0x7d, 0x20, 0x7d, 0x2c, 0x7b, 0x20, 0x7b, 0x20, 0x31, 0x2c, 0x20, 0x32, 0x2c, 0x20, 0x31, 0x2c, 0x20, 0x34,
+ 0x20, 0x7d, 0x20, 0x7d, 0x2c, 0x7b, 0x20, 0x7b, 0x20, 0x31, 0x2c, 0x20, 0x31, 0x2c, 0x20, 0x34, 0x2c, 0x20, 0x32, 0x20, 0x7d, 0x20, 0x7d, 0x2c, 0x7b, 0x20, 0x7b, 0x20, 0x33, 0x2c, 0x20, 0x32,
+ 0x2c, 0x20, 0x30, 0x2c, 0x20, 0x33, 0x20, 0x7d, 0x20, 0x7d, 0x2c, 0x0d, 0x0a, 0x09, 0x7b, 0x20, 0x7b, 0x20, 0x31, 0x2c, 0x20, 0x32, 0x2c, 0x20, 0x30, 0x2c, 0x20, 0x35, 0x20, 0x7d, 0x20, 0x7d,
+ 0x2c, 0x7b, 0x20, 0x7b, 0x20, 0x31, 0x2c, 0x20, 0x30, 0x2c, 0x20, 0x37, 0x2c, 0x20, 0x30, 0x20, 0x7d, 0x20, 0x7d, 0x2c, 0x7b, 0x20, 0x7b, 0x20, 0x33, 0x2c, 0x20, 0x31, 0x2c, 0x20, 0x32, 0x2c,
+ 0x20, 0x32, 0x20, 0x7d, 0x20, 0x7d, 0x2c, 0x7b, 0x20, 0x7b, 0x20, 0x31, 0x2c, 0x20, 0x30, 0x2c, 0x20, 0x32, 0x2c, 0x20, 0x35, 0x20, 0x7d, 0x20, 0x7d, 0x2c, 0x7b, 0x20, 0x7b, 0x20, 0x32, 0x2c,
+ 0x20, 0x30, 0x2c, 0x20, 0x30, 0x2c, 0x20, 0x36, 0x20, 0x7d, 0x20, 0x7d, 0x2c, 0x0d, 0x0a, 0x09, 0x7b, 0x20, 0x7b, 0x20, 0x32, 0x2c, 0x20, 0x31, 0x2c, 0x20, 0x31, 0x2c, 0x20, 0x34, 0x20, 0x7d,
+ 0x20, 0x7d, 0x2c, 0x7b, 0x20, 0x7b, 0x20, 0x32, 0x2c, 0x20, 0x32, 0x2c, 0x20, 0x30, 0x2c, 0x20, 0x34, 0x20, 0x7d, 0x20, 0x7d, 0x2c, 0x7b, 0x20, 0x7b, 0x20, 0x31, 0x2c, 0x20, 0x31, 0x2c, 0x20,
+ 0x33, 0x2c, 0x20, 0x33, 0x20, 0x7d, 0x20, 0x7d, 0x2c, 0x7b, 0x20, 0x7b, 0x20, 0x37, 0x2c, 0x20, 0x30, 0x2c, 0x20, 0x30, 0x2c, 0x20, 0x31, 0x20, 0x7d, 0x20, 0x7d, 0x2c, 0x7b, 0x20, 0x7b, 0x20,
+ 0x31, 0x2c, 0x20, 0x30, 0x2c, 0x20, 0x30, 0x2c, 0x20, 0x37, 0x20, 0x7d, 0x20, 0x7d, 0x2c, 0x0d, 0x0a, 0x09, 0x7b, 0x20, 0x7b, 0x20, 0x32, 0x2c, 0x20, 0x31, 0x2c, 0x20, 0x32, 0x2c, 0x20, 0x33,
+ 0x20, 0x7d, 0x20, 0x7d, 0x2c, 0x7b, 0x20, 0x7b, 0x20, 0x34, 0x2c, 0x20, 0x31, 0x2c, 0x20, 0x30, 0x2c, 0x20, 0x33, 0x20, 0x7d, 0x20, 0x7d, 0x2c, 0x7b, 0x20, 0x7b, 0x20, 0x33, 0x2c, 0x20, 0x31,
+ 0x2c, 0x20, 0x31, 0x2c, 0x20, 0x33, 0x20, 0x7d, 0x20, 0x7d, 0x2c, 0x7b, 0x20, 0x7b, 0x20, 0x31, 0x2c, 0x20, 0x31, 0x2c, 0x20, 0x32, 0x2c, 0x20, 0x34, 0x20, 0x7d, 0x20, 0x7d, 0x2c, 0x7b, 0x20,
+ 0x7b, 0x20, 0x32, 0x2c, 0x20, 0x31, 0x2c, 0x20, 0x30, 0x2c, 0x20, 0x35, 0x20, 0x7d, 0x20, 0x7d, 0x2c, 0x0d, 0x0a, 0x09, 0x7b, 0x20, 0x7b, 0x20, 0x31, 0x2c, 0x20, 0x30, 0x2c, 0x20, 0x31, 0x2c,
+ 0x20, 0x36, 0x20, 0x7d, 0x20, 0x7d, 0x2c, 0x7b, 0x20, 0x7b, 0x20, 0x30, 0x2c, 0x20, 0x32, 0x2c, 0x20, 0x31, 0x2c, 0x20, 0x35, 0x20, 0x7d, 0x20, 0x7d, 0x2c, 0x7b, 0x20, 0x7b, 0x20, 0x30, 0x2c,
+ 0x20, 0x32, 0x2c, 0x20, 0x30, 0x2c, 0x20, 0x36, 0x20, 0x7d, 0x20, 0x7d, 0x2c, 0x7b, 0x20, 0x7b, 0x20, 0x31, 0x2c, 0x20, 0x31, 0x2c, 0x20, 0x31, 0x2c, 0x20, 0x35, 0x20, 0x7d, 0x20, 0x7d, 0x2c,
+ 0x7b, 0x20, 0x7b, 0x20, 0x31, 0x2c, 0x20, 0x31, 0x2c, 0x20, 0x30, 0x2c, 0x20, 0x36, 0x20, 0x7d, 0x20, 0x7d, 0x0d, 0x0a, 0x7d, 0x3b, 0x0d, 0x0a, 0x0d, 0x0a, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61,
+ 0x6e, 0x74, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x67, 0x5f, 0x65, 0x74, 0x63, 0x31, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x6e, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x5b, 0x63, 0x45, 0x54, 0x43, 0x31,
+ 0x49, 0x6e, 0x74, 0x65, 0x6e, 0x4d, 0x6f, 0x64, 0x69, 0x66, 0x69, 0x65, 0x72, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x5d, 0x5b, 0x63, 0x45, 0x54, 0x43, 0x31, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74,
+ 0x6f, 0x72, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x5d, 0x20, 0x3d, 0x0d, 0x0a, 0x7b, 0x0d, 0x0a, 0x09, 0x7b, 0x20, 0x2d, 0x38, 0x2c, 0x20, 0x20, 0x2d, 0x32, 0x2c, 0x20, 0x20, 0x20, 0x32, 0x2c,
+ 0x20, 0x20, 0x20, 0x38, 0x20, 0x7d, 0x2c, 0x20, 0x7b, 0x20, 0x2d, 0x31, 0x37, 0x2c, 0x20, 0x20, 0x2d, 0x35, 0x2c, 0x20, 0x20, 0x35, 0x2c, 0x20, 0x20, 0x31, 0x37, 0x20, 0x7d, 0x2c, 0x20, 0x7b,
+ 0x20, 0x2d, 0x32, 0x39, 0x2c, 0x20, 0x20, 0x2d, 0x39, 0x2c, 0x20, 0x20, 0x20, 0x39, 0x2c, 0x20, 0x20, 0x32, 0x39, 0x20, 0x7d, 0x2c, 0x20, 0x7b, 0x20, 0x20, 0x2d, 0x34, 0x32, 0x2c, 0x20, 0x2d,
+ 0x31, 0x33, 0x2c, 0x20, 0x31, 0x33, 0x2c, 0x20, 0x20, 0x34, 0x32, 0x20, 0x7d, 0x2c, 0x0d, 0x0a, 0x09, 0x7b, 0x20, 0x2d, 0x36, 0x30, 0x2c, 0x20, 0x2d, 0x31, 0x38, 0x2c, 0x20, 0x31, 0x38, 0x2c,
+ 0x20, 0x20, 0x36, 0x30, 0x20, 0x7d, 0x2c, 0x20, 0x7b, 0x20, 0x2d, 0x38, 0x30, 0x2c, 0x20, 0x2d, 0x32, 0x34, 0x2c, 0x20, 0x32, 0x34, 0x2c, 0x20, 0x20, 0x38, 0x30, 0x20, 0x7d, 0x2c, 0x20, 0x7b,
+ 0x20, 0x2d, 0x31, 0x30, 0x36, 0x2c, 0x20, 0x2d, 0x33, 0x33, 0x2c, 0x20, 0x33, 0x33, 0x2c, 0x20, 0x31, 0x30, 0x36, 0x20, 0x7d, 0x2c, 0x20, 0x7b, 0x20, 0x2d, 0x31, 0x38, 0x33, 0x2c, 0x20, 0x2d,
+ 0x34, 0x37, 0x2c, 0x20, 0x34, 0x37, 0x2c, 0x20, 0x31, 0x38, 0x33, 0x20, 0x7d, 0x0d, 0x0a, 0x7d, 0x3b, 0x0d, 0x0a, 0x0d, 0x0a, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x20, 0x75, 0x69,
+ 0x6e, 0x74, 0x38, 0x5f, 0x74, 0x20, 0x67, 0x5f, 0x65, 0x74, 0x63, 0x31, 0x5f, 0x74, 0x6f, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5b, 0x63,
+ 0x45, 0x54, 0x43, 0x31, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x5d, 0x20, 0x3d, 0x20, 0x7b, 0x20, 0x32, 0x2c, 0x20, 0x33, 0x2c, 0x20, 0x31, 0x2c,
+ 0x20, 0x30, 0x20, 0x7d, 0x3b, 0x0d, 0x0a, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x20, 0x75, 0x69, 0x6e, 0x74, 0x38, 0x5f, 0x74, 0x20, 0x67, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74,
+ 0x6f, 0x72, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5f, 0x74, 0x6f, 0x5f, 0x65, 0x74, 0x63, 0x31, 0x5b, 0x63, 0x45, 0x54, 0x43, 0x31, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x56, 0x61,
+ 0x6c, 0x75, 0x65, 0x73, 0x5d, 0x20, 0x3d, 0x20, 0x7b, 0x20, 0x33, 0x2c, 0x20, 0x32, 0x2c, 0x20, 0x30, 0x2c, 0x20, 0x31, 0x20, 0x7d, 0x3b, 0x0d, 0x0a, 0x0d, 0x0a, 0x75, 0x69, 0x6e, 0x74, 0x33,
+ 0x32, 0x5f, 0x74, 0x20, 0x65, 0x74, 0x63, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x67, 0x65, 0x74, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x5f, 0x62, 0x69, 0x74, 0x73, 0x28, 0x63, 0x6f, 0x6e, 0x73,
+ 0x74, 0x20, 0x65, 0x74, 0x63, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x20, 0x2a, 0x70, 0x2c, 0x20, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x74, 0x20, 0x6f, 0x66, 0x73, 0x2c, 0x20, 0x75, 0x69,
+ 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x74, 0x20, 0x6e, 0x75, 0x6d, 0x29, 0x20, 0x0d, 0x0a, 0x7b, 0x0d, 0x0a, 0x09, 0x61, 0x73, 0x73, 0x65, 0x72, 0x74, 0x28, 0x28, 0x6f, 0x66, 0x73, 0x20, 0x2b, 0x20,
+ 0x6e, 0x75, 0x6d, 0x29, 0x20, 0x3c, 0x3d, 0x20, 0x36, 0x34, 0x55, 0x29, 0x3b, 0x0d, 0x0a, 0x09, 0x61, 0x73, 0x73, 0x65, 0x72, 0x74, 0x28, 0x6e, 0x75, 0x6d, 0x20, 0x26, 0x26, 0x20, 0x28, 0x6e,
+ 0x75, 0x6d, 0x20, 0x3c, 0x3d, 0x20, 0x38, 0x55, 0x29, 0x29, 0x3b, 0x0d, 0x0a, 0x09, 0x61, 0x73, 0x73, 0x65, 0x72, 0x74, 0x28, 0x28, 0x6f, 0x66, 0x73, 0x20, 0x3e, 0x3e, 0x20, 0x33, 0x29, 0x20,
+ 0x3d, 0x3d, 0x20, 0x28, 0x28, 0x6f, 0x66, 0x73, 0x20, 0x2b, 0x20, 0x6e, 0x75, 0x6d, 0x20, 0x2d, 0x20, 0x31, 0x29, 0x20, 0x3e, 0x3e, 0x20, 0x33, 0x29, 0x29, 0x3b, 0x0d, 0x0a, 0x09, 0x63, 0x6f,
+ 0x6e, 0x73, 0x74, 0x20, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x74, 0x20, 0x62, 0x79, 0x74, 0x65, 0x5f, 0x6f, 0x66, 0x73, 0x20, 0x3d, 0x20, 0x37, 0x20, 0x2d, 0x20, 0x28, 0x6f, 0x66, 0x73,
+ 0x20, 0x3e, 0x3e, 0x20, 0x33, 0x29, 0x3b, 0x0d, 0x0a, 0x09, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x74, 0x20, 0x62, 0x79, 0x74, 0x65, 0x5f, 0x62, 0x69,
+ 0x74, 0x5f, 0x6f, 0x66, 0x73, 0x20, 0x3d, 0x20, 0x6f, 0x66, 0x73, 0x20, 0x26, 0x20, 0x37, 0x3b, 0x0d, 0x0a, 0x09, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x28, 0x70, 0x2d, 0x3e, 0x6d, 0x5f,
+ 0x62, 0x79, 0x74, 0x65, 0x73, 0x5b, 0x62, 0x79, 0x74, 0x65, 0x5f, 0x6f, 0x66, 0x73, 0x5d, 0x20, 0x3e, 0x3e, 0x20, 0x62, 0x79, 0x74, 0x65, 0x5f, 0x62, 0x69, 0x74, 0x5f, 0x6f, 0x66, 0x73, 0x29,
+ 0x20, 0x26, 0x20, 0x28, 0x28, 0x31, 0x20, 0x3c, 0x3c, 0x20, 0x6e, 0x75, 0x6d, 0x29, 0x20, 0x2d, 0x20, 0x31, 0x29, 0x3b, 0x0d, 0x0a, 0x7d, 0x0d, 0x0a, 0x0d, 0x0a, 0x76, 0x6f, 0x69, 0x64, 0x20,
+ 0x65, 0x74, 0x63, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x5f, 0x62, 0x69, 0x74, 0x73, 0x28, 0x65, 0x74, 0x63, 0x5f, 0x62, 0x6c, 0x6f, 0x63,
+ 0x6b, 0x20, 0x2a, 0x70, 0x2c, 0x20, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x74, 0x20, 0x6f, 0x66, 0x73, 0x2c, 0x20, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x74, 0x20, 0x6e, 0x75, 0x6d,
+ 0x2c, 0x20, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x74, 0x20, 0x62, 0x69, 0x74, 0x73, 0x29, 0x0d, 0x0a, 0x7b, 0x0d, 0x0a, 0x09, 0x61, 0x73, 0x73, 0x65, 0x72, 0x74, 0x28, 0x28, 0x6f, 0x66,
+ 0x73, 0x20, 0x2b, 0x20, 0x6e, 0x75, 0x6d, 0x29, 0x20, 0x3c, 0x3d, 0x20, 0x36, 0x34, 0x55, 0x29, 0x3b, 0x0d, 0x0a, 0x09, 0x61, 0x73, 0x73, 0x65, 0x72, 0x74, 0x28, 0x6e, 0x75, 0x6d, 0x20, 0x26,
+ 0x26, 0x20, 0x28, 0x6e, 0x75, 0x6d, 0x20, 0x3c, 0x20, 0x33, 0x32, 0x55, 0x29, 0x29, 0x3b, 0x0d, 0x0a, 0x09, 0x61, 0x73, 0x73, 0x65, 0x72, 0x74, 0x28, 0x28, 0x6f, 0x66, 0x73, 0x20, 0x3e, 0x3e,
+ 0x20, 0x33, 0x29, 0x20, 0x3d, 0x3d, 0x20, 0x28, 0x28, 0x6f, 0x66, 0x73, 0x20, 0x2b, 0x20, 0x6e, 0x75, 0x6d, 0x20, 0x2d, 0x20, 0x31, 0x29, 0x20, 0x3e, 0x3e, 0x20, 0x33, 0x29, 0x29, 0x3b, 0x0d,
+ 0x0a, 0x09, 0x61, 0x73, 0x73, 0x65, 0x72, 0x74, 0x28, 0x62, 0x69, 0x74, 0x73, 0x20, 0x3c, 0x20, 0x28, 0x31, 0x55, 0x20, 0x3c, 0x3c, 0x20, 0x6e, 0x75, 0x6d, 0x29, 0x29, 0x3b, 0x0d, 0x0a, 0x09,
+ 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x74, 0x20, 0x62, 0x79, 0x74, 0x65, 0x5f, 0x6f, 0x66, 0x73, 0x20, 0x3d, 0x20, 0x37, 0x20, 0x2d, 0x20, 0x28, 0x6f,
+ 0x66, 0x73, 0x20, 0x3e, 0x3e, 0x20, 0x33, 0x29, 0x3b, 0x0d, 0x0a, 0x09, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x74, 0x20, 0x62, 0x79, 0x74, 0x65, 0x5f,
+ 0x62, 0x69, 0x74, 0x5f, 0x6f, 0x66, 0x73, 0x20, 0x3d, 0x20, 0x6f, 0x66, 0x73, 0x20, 0x26, 0x20, 0x37, 0x3b, 0x0d, 0x0a, 0x09, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x75, 0x69, 0x6e, 0x74, 0x33,
+ 0x32, 0x5f, 0x74, 0x20, 0x6d, 0x61, 0x73, 0x6b, 0x20, 0x3d, 0x20, 0x28, 0x31, 0x20, 0x3c, 0x3c, 0x20, 0x6e, 0x75, 0x6d, 0x29, 0x20, 0x2d, 0x20, 0x31, 0x3b, 0x0d, 0x0a, 0x09, 0x70, 0x2d, 0x3e,
+ 0x6d, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x5b, 0x62, 0x79, 0x74, 0x65, 0x5f, 0x6f, 0x66, 0x73, 0x5d, 0x20, 0x26, 0x3d, 0x20, 0x7e, 0x28, 0x6d, 0x61, 0x73, 0x6b, 0x20, 0x3c, 0x3c, 0x20, 0x62,
+ 0x79, 0x74, 0x65, 0x5f, 0x62, 0x69, 0x74, 0x5f, 0x6f, 0x66, 0x73, 0x29, 0x3b, 0x0d, 0x0a, 0x09, 0x70, 0x2d, 0x3e, 0x6d, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x5b, 0x62, 0x79, 0x74, 0x65, 0x5f,
+ 0x6f, 0x66, 0x73, 0x5d, 0x20, 0x7c, 0x3d, 0x20, 0x28, 0x62, 0x69, 0x74, 0x73, 0x20, 0x3c, 0x3c, 0x20, 0x62, 0x79, 0x74, 0x65, 0x5f, 0x62, 0x69, 0x74, 0x5f, 0x6f, 0x66, 0x73, 0x29, 0x3b, 0x0d,
+ 0x0a, 0x7d, 0x0d, 0x0a, 0x0d, 0x0a, 0x62, 0x6f, 0x6f, 0x6c, 0x20, 0x65, 0x74, 0x63, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x67, 0x65, 0x74, 0x5f, 0x66, 0x6c, 0x69, 0x70, 0x5f, 0x62, 0x69,
+ 0x74, 0x28, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x65, 0x74, 0x63, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x20, 0x2a, 0x70, 0x29, 0x20, 0x0d, 0x0a, 0x7b, 0x0d, 0x0a, 0x09, 0x72, 0x65, 0x74, 0x75,
+ 0x72, 0x6e, 0x20, 0x28, 0x70, 0x2d, 0x3e, 0x6d, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x5b, 0x33, 0x5d, 0x20, 0x26, 0x20, 0x31, 0x29, 0x20, 0x21, 0x3d, 0x20, 0x30, 0x3b, 0x0d, 0x0a, 0x7d, 0x0d,
+ 0x0a, 0x0d, 0x0a, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x65, 0x74, 0x63, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x66, 0x6c, 0x69, 0x70, 0x5f, 0x62, 0x69, 0x74, 0x28, 0x65,
+ 0x74, 0x63, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x20, 0x2a, 0x70, 0x2c, 0x20, 0x62, 0x6f, 0x6f, 0x6c, 0x20, 0x66, 0x6c, 0x69, 0x70, 0x29, 0x0d, 0x0a, 0x7b, 0x0d, 0x0a, 0x09, 0x70, 0x2d, 0x3e,
+ 0x6d, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x5b, 0x33, 0x5d, 0x20, 0x26, 0x3d, 0x20, 0x7e, 0x31, 0x3b, 0x0d, 0x0a, 0x09, 0x70, 0x2d, 0x3e, 0x6d, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x5b, 0x33,
+ 0x5d, 0x20, 0x7c, 0x3d, 0x20, 0x28, 0x75, 0x69, 0x6e, 0x74, 0x38, 0x5f, 0x74, 0x29, 0x28, 0x66, 0x6c, 0x69, 0x70, 0x29, 0x3b, 0x0d, 0x0a, 0x7d, 0x0d, 0x0a, 0x0d, 0x0a, 0x62, 0x6f, 0x6f, 0x6c,
+ 0x20, 0x65, 0x74, 0x63, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x67, 0x65, 0x74, 0x5f, 0x64, 0x69, 0x66, 0x66, 0x5f, 0x62, 0x69, 0x74, 0x28, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x65, 0x74,
+ 0x63, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x20, 0x2a, 0x70, 0x29, 0x20, 0x0d, 0x0a, 0x7b, 0x0d, 0x0a, 0x09, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x28, 0x70, 0x2d, 0x3e, 0x6d, 0x5f, 0x62,
+ 0x79, 0x74, 0x65, 0x73, 0x5b, 0x33, 0x5d, 0x20, 0x26, 0x20, 0x32, 0x29, 0x20, 0x21, 0x3d, 0x20, 0x30, 0x3b, 0x0d, 0x0a, 0x7d, 0x0d, 0x0a, 0x0d, 0x0a, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x65, 0x74,
+ 0x63, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x64, 0x69, 0x66, 0x66, 0x5f, 0x62, 0x69, 0x74, 0x28, 0x65, 0x74, 0x63, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x20, 0x2a,
+ 0x70, 0x2c, 0x20, 0x62, 0x6f, 0x6f, 0x6c, 0x20, 0x64, 0x69, 0x66, 0x66, 0x29, 0x0d, 0x0a, 0x7b, 0x0d, 0x0a, 0x09, 0x70, 0x2d, 0x3e, 0x6d, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x5b, 0x33, 0x5d,
+ 0x20, 0x26, 0x3d, 0x20, 0x7e, 0x32, 0x3b, 0x0d, 0x0a, 0x09, 0x70, 0x2d, 0x3e, 0x6d, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x5b, 0x33, 0x5d, 0x20, 0x7c, 0x3d, 0x20, 0x28, 0x28, 0x75, 0x69, 0x6e,
+ 0x74, 0x33, 0x32, 0x5f, 0x74, 0x29, 0x28, 0x64, 0x69, 0x66, 0x66, 0x29, 0x20, 0x3c, 0x3c, 0x20, 0x31, 0x29, 0x3b, 0x0d, 0x0a, 0x7d, 0x0d, 0x0a, 0x0d, 0x0a, 0x2f, 0x2f, 0x20, 0x52, 0x65, 0x74,
+ 0x75, 0x72, 0x6e, 0x73, 0x20, 0x69, 0x6e, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x79, 0x20, 0x6d, 0x6f, 0x64, 0x69, 0x66, 0x69, 0x65, 0x72, 0x20, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x28, 0x30,
+ 0x2d, 0x37, 0x29, 0x20, 0x75, 0x73, 0x65, 0x64, 0x20, 0x62, 0x79, 0x20, 0x73, 0x75, 0x62, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x20, 0x73, 0x75, 0x62, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x69, 0x64,
+ 0x2e, 0x0d, 0x0a, 0x2f, 0x2f, 0x20, 0x73, 0x75, 0x62, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x69, 0x64, 0x3d, 0x30, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x2f, 0x74, 0x6f, 0x70, 0x20, 0x28, 0x43, 0x57,
+ 0x20, 0x31, 0x29, 0x2c, 0x20, 0x31, 0x3d, 0x72, 0x69, 0x67, 0x68, 0x74, 0x2f, 0x62, 0x6f, 0x74, 0x74, 0x6f, 0x6d, 0x20, 0x28, 0x43, 0x57, 0x20, 0x32, 0x29, 0x0d, 0x0a, 0x75, 0x69, 0x6e, 0x74,
+ 0x33, 0x32, 0x5f, 0x74, 0x20, 0x65, 0x74, 0x63, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x67, 0x65, 0x74, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x6e, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x28, 0x63,
+ 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x65, 0x74, 0x63, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x20, 0x2a, 0x70, 0x2c, 0x20, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x74, 0x20, 0x73, 0x75, 0x62, 0x62,
+ 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x69, 0x64, 0x29, 0x20, 0x0d, 0x0a, 0x7b, 0x0d, 0x0a, 0x09, 0x61, 0x73, 0x73, 0x65, 0x72, 0x74, 0x28, 0x73, 0x75, 0x62, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x69,
+ 0x64, 0x20, 0x3c, 0x20, 0x32, 0x29, 0x3b, 0x0d, 0x0a, 0x09, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x74, 0x20, 0x6f, 0x66, 0x73, 0x20, 0x3d, 0x20, 0x73,
+ 0x75, 0x62, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x69, 0x64, 0x20, 0x3f, 0x20, 0x32, 0x20, 0x3a, 0x20, 0x35, 0x3b, 0x0d, 0x0a, 0x09, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x28, 0x70, 0x2d,
+ 0x3e, 0x6d, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x5b, 0x33, 0x5d, 0x20, 0x3e, 0x3e, 0x20, 0x6f, 0x66, 0x73, 0x29, 0x20, 0x26, 0x20, 0x37, 0x3b, 0x0d, 0x0a, 0x7d, 0x0d, 0x0a, 0x0d, 0x0a, 0x2f,
+ 0x2f, 0x20, 0x53, 0x65, 0x74, 0x73, 0x20, 0x69, 0x6e, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x79, 0x20, 0x6d, 0x6f, 0x64, 0x69, 0x66, 0x69, 0x65, 0x72, 0x20, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x20,
+ 0x28, 0x30, 0x2d, 0x37, 0x29, 0x20, 0x75, 0x73, 0x65, 0x64, 0x20, 0x62, 0x79, 0x20, 0x73, 0x75, 0x62, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x20, 0x73, 0x75, 0x62, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f,
+ 0x69, 0x64, 0x20, 0x28, 0x30, 0x20, 0x6f, 0x72, 0x20, 0x31, 0x29, 0x0d, 0x0a, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x65, 0x74, 0x63, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x73, 0x65, 0x74, 0x5f,
+ 0x69, 0x6e, 0x74, 0x65, 0x6e, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x28, 0x65, 0x74, 0x63, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x20, 0x2a, 0x70, 0x2c, 0x20, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32,
+ 0x5f, 0x74, 0x20, 0x73, 0x75, 0x62, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x69, 0x64, 0x2c, 0x20, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x74, 0x20, 0x74, 0x29, 0x0d, 0x0a, 0x7b, 0x0d, 0x0a,
+ 0x09, 0x61, 0x73, 0x73, 0x65, 0x72, 0x74, 0x28, 0x73, 0x75, 0x62, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x69, 0x64, 0x20, 0x3c, 0x20, 0x32, 0x29, 0x3b, 0x0d, 0x0a, 0x09, 0x61, 0x73, 0x73, 0x65,
+ 0x72, 0x74, 0x28, 0x74, 0x20, 0x3c, 0x20, 0x38, 0x29, 0x3b, 0x0d, 0x0a, 0x09, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x74, 0x20, 0x6f, 0x66, 0x73, 0x20,
+ 0x3d, 0x20, 0x73, 0x75, 0x62, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x69, 0x64, 0x20, 0x3f, 0x20, 0x32, 0x20, 0x3a, 0x20, 0x35, 0x3b, 0x0d, 0x0a, 0x09, 0x70, 0x2d, 0x3e, 0x6d, 0x5f, 0x62, 0x79,
+ 0x74, 0x65, 0x73, 0x5b, 0x33, 0x5d, 0x20, 0x26, 0x3d, 0x20, 0x7e, 0x28, 0x37, 0x20, 0x3c, 0x3c, 0x20, 0x6f, 0x66, 0x73, 0x29, 0x3b, 0x0d, 0x0a, 0x09, 0x70, 0x2d, 0x3e, 0x6d, 0x5f, 0x62, 0x79,
+ 0x74, 0x65, 0x73, 0x5b, 0x33, 0x5d, 0x20, 0x7c, 0x3d, 0x20, 0x28, 0x74, 0x20, 0x3c, 0x3c, 0x20, 0x6f, 0x66, 0x73, 0x29, 0x3b, 0x0d, 0x0a, 0x7d, 0x0d, 0x0a, 0x0d, 0x0a, 0x76, 0x6f, 0x69, 0x64,
+ 0x20, 0x65, 0x74, 0x63, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x6e, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x5f, 0x65, 0x74, 0x63, 0x31,
+ 0x73, 0x28, 0x65, 0x74, 0x63, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x20, 0x2a, 0x70, 0x2c, 0x20, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x74, 0x20, 0x74, 0x29, 0x0d, 0x0a, 0x7b, 0x0d, 0x0a,
+ 0x09, 0x65, 0x74, 0x63, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x6e, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x28, 0x70, 0x2c, 0x20, 0x30, 0x2c,
+ 0x20, 0x74, 0x29, 0x3b, 0x0d, 0x0a, 0x09, 0x65, 0x74, 0x63, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x6e, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65,
+ 0x28, 0x70, 0x2c, 0x20, 0x31, 0x2c, 0x20, 0x74, 0x29, 0x3b, 0x0d, 0x0a, 0x7d, 0x0d, 0x0a, 0x0d, 0x0a, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x74, 0x20, 0x65, 0x74, 0x63, 0x5f, 0x62, 0x6c,
+ 0x6f, 0x63, 0x6b, 0x5f, 0x67, 0x65, 0x74, 0x5f, 0x72, 0x61, 0x77, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x28, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x65, 0x74, 0x63, 0x5f, 0x62,
+ 0x6c, 0x6f, 0x63, 0x6b, 0x20, 0x2a, 0x70, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x2c, 0x20, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x74, 0x20, 0x78, 0x2c, 0x20, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32,
+ 0x5f, 0x74, 0x20, 0x79, 0x29, 0x20, 0x0d, 0x0a, 0x7b, 0x0d, 0x0a, 0x09, 0x61, 0x73, 0x73, 0x65, 0x72, 0x74, 0x28, 0x28, 0x78, 0x20, 0x7c, 0x20, 0x79, 0x29, 0x20, 0x3c, 0x20, 0x34, 0x29, 0x3b,
+ 0x0d, 0x0a, 0x0d, 0x0a, 0x09, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x74, 0x20, 0x62, 0x69, 0x74, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x3d, 0x20,
+ 0x78, 0x20, 0x2a, 0x20, 0x34, 0x20, 0x2b, 0x20, 0x79, 0x3b, 0x0d, 0x0a, 0x09, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x74, 0x20, 0x62, 0x79, 0x74, 0x65,
+ 0x5f, 0x62, 0x69, 0x74, 0x5f, 0x6f, 0x66, 0x73, 0x20, 0x3d, 0x20, 0x62, 0x69, 0x74, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x26, 0x20, 0x37, 0x3b, 0x0d, 0x0a, 0x09, 0x63, 0x6f, 0x6e, 0x73,
+ 0x74, 0x20, 0x75, 0x69, 0x6e, 0x74, 0x38, 0x5f, 0x74, 0x20, 0x2a, 0x70, 0x20, 0x3d, 0x20, 0x26, 0x70, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x2d, 0x3e, 0x6d, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x5b,
+ 0x37, 0x20, 0x2d, 0x20, 0x28, 0x62, 0x69, 0x74, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x3e, 0x3e, 0x20, 0x33, 0x29, 0x5d, 0x3b, 0x0d, 0x0a, 0x09, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x75,
+ 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x74, 0x20, 0x6c, 0x73, 0x62, 0x20, 0x3d, 0x20, 0x28, 0x70, 0x5b, 0x30, 0x5d, 0x20, 0x3e, 0x3e, 0x20, 0x62, 0x79, 0x74, 0x65, 0x5f, 0x62, 0x69, 0x74, 0x5f,
+ 0x6f, 0x66, 0x73, 0x29, 0x20, 0x26, 0x20, 0x31, 0x3b, 0x0d, 0x0a, 0x09, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x74, 0x20, 0x6d, 0x73, 0x62, 0x20, 0x3d,
+ 0x20, 0x28, 0x70, 0x5b, 0x2d, 0x32, 0x5d, 0x20, 0x3e, 0x3e, 0x20, 0x62, 0x79, 0x74, 0x65, 0x5f, 0x62, 0x69, 0x74, 0x5f, 0x6f, 0x66, 0x73, 0x29, 0x20, 0x26, 0x20, 0x31, 0x3b, 0x0d, 0x0a, 0x09,
+ 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x74, 0x20, 0x76, 0x61, 0x6c, 0x20, 0x3d, 0x20, 0x6c, 0x73, 0x62, 0x20, 0x7c, 0x20, 0x28, 0x6d, 0x73, 0x62, 0x20,
+ 0x3c, 0x3c, 0x20, 0x31, 0x29, 0x3b, 0x0d, 0x0a, 0x0d, 0x0a, 0x09, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x76, 0x61, 0x6c, 0x3b, 0x0d, 0x0a, 0x7d, 0x0d, 0x0a, 0x0d, 0x0a, 0x2f, 0x2f, 0x20,
+ 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x65, 0x64, 0x20, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x20, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x20, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x20, 0x66,
+ 0x72, 0x6f, 0x6d, 0x20, 0x30, 0x2d, 0x33, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x69, 0x73, 0x20, 0x61, 0x20, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x20, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x69, 0x6e,
+ 0x74, 0x6f, 0x20, 0x67, 0x5f, 0x65, 0x74, 0x63, 0x31, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x6e, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x2e, 0x0d, 0x0a, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f,
+ 0x74, 0x20, 0x65, 0x74, 0x63, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x67, 0x65, 0x74, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x28, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x65,
+ 0x74, 0x63, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x20, 0x2a, 0x70, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x2c, 0x20, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x74, 0x20, 0x78, 0x2c, 0x20, 0x75, 0x69,
+ 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x74, 0x20, 0x79, 0x29, 0x20, 0x0d, 0x0a, 0x7b, 0x0d, 0x0a, 0x09, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x67, 0x5f, 0x65, 0x74, 0x63, 0x31, 0x5f, 0x74, 0x6f,
+ 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5b, 0x65, 0x74, 0x63, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x67, 0x65, 0x74, 0x5f, 0x72, 0x61,
+ 0x77, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x28, 0x70, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x2c, 0x20, 0x78, 0x2c, 0x20, 0x79, 0x29, 0x5d, 0x3b, 0x0d, 0x0a, 0x7d, 0x0d, 0x0a, 0x0d,
+ 0x0a, 0x2f, 0x2f, 0x20, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x20, 0x22, 0x76, 0x61, 0x6c, 0x22, 0x20, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x20, 0x30,
+ 0x2d, 0x33, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x69, 0x73, 0x20, 0x61, 0x20, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x20, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x69, 0x6e, 0x74, 0x6f, 0x20, 0x67, 0x5f,
+ 0x65, 0x74, 0x63, 0x31, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x6e, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x2e, 0x0d, 0x0a, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x65, 0x74, 0x63, 0x5f, 0x62, 0x6c, 0x6f,
+ 0x63, 0x6b, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x28, 0x65, 0x74, 0x63, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x20, 0x2a, 0x70, 0x42, 0x6c, 0x6f, 0x63,
+ 0x6b, 0x2c, 0x20, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x74, 0x20, 0x78, 0x2c, 0x20, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x74, 0x20, 0x79, 0x2c, 0x20, 0x75, 0x69, 0x6e, 0x74, 0x33,
+ 0x32, 0x5f, 0x74, 0x20, 0x76, 0x61, 0x6c, 0x29, 0x0d, 0x0a, 0x7b, 0x0d, 0x0a, 0x09, 0x61, 0x73, 0x73, 0x65, 0x72, 0x74, 0x28, 0x28, 0x78, 0x20, 0x7c, 0x20, 0x79, 0x20, 0x7c, 0x20, 0x76, 0x61,
+ 0x6c, 0x29, 0x20, 0x3c, 0x20, 0x34, 0x29, 0x3b, 0x0d, 0x0a, 0x09, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x74, 0x20, 0x62, 0x69, 0x74, 0x5f, 0x69, 0x6e,
+ 0x64, 0x65, 0x78, 0x20, 0x3d, 0x20, 0x78, 0x20, 0x2a, 0x20, 0x34, 0x20, 0x2b, 0x20, 0x79, 0x3b, 0x0d, 0x0a, 0x0d, 0x0a, 0x09, 0x75, 0x69, 0x6e, 0x74, 0x38, 0x5f, 0x74, 0x20, 0x2a, 0x70, 0x20,
+ 0x3d, 0x20, 0x26, 0x70, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x2d, 0x3e, 0x6d, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x5b, 0x37, 0x20, 0x2d, 0x20, 0x28, 0x62, 0x69, 0x74, 0x5f, 0x69, 0x6e, 0x64, 0x65,
+ 0x78, 0x20, 0x3e, 0x3e, 0x20, 0x33, 0x29, 0x5d, 0x3b, 0x0d, 0x0a, 0x0d, 0x0a, 0x09, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x74, 0x20, 0x62, 0x79, 0x74,
+ 0x65, 0x5f, 0x62, 0x69, 0x74, 0x5f, 0x6f, 0x66, 0x73, 0x20, 0x3d, 0x20, 0x62, 0x69, 0x74, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x26, 0x20, 0x37, 0x3b, 0x0d, 0x0a, 0x09, 0x63, 0x6f, 0x6e,
+ 0x73, 0x74, 0x20, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x74, 0x20, 0x6d, 0x61, 0x73, 0x6b, 0x20, 0x3d, 0x20, 0x31, 0x20, 0x3c, 0x3c, 0x20, 0x62, 0x79, 0x74, 0x65, 0x5f, 0x62, 0x69, 0x74,
+ 0x5f, 0x6f, 0x66, 0x73, 0x3b, 0x0d, 0x0a, 0x0d, 0x0a, 0x09, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x74, 0x20, 0x65, 0x74, 0x63, 0x31, 0x5f, 0x76, 0x61,
+ 0x6c, 0x20, 0x3d, 0x20, 0x67, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5f, 0x74, 0x6f, 0x5f, 0x65, 0x74, 0x63, 0x31, 0x5b, 0x76, 0x61, 0x6c,
+ 0x5d, 0x3b, 0x0d, 0x0a, 0x09, 0x0d, 0x0a, 0x09, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x74, 0x20, 0x6c, 0x73, 0x62, 0x20, 0x3d, 0x20, 0x65, 0x74, 0x63,
+ 0x31, 0x5f, 0x76, 0x61, 0x6c, 0x20, 0x26, 0x20, 0x31, 0x3b, 0x0d, 0x0a, 0x09, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x74, 0x20, 0x6d, 0x73, 0x62, 0x20,
+ 0x3d, 0x20, 0x65, 0x74, 0x63, 0x31, 0x5f, 0x76, 0x61, 0x6c, 0x20, 0x3e, 0x3e, 0x20, 0x31, 0x3b, 0x0d, 0x0a, 0x0d, 0x0a, 0x09, 0x70, 0x5b, 0x30, 0x5d, 0x20, 0x26, 0x3d, 0x20, 0x7e, 0x6d, 0x61,
+ 0x73, 0x6b, 0x3b, 0x0d, 0x0a, 0x09, 0x70, 0x5b, 0x30, 0x5d, 0x20, 0x7c, 0x3d, 0x20, 0x28, 0x6c, 0x73, 0x62, 0x20, 0x3c, 0x3c, 0x20, 0x62, 0x79, 0x74, 0x65, 0x5f, 0x62, 0x69, 0x74, 0x5f, 0x6f,
+ 0x66, 0x73, 0x29, 0x3b, 0x0d, 0x0a, 0x0d, 0x0a, 0x09, 0x70, 0x5b, 0x2d, 0x32, 0x5d, 0x20, 0x26, 0x3d, 0x20, 0x7e, 0x6d, 0x61, 0x73, 0x6b, 0x3b, 0x0d, 0x0a, 0x09, 0x70, 0x5b, 0x2d, 0x32, 0x5d,
+ 0x20, 0x7c, 0x3d, 0x20, 0x28, 0x6d, 0x73, 0x62, 0x20, 0x3c, 0x3c, 0x20, 0x62, 0x79, 0x74, 0x65, 0x5f, 0x62, 0x69, 0x74, 0x5f, 0x6f, 0x66, 0x73, 0x29, 0x3b, 0x0d, 0x0a, 0x7d, 0x0d, 0x0a, 0x0d,
+ 0x0a, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x65, 0x74, 0x63, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x62, 0x61, 0x73, 0x65, 0x34, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x28,
+ 0x65, 0x74, 0x63, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x20, 0x2a, 0x70, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x2c, 0x20, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x74, 0x20, 0x69, 0x64, 0x78, 0x2c,
+ 0x20, 0x75, 0x69, 0x6e, 0x74, 0x31, 0x36, 0x5f, 0x74, 0x20, 0x63, 0x29, 0x0d, 0x0a, 0x7b, 0x0d, 0x0a, 0x09, 0x69, 0x66, 0x20, 0x28, 0x69, 0x64, 0x78, 0x29, 0x0d, 0x0a, 0x09, 0x7b, 0x0d, 0x0a,
+ 0x09, 0x09, 0x65, 0x74, 0x63, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x5f, 0x62, 0x69, 0x74, 0x73, 0x28, 0x70, 0x42, 0x6c, 0x6f, 0x63, 0x6b,
+ 0x2c, 0x20, 0x63, 0x45, 0x54, 0x43, 0x31, 0x41, 0x62, 0x73, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x34, 0x52, 0x32, 0x42, 0x69, 0x74, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x2c, 0x20, 0x34, 0x2c, 0x20,
+ 0x28, 0x63, 0x20, 0x3e, 0x3e, 0x20, 0x38, 0x29, 0x20, 0x26, 0x20, 0x31, 0x35, 0x29, 0x3b, 0x0d, 0x0a, 0x09, 0x09, 0x65, 0x74, 0x63, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x73, 0x65, 0x74,
+ 0x5f, 0x62, 0x79, 0x74, 0x65, 0x5f, 0x62, 0x69, 0x74, 0x73, 0x28, 0x70, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x2c, 0x20, 0x63, 0x45, 0x54, 0x43, 0x31, 0x41, 0x62, 0x73, 0x43, 0x6f, 0x6c, 0x6f, 0x72,
+ 0x34, 0x47, 0x32, 0x42, 0x69, 0x74, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x2c, 0x20, 0x34, 0x2c, 0x20, 0x28, 0x63, 0x20, 0x3e, 0x3e, 0x20, 0x34, 0x29, 0x20, 0x26, 0x20, 0x31, 0x35, 0x29, 0x3b,
+ 0x0d, 0x0a, 0x09, 0x09, 0x65, 0x74, 0x63, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x5f, 0x62, 0x69, 0x74, 0x73, 0x28, 0x70, 0x42, 0x6c, 0x6f,
+ 0x63, 0x6b, 0x2c, 0x20, 0x63, 0x45, 0x54, 0x43, 0x31, 0x41, 0x62, 0x73, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x34, 0x42, 0x32, 0x42, 0x69, 0x74, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x2c, 0x20, 0x34,
+ 0x2c, 0x20, 0x63, 0x20, 0x26, 0x20, 0x31, 0x35, 0x29, 0x3b, 0x0d, 0x0a, 0x09, 0x7d, 0x0d, 0x0a, 0x09, 0x65, 0x6c, 0x73, 0x65, 0x0d, 0x0a, 0x09, 0x7b, 0x0d, 0x0a, 0x09, 0x09, 0x65, 0x74, 0x63,
+ 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x5f, 0x62, 0x69, 0x74, 0x73, 0x28, 0x70, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x2c, 0x20, 0x63, 0x45, 0x54,
+ 0x43, 0x31, 0x41, 0x62, 0x73, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x34, 0x52, 0x31, 0x42, 0x69, 0x74, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x2c, 0x20, 0x34, 0x2c, 0x20, 0x28, 0x63, 0x20, 0x3e, 0x3e,
+ 0x20, 0x38, 0x29, 0x20, 0x26, 0x20, 0x31, 0x35, 0x29, 0x3b, 0x0d, 0x0a, 0x09, 0x09, 0x65, 0x74, 0x63, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x62, 0x79, 0x74, 0x65,
+ 0x5f, 0x62, 0x69, 0x74, 0x73, 0x28, 0x70, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x2c, 0x20, 0x63, 0x45, 0x54, 0x43, 0x31, 0x41, 0x62, 0x73, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x34, 0x47, 0x31, 0x42, 0x69,
+ 0x74, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x2c, 0x20, 0x34, 0x2c, 0x20, 0x28, 0x63, 0x20, 0x3e, 0x3e, 0x20, 0x34, 0x29, 0x20, 0x26, 0x20, 0x31, 0x35, 0x29, 0x3b, 0x0d, 0x0a, 0x09, 0x09, 0x65,
+ 0x74, 0x63, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x5f, 0x62, 0x69, 0x74, 0x73, 0x28, 0x70, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x2c, 0x20, 0x63,
+ 0x45, 0x54, 0x43, 0x31, 0x41, 0x62, 0x73, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x34, 0x42, 0x31, 0x42, 0x69, 0x74, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x2c, 0x20, 0x34, 0x2c, 0x20, 0x63, 0x20, 0x26,
+ 0x20, 0x31, 0x35, 0x29, 0x3b, 0x0d, 0x0a, 0x09, 0x7d, 0x0d, 0x0a, 0x7d, 0x0d, 0x0a, 0x0d, 0x0a, 0x75, 0x69, 0x6e, 0x74, 0x31, 0x36, 0x5f, 0x74, 0x20, 0x65, 0x74, 0x63, 0x5f, 0x62, 0x6c, 0x6f,
+ 0x63, 0x6b, 0x5f, 0x67, 0x65, 0x74, 0x5f, 0x62, 0x61, 0x73, 0x65, 0x34, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x28, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x65, 0x74, 0x63, 0x5f, 0x62, 0x6c, 0x6f,
+ 0x63, 0x6b, 0x20, 0x2a, 0x70, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x2c, 0x20, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x74, 0x20, 0x69, 0x64, 0x78, 0x29, 0x20, 0x0d, 0x0a, 0x7b, 0x0d, 0x0a, 0x09,
+ 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x74, 0x20, 0x72, 0x2c, 0x20, 0x67, 0x2c, 0x20, 0x62, 0x3b, 0x0d, 0x0a, 0x09, 0x69, 0x66, 0x20, 0x28, 0x69, 0x64, 0x78, 0x29, 0x0d, 0x0a, 0x09, 0x7b,
+ 0x0d, 0x0a, 0x09, 0x09, 0x72, 0x20, 0x3d, 0x20, 0x65, 0x74, 0x63, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x67, 0x65, 0x74, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x5f, 0x62, 0x69, 0x74, 0x73, 0x28,
+ 0x70, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x2c, 0x20, 0x63, 0x45, 0x54, 0x43, 0x31, 0x41, 0x62, 0x73, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x34, 0x52, 0x32, 0x42, 0x69, 0x74, 0x4f, 0x66, 0x66, 0x73, 0x65,
+ 0x74, 0x2c, 0x20, 0x34, 0x29, 0x3b, 0x0d, 0x0a, 0x09, 0x09, 0x67, 0x20, 0x3d, 0x20, 0x65, 0x74, 0x63, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x67, 0x65, 0x74, 0x5f, 0x62, 0x79, 0x74, 0x65,
+ 0x5f, 0x62, 0x69, 0x74, 0x73, 0x28, 0x70, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x2c, 0x20, 0x63, 0x45, 0x54, 0x43, 0x31, 0x41, 0x62, 0x73, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x34, 0x47, 0x32, 0x42, 0x69,
+ 0x74, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x2c, 0x20, 0x34, 0x29, 0x3b, 0x0d, 0x0a, 0x09, 0x09, 0x62, 0x20, 0x3d, 0x20, 0x65, 0x74, 0x63, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x67, 0x65,
+ 0x74, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x5f, 0x62, 0x69, 0x74, 0x73, 0x28, 0x70, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x2c, 0x20, 0x63, 0x45, 0x54, 0x43, 0x31, 0x41, 0x62, 0x73, 0x43, 0x6f, 0x6c, 0x6f,
+ 0x72, 0x34, 0x42, 0x32, 0x42, 0x69, 0x74, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x2c, 0x20, 0x34, 0x29, 0x3b, 0x0d, 0x0a, 0x09, 0x7d, 0x0d, 0x0a, 0x09, 0x65, 0x6c, 0x73, 0x65, 0x0d, 0x0a, 0x09,
+ 0x7b, 0x0d, 0x0a, 0x09, 0x09, 0x72, 0x20, 0x3d, 0x20, 0x65, 0x74, 0x63, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x67, 0x65, 0x74, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x5f, 0x62, 0x69, 0x74, 0x73,
+ 0x28, 0x70, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x2c, 0x20, 0x63, 0x45, 0x54, 0x43, 0x31, 0x41, 0x62, 0x73, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x34, 0x52, 0x31, 0x42, 0x69, 0x74, 0x4f, 0x66, 0x66, 0x73,
+ 0x65, 0x74, 0x2c, 0x20, 0x34, 0x29, 0x3b, 0x0d, 0x0a, 0x09, 0x09, 0x67, 0x20, 0x3d, 0x20, 0x65, 0x74, 0x63, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x67, 0x65, 0x74, 0x5f, 0x62, 0x79, 0x74,
+ 0x65, 0x5f, 0x62, 0x69, 0x74, 0x73, 0x28, 0x70, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x2c, 0x20, 0x63, 0x45, 0x54, 0x43, 0x31, 0x41, 0x62, 0x73, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x34, 0x47, 0x31, 0x42,
+ 0x69, 0x74, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x2c, 0x20, 0x34, 0x29, 0x3b, 0x0d, 0x0a, 0x09, 0x09, 0x62, 0x20, 0x3d, 0x20, 0x65, 0x74, 0x63, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x67,
+ 0x65, 0x74, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x5f, 0x62, 0x69, 0x74, 0x73, 0x28, 0x70, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x2c, 0x20, 0x63, 0x45, 0x54, 0x43, 0x31, 0x41, 0x62, 0x73, 0x43, 0x6f, 0x6c,
+ 0x6f, 0x72, 0x34, 0x42, 0x31, 0x42, 0x69, 0x74, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x2c, 0x20, 0x34, 0x29, 0x3b, 0x0d, 0x0a, 0x09, 0x7d, 0x0d, 0x0a, 0x09, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e,
+ 0x20, 0x28, 0x75, 0x69, 0x6e, 0x74, 0x31, 0x36, 0x5f, 0x74, 0x29, 0x28, 0x62, 0x20, 0x7c, 0x20, 0x28, 0x67, 0x20, 0x3c, 0x3c, 0x20, 0x34, 0x55, 0x29, 0x20, 0x7c, 0x20, 0x28, 0x72, 0x20, 0x3c,
+ 0x3c, 0x20, 0x38, 0x55, 0x29, 0x29, 0x3b, 0x0d, 0x0a, 0x7d, 0x0d, 0x0a, 0x0d, 0x0a, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x65, 0x74, 0x63, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x73, 0x65, 0x74,
+ 0x5f, 0x62, 0x61, 0x73, 0x65, 0x35, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x28, 0x65, 0x74, 0x63, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x20, 0x2a, 0x70, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x2c, 0x20,
+ 0x75, 0x69, 0x6e, 0x74, 0x31, 0x36, 0x5f, 0x74, 0x20, 0x63, 0x29, 0x0d, 0x0a, 0x7b, 0x0d, 0x0a, 0x09, 0x65, 0x74, 0x63, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x62,
+ 0x79, 0x74, 0x65, 0x5f, 0x62, 0x69, 0x74, 0x73, 0x28, 0x70, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x2c, 0x20, 0x63, 0x45, 0x54, 0x43, 0x31, 0x42, 0x61, 0x73, 0x65, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x35,
+ 0x52, 0x42, 0x69, 0x74, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x2c, 0x20, 0x35, 0x2c, 0x20, 0x28, 0x63, 0x20, 0x3e, 0x3e, 0x20, 0x31, 0x30, 0x29, 0x20, 0x26, 0x20, 0x33, 0x31, 0x29, 0x3b, 0x0d,
+ 0x0a, 0x09, 0x65, 0x74, 0x63, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x5f, 0x62, 0x69, 0x74, 0x73, 0x28, 0x70, 0x42, 0x6c, 0x6f, 0x63, 0x6b,
+ 0x2c, 0x20, 0x63, 0x45, 0x54, 0x43, 0x31, 0x42, 0x61, 0x73, 0x65, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x35, 0x47, 0x42, 0x69, 0x74, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x2c, 0x20, 0x35, 0x2c, 0x20,
+ 0x28, 0x63, 0x20, 0x3e, 0x3e, 0x20, 0x35, 0x29, 0x20, 0x26, 0x20, 0x33, 0x31, 0x29, 0x3b, 0x0d, 0x0a, 0x09, 0x65, 0x74, 0x63, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x73, 0x65, 0x74, 0x5f,
+ 0x62, 0x79, 0x74, 0x65, 0x5f, 0x62, 0x69, 0x74, 0x73, 0x28, 0x70, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x2c, 0x20, 0x63, 0x45, 0x54, 0x43, 0x31, 0x42, 0x61, 0x73, 0x65, 0x43, 0x6f, 0x6c, 0x6f, 0x72,
+ 0x35, 0x42, 0x42, 0x69, 0x74, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x2c, 0x20, 0x35, 0x2c, 0x20, 0x63, 0x20, 0x26, 0x20, 0x33, 0x31, 0x29, 0x3b, 0x0d, 0x0a, 0x7d, 0x0d, 0x0a, 0x0d, 0x0a, 0x75,
+ 0x69, 0x6e, 0x74, 0x31, 0x36, 0x5f, 0x74, 0x20, 0x65, 0x74, 0x63, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x67, 0x65, 0x74, 0x5f, 0x62, 0x61, 0x73, 0x65, 0x35, 0x5f, 0x63, 0x6f, 0x6c, 0x6f,
+ 0x72, 0x28, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x65, 0x74, 0x63, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x20, 0x2a, 0x70, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x29, 0x0d, 0x0a, 0x7b, 0x0d, 0x0a, 0x09,
+ 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x74, 0x20, 0x72, 0x20, 0x3d, 0x20, 0x65, 0x74, 0x63, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x67, 0x65, 0x74,
+ 0x5f, 0x62, 0x79, 0x74, 0x65, 0x5f, 0x62, 0x69, 0x74, 0x73, 0x28, 0x70, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x2c, 0x20, 0x63, 0x45, 0x54, 0x43, 0x31, 0x42, 0x61, 0x73, 0x65, 0x43, 0x6f, 0x6c, 0x6f,
+ 0x72, 0x35, 0x52, 0x42, 0x69, 0x74, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x2c, 0x20, 0x35, 0x29, 0x3b, 0x0d, 0x0a, 0x09, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32,
+ 0x5f, 0x74, 0x20, 0x67, 0x20, 0x3d, 0x20, 0x65, 0x74, 0x63, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x67, 0x65, 0x74, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x5f, 0x62, 0x69, 0x74, 0x73, 0x28, 0x70,
+ 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x2c, 0x20, 0x63, 0x45, 0x54, 0x43, 0x31, 0x42, 0x61, 0x73, 0x65, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x35, 0x47, 0x42, 0x69, 0x74, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74,
+ 0x2c, 0x20, 0x35, 0x29, 0x3b, 0x0d, 0x0a, 0x09, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x74, 0x20, 0x62, 0x20, 0x3d, 0x20, 0x65, 0x74, 0x63, 0x5f, 0x62,
+ 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x67, 0x65, 0x74, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x5f, 0x62, 0x69, 0x74, 0x73, 0x28, 0x70, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x2c, 0x20, 0x63, 0x45, 0x54, 0x43, 0x31,
+ 0x42, 0x61, 0x73, 0x65, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x35, 0x42, 0x42, 0x69, 0x74, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x2c, 0x20, 0x35, 0x29, 0x3b, 0x0d, 0x0a, 0x09, 0x72, 0x65, 0x74, 0x75,
+ 0x72, 0x6e, 0x20, 0x28, 0x75, 0x69, 0x6e, 0x74, 0x31, 0x36, 0x5f, 0x74, 0x29, 0x28, 0x62, 0x20, 0x7c, 0x20, 0x28, 0x67, 0x20, 0x3c, 0x3c, 0x20, 0x35, 0x55, 0x29, 0x20, 0x7c, 0x20, 0x28, 0x72,
+ 0x20, 0x3c, 0x3c, 0x20, 0x31, 0x30, 0x55, 0x29, 0x29, 0x3b, 0x0d, 0x0a, 0x7d, 0x0d, 0x0a, 0x0d, 0x0a, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x65, 0x74, 0x63, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f,
+ 0x73, 0x65, 0x74, 0x5f, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x33, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x28, 0x65, 0x74, 0x63, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x20, 0x2a, 0x70, 0x42, 0x6c, 0x6f,
+ 0x63, 0x6b, 0x2c, 0x20, 0x75, 0x69, 0x6e, 0x74, 0x31, 0x36, 0x5f, 0x74, 0x20, 0x63, 0x29, 0x0d, 0x0a, 0x7b, 0x0d, 0x0a, 0x09, 0x65, 0x74, 0x63, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x73,
+ 0x65, 0x74, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x5f, 0x62, 0x69, 0x74, 0x73, 0x28, 0x70, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x2c, 0x20, 0x63, 0x45, 0x54, 0x43, 0x31, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x43,
+ 0x6f, 0x6c, 0x6f, 0x72, 0x33, 0x52, 0x42, 0x69, 0x74, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x2c, 0x20, 0x33, 0x2c, 0x20, 0x28, 0x63, 0x20, 0x3e, 0x3e, 0x20, 0x36, 0x29, 0x20, 0x26, 0x20, 0x37,
+ 0x29, 0x3b, 0x0d, 0x0a, 0x09, 0x65, 0x74, 0x63, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x5f, 0x62, 0x69, 0x74, 0x73, 0x28, 0x70, 0x42, 0x6c,
+ 0x6f, 0x63, 0x6b, 0x2c, 0x20, 0x63, 0x45, 0x54, 0x43, 0x31, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x33, 0x47, 0x42, 0x69, 0x74, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x2c,
+ 0x20, 0x33, 0x2c, 0x20, 0x28, 0x63, 0x20, 0x3e, 0x3e, 0x20, 0x33, 0x29, 0x20, 0x26, 0x20, 0x37, 0x29, 0x3b, 0x0d, 0x0a, 0x09, 0x65, 0x74, 0x63, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x73,
+ 0x65, 0x74, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x5f, 0x62, 0x69, 0x74, 0x73, 0x28, 0x70, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x2c, 0x20, 0x63, 0x45, 0x54, 0x43, 0x31, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x43,
+ 0x6f, 0x6c, 0x6f, 0x72, 0x33, 0x42, 0x42, 0x69, 0x74, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x2c, 0x20, 0x33, 0x2c, 0x20, 0x63, 0x20, 0x26, 0x20, 0x37, 0x29, 0x3b, 0x0d, 0x0a, 0x7d, 0x0d, 0x0a,
+ 0x0d, 0x0a, 0x75, 0x69, 0x6e, 0x74, 0x31, 0x36, 0x5f, 0x74, 0x20, 0x65, 0x74, 0x63, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x67, 0x65, 0x74, 0x5f, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x33, 0x5f,
+ 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x28, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x65, 0x74, 0x63, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x20, 0x2a, 0x70, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x29, 0x20, 0x0d,
+ 0x0a, 0x7b, 0x0d, 0x0a, 0x09, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x74, 0x20, 0x72, 0x20, 0x3d, 0x20, 0x65, 0x74, 0x63, 0x5f, 0x62, 0x6c, 0x6f, 0x63,
+ 0x6b, 0x5f, 0x67, 0x65, 0x74, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x5f, 0x62, 0x69, 0x74, 0x73, 0x28, 0x70, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x2c, 0x20, 0x63, 0x45, 0x54, 0x43, 0x31, 0x44, 0x65, 0x6c,
+ 0x74, 0x61, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x33, 0x52, 0x42, 0x69, 0x74, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x2c, 0x20, 0x33, 0x29, 0x3b, 0x0d, 0x0a, 0x09, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20,
+ 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x74, 0x20, 0x67, 0x20, 0x3d, 0x20, 0x65, 0x74, 0x63, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x67, 0x65, 0x74, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x5f,
+ 0x62, 0x69, 0x74, 0x73, 0x28, 0x70, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x2c, 0x20, 0x63, 0x45, 0x54, 0x43, 0x31, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x33, 0x47, 0x42, 0x69,
+ 0x74, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x2c, 0x20, 0x33, 0x29, 0x3b, 0x0d, 0x0a, 0x09, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x74, 0x20, 0x62, 0x20,
+ 0x3d, 0x20, 0x65, 0x74, 0x63, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x67, 0x65, 0x74, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x5f, 0x62, 0x69, 0x74, 0x73, 0x28, 0x70, 0x42, 0x6c, 0x6f, 0x63, 0x6b,
+ 0x2c, 0x20, 0x63, 0x45, 0x54, 0x43, 0x31, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x33, 0x42, 0x42, 0x69, 0x74, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x2c, 0x20, 0x33, 0x29,
+ 0x3b, 0x0d, 0x0a, 0x09, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x28, 0x75, 0x69, 0x6e, 0x74, 0x31, 0x36, 0x5f, 0x74, 0x29, 0x28, 0x62, 0x20, 0x7c, 0x20, 0x28, 0x67, 0x20, 0x3c, 0x3c, 0x20,
+ 0x33, 0x55, 0x29, 0x20, 0x7c, 0x20, 0x28, 0x72, 0x20, 0x3c, 0x3c, 0x20, 0x36, 0x55, 0x29, 0x29, 0x3b, 0x0d, 0x0a, 0x7d, 0x0d, 0x0a, 0x0d, 0x0a, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x65, 0x74, 0x63,
+ 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x5f, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x33, 0x28, 0x69, 0x6e, 0x74, 0x20, 0x2a, 0x70, 0x52, 0x2c, 0x20, 0x69, 0x6e,
+ 0x74, 0x20, 0x2a, 0x70, 0x47, 0x2c, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x2a, 0x70, 0x42, 0x2c, 0x20, 0x75, 0x69, 0x6e, 0x74, 0x31, 0x36, 0x5f, 0x74, 0x20, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f,
+ 0x64, 0x65, 0x6c, 0x74, 0x61, 0x33, 0x29, 0x0d, 0x0a, 0x7b, 0x0d, 0x0a, 0x09, 0x69, 0x6e, 0x74, 0x20, 0x72, 0x20, 0x3d, 0x20, 0x28, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x64, 0x65, 0x6c,
+ 0x74, 0x61, 0x33, 0x20, 0x3e, 0x3e, 0x20, 0x36, 0x29, 0x20, 0x26, 0x20, 0x37, 0x3b, 0x0d, 0x0a, 0x09, 0x69, 0x6e, 0x74, 0x20, 0x67, 0x20, 0x3d, 0x20, 0x28, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64,
+ 0x5f, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x33, 0x20, 0x3e, 0x3e, 0x20, 0x33, 0x29, 0x20, 0x26, 0x20, 0x37, 0x3b, 0x0d, 0x0a, 0x09, 0x69, 0x6e, 0x74, 0x20, 0x62, 0x20, 0x3d, 0x20, 0x70, 0x61, 0x63,
+ 0x6b, 0x65, 0x64, 0x5f, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x33, 0x20, 0x26, 0x20, 0x37, 0x3b, 0x0d, 0x0a, 0x09, 0x69, 0x66, 0x20, 0x28, 0x72, 0x20, 0x3e, 0x3d, 0x20, 0x34, 0x29, 0x20, 0x72, 0x20,
+ 0x2d, 0x3d, 0x20, 0x38, 0x3b, 0x0d, 0x0a, 0x09, 0x69, 0x66, 0x20, 0x28, 0x67, 0x20, 0x3e, 0x3d, 0x20, 0x34, 0x29, 0x20, 0x67, 0x20, 0x2d, 0x3d, 0x20, 0x38, 0x3b, 0x0d, 0x0a, 0x09, 0x69, 0x66,
+ 0x20, 0x28, 0x62, 0x20, 0x3e, 0x3d, 0x20, 0x34, 0x29, 0x20, 0x62, 0x20, 0x2d, 0x3d, 0x20, 0x38, 0x3b, 0x0d, 0x0a, 0x09, 0x2a, 0x70, 0x52, 0x20, 0x3d, 0x20, 0x72, 0x3b, 0x0d, 0x0a, 0x09, 0x2a,
+ 0x70, 0x47, 0x20, 0x3d, 0x20, 0x67, 0x3b, 0x0d, 0x0a, 0x09, 0x2a, 0x70, 0x42, 0x20, 0x3d, 0x20, 0x62, 0x3b, 0x0d, 0x0a, 0x7d, 0x0d, 0x0a, 0x0d, 0x0a, 0x62, 0x6f, 0x6f, 0x6c, 0x20, 0x65, 0x74,
+ 0x63, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x35, 0x5f, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x33, 0x28, 0x63, 0x6f, 0x6c,
+ 0x6f, 0x72, 0x5f, 0x72, 0x67, 0x62, 0x61, 0x20, 0x2a, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x2c, 0x20, 0x75, 0x69, 0x6e, 0x74, 0x31, 0x36, 0x5f, 0x74, 0x20, 0x70, 0x61, 0x63, 0x6b, 0x65,
+ 0x64, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x35, 0x2c, 0x20, 0x75, 0x69, 0x6e, 0x74, 0x31, 0x36, 0x5f, 0x74, 0x20, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x33,
+ 0x2c, 0x20, 0x62, 0x6f, 0x6f, 0x6c, 0x20, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x64, 0x2c, 0x20, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x74, 0x20, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x29, 0x0d, 0x0a,
+ 0x7b, 0x0d, 0x0a, 0x09, 0x69, 0x6e, 0x74, 0x20, 0x64, 0x72, 0x2c, 0x20, 0x64, 0x67, 0x2c, 0x20, 0x64, 0x62, 0x3b, 0x0d, 0x0a, 0x09, 0x65, 0x74, 0x63, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f,
+ 0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x5f, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x33, 0x28, 0x26, 0x64, 0x72, 0x2c, 0x20, 0x26, 0x64, 0x67, 0x2c, 0x20, 0x26, 0x64, 0x62, 0x2c, 0x20, 0x70, 0x61, 0x63,
+ 0x6b, 0x65, 0x64, 0x5f, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x33, 0x29, 0x3b, 0x0d, 0x0a, 0x0d, 0x0a, 0x09, 0x69, 0x6e, 0x74, 0x20, 0x62, 0x20, 0x3d, 0x20, 0x28, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64,
+ 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x35, 0x20, 0x26, 0x20, 0x33, 0x31, 0x55, 0x29, 0x20, 0x2b, 0x20, 0x64, 0x62, 0x3b, 0x0d, 0x0a, 0x09, 0x69, 0x6e, 0x74, 0x20, 0x67, 0x20, 0x3d, 0x20, 0x28,
+ 0x28, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x35, 0x20, 0x3e, 0x3e, 0x20, 0x35, 0x55, 0x29, 0x20, 0x26, 0x20, 0x33, 0x31, 0x55, 0x29, 0x20, 0x2b, 0x20, 0x64,
+ 0x67, 0x3b, 0x0d, 0x0a, 0x09, 0x69, 0x6e, 0x74, 0x20, 0x72, 0x20, 0x3d, 0x20, 0x28, 0x28, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x35, 0x20, 0x3e, 0x3e, 0x20,
+ 0x31, 0x30, 0x55, 0x29, 0x20, 0x26, 0x20, 0x33, 0x31, 0x55, 0x29, 0x20, 0x2b, 0x20, 0x64, 0x72, 0x3b, 0x0d, 0x0a, 0x0d, 0x0a, 0x09, 0x62, 0x6f, 0x6f, 0x6c, 0x20, 0x73, 0x75, 0x63, 0x63, 0x65,
+ 0x73, 0x73, 0x20, 0x3d, 0x20, 0x74, 0x72, 0x75, 0x65, 0x3b, 0x0d, 0x0a, 0x09, 0x69, 0x66, 0x20, 0x28, 0x28, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x74, 0x29, 0x28, 0x72, 0x20, 0x7c, 0x20,
+ 0x67, 0x20, 0x7c, 0x20, 0x62, 0x29, 0x20, 0x3e, 0x20, 0x33, 0x31, 0x55, 0x29, 0x0d, 0x0a, 0x09, 0x7b, 0x0d, 0x0a, 0x09, 0x09, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x20, 0x3d, 0x20, 0x66,
+ 0x61, 0x6c, 0x73, 0x65, 0x3b, 0x0d, 0x0a, 0x09, 0x09, 0x72, 0x20, 0x3d, 0x20, 0x63, 0x6c, 0x61, 0x6d, 0x70, 0x28, 0x72, 0x2c, 0x20, 0x30, 0x2c, 0x20, 0x33, 0x31, 0x29, 0x3b, 0x0d, 0x0a, 0x09,
+ 0x09, 0x67, 0x20, 0x3d, 0x20, 0x63, 0x6c, 0x61, 0x6d, 0x70, 0x28, 0x67, 0x2c, 0x20, 0x30, 0x2c, 0x20, 0x33, 0x31, 0x29, 0x3b, 0x0d, 0x0a, 0x09, 0x09, 0x62, 0x20, 0x3d, 0x20, 0x63, 0x6c, 0x61,
+ 0x6d, 0x70, 0x28, 0x62, 0x2c, 0x20, 0x30, 0x2c, 0x20, 0x33, 0x31, 0x29, 0x3b, 0x0d, 0x0a, 0x09, 0x7d, 0x0d, 0x0a, 0x0d, 0x0a, 0x09, 0x69, 0x66, 0x20, 0x28, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x64,
+ 0x29, 0x0d, 0x0a, 0x09, 0x7b, 0x0d, 0x0a, 0x09, 0x09, 0x62, 0x20, 0x3d, 0x20, 0x28, 0x62, 0x20, 0x3c, 0x3c, 0x20, 0x33, 0x55, 0x29, 0x20, 0x7c, 0x20, 0x28, 0x62, 0x20, 0x3e, 0x3e, 0x20, 0x32,
+ 0x55, 0x29, 0x3b, 0x0d, 0x0a, 0x09, 0x09, 0x67, 0x20, 0x3d, 0x20, 0x28, 0x67, 0x20, 0x3c, 0x3c, 0x20, 0x33, 0x55, 0x29, 0x20, 0x7c, 0x20, 0x28, 0x67, 0x20, 0x3e, 0x3e, 0x20, 0x32, 0x55, 0x29,
+ 0x3b, 0x0d, 0x0a, 0x09, 0x09, 0x72, 0x20, 0x3d, 0x20, 0x28, 0x72, 0x20, 0x3c, 0x3c, 0x20, 0x33, 0x55, 0x29, 0x20, 0x7c, 0x20, 0x28, 0x72, 0x20, 0x3e, 0x3e, 0x20, 0x32, 0x55, 0x29, 0x3b, 0x0d,
+ 0x0a, 0x09, 0x7d, 0x0d, 0x0a, 0x0d, 0x0a, 0x09, 0x2a, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x20, 0x3d, 0x20, 0x28, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x72, 0x67, 0x62, 0x61, 0x29, 0x28,
+ 0x72, 0x2c, 0x20, 0x67, 0x2c, 0x20, 0x62, 0x2c, 0x20, 0x6d, 0x69, 0x6e, 0x28, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2c, 0x20, 0x32, 0x35, 0x35, 0x55, 0x29, 0x29, 0x3b, 0x0d, 0x0a, 0x09, 0x72, 0x65,
+ 0x74, 0x75, 0x72, 0x6e, 0x20, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x3b, 0x0d, 0x0a, 0x7d, 0x0d, 0x0a, 0x0d, 0x0a, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x72, 0x67, 0x62, 0x61, 0x20, 0x65,
+ 0x74, 0x63, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x35, 0x28, 0x75, 0x69, 0x6e, 0x74, 0x31, 0x36, 0x5f, 0x74, 0x20,
+ 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x35, 0x2c, 0x20, 0x62, 0x6f, 0x6f, 0x6c, 0x20, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x64, 0x2c, 0x20, 0x75, 0x69, 0x6e, 0x74,
+ 0x33, 0x32, 0x5f, 0x74, 0x20, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x29, 0x0d, 0x0a, 0x7b, 0x0d, 0x0a, 0x09, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x74, 0x20, 0x62, 0x20, 0x3d, 0x20, 0x70, 0x61,
+ 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x35, 0x20, 0x26, 0x20, 0x33, 0x31, 0x55, 0x3b, 0x0d, 0x0a, 0x09, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x74, 0x20, 0x67, 0x20,
+ 0x3d, 0x20, 0x28, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x35, 0x20, 0x3e, 0x3e, 0x20, 0x35, 0x55, 0x29, 0x20, 0x26, 0x20, 0x33, 0x31, 0x55, 0x3b, 0x0d, 0x0a,
+ 0x09, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x74, 0x20, 0x72, 0x20, 0x3d, 0x20, 0x28, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x35, 0x20, 0x3e, 0x3e, 0x20,
+ 0x31, 0x30, 0x55, 0x29, 0x20, 0x26, 0x20, 0x33, 0x31, 0x55, 0x3b, 0x0d, 0x0a, 0x0d, 0x0a, 0x09, 0x69, 0x66, 0x20, 0x28, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x64, 0x29, 0x0d, 0x0a, 0x09, 0x7b, 0x0d,
+ 0x0a, 0x09, 0x09, 0x62, 0x20, 0x3d, 0x20, 0x28, 0x62, 0x20, 0x3c, 0x3c, 0x20, 0x33, 0x55, 0x29, 0x20, 0x7c, 0x20, 0x28, 0x62, 0x20, 0x3e, 0x3e, 0x20, 0x32, 0x55, 0x29, 0x3b, 0x0d, 0x0a, 0x09,
+ 0x09, 0x67, 0x20, 0x3d, 0x20, 0x28, 0x67, 0x20, 0x3c, 0x3c, 0x20, 0x33, 0x55, 0x29, 0x20, 0x7c, 0x20, 0x28, 0x67, 0x20, 0x3e, 0x3e, 0x20, 0x32, 0x55, 0x29, 0x3b, 0x0d, 0x0a, 0x09, 0x09, 0x72,
+ 0x20, 0x3d, 0x20, 0x28, 0x72, 0x20, 0x3c, 0x3c, 0x20, 0x33, 0x55, 0x29, 0x20, 0x7c, 0x20, 0x28, 0x72, 0x20, 0x3e, 0x3e, 0x20, 0x32, 0x55, 0x29, 0x3b, 0x0d, 0x0a, 0x09, 0x7d, 0x0d, 0x0a, 0x0d,
+ 0x0a, 0x09, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x28, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x72, 0x67, 0x62, 0x61, 0x29, 0x28, 0x72, 0x2c, 0x20, 0x67, 0x2c, 0x20, 0x62, 0x2c, 0x20, 0x6d,
+ 0x69, 0x6e, 0x28, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2c, 0x20, 0x32, 0x35, 0x35, 0x55, 0x29, 0x29, 0x3b, 0x0d, 0x0a, 0x7d, 0x0d, 0x0a, 0x0d, 0x0a, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x72, 0x67,
+ 0x62, 0x61, 0x20, 0x65, 0x74, 0x63, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x34, 0x28, 0x75, 0x69, 0x6e, 0x74, 0x31,
+ 0x36, 0x5f, 0x74, 0x20, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x34, 0x2c, 0x20, 0x62, 0x6f, 0x6f, 0x6c, 0x20, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x64, 0x2c, 0x20,
+ 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x74, 0x20, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x29, 0x0d, 0x0a, 0x7b, 0x0d, 0x0a, 0x09, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x74, 0x20, 0x62, 0x20,
+ 0x3d, 0x20, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x34, 0x20, 0x26, 0x20, 0x31, 0x35, 0x55, 0x3b, 0x0d, 0x0a, 0x09, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f,
+ 0x74, 0x20, 0x67, 0x20, 0x3d, 0x20, 0x28, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x34, 0x20, 0x3e, 0x3e, 0x20, 0x34, 0x55, 0x29, 0x20, 0x26, 0x20, 0x31, 0x35,
+ 0x55, 0x3b, 0x0d, 0x0a, 0x09, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x74, 0x20, 0x72, 0x20, 0x3d, 0x20, 0x28, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x34,
+ 0x20, 0x3e, 0x3e, 0x20, 0x38, 0x55, 0x29, 0x20, 0x26, 0x20, 0x31, 0x35, 0x55, 0x3b, 0x0d, 0x0a, 0x0d, 0x0a, 0x09, 0x69, 0x66, 0x20, 0x28, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x64, 0x29, 0x0d, 0x0a,
+ 0x09, 0x7b, 0x0d, 0x0a, 0x09, 0x09, 0x62, 0x20, 0x3d, 0x20, 0x28, 0x62, 0x20, 0x3c, 0x3c, 0x20, 0x34, 0x55, 0x29, 0x20, 0x7c, 0x20, 0x62, 0x3b, 0x0d, 0x0a, 0x09, 0x09, 0x67, 0x20, 0x3d, 0x20,
+ 0x28, 0x67, 0x20, 0x3c, 0x3c, 0x20, 0x34, 0x55, 0x29, 0x20, 0x7c, 0x20, 0x67, 0x3b, 0x0d, 0x0a, 0x09, 0x09, 0x72, 0x20, 0x3d, 0x20, 0x28, 0x72, 0x20, 0x3c, 0x3c, 0x20, 0x34, 0x55, 0x29, 0x20,
+ 0x7c, 0x20, 0x72, 0x3b, 0x0d, 0x0a, 0x09, 0x7d, 0x0d, 0x0a, 0x0d, 0x0a, 0x09, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x28, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x72, 0x67, 0x62, 0x61, 0x29,
+ 0x28, 0x72, 0x2c, 0x20, 0x67, 0x2c, 0x20, 0x62, 0x2c, 0x20, 0x6d, 0x69, 0x6e, 0x28, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2c, 0x20, 0x32, 0x35, 0x35, 0x55, 0x29, 0x29, 0x3b, 0x0d, 0x0a, 0x7d, 0x0d,
+ 0x0a, 0x0d, 0x0a, 0x2f, 0x2f, 0x20, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x20, 0x69, 0x66, 0x20, 0x64, 0x69, 0x64, 0x6e, 0x27, 0x74, 0x20, 0x63, 0x6c, 0x61, 0x6d, 0x70, 0x2c, 0x20, 0x74, 0x72, 0x75,
+ 0x65, 0x20, 0x69, 0x66, 0x20, 0x61, 0x6e, 0x79, 0x20, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x20, 0x63, 0x6c, 0x61, 0x6d, 0x70, 0x65, 0x64, 0x0d, 0x0a, 0x62, 0x6f, 0x6f, 0x6c,
+ 0x20, 0x65, 0x74, 0x63, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x67, 0x65, 0x74, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x73, 0x28, 0x63, 0x6f, 0x6e, 0x73,
+ 0x74, 0x20, 0x65, 0x74, 0x63, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x20, 0x2a, 0x70, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x2c, 0x20, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x72, 0x67, 0x62, 0x61, 0x2a,
+ 0x20, 0x70, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x73, 0x2c, 0x20, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x74, 0x20, 0x73, 0x75, 0x62, 0x62, 0x6c, 0x6f, 0x63,
+ 0x6b, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x29, 0x20, 0x0d, 0x0a, 0x7b, 0x0d, 0x0a, 0x09, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x72, 0x67, 0x62, 0x61, 0x20, 0x62, 0x3b, 0x0d, 0x0a, 0x0d, 0x0a,
+ 0x09, 0x69, 0x66, 0x20, 0x28, 0x65, 0x74, 0x63, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x67, 0x65, 0x74, 0x5f, 0x64, 0x69, 0x66, 0x66, 0x5f, 0x62, 0x69, 0x74, 0x28, 0x70, 0x42, 0x6c, 0x6f,
+ 0x63, 0x6b, 0x29, 0x29, 0x0d, 0x0a, 0x09, 0x7b, 0x0d, 0x0a, 0x09, 0x09, 0x69, 0x66, 0x20, 0x28, 0x73, 0x75, 0x62, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x29, 0x0d,
+ 0x0a, 0x09, 0x09, 0x09, 0x65, 0x74, 0x63, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x35, 0x5f, 0x64, 0x65, 0x6c, 0x74,
+ 0x61, 0x33, 0x28, 0x26, 0x62, 0x2c, 0x20, 0x65, 0x74, 0x63, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x67, 0x65, 0x74, 0x5f, 0x62, 0x61, 0x73, 0x65, 0x35, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72,
+ 0x28, 0x70, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x29, 0x2c, 0x20, 0x65, 0x74, 0x63, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x67, 0x65, 0x74, 0x5f, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x33, 0x5f, 0x63,
+ 0x6f, 0x6c, 0x6f, 0x72, 0x28, 0x70, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x29, 0x2c, 0x20, 0x74, 0x72, 0x75, 0x65, 0x2c, 0x20, 0x32, 0x35, 0x35, 0x29, 0x3b, 0x0d, 0x0a, 0x09, 0x09, 0x65, 0x6c, 0x73,
+ 0x65, 0x0d, 0x0a, 0x09, 0x09, 0x09, 0x62, 0x20, 0x3d, 0x20, 0x65, 0x74, 0x63, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72,
+ 0x35, 0x28, 0x65, 0x74, 0x63, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x67, 0x65, 0x74, 0x5f, 0x62, 0x61, 0x73, 0x65, 0x35, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x28, 0x70, 0x42, 0x6c, 0x6f,
+ 0x63, 0x6b, 0x29, 0x2c, 0x20, 0x74, 0x72, 0x75, 0x65, 0x2c, 0x20, 0x32, 0x35, 0x35, 0x29, 0x3b, 0x0d, 0x0a, 0x09, 0x7d, 0x0d, 0x0a, 0x09, 0x65, 0x6c, 0x73, 0x65, 0x0d, 0x0a, 0x09, 0x7b, 0x0d,
+ 0x0a, 0x09, 0x09, 0x62, 0x20, 0x3d, 0x20, 0x65, 0x74, 0x63, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x34, 0x28, 0x65,
+ 0x74, 0x63, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x67, 0x65, 0x74, 0x5f, 0x62, 0x61, 0x73, 0x65, 0x34, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x28, 0x70, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x2c,
+ 0x20, 0x73, 0x75, 0x62, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x29, 0x2c, 0x20, 0x74, 0x72, 0x75, 0x65, 0x2c, 0x20, 0x32, 0x35, 0x35, 0x29, 0x3b, 0x0d, 0x0a, 0x09,
+ 0x7d, 0x0d, 0x0a, 0x0d, 0x0a, 0x09, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x20, 0x69, 0x6e, 0x74, 0x2a, 0x20, 0x70, 0x49, 0x6e, 0x74, 0x65, 0x6e, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65,
+ 0x20, 0x3d, 0x20, 0x67, 0x5f, 0x65, 0x74, 0x63, 0x31, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x6e, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x5b, 0x65, 0x74, 0x63, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b,
+ 0x5f, 0x67, 0x65, 0x74, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x6e, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x28, 0x70, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x2c, 0x20, 0x73, 0x75, 0x62, 0x62, 0x6c, 0x6f, 0x63,
+ 0x6b, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x29, 0x5d, 0x3b, 0x0d, 0x0a, 0x0d, 0x0a, 0x09, 0x62, 0x6f, 0x6f, 0x6c, 0x20, 0x64, 0x63, 0x20, 0x3d, 0x20, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x3b, 0x0d,
+ 0x0a, 0x09, 0x70, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x73, 0x5b, 0x30, 0x5d, 0x20, 0x3d, 0x20, 0x28, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x72, 0x67, 0x62, 0x61,
+ 0x29, 0x28, 0x63, 0x6c, 0x61, 0x6d, 0x70, 0x32, 0x35, 0x35, 0x5f, 0x66, 0x6c, 0x61, 0x67, 0x28, 0x62, 0x2e, 0x78, 0x20, 0x2b, 0x20, 0x70, 0x49, 0x6e, 0x74, 0x65, 0x6e, 0x5f, 0x74, 0x61, 0x62,
+ 0x6c, 0x65, 0x5b, 0x30, 0x5d, 0x2c, 0x20, 0x26, 0x64, 0x63, 0x29, 0x2c, 0x20, 0x63, 0x6c, 0x61, 0x6d, 0x70, 0x32, 0x35, 0x35, 0x5f, 0x66, 0x6c, 0x61, 0x67, 0x28, 0x62, 0x2e, 0x79, 0x20, 0x2b,
+ 0x20, 0x70, 0x49, 0x6e, 0x74, 0x65, 0x6e, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5b, 0x30, 0x5d, 0x2c, 0x20, 0x26, 0x64, 0x63, 0x29, 0x2c, 0x20, 0x63, 0x6c, 0x61, 0x6d, 0x70, 0x32, 0x35, 0x35,
+ 0x5f, 0x66, 0x6c, 0x61, 0x67, 0x28, 0x62, 0x2e, 0x7a, 0x20, 0x2b, 0x20, 0x70, 0x49, 0x6e, 0x74, 0x65, 0x6e, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5b, 0x30, 0x5d, 0x2c, 0x20, 0x26, 0x64, 0x63,
+ 0x29, 0x2c, 0x20, 0x32, 0x35, 0x35, 0x29, 0x3b, 0x0d, 0x0a, 0x09, 0x70, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x73, 0x5b, 0x31, 0x5d, 0x20, 0x3d, 0x20, 0x28, 0x63,
+ 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x72, 0x67, 0x62, 0x61, 0x29, 0x28, 0x63, 0x6c, 0x61, 0x6d, 0x70, 0x32, 0x35, 0x35, 0x5f, 0x66, 0x6c, 0x61, 0x67, 0x28, 0x62, 0x2e, 0x78, 0x20, 0x2b, 0x20, 0x70,
+ 0x49, 0x6e, 0x74, 0x65, 0x6e, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5b, 0x31, 0x5d, 0x2c, 0x20, 0x26, 0x64, 0x63, 0x29, 0x2c, 0x20, 0x63, 0x6c, 0x61, 0x6d, 0x70, 0x32, 0x35, 0x35, 0x5f, 0x66,
+ 0x6c, 0x61, 0x67, 0x28, 0x62, 0x2e, 0x79, 0x20, 0x2b, 0x20, 0x70, 0x49, 0x6e, 0x74, 0x65, 0x6e, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5b, 0x31, 0x5d, 0x2c, 0x20, 0x26, 0x64, 0x63, 0x29, 0x2c,
+ 0x20, 0x63, 0x6c, 0x61, 0x6d, 0x70, 0x32, 0x35, 0x35, 0x5f, 0x66, 0x6c, 0x61, 0x67, 0x28, 0x62, 0x2e, 0x7a, 0x20, 0x2b, 0x20, 0x70, 0x49, 0x6e, 0x74, 0x65, 0x6e, 0x5f, 0x74, 0x61, 0x62, 0x6c,
+ 0x65, 0x5b, 0x31, 0x5d, 0x2c, 0x20, 0x26, 0x64, 0x63, 0x29, 0x2c, 0x20, 0x32, 0x35, 0x35, 0x29, 0x3b, 0x0d, 0x0a, 0x09, 0x70, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72,
+ 0x73, 0x5b, 0x32, 0x5d, 0x20, 0x3d, 0x20, 0x28, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x72, 0x67, 0x62, 0x61, 0x29, 0x28, 0x63, 0x6c, 0x61, 0x6d, 0x70, 0x32, 0x35, 0x35, 0x5f, 0x66, 0x6c, 0x61,
+ 0x67, 0x28, 0x62, 0x2e, 0x78, 0x20, 0x2b, 0x20, 0x70, 0x49, 0x6e, 0x74, 0x65, 0x6e, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5b, 0x32, 0x5d, 0x2c, 0x20, 0x26, 0x64, 0x63, 0x29, 0x2c, 0x20, 0x63,
+ 0x6c, 0x61, 0x6d, 0x70, 0x32, 0x35, 0x35, 0x5f, 0x66, 0x6c, 0x61, 0x67, 0x28, 0x62, 0x2e, 0x79, 0x20, 0x2b, 0x20, 0x70, 0x49, 0x6e, 0x74, 0x65, 0x6e, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5b,
+ 0x32, 0x5d, 0x2c, 0x20, 0x26, 0x64, 0x63, 0x29, 0x2c, 0x20, 0x63, 0x6c, 0x61, 0x6d, 0x70, 0x32, 0x35, 0x35, 0x5f, 0x66, 0x6c, 0x61, 0x67, 0x28, 0x62, 0x2e, 0x7a, 0x20, 0x2b, 0x20, 0x70, 0x49,
+ 0x6e, 0x74, 0x65, 0x6e, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5b, 0x32, 0x5d, 0x2c, 0x20, 0x26, 0x64, 0x63, 0x29, 0x2c, 0x20, 0x32, 0x35, 0x35, 0x29, 0x3b, 0x0d, 0x0a, 0x09, 0x70, 0x42, 0x6c,
+ 0x6f, 0x63, 0x6b, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x73, 0x5b, 0x33, 0x5d, 0x20, 0x3d, 0x20, 0x28, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x72, 0x67, 0x62, 0x61, 0x29, 0x28, 0x63, 0x6c, 0x61,
+ 0x6d, 0x70, 0x32, 0x35, 0x35, 0x5f, 0x66, 0x6c, 0x61, 0x67, 0x28, 0x62, 0x2e, 0x78, 0x20, 0x2b, 0x20, 0x70, 0x49, 0x6e, 0x74, 0x65, 0x6e, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5b, 0x33, 0x5d,
+ 0x2c, 0x20, 0x26, 0x64, 0x63, 0x29, 0x2c, 0x20, 0x63, 0x6c, 0x61, 0x6d, 0x70, 0x32, 0x35, 0x35, 0x5f, 0x66, 0x6c, 0x61, 0x67, 0x28, 0x62, 0x2e, 0x79, 0x20, 0x2b, 0x20, 0x70, 0x49, 0x6e, 0x74,
+ 0x65, 0x6e, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5b, 0x33, 0x5d, 0x2c, 0x20, 0x26, 0x64, 0x63, 0x29, 0x2c, 0x20, 0x63, 0x6c, 0x61, 0x6d, 0x70, 0x32, 0x35, 0x35, 0x5f, 0x66, 0x6c, 0x61, 0x67,
+ 0x28, 0x62, 0x2e, 0x7a, 0x20, 0x2b, 0x20, 0x70, 0x49, 0x6e, 0x74, 0x65, 0x6e, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5b, 0x33, 0x5d, 0x2c, 0x20, 0x26, 0x64, 0x63, 0x29, 0x2c, 0x20, 0x32, 0x35,
+ 0x35, 0x29, 0x3b, 0x0d, 0x0a, 0x09, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x64, 0x63, 0x3b, 0x0d, 0x0a, 0x7d, 0x0d, 0x0a, 0x0d, 0x0a, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x67, 0x65, 0x74, 0x5f,
+ 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x73, 0x35, 0x28, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x72, 0x67, 0x62, 0x61, 0x20, 0x2a, 0x70, 0x42, 0x6c, 0x6f, 0x63, 0x6b,
+ 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x73, 0x2c, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x72, 0x67, 0x62, 0x61, 0x20, 0x2a, 0x70, 0x42, 0x61, 0x73, 0x65,
+ 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x35, 0x2c, 0x20, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x74, 0x20, 0x69, 0x6e, 0x74, 0x65, 0x6e, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x2c, 0x20, 0x62,
+ 0x6f, 0x6f, 0x6c, 0x20, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x64, 0x20, 0x2f, 0x2a, 0x20, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x20, 0x2a, 0x2f, 0x29, 0x20, 0x0d, 0x0a, 0x7b, 0x0d, 0x0a, 0x09, 0x63, 0x6f,
+ 0x6c, 0x6f, 0x72, 0x5f, 0x72, 0x67, 0x62, 0x61, 0x20, 0x62, 0x20, 0x3d, 0x20, 0x2a, 0x70, 0x42, 0x61, 0x73, 0x65, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x35, 0x3b, 0x0d, 0x0a, 0x0d, 0x0a, 0x09,
+ 0x69, 0x66, 0x20, 0x28, 0x21, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x64, 0x29, 0x0d, 0x0a, 0x09, 0x7b, 0x0d, 0x0a, 0x09, 0x09, 0x62, 0x2e, 0x78, 0x20, 0x3d, 0x20, 0x28, 0x62, 0x2e, 0x78, 0x20, 0x3c,
+ 0x3c, 0x20, 0x33, 0x29, 0x20, 0x7c, 0x20, 0x28, 0x62, 0x2e, 0x78, 0x20, 0x3e, 0x3e, 0x20, 0x32, 0x29, 0x3b, 0x0d, 0x0a, 0x09, 0x09, 0x62, 0x2e, 0x79, 0x20, 0x3d, 0x20, 0x28, 0x62, 0x2e, 0x79,
+ 0x20, 0x3c, 0x3c, 0x20, 0x33, 0x29, 0x20, 0x7c, 0x20, 0x28, 0x62, 0x2e, 0x79, 0x20, 0x3e, 0x3e, 0x20, 0x32, 0x29, 0x3b, 0x0d, 0x0a, 0x09, 0x09, 0x62, 0x2e, 0x7a, 0x20, 0x3d, 0x20, 0x28, 0x62,
+ 0x2e, 0x7a, 0x20, 0x3c, 0x3c, 0x20, 0x33, 0x29, 0x20, 0x7c, 0x20, 0x28, 0x62, 0x2e, 0x7a, 0x20, 0x3e, 0x3e, 0x20, 0x32, 0x29, 0x3b, 0x0d, 0x0a, 0x09, 0x7d, 0x0d, 0x0a, 0x0d, 0x0a, 0x09, 0x63,
+ 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x20, 0x69, 0x6e, 0x74, 0x2a, 0x20, 0x70, 0x49, 0x6e, 0x74, 0x65, 0x6e, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x3d, 0x20, 0x67, 0x5f, 0x65, 0x74,
+ 0x63, 0x31, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x6e, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x5b, 0x69, 0x6e, 0x74, 0x65, 0x6e, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5d, 0x3b, 0x0d, 0x0a, 0x0d,
+ 0x0a, 0x09, 0x70, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x73, 0x5b, 0x30, 0x5d, 0x20, 0x3d, 0x20, 0x28, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x72, 0x67, 0x62, 0x61,
+ 0x29, 0x28, 0x63, 0x6c, 0x61, 0x6d, 0x70, 0x32, 0x35, 0x35, 0x28, 0x62, 0x2e, 0x78, 0x20, 0x2b, 0x20, 0x70, 0x49, 0x6e, 0x74, 0x65, 0x6e, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5b, 0x30, 0x5d,
+ 0x29, 0x2c, 0x20, 0x63, 0x6c, 0x61, 0x6d, 0x70, 0x32, 0x35, 0x35, 0x28, 0x62, 0x2e, 0x79, 0x20, 0x2b, 0x20, 0x70, 0x49, 0x6e, 0x74, 0x65, 0x6e, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5b, 0x30,
+ 0x5d, 0x29, 0x2c, 0x20, 0x63, 0x6c, 0x61, 0x6d, 0x70, 0x32, 0x35, 0x35, 0x28, 0x62, 0x2e, 0x7a, 0x20, 0x2b, 0x20, 0x70, 0x49, 0x6e, 0x74, 0x65, 0x6e, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5b,
+ 0x30, 0x5d, 0x29, 0x2c, 0x20, 0x32, 0x35, 0x35, 0x29, 0x3b, 0x0d, 0x0a, 0x09, 0x70, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x73, 0x5b, 0x31, 0x5d, 0x20, 0x3d, 0x20,
+ 0x28, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x72, 0x67, 0x62, 0x61, 0x29, 0x28, 0x63, 0x6c, 0x61, 0x6d, 0x70, 0x32, 0x35, 0x35, 0x28, 0x62, 0x2e, 0x78, 0x20, 0x2b, 0x20, 0x70, 0x49, 0x6e, 0x74,
+ 0x65, 0x6e, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5b, 0x31, 0x5d, 0x29, 0x2c, 0x20, 0x63, 0x6c, 0x61, 0x6d, 0x70, 0x32, 0x35, 0x35, 0x28, 0x62, 0x2e, 0x79, 0x20, 0x2b, 0x20, 0x70, 0x49, 0x6e,
+ 0x74, 0x65, 0x6e, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5b, 0x31, 0x5d, 0x29, 0x2c, 0x20, 0x63, 0x6c, 0x61, 0x6d, 0x70, 0x32, 0x35, 0x35, 0x28, 0x62, 0x2e, 0x7a, 0x20, 0x2b, 0x20, 0x70, 0x49,
+ 0x6e, 0x74, 0x65, 0x6e, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5b, 0x31, 0x5d, 0x29, 0x2c, 0x20, 0x32, 0x35, 0x35, 0x29, 0x3b, 0x0d, 0x0a, 0x09, 0x70, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x63,
+ 0x6f, 0x6c, 0x6f, 0x72, 0x73, 0x5b, 0x32, 0x5d, 0x20, 0x3d, 0x20, 0x28, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x72, 0x67, 0x62, 0x61, 0x29, 0x28, 0x63, 0x6c, 0x61, 0x6d, 0x70, 0x32, 0x35, 0x35,
+ 0x28, 0x62, 0x2e, 0x78, 0x20, 0x2b, 0x20, 0x70, 0x49, 0x6e, 0x74, 0x65, 0x6e, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5b, 0x32, 0x5d, 0x29, 0x2c, 0x20, 0x63, 0x6c, 0x61, 0x6d, 0x70, 0x32, 0x35,
+ 0x35, 0x28, 0x62, 0x2e, 0x79, 0x20, 0x2b, 0x20, 0x70, 0x49, 0x6e, 0x74, 0x65, 0x6e, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5b, 0x32, 0x5d, 0x29, 0x2c, 0x20, 0x63, 0x6c, 0x61, 0x6d, 0x70, 0x32,
+ 0x35, 0x35, 0x28, 0x62, 0x2e, 0x7a, 0x20, 0x2b, 0x20, 0x70, 0x49, 0x6e, 0x74, 0x65, 0x6e, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5b, 0x32, 0x5d, 0x29, 0x2c, 0x20, 0x32, 0x35, 0x35, 0x29, 0x3b,
+ 0x0d, 0x0a, 0x09, 0x70, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x73, 0x5b, 0x33, 0x5d, 0x20, 0x3d, 0x20, 0x28, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x72, 0x67, 0x62,
+ 0x61, 0x29, 0x28, 0x63, 0x6c, 0x61, 0x6d, 0x70, 0x32, 0x35, 0x35, 0x28, 0x62, 0x2e, 0x78, 0x20, 0x2b, 0x20, 0x70, 0x49, 0x6e, 0x74, 0x65, 0x6e, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5b, 0x33,
+ 0x5d, 0x29, 0x2c, 0x20, 0x63, 0x6c, 0x61, 0x6d, 0x70, 0x32, 0x35, 0x35, 0x28, 0x62, 0x2e, 0x79, 0x20, 0x2b, 0x20, 0x70, 0x49, 0x6e, 0x74, 0x65, 0x6e, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5b,
+ 0x33, 0x5d, 0x29, 0x2c, 0x20, 0x63, 0x6c, 0x61, 0x6d, 0x70, 0x32, 0x35, 0x35, 0x28, 0x62, 0x2e, 0x7a, 0x20, 0x2b, 0x20, 0x70, 0x49, 0x6e, 0x74, 0x65, 0x6e, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65,
+ 0x5b, 0x33, 0x5d, 0x29, 0x2c, 0x20, 0x32, 0x35, 0x35, 0x29, 0x3b, 0x0d, 0x0a, 0x7d, 0x0d, 0x0a, 0x0d, 0x0a, 0x75, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x5f, 0x74, 0x20, 0x65, 0x74, 0x63, 0x5f, 0x62,
+ 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x64, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x65, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x28, 0x65, 0x74, 0x63, 0x5f, 0x62, 0x6c, 0x6f,
+ 0x63, 0x6b, 0x20, 0x2a, 0x70, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x2c, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x72, 0x67, 0x62, 0x61, 0x2a, 0x20, 0x70, 0x53,
+ 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x73, 0x2c, 0x20, 0x62, 0x6f, 0x6f, 0x6c, 0x20, 0x70, 0x65, 0x72, 0x63, 0x65, 0x70, 0x74, 0x75, 0x61, 0x6c, 0x2c, 0x20, 0x75,
+ 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x74, 0x20, 0x62, 0x65, 0x67, 0x69, 0x6e, 0x5f, 0x73, 0x75, 0x62, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x20, 0x2f, 0x2a, 0x3d, 0x20, 0x30, 0x2a, 0x2f, 0x2c, 0x20,
+ 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x74, 0x20, 0x65, 0x6e, 0x64, 0x5f, 0x73, 0x75, 0x62, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x20, 0x2f, 0x2a, 0x3d, 0x20, 0x32, 0x2a, 0x2f, 0x29, 0x0d, 0x0a,
+ 0x7b, 0x0d, 0x0a, 0x09, 0x75, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x5f, 0x74, 0x20, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x0d, 0x0a, 0x0d,
+ 0x0a, 0x09, 0x66, 0x6f, 0x72, 0x20, 0x28, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x74, 0x20, 0x73, 0x75, 0x62, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x20, 0x3d, 0x20, 0x62, 0x65, 0x67, 0x69, 0x6e,
+ 0x5f, 0x73, 0x75, 0x62, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x3b, 0x20, 0x73, 0x75, 0x62, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x20, 0x3c, 0x20, 0x65, 0x6e, 0x64, 0x5f, 0x73, 0x75, 0x62, 0x62, 0x6c, 0x6f,
+ 0x63, 0x6b, 0x3b, 0x20, 0x73, 0x75, 0x62, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2b, 0x2b, 0x29, 0x0d, 0x0a, 0x09, 0x7b, 0x0d, 0x0a, 0x09, 0x09, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x72, 0x67, 0x62,
+ 0x61, 0x20, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x73, 0x5b, 0x34, 0x5d, 0x3b, 0x0d, 0x0a, 0x09, 0x09, 0x65, 0x74, 0x63, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f,
+ 0x67, 0x65, 0x74, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x73, 0x28, 0x70, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x2c, 0x20, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x63,
+ 0x6f, 0x6c, 0x6f, 0x72, 0x73, 0x2c, 0x20, 0x73, 0x75, 0x62, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x29, 0x3b, 0x0d, 0x0a, 0x0d, 0x0a, 0x09, 0x09, 0x69, 0x66, 0x20, 0x28, 0x65, 0x74, 0x63, 0x5f, 0x62,
+ 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x67, 0x65, 0x74, 0x5f, 0x66, 0x6c, 0x69, 0x70, 0x5f, 0x62, 0x69, 0x74, 0x28, 0x70, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x29, 0x29, 0x0d, 0x0a, 0x09, 0x09, 0x7b, 0x0d,
+ 0x0a, 0x09, 0x09, 0x09, 0x66, 0x6f, 0x72, 0x20, 0x28, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x74, 0x20, 0x79, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x20, 0x79, 0x20, 0x3c, 0x20, 0x32, 0x3b, 0x20,
+ 0x79, 0x2b, 0x2b, 0x29, 0x0d, 0x0a, 0x09, 0x09, 0x09, 0x7b, 0x0d, 0x0a, 0x09, 0x09, 0x09, 0x09, 0x66, 0x6f, 0x72, 0x20, 0x28, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x74, 0x20, 0x78, 0x20,
+ 0x3d, 0x20, 0x30, 0x3b, 0x20, 0x78, 0x20, 0x3c, 0x20, 0x34, 0x3b, 0x20, 0x78, 0x2b, 0x2b, 0x29, 0x0d, 0x0a, 0x09, 0x09, 0x09, 0x09, 0x7b, 0x0d, 0x0a, 0x09, 0x09, 0x09, 0x09, 0x09, 0x75, 0x69,
+ 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x74, 0x20, 0x62, 0x65, 0x73, 0x74, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x0d, 0x0a, 0x09, 0x09, 0x09, 0x09, 0x09,
+ 0x75, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x5f, 0x74, 0x20, 0x62, 0x65, 0x73, 0x74, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x20, 0x3d, 0x20, 0x55, 0x49, 0x4e, 0x54, 0x36, 0x34, 0x5f, 0x4d, 0x41, 0x58,
+ 0x3b, 0x0d, 0x0a, 0x0d, 0x0a, 0x09, 0x09, 0x09, 0x09, 0x09, 0x66, 0x6f, 0x72, 0x20, 0x28, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x74, 0x20, 0x73, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x20, 0x73,
+ 0x20, 0x3c, 0x20, 0x34, 0x3b, 0x20, 0x73, 0x2b, 0x2b, 0x29, 0x0d, 0x0a, 0x09, 0x09, 0x09, 0x09, 0x09, 0x7b, 0x0d, 0x0a, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x75, 0x69, 0x6e, 0x74, 0x36, 0x34,
+ 0x5f, 0x74, 0x20, 0x65, 0x72, 0x72, 0x20, 0x3d, 0x20, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x64, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x28, 0x70, 0x65, 0x72, 0x63, 0x65, 0x70, 0x74, 0x75,
+ 0x61, 0x6c, 0x2c, 0x20, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x73, 0x5b, 0x73, 0x5d, 0x2c, 0x20, 0x70, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x70, 0x69, 0x78,
+ 0x65, 0x6c, 0x73, 0x5b, 0x78, 0x20, 0x2b, 0x20, 0x28, 0x73, 0x75, 0x62, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x20, 0x2a, 0x20, 0x32, 0x20, 0x2b, 0x20, 0x79, 0x29, 0x20, 0x2a, 0x20, 0x34, 0x5d, 0x2c,
+ 0x20, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x29, 0x3b, 0x0d, 0x0a, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x69, 0x66, 0x20, 0x28, 0x65, 0x72, 0x72, 0x20, 0x3c, 0x20, 0x62, 0x65, 0x73, 0x74, 0x5f, 0x65,
+ 0x72, 0x72, 0x6f, 0x72, 0x29, 0x0d, 0x0a, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x7b, 0x0d, 0x0a, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x62, 0x65, 0x73, 0x74, 0x5f, 0x65, 0x72, 0x72, 0x6f,
+ 0x72, 0x20, 0x3d, 0x20, 0x65, 0x72, 0x72, 0x3b, 0x0d, 0x0a, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x62, 0x65, 0x73, 0x74, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x20, 0x3d,
+ 0x20, 0x73, 0x3b, 0x0d, 0x0a, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x7d, 0x0d, 0x0a, 0x09, 0x09, 0x09, 0x09, 0x09, 0x7d, 0x0d, 0x0a, 0x0d, 0x0a, 0x09, 0x09, 0x09, 0x09, 0x09, 0x65, 0x74, 0x63,
+ 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x28, 0x70, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x2c, 0x20, 0x78, 0x2c, 0x20, 0x73,
+ 0x75, 0x62, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x20, 0x2a, 0x20, 0x32, 0x20, 0x2b, 0x20, 0x79, 0x2c, 0x20, 0x62, 0x65, 0x73, 0x74, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x29, 0x3b,
+ 0x0d, 0x0a, 0x0d, 0x0a, 0x09, 0x09, 0x09, 0x09, 0x09, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x20, 0x2b, 0x3d, 0x20, 0x62, 0x65, 0x73, 0x74, 0x5f, 0x65, 0x72, 0x72,
+ 0x6f, 0x72, 0x3b, 0x0d, 0x0a, 0x09, 0x09, 0x09, 0x09, 0x7d, 0x0d, 0x0a, 0x09, 0x09, 0x09, 0x7d, 0x0d, 0x0a, 0x09, 0x09, 0x7d, 0x0d, 0x0a, 0x09, 0x09, 0x65, 0x6c, 0x73, 0x65, 0x0d, 0x0a, 0x09,
+ 0x09, 0x7b, 0x0d, 0x0a, 0x09, 0x09, 0x09, 0x66, 0x6f, 0x72, 0x20, 0x28, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x74, 0x20, 0x79, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x20, 0x79, 0x20, 0x3c, 0x20,
+ 0x34, 0x3b, 0x20, 0x79, 0x2b, 0x2b, 0x29, 0x0d, 0x0a, 0x09, 0x09, 0x09, 0x7b, 0x0d, 0x0a, 0x09, 0x09, 0x09, 0x09, 0x66, 0x6f, 0x72, 0x20, 0x28, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x74,
+ 0x20, 0x78, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x20, 0x78, 0x20, 0x3c, 0x20, 0x32, 0x3b, 0x20, 0x78, 0x2b, 0x2b, 0x29, 0x0d, 0x0a, 0x09, 0x09, 0x09, 0x09, 0x7b, 0x0d, 0x0a, 0x09, 0x09, 0x09, 0x09,
+ 0x09, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x74, 0x20, 0x62, 0x65, 0x73, 0x74, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x0d, 0x0a, 0x09, 0x09,
+ 0x09, 0x09, 0x09, 0x75, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x5f, 0x74, 0x20, 0x62, 0x65, 0x73, 0x74, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x20, 0x3d, 0x20, 0x55, 0x49, 0x4e, 0x54, 0x36, 0x34, 0x5f,
+ 0x4d, 0x41, 0x58, 0x3b, 0x0d, 0x0a, 0x0d, 0x0a, 0x09, 0x09, 0x09, 0x09, 0x09, 0x66, 0x6f, 0x72, 0x20, 0x28, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x74, 0x20, 0x73, 0x20, 0x3d, 0x20, 0x30,
+ 0x3b, 0x20, 0x73, 0x20, 0x3c, 0x20, 0x34, 0x3b, 0x20, 0x73, 0x2b, 0x2b, 0x29, 0x0d, 0x0a, 0x09, 0x09, 0x09, 0x09, 0x09, 0x7b, 0x0d, 0x0a, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x75, 0x69, 0x6e,
+ 0x74, 0x36, 0x34, 0x5f, 0x74, 0x20, 0x65, 0x72, 0x72, 0x20, 0x3d, 0x20, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x64, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x28, 0x70, 0x65, 0x72, 0x63, 0x65,
+ 0x70, 0x74, 0x75, 0x61, 0x6c, 0x2c, 0x20, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x73, 0x5b, 0x73, 0x5d, 0x2c, 0x20, 0x70, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f,
+ 0x70, 0x69, 0x78, 0x65, 0x6c, 0x73, 0x5b, 0x28, 0x73, 0x75, 0x62, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x20, 0x2a, 0x20, 0x32, 0x29, 0x20, 0x2b, 0x20, 0x78, 0x20, 0x2b, 0x20, 0x79, 0x20, 0x2a, 0x20,
+ 0x34, 0x5d, 0x2c, 0x20, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x29, 0x3b, 0x0d, 0x0a, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x69, 0x66, 0x20, 0x28, 0x65, 0x72, 0x72, 0x20, 0x3c, 0x20, 0x62, 0x65, 0x73,
+ 0x74, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x29, 0x0d, 0x0a, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x7b, 0x0d, 0x0a, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x62, 0x65, 0x73, 0x74, 0x5f, 0x65,
+ 0x72, 0x72, 0x6f, 0x72, 0x20, 0x3d, 0x20, 0x65, 0x72, 0x72, 0x3b, 0x0d, 0x0a, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x62, 0x65, 0x73, 0x74, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f,
+ 0x72, 0x20, 0x3d, 0x20, 0x73, 0x3b, 0x0d, 0x0a, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x7d, 0x0d, 0x0a, 0x09, 0x09, 0x09, 0x09, 0x09, 0x7d, 0x0d, 0x0a, 0x0d, 0x0a, 0x09, 0x09, 0x09, 0x09, 0x09,
+ 0x65, 0x74, 0x63, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x28, 0x70, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x2c, 0x20, 0x73,
+ 0x75, 0x62, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x20, 0x2a, 0x20, 0x32, 0x20, 0x2b, 0x20, 0x78, 0x2c, 0x20, 0x79, 0x2c, 0x20, 0x62, 0x65, 0x73, 0x74, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f,
+ 0x72, 0x29, 0x3b, 0x0d, 0x0a, 0x0d, 0x0a, 0x09, 0x09, 0x09, 0x09, 0x09, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x20, 0x2b, 0x3d, 0x20, 0x62, 0x65, 0x73, 0x74, 0x5f,
+ 0x65, 0x72, 0x72, 0x6f, 0x72, 0x3b, 0x0d, 0x0a, 0x09, 0x09, 0x09, 0x09, 0x7d, 0x0d, 0x0a, 0x09, 0x09, 0x09, 0x7d, 0x0d, 0x0a, 0x09, 0x09, 0x7d, 0x0d, 0x0a, 0x09, 0x7d, 0x0d, 0x0a, 0x0d, 0x0a,
+ 0x09, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x3b, 0x0d, 0x0a, 0x7d, 0x0d, 0x0a, 0x0d, 0x0a, 0x75, 0x69, 0x6e, 0x74, 0x31,
+ 0x36, 0x5f, 0x74, 0x20, 0x65, 0x74, 0x63, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x34, 0x5f, 0x72, 0x67, 0x62, 0x28, 0x75, 0x69,
+ 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x74, 0x20, 0x72, 0x2c, 0x20, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x74, 0x20, 0x67, 0x2c, 0x20, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x74, 0x20, 0x62,
+ 0x2c, 0x20, 0x62, 0x6f, 0x6f, 0x6c, 0x20, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x64, 0x29, 0x0d, 0x0a, 0x7b, 0x0d, 0x0a, 0x09, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x74, 0x20, 0x62, 0x69, 0x61,
+ 0x73, 0x20, 0x3d, 0x20, 0x31, 0x32, 0x37, 0x3b, 0x0d, 0x0a, 0x0d, 0x0a, 0x09, 0x69, 0x66, 0x20, 0x28, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x64, 0x29, 0x0d, 0x0a, 0x09, 0x7b, 0x0d, 0x0a, 0x09, 0x09,
+ 0x72, 0x20, 0x3d, 0x20, 0x28, 0x72, 0x20, 0x2a, 0x20, 0x31, 0x35, 0x55, 0x20, 0x2b, 0x20, 0x62, 0x69, 0x61, 0x73, 0x29, 0x20, 0x2f, 0x20, 0x32, 0x35, 0x35, 0x55, 0x3b, 0x0d, 0x0a, 0x09, 0x09,
+ 0x67, 0x20, 0x3d, 0x20, 0x28, 0x67, 0x20, 0x2a, 0x20, 0x31, 0x35, 0x55, 0x20, 0x2b, 0x20, 0x62, 0x69, 0x61, 0x73, 0x29, 0x20, 0x2f, 0x20, 0x32, 0x35, 0x35, 0x55, 0x3b, 0x0d, 0x0a, 0x09, 0x09,
+ 0x62, 0x20, 0x3d, 0x20, 0x28, 0x62, 0x20, 0x2a, 0x20, 0x31, 0x35, 0x55, 0x20, 0x2b, 0x20, 0x62, 0x69, 0x61, 0x73, 0x29, 0x20, 0x2f, 0x20, 0x32, 0x35, 0x35, 0x55, 0x3b, 0x0d, 0x0a, 0x09, 0x7d,
+ 0x0d, 0x0a, 0x0d, 0x0a, 0x09, 0x72, 0x20, 0x3d, 0x20, 0x6d, 0x69, 0x6e, 0x28, 0x72, 0x2c, 0x20, 0x31, 0x35, 0x55, 0x29, 0x3b, 0x0d, 0x0a, 0x09, 0x67, 0x20, 0x3d, 0x20, 0x6d, 0x69, 0x6e, 0x28,
+ 0x67, 0x2c, 0x20, 0x31, 0x35, 0x55, 0x29, 0x3b, 0x0d, 0x0a, 0x09, 0x62, 0x20, 0x3d, 0x20, 0x6d, 0x69, 0x6e, 0x28, 0x62, 0x2c, 0x20, 0x31, 0x35, 0x55, 0x29, 0x3b, 0x0d, 0x0a, 0x0d, 0x0a, 0x09,
+ 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x28, 0x75, 0x69, 0x6e, 0x74, 0x31, 0x36, 0x5f, 0x74, 0x29, 0x28, 0x62, 0x20, 0x7c, 0x20, 0x28, 0x67, 0x20, 0x3c, 0x3c, 0x20, 0x34, 0x55, 0x29, 0x20,
+ 0x7c, 0x20, 0x28, 0x72, 0x20, 0x3c, 0x3c, 0x20, 0x38, 0x55, 0x29, 0x29, 0x3b, 0x0d, 0x0a, 0x7d, 0x0d, 0x0a, 0x0d, 0x0a, 0x75, 0x69, 0x6e, 0x74, 0x31, 0x36, 0x5f, 0x74, 0x20, 0x65, 0x74, 0x63,
+ 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x34, 0x28, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x72, 0x67, 0x62, 0x61, 0x20, 0x63, 0x6f,
+ 0x6c, 0x6f, 0x72, 0x2c, 0x20, 0x62, 0x6f, 0x6f, 0x6c, 0x20, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x64, 0x29, 0x0d, 0x0a, 0x7b, 0x0d, 0x0a, 0x09, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x74, 0x20,
+ 0x62, 0x69, 0x61, 0x73, 0x20, 0x3d, 0x20, 0x31, 0x32, 0x37, 0x3b, 0x0d, 0x0a, 0x09, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x65, 0x74, 0x63, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x70,
+ 0x61, 0x63, 0x6b, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x34, 0x5f, 0x72, 0x67, 0x62, 0x28, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x2e, 0x78, 0x2c, 0x20, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x2e, 0x79, 0x2c,
+ 0x20, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x2e, 0x7a, 0x2c, 0x20, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x64, 0x29, 0x3b, 0x0d, 0x0a, 0x7d, 0x0d, 0x0a, 0x0d, 0x0a, 0x75, 0x69, 0x6e, 0x74, 0x31, 0x36, 0x5f,
+ 0x74, 0x20, 0x65, 0x74, 0x63, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x5f, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x33, 0x28, 0x69, 0x6e, 0x74, 0x20, 0x72, 0x2c, 0x20, 0x69,
+ 0x6e, 0x74, 0x20, 0x67, 0x2c, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x62, 0x29, 0x0d, 0x0a, 0x7b, 0x0d, 0x0a, 0x09, 0x61, 0x73, 0x73, 0x65, 0x72, 0x74, 0x28, 0x28, 0x72, 0x20, 0x3e, 0x3d, 0x20, 0x63,
+ 0x45, 0x54, 0x43, 0x31, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x4d, 0x69, 0x6e, 0x29, 0x20, 0x26, 0x26, 0x20, 0x28, 0x72, 0x20, 0x3c, 0x3d, 0x20, 0x63, 0x45, 0x54, 0x43,
+ 0x31, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x4d, 0x61, 0x78, 0x29, 0x29, 0x3b, 0x0d, 0x0a, 0x09, 0x61, 0x73, 0x73, 0x65, 0x72, 0x74, 0x28, 0x28, 0x67, 0x20, 0x3e, 0x3d,
+ 0x20, 0x63, 0x45, 0x54, 0x43, 0x31, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x4d, 0x69, 0x6e, 0x29, 0x20, 0x26, 0x26, 0x20, 0x28, 0x67, 0x20, 0x3c, 0x3d, 0x20, 0x63, 0x45,
+ 0x54, 0x43, 0x31, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x4d, 0x61, 0x78, 0x29, 0x29, 0x3b, 0x0d, 0x0a, 0x09, 0x61, 0x73, 0x73, 0x65, 0x72, 0x74, 0x28, 0x28, 0x62, 0x20,
+ 0x3e, 0x3d, 0x20, 0x63, 0x45, 0x54, 0x43, 0x31, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x4d, 0x69, 0x6e, 0x29, 0x20, 0x26, 0x26, 0x20, 0x28, 0x62, 0x20, 0x3c, 0x3d, 0x20,
+ 0x63, 0x45, 0x54, 0x43, 0x31, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x4d, 0x61, 0x78, 0x29, 0x29, 0x3b, 0x0d, 0x0a, 0x09, 0x69, 0x66, 0x20, 0x28, 0x72, 0x20, 0x3c, 0x20,
+ 0x30, 0x29, 0x20, 0x72, 0x20, 0x2b, 0x3d, 0x20, 0x38, 0x3b, 0x0d, 0x0a, 0x09, 0x69, 0x66, 0x20, 0x28, 0x67, 0x20, 0x3c, 0x20, 0x30, 0x29, 0x20, 0x67, 0x20, 0x2b, 0x3d, 0x20, 0x38, 0x3b, 0x0d,
+ 0x0a, 0x09, 0x69, 0x66, 0x20, 0x28, 0x62, 0x20, 0x3c, 0x20, 0x30, 0x29, 0x20, 0x62, 0x20, 0x2b, 0x3d, 0x20, 0x38, 0x3b, 0x0d, 0x0a, 0x09, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x28, 0x75,
+ 0x69, 0x6e, 0x74, 0x31, 0x36, 0x5f, 0x74, 0x29, 0x28, 0x62, 0x20, 0x7c, 0x20, 0x28, 0x67, 0x20, 0x3c, 0x3c, 0x20, 0x33, 0x29, 0x20, 0x7c, 0x20, 0x28, 0x72, 0x20, 0x3c, 0x3c, 0x20, 0x36, 0x29,
+ 0x29, 0x3b, 0x0d, 0x0a, 0x7d, 0x0d, 0x0a, 0x0d, 0x0a, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x65, 0x74, 0x63, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x62, 0x6c, 0x6f, 0x63,
+ 0x6b, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x34, 0x28, 0x65, 0x74, 0x63, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x20, 0x2a, 0x70, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x2c, 0x20, 0x63, 0x6f, 0x6c, 0x6f,
+ 0x72, 0x5f, 0x72, 0x67, 0x62, 0x61, 0x20, 0x63, 0x30, 0x5f, 0x75, 0x6e, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x64, 0x2c, 0x20, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x72, 0x67, 0x62, 0x61, 0x20, 0x63,
+ 0x31, 0x5f, 0x75, 0x6e, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x64, 0x29, 0x0d, 0x0a, 0x7b, 0x0d, 0x0a, 0x09, 0x65, 0x74, 0x63, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x64,
+ 0x69, 0x66, 0x66, 0x5f, 0x62, 0x69, 0x74, 0x28, 0x70, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x2c, 0x20, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x29, 0x3b, 0x0d, 0x0a, 0x0d, 0x0a, 0x09, 0x65, 0x74, 0x63, 0x5f,
+ 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x62, 0x61, 0x73, 0x65, 0x34, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x28, 0x70, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x2c, 0x20, 0x30, 0x2c,
+ 0x20, 0x65, 0x74, 0x63, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x34, 0x28, 0x63, 0x30, 0x5f, 0x75, 0x6e, 0x73, 0x63, 0x61, 0x6c,
+ 0x65, 0x64, 0x2c, 0x20, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x29, 0x29, 0x3b, 0x0d, 0x0a, 0x09, 0x65, 0x74, 0x63, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x62, 0x61, 0x73,
+ 0x65, 0x34, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x28, 0x70, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x2c, 0x20, 0x31, 0x2c, 0x20, 0x65, 0x74, 0x63, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x70, 0x61,
+ 0x63, 0x6b, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x34, 0x28, 0x63, 0x31, 0x5f, 0x75, 0x6e, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x64, 0x2c, 0x20, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x29, 0x29, 0x3b, 0x0d,
+ 0x0a, 0x7d, 0x0d, 0x0a, 0x0d, 0x0a, 0x75, 0x69, 0x6e, 0x74, 0x31, 0x36, 0x5f, 0x74, 0x20, 0x65, 0x74, 0x63, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x5f, 0x63, 0x6f,
+ 0x6c, 0x6f, 0x72, 0x35, 0x5f, 0x72, 0x67, 0x62, 0x28, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x74, 0x20, 0x72, 0x2c, 0x20, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x74, 0x20, 0x67, 0x2c,
+ 0x20, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x74, 0x20, 0x62, 0x2c, 0x20, 0x62, 0x6f, 0x6f, 0x6c, 0x20, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x64, 0x29, 0x0d, 0x0a, 0x7b, 0x0d, 0x0a, 0x09, 0x75,
+ 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x74, 0x20, 0x62, 0x69, 0x61, 0x73, 0x20, 0x3d, 0x20, 0x31, 0x32, 0x37, 0x3b, 0x0d, 0x0a, 0x0d, 0x0a, 0x09, 0x69, 0x66, 0x20, 0x28, 0x73, 0x63, 0x61, 0x6c,
+ 0x65, 0x64, 0x29, 0x0d, 0x0a, 0x09, 0x7b, 0x0d, 0x0a, 0x09, 0x09, 0x72, 0x20, 0x3d, 0x20, 0x28, 0x72, 0x20, 0x2a, 0x20, 0x33, 0x31, 0x55, 0x20, 0x2b, 0x20, 0x62, 0x69, 0x61, 0x73, 0x29, 0x20,
+ 0x2f, 0x20, 0x32, 0x35, 0x35, 0x55, 0x3b, 0x0d, 0x0a, 0x09, 0x09, 0x67, 0x20, 0x3d, 0x20, 0x28, 0x67, 0x20, 0x2a, 0x20, 0x33, 0x31, 0x55, 0x20, 0x2b, 0x20, 0x62, 0x69, 0x61, 0x73, 0x29, 0x20,
+ 0x2f, 0x20, 0x32, 0x35, 0x35, 0x55, 0x3b, 0x0d, 0x0a, 0x09, 0x09, 0x62, 0x20, 0x3d, 0x20, 0x28, 0x62, 0x20, 0x2a, 0x20, 0x33, 0x31, 0x55, 0x20, 0x2b, 0x20, 0x62, 0x69, 0x61, 0x73, 0x29, 0x20,
+ 0x2f, 0x20, 0x32, 0x35, 0x35, 0x55, 0x3b, 0x0d, 0x0a, 0x09, 0x7d, 0x0d, 0x0a, 0x0d, 0x0a, 0x09, 0x72, 0x20, 0x3d, 0x20, 0x6d, 0x69, 0x6e, 0x28, 0x72, 0x2c, 0x20, 0x33, 0x31, 0x55, 0x29, 0x3b,
+ 0x0d, 0x0a, 0x09, 0x67, 0x20, 0x3d, 0x20, 0x6d, 0x69, 0x6e, 0x28, 0x67, 0x2c, 0x20, 0x33, 0x31, 0x55, 0x29, 0x3b, 0x0d, 0x0a, 0x09, 0x62, 0x20, 0x3d, 0x20, 0x6d, 0x69, 0x6e, 0x28, 0x62, 0x2c,
+ 0x20, 0x33, 0x31, 0x55, 0x29, 0x3b, 0x0d, 0x0a, 0x0d, 0x0a, 0x09, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x28, 0x75, 0x69, 0x6e, 0x74, 0x31, 0x36, 0x5f, 0x74, 0x29, 0x28, 0x62, 0x20, 0x7c,
+ 0x20, 0x28, 0x67, 0x20, 0x3c, 0x3c, 0x20, 0x35, 0x55, 0x29, 0x20, 0x7c, 0x20, 0x28, 0x72, 0x20, 0x3c, 0x3c, 0x20, 0x31, 0x30, 0x55, 0x29, 0x29, 0x3b, 0x0d, 0x0a, 0x7d, 0x0d, 0x0a, 0x0d, 0x0a,
+ 0x75, 0x69, 0x6e, 0x74, 0x31, 0x36, 0x5f, 0x74, 0x20, 0x65, 0x74, 0x63, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x35, 0x28, 0x63,
+ 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x72, 0x67, 0x62, 0x61, 0x20, 0x63, 0x2c, 0x20, 0x62, 0x6f, 0x6f, 0x6c, 0x20, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x64, 0x29, 0x0d, 0x0a, 0x7b, 0x0d, 0x0a, 0x09, 0x72,
+ 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x65, 0x74, 0x63, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x35, 0x5f, 0x72, 0x67, 0x62, 0x28,
+ 0x63, 0x2e, 0x78, 0x2c, 0x20, 0x63, 0x2e, 0x79, 0x2c, 0x20, 0x63, 0x2e, 0x7a, 0x2c, 0x20, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x64, 0x29, 0x3b, 0x0d, 0x0a, 0x7d, 0x0d, 0x0a, 0x0d, 0x0a, 0x76, 0x6f,
+ 0x69, 0x64, 0x20, 0x65, 0x74, 0x63, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x35, 0x28, 0x65, 0x74,
+ 0x63, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x20, 0x2a, 0x70, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x2c, 0x20, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x72, 0x67, 0x62, 0x61, 0x20, 0x63, 0x30, 0x5f, 0x75,
+ 0x6e, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x64, 0x2c, 0x20, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x72, 0x67, 0x62, 0x61, 0x20, 0x63, 0x31, 0x5f, 0x75, 0x6e, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x64, 0x29,
+ 0x0d, 0x0a, 0x7b, 0x0d, 0x0a, 0x09, 0x65, 0x74, 0x63, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x64, 0x69, 0x66, 0x66, 0x5f, 0x62, 0x69, 0x74, 0x28, 0x70, 0x42, 0x6c,
+ 0x6f, 0x63, 0x6b, 0x2c, 0x20, 0x74, 0x72, 0x75, 0x65, 0x29, 0x3b, 0x0d, 0x0a, 0x0d, 0x0a, 0x09, 0x65, 0x74, 0x63, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x62, 0x61,
+ 0x73, 0x65, 0x35, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x28, 0x70, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x2c, 0x20, 0x65, 0x74, 0x63, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x70, 0x61, 0x63, 0x6b,
+ 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x35, 0x28, 0x63, 0x30, 0x5f, 0x75, 0x6e, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x64, 0x2c, 0x20, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x29, 0x29, 0x3b, 0x0d, 0x0a, 0x0d,
+ 0x0a, 0x09, 0x69, 0x6e, 0x74, 0x20, 0x64, 0x72, 0x20, 0x3d, 0x20, 0x63, 0x31, 0x5f, 0x75, 0x6e, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x64, 0x2e, 0x78, 0x20, 0x2d, 0x20, 0x63, 0x30, 0x5f, 0x75, 0x6e,
+ 0x73, 0x63, 0x61, 0x6c, 0x65, 0x64, 0x2e, 0x78, 0x3b, 0x0d, 0x0a, 0x09, 0x69, 0x6e, 0x74, 0x20, 0x64, 0x67, 0x20, 0x3d, 0x20, 0x63, 0x31, 0x5f, 0x75, 0x6e, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x64,
+ 0x2e, 0x79, 0x20, 0x2d, 0x20, 0x63, 0x30, 0x5f, 0x75, 0x6e, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x64, 0x2e, 0x79, 0x3b, 0x0d, 0x0a, 0x09, 0x69, 0x6e, 0x74, 0x20, 0x64, 0x62, 0x20, 0x3d, 0x20, 0x63,
+ 0x31, 0x5f, 0x75, 0x6e, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x64, 0x2e, 0x7a, 0x20, 0x2d, 0x20, 0x63, 0x30, 0x5f, 0x75, 0x6e, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x64, 0x2e, 0x7a, 0x3b, 0x0d, 0x0a, 0x0d,
+ 0x0a, 0x09, 0x65, 0x74, 0x63, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x33, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x28, 0x70, 0x42, 0x6c,
+ 0x6f, 0x63, 0x6b, 0x2c, 0x20, 0x65, 0x74, 0x63, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x5f, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x33, 0x28, 0x64, 0x72, 0x2c, 0x20, 0x64,
+ 0x67, 0x2c, 0x20, 0x64, 0x62, 0x29, 0x29, 0x3b, 0x0d, 0x0a, 0x7d, 0x0d, 0x0a, 0x0d, 0x0a, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x65, 0x74, 0x63, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x73, 0x65,
+ 0x74, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x35, 0x5f, 0x65, 0x74, 0x63, 0x31, 0x73, 0x28, 0x65, 0x74, 0x63, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x20, 0x2a,
+ 0x70, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x2c, 0x20, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x72, 0x67, 0x62, 0x61, 0x20, 0x63, 0x5f, 0x75, 0x6e, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x64, 0x29, 0x0d, 0x0a,
+ 0x7b, 0x0d, 0x0a, 0x09, 0x65, 0x74, 0x63, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x64, 0x69, 0x66, 0x66, 0x5f, 0x62, 0x69, 0x74, 0x28, 0x70, 0x42, 0x6c, 0x6f, 0x63,
+ 0x6b, 0x2c, 0x20, 0x74, 0x72, 0x75, 0x65, 0x29, 0x3b, 0x0d, 0x0a, 0x09, 0x09, 0x09, 0x0d, 0x0a, 0x09, 0x65, 0x74, 0x63, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x62,
+ 0x61, 0x73, 0x65, 0x35, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x28, 0x70, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x2c, 0x20, 0x65, 0x74, 0x63, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x70, 0x61, 0x63,
+ 0x6b, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x35, 0x28, 0x63, 0x5f, 0x75, 0x6e, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x64, 0x2c, 0x20, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x29, 0x29, 0x3b, 0x0d, 0x0a, 0x09,
+ 0x65, 0x74, 0x63, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x33, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x28, 0x70, 0x42, 0x6c, 0x6f, 0x63,
+ 0x6b, 0x2c, 0x20, 0x65, 0x74, 0x63, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x5f, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x33, 0x28, 0x30, 0x2c, 0x20, 0x30, 0x2c, 0x20, 0x30,
+ 0x29, 0x29, 0x3b, 0x0d, 0x0a, 0x7d, 0x0d, 0x0a, 0x0d, 0x0a, 0x62, 0x6f, 0x6f, 0x6c, 0x20, 0x65, 0x74, 0x63, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x62, 0x6c, 0x6f,
+ 0x63, 0x6b, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x35, 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x28, 0x65, 0x74, 0x63, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x20, 0x2a, 0x70, 0x42, 0x6c, 0x6f, 0x63,
+ 0x6b, 0x2c, 0x20, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x72, 0x67, 0x62, 0x61, 0x20, 0x63, 0x30, 0x5f, 0x75, 0x6e, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x64, 0x2c, 0x20, 0x63, 0x6f, 0x6c, 0x6f, 0x72,
+ 0x5f, 0x72, 0x67, 0x62, 0x61, 0x20, 0x63, 0x31, 0x5f, 0x75, 0x6e, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x64, 0x29, 0x0d, 0x0a, 0x7b, 0x0d, 0x0a, 0x09, 0x65, 0x74, 0x63, 0x5f, 0x62, 0x6c, 0x6f, 0x63,
+ 0x6b, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x64, 0x69, 0x66, 0x66, 0x5f, 0x62, 0x69, 0x74, 0x28, 0x70, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x2c, 0x20, 0x74, 0x72, 0x75, 0x65, 0x29, 0x3b, 0x0d, 0x0a, 0x0d,
+ 0x0a, 0x09, 0x65, 0x74, 0x63, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x62, 0x61, 0x73, 0x65, 0x35, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x28, 0x70, 0x42, 0x6c, 0x6f,
+ 0x63, 0x6b, 0x2c, 0x20, 0x65, 0x74, 0x63, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x35, 0x28, 0x63, 0x30, 0x5f, 0x75, 0x6e, 0x73,
+ 0x63, 0x61, 0x6c, 0x65, 0x64, 0x2c, 0x20, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x29, 0x29, 0x3b, 0x0d, 0x0a, 0x0d, 0x0a, 0x09, 0x69, 0x6e, 0x74, 0x20, 0x64, 0x72, 0x20, 0x3d, 0x20, 0x63, 0x31, 0x5f,
+ 0x75, 0x6e, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x64, 0x2e, 0x78, 0x20, 0x2d, 0x20, 0x63, 0x30, 0x5f, 0x75, 0x6e, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x64, 0x2e, 0x78, 0x3b, 0x0d, 0x0a, 0x09, 0x69, 0x6e,
+ 0x74, 0x20, 0x64, 0x67, 0x20, 0x3d, 0x20, 0x63, 0x31, 0x5f, 0x75, 0x6e, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x64, 0x2e, 0x79, 0x20, 0x2d, 0x20, 0x63, 0x30, 0x5f, 0x75, 0x6e, 0x73, 0x63, 0x61, 0x6c,
+ 0x65, 0x64, 0x2e, 0x79, 0x3b, 0x0d, 0x0a, 0x09, 0x69, 0x6e, 0x74, 0x20, 0x64, 0x62, 0x20, 0x3d, 0x20, 0x63, 0x31, 0x5f, 0x75, 0x6e, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x64, 0x2e, 0x7a, 0x20, 0x2d,
+ 0x20, 0x63, 0x30, 0x5f, 0x75, 0x6e, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x64, 0x2e, 0x7a, 0x3b, 0x0d, 0x0a, 0x0d, 0x0a, 0x09, 0x69, 0x66, 0x20, 0x28, 0x28, 0x28, 0x64, 0x72, 0x20, 0x3c, 0x20, 0x63,
+ 0x45, 0x54, 0x43, 0x31, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x4d, 0x69, 0x6e, 0x29, 0x20, 0x7c, 0x7c, 0x20, 0x28, 0x64, 0x72, 0x20, 0x3e, 0x20, 0x63, 0x45, 0x54, 0x43,
+ 0x31, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x4d, 0x61, 0x78, 0x29, 0x29, 0x20, 0x7c, 0x7c, 0x0d, 0x0a, 0x09, 0x09, 0x28, 0x28, 0x64, 0x67, 0x20, 0x3c, 0x20, 0x63, 0x45,
+ 0x54, 0x43, 0x31, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x4d, 0x69, 0x6e, 0x29, 0x20, 0x7c, 0x7c, 0x20, 0x28, 0x64, 0x67, 0x20, 0x3e, 0x20, 0x63, 0x45, 0x54, 0x43, 0x31,
+ 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x4d, 0x61, 0x78, 0x29, 0x29, 0x20, 0x7c, 0x7c, 0x0d, 0x0a, 0x09, 0x09, 0x28, 0x28, 0x64, 0x62, 0x20, 0x3c, 0x20, 0x63, 0x45, 0x54,
+ 0x43, 0x31, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x4d, 0x69, 0x6e, 0x29, 0x20, 0x7c, 0x7c, 0x20, 0x28, 0x64, 0x62, 0x20, 0x3e, 0x20, 0x63, 0x45, 0x54, 0x43, 0x31, 0x43,
+ 0x6f, 0x6c, 0x6f, 0x72, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x4d, 0x61, 0x78, 0x29, 0x29, 0x29, 0x0d, 0x0a, 0x09, 0x09, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x3b,
+ 0x0d, 0x0a, 0x0d, 0x0a, 0x09, 0x65, 0x74, 0x63, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x33, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x28,
+ 0x70, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x2c, 0x20, 0x65, 0x74, 0x63, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x5f, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x33, 0x28, 0x64, 0x72,
+ 0x2c, 0x20, 0x64, 0x67, 0x2c, 0x20, 0x64, 0x62, 0x29, 0x29, 0x3b, 0x0d, 0x0a, 0x0d, 0x0a, 0x09, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x74, 0x72, 0x75, 0x65, 0x3b, 0x0d, 0x0a, 0x7d, 0x0d,
+ 0x0a, 0x0d, 0x0a, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x65, 0x74, 0x63, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x5f, 0x72, 0x61, 0x77, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63,
+ 0x74, 0x6f, 0x72, 0x73, 0x28, 0x65, 0x74, 0x63, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x20, 0x2a, 0x70, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x2c, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x75, 0x69,
+ 0x6e, 0x74, 0x38, 0x5f, 0x74, 0x20, 0x2a, 0x70, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x29, 0x0d, 0x0a, 0x7b, 0x0d, 0x0a, 0x09, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x74,
+ 0x20, 0x77, 0x6f, 0x72, 0x64, 0x33, 0x20, 0x3d, 0x20, 0x30, 0x2c, 0x20, 0x77, 0x6f, 0x72, 0x64, 0x32, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x0d, 0x0a, 0x09, 0x66, 0x6f, 0x72, 0x20, 0x28, 0x75, 0x69,
+ 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x74, 0x20, 0x79, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x20, 0x79, 0x20, 0x3c, 0x20, 0x34, 0x3b, 0x20, 0x79, 0x2b, 0x2b, 0x29, 0x0d, 0x0a, 0x09, 0x7b, 0x0d, 0x0a, 0x09,
+ 0x09, 0x66, 0x6f, 0x72, 0x20, 0x28, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x74, 0x20, 0x78, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x20, 0x78, 0x20, 0x3c, 0x20, 0x34, 0x3b, 0x20, 0x78, 0x2b, 0x2b,
+ 0x29, 0x0d, 0x0a, 0x09, 0x09, 0x7b, 0x0d, 0x0a, 0x09, 0x09, 0x09, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x74, 0x20, 0x62, 0x69, 0x74, 0x5f, 0x69, 0x6e,
+ 0x64, 0x65, 0x78, 0x20, 0x3d, 0x20, 0x78, 0x20, 0x2a, 0x20, 0x34, 0x20, 0x2b, 0x20, 0x79, 0x3b, 0x0d, 0x0a, 0x09, 0x09, 0x09, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x75, 0x69, 0x6e, 0x74, 0x33,
+ 0x32, 0x5f, 0x74, 0x20, 0x73, 0x20, 0x3d, 0x20, 0x70, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x5b, 0x78, 0x20, 0x2b, 0x20, 0x79, 0x20, 0x2a, 0x20, 0x34, 0x5d, 0x3b, 0x0d, 0x0a,
+ 0x09, 0x09, 0x0d, 0x0a, 0x09, 0x09, 0x09, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x74, 0x20, 0x6c, 0x73, 0x62, 0x20, 0x3d, 0x20, 0x73, 0x20, 0x26, 0x20,
+ 0x31, 0x2c, 0x20, 0x6d, 0x73, 0x62, 0x20, 0x3d, 0x20, 0x73, 0x20, 0x3e, 0x3e, 0x20, 0x31, 0x3b, 0x0d, 0x0a, 0x09, 0x09, 0x0d, 0x0a, 0x09, 0x09, 0x09, 0x77, 0x6f, 0x72, 0x64, 0x33, 0x20, 0x7c,
+ 0x3d, 0x20, 0x28, 0x6c, 0x73, 0x62, 0x20, 0x3c, 0x3c, 0x20, 0x62, 0x69, 0x74, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x29, 0x3b, 0x0d, 0x0a, 0x09, 0x09, 0x09, 0x77, 0x6f, 0x72, 0x64, 0x32, 0x20,
+ 0x7c, 0x3d, 0x20, 0x28, 0x6d, 0x73, 0x62, 0x20, 0x3c, 0x3c, 0x20, 0x62, 0x69, 0x74, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x29, 0x3b, 0x0d, 0x0a, 0x09, 0x09, 0x7d, 0x0d, 0x0a, 0x09, 0x7d, 0x0d,
+ 0x0a, 0x0d, 0x0a, 0x09, 0x70, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x2d, 0x3e, 0x6d, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x5b, 0x37, 0x5d, 0x20, 0x3d, 0x20, 0x28, 0x75, 0x69, 0x6e, 0x74, 0x38, 0x5f,
+ 0x74, 0x29, 0x28, 0x77, 0x6f, 0x72, 0x64, 0x33, 0x29, 0x3b, 0x0d, 0x0a, 0x09, 0x70, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x2d, 0x3e, 0x6d, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x5b, 0x36, 0x5d, 0x20,
+ 0x3d, 0x20, 0x28, 0x75, 0x69, 0x6e, 0x74, 0x38, 0x5f, 0x74, 0x29, 0x28, 0x77, 0x6f, 0x72, 0x64, 0x33, 0x20, 0x3e, 0x3e, 0x20, 0x38, 0x29, 0x3b, 0x0d, 0x0a, 0x09, 0x70, 0x42, 0x6c, 0x6f, 0x63,
+ 0x6b, 0x2d, 0x3e, 0x6d, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x5b, 0x35, 0x5d, 0x20, 0x3d, 0x20, 0x28, 0x75, 0x69, 0x6e, 0x74, 0x38, 0x5f, 0x74, 0x29, 0x28, 0x77, 0x6f, 0x72, 0x64, 0x32, 0x29,
+ 0x3b, 0x0d, 0x0a, 0x09, 0x70, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x2d, 0x3e, 0x6d, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x5b, 0x34, 0x5d, 0x20, 0x3d, 0x20, 0x28, 0x75, 0x69, 0x6e, 0x74, 0x38, 0x5f,
+ 0x74, 0x29, 0x28, 0x77, 0x6f, 0x72, 0x64, 0x32, 0x20, 0x3e, 0x3e, 0x20, 0x38, 0x29, 0x3b, 0x0d, 0x0a, 0x7d, 0x0d, 0x0a, 0x0d, 0x0a, 0x2f, 0x2f, 0x20, 0x2d, 0x2d, 0x2d, 0x2d, 0x20, 0x45, 0x43,
+ 0x31, 0x53, 0x20, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x20, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x2f, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x20, 0x6f, 0x70, 0x74, 0x69, 0x6d,
+ 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x0d, 0x0a, 0x0d, 0x0a, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x20, 0x75, 0x69, 0x6e, 0x74, 0x38, 0x5f, 0x74, 0x20, 0x67, 0x5f, 0x65, 0x76,
+ 0x61, 0x6c, 0x5f, 0x64, 0x69, 0x73, 0x74, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x5b, 0x38, 0x5d, 0x5b, 0x32, 0x35, 0x36, 0x5d, 0x20, 0x3d, 0x0d, 0x0a, 0x7b, 0x0d, 0x0a, 0x09, 0x2f, 0x2f,
+ 0x20, 0x39, 0x39, 0x25, 0x20, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x0d, 0x0a, 0x09, 0x7b, 0x20, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31,
+ 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31,
+ 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31,
+ 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31,
+ 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30,
+ 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30,
+ 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30,
+ 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30,
+ 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30,
+ 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30,
+ 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30,
+ 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30,
+ 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30,
+ 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30,
+ 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30,
+ 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30,
+ 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x31, 0x2c, 0x7d, 0x2c, 0x0d, 0x0a, 0x09, 0x7b, 0x20, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c,
+ 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c,
+ 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c,
+ 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c,
+ 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c,
+ 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c,
+ 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c,
+ 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c,
+ 0x31, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c,
+ 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c,
+ 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c,
+ 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c,
+ 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c,
+ 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c,
+ 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c,
+ 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c,
+ 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x31, 0x2c, 0x7d, 0x2c, 0x0d, 0x0a, 0x09, 0x7b,
+ 0x20, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x30,
+ 0x2c, 0x30, 0x2c, 0x31, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31,
+ 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31,
+ 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31,
+ 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31,
+ 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31,
+ 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31,
+ 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31,
+ 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31,
+ 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31,
+ 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x30, 0x2c, 0x31, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x31, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30,
+ 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30,
+ 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30,
+ 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30,
+ 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30,
+ 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x31,
+ 0x2c, 0x7d, 0x2c, 0x0d, 0x0a, 0x09, 0x7b, 0x20, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c,
+ 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x30, 0x2c,
+ 0x31, 0x2c, 0x30, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c,
+ 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c,
+ 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c,
+ 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c,
+ 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c,
+ 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c,
+ 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c,
+ 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c,
+ 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c,
+ 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c,
+ 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x30, 0x2c, 0x31, 0x2c, 0x30, 0x2c,
+ 0x31, 0x2c, 0x31, 0x2c, 0x30, 0x2c, 0x31, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c,
+ 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x31, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c,
+ 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c,
+ 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x31, 0x2c, 0x7d, 0x2c, 0x0d, 0x0a, 0x09, 0x7b, 0x20, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x30,
+ 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30,
+ 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x31, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30,
+ 0x2c, 0x30, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31,
+ 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31,
+ 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31,
+ 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31,
+ 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31,
+ 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31,
+ 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31,
+ 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31,
+ 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31,
+ 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31,
+ 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31,
+ 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31,
+ 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x30, 0x2c, 0x31, 0x2c, 0x30, 0x2c, 0x31, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30,
+ 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x31, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x31, 0x2c, 0x7d, 0x2c, 0x0d, 0x0a, 0x09, 0x7b, 0x20, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c,
+ 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c,
+ 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c,
+ 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x31, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x31, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x31, 0x2c, 0x30, 0x2c,
+ 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x31, 0x2c, 0x30, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x30, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x30, 0x2c, 0x31, 0x2c, 0x31, 0x2c,
+ 0x31, 0x2c, 0x30, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x30, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c,
+ 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c,
+ 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c,
+ 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c,
+ 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c,
+ 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c,
+ 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c,
+ 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c,
+ 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c,
+ 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c,
+ 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c,
+ 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x7d, 0x2c, 0x0d, 0x0a, 0x09, 0x7b, 0x20, 0x31, 0x2c, 0x30,
+ 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30,
+ 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30,
+ 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30,
+ 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30,
+ 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x31, 0x2c, 0x30, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x30, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x30,
+ 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31,
+ 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x30, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31,
+ 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31,
+ 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31,
+ 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31,
+ 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31,
+ 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31,
+ 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31,
+ 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31,
+ 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31,
+ 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x7d, 0x2c, 0x0d,
+ 0x0a, 0x09, 0x7b, 0x20, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c,
+ 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c,
+ 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c,
+ 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x31, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c,
+ 0x30, 0x2c, 0x31, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c,
+ 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x31, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x31, 0x2c,
+ 0x31, 0x2c, 0x31, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x30, 0x2c, 0x30, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c,
+ 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c,
+ 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c,
+ 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c,
+ 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c,
+ 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c,
+ 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c,
+ 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c,
+ 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c,
+ 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c, 0x31, 0x2c,
+ 0x31, 0x2c, 0x31, 0x2c, 0x7d, 0x0d, 0x0a, 0x7d, 0x3b, 0x0d, 0x0a, 0x0d, 0x0a, 0x74, 0x79, 0x70, 0x65, 0x64, 0x65, 0x66, 0x20, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x65, 0x74, 0x63, 0x31,
+ 0x73, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x65, 0x72, 0x5f, 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x69, 0x6e, 0x61, 0x74, 0x65, 0x73,
+ 0x5f, 0x74, 0x61, 0x67, 0x0d, 0x0a, 0x7b, 0x0d, 0x0a, 0x09, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x72, 0x67, 0x62, 0x61, 0x20, 0x6d, 0x5f, 0x75, 0x6e, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x64, 0x5f,
+ 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x3b, 0x0d, 0x0a, 0x09, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x74, 0x20, 0x6d, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x6e, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x3b,
+ 0x0d, 0x0a, 0x7d, 0x20, 0x65, 0x74, 0x63, 0x31, 0x73, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x65, 0x72, 0x5f, 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x6f,
+ 0x72, 0x64, 0x69, 0x6e, 0x61, 0x74, 0x65, 0x73, 0x3b, 0x0d, 0x0a, 0x0d, 0x0a, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x72, 0x67, 0x62, 0x61, 0x20, 0x67, 0x65, 0x74, 0x5f, 0x73, 0x63, 0x61, 0x6c,
+ 0x65, 0x64, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x28, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x72, 0x67, 0x62, 0x61, 0x20, 0x75, 0x6e, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x64, 0x5f, 0x63, 0x6f, 0x6c,
+ 0x6f, 0x72, 0x29, 0x20, 0x0d, 0x0a, 0x7b, 0x0d, 0x0a, 0x09, 0x69, 0x6e, 0x74, 0x20, 0x62, 0x72, 0x2c, 0x20, 0x62, 0x67, 0x2c, 0x20, 0x62, 0x62, 0x3b, 0x0d, 0x0a, 0x09, 0x0d, 0x0a, 0x09, 0x62,
+ 0x72, 0x20, 0x3d, 0x20, 0x28, 0x75, 0x6e, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x64, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x2e, 0x78, 0x20, 0x3e, 0x3e, 0x20, 0x32, 0x29, 0x20, 0x7c, 0x20, 0x28, 0x75,
+ 0x6e, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x64, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x2e, 0x78, 0x20, 0x3c, 0x3c, 0x20, 0x33, 0x29, 0x3b, 0x0d, 0x0a, 0x09, 0x62, 0x67, 0x20, 0x3d, 0x20, 0x28, 0x75,
+ 0x6e, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x64, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x2e, 0x79, 0x20, 0x3e, 0x3e, 0x20, 0x32, 0x29, 0x20, 0x7c, 0x20, 0x28, 0x75, 0x6e, 0x73, 0x63, 0x61, 0x6c, 0x65,
+ 0x64, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x2e, 0x79, 0x20, 0x3c, 0x3c, 0x20, 0x33, 0x29, 0x3b, 0x0d, 0x0a, 0x09, 0x62, 0x62, 0x20, 0x3d, 0x20, 0x28, 0x75, 0x6e, 0x73, 0x63, 0x61, 0x6c, 0x65,
+ 0x64, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x2e, 0x7a, 0x20, 0x3e, 0x3e, 0x20, 0x32, 0x29, 0x20, 0x7c, 0x20, 0x28, 0x75, 0x6e, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x64, 0x5f, 0x63, 0x6f, 0x6c, 0x6f,
+ 0x72, 0x2e, 0x7a, 0x20, 0x3c, 0x3c, 0x20, 0x33, 0x29, 0x3b, 0x0d, 0x0a, 0x09, 0x0d, 0x0a, 0x09, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x28, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x72, 0x67,
+ 0x62, 0x61, 0x29, 0x28, 0x28, 0x75, 0x69, 0x6e, 0x74, 0x38, 0x5f, 0x74, 0x29, 0x62, 0x72, 0x2c, 0x20, 0x28, 0x75, 0x69, 0x6e, 0x74, 0x38, 0x5f, 0x74, 0x29, 0x62, 0x67, 0x2c, 0x20, 0x28, 0x75,
+ 0x69, 0x6e, 0x74, 0x38, 0x5f, 0x74, 0x29, 0x62, 0x62, 0x2c, 0x20, 0x32, 0x35, 0x35, 0x29, 0x3b, 0x0d, 0x0a, 0x7d, 0x0d, 0x0a, 0x0d, 0x0a, 0x74, 0x79, 0x70, 0x65, 0x64, 0x65, 0x66, 0x20, 0x73,
+ 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x65, 0x74, 0x63, 0x31, 0x73, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x65, 0x72, 0x5f, 0x70, 0x6f, 0x74, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x5f,
+ 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x61, 0x67, 0x0d, 0x0a, 0x7b, 0x0d, 0x0a, 0x09, 0x75, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x5f, 0x74, 0x09, 0x09, 0x09, 0x09, 0x09, 0x6d,
+ 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x3b, 0x0d, 0x0a, 0x09, 0x65, 0x74, 0x63, 0x31, 0x73, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x65, 0x72, 0x5f, 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x69,
+ 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x69, 0x6e, 0x61, 0x74, 0x65, 0x73, 0x20, 0x6d, 0x5f, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x73, 0x3b, 0x0d, 0x0a, 0x09, 0x09, 0x0d, 0x0a, 0x09, 0x75,
+ 0x69, 0x6e, 0x74, 0x38, 0x5f, 0x74, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x6d, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x5b, 0x31, 0x36, 0x5d, 0x3b, 0x0d, 0x0a, 0x09, 0x62,
+ 0x6f, 0x6f, 0x6c, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x6d, 0x5f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x3b, 0x0d, 0x0a, 0x7d, 0x20, 0x65, 0x74, 0x63, 0x31, 0x73, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6d,
+ 0x69, 0x7a, 0x65, 0x72, 0x5f, 0x70, 0x6f, 0x74, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x3b, 0x0d, 0x0a, 0x0d, 0x0a, 0x74, 0x79, 0x70, 0x65,
+ 0x64, 0x65, 0x66, 0x20, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x65, 0x74, 0x63, 0x31, 0x73, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x65, 0x72, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65,
+ 0x5f, 0x74, 0x61, 0x67, 0x0d, 0x0a, 0x7b, 0x0d, 0x0a, 0x09, 0x69, 0x6e, 0x74, 0x20, 0x6d, 0x5f, 0x62, 0x72, 0x2c, 0x20, 0x6d, 0x5f, 0x62, 0x67, 0x2c, 0x20, 0x6d, 0x5f, 0x62, 0x62, 0x3b, 0x0d,
+ 0x0a, 0x09, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x20, 0x6d, 0x5f, 0x61, 0x76, 0x67, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x3b, 0x0d, 0x0a, 0x09, 0x69, 0x6e, 0x74, 0x20, 0x6d, 0x5f, 0x6d, 0x61,
+ 0x78, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x5f, 0x73, 0x70, 0x72, 0x65, 0x61, 0x64, 0x3b, 0x0d, 0x0a, 0x09, 0x65, 0x74, 0x63, 0x31, 0x73, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x65, 0x72,
+ 0x5f, 0x70, 0x6f, 0x74, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6d, 0x5f, 0x62, 0x65, 0x73, 0x74, 0x5f, 0x73, 0x6f, 0x6c, 0x75, 0x74,
+ 0x69, 0x6f, 0x6e, 0x3b, 0x0d, 0x0a, 0x7d, 0x20, 0x65, 0x74, 0x63, 0x31, 0x73, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x65, 0x72, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x3b, 0x0d, 0x0a,
+ 0x0d, 0x0a, 0x62, 0x6f, 0x6f, 0x6c, 0x20, 0x65, 0x74, 0x63, 0x31, 0x73, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x65, 0x72, 0x5f, 0x65, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x65, 0x5f,
+ 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x28, 0x0d, 0x0a, 0x09, 0x65, 0x74, 0x63, 0x31, 0x73, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x65, 0x72, 0x5f, 0x73, 0x74, 0x61, 0x74,
+ 0x65, 0x20, 0x2a, 0x70, 0x53, 0x74, 0x61, 0x74, 0x65, 0x2c, 0x0d, 0x0a, 0x09, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x20, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x65,
+ 0x5f, 0x65, 0x74, 0x63, 0x31, 0x73, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x5f, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x2a, 0x70, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2c, 0x0d, 0x0a, 0x09,
+ 0x75, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x5f, 0x74, 0x20, 0x6e, 0x75, 0x6d, 0x5f, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x73, 0x2c, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x67, 0x6c, 0x6f, 0x62, 0x61,
+ 0x6c, 0x20, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x72, 0x67, 0x62, 0x61, 0x20, 0x2a, 0x70, 0x50, 0x69, 0x78, 0x65, 0x6c, 0x73, 0x2c, 0x20, 0x0d, 0x0a, 0x09, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20,
+ 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x20, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x74, 0x20, 0x2a, 0x70, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2c, 0x0d, 0x0a, 0x09, 0x65, 0x74, 0x63,
+ 0x31, 0x73, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x65, 0x72, 0x5f, 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x69, 0x6e, 0x61, 0x74, 0x65,
+ 0x73, 0x20, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x73, 0x2c, 0x20, 0x0d, 0x0a, 0x09, 0x65, 0x74, 0x63, 0x31, 0x73, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x65, 0x72, 0x5f, 0x70, 0x6f, 0x74,
+ 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2a, 0x20, 0x70, 0x54, 0x72, 0x69, 0x61, 0x6c, 0x5f, 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x69, 0x6f, 0x6e,
+ 0x2c, 0x20, 0x0d, 0x0a, 0x09, 0x65, 0x74, 0x63, 0x31, 0x73, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x65, 0x72, 0x5f, 0x70, 0x6f, 0x74, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x73,
+ 0x6f, 0x6c, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2a, 0x20, 0x70, 0x42, 0x65, 0x73, 0x74, 0x5f, 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x29, 0x0d, 0x0a, 0x7b, 0x0d, 0x0a, 0x09, 0x75, 0x69,
+ 0x6e, 0x74, 0x38, 0x5f, 0x74, 0x20, 0x74, 0x65, 0x6d, 0x70, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x5b, 0x31, 0x36, 0x5d, 0x3b, 0x0d, 0x0a, 0x0d, 0x0a, 0x09, 0x70, 0x54,
+ 0x72, 0x69, 0x61, 0x6c, 0x5f, 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2d, 0x3e, 0x6d, 0x5f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x20, 0x3d, 0x20, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x3b, 0x0d,
+ 0x0a, 0x09, 0x09, 0x0d, 0x0a, 0x09, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x72, 0x67, 0x62, 0x61, 0x20, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x63, 0x6f, 0x6c, 0x6f,
+ 0x72, 0x20, 0x3d, 0x20, 0x67, 0x65, 0x74, 0x5f, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x64, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x28, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x73, 0x2e, 0x6d, 0x5f, 0x75, 0x6e,
+ 0x73, 0x63, 0x61, 0x6c, 0x65, 0x64, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x29, 0x3b, 0x0d, 0x0a, 0x09, 0x0d, 0x0a, 0x09, 0x70, 0x54, 0x72, 0x69, 0x61, 0x6c, 0x5f, 0x73, 0x6f, 0x6c, 0x75, 0x74,
+ 0x69, 0x6f, 0x6e, 0x2d, 0x3e, 0x6d, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x20, 0x3d, 0x20, 0x49, 0x4e, 0x54, 0x36, 0x34, 0x5f, 0x4d, 0x41, 0x58, 0x3b, 0x0d, 0x0a, 0x09, 0x09, 0x0d, 0x0a, 0x09,
+ 0x66, 0x6f, 0x72, 0x20, 0x28, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x74, 0x20, 0x69, 0x6e, 0x74, 0x65, 0x6e, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x20, 0x69,
+ 0x6e, 0x74, 0x65, 0x6e, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x3c, 0x20, 0x63, 0x45, 0x54, 0x43, 0x31, 0x49, 0x6e, 0x74, 0x65, 0x6e, 0x4d, 0x6f, 0x64, 0x69, 0x66, 0x69, 0x65, 0x72, 0x56,
+ 0x61, 0x6c, 0x75, 0x65, 0x73, 0x3b, 0x20, 0x69, 0x6e, 0x74, 0x65, 0x6e, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x2b, 0x2b, 0x29, 0x0d, 0x0a, 0x09, 0x7b, 0x0d, 0x0a, 0x09, 0x09, 0x2f, 0x2f, 0x20,
+ 0x54, 0x4f, 0x44, 0x4f, 0x3a, 0x20, 0x54, 0x68, 0x69, 0x73, 0x20, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x20, 0x69, 0x73, 0x20, 0x65, 0x71, 0x75, 0x69, 0x76, 0x61, 0x6c, 0x65, 0x6e, 0x74, 0x20, 0x74,
+ 0x6f, 0x20, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x20, 0x71, 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x20, 0x69, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x43, 0x2b, 0x2b, 0x20, 0x76, 0x65, 0x72, 0x73,
+ 0x69, 0x6f, 0x6e, 0x2e, 0x0d, 0x0a, 0x09, 0x09, 0x69, 0x66, 0x20, 0x28, 0x21, 0x67, 0x5f, 0x65, 0x76, 0x61, 0x6c, 0x5f, 0x64, 0x69, 0x73, 0x74, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x5b,
+ 0x69, 0x6e, 0x74, 0x65, 0x6e, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5d, 0x5b, 0x70, 0x53, 0x74, 0x61, 0x74, 0x65, 0x2d, 0x3e, 0x6d, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x5f,
+ 0x73, 0x70, 0x72, 0x65, 0x61, 0x64, 0x5d, 0x29, 0x0d, 0x0a, 0x09, 0x09, 0x09, 0x63, 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75, 0x65, 0x3b, 0x0d, 0x0a, 0x0d, 0x0a, 0x09, 0x09, 0x63, 0x6f, 0x6e, 0x73,
+ 0x74, 0x61, 0x6e, 0x74, 0x20, 0x69, 0x6e, 0x74, 0x2a, 0x20, 0x70, 0x49, 0x6e, 0x74, 0x65, 0x6e, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x3d, 0x20, 0x67, 0x5f, 0x65, 0x74, 0x63, 0x31, 0x5f,
+ 0x69, 0x6e, 0x74, 0x65, 0x6e, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x5b, 0x69, 0x6e, 0x74, 0x65, 0x6e, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5d, 0x3b, 0x0d, 0x0a, 0x0d, 0x0a, 0x09, 0x09,
+ 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x72, 0x67, 0x62, 0x61, 0x20, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x73, 0x5b, 0x34, 0x5d, 0x3b, 0x0d, 0x0a, 0x09, 0x09, 0x66,
+ 0x6f, 0x72, 0x20, 0x28, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x74, 0x20, 0x73, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x20, 0x73, 0x20, 0x3c, 0x20, 0x34, 0x3b, 0x20, 0x73, 0x2b, 0x2b, 0x29, 0x0d,
+ 0x0a, 0x09, 0x09, 0x7b, 0x0d, 0x0a, 0x09, 0x09, 0x09, 0x69, 0x6e, 0x74, 0x20, 0x79, 0x64, 0x20, 0x3d, 0x20, 0x70, 0x49, 0x6e, 0x74, 0x65, 0x6e, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5b, 0x73,
+ 0x5d, 0x3b, 0x0d, 0x0a, 0x09, 0x09, 0x09, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x73, 0x5b, 0x73, 0x5d, 0x20, 0x3d, 0x20, 0x28, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f,
+ 0x72, 0x67, 0x62, 0x61, 0x29, 0x28, 0x63, 0x6c, 0x61, 0x6d, 0x70, 0x32, 0x35, 0x35, 0x28, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x2e, 0x78, 0x20, 0x2b, 0x20, 0x79, 0x64,
+ 0x29, 0x2c, 0x20, 0x63, 0x6c, 0x61, 0x6d, 0x70, 0x32, 0x35, 0x35, 0x28, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x2e, 0x79, 0x20, 0x2b, 0x20, 0x79, 0x64, 0x29, 0x2c, 0x20,
+ 0x63, 0x6c, 0x61, 0x6d, 0x70, 0x32, 0x35, 0x35, 0x28, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x2e, 0x7a, 0x20, 0x2b, 0x20, 0x79, 0x64, 0x29, 0x2c, 0x20, 0x32, 0x35, 0x35,
+ 0x29, 0x3b, 0x0d, 0x0a, 0x09, 0x09, 0x7d, 0x0d, 0x0a, 0x0d, 0x0a, 0x09, 0x09, 0x75, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x5f, 0x74, 0x20, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x65, 0x72, 0x72, 0x6f,
+ 0x72, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x0d, 0x0a, 0x09, 0x09, 0x09, 0x09, 0x0d, 0x0a, 0x09, 0x09, 0x66, 0x6f, 0x72, 0x20, 0x28, 0x75, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x5f, 0x74, 0x20, 0x63, 0x20,
+ 0x3d, 0x20, 0x30, 0x3b, 0x20, 0x63, 0x20, 0x3c, 0x20, 0x6e, 0x75, 0x6d, 0x5f, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x73, 0x3b, 0x20, 0x63, 0x2b, 0x2b, 0x29, 0x0d, 0x0a, 0x09, 0x09, 0x7b, 0x0d, 0x0a,
+ 0x09, 0x09, 0x09, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x72, 0x67, 0x62, 0x61, 0x20, 0x73, 0x72, 0x63, 0x5f, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x20, 0x3d, 0x20, 0x70, 0x50, 0x69, 0x78, 0x65, 0x6c,
+ 0x73, 0x5b, 0x63, 0x5d, 0x3b, 0x0d, 0x0a, 0x0d, 0x0a, 0x09, 0x09, 0x09, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x74, 0x20, 0x62, 0x65, 0x73, 0x74, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74,
+ 0x6f, 0x72, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x3d, 0x20, 0x33, 0x3b, 0x0d, 0x0a, 0x09, 0x09, 0x09, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x74, 0x20, 0x62, 0x65, 0x73, 0x74, 0x5f,
+ 0x65, 0x72, 0x72, 0x6f, 0x72, 0x20, 0x3d, 0x20, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x64, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x28, 0x70, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2d, 0x3e,
+ 0x6d, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x70, 0x74, 0x75, 0x61, 0x6c, 0x2c, 0x20, 0x73, 0x72, 0x63, 0x5f, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x2c, 0x20, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x63,
+ 0x6f, 0x6c, 0x6f, 0x72, 0x73, 0x5b, 0x30, 0x5d, 0x2c, 0x20, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x29, 0x3b, 0x0d, 0x0a, 0x0d, 0x0a, 0x09, 0x09, 0x09, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x74,
+ 0x20, 0x74, 0x72, 0x69, 0x61, 0x6c, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x20, 0x3d, 0x20, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x64, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x28, 0x70, 0x50,
+ 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2d, 0x3e, 0x6d, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x70, 0x74, 0x75, 0x61, 0x6c, 0x2c, 0x20, 0x73, 0x72, 0x63, 0x5f, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x2c, 0x20,
+ 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x73, 0x5b, 0x31, 0x5d, 0x2c, 0x20, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x29, 0x3b, 0x0d, 0x0a, 0x09, 0x09, 0x09, 0x69, 0x66, 0x20,
+ 0x28, 0x74, 0x72, 0x69, 0x61, 0x6c, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x20, 0x3c, 0x20, 0x62, 0x65, 0x73, 0x74, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x29, 0x0d, 0x0a, 0x09, 0x09, 0x09, 0x7b,
+ 0x0d, 0x0a, 0x09, 0x09, 0x09, 0x09, 0x62, 0x65, 0x73, 0x74, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x20, 0x3d, 0x20, 0x74, 0x72, 0x69, 0x61, 0x6c, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x3b, 0x0d,
+ 0x0a, 0x09, 0x09, 0x09, 0x09, 0x62, 0x65, 0x73, 0x74, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x3d, 0x20, 0x32, 0x3b, 0x0d, 0x0a, 0x09,
+ 0x09, 0x09, 0x7d, 0x0d, 0x0a, 0x0d, 0x0a, 0x09, 0x09, 0x09, 0x74, 0x72, 0x69, 0x61, 0x6c, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x20, 0x3d, 0x20, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x64, 0x69,
+ 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x28, 0x70, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2d, 0x3e, 0x6d, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x70, 0x74, 0x75, 0x61, 0x6c, 0x2c, 0x20, 0x73, 0x72,
+ 0x63, 0x5f, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x2c, 0x20, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x73, 0x5b, 0x32, 0x5d, 0x2c, 0x20, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x29,
+ 0x3b, 0x0d, 0x0a, 0x09, 0x09, 0x09, 0x69, 0x66, 0x20, 0x28, 0x74, 0x72, 0x69, 0x61, 0x6c, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x20, 0x3c, 0x20, 0x62, 0x65, 0x73, 0x74, 0x5f, 0x65, 0x72, 0x72,
+ 0x6f, 0x72, 0x29, 0x0d, 0x0a, 0x09, 0x09, 0x09, 0x7b, 0x0d, 0x0a, 0x09, 0x09, 0x09, 0x09, 0x62, 0x65, 0x73, 0x74, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x20, 0x3d, 0x20, 0x74, 0x72, 0x69, 0x61,
+ 0x6c, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x3b, 0x0d, 0x0a, 0x09, 0x09, 0x09, 0x09, 0x62, 0x65, 0x73, 0x74, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x5f, 0x69, 0x6e, 0x64, 0x65,
+ 0x78, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x0d, 0x0a, 0x09, 0x09, 0x09, 0x7d, 0x0d, 0x0a, 0x0d, 0x0a, 0x09, 0x09, 0x09, 0x74, 0x72, 0x69, 0x61, 0x6c, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x20, 0x3d,
+ 0x20, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x64, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x28, 0x70, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2d, 0x3e, 0x6d, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65,
+ 0x70, 0x74, 0x75, 0x61, 0x6c, 0x2c, 0x20, 0x73, 0x72, 0x63, 0x5f, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x2c, 0x20, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x73, 0x5b, 0x33,
+ 0x5d, 0x2c, 0x20, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x29, 0x3b, 0x0d, 0x0a, 0x09, 0x09, 0x09, 0x69, 0x66, 0x20, 0x28, 0x74, 0x72, 0x69, 0x61, 0x6c, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x20, 0x3c,
+ 0x20, 0x62, 0x65, 0x73, 0x74, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x29, 0x0d, 0x0a, 0x09, 0x09, 0x09, 0x7b, 0x0d, 0x0a, 0x09, 0x09, 0x09, 0x09, 0x62, 0x65, 0x73, 0x74, 0x5f, 0x65, 0x72, 0x72,
+ 0x6f, 0x72, 0x20, 0x3d, 0x20, 0x74, 0x72, 0x69, 0x61, 0x6c, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x3b, 0x0d, 0x0a, 0x09, 0x09, 0x09, 0x09, 0x62, 0x65, 0x73, 0x74, 0x5f, 0x73, 0x65, 0x6c, 0x65,
+ 0x63, 0x74, 0x6f, 0x72, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x3d, 0x20, 0x31, 0x3b, 0x0d, 0x0a, 0x09, 0x09, 0x09, 0x7d, 0x0d, 0x0a, 0x0d, 0x0a, 0x09, 0x09, 0x09, 0x69, 0x66, 0x20, 0x28,
+ 0x6e, 0x75, 0x6d, 0x5f, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x73, 0x20, 0x3c, 0x3d, 0x20, 0x31, 0x36, 0x29, 0x0d, 0x0a, 0x09, 0x09, 0x09, 0x09, 0x74, 0x65, 0x6d, 0x70, 0x5f, 0x73, 0x65, 0x6c, 0x65,
+ 0x63, 0x74, 0x6f, 0x72, 0x73, 0x5b, 0x63, 0x5d, 0x20, 0x3d, 0x20, 0x28, 0x75, 0x69, 0x6e, 0x74, 0x38, 0x5f, 0x74, 0x29, 0x28, 0x62, 0x65, 0x73, 0x74, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74,
+ 0x6f, 0x72, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x29, 0x3b, 0x0d, 0x0a, 0x0d, 0x0a, 0x09, 0x09, 0x09, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x20, 0x2b, 0x3d, 0x20,
+ 0x70, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x73, 0x20, 0x3f, 0x20, 0x28, 0x62, 0x65, 0x73, 0x74, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x20, 0x2a, 0x20, 0x28, 0x75, 0x69, 0x6e, 0x74, 0x36, 0x34,
+ 0x5f, 0x74, 0x29, 0x70, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x73, 0x5b, 0x63, 0x5d, 0x29, 0x20, 0x3a, 0x20, 0x62, 0x65, 0x73, 0x74, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x3b, 0x0d, 0x0a, 0x09,
+ 0x09, 0x09, 0x0d, 0x0a, 0x09, 0x09, 0x09, 0x69, 0x66, 0x20, 0x28, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x20, 0x3e, 0x3d, 0x20, 0x70, 0x54, 0x72, 0x69, 0x61, 0x6c,
+ 0x5f, 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2d, 0x3e, 0x6d, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x29, 0x0d, 0x0a, 0x09, 0x09, 0x09, 0x09, 0x62, 0x72, 0x65, 0x61, 0x6b, 0x3b, 0x0d,
+ 0x0a, 0x09, 0x09, 0x7d, 0x0d, 0x0a, 0x0d, 0x0a, 0x09, 0x09, 0x69, 0x66, 0x20, 0x28, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x20, 0x3c, 0x20, 0x70, 0x54, 0x72, 0x69,
+ 0x61, 0x6c, 0x5f, 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2d, 0x3e, 0x6d, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x29, 0x0d, 0x0a, 0x09, 0x09, 0x7b, 0x0d, 0x0a, 0x09, 0x09, 0x09, 0x70,
+ 0x54, 0x72, 0x69, 0x61, 0x6c, 0x5f, 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2d, 0x3e, 0x6d, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x20, 0x3d, 0x20, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f,
+ 0x65, 0x72, 0x72, 0x6f, 0x72, 0x3b, 0x0d, 0x0a, 0x09, 0x09, 0x09, 0x70, 0x54, 0x72, 0x69, 0x61, 0x6c, 0x5f, 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2d, 0x3e, 0x6d, 0x5f, 0x63, 0x6f,
+ 0x6f, 0x72, 0x64, 0x73, 0x2e, 0x6d, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x6e, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x3d, 0x20, 0x69, 0x6e, 0x74, 0x65, 0x6e, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65,
+ 0x3b, 0x0d, 0x0a, 0x09, 0x09, 0x09, 0x69, 0x66, 0x20, 0x28, 0x6e, 0x75, 0x6d, 0x5f, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x73, 0x20, 0x3c, 0x3d, 0x20, 0x31, 0x36, 0x29, 0x0d, 0x0a, 0x09, 0x09, 0x09,
+ 0x7b, 0x0d, 0x0a, 0x09, 0x09, 0x09, 0x09, 0x66, 0x6f, 0x72, 0x20, 0x28, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x74, 0x20, 0x69, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x20, 0x69, 0x20, 0x3c, 0x20,
+ 0x6e, 0x75, 0x6d, 0x5f, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x73, 0x3b, 0x20, 0x69, 0x2b, 0x2b, 0x29, 0x0d, 0x0a, 0x09, 0x09, 0x09, 0x09, 0x09, 0x70, 0x54, 0x72, 0x69, 0x61, 0x6c, 0x5f, 0x73, 0x6f,
+ 0x6c, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2d, 0x3e, 0x6d, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x5b, 0x69, 0x5d, 0x20, 0x3d, 0x20, 0x74, 0x65, 0x6d, 0x70, 0x5f, 0x73, 0x65,
+ 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x5b, 0x69, 0x5d, 0x3b, 0x0d, 0x0a, 0x09, 0x09, 0x09, 0x7d, 0x0d, 0x0a, 0x09, 0x09, 0x09, 0x70, 0x54, 0x72, 0x69, 0x61, 0x6c, 0x5f, 0x73, 0x6f, 0x6c,
+ 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2d, 0x3e, 0x6d, 0x5f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x20, 0x3d, 0x20, 0x74, 0x72, 0x75, 0x65, 0x3b, 0x0d, 0x0a, 0x09, 0x09, 0x7d, 0x0d, 0x0a, 0x09, 0x7d, 0x0d,
+ 0x0a, 0x09, 0x70, 0x54, 0x72, 0x69, 0x61, 0x6c, 0x5f, 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2d, 0x3e, 0x6d, 0x5f, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x73, 0x2e, 0x6d, 0x5f, 0x75, 0x6e,
+ 0x73, 0x63, 0x61, 0x6c, 0x65, 0x64, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x3d, 0x20, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x73, 0x2e, 0x6d, 0x5f, 0x75, 0x6e, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x64,
+ 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x3b, 0x0d, 0x0a, 0x0d, 0x0a, 0x09, 0x62, 0x6f, 0x6f, 0x6c, 0x20, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x20, 0x3d, 0x20, 0x66, 0x61, 0x6c, 0x73, 0x65,
+ 0x3b, 0x0d, 0x0a, 0x09, 0x69, 0x66, 0x20, 0x28, 0x70, 0x42, 0x65, 0x73, 0x74, 0x5f, 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x29, 0x0d, 0x0a, 0x09, 0x7b, 0x0d, 0x0a, 0x09, 0x09, 0x69,
+ 0x66, 0x20, 0x28, 0x70, 0x54, 0x72, 0x69, 0x61, 0x6c, 0x5f, 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2d, 0x3e, 0x6d, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x20, 0x3c, 0x20, 0x70, 0x42,
+ 0x65, 0x73, 0x74, 0x5f, 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2d, 0x3e, 0x6d, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x29, 0x0d, 0x0a, 0x09, 0x09, 0x7b, 0x0d, 0x0a, 0x09, 0x09, 0x09,
+ 0x2a, 0x70, 0x42, 0x65, 0x73, 0x74, 0x5f, 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x2a, 0x70, 0x54, 0x72, 0x69, 0x61, 0x6c, 0x5f, 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x69,
+ 0x6f, 0x6e, 0x3b, 0x0d, 0x0a, 0x09, 0x09, 0x09, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x20, 0x3d, 0x20, 0x74, 0x72, 0x75, 0x65, 0x3b, 0x0d, 0x0a, 0x09, 0x09, 0x7d, 0x0d, 0x0a, 0x09, 0x7d,
+ 0x0d, 0x0a, 0x09, 0x09, 0x09, 0x09, 0x0d, 0x0a, 0x09, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x3b, 0x0d, 0x0a, 0x7d, 0x0d, 0x0a, 0x0d, 0x0a, 0x76,
+ 0x6f, 0x69, 0x64, 0x20, 0x65, 0x74, 0x63, 0x31, 0x73, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x65, 0x72, 0x5f, 0x69, 0x6e, 0x69, 0x74, 0x28, 0x0d, 0x0a, 0x09, 0x65, 0x74, 0x63, 0x31,
+ 0x73, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x65, 0x72, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x20, 0x2a, 0x70, 0x53, 0x74, 0x61, 0x74, 0x65, 0x2c, 0x0d, 0x0a, 0x09, 0x63, 0x6f, 0x6e,
+ 0x73, 0x74, 0x20, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x20, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x5f, 0x65, 0x74, 0x63, 0x31, 0x73, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x5f, 0x73, 0x74, 0x72,
+ 0x75, 0x63, 0x74, 0x20, 0x2a, 0x70, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2c, 0x0d, 0x0a, 0x09, 0x75, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x5f, 0x74, 0x20, 0x6e, 0x75, 0x6d, 0x5f, 0x70, 0x69, 0x78,
+ 0x65, 0x6c, 0x73, 0x2c, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x20, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x72, 0x67, 0x62, 0x61, 0x20, 0x2a, 0x70, 0x50,
+ 0x69, 0x78, 0x65, 0x6c, 0x73, 0x2c, 0x20, 0x0d, 0x0a, 0x09, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x20, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x74, 0x20,
+ 0x2a, 0x70, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x73, 0x29, 0x0d, 0x0a, 0x7b, 0x0d, 0x0a, 0x09, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x4c, 0x49, 0x4d, 0x49, 0x54, 0x20,
+ 0x3d, 0x20, 0x33, 0x31, 0x3b, 0x0d, 0x0a, 0x09, 0x09, 0x0d, 0x0a, 0x09, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x72, 0x67, 0x62, 0x61, 0x20, 0x6d, 0x69, 0x6e, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72,
+ 0x20, 0x3d, 0x20, 0x32, 0x35, 0x35, 0x3b, 0x0d, 0x0a, 0x09, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x72, 0x67, 0x62, 0x61, 0x20, 0x6d, 0x61, 0x78, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x3d,
+ 0x20, 0x30, 0x3b, 0x0d, 0x0a, 0x09, 0x75, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x5f, 0x74, 0x20, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x20, 0x3d, 0x20, 0x30, 0x3b,
+ 0x0d, 0x0a, 0x09, 0x75, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x5f, 0x74, 0x20, 0x73, 0x75, 0x6d, 0x5f, 0x72, 0x20, 0x3d, 0x20, 0x30, 0x2c, 0x20, 0x73, 0x75, 0x6d, 0x5f, 0x67, 0x20, 0x3d, 0x20, 0x30,
+ 0x2c, 0x20, 0x73, 0x75, 0x6d, 0x5f, 0x62, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x0d, 0x0a, 0x09, 0x09, 0x09, 0x09, 0x0d, 0x0a, 0x09, 0x66, 0x6f, 0x72, 0x20, 0x28, 0x75, 0x69, 0x6e, 0x74, 0x36, 0x34,
+ 0x5f, 0x74, 0x20, 0x69, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x20, 0x69, 0x20, 0x3c, 0x20, 0x6e, 0x75, 0x6d, 0x5f, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x73, 0x3b, 0x20, 0x69, 0x2b, 0x2b, 0x29, 0x0d, 0x0a,
+ 0x09, 0x7b, 0x0d, 0x0a, 0x09, 0x09, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x72, 0x67, 0x62, 0x61, 0x20, 0x63, 0x20, 0x3d, 0x20, 0x70, 0x50, 0x69, 0x78, 0x65,
+ 0x6c, 0x73, 0x5b, 0x69, 0x5d, 0x3b, 0x0d, 0x0a, 0x0d, 0x0a, 0x09, 0x09, 0x6d, 0x69, 0x6e, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x3d, 0x20, 0x6d, 0x69, 0x6e, 0x28, 0x6d, 0x69, 0x6e, 0x5f,
+ 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x2c, 0x20, 0x63, 0x29, 0x3b, 0x0d, 0x0a, 0x09, 0x09, 0x6d, 0x61, 0x78, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x3d, 0x20, 0x6d, 0x61, 0x78, 0x28, 0x6d, 0x61,
+ 0x78, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x2c, 0x20, 0x63, 0x29, 0x3b, 0x0d, 0x0a, 0x0d, 0x0a, 0x09, 0x09, 0x69, 0x66, 0x20, 0x28, 0x70, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x73, 0x29, 0x0d,
+ 0x0a, 0x09, 0x09, 0x7b, 0x0d, 0x0a, 0x09, 0x09, 0x09, 0x75, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x5f, 0x74, 0x20, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x20, 0x3d, 0x20, 0x70, 0x57, 0x65, 0x69, 0x67,
+ 0x68, 0x74, 0x73, 0x5b, 0x69, 0x5d, 0x3b, 0x0d, 0x0a, 0x0d, 0x0a, 0x09, 0x09, 0x09, 0x73, 0x75, 0x6d, 0x5f, 0x72, 0x20, 0x2b, 0x3d, 0x20, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x20, 0x2a, 0x20,
+ 0x63, 0x2e, 0x78, 0x3b, 0x0d, 0x0a, 0x09, 0x09, 0x09, 0x73, 0x75, 0x6d, 0x5f, 0x67, 0x20, 0x2b, 0x3d, 0x20, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x20, 0x2a, 0x20, 0x63, 0x2e, 0x79, 0x3b, 0x0d,
+ 0x0a, 0x09, 0x09, 0x09, 0x73, 0x75, 0x6d, 0x5f, 0x62, 0x20, 0x2b, 0x3d, 0x20, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x20, 0x2a, 0x20, 0x63, 0x2e, 0x7a, 0x3b, 0x0d, 0x0a, 0x09, 0x09, 0x0d, 0x0a,
+ 0x09, 0x09, 0x09, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x20, 0x2b, 0x3d, 0x20, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x3b, 0x0d, 0x0a, 0x09, 0x09, 0x7d, 0x0d,
+ 0x0a, 0x09, 0x09, 0x65, 0x6c, 0x73, 0x65, 0x0d, 0x0a, 0x09, 0x09, 0x7b, 0x0d, 0x0a, 0x09, 0x09, 0x09, 0x73, 0x75, 0x6d, 0x5f, 0x72, 0x20, 0x2b, 0x3d, 0x20, 0x63, 0x2e, 0x78, 0x3b, 0x0d, 0x0a,
+ 0x09, 0x09, 0x09, 0x73, 0x75, 0x6d, 0x5f, 0x67, 0x20, 0x2b, 0x3d, 0x20, 0x63, 0x2e, 0x79, 0x3b, 0x0d, 0x0a, 0x09, 0x09, 0x09, 0x73, 0x75, 0x6d, 0x5f, 0x62, 0x20, 0x2b, 0x3d, 0x20, 0x63, 0x2e,
+ 0x7a, 0x3b, 0x0d, 0x0a, 0x0d, 0x0a, 0x09, 0x09, 0x09, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x2b, 0x2b, 0x3b, 0x0d, 0x0a, 0x09, 0x09, 0x7d, 0x0d, 0x0a, 0x09,
+ 0x7d, 0x0d, 0x0a, 0x09, 0x09, 0x09, 0x09, 0x0d, 0x0a, 0x09, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x33, 0x20, 0x61, 0x76, 0x67, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x3b, 0x0d, 0x0a, 0x09, 0x61, 0x76,
+ 0x67, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x2e, 0x78, 0x20, 0x3d, 0x20, 0x28, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x29, 0x73, 0x75, 0x6d, 0x5f, 0x72, 0x20, 0x2f, 0x20, 0x74, 0x6f, 0x74, 0x61, 0x6c,
+ 0x5f, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x3b, 0x0d, 0x0a, 0x09, 0x61, 0x76, 0x67, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x2e, 0x79, 0x20, 0x3d, 0x20, 0x28, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x29,
+ 0x73, 0x75, 0x6d, 0x5f, 0x67, 0x20, 0x2f, 0x20, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x3b, 0x0d, 0x0a, 0x09, 0x61, 0x76, 0x67, 0x5f, 0x63, 0x6f, 0x6c, 0x6f,
+ 0x72, 0x2e, 0x7a, 0x20, 0x3d, 0x20, 0x28, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x29, 0x73, 0x75, 0x6d, 0x5f, 0x62, 0x20, 0x2f, 0x20, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x77, 0x65, 0x69, 0x67, 0x68,
+ 0x74, 0x3b, 0x0d, 0x0a, 0x0d, 0x0a, 0x09, 0x70, 0x53, 0x74, 0x61, 0x74, 0x65, 0x2d, 0x3e, 0x6d, 0x5f, 0x61, 0x76, 0x67, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x3d, 0x20, 0x61, 0x76, 0x67,
+ 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x3b, 0x0d, 0x0a, 0x09, 0x70, 0x53, 0x74, 0x61, 0x74, 0x65, 0x2d, 0x3e, 0x6d, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x5f, 0x73, 0x70, 0x72,
+ 0x65, 0x61, 0x64, 0x20, 0x3d, 0x20, 0x6d, 0x61, 0x78, 0x28, 0x6d, 0x61, 0x78, 0x28, 0x28, 0x69, 0x6e, 0x74, 0x29, 0x6d, 0x61, 0x78, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x2e, 0x78, 0x20, 0x2d,
+ 0x20, 0x28, 0x69, 0x6e, 0x74, 0x29, 0x6d, 0x69, 0x6e, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x2e, 0x78, 0x2c, 0x20, 0x28, 0x69, 0x6e, 0x74, 0x29, 0x6d, 0x61, 0x78, 0x5f, 0x63, 0x6f, 0x6c, 0x6f,
+ 0x72, 0x2e, 0x79, 0x20, 0x2d, 0x20, 0x28, 0x69, 0x6e, 0x74, 0x29, 0x6d, 0x69, 0x6e, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x2e, 0x79, 0x29, 0x2c, 0x20, 0x28, 0x69, 0x6e, 0x74, 0x29, 0x6d, 0x61,
+ 0x78, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x2e, 0x7a, 0x20, 0x2d, 0x20, 0x28, 0x69, 0x6e, 0x74, 0x29, 0x6d, 0x69, 0x6e, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x2e, 0x7a, 0x29, 0x3b, 0x0d, 0x0a,
+ 0x09, 0x09, 0x0d, 0x0a, 0x09, 0x2f, 0x2f, 0x20, 0x54, 0x4f, 0x44, 0x4f, 0x3a, 0x20, 0x54, 0x68, 0x65, 0x20, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x20, 0x68, 0x65, 0x72, 0x65, 0x20,
+ 0x63, 0x6f, 0x75, 0x6c, 0x64, 0x20, 0x62, 0x65, 0x20, 0x69, 0x6d, 0x70, 0x72, 0x6f, 0x76, 0x65, 0x64, 0x2c, 0x20, 0x6c, 0x69, 0x6b, 0x65, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x44, 0x58, 0x54,
+ 0x31, 0x2f, 0x42, 0x43, 0x31, 0x2e, 0x0d, 0x0a, 0x09, 0x70, 0x53, 0x74, 0x61, 0x74, 0x65, 0x2d, 0x3e, 0x6d, 0x5f, 0x62, 0x72, 0x20, 0x3d, 0x20, 0x63, 0x6c, 0x61, 0x6d, 0x70, 0x28, 0x28, 0x69,
+ 0x6e, 0x74, 0x29, 0x28, 0x61, 0x76, 0x67, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x2e, 0x78, 0x20, 0x2a, 0x20, 0x28, 0x4c, 0x49, 0x4d, 0x49, 0x54, 0x20, 0x2f, 0x20, 0x32, 0x35, 0x35, 0x2e, 0x30,
+ 0x66, 0x29, 0x20, 0x2b, 0x20, 0x2e, 0x35, 0x66, 0x29, 0x2c, 0x20, 0x30, 0x2c, 0x20, 0x4c, 0x49, 0x4d, 0x49, 0x54, 0x29, 0x3b, 0x0d, 0x0a, 0x09, 0x70, 0x53, 0x74, 0x61, 0x74, 0x65, 0x2d, 0x3e,
+ 0x6d, 0x5f, 0x62, 0x67, 0x20, 0x3d, 0x20, 0x63, 0x6c, 0x61, 0x6d, 0x70, 0x28, 0x28, 0x69, 0x6e, 0x74, 0x29, 0x28, 0x61, 0x76, 0x67, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x2e, 0x79, 0x20, 0x2a,
+ 0x20, 0x28, 0x4c, 0x49, 0x4d, 0x49, 0x54, 0x20, 0x2f, 0x20, 0x32, 0x35, 0x35, 0x2e, 0x30, 0x66, 0x29, 0x20, 0x2b, 0x20, 0x2e, 0x35, 0x66, 0x29, 0x2c, 0x20, 0x30, 0x2c, 0x20, 0x4c, 0x49, 0x4d,
+ 0x49, 0x54, 0x29, 0x3b, 0x0d, 0x0a, 0x09, 0x70, 0x53, 0x74, 0x61, 0x74, 0x65, 0x2d, 0x3e, 0x6d, 0x5f, 0x62, 0x62, 0x20, 0x3d, 0x20, 0x63, 0x6c, 0x61, 0x6d, 0x70, 0x28, 0x28, 0x69, 0x6e, 0x74,
+ 0x29, 0x28, 0x61, 0x76, 0x67, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x2e, 0x7a, 0x20, 0x2a, 0x20, 0x28, 0x4c, 0x49, 0x4d, 0x49, 0x54, 0x20, 0x2f, 0x20, 0x32, 0x35, 0x35, 0x2e, 0x30, 0x66, 0x29,
+ 0x20, 0x2b, 0x20, 0x2e, 0x35, 0x66, 0x29, 0x2c, 0x20, 0x30, 0x2c, 0x20, 0x4c, 0x49, 0x4d, 0x49, 0x54, 0x29, 0x3b, 0x0d, 0x0a, 0x0d, 0x0a, 0x09, 0x70, 0x53, 0x74, 0x61, 0x74, 0x65, 0x2d, 0x3e,
+ 0x6d, 0x5f, 0x62, 0x65, 0x73, 0x74, 0x5f, 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x6d, 0x5f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x20, 0x3d, 0x20, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x3b,
+ 0x0d, 0x0a, 0x09, 0x70, 0x53, 0x74, 0x61, 0x74, 0x65, 0x2d, 0x3e, 0x6d, 0x5f, 0x62, 0x65, 0x73, 0x74, 0x5f, 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x6d, 0x5f, 0x65, 0x72, 0x72,
+ 0x6f, 0x72, 0x20, 0x3d, 0x20, 0x55, 0x49, 0x4e, 0x54, 0x36, 0x34, 0x5f, 0x4d, 0x41, 0x58, 0x3b, 0x0d, 0x0a, 0x7d, 0x0d, 0x0a, 0x0d, 0x0a, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x65, 0x74, 0x63, 0x31,
+ 0x73, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x65, 0x72, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x5f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x66, 0x69, 0x74,
+ 0x28, 0x0d, 0x0a, 0x09, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x74, 0x20, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x70, 0x65, 0x72, 0x6d, 0x73, 0x5f, 0x74, 0x6f, 0x5f, 0x74, 0x72, 0x79, 0x2c,
+ 0x0d, 0x0a, 0x09, 0x65, 0x74, 0x63, 0x31, 0x73, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x65, 0x72, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x20, 0x2a, 0x70, 0x53, 0x74, 0x61, 0x74, 0x65,
+ 0x2c, 0x0d, 0x0a, 0x09, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x20, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x5f, 0x65, 0x74, 0x63, 0x31, 0x73, 0x5f, 0x70, 0x61,
+ 0x72, 0x61, 0x6d, 0x5f, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x2a, 0x70, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2c, 0x0d, 0x0a, 0x09, 0x75, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x5f, 0x74, 0x20,
+ 0x6e, 0x75, 0x6d, 0x5f, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x73, 0x2c, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x20, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x72,
+ 0x67, 0x62, 0x61, 0x20, 0x2a, 0x70, 0x50, 0x69, 0x78, 0x65, 0x6c, 0x73, 0x2c, 0x0d, 0x0a, 0x09, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x20, 0x75, 0x69, 0x6e,
+ 0x74, 0x33, 0x32, 0x5f, 0x74, 0x20, 0x2a, 0x70, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x73, 0x29, 0x0d, 0x0a, 0x7b, 0x0d, 0x0a, 0x09, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x69, 0x6e, 0x74, 0x20,
+ 0x4c, 0x49, 0x4d, 0x49, 0x54, 0x20, 0x3d, 0x20, 0x33, 0x31, 0x3b, 0x0d, 0x0a, 0x0d, 0x0a, 0x09, 0x65, 0x74, 0x63, 0x31, 0x73, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x65, 0x72, 0x5f,
+ 0x70, 0x6f, 0x74, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x74, 0x72, 0x69, 0x61, 0x6c, 0x5f, 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x69, 0x6f,
+ 0x6e, 0x3b, 0x0d, 0x0a, 0x0d, 0x0a, 0x09, 0x65, 0x74, 0x63, 0x31, 0x73, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x65, 0x72, 0x5f, 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f,
+ 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x69, 0x6e, 0x61, 0x74, 0x65, 0x73, 0x20, 0x63, 0x75, 0x72, 0x5f, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x73, 0x3b, 0x0d, 0x0a, 0x09, 0x63, 0x75, 0x72, 0x5f, 0x63, 0x6f,
+ 0x6f, 0x72, 0x64, 0x73, 0x2e, 0x6d, 0x5f, 0x75, 0x6e, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x64, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x3d, 0x20, 0x28, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x72,
+ 0x67, 0x62, 0x61, 0x29, 0x28, 0x70, 0x53, 0x74, 0x61, 0x74, 0x65, 0x2d, 0x3e, 0x6d, 0x5f, 0x62, 0x72, 0x2c, 0x20, 0x70, 0x53, 0x74, 0x61, 0x74, 0x65, 0x2d, 0x3e, 0x6d, 0x5f, 0x62, 0x67, 0x2c,
+ 0x20, 0x70, 0x53, 0x74, 0x61, 0x74, 0x65, 0x2d, 0x3e, 0x6d, 0x5f, 0x62, 0x62, 0x2c, 0x20, 0x32, 0x35, 0x35, 0x29, 0x3b, 0x0d, 0x0a, 0x09, 0x65, 0x74, 0x63, 0x31, 0x73, 0x5f, 0x6f, 0x70, 0x74,
+ 0x69, 0x6d, 0x69, 0x7a, 0x65, 0x72, 0x5f, 0x65, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x28, 0x70, 0x53, 0x74, 0x61, 0x74, 0x65, 0x2c,
+ 0x20, 0x70, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2c, 0x20, 0x6e, 0x75, 0x6d, 0x5f, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x73, 0x2c, 0x20, 0x70, 0x50, 0x69, 0x78, 0x65, 0x6c, 0x73, 0x2c, 0x20, 0x70,
+ 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2c, 0x20, 0x63, 0x75, 0x72, 0x5f, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x73, 0x2c, 0x20, 0x26, 0x74, 0x72, 0x69, 0x61, 0x6c, 0x5f, 0x73, 0x6f, 0x6c, 0x75,
+ 0x74, 0x69, 0x6f, 0x6e, 0x2c, 0x20, 0x26, 0x70, 0x53, 0x74, 0x61, 0x74, 0x65, 0x2d, 0x3e, 0x6d, 0x5f, 0x62, 0x65, 0x73, 0x74, 0x5f, 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x29, 0x3b,
+ 0x0d, 0x0a, 0x09, 0x09, 0x09, 0x0d, 0x0a, 0x09, 0x69, 0x66, 0x20, 0x28, 0x70, 0x53, 0x74, 0x61, 0x74, 0x65, 0x2d, 0x3e, 0x6d, 0x5f, 0x62, 0x65, 0x73, 0x74, 0x5f, 0x73, 0x6f, 0x6c, 0x75, 0x74,
+ 0x69, 0x6f, 0x6e, 0x2e, 0x6d, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x20, 0x3d, 0x3d, 0x20, 0x30, 0x29, 0x0d, 0x0a, 0x09, 0x09, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x3b, 0x0d, 0x0a, 0x0d, 0x0a,
+ 0x09, 0x66, 0x6f, 0x72, 0x20, 0x28, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x74, 0x20, 0x69, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x20, 0x69, 0x20, 0x3c, 0x20, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f,
+ 0x70, 0x65, 0x72, 0x6d, 0x73, 0x5f, 0x74, 0x6f, 0x5f, 0x74, 0x72, 0x79, 0x3b, 0x20, 0x69, 0x2b, 0x2b, 0x29, 0x0d, 0x0a, 0x09, 0x7b, 0x0d, 0x0a, 0x09, 0x09, 0x69, 0x6e, 0x74, 0x20, 0x64, 0x65,
+ 0x6c, 0x74, 0x61, 0x5f, 0x73, 0x75, 0x6d, 0x5f, 0x72, 0x20, 0x3d, 0x20, 0x30, 0x2c, 0x20, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x5f, 0x73, 0x75, 0x6d, 0x5f, 0x67, 0x20, 0x3d, 0x20, 0x30, 0x2c, 0x20,
+ 0x64, 0x65, 0x6c, 0x74, 0x61, 0x5f, 0x73, 0x75, 0x6d, 0x5f, 0x62, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x0d, 0x0a, 0x0d, 0x0a, 0x09, 0x09, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x20, 0x69,
+ 0x6e, 0x74, 0x20, 0x2a, 0x70, 0x49, 0x6e, 0x74, 0x65, 0x6e, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x3d, 0x20, 0x67, 0x5f, 0x65, 0x74, 0x63, 0x31, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x6e, 0x5f,
+ 0x74, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x5b, 0x70, 0x53, 0x74, 0x61, 0x74, 0x65, 0x2d, 0x3e, 0x6d, 0x5f, 0x62, 0x65, 0x73, 0x74, 0x5f, 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x6d,
+ 0x5f, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x73, 0x2e, 0x6d, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x6e, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5d, 0x3b, 0x0d, 0x0a, 0x09, 0x09, 0x63, 0x6f, 0x6e, 0x73, 0x74,
+ 0x20, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x72, 0x67, 0x62, 0x61, 0x20, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x3d, 0x20, 0x67, 0x65, 0x74, 0x5f, 0x73, 0x63, 0x61,
+ 0x6c, 0x65, 0x64, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x28, 0x70, 0x53, 0x74, 0x61, 0x74, 0x65, 0x2d, 0x3e, 0x6d, 0x5f, 0x62, 0x65, 0x73, 0x74, 0x5f, 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x69, 0x6f,
+ 0x6e, 0x2e, 0x6d, 0x5f, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x73, 0x2e, 0x6d, 0x5f, 0x75, 0x6e, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x64, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x29, 0x3b, 0x0d, 0x0a, 0x0d,
+ 0x0a, 0x09, 0x09, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x20, 0x75, 0x69, 0x6e, 0x74, 0x38, 0x5f, 0x74, 0x20, 0x2a, 0x70, 0x4e, 0x75, 0x6d, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74,
+ 0x6f, 0x72, 0x73, 0x20, 0x3d, 0x20, 0x67, 0x5f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x66, 0x69, 0x74, 0x5f, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x74, 0x61, 0x62, 0x5b, 0x69, 0x5d,
+ 0x2e, 0x6d, 0x5f, 0x76, 0x3b, 0x0d, 0x0a, 0x0d, 0x0a, 0x09, 0x09, 0x66, 0x6f, 0x72, 0x20, 0x28, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x74, 0x20, 0x71, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x20,
+ 0x71, 0x20, 0x3c, 0x20, 0x34, 0x3b, 0x20, 0x71, 0x2b, 0x2b, 0x29, 0x0d, 0x0a, 0x09, 0x09, 0x7b, 0x0d, 0x0a, 0x09, 0x09, 0x09, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x79,
+ 0x64, 0x5f, 0x74, 0x65, 0x6d, 0x70, 0x20, 0x3d, 0x20, 0x70, 0x49, 0x6e, 0x74, 0x65, 0x6e, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5b, 0x71, 0x5d, 0x3b, 0x0d, 0x0a, 0x0d, 0x0a, 0x09, 0x09, 0x09,
+ 0x64, 0x65, 0x6c, 0x74, 0x61, 0x5f, 0x73, 0x75, 0x6d, 0x5f, 0x72, 0x20, 0x2b, 0x3d, 0x20, 0x70, 0x4e, 0x75, 0x6d, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x5b, 0x71, 0x5d,
+ 0x20, 0x2a, 0x20, 0x28, 0x63, 0x6c, 0x61, 0x6d, 0x70, 0x28, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x2e, 0x78, 0x20, 0x2b, 0x20, 0x79, 0x64, 0x5f, 0x74, 0x65, 0x6d, 0x70,
+ 0x2c, 0x20, 0x30, 0x2c, 0x20, 0x32, 0x35, 0x35, 0x29, 0x20, 0x2d, 0x20, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x2e, 0x78, 0x29, 0x3b, 0x0d, 0x0a, 0x09, 0x09, 0x09, 0x64,
+ 0x65, 0x6c, 0x74, 0x61, 0x5f, 0x73, 0x75, 0x6d, 0x5f, 0x67, 0x20, 0x2b, 0x3d, 0x20, 0x70, 0x4e, 0x75, 0x6d, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x5b, 0x71, 0x5d, 0x20,
+ 0x2a, 0x20, 0x28, 0x63, 0x6c, 0x61, 0x6d, 0x70, 0x28, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x2e, 0x79, 0x20, 0x2b, 0x20, 0x79, 0x64, 0x5f, 0x74, 0x65, 0x6d, 0x70, 0x2c,
+ 0x20, 0x30, 0x2c, 0x20, 0x32, 0x35, 0x35, 0x29, 0x20, 0x2d, 0x20, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x2e, 0x79, 0x29, 0x3b, 0x0d, 0x0a, 0x09, 0x09, 0x09, 0x64, 0x65,
+ 0x6c, 0x74, 0x61, 0x5f, 0x73, 0x75, 0x6d, 0x5f, 0x62, 0x20, 0x2b, 0x3d, 0x20, 0x70, 0x4e, 0x75, 0x6d, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x5b, 0x71, 0x5d, 0x20, 0x2a,
+ 0x20, 0x28, 0x63, 0x6c, 0x61, 0x6d, 0x70, 0x28, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x2e, 0x7a, 0x20, 0x2b, 0x20, 0x79, 0x64, 0x5f, 0x74, 0x65, 0x6d, 0x70, 0x2c, 0x20,
+ 0x30, 0x2c, 0x20, 0x32, 0x35, 0x35, 0x29, 0x20, 0x2d, 0x20, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x2e, 0x7a, 0x29, 0x3b, 0x0d, 0x0a, 0x09, 0x09, 0x7d, 0x0d, 0x0a, 0x0d,
+ 0x0a, 0x09, 0x09, 0x69, 0x66, 0x20, 0x28, 0x28, 0x21, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x5f, 0x73, 0x75, 0x6d, 0x5f, 0x72, 0x29, 0x20, 0x26, 0x26, 0x20, 0x28, 0x21, 0x64, 0x65, 0x6c, 0x74, 0x61,
+ 0x5f, 0x73, 0x75, 0x6d, 0x5f, 0x67, 0x29, 0x20, 0x26, 0x26, 0x20, 0x28, 0x21, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x5f, 0x73, 0x75, 0x6d, 0x5f, 0x62, 0x29, 0x29, 0x0d, 0x0a, 0x09, 0x09, 0x09, 0x63,
+ 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75, 0x65, 0x3b, 0x0d, 0x0a, 0x0d, 0x0a, 0x09, 0x09, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x61, 0x76, 0x67, 0x5f, 0x64, 0x65,
+ 0x6c, 0x74, 0x61, 0x5f, 0x72, 0x5f, 0x66, 0x20, 0x3d, 0x20, 0x28, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x29, 0x28, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x5f, 0x73, 0x75, 0x6d, 0x5f, 0x72, 0x29, 0x20, 0x2f,
+ 0x20, 0x38, 0x3b, 0x0d, 0x0a, 0x09, 0x09, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x61, 0x76, 0x67, 0x5f, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x5f, 0x67, 0x5f, 0x66,
+ 0x20, 0x3d, 0x20, 0x28, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x29, 0x28, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x5f, 0x73, 0x75, 0x6d, 0x5f, 0x67, 0x29, 0x20, 0x2f, 0x20, 0x38, 0x3b, 0x0d, 0x0a, 0x09, 0x09,
+ 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x20, 0x61, 0x76, 0x67, 0x5f, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x5f, 0x62, 0x5f, 0x66, 0x20, 0x3d, 0x20, 0x28, 0x66, 0x6c, 0x6f,
+ 0x61, 0x74, 0x29, 0x28, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x5f, 0x73, 0x75, 0x6d, 0x5f, 0x62, 0x29, 0x20, 0x2f, 0x20, 0x38, 0x3b, 0x0d, 0x0a, 0x0d, 0x0a, 0x09, 0x09, 0x63, 0x6f, 0x6e, 0x73, 0x74,
+ 0x20, 0x69, 0x6e, 0x74, 0x20, 0x62, 0x72, 0x31, 0x20, 0x3d, 0x20, 0x63, 0x6c, 0x61, 0x6d, 0x70, 0x28, 0x28, 0x69, 0x6e, 0x74, 0x29, 0x28, 0x28, 0x70, 0x53, 0x74, 0x61, 0x74, 0x65, 0x2d, 0x3e,
+ 0x6d, 0x5f, 0x61, 0x76, 0x67, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x2e, 0x78, 0x20, 0x2d, 0x20, 0x61, 0x76, 0x67, 0x5f, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x5f, 0x72, 0x5f, 0x66, 0x29, 0x20, 0x2a,
+ 0x20, 0x28, 0x4c, 0x49, 0x4d, 0x49, 0x54, 0x20, 0x2f, 0x20, 0x32, 0x35, 0x35, 0x2e, 0x30, 0x66, 0x29, 0x20, 0x2b, 0x20, 0x2e, 0x35, 0x66, 0x29, 0x2c, 0x20, 0x30, 0x2c, 0x20, 0x4c, 0x49, 0x4d,
+ 0x49, 0x54, 0x29, 0x3b, 0x0d, 0x0a, 0x09, 0x09, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x62, 0x67, 0x31, 0x20, 0x3d, 0x20, 0x63, 0x6c, 0x61, 0x6d, 0x70, 0x28, 0x28, 0x69,
+ 0x6e, 0x74, 0x29, 0x28, 0x28, 0x70, 0x53, 0x74, 0x61, 0x74, 0x65, 0x2d, 0x3e, 0x6d, 0x5f, 0x61, 0x76, 0x67, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x2e, 0x79, 0x20, 0x2d, 0x20, 0x61, 0x76, 0x67,
+ 0x5f, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x5f, 0x67, 0x5f, 0x66, 0x29, 0x20, 0x2a, 0x20, 0x28, 0x4c, 0x49, 0x4d, 0x49, 0x54, 0x20, 0x2f, 0x20, 0x32, 0x35, 0x35, 0x2e, 0x30, 0x66, 0x29, 0x20, 0x2b,
+ 0x20, 0x2e, 0x35, 0x66, 0x29, 0x2c, 0x20, 0x30, 0x2c, 0x20, 0x4c, 0x49, 0x4d, 0x49, 0x54, 0x29, 0x3b, 0x0d, 0x0a, 0x09, 0x09, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x62,
+ 0x62, 0x31, 0x20, 0x3d, 0x20, 0x63, 0x6c, 0x61, 0x6d, 0x70, 0x28, 0x28, 0x69, 0x6e, 0x74, 0x29, 0x28, 0x28, 0x70, 0x53, 0x74, 0x61, 0x74, 0x65, 0x2d, 0x3e, 0x6d, 0x5f, 0x61, 0x76, 0x67, 0x5f,
+ 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x2e, 0x7a, 0x20, 0x2d, 0x20, 0x61, 0x76, 0x67, 0x5f, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x5f, 0x62, 0x5f, 0x66, 0x29, 0x20, 0x2a, 0x20, 0x28, 0x4c, 0x49, 0x4d, 0x49,
+ 0x54, 0x20, 0x2f, 0x20, 0x32, 0x35, 0x35, 0x2e, 0x30, 0x66, 0x29, 0x20, 0x2b, 0x20, 0x2e, 0x35, 0x66, 0x29, 0x2c, 0x20, 0x30, 0x2c, 0x20, 0x4c, 0x49, 0x4d, 0x49, 0x54, 0x29, 0x3b, 0x0d, 0x0a,
+ 0x09, 0x09, 0x0d, 0x0a, 0x09, 0x09, 0x63, 0x75, 0x72, 0x5f, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x73, 0x2e, 0x6d, 0x5f, 0x75, 0x6e, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x64, 0x5f, 0x63, 0x6f, 0x6c, 0x6f,
+ 0x72, 0x20, 0x3d, 0x20, 0x28, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x72, 0x67, 0x62, 0x61, 0x29, 0x28, 0x62, 0x72, 0x31, 0x2c, 0x20, 0x62, 0x67, 0x31, 0x2c, 0x20, 0x62, 0x62, 0x31, 0x2c, 0x20,
+ 0x32, 0x35, 0x35, 0x29, 0x3b, 0x0d, 0x0a, 0x0d, 0x0a, 0x09, 0x09, 0x65, 0x74, 0x63, 0x31, 0x73, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x65, 0x72, 0x5f, 0x65, 0x76, 0x61, 0x6c, 0x75,
+ 0x61, 0x74, 0x65, 0x5f, 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x28, 0x70, 0x53, 0x74, 0x61, 0x74, 0x65, 0x2c, 0x20, 0x70, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2c, 0x20, 0x6e, 0x75,
+ 0x6d, 0x5f, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x73, 0x2c, 0x20, 0x70, 0x50, 0x69, 0x78, 0x65, 0x6c, 0x73, 0x2c, 0x20, 0x70, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2c, 0x20, 0x63, 0x75, 0x72,
+ 0x5f, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x73, 0x2c, 0x20, 0x26, 0x74, 0x72, 0x69, 0x61, 0x6c, 0x5f, 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2c, 0x20, 0x26, 0x70, 0x53, 0x74, 0x61, 0x74,
+ 0x65, 0x2d, 0x3e, 0x6d, 0x5f, 0x62, 0x65, 0x73, 0x74, 0x5f, 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x29, 0x3b, 0x0d, 0x0a, 0x09, 0x0d, 0x0a, 0x09, 0x09, 0x69, 0x66, 0x20, 0x28, 0x70,
+ 0x53, 0x74, 0x61, 0x74, 0x65, 0x2d, 0x3e, 0x6d, 0x5f, 0x62, 0x65, 0x73, 0x74, 0x5f, 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x6d, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x20, 0x3d,
+ 0x3d, 0x20, 0x30, 0x29, 0x0d, 0x0a, 0x09, 0x09, 0x09, 0x62, 0x72, 0x65, 0x61, 0x6b, 0x3b, 0x0d, 0x0a, 0x09, 0x7d, 0x0d, 0x0a, 0x7d, 0x0d, 0x0a, 0x0d, 0x0a, 0x2f, 0x2f, 0x20, 0x45, 0x6e, 0x63,
+ 0x6f, 0x64, 0x65, 0x20, 0x61, 0x6e, 0x20, 0x45, 0x54, 0x43, 0x31, 0x53, 0x20, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x20, 0x67, 0x69, 0x76, 0x65, 0x6e, 0x20, 0x61, 0x20, 0x34, 0x78, 0x34, 0x20, 0x70,
+ 0x69, 0x78, 0x65, 0x6c, 0x20, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x0d, 0x0a, 0x6b, 0x65, 0x72, 0x6e, 0x65, 0x6c, 0x20, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x5f,
+ 0x65, 0x74, 0x63, 0x31, 0x73, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x28, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x20,
+ 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x5f, 0x65, 0x74, 0x63, 0x31, 0x73, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x5f, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x2a, 0x70, 0x50, 0x61, 0x72, 0x61,
+ 0x6d, 0x73, 0x2c, 0x20, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x20, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x5f, 0x62, 0x6c, 0x6f,
+ 0x63, 0x6b, 0x20, 0x2a, 0x70, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x2c, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x20, 0x65,
+ 0x74, 0x63, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x20, 0x2a, 0x70, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x29, 0x0d, 0x0a, 0x7b, 0x0d, 0x0a, 0x09, 0x63,
+ 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x74, 0x20, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x3d, 0x20, 0x67, 0x65, 0x74, 0x5f,
+ 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x5f, 0x69, 0x64, 0x28, 0x30, 0x29, 0x3b, 0x0d, 0x0a, 0x09, 0x0d, 0x0a, 0x09, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x20,
+ 0x70, 0x69, 0x78, 0x65, 0x6c, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x20, 0x2a, 0x70, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x20, 0x3d, 0x20, 0x26, 0x70, 0x49, 0x6e,
+ 0x70, 0x75, 0x74, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x5b, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5d, 0x3b, 0x0d, 0x0a, 0x0d, 0x0a, 0x09, 0x65, 0x74, 0x63,
+ 0x31, 0x73, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x65, 0x72, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x20, 0x73, 0x74, 0x61, 0x74, 0x65, 0x3b, 0x0d, 0x0a, 0x09, 0x65, 0x74, 0x63, 0x31,
+ 0x73, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x65, 0x72, 0x5f, 0x69, 0x6e, 0x69, 0x74, 0x28, 0x26, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2c, 0x20, 0x70, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73,
+ 0x2c, 0x20, 0x31, 0x36, 0x2c, 0x20, 0x70, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2d, 0x3e, 0x6d, 0x5f, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x73, 0x2c, 0x20, 0x4e, 0x55,
+ 0x4c, 0x4c, 0x29, 0x3b, 0x0d, 0x0a, 0x09, 0x65, 0x74, 0x63, 0x31, 0x73, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x65, 0x72, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x5f,
+ 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x66, 0x69, 0x74, 0x28, 0x70, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2d, 0x3e, 0x6d, 0x5f, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x70, 0x65, 0x72,
+ 0x6d, 0x73, 0x2c, 0x20, 0x26, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2c, 0x20, 0x70, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2c, 0x20, 0x31, 0x36, 0x2c, 0x20, 0x70, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x5f,
+ 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2d, 0x3e, 0x6d, 0x5f, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x73, 0x2c, 0x20, 0x4e, 0x55, 0x4c, 0x4c, 0x29, 0x3b, 0x0d, 0x0a, 0x09, 0x0d, 0x0a, 0x09, 0x65, 0x74, 0x63,
+ 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x20, 0x62, 0x6c, 0x6b, 0x3b, 0x0d, 0x0a, 0x09, 0x65, 0x74, 0x63, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x66, 0x6c, 0x69, 0x70,
+ 0x5f, 0x62, 0x69, 0x74, 0x28, 0x26, 0x62, 0x6c, 0x6b, 0x2c, 0x20, 0x74, 0x72, 0x75, 0x65, 0x29, 0x3b, 0x0d, 0x0a, 0x09, 0x65, 0x74, 0x63, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x73, 0x65,
+ 0x74, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x35, 0x5f, 0x65, 0x74, 0x63, 0x31, 0x73, 0x28, 0x26, 0x62, 0x6c, 0x6b, 0x2c, 0x20, 0x73, 0x74, 0x61, 0x74, 0x65,
+ 0x2e, 0x6d, 0x5f, 0x62, 0x65, 0x73, 0x74, 0x5f, 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x6d, 0x5f, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x73, 0x2e, 0x6d, 0x5f, 0x75, 0x6e, 0x73, 0x63,
+ 0x61, 0x6c, 0x65, 0x64, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x29, 0x3b, 0x0d, 0x0a, 0x09, 0x65, 0x74, 0x63, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x69, 0x6e, 0x74,
+ 0x65, 0x6e, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x5f, 0x65, 0x74, 0x63, 0x31, 0x73, 0x28, 0x26, 0x62, 0x6c, 0x6b, 0x2c, 0x20, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x6d, 0x5f, 0x62, 0x65,
+ 0x73, 0x74, 0x5f, 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x6d, 0x5f, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x73, 0x2e, 0x6d, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x6e, 0x5f, 0x74, 0x61, 0x62,
+ 0x6c, 0x65, 0x29, 0x3b, 0x0d, 0x0a, 0x09, 0x65, 0x74, 0x63, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x5f, 0x72, 0x61, 0x77, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74,
+ 0x6f, 0x72, 0x73, 0x28, 0x26, 0x62, 0x6c, 0x6b, 0x2c, 0x20, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x6d, 0x5f, 0x62, 0x65, 0x73, 0x74, 0x5f, 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2e,
+ 0x6d, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x29, 0x3b, 0x0d, 0x0a, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x0d, 0x0a, 0x09, 0x70, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74,
+ 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x5b, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5d, 0x20, 0x3d, 0x20, 0x62, 0x6c, 0x6b, 0x3b, 0x0d, 0x0a, 0x7d, 0x0d, 0x0a,
+ 0x0d, 0x0a, 0x74, 0x79, 0x70, 0x65, 0x64, 0x65, 0x66, 0x20, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x5f, 0x5f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x5f, 0x5f, 0x20, 0x28,
+ 0x28, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x29, 0x29, 0x20, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x5f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x74, 0x61, 0x67, 0x0d, 0x0a, 0x7b, 0x0d, 0x0a,
+ 0x09, 0x75, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x5f, 0x74, 0x20, 0x6d, 0x5f, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x73, 0x3b, 0x0d, 0x0a, 0x09, 0x75, 0x69, 0x6e, 0x74,
+ 0x36, 0x34, 0x5f, 0x74, 0x20, 0x6d, 0x5f, 0x66, 0x69, 0x72, 0x73, 0x74, 0x5f, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x3b, 0x0d, 0x0a, 0x7d, 0x20, 0x70, 0x69, 0x78,
+ 0x65, 0x6c, 0x5f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x3b, 0x0d, 0x0a, 0x0d, 0x0a, 0x2f, 0x2f, 0x20, 0x44, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20,
+ 0x6f, 0x70, 0x74, 0x69, 0x6d, 0x61, 0x6c, 0x20, 0x45, 0x54, 0x43, 0x31, 0x53, 0x20, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x35, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x79, 0x20, 0x67,
+ 0x69, 0x76, 0x65, 0x6e, 0x20, 0x61, 0x6e, 0x20, 0x61, 0x72, 0x62, 0x69, 0x74, 0x72, 0x61, 0x72, 0x79, 0x20, 0x6c, 0x61, 0x72, 0x67, 0x65, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x20, 0x6f, 0x66,
+ 0x20, 0x34, 0x78, 0x34, 0x20, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x20, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x20, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x2e, 0x0d, 0x0a, 0x6b, 0x65, 0x72, 0x6e, 0x65, 0x6c,
+ 0x20, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x5f, 0x65, 0x74, 0x63, 0x31, 0x73, 0x5f, 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x5f, 0x63, 0x6c,
+ 0x75, 0x73, 0x74, 0x65, 0x72, 0x28, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x20, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x5f,
+ 0x65, 0x74, 0x63, 0x31, 0x73, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x5f, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x2a, 0x70, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2c, 0x20, 0x0d, 0x0a, 0x20,
+ 0x20, 0x20, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x20, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x5f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x20, 0x2a, 0x70,
+ 0x49, 0x6e, 0x70, 0x75, 0x74, 0x5f, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x5f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2c, 0x0d, 0x0a, 0x09, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x67, 0x6c,
+ 0x6f, 0x62, 0x61, 0x6c, 0x20, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x72, 0x67, 0x62, 0x61, 0x20, 0x2a, 0x70, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x5f, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x73, 0x2c, 0x0d,
+ 0x0a, 0x09, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x20, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x74, 0x20, 0x2a, 0x70, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x5f,
+ 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2c, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x20, 0x65, 0x74, 0x63, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x20, 0x2a,
+ 0x70, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x29, 0x0d, 0x0a, 0x7b, 0x0d, 0x0a, 0x09, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x75, 0x69, 0x6e, 0x74, 0x33,
+ 0x32, 0x5f, 0x74, 0x20, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x3d, 0x20, 0x67, 0x65, 0x74, 0x5f, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x5f, 0x69,
+ 0x64, 0x28, 0x30, 0x29, 0x3b, 0x0d, 0x0a, 0x09, 0x0d, 0x0a, 0x09, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x20, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x5f, 0x63, 0x6c,
+ 0x75, 0x73, 0x74, 0x65, 0x72, 0x20, 0x2a, 0x70, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x5f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x20, 0x3d, 0x20, 0x26, 0x70, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x5f,
+ 0x70, 0x69, 0x78, 0x65, 0x6c, 0x5f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x5b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5d, 0x3b, 0x0d, 0x0a,
+ 0x0d, 0x0a, 0x09, 0x75, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x5f, 0x74, 0x20, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x73, 0x20, 0x3d, 0x20, 0x70, 0x49, 0x6e, 0x70, 0x75,
+ 0x74, 0x5f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2d, 0x3e, 0x6d, 0x5f, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x73, 0x3b, 0x0d, 0x0a, 0x09, 0x63, 0x6f, 0x6e,
+ 0x73, 0x74, 0x20, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x20, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x72, 0x67, 0x62, 0x61, 0x20, 0x2a, 0x70, 0x50, 0x69, 0x78, 0x65, 0x6c, 0x73, 0x20, 0x3d, 0x20,
+ 0x70, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x5f, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x73, 0x20, 0x2b, 0x20, 0x70, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x5f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2d, 0x3e,
+ 0x6d, 0x5f, 0x66, 0x69, 0x72, 0x73, 0x74, 0x5f, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x3b, 0x0d, 0x0a, 0x09, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x67, 0x6c, 0x6f,
+ 0x62, 0x61, 0x6c, 0x20, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x74, 0x20, 0x2a, 0x70, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x73, 0x20, 0x3d, 0x20, 0x70, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x5f,
+ 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x73, 0x20, 0x2b, 0x20, 0x70, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x5f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2d, 0x3e, 0x6d, 0x5f, 0x66, 0x69, 0x72, 0x73,
+ 0x74, 0x5f, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x3b, 0x0d, 0x0a, 0x0d, 0x0a, 0x09, 0x65, 0x74, 0x63, 0x31, 0x73, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a,
+ 0x65, 0x72, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x20, 0x73, 0x74, 0x61, 0x74, 0x65, 0x3b, 0x0d, 0x0a, 0x09, 0x65, 0x74, 0x63, 0x31, 0x73, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x65,
+ 0x72, 0x5f, 0x69, 0x6e, 0x69, 0x74, 0x28, 0x26, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2c, 0x20, 0x70, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2c, 0x20, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x70, 0x69,
+ 0x78, 0x65, 0x6c, 0x73, 0x2c, 0x20, 0x70, 0x50, 0x69, 0x78, 0x65, 0x6c, 0x73, 0x2c, 0x20, 0x70, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x73, 0x29, 0x3b, 0x0d, 0x0a, 0x09, 0x65, 0x74, 0x63, 0x31,
+ 0x73, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x65, 0x72, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x5f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x66, 0x69, 0x74,
+ 0x28, 0x70, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2d, 0x3e, 0x6d, 0x5f, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x70, 0x65, 0x72, 0x6d, 0x73, 0x2c, 0x20, 0x26, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2c,
+ 0x20, 0x70, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2c, 0x20, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x73, 0x2c, 0x20, 0x70, 0x50, 0x69, 0x78, 0x65, 0x6c, 0x73, 0x2c,
+ 0x20, 0x70, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x73, 0x29, 0x3b, 0x0d, 0x0a, 0x09, 0x0d, 0x0a, 0x09, 0x65, 0x74, 0x63, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x20, 0x62, 0x6c, 0x6b, 0x3b, 0x0d,
+ 0x0a, 0x09, 0x65, 0x74, 0x63, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x66, 0x6c, 0x69, 0x70, 0x5f, 0x62, 0x69, 0x74, 0x28, 0x26, 0x62, 0x6c, 0x6b, 0x2c, 0x20, 0x74,
+ 0x72, 0x75, 0x65, 0x29, 0x3b, 0x0d, 0x0a, 0x09, 0x65, 0x74, 0x63, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x63, 0x6f, 0x6c, 0x6f,
+ 0x72, 0x35, 0x5f, 0x65, 0x74, 0x63, 0x31, 0x73, 0x28, 0x26, 0x62, 0x6c, 0x6b, 0x2c, 0x20, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x6d, 0x5f, 0x62, 0x65, 0x73, 0x74, 0x5f, 0x73, 0x6f, 0x6c, 0x75,
+ 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x6d, 0x5f, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x73, 0x2e, 0x6d, 0x5f, 0x75, 0x6e, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x64, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x29, 0x3b,
+ 0x0d, 0x0a, 0x09, 0x65, 0x74, 0x63, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x6e, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x5f, 0x65, 0x74,
+ 0x63, 0x31, 0x73, 0x28, 0x26, 0x62, 0x6c, 0x6b, 0x2c, 0x20, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x6d, 0x5f, 0x62, 0x65, 0x73, 0x74, 0x5f, 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x2e,
+ 0x6d, 0x5f, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x73, 0x2e, 0x6d, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x6e, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x29, 0x3b, 0x0d, 0x0a, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09,
+ 0x09, 0x09, 0x0d, 0x0a, 0x09, 0x70, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x5b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x6e, 0x64, 0x65,
+ 0x78, 0x5d, 0x20, 0x3d, 0x20, 0x62, 0x6c, 0x6b, 0x3b, 0x0d, 0x0a, 0x7d, 0x0d, 0x0a, 0x0d, 0x0a, 0x2f, 0x2f, 0x20, 0x2d, 0x2d, 0x2d, 0x2d, 0x20, 0x72, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x5f, 0x65,
+ 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x5f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x0d, 0x0a, 0x74, 0x79, 0x70, 0x65, 0x64, 0x65, 0x66, 0x20,
+ 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x5f, 0x5f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x5f, 0x5f, 0x20, 0x28, 0x28, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x29, 0x29, 0x20,
+ 0x72, 0x65, 0x63, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x5f, 0x74, 0x61, 0x67, 0x0d, 0x0a, 0x7b, 0x0d, 0x0a, 0x09, 0x75, 0x69, 0x6e, 0x74, 0x31, 0x36,
+ 0x5f, 0x74, 0x20, 0x6d, 0x5f, 0x66, 0x69, 0x72, 0x73, 0x74, 0x5f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x6f, 0x66, 0x73, 0x3b, 0x0d, 0x0a, 0x09, 0x75, 0x69, 0x6e, 0x74, 0x31, 0x36,
+ 0x5f, 0x74, 0x20, 0x6d, 0x5f, 0x6e, 0x75, 0x6d, 0x5f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x3b, 0x0d, 0x0a, 0x09, 0x75, 0x69, 0x6e, 0x74, 0x31, 0x36, 0x5f, 0x74, 0x20, 0x6d, 0x5f,
+ 0x63, 0x75, 0x72, 0x5f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x3b, 0x0d, 0x0a, 0x09, 0x75, 0x69, 0x6e, 0x74, 0x38, 0x5f, 0x74, 0x20, 0x6d, 0x5f, 0x63,
+ 0x75, 0x72, 0x5f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x65, 0x74, 0x63, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x6e, 0x3b, 0x0d, 0x0a, 0x7d, 0x20, 0x72, 0x65, 0x63, 0x5f, 0x62, 0x6c, 0x6f,
+ 0x63, 0x6b, 0x5f, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x3b, 0x0d, 0x0a, 0x0d, 0x0a, 0x74, 0x79, 0x70, 0x65, 0x64, 0x65, 0x66, 0x20, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x5f, 0x5f, 0x61,
+ 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x5f, 0x5f, 0x20, 0x28, 0x28, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x29, 0x29, 0x20, 0x72, 0x65, 0x63, 0x5f, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69,
+ 0x6e, 0x74, 0x5f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x5f, 0x74, 0x61, 0x67, 0x0d, 0x0a, 0x7b, 0x0d, 0x0a, 0x09, 0x63, 0x6f, 0x6c, 0x6f, 0x72,
+ 0x5f, 0x72, 0x67, 0x62, 0x61, 0x20, 0x6d, 0x5f, 0x75, 0x6e, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x64, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x3b, 0x0d, 0x0a, 0x09, 0x75, 0x69, 0x6e, 0x74, 0x38, 0x5f,
+ 0x74, 0x20, 0x6d, 0x5f, 0x65, 0x74, 0x63, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x6e, 0x3b, 0x0d, 0x0a, 0x09, 0x75, 0x69, 0x6e, 0x74, 0x31, 0x36, 0x5f, 0x74, 0x20, 0x6d, 0x5f, 0x63, 0x6c, 0x75, 0x73,
+ 0x74, 0x65, 0x72, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x3b, 0x0d, 0x0a, 0x7d, 0x20, 0x72, 0x65, 0x63, 0x5f, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x5f, 0x63, 0x6c, 0x75, 0x73, 0x74,
+ 0x65, 0x72, 0x5f, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x3b, 0x0d, 0x0a, 0x0d, 0x0a, 0x74, 0x79, 0x70, 0x65, 0x64, 0x65, 0x66, 0x20, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x5f, 0x5f, 0x61,
+ 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x5f, 0x5f, 0x20, 0x28, 0x28, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x29, 0x29, 0x20, 0x72, 0x65, 0x63, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x5f,
+ 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x5f, 0x74, 0x61, 0x67, 0x0d, 0x0a, 0x7b, 0x0d, 0x0a, 0x09, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x74, 0x20, 0x6d, 0x5f, 0x74, 0x6f, 0x74, 0x61, 0x6c,
+ 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x3b, 0x0d, 0x0a, 0x09, 0x69, 0x6e, 0x74, 0x20, 0x6d, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x70, 0x74, 0x75, 0x61, 0x6c, 0x3b, 0x0d, 0x0a, 0x7d, 0x20,
+ 0x72, 0x65, 0x63, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x5f, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x3b, 0x0d, 0x0a, 0x0d, 0x0a, 0x2f, 0x2f, 0x20, 0x46, 0x6f, 0x72, 0x20, 0x65, 0x61, 0x63, 0x68,
+ 0x20, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x20, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x3a, 0x20, 0x66, 0x69, 0x6e, 0x64, 0x20, 0x74, 0x68, 0x65, 0x20, 0x62, 0x65, 0x73, 0x74, 0x20, 0x65, 0x6e, 0x64, 0x70,
+ 0x6f, 0x69, 0x6e, 0x74, 0x20, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x73, 0x20, 0x69, 0x74, 0x2e, 0x0d, 0x0a, 0x6b,
+ 0x65, 0x72, 0x6e, 0x65, 0x6c, 0x20, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x72, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x5f, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x5f, 0x63, 0x6c, 0x75, 0x73, 0x74,
+ 0x65, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x28, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x72, 0x65, 0x63, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x5f,
+ 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2c, 0x20, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x67, 0x6c, 0x6f, 0x62, 0x61,
+ 0x6c, 0x20, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x20, 0x2a, 0x70, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x2c, 0x0d, 0x0a, 0x09,
+ 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x20, 0x72, 0x65, 0x63, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x2a, 0x70,
+ 0x49, 0x6e, 0x70, 0x75, 0x74, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x2c, 0x0d, 0x0a, 0x09, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c,
+ 0x20, 0x72, 0x65, 0x63, 0x5f, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x5f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x2a, 0x70, 0x49,
+ 0x6e, 0x70, 0x75, 0x74, 0x5f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2c, 0x0d, 0x0a, 0x09, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x20, 0x75, 0x69,
+ 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x74, 0x20, 0x2a, 0x70, 0x53, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x2c, 0x0d, 0x0a,
+ 0x20, 0x20, 0x20, 0x20, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x20, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x74, 0x20, 0x2a, 0x70, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x69, 0x6e, 0x64,
+ 0x69, 0x63, 0x65, 0x73, 0x29, 0x0d, 0x0a, 0x7b, 0x0d, 0x0a, 0x09, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x74, 0x20, 0x73, 0x6f, 0x72, 0x74, 0x65, 0x64,
+ 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x3d, 0x20, 0x67, 0x65, 0x74, 0x5f, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x5f, 0x69, 0x64, 0x28, 0x30, 0x29, 0x3b,
+ 0x0d, 0x0a, 0x09, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x74, 0x20, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x3d, 0x20,
+ 0x70, 0x53, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x5b, 0x73, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x5f, 0x62, 0x6c, 0x6f,
+ 0x63, 0x6b, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5d, 0x3b, 0x0d, 0x0a, 0x09, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x69, 0x6e, 0x74, 0x20, 0x70, 0x65, 0x72, 0x63, 0x65, 0x70, 0x74, 0x75, 0x61,
+ 0x6c, 0x20, 0x3d, 0x20, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x6d, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x70, 0x74, 0x75, 0x61, 0x6c, 0x3b, 0x0d, 0x0a, 0x0d, 0x0a, 0x09, 0x63, 0x6f, 0x6e,
+ 0x73, 0x74, 0x20, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x20, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x20, 0x2a, 0x70, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x5f, 0x62, 0x6c,
+ 0x6f, 0x63, 0x6b, 0x20, 0x3d, 0x20, 0x26, 0x70, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x5b, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78,
+ 0x5d, 0x3b, 0x0d, 0x0a, 0x09, 0x09, 0x09, 0x0d, 0x0a, 0x09, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x20, 0x70, 0x72, 0x69, 0x76, 0x5f, 0x70, 0x69, 0x78, 0x65, 0x6c,
+ 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x3b, 0x0d, 0x0a, 0x09, 0x70, 0x72, 0x69, 0x76, 0x5f, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x20, 0x3d, 0x20, 0x2a, 0x70, 0x49,
+ 0x6e, 0x70, 0x75, 0x74, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x3b, 0x0d, 0x0a, 0x0d, 0x0a, 0x09, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x74, 0x20, 0x66,
+ 0x69, 0x72, 0x73, 0x74, 0x5f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x6f, 0x66, 0x73, 0x20, 0x3d, 0x20, 0x70, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f,
+ 0x69, 0x6e, 0x66, 0x6f, 0x5b, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5d, 0x2e, 0x6d, 0x5f, 0x66, 0x69, 0x72, 0x73, 0x74, 0x5f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65,
+ 0x72, 0x5f, 0x6f, 0x66, 0x73, 0x3b, 0x0d, 0x0a, 0x09, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x74, 0x20, 0x6e, 0x75, 0x6d, 0x5f, 0x63, 0x6c, 0x75, 0x73,
+ 0x74, 0x65, 0x72, 0x73, 0x20, 0x3d, 0x20, 0x70, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x5b, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x69,
+ 0x6e, 0x64, 0x65, 0x78, 0x5d, 0x2e, 0x6d, 0x5f, 0x6e, 0x75, 0x6d, 0x5f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x3b, 0x0d, 0x0a, 0x09, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x75, 0x69,
+ 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x74, 0x20, 0x63, 0x75, 0x72, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x3d,
+ 0x20, 0x70, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x5b, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5d, 0x2e,
+ 0x6d, 0x5f, 0x63, 0x75, 0x72, 0x5f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x3b, 0x0d, 0x0a, 0x09, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x75, 0x69, 0x6e,
+ 0x74, 0x33, 0x32, 0x5f, 0x74, 0x20, 0x63, 0x75, 0x72, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x65, 0x74, 0x63, 0x5f, 0x69, 0x6e, 0x74, 0x65,
+ 0x6e, 0x20, 0x3d, 0x20, 0x70, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x5b, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x69, 0x6e, 0x64, 0x65,
+ 0x78, 0x5d, 0x2e, 0x6d, 0x5f, 0x63, 0x75, 0x72, 0x5f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x65, 0x74, 0x63, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x6e, 0x3b, 0x0d, 0x0a, 0x09, 0x0d, 0x0a,
+ 0x09, 0x75, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x5f, 0x74, 0x20, 0x6f, 0x76, 0x65, 0x72, 0x61, 0x6c, 0x6c, 0x5f, 0x62, 0x65, 0x73, 0x74, 0x5f, 0x65, 0x72, 0x72, 0x20, 0x3d, 0x20, 0x55, 0x49, 0x4e,
+ 0x54, 0x36, 0x34, 0x5f, 0x4d, 0x41, 0x58, 0x3b, 0x0d, 0x0a, 0x09, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x74, 0x20, 0x62, 0x65, 0x73, 0x74, 0x5f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72,
+ 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x0d, 0x0a, 0x0d, 0x0a, 0x09, 0x66, 0x6f, 0x72, 0x20, 0x28, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x74, 0x20, 0x69, 0x20,
+ 0x3d, 0x20, 0x30, 0x3b, 0x20, 0x69, 0x20, 0x3c, 0x20, 0x6e, 0x75, 0x6d, 0x5f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x3b, 0x20, 0x69, 0x2b, 0x2b, 0x29, 0x0d, 0x0a, 0x09, 0x7b, 0x0d,
+ 0x0a, 0x09, 0x09, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x74, 0x20, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20,
+ 0x3d, 0x20, 0x66, 0x69, 0x72, 0x73, 0x74, 0x5f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x6f, 0x66, 0x73, 0x20, 0x2b, 0x20, 0x69, 0x3b, 0x0d, 0x0a, 0x09, 0x09, 0x63, 0x6f, 0x6c, 0x6f,
+ 0x72, 0x5f, 0x72, 0x67, 0x62, 0x61, 0x20, 0x75, 0x6e, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x64, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x3d, 0x20, 0x70, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x5f, 0x63,
+ 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x5b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5d, 0x2e, 0x6d, 0x5f, 0x75, 0x6e, 0x73, 0x63, 0x61, 0x6c, 0x65,
+ 0x64, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x3b, 0x0d, 0x0a, 0x09, 0x09, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x75, 0x69, 0x6e, 0x74, 0x38, 0x5f, 0x74, 0x20, 0x65, 0x74, 0x63, 0x5f, 0x69, 0x6e,
+ 0x74, 0x65, 0x6e, 0x20, 0x3d, 0x20, 0x70, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x5f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x5b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x6e,
+ 0x64, 0x65, 0x78, 0x5d, 0x2e, 0x6d, 0x5f, 0x65, 0x74, 0x63, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x6e, 0x3b, 0x0d, 0x0a, 0x09, 0x09, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x75, 0x69, 0x6e, 0x74, 0x31,
+ 0x36, 0x5f, 0x74, 0x20, 0x6f, 0x72, 0x69, 0x67, 0x5f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x3d, 0x20, 0x70, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x5f,
+ 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x5b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5d, 0x2e, 0x6d, 0x5f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65,
+ 0x72, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x3b, 0x0d, 0x0a, 0x0d, 0x0a, 0x09, 0x09, 0x69, 0x66, 0x20, 0x28, 0x65, 0x74, 0x63, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x6e, 0x20, 0x3e, 0x20, 0x63, 0x75,
+ 0x72, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x65, 0x74, 0x63, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x6e, 0x29, 0x0d, 0x0a, 0x09, 0x09, 0x09, 0x63,
+ 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75, 0x65, 0x3b, 0x0d, 0x0a, 0x0d, 0x0a, 0x09, 0x09, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x72, 0x67, 0x62, 0x61, 0x20, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x63,
+ 0x6f, 0x6c, 0x6f, 0x72, 0x73, 0x5b, 0x34, 0x5d, 0x3b, 0x0d, 0x0a, 0x09, 0x09, 0x67, 0x65, 0x74, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x73, 0x35, 0x28, 0x62,
+ 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x73, 0x2c, 0x20, 0x26, 0x75, 0x6e, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x64, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x2c, 0x20, 0x65, 0x74,
+ 0x63, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x6e, 0x2c, 0x20, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x29, 0x3b, 0x0d, 0x0a, 0x0d, 0x0a, 0x09, 0x09, 0x75, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x5f, 0x74, 0x20, 0x74,
+ 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x0d, 0x0a, 0x09, 0x09, 0x09, 0x09, 0x0d, 0x0a, 0x09, 0x09, 0x66, 0x6f, 0x72, 0x20, 0x28, 0x75, 0x69,
+ 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x74, 0x20, 0x63, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x20, 0x63, 0x20, 0x3c, 0x20, 0x31, 0x36, 0x3b, 0x20, 0x63, 0x2b, 0x2b, 0x29, 0x0d, 0x0a, 0x09, 0x09, 0x7b, 0x0d,
+ 0x0a, 0x09, 0x09, 0x09, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x72, 0x67, 0x62, 0x61, 0x20, 0x73, 0x72, 0x63, 0x5f, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x20, 0x3d, 0x20, 0x70, 0x72, 0x69, 0x76, 0x5f,
+ 0x70, 0x69, 0x78, 0x65, 0x6c, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x6d, 0x5f, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x73, 0x5b, 0x63, 0x5d, 0x3b, 0x0d, 0x0a, 0x0d, 0x0a, 0x09, 0x09, 0x09, 0x75,
+ 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x74, 0x20, 0x62, 0x65, 0x73, 0x74, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x20, 0x3d, 0x20, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x64, 0x69, 0x73, 0x74, 0x61,
+ 0x6e, 0x63, 0x65, 0x28, 0x70, 0x65, 0x72, 0x63, 0x65, 0x70, 0x74, 0x75, 0x61, 0x6c, 0x2c, 0x20, 0x73, 0x72, 0x63, 0x5f, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x2c, 0x20, 0x62, 0x6c, 0x6f, 0x63, 0x6b,
+ 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x73, 0x5b, 0x30, 0x5d, 0x2c, 0x20, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x29, 0x3b, 0x0d, 0x0a, 0x0d, 0x0a, 0x09, 0x09, 0x09, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32,
+ 0x5f, 0x74, 0x20, 0x74, 0x72, 0x69, 0x61, 0x6c, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x20, 0x3d, 0x20, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x64, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x28,
+ 0x70, 0x65, 0x72, 0x63, 0x65, 0x70, 0x74, 0x75, 0x61, 0x6c, 0x2c, 0x20, 0x73, 0x72, 0x63, 0x5f, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x2c, 0x20, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x63, 0x6f, 0x6c,
+ 0x6f, 0x72, 0x73, 0x5b, 0x31, 0x5d, 0x2c, 0x20, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x29, 0x3b, 0x0d, 0x0a, 0x09, 0x09, 0x09, 0x69, 0x66, 0x20, 0x28, 0x74, 0x72, 0x69, 0x61, 0x6c, 0x5f, 0x65, 0x72,
+ 0x72, 0x6f, 0x72, 0x20, 0x3c, 0x20, 0x62, 0x65, 0x73, 0x74, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x29, 0x0d, 0x0a, 0x09, 0x09, 0x09, 0x09, 0x62, 0x65, 0x73, 0x74, 0x5f, 0x65, 0x72, 0x72, 0x6f,
+ 0x72, 0x20, 0x3d, 0x20, 0x74, 0x72, 0x69, 0x61, 0x6c, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x3b, 0x0d, 0x0a, 0x0d, 0x0a, 0x09, 0x09, 0x09, 0x74, 0x72, 0x69, 0x61, 0x6c, 0x5f, 0x65, 0x72, 0x72,
+ 0x6f, 0x72, 0x20, 0x3d, 0x20, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x64, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x28, 0x70, 0x65, 0x72, 0x63, 0x65, 0x70, 0x74, 0x75, 0x61, 0x6c, 0x2c, 0x20,
+ 0x73, 0x72, 0x63, 0x5f, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x2c, 0x20, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x73, 0x5b, 0x32, 0x5d, 0x2c, 0x20, 0x66, 0x61, 0x6c, 0x73,
+ 0x65, 0x29, 0x3b, 0x0d, 0x0a, 0x09, 0x09, 0x09, 0x69, 0x66, 0x20, 0x28, 0x74, 0x72, 0x69, 0x61, 0x6c, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x20, 0x3c, 0x20, 0x62, 0x65, 0x73, 0x74, 0x5f, 0x65,
+ 0x72, 0x72, 0x6f, 0x72, 0x29, 0x0d, 0x0a, 0x09, 0x09, 0x09, 0x09, 0x62, 0x65, 0x73, 0x74, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x20, 0x3d, 0x20, 0x74, 0x72, 0x69, 0x61, 0x6c, 0x5f, 0x65, 0x72,
+ 0x72, 0x6f, 0x72, 0x3b, 0x0d, 0x0a, 0x0d, 0x0a, 0x09, 0x09, 0x09, 0x74, 0x72, 0x69, 0x61, 0x6c, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x20, 0x3d, 0x20, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x64,
+ 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x28, 0x70, 0x65, 0x72, 0x63, 0x65, 0x70, 0x74, 0x75, 0x61, 0x6c, 0x2c, 0x20, 0x73, 0x72, 0x63, 0x5f, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x2c, 0x20, 0x62,
+ 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x73, 0x5b, 0x33, 0x5d, 0x2c, 0x20, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x29, 0x3b, 0x0d, 0x0a, 0x09, 0x09, 0x09, 0x69, 0x66, 0x20, 0x28,
+ 0x74, 0x72, 0x69, 0x61, 0x6c, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x20, 0x3c, 0x20, 0x62, 0x65, 0x73, 0x74, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x29, 0x0d, 0x0a, 0x09, 0x09, 0x09, 0x09, 0x62,
+ 0x65, 0x73, 0x74, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x20, 0x3d, 0x20, 0x74, 0x72, 0x69, 0x61, 0x6c, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x3b, 0x0d, 0x0a, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09,
+ 0x09, 0x0d, 0x0a, 0x09, 0x09, 0x09, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x20, 0x2b, 0x3d, 0x20, 0x62, 0x65, 0x73, 0x74, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x3b,
+ 0x0d, 0x0a, 0x09, 0x09, 0x7d, 0x0d, 0x0a, 0x0d, 0x0a, 0x09, 0x09, 0x69, 0x66, 0x20, 0x28, 0x20, 0x28, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x20, 0x3c, 0x20, 0x6f,
+ 0x76, 0x65, 0x72, 0x61, 0x6c, 0x6c, 0x5f, 0x62, 0x65, 0x73, 0x74, 0x5f, 0x65, 0x72, 0x72, 0x29, 0x20, 0x7c, 0x7c, 0x0d, 0x0a, 0x09, 0x09, 0x20, 0x20, 0x20, 0x20, 0x20, 0x28, 0x28, 0x6f, 0x72,
+ 0x69, 0x67, 0x5f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x3d, 0x3d, 0x20, 0x63, 0x75, 0x72, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x63, 0x6c,
+ 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x29, 0x20, 0x26, 0x26, 0x20, 0x28, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x20, 0x3d, 0x3d, 0x20,
+ 0x6f, 0x76, 0x65, 0x72, 0x61, 0x6c, 0x6c, 0x5f, 0x62, 0x65, 0x73, 0x74, 0x5f, 0x65, 0x72, 0x72, 0x29, 0x29, 0x0d, 0x0a, 0x09, 0x09, 0x09, 0x29, 0x0d, 0x0a, 0x09, 0x09, 0x7b, 0x0d, 0x0a, 0x09,
+ 0x09, 0x09, 0x6f, 0x76, 0x65, 0x72, 0x61, 0x6c, 0x6c, 0x5f, 0x62, 0x65, 0x73, 0x74, 0x5f, 0x65, 0x72, 0x72, 0x20, 0x3d, 0x20, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72,
+ 0x3b, 0x0d, 0x0a, 0x09, 0x09, 0x09, 0x62, 0x65, 0x73, 0x74, 0x5f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x3d, 0x20, 0x6f, 0x72, 0x69, 0x67, 0x5f,
+ 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x3b, 0x0d, 0x0a, 0x09, 0x09, 0x09, 0x69, 0x66, 0x20, 0x28, 0x21, 0x6f, 0x76, 0x65, 0x72, 0x61, 0x6c, 0x6c, 0x5f,
+ 0x62, 0x65, 0x73, 0x74, 0x5f, 0x65, 0x72, 0x72, 0x29, 0x0d, 0x0a, 0x09, 0x09, 0x09, 0x09, 0x62, 0x72, 0x65, 0x61, 0x6b, 0x3b, 0x0d, 0x0a, 0x09, 0x09, 0x7d, 0x0d, 0x0a, 0x09, 0x7d, 0x0d, 0x0a,
+ 0x0d, 0x0a, 0x09, 0x70, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x5b, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5d, 0x20,
+ 0x3d, 0x20, 0x62, 0x65, 0x73, 0x74, 0x5f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x3b, 0x0d, 0x0a, 0x7d, 0x0d, 0x0a, 0x0d, 0x0a, 0x2f, 0x2f, 0x20, 0x2d,
+ 0x2d, 0x2d, 0x2d, 0x20, 0x66, 0x69, 0x6e, 0x64, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6d, 0x61, 0x6c, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x5f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65,
+ 0x72, 0x73, 0x5f, 0x66, 0x6f, 0x72, 0x5f, 0x65, 0x61, 0x63, 0x68, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x0d, 0x0a, 0x0d, 0x0a, 0x74, 0x79, 0x70, 0x65, 0x64, 0x65, 0x66, 0x20, 0x73, 0x74, 0x72,
+ 0x75, 0x63, 0x74, 0x20, 0x5f, 0x5f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x5f, 0x5f, 0x20, 0x28, 0x28, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x29, 0x29, 0x20, 0x66, 0x6f, 0x73,
+ 0x63, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x5f, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x5f, 0x74, 0x61, 0x67, 0x0d, 0x0a, 0x7b, 0x0d, 0x0a, 0x09, 0x75, 0x69, 0x6e, 0x74, 0x33,
+ 0x32, 0x5f, 0x74, 0x20, 0x6d, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x3b, 0x09, 0x2f, 0x2f, 0x20, 0x34, 0x78, 0x34, 0x20, 0x67,
+ 0x72, 0x69, 0x64, 0x20, 0x6f, 0x66, 0x20, 0x32, 0x2d, 0x62, 0x69, 0x74, 0x20, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x0d, 0x0a, 0x7d, 0x20, 0x66, 0x6f, 0x73, 0x63, 0x5f, 0x73,
+ 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x5f, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x3b, 0x0d, 0x0a, 0x0d, 0x0a, 0x74, 0x79, 0x70, 0x65, 0x64, 0x65, 0x66, 0x20, 0x73, 0x74, 0x72, 0x75, 0x63,
+ 0x74, 0x20, 0x5f, 0x5f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x5f, 0x5f, 0x20, 0x28, 0x28, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x29, 0x29, 0x20, 0x66, 0x6f, 0x73, 0x63, 0x5f,
+ 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x5f, 0x74, 0x61, 0x67, 0x0d, 0x0a, 0x7b, 0x0d, 0x0a, 0x09, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x72, 0x67, 0x62, 0x61,
+ 0x20, 0x6d, 0x5f, 0x65, 0x74, 0x63, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x35, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x6e, 0x3b, 0x20, 0x20, 0x2f, 0x2f, 0x20, 0x75, 0x6e, 0x73, 0x63, 0x61, 0x6c, 0x65,
+ 0x64, 0x20, 0x35, 0x2d, 0x62, 0x69, 0x74, 0x20, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x20, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x20, 0x69, 0x6e, 0x20, 0x52, 0x47, 0x42, 0x2c, 0x20, 0x61, 0x6c, 0x70, 0x68,
+ 0x61, 0x20, 0x68, 0x61, 0x73, 0x20, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x27, 0x73, 0x20, 0x69, 0x6e, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x79, 0x20, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x0d, 0x0a, 0x09,
+ 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x74, 0x20, 0x6d, 0x5f, 0x66, 0x69, 0x72, 0x73, 0x74, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x3b, 0x09, 0x09, 0x2f, 0x2f, 0x20, 0x6f,
+ 0x66, 0x66, 0x73, 0x65, 0x74, 0x20, 0x69, 0x6e, 0x74, 0x6f, 0x20, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x20, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x0d, 0x0a, 0x09, 0x75, 0x69, 0x6e, 0x74,
+ 0x33, 0x32, 0x5f, 0x74, 0x20, 0x6d, 0x5f, 0x6e, 0x75, 0x6d, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x3b, 0x09, 0x09, 0x2f, 0x2f, 0x20, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72,
+ 0x20, 0x6f, 0x66, 0x20, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x20, 0x74, 0x6f, 0x20, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x0d, 0x0a, 0x7d, 0x20, 0x66, 0x6f, 0x73, 0x63, 0x5f, 0x62,
+ 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x3b, 0x0d, 0x0a, 0x0d, 0x0a, 0x74, 0x79, 0x70, 0x65, 0x64, 0x65, 0x66, 0x20, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x5f,
+ 0x5f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x5f, 0x5f, 0x20, 0x28, 0x28, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x29, 0x29, 0x20, 0x66, 0x6f, 0x73, 0x63, 0x5f, 0x70, 0x61, 0x72,
+ 0x61, 0x6d, 0x5f, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x5f, 0x74, 0x61, 0x67, 0x0d, 0x0a, 0x7b, 0x0d, 0x0a, 0x09, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x74, 0x20, 0x6d, 0x5f, 0x74, 0x6f,
+ 0x74, 0x61, 0x6c, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x3b, 0x0d, 0x0a, 0x09, 0x69, 0x6e, 0x74, 0x20, 0x6d, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x70, 0x74, 0x75, 0x61, 0x6c, 0x3b, 0x0d,
+ 0x0a, 0x7d, 0x20, 0x66, 0x6f, 0x73, 0x63, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x5f, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x3b, 0x0d, 0x0a, 0x0d, 0x0a, 0x2f, 0x2f, 0x20, 0x46, 0x6f, 0x72, 0x20,
+ 0x65, 0x61, 0x63, 0x68, 0x20, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x20, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x3a, 0x20, 0x46, 0x69, 0x6e, 0x64, 0x20, 0x74, 0x68, 0x65, 0x20, 0x71, 0x75, 0x61, 0x6e, 0x74,
+ 0x69, 0x7a, 0x65, 0x64, 0x20, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x20, 0x77, 0x68, 0x69, 0x63, 0x68, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x20, 0x69, 0x6e, 0x20, 0x74,
+ 0x68, 0x65, 0x20, 0x6c, 0x6f, 0x77, 0x65, 0x73, 0x74, 0x20, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x2e, 0x0d, 0x0a, 0x6b, 0x65, 0x72, 0x6e, 0x65, 0x6c, 0x20, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x66, 0x69,
+ 0x6e, 0x64, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6d, 0x61, 0x6c, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x5f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x5f, 0x66, 0x6f, 0x72,
+ 0x5f, 0x65, 0x61, 0x63, 0x68, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x28, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x66, 0x6f, 0x73, 0x63, 0x5f, 0x70, 0x61, 0x72,
+ 0x61, 0x6d, 0x5f, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2c, 0x20, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x67, 0x6c,
+ 0x6f, 0x62, 0x61, 0x6c, 0x20, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x20, 0x2a, 0x70, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x2c,
+ 0x0d, 0x0a, 0x09, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x20, 0x66, 0x6f, 0x73, 0x63, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x73, 0x74, 0x72, 0x75, 0x63,
+ 0x74, 0x20, 0x2a, 0x70, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x2c, 0x0d, 0x0a, 0x09, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x67, 0x6c,
+ 0x6f, 0x62, 0x61, 0x6c, 0x20, 0x66, 0x6f, 0x73, 0x63, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x5f, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x2a, 0x70, 0x49, 0x6e, 0x70, 0x75,
+ 0x74, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x2c, 0x0d, 0x0a, 0x09, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x20, 0x75, 0x69, 0x6e, 0x74,
+ 0x33, 0x32, 0x5f, 0x74, 0x20, 0x2a, 0x70, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x5f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x2c,
+ 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x20, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x74, 0x20, 0x2a, 0x70, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x73,
+ 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x5f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x29, 0x0d, 0x0a, 0x7b, 0x0d, 0x0a, 0x09, 0x63, 0x6f,
+ 0x6e, 0x73, 0x74, 0x20, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x74, 0x20, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x3d, 0x20, 0x67, 0x65, 0x74, 0x5f, 0x67,
+ 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x5f, 0x69, 0x64, 0x28, 0x30, 0x29, 0x3b, 0x0d, 0x0a, 0x09, 0x0d, 0x0a, 0x09, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x20, 0x63,
+ 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x72, 0x67, 0x62, 0x61, 0x20, 0x2a, 0x70, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x73, 0x20, 0x3d, 0x20, 0x70, 0x49, 0x6e, 0x70, 0x75,
+ 0x74, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x5b, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5d, 0x2e, 0x6d, 0x5f, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x73, 0x3b, 0x0d,
+ 0x0a, 0x09, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x20, 0x66, 0x6f, 0x73, 0x63, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74,
+ 0x20, 0x2a, 0x70, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x20, 0x3d, 0x20, 0x26, 0x70, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x69, 0x6e,
+ 0x66, 0x6f, 0x5b, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5d, 0x3b, 0x0d, 0x0a, 0x09, 0x0d, 0x0a, 0x09, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x67, 0x6c, 0x6f, 0x62,
+ 0x61, 0x6c, 0x20, 0x66, 0x6f, 0x73, 0x63, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x5f, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x2a, 0x70, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74,
+ 0x6f, 0x72, 0x73, 0x20, 0x3d, 0x20, 0x26, 0x70, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x5b, 0x70, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x69,
+ 0x6e, 0x66, 0x6f, 0x2d, 0x3e, 0x6d, 0x5f, 0x66, 0x69, 0x72, 0x73, 0x74, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x5d, 0x3b, 0x0d, 0x0a, 0x09, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20,
+ 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x74, 0x20, 0x6e, 0x75, 0x6d, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x20, 0x3d, 0x20, 0x70, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x5f,
+ 0x69, 0x6e, 0x66, 0x6f, 0x2d, 0x3e, 0x6d, 0x5f, 0x6e, 0x75, 0x6d, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x3b, 0x0d, 0x0a, 0x0d, 0x0a, 0x09, 0x63, 0x6f, 0x6c, 0x6f, 0x72,
+ 0x5f, 0x72, 0x67, 0x62, 0x61, 0x20, 0x74, 0x72, 0x69, 0x61, 0x6c, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x73, 0x5b, 0x34, 0x5d, 0x3b, 0x0d, 0x0a, 0x09, 0x63,
+ 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x72, 0x67, 0x62, 0x61, 0x20, 0x65, 0x74, 0x63, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x35, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x6e, 0x20, 0x3d, 0x20, 0x70, 0x42, 0x6c,
+ 0x6f, 0x63, 0x6b, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x2d, 0x3e, 0x6d, 0x5f, 0x65, 0x74, 0x63, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x35, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x6e, 0x3b, 0x0d, 0x0a, 0x09,
+ 0x67, 0x65, 0x74, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x73, 0x35, 0x28, 0x74, 0x72, 0x69, 0x61, 0x6c, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x63, 0x6f,
+ 0x6c, 0x6f, 0x72, 0x73, 0x2c, 0x20, 0x26, 0x65, 0x74, 0x63, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x35, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x6e, 0x2c, 0x20, 0x65, 0x74, 0x63, 0x5f, 0x63, 0x6f, 0x6c,
+ 0x6f, 0x72, 0x35, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x6e, 0x2e, 0x77, 0x2c, 0x20, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x29, 0x3b, 0x0d, 0x0a, 0x0d, 0x0a, 0x09, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f,
+ 0x74, 0x20, 0x74, 0x72, 0x69, 0x61, 0x6c, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x5b, 0x34, 0x5d, 0x5b, 0x31, 0x36, 0x5d, 0x3b, 0x0d, 0x0a, 0x0d, 0x0a, 0x09, 0x69, 0x66, 0x20, 0x28, 0x70,
+ 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x6d, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x70, 0x74, 0x75, 0x61, 0x6c, 0x29, 0x0d, 0x0a, 0x09, 0x7b, 0x0d, 0x0a, 0x09, 0x09, 0x66, 0x6f, 0x72, 0x20, 0x28,
+ 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x74, 0x20, 0x73, 0x65, 0x6c, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x20, 0x73, 0x65, 0x6c, 0x20, 0x3c, 0x20, 0x34, 0x3b, 0x20, 0x2b, 0x2b, 0x73, 0x65, 0x6c,
+ 0x29, 0x0d, 0x0a, 0x09, 0x09, 0x09, 0x66, 0x6f, 0x72, 0x20, 0x28, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x74, 0x20, 0x69, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x20, 0x69, 0x20, 0x3c, 0x20, 0x31,
+ 0x36, 0x3b, 0x20, 0x2b, 0x2b, 0x69, 0x29, 0x0d, 0x0a, 0x09, 0x09, 0x09, 0x09, 0x74, 0x72, 0x69, 0x61, 0x6c, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x5b, 0x73, 0x65, 0x6c, 0x5d, 0x5b, 0x69,
+ 0x5d, 0x20, 0x3d, 0x20, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x64, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x28, 0x74, 0x72, 0x75, 0x65, 0x2c, 0x20, 0x70, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x5f,
+ 0x70, 0x69, 0x78, 0x65, 0x6c, 0x73, 0x5b, 0x69, 0x5d, 0x2c, 0x20, 0x74, 0x72, 0x69, 0x61, 0x6c, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x73, 0x5b, 0x73, 0x65,
+ 0x6c, 0x5d, 0x2c, 0x20, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x29, 0x3b, 0x0d, 0x0a, 0x09, 0x7d, 0x0d, 0x0a, 0x09, 0x65, 0x6c, 0x73, 0x65, 0x0d, 0x0a, 0x09, 0x7b, 0x0d, 0x0a, 0x09, 0x09, 0x66, 0x6f,
+ 0x72, 0x20, 0x28, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x74, 0x20, 0x73, 0x65, 0x6c, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x20, 0x73, 0x65, 0x6c, 0x20, 0x3c, 0x20, 0x34, 0x3b, 0x20, 0x2b, 0x2b,
+ 0x73, 0x65, 0x6c, 0x29, 0x0d, 0x0a, 0x09, 0x09, 0x09, 0x66, 0x6f, 0x72, 0x20, 0x28, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x74, 0x20, 0x69, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x20, 0x69, 0x20,
+ 0x3c, 0x20, 0x31, 0x36, 0x3b, 0x20, 0x2b, 0x2b, 0x69, 0x29, 0x0d, 0x0a, 0x09, 0x09, 0x09, 0x09, 0x74, 0x72, 0x69, 0x61, 0x6c, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x5b, 0x73, 0x65, 0x6c,
+ 0x5d, 0x5b, 0x69, 0x5d, 0x20, 0x3d, 0x20, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x64, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x28, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x2c, 0x20, 0x70, 0x42, 0x6c,
+ 0x6f, 0x63, 0x6b, 0x5f, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x73, 0x5b, 0x69, 0x5d, 0x2c, 0x20, 0x74, 0x72, 0x69, 0x61, 0x6c, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72,
+ 0x73, 0x5b, 0x73, 0x65, 0x6c, 0x5d, 0x2c, 0x20, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x29, 0x3b, 0x0d, 0x0a, 0x09, 0x7d, 0x0d, 0x0a, 0x0d, 0x0a, 0x09, 0x75, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x5f, 0x74,
+ 0x20, 0x62, 0x65, 0x73, 0x74, 0x5f, 0x65, 0x72, 0x72, 0x20, 0x3d, 0x20, 0x55, 0x49, 0x4e, 0x54, 0x36, 0x34, 0x5f, 0x4d, 0x41, 0x58, 0x3b, 0x0d, 0x0a, 0x09, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32,
+ 0x5f, 0x74, 0x20, 0x62, 0x65, 0x73, 0x74, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x0d, 0x0a, 0x0d, 0x0a, 0x09, 0x66, 0x6f, 0x72, 0x20, 0x28, 0x75, 0x69, 0x6e, 0x74,
+ 0x33, 0x32, 0x5f, 0x74, 0x20, 0x73, 0x65, 0x6c, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x20, 0x73, 0x65, 0x6c, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x3c, 0x20,
+ 0x6e, 0x75, 0x6d, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x3b, 0x20, 0x73, 0x65, 0x6c, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2b, 0x2b, 0x29, 0x0d, 0x0a, 0x09, 0x7b, 0x0d,
+ 0x0a, 0x09, 0x09, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x74, 0x20, 0x73, 0x65, 0x6c, 0x73, 0x20, 0x3d, 0x20, 0x70, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x5b, 0x73, 0x65,
+ 0x6c, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5d, 0x2e, 0x6d, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x3b, 0x0d, 0x0a, 0x09, 0x09,
+ 0x0d, 0x0a, 0x09, 0x09, 0x75, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x5f, 0x74, 0x20, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x65, 0x72, 0x72, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x0d, 0x0a, 0x09, 0x09, 0x66,
+ 0x6f, 0x72, 0x20, 0x28, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x74, 0x20, 0x69, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x20, 0x69, 0x20, 0x3c, 0x20, 0x31, 0x36, 0x3b, 0x20, 0x69, 0x2b, 0x2b, 0x2c,
+ 0x20, 0x73, 0x65, 0x6c, 0x73, 0x20, 0x3e, 0x3e, 0x3d, 0x20, 0x32, 0x29, 0x0d, 0x0a, 0x09, 0x09, 0x09, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x65, 0x72, 0x72, 0x20, 0x2b, 0x3d, 0x20, 0x74, 0x72,
+ 0x69, 0x61, 0x6c, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x5b, 0x73, 0x65, 0x6c, 0x73, 0x20, 0x26, 0x20, 0x33, 0x5d, 0x5b, 0x69, 0x5d, 0x3b, 0x0d, 0x0a, 0x0d, 0x0a, 0x09, 0x09, 0x69, 0x66,
+ 0x20, 0x28, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x65, 0x72, 0x72, 0x20, 0x3c, 0x20, 0x62, 0x65, 0x73, 0x74, 0x5f, 0x65, 0x72, 0x72, 0x29, 0x0d, 0x0a, 0x09, 0x09, 0x7b, 0x0d, 0x0a, 0x09, 0x09,
+ 0x09, 0x62, 0x65, 0x73, 0x74, 0x5f, 0x65, 0x72, 0x72, 0x20, 0x3d, 0x20, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x65, 0x72, 0x72, 0x3b, 0x0d, 0x0a, 0x09, 0x09, 0x09, 0x62, 0x65, 0x73, 0x74, 0x5f,
+ 0x69, 0x6e, 0x64, 0x65, 0x78, 0x20, 0x3d, 0x20, 0x73, 0x65, 0x6c, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x3b, 0x0d, 0x0a, 0x0d, 0x0a, 0x09, 0x09, 0x09, 0x69, 0x66, 0x20, 0x28, 0x21, 0x62, 0x65,
+ 0x73, 0x74, 0x5f, 0x65, 0x72, 0x72, 0x29, 0x0d, 0x0a, 0x09, 0x09, 0x09, 0x09, 0x62, 0x72, 0x65, 0x61, 0x6b, 0x3b, 0x0d, 0x0a, 0x09, 0x09, 0x7d, 0x0d, 0x0a, 0x09, 0x7d, 0x0d, 0x0a, 0x0d, 0x0a,
+ 0x09, 0x70, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x5f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x65,
+ 0x73, 0x5b, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5d, 0x20, 0x3d, 0x20, 0x70, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x5f, 0x63, 0x6c, 0x75, 0x73, 0x74,
+ 0x65, 0x72, 0x5f, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x5b, 0x70, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x2d, 0x3e, 0x6d, 0x5f, 0x66, 0x69, 0x72, 0x73, 0x74, 0x5f,
+ 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x20, 0x2b, 0x20, 0x62, 0x65, 0x73, 0x74, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5d, 0x3b, 0x0d, 0x0a, 0x7d, 0x0d, 0x0a, 0x0d, 0x0a, 0x2f, 0x2f,
+ 0x20, 0x64, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x65, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x0d, 0x0a, 0x0d, 0x0a, 0x74, 0x79, 0x70, 0x65, 0x64, 0x65, 0x66, 0x20,
+ 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x5f, 0x5f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x5f, 0x5f, 0x20, 0x28, 0x28, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x29, 0x29, 0x20,
+ 0x64, 0x73, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x5f, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x5f, 0x74, 0x61, 0x67, 0x0d, 0x0a, 0x7b, 0x0d, 0x0a, 0x09, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f,
+ 0x74, 0x20, 0x6d, 0x5f, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x3b, 0x0d, 0x0a, 0x09, 0x69, 0x6e, 0x74, 0x20, 0x6d, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x70,
+ 0x74, 0x75, 0x61, 0x6c, 0x3b, 0x0d, 0x0a, 0x7d, 0x20, 0x64, 0x73, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x5f, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x3b, 0x0d, 0x0a, 0x0d, 0x0a, 0x2f, 0x2f, 0x20,
+ 0x46, 0x6f, 0x72, 0x20, 0x65, 0x61, 0x63, 0x68, 0x20, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x20, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x3a, 0x20, 0x44, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x65, 0x20,
+ 0x74, 0x68, 0x65, 0x20, 0x45, 0x54, 0x43, 0x31, 0x53, 0x20, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x20,
+ 0x69, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6c, 0x6f, 0x77, 0x65, 0x73, 0x74, 0x20, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x2c, 0x20, 0x67, 0x69, 0x76, 0x65, 0x6e, 0x20, 0x65, 0x61, 0x63, 0x68, 0x20,
+ 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x27, 0x73, 0x20, 0x70, 0x72, 0x65, 0x64, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x65, 0x64, 0x20, 0x45, 0x54, 0x43, 0x31, 0x53, 0x20, 0x63, 0x6f, 0x6c, 0x6f,
+ 0x72, 0x35, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x65, 0x73, 0x2e, 0x20, 0x0d, 0x0a, 0x6b, 0x65, 0x72, 0x6e, 0x65, 0x6c, 0x20, 0x76, 0x6f, 0x69, 0x64, 0x20, 0x64, 0x65,
+ 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x65, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x28, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x64, 0x73,
+ 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x5f, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2c, 0x20, 0x0d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x63, 0x6f, 0x6e, 0x73,
+ 0x74, 0x20, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x20, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x20, 0x2a, 0x70, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x5f, 0x62, 0x6c, 0x6f,
+ 0x63, 0x6b, 0x73, 0x2c, 0x0d, 0x0a, 0x09, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x20, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x72, 0x67, 0x62, 0x61, 0x20, 0x2a,
+ 0x70, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x5f, 0x65, 0x74, 0x63, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x35, 0x5f, 0x61, 0x6e, 0x64, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x6e, 0x2c, 0x0d, 0x0a, 0x20, 0x20,
+ 0x20, 0x20, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x20, 0x65, 0x74, 0x63, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x20, 0x2a, 0x70, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x62, 0x6c, 0x6f, 0x63,
+ 0x6b, 0x73, 0x29, 0x0d, 0x0a, 0x7b, 0x0d, 0x0a, 0x09, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x20, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x74, 0x20, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x69, 0x6e,
+ 0x64, 0x65, 0x78, 0x20, 0x3d, 0x20, 0x67, 0x65, 0x74, 0x5f, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x5f, 0x69, 0x64, 0x28, 0x30, 0x29, 0x3b, 0x0d, 0x0a, 0x09, 0x0d, 0x0a, 0x09, 0x63, 0x6f, 0x6e,
+ 0x73, 0x74, 0x20, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x20, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x72, 0x67, 0x62, 0x61, 0x20, 0x2a, 0x70, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x70, 0x69, 0x78,
+ 0x65, 0x6c, 0x73, 0x20, 0x3d, 0x20, 0x70, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x5b, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5d,
+ 0x2e, 0x6d, 0x5f, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x73, 0x3b, 0x0d, 0x0a, 0x0d, 0x0a, 0x09, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x72, 0x67, 0x62, 0x61, 0x20, 0x65, 0x74, 0x63, 0x5f, 0x63, 0x6f,
+ 0x6c, 0x6f, 0x72, 0x35, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x6e, 0x20, 0x3d, 0x20, 0x70, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x5f, 0x65, 0x74, 0x63, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x35, 0x5f, 0x61,
+ 0x6e, 0x64, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x6e, 0x5b, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5d, 0x3b, 0x0d, 0x0a, 0x0d, 0x0a, 0x09, 0x63, 0x6f, 0x6c, 0x6f, 0x72,
+ 0x5f, 0x72, 0x67, 0x62, 0x61, 0x20, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x73, 0x5b, 0x34, 0x5d, 0x3b, 0x0d, 0x0a, 0x09, 0x67, 0x65, 0x74, 0x5f, 0x62, 0x6c, 0x6f,
+ 0x63, 0x6b, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x73, 0x35, 0x28, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x73, 0x2c, 0x20, 0x26, 0x65, 0x74, 0x63, 0x5f, 0x63, 0x6f,
+ 0x6c, 0x6f, 0x72, 0x35, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x6e, 0x2c, 0x20, 0x65, 0x74, 0x63, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x35, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x6e, 0x2e, 0x77, 0x2c, 0x20,
+ 0x66, 0x61, 0x6c, 0x73, 0x65, 0x29, 0x3b, 0x0d, 0x0a, 0x0d, 0x0a, 0x09, 0x65, 0x74, 0x63, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x20, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x62, 0x6c, 0x6f,
+ 0x63, 0x6b, 0x3b, 0x0d, 0x0a, 0x09, 0x65, 0x74, 0x63, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x66, 0x6c, 0x69, 0x70, 0x5f, 0x62, 0x69, 0x74, 0x28, 0x26, 0x6f, 0x75,
+ 0x74, 0x70, 0x75, 0x74, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2c, 0x20, 0x74, 0x72, 0x75, 0x65, 0x29, 0x3b, 0x0d, 0x0a, 0x09, 0x65, 0x74, 0x63, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x73,
+ 0x65, 0x74, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x35, 0x5f, 0x65, 0x74, 0x63, 0x31, 0x73, 0x28, 0x26, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x62, 0x6c,
+ 0x6f, 0x63, 0x6b, 0x2c, 0x20, 0x65, 0x74, 0x63, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x35, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x6e, 0x29, 0x3b, 0x0d, 0x0a, 0x09, 0x65, 0x74, 0x63, 0x5f, 0x62, 0x6c,
+ 0x6f, 0x63, 0x6b, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x6e, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x5f, 0x65, 0x74, 0x63, 0x31, 0x73, 0x28, 0x26, 0x6f, 0x75, 0x74, 0x70,
+ 0x75, 0x74, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2c, 0x20, 0x65, 0x74, 0x63, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x35, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x6e, 0x2e, 0x77, 0x29, 0x3b, 0x0d, 0x0a,
+ 0x0d, 0x0a, 0x09, 0x66, 0x6f, 0x72, 0x20, 0x28, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x74, 0x20, 0x69, 0x20, 0x3d, 0x20, 0x30, 0x3b, 0x20, 0x69, 0x20, 0x3c, 0x20, 0x31, 0x36, 0x3b, 0x20,
+ 0x69, 0x2b, 0x2b, 0x29, 0x0d, 0x0a, 0x09, 0x7b, 0x0d, 0x0a, 0x09, 0x09, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x72, 0x67, 0x62, 0x61, 0x20, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x5f, 0x63, 0x6f, 0x6c,
+ 0x6f, 0x72, 0x20, 0x3d, 0x20, 0x70, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x73, 0x5b, 0x69, 0x5d, 0x3b, 0x0d, 0x0a, 0x0d, 0x0a, 0x09, 0x09, 0x75, 0x69, 0x6e, 0x74,
+ 0x20, 0x65, 0x72, 0x72, 0x30, 0x20, 0x3d, 0x20, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x64, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x28, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x6d, 0x5f,
+ 0x70, 0x65, 0x72, 0x63, 0x65, 0x70, 0x74, 0x75, 0x61, 0x6c, 0x2c, 0x20, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x2c, 0x20, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x63,
+ 0x6f, 0x6c, 0x6f, 0x72, 0x73, 0x5b, 0x30, 0x5d, 0x2c, 0x20, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x29, 0x3b, 0x0d, 0x0a, 0x09, 0x09, 0x75, 0x69, 0x6e, 0x74, 0x20, 0x65, 0x72, 0x72, 0x31, 0x20, 0x3d,
+ 0x20, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x64, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x28, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x6d, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x70, 0x74,
+ 0x75, 0x61, 0x6c, 0x2c, 0x20, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x2c, 0x20, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x73, 0x5b, 0x31,
+ 0x5d, 0x2c, 0x20, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x29, 0x3b, 0x0d, 0x0a, 0x09, 0x09, 0x75, 0x69, 0x6e, 0x74, 0x20, 0x65, 0x72, 0x72, 0x32, 0x20, 0x3d, 0x20, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f,
+ 0x64, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x28, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x6d, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x70, 0x74, 0x75, 0x61, 0x6c, 0x2c, 0x20, 0x70, 0x69,
+ 0x78, 0x65, 0x6c, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x2c, 0x20, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x73, 0x5b, 0x32, 0x5d, 0x2c, 0x20, 0x66, 0x61, 0x6c, 0x73,
+ 0x65, 0x29, 0x3b, 0x0d, 0x0a, 0x09, 0x09, 0x75, 0x69, 0x6e, 0x74, 0x20, 0x65, 0x72, 0x72, 0x33, 0x20, 0x3d, 0x20, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x64, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63,
+ 0x65, 0x28, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x2e, 0x6d, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x70, 0x74, 0x75, 0x61, 0x6c, 0x2c, 0x20, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x5f, 0x63, 0x6f, 0x6c,
+ 0x6f, 0x72, 0x2c, 0x20, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x73, 0x5b, 0x33, 0x5d, 0x2c, 0x20, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x29, 0x3b, 0x0d, 0x0a, 0x0d, 0x0a,
+ 0x09, 0x09, 0x75, 0x69, 0x6e, 0x74, 0x20, 0x62, 0x65, 0x73, 0x74, 0x5f, 0x65, 0x72, 0x72, 0x20, 0x3d, 0x20, 0x6d, 0x69, 0x6e, 0x28, 0x6d, 0x69, 0x6e, 0x28, 0x6d, 0x69, 0x6e, 0x28, 0x65, 0x72,
+ 0x72, 0x30, 0x2c, 0x20, 0x65, 0x72, 0x72, 0x31, 0x29, 0x2c, 0x20, 0x65, 0x72, 0x72, 0x32, 0x29, 0x2c, 0x20, 0x65, 0x72, 0x72, 0x33, 0x29, 0x3b, 0x0d, 0x0a, 0x0d, 0x0a, 0x09, 0x09, 0x75, 0x69,
+ 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x74, 0x20, 0x62, 0x65, 0x73, 0x74, 0x5f, 0x73, 0x65, 0x6c, 0x20, 0x3d, 0x20, 0x28, 0x62, 0x65, 0x73, 0x74, 0x5f, 0x65, 0x72, 0x72, 0x20, 0x3d, 0x3d, 0x20, 0x65,
+ 0x72, 0x72, 0x32, 0x29, 0x20, 0x3f, 0x20, 0x32, 0x20, 0x3a, 0x20, 0x33, 0x3b, 0x0d, 0x0a, 0x09, 0x09, 0x62, 0x65, 0x73, 0x74, 0x5f, 0x73, 0x65, 0x6c, 0x20, 0x3d, 0x20, 0x28, 0x62, 0x65, 0x73,
+ 0x74, 0x5f, 0x65, 0x72, 0x72, 0x20, 0x3d, 0x3d, 0x20, 0x65, 0x72, 0x72, 0x31, 0x29, 0x20, 0x3f, 0x20, 0x31, 0x20, 0x3a, 0x20, 0x62, 0x65, 0x73, 0x74, 0x5f, 0x73, 0x65, 0x6c, 0x3b, 0x0d, 0x0a,
+ 0x09, 0x09, 0x62, 0x65, 0x73, 0x74, 0x5f, 0x73, 0x65, 0x6c, 0x20, 0x3d, 0x20, 0x28, 0x62, 0x65, 0x73, 0x74, 0x5f, 0x65, 0x72, 0x72, 0x20, 0x3d, 0x3d, 0x20, 0x65, 0x72, 0x72, 0x30, 0x29, 0x20,
+ 0x3f, 0x20, 0x30, 0x20, 0x3a, 0x20, 0x62, 0x65, 0x73, 0x74, 0x5f, 0x73, 0x65, 0x6c, 0x3b, 0x0d, 0x0a, 0x0d, 0x0a, 0x09, 0x09, 0x65, 0x74, 0x63, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x73,
+ 0x65, 0x74, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x28, 0x26, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2c, 0x20, 0x69, 0x20, 0x26, 0x20, 0x33,
+ 0x2c, 0x20, 0x69, 0x20, 0x3e, 0x3e, 0x20, 0x32, 0x2c, 0x20, 0x62, 0x65, 0x73, 0x74, 0x5f, 0x73, 0x65, 0x6c, 0x29, 0x3b, 0x0d, 0x0a, 0x09, 0x7d, 0x0d, 0x0a, 0x0d, 0x0a, 0x09, 0x70, 0x4f, 0x75,
+ 0x74, 0x70, 0x75, 0x74, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x5b, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5d, 0x20, 0x3d, 0x20, 0x6f, 0x75, 0x74, 0x70, 0x75,
+ 0x74, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x3b, 0x0d, 0x0a, 0x7d, 0x0d, 0x0a, 0x0d, 0x0a
+};
+unsigned int ocl_kernels_cl_len = 45935;
diff --git a/thirdparty/basis_universal/encoder/basisu_opencl.cpp b/thirdparty/basis_universal/encoder/basisu_opencl.cpp
new file mode 100644
index 0000000000..81e3090a26
--- /dev/null
+++ b/thirdparty/basis_universal/encoder/basisu_opencl.cpp
@@ -0,0 +1,1332 @@
+// basisu_opencl.cpp
+// Copyright (C) 2019-2021 Binomial LLC. All Rights Reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+#include "basisu_opencl.h"
+
+// If 1, the kernel source code will come from encoders/ocl_kernels.h. Otherwise, it will be read from the "ocl_kernels.cl" file in the current directory (for development).
+#define BASISU_USE_OCL_KERNELS_HEADER (1)
+#define BASISU_OCL_KERNELS_FILENAME "ocl_kernels.cl"
+
+#if BASISU_SUPPORT_OPENCL
+
+#include "basisu_enc.h"
+
+// We only use OpenCL v1.2 or less.
+#define CL_TARGET_OPENCL_VERSION 120
+
+#ifdef __APPLE__
+#include <OpenCL/opencl.h>
+#else
+#include <CL/cl.h>
+#endif
+
+#define BASISU_OPENCL_ASSERT_ON_ANY_ERRORS (1)
+
+namespace basisu
+{
+#if BASISU_USE_OCL_KERNELS_HEADER
+#include "basisu_ocl_kernels.h"
+#endif
+
+ static void ocl_error_printf(const char* pFmt, ...)
+ {
+ va_list args;
+ va_start(args, pFmt);
+ error_vprintf(pFmt, args);
+ va_end(args);
+
+#if BASISU_OPENCL_ASSERT_ON_ANY_ERRORS
+ assert(0);
+#endif
+ }
+
+ class ocl
+ {
+ public:
+ ocl()
+ {
+ memset(&m_dev_fp_config, 0, sizeof(m_dev_fp_config));
+
+ m_ocl_mutex.lock();
+ m_ocl_mutex.unlock();
+ }
+
+ ~ocl()
+ {
+ }
+
+ bool is_initialized() const { return m_device_id != nullptr; }
+
+ cl_device_id get_device_id() const { return m_device_id; }
+ cl_context get_context() const { return m_context; }
+ cl_command_queue get_command_queue() { return m_command_queue; }
+ cl_program get_program() const { return m_program; }
+
+ bool init(bool force_serialization)
+ {
+ deinit();
+
+ interval_timer tm;
+ tm.start();
+
+ cl_uint num_platforms = 0;
+ cl_int ret = clGetPlatformIDs(0, NULL, &num_platforms);
+ if (ret != CL_SUCCESS)
+ {
+ ocl_error_printf("ocl::init: clGetPlatformIDs() failed with %i\n", ret);
+ return false;
+ }
+
+ if ((!num_platforms) || (num_platforms > INT_MAX))
+ {
+ ocl_error_printf("ocl::init: clGetPlatformIDs() returned an invalid number of num_platforms\n");
+ return false;
+ }
+
+ std::vector<cl_platform_id> platforms(num_platforms);
+
+ ret = clGetPlatformIDs(num_platforms, platforms.data(), NULL);
+ if (ret != CL_SUCCESS)
+ {
+ ocl_error_printf("ocl::init: clGetPlatformIDs() failed\n");
+ return false;
+ }
+
+ cl_uint num_devices = 0;
+ ret = clGetDeviceIDs(platforms[0], CL_DEVICE_TYPE_GPU, 1, &m_device_id, &num_devices);
+
+ if (ret == CL_DEVICE_NOT_FOUND)
+ {
+ ocl_error_printf("ocl::init: Couldn't get any GPU device ID's, trying CL_DEVICE_TYPE_CPU\n");
+
+ ret = clGetDeviceIDs(platforms[0], CL_DEVICE_TYPE_CPU, 1, &m_device_id, &num_devices);
+ }
+
+ if (ret != CL_SUCCESS)
+ {
+ ocl_error_printf("ocl::init: Unable to get any device ID's\n");
+
+ m_device_id = nullptr;
+ return false;
+ }
+
+ ret = clGetDeviceInfo(m_device_id,
+ CL_DEVICE_SINGLE_FP_CONFIG,
+ sizeof(m_dev_fp_config),
+ &m_dev_fp_config,
+ nullptr);
+ if (ret != CL_SUCCESS)
+ {
+ ocl_error_printf("ocl::init: clGetDeviceInfo() failed\n");
+ return false;
+ }
+
+ char plat_vers[256];
+ size_t rv = 0;
+ ret = clGetPlatformInfo(platforms[0], CL_PLATFORM_VERSION, sizeof(plat_vers), plat_vers, &rv);
+ if (ret == CL_SUCCESS)
+ printf("OpenCL platform version: \"%s\"\n", plat_vers);
+
+ // Serialize CL calls with the AMD driver to avoid lockups when multiple command queues per thread are used. This sucks, but what can we do?
+ m_use_mutex = (strstr(plat_vers, "AMD") != nullptr) || force_serialization;
+
+ printf("Serializing OpenCL calls across threads: %u\n", (uint32_t)m_use_mutex);
+
+ m_context = clCreateContext(nullptr, 1, &m_device_id, nullptr, nullptr, &ret);
+ if (ret != CL_SUCCESS)
+ {
+ ocl_error_printf("ocl::init: clCreateContext() failed\n");
+
+ m_device_id = nullptr;
+ m_context = nullptr;
+ return false;
+ }
+
+ m_command_queue = clCreateCommandQueue(m_context, m_device_id, 0, &ret);
+ if (ret != CL_SUCCESS)
+ {
+ ocl_error_printf("ocl::init: clCreateCommandQueue() failed\n");
+
+ deinit();
+ return false;
+ }
+
+ printf("OpenCL init time: %3.3f secs\n", tm.get_elapsed_secs());
+
+ return true;
+ }
+
+ bool deinit()
+ {
+ if (m_program)
+ {
+ clReleaseProgram(m_program);
+ m_program = nullptr;
+ }
+
+ if (m_command_queue)
+ {
+ clReleaseCommandQueue(m_command_queue);
+ m_command_queue = nullptr;
+ }
+
+ if (m_context)
+ {
+ clReleaseContext(m_context);
+ m_context = nullptr;
+ }
+
+ m_device_id = nullptr;
+
+ return true;
+ }
+
+ cl_command_queue create_command_queue()
+ {
+ cl_serializer serializer(this);
+
+ cl_int ret = 0;
+ cl_command_queue p = clCreateCommandQueue(m_context, m_device_id, 0, &ret);
+ if (ret != CL_SUCCESS)
+ return nullptr;
+
+ return p;
+ }
+
+ void destroy_command_queue(cl_command_queue p)
+ {
+ if (p)
+ {
+ cl_serializer serializer(this);
+
+ clReleaseCommandQueue(p);
+ }
+ }
+
+ bool init_program(const char* pSrc, size_t src_size)
+ {
+ cl_int ret;
+
+ if (m_program != nullptr)
+ {
+ clReleaseProgram(m_program);
+ m_program = nullptr;
+ }
+
+ m_program = clCreateProgramWithSource(m_context, 1, (const char**)&pSrc, (const size_t*)&src_size, &ret);
+ if (ret != CL_SUCCESS)
+ {
+ ocl_error_printf("ocl::init_program: clCreateProgramWithSource() failed!\n");
+ return false;
+ }
+
+ std::string options;
+ if (m_dev_fp_config & CL_FP_CORRECTLY_ROUNDED_DIVIDE_SQRT)
+ {
+ options += "-cl-fp32-correctly-rounded-divide-sqrt";
+ }
+
+ options += " -cl-std=CL1.2";
+ //options += " -cl-opt-disable";
+ //options += " -cl-mad-enable";
+ //options += " -cl-fast-relaxed-math";
+
+ ret = clBuildProgram(m_program, 1, &m_device_id,
+ options.size() ? options.c_str() : nullptr, // options
+ nullptr, // notify
+ nullptr); // user_data
+
+ if (ret != CL_SUCCESS)
+ {
+ const cl_int build_program_result = ret;
+
+ size_t ret_val_size;
+ ret = clGetProgramBuildInfo(m_program, m_device_id, CL_PROGRAM_BUILD_LOG, 0, NULL, &ret_val_size);
+ if (ret != CL_SUCCESS)
+ {
+ ocl_error_printf("ocl::init_program: clGetProgramBuildInfo() failed!\n");
+ return false;
+ }
+
+ std::vector<char> build_log(ret_val_size + 1);
+
+ ret = clGetProgramBuildInfo(m_program, m_device_id, CL_PROGRAM_BUILD_LOG, ret_val_size, build_log.data(), NULL);
+
+ ocl_error_printf("\nclBuildProgram() failed with error %i:\n%s", build_program_result, build_log.data());
+
+ return false;
+ }
+
+ return true;
+ }
+
+ cl_kernel create_kernel(const char* pName)
+ {
+ if (!m_program)
+ return nullptr;
+
+ cl_serializer serializer(this);
+
+ cl_int ret;
+ cl_kernel kernel = clCreateKernel(m_program, pName, &ret);
+ if (ret != CL_SUCCESS)
+ {
+ ocl_error_printf("ocl::create_kernel: clCreateKernel() failed!\n");
+ return nullptr;
+ }
+
+ return kernel;
+ }
+
+ bool destroy_kernel(cl_kernel k)
+ {
+ if (k)
+ {
+ cl_serializer serializer(this);
+
+ cl_int ret = clReleaseKernel(k);
+ if (ret != CL_SUCCESS)
+ {
+ ocl_error_printf("ocl::destroy_kernel: clReleaseKernel() failed!\n");
+ return false;
+ }
+ }
+ return true;
+ }
+
+ cl_mem alloc_read_buffer(size_t size)
+ {
+ cl_serializer serializer(this);
+
+ cl_int ret;
+ cl_mem obj = clCreateBuffer(m_context, CL_MEM_READ_ONLY, size, NULL, &ret);
+ if (ret != CL_SUCCESS)
+ {
+ ocl_error_printf("ocl::alloc_read_buffer: clCreateBuffer() failed!\n");
+ return nullptr;
+ }
+
+ return obj;
+ }
+
+ cl_mem alloc_and_init_read_buffer(cl_command_queue command_queue, const void *pInit, size_t size)
+ {
+ cl_serializer serializer(this);
+
+ cl_int ret;
+ cl_mem obj = clCreateBuffer(m_context, CL_MEM_READ_ONLY, size, NULL, &ret);
+ if (ret != CL_SUCCESS)
+ {
+ ocl_error_printf("ocl::alloc_and_init_read_buffer: clCreateBuffer() failed!\n");
+ return nullptr;
+ }
+
+#if 0
+ if (!write_to_buffer(command_queue, obj, pInit, size))
+ {
+ destroy_buffer(obj);
+ return nullptr;
+ }
+#else
+ ret = clEnqueueWriteBuffer(command_queue, obj, CL_TRUE, 0, size, pInit, 0, NULL, NULL);
+ if (ret != CL_SUCCESS)
+ {
+ ocl_error_printf("ocl::alloc_and_init_read_buffer: clEnqueueWriteBuffer() failed!\n");
+ return nullptr;
+ }
+#endif
+
+ return obj;
+ }
+
+ cl_mem alloc_write_buffer(size_t size)
+ {
+ cl_serializer serializer(this);
+
+ cl_int ret;
+ cl_mem obj = clCreateBuffer(m_context, CL_MEM_WRITE_ONLY, size, NULL, &ret);
+ if (ret != CL_SUCCESS)
+ {
+ ocl_error_printf("ocl::alloc_write_buffer: clCreateBuffer() failed!\n");
+ return nullptr;
+ }
+
+ return obj;
+ }
+
+ bool destroy_buffer(cl_mem buf)
+ {
+ if (buf)
+ {
+ cl_serializer serializer(this);
+
+ cl_int ret = clReleaseMemObject(buf);
+ if (ret != CL_SUCCESS)
+ {
+ ocl_error_printf("ocl::destroy_buffer: clReleaseMemObject() failed!\n");
+ return false;
+ }
+ }
+
+ return true;
+ }
+
+ bool write_to_buffer(cl_command_queue command_queue, cl_mem clmem, const void* d, const size_t m)
+ {
+ cl_serializer serializer(this);
+
+ cl_int ret = clEnqueueWriteBuffer(command_queue, clmem, CL_TRUE, 0, m, d, 0, NULL, NULL);
+ if (ret != CL_SUCCESS)
+ {
+ ocl_error_printf("ocl::write_to_buffer: clEnqueueWriteBuffer() failed!\n");
+ return false;
+ }
+
+ return true;
+ }
+
+ bool read_from_buffer(cl_command_queue command_queue, const cl_mem clmem, void* d, size_t m)
+ {
+ cl_serializer serializer(this);
+
+ cl_int ret = clEnqueueReadBuffer(command_queue, clmem, CL_TRUE, 0, m, d, 0, NULL, NULL);
+ if (ret != CL_SUCCESS)
+ {
+ ocl_error_printf("ocl::read_from_buffer: clEnqueueReadBuffer() failed!\n");
+ return false;
+ }
+
+ return true;
+ }
+
+ cl_mem create_read_image_u8(uint32_t width, uint32_t height, const void* pPixels, uint32_t bytes_per_pixel, bool normalized)
+ {
+ cl_image_format fmt = get_image_format(bytes_per_pixel, normalized);
+
+ cl_image_desc desc;
+ memset(&desc, 0, sizeof(desc));
+ desc.image_type = CL_MEM_OBJECT_IMAGE2D;
+ desc.image_width = width;
+ desc.image_height = height;
+ desc.image_row_pitch = width * bytes_per_pixel;
+
+ cl_serializer serializer(this);
+
+ cl_int ret;
+ cl_mem img = clCreateImage(m_context, CL_MEM_READ_ONLY | CL_MEM_COPY_HOST_PTR, &fmt, &desc, (void*)pPixels, &ret);
+ if (ret != CL_SUCCESS)
+ {
+ ocl_error_printf("ocl::create_read_image_u8: clCreateImage() failed!\n");
+ return nullptr;
+ }
+
+ return img;
+ }
+
+ cl_mem create_write_image_u8(uint32_t width, uint32_t height, uint32_t bytes_per_pixel, bool normalized)
+ {
+ cl_image_format fmt = get_image_format(bytes_per_pixel, normalized);
+
+ cl_image_desc desc;
+ memset(&desc, 0, sizeof(desc));
+ desc.image_type = CL_MEM_OBJECT_IMAGE2D;
+ desc.image_width = width;
+ desc.image_height = height;
+
+ cl_serializer serializer(this);
+
+ cl_int ret;
+ cl_mem img = clCreateImage(m_context, CL_MEM_WRITE_ONLY, &fmt, &desc, nullptr, &ret);
+ if (ret != CL_SUCCESS)
+ {
+ ocl_error_printf("ocl::create_write_image_u8: clCreateImage() failed!\n");
+ return nullptr;
+ }
+
+ return img;
+ }
+
+ bool read_from_image(cl_command_queue command_queue, cl_mem img, void* pPixels, uint32_t ofs_x, uint32_t ofs_y, uint32_t width, uint32_t height)
+ {
+ cl_serializer serializer(this);
+
+ size_t origin[3] = { ofs_x, ofs_y, 0 }, region[3] = { width, height, 1 };
+
+ cl_int err = clEnqueueReadImage(command_queue, img, CL_TRUE, origin, region, 0, 0, pPixels, 0, NULL, NULL);
+ if (err != CL_SUCCESS)
+ {
+ ocl_error_printf("ocl::read_from_image: clEnqueueReadImage() failed!\n");
+ return false;
+ }
+
+ return true;
+ }
+
+ bool run_1D(cl_command_queue command_queue, const cl_kernel kernel, size_t num_items)
+ {
+ cl_serializer serializer(this);
+
+ cl_int ret = clEnqueueNDRangeKernel(command_queue, kernel,
+ 1, // work_dim
+ nullptr, // global_work_offset
+ &num_items, // global_work_size
+ nullptr, // local_work_size
+ 0, // num_events_in_wait_list
+ nullptr, // event_wait_list
+ nullptr // event
+ );
+
+ if (ret != CL_SUCCESS)
+ {
+ ocl_error_printf("ocl::run_1D: clEnqueueNDRangeKernel() failed!\n");
+ return false;
+ }
+
+ return true;
+ }
+
+ bool run_2D(cl_command_queue command_queue, const cl_kernel kernel, size_t width, size_t height)
+ {
+ cl_serializer serializer(this);
+
+ size_t num_global_items[2] = { width, height };
+ //size_t num_local_items[2] = { 1, 1 };
+
+ cl_int ret = clEnqueueNDRangeKernel(command_queue, kernel,
+ 2, // work_dim
+ nullptr, // global_work_offset
+ num_global_items, // global_work_size
+ nullptr, // local_work_size
+ 0, // num_events_in_wait_list
+ nullptr, // event_wait_list
+ nullptr // event
+ );
+
+ if (ret != CL_SUCCESS)
+ {
+ ocl_error_printf("ocl::run_2D: clEnqueueNDRangeKernel() failed!\n");
+ return false;
+ }
+
+ return true;
+ }
+
+ bool run_2D(cl_command_queue command_queue, const cl_kernel kernel, size_t ofs_x, size_t ofs_y, size_t width, size_t height)
+ {
+ cl_serializer serializer(this);
+
+ size_t global_ofs[2] = { ofs_x, ofs_y };
+ size_t num_global_items[2] = { width, height };
+ //size_t num_local_items[2] = { 1, 1 };
+
+ cl_int ret = clEnqueueNDRangeKernel(command_queue, kernel,
+ 2, // work_dim
+ global_ofs, // global_work_offset
+ num_global_items, // global_work_size
+ nullptr, // local_work_size
+ 0, // num_events_in_wait_list
+ nullptr, // event_wait_list
+ nullptr // event
+ );
+
+ if (ret != CL_SUCCESS)
+ {
+ ocl_error_printf("ocl::run_2D: clEnqueueNDRangeKernel() failed!\n");
+ return false;
+ }
+
+ return true;
+ }
+
+ void flush(cl_command_queue command_queue)
+ {
+ cl_serializer serializer(this);
+
+ clFlush(command_queue);
+ clFinish(command_queue);
+ }
+
+ template<typename T>
+ bool set_kernel_arg(cl_kernel kernel, uint32_t index, const T& obj)
+ {
+ cl_serializer serializer(this);
+
+ cl_int ret = clSetKernelArg(kernel, index, sizeof(T), (void*)&obj);
+ if (ret != CL_SUCCESS)
+ {
+ ocl_error_printf("ocl::set_kernel_arg: clSetKernelArg() failed!\n");
+ return false;
+ }
+ return true;
+ }
+
+ template<typename T>
+ bool set_kernel_args(cl_kernel kernel, const T& obj1)
+ {
+ cl_serializer serializer(this);
+
+ cl_int ret = clSetKernelArg(kernel, 0, sizeof(T), (void*)&obj1);
+ if (ret != CL_SUCCESS)
+ {
+ ocl_error_printf("ocl::set_kernel_arg: clSetKernelArg() failed!\n");
+ return false;
+ }
+ return true;
+ }
+
+#define BASISU_CHECK_ERR if (ret != CL_SUCCESS) { ocl_error_printf("ocl::set_kernel_args: clSetKernelArg() failed!\n"); return false; }
+
+ template<typename T, typename U>
+ bool set_kernel_args(cl_kernel kernel, const T& obj1, const U& obj2)
+ {
+ cl_serializer serializer(this);
+ cl_int ret = clSetKernelArg(kernel, 0, sizeof(T), (void*)&obj1); BASISU_CHECK_ERR
+ ret = clSetKernelArg(kernel, 1, sizeof(U), (void*)&obj2); BASISU_CHECK_ERR
+ return true;
+ }
+
+ template<typename T, typename U, typename V>
+ bool set_kernel_args(cl_kernel kernel, const T& obj1, const U& obj2, const V& obj3)
+ {
+ cl_serializer serializer(this);
+ cl_int ret = clSetKernelArg(kernel, 0, sizeof(T), (void*)&obj1); BASISU_CHECK_ERR
+ ret = clSetKernelArg(kernel, 1, sizeof(U), (void*)&obj2); BASISU_CHECK_ERR
+ ret = clSetKernelArg(kernel, 2, sizeof(V), (void*)&obj3); BASISU_CHECK_ERR
+ return true;
+ }
+
+ template<typename T, typename U, typename V, typename W>
+ bool set_kernel_args(cl_kernel kernel, const T& obj1, const U& obj2, const V& obj3, const W& obj4)
+ {
+ cl_serializer serializer(this);
+ cl_int ret = clSetKernelArg(kernel, 0, sizeof(T), (void*)&obj1); BASISU_CHECK_ERR
+ ret = clSetKernelArg(kernel, 1, sizeof(U), (void*)&obj2); BASISU_CHECK_ERR
+ ret = clSetKernelArg(kernel, 2, sizeof(V), (void*)&obj3); BASISU_CHECK_ERR
+ ret = clSetKernelArg(kernel, 3, sizeof(W), (void*)&obj4); BASISU_CHECK_ERR
+ return true;
+ }
+
+ template<typename T, typename U, typename V, typename W, typename X>
+ bool set_kernel_args(cl_kernel kernel, const T& obj1, const U& obj2, const V& obj3, const W& obj4, const X& obj5)
+ {
+ cl_serializer serializer(this);
+ cl_int ret = clSetKernelArg(kernel, 0, sizeof(T), (void*)&obj1); BASISU_CHECK_ERR
+ ret = clSetKernelArg(kernel, 1, sizeof(U), (void*)&obj2); BASISU_CHECK_ERR
+ ret = clSetKernelArg(kernel, 2, sizeof(V), (void*)&obj3); BASISU_CHECK_ERR
+ ret = clSetKernelArg(kernel, 3, sizeof(W), (void*)&obj4); BASISU_CHECK_ERR
+ ret = clSetKernelArg(kernel, 4, sizeof(X), (void*)&obj5); BASISU_CHECK_ERR
+ return true;
+ }
+
+ template<typename T, typename U, typename V, typename W, typename X, typename Y>
+ bool set_kernel_args(cl_kernel kernel, const T& obj1, const U& obj2, const V& obj3, const W& obj4, const X& obj5, const Y& obj6)
+ {
+ cl_serializer serializer(this);
+ cl_int ret = clSetKernelArg(kernel, 0, sizeof(T), (void*)&obj1); BASISU_CHECK_ERR
+ ret = clSetKernelArg(kernel, 1, sizeof(U), (void*)&obj2); BASISU_CHECK_ERR
+ ret = clSetKernelArg(kernel, 2, sizeof(V), (void*)&obj3); BASISU_CHECK_ERR
+ ret = clSetKernelArg(kernel, 3, sizeof(W), (void*)&obj4); BASISU_CHECK_ERR
+ ret = clSetKernelArg(kernel, 4, sizeof(X), (void*)&obj5); BASISU_CHECK_ERR
+ ret = clSetKernelArg(kernel, 5, sizeof(Y), (void*)&obj6); BASISU_CHECK_ERR
+ return true;
+ }
+
+ template<typename T, typename U, typename V, typename W, typename X, typename Y, typename Z>
+ bool set_kernel_args(cl_kernel kernel, const T& obj1, const U& obj2, const V& obj3, const W& obj4, const X& obj5, const Y& obj6, const Z& obj7)
+ {
+ cl_serializer serializer(this);
+ cl_int ret = clSetKernelArg(kernel, 0, sizeof(T), (void*)&obj1); BASISU_CHECK_ERR
+ ret = clSetKernelArg(kernel, 1, sizeof(U), (void*)&obj2); BASISU_CHECK_ERR
+ ret = clSetKernelArg(kernel, 2, sizeof(V), (void*)&obj3); BASISU_CHECK_ERR
+ ret = clSetKernelArg(kernel, 3, sizeof(W), (void*)&obj4); BASISU_CHECK_ERR
+ ret = clSetKernelArg(kernel, 4, sizeof(X), (void*)&obj5); BASISU_CHECK_ERR
+ ret = clSetKernelArg(kernel, 5, sizeof(Y), (void*)&obj6); BASISU_CHECK_ERR
+ ret = clSetKernelArg(kernel, 6, sizeof(Z), (void*)&obj7); BASISU_CHECK_ERR
+ return true;
+ }
+
+ template<typename T, typename U, typename V, typename W, typename X, typename Y, typename Z, typename A>
+ bool set_kernel_args(cl_kernel kernel, const T& obj1, const U& obj2, const V& obj3, const W& obj4, const X& obj5, const Y& obj6, const Z& obj7, const A& obj8)
+ {
+ cl_serializer serializer(this);
+ cl_int ret = clSetKernelArg(kernel, 0, sizeof(T), (void*)&obj1); BASISU_CHECK_ERR
+ ret = clSetKernelArg(kernel, 1, sizeof(U), (void*)&obj2); BASISU_CHECK_ERR
+ ret = clSetKernelArg(kernel, 2, sizeof(V), (void*)&obj3); BASISU_CHECK_ERR
+ ret = clSetKernelArg(kernel, 3, sizeof(W), (void*)&obj4); BASISU_CHECK_ERR
+ ret = clSetKernelArg(kernel, 4, sizeof(X), (void*)&obj5); BASISU_CHECK_ERR
+ ret = clSetKernelArg(kernel, 5, sizeof(Y), (void*)&obj6); BASISU_CHECK_ERR
+ ret = clSetKernelArg(kernel, 6, sizeof(Z), (void*)&obj7); BASISU_CHECK_ERR
+ ret = clSetKernelArg(kernel, 7, sizeof(A), (void*)&obj8); BASISU_CHECK_ERR
+ return true;
+ }
+#undef BASISU_CHECK_ERR
+
+ private:
+ cl_device_id m_device_id = nullptr;
+ cl_context m_context = nullptr;
+ cl_command_queue m_command_queue = nullptr;
+ cl_program m_program = nullptr;
+ cl_device_fp_config m_dev_fp_config;
+
+ bool m_use_mutex = false;
+ std::mutex m_ocl_mutex;
+
+ // This helper object is used to optionally serialize all calls to the CL driver after initialization.
+ // Currently this is only used to work around race conditions in the Windows AMD driver.
+ struct cl_serializer
+ {
+ inline cl_serializer(const cl_serializer&);
+ cl_serializer& operator= (const cl_serializer&);
+
+ inline cl_serializer(ocl *p) : m_p(p)
+ {
+ if (m_p->m_use_mutex)
+ m_p->m_ocl_mutex.lock();
+ }
+
+ inline ~cl_serializer()
+ {
+ if (m_p->m_use_mutex)
+ m_p->m_ocl_mutex.unlock();
+ }
+
+ private:
+ ocl* m_p;
+ };
+
+ cl_image_format get_image_format(uint32_t bytes_per_pixel, bool normalized)
+ {
+ cl_image_format fmt;
+ switch (bytes_per_pixel)
+ {
+ case 1: fmt.image_channel_order = CL_LUMINANCE; break;
+ case 2: fmt.image_channel_order = CL_RG; break;
+ case 3: fmt.image_channel_order = CL_RGB; break;
+ case 4: fmt.image_channel_order = CL_RGBA; break;
+ default: assert(0); fmt.image_channel_order = CL_LUMINANCE; break;
+ }
+
+ fmt.image_channel_data_type = normalized ? CL_UNORM_INT8 : CL_UNSIGNED_INT8;
+ return fmt;
+ }
+ };
+
+ // Library blobal state
+ ocl g_ocl;
+
+ bool opencl_init(bool force_serialization)
+ {
+ if (g_ocl.is_initialized())
+ {
+ assert(0);
+ return false;
+ }
+
+ if (!g_ocl.init(force_serialization))
+ {
+ ocl_error_printf("opencl_init: Failed initializing OpenCL\n");
+ return false;
+ }
+
+ const char* pKernel_src = nullptr;
+ size_t kernel_src_size = 0;
+ uint8_vec kernel_src;
+
+#if BASISU_USE_OCL_KERNELS_HEADER
+ pKernel_src = reinterpret_cast<const char*>(ocl_kernels_cl);
+ kernel_src_size = ocl_kernels_cl_len;
+#else
+ if (!read_file_to_vec(BASISU_OCL_KERNELS_FILENAME, kernel_src))
+ {
+ ocl_error_printf("opencl_init: Cannot read OpenCL kernel source file \"%s\"\n", BASISU_OCL_KERNELS_FILENAME);
+ g_ocl.deinit();
+ return false;
+ }
+
+ pKernel_src = (char*)kernel_src.data();
+ kernel_src_size = kernel_src.size();
+#endif
+
+ if (!kernel_src_size)
+ {
+ ocl_error_printf("opencl_init: Invalid OpenCL kernel source file \"%s\"\n", BASISU_OCL_KERNELS_FILENAME);
+ g_ocl.deinit();
+ return false;
+ }
+
+ if (!g_ocl.init_program(pKernel_src, kernel_src_size))
+ {
+ ocl_error_printf("opencl_init: Failed compiling OpenCL program\n");
+ g_ocl.deinit();
+ return false;
+ }
+
+ printf("OpenCL support initialized successfully\n");
+
+ return true;
+ }
+
+ void opencl_deinit()
+ {
+ g_ocl.deinit();
+ }
+
+ bool opencl_is_available()
+ {
+ return g_ocl.is_initialized();
+ }
+
+ struct opencl_context
+ {
+ uint32_t m_ocl_total_pixel_blocks;
+ cl_mem m_ocl_pixel_blocks;
+
+ cl_command_queue m_command_queue;
+
+ cl_kernel m_ocl_encode_etc1s_blocks_kernel;
+ cl_kernel m_ocl_refine_endpoint_clusterization_kernel;
+ cl_kernel m_ocl_encode_etc1s_from_pixel_cluster_kernel;
+ cl_kernel m_ocl_find_optimal_selector_clusters_for_each_block_kernel;
+ cl_kernel m_ocl_determine_selectors_kernel;
+ };
+
+ opencl_context_ptr opencl_create_context()
+ {
+ if (!opencl_is_available())
+ {
+ ocl_error_printf("opencl_create_context: OpenCL not initialized\n");
+ assert(0);
+ return nullptr;
+ }
+
+ interval_timer tm;
+ tm.start();
+
+ opencl_context* pContext = static_cast<opencl_context * >(calloc(sizeof(opencl_context), 1));
+ if (!pContext)
+ return nullptr;
+
+ // To avoid driver bugs in some drivers - serialize this. Likely not necessary, we don't know.
+ // https://community.intel.com/t5/OpenCL-for-CPU/Bug-report-clCreateKernelsInProgram-is-not-thread-safe/td-p/1159771
+
+ pContext->m_command_queue = g_ocl.create_command_queue();
+ if (!pContext->m_command_queue)
+ {
+ ocl_error_printf("opencl_create_context: Failed creating OpenCL command queue!\n");
+ opencl_destroy_context(pContext);
+ return nullptr;
+ }
+
+ pContext->m_ocl_encode_etc1s_blocks_kernel = g_ocl.create_kernel("encode_etc1s_blocks");
+ if (!pContext->m_ocl_encode_etc1s_blocks_kernel)
+ {
+ ocl_error_printf("opencl_create_context: Failed creating OpenCL kernel encode_etc1s_block\n");
+ opencl_destroy_context(pContext);
+ return nullptr;
+ }
+
+ pContext->m_ocl_refine_endpoint_clusterization_kernel = g_ocl.create_kernel("refine_endpoint_clusterization");
+ if (!pContext->m_ocl_refine_endpoint_clusterization_kernel)
+ {
+ ocl_error_printf("opencl_create_context: Failed creating OpenCL kernel refine_endpoint_clusterization\n");
+ opencl_destroy_context(pContext);
+ return nullptr;
+ }
+
+ pContext->m_ocl_encode_etc1s_from_pixel_cluster_kernel = g_ocl.create_kernel("encode_etc1s_from_pixel_cluster");
+ if (!pContext->m_ocl_encode_etc1s_from_pixel_cluster_kernel)
+ {
+ ocl_error_printf("opencl_create_context: Failed creating OpenCL kernel encode_etc1s_from_pixel_cluster\n");
+ opencl_destroy_context(pContext);
+ return nullptr;
+ }
+
+ pContext->m_ocl_find_optimal_selector_clusters_for_each_block_kernel = g_ocl.create_kernel("find_optimal_selector_clusters_for_each_block");
+ if (!pContext->m_ocl_find_optimal_selector_clusters_for_each_block_kernel)
+ {
+ ocl_error_printf("opencl_create_context: Failed creating OpenCL kernel find_optimal_selector_clusters_for_each_block\n");
+ opencl_destroy_context(pContext);
+ return nullptr;
+ }
+
+ pContext->m_ocl_determine_selectors_kernel = g_ocl.create_kernel("determine_selectors");
+ if (!pContext->m_ocl_determine_selectors_kernel)
+ {
+ ocl_error_printf("opencl_create_context: Failed creating OpenCL kernel determine_selectors\n");
+ opencl_destroy_context(pContext);
+ return nullptr;
+ }
+
+ debug_printf("opencl_create_context: Elapsed time: %f secs\n", tm.get_elapsed_secs());
+
+ return pContext;
+ }
+
+ void opencl_destroy_context(opencl_context_ptr pContext)
+ {
+ if (!pContext)
+ return;
+
+ interval_timer tm;
+ tm.start();
+
+ g_ocl.destroy_buffer(pContext->m_ocl_pixel_blocks);
+
+ g_ocl.destroy_kernel(pContext->m_ocl_determine_selectors_kernel);
+ g_ocl.destroy_kernel(pContext->m_ocl_find_optimal_selector_clusters_for_each_block_kernel);
+ g_ocl.destroy_kernel(pContext->m_ocl_encode_etc1s_from_pixel_cluster_kernel);
+ g_ocl.destroy_kernel(pContext->m_ocl_encode_etc1s_blocks_kernel);
+ g_ocl.destroy_kernel(pContext->m_ocl_refine_endpoint_clusterization_kernel);
+
+ g_ocl.destroy_command_queue(pContext->m_command_queue);
+
+ memset(pContext, 0, sizeof(opencl_context));
+
+ free(pContext);
+
+ debug_printf("opencl_destroy_context: Elapsed time: %f secs\n", tm.get_elapsed_secs());
+ }
+
+#pragma pack(push, 1)
+ struct cl_encode_etc1s_param_struct
+ {
+ int m_total_blocks;
+ int m_perceptual;
+ int m_total_perms;
+ };
+#pragma pack(pop)
+
+ bool opencl_set_pixel_blocks(opencl_context_ptr pContext, uint32_t total_blocks, const cl_pixel_block* pPixel_blocks)
+ {
+ if (!opencl_is_available())
+ return false;
+
+ if (pContext->m_ocl_pixel_blocks)
+ {
+ g_ocl.destroy_buffer(pContext->m_ocl_pixel_blocks);
+ pContext->m_ocl_pixel_blocks = nullptr;
+ }
+
+ pContext->m_ocl_pixel_blocks = g_ocl.alloc_and_init_read_buffer(pContext->m_command_queue, pPixel_blocks, sizeof(cl_pixel_block) * total_blocks);
+ if (!pContext->m_ocl_pixel_blocks)
+ return false;
+
+ pContext->m_ocl_total_pixel_blocks = total_blocks;
+
+ return true;
+ }
+
+ bool opencl_encode_etc1s_blocks(opencl_context_ptr pContext, etc_block* pOutput_blocks, bool perceptual, uint32_t total_perms)
+ {
+ if (!opencl_is_available())
+ return false;
+
+ interval_timer tm;
+ tm.start();
+
+ assert(pContext->m_ocl_pixel_blocks);
+ if (!pContext->m_ocl_pixel_blocks)
+ return false;
+
+ cl_encode_etc1s_param_struct ps;
+ ps.m_total_blocks = pContext->m_ocl_total_pixel_blocks;
+ ps.m_perceptual = perceptual;
+ ps.m_total_perms = total_perms;
+
+ bool status = false;
+
+ cl_mem vars = g_ocl.alloc_and_init_read_buffer(pContext->m_command_queue , &ps, sizeof(ps));
+ cl_mem block_buf = g_ocl.alloc_write_buffer(sizeof(etc_block) * pContext->m_ocl_total_pixel_blocks);
+
+ if (!vars || !block_buf)
+ goto exit;
+
+ if (!g_ocl.set_kernel_args(pContext->m_ocl_encode_etc1s_blocks_kernel, vars, pContext->m_ocl_pixel_blocks, block_buf))
+ goto exit;
+
+ if (!g_ocl.run_2D(pContext->m_command_queue, pContext->m_ocl_encode_etc1s_blocks_kernel, pContext->m_ocl_total_pixel_blocks, 1))
+ goto exit;
+
+ if (!g_ocl.read_from_buffer(pContext->m_command_queue, block_buf, pOutput_blocks, pContext->m_ocl_total_pixel_blocks * sizeof(etc_block)))
+ goto exit;
+
+ status = true;
+
+ debug_printf("opencl_encode_etc1s_blocks: Elapsed time: %3.3f secs\n", tm.get_elapsed_secs());
+
+exit:
+ g_ocl.destroy_buffer(block_buf);
+ g_ocl.destroy_buffer(vars);
+
+ return status;
+ }
+
+ bool opencl_encode_etc1s_pixel_clusters(
+ opencl_context_ptr pContext,
+ etc_block* pOutput_blocks,
+ uint32_t total_clusters,
+ const cl_pixel_cluster* pClusters,
+ uint64_t total_pixels,
+ const color_rgba* pPixels, const uint32_t* pPixel_weights,
+ bool perceptual, uint32_t total_perms)
+ {
+ if (!opencl_is_available())
+ return false;
+
+ interval_timer tm;
+ tm.start();
+
+ cl_encode_etc1s_param_struct ps;
+ ps.m_total_blocks = total_clusters;
+ ps.m_perceptual = perceptual;
+ ps.m_total_perms = total_perms;
+
+ bool status = false;
+
+ if (sizeof(size_t) == sizeof(uint32_t))
+ {
+ if ( ((sizeof(cl_pixel_cluster) * total_clusters) > UINT32_MAX) ||
+ ((sizeof(color_rgba) * total_pixels) > UINT32_MAX) ||
+ ((sizeof(uint32_t) * total_pixels) > UINT32_MAX) )
+ {
+ return false;
+ }
+ }
+
+ cl_mem vars = g_ocl.alloc_and_init_read_buffer(pContext->m_command_queue , &ps, sizeof(ps));
+ cl_mem input_clusters = g_ocl.alloc_and_init_read_buffer(pContext->m_command_queue, pClusters, (size_t)(sizeof(cl_pixel_cluster) * total_clusters));
+ cl_mem input_pixels = g_ocl.alloc_and_init_read_buffer(pContext->m_command_queue, pPixels, (size_t)(sizeof(color_rgba) * total_pixels));
+ cl_mem weights_buf = g_ocl.alloc_and_init_read_buffer(pContext->m_command_queue, pPixel_weights, (size_t)(sizeof(uint32_t) * total_pixels));
+ cl_mem block_buf = g_ocl.alloc_write_buffer(sizeof(etc_block) * total_clusters);
+
+ if (!vars || !input_clusters || !input_pixels || !weights_buf || !block_buf)
+ goto exit;
+
+ if (!g_ocl.set_kernel_args(pContext->m_ocl_encode_etc1s_from_pixel_cluster_kernel, vars, input_clusters, input_pixels, weights_buf, block_buf))
+ goto exit;
+
+ if (!g_ocl.run_2D(pContext->m_command_queue, pContext->m_ocl_encode_etc1s_from_pixel_cluster_kernel, total_clusters, 1))
+ goto exit;
+
+ if (!g_ocl.read_from_buffer(pContext->m_command_queue, block_buf, pOutput_blocks, sizeof(etc_block) * total_clusters))
+ goto exit;
+
+ status = true;
+
+ debug_printf("opencl_encode_etc1s_pixel_clusters: Elapsed time: %3.3f secs\n", tm.get_elapsed_secs());
+
+ exit:
+ g_ocl.destroy_buffer(block_buf);
+ g_ocl.destroy_buffer(weights_buf);
+ g_ocl.destroy_buffer(input_pixels);
+ g_ocl.destroy_buffer(input_clusters);
+ g_ocl.destroy_buffer(vars);
+
+ return status;
+ }
+
+#pragma pack(push, 1)
+ struct cl_rec_param_struct
+ {
+ int m_total_blocks;
+ int m_perceptual;
+ };
+#pragma pack(pop)
+
+ bool opencl_refine_endpoint_clusterization(
+ opencl_context_ptr pContext,
+ const cl_block_info_struct* pPixel_block_info,
+ uint32_t total_clusters,
+ const cl_endpoint_cluster_struct* pCluster_info,
+ const uint32_t* pSorted_block_indices,
+ uint32_t* pOutput_cluster_indices,
+ bool perceptual)
+ {
+ if (!opencl_is_available())
+ return false;
+
+ interval_timer tm;
+ tm.start();
+
+ assert(pContext->m_ocl_pixel_blocks);
+ if (!pContext->m_ocl_pixel_blocks)
+ return false;
+
+ cl_rec_param_struct ps;
+ ps.m_total_blocks = pContext->m_ocl_total_pixel_blocks;
+ ps.m_perceptual = perceptual;
+
+ bool status = false;
+
+ cl_mem pixel_block_info = g_ocl.alloc_and_init_read_buffer(pContext->m_command_queue, pPixel_block_info, sizeof(cl_block_info_struct) * pContext->m_ocl_total_pixel_blocks);
+ cl_mem cluster_info = g_ocl.alloc_and_init_read_buffer(pContext->m_command_queue, pCluster_info, sizeof(cl_endpoint_cluster_struct) * total_clusters);
+ cl_mem sorted_block_indices = g_ocl.alloc_and_init_read_buffer(pContext->m_command_queue, pSorted_block_indices, sizeof(uint32_t) * pContext->m_ocl_total_pixel_blocks);
+ cl_mem output_buf = g_ocl.alloc_write_buffer(sizeof(uint32_t) * pContext->m_ocl_total_pixel_blocks);
+
+ if (!pixel_block_info || !cluster_info || !sorted_block_indices || !output_buf)
+ goto exit;
+
+ if (!g_ocl.set_kernel_args(pContext->m_ocl_refine_endpoint_clusterization_kernel, ps, pContext->m_ocl_pixel_blocks, pixel_block_info, cluster_info, sorted_block_indices, output_buf))
+ goto exit;
+
+ if (!g_ocl.run_2D(pContext->m_command_queue, pContext->m_ocl_refine_endpoint_clusterization_kernel, pContext->m_ocl_total_pixel_blocks, 1))
+ goto exit;
+
+ if (!g_ocl.read_from_buffer(pContext->m_command_queue, output_buf, pOutput_cluster_indices, pContext->m_ocl_total_pixel_blocks * sizeof(uint32_t)))
+ goto exit;
+
+ debug_printf("opencl_refine_endpoint_clusterization: Elapsed time: %3.3f secs\n", tm.get_elapsed_secs());
+
+ status = true;
+
+exit:
+ g_ocl.destroy_buffer(pixel_block_info);
+ g_ocl.destroy_buffer(cluster_info);
+ g_ocl.destroy_buffer(sorted_block_indices);
+ g_ocl.destroy_buffer(output_buf);
+
+ return status;
+ }
+
+ bool opencl_find_optimal_selector_clusters_for_each_block(
+ opencl_context_ptr pContext,
+ const fosc_block_struct* pInput_block_info, // one per block
+ uint32_t total_input_selectors,
+ const fosc_selector_struct* pInput_selectors,
+ const uint32_t* pSelector_cluster_indices,
+ uint32_t* pOutput_selector_cluster_indices, // one per block
+ bool perceptual)
+ {
+ if (!opencl_is_available())
+ return false;
+
+ interval_timer tm;
+ tm.start();
+
+ assert(pContext->m_ocl_pixel_blocks);
+ if (!pContext->m_ocl_pixel_blocks)
+ return false;
+
+ fosc_param_struct ps;
+ ps.m_total_blocks = pContext->m_ocl_total_pixel_blocks;
+ ps.m_perceptual = perceptual;
+
+ bool status = false;
+
+ cl_mem input_block_info = g_ocl.alloc_and_init_read_buffer(pContext->m_command_queue, pInput_block_info, sizeof(fosc_block_struct) * pContext->m_ocl_total_pixel_blocks);
+ cl_mem input_selectors = g_ocl.alloc_and_init_read_buffer(pContext->m_command_queue, pInput_selectors, sizeof(fosc_selector_struct) * total_input_selectors);
+ cl_mem selector_cluster_indices = g_ocl.alloc_and_init_read_buffer(pContext->m_command_queue, pSelector_cluster_indices, sizeof(uint32_t) * total_input_selectors);
+ cl_mem output_selector_cluster_indices = g_ocl.alloc_write_buffer(sizeof(uint32_t) * pContext->m_ocl_total_pixel_blocks);
+
+ if (!input_block_info || !input_selectors || !selector_cluster_indices || !output_selector_cluster_indices)
+ goto exit;
+
+ if (!g_ocl.set_kernel_args(pContext->m_ocl_find_optimal_selector_clusters_for_each_block_kernel, ps, pContext->m_ocl_pixel_blocks, input_block_info, input_selectors, selector_cluster_indices, output_selector_cluster_indices))
+ goto exit;
+
+ if (!g_ocl.run_2D(pContext->m_command_queue, pContext->m_ocl_find_optimal_selector_clusters_for_each_block_kernel, pContext->m_ocl_total_pixel_blocks, 1))
+ goto exit;
+
+ if (!g_ocl.read_from_buffer(pContext->m_command_queue, output_selector_cluster_indices, pOutput_selector_cluster_indices, pContext->m_ocl_total_pixel_blocks * sizeof(uint32_t)))
+ goto exit;
+
+ debug_printf("opencl_find_optimal_selector_clusters_for_each_block: Elapsed time: %3.3f secs\n", tm.get_elapsed_secs());
+
+ status = true;
+
+ exit:
+ g_ocl.destroy_buffer(input_block_info);
+ g_ocl.destroy_buffer(input_selectors);
+ g_ocl.destroy_buffer(selector_cluster_indices);
+ g_ocl.destroy_buffer(output_selector_cluster_indices);
+
+ return status;
+ }
+
+ bool opencl_determine_selectors(
+ opencl_context_ptr pContext,
+ const color_rgba* pInput_etc_color5_and_inten,
+ etc_block* pOutput_blocks,
+ bool perceptual)
+ {
+ if (!opencl_is_available())
+ return false;
+
+ interval_timer tm;
+ tm.start();
+
+ assert(pContext->m_ocl_pixel_blocks);
+ if (!pContext->m_ocl_pixel_blocks)
+ return false;
+
+ ds_param_struct ps;
+ ps.m_total_blocks = pContext->m_ocl_total_pixel_blocks;
+ ps.m_perceptual = perceptual;
+
+ bool status = false;
+
+ cl_mem input_etc_color5_intens = g_ocl.alloc_and_init_read_buffer(pContext->m_command_queue, pInput_etc_color5_and_inten, sizeof(color_rgba) * pContext->m_ocl_total_pixel_blocks);
+ cl_mem output_blocks = g_ocl.alloc_write_buffer(sizeof(etc_block) * pContext->m_ocl_total_pixel_blocks);
+
+ if (!input_etc_color5_intens || !output_blocks)
+ goto exit;
+
+ if (!g_ocl.set_kernel_args(pContext->m_ocl_determine_selectors_kernel, ps, pContext->m_ocl_pixel_blocks, input_etc_color5_intens, output_blocks))
+ goto exit;
+
+ if (!g_ocl.run_2D(pContext->m_command_queue, pContext->m_ocl_determine_selectors_kernel, pContext->m_ocl_total_pixel_blocks, 1))
+ goto exit;
+
+ if (!g_ocl.read_from_buffer(pContext->m_command_queue, output_blocks, pOutput_blocks, pContext->m_ocl_total_pixel_blocks * sizeof(etc_block)))
+ goto exit;
+
+ debug_printf("opencl_determine_selectors: Elapsed time: %3.3f secs\n", tm.get_elapsed_secs());
+
+ status = true;
+
+ exit:
+ g_ocl.destroy_buffer(input_etc_color5_intens);
+ g_ocl.destroy_buffer(output_blocks);
+
+ return status;
+ }
+
+#else
+namespace basisu
+{
+ // No OpenCL support - all dummy functions that return false;
+ bool opencl_init(bool force_serialization)
+ {
+ BASISU_NOTE_UNUSED(force_serialization);
+
+ return false;
+ }
+
+ void opencl_deinit()
+ {
+ }
+
+ bool opencl_is_available()
+ {
+ return false;
+ }
+
+ opencl_context_ptr opencl_create_context()
+ {
+ return nullptr;
+ }
+
+ void opencl_destroy_context(opencl_context_ptr context)
+ {
+ BASISU_NOTE_UNUSED(context);
+ }
+
+ bool opencl_set_pixel_blocks(opencl_context_ptr pContext, uint32_t total_blocks, const cl_pixel_block* pPixel_blocks)
+ {
+ BASISU_NOTE_UNUSED(pContext);
+ BASISU_NOTE_UNUSED(total_blocks);
+ BASISU_NOTE_UNUSED(pPixel_blocks);
+
+ return false;
+ }
+
+ bool opencl_encode_etc1s_blocks(opencl_context_ptr pContext, etc_block* pOutput_blocks, bool perceptual, uint32_t total_perms)
+ {
+ BASISU_NOTE_UNUSED(pContext);
+ BASISU_NOTE_UNUSED(pOutput_blocks);
+ BASISU_NOTE_UNUSED(perceptual);
+ BASISU_NOTE_UNUSED(total_perms);
+
+ return false;
+ }
+
+ bool opencl_encode_etc1s_pixel_clusters(
+ opencl_context_ptr pContext,
+ etc_block* pOutput_blocks,
+ uint32_t total_clusters,
+ const cl_pixel_cluster* pClusters,
+ uint64_t total_pixels,
+ const color_rgba* pPixels, const uint32_t *pPixel_weights,
+ bool perceptual, uint32_t total_perms)
+ {
+ BASISU_NOTE_UNUSED(pContext);
+ BASISU_NOTE_UNUSED(pOutput_blocks);
+ BASISU_NOTE_UNUSED(total_clusters);
+ BASISU_NOTE_UNUSED(pClusters);
+ BASISU_NOTE_UNUSED(total_pixels);
+ BASISU_NOTE_UNUSED(pPixels);
+ BASISU_NOTE_UNUSED(pPixel_weights);
+ BASISU_NOTE_UNUSED(perceptual);
+ BASISU_NOTE_UNUSED(total_perms);
+
+ return false;
+ }
+
+ bool opencl_refine_endpoint_clusterization(
+ opencl_context_ptr pContext,
+ const cl_block_info_struct* pPixel_block_info,
+ uint32_t total_clusters,
+ const cl_endpoint_cluster_struct* pCluster_info,
+ const uint32_t* pSorted_block_indices,
+ uint32_t* pOutput_cluster_indices,
+ bool perceptual)
+ {
+ BASISU_NOTE_UNUSED(pContext);
+ BASISU_NOTE_UNUSED(pPixel_block_info);
+ BASISU_NOTE_UNUSED(total_clusters);
+ BASISU_NOTE_UNUSED(pCluster_info);
+ BASISU_NOTE_UNUSED(pSorted_block_indices);
+ BASISU_NOTE_UNUSED(pOutput_cluster_indices);
+ BASISU_NOTE_UNUSED(perceptual);
+
+ return false;
+ }
+
+ bool opencl_find_optimal_selector_clusters_for_each_block(
+ opencl_context_ptr pContext,
+ const fosc_block_struct* pInput_block_info, // one per block
+ uint32_t total_input_selectors,
+ const fosc_selector_struct* pInput_selectors,
+ const uint32_t* pSelector_cluster_indices,
+ uint32_t* pOutput_selector_cluster_indices, // one per block
+ bool perceptual)
+ {
+ BASISU_NOTE_UNUSED(pContext);
+ BASISU_NOTE_UNUSED(pInput_block_info);
+ BASISU_NOTE_UNUSED(total_input_selectors);
+ BASISU_NOTE_UNUSED(pInput_selectors);
+ BASISU_NOTE_UNUSED(pSelector_cluster_indices);
+ BASISU_NOTE_UNUSED(pOutput_selector_cluster_indices);
+ BASISU_NOTE_UNUSED(perceptual);
+
+ return false;
+ }
+
+ bool opencl_determine_selectors(
+ opencl_context_ptr pContext,
+ const color_rgba* pInput_etc_color5_and_inten,
+ etc_block* pOutput_blocks,
+ bool perceptual)
+ {
+ BASISU_NOTE_UNUSED(pContext);
+ BASISU_NOTE_UNUSED(pInput_etc_color5_and_inten);
+ BASISU_NOTE_UNUSED(pOutput_blocks);
+ BASISU_NOTE_UNUSED(perceptual);
+
+ return false;
+ }
+
+#endif // BASISU_SUPPORT_OPENCL
+
+} // namespace basisu
diff --git a/thirdparty/basis_universal/encoder/basisu_opencl.h b/thirdparty/basis_universal/encoder/basisu_opencl.h
new file mode 100644
index 0000000000..4194a08418
--- /dev/null
+++ b/thirdparty/basis_universal/encoder/basisu_opencl.h
@@ -0,0 +1,143 @@
+// basisu_opencl.h
+// Copyright (C) 2019-2021 Binomial LLC. All Rights Reserved.
+//
+// Note: Undefine or set BASISU_SUPPORT_OPENCL to 0 to completely OpenCL support.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+#pragma once
+#include "../transcoder/basisu.h"
+#include "basisu_enc.h"
+#include "basisu_etc.h"
+
+namespace basisu
+{
+ bool opencl_init(bool force_serialization);
+ void opencl_deinit();
+ bool opencl_is_available();
+
+ struct opencl_context;
+
+ // Each thread calling OpenCL should have its own opencl_context_ptr. This corresponds to a OpenCL command queue. (Confusingly, we only use a single OpenCL device "context".)
+ typedef opencl_context* opencl_context_ptr;
+
+ opencl_context_ptr opencl_create_context();
+ void opencl_destroy_context(opencl_context_ptr context);
+
+#pragma pack(push, 1)
+ struct cl_pixel_block
+ {
+ color_rgba m_pixels[16]; // [y*4+x]
+ };
+#pragma pack(pop)
+
+ // Must match BASISU_ETC1_CLUSTER_FIT_ORDER_TABLE_SIZE
+ const uint32_t OPENCL_ENCODE_ETC1S_MAX_PERMS = 165;
+
+ bool opencl_set_pixel_blocks(opencl_context_ptr pContext, uint32_t total_blocks, const cl_pixel_block* pPixel_blocks);
+
+ bool opencl_encode_etc1s_blocks(opencl_context_ptr pContext, etc_block* pOutput_blocks, bool perceptual, uint32_t total_perms);
+
+ // opencl_encode_etc1s_pixel_clusters
+
+#pragma pack(push, 1)
+ struct cl_pixel_cluster
+ {
+ uint64_t m_total_pixels;
+ uint64_t m_first_pixel_index;
+ };
+#pragma pack(pop)
+
+ bool opencl_encode_etc1s_pixel_clusters(
+ opencl_context_ptr pContext,
+ etc_block* pOutput_blocks,
+ uint32_t total_clusters,
+ const cl_pixel_cluster *pClusters,
+ uint64_t total_pixels,
+ const color_rgba *pPixels,
+ const uint32_t *pPixel_weights,
+ bool perceptual, uint32_t total_perms);
+
+ // opencl_refine_endpoint_clusterization
+
+#pragma pack(push, 1)
+ struct cl_block_info_struct
+ {
+ uint16_t m_first_cluster_ofs;
+ uint16_t m_num_clusters;
+ uint16_t m_cur_cluster_index;
+ uint8_t m_cur_cluster_etc_inten;
+ };
+
+ struct cl_endpoint_cluster_struct
+ {
+ color_rgba m_unscaled_color;
+ uint8_t m_etc_inten;
+ uint16_t m_cluster_index;
+ };
+#pragma pack(pop)
+
+ bool opencl_refine_endpoint_clusterization(
+ opencl_context_ptr pContext,
+ const cl_block_info_struct *pPixel_block_info,
+ uint32_t total_clusters,
+ const cl_endpoint_cluster_struct *pCluster_info,
+ const uint32_t *pSorted_block_indices,
+ uint32_t* pOutput_cluster_indices,
+ bool perceptual);
+
+ // opencl_find_optimal_selector_clusters_for_each_block
+
+#pragma pack(push, 1)
+ struct fosc_selector_struct
+ {
+ uint32_t m_packed_selectors; // 4x4 grid of 2-bit selectors
+ };
+
+ struct fosc_block_struct
+ {
+ color_rgba m_etc_color5_inten; // unscaled 5-bit block color in RGB, alpha has block's intensity index
+ uint32_t m_first_selector; // offset into selector table
+ uint32_t m_num_selectors; // number of selectors to check
+ };
+
+ struct fosc_param_struct
+ {
+ uint32_t m_total_blocks;
+ int m_perceptual;
+ };
+#pragma pack(pop)
+
+ bool opencl_find_optimal_selector_clusters_for_each_block(
+ opencl_context_ptr pContext,
+ const fosc_block_struct* pInput_block_info, // one per block
+ uint32_t total_input_selectors,
+ const fosc_selector_struct* pInput_selectors,
+ const uint32_t* pSelector_cluster_indices,
+ uint32_t* pOutput_selector_cluster_indices, // one per block
+ bool perceptual);
+
+#pragma pack(push, 1)
+ struct ds_param_struct
+ {
+ uint32_t m_total_blocks;
+ int m_perceptual;
+ };
+#pragma pack(pop)
+
+ bool opencl_determine_selectors(
+ opencl_context_ptr pContext,
+ const color_rgba* pInput_etc_color5_and_inten,
+ etc_block* pOutput_blocks,
+ bool perceptual);
+
+} // namespace basisu
diff --git a/thirdparty/basis_universal/encoder/basisu_uastc_enc.cpp b/thirdparty/basis_universal/encoder/basisu_uastc_enc.cpp
index ca2b325693..271bbc6f1d 100644
--- a/thirdparty/basis_universal/encoder/basisu_uastc_enc.cpp
+++ b/thirdparty/basis_universal/encoder/basisu_uastc_enc.cpp
@@ -13,7 +13,11 @@
// See the License for the specific language governing permissions and
// limitations under the License.
#include "basisu_uastc_enc.h"
+
+#if BASISU_USE_ASTC_DECOMPRESS
#include "basisu_astc_decomp.h"
+#endif
+
#include "basisu_gpu_texture.h"
#include "basisu_bc7enc.h"
@@ -509,14 +513,14 @@ namespace basisu
if (pForce_selectors == nullptr)
{
- int s0 = g_astc_unquant[endpoint_range][astc_results.m_endpoints[0]].m_unquant + g_astc_unquant[endpoint_range][astc_results.m_endpoints[2]].m_unquant + g_astc_unquant[endpoint_range][astc_results.m_endpoints[4]].m_unquant;
- int s1 = g_astc_unquant[endpoint_range][astc_results.m_endpoints[1]].m_unquant + g_astc_unquant[endpoint_range][astc_results.m_endpoints[3]].m_unquant + g_astc_unquant[endpoint_range][astc_results.m_endpoints[5]].m_unquant;
- if (s1 < s0)
- {
- std::swap(astc_results.m_endpoints[0], astc_results.m_endpoints[1]);
- std::swap(astc_results.m_endpoints[2], astc_results.m_endpoints[3]);
- std::swap(astc_results.m_endpoints[4], astc_results.m_endpoints[5]);
- invert = true;
+ int s0 = g_astc_unquant[endpoint_range][astc_results.m_endpoints[0]].m_unquant + g_astc_unquant[endpoint_range][astc_results.m_endpoints[2]].m_unquant + g_astc_unquant[endpoint_range][astc_results.m_endpoints[4]].m_unquant;
+ int s1 = g_astc_unquant[endpoint_range][astc_results.m_endpoints[1]].m_unquant + g_astc_unquant[endpoint_range][astc_results.m_endpoints[3]].m_unquant + g_astc_unquant[endpoint_range][astc_results.m_endpoints[5]].m_unquant;
+ if (s1 < s0)
+ {
+ std::swap(astc_results.m_endpoints[0], astc_results.m_endpoints[1]);
+ std::swap(astc_results.m_endpoints[2], astc_results.m_endpoints[3]);
+ std::swap(astc_results.m_endpoints[4], astc_results.m_endpoints[5]);
+ invert = true;
}
}
@@ -3562,7 +3566,8 @@ namespace basisu
basist::color32 temp_block_unpacked[4][4];
success = basist::unpack_uastc(temp_block, (basist::color32 *)temp_block_unpacked, false);
VALIDATE(success);
-
+
+#if BASISU_USE_ASTC_DECOMPRESS
// Now round trip to packed ASTC and back, then decode to pixels.
uint32_t astc_data[4];
@@ -3590,6 +3595,7 @@ namespace basisu
VALIDATE(temp_block_unpacked[y][x].c[3] == decoded_uastc_block[y][x].a);
}
}
+#endif
}
#endif
diff --git a/thirdparty/basis_universal/encoder/cppspmd_sse.h b/thirdparty/basis_universal/encoder/cppspmd_sse.h
index 9a97eeb695..4c61bab7b1 100644
--- a/thirdparty/basis_universal/encoder/cppspmd_sse.h
+++ b/thirdparty/basis_universal/encoder/cppspmd_sse.h
@@ -1,13 +1,5 @@
// cppspmd_sse.h
-// Note for Basis Universal: All of the "cppspmd" code and headers are OPTIONAL to Basis Universal. if BASISU_SUPPORT_SSE is 0, it will never be included and does not impact compilation.
-// SSE 2 or 4.1
-// Originally written by Nicolas Guillemot, Jefferson Amstutz in the "CppSPMD" project.
-// 4/20: Richard Geldreich: Macro control flow, more SIMD instruction sets, optimizations, supports using multiple SIMD instruction sets in same executable. Still a work in progress!
-//
-// Originally Copyright 2016 Nicolas Guillemot
-// Changed from the MIT license to Apache 2.0 with permission from the author.
-//
-// Modifications/enhancements Copyright 2020-2021 Binomial LLC
+// Copyright 2020-2022 Binomial LLC
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
@@ -20,6 +12,11 @@
// 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.
+//
+// Notes for Basis Universal:
+// All of the "cppspmd" code and headers are OPTIONAL to Basis Universal. if BASISU_SUPPORT_SSE is 0, it will never be included and does not impact compilation.
+// The techniques used in this code were originally demonstrated for AVX2 by Nicolas Guillemot, Jefferson Amstutz in their "CppSPMD" project.
+// This is new code for use in Basis Universal, although it uses the same general SPMD techniques in SSE 2/4.
#include <stdlib.h>
#include <stdint.h>
@@ -1330,7 +1327,7 @@ struct spmd_kernel
__m128 temp = _mm_add_ps(_mm_shuffle_ps(k3210, k3210, _MM_SHUFFLE(0, 1, 2, 3)), k3210);
return _mm_cvtss_f32(_mm_add_ss(_mm_movehl_ps(temp, temp), temp));
}
-
+
CPPSPMD_FORCE_INLINE int reduce_add(vint v)
{
__m128i k3210 = blendv_mask_epi32(_mm_setzero_si128(), v.m_value, m_exec.m_mask);
@@ -1668,14 +1665,16 @@ CPPSPMD_FORCE_INLINE vint uniform_shift_right_epi16(const vint& a, const vint& b
CPPSPMD_FORCE_INLINE vint undefined_vint() { return vint{ _mm_undefined_si128() }; }
CPPSPMD_FORCE_INLINE vfloat undefined_vfloat() { return vfloat{ _mm_undefined_ps() }; }
+CPPSPMD_FORCE_INLINE vint zero_vint() { return vint{ _mm_setzero_si128() }; }
+CPPSPMD_FORCE_INLINE vfloat zero_vfloat() { return vfloat{ _mm_setzero_ps() }; }
+
CPPSPMD_FORCE_INLINE vint vint_lane_set(int v0, int v1, int v2, int v3) { return vint{ _mm_set_epi32(v3, v2, v1, v0) }; }
CPPSPMD_FORCE_INLINE vfloat vfloat_lane_set(float v0, float v1, float v2, float v3) { return vfloat{ _mm_set_ps(v3, v2, v1, v0) }; }
-
CPPSPMD_FORCE_INLINE vint vint_lane_set_r(int v3, int v2, int v1, int v0) { return vint{ _mm_set_epi32(v3, v2, v1, v0) }; }
CPPSPMD_FORCE_INLINE vfloat vfloat_lane_set_r(float v3, float v2, float v1, float v0) { return vfloat{ _mm_set_ps(v3, v2, v1, v0) }; }
-
// control is an 8-bit immediate value containing 4 2-bit indices which shuffles the int32's in each 128-bit lane.
#define VINT_LANE_SHUFFLE_EPI32(a, control) vint(_mm_shuffle_epi32((a).m_value, control))
+#define VFLOAT_LANE_SHUFFLE_PS(a, b, control) vfloat(_mm_shuffle_ps((a).m_value, (b).m_value, control))
// control is an 8-bit immediate value containing 4 2-bit indices which shuffles the int16's in either the high or low 64-bit lane.
#define VINT_LANE_SHUFFLELO_EPI16(a, control) vint(_mm_shufflelo_epi16((a).m_value, control))
diff --git a/thirdparty/basis_universal/encoder/jpgd.cpp b/thirdparty/basis_universal/encoder/jpgd.cpp
index 460834409d..fec8b71439 100644
--- a/thirdparty/basis_universal/encoder/jpgd.cpp
+++ b/thirdparty/basis_universal/encoder/jpgd.cpp
@@ -23,17 +23,6 @@
// v1.04, May. 19, 2012: Code tweaks to fix VS2008 static code analysis warnings
// v2.00, March 20, 2020: Fuzzed with zzuf and afl. Fixed several issues, converted most assert()'s to run-time checks. Added chroma upsampling. Removed freq. domain upsampling. gcc/clang warnings.
//
-#ifdef _MSC_VER
-#ifndef BASISU_NO_ITERATOR_DEBUG_LEVEL
-#if defined(_DEBUG) || defined(DEBUG)
-#define _ITERATOR_DEBUG_LEVEL 1
-#define _SECURE_SCL 1
-#else
-#define _SECURE_SCL 0
-#define _ITERATOR_DEBUG_LEVEL 0
-#endif
-#endif
-#endif
#include "jpgd.h"
#include <string.h>
@@ -2085,7 +2074,7 @@ namespace jpgd {
if (setjmp(m_jmp_state))
return JPGD_FAILED;
- const bool chroma_y_filtering = (m_flags & cFlagLinearChromaFiltering) && ((m_scan_type == JPGD_YH2V2) || (m_scan_type == JPGD_YH1V2));
+ const bool chroma_y_filtering = (m_flags & cFlagLinearChromaFiltering) && ((m_scan_type == JPGD_YH2V2) || (m_scan_type == JPGD_YH1V2)) && (m_image_x_size >= 2) && (m_image_y_size >= 2);
if (chroma_y_filtering)
{
std::swap(m_pSample_buf, m_pSample_buf_prev);
@@ -2114,7 +2103,7 @@ namespace jpgd {
if (m_total_lines_left == 0)
return JPGD_DONE;
- const bool chroma_y_filtering = (m_flags & cFlagLinearChromaFiltering) && ((m_scan_type == JPGD_YH2V2) || (m_scan_type == JPGD_YH1V2));
+ const bool chroma_y_filtering = (m_flags & cFlagLinearChromaFiltering) && ((m_scan_type == JPGD_YH2V2) || (m_scan_type == JPGD_YH1V2)) && (m_image_x_size >= 2) && (m_image_y_size >= 2);
bool get_another_mcu_row = false;
bool got_mcu_early = false;
@@ -2144,7 +2133,7 @@ namespace jpgd {
{
case JPGD_YH2V2:
{
- if (m_flags & cFlagLinearChromaFiltering)
+ if ((m_flags & cFlagLinearChromaFiltering) && (m_image_x_size >= 2) && (m_image_y_size >= 2))
{
if (m_num_buffered_scanlines == 1)
{
@@ -2173,7 +2162,7 @@ namespace jpgd {
}
case JPGD_YH2V1:
{
- if (m_flags & cFlagLinearChromaFiltering)
+ if ((m_flags & cFlagLinearChromaFiltering) && (m_image_x_size >= 2) && (m_image_y_size >= 2))
H2V1ConvertFiltered();
else
H2V1Convert();
diff --git a/thirdparty/basis_universal/encoder/lodepng.cpp b/thirdparty/basis_universal/encoder/lodepng.cpp
deleted file mode 100644
index 63adcf49b6..0000000000
--- a/thirdparty/basis_universal/encoder/lodepng.cpp
+++ /dev/null
@@ -1,6008 +0,0 @@
-/*
-LodePNG version 20190210
-
-Copyright (c) 2005-2019 Lode Vandevenne
-
-This software is provided 'as-is', without any express or implied
-warranty. In no event will the authors be held liable for any damages
-arising from the use of this software.
-
-Permission is granted to anyone to use this software for any purpose,
-including commercial applications, and to alter it and redistribute it
-freely, subject to the following restrictions:
-
- 1. The origin of this software must not be misrepresented; you must not
- claim that you wrote the original software. If you use this software
- in a product, an acknowledgment in the product documentation would be
- appreciated but is not required.
-
- 2. Altered source versions must be plainly marked as such, and must not be
- misrepresented as being the original software.
-
- 3. This notice may not be removed or altered from any source
- distribution.
-*/
-
-/*
-The manual and changelog are in the header file "lodepng.h"
-Rename this file to lodepng.cpp to use it for C++, or to lodepng.c to use it for C.
-*/
-
-#ifdef _MSC_VER
-#define _CRT_SECURE_NO_DEPRECATE
-#pragma warning (disable : 4201)
-
-#ifndef BASISU_NO_ITERATOR_DEBUG_LEVEL
-#if defined(_DEBUG) || defined(DEBUG)
-#define _ITERATOR_DEBUG_LEVEL 1
-#define _SECURE_SCL 1
-#else
-#define _SECURE_SCL 0
-#define _ITERATOR_DEBUG_LEVEL 0
-#endif
-#endif
-#endif
-
-#include "lodepng.h"
-
-#include <limits.h> /* LONG_MAX */
-#include <stdio.h> /* file handling */
-#include <stdlib.h> /* allocations */
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1310) /*Visual Studio: A few warning types are not desired here.*/
-#pragma warning( disable : 4244 ) /*implicit conversions: not warned by gcc -Wall -Wextra and requires too much casts*/
-#pragma warning( disable : 4996 ) /*VS does not like fopen, but fopen_s is not standard C so unusable here*/
-#endif /*_MSC_VER */
-
-const char* LODEPNG_VERSION_STRING = "20190210";
-
-/*
-This source file is built up in the following large parts. The code sections
-with the "LODEPNG_COMPILE_" #defines divide this up further in an intermixed way.
--Tools for C and common code for PNG and Zlib
--C Code for Zlib (huffman, deflate, ...)
--C Code for PNG (file format chunks, adam7, PNG filters, color conversions, ...)
--The C++ wrapper around all of the above
-*/
-
-/*The malloc, realloc and free functions defined here with "lodepng_" in front
-of the name, so that you can easily change them to others related to your
-platform if needed. Everything else in the code calls these. Pass
--DLODEPNG_NO_COMPILE_ALLOCATORS to the compiler, or comment out
-#define LODEPNG_COMPILE_ALLOCATORS in the header, to disable the ones here and
-define them in your own project's source files without needing to change
-lodepng source code. Don't forget to remove "static" if you copypaste them
-from here.*/
-
-#ifdef LODEPNG_COMPILE_ALLOCATORS
-static void* lodepng_malloc(size_t size) {
-#ifdef LODEPNG_MAX_ALLOC
- if(size > LODEPNG_MAX_ALLOC) return 0;
-#endif
- return malloc(size);
-}
-
-static void* lodepng_realloc(void* ptr, size_t new_size) {
-#ifdef LODEPNG_MAX_ALLOC
- if(new_size > LODEPNG_MAX_ALLOC) return 0;
-#endif
- return realloc(ptr, new_size);
-}
-
-static void lodepng_free(void* ptr) {
- free(ptr);
-}
-#else /*LODEPNG_COMPILE_ALLOCATORS*/
-void* lodepng_malloc(size_t size);
-void* lodepng_realloc(void* ptr, size_t new_size);
-void lodepng_free(void* ptr);
-#endif /*LODEPNG_COMPILE_ALLOCATORS*/
-
-/* ////////////////////////////////////////////////////////////////////////// */
-/* ////////////////////////////////////////////////////////////////////////// */
-/* // Tools for C, and common code for PNG and Zlib. // */
-/* ////////////////////////////////////////////////////////////////////////// */
-/* ////////////////////////////////////////////////////////////////////////// */
-
-#define LODEPNG_MAX(a, b) (((a) > (b)) ? (a) : (b))
-#define LODEPNG_MIN(a, b) (((a) < (b)) ? (a) : (b))
-
-/*
-Often in case of an error a value is assigned to a variable and then it breaks
-out of a loop (to go to the cleanup phase of a function). This macro does that.
-It makes the error handling code shorter and more readable.
-
-Example: if(!uivector_resizev(&frequencies_ll, 286, 0)) ERROR_BREAK(83);
-*/
-#define CERROR_BREAK(errorvar, code){\
- errorvar = code;\
- break;\
-}
-
-/*version of CERROR_BREAK that assumes the common case where the error variable is named "error"*/
-#define ERROR_BREAK(code) CERROR_BREAK(error, code)
-
-/*Set error var to the error code, and return it.*/
-#define CERROR_RETURN_ERROR(errorvar, code){\
- errorvar = code;\
- return code;\
-}
-
-/*Try the code, if it returns error, also return the error.*/
-#define CERROR_TRY_RETURN(call){\
- unsigned error = call;\
- if(error) return error;\
-}
-
-/*Set error var to the error code, and return from the void function.*/
-#define CERROR_RETURN(errorvar, code){\
- errorvar = code;\
- return;\
-}
-
-/*
-About uivector, ucvector and string:
--All of them wrap dynamic arrays or text strings in a similar way.
--LodePNG was originally written in C++. The vectors replace the std::vectors that were used in the C++ version.
--The string tools are made to avoid problems with compilers that declare things like strncat as deprecated.
--They're not used in the interface, only internally in this file as static functions.
--As with many other structs in this file, the init and cleanup functions serve as ctor and dtor.
-*/
-
-#ifdef LODEPNG_COMPILE_ZLIB
-/*dynamic vector of unsigned ints*/
-typedef struct uivector {
- unsigned* data;
- size_t size; /*size in number of unsigned longs*/
- size_t allocsize; /*allocated size in bytes*/
-} uivector;
-
-static void uivector_cleanup(void* p) {
- ((uivector*)p)->size = ((uivector*)p)->allocsize = 0;
- lodepng_free(((uivector*)p)->data);
- ((uivector*)p)->data = NULL;
-}
-
-/*returns 1 if success, 0 if failure ==> nothing done*/
-static unsigned uivector_reserve(uivector* p, size_t allocsize) {
- if(allocsize > p->allocsize) {
- size_t newsize = (allocsize > p->allocsize * 2) ? allocsize : (allocsize * 3 / 2);
- void* data = lodepng_realloc(p->data, newsize);
- if(data) {
- p->allocsize = newsize;
- p->data = (unsigned*)data;
- }
- else return 0; /*error: not enough memory*/
- }
- return 1;
-}
-
-/*returns 1 if success, 0 if failure ==> nothing done*/
-static unsigned uivector_resize(uivector* p, size_t size) {
- if(!uivector_reserve(p, size * sizeof(unsigned))) return 0;
- p->size = size;
- return 1; /*success*/
-}
-
-/*resize and give all new elements the value*/
-static unsigned uivector_resizev(uivector* p, size_t size, unsigned value) {
- size_t oldsize = p->size, i;
- if(!uivector_resize(p, size)) return 0;
- for(i = oldsize; i < size; ++i) p->data[i] = value;
- return 1;
-}
-
-static void uivector_init(uivector* p) {
- p->data = NULL;
- p->size = p->allocsize = 0;
-}
-
-#ifdef LODEPNG_COMPILE_ENCODER
-/*returns 1 if success, 0 if failure ==> nothing done*/
-static unsigned uivector_push_back(uivector* p, unsigned c) {
- if(!uivector_resize(p, p->size + 1)) return 0;
- if (!p->data) return 0;
- p->data[p->size - 1] = c;
- return 1;
-}
-#endif /*LODEPNG_COMPILE_ENCODER*/
-#endif /*LODEPNG_COMPILE_ZLIB*/
-
-/* /////////////////////////////////////////////////////////////////////////// */
-
-/*dynamic vector of unsigned chars*/
-typedef struct ucvector {
- unsigned char* data;
- size_t size; /*used size*/
- size_t allocsize; /*allocated size*/
-} ucvector;
-
-/*returns 1 if success, 0 if failure ==> nothing done*/
-static unsigned ucvector_reserve(ucvector* p, size_t allocsize) {
- if(allocsize > p->allocsize) {
- size_t newsize = (allocsize > p->allocsize * 2) ? allocsize : (allocsize * 3 / 2);
- void* data = lodepng_realloc(p->data, newsize);
- if(data) {
- p->allocsize = newsize;
- p->data = (unsigned char*)data;
- }
- else return 0; /*error: not enough memory*/
- }
- return 1;
-}
-
-/*returns 1 if success, 0 if failure ==> nothing done*/
-static unsigned ucvector_resize(ucvector* p, size_t size) {
- if(!ucvector_reserve(p, size * sizeof(unsigned char))) return 0;
- p->size = size;
- return 1; /*success*/
-}
-
-#ifdef LODEPNG_COMPILE_PNG
-
-static void ucvector_cleanup(void* p) {
- ((ucvector*)p)->size = ((ucvector*)p)->allocsize = 0;
- lodepng_free(((ucvector*)p)->data);
- ((ucvector*)p)->data = NULL;
-}
-
-static void ucvector_init(ucvector* p) {
- p->data = NULL;
- p->size = p->allocsize = 0;
-}
-#endif /*LODEPNG_COMPILE_PNG*/
-
-#ifdef LODEPNG_COMPILE_ZLIB
-/*you can both convert from vector to buffer&size and vica versa. If you use
-init_buffer to take over a buffer and size, it is not needed to use cleanup*/
-static void ucvector_init_buffer(ucvector* p, unsigned char* buffer, size_t size) {
- p->data = buffer;
- p->allocsize = p->size = size;
-}
-#endif /*LODEPNG_COMPILE_ZLIB*/
-
-#if (defined(LODEPNG_COMPILE_PNG) && defined(LODEPNG_COMPILE_ANCILLARY_CHUNKS)) || defined(LODEPNG_COMPILE_ENCODER)
-/*returns 1 if success, 0 if failure ==> nothing done*/
-static unsigned ucvector_push_back(ucvector* p, unsigned char c) {
- if(!ucvector_resize(p, p->size + 1)) return 0;
- p->data[p->size - 1] = c;
- return 1;
-}
-#endif /*defined(LODEPNG_COMPILE_PNG) || defined(LODEPNG_COMPILE_ENCODER)*/
-
-
-/* ////////////////////////////////////////////////////////////////////////// */
-
-#ifdef LODEPNG_COMPILE_PNG
-#ifdef LODEPNG_COMPILE_ANCILLARY_CHUNKS
-
-/*free string pointer and set it to NULL*/
-static void string_cleanup(char** out) {
- lodepng_free(*out);
- *out = NULL;
-}
-
-/* dynamically allocates a new string with a copy of the null terminated input text */
-static char* alloc_string(const char* in) {
- size_t insize = strlen(in);
- char* out = (char*)lodepng_malloc(insize + 1);
- if(out) {
- size_t i;
- for(i = 0; i != insize; ++i) {
- out[i] = in[i];
- }
- out[i] = 0;
- }
- return out;
-}
-#endif /*LODEPNG_COMPILE_ANCILLARY_CHUNKS*/
-#endif /*LODEPNG_COMPILE_PNG*/
-
-/* ////////////////////////////////////////////////////////////////////////// */
-
-unsigned lodepng_read32bitInt(const unsigned char* buffer) {
- return (unsigned)((buffer[0] << 24) | (buffer[1] << 16) | (buffer[2] << 8) | buffer[3]);
-}
-
-#if defined(LODEPNG_COMPILE_PNG) || defined(LODEPNG_COMPILE_ENCODER)
-/*buffer must have at least 4 allocated bytes available*/
-static void lodepng_set32bitInt(unsigned char* buffer, unsigned value) {
- buffer[0] = (unsigned char)((value >> 24) & 0xff);
- buffer[1] = (unsigned char)((value >> 16) & 0xff);
- buffer[2] = (unsigned char)((value >> 8) & 0xff);
- buffer[3] = (unsigned char)((value ) & 0xff);
-}
-#endif /*defined(LODEPNG_COMPILE_PNG) || defined(LODEPNG_COMPILE_ENCODER)*/
-
-#ifdef LODEPNG_COMPILE_ENCODER
-static void lodepng_add32bitInt(ucvector* buffer, unsigned value) {
- ucvector_resize(buffer, buffer->size + 4); /*todo: give error if resize failed*/
- lodepng_set32bitInt(&buffer->data[buffer->size - 4], value);
-}
-#endif /*LODEPNG_COMPILE_ENCODER*/
-
-/* ////////////////////////////////////////////////////////////////////////// */
-/* / File IO / */
-/* ////////////////////////////////////////////////////////////////////////// */
-
-#ifdef LODEPNG_COMPILE_DISK
-
-/* returns negative value on error. This should be pure C compatible, so no fstat. */
-static long lodepng_filesize(const char* filename) {
- FILE* file;
- long size;
- file = fopen(filename, "rb");
- if(!file) return -1;
-
- if(fseek(file, 0, SEEK_END) != 0) {
- fclose(file);
- return -1;
- }
-
- size = ftell(file);
- /* It may give LONG_MAX as directory size, this is invalid for us. */
- if(size == LONG_MAX) size = -1;
-
- fclose(file);
- return size;
-}
-
-/* load file into buffer that already has the correct allocated size. Returns error code.*/
-static unsigned lodepng_buffer_file(unsigned char* out, size_t size, const char* filename) {
- FILE* file;
- size_t readsize;
- file = fopen(filename, "rb");
- if(!file) return 78;
-
- readsize = fread(out, 1, size, file);
- fclose(file);
-
- if (readsize != size) return 78;
- return 0;
-}
-
-unsigned lodepng_load_file(unsigned char** out, size_t* outsize, const char* filename) {
- long size = lodepng_filesize(filename);
- if (size < 0) return 78;
- *outsize = (size_t)size;
-
- *out = (unsigned char*)lodepng_malloc((size_t)size);
- if(!(*out) && size > 0) return 83; /*the above malloc failed*/
-
- return lodepng_buffer_file(*out, (size_t)size, filename);
-}
-
-/*write given buffer to the file, overwriting the file, it doesn't append to it.*/
-unsigned lodepng_save_file(const unsigned char* buffer, size_t buffersize, const char* filename) {
- FILE* file;
- file = fopen(filename, "wb" );
- if(!file) return 79;
- fwrite(buffer, 1, buffersize, file);
- fclose(file);
- return 0;
-}
-
-#endif /*LODEPNG_COMPILE_DISK*/
-
-/* ////////////////////////////////////////////////////////////////////////// */
-/* ////////////////////////////////////////////////////////////////////////// */
-/* // End of common code and tools. Begin of Zlib related code. // */
-/* ////////////////////////////////////////////////////////////////////////// */
-/* ////////////////////////////////////////////////////////////////////////// */
-
-#ifdef LODEPNG_COMPILE_ZLIB
-#ifdef LODEPNG_COMPILE_ENCODER
-/*TODO: this ignores potential out of memory errors*/
-#define addBitToStream(/*size_t**/ bitpointer, /*ucvector**/ bitstream, /*unsigned char*/ bit){\
- /*add a new byte at the end*/\
- if(((*bitpointer) & 7) == 0) ucvector_push_back(bitstream, (unsigned char)0);\
- /*earlier bit of huffman code is in a lesser significant bit of an earlier byte*/\
- (bitstream->data[bitstream->size - 1]) |= (bit << ((*bitpointer) & 0x7));\
- ++(*bitpointer);\
-}
-
-static void addBitsToStream(size_t* bitpointer, ucvector* bitstream, unsigned value, size_t nbits) {
- size_t i;
- for(i = 0; i != nbits; ++i) addBitToStream(bitpointer, bitstream, (unsigned char)((value >> i) & 1));
-}
-
-static void addBitsToStreamReversed(size_t* bitpointer, ucvector* bitstream, unsigned value, size_t nbits) {
- size_t i;
- for(i = 0; i != nbits; ++i) addBitToStream(bitpointer, bitstream, (unsigned char)((value >> (nbits - 1 - i)) & 1));
-}
-#endif /*LODEPNG_COMPILE_ENCODER*/
-
-#ifdef LODEPNG_COMPILE_DECODER
-
-#define READBIT(bitpointer, bitstream) ((bitstream[bitpointer >> 3] >> (bitpointer & 0x7)) & (unsigned char)1)
-
-static unsigned char readBitFromStream(size_t* bitpointer, const unsigned char* bitstream) {
- unsigned char result = (unsigned char)(READBIT(*bitpointer, bitstream));
- ++(*bitpointer);
- return result;
-}
-
-static unsigned readBitsFromStream(size_t* bitpointer, const unsigned char* bitstream, size_t nbits) {
- unsigned result = 0, i;
- for(i = 0; i != nbits; ++i) {
- result += ((unsigned)READBIT(*bitpointer, bitstream)) << i;
- ++(*bitpointer);
- }
- return result;
-}
-#endif /*LODEPNG_COMPILE_DECODER*/
-
-/* ////////////////////////////////////////////////////////////////////////// */
-/* / Deflate - Huffman / */
-/* ////////////////////////////////////////////////////////////////////////// */
-
-#define FIRST_LENGTH_CODE_INDEX 257
-#define LAST_LENGTH_CODE_INDEX 285
-/*256 literals, the end code, some length codes, and 2 unused codes*/
-#define NUM_DEFLATE_CODE_SYMBOLS 288
-/*the distance codes have their own symbols, 30 used, 2 unused*/
-#define NUM_DISTANCE_SYMBOLS 32
-/*the code length codes. 0-15: code lengths, 16: copy previous 3-6 times, 17: 3-10 zeros, 18: 11-138 zeros*/
-#define NUM_CODE_LENGTH_CODES 19
-
-/*the base lengths represented by codes 257-285*/
-static const unsigned LENGTHBASE[29]
- = {3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31, 35, 43, 51, 59,
- 67, 83, 99, 115, 131, 163, 195, 227, 258};
-
-/*the extra bits used by codes 257-285 (added to base length)*/
-static const unsigned LENGTHEXTRA[29]
- = {0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3,
- 4, 4, 4, 4, 5, 5, 5, 5, 0};
-
-/*the base backwards distances (the bits of distance codes appear after length codes and use their own huffman tree)*/
-static const unsigned DISTANCEBASE[30]
- = {1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193, 257, 385, 513,
- 769, 1025, 1537, 2049, 3073, 4097, 6145, 8193, 12289, 16385, 24577};
-
-/*the extra bits of backwards distances (added to base)*/
-static const unsigned DISTANCEEXTRA[30]
- = {0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8,
- 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13};
-
-/*the order in which "code length alphabet code lengths" are stored, out of this
-the huffman tree of the dynamic huffman tree lengths is generated*/
-static const unsigned CLCL_ORDER[NUM_CODE_LENGTH_CODES]
- = {16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15};
-
-/* ////////////////////////////////////////////////////////////////////////// */
-
-/*
-Huffman tree struct, containing multiple representations of the tree
-*/
-typedef struct HuffmanTree {
- unsigned* tree2d;
- unsigned* tree1d;
- unsigned* lengths; /*the lengths of the codes of the 1d-tree*/
- unsigned maxbitlen; /*maximum number of bits a single code can get*/
- unsigned numcodes; /*number of symbols in the alphabet = number of codes*/
-} HuffmanTree;
-
-/*function used for debug purposes to draw the tree in ascii art with C++*/
-/*
-static void HuffmanTree_draw(HuffmanTree* tree) {
- std::cout << "tree. length: " << tree->numcodes << " maxbitlen: " << tree->maxbitlen << std::endl;
- for(size_t i = 0; i != tree->tree1d.size; ++i) {
- if(tree->lengths.data[i])
- std::cout << i << " " << tree->tree1d.data[i] << " " << tree->lengths.data[i] << std::endl;
- }
- std::cout << std::endl;
-}*/
-
-static void HuffmanTree_init(HuffmanTree* tree) {
- tree->tree2d = 0;
- tree->tree1d = 0;
- tree->lengths = 0;
-}
-
-static void HuffmanTree_cleanup(HuffmanTree* tree) {
- lodepng_free(tree->tree2d);
- lodepng_free(tree->tree1d);
- lodepng_free(tree->lengths);
-}
-
-/*the tree representation used by the decoder. return value is error*/
-static unsigned HuffmanTree_make2DTree(HuffmanTree* tree) {
- unsigned nodefilled = 0; /*up to which node it is filled*/
- unsigned treepos = 0; /*position in the tree (1 of the numcodes columns)*/
- unsigned n, i;
-
- tree->tree2d = (unsigned*)lodepng_malloc(tree->numcodes * 2 * sizeof(unsigned));
- if(!tree->tree2d) return 83; /*alloc fail*/
-
- /*
- convert tree1d[] to tree2d[][]. In the 2D array, a value of 32767 means
- uninited, a value >= numcodes is an address to another bit, a value < numcodes
- is a code. The 2 rows are the 2 possible bit values (0 or 1), there are as
- many columns as codes - 1.
- A good huffman tree has N * 2 - 1 nodes, of which N - 1 are internal nodes.
- Here, the internal nodes are stored (what their 0 and 1 option point to).
- There is only memory for such good tree currently, if there are more nodes
- (due to too long length codes), error 55 will happen
- */
- for(n = 0; n < tree->numcodes * 2; ++n) {
- tree->tree2d[n] = 32767; /*32767 here means the tree2d isn't filled there yet*/
- }
-
- for(n = 0; n < tree->numcodes; ++n) /*the codes*/ {
- for(i = 0; i != tree->lengths[n]; ++i) /*the bits for this code*/ {
- unsigned char bit = (unsigned char)((tree->tree1d[n] >> (tree->lengths[n] - i - 1)) & 1);
- /*oversubscribed, see comment in lodepng_error_text*/
- if(treepos > 2147483647 || treepos + 2 > tree->numcodes) return 55;
- if(tree->tree2d[2 * treepos + bit] == 32767) /*not yet filled in*/ {
- if(i + 1 == tree->lengths[n]) /*last bit*/ {
- tree->tree2d[2 * treepos + bit] = n; /*put the current code in it*/
- treepos = 0;
- } else {
- /*put address of the next step in here, first that address has to be found of course
- (it's just nodefilled + 1)...*/
- ++nodefilled;
- /*addresses encoded with numcodes added to it*/
- tree->tree2d[2 * treepos + bit] = nodefilled + tree->numcodes;
- treepos = nodefilled;
- }
- }
- else treepos = tree->tree2d[2 * treepos + bit] - tree->numcodes;
- }
- }
-
- for(n = 0; n < tree->numcodes * 2; ++n) {
- if(tree->tree2d[n] == 32767) tree->tree2d[n] = 0; /*remove possible remaining 32767's*/
- }
-
- return 0;
-}
-
-/*
-Second step for the ...makeFromLengths and ...makeFromFrequencies functions.
-numcodes, lengths and maxbitlen must already be filled in correctly. return
-value is error.
-*/
-static unsigned HuffmanTree_makeFromLengths2(HuffmanTree* tree) {
- uivector blcount;
- uivector nextcode;
- unsigned error = 0;
- unsigned bits, n;
-
- uivector_init(&blcount);
- uivector_init(&nextcode);
-
- tree->tree1d = (unsigned*)lodepng_malloc(tree->numcodes * sizeof(unsigned));
- if(!tree->tree1d) error = 83; /*alloc fail*/
-
- if(!uivector_resizev(&blcount, tree->maxbitlen + 1, 0)
- || !uivector_resizev(&nextcode, tree->maxbitlen + 1, 0))
- error = 83; /*alloc fail*/
-
- if(!error) {
- /*step 1: count number of instances of each code length*/
- for(bits = 0; bits != tree->numcodes; ++bits) ++blcount.data[tree->lengths[bits]];
- /*step 2: generate the nextcode values*/
- for(bits = 1; bits <= tree->maxbitlen; ++bits) {
- nextcode.data[bits] = (nextcode.data[bits - 1] + blcount.data[bits - 1]) << 1;
- }
- /*step 3: generate all the codes*/
- for(n = 0; n != tree->numcodes; ++n) {
- if(tree->lengths[n] != 0) tree->tree1d[n] = nextcode.data[tree->lengths[n]]++;
- }
- }
-
- uivector_cleanup(&blcount);
- uivector_cleanup(&nextcode);
-
- if(!error) return HuffmanTree_make2DTree(tree);
- else return error;
-}
-
-/*
-given the code lengths (as stored in the PNG file), generate the tree as defined
-by Deflate. maxbitlen is the maximum bits that a code in the tree can have.
-return value is error.
-*/
-static unsigned HuffmanTree_makeFromLengths(HuffmanTree* tree, const unsigned* bitlen,
- size_t numcodes, unsigned maxbitlen) {
- unsigned i;
- tree->lengths = (unsigned*)lodepng_malloc(numcodes * sizeof(unsigned));
- if(!tree->lengths) return 83; /*alloc fail*/
- for(i = 0; i != numcodes; ++i) tree->lengths[i] = bitlen[i];
- tree->numcodes = (unsigned)numcodes; /*number of symbols*/
- tree->maxbitlen = maxbitlen;
- return HuffmanTree_makeFromLengths2(tree);
-}
-
-#ifdef LODEPNG_COMPILE_ENCODER
-
-/*BPM: Boundary Package Merge, see "A Fast and Space-Economical Algorithm for Length-Limited Coding",
-Jyrki Katajainen, Alistair Moffat, Andrew Turpin, 1995.*/
-
-/*chain node for boundary package merge*/
-typedef struct BPMNode {
- int weight; /*the sum of all weights in this chain*/
- unsigned index; /*index of this leaf node (called "count" in the paper)*/
- struct BPMNode* tail; /*the next nodes in this chain (null if last)*/
- int in_use;
-} BPMNode;
-
-/*lists of chains*/
-typedef struct BPMLists {
- /*memory pool*/
- unsigned memsize;
- BPMNode* memory;
- unsigned numfree;
- unsigned nextfree;
- BPMNode** freelist;
- /*two heads of lookahead chains per list*/
- unsigned listsize;
- BPMNode** chains0;
- BPMNode** chains1;
-} BPMLists;
-
-/*creates a new chain node with the given parameters, from the memory in the lists */
-static BPMNode* bpmnode_create(BPMLists* lists, int weight, unsigned index, BPMNode* tail) {
- unsigned i;
- BPMNode* result;
-
- /*memory full, so garbage collect*/
- if(lists->nextfree >= lists->numfree) {
- /*mark only those that are in use*/
- for(i = 0; i != lists->memsize; ++i) lists->memory[i].in_use = 0;
- for(i = 0; i != lists->listsize; ++i) {
- BPMNode* node;
- for(node = lists->chains0[i]; node != 0; node = node->tail) node->in_use = 1;
- for(node = lists->chains1[i]; node != 0; node = node->tail) node->in_use = 1;
- }
- /*collect those that are free*/
- lists->numfree = 0;
- for(i = 0; i != lists->memsize; ++i) {
- if(!lists->memory[i].in_use) lists->freelist[lists->numfree++] = &lists->memory[i];
- }
- lists->nextfree = 0;
- }
-
- result = lists->freelist[lists->nextfree++];
- result->weight = weight;
- result->index = index;
- result->tail = tail;
- return result;
-}
-
-/*sort the leaves with stable mergesort*/
-static void bpmnode_sort(BPMNode* leaves, size_t num) {
- BPMNode* mem = (BPMNode*)lodepng_malloc(sizeof(*leaves) * num);
- size_t width, counter = 0;
- for(width = 1; width < num; width *= 2) {
- BPMNode* a = (counter & 1) ? mem : leaves;
- BPMNode* b = (counter & 1) ? leaves : mem;
- size_t p;
- for(p = 0; p < num; p += 2 * width) {
- size_t q = (p + width > num) ? num : (p + width);
- size_t r = (p + 2 * width > num) ? num : (p + 2 * width);
- size_t i = p, j = q, k;
- for(k = p; k < r; k++) {
- if(i < q && (j >= r || a[i].weight <= a[j].weight)) b[k] = a[i++];
- else b[k] = a[j++];
- }
- }
- counter++;
- }
- if(counter & 1) memcpy(leaves, mem, sizeof(*leaves) * num);
- lodepng_free(mem);
-}
-
-/*Boundary Package Merge step, numpresent is the amount of leaves, and c is the current chain.*/
-static void boundaryPM(BPMLists* lists, BPMNode* leaves, size_t numpresent, int c, int num) {
- unsigned lastindex = lists->chains1[c]->index;
-
- if(c == 0) {
- if(lastindex >= numpresent) return;
- lists->chains0[c] = lists->chains1[c];
- lists->chains1[c] = bpmnode_create(lists, leaves[lastindex].weight, lastindex + 1, 0);
- } else {
- /*sum of the weights of the head nodes of the previous lookahead chains.*/
- int sum = lists->chains0[c - 1]->weight + lists->chains1[c - 1]->weight;
- lists->chains0[c] = lists->chains1[c];
- if(lastindex < numpresent && sum > leaves[lastindex].weight) {
- lists->chains1[c] = bpmnode_create(lists, leaves[lastindex].weight, lastindex + 1, lists->chains1[c]->tail);
- return;
- }
- lists->chains1[c] = bpmnode_create(lists, sum, lastindex, lists->chains1[c - 1]);
- /*in the end we are only interested in the chain of the last list, so no
- need to recurse if we're at the last one (this gives measurable speedup)*/
- if(num + 1 < (int)(2 * numpresent - 2)) {
- boundaryPM(lists, leaves, numpresent, c - 1, num);
- boundaryPM(lists, leaves, numpresent, c - 1, num);
- }
- }
-}
-
-unsigned lodepng_huffman_code_lengths(unsigned* lengths, const unsigned* frequencies,
- size_t numcodes, unsigned maxbitlen) {
- unsigned error = 0;
- unsigned i;
- size_t numpresent = 0; /*number of symbols with non-zero frequency*/
- BPMNode* leaves; /*the symbols, only those with > 0 frequency*/
-
- if(numcodes == 0) return 80; /*error: a tree of 0 symbols is not supposed to be made*/
- if((1u << maxbitlen) < (unsigned)numcodes) return 80; /*error: represent all symbols*/
-
- leaves = (BPMNode*)lodepng_malloc(numcodes * sizeof(*leaves));
- if(!leaves) return 83; /*alloc fail*/
-
- for(i = 0; i != numcodes; ++i) {
- if(frequencies[i] > 0) {
- leaves[numpresent].weight = (int)frequencies[i];
- leaves[numpresent].index = i;
- ++numpresent;
- }
- }
-
- for(i = 0; i != numcodes; ++i) lengths[i] = 0;
-
- /*ensure at least two present symbols. There should be at least one symbol
- according to RFC 1951 section 3.2.7. Some decoders incorrectly require two. To
- make these work as well ensure there are at least two symbols. The
- Package-Merge code below also doesn't work correctly if there's only one
- symbol, it'd give it the theoritical 0 bits but in practice zlib wants 1 bit*/
- if(numpresent == 0) {
- lengths[0] = lengths[1] = 1; /*note that for RFC 1951 section 3.2.7, only lengths[0] = 1 is needed*/
- } else if(numpresent == 1) {
- lengths[leaves[0].index] = 1;
- lengths[leaves[0].index == 0 ? 1 : 0] = 1;
- } else {
- BPMLists lists;
- BPMNode* node;
-
- bpmnode_sort(leaves, numpresent);
-
- lists.listsize = maxbitlen;
- lists.memsize = 2 * maxbitlen * (maxbitlen + 1);
- lists.nextfree = 0;
- lists.numfree = lists.memsize;
- lists.memory = (BPMNode*)lodepng_malloc(lists.memsize * sizeof(*lists.memory));
- lists.freelist = (BPMNode**)lodepng_malloc(lists.memsize * sizeof(BPMNode*));
- lists.chains0 = (BPMNode**)lodepng_malloc(lists.listsize * sizeof(BPMNode*));
- lists.chains1 = (BPMNode**)lodepng_malloc(lists.listsize * sizeof(BPMNode*));
- if(!lists.memory || !lists.freelist || !lists.chains0 || !lists.chains1) error = 83; /*alloc fail*/
-
- if(!error) {
- for(i = 0; i != lists.memsize; ++i) lists.freelist[i] = &lists.memory[i];
-
- bpmnode_create(&lists, leaves[0].weight, 1, 0);
- bpmnode_create(&lists, leaves[1].weight, 2, 0);
-
- for(i = 0; i != lists.listsize; ++i) {
- lists.chains0[i] = &lists.memory[0];
- lists.chains1[i] = &lists.memory[1];
- }
-
- /*each boundaryPM call adds one chain to the last list, and we need 2 * numpresent - 2 chains.*/
- for(i = 2; i != 2 * numpresent - 2; ++i) boundaryPM(&lists, leaves, numpresent, (int)maxbitlen - 1, (int)i);
-
- for(node = lists.chains1[maxbitlen - 1]; node; node = node->tail) {
- for(i = 0; i != node->index; ++i) ++lengths[leaves[i].index];
- }
- }
-
- lodepng_free(lists.memory);
- lodepng_free(lists.freelist);
- lodepng_free(lists.chains0);
- lodepng_free(lists.chains1);
- }
-
- lodepng_free(leaves);
- return error;
-}
-
-/*Create the Huffman tree given the symbol frequencies*/
-static unsigned HuffmanTree_makeFromFrequencies(HuffmanTree* tree, const unsigned* frequencies,
- size_t mincodes, size_t numcodes, unsigned maxbitlen) {
- unsigned error = 0;
- while(!frequencies[numcodes - 1] && numcodes > mincodes) --numcodes; /*trim zeroes*/
- tree->maxbitlen = maxbitlen;
- tree->numcodes = (unsigned)numcodes; /*number of symbols*/
- tree->lengths = (unsigned*)lodepng_realloc(tree->lengths, numcodes * sizeof(unsigned));
- if(!tree->lengths) return 83; /*alloc fail*/
- /*initialize all lengths to 0*/
- memset(tree->lengths, 0, numcodes * sizeof(unsigned));
-
- error = lodepng_huffman_code_lengths(tree->lengths, frequencies, numcodes, maxbitlen);
- if(!error) error = HuffmanTree_makeFromLengths2(tree);
- return error;
-}
-
-static unsigned HuffmanTree_getCode(const HuffmanTree* tree, unsigned index) {
- return tree->tree1d[index];
-}
-
-static unsigned HuffmanTree_getLength(const HuffmanTree* tree, unsigned index) {
- return tree->lengths[index];
-}
-#endif /*LODEPNG_COMPILE_ENCODER*/
-
-/*get the literal and length code tree of a deflated block with fixed tree, as per the deflate specification*/
-static unsigned generateFixedLitLenTree(HuffmanTree* tree) {
- unsigned i, error = 0;
- unsigned* bitlen = (unsigned*)lodepng_malloc(NUM_DEFLATE_CODE_SYMBOLS * sizeof(unsigned));
- if(!bitlen) return 83; /*alloc fail*/
-
- /*288 possible codes: 0-255=literals, 256=endcode, 257-285=lengthcodes, 286-287=unused*/
- for(i = 0; i <= 143; ++i) bitlen[i] = 8;
- for(i = 144; i <= 255; ++i) bitlen[i] = 9;
- for(i = 256; i <= 279; ++i) bitlen[i] = 7;
- for(i = 280; i <= 287; ++i) bitlen[i] = 8;
-
- error = HuffmanTree_makeFromLengths(tree, bitlen, NUM_DEFLATE_CODE_SYMBOLS, 15);
-
- lodepng_free(bitlen);
- return error;
-}
-
-/*get the distance code tree of a deflated block with fixed tree, as specified in the deflate specification*/
-static unsigned generateFixedDistanceTree(HuffmanTree* tree) {
- unsigned i, error = 0;
- unsigned* bitlen = (unsigned*)lodepng_malloc(NUM_DISTANCE_SYMBOLS * sizeof(unsigned));
- if(!bitlen) return 83; /*alloc fail*/
-
- /*there are 32 distance codes, but 30-31 are unused*/
- for(i = 0; i != NUM_DISTANCE_SYMBOLS; ++i) bitlen[i] = 5;
- error = HuffmanTree_makeFromLengths(tree, bitlen, NUM_DISTANCE_SYMBOLS, 15);
-
- lodepng_free(bitlen);
- return error;
-}
-
-#ifdef LODEPNG_COMPILE_DECODER
-
-/*
-returns the code, or (unsigned)(-1) if error happened
-inbitlength is the length of the complete buffer, in bits (so its byte length times 8)
-*/
-static unsigned huffmanDecodeSymbol(const unsigned char* in, size_t* bp,
- const HuffmanTree* codetree, size_t inbitlength) {
- unsigned treepos = 0, ct;
- for(;;) {
- if(*bp >= inbitlength) return (unsigned)(-1); /*error: end of input memory reached without endcode*/
- /*
- decode the symbol from the tree. The "readBitFromStream" code is inlined in
- the expression below because this is the biggest bottleneck while decoding
- */
- ct = codetree->tree2d[(treepos << 1) + READBIT(*bp, in)];
- ++(*bp);
- if(ct < codetree->numcodes) return ct; /*the symbol is decoded, return it*/
- else treepos = ct - codetree->numcodes; /*symbol not yet decoded, instead move tree position*/
-
- if(treepos >= codetree->numcodes) return (unsigned)(-1); /*error: it appeared outside the codetree*/
- }
-}
-#endif /*LODEPNG_COMPILE_DECODER*/
-
-#ifdef LODEPNG_COMPILE_DECODER
-
-/* ////////////////////////////////////////////////////////////////////////// */
-/* / Inflator (Decompressor) / */
-/* ////////////////////////////////////////////////////////////////////////// */
-
-/*get the tree of a deflated block with fixed tree, as specified in the deflate specification*/
-static void getTreeInflateFixed(HuffmanTree* tree_ll, HuffmanTree* tree_d) {
- /*TODO: check for out of memory errors*/
- generateFixedLitLenTree(tree_ll);
- generateFixedDistanceTree(tree_d);
-}
-
-/*get the tree of a deflated block with dynamic tree, the tree itself is also Huffman compressed with a known tree*/
-static unsigned getTreeInflateDynamic(HuffmanTree* tree_ll, HuffmanTree* tree_d,
- const unsigned char* in, size_t* bp, size_t inlength) {
- /*make sure that length values that aren't filled in will be 0, or a wrong tree will be generated*/
- unsigned error = 0;
- unsigned n, HLIT, HDIST, HCLEN, i;
- size_t inbitlength = inlength * 8;
-
- /*see comments in deflateDynamic for explanation of the context and these variables, it is analogous*/
- unsigned* bitlen_ll = 0; /*lit,len code lengths*/
- unsigned* bitlen_d = 0; /*dist code lengths*/
- /*code length code lengths ("clcl"), the bit lengths of the huffman tree used to compress bitlen_ll and bitlen_d*/
- unsigned* bitlen_cl = 0;
- HuffmanTree tree_cl; /*the code tree for code length codes (the huffman tree for compressed huffman trees)*/
-
- if((*bp) + 14 > (inlength << 3)) return 49; /*error: the bit pointer is or will go past the memory*/
-
- /*number of literal/length codes + 257. Unlike the spec, the value 257 is added to it here already*/
- HLIT = readBitsFromStream(bp, in, 5) + 257;
- /*number of distance codes. Unlike the spec, the value 1 is added to it here already*/
- HDIST = readBitsFromStream(bp, in, 5) + 1;
- /*number of code length codes. Unlike the spec, the value 4 is added to it here already*/
- HCLEN = readBitsFromStream(bp, in, 4) + 4;
-
- if((*bp) + HCLEN * 3 > (inlength << 3)) return 50; /*error: the bit pointer is or will go past the memory*/
-
- HuffmanTree_init(&tree_cl);
-
- while(!error) {
- /*read the code length codes out of 3 * (amount of code length codes) bits*/
-
- bitlen_cl = (unsigned*)lodepng_malloc(NUM_CODE_LENGTH_CODES * sizeof(unsigned));
- if(!bitlen_cl) ERROR_BREAK(83 /*alloc fail*/);
-
- for(i = 0; i != NUM_CODE_LENGTH_CODES; ++i) {
- if(i < HCLEN) bitlen_cl[CLCL_ORDER[i]] = readBitsFromStream(bp, in, 3);
- else bitlen_cl[CLCL_ORDER[i]] = 0; /*if not, it must stay 0*/
- }
-
- error = HuffmanTree_makeFromLengths(&tree_cl, bitlen_cl, NUM_CODE_LENGTH_CODES, 7);
- if(error) break;
-
- /*now we can use this tree to read the lengths for the tree that this function will return*/
- bitlen_ll = (unsigned*)lodepng_malloc(NUM_DEFLATE_CODE_SYMBOLS * sizeof(unsigned));
- bitlen_d = (unsigned*)lodepng_malloc(NUM_DISTANCE_SYMBOLS * sizeof(unsigned));
- if(!bitlen_ll || !bitlen_d) ERROR_BREAK(83 /*alloc fail*/);
- for(i = 0; i != NUM_DEFLATE_CODE_SYMBOLS; ++i) bitlen_ll[i] = 0;
- for(i = 0; i != NUM_DISTANCE_SYMBOLS; ++i) bitlen_d[i] = 0;
-
- /*i is the current symbol we're reading in the part that contains the code lengths of lit/len and dist codes*/
- i = 0;
- while(i < HLIT + HDIST) {
- unsigned code = huffmanDecodeSymbol(in, bp, &tree_cl, inbitlength);
- if(code <= 15) /*a length code*/ {
- if(i < HLIT) bitlen_ll[i] = code;
- else bitlen_d[i - HLIT] = code;
- ++i;
- } else if(code == 16) /*repeat previous*/ {
- unsigned replength = 3; /*read in the 2 bits that indicate repeat length (3-6)*/
- unsigned value; /*set value to the previous code*/
-
- if(i == 0) ERROR_BREAK(54); /*can't repeat previous if i is 0*/
-
- if((*bp + 2) > inbitlength) ERROR_BREAK(50); /*error, bit pointer jumps past memory*/
- replength += readBitsFromStream(bp, in, 2);
-
- if(i < HLIT + 1) value = bitlen_ll[i - 1];
- else value = bitlen_d[i - HLIT - 1];
- /*repeat this value in the next lengths*/
- for(n = 0; n < replength; ++n) {
- if(i >= HLIT + HDIST) ERROR_BREAK(13); /*error: i is larger than the amount of codes*/
- if(i < HLIT) bitlen_ll[i] = value;
- else bitlen_d[i - HLIT] = value;
- ++i;
- }
- } else if(code == 17) /*repeat "0" 3-10 times*/ {
- unsigned replength = 3; /*read in the bits that indicate repeat length*/
- if((*bp + 3) > inbitlength) ERROR_BREAK(50); /*error, bit pointer jumps past memory*/
- replength += readBitsFromStream(bp, in, 3);
-
- /*repeat this value in the next lengths*/
- for(n = 0; n < replength; ++n) {
- if(i >= HLIT + HDIST) ERROR_BREAK(14); /*error: i is larger than the amount of codes*/
-
- if(i < HLIT) bitlen_ll[i] = 0;
- else bitlen_d[i - HLIT] = 0;
- ++i;
- }
- } else if(code == 18) /*repeat "0" 11-138 times*/ {
- unsigned replength = 11; /*read in the bits that indicate repeat length*/
- if((*bp + 7) > inbitlength) ERROR_BREAK(50); /*error, bit pointer jumps past memory*/
- replength += readBitsFromStream(bp, in, 7);
-
- /*repeat this value in the next lengths*/
- for(n = 0; n < replength; ++n) {
- if(i >= HLIT + HDIST) ERROR_BREAK(15); /*error: i is larger than the amount of codes*/
-
- if(i < HLIT) bitlen_ll[i] = 0;
- else bitlen_d[i - HLIT] = 0;
- ++i;
- }
- } else /*if(code == (unsigned)(-1))*/ /*huffmanDecodeSymbol returns (unsigned)(-1) in case of error*/ {
- if(code == (unsigned)(-1)) {
- /*return error code 10 or 11 depending on the situation that happened in huffmanDecodeSymbol
- (10=no endcode, 11=wrong jump outside of tree)*/
- error = (*bp) > inbitlength ? 10 : 11;
- }
- else error = 16; /*unexisting code, this can never happen*/
- break;
- }
- }
- if(error) break;
-
- if(bitlen_ll[256] == 0) ERROR_BREAK(64); /*the length of the end code 256 must be larger than 0*/
-
- /*now we've finally got HLIT and HDIST, so generate the code trees, and the function is done*/
- error = HuffmanTree_makeFromLengths(tree_ll, bitlen_ll, NUM_DEFLATE_CODE_SYMBOLS, 15);
- if(error) break;
- error = HuffmanTree_makeFromLengths(tree_d, bitlen_d, NUM_DISTANCE_SYMBOLS, 15);
-
- break; /*end of error-while*/
- }
-
- lodepng_free(bitlen_cl);
- lodepng_free(bitlen_ll);
- lodepng_free(bitlen_d);
- HuffmanTree_cleanup(&tree_cl);
-
- return error;
-}
-
-/*inflate a block with dynamic of fixed Huffman tree*/
-static unsigned inflateHuffmanBlock(ucvector* out, const unsigned char* in, size_t* bp,
- size_t* pos, size_t inlength, unsigned btype) {
- unsigned error = 0;
- HuffmanTree tree_ll; /*the huffman tree for literal and length codes*/
- HuffmanTree tree_d; /*the huffman tree for distance codes*/
- size_t inbitlength = inlength * 8;
-
- HuffmanTree_init(&tree_ll);
- HuffmanTree_init(&tree_d);
-
- if(btype == 1) getTreeInflateFixed(&tree_ll, &tree_d);
- else if(btype == 2) error = getTreeInflateDynamic(&tree_ll, &tree_d, in, bp, inlength);
-
- while(!error) /*decode all symbols until end reached, breaks at end code*/ {
- /*code_ll is literal, length or end code*/
- unsigned code_ll = huffmanDecodeSymbol(in, bp, &tree_ll, inbitlength);
- if(code_ll <= 255) /*literal symbol*/ {
- /*ucvector_push_back would do the same, but for some reason the two lines below run 10% faster*/
- if(!ucvector_resize(out, (*pos) + 1)) ERROR_BREAK(83 /*alloc fail*/);
- out->data[*pos] = (unsigned char)code_ll;
- ++(*pos);
- } else if(code_ll >= FIRST_LENGTH_CODE_INDEX && code_ll <= LAST_LENGTH_CODE_INDEX) /*length code*/ {
- unsigned code_d, distance;
- unsigned numextrabits_l, numextrabits_d; /*extra bits for length and distance*/
- size_t start, forward, backward, length;
-
- /*part 1: get length base*/
- length = LENGTHBASE[code_ll - FIRST_LENGTH_CODE_INDEX];
-
- /*part 2: get extra bits and add the value of that to length*/
- numextrabits_l = LENGTHEXTRA[code_ll - FIRST_LENGTH_CODE_INDEX];
- if((*bp + numextrabits_l) > inbitlength) ERROR_BREAK(51); /*error, bit pointer will jump past memory*/
- length += readBitsFromStream(bp, in, numextrabits_l);
-
- /*part 3: get distance code*/
- code_d = huffmanDecodeSymbol(in, bp, &tree_d, inbitlength);
- if(code_d > 29) {
- if(code_d == (unsigned)(-1)) /*huffmanDecodeSymbol returns (unsigned)(-1) in case of error*/ {
- /*return error code 10 or 11 depending on the situation that happened in huffmanDecodeSymbol
- (10=no endcode, 11=wrong jump outside of tree)*/
- error = (*bp) > inlength * 8 ? 10 : 11;
- }
- else error = 18; /*error: invalid distance code (30-31 are never used)*/
- break;
- }
- distance = DISTANCEBASE[code_d];
-
- /*part 4: get extra bits from distance*/
- numextrabits_d = DISTANCEEXTRA[code_d];
- if((*bp + numextrabits_d) > inbitlength) ERROR_BREAK(51); /*error, bit pointer will jump past memory*/
- distance += readBitsFromStream(bp, in, numextrabits_d);
-
- /*part 5: fill in all the out[n] values based on the length and dist*/
- start = (*pos);
- if(distance > start) ERROR_BREAK(52); /*too long backward distance*/
- backward = start - distance;
-
- if(!ucvector_resize(out, (*pos) + length)) ERROR_BREAK(83 /*alloc fail*/);
- if (distance < length) {
- for(forward = 0; forward < length; ++forward) {
- out->data[(*pos)++] = out->data[backward++];
- }
- } else {
- memcpy(out->data + *pos, out->data + backward, length);
- *pos += length;
- }
- } else if(code_ll == 256) {
- break; /*end code, break the loop*/
- } else /*if(code == (unsigned)(-1))*/ /*huffmanDecodeSymbol returns (unsigned)(-1) in case of error*/ {
- /*return error code 10 or 11 depending on the situation that happened in huffmanDecodeSymbol
- (10=no endcode, 11=wrong jump outside of tree)*/
- error = ((*bp) > inlength * 8) ? 10 : 11;
- break;
- }
- }
-
- HuffmanTree_cleanup(&tree_ll);
- HuffmanTree_cleanup(&tree_d);
-
- return error;
-}
-
-static unsigned inflateNoCompression(ucvector* out, const unsigned char* in, size_t* bp, size_t* pos, size_t inlength) {
- size_t p;
- unsigned LEN, NLEN, n, error = 0;
-
- /*go to first boundary of byte*/
- while(((*bp) & 0x7) != 0) ++(*bp);
- p = (*bp) / 8; /*byte position*/
-
- /*read LEN (2 bytes) and NLEN (2 bytes)*/
- if(p + 4 >= inlength) return 52; /*error, bit pointer will jump past memory*/
- LEN = in[p] + 256u * in[p + 1]; p += 2;
- NLEN = in[p] + 256u * in[p + 1]; p += 2;
-
- /*check if 16-bit NLEN is really the one's complement of LEN*/
- if(LEN + NLEN != 65535) return 21; /*error: NLEN is not one's complement of LEN*/
-
- if(!ucvector_resize(out, (*pos) + LEN)) return 83; /*alloc fail*/
-
- /*read the literal data: LEN bytes are now stored in the out buffer*/
- if(p + LEN > inlength) return 23; /*error: reading outside of in buffer*/
- for(n = 0; n < LEN; ++n) out->data[(*pos)++] = in[p++];
-
- (*bp) = p * 8;
-
- return error;
-}
-
-static unsigned lodepng_inflatev(ucvector* out,
- const unsigned char* in, size_t insize,
- const LodePNGDecompressSettings* settings) {
- /*bit pointer in the "in" data, current byte is bp >> 3, current bit is bp & 0x7 (from lsb to msb of the byte)*/
- size_t bp = 0;
- unsigned BFINAL = 0;
- size_t pos = 0; /*byte position in the out buffer*/
- unsigned error = 0;
-
- (void)settings;
-
- while(!BFINAL) {
- unsigned BTYPE;
- if(bp + 2 >= insize * 8) return 52; /*error, bit pointer will jump past memory*/
- BFINAL = readBitFromStream(&bp, in);
- BTYPE = 1u * readBitFromStream(&bp, in);
- BTYPE += 2u * readBitFromStream(&bp, in);
-
- if(BTYPE == 3) return 20; /*error: invalid BTYPE*/
- else if(BTYPE == 0) error = inflateNoCompression(out, in, &bp, &pos, insize); /*no compression*/
- else error = inflateHuffmanBlock(out, in, &bp, &pos, insize, BTYPE); /*compression, BTYPE 01 or 10*/
-
- if(error) return error;
- }
-
- return error;
-}
-
-unsigned lodepng_inflate(unsigned char** out, size_t* outsize,
- const unsigned char* in, size_t insize,
- const LodePNGDecompressSettings* settings) {
- unsigned error;
- ucvector v;
- ucvector_init_buffer(&v, *out, *outsize);
- error = lodepng_inflatev(&v, in, insize, settings);
- *out = v.data;
- *outsize = v.size;
- return error;
-}
-
-static unsigned inflate(unsigned char** out, size_t* outsize,
- const unsigned char* in, size_t insize,
- const LodePNGDecompressSettings* settings) {
- if(settings->custom_inflate) {
- return settings->custom_inflate(out, outsize, in, insize, settings);
- } else {
- return lodepng_inflate(out, outsize, in, insize, settings);
- }
-}
-
-#endif /*LODEPNG_COMPILE_DECODER*/
-
-#ifdef LODEPNG_COMPILE_ENCODER
-
-/* ////////////////////////////////////////////////////////////////////////// */
-/* / Deflator (Compressor) / */
-/* ////////////////////////////////////////////////////////////////////////// */
-
-static const size_t MAX_SUPPORTED_DEFLATE_LENGTH = 258;
-
-/*bitlen is the size in bits of the code*/
-static void addHuffmanSymbol(size_t* bp, ucvector* compressed, unsigned code, unsigned bitlen) {
- addBitsToStreamReversed(bp, compressed, code, bitlen);
-}
-
-/*search the index in the array, that has the largest value smaller than or equal to the given value,
-given array must be sorted (if no value is smaller, it returns the size of the given array)*/
-static size_t searchCodeIndex(const unsigned* array, size_t array_size, size_t value) {
- /*binary search (only small gain over linear). TODO: use CPU log2 instruction for getting symbols instead*/
- size_t left = 1;
- size_t right = array_size - 1;
-
- while(left <= right) {
- size_t mid = (left + right) >> 1;
- if (array[mid] >= value) right = mid - 1;
- else left = mid + 1;
- }
- if(left >= array_size || array[left] > value) left--;
- return left;
-}
-
-static void addLengthDistance(uivector* values, size_t length, size_t distance) {
- /*values in encoded vector are those used by deflate:
- 0-255: literal bytes
- 256: end
- 257-285: length/distance pair (length code, followed by extra length bits, distance code, extra distance bits)
- 286-287: invalid*/
-
- unsigned length_code = (unsigned)searchCodeIndex(LENGTHBASE, 29, length);
- unsigned extra_length = (unsigned)(length - LENGTHBASE[length_code]);
- unsigned dist_code = (unsigned)searchCodeIndex(DISTANCEBASE, 30, distance);
- unsigned extra_distance = (unsigned)(distance - DISTANCEBASE[dist_code]);
-
- uivector_push_back(values, length_code + FIRST_LENGTH_CODE_INDEX);
- uivector_push_back(values, extra_length);
- uivector_push_back(values, dist_code);
- uivector_push_back(values, extra_distance);
-}
-
-/*3 bytes of data get encoded into two bytes. The hash cannot use more than 3
-bytes as input because 3 is the minimum match length for deflate*/
-static const unsigned HASH_NUM_VALUES = 65536;
-static const unsigned HASH_BIT_MASK = 65535; /*HASH_NUM_VALUES - 1, but C90 does not like that as initializer*/
-
-typedef struct Hash {
- int* head; /*hash value to head circular pos - can be outdated if went around window*/
- /*circular pos to prev circular pos*/
- unsigned short* chain;
- int* val; /*circular pos to hash value*/
-
- /*TODO: do this not only for zeros but for any repeated byte. However for PNG
- it's always going to be the zeros that dominate, so not important for PNG*/
- int* headz; /*similar to head, but for chainz*/
- unsigned short* chainz; /*those with same amount of zeros*/
- unsigned short* zeros; /*length of zeros streak, used as a second hash chain*/
-} Hash;
-
-static unsigned hash_init(Hash* hash, unsigned windowsize) {
- unsigned i;
- hash->head = (int*)lodepng_malloc(sizeof(int) * HASH_NUM_VALUES);
- hash->val = (int*)lodepng_malloc(sizeof(int) * windowsize);
- hash->chain = (unsigned short*)lodepng_malloc(sizeof(unsigned short) * windowsize);
-
- hash->zeros = (unsigned short*)lodepng_malloc(sizeof(unsigned short) * windowsize);
- hash->headz = (int*)lodepng_malloc(sizeof(int) * (MAX_SUPPORTED_DEFLATE_LENGTH + 1));
- hash->chainz = (unsigned short*)lodepng_malloc(sizeof(unsigned short) * windowsize);
-
- if(!hash->head || !hash->chain || !hash->val || !hash->headz|| !hash->chainz || !hash->zeros) {
- return 83; /*alloc fail*/
- }
-
- /*initialize hash table*/
- for(i = 0; i != HASH_NUM_VALUES; ++i) hash->head[i] = -1;
- for(i = 0; i != windowsize; ++i) hash->val[i] = -1;
- for(i = 0; i != windowsize; ++i) hash->chain[i] = i; /*same value as index indicates uninitialized*/
-
- for(i = 0; i <= MAX_SUPPORTED_DEFLATE_LENGTH; ++i) hash->headz[i] = -1;
- for(i = 0; i != windowsize; ++i) hash->chainz[i] = i; /*same value as index indicates uninitialized*/
-
- return 0;
-}
-
-static void hash_cleanup(Hash* hash) {
- lodepng_free(hash->head);
- lodepng_free(hash->val);
- lodepng_free(hash->chain);
-
- lodepng_free(hash->zeros);
- lodepng_free(hash->headz);
- lodepng_free(hash->chainz);
-}
-
-
-
-static unsigned getHash(const unsigned char* data, size_t size, size_t pos) {
- unsigned result = 0;
- if(pos + 2 < size) {
- /*A simple shift and xor hash is used. Since the data of PNGs is dominated
- by zeroes due to the filters, a better hash does not have a significant
- effect on speed in traversing the chain, and causes more time spend on
- calculating the hash.*/
- result ^= (unsigned)(data[pos + 0] << 0u);
- result ^= (unsigned)(data[pos + 1] << 4u);
- result ^= (unsigned)(data[pos + 2] << 8u);
- } else {
- size_t amount, i;
- if(pos >= size) return 0;
- amount = size - pos;
- for(i = 0; i != amount; ++i) result ^= (unsigned)(data[pos + i] << (i * 8u));
- }
- return result & HASH_BIT_MASK;
-}
-
-static unsigned countZeros(const unsigned char* data, size_t size, size_t pos) {
- const unsigned char* start = data + pos;
- const unsigned char* end = start + MAX_SUPPORTED_DEFLATE_LENGTH;
- if(end > data + size) end = data + size;
- data = start;
- while(data != end && *data == 0) ++data;
- /*subtracting two addresses returned as 32-bit number (max value is MAX_SUPPORTED_DEFLATE_LENGTH)*/
- return (unsigned)(data - start);
-}
-
-/*wpos = pos & (windowsize - 1)*/
-static void updateHashChain(Hash* hash, size_t wpos, unsigned hashval, unsigned short numzeros) {
- hash->val[wpos] = (int)hashval;
- if(hash->head[hashval] != -1) hash->chain[wpos] = hash->head[hashval];
- hash->head[hashval] = (int)wpos;
-
- hash->zeros[wpos] = numzeros;
- if(hash->headz[numzeros] != -1) hash->chainz[wpos] = hash->headz[numzeros];
- hash->headz[numzeros] = (int)wpos;
-}
-
-/*
-LZ77-encode the data. Return value is error code. The input are raw bytes, the output
-is in the form of unsigned integers with codes representing for example literal bytes, or
-length/distance pairs.
-It uses a hash table technique to let it encode faster. When doing LZ77 encoding, a
-sliding window (of windowsize) is used, and all past bytes in that window can be used as
-the "dictionary". A brute force search through all possible distances would be slow, and
-this hash technique is one out of several ways to speed this up.
-*/
-static unsigned encodeLZ77(uivector* out, Hash* hash,
- const unsigned char* in, size_t inpos, size_t insize, unsigned windowsize,
- unsigned minmatch, unsigned nicematch, unsigned lazymatching) {
- size_t pos;
- unsigned i, error = 0;
- /*for large window lengths, assume the user wants no compression loss. Otherwise, max hash chain length speedup.*/
- unsigned maxchainlength = windowsize >= 8192 ? windowsize : windowsize / 8;
- unsigned maxlazymatch = windowsize >= 8192 ? MAX_SUPPORTED_DEFLATE_LENGTH : 64;
-
- unsigned usezeros = 1; /*not sure if setting it to false for windowsize < 8192 is better or worse*/
- unsigned numzeros = 0;
-
- unsigned offset; /*the offset represents the distance in LZ77 terminology*/
- unsigned length;
- unsigned lazy = 0;
- unsigned lazylength = 0, lazyoffset = 0;
- unsigned hashval;
- unsigned current_offset, current_length;
- unsigned prev_offset;
- const unsigned char *lastptr, *foreptr, *backptr;
- unsigned hashpos;
-
- if(windowsize == 0 || windowsize > 32768) return 60; /*error: windowsize smaller/larger than allowed*/
- if((windowsize & (windowsize - 1)) != 0) return 90; /*error: must be power of two*/
-
- if(nicematch > MAX_SUPPORTED_DEFLATE_LENGTH) nicematch = MAX_SUPPORTED_DEFLATE_LENGTH;
-
- for(pos = inpos; pos < insize; ++pos) {
- size_t wpos = pos & (windowsize - 1); /*position for in 'circular' hash buffers*/
- unsigned chainlength = 0;
-
- hashval = getHash(in, insize, pos);
-
- if(usezeros && hashval == 0) {
- if(numzeros == 0) numzeros = countZeros(in, insize, pos);
- else if(pos + numzeros > insize || in[pos + numzeros - 1] != 0) --numzeros;
- } else {
- numzeros = 0;
- }
-
- updateHashChain(hash, wpos, hashval, numzeros);
-
- /*the length and offset found for the current position*/
- length = 0;
- offset = 0;
-
- hashpos = hash->chain[wpos];
-
- lastptr = &in[insize < pos + MAX_SUPPORTED_DEFLATE_LENGTH ? insize : pos + MAX_SUPPORTED_DEFLATE_LENGTH];
-
- /*search for the longest string*/
- prev_offset = 0;
- for(;;) {
- if(chainlength++ >= maxchainlength) break;
- current_offset = (unsigned)(hashpos <= wpos ? wpos - hashpos : wpos - hashpos + windowsize);
-
- if(current_offset < prev_offset) break; /*stop when went completely around the circular buffer*/
- prev_offset = current_offset;
- if(current_offset > 0) {
- /*test the next characters*/
- foreptr = &in[pos];
- backptr = &in[pos - current_offset];
-
- /*common case in PNGs is lots of zeros. Quickly skip over them as a speedup*/
- if(numzeros >= 3) {
- unsigned skip = hash->zeros[hashpos];
- if(skip > numzeros) skip = numzeros;
- backptr += skip;
- foreptr += skip;
- }
-
- while(foreptr != lastptr && *backptr == *foreptr) /*maximum supported length by deflate is max length*/ {
- ++backptr;
- ++foreptr;
- }
- current_length = (unsigned)(foreptr - &in[pos]);
-
- if(current_length > length) {
- length = current_length; /*the longest length*/
- offset = current_offset; /*the offset that is related to this longest length*/
- /*jump out once a length of max length is found (speed gain). This also jumps
- out if length is MAX_SUPPORTED_DEFLATE_LENGTH*/
- if(current_length >= nicematch) break;
- }
- }
-
- if(hashpos == hash->chain[hashpos]) break;
-
- if(numzeros >= 3 && length > numzeros) {
- hashpos = hash->chainz[hashpos];
- if(hash->zeros[hashpos] != numzeros) break;
- } else {
- hashpos = hash->chain[hashpos];
- /*outdated hash value, happens if particular value was not encountered in whole last window*/
- if(hash->val[hashpos] != (int)hashval) break;
- }
- }
-
- if(lazymatching) {
- if(!lazy && length >= 3 && length <= maxlazymatch && length < MAX_SUPPORTED_DEFLATE_LENGTH) {
- lazy = 1;
- lazylength = length;
- lazyoffset = offset;
- continue; /*try the next byte*/
- }
- if(lazy) {
- lazy = 0;
- if(pos == 0) ERROR_BREAK(81);
- if(length > lazylength + 1) {
- /*push the previous character as literal*/
- if(!uivector_push_back(out, in[pos - 1])) ERROR_BREAK(83 /*alloc fail*/);
- } else {
- length = lazylength;
- offset = lazyoffset;
- hash->head[hashval] = -1; /*the same hashchain update will be done, this ensures no wrong alteration*/
- hash->headz[numzeros] = -1; /*idem*/
- --pos;
- }
- }
- }
- if(length >= 3 && offset > windowsize) ERROR_BREAK(86 /*too big (or overflown negative) offset*/);
-
- /*encode it as length/distance pair or literal value*/
- if(length < 3) /*only lengths of 3 or higher are supported as length/distance pair*/ {
- if(!uivector_push_back(out, in[pos])) ERROR_BREAK(83 /*alloc fail*/);
- } else if(length < minmatch || (length == 3 && offset > 4096)) {
- /*compensate for the fact that longer offsets have more extra bits, a
- length of only 3 may be not worth it then*/
- if(!uivector_push_back(out, in[pos])) ERROR_BREAK(83 /*alloc fail*/);
- } else {
- addLengthDistance(out, length, offset);
- for(i = 1; i < length; ++i) {
- ++pos;
- wpos = pos & (windowsize - 1);
- hashval = getHash(in, insize, pos);
- if(usezeros && hashval == 0) {
- if(numzeros == 0) numzeros = countZeros(in, insize, pos);
- else if(pos + numzeros > insize || in[pos + numzeros - 1] != 0) --numzeros;
- } else {
- numzeros = 0;
- }
- updateHashChain(hash, wpos, hashval, numzeros);
- }
- }
- } /*end of the loop through each character of input*/
-
- return error;
-}
-
-/* /////////////////////////////////////////////////////////////////////////// */
-
-static unsigned deflateNoCompression(ucvector* out, const unsigned char* data, size_t datasize) {
- /*non compressed deflate block data: 1 bit BFINAL,2 bits BTYPE,(5 bits): it jumps to start of next byte,
- 2 bytes LEN, 2 bytes NLEN, LEN bytes literal DATA*/
-
- size_t i, j, numdeflateblocks = (datasize + 65534) / 65535;
- unsigned datapos = 0;
- for(i = 0; i != numdeflateblocks; ++i) {
- unsigned BFINAL, BTYPE, LEN, NLEN;
- unsigned char firstbyte;
-
- BFINAL = (i == numdeflateblocks - 1);
- BTYPE = 0;
-
- firstbyte = (unsigned char)(BFINAL + ((BTYPE & 1) << 1) + ((BTYPE & 2) << 1));
- ucvector_push_back(out, firstbyte);
-
- LEN = 65535;
- if(datasize - datapos < 65535) LEN = (unsigned)datasize - datapos;
- NLEN = 65535 - LEN;
-
- ucvector_push_back(out, (unsigned char)(LEN & 255));
- ucvector_push_back(out, (unsigned char)(LEN >> 8));
- ucvector_push_back(out, (unsigned char)(NLEN & 255));
- ucvector_push_back(out, (unsigned char)(NLEN >> 8));
-
- /*Decompressed data*/
- for(j = 0; j < 65535 && datapos < datasize; ++j) {
- ucvector_push_back(out, data[datapos++]);
- }
- }
-
- return 0;
-}
-
-/*
-write the lz77-encoded data, which has lit, len and dist codes, to compressed stream using huffman trees.
-tree_ll: the tree for lit and len codes.
-tree_d: the tree for distance codes.
-*/
-static void writeLZ77data(size_t* bp, ucvector* out, const uivector* lz77_encoded,
- const HuffmanTree* tree_ll, const HuffmanTree* tree_d) {
- size_t i = 0;
- for(i = 0; i != lz77_encoded->size; ++i) {
- unsigned val = lz77_encoded->data[i];
- addHuffmanSymbol(bp, out, HuffmanTree_getCode(tree_ll, val), HuffmanTree_getLength(tree_ll, val));
- if(val > 256) /*for a length code, 3 more things have to be added*/ {
- unsigned length_index = val - FIRST_LENGTH_CODE_INDEX;
- unsigned n_length_extra_bits = LENGTHEXTRA[length_index];
- unsigned length_extra_bits = lz77_encoded->data[++i];
-
- unsigned distance_code = lz77_encoded->data[++i];
-
- unsigned distance_index = distance_code;
- unsigned n_distance_extra_bits = DISTANCEEXTRA[distance_index];
- unsigned distance_extra_bits = lz77_encoded->data[++i];
-
- addBitsToStream(bp, out, length_extra_bits, n_length_extra_bits);
- addHuffmanSymbol(bp, out, HuffmanTree_getCode(tree_d, distance_code),
- HuffmanTree_getLength(tree_d, distance_code));
- addBitsToStream(bp, out, distance_extra_bits, n_distance_extra_bits);
- }
- }
-}
-
-/*Deflate for a block of type "dynamic", that is, with freely, optimally, created huffman trees*/
-static unsigned deflateDynamic(ucvector* out, size_t* bp, Hash* hash,
- const unsigned char* data, size_t datapos, size_t dataend,
- const LodePNGCompressSettings* settings, unsigned final) {
- unsigned error = 0;
-
- /*
- A block is compressed as follows: The PNG data is lz77 encoded, resulting in
- literal bytes and length/distance pairs. This is then huffman compressed with
- two huffman trees. One huffman tree is used for the lit and len values ("ll"),
- another huffman tree is used for the dist values ("d"). These two trees are
- stored using their code lengths, and to compress even more these code lengths
- are also run-length encoded and huffman compressed. This gives a huffman tree
- of code lengths "cl". The code lenghts used to describe this third tree are
- the code length code lengths ("clcl").
- */
-
- /*The lz77 encoded data, represented with integers since there will also be length and distance codes in it*/
- uivector lz77_encoded;
- HuffmanTree tree_ll; /*tree for lit,len values*/
- HuffmanTree tree_d; /*tree for distance codes*/
- HuffmanTree tree_cl; /*tree for encoding the code lengths representing tree_ll and tree_d*/
- uivector frequencies_ll; /*frequency of lit,len codes*/
- uivector frequencies_d; /*frequency of dist codes*/
- uivector frequencies_cl; /*frequency of code length codes*/
- uivector bitlen_lld; /*lit,len,dist code lenghts (int bits), literally (without repeat codes).*/
- uivector bitlen_lld_e; /*bitlen_lld encoded with repeat codes (this is a rudemtary run length compression)*/
- /*bitlen_cl is the code length code lengths ("clcl"). The bit lengths of codes to represent tree_cl
- (these are written as is in the file, it would be crazy to compress these using yet another huffman
- tree that needs to be represented by yet another set of code lengths)*/
- uivector bitlen_cl;
- size_t datasize = dataend - datapos;
-
- /*
- Due to the huffman compression of huffman tree representations ("two levels"), there are some anologies:
- bitlen_lld is to tree_cl what data is to tree_ll and tree_d.
- bitlen_lld_e is to bitlen_lld what lz77_encoded is to data.
- bitlen_cl is to bitlen_lld_e what bitlen_lld is to lz77_encoded.
- */
-
- unsigned BFINAL = final;
- size_t numcodes_ll, numcodes_d, i;
- unsigned HLIT, HDIST, HCLEN;
-
- uivector_init(&lz77_encoded);
- HuffmanTree_init(&tree_ll);
- HuffmanTree_init(&tree_d);
- HuffmanTree_init(&tree_cl);
- uivector_init(&frequencies_ll);
- uivector_init(&frequencies_d);
- uivector_init(&frequencies_cl);
- uivector_init(&bitlen_lld);
- uivector_init(&bitlen_lld_e);
- uivector_init(&bitlen_cl);
-
- /*This while loop never loops due to a break at the end, it is here to
- allow breaking out of it to the cleanup phase on error conditions.*/
- while(!error) {
- if(settings->use_lz77) {
- error = encodeLZ77(&lz77_encoded, hash, data, datapos, dataend, settings->windowsize,
- settings->minmatch, settings->nicematch, settings->lazymatching);
- if(error) break;
- } else {
- if(!uivector_resize(&lz77_encoded, datasize)) ERROR_BREAK(83 /*alloc fail*/);
- for(i = datapos; i < dataend; ++i) lz77_encoded.data[i - datapos] = data[i]; /*no LZ77, but still will be Huffman compressed*/
- }
-
- if(!uivector_resizev(&frequencies_ll, 286, 0)) ERROR_BREAK(83 /*alloc fail*/);
- if(!uivector_resizev(&frequencies_d, 30, 0)) ERROR_BREAK(83 /*alloc fail*/);
-
- /*Count the frequencies of lit, len and dist codes*/
- for(i = 0; i != lz77_encoded.size; ++i) {
- unsigned symbol = lz77_encoded.data[i];
- ++frequencies_ll.data[symbol];
- if(symbol > 256) {
- unsigned dist = lz77_encoded.data[i + 2];
- ++frequencies_d.data[dist];
- i += 3;
- }
- }
- frequencies_ll.data[256] = 1; /*there will be exactly 1 end code, at the end of the block*/
-
- /*Make both huffman trees, one for the lit and len codes, one for the dist codes*/
- error = HuffmanTree_makeFromFrequencies(&tree_ll, frequencies_ll.data, 257, frequencies_ll.size, 15);
- if(error) break;
- /*2, not 1, is chosen for mincodes: some buggy PNG decoders require at least 2 symbols in the dist tree*/
- error = HuffmanTree_makeFromFrequencies(&tree_d, frequencies_d.data, 2, frequencies_d.size, 15);
- if(error) break;
-
- numcodes_ll = tree_ll.numcodes; if(numcodes_ll > 286) numcodes_ll = 286;
- numcodes_d = tree_d.numcodes; if(numcodes_d > 30) numcodes_d = 30;
- /*store the code lengths of both generated trees in bitlen_lld*/
- for(i = 0; i != numcodes_ll; ++i) uivector_push_back(&bitlen_lld, HuffmanTree_getLength(&tree_ll, (unsigned)i));
- for(i = 0; i != numcodes_d; ++i) uivector_push_back(&bitlen_lld, HuffmanTree_getLength(&tree_d, (unsigned)i));
-
- /*run-length compress bitlen_ldd into bitlen_lld_e by using repeat codes 16 (copy length 3-6 times),
- 17 (3-10 zeroes), 18 (11-138 zeroes)*/
- for(i = 0; i != (unsigned)bitlen_lld.size; ++i) {
- unsigned j = 0; /*amount of repititions*/
- while(i + j + 1 < (unsigned)bitlen_lld.size && bitlen_lld.data[i + j + 1] == bitlen_lld.data[i]) ++j;
-
- if(bitlen_lld.data[i] == 0 && j >= 2) /*repeat code for zeroes*/ {
- ++j; /*include the first zero*/
- if(j <= 10) /*repeat code 17 supports max 10 zeroes*/ {
- uivector_push_back(&bitlen_lld_e, 17);
- uivector_push_back(&bitlen_lld_e, j - 3);
- } else /*repeat code 18 supports max 138 zeroes*/ {
- if(j > 138) j = 138;
- uivector_push_back(&bitlen_lld_e, 18);
- uivector_push_back(&bitlen_lld_e, j - 11);
- }
- i += (j - 1);
- } else if(j >= 3) /*repeat code for value other than zero*/ {
- size_t k;
- unsigned num = j / 6, rest = j % 6;
- uivector_push_back(&bitlen_lld_e, bitlen_lld.data[i]);
- for(k = 0; k < num; ++k) {
- uivector_push_back(&bitlen_lld_e, 16);
- uivector_push_back(&bitlen_lld_e, 6 - 3);
- }
- if(rest >= 3) {
- uivector_push_back(&bitlen_lld_e, 16);
- uivector_push_back(&bitlen_lld_e, rest - 3);
- }
- else j -= rest;
- i += j;
- } else /*too short to benefit from repeat code*/ {
- uivector_push_back(&bitlen_lld_e, bitlen_lld.data[i]);
- }
- }
-
- /*generate tree_cl, the huffmantree of huffmantrees*/
-
- if(!uivector_resizev(&frequencies_cl, NUM_CODE_LENGTH_CODES, 0)) ERROR_BREAK(83 /*alloc fail*/);
- for(i = 0; i != bitlen_lld_e.size; ++i) {
- ++frequencies_cl.data[bitlen_lld_e.data[i]];
- /*after a repeat code come the bits that specify the number of repetitions,
- those don't need to be in the frequencies_cl calculation*/
- if(bitlen_lld_e.data[i] >= 16) ++i;
- }
-
- error = HuffmanTree_makeFromFrequencies(&tree_cl, frequencies_cl.data,
- frequencies_cl.size, frequencies_cl.size, 7);
- if(error) break;
-
- if(!uivector_resize(&bitlen_cl, tree_cl.numcodes)) ERROR_BREAK(83 /*alloc fail*/);
- for(i = 0; i != tree_cl.numcodes; ++i) {
- /*lenghts of code length tree is in the order as specified by deflate*/
- bitlen_cl.data[i] = HuffmanTree_getLength(&tree_cl, CLCL_ORDER[i]);
- }
- while(bitlen_cl.data[bitlen_cl.size - 1] == 0 && bitlen_cl.size > 4) {
- /*remove zeros at the end, but minimum size must be 4*/
- if(!uivector_resize(&bitlen_cl, bitlen_cl.size - 1)) ERROR_BREAK(83 /*alloc fail*/);
- }
- if(error) break;
-
- /*
- Write everything into the output
-
- After the BFINAL and BTYPE, the dynamic block consists out of the following:
- - 5 bits HLIT, 5 bits HDIST, 4 bits HCLEN
- - (HCLEN+4)*3 bits code lengths of code length alphabet
- - HLIT + 257 code lenghts of lit/length alphabet (encoded using the code length
- alphabet, + possible repetition codes 16, 17, 18)
- - HDIST + 1 code lengths of distance alphabet (encoded using the code length
- alphabet, + possible repetition codes 16, 17, 18)
- - compressed data
- - 256 (end code)
- */
-
- /*Write block type*/
- addBitToStream(bp, out, BFINAL);
- addBitToStream(bp, out, 0); /*first bit of BTYPE "dynamic"*/
- addBitToStream(bp, out, 1); /*second bit of BTYPE "dynamic"*/
-
- /*write the HLIT, HDIST and HCLEN values*/
- HLIT = (unsigned)(numcodes_ll - 257);
- HDIST = (unsigned)(numcodes_d - 1);
- HCLEN = (unsigned)bitlen_cl.size - 4;
- /*trim zeroes for HCLEN. HLIT and HDIST were already trimmed at tree creation*/
- while(!bitlen_cl.data[HCLEN + 4 - 1] && HCLEN > 0) --HCLEN;
- addBitsToStream(bp, out, HLIT, 5);
- addBitsToStream(bp, out, HDIST, 5);
- addBitsToStream(bp, out, HCLEN, 4);
-
- /*write the code lenghts of the code length alphabet*/
- for(i = 0; i != HCLEN + 4; ++i) addBitsToStream(bp, out, bitlen_cl.data[i], 3);
-
- /*write the lenghts of the lit/len AND the dist alphabet*/
- for(i = 0; i != bitlen_lld_e.size; ++i) {
- addHuffmanSymbol(bp, out, HuffmanTree_getCode(&tree_cl, bitlen_lld_e.data[i]),
- HuffmanTree_getLength(&tree_cl, bitlen_lld_e.data[i]));
- /*extra bits of repeat codes*/
- if(bitlen_lld_e.data[i] == 16) addBitsToStream(bp, out, bitlen_lld_e.data[++i], 2);
- else if(bitlen_lld_e.data[i] == 17) addBitsToStream(bp, out, bitlen_lld_e.data[++i], 3);
- else if(bitlen_lld_e.data[i] == 18) addBitsToStream(bp, out, bitlen_lld_e.data[++i], 7);
- }
-
- /*write the compressed data symbols*/
- writeLZ77data(bp, out, &lz77_encoded, &tree_ll, &tree_d);
- /*error: the length of the end code 256 must be larger than 0*/
- if(HuffmanTree_getLength(&tree_ll, 256) == 0) ERROR_BREAK(64);
-
- /*write the end code*/
- addHuffmanSymbol(bp, out, HuffmanTree_getCode(&tree_ll, 256), HuffmanTree_getLength(&tree_ll, 256));
-
- break; /*end of error-while*/
- }
-
- /*cleanup*/
- uivector_cleanup(&lz77_encoded);
- HuffmanTree_cleanup(&tree_ll);
- HuffmanTree_cleanup(&tree_d);
- HuffmanTree_cleanup(&tree_cl);
- uivector_cleanup(&frequencies_ll);
- uivector_cleanup(&frequencies_d);
- uivector_cleanup(&frequencies_cl);
- uivector_cleanup(&bitlen_lld_e);
- uivector_cleanup(&bitlen_lld);
- uivector_cleanup(&bitlen_cl);
-
- return error;
-}
-
-static unsigned deflateFixed(ucvector* out, size_t* bp, Hash* hash,
- const unsigned char* data,
- size_t datapos, size_t dataend,
- const LodePNGCompressSettings* settings, unsigned final) {
- HuffmanTree tree_ll; /*tree for literal values and length codes*/
- HuffmanTree tree_d; /*tree for distance codes*/
-
- unsigned BFINAL = final;
- unsigned error = 0;
- size_t i;
-
- HuffmanTree_init(&tree_ll);
- HuffmanTree_init(&tree_d);
-
- generateFixedLitLenTree(&tree_ll);
- generateFixedDistanceTree(&tree_d);
-
- addBitToStream(bp, out, BFINAL);
- addBitToStream(bp, out, 1); /*first bit of BTYPE*/
- addBitToStream(bp, out, 0); /*second bit of BTYPE*/
-
- if(settings->use_lz77) /*LZ77 encoded*/ {
- uivector lz77_encoded;
- uivector_init(&lz77_encoded);
- error = encodeLZ77(&lz77_encoded, hash, data, datapos, dataend, settings->windowsize,
- settings->minmatch, settings->nicematch, settings->lazymatching);
- if(!error) writeLZ77data(bp, out, &lz77_encoded, &tree_ll, &tree_d);
- uivector_cleanup(&lz77_encoded);
- } else /*no LZ77, but still will be Huffman compressed*/ {
- for(i = datapos; i < dataend; ++i) {
- addHuffmanSymbol(bp, out, HuffmanTree_getCode(&tree_ll, data[i]), HuffmanTree_getLength(&tree_ll, data[i]));
- }
- }
- /*add END code*/
- if(!error) addHuffmanSymbol(bp, out, HuffmanTree_getCode(&tree_ll, 256), HuffmanTree_getLength(&tree_ll, 256));
-
- /*cleanup*/
- HuffmanTree_cleanup(&tree_ll);
- HuffmanTree_cleanup(&tree_d);
-
- return error;
-}
-
-static unsigned lodepng_deflatev(ucvector* out, const unsigned char* in, size_t insize,
- const LodePNGCompressSettings* settings) {
- unsigned error = 0;
- size_t i, blocksize, numdeflateblocks;
- size_t bp = 0; /*the bit pointer*/
- Hash hash;
-
- if(settings->btype > 2) return 61;
- else if(settings->btype == 0) return deflateNoCompression(out, in, insize);
- else if(settings->btype == 1) blocksize = insize;
- else /*if(settings->btype == 2)*/ {
- /*on PNGs, deflate blocks of 65-262k seem to give most dense encoding*/
- blocksize = insize / 8 + 8;
- if(blocksize < 65536) blocksize = 65536;
- if(blocksize > 262144) blocksize = 262144;
- }
-
- numdeflateblocks = (insize + blocksize - 1) / blocksize;
- if(numdeflateblocks == 0) numdeflateblocks = 1;
-
- error = hash_init(&hash, settings->windowsize);
- if(error) return error;
-
- for(i = 0; i != numdeflateblocks && !error; ++i) {
- unsigned final = (i == numdeflateblocks - 1);
- size_t start = i * blocksize;
- size_t end = start + blocksize;
- if(end > insize) end = insize;
-
- if(settings->btype == 1) error = deflateFixed(out, &bp, &hash, in, start, end, settings, final);
- else if(settings->btype == 2) error = deflateDynamic(out, &bp, &hash, in, start, end, settings, final);
- }
-
- hash_cleanup(&hash);
-
- return error;
-}
-
-unsigned lodepng_deflate(unsigned char** out, size_t* outsize,
- const unsigned char* in, size_t insize,
- const LodePNGCompressSettings* settings) {
- unsigned error;
- ucvector v;
- ucvector_init_buffer(&v, *out, *outsize);
- error = lodepng_deflatev(&v, in, insize, settings);
- *out = v.data;
- *outsize = v.size;
- return error;
-}
-
-static unsigned deflate(unsigned char** out, size_t* outsize,
- const unsigned char* in, size_t insize,
- const LodePNGCompressSettings* settings) {
- if(settings->custom_deflate) {
- return settings->custom_deflate(out, outsize, in, insize, settings);
- } else {
- return lodepng_deflate(out, outsize, in, insize, settings);
- }
-}
-
-#endif /*LODEPNG_COMPILE_DECODER*/
-
-/* ////////////////////////////////////////////////////////////////////////// */
-/* / Adler32 */
-/* ////////////////////////////////////////////////////////////////////////// */
-
-static unsigned update_adler32(unsigned adler, const unsigned char* data, unsigned len) {
- unsigned s1 = adler & 0xffff;
- unsigned s2 = (adler >> 16) & 0xffff;
-
- while(len > 0) {
- /*at least 5552 sums can be done before the sums overflow, saving a lot of module divisions*/
- unsigned amount = len > 5552 ? 5552 : len;
- len -= amount;
- while(amount > 0) {
- s1 += (*data++);
- s2 += s1;
- --amount;
- }
- s1 %= 65521;
- s2 %= 65521;
- }
-
- return (s2 << 16) | s1;
-}
-
-/*Return the adler32 of the bytes data[0..len-1]*/
-static unsigned adler32(const unsigned char* data, unsigned len) {
- return update_adler32(1L, data, len);
-}
-
-/* ////////////////////////////////////////////////////////////////////////// */
-/* / Zlib / */
-/* ////////////////////////////////////////////////////////////////////////// */
-
-#ifdef LODEPNG_COMPILE_DECODER
-
-unsigned lodepng_zlib_decompress(unsigned char** out, size_t* outsize, const unsigned char* in,
- size_t insize, const LodePNGDecompressSettings* settings) {
- unsigned error = 0;
- unsigned CM, CINFO, FDICT;
-
- if(insize < 2) return 53; /*error, size of zlib data too small*/
- /*read information from zlib header*/
- if((in[0] * 256 + in[1]) % 31 != 0) {
- /*error: 256 * in[0] + in[1] must be a multiple of 31, the FCHECK value is supposed to be made that way*/
- return 24;
- }
-
- CM = in[0] & 15;
- CINFO = (in[0] >> 4) & 15;
- /*FCHECK = in[1] & 31;*/ /*FCHECK is already tested above*/
- FDICT = (in[1] >> 5) & 1;
- /*FLEVEL = (in[1] >> 6) & 3;*/ /*FLEVEL is not used here*/
-
- if(CM != 8 || CINFO > 7) {
- /*error: only compression method 8: inflate with sliding window of 32k is supported by the PNG spec*/
- return 25;
- }
- if(FDICT != 0) {
- /*error: the specification of PNG says about the zlib stream:
- "The additional flags shall not specify a preset dictionary."*/
- return 26;
- }
-
- error = inflate(out, outsize, in + 2, insize - 2, settings);
- if(error) return error;
-
- if(!settings->ignore_adler32) {
- unsigned ADLER32 = lodepng_read32bitInt(&in[insize - 4]);
- unsigned checksum = adler32(*out, (unsigned)(*outsize));
- if(checksum != ADLER32) return 58; /*error, adler checksum not correct, data must be corrupted*/
- }
-
- return 0; /*no error*/
-}
-
-static unsigned zlib_decompress(unsigned char** out, size_t* outsize, const unsigned char* in,
- size_t insize, const LodePNGDecompressSettings* settings) {
- if(settings->custom_zlib) {
- return settings->custom_zlib(out, outsize, in, insize, settings);
- } else {
- return lodepng_zlib_decompress(out, outsize, in, insize, settings);
- }
-}
-
-#endif /*LODEPNG_COMPILE_DECODER*/
-
-#ifdef LODEPNG_COMPILE_ENCODER
-
-unsigned lodepng_zlib_compress(unsigned char** out, size_t* outsize, const unsigned char* in,
- size_t insize, const LodePNGCompressSettings* settings) {
- /*initially, *out must be NULL and outsize 0, if you just give some random *out
- that's pointing to a non allocated buffer, this'll crash*/
- ucvector outv;
- size_t i;
- unsigned error;
- unsigned char* deflatedata = 0;
- size_t deflatesize = 0;
-
- /*zlib data: 1 byte CMF (CM+CINFO), 1 byte FLG, deflate data, 4 byte ADLER32 checksum of the Decompressed data*/
- unsigned CMF = 120; /*0b01111000: CM 8, CINFO 7. With CINFO 7, any window size up to 32768 can be used.*/
- unsigned FLEVEL = 0;
- unsigned FDICT = 0;
- unsigned CMFFLG = 256 * CMF + FDICT * 32 + FLEVEL * 64;
- unsigned FCHECK = 31 - CMFFLG % 31;
- CMFFLG += FCHECK;
-
- /*ucvector-controlled version of the output buffer, for dynamic array*/
- ucvector_init_buffer(&outv, *out, *outsize);
-
- ucvector_push_back(&outv, (unsigned char)(CMFFLG >> 8));
- ucvector_push_back(&outv, (unsigned char)(CMFFLG & 255));
-
- error = deflate(&deflatedata, &deflatesize, in, insize, settings);
-
- if(!error) {
- unsigned ADLER32 = adler32(in, (unsigned)insize);
- for(i = 0; i != deflatesize; ++i) ucvector_push_back(&outv, deflatedata[i]);
- lodepng_free(deflatedata);
- lodepng_add32bitInt(&outv, ADLER32);
- }
-
- *out = outv.data;
- *outsize = outv.size;
-
- return error;
-}
-
-/* compress using the default or custom zlib function */
-static unsigned zlib_compress(unsigned char** out, size_t* outsize, const unsigned char* in,
- size_t insize, const LodePNGCompressSettings* settings) {
- if(settings->custom_zlib) {
- return settings->custom_zlib(out, outsize, in, insize, settings);
- } else {
- return lodepng_zlib_compress(out, outsize, in, insize, settings);
- }
-}
-
-#endif /*LODEPNG_COMPILE_ENCODER*/
-
-#else /*no LODEPNG_COMPILE_ZLIB*/
-
-#ifdef LODEPNG_COMPILE_DECODER
-static unsigned zlib_decompress(unsigned char** out, size_t* outsize, const unsigned char* in,
- size_t insize, const LodePNGDecompressSettings* settings) {
- if(!settings->custom_zlib) return 87; /*no custom zlib function provided */
- return settings->custom_zlib(out, outsize, in, insize, settings);
-}
-#endif /*LODEPNG_COMPILE_DECODER*/
-#ifdef LODEPNG_COMPILE_ENCODER
-static unsigned zlib_compress(unsigned char** out, size_t* outsize, const unsigned char* in,
- size_t insize, const LodePNGCompressSettings* settings) {
- if(!settings->custom_zlib) return 87; /*no custom zlib function provided */
- return settings->custom_zlib(out, outsize, in, insize, settings);
-}
-#endif /*LODEPNG_COMPILE_ENCODER*/
-
-#endif /*LODEPNG_COMPILE_ZLIB*/
-
-/* ////////////////////////////////////////////////////////////////////////// */
-
-#ifdef LODEPNG_COMPILE_ENCODER
-
-/*this is a good tradeoff between speed and compression ratio*/
-#define DEFAULT_WINDOWSIZE 2048
-
-void lodepng_compress_settings_init(LodePNGCompressSettings* settings) {
- /*compress with dynamic huffman tree (not in the mathematical sense, just not the predefined one)*/
- settings->btype = 2;
- settings->use_lz77 = 1;
- settings->windowsize = DEFAULT_WINDOWSIZE;
- settings->minmatch = 3;
- settings->nicematch = 128;
- settings->lazymatching = 1;
-
- settings->custom_zlib = 0;
- settings->custom_deflate = 0;
- settings->custom_context = 0;
-}
-
-const LodePNGCompressSettings lodepng_default_compress_settings = {2, 1, DEFAULT_WINDOWSIZE, 3, 128, 1, 0, 0, 0};
-
-
-#endif /*LODEPNG_COMPILE_ENCODER*/
-
-#ifdef LODEPNG_COMPILE_DECODER
-
-void lodepng_decompress_settings_init(LodePNGDecompressSettings* settings) {
- settings->ignore_adler32 = 0;
-
- settings->custom_zlib = 0;
- settings->custom_inflate = 0;
- settings->custom_context = 0;
-}
-
-const LodePNGDecompressSettings lodepng_default_decompress_settings = {0, 0, 0, 0};
-
-#endif /*LODEPNG_COMPILE_DECODER*/
-
-/* ////////////////////////////////////////////////////////////////////////// */
-/* ////////////////////////////////////////////////////////////////////////// */
-/* // End of Zlib related code. Begin of PNG related code. // */
-/* ////////////////////////////////////////////////////////////////////////// */
-/* ////////////////////////////////////////////////////////////////////////// */
-
-#ifdef LODEPNG_COMPILE_PNG
-
-/* ////////////////////////////////////////////////////////////////////////// */
-/* / CRC32 / */
-/* ////////////////////////////////////////////////////////////////////////// */
-
-
-#ifndef LODEPNG_NO_COMPILE_CRC
-/* CRC polynomial: 0xedb88320 */
-static unsigned lodepng_crc32_table[256] = {
- 0u, 1996959894u, 3993919788u, 2567524794u, 124634137u, 1886057615u, 3915621685u, 2657392035u,
- 249268274u, 2044508324u, 3772115230u, 2547177864u, 162941995u, 2125561021u, 3887607047u, 2428444049u,
- 498536548u, 1789927666u, 4089016648u, 2227061214u, 450548861u, 1843258603u, 4107580753u, 2211677639u,
- 325883990u, 1684777152u, 4251122042u, 2321926636u, 335633487u, 1661365465u, 4195302755u, 2366115317u,
- 997073096u, 1281953886u, 3579855332u, 2724688242u, 1006888145u, 1258607687u, 3524101629u, 2768942443u,
- 901097722u, 1119000684u, 3686517206u, 2898065728u, 853044451u, 1172266101u, 3705015759u, 2882616665u,
- 651767980u, 1373503546u, 3369554304u, 3218104598u, 565507253u, 1454621731u, 3485111705u, 3099436303u,
- 671266974u, 1594198024u, 3322730930u, 2970347812u, 795835527u, 1483230225u, 3244367275u, 3060149565u,
- 1994146192u, 31158534u, 2563907772u, 4023717930u, 1907459465u, 112637215u, 2680153253u, 3904427059u,
- 2013776290u, 251722036u, 2517215374u, 3775830040u, 2137656763u, 141376813u, 2439277719u, 3865271297u,
- 1802195444u, 476864866u, 2238001368u, 4066508878u, 1812370925u, 453092731u, 2181625025u, 4111451223u,
- 1706088902u, 314042704u, 2344532202u, 4240017532u, 1658658271u, 366619977u, 2362670323u, 4224994405u,
- 1303535960u, 984961486u, 2747007092u, 3569037538u, 1256170817u, 1037604311u, 2765210733u, 3554079995u,
- 1131014506u, 879679996u, 2909243462u, 3663771856u, 1141124467u, 855842277u, 2852801631u, 3708648649u,
- 1342533948u, 654459306u, 3188396048u, 3373015174u, 1466479909u, 544179635u, 3110523913u, 3462522015u,
- 1591671054u, 702138776u, 2966460450u, 3352799412u, 1504918807u, 783551873u, 3082640443u, 3233442989u,
- 3988292384u, 2596254646u, 62317068u, 1957810842u, 3939845945u, 2647816111u, 81470997u, 1943803523u,
- 3814918930u, 2489596804u, 225274430u, 2053790376u, 3826175755u, 2466906013u, 167816743u, 2097651377u,
- 4027552580u, 2265490386u, 503444072u, 1762050814u, 4150417245u, 2154129355u, 426522225u, 1852507879u,
- 4275313526u, 2312317920u, 282753626u, 1742555852u, 4189708143u, 2394877945u, 397917763u, 1622183637u,
- 3604390888u, 2714866558u, 953729732u, 1340076626u, 3518719985u, 2797360999u, 1068828381u, 1219638859u,
- 3624741850u, 2936675148u, 906185462u, 1090812512u, 3747672003u, 2825379669u, 829329135u, 1181335161u,
- 3412177804u, 3160834842u, 628085408u, 1382605366u, 3423369109u, 3138078467u, 570562233u, 1426400815u,
- 3317316542u, 2998733608u, 733239954u, 1555261956u, 3268935591u, 3050360625u, 752459403u, 1541320221u,
- 2607071920u, 3965973030u, 1969922972u, 40735498u, 2617837225u, 3943577151u, 1913087877u, 83908371u,
- 2512341634u, 3803740692u, 2075208622u, 213261112u, 2463272603u, 3855990285u, 2094854071u, 198958881u,
- 2262029012u, 4057260610u, 1759359992u, 534414190u, 2176718541u, 4139329115u, 1873836001u, 414664567u,
- 2282248934u, 4279200368u, 1711684554u, 285281116u, 2405801727u, 4167216745u, 1634467795u, 376229701u,
- 2685067896u, 3608007406u, 1308918612u, 956543938u, 2808555105u, 3495958263u, 1231636301u, 1047427035u,
- 2932959818u, 3654703836u, 1088359270u, 936918000u, 2847714899u, 3736837829u, 1202900863u, 817233897u,
- 3183342108u, 3401237130u, 1404277552u, 615818150u, 3134207493u, 3453421203u, 1423857449u, 601450431u,
- 3009837614u, 3294710456u, 1567103746u, 711928724u, 3020668471u, 3272380065u, 1510334235u, 755167117u
-};
-
-/*Return the CRC of the bytes buf[0..len-1].*/
-unsigned lodepng_crc32(const unsigned char* data, size_t length) {
- unsigned r = 0xffffffffu;
- size_t i;
- for(i = 0; i < length; ++i) {
- r = lodepng_crc32_table[(r ^ data[i]) & 0xff] ^ (r >> 8);
- }
- return r ^ 0xffffffffu;
-}
-#else /* !LODEPNG_NO_COMPILE_CRC */
-unsigned lodepng_crc32(const unsigned char* data, size_t length);
-#endif /* !LODEPNG_NO_COMPILE_CRC */
-
-/* ////////////////////////////////////////////////////////////////////////// */
-/* / Reading and writing single bits and bytes from/to stream for LodePNG / */
-/* ////////////////////////////////////////////////////////////////////////// */
-
-static unsigned char readBitFromReversedStream(size_t* bitpointer, const unsigned char* bitstream) {
- unsigned char result = (unsigned char)((bitstream[(*bitpointer) >> 3] >> (7 - ((*bitpointer) & 0x7))) & 1);
- ++(*bitpointer);
- return result;
-}
-
-static unsigned readBitsFromReversedStream(size_t* bitpointer, const unsigned char* bitstream, size_t nbits) {
- unsigned result = 0;
- size_t i;
- for(i = 0 ; i < nbits; ++i) {
- result <<= 1;
- result |= (unsigned)readBitFromReversedStream(bitpointer, bitstream);
- }
- return result;
-}
-
-#ifdef LODEPNG_COMPILE_DECODER
-static void setBitOfReversedStream0(size_t* bitpointer, unsigned char* bitstream, unsigned char bit) {
- /*the current bit in bitstream must be 0 for this to work*/
- if(bit) {
- /*earlier bit of huffman code is in a lesser significant bit of an earlier byte*/
- bitstream[(*bitpointer) >> 3] |= (bit << (7 - ((*bitpointer) & 0x7)));
- }
- ++(*bitpointer);
-}
-#endif /*LODEPNG_COMPILE_DECODER*/
-
-static void setBitOfReversedStream(size_t* bitpointer, unsigned char* bitstream, unsigned char bit) {
- /*the current bit in bitstream may be 0 or 1 for this to work*/
- if(bit == 0) bitstream[(*bitpointer) >> 3] &= (unsigned char)(~(1 << (7 - ((*bitpointer) & 0x7))));
- else bitstream[(*bitpointer) >> 3] |= (1 << (7 - ((*bitpointer) & 0x7)));
- ++(*bitpointer);
-}
-
-/* ////////////////////////////////////////////////////////////////////////// */
-/* / PNG chunks / */
-/* ////////////////////////////////////////////////////////////////////////// */
-
-unsigned lodepng_chunk_length(const unsigned char* chunk) {
- return lodepng_read32bitInt(&chunk[0]);
-}
-
-void lodepng_chunk_type(char type[5], const unsigned char* chunk) {
- unsigned i;
- for(i = 0; i != 4; ++i) type[i] = (char)chunk[4 + i];
- type[4] = 0; /*null termination char*/
-}
-
-unsigned char lodepng_chunk_type_equals(const unsigned char* chunk, const char* type) {
- if(strlen(type) != 4) return 0;
- return (chunk[4] == type[0] && chunk[5] == type[1] && chunk[6] == type[2] && chunk[7] == type[3]);
-}
-
-unsigned char lodepng_chunk_ancillary(const unsigned char* chunk) {
- return((chunk[4] & 32) != 0);
-}
-
-unsigned char lodepng_chunk_private(const unsigned char* chunk) {
- return((chunk[6] & 32) != 0);
-}
-
-unsigned char lodepng_chunk_safetocopy(const unsigned char* chunk) {
- return((chunk[7] & 32) != 0);
-}
-
-unsigned char* lodepng_chunk_data(unsigned char* chunk) {
- return &chunk[8];
-}
-
-const unsigned char* lodepng_chunk_data_const(const unsigned char* chunk) {
- return &chunk[8];
-}
-
-unsigned lodepng_chunk_check_crc(const unsigned char* chunk) {
- unsigned length = lodepng_chunk_length(chunk);
- unsigned CRC = lodepng_read32bitInt(&chunk[length + 8]);
- /*the CRC is taken of the data and the 4 chunk type letters, not the length*/
- unsigned checksum = lodepng_crc32(&chunk[4], length + 4);
- if(CRC != checksum) return 1;
- else return 0;
-}
-
-void lodepng_chunk_generate_crc(unsigned char* chunk) {
- unsigned length = lodepng_chunk_length(chunk);
- unsigned CRC = lodepng_crc32(&chunk[4], length + 4);
- lodepng_set32bitInt(chunk + 8 + length, CRC);
-}
-
-unsigned char* lodepng_chunk_next(unsigned char* chunk) {
- if(chunk[0] == 0x89 && chunk[1] == 0x50 && chunk[2] == 0x4e && chunk[3] == 0x47
- && chunk[4] == 0x0d && chunk[5] == 0x0a && chunk[6] == 0x1a && chunk[7] == 0x0a) {
- /* Is PNG magic header at start of PNG file. Jump to first actual chunk. */
- return chunk + 8;
- } else {
- unsigned total_chunk_length = lodepng_chunk_length(chunk) + 12;
- return chunk + total_chunk_length;
- }
-}
-
-const unsigned char* lodepng_chunk_next_const(const unsigned char* chunk) {
- if(chunk[0] == 0x89 && chunk[1] == 0x50 && chunk[2] == 0x4e && chunk[3] == 0x47
- && chunk[4] == 0x0d && chunk[5] == 0x0a && chunk[6] == 0x1a && chunk[7] == 0x0a) {
- /* Is PNG magic header at start of PNG file. Jump to first actual chunk. */
- return chunk + 8;
- } else {
- unsigned total_chunk_length = lodepng_chunk_length(chunk) + 12;
- return chunk + total_chunk_length;
- }
-}
-
-unsigned char* lodepng_chunk_find(unsigned char* chunk, const unsigned char* end, const char type[5]) {
- for(;;) {
- if(chunk + 12 >= end) return 0;
- if(lodepng_chunk_type_equals(chunk, type)) return chunk;
- chunk = lodepng_chunk_next(chunk);
- }
-}
-
-const unsigned char* lodepng_chunk_find_const(const unsigned char* chunk, const unsigned char* end, const char type[5]) {
- for(;;) {
- if(chunk + 12 >= end) return 0;
- if(lodepng_chunk_type_equals(chunk, type)) return chunk;
- chunk = lodepng_chunk_next_const(chunk);
- }
-}
-
-unsigned lodepng_chunk_append(unsigned char** out, size_t* outlength, const unsigned char* chunk) {
- unsigned i;
- unsigned total_chunk_length = lodepng_chunk_length(chunk) + 12;
- unsigned char *chunk_start, *new_buffer;
- size_t new_length = (*outlength) + total_chunk_length;
- if(new_length < total_chunk_length || new_length < (*outlength)) return 77; /*integer overflow happened*/
-
- new_buffer = (unsigned char*)lodepng_realloc(*out, new_length);
- if(!new_buffer) return 83; /*alloc fail*/
- (*out) = new_buffer;
- (*outlength) = new_length;
- chunk_start = &(*out)[new_length - total_chunk_length];
-
- for(i = 0; i != total_chunk_length; ++i) chunk_start[i] = chunk[i];
-
- return 0;
-}
-
-unsigned lodepng_chunk_create(unsigned char** out, size_t* outlength, unsigned length,
- const char* type, const unsigned char* data) {
- unsigned i;
- unsigned char *chunk, *new_buffer;
- size_t new_length = (*outlength) + length + 12;
- if(new_length < length + 12 || new_length < (*outlength)) return 77; /*integer overflow happened*/
- new_buffer = (unsigned char*)lodepng_realloc(*out, new_length);
- if(!new_buffer) return 83; /*alloc fail*/
- (*out) = new_buffer;
- (*outlength) = new_length;
- chunk = &(*out)[(*outlength) - length - 12];
-
- /*1: length*/
- lodepng_set32bitInt(chunk, (unsigned)length);
-
- /*2: chunk name (4 letters)*/
- chunk[4] = (unsigned char)type[0];
- chunk[5] = (unsigned char)type[1];
- chunk[6] = (unsigned char)type[2];
- chunk[7] = (unsigned char)type[3];
-
- /*3: the data*/
- for(i = 0; i != length; ++i) chunk[8 + i] = data[i];
-
- /*4: CRC (of the chunkname characters and the data)*/
- lodepng_chunk_generate_crc(chunk);
-
- return 0;
-}
-
-/* ////////////////////////////////////////////////////////////////////////// */
-/* / Color types and such / */
-/* ////////////////////////////////////////////////////////////////////////// */
-
-/*return type is a LodePNG error code*/
-static unsigned checkColorValidity(LodePNGColorType colortype, unsigned bd) /*bd = bitdepth*/ {
- switch(colortype) {
- case 0: if(!(bd == 1 || bd == 2 || bd == 4 || bd == 8 || bd == 16)) return 37; break; /*gray*/
- case 2: if(!( bd == 8 || bd == 16)) return 37; break; /*RGB*/
- case 3: if(!(bd == 1 || bd == 2 || bd == 4 || bd == 8 )) return 37; break; /*palette*/
- case 4: if(!( bd == 8 || bd == 16)) return 37; break; /*gray + alpha*/
- case 6: if(!( bd == 8 || bd == 16)) return 37; break; /*RGBA*/
- default: return 31;
- }
- return 0; /*allowed color type / bits combination*/
-}
-
-static unsigned getNumColorChannels(LodePNGColorType colortype) {
- switch(colortype) {
- case 0: return 1; /*gray*/
- case 2: return 3; /*RGB*/
- case 3: return 1; /*palette*/
- case 4: return 2; /*gray + alpha*/
- case 6: return 4; /*RGBA*/
- }
- return 0; /*unexisting color type*/
-}
-
-static unsigned lodepng_get_bpp_lct(LodePNGColorType colortype, unsigned bitdepth) {
- /*bits per pixel is amount of channels * bits per channel*/
- return getNumColorChannels(colortype) * bitdepth;
-}
-
-/* ////////////////////////////////////////////////////////////////////////// */
-
-void lodepng_color_mode_init(LodePNGColorMode* info) {
- info->key_defined = 0;
- info->key_r = info->key_g = info->key_b = 0;
- info->colortype = LCT_RGBA;
- info->bitdepth = 8;
- info->palette = 0;
- info->palettesize = 0;
-}
-
-void lodepng_color_mode_cleanup(LodePNGColorMode* info) {
- lodepng_palette_clear(info);
-}
-
-unsigned lodepng_color_mode_copy(LodePNGColorMode* dest, const LodePNGColorMode* source) {
- size_t i;
- lodepng_color_mode_cleanup(dest);
- *dest = *source;
- if(source->palette) {
- dest->palette = (unsigned char*)lodepng_malloc(1024);
- if(!dest->palette && source->palettesize) return 83; /*alloc fail*/
- for(i = 0; i != source->palettesize * 4; ++i) dest->palette[i] = source->palette[i];
- }
- return 0;
-}
-
-LodePNGColorMode lodepng_color_mode_make(LodePNGColorType colortype, unsigned bitdepth) {
- LodePNGColorMode result;
- lodepng_color_mode_init(&result);
- result.colortype = colortype;
- result.bitdepth = bitdepth;
- return result;
-}
-
-static int lodepng_color_mode_equal(const LodePNGColorMode* a, const LodePNGColorMode* b) {
- size_t i;
- if(a->colortype != b->colortype) return 0;
- if(a->bitdepth != b->bitdepth) return 0;
- if(a->key_defined != b->key_defined) return 0;
- if(a->key_defined) {
- if(a->key_r != b->key_r) return 0;
- if(a->key_g != b->key_g) return 0;
- if(a->key_b != b->key_b) return 0;
- }
- if(a->palettesize != b->palettesize) return 0;
- for(i = 0; i != a->palettesize * 4; ++i) {
- if(a->palette[i] != b->palette[i]) return 0;
- }
- return 1;
-}
-
-void lodepng_palette_clear(LodePNGColorMode* info) {
- if(info->palette) lodepng_free(info->palette);
- info->palette = 0;
- info->palettesize = 0;
-}
-
-unsigned lodepng_palette_add(LodePNGColorMode* info,
- unsigned char r, unsigned char g, unsigned char b, unsigned char a) {
- unsigned char* data;
- /*the same resize technique as C++ std::vectors is used, and here it's made so that for a palette with
- the max of 256 colors, it'll have the exact alloc size*/
- if(!info->palette) /*allocate palette if empty*/ {
- /*room for 256 colors with 4 bytes each*/
- data = (unsigned char*)lodepng_realloc(info->palette, 1024);
- if(!data) return 83; /*alloc fail*/
- else info->palette = data;
- }
- info->palette[4 * info->palettesize + 0] = r;
- info->palette[4 * info->palettesize + 1] = g;
- info->palette[4 * info->palettesize + 2] = b;
- info->palette[4 * info->palettesize + 3] = a;
- ++info->palettesize;
- return 0;
-}
-
-/*calculate bits per pixel out of colortype and bitdepth*/
-unsigned lodepng_get_bpp(const LodePNGColorMode* info) {
- return lodepng_get_bpp_lct(info->colortype, info->bitdepth);
-}
-
-unsigned lodepng_get_channels(const LodePNGColorMode* info) {
- return getNumColorChannels(info->colortype);
-}
-
-unsigned lodepng_is_greyscale_type(const LodePNGColorMode* info) {
- return info->colortype == LCT_GREY || info->colortype == LCT_GREY_ALPHA;
-}
-
-unsigned lodepng_is_alpha_type(const LodePNGColorMode* info) {
- return (info->colortype & 4) != 0; /*4 or 6*/
-}
-
-unsigned lodepng_is_palette_type(const LodePNGColorMode* info) {
- return info->colortype == LCT_PALETTE;
-}
-
-unsigned lodepng_has_palette_alpha(const LodePNGColorMode* info) {
- size_t i;
- for(i = 0; i != info->palettesize; ++i) {
- if(info->palette[i * 4 + 3] < 255) return 1;
- }
- return 0;
-}
-
-unsigned lodepng_can_have_alpha(const LodePNGColorMode* info) {
- return info->key_defined
- || lodepng_is_alpha_type(info)
- || lodepng_has_palette_alpha(info);
-}
-
-size_t lodepng_get_raw_size_lct(unsigned w, unsigned h, LodePNGColorType colortype, unsigned bitdepth) {
- size_t bpp = lodepng_get_bpp_lct(colortype, bitdepth);
- size_t n = (size_t)w * (size_t)h;
- return ((n / 8) * bpp) + ((n & 7) * bpp + 7) / 8;
-}
-
-size_t lodepng_get_raw_size(unsigned w, unsigned h, const LodePNGColorMode* color) {
- return lodepng_get_raw_size_lct(w, h, color->colortype, color->bitdepth);
-}
-
-
-#ifdef LODEPNG_COMPILE_PNG
-#ifdef LODEPNG_COMPILE_DECODER
-
-/*in an idat chunk, each scanline is a multiple of 8 bits, unlike the lodepng output buffer,
-and in addition has one extra byte per line: the filter byte. So this gives a larger
-result than lodepng_get_raw_size. */
-static size_t lodepng_get_raw_size_idat(unsigned w, unsigned h, const LodePNGColorMode* color) {
- size_t bpp = lodepng_get_bpp(color);
- /* + 1 for the filter byte, and possibly plus padding bits per line */
- size_t line = ((size_t)(w / 8) * bpp) + 1 + ((w & 7) * bpp + 7) / 8;
- return (size_t)h * line;
-}
-
-/* Safely check if multiplying two integers will overflow (no undefined
-behavior, compiler removing the code, etc...) and output result. */
-static int lodepng_mulofl(size_t a, size_t b, size_t* result) {
- *result = a * b; /* Unsigned multiplication is well defined and safe in C90 */
- return (a != 0 && *result / a != b);
-}
-
-/* Safely check if adding two integers will overflow (no undefined
-behavior, compiler removing the code, etc...) and output result. */
-static int lodepng_addofl(size_t a, size_t b, size_t* result) {
- *result = a + b; /* Unsigned addition is well defined and safe in C90 */
- return *result < a;
-}
-
-/*Safely checks whether size_t overflow can be caused due to amount of pixels.
-This check is overcautious rather than precise. If this check indicates no overflow,
-you can safely compute in a size_t (but not an unsigned):
--(size_t)w * (size_t)h * 8
--amount of bytes in IDAT (including filter, padding and Adam7 bytes)
--amount of bytes in raw color model
-Returns 1 if overflow possible, 0 if not.
-*/
-static int lodepng_pixel_overflow(unsigned w, unsigned h,
- const LodePNGColorMode* pngcolor, const LodePNGColorMode* rawcolor) {
- size_t bpp = LODEPNG_MAX(lodepng_get_bpp(pngcolor), lodepng_get_bpp(rawcolor));
- size_t numpixels, total;
- size_t line; /* bytes per line in worst case */
-
- if(lodepng_mulofl((size_t)w, (size_t)h, &numpixels)) return 1;
- if(lodepng_mulofl(numpixels, 8, &total)) return 1; /* bit pointer with 8-bit color, or 8 bytes per channel color */
-
- /* Bytes per scanline with the expression "(w / 8) * bpp) + ((w & 7) * bpp + 7) / 8" */
- if(lodepng_mulofl((size_t)(w / 8), bpp, &line)) return 1;
- if(lodepng_addofl(line, ((w & 7) * bpp + 7) / 8, &line)) return 1;
-
- if(lodepng_addofl(line, 5, &line)) return 1; /* 5 bytes overhead per line: 1 filterbyte, 4 for Adam7 worst case */
- if(lodepng_mulofl(line, h, &total)) return 1; /* Total bytes in worst case */
-
- return 0; /* no overflow */
-}
-#endif /*LODEPNG_COMPILE_DECODER*/
-#endif /*LODEPNG_COMPILE_PNG*/
-
-#ifdef LODEPNG_COMPILE_ANCILLARY_CHUNKS
-
-static void LodePNGUnknownChunks_init(LodePNGInfo* info) {
- unsigned i;
- for(i = 0; i != 3; ++i) info->unknown_chunks_data[i] = 0;
- for(i = 0; i != 3; ++i) info->unknown_chunks_size[i] = 0;
-}
-
-static void LodePNGUnknownChunks_cleanup(LodePNGInfo* info) {
- unsigned i;
- for(i = 0; i != 3; ++i) lodepng_free(info->unknown_chunks_data[i]);
-}
-
-static unsigned LodePNGUnknownChunks_copy(LodePNGInfo* dest, const LodePNGInfo* src) {
- unsigned i;
-
- LodePNGUnknownChunks_cleanup(dest);
-
- for(i = 0; i != 3; ++i) {
- size_t j;
- dest->unknown_chunks_size[i] = src->unknown_chunks_size[i];
- dest->unknown_chunks_data[i] = (unsigned char*)lodepng_malloc(src->unknown_chunks_size[i]);
- if(!dest->unknown_chunks_data[i] && dest->unknown_chunks_size[i]) return 83; /*alloc fail*/
- for(j = 0; j < src->unknown_chunks_size[i]; ++j) {
- dest->unknown_chunks_data[i][j] = src->unknown_chunks_data[i][j];
- }
- }
-
- return 0;
-}
-
-/******************************************************************************/
-
-static void LodePNGText_init(LodePNGInfo* info) {
- info->text_num = 0;
- info->text_keys = NULL;
- info->text_strings = NULL;
-}
-
-static void LodePNGText_cleanup(LodePNGInfo* info) {
- size_t i;
- for(i = 0; i != info->text_num; ++i) {
- string_cleanup(&info->text_keys[i]);
- string_cleanup(&info->text_strings[i]);
- }
- lodepng_free(info->text_keys);
- lodepng_free(info->text_strings);
-}
-
-static unsigned LodePNGText_copy(LodePNGInfo* dest, const LodePNGInfo* source) {
- size_t i = 0;
- dest->text_keys = 0;
- dest->text_strings = 0;
- dest->text_num = 0;
- for(i = 0; i != source->text_num; ++i) {
- CERROR_TRY_RETURN(lodepng_add_text(dest, source->text_keys[i], source->text_strings[i]));
- }
- return 0;
-}
-
-void lodepng_clear_text(LodePNGInfo* info) {
- LodePNGText_cleanup(info);
-}
-
-unsigned lodepng_add_text(LodePNGInfo* info, const char* key, const char* str) {
- char** new_keys = (char**)(lodepng_realloc(info->text_keys, sizeof(char*) * (info->text_num + 1)));
- char** new_strings = (char**)(lodepng_realloc(info->text_strings, sizeof(char*) * (info->text_num + 1)));
- if(!new_keys || !new_strings) {
- lodepng_free(new_keys);
- lodepng_free(new_strings);
- return 83; /*alloc fail*/
- }
-
- ++info->text_num;
- info->text_keys = new_keys;
- info->text_strings = new_strings;
-
- info->text_keys[info->text_num - 1] = alloc_string(key);
- info->text_strings[info->text_num - 1] = alloc_string(str);
-
- return 0;
-}
-
-/******************************************************************************/
-
-static void LodePNGIText_init(LodePNGInfo* info) {
- info->itext_num = 0;
- info->itext_keys = NULL;
- info->itext_langtags = NULL;
- info->itext_transkeys = NULL;
- info->itext_strings = NULL;
-}
-
-static void LodePNGIText_cleanup(LodePNGInfo* info) {
- size_t i;
- for(i = 0; i != info->itext_num; ++i) {
- string_cleanup(&info->itext_keys[i]);
- string_cleanup(&info->itext_langtags[i]);
- string_cleanup(&info->itext_transkeys[i]);
- string_cleanup(&info->itext_strings[i]);
- }
- lodepng_free(info->itext_keys);
- lodepng_free(info->itext_langtags);
- lodepng_free(info->itext_transkeys);
- lodepng_free(info->itext_strings);
-}
-
-static unsigned LodePNGIText_copy(LodePNGInfo* dest, const LodePNGInfo* source) {
- size_t i = 0;
- dest->itext_keys = 0;
- dest->itext_langtags = 0;
- dest->itext_transkeys = 0;
- dest->itext_strings = 0;
- dest->itext_num = 0;
- for(i = 0; i != source->itext_num; ++i) {
- CERROR_TRY_RETURN(lodepng_add_itext(dest, source->itext_keys[i], source->itext_langtags[i],
- source->itext_transkeys[i], source->itext_strings[i]));
- }
- return 0;
-}
-
-void lodepng_clear_itext(LodePNGInfo* info) {
- LodePNGIText_cleanup(info);
-}
-
-unsigned lodepng_add_itext(LodePNGInfo* info, const char* key, const char* langtag,
- const char* transkey, const char* str) {
- char** new_keys = (char**)(lodepng_realloc(info->itext_keys, sizeof(char*) * (info->itext_num + 1)));
- char** new_langtags = (char**)(lodepng_realloc(info->itext_langtags, sizeof(char*) * (info->itext_num + 1)));
- char** new_transkeys = (char**)(lodepng_realloc(info->itext_transkeys, sizeof(char*) * (info->itext_num + 1)));
- char** new_strings = (char**)(lodepng_realloc(info->itext_strings, sizeof(char*) * (info->itext_num + 1)));
- if(!new_keys || !new_langtags || !new_transkeys || !new_strings) {
- lodepng_free(new_keys);
- lodepng_free(new_langtags);
- lodepng_free(new_transkeys);
- lodepng_free(new_strings);
- return 83; /*alloc fail*/
- }
-
- ++info->itext_num;
- info->itext_keys = new_keys;
- info->itext_langtags = new_langtags;
- info->itext_transkeys = new_transkeys;
- info->itext_strings = new_strings;
-
- info->itext_keys[info->itext_num - 1] = alloc_string(key);
- info->itext_langtags[info->itext_num - 1] = alloc_string(langtag);
- info->itext_transkeys[info->itext_num - 1] = alloc_string(transkey);
- info->itext_strings[info->itext_num - 1] = alloc_string(str);
-
- return 0;
-}
-
-/* same as set but does not delete */
-static unsigned lodepng_assign_icc(LodePNGInfo* info, const char* name, const unsigned char* profile, unsigned profile_size) {
- info->iccp_name = alloc_string(name);
- info->iccp_profile = (unsigned char*)lodepng_malloc(profile_size);
-
- if(!info->iccp_name || !info->iccp_profile) return 83; /*alloc fail*/
-
- memcpy(info->iccp_profile, profile, profile_size);
- info->iccp_profile_size = profile_size;
-
- return 0; /*ok*/
-}
-
-unsigned lodepng_set_icc(LodePNGInfo* info, const char* name, const unsigned char* profile, unsigned profile_size) {
- if(info->iccp_name) lodepng_clear_icc(info);
- info->iccp_defined = 1;
-
- return lodepng_assign_icc(info, name, profile, profile_size);
-}
-
-void lodepng_clear_icc(LodePNGInfo* info) {
- string_cleanup(&info->iccp_name);
- lodepng_free(info->iccp_profile);
- info->iccp_profile = NULL;
- info->iccp_profile_size = 0;
- info->iccp_defined = 0;
-}
-#endif /*LODEPNG_COMPILE_ANCILLARY_CHUNKS*/
-
-void lodepng_info_init(LodePNGInfo* info) {
- lodepng_color_mode_init(&info->color);
- info->interlace_method = 0;
- info->compression_method = 0;
- info->filter_method = 0;
-#ifdef LODEPNG_COMPILE_ANCILLARY_CHUNKS
- info->background_defined = 0;
- info->background_r = info->background_g = info->background_b = 0;
-
- LodePNGText_init(info);
- LodePNGIText_init(info);
-
- info->time_defined = 0;
- info->phys_defined = 0;
-
- info->gama_defined = 0;
- info->chrm_defined = 0;
- info->srgb_defined = 0;
- info->iccp_defined = 0;
- info->iccp_name = NULL;
- info->iccp_profile = NULL;
-
- LodePNGUnknownChunks_init(info);
-#endif /*LODEPNG_COMPILE_ANCILLARY_CHUNKS*/
-}
-
-void lodepng_info_cleanup(LodePNGInfo* info) {
- lodepng_color_mode_cleanup(&info->color);
-#ifdef LODEPNG_COMPILE_ANCILLARY_CHUNKS
- LodePNGText_cleanup(info);
- LodePNGIText_cleanup(info);
-
- lodepng_clear_icc(info);
-
- LodePNGUnknownChunks_cleanup(info);
-#endif /*LODEPNG_COMPILE_ANCILLARY_CHUNKS*/
-}
-
-unsigned lodepng_info_copy(LodePNGInfo* dest, const LodePNGInfo* source) {
- lodepng_info_cleanup(dest);
- *dest = *source;
- lodepng_color_mode_init(&dest->color);
- CERROR_TRY_RETURN(lodepng_color_mode_copy(&dest->color, &source->color));
-
-#ifdef LODEPNG_COMPILE_ANCILLARY_CHUNKS
- CERROR_TRY_RETURN(LodePNGText_copy(dest, source));
- CERROR_TRY_RETURN(LodePNGIText_copy(dest, source));
- if(source->iccp_defined) {
- CERROR_TRY_RETURN(lodepng_assign_icc(dest, source->iccp_name, source->iccp_profile, source->iccp_profile_size));
- }
-
- LodePNGUnknownChunks_init(dest);
- CERROR_TRY_RETURN(LodePNGUnknownChunks_copy(dest, source));
-#endif /*LODEPNG_COMPILE_ANCILLARY_CHUNKS*/
- return 0;
-}
-
-/* ////////////////////////////////////////////////////////////////////////// */
-
-/*index: bitgroup index, bits: bitgroup size(1, 2 or 4), in: bitgroup value, out: octet array to add bits to*/
-static void addColorBits(unsigned char* out, size_t index, unsigned bits, unsigned in) {
- unsigned m = bits == 1 ? 7 : bits == 2 ? 3 : 1; /*8 / bits - 1*/
- /*p = the partial index in the byte, e.g. with 4 palettebits it is 0 for first half or 1 for second half*/
- unsigned p = index & m;
- in &= (1u << bits) - 1u; /*filter out any other bits of the input value*/
- in = in << (bits * (m - p));
- if(p == 0) out[index * bits / 8] = in;
- else out[index * bits / 8] |= in;
-}
-
-typedef struct ColorTree ColorTree;
-
-/*
-One node of a color tree
-This is the data structure used to count the number of unique colors and to get a palette
-index for a color. It's like an octree, but because the alpha channel is used too, each
-node has 16 instead of 8 children.
-*/
-struct ColorTree {
- ColorTree* children[16]; /*up to 16 pointers to ColorTree of next level*/
- int index; /*the payload. Only has a meaningful value if this is in the last level*/
-};
-
-static void color_tree_init(ColorTree* tree) {
- int i;
- for(i = 0; i != 16; ++i) tree->children[i] = 0;
- tree->index = -1;
-}
-
-static void color_tree_cleanup(ColorTree* tree) {
- int i;
- for(i = 0; i != 16; ++i) {
- if(tree->children[i]) {
- color_tree_cleanup(tree->children[i]);
- lodepng_free(tree->children[i]);
- }
- }
-}
-
-/*returns -1 if color not present, its index otherwise*/
-static int color_tree_get(ColorTree* tree, unsigned char r, unsigned char g, unsigned char b, unsigned char a) {
- int bit = 0;
- for(bit = 0; bit < 8; ++bit) {
- int i = 8 * ((r >> bit) & 1) + 4 * ((g >> bit) & 1) + 2 * ((b >> bit) & 1) + 1 * ((a >> bit) & 1);
- if(!tree->children[i]) return -1;
- else tree = tree->children[i];
- }
- return tree ? tree->index : -1;
-}
-
-#ifdef LODEPNG_COMPILE_ENCODER
-static int color_tree_has(ColorTree* tree, unsigned char r, unsigned char g, unsigned char b, unsigned char a) {
- return color_tree_get(tree, r, g, b, a) >= 0;
-}
-#endif /*LODEPNG_COMPILE_ENCODER*/
-
-/*color is not allowed to already exist.
-Index should be >= 0 (it's signed to be compatible with using -1 for "doesn't exist")*/
-static void color_tree_add(ColorTree* tree,
- unsigned char r, unsigned char g, unsigned char b, unsigned char a, unsigned index) {
- int bit;
- for(bit = 0; bit < 8; ++bit) {
- int i = 8 * ((r >> bit) & 1) + 4 * ((g >> bit) & 1) + 2 * ((b >> bit) & 1) + 1 * ((a >> bit) & 1);
- if(!tree->children[i]) {
- tree->children[i] = (ColorTree*)lodepng_malloc(sizeof(ColorTree));
- color_tree_init(tree->children[i]);
- }
- tree = tree->children[i];
- }
- tree->index = (int)index;
-}
-
-/*put a pixel, given its RGBA color, into image of any color type*/
-static unsigned rgba8ToPixel(unsigned char* out, size_t i,
- const LodePNGColorMode* mode, ColorTree* tree /*for palette*/,
- unsigned char r, unsigned char g, unsigned char b, unsigned char a) {
- if(mode->colortype == LCT_GREY) {
- unsigned char gray = r; /*((unsigned short)r + g + b) / 3;*/
- if(mode->bitdepth == 8) out[i] = gray;
- else if(mode->bitdepth == 16) out[i * 2 + 0] = out[i * 2 + 1] = gray;
- else {
- /*take the most significant bits of gray*/
- gray = (gray >> (8 - mode->bitdepth)) & ((1 << mode->bitdepth) - 1);
- addColorBits(out, i, mode->bitdepth, gray);
- }
- } else if(mode->colortype == LCT_RGB) {
- if(mode->bitdepth == 8) {
- out[i * 3 + 0] = r;
- out[i * 3 + 1] = g;
- out[i * 3 + 2] = b;
- } else {
- out[i * 6 + 0] = out[i * 6 + 1] = r;
- out[i * 6 + 2] = out[i * 6 + 3] = g;
- out[i * 6 + 4] = out[i * 6 + 5] = b;
- }
- } else if(mode->colortype == LCT_PALETTE) {
- int index = color_tree_get(tree, r, g, b, a);
- if(index < 0) return 82; /*color not in palette*/
- if(mode->bitdepth == 8) out[i] = index;
- else addColorBits(out, i, mode->bitdepth, (unsigned)index);
- } else if(mode->colortype == LCT_GREY_ALPHA) {
- unsigned char gray = r; /*((unsigned short)r + g + b) / 3;*/
- if(mode->bitdepth == 8) {
- out[i * 2 + 0] = gray;
- out[i * 2 + 1] = a;
- } else if(mode->bitdepth == 16) {
- out[i * 4 + 0] = out[i * 4 + 1] = gray;
- out[i * 4 + 2] = out[i * 4 + 3] = a;
- }
- } else if(mode->colortype == LCT_RGBA) {
- if(mode->bitdepth == 8) {
- out[i * 4 + 0] = r;
- out[i * 4 + 1] = g;
- out[i * 4 + 2] = b;
- out[i * 4 + 3] = a;
- } else {
- out[i * 8 + 0] = out[i * 8 + 1] = r;
- out[i * 8 + 2] = out[i * 8 + 3] = g;
- out[i * 8 + 4] = out[i * 8 + 5] = b;
- out[i * 8 + 6] = out[i * 8 + 7] = a;
- }
- }
-
- return 0; /*no error*/
-}
-
-/*put a pixel, given its RGBA16 color, into image of any color 16-bitdepth type*/
-static void rgba16ToPixel(unsigned char* out, size_t i,
- const LodePNGColorMode* mode,
- unsigned short r, unsigned short g, unsigned short b, unsigned short a) {
- if(mode->colortype == LCT_GREY) {
- unsigned short gray = r; /*((unsigned)r + g + b) / 3;*/
- out[i * 2 + 0] = (gray >> 8) & 255;
- out[i * 2 + 1] = gray & 255;
- } else if(mode->colortype == LCT_RGB) {
- out[i * 6 + 0] = (r >> 8) & 255;
- out[i * 6 + 1] = r & 255;
- out[i * 6 + 2] = (g >> 8) & 255;
- out[i * 6 + 3] = g & 255;
- out[i * 6 + 4] = (b >> 8) & 255;
- out[i * 6 + 5] = b & 255;
- } else if(mode->colortype == LCT_GREY_ALPHA) {
- unsigned short gray = r; /*((unsigned)r + g + b) / 3;*/
- out[i * 4 + 0] = (gray >> 8) & 255;
- out[i * 4 + 1] = gray & 255;
- out[i * 4 + 2] = (a >> 8) & 255;
- out[i * 4 + 3] = a & 255;
- } else if(mode->colortype == LCT_RGBA) {
- out[i * 8 + 0] = (r >> 8) & 255;
- out[i * 8 + 1] = r & 255;
- out[i * 8 + 2] = (g >> 8) & 255;
- out[i * 8 + 3] = g & 255;
- out[i * 8 + 4] = (b >> 8) & 255;
- out[i * 8 + 5] = b & 255;
- out[i * 8 + 6] = (a >> 8) & 255;
- out[i * 8 + 7] = a & 255;
- }
-}
-
-/*Get RGBA8 color of pixel with index i (y * width + x) from the raw image with given color type.*/
-static void getPixelColorRGBA8(unsigned char* r, unsigned char* g,
- unsigned char* b, unsigned char* a,
- const unsigned char* in, size_t i,
- const LodePNGColorMode* mode) {
- if(mode->colortype == LCT_GREY) {
- if(mode->bitdepth == 8) {
- *r = *g = *b = in[i];
- if(mode->key_defined && *r == mode->key_r) *a = 0;
- else *a = 255;
- } else if(mode->bitdepth == 16) {
- *r = *g = *b = in[i * 2 + 0];
- if(mode->key_defined && 256U * in[i * 2 + 0] + in[i * 2 + 1] == mode->key_r) *a = 0;
- else *a = 255;
- } else {
- unsigned highest = ((1U << mode->bitdepth) - 1U); /*highest possible value for this bit depth*/
- size_t j = i * mode->bitdepth;
- unsigned value = readBitsFromReversedStream(&j, in, mode->bitdepth);
- *r = *g = *b = (value * 255) / highest;
- if(mode->key_defined && value == mode->key_r) *a = 0;
- else *a = 255;
- }
- } else if(mode->colortype == LCT_RGB) {
- if(mode->bitdepth == 8) {
- *r = in[i * 3 + 0]; *g = in[i * 3 + 1]; *b = in[i * 3 + 2];
- if(mode->key_defined && *r == mode->key_r && *g == mode->key_g && *b == mode->key_b) *a = 0;
- else *a = 255;
- } else {
- *r = in[i * 6 + 0];
- *g = in[i * 6 + 2];
- *b = in[i * 6 + 4];
- if(mode->key_defined && 256U * in[i * 6 + 0] + in[i * 6 + 1] == mode->key_r
- && 256U * in[i * 6 + 2] + in[i * 6 + 3] == mode->key_g
- && 256U * in[i * 6 + 4] + in[i * 6 + 5] == mode->key_b) *a = 0;
- else *a = 255;
- }
- } else if(mode->colortype == LCT_PALETTE) {
- unsigned index;
- if(mode->bitdepth == 8) index = in[i];
- else {
- size_t j = i * mode->bitdepth;
- index = readBitsFromReversedStream(&j, in, mode->bitdepth);
- }
-
- if(index >= mode->palettesize) {
- /*This is an error according to the PNG spec, but common PNG decoders make it black instead.
- Done here too, slightly faster due to no error handling needed.*/
- *r = *g = *b = 0;
- *a = 255;
- } else {
- *r = mode->palette[index * 4 + 0];
- *g = mode->palette[index * 4 + 1];
- *b = mode->palette[index * 4 + 2];
- *a = mode->palette[index * 4 + 3];
- }
- } else if(mode->colortype == LCT_GREY_ALPHA) {
- if(mode->bitdepth == 8) {
- *r = *g = *b = in[i * 2 + 0];
- *a = in[i * 2 + 1];
- } else {
- *r = *g = *b = in[i * 4 + 0];
- *a = in[i * 4 + 2];
- }
- } else if(mode->colortype == LCT_RGBA) {
- if(mode->bitdepth == 8) {
- *r = in[i * 4 + 0];
- *g = in[i * 4 + 1];
- *b = in[i * 4 + 2];
- *a = in[i * 4 + 3];
- } else {
- *r = in[i * 8 + 0];
- *g = in[i * 8 + 2];
- *b = in[i * 8 + 4];
- *a = in[i * 8 + 6];
- }
- }
-}
-
-/*Similar to getPixelColorRGBA8, but with all the for loops inside of the color
-mode test cases, optimized to convert the colors much faster, when converting
-to RGBA or RGB with 8 bit per cannel. buffer must be RGBA or RGB output with
-enough memory, if has_alpha is true the output is RGBA. mode has the color mode
-of the input buffer.*/
-static void getPixelColorsRGBA8(unsigned char* buffer, size_t numpixels,
- unsigned has_alpha, const unsigned char* in,
- const LodePNGColorMode* mode) {
- unsigned num_channels = has_alpha ? 4 : 3;
- size_t i;
- if(mode->colortype == LCT_GREY) {
- if(mode->bitdepth == 8) {
- for(i = 0; i != numpixels; ++i, buffer += num_channels) {
- buffer[0] = buffer[1] = buffer[2] = in[i];
- if(has_alpha) buffer[3] = mode->key_defined && in[i] == mode->key_r ? 0 : 255;
- }
- } else if(mode->bitdepth == 16) {
- for(i = 0; i != numpixels; ++i, buffer += num_channels) {
- buffer[0] = buffer[1] = buffer[2] = in[i * 2];
- if(has_alpha) buffer[3] = mode->key_defined && 256U * in[i * 2 + 0] + in[i * 2 + 1] == mode->key_r ? 0 : 255;
- }
- } else {
- unsigned highest = ((1U << mode->bitdepth) - 1U); /*highest possible value for this bit depth*/
- size_t j = 0;
- for(i = 0; i != numpixels; ++i, buffer += num_channels) {
- unsigned value = readBitsFromReversedStream(&j, in, mode->bitdepth);
- buffer[0] = buffer[1] = buffer[2] = (value * 255) / highest;
- if(has_alpha) buffer[3] = mode->key_defined && value == mode->key_r ? 0 : 255;
- }
- }
- } else if(mode->colortype == LCT_RGB) {
- if(mode->bitdepth == 8) {
- for(i = 0; i != numpixels; ++i, buffer += num_channels) {
- buffer[0] = in[i * 3 + 0];
- buffer[1] = in[i * 3 + 1];
- buffer[2] = in[i * 3 + 2];
- if(has_alpha) buffer[3] = mode->key_defined && buffer[0] == mode->key_r
- && buffer[1]== mode->key_g && buffer[2] == mode->key_b ? 0 : 255;
- }
- } else {
- for(i = 0; i != numpixels; ++i, buffer += num_channels) {
- buffer[0] = in[i * 6 + 0];
- buffer[1] = in[i * 6 + 2];
- buffer[2] = in[i * 6 + 4];
- if(has_alpha) buffer[3] = mode->key_defined
- && 256U * in[i * 6 + 0] + in[i * 6 + 1] == mode->key_r
- && 256U * in[i * 6 + 2] + in[i * 6 + 3] == mode->key_g
- && 256U * in[i * 6 + 4] + in[i * 6 + 5] == mode->key_b ? 0 : 255;
- }
- }
- } else if(mode->colortype == LCT_PALETTE) {
- unsigned index;
- size_t j = 0;
- for(i = 0; i != numpixels; ++i, buffer += num_channels) {
- if(mode->bitdepth == 8) index = in[i];
- else index = readBitsFromReversedStream(&j, in, mode->bitdepth);
-
- if(index >= mode->palettesize) {
- /*This is an error according to the PNG spec, but most PNG decoders make it black instead.
- Done here too, slightly faster due to no error handling needed.*/
- buffer[0] = buffer[1] = buffer[2] = 0;
- if(has_alpha) buffer[3] = 255;
- } else {
- buffer[0] = mode->palette[index * 4 + 0];
- buffer[1] = mode->palette[index * 4 + 1];
- buffer[2] = mode->palette[index * 4 + 2];
- if(has_alpha) buffer[3] = mode->palette[index * 4 + 3];
- }
- }
- } else if(mode->colortype == LCT_GREY_ALPHA) {
- if(mode->bitdepth == 8) {
- for(i = 0; i != numpixels; ++i, buffer += num_channels) {
- buffer[0] = buffer[1] = buffer[2] = in[i * 2 + 0];
- if(has_alpha) buffer[3] = in[i * 2 + 1];
- }
- } else {
- for(i = 0; i != numpixels; ++i, buffer += num_channels) {
- buffer[0] = buffer[1] = buffer[2] = in[i * 4 + 0];
- if(has_alpha) buffer[3] = in[i * 4 + 2];
- }
- }
- } else if(mode->colortype == LCT_RGBA) {
- if(mode->bitdepth == 8) {
- for(i = 0; i != numpixels; ++i, buffer += num_channels) {
- buffer[0] = in[i * 4 + 0];
- buffer[1] = in[i * 4 + 1];
- buffer[2] = in[i * 4 + 2];
- if(has_alpha) buffer[3] = in[i * 4 + 3];
- }
- } else {
- for(i = 0; i != numpixels; ++i, buffer += num_channels) {
- buffer[0] = in[i * 8 + 0];
- buffer[1] = in[i * 8 + 2];
- buffer[2] = in[i * 8 + 4];
- if(has_alpha) buffer[3] = in[i * 8 + 6];
- }
- }
- }
-}
-
-/*Get RGBA16 color of pixel with index i (y * width + x) from the raw image with
-given color type, but the given color type must be 16-bit itself.*/
-static void getPixelColorRGBA16(unsigned short* r, unsigned short* g, unsigned short* b, unsigned short* a,
- const unsigned char* in, size_t i, const LodePNGColorMode* mode) {
- if(mode->colortype == LCT_GREY) {
- *r = *g = *b = 256 * in[i * 2 + 0] + in[i * 2 + 1];
- if(mode->key_defined && 256U * in[i * 2 + 0] + in[i * 2 + 1] == mode->key_r) *a = 0;
- else *a = 65535;
- } else if(mode->colortype == LCT_RGB) {
- *r = 256u * in[i * 6 + 0] + in[i * 6 + 1];
- *g = 256u * in[i * 6 + 2] + in[i * 6 + 3];
- *b = 256u * in[i * 6 + 4] + in[i * 6 + 5];
- if(mode->key_defined
- && 256u * in[i * 6 + 0] + in[i * 6 + 1] == mode->key_r
- && 256u * in[i * 6 + 2] + in[i * 6 + 3] == mode->key_g
- && 256u * in[i * 6 + 4] + in[i * 6 + 5] == mode->key_b) *a = 0;
- else *a = 65535;
- } else if(mode->colortype == LCT_GREY_ALPHA) {
- *r = *g = *b = 256u * in[i * 4 + 0] + in[i * 4 + 1];
- *a = 256u * in[i * 4 + 2] + in[i * 4 + 3];
- } else if(mode->colortype == LCT_RGBA) {
- *r = 256u * in[i * 8 + 0] + in[i * 8 + 1];
- *g = 256u * in[i * 8 + 2] + in[i * 8 + 3];
- *b = 256u * in[i * 8 + 4] + in[i * 8 + 5];
- *a = 256u * in[i * 8 + 6] + in[i * 8 + 7];
- }
-}
-
-unsigned lodepng_convert(unsigned char* out, const unsigned char* in,
- const LodePNGColorMode* mode_out, const LodePNGColorMode* mode_in,
- unsigned w, unsigned h) {
- size_t i;
- ColorTree tree;
- size_t numpixels = (size_t)w * (size_t)h;
- unsigned error = 0;
-
- if(lodepng_color_mode_equal(mode_out, mode_in)) {
- size_t numbytes = lodepng_get_raw_size(w, h, mode_in);
- for(i = 0; i != numbytes; ++i) out[i] = in[i];
- return 0;
- }
-
- if(mode_out->colortype == LCT_PALETTE) {
- size_t palettesize = mode_out->palettesize;
- const unsigned char* palette = mode_out->palette;
- size_t palsize = (size_t)1u << mode_out->bitdepth;
- /*if the user specified output palette but did not give the values, assume
- they want the values of the input color type (assuming that one is palette).
- Note that we never create a new palette ourselves.*/
- if(palettesize == 0) {
- palettesize = mode_in->palettesize;
- palette = mode_in->palette;
- /*if the input was also palette with same bitdepth, then the color types are also
- equal, so copy literally. This to preserve the exact indices that were in the PNG
- even in case there are duplicate colors in the palette.*/
- if (mode_in->colortype == LCT_PALETTE && mode_in->bitdepth == mode_out->bitdepth) {
- size_t numbytes = lodepng_get_raw_size(w, h, mode_in);
- for(i = 0; i != numbytes; ++i) out[i] = in[i];
- return 0;
- }
- }
- if(palettesize < palsize) palsize = palettesize;
- color_tree_init(&tree);
- for(i = 0; i != palsize; ++i) {
- const unsigned char* p = &palette[i * 4];
- color_tree_add(&tree, p[0], p[1], p[2], p[3], (unsigned)i);
- }
- }
-
- if(mode_in->bitdepth == 16 && mode_out->bitdepth == 16) {
- for(i = 0; i != numpixels; ++i) {
- unsigned short r = 0, g = 0, b = 0, a = 0;
- getPixelColorRGBA16(&r, &g, &b, &a, in, i, mode_in);
- rgba16ToPixel(out, i, mode_out, r, g, b, a);
- }
- } else if(mode_out->bitdepth == 8 && mode_out->colortype == LCT_RGBA) {
- getPixelColorsRGBA8(out, numpixels, 1, in, mode_in);
- } else if(mode_out->bitdepth == 8 && mode_out->colortype == LCT_RGB) {
- getPixelColorsRGBA8(out, numpixels, 0, in, mode_in);
- } else {
- unsigned char r = 0, g = 0, b = 0, a = 0;
- for(i = 0; i != numpixels; ++i) {
- getPixelColorRGBA8(&r, &g, &b, &a, in, i, mode_in);
- error = rgba8ToPixel(out, i, mode_out, &tree, r, g, b, a);
- if (error) break;
- }
- }
-
- if(mode_out->colortype == LCT_PALETTE) {
- color_tree_cleanup(&tree);
- }
-
- return error;
-}
-
-
-/* Converts a single rgb color without alpha from one type to another, color bits truncated to
-their bitdepth. In case of single channel (gray or palette), only the r channel is used. Slow
-function, do not use to process all pixels of an image. Alpha channel not supported on purpose:
-this is for bKGD, supporting alpha may prevent it from finding a color in the palette, from the
-specification it looks like bKGD should ignore the alpha values of the palette since it can use
-any palette index but doesn't have an alpha channel. Idem with ignoring color key. */
-unsigned lodepng_convert_rgb(
- unsigned* r_out, unsigned* g_out, unsigned* b_out,
- unsigned r_in, unsigned g_in, unsigned b_in,
- const LodePNGColorMode* mode_out, const LodePNGColorMode* mode_in) {
- unsigned r = 0, g = 0, b = 0;
- unsigned mul = 65535 / ((1u << mode_in->bitdepth) - 1u); /*65535, 21845, 4369, 257, 1*/
- unsigned shift = 16 - mode_out->bitdepth;
-
- if(mode_in->colortype == LCT_GREY || mode_in->colortype == LCT_GREY_ALPHA) {
- r = g = b = r_in * mul;
- } else if(mode_in->colortype == LCT_RGB || mode_in->colortype == LCT_RGBA) {
- r = r_in * mul;
- g = g_in * mul;
- b = b_in * mul;
- } else if(mode_in->colortype == LCT_PALETTE) {
- if(r_in >= mode_in->palettesize) return 82;
- r = mode_in->palette[r_in * 4 + 0] * 257u;
- g = mode_in->palette[r_in * 4 + 1] * 257u;
- b = mode_in->palette[r_in * 4 + 2] * 257u;
- } else {
- return 31;
- }
-
- /* now convert to output format */
- if(mode_out->colortype == LCT_GREY || mode_out->colortype == LCT_GREY_ALPHA) {
- *r_out = r >> shift ;
- } else if(mode_out->colortype == LCT_RGB || mode_out->colortype == LCT_RGBA) {
- *r_out = r >> shift ;
- *g_out = g >> shift ;
- *b_out = b >> shift ;
- } else if(mode_out->colortype == LCT_PALETTE) {
- unsigned i;
- /* a 16-bit color cannot be in the palette */
- if((r >> 8) != (r & 255) || (g >> 8) != (g & 255) || (b >> 8) != (b & 255)) return 82;
- for(i = 0; i < mode_out->palettesize; i++) {
- unsigned j = i * 4;
- if((r >> 8) == mode_out->palette[j + 0] && (g >> 8) == mode_out->palette[j + 1] &&
- (b >> 8) == mode_out->palette[j + 2]) {
- *r_out = i;
- return 0;
- }
- }
- return 82;
- } else {
- return 31;
- }
-
- return 0;
-}
-
-#ifdef LODEPNG_COMPILE_ENCODER
-
-void lodepng_color_profile_init(LodePNGColorProfile* profile) {
- profile->colored = 0;
- profile->key = 0;
- profile->key_r = profile->key_g = profile->key_b = 0;
- profile->alpha = 0;
- profile->numcolors = 0;
- profile->bits = 1;
- profile->numpixels = 0;
-}
-
-/*function used for debug purposes with C++*/
-/*void printColorProfile(LodePNGColorProfile* p) {
- std::cout << "colored: " << (int)p->colored << ", ";
- std::cout << "key: " << (int)p->key << ", ";
- std::cout << "key_r: " << (int)p->key_r << ", ";
- std::cout << "key_g: " << (int)p->key_g << ", ";
- std::cout << "key_b: " << (int)p->key_b << ", ";
- std::cout << "alpha: " << (int)p->alpha << ", ";
- std::cout << "numcolors: " << (int)p->numcolors << ", ";
- std::cout << "bits: " << (int)p->bits << std::endl;
-}*/
-
-/*Returns how many bits needed to represent given value (max 8 bit)*/
-static unsigned getValueRequiredBits(unsigned char value) {
- if(value == 0 || value == 255) return 1;
- /*The scaling of 2-bit and 4-bit values uses multiples of 85 and 17*/
- if(value % 17 == 0) return value % 85 == 0 ? 2 : 4;
- return 8;
-}
-
-/*profile must already have been inited.
-It's ok to set some parameters of profile to done already.*/
-unsigned lodepng_get_color_profile(LodePNGColorProfile* profile,
- const unsigned char* in, unsigned w, unsigned h,
- const LodePNGColorMode* mode_in) {
- unsigned error = 0;
- size_t i;
- ColorTree tree;
- size_t numpixels = (size_t)w * (size_t)h;
-
- /* mark things as done already if it would be impossible to have a more expensive case */
- unsigned colored_done = lodepng_is_greyscale_type(mode_in) ? 1 : 0;
- unsigned alpha_done = lodepng_can_have_alpha(mode_in) ? 0 : 1;
- unsigned numcolors_done = 0;
- unsigned bpp = lodepng_get_bpp(mode_in);
- unsigned bits_done = (profile->bits == 1 && bpp == 1) ? 1 : 0;
- unsigned sixteen = 0; /* whether the input image is 16 bit */
- unsigned maxnumcolors = 257;
- if(bpp <= 8) maxnumcolors = LODEPNG_MIN(257, profile->numcolors + (1u << bpp));
-
- profile->numpixels += numpixels;
-
- color_tree_init(&tree);
-
- /*If the profile was already filled in from previous data, fill its palette in tree
- and mark things as done already if we know they are the most expensive case already*/
- if(profile->alpha) alpha_done = 1;
- if(profile->colored) colored_done = 1;
- if(profile->bits == 16) numcolors_done = 1;
- if(profile->bits >= bpp) bits_done = 1;
- if(profile->numcolors >= maxnumcolors) numcolors_done = 1;
-
- if(!numcolors_done) {
- for(i = 0; i < profile->numcolors; i++) {
- const unsigned char* color = &profile->palette[i * 4];
- color_tree_add(&tree, color[0], color[1], color[2], color[3], (unsigned int)i);
- }
- }
-
- /*Check if the 16-bit input is truly 16-bit*/
- if(mode_in->bitdepth == 16 && !sixteen) {
- unsigned short r, g, b, a;
- for(i = 0; i != numpixels; ++i) {
- getPixelColorRGBA16(&r, &g, &b, &a, in, i, mode_in);
- if((r & 255) != ((r >> 8) & 255) || (g & 255) != ((g >> 8) & 255) ||
- (b & 255) != ((b >> 8) & 255) || (a & 255) != ((a >> 8) & 255)) /*first and second byte differ*/ {
- profile->bits = 16;
- sixteen = 1;
- bits_done = 1;
- numcolors_done = 1; /*counting colors no longer useful, palette doesn't support 16-bit*/
- break;
- }
- }
- }
-
- if(sixteen) {
- unsigned short r = 0, g = 0, b = 0, a = 0;
-
- for(i = 0; i != numpixels; ++i) {
- getPixelColorRGBA16(&r, &g, &b, &a, in, i, mode_in);
-
- if(!colored_done && (r != g || r != b)) {
- profile->colored = 1;
- colored_done = 1;
- }
-
- if(!alpha_done) {
- unsigned matchkey = (r == profile->key_r && g == profile->key_g && b == profile->key_b);
- if(a != 65535 && (a != 0 || (profile->key && !matchkey))) {
- profile->alpha = 1;
- profile->key = 0;
- alpha_done = 1;
- } else if(a == 0 && !profile->alpha && !profile->key) {
- profile->key = 1;
- profile->key_r = r;
- profile->key_g = g;
- profile->key_b = b;
- } else if(a == 65535 && profile->key && matchkey) {
- /* Color key cannot be used if an opaque pixel also has that RGB color. */
- profile->alpha = 1;
- profile->key = 0;
- alpha_done = 1;
- }
- }
- if(alpha_done && numcolors_done && colored_done && bits_done) break;
- }
-
- if(profile->key && !profile->alpha) {
- for(i = 0; i != numpixels; ++i) {
- getPixelColorRGBA16(&r, &g, &b, &a, in, i, mode_in);
- if(a != 0 && r == profile->key_r && g == profile->key_g && b == profile->key_b) {
- /* Color key cannot be used if an opaque pixel also has that RGB color. */
- profile->alpha = 1;
- profile->key = 0;
- alpha_done = 1;
- }
- }
- }
- } else /* < 16-bit */ {
- unsigned char r = 0, g = 0, b = 0, a = 0;
- for(i = 0; i != numpixels; ++i) {
- getPixelColorRGBA8(&r, &g, &b, &a, in, i, mode_in);
-
- if(!bits_done && profile->bits < 8) {
- /*only r is checked, < 8 bits is only relevant for grayscale*/
- unsigned bits = getValueRequiredBits(r);
- if(bits > profile->bits) profile->bits = bits;
- }
- bits_done = (profile->bits >= bpp);
-
- if(!colored_done && (r != g || r != b)) {
- profile->colored = 1;
- colored_done = 1;
- if(profile->bits < 8) profile->bits = 8; /*PNG has no colored modes with less than 8-bit per channel*/
- }
-
- if(!alpha_done) {
- unsigned matchkey = (r == profile->key_r && g == profile->key_g && b == profile->key_b);
- if(a != 255 && (a != 0 || (profile->key && !matchkey))) {
- profile->alpha = 1;
- profile->key = 0;
- alpha_done = 1;
- if(profile->bits < 8) profile->bits = 8; /*PNG has no alphachannel modes with less than 8-bit per channel*/
- } else if(a == 0 && !profile->alpha && !profile->key) {
- profile->key = 1;
- profile->key_r = r;
- profile->key_g = g;
- profile->key_b = b;
- } else if(a == 255 && profile->key && matchkey) {
- /* Color key cannot be used if an opaque pixel also has that RGB color. */
- profile->alpha = 1;
- profile->key = 0;
- alpha_done = 1;
- if(profile->bits < 8) profile->bits = 8; /*PNG has no alphachannel modes with less than 8-bit per channel*/
- }
- }
-
- if(!numcolors_done) {
- if(!color_tree_has(&tree, r, g, b, a)) {
- color_tree_add(&tree, r, g, b, a, profile->numcolors);
- if(profile->numcolors < 256) {
- unsigned char* p = profile->palette;
- unsigned n = profile->numcolors;
- p[n * 4 + 0] = r;
- p[n * 4 + 1] = g;
- p[n * 4 + 2] = b;
- p[n * 4 + 3] = a;
- }
- ++profile->numcolors;
- numcolors_done = profile->numcolors >= maxnumcolors;
- }
- }
-
- if(alpha_done && numcolors_done && colored_done && bits_done) break;
- }
-
- if(profile->key && !profile->alpha) {
- for(i = 0; i != numpixels; ++i) {
- getPixelColorRGBA8(&r, &g, &b, &a, in, i, mode_in);
- if(a != 0 && r == profile->key_r && g == profile->key_g && b == profile->key_b) {
- /* Color key cannot be used if an opaque pixel also has that RGB color. */
- profile->alpha = 1;
- profile->key = 0;
- alpha_done = 1;
- if(profile->bits < 8) profile->bits = 8; /*PNG has no alphachannel modes with less than 8-bit per channel*/
- }
- }
- }
-
- /*make the profile's key always 16-bit for consistency - repeat each byte twice*/
- profile->key_r += (profile->key_r << 8);
- profile->key_g += (profile->key_g << 8);
- profile->key_b += (profile->key_b << 8);
- }
-
- color_tree_cleanup(&tree);
- return error;
-}
-
-#ifdef LODEPNG_COMPILE_ANCILLARY_CHUNKS
-/*Adds a single color to the color profile. The profile must already have been inited. The color must be given as 16-bit
-(with 2 bytes repeating for 8-bit and 65535 for opaque alpha channel). This function is expensive, do not call it for
-all pixels of an image but only for a few additional values. */
-static unsigned lodepng_color_profile_add(LodePNGColorProfile* profile,
- unsigned r, unsigned g, unsigned b, unsigned a) {
- unsigned error = 0;
- unsigned char image[8];
- LodePNGColorMode mode;
- lodepng_color_mode_init(&mode);
- image[0] = r >> 8; image[1] = r; image[2] = g >> 8; image[3] = g;
- image[4] = b >> 8; image[5] = b; image[6] = a >> 8; image[7] = a;
- mode.bitdepth = 16;
- mode.colortype = LCT_RGBA;
- error = lodepng_get_color_profile(profile, image, 1, 1, &mode);
- lodepng_color_mode_cleanup(&mode);
- return error;
-}
-#endif /*LODEPNG_COMPILE_ANCILLARY_CHUNKS*/
-
-/*Autochoose color model given the computed profile. mode_in is to copy palette order from
-when relevant.*/
-static unsigned auto_choose_color_from_profile(LodePNGColorMode* mode_out,
- const LodePNGColorMode* mode_in,
- const LodePNGColorProfile* prof) {
- unsigned error = 0;
- unsigned palettebits, palette_ok;
- size_t i, n;
- size_t numpixels = prof->numpixels;
-
- unsigned alpha = prof->alpha;
- unsigned key = prof->key;
- unsigned bits = prof->bits;
-
- mode_out->key_defined = 0;
-
- if(key && numpixels <= 16) {
- alpha = 1; /*too few pixels to justify tRNS chunk overhead*/
- key = 0;
- if(bits < 8) bits = 8; /*PNG has no alphachannel modes with less than 8-bit per channel*/
- }
- n = prof->numcolors;
- palettebits = n <= 2 ? 1 : (n <= 4 ? 2 : (n <= 16 ? 4 : 8));
- palette_ok = n <= 256 && bits <= 8;
- if(numpixels < n * 2) palette_ok = 0; /*don't add palette overhead if image has only a few pixels*/
- if(!prof->colored && bits <= palettebits) palette_ok = 0; /*gray is less overhead*/
-
- if(palette_ok) {
- const unsigned char* p = prof->palette;
- lodepng_palette_clear(mode_out); /*remove potential earlier palette*/
- for(i = 0; i != prof->numcolors; ++i) {
- error = lodepng_palette_add(mode_out, p[i * 4 + 0], p[i * 4 + 1], p[i * 4 + 2], p[i * 4 + 3]);
- if(error) break;
- }
-
- mode_out->colortype = LCT_PALETTE;
- mode_out->bitdepth = palettebits;
-
- if(mode_in->colortype == LCT_PALETTE && mode_in->palettesize >= mode_out->palettesize
- && mode_in->bitdepth == mode_out->bitdepth) {
- /*If input should have same palette colors, keep original to preserve its order and prevent conversion*/
- lodepng_color_mode_cleanup(mode_out);
- lodepng_color_mode_copy(mode_out, mode_in);
- }
- } else /*8-bit or 16-bit per channel*/ {
- mode_out->bitdepth = bits;
- mode_out->colortype = alpha ? (prof->colored ? LCT_RGBA : LCT_GREY_ALPHA)
- : (prof->colored ? LCT_RGB : LCT_GREY);
-
- if(key) {
- unsigned mask = (1u << mode_out->bitdepth) - 1u; /*profile always uses 16-bit, mask converts it*/
- mode_out->key_r = prof->key_r & mask;
- mode_out->key_g = prof->key_g & mask;
- mode_out->key_b = prof->key_b & mask;
- mode_out->key_defined = 1;
- }
- }
-
- return error;
-}
-
-/*Automatically chooses color type that gives smallest amount of bits in the
-output image, e.g. gray if there are only grayscale pixels, palette if there
-are less than 256 colors, color key if only single transparent color, ...
-Updates values of mode with a potentially smaller color model. mode_out should
-contain the user chosen color model, but will be overwritten with the new chosen one.*/
-unsigned lodepng_auto_choose_color(LodePNGColorMode* mode_out,
- const unsigned char* image, unsigned w, unsigned h,
- const LodePNGColorMode* mode_in) {
- unsigned error = 0;
- LodePNGColorProfile prof;
- lodepng_color_profile_init(&prof);
- error = lodepng_get_color_profile(&prof, image, w, h, mode_in);
- if(error) return error;
- return auto_choose_color_from_profile(mode_out, mode_in, &prof);
-}
-
-#endif /* #ifdef LODEPNG_COMPILE_ENCODER */
-
-/*
-Paeth predicter, used by PNG filter type 4
-The parameters are of type short, but should come from unsigned chars, the shorts
-are only needed to make the paeth calculation correct.
-*/
-static unsigned char paethPredictor(short a, short b, short c) {
- short pa = abs(b - c);
- short pb = abs(a - c);
- short pc = abs(a + b - c - c);
-
- if(pc < pa && pc < pb) return (unsigned char)c;
- else if(pb < pa) return (unsigned char)b;
- else return (unsigned char)a;
-}
-
-/*shared values used by multiple Adam7 related functions*/
-
-static const unsigned ADAM7_IX[7] = { 0, 4, 0, 2, 0, 1, 0 }; /*x start values*/
-static const unsigned ADAM7_IY[7] = { 0, 0, 4, 0, 2, 0, 1 }; /*y start values*/
-static const unsigned ADAM7_DX[7] = { 8, 8, 4, 4, 2, 2, 1 }; /*x delta values*/
-static const unsigned ADAM7_DY[7] = { 8, 8, 8, 4, 4, 2, 2 }; /*y delta values*/
-
-/*
-Outputs various dimensions and positions in the image related to the Adam7 reduced images.
-passw: output containing the width of the 7 passes
-passh: output containing the height of the 7 passes
-filter_passstart: output containing the index of the start and end of each
- reduced image with filter bytes
-padded_passstart output containing the index of the start and end of each
- reduced image when without filter bytes but with padded scanlines
-passstart: output containing the index of the start and end of each reduced
- image without padding between scanlines, but still padding between the images
-w, h: width and height of non-interlaced image
-bpp: bits per pixel
-"padded" is only relevant if bpp is less than 8 and a scanline or image does not
- end at a full byte
-*/
-static void Adam7_getpassvalues(unsigned passw[7], unsigned passh[7], size_t filter_passstart[8],
- size_t padded_passstart[8], size_t passstart[8], unsigned w, unsigned h, unsigned bpp) {
- /*the passstart values have 8 values: the 8th one indicates the byte after the end of the 7th (= last) pass*/
- unsigned i;
-
- /*calculate width and height in pixels of each pass*/
- for(i = 0; i != 7; ++i) {
- passw[i] = (w + ADAM7_DX[i] - ADAM7_IX[i] - 1) / ADAM7_DX[i];
- passh[i] = (h + ADAM7_DY[i] - ADAM7_IY[i] - 1) / ADAM7_DY[i];
- if(passw[i] == 0) passh[i] = 0;
- if(passh[i] == 0) passw[i] = 0;
- }
-
- filter_passstart[0] = padded_passstart[0] = passstart[0] = 0;
- for(i = 0; i != 7; ++i) {
- /*if passw[i] is 0, it's 0 bytes, not 1 (no filtertype-byte)*/
- filter_passstart[i + 1] = filter_passstart[i]
- + ((passw[i] && passh[i]) ? passh[i] * (1 + (passw[i] * bpp + 7) / 8) : 0);
- /*bits padded if needed to fill full byte at end of each scanline*/
- padded_passstart[i + 1] = padded_passstart[i] + passh[i] * ((passw[i] * bpp + 7) / 8);
- /*only padded at end of reduced image*/
- passstart[i + 1] = passstart[i] + (passh[i] * passw[i] * bpp + 7) / 8;
- }
-}
-
-#ifdef LODEPNG_COMPILE_DECODER
-
-/* ////////////////////////////////////////////////////////////////////////// */
-/* / PNG Decoder / */
-/* ////////////////////////////////////////////////////////////////////////// */
-
-/*read the information from the header and store it in the LodePNGInfo. return value is error*/
-unsigned lodepng_inspect(unsigned* w, unsigned* h, LodePNGState* state,
- const unsigned char* in, size_t insize) {
- unsigned width, height;
- LodePNGInfo* info = &state->info_png;
- if(insize == 0 || in == 0) {
- CERROR_RETURN_ERROR(state->error, 48); /*error: the given data is empty*/
- }
- if(insize < 33) {
- CERROR_RETURN_ERROR(state->error, 27); /*error: the data length is smaller than the length of a PNG header*/
- }
-
- /*when decoding a new PNG image, make sure all parameters created after previous decoding are reset*/
- /* TODO: remove this. One should use a new LodePNGState for new sessions */
- lodepng_info_cleanup(info);
- lodepng_info_init(info);
-
- if(in[0] != 137 || in[1] != 80 || in[2] != 78 || in[3] != 71
- || in[4] != 13 || in[5] != 10 || in[6] != 26 || in[7] != 10) {
- CERROR_RETURN_ERROR(state->error, 28); /*error: the first 8 bytes are not the correct PNG signature*/
- }
- if(lodepng_chunk_length(in + 8) != 13) {
- CERROR_RETURN_ERROR(state->error, 94); /*error: header size must be 13 bytes*/
- }
- if(!lodepng_chunk_type_equals(in + 8, "IHDR")) {
- CERROR_RETURN_ERROR(state->error, 29); /*error: it doesn't start with a IHDR chunk!*/
- }
-
- /*read the values given in the header*/
- width = lodepng_read32bitInt(&in[16]);
- height = lodepng_read32bitInt(&in[20]);
- info->color.bitdepth = in[24];
- info->color.colortype = (LodePNGColorType)in[25];
- info->compression_method = in[26];
- info->filter_method = in[27];
- info->interlace_method = in[28];
-
- if(width == 0 || height == 0) {
- CERROR_RETURN_ERROR(state->error, 93);
- }
-
- if(w) *w = width;
- if(h) *h = height;
-
- if(!state->decoder.ignore_crc) {
- unsigned CRC = lodepng_read32bitInt(&in[29]);
- unsigned checksum = lodepng_crc32(&in[12], 17);
- if(CRC != checksum) {
- CERROR_RETURN_ERROR(state->error, 57); /*invalid CRC*/
- }
- }
-
- /*error: only compression method 0 is allowed in the specification*/
- if(info->compression_method != 0) CERROR_RETURN_ERROR(state->error, 32);
- /*error: only filter method 0 is allowed in the specification*/
- if(info->filter_method != 0) CERROR_RETURN_ERROR(state->error, 33);
- /*error: only interlace methods 0 and 1 exist in the specification*/
- if(info->interlace_method > 1) CERROR_RETURN_ERROR(state->error, 34);
-
- state->error = checkColorValidity(info->color.colortype, info->color.bitdepth);
- return state->error;
-}
-
-static unsigned unfilterScanline(unsigned char* recon, const unsigned char* scanline, const unsigned char* precon,
- size_t bytewidth, unsigned char filterType, size_t length) {
- /*
- For PNG filter method 0
- unfilter a PNG image scanline by scanline. when the pixels are smaller than 1 byte,
- the filter works byte per byte (bytewidth = 1)
- precon is the previous unfiltered scanline, recon the result, scanline the current one
- the incoming scanlines do NOT include the filtertype byte, that one is given in the parameter filterType instead
- recon and scanline MAY be the same memory address! precon must be disjoint.
- */
-
- size_t i;
- switch(filterType) {
- case 0:
- for(i = 0; i != length; ++i) recon[i] = scanline[i];
- break;
- case 1:
- for(i = 0; i != bytewidth; ++i) recon[i] = scanline[i];
- for(i = bytewidth; i < length; ++i) recon[i] = scanline[i] + recon[i - bytewidth];
- break;
- case 2:
- if(precon) {
- for(i = 0; i != length; ++i) recon[i] = scanline[i] + precon[i];
- } else {
- for(i = 0; i != length; ++i) recon[i] = scanline[i];
- }
- break;
- case 3:
- if(precon) {
- for(i = 0; i != bytewidth; ++i) recon[i] = scanline[i] + (precon[i] >> 1);
- for(i = bytewidth; i < length; ++i) recon[i] = scanline[i] + ((recon[i - bytewidth] + precon[i]) >> 1);
- } else {
- for(i = 0; i != bytewidth; ++i) recon[i] = scanline[i];
- for(i = bytewidth; i < length; ++i) recon[i] = scanline[i] + (recon[i - bytewidth] >> 1);
- }
- break;
- case 4:
- if(precon) {
- for(i = 0; i != bytewidth; ++i) {
- recon[i] = (scanline[i] + precon[i]); /*paethPredictor(0, precon[i], 0) is always precon[i]*/
- }
- for(i = bytewidth; i < length; ++i) {
- recon[i] = (scanline[i] + paethPredictor(recon[i - bytewidth], precon[i], precon[i - bytewidth]));
- }
- } else {
- for(i = 0; i != bytewidth; ++i) {
- recon[i] = scanline[i];
- }
- for(i = bytewidth; i < length; ++i) {
- /*paethPredictor(recon[i - bytewidth], 0, 0) is always recon[i - bytewidth]*/
- recon[i] = (scanline[i] + recon[i - bytewidth]);
- }
- }
- break;
- default: return 36; /*error: unexisting filter type given*/
- }
- return 0;
-}
-
-static unsigned unfilter(unsigned char* out, const unsigned char* in, unsigned w, unsigned h, unsigned bpp) {
- /*
- For PNG filter method 0
- this function unfilters a single image (e.g. without interlacing this is called once, with Adam7 seven times)
- out must have enough bytes allocated already, in must have the scanlines + 1 filtertype byte per scanline
- w and h are image dimensions or dimensions of reduced image, bpp is bits per pixel
- in and out are allowed to be the same memory address (but aren't the same size since in has the extra filter bytes)
- */
-
- unsigned y;
- unsigned char* prevline = 0;
-
- /*bytewidth is used for filtering, is 1 when bpp < 8, number of bytes per pixel otherwise*/
- size_t bytewidth = (bpp + 7) / 8;
- size_t linebytes = (w * bpp + 7) / 8;
-
- for(y = 0; y < h; ++y) {
- size_t outindex = linebytes * y;
- size_t inindex = (1 + linebytes) * y; /*the extra filterbyte added to each row*/
- unsigned char filterType = in[inindex];
-
- CERROR_TRY_RETURN(unfilterScanline(&out[outindex], &in[inindex + 1], prevline, bytewidth, filterType, linebytes));
-
- prevline = &out[outindex];
- }
-
- return 0;
-}
-
-/*
-in: Adam7 interlaced image, with no padding bits between scanlines, but between
- reduced images so that each reduced image starts at a byte.
-out: the same pixels, but re-ordered so that they're now a non-interlaced image with size w*h
-bpp: bits per pixel
-out has the following size in bits: w * h * bpp.
-in is possibly bigger due to padding bits between reduced images.
-out must be big enough AND must be 0 everywhere if bpp < 8 in the current implementation
-(because that's likely a little bit faster)
-NOTE: comments about padding bits are only relevant if bpp < 8
-*/
-static void Adam7_deinterlace(unsigned char* out, const unsigned char* in, unsigned w, unsigned h, unsigned bpp) {
- unsigned passw[7], passh[7];
- size_t filter_passstart[8], padded_passstart[8], passstart[8];
- unsigned i;
-
- Adam7_getpassvalues(passw, passh, filter_passstart, padded_passstart, passstart, w, h, bpp);
-
- if(bpp >= 8) {
- for(i = 0; i != 7; ++i) {
- unsigned x, y, b;
- size_t bytewidth = bpp / 8;
- for(y = 0; y < passh[i]; ++y)
- for(x = 0; x < passw[i]; ++x) {
- size_t pixelinstart = passstart[i] + (y * passw[i] + x) * bytewidth;
- size_t pixeloutstart = ((ADAM7_IY[i] + y * ADAM7_DY[i]) * w + ADAM7_IX[i] + x * ADAM7_DX[i]) * bytewidth;
- for(b = 0; b < bytewidth; ++b) {
- out[pixeloutstart + b] = in[pixelinstart + b];
- }
- }
- }
- } else /*bpp < 8: Adam7 with pixels < 8 bit is a bit trickier: with bit pointers*/ {
- for(i = 0; i != 7; ++i) {
- unsigned x, y, b;
- unsigned ilinebits = bpp * passw[i];
- unsigned olinebits = bpp * w;
- size_t obp, ibp; /*bit pointers (for out and in buffer)*/
- for(y = 0; y < passh[i]; ++y)
- for(x = 0; x < passw[i]; ++x) {
- ibp = (8 * passstart[i]) + (y * ilinebits + x * bpp);
- obp = (ADAM7_IY[i] + y * ADAM7_DY[i]) * olinebits + (ADAM7_IX[i] + x * ADAM7_DX[i]) * bpp;
- for(b = 0; b < bpp; ++b) {
- unsigned char bit = readBitFromReversedStream(&ibp, in);
- /*note that this function assumes the out buffer is completely 0, use setBitOfReversedStream otherwise*/
- setBitOfReversedStream0(&obp, out, bit);
- }
- }
- }
- }
-}
-
-static void removePaddingBits(unsigned char* out, const unsigned char* in,
- size_t olinebits, size_t ilinebits, unsigned h) {
- /*
- After filtering there are still padding bits if scanlines have non multiple of 8 bit amounts. They need
- to be removed (except at last scanline of (Adam7-reduced) image) before working with pure image buffers
- for the Adam7 code, the color convert code and the output to the user.
- in and out are allowed to be the same buffer, in may also be higher but still overlapping; in must
- have >= ilinebits*h bits, out must have >= olinebits*h bits, olinebits must be <= ilinebits
- also used to move bits after earlier such operations happened, e.g. in a sequence of reduced images from Adam7
- only useful if (ilinebits - olinebits) is a value in the range 1..7
- */
- unsigned y;
- size_t diff = ilinebits - olinebits;
- size_t ibp = 0, obp = 0; /*input and output bit pointers*/
- for(y = 0; y < h; ++y) {
- size_t x;
- for(x = 0; x < olinebits; ++x) {
- unsigned char bit = readBitFromReversedStream(&ibp, in);
- setBitOfReversedStream(&obp, out, bit);
- }
- ibp += diff;
- }
-}
-
-/*out must be buffer big enough to contain full image, and in must contain the full decompressed data from
-the IDAT chunks (with filter index bytes and possible padding bits)
-return value is error*/
-static unsigned postProcessScanlines(unsigned char* out, unsigned char* in,
- unsigned w, unsigned h, const LodePNGInfo* info_png) {
- /*
- This function converts the filtered-padded-interlaced data into pure 2D image buffer with the PNG's colortype.
- Steps:
- *) if no Adam7: 1) unfilter 2) remove padding bits (= posible extra bits per scanline if bpp < 8)
- *) if adam7: 1) 7x unfilter 2) 7x remove padding bits 3) Adam7_deinterlace
- NOTE: the in buffer will be overwritten with intermediate data!
- */
- unsigned bpp = lodepng_get_bpp(&info_png->color);
- if(bpp == 0) return 31; /*error: invalid colortype*/
-
- if(info_png->interlace_method == 0) {
- if(bpp < 8 && w * bpp != ((w * bpp + 7) / 8) * 8) {
- CERROR_TRY_RETURN(unfilter(in, in, w, h, bpp));
- removePaddingBits(out, in, w * bpp, ((w * bpp + 7) / 8) * 8, h);
- }
- /*we can immediately filter into the out buffer, no other steps needed*/
- else CERROR_TRY_RETURN(unfilter(out, in, w, h, bpp));
- } else /*interlace_method is 1 (Adam7)*/ {
- unsigned passw[7], passh[7]; size_t filter_passstart[8], padded_passstart[8], passstart[8];
- unsigned i;
-
- Adam7_getpassvalues(passw, passh, filter_passstart, padded_passstart, passstart, w, h, bpp);
-
- for(i = 0; i != 7; ++i) {
- CERROR_TRY_RETURN(unfilter(&in[padded_passstart[i]], &in[filter_passstart[i]], passw[i], passh[i], bpp));
- /*TODO: possible efficiency improvement: if in this reduced image the bits fit nicely in 1 scanline,
- move bytes instead of bits or move not at all*/
- if(bpp < 8) {
- /*remove padding bits in scanlines; after this there still may be padding
- bits between the different reduced images: each reduced image still starts nicely at a byte*/
- removePaddingBits(&in[passstart[i]], &in[padded_passstart[i]], passw[i] * bpp,
- ((passw[i] * bpp + 7) / 8) * 8, passh[i]);
- }
- }
-
- Adam7_deinterlace(out, in, w, h, bpp);
- }
-
- return 0;
-}
-
-static unsigned readChunk_PLTE(LodePNGColorMode* color, const unsigned char* data, size_t chunkLength) {
- unsigned pos = 0, i;
- if(color->palette) lodepng_free(color->palette);
- color->palettesize = chunkLength / 3;
- color->palette = (unsigned char*)lodepng_malloc(4 * color->palettesize);
- if(!color->palette && color->palettesize) {
- color->palettesize = 0;
- return 83; /*alloc fail*/
- }
- if(color->palettesize > 256) return 38; /*error: palette too big*/
-
- for(i = 0; i != color->palettesize; ++i) {
- color->palette[4 * i + 0] = data[pos++]; /*R*/
- color->palette[4 * i + 1] = data[pos++]; /*G*/
- color->palette[4 * i + 2] = data[pos++]; /*B*/
- color->palette[4 * i + 3] = 255; /*alpha*/
- }
-
- return 0; /* OK */
-}
-
-static unsigned readChunk_tRNS(LodePNGColorMode* color, const unsigned char* data, size_t chunkLength) {
- unsigned i;
- if(color->colortype == LCT_PALETTE) {
- /*error: more alpha values given than there are palette entries*/
- if(chunkLength > color->palettesize) return 39;
-
- for(i = 0; i != chunkLength; ++i) color->palette[4 * i + 3] = data[i];
- } else if(color->colortype == LCT_GREY) {
- /*error: this chunk must be 2 bytes for grayscale image*/
- if(chunkLength != 2) return 30;
-
- color->key_defined = 1;
- color->key_r = color->key_g = color->key_b = 256u * data[0] + data[1];
- } else if(color->colortype == LCT_RGB) {
- /*error: this chunk must be 6 bytes for RGB image*/
- if(chunkLength != 6) return 41;
-
- color->key_defined = 1;
- color->key_r = 256u * data[0] + data[1];
- color->key_g = 256u * data[2] + data[3];
- color->key_b = 256u * data[4] + data[5];
- }
- else return 42; /*error: tRNS chunk not allowed for other color models*/
-
- return 0; /* OK */
-}
-
-
-#ifdef LODEPNG_COMPILE_ANCILLARY_CHUNKS
-/*background color chunk (bKGD)*/
-static unsigned readChunk_bKGD(LodePNGInfo* info, const unsigned char* data, size_t chunkLength) {
- if(info->color.colortype == LCT_PALETTE) {
- /*error: this chunk must be 1 byte for indexed color image*/
- if(chunkLength != 1) return 43;
-
- /*error: invalid palette index, or maybe this chunk appeared before PLTE*/
- if(data[0] >= info->color.palettesize) return 103;
-
- info->background_defined = 1;
- info->background_r = info->background_g = info->background_b = data[0];
- } else if(info->color.colortype == LCT_GREY || info->color.colortype == LCT_GREY_ALPHA) {
- /*error: this chunk must be 2 bytes for grayscale image*/
- if(chunkLength != 2) return 44;
-
- /*the values are truncated to bitdepth in the PNG file*/
- info->background_defined = 1;
- info->background_r = info->background_g = info->background_b = 256u * data[0] + data[1];
- } else if(info->color.colortype == LCT_RGB || info->color.colortype == LCT_RGBA) {
- /*error: this chunk must be 6 bytes for grayscale image*/
- if(chunkLength != 6) return 45;
-
- /*the values are truncated to bitdepth in the PNG file*/
- info->background_defined = 1;
- info->background_r = 256u * data[0] + data[1];
- info->background_g = 256u * data[2] + data[3];
- info->background_b = 256u * data[4] + data[5];
- }
-
- return 0; /* OK */
-}
-
-/*text chunk (tEXt)*/
-static unsigned readChunk_tEXt(LodePNGInfo* info, const unsigned char* data, size_t chunkLength) {
- unsigned error = 0;
- char *key = 0, *str = 0;
- unsigned i;
-
- while(!error) /*not really a while loop, only used to break on error*/ {
- unsigned length, string2_begin;
-
- length = 0;
- while(length < chunkLength && data[length] != 0) ++length;
- /*even though it's not allowed by the standard, no error is thrown if
- there's no null termination char, if the text is empty*/
- if(length < 1 || length > 79) CERROR_BREAK(error, 89); /*keyword too short or long*/
-
- key = (char*)lodepng_malloc(length + 1);
- if(!key) CERROR_BREAK(error, 83); /*alloc fail*/
-
- key[length] = 0;
- for(i = 0; i != length; ++i) key[i] = (char)data[i];
-
- string2_begin = length + 1; /*skip keyword null terminator*/
-
- length = (unsigned)(chunkLength < string2_begin ? 0 : chunkLength - string2_begin);
- str = (char*)lodepng_malloc(length + 1);
- if(!str) CERROR_BREAK(error, 83); /*alloc fail*/
-
- str[length] = 0;
- for(i = 0; i != length; ++i) str[i] = (char)data[string2_begin + i];
-
- error = lodepng_add_text(info, key, str);
-
- break;
- }
-
- lodepng_free(key);
- lodepng_free(str);
-
- return error;
-}
-
-/*compressed text chunk (zTXt)*/
-static unsigned readChunk_zTXt(LodePNGInfo* info, const LodePNGDecompressSettings* zlibsettings,
- const unsigned char* data, size_t chunkLength) {
- unsigned error = 0;
- unsigned i;
-
- unsigned length, string2_begin;
- char *key = 0;
- ucvector decoded;
-
- ucvector_init(&decoded);
-
- while(!error) /*not really a while loop, only used to break on error*/ {
- for(length = 0; length < chunkLength && data[length] != 0; ++length) ;
- if(length + 2 >= chunkLength) CERROR_BREAK(error, 75); /*no null termination, corrupt?*/
- if(length < 1 || length > 79) CERROR_BREAK(error, 89); /*keyword too short or long*/
-
- key = (char*)lodepng_malloc(length + 1);
- if(!key) CERROR_BREAK(error, 83); /*alloc fail*/
-
- key[length] = 0;
- for(i = 0; i != length; ++i) key[i] = (char)data[i];
-
- if(data[length + 1] != 0) CERROR_BREAK(error, 72); /*the 0 byte indicating compression must be 0*/
-
- string2_begin = length + 2;
- if(string2_begin > chunkLength) CERROR_BREAK(error, 75); /*no null termination, corrupt?*/
-
- length = (unsigned)chunkLength - string2_begin;
- /*will fail if zlib error, e.g. if length is too small*/
- error = zlib_decompress(&decoded.data, &decoded.size,
- (unsigned char*)(&data[string2_begin]),
- length, zlibsettings);
- if(error) break;
- ucvector_push_back(&decoded, 0);
-
- error = lodepng_add_text(info, key, (char*)decoded.data);
-
- break;
- }
-
- lodepng_free(key);
- ucvector_cleanup(&decoded);
-
- return error;
-}
-
-/*international text chunk (iTXt)*/
-static unsigned readChunk_iTXt(LodePNGInfo* info, const LodePNGDecompressSettings* zlibsettings,
- const unsigned char* data, size_t chunkLength) {
- unsigned error = 0;
- unsigned i;
-
- unsigned length, begin, compressed;
- char *key = 0, *langtag = 0, *transkey = 0;
- ucvector decoded;
- ucvector_init(&decoded); /* TODO: only use in case of compressed text */
-
- while(!error) /*not really a while loop, only used to break on error*/ {
- /*Quick check if the chunk length isn't too small. Even without check
- it'd still fail with other error checks below if it's too short. This just gives a different error code.*/
- if(chunkLength < 5) CERROR_BREAK(error, 30); /*iTXt chunk too short*/
-
- /*read the key*/
- for(length = 0; length < chunkLength && data[length] != 0; ++length) ;
- if(length + 3 >= chunkLength) CERROR_BREAK(error, 75); /*no null termination char, corrupt?*/
- if(length < 1 || length > 79) CERROR_BREAK(error, 89); /*keyword too short or long*/
-
- key = (char*)lodepng_malloc(length + 1);
- if(!key) CERROR_BREAK(error, 83); /*alloc fail*/
-
- key[length] = 0;
- for(i = 0; i != length; ++i) key[i] = (char)data[i];
-
- /*read the compression method*/
- compressed = data[length + 1];
- if(data[length + 2] != 0) CERROR_BREAK(error, 72); /*the 0 byte indicating compression must be 0*/
-
- /*even though it's not allowed by the standard, no error is thrown if
- there's no null termination char, if the text is empty for the next 3 texts*/
-
- /*read the langtag*/
- begin = length + 3;
- length = 0;
- for(i = begin; i < chunkLength && data[i] != 0; ++i) ++length;
-
- langtag = (char*)lodepng_malloc(length + 1);
- if(!langtag) CERROR_BREAK(error, 83); /*alloc fail*/
-
- langtag[length] = 0;
- for(i = 0; i != length; ++i) langtag[i] = (char)data[begin + i];
-
- /*read the transkey*/
- begin += length + 1;
- length = 0;
- for(i = begin; i < chunkLength && data[i] != 0; ++i) ++length;
-
- transkey = (char*)lodepng_malloc(length + 1);
- if(!transkey) CERROR_BREAK(error, 83); /*alloc fail*/
-
- transkey[length] = 0;
- for(i = 0; i != length; ++i) transkey[i] = (char)data[begin + i];
-
- /*read the actual text*/
- begin += length + 1;
-
- length = (unsigned)chunkLength < begin ? 0 : (unsigned)chunkLength - begin;
-
- if(compressed) {
- /*will fail if zlib error, e.g. if length is too small*/
- error = zlib_decompress(&decoded.data, &decoded.size,
- (unsigned char*)(&data[begin]),
- length, zlibsettings);
- if(error) break;
- if(decoded.allocsize < decoded.size) decoded.allocsize = decoded.size;
- ucvector_push_back(&decoded, 0);
- } else {
- if(!ucvector_resize(&decoded, length + 1)) CERROR_BREAK(error, 83 /*alloc fail*/);
-
- decoded.data[length] = 0;
- for(i = 0; i != length; ++i) decoded.data[i] = data[begin + i];
- }
-
- error = lodepng_add_itext(info, key, langtag, transkey, (char*)decoded.data);
-
- break;
- }
-
- lodepng_free(key);
- lodepng_free(langtag);
- lodepng_free(transkey);
- ucvector_cleanup(&decoded);
-
- return error;
-}
-
-static unsigned readChunk_tIME(LodePNGInfo* info, const unsigned char* data, size_t chunkLength) {
- if(chunkLength != 7) return 73; /*invalid tIME chunk size*/
-
- info->time_defined = 1;
- info->time.year = 256u * data[0] + data[1];
- info->time.month = data[2];
- info->time.day = data[3];
- info->time.hour = data[4];
- info->time.minute = data[5];
- info->time.second = data[6];
-
- return 0; /* OK */
-}
-
-static unsigned readChunk_pHYs(LodePNGInfo* info, const unsigned char* data, size_t chunkLength) {
- if(chunkLength != 9) return 74; /*invalid pHYs chunk size*/
-
- info->phys_defined = 1;
- info->phys_x = 16777216u * data[0] + 65536u * data[1] + 256u * data[2] + data[3];
- info->phys_y = 16777216u * data[4] + 65536u * data[5] + 256u * data[6] + data[7];
- info->phys_unit = data[8];
-
- return 0; /* OK */
-}
-
-static unsigned readChunk_gAMA(LodePNGInfo* info, const unsigned char* data, size_t chunkLength) {
- if(chunkLength != 4) return 96; /*invalid gAMA chunk size*/
-
- info->gama_defined = 1;
- info->gama_gamma = 16777216u * data[0] + 65536u * data[1] + 256u * data[2] + data[3];
-
- return 0; /* OK */
-}
-
-static unsigned readChunk_cHRM(LodePNGInfo* info, const unsigned char* data, size_t chunkLength) {
- if(chunkLength != 32) return 97; /*invalid cHRM chunk size*/
-
- info->chrm_defined = 1;
- info->chrm_white_x = 16777216u * data[ 0] + 65536u * data[ 1] + 256u * data[ 2] + data[ 3];
- info->chrm_white_y = 16777216u * data[ 4] + 65536u * data[ 5] + 256u * data[ 6] + data[ 7];
- info->chrm_red_x = 16777216u * data[ 8] + 65536u * data[ 9] + 256u * data[10] + data[11];
- info->chrm_red_y = 16777216u * data[12] + 65536u * data[13] + 256u * data[14] + data[15];
- info->chrm_green_x = 16777216u * data[16] + 65536u * data[17] + 256u * data[18] + data[19];
- info->chrm_green_y = 16777216u * data[20] + 65536u * data[21] + 256u * data[22] + data[23];
- info->chrm_blue_x = 16777216u * data[24] + 65536u * data[25] + 256u * data[26] + data[27];
- info->chrm_blue_y = 16777216u * data[28] + 65536u * data[29] + 256u * data[30] + data[31];
-
- return 0; /* OK */
-}
-
-static unsigned readChunk_sRGB(LodePNGInfo* info, const unsigned char* data, size_t chunkLength) {
- if(chunkLength != 1) return 98; /*invalid sRGB chunk size (this one is never ignored)*/
-
- info->srgb_defined = 1;
- info->srgb_intent = data[0];
-
- return 0; /* OK */
-}
-
-static unsigned readChunk_iCCP(LodePNGInfo* info, const LodePNGDecompressSettings* zlibsettings,
- const unsigned char* data, size_t chunkLength) {
- unsigned error = 0;
- unsigned i;
-
- unsigned length, string2_begin;
- ucvector decoded;
-
- info->iccp_defined = 1;
- if(info->iccp_name) lodepng_clear_icc(info);
-
- for(length = 0; length < chunkLength && data[length] != 0; ++length) ;
- if(length + 2 >= chunkLength) return 75; /*no null termination, corrupt?*/
- if(length < 1 || length > 79) return 89; /*keyword too short or long*/
-
- info->iccp_name = (char*)lodepng_malloc(length + 1);
- if(!info->iccp_name) return 83; /*alloc fail*/
-
- info->iccp_name[length] = 0;
- for(i = 0; i != length; ++i) info->iccp_name[i] = (char)data[i];
-
- if(data[length + 1] != 0) return 72; /*the 0 byte indicating compression must be 0*/
-
- string2_begin = length + 2;
- if(string2_begin > chunkLength) return 75; /*no null termination, corrupt?*/
-
- length = (unsigned)chunkLength - string2_begin;
- ucvector_init(&decoded);
- error = zlib_decompress(&decoded.data, &decoded.size,
- (unsigned char*)(&data[string2_begin]),
- length, zlibsettings);
- if(!error) {
- info->iccp_profile_size = (unsigned int)decoded.size;
- info->iccp_profile = (unsigned char*)lodepng_malloc(decoded.size);
- if(info->iccp_profile) {
- memcpy(info->iccp_profile, decoded.data, decoded.size);
- } else {
- error = 83; /* alloc fail */
- }
- }
- ucvector_cleanup(&decoded);
- return error;
-}
-#endif /*LODEPNG_COMPILE_ANCILLARY_CHUNKS*/
-
-unsigned lodepng_inspect_chunk(LodePNGState* state, size_t pos,
- const unsigned char* in, size_t insize) {
- const unsigned char* chunk = in + pos;
- unsigned chunkLength;
- const unsigned char* data;
- unsigned unhandled = 0;
- unsigned error = 0;
-
- if (pos + 4 > insize) return 30;
- chunkLength = lodepng_chunk_length(chunk);
- if(chunkLength > 2147483647) return 63;
- data = lodepng_chunk_data_const(chunk);
- if(data + chunkLength + 4 > in + insize) return 30;
-
- if(lodepng_chunk_type_equals(chunk, "PLTE")) {
- error = readChunk_PLTE(&state->info_png.color, data, chunkLength);
- } else if(lodepng_chunk_type_equals(chunk, "tRNS")) {
- error = readChunk_tRNS(&state->info_png.color, data, chunkLength);
-#ifdef LODEPNG_COMPILE_ANCILLARY_CHUNKS
- } else if(lodepng_chunk_type_equals(chunk, "bKGD")) {
- error = readChunk_bKGD(&state->info_png, data, chunkLength);
- } else if(lodepng_chunk_type_equals(chunk, "tEXt")) {
- error = readChunk_tEXt(&state->info_png, data, chunkLength);
- } else if(lodepng_chunk_type_equals(chunk, "zTXt")) {
- error = readChunk_zTXt(&state->info_png, &state->decoder.zlibsettings, data, chunkLength);
- } else if(lodepng_chunk_type_equals(chunk, "iTXt")) {
- error = readChunk_iTXt(&state->info_png, &state->decoder.zlibsettings, data, chunkLength);
- } else if(lodepng_chunk_type_equals(chunk, "tIME")) {
- error = readChunk_tIME(&state->info_png, data, chunkLength);
- } else if(lodepng_chunk_type_equals(chunk, "pHYs")) {
- error = readChunk_pHYs(&state->info_png, data, chunkLength);
- } else if(lodepng_chunk_type_equals(chunk, "gAMA")) {
- error = readChunk_gAMA(&state->info_png, data, chunkLength);
- } else if(lodepng_chunk_type_equals(chunk, "cHRM")) {
- error = readChunk_cHRM(&state->info_png, data, chunkLength);
- } else if(lodepng_chunk_type_equals(chunk, "sRGB")) {
- error = readChunk_sRGB(&state->info_png, data, chunkLength);
- } else if(lodepng_chunk_type_equals(chunk, "iCCP")) {
- error = readChunk_iCCP(&state->info_png, &state->decoder.zlibsettings, data, chunkLength);
-#endif /*LODEPNG_COMPILE_ANCILLARY_CHUNKS*/
- } else {
- /* unhandled chunk is ok (is not an error) */
- unhandled = 1;
- }
-
- if(!error && !unhandled && !state->decoder.ignore_crc) {
- if(lodepng_chunk_check_crc(chunk)) return 57; /*invalid CRC*/
- }
-
- return error;
-}
-
-/*read a PNG, the result will be in the same color type as the PNG (hence "generic")*/
-static void decodeGeneric(unsigned char** out, unsigned* w, unsigned* h,
- LodePNGState* state,
- const unsigned char* in, size_t insize) {
- unsigned char IEND = 0;
- const unsigned char* chunk;
- size_t i;
- ucvector idat; /*the data from idat chunks*/
- ucvector scanlines;
- size_t predict;
- size_t outsize = 0;
-
- /*for unknown chunk order*/
- unsigned unknown = 0;
-#ifdef LODEPNG_COMPILE_ANCILLARY_CHUNKS
- unsigned critical_pos = 1; /*1 = after IHDR, 2 = after PLTE, 3 = after IDAT*/
-#endif /*LODEPNG_COMPILE_ANCILLARY_CHUNKS*/
-
-
- /* safe output values in case error happens */
- *out = 0;
- *w = *h = 0;
-
- state->error = lodepng_inspect(w, h, state, in, insize); /*reads header and resets other parameters in state->info_png*/
- if(state->error) return;
-
- if(lodepng_pixel_overflow(*w, *h, &state->info_png.color, &state->info_raw)) {
- CERROR_RETURN(state->error, 92); /*overflow possible due to amount of pixels*/
- }
-
- ucvector_init(&idat);
- chunk = &in[33]; /*first byte of the first chunk after the header*/
-
- /*loop through the chunks, ignoring unknown chunks and stopping at IEND chunk.
- IDAT data is put at the start of the in buffer*/
- while(!IEND && !state->error) {
- unsigned chunkLength;
- const unsigned char* data; /*the data in the chunk*/
-
- /*error: size of the in buffer too small to contain next chunk*/
- if((size_t)((chunk - in) + 12) > insize || chunk < in) {
- if(state->decoder.ignore_end) break; /*other errors may still happen though*/
- CERROR_BREAK(state->error, 30);
- }
-
- /*length of the data of the chunk, excluding the length bytes, chunk type and CRC bytes*/
- chunkLength = lodepng_chunk_length(chunk);
- /*error: chunk length larger than the max PNG chunk size*/
- if(chunkLength > 2147483647) {
- if(state->decoder.ignore_end) break; /*other errors may still happen though*/
- CERROR_BREAK(state->error, 63);
- }
-
- if((size_t)((chunk - in) + chunkLength + 12) > insize || (chunk + chunkLength + 12) < in) {
- CERROR_BREAK(state->error, 64); /*error: size of the in buffer too small to contain next chunk*/
- }
-
- data = lodepng_chunk_data_const(chunk);
-
- unknown = 0;
-
- /*IDAT chunk, containing compressed image data*/
- if(lodepng_chunk_type_equals(chunk, "IDAT")) {
- size_t oldsize = idat.size;
- size_t newsize;
- if(lodepng_addofl(oldsize, chunkLength, &newsize)) CERROR_BREAK(state->error, 95);
- if(!ucvector_resize(&idat, newsize)) CERROR_BREAK(state->error, 83 /*alloc fail*/);
- for(i = 0; i != chunkLength; ++i) idat.data[oldsize + i] = data[i];
-#ifdef LODEPNG_COMPILE_ANCILLARY_CHUNKS
- critical_pos = 3;
-#endif /*LODEPNG_COMPILE_ANCILLARY_CHUNKS*/
- } else if(lodepng_chunk_type_equals(chunk, "IEND")) {
- /*IEND chunk*/
- IEND = 1;
- } else if(lodepng_chunk_type_equals(chunk, "PLTE")) {
- /*palette chunk (PLTE)*/
- state->error = readChunk_PLTE(&state->info_png.color, data, chunkLength);
- if(state->error) break;
-#ifdef LODEPNG_COMPILE_ANCILLARY_CHUNKS
- critical_pos = 2;
-#endif /*LODEPNG_COMPILE_ANCILLARY_CHUNKS*/
- } else if(lodepng_chunk_type_equals(chunk, "tRNS")) {
- /*palette transparency chunk (tRNS). Even though this one is an ancillary chunk , it is still compiled
- in without 'LODEPNG_COMPILE_ANCILLARY_CHUNKS' because it contains essential color information that
- affects the alpha channel of pixels. */
- state->error = readChunk_tRNS(&state->info_png.color, data, chunkLength);
- if(state->error) break;
-#ifdef LODEPNG_COMPILE_ANCILLARY_CHUNKS
- /*background color chunk (bKGD)*/
- } else if(lodepng_chunk_type_equals(chunk, "bKGD")) {
- state->error = readChunk_bKGD(&state->info_png, data, chunkLength);
- if(state->error) break;
- } else if(lodepng_chunk_type_equals(chunk, "tEXt")) {
- /*text chunk (tEXt)*/
- if(state->decoder.read_text_chunks) {
- state->error = readChunk_tEXt(&state->info_png, data, chunkLength);
- if(state->error) break;
- }
- } else if(lodepng_chunk_type_equals(chunk, "zTXt")) {
- /*compressed text chunk (zTXt)*/
- if(state->decoder.read_text_chunks) {
- state->error = readChunk_zTXt(&state->info_png, &state->decoder.zlibsettings, data, chunkLength);
- if(state->error) break;
- }
- } else if(lodepng_chunk_type_equals(chunk, "iTXt")) {
- /*international text chunk (iTXt)*/
- if(state->decoder.read_text_chunks) {
- state->error = readChunk_iTXt(&state->info_png, &state->decoder.zlibsettings, data, chunkLength);
- if(state->error) break;
- }
- } else if(lodepng_chunk_type_equals(chunk, "tIME")) {
- state->error = readChunk_tIME(&state->info_png, data, chunkLength);
- if(state->error) break;
- } else if(lodepng_chunk_type_equals(chunk, "pHYs")) {
- state->error = readChunk_pHYs(&state->info_png, data, chunkLength);
- if(state->error) break;
- } else if(lodepng_chunk_type_equals(chunk, "gAMA")) {
- state->error = readChunk_gAMA(&state->info_png, data, chunkLength);
- if(state->error) break;
- } else if(lodepng_chunk_type_equals(chunk, "cHRM")) {
- state->error = readChunk_cHRM(&state->info_png, data, chunkLength);
- if(state->error) break;
- } else if(lodepng_chunk_type_equals(chunk, "sRGB")) {
- state->error = readChunk_sRGB(&state->info_png, data, chunkLength);
- if(state->error) break;
- } else if(lodepng_chunk_type_equals(chunk, "iCCP")) {
- state->error = readChunk_iCCP(&state->info_png, &state->decoder.zlibsettings, data, chunkLength);
- if(state->error) break;
-#endif /*LODEPNG_COMPILE_ANCILLARY_CHUNKS*/
- } else /*it's not an implemented chunk type, so ignore it: skip over the data*/ {
- /*error: unknown critical chunk (5th bit of first byte of chunk type is 0)*/
- if(!state->decoder.ignore_critical && !lodepng_chunk_ancillary(chunk)) {
- CERROR_BREAK(state->error, 69);
- }
-
- unknown = 1;
-#ifdef LODEPNG_COMPILE_ANCILLARY_CHUNKS
- if(state->decoder.remember_unknown_chunks) {
- state->error = lodepng_chunk_append(&state->info_png.unknown_chunks_data[critical_pos - 1],
- &state->info_png.unknown_chunks_size[critical_pos - 1], chunk);
- if(state->error) break;
- }
-#endif /*LODEPNG_COMPILE_ANCILLARY_CHUNKS*/
- }
-
- if(!state->decoder.ignore_crc && !unknown) /*check CRC if wanted, only on known chunk types*/ {
- if(lodepng_chunk_check_crc(chunk)) CERROR_BREAK(state->error, 57); /*invalid CRC*/
- }
-
- if(!IEND) chunk = lodepng_chunk_next_const(chunk);
- }
-
- ucvector_init(&scanlines);
- /*predict output size, to allocate exact size for output buffer to avoid more dynamic allocation.
- If the decompressed size does not match the prediction, the image must be corrupt.*/
- if(state->info_png.interlace_method == 0) {
- predict = lodepng_get_raw_size_idat(*w, *h, &state->info_png.color);
- } else {
- /*Adam-7 interlaced: predicted size is the sum of the 7 sub-images sizes*/
- const LodePNGColorMode* color = &state->info_png.color;
- predict = 0;
- predict += lodepng_get_raw_size_idat((*w + 7) >> 3, (*h + 7) >> 3, color);
- if(*w > 4) predict += lodepng_get_raw_size_idat((*w + 3) >> 3, (*h + 7) >> 3, color);
- predict += lodepng_get_raw_size_idat((*w + 3) >> 2, (*h + 3) >> 3, color);
- if(*w > 2) predict += lodepng_get_raw_size_idat((*w + 1) >> 2, (*h + 3) >> 2, color);
- predict += lodepng_get_raw_size_idat((*w + 1) >> 1, (*h + 1) >> 2, color);
- if(*w > 1) predict += lodepng_get_raw_size_idat((*w + 0) >> 1, (*h + 1) >> 1, color);
- predict += lodepng_get_raw_size_idat((*w + 0), (*h + 0) >> 1, color);
- }
- if(!state->error && !ucvector_reserve(&scanlines, predict)) state->error = 83; /*alloc fail*/
- if(!state->error) {
- state->error = zlib_decompress(&scanlines.data, &scanlines.size, idat.data,
- idat.size, &state->decoder.zlibsettings);
- if(!state->error && scanlines.size != predict) state->error = 91; /*decompressed size doesn't match prediction*/
- }
- ucvector_cleanup(&idat);
-
- if(!state->error) {
- outsize = lodepng_get_raw_size(*w, *h, &state->info_png.color);
- *out = (unsigned char*)lodepng_malloc(outsize);
- if(!*out) state->error = 83; /*alloc fail*/
- }
- if(!state->error) {
- for(i = 0; i < outsize; i++) (*out)[i] = 0;
- state->error = postProcessScanlines(*out, scanlines.data, *w, *h, &state->info_png);
- }
- ucvector_cleanup(&scanlines);
-}
-
-unsigned lodepng_decode(unsigned char** out, unsigned* w, unsigned* h,
- LodePNGState* state,
- const unsigned char* in, size_t insize) {
- *out = 0;
- decodeGeneric(out, w, h, state, in, insize);
- if(state->error) return state->error;
- if(!state->decoder.color_convert || lodepng_color_mode_equal(&state->info_raw, &state->info_png.color)) {
- /*same color type, no copying or converting of data needed*/
- /*store the info_png color settings on the info_raw so that the info_raw still reflects what colortype
- the raw image has to the end user*/
- if(!state->decoder.color_convert) {
- state->error = lodepng_color_mode_copy(&state->info_raw, &state->info_png.color);
- if(state->error) return state->error;
- }
- } else {
- /*color conversion needed; sort of copy of the data*/
- unsigned char* data = *out;
- size_t outsize;
-
- /*TODO: check if this works according to the statement in the documentation: "The converter can convert
- from grayscale input color type, to 8-bit grayscale or grayscale with alpha"*/
- if(!(state->info_raw.colortype == LCT_RGB || state->info_raw.colortype == LCT_RGBA)
- && !(state->info_raw.bitdepth == 8)) {
- return 56; /*unsupported color mode conversion*/
- }
-
- outsize = lodepng_get_raw_size(*w, *h, &state->info_raw);
- *out = (unsigned char*)lodepng_malloc(outsize);
- if(!(*out)) {
- state->error = 83; /*alloc fail*/
- }
- else state->error = lodepng_convert(*out, data, &state->info_raw,
- &state->info_png.color, *w, *h);
- lodepng_free(data);
- }
- return state->error;
-}
-
-unsigned lodepng_decode_memory(unsigned char** out, unsigned* w, unsigned* h, const unsigned char* in,
- size_t insize, LodePNGColorType colortype, unsigned bitdepth) {
- unsigned error;
- LodePNGState state;
- lodepng_state_init(&state);
- state.info_raw.colortype = colortype;
- state.info_raw.bitdepth = bitdepth;
- error = lodepng_decode(out, w, h, &state, in, insize);
- lodepng_state_cleanup(&state);
- return error;
-}
-
-unsigned lodepng_decode32(unsigned char** out, unsigned* w, unsigned* h, const unsigned char* in, size_t insize) {
- return lodepng_decode_memory(out, w, h, in, insize, LCT_RGBA, 8);
-}
-
-unsigned lodepng_decode24(unsigned char** out, unsigned* w, unsigned* h, const unsigned char* in, size_t insize) {
- return lodepng_decode_memory(out, w, h, in, insize, LCT_RGB, 8);
-}
-
-#ifdef LODEPNG_COMPILE_DISK
-unsigned lodepng_decode_file(unsigned char** out, unsigned* w, unsigned* h, const char* filename,
- LodePNGColorType colortype, unsigned bitdepth) {
- unsigned char* buffer = 0;
- size_t buffersize;
- unsigned error;
- /* safe output values in case error happens */
- *out = 0;
- *w = *h = 0;
- error = lodepng_load_file(&buffer, &buffersize, filename);
- if(!error) error = lodepng_decode_memory(out, w, h, buffer, buffersize, colortype, bitdepth);
- lodepng_free(buffer);
- return error;
-}
-
-unsigned lodepng_decode32_file(unsigned char** out, unsigned* w, unsigned* h, const char* filename) {
- return lodepng_decode_file(out, w, h, filename, LCT_RGBA, 8);
-}
-
-unsigned lodepng_decode24_file(unsigned char** out, unsigned* w, unsigned* h, const char* filename) {
- return lodepng_decode_file(out, w, h, filename, LCT_RGB, 8);
-}
-#endif /*LODEPNG_COMPILE_DISK*/
-
-void lodepng_decoder_settings_init(LodePNGDecoderSettings* settings) {
- settings->color_convert = 1;
-#ifdef LODEPNG_COMPILE_ANCILLARY_CHUNKS
- settings->read_text_chunks = 1;
- settings->remember_unknown_chunks = 0;
-#endif /*LODEPNG_COMPILE_ANCILLARY_CHUNKS*/
- settings->ignore_crc = 0;
- settings->ignore_critical = 0;
- settings->ignore_end = 0;
- lodepng_decompress_settings_init(&settings->zlibsettings);
-}
-
-#endif /*LODEPNG_COMPILE_DECODER*/
-
-#if defined(LODEPNG_COMPILE_DECODER) || defined(LODEPNG_COMPILE_ENCODER)
-
-void lodepng_state_init(LodePNGState* state) {
-#ifdef LODEPNG_COMPILE_DECODER
- lodepng_decoder_settings_init(&state->decoder);
-#endif /*LODEPNG_COMPILE_DECODER*/
-#ifdef LODEPNG_COMPILE_ENCODER
- lodepng_encoder_settings_init(&state->encoder);
-#endif /*LODEPNG_COMPILE_ENCODER*/
- lodepng_color_mode_init(&state->info_raw);
- lodepng_info_init(&state->info_png);
- state->error = 1;
-}
-
-void lodepng_state_cleanup(LodePNGState* state) {
- lodepng_color_mode_cleanup(&state->info_raw);
- lodepng_info_cleanup(&state->info_png);
-}
-
-void lodepng_state_copy(LodePNGState* dest, const LodePNGState* source) {
- lodepng_state_cleanup(dest);
- *dest = *source;
- lodepng_color_mode_init(&dest->info_raw);
- lodepng_info_init(&dest->info_png);
- dest->error = lodepng_color_mode_copy(&dest->info_raw, &source->info_raw); if(dest->error) return;
- dest->error = lodepng_info_copy(&dest->info_png, &source->info_png); if(dest->error) return;
-}
-
-#endif /* defined(LODEPNG_COMPILE_DECODER) || defined(LODEPNG_COMPILE_ENCODER) */
-
-#ifdef LODEPNG_COMPILE_ENCODER
-
-/* ////////////////////////////////////////////////////////////////////////// */
-/* / PNG Encoder / */
-/* ////////////////////////////////////////////////////////////////////////// */
-
-/*chunkName must be string of 4 characters*/
-static unsigned addChunk(ucvector* out, const char* chunkName, const unsigned char* data, size_t length) {
- CERROR_TRY_RETURN(lodepng_chunk_create(&out->data, &out->size, (unsigned)length, chunkName, data));
- out->allocsize = out->size; /*fix the allocsize again*/
- return 0;
-}
-
-static void writeSignature(ucvector* out) {
- /*8 bytes PNG signature, aka the magic bytes*/
- ucvector_push_back(out, 137);
- ucvector_push_back(out, 80);
- ucvector_push_back(out, 78);
- ucvector_push_back(out, 71);
- ucvector_push_back(out, 13);
- ucvector_push_back(out, 10);
- ucvector_push_back(out, 26);
- ucvector_push_back(out, 10);
-}
-
-static unsigned addChunk_IHDR(ucvector* out, unsigned w, unsigned h,
- LodePNGColorType colortype, unsigned bitdepth, unsigned interlace_method) {
- unsigned error = 0;
- ucvector header;
- ucvector_init(&header);
-
- lodepng_add32bitInt(&header, w); /*width*/
- lodepng_add32bitInt(&header, h); /*height*/
- ucvector_push_back(&header, (unsigned char)bitdepth); /*bit depth*/
- ucvector_push_back(&header, (unsigned char)colortype); /*color type*/
- ucvector_push_back(&header, 0); /*compression method*/
- ucvector_push_back(&header, 0); /*filter method*/
- ucvector_push_back(&header, interlace_method); /*interlace method*/
-
- error = addChunk(out, "IHDR", header.data, header.size);
- ucvector_cleanup(&header);
-
- return error;
-}
-
-static unsigned addChunk_PLTE(ucvector* out, const LodePNGColorMode* info) {
- unsigned error = 0;
- size_t i;
- ucvector PLTE;
- ucvector_init(&PLTE);
- for(i = 0; i != info->palettesize * 4; ++i) {
- /*add all channels except alpha channel*/
- if(i % 4 != 3) ucvector_push_back(&PLTE, info->palette[i]);
- }
- error = addChunk(out, "PLTE", PLTE.data, PLTE.size);
- ucvector_cleanup(&PLTE);
-
- return error;
-}
-
-static unsigned addChunk_tRNS(ucvector* out, const LodePNGColorMode* info) {
- unsigned error = 0;
- size_t i;
- ucvector tRNS;
- ucvector_init(&tRNS);
- if(info->colortype == LCT_PALETTE) {
- size_t amount = info->palettesize;
- /*the tail of palette values that all have 255 as alpha, does not have to be encoded*/
- for(i = info->palettesize; i != 0; --i) {
- if(info->palette[4 * (i - 1) + 3] == 255) --amount;
- else break;
- }
- /*add only alpha channel*/
- for(i = 0; i != amount; ++i) ucvector_push_back(&tRNS, info->palette[4 * i + 3]);
- } else if(info->colortype == LCT_GREY) {
- if(info->key_defined) {
- ucvector_push_back(&tRNS, (unsigned char)(info->key_r >> 8));
- ucvector_push_back(&tRNS, (unsigned char)(info->key_r & 255));
- }
- } else if(info->colortype == LCT_RGB) {
- if(info->key_defined) {
- ucvector_push_back(&tRNS, (unsigned char)(info->key_r >> 8));
- ucvector_push_back(&tRNS, (unsigned char)(info->key_r & 255));
- ucvector_push_back(&tRNS, (unsigned char)(info->key_g >> 8));
- ucvector_push_back(&tRNS, (unsigned char)(info->key_g & 255));
- ucvector_push_back(&tRNS, (unsigned char)(info->key_b >> 8));
- ucvector_push_back(&tRNS, (unsigned char)(info->key_b & 255));
- }
- }
-
- error = addChunk(out, "tRNS", tRNS.data, tRNS.size);
- ucvector_cleanup(&tRNS);
-
- return error;
-}
-
-static unsigned addChunk_IDAT(ucvector* out, const unsigned char* data, size_t datasize,
- LodePNGCompressSettings* zlibsettings) {
- ucvector zlibdata;
- unsigned error = 0;
-
- /*compress with the Zlib compressor*/
- ucvector_init(&zlibdata);
- error = zlib_compress(&zlibdata.data, &zlibdata.size, data, datasize, zlibsettings);
- if(!error) error = addChunk(out, "IDAT", zlibdata.data, zlibdata.size);
- ucvector_cleanup(&zlibdata);
-
- return error;
-}
-
-static unsigned addChunk_IEND(ucvector* out) {
- unsigned error = 0;
- error = addChunk(out, "IEND", 0, 0);
- return error;
-}
-
-#ifdef LODEPNG_COMPILE_ANCILLARY_CHUNKS
-
-static unsigned addChunk_tEXt(ucvector* out, const char* keyword, const char* textstring) {
- unsigned error = 0;
- size_t i;
- ucvector text;
- ucvector_init(&text);
- for(i = 0; keyword[i] != 0; ++i) ucvector_push_back(&text, (unsigned char)keyword[i]);
- if(i < 1 || i > 79) return 89; /*error: invalid keyword size*/
- ucvector_push_back(&text, 0); /*0 termination char*/
- for(i = 0; textstring[i] != 0; ++i) ucvector_push_back(&text, (unsigned char)textstring[i]);
- error = addChunk(out, "tEXt", text.data, text.size);
- ucvector_cleanup(&text);
-
- return error;
-}
-
-static unsigned addChunk_zTXt(ucvector* out, const char* keyword, const char* textstring,
- LodePNGCompressSettings* zlibsettings) {
- unsigned error = 0;
- ucvector data, compressed;
- size_t i, textsize = strlen(textstring);
-
- ucvector_init(&data);
- ucvector_init(&compressed);
- for(i = 0; keyword[i] != 0; ++i) ucvector_push_back(&data, (unsigned char)keyword[i]);
- if(i < 1 || i > 79) return 89; /*error: invalid keyword size*/
- ucvector_push_back(&data, 0); /*0 termination char*/
- ucvector_push_back(&data, 0); /*compression method: 0*/
-
- error = zlib_compress(&compressed.data, &compressed.size,
- (unsigned char*)textstring, textsize, zlibsettings);
- if(!error) {
- for(i = 0; i != compressed.size; ++i) ucvector_push_back(&data, compressed.data[i]);
- error = addChunk(out, "zTXt", data.data, data.size);
- }
-
- ucvector_cleanup(&compressed);
- ucvector_cleanup(&data);
- return error;
-}
-
-static unsigned addChunk_iTXt(ucvector* out, unsigned compressed, const char* keyword, const char* langtag,
- const char* transkey, const char* textstring, LodePNGCompressSettings* zlibsettings) {
- unsigned error = 0;
- ucvector data;
- size_t i, textsize = strlen(textstring);
-
- ucvector_init(&data);
-
- for(i = 0; keyword[i] != 0; ++i) ucvector_push_back(&data, (unsigned char)keyword[i]);
- if(i < 1 || i > 79) return 89; /*error: invalid keyword size*/
- ucvector_push_back(&data, 0); /*null termination char*/
- ucvector_push_back(&data, compressed ? 1 : 0); /*compression flag*/
- ucvector_push_back(&data, 0); /*compression method*/
- for(i = 0; langtag[i] != 0; ++i) ucvector_push_back(&data, (unsigned char)langtag[i]);
- ucvector_push_back(&data, 0); /*null termination char*/
- for(i = 0; transkey[i] != 0; ++i) ucvector_push_back(&data, (unsigned char)transkey[i]);
- ucvector_push_back(&data, 0); /*null termination char*/
-
- if(compressed) {
- ucvector compressed_data;
- ucvector_init(&compressed_data);
- error = zlib_compress(&compressed_data.data, &compressed_data.size,
- (unsigned char*)textstring, textsize, zlibsettings);
- if(!error) {
- for(i = 0; i != compressed_data.size; ++i) ucvector_push_back(&data, compressed_data.data[i]);
- }
- ucvector_cleanup(&compressed_data);
- } else /*not compressed*/ {
- for(i = 0; textstring[i] != 0; ++i) ucvector_push_back(&data, (unsigned char)textstring[i]);
- }
-
- if(!error) error = addChunk(out, "iTXt", data.data, data.size);
- ucvector_cleanup(&data);
- return error;
-}
-
-static unsigned addChunk_bKGD(ucvector* out, const LodePNGInfo* info) {
- unsigned error = 0;
- ucvector bKGD;
- ucvector_init(&bKGD);
- if(info->color.colortype == LCT_GREY || info->color.colortype == LCT_GREY_ALPHA) {
- ucvector_push_back(&bKGD, (unsigned char)(info->background_r >> 8));
- ucvector_push_back(&bKGD, (unsigned char)(info->background_r & 255));
- } else if(info->color.colortype == LCT_RGB || info->color.colortype == LCT_RGBA) {
- ucvector_push_back(&bKGD, (unsigned char)(info->background_r >> 8));
- ucvector_push_back(&bKGD, (unsigned char)(info->background_r & 255));
- ucvector_push_back(&bKGD, (unsigned char)(info->background_g >> 8));
- ucvector_push_back(&bKGD, (unsigned char)(info->background_g & 255));
- ucvector_push_back(&bKGD, (unsigned char)(info->background_b >> 8));
- ucvector_push_back(&bKGD, (unsigned char)(info->background_b & 255));
- } else if(info->color.colortype == LCT_PALETTE) {
- ucvector_push_back(&bKGD, (unsigned char)(info->background_r & 255)); /*palette index*/
- }
-
- error = addChunk(out, "bKGD", bKGD.data, bKGD.size);
- ucvector_cleanup(&bKGD);
-
- return error;
-}
-
-static unsigned addChunk_tIME(ucvector* out, const LodePNGTime* time) {
- unsigned error = 0;
- unsigned char* data = (unsigned char*)lodepng_malloc(7);
- if(!data) return 83; /*alloc fail*/
- data[0] = (unsigned char)(time->year >> 8);
- data[1] = (unsigned char)(time->year & 255);
- data[2] = (unsigned char)time->month;
- data[3] = (unsigned char)time->day;
- data[4] = (unsigned char)time->hour;
- data[5] = (unsigned char)time->minute;
- data[6] = (unsigned char)time->second;
- error = addChunk(out, "tIME", data, 7);
- lodepng_free(data);
- return error;
-}
-
-static unsigned addChunk_pHYs(ucvector* out, const LodePNGInfo* info) {
- unsigned error = 0;
- ucvector data;
- ucvector_init(&data);
-
- lodepng_add32bitInt(&data, info->phys_x);
- lodepng_add32bitInt(&data, info->phys_y);
- ucvector_push_back(&data, info->phys_unit);
-
- error = addChunk(out, "pHYs", data.data, data.size);
- ucvector_cleanup(&data);
-
- return error;
-}
-
-static unsigned addChunk_gAMA(ucvector* out, const LodePNGInfo* info) {
- unsigned error = 0;
- ucvector data;
- ucvector_init(&data);
-
- lodepng_add32bitInt(&data, info->gama_gamma);
-
- error = addChunk(out, "gAMA", data.data, data.size);
- ucvector_cleanup(&data);
-
- return error;
-}
-
-static unsigned addChunk_cHRM(ucvector* out, const LodePNGInfo* info) {
- unsigned error = 0;
- ucvector data;
- ucvector_init(&data);
-
- lodepng_add32bitInt(&data, info->chrm_white_x);
- lodepng_add32bitInt(&data, info->chrm_white_y);
- lodepng_add32bitInt(&data, info->chrm_red_x);
- lodepng_add32bitInt(&data, info->chrm_red_y);
- lodepng_add32bitInt(&data, info->chrm_green_x);
- lodepng_add32bitInt(&data, info->chrm_green_y);
- lodepng_add32bitInt(&data, info->chrm_blue_x);
- lodepng_add32bitInt(&data, info->chrm_blue_y);
-
- error = addChunk(out, "cHRM", data.data, data.size);
- ucvector_cleanup(&data);
-
- return error;
-}
-
-static unsigned addChunk_sRGB(ucvector* out, const LodePNGInfo* info) {
- unsigned char data = info->srgb_intent;
- return addChunk(out, "sRGB", &data, 1);
-}
-
-static unsigned addChunk_iCCP(ucvector* out, const LodePNGInfo* info, LodePNGCompressSettings* zlibsettings) {
- unsigned error = 0;
- ucvector data, compressed;
- size_t i;
-
- ucvector_init(&data);
- ucvector_init(&compressed);
- for(i = 0; info->iccp_name[i] != 0; ++i) ucvector_push_back(&data, (unsigned char)info->iccp_name[i]);
- if(i < 1 || i > 79) return 89; /*error: invalid keyword size*/
- ucvector_push_back(&data, 0); /*0 termination char*/
- ucvector_push_back(&data, 0); /*compression method: 0*/
-
- error = zlib_compress(&compressed.data, &compressed.size,
- info->iccp_profile, info->iccp_profile_size, zlibsettings);
- if(!error) {
- for(i = 0; i != compressed.size; ++i) ucvector_push_back(&data, compressed.data[i]);
- error = addChunk(out, "iCCP", data.data, data.size);
- }
-
- ucvector_cleanup(&compressed);
- ucvector_cleanup(&data);
- return error;
-}
-
-#endif /*LODEPNG_COMPILE_ANCILLARY_CHUNKS*/
-
-static void filterScanline(unsigned char* out, const unsigned char* scanline, const unsigned char* prevline,
- size_t length, size_t bytewidth, unsigned char filterType) {
- size_t i;
- switch(filterType) {
- case 0: /*None*/
- for(i = 0; i != length; ++i) out[i] = scanline[i];
- break;
- case 1: /*Sub*/
- for(i = 0; i != bytewidth; ++i) out[i] = scanline[i];
- for(i = bytewidth; i < length; ++i) out[i] = scanline[i] - scanline[i - bytewidth];
- break;
- case 2: /*Up*/
- if(prevline) {
- for(i = 0; i != length; ++i) out[i] = scanline[i] - prevline[i];
- } else {
- for(i = 0; i != length; ++i) out[i] = scanline[i];
- }
- break;
- case 3: /*Average*/
- if(prevline) {
- for(i = 0; i != bytewidth; ++i) out[i] = scanline[i] - (prevline[i] >> 1);
- for(i = bytewidth; i < length; ++i) out[i] = scanline[i] - ((scanline[i - bytewidth] + prevline[i]) >> 1);
- } else {
- for(i = 0; i != bytewidth; ++i) out[i] = scanline[i];
- for(i = bytewidth; i < length; ++i) out[i] = scanline[i] - (scanline[i - bytewidth] >> 1);
- }
- break;
- case 4: /*Paeth*/
- if(prevline) {
- /*paethPredictor(0, prevline[i], 0) is always prevline[i]*/
- for(i = 0; i != bytewidth; ++i) out[i] = (scanline[i] - prevline[i]);
- for(i = bytewidth; i < length; ++i) {
- out[i] = (scanline[i] - paethPredictor(scanline[i - bytewidth], prevline[i], prevline[i - bytewidth]));
- }
- } else {
- for(i = 0; i != bytewidth; ++i) out[i] = scanline[i];
- /*paethPredictor(scanline[i - bytewidth], 0, 0) is always scanline[i - bytewidth]*/
- for(i = bytewidth; i < length; ++i) out[i] = (scanline[i] - scanline[i - bytewidth]);
- }
- break;
- default: return; /*unexisting filter type given*/
- }
-}
-
-/* log2 approximation. A slight bit faster than std::log. */
-static float flog2(float f) {
- float result = 0;
- while(f > 32) { result += 4; f /= 16; }
- while(f > 2) { ++result; f /= 2; }
- return result + 1.442695f * (f * f * f / 3 - 3 * f * f / 2 + 3 * f - 1.83333f);
-}
-
-static unsigned filter(unsigned char* out, const unsigned char* in, unsigned w, unsigned h,
- const LodePNGColorMode* info, const LodePNGEncoderSettings* settings) {
- /*
- For PNG filter method 0
- out must be a buffer with as size: h + (w * h * bpp + 7) / 8, because there are
- the scanlines with 1 extra byte per scanline
- */
-
- unsigned bpp = lodepng_get_bpp(info);
- /*the width of a scanline in bytes, not including the filter type*/
- size_t linebytes = (w * bpp + 7) / 8;
- /*bytewidth is used for filtering, is 1 when bpp < 8, number of bytes per pixel otherwise*/
- size_t bytewidth = (bpp + 7) / 8;
- const unsigned char* prevline = 0;
- unsigned x, y;
- unsigned error = 0;
- LodePNGFilterStrategy strategy = settings->filter_strategy;
-
- /*
- There is a heuristic called the minimum sum of absolute differences heuristic, suggested by the PNG standard:
- * If the image type is Palette, or the bit depth is smaller than 8, then do not filter the image (i.e.
- use fixed filtering, with the filter None).
- * (The other case) If the image type is Grayscale or RGB (with or without Alpha), and the bit depth is
- not smaller than 8, then use adaptive filtering heuristic as follows: independently for each row, apply
- all five filters and select the filter that produces the smallest sum of absolute values per row.
- This heuristic is used if filter strategy is LFS_MINSUM and filter_palette_zero is true.
-
- If filter_palette_zero is true and filter_strategy is not LFS_MINSUM, the above heuristic is followed,
- but for "the other case", whatever strategy filter_strategy is set to instead of the minimum sum
- heuristic is used.
- */
- if(settings->filter_palette_zero &&
- (info->colortype == LCT_PALETTE || info->bitdepth < 8)) strategy = LFS_ZERO;
-
- if(bpp == 0) return 31; /*error: invalid color type*/
-
- if(strategy == LFS_ZERO) {
- for(y = 0; y != h; ++y) {
- size_t outindex = (1 + linebytes) * y; /*the extra filterbyte added to each row*/
- size_t inindex = linebytes * y;
- out[outindex] = 0; /*filter type byte*/
- filterScanline(&out[outindex + 1], &in[inindex], prevline, linebytes, bytewidth, 0);
- prevline = &in[inindex];
- }
- } else if(strategy == LFS_MINSUM) {
- /*adaptive filtering*/
- size_t sum[5];
- unsigned char* attempt[5]; /*five filtering attempts, one for each filter type*/
- size_t smallest = 0;
- unsigned char type, bestType = 0;
-
- for(type = 0; type != 5; ++type) {
- attempt[type] = (unsigned char*)lodepng_malloc(linebytes);
- if(!attempt[type]) return 83; /*alloc fail*/
- }
-
- if(!error) {
- for(y = 0; y != h; ++y) {
- /*try the 5 filter types*/
- for(type = 0; type != 5; ++type) {
- filterScanline(attempt[type], &in[y * linebytes], prevline, linebytes, bytewidth, type);
-
- /*calculate the sum of the result*/
- sum[type] = 0;
- if(type == 0) {
- for(x = 0; x != linebytes; ++x) sum[type] += (unsigned char)(attempt[type][x]);
- } else {
- for(x = 0; x != linebytes; ++x) {
- /*For differences, each byte should be treated as signed, values above 127 are negative
- (converted to signed char). Filtertype 0 isn't a difference though, so use unsigned there.
- This means filtertype 0 is almost never chosen, but that is justified.*/
- unsigned char s = attempt[type][x];
- sum[type] += s < 128 ? s : (255U - s);
- }
- }
-
- /*check if this is smallest sum (or if type == 0 it's the first case so always store the values)*/
- if(type == 0 || sum[type] < smallest) {
- bestType = type;
- smallest = sum[type];
- }
- }
-
- prevline = &in[y * linebytes];
-
- /*now fill the out values*/
- out[y * (linebytes + 1)] = bestType; /*the first byte of a scanline will be the filter type*/
- for(x = 0; x != linebytes; ++x) out[y * (linebytes + 1) + 1 + x] = attempt[bestType][x];
- }
- }
-
- for(type = 0; type != 5; ++type) lodepng_free(attempt[type]);
- } else if(strategy == LFS_ENTROPY) {
- float sum[5];
- unsigned char* attempt[5]; /*five filtering attempts, one for each filter type*/
- float smallest = 0;
- unsigned type, bestType = 0;
- unsigned count[256];
-
- for(type = 0; type != 5; ++type) {
- attempt[type] = (unsigned char*)lodepng_malloc(linebytes);
- if(!attempt[type]) return 83; /*alloc fail*/
- }
-
- for(y = 0; y != h; ++y) {
- /*try the 5 filter types*/
- for(type = 0; type != 5; ++type) {
- filterScanline(attempt[type], &in[y * linebytes], prevline, linebytes, bytewidth, type);
- for(x = 0; x != 256; ++x) count[x] = 0;
- for(x = 0; x != linebytes; ++x) ++count[attempt[type][x]];
- ++count[type]; /*the filter type itself is part of the scanline*/
- sum[type] = 0;
- for(x = 0; x != 256; ++x) {
- float p = count[x] / (float)(linebytes + 1);
- sum[type] += count[x] == 0 ? 0 : flog2(1 / p) * p;
- }
- /*check if this is smallest sum (or if type == 0 it's the first case so always store the values)*/
- if(type == 0 || sum[type] < smallest) {
- bestType = type;
- smallest = sum[type];
- }
- }
-
- prevline = &in[y * linebytes];
-
- /*now fill the out values*/
- out[y * (linebytes + 1)] = bestType; /*the first byte of a scanline will be the filter type*/
- for(x = 0; x != linebytes; ++x) out[y * (linebytes + 1) + 1 + x] = attempt[bestType][x];
- }
-
- for(type = 0; type != 5; ++type) lodepng_free(attempt[type]);
- } else if(strategy == LFS_PREDEFINED) {
- for(y = 0; y != h; ++y) {
- size_t outindex = (1 + linebytes) * y; /*the extra filterbyte added to each row*/
- size_t inindex = linebytes * y;
- unsigned char type = settings->predefined_filters[y];
- out[outindex] = type; /*filter type byte*/
- filterScanline(&out[outindex + 1], &in[inindex], prevline, linebytes, bytewidth, type);
- prevline = &in[inindex];
- }
- } else if(strategy == LFS_BRUTE_FORCE) {
- /*brute force filter chooser.
- deflate the scanline after every filter attempt to see which one deflates best.
- This is very slow and gives only slightly smaller, sometimes even larger, result*/
- size_t size[5];
- unsigned char* attempt[5]; /*five filtering attempts, one for each filter type*/
- size_t smallest = 0;
- unsigned type = 0, bestType = 0;
- unsigned char* dummy;
- LodePNGCompressSettings zlibsettings = settings->zlibsettings;
- /*use fixed tree on the attempts so that the tree is not adapted to the filtertype on purpose,
- to simulate the true case where the tree is the same for the whole image. Sometimes it gives
- better result with dynamic tree anyway. Using the fixed tree sometimes gives worse, but in rare
- cases better compression. It does make this a bit less slow, so it's worth doing this.*/
- zlibsettings.btype = 1;
- /*a custom encoder likely doesn't read the btype setting and is optimized for complete PNG
- images only, so disable it*/
- zlibsettings.custom_zlib = 0;
- zlibsettings.custom_deflate = 0;
- for(type = 0; type != 5; ++type) {
- attempt[type] = (unsigned char*)lodepng_malloc(linebytes);
- if(!attempt[type]) return 83; /*alloc fail*/
- }
- for(y = 0; y != h; ++y) /*try the 5 filter types*/ {
- for(type = 0; type != 5; ++type) {
- unsigned testsize = (unsigned)linebytes;
- /*if(testsize > 8) testsize /= 8;*/ /*it already works good enough by testing a part of the row*/
-
- filterScanline(attempt[type], &in[y * linebytes], prevline, linebytes, bytewidth, type);
- size[type] = 0;
- dummy = 0;
- zlib_compress(&dummy, &size[type], attempt[type], testsize, &zlibsettings);
- lodepng_free(dummy);
- /*check if this is smallest size (or if type == 0 it's the first case so always store the values)*/
- if(type == 0 || size[type] < smallest) {
- bestType = type;
- smallest = size[type];
- }
- }
- prevline = &in[y * linebytes];
- out[y * (linebytes + 1)] = bestType; /*the first byte of a scanline will be the filter type*/
- for(x = 0; x != linebytes; ++x) out[y * (linebytes + 1) + 1 + x] = attempt[bestType][x];
- }
- for(type = 0; type != 5; ++type) lodepng_free(attempt[type]);
- }
- else return 88; /* unknown filter strategy */
-
- return error;
-}
-
-static void addPaddingBits(unsigned char* out, const unsigned char* in,
- size_t olinebits, size_t ilinebits, unsigned h) {
- /*The opposite of the removePaddingBits function
- olinebits must be >= ilinebits*/
- unsigned y;
- size_t diff = olinebits - ilinebits;
- size_t obp = 0, ibp = 0; /*bit pointers*/
- for(y = 0; y != h; ++y) {
- size_t x;
- for(x = 0; x < ilinebits; ++x) {
- unsigned char bit = readBitFromReversedStream(&ibp, in);
- setBitOfReversedStream(&obp, out, bit);
- }
- /*obp += diff; --> no, fill in some value in the padding bits too, to avoid
- "Use of uninitialised value of size ###" warning from valgrind*/
- for(x = 0; x != diff; ++x) setBitOfReversedStream(&obp, out, 0);
- }
-}
-
-/*
-in: non-interlaced image with size w*h
-out: the same pixels, but re-ordered according to PNG's Adam7 interlacing, with
- no padding bits between scanlines, but between reduced images so that each
- reduced image starts at a byte.
-bpp: bits per pixel
-there are no padding bits, not between scanlines, not between reduced images
-in has the following size in bits: w * h * bpp.
-out is possibly bigger due to padding bits between reduced images
-NOTE: comments about padding bits are only relevant if bpp < 8
-*/
-static void Adam7_interlace(unsigned char* out, const unsigned char* in, unsigned w, unsigned h, unsigned bpp) {
- unsigned passw[7], passh[7];
- size_t filter_passstart[8], padded_passstart[8], passstart[8];
- unsigned i;
-
- Adam7_getpassvalues(passw, passh, filter_passstart, padded_passstart, passstart, w, h, bpp);
-
- if(bpp >= 8) {
- for(i = 0; i != 7; ++i) {
- unsigned x, y, b;
- size_t bytewidth = bpp / 8;
- for(y = 0; y < passh[i]; ++y)
- for(x = 0; x < passw[i]; ++x) {
- size_t pixelinstart = ((ADAM7_IY[i] + y * ADAM7_DY[i]) * w + ADAM7_IX[i] + x * ADAM7_DX[i]) * bytewidth;
- size_t pixeloutstart = passstart[i] + (y * passw[i] + x) * bytewidth;
- for(b = 0; b < bytewidth; ++b) {
- out[pixeloutstart + b] = in[pixelinstart + b];
- }
- }
- }
- } else /*bpp < 8: Adam7 with pixels < 8 bit is a bit trickier: with bit pointers*/ {
- for(i = 0; i != 7; ++i) {
- unsigned x, y, b;
- unsigned ilinebits = bpp * passw[i];
- unsigned olinebits = bpp * w;
- size_t obp, ibp; /*bit pointers (for out and in buffer)*/
- for(y = 0; y < passh[i]; ++y)
- for(x = 0; x < passw[i]; ++x) {
- ibp = (ADAM7_IY[i] + y * ADAM7_DY[i]) * olinebits + (ADAM7_IX[i] + x * ADAM7_DX[i]) * bpp;
- obp = (8 * passstart[i]) + (y * ilinebits + x * bpp);
- for(b = 0; b < bpp; ++b) {
- unsigned char bit = readBitFromReversedStream(&ibp, in);
- setBitOfReversedStream(&obp, out, bit);
- }
- }
- }
- }
-}
-
-/*out must be buffer big enough to contain uncompressed IDAT chunk data, and in must contain the full image.
-return value is error**/
-static unsigned preProcessScanlines(unsigned char** out, size_t* outsize, const unsigned char* in,
- unsigned w, unsigned h,
- const LodePNGInfo* info_png, const LodePNGEncoderSettings* settings) {
- /*
- This function converts the pure 2D image with the PNG's colortype, into filtered-padded-interlaced data. Steps:
- *) if no Adam7: 1) add padding bits (= posible extra bits per scanline if bpp < 8) 2) filter
- *) if adam7: 1) Adam7_interlace 2) 7x add padding bits 3) 7x filter
- */
- unsigned bpp = lodepng_get_bpp(&info_png->color);
- unsigned error = 0;
-
- if(info_png->interlace_method == 0) {
- *outsize = h + (h * ((w * bpp + 7) / 8)); /*image size plus an extra byte per scanline + possible padding bits*/
- *out = (unsigned char*)lodepng_malloc(*outsize);
- if(!(*out) && (*outsize)) error = 83; /*alloc fail*/
-
- if(!error) {
- /*non multiple of 8 bits per scanline, padding bits needed per scanline*/
- if(bpp < 8 && w * bpp != ((w * bpp + 7) / 8) * 8) {
- unsigned char* padded = (unsigned char*)lodepng_malloc(h * ((w * bpp + 7) / 8));
- if(!padded) error = 83; /*alloc fail*/
- if(!error) {
- addPaddingBits(padded, in, ((w * bpp + 7) / 8) * 8, w * bpp, h);
- error = filter(*out, padded, w, h, &info_png->color, settings);
- }
- lodepng_free(padded);
- } else {
- /*we can immediately filter into the out buffer, no other steps needed*/
- error = filter(*out, in, w, h, &info_png->color, settings);
- }
- }
- } else /*interlace_method is 1 (Adam7)*/ {
- unsigned passw[7], passh[7];
- size_t filter_passstart[8], padded_passstart[8], passstart[8];
- unsigned char* adam7;
-
- Adam7_getpassvalues(passw, passh, filter_passstart, padded_passstart, passstart, w, h, bpp);
-
- *outsize = filter_passstart[7]; /*image size plus an extra byte per scanline + possible padding bits*/
- *out = (unsigned char*)lodepng_malloc(*outsize);
- if(!(*out)) error = 83; /*alloc fail*/
-
- adam7 = (unsigned char*)lodepng_malloc(passstart[7]);
- if(!adam7 && passstart[7]) error = 83; /*alloc fail*/
-
- if(!error) {
- unsigned i;
-
- Adam7_interlace(adam7, in, w, h, bpp);
- for(i = 0; i != 7; ++i) {
- if(bpp < 8) {
- unsigned char* padded = (unsigned char*)lodepng_malloc(padded_passstart[i + 1] - padded_passstart[i]);
- if(!padded) ERROR_BREAK(83); /*alloc fail*/
- addPaddingBits(padded, &adam7[passstart[i]],
- ((passw[i] * bpp + 7) / 8) * 8, passw[i] * bpp, passh[i]);
- error = filter(&(*out)[filter_passstart[i]], padded,
- passw[i], passh[i], &info_png->color, settings);
- lodepng_free(padded);
- } else {
- error = filter(&(*out)[filter_passstart[i]], &adam7[padded_passstart[i]],
- passw[i], passh[i], &info_png->color, settings);
- }
-
- if(error) break;
- }
- }
-
- lodepng_free(adam7);
- }
-
- return error;
-}
-
-/*
-palette must have 4 * palettesize bytes allocated, and given in format RGBARGBARGBARGBA...
-returns 0 if the palette is opaque,
-returns 1 if the palette has a single color with alpha 0 ==> color key
-returns 2 if the palette is semi-translucent.
-*/
-static unsigned getPaletteTranslucency(const unsigned char* palette, size_t palettesize) {
- size_t i;
- unsigned key = 0;
- unsigned r = 0, g = 0, b = 0; /*the value of the color with alpha 0, so long as color keying is possible*/
- for(i = 0; i != palettesize; ++i) {
- if(!key && palette[4 * i + 3] == 0) {
- r = palette[4 * i + 0]; g = palette[4 * i + 1]; b = palette[4 * i + 2];
- key = 1;
- i = (size_t)(-1); /*restart from beginning, to detect earlier opaque colors with key's value*/
- }
- else if(palette[4 * i + 3] != 255) return 2;
- /*when key, no opaque RGB may have key's RGB*/
- else if(key && r == palette[i * 4 + 0] && g == palette[i * 4 + 1] && b == palette[i * 4 + 2]) return 2;
- }
- return key;
-}
-
-#ifdef LODEPNG_COMPILE_ANCILLARY_CHUNKS
-static unsigned addUnknownChunks(ucvector* out, unsigned char* data, size_t datasize) {
- unsigned char* inchunk = data;
- while((size_t)(inchunk - data) < datasize) {
- CERROR_TRY_RETURN(lodepng_chunk_append(&out->data, &out->size, inchunk));
- out->allocsize = out->size; /*fix the allocsize again*/
- inchunk = lodepng_chunk_next(inchunk);
- }
- return 0;
-}
-
-static unsigned isGrayICCProfile(const unsigned char* profile, unsigned size) {
- /*
- It is a gray profile if bytes 16-19 are "GRAY", rgb profile if bytes 16-19
- are "RGB ". We do not perform any full parsing of the ICC profile here, other
- than check those 4 bytes to grayscale profile. Other than that, validity of
- the profile is not checked. This is needed only because the PNG specification
- requires using a non-gray color model if there is an ICC profile with "RGB "
- (sadly limiting compression opportunities if the input data is grayscale RGB
- data), and requires using a gray color model if it is "GRAY".
- */
- if(size < 20) return 0;
- return profile[16] == 'G' && profile[17] == 'R' && profile[18] == 'A' && profile[19] == 'Y';
-}
-
-static unsigned isRGBICCProfile(const unsigned char* profile, unsigned size) {
- /* See comment in isGrayICCProfile*/
- if(size < 20) return 0;
- return profile[16] == 'R' && profile[17] == 'G' && profile[18] == 'B' && profile[19] == ' ';
-}
-#endif /*LODEPNG_COMPILE_ANCILLARY_CHUNKS*/
-
-unsigned lodepng_encode(unsigned char** out, size_t* outsize,
- const unsigned char* image, unsigned w, unsigned h,
- LodePNGState* state) {
- unsigned char* data = 0; /*uncompressed version of the IDAT chunk data*/
- size_t datasize = 0;
- ucvector outv;
- LodePNGInfo info;
-
- ucvector_init(&outv);
- lodepng_info_init(&info);
-
- /*provide some proper output values if error will happen*/
- *out = 0;
- *outsize = 0;
- state->error = 0;
-
- /*check input values validity*/
- if((state->info_png.color.colortype == LCT_PALETTE || state->encoder.force_palette)
- && (state->info_png.color.palettesize == 0 || state->info_png.color.palettesize > 256)) {
- state->error = 68; /*invalid palette size, it is only allowed to be 1-256*/
- goto cleanup;
- }
- if(state->encoder.zlibsettings.btype > 2) {
- state->error = 61; /*error: unexisting btype*/
- goto cleanup;
- }
- if(state->info_png.interlace_method > 1) {
- state->error = 71; /*error: unexisting interlace mode*/
- goto cleanup;
- }
- state->error = checkColorValidity(state->info_png.color.colortype, state->info_png.color.bitdepth);
- if(state->error) goto cleanup; /*error: unexisting color type given*/
- state->error = checkColorValidity(state->info_raw.colortype, state->info_raw.bitdepth);
- if(state->error) goto cleanup; /*error: unexisting color type given*/
-
- /* color convert and compute scanline filter types */
- lodepng_info_copy(&info, &state->info_png);
- if(state->encoder.auto_convert) {
-#ifdef LODEPNG_COMPILE_ANCILLARY_CHUNKS
- if(state->info_png.background_defined) {
- unsigned bg_r = state->info_png.background_r;
- unsigned bg_g = state->info_png.background_g;
- unsigned bg_b = state->info_png.background_b;
- unsigned r = 0, g = 0, b = 0;
- LodePNGColorProfile prof;
- LodePNGColorMode mode16 = lodepng_color_mode_make(LCT_RGB, 16);
- lodepng_convert_rgb(&r, &g, &b, bg_r, bg_g, bg_b, &mode16, &state->info_png.color);
- lodepng_color_profile_init(&prof);
- state->error = lodepng_get_color_profile(&prof, image, w, h, &state->info_raw);
- if(state->error) goto cleanup;
- lodepng_color_profile_add(&prof, r, g, b, 65535);
- state->error = auto_choose_color_from_profile(&info.color, &state->info_raw, &prof);
- if(state->error) goto cleanup;
- if(lodepng_convert_rgb(&info.background_r, &info.background_g, &info.background_b,
- bg_r, bg_g, bg_b, &info.color, &state->info_png.color)) {
- state->error = 104;
- goto cleanup;
- }
- }
- else
-#endif /* LODEPNG_COMPILE_ANCILLARY_CHUNKS */
- {
- state->error = lodepng_auto_choose_color(&info.color, image, w, h, &state->info_raw);
- if(state->error) goto cleanup;
- }
- }
-#ifdef LODEPNG_COMPILE_ANCILLARY_CHUNKS
- if(state->info_png.iccp_defined) {
- unsigned gray_icc = isGrayICCProfile(state->info_png.iccp_profile, state->info_png.iccp_profile_size);
- unsigned gray_png = info.color.colortype == LCT_GREY || info.color.colortype == LCT_GREY_ALPHA;
- /* TODO: perhaps instead of giving errors or less optimal compression, we can automatically modify
- the ICC profile here to say "GRAY" or "RGB " to match the PNG color type, unless this will require
- non trivial changes to the rest of the ICC profile */
- if(!gray_icc && !isRGBICCProfile(state->info_png.iccp_profile, state->info_png.iccp_profile_size)) {
- state->error = 100; /* Disallowed profile color type for PNG */
- goto cleanup;
- }
- if(!state->encoder.auto_convert && gray_icc != gray_png) {
- /* Non recoverable: encoder not allowed to convert color type, and requested color type not
- compatible with ICC color type */
- state->error = 101;
- goto cleanup;
- }
- if(gray_icc && !gray_png) {
- /* Non recoverable: trying to set grayscale ICC profile while colored pixels were given */
- state->error = 102;
- goto cleanup;
- /* NOTE: this relies on the fact that lodepng_auto_choose_color never returns palette for grayscale pixels */
- }
- if(!gray_icc && gray_png) {
- /* Recoverable but an unfortunate loss in compression density: We have grayscale pixels but
- are forced to store them in more expensive RGB format that will repeat each value 3 times
- because the PNG spec does not allow an RGB ICC profile with internal grayscale color data */
- if(info.color.colortype == LCT_GREY) info.color.colortype = LCT_RGB;
- if(info.color.colortype == LCT_GREY_ALPHA) info.color.colortype = LCT_RGBA;
- if(info.color.bitdepth < 8) info.color.bitdepth = 8;
- }
- }
-#endif /*LODEPNG_COMPILE_ANCILLARY_CHUNKS*/
- if(!lodepng_color_mode_equal(&state->info_raw, &info.color)) {
- unsigned char* converted;
- size_t size = ((size_t)w * (size_t)h * (size_t)lodepng_get_bpp(&info.color) + 7) / 8;
-
- converted = (unsigned char*)lodepng_malloc(size);
- if(!converted && size) state->error = 83; /*alloc fail*/
- if(!state->error) {
- state->error = lodepng_convert(converted, image, &info.color, &state->info_raw, w, h);
- }
- if(!state->error) preProcessScanlines(&data, &datasize, converted, w, h, &info, &state->encoder);
- lodepng_free(converted);
- if(state->error) goto cleanup;
- }
- else preProcessScanlines(&data, &datasize, image, w, h, &info, &state->encoder);
-
- /* output all PNG chunks */ {
-#ifdef LODEPNG_COMPILE_ANCILLARY_CHUNKS
- size_t i;
-#endif /*LODEPNG_COMPILE_ANCILLARY_CHUNKS*/
- /*write signature and chunks*/
- writeSignature(&outv);
- /*IHDR*/
- addChunk_IHDR(&outv, w, h, info.color.colortype, info.color.bitdepth, info.interlace_method);
-#ifdef LODEPNG_COMPILE_ANCILLARY_CHUNKS
- /*unknown chunks between IHDR and PLTE*/
- if(info.unknown_chunks_data[0]) {
- state->error = addUnknownChunks(&outv, info.unknown_chunks_data[0], info.unknown_chunks_size[0]);
- if(state->error) goto cleanup;
- }
- /*color profile chunks must come before PLTE */
- if(info.iccp_defined) addChunk_iCCP(&outv, &info, &state->encoder.zlibsettings);
- if(info.srgb_defined) addChunk_sRGB(&outv, &info);
- if(info.gama_defined) addChunk_gAMA(&outv, &info);
- if(info.chrm_defined) addChunk_cHRM(&outv, &info);
-#endif /*LODEPNG_COMPILE_ANCILLARY_CHUNKS*/
- /*PLTE*/
- if(info.color.colortype == LCT_PALETTE) {
- addChunk_PLTE(&outv, &info.color);
- }
- if(state->encoder.force_palette && (info.color.colortype == LCT_RGB || info.color.colortype == LCT_RGBA)) {
- addChunk_PLTE(&outv, &info.color);
- }
- /*tRNS*/
- if(info.color.colortype == LCT_PALETTE && getPaletteTranslucency(info.color.palette, info.color.palettesize) != 0) {
- addChunk_tRNS(&outv, &info.color);
- }
- if((info.color.colortype == LCT_GREY || info.color.colortype == LCT_RGB) && info.color.key_defined) {
- addChunk_tRNS(&outv, &info.color);
- }
-#ifdef LODEPNG_COMPILE_ANCILLARY_CHUNKS
- /*bKGD (must come between PLTE and the IDAt chunks*/
- if(info.background_defined) {
- state->error = addChunk_bKGD(&outv, &info);
- if(state->error) goto cleanup;
- }
- /*pHYs (must come before the IDAT chunks)*/
- if(info.phys_defined) addChunk_pHYs(&outv, &info);
-
- /*unknown chunks between PLTE and IDAT*/
- if(info.unknown_chunks_data[1]) {
- state->error = addUnknownChunks(&outv, info.unknown_chunks_data[1], info.unknown_chunks_size[1]);
- if(state->error) goto cleanup;
- }
-#endif /*LODEPNG_COMPILE_ANCILLARY_CHUNKS*/
- /*IDAT (multiple IDAT chunks must be consecutive)*/
- state->error = addChunk_IDAT(&outv, data, datasize, &state->encoder.zlibsettings);
- if(state->error) goto cleanup;
-#ifdef LODEPNG_COMPILE_ANCILLARY_CHUNKS
- /*tIME*/
- if(info.time_defined) addChunk_tIME(&outv, &info.time);
- /*tEXt and/or zTXt*/
- for(i = 0; i != info.text_num; ++i) {
- if(strlen(info.text_keys[i]) > 79) {
- state->error = 66; /*text chunk too large*/
- goto cleanup;
- }
- if(strlen(info.text_keys[i]) < 1) {
- state->error = 67; /*text chunk too small*/
- goto cleanup;
- }
- if(state->encoder.text_compression) {
- addChunk_zTXt(&outv, info.text_keys[i], info.text_strings[i], &state->encoder.zlibsettings);
- } else {
- addChunk_tEXt(&outv, info.text_keys[i], info.text_strings[i]);
- }
- }
- /*LodePNG version id in text chunk*/
- if(state->encoder.add_id) {
- unsigned already_added_id_text = 0;
- for(i = 0; i != info.text_num; ++i) {
- if(!strcmp(info.text_keys[i], "LodePNG")) {
- already_added_id_text = 1;
- break;
- }
- }
- if(already_added_id_text == 0) {
- addChunk_tEXt(&outv, "LodePNG", LODEPNG_VERSION_STRING); /*it's shorter as tEXt than as zTXt chunk*/
- }
- }
- /*iTXt*/
- for(i = 0; i != info.itext_num; ++i) {
- if(strlen(info.itext_keys[i]) > 79) {
- state->error = 66; /*text chunk too large*/
- goto cleanup;
- }
- if(strlen(info.itext_keys[i]) < 1) {
- state->error = 67; /*text chunk too small*/
- goto cleanup;
- }
- addChunk_iTXt(&outv, state->encoder.text_compression,
- info.itext_keys[i], info.itext_langtags[i], info.itext_transkeys[i], info.itext_strings[i],
- &state->encoder.zlibsettings);
- }
-
- /*unknown chunks between IDAT and IEND*/
- if(info.unknown_chunks_data[2]) {
- state->error = addUnknownChunks(&outv, info.unknown_chunks_data[2], info.unknown_chunks_size[2]);
- if(state->error) goto cleanup;
- }
-#endif /*LODEPNG_COMPILE_ANCILLARY_CHUNKS*/
- addChunk_IEND(&outv);
- }
-
-cleanup:
- lodepng_info_cleanup(&info);
- lodepng_free(data);
-
- /*instead of cleaning the vector up, give it to the output*/
- *out = outv.data;
- *outsize = outv.size;
-
- return state->error;
-}
-
-unsigned lodepng_encode_memory(unsigned char** out, size_t* outsize, const unsigned char* image,
- unsigned w, unsigned h, LodePNGColorType colortype, unsigned bitdepth) {
- unsigned error;
- LodePNGState state;
- lodepng_state_init(&state);
- state.info_raw.colortype = colortype;
- state.info_raw.bitdepth = bitdepth;
- state.info_png.color.colortype = colortype;
- state.info_png.color.bitdepth = bitdepth;
- lodepng_encode(out, outsize, image, w, h, &state);
- error = state.error;
- lodepng_state_cleanup(&state);
- return error;
-}
-
-unsigned lodepng_encode32(unsigned char** out, size_t* outsize, const unsigned char* image, unsigned w, unsigned h) {
- return lodepng_encode_memory(out, outsize, image, w, h, LCT_RGBA, 8);
-}
-
-unsigned lodepng_encode24(unsigned char** out, size_t* outsize, const unsigned char* image, unsigned w, unsigned h) {
- return lodepng_encode_memory(out, outsize, image, w, h, LCT_RGB, 8);
-}
-
-#ifdef LODEPNG_COMPILE_DISK
-unsigned lodepng_encode_file(const char* filename, const unsigned char* image, unsigned w, unsigned h,
- LodePNGColorType colortype, unsigned bitdepth) {
- unsigned char* buffer;
- size_t buffersize;
- unsigned error = lodepng_encode_memory(&buffer, &buffersize, image, w, h, colortype, bitdepth);
- if(!error) error = lodepng_save_file(buffer, buffersize, filename);
- lodepng_free(buffer);
- return error;
-}
-
-unsigned lodepng_encode32_file(const char* filename, const unsigned char* image, unsigned w, unsigned h) {
- return lodepng_encode_file(filename, image, w, h, LCT_RGBA, 8);
-}
-
-unsigned lodepng_encode24_file(const char* filename, const unsigned char* image, unsigned w, unsigned h) {
- return lodepng_encode_file(filename, image, w, h, LCT_RGB, 8);
-}
-#endif /*LODEPNG_COMPILE_DISK*/
-
-void lodepng_encoder_settings_init(LodePNGEncoderSettings* settings) {
- lodepng_compress_settings_init(&settings->zlibsettings);
- settings->filter_palette_zero = 1;
- settings->filter_strategy = LFS_MINSUM;
- settings->auto_convert = 1;
- settings->force_palette = 0;
- settings->predefined_filters = 0;
-#ifdef LODEPNG_COMPILE_ANCILLARY_CHUNKS
- settings->add_id = 0;
- settings->text_compression = 1;
-#endif /*LODEPNG_COMPILE_ANCILLARY_CHUNKS*/
-}
-
-#endif /*LODEPNG_COMPILE_ENCODER*/
-#endif /*LODEPNG_COMPILE_PNG*/
-
-#ifdef LODEPNG_COMPILE_ERROR_TEXT
-/*
-This returns the description of a numerical error code in English. This is also
-the documentation of all the error codes.
-*/
-const char* lodepng_error_text(unsigned code) {
- switch(code) {
- case 0: return "no error, everything went ok";
- case 1: return "nothing done yet"; /*the Encoder/Decoder has done nothing yet, error checking makes no sense yet*/
- case 10: return "end of input memory reached without huffman end code"; /*while huffman decoding*/
- case 11: return "error in code tree made it jump outside of huffman tree"; /*while huffman decoding*/
- case 13: return "problem while processing dynamic deflate block";
- case 14: return "problem while processing dynamic deflate block";
- case 15: return "problem while processing dynamic deflate block";
- case 16: return "unexisting code while processing dynamic deflate block";
- case 17: return "end of out buffer memory reached while inflating";
- case 18: return "invalid distance code while inflating";
- case 19: return "end of out buffer memory reached while inflating";
- case 20: return "invalid deflate block BTYPE encountered while decoding";
- case 21: return "NLEN is not ones complement of LEN in a deflate block";
-
- /*end of out buffer memory reached while inflating:
- This can happen if the inflated deflate data is longer than the amount of bytes required to fill up
- all the pixels of the image, given the color depth and image dimensions. Something that doesn't
- happen in a normal, well encoded, PNG image.*/
- case 22: return "end of out buffer memory reached while inflating";
- case 23: return "end of in buffer memory reached while inflating";
- case 24: return "invalid FCHECK in zlib header";
- case 25: return "invalid compression method in zlib header";
- case 26: return "FDICT encountered in zlib header while it's not used for PNG";
- case 27: return "PNG file is smaller than a PNG header";
- /*Checks the magic file header, the first 8 bytes of the PNG file*/
- case 28: return "incorrect PNG signature, it's no PNG or corrupted";
- case 29: return "first chunk is not the header chunk";
- case 30: return "chunk length too large, chunk broken off at end of file";
- case 31: return "illegal PNG color type or bpp";
- case 32: return "illegal PNG compression method";
- case 33: return "illegal PNG filter method";
- case 34: return "illegal PNG interlace method";
- case 35: return "chunk length of a chunk is too large or the chunk too small";
- case 36: return "illegal PNG filter type encountered";
- case 37: return "illegal bit depth for this color type given";
- case 38: return "the palette is too big"; /*more than 256 colors*/
- case 39: return "tRNS chunk before PLTE or has more entries than palette size";
- case 40: return "tRNS chunk has wrong size for grayscale image";
- case 41: return "tRNS chunk has wrong size for RGB image";
- case 42: return "tRNS chunk appeared while it was not allowed for this color type";
- case 43: return "bKGD chunk has wrong size for palette image";
- case 44: return "bKGD chunk has wrong size for grayscale image";
- case 45: return "bKGD chunk has wrong size for RGB image";
- case 48: return "empty input buffer given to decoder. Maybe caused by non-existing file?";
- case 49: return "jumped past memory while generating dynamic huffman tree";
- case 50: return "jumped past memory while generating dynamic huffman tree";
- case 51: return "jumped past memory while inflating huffman block";
- case 52: return "jumped past memory while inflating";
- case 53: return "size of zlib data too small";
- case 54: return "repeat symbol in tree while there was no value symbol yet";
- /*jumped past tree while generating huffman tree, this could be when the
- tree will have more leaves than symbols after generating it out of the
- given lenghts. They call this an oversubscribed dynamic bit lengths tree in zlib.*/
- case 55: return "jumped past tree while generating huffman tree";
- case 56: return "given output image colortype or bitdepth not supported for color conversion";
- case 57: return "invalid CRC encountered (checking CRC can be disabled)";
- case 58: return "invalid ADLER32 encountered (checking ADLER32 can be disabled)";
- case 59: return "requested color conversion not supported";
- case 60: return "invalid window size given in the settings of the encoder (must be 0-32768)";
- case 61: return "invalid BTYPE given in the settings of the encoder (only 0, 1 and 2 are allowed)";
- /*LodePNG leaves the choice of RGB to grayscale conversion formula to the user.*/
- case 62: return "conversion from color to grayscale not supported";
- /*(2^31-1)*/
- case 63: return "length of a chunk too long, max allowed for PNG is 2147483647 bytes per chunk";
- /*this would result in the inability of a deflated block to ever contain an end code. It must be at least 1.*/
- case 64: return "the length of the END symbol 256 in the Huffman tree is 0";
- case 66: return "the length of a text chunk keyword given to the encoder is longer than the maximum of 79 bytes";
- case 67: return "the length of a text chunk keyword given to the encoder is smaller than the minimum of 1 byte";
- case 68: return "tried to encode a PLTE chunk with a palette that has less than 1 or more than 256 colors";
- case 69: return "unknown chunk type with 'critical' flag encountered by the decoder";
- case 71: return "unexisting interlace mode given to encoder (must be 0 or 1)";
- case 72: return "while decoding, unexisting compression method encountering in zTXt or iTXt chunk (it must be 0)";
- case 73: return "invalid tIME chunk size";
- case 74: return "invalid pHYs chunk size";
- /*length could be wrong, or data chopped off*/
- case 75: return "no null termination char found while decoding text chunk";
- case 76: return "iTXt chunk too short to contain required bytes";
- case 77: return "integer overflow in buffer size";
- case 78: return "failed to open file for reading"; /*file doesn't exist or couldn't be opened for reading*/
- case 79: return "failed to open file for writing";
- case 80: return "tried creating a tree of 0 symbols";
- case 81: return "lazy matching at pos 0 is impossible";
- case 82: return "color conversion to palette requested while a color isn't in palette, or index out of bounds";
- case 83: return "memory allocation failed";
- case 84: return "given image too small to contain all pixels to be encoded";
- case 86: return "impossible offset in lz77 encoding (internal bug)";
- case 87: return "must provide custom zlib function pointer if LODEPNG_COMPILE_ZLIB is not defined";
- case 88: return "invalid filter strategy given for LodePNGEncoderSettings.filter_strategy";
- case 89: return "text chunk keyword too short or long: must have size 1-79";
- /*the windowsize in the LodePNGCompressSettings. Requiring POT(==> & instead of %) makes encoding 12% faster.*/
- case 90: return "windowsize must be a power of two";
- case 91: return "invalid decompressed idat size";
- case 92: return "integer overflow due to too many pixels";
- case 93: return "zero width or height is invalid";
- case 94: return "header chunk must have a size of 13 bytes";
- case 95: return "integer overflow with combined idat chunk size";
- case 96: return "invalid gAMA chunk size";
- case 97: return "invalid cHRM chunk size";
- case 98: return "invalid sRGB chunk size";
- case 99: return "invalid sRGB rendering intent";
- case 100: return "invalid ICC profile color type, the PNG specification only allows RGB or GRAY";
- case 101: return "PNG specification does not allow RGB ICC profile on gray color types and vice versa";
- case 102: return "not allowed to set grayscale ICC profile with colored pixels by PNG specification";
- case 103: return "invalid palette index in bKGD chunk. Maybe it came before PLTE chunk?";
- case 104: return "invalid bKGD color while encoding (e.g. palette index out of range)";
- }
- return "unknown error code";
-}
-#endif /*LODEPNG_COMPILE_ERROR_TEXT*/
-
-/* ////////////////////////////////////////////////////////////////////////// */
-/* ////////////////////////////////////////////////////////////////////////// */
-/* // C++ Wrapper // */
-/* ////////////////////////////////////////////////////////////////////////// */
-/* ////////////////////////////////////////////////////////////////////////// */
-
-#ifdef LODEPNG_COMPILE_CPP
-namespace lodepng {
-
-#ifdef LODEPNG_COMPILE_DISK
-unsigned load_file(std::vector<unsigned char>& buffer, const std::string& filename) {
- long size = lodepng_filesize(filename.c_str());
- if(size < 0) return 78;
- buffer.resize((size_t)size);
- return size == 0 ? 0 : lodepng_buffer_file(&buffer[0], (size_t)size, filename.c_str());
-}
-
-/*write given buffer to the file, overwriting the file, it doesn't append to it.*/
-unsigned save_file(const std::vector<unsigned char>& buffer, const std::string& filename) {
- return lodepng_save_file(buffer.empty() ? 0 : &buffer[0], buffer.size(), filename.c_str());
-}
-#endif /* LODEPNG_COMPILE_DISK */
-
-#ifdef LODEPNG_COMPILE_ZLIB
-#ifdef LODEPNG_COMPILE_DECODER
-unsigned decompress(std::vector<unsigned char>& out, const unsigned char* in, size_t insize,
- const LodePNGDecompressSettings& settings) {
- unsigned char* buffer = 0;
- size_t buffersize = 0;
- unsigned error = zlib_decompress(&buffer, &buffersize, in, insize, &settings);
- if(buffer) {
- out.insert(out.end(), &buffer[0], &buffer[buffersize]);
- lodepng_free(buffer);
- }
- return error;
-}
-
-unsigned decompress(std::vector<unsigned char>& out, const std::vector<unsigned char>& in,
- const LodePNGDecompressSettings& settings) {
- return decompress(out, in.empty() ? 0 : &in[0], in.size(), settings);
-}
-#endif /* LODEPNG_COMPILE_DECODER */
-
-#ifdef LODEPNG_COMPILE_ENCODER
-unsigned compress(std::vector<unsigned char>& out, const unsigned char* in, size_t insize,
- const LodePNGCompressSettings& settings) {
- unsigned char* buffer = 0;
- size_t buffersize = 0;
- unsigned error = zlib_compress(&buffer, &buffersize, in, insize, &settings);
- if(buffer) {
- out.insert(out.end(), &buffer[0], &buffer[buffersize]);
- lodepng_free(buffer);
- }
- return error;
-}
-
-unsigned compress(std::vector<unsigned char>& out, const std::vector<unsigned char>& in,
- const LodePNGCompressSettings& settings) {
- return compress(out, in.empty() ? 0 : &in[0], in.size(), settings);
-}
-#endif /* LODEPNG_COMPILE_ENCODER */
-#endif /* LODEPNG_COMPILE_ZLIB */
-
-
-#ifdef LODEPNG_COMPILE_PNG
-
-State::State() {
- lodepng_state_init(this);
-}
-
-State::State(const State& other) {
- lodepng_state_init(this);
- lodepng_state_copy(this, &other);
-}
-
-State::~State() {
- lodepng_state_cleanup(this);
-}
-
-State& State::operator=(const State& other) {
- lodepng_state_copy(this, &other);
- return *this;
-}
-
-#ifdef LODEPNG_COMPILE_DECODER
-
-unsigned decode(std::vector<unsigned char>& out, unsigned& w, unsigned& h, const unsigned char* in,
- size_t insize, LodePNGColorType colortype, unsigned bitdepth) {
- unsigned char* buffer;
- unsigned error = lodepng_decode_memory(&buffer, &w, &h, in, insize, colortype, bitdepth);
- if(buffer && !error) {
- State state;
- state.info_raw.colortype = colortype;
- state.info_raw.bitdepth = bitdepth;
- size_t buffersize = lodepng_get_raw_size(w, h, &state.info_raw);
- out.insert(out.end(), &buffer[0], &buffer[buffersize]);
- lodepng_free(buffer);
- }
- return error;
-}
-
-unsigned decode(std::vector<unsigned char>& out, unsigned& w, unsigned& h,
- const std::vector<unsigned char>& in, LodePNGColorType colortype, unsigned bitdepth) {
- return decode(out, w, h, in.empty() ? 0 : &in[0], (unsigned)in.size(), colortype, bitdepth);
-}
-
-unsigned decode(std::vector<unsigned char>& out, unsigned& w, unsigned& h,
- State& state,
- const unsigned char* in, size_t insize) {
- unsigned char* buffer = NULL;
- unsigned error = lodepng_decode(&buffer, &w, &h, &state, in, insize);
- if(buffer && !error) {
- size_t buffersize = lodepng_get_raw_size(w, h, &state.info_raw);
- out.insert(out.end(), &buffer[0], &buffer[buffersize]);
- }
- lodepng_free(buffer);
- return error;
-}
-
-unsigned decode(std::vector<unsigned char>& out, unsigned& w, unsigned& h,
- State& state,
- const std::vector<unsigned char>& in) {
- return decode(out, w, h, state, in.empty() ? 0 : &in[0], in.size());
-}
-
-#ifdef LODEPNG_COMPILE_DISK
-unsigned decode(std::vector<unsigned char>& out, unsigned& w, unsigned& h, const std::string& filename,
- LodePNGColorType colortype, unsigned bitdepth) {
- std::vector<unsigned char> buffer;
- /* safe output values in case error happens */
- w = h = 0;
- unsigned error = load_file(buffer, filename);
- if(error) return error;
- return decode(out, w, h, buffer, colortype, bitdepth);
-}
-#endif /* LODEPNG_COMPILE_DECODER */
-#endif /* LODEPNG_COMPILE_DISK */
-
-#ifdef LODEPNG_COMPILE_ENCODER
-unsigned encode(std::vector<unsigned char>& out, const unsigned char* in, unsigned w, unsigned h,
- LodePNGColorType colortype, unsigned bitdepth) {
- unsigned char* buffer;
- size_t buffersize;
- unsigned error = lodepng_encode_memory(&buffer, &buffersize, in, w, h, colortype, bitdepth);
- if(buffer) {
- out.insert(out.end(), &buffer[0], &buffer[buffersize]);
- lodepng_free(buffer);
- }
- return error;
-}
-
-unsigned encode(std::vector<unsigned char>& out,
- const std::vector<unsigned char>& in, unsigned w, unsigned h,
- LodePNGColorType colortype, unsigned bitdepth) {
- if(lodepng_get_raw_size_lct(w, h, colortype, bitdepth) > in.size()) return 84;
- return encode(out, in.empty() ? 0 : &in[0], w, h, colortype, bitdepth);
-}
-
-unsigned encode(std::vector<unsigned char>& out,
- const unsigned char* in, unsigned w, unsigned h,
- State& state) {
- unsigned char* buffer;
- size_t buffersize;
- unsigned error = lodepng_encode(&buffer, &buffersize, in, w, h, &state);
- if(buffer) {
- out.insert(out.end(), &buffer[0], &buffer[buffersize]);
- lodepng_free(buffer);
- }
- return error;
-}
-
-unsigned encode(std::vector<unsigned char>& out,
- const std::vector<unsigned char>& in, unsigned w, unsigned h,
- State& state) {
- if(lodepng_get_raw_size(w, h, &state.info_raw) > in.size()) return 84;
- return encode(out, in.empty() ? 0 : &in[0], w, h, state);
-}
-
-#ifdef LODEPNG_COMPILE_DISK
-unsigned encode(const std::string& filename,
- const unsigned char* in, unsigned w, unsigned h,
- LodePNGColorType colortype, unsigned bitdepth) {
- std::vector<unsigned char> buffer;
- unsigned error = encode(buffer, in, w, h, colortype, bitdepth);
- if(!error) error = save_file(buffer, filename);
- return error;
-}
-
-unsigned encode(const std::string& filename,
- const std::vector<unsigned char>& in, unsigned w, unsigned h,
- LodePNGColorType colortype, unsigned bitdepth) {
- if(lodepng_get_raw_size_lct(w, h, colortype, bitdepth) > in.size()) return 84;
- return encode(filename, in.empty() ? 0 : &in[0], w, h, colortype, bitdepth);
-}
-#endif /* LODEPNG_COMPILE_DISK */
-#endif /* LODEPNG_COMPILE_ENCODER */
-#endif /* LODEPNG_COMPILE_PNG */
-} /* namespace lodepng */
-#endif /*LODEPNG_COMPILE_CPP*/
diff --git a/thirdparty/basis_universal/encoder/lodepng.h b/thirdparty/basis_universal/encoder/lodepng.h
deleted file mode 100644
index 476a2061e2..0000000000
--- a/thirdparty/basis_universal/encoder/lodepng.h
+++ /dev/null
@@ -1,1930 +0,0 @@
-/*
-LodePNG version 20190210
-
-Copyright (c) 2005-2019 Lode Vandevenne
-
-This software is provided 'as-is', without any express or implied
-warranty. In no event will the authors be held liable for any damages
-arising from the use of this software.
-
-Permission is granted to anyone to use this software for any purpose,
-including commercial applications, and to alter it and redistribute it
-freely, subject to the following restrictions:
-
- 1. The origin of this software must not be misrepresented; you must not
- claim that you wrote the original software. If you use this software
- in a product, an acknowledgment in the product documentation would be
- appreciated but is not required.
-
- 2. Altered source versions must be plainly marked as such, and must not be
- misrepresented as being the original software.
-
- 3. This notice may not be removed or altered from any source
- distribution.
-*/
-
-#ifndef LODEPNG_H
-#define LODEPNG_H
-
-#include <string.h> /*for size_t*/
-
-extern const char* LODEPNG_VERSION_STRING;
-
-/*
-The following #defines are used to create code sections. They can be disabled
-to disable code sections, which can give faster compile time and smaller binary.
-The "NO_COMPILE" defines are designed to be used to pass as defines to the
-compiler command to disable them without modifying this header, e.g.
--DLODEPNG_NO_COMPILE_ZLIB for gcc.
-In addition to those below, you can also define LODEPNG_NO_COMPILE_CRC to
-allow implementing a custom lodepng_crc32.
-*/
-/*deflate & zlib. If disabled, you must specify alternative zlib functions in
-the custom_zlib field of the compress and decompress settings*/
-#ifndef LODEPNG_NO_COMPILE_ZLIB
-#define LODEPNG_COMPILE_ZLIB
-#endif
-
-/*png encoder and png decoder*/
-#ifndef LODEPNG_NO_COMPILE_PNG
-#define LODEPNG_COMPILE_PNG
-#endif
-
-/*deflate&zlib decoder and png decoder*/
-#ifndef LODEPNG_NO_COMPILE_DECODER
-#define LODEPNG_COMPILE_DECODER
-#endif
-
-/*deflate&zlib encoder and png encoder*/
-#ifndef LODEPNG_NO_COMPILE_ENCODER
-#define LODEPNG_COMPILE_ENCODER
-#endif
-
-/*the optional built in harddisk file loading and saving functions*/
-#ifndef LODEPNG_NO_COMPILE_DISK
-#define LODEPNG_COMPILE_DISK
-#endif
-
-/*support for chunks other than IHDR, IDAT, PLTE, tRNS, IEND: ancillary and unknown chunks*/
-#ifndef LODEPNG_NO_COMPILE_ANCILLARY_CHUNKS
-#define LODEPNG_COMPILE_ANCILLARY_CHUNKS
-#endif
-
-/*ability to convert error numerical codes to English text string*/
-#ifndef LODEPNG_NO_COMPILE_ERROR_TEXT
-#define LODEPNG_COMPILE_ERROR_TEXT
-#endif
-
-/*Compile the default allocators (C's free, malloc and realloc). If you disable this,
-you can define the functions lodepng_free, lodepng_malloc and lodepng_realloc in your
-source files with custom allocators.*/
-#ifndef LODEPNG_NO_COMPILE_ALLOCATORS
-#define LODEPNG_COMPILE_ALLOCATORS
-#endif
-
-/*compile the C++ version (you can disable the C++ wrapper here even when compiling for C++)*/
-#ifdef __cplusplus
-#ifndef LODEPNG_NO_COMPILE_CPP
-#define LODEPNG_COMPILE_CPP
-#endif
-#endif
-
-#ifdef LODEPNG_COMPILE_CPP
-#include <vector>
-#include <string>
-#endif /*LODEPNG_COMPILE_CPP*/
-
-#ifdef LODEPNG_COMPILE_PNG
-/*The PNG color types (also used for raw).*/
-typedef enum LodePNGColorType {
- LCT_GREY = 0, /*grayscale: 1,2,4,8,16 bit*/
- LCT_RGB = 2, /*RGB: 8,16 bit*/
- LCT_PALETTE = 3, /*palette: 1,2,4,8 bit*/
- LCT_GREY_ALPHA = 4, /*grayscale with alpha: 8,16 bit*/
- LCT_RGBA = 6 /*RGB with alpha: 8,16 bit*/
-} LodePNGColorType;
-
-#ifdef LODEPNG_COMPILE_DECODER
-/*
-Converts PNG data in memory to raw pixel data.
-out: Output parameter. Pointer to buffer that will contain the raw pixel data.
- After decoding, its size is w * h * (bytes per pixel) bytes larger than
- initially. Bytes per pixel depends on colortype and bitdepth.
- Must be freed after usage with free(*out).
- Note: for 16-bit per channel colors, uses big endian format like PNG does.
-w: Output parameter. Pointer to width of pixel data.
-h: Output parameter. Pointer to height of pixel data.
-in: Memory buffer with the PNG file.
-insize: size of the in buffer.
-colortype: the desired color type for the raw output image. See explanation on PNG color types.
-bitdepth: the desired bit depth for the raw output image. See explanation on PNG color types.
-Return value: LodePNG error code (0 means no error).
-*/
-unsigned lodepng_decode_memory(unsigned char** out, unsigned* w, unsigned* h,
- const unsigned char* in, size_t insize,
- LodePNGColorType colortype, unsigned bitdepth);
-
-/*Same as lodepng_decode_memory, but always decodes to 32-bit RGBA raw image*/
-unsigned lodepng_decode32(unsigned char** out, unsigned* w, unsigned* h,
- const unsigned char* in, size_t insize);
-
-/*Same as lodepng_decode_memory, but always decodes to 24-bit RGB raw image*/
-unsigned lodepng_decode24(unsigned char** out, unsigned* w, unsigned* h,
- const unsigned char* in, size_t insize);
-
-#ifdef LODEPNG_COMPILE_DISK
-/*
-Load PNG from disk, from file with given name.
-Same as the other decode functions, but instead takes a filename as input.
-*/
-unsigned lodepng_decode_file(unsigned char** out, unsigned* w, unsigned* h,
- const char* filename,
- LodePNGColorType colortype, unsigned bitdepth);
-
-/*Same as lodepng_decode_file, but always decodes to 32-bit RGBA raw image.*/
-unsigned lodepng_decode32_file(unsigned char** out, unsigned* w, unsigned* h,
- const char* filename);
-
-/*Same as lodepng_decode_file, but always decodes to 24-bit RGB raw image.*/
-unsigned lodepng_decode24_file(unsigned char** out, unsigned* w, unsigned* h,
- const char* filename);
-#endif /*LODEPNG_COMPILE_DISK*/
-#endif /*LODEPNG_COMPILE_DECODER*/
-
-
-#ifdef LODEPNG_COMPILE_ENCODER
-/*
-Converts raw pixel data into a PNG image in memory. The colortype and bitdepth
- of the output PNG image cannot be chosen, they are automatically determined
- by the colortype, bitdepth and content of the input pixel data.
- Note: for 16-bit per channel colors, needs big endian format like PNG does.
-out: Output parameter. Pointer to buffer that will contain the PNG image data.
- Must be freed after usage with free(*out).
-outsize: Output parameter. Pointer to the size in bytes of the out buffer.
-image: The raw pixel data to encode. The size of this buffer should be
- w * h * (bytes per pixel), bytes per pixel depends on colortype and bitdepth.
-w: width of the raw pixel data in pixels.
-h: height of the raw pixel data in pixels.
-colortype: the color type of the raw input image. See explanation on PNG color types.
-bitdepth: the bit depth of the raw input image. See explanation on PNG color types.
-Return value: LodePNG error code (0 means no error).
-*/
-unsigned lodepng_encode_memory(unsigned char** out, size_t* outsize,
- const unsigned char* image, unsigned w, unsigned h,
- LodePNGColorType colortype, unsigned bitdepth);
-
-/*Same as lodepng_encode_memory, but always encodes from 32-bit RGBA raw image.*/
-unsigned lodepng_encode32(unsigned char** out, size_t* outsize,
- const unsigned char* image, unsigned w, unsigned h);
-
-/*Same as lodepng_encode_memory, but always encodes from 24-bit RGB raw image.*/
-unsigned lodepng_encode24(unsigned char** out, size_t* outsize,
- const unsigned char* image, unsigned w, unsigned h);
-
-#ifdef LODEPNG_COMPILE_DISK
-/*
-Converts raw pixel data into a PNG file on disk.
-Same as the other encode functions, but instead takes a filename as output.
-NOTE: This overwrites existing files without warning!
-*/
-unsigned lodepng_encode_file(const char* filename,
- const unsigned char* image, unsigned w, unsigned h,
- LodePNGColorType colortype, unsigned bitdepth);
-
-/*Same as lodepng_encode_file, but always encodes from 32-bit RGBA raw image.*/
-unsigned lodepng_encode32_file(const char* filename,
- const unsigned char* image, unsigned w, unsigned h);
-
-/*Same as lodepng_encode_file, but always encodes from 24-bit RGB raw image.*/
-unsigned lodepng_encode24_file(const char* filename,
- const unsigned char* image, unsigned w, unsigned h);
-#endif /*LODEPNG_COMPILE_DISK*/
-#endif /*LODEPNG_COMPILE_ENCODER*/
-
-
-#ifdef LODEPNG_COMPILE_CPP
-namespace lodepng {
-#ifdef LODEPNG_COMPILE_DECODER
-/*Same as lodepng_decode_memory, but decodes to an std::vector. The colortype
-is the format to output the pixels to. Default is RGBA 8-bit per channel.*/
-unsigned decode(std::vector<unsigned char>& out, unsigned& w, unsigned& h,
- const unsigned char* in, size_t insize,
- LodePNGColorType colortype = LCT_RGBA, unsigned bitdepth = 8);
-unsigned decode(std::vector<unsigned char>& out, unsigned& w, unsigned& h,
- const std::vector<unsigned char>& in,
- LodePNGColorType colortype = LCT_RGBA, unsigned bitdepth = 8);
-#ifdef LODEPNG_COMPILE_DISK
-/*
-Converts PNG file from disk to raw pixel data in memory.
-Same as the other decode functions, but instead takes a filename as input.
-*/
-unsigned decode(std::vector<unsigned char>& out, unsigned& w, unsigned& h,
- const std::string& filename,
- LodePNGColorType colortype = LCT_RGBA, unsigned bitdepth = 8);
-#endif /* LODEPNG_COMPILE_DISK */
-#endif /* LODEPNG_COMPILE_DECODER */
-
-#ifdef LODEPNG_COMPILE_ENCODER
-/*Same as lodepng_encode_memory, but encodes to an std::vector. colortype
-is that of the raw input data. The output PNG color type will be auto chosen.*/
-unsigned encode(std::vector<unsigned char>& out,
- const unsigned char* in, unsigned w, unsigned h,
- LodePNGColorType colortype = LCT_RGBA, unsigned bitdepth = 8);
-unsigned encode(std::vector<unsigned char>& out,
- const std::vector<unsigned char>& in, unsigned w, unsigned h,
- LodePNGColorType colortype = LCT_RGBA, unsigned bitdepth = 8);
-#ifdef LODEPNG_COMPILE_DISK
-/*
-Converts 32-bit RGBA raw pixel data into a PNG file on disk.
-Same as the other encode functions, but instead takes a filename as output.
-NOTE: This overwrites existing files without warning!
-*/
-unsigned encode(const std::string& filename,
- const unsigned char* in, unsigned w, unsigned h,
- LodePNGColorType colortype = LCT_RGBA, unsigned bitdepth = 8);
-unsigned encode(const std::string& filename,
- const std::vector<unsigned char>& in, unsigned w, unsigned h,
- LodePNGColorType colortype = LCT_RGBA, unsigned bitdepth = 8);
-#endif /* LODEPNG_COMPILE_DISK */
-#endif /* LODEPNG_COMPILE_ENCODER */
-} /* namespace lodepng */
-#endif /*LODEPNG_COMPILE_CPP*/
-#endif /*LODEPNG_COMPILE_PNG*/
-
-#ifdef LODEPNG_COMPILE_ERROR_TEXT
-/*Returns an English description of the numerical error code.*/
-const char* lodepng_error_text(unsigned code);
-#endif /*LODEPNG_COMPILE_ERROR_TEXT*/
-
-#ifdef LODEPNG_COMPILE_DECODER
-/*Settings for zlib decompression*/
-typedef struct LodePNGDecompressSettings LodePNGDecompressSettings;
-struct LodePNGDecompressSettings {
- /* Check LodePNGDecoderSettings for more ignorable errors such as ignore_crc */
- unsigned ignore_adler32; /*if 1, continue and don't give an error message if the Adler32 checksum is corrupted*/
-
- /*use custom zlib decoder instead of built in one (default: null)*/
- unsigned (*custom_zlib)(unsigned char**, size_t*,
- const unsigned char*, size_t,
- const LodePNGDecompressSettings*);
- /*use custom deflate decoder instead of built in one (default: null)
- if custom_zlib is used, custom_deflate is ignored since only the built in
- zlib function will call custom_deflate*/
- unsigned (*custom_inflate)(unsigned char**, size_t*,
- const unsigned char*, size_t,
- const LodePNGDecompressSettings*);
-
- const void* custom_context; /*optional custom settings for custom functions*/
-};
-
-extern const LodePNGDecompressSettings lodepng_default_decompress_settings;
-void lodepng_decompress_settings_init(LodePNGDecompressSettings* settings);
-#endif /*LODEPNG_COMPILE_DECODER*/
-
-#ifdef LODEPNG_COMPILE_ENCODER
-/*
-Settings for zlib compression. Tweaking these settings tweaks the balance
-between speed and compression ratio.
-*/
-typedef struct LodePNGCompressSettings LodePNGCompressSettings;
-struct LodePNGCompressSettings /*deflate = compress*/ {
- /*LZ77 related settings*/
- unsigned btype; /*the block type for LZ (0, 1, 2 or 3, see zlib standard). Should be 2 for proper compression.*/
- unsigned use_lz77; /*whether or not to use LZ77. Should be 1 for proper compression.*/
- unsigned windowsize; /*must be a power of two <= 32768. higher compresses more but is slower. Default value: 2048.*/
- unsigned minmatch; /*mininum lz77 length. 3 is normally best, 6 can be better for some PNGs. Default: 0*/
- unsigned nicematch; /*stop searching if >= this length found. Set to 258 for best compression. Default: 128*/
- unsigned lazymatching; /*use lazy matching: better compression but a bit slower. Default: true*/
-
- /*use custom zlib encoder instead of built in one (default: null)*/
- unsigned (*custom_zlib)(unsigned char**, size_t*,
- const unsigned char*, size_t,
- const LodePNGCompressSettings*);
- /*use custom deflate encoder instead of built in one (default: null)
- if custom_zlib is used, custom_deflate is ignored since only the built in
- zlib function will call custom_deflate*/
- unsigned (*custom_deflate)(unsigned char**, size_t*,
- const unsigned char*, size_t,
- const LodePNGCompressSettings*);
-
- const void* custom_context; /*optional custom settings for custom functions*/
-};
-
-extern const LodePNGCompressSettings lodepng_default_compress_settings;
-void lodepng_compress_settings_init(LodePNGCompressSettings* settings);
-#endif /*LODEPNG_COMPILE_ENCODER*/
-
-#ifdef LODEPNG_COMPILE_PNG
-/*
-Color mode of an image. Contains all information required to decode the pixel
-bits to RGBA colors. This information is the same as used in the PNG file
-format, and is used both for PNG and raw image data in LodePNG.
-*/
-typedef struct LodePNGColorMode {
- /*header (IHDR)*/
- LodePNGColorType colortype; /*color type, see PNG standard or documentation further in this header file*/
- unsigned bitdepth; /*bits per sample, see PNG standard or documentation further in this header file*/
-
- /*
- palette (PLTE and tRNS)
-
- Dynamically allocated with the colors of the palette, including alpha.
- When encoding a PNG, to store your colors in the palette of the LodePNGColorMode, first use
- lodepng_palette_clear, then for each color use lodepng_palette_add.
- If you encode an image without alpha with palette, don't forget to put value 255 in each A byte of the palette.
-
- When decoding, by default you can ignore this palette, since LodePNG already
- fills the palette colors in the pixels of the raw RGBA output.
-
- The palette is only supported for color type 3.
- */
- unsigned char* palette; /*palette in RGBARGBA... order. When allocated, must be either 0, or have size 1024*/
- size_t palettesize; /*palette size in number of colors (amount of bytes is 4 * palettesize)*/
-
- /*
- transparent color key (tRNS)
-
- This color uses the same bit depth as the bitdepth value in this struct, which can be 1-bit to 16-bit.
- For grayscale PNGs, r, g and b will all 3 be set to the same.
-
- When decoding, by default you can ignore this information, since LodePNG sets
- pixels with this key to transparent already in the raw RGBA output.
-
- The color key is only supported for color types 0 and 2.
- */
- unsigned key_defined; /*is a transparent color key given? 0 = false, 1 = true*/
- unsigned key_r; /*red/grayscale component of color key*/
- unsigned key_g; /*green component of color key*/
- unsigned key_b; /*blue component of color key*/
-} LodePNGColorMode;
-
-/*init, cleanup and copy functions to use with this struct*/
-void lodepng_color_mode_init(LodePNGColorMode* info);
-void lodepng_color_mode_cleanup(LodePNGColorMode* info);
-/*return value is error code (0 means no error)*/
-unsigned lodepng_color_mode_copy(LodePNGColorMode* dest, const LodePNGColorMode* source);
-/* Makes a temporary LodePNGColorMode that does not need cleanup (no palette) */
-LodePNGColorMode lodepng_color_mode_make(LodePNGColorType colortype, unsigned bitdepth);
-
-void lodepng_palette_clear(LodePNGColorMode* info);
-/*add 1 color to the palette*/
-unsigned lodepng_palette_add(LodePNGColorMode* info,
- unsigned char r, unsigned char g, unsigned char b, unsigned char a);
-
-/*get the total amount of bits per pixel, based on colortype and bitdepth in the struct*/
-unsigned lodepng_get_bpp(const LodePNGColorMode* info);
-/*get the amount of color channels used, based on colortype in the struct.
-If a palette is used, it counts as 1 channel.*/
-unsigned lodepng_get_channels(const LodePNGColorMode* info);
-/*is it a grayscale type? (only colortype 0 or 4)*/
-unsigned lodepng_is_greyscale_type(const LodePNGColorMode* info);
-/*has it got an alpha channel? (only colortype 2 or 6)*/
-unsigned lodepng_is_alpha_type(const LodePNGColorMode* info);
-/*has it got a palette? (only colortype 3)*/
-unsigned lodepng_is_palette_type(const LodePNGColorMode* info);
-/*only returns true if there is a palette and there is a value in the palette with alpha < 255.
-Loops through the palette to check this.*/
-unsigned lodepng_has_palette_alpha(const LodePNGColorMode* info);
-/*
-Check if the given color info indicates the possibility of having non-opaque pixels in the PNG image.
-Returns true if the image can have translucent or invisible pixels (it still be opaque if it doesn't use such pixels).
-Returns false if the image can only have opaque pixels.
-In detail, it returns true only if it's a color type with alpha, or has a palette with non-opaque values,
-or if "key_defined" is true.
-*/
-unsigned lodepng_can_have_alpha(const LodePNGColorMode* info);
-/*Returns the byte size of a raw image buffer with given width, height and color mode*/
-size_t lodepng_get_raw_size(unsigned w, unsigned h, const LodePNGColorMode* color);
-
-#ifdef LODEPNG_COMPILE_ANCILLARY_CHUNKS
-/*The information of a Time chunk in PNG.*/
-typedef struct LodePNGTime {
- unsigned year; /*2 bytes used (0-65535)*/
- unsigned month; /*1-12*/
- unsigned day; /*1-31*/
- unsigned hour; /*0-23*/
- unsigned minute; /*0-59*/
- unsigned second; /*0-60 (to allow for leap seconds)*/
-} LodePNGTime;
-#endif /*LODEPNG_COMPILE_ANCILLARY_CHUNKS*/
-
-/*Information about the PNG image, except pixels, width and height.*/
-typedef struct LodePNGInfo {
- /*header (IHDR), palette (PLTE) and transparency (tRNS) chunks*/
- unsigned compression_method;/*compression method of the original file. Always 0.*/
- unsigned filter_method; /*filter method of the original file*/
- unsigned interlace_method; /*interlace method of the original file: 0=none, 1=Adam7*/
- LodePNGColorMode color; /*color type and bits, palette and transparency of the PNG file*/
-
-#ifdef LODEPNG_COMPILE_ANCILLARY_CHUNKS
- /*
- Suggested background color chunk (bKGD)
-
- This uses the same color mode and bit depth as the PNG (except no alpha channel),
- with values truncated to the bit depth in the unsigned integer.
-
- For grayscale and palette PNGs, the value is stored in background_r. The values
- in background_g and background_b are then unused.
-
- So when decoding, you may get these in a different color mode than the one you requested
- for the raw pixels.
-
- When encoding with auto_convert, you must use the color model defined in info_png.color for
- these values. The encoder normally ignores info_png.color when auto_convert is on, but will
- use it to interpret these values (and convert copies of them to its chosen color model).
-
- When encoding, avoid setting this to an expensive color, such as a non-gray value
- when the image is gray, or the compression will be worse since it will be forced to
- write the PNG with a more expensive color mode (when auto_convert is on).
-
- The decoder does not use this background color to edit the color of pixels. This is a
- completely optional metadata feature.
- */
- unsigned background_defined; /*is a suggested background color given?*/
- unsigned background_r; /*red/gray/palette component of suggested background color*/
- unsigned background_g; /*green component of suggested background color*/
- unsigned background_b; /*blue component of suggested background color*/
-
- /*
- non-international text chunks (tEXt and zTXt)
-
- The char** arrays each contain num strings. The actual messages are in
- text_strings, while text_keys are keywords that give a short description what
- the actual text represents, e.g. Title, Author, Description, or anything else.
-
- All the string fields below including keys, names and language tags are null terminated.
- The PNG specification uses null characters for the keys, names and tags, and forbids null
- characters to appear in the main text which is why we can use null termination everywhere here.
-
- A keyword is minimum 1 character and maximum 79 characters long. It's
- discouraged to use a single line length longer than 79 characters for texts.
-
- Don't allocate these text buffers yourself. Use the init/cleanup functions
- correctly and use lodepng_add_text and lodepng_clear_text.
- */
- size_t text_num; /*the amount of texts in these char** buffers (there may be more texts in itext)*/
- char** text_keys; /*the keyword of a text chunk (e.g. "Comment")*/
- char** text_strings; /*the actual text*/
-
- /*
- international text chunks (iTXt)
- Similar to the non-international text chunks, but with additional strings
- "langtags" and "transkeys".
- */
- size_t itext_num; /*the amount of international texts in this PNG*/
- char** itext_keys; /*the English keyword of the text chunk (e.g. "Comment")*/
- char** itext_langtags; /*language tag for this text's language, ISO/IEC 646 string, e.g. ISO 639 language tag*/
- char** itext_transkeys; /*keyword translated to the international language - UTF-8 string*/
- char** itext_strings; /*the actual international text - UTF-8 string*/
-
- /*time chunk (tIME)*/
- unsigned time_defined; /*set to 1 to make the encoder generate a tIME chunk*/
- LodePNGTime time;
-
- /*phys chunk (pHYs)*/
- unsigned phys_defined; /*if 0, there is no pHYs chunk and the values below are undefined, if 1 else there is one*/
- unsigned phys_x; /*pixels per unit in x direction*/
- unsigned phys_y; /*pixels per unit in y direction*/
- unsigned phys_unit; /*may be 0 (unknown unit) or 1 (metre)*/
-
- /*
- Color profile related chunks: gAMA, cHRM, sRGB, iCPP
-
- LodePNG does not apply any color conversions on pixels in the encoder or decoder and does not interpret these color
- profile values. It merely passes on the information. If you wish to use color profiles and convert colors, please
- use these values with a color management library.
-
- See the PNG, ICC and sRGB specifications for more information about the meaning of these values.
- */
-
- /* gAMA chunk: optional, overridden by sRGB or iCCP if those are present. */
- unsigned gama_defined; /* Whether a gAMA chunk is present (0 = not present, 1 = present). */
- unsigned gama_gamma; /* Gamma exponent times 100000 */
-
- /* cHRM chunk: optional, overridden by sRGB or iCCP if those are present. */
- unsigned chrm_defined; /* Whether a cHRM chunk is present (0 = not present, 1 = present). */
- unsigned chrm_white_x; /* White Point x times 100000 */
- unsigned chrm_white_y; /* White Point y times 100000 */
- unsigned chrm_red_x; /* Red x times 100000 */
- unsigned chrm_red_y; /* Red y times 100000 */
- unsigned chrm_green_x; /* Green x times 100000 */
- unsigned chrm_green_y; /* Green y times 100000 */
- unsigned chrm_blue_x; /* Blue x times 100000 */
- unsigned chrm_blue_y; /* Blue y times 100000 */
-
- /*
- sRGB chunk: optional. May not appear at the same time as iCCP.
- If gAMA is also present gAMA must contain value 45455.
- If cHRM is also present cHRM must contain respectively 31270,32900,64000,33000,30000,60000,15000,6000.
- */
- unsigned srgb_defined; /* Whether an sRGB chunk is present (0 = not present, 1 = present). */
- unsigned srgb_intent; /* Rendering intent: 0=perceptual, 1=rel. colorimetric, 2=saturation, 3=abs. colorimetric */
-
- /*
- iCCP chunk: optional. May not appear at the same time as sRGB.
-
- LodePNG does not parse or use the ICC profile (except its color space header field for an edge case), a
- separate library to handle the ICC data (not included in LodePNG) format is needed to use it for color
- management and conversions.
-
- For encoding, if iCCP is present, gAMA and cHRM are recommended to be added as well with values that match the ICC
- profile as closely as possible, if you wish to do this you should provide the correct values for gAMA and cHRM and
- enable their '_defined' flags since LodePNG will not automatically compute them from the ICC profile.
-
- For encoding, the ICC profile is required by the PNG specification to be an "RGB" profile for non-gray
- PNG color types and a "GRAY" profile for gray PNG color types. If you disable auto_convert, you must ensure
- the ICC profile type matches your requested color type, else the encoder gives an error. If auto_convert is
- enabled (the default), and the ICC profile is not a good match for the pixel data, this will result in an encoder
- error if the pixel data has non-gray pixels for a GRAY profile, or a silent less-optimal compression of the pixel
- data if the pixels could be encoded as grayscale but the ICC profile is RGB.
-
- To avoid this do not set an ICC profile in the image unless there is a good reason for it, and when doing so
- make sure you compute it carefully to avoid the above problems.
- */
- unsigned iccp_defined; /* Whether an iCCP chunk is present (0 = not present, 1 = present). */
- char* iccp_name; /* Null terminated string with profile name, 1-79 bytes */
- /*
- The ICC profile in iccp_profile_size bytes.
- Don't allocate this buffer yourself. Use the init/cleanup functions
- correctly and use lodepng_set_icc and lodepng_clear_icc.
- */
- unsigned char* iccp_profile;
- unsigned iccp_profile_size; /* The size of iccp_profile in bytes */
-
- /* End of color profile related chunks */
-
-
- /*
- unknown chunks: chunks not known by LodePNG, passed on byte for byte.
-
- There are 3 buffers, one for each position in the PNG where unknown chunks can appear.
- Each buffer contains all unknown chunks for that position consecutively.
- The 3 positions are:
- 0: between IHDR and PLTE, 1: between PLTE and IDAT, 2: between IDAT and IEND.
-
- For encoding, do not store critical chunks or known chunks that are enabled with a "_defined" flag
- above in here, since the encoder will blindly follow this and could then encode an invalid PNG file
- (such as one with two IHDR chunks or the disallowed combination of sRGB with iCCP). But do use
- this if you wish to store an ancillary chunk that is not supported by LodePNG (such as sPLT or hIST),
- or any non-standard PNG chunk.
-
- Do not allocate or traverse this data yourself. Use the chunk traversing functions declared
- later, such as lodepng_chunk_next and lodepng_chunk_append, to read/write this struct.
- */
- unsigned char* unknown_chunks_data[3];
- size_t unknown_chunks_size[3]; /*size in bytes of the unknown chunks, given for protection*/
-#endif /*LODEPNG_COMPILE_ANCILLARY_CHUNKS*/
-} LodePNGInfo;
-
-/*init, cleanup and copy functions to use with this struct*/
-void lodepng_info_init(LodePNGInfo* info);
-void lodepng_info_cleanup(LodePNGInfo* info);
-/*return value is error code (0 means no error)*/
-unsigned lodepng_info_copy(LodePNGInfo* dest, const LodePNGInfo* source);
-
-#ifdef LODEPNG_COMPILE_ANCILLARY_CHUNKS
-unsigned lodepng_add_text(LodePNGInfo* info, const char* key, const char* str); /*push back both texts at once*/
-void lodepng_clear_text(LodePNGInfo* info); /*use this to clear the texts again after you filled them in*/
-
-unsigned lodepng_add_itext(LodePNGInfo* info, const char* key, const char* langtag,
- const char* transkey, const char* str); /*push back the 4 texts of 1 chunk at once*/
-void lodepng_clear_itext(LodePNGInfo* info); /*use this to clear the itexts again after you filled them in*/
-
-/*replaces if exists*/
-unsigned lodepng_set_icc(LodePNGInfo* info, const char* name, const unsigned char* profile, unsigned profile_size);
-void lodepng_clear_icc(LodePNGInfo* info); /*use this to clear the texts again after you filled them in*/
-#endif /*LODEPNG_COMPILE_ANCILLARY_CHUNKS*/
-
-/*
-Converts raw buffer from one color type to another color type, based on
-LodePNGColorMode structs to describe the input and output color type.
-See the reference manual at the end of this header file to see which color conversions are supported.
-return value = LodePNG error code (0 if all went ok, an error if the conversion isn't supported)
-The out buffer must have size (w * h * bpp + 7) / 8, where bpp is the bits per pixel
-of the output color type (lodepng_get_bpp).
-For < 8 bpp images, there should not be padding bits at the end of scanlines.
-For 16-bit per channel colors, uses big endian format like PNG does.
-Return value is LodePNG error code
-*/
-unsigned lodepng_convert(unsigned char* out, const unsigned char* in,
- const LodePNGColorMode* mode_out, const LodePNGColorMode* mode_in,
- unsigned w, unsigned h);
-
-#ifdef LODEPNG_COMPILE_DECODER
-/*
-Settings for the decoder. This contains settings for the PNG and the Zlib
-decoder, but not the Info settings from the Info structs.
-*/
-typedef struct LodePNGDecoderSettings {
- LodePNGDecompressSettings zlibsettings; /*in here is the setting to ignore Adler32 checksums*/
-
- /* Check LodePNGDecompressSettings for more ignorable errors such as ignore_adler32 */
- unsigned ignore_crc; /*ignore CRC checksums*/
- unsigned ignore_critical; /*ignore unknown critical chunks*/
- unsigned ignore_end; /*ignore issues at end of file if possible (missing IEND chunk, too large chunk, ...)*/
- /* TODO: make a system involving warnings with levels and a strict mode instead. Other potentially recoverable
- errors: srgb rendering intent value, size of content of ancillary chunks, more than 79 characters for some
- strings, placement/combination rules for ancillary chunks, crc of unknown chunks, allowed characters
- in string keys, etc... */
-
- unsigned color_convert; /*whether to convert the PNG to the color type you want. Default: yes*/
-
-#ifdef LODEPNG_COMPILE_ANCILLARY_CHUNKS
- unsigned read_text_chunks; /*if false but remember_unknown_chunks is true, they're stored in the unknown chunks*/
- /*store all bytes from unknown chunks in the LodePNGInfo (off by default, useful for a png editor)*/
- unsigned remember_unknown_chunks;
-#endif /*LODEPNG_COMPILE_ANCILLARY_CHUNKS*/
-} LodePNGDecoderSettings;
-
-void lodepng_decoder_settings_init(LodePNGDecoderSettings* settings);
-#endif /*LODEPNG_COMPILE_DECODER*/
-
-#ifdef LODEPNG_COMPILE_ENCODER
-/*automatically use color type with less bits per pixel if losslessly possible. Default: AUTO*/
-typedef enum LodePNGFilterStrategy {
- /*every filter at zero*/
- LFS_ZERO,
- /*Use filter that gives minimum sum, as described in the official PNG filter heuristic.*/
- LFS_MINSUM,
- /*Use the filter type that gives smallest Shannon entropy for this scanline. Depending
- on the image, this is better or worse than minsum.*/
- LFS_ENTROPY,
- /*
- Brute-force-search PNG filters by compressing each filter for each scanline.
- Experimental, very slow, and only rarely gives better compression than MINSUM.
- */
- LFS_BRUTE_FORCE,
- /*use predefined_filters buffer: you specify the filter type for each scanline*/
- LFS_PREDEFINED
-} LodePNGFilterStrategy;
-
-/*Gives characteristics about the integer RGBA colors of the image (count, alpha channel usage, bit depth, ...),
-which helps decide which color model to use for encoding.
-Used internally by default if "auto_convert" is enabled. Public because it's useful for custom algorithms.
-NOTE: This is not related to the ICC color profile, search "iccp_profile" instead to find the ICC/chromacity/...
-fields in this header file.*/
-typedef struct LodePNGColorProfile {
- unsigned colored; /*not grayscale*/
- unsigned key; /*image is not opaque and color key is possible instead of full alpha*/
- unsigned short key_r; /*key values, always as 16-bit, in 8-bit case the byte is duplicated, e.g. 65535 means 255*/
- unsigned short key_g;
- unsigned short key_b;
- unsigned alpha; /*image is not opaque and alpha channel or alpha palette required*/
- unsigned numcolors; /*amount of colors, up to 257. Not valid if bits == 16.*/
- unsigned char palette[1024]; /*Remembers up to the first 256 RGBA colors, in no particular order*/
- unsigned bits; /*bits per channel (not for palette). 1,2 or 4 for grayscale only. 16 if 16-bit per channel required.*/
- size_t numpixels;
-} LodePNGColorProfile;
-
-void lodepng_color_profile_init(LodePNGColorProfile* profile);
-
-/*Get a LodePNGColorProfile of the image. The profile must already have been inited.
-NOTE: This is not related to the ICC color profile, search "iccp_profile" instead to find the ICC/chromacity/...
-fields in this header file.*/
-unsigned lodepng_get_color_profile(LodePNGColorProfile* profile,
- const unsigned char* image, unsigned w, unsigned h,
- const LodePNGColorMode* mode_in);
-/*The function LodePNG uses internally to decide the PNG color with auto_convert.
-Chooses an optimal color model, e.g. gray if only gray pixels, palette if < 256 colors, ...*/
-unsigned lodepng_auto_choose_color(LodePNGColorMode* mode_out,
- const unsigned char* image, unsigned w, unsigned h,
- const LodePNGColorMode* mode_in);
-
-/*Settings for the encoder.*/
-typedef struct LodePNGEncoderSettings {
- LodePNGCompressSettings zlibsettings; /*settings for the zlib encoder, such as window size, ...*/
-
- unsigned auto_convert; /*automatically choose output PNG color type. Default: true*/
-
- /*If true, follows the official PNG heuristic: if the PNG uses a palette or lower than
- 8 bit depth, set all filters to zero. Otherwise use the filter_strategy. Note that to
- completely follow the official PNG heuristic, filter_palette_zero must be true and
- filter_strategy must be LFS_MINSUM*/
- unsigned filter_palette_zero;
- /*Which filter strategy to use when not using zeroes due to filter_palette_zero.
- Set filter_palette_zero to 0 to ensure always using your chosen strategy. Default: LFS_MINSUM*/
- LodePNGFilterStrategy filter_strategy;
- /*used if filter_strategy is LFS_PREDEFINED. In that case, this must point to a buffer with
- the same length as the amount of scanlines in the image, and each value must <= 5. You
- have to cleanup this buffer, LodePNG will never free it. Don't forget that filter_palette_zero
- must be set to 0 to ensure this is also used on palette or low bitdepth images.*/
- const unsigned char* predefined_filters;
-
- /*force creating a PLTE chunk if colortype is 2 or 6 (= a suggested palette).
- If colortype is 3, PLTE is _always_ created.*/
- unsigned force_palette;
-#ifdef LODEPNG_COMPILE_ANCILLARY_CHUNKS
- /*add LodePNG identifier and version as a text chunk, for debugging*/
- unsigned add_id;
- /*encode text chunks as zTXt chunks instead of tEXt chunks, and use compression in iTXt chunks*/
- unsigned text_compression;
-#endif /*LODEPNG_COMPILE_ANCILLARY_CHUNKS*/
-} LodePNGEncoderSettings;
-
-void lodepng_encoder_settings_init(LodePNGEncoderSettings* settings);
-#endif /*LODEPNG_COMPILE_ENCODER*/
-
-
-#if defined(LODEPNG_COMPILE_DECODER) || defined(LODEPNG_COMPILE_ENCODER)
-/*The settings, state and information for extended encoding and decoding.*/
-typedef struct LodePNGState {
-#ifdef LODEPNG_COMPILE_DECODER
- LodePNGDecoderSettings decoder; /*the decoding settings*/
-#endif /*LODEPNG_COMPILE_DECODER*/
-#ifdef LODEPNG_COMPILE_ENCODER
- LodePNGEncoderSettings encoder; /*the encoding settings*/
-#endif /*LODEPNG_COMPILE_ENCODER*/
- LodePNGColorMode info_raw; /*specifies the format in which you would like to get the raw pixel buffer*/
- LodePNGInfo info_png; /*info of the PNG image obtained after decoding*/
- unsigned error;
-#ifdef LODEPNG_COMPILE_CPP
- /* For the lodepng::State subclass. */
- virtual ~LodePNGState(){}
-#endif
-} LodePNGState;
-
-/*init, cleanup and copy functions to use with this struct*/
-void lodepng_state_init(LodePNGState* state);
-void lodepng_state_cleanup(LodePNGState* state);
-void lodepng_state_copy(LodePNGState* dest, const LodePNGState* source);
-#endif /* defined(LODEPNG_COMPILE_DECODER) || defined(LODEPNG_COMPILE_ENCODER) */
-
-#ifdef LODEPNG_COMPILE_DECODER
-/*
-Same as lodepng_decode_memory, but uses a LodePNGState to allow custom settings and
-getting much more information about the PNG image and color mode.
-*/
-unsigned lodepng_decode(unsigned char** out, unsigned* w, unsigned* h,
- LodePNGState* state,
- const unsigned char* in, size_t insize);
-
-/*
-Read the PNG header, but not the actual data. This returns only the information
-that is in the IHDR chunk of the PNG, such as width, height and color type. The
-information is placed in the info_png field of the LodePNGState.
-*/
-unsigned lodepng_inspect(unsigned* w, unsigned* h,
- LodePNGState* state,
- const unsigned char* in, size_t insize);
-#endif /*LODEPNG_COMPILE_DECODER*/
-
-/*
-Reads one metadata chunk (other than IHDR) of the PNG file and outputs what it
-read in the state. Returns error code on failure.
-Use lodepng_inspect first with a new state, then e.g. lodepng_chunk_find_const
-to find the desired chunk type, and if non null use lodepng_inspect_chunk (with
-chunk_pointer - start_of_file as pos).
-Supports most metadata chunks from the PNG standard (gAMA, bKGD, tEXt, ...).
-Ignores unsupported, unknown, non-metadata or IHDR chunks (without error).
-Requirements: &in[pos] must point to start of a chunk, must use regular
-lodepng_inspect first since format of most other chunks depends on IHDR, and if
-there is a PLTE chunk, that one must be inspected before tRNS or bKGD.
-*/
-unsigned lodepng_inspect_chunk(LodePNGState* state, size_t pos,
- const unsigned char* in, size_t insize);
-
-#ifdef LODEPNG_COMPILE_ENCODER
-/*This function allocates the out buffer with standard malloc and stores the size in *outsize.*/
-unsigned lodepng_encode(unsigned char** out, size_t* outsize,
- const unsigned char* image, unsigned w, unsigned h,
- LodePNGState* state);
-#endif /*LODEPNG_COMPILE_ENCODER*/
-
-/*
-The lodepng_chunk functions are normally not needed, except to traverse the
-unknown chunks stored in the LodePNGInfo struct, or add new ones to it.
-It also allows traversing the chunks of an encoded PNG file yourself.
-
-The chunk pointer always points to the beginning of the chunk itself, that is
-the first byte of the 4 length bytes.
-
-In the PNG file format, chunks have the following format:
--4 bytes length: length of the data of the chunk in bytes (chunk itself is 12 bytes longer)
--4 bytes chunk type (ASCII a-z,A-Z only, see below)
--length bytes of data (may be 0 bytes if length was 0)
--4 bytes of CRC, computed on chunk name + data
-
-The first chunk starts at the 8th byte of the PNG file, the entire rest of the file
-exists out of concatenated chunks with the above format.
-
-PNG standard chunk ASCII naming conventions:
--First byte: uppercase = critical, lowercase = ancillary
--Second byte: uppercase = public, lowercase = private
--Third byte: must be uppercase
--Fourth byte: uppercase = unsafe to copy, lowercase = safe to copy
-*/
-
-/*
-Gets the length of the data of the chunk. Total chunk length has 12 bytes more.
-There must be at least 4 bytes to read from. If the result value is too large,
-it may be corrupt data.
-*/
-unsigned lodepng_chunk_length(const unsigned char* chunk);
-
-/*puts the 4-byte type in null terminated string*/
-void lodepng_chunk_type(char type[5], const unsigned char* chunk);
-
-/*check if the type is the given type*/
-unsigned char lodepng_chunk_type_equals(const unsigned char* chunk, const char* type);
-
-/*0: it's one of the critical chunk types, 1: it's an ancillary chunk (see PNG standard)*/
-unsigned char lodepng_chunk_ancillary(const unsigned char* chunk);
-
-/*0: public, 1: private (see PNG standard)*/
-unsigned char lodepng_chunk_private(const unsigned char* chunk);
-
-/*0: the chunk is unsafe to copy, 1: the chunk is safe to copy (see PNG standard)*/
-unsigned char lodepng_chunk_safetocopy(const unsigned char* chunk);
-
-/*get pointer to the data of the chunk, where the input points to the header of the chunk*/
-unsigned char* lodepng_chunk_data(unsigned char* chunk);
-const unsigned char* lodepng_chunk_data_const(const unsigned char* chunk);
-
-/*returns 0 if the crc is correct, 1 if it's incorrect (0 for OK as usual!)*/
-unsigned lodepng_chunk_check_crc(const unsigned char* chunk);
-
-/*generates the correct CRC from the data and puts it in the last 4 bytes of the chunk*/
-void lodepng_chunk_generate_crc(unsigned char* chunk);
-
-/*
-Iterate to next chunks, allows iterating through all chunks of the PNG file.
-Input must be at the beginning of a chunk (result of a previous lodepng_chunk_next call,
-or the 8th byte of a PNG file which always has the first chunk), or alternatively may
-point to the first byte of the PNG file (which is not a chunk but the magic header, the
-function will then skip over it and return the first real chunk).
-Expects at least 8 readable bytes of memory in the input pointer.
-Will output pointer to the start of the next chunk or the end of the file if there
-is no more chunk after this. Start this process at the 8th byte of the PNG file.
-In a non-corrupt PNG file, the last chunk should have name "IEND".
-*/
-unsigned char* lodepng_chunk_next(unsigned char* chunk);
-const unsigned char* lodepng_chunk_next_const(const unsigned char* chunk);
-
-/*Finds the first chunk with the given type in the range [chunk, end), or returns NULL if not found.*/
-unsigned char* lodepng_chunk_find(unsigned char* chunk, const unsigned char* end, const char type[5]);
-const unsigned char* lodepng_chunk_find_const(const unsigned char* chunk, const unsigned char* end, const char type[5]);
-
-/*
-Appends chunk to the data in out. The given chunk should already have its chunk header.
-The out variable and outlength are updated to reflect the new reallocated buffer.
-Returns error code (0 if it went ok)
-*/
-unsigned lodepng_chunk_append(unsigned char** out, size_t* outlength, const unsigned char* chunk);
-
-/*
-Appends new chunk to out. The chunk to append is given by giving its length, type
-and data separately. The type is a 4-letter string.
-The out variable and outlength are updated to reflect the new reallocated buffer.
-Returne error code (0 if it went ok)
-*/
-unsigned lodepng_chunk_create(unsigned char** out, size_t* outlength, unsigned length,
- const char* type, const unsigned char* data);
-
-
-/*Calculate CRC32 of buffer*/
-unsigned lodepng_crc32(const unsigned char* buf, size_t len);
-#endif /*LODEPNG_COMPILE_PNG*/
-
-
-#ifdef LODEPNG_COMPILE_ZLIB
-/*
-This zlib part can be used independently to zlib compress and decompress a
-buffer. It cannot be used to create gzip files however, and it only supports the
-part of zlib that is required for PNG, it does not support dictionaries.
-*/
-
-#ifdef LODEPNG_COMPILE_DECODER
-/*Inflate a buffer. Inflate is the decompression step of deflate. Out buffer must be freed after use.*/
-unsigned lodepng_inflate(unsigned char** out, size_t* outsize,
- const unsigned char* in, size_t insize,
- const LodePNGDecompressSettings* settings);
-
-/*
-Decompresses Zlib data. Reallocates the out buffer and appends the data. The
-data must be according to the zlib specification.
-Either, *out must be NULL and *outsize must be 0, or, *out must be a valid
-buffer and *outsize its size in bytes. out must be freed by user after usage.
-*/
-unsigned lodepng_zlib_decompress(unsigned char** out, size_t* outsize,
- const unsigned char* in, size_t insize,
- const LodePNGDecompressSettings* settings);
-#endif /*LODEPNG_COMPILE_DECODER*/
-
-#ifdef LODEPNG_COMPILE_ENCODER
-/*
-Compresses data with Zlib. Reallocates the out buffer and appends the data.
-Zlib adds a small header and trailer around the deflate data.
-The data is output in the format of the zlib specification.
-Either, *out must be NULL and *outsize must be 0, or, *out must be a valid
-buffer and *outsize its size in bytes. out must be freed by user after usage.
-*/
-unsigned lodepng_zlib_compress(unsigned char** out, size_t* outsize,
- const unsigned char* in, size_t insize,
- const LodePNGCompressSettings* settings);
-
-/*
-Find length-limited Huffman code for given frequencies. This function is in the
-public interface only for tests, it's used internally by lodepng_deflate.
-*/
-unsigned lodepng_huffman_code_lengths(unsigned* lengths, const unsigned* frequencies,
- size_t numcodes, unsigned maxbitlen);
-
-/*Compress a buffer with deflate. See RFC 1951. Out buffer must be freed after use.*/
-unsigned lodepng_deflate(unsigned char** out, size_t* outsize,
- const unsigned char* in, size_t insize,
- const LodePNGCompressSettings* settings);
-
-#endif /*LODEPNG_COMPILE_ENCODER*/
-#endif /*LODEPNG_COMPILE_ZLIB*/
-
-#ifdef LODEPNG_COMPILE_DISK
-/*
-Load a file from disk into buffer. The function allocates the out buffer, and
-after usage you should free it.
-out: output parameter, contains pointer to loaded buffer.
-outsize: output parameter, size of the allocated out buffer
-filename: the path to the file to load
-return value: error code (0 means ok)
-*/
-unsigned lodepng_load_file(unsigned char** out, size_t* outsize, const char* filename);
-
-/*
-Save a file from buffer to disk. Warning, if it exists, this function overwrites
-the file without warning!
-buffer: the buffer to write
-buffersize: size of the buffer to write
-filename: the path to the file to save to
-return value: error code (0 means ok)
-*/
-unsigned lodepng_save_file(const unsigned char* buffer, size_t buffersize, const char* filename);
-#endif /*LODEPNG_COMPILE_DISK*/
-
-#ifdef LODEPNG_COMPILE_CPP
-/* The LodePNG C++ wrapper uses std::vectors instead of manually allocated memory buffers. */
-namespace lodepng {
-#ifdef LODEPNG_COMPILE_PNG
-class State : public LodePNGState {
- public:
- State();
- State(const State& other);
- virtual ~State();
- State& operator=(const State& other);
-};
-
-#ifdef LODEPNG_COMPILE_DECODER
-/* Same as other lodepng::decode, but using a State for more settings and information. */
-unsigned decode(std::vector<unsigned char>& out, unsigned& w, unsigned& h,
- State& state,
- const unsigned char* in, size_t insize);
-unsigned decode(std::vector<unsigned char>& out, unsigned& w, unsigned& h,
- State& state,
- const std::vector<unsigned char>& in);
-#endif /*LODEPNG_COMPILE_DECODER*/
-
-#ifdef LODEPNG_COMPILE_ENCODER
-/* Same as other lodepng::encode, but using a State for more settings and information. */
-unsigned encode(std::vector<unsigned char>& out,
- const unsigned char* in, unsigned w, unsigned h,
- State& state);
-unsigned encode(std::vector<unsigned char>& out,
- const std::vector<unsigned char>& in, unsigned w, unsigned h,
- State& state);
-#endif /*LODEPNG_COMPILE_ENCODER*/
-
-#ifdef LODEPNG_COMPILE_DISK
-/*
-Load a file from disk into an std::vector.
-return value: error code (0 means ok)
-*/
-unsigned load_file(std::vector<unsigned char>& buffer, const std::string& filename);
-
-/*
-Save the binary data in an std::vector to a file on disk. The file is overwritten
-without warning.
-*/
-unsigned save_file(const std::vector<unsigned char>& buffer, const std::string& filename);
-#endif /* LODEPNG_COMPILE_DISK */
-#endif /* LODEPNG_COMPILE_PNG */
-
-#ifdef LODEPNG_COMPILE_ZLIB
-#ifdef LODEPNG_COMPILE_DECODER
-/* Zlib-decompress an unsigned char buffer */
-unsigned decompress(std::vector<unsigned char>& out, const unsigned char* in, size_t insize,
- const LodePNGDecompressSettings& settings = lodepng_default_decompress_settings);
-
-/* Zlib-decompress an std::vector */
-unsigned decompress(std::vector<unsigned char>& out, const std::vector<unsigned char>& in,
- const LodePNGDecompressSettings& settings = lodepng_default_decompress_settings);
-#endif /* LODEPNG_COMPILE_DECODER */
-
-#ifdef LODEPNG_COMPILE_ENCODER
-/* Zlib-compress an unsigned char buffer */
-unsigned compress(std::vector<unsigned char>& out, const unsigned char* in, size_t insize,
- const LodePNGCompressSettings& settings = lodepng_default_compress_settings);
-
-/* Zlib-compress an std::vector */
-unsigned compress(std::vector<unsigned char>& out, const std::vector<unsigned char>& in,
- const LodePNGCompressSettings& settings = lodepng_default_compress_settings);
-#endif /* LODEPNG_COMPILE_ENCODER */
-#endif /* LODEPNG_COMPILE_ZLIB */
-} /* namespace lodepng */
-#endif /*LODEPNG_COMPILE_CPP*/
-
-/*
-TODO:
-[.] test if there are no memory leaks or security exploits - done a lot but needs to be checked often
-[.] check compatibility with various compilers - done but needs to be redone for every newer version
-[X] converting color to 16-bit per channel types
-[X] support color profile chunk types (but never let them touch RGB values by default)
-[ ] support all public PNG chunk types (almost done except sBIT, sPLT and hIST)
-[ ] make sure encoder generates no chunks with size > (2^31)-1
-[ ] partial decoding (stream processing)
-[X] let the "isFullyOpaque" function check color keys and transparent palettes too
-[X] better name for the variables "codes", "codesD", "codelengthcodes", "clcl" and "lldl"
-[ ] allow treating some errors like warnings, when image is recoverable (e.g. 69, 57, 58)
-[ ] make warnings like: oob palette, checksum fail, data after iend, wrong/unknown crit chunk, no null terminator in text, ...
-[ ] error messages with line numbers (and version)
-[ ] errors in state instead of as return code?
-[ ] new errors/warnings like suspiciously big decompressed ztxt or iccp chunk
-[ ] let the C++ wrapper catch exceptions coming from the standard library and return LodePNG error codes
-[ ] allow user to provide custom color conversion functions, e.g. for premultiplied alpha, padding bits or not, ...
-[ ] allow user to give data (void*) to custom allocator
-[ ] provide alternatives for C library functions not present on some platforms (memcpy, ...)
-[ ] rename "grey" to "gray" everywhere since "color" also uses US spelling (keep "grey" copies for backwards compatibility)
-*/
-
-#endif /*LODEPNG_H inclusion guard*/
-
-/*
-LodePNG Documentation
----------------------
-
-0. table of contents
---------------------
-
- 1. about
- 1.1. supported features
- 1.2. features not supported
- 2. C and C++ version
- 3. security
- 4. decoding
- 5. encoding
- 6. color conversions
- 6.1. PNG color types
- 6.2. color conversions
- 6.3. padding bits
- 6.4. A note about 16-bits per channel and endianness
- 7. error values
- 8. chunks and PNG editing
- 9. compiler support
- 10. examples
- 10.1. decoder C++ example
- 10.2. decoder C example
- 11. state settings reference
- 12. changes
- 13. contact information
-
-
-1. about
---------
-
-PNG is a file format to store raster images losslessly with good compression,
-supporting different color types and alpha channel.
-
-LodePNG is a PNG codec according to the Portable Network Graphics (PNG)
-Specification (Second Edition) - W3C Recommendation 10 November 2003.
-
-The specifications used are:
-
-*) Portable Network Graphics (PNG) Specification (Second Edition):
- http://www.w3.org/TR/2003/REC-PNG-20031110
-*) RFC 1950 ZLIB Compressed Data Format version 3.3:
- http://www.gzip.org/zlib/rfc-zlib.html
-*) RFC 1951 DEFLATE Compressed Data Format Specification ver 1.3:
- http://www.gzip.org/zlib/rfc-deflate.html
-
-The most recent version of LodePNG can currently be found at
-http://lodev.org/lodepng/
-
-LodePNG works both in C (ISO C90) and C++, with a C++ wrapper that adds
-extra functionality.
-
-LodePNG exists out of two files:
--lodepng.h: the header file for both C and C++
--lodepng.c(pp): give it the name lodepng.c or lodepng.cpp (or .cc) depending on your usage
-
-If you want to start using LodePNG right away without reading this doc, get the
-examples from the LodePNG website to see how to use it in code, or check the
-smaller examples in chapter 13 here.
-
-LodePNG is simple but only supports the basic requirements. To achieve
-simplicity, the following design choices were made: There are no dependencies
-on any external library. There are functions to decode and encode a PNG with
-a single function call, and extended versions of these functions taking a
-LodePNGState struct allowing to specify or get more information. By default
-the colors of the raw image are always RGB or RGBA, no matter what color type
-the PNG file uses. To read and write files, there are simple functions to
-convert the files to/from buffers in memory.
-
-This all makes LodePNG suitable for loading textures in games, demos and small
-programs, ... It's less suitable for full fledged image editors, loading PNGs
-over network (it requires all the image data to be available before decoding can
-begin), life-critical systems, ...
-
-1.1. supported features
------------------------
-
-The following features are supported by the decoder:
-
-*) decoding of PNGs with any color type, bit depth and interlace mode, to a 24- or 32-bit color raw image,
- or the same color type as the PNG
-*) encoding of PNGs, from any raw image to 24- or 32-bit color, or the same color type as the raw image
-*) Adam7 interlace and deinterlace for any color type
-*) loading the image from harddisk or decoding it from a buffer from other sources than harddisk
-*) support for alpha channels, including RGBA color model, translucent palettes and color keying
-*) zlib decompression (inflate)
-*) zlib compression (deflate)
-*) CRC32 and ADLER32 checksums
-*) colorimetric color profile conversions: currently experimentally available in lodepng_util.cpp only,
- plus alternatively ability to pass on chroma/gamma/ICC profile information to other color management system.
-*) handling of unknown chunks, allowing making a PNG editor that stores custom and unknown chunks.
-*) the following chunks are supported by both encoder and decoder:
- IHDR: header information
- PLTE: color palette
- IDAT: pixel data
- IEND: the final chunk
- tRNS: transparency for palettized images
- tEXt: textual information
- zTXt: compressed textual information
- iTXt: international textual information
- bKGD: suggested background color
- pHYs: physical dimensions
- tIME: modification time
- cHRM: RGB chromaticities
- gAMA: RGB gamma correction
- iCCP: ICC color profile
- sRGB: rendering intent
-
-1.2. features not supported
----------------------------
-
-The following features are _not_ supported:
-
-*) some features needed to make a conformant PNG-Editor might be still missing.
-*) partial loading/stream processing. All data must be available and is processed in one call.
-*) The following public chunks are not (yet) supported but treated as unknown chunks by LodePNG:
- sBIT
- hIST
- sPLT
-
-
-2. C and C++ version
---------------------
-
-The C version uses buffers allocated with alloc that you need to free()
-yourself. You need to use init and cleanup functions for each struct whenever
-using a struct from the C version to avoid exploits and memory leaks.
-
-The C++ version has extra functions with std::vectors in the interface and the
-lodepng::State class which is a LodePNGState with constructor and destructor.
-
-These files work without modification for both C and C++ compilers because all
-the additional C++ code is in "#ifdef __cplusplus" blocks that make C-compilers
-ignore it, and the C code is made to compile both with strict ISO C90 and C++.
-
-To use the C++ version, you need to rename the source file to lodepng.cpp
-(instead of lodepng.c), and compile it with a C++ compiler.
-
-To use the C version, you need to rename the source file to lodepng.c (instead
-of lodepng.cpp), and compile it with a C compiler.
-
-
-3. Security
------------
-
-Even if carefully designed, it's always possible that LodePNG contains possible
-exploits. If you discover one, please let me know, and it will be fixed.
-
-When using LodePNG, care has to be taken with the C version of LodePNG, as well
-as the C-style structs when working with C++. The following conventions are used
-for all C-style structs:
-
--if a struct has a corresponding init function, always call the init function when making a new one
--if a struct has a corresponding cleanup function, call it before the struct disappears to avoid memory leaks
--if a struct has a corresponding copy function, use the copy function instead of "=".
- The destination must also be inited already.
-
-
-4. Decoding
------------
-
-Decoding converts a PNG compressed image to a raw pixel buffer.
-
-Most documentation on using the decoder is at its declarations in the header
-above. For C, simple decoding can be done with functions such as
-lodepng_decode32, and more advanced decoding can be done with the struct
-LodePNGState and lodepng_decode. For C++, all decoding can be done with the
-various lodepng::decode functions, and lodepng::State can be used for advanced
-features.
-
-When using the LodePNGState, it uses the following fields for decoding:
-*) LodePNGInfo info_png: it stores extra information about the PNG (the input) in here
-*) LodePNGColorMode info_raw: here you can say what color mode of the raw image (the output) you want to get
-*) LodePNGDecoderSettings decoder: you can specify a few extra settings for the decoder to use
-
-LodePNGInfo info_png
---------------------
-
-After decoding, this contains extra information of the PNG image, except the actual
-pixels, width and height because these are already gotten directly from the decoder
-functions.
-
-It contains for example the original color type of the PNG image, text comments,
-suggested background color, etc... More details about the LodePNGInfo struct are
-at its declaration documentation.
-
-LodePNGColorMode info_raw
--------------------------
-
-When decoding, here you can specify which color type you want
-the resulting raw image to be. If this is different from the colortype of the
-PNG, then the decoder will automatically convert the result. This conversion
-always works, except if you want it to convert a color PNG to grayscale or to
-a palette with missing colors.
-
-By default, 32-bit color is used for the result.
-
-LodePNGDecoderSettings decoder
-------------------------------
-
-The settings can be used to ignore the errors created by invalid CRC and Adler32
-chunks, and to disable the decoding of tEXt chunks.
-
-There's also a setting color_convert, true by default. If false, no conversion
-is done, the resulting data will be as it was in the PNG (after decompression)
-and you'll have to puzzle the colors of the pixels together yourself using the
-color type information in the LodePNGInfo.
-
-
-5. Encoding
------------
-
-Encoding converts a raw pixel buffer to a PNG compressed image.
-
-Most documentation on using the encoder is at its declarations in the header
-above. For C, simple encoding can be done with functions such as
-lodepng_encode32, and more advanced decoding can be done with the struct
-LodePNGState and lodepng_encode. For C++, all encoding can be done with the
-various lodepng::encode functions, and lodepng::State can be used for advanced
-features.
-
-Like the decoder, the encoder can also give errors. However it gives less errors
-since the encoder input is trusted, the decoder input (a PNG image that could
-be forged by anyone) is not trusted.
-
-When using the LodePNGState, it uses the following fields for encoding:
-*) LodePNGInfo info_png: here you specify how you want the PNG (the output) to be.
-*) LodePNGColorMode info_raw: here you say what color type of the raw image (the input) has
-*) LodePNGEncoderSettings encoder: you can specify a few settings for the encoder to use
-
-LodePNGInfo info_png
---------------------
-
-When encoding, you use this the opposite way as when decoding: for encoding,
-you fill in the values you want the PNG to have before encoding. By default it's
-not needed to specify a color type for the PNG since it's automatically chosen,
-but it's possible to choose it yourself given the right settings.
-
-The encoder will not always exactly match the LodePNGInfo struct you give,
-it tries as close as possible. Some things are ignored by the encoder. The
-encoder uses, for example, the following settings from it when applicable:
-colortype and bitdepth, text chunks, time chunk, the color key, the palette, the
-background color, the interlace method, unknown chunks, ...
-
-When encoding to a PNG with colortype 3, the encoder will generate a PLTE chunk.
-If the palette contains any colors for which the alpha channel is not 255 (so
-there are translucent colors in the palette), it'll add a tRNS chunk.
-
-LodePNGColorMode info_raw
--------------------------
-
-You specify the color type of the raw image that you give to the input here,
-including a possible transparent color key and palette you happen to be using in
-your raw image data.
-
-By default, 32-bit color is assumed, meaning your input has to be in RGBA
-format with 4 bytes (unsigned chars) per pixel.
-
-LodePNGEncoderSettings encoder
-------------------------------
-
-The following settings are supported (some are in sub-structs):
-*) auto_convert: when this option is enabled, the encoder will
-automatically choose the smallest possible color mode (including color key) that
-can encode the colors of all pixels without information loss.
-*) btype: the block type for LZ77. 0 = uncompressed, 1 = fixed huffman tree,
- 2 = dynamic huffman tree (best compression). Should be 2 for proper
- compression.
-*) use_lz77: whether or not to use LZ77 for compressed block types. Should be
- true for proper compression.
-*) windowsize: the window size used by the LZ77 encoder (1 - 32768). Has value
- 2048 by default, but can be set to 32768 for better, but slow, compression.
-*) force_palette: if colortype is 2 or 6, you can make the encoder write a PLTE
- chunk if force_palette is true. This can used as suggested palette to convert
- to by viewers that don't support more than 256 colors (if those still exist)
-*) add_id: add text chunk "Encoder: LodePNG <version>" to the image.
-*) text_compression: default 1. If 1, it'll store texts as zTXt instead of tEXt chunks.
- zTXt chunks use zlib compression on the text. This gives a smaller result on
- large texts but a larger result on small texts (such as a single program name).
- It's all tEXt or all zTXt though, there's no separate setting per text yet.
-
-
-6. color conversions
---------------------
-
-An important thing to note about LodePNG, is that the color type of the PNG, and
-the color type of the raw image, are completely independent. By default, when
-you decode a PNG, you get the result as a raw image in the color type you want,
-no matter whether the PNG was encoded with a palette, grayscale or RGBA color.
-And if you encode an image, by default LodePNG will automatically choose the PNG
-color type that gives good compression based on the values of colors and amount
-of colors in the image. It can be configured to let you control it instead as
-well, though.
-
-To be able to do this, LodePNG does conversions from one color mode to another.
-It can convert from almost any color type to any other color type, except the
-following conversions: RGB to grayscale is not supported, and converting to a
-palette when the palette doesn't have a required color is not supported. This is
-not supported on purpose: this is information loss which requires a color
-reduction algorithm that is beyong the scope of a PNG encoder (yes, RGB to gray
-is easy, but there are multiple ways if you want to give some channels more
-weight).
-
-By default, when decoding, you get the raw image in 32-bit RGBA or 24-bit RGB
-color, no matter what color type the PNG has. And by default when encoding,
-LodePNG automatically picks the best color model for the output PNG, and expects
-the input image to be 32-bit RGBA or 24-bit RGB. So, unless you want to control
-the color format of the images yourself, you can skip this chapter.
-
-6.1. PNG color types
---------------------
-
-A PNG image can have many color types, ranging from 1-bit color to 64-bit color,
-as well as palettized color modes. After the zlib decompression and unfiltering
-in the PNG image is done, the raw pixel data will have that color type and thus
-a certain amount of bits per pixel. If you want the output raw image after
-decoding to have another color type, a conversion is done by LodePNG.
-
-The PNG specification gives the following color types:
-
-0: grayscale, bit depths 1, 2, 4, 8, 16
-2: RGB, bit depths 8 and 16
-3: palette, bit depths 1, 2, 4 and 8
-4: grayscale with alpha, bit depths 8 and 16
-6: RGBA, bit depths 8 and 16
-
-Bit depth is the amount of bits per pixel per color channel. So the total amount
-of bits per pixel is: amount of channels * bitdepth.
-
-6.2. color conversions
-----------------------
-
-As explained in the sections about the encoder and decoder, you can specify
-color types and bit depths in info_png and info_raw to change the default
-behaviour.
-
-If, when decoding, you want the raw image to be something else than the default,
-you need to set the color type and bit depth you want in the LodePNGColorMode,
-or the parameters colortype and bitdepth of the simple decoding function.
-
-If, when encoding, you use another color type than the default in the raw input
-image, you need to specify its color type and bit depth in the LodePNGColorMode
-of the raw image, or use the parameters colortype and bitdepth of the simple
-encoding function.
-
-If, when encoding, you don't want LodePNG to choose the output PNG color type
-but control it yourself, you need to set auto_convert in the encoder settings
-to false, and specify the color type you want in the LodePNGInfo of the
-encoder (including palette: it can generate a palette if auto_convert is true,
-otherwise not).
-
-If the input and output color type differ (whether user chosen or auto chosen),
-LodePNG will do a color conversion, which follows the rules below, and may
-sometimes result in an error.
-
-To avoid some confusion:
--the decoder converts from PNG to raw image
--the encoder converts from raw image to PNG
--the colortype and bitdepth in LodePNGColorMode info_raw, are those of the raw image
--the colortype and bitdepth in the color field of LodePNGInfo info_png, are those of the PNG
--when encoding, the color type in LodePNGInfo is ignored if auto_convert
- is enabled, it is automatically generated instead
--when decoding, the color type in LodePNGInfo is set by the decoder to that of the original
- PNG image, but it can be ignored since the raw image has the color type you requested instead
--if the color type of the LodePNGColorMode and PNG image aren't the same, a conversion
- between the color types is done if the color types are supported. If it is not
- supported, an error is returned. If the types are the same, no conversion is done.
--even though some conversions aren't supported, LodePNG supports loading PNGs from any
- colortype and saving PNGs to any colortype, sometimes it just requires preparing
- the raw image correctly before encoding.
--both encoder and decoder use the same color converter.
-
-The function lodepng_convert does the color conversion. It is available in the
-interface but normally isn't needed since the encoder and decoder already call
-it.
-
-Non supported color conversions:
--color to grayscale when non-gray pixels are present: no error is thrown, but
-the result will look ugly because only the red channel is taken (it assumes all
-three channels are the same in this case so ignores green and blue). The reason
-no error is given is to allow converting from three-channel grayscale images to
-one-channel even if there are numerical imprecisions.
--anything to palette when the palette does not have an exact match for a from-color
-in it: in this case an error is thrown
-
-Supported color conversions:
--anything to 8-bit RGB, 8-bit RGBA, 16-bit RGB, 16-bit RGBA
--any gray or gray+alpha, to gray or gray+alpha
--anything to a palette, as long as the palette has the requested colors in it
--removing alpha channel
--higher to smaller bitdepth, and vice versa
-
-If you want no color conversion to be done (e.g. for speed or control):
--In the encoder, you can make it save a PNG with any color type by giving the
-raw color mode and LodePNGInfo the same color mode, and setting auto_convert to
-false.
--In the decoder, you can make it store the pixel data in the same color type
-as the PNG has, by setting the color_convert setting to false. Settings in
-info_raw are then ignored.
-
-6.3. padding bits
------------------
-
-In the PNG file format, if a less than 8-bit per pixel color type is used and the scanlines
-have a bit amount that isn't a multiple of 8, then padding bits are used so that each
-scanline starts at a fresh byte. But that is NOT true for the LodePNG raw input and output.
-The raw input image you give to the encoder, and the raw output image you get from the decoder
-will NOT have these padding bits, e.g. in the case of a 1-bit image with a width
-of 7 pixels, the first pixel of the second scanline will the the 8th bit of the first byte,
-not the first bit of a new byte.
-
-6.4. A note about 16-bits per channel and endianness
-----------------------------------------------------
-
-LodePNG uses unsigned char arrays for 16-bit per channel colors too, just like
-for any other color format. The 16-bit values are stored in big endian (most
-significant byte first) in these arrays. This is the opposite order of the
-little endian used by x86 CPU's.
-
-LodePNG always uses big endian because the PNG file format does so internally.
-Conversions to other formats than PNG uses internally are not supported by
-LodePNG on purpose, there are myriads of formats, including endianness of 16-bit
-colors, the order in which you store R, G, B and A, and so on. Supporting and
-converting to/from all that is outside the scope of LodePNG.
-
-This may mean that, depending on your use case, you may want to convert the big
-endian output of LodePNG to little endian with a for loop. This is certainly not
-always needed, many applications and libraries support big endian 16-bit colors
-anyway, but it means you cannot simply cast the unsigned char* buffer to an
-unsigned short* buffer on x86 CPUs.
-
-
-7. error values
----------------
-
-All functions in LodePNG that return an error code, return 0 if everything went
-OK, or a non-zero code if there was an error.
-
-The meaning of the LodePNG error values can be retrieved with the function
-lodepng_error_text: given the numerical error code, it returns a description
-of the error in English as a string.
-
-Check the implementation of lodepng_error_text to see the meaning of each code.
-
-
-8. chunks and PNG editing
--------------------------
-
-If you want to add extra chunks to a PNG you encode, or use LodePNG for a PNG
-editor that should follow the rules about handling of unknown chunks, or if your
-program is able to read other types of chunks than the ones handled by LodePNG,
-then that's possible with the chunk functions of LodePNG.
-
-A PNG chunk has the following layout:
-
-4 bytes length
-4 bytes type name
-length bytes data
-4 bytes CRC
-
-8.1. iterating through chunks
------------------------------
-
-If you have a buffer containing the PNG image data, then the first chunk (the
-IHDR chunk) starts at byte number 8 of that buffer. The first 8 bytes are the
-signature of the PNG and are not part of a chunk. But if you start at byte 8
-then you have a chunk, and can check the following things of it.
-
-NOTE: none of these functions check for memory buffer boundaries. To avoid
-exploits, always make sure the buffer contains all the data of the chunks.
-When using lodepng_chunk_next, make sure the returned value is within the
-allocated memory.
-
-unsigned lodepng_chunk_length(const unsigned char* chunk):
-
-Get the length of the chunk's data. The total chunk length is this length + 12.
-
-void lodepng_chunk_type(char type[5], const unsigned char* chunk):
-unsigned char lodepng_chunk_type_equals(const unsigned char* chunk, const char* type):
-
-Get the type of the chunk or compare if it's a certain type
-
-unsigned char lodepng_chunk_critical(const unsigned char* chunk):
-unsigned char lodepng_chunk_private(const unsigned char* chunk):
-unsigned char lodepng_chunk_safetocopy(const unsigned char* chunk):
-
-Check if the chunk is critical in the PNG standard (only IHDR, PLTE, IDAT and IEND are).
-Check if the chunk is private (public chunks are part of the standard, private ones not).
-Check if the chunk is safe to copy. If it's not, then, when modifying data in a critical
-chunk, unsafe to copy chunks of the old image may NOT be saved in the new one if your
-program doesn't handle that type of unknown chunk.
-
-unsigned char* lodepng_chunk_data(unsigned char* chunk):
-const unsigned char* lodepng_chunk_data_const(const unsigned char* chunk):
-
-Get a pointer to the start of the data of the chunk.
-
-unsigned lodepng_chunk_check_crc(const unsigned char* chunk):
-void lodepng_chunk_generate_crc(unsigned char* chunk):
-
-Check if the crc is correct or generate a correct one.
-
-unsigned char* lodepng_chunk_next(unsigned char* chunk):
-const unsigned char* lodepng_chunk_next_const(const unsigned char* chunk):
-
-Iterate to the next chunk. This works if you have a buffer with consecutive chunks. Note that these
-functions do no boundary checking of the allocated data whatsoever, so make sure there is enough
-data available in the buffer to be able to go to the next chunk.
-
-unsigned lodepng_chunk_append(unsigned char** out, size_t* outlength, const unsigned char* chunk):
-unsigned lodepng_chunk_create(unsigned char** out, size_t* outlength, unsigned length,
- const char* type, const unsigned char* data):
-
-These functions are used to create new chunks that are appended to the data in *out that has
-length *outlength. The append function appends an existing chunk to the new data. The create
-function creates a new chunk with the given parameters and appends it. Type is the 4-letter
-name of the chunk.
-
-8.2. chunks in info_png
------------------------
-
-The LodePNGInfo struct contains fields with the unknown chunk in it. It has 3
-buffers (each with size) to contain 3 types of unknown chunks:
-the ones that come before the PLTE chunk, the ones that come between the PLTE
-and the IDAT chunks, and the ones that come after the IDAT chunks.
-It's necessary to make the distionction between these 3 cases because the PNG
-standard forces to keep the ordering of unknown chunks compared to the critical
-chunks, but does not force any other ordering rules.
-
-info_png.unknown_chunks_data[0] is the chunks before PLTE
-info_png.unknown_chunks_data[1] is the chunks after PLTE, before IDAT
-info_png.unknown_chunks_data[2] is the chunks after IDAT
-
-The chunks in these 3 buffers can be iterated through and read by using the same
-way described in the previous subchapter.
-
-When using the decoder to decode a PNG, you can make it store all unknown chunks
-if you set the option settings.remember_unknown_chunks to 1. By default, this
-option is off (0).
-
-The encoder will always encode unknown chunks that are stored in the info_png.
-If you need it to add a particular chunk that isn't known by LodePNG, you can
-use lodepng_chunk_append or lodepng_chunk_create to the chunk data in
-info_png.unknown_chunks_data[x].
-
-Chunks that are known by LodePNG should not be added in that way. E.g. to make
-LodePNG add a bKGD chunk, set background_defined to true and add the correct
-parameters there instead.
-
-
-9. compiler support
--------------------
-
-No libraries other than the current standard C library are needed to compile
-LodePNG. For the C++ version, only the standard C++ library is needed on top.
-Add the files lodepng.c(pp) and lodepng.h to your project, include
-lodepng.h where needed, and your program can read/write PNG files.
-
-It is compatible with C90 and up, and C++03 and up.
-
-If performance is important, use optimization when compiling! For both the
-encoder and decoder, this makes a large difference.
-
-Make sure that LodePNG is compiled with the same compiler of the same version
-and with the same settings as the rest of the program, or the interfaces with
-std::vectors and std::strings in C++ can be incompatible.
-
-CHAR_BITS must be 8 or higher, because LodePNG uses unsigned chars for octets.
-
-*) gcc and g++
-
-LodePNG is developed in gcc so this compiler is natively supported. It gives no
-warnings with compiler options "-Wall -Wextra -pedantic -ansi", with gcc and g++
-version 4.7.1 on Linux, 32-bit and 64-bit.
-
-*) Clang
-
-Fully supported and warning-free.
-
-*) Mingw
-
-The Mingw compiler (a port of gcc for Windows) should be fully supported by
-LodePNG.
-
-*) Visual Studio and Visual C++ Express Edition
-
-LodePNG should be warning-free with warning level W4. Two warnings were disabled
-with pragmas though: warning 4244 about implicit conversions, and warning 4996
-where it wants to use a non-standard function fopen_s instead of the standard C
-fopen.
-
-Visual Studio may want "stdafx.h" files to be included in each source file and
-give an error "unexpected end of file while looking for precompiled header".
-This is not standard C++ and will not be added to the stock LodePNG. You can
-disable it for lodepng.cpp only by right clicking it, Properties, C/C++,
-Precompiled Headers, and set it to Not Using Precompiled Headers there.
-
-NOTE: Modern versions of VS should be fully supported, but old versions, e.g.
-VS6, are not guaranteed to work.
-
-*) Compilers on Macintosh
-
-LodePNG has been reported to work both with gcc and LLVM for Macintosh, both for
-C and C++.
-
-*) Other Compilers
-
-If you encounter problems on any compilers, feel free to let me know and I may
-try to fix it if the compiler is modern and standards complient.
-
-
-10. examples
-------------
-
-This decoder example shows the most basic usage of LodePNG. More complex
-examples can be found on the LodePNG website.
-
-10.1. decoder C++ example
--------------------------
-
-#include "lodepng.h"
-#include <iostream>
-
-int main(int argc, char *argv[]) {
- const char* filename = argc > 1 ? argv[1] : "test.png";
-
- //load and decode
- std::vector<unsigned char> image;
- unsigned width, height;
- unsigned error = lodepng::decode(image, width, height, filename);
-
- //if there's an error, display it
- if(error) std::cout << "decoder error " << error << ": " << lodepng_error_text(error) << std::endl;
-
- //the pixels are now in the vector "image", 4 bytes per pixel, ordered RGBARGBA..., use it as texture, draw it, ...
-}
-
-10.2. decoder C example
------------------------
-
-#include "lodepng.h"
-
-int main(int argc, char *argv[]) {
- unsigned error;
- unsigned char* image;
- size_t width, height;
- const char* filename = argc > 1 ? argv[1] : "test.png";
-
- error = lodepng_decode32_file(&image, &width, &height, filename);
-
- if(error) printf("decoder error %u: %s\n", error, lodepng_error_text(error));
-
- / * use image here * /
-
- free(image);
- return 0;
-}
-
-11. state settings reference
-----------------------------
-
-A quick reference of some settings to set on the LodePNGState
-
-For decoding:
-
-state.decoder.zlibsettings.ignore_adler32: ignore ADLER32 checksums
-state.decoder.zlibsettings.custom_...: use custom inflate function
-state.decoder.ignore_crc: ignore CRC checksums
-state.decoder.ignore_critical: ignore unknown critical chunks
-state.decoder.ignore_end: ignore missing IEND chunk. May fail if this corruption causes other errors
-state.decoder.color_convert: convert internal PNG color to chosen one
-state.decoder.read_text_chunks: whether to read in text metadata chunks
-state.decoder.remember_unknown_chunks: whether to read in unknown chunks
-state.info_raw.colortype: desired color type for decoded image
-state.info_raw.bitdepth: desired bit depth for decoded image
-state.info_raw....: more color settings, see struct LodePNGColorMode
-state.info_png....: no settings for decoder but ouput, see struct LodePNGInfo
-
-For encoding:
-
-state.encoder.zlibsettings.btype: disable compression by setting it to 0
-state.encoder.zlibsettings.use_lz77: use LZ77 in compression
-state.encoder.zlibsettings.windowsize: tweak LZ77 windowsize
-state.encoder.zlibsettings.minmatch: tweak min LZ77 length to match
-state.encoder.zlibsettings.nicematch: tweak LZ77 match where to stop searching
-state.encoder.zlibsettings.lazymatching: try one more LZ77 matching
-state.encoder.zlibsettings.custom_...: use custom deflate function
-state.encoder.auto_convert: choose optimal PNG color type, if 0 uses info_png
-state.encoder.filter_palette_zero: PNG filter strategy for palette
-state.encoder.filter_strategy: PNG filter strategy to encode with
-state.encoder.force_palette: add palette even if not encoding to one
-state.encoder.add_id: add LodePNG identifier and version as a text chunk
-state.encoder.text_compression: use compressed text chunks for metadata
-state.info_raw.colortype: color type of raw input image you provide
-state.info_raw.bitdepth: bit depth of raw input image you provide
-state.info_raw: more color settings, see struct LodePNGColorMode
-state.info_png.color.colortype: desired color type if auto_convert is false
-state.info_png.color.bitdepth: desired bit depth if auto_convert is false
-state.info_png.color....: more color settings, see struct LodePNGColorMode
-state.info_png....: more PNG related settings, see struct LodePNGInfo
-
-
-12. changes
------------
-
-The version number of LodePNG is the date of the change given in the format
-yyyymmdd.
-
-Some changes aren't backwards compatible. Those are indicated with a (!)
-symbol.
-
-*) 30 dec 2018: code style changes only: removed newlines before opening braces.
-*) 10 sep 2018: added way to inspect metadata chunks without full decoding.
-*) 19 aug 2018 (!): fixed color mode bKGD is encoded with and made it use
- palette index in case of palette.
-*) 10 aug 2018 (!): added support for gAMA, cHRM, sRGB and iCCP chunks. This
- change is backwards compatible unless you relied on unknown_chunks for those.
-*) 11 jun 2018: less restrictive check for pixel size integer overflow
-*) 14 jan 2018: allow optionally ignoring a few more recoverable errors
-*) 17 sep 2017: fix memory leak for some encoder input error cases
-*) 27 nov 2016: grey+alpha auto color model detection bugfix
-*) 18 apr 2016: Changed qsort to custom stable sort (for platforms w/o qsort).
-*) 09 apr 2016: Fixed colorkey usage detection, and better file loading (within
- the limits of pure C90).
-*) 08 dec 2015: Made load_file function return error if file can't be opened.
-*) 24 okt 2015: Bugfix with decoding to palette output.
-*) 18 apr 2015: Boundary PM instead of just package-merge for faster encoding.
-*) 23 aug 2014: Reduced needless memory usage of decoder.
-*) 28 jun 2014: Removed fix_png setting, always support palette OOB for
- simplicity. Made ColorProfile public.
-*) 09 jun 2014: Faster encoder by fixing hash bug and more zeros optimization.
-*) 22 dec 2013: Power of two windowsize required for optimization.
-*) 15 apr 2013: Fixed bug with LAC_ALPHA and color key.
-*) 25 mar 2013: Added an optional feature to ignore some PNG errors (fix_png).
-*) 11 mar 2013 (!): Bugfix with custom free. Changed from "my" to "lodepng_"
- prefix for the custom allocators and made it possible with a new #define to
- use custom ones in your project without needing to change lodepng's code.
-*) 28 jan 2013: Bugfix with color key.
-*) 27 okt 2012: Tweaks in text chunk keyword length error handling.
-*) 8 okt 2012 (!): Added new filter strategy (entropy) and new auto color mode.
- (no palette). Better deflate tree encoding. New compression tweak settings.
- Faster color conversions while decoding. Some internal cleanups.
-*) 23 sep 2012: Reduced warnings in Visual Studio a little bit.
-*) 1 sep 2012 (!): Removed #define's for giving custom (de)compression functions
- and made it work with function pointers instead.
-*) 23 jun 2012: Added more filter strategies. Made it easier to use custom alloc
- and free functions and toggle #defines from compiler flags. Small fixes.
-*) 6 may 2012 (!): Made plugging in custom zlib/deflate functions more flexible.
-*) 22 apr 2012 (!): Made interface more consistent, renaming a lot. Removed
- redundant C++ codec classes. Reduced amount of structs. Everything changed,
- but it is cleaner now imho and functionality remains the same. Also fixed
- several bugs and shrunk the implementation code. Made new samples.
-*) 6 nov 2011 (!): By default, the encoder now automatically chooses the best
- PNG color model and bit depth, based on the amount and type of colors of the
- raw image. For this, autoLeaveOutAlphaChannel replaced by auto_choose_color.
-*) 9 okt 2011: simpler hash chain implementation for the encoder.
-*) 8 sep 2011: lz77 encoder lazy matching instead of greedy matching.
-*) 23 aug 2011: tweaked the zlib compression parameters after benchmarking.
- A bug with the PNG filtertype heuristic was fixed, so that it chooses much
- better ones (it's quite significant). A setting to do an experimental, slow,
- brute force search for PNG filter types is added.
-*) 17 aug 2011 (!): changed some C zlib related function names.
-*) 16 aug 2011: made the code less wide (max 120 characters per line).
-*) 17 apr 2011: code cleanup. Bugfixes. Convert low to 16-bit per sample colors.
-*) 21 feb 2011: fixed compiling for C90. Fixed compiling with sections disabled.
-*) 11 dec 2010: encoding is made faster, based on suggestion by Peter Eastman
- to optimize long sequences of zeros.
-*) 13 nov 2010: added LodePNG_InfoColor_hasPaletteAlpha and
- LodePNG_InfoColor_canHaveAlpha functions for convenience.
-*) 7 nov 2010: added LodePNG_error_text function to get error code description.
-*) 30 okt 2010: made decoding slightly faster
-*) 26 okt 2010: (!) changed some C function and struct names (more consistent).
- Reorganized the documentation and the declaration order in the header.
-*) 08 aug 2010: only changed some comments and external samples.
-*) 05 jul 2010: fixed bug thanks to warnings in the new gcc version.
-*) 14 mar 2010: fixed bug where too much memory was allocated for char buffers.
-*) 02 sep 2008: fixed bug where it could create empty tree that linux apps could
- read by ignoring the problem but windows apps couldn't.
-*) 06 jun 2008: added more error checks for out of memory cases.
-*) 26 apr 2008: added a few more checks here and there to ensure more safety.
-*) 06 mar 2008: crash with encoding of strings fixed
-*) 02 feb 2008: support for international text chunks added (iTXt)
-*) 23 jan 2008: small cleanups, and #defines to divide code in sections
-*) 20 jan 2008: support for unknown chunks allowing using LodePNG for an editor.
-*) 18 jan 2008: support for tIME and pHYs chunks added to encoder and decoder.
-*) 17 jan 2008: ability to encode and decode compressed zTXt chunks added
- Also various fixes, such as in the deflate and the padding bits code.
-*) 13 jan 2008: Added ability to encode Adam7-interlaced images. Improved
- filtering code of encoder.
-*) 07 jan 2008: (!) changed LodePNG to use ISO C90 instead of C++. A
- C++ wrapper around this provides an interface almost identical to before.
- Having LodePNG be pure ISO C90 makes it more portable. The C and C++ code
- are together in these files but it works both for C and C++ compilers.
-*) 29 dec 2007: (!) changed most integer types to unsigned int + other tweaks
-*) 30 aug 2007: bug fixed which makes this Borland C++ compatible
-*) 09 aug 2007: some VS2005 warnings removed again
-*) 21 jul 2007: deflate code placed in new namespace separate from zlib code
-*) 08 jun 2007: fixed bug with 2- and 4-bit color, and small interlaced images
-*) 04 jun 2007: improved support for Visual Studio 2005: crash with accessing
- invalid std::vector element [0] fixed, and level 3 and 4 warnings removed
-*) 02 jun 2007: made the encoder add a tag with version by default
-*) 27 may 2007: zlib and png code separated (but still in the same file),
- simple encoder/decoder functions added for more simple usage cases
-*) 19 may 2007: minor fixes, some code cleaning, new error added (error 69),
- moved some examples from here to lodepng_examples.cpp
-*) 12 may 2007: palette decoding bug fixed
-*) 24 apr 2007: changed the license from BSD to the zlib license
-*) 11 mar 2007: very simple addition: ability to encode bKGD chunks.
-*) 04 mar 2007: (!) tEXt chunk related fixes, and support for encoding
- palettized PNG images. Plus little interface change with palette and texts.
-*) 03 mar 2007: Made it encode dynamic Huffman shorter with repeat codes.
- Fixed a bug where the end code of a block had length 0 in the Huffman tree.
-*) 26 feb 2007: Huffman compression with dynamic trees (BTYPE 2) now implemented
- and supported by the encoder, resulting in smaller PNGs at the output.
-*) 27 jan 2007: Made the Adler-32 test faster so that a timewaste is gone.
-*) 24 jan 2007: gave encoder an error interface. Added color conversion from any
- greyscale type to 8-bit greyscale with or without alpha.
-*) 21 jan 2007: (!) Totally changed the interface. It allows more color types
- to convert to and is more uniform. See the manual for how it works now.
-*) 07 jan 2007: Some cleanup & fixes, and a few changes over the last days:
- encode/decode custom tEXt chunks, separate classes for zlib & deflate, and
- at last made the decoder give errors for incorrect Adler32 or Crc.
-*) 01 jan 2007: Fixed bug with encoding PNGs with less than 8 bits per channel.
-*) 29 dec 2006: Added support for encoding images without alpha channel, and
- cleaned out code as well as making certain parts faster.
-*) 28 dec 2006: Added "Settings" to the encoder.
-*) 26 dec 2006: The encoder now does LZ77 encoding and produces much smaller files now.
- Removed some code duplication in the decoder. Fixed little bug in an example.
-*) 09 dec 2006: (!) Placed output parameters of public functions as first parameter.
- Fixed a bug of the decoder with 16-bit per color.
-*) 15 okt 2006: Changed documentation structure
-*) 09 okt 2006: Encoder class added. It encodes a valid PNG image from the
- given image buffer, however for now it's not compressed.
-*) 08 sep 2006: (!) Changed to interface with a Decoder class
-*) 30 jul 2006: (!) LodePNG_InfoPng , width and height are now retrieved in different
- way. Renamed decodePNG to decodePNGGeneric.
-*) 29 jul 2006: (!) Changed the interface: image info is now returned as a
- struct of type LodePNG::LodePNG_Info, instead of a vector, which was a bit clumsy.
-*) 28 jul 2006: Cleaned the code and added new error checks.
- Corrected terminology "deflate" into "inflate".
-*) 23 jun 2006: Added SDL example in the documentation in the header, this
- example allows easy debugging by displaying the PNG and its transparency.
-*) 22 jun 2006: (!) Changed way to obtain error value. Added
- loadFile function for convenience. Made decodePNG32 faster.
-*) 21 jun 2006: (!) Changed type of info vector to unsigned.
- Changed position of palette in info vector. Fixed an important bug that
- happened on PNGs with an uncompressed block.
-*) 16 jun 2006: Internally changed unsigned into unsigned where
- needed, and performed some optimizations.
-*) 07 jun 2006: (!) Renamed functions to decodePNG and placed them
- in LodePNG namespace. Changed the order of the parameters. Rewrote the
- documentation in the header. Renamed files to lodepng.cpp and lodepng.h
-*) 22 apr 2006: Optimized and improved some code
-*) 07 sep 2005: (!) Changed to std::vector interface
-*) 12 aug 2005: Initial release (C++, decoder only)
-
-
-13. contact information
------------------------
-
-Feel free to contact me with suggestions, problems, comments, ... concerning
-LodePNG. If you encounter a PNG image that doesn't work properly with this
-decoder, feel free to send it and I'll use it to find and fix the problem.
-
-My email address is (puzzle the account and domain together with an @ symbol):
-Domain: gmail dot com.
-Account: lode dot vandevenne.
-
-
-Copyright (c) 2005-2019 Lode Vandevenne
-*/
diff --git a/thirdparty/basis_universal/encoder/pvpngreader.cpp b/thirdparty/basis_universal/encoder/pvpngreader.cpp
new file mode 100644
index 0000000000..46639f2796
--- /dev/null
+++ b/thirdparty/basis_universal/encoder/pvpngreader.cpp
@@ -0,0 +1,2662 @@
+// pngreader.cpp - Public Domain - see unlicense at bottom of file.
+//
+// Notes:
+// This is ancient code from ~1995 ported to C++. It was originally written for a
+// DOS app with very limited memory. It's not as fast as it should be, but it works.
+// The low-level PNG reader class was written assuming the PNG file could not fit
+// entirely into memory, which dictated how it was written/structured.
+// It has been modified to use either zlib or miniz.
+// It supports all PNG color types/bit depths/interlacing, however 16-bit/component
+// images are converted to 8-bit.
+// TRNS chunks are converted to alpha as needed.
+// GAMA chunk is read, but not applied.
+
+#include "../transcoder/basisu.h"
+
+#define MINIZ_HEADER_FILE_ONLY
+#define MINIZ_NO_ZLIB_COMPATIBLE_NAMES
+#include "basisu_miniz.h"
+
+#include "pvpngreader.h"
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <math.h>
+#include <string.h>
+#include <vector>
+#include <assert.h>
+
+#define PVPNG_IDAT_CRC_CHECKING (1)
+#define PVPNG_ADLER32_CHECKING (1)
+
+namespace pv_png
+{
+
+const uint32_t MIN_PNG_SIZE = 8 + 13 + 8 + 1 + 4 + 12;
+
+template <typename S> inline S maximum(S a, S b) { return (a > b) ? a : b; }
+template <typename S> inline S minimum(S a, S b) { return (a < b) ? a : b; }
+
+template <typename T> inline void clear_obj(T& obj) { memset(&obj, 0, sizeof(obj)); }
+
+#define MAX_SUPPORTED_RES (32768)
+#define FALSE (0)
+#define TRUE (1)
+#define PNG_MAX_ALLOC_BLOCKS (16)
+
+enum
+{
+ PNG_DECERROR = -3,
+ PNG_ALLDONE = -5,
+ PNG_READPASTEOF = -11,
+ PNG_UNKNOWNTYPE = -16,
+ PNG_FILEREADERROR = -17,
+ PNG_NOTENOUGHMEM = -108,
+ PNG_BAD_CHUNK_CRC32 = -13000,
+ PNG_NO_IHDR = -13001,
+ PNG_BAD_WIDTH = -13002,
+ PNG_BAD_HEIGHT = -13003,
+ PNG_UNS_COMPRESSION = -13004,
+ PNG_UNS_FILTER = -13005,
+ PNG_UNS_ILACE = -13006,
+ PNG_UNS_COLOR_TYPE = -13007,
+ PNG_BAD_BIT_DEPTH = -13008,
+ PNG_BAD_CHUNK_SIZE = -13009,
+ PNG_UNS_CRITICAL_CHUNK = -13010,
+ PNG_BAD_TRNS_CHUNK = -13011,
+ PNG_BAD_PLTE_CHUNK = -13012,
+ PNG_UNS_RESOLUTION = -13013,
+ PNG_INVALID_DATA_STREAM = -13014,
+ PNG_MISSING_PALETTE = -13015,
+ PNG_UNS_PREDICTOR = -13016,
+ PNG_INCOMPLETE_IMAGE = -13017,
+ PNG_TOO_MUCH_DATA = -13018
+};
+
+#define PNG_COLOR_TYPE_PAL_MASK (1)
+#define PNG_COLOR_TYPE_COL_MASK (2)
+#define PNG_COLOR_TYPE_ALP_MASK (4)
+
+#define PNG_INFLATE_SRC_BUF_SIZE (4096)
+
+struct ihdr_struct
+{
+ uint32_t m_width;
+ uint32_t m_height;
+ uint8_t m_bit_depth;
+ uint8_t m_color_type;
+ uint8_t m_comp_type;
+ uint8_t m_filter_type;
+ uint8_t m_ilace_type;
+};
+
+class png_file
+{
+public:
+ png_file() { }
+ virtual ~png_file() { }
+
+ virtual bool resize(uint64_t new_size) = 0;
+ virtual uint64_t get_size() = 0;
+ virtual uint64_t tell() = 0;
+ virtual bool seek(uint64_t ofs) = 0;
+ virtual size_t write(const void* pBuf, size_t len) = 0;
+ virtual size_t read(void* pBuf, size_t len) = 0;
+};
+
+class png_memory_file : public png_file
+{
+public:
+ std::vector<uint8_t> m_buf;
+ uint64_t m_ofs;
+
+ png_memory_file() :
+ png_file(),
+ m_ofs(0)
+ {
+ }
+
+ virtual ~png_memory_file()
+ {
+ }
+
+ std::vector<uint8_t>& get_buf() { return m_buf; }
+ const std::vector<uint8_t>& get_buf() const { return m_buf; }
+
+ void init()
+ {
+ m_ofs = 0;
+ m_buf.resize(0);
+ }
+
+ virtual bool resize(uint64_t new_size)
+ {
+ if ((sizeof(size_t) == sizeof(uint32_t)) && (new_size >= 0x7FFFFFFF))
+ return false;
+
+ m_buf.resize((size_t)new_size);
+ m_ofs = m_buf.size();
+
+ return true;
+ }
+
+ virtual uint64_t get_size()
+ {
+ return m_buf.size();
+ }
+
+ virtual uint64_t tell()
+ {
+ return m_ofs;
+ }
+
+ virtual bool seek(uint64_t ofs)
+ {
+ m_ofs = ofs;
+ return true;
+ }
+
+ virtual size_t write(const void* pBuf, size_t len)
+ {
+ uint64_t new_size = m_ofs + len;
+ if (new_size > m_buf.size())
+ {
+ if ((sizeof(size_t) == sizeof(uint32_t)) && (new_size > 0x7FFFFFFFUL))
+ return 0;
+ m_buf.resize(new_size);
+ }
+
+ memcpy(&m_buf[(size_t)m_ofs], pBuf, len);
+ m_ofs += len;
+
+ return len;
+ }
+
+ virtual size_t read(void* pBuf, size_t len)
+ {
+ if (m_ofs >= m_buf.size())
+ return 0;
+
+ uint64_t max_bytes = minimum<uint64_t>(len, m_buf.size() - m_ofs);
+ memcpy(pBuf, &m_buf[(size_t)m_ofs], max_bytes);
+
+ m_ofs += max_bytes;
+
+ return max_bytes;
+ }
+};
+
+class png_readonly_memory_file : public png_file
+{
+public:
+ const uint8_t* m_pBuf;
+ size_t m_buf_size;
+ uint64_t m_ofs;
+
+ png_readonly_memory_file() :
+ png_file(),
+ m_pBuf(nullptr),
+ m_buf_size(0),
+ m_ofs(0)
+ {
+ }
+
+ virtual ~png_readonly_memory_file()
+ {
+ }
+
+ void init(const void *pBuf, size_t buf_size)
+ {
+ m_pBuf = static_cast<const uint8_t*>(pBuf);
+ m_buf_size = buf_size;
+ m_ofs = 0;
+ }
+
+ virtual bool resize(uint64_t new_size)
+ {
+ (void)new_size;
+ assert(0);
+ return false;
+ }
+
+ virtual uint64_t get_size()
+ {
+ return m_buf_size;
+ }
+
+ virtual uint64_t tell()
+ {
+ return m_ofs;
+ }
+
+ virtual bool seek(uint64_t ofs)
+ {
+ m_ofs = ofs;
+ return true;
+ }
+
+ virtual size_t write(const void* pBuf, size_t len)
+ {
+ (void)pBuf;
+ (void)len;
+ assert(0);
+ return 0;
+ }
+
+ virtual size_t read(void* pBuf, size_t len)
+ {
+ if (m_ofs >= m_buf_size)
+ return 0;
+
+ uint64_t max_bytes = minimum<uint64_t>(len, m_buf_size - m_ofs);
+ memcpy(pBuf, &m_pBuf[(size_t)m_ofs], max_bytes);
+
+ m_ofs += max_bytes;
+
+ return max_bytes;
+ }
+};
+
+#ifdef _MSC_VER
+#define ftell64 _ftelli64
+#define fseek64 _fseeki64
+#else
+#define ftell64 ftello
+#define fseek64 fseeko
+#endif
+
+class png_cfile : public png_file
+{
+public:
+ FILE* m_pFile;
+
+ png_cfile() :
+ png_file(),
+ m_pFile(nullptr)
+ {
+ }
+
+ virtual ~png_cfile()
+ {
+ close();
+ }
+
+ bool init(const char *pFilename, const char *pMode)
+ {
+ close();
+
+ m_pFile = nullptr;
+
+#ifdef _MSC_VER
+ fopen_s(&m_pFile, pFilename, pMode);
+#else
+ m_pFile = fopen(pFilename, pMode);
+#endif
+
+ return m_pFile != nullptr;
+ }
+
+ bool close()
+ {
+ bool status = true;
+ if (m_pFile)
+ {
+ if (fclose(m_pFile) == EOF)
+ status = false;
+ m_pFile = nullptr;
+ }
+ return status;
+ }
+
+ virtual bool resize(uint64_t new_size)
+ {
+ if (new_size)
+ {
+ if (!seek(new_size - 1))
+ return false;
+
+ int v = 0;
+ if (write(&v, 1) != 1)
+ return false;
+ }
+ else
+ {
+ if (!seek(0))
+ return false;
+ }
+
+ return true;
+ }
+
+ virtual uint64_t get_size()
+ {
+ int64_t cur_ofs = ftell64(m_pFile);
+ if (cur_ofs < 0)
+ return 0;
+
+ if (fseek64(m_pFile, 0, SEEK_END) != 0)
+ return 0;
+
+ const int64_t cur_size = ftell64(m_pFile);
+ if (cur_size < 0)
+ return 0;
+
+ if (fseek64(m_pFile, cur_ofs, SEEK_SET) != 0)
+ return 0;
+
+ return cur_size;
+ }
+
+ virtual uint64_t tell()
+ {
+ int64_t cur_ofs = ftell64(m_pFile);
+ if (cur_ofs < 0)
+ return 0;
+
+ return cur_ofs;
+ }
+
+ virtual bool seek(uint64_t ofs)
+ {
+ return fseek64(m_pFile, ofs, SEEK_SET) == 0;
+ }
+
+ virtual size_t write(const void* pBuf, size_t len)
+ {
+ return (size_t)fwrite(pBuf, 1, len, m_pFile);
+ }
+
+ virtual size_t read(void* pBuf, size_t len)
+ {
+ return (size_t)fread(pBuf, 1, len, m_pFile);
+ }
+};
+
+// This low-level helper class handles the actual decoding of PNG files.
+class png_decoder
+{
+public:
+ png_decoder();
+ ~png_decoder();
+
+ // Scans the PNG file, but doesn't decode the IDAT data.
+ // Returns 0 on success, or an error code.
+ // If the returned status is non-zero, or m_img_supported_flag==FALSE the image either the image is corrupted/not PNG or is unsupported in some way.
+ int png_scan(png_file *pFile);
+
+ // Decodes a single scanline of PNG image data.
+ // Returns a pointer to the scanline's pixel data and its size in bytes.
+ // This data is only minimally processed from the internal PNG pixel data.
+ // The caller must use the ihdr, trns_flag and values, and the palette to actually decode the pixel data.
+ //
+ // Possible returned pixel formats is somewhat complex due to the history of this code:
+ // 8-bit RGBA, always 4 bytes/pixel - 24bpp PNG's are converted to 32bpp and TRNS processing is done automatically (8/16bpp RGB or RGBA PNG files)
+ // 1/2/4/8-bit grayscale, 1 byte per pixel - must convert to [0,255] using the palette or some other means, must optionally use the TRNS chunk for alpha (1/2/4/8 Grayscale PNG files - not 16bpp though!)
+ // 1/2/4/8-bit palettized, 1 byte per pixel - must convert to RGB using the 24bpp palette and optionally the TRNS chunk for alpha (1/2/4/8bpp palettized PNG files)
+ // 8-bit grayscale with alpha, 2 bytes per pixel - TRNS processing will be done for you on 16bpp images (there's a special case here for 16bpp Grey files) (8/16bpp Gray-Alpha *or 16bpp Grayscale* PNG files)
+ //
+ // Returns 0 on success, a non-zero error code, or PNG_ALLDONE.
+ int png_decode(void** ppImg_ptr, uint32_t* pImg_len);
+
+ // Starts decoding. Returns 0 on success, otherwise an error code.
+ int png_decode_start();
+
+ // Deinitializes the decoder, freeing all allocations.
+ void png_decode_end();
+
+ png_file* m_pFile;
+
+ // Image's 24bpp palette - 3 bytes per entry
+ uint8_t m_plte_flag;
+ uint8_t m_img_pal[768];
+
+ int m_img_supported_flag;
+
+ ihdr_struct m_ihdr;
+
+ uint8_t m_chunk_flag;
+ uint32_t m_chunk_size;
+ uint32_t m_chunk_left;
+ uint32_t m_chunk_crc32;
+ uint8_t m_chunk_name[4];
+
+ uint8_t m_end_of_idat_chunks;
+
+ void* m_pMalloc_blocks[PNG_MAX_ALLOC_BLOCKS];
+
+ uint32_t m_dec_bytes_per_pixel; // bytes per pixel decoded from the PNG file (minimum 1 for 1/2/4 bpp), factors in the PNG 8/16 bit/component bit depth, may be up to 8 bytes (2*4)
+ uint32_t m_dst_bytes_per_pixel; // bytes per pixel returned to the caller (1-4), always has alpha if the PNG has alpha, 16-bit components always converted to 8-bits/component
+
+ uint32_t m_dec_bytes_per_line; // bytes per line decoded from the PNG file (before 1/2/4 expansion), +1 for the filter byte
+ uint32_t m_src_bytes_per_line; // decoded PNG bytes per line, before 1/2/4 bpp expansion, not counting the filter byte, updated during adam7 deinterlacing
+ uint32_t m_dst_bytes_per_line; // bytes per line returned to the caller (1-4 times width)
+
+ int (*m_pProcess_func)(uint8_t* src, uint8_t* dst, int pixels, png_decoder* pwi);
+
+ uint8_t* m_pPre_line_buf;
+ uint8_t* m_pCur_line_buf;
+ uint8_t* m_pPro_line_buf;
+
+ uint8_t m_bkgd_flag;
+ uint32_t m_bkgd_value[3];
+
+ uint8_t m_gama_flag;
+ uint32_t m_gama_value;
+
+ uint8_t m_trns_flag;
+ uint32_t m_trns_value[256];
+
+ buminiz::mz_stream m_inflator;
+
+ uint8_t inflate_src_buf[PNG_INFLATE_SRC_BUF_SIZE];
+
+ uint32_t m_inflate_src_buf_ofs;
+ uint32_t m_inflate_src_buf_size;
+ uint32_t m_inflate_dst_buf_ofs;
+
+ int m_inflate_eof_flag;
+
+ uint8_t m_gamma_table[256];
+
+ int m_pass_x_size;
+ int m_pass_y_left;
+
+ int m_adam7_pass_num;
+ int m_adam7_pass_y;
+ int m_adam7_pass_size_x[7];
+ int m_adam7_pass_size_y[7];
+
+ std::vector<uint8_t> m_adam7_image_buf;
+
+ int m_adam7_decoded_flag;
+
+ bool m_scanned_flag;
+
+ int m_terminate_status;
+
+#define TEMP_BUF_SIZE (384)
+ uint8_t m_temp_buf[TEMP_BUF_SIZE * 4];
+
+ void clear();
+ void uninitialize();
+ int terminate(int status);
+ void* png_malloc(uint32_t i);
+ void* png_calloc(uint32_t i);
+ int block_read(void* buf, uint32_t len);
+ int64_t block_read_dword();
+ int fetch_next_chunk_data(uint8_t* buf, int bytes);
+ int fetch_next_chunk_byte();
+ int fetch_next_chunk_word();
+ int64_t fetch_next_chunk_dword();
+ int fetch_next_chunk_init();
+ int unchunk_data(uint8_t* buf, uint32_t bytes, uint32_t* ptr_bytes_read);
+ inline void adam7_write_pixel_8(int x, int y, int c);
+ inline void adam7_write_pixel_16(int x, int y, int r, int g);
+ inline void adam7_write_pixel_24(int x, int y, int r, int g, int b);
+ inline void adam7_write_pixel_32(int x, int y, int r, int g, int b, int a);
+ void unpredict_sub(uint8_t* lst, uint8_t* cur, uint32_t bytes, int bpp);
+ void unpredict_up(uint8_t* lst, uint8_t* cur, uint32_t bytes, int bpp);
+ void unpredict_average(uint8_t* lst, uint8_t* cur, uint32_t bytes, int bpp);
+ inline uint8_t paeth_predictor(int a, int b, int c);
+ void unpredict_paeth(uint8_t* lst, uint8_t* cur, uint32_t bytes, int bpp);
+ int adam7_pass_size(int size, int start, int step);
+ int decompress_line(uint32_t* bytes_decoded);
+ int find_iend_chunk();
+ void calc_gamma_table();
+ void create_grey_palette();
+ int read_signature();
+ int read_ihdr_chunk();
+ int read_bkgd_chunk();
+ int read_gama_chunk();
+ int read_trns_chunk();
+ int read_plte_chunk();
+ int find_idat_chunk();
+};
+
+void png_decoder::uninitialize()
+{
+ m_pFile = nullptr;
+
+ for (int i = 0; i < PNG_MAX_ALLOC_BLOCKS; i++)
+ {
+ free(m_pMalloc_blocks[i]);
+ m_pMalloc_blocks[i] = nullptr;
+ }
+
+ mz_inflateEnd(&m_inflator);
+}
+
+int png_decoder::terminate(int status)
+{
+ if (m_terminate_status == 0)
+ m_terminate_status = status;
+
+ uninitialize();
+ return status;
+}
+
+void* png_decoder::png_malloc(uint32_t len)
+{
+ if (!len)
+ len++;
+
+ void* p = malloc(len);
+
+ if (!p)
+ return nullptr;
+
+ int j;
+ for (j = 0; j < PNG_MAX_ALLOC_BLOCKS; j++)
+ if (!m_pMalloc_blocks[j])
+ break;
+
+ if (j == PNG_MAX_ALLOC_BLOCKS)
+ return nullptr;
+
+ m_pMalloc_blocks[j] = p;
+
+ return p;
+}
+
+void* png_decoder::png_calloc(uint32_t len)
+{
+ void* p = png_malloc(len);
+ if (!p)
+ return nullptr;
+
+ if (p)
+ memset(p, 0, len);
+
+ return p;
+}
+
+int png_decoder::block_read(void* buf, uint32_t len)
+{
+ size_t bytes_read = m_pFile->read(buf, len);
+ if (bytes_read != len)
+ return terminate(PNG_READPASTEOF);
+ return 0;
+}
+
+int64_t png_decoder::block_read_dword()
+{
+ uint8_t buf[4];
+
+ int status = block_read(buf, 4);
+ if (status != 0)
+ return status;
+
+ uint32_t v = buf[3] + ((uint32_t)buf[2] << 8) + ((uint32_t)buf[1] << 16) + ((uint32_t)buf[0] << 24);
+ return (int64_t)v;
+}
+
+int png_decoder::fetch_next_chunk_data(uint8_t* buf, int bytes)
+{
+ if (!m_chunk_flag)
+ return 0;
+
+ bytes = minimum<int>(bytes, m_chunk_left);
+
+ int status = block_read(buf, bytes);
+ if (status != 0)
+ return status;
+
+#if PVPNG_IDAT_CRC_CHECKING
+ bool check_crc32 = true;
+#else
+ const bool is_idat = (m_chunk_name[0] == 'I') && (m_chunk_name[1] == 'D') && (m_chunk_name[2] == 'A') && (m_chunk_name[3] == 'T');
+ bool check_crc32 = !is_idat;
+#endif
+
+ if (check_crc32)
+ m_chunk_crc32 = buminiz::mz_crc32(m_chunk_crc32, buf, bytes);
+
+ if ((m_chunk_left -= bytes) == 0)
+ {
+ int64_t res = block_read_dword();
+ if (res < 0)
+ return (int)res;
+
+ if (check_crc32)
+ {
+ if (m_chunk_crc32 != (uint32_t)res)
+ return terminate(PNG_BAD_CHUNK_CRC32);
+ }
+
+ m_chunk_flag = FALSE;
+ }
+
+ return bytes;
+}
+
+int png_decoder::fetch_next_chunk_byte()
+{
+ uint8_t buf[1];
+
+ int status = fetch_next_chunk_data(buf, 1);
+ if (status < 0)
+ return status;
+
+ if (status != 1)
+ return terminate(PNG_BAD_CHUNK_SIZE);
+
+ return buf[0];
+}
+
+int png_decoder::fetch_next_chunk_word()
+{
+ uint8_t buf[2];
+
+ int status = fetch_next_chunk_data(buf, 2);
+ if (status < 0)
+ return status;
+
+ if (status != 2)
+ return terminate(PNG_BAD_CHUNK_SIZE);
+
+ return buf[1] + ((uint32_t)buf[0] << 8);
+}
+
+int64_t png_decoder::fetch_next_chunk_dword()
+{
+ uint8_t buf[4];
+
+ int status = fetch_next_chunk_data(buf, 4);
+ if (status < 0)
+ return status;
+
+ if (status != 4)
+ terminate(PNG_BAD_CHUNK_SIZE);
+
+ uint32_t v = buf[3] + ((uint32_t)buf[2] << 8) + ((uint32_t)buf[1] << 16) + ((uint32_t)buf[0] << 24);
+ return (int64_t)v;
+}
+
+int png_decoder::fetch_next_chunk_init()
+{
+ while (m_chunk_flag)
+ {
+ int status = fetch_next_chunk_data(m_temp_buf, TEMP_BUF_SIZE * 4);
+ if (status != 0)
+ return status;
+ }
+
+ int64_t n = block_read_dword();
+ if (n < 0)
+ return (int)n;
+
+ m_chunk_size = (uint32_t)n;
+
+ m_chunk_flag = TRUE;
+ m_chunk_left = m_chunk_size + 4;
+ m_chunk_crc32 = 0;
+
+ int status = fetch_next_chunk_data(m_chunk_name, 4);
+ if (status < 0)
+ return status;
+
+ return 0;
+}
+
+int png_decoder::unchunk_data(uint8_t* buf, uint32_t bytes, uint32_t* ptr_bytes_read)
+{
+ uint32_t bytes_read = 0;
+
+ if ((!bytes) || (m_end_of_idat_chunks))
+ {
+ *ptr_bytes_read = 0;
+ return TRUE;
+ }
+
+ while (bytes_read != bytes)
+ {
+ if (!m_chunk_flag)
+ {
+ int res = fetch_next_chunk_init();
+ if (res < 0)
+ return res;
+
+ if ((m_chunk_name[0] != 'I') ||
+ (m_chunk_name[1] != 'D') ||
+ (m_chunk_name[2] != 'A') ||
+ (m_chunk_name[3] != 'T'))
+ {
+ *ptr_bytes_read = bytes_read;
+ m_end_of_idat_chunks = TRUE;
+ return TRUE;
+ }
+ }
+
+ int res = fetch_next_chunk_data(buf + bytes_read, bytes - bytes_read);
+ if (res < 0)
+ return res;
+
+ bytes_read += (uint32_t)res;
+ }
+
+ *ptr_bytes_read = bytes_read;
+
+ return FALSE;
+}
+
+inline void png_decoder::adam7_write_pixel_8(int x, int y, int c)
+{
+ m_adam7_image_buf[x + y * m_dst_bytes_per_line] = (uint8_t)c;
+}
+
+inline void png_decoder::adam7_write_pixel_16(int x, int y, int r, int g)
+{
+ uint32_t ofs = x * 2 + y * m_dst_bytes_per_line;
+ m_adam7_image_buf[ofs + 0] = (uint8_t)r;
+ m_adam7_image_buf[ofs + 1] = (uint8_t)g;
+}
+
+inline void png_decoder::adam7_write_pixel_24(int x, int y, int r, int g, int b)
+{
+ uint32_t ofs = x * 3 + y * m_dst_bytes_per_line;
+ m_adam7_image_buf[ofs + 0] = (uint8_t)r;
+ m_adam7_image_buf[ofs + 1] = (uint8_t)g;
+ m_adam7_image_buf[ofs + 2] = (uint8_t)b;
+}
+
+inline void png_decoder::adam7_write_pixel_32(int x, int y, int r, int g, int b, int a)
+{
+ uint32_t ofs = x * 4 + y * m_dst_bytes_per_line;
+ m_adam7_image_buf[ofs + 0] = (uint8_t)r;
+ m_adam7_image_buf[ofs + 1] = (uint8_t)g;
+ m_adam7_image_buf[ofs + 2] = (uint8_t)b;
+ m_adam7_image_buf[ofs + 3] = (uint8_t)a;
+}
+
+static void PixelDePack2(void* src, void* dst, int numbytes)
+{
+ uint8_t* src8 = (uint8_t*)src;
+ uint8_t* dst8 = (uint8_t*)dst;
+
+ while (numbytes)
+ {
+ uint8_t v = *src8++;
+
+ for (uint32_t i = 0; i < 8; i++)
+ dst8[7 - i] = (v >> i) & 1;
+
+ dst8 += 8;
+ numbytes--;
+ }
+}
+
+static void PixelDePack16(void* src, void* dst, int numbytes)
+{
+ uint8_t* src8 = (uint8_t*)src;
+ uint8_t* dst8 = (uint8_t*)dst;
+
+ while (numbytes)
+ {
+ uint8_t v = *src8++;
+
+ dst8[0] = (uint8_t)v >> 4;
+ dst8[1] = (uint8_t)v & 0xF;
+ dst8 += 2;
+
+ numbytes--;
+ }
+}
+
+static int unpack_grey_1(uint8_t* src, uint8_t* dst, int pixels, png_decoder *pwi)
+{
+ (void)pwi;
+ PixelDePack2(src, dst, pixels >> 3);
+
+ dst += (pixels & 0xFFF8);
+
+ if ((pixels & 7) != 0)
+ {
+ uint8_t c = src[pixels >> 3];
+
+ pixels &= 7;
+
+ while (pixels--)
+ {
+ *dst++ = ((c & 128) >> 7);
+
+ c <<= 1;
+ }
+ }
+
+ return TRUE;
+}
+
+static int unpack_grey_2(uint8_t* src, uint8_t* dst, int pixels, png_decoder* pwi)
+{
+ (void)pwi;
+ int i = pixels;
+ uint8_t c;
+
+ while (i >= 4)
+ {
+ c = *src++;
+
+ *dst++ = (c >> 6);
+ *dst++ = (c >> 4) & 3;
+ *dst++ = (c >> 2) & 3;
+ *dst++ = (c) & 3;
+
+ i -= 4;
+ }
+
+ if (i)
+ {
+ c = *src;
+
+ while (i--)
+ {
+ *dst++ = (c >> 6);
+
+ c <<= 2;
+ }
+ }
+
+ return TRUE;
+}
+
+static int unpack_grey_4(uint8_t* src, uint8_t* dst, int pixels, png_decoder* pwi)
+{
+ (void)pwi;
+
+ PixelDePack16(src, dst, pixels >> 1);
+
+ if (pixels & 1)
+ dst[pixels & 0xFFFE] = (src[pixels >> 1] >> 4);
+
+ return TRUE;
+}
+
+static int unpack_grey_8(uint8_t* src, uint8_t* dst, int pixels, png_decoder* pwi)
+{
+ (void)src;
+ (void)dst;
+ (void)pixels;
+ (void)pwi;
+ return FALSE;
+}
+
+static int unpack_grey_16(uint8_t* src, uint8_t* dst, int pixels, png_decoder* pwi)
+{
+ (void)pwi;
+ while (pixels--)
+ {
+ *dst++ = *src++;
+
+ src++;
+ }
+
+ return TRUE;
+}
+
+static int unpack_grey_16_2(uint8_t* src, uint8_t* dst, int pixels, png_decoder* pwi)
+{
+ if (pwi->m_trns_flag)
+ {
+ while (pixels--)
+ {
+ uint32_t v = (src[0] << 8) + src[1];
+ src += 2;
+
+ *dst++ = (uint8_t)(v >> 8);
+ *dst++ = (v == pwi->m_trns_value[0]) ? 0 : 255;
+ }
+ }
+ else
+ {
+ while (pixels--)
+ {
+ *dst++ = *src++;
+ *dst++ = 0xFF;
+
+ src++;
+ }
+ }
+
+ return TRUE;
+}
+
+static int unpack_true_8(uint8_t* src, uint8_t* dst, int pixels, png_decoder* pwi)
+{
+ if (pwi->m_trns_flag)
+ {
+ const uint32_t tr = pwi->m_trns_value[0];
+ const uint32_t tg = pwi->m_trns_value[1];
+ const uint32_t tb = pwi->m_trns_value[2];
+
+ for (int i = 0; i < pixels; i++)
+ {
+ uint8_t r = src[i * 3 + 0];
+ uint8_t g = src[i * 3 + 1];
+ uint8_t b = src[i * 3 + 2];
+
+ dst[i * 4 + 0] = r;
+ dst[i * 4 + 1] = g;
+ dst[i * 4 + 2] = b;
+ dst[i * 4 + 3] = ((r == tr) && (g == tg) && (b == tb)) ? 0 : 255;
+ }
+ }
+ else
+ {
+ for (int i = 0; i < pixels; i++)
+ {
+ dst[i * 4 + 0] = src[i * 3 + 0];
+ dst[i * 4 + 1] = src[i * 3 + 1];
+ dst[i * 4 + 2] = src[i * 3 + 2];
+ dst[i * 4 + 3] = 255;
+ }
+ }
+
+ return TRUE;
+}
+
+static int unpack_true_16(uint8_t* src, uint8_t* dst, int pixels, png_decoder* pwi)
+{
+ if (pwi->m_trns_flag)
+ {
+ const uint32_t tr = pwi->m_trns_value[0];
+ const uint32_t tg = pwi->m_trns_value[1];
+ const uint32_t tb = pwi->m_trns_value[2];
+
+ for (int i = 0; i < pixels; i++)
+ {
+ uint32_t r = (src[i * 6 + 0] << 8) + src[i * 6 + 1];
+ uint32_t g = (src[i * 6 + 2] << 8) + src[i * 6 + 3];
+ uint32_t b = (src[i * 6 + 4] << 8) + src[i * 6 + 5];
+
+ dst[i * 4 + 0] = (uint8_t)(r >> 8);
+ dst[i * 4 + 1] = (uint8_t)(g >> 8);
+ dst[i * 4 + 2] = (uint8_t)(b >> 8);
+ dst[i * 4 + 3] = ((r == tr) && (g == tg) && (b == tb)) ? 0 : 255;
+ }
+ }
+ else
+ {
+ while (pixels--)
+ {
+ dst[0] = src[0];
+ dst[1] = src[2];
+ dst[2] = src[4];
+ dst[3] = 255;
+
+ dst += 4;
+ src += 6;
+ }
+ }
+
+ return TRUE;
+}
+
+static int unpack_grey_alpha_8(uint8_t* src, uint8_t* dst, int pixels, png_decoder* pwi)
+{
+ (void)pwi;
+ while (pixels--)
+ {
+ dst[0] = src[0];
+ dst[1] = src[1];
+ dst += 2;
+ src += 2;
+ }
+
+ return TRUE;
+}
+
+static int unpack_grey_alpha_16(uint8_t* src, uint8_t* dst, int pixels, png_decoder* pwi)
+{
+ (void)pwi;
+ while (pixels--)
+ {
+ dst[0] = src[0];
+ dst[1] = src[2];
+ dst += 2;
+ src += 4;
+ }
+
+ return TRUE;
+}
+
+static int unpack_true_alpha_8(uint8_t* src, uint8_t* dst, int pixels, png_decoder* pwi)
+{
+ (void)src;
+ (void)dst;
+ (void)pixels;
+ (void)pwi;
+ return FALSE;
+}
+
+static int unpack_true_alpha_16(uint8_t* src, uint8_t* dst, int pixels, png_decoder* pwi)
+{
+ (void)pwi;
+ while (pixels--)
+ {
+ dst[0] = src[0];
+ dst[1] = src[2];
+ dst[2] = src[4];
+ dst[3] = src[6];
+ dst += 4;
+ src += 8;
+ }
+
+ return TRUE;
+}
+
+void png_decoder::unpredict_sub(uint8_t* lst, uint8_t* cur, uint32_t bytes, int bpp)
+{
+ (void)lst;
+ if (bytes == (uint32_t)bpp)
+ return;
+
+ cur += bpp;
+ bytes -= bpp;
+
+ while (bytes--)
+ {
+ *cur += *(cur - bpp);
+ cur++;
+ }
+}
+
+void png_decoder::unpredict_up(uint8_t* lst, uint8_t* cur, uint32_t bytes, int bpp)
+{
+ (void)bpp;
+ while (bytes--)
+ *cur++ += *lst++;
+}
+
+void png_decoder::unpredict_average(uint8_t* lst, uint8_t* cur, uint32_t bytes, int bpp)
+{
+ int i;
+
+ for (i = 0; i < bpp; i++)
+ *cur++ += (*lst++ >> 1);
+
+ if (bytes == (uint32_t)bpp)
+ return;
+
+ bytes -= bpp;
+
+ while (bytes--)
+ {
+ *cur += ((*lst++ + *(cur - bpp)) >> 1);
+ cur++;
+ }
+}
+
+inline uint8_t png_decoder::paeth_predictor(int a, int b, int c)
+{
+ int p, pa, pb, pc;
+
+ /* a = left, b = above, c = upper left */
+
+ p = a + b - c;
+
+ pa = abs(p - a);
+ pb = abs(p - b);
+ pc = abs(p - c);
+
+ if ((pa <= pb) && (pa <= pc))
+ return (uint8_t)a;
+ else if (pb <= pc)
+ return (uint8_t)b;
+ else
+ return (uint8_t)c;
+}
+
+void png_decoder::unpredict_paeth(uint8_t* lst, uint8_t* cur, uint32_t bytes, int bpp)
+{
+ int i;
+
+ for (i = 0; i < bpp; i++)
+ *cur++ += paeth_predictor(0, *lst++, 0);
+
+ if (bytes == (uint32_t)bpp)
+ return;
+
+ bytes -= bpp;
+
+ while (bytes--)
+ {
+ int p, a, b, c, pa, pb, pc;
+
+ a = *(cur - bpp);
+ b = *lst;
+ c = *(lst - bpp);
+
+ p = a + b - c;
+
+ pa = abs(p - a);
+ pb = abs(p - b);
+ pc = abs(p - c);
+
+ if ((pa <= pb) && (pa <= pc))
+ *cur++ += (uint8_t)a;
+ else if (pb <= pc)
+ *cur++ += (uint8_t)b;
+ else
+ *cur++ += (uint8_t)c;
+
+ lst++;
+ }
+}
+
+int png_decoder::adam7_pass_size(int size, int start, int step)
+{
+ if (size > start)
+ return 1 + ((size - 1) - start) / step;
+ else
+ return 0;
+}
+
+// TRUE if no more data, negative on error, FALSE if OK
+int png_decoder::decompress_line(uint32_t* bytes_decoded)
+{
+ int status;
+ uint32_t temp, src_bytes_left, dst_bytes_left;
+
+ m_inflate_dst_buf_ofs = 0;
+
+ for (; ; )
+ {
+ if (m_inflate_src_buf_ofs == PNG_INFLATE_SRC_BUF_SIZE)
+ {
+ int res = unchunk_data(inflate_src_buf, PNG_INFLATE_SRC_BUF_SIZE, &temp);
+ if (res < 0)
+ return res;
+ m_inflate_eof_flag = res;
+
+ m_inflate_src_buf_size = temp;
+
+ m_inflate_src_buf_ofs = 0;
+ }
+
+ for (; ; )
+ {
+ src_bytes_left = m_inflate_src_buf_size - m_inflate_src_buf_ofs;
+ dst_bytes_left = m_dec_bytes_per_line - m_inflate_dst_buf_ofs;
+
+ m_inflator.next_in = inflate_src_buf + m_inflate_src_buf_ofs;
+ m_inflator.avail_in = src_bytes_left;
+
+ m_inflator.next_out = m_pCur_line_buf + m_inflate_dst_buf_ofs;
+ m_inflator.avail_out = dst_bytes_left;
+
+ status = buminiz::mz_inflate2(&m_inflator, buminiz::MZ_NO_FLUSH, PVPNG_ADLER32_CHECKING);
+
+ const uint32_t src_bytes_consumed = src_bytes_left - m_inflator.avail_in;
+ const uint32_t dst_bytes_written = dst_bytes_left - m_inflator.avail_out;
+
+ m_inflate_src_buf_ofs += src_bytes_consumed;
+ m_inflate_dst_buf_ofs += dst_bytes_written;
+
+ if (status != buminiz::MZ_OK)
+ {
+ if (status != buminiz::MZ_STREAM_END)
+ return terminate(PNG_INVALID_DATA_STREAM);
+
+ if (bytes_decoded)
+ *bytes_decoded = m_inflate_dst_buf_ofs;
+
+ return TRUE;
+ }
+
+ if (m_inflate_dst_buf_ofs == m_dec_bytes_per_line)
+ {
+ if (bytes_decoded)
+ *bytes_decoded = m_inflate_dst_buf_ofs;
+
+ return FALSE;
+ }
+
+ if ((m_inflate_src_buf_ofs == m_inflate_src_buf_size) &&
+ (m_inflate_eof_flag == FALSE))
+ break;
+ }
+ }
+}
+
+int png_decoder::find_iend_chunk()
+{
+ uint32_t dummy;
+
+ while (!m_end_of_idat_chunks)
+ {
+ int res = unchunk_data(m_temp_buf, TEMP_BUF_SIZE * 4, &dummy);
+ if (res < 0)
+ return res;
+ }
+
+ for (; ; )
+ {
+ if ((m_chunk_name[0] == 'I') &&
+ (m_chunk_name[1] == 'E') &&
+ (m_chunk_name[2] == 'N') &&
+ (m_chunk_name[3] == 'D'))
+ break;
+
+ int res = fetch_next_chunk_init();
+ if (res < 0)
+ return res;
+ }
+
+ return 0;
+}
+
+int png_decoder::png_decode(void** ppImg_ptr, uint32_t* pImg_len)
+{
+ int status;
+ uint8_t* decoded_line;
+ uint32_t bytes_decoded;
+
+ if (m_adam7_decoded_flag)
+ {
+ if (m_pass_y_left == 0)
+ return PNG_ALLDONE;
+
+ *ppImg_ptr = &m_adam7_image_buf[(m_ihdr.m_height - m_pass_y_left) * m_dst_bytes_per_line];
+ *pImg_len = m_dst_bytes_per_line;
+
+ m_pass_y_left--;
+
+ return 0;
+ }
+
+ if (m_pass_y_left == 0)
+ {
+ if (m_ihdr.m_ilace_type == 0)
+ {
+ status = find_iend_chunk();
+ if (status < 0)
+ return status;
+
+ return PNG_ALLDONE;
+ }
+
+ for (; ; )
+ {
+ if (++m_adam7_pass_num == 7)
+ {
+ status = find_iend_chunk();
+ if (status < 0)
+ return status;
+
+ return PNG_ALLDONE;
+ }
+
+ if (((m_pass_y_left = m_adam7_pass_size_y[m_adam7_pass_num]) != 0) &&
+ ((m_pass_x_size = m_adam7_pass_size_x[m_adam7_pass_num]) != 0))
+ break;
+ }
+
+ switch (m_adam7_pass_num)
+ {
+ case 0:
+ case 1:
+ case 3:
+ case 5:
+ m_adam7_pass_y = 0;
+ break;
+ case 2:
+ m_adam7_pass_y = 4;
+ break;
+ case 4:
+ m_adam7_pass_y = 2;
+ break;
+ case 6:
+ m_adam7_pass_y = 1;
+ break;
+ }
+
+ switch (m_ihdr.m_color_type)
+ {
+ case PNG_COLOR_TYPE_GREYSCALE:
+ case PNG_COLOR_TYPE_PALETTIZED:
+ {
+ m_src_bytes_per_line = (((uint32_t)m_pass_x_size * m_ihdr.m_bit_depth) + 7) / 8;
+ break;
+ }
+ case PNG_COLOR_TYPE_TRUECOLOR:
+ {
+ m_src_bytes_per_line = ((uint32_t)m_pass_x_size * m_dec_bytes_per_pixel);
+ break;
+ }
+ case PNG_COLOR_TYPE_GREYSCALE_ALPHA:
+ {
+ m_src_bytes_per_line = ((uint32_t)m_pass_x_size * m_dec_bytes_per_pixel);
+ break;
+ }
+ case PNG_COLOR_TYPE_TRUECOLOR_ALPHA:
+ {
+ m_src_bytes_per_line = ((uint32_t)m_pass_x_size * m_dec_bytes_per_pixel);
+ break;
+ }
+ }
+
+ m_dec_bytes_per_line = m_src_bytes_per_line + 1;
+
+ memset(m_pPre_line_buf, 0, m_src_bytes_per_line);
+ }
+
+ int res = decompress_line(&bytes_decoded);
+ if (res < 0)
+ return terminate(res);
+
+ if (res)
+ {
+ if (m_ihdr.m_ilace_type == 0)
+ {
+ if (m_pass_y_left != 1)
+ return terminate(PNG_INCOMPLETE_IMAGE);
+ }
+ else
+ {
+ if ((m_pass_y_left != 1) && (m_adam7_pass_num != 6))
+ return terminate(PNG_INCOMPLETE_IMAGE);
+ }
+ }
+
+ if (bytes_decoded != m_dec_bytes_per_line)
+ return terminate(PNG_INCOMPLETE_IMAGE);
+
+ decoded_line = &m_pCur_line_buf[1];
+
+ switch (m_pCur_line_buf[0])
+ {
+ case 0:
+ break;
+ case 1:
+ {
+ unpredict_sub(m_pPre_line_buf, m_pCur_line_buf + 1, m_src_bytes_per_line, m_dec_bytes_per_pixel);
+ break;
+ }
+ case 2:
+ {
+ unpredict_up(m_pPre_line_buf, m_pCur_line_buf + 1, m_src_bytes_per_line, m_dec_bytes_per_pixel);
+ break;
+ }
+ case 3:
+ {
+ unpredict_average(m_pPre_line_buf, m_pCur_line_buf + 1, m_src_bytes_per_line, m_dec_bytes_per_pixel);
+ break;
+ }
+ case 4:
+ {
+ unpredict_paeth(m_pPre_line_buf, m_pCur_line_buf + 1, m_src_bytes_per_line, m_dec_bytes_per_pixel);
+ break;
+ }
+ default:
+ return terminate(PNG_UNS_PREDICTOR);
+ }
+
+ memmove(m_pPre_line_buf, m_pCur_line_buf + 1, m_src_bytes_per_line);
+
+ if (m_pProcess_func)
+ {
+ if ((*m_pProcess_func)(m_pCur_line_buf + 1, m_pPro_line_buf, m_pass_x_size, this))
+ decoded_line = m_pPro_line_buf;
+ }
+
+ if (m_ihdr.m_ilace_type == 0)
+ {
+ *ppImg_ptr = decoded_line;
+ *pImg_len = m_dst_bytes_per_line;
+
+ if (--m_pass_y_left == 0)
+ {
+ res = decompress_line(&bytes_decoded);
+ if (res < 0)
+ return terminate(res);
+
+ if (res == FALSE)
+ return terminate(PNG_TOO_MUCH_DATA);
+
+ if (bytes_decoded)
+ return terminate(PNG_TOO_MUCH_DATA);
+ }
+ }
+ else
+ {
+ int i, x_ofs = 0, y_ofs = 0, x_stp = 0;
+ uint8_t* p = decoded_line;
+
+ switch (m_adam7_pass_num)
+ {
+ case 0: { x_ofs = 0; x_stp = 8; break; }
+ case 1: { x_ofs = 4; x_stp = 8; break; }
+ case 2: { x_ofs = 0; x_stp = 4; break; }
+ case 3: { x_ofs = 2; x_stp = 4; break; }
+ case 4: { x_ofs = 0; x_stp = 2; break; }
+ case 5: { x_ofs = 1; x_stp = 2; break; }
+ case 6: { x_ofs = 0; x_stp = 1; break; }
+ }
+
+ y_ofs = m_adam7_pass_y;
+
+ assert(x_ofs < (int)m_ihdr.m_width);
+ assert(y_ofs < (int)m_ihdr.m_height);
+
+ if (m_dst_bytes_per_pixel == 1)
+ {
+ for (i = m_pass_x_size; i > 0; i--, x_ofs += x_stp)
+ adam7_write_pixel_8(x_ofs, y_ofs, *p++);
+ }
+ else if (m_dst_bytes_per_pixel == 2)
+ {
+ for (i = m_pass_x_size; i > 0; i--, x_ofs += x_stp, p += 2)
+ adam7_write_pixel_16(x_ofs, y_ofs, p[0], p[1]);
+ }
+ else if (m_dst_bytes_per_pixel == 3)
+ {
+ for (i = m_pass_x_size; i > 0; i--, x_ofs += x_stp, p += 3)
+ adam7_write_pixel_24(x_ofs, y_ofs, p[0], p[1], p[2]);
+ }
+ else if (m_dst_bytes_per_pixel == 4)
+ {
+ for (i = m_pass_x_size; i > 0; i--, x_ofs += x_stp, p += 4)
+ adam7_write_pixel_32(x_ofs, y_ofs, p[0], p[1], p[2], p[3]);
+ }
+ else
+ {
+ assert(0);
+ }
+
+ switch (m_adam7_pass_num)
+ {
+ case 0:
+ case 1:
+ case 2: { m_adam7_pass_y += 8; break; }
+ case 3:
+ case 4: { m_adam7_pass_y += 4; break; }
+ case 5:
+ case 6: { m_adam7_pass_y += 2; break; }
+ }
+
+ if ((--m_pass_y_left == 0) && (m_adam7_pass_num == 6))
+ {
+ res = decompress_line(&bytes_decoded);
+ if (res < 0)
+ return terminate(res);
+
+ if (res == FALSE)
+ return terminate(PNG_TOO_MUCH_DATA);
+
+ if (bytes_decoded)
+ return terminate(PNG_TOO_MUCH_DATA);
+ }
+ }
+
+ return 0;
+}
+
+void png_decoder::png_decode_end()
+{
+ uninitialize();
+}
+
+int png_decoder::png_decode_start()
+{
+ int status;
+
+ if (m_img_supported_flag != TRUE)
+ return terminate(m_img_supported_flag);
+
+ switch (m_ihdr.m_color_type)
+ {
+ case PNG_COLOR_TYPE_GREYSCALE:
+ {
+ if (m_ihdr.m_bit_depth == 16)
+ {
+ // This is a special case. We can't pass back 8-bit samples and let the caller decide on transparency because the PNG is 16-bits.
+ // So we expand to 8-bit Gray-Alpha and handle transparency during decoding.
+ // We don't do this with all grayscale cases because that would require more code to deal with 1/2/4bpp expansion.
+ m_dec_bytes_per_pixel = (m_ihdr.m_bit_depth + 7) / 8;
+ m_dst_bytes_per_pixel = 2;
+
+ m_src_bytes_per_line = (((uint32_t)m_ihdr.m_width * m_ihdr.m_bit_depth) + 7) / 8;
+ m_dst_bytes_per_line = 2 * m_ihdr.m_width;
+
+ m_pProcess_func = unpack_grey_16_2;
+ }
+ else
+ {
+ m_dec_bytes_per_pixel = (m_ihdr.m_bit_depth + 7) / 8;
+ m_dst_bytes_per_pixel = 1;
+
+ m_src_bytes_per_line = (((uint32_t)m_ihdr.m_width * m_ihdr.m_bit_depth) + 7) / 8;
+ m_dst_bytes_per_line = m_ihdr.m_width;
+
+ if (m_ihdr.m_bit_depth == 1)
+ m_pProcess_func = unpack_grey_1;
+ else if (m_ihdr.m_bit_depth == 2)
+ m_pProcess_func = unpack_grey_2;
+ else if (m_ihdr.m_bit_depth == 4)
+ m_pProcess_func = unpack_grey_4;
+ else
+ m_pProcess_func = unpack_grey_8;
+ }
+
+ break;
+ }
+ case PNG_COLOR_TYPE_PALETTIZED:
+ {
+ m_dec_bytes_per_pixel = (m_ihdr.m_bit_depth + 7) / 8;
+ m_dst_bytes_per_pixel = 1;
+
+ m_src_bytes_per_line = (((uint32_t)m_ihdr.m_width * m_ihdr.m_bit_depth) + 7) / 8;
+ m_dst_bytes_per_line = m_ihdr.m_width;
+
+ if (m_ihdr.m_bit_depth == 1)
+ m_pProcess_func = unpack_grey_1;
+ else if (m_ihdr.m_bit_depth == 2)
+ m_pProcess_func = unpack_grey_2;
+ else if (m_ihdr.m_bit_depth == 4)
+ m_pProcess_func = unpack_grey_4;
+ else if (m_ihdr.m_bit_depth == 8)
+ m_pProcess_func = unpack_grey_8;
+ else if (m_ihdr.m_bit_depth == 16)
+ m_pProcess_func = unpack_grey_16;
+
+ break;
+ }
+ case PNG_COLOR_TYPE_TRUECOLOR:
+ {
+ // We always pass back alpha with transparency handling.
+ m_dec_bytes_per_pixel = 3 * (m_ihdr.m_bit_depth / 8);
+ m_dst_bytes_per_pixel = 4;
+
+ m_src_bytes_per_line = ((uint32_t)m_ihdr.m_width * m_dec_bytes_per_pixel);
+ m_dst_bytes_per_line = 4 * m_ihdr.m_width;
+
+ if (m_ihdr.m_bit_depth == 8)
+ m_pProcess_func = unpack_true_8;
+ else if (m_ihdr.m_bit_depth == 16)
+ m_pProcess_func = unpack_true_16;
+
+ break;
+ }
+ case PNG_COLOR_TYPE_GREYSCALE_ALPHA:
+ {
+ m_dec_bytes_per_pixel = 2 * (m_ihdr.m_bit_depth / 8);
+ m_dst_bytes_per_pixel = 2;
+
+ m_src_bytes_per_line = ((uint32_t)m_ihdr.m_width * m_dec_bytes_per_pixel);
+ m_dst_bytes_per_line = m_ihdr.m_width * 2;
+
+ if (m_ihdr.m_bit_depth == 8)
+ m_pProcess_func = unpack_grey_alpha_8;
+ else if (m_ihdr.m_bit_depth == 16)
+ m_pProcess_func = unpack_grey_alpha_16;
+
+ break;
+ }
+ case PNG_COLOR_TYPE_TRUECOLOR_ALPHA:
+ {
+ m_dec_bytes_per_pixel = 4 * (m_ihdr.m_bit_depth / 8);
+ m_dst_bytes_per_pixel = 4;
+
+ m_src_bytes_per_line = ((uint32_t)m_ihdr.m_width * m_dec_bytes_per_pixel);
+ m_dst_bytes_per_line = 4 * m_ihdr.m_width;
+
+ if (m_ihdr.m_bit_depth == 8)
+ m_pProcess_func = unpack_true_alpha_8;
+ else
+ m_pProcess_func = unpack_true_alpha_16;
+
+ break;
+ }
+ }
+
+ m_dec_bytes_per_line = m_src_bytes_per_line + 1;
+
+ m_pPre_line_buf = (uint8_t*)png_calloc(m_src_bytes_per_line);
+ m_pCur_line_buf = (uint8_t*)png_calloc(m_dec_bytes_per_line);
+ m_pPro_line_buf = (uint8_t*)png_calloc(m_dst_bytes_per_line);
+
+ if (!m_pPre_line_buf || !m_pCur_line_buf || !m_pPro_line_buf)
+ return terminate(PNG_NOTENOUGHMEM);
+
+ m_inflate_src_buf_ofs = PNG_INFLATE_SRC_BUF_SIZE;
+
+ int res = mz_inflateInit(&m_inflator);
+ if (res != 0)
+ return terminate(PNG_DECERROR);
+
+ if (m_ihdr.m_ilace_type == 1)
+ {
+ int i;
+ uint32_t total_lines, lines_processed;
+
+ m_adam7_pass_size_x[0] = adam7_pass_size(m_ihdr.m_width, 0, 8);
+ m_adam7_pass_size_x[1] = adam7_pass_size(m_ihdr.m_width, 4, 8);
+ m_adam7_pass_size_x[2] = adam7_pass_size(m_ihdr.m_width, 0, 4);
+ m_adam7_pass_size_x[3] = adam7_pass_size(m_ihdr.m_width, 2, 4);
+ m_adam7_pass_size_x[4] = adam7_pass_size(m_ihdr.m_width, 0, 2);
+ m_adam7_pass_size_x[5] = adam7_pass_size(m_ihdr.m_width, 1, 2);
+ m_adam7_pass_size_x[6] = adam7_pass_size(m_ihdr.m_width, 0, 1);
+
+ m_adam7_pass_size_y[0] = adam7_pass_size(m_ihdr.m_height, 0, 8);
+ m_adam7_pass_size_y[1] = adam7_pass_size(m_ihdr.m_height, 0, 8);
+ m_adam7_pass_size_y[2] = adam7_pass_size(m_ihdr.m_height, 4, 8);
+ m_adam7_pass_size_y[3] = adam7_pass_size(m_ihdr.m_height, 0, 4);
+ m_adam7_pass_size_y[4] = adam7_pass_size(m_ihdr.m_height, 2, 4);
+ m_adam7_pass_size_y[5] = adam7_pass_size(m_ihdr.m_height, 0, 2);
+ m_adam7_pass_size_y[6] = adam7_pass_size(m_ihdr.m_height, 1, 2);
+
+ m_adam7_image_buf.resize(m_dst_bytes_per_line * m_ihdr.m_height);
+
+ m_adam7_pass_num = -1;
+
+ m_pass_y_left = 0;
+
+ total_lines = lines_processed = 0;
+
+ for (i = 0; i < 7; i++)
+ total_lines += m_adam7_pass_size_y[i];
+
+ for (; ; )
+ {
+ void* dummy_ptr = nullptr;
+ uint32_t dummy_len = 0;
+
+ status = png_decode(&dummy_ptr, &dummy_len);
+
+ if (status)
+ {
+ if (status == PNG_ALLDONE)
+ break;
+ else
+ {
+ uninitialize();
+
+ return status;
+ }
+ }
+
+ lines_processed++;
+ }
+
+ m_adam7_decoded_flag = TRUE;
+ m_pass_y_left = m_ihdr.m_height;
+ }
+ else
+ {
+ m_pass_x_size = m_ihdr.m_width;
+ m_pass_y_left = m_ihdr.m_height;
+ }
+
+ return 0;
+}
+
+void png_decoder::calc_gamma_table()
+{
+ if (m_gama_value == 45000)
+ {
+ for (int i = 0; i < 256; i++)
+ m_gamma_table[i] = (uint8_t)i;
+ return;
+ }
+
+ float gamma = (float)(m_gama_value) / 100000.0f;
+
+ gamma = 1.0f / (gamma * 2.2f);
+
+ for (int i = 0; i < 256; i++)
+ {
+ float temp = powf((float)(i) / 255.0f, gamma) * 255.0f;
+
+ int j = (int)(temp + .5f);
+
+ if (j < 0)
+ j = 0;
+ else if (j > 255)
+ j = 255;
+
+ m_gamma_table[i] = (uint8_t)j;
+ }
+}
+
+void png_decoder::create_grey_palette()
+{
+ int i, j;
+ uint8_t* p = m_img_pal;
+
+ const int img_colors = minimum(256, 1 << m_ihdr.m_bit_depth);
+ for (i = 0; i < img_colors; i++)
+ {
+ j = ((uint32_t)255 * (uint32_t)i) / (img_colors - 1);
+
+ *p++ = (uint8_t)j;
+ *p++ = (uint8_t)j;
+ *p++ = (uint8_t)j;
+ }
+}
+
+int png_decoder::read_signature()
+{
+ if (m_pFile->read(m_temp_buf, 8) != 8)
+ return terminate(PNG_UNKNOWNTYPE);
+
+ if ((m_temp_buf[0] != 137) ||
+ (m_temp_buf[1] != 80) ||
+ (m_temp_buf[2] != 78) ||
+ (m_temp_buf[3] != 71) ||
+ (m_temp_buf[4] != 13) ||
+ (m_temp_buf[5] != 10) ||
+ (m_temp_buf[6] != 26) ||
+ (m_temp_buf[7] != 10))
+ {
+ return terminate(PNG_UNKNOWNTYPE);
+ }
+
+ return 0;
+}
+
+int png_decoder::read_ihdr_chunk()
+{
+ int res = fetch_next_chunk_init();
+ if (res < 0)
+ return res;
+
+ if ((m_chunk_name[0] != 'I') || (m_chunk_name[1] != 'H') || (m_chunk_name[2] != 'D') || (m_chunk_name[3] != 'R') || (m_chunk_size != 13))
+ return terminate(PNG_NO_IHDR);
+
+ int64_t v64 = fetch_next_chunk_dword();
+ if (v64 < 0)
+ return (int)v64;
+ m_ihdr.m_width = (uint32_t)v64;
+
+ v64 = fetch_next_chunk_dword();
+ if (v64 < 0)
+ return (int)v64;
+ m_ihdr.m_height = (uint32_t)v64;
+
+ if ((m_ihdr.m_width == 0) || (m_ihdr.m_width > MAX_SUPPORTED_RES))
+ return terminate(PNG_BAD_WIDTH);
+
+ if ((m_ihdr.m_height == 0) || (m_ihdr.m_height > MAX_SUPPORTED_RES))
+ return terminate(PNG_BAD_HEIGHT);
+
+ int v = fetch_next_chunk_byte();
+ if (v < 0)
+ return v;
+ m_ihdr.m_bit_depth = (uint8_t)v;
+
+ v = fetch_next_chunk_byte();
+ if (v < 0)
+ return v;
+ m_ihdr.m_color_type = (uint8_t)v;
+
+ v = fetch_next_chunk_byte();
+ if (v < 0)
+ return v;
+ m_ihdr.m_comp_type = (uint8_t)v;
+
+ v = fetch_next_chunk_byte();
+ if (v < 0)
+ return v;
+ m_ihdr.m_filter_type = (uint8_t)v;
+
+ v = fetch_next_chunk_byte();
+ if (v < 0)
+ return v;
+ m_ihdr.m_ilace_type = (uint8_t)v;
+
+ if (m_ihdr.m_comp_type != 0)
+ m_img_supported_flag = PNG_UNS_COMPRESSION;
+
+ if (m_ihdr.m_filter_type != 0)
+ m_img_supported_flag = PNG_UNS_FILTER;
+
+ if (m_ihdr.m_ilace_type > 1)
+ m_img_supported_flag = PNG_UNS_ILACE;
+
+ switch (m_ihdr.m_color_type)
+ {
+ case PNG_COLOR_TYPE_GREYSCALE:
+ {
+ switch (m_ihdr.m_bit_depth)
+ {
+ case 1:
+ case 2:
+ case 4:
+ case 8:
+ case 16:
+ {
+ break;
+ }
+ default:
+ return terminate(PNG_BAD_BIT_DEPTH);
+ }
+
+ break;
+ }
+ case PNG_COLOR_TYPE_PALETTIZED:
+ {
+ switch (m_ihdr.m_bit_depth)
+ {
+ case 1:
+ case 2:
+ case 4:
+ case 8:
+ {
+ break;
+ }
+ default:
+ return terminate(PNG_BAD_BIT_DEPTH);
+ }
+
+ break;
+ }
+ case PNG_COLOR_TYPE_TRUECOLOR:
+ case PNG_COLOR_TYPE_GREYSCALE_ALPHA:
+ case PNG_COLOR_TYPE_TRUECOLOR_ALPHA:
+ {
+ switch (m_ihdr.m_bit_depth)
+ {
+ case 8:
+ case 16:
+ {
+ break;
+ }
+ default:
+ return terminate(PNG_BAD_BIT_DEPTH);
+ }
+
+ break;
+ }
+ default:
+ return terminate(PNG_UNS_COLOR_TYPE);
+ }
+
+ return 0;
+}
+
+int png_decoder::read_bkgd_chunk()
+{
+ m_bkgd_flag = TRUE;
+
+ if (m_ihdr.m_color_type == PNG_COLOR_TYPE_PALETTIZED)
+ {
+ int v = fetch_next_chunk_byte();
+ if (v < 0)
+ return v;
+ m_bkgd_value[0] = v;
+ }
+ else if ((m_ihdr.m_color_type == PNG_COLOR_TYPE_GREYSCALE) || (m_ihdr.m_color_type == PNG_COLOR_TYPE_GREYSCALE_ALPHA))
+ {
+ int v = fetch_next_chunk_word();
+ if (v < 0)
+ return v;
+ m_bkgd_value[0] = v;
+ }
+ else if ((m_ihdr.m_color_type == PNG_COLOR_TYPE_TRUECOLOR) || (m_ihdr.m_color_type == PNG_COLOR_TYPE_TRUECOLOR_ALPHA))
+ {
+ int v = fetch_next_chunk_word();
+ if (v < 0)
+ return v;
+ m_bkgd_value[0] = v;
+
+ v = fetch_next_chunk_word();
+ if (v < 0)
+ return v;
+ m_bkgd_value[1] = v;
+
+ v = fetch_next_chunk_word();
+ if (v < 0)
+ return v;
+ m_bkgd_value[2] = v;
+ }
+
+ return 0;
+}
+
+int png_decoder::read_gama_chunk()
+{
+ m_gama_flag = TRUE;
+
+ int64_t v = fetch_next_chunk_dword();
+ if (v < 0)
+ return (int)v;
+
+ m_gama_value = (uint32_t)v;
+
+ return 0;
+}
+
+int png_decoder::read_trns_chunk()
+{
+ int i;
+
+ m_trns_flag = TRUE;
+
+ if (m_ihdr.m_color_type == PNG_COLOR_TYPE_PALETTIZED)
+ {
+ for (i = 0; i < 256; i++)
+ m_trns_value[i] = 255;
+
+ const uint32_t img_colors = 1 << m_ihdr.m_bit_depth;
+ if (m_chunk_size > (uint32_t)img_colors)
+ return terminate(PNG_BAD_TRNS_CHUNK);
+
+ for (i = 0; i < (int)m_chunk_size; i++)
+ {
+ int v = fetch_next_chunk_byte();
+ if (v < 0)
+ return v;
+ m_trns_value[i] = v;
+ }
+ }
+ else if (m_ihdr.m_color_type == PNG_COLOR_TYPE_GREYSCALE)
+ {
+ int v = fetch_next_chunk_word();
+ if (v < 0)
+ return v;
+ m_trns_value[0] = v;
+ }
+ else if (m_ihdr.m_color_type == PNG_COLOR_TYPE_TRUECOLOR)
+ {
+ int v = fetch_next_chunk_word();
+ if (v < 0)
+ return v;
+ m_trns_value[0] = v;
+
+ v = fetch_next_chunk_word();
+ if (v < 0)
+ return v;
+ m_trns_value[1] = v;
+
+ v = fetch_next_chunk_word();
+ if (v < 0)
+ return v;
+ m_trns_value[2] = v;
+ }
+ else
+ {
+ return terminate(PNG_BAD_TRNS_CHUNK);
+ }
+ return 0;
+}
+
+int png_decoder::read_plte_chunk()
+{
+ int i, j;
+ uint8_t* p;
+
+ if (m_plte_flag)
+ return terminate(PNG_BAD_PLTE_CHUNK);
+
+ m_plte_flag = TRUE;
+
+ memset(m_img_pal, 0, 768);
+
+ if (m_chunk_size % 3)
+ return terminate(PNG_BAD_PLTE_CHUNK);
+
+ j = m_chunk_size / 3;
+
+ const int img_colors = minimum(256, 1 << m_ihdr.m_bit_depth);
+ if (j > img_colors)
+ return terminate(PNG_BAD_PLTE_CHUNK);
+
+ if ((m_ihdr.m_color_type == PNG_COLOR_TYPE_GREYSCALE) ||
+ (m_ihdr.m_color_type == PNG_COLOR_TYPE_GREYSCALE_ALPHA))
+ return terminate(PNG_BAD_PLTE_CHUNK);
+
+ p = m_img_pal;
+
+ for (i = 0; i < j; i++)
+ {
+ int v = fetch_next_chunk_byte();
+ if (v < 0)
+ return v;
+ *p++ = (uint8_t)v;
+
+ v = fetch_next_chunk_byte();
+ if (v < 0)
+ return v;
+ *p++ = (uint8_t)v;
+
+ v = fetch_next_chunk_byte();
+ if (v < 0)
+ return v;
+ *p++ = (uint8_t)v;
+ }
+
+ return 0;
+}
+
+int png_decoder::find_idat_chunk()
+{
+ for (; ; )
+ {
+ int res = fetch_next_chunk_init();
+ if (res < 0)
+ return res;
+
+ if (m_chunk_name[0] & 32) /* ancillary? */
+ {
+ if ((m_chunk_name[0] == 'b') && (m_chunk_name[1] == 'K') && (m_chunk_name[2] == 'G') && (m_chunk_name[3] == 'D'))
+ {
+ res = read_bkgd_chunk();
+ if (res < 0)
+ return res;
+ }
+ else if ((m_chunk_name[0] == 'g') && (m_chunk_name[1] == 'A') && (m_chunk_name[2] == 'M') && (m_chunk_name[3] == 'A'))
+ {
+ res = read_gama_chunk();
+ if (res < 0)
+ return res;
+ }
+ else if ((m_chunk_name[0] == 't') && (m_chunk_name[1] == 'R') && (m_chunk_name[2] == 'N') && (m_chunk_name[3] == 'S'))
+ {
+ res = read_trns_chunk();
+ if (res < 0)
+ return res;
+ }
+ }
+ else
+ {
+ if ((m_chunk_name[0] == 'P') && (m_chunk_name[1] == 'L') && (m_chunk_name[2] == 'T') && (m_chunk_name[3] == 'E'))
+ {
+ res = read_plte_chunk();
+ if (res < 0)
+ return res;
+ }
+ else if ((m_chunk_name[0] == 'I') && (m_chunk_name[1] == 'D') && (m_chunk_name[2] == 'A') && (m_chunk_name[3] == 'T'))
+ {
+ break;
+ }
+ else
+ {
+ m_img_supported_flag = PNG_UNS_CRITICAL_CHUNK;
+ }
+ }
+ }
+
+ return 0;
+}
+
+png_decoder::png_decoder()
+{
+ clear();
+}
+
+png_decoder::~png_decoder()
+{
+ uninitialize();
+}
+
+void png_decoder::clear()
+{
+ clear_obj(m_pMalloc_blocks);
+
+ m_pFile = nullptr;
+
+ clear_obj(m_img_pal);
+
+ m_img_supported_flag = FALSE;
+
+ m_adam7_image_buf.clear();
+
+ clear_obj(m_ihdr);
+
+ m_chunk_flag = FALSE;
+ m_chunk_size = 0;
+ m_chunk_left = 0;
+ m_chunk_crc32 = 0;
+ clear_obj(m_chunk_name);
+
+ m_end_of_idat_chunks = 0;
+
+ m_dec_bytes_per_pixel = 0;
+ m_dst_bytes_per_pixel = 0;
+
+ m_dec_bytes_per_line = 0;
+ m_src_bytes_per_line = 0;
+ m_dst_bytes_per_line = 0;
+
+ m_pProcess_func = nullptr;
+
+ m_pPre_line_buf = nullptr;
+ m_pCur_line_buf = nullptr;
+ m_pPro_line_buf = nullptr;
+
+ m_bkgd_flag = FALSE;
+ clear_obj(m_bkgd_value);
+
+ m_gama_flag = FALSE;
+ m_gama_value = 0;
+
+ m_plte_flag = FALSE;
+
+ m_trns_flag = FALSE;
+ clear_obj(m_trns_value);
+
+ clear_obj(m_inflator);
+
+ m_inflate_src_buf_ofs = 0;
+ m_inflate_src_buf_size = 0;
+ m_inflate_dst_buf_ofs = 0;
+
+ m_inflate_eof_flag = FALSE;
+
+ clear_obj(m_trns_value);
+
+ m_pass_x_size = 0;
+ m_pass_y_left = 0;
+
+ m_adam7_pass_num = 0;
+ m_adam7_pass_y = 0;
+ clear_obj(m_adam7_pass_size_x);
+ clear_obj(m_adam7_pass_size_y);
+
+ m_adam7_decoded_flag = FALSE;
+
+ m_scanned_flag = false;
+
+ m_terminate_status = 0;
+}
+
+int png_decoder::png_scan(png_file *pFile)
+{
+ m_pFile = pFile;
+
+ m_img_supported_flag = TRUE;
+ m_terminate_status = 0;
+
+ int res = read_signature();
+ if (res != 0)
+ return res;
+
+ res = read_ihdr_chunk();
+ if (res != 0)
+ return res;
+
+ res = find_idat_chunk();
+ if (res != 0)
+ return res;
+
+ if (m_gama_flag)
+ calc_gamma_table();
+
+ if (m_ihdr.m_color_type == PNG_COLOR_TYPE_PALETTIZED)
+ {
+ if (!m_plte_flag)
+ return terminate(PNG_MISSING_PALETTE);
+ }
+ else if ((m_ihdr.m_color_type == PNG_COLOR_TYPE_GREYSCALE) || (m_ihdr.m_color_type == PNG_COLOR_TYPE_GREYSCALE_ALPHA))
+ {
+ create_grey_palette();
+ }
+
+ m_scanned_flag = true;
+
+ return 0;
+}
+
+static inline uint8_t get_709_luma(uint32_t r, uint32_t g, uint32_t b)
+{
+ return (uint8_t)((13938U * r + 46869U * g + 4729U * b + 32768U) >> 16U);
+}
+
+bool get_png_info(const void* pImage_buf, size_t buf_size, png_info &info)
+{
+ memset(&info, 0, sizeof(info));
+
+ if ((!pImage_buf) || (buf_size < MIN_PNG_SIZE))
+ return false;
+
+ png_readonly_memory_file mf;
+ mf.init(pImage_buf, buf_size);
+
+ png_decoder dec;
+
+ int status = dec.png_scan(&mf);
+ if ((status != 0) || (dec.m_img_supported_flag != TRUE))
+ return false;
+
+ info.m_width = dec.m_ihdr.m_width;
+ info.m_height = dec.m_ihdr.m_height;
+ info.m_bit_depth = dec.m_ihdr.m_bit_depth;
+ info.m_color_type = dec.m_ihdr.m_color_type;
+ info.m_has_gamma = dec.m_gama_flag != 0;
+ info.m_gamma_value = dec.m_gama_value;
+ info.m_has_trns = dec.m_trns_flag != 0;
+
+ switch (dec.m_ihdr.m_color_type)
+ {
+ case PNG_COLOR_TYPE_GREYSCALE:
+ info.m_num_chans = dec.m_trns_flag ? 2 : 1;
+ break;
+ case PNG_COLOR_TYPE_GREYSCALE_ALPHA:
+ info.m_num_chans = 2;
+ break;
+ case PNG_COLOR_TYPE_PALETTIZED:
+ case PNG_COLOR_TYPE_TRUECOLOR:
+ info.m_num_chans = dec.m_trns_flag ? 4 : 3;
+ break;
+ case PNG_COLOR_TYPE_TRUECOLOR_ALPHA:
+ info.m_num_chans = 4;
+ break;
+ default:
+ assert(0);
+ break;
+ }
+
+ return true;
+}
+
+void* load_png(const void* pImage_buf, size_t buf_size, uint32_t desired_chans, uint32_t& width, uint32_t& height, uint32_t& num_chans)
+{
+ width = 0;
+ height = 0;
+ num_chans = 0;
+
+ if ((!pImage_buf) || (buf_size < MIN_PNG_SIZE))
+ {
+ assert(0);
+ return nullptr;
+ }
+
+ if (desired_chans > 4)
+ {
+ assert(0);
+ return nullptr;
+ }
+
+ png_readonly_memory_file mf;
+ mf.init(pImage_buf, buf_size);
+
+ png_decoder dec;
+
+ int status = dec.png_scan(&mf);
+ if ((status != 0) || (dec.m_img_supported_flag != TRUE))
+ return nullptr;
+
+ uint32_t colortype = dec.m_ihdr.m_color_type;
+ switch (colortype)
+ {
+ case PNG_COLOR_TYPE_GREYSCALE:
+ num_chans = dec.m_trns_flag ? 2 : 1;
+ break;
+ case PNG_COLOR_TYPE_GREYSCALE_ALPHA:
+ num_chans = 2;
+ break;
+ case PNG_COLOR_TYPE_PALETTIZED:
+ case PNG_COLOR_TYPE_TRUECOLOR:
+ num_chans = dec.m_trns_flag ? 4 : 3;
+ break;
+ case PNG_COLOR_TYPE_TRUECOLOR_ALPHA:
+ num_chans = 4;
+ break;
+ default:
+ assert(0);
+ break;
+ }
+
+ if (!desired_chans)
+ desired_chans = num_chans;
+
+#if 0
+ printf("lode_png: %ux%u bitdepth: %u colortype: %u trns: %u ilace: %u\n",
+ dec.m_ihdr.m_width,
+ dec.m_ihdr.m_height,
+ dec.m_ihdr.m_bit_depth,
+ dec.m_ihdr.m_color_type,
+ dec.m_trns_flag,
+ dec.m_ihdr.m_ilace_type);
+#endif
+
+ width = dec.m_ihdr.m_width;
+ height = dec.m_ihdr.m_height;
+ uint32_t bitdepth = dec.m_ihdr.m_bit_depth;
+ uint32_t pitch = width * desired_chans;
+
+ uint64_t total_size = (uint64_t)pitch * height;
+ if (total_size > 0x7FFFFFFFULL)
+ return nullptr;
+
+ uint8_t* pBuf = (uint8_t*)malloc((size_t)total_size);
+ if (!pBuf)
+ return nullptr;
+
+ if (dec.png_decode_start() != 0)
+ {
+ free(pBuf);
+ return nullptr;
+ }
+
+ uint8_t* pDst = pBuf;
+
+ for (uint32_t y = 0; y < height; y++, pDst += pitch)
+ {
+ uint8_t* pLine;
+ uint32_t line_bytes;
+ if (dec.png_decode((void**)&pLine, &line_bytes) != 0)
+ {
+ free(pBuf);
+ return nullptr;
+ }
+
+ // This conversion matrix handles converting RGB->Luma, converting grayscale samples to 8-bit samples, converting palettized images, and PNG transparency.
+ switch (colortype)
+ {
+ case PNG_COLOR_TYPE_GREYSCALE:
+ {
+ uint32_t trans_value = dec.m_trns_value[0];
+
+ switch (desired_chans)
+ {
+ case 1:
+ if (bitdepth == 16)
+ {
+ assert(line_bytes == width * 2);
+
+ for (uint32_t i = 0; i < width; i++)
+ pDst[i] = dec.m_img_pal[pLine[i * 2 + 0] * 3];
+ }
+ else if (bitdepth == 8)
+ {
+ assert(line_bytes == width);
+ memcpy(pDst, pLine, pitch);
+ }
+ else
+ {
+ assert(line_bytes == width);
+ for (uint32_t i = 0; i < width; i++)
+ pDst[i] = dec.m_img_pal[pLine[i] * 3];
+ }
+ break;
+ case 2:
+ if (bitdepth == 16)
+ {
+ assert(line_bytes == width * 2);
+ for (uint32_t i = 0; i < width; i++)
+ {
+ pDst[i * 2 + 0] = dec.m_img_pal[pLine[i * 2 + 0] * 3];
+ pDst[i * 2 + 1] = pLine[i * 2 + 1];
+ }
+ }
+ else if (dec.m_trns_flag)
+ {
+ assert(line_bytes == width);
+ for (uint32_t i = 0; i < width; i++)
+ {
+ pDst[i * 2 + 0] = dec.m_img_pal[pLine[i] * 3];
+ pDst[i * 2 + 1] = (pLine[i] == trans_value) ? 0 : 255;
+ }
+ }
+ else
+ {
+ assert(line_bytes == width);
+ for (uint32_t i = 0; i < width; i++)
+ {
+ pDst[i * 2 + 0] = dec.m_img_pal[pLine[i] * 3];
+ pDst[i * 2 + 1] = 255;
+ }
+ }
+ break;
+ case 3:
+ if (bitdepth == 16)
+ {
+ assert(line_bytes == width * 2);
+ for (uint32_t i = 0; i < width; i++)
+ {
+ uint8_t c = dec.m_img_pal[pLine[i * 2 + 0] * 3];
+ pDst[i * 3 + 0] = c;
+ pDst[i * 3 + 1] = c;
+ pDst[i * 3 + 2] = c;
+ }
+ }
+ else
+ {
+ assert(line_bytes == width);
+ for (uint32_t i = 0; i < width; i++)
+ {
+ uint8_t c = dec.m_img_pal[pLine[i] * 3];
+ pDst[i * 3 + 0] = c;
+ pDst[i * 3 + 1] = c;
+ pDst[i * 3 + 2] = c;
+ }
+ }
+ break;
+ case 4:
+ if (bitdepth == 16)
+ {
+ assert(line_bytes == width * 2);
+ for (uint32_t i = 0; i < width; i++)
+ {
+ uint8_t c = dec.m_img_pal[pLine[i * 2 + 0] * 3];
+ pDst[i * 4 + 0] = c;
+ pDst[i * 4 + 1] = c;
+ pDst[i * 4 + 2] = c;
+ pDst[i * 4 + 3] = pLine[i * 2 + 1];
+ }
+ }
+ else if (dec.m_trns_flag)
+ {
+ assert(line_bytes == width);
+ for (uint32_t i = 0; i < width; i++)
+ {
+ uint8_t c = dec.m_img_pal[pLine[i] * 3];
+ pDst[i * 4 + 0] = c;
+ pDst[i * 4 + 1] = c;
+ pDst[i * 4 + 2] = c;
+ pDst[i * 4 + 3] = (pLine[i] == trans_value) ? 0 : 255;
+ }
+ }
+ else
+ {
+ assert(line_bytes == width);
+ for (uint32_t i = 0; i < width; i++)
+ {
+ uint8_t c = dec.m_img_pal[pLine[i] * 3];
+ pDst[i * 4 + 0] = c;
+ pDst[i * 4 + 1] = c;
+ pDst[i * 4 + 2] = c;
+ pDst[i * 4 + 3] = 255;
+ }
+ }
+ break;
+ }
+
+ break;
+ }
+ case PNG_COLOR_TYPE_GREYSCALE_ALPHA:
+ {
+ assert(line_bytes == width * 2);
+
+ switch (desired_chans)
+ {
+ case 1:
+ for (uint32_t i = 0; i < width; i++)
+ pDst[i] = dec.m_img_pal[pLine[i * 2 + 0] * 3];
+ break;
+ case 2:
+ assert(line_bytes == pitch);
+ if (bitdepth >= 8)
+ memcpy(pDst, pLine, pitch);
+ else
+ {
+ for (uint32_t i = 0; i < width; i++)
+ {
+ pDst[i * 2 + 0] = dec.m_img_pal[pLine[i * 2 + 0] * 3];
+ pDst[i * 2 + 1] = pLine[i * 2 + 1];
+ }
+ }
+ break;
+ case 3:
+ for (uint32_t i = 0; i < width; i++)
+ {
+ uint8_t c = dec.m_img_pal[pLine[i * 2 + 0] * 3];
+ pDst[i * 3 + 0] = c;
+ pDst[i * 3 + 1] = c;
+ pDst[i * 3 + 2] = c;
+ }
+ break;
+ case 4:
+ for (uint32_t i = 0; i < width; i++)
+ {
+ uint8_t c = dec.m_img_pal[pLine[i * 2 + 0] * 3];
+ pDst[i * 4 + 0] = c;
+ pDst[i * 4 + 1] = c;
+ pDst[i * 4 + 2] = c;
+ pDst[i * 4 + 3] = pLine[i * 2 + 1];
+ }
+ break;
+ }
+
+ break;
+ }
+ case PNG_COLOR_TYPE_PALETTIZED:
+ {
+ assert(line_bytes == width);
+
+ switch (desired_chans)
+ {
+ case 1:
+ for (uint32_t i = 0; i < width; i++)
+ {
+ const uint8_t* p = &dec.m_img_pal[pLine[i] * 3];
+ pDst[i] = get_709_luma(p[0], p[1], p[2]);
+ }
+ break;
+ case 2:
+ if (dec.m_trns_flag)
+ {
+ for (uint32_t i = 0; i < width; i++)
+ {
+ const uint8_t* p = &dec.m_img_pal[pLine[i] * 3];
+ pDst[i * 2 + 0] = get_709_luma(p[0], p[1], p[2]);
+ pDst[i * 2 + 1] = (uint8_t)dec.m_trns_value[pLine[i]];
+ }
+ }
+ else
+ {
+ for (uint32_t i = 0; i < width; i++)
+ {
+ const uint8_t* p = &dec.m_img_pal[pLine[i] * 3];
+ pDst[i * 2 + 0] = get_709_luma(p[0], p[1], p[2]);
+ pDst[i * 2 + 1] = 255;
+ }
+ }
+ break;
+ case 3:
+ for (uint32_t i = 0; i < width; i++)
+ {
+ const uint8_t* p = &dec.m_img_pal[pLine[i] * 3];
+ pDst[i * 3 + 0] = p[0];
+ pDst[i * 3 + 1] = p[1];
+ pDst[i * 3 + 2] = p[2];
+ }
+ break;
+ case 4:
+ if (dec.m_trns_flag)
+ {
+ for (uint32_t i = 0; i < width; i++)
+ {
+ const uint8_t* p = &dec.m_img_pal[pLine[i] * 3];
+ pDst[i * 4 + 0] = p[0];
+ pDst[i * 4 + 1] = p[1];
+ pDst[i * 4 + 2] = p[2];
+ pDst[i * 4 + 3] = (uint8_t)dec.m_trns_value[pLine[i]];
+ }
+ }
+ else
+ {
+ for (uint32_t i = 0; i < width; i++)
+ {
+ const uint8_t* p = &dec.m_img_pal[pLine[i] * 3];
+ pDst[i * 4 + 0] = p[0];
+ pDst[i * 4 + 1] = p[1];
+ pDst[i * 4 + 2] = p[2];
+ pDst[i * 4 + 3] = 255;
+ }
+ }
+ break;
+ }
+
+ break;
+ }
+ case PNG_COLOR_TYPE_TRUECOLOR:
+ case PNG_COLOR_TYPE_TRUECOLOR_ALPHA:
+ {
+ assert(line_bytes == width * 4);
+
+ switch (desired_chans)
+ {
+ case 1:
+ for (uint32_t i = 0; i < width; i++)
+ {
+ const uint8_t* p = &pLine[i * 4];
+ pDst[i] = get_709_luma(p[0], p[1], p[2]);
+ }
+ break;
+ case 2:
+ for (uint32_t i = 0; i < width; i++)
+ {
+ const uint8_t* p = &pLine[i * 4];
+ pDst[i * 2 + 0] = get_709_luma(p[0], p[1], p[2]);
+ pDst[i * 2 + 1] = p[3];
+ }
+ break;
+ case 3:
+ for (uint32_t i = 0; i < width; i++)
+ {
+ const uint8_t* p = &pLine[i * 4];
+ pDst[i * 3 + 0] = p[0];
+ pDst[i * 3 + 1] = p[1];
+ pDst[i * 3 + 2] = p[2];
+ }
+ break;
+ case 4:
+ memcpy(pDst, pLine, pitch);
+ break;
+ }
+
+ break;
+ }
+ default:
+ assert(0);
+ break;
+ }
+
+ } // y
+
+ return pBuf;
+}
+
+} // namespace pv_png
+
+/*
+ This is free and unencumbered software released into the public domain.
+
+ Anyone is free to copy, modify, publish, use, compile, sell, or
+ distribute this software, either in source code form or as a compiled
+ binary, for any purpose, commercial or non-commercial, and by any
+ means.
+
+ In jurisdictions that recognize copyright laws, the author or authors
+ of this software dedicate any and all copyright interest in the
+ software to the public domain. We make this dedication for the benefit
+ of the public at large and to the detriment of our heirs and
+ successors. We intend this dedication to be an overt act of
+ relinquishment in perpetuity of all present and future rights to this
+ software under copyright law.
+
+ 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 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.
+
+ For more information, please refer to <http://unlicense.org/>
+
+ Richard Geldreich, Jr.
+ 1/20/2022
+*/
diff --git a/thirdparty/basis_universal/encoder/pvpngreader.h b/thirdparty/basis_universal/encoder/pvpngreader.h
new file mode 100644
index 0000000000..4f3fe46b82
--- /dev/null
+++ b/thirdparty/basis_universal/encoder/pvpngreader.h
@@ -0,0 +1,48 @@
+// pngreader.h - Public Domain - see unlicense at bottom of pvpngreader.cpp
+#pragma once
+#include <stdint.h>
+
+namespace pv_png
+{
+ // PNG color types
+ enum
+ {
+ PNG_COLOR_TYPE_GREYSCALE = 0,
+ PNG_COLOR_TYPE_TRUECOLOR = 2,
+ PNG_COLOR_TYPE_PALETTIZED = 3,
+ PNG_COLOR_TYPE_GREYSCALE_ALPHA = 4,
+ PNG_COLOR_TYPE_TRUECOLOR_ALPHA = 6
+ };
+
+ // PNG file description
+ struct png_info
+ {
+ uint32_t m_width;
+ uint32_t m_height;
+
+ uint32_t m_num_chans; // The number of channels, factoring in transparency. Ranges from [1-4].
+
+ uint32_t m_bit_depth; // PNG ihdr bit depth: 1, 2, 4, 8 or 16
+ uint32_t m_color_type; // PNG ihdr color type, PNG_COLOR_TYPE_GRAYSCALE etc.
+
+ bool m_has_gamma; // true if the PNG file had a GAMA chunk
+ uint32_t m_gamma_value; // PNG GAMA chunk value, scaled by 100000
+
+ bool m_has_trns; // true if the PNG file used colorkey transparency
+ };
+
+ // Retrieved information about the PNG file.
+ // Returns false on any errors.
+ bool get_png_info(const void* pImage_buf, size_t buf_size, png_info& info);
+
+ // Input parameters:
+ // pImage_buf, buf_size - pointer to PNG image data
+ // desired_chans - desired number of output channels. 0=auto, 1=grayscale, 2=grayscale alpha, 3=24bpp RGB, 4=32bpp RGBA
+ //
+ // Output parameters:
+ // width, height - PNG image resolution
+ // num_chans - actual number of channels in PNG, from [1,4] (factoring in transparency)
+ //
+ // Returns nullptr on any errors.
+ void* load_png(const void* pImage_buf, size_t buf_size, uint32_t desired_chans, uint32_t &width, uint32_t &height, uint32_t& num_chans);
+}
diff --git a/thirdparty/basis_universal/transcoder/basisu.h b/thirdparty/basis_universal/transcoder/basisu.h
index f33baf67c8..1230b59ec6 100644
--- a/thirdparty/basis_universal/transcoder/basisu.h
+++ b/thirdparty/basis_universal/transcoder/basisu.h
@@ -21,6 +21,11 @@
#pragma warning (disable : 4127) // warning C4127: conditional expression is constant
#pragma warning (disable : 4530) // C++ exception handler used, but unwind semantics are not enabled.
+ // Slamming this off always for v1.16 because we've gotten rid of most std containers.
+ #ifndef BASISU_NO_ITERATOR_DEBUG_LEVEL
+ #define BASISU_NO_ITERATOR_DEBUG_LEVEL (1)
+ #endif
+
#ifndef BASISU_NO_ITERATOR_DEBUG_LEVEL
//#define _HAS_ITERATOR_DEBUGGING 0
@@ -165,6 +170,10 @@ namespace basisu
{
if (n)
{
+ if (vec.size())
+ {
+ assert((pObjs + n) <= vec.begin() || (pObjs >= vec.end()));
+ }
const size_t cur_s = vec.size();
vec.resize(cur_s + n);
memcpy(&vec[cur_s], pObjs, sizeof(R) * n);
@@ -173,6 +182,7 @@ namespace basisu
template<typename T> inline void append_vector(T &vec, const T &other_vec)
{
+ assert(&vec != &other_vec);
if (other_vec.size())
append_vector(vec, &other_vec[0], other_vec.size());
}
diff --git a/thirdparty/basis_universal/transcoder/basisu_containers.h b/thirdparty/basis_universal/transcoder/basisu_containers.h
index 1ca4bab307..d3e14369ba 100644
--- a/thirdparty/basis_universal/transcoder/basisu_containers.h
+++ b/thirdparty/basis_universal/transcoder/basisu_containers.h
@@ -12,6 +12,12 @@
#define HAS_MALLOC_USABLE_SIZE 1
#endif
+// Set to 1 to always check vector operator[], front(), and back() even in release.
+#define BASISU_VECTOR_FORCE_CHECKING 0
+
+// If 1, the vector container will not query the CRT to get the size of resized memory blocks.
+#define BASISU_VECTOR_DETERMINISTIC 1
+
#ifdef _MSC_VER
#define BASISU_FORCE_INLINE __forceinline
#else
@@ -279,7 +285,10 @@ namespace basisu
m_size = other.m_size;
if (BASISU_IS_BITWISE_COPYABLE(T))
- memcpy(m_p, other.m_p, m_size * sizeof(T));
+ {
+ if ((m_p) && (other.m_p))
+ memcpy(m_p, other.m_p, m_size * sizeof(T));
+ }
else
{
T* pDst = m_p;
@@ -320,7 +329,10 @@ namespace basisu
}
if (BASISU_IS_BITWISE_COPYABLE(T))
- memcpy(m_p, other.m_p, other.m_size * sizeof(T));
+ {
+ if ((m_p) && (other.m_p))
+ memcpy(m_p, other.m_p, other.m_size * sizeof(T));
+ }
else
{
T* pDst = m_p;
@@ -348,20 +360,81 @@ namespace basisu
// operator[] will assert on out of range indices, but in final builds there is (and will never be) any range checking on this method.
//BASISU_FORCE_INLINE const T& operator[] (uint32_t i) const { assert(i < m_size); return m_p[i]; }
//BASISU_FORCE_INLINE T& operator[] (uint32_t i) { assert(i < m_size); return m_p[i]; }
-
+
+#if !BASISU_VECTOR_FORCE_CHECKING
BASISU_FORCE_INLINE const T& operator[] (size_t i) const { assert(i < m_size); return m_p[i]; }
BASISU_FORCE_INLINE T& operator[] (size_t i) { assert(i < m_size); return m_p[i]; }
+#else
+ BASISU_FORCE_INLINE const T& operator[] (size_t i) const
+ {
+ if (i >= m_size)
+ {
+ fprintf(stderr, "operator[] invalid index: %u, max entries %u, type size %u\n", (uint32_t)i, m_size, (uint32_t)sizeof(T));
+ abort();
+ }
+ return m_p[i];
+ }
+ BASISU_FORCE_INLINE T& operator[] (size_t i)
+ {
+ if (i >= m_size)
+ {
+ fprintf(stderr, "operator[] invalid index: %u, max entries %u, type size %u\n", (uint32_t)i, m_size, (uint32_t)sizeof(T));
+ abort();
+ }
+ return m_p[i];
+ }
+#endif
// at() always includes range checking, even in final builds, unlike operator [].
// The first element is returned if the index is out of range.
BASISU_FORCE_INLINE const T& at(size_t i) const { assert(i < m_size); return (i >= m_size) ? m_p[0] : m_p[i]; }
BASISU_FORCE_INLINE T& at(size_t i) { assert(i < m_size); return (i >= m_size) ? m_p[0] : m_p[i]; }
-
+
+#if !BASISU_VECTOR_FORCE_CHECKING
BASISU_FORCE_INLINE const T& front() const { assert(m_size); return m_p[0]; }
BASISU_FORCE_INLINE T& front() { assert(m_size); return m_p[0]; }
BASISU_FORCE_INLINE const T& back() const { assert(m_size); return m_p[m_size - 1]; }
BASISU_FORCE_INLINE T& back() { assert(m_size); return m_p[m_size - 1]; }
+#else
+ BASISU_FORCE_INLINE const T& front() const
+ {
+ if (!m_size)
+ {
+ fprintf(stderr, "front: vector is empty, type size %u\n", (uint32_t)sizeof(T));
+ abort();
+ }
+ return m_p[0];
+ }
+ BASISU_FORCE_INLINE T& front()
+ {
+ if (!m_size)
+ {
+ fprintf(stderr, "front: vector is empty, type size %u\n", (uint32_t)sizeof(T));
+ abort();
+ }
+ return m_p[0];
+ }
+
+ BASISU_FORCE_INLINE const T& back() const
+ {
+ if(!m_size)
+ {
+ fprintf(stderr, "back: vector is empty, type size %u\n", (uint32_t)sizeof(T));
+ abort();
+ }
+ return m_p[m_size - 1];
+ }
+ BASISU_FORCE_INLINE T& back()
+ {
+ if (!m_size)
+ {
+ fprintf(stderr, "back: vector is empty, type size %u\n", (uint32_t)sizeof(T));
+ abort();
+ }
+ return m_p[m_size - 1];
+ }
+#endif
BASISU_FORCE_INLINE const T* get_ptr() const { return m_p; }
BASISU_FORCE_INLINE T* get_ptr() { return m_p; }
@@ -952,6 +1025,8 @@ namespace basisu
// Caller is granting ownership of the indicated heap block.
// Block must have size constructed elements, and have enough room for capacity elements.
+ // The block must have been allocated using malloc().
+ // Important: This method is used in Basis Universal. If you change how this container allocates memory, you'll need to change any users of this method.
inline bool grant_ownership(T* p, uint32_t size, uint32_t capacity)
{
// To to prevent the caller from obviously shooting themselves in the foot.
diff --git a/thirdparty/basis_universal/transcoder/basisu_containers_impl.h b/thirdparty/basis_universal/transcoder/basisu_containers_impl.h
index 6555171419..d5cb61569b 100644
--- a/thirdparty/basis_universal/transcoder/basisu_containers_impl.h
+++ b/thirdparty/basis_universal/transcoder/basisu_containers_impl.h
@@ -55,7 +55,9 @@ namespace basisu
abort();
}
-#ifdef _MSC_VER
+#if BASISU_VECTOR_DETERMINISTIC
+ actual_size = desired_size;
+#elif defined(_MSC_VER)
actual_size = _msize(new_p);
#elif HAS_MALLOC_USABLE_SIZE
actual_size = malloc_usable_size(new_p);
@@ -82,7 +84,9 @@ namespace basisu
abort();
}
-#ifdef _MSC_VER
+#if BASISU_VECTOR_DETERMINISTIC
+ actual_size = desired_size;
+#elif defined(_MSC_VER)
actual_size = _msize(new_p);
#elif HAS_MALLOC_USABLE_SIZE
actual_size = malloc_usable_size(new_p);
diff --git a/thirdparty/basis_universal/transcoder/basisu_global_selector_cb.h b/thirdparty/basis_universal/transcoder/basisu_global_selector_cb.h
deleted file mode 100644
index 8ab5098898..0000000000
--- a/thirdparty/basis_universal/transcoder/basisu_global_selector_cb.h
+++ /dev/null
@@ -1,272 +0,0 @@
-// Copyright (C) 2019-2020 Binomial LLC. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-{
-0x0, 0x505, 0x5555, 0x5F5F, 0x5055050, 0x5055F5F, 0x50AAA551, 0xFAA5A5AA, 0x6AAA5095, 0x41E6FBAB, 0x19AE99F5, 0x1057AAA4, 0x54005A1A, 0x4459AEAF, 0x56015B, 0xBAA9A554,
-0x4335E5E0, 0xD9FE5FBB, 0x2525256A, 0x9AE892, 0xC0D5FAF5, 0x5BA5E641, 0x7EDEC8B8, 0xBB671211, 0x4C9844EE, 0xEE042415, 0xE5663EAE, 0x90909091, 0xAAA45AFF, 0x15556E1D, 0xA6959195, 0x4BFF8BF,
-0x5166AAF, 0x15490065, 0x6F5BAFAF, 0xFF00FF00, 0xD96956AA, 0x15AF6B, 0xFF5A00AA, 0xE0E557AA, 0x1A6F19BD, 0x69655555, 0xD0500158, 0xEEEDD894, 0xE4E4FE, 0xC71B7B10, 0x55AA5AAF, 0x50AA59BE,
-0xE4E990E4, 0x5353B63B, 0xFEE5D0E4, 0x96AF051A, 0x3CC95A6, 0x70B5A40D, 0x9504196E, 0x4A0BD7A3, 0x11B89592, 0xAAFF4095, 0x55A5D4E0, 0xBBA55050, 0x1111666, 0xA5544000, 0xED994444, 0x5A56BF,
-0x94A954B9, 0xFB651000, 0x604E633E, 0x14291A15, 0x56965956, 0xB8E0D0C0, 0x5A565A55, 0x65A61A6A, 0xE490F990, 0xCA87AAF5, 0x6060A0B, 0x24C23143, 0x55AA9A40, 0x505E1605, 0xCEC0486E, 0x156E55EA,
-0x79978B0B, 0x4595F53C, 0x405C4AF7, 0xC1897D75, 0xD5F40BA6, 0x95444017, 0x14AD6935, 0x87C7A7BD, 0x4A4E8597, 0xFF1D7E55, 0x451400F9, 0x1112277B, 0x9A0590F8, 0x53E3492E, 0xE590E995, 0x7E730A9A,
-0x929697E7, 0x2E781609, 0xE22317A1, 0xEDE9D884, 0xDDD75CDD, 0xAF1B6F1A, 0xE6909047, 0xA77DAD5D, 0x184C0D5D, 0xFAB56010, 0x5EA4F1D0, 0x11166B6B, 0xF51A7AD6, 0xF79950F4, 0x1B6B1B11, 0x9A6D6469,
-0x441997E, 0x4546869A, 0x95AA6965, 0x155A6A, 0x6E68B0E6, 0x5A55A665, 0x1B051605, 0x601D8BE6, 0xBD2F1B06, 0x409A429B, 0x23272721, 0xB07454A9, 0x7E66A3A1, 0x1B6A5500, 0xA0E0F5A6, 0xBF5A0500,
-0x55A5A9A9, 0x99D9E995, 0xE440566F, 0x6550BE99, 0x2267777B, 0xFA50FE50, 0xA657B441, 0xB4E29343, 0x555090E5, 0x45465B6B, 0xE654E6, 0xEA90469B, 0x2E05D2F4, 0x99594444, 0xF1C20746, 0x295AD2E0,
-0xF990EA95, 0x804459AE, 0xA9999894, 0x1F41E4A5, 0x4040E5E5, 0x5481E1F2, 0x2AFF59F1, 0x6B6B1712, 0xA7131051, 0xF9406F16, 0x1B2B5B9E, 0x587E0F2F, 0x547E1919, 0xD0F5645B, 0xB1B1B1B, 0x5756A4FE,
-0x46A9B965, 0x1529F99D, 0xE490E490, 0x4495FE, 0x985E0B06, 0x5FD2D23A, 0x5D0E95A, 0xF69103F4, 0x4029790, 0x1B062F1B, 0xEE594500, 0xB6539B5A, 0x106165BA, 0xD26B7C8D, 0x8B2A25A5, 0x55EAD5E3,
-0x431FB8E1, 0xBEB4E646, 0x9A5A4545, 0x5015A6B, 0x90D4B83D, 0xDB8A99A4, 0x9E894905, 0xDD7D1101, 0xA95E00BF, 0x579FA5A5, 0xA292D145, 0x93292C96, 0xF9A995A5, 0xBFE8A450, 0xB990D15B, 0x45D1E01A,
-0x4BD3F767, 0xF243479A, 0x7E420927, 0xF9E5E090, 0xA1C869F, 0x253A36, 0x9BAB569A, 0x4147031F, 0xA059AFE, 0xE0D6590F, 0xD5EAD5E6, 0x9A4B4641, 0x5AAA4406, 0x55EA90E4, 0x10179BC4, 0x44485999,
-0x5156253E, 0x1F29E054, 0xCDDAA773, 0x5601AB05, 0x94FC94C0, 0x116166BB, 0xBF964006, 0x414196EB, 0x8498D9ED, 0xB5E08687, 0xBD564150, 0x2B8D9DF8, 0x7F12017E, 0x90904747, 0x50B56AB, 0xDBD19490,
-0xBB5A5659, 0xBAF40E4, 0x6D649014, 0x1D29166F, 0x414F3D75, 0x6F929540, 0x565AAF05, 0xBD9884E5, 0xF5342A25, 0x157915AE, 0x1A055A55, 0x9019A19F, 0x64B96A05, 0x35689CCC, 0x996012E2, 0x5252677B,
-0x156AA401, 0x25BCE483, 0xAA665555, 0xD6AF4B0F, 0x3F4BBDE0, 0x9404A9AF, 0xA590F9E4, 0x8191A5FD, 0x568190B4, 0x591A6616, 0x92C11D3E, 0x97D2E5FC, 0xF5A55A6F, 0xBEE0969B, 0x8918B4CA, 0xE0915397,
-0x5243472F, 0x95EA4055, 0x55E6E0A4, 0x9AEBD181, 0xF4A25357, 0x11115666, 0xFE45FF0A, 0x8BC7D2E1, 0x800556BB, 0x757D6A96, 0xFA909A5B, 0x68962FDB, 0xEB0056AA, 0x69970241, 0xAA58AD64, 0xC4D9DED5,
-0x5A5BF2F0, 0xBD0905B4, 0x197D7801, 0x8987EDC4, 0xFF40565A, 0x460978A4, 0xE4067FE4, 0x5DA23153, 0xB90565AE, 0x5E14B946, 0x4E35879F, 0xC72F8666, 0x1816472F, 0x9A5A4949, 0x64A0D1E5, 0xC7025B1A,
-0x1B061B55, 0xFFAA051B, 0xAF5DEDA1, 0xAA955094, 0x6659965A, 0x99A95DAD, 0x9450A5A5, 0xA550A595, 0x6914B950, 0xEF454944, 0x906BB990, 0xD680944B, 0xE091461B, 0x5363B7BB, 0xF0743906, 0x66566A69,
-0x4B85D0BC, 0x40E494A5, 0x1161B6B6, 0x519BD59, 0x5998401, 0x1651F26B, 0x5709BB1B, 0x6AE1D1B9, 0xD19297BF, 0x1A69FEE4, 0x6066B5A, 0x74A56491, 0xB4661151, 0x559191A4, 0x96756A68, 0xF5C791A6,
-0x20297A15, 0x6B660100, 0x313177A2, 0x55054150, 0x6A969669, 0xF0B82111, 0x555A6996, 0xB666295A, 0x1EA95441, 0x6A166BA5, 0x8C18566D, 0x2797278A, 0x82A552BD, 0xF964BD14, 0x41540668, 0x5078785A,
-0x5754FE, 0xF9E0E5FA, 0x15453D3F, 0x5A9699A9, 0xD9854147, 0x849494E9, 0x1DC39734, 0x67E797B3, 0x107066F, 0xAED9986C, 0xAB564140, 0x9B51A6B7, 0x5FD3E2F4, 0x5A5429F9, 0xF9A05161, 0x5A5A6965,
-0xDDD88484, 0xFA50FA55, 0x90E5E4FA, 0x6BF166B, 0x6566665A, 0xE450A6E5, 0xEB45AA04, 0xDA9A4646, 0xD7A37235, 0x11431B97, 0xD41D6E64, 0xD3D3A1A0, 0x5D540E9, 0x627777BB, 0x5054A4BE, 0x593A05ED,
-0x2EBE454B, 0x1ABA1015, 0x7C64B460, 0xC358B47F, 0x176F4293, 0xA6E417AB, 0xF611756E, 0x1F40D499, 0x84885D5F, 0x2F0B9B9B, 0x14BE05, 0xE5919590, 0x101B146E, 0x7B261190, 0xDC96F8B0, 0xF460257E,
-0x34B0AFC0, 0xEB9140FE, 0xC5C589DD, 0x1F6D6865, 0xF5100195, 0xAF560607, 0x505066B5, 0x7E590999, 0x13E190E4, 0xA56ABD59, 0xC21B68D7, 0xE594E4, 0xF6576E50, 0xFFA751D1, 0x19A179CB, 0x2726797,
-0xA1931C7C, 0xE1D90F1B, 0x7F2B2510, 0x6AF90055, 0x5F1E4C88, 0xE410757A, 0x95702212, 0x7B762100, 0x1B05BF6A, 0x16F05AB, 0xDDC5C9C9, 0x72BE594, 0xE490E555, 0xC5E50106, 0x816DAC16, 0x5540FA90,
-0x156605FF, 0x3B372621, 0x2B57A67D, 0x6C661E16, 0x1E97A917, 0xE6E2D383, 0x1B40F91B, 0xD9A63333, 0x34E18629, 0xA71616E9, 0x84946D99, 0x1B6906AF, 0xEFDE8904, 0x88F52470, 0x50E990F8, 0x4182E1B4,
-0xBAE1865B, 0xF48E4F4, 0x64A0517F, 0xA1F45902, 0x12177BF5, 0x465EBD91, 0x37A747, 0xF0A5106, 0x4C4E8A5, 0x62779E65, 0xDE494989, 0x7B6796D1, 0xC5C5C58A, 0xE4786B07, 0x6F07E0F9, 0x5554A550,
-0x95559333, 0x747A6B5, 0xA4A45500, 0xE998444, 0xF5966371, 0x111116BB, 0x783A679, 0x95409AFF, 0xFF9690E4, 0x60743EBD, 0x1C5A90FD, 0x2B051EE9, 0x5B7A1624, 0xEB415701, 0x1B6B0155, 0x9BCB8586,
-0x599E5C51, 0x510064BE, 0x50FA6060, 0x16066B5B, 0x54DA89D5, 0xA01468B5, 0xC1655E5, 0x55FF6657, 0xE4985E9, 0xD738BE27, 0x6938D450, 0x47D0E4FE, 0x4858986E, 0xE793431E, 0x1A05FFFD, 0x18939141,
-0x15EE4620, 0x79E45151, 0x663AA556, 0xD1266DD9, 0x7E0655E0, 0xB6A7676D, 0x54A96AA5, 0x1664092B, 0x56517AA0, 0xD6402CB8, 0x40A7773C, 0x554F0646, 0x488D5F2F, 0xE4E49095, 0x1C7CB4E0, 0x7C27529A,
-0xF6FAA151, 0xCC7358D6, 0xE8406D15, 0x6E074B5F, 0x638359F7, 0xD4E9A88C, 0xE888050F, 0xE6546A0B, 0xB9904EBD, 0x755061AF, 0xA371285C, 0xE95A1904, 0xCADD042D, 0x757F6ED6, 0xE4A91F06, 0x6D5D0909,
-0xE49559B8, 0xF4B0569B, 0x8454B5B9, 0x2161B5B6, 0x855AADEE, 0x575B0544, 0xBFE4D086, 0xE484CBEB, 0xF9F5426F, 0xCC653366, 0xA3524656, 0x9A5989E4, 0x10451466, 0x71F1655, 0x9B90A4ED, 0x14599FF,
-0x9666AA91, 0x5A99A945, 0x9685CD8F, 0xB8506A91, 0xB427E0F8, 0x50A990FE, 0xA5FA9090, 0x60D4DA80, 0x28E35CB3, 0x55E4AA, 0xD20B55A4, 0xE15F86, 0x36E6995E, 0x54036FFF, 0xA79D2250, 0xBA11A500,
-0x404603AC, 0x641065A0, 0x9DD84A0A, 0x969B061B, 0x36737313, 0x7B65631A, 0xA4E4C099, 0x9590448F, 0xD57F0680, 0x6094D86D, 0x15D8E3BD, 0x757F7DD7, 0xB45B854, 0x6560FA98, 0x7A805637, 0xD68416BB,
-0x7B767131, 0x90F9E8FE, 0xA4E54045, 0xE0411F6E, 0xD57D7DDD, 0x33CB1C33, 0x58ADD010, 0x9B1FA5C6, 0xA401BE95, 0xA950F994, 0xA851971E, 0x33CC33CC, 0x10F0B164, 0x151A6F01, 0x78B5660C, 0x33333225,
-0x41162402, 0x5F0506CB, 0xFD96166F, 0xE4417643, 0x56A51A94, 0x5323BFEA, 0xD12DD12D, 0xA999959A, 0x547C6482, 0x499EE652, 0x4AC7D1E5, 0x2D3DAD07, 0x6B171201, 0xAF065854, 0xD6C4891D, 0xCC739CE7,
-0x9D692663, 0x3E41597C, 0xF38314BB, 0x1150A4F4, 0xE1E50FA, 0xF4D60B6F, 0x5A54E590, 0x227AB5F0, 0x73A3D7FC, 0xD7420A59, 0x12015A59, 0x4F1999D5, 0xA90EE44A, 0x1065B9B5, 0xD10533E3, 0xBA918409,
-0xE5409FEF, 0x4549047F, 0x6B57A6A5, 0xE94691AA, 0x111A6E7E, 0x45496BA, 0x49FD999, 0x414D5B8D, 0xAB10EF5E, 0xE9878505, 0x8C910499, 0xC0C5DA3E, 0x6F1B7298, 0x177D78D0, 0x687B5665, 0x3F470353,
-0x1441A590, 0xE1965F6F, 0x5A5B4A8D, 0x47D7C98, 0xD1404115, 0xB89A053F, 0x8C4095FE, 0x4861E055, 0x3B417607, 0xF9E0E4E0, 0x65B0506, 0x93633236, 0xAA07A5E4, 0x77747080, 0x776160F0, 0x1672B05,
-0xA54E0428, 0x520A9625, 0xE581065, 0x90C76D76, 0x2157B2B3, 0x5C5BE06, 0x151A5A01, 0xA9D5C081, 0xCBCD9854, 0xFDD1061F, 0xB66111B1, 0x9DC3D7B0, 0x650A7642, 0x8095734D, 0xD052011B, 0xE0A1479B,
-0x9501BFF8, 0xE9D9BD0D, 0x7A017925, 0x69A67373, 0x41E0E557, 0x5F844124, 0xEAB0695E, 0x566B5040, 0xCCC9D693, 0xA79684DE, 0x6B5BC3C1, 0x9595667B, 0x9C33CA5C, 0x8984C5C5, 0x459BBDE9, 0x1F10A5F4,
-0x22A55AA, 0x97C3430D, 0xAA569A55, 0x552E1E00, 0xD3C3C78B, 0x82C7521E, 0x5B0605EA, 0x5FF69268, 0xD081460B, 0xE4517F06, 0x4448C9CE, 0x2F69F940, 0x476DA470, 0x9F96FE12, 0x4D8D9E8E, 0x6A6A16B5,
-0x1D05BE66, 0x84F5BD, 0x691E1B41, 0xE0939B17, 0x159059AA, 0x1E5792B9, 0x25A701A5, 0x439162E, 0xE994077C, 0x5CC396AA, 0x1D0D9AA5, 0x4A4A598D, 0x1B6F156B, 0x1A1B0F40, 0x34CB34CB, 0x6F542E,
-0x32CC739C, 0x94EB9669, 0xDA8D4E1D, 0xC6C5C46E, 0x10152B3F, 0x8787F9F9, 0x5E42D064, 0x699B05E9, 0x7030295E, 0x495E09BE, 0xEE191016, 0x801D2D56, 0x3A0099F9, 0xEA09059E, 0x5BAB5100, 0x393D49C,
-0x10E15DC2, 0xB056DD4, 0x3536915, 0xE0C18719, 0xEB964090, 0x6172727, 0xFD5900FA, 0xD10B78D1, 0x33332626, 0x50F990F9, 0x78600A5B, 0xE2B5401B, 0xAE5E9404, 0xF2CF0C0, 0x9E9D8080, 0x84E4F4F9,
-0x41F0E59F, 0x90787E12, 0xE4E19143, 0x761D6706, 0x6560BCE5, 0x134A9BD3, 0x23768995, 0x22ADF6, 0x434A5C72, 0xD4985444, 0x70936BFF, 0xAB54E0E7, 0x45E7A682, 0x7A786D90, 0xF8546A00, 0x5F5E4540,
-0x999A651E, 0xF9E297FD, 0xAF86E5, 0xD00B6E54, 0x5442878A, 0x50E940A5, 0x61F6AF1, 0x479701AA, 0xAE455E5D, 0x6560123E, 0x22D17625, 0x83071B64, 0xF9460251, 0x5F4B064A, 0x8742417C, 0x5F89C51A,
-0x14A29F50, 0x5013BF6B, 0x76395676, 0x54A590F9, 0x40915AA7, 0xEB95E041, 0x7E560504, 0x65B9E4D1, 0x3F63A594, 0x17448216, 0x1A4F87F1, 0xF990E696, 0xECE89A50, 0x2266B17, 0x6A959A98, 0x50F5001A,
-0xBF056A55, 0x74470FFE, 0x65251011, 0x9F7D6597, 0x51BB962, 0xA0D04297, 0xA257F0D1, 0x5B1569D5, 0x4F40959E, 0xEC5D1D0D, 0x51A1A, 0x1DF56462, 0xC4491A6F, 0x4B4A55EF, 0xFD741D5F, 0xE1526713,
-0x875153E2, 0x9752A2E2, 0xEFDA8504, 0xF0E84756, 0xE0A196E9, 0x5FAF5C40, 0x9A3359CC, 0xE056062E, 0xB07B71D7, 0x5966475D, 0x66161100, 0x444A0151, 0xDAC7D6F5, 0xFBE8E314, 0x35098512, 0x1A7F7690,
-0xAF970158, 0x666A6996, 0xD1D10938, 0x742969B, 0x4542A5FE, 0x6EBE50A1, 0x816E7955, 0x64E1D0C1, 0x105156AA, 0x6A9AD0F5, 0xB4909E2E, 0x55A6A959, 0x45B4999F, 0x3266CC26, 0x9B915EE, 0x9769E58B,
-0x2EF59968, 0x3F2F0711, 0x79798469, 0x6161B6B6, 0xA79504B1, 0x9B92A351, 0x61C08573, 0xAB1B656F, 0x37271601, 0xE4840979, 0x45D1C1DA, 0xA4C4961B, 0x59A7F2F0, 0xEA9FC147, 0x635362B0, 0x9561EAF,
-0x6B6762A1, 0x585A43D3, 0x8484819F, 0xD1C30D5D, 0x2123101D, 0xA0F8E4F9, 0x63676220, 0x17EB6A5, 0x90E63F27, 0xDD256045, 0x7B66A1A0, 0x64143F6, 0x41D479D7, 0xF1520F82, 0x12B44687, 0x1504BE1A,
-0x90E45401, 0xC4C98E4F, 0x919097C, 0xA7A52919, 0xB9B62313, 0x9695C089, 0x30C5E6BD, 0xAA55669B, 0xD19F0645, 0x1150E2FF, 0x36213121, 0x1F1F0A05, 0x2A315099, 0x2A1E0414, 0xA3E3D04, 0xD5992851,
-0x19A56A45, 0x5D0669E5, 0xA7C1F8C0, 0x84D1E5AA, 0x7292A464, 0x9040F5E4, 0xF185405, 0x1FAE4509, 0xF91690BE, 0x5540A540, 0xA1D2874B, 0x560B65F8, 0xC207E1E6, 0x646D0F9, 0x5A1440, 0xBB454116,
-0x13597242, 0x413A4504, 0x66E7D2D2, 0x61DA6950, 0x519DF0A0, 0xD2926EB4, 0xA583060B, 0x247E1587, 0xE50590BD, 0xEFF50146, 0x6252B722, 0x4B9AF552, 0x42445A5, 0x5D0844D0, 0xD7C1D18, 0x6B53900,
-0x7DD68434, 0xE6964247, 0xE0A50B5, 0x72635347, 0x669A6B06, 0x91549A65, 0x8F097CA5, 0x849458EC, 0xF9B09275, 0x71390D5A, 0x478BC9D6, 0x5D579AA5, 0x9ED08605, 0xCA1C35D3, 0x1029669, 0x1344FEA7,
-0x5B468B87, 0xA7F29990, 0x60BDB855, 0x3430B574, 0x544461FF, 0xC5C9550E, 0x69E716A7, 0x112336, 0x3F11D2D7, 0x2F0796E4, 0xB5250B00, 0x33CC33DD, 0x20357676, 0x7B6F9272, 0x114B09BB, 0xA7F6C987,
-0x32959833, 0x40D25BB6, 0x13170353, 0xD52E5949, 0x93626538, 0x43449A56, 0x655890BA, 0x2F56811B, 0xE5E4C88, 0xA6079500, 0xA4F90507, 0x6460A055, 0xE990906D, 0x156F56AC, 0x54CF00, 0x181D5A0A,
-0x7C09E947, 0xAD9E898C, 0xFF914212, 0x6933A7CC, 0xB2935B2E, 0x4454D8A2, 0xA6A560B6, 0x519E2075, 0x575FA6A5, 0xB8B06916, 0x598B471B, 0x10686AD1, 0x45EA0170, 0xD0470B9B, 0x3B511E0B, 0x53D79D0,
-0xCBCAC5C5, 0xDAD54CD0, 0x3542EE79, 0xB4AD4FD, 0x642DFF01, 0xB99109B9, 0xE1919B9F, 0x97B84162, 0xE995460A, 0x1060F5F5, 0x166DBCF1, 0x4214957A, 0x6C60626, 0x50FE4F0B, 0xB466470A, 0x808596E2,
-0x70D1440D, 0x818617B6, 0xC8E8DDED, 0x40443474, 0x103E0750, 0x1559A9, 0x16E29FF, 0x54FE0447, 0x34CAB25C, 0x9B30756A, 0xB0E74B05, 0xE19051D, 0x402E7450, 0xF5E0D1AB, 0x87979B5F, 0x8707BA71,
-0x90B4A491, 0x1A2F5301, 0x6C44D318, 0x8AC0A1F4, 0x5A6F0306, 0xE1159090, 0xF9A54183, 0x4CC7321C, 0x7E64868B, 0xFDE60582, 0x4BE77014, 0x1B902D01, 0x104D8FA7, 0x16A7CD, 0x94693912, 0x62E759A,
-0x594BA906, 0x5D023747, 0xDF9757AD, 0x97364CCA, 0xFA011265, 0x12E16116, 0x7A615600, 0x501196F9, 0x5067E247, 0x2A75B070, 0xBC0196BE, 0x19FD8907, 0xCA8511AE, 0x7B671210, 0xB8F0966F, 0x600AE5F4,
-0x4146858E, 0xA579C124, 0x19F26C13, 0x2320776, 0x595BF900, 0xFB059055, 0x6FD6E460, 0x86CAD5D, 0x948153A5, 0xC6C546FF, 0xE199AD5A, 0x656A566A, 0x81256994, 0x7C285400, 0x37CD6A37, 0x4CF4E1B,
-0xD181E0B5, 0x90F89F46, 0x5AD2D072, 0xF1F44D4, 0xB5E091C6, 0xFF90E764, 0x656B9965, 0x833471C7, 0xE6470700, 0x521A517, 0x56620BF, 0x7A6458C9, 0x566959A6, 0x5A5FF3D2, 0xD050063F, 0x9AC17C39,
-0xC1F03D19, 0xE7939343, 0x35312404, 0x76671223, 0xA0D05804, 0x7B773262, 0x5E2E6465, 0xE6860519, 0xDE909B5A, 0xB5C094E4, 0xAF019B15, 0x1A57027F, 0x7874E7D3, 0xB35674A, 0xD0854FB6, 0x916509FD,
-0x431F91FF, 0x9B605420, 0x566978B4, 0xE8D1042D, 0x2533074, 0xEC904443, 0xD404A4D1, 0xB9984945, 0x435181E6, 0xDFD0520A, 0x37FC61D, 0x1540FA94, 0x876DB853, 0x9D686C9D, 0x5D7DE642, 0x556A6669,
-0x6B166F05, 0xF0F06616, 0xE490051F, 0x147B0606, 0xFD76D9D9, 0x3B814E5D, 0x16E6460, 0x91F05406, 0x37444D34, 0x1B17BF00, 0xA8465A05, 0x12429D1C, 0x79753935, 0x639291F4, 0x6761F0F4, 0xBC789460,
-0xF890D79E, 0x54780743, 0x1131367B, 0xD6487C64, 0x8E582E4F, 0x6A972A65, 0x1BA6D0E5, 0x17D6007A, 0x82590727, 0x95D0FA, 0x1540E47E, 0x56B91A0B, 0x8A85C4D4, 0x9F8205E4, 0x80D4C58B, 0x75D3E647,
-0x5956D966, 0x74ED4500, 0x167EA440, 0x255E191, 0x31811515, 0x82999DDF, 0x11670BB8, 0x2BDAD965, 0x5AA5669A, 0x55BF105A, 0x88496E59, 0x5AF56600, 0x4858E751, 0xF4811BB9, 0xB501A7B0, 0x11B26DB,
-0x767C9887, 0x602D7703, 0x1219F8FD, 0x464297D, 0xFF06DB95, 0x156A04BF, 0x5050A39C, 0x35CA4F94, 0x7F00EF1B, 0x68353273, 0x150663B6, 0x79666190, 0xDA650647, 0xA962959A, 0x96E596FF, 0x537E17A3,
-0x57F9E440, 0x101458FF, 0xA4D4E441, 0x1898C4E0, 0x7E189481, 0xB6C71904, 0x9A95EDDD, 0x944449FF, 0x61E4C997, 0x52DF8F5, 0x6A51F46E, 0x9145AD, 0xD9A8DDD2, 0x8784E63D, 0xFF5B906E, 0x2998A559,
-0xCCCC6633, 0xB954C0D0, 0x70B5663B, 0x531C8B25, 0xFFBA0191, 0xF4E35B90, 0x40FF7150, 0x1F075AE5, 0xD0015BFF, 0xDCC3D6DB, 0x4E54A07F, 0x7E9647A, 0xA19D4E1, 0x51504404, 0xE7D68A8A, 0xAF10A450,
-0x71B71184, 0x79940A0E, 0x821B196E, 0x50413A5B, 0x5707962D, 0xD1B63962, 0x819DEDE4, 0xEEC5CB54, 0x251DBAD, 0x50BD6D1D, 0x20976E74, 0xDDC98A4F, 0x451079E9, 0x69146E, 0x68590311, 0x8045A9F4,
-0xEEC58B96, 0x98CCC996, 0x94784451, 0xE6D6015B, 0x3035B95, 0x12E39F6, 0x50EE4058, 0x4D1C74A0, 0xA4291505, 0x936B67D4, 0x2AC1449D, 0xA4015A6D, 0xAFCB4414, 0x74A50038, 0xDED051C8, 0x347B76DA,
-0x817ED01B, 0xDD2D79D2, 0x5A1A011B, 0xA040F556, 0x540246B8, 0xF2B45A06, 0x6A4999B4, 0x4B67D0BF, 0x31614701, 0x456C84C1, 0xB8F4814C, 0xFF009669, 0x4F4A4999, 0x907D95AB, 0xB7A49402, 0x526E61D,
-0x5A9542D3, 0xF8792606, 0xA913569, 0x3193534B, 0x7A61D074, 0x51A452E3, 0x40E490E5, 0x4106377, 0x404A1709, 0x1562727, 0xC0B89996, 0x4440781E, 0x78FA9053, 0x5D1E00E8, 0x1C3C75D0, 0xD581AB05,
-0x85C58A4, 0x44E490E4, 0xCD94CDCA, 0xB252E6D6, 0x1FC345AB, 0x40C5B905, 0x26693851, 0xEC3741D, 0x1B5869B, 0xA161510, 0xE061977B, 0x8A580510, 0xD960D554, 0xB53E091, 0x14B900FA, 0x3E094659,
-0x6090906, 0xE6B47C17, 0xECEC9840, 0xF9A405FA, 0x90F994FA, 0x2B750A5, 0x803B3D25, 0x14AE405F, 0x6F97E0FD, 0xCD34E38C, 0xDED0D4AF, 0x96D1C038, 0x51E78187, 0x93D7CACD, 0xD4D052A7, 0xE6558B4F,
-0xF6025766, 0xE54074B0, 0x6613252C, 0x257A75, 0x1B1266B5, 0xF956E0B6, 0x44D3E3B9, 0xC5C5E9E6, 0xEBD69599, 0x9F91D0F8, 0xB0A05253, 0x6E0F1761, 0x425FE480, 0xA5A051FF, 0xB1384DC7, 0x1CE31CD3,
-0xEBF6701B, 0x6B152998, 0x35A62510, 0xD140E5E6, 0x9070791D, 0x3CA6D1, 0xDAC98985, 0x90917E97, 0x19BCF91, 0xD0C7CBC7, 0xB5466B37, 0xB111D25B, 0x9A29978C, 0x3196C50, 0xCAC5C1FF, 0x4F4A4192,
-0xB14E708B, 0xD5E958D3, 0x73747E24, 0xEDE0D6A2, 0x1B91436E, 0x79252511, 0xCBC58C44, 0x7E64F890, 0x9F05B9F4, 0x1B55E0D0, 0x21D1E969, 0xF4558028, 0xF9E5C3C2, 0x1974325B, 0x6A94E0F0, 0xD101A5BD,
-0x1A17075, 0x5B2D78E1, 0x17194807, 0xF5C24B1D, 0xFA40E655, 0x7A095515, 0xE106F993, 0x565A1103, 0x5A54F6E0, 0xF5E0016E, 0xD6CBC5C1, 0xF940E696, 0xAE316D90, 0x6A146A00, 0x9B96E9E4, 0x6351D86F,
-0x5A466995, 0xD4460B8A, 0x2CC3744E, 0x99666696, 0x20257ABF, 0xA3F2955, 0xD5D0919A, 0x54444859, 0xFC5C606F, 0xA6653749, 0x306E696, 0x2528BD70, 0xA07BCE5, 0xF0A46662, 0xDC649440, 0x99C7874A,
-0x656CBEB, 0x5151A67B, 0x60DB4B05, 0xD1444107, 0x514B74, 0x165025A, 0x5B5A1101, 0x7101179A, 0xD09A070B, 0x50A096BF, 0x47A9521D, 0x4B2D7492, 0x3F0F1B53, 0x1941ABFF, 0x7B666111, 0xD3C345BA,
-0x1CA9D6, 0xE18359B9, 0x1590E6F8, 0xF4285902, 0xBF1B92D0, 0x1BE76D, 0x2A5582C3, 0x8979164B, 0x3C721B40, 0x33C0CF30, 0x2DD21EE1, 0xE9D30707, 0x192DF65, 0x1B92E7C5, 0x33333669, 0x1E0560F4,
-0xFB53034B, 0x966A6699, 0x6F9797A7, 0xEF469BDB, 0x1943F5F6, 0x1DA7C70A, 0x74741E9E, 0xF5709967, 0x520B74F1, 0x4741FBAB, 0xDA6712B9, 0xCBC6C1D0, 0x67E2D64, 0x5E03B625, 0xC088D9D5, 0xF89005FA,
-0x5A2516AA, 0xE5C7D9D6, 0x69FE5096, 0x435BE0D1, 0x7193DB8, 0x9CCC9967, 0x54613301, 0x461211BC, 0x730C6FAB, 0x6050A5B1, 0x7EB91141, 0x6A152F00, 0x69665AE5, 0xAE5780F8, 0x7D06F90, 0x2032D510,
-0x4E0746D1, 0xA69C33CC, 0x1A462616, 0x36C6C6C6, 0xFFA59D1F, 0x9B6D74F1, 0x1197907E, 0x656A9995, 0x91742E48, 0xD00538F5, 0x441542, 0x40D2469B, 0xFF5999, 0x15A9966A, 0x94841EF9, 0xA5651D1F,
-0xCC9C6633, 0x2F7D107E, 0x9B81411F, 0x9E59A669, 0x5E970007, 0x7E2E1F03, 0x29B5F244, 0x86C5D48, 0x548581B4, 0xF955CF44, 0xE35CB2CD, 0xA956B6D7, 0xE0E69125, 0x1969C59D, 0x550099EF, 0x68D99F24,
-0x5FA65010, 0x2B1256FD, 0xF8244147, 0x1D56470C, 0x2162A76, 0x62F16510, 0xAA556995, 0x540669, 0x14C29726, 0x4790FC0, 0x2CC19B44, 0x6CD7759D, 0xD7F64140, 0x425F81E4, 0x5034348D, 0x65095966,
-0x7261B0F5, 0xAF5681D1, 0x935A4051, 0x5262767B, 0x595EC2E8, 0xDB743847, 0x3C60A513, 0xC21F3991, 0xCB34C738, 0xD19AE995, 0xB9171781, 0x1107AB66, 0x5FC0D790, 0x2070F1F6, 0x6E5E1A09, 0xB5407E5E,
-0x505494EA, 0xE4703556, 0xF890999E, 0xA65BF595, 0x2919A7F, 0x49DD3880, 0x94EF960A, 0x183D1906, 0x1500F9F9, 0x9DEE4509, 0xF5FA6313, 0xE0526850, 0xBFE60005, 0xF16E685, 0xF90065A5, 0x916AF859,
-0xFF608454, 0xE6BF5094, 0x81D1E0FA, 0xA19FF91, 0x60D59CD9, 0x39524274, 0xD7994F4, 0x36295C8D, 0xE0503945, 0x2D85C545, 0xD1500658, 0x22172635, 0x338C5626, 0xDE812506, 0xDB57E8D0, 0xE9D955F6,
-0x9F6C94E6, 0x9636CC33, 0x2A1A3542, 0xF95D80F5, 0xD4266F42, 0x1C9E5F9, 0x74A1C30E, 0x6B16A050, 0xFB03506A, 0x4218B469, 0x94D1422D, 0x427D3531, 0xC25BAD40, 0x6692B292, 0x5A50E9A5, 0x717CD4C3,
-0x71938F59, 0x5147400A, 0x41BC6EB5, 0xD4A0D4E4, 0x1D0E5FA, 0xF6869F06, 0xA7E35252, 0xF4D1421B, 0xA4894DE7, 0x2D946B1A, 0xD0FFC684, 0x17C291E4, 0x7F525000, 0x15848139, 0x669669A5, 0xA7A76353,
-0xA996966A, 0x2FE155C0, 0x1E1E42D6, 0x4CB19976, 0x1103BE69, 0x57699082, 0x71624AF, 0xE1445A09, 0x969A4504, 0x5602955E, 0x5A1548E4, 0x5B074314, 0x74A6CE66, 0x9038152E, 0xD8C4554F, 0x3EBB0657,
-0xA8A65669, 0xB9B56010, 0x96B92D86, 0xE9D9CCA4, 0x33DE69A7, 0x5C8CD8E4, 0xF5D1401A, 0x4B59A46B, 0xCD258D07, 0xF3C3A475, 0x105DFC2E, 0xF7929140, 0xA4A450FE, 0x5B4598, 0x17137B75, 0x1B05F082,
-0xD62474D1, 0x673AB500, 0xA9460B5E, 0x47025AD1, 0x6E6695D9, 0x1262B6F6, 0x6AE65190, 0x66A69499, 0xD0993A76, 0x22321727, 0x55C0C56F, 0x6F7D1E43, 0x352F53E, 0x6AD6662F, 0x62713623, 0x948484F9,
-0x27161E04, 0xE996065B, 0xFED0411E, 0x8BC59A4B, 0x689E4B01, 0x40467E7E, 0x550E0F8, 0x1832D78D, 0x6CEC9580, 0x6A9E8F6E, 0x5340D4B1, 0x1449C6D, 0x22163530, 0xB4F6C3C6, 0xAD01DA95, 0x656F051E,
-0x8151167B, 0xA0C3966B, 0x40F85B15, 0xDD4B8D2A, 0x24BB667, 0x52E193F, 0x56A7019B, 0x12625504, 0x11A16297, 0x4B59066C, 0x59E990A0, 0xA45C0B00, 0x92C34B3F, 0xD06F6325, 0xC68D18B9, 0x74783C30,
-0xEA58C5CD, 0x142151F7, 0xDA649E04, 0xDA950602, 0x6E641510, 0xA7249144, 0xF46A1FF, 0xA950F611, 0x752E1FC, 0x7A460551, 0xB8E0D6D1, 0xE9D09151, 0xC745A104, 0x2072E687, 0x9F870105, 0x65A0F1FB,
-0xD0D500F9, 0x1A901FE1, 0x6F4E9401, 0x33322558, 0x52532732, 0xDB16B782, 0xBAA56046, 0xBCA19396, 0x411B39B7, 0xDC847184, 0x31C8B364, 0x6A66906E, 0x3F85D8F0, 0x36EB4393, 0xD518985, 0x34392F47,
-0x1FCF4E96, 0xF4A05E06, 0xBD5B102C, 0xFF056A65, 0x561BB601, 0xACC50A51, 0xA3733235, 0x7E1B53E2, 0x5251A0E5, 0xE078156F, 0x1F56E790, 0xA9965D59, 0xE0949C7D, 0xD87D560A, 0xD0649CED, 0x1065A47E,
-0x257CE4C3, 0xE2409597, 0x71D49220, 0x253929F, 0x47673ECA, 0x716B51F3, 0x4C1C48C5, 0xC7C1520B, 0x7B593060, 0x4F88491E, 0xA566A956, 0x7767A34, 0x65149A00, 0xB6D75A5F, 0x96A757A6, 0xA050617B,
-0xB007D141, 0x12A377B0, 0xC4E8D5F5, 0xE0C74B95, 0xC13C06F9, 0x7996213D, 0x9AC68F45, 0x65460B95, 0x99A7C292, 0x889C9C6C, 0xA4EDD440, 0xB0693DF, 0xFF50E490, 0x507A977, 0xE4147ED0, 0x80F19505,
-0xFCC5066E, 0x74B64319, 0x103A1EC6, 0xB288507E, 0x56A779A0, 0x7C9056AA, 0x381294FD, 0x5D194EC1, 0xF0C19B1F, 0xD60A1DE1, 0x94C0C4DF, 0x7E66824B, 0x69670667, 0x461520C7, 0x7466071F, 0x96FD1A00,
-0x10C4EA65, 0x93DE045, 0x6F01E2E5, 0xB196946, 0x504246AD, 0xB45E0F4, 0xABF1194, 0x84C94D5A, 0x111D27E, 0xF6951BBD, 0xE081166B, 0x56699965, 0xA1F16C54, 0x46107A64, 0x821C3491, 0x88D86E5B,
-0xE5D2C7CB, 0x5203432F, 0xE616332B, 0xF9854938, 0xD2736742, 0x671061F7, 0x9248BDB8, 0x544106E2, 0x6134280D, 0xC65E091D, 0x5599E860, 0xECC245B4, 0xFE4564E0, 0xD500F4F4, 0x59FDC0ED, 0x44530376,
-0xB152767E, 0x6A074351, 0xC565DE, 0xAD995844, 0x57F1D099, 0xB252D484, 0xD1984D8E, 0x5196A66, 0x2C59E167, 0xC0E9055F, 0xFD196F06, 0xF5F0C1C7, 0xFAD05152, 0x2126E0F5, 0xE9F42911, 0xC8339895,
-0x8D405BD, 0x50E94377, 0x443AF945, 0x5011293C, 0x76A297AD, 0x1EE440C5, 0x35DAD9A0, 0xA4419590, 0x165BA619, 0xF60B9A65, 0x1F89444A, 0x71B0255, 0x476DF0A6, 0x61D4A1A, 0x469F9DB0, 0x32355C8C,
-0x86091D46, 0xE795060B, 0x2296305C, 0x6E41F80, 0xF490E594, 0xF4E25699, 0xBF65AC50, 0x4A7E75DB, 0x1015F458, 0xB04ACD9E, 0xEE5478F4, 0x7F630C53, 0x4E49F5F0, 0xCDA3319C, 0xBE116D20, 0x4589D9E9,
-0x7435434B, 0xFDD96656, 0x5F681E4, 0x99AD1C50, 0x552A5401, 0x68F04549, 0x73B66D2, 0x1F86D101, 0xD041160B, 0xF906FFA5, 0x689676DE, 0x5F4780BD, 0xF0939AA5, 0x1F0B5F40, 0x501B3F, 0xA8C193B5,
-0x8C73CC33, 0xE24F7CD3, 0x9090A565, 0xA990D59A, 0xA1C14877, 0x946D8180, 0xF8343124, 0x14C1E915, 0x4919CBA5, 0xFF55D001, 0xF4E152A2, 0x46687EF0, 0xF05ABD48, 0xB7B37460, 0x1474C58, 0x94E490E8,
-0xB9E44183, 0x78D32DE1, 0xC8E4489F, 0x5BDAA45B, 0xB5610147, 0x5162A5F9, 0x5D6191C8, 0x4595C0A6, 0xA57DC996, 0x6D9D0D1E, 0xF58BC767, 0x1A0E5509, 0x409BD2D7, 0xFF5C135, 0x33B7579, 0xEF035600,
-0x779152B, 0x50B091B7, 0x363A3162, 0x491069DB, 0x9C4E0C5F, 0x945A1B12, 0x5490FF00, 0xB5A0B400, 0x1F82D64A, 0xB2C7426, 0x329CDA73, 0xA9995AA5, 0xF65876B4, 0x1E4E890E, 0x857AB576, 0xA52E054,
-0x1D11D88C, 0xA35895B0, 0x6F196890, 0xC7143E70, 0x6BE401FE, 0x111BA961, 0x66070AF5, 0x5F07130F, 0xA15061B6, 0x8C73CD32, 0x6C6481D6, 0x6AD5A6C1, 0x14A5872C, 0x46B90BE4, 0xE5586946, 0x3163C58C,
-0x1431B550, 0x91E94F09, 0x66F5C24B, 0xEE40461E, 0x97593992, 0x19E059F4, 0x94F92E05, 0x8CC445EA, 0x403D64A7, 0xB0FE5D8, 0x9C9B5C00, 0x7EDED9A4, 0x7CD393B5, 0xF1A50DA, 0x372B4077, 0xBF9046E7,
-0x56261E6D, 0x51232570, 0x40153CAB, 0x9B6F6712, 0x51C0160A, 0xB990052F, 0x3788B955, 0x555064A0, 0x6F0B5B05, 0x9776666B, 0xAA069B45, 0xAFF81440, 0x91E4DE1A, 0x80D5C9C6, 0x1E9E5DA4, 0x2B65B450,
-0x1213362B, 0xD766654A, 0x461346C, 0x197B2441, 0x5F9547EB, 0x15AF0506, 0x464C8D9D, 0x4021957A, 0xFE54E413, 0x13295035, 0x145E0D2, 0x4D4854E9, 0xBE50919B, 0xA76CF940, 0x91E1406E, 0x9A655A9A,
-0x3E65005A, 0x1C0B6666, 0x2611AC57, 0xBE7D1442, 0x311E3FC, 0xA4858185, 0x6E54D2A1, 0x9140A5DE, 0x844EC85, 0xF4A81540, 0x1159BF9, 0x2896D07D, 0xD5E690EA, 0x40A47D47, 0x6F672C16, 0xF1611217,
-0xE4096F65, 0x621D05EF, 0x9040979F, 0xC1C5CA46, 0x5B9606B5, 0x5101767A, 0x448C9568, 0xE4983D12, 0xCBC8B5E9, 0x1B15E402, 0xE1C60E15, 0x44E68419, 0x90D48DC, 0x7A9042BB, 0x151285D, 0x676B2613,
-0x121644B4, 0x920F52E3, 0x56DE09E, 0x6E6607A4, 0x5E560B0E, 0xC20B7616, 0xAF464146, 0x8C5C2835, 0x474BC2C6, 0xBC6419CA, 0x5C4353F0, 0x31392547, 0x504295AA, 0xCC593363, 0x1C0C6DBA, 0x4D71B7F,
-0xCC593633, 0xE71A250B, 0xE8CC599D, 0x894FA695, 0x4EC3513E, 0x39C0C645, 0x7B526034, 0xF91E2E06, 0x1A663699, 0x202599EF, 0xC1D1E195, 0x75E600FF, 0xD0D1ECDC, 0xD6DB6050, 0xE0E5016F, 0xF0910B15,
-0xD68C6917, 0x6F1A3D00, 0xF5D61BA6, 0x336D1CA5, 0x7888941D, 0x78D0912D, 0xE1D1C34C, 0x592E4C41, 0x1539F804, 0xFB019650, 0xD5E50609, 0xE8C553F9, 0x411BEBD, 0xE580D1DA, 0x1CACD693, 0xAF15BCE1,
-0x1104909C, 0x4B3B4686, 0xB3A31251, 0x50F5665, 0x1D4EC1D3, 0x2830D712, 0x401F0475, 0xC089D4DD, 0xB2425701, 0x40076F65, 0xA950F5A4, 0x9F9990BF, 0x70214431, 0x22753C31, 0xCC7369D9, 0xE9919061,
-0xF45A1F1, 0xBD0690D0, 0x79A6C180, 0x2FDD105A, 0x584296CA, 0x116F906E, 0x58484C5C, 0xDF9B10E6, 0x5184486D, 0xE9D89D90, 0x69B05ED2, 0xD9841D2B, 0xC2C6C5E6, 0xF88947CD, 0x90696469, 0xC5C0C6DF,
-0x677B0640, 0x4B479BC5, 0x83D1B811, 0x5B47E440, 0x1A419DEA, 0x3DD8D4A9, 0x8752B0F3, 0xD1D18189, 0xCCA632CC, 0x725CCB73, 0x6325CC33, 0x14464A25, 0x5410303F, 0xF8C12F85, 0x39D205E5, 0xFE850549,
-0xC68710B5, 0x471F7842, 0xD34A4C6C, 0x4742D188, 0xBFD50A44, 0x1987777C, 0x5B61C12, 0xB2530677, 0xD995A916, 0x75B496A0, 0x31E61E7, 0x53939DED, 0x51705B00, 0xBA5A4046, 0xFF14A4, 0x2599DCF8,
-0x7D47F02E, 0x9B959064, 0xDCD4E014, 0x38C22DD1, 0x65647C88, 0xD4606066, 0x3551E0D2, 0xD06157FE, 0x1131260B, 0x8B81E454, 0x1E1865FF, 0x1966A524, 0x4B4684D8, 0x3450F1B6, 0xE4FE41D1, 0x1D31F1E6,
-0xC47C1F4A, 0x94656AB, 0x45D101B, 0xB681B712, 0x9BD09215, 0x77924154, 0xFCECD4A0, 0xF0F1C72D, 0x74D0834F, 0xE4908117, 0x65E0365C, 0x955A09EF, 0x6E744349, 0xF4692B13, 0x34750F6E, 0x94D198A9,
-0x839C2DB2, 0xED929580, 0xEA609E65, 0x1A15F8D1, 0xFE00D6AD, 0xD5DC0141, 0xD90D3995, 0x6E6640ED, 0xA9B443CF, 0xE50681D9, 0x3F705659, 0x5F5E4844, 0x9A254A5B, 0x26618195, 0x8B945DAD, 0xDFD4E490,
-0x674352C0, 0x9967C1C0, 0x5990E995, 0xDEC544BA, 0xA7DA444, 0x16457E8, 0x142DFE04, 0xA4D5C084, 0x13172539, 0x84FC3590, 0xA9734748, 0xFE07F451, 0x42119AED, 0x8F087916, 0x13A65D1, 0x82856E75,
-0x3511B1B9, 0xA61BD018, 0x8619B893, 0x40BD89E5, 0x9A15F640, 0x4052464F, 0x9D87C1E0, 0x972C58F0, 0x84D8ED54, 0xE64D9C5D, 0xF421502F, 0xF24864, 0x59B8A154, 0x9A2596DF, 0x1441E6FA, 0x1BE46F90,
-0xA8915051, 0xA5B62611, 0xF582841D, 0x825362B7, 0x55F367E, 0x415263BD, 0x3E463930, 0x68754A06, 0x1117F280, 0x8B16B855, 0xEC75E1C4, 0xA0771117, 0x669DB850, 0x6D171238, 0x47167213, 0x90B21746,
-0xD92649C8, 0xCAC6C6F1, 0xE392C769, 0x60E7939B, 0x14130475, 0x56001A7D, 0xF657028F, 0x6F6819E, 0x29974C33, 0x49A57C5C, 0xD590E890, 0x6FF1116, 0x132B7665, 0xA0C60B56, 0x9844DF41, 0xA1B103E,
-0x44845EEF, 0xA6D2F5D5, 0x55FA4600, 0xBF611264, 0x6AD53610, 0xED594A11, 0xCFC15015, 0x96264247, 0xA4F1D3DA, 0x257EC166, 0xB8D6C114, 0xEA90CF4F, 0x6D5A804, 0x3F0695E8, 0x9C90BCE9, 0xAB4701D1,
-0x136357B5, 0x994D9E0E, 0x121652B2, 0x6D9FD261, 0x5CCC9733, 0x873B95E5, 0x905E9C80, 0xA051BA6F, 0x5F478589, 0x197AD19A, 0x50015DE9, 0x5BAE412F, 0x4111162B, 0x738F386, 0xE4835BAE, 0x5B55A2D0,
-0x5E4B038, 0xF9F91014, 0x8FCBD1E1, 0xD98B4743, 0xB9955DAF, 0xC5373DCD, 0xBD1C8114, 0x250532F1, 0x24504E0E, 0x62D7C50, 0xE8D44154, 0xA8944044, 0x9D669995, 0x530C6FFA, 0x65167BA7, 0xE641BE,
-0x811AB5D2, 0xD18A9D09, 0x6F064045, 0xBF902991, 0xC54F07FF, 0xF6962B11, 0xA4819FDB, 0x60F46A54, 0xE451815B, 0x7C197B, 0x9D44DA0C, 0x869640FF, 0x18C44D18, 0x40247F66, 0x5221F711, 0x510196FF,
-0x353261EF, 0x44490E0E, 0xF994E956, 0x926C45BF, 0x7D96855F, 0x84D4C98A, 0xE06BF456, 0xC21B1641, 0x4B5CB493, 0xDA90D366, 0xE8964D44, 0x197C75DA, 0xD6D46333, 0x465E78A1, 0x1942461E, 0xC1356656,
-0x58D631CC, 0xD773384C, 0x4A9940E5, 0xA0F97414, 0x53532327, 0x78107AB5, 0x3C091BA5, 0xA6469144, 0x44E45841, 0xC50D5842, 0x4A199678, 0x46365DF8, 0x5463E87, 0x8D2C1151, 0xFF5895, 0x2FD231C8,
-0x6C9CD2B3, 0xD74243B2, 0xC4409CDE, 0xB8E0411F, 0x26670F05, 0x5B6697A9, 0x55464A2B, 0x2E0F569A, 0x4660E25B, 0xFE500715, 0x9C683532, 0xCB0C5949, 0x806C6592, 0x679B0156, 0xFE005F15, 0xA540FE50,
-0x1F281510, 0x906D4F00, 0x57052C80, 0xA95BC0B5, 0x6C98C5CB, 0x44581E4E, 0xAD9D4846, 0x8352C7DB, 0xB21E50D9, 0xEB4607B7, 0x99AC9C77, 0x1509D9FC, 0x5460133E, 0x4244EE5A, 0xEF5A259A, 0x3439461B,
-0x6B940B05, 0x59E94484, 0x5062B45E, 0x859B9363, 0xFDE48194, 0x325362D2, 0xE460FB46, 0xD78B98E7, 0x64A3D346, 0xE5B06277, 0x9F655A41, 0x676B5302, 0xEA950B7D, 0xFD158A, 0x775362B4, 0x75C21938,
-0x861EB9D2, 0x589532CC, 0x1025190B, 0xD46B06FF, 0xB50E7C44, 0xCDD7A372, 0xB5B96100, 0xF2B491A1, 0x5E9960F4, 0xF1CC582E, 0x89C99575, 0x7AA1475F, 0x7B66C124, 0xD0D681EF, 0x44156E08, 0x8F1F1056,
-0x6E67D240, 0x9A4C4951, 0xD451E4A7, 0xEA941B13, 0x7E470070, 0x85422E7F, 0x5B9690FE, 0xDE06E626, 0xC8854A15, 0x5A05ED4D, 0x80F46E1B, 0x9011F302, 0x4493D2D8, 0xE50D9D68, 0xFB764400, 0x64D1816F,
-0x9965A616, 0xBF011811, 0x155B0252, 0x3D9DA411, 0x58D96D90, 0x5FAC14F, 0x34E09F47, 0x7470303D, 0x35316E5B, 0x84782D19, 0x6074B114, 0xDF85124F, 0x5B47B723, 0x91327673, 0x31A3C548, 0x6D04F9,
-0x65DA62CC, 0x779B6270, 0x9037699, 0xD59A061B, 0xD140F5D0, 0x546F04E5, 0x197A6193, 0x150F46FA, 0xE0592151, 0x54A9D0DB, 0xAA55D851, 0x50616F64, 0x35307994, 0x1198C72F, 0x472E79D1, 0xFF01981,
-0xF6195AFF, 0x58E66219, 0x69D3D67C, 0x3395C832, 0x5DA31DFF, 0xD66E7583, 0x802979D7, 0x1C419805, 0xA596916A, 0x6A464414, 0x64702547, 0xD31AB704, 0x91E6C21B, 0x41AF55, 0xC600DF64, 0x2D162960,
-0xD0D9AC64, 0x921C6378, 0xD0051C18, 0xCC26969C, 0x3C856899, 0x56A9D3A3, 0xC8CCD966, 0xB42552E2, 0xFF055B5B, 0x4AC7E641, 0xE747D0DD, 0x45A5F75D, 0xFD960205, 0xA60391FD, 0x5EAD8484, 0x13D0E563,
-0x11011BBF, 0xF4A4414, 0xCB5D0939, 0x1D6DE804, 0x2D6DF850, 0xB7E11431, 0x8B253410, 0x24D7A918, 0xA6591F6A, 0xFA0545, 0x10D3421A, 0x4E4CE453, 0x99C48C3D, 0x71D1C0F, 0xB4B94045, 0xE0815D05,
-0x9D854214, 0xF5F06136, 0x1A58FD15, 0x4742A650, 0x7E66464A, 0xCAC5D1F2, 0x99A91441, 0xB06115FB, 0xC0F43522, 0x9CE9CDC8, 0x59EA404E, 0x5B42A707, 0x16914BD, 0x872DF087, 0x4114AE9E, 0x3B1284FE,
-0x5E5E5808, 0x4680D66C, 0x364246C2, 0x65C2462E, 0x421C78A1, 0x1EB8D5EA, 0x28F24C55, 0x5021670B, 0x90BD7875, 0x71385CCA, 0xE7F07411, 0x1F11A366, 0x5FDFB852, 0x4C4DE05A, 0x9E0D9AD6, 0xE0953C84,
-0xE5CC0641, 0xE01BF406, 0x51E4072A, 0x4D66B8B5, 0x272DAD04, 0xF2C3986D, 0x6D680158, 0x464B0755, 0x550047FB, 0x74B41D1, 0xAF58676C, 0x7A655241, 0x64B9505B, 0x4D1D4D8D, 0xFFA5909B, 0x2F0754C1,
-0x4052256D, 0xB9D68609, 0x66615EB, 0x8A3D64D1, 0x2392D1E5, 0xF0A15ABD, 0xF7375B01, 0x699291A1, 0x607D0154, 0x6F19CDC6, 0x869DAC51, 0x11164726, 0xB0B50B1A, 0x9550E320, 0x257FF450, 0x3264669A,
-0xDF5D405B, 0x819855E7, 0x6B97C0A4, 0x88394945, 0xBCF14411, 0x6ED499, 0x570193E3, 0xFA346401, 0xF479095, 0xE6E6850B, 0xB2F1615, 0x95E2160, 0x144D8A3D, 0x3932D186, 0x5B64F801, 0x1F0746E7,
-0x1443EF98, 0xE8444E49, 0x4740EB50, 0xB9035B58, 0xD3D21B3E, 0xB8767699, 0x67D78366, 0xBD1187CB, 0x6C5C0C1C, 0x906D3E13, 0x9E1E6C49, 0x400598ED, 0x529106FD, 0xB4C10D2D, 0x740DC334, 0xE99458A0,
-0x94C8D572, 0xD7D18228, 0x13E566E, 0x1BC3D629, 0x63136172, 0x51A1B10, 0xF305F4E0, 0x679F6813, 0xD38356EA, 0xD669C856, 0xC5CE5A4, 0xC738CB74, 0x567DB480, 0xA65F9440, 0xE207176B, 0x9D5E4A88,
-0x1EFD6440, 0x1095738A, 0xF005646E, 0x19E1870, 0xEC481545, 0x2E598105, 0x55F7439F, 0xDBDB41A1, 0xE64F995, 0x6A9164A9, 0xA5191E04, 0xF4D1413C, 0x646EA056, 0xE3911263, 0x20117A65, 0xF9059304,
-0x48366754, 0x12166B67, 0x868A677, 0x46DB80C0, 0x1878D69A, 0x60D26DC1, 0x405EE804, 0x84D990BF, 0xDAD54606, 0xD93365CC, 0x93B2971B, 0x31269151, 0x5F0E58C2, 0x19B96390, 0xA1AD444, 0x90286D94,
-0xB1D10B7E, 0x40FAA451, 0x8276815E, 0x8669F400, 0xB5A61B12, 0x65FC9B8, 0x446AA55, 0xA11D8378, 0xAD9F4468, 0x21266E1E, 0x868544FC, 0x67520318, 0x858DD0EB, 0x86D4906F, 0x51D3A9A6, 0x9767857E,
-0xD6C99C68, 0x33CC2667, 0x660795F4, 0xD1F10155, 0x86D90D16, 0xE66A1603, 0xF5F86440, 0xE98E4504, 0x17424B9A, 0xB0839F59, 0xE70438F0, 0x432A7560, 0x92D89FC5, 0x37C42399, 0x11617570, 0x249605BE,
-0x101BE265, 0xEE905053, 0x4540DA59, 0x9729A4FF, 0xEE850607, 0x9FD15248, 0x50E5B323, 0x7579F946, 0x498459AF, 0x919C2C1E, 0x6AD78374, 0xB1647421, 0x9EE0B603, 0xA6D35E9, 0x96696C9E, 0x587A5003,
-0x49454A9, 0x6D6D9393, 0xC98677E9, 0x4095C2EF, 0x9C608505, 0x15940C2C, 0x5B60D2DB, 0x1C8151A9, 0x60F491D2, 0x2B670453, 0x4F1964BA, 0xB4430B51, 0xA9860454, 0xB0E41E46, 0x1406B7E3, 0x562701E4,
-0x20D1F6A1, 0x5352A966, 0x64E1D62F, 0x92C6ED07, 0xF882561B, 0x99195A04, 0xC934E3AC, 0xD9B91810, 0x474B04F4, 0x3D9A66, 0xCA9C10AF, 0xE1942916, 0xA125355, 0x32295C8C, 0x675A64E1, 0x9D906494,
-0x6C60EB1F, 0x7874C1BC, 0x1CB53038, 0x56D0F9D1, 0xB1EB954, 0x7C781540, 0x5323619E, 0x6FE055A9, 0xE7440D22, 0x7431A347, 0x6F1BE146, 0x1015BF00, 0x62381905, 0x7025B440, 0x176AF050, 0x5D270EF1,
-0x46AF4C18, 0x4B86D9ED, 0x8B177010, 0xFAD09606, 0xBFA15E50, 0x4701D72D, 0xA298A55E, 0x865CA950, 0x9B5B1227, 0xE0B9175, 0xF481F1FC, 0x7E5D0440, 0x1A697FE5, 0xDE84C5F0, 0xF9975303, 0x4CB46C54,
-0x3ED0D666, 0xE6B07065, 0xF0661263, 0x117C93A0, 0xD56DB4E1, 0x2E5E0E5D, 0x873DE11F, 0x5512413E, 0x5E9CE404, 0xB4C10B7F, 0xF990E956, 0x84C95E95, 0xB5E04B1F, 0x86815BA5, 0x7A5CB26C, 0x42F41F91,
-0xF4592E03, 0xF51F1300, 0x99D7810F, 0xB16051A7, 0x5B57B03E, 0xEE590B55, 0xC014FDD6, 0xF9C04505, 0x1A669669, 0x984C5F84, 0x1A6FD2E3, 0x1A075E5, 0xD80E450C, 0xD66942B6, 0xD050E31F, 0xBA605440,
-0x50E7856A, 0x406E53EF, 0xF01191B, 0xBF055243, 0x9B25E9E7, 0xF892A157, 0x2D598957, 0x85896B6, 0xEF44584B, 0x170667FB, 0xD1017F38, 0xCEC58687, 0x443C6C99, 0xB5B83D3, 0xFD05D91B, 0xA6D72DD3,
-0x6C98D9D0, 0xD66990E0, 0xDE850B0F, 0xE9964609, 0x8605B94B, 0x6DC0D196, 0xB194A5, 0x6F13424D, 0x9ED13215, 0x7064249F, 0x5751E0B0, 0x166F26D6, 0x559EC2F8, 0xE12C5C71, 0x59898D15, 0xBC015A05,
-0x90D18B0F, 0xB0E8649C, 0x170B98D0, 0x8181F491, 0xD990498C, 0x76312925, 0x93B53402, 0xCC1C4B54, 0x2F3F5006, 0x56EC4F10, 0x1AE501E4, 0x6F4D40DB, 0xA3525D69, 0x1329E491, 0x400AF995, 0x2D5C4806,
-0xB091667D, 0xCC6C1627, 0x425CD9EC, 0xF552931A, 0xA6D46580, 0xF4AE50E0, 0x1979909A, 0xF1750058, 0x3365CCD9, 0xBA166500, 0x86779739, 0x67F2611, 0x55109A0B, 0x51016A65, 0x1160BBF, 0x5A6C1401,
-0xC4DC9984, 0x33534244, 0x4057113A, 0xF1F431C1, 0xF8A44BE5, 0x1A976851, 0xB9B5C28F, 0xFE099454, 0xB065B8B5, 0xC0217707, 0xF3831BD1, 0x9757401B, 0x1D293580, 0x7A951200, 0x20615AF5, 0x6272757,
-0xE0FC2907, 0xD860B5C1, 0x985F89C, 0xC25C2C5F, 0x7F941C01, 0xA95A450A, 0x44D89A95, 0xCE1C0C58, 0x194184F9, 0x579BB371, 0x90111F40, 0x5F037075, 0xBB516996, 0x4EC9791, 0xCCEC9C44, 0x5D8404F8,
-0x48FE9D1, 0x4792E3E2, 0x6F35E381, 0x5F0350FB, 0xFF6C56, 0x6050A5F7, 0x589625C9, 0x8F79061D, 0x11D0421F, 0x9061F184, 0x504662BE, 0x8FC7D190, 0xB4404627, 0xEA1F1B03, 0xAF59D0EA, 0x79E50E04,
-0xCF80445D, 0x4191D38B, 0x8F51328, 0x6653E282, 0x8C5C3573, 0x90E05929, 0xC5910D2B, 0xAE479D46, 0x2F7C1610, 0x24B1637E, 0xCB001F55, 0x118384B5, 0xA3421710, 0xAA0725F4, 0xE9C0959A, 0xE5E74114,
-0x4A44CB25, 0x1763BD90, 0x1B095404, 0xCF09D095, 0x5B8344AC, 0xC5C0F9D1, 0xA7615441, 0xE990474B, 0x63536723, 0x1E305BA6, 0xE56B066B, 0xCA817916, 0x9F798578, 0xD7692E06, 0x56F01481, 0x37215100,
-0x17111401, 0xF890F955, 0xA68D68D6, 0xD64A06F0, 0x9F65D9D2, 0xBE90095F, 0x9967072F, 0xE01C947B, 0x12235709, 0x589DFD, 0xBB154A41, 0x2D5DC01F, 0xC58B5C08, 0xCB64DC4C, 0x9F9393AC, 0x7303467E,
-0x599EC984, 0x46E111FC, 0x7A679404, 0xA90647FB, 0x40EE949A, 0x77076E08, 0x10736423, 0x53D90AB, 0x1F510BB, 0x85CC253A, 0xAA905666, 0x45EC0B4, 0x835121F1, 0x2E5A4247, 0x1D8664A0, 0x51442CE0,
-0xDD88451E, 0xE85C0113, 0xFA409601, 0xA4211627, 0x459F50BA, 0x984C458A, 0xE65A60D7, 0x958143B2, 0xD3835BFA, 0xF727F110, 0x4F074354, 0x11113D3D, 0x1558312B, 0xFF08E6D6, 0x89BC5910, 0x99F99287,
-0x40D4183F, 0xDA66A550, 0xA45CE279, 0x7F97A251, 0xB1B025F, 0x70772265, 0xF0E21E16, 0xE79959B5, 0x496669C6, 0xECD00716, 0x5619ECE1, 0x6E5C11F, 0x1101FFF8, 0x55A01DCB, 0xA5053970, 0x3D448855,
-0x9F92E540, 0x35B8A4D0, 0x84119CA7, 0x5429406F, 0x90E05B56, 0x3752E1D8, 0xE1B42D87, 0x9454B0F1, 0xDD382505, 0x1904ED6F, 0xD94D0C58, 0x7C52031F, 0x14B06706, 0x79928799, 0x40149BC7, 0xE9DCD6D0,
-0x104F4D1, 0xD9663448, 0xBD85D003, 0x358CCDA3, 0x66F5412B, 0x6E65066A, 0x6E19B161, 0x55D1AA50, 0x785C9D30, 0x162530BE, 0x7AE64548, 0xA51B9B0E, 0xF9A56400, 0x32CE35DB, 0x17285370, 0xB0117B76,
-0x7CE04741, 0x9D0C51A4, 0xBF004D55, 0xAAD5AC11, 0x6599CB41, 0xFBD09444, 0x936291E5, 0x2D5EA056, 0x1129656A, 0x7FC09506, 0xD44149C8, 0xBA750352, 0xD2431943, 0x7967E182, 0xB813C497, 0x24219465,
-0xC43C9169, 0x6FD81483, 0x6152E3C, 0x59947B6, 0x27F90D12, 0x54046D2A, 0xD521309B, 0xE6653921, 0x9164F4F1, 0x1521FB4A, 0x61C54C38, 0x416484BF, 0x2776B11F, 0x59A9D884, 0xED806B54, 0x1BB0D59B,
-0x4E8D91A1, 0x782FD131, 0xC05A0377, 0x7A121126, 0xDFC5D0E0, 0xEF859E05, 0x7BB60515, 0x5DD26D89, 0x2E291157, 0x9F2F3530, 0xC08156A9, 0x6D91CDC5, 0xF1548117, 0xB52517FE, 0x2053E947, 0xAB5785C5,
-0x479A91E0, 0x9F90FE01, 0x312484DE, 0x441BC1A5, 0x66B501F5, 0xC4617A5B, 0x916BB0F4, 0x20657C7A, 0xE25390FF, 0x1F3861B4, 0x550586AF, 0x6B8599D4, 0x9F4294EC, 0xF4D48147, 0xD0965233, 0x1E05CFED,
-0x59176903, 0x2D2976C, 0xCD33338C, 0x1441E4AD, 0x4196C088, 0xF6079403, 0x969DC030, 0x64990D29, 0x2453F372, 0x8658909B, 0x458046FB, 0x11A185C4, 0x58FC1144, 0x31E641A, 0x8E47709E, 0xF1611277,
-0x61F907A, 0xB7100F5C, 0x5A170B19, 0x160557E, 0x55B39D0, 0xC0C556EF, 0xBBF50299, 0xD1D23E12, 0x69588543, 0x4546890, 0x90FA4115, 0x11C5ED8, 0x68B74789, 0xC06F0117, 0x172790AD, 0x606DAC54,
-0x8D488154, 0x8444EC98, 0x9A6592D3, 0xE5E15040, 0xDB031762, 0x2F099450, 0x404F0F5A, 0x1D09E9F4, 0x56045E1F, 0xF9C99F00, 0x136C6599, 0xB0C36E91, 0x1C2835B0, 0x60BE6B5, 0x462FB4D1, 0xCB19B6D7,
-0x6C48C4D9, 0xD0D19B69, 0xA5E544FC, 0xE4851E31, 0x41E464B8, 0x59C6F9D4, 0xF0A6527E, 0x5333D1E0, 0x4862F606, 0x72370631, 0xC2B490C5, 0x4643DE5C, 0x54F9C489, 0xFC526C40, 0xB0A56895, 0x45C1C134,
-0x768F1981, 0x6E295005, 0x950B6964, 0x4B4CD5E9, 0xEB131245, 0x447F844, 0x131B1D76, 0x99981A7, 0x500B1F0A, 0x91011B1B, 0x64E64709, 0xA45C8145, 0xB53001D1, 0xDB462885, 0xBE06D015, 0x4858541B,
-0x6C86C3B5, 0x70A1967B, 0x969B0414, 0xEF485C04, 0x7FE151C1, 0xEBE7F444, 0x5341990B, 0x71D58060, 0xF5A61E10, 0x79F2C53, 0xE5E41F00, 0xBFF4505, 0xE01BB4E9, 0xBFE3905D, 0xDB7664D0, 0x956A065B,
-0x12894E1, 0xBF14B401, 0x30F7A97, 0xA85C97E0, 0xF40643E9, 0xF8506706, 0x9B9B06AB, 0x5AA05995, 0x45448E3D, 0xE1D1907F, 0x24F4C22C, 0x82C2959A, 0xBF065243, 0x8785812D, 0x9A94A916, 0x315B2C60,
-0x523291D9, 0xF2991609, 0x2830579C, 0x999973CC, 0x4B14C098, 0xC1C5053, 0xD1C1C68A, 0x64B67F3, 0xD09B801D, 0x6A7C1044, 0x48580954, 0x859F095A, 0x46533620, 0x592C852D, 0xA5419141, 0x4D16A1D0,
-0xB0B153B, 0xE1944E4A, 0x21371633, 0xCEC9C4E4, 0xA5D70E08, 0x4E4C4DD, 0x591CAC04, 0x5B021DBC, 0x9967CC33, 0x81C0E5FD, 0xF651C104, 0x966760C9, 0x95E1303C, 0xEC5C6440, 0x50BF9F4, 0x3561C31E,
-0x45A096AD, 0xFF92500B, 0xF6598904, 0x19F9C50B, 0x60C64D18, 0xD640584F, 0x2194E1F3, 0xF031163D, 0x101B56E0, 0xDE5921DA, 0xBF01FD1, 0x706FD94, 0x34CB30CE, 0xB857061C, 0x5225B609, 0xC43C3135,
-0xC03B9350, 0xF001676F, 0xF0C18767, 0x6611391B, 0x4F89A46, 0x1F42441A, 0x649F0F46, 0xB5E0015E, 0x7966830E, 0x9740F4F7, 0xC8CC4451, 0x59BD404B, 0xCC9435E1, 0x3B15B2A0, 0x123C1607, 0x59468D90,
-0x40E0D749, 0x14C1F46E, 0x448BD6A9, 0x659AF556, 0x50E7435B, 0xAED2933C, 0x56051308, 0xCE146E50, 0x1C904F10, 0xEC485E0D, 0x169A936C, 0x51633605, 0xDB57A830, 0x62957AB, 0xF4F14448, 0x45CAD5D,
-0x695CC006, 0x104606B9, 0x81D1D86D, 0x8649F050, 0x20D1DB56, 0xE5E53CC0, 0xCB470256, 0xC629E494, 0x49385F8F, 0x65056E31, 0x9C86F095, 0xC8CC9865, 0x869D8118, 0xD1021F11, 0x87DAD1E2, 0xAF04D500,
-0x4518464, 0xB857B085, 0x4505E834, 0xB1E25F04, 0xD8DD9084, 0x35978C33, 0x11A64257, 0x991A1E41, 0x66B06752, 0xBAF41443, 0xBD4A4544, 0xD6753B66, 0xCAC6C639, 0x154480FD, 0x99D19BC, 0x546EE442,
-0xD0C0193E, 0x7491E21F, 0x24B0B3C7, 0xF981D501, 0x74438B58, 0x54C47391, 0x9EDD1180, 0xE697874F, 0x2E41F8E5, 0x468FDD9, 0x4F1E439C, 0x5542EB81, 0xA554FAE0, 0x1E43E2B0, 0x606D5898, 0x6587C4E8,
-0x6B86C511, 0x6050A6D3, 0x1C523485, 0xF2530396, 0x4A2D5884, 0x6FD09193, 0x29978F84, 0xFE490999, 0x9189675E, 0x99277401, 0xDD6F2494, 0x8CD39344, 0xB5783D9, 0xC859EE, 0xAC701503, 0x8FC1D7E1,
-0xA0854317, 0xD09E8444, 0x4510F2BD, 0xED484CD4, 0xDE5D0C1C, 0xC0854367, 0xD1642134, 0x503876E, 0x7C046A5E, 0xE5644035, 0x3D043173, 0x5DE8991, 0xA603D6D0, 0x70644B1B, 0x41C3F55, 0x799EC50,
-0x5C1D005A, 0xB54027BB, 0x501703FB, 0xCE5E2D84, 0xC248776B, 0x34C31DB1, 0xD08146F6, 0x6194D488, 0x902D95DF, 0x56239699, 0x79566996, 0x46366797, 0x2075B449, 0xE619904B, 0xF1FC491D, 0x4026925F,
-0x85CE994, 0xC62D651B, 0xE0F50B4, 0x60976F55, 0x5B7706A6, 0x49471F41, 0xF6D91352, 0x551A062F, 0x4145CFCA, 0x55B14234, 0xABF12531, 0xB915F0F4, 0x8AC7E275, 0x4679C12F, 0xE21353EC, 0x693602A5,
-0x4BC256AB, 0x463D64A6, 0x5E7C6B8, 0x143983F0, 0x3646871A, 0x601D1FE, 0x4D4601FC, 0xB489D0DF, 0xF7814046, 0xE5A50BA7, 0xB34A116, 0x707C4151, 0x804466BB, 0xCF450C5C, 0x1329B9F4, 0xFE400655,
-0xF4A1431B, 0x51D3202D, 0x74B0A444, 0xA6F1612, 0x6C584C8C, 0xC014F665, 0xD3982957, 0x36C136D1, 0x5C45CCD0, 0x9F459882, 0x91A753A2, 0xA9752C4C, 0x421B4297, 0x776A2313, 0x35397906, 0x48065762,
-0x1129B440, 0xAF410B5D, 0x7F9582D2, 0x4B51E650, 0x891D0D77, 0xE59909E5, 0x705D234B, 0xC3DA9055, 0xF1B11501, 0x44BC94D9, 0x1FA55C48, 0x2A422657, 0xC41091A1, 0x18970E74, 0x7699099, 0x10616AD7,
-0x1AE19F10, 0x475A6C31, 0xA27257E9, 0xC484582C, 0xD699665A, 0x17C94C18, 0xE1569B, 0x11855ABF, 0xA580D607, 0x64C18B7E, 0x7030A605, 0x2B3660D0, 0x165BE103, 0x809E1867, 0x47407FD7, 0x34E4858B,
-0x90ED740B, 0x1B43C2F5, 0xF451527C, 0x5723E1C5, 0xE1D1065B, 0xA51A9DF4, 0x7F099A85, 0x4157030B, 0x1D9F60B8, 0xC11491FD, 0xFE850A55, 0xB990431F, 0xA0C78D16, 0x6F5A4D40, 0xFE4411E, 0x34426B56,
-0x5014FE0F, 0xBD5DC51A, 0xC63637C3, 0xE1B459B2, 0xFA871B05, 0x4544D0AD, 0xE5E5093D, 0x3306C5DD, 0x47C33484, 0x6F1E146, 0xE4974F1, 0xDD48050F, 0xAB151E12, 0x5169FC92, 0x5055B27A, 0xD142AD5C,
-0x4B16B0F4, 0x312BC955, 0x75B10FC, 0x4A9E0458, 0xA65D34CE, 0x90D366CF, 0x10099D29, 0x8B358419, 0x87D2B5DA, 0x31162EF5, 0xF61989C5, 0x1F4341F8, 0xBC4C6D9C, 0x11A759, 0x9553A21, 0xCFC41530,
-0x1F05B610, 0x5B2F64C0, 0x117F1124, 0xF3D24D9, 0x44447874, 0x74351A06, 0x64C48979, 0x63C185B, 0x91F094A4, 0x4E1D1C48, 0x969103AE, 0x9CFC6067, 0x2FC94045, 0xED3844C4, 0x676C935B, 0x6E2091B5,
-0x2D9744EC, 0x6A111227, 0x78DB90E5, 0x8045587E, 0xC4E4591E, 0x479BE1E0, 0x5B667499, 0x50E0493E, 0xFB54819C, 0x431491F8, 0xD3EF50E0, 0x7363926, 0x50FF6440, 0x44DC6C9D, 0xF6D9965A, 0x548499,
-0x150A1403, 0xC7324CC7, 0xAFF0474B, 0xB479966E, 0xAD9E5451, 0xF9913C41, 0x1F09B46, 0x3E35461E, 0xA0C66C10, 0xA4D1D103, 0xA05470B4, 0x6F1A3531, 0x4047B2F5, 0x11472CE0, 0x3AE41631, 0xFD36A905,
-0xF4436F91, 0x4A419766, 0x50699E67, 0x5408D93D, 0x112711AF, 0xF500642F, 0x160BD66A, 0x11B0BFE, 0xC2C55CA1, 0x31CF859, 0xC6C95401, 0xD9C0E5C1, 0xE46056AE, 0xF5E30710, 0xA5FF0150, 0x4454203F,
-0xB6660959, 0x2522776, 0x2D586970, 0x7370757, 0x60953317, 0x81E7072D, 0x68149E6, 0x653834, 0x363D9D81, 0xB429113F, 0x566C0258, 0x51F92F00, 0xE19C5812, 0x11FB150, 0x59A65200, 0x2775E0F4,
-0x106752A3, 0x7574326, 0x5CC34739, 0xDAD54805, 0x5E936BC7, 0xCFCAC5C9, 0x2FC42555, 0xD06994C0, 0x5CAC7400, 0x5D84D074, 0x6D668604, 0xE50B19BD, 0xE7969F55, 0xFF925005, 0x65B266B, 0x4743035E,
-0x972C44C7, 0x5AB47260, 0x77123580, 0xD92DB404, 0x451BB8D1, 0xB94B4447, 0x9B955210, 0xA253815, 0x79AC5184, 0xE3D10C5C, 0x452410FB, 0xDFD3A148, 0xE0336E46, 0x4E287599, 0x12B750A9, 0xDAC0DE47,
-0xC18459A9, 0xC764CD30, 0x2334675E, 0xF6490DB8, 0x49172679, 0x659B6994, 0x7A912691, 0xB2B76074, 0xB9E58704, 0xCC33D9A9, 0x207F6A7, 0xC405F801, 0x560297CF, 0x48140E5F, 0xC44E676A, 0xB191DED,
-0x11035F60, 0x5B1F60B4, 0xA4EB1443, 0x5A6C06E6, 0x1915AE9, 0x33CD2696, 0x879F4444, 0xD442170B, 0xC9C9D9D6, 0xA1D4C124, 0xC40366B7, 0x22497E9, 0xCD18D7F9, 0x99FD111A, 0x9F6B53A1, 0xE051ABFC,
-0xBC10071D, 0xA566A759, 0x6DBC5E5, 0x4A9DA851, 0x2266B15, 0x123D6E9B, 0x66E05449, 0xD10D3870, 0x1706E462, 0xAF0B9B51, 0xE0109D6C, 0xF144861B, 0x813ED01B, 0xB6496C10, 0x1ED00768, 0x60747C10,
-0x46494376, 0x5E4C10B0, 0x573D5906, 0x5A02E5FE, 0xB3E005F2, 0xC05C4F45, 0xDBD58982, 0x6D13171F, 0x9741FA00, 0x61DB852, 0x8D46D299, 0x47421E4D, 0x74A94E6, 0x4DA31CD3, 0x681602FF, 0xC67962D7,
-0x1560BBA, 0xF8849D85, 0x7DD6D5B8, 0x5B6B4640, 0x441A349F, 0x61B3601F, 0xD550E2D3, 0xCF18111B, 0x97673333, 0xC59909E4, 0x57DAE840, 0xBB910E5, 0x144484F9, 0xA85C2511, 0x4092D5EA, 0x89910391,
-0x7D385500, 0x3D1D2176, 0x802FD41B, 0xA5D94890, 0x656E9099, 0xE66906E6, 0x4331A2D5, 0x4478E25B, 0xE78C41D, 0x3565D979, 0x4147133B, 0x89C6C64A, 0x45C9CDCF, 0x532315FA, 0x3E5A0D04, 0xB111DBFC,
-0x63162FF7, 0x9E0B9CD0, 0xA758E46B, 0xA097421F, 0xAE544262, 0xA59A5DDD, 0x3732261D, 0x71736790, 0x8895A173, 0x687470B1, 0x57E564FE, 0x6A765404, 0xF5E21482, 0x667150E1, 0xC0A764D9, 0x89950C14,
-0x3756912B, 0x3913499, 0x6FB553C3, 0x29920995, 0x750EC738, 0xC35C6992, 0xAA55E404, 0xCB4B0753, 0x20396156, 0xDB04F4C1, 0x7876825F, 0xD562319A, 0x592D121B, 0xF9360956, 0x47811B47, 0xD9BD5884,
-0x170A35E, 0x844EE59A, 0x8684EDDA, 0x405F1000, 0x813641A7, 0x176681A2, 0x7DBE6440, 0x87C6A54, 0xC485D905, 0x1AB0811D, 0xDBA59291, 0xFA52817C, 0x3981E5F0, 0x5109FEE5, 0xC1284557, 0x573B2703,
-0x30640659, 0xF1D3E997, 0x906253B7, 0x9076C3FD, 0xCA34D35C, 0xF481491C, 0x5976A4C0, 0x3FF1144, 0x26170649, 0x196B9065, 0x90693D09, 0xF0211A17, 0xAF016DD4, 0x4E449C48, 0x6F9A84F4, 0xB4449818,
-0x606DB144, 0x916B97A6, 0xEBD0FD19, 0xAA08D541, 0xD71BE505, 0x1E6507AF, 0x3E4B1361, 0xF391619, 0x4264BC50, 0x60563321, 0x4A370617, 0x436452E7, 0xBE107604, 0xDDA9C18E, 0xBF5B0371, 0x906F1107,
-0x55C5C83C, 0x31364782, 0x68DD9F1, 0xF99607E6, 0x2996367E, 0x5AF4458, 0x96582D30, 0xC4E4D98A, 0xE68719BE, 0x20C56C64, 0x5A550246, 0xB759B079, 0x64439BFB, 0xB1240D2E, 0x271350B2, 0x4314AF56,
-0xA9998D72, 0x5E8D1481, 0xB65D7253, 0x669392B8, 0xF0919B6C, 0x9F9790DD, 0x60979838, 0x3D625168, 0x12196D58, 0x59E9448A, 0x30547C92, 0x8E317590, 0x7B954843, 0x323D4907, 0x5A4D5308, 0xD10490DB,
-0x92CE4511, 0xB9353125, 0xA91F4050, 0xDC485D08, 0x2F11742, 0xB9B4090F, 0xD09891FF, 0x9503936, 0x80E3505F, 0xED99405F, 0xEA9058DE, 0x55019FC0, 0x9A1F412C, 0x471660DA, 0xF4D0C505, 0x4926666D,
-0x4191C3EF, 0x1A0526F5, 0x55F889C7, 0xD33CC738, 0x7A66C601, 0xF701C662, 0x6E953906, 0x6E6559AD, 0x1626C57A, 0xE0075266, 0x67069A5B, 0xA5F70401, 0x47786090, 0x8111C53B, 0xB4640B1A, 0x269D5DAE,
-0x50C4A474, 0x2A94987D, 0x44C05226, 0x6114423F, 0xB8474F1D, 0x8E0E05D8, 0x87B40FD2, 0x1F4392FD, 0x170E995, 0x1563DE0, 0x6F9AC5CA, 0x752A0D1D, 0xFF0A44D0, 0x7FD0D366, 0x51A62E05, 0xD0D5E8DE,
-0x56113F30, 0xE4056D87, 0xAB3B5100, 0x46539C6, 0x7F676290, 0xB851130D, 0xF5E09183, 0x64AC5D2D, 0x55F9404B, 0xE256F977, 0x70617760, 0xEE48E450, 0xDD5E35C8, 0x94D400F8, 0x446A0667, 0xEA935184,
-0x464B07F8, 0x8C74B6D4, 0x8D9D59A5, 0xCEC6ADD5, 0x2D0956A3, 0xA5BA5103, 0x31353123, 0x55FF4140, 0xA2440F15, 0x89266792, 0x44E1E154, 0xE5B41338, 0x2FCE9901, 0x95E6811B, 0x475C871, 0xAE9E4A44,
-0x5E0D141, 0xE702D66B, 0x474707E2, 0x6486CBC5, 0x7476016E, 0xB1D29B56, 0x7A34C605, 0x51427906, 0xE7967F97, 0x65D29C90, 0x55081AD, 0xD6E64045, 0x67134368, 0x9101E6DD, 0x68957841, 0x3D3D5909,
-0xE0525BAF, 0x134A4D3C, 0xC1B11909, 0x16493B76, 0x6B96D0A0, 0xBF0E79D6, 0x2C7096F9, 0x90FC04D6, 0x1742E472, 0x531CA1AC, 0xDAD08646, 0x9066669, 0xA7588D86, 0x913C54C2, 0x742A4514, 0x17111ABC,
-0xDDD7EDE5, 0x6699C498, 0x75313135, 0xE4995F64, 0x2582667E, 0x9C5C4C48, 0x1D0D10D9, 0x5B4C164, 0x46E616CB, 0xD18444BF, 0xE1D4695C, 0x40095E99, 0xECE02955, 0xFF40A411, 0x54D2421B, 0xE1C7DB05,
-0x80E5095D, 0x6745E907, 0xA6197007, 0x760674F9, 0x1522170A, 0x65181FF, 0xE0FDA45, 0x521C7867, 0x6B91D382, 0x657A83C1, 0x73C98C35, 0xB3CC31D6, 0x164B257B, 0x6F9605F9, 0x52F49EB5, 0x87592907,
-0x1B10D6F8, 0x949FD54, 0x910315BA, 0x40F09B47, 0xB761C144, 0x6D039D5, 0x59B113F, 0xE5C6D9, 0x176990FB, 0x90F8A465, 0x6DB8D144, 0x4552E392, 0xC94396B9, 0x36315A97, 0x7E874215, 0x40116F6F,
-0xDF193401, 0x70689317, 0x7E021740, 0xD5C044BD, 0xF1636E94, 0x5B0D34A1, 0x1027F689, 0x44A45590, 0xD443035F, 0xD7A4418C, 0xD949F480, 0x84C1E154, 0x6090966E, 0x40B56C1E, 0x9669C540, 0xA6305505,
-0x1667E244, 0xC245885D, 0xD504A5E, 0xA4F0C549, 0x358472A8, 0xC414BF20, 0x43369729, 0xB1112711, 0x78644352, 0x811CB856, 0x6F9792F0, 0x1E1E4195, 0x62C58C14, 0x2619D3A2, 0x998056BD, 0x653F3410,
-0x919184E4, 0x64906D6C, 0xE3D7996, 0x47660563, 0x50A91F03, 0x49F8C5CB, 0xFE15235E, 0x9783451, 0x716257B7, 0x1AB5351, 0x1710DC84, 0x3FA01D5A, 0x9844AD64, 0xE4D901BC, 0xEE546352, 0xF9547987,
-0xF6834B47, 0xB651F6D, 0xE09C9045, 0xE491424E, 0x94F9050B, 0x7DA6091D, 0xB5C14D74, 0x123A699D, 0x1F413CC3, 0x9F434158, 0x55D8C8C4, 0x51106FF, 0xD36CB1C, 0x1541FCE1, 0xC3344ED3, 0x3E29D905,
-0x150A6579, 0x502475A, 0x454B0F04, 0x65902722, 0x9EA055, 0x26568CC5, 0x7EB1443, 0x42186F96, 0x132357A9, 0x74091F13, 0xEE55480F, 0x7A0B4A45, 0xF01A8637, 0x937D68D5, 0xE2611115, 0x8A853663,
-0x60D295AB, 0x1946461A, 0xBB5190A1, 0x6D514218, 0x7C6482CF, 0x8759ACC8, 0x7E86C805, 0x42D3755F, 0xF4C10529, 0x471F1400, 0x5394238C, 0x112D54A8, 0x55E450F8, 0xDC2191BA, 0xA5F93011, 0x1A2159F5,
-0x4051A297, 0x66066999, 0xA644C058, 0x54EC9148, 0xFAFB0146, 0x1150FCEC, 0x4141D171, 0xF09F0444, 0x488E5E0E, 0x3D190F10, 0x406E405F, 0xFE9904AD, 0x101F5C6F, 0x454B093B, 0x40946C1F, 0xF0B966D,
-0xC16464DB, 0x91E2D6F9, 0x97789074, 0x537C5C40, 0x44A533C3, 0x74102B33, 0x40D425C1, 0xD748C936, 0x786619C9, 0x40917985, 0x66594C1C, 0x2F05D2D2, 0x8C711B4, 0xF9602757, 0x1013854A, 0x7D6296D0,
-0x3D99B8F0, 0x495D3243, 0x916864BE, 0x4E43B947, 0xE756A110, 0xA8D09D7D, 0xBF625095, 0xC1D48F87, 0x8BD47099, 0xDB631315, 0xE54139A0, 0xE4DC9C63, 0x846C2544, 0x4F0E04D1, 0xE0B15B26, 0x3249499D,
-
-}
diff --git a/thirdparty/basis_universal/transcoder/basisu_global_selector_palette.h b/thirdparty/basis_universal/transcoder/basisu_global_selector_palette.h
deleted file mode 100644
index 8bedf94710..0000000000
--- a/thirdparty/basis_universal/transcoder/basisu_global_selector_palette.h
+++ /dev/null
@@ -1,675 +0,0 @@
-// basisu_global_selector_palette.h
-// Copyright (C) 2019-2021 Binomial LLC. All Rights Reserved.
-//
-// TODO: NONE of this is used in .basis/.ktx2 files. It will be deleted soon.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-#pragma once
-#include "basisu_transcoder_internal.h"
-#include <algorithm>
-
-namespace basist
-{
- class etc1_global_palette_entry_modifier
- {
- public:
- enum { cTotalBits = 15, cTotalValues = 1 << cTotalBits };
-
- etc1_global_palette_entry_modifier(uint32_t index = 0)
- {
-#ifdef _DEBUG
- static bool s_tested;
- if (!s_tested)
- {
- s_tested = true;
- for (uint32_t i = 0; i < cTotalValues; i++)
- {
- etc1_global_palette_entry_modifier m(i);
- etc1_global_palette_entry_modifier n = m;
-
- assert(n.get_index() == i);
- }
- }
-#endif
-
- set_index(index);
- }
-
- void set_index(uint32_t index)
- {
- assert(index < cTotalValues);
- m_rot = index & 3;
- m_flip = (index >> 2) & 1;
- m_inv = (index >> 3) & 1;
- m_contrast = (index >> 4) & 3;
- m_shift = (index >> 6) & 1;
- m_median = (index >> 7) & 1;
- m_div = (index >> 8) & 1;
- m_rand = (index >> 9) & 1;
- m_dilate = (index >> 10) & 1;
- m_shift_x = (index >> 11) & 1;
- m_shift_y = (index >> 12) & 1;
- m_erode = (index >> 13) & 1;
- m_high_pass = (index >> 14) & 1;
- }
-
- uint32_t get_index() const
- {
- return m_rot | (m_flip << 2) | (m_inv << 3) | (m_contrast << 4) | (m_shift << 6) | (m_median << 7) | (m_div << 8) | (m_rand << 9) | (m_dilate << 10) | (m_shift_x << 11) | (m_shift_y << 12) | (m_erode << 13) | (m_high_pass << 14);
- }
-
- void clear()
- {
- basisu::clear_obj(*this);
- }
-
- uint8_t m_contrast;
- bool m_rand;
- bool m_median;
- bool m_div;
- bool m_shift;
- bool m_inv;
- bool m_flip;
- bool m_dilate;
- bool m_shift_x;
- bool m_shift_y;
- bool m_erode;
- bool m_high_pass;
- uint8_t m_rot;
- };
-
- enum modifier_types
- {
- cModifierContrast,
- cModifierRand,
- cModifierMedian,
- cModifierDiv,
- cModifierShift,
- cModifierInv,
- cModifierFlippedAndRotated,
- cModifierDilate,
- cModifierShiftX,
- cModifierShiftY,
- cModifierErode,
- cModifierHighPass,
- cTotalModifiers
- };
-
-#define ETC1_GLOBAL_SELECTOR_CODEBOOK_MAX_MOD_BITS (etc1_global_palette_entry_modifier::cTotalBits)
-
- struct etc1_selector_palette_entry
- {
- etc1_selector_palette_entry()
- {
- clear();
- }
-
- void clear()
- {
- basisu::clear_obj(*this);
- }
-
- uint8_t operator[] (uint32_t i) const { assert(i < 16); return m_selectors[i]; }
- uint8_t&operator[] (uint32_t i) { assert(i < 16); return m_selectors[i]; }
-
- void set_uint32(uint32_t v)
- {
- for (uint32_t byte_index = 0; byte_index < 4; byte_index++)
- {
- uint32_t b = (v >> (byte_index * 8)) & 0xFF;
-
- m_selectors[byte_index * 4 + 0] = b & 3;
- m_selectors[byte_index * 4 + 1] = (b >> 2) & 3;
- m_selectors[byte_index * 4 + 2] = (b >> 4) & 3;
- m_selectors[byte_index * 4 + 3] = (b >> 6) & 3;
- }
- }
-
- uint32_t get_uint32() const
- {
- return get_byte(0) | (get_byte(1) << 8) | (get_byte(2) << 16) | (get_byte(3) << 24);
- }
-
- uint32_t get_byte(uint32_t byte_index) const
- {
- assert(byte_index < 4);
-
- return m_selectors[byte_index * 4 + 0] |
- (m_selectors[byte_index * 4 + 1] << 2) |
- (m_selectors[byte_index * 4 + 2] << 4) |
- (m_selectors[byte_index * 4 + 3] << 6);
- }
-
- uint8_t operator()(uint32_t x, uint32_t y) const { assert((x < 4) && (y < 4)); return m_selectors[x + y * 4]; }
- uint8_t&operator()(uint32_t x, uint32_t y) { assert((x < 4) && (y < 4)); return m_selectors[x + y * 4]; }
-
- uint32_t calc_distance(const etc1_selector_palette_entry &other) const
- {
- uint32_t dist = 0;
- for (uint32_t i = 0; i < 8; i++)
- {
- int delta = static_cast<int>(m_selectors[i]) - static_cast<int>(other.m_selectors[i]);
- dist += delta * delta;
- }
- return dist;
- }
-
-#if 0
- uint32_t calc_hamming_dist(const etc1_selector_palette_entry &other) const
- {
- uint32_t dist = 0;
- for (uint32_t i = 0; i < 4; i++)
- dist += g_hamming_dist[get_byte(i) ^ other.get_byte(i)];
- return dist;
- }
-#endif
-
- etc1_selector_palette_entry get_inverted() const
- {
- etc1_selector_palette_entry result;
-
- for (uint32_t i = 0; i < 16; i++)
- result.m_selectors[i] = 3 - m_selectors[i];
-
- return result;
- }
-
- etc1_selector_palette_entry get_divided() const
- {
- etc1_selector_palette_entry result;
-
- const uint8_t div_selector[4] = { 2, 0, 3, 1 };
-
- for (uint32_t i = 0; i < 16; i++)
- result.m_selectors[i] = div_selector[m_selectors[i]];
-
- return result;
- }
-
- etc1_selector_palette_entry get_shifted(int delta) const
- {
- etc1_selector_palette_entry result;
-
- for (uint32_t i = 0; i < 16; i++)
- result.m_selectors[i] = static_cast<uint8_t>(basisu::clamp<int>(m_selectors[i] + delta, 0, 3));
-
- return result;
- }
-
- etc1_selector_palette_entry get_randomized() const
- {
- uint32_t seed = get_uint32();
-
- etc1_selector_palette_entry result;
-
- for (uint32_t y = 0; y < 4; y++)
- {
- for (uint32_t x = 0; x < 4; x++)
- {
- int s = (*this)(x, y);
-
- // between 0 and 10
- uint32_t i = basisd_urand(seed, 6) + basisd_urand(seed, 6);
- if (i == 0)
- s -= 2;
- else if (i == 10)
- s += 2;
- else if (i < 3)
- s -= 1;
- else if (i > 7)
- s += 1;
-
- result(x, y) = static_cast<uint8_t>(basisu::clamp<int>(s, 0, 3));
- }
- }
-
- return result;
- }
-
- etc1_selector_palette_entry get_contrast(int table_index) const
- {
- assert(table_index < 4);
-
- etc1_selector_palette_entry result;
-
- static const uint8_t s_contrast_tables[4][4] =
- {
- { 0, 1, 2, 3 }, // not used
- { 0, 0, 3, 3 },
- { 1, 1, 2, 2 },
- { 1, 1, 3, 3 }
- };
-
- for (uint32_t i = 0; i < 16; i++)
- {
- result[i] = s_contrast_tables[table_index][(*this)[i]];
- }
-
- return result;
- }
-
- etc1_selector_palette_entry get_dilated() const
- {
- etc1_selector_palette_entry result;
-
- for (uint32_t y = 0; y < 4; y++)
- {
- for (uint32_t x = 0; x < 4; x++)
- {
- uint32_t max_selector = 0;
-
- for (int yd = -1; yd <= 1; yd++)
- {
- int fy = y + yd;
- if ((fy < 0) || (fy > 3))
- continue;
-
- for (int xd = -1; xd <= 1; xd++)
- {
- int fx = x + xd;
- if ((fx < 0) || (fx > 3))
- continue;
-
- max_selector = basisu::maximum<uint32_t>(max_selector, (*this)(fx, fy));
- }
- }
-
- result(x, y) = static_cast<uint8_t>(max_selector);
- }
- }
-
- return result;
- }
-
- etc1_selector_palette_entry get_eroded() const
- {
- etc1_selector_palette_entry result;
-
- for (uint32_t y = 0; y < 4; y++)
- {
- for (uint32_t x = 0; x < 4; x++)
- {
- uint32_t min_selector = 99;
-
- for (int yd = -1; yd <= 1; yd++)
- {
- int fy = y + yd;
- if ((fy < 0) || (fy > 3))
- continue;
-
- for (int xd = -1; xd <= 1; xd++)
- {
- int fx = x + xd;
- if ((fx < 0) || (fx > 3))
- continue;
-
- min_selector = basisu::minimum<uint32_t>(min_selector, (*this)(fx, fy));
- }
- }
-
- result(x, y) = static_cast<uint8_t>(min_selector);
- }
- }
-
- return result;
- }
-
- etc1_selector_palette_entry get_shift_x() const
- {
- etc1_selector_palette_entry result;
-
- for (uint32_t y = 0; y < 4; y++)
- {
- for (uint32_t x = 0; x < 4; x++)
- {
- int sx = x - 1;
- if (sx < 0)
- sx = 0;
-
- result(x, y) = (*this)(sx, y);
- }
- }
-
- return result;
- }
-
- etc1_selector_palette_entry get_shift_y() const
- {
- etc1_selector_palette_entry result;
-
- for (uint32_t y = 0; y < 4; y++)
- {
- int sy = y - 1;
- if (sy < 0)
- sy = 3;
-
- for (uint32_t x = 0; x < 4; x++)
- result(x, y) = (*this)(x, sy);
- }
-
- return result;
- }
-
- etc1_selector_palette_entry get_median() const
- {
- etc1_selector_palette_entry result;
-
- for (uint32_t y = 0; y < 4; y++)
- {
- for (uint32_t x = 0; x < 4; x++)
- {
- // ABC
- // D F
- // GHI
-
- uint8_t selectors[8];
- uint32_t n = 0;
-
- for (int yd = -1; yd <= 1; yd++)
- {
- int fy = y + yd;
- if ((fy < 0) || (fy > 3))
- continue;
-
- for (int xd = -1; xd <= 1; xd++)
- {
- if ((xd | yd) == 0)
- continue;
-
- int fx = x + xd;
- if ((fx < 0) || (fx > 3))
- continue;
-
- selectors[n++] = (*this)(fx, fy);
- }
- }
-
- std::sort(selectors, selectors + n);
-
- result(x, y) = selectors[n / 2];
- }
- }
-
- return result;
- }
-
- etc1_selector_palette_entry get_high_pass() const
- {
- etc1_selector_palette_entry result;
-
- static const int kernel[3][3] =
- {
- { 0, -1, 0 },
- { -1, 8, -1 },
- { 0, -1, 0 }
- };
-
- for (uint32_t y = 0; y < 4; y++)
- {
- for (uint32_t x = 0; x < 4; x++)
- {
- // ABC
- // D F
- // GHI
-
- int sum = 0;
-
- for (int yd = -1; yd <= 1; yd++)
- {
- int fy = y + yd;
- fy = basisu::clamp<int>(fy, 0, 3);
-
- for (int xd = -1; xd <= 1; xd++)
- {
- int fx = x + xd;
- fx = basisu::clamp<int>(fx, 0, 3);
-
- int k = (*this)(fx, fy);
- sum += k * kernel[yd + 1][xd + 1];
- }
- }
-
- sum = sum / 4;
-
- result(x, y) = static_cast<uint8_t>(basisu::clamp<int>(sum, 0, 3));
- }
- }
-
- return result;
- }
-
- etc1_selector_palette_entry get_flipped_and_rotated(bool flip, uint32_t rotation_index) const
- {
- etc1_selector_palette_entry temp;
-
- if (flip)
- {
- for (uint32_t y = 0; y < 4; y++)
- for (uint32_t x = 0; x < 4; x++)
- temp(x, y) = (*this)(x, 3 - y);
- }
- else
- {
- temp = *this;
- }
-
- etc1_selector_palette_entry result;
-
- switch (rotation_index)
- {
- case 0:
- result = temp;
- break;
- case 1:
- for (uint32_t y = 0; y < 4; y++)
- for (uint32_t x = 0; x < 4; x++)
- result(x, y) = temp(y, 3 - x);
- break;
- case 2:
- for (uint32_t y = 0; y < 4; y++)
- for (uint32_t x = 0; x < 4; x++)
- result(x, y) = temp(3 - x, 3 - y);
- break;
- case 3:
- for (uint32_t y = 0; y < 4; y++)
- for (uint32_t x = 0; x < 4; x++)
- result(x, y) = temp(3 - y, x);
- break;
- default:
- assert(0);
- break;
- }
-
- return result;
- }
-
- etc1_selector_palette_entry get_modified(const etc1_global_palette_entry_modifier &modifier) const
- {
- etc1_selector_palette_entry r(*this);
-
- if (modifier.m_shift_x)
- r = r.get_shift_x();
-
- if (modifier.m_shift_y)
- r = r.get_shift_y();
-
- r = r.get_flipped_and_rotated(modifier.m_flip != 0, modifier.m_rot);
-
- if (modifier.m_dilate)
- r = r.get_dilated();
-
- if (modifier.m_erode)
- r = r.get_eroded();
-
- if (modifier.m_high_pass)
- r = r.get_high_pass();
-
- if (modifier.m_rand)
- r = r.get_randomized();
-
- if (modifier.m_div)
- r = r.get_divided();
-
- if (modifier.m_shift)
- r = r.get_shifted(1);
-
- if (modifier.m_contrast)
- r = r.get_contrast(modifier.m_contrast);
-
- if (modifier.m_inv)
- r = r.get_inverted();
-
- if (modifier.m_median)
- r = r.get_median();
-
- return r;
- }
-
- etc1_selector_palette_entry apply_modifier(modifier_types mod_type, const etc1_global_palette_entry_modifier &modifier) const
- {
- switch (mod_type)
- {
- case cModifierContrast:
- return get_contrast(modifier.m_contrast);
- case cModifierRand:
- return get_randomized();
- case cModifierMedian:
- return get_median();
- case cModifierDiv:
- return get_divided();
- case cModifierShift:
- return get_shifted(1);
- case cModifierInv:
- return get_inverted();
- case cModifierFlippedAndRotated:
- return get_flipped_and_rotated(modifier.m_flip != 0, modifier.m_rot);
- case cModifierDilate:
- return get_dilated();
- case cModifierShiftX:
- return get_shift_x();
- case cModifierShiftY:
- return get_shift_y();
- case cModifierErode:
- return get_eroded();
- case cModifierHighPass:
- return get_high_pass();
- default:
- assert(0);
- break;
- }
-
- return *this;
- }
-
- etc1_selector_palette_entry get_modified(const etc1_global_palette_entry_modifier &modifier, uint32_t num_order, const modifier_types *pOrder) const
- {
- etc1_selector_palette_entry r(*this);
-
- for (uint32_t i = 0; i < num_order; i++)
- {
- r = r.apply_modifier(pOrder[i], modifier);
- }
-
- return r;
- }
-
- bool operator< (const etc1_selector_palette_entry &other) const
- {
- for (uint32_t i = 0; i < 16; i++)
- {
- if (m_selectors[i] < other.m_selectors[i])
- return true;
- else if (m_selectors[i] != other.m_selectors[i])
- return false;
- }
-
- return false;
- }
-
- bool operator== (const etc1_selector_palette_entry &other) const
- {
- for (uint32_t i = 0; i < 16; i++)
- {
- if (m_selectors[i] != other.m_selectors[i])
- return false;
- }
-
- return true;
- }
-
- private:
- uint8_t m_selectors[16];
- };
-
- typedef basisu::vector<etc1_selector_palette_entry> etc1_selector_palette_entry_vec;
-
- extern const uint32_t g_global_selector_cb[];
- extern const uint32_t g_global_selector_cb_size;
-
-#define ETC1_GLOBAL_SELECTOR_CODEBOOK_MAX_PAL_BITS (12)
-
- struct etc1_global_selector_codebook_entry_id
- {
- uint32_t m_palette_index;
- etc1_global_palette_entry_modifier m_modifier;
-
- etc1_global_selector_codebook_entry_id(uint32_t palette_index, const etc1_global_palette_entry_modifier &modifier) : m_palette_index(palette_index), m_modifier(modifier) { }
-
- etc1_global_selector_codebook_entry_id() { }
-
- void set(uint32_t palette_index, const etc1_global_palette_entry_modifier &modifier) { m_palette_index = palette_index; m_modifier = modifier; }
- };
-
- typedef basisu::vector<etc1_global_selector_codebook_entry_id> etc1_global_selector_codebook_entry_id_vec;
-
- class etc1_global_selector_codebook
- {
- public:
- etc1_global_selector_codebook() { }
- etc1_global_selector_codebook(uint32_t N, const uint32_t *pEntries) { init(N, pEntries); }
-
- void init(uint32_t N, const uint32_t* pEntries);
-
- void print_code(FILE *pFile);
-
- void clear()
- {
- m_palette.clear();
- }
-
- uint32_t size() const { return (uint32_t)m_palette.size(); }
-
- const etc1_selector_palette_entry_vec &get_palette() const
- {
- return m_palette;
- }
-
- etc1_selector_palette_entry get_entry(uint32_t palette_index) const
- {
- return m_palette[palette_index];
- }
-
- etc1_selector_palette_entry get_entry(uint32_t palette_index, const etc1_global_palette_entry_modifier &modifier) const
- {
- return m_palette[palette_index].get_modified(modifier);
- }
-
- etc1_selector_palette_entry get_entry(const etc1_global_selector_codebook_entry_id &id) const
- {
- return m_palette[id.m_palette_index].get_modified(id.m_modifier);
- }
-
- etc1_selector_palette_entry_vec m_palette;
- };
-
-} // namespace basist
diff --git a/thirdparty/basis_universal/transcoder/basisu_transcoder.cpp b/thirdparty/basis_universal/transcoder/basisu_transcoder.cpp
index 0b3733385d..630731900f 100644
--- a/thirdparty/basis_universal/transcoder/basisu_transcoder.cpp
+++ b/thirdparty/basis_universal/transcoder/basisu_transcoder.cpp
@@ -37,6 +37,14 @@
#endif
#endif
+// Using unaligned loads and stores causes errors when using UBSan. Jam it off.
+#if defined(__has_feature)
+#if __has_feature(undefined_behavior_sanitizer)
+#undef BASISD_USE_UNALIGNED_WORD_READS
+#define BASISD_USE_UNALIGNED_WORD_READS 0
+#endif
+#endif
+
#define BASISD_SUPPORTED_BASIS_VERSION (0x13)
#ifndef BASISD_SUPPORT_KTX2
@@ -224,32 +232,7 @@ namespace basist
return static_cast<uint16_t>(~crc);
}
-
- const uint32_t g_global_selector_cb[] =
-#include "basisu_global_selector_cb.h"
- ;
-
- const uint32_t g_global_selector_cb_size = sizeof(g_global_selector_cb) / sizeof(g_global_selector_cb[0]);
-
- void etc1_global_selector_codebook::init(uint32_t N, const uint32_t* pEntries)
- {
- m_palette.resize(N);
- for (uint32_t i = 0; i < N; i++)
- m_palette[i].set_uint32(pEntries[i]);
- }
-
- void etc1_global_selector_codebook::print_code(FILE* pFile)
- {
- fprintf(pFile, "{\n");
- for (uint32_t i = 0; i < m_palette.size(); i++)
- {
- fprintf(pFile, "0x%X,", m_palette[i].get_uint32());
- if ((i & 15) == 15)
- fprintf(pFile, "\n");
- }
- fprintf(pFile, "\n}\n");
- }
-
+
enum etc_constants
{
cETC1BytesPerBlock = 8U,
@@ -7532,9 +7515,8 @@ namespace basist
}
#endif // BASISD_SUPPORT_PVRTC2
- basisu_lowlevel_etc1s_transcoder::basisu_lowlevel_etc1s_transcoder(const etc1_global_selector_codebook* pGlobal_sel_codebook) :
+ basisu_lowlevel_etc1s_transcoder::basisu_lowlevel_etc1s_transcoder() :
m_pGlobal_codebook(nullptr),
- m_pGlobal_sel_codebook(pGlobal_sel_codebook),
m_selector_history_buf_size(0)
{
}
@@ -7641,50 +7623,8 @@ namespace basist
if (used_global_selector_cb)
{
- // global selector palette
- uint32_t pal_bits = sym_codec.get_bits(4);
- uint32_t mod_bits = sym_codec.get_bits(4);
-
- basist::huffman_decoding_table mod_model;
- if (mod_bits)
- {
- if (!sym_codec.read_huffman_table(mod_model))
- {
- BASISU_DEVEL_ERROR("basisu_lowlevel_etc1s_transcoder::decode_palettes: fail 6\n");
- return false;
- }
- if (!mod_model.is_valid())
- {
- BASISU_DEVEL_ERROR("basisu_lowlevel_etc1s_transcoder::decode_palettes: fail 6a\n");
- return false;
- }
- }
-
- for (uint32_t i = 0; i < num_selectors; i++)
- {
- uint32_t pal_index = 0;
- if (pal_bits)
- pal_index = sym_codec.get_bits(pal_bits);
-
- uint32_t mod_index = 0;
- if (mod_bits)
- mod_index = sym_codec.decode_huffman(mod_model);
-
- if (pal_index >= m_pGlobal_sel_codebook->size())
- {
- BASISU_DEVEL_ERROR("basisu_lowlevel_etc1s_transcoder::decode_palettes: fail 7z\n");
- return false;
- }
-
- const etc1_selector_palette_entry e(m_pGlobal_sel_codebook->get_entry(pal_index, etc1_global_palette_entry_modifier(mod_index)));
-
- // TODO: Optimize this
- for (uint32_t y = 0; y < 4; y++)
- for (uint32_t x = 0; x < 4; x++)
- m_local_selectors[i].set_selector(x, y, e[x + y * 4]);
-
- m_local_selectors[i].init_flags();
- }
+ BASISU_DEVEL_ERROR("basisu_lowlevel_etc1s_transcoder::decode_palettes: global selector codebooks are unsupported\n");
+ return false;
}
else
{
@@ -7692,146 +7632,70 @@ namespace basist
if (used_hybrid_selector_cb)
{
- const uint32_t pal_bits = sym_codec.get_bits(4);
- const uint32_t mod_bits = sym_codec.get_bits(4);
-
- basist::huffman_decoding_table uses_global_cb_bitflags_model;
- if (!sym_codec.read_huffman_table(uses_global_cb_bitflags_model))
- {
- BASISU_DEVEL_ERROR("basisu_lowlevel_etc1s_transcoder::decode_palettes: fail 7\n");
- return false;
- }
- if (!uses_global_cb_bitflags_model.is_valid())
- {
- BASISU_DEVEL_ERROR("basisu_lowlevel_etc1s_transcoder::decode_palettes: fail 7a\n");
- return false;
- }
-
- basist::huffman_decoding_table global_mod_indices_model;
- if (mod_bits)
- {
- if (!sym_codec.read_huffman_table(global_mod_indices_model))
- {
- BASISU_DEVEL_ERROR("basisu_lowlevel_etc1s_transcoder::decode_palettes: fail 8\n");
- return false;
- }
- if (!global_mod_indices_model.is_valid())
- {
- BASISU_DEVEL_ERROR("basisu_lowlevel_etc1s_transcoder::decode_palettes: fail 8a\n");
- return false;
- }
- }
-
- uint32_t cur_uses_global_cb_bitflags = 0;
- uint32_t uses_global_cb_bitflags_remaining = 0;
+ BASISU_DEVEL_ERROR("basisu_lowlevel_etc1s_transcoder::decode_palettes: hybrid global selector codebooks are unsupported\n");
+ return false;
+ }
+
+ const bool used_raw_encoding = (sym_codec.get_bits(1) == 1);
- for (uint32_t q = 0; q < num_selectors; q++)
+ if (used_raw_encoding)
+ {
+ for (uint32_t i = 0; i < num_selectors; i++)
{
- if (!uses_global_cb_bitflags_remaining)
+ for (uint32_t j = 0; j < 4; j++)
{
- cur_uses_global_cb_bitflags = sym_codec.decode_huffman(uses_global_cb_bitflags_model);
+ uint32_t cur_byte = sym_codec.get_bits(8);
- uses_global_cb_bitflags_remaining = 8;
+ for (uint32_t k = 0; k < 4; k++)
+ m_local_selectors[i].set_selector(k, j, (cur_byte >> (k * 2)) & 3);
}
- uses_global_cb_bitflags_remaining--;
-
- const bool used_global_cb_flag = (cur_uses_global_cb_bitflags & 1) != 0;
- cur_uses_global_cb_bitflags >>= 1;
- if (used_global_cb_flag)
- {
- const uint32_t pal_index = pal_bits ? sym_codec.get_bits(pal_bits) : 0;
- const uint32_t mod_index = mod_bits ? sym_codec.decode_huffman(global_mod_indices_model) : 0;
-
- if (pal_index >= m_pGlobal_sel_codebook->size())
- {
- BASISU_DEVEL_ERROR("basisu_lowlevel_etc1s_transcoder::decode_palettes: fail 8b\n");
- return false;
- }
-
- const etc1_selector_palette_entry e(m_pGlobal_sel_codebook->get_entry(pal_index, etc1_global_palette_entry_modifier(mod_index)));
-
- for (uint32_t y = 0; y < 4; y++)
- for (uint32_t x = 0; x < 4; x++)
- m_local_selectors[q].set_selector(x, y, e[x + y * 4]);
- }
- else
- {
- for (uint32_t j = 0; j < 4; j++)
- {
- uint32_t cur_byte = sym_codec.get_bits(8);
-
- for (uint32_t k = 0; k < 4; k++)
- m_local_selectors[q].set_selector(k, j, (cur_byte >> (k * 2)) & 3);
- }
- }
-
- m_local_selectors[q].init_flags();
+ m_local_selectors[i].init_flags();
}
}
else
{
- const bool used_raw_encoding = (sym_codec.get_bits(1) == 1);
+ if (!sym_codec.read_huffman_table(delta_selector_pal_model))
+ {
+ BASISU_DEVEL_ERROR("basisu_lowlevel_etc1s_transcoder::decode_palettes: fail 10\n");
+ return false;
+ }
+
+ if ((num_selectors > 1) && (!delta_selector_pal_model.is_valid()))
+ {
+ BASISU_DEVEL_ERROR("basisu_lowlevel_etc1s_transcoder::decode_palettes: fail 10a\n");
+ return false;
+ }
+
+ uint8_t prev_bytes[4] = { 0, 0, 0, 0 };
- if (used_raw_encoding)
+ for (uint32_t i = 0; i < num_selectors; i++)
{
- for (uint32_t i = 0; i < num_selectors; i++)
+ if (!i)
{
for (uint32_t j = 0; j < 4; j++)
{
uint32_t cur_byte = sym_codec.get_bits(8);
+ prev_bytes[j] = static_cast<uint8_t>(cur_byte);
for (uint32_t k = 0; k < 4; k++)
m_local_selectors[i].set_selector(k, j, (cur_byte >> (k * 2)) & 3);
}
-
m_local_selectors[i].init_flags();
+ continue;
}
- }
- else
- {
- if (!sym_codec.read_huffman_table(delta_selector_pal_model))
- {
- BASISU_DEVEL_ERROR("basisu_lowlevel_etc1s_transcoder::decode_palettes: fail 10\n");
- return false;
- }
-
- if ((num_selectors > 1) && (!delta_selector_pal_model.is_valid()))
- {
- BASISU_DEVEL_ERROR("basisu_lowlevel_etc1s_transcoder::decode_palettes: fail 10a\n");
- return false;
- }
-
- uint8_t prev_bytes[4] = { 0, 0, 0, 0 };
- for (uint32_t i = 0; i < num_selectors; i++)
+ for (uint32_t j = 0; j < 4; j++)
{
- if (!i)
- {
- for (uint32_t j = 0; j < 4; j++)
- {
- uint32_t cur_byte = sym_codec.get_bits(8);
- prev_bytes[j] = static_cast<uint8_t>(cur_byte);
+ int delta_byte = sym_codec.decode_huffman(delta_selector_pal_model);
- for (uint32_t k = 0; k < 4; k++)
- m_local_selectors[i].set_selector(k, j, (cur_byte >> (k * 2)) & 3);
- }
- m_local_selectors[i].init_flags();
- continue;
- }
-
- for (uint32_t j = 0; j < 4; j++)
- {
- int delta_byte = sym_codec.decode_huffman(delta_selector_pal_model);
-
- uint32_t cur_byte = delta_byte ^ prev_bytes[j];
- prev_bytes[j] = static_cast<uint8_t>(cur_byte);
+ uint32_t cur_byte = delta_byte ^ prev_bytes[j];
+ prev_bytes[j] = static_cast<uint8_t>(cur_byte);
- for (uint32_t k = 0; k < 4; k++)
- m_local_selectors[i].set_selector(k, j, (cur_byte >> (k * 2)) & 3);
- }
- m_local_selectors[i].init_flags();
+ for (uint32_t k = 0; k < 4; k++)
+ m_local_selectors[i].set_selector(k, j, (cur_byte >> (k * 2)) & 3);
}
+ m_local_selectors[i].init_flags();
}
}
}
@@ -7899,6 +7763,12 @@ namespace basist
}
m_selector_history_buf_size = sym_codec.get_bits(13);
+ // Check for bogus values.
+ if (!m_selector_history_buf_size)
+ {
+ BASISU_DEVEL_ERROR("basisu_lowlevel_etc1s_transcoder::decode_tables: fail 5\n");
+ return false;
+ }
sym_codec.stop();
@@ -7979,8 +7849,11 @@ namespace basist
decoder_etc_block block;
memset(&block, 0, sizeof(block));
+
+ //block.set_flip_bit(true);
+ // Setting the flip bit to false to be compatible with the Khronos KDFS.
+ block.set_flip_bit(false);
- block.set_flip_bit(true);
block.set_diff_bit(true);
void* pPVRTC_work_mem = nullptr;
@@ -8741,7 +8614,7 @@ namespace basist
if (!output_row_pitch_in_blocks_or_pixels)
output_row_pitch_in_blocks_or_pixels = orig_width;
- if (!output_rows_in_pixels)
+ if (!output_rows_in_pixels)
output_rows_in_pixels = orig_height;
// Now make sure the output buffer is large enough, or we'll overwrite memory.
@@ -9440,6 +9313,12 @@ namespace basist
{
switch (fmt)
{
+ case block_format::cUASTC_4x4:
+ {
+ memcpy(pDst_block, pSource_block, sizeof(uastc_block));
+ status = true;
+ break;
+ }
case block_format::cETC1:
{
if (from_alpha)
@@ -9906,8 +9785,7 @@ namespace basist
return status;
}
- basisu_transcoder::basisu_transcoder(const etc1_global_selector_codebook* pGlobal_sel_codebook) :
- m_lowlevel_etc1s_decoder(pGlobal_sel_codebook),
+ basisu_transcoder::basisu_transcoder() :
m_ready_to_transcode(false)
{
}
@@ -10778,6 +10656,8 @@ namespace basist
return false;
}
+ //const bool transcode_alpha_data_to_opaque_formats = (decode_flags & cDecodeFlagsTranscodeAlphaDataToOpaqueFormats) != 0;
+
if (decode_flags & cDecodeFlagsPVRTCDecodeToNextPow2)
{
BASISU_DEVEL_ERROR("basisu_transcoder::transcode_image_level: cDecodeFlagsPVRTCDecodeToNextPow2 currently unsupported\n");
@@ -11001,6 +10881,7 @@ namespace basist
case block_format::cRGB565: return "RGB565";
case block_format::cBGR565: return "BGR565";
case block_format::cRGBA4444: return "RGBA4444";
+ case block_format::cUASTC_4x4: return "UASTC_4x4";
case block_format::cFXT1_RGB: return "FXT1_RGB";
case block_format::cPVRTC2_4_RGB: return "PVRTC2_4_RGB";
case block_format::cPVRTC2_4_RGBA: return "PVRTC2_4_RGBA";
@@ -12567,12 +12448,8 @@ namespace basist
bits = read_bits64(blk.m_bytes, bit_ofs, basisu::minimum<int>(64, 128 - (int)bit_ofs));
else
{
-#ifdef __EMSCRIPTEN__
bits = blk.m_dwords[2];
bits |= (((uint64_t)blk.m_dwords[3]) << 32U);
-#else
- bits = blk.m_qwords[1];
-#endif
if (bit_ofs >= 64U)
bits >>= (bit_ofs - 64U);
@@ -16722,8 +16599,8 @@ namespace basist
#if BASISD_SUPPORT_KTX2
const uint8_t g_ktx2_file_identifier[12] = { 0xAB, 0x4B, 0x54, 0x58, 0x20, 0x32, 0x30, 0xBB, 0x0D, 0x0A, 0x1A, 0x0A };
- ktx2_transcoder::ktx2_transcoder(basist::etc1_global_selector_codebook* pGlobal_sel_codebook) :
- m_etc1s_transcoder(pGlobal_sel_codebook)
+ ktx2_transcoder::ktx2_transcoder() :
+ m_etc1s_transcoder()
{
clear();
}
@@ -17334,6 +17211,7 @@ namespace basist
bool ktx2_transcoder::decompress_level_data(uint32_t level_index, basisu::uint8_vec& uncomp_data)
{
+ const uint8_t* pComp_data = m_levels[level_index].m_byte_offset + m_pData;
const uint64_t comp_size = m_levels[level_index].m_byte_length;
const uint64_t uncomp_size = m_levels[level_index].m_uncompressed_byte_length;
@@ -17349,7 +17227,7 @@ namespace basist
return false;
}
- if (!uncomp_data.try_resize(uncomp_size))
+ if (!uncomp_data.try_resize((size_t)uncomp_size))
{
BASISU_DEVEL_ERROR("ktx2_transcoder::decompress_level_data: Out of memory\n");
return false;
@@ -17358,7 +17236,6 @@ namespace basist
if (m_header.m_supercompression_scheme == KTX2_SS_ZSTANDARD)
{
#if BASISD_SUPPORT_KTX2_ZSTD
- const uint8_t* pComp_data = m_levels[level_index].m_byte_offset + m_pData;
size_t actualUncompSize = ZSTD_decompress(uncomp_data.data(), (size_t)uncomp_size, pComp_data, (size_t)comp_size);
if (ZSTD_isError(actualUncompSize))
{
diff --git a/thirdparty/basis_universal/transcoder/basisu_transcoder.h b/thirdparty/basis_universal/transcoder/basisu_transcoder.h
index bf3aed3dc3..3327e8ddb7 100644
--- a/thirdparty/basis_universal/transcoder/basisu_transcoder.h
+++ b/thirdparty/basis_universal/transcoder/basisu_transcoder.h
@@ -34,7 +34,6 @@
#include "basisu_transcoder_internal.h"
#include "basisu_transcoder_uastc.h"
-#include "basisu_global_selector_palette.h"
#include "basisu_file_headers.h"
namespace basist
@@ -190,7 +189,7 @@ namespace basist
friend class basisu_transcoder;
public:
- basisu_lowlevel_etc1s_transcoder(const basist::etc1_global_selector_codebook* pGlobal_sel_codebook);
+ basisu_lowlevel_etc1s_transcoder();
void set_global_codebooks(const basisu_lowlevel_etc1s_transcoder* pGlobal_codebook) { m_pGlobal_codebook = pGlobal_codebook; }
const basisu_lowlevel_etc1s_transcoder* get_global_codebooks() const { return m_pGlobal_codebook; }
@@ -248,17 +247,13 @@ namespace basist
typedef basisu::vector<selector> selector_vec;
const selector_vec& get_selectors() const { return m_local_selectors; }
-
- const etc1_global_selector_codebook* get_global_sel_codebook() const { return m_pGlobal_sel_codebook; }
-
+
private:
const basisu_lowlevel_etc1s_transcoder* m_pGlobal_codebook;
endpoint_vec m_local_endpoints;
selector_vec m_local_selectors;
-
- const etc1_global_selector_codebook* m_pGlobal_sel_codebook;
-
+
huffman_decoding_table m_endpoint_pred_model, m_delta_endpoint_model, m_selector_model, m_selector_history_buf_rle_model;
uint32_t m_selector_history_buf_size;
@@ -442,7 +437,7 @@ namespace basist
basisu_transcoder& operator= (const basisu_transcoder&);
public:
- basisu_transcoder(const etc1_global_selector_codebook* pGlobal_sel_codebook);
+ basisu_transcoder();
// Validates the .basis file. This computes a crc16 over the entire file, so it's slow.
bool validate_file_checksums(const void* pData, uint32_t data_size, bool full_validation) const;
@@ -770,7 +765,7 @@ namespace basist
class ktx2_transcoder
{
public:
- ktx2_transcoder(basist::etc1_global_selector_codebook* pGlobal_sel_codebook);
+ ktx2_transcoder();
// Frees all allocations, resets object.
void clear();
diff --git a/thirdparty/basis_universal/transcoder/basisu_transcoder_internal.h b/thirdparty/basis_universal/transcoder/basisu_transcoder_internal.h
index 2422d788a9..776a99861a 100644
--- a/thirdparty/basis_universal/transcoder/basisu_transcoder_internal.h
+++ b/thirdparty/basis_universal/transcoder/basisu_transcoder_internal.h
@@ -20,8 +20,8 @@
#pragma warning (disable: 4127) // conditional expression is constant
#endif
-#define BASISD_LIB_VERSION 115
-#define BASISD_VERSION_STRING "01.15"
+#define BASISD_LIB_VERSION 116
+#define BASISD_VERSION_STRING "01.16"
#ifdef _DEBUG
#define BASISD_BUILD_DEBUG
@@ -46,18 +46,18 @@ namespace basist
{
cETC1, // ETC1S RGB
cETC2_RGBA, // full ETC2 EAC RGBA8 block
- cBC1, // DXT1 RGB
- cBC3, // BC4 block followed by a four color BC1 block
- cBC4, // DXT5A (alpha block only)
- cBC5, // two BC4 blocks
+ cBC1, // DXT1 RGB
+ cBC3, // BC4 block followed by a four color BC1 block
+ cBC4, // DXT5A (alpha block only)
+ cBC5, // two BC4 blocks
cPVRTC1_4_RGB, // opaque-only PVRTC1 4bpp
- cPVRTC1_4_RGBA, // PVRTC1 4bpp RGBA
- cBC7, // Full BC7 block, any mode
+ cPVRTC1_4_RGBA, // PVRTC1 4bpp RGBA
+ cBC7, // Full BC7 block, any mode
cBC7_M5_COLOR, // RGB BC7 mode 5 color (writes an opaque mode 5 block)
cBC7_M5_ALPHA, // alpha portion of BC7 mode 5 (cBC7_M5_COLOR output data must have been written to the output buffer first to set the mode/rot fields etc.)
cETC2_EAC_A8, // alpha block of ETC2 EAC (first 8 bytes of the 16-bit ETC2 EAC RGBA format)
cASTC_4x4, // ASTC 4x4 (either color-only or color+alpha). Note that the transcoder always currently assumes sRGB is not enabled when outputting ASTC
- // data. If you use a sRGB ASTC format you'll get ~1 LSB of additional error, because of the different way ASTC decoders scale 8-bit endpoints to 16-bits during unpacking.
+ // data. If you use a sRGB ASTC format you'll get ~1 LSB of additional error, because of the different way ASTC decoders scale 8-bit endpoints to 16-bits during unpacking.
cATC_RGB,
cATC_RGBA_INTERPOLATED_ALPHA,
@@ -72,8 +72,8 @@ namespace basist
cIndices, // Used internally: Write 16-bit endpoint and selector indices directly to output (output block must be at least 32-bits)
cRGB32, // Writes RGB components to 32bpp output pixels
- cRGBA32, // Writes RGB255 components to 32bpp output pixels
- cA32, // Writes alpha component to 32bpp output pixels
+ cRGBA32, // Writes RGB255 components to 32bpp output pixels
+ cA32, // Writes alpha component to 32bpp output pixels
cRGB565,
cBGR565,
@@ -82,6 +82,8 @@ namespace basist
cRGBA4444_ALPHA,
cRGBA4444_COLOR_OPAQUE,
cRGBA4444,
+
+ cUASTC_4x4,
cTotalBlockFormats
};
diff --git a/thirdparty/basis_universal/transcoder/basisu_transcoder_uastc.h b/thirdparty/basis_universal/transcoder/basisu_transcoder_uastc.h
index d501a2af6e..f91314f4ff 100644
--- a/thirdparty/basis_universal/transcoder/basisu_transcoder_uastc.h
+++ b/thirdparty/basis_universal/transcoder/basisu_transcoder_uastc.h
@@ -205,10 +205,6 @@ namespace basist
{
uint8_t m_bytes[16];
uint32_t m_dwords[4];
-
-#ifndef __EMSCRIPTEN__
- uint64_t m_qwords[2];
-#endif
};
};
diff --git a/thirdparty/brotli/LICENSE b/thirdparty/brotli/LICENSE
new file mode 100644
index 0000000000..33b7cdd2db
--- /dev/null
+++ b/thirdparty/brotli/LICENSE
@@ -0,0 +1,19 @@
+Copyright (c) 2009, 2010, 2013-2016 by the Brotli Authors.
+
+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/brotli/common/constants.c b/thirdparty/brotli/common/constants.c
new file mode 100644
index 0000000000..89866b1505
--- /dev/null
+++ b/thirdparty/brotli/common/constants.c
@@ -0,0 +1,15 @@
+/* Copyright 2013 Google Inc. All Rights Reserved.
+
+ Distributed under MIT license.
+ See file LICENSE for detail or copy at https://opensource.org/licenses/MIT
+*/
+
+#include "constants.h"
+
+const BrotliPrefixCodeRange
+ _kBrotliPrefixCodeRanges[BROTLI_NUM_BLOCK_LEN_SYMBOLS] = {
+ {1, 2}, {5, 2}, {9, 2}, {13, 2}, {17, 3}, {25, 3},
+ {33, 3}, {41, 3}, {49, 4}, {65, 4}, {81, 4}, {97, 4},
+ {113, 5}, {145, 5}, {177, 5}, {209, 5}, {241, 6}, {305, 6},
+ {369, 7}, {497, 8}, {753, 9}, {1265, 10}, {2289, 11}, {4337, 12},
+ {8433, 13}, {16625, 24}};
diff --git a/thirdparty/brotli/common/constants.h b/thirdparty/brotli/common/constants.h
new file mode 100644
index 0000000000..433c7b24d0
--- /dev/null
+++ b/thirdparty/brotli/common/constants.h
@@ -0,0 +1,200 @@
+/* Copyright 2016 Google Inc. All Rights Reserved.
+
+ Distributed under MIT license.
+ See file LICENSE for detail or copy at https://opensource.org/licenses/MIT
+*/
+
+/**
+ * @file
+ * Common constants used in decoder and encoder API.
+ */
+
+#ifndef BROTLI_COMMON_CONSTANTS_H_
+#define BROTLI_COMMON_CONSTANTS_H_
+
+#include "platform.h"
+#include <brotli/port.h>
+#include <brotli/types.h>
+
+/* Specification: 7.3. Encoding of the context map */
+#define BROTLI_CONTEXT_MAP_MAX_RLE 16
+
+/* Specification: 2. Compressed representation overview */
+#define BROTLI_MAX_NUMBER_OF_BLOCK_TYPES 256
+
+/* Specification: 3.3. Alphabet sizes: insert-and-copy length */
+#define BROTLI_NUM_LITERAL_SYMBOLS 256
+#define BROTLI_NUM_COMMAND_SYMBOLS 704
+#define BROTLI_NUM_BLOCK_LEN_SYMBOLS 26
+#define BROTLI_MAX_CONTEXT_MAP_SYMBOLS (BROTLI_MAX_NUMBER_OF_BLOCK_TYPES + \
+ BROTLI_CONTEXT_MAP_MAX_RLE)
+#define BROTLI_MAX_BLOCK_TYPE_SYMBOLS (BROTLI_MAX_NUMBER_OF_BLOCK_TYPES + 2)
+
+/* Specification: 3.5. Complex prefix codes */
+#define BROTLI_REPEAT_PREVIOUS_CODE_LENGTH 16
+#define BROTLI_REPEAT_ZERO_CODE_LENGTH 17
+#define BROTLI_CODE_LENGTH_CODES (BROTLI_REPEAT_ZERO_CODE_LENGTH + 1)
+/* "code length of 8 is repeated" */
+#define BROTLI_INITIAL_REPEATED_CODE_LENGTH 8
+
+/* "Large Window Brotli" */
+
+/**
+ * The theoretical maximum number of distance bits specified for large window
+ * brotli, for 64-bit encoders and decoders. Even when in practice 32-bit
+ * encoders and decoders only support up to 30 max distance bits, the value is
+ * set to 62 because it affects the large window brotli file format.
+ * Specifically, it affects the encoding of simple huffman tree for distances,
+ * see Specification RFC 7932 chapter 3.4.
+ */
+#define BROTLI_LARGE_MAX_DISTANCE_BITS 62U
+#define BROTLI_LARGE_MIN_WBITS 10
+/**
+ * The maximum supported large brotli window bits by the encoder and decoder.
+ * Large window brotli allows up to 62 bits, however the current encoder and
+ * decoder, designed for 32-bit integers, only support up to 30 bits maximum.
+ */
+#define BROTLI_LARGE_MAX_WBITS 30
+
+/* Specification: 4. Encoding of distances */
+#define BROTLI_NUM_DISTANCE_SHORT_CODES 16
+/**
+ * Maximal number of "postfix" bits.
+ *
+ * Number of "postfix" bits is stored as 2 bits in meta-block header.
+ */
+#define BROTLI_MAX_NPOSTFIX 3
+#define BROTLI_MAX_NDIRECT 120
+#define BROTLI_MAX_DISTANCE_BITS 24U
+#define BROTLI_DISTANCE_ALPHABET_SIZE(NPOSTFIX, NDIRECT, MAXNBITS) ( \
+ BROTLI_NUM_DISTANCE_SHORT_CODES + (NDIRECT) + \
+ ((MAXNBITS) << ((NPOSTFIX) + 1)))
+/* BROTLI_NUM_DISTANCE_SYMBOLS == 1128 */
+#define BROTLI_NUM_DISTANCE_SYMBOLS \
+ BROTLI_DISTANCE_ALPHABET_SIZE( \
+ BROTLI_MAX_NDIRECT, BROTLI_MAX_NPOSTFIX, BROTLI_LARGE_MAX_DISTANCE_BITS)
+
+/* ((1 << 26) - 4) is the maximal distance that can be expressed in RFC 7932
+ brotli stream using NPOSTFIX = 0 and NDIRECT = 0. With other NPOSTFIX and
+ NDIRECT values distances up to ((1 << 29) + 88) could be expressed. */
+#define BROTLI_MAX_DISTANCE 0x3FFFFFC
+
+/* ((1 << 31) - 4) is the safe distance limit. Using this number as a limit
+ allows safe distance calculation without overflows, given the distance
+ alphabet size is limited to corresponding size
+ (see kLargeWindowDistanceCodeLimits). */
+#define BROTLI_MAX_ALLOWED_DISTANCE 0x7FFFFFFC
+
+
+/* Specification: 4. Encoding of Literal Insertion Lengths and Copy Lengths */
+#define BROTLI_NUM_INS_COPY_CODES 24
+
+/* 7.1. Context modes and context ID lookup for literals */
+/* "context IDs for literals are in the range of 0..63" */
+#define BROTLI_LITERAL_CONTEXT_BITS 6
+
+/* 7.2. Context ID for distances */
+#define BROTLI_DISTANCE_CONTEXT_BITS 2
+
+/* 9.1. Format of the Stream Header */
+/* Number of slack bytes for window size. Don't confuse
+ with BROTLI_NUM_DISTANCE_SHORT_CODES. */
+#define BROTLI_WINDOW_GAP 16
+#define BROTLI_MAX_BACKWARD_LIMIT(W) (((size_t)1 << (W)) - BROTLI_WINDOW_GAP)
+
+typedef struct BrotliDistanceCodeLimit {
+ uint32_t max_alphabet_size;
+ uint32_t max_distance;
+} BrotliDistanceCodeLimit;
+
+/* This function calculates maximal size of distance alphabet, such that the
+ distances greater than the given values can not be represented.
+
+ This limits are designed to support fast and safe 32-bit decoders.
+ "32-bit" means that signed integer values up to ((1 << 31) - 1) could be
+ safely expressed.
+
+ Brotli distance alphabet symbols do not represent consecutive distance
+ ranges. Each distance alphabet symbol (excluding direct distances and short
+ codes), represent interleaved (for NPOSTFIX > 0) range of distances.
+ A "group" of consecutive (1 << NPOSTFIX) symbols represent non-interleaved
+ range. Two consecutive groups require the same amount of "extra bits".
+
+ It is important that distance alphabet represents complete "groups".
+ To avoid complex logic on encoder side about interleaved ranges
+ it was decided to restrict both sides to complete distance code "groups".
+ */
+BROTLI_UNUSED_FUNCTION BrotliDistanceCodeLimit BrotliCalculateDistanceCodeLimit(
+ uint32_t max_distance, uint32_t npostfix, uint32_t ndirect) {
+ BrotliDistanceCodeLimit result;
+ /* Marking this function as unused, because not all files
+ including "constants.h" use it -> compiler warns about that. */
+ BROTLI_UNUSED(&BrotliCalculateDistanceCodeLimit);
+ if (max_distance <= ndirect) {
+ /* This case never happens / exists only for the sake of completeness. */
+ result.max_alphabet_size = max_distance + BROTLI_NUM_DISTANCE_SHORT_CODES;
+ result.max_distance = max_distance;
+ return result;
+ } else {
+ /* The first prohibited value. */
+ uint32_t forbidden_distance = max_distance + 1;
+ /* Subtract "directly" encoded region. */
+ uint32_t offset = forbidden_distance - ndirect - 1;
+ uint32_t ndistbits = 0;
+ uint32_t tmp;
+ uint32_t half;
+ uint32_t group;
+ /* Postfix for the last dcode in the group. */
+ uint32_t postfix = (1u << npostfix) - 1;
+ uint32_t extra;
+ uint32_t start;
+ /* Remove postfix and "head-start". */
+ offset = (offset >> npostfix) + 4;
+ /* Calculate the number of distance bits. */
+ tmp = offset / 2;
+ /* Poor-man's log2floor, to avoid extra dependencies. */
+ while (tmp != 0) {ndistbits++; tmp = tmp >> 1;}
+ /* One bit is covered with subrange addressing ("half"). */
+ ndistbits--;
+ /* Find subrange. */
+ half = (offset >> ndistbits) & 1;
+ /* Calculate the "group" part of dcode. */
+ group = ((ndistbits - 1) << 1) | half;
+ /* Calculated "group" covers the prohibited distance value. */
+ if (group == 0) {
+ /* This case is added for correctness; does not occur for limit > 128. */
+ result.max_alphabet_size = ndirect + BROTLI_NUM_DISTANCE_SHORT_CODES;
+ result.max_distance = ndirect;
+ return result;
+ }
+ /* Decrement "group", so it is the last permitted "group". */
+ group--;
+ /* After group was decremented, ndistbits and half must be recalculated. */
+ ndistbits = (group >> 1) + 1;
+ /* The last available distance in the subrange has all extra bits set. */
+ extra = (1u << ndistbits) - 1;
+ /* Calculate region start. NB: ndistbits >= 1. */
+ start = (1u << (ndistbits + 1)) - 4;
+ /* Move to subregion. */
+ start += (group & 1) << ndistbits;
+ /* Calculate the alphabet size. */
+ result.max_alphabet_size = ((group << npostfix) | postfix) + ndirect +
+ BROTLI_NUM_DISTANCE_SHORT_CODES + 1;
+ /* Calculate the maximal distance representable by alphabet. */
+ result.max_distance = ((start + extra) << npostfix) + postfix + ndirect + 1;
+ return result;
+ }
+}
+
+/* Represents the range of values belonging to a prefix code:
+ [offset, offset + 2^nbits) */
+typedef struct {
+ uint16_t offset;
+ uint8_t nbits;
+} BrotliPrefixCodeRange;
+
+/* "Soft-private", it is exported, but not "advertised" as API. */
+BROTLI_COMMON_API extern const BrotliPrefixCodeRange
+ _kBrotliPrefixCodeRanges[BROTLI_NUM_BLOCK_LEN_SYMBOLS];
+
+#endif /* BROTLI_COMMON_CONSTANTS_H_ */
diff --git a/thirdparty/brotli/common/context.c b/thirdparty/brotli/common/context.c
new file mode 100644
index 0000000000..7f9c958699
--- /dev/null
+++ b/thirdparty/brotli/common/context.c
@@ -0,0 +1,156 @@
+#include "context.h"
+
+#include <brotli/types.h>
+
+/* Common context lookup table for all context modes. */
+const uint8_t _kBrotliContextLookupTable[2048] = {
+ /* CONTEXT_LSB6, last byte. */
+ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
+ 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
+ 32, 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,
+ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
+ 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
+ 32, 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,
+ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
+ 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
+ 32, 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,
+ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
+ 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
+ 32, 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,
+
+ /* CONTEXT_LSB6, second last byte, */
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+
+ /* CONTEXT_MSB6, last byte. */
+ 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3,
+ 4, 4, 4, 4, 5, 5, 5, 5, 6, 6, 6, 6, 7, 7, 7, 7,
+ 8, 8, 8, 8, 9, 9, 9, 9, 10, 10, 10, 10, 11, 11, 11, 11,
+ 12, 12, 12, 12, 13, 13, 13, 13, 14, 14, 14, 14, 15, 15, 15, 15,
+ 16, 16, 16, 16, 17, 17, 17, 17, 18, 18, 18, 18, 19, 19, 19, 19,
+ 20, 20, 20, 20, 21, 21, 21, 21, 22, 22, 22, 22, 23, 23, 23, 23,
+ 24, 24, 24, 24, 25, 25, 25, 25, 26, 26, 26, 26, 27, 27, 27, 27,
+ 28, 28, 28, 28, 29, 29, 29, 29, 30, 30, 30, 30, 31, 31, 31, 31,
+ 32, 32, 32, 32, 33, 33, 33, 33, 34, 34, 34, 34, 35, 35, 35, 35,
+ 36, 36, 36, 36, 37, 37, 37, 37, 38, 38, 38, 38, 39, 39, 39, 39,
+ 40, 40, 40, 40, 41, 41, 41, 41, 42, 42, 42, 42, 43, 43, 43, 43,
+ 44, 44, 44, 44, 45, 45, 45, 45, 46, 46, 46, 46, 47, 47, 47, 47,
+ 48, 48, 48, 48, 49, 49, 49, 49, 50, 50, 50, 50, 51, 51, 51, 51,
+ 52, 52, 52, 52, 53, 53, 53, 53, 54, 54, 54, 54, 55, 55, 55, 55,
+ 56, 56, 56, 56, 57, 57, 57, 57, 58, 58, 58, 58, 59, 59, 59, 59,
+ 60, 60, 60, 60, 61, 61, 61, 61, 62, 62, 62, 62, 63, 63, 63, 63,
+
+ /* CONTEXT_MSB6, second last byte, */
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+
+ /* CONTEXT_UTF8, last byte. */
+ /* ASCII range. */
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 0, 0, 4, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 8, 12, 16, 12, 12, 20, 12, 16, 24, 28, 12, 12, 32, 12, 36, 12,
+ 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 32, 32, 24, 40, 28, 12,
+ 12, 48, 52, 52, 52, 48, 52, 52, 52, 48, 52, 52, 52, 52, 52, 48,
+ 52, 52, 52, 52, 52, 48, 52, 52, 52, 52, 52, 24, 12, 28, 12, 12,
+ 12, 56, 60, 60, 60, 56, 60, 60, 60, 56, 60, 60, 60, 60, 60, 56,
+ 60, 60, 60, 60, 60, 56, 60, 60, 60, 60, 60, 24, 12, 28, 12, 0,
+ /* UTF8 continuation byte range. */
+ 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1,
+ 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1,
+ 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1,
+ 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1,
+ /* UTF8 lead byte range. */
+ 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3,
+ 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3,
+ 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3,
+ 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3,
+
+ /* CONTEXT_UTF8 second last byte. */
+ /* ASCII range. */
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1,
+ 1, 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, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 1, 1, 1, 0,
+ /* UTF8 continuation byte range. */
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ /* UTF8 lead byte range. */
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 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,
+
+ /* CONTEXT_SIGNED, last byte, same as the above values shifted by 3 bits. */
+ 0, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
+ 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
+ 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
+ 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
+ 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
+ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+ 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
+ 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
+ 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
+ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 56,
+
+ /* CONTEXT_SIGNED, second last byte. */
+ 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 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,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 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, 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, 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,
+ 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, 7,
+};
diff --git a/thirdparty/brotli/common/context.h b/thirdparty/brotli/common/context.h
new file mode 100644
index 0000000000..685a279dc0
--- /dev/null
+++ b/thirdparty/brotli/common/context.h
@@ -0,0 +1,113 @@
+/* Copyright 2013 Google Inc. All Rights Reserved.
+
+ Distributed under MIT license.
+ See file LICENSE for detail or copy at https://opensource.org/licenses/MIT
+*/
+
+/* Lookup table to map the previous two bytes to a context id.
+
+ There are four different context modeling modes defined here:
+ CONTEXT_LSB6: context id is the least significant 6 bits of the last byte,
+ CONTEXT_MSB6: context id is the most significant 6 bits of the last byte,
+ CONTEXT_UTF8: second-order context model tuned for UTF8-encoded text,
+ CONTEXT_SIGNED: second-order context model tuned for signed integers.
+
+ If |p1| and |p2| are the previous two bytes, and |mode| is current context
+ mode, we calculate the context as:
+
+ context = ContextLut(mode)[p1] | ContextLut(mode)[p2 + 256].
+
+ For CONTEXT_UTF8 mode, if the previous two bytes are ASCII characters
+ (i.e. < 128), this will be equivalent to
+
+ context = 4 * context1(p1) + context2(p2),
+
+ where context1 is based on the previous byte in the following way:
+
+ 0 : non-ASCII control
+ 1 : \t, \n, \r
+ 2 : space
+ 3 : other punctuation
+ 4 : " '
+ 5 : %
+ 6 : ( < [ {
+ 7 : ) > ] }
+ 8 : , ; :
+ 9 : .
+ 10 : =
+ 11 : number
+ 12 : upper-case vowel
+ 13 : upper-case consonant
+ 14 : lower-case vowel
+ 15 : lower-case consonant
+
+ and context2 is based on the second last byte:
+
+ 0 : control, space
+ 1 : punctuation
+ 2 : upper-case letter, number
+ 3 : lower-case letter
+
+ If the last byte is ASCII, and the second last byte is not (in a valid UTF8
+ stream it will be a continuation byte, value between 128 and 191), the
+ context is the same as if the second last byte was an ASCII control or space.
+
+ If the last byte is a UTF8 lead byte (value >= 192), then the next byte will
+ be a continuation byte and the context id is 2 or 3 depending on the LSB of
+ the last byte and to a lesser extent on the second last byte if it is ASCII.
+
+ If the last byte is a UTF8 continuation byte, the second last byte can be:
+ - continuation byte: the next byte is probably ASCII or lead byte (assuming
+ 4-byte UTF8 characters are rare) and the context id is 0 or 1.
+ - lead byte (192 - 207): next byte is ASCII or lead byte, context is 0 or 1
+ - lead byte (208 - 255): next byte is continuation byte, context is 2 or 3
+
+ The possible value combinations of the previous two bytes, the range of
+ context ids and the type of the next byte is summarized in the table below:
+
+ |--------\-----------------------------------------------------------------|
+ | \ Last byte |
+ | Second \---------------------------------------------------------------|
+ | last byte \ ASCII | cont. byte | lead byte |
+ | \ (0-127) | (128-191) | (192-) |
+ |=============|===================|=====================|==================|
+ | ASCII | next: ASCII/lead | not valid | next: cont. |
+ | (0-127) | context: 4 - 63 | | context: 2 - 3 |
+ |-------------|-------------------|---------------------|------------------|
+ | cont. byte | next: ASCII/lead | next: ASCII/lead | next: cont. |
+ | (128-191) | context: 4 - 63 | context: 0 - 1 | context: 2 - 3 |
+ |-------------|-------------------|---------------------|------------------|
+ | lead byte | not valid | next: ASCII/lead | not valid |
+ | (192-207) | | context: 0 - 1 | |
+ |-------------|-------------------|---------------------|------------------|
+ | lead byte | not valid | next: cont. | not valid |
+ | (208-) | | context: 2 - 3 | |
+ |-------------|-------------------|---------------------|------------------|
+*/
+
+#ifndef BROTLI_COMMON_CONTEXT_H_
+#define BROTLI_COMMON_CONTEXT_H_
+
+#include <brotli/port.h>
+#include <brotli/types.h>
+
+typedef enum ContextType {
+ CONTEXT_LSB6 = 0,
+ CONTEXT_MSB6 = 1,
+ CONTEXT_UTF8 = 2,
+ CONTEXT_SIGNED = 3
+} ContextType;
+
+/* "Soft-private", it is exported, but not "advertised" as API. */
+/* Common context lookup table for all context modes. */
+BROTLI_COMMON_API extern const uint8_t _kBrotliContextLookupTable[2048];
+
+typedef const uint8_t* ContextLut;
+
+/* typeof(MODE) == ContextType; returns ContextLut */
+#define BROTLI_CONTEXT_LUT(MODE) (&_kBrotliContextLookupTable[(MODE) << 9])
+
+/* typeof(LUT) == ContextLut */
+#define BROTLI_CONTEXT(P1, P2, LUT) ((LUT)[P1] | ((LUT) + 256)[P2])
+
+#endif /* BROTLI_COMMON_CONTEXT_H_ */
diff --git a/thirdparty/brotli/common/dictionary.c b/thirdparty/brotli/common/dictionary.c
new file mode 100644
index 0000000000..307525788c
--- /dev/null
+++ b/thirdparty/brotli/common/dictionary.c
@@ -0,0 +1,5916 @@
+/* Copyright 2013 Google Inc. All Rights Reserved.
+
+ Distributed under MIT license.
+ See file LICENSE for detail or copy at https://opensource.org/licenses/MIT
+*/
+
+#include "dictionary.h"
+#include "platform.h"
+
+#if defined(__cplusplus) || defined(c_plusplus)
+extern "C" {
+#endif
+
+#if !defined(BROTLI_EXTERNAL_DICTIONARY_DATA)
+static const uint8_t kBrotliDictionaryData[] =
+/* GENERATED CODE START */
+{
+116,105,109,101,100,111,119,110,108,105,102,101,108,101,102,116,98,97,99,107,99,
+111,100,101,100,97,116,97,115,104,111,119,111,110,108,121,115,105,116,101,99,105
+,116,121,111,112,101,110,106,117,115,116,108,105,107,101,102,114,101,101,119,111
+,114,107,116,101,120,116,121,101,97,114,111,118,101,114,98,111,100,121,108,111,
+118,101,102,111,114,109,98,111,111,107,112,108,97,121,108,105,118,101,108,105,
+110,101,104,101,108,112,104,111,109,101,115,105,100,101,109,111,114,101,119,111,
+114,100,108,111,110,103,116,104,101,109,118,105,101,119,102,105,110,100,112,97,
+103,101,100,97,121,115,102,117,108,108,104,101,97,100,116,101,114,109,101,97,99,
+104,97,114,101,97,102,114,111,109,116,114,117,101,109,97,114,107,97,98,108,101,
+117,112,111,110,104,105,103,104,100,97,116,101,108,97,110,100,110,101,119,115,
+101,118,101,110,110,101,120,116,99,97,115,101,98,111,116,104,112,111,115,116,117
+,115,101,100,109,97,100,101,104,97,110,100,104,101,114,101,119,104,97,116,110,97
+,109,101,76,105,110,107,98,108,111,103,115,105,122,101,98,97,115,101,104,101,108
+,100,109,97,107,101,109,97,105,110,117,115,101,114,39,41,32,43,104,111,108,100,
+101,110,100,115,119,105,116,104,78,101,119,115,114,101,97,100,119,101,114,101,
+115,105,103,110,116,97,107,101,104,97,118,101,103,97,109,101,115,101,101,110,99,
+97,108,108,112,97,116,104,119,101,108,108,112,108,117,115,109,101,110,117,102,
+105,108,109,112,97,114,116,106,111,105,110,116,104,105,115,108,105,115,116,103,
+111,111,100,110,101,101,100,119,97,121,115,119,101,115,116,106,111,98,115,109,
+105,110,100,97,108,115,111,108,111,103,111,114,105,99,104,117,115,101,115,108,97
+,115,116,116,101,97,109,97,114,109,121,102,111,111,100,107,105,110,103,119,105,
+108,108,101,97,115,116,119,97,114,100,98,101,115,116,102,105,114,101,80,97,103,
+101,107,110,111,119,97,119,97,121,46,112,110,103,109,111,118,101,116,104,97,110,
+108,111,97,100,103,105,118,101,115,101,108,102,110,111,116,101,109,117,99,104,
+102,101,101,100,109,97,110,121,114,111,99,107,105,99,111,110,111,110,99,101,108,
+111,111,107,104,105,100,101,100,105,101,100,72,111,109,101,114,117,108,101,104,
+111,115,116,97,106,97,120,105,110,102,111,99,108,117,98,108,97,119,115,108,101,
+115,115,104,97,108,102,115,111,109,101,115,117,99,104,122,111,110,101,49,48,48,
+37,111,110,101,115,99,97,114,101,84,105,109,101,114,97,99,101,98,108,117,101,102
+,111,117,114,119,101,101,107,102,97,99,101,104,111,112,101,103,97,118,101,104,97
+,114,100,108,111,115,116,119,104,101,110,112,97,114,107,107,101,112,116,112,97,
+115,115,115,104,105,112,114,111,111,109,72,84,77,76,112,108,97,110,84,121,112,
+101,100,111,110,101,115,97,118,101,107,101,101,112,102,108,97,103,108,105,110,
+107,115,111,108,100,102,105,118,101,116,111,111,107,114,97,116,101,116,111,119,
+110,106,117,109,112,116,104,117,115,100,97,114,107,99,97,114,100,102,105,108,101
+,102,101,97,114,115,116,97,121,107,105,108,108,116,104,97,116,102,97,108,108,97,
+117,116,111,101,118,101,114,46,99,111,109,116,97,108,107,115,104,111,112,118,111
+,116,101,100,101,101,112,109,111,100,101,114,101,115,116,116,117,114,110,98,111,
+114,110,98,97,110,100,102,101,108,108,114,111,115,101,117,114,108,40,115,107,105
+,110,114,111,108,101,99,111,109,101,97,99,116,115,97,103,101,115,109,101,101,116
+,103,111,108,100,46,106,112,103,105,116,101,109,118,97,114,121,102,101,108,116,
+116,104,101,110,115,101,110,100,100,114,111,112,86,105,101,119,99,111,112,121,49
+,46,48,34,60,47,97,62,115,116,111,112,101,108,115,101,108,105,101,115,116,111,
+117,114,112,97,99,107,46,103,105,102,112,97,115,116,99,115,115,63,103,114,97,121
+,109,101,97,110,38,103,116,59,114,105,100,101,115,104,111,116,108,97,116,101,115
+,97,105,100,114,111,97,100,118,97,114,32,102,101,101,108,106,111,104,110,114,105
+,99,107,112,111,114,116,102,97,115,116,39,85,65,45,100,101,97,100,60,47,98,62,
+112,111,111,114,98,105,108,108,116,121,112,101,85,46,83,46,119,111,111,100,109,
+117,115,116,50,112,120,59,73,110,102,111,114,97,110,107,119,105,100,101,119,97,
+110,116,119,97,108,108,108,101,97,100,91,48,93,59,112,97,117,108,119,97,118,101,
+115,117,114,101,36,40,39,35,119,97,105,116,109,97,115,115,97,114,109,115,103,111
+,101,115,103,97,105,110,108,97,110,103,112,97,105,100,33,45,45,32,108,111,99,107
+,117,110,105,116,114,111,111,116,119,97,108,107,102,105,114,109,119,105,102,101,
+120,109,108,34,115,111,110,103,116,101,115,116,50,48,112,120,107,105,110,100,114
+,111,119,115,116,111,111,108,102,111,110,116,109,97,105,108,115,97,102,101,115,
+116,97,114,109,97,112,115,99,111,114,101,114,97,105,110,102,108,111,119,98,97,98
+,121,115,112,97,110,115,97,121,115,52,112,120,59,54,112,120,59,97,114,116,115,
+102,111,111,116,114,101,97,108,119,105,107,105,104,101,97,116,115,116,101,112,
+116,114,105,112,111,114,103,47,108,97,107,101,119,101,97,107,116,111,108,100,70,
+111,114,109,99,97,115,116,102,97,110,115,98,97,110,107,118,101,114,121,114,117,
+110,115,106,117,108,121,116,97,115,107,49,112,120,59,103,111,97,108,103,114,101,
+119,115,108,111,119,101,100,103,101,105,100,61,34,115,101,116,115,53,112,120,59,
+46,106,115,63,52,48,112,120,105,102,32,40,115,111,111,110,115,101,97,116,110,111
+,110,101,116,117,98,101,122,101,114,111,115,101,110,116,114,101,101,100,102,97,
+99,116,105,110,116,111,103,105,102,116,104,97,114,109,49,56,112,120,99,97,109,
+101,104,105,108,108,98,111,108,100,122,111,111,109,118,111,105,100,101,97,115,
+121,114,105,110,103,102,105,108,108,112,101,97,107,105,110,105,116,99,111,115,
+116,51,112,120,59,106,97,99,107,116,97,103,115,98,105,116,115,114,111,108,108,
+101,100,105,116,107,110,101,119,110,101,97,114,60,33,45,45,103,114,111,119,74,83
+,79,78,100,117,116,121,78,97,109,101,115,97,108,101,121,111,117,32,108,111,116,
+115,112,97,105,110,106,97,122,122,99,111,108,100,101,121,101,115,102,105,115,104
+,119,119,119,46,114,105,115,107,116,97,98,115,112,114,101,118,49,48,112,120,114,
+105,115,101,50,53,112,120,66,108,117,101,100,105,110,103,51,48,48,44,98,97,108,
+108,102,111,114,100,101,97,114,110,119,105,108,100,98,111,120,46,102,97,105,114,
+108,97,99,107,118,101,114,115,112,97,105,114,106,117,110,101,116,101,99,104,105,
+102,40,33,112,105,99,107,101,118,105,108,36,40,34,35,119,97,114,109,108,111,114,
+100,100,111,101,115,112,117,108,108,44,48,48,48,105,100,101,97,100,114,97,119,
+104,117,103,101,115,112,111,116,102,117,110,100,98,117,114,110,104,114,101,102,
+99,101,108,108,107,101,121,115,116,105,99,107,104,111,117,114,108,111,115,115,
+102,117,101,108,49,50,112,120,115,117,105,116,100,101,97,108,82,83,83,34,97,103,
+101,100,103,114,101,121,71,69,84,34,101,97,115,101,97,105,109,115,103,105,114,
+108,97,105,100,115,56,112,120,59,110,97,118,121,103,114,105,100,116,105,112,115,
+35,57,57,57,119,97,114,115,108,97,100,121,99,97,114,115,41,59,32,125,112,104,112
+,63,104,101,108,108,116,97,108,108,119,104,111,109,122,104,58,229,42,47,13,10,32
+,49,48,48,104,97,108,108,46,10,10,65,55,112,120,59,112,117,115,104,99,104,97,116
+,48,112,120,59,99,114,101,119,42,47,60,47,104,97,115,104,55,53,112,120,102,108,
+97,116,114,97,114,101,32,38,38,32,116,101,108,108,99,97,109,112,111,110,116,111,
+108,97,105,100,109,105,115,115,115,107,105,112,116,101,110,116,102,105,110,101,
+109,97,108,101,103,101,116,115,112,108,111,116,52,48,48,44,13,10,13,10,99,111,
+111,108,102,101,101,116,46,112,104,112,60,98,114,62,101,114,105,99,109,111,115,
+116,103,117,105,100,98,101,108,108,100,101,115,99,104,97,105,114,109,97,116,104,
+97,116,111,109,47,105,109,103,38,35,56,50,108,117,99,107,99,101,110,116,48,48,48
+,59,116,105,110,121,103,111,110,101,104,116,109,108,115,101,108,108,100,114,117,
+103,70,82,69,69,110,111,100,101,110,105,99,107,63,105,100,61,108,111,115,101,110
+,117,108,108,118,97,115,116,119,105,110,100,82,83,83,32,119,101,97,114,114,101,
+108,121,98,101,101,110,115,97,109,101,100,117,107,101,110,97,115,97,99,97,112,
+101,119,105,115,104,103,117,108,102,84,50,51,58,104,105,116,115,115,108,111,116,
+103,97,116,101,107,105,99,107,98,108,117,114,116,104,101,121,49,53,112,120,39,39
+,41,59,41,59,34,62,109,115,105,101,119,105,110,115,98,105,114,100,115,111,114,
+116,98,101,116,97,115,101,101,107,84,49,56,58,111,114,100,115,116,114,101,101,
+109,97,108,108,54,48,112,120,102,97,114,109,226,128,153,115,98,111,121,115,91,48
+,93,46,39,41,59,34,80,79,83,84,98,101,97,114,107,105,100,115,41,59,125,125,109,
+97,114,121,116,101,110,100,40,85,75,41,113,117,97,100,122,104,58,230,45,115,105,
+122,45,45,45,45,112,114,111,112,39,41,59,13,108,105,102,116,84,49,57,58,118,105,
+99,101,97,110,100,121,100,101,98,116,62,82,83,83,112,111,111,108,110,101,99,107,
+98,108,111,119,84,49,54,58,100,111,111,114,101,118,97,108,84,49,55,58,108,101,
+116,115,102,97,105,108,111,114,97,108,112,111,108,108,110,111,118,97,99,111,108,
+115,103,101,110,101,32,226,128,148,115,111,102,116,114,111,109,101,116,105,108,
+108,114,111,115,115,60,104,51,62,112,111,117,114,102,97,100,101,112,105,110,107,
+60,116,114,62,109,105,110,105,41,124,33,40,109,105,110,101,122,104,58,232,98,97,
+114,115,104,101,97,114,48,48,41,59,109,105,108,107,32,45,45,62,105,114,111,110,
+102,114,101,100,100,105,115,107,119,101,110,116,115,111,105,108,112,117,116,115,
+47,106,115,47,104,111,108,121,84,50,50,58,73,83,66,78,84,50,48,58,97,100,97,109,
+115,101,101,115,60,104,50,62,106,115,111,110,39,44,32,39,99,111,110,116,84,50,49
+,58,32,82,83,83,108,111,111,112,97,115,105,97,109,111,111,110,60,47,112,62,115,
+111,117,108,76,73,78,69,102,111,114,116,99,97,114,116,84,49,52,58,60,104,49,62,
+56,48,112,120,33,45,45,60,57,112,120,59,84,48,52,58,109,105,107,101,58,52,54,90,
+110,105,99,101,105,110,99,104,89,111,114,107,114,105,99,101,122,104,58,228,39,41
+,41,59,112,117,114,101,109,97,103,101,112,97,114,97,116,111,110,101,98,111,110,
+100,58,51,55,90,95,111,102,95,39,93,41,59,48,48,48,44,122,104,58,231,116,97,110,
+107,121,97,114,100,98,111,119,108,98,117,115,104,58,53,54,90,74,97,118,97,51,48,
+112,120,10,124,125,10,37,67,51,37,58,51,52,90,106,101,102,102,69,88,80,73,99,97,
+115,104,118,105,115,97,103,111,108,102,115,110,111,119,122,104,58,233,113,117,
+101,114,46,99,115,115,115,105,99,107,109,101,97,116,109,105,110,46,98,105,110,
+100,100,101,108,108,104,105,114,101,112,105,99,115,114,101,110,116,58,51,54,90,
+72,84,84,80,45,50,48,49,102,111,116,111,119,111,108,102,69,78,68,32,120,98,111,
+120,58,53,52,90,66,79,68,89,100,105,99,107,59,10,125,10,101,120,105,116,58,51,53
+,90,118,97,114,115,98,101,97,116,39,125,41,59,100,105,101,116,57,57,57,59,97,110
+,110,101,125,125,60,47,91,105,93,46,76,97,110,103,107,109,194,178,119,105,114,
+101,116,111,121,115,97,100,100,115,115,101,97,108,97,108,101,120,59,10,9,125,101
+,99,104,111,110,105,110,101,46,111,114,103,48,48,53,41,116,111,110,121,106,101,
+119,115,115,97,110,100,108,101,103,115,114,111,111,102,48,48,48,41,32,50,48,48,
+119,105,110,101,103,101,97,114,100,111,103,115,98,111,111,116,103,97,114,121,99,
+117,116,115,116,121,108,101,116,101,109,112,116,105,111,110,46,120,109,108,99,
+111,99,107,103,97,110,103,36,40,39,46,53,48,112,120,80,104,46,68,109,105,115,99,
+97,108,97,110,108,111,97,110,100,101,115,107,109,105,108,101,114,121,97,110,117,
+110,105,120,100,105,115,99,41,59,125,10,100,117,115,116,99,108,105,112,41,46,10,
+10,55,48,112,120,45,50,48,48,68,86,68,115,55,93,62,60,116,97,112,101,100,101,109
+,111,105,43,43,41,119,97,103,101,101,117,114,111,112,104,105,108,111,112,116,115
+,104,111,108,101,70,65,81,115,97,115,105,110,45,50,54,84,108,97,98,115,112,101,
+116,115,85,82,76,32,98,117,108,107,99,111,111,107,59,125,13,10,72,69,65,68,91,48
+,93,41,97,98,98,114,106,117,97,110,40,49,57,56,108,101,115,104,116,119,105,110,
+60,47,105,62,115,111,110,121,103,117,121,115,102,117,99,107,112,105,112,101,124,
+45,10,33,48,48,50,41,110,100,111,119,91,49,93,59,91,93,59,10,76,111,103,32,115,
+97,108,116,13,10,9,9,98,97,110,103,116,114,105,109,98,97,116,104,41,123,13,10,48
+,48,112,120,10,125,41,59,107,111,58,236,102,101,101,115,97,100,62,13,115,58,47,
+47,32,91,93,59,116,111,108,108,112,108,117,103,40,41,123,10,123,13,10,32,46,106,
+115,39,50,48,48,112,100,117,97,108,98,111,97,116,46,74,80,71,41,59,10,125,113,
+117,111,116,41,59,10,10,39,41,59,10,13,10,125,13,50,48,49,52,50,48,49,53,50,48,
+49,54,50,48,49,55,50,48,49,56,50,48,49,57,50,48,50,48,50,48,50,49,50,48,50,50,50
+,48,50,51,50,48,50,52,50,48,50,53,50,48,50,54,50,48,50,55,50,48,50,56,50,48,50,
+57,50,48,51,48,50,48,51,49,50,48,51,50,50,48,51,51,50,48,51,52,50,48,51,53,50,48
+,51,54,50,48,51,55,50,48,49,51,50,48,49,50,50,48,49,49,50,48,49,48,50,48,48,57,
+50,48,48,56,50,48,48,55,50,48,48,54,50,48,48,53,50,48,48,52,50,48,48,51,50,48,48
+,50,50,48,48,49,50,48,48,48,49,57,57,57,49,57,57,56,49,57,57,55,49,57,57,54,49,
+57,57,53,49,57,57,52,49,57,57,51,49,57,57,50,49,57,57,49,49,57,57,48,49,57,56,57
+,49,57,56,56,49,57,56,55,49,57,56,54,49,57,56,53,49,57,56,52,49,57,56,51,49,57,
+56,50,49,57,56,49,49,57,56,48,49,57,55,57,49,57,55,56,49,57,55,55,49,57,55,54,49
+,57,55,53,49,57,55,52,49,57,55,51,49,57,55,50,49,57,55,49,49,57,55,48,49,57,54,
+57,49,57,54,56,49,57,54,55,49,57,54,54,49,57,54,53,49,57,54,52,49,57,54,51,49,57
+,54,50,49,57,54,49,49,57,54,48,49,57,53,57,49,57,53,56,49,57,53,55,49,57,53,54,
+49,57,53,53,49,57,53,52,49,57,53,51,49,57,53,50,49,57,53,49,49,57,53,48,49,48,48
+,48,49,48,50,52,49,51,57,52,48,48,48,48,57,57,57,57,99,111,109,111,109,195,161,
+115,101,115,116,101,101,115,116,97,112,101,114,111,116,111,100,111,104,97,99,101
+,99,97,100,97,97,195,177,111,98,105,101,110,100,195,173,97,97,115,195,173,118,
+105,100,97,99,97,115,111,111,116,114,111,102,111,114,111,115,111,108,111,111,116
+,114,97,99,117,97,108,100,105,106,111,115,105,100,111,103,114,97,110,116,105,112
+,111,116,101,109,97,100,101,98,101,97,108,103,111,113,117,195,169,101,115,116,
+111,110,97,100,97,116,114,101,115,112,111,99,111,99,97,115,97,98,97,106,111,116,
+111,100,97,115,105,110,111,97,103,117,97,112,117,101,115,117,110,111,115,97,110,
+116,101,100,105,99,101,108,117,105,115,101,108,108,97,109,97,121,111,122,111,110
+,97,97,109,111,114,112,105,115,111,111,98,114,97,99,108,105,99,101,108,108,111,
+100,105,111,115,104,111,114,97,99,97,115,105,208,183,208,176,208,189,208,176,208
+,190,208,188,209,128,208,176,209,128,209,131,209,130,208,176,208,189,208,181,208
+,191,208,190,208,190,209,130,208,184,208,183,208,189,208,190,208,180,208,190,209
+,130,208,190,208,182,208,181,208,190,208,189,208,184,209,133,208,157,208,176,208
+,181,208,181,208,177,209,139,208,188,209,139,208,146,209,139,209,129,208,190,208
+,178,209,139,208,178,208,190,208,157,208,190,208,190,208,177,208,159,208,190,208
+,187,208,184,208,189,208,184,208,160,208,164,208,157,208,181,208,156,209,139,209
+,130,209,139,208,158,208,189,208,184,208,188,208,180,208,176,208,151,208,176,208
+,148,208,176,208,157,209,131,208,158,208,177,209,130,208,181,208,152,208,183,208
+,181,208,185,208,189,209,131,208,188,208,188,208,162,209,139,209,131,208,182,217
+,129,217,138,216,163,217,134,217,133,216,167,217,133,216,185,217,131,217,132,216
+,163,217,136,216,177,216,175,217,138,216,167,217,129,217,137,217,135,217,136,217
+,132,217,133,217,132,217,131,216,167,217,136,217,132,217,135,216,168,216,179,216
+,167,217,132,216,165,217,134,217,135,217,138,216,163,217,138,217,130,216,175,217
+,135,217,132,216,171,217,133,216,168,217,135,217,132,217,136,217,132,217,138,216
+,168,217,132,216,167,217,138,216,168,217,131,216,180,217,138,216,167,217,133,216
+,163,217,133,217,134,216,170,216,168,217,138,217,132,217,134,216,173,216,168,217
+,135,217,133,217,133,216,180,217,136,216,180,102,105,114,115,116,118,105,100,101
+,111,108,105,103,104,116,119,111,114,108,100,109,101,100,105,97,119,104,105,116,
+101,99,108,111,115,101,98,108,97,99,107,114,105,103,104,116,115,109,97,108,108,
+98,111,111,107,115,112,108,97,99,101,109,117,115,105,99,102,105,101,108,100,111,
+114,100,101,114,112,111,105,110,116,118,97,108,117,101,108,101,118,101,108,116,
+97,98,108,101,98,111,97,114,100,104,111,117,115,101,103,114,111,117,112,119,111,
+114,107,115,121,101,97,114,115,115,116,97,116,101,116,111,100,97,121,119,97,116,
+101,114,115,116,97,114,116,115,116,121,108,101,100,101,97,116,104,112,111,119,
+101,114,112,104,111,110,101,110,105,103,104,116,101,114,114,111,114,105,110,112,
+117,116,97,98,111,117,116,116,101,114,109,115,116,105,116,108,101,116,111,111,
+108,115,101,118,101,110,116,108,111,99,97,108,116,105,109,101,115,108,97,114,103
+,101,119,111,114,100,115,103,97,109,101,115,115,104,111,114,116,115,112,97,99,
+101,102,111,99,117,115,99,108,101,97,114,109,111,100,101,108,98,108,111,99,107,
+103,117,105,100,101,114,97,100,105,111,115,104,97,114,101,119,111,109,101,110,97
+,103,97,105,110,109,111,110,101,121,105,109,97,103,101,110,97,109,101,115,121,
+111,117,110,103,108,105,110,101,115,108,97,116,101,114,99,111,108,111,114,103,
+114,101,101,110,102,114,111,110,116,38,97,109,112,59,119,97,116,99,104,102,111,
+114,99,101,112,114,105,99,101,114,117,108,101,115,98,101,103,105,110,97,102,116,
+101,114,118,105,115,105,116,105,115,115,117,101,97,114,101,97,115,98,101,108,111
+,119,105,110,100,101,120,116,111,116,97,108,104,111,117,114,115,108,97,98,101,
+108,112,114,105,110,116,112,114,101,115,115,98,117,105,108,116,108,105,110,107,
+115,115,112,101,101,100,115,116,117,100,121,116,114,97,100,101,102,111,117,110,
+100,115,101,110,115,101,117,110,100,101,114,115,104,111,119,110,102,111,114,109,
+115,114,97,110,103,101,97,100,100,101,100,115,116,105,108,108,109,111,118,101,
+100,116,97,107,101,110,97,98,111,118,101,102,108,97,115,104,102,105,120,101,100,
+111,102,116,101,110,111,116,104,101,114,118,105,101,119,115,99,104,101,99,107,
+108,101,103,97,108,114,105,118,101,114,105,116,101,109,115,113,117,105,99,107,
+115,104,97,112,101,104,117,109,97,110,101,120,105,115,116,103,111,105,110,103,
+109,111,118,105,101,116,104,105,114,100,98,97,115,105,99,112,101,97,99,101,115,
+116,97,103,101,119,105,100,116,104,108,111,103,105,110,105,100,101,97,115,119,
+114,111,116,101,112,97,103,101,115,117,115,101,114,115,100,114,105,118,101,115,
+116,111,114,101,98,114,101,97,107,115,111,117,116,104,118,111,105,99,101,115,105
+,116,101,115,109,111,110,116,104,119,104,101,114,101,98,117,105,108,100,119,104,
+105,99,104,101,97,114,116,104,102,111,114,117,109,116,104,114,101,101,115,112,
+111,114,116,112,97,114,116,121,67,108,105,99,107,108,111,119,101,114,108,105,118
+,101,115,99,108,97,115,115,108,97,121,101,114,101,110,116,114,121,115,116,111,
+114,121,117,115,97,103,101,115,111,117,110,100,99,111,117,114,116,121,111,117,
+114,32,98,105,114,116,104,112,111,112,117,112,116,121,112,101,115,97,112,112,108
+,121,73,109,97,103,101,98,101,105,110,103,117,112,112,101,114,110,111,116,101,
+115,101,118,101,114,121,115,104,111,119,115,109,101,97,110,115,101,120,116,114,
+97,109,97,116,99,104,116,114,97,99,107,107,110,111,119,110,101,97,114,108,121,98
+,101,103,97,110,115,117,112,101,114,112,97,112,101,114,110,111,114,116,104,108,
+101,97,114,110,103,105,118,101,110,110,97,109,101,100,101,110,100,101,100,84,101
+,114,109,115,112,97,114,116,115,71,114,111,117,112,98,114,97,110,100,117,115,105
+,110,103,119,111,109,97,110,102,97,108,115,101,114,101,97,100,121,97,117,100,105
+,111,116,97,107,101,115,119,104,105,108,101,46,99,111,109,47,108,105,118,101,100
+,99,97,115,101,115,100,97,105,108,121,99,104,105,108,100,103,114,101,97,116,106,
+117,100,103,101,116,104,111,115,101,117,110,105,116,115,110,101,118,101,114,98,
+114,111,97,100,99,111,97,115,116,99,111,118,101,114,97,112,112,108,101,102,105,
+108,101,115,99,121,99,108,101,115,99,101,110,101,112,108,97,110,115,99,108,105,
+99,107,119,114,105,116,101,113,117,101,101,110,112,105,101,99,101,101,109,97,105
+,108,102,114,97,109,101,111,108,100,101,114,112,104,111,116,111,108,105,109,105,
+116,99,97,99,104,101,99,105,118,105,108,115,99,97,108,101,101,110,116,101,114,
+116,104,101,109,101,116,104,101,114,101,116,111,117,99,104,98,111,117,110,100,
+114,111,121,97,108,97,115,107,101,100,119,104,111,108,101,115,105,110,99,101,115
+,116,111,99,107,32,110,97,109,101,102,97,105,116,104,104,101,97,114,116,101,109,
+112,116,121,111,102,102,101,114,115,99,111,112,101,111,119,110,101,100,109,105,
+103,104,116,97,108,98,117,109,116,104,105,110,107,98,108,111,111,100,97,114,114,
+97,121,109,97,106,111,114,116,114,117,115,116,99,97,110,111,110,117,110,105,111,
+110,99,111,117,110,116,118,97,108,105,100,115,116,111,110,101,83,116,121,108,101
+,76,111,103,105,110,104,97,112,112,121,111,99,99,117,114,108,101,102,116,58,102,
+114,101,115,104,113,117,105,116,101,102,105,108,109,115,103,114,97,100,101,110,
+101,101,100,115,117,114,98,97,110,102,105,103,104,116,98,97,115,105,115,104,111,
+118,101,114,97,117,116,111,59,114,111,117,116,101,46,104,116,109,108,109,105,120
+,101,100,102,105,110,97,108,89,111,117,114,32,115,108,105,100,101,116,111,112,
+105,99,98,114,111,119,110,97,108,111,110,101,100,114,97,119,110,115,112,108,105,
+116,114,101,97,99,104,82,105,103,104,116,100,97,116,101,115,109,97,114,99,104,
+113,117,111,116,101,103,111,111,100,115,76,105,110,107,115,100,111,117,98,116,97
+,115,121,110,99,116,104,117,109,98,97,108,108,111,119,99,104,105,101,102,121,111
+,117,116,104,110,111,118,101,108,49,48,112,120,59,115,101,114,118,101,117,110,
+116,105,108,104,97,110,100,115,67,104,101,99,107,83,112,97,99,101,113,117,101,
+114,121,106,97,109,101,115,101,113,117,97,108,116,119,105,99,101,48,44,48,48,48,
+83,116,97,114,116,112,97,110,101,108,115,111,110,103,115,114,111,117,110,100,101
+,105,103,104,116,115,104,105,102,116,119,111,114,116,104,112,111,115,116,115,108
+,101,97,100,115,119,101,101,107,115,97,118,111,105,100,116,104,101,115,101,109,
+105,108,101,115,112,108,97,110,101,115,109,97,114,116,97,108,112,104,97,112,108,
+97,110,116,109,97,114,107,115,114,97,116,101,115,112,108,97,121,115,99,108,97,
+105,109,115,97,108,101,115,116,101,120,116,115,115,116,97,114,115,119,114,111,
+110,103,60,47,104,51,62,116,104,105,110,103,46,111,114,103,47,109,117,108,116,
+105,104,101,97,114,100,80,111,119,101,114,115,116,97,110,100,116,111,107,101,110
+,115,111,108,105,100,40,116,104,105,115,98,114,105,110,103,115,104,105,112,115,
+115,116,97,102,102,116,114,105,101,100,99,97,108,108,115,102,117,108,108,121,102
+,97,99,116,115,97,103,101,110,116,84,104,105,115,32,47,47,45,45,62,97,100,109,
+105,110,101,103,121,112,116,69,118,101,110,116,49,53,112,120,59,69,109,97,105,
+108,116,114,117,101,34,99,114,111,115,115,115,112,101,110,116,98,108,111,103,115
+,98,111,120,34,62,110,111,116,101,100,108,101,97,118,101,99,104,105,110,97,115,
+105,122,101,115,103,117,101,115,116,60,47,104,52,62,114,111,98,111,116,104,101,
+97,118,121,116,114,117,101,44,115,101,118,101,110,103,114,97,110,100,99,114,105,
+109,101,115,105,103,110,115,97,119,97,114,101,100,97,110,99,101,112,104,97,115,
+101,62,60,33,45,45,101,110,95,85,83,38,35,51,57,59,50,48,48,112,120,95,110,97,
+109,101,108,97,116,105,110,101,110,106,111,121,97,106,97,120,46,97,116,105,111,
+110,115,109,105,116,104,85,46,83,46,32,104,111,108,100,115,112,101,116,101,114,
+105,110,100,105,97,110,97,118,34,62,99,104,97,105,110,115,99,111,114,101,99,111,
+109,101,115,100,111,105,110,103,112,114,105,111,114,83,104,97,114,101,49,57,57,
+48,115,114,111,109,97,110,108,105,115,116,115,106,97,112,97,110,102,97,108,108,
+115,116,114,105,97,108,111,119,110,101,114,97,103,114,101,101,60,47,104,50,62,97
+,98,117,115,101,97,108,101,114,116,111,112,101,114,97,34,45,47,47,87,99,97,114,
+100,115,104,105,108,108,115,116,101,97,109,115,80,104,111,116,111,116,114,117,
+116,104,99,108,101,97,110,46,112,104,112,63,115,97,105,110,116,109,101,116,97,
+108,108,111,117,105,115,109,101,97,110,116,112,114,111,111,102,98,114,105,101,
+102,114,111,119,34,62,103,101,110,114,101,116,114,117,99,107,108,111,111,107,115
+,86,97,108,117,101,70,114,97,109,101,46,110,101,116,47,45,45,62,10,60,116,114,
+121,32,123,10,118,97,114,32,109,97,107,101,115,99,111,115,116,115,112,108,97,105
+,110,97,100,117,108,116,113,117,101,115,116,116,114,97,105,110,108,97,98,111,114
+,104,101,108,112,115,99,97,117,115,101,109,97,103,105,99,109,111,116,111,114,116
+,104,101,105,114,50,53,48,112,120,108,101,97,115,116,115,116,101,112,115,67,111,
+117,110,116,99,111,117,108,100,103,108,97,115,115,115,105,100,101,115,102,117,
+110,100,115,104,111,116,101,108,97,119,97,114,100,109,111,117,116,104,109,111,
+118,101,115,112,97,114,105,115,103,105,118,101,115,100,117,116,99,104,116,101,
+120,97,115,102,114,117,105,116,110,117,108,108,44,124,124,91,93,59,116,111,112,
+34,62,10,60,33,45,45,80,79,83,84,34,111,99,101,97,110,60,98,114,47,62,102,108,
+111,111,114,115,112,101,97,107,100,101,112,116,104,32,115,105,122,101,98,97,110,
+107,115,99,97,116,99,104,99,104,97,114,116,50,48,112,120,59,97,108,105,103,110,
+100,101,97,108,115,119,111,117,108,100,53,48,112,120,59,117,114,108,61,34,112,97
+,114,107,115,109,111,117,115,101,77,111,115,116,32,46,46,46,60,47,97,109,111,110
+,103,98,114,97,105,110,98,111,100,121,32,110,111,110,101,59,98,97,115,101,100,99
+,97,114,114,121,100,114,97,102,116,114,101,102,101,114,112,97,103,101,95,104,111
+,109,101,46,109,101,116,101,114,100,101,108,97,121,100,114,101,97,109,112,114,
+111,118,101,106,111,105,110,116,60,47,116,114,62,100,114,117,103,115,60,33,45,45
+,32,97,112,114,105,108,105,100,101,97,108,97,108,108,101,110,101,120,97,99,116,
+102,111,114,116,104,99,111,100,101,115,108,111,103,105,99,86,105,101,119,32,115,
+101,101,109,115,98,108,97,110,107,112,111,114,116,115,32,40,50,48,48,115,97,118,
+101,100,95,108,105,110,107,103,111,97,108,115,103,114,97,110,116,103,114,101,101
+,107,104,111,109,101,115,114,105,110,103,115,114,97,116,101,100,51,48,112,120,59
+,119,104,111,115,101,112,97,114,115,101,40,41,59,34,32,66,108,111,99,107,108,105
+,110,117,120,106,111,110,101,115,112,105,120,101,108,39,41,59,34,62,41,59,105,
+102,40,45,108,101,102,116,100,97,118,105,100,104,111,114,115,101,70,111,99,117,
+115,114,97,105,115,101,98,111,120,101,115,84,114,97,99,107,101,109,101,110,116,
+60,47,101,109,62,98,97,114,34,62,46,115,114,99,61,116,111,119,101,114,97,108,116
+,61,34,99,97,98,108,101,104,101,110,114,121,50,52,112,120,59,115,101,116,117,112
+,105,116,97,108,121,115,104,97,114,112,109,105,110,111,114,116,97,115,116,101,
+119,97,110,116,115,116,104,105,115,46,114,101,115,101,116,119,104,101,101,108,
+103,105,114,108,115,47,99,115,115,47,49,48,48,37,59,99,108,117,98,115,115,116,
+117,102,102,98,105,98,108,101,118,111,116,101,115,32,49,48,48,48,107,111,114,101
+,97,125,41,59,13,10,98,97,110,100,115,113,117,101,117,101,61,32,123,125,59,56,48
+,112,120,59,99,107,105,110,103,123,13,10,9,9,97,104,101,97,100,99,108,111,99,107
+,105,114,105,115,104,108,105,107,101,32,114,97,116,105,111,115,116,97,116,115,70
+,111,114,109,34,121,97,104,111,111,41,91,48,93,59,65,98,111,117,116,102,105,110,
+100,115,60,47,104,49,62,100,101,98,117,103,116,97,115,107,115,85,82,76,32,61,99,
+101,108,108,115,125,41,40,41,59,49,50,112,120,59,112,114,105,109,101,116,101,108
+,108,115,116,117,114,110,115,48,120,54,48,48,46,106,112,103,34,115,112,97,105,
+110,98,101,97,99,104,116,97,120,101,115,109,105,99,114,111,97,110,103,101,108,45
+,45,62,60,47,103,105,102,116,115,115,116,101,118,101,45,108,105,110,107,98,111,
+100,121,46,125,41,59,10,9,109,111,117,110,116,32,40,49,57,57,70,65,81,60,47,114,
+111,103,101,114,102,114,97,110,107,67,108,97,115,115,50,56,112,120,59,102,101,
+101,100,115,60,104,49,62,60,115,99,111,116,116,116,101,115,116,115,50,50,112,120
+,59,100,114,105,110,107,41,32,124,124,32,108,101,119,105,115,115,104,97,108,108,
+35,48,51,57,59,32,102,111,114,32,108,111,118,101,100,119,97,115,116,101,48,48,
+112,120,59,106,97,58,227,130,115,105,109,111,110,60,102,111,110,116,114,101,112,
+108,121,109,101,101,116,115,117,110,116,101,114,99,104,101,97,112,116,105,103,
+104,116,66,114,97,110,100,41,32,33,61,32,100,114,101,115,115,99,108,105,112,115,
+114,111,111,109,115,111,110,107,101,121,109,111,98,105,108,109,97,105,110,46,78,
+97,109,101,32,112,108,97,116,101,102,117,110,110,121,116,114,101,101,115,99,111,
+109,47,34,49,46,106,112,103,119,109,111,100,101,112,97,114,97,109,83,84,65,82,84
+,108,101,102,116,32,105,100,100,101,110,44,32,50,48,49,41,59,10,125,10,102,111,
+114,109,46,118,105,114,117,115,99,104,97,105,114,116,114,97,110,115,119,111,114,
+115,116,80,97,103,101,115,105,116,105,111,110,112,97,116,99,104,60,33,45,45,10,
+111,45,99,97,99,102,105,114,109,115,116,111,117,114,115,44,48,48,48,32,97,115,
+105,97,110,105,43,43,41,123,97,100,111,98,101,39,41,91,48,93,105,100,61,49,48,98
+,111,116,104,59,109,101,110,117,32,46,50,46,109,105,46,112,110,103,34,107,101,
+118,105,110,99,111,97,99,104,67,104,105,108,100,98,114,117,99,101,50,46,106,112,
+103,85,82,76,41,43,46,106,112,103,124,115,117,105,116,101,115,108,105,99,101,104
+,97,114,114,121,49,50,48,34,32,115,119,101,101,116,116,114,62,13,10,110,97,109,
+101,61,100,105,101,103,111,112,97,103,101,32,115,119,105,115,115,45,45,62,10,10,
+35,102,102,102,59,34,62,76,111,103,46,99,111,109,34,116,114,101,97,116,115,104,
+101,101,116,41,32,38,38,32,49,52,112,120,59,115,108,101,101,112,110,116,101,110,
+116,102,105,108,101,100,106,97,58,227,131,105,100,61,34,99,78,97,109,101,34,119,
+111,114,115,101,115,104,111,116,115,45,98,111,120,45,100,101,108,116,97,10,38,
+108,116,59,98,101,97,114,115,58,52,56,90,60,100,97,116,97,45,114,117,114,97,108,
+60,47,97,62,32,115,112,101,110,100,98,97,107,101,114,115,104,111,112,115,61,32,
+34,34,59,112,104,112,34,62,99,116,105,111,110,49,51,112,120,59,98,114,105,97,110
+,104,101,108,108,111,115,105,122,101,61,111,61,37,50,70,32,106,111,105,110,109,
+97,121,98,101,60,105,109,103,32,105,109,103,34,62,44,32,102,106,115,105,109,103,
+34,32,34,41,91,48,93,77,84,111,112,66,84,121,112,101,34,110,101,119,108,121,68,
+97,110,115,107,99,122,101,99,104,116,114,97,105,108,107,110,111,119,115,60,47,
+104,53,62,102,97,113,34,62,122,104,45,99,110,49,48,41,59,10,45,49,34,41,59,116,
+121,112,101,61,98,108,117,101,115,116,114,117,108,121,100,97,118,105,115,46,106,
+115,39,59,62,13,10,60,33,115,116,101,101,108,32,121,111,117,32,104,50,62,13,10,
+102,111,114,109,32,106,101,115,117,115,49,48,48,37,32,109,101,110,117,46,13,10,9
+,13,10,119,97,108,101,115,114,105,115,107,115,117,109,101,110,116,100,100,105,
+110,103,98,45,108,105,107,116,101,97,99,104,103,105,102,34,32,118,101,103,97,115
+,100,97,110,115,107,101,101,115,116,105,115,104,113,105,112,115,117,111,109,105,
+115,111,98,114,101,100,101,115,100,101,101,110,116,114,101,116,111,100,111,115,
+112,117,101,100,101,97,195,177,111,115,101,115,116,195,161,116,105,101,110,101,
+104,97,115,116,97,111,116,114,111,115,112,97,114,116,101,100,111,110,100,101,110
+,117,101,118,111,104,97,99,101,114,102,111,114,109,97,109,105,115,109,111,109,
+101,106,111,114,109,117,110,100,111,97,113,117,195,173,100,195,173,97,115,115,
+195,179,108,111,97,121,117,100,97,102,101,99,104,97,116,111,100,97,115,116,97,
+110,116,111,109,101,110,111,115,100,97,116,111,115,111,116,114,97,115,115,105,
+116,105,111,109,117,99,104,111,97,104,111,114,97,108,117,103,97,114,109,97,121,
+111,114,101,115,116,111,115,104,111,114,97,115,116,101,110,101,114,97,110,116,
+101,115,102,111,116,111,115,101,115,116,97,115,112,97,195,173,115,110,117,101,
+118,97,115,97,108,117,100,102,111,114,111,115,109,101,100,105,111,113,117,105,
+101,110,109,101,115,101,115,112,111,100,101,114,99,104,105,108,101,115,101,114,
+195,161,118,101,99,101,115,100,101,99,105,114,106,111,115,195,169,101,115,116,97
+,114,118,101,110,116,97,103,114,117,112,111,104,101,99,104,111,101,108,108,111,
+115,116,101,110,103,111,97,109,105,103,111,99,111,115,97,115,110,105,118,101,108
+,103,101,110,116,101,109,105,115,109,97,97,105,114,101,115,106,117,108,105,111,
+116,101,109,97,115,104,97,99,105,97,102,97,118,111,114,106,117,110,105,111,108,
+105,98,114,101,112,117,110,116,111,98,117,101,110,111,97,117,116,111,114,97,98,
+114,105,108,98,117,101,110,97,116,101,120,116,111,109,97,114,122,111,115,97,98,
+101,114,108,105,115,116,97,108,117,101,103,111,99,195,179,109,111,101,110,101,
+114,111,106,117,101,103,111,112,101,114,195,186,104,97,98,101,114,101,115,116,
+111,121,110,117,110,99,97,109,117,106,101,114,118,97,108,111,114,102,117,101,114
+,97,108,105,98,114,111,103,117,115,116,97,105,103,117,97,108,118,111,116,111,115
+,99,97,115,111,115,103,117,195,173,97,112,117,101,100,111,115,111,109,111,115,97
+,118,105,115,111,117,115,116,101,100,100,101,98,101,110,110,111,99,104,101,98,
+117,115,99,97,102,97,108,116,97,101,117,114,111,115,115,101,114,105,101,100,105,
+99,104,111,99,117,114,115,111,99,108,97,118,101,99,97,115,97,115,108,101,195,179
+,110,112,108,97,122,111,108,97,114,103,111,111,98,114,97,115,118,105,115,116,97,
+97,112,111,121,111,106,117,110,116,111,116,114,97,116,97,118,105,115,116,111,99,
+114,101,97,114,99,97,109,112,111,104,101,109,111,115,99,105,110,99,111,99,97,114
+,103,111,112,105,115,111,115,111,114,100,101,110,104,97,99,101,110,195,161,114,
+101,97,100,105,115,99,111,112,101,100,114,111,99,101,114,99,97,112,117,101,100,
+97,112,97,112,101,108,109,101,110,111,114,195,186,116,105,108,99,108,97,114,111,
+106,111,114,103,101,99,97,108,108,101,112,111,110,101,114,116,97,114,100,101,110
+,97,100,105,101,109,97,114,99,97,115,105,103,117,101,101,108,108,97,115,115,105,
+103,108,111,99,111,99,104,101,109,111,116,111,115,109,97,100,114,101,99,108,97,
+115,101,114,101,115,116,111,110,105,195,177,111,113,117,101,100,97,112,97,115,97
+,114,98,97,110,99,111,104,105,106,111,115,118,105,97,106,101,112,97,98,108,111,
+195,169,115,116,101,118,105,101,110,101,114,101,105,110,111,100,101,106,97,114,
+102,111,110,100,111,99,97,110,97,108,110,111,114,116,101,108,101,116,114,97,99,
+97,117,115,97,116,111,109,97,114,109,97,110,111,115,108,117,110,101,115,97,117,
+116,111,115,118,105,108,108,97,118,101,110,100,111,112,101,115,97,114,116,105,
+112,111,115,116,101,110,103,97,109,97,114,99,111,108,108,101,118,97,112,97,100,
+114,101,117,110,105,100,111,118,97,109,111,115,122,111,110,97,115,97,109,98,111,
+115,98,97,110,100,97,109,97,114,105,97,97,98,117,115,111,109,117,99,104,97,115,
+117,98,105,114,114,105,111,106,97,118,105,118,105,114,103,114,97,100,111,99,104,
+105,99,97,97,108,108,195,173,106,111,118,101,110,100,105,99,104,97,101,115,116,
+97,110,116,97,108,101,115,115,97,108,105,114,115,117,101,108,111,112,101,115,111
+,115,102,105,110,101,115,108,108,97,109,97,98,117,115,99,111,195,169,115,116,97,
+108,108,101,103,97,110,101,103,114,111,112,108,97,122,97,104,117,109,111,114,112
+,97,103,97,114,106,117,110,116,97,100,111,98,108,101,105,115,108,97,115,98,111,
+108,115,97,98,97,195,177,111,104,97,98,108,97,108,117,99,104,97,195,129,114,101,
+97,100,105,99,101,110,106,117,103,97,114,110,111,116,97,115,118,97,108,108,101,
+97,108,108,195,161,99,97,114,103,97,100,111,108,111,114,97,98,97,106,111,101,115
+,116,195,169,103,117,115,116,111,109,101,110,116,101,109,97,114,105,111,102,105,
+114,109,97,99,111,115,116,111,102,105,99,104,97,112,108,97,116,97,104,111,103,97
+,114,97,114,116,101,115,108,101,121,101,115,97,113,117,101,108,109,117,115,101,
+111,98,97,115,101,115,112,111,99,111,115,109,105,116,97,100,99,105,101,108,111,
+99,104,105,99,111,109,105,101,100,111,103,97,110,97,114,115,97,110,116,111,101,
+116,97,112,97,100,101,98,101,115,112,108,97,121,97,114,101,100,101,115,115,105,
+101,116,101,99,111,114,116,101,99,111,114,101,97,100,117,100,97,115,100,101,115,
+101,111,118,105,101,106,111,100,101,115,101,97,97,103,117,97,115,38,113,117,111,
+116,59,100,111,109,97,105,110,99,111,109,109,111,110,115,116,97,116,117,115,101,
+118,101,110,116,115,109,97,115,116,101,114,115,121,115,116,101,109,97,99,116,105
+,111,110,98,97,110,110,101,114,114,101,109,111,118,101,115,99,114,111,108,108,
+117,112,100,97,116,101,103,108,111,98,97,108,109,101,100,105,117,109,102,105,108
+,116,101,114,110,117,109,98,101,114,99,104,97,110,103,101,114,101,115,117,108,
+116,112,117,98,108,105,99,115,99,114,101,101,110,99,104,111,111,115,101,110,111,
+114,109,97,108,116,114,97,118,101,108,105,115,115,117,101,115,115,111,117,114,99
+,101,116,97,114,103,101,116,115,112,114,105,110,103,109,111,100,117,108,101,109,
+111,98,105,108,101,115,119,105,116,99,104,112,104,111,116,111,115,98,111,114,100
+,101,114,114,101,103,105,111,110,105,116,115,101,108,102,115,111,99,105,97,108,
+97,99,116,105,118,101,99,111,108,117,109,110,114,101,99,111,114,100,102,111,108,
+108,111,119,116,105,116,108,101,62,101,105,116,104,101,114,108,101,110,103,116,
+104,102,97,109,105,108,121,102,114,105,101,110,100,108,97,121,111,117,116,97,117
+,116,104,111,114,99,114,101,97,116,101,114,101,118,105,101,119,115,117,109,109,
+101,114,115,101,114,118,101,114,112,108,97,121,101,100,112,108,97,121,101,114,
+101,120,112,97,110,100,112,111,108,105,99,121,102,111,114,109,97,116,100,111,117
+,98,108,101,112,111,105,110,116,115,115,101,114,105,101,115,112,101,114,115,111,
+110,108,105,118,105,110,103,100,101,115,105,103,110,109,111,110,116,104,115,102,
+111,114,99,101,115,117,110,105,113,117,101,119,101,105,103,104,116,112,101,111,
+112,108,101,101,110,101,114,103,121,110,97,116,117,114,101,115,101,97,114,99,104
+,102,105,103,117,114,101,104,97,118,105,110,103,99,117,115,116,111,109,111,102,
+102,115,101,116,108,101,116,116,101,114,119,105,110,100,111,119,115,117,98,109,
+105,116,114,101,110,100,101,114,103,114,111,117,112,115,117,112,108,111,97,100,
+104,101,97,108,116,104,109,101,116,104,111,100,118,105,100,101,111,115,115,99,
+104,111,111,108,102,117,116,117,114,101,115,104,97,100,111,119,100,101,98,97,116
+,101,118,97,108,117,101,115,79,98,106,101,99,116,111,116,104,101,114,115,114,105
+,103,104,116,115,108,101,97,103,117,101,99,104,114,111,109,101,115,105,109,112,
+108,101,110,111,116,105,99,101,115,104,97,114,101,100,101,110,100,105,110,103,
+115,101,97,115,111,110,114,101,112,111,114,116,111,110,108,105,110,101,115,113,
+117,97,114,101,98,117,116,116,111,110,105,109,97,103,101,115,101,110,97,98,108,
+101,109,111,118,105,110,103,108,97,116,101,115,116,119,105,110,116,101,114,70,
+114,97,110,99,101,112,101,114,105,111,100,115,116,114,111,110,103,114,101,112,
+101,97,116,76,111,110,100,111,110,100,101,116,97,105,108,102,111,114,109,101,100
+,100,101,109,97,110,100,115,101,99,117,114,101,112,97,115,115,101,100,116,111,
+103,103,108,101,112,108,97,99,101,115,100,101,118,105,99,101,115,116,97,116,105,
+99,99,105,116,105,101,115,115,116,114,101,97,109,121,101,108,108,111,119,97,116,
+116,97,99,107,115,116,114,101,101,116,102,108,105,103,104,116,104,105,100,100,
+101,110,105,110,102,111,34,62,111,112,101,110,101,100,117,115,101,102,117,108,
+118,97,108,108,101,121,99,97,117,115,101,115,108,101,97,100,101,114,115,101,99,
+114,101,116,115,101,99,111,110,100,100,97,109,97,103,101,115,112,111,114,116,115
+,101,120,99,101,112,116,114,97,116,105,110,103,115,105,103,110,101,100,116,104,
+105,110,103,115,101,102,102,101,99,116,102,105,101,108,100,115,115,116,97,116,
+101,115,111,102,102,105,99,101,118,105,115,117,97,108,101,100,105,116,111,114,
+118,111,108,117,109,101,82,101,112,111,114,116,109,117,115,101,117,109,109,111,
+118,105,101,115,112,97,114,101,110,116,97,99,99,101,115,115,109,111,115,116,108,
+121,109,111,116,104,101,114,34,32,105,100,61,34,109,97,114,107,101,116,103,114,
+111,117,110,100,99,104,97,110,99,101,115,117,114,118,101,121,98,101,102,111,114,
+101,115,121,109,98,111,108,109,111,109,101,110,116,115,112,101,101,99,104,109,
+111,116,105,111,110,105,110,115,105,100,101,109,97,116,116,101,114,67,101,110,
+116,101,114,111,98,106,101,99,116,101,120,105,115,116,115,109,105,100,100,108,
+101,69,117,114,111,112,101,103,114,111,119,116,104,108,101,103,97,99,121,109,97,
+110,110,101,114,101,110,111,117,103,104,99,97,114,101,101,114,97,110,115,119,101
+,114,111,114,105,103,105,110,112,111,114,116,97,108,99,108,105,101,110,116,115,
+101,108,101,99,116,114,97,110,100,111,109,99,108,111,115,101,100,116,111,112,105
+,99,115,99,111,109,105,110,103,102,97,116,104,101,114,111,112,116,105,111,110,
+115,105,109,112,108,121,114,97,105,115,101,100,101,115,99,97,112,101,99,104,111,
+115,101,110,99,104,117,114,99,104,100,101,102,105,110,101,114,101,97,115,111,110
+,99,111,114,110,101,114,111,117,116,112,117,116,109,101,109,111,114,121,105,102,
+114,97,109,101,112,111,108,105,99,101,109,111,100,101,108,115,78,117,109,98,101,
+114,100,117,114,105,110,103,111,102,102,101,114,115,115,116,121,108,101,115,107,
+105,108,108,101,100,108,105,115,116,101,100,99,97,108,108,101,100,115,105,108,
+118,101,114,109,97,114,103,105,110,100,101,108,101,116,101,98,101,116,116,101,
+114,98,114,111,119,115,101,108,105,109,105,116,115,71,108,111,98,97,108,115,105,
+110,103,108,101,119,105,100,103,101,116,99,101,110,116,101,114,98,117,100,103,
+101,116,110,111,119,114,97,112,99,114,101,100,105,116,99,108,97,105,109,115,101,
+110,103,105,110,101,115,97,102,101,116,121,99,104,111,105,99,101,115,112,105,114
+,105,116,45,115,116,121,108,101,115,112,114,101,97,100,109,97,107,105,110,103,
+110,101,101,100,101,100,114,117,115,115,105,97,112,108,101,97,115,101,101,120,
+116,101,110,116,83,99,114,105,112,116,98,114,111,107,101,110,97,108,108,111,119,
+115,99,104,97,114,103,101,100,105,118,105,100,101,102,97,99,116,111,114,109,101,
+109,98,101,114,45,98,97,115,101,100,116,104,101,111,114,121,99,111,110,102,105,
+103,97,114,111,117,110,100,119,111,114,107,101,100,104,101,108,112,101,100,67,
+104,117,114,99,104,105,109,112,97,99,116,115,104,111,117,108,100,97,108,119,97,
+121,115,108,111,103,111,34,32,98,111,116,116,111,109,108,105,115,116,34,62,41,
+123,118,97,114,32,112,114,101,102,105,120,111,114,97,110,103,101,72,101,97,100,
+101,114,46,112,117,115,104,40,99,111,117,112,108,101,103,97,114,100,101,110,98,
+114,105,100,103,101,108,97,117,110,99,104,82,101,118,105,101,119,116,97,107,105,
+110,103,118,105,115,105,111,110,108,105,116,116,108,101,100,97,116,105,110,103,
+66,117,116,116,111,110,98,101,97,117,116,121,116,104,101,109,101,115,102,111,114
+,103,111,116,83,101,97,114,99,104,97,110,99,104,111,114,97,108,109,111,115,116,
+108,111,97,100,101,100,67,104,97,110,103,101,114,101,116,117,114,110,115,116,114
+,105,110,103,114,101,108,111,97,100,77,111,98,105,108,101,105,110,99,111,109,101
+,115,117,112,112,108,121,83,111,117,114,99,101,111,114,100,101,114,115,118,105,
+101,119,101,100,38,110,98,115,112,59,99,111,117,114,115,101,65,98,111,117,116,32
+,105,115,108,97,110,100,60,104,116,109,108,32,99,111,111,107,105,101,110,97,109,
+101,61,34,97,109,97,122,111,110,109,111,100,101,114,110,97,100,118,105,99,101,
+105,110,60,47,97,62,58,32,84,104,101,32,100,105,97,108,111,103,104,111,117,115,
+101,115,66,69,71,73,78,32,77,101,120,105,99,111,115,116,97,114,116,115,99,101,
+110,116,114,101,104,101,105,103,104,116,97,100,100,105,110,103,73,115,108,97,110
+,100,97,115,115,101,116,115,69,109,112,105,114,101,83,99,104,111,111,108,101,102
+,102,111,114,116,100,105,114,101,99,116,110,101,97,114,108,121,109,97,110,117,97
+,108,83,101,108,101,99,116,46,10,10,79,110,101,106,111,105,110,101,100,109,101,
+110,117,34,62,80,104,105,108,105,112,97,119,97,114,100,115,104,97,110,100,108,
+101,105,109,112,111,114,116,79,102,102,105,99,101,114,101,103,97,114,100,115,107
+,105,108,108,115,110,97,116,105,111,110,83,112,111,114,116,115,100,101,103,114,
+101,101,119,101,101,107,108,121,32,40,101,46,103,46,98,101,104,105,110,100,100,
+111,99,116,111,114,108,111,103,103,101,100,117,110,105,116,101,100,60,47,98,62,
+60,47,98,101,103,105,110,115,112,108,97,110,116,115,97,115,115,105,115,116,97,
+114,116,105,115,116,105,115,115,117,101,100,51,48,48,112,120,124,99,97,110,97,
+100,97,97,103,101,110,99,121,115,99,104,101,109,101,114,101,109,97,105,110,66,
+114,97,122,105,108,115,97,109,112,108,101,108,111,103,111,34,62,98,101,121,111,
+110,100,45,115,99,97,108,101,97,99,99,101,112,116,115,101,114,118,101,100,109,97
+,114,105,110,101,70,111,111,116,101,114,99,97,109,101,114,97,60,47,104,49,62,10,
+95,102,111,114,109,34,108,101,97,118,101,115,115,116,114,101,115,115,34,32,47,62
+,13,10,46,103,105,102,34,32,111,110,108,111,97,100,108,111,97,100,101,114,79,120
+,102,111,114,100,115,105,115,116,101,114,115,117,114,118,105,118,108,105,115,116
+,101,110,102,101,109,97,108,101,68,101,115,105,103,110,115,105,122,101,61,34,97,
+112,112,101,97,108,116,101,120,116,34,62,108,101,118,101,108,115,116,104,97,110,
+107,115,104,105,103,104,101,114,102,111,114,99,101,100,97,110,105,109,97,108,97,
+110,121,111,110,101,65,102,114,105,99,97,97,103,114,101,101,100,114,101,99,101,
+110,116,80,101,111,112,108,101,60,98,114,32,47,62,119,111,110,100,101,114,112,
+114,105,99,101,115,116,117,114,110,101,100,124,124,32,123,125,59,109,97,105,110,
+34,62,105,110,108,105,110,101,115,117,110,100,97,121,119,114,97,112,34,62,102,97
+,105,108,101,100,99,101,110,115,117,115,109,105,110,117,116,101,98,101,97,99,111
+,110,113,117,111,116,101,115,49,53,48,112,120,124,101,115,116,97,116,101,114,101
+,109,111,116,101,101,109,97,105,108,34,108,105,110,107,101,100,114,105,103,104,
+116,59,115,105,103,110,97,108,102,111,114,109,97,108,49,46,104,116,109,108,115,
+105,103,110,117,112,112,114,105,110,99,101,102,108,111,97,116,58,46,112,110,103,
+34,32,102,111,114,117,109,46,65,99,99,101,115,115,112,97,112,101,114,115,115,111
+,117,110,100,115,101,120,116,101,110,100,72,101,105,103,104,116,115,108,105,100,
+101,114,85,84,70,45,56,34,38,97,109,112,59,32,66,101,102,111,114,101,46,32,87,
+105,116,104,115,116,117,100,105,111,111,119,110,101,114,115,109,97,110,97,103,
+101,112,114,111,102,105,116,106,81,117,101,114,121,97,110,110,117,97,108,112,97,
+114,97,109,115,98,111,117,103,104,116,102,97,109,111,117,115,103,111,111,103,108
+,101,108,111,110,103,101,114,105,43,43,41,32,123,105,115,114,97,101,108,115,97,
+121,105,110,103,100,101,99,105,100,101,104,111,109,101,34,62,104,101,97,100,101,
+114,101,110,115,117,114,101,98,114,97,110,99,104,112,105,101,99,101,115,98,108,
+111,99,107,59,115,116,97,116,101,100,116,111,112,34,62,60,114,97,99,105,110,103,
+114,101,115,105,122,101,45,45,38,103,116,59,112,97,99,105,116,121,115,101,120,
+117,97,108,98,117,114,101,97,117,46,106,112,103,34,32,49,48,44,48,48,48,111,98,
+116,97,105,110,116,105,116,108,101,115,97,109,111,117,110,116,44,32,73,110,99,46
+,99,111,109,101,100,121,109,101,110,117,34,32,108,121,114,105,99,115,116,111,100
+,97,121,46,105,110,100,101,101,100,99,111,117,110,116,121,95,108,111,103,111,46,
+70,97,109,105,108,121,108,111,111,107,101,100,77,97,114,107,101,116,108,115,101,
+32,105,102,80,108,97,121,101,114,116,117,114,107,101,121,41,59,118,97,114,32,102
+,111,114,101,115,116,103,105,118,105,110,103,101,114,114,111,114,115,68,111,109,
+97,105,110,125,101,108,115,101,123,105,110,115,101,114,116,66,108,111,103,60,47,
+102,111,111,116,101,114,108,111,103,105,110,46,102,97,115,116,101,114,97,103,101
+,110,116,115,60,98,111,100,121,32,49,48,112,120,32,48,112,114,97,103,109,97,102,
+114,105,100,97,121,106,117,110,105,111,114,100,111,108,108,97,114,112,108,97,99,
+101,100,99,111,118,101,114,115,112,108,117,103,105,110,53,44,48,48,48,32,112,97,
+103,101,34,62,98,111,115,116,111,110,46,116,101,115,116,40,97,118,97,116,97,114,
+116,101,115,116,101,100,95,99,111,117,110,116,102,111,114,117,109,115,115,99,104
+,101,109,97,105,110,100,101,120,44,102,105,108,108,101,100,115,104,97,114,101,
+115,114,101,97,100,101,114,97,108,101,114,116,40,97,112,112,101,97,114,83,117,98
+,109,105,116,108,105,110,101,34,62,98,111,100,121,34,62,10,42,32,84,104,101,84,
+104,111,117,103,104,115,101,101,105,110,103,106,101,114,115,101,121,78,101,119,
+115,60,47,118,101,114,105,102,121,101,120,112,101,114,116,105,110,106,117,114,
+121,119,105,100,116,104,61,67,111,111,107,105,101,83,84,65,82,84,32,97,99,114,
+111,115,115,95,105,109,97,103,101,116,104,114,101,97,100,110,97,116,105,118,101,
+112,111,99,107,101,116,98,111,120,34,62,10,83,121,115,116,101,109,32,68,97,118,
+105,100,99,97,110,99,101,114,116,97,98,108,101,115,112,114,111,118,101,100,65,
+112,114,105,108,32,114,101,97,108,108,121,100,114,105,118,101,114,105,116,101,
+109,34,62,109,111,114,101,34,62,98,111,97,114,100,115,99,111,108,111,114,115,99,
+97,109,112,117,115,102,105,114,115,116,32,124,124,32,91,93,59,109,101,100,105,97
+,46,103,117,105,116,97,114,102,105,110,105,115,104,119,105,100,116,104,58,115,
+104,111,119,101,100,79,116,104,101,114,32,46,112,104,112,34,32,97,115,115,117,
+109,101,108,97,121,101,114,115,119,105,108,115,111,110,115,116,111,114,101,115,
+114,101,108,105,101,102,115,119,101,100,101,110,67,117,115,116,111,109,101,97,
+115,105,108,121,32,121,111,117,114,32,83,116,114,105,110,103,10,10,87,104,105,
+108,116,97,121,108,111,114,99,108,101,97,114,58,114,101,115,111,114,116,102,114,
+101,110,99,104,116,104,111,117,103,104,34,41,32,43,32,34,60,98,111,100,121,62,98
+,117,121,105,110,103,98,114,97,110,100,115,77,101,109,98,101,114,110,97,109,101,
+34,62,111,112,112,105,110,103,115,101,99,116,111,114,53,112,120,59,34,62,118,115
+,112,97,99,101,112,111,115,116,101,114,109,97,106,111,114,32,99,111,102,102,101,
+101,109,97,114,116,105,110,109,97,116,117,114,101,104,97,112,112,101,110,60,47,
+110,97,118,62,107,97,110,115,97,115,108,105,110,107,34,62,73,109,97,103,101,115,
+61,102,97,108,115,101,119,104,105,108,101,32,104,115,112,97,99,101,48,38,97,109,
+112,59,32,10,10,73,110,32,32,112,111,119,101,114,80,111,108,115,107,105,45,99,
+111,108,111,114,106,111,114,100,97,110,66,111,116,116,111,109,83,116,97,114,116,
+32,45,99,111,117,110,116,50,46,104,116,109,108,110,101,119,115,34,62,48,49,46,
+106,112,103,79,110,108,105,110,101,45,114,105,103,104,116,109,105,108,108,101,
+114,115,101,110,105,111,114,73,83,66,78,32,48,48,44,48,48,48,32,103,117,105,100,
+101,115,118,97,108,117,101,41,101,99,116,105,111,110,114,101,112,97,105,114,46,
+120,109,108,34,32,32,114,105,103,104,116,115,46,104,116,109,108,45,98,108,111,99
+,107,114,101,103,69,120,112,58,104,111,118,101,114,119,105,116,104,105,110,118,
+105,114,103,105,110,112,104,111,110,101,115,60,47,116,114,62,13,117,115,105,110,
+103,32,10,9,118,97,114,32,62,39,41,59,10,9,60,47,116,100,62,10,60,47,116,114,62,
+10,98,97,104,97,115,97,98,114,97,115,105,108,103,97,108,101,103,111,109,97,103,
+121,97,114,112,111,108,115,107,105,115,114,112,115,107,105,216,177,216,175,217,
+136,228,184,173,230,150,135,231,174,128,228,189,147,231,185,129,233,171,148,228,
+191,161,230,129,175,228,184,173,229,155,189,230,136,145,228,187,172,228,184,128,
+228,184,170,229,133,172,229,143,184,231,174,161,231,144,134,232,174,186,229,157,
+155,229,143,175,228,187,165,230,156,141,229,138,161,230,151,182,233,151,180,228,
+184,170,228,186,186,228,186,167,229,147,129,232,135,170,229,183,177,228,188,129,
+228,184,154,230,159,165,231,156,139,229,183,165,228,189,156,232,129,148,231,179,
+187,230,178,161,230,156,137,231,189,145,231,171,153,230,137,128,230,156,137,232,
+175,132,232,174,186,228,184,173,229,191,131,230,150,135,231,171,160,231,148,168,
+230,136,183,233,166,150,233,161,181,228,189,156,232,128,133,230,138,128,230,156,
+175,233,151,174,233,162,152,231,155,184,229,133,179,228,184,139,232,189,189,230,
+144,156,231,180,162,228,189,191,231,148,168,232,189,175,228,187,182,229,156,168,
+231,186,191,228,184,187,233,162,152,232,181,132,230,150,153,232,167,134,233,162,
+145,229,155,158,229,164,141,230,179,168,229,134,140,231,189,145,231,187,156,230,
+148,182,232,151,143,229,134,133,229,174,185,230,142,168,232,141,144,229,184,130,
+229,156,186,230,182,136,230,129,175,231,169,186,233,151,180,229,143,145,229,184,
+131,228,187,128,228,185,136,229,165,189,229,143,139,231,148,159,230,180,187,229,
+155,190,231,137,135,229,143,145,229,177,149,229,166,130,230,158,156,230,137,139,
+230,156,186,230,150,176,233,151,187,230,156,128,230,150,176,230,150,185,229,188,
+143,229,140,151,228,186,172,230,143,144,228,190,155,229,133,179,228,186,142,230,
+155,180,229,164,154,232,191,153,228,184,170,231,179,187,231,187,159,231,159,165,
+233,129,147,230,184,184,230,136,143,229,185,191,229,145,138,229,133,182,228,187,
+150,229,143,145,232,161,168,229,174,137,229,133,168,231,172,172,228,184,128,228,
+188,154,229,145,152,232,191,155,232,161,140,231,130,185,229,135,187,231,137,136,
+230,157,131,231,148,181,229,173,144,228,184,150,231,149,140,232,174,190,232,174,
+161,229,133,141,232,180,185,230,149,153,232,130,178,229,138,160,229,133,165,230,
+180,187,229,138,168,228,187,150,228,187,172,229,149,134,229,147,129,229,141,154,
+229,174,162,231,142,176,229,156,168,228,184,138,230,181,183,229,166,130,228,189,
+149,229,183,178,231,187,143,231,149,153,232,168,128,232,175,166,231,187,134,231,
+164,190,229,140,186,231,153,187,229,189,149,230,156,172,231,171,153,233,156,128,
+232,166,129,228,187,183,230,160,188,230,148,175,230,140,129,229,155,189,233,153,
+133,233,147,190,230,142,165,229,155,189,229,174,182,229,187,186,232,174,190,230,
+156,139,229,143,139,233,152,133,232,175,187,230,179,149,229,190,139,228,189,141,
+231,189,174,231,187,143,230,181,142,233,128,137,230,139,169,232,191,153,230,160,
+183,229,189,147,229,137,141,229,136,134,231,177,187,230,142,146,232,161,140,229,
+155,160,228,184,186,228,186,164,230,152,147,230,156,128,229,144,142,233,159,179,
+228,185,144,228,184,141,232,131,189,233,128,154,232,191,135,232,161,140,228,184,
+154,231,167,145,230,138,128,229,143,175,232,131,189,232,174,190,229,164,135,229,
+144,136,228,189,156,229,164,167,229,174,182,231,164,190,228,188,154,231,160,148,
+231,169,182,228,184,147,228,184,154,229,133,168,233,131,168,233,161,185,231,155,
+174,232,191,153,233,135,140,232,191,152,230,152,175,229,188,128,229,167,139,230,
+131,133,229,134,181,231,148,181,232,132,145,230,150,135,228,187,182,229,147,129,
+231,137,140,229,184,174,229,138,169,230,150,135,229,140,150,232,181,132,230,186,
+144,229,164,167,229,173,166,229,173,166,228,185,160,229,156,176,229,157,128,230,
+181,143,232,167,136,230,138,149,232,181,132,229,183,165,231,168,139,232,166,129,
+230,177,130,230,128,142,228,185,136,230,151,182,229,128,153,229,138,159,232,131,
+189,228,184,187,232,166,129,231,155,174,229,137,141,232,181,132,232,174,175,229,
+159,142,229,184,130,230,150,185,230,179,149,231,148,181,229,189,177,230,139,155,
+232,129,152,229,163,176,230,152,142,228,187,187,228,189,149,229,129,165,229,186,
+183,230,149,176,230,141,174,231,190,142,229,155,189,230,177,189,232,189,166,228,
+187,139,231,187,141,228,189,134,230,152,175,228,186,164,230,181,129,231,148,159,
+228,186,167,230,137,128,228,187,165,231,148,181,232,175,157,230,152,190,231,164,
+186,228,184,128,228,186,155,229,141,149,228,189,141,228,186,186,229,145,152,229,
+136,134,230,158,144,229,156,176,229,155,190,230,151,133,230,184,184,229,183,165,
+229,133,183,229,173,166,231,148,159,231,179,187,229,136,151,231,189,145,229,143,
+139,229,184,150,229,173,144,229,175,134,231,160,129,233,162,145,233,129,147,230,
+142,167,229,136,182,229,156,176,229,140,186,229,159,186,230,156,172,229,133,168,
+229,155,189,231,189,145,228,184,138,233,135,141,232,166,129,231,172,172,228,186,
+140,229,150,156,230,172,162,232,191,155,229,133,165,229,143,139,230,131,133,232,
+191,153,228,186,155,232,128,131,232,175,149,229,143,145,231,142,176,229,159,185,
+232,174,173,228,187,165,228,184,138,230,148,191,229,186,156,230,136,144,228,184,
+186,231,142,175,229,162,131,233,166,153,230,184,175,229,144,140,230,151,182,229,
+168,177,228,185,144,229,143,145,233,128,129,228,184,128,229,174,154,229,188,128,
+229,143,145,228,189,156,229,147,129,230,160,135,229,135,134,230,172,162,232,191,
+142,232,167,163,229,134,179,229,156,176,230,150,185,228,184,128,228,184,139,228,
+187,165,229,143,138,232,180,163,228,187,187,230,136,150,232,128,133,229,174,162,
+230,136,183,228,187,163,232,161,168,231,167,175,229,136,134,229,165,179,228,186,
+186,230,149,176,231,160,129,233,148,128,229,148,174,229,135,186,231,142,176,231,
+166,187,231,186,191,229,186,148,231,148,168,229,136,151,232,161,168,228,184,141,
+229,144,140,231,188,150,232,190,145,231,187,159,232,174,161,230,159,165,232,175,
+162,228,184,141,232,166,129,230,156,137,229,133,179,230,156,186,230,158,132,229,
+190,136,229,164,154,230,146,173,230,148,190,231,187,132,231,187,135,230,148,191,
+231,173,150,231,155,180,230,142,165,232,131,189,229,138,155,230,157,165,230,186,
+144,230,153,130,233,150,147,231,156,139,229,136,176,231,131,173,233,151,168,229,
+133,179,233,148,174,228,184,147,229,140,186,233,157,158,229,184,184,232,139,177,
+232,175,173,231,153,190,229,186,166,229,184,140,230,156,155,231,190,142,229,165,
+179,230,175,148,232,190,131,231,159,165,232,175,134,232,167,132,229,174,154,229,
+187,186,232,174,174,233,131,168,233,151,168,230,132,143,232,167,129,231,178,190,
+229,189,169,230,151,165,230,156,172,230,143,144,233,171,152,229,143,145,232,168,
+128,230,150,185,233,157,162,229,159,186,233,135,145,229,164,132,231,144,134,230,
+157,131,233,153,144,229,189,177,231,137,135,233,147,182,232,161,140,232,191,152,
+230,156,137,229,136,134,228,186,171,231,137,169,229,147,129,231,187,143,232,144,
+165,230,183,187,229,138,160,228,184,147,229,174,182,232,191,153,231,167,141,232,
+175,157,233,162,152,232,181,183,230,157,165,228,184,154,229,138,161,229,133,172,
+229,145,138,232,174,176,229,189,149,231,174,128,228,187,139,232,180,168,233,135,
+143,231,148,183,228,186,186,229,189,177,229,147,141,229,188,149,231,148,168,230,
+138,165,229,145,138,233,131,168,229,136,134,229,191,171,233,128,159,229,146,168,
+232,175,162,230,151,182,229,176,154,230,179,168,230,132,143,231,148,179,232,175,
+183,229,173,166,230,160,161,229,186,148,232,175,165,229,142,134,229,143,178,229,
+143,170,230,152,175,232,191,148,229,155,158,232,180,173,228,185,176,229,144,141,
+231,167,176,228,184,186,228,186,134,230,136,144,229,138,159,232,175,180,230,152,
+142,228,190,155,229,186,148,229,173,169,229,173,144,228,184,147,233,162,152,231,
+168,139,229,186,143,228,184,128,232,136,172,230,156,131,229,147,161,229,143,170,
+230,156,137,229,133,182,229,174,131,228,191,157,230,138,164,232,128,140,228,184,
+148,228,187,138,229,164,169,231,170,151,229,143,163,229,138,168,230,128,129,231,
+138,182,230,128,129,231,137,185,229,136,171,232,174,164,228,184,186,229,191,133,
+233,161,187,230,155,180,230,150,176,229,176,143,232,175,180,230,136,145,229,128,
+145,228,189,156,228,184,186,229,170,146,228,189,147,229,140,133,230,139,172,233,
+130,163,228,185,136,228,184,128,230,160,183,229,155,189,229,134,133,230,152,175,
+229,144,166,230,160,185,230,141,174,231,148,181,232,167,134,229,173,166,233,153,
+162,229,133,183,230,156,137,232,191,135,231,168,139,231,148,177,228,186,142,228,
+186,186,230,137,141,229,135,186,230,157,165,228,184,141,232,191,135,230,173,163,
+229,156,168,230,152,142,230,152,159,230,149,133,228,186,139,229,133,179,231,179,
+187,230,160,135,233,162,152,229,149,134,229,138,161,232,190,147,229,133,165,228,
+184,128,231,155,180,229,159,186,231,161,128,230,149,153,229,173,166,228,186,134,
+232,167,163,229,187,186,231,173,145,231,187,147,230,158,156,229,133,168,231,144,
+131,233,128,154,231,159,165,232,174,161,229,136,146,229,175,185,228,186,142,232,
+137,186,230,156,175,231,155,184,229,134,140,229,143,145,231,148,159,231,156,159,
+231,154,132,229,187,186,231,171,139,231,173,137,231,186,167,231,177,187,229,158,
+139,231,187,143,233,170,140,229,174,158,231,142,176,229,136,182,228,189,156,230,
+157,165,232,135,170,230,160,135,231,173,190,228,187,165,228,184,139,229,142,159,
+229,136,155,230,151,160,230,179,149,229,133,182,228,184,173,229,128,139,228,186,
+186,228,184,128,229,136,135,230,140,135,229,141,151,229,133,179,233,151,173,233,
+155,134,229,155,162,231,172,172,228,184,137,229,133,179,230,179,168,229,155,160,
+230,173,164,231,133,167,231,137,135,230,183,177,229,156,179,229,149,134,228,184,
+154,229,185,191,229,183,158,230,151,165,230,156,159,233,171,152,231,186,167,230,
+156,128,232,191,145,231,187,188,229,144,136,232,161,168,231,164,186,228,184,147,
+232,190,145,232,161,140,228,184,186,228,186,164,233,128,154,232,175,132,228,187,
+183,232,167,137,229,190,151,231,178,190,229,141,142,229,174,182,229,186,173,229,
+174,140,230,136,144,230,132,159,232,167,137,229,174,137,232,163,133,229,190,151,
+229,136,176,233,130,174,228,187,182,229,136,182,229,186,166,233,163,159,229,147,
+129,232,153,189,231,132,182,232,189,172,232,189,189,230,138,165,228,187,183,232,
+174,176,232,128,133,230,150,185,230,161,136,232,161,140,230,148,191,228,186,186,
+230,176,145,231,148,168,229,147,129,228,184,156,232,165,191,230,143,144,229,135,
+186,233,133,146,229,186,151,231,132,182,229,144,142,228,187,152,230,172,190,231,
+131,173,231,130,185,228,187,165,229,137,141,229,174,140,229,133,168,229,143,145,
+229,184,150,232,174,190,231,189,174,233,162,134,229,175,188,229,183,165,228,184,
+154,229,140,187,233,153,162,231,156,139,231,156,139,231,187,143,229,133,184,229,
+142,159,229,155,160,229,185,179,229,143,176,229,144,132,231,167,141,229,162,158,
+229,138,160,230,157,144,230,150,153,230,150,176,229,162,158,228,185,139,229,144,
+142,232,129,140,228,184,154,230,149,136,230,158,156,228,187,138,229,185,180,232,
+174,186,230,150,135,230,136,145,229,155,189,229,145,138,232,175,137,231,137,136,
+228,184,187,228,191,174,230,148,185,229,143,130,228,184,142,230,137,147,229,141,
+176,229,191,171,228,185,144,230,156,186,230,162,176,232,167,130,231,130,185,229,
+173,152,229,156,168,231,178,190,231,165,158,232,142,183,229,190,151,229,136,169,
+231,148,168,231,187,167,231,187,173,228,189,160,228,187,172,232,191,153,228,185,
+136,230,168,161,229,188,143,232,175,173,232,168,128,232,131,189,229,164,159,233,
+155,133,232,153,142,230,147,141,228,189,156,233,163,142,230,160,188,228,184,128,
+232,181,183,231,167,145,229,173,166,228,189,147,232,130,178,231,159,173,228,191,
+161,230,157,161,228,187,182,230,178,187,231,150,151,232,191,144,229,138,168,228,
+186,167,228,184,154,228,188,154,232,174,174,229,175,188,232,136,170,229,133,136,
+231,148,159,232,129,148,231,155,159,229,143,175,230,152,175,229,149,143,233,161,
+140,231,187,147,230,158,132,228,189,156,231,148,168,232,176,131,230,159,165,232,
+179,135,230,150,153,232,135,170,229,138,168,232,180,159,232,180,163,229,134,156,
+228,184,154,232,174,191,233,151,174,229,174,158,230,150,189,230,142,165,229,143,
+151,232,174,168,232,174,186,233,130,163,228,184,170,229,143,141,233,166,136,229,
+138,160,229,188,186,229,165,179,230,128,167,232,140,131,229,155,180,230,156,141,
+229,139,153,228,188,145,233,151,178,228,187,138,230,151,165,229,174,162,230,156,
+141,232,167,128,231,156,139,229,143,130,229,138,160,231,154,132,232,175,157,228,
+184,128,231,130,185,228,191,157,232,175,129,229,155,190,228,185,166,230,156,137,
+230,149,136,230,181,139,232,175,149,231,167,187,229,138,168,230,137,141,232,131,
+189,229,134,179,229,174,154,232,130,161,231,165,168,228,184,141,230,150,173,233,
+156,128,230,177,130,228,184,141,229,190,151,229,138,158,230,179,149,228,185,139,
+233,151,180,233,135,135,231,148,168,232,144,165,233,148,128,230,138,149,232,175,
+137,231,155,174,230,160,135,231,136,177,230,131,133,230,145,132,229,189,177,230,
+156,137,228,186,155,232,164,135,232,163,189,230,150,135,229,173,166,230,156,186,
+228,188,154,230,149,176,229,173,151,232,163,133,228,191,174,232,180,173,231,137,
+169,229,134,156,230,157,145,229,133,168,233,157,162,231,178,190,229,147,129,229,
+133,182,229,174,158,228,186,139,230,131,133,230,176,180,229,185,179,230,143,144,
+231,164,186,228,184,138,229,184,130,232,176,162,232,176,162,230,153,174,233,128,
+154,230,149,153,229,184,136,228,184,138,228,188,160,231,177,187,229,136,171,230,
+173,140,230,155,178,230,139,165,230,156,137,229,136,155,230,150,176,233,133,141,
+228,187,182,229,143,170,232,166,129,230,151,182,228,187,163,232,179,135,232,168,
+138,232,190,190,229,136,176,228,186,186,231,148,159,232,174,162,233,152,133,232,
+128,129,229,184,136,229,177,149,231,164,186,229,191,131,231,144,134,232,180,180,
+229,173,144,231,182,178,231,171,153,228,184,187,233,161,140,232,135,170,231,132,
+182,231,186,167,229,136,171,231,174,128,229,141,149,230,148,185,233,157,169,233,
+130,163,228,186,155,230,157,165,232,175,180,230,137,147,229,188,128,228,187,163,
+231,160,129,229,136,160,233,153,164,232,175,129,229,136,184,232,138,130,231,155,
+174,233,135,141,231,130,185,230,172,161,230,149,184,229,164,154,229,176,145,232,
+167,132,229,136,146,232,181,132,233,135,145,230,137,190,229,136,176,228,187,165,
+229,144,142,229,164,167,229,133,168,228,184,187,233,161,181,230,156,128,228,189,
+179,229,155,158,231,173,148,229,164,169,228,184,139,228,191,157,233,154,156,231,
+142,176,228,187,163,230,163,128,230,159,165,230,138,149,231,165,168,229,176,143,
+230,151,182,230,178,146,230,156,137,230,173,163,229,184,184,231,148,154,232,135,
+179,228,187,163,231,144,134,231,155,174,229,189,149,229,133,172,229,188,128,229,
+164,141,229,136,182,233,135,145,232,158,141,229,185,184,231,166,143,231,137,136,
+230,156,172,229,189,162,230,136,144,229,135,134,229,164,135,232,161,140,230,131,
+133,229,155,158,229,136,176,230,128,157,230,131,179,230,128,142,230,160,183,229,
+141,143,232,174,174,232,174,164,232,175,129,230,156,128,229,165,189,228,186,167,
+231,148,159,230,140,137,231,133,167,230,156,141,232,163,133,229,185,191,228,184,
+156,229,138,168,230,188,171,233,135,135,232,180,173,230,150,176,230,137,139,231,
+187,132,229,155,190,233,157,162,230,157,191,229,143,130,232,128,131,230,148,191,
+230,178,187,229,174,185,230,152,147,229,164,169,229,156,176,229,138,170,229,138,
+155,228,186,186,228,187,172,229,141,135,231,186,167,233,128,159,229,186,166,228,
+186,186,231,137,169,232,176,131,230,149,180,230,181,129,232,161,140,233,128,160,
+230,136,144,230,150,135,229,173,151,233,159,169,229,155,189,232,180,184,230,152,
+147,229,188,128,229,177,149,231,155,184,233,151,156,232,161,168,231,142,176,229,
+189,177,232,167,134,229,166,130,230,173,164,231,190,142,229,174,185,229,164,167,
+229,176,143,230,138,165,233,129,147,230,157,161,230,172,190,229,191,131,230,131,
+133,232,174,184,229,164,154,230,179,149,232,167,132,229,174,182,229,177,133,228,
+185,166,229,186,151,232,191,158,230,142,165,231,171,139,229,141,179,228,184,190,
+230,138,165,230,138,128,229,183,167,229,165,165,232,191,144,231,153,187,229,133,
+165,228,187,165,230,157,165,231,144,134,232,174,186,228,186,139,228,187,182,232,
+135,170,231,148,177,228,184,173,229,141,142,229,138,158,229,133,172,229,166,136,
+229,166,136,231,156,159,230,173,163,228,184,141,233,148,153,229,133,168,230,150,
+135,229,144,136,229,144,140,228,187,183,229,128,188,229,136,171,228,186,186,231,
+155,145,231,157,163,229,133,183,228,189,147,228,184,150,231,186,170,229,155,162,
+233,152,159,229,136,155,228,184,154,230,137,191,230,139,133,229,162,158,233,149,
+191,230,156,137,228,186,186,228,191,157,230,140,129,229,149,134,229,174,182,231,
+187,180,228,191,174,229,143,176,230,185,190,229,183,166,229,143,179,232,130,161,
+228,187,189,231,173,148,230,161,136,229,174,158,233,153,133,231,148,181,228,191,
+161,231,187,143,231,144,134,231,148,159,229,145,189,229,174,163,228,188,160,228,
+187,187,229,138,161,230,173,163,229,188,143,231,137,185,232,137,178,228,184,139,
+230,157,165,229,141,143,228,188,154,229,143,170,232,131,189,229,189,147,231,132,
+182,233,135,141,230,150,176,229,133,167,229,174,185,230,140,135,229,175,188,232,
+191,144,232,161,140,230,151,165,229,191,151,232,179,163,229,174,182,232,182,133,
+232,191,135,229,156,159,229,156,176,230,181,153,230,177,159,230,148,175,228,187,
+152,230,142,168,229,135,186,231,171,153,233,149,191,230,157,173,229,183,158,230,
+137,167,232,161,140,229,136,182,233,128,160,228,185,139,228,184,128,230,142,168,
+229,185,191,231,142,176,229,156,186,230,143,143,232,191,176,229,143,152,229,140,
+150,228,188,160,231,187,159,230,173,140,230,137,139,228,191,157,233,153,169,232,
+175,190,231,168,139,229,140,187,231,150,151,231,187,143,232,191,135,232,191,135,
+229,142,187,228,185,139,229,137,141,230,148,182,229,133,165,229,185,180,229,186,
+166,230,157,130,229,191,151,231,190,142,228,184,189,230,156,128,233,171,152,231,
+153,187,233,153,134,230,156,170,230,157,165,229,138,160,229,183,165,229,133,141,
+232,180,163,230,149,153,231,168,139,231,137,136,229,157,151,232,186,171,228,189,
+147,233,135,141,229,186,134,229,135,186,229,148,174,230,136,144,230,156,172,229,
+189,162,229,188,143,229,156,159,232,177,134,229,135,186,229,131,185,228,184,156,
+230,150,185,233,130,174,231,174,177,229,141,151,228,186,172,230,177,130,232,129,
+140,229,143,150,229,190,151,232,129,140,228,189,141,231,155,184,228,191,161,233,
+161,181,233,157,162,229,136,134,233,146,159,231,189,145,233,161,181,231,161,174,
+229,174,154,229,155,190,228,190,139,231,189,145,229,157,128,231,167,175,230,158,
+129,233,148,153,232,175,175,231,155,174,231,154,132,229,174,157,232,180,157,230,
+156,186,229,133,179,233,163,142,233,153,169,230,142,136,230,157,131,231,151,133,
+230,175,146,229,174,160,231,137,169,233,153,164,228,186,134,232,169,149,232,171,
+150,231,150,190,231,151,133,229,143,138,230,151,182,230,177,130,232,180,173,231,
+171,153,231,130,185,229,132,191,231,171,165,230,175,143,229,164,169,228,184,173,
+229,164,174,232,174,164,232,175,134,230,175,143,228,184,170,229,164,169,230,180,
+165,229,173,151,228,189,147,229,143,176,231,129,163,231,187,180,230,138,164,230,
+156,172,233,161,181,228,184,170,230,128,167,229,174,152,230,150,185,229,184,184,
+232,167,129,231,155,184,230,156,186,230,136,152,231,149,165,229,186,148,229,189,
+147,229,190,139,229,184,136,230,150,185,228,190,191,230,160,161,229,155,173,232,
+130,161,229,184,130,230,136,191,229,177,139,230,160,143,231,155,174,229,145,152,
+229,183,165,229,175,188,232,135,180,231,170,129,231,132,182,233,129,147,229,133,
+183,230,156,172,231,189,145,231,187,147,229,144,136,230,161,163,230,161,136,229,
+138,179,229,138,168,229,143,166,229,164,150,231,190,142,229,133,131,229,188,149,
+232,181,183,230,148,185,229,143,152,231,172,172,229,155,155,228,188,154,232,174,
+161,232,170,170,230,152,142,233,154,144,231,167,129,229,174,157,229,174,157,232,
+167,132,232,140,131,230,182,136,232,180,185,229,133,177,229,144,140,229,191,152,
+232,174,176,228,189,147,231,179,187,229,184,166,230,157,165,229,144,141,229,173,
+151,231,153,188,232,161,168,229,188,128,230,148,190,229,138,160,231,155,159,229,
+143,151,229,136,176,228,186,140,230,137,139,229,164,167,233,135,143,230,136,144,
+228,186,186,230,149,176,233,135,143,229,133,177,228,186,171,229,140,186,229,159,
+159,229,165,179,229,173,169,229,142,159,229,136,153,230,137,128,229,156,168,231,
+187,147,230,157,159,233,128,154,228,191,161,232,182,133,231,186,167,233,133,141,
+231,189,174,229,189,147,230,151,182,228,188,152,231,167,128,230,128,167,230,132,
+159,230,136,191,228,186,167,233,129,138,230,136,178,229,135,186,229,143,163,230,
+143,144,228,186,164,229,176,177,228,184,154,228,191,157,229,129,165,231,168,139,
+229,186,166,229,143,130,230,149,176,228,186,139,228,184,154,230,149,180,228,184,
+170,229,177,177,228,184,156,230,131,133,230,132,159,231,137,185,230,174,138,229,
+136,134,233,161,158,230,144,156,229,176,139,229,177,158,228,186,142,233,151,168,
+230,136,183,232,180,162,229,138,161,229,163,176,233,159,179,229,143,138,229,133,
+182,232,180,162,231,187,143,229,157,154,230,140,129,229,185,178,233,131,168,230,
+136,144,231,171,139,229,136,169,231,155,138,232,128,131,232,153,145,230,136,144,
+233,131,189,229,140,133,232,163,133,231,148,168,230,136,182,230,175,148,232,181,
+155,230,150,135,230,152,142,230,139,155,229,149,134,229,174,140,230,149,180,231,
+156,159,230,152,175,231,156,188,231,157,155,228,188,153,228,188,180,229,168,129,
+230,156,155,233,162,134,229,159,159,229,141,171,231,148,159,228,188,152,230,131,
+160,232,171,150,229,163,135,229,133,172,229,133,177,232,137,175,229,165,189,229,
+133,133,229,136,134,231,172,166,229,144,136,233,153,132,228,187,182,231,137,185,
+231,130,185,228,184,141,229,143,175,232,139,177,230,150,135,232,181,132,228,186,
+167,230,160,185,230,156,172,230,152,142,230,152,190,229,175,134,231,162,188,229,
+133,172,228,188,151,230,176,145,230,151,143,230,155,180,229,138,160,228,186,171,
+229,143,151,229,144,140,229,173,166,229,144,175,229,138,168,233,128,130,229,144,
+136,229,142,159,230,157,165,233,151,174,231,173,148,230,156,172,230,150,135,231,
+190,142,233,163,159,231,187,191,232,137,178,231,168,179,229,174,154,231,187,136,
+228,186,142,231,148,159,231,137,169,228,190,155,230,177,130,230,144,156,231,139,
+144,229,138,155,233,135,143,228,184,165,233,135,141,230,176,184,232,191,156,229,
+134,153,231,156,159,230,156,137,233,153,144,231,171,158,228,186,137,229,175,185,
+232,177,161,232,180,185,231,148,168,228,184,141,229,165,189,231,187,157,229,175,
+185,229,141,129,229,136,134,228,191,131,232,191,155,231,130,185,232,175,132,229,
+189,177,233,159,179,228,188,152,229,138,191,228,184,141,229,176,145,230,172,163,
+232,181,143,229,185,182,228,184,148,230,156,137,231,130,185,230,150,185,229,144,
+145,229,133,168,230,150,176,228,191,161,231,148,168,232,174,190,230,150,189,229,
+189,162,232,177,161,232,181,132,230,160,188,231,170,129,231,160,180,233,154,143,
+231,157,128,233,135,141,229,164,167,228,186,142,230,152,175,230,175,149,228,184,
+154,230,153,186,232,131,189,229,140,150,229,183,165,229,174,140,231,190,142,229,
+149,134,229,159,142,231,187,159,228,184,128,229,135,186,231,137,136,230,137,147,
+233,128,160,231,148,162,229,147,129,230,166,130,229,134,181,231,148,168,228,186,
+142,228,191,157,231,149,153,229,155,160,231,180,160,228,184,173,229,156,139,229,
+173,152,229,130,168,232,180,180,229,155,190,230,156,128,230,132,155,233,149,191,
+230,156,159,229,143,163,228,187,183,231,144,134,232,180,162,229,159,186,229,156,
+176,229,174,137,230,142,146,230,173,166,230,177,137,233,135,140,233,157,162,229,
+136,155,229,187,186,229,164,169,231,169,186,233,166,150,229,133,136,229,174,140,
+229,150,132,233,169,177,229,138,168,228,184,139,233,157,162,228,184,141,229,134,
+141,232,175,154,228,191,161,230,132,143,228,185,137,233,152,179,229,133,137,232,
+139,177,229,155,189,230,188,130,228,186,174,229,134,155,228,186,139,231,142,169,
+229,174,182,231,190,164,228,188,151,229,134,156,230,176,145,229,141,179,229,143,
+175,229,144,141,231,168,177,229,174,182,229,133,183,229,138,168,231,148,187,230,
+131,179,229,136,176,230,179,168,230,152,142,229,176,143,229,173,166,230,128,167,
+232,131,189,232,128,131,231,160,148,231,161,172,228,187,182,232,167,130,231,156,
+139,230,184,133,230,165,154,230,144,158,231,172,145,233,166,150,233,160,129,233,
+187,132,233,135,145,233,128,130,231,148,168,230,177,159,232,139,143,231,156,159,
+229,174,158,228,184,187,231,174,161,233,152,182,230,174,181,232,168,187,229,134,
+138,231,191,187,232,175,145,230,157,131,229,136,169,229,129,154,229,165,189,228,
+188,188,228,185,142,233,128,154,232,174,175,230,150,189,229,183,165,231,139,128,
+230,133,139,228,185,159,232,174,184,231,142,175,228,191,157,229,159,185,229,133,
+187,230,166,130,229,191,181,229,164,167,229,158,139,230,156,186,231,165,168,231,
+144,134,232,167,163,229,140,191,229,144,141,99,117,97,110,100,111,101,110,118,
+105,97,114,109,97,100,114,105,100,98,117,115,99,97,114,105,110,105,99,105,111,
+116,105,101,109,112,111,112,111,114,113,117,101,99,117,101,110,116,97,101,115,
+116,97,100,111,112,117,101,100,101,110,106,117,101,103,111,115,99,111,110,116,
+114,97,101,115,116,195,161,110,110,111,109,98,114,101,116,105,101,110,101,110,
+112,101,114,102,105,108,109,97,110,101,114,97,97,109,105,103,111,115,99,105,117,
+100,97,100,99,101,110,116,114,111,97,117,110,113,117,101,112,117,101,100,101,115
+,100,101,110,116,114,111,112,114,105,109,101,114,112,114,101,99,105,111,115,101,
+103,195,186,110,98,117,101,110,111,115,118,111,108,118,101,114,112,117,110,116,
+111,115,115,101,109,97,110,97,104,97,98,195,173,97,97,103,111,115,116,111,110,
+117,101,118,111,115,117,110,105,100,111,115,99,97,114,108,111,115,101,113,117,
+105,112,111,110,105,195,177,111,115,109,117,99,104,111,115,97,108,103,117,110,97
+,99,111,114,114,101,111,105,109,97,103,101,110,112,97,114,116,105,114,97,114,114
+,105,98,97,109,97,114,195,173,97,104,111,109,98,114,101,101,109,112,108,101,111,
+118,101,114,100,97,100,99,97,109,98,105,111,109,117,99,104,97,115,102,117,101,
+114,111,110,112,97,115,97,100,111,108,195,173,110,101,97,112,97,114,101,99,101,
+110,117,101,118,97,115,99,117,114,115,111,115,101,115,116,97,98,97,113,117,105,
+101,114,111,108,105,98,114,111,115,99,117,97,110,116,111,97,99,99,101,115,111,
+109,105,103,117,101,108,118,97,114,105,111,115,99,117,97,116,114,111,116,105,101
+,110,101,115,103,114,117,112,111,115,115,101,114,195,161,110,101,117,114,111,112
+,97,109,101,100,105,111,115,102,114,101,110,116,101,97,99,101,114,99,97,100,101,
+109,195,161,115,111,102,101,114,116,97,99,111,99,104,101,115,109,111,100,101,108
+,111,105,116,97,108,105,97,108,101,116,114,97,115,97,108,103,195,186,110,99,111,
+109,112,114,97,99,117,97,108,101,115,101,120,105,115,116,101,99,117,101,114,112,
+111,115,105,101,110,100,111,112,114,101,110,115,97,108,108,101,103,97,114,118,
+105,97,106,101,115,100,105,110,101,114,111,109,117,114,99,105,97,112,111,100,114
+,195,161,112,117,101,115,116,111,100,105,97,114,105,111,112,117,101,98,108,111,
+113,117,105,101,114,101,109,97,110,117,101,108,112,114,111,112,105,111,99,114,
+105,115,105,115,99,105,101,114,116,111,115,101,103,117,114,111,109,117,101,114,
+116,101,102,117,101,110,116,101,99,101,114,114,97,114,103,114,97,110,100,101,101
+,102,101,99,116,111,112,97,114,116,101,115,109,101,100,105,100,97,112,114,111,
+112,105,97,111,102,114,101,99,101,116,105,101,114,114,97,101,45,109,97,105,108,
+118,97,114,105,97,115,102,111,114,109,97,115,102,117,116,117,114,111,111,98,106,
+101,116,111,115,101,103,117,105,114,114,105,101,115,103,111,110,111,114,109,97,
+115,109,105,115,109,111,115,195,186,110,105,99,111,99,97,109,105,110,111,115,105
+,116,105,111,115,114,97,122,195,179,110,100,101,98,105,100,111,112,114,117,101,
+98,97,116,111,108,101,100,111,116,101,110,195,173,97,106,101,115,195,186,115,101
+,115,112,101,114,111,99,111,99,105,110,97,111,114,105,103,101,110,116,105,101,
+110,100,97,99,105,101,110,116,111,99,195,161,100,105,122,104,97,98,108,97,114,
+115,101,114,195,173,97,108,97,116,105,110,97,102,117,101,114,122,97,101,115,116,
+105,108,111,103,117,101,114,114,97,101,110,116,114,97,114,195,169,120,105,116,
+111,108,195,179,112,101,122,97,103,101,110,100,97,118,195,173,100,101,111,101,
+118,105,116,97,114,112,97,103,105,110,97,109,101,116,114,111,115,106,97,118,105,
+101,114,112,97,100,114,101,115,102,195,161,99,105,108,99,97,98,101,122,97,195,
+161,114,101,97,115,115,97,108,105,100,97,101,110,118,195,173,111,106,97,112,195,
+179,110,97,98,117,115,111,115,98,105,101,110,101,115,116,101,120,116,111,115,108
+,108,101,118,97,114,112,117,101,100,97,110,102,117,101,114,116,101,99,111,109,
+195,186,110,99,108,97,115,101,115,104,117,109,97,110,111,116,101,110,105,100,111
+,98,105,108,98,97,111,117,110,105,100,97,100,101,115,116,195,161,115,101,100,105
+,116,97,114,99,114,101,97,100,111,208,180,208,187,209,143,209,135,209,130,208,
+190,208,186,208,176,208,186,208,184,208,187,208,184,209,141,209,130,208,190,208,
+178,209,129,208,181,208,181,208,179,208,190,208,191,209,128,208,184,209,130,208,
+176,208,186,208,181,209,137,208,181,209,131,208,182,208,181,208,154,208,176,208,
+186,208,177,208,181,208,183,208,177,209,139,208,187,208,190,208,189,208,184,208,
+146,209,129,208,181,208,191,208,190,208,180,208,173,209,130,208,190,209,130,208,
+190,208,188,209,135,208,181,208,188,208,189,208,181,209,130,208,187,208,181,209,
+130,209,128,208,176,208,183,208,190,208,189,208,176,208,179,208,180,208,181,208,
+188,208,189,208,181,208,148,208,187,209,143,208,159,209,128,208,184,208,189,208,
+176,209,129,208,189,208,184,209,133,209,130,208,181,208,188,208,186,209,130,208,
+190,208,179,208,190,208,180,208,178,208,190,209,130,209,130,208,176,208,188,208,
+161,208,168,208,144,208,188,208,176,209,143,208,167,209,130,208,190,208,178,208,
+176,209,129,208,178,208,176,208,188,208,181,208,188,209,131,208,162,208,176,208,
+186,208,180,208,178,208,176,208,189,208,176,208,188,209,141,209,130,208,184,209,
+141,209,130,209,131,208,146,208,176,208,188,209,130,208,181,209,133,208,191,209,
+128,208,190,209,130,209,131,209,130,208,189,208,176,208,180,208,180,208,189,209,
+143,208,146,208,190,209,130,209,130,209,128,208,184,208,189,208,181,208,185,208,
+146,208,176,209,129,208,189,208,184,208,188,209,129,208,176,208,188,209,130,208,
+190,209,130,209,128,209,131,208,177,208,158,208,189,208,184,208,188,208,184,209,
+128,208,189,208,181,208,181,208,158,208,158,208,158,208,187,208,184,209,134,209,
+141,209,130,208,176,208,158,208,189,208,176,208,189,208,181,208,188,208,180,208,
+190,208,188,208,188,208,190,208,185,208,180,208,178,208,181,208,190,208,189,208,
+190,209,129,209,131,208,180,224,164,149,224,165,135,224,164,185,224,165,136,224,
+164,149,224,165,128,224,164,184,224,165,135,224,164,149,224,164,190,224,164,149,
+224,165,139,224,164,148,224,164,176,224,164,170,224,164,176,224,164,168,224,165,
+135,224,164,143,224,164,149,224,164,149,224,164,191,224,164,173,224,165,128,224,
+164,135,224,164,184,224,164,149,224,164,176,224,164,164,224,165,139,224,164,185,
+224,165,139,224,164,134,224,164,170,224,164,185,224,165,128,224,164,175,224,164,
+185,224,164,175,224,164,190,224,164,164,224,164,149,224,164,165,224,164,190,106,
+97,103,114,97,110,224,164,134,224,164,156,224,164,156,224,165,139,224,164,133,
+224,164,172,224,164,166,224,165,139,224,164,151,224,164,136,224,164,156,224,164,
+190,224,164,151,224,164,143,224,164,185,224,164,174,224,164,135,224,164,168,224,
+164,181,224,164,185,224,164,175,224,165,135,224,164,165,224,165,135,224,164,165,
+224,165,128,224,164,152,224,164,176,224,164,156,224,164,172,224,164,166,224,165,
+128,224,164,149,224,164,136,224,164,156,224,165,128,224,164,181,224,165,135,224,
+164,168,224,164,136,224,164,168,224,164,143,224,164,185,224,164,176,224,164,137,
+224,164,184,224,164,174,224,165,135,224,164,149,224,164,174,224,164,181,224,165,
+139,224,164,178,224,165,135,224,164,184,224,164,172,224,164,174,224,164,136,224,
+164,166,224,165,135,224,164,147,224,164,176,224,164,134,224,164,174,224,164,172,
+224,164,184,224,164,173,224,164,176,224,164,172,224,164,168,224,164,154,224,164,
+178,224,164,174,224,164,168,224,164,134,224,164,151,224,164,184,224,165,128,224,
+164,178,224,165,128,216,185,217,132,217,137,216,165,217,132,217,137,217,135,216,
+176,216,167,216,162,216,174,216,177,216,185,216,175,216,175,216,167,217,132,217,
+137,217,135,216,176,217,135,216,181,217,136,216,177,216,186,217,138,216,177,217,
+131,216,167,217,134,217,136,217,132,216,167,216,168,217,138,217,134,216,185,216,
+177,216,182,216,176,217,132,217,131,217,135,217,134,216,167,217,138,217,136,217,
+133,217,130,216,167,217,132,216,185,217,132,217,138,216,167,217,134,216,167,217,
+132,217,131,217,134,216,173,216,170,217,137,217,130,216,168,217,132,217,136,216,
+173,216,169,216,167,216,174,216,177,217,129,217,130,216,183,216,185,216,168,216,
+175,216,177,217,131,217,134,216,165,216,176,216,167,217,131,217,133,216,167,216,
+167,216,173,216,175,216,165,217,132,216,167,217,129,217,138,217,135,216,168,216,
+185,216,182,217,131,217,138,217,129,216,168,216,173,216,171,217,136,217,133,217,
+134,217,136,217,135,217,136,216,163,217,134,216,167,216,172,216,175,216,167,217,
+132,217,135,216,167,216,179,217,132,217,133,216,185,217,134,216,175,217,132,217,
+138,216,179,216,185,216,168,216,177,216,181,217,132,217,137,217,133,217,134,216,
+176,216,168,217,135,216,167,216,163,217,134,217,135,217,133,216,171,217,132,217,
+131,217,134,216,170,216,167,217,132,216,167,216,173,217,138,216,171,217,133,216,
+181,216,177,216,180,216,177,216,173,216,173,217,136,217,132,217,136,217,129,217,
+138,216,167,216,176,216,167,217,132,217,131,217,132,217,133,216,177,216,169,216,
+167,217,134,216,170,216,167,217,132,217,129,216,163,216,168,217,136,216,174,216,
+167,216,181,216,163,217,134,216,170,216,167,217,134,217,135,216,167,217,132,217,
+138,216,185,216,182,217,136,217,136,217,130,216,175,216,167,216,168,217,134,216,
+174,217,138,216,177,216,168,217,134,216,170,217,132,217,131,217,133,216,180,216,
+167,216,161,217,136,217,135,217,138,216,167,216,168,217,136,217,130,216,181,216,
+181,217,136,217,133,216,167,216,177,217,130,217,133,216,163,216,173,216,175,217,
+134,216,173,217,134,216,185,216,175,217,133,216,177,216,163,217,138,216,167,216,
+173,216,169,217,131,216,170,216,168,216,175,217,136,217,134,217,138,216,172,216,
+168,217,133,217,134,217,135,216,170,216,173,216,170,216,172,217,135,216,169,216,
+179,217,134,216,169,217,138,216,170,217,133,217,131,216,177,216,169,216,186,216,
+178,216,169,217,134,217,129,216,179,216,168,217,138,216,170,217,132,217,132,217,
+135,217,132,217,134,216,167,216,170,217,132,217,131,217,130,217,132,216,168,217,
+132,217,133,216,167,216,185,217,134,217,135,216,163,217,136,217,132,216,180,217,
+138,216,161,217,134,217,136,216,177,216,163,217,133,216,167,217,129,217,138,217,
+131,216,168,217,131,217,132,216,176,216,167,216,170,216,177,216,170,216,168,216,
+168,216,163,217,134,217,135,217,133,216,179,216,167,217,134,217,131,216,168,217,
+138,216,185,217,129,217,130,216,175,216,173,216,179,217,134,217,132,217,135,217,
+133,216,180,216,185,216,177,216,163,217,135,217,132,216,180,217,135,216,177,217,
+130,216,183,216,177,216,183,217,132,216,168,112,114,111,102,105,108,101,115,101,
+114,118,105,99,101,100,101,102,97,117,108,116,104,105,109,115,101,108,102,100,
+101,116,97,105,108,115,99,111,110,116,101,110,116,115,117,112,112,111,114,116,
+115,116,97,114,116,101,100,109,101,115,115,97,103,101,115,117,99,99,101,115,115,
+102,97,115,104,105,111,110,60,116,105,116,108,101,62,99,111,117,110,116,114,121,
+97,99,99,111,117,110,116,99,114,101,97,116,101,100,115,116,111,114,105,101,115,
+114,101,115,117,108,116,115,114,117,110,110,105,110,103,112,114,111,99,101,115,
+115,119,114,105,116,105,110,103,111,98,106,101,99,116,115,118,105,115,105,98,108
+,101,119,101,108,99,111,109,101,97,114,116,105,99,108,101,117,110,107,110,111,
+119,110,110,101,116,119,111,114,107,99,111,109,112,97,110,121,100,121,110,97,109
+,105,99,98,114,111,119,115,101,114,112,114,105,118,97,99,121,112,114,111,98,108,
+101,109,83,101,114,118,105,99,101,114,101,115,112,101,99,116,100,105,115,112,108
+,97,121,114,101,113,117,101,115,116,114,101,115,101,114,118,101,119,101,98,115,
+105,116,101,104,105,115,116,111,114,121,102,114,105,101,110,100,115,111,112,116,
+105,111,110,115,119,111,114,107,105,110,103,118,101,114,115,105,111,110,109,105,
+108,108,105,111,110,99,104,97,110,110,101,108,119,105,110,100,111,119,46,97,100,
+100,114,101,115,115,118,105,115,105,116,101,100,119,101,97,116,104,101,114,99,
+111,114,114,101,99,116,112,114,111,100,117,99,116,101,100,105,114,101,99,116,102
+,111,114,119,97,114,100,121,111,117,32,99,97,110,114,101,109,111,118,101,100,115
+,117,98,106,101,99,116,99,111,110,116,114,111,108,97,114,99,104,105,118,101,99,
+117,114,114,101,110,116,114,101,97,100,105,110,103,108,105,98,114,97,114,121,108
+,105,109,105,116,101,100,109,97,110,97,103,101,114,102,117,114,116,104,101,114,
+115,117,109,109,97,114,121,109,97,99,104,105,110,101,109,105,110,117,116,101,115
+,112,114,105,118,97,116,101,99,111,110,116,101,120,116,112,114,111,103,114,97,
+109,115,111,99,105,101,116,121,110,117,109,98,101,114,115,119,114,105,116,116,
+101,110,101,110,97,98,108,101,100,116,114,105,103,103,101,114,115,111,117,114,99
+,101,115,108,111,97,100,105,110,103,101,108,101,109,101,110,116,112,97,114,116,
+110,101,114,102,105,110,97,108,108,121,112,101,114,102,101,99,116,109,101,97,110
+,105,110,103,115,121,115,116,101,109,115,107,101,101,112,105,110,103,99,117,108,
+116,117,114,101,38,113,117,111,116,59,44,106,111,117,114,110,97,108,112,114,111,
+106,101,99,116,115,117,114,102,97,99,101,115,38,113,117,111,116,59,101,120,112,
+105,114,101,115,114,101,118,105,101,119,115,98,97,108,97,110,99,101,69,110,103,
+108,105,115,104,67,111,110,116,101,110,116,116,104,114,111,117,103,104,80,108,
+101,97,115,101,32,111,112,105,110,105,111,110,99,111,110,116,97,99,116,97,118,
+101,114,97,103,101,112,114,105,109,97,114,121,118,105,108,108,97,103,101,83,112,
+97,110,105,115,104,103,97,108,108,101,114,121,100,101,99,108,105,110,101,109,101
+,101,116,105,110,103,109,105,115,115,105,111,110,112,111,112,117,108,97,114,113,
+117,97,108,105,116,121,109,101,97,115,117,114,101,103,101,110,101,114,97,108,115
+,112,101,99,105,101,115,115,101,115,115,105,111,110,115,101,99,116,105,111,110,
+119,114,105,116,101,114,115,99,111,117,110,116,101,114,105,110,105,116,105,97,
+108,114,101,112,111,114,116,115,102,105,103,117,114,101,115,109,101,109,98,101,
+114,115,104,111,108,100,105,110,103,100,105,115,112,117,116,101,101,97,114,108,
+105,101,114,101,120,112,114,101,115,115,100,105,103,105,116,97,108,112,105,99,
+116,117,114,101,65,110,111,116,104,101,114,109,97,114,114,105,101,100,116,114,97
+,102,102,105,99,108,101,97,100,105,110,103,99,104,97,110,103,101,100,99,101,110,
+116,114,97,108,118,105,99,116,111,114,121,105,109,97,103,101,115,47,114,101,97,
+115,111,110,115,115,116,117,100,105,101,115,102,101,97,116,117,114,101,108,105,
+115,116,105,110,103,109,117,115,116,32,98,101,115,99,104,111,111,108,115,86,101,
+114,115,105,111,110,117,115,117,97,108,108,121,101,112,105,115,111,100,101,112,
+108,97,121,105,110,103,103,114,111,119,105,110,103,111,98,118,105,111,117,115,
+111,118,101,114,108,97,121,112,114,101,115,101,110,116,97,99,116,105,111,110,115
+,60,47,117,108,62,13,10,119,114,97,112,112,101,114,97,108,114,101,97,100,121,99,
+101,114,116,97,105,110,114,101,97,108,105,116,121,115,116,111,114,97,103,101,97,
+110,111,116,104,101,114,100,101,115,107,116,111,112,111,102,102,101,114,101,100,
+112,97,116,116,101,114,110,117,110,117,115,117,97,108,68,105,103,105,116,97,108,
+99,97,112,105,116,97,108,87,101,98,115,105,116,101,102,97,105,108,117,114,101,99
+,111,110,110,101,99,116,114,101,100,117,99,101,100,65,110,100,114,111,105,100,
+100,101,99,97,100,101,115,114,101,103,117,108,97,114,32,38,97,109,112,59,32,97,
+110,105,109,97,108,115,114,101,108,101,97,115,101,65,117,116,111,109,97,116,103,
+101,116,116,105,110,103,109,101,116,104,111,100,115,110,111,116,104,105,110,103,
+80,111,112,117,108,97,114,99,97,112,116,105,111,110,108,101,116,116,101,114,115,
+99,97,112,116,117,114,101,115,99,105,101,110,99,101,108,105,99,101,110,115,101,
+99,104,97,110,103,101,115,69,110,103,108,97,110,100,61,49,38,97,109,112,59,72,
+105,115,116,111,114,121,32,61,32,110,101,119,32,67,101,110,116,114,97,108,117,
+112,100,97,116,101,100,83,112,101,99,105,97,108,78,101,116,119,111,114,107,114,
+101,113,117,105,114,101,99,111,109,109,101,110,116,119,97,114,110,105,110,103,67
+,111,108,108,101,103,101,116,111,111,108,98,97,114,114,101,109,97,105,110,115,98
+,101,99,97,117,115,101,101,108,101,99,116,101,100,68,101,117,116,115,99,104,102,
+105,110,97,110,99,101,119,111,114,107,101,114,115,113,117,105,99,107,108,121,98,
+101,116,119,101,101,110,101,120,97,99,116,108,121,115,101,116,116,105,110,103,
+100,105,115,101,97,115,101,83,111,99,105,101,116,121,119,101,97,112,111,110,115,
+101,120,104,105,98,105,116,38,108,116,59,33,45,45,67,111,110,116,114,111,108,99,
+108,97,115,115,101,115,99,111,118,101,114,101,100,111,117,116,108,105,110,101,97
+,116,116,97,99,107,115,100,101,118,105,99,101,115,40,119,105,110,100,111,119,112
+,117,114,112,111,115,101,116,105,116,108,101,61,34,77,111,98,105,108,101,32,107,
+105,108,108,105,110,103,115,104,111,119,105,110,103,73,116,97,108,105,97,110,100
+,114,111,112,112,101,100,104,101,97,118,105,108,121,101,102,102,101,99,116,115,
+45,49,39,93,41,59,10,99,111,110,102,105,114,109,67,117,114,114,101,110,116,97,
+100,118,97,110,99,101,115,104,97,114,105,110,103,111,112,101,110,105,110,103,100
+,114,97,119,105,110,103,98,105,108,108,105,111,110,111,114,100,101,114,101,100,
+71,101,114,109,97,110,121,114,101,108,97,116,101,100,60,47,102,111,114,109,62,
+105,110,99,108,117,100,101,119,104,101,116,104,101,114,100,101,102,105,110,101,
+100,83,99,105,101,110,99,101,99,97,116,97,108,111,103,65,114,116,105,99,108,101,
+98,117,116,116,111,110,115,108,97,114,103,101,115,116,117,110,105,102,111,114,
+109,106,111,117,114,110,101,121,115,105,100,101,98,97,114,67,104,105,99,97,103,
+111,104,111,108,105,100,97,121,71,101,110,101,114,97,108,112,97,115,115,97,103,
+101,44,38,113,117,111,116,59,97,110,105,109,97,116,101,102,101,101,108,105,110,
+103,97,114,114,105,118,101,100,112,97,115,115,105,110,103,110,97,116,117,114,97,
+108,114,111,117,103,104,108,121,46,10,10,84,104,101,32,98,117,116,32,110,111,116
+,100,101,110,115,105,116,121,66,114,105,116,97,105,110,67,104,105,110,101,115,
+101,108,97,99,107,32,111,102,116,114,105,98,117,116,101,73,114,101,108,97,110,
+100,34,32,100,97,116,97,45,102,97,99,116,111,114,115,114,101,99,101,105,118,101,
+116,104,97,116,32,105,115,76,105,98,114,97,114,121,104,117,115,98,97,110,100,105
+,110,32,102,97,99,116,97,102,102,97,105,114,115,67,104,97,114,108,101,115,114,97
+,100,105,99,97,108,98,114,111,117,103,104,116,102,105,110,100,105,110,103,108,97
+,110,100,105,110,103,58,108,97,110,103,61,34,114,101,116,117,114,110,32,108,101,
+97,100,101,114,115,112,108,97,110,110,101,100,112,114,101,109,105,117,109,112,97
+,99,107,97,103,101,65,109,101,114,105,99,97,69,100,105,116,105,111,110,93,38,113
+,117,111,116,59,77,101,115,115,97,103,101,110,101,101,100,32,116,111,118,97,108,
+117,101,61,34,99,111,109,112,108,101,120,108,111,111,107,105,110,103,115,116,97,
+116,105,111,110,98,101,108,105,101,118,101,115,109,97,108,108,101,114,45,109,111
+,98,105,108,101,114,101,99,111,114,100,115,119,97,110,116,32,116,111,107,105,110
+,100,32,111,102,70,105,114,101,102,111,120,121,111,117,32,97,114,101,115,105,109
+,105,108,97,114,115,116,117,100,105,101,100,109,97,120,105,109,117,109,104,101,
+97,100,105,110,103,114,97,112,105,100,108,121,99,108,105,109,97,116,101,107,105,
+110,103,100,111,109,101,109,101,114,103,101,100,97,109,111,117,110,116,115,102,
+111,117,110,100,101,100,112,105,111,110,101,101,114,102,111,114,109,117,108,97,
+100,121,110,97,115,116,121,104,111,119,32,116,111,32,83,117,112,112,111,114,116,
+114,101,118,101,110,117,101,101,99,111,110,111,109,121,82,101,115,117,108,116,
+115,98,114,111,116,104,101,114,115,111,108,100,105,101,114,108,97,114,103,101,
+108,121,99,97,108,108,105,110,103,46,38,113,117,111,116,59,65,99,99,111,117,110,
+116,69,100,119,97,114,100,32,115,101,103,109,101,110,116,82,111,98,101,114,116,
+32,101,102,102,111,114,116,115,80,97,99,105,102,105,99,108,101,97,114,110,101,
+100,117,112,32,119,105,116,104,104,101,105,103,104,116,58,119,101,32,104,97,118,
+101,65,110,103,101,108,101,115,110,97,116,105,111,110,115,95,115,101,97,114,99,
+104,97,112,112,108,105,101,100,97,99,113,117,105,114,101,109,97,115,115,105,118,
+101,103,114,97,110,116,101,100,58,32,102,97,108,115,101,116,114,101,97,116,101,
+100,98,105,103,103,101,115,116,98,101,110,101,102,105,116,100,114,105,118,105,
+110,103,83,116,117,100,105,101,115,109,105,110,105,109,117,109,112,101,114,104,
+97,112,115,109,111,114,110,105,110,103,115,101,108,108,105,110,103,105,115,32,
+117,115,101,100,114,101,118,101,114,115,101,118,97,114,105,97,110,116,32,114,111
+,108,101,61,34,109,105,115,115,105,110,103,97,99,104,105,101,118,101,112,114,111
+,109,111,116,101,115,116,117,100,101,110,116,115,111,109,101,111,110,101,101,120
+,116,114,101,109,101,114,101,115,116,111,114,101,98,111,116,116,111,109,58,101,
+118,111,108,118,101,100,97,108,108,32,116,104,101,115,105,116,101,109,97,112,101
+,110,103,108,105,115,104,119,97,121,32,116,111,32,32,65,117,103,117,115,116,115,
+121,109,98,111,108,115,67,111,109,112,97,110,121,109,97,116,116,101,114,115,109,
+117,115,105,99,97,108,97,103,97,105,110,115,116,115,101,114,118,105,110,103,125,
+41,40,41,59,13,10,112,97,121,109,101,110,116,116,114,111,117,98,108,101,99,111,
+110,99,101,112,116,99,111,109,112,97,114,101,112,97,114,101,110,116,115,112,108,
+97,121,101,114,115,114,101,103,105,111,110,115,109,111,110,105,116,111,114,32,39
+,39,84,104,101,32,119,105,110,110,105,110,103,101,120,112,108,111,114,101,97,100
+,97,112,116,101,100,71,97,108,108,101,114,121,112,114,111,100,117,99,101,97,98,
+105,108,105,116,121,101,110,104,97,110,99,101,99,97,114,101,101,114,115,41,46,32
+,84,104,101,32,99,111,108,108,101,99,116,83,101,97,114,99,104,32,97,110,99,105,
+101,110,116,101,120,105,115,116,101,100,102,111,111,116,101,114,32,104,97,110,
+100,108,101,114,112,114,105,110,116,101,100,99,111,110,115,111,108,101,69,97,115
+,116,101,114,110,101,120,112,111,114,116,115,119,105,110,100,111,119,115,67,104,
+97,110,110,101,108,105,108,108,101,103,97,108,110,101,117,116,114,97,108,115,117
+,103,103,101,115,116,95,104,101,97,100,101,114,115,105,103,110,105,110,103,46,
+104,116,109,108,34,62,115,101,116,116,108,101,100,119,101,115,116,101,114,110,99
+,97,117,115,105,110,103,45,119,101,98,107,105,116,99,108,97,105,109,101,100,74,
+117,115,116,105,99,101,99,104,97,112,116,101,114,118,105,99,116,105,109,115,84,
+104,111,109,97,115,32,109,111,122,105,108,108,97,112,114,111,109,105,115,101,112
+,97,114,116,105,101,115,101,100,105,116,105,111,110,111,117,116,115,105,100,101,
+58,102,97,108,115,101,44,104,117,110,100,114,101,100,79,108,121,109,112,105,99,
+95,98,117,116,116,111,110,97,117,116,104,111,114,115,114,101,97,99,104,101,100,
+99,104,114,111,110,105,99,100,101,109,97,110,100,115,115,101,99,111,110,100,115,
+112,114,111,116,101,99,116,97,100,111,112,116,101,100,112,114,101,112,97,114,101
+,110,101,105,116,104,101,114,103,114,101,97,116,108,121,103,114,101,97,116,101,
+114,111,118,101,114,97,108,108,105,109,112,114,111,118,101,99,111,109,109,97,110
+,100,115,112,101,99,105,97,108,115,101,97,114,99,104,46,119,111,114,115,104,105,
+112,102,117,110,100,105,110,103,116,104,111,117,103,104,116,104,105,103,104,101,
+115,116,105,110,115,116,101,97,100,117,116,105,108,105,116,121,113,117,97,114,
+116,101,114,67,117,108,116,117,114,101,116,101,115,116,105,110,103,99,108,101,97
+,114,108,121,101,120,112,111,115,101,100,66,114,111,119,115,101,114,108,105,98,
+101,114,97,108,125,32,99,97,116,99,104,80,114,111,106,101,99,116,101,120,97,109,
+112,108,101,104,105,100,101,40,41,59,70,108,111,114,105,100,97,97,110,115,119,
+101,114,115,97,108,108,111,119,101,100,69,109,112,101,114,111,114,100,101,102,
+101,110,115,101,115,101,114,105,111,117,115,102,114,101,101,100,111,109,83,101,
+118,101,114,97,108,45,98,117,116,116,111,110,70,117,114,116,104,101,114,111,117,
+116,32,111,102,32,33,61,32,110,117,108,108,116,114,97,105,110,101,100,68,101,110
+,109,97,114,107,118,111,105,100,40,48,41,47,97,108,108,46,106,115,112,114,101,
+118,101,110,116,82,101,113,117,101,115,116,83,116,101,112,104,101,110,10,10,87,
+104,101,110,32,111,98,115,101,114,118,101,60,47,104,50,62,13,10,77,111,100,101,
+114,110,32,112,114,111,118,105,100,101,34,32,97,108,116,61,34,98,111,114,100,101
+,114,115,46,10,10,70,111,114,32,10,10,77,97,110,121,32,97,114,116,105,115,116,
+115,112,111,119,101,114,101,100,112,101,114,102,111,114,109,102,105,99,116,105,
+111,110,116,121,112,101,32,111,102,109,101,100,105,99,97,108,116,105,99,107,101,
+116,115,111,112,112,111,115,101,100,67,111,117,110,99,105,108,119,105,116,110,
+101,115,115,106,117,115,116,105,99,101,71,101,111,114,103,101,32,66,101,108,103,
+105,117,109,46,46,46,60,47,97,62,116,119,105,116,116,101,114,110,111,116,97,98,
+108,121,119,97,105,116,105,110,103,119,97,114,102,97,114,101,32,79,116,104,101,
+114,32,114,97,110,107,105,110,103,112,104,114,97,115,101,115,109,101,110,116,105
+,111,110,115,117,114,118,105,118,101,115,99,104,111,108,97,114,60,47,112,62,13,
+10,32,67,111,117,110,116,114,121,105,103,110,111,114,101,100,108,111,115,115,32,
+111,102,106,117,115,116,32,97,115,71,101,111,114,103,105,97,115,116,114,97,110,
+103,101,60,104,101,97,100,62,60,115,116,111,112,112,101,100,49,39,93,41,59,13,10
+,105,115,108,97,110,100,115,110,111,116,97,98,108,101,98,111,114,100,101,114,58,
+108,105,115,116,32,111,102,99,97,114,114,105,101,100,49,48,48,44,48,48,48,60,47,
+104,51,62,10,32,115,101,118,101,114,97,108,98,101,99,111,109,101,115,115,101,108
+,101,99,116,32,119,101,100,100,105,110,103,48,48,46,104,116,109,108,109,111,110,
+97,114,99,104,111,102,102,32,116,104,101,116,101,97,99,104,101,114,104,105,103,
+104,108,121,32,98,105,111,108,111,103,121,108,105,102,101,32,111,102,111,114,32,
+101,118,101,110,114,105,115,101,32,111,102,38,114,97,113,117,111,59,112,108,117,
+115,111,110,101,104,117,110,116,105,110,103,40,116,104,111,117,103,104,68,111,
+117,103,108,97,115,106,111,105,110,105,110,103,99,105,114,99,108,101,115,70,111,
+114,32,116,104,101,65,110,99,105,101,110,116,86,105,101,116,110,97,109,118,101,
+104,105,99,108,101,115,117,99,104,32,97,115,99,114,121,115,116,97,108,118,97,108
+,117,101,32,61,87,105,110,100,111,119,115,101,110,106,111,121,101,100,97,32,115,
+109,97,108,108,97,115,115,117,109,101,100,60,97,32,105,100,61,34,102,111,114,101
+,105,103,110,32,65,108,108,32,114,105,104,111,119,32,116,104,101,68,105,115,112,
+108,97,121,114,101,116,105,114,101,100,104,111,119,101,118,101,114,104,105,100,
+100,101,110,59,98,97,116,116,108,101,115,115,101,101,107,105,110,103,99,97,98,
+105,110,101,116,119,97,115,32,110,111,116,108,111,111,107,32,97,116,99,111,110,
+100,117,99,116,103,101,116,32,116,104,101,74,97,110,117,97,114,121,104,97,112,
+112,101,110,115,116,117,114,110,105,110,103,97,58,104,111,118,101,114,79,110,108
+,105,110,101,32,70,114,101,110,99,104,32,108,97,99,107,105,110,103,116,121,112,
+105,99,97,108,101,120,116,114,97,99,116,101,110,101,109,105,101,115,101,118,101,
+110,32,105,102,103,101,110,101,114,97,116,100,101,99,105,100,101,100,97,114,101,
+32,110,111,116,47,115,101,97,114,99,104,98,101,108,105,101,102,115,45,105,109,97
+,103,101,58,108,111,99,97,116,101,100,115,116,97,116,105,99,46,108,111,103,105,
+110,34,62,99,111,110,118,101,114,116,118,105,111,108,101,110,116,101,110,116,101
+,114,101,100,102,105,114,115,116,34,62,99,105,114,99,117,105,116,70,105,110,108,
+97,110,100,99,104,101,109,105,115,116,115,104,101,32,119,97,115,49,48,112,120,59
+,34,62,97,115,32,115,117,99,104,100,105,118,105,100,101,100,60,47,115,112,97,110
+,62,119,105,108,108,32,98,101,108,105,110,101,32,111,102,97,32,103,114,101,97,
+116,109,121,115,116,101,114,121,47,105,110,100,101,120,46,102,97,108,108,105,110
+,103,100,117,101,32,116,111,32,114,97,105,108,119,97,121,99,111,108,108,101,103,
+101,109,111,110,115,116,101,114,100,101,115,99,101,110,116,105,116,32,119,105,
+116,104,110,117,99,108,101,97,114,74,101,119,105,115,104,32,112,114,111,116,101,
+115,116,66,114,105,116,105,115,104,102,108,111,119,101,114,115,112,114,101,100,
+105,99,116,114,101,102,111,114,109,115,98,117,116,116,111,110,32,119,104,111,32,
+119,97,115,108,101,99,116,117,114,101,105,110,115,116,97,110,116,115,117,105,99,
+105,100,101,103,101,110,101,114,105,99,112,101,114,105,111,100,115,109,97,114,
+107,101,116,115,83,111,99,105,97,108,32,102,105,115,104,105,110,103,99,111,109,
+98,105,110,101,103,114,97,112,104,105,99,119,105,110,110,101,114,115,60,98,114,
+32,47,62,60,98,121,32,116,104,101,32,78,97,116,117,114,97,108,80,114,105,118,97,
+99,121,99,111,111,107,105,101,115,111,117,116,99,111,109,101,114,101,115,111,108
+,118,101,83,119,101,100,105,115,104,98,114,105,101,102,108,121,80,101,114,115,
+105,97,110,115,111,32,109,117,99,104,67,101,110,116,117,114,121,100,101,112,105,
+99,116,115,99,111,108,117,109,110,115,104,111,117,115,105,110,103,115,99,114,105
+,112,116,115,110,101,120,116,32,116,111,98,101,97,114,105,110,103,109,97,112,112
+,105,110,103,114,101,118,105,115,101,100,106,81,117,101,114,121,40,45,119,105,
+100,116,104,58,116,105,116,108,101,34,62,116,111,111,108,116,105,112,83,101,99,
+116,105,111,110,100,101,115,105,103,110,115,84,117,114,107,105,115,104,121,111,
+117,110,103,101,114,46,109,97,116,99,104,40,125,41,40,41,59,10,10,98,117,114,110
+,105,110,103,111,112,101,114,97,116,101,100,101,103,114,101,101,115,115,111,117,
+114,99,101,61,82,105,99,104,97,114,100,99,108,111,115,101,108,121,112,108,97,115
+,116,105,99,101,110,116,114,105,101,115,60,47,116,114,62,13,10,99,111,108,111,
+114,58,35,117,108,32,105,100,61,34,112,111,115,115,101,115,115,114,111,108,108,
+105,110,103,112,104,121,115,105,99,115,102,97,105,108,105,110,103,101,120,101,99
+,117,116,101,99,111,110,116,101,115,116,108,105,110,107,32,116,111,68,101,102,97
+,117,108,116,60,98,114,32,47,62,10,58,32,116,114,117,101,44,99,104,97,114,116,
+101,114,116,111,117,114,105,115,109,99,108,97,115,115,105,99,112,114,111,99,101,
+101,100,101,120,112,108,97,105,110,60,47,104,49,62,13,10,111,110,108,105,110,101
+,46,63,120,109,108,32,118,101,104,101,108,112,105,110,103,100,105,97,109,111,110
+,100,117,115,101,32,116,104,101,97,105,114,108,105,110,101,101,110,100,32,45,45,
+62,41,46,97,116,116,114,40,114,101,97,100,101,114,115,104,111,115,116,105,110,
+103,35,102,102,102,102,102,102,114,101,97,108,105,122,101,86,105,110,99,101,110,
+116,115,105,103,110,97,108,115,32,115,114,99,61,34,47,80,114,111,100,117,99,116,
+100,101,115,112,105,116,101,100,105,118,101,114,115,101,116,101,108,108,105,110,
+103,80,117,98,108,105,99,32,104,101,108,100,32,105,110,74,111,115,101,112,104,32
+,116,104,101,97,116,114,101,97,102,102,101,99,116,115,60,115,116,121,108,101,62,
+97,32,108,97,114,103,101,100,111,101,115,110,39,116,108,97,116,101,114,44,32,69,
+108,101,109,101,110,116,102,97,118,105,99,111,110,99,114,101,97,116,111,114,72,
+117,110,103,97,114,121,65,105,114,112,111,114,116,115,101,101,32,116,104,101,115
+,111,32,116,104,97,116,77,105,99,104,97,101,108,83,121,115,116,101,109,115,80,
+114,111,103,114,97,109,115,44,32,97,110,100,32,32,119,105,100,116,104,61,101,38,
+113,117,111,116,59,116,114,97,100,105,110,103,108,101,102,116,34,62,10,112,101,
+114,115,111,110,115,71,111,108,100,101,110,32,65,102,102,97,105,114,115,103,114,
+97,109,109,97,114,102,111,114,109,105,110,103,100,101,115,116,114,111,121,105,
+100,101,97,32,111,102,99,97,115,101,32,111,102,111,108,100,101,115,116,32,116,
+104,105,115,32,105,115,46,115,114,99,32,61,32,99,97,114,116,111,111,110,114,101,
+103,105,115,116,114,67,111,109,109,111,110,115,77,117,115,108,105,109,115,87,104
+,97,116,32,105,115,105,110,32,109,97,110,121,109,97,114,107,105,110,103,114,101,
+118,101,97,108,115,73,110,100,101,101,100,44,101,113,117,97,108,108,121,47,115,
+104,111,119,95,97,111,117,116,100,111,111,114,101,115,99,97,112,101,40,65,117,
+115,116,114,105,97,103,101,110,101,116,105,99,115,121,115,116,101,109,44,73,110,
+32,116,104,101,32,115,105,116,116,105,110,103,72,101,32,97,108,115,111,73,115,
+108,97,110,100,115,65,99,97,100,101,109,121,10,9,9,60,33,45,45,68,97,110,105,101
+,108,32,98,105,110,100,105,110,103,98,108,111,99,107,34,62,105,109,112,111,115,
+101,100,117,116,105,108,105,122,101,65,98,114,97,104,97,109,40,101,120,99,101,
+112,116,123,119,105,100,116,104,58,112,117,116,116,105,110,103,41,46,104,116,109
+,108,40,124,124,32,91,93,59,10,68,65,84,65,91,32,42,107,105,116,99,104,101,110,
+109,111,117,110,116,101,100,97,99,116,117,97,108,32,100,105,97,108,101,99,116,
+109,97,105,110,108,121,32,95,98,108,97,110,107,39,105,110,115,116,97,108,108,101
+,120,112,101,114,116,115,105,102,40,116,121,112,101,73,116,32,97,108,115,111,38,
+99,111,112,121,59,32,34,62,84,101,114,109,115,98,111,114,110,32,105,110,79,112,
+116,105,111,110,115,101,97,115,116,101,114,110,116,97,108,107,105,110,103,99,111
+,110,99,101,114,110,103,97,105,110,101,100,32,111,110,103,111,105,110,103,106,
+117,115,116,105,102,121,99,114,105,116,105,99,115,102,97,99,116,111,114,121,105,
+116,115,32,111,119,110,97,115,115,97,117,108,116,105,110,118,105,116,101,100,108
+,97,115,116,105,110,103,104,105,115,32,111,119,110,104,114,101,102,61,34,47,34,
+32,114,101,108,61,34,100,101,118,101,108,111,112,99,111,110,99,101,114,116,100,
+105,97,103,114,97,109,100,111,108,108,97,114,115,99,108,117,115,116,101,114,112,
+104,112,63,105,100,61,97,108,99,111,104,111,108,41,59,125,41,40,41,59,117,115,
+105,110,103,32,97,62,60,115,112,97,110,62,118,101,115,115,101,108,115,114,101,
+118,105,118,97,108,65,100,100,114,101,115,115,97,109,97,116,101,117,114,97,110,
+100,114,111,105,100,97,108,108,101,103,101,100,105,108,108,110,101,115,115,119,
+97,108,107,105,110,103,99,101,110,116,101,114,115,113,117,97,108,105,102,121,109
+,97,116,99,104,101,115,117,110,105,102,105,101,100,101,120,116,105,110,99,116,68
+,101,102,101,110,115,101,100,105,101,100,32,105,110,10,9,60,33,45,45,32,99,117,
+115,116,111,109,115,108,105,110,107,105,110,103,76,105,116,116,108,101,32,66,111
+,111,107,32,111,102,101,118,101,110,105,110,103,109,105,110,46,106,115,63,97,114
+,101,32,116,104,101,107,111,110,116,97,107,116,116,111,100,97,121,39,115,46,104,
+116,109,108,34,32,116,97,114,103,101,116,61,119,101,97,114,105,110,103,65,108,
+108,32,82,105,103,59,10,125,41,40,41,59,114,97,105,115,105,110,103,32,65,108,115
+,111,44,32,99,114,117,99,105,97,108,97,98,111,117,116,34,62,100,101,99,108,97,
+114,101,45,45,62,10,60,115,99,102,105,114,101,102,111,120,97,115,32,109,117,99,
+104,97,112,112,108,105,101,115,105,110,100,101,120,44,32,115,44,32,98,117,116,32
+,116,121,112,101,32,61,32,10,13,10,60,33,45,45,116,111,119,97,114,100,115,82,101
+,99,111,114,100,115,80,114,105,118,97,116,101,70,111,114,101,105,103,110,80,114,
+101,109,105,101,114,99,104,111,105,99,101,115,86,105,114,116,117,97,108,114,101,
+116,117,114,110,115,67,111,109,109,101,110,116,80,111,119,101,114,101,100,105,
+110,108,105,110,101,59,112,111,118,101,114,116,121,99,104,97,109,98,101,114,76,
+105,118,105,110,103,32,118,111,108,117,109,101,115,65,110,116,104,111,110,121,
+108,111,103,105,110,34,32,82,101,108,97,116,101,100,69,99,111,110,111,109,121,
+114,101,97,99,104,101,115,99,117,116,116,105,110,103,103,114,97,118,105,116,121,
+108,105,102,101,32,105,110,67,104,97,112,116,101,114,45,115,104,97,100,111,119,
+78,111,116,97,98,108,101,60,47,116,100,62,13,10,32,114,101,116,117,114,110,115,
+116,97,100,105,117,109,119,105,100,103,101,116,115,118,97,114,121,105,110,103,
+116,114,97,118,101,108,115,104,101,108,100,32,98,121,119,104,111,32,97,114,101,
+119,111,114,107,32,105,110,102,97,99,117,108,116,121,97,110,103,117,108,97,114,
+119,104,111,32,104,97,100,97,105,114,112,111,114,116,116,111,119,110,32,111,102,
+10,10,83,111,109,101,32,39,99,108,105,99,107,39,99,104,97,114,103,101,115,107,
+101,121,119,111,114,100,105,116,32,119,105,108,108,99,105,116,121,32,111,102,40,
+116,104,105,115,41,59,65,110,100,114,101,119,32,117,110,105,113,117,101,32,99,
+104,101,99,107,101,100,111,114,32,109,111,114,101,51,48,48,112,120,59,32,114,101
+,116,117,114,110,59,114,115,105,111,110,61,34,112,108,117,103,105,110,115,119,
+105,116,104,105,110,32,104,101,114,115,101,108,102,83,116,97,116,105,111,110,70,
+101,100,101,114,97,108,118,101,110,116,117,114,101,112,117,98,108,105,115,104,
+115,101,110,116,32,116,111,116,101,110,115,105,111,110,97,99,116,114,101,115,115
+,99,111,109,101,32,116,111,102,105,110,103,101,114,115,68,117,107,101,32,111,102
+,112,101,111,112,108,101,44,101,120,112,108,111,105,116,119,104,97,116,32,105,
+115,104,97,114,109,111,110,121,97,32,109,97,106,111,114,34,58,34,104,116,116,112
+,105,110,32,104,105,115,32,109,101,110,117,34,62,10,109,111,110,116,104,108,121,
+111,102,102,105,99,101,114,99,111,117,110,99,105,108,103,97,105,110,105,110,103,
+101,118,101,110,32,105,110,83,117,109,109,97,114,121,100,97,116,101,32,111,102,
+108,111,121,97,108,116,121,102,105,116,110,101,115,115,97,110,100,32,119,97,115,
+101,109,112,101,114,111,114,115,117,112,114,101,109,101,83,101,99,111,110,100,32
+,104,101,97,114,105,110,103,82,117,115,115,105,97,110,108,111,110,103,101,115,
+116,65,108,98,101,114,116,97,108,97,116,101,114,97,108,115,101,116,32,111,102,32
+,115,109,97,108,108,34,62,46,97,112,112,101,110,100,100,111,32,119,105,116,104,
+102,101,100,101,114,97,108,98,97,110,107,32,111,102,98,101,110,101,97,116,104,68
+,101,115,112,105,116,101,67,97,112,105,116,97,108,103,114,111,117,110,100,115,41
+,44,32,97,110,100,32,112,101,114,99,101,110,116,105,116,32,102,114,111,109,99,
+108,111,115,105,110,103,99,111,110,116,97,105,110,73,110,115,116,101,97,100,102,
+105,102,116,101,101,110,97,115,32,119,101,108,108,46,121,97,104,111,111,46,114,
+101,115,112,111,110,100,102,105,103,104,116,101,114,111,98,115,99,117,114,101,
+114,101,102,108,101,99,116,111,114,103,97,110,105,99,61,32,77,97,116,104,46,101,
+100,105,116,105,110,103,111,110,108,105,110,101,32,112,97,100,100,105,110,103,97
+,32,119,104,111,108,101,111,110,101,114,114,111,114,121,101,97,114,32,111,102,
+101,110,100,32,111,102,32,98,97,114,114,105,101,114,119,104,101,110,32,105,116,
+104,101,97,100,101,114,32,104,111,109,101,32,111,102,114,101,115,117,109,101,100
+,114,101,110,97,109,101,100,115,116,114,111,110,103,62,104,101,97,116,105,110,
+103,114,101,116,97,105,110,115,99,108,111,117,100,102,114,119,97,121,32,111,102,
+32,77,97,114,99,104,32,49,107,110,111,119,105,110,103,105,110,32,112,97,114,116,
+66,101,116,119,101,101,110,108,101,115,115,111,110,115,99,108,111,115,101,115,
+116,118,105,114,116,117,97,108,108,105,110,107,115,34,62,99,114,111,115,115,101,
+100,69,78,68,32,45,45,62,102,97,109,111,117,115,32,97,119,97,114,100,101,100,76,
+105,99,101,110,115,101,72,101,97,108,116,104,32,102,97,105,114,108,121,32,119,
+101,97,108,116,104,121,109,105,110,105,109,97,108,65,102,114,105,99,97,110,99,
+111,109,112,101,116,101,108,97,98,101,108,34,62,115,105,110,103,105,110,103,102,
+97,114,109,101,114,115,66,114,97,115,105,108,41,100,105,115,99,117,115,115,114,
+101,112,108,97,99,101,71,114,101,103,111,114,121,102,111,110,116,32,99,111,112,
+117,114,115,117,101,100,97,112,112,101,97,114,115,109,97,107,101,32,117,112,114,
+111,117,110,100,101,100,98,111,116,104,32,111,102,98,108,111,99,107,101,100,115,
+97,119,32,116,104,101,111,102,102,105,99,101,115,99,111,108,111,117,114,115,105,
+102,40,100,111,99,117,119,104,101,110,32,104,101,101,110,102,111,114,99,101,112,
+117,115,104,40,102,117,65,117,103,117,115,116,32,85,84,70,45,56,34,62,70,97,110,
+116,97,115,121,105,110,32,109,111,115,116,105,110,106,117,114,101,100,85,115,117
+,97,108,108,121,102,97,114,109,105,110,103,99,108,111,115,117,114,101,111,98,106
+,101,99,116,32,100,101,102,101,110,99,101,117,115,101,32,111,102,32,77,101,100,
+105,99,97,108,60,98,111,100,121,62,10,101,118,105,100,101,110,116,98,101,32,117,
+115,101,100,107,101,121,67,111,100,101,115,105,120,116,101,101,110,73,115,108,97
+,109,105,99,35,48,48,48,48,48,48,101,110,116,105,114,101,32,119,105,100,101,108,
+121,32,97,99,116,105,118,101,32,40,116,121,112,101,111,102,111,110,101,32,99,97,
+110,99,111,108,111,114,32,61,115,112,101,97,107,101,114,101,120,116,101,110,100,
+115,80,104,121,115,105,99,115,116,101,114,114,97,105,110,60,116,98,111,100,121,
+62,102,117,110,101,114,97,108,118,105,101,119,105,110,103,109,105,100,100,108,
+101,32,99,114,105,99,107,101,116,112,114,111,112,104,101,116,115,104,105,102,116
+,101,100,100,111,99,116,111,114,115,82,117,115,115,101,108,108,32,116,97,114,103
+,101,116,99,111,109,112,97,99,116,97,108,103,101,98,114,97,115,111,99,105,97,108
+,45,98,117,108,107,32,111,102,109,97,110,32,97,110,100,60,47,116,100,62,10,32,
+104,101,32,108,101,102,116,41,46,118,97,108,40,41,102,97,108,115,101,41,59,108,
+111,103,105,99,97,108,98,97,110,107,105,110,103,104,111,109,101,32,116,111,110,
+97,109,105,110,103,32,65,114,105,122,111,110,97,99,114,101,100,105,116,115,41,59
+,10,125,41,59,10,102,111,117,110,100,101,114,105,110,32,116,117,114,110,67,111,
+108,108,105,110,115,98,101,102,111,114,101,32,66,117,116,32,116,104,101,99,104,
+97,114,103,101,100,84,105,116,108,101,34,62,67,97,112,116,97,105,110,115,112,101
+,108,108,101,100,103,111,100,100,101,115,115,84,97,103,32,45,45,62,65,100,100,
+105,110,103,58,98,117,116,32,119,97,115,82,101,99,101,110,116,32,112,97,116,105,
+101,110,116,98,97,99,107,32,105,110,61,102,97,108,115,101,38,76,105,110,99,111,
+108,110,119,101,32,107,110,111,119,67,111,117,110,116,101,114,74,117,100,97,105,
+115,109,115,99,114,105,112,116,32,97,108,116,101,114,101,100,39,93,41,59,10,32,
+32,104,97,115,32,116,104,101,117,110,99,108,101,97,114,69,118,101,110,116,39,44,
+98,111,116,104,32,105,110,110,111,116,32,97,108,108,10,10,60,33,45,45,32,112,108
+,97,99,105,110,103,104,97,114,100,32,116,111,32,99,101,110,116,101,114,115,111,
+114,116,32,111,102,99,108,105,101,110,116,115,115,116,114,101,101,116,115,66,101
+,114,110,97,114,100,97,115,115,101,114,116,115,116,101,110,100,32,116,111,102,97
+,110,116,97,115,121,100,111,119,110,32,105,110,104,97,114,98,111,117,114,70,114,
+101,101,100,111,109,106,101,119,101,108,114,121,47,97,98,111,117,116,46,46,115,
+101,97,114,99,104,108,101,103,101,110,100,115,105,115,32,109,97,100,101,109,111,
+100,101,114,110,32,111,110,108,121,32,111,110,111,110,108,121,32,116,111,105,109
+,97,103,101,34,32,108,105,110,101,97,114,32,112,97,105,110,116,101,114,97,110,
+100,32,110,111,116,114,97,114,101,108,121,32,97,99,114,111,110,121,109,100,101,
+108,105,118,101,114,115,104,111,114,116,101,114,48,48,38,97,109,112,59,97,115,32
+,109,97,110,121,119,105,100,116,104,61,34,47,42,32,60,33,91,67,116,105,116,108,
+101,32,61,111,102,32,116,104,101,32,108,111,119,101,115,116,32,112,105,99,107,
+101,100,32,101,115,99,97,112,101,100,117,115,101,115,32,111,102,112,101,111,112,
+108,101,115,32,80,117,98,108,105,99,77,97,116,116,104,101,119,116,97,99,116,105,
+99,115,100,97,109,97,103,101,100,119,97,121,32,102,111,114,108,97,119,115,32,111
+,102,101,97,115,121,32,116,111,32,119,105,110,100,111,119,115,116,114,111,110,
+103,32,32,115,105,109,112,108,101,125,99,97,116,99,104,40,115,101,118,101,110,
+116,104,105,110,102,111,98,111,120,119,101,110,116,32,116,111,112,97,105,110,116
+,101,100,99,105,116,105,122,101,110,73,32,100,111,110,39,116,114,101,116,114,101
+,97,116,46,32,83,111,109,101,32,119,119,46,34,41,59,10,98,111,109,98,105,110,103
+,109,97,105,108,116,111,58,109,97,100,101,32,105,110,46,32,77,97,110,121,32,99,
+97,114,114,105,101,115,124,124,123,125,59,119,105,119,111,114,107,32,111,102,115
+,121,110,111,110,121,109,100,101,102,101,97,116,115,102,97,118,111,114,101,100,
+111,112,116,105,99,97,108,112,97,103,101,84,114,97,117,110,108,101,115,115,32,
+115,101,110,100,105,110,103,108,101,102,116,34,62,60,99,111,109,83,99,111,114,65
+,108,108,32,116,104,101,106,81,117,101,114,121,46,116,111,117,114,105,115,116,67
+,108,97,115,115,105,99,102,97,108,115,101,34,32,87,105,108,104,101,108,109,115,
+117,98,117,114,98,115,103,101,110,117,105,110,101,98,105,115,104,111,112,115,46,
+115,112,108,105,116,40,103,108,111,98,97,108,32,102,111,108,108,111,119,115,98,
+111,100,121,32,111,102,110,111,109,105,110,97,108,67,111,110,116,97,99,116,115,
+101,99,117,108,97,114,108,101,102,116,32,116,111,99,104,105,101,102,108,121,45,
+104,105,100,100,101,110,45,98,97,110,110,101,114,60,47,108,105,62,10,10,46,32,87
+,104,101,110,32,105,110,32,98,111,116,104,100,105,115,109,105,115,115,69,120,112
+,108,111,114,101,97,108,119,97,121,115,32,118,105,97,32,116,104,101,115,112,97,
+195,177,111,108,119,101,108,102,97,114,101,114,117,108,105,110,103,32,97,114,114
+,97,110,103,101,99,97,112,116,97,105,110,104,105,115,32,115,111,110,114,117,108,
+101,32,111,102,104,101,32,116,111,111,107,105,116,115,101,108,102,44,61,48,38,97
+,109,112,59,40,99,97,108,108,101,100,115,97,109,112,108,101,115,116,111,32,109,
+97,107,101,99,111,109,47,112,97,103,77,97,114,116,105,110,32,75,101,110,110,101,
+100,121,97,99,99,101,112,116,115,102,117,108,108,32,111,102,104,97,110,100,108,
+101,100,66,101,115,105,100,101,115,47,47,45,45,62,60,47,97,98,108,101,32,116,111
+,116,97,114,103,101,116,115,101,115,115,101,110,99,101,104,105,109,32,116,111,32
+,105,116,115,32,98,121,32,99,111,109,109,111,110,46,109,105,110,101,114,97,108,
+116,111,32,116,97,107,101,119,97,121,115,32,116,111,115,46,111,114,103,47,108,97
+,100,118,105,115,101,100,112,101,110,97,108,116,121,115,105,109,112,108,101,58,
+105,102,32,116,104,101,121,76,101,116,116,101,114,115,97,32,115,104,111,114,116,
+72,101,114,98,101,114,116,115,116,114,105,107,101,115,32,103,114,111,117,112,115
+,46,108,101,110,103,116,104,102,108,105,103,104,116,115,111,118,101,114,108,97,
+112,115,108,111,119,108,121,32,108,101,115,115,101,114,32,115,111,99,105,97,108,
+32,60,47,112,62,10,9,9,105,116,32,105,110,116,111,114,97,110,107,101,100,32,114,
+97,116,101,32,111,102,117,108,62,13,10,32,32,97,116,116,101,109,112,116,112,97,
+105,114,32,111,102,109,97,107,101,32,105,116,75,111,110,116,97,107,116,65,110,
+116,111,110,105,111,104,97,118,105,110,103,32,114,97,116,105,110,103,115,32,97,
+99,116,105,118,101,115,116,114,101,97,109,115,116,114,97,112,112,101,100,34,41,
+46,99,115,115,40,104,111,115,116,105,108,101,108,101,97,100,32,116,111,108,105,
+116,116,108,101,32,103,114,111,117,112,115,44,80,105,99,116,117,114,101,45,45,62
+,13,10,13,10,32,114,111,119,115,61,34,32,111,98,106,101,99,116,105,110,118,101,
+114,115,101,60,102,111,111,116,101,114,67,117,115,116,111,109,86,62,60,92,47,115
+,99,114,115,111,108,118,105,110,103,67,104,97,109,98,101,114,115,108,97,118,101,
+114,121,119,111,117,110,100,101,100,119,104,101,114,101,97,115,33,61,32,39,117,
+110,100,102,111,114,32,97,108,108,112,97,114,116,108,121,32,45,114,105,103,104,
+116,58,65,114,97,98,105,97,110,98,97,99,107,101,100,32,99,101,110,116,117,114,
+121,117,110,105,116,32,111,102,109,111,98,105,108,101,45,69,117,114,111,112,101,
+44,105,115,32,104,111,109,101,114,105,115,107,32,111,102,100,101,115,105,114,101
+,100,67,108,105,110,116,111,110,99,111,115,116,32,111,102,97,103,101,32,111,102,
+32,98,101,99,111,109,101,32,110,111,110,101,32,111,102,112,38,113,117,111,116,59
+,77,105,100,100,108,101,32,101,97,100,39,41,91,48,67,114,105,116,105,99,115,115,
+116,117,100,105,111,115,62,38,99,111,112,121,59,103,114,111,117,112,34,62,97,115
+,115,101,109,98,108,109,97,107,105,110,103,32,112,114,101,115,115,101,100,119,
+105,100,103,101,116,46,112,115,58,34,32,63,32,114,101,98,117,105,108,116,98,121,
+32,115,111,109,101,70,111,114,109,101,114,32,101,100,105,116,111,114,115,100,101
+,108,97,121,101,100,67,97,110,111,110,105,99,104,97,100,32,116,104,101,112,117,
+115,104,105,110,103,99,108,97,115,115,61,34,98,117,116,32,97,114,101,112,97,114,
+116,105,97,108,66,97,98,121,108,111,110,98,111,116,116,111,109,32,99,97,114,114,
+105,101,114,67,111,109,109,97,110,100,105,116,115,32,117,115,101,65,115,32,119,
+105,116,104,99,111,117,114,115,101,115,97,32,116,104,105,114,100,100,101,110,111
+,116,101,115,97,108,115,111,32,105,110,72,111,117,115,116,111,110,50,48,112,120,
+59,34,62,97,99,99,117,115,101,100,100,111,117,98,108,101,32,103,111,97,108,32,
+111,102,70,97,109,111,117,115,32,41,46,98,105,110,100,40,112,114,105,101,115,116
+,115,32,79,110,108,105,110,101,105,110,32,74,117,108,121,115,116,32,43,32,34,103
+,99,111,110,115,117,108,116,100,101,99,105,109,97,108,104,101,108,112,102,117,
+108,114,101,118,105,118,101,100,105,115,32,118,101,114,121,114,39,43,39,105,112,
+116,108,111,115,105,110,103,32,102,101,109,97,108,101,115,105,115,32,97,108,115,
+111,115,116,114,105,110,103,115,100,97,121,115,32,111,102,97,114,114,105,118,97,
+108,102,117,116,117,114,101,32,60,111,98,106,101,99,116,102,111,114,99,105,110,
+103,83,116,114,105,110,103,40,34,32,47,62,10,9,9,104,101,114,101,32,105,115,101,
+110,99,111,100,101,100,46,32,32,84,104,101,32,98,97,108,108,111,111,110,100,111,
+110,101,32,98,121,47,99,111,109,109,111,110,98,103,99,111,108,111,114,108,97,119
+,32,111,102,32,73,110,100,105,97,110,97,97,118,111,105,100,101,100,98,117,116,32
+,116,104,101,50,112,120,32,51,112,120,106,113,117,101,114,121,46,97,102,116,101,
+114,32,97,112,111,108,105,99,121,46,109,101,110,32,97,110,100,102,111,111,116,
+101,114,45,61,32,116,114,117,101,59,102,111,114,32,117,115,101,115,99,114,101,
+101,110,46,73,110,100,105,97,110,32,105,109,97,103,101,32,61,102,97,109,105,108,
+121,44,104,116,116,112,58,47,47,32,38,110,98,115,112,59,100,114,105,118,101,114,
+115,101,116,101,114,110,97,108,115,97,109,101,32,97,115,110,111,116,105,99,101,
+100,118,105,101,119,101,114,115,125,41,40,41,59,10,32,105,115,32,109,111,114,101
+,115,101,97,115,111,110,115,102,111,114,109,101,114,32,116,104,101,32,110,101,
+119,105,115,32,106,117,115,116,99,111,110,115,101,110,116,32,83,101,97,114,99,
+104,119,97,115,32,116,104,101,119,104,121,32,116,104,101,115,104,105,112,112,101
+,100,98,114,62,60,98,114,62,119,105,100,116,104,58,32,104,101,105,103,104,116,61
+,109,97,100,101,32,111,102,99,117,105,115,105,110,101,105,115,32,116,104,97,116,
+97,32,118,101,114,121,32,65,100,109,105,114,97,108,32,102,105,120,101,100,59,110
+,111,114,109,97,108,32,77,105,115,115,105,111,110,80,114,101,115,115,44,32,111,
+110,116,97,114,105,111,99,104,97,114,115,101,116,116,114,121,32,116,111,32,105,
+110,118,97,100,101,100,61,34,116,114,117,101,34,115,112,97,99,105,110,103,105,
+115,32,109,111,115,116,97,32,109,111,114,101,32,116,111,116,97,108,108,121,102,
+97,108,108,32,111,102,125,41,59,13,10,32,32,105,109,109,101,110,115,101,116,105,
+109,101,32,105,110,115,101,116,32,111,117,116,115,97,116,105,115,102,121,116,111
+,32,102,105,110,100,100,111,119,110,32,116,111,108,111,116,32,111,102,32,80,108,
+97,121,101,114,115,105,110,32,74,117,110,101,113,117,97,110,116,117,109,110,111,
+116,32,116,104,101,116,105,109,101,32,116,111,100,105,115,116,97,110,116,70,105,
+110,110,105,115,104,115,114,99,32,61,32,40,115,105,110,103,108,101,32,104,101,
+108,112,32,111,102,71,101,114,109,97,110,32,108,97,119,32,97,110,100,108,97,98,
+101,108,101,100,102,111,114,101,115,116,115,99,111,111,107,105,110,103,115,112,
+97,99,101,34,62,104,101,97,100,101,114,45,119,101,108,108,32,97,115,83,116,97,
+110,108,101,121,98,114,105,100,103,101,115,47,103,108,111,98,97,108,67,114,111,
+97,116,105,97,32,65,98,111,117,116,32,91,48,93,59,10,32,32,105,116,44,32,97,110,
+100,103,114,111,117,112,101,100,98,101,105,110,103,32,97,41,123,116,104,114,111,
+119,104,101,32,109,97,100,101,108,105,103,104,116,101,114,101,116,104,105,99,97,
+108,70,70,70,70,70,70,34,98,111,116,116,111,109,34,108,105,107,101,32,97,32,101,
+109,112,108,111,121,115,108,105,118,101,32,105,110,97,115,32,115,101,101,110,112
+,114,105,110,116,101,114,109,111,115,116,32,111,102,117,98,45,108,105,110,107,
+114,101,106,101,99,116,115,97,110,100,32,117,115,101,105,109,97,103,101,34,62,
+115,117,99,99,101,101,100,102,101,101,100,105,110,103,78,117,99,108,101,97,114,
+105,110,102,111,114,109,97,116,111,32,104,101,108,112,87,111,109,101,110,39,115,
+78,101,105,116,104,101,114,77,101,120,105,99,97,110,112,114,111,116,101,105,110,
+60,116,97,98,108,101,32,98,121,32,109,97,110,121,104,101,97,108,116,104,121,108,
+97,119,115,117,105,116,100,101,118,105,115,101,100,46,112,117,115,104,40,123,115
+,101,108,108,101,114,115,115,105,109,112,108,121,32,84,104,114,111,117,103,104,
+46,99,111,111,107,105,101,32,73,109,97,103,101,40,111,108,100,101,114,34,62,117,
+115,46,106,115,34,62,32,83,105,110,99,101,32,117,110,105,118,101,114,115,108,97,
+114,103,101,114,32,111,112,101,110,32,116,111,33,45,45,32,101,110,100,108,105,
+101,115,32,105,110,39,93,41,59,13,10,32,32,109,97,114,107,101,116,119,104,111,32
+,105,115,32,40,34,68,79,77,67,111,109,97,110,97,103,101,100,111,110,101,32,102,
+111,114,116,121,112,101,111,102,32,75,105,110,103,100,111,109,112,114,111,102,
+105,116,115,112,114,111,112,111,115,101,116,111,32,115,104,111,119,99,101,110,
+116,101,114,59,109,97,100,101,32,105,116,100,114,101,115,115,101,100,119,101,114
+,101,32,105,110,109,105,120,116,117,114,101,112,114,101,99,105,115,101,97,114,
+105,115,105,110,103,115,114,99,32,61,32,39,109,97,107,101,32,97,32,115,101,99,
+117,114,101,100,66,97,112,116,105,115,116,118,111,116,105,110,103,32,10,9,9,118,
+97,114,32,77,97,114,99,104,32,50,103,114,101,119,32,117,112,67,108,105,109,97,
+116,101,46,114,101,109,111,118,101,115,107,105,108,108,101,100,119,97,121,32,116
+,104,101,60,47,104,101,97,100,62,102,97,99,101,32,111,102,97,99,116,105,110,103,
+32,114,105,103,104,116,34,62,116,111,32,119,111,114,107,114,101,100,117,99,101,
+115,104,97,115,32,104,97,100,101,114,101,99,116,101,100,115,104,111,119,40,41,59
+,97,99,116,105,111,110,61,98,111,111,107,32,111,102,97,110,32,97,114,101,97,61,
+61,32,34,104,116,116,60,104,101,97,100,101,114,10,60,104,116,109,108,62,99,111,
+110,102,111,114,109,102,97,99,105,110,103,32,99,111,111,107,105,101,46,114,101,
+108,121,32,111,110,104,111,115,116,101,100,32,46,99,117,115,116,111,109,104,101,
+32,119,101,110,116,98,117,116,32,102,111,114,115,112,114,101,97,100,32,70,97,109
+,105,108,121,32,97,32,109,101,97,110,115,111,117,116,32,116,104,101,102,111,114,
+117,109,115,46,102,111,111,116,97,103,101,34,62,77,111,98,105,108,67,108,101,109
+,101,110,116,115,34,32,105,100,61,34,97,115,32,104,105,103,104,105,110,116,101,
+110,115,101,45,45,62,60,33,45,45,102,101,109,97,108,101,32,105,115,32,115,101,
+101,110,105,109,112,108,105,101,100,115,101,116,32,116,104,101,97,32,115,116,97,
+116,101,97,110,100,32,104,105,115,102,97,115,116,101,115,116,98,101,115,105,100,
+101,115,98,117,116,116,111,110,95,98,111,117,110,100,101,100,34,62,60,105,109,
+103,32,73,110,102,111,98,111,120,101,118,101,110,116,115,44,97,32,121,111,117,
+110,103,97,110,100,32,97,114,101,78,97,116,105,118,101,32,99,104,101,97,112,101,
+114,84,105,109,101,111,117,116,97,110,100,32,104,97,115,101,110,103,105,110,101,
+115,119,111,110,32,116,104,101,40,109,111,115,116,108,121,114,105,103,104,116,58
+,32,102,105,110,100,32,97,32,45,98,111,116,116,111,109,80,114,105,110,99,101,32,
+97,114,101,97,32,111,102,109,111,114,101,32,111,102,115,101,97,114,99,104,95,110
+,97,116,117,114,101,44,108,101,103,97,108,108,121,112,101,114,105,111,100,44,108
+,97,110,100,32,111,102,111,114,32,119,105,116,104,105,110,100,117,99,101,100,112
+,114,111,118,105,110,103,109,105,115,115,105,108,101,108,111,99,97,108,108,121,
+65,103,97,105,110,115,116,116,104,101,32,119,97,121,107,38,113,117,111,116,59,
+112,120,59,34,62,13,10,112,117,115,104,101,100,32,97,98,97,110,100,111,110,110,
+117,109,101,114,97,108,67,101,114,116,97,105,110,73,110,32,116,104,105,115,109,
+111,114,101,32,105,110,111,114,32,115,111,109,101,110,97,109,101,32,105,115,97,
+110,100,44,32,105,110,99,114,111,119,110,101,100,73,83,66,78,32,48,45,99,114,101
+,97,116,101,115,79,99,116,111,98,101,114,109,97,121,32,110,111,116,99,101,110,
+116,101,114,32,108,97,116,101,32,105,110,68,101,102,101,110,99,101,101,110,97,99
+,116,101,100,119,105,115,104,32,116,111,98,114,111,97,100,108,121,99,111,111,108
+,105,110,103,111,110,108,111,97,100,61,105,116,46,32,84,104,101,114,101,99,111,
+118,101,114,77,101,109,98,101,114,115,104,101,105,103,104,116,32,97,115,115,117,
+109,101,115,60,104,116,109,108,62,10,112,101,111,112,108,101,46,105,110,32,111,
+110,101,32,61,119,105,110,100,111,119,102,111,111,116,101,114,95,97,32,103,111,
+111,100,32,114,101,107,108,97,109,97,111,116,104,101,114,115,44,116,111,32,116,
+104,105,115,95,99,111,111,107,105,101,112,97,110,101,108,34,62,76,111,110,100,
+111,110,44,100,101,102,105,110,101,115,99,114,117,115,104,101,100,98,97,112,116,
+105,115,109,99,111,97,115,116,97,108,115,116,97,116,117,115,32,116,105,116,108,
+101,34,32,109,111,118,101,32,116,111,108,111,115,116,32,105,110,98,101,116,116,
+101,114,32,105,109,112,108,105,101,115,114,105,118,97,108,114,121,115,101,114,
+118,101,114,115,32,83,121,115,116,101,109,80,101,114,104,97,112,115,101,115,32,
+97,110,100,32,99,111,110,116,101,110,100,102,108,111,119,105,110,103,108,97,115,
+116,101,100,32,114,105,115,101,32,105,110,71,101,110,101,115,105,115,118,105,101
+,119,32,111,102,114,105,115,105,110,103,32,115,101,101,109,32,116,111,98,117,116
+,32,105,110,32,98,97,99,107,105,110,103,104,101,32,119,105,108,108,103,105,118,
+101,110,32,97,103,105,118,105,110,103,32,99,105,116,105,101,115,46,102,108,111,
+119,32,111,102,32,76,97,116,101,114,32,97,108,108,32,98,117,116,72,105,103,104,
+119,97,121,111,110,108,121,32,98,121,115,105,103,110,32,111,102,104,101,32,100,
+111,101,115,100,105,102,102,101,114,115,98,97,116,116,101,114,121,38,97,109,112,
+59,108,97,115,105,110,103,108,101,115,116,104,114,101,97,116,115,105,110,116,101
+,103,101,114,116,97,107,101,32,111,110,114,101,102,117,115,101,100,99,97,108,108
+,101,100,32,61,85,83,38,97,109,112,83,101,101,32,116,104,101,110,97,116,105,118,
+101,115,98,121,32,116,104,105,115,115,121,115,116,101,109,46,104,101,97,100,32,
+111,102,58,104,111,118,101,114,44,108,101,115,98,105,97,110,115,117,114,110,97,
+109,101,97,110,100,32,97,108,108,99,111,109,109,111,110,47,104,101,97,100,101,
+114,95,95,112,97,114,97,109,115,72,97,114,118,97,114,100,47,112,105,120,101,108,
+46,114,101,109,111,118,97,108,115,111,32,108,111,110,103,114,111,108,101,32,111,
+102,106,111,105,110,116,108,121,115,107,121,115,99,114,97,85,110,105,99,111,100,
+101,98,114,32,47,62,13,10,65,116,108,97,110,116,97,110,117,99,108,101,117,115,67
+,111,117,110,116,121,44,112,117,114,101,108,121,32,99,111,117,110,116,34,62,101,
+97,115,105,108,121,32,98,117,105,108,100,32,97,111,110,99,108,105,99,107,97,32,
+103,105,118,101,110,112,111,105,110,116,101,114,104,38,113,117,111,116,59,101,
+118,101,110,116,115,32,101,108,115,101,32,123,10,100,105,116,105,111,110,115,110
+,111,119,32,116,104,101,44,32,119,105,116,104,32,109,97,110,32,119,104,111,111,
+114,103,47,87,101,98,111,110,101,32,97,110,100,99,97,118,97,108,114,121,72,101,
+32,100,105,101,100,115,101,97,116,116,108,101,48,48,44,48,48,48,32,123,119,105,
+110,100,111,119,104,97,118,101,32,116,111,105,102,40,119,105,110,100,97,110,100,
+32,105,116,115,115,111,108,101,108,121,32,109,38,113,117,111,116,59,114,101,110,
+101,119,101,100,68,101,116,114,111,105,116,97,109,111,110,103,115,116,101,105,
+116,104,101,114,32,116,104,101,109,32,105,110,83,101,110,97,116,111,114,85,115,
+60,47,97,62,60,75,105,110,103,32,111,102,70,114,97,110,99,105,115,45,112,114,111
+,100,117,99,104,101,32,117,115,101,100,97,114,116,32,97,110,100,104,105,109,32,
+97,110,100,117,115,101,100,32,98,121,115,99,111,114,105,110,103,97,116,32,104,
+111,109,101,116,111,32,104,97,118,101,114,101,108,97,116,101,115,105,98,105,108,
+105,116,121,102,97,99,116,105,111,110,66,117,102,102,97,108,111,108,105,110,107,
+34,62,60,119,104,97,116,32,104,101,102,114,101,101,32,116,111,67,105,116,121,32,
+111,102,99,111,109,101,32,105,110,115,101,99,116,111,114,115,99,111,117,110,116,
+101,100,111,110,101,32,100,97,121,110,101,114,118,111,117,115,115,113,117,97,114
+,101,32,125,59,105,102,40,103,111,105,110,32,119,104,97,116,105,109,103,34,32,97
+,108,105,115,32,111,110,108,121,115,101,97,114,99,104,47,116,117,101,115,100,97,
+121,108,111,111,115,101,108,121,83,111,108,111,109,111,110,115,101,120,117,97,
+108,32,45,32,60,97,32,104,114,109,101,100,105,117,109,34,68,79,32,78,79,84,32,70
+,114,97,110,99,101,44,119,105,116,104,32,97,32,119,97,114,32,97,110,100,115,101,
+99,111,110,100,32,116,97,107,101,32,97,32,62,13,10,13,10,13,10,109,97,114,107,
+101,116,46,104,105,103,104,119,97,121,100,111,110,101,32,105,110,99,116,105,118,
+105,116,121,34,108,97,115,116,34,62,111,98,108,105,103,101,100,114,105,115,101,
+32,116,111,34,117,110,100,101,102,105,109,97,100,101,32,116,111,32,69,97,114,108
+,121,32,112,114,97,105,115,101,100,105,110,32,105,116,115,32,102,111,114,32,104,
+105,115,97,116,104,108,101,116,101,74,117,112,105,116,101,114,89,97,104,111,111,
+33,32,116,101,114,109,101,100,32,115,111,32,109,97,110,121,114,101,97,108,108,
+121,32,115,46,32,84,104,101,32,97,32,119,111,109,97,110,63,118,97,108,117,101,61
+,100,105,114,101,99,116,32,114,105,103,104,116,34,32,98,105,99,121,99,108,101,97
+,99,105,110,103,61,34,100,97,121,32,97,110,100,115,116,97,116,105,110,103,82,97,
+116,104,101,114,44,104,105,103,104,101,114,32,79,102,102,105,99,101,32,97,114,
+101,32,110,111,119,116,105,109,101,115,44,32,119,104,101,110,32,97,32,112,97,121
+,32,102,111,114,111,110,32,116,104,105,115,45,108,105,110,107,34,62,59,98,111,
+114,100,101,114,97,114,111,117,110,100,32,97,110,110,117,97,108,32,116,104,101,
+32,78,101,119,112,117,116,32,116,104,101,46,99,111,109,34,32,116,97,107,105,110,
+32,116,111,97,32,98,114,105,101,102,40,105,110,32,116,104,101,103,114,111,117,
+112,115,46,59,32,119,105,100,116,104,101,110,122,121,109,101,115,115,105,109,112
+,108,101,32,105,110,32,108,97,116,101,123,114,101,116,117,114,110,116,104,101,
+114,97,112,121,97,32,112,111,105,110,116,98,97,110,110,105,110,103,105,110,107,
+115,34,62,10,40,41,59,34,32,114,101,97,32,112,108,97,99,101,92,117,48,48,51,67,
+97,97,98,111,117,116,32,97,116,114,62,13,10,9,9,99,99,111,117,110,116,32,103,105
+,118,101,115,32,97,60,83,67,82,73,80,84,82,97,105,108,119,97,121,116,104,101,109
+,101,115,47,116,111,111,108,98,111,120,66,121,73,100,40,34,120,104,117,109,97,
+110,115,44,119,97,116,99,104,101,115,105,110,32,115,111,109,101,32,105,102,32,40
+,119,105,99,111,109,105,110,103,32,102,111,114,109,97,116,115,32,85,110,100,101,
+114,32,98,117,116,32,104,97,115,104,97,110,100,101,100,32,109,97,100,101,32,98,
+121,116,104,97,110,32,105,110,102,101,97,114,32,111,102,100,101,110,111,116,101,
+100,47,105,102,114,97,109,101,108,101,102,116,32,105,110,118,111,108,116,97,103,
+101,105,110,32,101,97,99,104,97,38,113,117,111,116,59,98,97,115,101,32,111,102,
+73,110,32,109,97,110,121,117,110,100,101,114,103,111,114,101,103,105,109,101,115
+,97,99,116,105,111,110,32,60,47,112,62,13,10,60,117,115,116,111,109,86,97,59,38,
+103,116,59,60,47,105,109,112,111,114,116,115,111,114,32,116,104,97,116,109,111,
+115,116,108,121,32,38,97,109,112,59,114,101,32,115,105,122,101,61,34,60,47,97,62
+,60,47,104,97,32,99,108,97,115,115,112,97,115,115,105,118,101,72,111,115,116,32,
+61,32,87,104,101,116,104,101,114,102,101,114,116,105,108,101,86,97,114,105,111,
+117,115,61,91,93,59,40,102,117,99,97,109,101,114,97,115,47,62,60,47,116,100,62,
+97,99,116,115,32,97,115,73,110,32,115,111,109,101,62,13,10,13,10,60,33,111,114,
+103,97,110,105,115,32,60,98,114,32,47,62,66,101,105,106,105,110,103,99,97,116,97
+,108,195,160,100,101,117,116,115,99,104,101,117,114,111,112,101,117,101,117,115,
+107,97,114,97,103,97,101,105,108,103,101,115,118,101,110,115,107,97,101,115,112,
+97,195,177,97,109,101,110,115,97,106,101,117,115,117,97,114,105,111,116,114,97,
+98,97,106,111,109,195,169,120,105,99,111,112,195,161,103,105,110,97,115,105,101,
+109,112,114,101,115,105,115,116,101,109,97,111,99,116,117,98,114,101,100,117,114
+,97,110,116,101,97,195,177,97,100,105,114,101,109,112,114,101,115,97,109,111,109
+,101,110,116,111,110,117,101,115,116,114,111,112,114,105,109,101,114,97,116,114,
+97,118,195,169,115,103,114,97,99,105,97,115,110,117,101,115,116,114,97,112,114,
+111,99,101,115,111,101,115,116,97,100,111,115,99,97,108,105,100,97,100,112,101,
+114,115,111,110,97,110,195,186,109,101,114,111,97,99,117,101,114,100,111,109,195
+,186,115,105,99,97,109,105,101,109,98,114,111,111,102,101,114,116,97,115,97,108,
+103,117,110,111,115,112,97,195,173,115,101,115,101,106,101,109,112,108,111,100,
+101,114,101,99,104,111,97,100,101,109,195,161,115,112,114,105,118,97,100,111,97,
+103,114,101,103,97,114,101,110,108,97,99,101,115,112,111,115,105,98,108,101,104,
+111,116,101,108,101,115,115,101,118,105,108,108,97,112,114,105,109,101,114,111,
+195,186,108,116,105,109,111,101,118,101,110,116,111,115,97,114,99,104,105,118,
+111,99,117,108,116,117,114,97,109,117,106,101,114,101,115,101,110,116,114,97,100
+,97,97,110,117,110,99,105,111,101,109,98,97,114,103,111,109,101,114,99,97,100,
+111,103,114,97,110,100,101,115,101,115,116,117,100,105,111,109,101,106,111,114,
+101,115,102,101,98,114,101,114,111,100,105,115,101,195,177,111,116,117,114,105,
+115,109,111,99,195,179,100,105,103,111,112,111,114,116,97,100,97,101,115,112,97,
+99,105,111,102,97,109,105,108,105,97,97,110,116,111,110,105,111,112,101,114,109,
+105,116,101,103,117,97,114,100,97,114,97,108,103,117,110,97,115,112,114,101,99,
+105,111,115,97,108,103,117,105,101,110,115,101,110,116,105,100,111,118,105,115,
+105,116,97,115,116,195,173,116,117,108,111,99,111,110,111,99,101,114,115,101,103
+,117,110,100,111,99,111,110,115,101,106,111,102,114,97,110,99,105,97,109,105,110
+,117,116,111,115,115,101,103,117,110,100,97,116,101,110,101,109,111,115,101,102,
+101,99,116,111,115,109,195,161,108,97,103,97,115,101,115,105,195,179,110,114,101
+,118,105,115,116,97,103,114,97,110,97,100,97,99,111,109,112,114,97,114,105,110,
+103,114,101,115,111,103,97,114,99,195,173,97,97,99,99,105,195,179,110,101,99,117
+,97,100,111,114,113,117,105,101,110,101,115,105,110,99,108,117,115,111,100,101,
+98,101,114,195,161,109,97,116,101,114,105,97,104,111,109,98,114,101,115,109,117,
+101,115,116,114,97,112,111,100,114,195,173,97,109,97,195,177,97,110,97,195,186,
+108,116,105,109,97,101,115,116,97,109,111,115,111,102,105,99,105,97,108,116,97,
+109,98,105,101,110,110,105,110,103,195,186,110,115,97,108,117,100,111,115,112,
+111,100,101,109,111,115,109,101,106,111,114,97,114,112,111,115,105,116,105,111,
+110,98,117,115,105,110,101,115,115,104,111,109,101,112,97,103,101,115,101,99,117
+,114,105,116,121,108,97,110,103,117,97,103,101,115,116,97,110,100,97,114,100,99,
+97,109,112,97,105,103,110,102,101,97,116,117,114,101,115,99,97,116,101,103,111,
+114,121,101,120,116,101,114,110,97,108,99,104,105,108,100,114,101,110,114,101,
+115,101,114,118,101,100,114,101,115,101,97,114,99,104,101,120,99,104,97,110,103,
+101,102,97,118,111,114,105,116,101,116,101,109,112,108,97,116,101,109,105,108,
+105,116,97,114,121,105,110,100,117,115,116,114,121,115,101,114,118,105,99,101,
+115,109,97,116,101,114,105,97,108,112,114,111,100,117,99,116,115,122,45,105,110,
+100,101,120,58,99,111,109,109,101,110,116,115,115,111,102,116,119,97,114,101,99,
+111,109,112,108,101,116,101,99,97,108,101,110,100,97,114,112,108,97,116,102,111,
+114,109,97,114,116,105,99,108,101,115,114,101,113,117,105,114,101,100,109,111,
+118,101,109,101,110,116,113,117,101,115,116,105,111,110,98,117,105,108,100,105,
+110,103,112,111,108,105,116,105,99,115,112,111,115,115,105,98,108,101,114,101,
+108,105,103,105,111,110,112,104,121,115,105,99,97,108,102,101,101,100,98,97,99,
+107,114,101,103,105,115,116,101,114,112,105,99,116,117,114,101,115,100,105,115,
+97,98,108,101,100,112,114,111,116,111,99,111,108,97,117,100,105,101,110,99,101,
+115,101,116,116,105,110,103,115,97,99,116,105,118,105,116,121,101,108,101,109,
+101,110,116,115,108,101,97,114,110,105,110,103,97,110,121,116,104,105,110,103,97
+,98,115,116,114,97,99,116,112,114,111,103,114,101,115,115,111,118,101,114,118,
+105,101,119,109,97,103,97,122,105,110,101,101,99,111,110,111,109,105,99,116,114,
+97,105,110,105,110,103,112,114,101,115,115,117,114,101,118,97,114,105,111,117,
+115,32,60,115,116,114,111,110,103,62,112,114,111,112,101,114,116,121,115,104,111
+,112,112,105,110,103,116,111,103,101,116,104,101,114,97,100,118,97,110,99,101,
+100,98,101,104,97,118,105,111,114,100,111,119,110,108,111,97,100,102,101,97,116,
+117,114,101,100,102,111,111,116,98,97,108,108,115,101,108,101,99,116,101,100,76,
+97,110,103,117,97,103,101,100,105,115,116,97,110,99,101,114,101,109,101,109,98,
+101,114,116,114,97,99,107,105,110,103,112,97,115,115,119,111,114,100,109,111,100
+,105,102,105,101,100,115,116,117,100,101,110,116,115,100,105,114,101,99,116,108,
+121,102,105,103,104,116,105,110,103,110,111,114,116,104,101,114,110,100,97,116,
+97,98,97,115,101,102,101,115,116,105,118,97,108,98,114,101,97,107,105,110,103,
+108,111,99,97,116,105,111,110,105,110,116,101,114,110,101,116,100,114,111,112,
+100,111,119,110,112,114,97,99,116,105,99,101,101,118,105,100,101,110,99,101,102,
+117,110,99,116,105,111,110,109,97,114,114,105,97,103,101,114,101,115,112,111,110
+,115,101,112,114,111,98,108,101,109,115,110,101,103,97,116,105,118,101,112,114,
+111,103,114,97,109,115,97,110,97,108,121,115,105,115,114,101,108,101,97,115,101,
+100,98,97,110,110,101,114,34,62,112,117,114,99,104,97,115,101,112,111,108,105,99
+,105,101,115,114,101,103,105,111,110,97,108,99,114,101,97,116,105,118,101,97,114
+,103,117,109,101,110,116,98,111,111,107,109,97,114,107,114,101,102,101,114,114,
+101,114,99,104,101,109,105,99,97,108,100,105,118,105,115,105,111,110,99,97,108,
+108,98,97,99,107,115,101,112,97,114,97,116,101,112,114,111,106,101,99,116,115,99
+,111,110,102,108,105,99,116,104,97,114,100,119,97,114,101,105,110,116,101,114,
+101,115,116,100,101,108,105,118,101,114,121,109,111,117,110,116,97,105,110,111,
+98,116,97,105,110,101,100,61,32,102,97,108,115,101,59,102,111,114,40,118,97,114,
+32,97,99,99,101,112,116,101,100,99,97,112,97,99,105,116,121,99,111,109,112,117,
+116,101,114,105,100,101,110,116,105,116,121,97,105,114,99,114,97,102,116,101,109
+,112,108,111,121,101,100,112,114,111,112,111,115,101,100,100,111,109,101,115,116
+,105,99,105,110,99,108,117,100,101,115,112,114,111,118,105,100,101,100,104,111,
+115,112,105,116,97,108,118,101,114,116,105,99,97,108,99,111,108,108,97,112,115,
+101,97,112,112,114,111,97,99,104,112,97,114,116,110,101,114,115,108,111,103,111,
+34,62,60,97,100,97,117,103,104,116,101,114,97,117,116,104,111,114,34,32,99,117,
+108,116,117,114,97,108,102,97,109,105,108,105,101,115,47,105,109,97,103,101,115,
+47,97,115,115,101,109,98,108,121,112,111,119,101,114,102,117,108,116,101,97,99,
+104,105,110,103,102,105,110,105,115,104,101,100,100,105,115,116,114,105,99,116,
+99,114,105,116,105,99,97,108,99,103,105,45,98,105,110,47,112,117,114,112,111,115
+,101,115,114,101,113,117,105,114,101,115,101,108,101,99,116,105,111,110,98,101,
+99,111,109,105,110,103,112,114,111,118,105,100,101,115,97,99,97,100,101,109,105,
+99,101,120,101,114,99,105,115,101,97,99,116,117,97,108,108,121,109,101,100,105,
+99,105,110,101,99,111,110,115,116,97,110,116,97,99,99,105,100,101,110,116,77,97,
+103,97,122,105,110,101,100,111,99,117,109,101,110,116,115,116,97,114,116,105,110
+,103,98,111,116,116,111,109,34,62,111,98,115,101,114,118,101,100,58,32,38,113,
+117,111,116,59,101,120,116,101,110,100,101,100,112,114,101,118,105,111,117,115,
+83,111,102,116,119,97,114,101,99,117,115,116,111,109,101,114,100,101,99,105,115,
+105,111,110,115,116,114,101,110,103,116,104,100,101,116,97,105,108,101,100,115,
+108,105,103,104,116,108,121,112,108,97,110,110,105,110,103,116,101,120,116,97,
+114,101,97,99,117,114,114,101,110,99,121,101,118,101,114,121,111,110,101,115,116
+,114,97,105,103,104,116,116,114,97,110,115,102,101,114,112,111,115,105,116,105,
+118,101,112,114,111,100,117,99,101,100,104,101,114,105,116,97,103,101,115,104,
+105,112,112,105,110,103,97,98,115,111,108,117,116,101,114,101,99,101,105,118,101
+,100,114,101,108,101,118,97,110,116,98,117,116,116,111,110,34,32,118,105,111,108
+,101,110,99,101,97,110,121,119,104,101,114,101,98,101,110,101,102,105,116,115,
+108,97,117,110,99,104,101,100,114,101,99,101,110,116,108,121,97,108,108,105,97,
+110,99,101,102,111,108,108,111,119,101,100,109,117,108,116,105,112,108,101,98,
+117,108,108,101,116,105,110,105,110,99,108,117,100,101,100,111,99,99,117,114,114
+,101,100,105,110,116,101,114,110,97,108,36,40,116,104,105,115,41,46,114,101,112,
+117,98,108,105,99,62,60,116,114,62,60,116,100,99,111,110,103,114,101,115,115,114
+,101,99,111,114,100,101,100,117,108,116,105,109,97,116,101,115,111,108,117,116,
+105,111,110,60,117,108,32,105,100,61,34,100,105,115,99,111,118,101,114,72,111,
+109,101,60,47,97,62,119,101,98,115,105,116,101,115,110,101,116,119,111,114,107,
+115,97,108,116,104,111,117,103,104,101,110,116,105,114,101,108,121,109,101,109,
+111,114,105,97,108,109,101,115,115,97,103,101,115,99,111,110,116,105,110,117,101
+,97,99,116,105,118,101,34,62,115,111,109,101,119,104,97,116,118,105,99,116,111,
+114,105,97,87,101,115,116,101,114,110,32,32,116,105,116,108,101,61,34,76,111,99,
+97,116,105,111,110,99,111,110,116,114,97,99,116,118,105,115,105,116,111,114,115,
+68,111,119,110,108,111,97,100,119,105,116,104,111,117,116,32,114,105,103,104,116
+,34,62,10,109,101,97,115,117,114,101,115,119,105,100,116,104,32,61,32,118,97,114
+,105,97,98,108,101,105,110,118,111,108,118,101,100,118,105,114,103,105,110,105,
+97,110,111,114,109,97,108,108,121,104,97,112,112,101,110,101,100,97,99,99,111,
+117,110,116,115,115,116,97,110,100,105,110,103,110,97,116,105,111,110,97,108,82,
+101,103,105,115,116,101,114,112,114,101,112,97,114,101,100,99,111,110,116,114,
+111,108,115,97,99,99,117,114,97,116,101,98,105,114,116,104,100,97,121,115,116,
+114,97,116,101,103,121,111,102,102,105,99,105,97,108,103,114,97,112,104,105,99,
+115,99,114,105,109,105,110,97,108,112,111,115,115,105,98,108,121,99,111,110,115,
+117,109,101,114,80,101,114,115,111,110,97,108,115,112,101,97,107,105,110,103,118
+,97,108,105,100,97,116,101,97,99,104,105,101,118,101,100,46,106,112,103,34,32,47
+,62,109,97,99,104,105,110,101,115,60,47,104,50,62,10,32,32,107,101,121,119,111,
+114,100,115,102,114,105,101,110,100,108,121,98,114,111,116,104,101,114,115,99,
+111,109,98,105,110,101,100,111,114,105,103,105,110,97,108,99,111,109,112,111,115
+,101,100,101,120,112,101,99,116,101,100,97,100,101,113,117,97,116,101,112,97,107
+,105,115,116,97,110,102,111,108,108,111,119,34,32,118,97,108,117,97,98,108,101,
+60,47,108,97,98,101,108,62,114,101,108,97,116,105,118,101,98,114,105,110,103,105
+,110,103,105,110,99,114,101,97,115,101,103,111,118,101,114,110,111,114,112,108,
+117,103,105,110,115,47,76,105,115,116,32,111,102,32,72,101,97,100,101,114,34,62,
+34,32,110,97,109,101,61,34,32,40,38,113,117,111,116,59,103,114,97,100,117,97,116
+,101,60,47,104,101,97,100,62,10,99,111,109,109,101,114,99,101,109,97,108,97,121,
+115,105,97,100,105,114,101,99,116,111,114,109,97,105,110,116,97,105,110,59,104,
+101,105,103,104,116,58,115,99,104,101,100,117,108,101,99,104,97,110,103,105,110,
+103,98,97,99,107,32,116,111,32,99,97,116,104,111,108,105,99,112,97,116,116,101,
+114,110,115,99,111,108,111,114,58,32,35,103,114,101,97,116,101,115,116,115,117,
+112,112,108,105,101,115,114,101,108,105,97,98,108,101,60,47,117,108,62,10,9,9,60
+,115,101,108,101,99,116,32,99,105,116,105,122,101,110,115,99,108,111,116,104,105
+,110,103,119,97,116,99,104,105,110,103,60,108,105,32,105,100,61,34,115,112,101,
+99,105,102,105,99,99,97,114,114,121,105,110,103,115,101,110,116,101,110,99,101,
+60,99,101,110,116,101,114,62,99,111,110,116,114,97,115,116,116,104,105,110,107,
+105,110,103,99,97,116,99,104,40,101,41,115,111,117,116,104,101,114,110,77,105,99
+,104,97,101,108,32,109,101,114,99,104,97,110,116,99,97,114,111,117,115,101,108,
+112,97,100,100,105,110,103,58,105,110,116,101,114,105,111,114,46,115,112,108,105
+,116,40,34,108,105,122,97,116,105,111,110,79,99,116,111,98,101,114,32,41,123,114
+,101,116,117,114,110,105,109,112,114,111,118,101,100,45,45,38,103,116,59,10,10,
+99,111,118,101,114,97,103,101,99,104,97,105,114,109,97,110,46,112,110,103,34,32,
+47,62,115,117,98,106,101,99,116,115,82,105,99,104,97,114,100,32,119,104,97,116,
+101,118,101,114,112,114,111,98,97,98,108,121,114,101,99,111,118,101,114,121,98,
+97,115,101,98,97,108,108,106,117,100,103,109,101,110,116,99,111,110,110,101,99,
+116,46,46,99,115,115,34,32,47,62,32,119,101,98,115,105,116,101,114,101,112,111,
+114,116,101,100,100,101,102,97,117,108,116,34,47,62,60,47,97,62,13,10,101,108,
+101,99,116,114,105,99,115,99,111,116,108,97,110,100,99,114,101,97,116,105,111,
+110,113,117,97,110,116,105,116,121,46,32,73,83,66,78,32,48,100,105,100,32,110,
+111,116,32,105,110,115,116,97,110,99,101,45,115,101,97,114,99,104,45,34,32,108,
+97,110,103,61,34,115,112,101,97,107,101,114,115,67,111,109,112,117,116,101,114,
+99,111,110,116,97,105,110,115,97,114,99,104,105,118,101,115,109,105,110,105,115,
+116,101,114,114,101,97,99,116,105,111,110,100,105,115,99,111,117,110,116,73,116,
+97,108,105,97,110,111,99,114,105,116,101,114,105,97,115,116,114,111,110,103,108,
+121,58,32,39,104,116,116,112,58,39,115,99,114,105,112,116,39,99,111,118,101,114,
+105,110,103,111,102,102,101,114,105,110,103,97,112,112,101,97,114,101,100,66,114
+,105,116,105,115,104,32,105,100,101,110,116,105,102,121,70,97,99,101,98,111,111,
+107,110,117,109,101,114,111,117,115,118,101,104,105,99,108,101,115,99,111,110,99
+,101,114,110,115,65,109,101,114,105,99,97,110,104,97,110,100,108,105,110,103,100
+,105,118,32,105,100,61,34,87,105,108,108,105,97,109,32,112,114,111,118,105,100,
+101,114,95,99,111,110,116,101,110,116,97,99,99,117,114,97,99,121,115,101,99,116,
+105,111,110,32,97,110,100,101,114,115,111,110,102,108,101,120,105,98,108,101,67,
+97,116,101,103,111,114,121,108,97,119,114,101,110,99,101,60,115,99,114,105,112,
+116,62,108,97,121,111,117,116,61,34,97,112,112,114,111,118,101,100,32,109,97,120
+,105,109,117,109,104,101,97,100,101,114,34,62,60,47,116,97,98,108,101,62,83,101,
+114,118,105,99,101,115,104,97,109,105,108,116,111,110,99,117,114,114,101,110,116
+,32,99,97,110,97,100,105,97,110,99,104,97,110,110,101,108,115,47,116,104,101,109
+,101,115,47,47,97,114,116,105,99,108,101,111,112,116,105,111,110,97,108,112,111,
+114,116,117,103,97,108,118,97,108,117,101,61,34,34,105,110,116,101,114,118,97,
+108,119,105,114,101,108,101,115,115,101,110,116,105,116,108,101,100,97,103,101,
+110,99,105,101,115,83,101,97,114,99,104,34,32,109,101,97,115,117,114,101,100,116
+,104,111,117,115,97,110,100,115,112,101,110,100,105,110,103,38,104,101,108,108,
+105,112,59,110,101,119,32,68,97,116,101,34,32,115,105,122,101,61,34,112,97,103,
+101,78,97,109,101,109,105,100,100,108,101,34,32,34,32,47,62,60,47,97,62,104,105,
+100,100,101,110,34,62,115,101,113,117,101,110,99,101,112,101,114,115,111,110,97,
+108,111,118,101,114,102,108,111,119,111,112,105,110,105,111,110,115,105,108,108,
+105,110,111,105,115,108,105,110,107,115,34,62,10,9,60,116,105,116,108,101,62,118
+,101,114,115,105,111,110,115,115,97,116,117,114,100,97,121,116,101,114,109,105,
+110,97,108,105,116,101,109,112,114,111,112,101,110,103,105,110,101,101,114,115,
+101,99,116,105,111,110,115,100,101,115,105,103,110,101,114,112,114,111,112,111,
+115,97,108,61,34,102,97,108,115,101,34,69,115,112,97,195,177,111,108,114,101,108
+,101,97,115,101,115,115,117,98,109,105,116,34,32,101,114,38,113,117,111,116,59,
+97,100,100,105,116,105,111,110,115,121,109,112,116,111,109,115,111,114,105,101,
+110,116,101,100,114,101,115,111,117,114,99,101,114,105,103,104,116,34,62,60,112,
+108,101,97,115,117,114,101,115,116,97,116,105,111,110,115,104,105,115,116,111,
+114,121,46,108,101,97,118,105,110,103,32,32,98,111,114,100,101,114,61,99,111,110
+,116,101,110,116,115,99,101,110,116,101,114,34,62,46,10,10,83,111,109,101,32,100
+,105,114,101,99,116,101,100,115,117,105,116,97,98,108,101,98,117,108,103,97,114,
+105,97,46,115,104,111,119,40,41,59,100,101,115,105,103,110,101,100,71,101,110,
+101,114,97,108,32,99,111,110,99,101,112,116,115,69,120,97,109,112,108,101,115,
+119,105,108,108,105,97,109,115,79,114,105,103,105,110,97,108,34,62,60,115,112,97
+,110,62,115,101,97,114,99,104,34,62,111,112,101,114,97,116,111,114,114,101,113,
+117,101,115,116,115,97,32,38,113,117,111,116,59,97,108,108,111,119,105,110,103,
+68,111,99,117,109,101,110,116,114,101,118,105,115,105,111,110,46,32,10,10,84,104
+,101,32,121,111,117,114,115,101,108,102,67,111,110,116,97,99,116,32,109,105,99,
+104,105,103,97,110,69,110,103,108,105,115,104,32,99,111,108,117,109,98,105,97,
+112,114,105,111,114,105,116,121,112,114,105,110,116,105,110,103,100,114,105,110,
+107,105,110,103,102,97,99,105,108,105,116,121,114,101,116,117,114,110,101,100,67
+,111,110,116,101,110,116,32,111,102,102,105,99,101,114,115,82,117,115,115,105,97
+,110,32,103,101,110,101,114,97,116,101,45,56,56,53,57,45,49,34,105,110,100,105,
+99,97,116,101,102,97,109,105,108,105,97,114,32,113,117,97,108,105,116,121,109,97
+,114,103,105,110,58,48,32,99,111,110,116,101,110,116,118,105,101,119,112,111,114
+,116,99,111,110,116,97,99,116,115,45,116,105,116,108,101,34,62,112,111,114,116,
+97,98,108,101,46,108,101,110,103,116,104,32,101,108,105,103,105,98,108,101,105,
+110,118,111,108,118,101,115,97,116,108,97,110,116,105,99,111,110,108,111,97,100,
+61,34,100,101,102,97,117,108,116,46,115,117,112,112,108,105,101,100,112,97,121,
+109,101,110,116,115,103,108,111,115,115,97,114,121,10,10,65,102,116,101,114,32,
+103,117,105,100,97,110,99,101,60,47,116,100,62,60,116,100,101,110,99,111,100,105
+,110,103,109,105,100,100,108,101,34,62,99,97,109,101,32,116,111,32,100,105,115,
+112,108,97,121,115,115,99,111,116,116,105,115,104,106,111,110,97,116,104,97,110,
+109,97,106,111,114,105,116,121,119,105,100,103,101,116,115,46,99,108,105,110,105
+,99,97,108,116,104,97,105,108,97,110,100,116,101,97,99,104,101,114,115,60,104,
+101,97,100,62,10,9,97,102,102,101,99,116,101,100,115,117,112,112,111,114,116,115
+,112,111,105,110,116,101,114,59,116,111,83,116,114,105,110,103,60,47,115,109,97,
+108,108,62,111,107,108,97,104,111,109,97,119,105,108,108,32,98,101,32,105,110,
+118,101,115,116,111,114,48,34,32,97,108,116,61,34,104,111,108,105,100,97,121,115
+,82,101,115,111,117,114,99,101,108,105,99,101,110,115,101,100,32,40,119,104,105,
+99,104,32,46,32,65,102,116,101,114,32,99,111,110,115,105,100,101,114,118,105,115
+,105,116,105,110,103,101,120,112,108,111,114,101,114,112,114,105,109,97,114,121,
+32,115,101,97,114,99,104,34,32,97,110,100,114,111,105,100,34,113,117,105,99,107,
+108,121,32,109,101,101,116,105,110,103,115,101,115,116,105,109,97,116,101,59,114
+,101,116,117,114,110,32,59,99,111,108,111,114,58,35,32,104,101,105,103,104,116,
+61,97,112,112,114,111,118,97,108,44,32,38,113,117,111,116,59,32,99,104,101,99,
+107,101,100,46,109,105,110,46,106,115,34,109,97,103,110,101,116,105,99,62,60,47,
+97,62,60,47,104,102,111,114,101,99,97,115,116,46,32,87,104,105,108,101,32,116,
+104,117,114,115,100,97,121,100,118,101,114,116,105,115,101,38,101,97,99,117,116,
+101,59,104,97,115,67,108,97,115,115,101,118,97,108,117,97,116,101,111,114,100,
+101,114,105,110,103,101,120,105,115,116,105,110,103,112,97,116,105,101,110,116,
+115,32,79,110,108,105,110,101,32,99,111,108,111,114,97,100,111,79,112,116,105,
+111,110,115,34,99,97,109,112,98,101,108,108,60,33,45,45,32,101,110,100,60,47,115
+,112,97,110,62,60,60,98,114,32,47,62,13,10,95,112,111,112,117,112,115,124,115,99
+,105,101,110,99,101,115,44,38,113,117,111,116,59,32,113,117,97,108,105,116,121,
+32,87,105,110,100,111,119,115,32,97,115,115,105,103,110,101,100,104,101,105,103,
+104,116,58,32,60,98,32,99,108,97,115,115,108,101,38,113,117,111,116,59,32,118,97
+,108,117,101,61,34,32,67,111,109,112,97,110,121,101,120,97,109,112,108,101,115,
+60,105,102,114,97,109,101,32,98,101,108,105,101,118,101,115,112,114,101,115,101,
+110,116,115,109,97,114,115,104,97,108,108,112,97,114,116,32,111,102,32,112,114,
+111,112,101,114,108,121,41,46,10,10,84,104,101,32,116,97,120,111,110,111,109,121
+,109,117,99,104,32,111,102,32,60,47,115,112,97,110,62,10,34,32,100,97,116,97,45,
+115,114,116,117,103,117,195,170,115,115,99,114,111,108,108,84,111,32,112,114,111
+,106,101,99,116,60,104,101,97,100,62,13,10,97,116,116,111,114,110,101,121,101,
+109,112,104,97,115,105,115,115,112,111,110,115,111,114,115,102,97,110,99,121,98,
+111,120,119,111,114,108,100,39,115,32,119,105,108,100,108,105,102,101,99,104,101
+,99,107,101,100,61,115,101,115,115,105,111,110,115,112,114,111,103,114,97,109,
+109,112,120,59,102,111,110,116,45,32,80,114,111,106,101,99,116,106,111,117,114,
+110,97,108,115,98,101,108,105,101,118,101,100,118,97,99,97,116,105,111,110,116,
+104,111,109,112,115,111,110,108,105,103,104,116,105,110,103,97,110,100,32,116,
+104,101,32,115,112,101,99,105,97,108,32,98,111,114,100,101,114,61,48,99,104,101,
+99,107,105,110,103,60,47,116,98,111,100,121,62,60,98,117,116,116,111,110,32,67,
+111,109,112,108,101,116,101,99,108,101,97,114,102,105,120,10,60,104,101,97,100,
+62,10,97,114,116,105,99,108,101,32,60,115,101,99,116,105,111,110,102,105,110,100
+,105,110,103,115,114,111,108,101,32,105,110,32,112,111,112,117,108,97,114,32,32,
+79,99,116,111,98,101,114,119,101,98,115,105,116,101,32,101,120,112,111,115,117,
+114,101,117,115,101,100,32,116,111,32,32,99,104,97,110,103,101,115,111,112,101,
+114,97,116,101,100,99,108,105,99,107,105,110,103,101,110,116,101,114,105,110,103
+,99,111,109,109,97,110,100,115,105,110,102,111,114,109,101,100,32,110,117,109,98
+,101,114,115,32,32,60,47,100,105,118,62,99,114,101,97,116,105,110,103,111,110,83
+,117,98,109,105,116,109,97,114,121,108,97,110,100,99,111,108,108,101,103,101,115
+,97,110,97,108,121,116,105,99,108,105,115,116,105,110,103,115,99,111,110,116,97,
+99,116,46,108,111,103,103,101,100,73,110,97,100,118,105,115,111,114,121,115,105,
+98,108,105,110,103,115,99,111,110,116,101,110,116,34,115,38,113,117,111,116,59,
+41,115,46,32,84,104,105,115,32,112,97,99,107,97,103,101,115,99,104,101,99,107,98
+,111,120,115,117,103,103,101,115,116,115,112,114,101,103,110,97,110,116,116,111,
+109,111,114,114,111,119,115,112,97,99,105,110,103,61,105,99,111,110,46,112,110,
+103,106,97,112,97,110,101,115,101,99,111,100,101,98,97,115,101,98,117,116,116,
+111,110,34,62,103,97,109,98,108,105,110,103,115,117,99,104,32,97,115,32,44,32,
+119,104,105,108,101,32,60,47,115,112,97,110,62,32,109,105,115,115,111,117,114,
+105,115,112,111,114,116,105,110,103,116,111,112,58,49,112,120,32,46,60,47,115,
+112,97,110,62,116,101,110,115,105,111,110,115,119,105,100,116,104,61,34,50,108,
+97,122,121,108,111,97,100,110,111,118,101,109,98,101,114,117,115,101,100,32,105,
+110,32,104,101,105,103,104,116,61,34,99,114,105,112,116,34,62,10,38,110,98,115,
+112,59,60,47,60,116,114,62,60,116,100,32,104,101,105,103,104,116,58,50,47,112,
+114,111,100,117,99,116,99,111,117,110,116,114,121,32,105,110,99,108,117,100,101,
+32,102,111,111,116,101,114,34,32,38,108,116,59,33,45,45,32,116,105,116,108,101,
+34,62,60,47,106,113,117,101,114,121,46,60,47,102,111,114,109,62,10,40,231,174,
+128,228,189,147,41,40,231,185,129,233,171,148,41,104,114,118,97,116,115,107,105,
+105,116,97,108,105,97,110,111,114,111,109,195,162,110,196,131,116,195,188,114,
+107,195,167,101,216,167,216,177,216,175,217,136,116,97,109,98,105,195,169,110,
+110,111,116,105,99,105,97,115,109,101,110,115,97,106,101,115,112,101,114,115,111
+,110,97,115,100,101,114,101,99,104,111,115,110,97,99,105,111,110,97,108,115,101,
+114,118,105,99,105,111,99,111,110,116,97,99,116,111,117,115,117,97,114,105,111,
+115,112,114,111,103,114,97,109,97,103,111,98,105,101,114,110,111,101,109,112,114
+,101,115,97,115,97,110,117,110,99,105,111,115,118,97,108,101,110,99,105,97,99,
+111,108,111,109,98,105,97,100,101,115,112,117,195,169,115,100,101,112,111,114,
+116,101,115,112,114,111,121,101,99,116,111,112,114,111,100,117,99,116,111,112,
+195,186,98,108,105,99,111,110,111,115,111,116,114,111,115,104,105,115,116,111,
+114,105,97,112,114,101,115,101,110,116,101,109,105,108,108,111,110,101,115,109,
+101,100,105,97,110,116,101,112,114,101,103,117,110,116,97,97,110,116,101,114,105
+,111,114,114,101,99,117,114,115,111,115,112,114,111,98,108,101,109,97,115,97,110
+,116,105,97,103,111,110,117,101,115,116,114,111,115,111,112,105,110,105,195,179,
+110,105,109,112,114,105,109,105,114,109,105,101,110,116,114,97,115,97,109,195,
+169,114,105,99,97,118,101,110,100,101,100,111,114,115,111,99,105,101,100,97,100,
+114,101,115,112,101,99,116,111,114,101,97,108,105,122,97,114,114,101,103,105,115
+,116,114,111,112,97,108,97,98,114,97,115,105,110,116,101,114,195,169,115,101,110
+,116,111,110,99,101,115,101,115,112,101,99,105,97,108,109,105,101,109,98,114,111
+,115,114,101,97,108,105,100,97,100,99,195,179,114,100,111,98,97,122,97,114,97,
+103,111,122,97,112,195,161,103,105,110,97,115,115,111,99,105,97,108,101,115,98,
+108,111,113,117,101,97,114,103,101,115,116,105,195,179,110,97,108,113,117,105,
+108,101,114,115,105,115,116,101,109,97,115,99,105,101,110,99,105,97,115,99,111,
+109,112,108,101,116,111,118,101,114,115,105,195,179,110,99,111,109,112,108,101,
+116,97,101,115,116,117,100,105,111,115,112,195,186,98,108,105,99,97,111,98,106,
+101,116,105,118,111,97,108,105,99,97,110,116,101,98,117,115,99,97,100,111,114,99
+,97,110,116,105,100,97,100,101,110,116,114,97,100,97,115,97,99,99,105,111,110,
+101,115,97,114,99,104,105,118,111,115,115,117,112,101,114,105,111,114,109,97,121
+,111,114,195,173,97,97,108,101,109,97,110,105,97,102,117,110,99,105,195,179,110,
+195,186,108,116,105,109,111,115,104,97,99,105,101,110,100,111,97,113,117,101,108
+,108,111,115,101,100,105,99,105,195,179,110,102,101,114,110,97,110,100,111,97,
+109,98,105,101,110,116,101,102,97,99,101,98,111,111,107,110,117,101,115,116,114,
+97,115,99,108,105,101,110,116,101,115,112,114,111,99,101,115,111,115,98,97,115,
+116,97,110,116,101,112,114,101,115,101,110,116,97,114,101,112,111,114,116,97,114
+,99,111,110,103,114,101,115,111,112,117,98,108,105,99,97,114,99,111,109,101,114,
+99,105,111,99,111,110,116,114,97,116,111,106,195,179,118,101,110,101,115,100,105
+,115,116,114,105,116,111,116,195,169,99,110,105,99,97,99,111,110,106,117,110,116
+,111,101,110,101,114,103,195,173,97,116,114,97,98,97,106,97,114,97,115,116,117,
+114,105,97,115,114,101,99,105,101,110,116,101,117,116,105,108,105,122,97,114,98,
+111,108,101,116,195,173,110,115,97,108,118,97,100,111,114,99,111,114,114,101,99,
+116,97,116,114,97,98,97,106,111,115,112,114,105,109,101,114,111,115,110,101,103,
+111,99,105,111,115,108,105,98,101,114,116,97,100,100,101,116,97,108,108,101,115,
+112,97,110,116,97,108,108,97,112,114,195,179,120,105,109,111,97,108,109,101,114,
+195,173,97,97,110,105,109,97,108,101,115,113,117,105,195,169,110,101,115,99,111,
+114,97,122,195,179,110,115,101,99,99,105,195,179,110,98,117,115,99,97,110,100,
+111,111,112,99,105,111,110,101,115,101,120,116,101,114,105,111,114,99,111,110,99
+,101,112,116,111,116,111,100,97,118,195,173,97,103,97,108,101,114,195,173,97,101
+,115,99,114,105,98,105,114,109,101,100,105,99,105,110,97,108,105,99,101,110,99,
+105,97,99,111,110,115,117,108,116,97,97,115,112,101,99,116,111,115,99,114,195,
+173,116,105,99,97,100,195,179,108,97,114,101,115,106,117,115,116,105,99,105,97,
+100,101,98,101,114,195,161,110,112,101,114,195,173,111,100,111,110,101,99,101,
+115,105,116,97,109,97,110,116,101,110,101,114,112,101,113,117,101,195,177,111,
+114,101,99,105,98,105,100,97,116,114,105,98,117,110,97,108,116,101,110,101,114,
+105,102,101,99,97,110,99,105,195,179,110,99,97,110,97,114,105,97,115,100,101,115
+,99,97,114,103,97,100,105,118,101,114,115,111,115,109,97,108,108,111,114,99,97,
+114,101,113,117,105,101,114,101,116,195,169,99,110,105,99,111,100,101,98,101,114
+,195,173,97,118,105,118,105,101,110,100,97,102,105,110,97,110,122,97,115,97,100,
+101,108,97,110,116,101,102,117,110,99,105,111,110,97,99,111,110,115,101,106,111,
+115,100,105,102,195,173,99,105,108,99,105,117,100,97,100,101,115,97,110,116,105,
+103,117,97,115,97,118,97,110,122,97,100,97,116,195,169,114,109,105,110,111,117,
+110,105,100,97,100,101,115,115,195,161,110,99,104,101,122,99,97,109,112,97,195,
+177,97,115,111,102,116,111,110,105,99,114,101,118,105,115,116,97,115,99,111,110,
+116,105,101,110,101,115,101,99,116,111,114,101,115,109,111,109,101,110,116,111,
+115,102,97,99,117,108,116,97,100,99,114,195,169,100,105,116,111,100,105,118,101,
+114,115,97,115,115,117,112,117,101,115,116,111,102,97,99,116,111,114,101,115,115
+,101,103,117,110,100,111,115,112,101,113,117,101,195,177,97,208,179,208,190,208,
+180,208,176,208,181,209,129,208,187,208,184,208,181,209,129,209,130,209,140,208,
+177,209,139,208,187,208,190,208,177,209,139,209,130,209,140,209,141,209,130,208,
+190,208,188,208,149,209,129,208,187,208,184,209,130,208,190,208,179,208,190,208,
+188,208,181,208,189,209,143,208,178,209,129,208,181,209,133,209,141,209,130,208,
+190,208,185,208,180,208,176,208,182,208,181,208,177,209,139,208,187,208,184,208,
+179,208,190,208,180,209,131,208,180,208,181,208,189,209,140,209,141,209,130,208,
+190,209,130,208,177,209,139,208,187,208,176,209,129,208,181,208,177,209,143,208,
+190,208,180,208,184,208,189,209,129,208,181,208,177,208,181,208,189,208,176,208,
+180,208,190,209,129,208,176,208,185,209,130,209,132,208,190,209,130,208,190,208,
+189,208,181,208,179,208,190,209,129,208,178,208,190,208,184,209,129,208,178,208,
+190,208,185,208,184,208,179,209,128,209,139,209,130,208,190,208,182,208,181,208,
+178,209,129,208,181,208,188,209,129,208,178,208,190,209,142,208,187,208,184,209,
+136,209,140,209,141,209,130,208,184,209,133,208,191,208,190,208,186,208,176,208,
+180,208,189,208,181,208,185,208,180,208,190,208,188,208,176,208,188,208,184,209,
+128,208,176,208,187,208,184,208,177,208,190,209,130,208,181,208,188,209,131,209,
+133,208,190,209,130,209,143,208,180,208,178,209,131,209,133,209,129,208,181,209,
+130,208,184,208,187,209,142,208,180,208,184,208,180,208,181,208,187,208,190,208,
+188,208,184,209,128,208,181,209,130,208,181,208,177,209,143,209,129,208,178,208,
+190,208,181,208,178,208,184,208,180,208,181,209,135,208,181,208,179,208,190,209,
+141,209,130,208,184,208,188,209,129,209,135,208,181,209,130,209,130,208,181,208,
+188,209,139,209,134,208,181,208,189,209,139,209,129,209,130,208,176,208,187,208,
+178,208,181,208,180,209,140,209,130,208,181,208,188,208,181,208,178,208,190,208,
+180,209,139,209,130,208,181,208,177,208,181,208,178,209,139,209,136,208,181,208,
+189,208,176,208,188,208,184,209,130,208,184,208,191,208,176,209,130,208,190,208,
+188,209,131,208,191,209,128,208,176,208,178,208,187,208,184,209,134,208,176,208,
+190,208,180,208,189,208,176,208,179,208,190,208,180,209,139,208,183,208,189,208,
+176,209,142,208,188,208,190,208,179,209,131,208,180,209,128,209,131,208,179,208,
+178,209,129,208,181,208,185,208,184,208,180,208,181,209,130,208,186,208,184,208,
+189,208,190,208,190,208,180,208,189,208,190,208,180,208,181,208,187,208,176,208,
+180,208,181,208,187,208,181,209,129,209,128,208,190,208,186,208,184,209,142,208,
+189,209,143,208,178,208,181,209,129,209,140,208,149,209,129,209,130,209,140,209,
+128,208,176,208,183,208,176,208,189,208,176,209,136,208,184,216,167,217,132,217,
+132,217,135,216,167,217,132,216,170,217,138,216,172,217,133,217,138,216,185,216,
+174,216,167,216,181,216,169,216,167,217,132,216,176,217,138,216,185,217,132,217,
+138,217,135,216,172,216,175,217,138,216,175,216,167,217,132,216,162,217,134,216,
+167,217,132,216,177,216,175,216,170,216,173,217,131,217,133,216,181,217,129,216,
+173,216,169,217,131,216,167,217,134,216,170,216,167,217,132,217,132,217,138,217,
+138,217,131,217,136,217,134,216,180,216,168,217,131,216,169,217,129,217,138,217,
+135,216,167,216,168,217,134,216,167,216,170,216,173,217,136,216,167,216,161,216,
+163,217,131,216,171,216,177,216,174,217,132,216,167,217,132,216,167,217,132,216,
+173,216,168,216,175,217,132,217,138,217,132,216,175,216,177,217,136,216,179,216,
+167,216,182,216,186,216,183,216,170,217,131,217,136,217,134,217,135,217,134,216,
+167,217,131,216,179,216,167,216,173,216,169,217,134,216,167,216,175,217,138,216,
+167,217,132,216,183,216,168,216,185,217,132,217,138,217,131,216,180,217,131,216,
+177,216,167,217,138,217,133,217,131,217,134,217,133,217,134,217,135,216,167,216,
+180,216,177,217,131,216,169,216,177,216,166,217,138,216,179,217,134,216,180,217,
+138,216,183,217,133,216,167,216,176,216,167,216,167,217,132,217,129,217,134,216,
+180,216,168,216,167,216,168,216,170,216,185,216,168,216,177,216,177,216,173,217,
+133,216,169,217,131,216,167,217,129,216,169,217,138,217,130,217,136,217,132,217,
+133,216,177,217,131,216,178,217,131,217,132,217,133,216,169,216,163,216,173,217,
+133,216,175,217,130,217,132,216,168,217,138,217,138,216,185,217,134,217,138,216,
+181,217,136,216,177,216,169,216,183,216,177,217,138,217,130,216,180,216,167,216,
+177,217,131,216,172,217,136,216,167,217,132,216,163,216,174,216,177,217,137,217,
+133,216,185,217,134,216,167,216,167,216,168,216,173,216,171,216,185,216,177,217,
+136,216,182,216,168,216,180,217,131,217,132,217,133,216,179,216,172,217,132,216,
+168,217,134,216,167,217,134,216,174,216,167,217,132,216,175,217,131,216,170,216,
+167,216,168,217,131,217,132,217,138,216,169,216,168,216,175,217,136,217,134,216,
+163,217,138,216,182,216,167,217,138,217,136,216,172,216,175,217,129,216,177,217,
+138,217,130,217,131,216,170,216,168,216,170,216,163,217,129,216,182,217,132,217,
+133,216,183,216,168,216,174,216,167,217,131,216,171,216,177,216,168,216,167,216,
+177,217,131,216,167,217,129,216,182,217,132,216,167,216,173,217,132,217,137,217,
+134,217,129,216,179,217,135,216,163,217,138,216,167,217,133,216,177,216,175,217,
+136,216,175,216,163,217,134,217,135,216,167,216,175,217,138,217,134,216,167,216,
+167,217,132,216,167,217,134,217,133,216,185,216,177,216,182,216,170,216,185,217,
+132,217,133,216,175,216,167,216,174,217,132,217,133,217,133,217,131,217,134,0,0,
+0,0,0,0,0,0,1,0,1,0,1,0,1,0,2,0,2,0,2,0,2,0,4,0,4,0,4,0,4,0,0,1,2,3,4,5,6,7,7,6,
+5,4,3,2,1,0,8,9,10,11,12,13,14,15,15,14,13,12,11,10,9,8,16,17,18,19,20,21,22,23,
+23,22,21,20,19,18,17,16,24,25,26,27,28,29,30,31,31,30,29,28,27,26,25,24,255,255,
+255,255,0,0,0,0,0,0,0,0,255,255,255,255,1,0,0,0,2,0,0,0,2,0,0,0,1,0,0,0,1,0,0,0,
+3,0,0,0,255,255,0,1,0,0,0,1,0,0,255,255,0,1,0,0,0,8,0,8,0,8,0,8,0,0,0,1,0,2,0,3,
+0,4,0,5,0,6,0,7,114,101,115,111,117,114,99,101,115,99,111,117,110,116,114,105,
+101,115,113,117,101,115,116,105,111,110,115,101,113,117,105,112,109,101,110,116,
+99,111,109,109,117,110,105,116,121,97,118,97,105,108,97,98,108,101,104,105,103,
+104,108,105,103,104,116,68,84,68,47,120,104,116,109,108,109,97,114,107,101,116,
+105,110,103,107,110,111,119,108,101,100,103,101,115,111,109,101,116,104,105,110,
+103,99,111,110,116,97,105,110,101,114,100,105,114,101,99,116,105,111,110,115,117
+,98,115,99,114,105,98,101,97,100,118,101,114,116,105,115,101,99,104,97,114,97,99
+,116,101,114,34,32,118,97,108,117,101,61,34,60,47,115,101,108,101,99,116,62,65,
+117,115,116,114,97,108,105,97,34,32,99,108,97,115,115,61,34,115,105,116,117,97,
+116,105,111,110,97,117,116,104,111,114,105,116,121,102,111,108,108,111,119,105,
+110,103,112,114,105,109,97,114,105,108,121,111,112,101,114,97,116,105,111,110,99
+,104,97,108,108,101,110,103,101,100,101,118,101,108,111,112,101,100,97,110,111,
+110,121,109,111,117,115,102,117,110,99,116,105,111,110,32,102,117,110,99,116,105
+,111,110,115,99,111,109,112,97,110,105,101,115,115,116,114,117,99,116,117,114,
+101,97,103,114,101,101,109,101,110,116,34,32,116,105,116,108,101,61,34,112,111,
+116,101,110,116,105,97,108,101,100,117,99,97,116,105,111,110,97,114,103,117,109,
+101,110,116,115,115,101,99,111,110,100,97,114,121,99,111,112,121,114,105,103,104
+,116,108,97,110,103,117,97,103,101,115,101,120,99,108,117,115,105,118,101,99,111
+,110,100,105,116,105,111,110,60,47,102,111,114,109,62,13,10,115,116,97,116,101,
+109,101,110,116,97,116,116,101,110,116,105,111,110,66,105,111,103,114,97,112,104
+,121,125,32,101,108,115,101,32,123,10,115,111,108,117,116,105,111,110,115,119,
+104,101,110,32,116,104,101,32,65,110,97,108,121,116,105,99,115,116,101,109,112,
+108,97,116,101,115,100,97,110,103,101,114,111,117,115,115,97,116,101,108,108,105
+,116,101,100,111,99,117,109,101,110,116,115,112,117,98,108,105,115,104,101,114,
+105,109,112,111,114,116,97,110,116,112,114,111,116,111,116,121,112,101,105,110,
+102,108,117,101,110,99,101,38,114,97,113,117,111,59,60,47,101,102,102,101,99,116
+,105,118,101,103,101,110,101,114,97,108,108,121,116,114,97,110,115,102,111,114,
+109,98,101,97,117,116,105,102,117,108,116,114,97,110,115,112,111,114,116,111,114
+,103,97,110,105,122,101,100,112,117,98,108,105,115,104,101,100,112,114,111,109,
+105,110,101,110,116,117,110,116,105,108,32,116,104,101,116,104,117,109,98,110,97
+,105,108,78,97,116,105,111,110,97,108,32,46,102,111,99,117,115,40,41,59,111,118,
+101,114,32,116,104,101,32,109,105,103,114,97,116,105,111,110,97,110,110,111,117,
+110,99,101,100,102,111,111,116,101,114,34,62,10,101,120,99,101,112,116,105,111,
+110,108,101,115,115,32,116,104,97,110,101,120,112,101,110,115,105,118,101,102,
+111,114,109,97,116,105,111,110,102,114,97,109,101,119,111,114,107,116,101,114,
+114,105,116,111,114,121,110,100,105,99,97,116,105,111,110,99,117,114,114,101,110
+,116,108,121,99,108,97,115,115,78,97,109,101,99,114,105,116,105,99,105,115,109,
+116,114,97,100,105,116,105,111,110,101,108,115,101,119,104,101,114,101,65,108,
+101,120,97,110,100,101,114,97,112,112,111,105,110,116,101,100,109,97,116,101,114
+,105,97,108,115,98,114,111,97,100,99,97,115,116,109,101,110,116,105,111,110,101,
+100,97,102,102,105,108,105,97,116,101,60,47,111,112,116,105,111,110,62,116,114,
+101,97,116,109,101,110,116,100,105,102,102,101,114,101,110,116,47,100,101,102,97
+,117,108,116,46,80,114,101,115,105,100,101,110,116,111,110,99,108,105,99,107,61,
+34,98,105,111,103,114,97,112,104,121,111,116,104,101,114,119,105,115,101,112,101
+,114,109,97,110,101,110,116,70,114,97,110,195,167,97,105,115,72,111,108,108,121,
+119,111,111,100,101,120,112,97,110,115,105,111,110,115,116,97,110,100,97,114,100
+,115,60,47,115,116,121,108,101,62,10,114,101,100,117,99,116,105,111,110,68,101,
+99,101,109,98,101,114,32,112,114,101,102,101,114,114,101,100,67,97,109,98,114,
+105,100,103,101,111,112,112,111,110,101,110,116,115,66,117,115,105,110,101,115,
+115,32,99,111,110,102,117,115,105,111,110,62,10,60,116,105,116,108,101,62,112,
+114,101,115,101,110,116,101,100,101,120,112,108,97,105,110,101,100,100,111,101,
+115,32,110,111,116,32,119,111,114,108,100,119,105,100,101,105,110,116,101,114,
+102,97,99,101,112,111,115,105,116,105,111,110,115,110,101,119,115,112,97,112,101
+,114,60,47,116,97,98,108,101,62,10,109,111,117,110,116,97,105,110,115,108,105,
+107,101,32,116,104,101,32,101,115,115,101,110,116,105,97,108,102,105,110,97,110,
+99,105,97,108,115,101,108,101,99,116,105,111,110,97,99,116,105,111,110,61,34,47,
+97,98,97,110,100,111,110,101,100,69,100,117,99,97,116,105,111,110,112,97,114,115
+,101,73,110,116,40,115,116,97,98,105,108,105,116,121,117,110,97,98,108,101,32,
+116,111,60,47,116,105,116,108,101,62,10,114,101,108,97,116,105,111,110,115,78,
+111,116,101,32,116,104,97,116,101,102,102,105,99,105,101,110,116,112,101,114,102
+,111,114,109,101,100,116,119,111,32,121,101,97,114,115,83,105,110,99,101,32,116,
+104,101,116,104,101,114,101,102,111,114,101,119,114,97,112,112,101,114,34,62,97,
+108,116,101,114,110,97,116,101,105,110,99,114,101,97,115,101,100,66,97,116,116,
+108,101,32,111,102,112,101,114,99,101,105,118,101,100,116,114,121,105,110,103,32
+,116,111,110,101,99,101,115,115,97,114,121,112,111,114,116,114,97,121,101,100,
+101,108,101,99,116,105,111,110,115,69,108,105,122,97,98,101,116,104,60,47,105,
+102,114,97,109,101,62,100,105,115,99,111,118,101,114,121,105,110,115,117,114,97,
+110,99,101,115,46,108,101,110,103,116,104,59,108,101,103,101,110,100,97,114,121,
+71,101,111,103,114,97,112,104,121,99,97,110,100,105,100,97,116,101,99,111,114,
+112,111,114,97,116,101,115,111,109,101,116,105,109,101,115,115,101,114,118,105,
+99,101,115,46,105,110,104,101,114,105,116,101,100,60,47,115,116,114,111,110,103,
+62,67,111,109,109,117,110,105,116,121,114,101,108,105,103,105,111,117,115,108,
+111,99,97,116,105,111,110,115,67,111,109,109,105,116,116,101,101,98,117,105,108,
+100,105,110,103,115,116,104,101,32,119,111,114,108,100,110,111,32,108,111,110,
+103,101,114,98,101,103,105,110,110,105,110,103,114,101,102,101,114,101,110,99,
+101,99,97,110,110,111,116,32,98,101,102,114,101,113,117,101,110,99,121,116,121,
+112,105,99,97,108,108,121,105,110,116,111,32,116,104,101,32,114,101,108,97,116,
+105,118,101,59,114,101,99,111,114,100,105,110,103,112,114,101,115,105,100,101,
+110,116,105,110,105,116,105,97,108,108,121,116,101,99,104,110,105,113,117,101,
+116,104,101,32,111,116,104,101,114,105,116,32,99,97,110,32,98,101,101,120,105,
+115,116,101,110,99,101,117,110,100,101,114,108,105,110,101,116,104,105,115,32,
+116,105,109,101,116,101,108,101,112,104,111,110,101,105,116,101,109,115,99,111,
+112,101,112,114,97,99,116,105,99,101,115,97,100,118,97,110,116,97,103,101,41,59,
+114,101,116,117,114,110,32,70,111,114,32,111,116,104,101,114,112,114,111,118,105
+,100,105,110,103,100,101,109,111,99,114,97,99,121,98,111,116,104,32,116,104,101,
+32,101,120,116,101,110,115,105,118,101,115,117,102,102,101,114,105,110,103,115,
+117,112,112,111,114,116,101,100,99,111,109,112,117,116,101,114,115,32,102,117,
+110,99,116,105,111,110,112,114,97,99,116,105,99,97,108,115,97,105,100,32,116,104
+,97,116,105,116,32,109,97,121,32,98,101,69,110,103,108,105,115,104,60,47,102,114
+,111,109,32,116,104,101,32,115,99,104,101,100,117,108,101,100,100,111,119,110,
+108,111,97,100,115,60,47,108,97,98,101,108,62,10,115,117,115,112,101,99,116,101,
+100,109,97,114,103,105,110,58,32,48,115,112,105,114,105,116,117,97,108,60,47,104
+,101,97,100,62,10,10,109,105,99,114,111,115,111,102,116,103,114,97,100,117,97,
+108,108,121,100,105,115,99,117,115,115,101,100,104,101,32,98,101,99,97,109,101,
+101,120,101,99,117,116,105,118,101,106,113,117,101,114,121,46,106,115,104,111,
+117,115,101,104,111,108,100,99,111,110,102,105,114,109,101,100,112,117,114,99,
+104,97,115,101,100,108,105,116,101,114,97,108,108,121,100,101,115,116,114,111,
+121,101,100,117,112,32,116,111,32,116,104,101,118,97,114,105,97,116,105,111,110,
+114,101,109,97,105,110,105,110,103,105,116,32,105,115,32,110,111,116,99,101,110,
+116,117,114,105,101,115,74,97,112,97,110,101,115,101,32,97,109,111,110,103,32,
+116,104,101,99,111,109,112,108,101,116,101,100,97,108,103,111,114,105,116,104,
+109,105,110,116,101,114,101,115,116,115,114,101,98,101,108,108,105,111,110,117,
+110,100,101,102,105,110,101,100,101,110,99,111,117,114,97,103,101,114,101,115,
+105,122,97,98,108,101,105,110,118,111,108,118,105,110,103,115,101,110,115,105,
+116,105,118,101,117,110,105,118,101,114,115,97,108,112,114,111,118,105,115,105,
+111,110,40,97,108,116,104,111,117,103,104,102,101,97,116,117,114,105,110,103,99,
+111,110,100,117,99,116,101,100,41,44,32,119,104,105,99,104,32,99,111,110,116,105
+,110,117,101,100,45,104,101,97,100,101,114,34,62,70,101,98,114,117,97,114,121,32
+,110,117,109,101,114,111,117,115,32,111,118,101,114,102,108,111,119,58,99,111,
+109,112,111,110,101,110,116,102,114,97,103,109,101,110,116,115,101,120,99,101,
+108,108,101,110,116,99,111,108,115,112,97,110,61,34,116,101,99,104,110,105,99,97
+,108,110,101,97,114,32,116,104,101,32,65,100,118,97,110,99,101,100,32,115,111,
+117,114,99,101,32,111,102,101,120,112,114,101,115,115,101,100,72,111,110,103,32,
+75,111,110,103,32,70,97,99,101,98,111,111,107,109,117,108,116,105,112,108,101,32
+,109,101,99,104,97,110,105,115,109,101,108,101,118,97,116,105,111,110,111,102,
+102,101,110,115,105,118,101,60,47,102,111,114,109,62,10,9,115,112,111,110,115,
+111,114,101,100,100,111,99,117,109,101,110,116,46,111,114,32,38,113,117,111,116,
+59,116,104,101,114,101,32,97,114,101,116,104,111,115,101,32,119,104,111,109,111,
+118,101,109,101,110,116,115,112,114,111,99,101,115,115,101,115,100,105,102,102,
+105,99,117,108,116,115,117,98,109,105,116,116,101,100,114,101,99,111,109,109,101
+,110,100,99,111,110,118,105,110,99,101,100,112,114,111,109,111,116,105,110,103,
+34,32,119,105,100,116,104,61,34,46,114,101,112,108,97,99,101,40,99,108,97,115,
+115,105,99,97,108,99,111,97,108,105,116,105,111,110,104,105,115,32,102,105,114,
+115,116,100,101,99,105,115,105,111,110,115,97,115,115,105,115,116,97,110,116,105
+,110,100,105,99,97,116,101,100,101,118,111,108,117,116,105,111,110,45,119,114,97
+,112,112,101,114,34,101,110,111,117,103,104,32,116,111,97,108,111,110,103,32,116
+,104,101,100,101,108,105,118,101,114,101,100,45,45,62,13,10,60,33,45,45,65,109,
+101,114,105,99,97,110,32,112,114,111,116,101,99,116,101,100,78,111,118,101,109,
+98,101,114,32,60,47,115,116,121,108,101,62,60,102,117,114,110,105,116,117,114,
+101,73,110,116,101,114,110,101,116,32,32,111,110,98,108,117,114,61,34,115,117,
+115,112,101,110,100,101,100,114,101,99,105,112,105,101,110,116,98,97,115,101,100
+,32,111,110,32,77,111,114,101,111,118,101,114,44,97,98,111,108,105,115,104,101,
+100,99,111,108,108,101,99,116,101,100,119,101,114,101,32,109,97,100,101,101,109,
+111,116,105,111,110,97,108,101,109,101,114,103,101,110,99,121,110,97,114,114,97,
+116,105,118,101,97,100,118,111,99,97,116,101,115,112,120,59,98,111,114,100,101,
+114,99,111,109,109,105,116,116,101,100,100,105,114,61,34,108,116,114,34,101,109,
+112,108,111,121,101,101,115,114,101,115,101,97,114,99,104,46,32,115,101,108,101,
+99,116,101,100,115,117,99,99,101,115,115,111,114,99,117,115,116,111,109,101,114,
+115,100,105,115,112,108,97,121,101,100,83,101,112,116,101,109,98,101,114,97,100,
+100,67,108,97,115,115,40,70,97,99,101,98,111,111,107,32,115,117,103,103,101,115,
+116,101,100,97,110,100,32,108,97,116,101,114,111,112,101,114,97,116,105,110,103,
+101,108,97,98,111,114,97,116,101,83,111,109,101,116,105,109,101,115,73,110,115,
+116,105,116,117,116,101,99,101,114,116,97,105,110,108,121,105,110,115,116,97,108
+,108,101,100,102,111,108,108,111,119,101,114,115,74,101,114,117,115,97,108,101,
+109,116,104,101,121,32,104,97,118,101,99,111,109,112,117,116,105,110,103,103,101
+,110,101,114,97,116,101,100,112,114,111,118,105,110,99,101,115,103,117,97,114,97
+,110,116,101,101,97,114,98,105,116,114,97,114,121,114,101,99,111,103,110,105,122
+,101,119,97,110,116,101,100,32,116,111,112,120,59,119,105,100,116,104,58,116,104
+,101,111,114,121,32,111,102,98,101,104,97,118,105,111,117,114,87,104,105,108,101
+,32,116,104,101,101,115,116,105,109,97,116,101,100,98,101,103,97,110,32,116,111,
+32,105,116,32,98,101,99,97,109,101,109,97,103,110,105,116,117,100,101,109,117,
+115,116,32,104,97,118,101,109,111,114,101,32,116,104,97,110,68,105,114,101,99,
+116,111,114,121,101,120,116,101,110,115,105,111,110,115,101,99,114,101,116,97,
+114,121,110,97,116,117,114,97,108,108,121,111,99,99,117,114,114,105,110,103,118,
+97,114,105,97,98,108,101,115,103,105,118,101,110,32,116,104,101,112,108,97,116,
+102,111,114,109,46,60,47,108,97,98,101,108,62,60,102,97,105,108,101,100,32,116,
+111,99,111,109,112,111,117,110,100,115,107,105,110,100,115,32,111,102,32,115,111
+,99,105,101,116,105,101,115,97,108,111,110,103,115,105,100,101,32,45,45,38,103,
+116,59,10,10,115,111,117,116,104,119,101,115,116,116,104,101,32,114,105,103,104,
+116,114,97,100,105,97,116,105,111,110,109,97,121,32,104,97,118,101,32,117,110,
+101,115,99,97,112,101,40,115,112,111,107,101,110,32,105,110,34,32,104,114,101,
+102,61,34,47,112,114,111,103,114,97,109,109,101,111,110,108,121,32,116,104,101,
+32,99,111,109,101,32,102,114,111,109,100,105,114,101,99,116,111,114,121,98,117,
+114,105,101,100,32,105,110,97,32,115,105,109,105,108,97,114,116,104,101,121,32,
+119,101,114,101,60,47,102,111,110,116,62,60,47,78,111,114,119,101,103,105,97,110
+,115,112,101,99,105,102,105,101,100,112,114,111,100,117,99,105,110,103,112,97,
+115,115,101,110,103,101,114,40,110,101,119,32,68,97,116,101,116,101,109,112,111,
+114,97,114,121,102,105,99,116,105,111,110,97,108,65,102,116,101,114,32,116,104,
+101,101,113,117,97,116,105,111,110,115,100,111,119,110,108,111,97,100,46,114,101
+,103,117,108,97,114,108,121,100,101,118,101,108,111,112,101,114,97,98,111,118,
+101,32,116,104,101,108,105,110,107,101,100,32,116,111,112,104,101,110,111,109,
+101,110,97,112,101,114,105,111,100,32,111,102,116,111,111,108,116,105,112,34,62,
+115,117,98,115,116,97,110,99,101,97,117,116,111,109,97,116,105,99,97,115,112,101
+,99,116,32,111,102,65,109,111,110,103,32,116,104,101,99,111,110,110,101,99,116,
+101,100,101,115,116,105,109,97,116,101,115,65,105,114,32,70,111,114,99,101,115,
+121,115,116,101,109,32,111,102,111,98,106,101,99,116,105,118,101,105,109,109,101
+,100,105,97,116,101,109,97,107,105,110,103,32,105,116,112,97,105,110,116,105,110
+,103,115,99,111,110,113,117,101,114,101,100,97,114,101,32,115,116,105,108,108,
+112,114,111,99,101,100,117,114,101,103,114,111,119,116,104,32,111,102,104,101,97
+,100,101,100,32,98,121,69,117,114,111,112,101,97,110,32,100,105,118,105,115,105,
+111,110,115,109,111,108,101,99,117,108,101,115,102,114,97,110,99,104,105,115,101
+,105,110,116,101,110,116,105,111,110,97,116,116,114,97,99,116,101,100,99,104,105
+,108,100,104,111,111,100,97,108,115,111,32,117,115,101,100,100,101,100,105,99,97
+,116,101,100,115,105,110,103,97,112,111,114,101,100,101,103,114,101,101,32,111,
+102,102,97,116,104,101,114,32,111,102,99,111,110,102,108,105,99,116,115,60,47,97
+,62,60,47,112,62,10,99,97,109,101,32,102,114,111,109,119,101,114,101,32,117,115,
+101,100,110,111,116,101,32,116,104,97,116,114,101,99,101,105,118,105,110,103,69,
+120,101,99,117,116,105,118,101,101,118,101,110,32,109,111,114,101,97,99,99,101,
+115,115,32,116,111,99,111,109,109,97,110,100,101,114,80,111,108,105,116,105,99,
+97,108,109,117,115,105,99,105,97,110,115,100,101,108,105,99,105,111,117,115,112,
+114,105,115,111,110,101,114,115,97,100,118,101,110,116,32,111,102,85,84,70,45,56
+,34,32,47,62,60,33,91,67,68,65,84,65,91,34,62,67,111,110,116,97,99,116,83,111,
+117,116,104,101,114,110,32,98,103,99,111,108,111,114,61,34,115,101,114,105,101,
+115,32,111,102,46,32,73,116,32,119,97,115,32,105,110,32,69,117,114,111,112,101,
+112,101,114,109,105,116,116,101,100,118,97,108,105,100,97,116,101,46,97,112,112,
+101,97,114,105,110,103,111,102,102,105,99,105,97,108,115,115,101,114,105,111,117
+,115,108,121,45,108,97,110,103,117,97,103,101,105,110,105,116,105,97,116,101,100
+,101,120,116,101,110,100,105,110,103,108,111,110,103,45,116,101,114,109,105,110,
+102,108,97,116,105,111,110,115,117,99,104,32,116,104,97,116,103,101,116,67,111,
+111,107,105,101,109,97,114,107,101,100,32,98,121,60,47,98,117,116,116,111,110,62
+,105,109,112,108,101,109,101,110,116,98,117,116,32,105,116,32,105,115,105,110,99
+,114,101,97,115,101,115,100,111,119,110,32,116,104,101,32,114,101,113,117,105,
+114,105,110,103,100,101,112,101,110,100,101,110,116,45,45,62,10,60,33,45,45,32,
+105,110,116,101,114,118,105,101,119,87,105,116,104,32,116,104,101,32,99,111,112,
+105,101,115,32,111,102,99,111,110,115,101,110,115,117,115,119,97,115,32,98,117,
+105,108,116,86,101,110,101,122,117,101,108,97,40,102,111,114,109,101,114,108,121
+,116,104,101,32,115,116,97,116,101,112,101,114,115,111,110,110,101,108,115,116,
+114,97,116,101,103,105,99,102,97,118,111,117,114,32,111,102,105,110,118,101,110,
+116,105,111,110,87,105,107,105,112,101,100,105,97,99,111,110,116,105,110,101,110
+,116,118,105,114,116,117,97,108,108,121,119,104,105,99,104,32,119,97,115,112,114
+,105,110,99,105,112,108,101,67,111,109,112,108,101,116,101,32,105,100,101,110,
+116,105,99,97,108,115,104,111,119,32,116,104,97,116,112,114,105,109,105,116,105,
+118,101,97,119,97,121,32,102,114,111,109,109,111,108,101,99,117,108,97,114,112,
+114,101,99,105,115,101,108,121,100,105,115,115,111,108,118,101,100,85,110,100,
+101,114,32,116,104,101,118,101,114,115,105,111,110,61,34,62,38,110,98,115,112,59
+,60,47,73,116,32,105,115,32,116,104,101,32,84,104,105,115,32,105,115,32,119,105,
+108,108,32,104,97,118,101,111,114,103,97,110,105,115,109,115,115,111,109,101,32,
+116,105,109,101,70,114,105,101,100,114,105,99,104,119,97,115,32,102,105,114,115,
+116,116,104,101,32,111,110,108,121,32,102,97,99,116,32,116,104,97,116,102,111,
+114,109,32,105,100,61,34,112,114,101,99,101,100,105,110,103,84,101,99,104,110,
+105,99,97,108,112,104,121,115,105,99,105,115,116,111,99,99,117,114,115,32,105,
+110,110,97,118,105,103,97,116,111,114,115,101,99,116,105,111,110,34,62,115,112,
+97,110,32,105,100,61,34,115,111,117,103,104,116,32,116,111,98,101,108,111,119,32
+,116,104,101,115,117,114,118,105,118,105,110,103,125,60,47,115,116,121,108,101,
+62,104,105,115,32,100,101,97,116,104,97,115,32,105,110,32,116,104,101,99,97,117,
+115,101,100,32,98,121,112,97,114,116,105,97,108,108,121,101,120,105,115,116,105,
+110,103,32,117,115,105,110,103,32,116,104,101,119,97,115,32,103,105,118,101,110,
+97,32,108,105,115,116,32,111,102,108,101,118,101,108,115,32,111,102,110,111,116,
+105,111,110,32,111,102,79,102,102,105,99,105,97,108,32,100,105,115,109,105,115,
+115,101,100,115,99,105,101,110,116,105,115,116,114,101,115,101,109,98,108,101,
+115,100,117,112,108,105,99,97,116,101,101,120,112,108,111,115,105,118,101,114,
+101,99,111,118,101,114,101,100,97,108,108,32,111,116,104,101,114,103,97,108,108,
+101,114,105,101,115,123,112,97,100,100,105,110,103,58,112,101,111,112,108,101,32
+,111,102,114,101,103,105,111,110,32,111,102,97,100,100,114,101,115,115,101,115,
+97,115,115,111,99,105,97,116,101,105,109,103,32,97,108,116,61,34,105,110,32,109,
+111,100,101,114,110,115,104,111,117,108,100,32,98,101,109,101,116,104,111,100,32
+,111,102,114,101,112,111,114,116,105,110,103,116,105,109,101,115,116,97,109,112,
+110,101,101,100,101,100,32,116,111,116,104,101,32,71,114,101,97,116,114,101,103,
+97,114,100,105,110,103,115,101,101,109,101,100,32,116,111,118,105,101,119,101,
+100,32,97,115,105,109,112,97,99,116,32,111,110,105,100,101,97,32,116,104,97,116,
+116,104,101,32,87,111,114,108,100,104,101,105,103,104,116,32,111,102,101,120,112
+,97,110,100,105,110,103,84,104,101,115,101,32,97,114,101,99,117,114,114,101,110,
+116,34,62,99,97,114,101,102,117,108,108,121,109,97,105,110,116,97,105,110,115,99
+,104,97,114,103,101,32,111,102,67,108,97,115,115,105,99,97,108,97,100,100,114,
+101,115,115,101,100,112,114,101,100,105,99,116,101,100,111,119,110,101,114,115,
+104,105,112,60,100,105,118,32,105,100,61,34,114,105,103,104,116,34,62,13,10,114,
+101,115,105,100,101,110,99,101,108,101,97,118,101,32,116,104,101,99,111,110,116,
+101,110,116,34,62,97,114,101,32,111,102,116,101,110,32,32,125,41,40,41,59,13,10,
+112,114,111,98,97,98,108,121,32,80,114,111,102,101,115,115,111,114,45,98,117,116
+,116,111,110,34,32,114,101,115,112,111,110,100,101,100,115,97,121,115,32,116,104
+,97,116,104,97,100,32,116,111,32,98,101,112,108,97,99,101,100,32,105,110,72,117,
+110,103,97,114,105,97,110,115,116,97,116,117,115,32,111,102,115,101,114,118,101,
+115,32,97,115,85,110,105,118,101,114,115,97,108,101,120,101,99,117,116,105,111,
+110,97,103,103,114,101,103,97,116,101,102,111,114,32,119,104,105,99,104,105,110,
+102,101,99,116,105,111,110,97,103,114,101,101,100,32,116,111,104,111,119,101,118
+,101,114,44,32,112,111,112,117,108,97,114,34,62,112,108,97,99,101,100,32,111,110
+,99,111,110,115,116,114,117,99,116,101,108,101,99,116,111,114,97,108,115,121,109
+,98,111,108,32,111,102,105,110,99,108,117,100,105,110,103,114,101,116,117,114,
+110,32,116,111,97,114,99,104,105,116,101,99,116,67,104,114,105,115,116,105,97,
+110,112,114,101,118,105,111,117,115,32,108,105,118,105,110,103,32,105,110,101,97
+,115,105,101,114,32,116,111,112,114,111,102,101,115,115,111,114,10,38,108,116,59
+,33,45,45,32,101,102,102,101,99,116,32,111,102,97,110,97,108,121,116,105,99,115,
+119,97,115,32,116,97,107,101,110,119,104,101,114,101,32,116,104,101,116,111,111,
+107,32,111,118,101,114,98,101,108,105,101,102,32,105,110,65,102,114,105,107,97,
+97,110,115,97,115,32,102,97,114,32,97,115,112,114,101,118,101,110,116,101,100,
+119,111,114,107,32,119,105,116,104,97,32,115,112,101,99,105,97,108,60,102,105,
+101,108,100,115,101,116,67,104,114,105,115,116,109,97,115,82,101,116,114,105,101
+,118,101,100,10,10,73,110,32,116,104,101,32,98,97,99,107,32,105,110,116,111,110,
+111,114,116,104,101,97,115,116,109,97,103,97,122,105,110,101,115,62,60,115,116,
+114,111,110,103,62,99,111,109,109,105,116,116,101,101,103,111,118,101,114,110,
+105,110,103,103,114,111,117,112,115,32,111,102,115,116,111,114,101,100,32,105,
+110,101,115,116,97,98,108,105,115,104,97,32,103,101,110,101,114,97,108,105,116,
+115,32,102,105,114,115,116,116,104,101,105,114,32,111,119,110,112,111,112,117,
+108,97,116,101,100,97,110,32,111,98,106,101,99,116,67,97,114,105,98,98,101,97,
+110,97,108,108,111,119,32,116,104,101,100,105,115,116,114,105,99,116,115,119,105
+,115,99,111,110,115,105,110,108,111,99,97,116,105,111,110,46,59,32,119,105,100,
+116,104,58,32,105,110,104,97,98,105,116,101,100,83,111,99,105,97,108,105,115,116
+,74,97,110,117,97,114,121,32,49,60,47,102,111,111,116,101,114,62,115,105,109,105
+,108,97,114,108,121,99,104,111,105,99,101,32,111,102,116,104,101,32,115,97,109,
+101,32,115,112,101,99,105,102,105,99,32,98,117,115,105,110,101,115,115,32,84,104
+,101,32,102,105,114,115,116,46,108,101,110,103,116,104,59,32,100,101,115,105,114
+,101,32,116,111,100,101,97,108,32,119,105,116,104,115,105,110,99,101,32,116,104,
+101,117,115,101,114,65,103,101,110,116,99,111,110,99,101,105,118,101,100,105,110
+,100,101,120,46,112,104,112,97,115,32,38,113,117,111,116,59,101,110,103,97,103,
+101,32,105,110,114,101,99,101,110,116,108,121,44,102,101,119,32,121,101,97,114,
+115,119,101,114,101,32,97,108,115,111,10,60,104,101,97,100,62,10,60,101,100,105,
+116,101,100,32,98,121,97,114,101,32,107,110,111,119,110,99,105,116,105,101,115,
+32,105,110,97,99,99,101,115,115,107,101,121,99,111,110,100,101,109,110,101,100,
+97,108,115,111,32,104,97,118,101,115,101,114,118,105,99,101,115,44,102,97,109,
+105,108,121,32,111,102,83,99,104,111,111,108,32,111,102,99,111,110,118,101,114,
+116,101,100,110,97,116,117,114,101,32,111,102,32,108,97,110,103,117,97,103,101,
+109,105,110,105,115,116,101,114,115,60,47,111,98,106,101,99,116,62,116,104,101,
+114,101,32,105,115,32,97,32,112,111,112,117,108,97,114,115,101,113,117,101,110,
+99,101,115,97,100,118,111,99,97,116,101,100,84,104,101,121,32,119,101,114,101,97
+,110,121,32,111,116,104,101,114,108,111,99,97,116,105,111,110,61,101,110,116,101
+,114,32,116,104,101,109,117,99,104,32,109,111,114,101,114,101,102,108,101,99,116
+,101,100,119,97,115,32,110,97,109,101,100,111,114,105,103,105,110,97,108,32,97,
+32,116,121,112,105,99,97,108,119,104,101,110,32,116,104,101,121,101,110,103,105,
+110,101,101,114,115,99,111,117,108,100,32,110,111,116,114,101,115,105,100,101,
+110,116,115,119,101,100,110,101,115,100,97,121,116,104,101,32,116,104,105,114,
+100,32,112,114,111,100,117,99,116,115,74,97,110,117,97,114,121,32,50,119,104,97,
+116,32,116,104,101,121,97,32,99,101,114,116,97,105,110,114,101,97,99,116,105,111
+,110,115,112,114,111,99,101,115,115,111,114,97,102,116,101,114,32,104,105,115,
+116,104,101,32,108,97,115,116,32,99,111,110,116,97,105,110,101,100,34,62,60,47,
+100,105,118,62,10,60,47,97,62,60,47,116,100,62,100,101,112,101,110,100,32,111,
+110,115,101,97,114,99,104,34,62,10,112,105,101,99,101,115,32,111,102,99,111,109,
+112,101,116,105,110,103,82,101,102,101,114,101,110,99,101,116,101,110,110,101,
+115,115,101,101,119,104,105,99,104,32,104,97,115,32,118,101,114,115,105,111,110,
+61,60,47,115,112,97,110,62,32,60,60,47,104,101,97,100,101,114,62,103,105,118,101
+,115,32,116,104,101,104,105,115,116,111,114,105,97,110,118,97,108,117,101,61,34,
+34,62,112,97,100,100,105,110,103,58,48,118,105,101,119,32,116,104,97,116,116,111
+,103,101,116,104,101,114,44,116,104,101,32,109,111,115,116,32,119,97,115,32,102,
+111,117,110,100,115,117,98,115,101,116,32,111,102,97,116,116,97,99,107,32,111,
+110,99,104,105,108,100,114,101,110,44,112,111,105,110,116,115,32,111,102,112,101
+,114,115,111,110,97,108,32,112,111,115,105,116,105,111,110,58,97,108,108,101,103
+,101,100,108,121,67,108,101,118,101,108,97,110,100,119,97,115,32,108,97,116,101,
+114,97,110,100,32,97,102,116,101,114,97,114,101,32,103,105,118,101,110,119,97,
+115,32,115,116,105,108,108,115,99,114,111,108,108,105,110,103,100,101,115,105,
+103,110,32,111,102,109,97,107,101,115,32,116,104,101,109,117,99,104,32,108,101,
+115,115,65,109,101,114,105,99,97,110,115,46,10,10,65,102,116,101,114,32,44,32,98
+,117,116,32,116,104,101,77,117,115,101,117,109,32,111,102,108,111,117,105,115,
+105,97,110,97,40,102,114,111,109,32,116,104,101,109,105,110,110,101,115,111,116,
+97,112,97,114,116,105,99,108,101,115,97,32,112,114,111,99,101,115,115,68,111,109
+,105,110,105,99,97,110,118,111,108,117,109,101,32,111,102,114,101,116,117,114,
+110,105,110,103,100,101,102,101,110,115,105,118,101,48,48,112,120,124,114,105,
+103,104,109,97,100,101,32,102,114,111,109,109,111,117,115,101,111,118,101,114,34
+,32,115,116,121,108,101,61,34,115,116,97,116,101,115,32,111,102,40,119,104,105,
+99,104,32,105,115,99,111,110,116,105,110,117,101,115,70,114,97,110,99,105,115,99
+,111,98,117,105,108,100,105,110,103,32,119,105,116,104,111,117,116,32,97,119,105
+,116,104,32,115,111,109,101,119,104,111,32,119,111,117,108,100,97,32,102,111,114
+,109,32,111,102,97,32,112,97,114,116,32,111,102,98,101,102,111,114,101,32,105,
+116,107,110,111,119,110,32,97,115,32,32,83,101,114,118,105,99,101,115,108,111,99
+,97,116,105,111,110,32,97,110,100,32,111,102,116,101,110,109,101,97,115,117,114,
+105,110,103,97,110,100,32,105,116,32,105,115,112,97,112,101,114,98,97,99,107,118
+,97,108,117,101,115,32,111,102,13,10,60,116,105,116,108,101,62,61,32,119,105,110
+,100,111,119,46,100,101,116,101,114,109,105,110,101,101,114,38,113,117,111,116,
+59,32,112,108,97,121,101,100,32,98,121,97,110,100,32,101,97,114,108,121,60,47,99
+,101,110,116,101,114,62,102,114,111,109,32,116,104,105,115,116,104,101,32,116,
+104,114,101,101,112,111,119,101,114,32,97,110,100,111,102,32,38,113,117,111,116,
+59,105,110,110,101,114,72,84,77,76,60,97,32,104,114,101,102,61,34,121,58,105,110
+,108,105,110,101,59,67,104,117,114,99,104,32,111,102,116,104,101,32,101,118,101,
+110,116,118,101,114,121,32,104,105,103,104,111,102,102,105,99,105,97,108,32,45,
+104,101,105,103,104,116,58,32,99,111,110,116,101,110,116,61,34,47,99,103,105,45,
+98,105,110,47,116,111,32,99,114,101,97,116,101,97,102,114,105,107,97,97,110,115,
+101,115,112,101,114,97,110,116,111,102,114,97,110,195,167,97,105,115,108,97,116,
+118,105,101,197,161,117,108,105,101,116,117,118,105,197,179,196,140,101,197,161,
+116,105,110,97,196,141,101,197,161,116,105,110,97,224,185,132,224,184,151,224,
+184,162,230,151,165,230,156,172,232,170,158,231,174,128,228,189,147,229,173,151,
+231,185,129,233,171,148,229,173,151,237,149,156,234,181,173,236,150,180,228,184,
+186,228,187,128,228,185,136,232,174,161,231,174,151,230,156,186,231,172,148,232,
+174,176,230,156,172,232,168,142,232,171,150,229,141,128,230,156,141,229,138,161,
+229,153,168,228,186,146,232,129,148,231,189,145,230,136,191,229,156,176,228,186,
+167,228,191,177,228,185,144,233,131,168,229,135,186,231,137,136,231,164,190,230,
+142,146,232,161,140,230,166,156,233,131,168,232,144,189,230,160,188,232,191,155,
+228,184,128,230,173,165,230,148,175,228,187,152,229,174,157,233,170,140,232,175,
+129,231,160,129,229,167,148,229,145,152,228,188,154,230,149,176,230,141,174,229,
+186,147,230,182,136,232,180,185,232,128,133,229,138,158,229,133,172,229,174,164,
+232,174,168,232,174,186,229,140,186,230,183,177,229,156,179,229,184,130,230,146,
+173,230,148,190,229,153,168,229,140,151,228,186,172,229,184,130,229,164,167,229,
+173,166,231,148,159,232,182,138,230,157,165,232,182,138,231,174,161,231,144,134,
+229,145,152,228,191,161,230,129,175,231,189,145,115,101,114,118,105,99,105,111,
+115,97,114,116,195,173,99,117,108,111,97,114,103,101,110,116,105,110,97,98,97,
+114,99,101,108,111,110,97,99,117,97,108,113,117,105,101,114,112,117,98,108,105,
+99,97,100,111,112,114,111,100,117,99,116,111,115,112,111,108,195,173,116,105,99,
+97,114,101,115,112,117,101,115,116,97,119,105,107,105,112,101,100,105,97,115,105
+,103,117,105,101,110,116,101,98,195,186,115,113,117,101,100,97,99,111,109,117,
+110,105,100,97,100,115,101,103,117,114,105,100,97,100,112,114,105,110,99,105,112
+,97,108,112,114,101,103,117,110,116,97,115,99,111,110,116,101,110,105,100,111,
+114,101,115,112,111,110,100,101,114,118,101,110,101,122,117,101,108,97,112,114,
+111,98,108,101,109,97,115,100,105,99,105,101,109,98,114,101,114,101,108,97,99,
+105,195,179,110,110,111,118,105,101,109,98,114,101,115,105,109,105,108,97,114,
+101,115,112,114,111,121,101,99,116,111,115,112,114,111,103,114,97,109,97,115,105
+,110,115,116,105,116,117,116,111,97,99,116,105,118,105,100,97,100,101,110,99,117
+,101,110,116,114,97,101,99,111,110,111,109,195,173,97,105,109,195,161,103,101,
+110,101,115,99,111,110,116,97,99,116,97,114,100,101,115,99,97,114,103,97,114,110
+,101,99,101,115,97,114,105,111,97,116,101,110,99,105,195,179,110,116,101,108,195
+,169,102,111,110,111,99,111,109,105,115,105,195,179,110,99,97,110,99,105,111,110
+,101,115,99,97,112,97,99,105,100,97,100,101,110,99,111,110,116,114,97,114,97,110
+,195,161,108,105,115,105,115,102,97,118,111,114,105,116,111,115,116,195,169,114,
+109,105,110,111,115,112,114,111,118,105,110,99,105,97,101,116,105,113,117,101,
+116,97,115,101,108,101,109,101,110,116,111,115,102,117,110,99,105,111,110,101,
+115,114,101,115,117,108,116,97,100,111,99,97,114,195,161,99,116,101,114,112,114,
+111,112,105,101,100,97,100,112,114,105,110,99,105,112,105,111,110,101,99,101,115
+,105,100,97,100,109,117,110,105,99,105,112,97,108,99,114,101,97,99,105,195,179,
+110,100,101,115,99,97,114,103,97,115,112,114,101,115,101,110,99,105,97,99,111,
+109,101,114,99,105,97,108,111,112,105,110,105,111,110,101,115,101,106,101,114,99
+,105,99,105,111,101,100,105,116,111,114,105,97,108,115,97,108,97,109,97,110,99,
+97,103,111,110,122,195,161,108,101,122,100,111,99,117,109,101,110,116,111,112,
+101,108,195,173,99,117,108,97,114,101,99,105,101,110,116,101,115,103,101,110,101
+,114,97,108,101,115,116,97,114,114,97,103,111,110,97,112,114,195,161,99,116,105,
+99,97,110,111,118,101,100,97,100,101,115,112,114,111,112,117,101,115,116,97,112,
+97,99,105,101,110,116,101,115,116,195,169,99,110,105,99,97,115,111,98,106,101,
+116,105,118,111,115,99,111,110,116,97,99,116,111,115,224,164,174,224,165,135,224
+,164,130,224,164,178,224,164,191,224,164,143,224,164,185,224,165,136,224,164,130
+,224,164,151,224,164,175,224,164,190,224,164,184,224,164,190,224,164,165,224,164
+,143,224,164,181,224,164,130,224,164,176,224,164,185,224,165,135,224,164,149,224
+,165,139,224,164,136,224,164,149,224,165,129,224,164,155,224,164,176,224,164,185
+,224,164,190,224,164,172,224,164,190,224,164,166,224,164,149,224,164,185,224,164
+,190,224,164,184,224,164,173,224,165,128,224,164,185,224,165,129,224,164,143,224
+,164,176,224,164,185,224,165,128,224,164,174,224,165,136,224,164,130,224,164,166
+,224,164,191,224,164,168,224,164,172,224,164,190,224,164,164,100,105,112,108,111
+,100,111,99,115,224,164,184,224,164,174,224,164,175,224,164,176,224,165,130,224,
+164,170,224,164,168,224,164,190,224,164,174,224,164,170,224,164,164,224,164,190,
+224,164,171,224,164,191,224,164,176,224,164,148,224,164,184,224,164,164,224,164,
+164,224,164,176,224,164,185,224,164,178,224,165,139,224,164,151,224,164,185,224,
+165,129,224,164,134,224,164,172,224,164,190,224,164,176,224,164,166,224,165,135,
+224,164,182,224,164,185,224,165,129,224,164,136,224,164,150,224,165,135,224,164,
+178,224,164,175,224,164,166,224,164,191,224,164,149,224,164,190,224,164,174,224,
+164,181,224,165,135,224,164,172,224,164,164,224,165,128,224,164,168,224,164,172,
+224,165,128,224,164,154,224,164,174,224,165,140,224,164,164,224,164,184,224,164,
+190,224,164,178,224,164,178,224,165,135,224,164,150,224,164,156,224,165,137,224,
+164,172,224,164,174,224,164,166,224,164,166,224,164,164,224,164,165,224,164,190,
+224,164,168,224,164,185,224,165,128,224,164,182,224,164,185,224,164,176,224,164,
+133,224,164,178,224,164,151,224,164,149,224,164,173,224,165,128,224,164,168,224,
+164,151,224,164,176,224,164,170,224,164,190,224,164,184,224,164,176,224,164,190,
+224,164,164,224,164,149,224,164,191,224,164,143,224,164,137,224,164,184,224,165,
+135,224,164,151,224,164,175,224,165,128,224,164,185,224,165,130,224,164,129,224,
+164,134,224,164,151,224,165,135,224,164,159,224,165,128,224,164,174,224,164,150,
+224,165,139,224,164,156,224,164,149,224,164,190,224,164,176,224,164,133,224,164,
+173,224,165,128,224,164,151,224,164,175,224,165,135,224,164,164,224,165,129,224,
+164,174,224,164,181,224,165,139,224,164,159,224,164,166,224,165,135,224,164,130,
+224,164,133,224,164,151,224,164,176,224,164,144,224,164,184,224,165,135,224,164,
+174,224,165,135,224,164,178,224,164,178,224,164,151,224,164,190,224,164,185,224,
+164,190,224,164,178,224,164,138,224,164,170,224,164,176,224,164,154,224,164,190,
+224,164,176,224,164,144,224,164,184,224,164,190,224,164,166,224,165,135,224,164,
+176,224,164,156,224,164,191,224,164,184,224,164,166,224,164,191,224,164,178,224,
+164,172,224,164,130,224,164,166,224,164,172,224,164,168,224,164,190,224,164,185,
+224,165,130,224,164,130,224,164,178,224,164,190,224,164,150,224,164,156,224,165,
+128,224,164,164,224,164,172,224,164,159,224,164,168,224,164,174,224,164,191,224,
+164,178,224,164,135,224,164,184,224,165,135,224,164,134,224,164,168,224,165,135,
+224,164,168,224,164,175,224,164,190,224,164,149,224,165,129,224,164,178,224,164,
+178,224,165,137,224,164,151,224,164,173,224,164,190,224,164,151,224,164,176,224,
+165,135,224,164,178,224,164,156,224,164,151,224,164,185,224,164,176,224,164,190,
+224,164,174,224,164,178,224,164,151,224,165,135,224,164,170,224,165,135,224,164,
+156,224,164,185,224,164,190,224,164,165,224,164,135,224,164,184,224,165,128,224,
+164,184,224,164,185,224,165,128,224,164,149,224,164,178,224,164,190,224,164,160,
+224,165,128,224,164,149,224,164,185,224,164,190,224,164,129,224,164,166,224,165,
+130,224,164,176,224,164,164,224,164,185,224,164,164,224,164,184,224,164,190,224,
+164,164,224,164,175,224,164,190,224,164,166,224,164,134,224,164,175,224,164,190,
+224,164,170,224,164,190,224,164,149,224,164,149,224,165,140,224,164,168,224,164,
+182,224,164,190,224,164,174,224,164,166,224,165,135,224,164,150,224,164,175,224,
+164,185,224,165,128,224,164,176,224,164,190,224,164,175,224,164,150,224,165,129,
+224,164,166,224,164,178,224,164,151,224,165,128,99,97,116,101,103,111,114,105,
+101,115,101,120,112,101,114,105,101,110,99,101,60,47,116,105,116,108,101,62,13,
+10,67,111,112,121,114,105,103,104,116,32,106,97,118,97,115,99,114,105,112,116,99
+,111,110,100,105,116,105,111,110,115,101,118,101,114,121,116,104,105,110,103,60,
+112,32,99,108,97,115,115,61,34,116,101,99,104,110,111,108,111,103,121,98,97,99,
+107,103,114,111,117,110,100,60,97,32,99,108,97,115,115,61,34,109,97,110,97,103,
+101,109,101,110,116,38,99,111,112,121,59,32,50,48,49,106,97,118,97,83,99,114,105
+,112,116,99,104,97,114,97,99,116,101,114,115,98,114,101,97,100,99,114,117,109,98
+,116,104,101,109,115,101,108,118,101,115,104,111,114,105,122,111,110,116,97,108,
+103,111,118,101,114,110,109,101,110,116,67,97,108,105,102,111,114,110,105,97,97,
+99,116,105,118,105,116,105,101,115,100,105,115,99,111,118,101,114,101,100,78,97,
+118,105,103,97,116,105,111,110,116,114,97,110,115,105,116,105,111,110,99,111,110
+,110,101,99,116,105,111,110,110,97,118,105,103,97,116,105,111,110,97,112,112,101
+,97,114,97,110,99,101,60,47,116,105,116,108,101,62,60,109,99,104,101,99,107,98,
+111,120,34,32,116,101,99,104,110,105,113,117,101,115,112,114,111,116,101,99,116,
+105,111,110,97,112,112,97,114,101,110,116,108,121,97,115,32,119,101,108,108,32,
+97,115,117,110,116,39,44,32,39,85,65,45,114,101,115,111,108,117,116,105,111,110,
+111,112,101,114,97,116,105,111,110,115,116,101,108,101,118,105,115,105,111,110,
+116,114,97,110,115,108,97,116,101,100,87,97,115,104,105,110,103,116,111,110,110,
+97,118,105,103,97,116,111,114,46,32,61,32,119,105,110,100,111,119,46,105,109,112
+,114,101,115,115,105,111,110,38,108,116,59,98,114,38,103,116,59,108,105,116,101,
+114,97,116,117,114,101,112,111,112,117,108,97,116,105,111,110,98,103,99,111,108,
+111,114,61,34,35,101,115,112,101,99,105,97,108,108,121,32,99,111,110,116,101,110
+,116,61,34,112,114,111,100,117,99,116,105,111,110,110,101,119,115,108,101,116,
+116,101,114,112,114,111,112,101,114,116,105,101,115,100,101,102,105,110,105,116,
+105,111,110,108,101,97,100,101,114,115,104,105,112,84,101,99,104,110,111,108,111
+,103,121,80,97,114,108,105,97,109,101,110,116,99,111,109,112,97,114,105,115,111,
+110,117,108,32,99,108,97,115,115,61,34,46,105,110,100,101,120,79,102,40,34,99,
+111,110,99,108,117,115,105,111,110,100,105,115,99,117,115,115,105,111,110,99,111
+,109,112,111,110,101,110,116,115,98,105,111,108,111,103,105,99,97,108,82,101,118
+,111,108,117,116,105,111,110,95,99,111,110,116,97,105,110,101,114,117,110,100,
+101,114,115,116,111,111,100,110,111,115,99,114,105,112,116,62,60,112,101,114,109
+,105,115,115,105,111,110,101,97,99,104,32,111,116,104,101,114,97,116,109,111,115
+,112,104,101,114,101,32,111,110,102,111,99,117,115,61,34,60,102,111,114,109,32,
+105,100,61,34,112,114,111,99,101,115,115,105,110,103,116,104,105,115,46,118,97,
+108,117,101,103,101,110,101,114,97,116,105,111,110,67,111,110,102,101,114,101,
+110,99,101,115,117,98,115,101,113,117,101,110,116,119,101,108,108,45,107,110,111
+,119,110,118,97,114,105,97,116,105,111,110,115,114,101,112,117,116,97,116,105,
+111,110,112,104,101,110,111,109,101,110,111,110,100,105,115,99,105,112,108,105,
+110,101,108,111,103,111,46,112,110,103,34,32,40,100,111,99,117,109,101,110,116,
+44,98,111,117,110,100,97,114,105,101,115,101,120,112,114,101,115,115,105,111,110
+,115,101,116,116,108,101,109,101,110,116,66,97,99,107,103,114,111,117,110,100,
+111,117,116,32,111,102,32,116,104,101,101,110,116,101,114,112,114,105,115,101,40
+,34,104,116,116,112,115,58,34,32,117,110,101,115,99,97,112,101,40,34,112,97,115,
+115,119,111,114,100,34,32,100,101,109,111,99,114,97,116,105,99,60,97,32,104,114,
+101,102,61,34,47,119,114,97,112,112,101,114,34,62,10,109,101,109,98,101,114,115,
+104,105,112,108,105,110,103,117,105,115,116,105,99,112,120,59,112,97,100,100,105
+,110,103,112,104,105,108,111,115,111,112,104,121,97,115,115,105,115,116,97,110,
+99,101,117,110,105,118,101,114,115,105,116,121,102,97,99,105,108,105,116,105,101
+,115,114,101,99,111,103,110,105,122,101,100,112,114,101,102,101,114,101,110,99,
+101,105,102,32,40,116,121,112,101,111,102,109,97,105,110,116,97,105,110,101,100,
+118,111,99,97,98,117,108,97,114,121,104,121,112,111,116,104,101,115,105,115,46,
+115,117,98,109,105,116,40,41,59,38,97,109,112,59,110,98,115,112,59,97,110,110,
+111,116,97,116,105,111,110,98,101,104,105,110,100,32,116,104,101,70,111,117,110,
+100,97,116,105,111,110,112,117,98,108,105,115,104,101,114,34,97,115,115,117,109,
+112,116,105,111,110,105,110,116,114,111,100,117,99,101,100,99,111,114,114,117,
+112,116,105,111,110,115,99,105,101,110,116,105,115,116,115,101,120,112,108,105,
+99,105,116,108,121,105,110,115,116,101,97,100,32,111,102,100,105,109,101,110,115
+,105,111,110,115,32,111,110,67,108,105,99,107,61,34,99,111,110,115,105,100,101,
+114,101,100,100,101,112,97,114,116,109,101,110,116,111,99,99,117,112,97,116,105,
+111,110,115,111,111,110,32,97,102,116,101,114,105,110,118,101,115,116,109,101,
+110,116,112,114,111,110,111,117,110,99,101,100,105,100,101,110,116,105,102,105,
+101,100,101,120,112,101,114,105,109,101,110,116,77,97,110,97,103,101,109,101,110
+,116,103,101,111,103,114,97,112,104,105,99,34,32,104,101,105,103,104,116,61,34,
+108,105,110,107,32,114,101,108,61,34,46,114,101,112,108,97,99,101,40,47,100,101,
+112,114,101,115,115,105,111,110,99,111,110,102,101,114,101,110,99,101,112,117,
+110,105,115,104,109,101,110,116,101,108,105,109,105,110,97,116,101,100,114,101,
+115,105,115,116,97,110,99,101,97,100,97,112,116,97,116,105,111,110,111,112,112,
+111,115,105,116,105,111,110,119,101,108,108,32,107,110,111,119,110,115,117,112,
+112,108,101,109,101,110,116,100,101,116,101,114,109,105,110,101,100,104,49,32,99
+,108,97,115,115,61,34,48,112,120,59,109,97,114,103,105,110,109,101,99,104,97,110
+,105,99,97,108,115,116,97,116,105,115,116,105,99,115,99,101,108,101,98,114,97,
+116,101,100,71,111,118,101,114,110,109,101,110,116,10,10,68,117,114,105,110,103,
+32,116,100,101,118,101,108,111,112,101,114,115,97,114,116,105,102,105,99,105,97,
+108,101,113,117,105,118,97,108,101,110,116,111,114,105,103,105,110,97,116,101,
+100,67,111,109,109,105,115,115,105,111,110,97,116,116,97,99,104,109,101,110,116,
+60,115,112,97,110,32,105,100,61,34,116,104,101,114,101,32,119,101,114,101,78,101
+,100,101,114,108,97,110,100,115,98,101,121,111,110,100,32,116,104,101,114,101,
+103,105,115,116,101,114,101,100,106,111,117,114,110,97,108,105,115,116,102,114,
+101,113,117,101,110,116,108,121,97,108,108,32,111,102,32,116,104,101,108,97,110,
+103,61,34,101,110,34,32,60,47,115,116,121,108,101,62,13,10,97,98,115,111,108,117
+,116,101,59,32,115,117,112,112,111,114,116,105,110,103,101,120,116,114,101,109,
+101,108,121,32,109,97,105,110,115,116,114,101,97,109,60,47,115,116,114,111,110,
+103,62,32,112,111,112,117,108,97,114,105,116,121,101,109,112,108,111,121,109,101
+,110,116,60,47,116,97,98,108,101,62,13,10,32,99,111,108,115,112,97,110,61,34,60,
+47,102,111,114,109,62,10,32,32,99,111,110,118,101,114,115,105,111,110,97,98,111,
+117,116,32,116,104,101,32,60,47,112,62,60,47,100,105,118,62,105,110,116,101,103,
+114,97,116,101,100,34,32,108,97,110,103,61,34,101,110,80,111,114,116,117,103,117
+,101,115,101,115,117,98,115,116,105,116,117,116,101,105,110,100,105,118,105,100,
+117,97,108,105,109,112,111,115,115,105,98,108,101,109,117,108,116,105,109,101,
+100,105,97,97,108,109,111,115,116,32,97,108,108,112,120,32,115,111,108,105,100,
+32,35,97,112,97,114,116,32,102,114,111,109,115,117,98,106,101,99,116,32,116,111,
+105,110,32,69,110,103,108,105,115,104,99,114,105,116,105,99,105,122,101,100,101,
+120,99,101,112,116,32,102,111,114,103,117,105,100,101,108,105,110,101,115,111,
+114,105,103,105,110,97,108,108,121,114,101,109,97,114,107,97,98,108,101,116,104,
+101,32,115,101,99,111,110,100,104,50,32,99,108,97,115,115,61,34,60,97,32,116,105
+,116,108,101,61,34,40,105,110,99,108,117,100,105,110,103,112,97,114,97,109,101,
+116,101,114,115,112,114,111,104,105,98,105,116,101,100,61,32,34,104,116,116,112,
+58,47,47,100,105,99,116,105,111,110,97,114,121,112,101,114,99,101,112,116,105,
+111,110,114,101,118,111,108,117,116,105,111,110,102,111,117,110,100,97,116,105,
+111,110,112,120,59,104,101,105,103,104,116,58,115,117,99,99,101,115,115,102,117,
+108,115,117,112,112,111,114,116,101,114,115,109,105,108,108,101,110,110,105,117,
+109,104,105,115,32,102,97,116,104,101,114,116,104,101,32,38,113,117,111,116,59,
+110,111,45,114,101,112,101,97,116,59,99,111,109,109,101,114,99,105,97,108,105,
+110,100,117,115,116,114,105,97,108,101,110,99,111,117,114,97,103,101,100,97,109,
+111,117,110,116,32,111,102,32,117,110,111,102,102,105,99,105,97,108,101,102,102,
+105,99,105,101,110,99,121,82,101,102,101,114,101,110,99,101,115,99,111,111,114,
+100,105,110,97,116,101,100,105,115,99,108,97,105,109,101,114,101,120,112,101,100
+,105,116,105,111,110,100,101,118,101,108,111,112,105,110,103,99,97,108,99,117,
+108,97,116,101,100,115,105,109,112,108,105,102,105,101,100,108,101,103,105,116,
+105,109,97,116,101,115,117,98,115,116,114,105,110,103,40,48,34,32,99,108,97,115,
+115,61,34,99,111,109,112,108,101,116,101,108,121,105,108,108,117,115,116,114,97,
+116,101,102,105,118,101,32,121,101,97,114,115,105,110,115,116,114,117,109,101,
+110,116,80,117,98,108,105,115,104,105,110,103,49,34,32,99,108,97,115,115,61,34,
+112,115,121,99,104,111,108,111,103,121,99,111,110,102,105,100,101,110,99,101,110
+,117,109,98,101,114,32,111,102,32,97,98,115,101,110,99,101,32,111,102,102,111,99
+,117,115,101,100,32,111,110,106,111,105,110,101,100,32,116,104,101,115,116,114,
+117,99,116,117,114,101,115,112,114,101,118,105,111,117,115,108,121,62,60,47,105,
+102,114,97,109,101,62,111,110,99,101,32,97,103,97,105,110,98,117,116,32,114,97,
+116,104,101,114,105,109,109,105,103,114,97,110,116,115,111,102,32,99,111,117,114
+,115,101,44,97,32,103,114,111,117,112,32,111,102,76,105,116,101,114,97,116,117,
+114,101,85,110,108,105,107,101,32,116,104,101,60,47,97,62,38,110,98,115,112,59,
+10,102,117,110,99,116,105,111,110,32,105,116,32,119,97,115,32,116,104,101,67,111
+,110,118,101,110,116,105,111,110,97,117,116,111,109,111,98,105,108,101,80,114,
+111,116,101,115,116,97,110,116,97,103,103,114,101,115,115,105,118,101,97,102,116
+,101,114,32,116,104,101,32,83,105,109,105,108,97,114,108,121,44,34,32,47,62,60,
+47,100,105,118,62,99,111,108,108,101,99,116,105,111,110,13,10,102,117,110,99,116
+,105,111,110,118,105,115,105,98,105,108,105,116,121,116,104,101,32,117,115,101,
+32,111,102,118,111,108,117,110,116,101,101,114,115,97,116,116,114,97,99,116,105,
+111,110,117,110,100,101,114,32,116,104,101,32,116,104,114,101,97,116,101,110,101
+,100,42,60,33,91,67,68,65,84,65,91,105,109,112,111,114,116,97,110,99,101,105,110
+,32,103,101,110,101,114,97,108,116,104,101,32,108,97,116,116,101,114,60,47,102,
+111,114,109,62,10,60,47,46,105,110,100,101,120,79,102,40,39,105,32,61,32,48,59,
+32,105,32,60,100,105,102,102,101,114,101,110,99,101,100,101,118,111,116,101,100,
+32,116,111,116,114,97,100,105,116,105,111,110,115,115,101,97,114,99,104,32,102,
+111,114,117,108,116,105,109,97,116,101,108,121,116,111,117,114,110,97,109,101,
+110,116,97,116,116,114,105,98,117,116,101,115,115,111,45,99,97,108,108,101,100,
+32,125,10,60,47,115,116,121,108,101,62,101,118,97,108,117,97,116,105,111,110,101
+,109,112,104,97,115,105,122,101,100,97,99,99,101,115,115,105,98,108,101,60,47,
+115,101,99,116,105,111,110,62,115,117,99,99,101,115,115,105,111,110,97,108,111,
+110,103,32,119,105,116,104,77,101,97,110,119,104,105,108,101,44,105,110,100,117,
+115,116,114,105,101,115,60,47,97,62,60,98,114,32,47,62,104,97,115,32,98,101,99,
+111,109,101,97,115,112,101,99,116,115,32,111,102,84,101,108,101,118,105,115,105,
+111,110,115,117,102,102,105,99,105,101,110,116,98,97,115,107,101,116,98,97,108,
+108,98,111,116,104,32,115,105,100,101,115,99,111,110,116,105,110,117,105,110,103
+,97,110,32,97,114,116,105,99,108,101,60,105,109,103,32,97,108,116,61,34,97,100,
+118,101,110,116,117,114,101,115,104,105,115,32,109,111,116,104,101,114,109,97,
+110,99,104,101,115,116,101,114,112,114,105,110,99,105,112,108,101,115,112,97,114
+,116,105,99,117,108,97,114,99,111,109,109,101,110,116,97,114,121,101,102,102,101
+,99,116,115,32,111,102,100,101,99,105,100,101,100,32,116,111,34,62,60,115,116,
+114,111,110,103,62,112,117,98,108,105,115,104,101,114,115,74,111,117,114,110,97,
+108,32,111,102,100,105,102,102,105,99,117,108,116,121,102,97,99,105,108,105,116,
+97,116,101,97,99,99,101,112,116,97,98,108,101,115,116,121,108,101,46,99,115,115,
+34,9,102,117,110,99,116,105,111,110,32,105,110,110,111,118,97,116,105,111,110,62
+,67,111,112,121,114,105,103,104,116,115,105,116,117,97,116,105,111,110,115,119,
+111,117,108,100,32,104,97,118,101,98,117,115,105,110,101,115,115,101,115,68,105,
+99,116,105,111,110,97,114,121,115,116,97,116,101,109,101,110,116,115,111,102,116
+,101,110,32,117,115,101,100,112,101,114,115,105,115,116,101,110,116,105,110,32,
+74,97,110,117,97,114,121,99,111,109,112,114,105,115,105,110,103,60,47,116,105,
+116,108,101,62,10,9,100,105,112,108,111,109,97,116,105,99,99,111,110,116,97,105,
+110,105,110,103,112,101,114,102,111,114,109,105,110,103,101,120,116,101,110,115,
+105,111,110,115,109,97,121,32,110,111,116,32,98,101,99,111,110,99,101,112,116,32
+,111,102,32,111,110,99,108,105,99,107,61,34,73,116,32,105,115,32,97,108,115,111,
+102,105,110,97,110,99,105,97,108,32,109,97,107,105,110,103,32,116,104,101,76,117
+,120,101,109,98,111,117,114,103,97,100,100,105,116,105,111,110,97,108,97,114,101
+,32,99,97,108,108,101,100,101,110,103,97,103,101,100,32,105,110,34,115,99,114,
+105,112,116,34,41,59,98,117,116,32,105,116,32,119,97,115,101,108,101,99,116,114,
+111,110,105,99,111,110,115,117,98,109,105,116,61,34,10,60,33,45,45,32,69,110,100
+,32,101,108,101,99,116,114,105,99,97,108,111,102,102,105,99,105,97,108,108,121,
+115,117,103,103,101,115,116,105,111,110,116,111,112,32,111,102,32,116,104,101,
+117,110,108,105,107,101,32,116,104,101,65,117,115,116,114,97,108,105,97,110,79,
+114,105,103,105,110,97,108,108,121,114,101,102,101,114,101,110,99,101,115,10,60,
+47,104,101,97,100,62,13,10,114,101,99,111,103,110,105,115,101,100,105,110,105,
+116,105,97,108,105,122,101,108,105,109,105,116,101,100,32,116,111,65,108,101,120
+,97,110,100,114,105,97,114,101,116,105,114,101,109,101,110,116,65,100,118,101,
+110,116,117,114,101,115,102,111,117,114,32,121,101,97,114,115,10,10,38,108,116,
+59,33,45,45,32,105,110,99,114,101,97,115,105,110,103,100,101,99,111,114,97,116,
+105,111,110,104,51,32,99,108,97,115,115,61,34,111,114,105,103,105,110,115,32,111
+,102,111,98,108,105,103,97,116,105,111,110,114,101,103,117,108,97,116,105,111,
+110,99,108,97,115,115,105,102,105,101,100,40,102,117,110,99,116,105,111,110,40,
+97,100,118,97,110,116,97,103,101,115,98,101,105,110,103,32,116,104,101,32,104,
+105,115,116,111,114,105,97,110,115,60,98,97,115,101,32,104,114,101,102,114,101,
+112,101,97,116,101,100,108,121,119,105,108,108,105,110,103,32,116,111,99,111,109
+,112,97,114,97,98,108,101,100,101,115,105,103,110,97,116,101,100,110,111,109,105
+,110,97,116,105,111,110,102,117,110,99,116,105,111,110,97,108,105,110,115,105,
+100,101,32,116,104,101,114,101,118,101,108,97,116,105,111,110,101,110,100,32,111
+,102,32,116,104,101,115,32,102,111,114,32,116,104,101,32,97,117,116,104,111,114,
+105,122,101,100,114,101,102,117,115,101,100,32,116,111,116,97,107,101,32,112,108
+,97,99,101,97,117,116,111,110,111,109,111,117,115,99,111,109,112,114,111,109,105
+,115,101,112,111,108,105,116,105,99,97,108,32,114,101,115,116,97,117,114,97,110,
+116,116,119,111,32,111,102,32,116,104,101,70,101,98,114,117,97,114,121,32,50,113
+,117,97,108,105,116,121,32,111,102,115,119,102,111,98,106,101,99,116,46,117,110,
+100,101,114,115,116,97,110,100,110,101,97,114,108,121,32,97,108,108,119,114,105,
+116,116,101,110,32,98,121,105,110,116,101,114,118,105,101,119,115,34,32,119,105,
+100,116,104,61,34,49,119,105,116,104,100,114,97,119,97,108,102,108,111,97,116,58
+,108,101,102,116,105,115,32,117,115,117,97,108,108,121,99,97,110,100,105,100,97,
+116,101,115,110,101,119,115,112,97,112,101,114,115,109,121,115,116,101,114,105,
+111,117,115,68,101,112,97,114,116,109,101,110,116,98,101,115,116,32,107,110,111,
+119,110,112,97,114,108,105,97,109,101,110,116,115,117,112,112,114,101,115,115,
+101,100,99,111,110,118,101,110,105,101,110,116,114,101,109,101,109,98,101,114,
+101,100,100,105,102,102,101,114,101,110,116,32,115,121,115,116,101,109,97,116,
+105,99,104,97,115,32,108,101,100,32,116,111,112,114,111,112,97,103,97,110,100,97
+,99,111,110,116,114,111,108,108,101,100,105,110,102,108,117,101,110,99,101,115,
+99,101,114,101,109,111,110,105,97,108,112,114,111,99,108,97,105,109,101,100,80,
+114,111,116,101,99,116,105,111,110,108,105,32,99,108,97,115,115,61,34,83,99,105,
+101,110,116,105,102,105,99,99,108,97,115,115,61,34,110,111,45,116,114,97,100,101
+,109,97,114,107,115,109,111,114,101,32,116,104,97,110,32,119,105,100,101,115,112
+,114,101,97,100,76,105,98,101,114,97,116,105,111,110,116,111,111,107,32,112,108,
+97,99,101,100,97,121,32,111,102,32,116,104,101,97,115,32,108,111,110,103,32,97,
+115,105,109,112,114,105,115,111,110,101,100,65,100,100,105,116,105,111,110,97,
+108,10,60,104,101,97,100,62,10,60,109,76,97,98,111,114,97,116,111,114,121,78,111
+,118,101,109,98,101,114,32,50,101,120,99,101,112,116,105,111,110,115,73,110,100,
+117,115,116,114,105,97,108,118,97,114,105,101,116,121,32,111,102,102,108,111,97,
+116,58,32,108,101,102,68,117,114,105,110,103,32,116,104,101,97,115,115,101,115,
+115,109,101,110,116,104,97,118,101,32,98,101,101,110,32,100,101,97,108,115,32,
+119,105,116,104,83,116,97,116,105,115,116,105,99,115,111,99,99,117,114,114,101,
+110,99,101,47,117,108,62,60,47,100,105,118,62,99,108,101,97,114,102,105,120,34,
+62,116,104,101,32,112,117,98,108,105,99,109,97,110,121,32,121,101,97,114,115,119
+,104,105,99,104,32,119,101,114,101,111,118,101,114,32,116,105,109,101,44,115,121
+,110,111,110,121,109,111,117,115,99,111,110,116,101,110,116,34,62,10,112,114,101
+,115,117,109,97,98,108,121,104,105,115,32,102,97,109,105,108,121,117,115,101,114
+,65,103,101,110,116,46,117,110,101,120,112,101,99,116,101,100,105,110,99,108,117
+,100,105,110,103,32,99,104,97,108,108,101,110,103,101,100,97,32,109,105,110,111,
+114,105,116,121,117,110,100,101,102,105,110,101,100,34,98,101,108,111,110,103,
+115,32,116,111,116,97,107,101,110,32,102,114,111,109,105,110,32,79,99,116,111,98
+,101,114,112,111,115,105,116,105,111,110,58,32,115,97,105,100,32,116,111,32,98,
+101,114,101,108,105,103,105,111,117,115,32,70,101,100,101,114,97,116,105,111,110
+,32,114,111,119,115,112,97,110,61,34,111,110,108,121,32,97,32,102,101,119,109,
+101,97,110,116,32,116,104,97,116,108,101,100,32,116,111,32,116,104,101,45,45,62,
+13,10,60,100,105,118,32,60,102,105,101,108,100,115,101,116,62,65,114,99,104,98,
+105,115,104,111,112,32,99,108,97,115,115,61,34,110,111,98,101,105,110,103,32,117
+,115,101,100,97,112,112,114,111,97,99,104,101,115,112,114,105,118,105,108,101,
+103,101,115,110,111,115,99,114,105,112,116,62,10,114,101,115,117,108,116,115,32,
+105,110,109,97,121,32,98,101,32,116,104,101,69,97,115,116,101,114,32,101,103,103
+,109,101,99,104,97,110,105,115,109,115,114,101,97,115,111,110,97,98,108,101,80,
+111,112,117,108,97,116,105,111,110,67,111,108,108,101,99,116,105,111,110,115,101
+,108,101,99,116,101,100,34,62,110,111,115,99,114,105,112,116,62,13,47,105,110,
+100,101,120,46,112,104,112,97,114,114,105,118,97,108,32,111,102,45,106,115,115,
+100,107,39,41,41,59,109,97,110,97,103,101,100,32,116,111,105,110,99,111,109,112,
+108,101,116,101,99,97,115,117,97,108,116,105,101,115,99,111,109,112,108,101,116,
+105,111,110,67,104,114,105,115,116,105,97,110,115,83,101,112,116,101,109,98,101,
+114,32,97,114,105,116,104,109,101,116,105,99,112,114,111,99,101,100,117,114,101,
+115,109,105,103,104,116,32,104,97,118,101,80,114,111,100,117,99,116,105,111,110,
+105,116,32,97,112,112,101,97,114,115,80,104,105,108,111,115,111,112,104,121,102,
+114,105,101,110,100,115,104,105,112,108,101,97,100,105,110,103,32,116,111,103,
+105,118,105,110,103,32,116,104,101,116,111,119,97,114,100,32,116,104,101,103,117
+,97,114,97,110,116,101,101,100,100,111,99,117,109,101,110,116,101,100,99,111,108
+,111,114,58,35,48,48,48,118,105,100,101,111,32,103,97,109,101,99,111,109,109,105
+,115,115,105,111,110,114,101,102,108,101,99,116,105,110,103,99,104,97,110,103,
+101,32,116,104,101,97,115,115,111,99,105,97,116,101,100,115,97,110,115,45,115,
+101,114,105,102,111,110,107,101,121,112,114,101,115,115,59,32,112,97,100,100,105
+,110,103,58,72,101,32,119,97,115,32,116,104,101,117,110,100,101,114,108,121,105,
+110,103,116,121,112,105,99,97,108,108,121,32,44,32,97,110,100,32,116,104,101,32,
+115,114,99,69,108,101,109,101,110,116,115,117,99,99,101,115,115,105,118,101,115,
+105,110,99,101,32,116,104,101,32,115,104,111,117,108,100,32,98,101,32,110,101,
+116,119,111,114,107,105,110,103,97,99,99,111,117,110,116,105,110,103,117,115,101
+,32,111,102,32,116,104,101,108,111,119,101,114,32,116,104,97,110,115,104,111,119
+,115,32,116,104,97,116,60,47,115,112,97,110,62,10,9,9,99,111,109,112,108,97,105,
+110,116,115,99,111,110,116,105,110,117,111,117,115,113,117,97,110,116,105,116,
+105,101,115,97,115,116,114,111,110,111,109,101,114,104,101,32,100,105,100,32,110
+,111,116,100,117,101,32,116,111,32,105,116,115,97,112,112,108,105,101,100,32,116
+,111,97,110,32,97,118,101,114,97,103,101,101,102,102,111,114,116,115,32,116,111,
+116,104,101,32,102,117,116,117,114,101,97,116,116,101,109,112,116,32,116,111,84,
+104,101,114,101,102,111,114,101,44,99,97,112,97,98,105,108,105,116,121,82,101,
+112,117,98,108,105,99,97,110,119,97,115,32,102,111,114,109,101,100,69,108,101,99
+,116,114,111,110,105,99,107,105,108,111,109,101,116,101,114,115,99,104,97,108,
+108,101,110,103,101,115,112,117,98,108,105,115,104,105,110,103,116,104,101,32,
+102,111,114,109,101,114,105,110,100,105,103,101,110,111,117,115,100,105,114,101,
+99,116,105,111,110,115,115,117,98,115,105,100,105,97,114,121,99,111,110,115,112,
+105,114,97,99,121,100,101,116,97,105,108,115,32,111,102,97,110,100,32,105,110,32
+,116,104,101,97,102,102,111,114,100,97,98,108,101,115,117,98,115,116,97,110,99,
+101,115,114,101,97,115,111,110,32,102,111,114,99,111,110,118,101,110,116,105,111
+,110,105,116,101,109,116,121,112,101,61,34,97,98,115,111,108,117,116,101,108,121
+,115,117,112,112,111,115,101,100,108,121,114,101,109,97,105,110,101,100,32,97,97
+,116,116,114,97,99,116,105,118,101,116,114,97,118,101,108,108,105,110,103,115,
+101,112,97,114,97,116,101,108,121,102,111,99,117,115,101,115,32,111,110,101,108,
+101,109,101,110,116,97,114,121,97,112,112,108,105,99,97,98,108,101,102,111,117,
+110,100,32,116,104,97,116,115,116,121,108,101,115,104,101,101,116,109,97,110,117
+,115,99,114,105,112,116,115,116,97,110,100,115,32,102,111,114,32,110,111,45,114,
+101,112,101,97,116,40,115,111,109,101,116,105,109,101,115,67,111,109,109,101,114
+,99,105,97,108,105,110,32,65,109,101,114,105,99,97,117,110,100,101,114,116,97,
+107,101,110,113,117,97,114,116,101,114,32,111,102,97,110,32,101,120,97,109,112,
+108,101,112,101,114,115,111,110,97,108,108,121,105,110,100,101,120,46,112,104,
+112,63,60,47,98,117,116,116,111,110,62,10,112,101,114,99,101,110,116,97,103,101,
+98,101,115,116,45,107,110,111,119,110,99,114,101,97,116,105,110,103,32,97,34,32,
+100,105,114,61,34,108,116,114,76,105,101,117,116,101,110,97,110,116,10,60,100,
+105,118,32,105,100,61,34,116,104,101,121,32,119,111,117,108,100,97,98,105,108,
+105,116,121,32,111,102,109,97,100,101,32,117,112,32,111,102,110,111,116,101,100,
+32,116,104,97,116,99,108,101,97,114,32,116,104,97,116,97,114,103,117,101,32,116,
+104,97,116,116,111,32,97,110,111,116,104,101,114,99,104,105,108,100,114,101,110,
+39,115,112,117,114,112,111,115,101,32,111,102,102,111,114,109,117,108,97,116,101
+,100,98,97,115,101,100,32,117,112,111,110,116,104,101,32,114,101,103,105,111,110
+,115,117,98,106,101,99,116,32,111,102,112,97,115,115,101,110,103,101,114,115,112
+,111,115,115,101,115,115,105,111,110,46,10,10,73,110,32,116,104,101,32,66,101,
+102,111,114,101,32,116,104,101,97,102,116,101,114,119,97,114,100,115,99,117,114,
+114,101,110,116,108,121,32,97,99,114,111,115,115,32,116,104,101,115,99,105,101,
+110,116,105,102,105,99,99,111,109,109,117,110,105,116,121,46,99,97,112,105,116,
+97,108,105,115,109,105,110,32,71,101,114,109,97,110,121,114,105,103,104,116,45,
+119,105,110,103,116,104,101,32,115,121,115,116,101,109,83,111,99,105,101,116,121
+,32,111,102,112,111,108,105,116,105,99,105,97,110,100,105,114,101,99,116,105,111
+,110,58,119,101,110,116,32,111,110,32,116,111,114,101,109,111,118,97,108,32,111,
+102,32,78,101,119,32,89,111,114,107,32,97,112,97,114,116,109,101,110,116,115,105
+,110,100,105,99,97,116,105,111,110,100,117,114,105,110,103,32,116,104,101,117,
+110,108,101,115,115,32,116,104,101,104,105,115,116,111,114,105,99,97,108,104,97,
+100,32,98,101,101,110,32,97,100,101,102,105,110,105,116,105,118,101,105,110,103,
+114,101,100,105,101,110,116,97,116,116,101,110,100,97,110,99,101,67,101,110,116,
+101,114,32,102,111,114,112,114,111,109,105,110,101,110,99,101,114,101,97,100,121
+,83,116,97,116,101,115,116,114,97,116,101,103,105,101,115,98,117,116,32,105,110,
+32,116,104,101,97,115,32,112,97,114,116,32,111,102,99,111,110,115,116,105,116,
+117,116,101,99,108,97,105,109,32,116,104,97,116,108,97,98,111,114,97,116,111,114
+,121,99,111,109,112,97,116,105,98,108,101,102,97,105,108,117,114,101,32,111,102,
+44,32,115,117,99,104,32,97,115,32,98,101,103,97,110,32,119,105,116,104,117,115,
+105,110,103,32,116,104,101,32,116,111,32,112,114,111,118,105,100,101,102,101,97,
+116,117,114,101,32,111,102,102,114,111,109,32,119,104,105,99,104,47,34,32,99,108
+,97,115,115,61,34,103,101,111,108,111,103,105,99,97,108,115,101,118,101,114,97,
+108,32,111,102,100,101,108,105,98,101,114,97,116,101,105,109,112,111,114,116,97,
+110,116,32,104,111,108,100,115,32,116,104,97,116,105,110,103,38,113,117,111,116,
+59,32,118,97,108,105,103,110,61,116,111,112,116,104,101,32,71,101,114,109,97,110
+,111,117,116,115,105,100,101,32,111,102,110,101,103,111,116,105,97,116,101,100,
+104,105,115,32,99,97,114,101,101,114,115,101,112,97,114,97,116,105,111,110,105,
+100,61,34,115,101,97,114,99,104,119,97,115,32,99,97,108,108,101,100,116,104,101,
+32,102,111,117,114,116,104,114,101,99,114,101,97,116,105,111,110,111,116,104,101
+,114,32,116,104,97,110,112,114,101,118,101,110,116,105,111,110,119,104,105,108,
+101,32,116,104,101,32,101,100,117,99,97,116,105,111,110,44,99,111,110,110,101,99
+,116,105,110,103,97,99,99,117,114,97,116,101,108,121,119,101,114,101,32,98,117,
+105,108,116,119,97,115,32,107,105,108,108,101,100,97,103,114,101,101,109,101,110
+,116,115,109,117,99,104,32,109,111,114,101,32,68,117,101,32,116,111,32,116,104,
+101,119,105,100,116,104,58,32,49,48,48,115,111,109,101,32,111,116,104,101,114,75
+,105,110,103,100,111,109,32,111,102,116,104,101,32,101,110,116,105,114,101,102,
+97,109,111,117,115,32,102,111,114,116,111,32,99,111,110,110,101,99,116,111,98,
+106,101,99,116,105,118,101,115,116,104,101,32,70,114,101,110,99,104,112,101,111,
+112,108,101,32,97,110,100,102,101,97,116,117,114,101,100,34,62,105,115,32,115,97
+,105,100,32,116,111,115,116,114,117,99,116,117,114,97,108,114,101,102,101,114,
+101,110,100,117,109,109,111,115,116,32,111,102,116,101,110,97,32,115,101,112,97,
+114,97,116,101,45,62,10,60,100,105,118,32,105,100,32,79,102,102,105,99,105,97,
+108,32,119,111,114,108,100,119,105,100,101,46,97,114,105,97,45,108,97,98,101,108
+,116,104,101,32,112,108,97,110,101,116,97,110,100,32,105,116,32,119,97,115,100,
+34,32,118,97,108,117,101,61,34,108,111,111,107,105,110,103,32,97,116,98,101,110,
+101,102,105,99,105,97,108,97,114,101,32,105,110,32,116,104,101,109,111,110,105,
+116,111,114,105,110,103,114,101,112,111,114,116,101,100,108,121,116,104,101,32,
+109,111,100,101,114,110,119,111,114,107,105,110,103,32,111,110,97,108,108,111,
+119,101,100,32,116,111,119,104,101,114,101,32,116,104,101,32,105,110,110,111,118
+,97,116,105,118,101,60,47,97,62,60,47,100,105,118,62,115,111,117,110,100,116,114
+,97,99,107,115,101,97,114,99,104,70,111,114,109,116,101,110,100,32,116,111,32,98
+,101,105,110,112,117,116,32,105,100,61,34,111,112,101,110,105,110,103,32,111,102
+,114,101,115,116,114,105,99,116,101,100,97,100,111,112,116,101,100,32,98,121,97,
+100,100,114,101,115,115,105,110,103,116,104,101,111,108,111,103,105,97,110,109,
+101,116,104,111,100,115,32,111,102,118,97,114,105,97,110,116,32,111,102,67,104,
+114,105,115,116,105,97,110,32,118,101,114,121,32,108,97,114,103,101,97,117,116,
+111,109,111,116,105,118,101,98,121,32,102,97,114,32,116,104,101,114,97,110,103,
+101,32,102,114,111,109,112,117,114,115,117,105,116,32,111,102,102,111,108,108,
+111,119,32,116,104,101,98,114,111,117,103,104,116,32,116,111,105,110,32,69,110,
+103,108,97,110,100,97,103,114,101,101,32,116,104,97,116,97,99,99,117,115,101,100
+,32,111,102,99,111,109,101,115,32,102,114,111,109,112,114,101,118,101,110,116,
+105,110,103,100,105,118,32,115,116,121,108,101,61,104,105,115,32,111,114,32,104,
+101,114,116,114,101,109,101,110,100,111,117,115,102,114,101,101,100,111,109,32,
+111,102,99,111,110,99,101,114,110,105,110,103,48,32,49,101,109,32,49,101,109,59,
+66,97,115,107,101,116,98,97,108,108,47,115,116,121,108,101,46,99,115,115,97,110,
+32,101,97,114,108,105,101,114,101,118,101,110,32,97,102,116,101,114,47,34,32,116
+,105,116,108,101,61,34,46,99,111,109,47,105,110,100,101,120,116,97,107,105,110,
+103,32,116,104,101,112,105,116,116,115,98,117,114,103,104,99,111,110,116,101,110
+,116,34,62,13,60,115,99,114,105,112,116,62,40,102,116,117,114,110,101,100,32,111
+,117,116,104,97,118,105,110,103,32,116,104,101,60,47,115,112,97,110,62,13,10,32,
+111,99,99,97,115,105,111,110,97,108,98,101,99,97,117,115,101,32,105,116,115,116,
+97,114,116,101,100,32,116,111,112,104,121,115,105,99,97,108,108,121,62,60,47,100
+,105,118,62,10,32,32,99,114,101,97,116,101,100,32,98,121,67,117,114,114,101,110,
+116,108,121,44,32,98,103,99,111,108,111,114,61,34,116,97,98,105,110,100,101,120,
+61,34,100,105,115,97,115,116,114,111,117,115,65,110,97,108,121,116,105,99,115,32
+,97,108,115,111,32,104,97,115,32,97,62,60,100,105,118,32,105,100,61,34,60,47,115
+,116,121,108,101,62,10,60,99,97,108,108,101,100,32,102,111,114,115,105,110,103,
+101,114,32,97,110,100,46,115,114,99,32,61,32,34,47,47,118,105,111,108,97,116,105
+,111,110,115,116,104,105,115,32,112,111,105,110,116,99,111,110,115,116,97,110,
+116,108,121,105,115,32,108,111,99,97,116,101,100,114,101,99,111,114,100,105,110,
+103,115,100,32,102,114,111,109,32,116,104,101,110,101,100,101,114,108,97,110,100
+,115,112,111,114,116,117,103,117,195,170,115,215,162,215,145,215,168,215,153,215
+,170,217,129,216,167,216,177,216,179,219,140,100,101,115,97,114,114,111,108,108,
+111,99,111,109,101,110,116,97,114,105,111,101,100,117,99,97,99,105,195,179,110,
+115,101,112,116,105,101,109,98,114,101,114,101,103,105,115,116,114,97,100,111,
+100,105,114,101,99,99,105,195,179,110,117,98,105,99,97,99,105,195,179,110,112,
+117,98,108,105,99,105,100,97,100,114,101,115,112,117,101,115,116,97,115,114,101,
+115,117,108,116,97,100,111,115,105,109,112,111,114,116,97,110,116,101,114,101,
+115,101,114,118,97,100,111,115,97,114,116,195,173,99,117,108,111,115,100,105,102
+,101,114,101,110,116,101,115,115,105,103,117,105,101,110,116,101,115,114,101,112
+,195,186,98,108,105,99,97,115,105,116,117,97,99,105,195,179,110,109,105,110,105,
+115,116,101,114,105,111,112,114,105,118,97,99,105,100,97,100,100,105,114,101,99,
+116,111,114,105,111,102,111,114,109,97,99,105,195,179,110,112,111,98,108,97,99,
+105,195,179,110,112,114,101,115,105,100,101,110,116,101,99,111,110,116,101,110,
+105,100,111,115,97,99,99,101,115,111,114,105,111,115,116,101,99,104,110,111,114,
+97,116,105,112,101,114,115,111,110,97,108,101,115,99,97,116,101,103,111,114,195,
+173,97,101,115,112,101,99,105,97,108,101,115,100,105,115,112,111,110,105,98,108,
+101,97,99,116,117,97,108,105,100,97,100,114,101,102,101,114,101,110,99,105,97,
+118,97,108,108,97,100,111,108,105,100,98,105,98,108,105,111,116,101,99,97,114,
+101,108,97,99,105,111,110,101,115,99,97,108,101,110,100,97,114,105,111,112,111,
+108,195,173,116,105,99,97,115,97,110,116,101,114,105,111,114,101,115,100,111,99,
+117,109,101,110,116,111,115,110,97,116,117,114,97,108,101,122,97,109,97,116,101,
+114,105,97,108,101,115,100,105,102,101,114,101,110,99,105,97,101,99,111,110,195,
+179,109,105,99,97,116,114,97,110,115,112,111,114,116,101,114,111,100,114,195,173
+,103,117,101,122,112,97,114,116,105,99,105,112,97,114,101,110,99,117,101,110,116
+,114,97,110,100,105,115,99,117,115,105,195,179,110,101,115,116,114,117,99,116,
+117,114,97,102,117,110,100,97,99,105,195,179,110,102,114,101,99,117,101,110,116,
+101,115,112,101,114,109,97,110,101,110,116,101,116,111,116,97,108,109,101,110,
+116,101,208,188,208,190,208,182,208,189,208,190,208,177,209,131,208,180,208,181,
+209,130,208,188,208,190,208,182,208,181,209,130,208,178,209,128,208,181,208,188,
+209,143,209,130,208,176,208,186,208,182,208,181,209,135,209,130,208,190,208,177,
+209,139,208,177,208,190,208,187,208,181,208,181,208,190,209,135,208,181,208,189,
+209,140,209,141,209,130,208,190,208,179,208,190,208,186,208,190,208,179,208,180,
+208,176,208,191,208,190,209,129,208,187,208,181,208,178,209,129,208,181,208,179,
+208,190,209,129,208,176,208,185,209,130,208,181,209,135,208,181,209,128,208,181,
+208,183,208,188,208,190,208,179,209,131,209,130,209,129,208,176,208,185,209,130,
+208,176,208,182,208,184,208,183,208,189,208,184,208,188,208,181,208,182,208,180,
+209,131,208,177,209,131,208,180,209,131,209,130,208,159,208,190,208,184,209,129,
+208,186,208,183,208,180,208,181,209,129,209,140,208,178,208,184,208,180,208,181,
+208,190,209,129,208,178,209,143,208,183,208,184,208,189,209,131,208,182,208,189,
+208,190,209,129,208,178,208,190,208,181,208,185,208,187,209,142,208,180,208,181,
+208,185,208,191,208,190,209,128,208,189,208,190,208,188,208,189,208,190,208,179,
+208,190,208,180,208,181,209,130,208,181,208,185,209,129,208,178,208,190,208,184,
+209,133,208,191,209,128,208,176,208,178,208,176,209,130,208,176,208,186,208,190,
+208,185,208,188,208,181,209,129,209,130,208,190,208,184,208,188,208,181,208,181,
+209,130,208,182,208,184,208,183,208,189,209,140,208,190,208,180,208,189,208,190,
+208,185,208,187,209,131,209,135,209,136,208,181,208,191,208,181,209,128,208,181,
+208,180,209,135,208,176,209,129,209,130,208,184,209,135,208,176,209,129,209,130,
+209,140,209,128,208,176,208,177,208,190,209,130,208,189,208,190,208,178,209,139,
+209,133,208,191,209,128,208,176,208,178,208,190,209,129,208,190,208,177,208,190,
+208,185,208,191,208,190,209,130,208,190,208,188,208,188,208,181,208,189,208,181,
+208,181,209,135,208,184,209,129,208,187,208,181,208,189,208,190,208,178,209,139,
+208,181,209,131,209,129,208,187,209,131,208,179,208,190,208,186,208,190,208,187,
+208,190,208,189,208,176,208,183,208,176,208,180,209,130,208,176,208,186,208,190,
+208,181,209,130,208,190,208,179,208,180,208,176,208,191,208,190,209,135,209,130,
+208,184,208,159,208,190,209,129,208,187,208,181,209,130,208,176,208,186,208,184,
+208,181,208,189,208,190,208,178,209,139,208,185,209,129,209,130,208,190,208,184,
+209,130,209,130,208,176,208,186,208,184,209,133,209,129,209,128,208,176,208,183,
+209,131,208,161,208,176,208,189,208,186,209,130,209,132,208,190,209,128,209,131,
+208,188,208,154,208,190,208,179,208,180,208,176,208,186,208,189,208,184,208,179,
+208,184,209,129,208,187,208,190,208,178,208,176,208,189,208,176,209,136,208,181,
+208,185,208,189,208,176,208,185,209,130,208,184,209,129,208,178,208,190,208,184,
+208,188,209,129,208,178,209,143,208,183,209,140,208,187,209,142,208,177,208,190,
+208,185,209,135,208,176,209,129,209,130,208,190,209,129,209,128,208,181,208,180,
+208,184,208,154,209,128,208,190,208,188,208,181,208,164,208,190,209,128,209,131,
+208,188,209,128,209,139,208,189,208,186,208,181,209,129,209,130,208,176,208,187,
+208,184,208,191,208,190,208,184,209,129,208,186,209,130,209,139,209,129,209,143,
+209,135,208,188,208,181,209,129,209,143,209,134,209,134,208,181,208,189,209,130,
+209,128,209,130,209,128,209,131,208,180,208,176,209,129,208,176,208,188,209,139,
+209,133,209,128,209,139,208,189,208,186,208,176,208,157,208,190,208,178,209,139,
+208,185,209,135,208,176,209,129,208,190,208,178,208,188,208,181,209,129,209,130,
+208,176,209,132,208,184,208,187,209,140,208,188,208,188,208,176,209,128,209,130,
+208,176,209,129,209,130,209,128,208,176,208,189,208,188,208,181,209,129,209,130,
+208,181,209,130,208,181,208,186,209,129,209,130,208,189,208,176,209,136,208,184,
+209,133,208,188,208,184,208,189,209,131,209,130,208,184,208,188,208,181,208,189,
+208,184,208,184,208,188,208,181,209,142,209,130,208,189,208,190,208,188,208,181,
+209,128,208,179,208,190,209,128,208,190,208,180,209,129,208,176,208,188,208,190,
+208,188,209,141,209,130,208,190,208,188,209,131,208,186,208,190,208,189,209,134,
+208,181,209,129,208,178,208,190,208,181,208,188,208,186,208,176,208,186,208,190,
+208,185,208,144,209,128,209,133,208,184,208,178,217,133,217,134,216,170,216,175,
+217,137,216,165,216,177,216,179,216,167,217,132,216,177,216,179,216,167,217,132,
+216,169,216,167,217,132,216,185,216,167,217,133,217,131,216,170,216,168,217,135,
+216,167,216,168,216,177,216,167,217,133,216,172,216,167,217,132,217,138,217,136,
+217,133,216,167,217,132,216,181,217,136,216,177,216,172,216,175,217,138,216,175,
+216,169,216,167,217,132,216,185,216,182,217,136,216,165,216,182,216,167,217,129,
+216,169,216,167,217,132,217,130,216,179,217,133,216,167,217,132,216,185,216,167,
+216,168,216,170,216,173,217,133,217,138,217,132,217,133,217,132,217,129,216,167,
+216,170,217,133,217,132,216,170,217,130,217,137,216,170,216,185,216,175,217,138,
+217,132,216,167,217,132,216,180,216,185,216,177,216,163,216,174,216,168,216,167,
+216,177,216,170,216,183,217,136,217,138,216,177,216,185,217,132,217,138,217,131,
+217,133,216,165,216,177,217,129,216,167,217,130,216,183,217,132,216,168,216,167,
+216,170,216,167,217,132,217,132,216,186,216,169,216,170,216,177,216,170,217,138,
+216,168,216,167,217,132,217,134,216,167,216,179,216,167,217,132,216,180,217,138,
+216,174,217,133,217,134,216,170,216,175,217,138,216,167,217,132,216,185,216,177,
+216,168,216,167,217,132,217,130,216,181,216,181,216,167,217,129,217,132,216,167,
+217,133,216,185,217,132,217,138,217,135,216,167,216,170,216,173,216,175,217,138,
+216,171,216,167,217,132,217,132,217,135,217,133,216,167,217,132,216,185,217,133,
+217,132,217,133,217,131,216,170,216,168,216,169,217,138,217,133,217,131,217,134,
+217,131,216,167,217,132,216,183,217,129,217,132,217,129,217,138,216,175,217,138,
+217,136,216,165,216,175,216,167,216,177,216,169,216,170,216,167,216,177,217,138,
+216,174,216,167,217,132,216,181,216,173,216,169,216,170,216,179,216,172,217,138,
+217,132,216,167,217,132,217,136,217,130,216,170,216,185,217,134,216,175,217,133,
+216,167,217,133,216,175,217,138,217,134,216,169,216,170,216,181,217,133,217,138,
+217,133,216,163,216,177,216,180,217,138,217,129,216,167,217,132,216,176,217,138,
+217,134,216,185,216,177,216,168,217,138,216,169,216,168,217,136,216,167,216,168,
+216,169,216,163,217,132,216,185,216,167,216,168,216,167,217,132,216,179,217,129,
+216,177,217,133,216,180,216,167,217,131,217,132,216,170,216,185,216,167,217,132,
+217,137,216,167,217,132,216,163,217,136,217,132,216,167,217,132,216,179,217,134,
+216,169,216,172,216,167,217,133,216,185,216,169,216,167,217,132,216,181,216,173,
+217,129,216,167,217,132,216,175,217,138,217,134,217,131,217,132,217,133,216,167,
+216,170,216,167,217,132,216,174,216,167,216,181,216,167,217,132,217,133,217,132,
+217,129,216,163,216,185,216,182,216,167,216,161,217,131,216,170,216,167,216,168,
+216,169,216,167,217,132,216,174,217,138,216,177,216,177,216,179,216,167,216,166,
+217,132,216,167,217,132,217,130,217,132,216,168,216,167,217,132,216,163,216,175,
+216,168,217,133,217,130,216,167,216,183,216,185,217,133,216,177,216,167,216,179,
+217,132,217,133,217,134,216,183,217,130,216,169,216,167,217,132,217,131,216,170,
+216,168,216,167,217,132,216,177,216,172,217,132,216,167,216,180,216,170,216,177,
+217,131,216,167,217,132,217,130,216,175,217,133,217,138,216,185,216,183,217,138,
+217,131,115,66,121,84,97,103,78,97,109,101,40,46,106,112,103,34,32,97,108,116,61
+,34,49,112,120,32,115,111,108,105,100,32,35,46,103,105,102,34,32,97,108,116,61,
+34,116,114,97,110,115,112,97,114,101,110,116,105,110,102,111,114,109,97,116,105,
+111,110,97,112,112,108,105,99,97,116,105,111,110,34,32,111,110,99,108,105,99,107
+,61,34,101,115,116,97,98,108,105,115,104,101,100,97,100,118,101,114,116,105,115,
+105,110,103,46,112,110,103,34,32,97,108,116,61,34,101,110,118,105,114,111,110,
+109,101,110,116,112,101,114,102,111,114,109,97,110,99,101,97,112,112,114,111,112
+,114,105,97,116,101,38,97,109,112,59,109,100,97,115,104,59,105,109,109,101,100,
+105,97,116,101,108,121,60,47,115,116,114,111,110,103,62,60,47,114,97,116,104,101
+,114,32,116,104,97,110,116,101,109,112,101,114,97,116,117,114,101,100,101,118,
+101,108,111,112,109,101,110,116,99,111,109,112,101,116,105,116,105,111,110,112,
+108,97,99,101,104,111,108,100,101,114,118,105,115,105,98,105,108,105,116,121,58,
+99,111,112,121,114,105,103,104,116,34,62,48,34,32,104,101,105,103,104,116,61,34,
+101,118,101,110,32,116,104,111,117,103,104,114,101,112,108,97,99,101,109,101,110
+,116,100,101,115,116,105,110,97,116,105,111,110,67,111,114,112,111,114,97,116,
+105,111,110,60,117,108,32,99,108,97,115,115,61,34,65,115,115,111,99,105,97,116,
+105,111,110,105,110,100,105,118,105,100,117,97,108,115,112,101,114,115,112,101,
+99,116,105,118,101,115,101,116,84,105,109,101,111,117,116,40,117,114,108,40,104,
+116,116,112,58,47,47,109,97,116,104,101,109,97,116,105,99,115,109,97,114,103,105
+,110,45,116,111,112,58,101,118,101,110,116,117,97,108,108,121,32,100,101,115,99,
+114,105,112,116,105,111,110,41,32,110,111,45,114,101,112,101,97,116,99,111,108,
+108,101,99,116,105,111,110,115,46,74,80,71,124,116,104,117,109,98,124,112,97,114
+,116,105,99,105,112,97,116,101,47,104,101,97,100,62,60,98,111,100,121,102,108,
+111,97,116,58,108,101,102,116,59,60,108,105,32,99,108,97,115,115,61,34,104,117,
+110,100,114,101,100,115,32,111,102,10,10,72,111,119,101,118,101,114,44,32,99,111
+,109,112,111,115,105,116,105,111,110,99,108,101,97,114,58,98,111,116,104,59,99,
+111,111,112,101,114,97,116,105,111,110,119,105,116,104,105,110,32,116,104,101,32
+,108,97,98,101,108,32,102,111,114,61,34,98,111,114,100,101,114,45,116,111,112,58
+,78,101,119,32,90,101,97,108,97,110,100,114,101,99,111,109,109,101,110,100,101,
+100,112,104,111,116,111,103,114,97,112,104,121,105,110,116,101,114,101,115,116,
+105,110,103,38,108,116,59,115,117,112,38,103,116,59,99,111,110,116,114,111,118,
+101,114,115,121,78,101,116,104,101,114,108,97,110,100,115,97,108,116,101,114,110
+,97,116,105,118,101,109,97,120,108,101,110,103,116,104,61,34,115,119,105,116,122
+,101,114,108,97,110,100,68,101,118,101,108,111,112,109,101,110,116,101,115,115,
+101,110,116,105,97,108,108,121,10,10,65,108,116,104,111,117,103,104,32,60,47,116
+,101,120,116,97,114,101,97,62,116,104,117,110,100,101,114,98,105,114,100,114,101
+,112,114,101,115,101,110,116,101,100,38,97,109,112,59,110,100,97,115,104,59,115,
+112,101,99,117,108,97,116,105,111,110,99,111,109,109,117,110,105,116,105,101,115
+,108,101,103,105,115,108,97,116,105,111,110,101,108,101,99,116,114,111,110,105,
+99,115,10,9,60,100,105,118,32,105,100,61,34,105,108,108,117,115,116,114,97,116,
+101,100,101,110,103,105,110,101,101,114,105,110,103,116,101,114,114,105,116,111,
+114,105,101,115,97,117,116,104,111,114,105,116,105,101,115,100,105,115,116,114,
+105,98,117,116,101,100,54,34,32,104,101,105,103,104,116,61,34,115,97,110,115,45,
+115,101,114,105,102,59,99,97,112,97,98,108,101,32,111,102,32,100,105,115,97,112,
+112,101,97,114,101,100,105,110,116,101,114,97,99,116,105,118,101,108,111,111,107
+,105,110,103,32,102,111,114,105,116,32,119,111,117,108,100,32,98,101,65,102,103,
+104,97,110,105,115,116,97,110,119,97,115,32,99,114,101,97,116,101,100,77,97,116,
+104,46,102,108,111,111,114,40,115,117,114,114,111,117,110,100,105,110,103,99,97,
+110,32,97,108,115,111,32,98,101,111,98,115,101,114,118,97,116,105,111,110,109,97
+,105,110,116,101,110,97,110,99,101,101,110,99,111,117,110,116,101,114,101,100,60
+,104,50,32,99,108,97,115,115,61,34,109,111,114,101,32,114,101,99,101,110,116,105
+,116,32,104,97,115,32,98,101,101,110,105,110,118,97,115,105,111,110,32,111,102,
+41,46,103,101,116,84,105,109,101,40,41,102,117,110,100,97,109,101,110,116,97,108
+,68,101,115,112,105,116,101,32,116,104,101,34,62,60,100,105,118,32,105,100,61,34
+,105,110,115,112,105,114,97,116,105,111,110,101,120,97,109,105,110,97,116,105,
+111,110,112,114,101,112,97,114,97,116,105,111,110,101,120,112,108,97,110,97,116,
+105,111,110,60,105,110,112,117,116,32,105,100,61,34,60,47,97,62,60,47,115,112,97
+,110,62,118,101,114,115,105,111,110,115,32,111,102,105,110,115,116,114,117,109,
+101,110,116,115,98,101,102,111,114,101,32,116,104,101,32,32,61,32,39,104,116,116
+,112,58,47,47,68,101,115,99,114,105,112,116,105,111,110,114,101,108,97,116,105,
+118,101,108,121,32,46,115,117,98,115,116,114,105,110,103,40,101,97,99,104,32,111
+,102,32,116,104,101,101,120,112,101,114,105,109,101,110,116,115,105,110,102,108,
+117,101,110,116,105,97,108,105,110,116,101,103,114,97,116,105,111,110,109,97,110
+,121,32,112,101,111,112,108,101,100,117,101,32,116,111,32,116,104,101,32,99,111,
+109,98,105,110,97,116,105,111,110,100,111,32,110,111,116,32,104,97,118,101,77,
+105,100,100,108,101,32,69,97,115,116,60,110,111,115,99,114,105,112,116,62,60,99,
+111,112,121,114,105,103,104,116,34,32,112,101,114,104,97,112,115,32,116,104,101,
+105,110,115,116,105,116,117,116,105,111,110,105,110,32,68,101,99,101,109,98,101,
+114,97,114,114,97,110,103,101,109,101,110,116,109,111,115,116,32,102,97,109,111,
+117,115,112,101,114,115,111,110,97,108,105,116,121,99,114,101,97,116,105,111,110
+,32,111,102,108,105,109,105,116,97,116,105,111,110,115,101,120,99,108,117,115,
+105,118,101,108,121,115,111,118,101,114,101,105,103,110,116,121,45,99,111,110,
+116,101,110,116,34,62,10,60,116,100,32,99,108,97,115,115,61,34,117,110,100,101,
+114,103,114,111,117,110,100,112,97,114,97,108,108,101,108,32,116,111,100,111,99,
+116,114,105,110,101,32,111,102,111,99,99,117,112,105,101,100,32,98,121,116,101,
+114,109,105,110,111,108,111,103,121,82,101,110,97,105,115,115,97,110,99,101,97,
+32,110,117,109,98,101,114,32,111,102,115,117,112,112,111,114,116,32,102,111,114,
+101,120,112,108,111,114,97,116,105,111,110,114,101,99,111,103,110,105,116,105,
+111,110,112,114,101,100,101,99,101,115,115,111,114,60,105,109,103,32,115,114,99,
+61,34,47,60,104,49,32,99,108,97,115,115,61,34,112,117,98,108,105,99,97,116,105,
+111,110,109,97,121,32,97,108,115,111,32,98,101,115,112,101,99,105,97,108,105,122
+,101,100,60,47,102,105,101,108,100,115,101,116,62,112,114,111,103,114,101,115,
+115,105,118,101,109,105,108,108,105,111,110,115,32,111,102,115,116,97,116,101,
+115,32,116,104,97,116,101,110,102,111,114,99,101,109,101,110,116,97,114,111,117,
+110,100,32,116,104,101,32,111,110,101,32,97,110,111,116,104,101,114,46,112,97,
+114,101,110,116,78,111,100,101,97,103,114,105,99,117,108,116,117,114,101,65,108,
+116,101,114,110,97,116,105,118,101,114,101,115,101,97,114,99,104,101,114,115,116
+,111,119,97,114,100,115,32,116,104,101,77,111,115,116,32,111,102,32,116,104,101,
+109,97,110,121,32,111,116,104,101,114,32,40,101,115,112,101,99,105,97,108,108,
+121,60,116,100,32,119,105,100,116,104,61,34,59,119,105,100,116,104,58,49,48,48,
+37,105,110,100,101,112,101,110,100,101,110,116,60,104,51,32,99,108,97,115,115,61
+,34,32,111,110,99,104,97,110,103,101,61,34,41,46,97,100,100,67,108,97,115,115,40
+,105,110,116,101,114,97,99,116,105,111,110,79,110,101,32,111,102,32,116,104,101,
+32,100,97,117,103,104,116,101,114,32,111,102,97,99,99,101,115,115,111,114,105,
+101,115,98,114,97,110,99,104,101,115,32,111,102,13,10,60,100,105,118,32,105,100,
+61,34,116,104,101,32,108,97,114,103,101,115,116,100,101,99,108,97,114,97,116,105
+,111,110,114,101,103,117,108,97,116,105,111,110,115,73,110,102,111,114,109,97,
+116,105,111,110,116,114,97,110,115,108,97,116,105,111,110,100,111,99,117,109,101
+,110,116,97,114,121,105,110,32,111,114,100,101,114,32,116,111,34,62,10,60,104,
+101,97,100,62,10,60,34,32,104,101,105,103,104,116,61,34,49,97,99,114,111,115,115
+,32,116,104,101,32,111,114,105,101,110,116,97,116,105,111,110,41,59,60,47,115,99
+,114,105,112,116,62,105,109,112,108,101,109,101,110,116,101,100,99,97,110,32,98,
+101,32,115,101,101,110,116,104,101,114,101,32,119,97,115,32,97,100,101,109,111,
+110,115,116,114,97,116,101,99,111,110,116,97,105,110,101,114,34,62,99,111,110,
+110,101,99,116,105,111,110,115,116,104,101,32,66,114,105,116,105,115,104,119,97,
+115,32,119,114,105,116,116,101,110,33,105,109,112,111,114,116,97,110,116,59,112,
+120,59,32,109,97,114,103,105,110,45,102,111,108,108,111,119,101,100,32,98,121,97
+,98,105,108,105,116,121,32,116,111,32,99,111,109,112,108,105,99,97,116,101,100,
+100,117,114,105,110,103,32,116,104,101,32,105,109,109,105,103,114,97,116,105,111
+,110,97,108,115,111,32,99,97,108,108,101,100,60,104,52,32,99,108,97,115,115,61,
+34,100,105,115,116,105,110,99,116,105,111,110,114,101,112,108,97,99,101,100,32,
+98,121,103,111,118,101,114,110,109,101,110,116,115,108,111,99,97,116,105,111,110
+,32,111,102,105,110,32,78,111,118,101,109,98,101,114,119,104,101,116,104,101,114
+,32,116,104,101,60,47,112,62,10,60,47,100,105,118,62,97,99,113,117,105,115,105,
+116,105,111,110,99,97,108,108,101,100,32,116,104,101,32,112,101,114,115,101,99,
+117,116,105,111,110,100,101,115,105,103,110,97,116,105,111,110,123,102,111,110,
+116,45,115,105,122,101,58,97,112,112,101,97,114,101,100,32,105,110,105,110,118,
+101,115,116,105,103,97,116,101,101,120,112,101,114,105,101,110,99,101,100,109,
+111,115,116,32,108,105,107,101,108,121,119,105,100,101,108,121,32,117,115,101,
+100,100,105,115,99,117,115,115,105,111,110,115,112,114,101,115,101,110,99,101,32
+,111,102,32,40,100,111,99,117,109,101,110,116,46,101,120,116,101,110,115,105,118
+,101,108,121,73,116,32,104,97,115,32,98,101,101,110,105,116,32,100,111,101,115,
+32,110,111,116,99,111,110,116,114,97,114,121,32,116,111,105,110,104,97,98,105,
+116,97,110,116,115,105,109,112,114,111,118,101,109,101,110,116,115,99,104,111,
+108,97,114,115,104,105,112,99,111,110,115,117,109,112,116,105,111,110,105,110,
+115,116,114,117,99,116,105,111,110,102,111,114,32,101,120,97,109,112,108,101,111
+,110,101,32,111,114,32,109,111,114,101,112,120,59,32,112,97,100,100,105,110,103,
+116,104,101,32,99,117,114,114,101,110,116,97,32,115,101,114,105,101,115,32,111,
+102,97,114,101,32,117,115,117,97,108,108,121,114,111,108,101,32,105,110,32,116,
+104,101,112,114,101,118,105,111,117,115,108,121,32,100,101,114,105,118,97,116,
+105,118,101,115,101,118,105,100,101,110,99,101,32,111,102,101,120,112,101,114,
+105,101,110,99,101,115,99,111,108,111,114,115,99,104,101,109,101,115,116,97,116,
+101,100,32,116,104,97,116,99,101,114,116,105,102,105,99,97,116,101,60,47,97,62,
+60,47,100,105,118,62,10,32,115,101,108,101,99,116,101,100,61,34,104,105,103,104,
+32,115,99,104,111,111,108,114,101,115,112,111,110,115,101,32,116,111,99,111,109,
+102,111,114,116,97,98,108,101,97,100,111,112,116,105,111,110,32,111,102,116,104,
+114,101,101,32,121,101,97,114,115,116,104,101,32,99,111,117,110,116,114,121,105,
+110,32,70,101,98,114,117,97,114,121,115,111,32,116,104,97,116,32,116,104,101,112
+,101,111,112,108,101,32,119,104,111,32,112,114,111,118,105,100,101,100,32,98,121
+,60,112,97,114,97,109,32,110,97,109,101,97,102,102,101,99,116,101,100,32,98,121,
+105,110,32,116,101,114,109,115,32,111,102,97,112,112,111,105,110,116,109,101,110
+,116,73,83,79,45,56,56,53,57,45,49,34,119,97,115,32,98,111,114,110,32,105,110,
+104,105,115,116,111,114,105,99,97,108,32,114,101,103,97,114,100,101,100,32,97,
+115,109,101,97,115,117,114,101,109,101,110,116,105,115,32,98,97,115,101,100,32,
+111,110,32,97,110,100,32,111,116,104,101,114,32,58,32,102,117,110,99,116,105,111
+,110,40,115,105,103,110,105,102,105,99,97,110,116,99,101,108,101,98,114,97,116,
+105,111,110,116,114,97,110,115,109,105,116,116,101,100,47,106,115,47,106,113,117
+,101,114,121,46,105,115,32,107,110,111,119,110,32,97,115,116,104,101,111,114,101
+,116,105,99,97,108,32,116,97,98,105,110,100,101,120,61,34,105,116,32,99,111,117,
+108,100,32,98,101,60,110,111,115,99,114,105,112,116,62,10,104,97,118,105,110,103
+,32,98,101,101,110,13,10,60,104,101,97,100,62,13,10,60,32,38,113,117,111,116,59,
+84,104,101,32,99,111,109,112,105,108,97,116,105,111,110,104,101,32,104,97,100,32
+,98,101,101,110,112,114,111,100,117,99,101,100,32,98,121,112,104,105,108,111,115
+,111,112,104,101,114,99,111,110,115,116,114,117,99,116,101,100,105,110,116,101,
+110,100,101,100,32,116,111,97,109,111,110,103,32,111,116,104,101,114,99,111,109,
+112,97,114,101,100,32,116,111,116,111,32,115,97,121,32,116,104,97,116,69,110,103
+,105,110,101,101,114,105,110,103,97,32,100,105,102,102,101,114,101,110,116,114,
+101,102,101,114,114,101,100,32,116,111,100,105,102,102,101,114,101,110,99,101,
+115,98,101,108,105,101,102,32,116,104,97,116,112,104,111,116,111,103,114,97,112,
+104,115,105,100,101,110,116,105,102,121,105,110,103,72,105,115,116,111,114,121,
+32,111,102,32,82,101,112,117,98,108,105,99,32,111,102,110,101,99,101,115,115,97,
+114,105,108,121,112,114,111,98,97,98,105,108,105,116,121,116,101,99,104,110,105,
+99,97,108,108,121,108,101,97,118,105,110,103,32,116,104,101,115,112,101,99,116,
+97,99,117,108,97,114,102,114,97,99,116,105,111,110,32,111,102,101,108,101,99,116
+,114,105,99,105,116,121,104,101,97,100,32,111,102,32,116,104,101,114,101,115,116
+,97,117,114,97,110,116,115,112,97,114,116,110,101,114,115,104,105,112,101,109,
+112,104,97,115,105,115,32,111,110,109,111,115,116,32,114,101,99,101,110,116,115,
+104,97,114,101,32,119,105,116,104,32,115,97,121,105,110,103,32,116,104,97,116,
+102,105,108,108,101,100,32,119,105,116,104,100,101,115,105,103,110,101,100,32,
+116,111,105,116,32,105,115,32,111,102,116,101,110,34,62,60,47,105,102,114,97,109
+,101,62,97,115,32,102,111,108,108,111,119,115,58,109,101,114,103,101,100,32,119,
+105,116,104,116,104,114,111,117,103,104,32,116,104,101,99,111,109,109,101,114,99
+,105,97,108,32,112,111,105,110,116,101,100,32,111,117,116,111,112,112,111,114,
+116,117,110,105,116,121,118,105,101,119,32,111,102,32,116,104,101,114,101,113,
+117,105,114,101,109,101,110,116,100,105,118,105,115,105,111,110,32,111,102,112,
+114,111,103,114,97,109,109,105,110,103,104,101,32,114,101,99,101,105,118,101,100
+,115,101,116,73,110,116,101,114,118,97,108,34,62,60,47,115,112,97,110,62,60,47,
+105,110,32,78,101,119,32,89,111,114,107,97,100,100,105,116,105,111,110,97,108,32
+,99,111,109,112,114,101,115,115,105,111,110,10,10,60,100,105,118,32,105,100,61,
+34,105,110,99,111,114,112,111,114,97,116,101,59,60,47,115,99,114,105,112,116,62,
+60,97,116,116,97,99,104,69,118,101,110,116,98,101,99,97,109,101,32,116,104,101,
+32,34,32,116,97,114,103,101,116,61,34,95,99,97,114,114,105,101,100,32,111,117,
+116,83,111,109,101,32,111,102,32,116,104,101,115,99,105,101,110,99,101,32,97,110
+,100,116,104,101,32,116,105,109,101,32,111,102,67,111,110,116,97,105,110,101,114
+,34,62,109,97,105,110,116,97,105,110,105,110,103,67,104,114,105,115,116,111,112,
+104,101,114,77,117,99,104,32,111,102,32,116,104,101,119,114,105,116,105,110,103,
+115,32,111,102,34,32,104,101,105,103,104,116,61,34,50,115,105,122,101,32,111,102
+,32,116,104,101,118,101,114,115,105,111,110,32,111,102,32,109,105,120,116,117,
+114,101,32,111,102,32,98,101,116,119,101,101,110,32,116,104,101,69,120,97,109,
+112,108,101,115,32,111,102,101,100,117,99,97,116,105,111,110,97,108,99,111,109,
+112,101,116,105,116,105,118,101,32,111,110,115,117,98,109,105,116,61,34,100,105,
+114,101,99,116,111,114,32,111,102,100,105,115,116,105,110,99,116,105,118,101,47,
+68,84,68,32,88,72,84,77,76,32,114,101,108,97,116,105,110,103,32,116,111,116,101,
+110,100,101,110,99,121,32,116,111,112,114,111,118,105,110,99,101,32,111,102,119,
+104,105,99,104,32,119,111,117,108,100,100,101,115,112,105,116,101,32,116,104,101
+,115,99,105,101,110,116,105,102,105,99,32,108,101,103,105,115,108,97,116,117,114
+,101,46,105,110,110,101,114,72,84,77,76,32,97,108,108,101,103,97,116,105,111,110
+,115,65,103,114,105,99,117,108,116,117,114,101,119,97,115,32,117,115,101,100,32,
+105,110,97,112,112,114,111,97,99,104,32,116,111,105,110,116,101,108,108,105,103,
+101,110,116,121,101,97,114,115,32,108,97,116,101,114,44,115,97,110,115,45,115,
+101,114,105,102,100,101,116,101,114,109,105,110,105,110,103,80,101,114,102,111,
+114,109,97,110,99,101,97,112,112,101,97,114,97,110,99,101,115,44,32,119,104,105,
+99,104,32,105,115,32,102,111,117,110,100,97,116,105,111,110,115,97,98,98,114,101
+,118,105,97,116,101,100,104,105,103,104,101,114,32,116,104,97,110,115,32,102,114
+,111,109,32,116,104,101,32,105,110,100,105,118,105,100,117,97,108,32,99,111,109,
+112,111,115,101,100,32,111,102,115,117,112,112,111,115,101,100,32,116,111,99,108
+,97,105,109,115,32,116,104,97,116,97,116,116,114,105,98,117,116,105,111,110,102,
+111,110,116,45,115,105,122,101,58,49,101,108,101,109,101,110,116,115,32,111,102,
+72,105,115,116,111,114,105,99,97,108,32,104,105,115,32,98,114,111,116,104,101,
+114,97,116,32,116,104,101,32,116,105,109,101,97,110,110,105,118,101,114,115,97,
+114,121,103,111,118,101,114,110,101,100,32,98,121,114,101,108,97,116,101,100,32,
+116,111,32,117,108,116,105,109,97,116,101,108,121,32,105,110,110,111,118,97,116,
+105,111,110,115,105,116,32,105,115,32,115,116,105,108,108,99,97,110,32,111,110,
+108,121,32,98,101,100,101,102,105,110,105,116,105,111,110,115,116,111,71,77,84,
+83,116,114,105,110,103,65,32,110,117,109,98,101,114,32,111,102,105,109,103,32,99
+,108,97,115,115,61,34,69,118,101,110,116,117,97,108,108,121,44,119,97,115,32,99,
+104,97,110,103,101,100,111,99,99,117,114,114,101,100,32,105,110,110,101,105,103,
+104,98,111,114,105,110,103,100,105,115,116,105,110,103,117,105,115,104,119,104,
+101,110,32,104,101,32,119,97,115,105,110,116,114,111,100,117,99,105,110,103,116,
+101,114,114,101,115,116,114,105,97,108,77,97,110,121,32,111,102,32,116,104,101,
+97,114,103,117,101,115,32,116,104,97,116,97,110,32,65,109,101,114,105,99,97,110,
+99,111,110,113,117,101,115,116,32,111,102,119,105,100,101,115,112,114,101,97,100
+,32,119,101,114,101,32,107,105,108,108,101,100,115,99,114,101,101,110,32,97,110,
+100,32,73,110,32,111,114,100,101,114,32,116,111,101,120,112,101,99,116,101,100,
+32,116,111,100,101,115,99,101,110,100,97,110,116,115,97,114,101,32,108,111,99,97
+,116,101,100,108,101,103,105,115,108,97,116,105,118,101,103,101,110,101,114,97,
+116,105,111,110,115,32,98,97,99,107,103,114,111,117,110,100,109,111,115,116,32,
+112,101,111,112,108,101,121,101,97,114,115,32,97,102,116,101,114,116,104,101,114
+,101,32,105,115,32,110,111,116,104,101,32,104,105,103,104,101,115,116,102,114,
+101,113,117,101,110,116,108,121,32,116,104,101,121,32,100,111,32,110,111,116,97,
+114,103,117,101,100,32,116,104,97,116,115,104,111,119,101,100,32,116,104,97,116,
+112,114,101,100,111,109,105,110,97,110,116,116,104,101,111,108,111,103,105,99,97
+,108,98,121,32,116,104,101,32,116,105,109,101,99,111,110,115,105,100,101,114,105
+,110,103,115,104,111,114,116,45,108,105,118,101,100,60,47,115,112,97,110,62,60,
+47,97,62,99,97,110,32,98,101,32,117,115,101,100,118,101,114,121,32,108,105,116,
+116,108,101,111,110,101,32,111,102,32,116,104,101,32,104,97,100,32,97,108,114,
+101,97,100,121,105,110,116,101,114,112,114,101,116,101,100,99,111,109,109,117,
+110,105,99,97,116,101,102,101,97,116,117,114,101,115,32,111,102,103,111,118,101,
+114,110,109,101,110,116,44,60,47,110,111,115,99,114,105,112,116,62,101,110,116,
+101,114,101,100,32,116,104,101,34,32,104,101,105,103,104,116,61,34,51,73,110,100
+,101,112,101,110,100,101,110,116,112,111,112,117,108,97,116,105,111,110,115,108,
+97,114,103,101,45,115,99,97,108,101,46,32,65,108,116,104,111,117,103,104,32,117,
+115,101,100,32,105,110,32,116,104,101,100,101,115,116,114,117,99,116,105,111,110
+,112,111,115,115,105,98,105,108,105,116,121,115,116,97,114,116,105,110,103,32,
+105,110,116,119,111,32,111,114,32,109,111,114,101,101,120,112,114,101,115,115,
+105,111,110,115,115,117,98,111,114,100,105,110,97,116,101,108,97,114,103,101,114
+,32,116,104,97,110,104,105,115,116,111,114,121,32,97,110,100,60,47,111,112,116,
+105,111,110,62,13,10,67,111,110,116,105,110,101,110,116,97,108,101,108,105,109,
+105,110,97,116,105,110,103,119,105,108,108,32,110,111,116,32,98,101,112,114,97,
+99,116,105,99,101,32,111,102,105,110,32,102,114,111,110,116,32,111,102,115,105,
+116,101,32,111,102,32,116,104,101,101,110,115,117,114,101,32,116,104,97,116,116,
+111,32,99,114,101,97,116,101,32,97,109,105,115,115,105,115,115,105,112,112,105,
+112,111,116,101,110,116,105,97,108,108,121,111,117,116,115,116,97,110,100,105,
+110,103,98,101,116,116,101,114,32,116,104,97,110,119,104,97,116,32,105,115,32,
+110,111,119,115,105,116,117,97,116,101,100,32,105,110,109,101,116,97,32,110,97,
+109,101,61,34,84,114,97,100,105,116,105,111,110,97,108,115,117,103,103,101,115,
+116,105,111,110,115,84,114,97,110,115,108,97,116,105,111,110,116,104,101,32,102,
+111,114,109,32,111,102,97,116,109,111,115,112,104,101,114,105,99,105,100,101,111
+,108,111,103,105,99,97,108,101,110,116,101,114,112,114,105,115,101,115,99,97,108
+,99,117,108,97,116,105,110,103,101,97,115,116,32,111,102,32,116,104,101,114,101,
+109,110,97,110,116,115,32,111,102,112,108,117,103,105,110,115,112,97,103,101,47,
+105,110,100,101,120,46,112,104,112,63,114,101,109,97,105,110,101,100,32,105,110,
+116,114,97,110,115,102,111,114,109,101,100,72,101,32,119,97,115,32,97,108,115,
+111,119,97,115,32,97,108,114,101,97,100,121,115,116,97,116,105,115,116,105,99,97
+,108,105,110,32,102,97,118,111,114,32,111,102,77,105,110,105,115,116,114,121,32,
+111,102,109,111,118,101,109,101,110,116,32,111,102,102,111,114,109,117,108,97,
+116,105,111,110,105,115,32,114,101,113,117,105,114,101,100,60,108,105,110,107,32
+,114,101,108,61,34,84,104,105,115,32,105,115,32,116,104,101,32,60,97,32,104,114,
+101,102,61,34,47,112,111,112,117,108,97,114,105,122,101,100,105,110,118,111,108,
+118,101,100,32,105,110,97,114,101,32,117,115,101,100,32,116,111,97,110,100,32,
+115,101,118,101,114,97,108,109,97,100,101,32,98,121,32,116,104,101,115,101,101,
+109,115,32,116,111,32,98,101,108,105,107,101,108,121,32,116,104,97,116,80,97,108
+,101,115,116,105,110,105,97,110,110,97,109,101,100,32,97,102,116,101,114,105,116
+,32,104,97,100,32,98,101,101,110,109,111,115,116,32,99,111,109,109,111,110,116,
+111,32,114,101,102,101,114,32,116,111,98,117,116,32,116,104,105,115,32,105,115,
+99,111,110,115,101,99,117,116,105,118,101,116,101,109,112,111,114,97,114,105,108
+,121,73,110,32,103,101,110,101,114,97,108,44,99,111,110,118,101,110,116,105,111,
+110,115,116,97,107,101,115,32,112,108,97,99,101,115,117,98,100,105,118,105,115,
+105,111,110,116,101,114,114,105,116,111,114,105,97,108,111,112,101,114,97,116,
+105,111,110,97,108,112,101,114,109,97,110,101,110,116,108,121,119,97,115,32,108,
+97,114,103,101,108,121,111,117,116,98,114,101,97,107,32,111,102,105,110,32,116,
+104,101,32,112,97,115,116,102,111,108,108,111,119,105,110,103,32,97,32,120,109,
+108,110,115,58,111,103,61,34,62,60,97,32,99,108,97,115,115,61,34,99,108,97,115,
+115,61,34,116,101,120,116,67,111,110,118,101,114,115,105,111,110,32,109,97,121,
+32,98,101,32,117,115,101,100,109,97,110,117,102,97,99,116,117,114,101,97,102,116
+,101,114,32,98,101,105,110,103,99,108,101,97,114,102,105,120,34,62,10,113,117,
+101,115,116,105,111,110,32,111,102,119,97,115,32,101,108,101,99,116,101,100,116,
+111,32,98,101,99,111,109,101,32,97,98,101,99,97,117,115,101,32,111,102,32,115,
+111,109,101,32,112,101,111,112,108,101,105,110,115,112,105,114,101,100,32,98,121
+,115,117,99,99,101,115,115,102,117,108,32,97,32,116,105,109,101,32,119,104,101,
+110,109,111,114,101,32,99,111,109,109,111,110,97,109,111,110,103,115,116,32,116,
+104,101,97,110,32,111,102,102,105,99,105,97,108,119,105,100,116,104,58,49,48,48,
+37,59,116,101,99,104,110,111,108,111,103,121,44,119,97,115,32,97,100,111,112,116
+,101,100,116,111,32,107,101,101,112,32,116,104,101,115,101,116,116,108,101,109,
+101,110,116,115,108,105,118,101,32,98,105,114,116,104,115,105,110,100,101,120,46
+,104,116,109,108,34,67,111,110,110,101,99,116,105,99,117,116,97,115,115,105,103,
+110,101,100,32,116,111,38,97,109,112,59,116,105,109,101,115,59,97,99,99,111,117,
+110,116,32,102,111,114,97,108,105,103,110,61,114,105,103,104,116,116,104,101,32,
+99,111,109,112,97,110,121,97,108,119,97,121,115,32,98,101,101,110,114,101,116,
+117,114,110,101,100,32,116,111,105,110,118,111,108,118,101,109,101,110,116,66,
+101,99,97,117,115,101,32,116,104,101,116,104,105,115,32,112,101,114,105,111,100,
+34,32,110,97,109,101,61,34,113,34,32,99,111,110,102,105,110,101,100,32,116,111,
+97,32,114,101,115,117,108,116,32,111,102,118,97,108,117,101,61,34,34,32,47,62,
+105,115,32,97,99,116,117,97,108,108,121,69,110,118,105,114,111,110,109,101,110,
+116,13,10,60,47,104,101,97,100,62,13,10,67,111,110,118,101,114,115,101,108,121,
+44,62,10,60,100,105,118,32,105,100,61,34,48,34,32,119,105,100,116,104,61,34,49,
+105,115,32,112,114,111,98,97,98,108,121,104,97,118,101,32,98,101,99,111,109,101,
+99,111,110,116,114,111,108,108,105,110,103,116,104,101,32,112,114,111,98,108,101
+,109,99,105,116,105,122,101,110,115,32,111,102,112,111,108,105,116,105,99,105,97
+,110,115,114,101,97,99,104,101,100,32,116,104,101,97,115,32,101,97,114,108,121,
+32,97,115,58,110,111,110,101,59,32,111,118,101,114,60,116,97,98,108,101,32,99,
+101,108,108,118,97,108,105,100,105,116,121,32,111,102,100,105,114,101,99,116,108
+,121,32,116,111,111,110,109,111,117,115,101,100,111,119,110,119,104,101,114,101,
+32,105,116,32,105,115,119,104,101,110,32,105,116,32,119,97,115,109,101,109,98,
+101,114,115,32,111,102,32,114,101,108,97,116,105,111,110,32,116,111,97,99,99,111
+,109,109,111,100,97,116,101,97,108,111,110,103,32,119,105,116,104,32,73,110,32,
+116,104,101,32,108,97,116,101,116,104,101,32,69,110,103,108,105,115,104,100,101,
+108,105,99,105,111,117,115,34,62,116,104,105,115,32,105,115,32,110,111,116,116,
+104,101,32,112,114,101,115,101,110,116,105,102,32,116,104,101,121,32,97,114,101,
+97,110,100,32,102,105,110,97,108,108,121,97,32,109,97,116,116,101,114,32,111,102
+,13,10,9,60,47,100,105,118,62,13,10,13,10,60,47,115,99,114,105,112,116,62,102,97
+,115,116,101,114,32,116,104,97,110,109,97,106,111,114,105,116,121,32,111,102,97,
+102,116,101,114,32,119,104,105,99,104,99,111,109,112,97,114,97,116,105,118,101,
+116,111,32,109,97,105,110,116,97,105,110,105,109,112,114,111,118,101,32,116,104,
+101,97,119,97,114,100,101,100,32,116,104,101,101,114,34,32,99,108,97,115,115,61,
+34,102,114,97,109,101,98,111,114,100,101,114,114,101,115,116,111,114,97,116,105,
+111,110,105,110,32,116,104,101,32,115,97,109,101,97,110,97,108,121,115,105,115,
+32,111,102,116,104,101,105,114,32,102,105,114,115,116,68,117,114,105,110,103,32,
+116,104,101,32,99,111,110,116,105,110,101,110,116,97,108,115,101,113,117,101,110
+,99,101,32,111,102,102,117,110,99,116,105,111,110,40,41,123,102,111,110,116,45,
+115,105,122,101,58,32,119,111,114,107,32,111,110,32,116,104,101,60,47,115,99,114
+,105,112,116,62,10,60,98,101,103,105,110,115,32,119,105,116,104,106,97,118,97,
+115,99,114,105,112,116,58,99,111,110,115,116,105,116,117,101,110,116,119,97,115,
+32,102,111,117,110,100,101,100,101,113,117,105,108,105,98,114,105,117,109,97,115
+,115,117,109,101,32,116,104,97,116,105,115,32,103,105,118,101,110,32,98,121,110,
+101,101,100,115,32,116,111,32,98,101,99,111,111,114,100,105,110,97,116,101,115,
+116,104,101,32,118,97,114,105,111,117,115,97,114,101,32,112,97,114,116,32,111,
+102,111,110,108,121,32,105,110,32,116,104,101,115,101,99,116,105,111,110,115,32,
+111,102,105,115,32,97,32,99,111,109,109,111,110,116,104,101,111,114,105,101,115,
+32,111,102,100,105,115,99,111,118,101,114,105,101,115,97,115,115,111,99,105,97,
+116,105,111,110,101,100,103,101,32,111,102,32,116,104,101,115,116,114,101,110,
+103,116,104,32,111,102,112,111,115,105,116,105,111,110,32,105,110,112,114,101,
+115,101,110,116,45,100,97,121,117,110,105,118,101,114,115,97,108,108,121,116,111
+,32,102,111,114,109,32,116,104,101,98,117,116,32,105,110,115,116,101,97,100,99,
+111,114,112,111,114,97,116,105,111,110,97,116,116,97,99,104,101,100,32,116,111,
+105,115,32,99,111,109,109,111,110,108,121,114,101,97,115,111,110,115,32,102,111,
+114,32,38,113,117,111,116,59,116,104,101,32,99,97,110,32,98,101,32,109,97,100,
+101,119,97,115,32,97,98,108,101,32,116,111,119,104,105,99,104,32,109,101,97,110,
+115,98,117,116,32,100,105,100,32,110,111,116,111,110,77,111,117,115,101,79,118,
+101,114,97,115,32,112,111,115,115,105,98,108,101,111,112,101,114,97,116,101,100,
+32,98,121,99,111,109,105,110,103,32,102,114,111,109,116,104,101,32,112,114,105,
+109,97,114,121,97,100,100,105,116,105,111,110,32,111,102,102,111,114,32,115,101,
+118,101,114,97,108,116,114,97,110,115,102,101,114,114,101,100,97,32,112,101,114,
+105,111,100,32,111,102,97,114,101,32,97,98,108,101,32,116,111,104,111,119,101,
+118,101,114,44,32,105,116,115,104,111,117,108,100,32,104,97,118,101,109,117,99,
+104,32,108,97,114,103,101,114,10,9,60,47,115,99,114,105,112,116,62,97,100,111,
+112,116,101,100,32,116,104,101,112,114,111,112,101,114,116,121,32,111,102,100,
+105,114,101,99,116,101,100,32,98,121,101,102,102,101,99,116,105,118,101,108,121,
+119,97,115,32,98,114,111,117,103,104,116,99,104,105,108,100,114,101,110,32,111,
+102,80,114,111,103,114,97,109,109,105,110,103,108,111,110,103,101,114,32,116,104
+,97,110,109,97,110,117,115,99,114,105,112,116,115,119,97,114,32,97,103,97,105,
+110,115,116,98,121,32,109,101,97,110,115,32,111,102,97,110,100,32,109,111,115,
+116,32,111,102,115,105,109,105,108,97,114,32,116,111,32,112,114,111,112,114,105,
+101,116,97,114,121,111,114,105,103,105,110,97,116,105,110,103,112,114,101,115,
+116,105,103,105,111,117,115,103,114,97,109,109,97,116,105,99,97,108,101,120,112,
+101,114,105,101,110,99,101,46,116,111,32,109,97,107,101,32,116,104,101,73,116,32
+,119,97,115,32,97,108,115,111,105,115,32,102,111,117,110,100,32,105,110,99,111,
+109,112,101,116,105,116,111,114,115,105,110,32,116,104,101,32,85,46,83,46,114,
+101,112,108,97,99,101,32,116,104,101,98,114,111,117,103,104,116,32,116,104,101,
+99,97,108,99,117,108,97,116,105,111,110,102,97,108,108,32,111,102,32,116,104,101
+,116,104,101,32,103,101,110,101,114,97,108,112,114,97,99,116,105,99,97,108,108,
+121,105,110,32,104,111,110,111,114,32,111,102,114,101,108,101,97,115,101,100,32,
+105,110,114,101,115,105,100,101,110,116,105,97,108,97,110,100,32,115,111,109,101
+,32,111,102,107,105,110,103,32,111,102,32,116,104,101,114,101,97,99,116,105,111,
+110,32,116,111,49,115,116,32,69,97,114,108,32,111,102,99,117,108,116,117,114,101
+,32,97,110,100,112,114,105,110,99,105,112,97,108,108,121,60,47,116,105,116,108,
+101,62,10,32,32,116,104,101,121,32,99,97,110,32,98,101,98,97,99,107,32,116,111,
+32,116,104,101,115,111,109,101,32,111,102,32,104,105,115,101,120,112,111,115,117
+,114,101,32,116,111,97,114,101,32,115,105,109,105,108,97,114,102,111,114,109,32,
+111,102,32,116,104,101,97,100,100,70,97,118,111,114,105,116,101,99,105,116,105,
+122,101,110,115,104,105,112,112,97,114,116,32,105,110,32,116,104,101,112,101,111
+,112,108,101,32,119,105,116,104,105,110,32,112,114,97,99,116,105,99,101,116,111,
+32,99,111,110,116,105,110,117,101,38,97,109,112,59,109,105,110,117,115,59,97,112
+,112,114,111,118,101,100,32,98,121,32,116,104,101,32,102,105,114,115,116,32,97,
+108,108,111,119,101,100,32,116,104,101,97,110,100,32,102,111,114,32,116,104,101,
+102,117,110,99,116,105,111,110,105,110,103,112,108,97,121,105,110,103,32,116,104
+,101,115,111,108,117,116,105,111,110,32,116,111,104,101,105,103,104,116,61,34,48
+,34,32,105,110,32,104,105,115,32,98,111,111,107,109,111,114,101,32,116,104,97,
+110,32,97,102,111,108,108,111,119,115,32,116,104,101,99,114,101,97,116,101,100,
+32,116,104,101,112,114,101,115,101,110,99,101,32,105,110,38,110,98,115,112,59,60
+,47,116,100,62,110,97,116,105,111,110,97,108,105,115,116,116,104,101,32,105,100,
+101,97,32,111,102,97,32,99,104,97,114,97,99,116,101,114,119,101,114,101,32,102,
+111,114,99,101,100,32,99,108,97,115,115,61,34,98,116,110,100,97,121,115,32,111,
+102,32,116,104,101,102,101,97,116,117,114,101,100,32,105,110,115,104,111,119,105
+,110,103,32,116,104,101,105,110,116,101,114,101,115,116,32,105,110,105,110,32,
+112,108,97,99,101,32,111,102,116,117,114,110,32,111,102,32,116,104,101,116,104,
+101,32,104,101,97,100,32,111,102,76,111,114,100,32,111,102,32,116,104,101,112,
+111,108,105,116,105,99,97,108,108,121,104,97,115,32,105,116,115,32,111,119,110,
+69,100,117,99,97,116,105,111,110,97,108,97,112,112,114,111,118,97,108,32,111,102
+,115,111,109,101,32,111,102,32,116,104,101,101,97,99,104,32,111,116,104,101,114,
+44,98,101,104,97,118,105,111,114,32,111,102,97,110,100,32,98,101,99,97,117,115,
+101,97,110,100,32,97,110,111,116,104,101,114,97,112,112,101,97,114,101,100,32,
+111,110,114,101,99,111,114,100,101,100,32,105,110,98,108,97,99,107,38,113,117,
+111,116,59,109,97,121,32,105,110,99,108,117,100,101,116,104,101,32,119,111,114,
+108,100,39,115,99,97,110,32,108,101,97,100,32,116,111,114,101,102,101,114,115,32
+,116,111,32,97,98,111,114,100,101,114,61,34,48,34,32,103,111,118,101,114,110,109
+,101,110,116,32,119,105,110,110,105,110,103,32,116,104,101,114,101,115,117,108,
+116,101,100,32,105,110,32,119,104,105,108,101,32,116,104,101,32,87,97,115,104,
+105,110,103,116,111,110,44,116,104,101,32,115,117,98,106,101,99,116,99,105,116,
+121,32,105,110,32,116,104,101,62,60,47,100,105,118,62,13,10,9,9,114,101,102,108,
+101,99,116,32,116,104,101,116,111,32,99,111,109,112,108,101,116,101,98,101,99,97
+,109,101,32,109,111,114,101,114,97,100,105,111,97,99,116,105,118,101,114,101,106
+,101,99,116,101,100,32,98,121,119,105,116,104,111,117,116,32,97,110,121,104,105,
+115,32,102,97,116,104,101,114,44,119,104,105,99,104,32,99,111,117,108,100,99,111
+,112,121,32,111,102,32,116,104,101,116,111,32,105,110,100,105,99,97,116,101,97,
+32,112,111,108,105,116,105,99,97,108,97,99,99,111,117,110,116,115,32,111,102,99,
+111,110,115,116,105,116,117,116,101,115,119,111,114,107,101,100,32,119,105,116,
+104,101,114,60,47,97,62,60,47,108,105,62,111,102,32,104,105,115,32,108,105,102,
+101,97,99,99,111,109,112,97,110,105,101,100,99,108,105,101,110,116,87,105,100,
+116,104,112,114,101,118,101,110,116,32,116,104,101,76,101,103,105,115,108,97,116
+,105,118,101,100,105,102,102,101,114,101,110,116,108,121,116,111,103,101,116,104
+,101,114,32,105,110,104,97,115,32,115,101,118,101,114,97,108,102,111,114,32,97,
+110,111,116,104,101,114,116,101,120,116,32,111,102,32,116,104,101,102,111,117,
+110,100,101,100,32,116,104,101,101,32,119,105,116,104,32,116,104,101,32,105,115,
+32,117,115,101,100,32,102,111,114,99,104,97,110,103,101,100,32,116,104,101,117,
+115,117,97,108,108,121,32,116,104,101,112,108,97,99,101,32,119,104,101,114,101,
+119,104,101,114,101,97,115,32,116,104,101,62,32,60,97,32,104,114,101,102,61,34,
+34,62,60,97,32,104,114,101,102,61,34,116,104,101,109,115,101,108,118,101,115,44,
+97,108,116,104,111,117,103,104,32,104,101,116,104,97,116,32,99,97,110,32,98,101,
+116,114,97,100,105,116,105,111,110,97,108,114,111,108,101,32,111,102,32,116,104,
+101,97,115,32,97,32,114,101,115,117,108,116,114,101,109,111,118,101,67,104,105,
+108,100,100,101,115,105,103,110,101,100,32,98,121,119,101,115,116,32,111,102,32,
+116,104,101,83,111,109,101,32,112,101,111,112,108,101,112,114,111,100,117,99,116
+,105,111,110,44,115,105,100,101,32,111,102,32,116,104,101,110,101,119,115,108,
+101,116,116,101,114,115,117,115,101,100,32,98,121,32,116,104,101,100,111,119,110
+,32,116,111,32,116,104,101,97,99,99,101,112,116,101,100,32,98,121,108,105,118,
+101,32,105,110,32,116,104,101,97,116,116,101,109,112,116,115,32,116,111,111,117,
+116,115,105,100,101,32,116,104,101,102,114,101,113,117,101,110,99,105,101,115,72
+,111,119,101,118,101,114,44,32,105,110,112,114,111,103,114,97,109,109,101,114,
+115,97,116,32,108,101,97,115,116,32,105,110,97,112,112,114,111,120,105,109,97,
+116,101,97,108,116,104,111,117,103,104,32,105,116,119,97,115,32,112,97,114,116,
+32,111,102,97,110,100,32,118,97,114,105,111,117,115,71,111,118,101,114,110,111,
+114,32,111,102,116,104,101,32,97,114,116,105,99,108,101,116,117,114,110,101,100,
+32,105,110,116,111,62,60,97,32,104,114,101,102,61,34,47,116,104,101,32,101,99,
+111,110,111,109,121,105,115,32,116,104,101,32,109,111,115,116,109,111,115,116,32
+,119,105,100,101,108,121,119,111,117,108,100,32,108,97,116,101,114,97,110,100,32
+,112,101,114,104,97,112,115,114,105,115,101,32,116,111,32,116,104,101,111,99,99,
+117,114,115,32,119,104,101,110,117,110,100,101,114,32,119,104,105,99,104,99,111,
+110,100,105,116,105,111,110,115,46,116,104,101,32,119,101,115,116,101,114,110,
+116,104,101,111,114,121,32,116,104,97,116,105,115,32,112,114,111,100,117,99,101,
+100,116,104,101,32,99,105,116,121,32,111,102,105,110,32,119,104,105,99,104,32,
+104,101,115,101,101,110,32,105,110,32,116,104,101,116,104,101,32,99,101,110,116,
+114,97,108,98,117,105,108,100,105,110,103,32,111,102,109,97,110,121,32,111,102,
+32,104,105,115,97,114,101,97,32,111,102,32,116,104,101,105,115,32,116,104,101,32
+,111,110,108,121,109,111,115,116,32,111,102,32,116,104,101,109,97,110,121,32,111
+,102,32,116,104,101,116,104,101,32,87,101,115,116,101,114,110,84,104,101,114,101
+,32,105,115,32,110,111,101,120,116,101,110,100,101,100,32,116,111,83,116,97,116,
+105,115,116,105,99,97,108,99,111,108,115,112,97,110,61,50,32,124,115,104,111,114
+,116,32,115,116,111,114,121,112,111,115,115,105,98,108,101,32,116,111,116,111,
+112,111,108,111,103,105,99,97,108,99,114,105,116,105,99,97,108,32,111,102,114,
+101,112,111,114,116,101,100,32,116,111,97,32,67,104,114,105,115,116,105,97,110,
+100,101,99,105,115,105,111,110,32,116,111,105,115,32,101,113,117,97,108,32,116,
+111,112,114,111,98,108,101,109,115,32,111,102,84,104,105,115,32,99,97,110,32,98,
+101,109,101,114,99,104,97,110,100,105,115,101,102,111,114,32,109,111,115,116,32,
+111,102,110,111,32,101,118,105,100,101,110,99,101,101,100,105,116,105,111,110,
+115,32,111,102,101,108,101,109,101,110,116,115,32,105,110,38,113,117,111,116,59,
+46,32,84,104,101,99,111,109,47,105,109,97,103,101,115,47,119,104,105,99,104,32,
+109,97,107,101,115,116,104,101,32,112,114,111,99,101,115,115,114,101,109,97,105,
+110,115,32,116,104,101,108,105,116,101,114,97,116,117,114,101,44,105,115,32,97,
+32,109,101,109,98,101,114,116,104,101,32,112,111,112,117,108,97,114,116,104,101,
+32,97,110,99,105,101,110,116,112,114,111,98,108,101,109,115,32,105,110,116,105,
+109,101,32,111,102,32,116,104,101,100,101,102,101,97,116,101,100,32,98,121,98,
+111,100,121,32,111,102,32,116,104,101,97,32,102,101,119,32,121,101,97,114,115,
+109,117,99,104,32,111,102,32,116,104,101,116,104,101,32,119,111,114,107,32,111,
+102,67,97,108,105,102,111,114,110,105,97,44,115,101,114,118,101,100,32,97,115,32
+,97,103,111,118,101,114,110,109,101,110,116,46,99,111,110,99,101,112,116,115,32,
+111,102,109,111,118,101,109,101,110,116,32,105,110,9,9,60,100,105,118,32,105,100
+,61,34,105,116,34,32,118,97,108,117,101,61,34,108,97,110,103,117,97,103,101,32,
+111,102,97,115,32,116,104,101,121,32,97,114,101,112,114,111,100,117,99,101,100,
+32,105,110,105,115,32,116,104,97,116,32,116,104,101,101,120,112,108,97,105,110,
+32,116,104,101,100,105,118,62,60,47,100,105,118,62,10,72,111,119,101,118,101,114
+,32,116,104,101,108,101,97,100,32,116,111,32,116,104,101,9,60,97,32,104,114,101,
+102,61,34,47,119,97,115,32,103,114,97,110,116,101,100,112,101,111,112,108,101,32
+,104,97,118,101,99,111,110,116,105,110,117,97,108,108,121,119,97,115,32,115,101,
+101,110,32,97,115,97,110,100,32,114,101,108,97,116,101,100,116,104,101,32,114,
+111,108,101,32,111,102,112,114,111,112,111,115,101,100,32,98,121,111,102,32,116,
+104,101,32,98,101,115,116,101,97,99,104,32,111,116,104,101,114,46,67,111,110,115
+,116,97,110,116,105,110,101,112,101,111,112,108,101,32,102,114,111,109,100,105,
+97,108,101,99,116,115,32,111,102,116,111,32,114,101,118,105,115,105,111,110,119,
+97,115,32,114,101,110,97,109,101,100,97,32,115,111,117,114,99,101,32,111,102,116
+,104,101,32,105,110,105,116,105,97,108,108,97,117,110,99,104,101,100,32,105,110,
+112,114,111,118,105,100,101,32,116,104,101,116,111,32,116,104,101,32,119,101,115
+,116,119,104,101,114,101,32,116,104,101,114,101,97,110,100,32,115,105,109,105,
+108,97,114,98,101,116,119,101,101,110,32,116,119,111,105,115,32,97,108,115,111,
+32,116,104,101,69,110,103,108,105,115,104,32,97,110,100,99,111,110,100,105,116,
+105,111,110,115,44,116,104,97,116,32,105,116,32,119,97,115,101,110,116,105,116,
+108,101,100,32,116,111,116,104,101,109,115,101,108,118,101,115,46,113,117,97,110
+,116,105,116,121,32,111,102,114,97,110,115,112,97,114,101,110,99,121,116,104,101
+,32,115,97,109,101,32,97,115,116,111,32,106,111,105,110,32,116,104,101,99,111,
+117,110,116,114,121,32,97,110,100,116,104,105,115,32,105,115,32,116,104,101,84,
+104,105,115,32,108,101,100,32,116,111,97,32,115,116,97,116,101,109,101,110,116,
+99,111,110,116,114,97,115,116,32,116,111,108,97,115,116,73,110,100,101,120,79,
+102,116,104,114,111,117,103,104,32,104,105,115,105,115,32,100,101,115,105,103,
+110,101,100,116,104,101,32,116,101,114,109,32,105,115,105,115,32,112,114,111,118
+,105,100,101,100,112,114,111,116,101,99,116,32,116,104,101,110,103,60,47,97,62,
+60,47,108,105,62,84,104,101,32,99,117,114,114,101,110,116,116,104,101,32,115,105
+,116,101,32,111,102,115,117,98,115,116,97,110,116,105,97,108,101,120,112,101,114
+,105,101,110,99,101,44,105,110,32,116,104,101,32,87,101,115,116,116,104,101,121,
+32,115,104,111,117,108,100,115,108,111,118,101,110,196,141,105,110,97,99,111,109
+,101,110,116,97,114,105,111,115,117,110,105,118,101,114,115,105,100,97,100,99,
+111,110,100,105,99,105,111,110,101,115,97,99,116,105,118,105,100,97,100,101,115,
+101,120,112,101,114,105,101,110,99,105,97,116,101,99,110,111,108,111,103,195,173
+,97,112,114,111,100,117,99,99,105,195,179,110,112,117,110,116,117,97,99,105,195,
+179,110,97,112,108,105,99,97,99,105,195,179,110,99,111,110,116,114,97,115,101,
+195,177,97,99,97,116,101,103,111,114,195,173,97,115,114,101,103,105,115,116,114,
+97,114,115,101,112,114,111,102,101,115,105,111,110,97,108,116,114,97,116,97,109,
+105,101,110,116,111,114,101,103,195,173,115,116,114,97,116,101,115,101,99,114,
+101,116,97,114,195,173,97,112,114,105,110,99,105,112,97,108,101,115,112,114,111,
+116,101,99,99,105,195,179,110,105,109,112,111,114,116,97,110,116,101,115,105,109
+,112,111,114,116,97,110,99,105,97,112,111,115,105,98,105,108,105,100,97,100,105,
+110,116,101,114,101,115,97,110,116,101,99,114,101,99,105,109,105,101,110,116,111
+,110,101,99,101,115,105,100,97,100,101,115,115,117,115,99,114,105,98,105,114,115
+,101,97,115,111,99,105,97,99,105,195,179,110,100,105,115,112,111,110,105,98,108,
+101,115,101,118,97,108,117,97,99,105,195,179,110,101,115,116,117,100,105,97,110,
+116,101,115,114,101,115,112,111,110,115,97,98,108,101,114,101,115,111,108,117,99
+,105,195,179,110,103,117,97,100,97,108,97,106,97,114,97,114,101,103,105,115,116,
+114,97,100,111,115,111,112,111,114,116,117,110,105,100,97,100,99,111,109,101,114
+,99,105,97,108,101,115,102,111,116,111,103,114,97,102,195,173,97,97,117,116,111,
+114,105,100,97,100,101,115,105,110,103,101,110,105,101,114,195,173,97,116,101,
+108,101,118,105,115,105,195,179,110,99,111,109,112,101,116,101,110,99,105,97,111
+,112,101,114,97,99,105,111,110,101,115,101,115,116,97,98,108,101,99,105,100,111,
+115,105,109,112,108,101,109,101,110,116,101,97,99,116,117,97,108,109,101,110,116
+,101,110,97,118,101,103,97,99,105,195,179,110,99,111,110,102,111,114,109,105,100
+,97,100,108,105,110,101,45,104,101,105,103,104,116,58,102,111,110,116,45,102,97,
+109,105,108,121,58,34,32,58,32,34,104,116,116,112,58,47,47,97,112,112,108,105,99
+,97,116,105,111,110,115,108,105,110,107,34,32,104,114,101,102,61,34,115,112,101,
+99,105,102,105,99,97,108,108,121,47,47,60,33,91,67,68,65,84,65,91,10,79,114,103,
+97,110,105,122,97,116,105,111,110,100,105,115,116,114,105,98,117,116,105,111,110
+,48,112,120,59,32,104,101,105,103,104,116,58,114,101,108,97,116,105,111,110,115,
+104,105,112,100,101,118,105,99,101,45,119,105,100,116,104,60,100,105,118,32,99,
+108,97,115,115,61,34,60,108,97,98,101,108,32,102,111,114,61,34,114,101,103,105,
+115,116,114,97,116,105,111,110,60,47,110,111,115,99,114,105,112,116,62,10,47,105
+,110,100,101,120,46,104,116,109,108,34,119,105,110,100,111,119,46,111,112,101,
+110,40,32,33,105,109,112,111,114,116,97,110,116,59,97,112,112,108,105,99,97,116,
+105,111,110,47,105,110,100,101,112,101,110,100,101,110,99,101,47,47,119,119,119,
+46,103,111,111,103,108,101,111,114,103,97,110,105,122,97,116,105,111,110,97,117,
+116,111,99,111,109,112,108,101,116,101,114,101,113,117,105,114,101,109,101,110,
+116,115,99,111,110,115,101,114,118,97,116,105,118,101,60,102,111,114,109,32,110,
+97,109,101,61,34,105,110,116,101,108,108,101,99,116,117,97,108,109,97,114,103,
+105,110,45,108,101,102,116,58,49,56,116,104,32,99,101,110,116,117,114,121,97,110
+,32,105,109,112,111,114,116,97,110,116,105,110,115,116,105,116,117,116,105,111,
+110,115,97,98,98,114,101,118,105,97,116,105,111,110,60,105,109,103,32,99,108,97,
+115,115,61,34,111,114,103,97,110,105,115,97,116,105,111,110,99,105,118,105,108,
+105,122,97,116,105,111,110,49,57,116,104,32,99,101,110,116,117,114,121,97,114,99
+,104,105,116,101,99,116,117,114,101,105,110,99,111,114,112,111,114,97,116,101,
+100,50,48,116,104,32,99,101,110,116,117,114,121,45,99,111,110,116,97,105,110,101
+,114,34,62,109,111,115,116,32,110,111,116,97,98,108,121,47,62,60,47,97,62,60,47,
+100,105,118,62,110,111,116,105,102,105,99,97,116,105,111,110,39,117,110,100,101,
+102,105,110,101,100,39,41,70,117,114,116,104,101,114,109,111,114,101,44,98,101,
+108,105,101,118,101,32,116,104,97,116,105,110,110,101,114,72,84,77,76,32,61,32,
+112,114,105,111,114,32,116,111,32,116,104,101,100,114,97,109,97,116,105,99,97,
+108,108,121,114,101,102,101,114,114,105,110,103,32,116,111,110,101,103,111,116,
+105,97,116,105,111,110,115,104,101,97,100,113,117,97,114,116,101,114,115,83,111,
+117,116,104,32,65,102,114,105,99,97,117,110,115,117,99,99,101,115,115,102,117,
+108,80,101,110,110,115,121,108,118,97,110,105,97,65,115,32,97,32,114,101,115,117
+,108,116,44,60,104,116,109,108,32,108,97,110,103,61,34,38,108,116,59,47,115,117,
+112,38,103,116,59,100,101,97,108,105,110,103,32,119,105,116,104,112,104,105,108,
+97,100,101,108,112,104,105,97,104,105,115,116,111,114,105,99,97,108,108,121,41,
+59,60,47,115,99,114,105,112,116,62,10,112,97,100,100,105,110,103,45,116,111,112,
+58,101,120,112,101,114,105,109,101,110,116,97,108,103,101,116,65,116,116,114,105
+,98,117,116,101,105,110,115,116,114,117,99,116,105,111,110,115,116,101,99,104,
+110,111,108,111,103,105,101,115,112,97,114,116,32,111,102,32,116,104,101,32,61,
+102,117,110,99,116,105,111,110,40,41,123,115,117,98,115,99,114,105,112,116,105,
+111,110,108,46,100,116,100,34,62,13,10,60,104,116,103,101,111,103,114,97,112,104
+,105,99,97,108,67,111,110,115,116,105,116,117,116,105,111,110,39,44,32,102,117,
+110,99,116,105,111,110,40,115,117,112,112,111,114,116,101,100,32,98,121,97,103,
+114,105,99,117,108,116,117,114,97,108,99,111,110,115,116,114,117,99,116,105,111,
+110,112,117,98,108,105,99,97,116,105,111,110,115,102,111,110,116,45,115,105,122,
+101,58,32,49,97,32,118,97,114,105,101,116,121,32,111,102,60,100,105,118,32,115,
+116,121,108,101,61,34,69,110,99,121,99,108,111,112,101,100,105,97,105,102,114,97
+,109,101,32,115,114,99,61,34,100,101,109,111,110,115,116,114,97,116,101,100,97,
+99,99,111,109,112,108,105,115,104,101,100,117,110,105,118,101,114,115,105,116,
+105,101,115,68,101,109,111,103,114,97,112,104,105,99,115,41,59,60,47,115,99,114,
+105,112,116,62,60,100,101,100,105,99,97,116,101,100,32,116,111,107,110,111,119,
+108,101,100,103,101,32,111,102,115,97,116,105,115,102,97,99,116,105,111,110,112,
+97,114,116,105,99,117,108,97,114,108,121,60,47,100,105,118,62,60,47,100,105,118,
+62,69,110,103,108,105,115,104,32,40,85,83,41,97,112,112,101,110,100,67,104,105,
+108,100,40,116,114,97,110,115,109,105,115,115,105,111,110,115,46,32,72,111,119,
+101,118,101,114,44,32,105,110,116,101,108,108,105,103,101,110,99,101,34,32,116,
+97,98,105,110,100,101,120,61,34,102,108,111,97,116,58,114,105,103,104,116,59,67,
+111,109,109,111,110,119,101,97,108,116,104,114,97,110,103,105,110,103,32,102,114
+,111,109,105,110,32,119,104,105,99,104,32,116,104,101,97,116,32,108,101,97,115,
+116,32,111,110,101,114,101,112,114,111,100,117,99,116,105,111,110,101,110,99,121
+,99,108,111,112,101,100,105,97,59,102,111,110,116,45,115,105,122,101,58,49,106,
+117,114,105,115,100,105,99,116,105,111,110,97,116,32,116,104,97,116,32,116,105,
+109,101,34,62,60,97,32,99,108,97,115,115,61,34,73,110,32,97,100,100,105,116,105,
+111,110,44,100,101,115,99,114,105,112,116,105,111,110,43,99,111,110,118,101,114,
+115,97,116,105,111,110,99,111,110,116,97,99,116,32,119,105,116,104,105,115,32,
+103,101,110,101,114,97,108,108,121,114,34,32,99,111,110,116,101,110,116,61,34,
+114,101,112,114,101,115,101,110,116,105,110,103,38,108,116,59,109,97,116,104,38,
+103,116,59,112,114,101,115,101,110,116,97,116,105,111,110,111,99,99,97,115,105,
+111,110,97,108,108,121,60,105,109,103,32,119,105,100,116,104,61,34,110,97,118,
+105,103,97,116,105,111,110,34,62,99,111,109,112,101,110,115,97,116,105,111,110,
+99,104,97,109,112,105,111,110,115,104,105,112,109,101,100,105,97,61,34,97,108,
+108,34,32,118,105,111,108,97,116,105,111,110,32,111,102,114,101,102,101,114,101,
+110,99,101,32,116,111,114,101,116,117,114,110,32,116,114,117,101,59,83,116,114,
+105,99,116,47,47,69,78,34,32,116,114,97,110,115,97,99,116,105,111,110,115,105,
+110,116,101,114,118,101,110,116,105,111,110,118,101,114,105,102,105,99,97,116,
+105,111,110,73,110,102,111,114,109,97,116,105,111,110,32,100,105,102,102,105,99,
+117,108,116,105,101,115,67,104,97,109,112,105,111,110,115,104,105,112,99,97,112,
+97,98,105,108,105,116,105,101,115,60,33,91,101,110,100,105,102,93,45,45,62,125,
+10,60,47,115,99,114,105,112,116,62,10,67,104,114,105,115,116,105,97,110,105,116,
+121,102,111,114,32,101,120,97,109,112,108,101,44,80,114,111,102,101,115,115,105,
+111,110,97,108,114,101,115,116,114,105,99,116,105,111,110,115,115,117,103,103,
+101,115,116,32,116,104,97,116,119,97,115,32,114,101,108,101,97,115,101,100,40,
+115,117,99,104,32,97,115,32,116,104,101,114,101,109,111,118,101,67,108,97,115,
+115,40,117,110,101,109,112,108,111,121,109,101,110,116,116,104,101,32,65,109,101
+,114,105,99,97,110,115,116,114,117,99,116,117,114,101,32,111,102,47,105,110,100,
+101,120,46,104,116,109,108,32,112,117,98,108,105,115,104,101,100,32,105,110,115,
+112,97,110,32,99,108,97,115,115,61,34,34,62,60,97,32,104,114,101,102,61,34,47,
+105,110,116,114,111,100,117,99,116,105,111,110,98,101,108,111,110,103,105,110,
+103,32,116,111,99,108,97,105,109,101,100,32,116,104,97,116,99,111,110,115,101,
+113,117,101,110,99,101,115,60,109,101,116,97,32,110,97,109,101,61,34,71,117,105,
+100,101,32,116,111,32,116,104,101,111,118,101,114,119,104,101,108,109,105,110,
+103,97,103,97,105,110,115,116,32,116,104,101,32,99,111,110,99,101,110,116,114,97
+,116,101,100,44,10,46,110,111,110,116,111,117,99,104,32,111,98,115,101,114,118,
+97,116,105,111,110,115,60,47,97,62,10,60,47,100,105,118,62,10,102,32,40,100,111,
+99,117,109,101,110,116,46,98,111,114,100,101,114,58,32,49,112,120,32,123,102,111
+,110,116,45,115,105,122,101,58,49,116,114,101,97,116,109,101,110,116,32,111,102,
+48,34,32,104,101,105,103,104,116,61,34,49,109,111,100,105,102,105,99,97,116,105,
+111,110,73,110,100,101,112,101,110,100,101,110,99,101,100,105,118,105,100,101,
+100,32,105,110,116,111,103,114,101,97,116,101,114,32,116,104,97,110,97,99,104,
+105,101,118,101,109,101,110,116,115,101,115,116,97,98,108,105,115,104,105,110,
+103,74,97,118,97,83,99,114,105,112,116,34,32,110,101,118,101,114,116,104,101,108
+,101,115,115,115,105,103,110,105,102,105,99,97,110,99,101,66,114,111,97,100,99,
+97,115,116,105,110,103,62,38,110,98,115,112,59,60,47,116,100,62,99,111,110,116,
+97,105,110,101,114,34,62,10,115,117,99,104,32,97,115,32,116,104,101,32,105,110,
+102,108,117,101,110,99,101,32,111,102,97,32,112,97,114,116,105,99,117,108,97,114
+,115,114,99,61,39,104,116,116,112,58,47,47,110,97,118,105,103,97,116,105,111,110
+,34,32,104,97,108,102,32,111,102,32,116,104,101,32,115,117,98,115,116,97,110,116
+,105,97,108,32,38,110,98,115,112,59,60,47,100,105,118,62,97,100,118,97,110,116,
+97,103,101,32,111,102,100,105,115,99,111,118,101,114,121,32,111,102,102,117,110,
+100,97,109,101,110,116,97,108,32,109,101,116,114,111,112,111,108,105,116,97,110,
+116,104,101,32,111,112,112,111,115,105,116,101,34,32,120,109,108,58,108,97,110,
+103,61,34,100,101,108,105,98,101,114,97,116,101,108,121,97,108,105,103,110,61,99
+,101,110,116,101,114,101,118,111,108,117,116,105,111,110,32,111,102,112,114,101,
+115,101,114,118,97,116,105,111,110,105,109,112,114,111,118,101,109,101,110,116,
+115,98,101,103,105,110,110,105,110,103,32,105,110,74,101,115,117,115,32,67,104,
+114,105,115,116,80,117,98,108,105,99,97,116,105,111,110,115,100,105,115,97,103,
+114,101,101,109,101,110,116,116,101,120,116,45,97,108,105,103,110,58,114,44,32,
+102,117,110,99,116,105,111,110,40,41,115,105,109,105,108,97,114,105,116,105,101,
+115,98,111,100,121,62,60,47,104,116,109,108,62,105,115,32,99,117,114,114,101,110
+,116,108,121,97,108,112,104,97,98,101,116,105,99,97,108,105,115,32,115,111,109,
+101,116,105,109,101,115,116,121,112,101,61,34,105,109,97,103,101,47,109,97,110,
+121,32,111,102,32,116,104,101,32,102,108,111,119,58,104,105,100,100,101,110,59,
+97,118,97,105,108,97,98,108,101,32,105,110,100,101,115,99,114,105,98,101,32,116,
+104,101,101,120,105,115,116,101,110,99,101,32,111,102,97,108,108,32,111,118,101,
+114,32,116,104,101,116,104,101,32,73,110,116,101,114,110,101,116,9,60,117,108,32
+,99,108,97,115,115,61,34,105,110,115,116,97,108,108,97,116,105,111,110,110,101,
+105,103,104,98,111,114,104,111,111,100,97,114,109,101,100,32,102,111,114,99,101,
+115,114,101,100,117,99,105,110,103,32,116,104,101,99,111,110,116,105,110,117,101
+,115,32,116,111,78,111,110,101,116,104,101,108,101,115,115,44,116,101,109,112,
+101,114,97,116,117,114,101,115,10,9,9,60,97,32,104,114,101,102,61,34,99,108,111,
+115,101,32,116,111,32,116,104,101,101,120,97,109,112,108,101,115,32,111,102,32,
+105,115,32,97,98,111,117,116,32,116,104,101,40,115,101,101,32,98,101,108,111,119
+,41,46,34,32,105,100,61,34,115,101,97,114,99,104,112,114,111,102,101,115,115,105
+,111,110,97,108,105,115,32,97,118,97,105,108,97,98,108,101,116,104,101,32,111,
+102,102,105,99,105,97,108,9,9,60,47,115,99,114,105,112,116,62,10,10,9,9,60,100,
+105,118,32,105,100,61,34,97,99,99,101,108,101,114,97,116,105,111,110,116,104,114
+,111,117,103,104,32,116,104,101,32,72,97,108,108,32,111,102,32,70,97,109,101,100
+,101,115,99,114,105,112,116,105,111,110,115,116,114,97,110,115,108,97,116,105,
+111,110,115,105,110,116,101,114,102,101,114,101,110,99,101,32,116,121,112,101,61
+,39,116,101,120,116,47,114,101,99,101,110,116,32,121,101,97,114,115,105,110,32,
+116,104,101,32,119,111,114,108,100,118,101,114,121,32,112,111,112,117,108,97,114
+,123,98,97,99,107,103,114,111,117,110,100,58,116,114,97,100,105,116,105,111,110,
+97,108,32,115,111,109,101,32,111,102,32,116,104,101,32,99,111,110,110,101,99,116
+,101,100,32,116,111,101,120,112,108,111,105,116,97,116,105,111,110,101,109,101,
+114,103,101,110,99,101,32,111,102,99,111,110,115,116,105,116,117,116,105,111,110
+,65,32,72,105,115,116,111,114,121,32,111,102,115,105,103,110,105,102,105,99,97,
+110,116,32,109,97,110,117,102,97,99,116,117,114,101,100,101,120,112,101,99,116,
+97,116,105,111,110,115,62,60,110,111,115,99,114,105,112,116,62,60,99,97,110,32,
+98,101,32,102,111,117,110,100,98,101,99,97,117,115,101,32,116,104,101,32,104,97,
+115,32,110,111,116,32,98,101,101,110,110,101,105,103,104,98,111,117,114,105,110,
+103,119,105,116,104,111,117,116,32,116,104,101,32,97,100,100,101,100,32,116,111,
+32,116,104,101,9,60,108,105,32,99,108,97,115,115,61,34,105,110,115,116,114,117,
+109,101,110,116,97,108,83,111,118,105,101,116,32,85,110,105,111,110,97,99,107,
+110,111,119,108,101,100,103,101,100,119,104,105,99,104,32,99,97,110,32,98,101,
+110,97,109,101,32,102,111,114,32,116,104,101,97,116,116,101,110,116,105,111,110,
+32,116,111,97,116,116,101,109,112,116,115,32,116,111,32,100,101,118,101,108,111,
+112,109,101,110,116,115,73,110,32,102,97,99,116,44,32,116,104,101,60,108,105,32,
+99,108,97,115,115,61,34,97,105,109,112,108,105,99,97,116,105,111,110,115,115,117
+,105,116,97,98,108,101,32,102,111,114,109,117,99,104,32,111,102,32,116,104,101,
+32,99,111,108,111,110,105,122,97,116,105,111,110,112,114,101,115,105,100,101,110
+,116,105,97,108,99,97,110,99,101,108,66,117,98,98,108,101,32,73,110,102,111,114,
+109,97,116,105,111,110,109,111,115,116,32,111,102,32,116,104,101,32,105,115,32,
+100,101,115,99,114,105,98,101,100,114,101,115,116,32,111,102,32,116,104,101,32,
+109,111,114,101,32,111,114,32,108,101,115,115,105,110,32,83,101,112,116,101,109,
+98,101,114,73,110,116,101,108,108,105,103,101,110,99,101,115,114,99,61,34,104,
+116,116,112,58,47,47,112,120,59,32,104,101,105,103,104,116,58,32,97,118,97,105,
+108,97,98,108,101,32,116,111,109,97,110,117,102,97,99,116,117,114,101,114,104,
+117,109,97,110,32,114,105,103,104,116,115,108,105,110,107,32,104,114,101,102,61,
+34,47,97,118,97,105,108,97,98,105,108,105,116,121,112,114,111,112,111,114,116,
+105,111,110,97,108,111,117,116,115,105,100,101,32,116,104,101,32,97,115,116,114,
+111,110,111,109,105,99,97,108,104,117,109,97,110,32,98,101,105,110,103,115,110,
+97,109,101,32,111,102,32,116,104,101,32,97,114,101,32,102,111,117,110,100,32,105
+,110,97,114,101,32,98,97,115,101,100,32,111,110,115,109,97,108,108,101,114,32,
+116,104,97,110,97,32,112,101,114,115,111,110,32,119,104,111,101,120,112,97,110,
+115,105,111,110,32,111,102,97,114,103,117,105,110,103,32,116,104,97,116,110,111,
+119,32,107,110,111,119,110,32,97,115,73,110,32,116,104,101,32,101,97,114,108,121
+,105,110,116,101,114,109,101,100,105,97,116,101,100,101,114,105,118,101,100,32,
+102,114,111,109,83,99,97,110,100,105,110,97,118,105,97,110,60,47,97,62,60,47,100
+,105,118,62,13,10,99,111,110,115,105,100,101,114,32,116,104,101,97,110,32,101,
+115,116,105,109,97,116,101,100,116,104,101,32,78,97,116,105,111,110,97,108,60,
+100,105,118,32,105,100,61,34,112,97,103,114,101,115,117,108,116,105,110,103,32,
+105,110,99,111,109,109,105,115,115,105,111,110,101,100,97,110,97,108,111,103,111
+,117,115,32,116,111,97,114,101,32,114,101,113,117,105,114,101,100,47,117,108,62,
+10,60,47,100,105,118,62,10,119,97,115,32,98,97,115,101,100,32,111,110,97,110,100
+,32,98,101,99,97,109,101,32,97,38,110,98,115,112,59,38,110,98,115,112,59,116,34,
+32,118,97,108,117,101,61,34,34,32,119,97,115,32,99,97,112,116,117,114,101,100,
+110,111,32,109,111,114,101,32,116,104,97,110,114,101,115,112,101,99,116,105,118,
+101,108,121,99,111,110,116,105,110,117,101,32,116,111,32,62,13,10,60,104,101,97,
+100,62,13,10,60,119,101,114,101,32,99,114,101,97,116,101,100,109,111,114,101,32,
+103,101,110,101,114,97,108,105,110,102,111,114,109,97,116,105,111,110,32,117,115
+,101,100,32,102,111,114,32,116,104,101,105,110,100,101,112,101,110,100,101,110,
+116,32,116,104,101,32,73,109,112,101,114,105,97,108,99,111,109,112,111,110,101,
+110,116,32,111,102,116,111,32,116,104,101,32,110,111,114,116,104,105,110,99,108,
+117,100,101,32,116,104,101,32,67,111,110,115,116,114,117,99,116,105,111,110,115,
+105,100,101,32,111,102,32,116,104,101,32,119,111,117,108,100,32,110,111,116,32,
+98,101,102,111,114,32,105,110,115,116,97,110,99,101,105,110,118,101,110,116,105,
+111,110,32,111,102,109,111,114,101,32,99,111,109,112,108,101,120,99,111,108,108,
+101,99,116,105,118,101,108,121,98,97,99,107,103,114,111,117,110,100,58,32,116,
+101,120,116,45,97,108,105,103,110,58,32,105,116,115,32,111,114,105,103,105,110,
+97,108,105,110,116,111,32,97,99,99,111,117,110,116,116,104,105,115,32,112,114,
+111,99,101,115,115,97,110,32,101,120,116,101,110,115,105,118,101,104,111,119,101
+,118,101,114,44,32,116,104,101,116,104,101,121,32,97,114,101,32,110,111,116,114,
+101,106,101,99,116,101,100,32,116,104,101,99,114,105,116,105,99,105,115,109,32,
+111,102,100,117,114,105,110,103,32,119,104,105,99,104,112,114,111,98,97,98,108,
+121,32,116,104,101,116,104,105,115,32,97,114,116,105,99,108,101,40,102,117,110,
+99,116,105,111,110,40,41,123,73,116,32,115,104,111,117,108,100,32,98,101,97,110,
+32,97,103,114,101,101,109,101,110,116,97,99,99,105,100,101,110,116,97,108,108,
+121,100,105,102,102,101,114,115,32,102,114,111,109,65,114,99,104,105,116,101,99,
+116,117,114,101,98,101,116,116,101,114,32,107,110,111,119,110,97,114,114,97,110,
+103,101,109,101,110,116,115,105,110,102,108,117,101,110,99,101,32,111,110,97,116
+,116,101,110,100,101,100,32,116,104,101,105,100,101,110,116,105,99,97,108,32,116
+,111,115,111,117,116,104,32,111,102,32,116,104,101,112,97,115,115,32,116,104,114
+,111,117,103,104,120,109,108,34,32,116,105,116,108,101,61,34,119,101,105,103,104
+,116,58,98,111,108,100,59,99,114,101,97,116,105,110,103,32,116,104,101,100,105,
+115,112,108,97,121,58,110,111,110,101,114,101,112,108,97,99,101,100,32,116,104,
+101,60,105,109,103,32,115,114,99,61,34,47,105,104,116,116,112,115,58,47,47,119,
+119,119,46,87,111,114,108,100,32,87,97,114,32,73,73,116,101,115,116,105,109,111,
+110,105,97,108,115,102,111,117,110,100,32,105,110,32,116,104,101,114,101,113,117
+,105,114,101,100,32,116,111,32,97,110,100,32,116,104,97,116,32,116,104,101,98,
+101,116,119,101,101,110,32,116,104,101,32,119,97,115,32,100,101,115,105,103,110,
+101,100,99,111,110,115,105,115,116,115,32,111,102,32,99,111,110,115,105,100,101,
+114,97,98,108,121,112,117,98,108,105,115,104,101,100,32,98,121,116,104,101,32,
+108,97,110,103,117,97,103,101,67,111,110,115,101,114,118,97,116,105,111,110,99,
+111,110,115,105,115,116,101,100,32,111,102,114,101,102,101,114,32,116,111,32,116
+,104,101,98,97,99,107,32,116,111,32,116,104,101,32,99,115,115,34,32,109,101,100,
+105,97,61,34,80,101,111,112,108,101,32,102,114,111,109,32,97,118,97,105,108,97,
+98,108,101,32,111,110,112,114,111,118,101,100,32,116,111,32,98,101,115,117,103,
+103,101,115,116,105,111,110,115,34,119,97,115,32,107,110,111,119,110,32,97,115,
+118,97,114,105,101,116,105,101,115,32,111,102,108,105,107,101,108,121,32,116,111
+,32,98,101,99,111,109,112,114,105,115,101,100,32,111,102,115,117,112,112,111,114
+,116,32,116,104,101,32,104,97,110,100,115,32,111,102,32,116,104,101,99,111,117,
+112,108,101,100,32,119,105,116,104,99,111,110,110,101,99,116,32,97,110,100,32,98
+,111,114,100,101,114,58,110,111,110,101,59,112,101,114,102,111,114,109,97,110,99
+,101,115,98,101,102,111,114,101,32,98,101,105,110,103,108,97,116,101,114,32,98,
+101,99,97,109,101,99,97,108,99,117,108,97,116,105,111,110,115,111,102,116,101,
+110,32,99,97,108,108,101,100,114,101,115,105,100,101,110,116,115,32,111,102,109,
+101,97,110,105,110,103,32,116,104,97,116,62,60,108,105,32,99,108,97,115,115,61,
+34,101,118,105,100,101,110,99,101,32,102,111,114,101,120,112,108,97,110,97,116,
+105,111,110,115,101,110,118,105,114,111,110,109,101,110,116,115,34,62,60,47,97,
+62,60,47,100,105,118,62,119,104,105,99,104,32,97,108,108,111,119,115,73,110,116,
+114,111,100,117,99,116,105,111,110,100,101,118,101,108,111,112,101,100,32,98,121
+,97,32,119,105,100,101,32,114,97,110,103,101,111,110,32,98,101,104,97,108,102,32
+,111,102,118,97,108,105,103,110,61,34,116,111,112,34,112,114,105,110,99,105,112,
+108,101,32,111,102,97,116,32,116,104,101,32,116,105,109,101,44,60,47,110,111,115
+,99,114,105,112,116,62,13,115,97,105,100,32,116,111,32,104,97,118,101,105,110,32
+,116,104,101,32,102,105,114,115,116,119,104,105,108,101,32,111,116,104,101,114,
+115,104,121,112,111,116,104,101,116,105,99,97,108,112,104,105,108,111,115,111,
+112,104,101,114,115,112,111,119,101,114,32,111,102,32,116,104,101,99,111,110,116
+,97,105,110,101,100,32,105,110,112,101,114,102,111,114,109,101,100,32,98,121,105
+,110,97,98,105,108,105,116,121,32,116,111,119,101,114,101,32,119,114,105,116,116
+,101,110,115,112,97,110,32,115,116,121,108,101,61,34,105,110,112,117,116,32,110,
+97,109,101,61,34,116,104,101,32,113,117,101,115,116,105,111,110,105,110,116,101,
+110,100,101,100,32,102,111,114,114,101,106,101,99,116,105,111,110,32,111,102,105
+,109,112,108,105,101,115,32,116,104,97,116,105,110,118,101,110,116,101,100,32,
+116,104,101,116,104,101,32,115,116,97,110,100,97,114,100,119,97,115,32,112,114,
+111,98,97,98,108,121,108,105,110,107,32,98,101,116,119,101,101,110,112,114,111,
+102,101,115,115,111,114,32,111,102,105,110,116,101,114,97,99,116,105,111,110,115
+,99,104,97,110,103,105,110,103,32,116,104,101,73,110,100,105,97,110,32,79,99,101
+,97,110,32,99,108,97,115,115,61,34,108,97,115,116,119,111,114,107,105,110,103,32
+,119,105,116,104,39,104,116,116,112,58,47,47,119,119,119,46,121,101,97,114,115,
+32,98,101,102,111,114,101,84,104,105,115,32,119,97,115,32,116,104,101,114,101,99
+,114,101,97,116,105,111,110,97,108,101,110,116,101,114,105,110,103,32,116,104,
+101,109,101,97,115,117,114,101,109,101,110,116,115,97,110,32,101,120,116,114,101
+,109,101,108,121,118,97,108,117,101,32,111,102,32,116,104,101,115,116,97,114,116
+,32,111,102,32,116,104,101,10,60,47,115,99,114,105,112,116,62,10,10,97,110,32,
+101,102,102,111,114,116,32,116,111,105,110,99,114,101,97,115,101,32,116,104,101,
+116,111,32,116,104,101,32,115,111,117,116,104,115,112,97,99,105,110,103,61,34,48
+,34,62,115,117,102,102,105,99,105,101,110,116,108,121,116,104,101,32,69,117,114,
+111,112,101,97,110,99,111,110,118,101,114,116,101,100,32,116,111,99,108,101,97,
+114,84,105,109,101,111,117,116,100,105,100,32,110,111,116,32,104,97,118,101,99,
+111,110,115,101,113,117,101,110,116,108,121,102,111,114,32,116,104,101,32,110,
+101,120,116,101,120,116,101,110,115,105,111,110,32,111,102,101,99,111,110,111,
+109,105,99,32,97,110,100,97,108,116,104,111,117,103,104,32,116,104,101,97,114,
+101,32,112,114,111,100,117,99,101,100,97,110,100,32,119,105,116,104,32,116,104,
+101,105,110,115,117,102,102,105,99,105,101,110,116,103,105,118,101,110,32,98,121
+,32,116,104,101,115,116,97,116,105,110,103,32,116,104,97,116,101,120,112,101,110
+,100,105,116,117,114,101,115,60,47,115,112,97,110,62,60,47,97,62,10,116,104,111,
+117,103,104,116,32,116,104,97,116,111,110,32,116,104,101,32,98,97,115,105,115,99
+,101,108,108,112,97,100,100,105,110,103,61,105,109,97,103,101,32,111,102,32,116,
+104,101,114,101,116,117,114,110,105,110,103,32,116,111,105,110,102,111,114,109,
+97,116,105,111,110,44,115,101,112,97,114,97,116,101,100,32,98,121,97,115,115,97,
+115,115,105,110,97,116,101,100,115,34,32,99,111,110,116,101,110,116,61,34,97,117
+,116,104,111,114,105,116,121,32,111,102,110,111,114,116,104,119,101,115,116,101,
+114,110,60,47,100,105,118,62,10,60,100,105,118,32,34,62,60,47,100,105,118,62,13,
+10,32,32,99,111,110,115,117,108,116,97,116,105,111,110,99,111,109,109,117,110,
+105,116,121,32,111,102,116,104,101,32,110,97,116,105,111,110,97,108,105,116,32,
+115,104,111,117,108,100,32,98,101,112,97,114,116,105,99,105,112,97,110,116,115,
+32,97,108,105,103,110,61,34,108,101,102,116,116,104,101,32,103,114,101,97,116,
+101,115,116,115,101,108,101,99,116,105,111,110,32,111,102,115,117,112,101,114,
+110,97,116,117,114,97,108,100,101,112,101,110,100,101,110,116,32,111,110,105,115
+,32,109,101,110,116,105,111,110,101,100,97,108,108,111,119,105,110,103,32,116,
+104,101,119,97,115,32,105,110,118,101,110,116,101,100,97,99,99,111,109,112,97,
+110,121,105,110,103,104,105,115,32,112,101,114,115,111,110,97,108,97,118,97,105,
+108,97,98,108,101,32,97,116,115,116,117,100,121,32,111,102,32,116,104,101,111,
+110,32,116,104,101,32,111,116,104,101,114,101,120,101,99,117,116,105,111,110,32,
+111,102,72,117,109,97,110,32,82,105,103,104,116,115,116,101,114,109,115,32,111,
+102,32,116,104,101,97,115,115,111,99,105,97,116,105,111,110,115,114,101,115,101,
+97,114,99,104,32,97,110,100,115,117,99,99,101,101,100,101,100,32,98,121,100,101,
+102,101,97,116,101,100,32,116,104,101,97,110,100,32,102,114,111,109,32,116,104,
+101,98,117,116,32,116,104,101,121,32,97,114,101,99,111,109,109,97,110,100,101,
+114,32,111,102,115,116,97,116,101,32,111,102,32,116,104,101,121,101,97,114,115,
+32,111,102,32,97,103,101,116,104,101,32,115,116,117,100,121,32,111,102,60,117,
+108,32,99,108,97,115,115,61,34,115,112,108,97,99,101,32,105,110,32,116,104,101,
+119,104,101,114,101,32,104,101,32,119,97,115,60,108,105,32,99,108,97,115,115,61,
+34,102,116,104,101,114,101,32,97,114,101,32,110,111,119,104,105,99,104,32,98,101
+,99,97,109,101,104,101,32,112,117,98,108,105,115,104,101,100,101,120,112,114,101
+,115,115,101,100,32,105,110,116,111,32,119,104,105,99,104,32,116,104,101,99,111,
+109,109,105,115,115,105,111,110,101,114,102,111,110,116,45,119,101,105,103,104,
+116,58,116,101,114,114,105,116,111,114,121,32,111,102,101,120,116,101,110,115,
+105,111,110,115,34,62,82,111,109,97,110,32,69,109,112,105,114,101,101,113,117,97
+,108,32,116,111,32,116,104,101,73,110,32,99,111,110,116,114,97,115,116,44,104,
+111,119,101,118,101,114,44,32,97,110,100,105,115,32,116,121,112,105,99,97,108,
+108,121,97,110,100,32,104,105,115,32,119,105,102,101,40,97,108,115,111,32,99,97,
+108,108,101,100,62,60,117,108,32,99,108,97,115,115,61,34,101,102,102,101,99,116,
+105,118,101,108,121,32,101,118,111,108,118,101,100,32,105,110,116,111,115,101,
+101,109,32,116,111,32,104,97,118,101,119,104,105,99,104,32,105,115,32,116,104,
+101,116,104,101,114,101,32,119,97,115,32,110,111,97,110,32,101,120,99,101,108,
+108,101,110,116,97,108,108,32,111,102,32,116,104,101,115,101,100,101,115,99,114,
+105,98,101,100,32,98,121,73,110,32,112,114,97,99,116,105,99,101,44,98,114,111,97
+,100,99,97,115,116,105,110,103,99,104,97,114,103,101,100,32,119,105,116,104,114,
+101,102,108,101,99,116,101,100,32,105,110,115,117,98,106,101,99,116,101,100,32,
+116,111,109,105,108,105,116,97,114,121,32,97,110,100,116,111,32,116,104,101,32,
+112,111,105,110,116,101,99,111,110,111,109,105,99,97,108,108,121,115,101,116,84,
+97,114,103,101,116,105,110,103,97,114,101,32,97,99,116,117,97,108,108,121,118,
+105,99,116,111,114,121,32,111,118,101,114,40,41,59,60,47,115,99,114,105,112,116,
+62,99,111,110,116,105,110,117,111,117,115,108,121,114,101,113,117,105,114,101,
+100,32,102,111,114,101,118,111,108,117,116,105,111,110,97,114,121,97,110,32,101,
+102,102,101,99,116,105,118,101,110,111,114,116,104,32,111,102,32,116,104,101,44,
+32,119,104,105,99,104,32,119,97,115,32,102,114,111,110,116,32,111,102,32,116,104
+,101,111,114,32,111,116,104,101,114,119,105,115,101,115,111,109,101,32,102,111,
+114,109,32,111,102,104,97,100,32,110,111,116,32,98,101,101,110,103,101,110,101,
+114,97,116,101,100,32,98,121,105,110,102,111,114,109,97,116,105,111,110,46,112,
+101,114,109,105,116,116,101,100,32,116,111,105,110,99,108,117,100,101,115,32,116
+,104,101,100,101,118,101,108,111,112,109,101,110,116,44,101,110,116,101,114,101,
+100,32,105,110,116,111,116,104,101,32,112,114,101,118,105,111,117,115,99,111,110
+,115,105,115,116,101,110,116,108,121,97,114,101,32,107,110,111,119,110,32,97,115
+,116,104,101,32,102,105,101,108,100,32,111,102,116,104,105,115,32,116,121,112,
+101,32,111,102,103,105,118,101,110,32,116,111,32,116,104,101,116,104,101,32,116,
+105,116,108,101,32,111,102,99,111,110,116,97,105,110,115,32,116,104,101,105,110,
+115,116,97,110,99,101,115,32,111,102,105,110,32,116,104,101,32,110,111,114,116,
+104,100,117,101,32,116,111,32,116,104,101,105,114,97,114,101,32,100,101,115,105,
+103,110,101,100,99,111,114,112,111,114,97,116,105,111,110,115,119,97,115,32,116,
+104,97,116,32,116,104,101,111,110,101,32,111,102,32,116,104,101,115,101,109,111,
+114,101,32,112,111,112,117,108,97,114,115,117,99,99,101,101,100,101,100,32,105,
+110,115,117,112,112,111,114,116,32,102,114,111,109,105,110,32,100,105,102,102,
+101,114,101,110,116,100,111,109,105,110,97,116,101,100,32,98,121,100,101,115,105
+,103,110,101,100,32,102,111,114,111,119,110,101,114,115,104,105,112,32,111,102,
+97,110,100,32,112,111,115,115,105,98,108,121,115,116,97,110,100,97,114,100,105,
+122,101,100,114,101,115,112,111,110,115,101,84,101,120,116,119,97,115,32,105,110
+,116,101,110,100,101,100,114,101,99,101,105,118,101,100,32,116,104,101,97,115,
+115,117,109,101,100,32,116,104,97,116,97,114,101,97,115,32,111,102,32,116,104,
+101,112,114,105,109,97,114,105,108,121,32,105,110,116,104,101,32,98,97,115,105,
+115,32,111,102,105,110,32,116,104,101,32,115,101,110,115,101,97,99,99,111,117,
+110,116,115,32,102,111,114,100,101,115,116,114,111,121,101,100,32,98,121,97,116,
+32,108,101,97,115,116,32,116,119,111,119,97,115,32,100,101,99,108,97,114,101,100
+,99,111,117,108,100,32,110,111,116,32,98,101,83,101,99,114,101,116,97,114,121,32
+,111,102,97,112,112,101,97,114,32,116,111,32,98,101,109,97,114,103,105,110,45,
+116,111,112,58,49,47,94,92,115,43,124,92,115,43,36,47,103,101,41,123,116,104,114
+,111,119,32,101,125,59,116,104,101,32,115,116,97,114,116,32,111,102,116,119,111,
+32,115,101,112,97,114,97,116,101,108,97,110,103,117,97,103,101,32,97,110,100,119
+,104,111,32,104,97,100,32,98,101,101,110,111,112,101,114,97,116,105,111,110,32,
+111,102,100,101,97,116,104,32,111,102,32,116,104,101,114,101,97,108,32,110,117,
+109,98,101,114,115,9,60,108,105,110,107,32,114,101,108,61,34,112,114,111,118,105
+,100,101,100,32,116,104,101,116,104,101,32,115,116,111,114,121,32,111,102,99,111
+,109,112,101,116,105,116,105,111,110,115,101,110,103,108,105,115,104,32,40,85,75
+,41,101,110,103,108,105,115,104,32,40,85,83,41,208,156,208,190,208,189,208,179,
+208,190,208,187,208,161,209,128,208,191,209,129,208,186,208,184,209,129,209,128,
+208,191,209,129,208,186,208,184,209,129,209,128,208,191,209,129,208,186,208,190,
+217,132,216,185,216,177,216,168,217,138,216,169,230,173,163,233,171,148,228,184,
+173,230,150,135,231,174,128,228,189,147,228,184,173,230,150,135,231,185,129,228,
+189,147,228,184,173,230,150,135,230,156,137,233,153,144,229,133,172,229,143,184,
+228,186,186,230,176,145,230,148,191,229,186,156,233,152,191,233,135,140,229,183,
+180,229,183,180,231,164,190,228,188,154,228,184,187,228,185,137,230,147,141,228,
+189,156,231,179,187,231,187,159,230,148,191,231,173,150,230,179,149,232,167,132,
+105,110,102,111,114,109,97,99,105,195,179,110,104,101,114,114,97,109,105,101,110
+,116,97,115,101,108,101,99,116,114,195,179,110,105,99,111,100,101,115,99,114,105
+,112,99,105,195,179,110,99,108,97,115,105,102,105,99,97,100,111,115,99,111,110,
+111,99,105,109,105,101,110,116,111,112,117,98,108,105,99,97,99,105,195,179,110,
+114,101,108,97,99,105,111,110,97,100,97,115,105,110,102,111,114,109,195,161,116,
+105,99,97,114,101,108,97,99,105,111,110,97,100,111,115,100,101,112,97,114,116,97
+,109,101,110,116,111,116,114,97,98,97,106,97,100,111,114,101,115,100,105,114,101
+,99,116,97,109,101,110,116,101,97,121,117,110,116,97,109,105,101,110,116,111,109
+,101,114,99,97,100,111,76,105,98,114,101,99,111,110,116,195,161,99,116,101,110,
+111,115,104,97,98,105,116,97,99,105,111,110,101,115,99,117,109,112,108,105,109,
+105,101,110,116,111,114,101,115,116,97,117,114,97,110,116,101,115,100,105,115,
+112,111,115,105,99,105,195,179,110,99,111,110,115,101,99,117,101,110,99,105,97,
+101,108,101,99,116,114,195,179,110,105,99,97,97,112,108,105,99,97,99,105,111,110
+,101,115,100,101,115,99,111,110,101,99,116,97,100,111,105,110,115,116,97,108,97,
+99,105,195,179,110,114,101,97,108,105,122,97,99,105,195,179,110,117,116,105,108,
+105,122,97,99,105,195,179,110,101,110,99,105,99,108,111,112,101,100,105,97,101,
+110,102,101,114,109,101,100,97,100,101,115,105,110,115,116,114,117,109,101,110,
+116,111,115,101,120,112,101,114,105,101,110,99,105,97,115,105,110,115,116,105,
+116,117,99,105,195,179,110,112,97,114,116,105,99,117,108,97,114,101,115,115,117,
+98,99,97,116,101,103,111,114,105,97,209,130,208,190,208,187,209,140,208,186,208,
+190,208,160,208,190,209,129,209,129,208,184,208,184,209,128,208,176,208,177,208,
+190,209,130,209,139,208,177,208,190,208,187,209,140,209,136,208,181,208,191,209,
+128,208,190,209,129,209,130,208,190,208,188,208,190,208,182,208,181,209,130,208,
+181,208,180,209,128,209,131,208,179,208,184,209,133,209,129,208,187,209,131,209,
+135,208,176,208,181,209,129,208,181,208,185,209,135,208,176,209,129,208,178,209,
+129,208,181,208,179,208,180,208,176,208,160,208,190,209,129,209,129,208,184,209,
+143,208,156,208,190,209,129,208,186,208,178,208,181,208,180,209,128,209,131,208,
+179,208,184,208,181,208,179,208,190,209,128,208,190,208,180,208,176,208,178,208,
+190,208,191,209,128,208,190,209,129,208,180,208,176,208,189,208,189,209,139,209,
+133,208,180,208,190,208,187,208,182,208,189,209,139,208,184,208,188,208,181,208,
+189,208,189,208,190,208,156,208,190,209,129,208,186,208,178,209,139,209,128,209,
+131,208,177,208,187,208,181,208,185,208,156,208,190,209,129,208,186,208,178,208,
+176,209,129,209,130,209,128,208,176,208,189,209,139,208,189,208,184,209,135,208,
+181,208,179,208,190,209,128,208,176,208,177,208,190,209,130,208,181,208,180,208,
+190,208,187,208,182,208,181,208,189,209,131,209,129,208,187,209,131,208,179,208,
+184,209,130,208,181,208,191,208,181,209,128,209,140,208,158,208,180,208,189,208,
+176,208,186,208,190,208,191,208,190,209,130,208,190,208,188,209,131,209,128,208,
+176,208,177,208,190,209,130,209,131,208,176,208,191,209,128,208,181,208,187,209,
+143,208,178,208,190,208,190,208,177,209,137,208,181,208,190,208,180,208,189,208,
+190,208,179,208,190,209,129,208,178,208,190,208,181,208,179,208,190,209,129,209,
+130,208,176,209,130,209,140,208,184,208,180,209,128,209,131,208,179,208,190,208,
+185,209,132,208,190,209,128,209,131,208,188,208,181,209,133,208,190,209,128,208,
+190,209,136,208,190,208,191,209,128,208,190,209,130,208,184,208,178,209,129,209,
+129,209,139,208,187,208,186,208,176,208,186,208,176,208,182,208,180,209,139,208,
+185,208,178,208,187,208,176,209,129,209,130,208,184,208,179,209,128,209,131,208,
+191,208,191,209,139,208,178,208,188,208,181,209,129,209,130,208,181,209,128,208,
+176,208,177,208,190,209,130,208,176,209,129,208,186,208,176,208,183,208,176,208,
+187,208,191,208,181,209,128,208,178,209,139,208,185,208,180,208,181,208,187,208,
+176,209,130,209,140,208,180,208,181,208,189,209,140,208,179,208,184,208,191,208,
+181,209,128,208,184,208,190,208,180,208,177,208,184,208,183,208,189,208,181,209,
+129,208,190,209,129,208,189,208,190,208,178,208,181,208,188,208,190,208,188,208,
+181,208,189,209,130,208,186,209,131,208,191,208,184,209,130,209,140,208,180,208,
+190,208,187,208,182,208,189,208,176,209,128,208,176,208,188,208,186,208,176,209,
+133,208,189,208,176,209,135,208,176,208,187,208,190,208,160,208,176,208,177,208,
+190,209,130,208,176,208,162,208,190,208,187,209,140,208,186,208,190,209,129,208,
+190,208,178,209,129,208,181,208,188,208,178,209,130,208,190,209,128,208,190,208,
+185,208,189,208,176,209,135,208,176,208,187,208,176,209,129,208,191,208,184,209,
+129,208,190,208,186,209,129,208,187,209,131,208,182,208,177,209,139,209,129,208,
+184,209,129,209,130,208,181,208,188,208,191,208,181,209,135,208,176,209,130,208,
+184,208,189,208,190,208,178,208,190,208,179,208,190,208,191,208,190,208,188,208,
+190,209,137,208,184,209,129,208,176,208,185,209,130,208,190,208,178,208,191,208,
+190,209,135,208,181,208,188,209,131,208,191,208,190,208,188,208,190,209,137,209,
+140,208,180,208,190,208,187,208,182,208,189,208,190,209,129,209,129,209,139,208,
+187,208,186,208,184,208,177,209,139,209,129,209,130,209,128,208,190,208,180,208,
+176,208,189,208,189,209,139,208,181,208,188,208,189,208,190,208,179,208,184,208,
+181,208,191,209,128,208,190,208,181,208,186,209,130,208,161,208,181,208,185,209,
+135,208,176,209,129,208,188,208,190,208,180,208,181,208,187,208,184,209,130,208,
+176,208,186,208,190,208,179,208,190,208,190,208,189,208,187,208,176,208,185,208,
+189,208,179,208,190,209,128,208,190,208,180,208,181,208,178,208,181,209,128,209,
+129,208,184,209,143,209,129,209,130,209,128,208,176,208,189,208,181,209,132,208,
+184,208,187,209,140,208,188,209,139,209,131,209,128,208,190,208,178,208,189,209,
+143,209,128,208,176,208,183,208,189,209,139,209,133,208,184,209,129,208,186,208,
+176,209,130,209,140,208,189,208,181,208,180,208,181,208,187,209,142,209,143,208,
+189,208,178,208,176,209,128,209,143,208,188,208,181,208,189,209,140,209,136,208,
+181,208,188,208,189,208,190,208,179,208,184,209,133,208,180,208,176,208,189,208,
+189,208,190,208,185,208,183,208,189,208,176,209,135,208,184,209,130,208,189,208,
+181,208,187,209,140,208,183,209,143,209,132,208,190,209,128,209,131,208,188,208,
+176,208,162,208,181,208,191,208,181,209,128,209,140,208,188,208,181,209,129,209,
+143,209,134,208,176,208,183,208,176,209,137,208,184,209,130,209,139,208,155,209,
+131,209,135,209,136,208,184,208,181,224,164,168,224,164,185,224,165,128,224,164,
+130,224,164,149,224,164,176,224,164,168,224,165,135,224,164,133,224,164,170,224,
+164,168,224,165,135,224,164,149,224,164,191,224,164,175,224,164,190,224,164,149,
+224,164,176,224,165,135,224,164,130,224,164,133,224,164,168,224,165,141,224,164,
+175,224,164,149,224,165,141,224,164,175,224,164,190,224,164,151,224,164,190,224,
+164,135,224,164,161,224,164,172,224,164,190,224,164,176,224,165,135,224,164,149,
+224,164,191,224,164,184,224,165,128,224,164,166,224,164,191,224,164,175,224,164,
+190,224,164,170,224,164,185,224,164,178,224,165,135,224,164,184,224,164,191,224,
+164,130,224,164,185,224,164,173,224,164,190,224,164,176,224,164,164,224,164,133,
+224,164,170,224,164,168,224,165,128,224,164,181,224,164,190,224,164,178,224,165,
+135,224,164,184,224,165,135,224,164,181,224,164,190,224,164,149,224,164,176,224,
+164,164,224,165,135,224,164,174,224,165,135,224,164,176,224,165,135,224,164,185,
+224,165,139,224,164,168,224,165,135,224,164,184,224,164,149,224,164,164,224,165,
+135,224,164,172,224,164,185,224,165,129,224,164,164,224,164,184,224,164,190,224,
+164,135,224,164,159,224,164,185,224,165,139,224,164,151,224,164,190,224,164,156,
+224,164,190,224,164,168,224,165,135,224,164,174,224,164,191,224,164,168,224,164,
+159,224,164,149,224,164,176,224,164,164,224,164,190,224,164,149,224,164,176,224,
+164,168,224,164,190,224,164,137,224,164,168,224,164,149,224,165,135,224,164,175,
+224,164,185,224,164,190,224,164,129,224,164,184,224,164,172,224,164,184,224,165,
+135,224,164,173,224,164,190,224,164,183,224,164,190,224,164,134,224,164,170,224,
+164,149,224,165,135,224,164,178,224,164,191,224,164,175,224,165,135,224,164,182,
+224,165,129,224,164,176,224,165,130,224,164,135,224,164,184,224,164,149,224,165,
+135,224,164,152,224,164,130,224,164,159,224,165,135,224,164,174,224,165,135,224,
+164,176,224,165,128,224,164,184,224,164,149,224,164,164,224,164,190,224,164,174,
+224,165,135,224,164,176,224,164,190,224,164,178,224,165,135,224,164,149,224,164,
+176,224,164,133,224,164,167,224,164,191,224,164,149,224,164,133,224,164,170,224,
+164,168,224,164,190,224,164,184,224,164,174,224,164,190,224,164,156,224,164,174,
+224,165,129,224,164,157,224,165,135,224,164,149,224,164,190,224,164,176,224,164,
+163,224,164,185,224,165,139,224,164,164,224,164,190,224,164,149,224,164,161,224,
+164,188,224,165,128,224,164,175,224,164,185,224,164,190,224,164,130,224,164,185,
+224,165,139,224,164,159,224,164,178,224,164,182,224,164,172,224,165,141,224,164,
+166,224,164,178,224,164,191,224,164,175,224,164,190,224,164,156,224,165,128,224,
+164,181,224,164,168,224,164,156,224,164,190,224,164,164,224,164,190,224,164,149,
+224,165,136,224,164,184,224,165,135,224,164,134,224,164,170,224,164,149,224,164,
+190,224,164,181,224,164,190,224,164,178,224,165,128,224,164,166,224,165,135,224,
+164,168,224,165,135,224,164,170,224,165,130,224,164,176,224,165,128,224,164,170,
+224,164,190,224,164,168,224,165,128,224,164,137,224,164,184,224,164,149,224,165,
+135,224,164,185,224,165,139,224,164,151,224,165,128,224,164,172,224,165,136,224,
+164,160,224,164,149,224,164,134,224,164,170,224,164,149,224,165,128,224,164,181,
+224,164,176,224,165,141,224,164,183,224,164,151,224,164,190,224,164,130,224,164,
+181,224,164,134,224,164,170,224,164,149,224,165,139,224,164,156,224,164,191,224,
+164,178,224,164,190,224,164,156,224,164,190,224,164,168,224,164,190,224,164,184,
+224,164,185,224,164,174,224,164,164,224,164,185,224,164,174,224,165,135,224,164,
+130,224,164,137,224,164,168,224,164,149,224,165,128,224,164,175,224,164,190,224,
+164,185,224,165,130,224,164,166,224,164,176,224,165,141,224,164,156,224,164,184,
+224,165,130,224,164,154,224,165,128,224,164,170,224,164,184,224,164,130,224,164,
+166,224,164,184,224,164,181,224,164,190,224,164,178,224,164,185,224,165,139,224,
+164,168,224,164,190,224,164,185,224,165,139,224,164,164,224,165,128,224,164,156,
+224,165,136,224,164,184,224,165,135,224,164,181,224,164,190,224,164,170,224,164,
+184,224,164,156,224,164,168,224,164,164,224,164,190,224,164,168,224,165,135,224,
+164,164,224,164,190,224,164,156,224,164,190,224,164,176,224,165,128,224,164,152,
+224,164,190,224,164,175,224,164,178,224,164,156,224,164,191,224,164,178,224,165,
+135,224,164,168,224,165,128,224,164,154,224,165,135,224,164,156,224,164,190,224,
+164,130,224,164,154,224,164,170,224,164,164,224,165,141,224,164,176,224,164,151,
+224,165,130,224,164,151,224,164,178,224,164,156,224,164,190,224,164,164,224,165,
+135,224,164,172,224,164,190,224,164,185,224,164,176,224,164,134,224,164,170,224,
+164,168,224,165,135,224,164,181,224,164,190,224,164,185,224,164,168,224,164,135,
+224,164,184,224,164,149,224,164,190,224,164,184,224,165,129,224,164,172,224,164,
+185,224,164,176,224,164,185,224,164,168,224,165,135,224,164,135,224,164,184,224,
+164,184,224,165,135,224,164,184,224,164,185,224,164,191,224,164,164,224,164,172,
+224,164,161,224,164,188,224,165,135,224,164,152,224,164,159,224,164,168,224,164,
+190,224,164,164,224,164,178,224,164,190,224,164,182,224,164,170,224,164,190,224,
+164,130,224,164,154,224,164,182,224,165,141,224,164,176,224,165,128,224,164,172,
+224,164,161,224,164,188,224,165,128,224,164,185,224,165,139,224,164,164,224,165,
+135,224,164,184,224,164,190,224,164,136,224,164,159,224,164,182,224,164,190,224,
+164,175,224,164,166,224,164,184,224,164,149,224,164,164,224,165,128,224,164,156,
+224,164,190,224,164,164,224,165,128,224,164,181,224,164,190,224,164,178,224,164,
+190,224,164,185,224,164,156,224,164,190,224,164,176,224,164,170,224,164,159,224,
+164,168,224,164,190,224,164,176,224,164,150,224,164,168,224,165,135,224,164,184,
+224,164,161,224,164,188,224,164,149,224,164,174,224,164,191,224,164,178,224,164,
+190,224,164,137,224,164,184,224,164,149,224,165,128,224,164,149,224,165,135,224,
+164,181,224,164,178,224,164,178,224,164,151,224,164,164,224,164,190,224,164,150,
+224,164,190,224,164,168,224,164,190,224,164,133,224,164,176,224,165,141,224,164,
+165,224,164,156,224,164,185,224,164,190,224,164,130,224,164,166,224,165,135,224,
+164,150,224,164,190,224,164,170,224,164,185,224,164,178,224,165,128,224,164,168,
+224,164,191,224,164,175,224,164,174,224,164,172,224,164,191,224,164,168,224,164,
+190,224,164,172,224,165,136,224,164,130,224,164,149,224,164,149,224,164,185,224,
+165,128,224,164,130,224,164,149,224,164,185,224,164,168,224,164,190,224,164,166,
+224,165,135,224,164,164,224,164,190,224,164,185,224,164,174,224,164,178,224,165,
+135,224,164,149,224,164,190,224,164,171,224,165,128,224,164,156,224,164,172,224,
+164,149,224,164,191,224,164,164,224,165,129,224,164,176,224,164,164,224,164,174,
+224,164,190,224,164,130,224,164,151,224,164,181,224,164,185,224,165,128,224,164,
+130,224,164,176,224,165,139,224,164,156,224,164,188,224,164,174,224,164,191,224,
+164,178,224,165,128,224,164,134,224,164,176,224,165,139,224,164,170,224,164,184,
+224,165,135,224,164,168,224,164,190,224,164,175,224,164,190,224,164,166,224,164,
+181,224,164,178,224,165,135,224,164,168,224,165,135,224,164,150,224,164,190,224,
+164,164,224,164,190,224,164,149,224,164,176,224,165,128,224,164,172,224,164,137,
+224,164,168,224,164,149,224,164,190,224,164,156,224,164,181,224,164,190,224,164,
+172,224,164,170,224,165,130,224,164,176,224,164,190,224,164,172,224,164,161,224,
+164,188,224,164,190,224,164,184,224,165,140,224,164,166,224,164,190,224,164,182,
+224,165,135,224,164,175,224,164,176,224,164,149,224,164,191,224,164,175,224,165,
+135,224,164,149,224,164,185,224,164,190,224,164,130,224,164,133,224,164,149,224,
+164,184,224,164,176,224,164,172,224,164,168,224,164,190,224,164,143,224,164,181,
+224,164,185,224,164,190,224,164,130,224,164,184,224,165,141,224,164,165,224,164,
+178,224,164,174,224,164,191,224,164,178,224,165,135,224,164,178,224,165,135,224,
+164,150,224,164,149,224,164,181,224,164,191,224,164,183,224,164,175,224,164,149,
+224,165,141,224,164,176,224,164,130,224,164,184,224,164,174,224,165,130,224,164,
+185,224,164,165,224,164,190,224,164,168,224,164,190,216,170,216,179,216,170,216,
+183,217,138,216,185,217,133,216,180,216,167,216,177,217,131,216,169,216,168,217,
+136,216,167,216,179,216,183,216,169,216,167,217,132,216,181,217,129,216,173,216,
+169,217,133,217,136,216,167,216,182,217,138,216,185,216,167,217,132,216,174,216,
+167,216,181,216,169,216,167,217,132,217,133,216,178,217,138,216,175,216,167,217,
+132,216,185,216,167,217,133,216,169,216,167,217,132,217,131,216,167,216,170,216,
+168,216,167,217,132,216,177,216,175,217,136,216,175,216,168,216,177,217,134,216,
+167,217,133,216,172,216,167,217,132,216,175,217,136,217,132,216,169,216,167,217,
+132,216,185,216,167,217,132,217,133,216,167,217,132,217,133,217,136,217,130,216,
+185,216,167,217,132,216,185,216,177,216,168,217,138,216,167,217,132,216,179,216,
+177,217,138,216,185,216,167,217,132,216,172,217,136,216,167,217,132,216,167,217,
+132,216,176,217,135,216,167,216,168,216,167,217,132,216,173,217,138,216,167,216,
+169,216,167,217,132,216,173,217,130,217,136,217,130,216,167,217,132,217,131,216,
+177,217,138,217,133,216,167,217,132,216,185,216,177,216,167,217,130,217,133,216,
+173,217,129,217,136,216,184,216,169,216,167,217,132,216,171,216,167,217,134,217,
+138,217,133,216,180,216,167,217,135,216,175,216,169,216,167,217,132,217,133,216,
+177,216,163,216,169,216,167,217,132,217,130,216,177,216,162,217,134,216,167,217,
+132,216,180,216,168,216,167,216,168,216,167,217,132,216,173,217,136,216,167,216,
+177,216,167,217,132,216,172,216,175,217,138,216,175,216,167,217,132,216,163,216,
+179,216,177,216,169,216,167,217,132,216,185,217,132,217,136,217,133,217,133,216,
+172,217,133,217,136,216,185,216,169,216,167,217,132,216,177,216,173,217,133,217,
+134,216,167,217,132,217,134,217,130,216,167,216,183,217,129,217,132,216,179,216,
+183,217,138,217,134,216,167,217,132,217,131,217,136,217,138,216,170,216,167,217,
+132,216,175,217,134,217,138,216,167,216,168,216,177,217,131,216,167,216,170,217,
+135,216,167,217,132,216,177,217,138,216,167,216,182,216,170,216,173,217,138,216,
+167,216,170,217,138,216,168,216,170,217,136,217,130,217,138,216,170,216,167,217,
+132,216,163,217,136,217,132,217,137,216,167,217,132,216,168,216,177,217,138,216,
+175,216,167,217,132,217,131,217,132,216,167,217,133,216,167,217,132,216,177,216,
+167,216,168,216,183,216,167,217,132,216,180,216,174,216,181,217,138,216,179,217,
+138,216,167,216,177,216,167,216,170,216,167,217,132,216,171,216,167,217,132,216,
+171,216,167,217,132,216,181,217,132,216,167,216,169,216,167,217,132,216,173,216,
+175,217,138,216,171,216,167,217,132,216,178,217,136,216,167,216,177,216,167,217,
+132,216,174,217,132,217,138,216,172,216,167,217,132,216,172,217,133,217,138,216,
+185,216,167,217,132,216,185,216,167,217,133,217,135,216,167,217,132,216,172,217,
+133,216,167,217,132,216,167,217,132,216,179,216,167,216,185,216,169,217,133,216,
+180,216,167,217,135,216,175,217,135,216,167,217,132,216,177,216,166,217,138,216,
+179,216,167,217,132,216,175,216,174,217,136,217,132,216,167,217,132,217,129,217,
+134,217,138,216,169,216,167,217,132,217,131,216,170,216,167,216,168,216,167,217,
+132,216,175,217,136,216,177,217,138,216,167,217,132,216,175,216,177,217,136,216,
+179,216,167,216,179,216,170,216,186,216,177,217,130,216,170,216,181,216,167,217,
+133,217,138,217,133,216,167,217,132,216,168,217,134,216,167,216,170,216,167,217,
+132,216,185,216,184,217,138,217,133,101,110,116,101,114,116,97,105,110,109,101,
+110,116,117,110,100,101,114,115,116,97,110,100,105,110,103,32,61,32,102,117,110,
+99,116,105,111,110,40,41,46,106,112,103,34,32,119,105,100,116,104,61,34,99,111,
+110,102,105,103,117,114,97,116,105,111,110,46,112,110,103,34,32,119,105,100,116,
+104,61,34,60,98,111,100,121,32,99,108,97,115,115,61,34,77,97,116,104,46,114,97,
+110,100,111,109,40,41,99,111,110,116,101,109,112,111,114,97,114,121,32,85,110,
+105,116,101,100,32,83,116,97,116,101,115,99,105,114,99,117,109,115,116,97,110,99
+,101,115,46,97,112,112,101,110,100,67,104,105,108,100,40,111,114,103,97,110,105,
+122,97,116,105,111,110,115,60,115,112,97,110,32,99,108,97,115,115,61,34,34,62,60
+,105,109,103,32,115,114,99,61,34,47,100,105,115,116,105,110,103,117,105,115,104,
+101,100,116,104,111,117,115,97,110,100,115,32,111,102,32,99,111,109,109,117,110,
+105,99,97,116,105,111,110,99,108,101,97,114,34,62,60,47,100,105,118,62,105,110,
+118,101,115,116,105,103,97,116,105,111,110,102,97,118,105,99,111,110,46,105,99,
+111,34,32,109,97,114,103,105,110,45,114,105,103,104,116,58,98,97,115,101,100,32,
+111,110,32,116,104,101,32,77,97,115,115,97,99,104,117,115,101,116,116,115,116,97
+,98,108,101,32,98,111,114,100,101,114,61,105,110,116,101,114,110,97,116,105,111,
+110,97,108,97,108,115,111,32,107,110,111,119,110,32,97,115,112,114,111,110,117,
+110,99,105,97,116,105,111,110,98,97,99,107,103,114,111,117,110,100,58,35,102,112
+,97,100,100,105,110,103,45,108,101,102,116,58,70,111,114,32,101,120,97,109,112,
+108,101,44,32,109,105,115,99,101,108,108,97,110,101,111,117,115,38,108,116,59,47
+,109,97,116,104,38,103,116,59,112,115,121,99,104,111,108,111,103,105,99,97,108,
+105,110,32,112,97,114,116,105,99,117,108,97,114,101,97,114,99,104,34,32,116,121,
+112,101,61,34,102,111,114,109,32,109,101,116,104,111,100,61,34,97,115,32,111,112
+,112,111,115,101,100,32,116,111,83,117,112,114,101,109,101,32,67,111,117,114,116
+,111,99,99,97,115,105,111,110,97,108,108,121,32,65,100,100,105,116,105,111,110,
+97,108,108,121,44,78,111,114,116,104,32,65,109,101,114,105,99,97,112,120,59,98,
+97,99,107,103,114,111,117,110,100,111,112,112,111,114,116,117,110,105,116,105,
+101,115,69,110,116,101,114,116,97,105,110,109,101,110,116,46,116,111,76,111,119,
+101,114,67,97,115,101,40,109,97,110,117,102,97,99,116,117,114,105,110,103,112,
+114,111,102,101,115,115,105,111,110,97,108,32,99,111,109,98,105,110,101,100,32,
+119,105,116,104,70,111,114,32,105,110,115,116,97,110,99,101,44,99,111,110,115,
+105,115,116,105,110,103,32,111,102,34,32,109,97,120,108,101,110,103,116,104,61,
+34,114,101,116,117,114,110,32,102,97,108,115,101,59,99,111,110,115,99,105,111,
+117,115,110,101,115,115,77,101,100,105,116,101,114,114,97,110,101,97,110,101,120
+,116,114,97,111,114,100,105,110,97,114,121,97,115,115,97,115,115,105,110,97,116,
+105,111,110,115,117,98,115,101,113,117,101,110,116,108,121,32,98,117,116,116,111
+,110,32,116,121,112,101,61,34,116,104,101,32,110,117,109,98,101,114,32,111,102,
+116,104,101,32,111,114,105,103,105,110,97,108,32,99,111,109,112,114,101,104,101,
+110,115,105,118,101,114,101,102,101,114,115,32,116,111,32,116,104,101,60,47,117,
+108,62,10,60,47,100,105,118,62,10,112,104,105,108,111,115,111,112,104,105,99,97,
+108,108,111,99,97,116,105,111,110,46,104,114,101,102,119,97,115,32,112,117,98,
+108,105,115,104,101,100,83,97,110,32,70,114,97,110,99,105,115,99,111,40,102,117,
+110,99,116,105,111,110,40,41,123,10,60,100,105,118,32,105,100,61,34,109,97,105,
+110,115,111,112,104,105,115,116,105,99,97,116,101,100,109,97,116,104,101,109,97,
+116,105,99,97,108,32,47,104,101,97,100,62,13,10,60,98,111,100,121,115,117,103,
+103,101,115,116,115,32,116,104,97,116,100,111,99,117,109,101,110,116,97,116,105,
+111,110,99,111,110,99,101,110,116,114,97,116,105,111,110,114,101,108,97,116,105,
+111,110,115,104,105,112,115,109,97,121,32,104,97,118,101,32,98,101,101,110,40,
+102,111,114,32,101,120,97,109,112,108,101,44,84,104,105,115,32,97,114,116,105,99
+,108,101,32,105,110,32,115,111,109,101,32,99,97,115,101,115,112,97,114,116,115,
+32,111,102,32,116,104,101,32,100,101,102,105,110,105,116,105,111,110,32,111,102,
+71,114,101,97,116,32,66,114,105,116,97,105,110,32,99,101,108,108,112,97,100,100,
+105,110,103,61,101,113,117,105,118,97,108,101,110,116,32,116,111,112,108,97,99,
+101,104,111,108,100,101,114,61,34,59,32,102,111,110,116,45,115,105,122,101,58,32
+,106,117,115,116,105,102,105,99,97,116,105,111,110,98,101,108,105,101,118,101,
+100,32,116,104,97,116,115,117,102,102,101,114,101,100,32,102,114,111,109,97,116,
+116,101,109,112,116,101,100,32,116,111,32,108,101,97,100,101,114,32,111,102,32,
+116,104,101,99,114,105,112,116,34,32,115,114,99,61,34,47,40,102,117,110,99,116,
+105,111,110,40,41,32,123,97,114,101,32,97,118,97,105,108,97,98,108,101,10,9,60,
+108,105,110,107,32,114,101,108,61,34,32,115,114,99,61,39,104,116,116,112,58,47,
+47,105,110,116,101,114,101,115,116,101,100,32,105,110,99,111,110,118,101,110,116
+,105,111,110,97,108,32,34,32,97,108,116,61,34,34,32,47,62,60,47,97,114,101,32,
+103,101,110,101,114,97,108,108,121,104,97,115,32,97,108,115,111,32,98,101,101,
+110,109,111,115,116,32,112,111,112,117,108,97,114,32,99,111,114,114,101,115,112,
+111,110,100,105,110,103,99,114,101,100,105,116,101,100,32,119,105,116,104,116,
+121,108,101,61,34,98,111,114,100,101,114,58,60,47,97,62,60,47,115,112,97,110,62,
+60,47,46,103,105,102,34,32,119,105,100,116,104,61,34,60,105,102,114,97,109,101,
+32,115,114,99,61,34,116,97,98,108,101,32,99,108,97,115,115,61,34,105,110,108,105
+,110,101,45,98,108,111,99,107,59,97,99,99,111,114,100,105,110,103,32,116,111,32,
+116,111,103,101,116,104,101,114,32,119,105,116,104,97,112,112,114,111,120,105,
+109,97,116,101,108,121,112,97,114,108,105,97,109,101,110,116,97,114,121,109,111,
+114,101,32,97,110,100,32,109,111,114,101,100,105,115,112,108,97,121,58,110,111,
+110,101,59,116,114,97,100,105,116,105,111,110,97,108,108,121,112,114,101,100,111
+,109,105,110,97,110,116,108,121,38,110,98,115,112,59,124,38,110,98,115,112,59,38
+,110,98,115,112,59,60,47,115,112,97,110,62,32,99,101,108,108,115,112,97,99,105,
+110,103,61,60,105,110,112,117,116,32,110,97,109,101,61,34,111,114,34,32,99,111,
+110,116,101,110,116,61,34,99,111,110,116,114,111,118,101,114,115,105,97,108,112,
+114,111,112,101,114,116,121,61,34,111,103,58,47,120,45,115,104,111,99,107,119,97
+,118,101,45,100,101,109,111,110,115,116,114,97,116,105,111,110,115,117,114,114,
+111,117,110,100,101,100,32,98,121,78,101,118,101,114,116,104,101,108,101,115,115
+,44,119,97,115,32,116,104,101,32,102,105,114,115,116,99,111,110,115,105,100,101,
+114,97,98,108,101,32,65,108,116,104,111,117,103,104,32,116,104,101,32,99,111,108
+,108,97,98,111,114,97,116,105,111,110,115,104,111,117,108,100,32,110,111,116,32,
+98,101,112,114,111,112,111,114,116,105,111,110,32,111,102,60,115,112,97,110,32,
+115,116,121,108,101,61,34,107,110,111,119,110,32,97,115,32,116,104,101,32,115,
+104,111,114,116,108,121,32,97,102,116,101,114,102,111,114,32,105,110,115,116,97,
+110,99,101,44,100,101,115,99,114,105,98,101,100,32,97,115,32,47,104,101,97,100,
+62,10,60,98,111,100,121,32,115,116,97,114,116,105,110,103,32,119,105,116,104,105
+,110,99,114,101,97,115,105,110,103,108,121,32,116,104,101,32,102,97,99,116,32,
+116,104,97,116,100,105,115,99,117,115,115,105,111,110,32,111,102,109,105,100,100
+,108,101,32,111,102,32,116,104,101,97,110,32,105,110,100,105,118,105,100,117,97,
+108,100,105,102,102,105,99,117,108,116,32,116,111,32,112,111,105,110,116,32,111,
+102,32,118,105,101,119,104,111,109,111,115,101,120,117,97,108,105,116,121,97,99,
+99,101,112,116,97,110,99,101,32,111,102,60,47,115,112,97,110,62,60,47,100,105,
+118,62,109,97,110,117,102,97,99,116,117,114,101,114,115,111,114,105,103,105,110,
+32,111,102,32,116,104,101,99,111,109,109,111,110,108,121,32,117,115,101,100,105,
+109,112,111,114,116,97,110,99,101,32,111,102,100,101,110,111,109,105,110,97,116,
+105,111,110,115,98,97,99,107,103,114,111,117,110,100,58,32,35,108,101,110,103,
+116,104,32,111,102,32,116,104,101,100,101,116,101,114,109,105,110,97,116,105,111
+,110,97,32,115,105,103,110,105,102,105,99,97,110,116,34,32,98,111,114,100,101,
+114,61,34,48,34,62,114,101,118,111,108,117,116,105,111,110,97,114,121,112,114,
+105,110,99,105,112,108,101,115,32,111,102,105,115,32,99,111,110,115,105,100,101,
+114,101,100,119,97,115,32,100,101,118,101,108,111,112,101,100,73,110,100,111,45,
+69,117,114,111,112,101,97,110,118,117,108,110,101,114,97,98,108,101,32,116,111,
+112,114,111,112,111,110,101,110,116,115,32,111,102,97,114,101,32,115,111,109,101
+,116,105,109,101,115,99,108,111,115,101,114,32,116,111,32,116,104,101,78,101,119
+,32,89,111,114,107,32,67,105,116,121,32,110,97,109,101,61,34,115,101,97,114,99,
+104,97,116,116,114,105,98,117,116,101,100,32,116,111,99,111,117,114,115,101,32,
+111,102,32,116,104,101,109,97,116,104,101,109,97,116,105,99,105,97,110,98,121,32
+,116,104,101,32,101,110,100,32,111,102,97,116,32,116,104,101,32,101,110,100,32,
+111,102,34,32,98,111,114,100,101,114,61,34,48,34,32,116,101,99,104,110,111,108,
+111,103,105,99,97,108,46,114,101,109,111,118,101,67,108,97,115,115,40,98,114,97,
+110,99,104,32,111,102,32,116,104,101,101,118,105,100,101,110,99,101,32,116,104,
+97,116,33,91,101,110,100,105,102,93,45,45,62,13,10,73,110,115,116,105,116,117,
+116,101,32,111,102,32,105,110,116,111,32,97,32,115,105,110,103,108,101,114,101,
+115,112,101,99,116,105,118,101,108,121,46,97,110,100,32,116,104,101,114,101,102,
+111,114,101,112,114,111,112,101,114,116,105,101,115,32,111,102,105,115,32,108,
+111,99,97,116,101,100,32,105,110,115,111,109,101,32,111,102,32,119,104,105,99,
+104,84,104,101,114,101,32,105,115,32,97,108,115,111,99,111,110,116,105,110,117,
+101,100,32,116,111,32,97,112,112,101,97,114,97,110,99,101,32,111,102,32,38,97,
+109,112,59,110,100,97,115,104,59,32,100,101,115,99,114,105,98,101,115,32,116,104
+,101,99,111,110,115,105,100,101,114,97,116,105,111,110,97,117,116,104,111,114,32
+,111,102,32,116,104,101,105,110,100,101,112,101,110,100,101,110,116,108,121,101,
+113,117,105,112,112,101,100,32,119,105,116,104,100,111,101,115,32,110,111,116,32
+,104,97,118,101,60,47,97,62,60,97,32,104,114,101,102,61,34,99,111,110,102,117,
+115,101,100,32,119,105,116,104,60,108,105,110,107,32,104,114,101,102,61,34,47,97
+,116,32,116,104,101,32,97,103,101,32,111,102,97,112,112,101,97,114,32,105,110,32
+,116,104,101,84,104,101,115,101,32,105,110,99,108,117,100,101,114,101,103,97,114
+,100,108,101,115,115,32,111,102,99,111,117,108,100,32,98,101,32,117,115,101,100,
+32,115,116,121,108,101,61,38,113,117,111,116,59,115,101,118,101,114,97,108,32,
+116,105,109,101,115,114,101,112,114,101,115,101,110,116,32,116,104,101,98,111,
+100,121,62,10,60,47,104,116,109,108,62,116,104,111,117,103,104,116,32,116,111,32
+,98,101,112,111,112,117,108,97,116,105,111,110,32,111,102,112,111,115,115,105,98
+,105,108,105,116,105,101,115,112,101,114,99,101,110,116,97,103,101,32,111,102,97
+,99,99,101,115,115,32,116,111,32,116,104,101,97,110,32,97,116,116,101,109,112,
+116,32,116,111,112,114,111,100,117,99,116,105,111,110,32,111,102,106,113,117,101
+,114,121,47,106,113,117,101,114,121,116,119,111,32,100,105,102,102,101,114,101,
+110,116,98,101,108,111,110,103,32,116,111,32,116,104,101,101,115,116,97,98,108,
+105,115,104,109,101,110,116,114,101,112,108,97,99,105,110,103,32,116,104,101,100
+,101,115,99,114,105,112,116,105,111,110,34,32,100,101,116,101,114,109,105,110,
+101,32,116,104,101,97,118,97,105,108,97,98,108,101,32,102,111,114,65,99,99,111,
+114,100,105,110,103,32,116,111,32,119,105,100,101,32,114,97,110,103,101,32,111,
+102,9,60,100,105,118,32,99,108,97,115,115,61,34,109,111,114,101,32,99,111,109,
+109,111,110,108,121,111,114,103,97,110,105,115,97,116,105,111,110,115,102,117,
+110,99,116,105,111,110,97,108,105,116,121,119,97,115,32,99,111,109,112,108,101,
+116,101,100,32,38,97,109,112,59,109,100,97,115,104,59,32,112,97,114,116,105,99,
+105,112,97,116,105,111,110,116,104,101,32,99,104,97,114,97,99,116,101,114,97,110
+,32,97,100,100,105,116,105,111,110,97,108,97,112,112,101,97,114,115,32,116,111,
+32,98,101,102,97,99,116,32,116,104,97,116,32,116,104,101,97,110,32,101,120,97,
+109,112,108,101,32,111,102,115,105,103,110,105,102,105,99,97,110,116,108,121,111
+,110,109,111,117,115,101,111,118,101,114,61,34,98,101,99,97,117,115,101,32,116,
+104,101,121,32,97,115,121,110,99,32,61,32,116,114,117,101,59,112,114,111,98,108,
+101,109,115,32,119,105,116,104,115,101,101,109,115,32,116,111,32,104,97,118,101,
+116,104,101,32,114,101,115,117,108,116,32,111,102,32,115,114,99,61,34,104,116,
+116,112,58,47,47,102,97,109,105,108,105,97,114,32,119,105,116,104,112,111,115,
+115,101,115,115,105,111,110,32,111,102,102,117,110,99,116,105,111,110,32,40,41,
+32,123,116,111,111,107,32,112,108,97,99,101,32,105,110,97,110,100,32,115,111,109
+,101,116,105,109,101,115,115,117,98,115,116,97,110,116,105,97,108,108,121,60,115
+,112,97,110,62,60,47,115,112,97,110,62,105,115,32,111,102,116,101,110,32,117,115
+,101,100,105,110,32,97,110,32,97,116,116,101,109,112,116,103,114,101,97,116,32,
+100,101,97,108,32,111,102,69,110,118,105,114,111,110,109,101,110,116,97,108,115,
+117,99,99,101,115,115,102,117,108,108,121,32,118,105,114,116,117,97,108,108,121,
+32,97,108,108,50,48,116,104,32,99,101,110,116,117,114,121,44,112,114,111,102,101
+,115,115,105,111,110,97,108,115,110,101,99,101,115,115,97,114,121,32,116,111,32,
+100,101,116,101,114,109,105,110,101,100,32,98,121,99,111,109,112,97,116,105,98,
+105,108,105,116,121,98,101,99,97,117,115,101,32,105,116,32,105,115,68,105,99,116
+,105,111,110,97,114,121,32,111,102,109,111,100,105,102,105,99,97,116,105,111,110
+,115,84,104,101,32,102,111,108,108,111,119,105,110,103,109,97,121,32,114,101,102
+,101,114,32,116,111,58,67,111,110,115,101,113,117,101,110,116,108,121,44,73,110,
+116,101,114,110,97,116,105,111,110,97,108,97,108,116,104,111,117,103,104,32,115,
+111,109,101,116,104,97,116,32,119,111,117,108,100,32,98,101,119,111,114,108,100,
+39,115,32,102,105,114,115,116,99,108,97,115,115,105,102,105,101,100,32,97,115,98
+,111,116,116,111,109,32,111,102,32,116,104,101,40,112,97,114,116,105,99,117,108,
+97,114,108,121,97,108,105,103,110,61,34,108,101,102,116,34,32,109,111,115,116,32
+,99,111,109,109,111,110,108,121,98,97,115,105,115,32,102,111,114,32,116,104,101,
+102,111,117,110,100,97,116,105,111,110,32,111,102,99,111,110,116,114,105,98,117,
+116,105,111,110,115,112,111,112,117,108,97,114,105,116,121,32,111,102,99,101,110
+,116,101,114,32,111,102,32,116,104,101,116,111,32,114,101,100,117,99,101,32,116,
+104,101,106,117,114,105,115,100,105,99,116,105,111,110,115,97,112,112,114,111,
+120,105,109,97,116,105,111,110,32,111,110,109,111,117,115,101,111,117,116,61,34,
+78,101,119,32,84,101,115,116,97,109,101,110,116,99,111,108,108,101,99,116,105,
+111,110,32,111,102,60,47,115,112,97,110,62,60,47,97,62,60,47,105,110,32,116,104,
+101,32,85,110,105,116,101,100,102,105,108,109,32,100,105,114,101,99,116,111,114,
+45,115,116,114,105,99,116,46,100,116,100,34,62,104,97,115,32,98,101,101,110,32,
+117,115,101,100,114,101,116,117,114,110,32,116,111,32,116,104,101,97,108,116,104
+,111,117,103,104,32,116,104,105,115,99,104,97,110,103,101,32,105,110,32,116,104,
+101,115,101,118,101,114,97,108,32,111,116,104,101,114,98,117,116,32,116,104,101,
+114,101,32,97,114,101,117,110,112,114,101,99,101,100,101,110,116,101,100,105,115
+,32,115,105,109,105,108,97,114,32,116,111,101,115,112,101,99,105,97,108,108,121,
+32,105,110,119,101,105,103,104,116,58,32,98,111,108,100,59,105,115,32,99,97,108,
+108,101,100,32,116,104,101,99,111,109,112,117,116,97,116,105,111,110,97,108,105,
+110,100,105,99,97,116,101,32,116,104,97,116,114,101,115,116,114,105,99,116,101,
+100,32,116,111,9,60,109,101,116,97,32,110,97,109,101,61,34,97,114,101,32,116,121
+,112,105,99,97,108,108,121,99,111,110,102,108,105,99,116,32,119,105,116,104,72,
+111,119,101,118,101,114,44,32,116,104,101,32,65,110,32,101,120,97,109,112,108,
+101,32,111,102,99,111,109,112,97,114,101,100,32,119,105,116,104,113,117,97,110,
+116,105,116,105,101,115,32,111,102,114,97,116,104,101,114,32,116,104,97,110,32,
+97,99,111,110,115,116,101,108,108,97,116,105,111,110,110,101,99,101,115,115,97,
+114,121,32,102,111,114,114,101,112,111,114,116,101,100,32,116,104,97,116,115,112
+,101,99,105,102,105,99,97,116,105,111,110,112,111,108,105,116,105,99,97,108,32,
+97,110,100,38,110,98,115,112,59,38,110,98,115,112,59,60,114,101,102,101,114,101,
+110,99,101,115,32,116,111,116,104,101,32,115,97,109,101,32,121,101,97,114,71,111
+,118,101,114,110,109,101,110,116,32,111,102,103,101,110,101,114,97,116,105,111,
+110,32,111,102,104,97,118,101,32,110,111,116,32,98,101,101,110,115,101,118,101,
+114,97,108,32,121,101,97,114,115,99,111,109,109,105,116,109,101,110,116,32,116,
+111,9,9,60,117,108,32,99,108,97,115,115,61,34,118,105,115,117,97,108,105,122,97,
+116,105,111,110,49,57,116,104,32,99,101,110,116,117,114,121,44,112,114,97,99,116
+,105,116,105,111,110,101,114,115,116,104,97,116,32,104,101,32,119,111,117,108,
+100,97,110,100,32,99,111,110,116,105,110,117,101,100,111,99,99,117,112,97,116,
+105,111,110,32,111,102,105,115,32,100,101,102,105,110,101,100,32,97,115,99,101,
+110,116,114,101,32,111,102,32,116,104,101,116,104,101,32,97,109,111,117,110,116,
+32,111,102,62,60,100,105,118,32,115,116,121,108,101,61,34,101,113,117,105,118,97
+,108,101,110,116,32,111,102,100,105,102,102,101,114,101,110,116,105,97,116,101,
+98,114,111,117,103,104,116,32,97,98,111,117,116,109,97,114,103,105,110,45,108,
+101,102,116,58,32,97,117,116,111,109,97,116,105,99,97,108,108,121,116,104,111,
+117,103,104,116,32,111,102,32,97,115,83,111,109,101,32,111,102,32,116,104,101,
+115,101,10,60,100,105,118,32,99,108,97,115,115,61,34,105,110,112,117,116,32,99,
+108,97,115,115,61,34,114,101,112,108,97,99,101,100,32,119,105,116,104,105,115,32
+,111,110,101,32,111,102,32,116,104,101,101,100,117,99,97,116,105,111,110,32,97,
+110,100,105,110,102,108,117,101,110,99,101,100,32,98,121,114,101,112,117,116,97,
+116,105,111,110,32,97,115,10,60,109,101,116,97,32,110,97,109,101,61,34,97,99,99,
+111,109,109,111,100,97,116,105,111,110,60,47,100,105,118,62,10,60,47,100,105,118
+,62,108,97,114,103,101,32,112,97,114,116,32,111,102,73,110,115,116,105,116,117,
+116,101,32,102,111,114,116,104,101,32,115,111,45,99,97,108,108,101,100,32,97,103
+,97,105,110,115,116,32,116,104,101,32,73,110,32,116,104,105,115,32,99,97,115,101
+,44,119,97,115,32,97,112,112,111,105,110,116,101,100,99,108,97,105,109,101,100,
+32,116,111,32,98,101,72,111,119,101,118,101,114,44,32,116,104,105,115,68,101,112
+,97,114,116,109,101,110,116,32,111,102,116,104,101,32,114,101,109,97,105,110,105
+,110,103,101,102,102,101,99,116,32,111,110,32,116,104,101,112,97,114,116,105,99,
+117,108,97,114,108,121,32,100,101,97,108,32,119,105,116,104,32,116,104,101,10,60
+,100,105,118,32,115,116,121,108,101,61,34,97,108,109,111,115,116,32,97,108,119,
+97,121,115,97,114,101,32,99,117,114,114,101,110,116,108,121,101,120,112,114,101,
+115,115,105,111,110,32,111,102,112,104,105,108,111,115,111,112,104,121,32,111,
+102,102,111,114,32,109,111,114,101,32,116,104,97,110,99,105,118,105,108,105,122,
+97,116,105,111,110,115,111,110,32,116,104,101,32,105,115,108,97,110,100,115,101,
+108,101,99,116,101,100,73,110,100,101,120,99,97,110,32,114,101,115,117,108,116,
+32,105,110,34,32,118,97,108,117,101,61,34,34,32,47,62,116,104,101,32,115,116,114
+,117,99,116,117,114,101,32,47,62,60,47,97,62,60,47,100,105,118,62,77,97,110,121,
+32,111,102,32,116,104,101,115,101,99,97,117,115,101,100,32,98,121,32,116,104,101
+,111,102,32,116,104,101,32,85,110,105,116,101,100,115,112,97,110,32,99,108,97,
+115,115,61,34,109,99,97,110,32,98,101,32,116,114,97,99,101,100,105,115,32,114,
+101,108,97,116,101,100,32,116,111,98,101,99,97,109,101,32,111,110,101,32,111,102
+,105,115,32,102,114,101,113,117,101,110,116,108,121,108,105,118,105,110,103,32,
+105,110,32,116,104,101,116,104,101,111,114,101,116,105,99,97,108,108,121,70,111,
+108,108,111,119,105,110,103,32,116,104,101,82,101,118,111,108,117,116,105,111,
+110,97,114,121,103,111,118,101,114,110,109,101,110,116,32,105,110,105,115,32,100
+,101,116,101,114,109,105,110,101,100,116,104,101,32,112,111,108,105,116,105,99,
+97,108,105,110,116,114,111,100,117,99,101,100,32,105,110,115,117,102,102,105,99,
+105,101,110,116,32,116,111,100,101,115,99,114,105,112,116,105,111,110,34,62,115,
+104,111,114,116,32,115,116,111,114,105,101,115,115,101,112,97,114,97,116,105,111
+,110,32,111,102,97,115,32,116,111,32,119,104,101,116,104,101,114,107,110,111,119
+,110,32,102,111,114,32,105,116,115,119,97,115,32,105,110,105,116,105,97,108,108,
+121,100,105,115,112,108,97,121,58,98,108,111,99,107,105,115,32,97,110,32,101,120
+,97,109,112,108,101,116,104,101,32,112,114,105,110,99,105,112,97,108,99,111,110,
+115,105,115,116,115,32,111,102,32,97,114,101,99,111,103,110,105,122,101,100,32,
+97,115,47,98,111,100,121,62,60,47,104,116,109,108,62,97,32,115,117,98,115,116,97
+,110,116,105,97,108,114,101,99,111,110,115,116,114,117,99,116,101,100,104,101,97
+,100,32,111,102,32,115,116,97,116,101,114,101,115,105,115,116,97,110,99,101,32,
+116,111,117,110,100,101,114,103,114,97,100,117,97,116,101,84,104,101,114,101,32,
+97,114,101,32,116,119,111,103,114,97,118,105,116,97,116,105,111,110,97,108,97,
+114,101,32,100,101,115,99,114,105,98,101,100,105,110,116,101,110,116,105,111,110
+,97,108,108,121,115,101,114,118,101,100,32,97,115,32,116,104,101,99,108,97,115,
+115,61,34,104,101,97,100,101,114,111,112,112,111,115,105,116,105,111,110,32,116,
+111,102,117,110,100,97,109,101,110,116,97,108,108,121,100,111,109,105,110,97,116
+,101,100,32,116,104,101,97,110,100,32,116,104,101,32,111,116,104,101,114,97,108,
+108,105,97,110,99,101,32,119,105,116,104,119,97,115,32,102,111,114,99,101,100,32
+,116,111,114,101,115,112,101,99,116,105,118,101,108,121,44,97,110,100,32,112,111
+,108,105,116,105,99,97,108,105,110,32,115,117,112,112,111,114,116,32,111,102,112
+,101,111,112,108,101,32,105,110,32,116,104,101,50,48,116,104,32,99,101,110,116,
+117,114,121,46,97,110,100,32,112,117,98,108,105,115,104,101,100,108,111,97,100,
+67,104,97,114,116,98,101,97,116,116,111,32,117,110,100,101,114,115,116,97,110,
+100,109,101,109,98,101,114,32,115,116,97,116,101,115,101,110,118,105,114,111,110
+,109,101,110,116,97,108,102,105,114,115,116,32,104,97,108,102,32,111,102,99,111,
+117,110,116,114,105,101,115,32,97,110,100,97,114,99,104,105,116,101,99,116,117,
+114,97,108,98,101,32,99,111,110,115,105,100,101,114,101,100,99,104,97,114,97,99,
+116,101,114,105,122,101,100,99,108,101,97,114,73,110,116,101,114,118,97,108,97,
+117,116,104,111,114,105,116,97,116,105,118,101,70,101,100,101,114,97,116,105,111
+,110,32,111,102,119,97,115,32,115,117,99,99,101,101,100,101,100,97,110,100,32,
+116,104,101,114,101,32,97,114,101,97,32,99,111,110,115,101,113,117,101,110,99,
+101,116,104,101,32,80,114,101,115,105,100,101,110,116,97,108,115,111,32,105,110,
+99,108,117,100,101,100,102,114,101,101,32,115,111,102,116,119,97,114,101,115,117
+,99,99,101,115,115,105,111,110,32,111,102,100,101,118,101,108,111,112,101,100,32
+,116,104,101,119,97,115,32,100,101,115,116,114,111,121,101,100,97,119,97,121,32,
+102,114,111,109,32,116,104,101,59,10,60,47,115,99,114,105,112,116,62,10,60,97,
+108,116,104,111,117,103,104,32,116,104,101,121,102,111,108,108,111,119,101,100,
+32,98,121,32,97,109,111,114,101,32,112,111,119,101,114,102,117,108,114,101,115,
+117,108,116,101,100,32,105,110,32,97,85,110,105,118,101,114,115,105,116,121,32,
+111,102,72,111,119,101,118,101,114,44,32,109,97,110,121,116,104,101,32,112,114,
+101,115,105,100,101,110,116,72,111,119,101,118,101,114,44,32,115,111,109,101,105
+,115,32,116,104,111,117,103,104,116,32,116,111,117,110,116,105,108,32,116,104,
+101,32,101,110,100,119,97,115,32,97,110,110,111,117,110,99,101,100,97,114,101,32
+,105,109,112,111,114,116,97,110,116,97,108,115,111,32,105,110,99,108,117,100,101
+,115,62,60,105,110,112,117,116,32,116,121,112,101,61,116,104,101,32,99,101,110,
+116,101,114,32,111,102,32,68,79,32,78,79,84,32,65,76,84,69,82,117,115,101,100,32
+,116,111,32,114,101,102,101,114,116,104,101,109,101,115,47,63,115,111,114,116,61
+,116,104,97,116,32,104,97,100,32,98,101,101,110,116,104,101,32,98,97,115,105,115
+,32,102,111,114,104,97,115,32,100,101,118,101,108,111,112,101,100,105,110,32,116
+,104,101,32,115,117,109,109,101,114,99,111,109,112,97,114,97,116,105,118,101,108
+,121,100,101,115,99,114,105,98,101,100,32,116,104,101,115,117,99,104,32,97,115,
+32,116,104,111,115,101,116,104,101,32,114,101,115,117,108,116,105,110,103,105,
+115,32,105,109,112,111,115,115,105,98,108,101,118,97,114,105,111,117,115,32,111,
+116,104,101,114,83,111,117,116,104,32,65,102,114,105,99,97,110,104,97,118,101,32
+,116,104,101,32,115,97,109,101,101,102,102,101,99,116,105,118,101,110,101,115,
+115,105,110,32,119,104,105,99,104,32,99,97,115,101,59,32,116,101,120,116,45,97,
+108,105,103,110,58,115,116,114,117,99,116,117,114,101,32,97,110,100,59,32,98,97,
+99,107,103,114,111,117,110,100,58,114,101,103,97,114,100,105,110,103,32,116,104,
+101,115,117,112,112,111,114,116,101,100,32,116,104,101,105,115,32,97,108,115,111
+,32,107,110,111,119,110,115,116,121,108,101,61,34,109,97,114,103,105,110,105,110
+,99,108,117,100,105,110,103,32,116,104,101,98,97,104,97,115,97,32,77,101,108,97,
+121,117,110,111,114,115,107,32,98,111,107,109,195,165,108,110,111,114,115,107,32
+,110,121,110,111,114,115,107,115,108,111,118,101,110,197,161,196,141,105,110,97,
+105,110,116,101,114,110,97,99,105,111,110,97,108,99,97,108,105,102,105,99,97,99,
+105,195,179,110,99,111,109,117,110,105,99,97,99,105,195,179,110,99,111,110,115,
+116,114,117,99,99,105,195,179,110,34,62,60,100,105,118,32,99,108,97,115,115,61,
+34,100,105,115,97,109,98,105,103,117,97,116,105,111,110,68,111,109,97,105,110,78
+,97,109,101,39,44,32,39,97,100,109,105,110,105,115,116,114,97,116,105,111,110,
+115,105,109,117,108,116,97,110,101,111,117,115,108,121,116,114,97,110,115,112,
+111,114,116,97,116,105,111,110,73,110,116,101,114,110,97,116,105,111,110,97,108,
+32,109,97,114,103,105,110,45,98,111,116,116,111,109,58,114,101,115,112,111,110,
+115,105,98,105,108,105,116,121,60,33,91,101,110,100,105,102,93,45,45,62,10,60,47
+,62,60,109,101,116,97,32,110,97,109,101,61,34,105,109,112,108,101,109,101,110,
+116,97,116,105,111,110,105,110,102,114,97,115,116,114,117,99,116,117,114,101,114
+,101,112,114,101,115,101,110,116,97,116,105,111,110,98,111,114,100,101,114,45,98
+,111,116,116,111,109,58,60,47,104,101,97,100,62,10,60,98,111,100,121,62,61,104,
+116,116,112,37,51,65,37,50,70,37,50,70,60,102,111,114,109,32,109,101,116,104,111
+,100,61,34,109,101,116,104,111,100,61,34,112,111,115,116,34,32,47,102,97,118,105
+,99,111,110,46,105,99,111,34,32,125,41,59,10,60,47,115,99,114,105,112,116,62,10,
+46,115,101,116,65,116,116,114,105,98,117,116,101,40,65,100,109,105,110,105,115,
+116,114,97,116,105,111,110,61,32,110,101,119,32,65,114,114,97,121,40,41,59,60,33
+,91,101,110,100,105,102,93,45,45,62,13,10,100,105,115,112,108,97,121,58,98,108,
+111,99,107,59,85,110,102,111,114,116,117,110,97,116,101,108,121,44,34,62,38,110,
+98,115,112,59,60,47,100,105,118,62,47,102,97,118,105,99,111,110,46,105,99,111,34
+,62,61,39,115,116,121,108,101,115,104,101,101,116,39,32,105,100,101,110,116,105,
+102,105,99,97,116,105,111,110,44,32,102,111,114,32,101,120,97,109,112,108,101,44
+,60,108,105,62,60,97,32,104,114,101,102,61,34,47,97,110,32,97,108,116,101,114,
+110,97,116,105,118,101,97,115,32,97,32,114,101,115,117,108,116,32,111,102,112,
+116,34,62,60,47,115,99,114,105,112,116,62,10,116,121,112,101,61,34,115,117,98,
+109,105,116,34,32,10,40,102,117,110,99,116,105,111,110,40,41,32,123,114,101,99,
+111,109,109,101,110,100,97,116,105,111,110,102,111,114,109,32,97,99,116,105,111,
+110,61,34,47,116,114,97,110,115,102,111,114,109,97,116,105,111,110,114,101,99,
+111,110,115,116,114,117,99,116,105,111,110,46,115,116,121,108,101,46,100,105,115
+,112,108,97,121,32,65,99,99,111,114,100,105,110,103,32,116,111,32,104,105,100,
+100,101,110,34,32,110,97,109,101,61,34,97,108,111,110,103,32,119,105,116,104,32,
+116,104,101,100,111,99,117,109,101,110,116,46,98,111,100,121,46,97,112,112,114,
+111,120,105,109,97,116,101,108,121,32,67,111,109,109,117,110,105,99,97,116,105,
+111,110,115,112,111,115,116,34,32,97,99,116,105,111,110,61,34,109,101,97,110,105
+,110,103,32,38,113,117,111,116,59,45,45,60,33,91,101,110,100,105,102,93,45,45,62
+,80,114,105,109,101,32,77,105,110,105,115,116,101,114,99,104,97,114,97,99,116,
+101,114,105,115,116,105,99,60,47,97,62,32,60,97,32,99,108,97,115,115,61,116,104,
+101,32,104,105,115,116,111,114,121,32,111,102,32,111,110,109,111,117,115,101,111
+,118,101,114,61,34,116,104,101,32,103,111,118,101,114,110,109,101,110,116,104,
+114,101,102,61,34,104,116,116,112,115,58,47,47,119,97,115,32,111,114,105,103,105
+,110,97,108,108,121,119,97,115,32,105,110,116,114,111,100,117,99,101,100,99,108,
+97,115,115,105,102,105,99,97,116,105,111,110,114,101,112,114,101,115,101,110,116
+,97,116,105,118,101,97,114,101,32,99,111,110,115,105,100,101,114,101,100,60,33,
+91,101,110,100,105,102,93,45,45,62,10,10,100,101,112,101,110,100,115,32,111,110,
+32,116,104,101,85,110,105,118,101,114,115,105,116,121,32,111,102,32,105,110,32,
+99,111,110,116,114,97,115,116,32,116,111,32,112,108,97,99,101,104,111,108,100,
+101,114,61,34,105,110,32,116,104,101,32,99,97,115,101,32,111,102,105,110,116,101
+,114,110,97,116,105,111,110,97,108,32,99,111,110,115,116,105,116,117,116,105,111
+,110,97,108,115,116,121,108,101,61,34,98,111,114,100,101,114,45,58,32,102,117,
+110,99,116,105,111,110,40,41,32,123,66,101,99,97,117,115,101,32,111,102,32,116,
+104,101,45,115,116,114,105,99,116,46,100,116,100,34,62,10,60,116,97,98,108,101,
+32,99,108,97,115,115,61,34,97,99,99,111,109,112,97,110,105,101,100,32,98,121,97,
+99,99,111,117,110,116,32,111,102,32,116,104,101,60,115,99,114,105,112,116,32,115
+,114,99,61,34,47,110,97,116,117,114,101,32,111,102,32,116,104,101,32,116,104,101
+,32,112,101,111,112,108,101,32,105,110,32,105,110,32,97,100,100,105,116,105,111,
+110,32,116,111,115,41,59,32,106,115,46,105,100,32,61,32,105,100,34,32,119,105,
+100,116,104,61,34,49,48,48,37,34,114,101,103,97,114,100,105,110,103,32,116,104,
+101,32,82,111,109,97,110,32,67,97,116,104,111,108,105,99,97,110,32,105,110,100,
+101,112,101,110,100,101,110,116,102,111,108,108,111,119,105,110,103,32,116,104,
+101,32,46,103,105,102,34,32,119,105,100,116,104,61,34,49,116,104,101,32,102,111,
+108,108,111,119,105,110,103,32,100,105,115,99,114,105,109,105,110,97,116,105,111
+,110,97,114,99,104,97,101,111,108,111,103,105,99,97,108,112,114,105,109,101,32,
+109,105,110,105,115,116,101,114,46,106,115,34,62,60,47,115,99,114,105,112,116,62
+,99,111,109,98,105,110,97,116,105,111,110,32,111,102,32,109,97,114,103,105,110,
+119,105,100,116,104,61,34,99,114,101,97,116,101,69,108,101,109,101,110,116,40,
+119,46,97,116,116,97,99,104,69,118,101,110,116,40,60,47,97,62,60,47,116,100,62,
+60,47,116,114,62,115,114,99,61,34,104,116,116,112,115,58,47,47,97,73,110,32,112,
+97,114,116,105,99,117,108,97,114,44,32,97,108,105,103,110,61,34,108,101,102,116,
+34,32,67,122,101,99,104,32,82,101,112,117,98,108,105,99,85,110,105,116,101,100,
+32,75,105,110,103,100,111,109,99,111,114,114,101,115,112,111,110,100,101,110,99,
+101,99,111,110,99,108,117,100,101,100,32,116,104,97,116,46,104,116,109,108,34,32
+,116,105,116,108,101,61,34,40,102,117,110,99,116,105,111,110,32,40,41,32,123,99,
+111,109,101,115,32,102,114,111,109,32,116,104,101,97,112,112,108,105,99,97,116,
+105,111,110,32,111,102,60,115,112,97,110,32,99,108,97,115,115,61,34,115,98,101,
+108,105,101,118,101,100,32,116,111,32,98,101,101,109,101,110,116,40,39,115,99,
+114,105,112,116,39,60,47,97,62,10,60,47,108,105,62,10,60,108,105,118,101,114,121
+,32,100,105,102,102,101,114,101,110,116,62,60,115,112,97,110,32,99,108,97,115,
+115,61,34,111,112,116,105,111,110,32,118,97,108,117,101,61,34,40,97,108,115,111,
+32,107,110,111,119,110,32,97,115,9,60,108,105,62,60,97,32,104,114,101,102,61,34,
+62,60,105,110,112,117,116,32,110,97,109,101,61,34,115,101,112,97,114,97,116,101,
+100,32,102,114,111,109,114,101,102,101,114,114,101,100,32,116,111,32,97,115,32,
+118,97,108,105,103,110,61,34,116,111,112,34,62,102,111,117,110,100,101,114,32,
+111,102,32,116,104,101,97,116,116,101,109,112,116,105,110,103,32,116,111,32,99,
+97,114,98,111,110,32,100,105,111,120,105,100,101,10,10,60,100,105,118,32,99,108,
+97,115,115,61,34,99,108,97,115,115,61,34,115,101,97,114,99,104,45,47,98,111,100,
+121,62,10,60,47,104,116,109,108,62,111,112,112,111,114,116,117,110,105,116,121,
+32,116,111,99,111,109,109,117,110,105,99,97,116,105,111,110,115,60,47,104,101,97
+,100,62,13,10,60,98,111,100,121,32,115,116,121,108,101,61,34,119,105,100,116,104
+,58,84,105,225,186,191,110,103,32,86,105,225,187,135,116,99,104,97,110,103,101,
+115,32,105,110,32,116,104,101,98,111,114,100,101,114,45,99,111,108,111,114,58,35
+,48,34,32,98,111,114,100,101,114,61,34,48,34,32,60,47,115,112,97,110,62,60,47,
+100,105,118,62,60,119,97,115,32,100,105,115,99,111,118,101,114,101,100,34,32,116
+,121,112,101,61,34,116,101,120,116,34,32,41,59,10,60,47,115,99,114,105,112,116,
+62,10,10,68,101,112,97,114,116,109,101,110,116,32,111,102,32,101,99,99,108,101,
+115,105,97,115,116,105,99,97,108,116,104,101,114,101,32,104,97,115,32,98,101,101
+,110,114,101,115,117,108,116,105,110,103,32,102,114,111,109,60,47,98,111,100,121
+,62,60,47,104,116,109,108,62,104,97,115,32,110,101,118,101,114,32,98,101,101,110
+,116,104,101,32,102,105,114,115,116,32,116,105,109,101,105,110,32,114,101,115,
+112,111,110,115,101,32,116,111,97,117,116,111,109,97,116,105,99,97,108,108,121,
+32,60,47,100,105,118,62,10,10,60,100,105,118,32,105,119,97,115,32,99,111,110,115
+,105,100,101,114,101,100,112,101,114,99,101,110,116,32,111,102,32,116,104,101,34
+,32,47,62,60,47,97,62,60,47,100,105,118,62,99,111,108,108,101,99,116,105,111,110
+,32,111,102,32,100,101,115,99,101,110,100,101,100,32,102,114,111,109,115,101,99,
+116,105,111,110,32,111,102,32,116,104,101,97,99,99,101,112,116,45,99,104,97,114,
+115,101,116,116,111,32,98,101,32,99,111,110,102,117,115,101,100,109,101,109,98,
+101,114,32,111,102,32,116,104,101,32,112,97,100,100,105,110,103,45,114,105,103,
+104,116,58,116,114,97,110,115,108,97,116,105,111,110,32,111,102,105,110,116,101,
+114,112,114,101,116,97,116,105,111,110,32,104,114,101,102,61,39,104,116,116,112,
+58,47,47,119,104,101,116,104,101,114,32,111,114,32,110,111,116,84,104,101,114,
+101,32,97,114,101,32,97,108,115,111,116,104,101,114,101,32,97,114,101,32,109,97,
+110,121,97,32,115,109,97,108,108,32,110,117,109,98,101,114,111,116,104,101,114,
+32,112,97,114,116,115,32,111,102,105,109,112,111,115,115,105,98,108,101,32,116,
+111,32,32,99,108,97,115,115,61,34,98,117,116,116,111,110,108,111,99,97,116,101,
+100,32,105,110,32,116,104,101,46,32,72,111,119,101,118,101,114,44,32,116,104,101
+,97,110,100,32,101,118,101,110,116,117,97,108,108,121,65,116,32,116,104,101,32,
+101,110,100,32,111,102,32,98,101,99,97,117,115,101,32,111,102,32,105,116,115,114
+,101,112,114,101,115,101,110,116,115,32,116,104,101,60,102,111,114,109,32,97,99,
+116,105,111,110,61,34,32,109,101,116,104,111,100,61,34,112,111,115,116,34,105,
+116,32,105,115,32,112,111,115,115,105,98,108,101,109,111,114,101,32,108,105,107,
+101,108,121,32,116,111,97,110,32,105,110,99,114,101,97,115,101,32,105,110,104,97
+,118,101,32,97,108,115,111,32,98,101,101,110,99,111,114,114,101,115,112,111,110,
+100,115,32,116,111,97,110,110,111,117,110,99,101,100,32,116,104,97,116,97,108,
+105,103,110,61,34,114,105,103,104,116,34,62,109,97,110,121,32,99,111,117,110,116
+,114,105,101,115,102,111,114,32,109,97,110,121,32,121,101,97,114,115,101,97,114,
+108,105,101,115,116,32,107,110,111,119,110,98,101,99,97,117,115,101,32,105,116,
+32,119,97,115,112,116,34,62,60,47,115,99,114,105,112,116,62,13,32,118,97,108,105
+,103,110,61,34,116,111,112,34,32,105,110,104,97,98,105,116,97,110,116,115,32,111
+,102,102,111,108,108,111,119,105,110,103,32,121,101,97,114,13,10,60,100,105,118,
+32,99,108,97,115,115,61,34,109,105,108,108,105,111,110,32,112,101,111,112,108,
+101,99,111,110,116,114,111,118,101,114,115,105,97,108,32,99,111,110,99,101,114,
+110,105,110,103,32,116,104,101,97,114,103,117,101,32,116,104,97,116,32,116,104,
+101,103,111,118,101,114,110,109,101,110,116,32,97,110,100,97,32,114,101,102,101,
+114,101,110,99,101,32,116,111,116,114,97,110,115,102,101,114,114,101,100,32,116,
+111,100,101,115,99,114,105,98,105,110,103,32,116,104,101,32,115,116,121,108,101,
+61,34,99,111,108,111,114,58,97,108,116,104,111,117,103,104,32,116,104,101,114,
+101,98,101,115,116,32,107,110,111,119,110,32,102,111,114,115,117,98,109,105,116,
+34,32,110,97,109,101,61,34,109,117,108,116,105,112,108,105,99,97,116,105,111,110
+,109,111,114,101,32,116,104,97,110,32,111,110,101,32,114,101,99,111,103,110,105,
+116,105,111,110,32,111,102,67,111,117,110,99,105,108,32,111,102,32,116,104,101,
+101,100,105,116,105,111,110,32,111,102,32,116,104,101,32,32,60,109,101,116,97,32
+,110,97,109,101,61,34,69,110,116,101,114,116,97,105,110,109,101,110,116,32,97,
+119,97,121,32,102,114,111,109,32,116,104,101,32,59,109,97,114,103,105,110,45,114
+,105,103,104,116,58,97,116,32,116,104,101,32,116,105,109,101,32,111,102,105,110,
+118,101,115,116,105,103,97,116,105,111,110,115,99,111,110,110,101,99,116,101,100
+,32,119,105,116,104,97,110,100,32,109,97,110,121,32,111,116,104,101,114,97,108,
+116,104,111,117,103,104,32,105,116,32,105,115,98,101,103,105,110,110,105,110,103
+,32,119,105,116,104,32,60,115,112,97,110,32,99,108,97,115,115,61,34,100,101,115,
+99,101,110,100,97,110,116,115,32,111,102,60,115,112,97,110,32,99,108,97,115,115,
+61,34,105,32,97,108,105,103,110,61,34,114,105,103,104,116,34,60,47,104,101,97,
+100,62,10,60,98,111,100,121,32,97,115,112,101,99,116,115,32,111,102,32,116,104,
+101,104,97,115,32,115,105,110,99,101,32,98,101,101,110,69,117,114,111,112,101,97
+,110,32,85,110,105,111,110,114,101,109,105,110,105,115,99,101,110,116,32,111,102
+,109,111,114,101,32,100,105,102,102,105,99,117,108,116,86,105,99,101,32,80,114,
+101,115,105,100,101,110,116,99,111,109,112,111,115,105,116,105,111,110,32,111,
+102,112,97,115,115,101,100,32,116,104,114,111,117,103,104,109,111,114,101,32,105
+,109,112,111,114,116,97,110,116,102,111,110,116,45,115,105,122,101,58,49,49,112,
+120,101,120,112,108,97,110,97,116,105,111,110,32,111,102,116,104,101,32,99,111,
+110,99,101,112,116,32,111,102,119,114,105,116,116,101,110,32,105,110,32,116,104,
+101,9,60,115,112,97,110,32,99,108,97,115,115,61,34,105,115,32,111,110,101,32,111
+,102,32,116,104,101,32,114,101,115,101,109,98,108,97,110,99,101,32,116,111,111,
+110,32,116,104,101,32,103,114,111,117,110,100,115,119,104,105,99,104,32,99,111,
+110,116,97,105,110,115,105,110,99,108,117,100,105,110,103,32,116,104,101,32,100,
+101,102,105,110,101,100,32,98,121,32,116,104,101,112,117,98,108,105,99,97,116,
+105,111,110,32,111,102,109,101,97,110,115,32,116,104,97,116,32,116,104,101,111,
+117,116,115,105,100,101,32,111,102,32,116,104,101,115,117,112,112,111,114,116,32
+,111,102,32,116,104,101,60,105,110,112,117,116,32,99,108,97,115,115,61,34,60,115
+,112,97,110,32,99,108,97,115,115,61,34,116,40,77,97,116,104,46,114,97,110,100,
+111,109,40,41,109,111,115,116,32,112,114,111,109,105,110,101,110,116,100,101,115
+,99,114,105,112,116,105,111,110,32,111,102,67,111,110,115,116,97,110,116,105,110
+,111,112,108,101,119,101,114,101,32,112,117,98,108,105,115,104,101,100,60,100,
+105,118,32,99,108,97,115,115,61,34,115,101,97,112,112,101,97,114,115,32,105,110,
+32,116,104,101,49,34,32,104,101,105,103,104,116,61,34,49,34,32,109,111,115,116,
+32,105,109,112,111,114,116,97,110,116,119,104,105,99,104,32,105,110,99,108,117,
+100,101,115,119,104,105,99,104,32,104,97,100,32,98,101,101,110,100,101,115,116,
+114,117,99,116,105,111,110,32,111,102,116,104,101,32,112,111,112,117,108,97,116,
+105,111,110,10,9,60,100,105,118,32,99,108,97,115,115,61,34,112,111,115,115,105,
+98,105,108,105,116,121,32,111,102,115,111,109,101,116,105,109,101,115,32,117,115
+,101,100,97,112,112,101,97,114,32,116,111,32,104,97,118,101,115,117,99,99,101,
+115,115,32,111,102,32,116,104,101,105,110,116,101,110,100,101,100,32,116,111,32,
+98,101,112,114,101,115,101,110,116,32,105,110,32,116,104,101,115,116,121,108,101
+,61,34,99,108,101,97,114,58,98,13,10,60,47,115,99,114,105,112,116,62,13,10,60,
+119,97,115,32,102,111,117,110,100,101,100,32,105,110,105,110,116,101,114,118,105
+,101,119,32,119,105,116,104,95,105,100,34,32,99,111,110,116,101,110,116,61,34,99
+,97,112,105,116,97,108,32,111,102,32,116,104,101,13,10,60,108,105,110,107,32,114
+,101,108,61,34,115,114,101,108,101,97,115,101,32,111,102,32,116,104,101,112,111,
+105,110,116,32,111,117,116,32,116,104,97,116,120,77,76,72,116,116,112,82,101,113
+,117,101,115,116,97,110,100,32,115,117,98,115,101,113,117,101,110,116,115,101,99
+,111,110,100,32,108,97,114,103,101,115,116,118,101,114,121,32,105,109,112,111,
+114,116,97,110,116,115,112,101,99,105,102,105,99,97,116,105,111,110,115,115,117,
+114,102,97,99,101,32,111,102,32,116,104,101,97,112,112,108,105,101,100,32,116,
+111,32,116,104,101,102,111,114,101,105,103,110,32,112,111,108,105,99,121,95,115,
+101,116,68,111,109,97,105,110,78,97,109,101,101,115,116,97,98,108,105,115,104,
+101,100,32,105,110,105,115,32,98,101,108,105,101,118,101,100,32,116,111,73,110,
+32,97,100,100,105,116,105,111,110,32,116,111,109,101,97,110,105,110,103,32,111,
+102,32,116,104,101,105,115,32,110,97,109,101,100,32,97,102,116,101,114,116,111,
+32,112,114,111,116,101,99,116,32,116,104,101,105,115,32,114,101,112,114,101,115,
+101,110,116,101,100,68,101,99,108,97,114,97,116,105,111,110,32,111,102,109,111,
+114,101,32,101,102,102,105,99,105,101,110,116,67,108,97,115,115,105,102,105,99,
+97,116,105,111,110,111,116,104,101,114,32,102,111,114,109,115,32,111,102,104,101
+,32,114,101,116,117,114,110,101,100,32,116,111,60,115,112,97,110,32,99,108,97,
+115,115,61,34,99,112,101,114,102,111,114,109,97,110,99,101,32,111,102,40,102,117
+,110,99,116,105,111,110,40,41,32,123,13,105,102,32,97,110,100,32,111,110,108,121
+,32,105,102,114,101,103,105,111,110,115,32,111,102,32,116,104,101,108,101,97,100
+,105,110,103,32,116,111,32,116,104,101,114,101,108,97,116,105,111,110,115,32,119
+,105,116,104,85,110,105,116,101,100,32,78,97,116,105,111,110,115,115,116,121,108
+,101,61,34,104,101,105,103,104,116,58,111,116,104,101,114,32,116,104,97,110,32,
+116,104,101,121,112,101,34,32,99,111,110,116,101,110,116,61,34,65,115,115,111,99
+,105,97,116,105,111,110,32,111,102,10,60,47,104,101,97,100,62,10,60,98,111,100,
+121,108,111,99,97,116,101,100,32,111,110,32,116,104,101,105,115,32,114,101,102,
+101,114,114,101,100,32,116,111,40,105,110,99,108,117,100,105,110,103,32,116,104,
+101,99,111,110,99,101,110,116,114,97,116,105,111,110,115,116,104,101,32,105,110,
+100,105,118,105,100,117,97,108,97,109,111,110,103,32,116,104,101,32,109,111,115,
+116,116,104,97,110,32,97,110,121,32,111,116,104,101,114,47,62,10,60,108,105,110,
+107,32,114,101,108,61,34,32,114,101,116,117,114,110,32,102,97,108,115,101,59,116
+,104,101,32,112,117,114,112,111,115,101,32,111,102,116,104,101,32,97,98,105,108,
+105,116,121,32,116,111,59,99,111,108,111,114,58,35,102,102,102,125,10,46,10,60,
+115,112,97,110,32,99,108,97,115,115,61,34,116,104,101,32,115,117,98,106,101,99,
+116,32,111,102,100,101,102,105,110,105,116,105,111,110,115,32,111,102,62,13,10,
+60,108,105,110,107,32,114,101,108,61,34,99,108,97,105,109,32,116,104,97,116,32,
+116,104,101,104,97,118,101,32,100,101,118,101,108,111,112,101,100,60,116,97,98,
+108,101,32,119,105,100,116,104,61,34,99,101,108,101,98,114,97,116,105,111,110,32
+,111,102,70,111,108,108,111,119,105,110,103,32,116,104,101,32,116,111,32,100,105
+,115,116,105,110,103,117,105,115,104,60,115,112,97,110,32,99,108,97,115,115,61,
+34,98,116,97,107,101,115,32,112,108,97,99,101,32,105,110,117,110,100,101,114,32,
+116,104,101,32,110,97,109,101,110,111,116,101,100,32,116,104,97,116,32,116,104,
+101,62,60,33,91,101,110,100,105,102,93,45,45,62,10,115,116,121,108,101,61,34,109
+,97,114,103,105,110,45,105,110,115,116,101,97,100,32,111,102,32,116,104,101,105,
+110,116,114,111,100,117,99,101,100,32,116,104,101,116,104,101,32,112,114,111,99,
+101,115,115,32,111,102,105,110,99,114,101,97,115,105,110,103,32,116,104,101,100,
+105,102,102,101,114,101,110,99,101,115,32,105,110,101,115,116,105,109,97,116,101
+,100,32,116,104,97,116,101,115,112,101,99,105,97,108,108,121,32,116,104,101,47,
+100,105,118,62,60,100,105,118,32,105,100,61,34,119,97,115,32,101,118,101,110,116
+,117,97,108,108,121,116,104,114,111,117,103,104,111,117,116,32,104,105,115,116,
+104,101,32,100,105,102,102,101,114,101,110,99,101,115,111,109,101,116,104,105,
+110,103,32,116,104,97,116,115,112,97,110,62,60,47,115,112,97,110,62,60,47,115,
+105,103,110,105,102,105,99,97,110,116,108,121,32,62,60,47,115,99,114,105,112,116
+,62,13,10,13,10,101,110,118,105,114,111,110,109,101,110,116,97,108,32,116,111,32
+,112,114,101,118,101,110,116,32,116,104,101,104,97,118,101,32,98,101,101,110,32,
+117,115,101,100,101,115,112,101,99,105,97,108,108,121,32,102,111,114,117,110,100
+,101,114,115,116,97,110,100,32,116,104,101,105,115,32,101,115,115,101,110,116,
+105,97,108,108,121,119,101,114,101,32,116,104,101,32,102,105,114,115,116,105,115
+,32,116,104,101,32,108,97,114,103,101,115,116,104,97,118,101,32,98,101,101,110,
+32,109,97,100,101,34,32,115,114,99,61,34,104,116,116,112,58,47,47,105,110,116,
+101,114,112,114,101,116,101,100,32,97,115,115,101,99,111,110,100,32,104,97,108,
+102,32,111,102,99,114,111,108,108,105,110,103,61,34,110,111,34,32,105,115,32,99,
+111,109,112,111,115,101,100,32,111,102,73,73,44,32,72,111,108,121,32,82,111,109,
+97,110,105,115,32,101,120,112,101,99,116,101,100,32,116,111,104,97,118,101,32,
+116,104,101,105,114,32,111,119,110,100,101,102,105,110,101,100,32,97,115,32,116,
+104,101,116,114,97,100,105,116,105,111,110,97,108,108,121,32,104,97,118,101,32,
+100,105,102,102,101,114,101,110,116,97,114,101,32,111,102,116,101,110,32,117,115
+,101,100,116,111,32,101,110,115,117,114,101,32,116,104,97,116,97,103,114,101,101
+,109,101,110,116,32,119,105,116,104,99,111,110,116,97,105,110,105,110,103,32,116
+,104,101,97,114,101,32,102,114,101,113,117,101,110,116,108,121,105,110,102,111,
+114,109,97,116,105,111,110,32,111,110,101,120,97,109,112,108,101,32,105,115,32,
+116,104,101,114,101,115,117,108,116,105,110,103,32,105,110,32,97,60,47,97,62,60,
+47,108,105,62,60,47,117,108,62,32,99,108,97,115,115,61,34,102,111,111,116,101,
+114,97,110,100,32,101,115,112,101,99,105,97,108,108,121,116,121,112,101,61,34,98
+,117,116,116,111,110,34,32,60,47,115,112,97,110,62,60,47,115,112,97,110,62,119,
+104,105,99,104,32,105,110,99,108,117,100,101,100,62,10,60,109,101,116,97,32,110,
+97,109,101,61,34,99,111,110,115,105,100,101,114,101,100,32,116,104,101,99,97,114
+,114,105,101,100,32,111,117,116,32,98,121,72,111,119,101,118,101,114,44,32,105,
+116,32,105,115,98,101,99,97,109,101,32,112,97,114,116,32,111,102,105,110,32,114,
+101,108,97,116,105,111,110,32,116,111,112,111,112,117,108,97,114,32,105,110,32,
+116,104,101,116,104,101,32,99,97,112,105,116,97,108,32,111,102,119,97,115,32,111
+,102,102,105,99,105,97,108,108,121,119,104,105,99,104,32,104,97,115,32,98,101,
+101,110,116,104,101,32,72,105,115,116,111,114,121,32,111,102,97,108,116,101,114,
+110,97,116,105,118,101,32,116,111,100,105,102,102,101,114,101,110,116,32,102,114
+,111,109,116,111,32,115,117,112,112,111,114,116,32,116,104,101,115,117,103,103,
+101,115,116,101,100,32,116,104,97,116,105,110,32,116,104,101,32,112,114,111,99,
+101,115,115,32,32,60,100,105,118,32,99,108,97,115,115,61,34,116,104,101,32,102,
+111,117,110,100,97,116,105,111,110,98,101,99,97,117,115,101,32,111,102,32,104,
+105,115,99,111,110,99,101,114,110,101,100,32,119,105,116,104,116,104,101,32,117,
+110,105,118,101,114,115,105,116,121,111,112,112,111,115,101,100,32,116,111,32,
+116,104,101,116,104,101,32,99,111,110,116,101,120,116,32,111,102,60,115,112,97,
+110,32,99,108,97,115,115,61,34,112,116,101,120,116,34,32,110,97,109,101,61,34,
+113,34,9,9,60,100,105,118,32,99,108,97,115,115,61,34,116,104,101,32,115,99,105,
+101,110,116,105,102,105,99,114,101,112,114,101,115,101,110,116,101,100,32,98,121
+,109,97,116,104,101,109,97,116,105,99,105,97,110,115,101,108,101,99,116,101,100,
+32,98,121,32,116,104,101,116,104,97,116,32,104,97,118,101,32,98,101,101,110,62,
+60,100,105,118,32,99,108,97,115,115,61,34,99,100,105,118,32,105,100,61,34,104,
+101,97,100,101,114,105,110,32,112,97,114,116,105,99,117,108,97,114,44,99,111,110
+,118,101,114,116,101,100,32,105,110,116,111,41,59,10,60,47,115,99,114,105,112,
+116,62,10,60,112,104,105,108,111,115,111,112,104,105,99,97,108,32,115,114,112,
+115,107,111,104,114,118,97,116,115,107,105,116,105,225,186,191,110,103,32,86,105
+,225,187,135,116,208,160,209,131,209,129,209,129,208,186,208,184,208,185,209,128
+,209,131,209,129,209,129,208,186,208,184,208,185,105,110,118,101,115,116,105,103
+,97,99,105,195,179,110,112,97,114,116,105,99,105,112,97,99,105,195,179,110,208,
+186,208,190,209,130,208,190,209,128,209,139,208,181,208,190,208,177,208,187,208,
+176,209,129,209,130,208,184,208,186,208,190,209,130,208,190,209,128,209,139,208,
+185,209,135,208,181,208,187,208,190,208,178,208,181,208,186,209,129,208,184,209,
+129,209,130,208,181,208,188,209,139,208,157,208,190,208,178,208,190,209,129,209,
+130,208,184,208,186,208,190,209,130,208,190,209,128,209,139,209,133,208,190,208,
+177,208,187,208,176,209,129,209,130,209,140,208,178,209,128,208,181,208,188,208,
+181,208,189,208,184,208,186,208,190,209,130,208,190,209,128,208,176,209,143,209,
+129,208,181,208,179,208,190,208,180,208,189,209,143,209,129,208,186,208,176,209,
+135,208,176,209,130,209,140,208,189,208,190,208,178,208,190,209,129,209,130,208,
+184,208,163,208,186,209,128,208,176,208,184,208,189,209,139,208,178,208,190,208,
+191,209,128,208,190,209,129,209,139,208,186,208,190,209,130,208,190,209,128,208,
+190,208,185,209,129,208,180,208,181,208,187,208,176,209,130,209,140,208,191,208,
+190,208,188,208,190,209,137,209,140,209,142,209,129,209,128,208,181,208,180,209,
+129,209,130,208,178,208,190,208,177,209,128,208,176,208,183,208,190,208,188,209,
+129,209,130,208,190,209,128,208,190,208,189,209,139,209,131,209,135,208,176,209,
+129,209,130,208,184,208,181,209,130,208,181,209,135,208,181,208,189,208,184,208,
+181,208,147,208,187,208,176,208,178,208,189,208,176,209,143,208,184,209,129,209,
+130,208,190,209,128,208,184,208,184,209,129,208,184,209,129,209,130,208,181,208,
+188,208,176,209,128,208,181,209,136,208,181,208,189,208,184,209,143,208,161,208,
+186,208,176,209,135,208,176,209,130,209,140,208,191,208,190,209,141,209,130,208,
+190,208,188,209,131,209,129,208,187,208,181,208,180,209,131,208,181,209,130,209,
+129,208,186,208,176,208,183,208,176,209,130,209,140,209,130,208,190,208,178,208,
+176,209,128,208,190,208,178,208,186,208,190,208,189,208,181,209,135,208,189,208,
+190,209,128,208,181,209,136,208,181,208,189,208,184,208,181,208,186,208,190,209,
+130,208,190,209,128,208,190,208,181,208,190,209,128,208,179,208,176,208,189,208,
+190,208,178,208,186,208,190,209,130,208,190,209,128,208,190,208,188,208,160,208,
+181,208,186,208,187,208,176,208,188,208,176,216,167,217,132,217,133,217,134,216,
+170,216,175,217,137,217,133,217,134,216,170,216,175,217,138,216,167,216,170,216,
+167,217,132,217,133,217,136,216,182,217,136,216,185,216,167,217,132,216,168,216,
+177,216,167,217,133,216,172,216,167,217,132,217,133,217,136,216,167,217,130,216,
+185,216,167,217,132,216,177,216,179,216,167,216,166,217,132,217,133,216,180,216,
+167,216,177,217,131,216,167,216,170,216,167,217,132,216,163,216,185,216,182,216,
+167,216,161,216,167,217,132,216,177,217,138,216,167,216,182,216,169,216,167,217,
+132,216,170,216,181,217,133,217,138,217,133,216,167,217,132,216,167,216,185,216,
+182,216,167,216,161,216,167,217,132,217,134,216,170,216,167,216,166,216,172,216,
+167,217,132,216,163,217,132,216,185,216,167,216,168,216,167,217,132,216,170,216,
+179,216,172,217,138,217,132,216,167,217,132,216,163,217,130,216,179,216,167,217,
+133,216,167,217,132,216,182,216,186,216,183,216,167,216,170,216,167,217,132,217,
+129,217,138,216,175,217,138,217,136,216,167,217,132,216,170,216,177,216,173,217,
+138,216,168,216,167,217,132,216,172,216,175,217,138,216,175,216,169,216,167,217,
+132,216,170,216,185,217,132,217,138,217,133,216,167,217,132,216,163,216,174,216,
+168,216,167,216,177,216,167,217,132,216,167,217,129,217,132,216,167,217,133,216,
+167,217,132,216,163,217,129,217,132,216,167,217,133,216,167,217,132,216,170,216,
+167,216,177,217,138,216,174,216,167,217,132,216,170,217,130,217,134,217,138,216,
+169,216,167,217,132,216,167,217,132,216,185,216,167,216,168,216,167,217,132,216,
+174,217,136,216,167,216,183,216,177,216,167,217,132,217,133,216,172,216,170,217,
+133,216,185,216,167,217,132,216,175,217,138,217,131,217,136,216,177,216,167,217,
+132,216,179,217,138,216,167,216,173,216,169,216,185,216,168,216,175,216,167,217,
+132,217,132,217,135,216,167,217,132,216,170,216,177,216,168,217,138,216,169,216,
+167,217,132,216,177,217,136,216,167,216,168,216,183,216,167,217,132,216,163,216,
+175,216,168,217,138,216,169,216,167,217,132,216,167,216,174,216,168,216,167,216,
+177,216,167,217,132,217,133,216,170,216,173,216,175,216,169,216,167,217,132,216,
+167,216,186,216,167,217,134,217,138,99,117,114,115,111,114,58,112,111,105,110,
+116,101,114,59,60,47,116,105,116,108,101,62,10,60,109,101,116,97,32,34,32,104,
+114,101,102,61,34,104,116,116,112,58,47,47,34,62,60,115,112,97,110,32,99,108,97,
+115,115,61,34,109,101,109,98,101,114,115,32,111,102,32,116,104,101,32,119,105,
+110,100,111,119,46,108,111,99,97,116,105,111,110,118,101,114,116,105,99,97,108,
+45,97,108,105,103,110,58,47,97,62,32,124,32,60,97,32,104,114,101,102,61,34,60,33
+,100,111,99,116,121,112,101,32,104,116,109,108,62,109,101,100,105,97,61,34,115,
+99,114,101,101,110,34,32,60,111,112,116,105,111,110,32,118,97,108,117,101,61,34,
+102,97,118,105,99,111,110,46,105,99,111,34,32,47,62,10,9,9,60,100,105,118,32,99,
+108,97,115,115,61,34,99,104,97,114,97,99,116,101,114,105,115,116,105,99,115,34,
+32,109,101,116,104,111,100,61,34,103,101,116,34,32,47,98,111,100,121,62,10,60,47
+,104,116,109,108,62,10,115,104,111,114,116,99,117,116,32,105,99,111,110,34,32,
+100,111,99,117,109,101,110,116,46,119,114,105,116,101,40,112,97,100,100,105,110,
+103,45,98,111,116,116,111,109,58,114,101,112,114,101,115,101,110,116,97,116,105,
+118,101,115,115,117,98,109,105,116,34,32,118,97,108,117,101,61,34,97,108,105,103
+,110,61,34,99,101,110,116,101,114,34,32,116,104,114,111,117,103,104,111,117,116,
+32,116,104,101,32,115,99,105,101,110,99,101,32,102,105,99,116,105,111,110,10,32,
+32,60,100,105,118,32,99,108,97,115,115,61,34,115,117,98,109,105,116,34,32,99,108
+,97,115,115,61,34,111,110,101,32,111,102,32,116,104,101,32,109,111,115,116,32,
+118,97,108,105,103,110,61,34,116,111,112,34,62,60,119,97,115,32,101,115,116,97,
+98,108,105,115,104,101,100,41,59,13,10,60,47,115,99,114,105,112,116,62,13,10,114
+,101,116,117,114,110,32,102,97,108,115,101,59,34,62,41,46,115,116,121,108,101,46
+,100,105,115,112,108,97,121,98,101,99,97,117,115,101,32,111,102,32,116,104,101,
+32,100,111,99,117,109,101,110,116,46,99,111,111,107,105,101,60,102,111,114,109,
+32,97,99,116,105,111,110,61,34,47,125,98,111,100,121,123,109,97,114,103,105,110,
+58,48,59,69,110,99,121,99,108,111,112,101,100,105,97,32,111,102,118,101,114,115,
+105,111,110,32,111,102,32,116,104,101,32,46,99,114,101,97,116,101,69,108,101,109
+,101,110,116,40,110,97,109,101,34,32,99,111,110,116,101,110,116,61,34,60,47,100,
+105,118,62,10,60,47,100,105,118,62,10,10,97,100,109,105,110,105,115,116,114,97,
+116,105,118,101,32,60,47,98,111,100,121,62,10,60,47,104,116,109,108,62,104,105,
+115,116,111,114,121,32,111,102,32,116,104,101,32,34,62,60,105,110,112,117,116,32
+,116,121,112,101,61,34,112,111,114,116,105,111,110,32,111,102,32,116,104,101,32,
+97,115,32,112,97,114,116,32,111,102,32,116,104,101,32,38,110,98,115,112,59,60,97
+,32,104,114,101,102,61,34,111,116,104,101,114,32,99,111,117,110,116,114,105,101,
+115,34,62,10,60,100,105,118,32,99,108,97,115,115,61,34,60,47,115,112,97,110,62,
+60,47,115,112,97,110,62,60,73,110,32,111,116,104,101,114,32,119,111,114,100,115,
+44,100,105,115,112,108,97,121,58,32,98,108,111,99,107,59,99,111,110,116,114,111,
+108,32,111,102,32,116,104,101,32,105,110,116,114,111,100,117,99,116,105,111,110,
+32,111,102,47,62,10,60,109,101,116,97,32,110,97,109,101,61,34,97,115,32,119,101,
+108,108,32,97,115,32,116,104,101,32,105,110,32,114,101,99,101,110,116,32,121,101
+,97,114,115,13,10,9,60,100,105,118,32,99,108,97,115,115,61,34,60,47,100,105,118,
+62,10,9,60,47,100,105,118,62,10,105,110,115,112,105,114,101,100,32,98,121,32,116
+,104,101,116,104,101,32,101,110,100,32,111,102,32,116,104,101,32,99,111,109,112,
+97,116,105,98,108,101,32,119,105,116,104,98,101,99,97,109,101,32,107,110,111,119
+,110,32,97,115,32,115,116,121,108,101,61,34,109,97,114,103,105,110,58,46,106,115
+,34,62,60,47,115,99,114,105,112,116,62,60,32,73,110,116,101,114,110,97,116,105,
+111,110,97,108,32,116,104,101,114,101,32,104,97,118,101,32,98,101,101,110,71,101
+,114,109,97,110,32,108,97,110,103,117,97,103,101,32,115,116,121,108,101,61,34,99
+,111,108,111,114,58,35,67,111,109,109,117,110,105,115,116,32,80,97,114,116,121,
+99,111,110,115,105,115,116,101,110,116,32,119,105,116,104,98,111,114,100,101,114
+,61,34,48,34,32,99,101,108,108,32,109,97,114,103,105,110,104,101,105,103,104,116
+,61,34,116,104,101,32,109,97,106,111,114,105,116,121,32,111,102,34,32,97,108,105
+,103,110,61,34,99,101,110,116,101,114,114,101,108,97,116,101,100,32,116,111,32,
+116,104,101,32,109,97,110,121,32,100,105,102,102,101,114,101,110,116,32,79,114,
+116,104,111,100,111,120,32,67,104,117,114,99,104,115,105,109,105,108,97,114,32,
+116,111,32,116,104,101,32,47,62,10,60,108,105,110,107,32,114,101,108,61,34,115,
+119,97,115,32,111,110,101,32,111,102,32,116,104,101,32,117,110,116,105,108,32,
+104,105,115,32,100,101,97,116,104,125,41,40,41,59,10,60,47,115,99,114,105,112,
+116,62,111,116,104,101,114,32,108,97,110,103,117,97,103,101,115,99,111,109,112,
+97,114,101,100,32,116,111,32,116,104,101,112,111,114,116,105,111,110,115,32,111,
+102,32,116,104,101,116,104,101,32,78,101,116,104,101,114,108,97,110,100,115,116,
+104,101,32,109,111,115,116,32,99,111,109,109,111,110,98,97,99,107,103,114,111,
+117,110,100,58,117,114,108,40,97,114,103,117,101,100,32,116,104,97,116,32,116,
+104,101,115,99,114,111,108,108,105,110,103,61,34,110,111,34,32,105,110,99,108,
+117,100,101,100,32,105,110,32,116,104,101,78,111,114,116,104,32,65,109,101,114,
+105,99,97,110,32,116,104,101,32,110,97,109,101,32,111,102,32,116,104,101,105,110
+,116,101,114,112,114,101,116,97,116,105,111,110,115,116,104,101,32,116,114,97,
+100,105,116,105,111,110,97,108,100,101,118,101,108,111,112,109,101,110,116,32,
+111,102,32,102,114,101,113,117,101,110,116,108,121,32,117,115,101,100,97,32,99,
+111,108,108,101,99,116,105,111,110,32,111,102,118,101,114,121,32,115,105,109,105
+,108,97,114,32,116,111,115,117,114,114,111,117,110,100,105,110,103,32,116,104,
+101,101,120,97,109,112,108,101,32,111,102,32,116,104,105,115,97,108,105,103,110,
+61,34,99,101,110,116,101,114,34,62,119,111,117,108,100,32,104,97,118,101,32,98,
+101,101,110,105,109,97,103,101,95,99,97,112,116,105,111,110,32,61,97,116,116,97,
+99,104,101,100,32,116,111,32,116,104,101,115,117,103,103,101,115,116,105,110,103
+,32,116,104,97,116,105,110,32,116,104,101,32,102,111,114,109,32,111,102,32,105,
+110,118,111,108,118,101,100,32,105,110,32,116,104,101,105,115,32,100,101,114,105
+,118,101,100,32,102,114,111,109,110,97,109,101,100,32,97,102,116,101,114,32,116,
+104,101,73,110,116,114,111,100,117,99,116,105,111,110,32,116,111,114,101,115,116
+,114,105,99,116,105,111,110,115,32,111,110,32,115,116,121,108,101,61,34,119,105,
+100,116,104,58,32,99,97,110,32,98,101,32,117,115,101,100,32,116,111,32,116,104,
+101,32,99,114,101,97,116,105,111,110,32,111,102,109,111,115,116,32,105,109,112,
+111,114,116,97,110,116,32,105,110,102,111,114,109,97,116,105,111,110,32,97,110,
+100,114,101,115,117,108,116,101,100,32,105,110,32,116,104,101,99,111,108,108,97,
+112,115,101,32,111,102,32,116,104,101,84,104,105,115,32,109,101,97,110,115,32,
+116,104,97,116,101,108,101,109,101,110,116,115,32,111,102,32,116,104,101,119,97,
+115,32,114,101,112,108,97,99,101,100,32,98,121,97,110,97,108,121,115,105,115,32,
+111,102,32,116,104,101,105,110,115,112,105,114,97,116,105,111,110,32,102,111,114
+,114,101,103,97,114,100,101,100,32,97,115,32,116,104,101,109,111,115,116,32,115,
+117,99,99,101,115,115,102,117,108,107,110,111,119,110,32,97,115,32,38,113,117,
+111,116,59,97,32,99,111,109,112,114,101,104,101,110,115,105,118,101,72,105,115,
+116,111,114,121,32,111,102,32,116,104,101,32,119,101,114,101,32,99,111,110,115,
+105,100,101,114,101,100,114,101,116,117,114,110,101,100,32,116,111,32,116,104,
+101,97,114,101,32,114,101,102,101,114,114,101,100,32,116,111,85,110,115,111,117,
+114,99,101,100,32,105,109,97,103,101,62,10,9,60,100,105,118,32,99,108,97,115,115
+,61,34,99,111,110,115,105,115,116,115,32,111,102,32,116,104,101,115,116,111,112,
+80,114,111,112,97,103,97,116,105,111,110,105,110,116,101,114,101,115,116,32,105,
+110,32,116,104,101,97,118,97,105,108,97,98,105,108,105,116,121,32,111,102,97,112
+,112,101,97,114,115,32,116,111,32,104,97,118,101,101,108,101,99,116,114,111,109,
+97,103,110,101,116,105,99,101,110,97,98,108,101,83,101,114,118,105,99,101,115,40
+,102,117,110,99,116,105,111,110,32,111,102,32,116,104,101,73,116,32,105,115,32,
+105,109,112,111,114,116,97,110,116,60,47,115,99,114,105,112,116,62,60,47,100,105
+,118,62,102,117,110,99,116,105,111,110,40,41,123,118,97,114,32,114,101,108,97,
+116,105,118,101,32,116,111,32,116,104,101,97,115,32,97,32,114,101,115,117,108,
+116,32,111,102,32,116,104,101,32,112,111,115,105,116,105,111,110,32,111,102,70,
+111,114,32,101,120,97,109,112,108,101,44,32,105,110,32,109,101,116,104,111,100,
+61,34,112,111,115,116,34,32,119,97,115,32,102,111,108,108,111,119,101,100,32,98,
+121,38,97,109,112,59,109,100,97,115,104,59,32,116,104,101,116,104,101,32,97,112,
+112,108,105,99,97,116,105,111,110,106,115,34,62,60,47,115,99,114,105,112,116,62,
+13,10,117,108,62,60,47,100,105,118,62,60,47,100,105,118,62,97,102,116,101,114,32
+,116,104,101,32,100,101,97,116,104,119,105,116,104,32,114,101,115,112,101,99,116
+,32,116,111,115,116,121,108,101,61,34,112,97,100,100,105,110,103,58,105,115,32,
+112,97,114,116,105,99,117,108,97,114,108,121,100,105,115,112,108,97,121,58,105,
+110,108,105,110,101,59,32,116,121,112,101,61,34,115,117,98,109,105,116,34,32,105
+,115,32,100,105,118,105,100,101,100,32,105,110,116,111,228,184,173,230,150,135,
+32,40,231,174,128,228,189,147,41,114,101,115,112,111,110,115,97,98,105,108,105,
+100,97,100,97,100,109,105,110,105,115,116,114,97,99,105,195,179,110,105,110,116,
+101,114,110,97,99,105,111,110,97,108,101,115,99,111,114,114,101,115,112,111,110,
+100,105,101,110,116,101,224,164,137,224,164,170,224,164,175,224,165,139,224,164,
+151,224,164,170,224,165,130,224,164,176,224,165,141,224,164,181,224,164,185,224,
+164,174,224,164,190,224,164,176,224,165,135,224,164,178,224,165,139,224,164,151,
+224,165,139,224,164,130,224,164,154,224,165,129,224,164,168,224,164,190,224,164,
+181,224,164,178,224,165,135,224,164,149,224,164,191,224,164,168,224,164,184,224,
+164,176,224,164,149,224,164,190,224,164,176,224,164,170,224,165,129,224,164,178,
+224,164,191,224,164,184,224,164,150,224,165,139,224,164,156,224,165,135,224,164,
+130,224,164,154,224,164,190,224,164,185,224,164,191,224,164,143,224,164,173,224,
+165,135,224,164,156,224,165,135,224,164,130,224,164,182,224,164,190,224,164,174,
+224,164,191,224,164,178,224,164,185,224,164,174,224,164,190,224,164,176,224,165,
+128,224,164,156,224,164,190,224,164,151,224,164,176,224,164,163,224,164,172,224,
+164,168,224,164,190,224,164,168,224,165,135,224,164,149,224,165,129,224,164,174,
+224,164,190,224,164,176,224,164,172,224,165,141,224,164,178,224,165,137,224,164,
+151,224,164,174,224,164,190,224,164,178,224,164,191,224,164,149,224,164,174,224,
+164,185,224,164,191,224,164,178,224,164,190,224,164,170,224,165,131,224,164,183,
+224,165,141,224,164,160,224,164,172,224,164,162,224,164,188,224,164,164,224,165,
+135,224,164,173,224,164,190,224,164,156,224,164,170,224,164,190,224,164,149,224,
+165,141,224,164,178,224,164,191,224,164,149,224,164,159,224,165,141,224,164,176,
+224,165,135,224,164,168,224,164,150,224,164,191,224,164,178,224,164,190,224,164,
+171,224,164,166,224,165,140,224,164,176,224,164,190,224,164,168,224,164,174,224,
+164,190,224,164,174,224,164,178,224,165,135,224,164,174,224,164,164,224,164,166,
+224,164,190,224,164,168,224,164,172,224,164,190,224,164,156,224,164,190,224,164,
+176,224,164,181,224,164,191,224,164,149,224,164,190,224,164,184,224,164,149,224,
+165,141,224,164,175,224,165,139,224,164,130,224,164,154,224,164,190,224,164,185,
+224,164,164,224,165,135,224,164,170,224,164,185,224,165,129,224,164,129,224,164,
+154,224,164,172,224,164,164,224,164,190,224,164,175,224,164,190,224,164,184,224,
+164,130,224,164,181,224,164,190,224,164,166,224,164,166,224,165,135,224,164,150,
+224,164,168,224,165,135,224,164,170,224,164,191,224,164,155,224,164,178,224,165,
+135,224,164,181,224,164,191,224,164,182,224,165,135,224,164,183,224,164,176,224,
+164,190,224,164,156,224,165,141,224,164,175,224,164,137,224,164,164,224,165,141,
+224,164,164,224,164,176,224,164,174,224,165,129,224,164,130,224,164,172,224,164,
+136,224,164,166,224,165,139,224,164,168,224,165,139,224,164,130,224,164,137,224,
+164,170,224,164,149,224,164,176,224,164,163,224,164,170,224,164,162,224,164,188,
+224,165,135,224,164,130,224,164,184,224,165,141,224,164,165,224,164,191,224,164,
+164,224,164,171,224,164,191,224,164,178,224,165,141,224,164,174,224,164,174,224,
+165,129,224,164,150,224,165,141,224,164,175,224,164,133,224,164,154,224,165,141,
+224,164,155,224,164,190,224,164,155,224,165,130,224,164,159,224,164,164,224,165,
+128,224,164,184,224,164,130,224,164,151,224,165,128,224,164,164,224,164,156,224,
+164,190,224,164,143,224,164,151,224,164,190,224,164,181,224,164,191,224,164,173,
+224,164,190,224,164,151,224,164,152,224,164,163,224,165,141,224,164,159,224,165,
+135,224,164,166,224,165,130,224,164,184,224,164,176,224,165,135,224,164,166,224,
+164,191,224,164,168,224,165,139,224,164,130,224,164,185,224,164,164,224,165,141,
+224,164,175,224,164,190,224,164,184,224,165,135,224,164,149,224,165,141,224,164,
+184,224,164,151,224,164,190,224,164,130,224,164,167,224,165,128,224,164,181,224,
+164,191,224,164,182,224,165,141,224,164,181,224,164,176,224,164,190,224,164,164,
+224,165,135,224,164,130,224,164,166,224,165,136,224,164,159,224,165,141,224,164,
+184,224,164,168,224,164,149,224,165,141,224,164,182,224,164,190,224,164,184,224,
+164,190,224,164,174,224,164,168,224,165,135,224,164,133,224,164,166,224,164,190,
+224,164,178,224,164,164,224,164,172,224,164,191,224,164,156,224,164,178,224,165,
+128,224,164,170,224,165,129,224,164,176,224,165,130,224,164,183,224,164,185,224,
+164,191,224,164,130,224,164,166,224,165,128,224,164,174,224,164,191,224,164,164,
+224,165,141,224,164,176,224,164,149,224,164,181,224,164,191,224,164,164,224,164,
+190,224,164,176,224,165,129,224,164,170,224,164,175,224,165,135,224,164,184,224,
+165,141,224,164,165,224,164,190,224,164,168,224,164,149,224,164,176,224,165,139,
+224,164,161,224,164,188,224,164,174,224,165,129,224,164,149,224,165,141,224,164,
+164,224,164,175,224,165,139,224,164,156,224,164,168,224,164,190,224,164,149,224,
+165,131,224,164,170,224,164,175,224,164,190,224,164,170,224,165,139,224,164,184,
+224,165,141,224,164,159,224,164,152,224,164,176,224,165,135,224,164,178,224,165,
+130,224,164,149,224,164,190,224,164,176,224,165,141,224,164,175,224,164,181,224,
+164,191,224,164,154,224,164,190,224,164,176,224,164,184,224,165,130,224,164,154,
+224,164,168,224,164,190,224,164,174,224,165,130,224,164,178,224,165,141,224,164,
+175,224,164,166,224,165,135,224,164,150,224,165,135,224,164,130,224,164,185,224,
+164,174,224,165,135,224,164,182,224,164,190,224,164,184,224,165,141,224,164,149,
+224,165,130,224,164,178,224,164,174,224,165,136,224,164,130,224,164,168,224,165,
+135,224,164,164,224,165,136,224,164,175,224,164,190,224,164,176,224,164,156,224,
+164,191,224,164,184,224,164,149,224,165,135,114,115,115,43,120,109,108,34,32,116
+,105,116,108,101,61,34,45,116,121,112,101,34,32,99,111,110,116,101,110,116,61,34
+,116,105,116,108,101,34,32,99,111,110,116,101,110,116,61,34,97,116,32,116,104,
+101,32,115,97,109,101,32,116,105,109,101,46,106,115,34,62,60,47,115,99,114,105,
+112,116,62,10,60,34,32,109,101,116,104,111,100,61,34,112,111,115,116,34,32,60,47
+,115,112,97,110,62,60,47,97,62,60,47,108,105,62,118,101,114,116,105,99,97,108,45
+,97,108,105,103,110,58,116,47,106,113,117,101,114,121,46,109,105,110,46,106,115,
+34,62,46,99,108,105,99,107,40,102,117,110,99,116,105,111,110,40,32,115,116,121,
+108,101,61,34,112,97,100,100,105,110,103,45,125,41,40,41,59,10,60,47,115,99,114,
+105,112,116,62,10,60,47,115,112,97,110,62,60,97,32,104,114,101,102,61,34,60,97,
+32,104,114,101,102,61,34,104,116,116,112,58,47,47,41,59,32,114,101,116,117,114,
+110,32,102,97,108,115,101,59,116,101,120,116,45,100,101,99,111,114,97,116,105,
+111,110,58,32,115,99,114,111,108,108,105,110,103,61,34,110,111,34,32,98,111,114,
+100,101,114,45,99,111,108,108,97,112,115,101,58,97,115,115,111,99,105,97,116,101
+,100,32,119,105,116,104,32,66,97,104,97,115,97,32,73,110,100,111,110,101,115,105
+,97,69,110,103,108,105,115,104,32,108,97,110,103,117,97,103,101,60,116,101,120,
+116,32,120,109,108,58,115,112,97,99,101,61,46,103,105,102,34,32,98,111,114,100,
+101,114,61,34,48,34,60,47,98,111,100,121,62,10,60,47,104,116,109,108,62,10,111,
+118,101,114,102,108,111,119,58,104,105,100,100,101,110,59,105,109,103,32,115,114
+,99,61,34,104,116,116,112,58,47,47,97,100,100,69,118,101,110,116,76,105,115,116,
+101,110,101,114,114,101,115,112,111,110,115,105,98,108,101,32,102,111,114,32,115
+,46,106,115,34,62,60,47,115,99,114,105,112,116,62,10,47,102,97,118,105,99,111,
+110,46,105,99,111,34,32,47,62,111,112,101,114,97,116,105,110,103,32,115,121,115,
+116,101,109,34,32,115,116,121,108,101,61,34,119,105,100,116,104,58,49,116,97,114
+,103,101,116,61,34,95,98,108,97,110,107,34,62,83,116,97,116,101,32,85,110,105,
+118,101,114,115,105,116,121,116,101,120,116,45,97,108,105,103,110,58,108,101,102
+,116,59,10,100,111,99,117,109,101,110,116,46,119,114,105,116,101,40,44,32,105,
+110,99,108,117,100,105,110,103,32,116,104,101,32,97,114,111,117,110,100,32,116,
+104,101,32,119,111,114,108,100,41,59,13,10,60,47,115,99,114,105,112,116,62,13,10
+,60,34,32,115,116,121,108,101,61,34,104,101,105,103,104,116,58,59,111,118,101,
+114,102,108,111,119,58,104,105,100,100,101,110,109,111,114,101,32,105,110,102,
+111,114,109,97,116,105,111,110,97,110,32,105,110,116,101,114,110,97,116,105,111,
+110,97,108,97,32,109,101,109,98,101,114,32,111,102,32,116,104,101,32,111,110,101
+,32,111,102,32,116,104,101,32,102,105,114,115,116,99,97,110,32,98,101,32,102,111
+,117,110,100,32,105,110,32,60,47,100,105,118,62,10,9,9,60,47,100,105,118,62,10,
+100,105,115,112,108,97,121,58,32,110,111,110,101,59,34,62,34,32,47,62,10,60,108,
+105,110,107,32,114,101,108,61,34,10,32,32,40,102,117,110,99,116,105,111,110,40,
+41,32,123,116,104,101,32,49,53,116,104,32,99,101,110,116,117,114,121,46,112,114,
+101,118,101,110,116,68,101,102,97,117,108,116,40,108,97,114,103,101,32,110,117,
+109,98,101,114,32,111,102,32,66,121,122,97,110,116,105,110,101,32,69,109,112,105
+,114,101,46,106,112,103,124,116,104,117,109,98,124,108,101,102,116,124,118,97,
+115,116,32,109,97,106,111,114,105,116,121,32,111,102,109,97,106,111,114,105,116,
+121,32,111,102,32,116,104,101,32,32,97,108,105,103,110,61,34,99,101,110,116,101,
+114,34,62,85,110,105,118,101,114,115,105,116,121,32,80,114,101,115,115,100,111,
+109,105,110,97,116,101,100,32,98,121,32,116,104,101,83,101,99,111,110,100,32,87,
+111,114,108,100,32,87,97,114,100,105,115,116,114,105,98,117,116,105,111,110,32,
+111,102,32,115,116,121,108,101,61,34,112,111,115,105,116,105,111,110,58,116,104,
+101,32,114,101,115,116,32,111,102,32,116,104,101,32,99,104,97,114,97,99,116,101,
+114,105,122,101,100,32,98,121,32,114,101,108,61,34,110,111,102,111,108,108,111,
+119,34,62,100,101,114,105,118,101,115,32,102,114,111,109,32,116,104,101,114,97,
+116,104,101,114,32,116,104,97,110,32,116,104,101,32,97,32,99,111,109,98,105,110,
+97,116,105,111,110,32,111,102,115,116,121,108,101,61,34,119,105,100,116,104,58,
+49,48,48,69,110,103,108,105,115,104,45,115,112,101,97,107,105,110,103,99,111,109
+,112,117,116,101,114,32,115,99,105,101,110,99,101,98,111,114,100,101,114,61,34,
+48,34,32,97,108,116,61,34,116,104,101,32,101,120,105,115,116,101,110,99,101,32,
+111,102,68,101,109,111,99,114,97,116,105,99,32,80,97,114,116,121,34,32,115,116,
+121,108,101,61,34,109,97,114,103,105,110,45,70,111,114,32,116,104,105,115,32,114
+,101,97,115,111,110,44,46,106,115,34,62,60,47,115,99,114,105,112,116,62,10,9,115
+,66,121,84,97,103,78,97,109,101,40,115,41,91,48,93,106,115,34,62,60,47,115,99,
+114,105,112,116,62,13,10,60,46,106,115,34,62,60,47,115,99,114,105,112,116,62,13,
+10,108,105,110,107,32,114,101,108,61,34,105,99,111,110,34,32,39,32,97,108,116,61
+,39,39,32,99,108,97,115,115,61,39,102,111,114,109,97,116,105,111,110,32,111,102,
+32,116,104,101,118,101,114,115,105,111,110,115,32,111,102,32,116,104,101,32,60,
+47,97,62,60,47,100,105,118,62,60,47,100,105,118,62,47,112,97,103,101,62,10,32,32
+,60,112,97,103,101,62,10,60,100,105,118,32,99,108,97,115,115,61,34,99,111,110,
+116,98,101,99,97,109,101,32,116,104,101,32,102,105,114,115,116,98,97,104,97,115,
+97,32,73,110,100,111,110,101,115,105,97,101,110,103,108,105,115,104,32,40,115,
+105,109,112,108,101,41,206,149,206,187,206,187,206,183,206,189,206,185,206,186,
+206,172,209,133,209,128,208,178,208,176,209,130,209,129,208,186,208,184,208,186,
+208,190,208,188,208,191,208,176,208,189,208,184,208,184,209,143,208,178,208,187,
+209,143,208,181,209,130,209,129,209,143,208,148,208,190,208,177,208,176,208,178,
+208,184,209,130,209,140,209,135,208,181,208,187,208,190,208,178,208,181,208,186,
+208,176,209,128,208,176,208,183,208,178,208,184,209,130,208,184,209,143,208,152,
+208,189,209,130,208,181,209,128,208,189,208,181,209,130,208,158,209,130,208,178,
+208,181,209,130,208,184,209,130,209,140,208,189,208,176,208,191,209,128,208,184,
+208,188,208,181,209,128,208,184,208,189,209,130,208,181,209,128,208,189,208,181,
+209,130,208,186,208,190,209,130,208,190,209,128,208,190,208,179,208,190,209,129,
+209,130,209,128,208,176,208,189,208,184,209,134,209,139,208,186,208,176,209,135,
+208,181,209,129,209,130,208,178,208,181,209,131,209,129,208,187,208,190,208,178,
+208,184,209,143,209,133,208,191,209,128,208,190,208,177,208,187,208,181,208,188,
+209,139,208,191,208,190,208,187,209,131,209,135,208,184,209,130,209,140,209,143,
+208,178,208,187,209,143,209,142,209,130,209,129,209,143,208,189,208,176,208,184,
+208,177,208,190,208,187,208,181,208,181,208,186,208,190,208,188,208,191,208,176,
+208,189,208,184,209,143,208,178,208,189,208,184,208,188,208,176,208,189,208,184,
+208,181,209,129,209,128,208,181,208,180,209,129,209,130,208,178,208,176,216,167,
+217,132,217,133,217,136,216,167,216,182,217,138,216,185,216,167,217,132,216,177,
+216,166,217,138,216,179,217,138,216,169,216,167,217,132,216,167,217,134,216,170,
+217,130,216,167,217,132,217,133,216,180,216,167,216,177,217,131,216,167,216,170,
+217,131,216,167,217,132,216,179,217,138,216,167,216,177,216,167,216,170,216,167,
+217,132,217,133,217,131,216,170,217,136,216,168,216,169,216,167,217,132,216,179,
+216,185,217,136,216,175,217,138,216,169,216,167,216,173,216,181,216,167,216,166,
+217,138,216,167,216,170,216,167,217,132,216,185,216,167,217,132,217,133,217,138,
+216,169,216,167,217,132,216,181,217,136,216,170,217,138,216,167,216,170,216,167,
+217,132,216,167,217,134,216,170,216,177,217,134,216,170,216,167,217,132,216,170,
+216,181,216,167,217,133,217,138,217,133,216,167,217,132,216,165,216,179,217,132,
+216,167,217,133,217,138,216,167,217,132,217,133,216,180,216,167,216,177,217,131,
+216,169,216,167,217,132,217,133,216,177,216,166,217,138,216,167,216,170,114,111,
+98,111,116,115,34,32,99,111,110,116,101,110,116,61,34,60,100,105,118,32,105,100,
+61,34,102,111,111,116,101,114,34,62,116,104,101,32,85,110,105,116,101,100,32,83,
+116,97,116,101,115,60,105,109,103,32,115,114,99,61,34,104,116,116,112,58,47,47,
+46,106,112,103,124,114,105,103,104,116,124,116,104,117,109,98,124,46,106,115,34,
+62,60,47,115,99,114,105,112,116,62,13,10,60,108,111,99,97,116,105,111,110,46,112
+,114,111,116,111,99,111,108,102,114,97,109,101,98,111,114,100,101,114,61,34,48,
+34,32,115,34,32,47,62,10,60,109,101,116,97,32,110,97,109,101,61,34,60,47,97,62,
+60,47,100,105,118,62,60,47,100,105,118,62,60,102,111,110,116,45,119,101,105,103,
+104,116,58,98,111,108,100,59,38,113,117,111,116,59,32,97,110,100,32,38,113,117,
+111,116,59,100,101,112,101,110,100,105,110,103,32,111,110,32,116,104,101,32,109,
+97,114,103,105,110,58,48,59,112,97,100,100,105,110,103,58,34,32,114,101,108,61,
+34,110,111,102,111,108,108,111,119,34,32,80,114,101,115,105,100,101,110,116,32,
+111,102,32,116,104,101,32,116,119,101,110,116,105,101,116,104,32,99,101,110,116,
+117,114,121,101,118,105,115,105,111,110,62,10,32,32,60,47,112,97,103,101,73,110,
+116,101,114,110,101,116,32,69,120,112,108,111,114,101,114,97,46,97,115,121,110,
+99,32,61,32,116,114,117,101,59,13,10,105,110,102,111,114,109,97,116,105,111,110,
+32,97,98,111,117,116,60,100,105,118,32,105,100,61,34,104,101,97,100,101,114,34,
+62,34,32,97,99,116,105,111,110,61,34,104,116,116,112,58,47,47,60,97,32,104,114,
+101,102,61,34,104,116,116,112,115,58,47,47,60,100,105,118,32,105,100,61,34,99,
+111,110,116,101,110,116,34,60,47,100,105,118,62,13,10,60,47,100,105,118,62,13,10
+,60,100,101,114,105,118,101,100,32,102,114,111,109,32,116,104,101,32,60,105,109,
+103,32,115,114,99,61,39,104,116,116,112,58,47,47,97,99,99,111,114,100,105,110,
+103,32,116,111,32,116,104,101,32,10,60,47,98,111,100,121,62,10,60,47,104,116,109
+,108,62,10,115,116,121,108,101,61,34,102,111,110,116,45,115,105,122,101,58,115,
+99,114,105,112,116,32,108,97,110,103,117,97,103,101,61,34,65,114,105,97,108,44,
+32,72,101,108,118,101,116,105,99,97,44,60,47,97,62,60,115,112,97,110,32,99,108,
+97,115,115,61,34,60,47,115,99,114,105,112,116,62,60,115,99,114,105,112,116,32,
+112,111,108,105,116,105,99,97,108,32,112,97,114,116,105,101,115,116,100,62,60,47
+,116,114,62,60,47,116,97,98,108,101,62,60,104,114,101,102,61,34,104,116,116,112,
+58,47,47,119,119,119,46,105,110,116,101,114,112,114,101,116,97,116,105,111,110,
+32,111,102,114,101,108,61,34,115,116,121,108,101,115,104,101,101,116,34,32,100,
+111,99,117,109,101,110,116,46,119,114,105,116,101,40,39,60,99,104,97,114,115,101
+,116,61,34,117,116,102,45,56,34,62,10,98,101,103,105,110,110,105,110,103,32,111,
+102,32,116,104,101,32,114,101,118,101,97,108,101,100,32,116,104,97,116,32,116,
+104,101,116,101,108,101,118,105,115,105,111,110,32,115,101,114,105,101,115,34,32
+,114,101,108,61,34,110,111,102,111,108,108,111,119,34,62,32,116,97,114,103,101,
+116,61,34,95,98,108,97,110,107,34,62,99,108,97,105,109,105,110,103,32,116,104,97
+,116,32,116,104,101,104,116,116,112,37,51,65,37,50,70,37,50,70,119,119,119,46,
+109,97,110,105,102,101,115,116,97,116,105,111,110,115,32,111,102,80,114,105,109,
+101,32,77,105,110,105,115,116,101,114,32,111,102,105,110,102,108,117,101,110,99,
+101,100,32,98,121,32,116,104,101,99,108,97,115,115,61,34,99,108,101,97,114,102,
+105,120,34,62,47,100,105,118,62,13,10,60,47,100,105,118,62,13,10,13,10,116,104,
+114,101,101,45,100,105,109,101,110,115,105,111,110,97,108,67,104,117,114,99,104,
+32,111,102,32,69,110,103,108,97,110,100,111,102,32,78,111,114,116,104,32,67,97,
+114,111,108,105,110,97,115,113,117,97,114,101,32,107,105,108,111,109,101,116,114
+,101,115,46,97,100,100,69,118,101,110,116,76,105,115,116,101,110,101,114,100,105
+,115,116,105,110,99,116,32,102,114,111,109,32,116,104,101,99,111,109,109,111,110
+,108,121,32,107,110,111,119,110,32,97,115,80,104,111,110,101,116,105,99,32,65,
+108,112,104,97,98,101,116,100,101,99,108,97,114,101,100,32,116,104,97,116,32,116
+,104,101,99,111,110,116,114,111,108,108,101,100,32,98,121,32,116,104,101,66,101,
+110,106,97,109,105,110,32,70,114,97,110,107,108,105,110,114,111,108,101,45,112,
+108,97,121,105,110,103,32,103,97,109,101,116,104,101,32,85,110,105,118,101,114,
+115,105,116,121,32,111,102,105,110,32,87,101,115,116,101,114,110,32,69,117,114,
+111,112,101,112,101,114,115,111,110,97,108,32,99,111,109,112,117,116,101,114,80,
+114,111,106,101,99,116,32,71,117,116,101,110,98,101,114,103,114,101,103,97,114,
+100,108,101,115,115,32,111,102,32,116,104,101,104,97,115,32,98,101,101,110,32,
+112,114,111,112,111,115,101,100,116,111,103,101,116,104,101,114,32,119,105,116,
+104,32,116,104,101,62,60,47,108,105,62,60,108,105,32,99,108,97,115,115,61,34,105
+,110,32,115,111,109,101,32,99,111,117,110,116,114,105,101,115,109,105,110,46,106
+,115,34,62,60,47,115,99,114,105,112,116,62,111,102,32,116,104,101,32,112,111,112
+,117,108,97,116,105,111,110,111,102,102,105,99,105,97,108,32,108,97,110,103,117,
+97,103,101,60,105,109,103,32,115,114,99,61,34,105,109,97,103,101,115,47,105,100,
+101,110,116,105,102,105,101,100,32,98,121,32,116,104,101,110,97,116,117,114,97,
+108,32,114,101,115,111,117,114,99,101,115,99,108,97,115,115,105,102,105,99,97,
+116,105,111,110,32,111,102,99,97,110,32,98,101,32,99,111,110,115,105,100,101,114
+,101,100,113,117,97,110,116,117,109,32,109,101,99,104,97,110,105,99,115,78,101,
+118,101,114,116,104,101,108,101,115,115,44,32,116,104,101,109,105,108,108,105,
+111,110,32,121,101,97,114,115,32,97,103,111,60,47,98,111,100,121,62,13,10,60,47,
+104,116,109,108,62,13,206,149,206,187,206,187,206,183,206,189,206,185,206,186,
+206,172,10,116,97,107,101,32,97,100,118,97,110,116,97,103,101,32,111,102,97,110,
+100,44,32,97,99,99,111,114,100,105,110,103,32,116,111,97,116,116,114,105,98,117,
+116,101,100,32,116,111,32,116,104,101,77,105,99,114,111,115,111,102,116,32,87,
+105,110,100,111,119,115,116,104,101,32,102,105,114,115,116,32,99,101,110,116,117
+,114,121,117,110,100,101,114,32,116,104,101,32,99,111,110,116,114,111,108,100,
+105,118,32,99,108,97,115,115,61,34,104,101,97,100,101,114,115,104,111,114,116,
+108,121,32,97,102,116,101,114,32,116,104,101,110,111,116,97,98,108,101,32,101,
+120,99,101,112,116,105,111,110,116,101,110,115,32,111,102,32,116,104,111,117,115
+,97,110,100,115,115,101,118,101,114,97,108,32,100,105,102,102,101,114,101,110,
+116,97,114,111,117,110,100,32,116,104,101,32,119,111,114,108,100,46,114,101,97,
+99,104,105,110,103,32,109,105,108,105,116,97,114,121,105,115,111,108,97,116,101,
+100,32,102,114,111,109,32,116,104,101,111,112,112,111,115,105,116,105,111,110,32
+,116,111,32,116,104,101,116,104,101,32,79,108,100,32,84,101,115,116,97,109,101,
+110,116,65,102,114,105,99,97,110,32,65,109,101,114,105,99,97,110,115,105,110,115
+,101,114,116,101,100,32,105,110,116,111,32,116,104,101,115,101,112,97,114,97,116
+,101,32,102,114,111,109,32,116,104,101,109,101,116,114,111,112,111,108,105,116,
+97,110,32,97,114,101,97,109,97,107,101,115,32,105,116,32,112,111,115,115,105,98,
+108,101,97,99,107,110,111,119,108,101,100,103,101,100,32,116,104,97,116,97,114,
+103,117,97,98,108,121,32,116,104,101,32,109,111,115,116,116,121,112,101,61,34,
+116,101,120,116,47,99,115,115,34,62,10,116,104,101,32,73,110,116,101,114,110,97,
+116,105,111,110,97,108,65,99,99,111,114,100,105,110,103,32,116,111,32,116,104,
+101,32,112,101,61,34,116,101,120,116,47,99,115,115,34,32,47,62,10,99,111,105,110
+,99,105,100,101,32,119,105,116,104,32,116,104,101,116,119,111,45,116,104,105,114
+,100,115,32,111,102,32,116,104,101,68,117,114,105,110,103,32,116,104,105,115,32,
+116,105,109,101,44,100,117,114,105,110,103,32,116,104,101,32,112,101,114,105,111
+,100,97,110,110,111,117,110,99,101,100,32,116,104,97,116,32,104,101,116,104,101,
+32,105,110,116,101,114,110,97,116,105,111,110,97,108,97,110,100,32,109,111,114,
+101,32,114,101,99,101,110,116,108,121,98,101,108,105,101,118,101,100,32,116,104,
+97,116,32,116,104,101,99,111,110,115,99,105,111,117,115,110,101,115,115,32,97,
+110,100,102,111,114,109,101,114,108,121,32,107,110,111,119,110,32,97,115,115,117
+,114,114,111,117,110,100,101,100,32,98,121,32,116,104,101,102,105,114,115,116,32
+,97,112,112,101,97,114,101,100,32,105,110,111,99,99,97,115,105,111,110,97,108,
+108,121,32,117,115,101,100,112,111,115,105,116,105,111,110,58,97,98,115,111,108,
+117,116,101,59,34,32,116,97,114,103,101,116,61,34,95,98,108,97,110,107,34,32,112
+,111,115,105,116,105,111,110,58,114,101,108,97,116,105,118,101,59,116,101,120,
+116,45,97,108,105,103,110,58,99,101,110,116,101,114,59,106,97,120,47,108,105,98,
+115,47,106,113,117,101,114,121,47,49,46,98,97,99,107,103,114,111,117,110,100,45,
+99,111,108,111,114,58,35,116,121,112,101,61,34,97,112,112,108,105,99,97,116,105,
+111,110,47,97,110,103,117,97,103,101,34,32,99,111,110,116,101,110,116,61,34,60,
+109,101,116,97,32,104,116,116,112,45,101,113,117,105,118,61,34,80,114,105,118,97
+,99,121,32,80,111,108,105,99,121,60,47,97,62,101,40,34,37,51,67,115,99,114,105,
+112,116,32,115,114,99,61,39,34,32,116,97,114,103,101,116,61,34,95,98,108,97,110,
+107,34,62,79,110,32,116,104,101,32,111,116,104,101,114,32,104,97,110,100,44,46,
+106,112,103,124,116,104,117,109,98,124,114,105,103,104,116,124,50,60,47,100,105,
+118,62,60,100,105,118,32,99,108,97,115,115,61,34,60,100,105,118,32,115,116,121,
+108,101,61,34,102,108,111,97,116,58,110,105,110,101,116,101,101,110,116,104,32,
+99,101,110,116,117,114,121,60,47,98,111,100,121,62,13,10,60,47,104,116,109,108,
+62,13,10,60,105,109,103,32,115,114,99,61,34,104,116,116,112,58,47,47,115,59,116,
+101,120,116,45,97,108,105,103,110,58,99,101,110,116,101,114,102,111,110,116,45,
+119,101,105,103,104,116,58,32,98,111,108,100,59,32,65,99,99,111,114,100,105,110,
+103,32,116,111,32,116,104,101,32,100,105,102,102,101,114,101,110,99,101,32,98,
+101,116,119,101,101,110,34,32,102,114,97,109,101,98,111,114,100,101,114,61,34,48
+,34,32,34,32,115,116,121,108,101,61,34,112,111,115,105,116,105,111,110,58,108,
+105,110,107,32,104,114,101,102,61,34,104,116,116,112,58,47,47,104,116,109,108,52
+,47,108,111,111,115,101,46,100,116,100,34,62,10,100,117,114,105,110,103,32,116,
+104,105,115,32,112,101,114,105,111,100,60,47,116,100,62,60,47,116,114,62,60,47,
+116,97,98,108,101,62,99,108,111,115,101,108,121,32,114,101,108,97,116,101,100,32
+,116,111,102,111,114,32,116,104,101,32,102,105,114,115,116,32,116,105,109,101,59
+,102,111,110,116,45,119,101,105,103,104,116,58,98,111,108,100,59,105,110,112,117
+,116,32,116,121,112,101,61,34,116,101,120,116,34,32,60,115,112,97,110,32,115,116
+,121,108,101,61,34,102,111,110,116,45,111,110,114,101,97,100,121,115,116,97,116,
+101,99,104,97,110,103,101,9,60,100,105,118,32,99,108,97,115,115,61,34,99,108,101
+,97,114,100,111,99,117,109,101,110,116,46,108,111,99,97,116,105,111,110,46,32,70
+,111,114,32,101,120,97,109,112,108,101,44,32,116,104,101,32,97,32,119,105,100,
+101,32,118,97,114,105,101,116,121,32,111,102,32,60,33,68,79,67,84,89,80,69,32,
+104,116,109,108,62,13,10,60,38,110,98,115,112,59,38,110,98,115,112,59,38,110,98,
+115,112,59,34,62,60,97,32,104,114,101,102,61,34,104,116,116,112,58,47,47,115,116
+,121,108,101,61,34,102,108,111,97,116,58,108,101,102,116,59,99,111,110,99,101,
+114,110,101,100,32,119,105,116,104,32,116,104,101,61,104,116,116,112,37,51,65,37
+,50,70,37,50,70,119,119,119,46,105,110,32,112,111,112,117,108,97,114,32,99,117,
+108,116,117,114,101,116,121,112,101,61,34,116,101,120,116,47,99,115,115,34,32,47
+,62,105,116,32,105,115,32,112,111,115,115,105,98,108,101,32,116,111,32,72,97,114
+,118,97,114,100,32,85,110,105,118,101,114,115,105,116,121,116,121,108,101,115,
+104,101,101,116,34,32,104,114,101,102,61,34,47,116,104,101,32,109,97,105,110,32,
+99,104,97,114,97,99,116,101,114,79,120,102,111,114,100,32,85,110,105,118,101,114
+,115,105,116,121,32,32,110,97,109,101,61,34,107,101,121,119,111,114,100,115,34,
+32,99,115,116,121,108,101,61,34,116,101,120,116,45,97,108,105,103,110,58,116,104
+,101,32,85,110,105,116,101,100,32,75,105,110,103,100,111,109,102,101,100,101,114
+,97,108,32,103,111,118,101,114,110,109,101,110,116,60,100,105,118,32,115,116,121
+,108,101,61,34,109,97,114,103,105,110,32,100,101,112,101,110,100,105,110,103,32,
+111,110,32,116,104,101,32,100,101,115,99,114,105,112,116,105,111,110,32,111,102,
+32,116,104,101,60,100,105,118,32,99,108,97,115,115,61,34,104,101,97,100,101,114,
+46,109,105,110,46,106,115,34,62,60,47,115,99,114,105,112,116,62,100,101,115,116,
+114,117,99,116,105,111,110,32,111,102,32,116,104,101,115,108,105,103,104,116,108
+,121,32,100,105,102,102,101,114,101,110,116,105,110,32,97,99,99,111,114,100,97,
+110,99,101,32,119,105,116,104,116,101,108,101,99,111,109,109,117,110,105,99,97,
+116,105,111,110,115,105,110,100,105,99,97,116,101,115,32,116,104,97,116,32,116,
+104,101,115,104,111,114,116,108,121,32,116,104,101,114,101,97,102,116,101,114,
+101,115,112,101,99,105,97,108,108,121,32,105,110,32,116,104,101,32,69,117,114,
+111,112,101,97,110,32,99,111,117,110,116,114,105,101,115,72,111,119,101,118,101,
+114,44,32,116,104,101,114,101,32,97,114,101,115,114,99,61,34,104,116,116,112,58,
+47,47,115,116,97,116,105,99,115,117,103,103,101,115,116,101,100,32,116,104,97,
+116,32,116,104,101,34,32,115,114,99,61,34,104,116,116,112,58,47,47,119,119,119,
+46,97,32,108,97,114,103,101,32,110,117,109,98,101,114,32,111,102,32,84,101,108,
+101,99,111,109,109,117,110,105,99,97,116,105,111,110,115,34,32,114,101,108,61,34
+,110,111,102,111,108,108,111,119,34,32,116,72,111,108,121,32,82,111,109,97,110,
+32,69,109,112,101,114,111,114,97,108,109,111,115,116,32,101,120,99,108,117,115,
+105,118,101,108,121,34,32,98,111,114,100,101,114,61,34,48,34,32,97,108,116,61,34
+,83,101,99,114,101,116,97,114,121,32,111,102,32,83,116,97,116,101,99,117,108,109
+,105,110,97,116,105,110,103,32,105,110,32,116,104,101,67,73,65,32,87,111,114,108
+,100,32,70,97,99,116,98,111,111,107,116,104,101,32,109,111,115,116,32,105,109,
+112,111,114,116,97,110,116,97,110,110,105,118,101,114,115,97,114,121,32,111,102,
+32,116,104,101,115,116,121,108,101,61,34,98,97,99,107,103,114,111,117,110,100,45
+,60,108,105,62,60,101,109,62,60,97,32,104,114,101,102,61,34,47,116,104,101,32,65
+,116,108,97,110,116,105,99,32,79,99,101,97,110,115,116,114,105,99,116,108,121,32
+,115,112,101,97,107,105,110,103,44,115,104,111,114,116,108,121,32,98,101,102,111
+,114,101,32,116,104,101,100,105,102,102,101,114,101,110,116,32,116,121,112,101,
+115,32,111,102,116,104,101,32,79,116,116,111,109,97,110,32,69,109,112,105,114,
+101,62,60,105,109,103,32,115,114,99,61,34,104,116,116,112,58,47,47,65,110,32,73,
+110,116,114,111,100,117,99,116,105,111,110,32,116,111,99,111,110,115,101,113,117
+,101,110,99,101,32,111,102,32,116,104,101,100,101,112,97,114,116,117,114,101,32,
+102,114,111,109,32,116,104,101,67,111,110,102,101,100,101,114,97,116,101,32,83,
+116,97,116,101,115,105,110,100,105,103,101,110,111,117,115,32,112,101,111,112,
+108,101,115,80,114,111,99,101,101,100,105,110,103,115,32,111,102,32,116,104,101,
+105,110,102,111,114,109,97,116,105,111,110,32,111,110,32,116,104,101,116,104,101
+,111,114,105,101,115,32,104,97,118,101,32,98,101,101,110,105,110,118,111,108,118
+,101,109,101,110,116,32,105,110,32,116,104,101,100,105,118,105,100,101,100,32,
+105,110,116,111,32,116,104,114,101,101,97,100,106,97,99,101,110,116,32,99,111,
+117,110,116,114,105,101,115,105,115,32,114,101,115,112,111,110,115,105,98,108,
+101,32,102,111,114,100,105,115,115,111,108,117,116,105,111,110,32,111,102,32,116
+,104,101,99,111,108,108,97,98,111,114,97,116,105,111,110,32,119,105,116,104,119,
+105,100,101,108,121,32,114,101,103,97,114,100,101,100,32,97,115,104,105,115,32,
+99,111,110,116,101,109,112,111,114,97,114,105,101,115,102,111,117,110,100,105,
+110,103,32,109,101,109,98,101,114,32,111,102,68,111,109,105,110,105,99,97,110,32
+,82,101,112,117,98,108,105,99,103,101,110,101,114,97,108,108,121,32,97,99,99,101
+,112,116,101,100,116,104,101,32,112,111,115,115,105,98,105,108,105,116,121,32,
+111,102,97,114,101,32,97,108,115,111,32,97,118,97,105,108,97,98,108,101,117,110,
+100,101,114,32,99,111,110,115,116,114,117,99,116,105,111,110,114,101,115,116,111
+,114,97,116,105,111,110,32,111,102,32,116,104,101,116,104,101,32,103,101,110,101
+,114,97,108,32,112,117,98,108,105,99,105,115,32,97,108,109,111,115,116,32,101,
+110,116,105,114,101,108,121,112,97,115,115,101,115,32,116,104,114,111,117,103,
+104,32,116,104,101,104,97,115,32,98,101,101,110,32,115,117,103,103,101,115,116,
+101,100,99,111,109,112,117,116,101,114,32,97,110,100,32,118,105,100,101,111,71,
+101,114,109,97,110,105,99,32,108,97,110,103,117,97,103,101,115,32,97,99,99,111,
+114,100,105,110,103,32,116,111,32,116,104,101,32,100,105,102,102,101,114,101,110
+,116,32,102,114,111,109,32,116,104,101,115,104,111,114,116,108,121,32,97,102,116
+,101,114,119,97,114,100,115,104,114,101,102,61,34,104,116,116,112,115,58,47,47,
+119,119,119,46,114,101,99,101,110,116,32,100,101,118,101,108,111,112,109,101,110
+,116,66,111,97,114,100,32,111,102,32,68,105,114,101,99,116,111,114,115,60,100,
+105,118,32,99,108,97,115,115,61,34,115,101,97,114,99,104,124,32,60,97,32,104,114
+,101,102,61,34,104,116,116,112,58,47,47,73,110,32,112,97,114,116,105,99,117,108,
+97,114,44,32,116,104,101,77,117,108,116,105,112,108,101,32,102,111,111,116,110,
+111,116,101,115,111,114,32,111,116,104,101,114,32,115,117,98,115,116,97,110,99,
+101,116,104,111,117,115,97,110,100,115,32,111,102,32,121,101,97,114,115,116,114,
+97,110,115,108,97,116,105,111,110,32,111,102,32,116,104,101,60,47,100,105,118,62
+,13,10,60,47,100,105,118,62,13,10,13,10,60,97,32,104,114,101,102,61,34,105,110,
+100,101,120,46,112,104,112,119,97,115,32,101,115,116,97,98,108,105,115,104,101,
+100,32,105,110,109,105,110,46,106,115,34,62,60,47,115,99,114,105,112,116,62,10,
+112,97,114,116,105,99,105,112,97,116,101,32,105,110,32,116,104,101,97,32,115,116
+,114,111,110,103,32,105,110,102,108,117,101,110,99,101,115,116,121,108,101,61,34
+,109,97,114,103,105,110,45,116,111,112,58,114,101,112,114,101,115,101,110,116,
+101,100,32,98,121,32,116,104,101,103,114,97,100,117,97,116,101,100,32,102,114,
+111,109,32,116,104,101,84,114,97,100,105,116,105,111,110,97,108,108,121,44,32,
+116,104,101,69,108,101,109,101,110,116,40,34,115,99,114,105,112,116,34,41,59,72,
+111,119,101,118,101,114,44,32,115,105,110,99,101,32,116,104,101,47,100,105,118,
+62,10,60,47,100,105,118,62,10,60,100,105,118,32,108,101,102,116,59,32,109,97,114
+,103,105,110,45,108,101,102,116,58,112,114,111,116,101,99,116,105,111,110,32,97,
+103,97,105,110,115,116,48,59,32,118,101,114,116,105,99,97,108,45,97,108,105,103,
+110,58,85,110,102,111,114,116,117,110,97,116,101,108,121,44,32,116,104,101,116,
+121,112,101,61,34,105,109,97,103,101,47,120,45,105,99,111,110,47,100,105,118,62,
+10,60,100,105,118,32,99,108,97,115,115,61,34,32,99,108,97,115,115,61,34,99,108,
+101,97,114,102,105,120,34,62,60,100,105,118,32,99,108,97,115,115,61,34,102,111,
+111,116,101,114,9,9,60,47,100,105,118,62,10,9,9,60,47,100,105,118,62,10,116,104,
+101,32,109,111,116,105,111,110,32,112,105,99,116,117,114,101,208,145,209,138,208
+,187,208,179,208,176,209,128,209,129,208,186,208,184,208,177,209,138,208,187,208
+,179,208,176,209,128,209,129,208,186,208,184,208,164,208,181,208,180,208,181,209
+,128,208,176,209,134,208,184,208,184,208,189,208,181,209,129,208,186,208,190,208
+,187,209,140,208,186,208,190,209,129,208,190,208,190,208,177,209,137,208,181,208
+,189,208,184,208,181,209,129,208,190,208,190,208,177,209,137,208,181,208,189,208
+,184,209,143,208,191,209,128,208,190,208,179,209,128,208,176,208,188,208,188,209
+,139,208,158,209,130,208,191,209,128,208,176,208,178,208,184,209,130,209,140,208
+,177,208,181,209,129,208,191,208,187,208,176,209,130,208,189,208,190,208,188,208
+,176,209,130,208,181,209,128,208,184,208,176,208,187,209,139,208,191,208,190,208
+,183,208,178,208,190,208,187,209,143,208,181,209,130,208,191,208,190,209,129,208
+,187,208,181,208,180,208,189,208,184,208,181,209,128,208,176,208,183,208,187,208
+,184,209,135,208,189,209,139,209,133,208,191,209,128,208,190,208,180,209,131,208
+,186,209,134,208,184,208,184,208,191,209,128,208,190,208,179,209,128,208,176,208
+,188,208,188,208,176,208,191,208,190,208,187,208,189,208,190,209,129,209,130,209
+,140,209,142,208,189,208,176,209,133,208,190,208,180,208,184,209,130,209,129,209
+,143,208,184,208,183,208,177,209,128,208,176,208,189,208,189,208,190,208,181,208
+,189,208,176,209,129,208,181,208,187,208,181,208,189,208,184,209,143,208,184,208
+,183,208,188,208,181,208,189,208,181,208,189,208,184,209,143,208,186,208,176,209
+,130,208,181,208,179,208,190,209,128,208,184,208,184,208,144,208,187,208,181,208
+,186,209,129,208,176,208,189,208,180,209,128,224,164,166,224,165,141,224,164,181
+,224,164,190,224,164,176,224,164,190,224,164,174,224,165,136,224,164,168,224,165
+,129,224,164,133,224,164,178,224,164,170,224,165,141,224,164,176,224,164,166,224
+,164,190,224,164,168,224,164,173,224,164,190,224,164,176,224,164,164,224,165,128
+,224,164,175,224,164,133,224,164,168,224,165,129,224,164,166,224,165,135,224,164
+,182,224,164,185,224,164,191,224,164,168,224,165,141,224,164,166,224,165,128,224
+,164,135,224,164,130,224,164,161,224,164,191,224,164,175,224,164,190,224,164,166
+,224,164,191,224,164,178,224,165,141,224,164,178,224,165,128,224,164,133,224,164
+,167,224,164,191,224,164,149,224,164,190,224,164,176,224,164,181,224,165,128,224
+,164,161,224,164,191,224,164,175,224,165,139,224,164,154,224,164,191,224,164,159
+,224,165,141,224,164,160,224,165,135,224,164,184,224,164,174,224,164,190,224,164
+,154,224,164,190,224,164,176,224,164,156,224,164,130,224,164,149,224,165,141,224
+,164,182,224,164,168,224,164,166,224,165,129,224,164,168,224,164,191,224,164,175
+,224,164,190,224,164,170,224,165,141,224,164,176,224,164,175,224,165,139,224,164
+,151,224,164,133,224,164,168,224,165,129,224,164,184,224,164,190,224,164,176,224
+,164,145,224,164,168,224,164,178,224,164,190,224,164,135,224,164,168,224,164,170
+,224,164,190,224,164,176,224,165,141,224,164,159,224,165,128,224,164,182,224,164
+,176,224,165,141,224,164,164,224,165,139,224,164,130,224,164,178,224,165,139,224
+,164,149,224,164,184,224,164,173,224,164,190,224,164,171,224,164,188,224,165,141
+,224,164,178,224,165,136,224,164,182,224,164,182,224,164,176,224,165,141,224,164
+,164,224,165,135,224,164,130,224,164,170,224,165,141,224,164,176,224,164,166,224
+,165,135,224,164,182,224,164,170,224,165,141,224,164,178,224,165,135,224,164,175
+,224,164,176,224,164,149,224,165,135,224,164,130,224,164,166,224,165,141,224,164
+,176,224,164,184,224,165,141,224,164,165,224,164,191,224,164,164,224,164,191,224
+,164,137,224,164,164,224,165,141,224,164,170,224,164,190,224,164,166,224,164,137
+,224,164,168,224,165,141,224,164,185,224,165,135,224,164,130,224,164,154,224,164
+,191,224,164,159,224,165,141,224,164,160,224,164,190,224,164,175,224,164,190,224
+,164,164,224,165,141,224,164,176,224,164,190,224,164,156,224,165,141,224,164,175
+,224,164,190,224,164,166,224,164,190,224,164,170,224,165,129,224,164,176,224,164
+,190,224,164,168,224,165,135,224,164,156,224,165,139,224,164,161,224,164,188,224
+,165,135,224,164,130,224,164,133,224,164,168,224,165,129,224,164,181,224,164,190
+,224,164,166,224,164,182,224,165,141,224,164,176,224,165,135,224,164,163,224,165
+,128,224,164,182,224,164,191,224,164,149,224,165,141,224,164,183,224,164,190,224
+,164,184,224,164,176,224,164,149,224,164,190,224,164,176,224,165,128,224,164,184
+,224,164,130,224,164,151,224,165,141,224,164,176,224,164,185,224,164,170,224,164
+,176,224,164,191,224,164,163,224,164,190,224,164,174,224,164,172,224,165,141,224
+,164,176,224,164,190,224,164,130,224,164,161,224,164,172,224,164,154,224,165,141
+,224,164,154,224,165,139,224,164,130,224,164,137,224,164,170,224,164,178,224,164
+,172,224,165,141,224,164,167,224,164,174,224,164,130,224,164,164,224,165,141,224
+,164,176,224,165,128,224,164,184,224,164,130,224,164,170,224,164,176,224,165,141
+,224,164,149,224,164,137,224,164,174,224,165,141,224,164,174,224,165,128,224,164
+,166,224,164,174,224,164,190,224,164,167,224,165,141,224,164,175,224,164,174,224
+,164,184,224,164,185,224,164,190,224,164,175,224,164,164,224,164,190,224,164,182
+,224,164,172,224,165,141,224,164,166,224,165,139,224,164,130,224,164,174,224,165
+,128,224,164,161,224,164,191,224,164,175,224,164,190,224,164,134,224,164,136,224
+,164,170,224,165,128,224,164,143,224,164,178,224,164,174,224,165,139,224,164,172
+,224,164,190,224,164,135,224,164,178,224,164,184,224,164,130,224,164,150,224,165
+,141,224,164,175,224,164,190,224,164,134,224,164,170,224,164,176,224,165,135,224
+,164,182,224,164,168,224,164,133,224,164,168,224,165,129,224,164,172,224,164,130
+,224,164,167,224,164,172,224,164,190,224,164,156,224,164,188,224,164,190,224,164
+,176,224,164,168,224,164,181,224,165,128,224,164,168,224,164,164,224,164,174,224
+,164,170,224,165,141,224,164,176,224,164,174,224,165,129,224,164,150,224,164,170
+,224,165,141,224,164,176,224,164,182,224,165,141,224,164,168,224,164,170,224,164
+,176,224,164,191,224,164,181,224,164,190,224,164,176,224,164,168,224,165,129,224
+,164,149,224,164,184,224,164,190,224,164,168,224,164,184,224,164,174,224,164,176
+,224,165,141,224,164,165,224,164,168,224,164,134,224,164,175,224,165,139,224,164
+,156,224,164,191,224,164,164,224,164,184,224,165,139,224,164,174,224,164,181,224
+,164,190,224,164,176,216,167,217,132,217,133,216,180,216,167,216,177,217,131,216
+,167,216,170,216,167,217,132,217,133,217,134,216,170,216,175,217,138,216,167,216
+,170,216,167,217,132,217,131,217,133,216,168,217,138,217,136,216,170,216,177,216
+,167,217,132,217,133,216,180,216,167,217,135,216,175,216,167,216,170,216,185,216
+,175,216,175,216,167,217,132,216,178,217,136,216,167,216,177,216,185,216,175,216
+,175,216,167,217,132,216,177,216,175,217,136,216,175,216,167,217,132,216,165,216
+,179,217,132,216,167,217,133,217,138,216,169,216,167,217,132,217,129,217,136,216
+,170,217,136,216,180,217,136,216,168,216,167,217,132,217,133,216,179,216,167,216
+,168,217,130,216,167,216,170,216,167,217,132,217,133,216,185,217,132,217,136,217
+,133,216,167,216,170,216,167,217,132,217,133,216,179,217,132,216,179,217,132,216
+,167,216,170,216,167,217,132,216,172,216,177,216,167,217,129,217,138,217,131,216
+,179,216,167,217,132,216,167,216,179,217,132,216,167,217,133,217,138,216,169,216
+,167,217,132,216,167,216,170,216,181,216,167,217,132,216,167,216,170,107,101,121
+,119,111,114,100,115,34,32,99,111,110,116,101,110,116,61,34,119,51,46,111,114,
+103,47,49,57,57,57,47,120,104,116,109,108,34,62,60,97,32,116,97,114,103,101,116,
+61,34,95,98,108,97,110,107,34,32,116,101,120,116,47,104,116,109,108,59,32,99,104
+,97,114,115,101,116,61,34,32,116,97,114,103,101,116,61,34,95,98,108,97,110,107,
+34,62,60,116,97,98,108,101,32,99,101,108,108,112,97,100,100,105,110,103,61,34,97
+,117,116,111,99,111,109,112,108,101,116,101,61,34,111,102,102,34,32,116,101,120,
+116,45,97,108,105,103,110,58,32,99,101,110,116,101,114,59,116,111,32,108,97,115,
+116,32,118,101,114,115,105,111,110,32,98,121,32,98,97,99,107,103,114,111,117,110
+,100,45,99,111,108,111,114,58,32,35,34,32,104,114,101,102,61,34,104,116,116,112,
+58,47,47,119,119,119,46,47,100,105,118,62,60,47,100,105,118,62,60,100,105,118,32
+,105,100,61,60,97,32,104,114,101,102,61,34,35,34,32,99,108,97,115,115,61,34,34,
+62,60,105,109,103,32,115,114,99,61,34,104,116,116,112,58,47,47,99,114,105,112,
+116,34,32,115,114,99,61,34,104,116,116,112,58,47,47,10,60,115,99,114,105,112,116
+,32,108,97,110,103,117,97,103,101,61,34,47,47,69,78,34,32,34,104,116,116,112,58,
+47,47,119,119,119,46,119,101,110,99,111,100,101,85,82,73,67,111,109,112,111,110,
+101,110,116,40,34,32,104,114,101,102,61,34,106,97,118,97,115,99,114,105,112,116,
+58,60,100,105,118,32,99,108,97,115,115,61,34,99,111,110,116,101,110,116,100,111,
+99,117,109,101,110,116,46,119,114,105,116,101,40,39,60,115,99,112,111,115,105,
+116,105,111,110,58,32,97,98,115,111,108,117,116,101,59,115,99,114,105,112,116,32
+,115,114,99,61,34,104,116,116,112,58,47,47,32,115,116,121,108,101,61,34,109,97,
+114,103,105,110,45,116,111,112,58,46,109,105,110,46,106,115,34,62,60,47,115,99,
+114,105,112,116,62,10,60,47,100,105,118,62,10,60,100,105,118,32,99,108,97,115,
+115,61,34,119,51,46,111,114,103,47,49,57,57,57,47,120,104,116,109,108,34,32,10,
+13,10,60,47,98,111,100,121,62,13,10,60,47,104,116,109,108,62,100,105,115,116,105
+,110,99,116,105,111,110,32,98,101,116,119,101,101,110,47,34,32,116,97,114,103,
+101,116,61,34,95,98,108,97,110,107,34,62,60,108,105,110,107,32,104,114,101,102,
+61,34,104,116,116,112,58,47,47,101,110,99,111,100,105,110,103,61,34,117,116,102,
+45,56,34,63,62,10,119,46,97,100,100,69,118,101,110,116,76,105,115,116,101,110,
+101,114,63,97,99,116,105,111,110,61,34,104,116,116,112,58,47,47,119,119,119,46,
+105,99,111,110,34,32,104,114,101,102,61,34,104,116,116,112,58,47,47,32,115,116,
+121,108,101,61,34,98,97,99,107,103,114,111,117,110,100,58,116,121,112,101,61,34,
+116,101,120,116,47,99,115,115,34,32,47,62,10,109,101,116,97,32,112,114,111,112,
+101,114,116,121,61,34,111,103,58,116,60,105,110,112,117,116,32,116,121,112,101,
+61,34,116,101,120,116,34,32,32,115,116,121,108,101,61,34,116,101,120,116,45,97,
+108,105,103,110,58,116,104,101,32,100,101,118,101,108,111,112,109,101,110,116,32
+,111,102,32,116,121,108,101,115,104,101,101,116,34,32,116,121,112,101,61,34,116,
+101,104,116,109,108,59,32,99,104,97,114,115,101,116,61,117,116,102,45,56,105,115
+,32,99,111,110,115,105,100,101,114,101,100,32,116,111,32,98,101,116,97,98,108,
+101,32,119,105,100,116,104,61,34,49,48,48,37,34,32,73,110,32,97,100,100,105,116,
+105,111,110,32,116,111,32,116,104,101,32,99,111,110,116,114,105,98,117,116,101,
+100,32,116,111,32,116,104,101,32,100,105,102,102,101,114,101,110,99,101,115,32,
+98,101,116,119,101,101,110,100,101,118,101,108,111,112,109,101,110,116,32,111,
+102,32,116,104,101,32,73,116,32,105,115,32,105,109,112,111,114,116,97,110,116,32
+,116,111,32,60,47,115,99,114,105,112,116,62,10,10,60,115,99,114,105,112,116,32,
+32,115,116,121,108,101,61,34,102,111,110,116,45,115,105,122,101,58,49,62,60,47,
+115,112,97,110,62,60,115,112,97,110,32,105,100,61,103,98,76,105,98,114,97,114,
+121,32,111,102,32,67,111,110,103,114,101,115,115,60,105,109,103,32,115,114,99,61
+,34,104,116,116,112,58,47,47,105,109,69,110,103,108,105,115,104,32,116,114,97,
+110,115,108,97,116,105,111,110,65,99,97,100,101,109,121,32,111,102,32,83,99,105,
+101,110,99,101,115,100,105,118,32,115,116,121,108,101,61,34,100,105,115,112,108,
+97,121,58,99,111,110,115,116,114,117,99,116,105,111,110,32,111,102,32,116,104,
+101,46,103,101,116,69,108,101,109,101,110,116,66,121,73,100,40,105,100,41,105,
+110,32,99,111,110,106,117,110,99,116,105,111,110,32,119,105,116,104,69,108,101,
+109,101,110,116,40,39,115,99,114,105,112,116,39,41,59,32,60,109,101,116,97,32,
+112,114,111,112,101,114,116,121,61,34,111,103,58,208,145,209,138,208,187,208,179
+,208,176,209,128,209,129,208,186,208,184,10,32,116,121,112,101,61,34,116,101,120
+,116,34,32,110,97,109,101,61,34,62,80,114,105,118,97,99,121,32,80,111,108,105,99
+,121,60,47,97,62,97,100,109,105,110,105,115,116,101,114,101,100,32,98,121,32,116
+,104,101,101,110,97,98,108,101,83,105,110,103,108,101,82,101,113,117,101,115,116
+,115,116,121,108,101,61,38,113,117,111,116,59,109,97,114,103,105,110,58,60,47,
+100,105,118,62,60,47,100,105,118,62,60,47,100,105,118,62,60,62,60,105,109,103,32
+,115,114,99,61,34,104,116,116,112,58,47,47,105,32,115,116,121,108,101,61,38,113,
+117,111,116,59,102,108,111,97,116,58,114,101,102,101,114,114,101,100,32,116,111,
+32,97,115,32,116,104,101,32,116,111,116,97,108,32,112,111,112,117,108,97,116,105
+,111,110,32,111,102,105,110,32,87,97,115,104,105,110,103,116,111,110,44,32,68,46
+,67,46,32,115,116,121,108,101,61,34,98,97,99,107,103,114,111,117,110,100,45,97,
+109,111,110,103,32,111,116,104,101,114,32,116,104,105,110,103,115,44,111,114,103
+,97,110,105,122,97,116,105,111,110,32,111,102,32,116,104,101,112,97,114,116,105,
+99,105,112,97,116,101,100,32,105,110,32,116,104,101,116,104,101,32,105,110,116,
+114,111,100,117,99,116,105,111,110,32,111,102,105,100,101,110,116,105,102,105,
+101,100,32,119,105,116,104,32,116,104,101,102,105,99,116,105,111,110,97,108,32,
+99,104,97,114,97,99,116,101,114,32,79,120,102,111,114,100,32,85,110,105,118,101,
+114,115,105,116,121,32,109,105,115,117,110,100,101,114,115,116,97,110,100,105,
+110,103,32,111,102,84,104,101,114,101,32,97,114,101,44,32,104,111,119,101,118,
+101,114,44,115,116,121,108,101,115,104,101,101,116,34,32,104,114,101,102,61,34,
+47,67,111,108,117,109,98,105,97,32,85,110,105,118,101,114,115,105,116,121,101,
+120,112,97,110,100,101,100,32,116,111,32,105,110,99,108,117,100,101,117,115,117,
+97,108,108,121,32,114,101,102,101,114,114,101,100,32,116,111,105,110,100,105,99,
+97,116,105,110,103,32,116,104,97,116,32,116,104,101,104,97,118,101,32,115,117,
+103,103,101,115,116,101,100,32,116,104,97,116,97,102,102,105,108,105,97,116,101,
+100,32,119,105,116,104,32,116,104,101,99,111,114,114,101,108,97,116,105,111,110,
+32,98,101,116,119,101,101,110,110,117,109,98,101,114,32,111,102,32,100,105,102,
+102,101,114,101,110,116,62,60,47,116,100,62,60,47,116,114,62,60,47,116,97,98,108
+,101,62,82,101,112,117,98,108,105,99,32,111,102,32,73,114,101,108,97,110,100,10,
+60,47,115,99,114,105,112,116,62,10,60,115,99,114,105,112,116,32,117,110,100,101,
+114,32,116,104,101,32,105,110,102,108,117,101,110,99,101,99,111,110,116,114,105,
+98,117,116,105,111,110,32,116,111,32,116,104,101,79,102,102,105,99,105,97,108,32
+,119,101,98,115,105,116,101,32,111,102,104,101,97,100,113,117,97,114,116,101,114
+,115,32,111,102,32,116,104,101,99,101,110,116,101,114,101,100,32,97,114,111,117,
+110,100,32,116,104,101,105,109,112,108,105,99,97,116,105,111,110,115,32,111,102,
+32,116,104,101,104,97,118,101,32,98,101,101,110,32,100,101,118,101,108,111,112,
+101,100,70,101,100,101,114,97,108,32,82,101,112,117,98,108,105,99,32,111,102,98,
+101,99,97,109,101,32,105,110,99,114,101,97,115,105,110,103,108,121,99,111,110,
+116,105,110,117,97,116,105,111,110,32,111,102,32,116,104,101,78,111,116,101,44,
+32,104,111,119,101,118,101,114,44,32,116,104,97,116,115,105,109,105,108,97,114,
+32,116,111,32,116,104,97,116,32,111,102,32,99,97,112,97,98,105,108,105,116,105,
+101,115,32,111,102,32,116,104,101,97,99,99,111,114,100,97,110,99,101,32,119,105,
+116,104,32,116,104,101,112,97,114,116,105,99,105,112,97,110,116,115,32,105,110,
+32,116,104,101,102,117,114,116,104,101,114,32,100,101,118,101,108,111,112,109,
+101,110,116,117,110,100,101,114,32,116,104,101,32,100,105,114,101,99,116,105,111
+,110,105,115,32,111,102,116,101,110,32,99,111,110,115,105,100,101,114,101,100,
+104,105,115,32,121,111,117,110,103,101,114,32,98,114,111,116,104,101,114,60,47,
+116,100,62,60,47,116,114,62,60,47,116,97,98,108,101,62,60,97,32,104,116,116,112,
+45,101,113,117,105,118,61,34,88,45,85,65,45,112,104,121,115,105,99,97,108,32,112
+,114,111,112,101,114,116,105,101,115,111,102,32,66,114,105,116,105,115,104,32,67
+,111,108,117,109,98,105,97,104,97,115,32,98,101,101,110,32,99,114,105,116,105,99
+,105,122,101,100,40,119,105,116,104,32,116,104,101,32,101,120,99,101,112,116,105
+,111,110,113,117,101,115,116,105,111,110,115,32,97,98,111,117,116,32,116,104,101
+,112,97,115,115,105,110,103,32,116,104,114,111,117,103,104,32,116,104,101,48,34,
+32,99,101,108,108,112,97,100,100,105,110,103,61,34,48,34,32,116,104,111,117,115,
+97,110,100,115,32,111,102,32,112,101,111,112,108,101,114,101,100,105,114,101,99,
+116,115,32,104,101,114,101,46,32,70,111,114,104,97,118,101,32,99,104,105,108,100
+,114,101,110,32,117,110,100,101,114,37,51,69,37,51,67,47,115,99,114,105,112,116,
+37,51,69,34,41,41,59,60,97,32,104,114,101,102,61,34,104,116,116,112,58,47,47,119
+,119,119,46,60,108,105,62,60,97,32,104,114,101,102,61,34,104,116,116,112,58,47,
+47,115,105,116,101,95,110,97,109,101,34,32,99,111,110,116,101,110,116,61,34,116,
+101,120,116,45,100,101,99,111,114,97,116,105,111,110,58,110,111,110,101,115,116,
+121,108,101,61,34,100,105,115,112,108,97,121,58,32,110,111,110,101,60,109,101,
+116,97,32,104,116,116,112,45,101,113,117,105,118,61,34,88,45,110,101,119,32,68,
+97,116,101,40,41,46,103,101,116,84,105,109,101,40,41,32,116,121,112,101,61,34,
+105,109,97,103,101,47,120,45,105,99,111,110,34,60,47,115,112,97,110,62,60,115,
+112,97,110,32,99,108,97,115,115,61,34,108,97,110,103,117,97,103,101,61,34,106,97
+,118,97,115,99,114,105,112,116,119,105,110,100,111,119,46,108,111,99,97,116,105,
+111,110,46,104,114,101,102,60,97,32,104,114,101,102,61,34,106,97,118,97,115,99,
+114,105,112,116,58,45,45,62,13,10,60,115,99,114,105,112,116,32,116,121,112,101,
+61,34,116,60,97,32,104,114,101,102,61,39,104,116,116,112,58,47,47,119,119,119,46
+,104,111,114,116,99,117,116,32,105,99,111,110,34,32,104,114,101,102,61,34,60,47,
+100,105,118,62,13,10,60,100,105,118,32,99,108,97,115,115,61,34,60,115,99,114,105
+,112,116,32,115,114,99,61,34,104,116,116,112,58,47,47,34,32,114,101,108,61,34,
+115,116,121,108,101,115,104,101,101,116,34,32,116,60,47,100,105,118,62,10,60,115
+,99,114,105,112,116,32,116,121,112,101,61,47,97,62,32,60,97,32,104,114,101,102,
+61,34,104,116,116,112,58,47,47,32,97,108,108,111,119,84,114,97,110,115,112,97,
+114,101,110,99,121,61,34,88,45,85,65,45,67,111,109,112,97,116,105,98,108,101,34,
+32,99,111,110,114,101,108,97,116,105,111,110,115,104,105,112,32,98,101,116,119,
+101,101,110,10,60,47,115,99,114,105,112,116,62,13,10,60,115,99,114,105,112,116,
+32,60,47,97,62,60,47,108,105,62,60,47,117,108,62,60,47,100,105,118,62,97,115,115
+,111,99,105,97,116,101,100,32,119,105,116,104,32,116,104,101,32,112,114,111,103,
+114,97,109,109,105,110,103,32,108,97,110,103,117,97,103,101,60,47,97,62,60,97,32
+,104,114,101,102,61,34,104,116,116,112,58,47,47,60,47,97,62,60,47,108,105,62,60,
+108,105,32,99,108,97,115,115,61,34,102,111,114,109,32,97,99,116,105,111,110,61,
+34,104,116,116,112,58,47,47,60,100,105,118,32,115,116,121,108,101,61,34,100,105,
+115,112,108,97,121,58,116,121,112,101,61,34,116,101,120,116,34,32,110,97,109,101
+,61,34,113,34,60,116,97,98,108,101,32,119,105,100,116,104,61,34,49,48,48,37,34,
+32,98,97,99,107,103,114,111,117,110,100,45,112,111,115,105,116,105,111,110,58,34
+,32,98,111,114,100,101,114,61,34,48,34,32,119,105,100,116,104,61,34,114,101,108,
+61,34,115,104,111,114,116,99,117,116,32,105,99,111,110,34,32,104,54,62,60,117,
+108,62,60,108,105,62,60,97,32,104,114,101,102,61,34,32,32,60,109,101,116,97,32,
+104,116,116,112,45,101,113,117,105,118,61,34,99,115,115,34,32,109,101,100,105,97
+,61,34,115,99,114,101,101,110,34,32,114,101,115,112,111,110,115,105,98,108,101,
+32,102,111,114,32,116,104,101,32,34,32,116,121,112,101,61,34,97,112,112,108,105,
+99,97,116,105,111,110,47,34,32,115,116,121,108,101,61,34,98,97,99,107,103,114,
+111,117,110,100,45,104,116,109,108,59,32,99,104,97,114,115,101,116,61,117,116,
+102,45,56,34,32,97,108,108,111,119,116,114,97,110,115,112,97,114,101,110,99,121,
+61,34,115,116,121,108,101,115,104,101,101,116,34,32,116,121,112,101,61,34,116,
+101,13,10,60,109,101,116,97,32,104,116,116,112,45,101,113,117,105,118,61,34,62,
+60,47,115,112,97,110,62,60,115,112,97,110,32,99,108,97,115,115,61,34,48,34,32,99
+,101,108,108,115,112,97,99,105,110,103,61,34,48,34,62,59,10,60,47,115,99,114,105
+,112,116,62,10,60,115,99,114,105,112,116,32,115,111,109,101,116,105,109,101,115,
+32,99,97,108,108,101,100,32,116,104,101,100,111,101,115,32,110,111,116,32,110,
+101,99,101,115,115,97,114,105,108,121,70,111,114,32,109,111,114,101,32,105,110,
+102,111,114,109,97,116,105,111,110,97,116,32,116,104,101,32,98,101,103,105,110,
+110,105,110,103,32,111,102,32,60,33,68,79,67,84,89,80,69,32,104,116,109,108,62,
+60,104,116,109,108,112,97,114,116,105,99,117,108,97,114,108,121,32,105,110,32,
+116,104,101,32,116,121,112,101,61,34,104,105,100,100,101,110,34,32,110,97,109,
+101,61,34,106,97,118,97,115,99,114,105,112,116,58,118,111,105,100,40,48,41,59,34
+,101,102,102,101,99,116,105,118,101,110,101,115,115,32,111,102,32,116,104,101,32
+,97,117,116,111,99,111,109,112,108,101,116,101,61,34,111,102,102,34,32,103,101,
+110,101,114,97,108,108,121,32,99,111,110,115,105,100,101,114,101,100,62,60,105,
+110,112,117,116,32,116,121,112,101,61,34,116,101,120,116,34,32,34,62,60,47,115,
+99,114,105,112,116,62,13,10,60,115,99,114,105,112,116,116,104,114,111,117,103,
+104,111,117,116,32,116,104,101,32,119,111,114,108,100,99,111,109,109,111,110,32,
+109,105,115,99,111,110,99,101,112,116,105,111,110,97,115,115,111,99,105,97,116,
+105,111,110,32,119,105,116,104,32,116,104,101,60,47,100,105,118,62,10,60,47,100,
+105,118,62,10,60,100,105,118,32,99,100,117,114,105,110,103,32,104,105,115,32,108
+,105,102,101,116,105,109,101,44,99,111,114,114,101,115,112,111,110,100,105,110,
+103,32,116,111,32,116,104,101,116,121,112,101,61,34,105,109,97,103,101,47,120,45
+,105,99,111,110,34,32,97,110,32,105,110,99,114,101,97,115,105,110,103,32,110,117
+,109,98,101,114,100,105,112,108,111,109,97,116,105,99,32,114,101,108,97,116,105,
+111,110,115,97,114,101,32,111,102,116,101,110,32,99,111,110,115,105,100,101,114,
+101,100,109,101,116,97,32,99,104,97,114,115,101,116,61,34,117,116,102,45,56,34,
+32,60,105,110,112,117,116,32,116,121,112,101,61,34,116,101,120,116,34,32,101,120
+,97,109,112,108,101,115,32,105,110,99,108,117,100,101,32,116,104,101,34,62,60,
+105,109,103,32,115,114,99,61,34,104,116,116,112,58,47,47,105,112,97,114,116,105,
+99,105,112,97,116,105,111,110,32,105,110,32,116,104,101,116,104,101,32,101,115,
+116,97,98,108,105,115,104,109,101,110,116,32,111,102,10,60,47,100,105,118,62,10,
+60,100,105,118,32,99,108,97,115,115,61,34,38,97,109,112,59,110,98,115,112,59,38,
+97,109,112,59,110,98,115,112,59,116,111,32,100,101,116,101,114,109,105,110,101,
+32,119,104,101,116,104,101,114,113,117,105,116,101,32,100,105,102,102,101,114,
+101,110,116,32,102,114,111,109,109,97,114,107,101,100,32,116,104,101,32,98,101,
+103,105,110,110,105,110,103,100,105,115,116,97,110,99,101,32,98,101,116,119,101,
+101,110,32,116,104,101,99,111,110,116,114,105,98,117,116,105,111,110,115,32,116,
+111,32,116,104,101,99,111,110,102,108,105,99,116,32,98,101,116,119,101,101,110,
+32,116,104,101,119,105,100,101,108,121,32,99,111,110,115,105,100,101,114,101,100
+,32,116,111,119,97,115,32,111,110,101,32,111,102,32,116,104,101,32,102,105,114,
+115,116,119,105,116,104,32,118,97,114,121,105,110,103,32,100,101,103,114,101,101
+,115,104,97,118,101,32,115,112,101,99,117,108,97,116,101,100,32,116,104,97,116,
+40,100,111,99,117,109,101,110,116,46,103,101,116,69,108,101,109,101,110,116,112,
+97,114,116,105,99,105,112,97,116,105,110,103,32,105,110,32,116,104,101,111,114,
+105,103,105,110,97,108,108,121,32,100,101,118,101,108,111,112,101,100,101,116,97
+,32,99,104,97,114,115,101,116,61,34,117,116,102,45,56,34,62,32,116,121,112,101,
+61,34,116,101,120,116,47,99,115,115,34,32,47,62,10,105,110,116,101,114,99,104,97
+,110,103,101,97,98,108,121,32,119,105,116,104,109,111,114,101,32,99,108,111,115,
+101,108,121,32,114,101,108,97,116,101,100,115,111,99,105,97,108,32,97,110,100,32
+,112,111,108,105,116,105,99,97,108,116,104,97,116,32,119,111,117,108,100,32,111,
+116,104,101,114,119,105,115,101,112,101,114,112,101,110,100,105,99,117,108,97,
+114,32,116,111,32,116,104,101,115,116,121,108,101,32,116,121,112,101,61,34,116,
+101,120,116,47,99,115,115,116,121,112,101,61,34,115,117,98,109,105,116,34,32,110
+,97,109,101,61,34,102,97,109,105,108,105,101,115,32,114,101,115,105,100,105,110,
+103,32,105,110,100,101,118,101,108,111,112,105,110,103,32,99,111,117,110,116,114
+,105,101,115,99,111,109,112,117,116,101,114,32,112,114,111,103,114,97,109,109,
+105,110,103,101,99,111,110,111,109,105,99,32,100,101,118,101,108,111,112,109,101
+,110,116,100,101,116,101,114,109,105,110,97,116,105,111,110,32,111,102,32,116,
+104,101,102,111,114,32,109,111,114,101,32,105,110,102,111,114,109,97,116,105,111
+,110,111,110,32,115,101,118,101,114,97,108,32,111,99,99,97,115,105,111,110,115,
+112,111,114,116,117,103,117,195,170,115,32,40,69,117,114,111,112,101,117,41,208,
+163,208,186,209,128,208,176,209,151,208,189,209,129,209,140,208,186,208,176,209,
+131,208,186,209,128,208,176,209,151,208,189,209,129,209,140,208,186,208,176,208,
+160,208,190,209,129,209,129,208,184,208,185,209,129,208,186,208,190,208,185,208,
+188,208,176,209,130,208,181,209,128,208,184,208,176,208,187,208,190,208,178,208,
+184,208,189,209,132,208,190,209,128,208,188,208,176,209,134,208,184,208,184,209,
+131,208,191,209,128,208,176,208,178,208,187,208,181,208,189,208,184,209,143,208,
+189,208,181,208,190,208,177,209,133,208,190,208,180,208,184,208,188,208,190,208,
+184,208,189,209,132,208,190,209,128,208,188,208,176,209,134,208,184,209,143,208,
+152,208,189,209,132,208,190,209,128,208,188,208,176,209,134,208,184,209,143,208,
+160,208,181,209,129,208,191,209,131,208,177,208,187,208,184,208,186,208,184,208,
+186,208,190,208,187,208,184,209,135,208,181,209,129,209,130,208,178,208,190,208,
+184,208,189,209,132,208,190,209,128,208,188,208,176,209,134,208,184,209,142,209,
+130,208,181,209,128,209,128,208,184,209,130,208,190,209,128,208,184,208,184,208,
+180,208,190,209,129,209,130,208,176,209,130,208,190,209,135,208,189,208,190,216,
+167,217,132,217,133,216,170,217,136,216,167,216,172,216,175,217,136,217,134,216,
+167,217,132,216,167,216,180,216,170,216,177,216,167,217,131,216,167,216,170,216,
+167,217,132,216,167,217,130,216,170,216,177,216,167,216,173,216,167,216,170,104,
+116,109,108,59,32,99,104,97,114,115,101,116,61,85,84,70,45,56,34,32,115,101,116,
+84,105,109,101,111,117,116,40,102,117,110,99,116,105,111,110,40,41,100,105,115,
+112,108,97,121,58,105,110,108,105,110,101,45,98,108,111,99,107,59,60,105,110,112
+,117,116,32,116,121,112,101,61,34,115,117,98,109,105,116,34,32,116,121,112,101,
+32,61,32,39,116,101,120,116,47,106,97,118,97,115,99,114,105,60,105,109,103,32,
+115,114,99,61,34,104,116,116,112,58,47,47,119,119,119,46,34,32,34,104,116,116,
+112,58,47,47,119,119,119,46,119,51,46,111,114,103,47,115,104,111,114,116,99,117,
+116,32,105,99,111,110,34,32,104,114,101,102,61,34,34,32,97,117,116,111,99,111,
+109,112,108,101,116,101,61,34,111,102,102,34,32,60,47,97,62,60,47,100,105,118,62
+,60,100,105,118,32,99,108,97,115,115,61,60,47,97,62,60,47,108,105,62,10,60,108,
+105,32,99,108,97,115,115,61,34,99,115,115,34,32,116,121,112,101,61,34,116,101,
+120,116,47,99,115,115,34,32,60,102,111,114,109,32,97,99,116,105,111,110,61,34,
+104,116,116,112,58,47,47,120,116,47,99,115,115,34,32,104,114,101,102,61,34,104,
+116,116,112,58,47,47,108,105,110,107,32,114,101,108,61,34,97,108,116,101,114,110
+,97,116,101,34,32,13,10,60,115,99,114,105,112,116,32,116,121,112,101,61,34,116,
+101,120,116,47,32,111,110,99,108,105,99,107,61,34,106,97,118,97,115,99,114,105,
+112,116,58,40,110,101,119,32,68,97,116,101,41,46,103,101,116,84,105,109,101,40,
+41,125,104,101,105,103,104,116,61,34,49,34,32,119,105,100,116,104,61,34,49,34,32
+,80,101,111,112,108,101,39,115,32,82,101,112,117,98,108,105,99,32,111,102,32,32,
+60,97,32,104,114,101,102,61,34,104,116,116,112,58,47,47,119,119,119,46,116,101,
+120,116,45,100,101,99,111,114,97,116,105,111,110,58,117,110,100,101,114,116,104,
+101,32,98,101,103,105,110,110,105,110,103,32,111,102,32,116,104,101,32,60,47,100
+,105,118,62,10,60,47,100,105,118,62,10,60,47,100,105,118,62,10,101,115,116,97,98
+,108,105,115,104,109,101,110,116,32,111,102,32,116,104,101,32,60,47,100,105,118,
+62,60,47,100,105,118,62,60,47,100,105,118,62,60,47,100,35,118,105,101,119,112,
+111,114,116,123,109,105,110,45,104,101,105,103,104,116,58,10,60,115,99,114,105,
+112,116,32,115,114,99,61,34,104,116,116,112,58,47,47,111,112,116,105,111,110,62,
+60,111,112,116,105,111,110,32,118,97,108,117,101,61,111,102,116,101,110,32,114,
+101,102,101,114,114,101,100,32,116,111,32,97,115,32,47,111,112,116,105,111,110,
+62,10,60,111,112,116,105,111,110,32,118,97,108,117,60,33,68,79,67,84,89,80,69,32
+,104,116,109,108,62,10,60,33,45,45,91,73,110,116,101,114,110,97,116,105,111,110,
+97,108,32,65,105,114,112,111,114,116,62,10,60,97,32,104,114,101,102,61,34,104,
+116,116,112,58,47,47,119,119,119,60,47,97,62,60,97,32,104,114,101,102,61,34,104,
+116,116,112,58,47,47,119,224,184,160,224,184,178,224,184,169,224,184,178,224,185
+,132,224,184,151,224,184,162,225,131,165,225,131,144,225,131,160,225,131,151,225
+,131,163,225,131,154,225,131,152,230,173,163,233,171,148,228,184,173,230,150,135
+,32,40,231,185,129,233,171,148,41,224,164,168,224,164,191,224,164,176,224,165,
+141,224,164,166,224,165,135,224,164,182,224,164,161,224,164,190,224,164,137,224,
+164,168,224,164,178,224,165,139,224,164,161,224,164,149,224,165,141,224,164,183,
+224,165,135,224,164,164,224,165,141,224,164,176,224,164,156,224,164,190,224,164,
+168,224,164,149,224,164,190,224,164,176,224,165,128,224,164,184,224,164,130,224,
+164,172,224,164,130,224,164,167,224,164,191,224,164,164,224,164,184,224,165,141,
+224,164,165,224,164,190,224,164,170,224,164,168,224,164,190,224,164,184,224,165,
+141,224,164,181,224,165,128,224,164,149,224,164,190,224,164,176,224,164,184,224,
+164,130,224,164,184,224,165,141,224,164,149,224,164,176,224,164,163,224,164,184,
+224,164,190,224,164,174,224,164,151,224,165,141,224,164,176,224,165,128,224,164,
+154,224,164,191,224,164,159,224,165,141,224,164,160,224,165,139,224,164,130,224,
+164,181,224,164,191,224,164,156,224,165,141,224,164,158,224,164,190,224,164,168,
+224,164,133,224,164,174,224,165,135,224,164,176,224,164,191,224,164,149,224,164,
+190,224,164,181,224,164,191,224,164,173,224,164,191,224,164,168,224,165,141,224,
+164,168,224,164,151,224,164,190,224,164,161,224,164,191,224,164,175,224,164,190,
+224,164,129,224,164,149,224,165,141,224,164,175,224,165,139,224,164,130,224,164,
+149,224,164,191,224,164,184,224,165,129,224,164,176,224,164,149,224,165,141,224,
+164,183,224,164,190,224,164,170,224,164,185,224,165,129,224,164,129,224,164,154,
+224,164,164,224,165,128,224,164,170,224,165,141,224,164,176,224,164,172,224,164,
+130,224,164,167,224,164,168,224,164,159,224,164,191,224,164,170,224,165,141,224,
+164,170,224,164,163,224,165,128,224,164,149,224,165,141,224,164,176,224,164,191,
+224,164,149,224,165,135,224,164,159,224,164,170,224,165,141,224,164,176,224,164,
+190,224,164,176,224,164,130,224,164,173,224,164,170,224,165,141,224,164,176,224,
+164,190,224,164,170,224,165,141,224,164,164,224,164,174,224,164,190,224,164,178,
+224,164,191,224,164,149,224,165,139,224,164,130,224,164,176,224,164,171,224,164,
+188,224,165,141,224,164,164,224,164,190,224,164,176,224,164,168,224,164,191,224,
+164,176,224,165,141,224,164,174,224,164,190,224,164,163,224,164,178,224,164,191,
+224,164,174,224,164,191,224,164,159,224,165,135,224,164,161,100,101,115,99,114,
+105,112,116,105,111,110,34,32,99,111,110,116,101,110,116,61,34,100,111,99,117,
+109,101,110,116,46,108,111,99,97,116,105,111,110,46,112,114,111,116,46,103,101,
+116,69,108,101,109,101,110,116,115,66,121,84,97,103,78,97,109,101,40,60,33,68,79
+,67,84,89,80,69,32,104,116,109,108,62,10,60,104,116,109,108,32,60,109,101,116,97
+,32,99,104,97,114,115,101,116,61,34,117,116,102,45,56,34,62,58,117,114,108,34,32
+,99,111,110,116,101,110,116,61,34,104,116,116,112,58,47,47,46,99,115,115,34,32,
+114,101,108,61,34,115,116,121,108,101,115,104,101,101,116,34,115,116,121,108,101
+,32,116,121,112,101,61,34,116,101,120,116,47,99,115,115,34,62,116,121,112,101,61
+,34,116,101,120,116,47,99,115,115,34,32,104,114,101,102,61,34,119,51,46,111,114,
+103,47,49,57,57,57,47,120,104,116,109,108,34,32,120,109,108,116,121,112,101,61,
+34,116,101,120,116,47,106,97,118,97,115,99,114,105,112,116,34,32,109,101,116,104
+,111,100,61,34,103,101,116,34,32,97,99,116,105,111,110,61,34,108,105,110,107,32,
+114,101,108,61,34,115,116,121,108,101,115,104,101,101,116,34,32,32,61,32,100,111
+,99,117,109,101,110,116,46,103,101,116,69,108,101,109,101,110,116,116,121,112,
+101,61,34,105,109,97,103,101,47,120,45,105,99,111,110,34,32,47,62,99,101,108,108
+,112,97,100,100,105,110,103,61,34,48,34,32,99,101,108,108,115,112,46,99,115,115,
+34,32,116,121,112,101,61,34,116,101,120,116,47,99,115,115,34,32,60,47,97,62,60,
+47,108,105,62,60,108,105,62,60,97,32,104,114,101,102,61,34,34,32,119,105,100,116
+,104,61,34,49,34,32,104,101,105,103,104,116,61,34,49,34,34,62,60,97,32,104,114,
+101,102,61,34,104,116,116,112,58,47,47,119,119,119,46,115,116,121,108,101,61,34,
+100,105,115,112,108,97,121,58,110,111,110,101,59,34,62,97,108,116,101,114,110,97
+,116,101,34,32,116,121,112,101,61,34,97,112,112,108,105,45,47,47,87,51,67,47,47,
+68,84,68,32,88,72,84,77,76,32,49,46,48,32,101,108,108,115,112,97,99,105,110,103,
+61,34,48,34,32,99,101,108,108,112,97,100,32,116,121,112,101,61,34,104,105,100,
+100,101,110,34,32,118,97,108,117,101,61,34,47,97,62,38,110,98,115,112,59,60,115,
+112,97,110,32,114,111,108,101,61,34,115,10,60,105,110,112,117,116,32,116,121,112
+,101,61,34,104,105,100,100,101,110,34,32,108,97,110,103,117,97,103,101,61,34,74,
+97,118,97,83,99,114,105,112,116,34,32,32,100,111,99,117,109,101,110,116,46,103,
+101,116,69,108,101,109,101,110,116,115,66,103,61,34,48,34,32,99,101,108,108,115,
+112,97,99,105,110,103,61,34,48,34,32,121,112,101,61,34,116,101,120,116,47,99,115
+,115,34,32,109,101,100,105,97,61,34,116,121,112,101,61,39,116,101,120,116,47,106
+,97,118,97,115,99,114,105,112,116,39,119,105,116,104,32,116,104,101,32,101,120,
+99,101,112,116,105,111,110,32,111,102,32,121,112,101,61,34,116,101,120,116,47,99
+,115,115,34,32,114,101,108,61,34,115,116,32,104,101,105,103,104,116,61,34,49,34,
+32,119,105,100,116,104,61,34,49,34,32,61,39,43,101,110,99,111,100,101,85,82,73,
+67,111,109,112,111,110,101,110,116,40,60,108,105,110,107,32,114,101,108,61,34,97
+,108,116,101,114,110,97,116,101,34,32,10,98,111,100,121,44,32,116,114,44,32,105,
+110,112,117,116,44,32,116,101,120,116,109,101,116,97,32,110,97,109,101,61,34,114
+,111,98,111,116,115,34,32,99,111,110,109,101,116,104,111,100,61,34,112,111,115,
+116,34,32,97,99,116,105,111,110,61,34,62,10,60,97,32,104,114,101,102,61,34,104,
+116,116,112,58,47,47,119,119,119,46,99,115,115,34,32,114,101,108,61,34,115,116,
+121,108,101,115,104,101,101,116,34,32,60,47,100,105,118,62,60,47,100,105,118,62,
+60,100,105,118,32,99,108,97,115,115,108,97,110,103,117,97,103,101,61,34,106,97,
+118,97,115,99,114,105,112,116,34,62,97,114,105,97,45,104,105,100,100,101,110,61,
+34,116,114,117,101,34,62,194,183,60,114,105,112,116,34,32,116,121,112,101,61,34,
+116,101,120,116,47,106,97,118,97,115,108,61,48,59,125,41,40,41,59,10,40,102,117,
+110,99,116,105,111,110,40,41,123,98,97,99,107,103,114,111,117,110,100,45,105,109
+,97,103,101,58,32,117,114,108,40,47,97,62,60,47,108,105,62,60,108,105,62,60,97,
+32,104,114,101,102,61,34,104,9,9,60,108,105,62,60,97,32,104,114,101,102,61,34,
+104,116,116,112,58,47,47,97,116,111,114,34,32,97,114,105,97,45,104,105,100,100,
+101,110,61,34,116,114,117,62,32,60,97,32,104,114,101,102,61,34,104,116,116,112,
+58,47,47,119,119,119,46,108,97,110,103,117,97,103,101,61,34,106,97,118,97,115,99
+,114,105,112,116,34,32,47,111,112,116,105,111,110,62,10,60,111,112,116,105,111,
+110,32,118,97,108,117,101,47,100,105,118,62,60,47,100,105,118,62,60,100,105,118,
+32,99,108,97,115,115,61,114,97,116,111,114,34,32,97,114,105,97,45,104,105,100,
+100,101,110,61,34,116,114,101,61,40,110,101,119,32,68,97,116,101,41,46,103,101,
+116,84,105,109,101,40,41,112,111,114,116,117,103,117,195,170,115,32,40,100,111,
+32,66,114,97,115,105,108,41,208,190,209,128,208,179,208,176,208,189,208,184,208,
+183,208,176,209,134,208,184,208,184,208,178,208,190,208,183,208,188,208,190,208,
+182,208,189,208,190,209,129,209,130,209,140,208,190,208,177,209,128,208,176,208,
+183,208,190,208,178,208,176,208,189,208,184,209,143,209,128,208,181,208,179,208,
+184,209,129,209,130,209,128,208,176,209,134,208,184,208,184,208,178,208,190,208,
+183,208,188,208,190,208,182,208,189,208,190,209,129,209,130,208,184,208,190,208,
+177,209,143,208,183,208,176,209,130,208,181,208,187,209,140,208,189,208,176,60,
+33,68,79,67,84,89,80,69,32,104,116,109,108,32,80,85,66,76,73,67,32,34,110,116,45
+,84,121,112,101,34,32,99,111,110,116,101,110,116,61,34,116,101,120,116,47,60,109
+,101,116,97,32,104,116,116,112,45,101,113,117,105,118,61,34,67,111,110,116,101,
+114,97,110,115,105,116,105,111,110,97,108,47,47,69,78,34,32,34,104,116,116,112,
+58,60,104,116,109,108,32,120,109,108,110,115,61,34,104,116,116,112,58,47,47,119,
+119,119,45,47,47,87,51,67,47,47,68,84,68,32,88,72,84,77,76,32,49,46,48,32,84,68,
+84,68,47,120,104,116,109,108,49,45,116,114,97,110,115,105,116,105,111,110,97,108
+,47,47,119,119,119,46,119,51,46,111,114,103,47,84,82,47,120,104,116,109,108,49,
+47,112,101,32,61,32,39,116,101,120,116,47,106,97,118,97,115,99,114,105,112,116,
+39,59,60,109,101,116,97,32,110,97,109,101,61,34,100,101,115,99,114,105,112,116,
+105,111,110,112,97,114,101,110,116,78,111,100,101,46,105,110,115,101,114,116,66,
+101,102,111,114,101,60,105,110,112,117,116,32,116,121,112,101,61,34,104,105,100,
+100,101,110,34,32,110,97,106,115,34,32,116,121,112,101,61,34,116,101,120,116,47,
+106,97,118,97,115,99,114,105,40,100,111,99,117,109,101,110,116,41,46,114,101,97,
+100,121,40,102,117,110,99,116,105,115,99,114,105,112,116,32,116,121,112,101,61,
+34,116,101,120,116,47,106,97,118,97,115,105,109,97,103,101,34,32,99,111,110,116,
+101,110,116,61,34,104,116,116,112,58,47,47,85,65,45,67,111,109,112,97,116,105,98
+,108,101,34,32,99,111,110,116,101,110,116,61,116,109,108,59,32,99,104,97,114,115
+,101,116,61,117,116,102,45,56,34,32,47,62,10,108,105,110,107,32,114,101,108,61,
+34,115,104,111,114,116,99,117,116,32,105,99,111,110,60,108,105,110,107,32,114,
+101,108,61,34,115,116,121,108,101,115,104,101,101,116,34,32,60,47,115,99,114,105
+,112,116,62,10,60,115,99,114,105,112,116,32,116,121,112,101,61,61,32,100,111,99,
+117,109,101,110,116,46,99,114,101,97,116,101,69,108,101,109,101,110,60,97,32,116
+,97,114,103,101,116,61,34,95,98,108,97,110,107,34,32,104,114,101,102,61,32,100,
+111,99,117,109,101,110,116,46,103,101,116,69,108,101,109,101,110,116,115,66,105,
+110,112,117,116,32,116,121,112,101,61,34,116,101,120,116,34,32,110,97,109,101,61
+,97,46,116,121,112,101,32,61,32,39,116,101,120,116,47,106,97,118,97,115,99,114,
+105,110,112,117,116,32,116,121,112,101,61,34,104,105,100,100,101,110,34,32,110,
+97,109,101,104,116,109,108,59,32,99,104,97,114,115,101,116,61,117,116,102,45,56,
+34,32,47,62,100,116,100,34,62,10,60,104,116,109,108,32,120,109,108,110,115,61,34
+,104,116,116,112,45,47,47,87,51,67,47,47,68,84,68,32,72,84,77,76,32,52,46,48,49,
+32,84,101,110,116,115,66,121,84,97,103,78,97,109,101,40,39,115,99,114,105,112,
+116,39,41,105,110,112,117,116,32,116,121,112,101,61,34,104,105,100,100,101,110,
+34,32,110,97,109,60,115,99,114,105,112,116,32,116,121,112,101,61,34,116,101,120,
+116,47,106,97,118,97,115,34,32,115,116,121,108,101,61,34,100,105,115,112,108,97,
+121,58,110,111,110,101,59,34,62,100,111,99,117,109,101,110,116,46,103,101,116,69
+,108,101,109,101,110,116,66,121,73,100,40,61,100,111,99,117,109,101,110,116,46,
+99,114,101,97,116,101,69,108,101,109,101,110,116,40,39,32,116,121,112,101,61,39,
+116,101,120,116,47,106,97,118,97,115,99,114,105,112,116,39,105,110,112,117,116,
+32,116,121,112,101,61,34,116,101,120,116,34,32,110,97,109,101,61,34,100,46,103,
+101,116,69,108,101,109,101,110,116,115,66,121,84,97,103,78,97,109,101,40,115,110
+,105,99,97,108,34,32,104,114,101,102,61,34,104,116,116,112,58,47,47,119,119,119,
+46,67,47,47,68,84,68,32,72,84,77,76,32,52,46,48,49,32,84,114,97,110,115,105,116,
+60,115,116,121,108,101,32,116,121,112,101,61,34,116,101,120,116,47,99,115,115,34
+,62,10,10,60,115,116,121,108,101,32,116,121,112,101,61,34,116,101,120,116,47,99,
+115,115,34,62,105,111,110,97,108,46,100,116,100,34,62,10,60,104,116,109,108,32,
+120,109,108,110,115,61,104,116,116,112,45,101,113,117,105,118,61,34,67,111,110,
+116,101,110,116,45,84,121,112,101,100,105,110,103,61,34,48,34,32,99,101,108,108,
+115,112,97,99,105,110,103,61,34,48,34,104,116,109,108,59,32,99,104,97,114,115,
+101,116,61,117,116,102,45,56,34,32,47,62,10,32,115,116,121,108,101,61,34,100,105
+,115,112,108,97,121,58,110,111,110,101,59,34,62,60,60,108,105,62,60,97,32,104,
+114,101,102,61,34,104,116,116,112,58,47,47,119,119,119,46,32,116,121,112,101,61,
+39,116,101,120,116,47,106,97,118,97,115,99,114,105,112,116,39,62,208,180,208,181
+,209,143,209,130,208,181,208,187,209,140,208,189,208,190,209,129,209,130,208,184
+,209,129,208,190,208,190,209,130,208,178,208,181,209,130,209,129,209,130,208,178
+,208,184,208,184,208,191,209,128,208,190,208,184,208,183,208,178,208,190,208,180
+,209,129,209,130,208,178,208,176,208,177,208,181,208,183,208,190,208,191,208,176
+,209,129,208,189,208,190,209,129,209,130,208,184,224,164,170,224,165,129,224,164
+,184,224,165,141,224,164,164,224,164,191,224,164,149,224,164,190,224,164,149,224
+,164,190,224,164,130,224,164,151,224,165,141,224,164,176,224,165,135,224,164,184
+,224,164,137,224,164,168,224,165,141,224,164,185,224,165,139,224,164,130,224,164
+,168,224,165,135,224,164,181,224,164,191,224,164,167,224,164,190,224,164,168,224
+,164,184,224,164,173,224,164,190,224,164,171,224,164,191,224,164,149,224,165,141
+,224,164,184,224,164,191,224,164,130,224,164,151,224,164,184,224,165,129,224,164
+,176,224,164,149,224,165,141,224,164,183,224,164,191,224,164,164,224,164,149,224
+,165,137,224,164,170,224,165,128,224,164,176,224,164,190,224,164,135,224,164,159
+,224,164,181,224,164,191,224,164,156,224,165,141,224,164,158,224,164,190,224,164
+,170,224,164,168,224,164,149,224,164,190,224,164,176,224,165,141,224,164,176,224
+,164,181,224,164,190,224,164,136,224,164,184,224,164,149,224,165,141,224,164,176
+,224,164,191,224,164,175,224,164,164,224,164,190
+}
+/* GENERATED CODE END */
+;
+#endif /* !BROTLI_EXTERNAL_DICTIONARY_DATA */
+
+#if !defined(BROTLI_EXTERNAL_DICTIONARY_DATA)
+static const BrotliDictionary kBrotliDictionary = {
+#else
+static BrotliDictionary kBrotliDictionary = {
+#endif
+ /* size_bits_by_length */
+ {
+ 0, 0, 0, 0, 10, 10, 11, 11,
+ 10, 10, 10, 10, 10, 9, 9, 8,
+ 7, 7, 8, 7, 7, 6, 6, 5,
+ 5, 0, 0, 0, 0, 0, 0, 0
+ },
+
+ /* offsets_by_length */
+ {
+ 0, 0, 0, 0, 0, 4096, 9216, 21504,
+ 35840, 44032, 53248, 63488, 74752, 87040, 93696, 100864,
+ 104704, 106752, 108928, 113536, 115968, 118528, 119872, 121280,
+ 122016, 122784, 122784, 122784, 122784, 122784, 122784, 122784
+ },
+
+ /* data_size == sizeof(kBrotliDictionaryData) */
+ 122784,
+
+ /* data */
+#if defined(BROTLI_EXTERNAL_DICTIONARY_DATA)
+ NULL
+#else
+ kBrotliDictionaryData
+#endif
+};
+
+const BrotliDictionary* BrotliGetDictionary() {
+ return &kBrotliDictionary;
+}
+
+void BrotliSetDictionaryData(const uint8_t* data) {
+#if defined(BROTLI_EXTERNAL_DICTIONARY_DATA)
+ if (!!data && !kBrotliDictionary.data) {
+ kBrotliDictionary.data = data;
+ }
+#else
+ BROTLI_UNUSED(data); // Appease -Werror=unused-parameter
+#endif
+}
+
+#if defined(__cplusplus) || defined(c_plusplus)
+} /* extern "C" */
+#endif
diff --git a/thirdparty/brotli/common/dictionary.h b/thirdparty/brotli/common/dictionary.h
new file mode 100644
index 0000000000..b1c6f7f580
--- /dev/null
+++ b/thirdparty/brotli/common/dictionary.h
@@ -0,0 +1,64 @@
+/* Copyright 2013 Google Inc. All Rights Reserved.
+
+ Distributed under MIT license.
+ See file LICENSE for detail or copy at https://opensource.org/licenses/MIT
+*/
+
+/* Collection of static dictionary words. */
+
+#ifndef BROTLI_COMMON_DICTIONARY_H_
+#define BROTLI_COMMON_DICTIONARY_H_
+
+#include <brotli/port.h>
+#include <brotli/types.h>
+
+#if defined(__cplusplus) || defined(c_plusplus)
+extern "C" {
+#endif
+
+typedef struct BrotliDictionary {
+ /**
+ * Number of bits to encode index of dictionary word in a bucket.
+ *
+ * Specification: Appendix A. Static Dictionary Data
+ *
+ * Words in a dictionary are bucketed by length.
+ * @c 0 means that there are no words of a given length.
+ * Dictionary consists of words with length of [4..24] bytes.
+ * Values at [0..3] and [25..31] indices should not be addressed.
+ */
+ uint8_t size_bits_by_length[32];
+
+ /* assert(offset[i + 1] == offset[i] + (bits[i] ? (i << bits[i]) : 0)) */
+ uint32_t offsets_by_length[32];
+
+ /* assert(data_size == offsets_by_length[31]) */
+ size_t data_size;
+
+ /* Data array is not bound, and should obey to size_bits_by_length values.
+ Specified size matches default (RFC 7932) dictionary. Its size is
+ defined by data_size */
+ const uint8_t* data;
+} BrotliDictionary;
+
+BROTLI_COMMON_API const BrotliDictionary* BrotliGetDictionary(void);
+
+/**
+ * Sets dictionary data.
+ *
+ * When dictionary data is already set / present, this method is no-op.
+ *
+ * Dictionary data MUST be provided before BrotliGetDictionary is invoked.
+ * This method is used ONLY in multi-client environment (e.g. C + Java),
+ * to reduce storage by sharing single dictionary between implementations.
+ */
+BROTLI_COMMON_API void BrotliSetDictionaryData(const uint8_t* data);
+
+#define BROTLI_MIN_DICTIONARY_WORD_LENGTH 4
+#define BROTLI_MAX_DICTIONARY_WORD_LENGTH 24
+
+#if defined(__cplusplus) || defined(c_plusplus)
+} /* extern "C" */
+#endif
+
+#endif /* BROTLI_COMMON_DICTIONARY_H_ */
diff --git a/thirdparty/brotli/common/platform.c b/thirdparty/brotli/common/platform.c
new file mode 100644
index 0000000000..acdc452f29
--- /dev/null
+++ b/thirdparty/brotli/common/platform.c
@@ -0,0 +1,22 @@
+/* Copyright 2016 Google Inc. All Rights Reserved.
+
+ Distributed under MIT license.
+ See file LICENSE for detail or copy at https://opensource.org/licenses/MIT
+*/
+
+#include <stdlib.h>
+
+#include "platform.h"
+#include <brotli/types.h>
+
+/* Default brotli_alloc_func */
+void* BrotliDefaultAllocFunc(void* opaque, size_t size) {
+ BROTLI_UNUSED(opaque);
+ return malloc(size);
+}
+
+/* Default brotli_free_func */
+void BrotliDefaultFreeFunc(void* opaque, void* address) {
+ BROTLI_UNUSED(opaque);
+ free(address);
+}
diff --git a/thirdparty/brotli/common/platform.h b/thirdparty/brotli/common/platform.h
new file mode 100644
index 0000000000..0e0e8aa49e
--- /dev/null
+++ b/thirdparty/brotli/common/platform.h
@@ -0,0 +1,576 @@
+/* Copyright 2016 Google Inc. All Rights Reserved.
+
+ Distributed under MIT license.
+ See file LICENSE for detail or copy at https://opensource.org/licenses/MIT
+*/
+
+/* Macros for compiler / platform specific features and build options.
+
+ Build options are:
+ * BROTLI_BUILD_32_BIT disables 64-bit optimizations
+ * BROTLI_BUILD_64_BIT forces to use 64-bit optimizations
+ * BROTLI_BUILD_BIG_ENDIAN forces to use big-endian optimizations
+ * BROTLI_BUILD_ENDIAN_NEUTRAL disables endian-aware optimizations
+ * BROTLI_BUILD_LITTLE_ENDIAN forces to use little-endian optimizations
+ * BROTLI_BUILD_PORTABLE disables dangerous optimizations, like unaligned
+ read and overlapping memcpy; this reduces decompression speed by 5%
+ * BROTLI_BUILD_NO_RBIT disables "rbit" optimization for ARM CPUs
+ * BROTLI_DEBUG dumps file name and line number when decoder detects stream
+ or memory error
+ * BROTLI_ENABLE_LOG enables asserts and dumps various state information
+*/
+
+#ifndef BROTLI_COMMON_PLATFORM_H_
+#define BROTLI_COMMON_PLATFORM_H_
+
+#include <string.h> /* memcpy */
+
+#include <brotli/port.h>
+#include <brotli/types.h>
+
+#if defined(OS_LINUX) || defined(OS_CYGWIN) || defined(__EMSCRIPTEN__)
+#include <endian.h>
+#elif defined(OS_FREEBSD)
+#include <machine/endian.h>
+#elif defined(OS_MACOSX)
+#include <machine/endian.h>
+/* Let's try and follow the Linux convention */
+#define BROTLI_X_BYTE_ORDER BYTE_ORDER
+#define BROTLI_X_LITTLE_ENDIAN LITTLE_ENDIAN
+#define BROTLI_X_BIG_ENDIAN BIG_ENDIAN
+#endif
+
+#if BROTLI_MSVC_VERSION_CHECK(18, 0, 0)
+#include <intrin.h>
+#endif
+
+#if defined(BROTLI_ENABLE_LOG) || defined(BROTLI_DEBUG)
+#include <assert.h>
+#include <stdio.h>
+#endif
+
+/* The following macros were borrowed from https://github.com/nemequ/hedley
+ * with permission of original author - Evan Nemerson <evan@nemerson.com> */
+
+/* >>> >>> >>> hedley macros */
+
+/* Define "BROTLI_PREDICT_TRUE" and "BROTLI_PREDICT_FALSE" macros for capable
+ compilers.
+
+To apply compiler hint, enclose the branching condition into macros, like this:
+
+ if (BROTLI_PREDICT_TRUE(zero == 0)) {
+ // main execution path
+ } else {
+ // compiler should place this code outside of main execution path
+ }
+
+OR:
+
+ if (BROTLI_PREDICT_FALSE(something_rare_or_unexpected_happens)) {
+ // compiler should place this code outside of main execution path
+ }
+
+*/
+#if BROTLI_GNUC_HAS_BUILTIN(__builtin_expect, 3, 0, 0) || \
+ BROTLI_INTEL_VERSION_CHECK(16, 0, 0) || \
+ BROTLI_SUNPRO_VERSION_CHECK(5, 15, 0) || \
+ BROTLI_ARM_VERSION_CHECK(4, 1, 0) || \
+ BROTLI_IBM_VERSION_CHECK(10, 1, 0) || \
+ BROTLI_TI_VERSION_CHECK(7, 3, 0) || \
+ BROTLI_TINYC_VERSION_CHECK(0, 9, 27)
+#define BROTLI_PREDICT_TRUE(x) (__builtin_expect(!!(x), 1))
+#define BROTLI_PREDICT_FALSE(x) (__builtin_expect(x, 0))
+#else
+#define BROTLI_PREDICT_FALSE(x) (x)
+#define BROTLI_PREDICT_TRUE(x) (x)
+#endif
+
+#if defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L) && \
+ !defined(__cplusplus)
+#define BROTLI_RESTRICT restrict
+#elif BROTLI_GNUC_VERSION_CHECK(3, 1, 0) || \
+ BROTLI_MSVC_VERSION_CHECK(14, 0, 0) || \
+ BROTLI_INTEL_VERSION_CHECK(16, 0, 0) || \
+ BROTLI_ARM_VERSION_CHECK(4, 1, 0) || \
+ BROTLI_IBM_VERSION_CHECK(10, 1, 0) || \
+ BROTLI_PGI_VERSION_CHECK(17, 10, 0) || \
+ BROTLI_TI_VERSION_CHECK(8, 0, 0) || \
+ BROTLI_IAR_VERSION_CHECK(8, 0, 0) || \
+ (BROTLI_SUNPRO_VERSION_CHECK(5, 14, 0) && defined(__cplusplus))
+#define BROTLI_RESTRICT __restrict
+#elif BROTLI_SUNPRO_VERSION_CHECK(5, 3, 0) && !defined(__cplusplus)
+#define BROTLI_RESTRICT _Restrict
+#else
+#define BROTLI_RESTRICT
+#endif
+
+#if (defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L)) || \
+ (defined(__cplusplus) && (__cplusplus >= 199711L))
+#define BROTLI_MAYBE_INLINE inline
+#elif defined(__GNUC_STDC_INLINE__) || defined(__GNUC_GNU_INLINE__) || \
+ BROTLI_ARM_VERSION_CHECK(6, 2, 0)
+#define BROTLI_MAYBE_INLINE __inline__
+#elif BROTLI_MSVC_VERSION_CHECK(12, 0, 0) || \
+ BROTLI_ARM_VERSION_CHECK(4, 1, 0) || BROTLI_TI_VERSION_CHECK(8, 0, 0)
+#define BROTLI_MAYBE_INLINE __inline
+#else
+#define BROTLI_MAYBE_INLINE
+#endif
+
+#if BROTLI_GNUC_HAS_ATTRIBUTE(always_inline, 4, 0, 0) || \
+ BROTLI_INTEL_VERSION_CHECK(16, 0, 0) || \
+ BROTLI_SUNPRO_VERSION_CHECK(5, 11, 0) || \
+ BROTLI_ARM_VERSION_CHECK(4, 1, 0) || \
+ BROTLI_IBM_VERSION_CHECK(10, 1, 0) || \
+ BROTLI_TI_VERSION_CHECK(8, 0, 0) || \
+ (BROTLI_TI_VERSION_CHECK(7, 3, 0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__))
+#define BROTLI_INLINE BROTLI_MAYBE_INLINE __attribute__((__always_inline__))
+#elif BROTLI_MSVC_VERSION_CHECK(12, 0, 0)
+#define BROTLI_INLINE BROTLI_MAYBE_INLINE __forceinline
+#elif BROTLI_TI_VERSION_CHECK(7, 0, 0) && defined(__cplusplus)
+#define BROTLI_INLINE BROTLI_MAYBE_INLINE _Pragma("FUNC_ALWAYS_INLINE;")
+#elif BROTLI_IAR_VERSION_CHECK(8, 0, 0)
+#define BROTLI_INLINE BROTLI_MAYBE_INLINE _Pragma("inline=forced")
+#else
+#define BROTLI_INLINE BROTLI_MAYBE_INLINE
+#endif
+
+#if BROTLI_GNUC_HAS_ATTRIBUTE(noinline, 4, 0, 0) || \
+ BROTLI_INTEL_VERSION_CHECK(16, 0, 0) || \
+ BROTLI_SUNPRO_VERSION_CHECK(5, 11, 0) || \
+ BROTLI_ARM_VERSION_CHECK(4, 1, 0) || \
+ BROTLI_IBM_VERSION_CHECK(10, 1, 0) || \
+ BROTLI_TI_VERSION_CHECK(8, 0, 0) || \
+ (BROTLI_TI_VERSION_CHECK(7, 3, 0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__))
+#define BROTLI_NOINLINE __attribute__((__noinline__))
+#elif BROTLI_MSVC_VERSION_CHECK(13, 10, 0)
+#define BROTLI_NOINLINE __declspec(noinline)
+#elif BROTLI_PGI_VERSION_CHECK(10, 2, 0)
+#define BROTLI_NOINLINE _Pragma("noinline")
+#elif BROTLI_TI_VERSION_CHECK(6, 0, 0) && defined(__cplusplus)
+#define BROTLI_NOINLINE _Pragma("FUNC_CANNOT_INLINE;")
+#elif BROTLI_IAR_VERSION_CHECK(8, 0, 0)
+#define BROTLI_NOINLINE _Pragma("inline=never")
+#else
+#define BROTLI_NOINLINE
+#endif
+
+/* <<< <<< <<< end of hedley macros. */
+
+#if BROTLI_GNUC_HAS_ATTRIBUTE(unused, 2, 7, 0) || \
+ BROTLI_INTEL_VERSION_CHECK(16, 0, 0)
+#define BROTLI_UNUSED_FUNCTION static BROTLI_INLINE __attribute__ ((unused))
+#else
+#define BROTLI_UNUSED_FUNCTION static BROTLI_INLINE
+#endif
+
+#if BROTLI_GNUC_HAS_ATTRIBUTE(aligned, 2, 7, 0)
+#define BROTLI_ALIGNED(N) __attribute__((aligned(N)))
+#else
+#define BROTLI_ALIGNED(N)
+#endif
+
+#if (defined(__ARM_ARCH) && (__ARM_ARCH == 7)) || \
+ (defined(M_ARM) && (M_ARM == 7))
+#define BROTLI_TARGET_ARMV7
+#endif /* ARMv7 */
+
+#if (defined(__ARM_ARCH) && (__ARM_ARCH == 8)) || \
+ defined(__aarch64__) || defined(__ARM64_ARCH_8__)
+#define BROTLI_TARGET_ARMV8_ANY
+
+#if defined(__ARM_32BIT_STATE)
+#define BROTLI_TARGET_ARMV8_32
+#elif defined(__ARM_64BIT_STATE)
+#define BROTLI_TARGET_ARMV8_64
+#endif
+
+#endif /* ARMv8 */
+
+#if defined(__ARM_NEON__) || defined(__ARM_NEON)
+#define BROTLI_TARGET_NEON
+#endif
+
+#if defined(__i386) || defined(_M_IX86)
+#define BROTLI_TARGET_X86
+#endif
+
+#if defined(__x86_64__) || defined(_M_X64)
+#define BROTLI_TARGET_X64
+#endif
+
+#if defined(__PPC64__)
+#define BROTLI_TARGET_POWERPC64
+#endif
+
+#if defined(__riscv) && defined(__riscv_xlen) && __riscv_xlen == 64
+#define BROTLI_TARGET_RISCV64
+#endif
+
+#if defined(BROTLI_BUILD_64_BIT)
+#define BROTLI_64_BITS 1
+#elif defined(BROTLI_BUILD_32_BIT)
+#define BROTLI_64_BITS 0
+#elif defined(BROTLI_TARGET_X64) || defined(BROTLI_TARGET_ARMV8_64) || \
+ defined(BROTLI_TARGET_POWERPC64) || defined(BROTLI_TARGET_RISCV64)
+#define BROTLI_64_BITS 1
+#else
+#define BROTLI_64_BITS 0
+#endif
+
+#if (BROTLI_64_BITS)
+#define brotli_reg_t uint64_t
+#else
+#define brotli_reg_t uint32_t
+#endif
+
+#if defined(BROTLI_BUILD_BIG_ENDIAN)
+#define BROTLI_BIG_ENDIAN 1
+#elif defined(BROTLI_BUILD_LITTLE_ENDIAN)
+#define BROTLI_LITTLE_ENDIAN 1
+#elif defined(BROTLI_BUILD_ENDIAN_NEUTRAL)
+/* Just break elif chain. */
+#elif defined(__BYTE_ORDER__) && (__BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__)
+#define BROTLI_LITTLE_ENDIAN 1
+#elif defined(_WIN32) || defined(BROTLI_TARGET_X64)
+/* Win32 & x64 can currently always be assumed to be little endian */
+#define BROTLI_LITTLE_ENDIAN 1
+#elif defined(__BYTE_ORDER__) && (__BYTE_ORDER__ == __ORDER_BIG_ENDIAN__)
+#define BROTLI_BIG_ENDIAN 1
+#elif defined(BROTLI_X_BYTE_ORDER)
+#if BROTLI_X_BYTE_ORDER == BROTLI_X_LITTLE_ENDIAN
+#define BROTLI_LITTLE_ENDIAN 1
+#elif BROTLI_X_BYTE_ORDER == BROTLI_X_BIG_ENDIAN
+#define BROTLI_BIG_ENDIAN 1
+#endif
+#endif /* BROTLI_X_BYTE_ORDER */
+
+#if !defined(BROTLI_LITTLE_ENDIAN)
+#define BROTLI_LITTLE_ENDIAN 0
+#endif
+
+#if !defined(BROTLI_BIG_ENDIAN)
+#define BROTLI_BIG_ENDIAN 0
+#endif
+
+#if defined(BROTLI_X_BYTE_ORDER)
+#undef BROTLI_X_BYTE_ORDER
+#undef BROTLI_X_LITTLE_ENDIAN
+#undef BROTLI_X_BIG_ENDIAN
+#endif
+
+#if defined(BROTLI_BUILD_PORTABLE)
+#define BROTLI_ALIGNED_READ (!!1)
+#elif defined(BROTLI_TARGET_X86) || defined(BROTLI_TARGET_X64) || \
+ defined(BROTLI_TARGET_ARMV7) || defined(BROTLI_TARGET_ARMV8_ANY) || \
+ defined(BROTLI_TARGET_RISCV64)
+/* Allow unaligned read only for white-listed CPUs. */
+#define BROTLI_ALIGNED_READ (!!0)
+#else
+#define BROTLI_ALIGNED_READ (!!1)
+#endif
+
+#if BROTLI_ALIGNED_READ
+/* Portable unaligned memory access: read / write values via memcpy. */
+static BROTLI_INLINE uint16_t BrotliUnalignedRead16(const void* p) {
+ uint16_t t;
+ memcpy(&t, p, sizeof t);
+ return t;
+}
+static BROTLI_INLINE uint32_t BrotliUnalignedRead32(const void* p) {
+ uint32_t t;
+ memcpy(&t, p, sizeof t);
+ return t;
+}
+static BROTLI_INLINE uint64_t BrotliUnalignedRead64(const void* p) {
+ uint64_t t;
+ memcpy(&t, p, sizeof t);
+ return t;
+}
+static BROTLI_INLINE void BrotliUnalignedWrite64(void* p, uint64_t v) {
+ memcpy(p, &v, sizeof v);
+}
+#else /* BROTLI_ALIGNED_READ */
+/* Unaligned memory access is allowed: just cast pointer to requested type. */
+#if BROTLI_SANITIZED
+/* Consider we have an unaligned load/store of 4 bytes from address 0x...05.
+ AddressSanitizer will treat it as a 3-byte access to the range 05:07 and
+ will miss a bug if 08 is the first unaddressable byte.
+ ThreadSanitizer will also treat this as a 3-byte access to 05:07 and will
+ miss a race between this access and some other accesses to 08.
+ MemorySanitizer will correctly propagate the shadow on unaligned stores
+ and correctly report bugs on unaligned loads, but it may not properly
+ update and report the origin of the uninitialized memory.
+ For all three tools, replacing an unaligned access with a tool-specific
+ callback solves the problem. */
+#if defined(__cplusplus)
+extern "C" {
+#endif /* __cplusplus */
+ uint16_t __sanitizer_unaligned_load16(const void* p);
+ uint32_t __sanitizer_unaligned_load32(const void* p);
+ uint64_t __sanitizer_unaligned_load64(const void* p);
+ void __sanitizer_unaligned_store64(void* p, uint64_t v);
+#if defined(__cplusplus)
+} /* extern "C" */
+#endif /* __cplusplus */
+#define BrotliUnalignedRead16 __sanitizer_unaligned_load16
+#define BrotliUnalignedRead32 __sanitizer_unaligned_load32
+#define BrotliUnalignedRead64 __sanitizer_unaligned_load64
+#define BrotliUnalignedWrite64 __sanitizer_unaligned_store64
+#else /* BROTLI_SANITIZED */
+static BROTLI_INLINE uint16_t BrotliUnalignedRead16(const void* p) {
+ return *(const uint16_t*)p;
+}
+static BROTLI_INLINE uint32_t BrotliUnalignedRead32(const void* p) {
+ return *(const uint32_t*)p;
+}
+#if (BROTLI_64_BITS)
+static BROTLI_INLINE uint64_t BrotliUnalignedRead64(const void* p) {
+ return *(const uint64_t*)p;
+}
+static BROTLI_INLINE void BrotliUnalignedWrite64(void* p, uint64_t v) {
+ *(uint64_t*)p = v;
+}
+#else /* BROTLI_64_BITS */
+/* Avoid emitting LDRD / STRD, which require properly aligned address. */
+/* If __attribute__(aligned) is available, use that. Otherwise, memcpy. */
+
+#if BROTLI_GNUC_HAS_ATTRIBUTE(aligned, 2, 7, 0)
+typedef BROTLI_ALIGNED(1) uint64_t brotli_unaligned_uint64_t;
+
+static BROTLI_INLINE uint64_t BrotliUnalignedRead64(const void* p) {
+ return (uint64_t) ((const brotli_unaligned_uint64_t*) p)[0];
+}
+static BROTLI_INLINE void BrotliUnalignedWrite64(void* p, uint64_t v) {
+ brotli_unaligned_uint64_t* dwords = (brotli_unaligned_uint64_t*) p;
+ dwords[0] = (brotli_unaligned_uint64_t) v;
+}
+#else /* BROTLI_GNUC_HAS_ATTRIBUTE(aligned, 2, 7, 0) */
+static BROTLI_INLINE uint64_t BrotliUnalignedRead64(const void* p) {
+ uint64_t v;
+ memcpy(&v, p, sizeof(uint64_t));
+ return v;
+}
+
+static BROTLI_INLINE void BrotliUnalignedWrite64(void* p, uint64_t v) {
+ memcpy(p, &v, sizeof(uint64_t));
+}
+#endif /* BROTLI_GNUC_HAS_ATTRIBUTE(aligned, 2, 7, 0) */
+#endif /* BROTLI_64_BITS */
+#endif /* BROTLI_SANITIZED */
+#endif /* BROTLI_ALIGNED_READ */
+
+#if BROTLI_LITTLE_ENDIAN
+/* Straight endianness. Just read / write values. */
+#define BROTLI_UNALIGNED_LOAD16LE BrotliUnalignedRead16
+#define BROTLI_UNALIGNED_LOAD32LE BrotliUnalignedRead32
+#define BROTLI_UNALIGNED_LOAD64LE BrotliUnalignedRead64
+#define BROTLI_UNALIGNED_STORE64LE BrotliUnalignedWrite64
+#elif BROTLI_BIG_ENDIAN /* BROTLI_LITTLE_ENDIAN */
+/* Explain compiler to byte-swap values. */
+#define BROTLI_BSWAP16_(V) ((uint16_t)( \
+ (((V) & 0xFFU) << 8) | \
+ (((V) >> 8) & 0xFFU)))
+static BROTLI_INLINE uint16_t BROTLI_UNALIGNED_LOAD16LE(const void* p) {
+ uint16_t value = BrotliUnalignedRead16(p);
+ return BROTLI_BSWAP16_(value);
+}
+#define BROTLI_BSWAP32_(V) ( \
+ (((V) & 0xFFU) << 24) | (((V) & 0xFF00U) << 8) | \
+ (((V) >> 8) & 0xFF00U) | (((V) >> 24) & 0xFFU))
+static BROTLI_INLINE uint32_t BROTLI_UNALIGNED_LOAD32LE(const void* p) {
+ uint32_t value = BrotliUnalignedRead32(p);
+ return BROTLI_BSWAP32_(value);
+}
+#define BROTLI_BSWAP64_(V) ( \
+ (((V) & 0xFFU) << 56) | (((V) & 0xFF00U) << 40) | \
+ (((V) & 0xFF0000U) << 24) | (((V) & 0xFF000000U) << 8) | \
+ (((V) >> 8) & 0xFF000000U) | (((V) >> 24) & 0xFF0000U) | \
+ (((V) >> 40) & 0xFF00U) | (((V) >> 56) & 0xFFU))
+static BROTLI_INLINE uint64_t BROTLI_UNALIGNED_LOAD64LE(const void* p) {
+ uint64_t value = BrotliUnalignedRead64(p);
+ return BROTLI_BSWAP64_(value);
+}
+static BROTLI_INLINE void BROTLI_UNALIGNED_STORE64LE(void* p, uint64_t v) {
+ uint64_t value = BROTLI_BSWAP64_(v);
+ BrotliUnalignedWrite64(p, value);
+}
+#else /* BROTLI_LITTLE_ENDIAN */
+/* Read / store values byte-wise; hopefully compiler will understand. */
+static BROTLI_INLINE uint16_t BROTLI_UNALIGNED_LOAD16LE(const void* p) {
+ const uint8_t* in = (const uint8_t*)p;
+ return (uint16_t)(in[0] | (in[1] << 8));
+}
+static BROTLI_INLINE uint32_t BROTLI_UNALIGNED_LOAD32LE(const void* p) {
+ const uint8_t* in = (const uint8_t*)p;
+ uint32_t value = (uint32_t)(in[0]);
+ value |= (uint32_t)(in[1]) << 8;
+ value |= (uint32_t)(in[2]) << 16;
+ value |= (uint32_t)(in[3]) << 24;
+ return value;
+}
+static BROTLI_INLINE uint64_t BROTLI_UNALIGNED_LOAD64LE(const void* p) {
+ const uint8_t* in = (const uint8_t*)p;
+ uint64_t value = (uint64_t)(in[0]);
+ value |= (uint64_t)(in[1]) << 8;
+ value |= (uint64_t)(in[2]) << 16;
+ value |= (uint64_t)(in[3]) << 24;
+ value |= (uint64_t)(in[4]) << 32;
+ value |= (uint64_t)(in[5]) << 40;
+ value |= (uint64_t)(in[6]) << 48;
+ value |= (uint64_t)(in[7]) << 56;
+ return value;
+}
+static BROTLI_INLINE void BROTLI_UNALIGNED_STORE64LE(void* p, uint64_t v) {
+ uint8_t* out = (uint8_t*)p;
+ out[0] = (uint8_t)v;
+ out[1] = (uint8_t)(v >> 8);
+ out[2] = (uint8_t)(v >> 16);
+ out[3] = (uint8_t)(v >> 24);
+ out[4] = (uint8_t)(v >> 32);
+ out[5] = (uint8_t)(v >> 40);
+ out[6] = (uint8_t)(v >> 48);
+ out[7] = (uint8_t)(v >> 56);
+}
+#endif /* BROTLI_LITTLE_ENDIAN */
+
+/* BROTLI_IS_CONSTANT macros returns true for compile-time constants. */
+#if BROTLI_GNUC_HAS_BUILTIN(__builtin_constant_p, 3, 0, 1) || \
+ BROTLI_INTEL_VERSION_CHECK(16, 0, 0)
+#define BROTLI_IS_CONSTANT(x) (!!__builtin_constant_p(x))
+#else
+#define BROTLI_IS_CONSTANT(x) (!!0)
+#endif
+
+#if defined(BROTLI_TARGET_ARMV7) || defined(BROTLI_TARGET_ARMV8_ANY)
+#define BROTLI_HAS_UBFX (!!1)
+#else
+#define BROTLI_HAS_UBFX (!!0)
+#endif
+
+#if defined(BROTLI_ENABLE_LOG)
+#define BROTLI_LOG(x) printf x
+#else
+#define BROTLI_LOG(x)
+#endif
+
+#if defined(BROTLI_DEBUG) || defined(BROTLI_ENABLE_LOG)
+#define BROTLI_DCHECK(x) assert(x)
+static BROTLI_INLINE void BrotliDump(const char* f, int l, const char* fn) {
+ fprintf(stderr, "%s:%d (%s)\n", f, l, fn);
+ fflush(stderr);
+}
+#define BROTLI_DUMP() BrotliDump(__FILE__, __LINE__, __FUNCTION__)
+#else
+#define BROTLI_DCHECK(x)
+#define BROTLI_DUMP() (void)(0)
+#endif
+
+/* TODO(eustas): add appropriate icc/sunpro/arm/ibm/ti checks. */
+#if (BROTLI_GNUC_VERSION_CHECK(3, 0, 0) || defined(__llvm__)) && \
+ !defined(BROTLI_BUILD_NO_RBIT)
+#if defined(BROTLI_TARGET_ARMV7) || defined(BROTLI_TARGET_ARMV8_ANY)
+/* TODO(eustas): detect ARMv6T2 and enable this code for it. */
+static BROTLI_INLINE brotli_reg_t BrotliRBit(brotli_reg_t input) {
+ brotli_reg_t output;
+ __asm__("rbit %0, %1\n" : "=r"(output) : "r"(input));
+ return output;
+}
+#define BROTLI_RBIT(x) BrotliRBit(x)
+#endif /* armv7 / armv8 */
+#endif /* gcc || clang */
+#if !defined(BROTLI_RBIT)
+static BROTLI_INLINE void BrotliRBit(void) { /* Should break build if used. */ }
+#endif /* BROTLI_RBIT */
+
+#define BROTLI_REPEAT(N, X) { \
+ if ((N & 1) != 0) {X;} \
+ if ((N & 2) != 0) {X; X;} \
+ if ((N & 4) != 0) {X; X; X; X;} \
+}
+
+#define BROTLI_UNUSED(X) (void)(X)
+
+#define BROTLI_MIN_MAX(T) \
+ static BROTLI_INLINE T brotli_min_ ## T (T a, T b) { return a < b ? a : b; } \
+ static BROTLI_INLINE T brotli_max_ ## T (T a, T b) { return a > b ? a : b; }
+BROTLI_MIN_MAX(double) BROTLI_MIN_MAX(float) BROTLI_MIN_MAX(int)
+BROTLI_MIN_MAX(size_t) BROTLI_MIN_MAX(uint32_t) BROTLI_MIN_MAX(uint8_t)
+#undef BROTLI_MIN_MAX
+#define BROTLI_MIN(T, A, B) (brotli_min_ ## T((A), (B)))
+#define BROTLI_MAX(T, A, B) (brotli_max_ ## T((A), (B)))
+
+#define BROTLI_SWAP(T, A, I, J) { \
+ T __brotli_swap_tmp = (A)[(I)]; \
+ (A)[(I)] = (A)[(J)]; \
+ (A)[(J)] = __brotli_swap_tmp; \
+}
+
+#if BROTLI_64_BITS
+#if BROTLI_GNUC_HAS_BUILTIN(__builtin_ctzll, 3, 4, 0) || \
+ BROTLI_INTEL_VERSION_CHECK(16, 0, 0)
+#define BROTLI_TZCNT64 __builtin_ctzll
+#elif BROTLI_MSVC_VERSION_CHECK(18, 0, 0)
+#if defined(BROTLI_TARGET_X64)
+#define BROTLI_TZCNT64 _tzcnt_u64
+#else /* BROTLI_TARGET_X64 */
+static BROTLI_INLINE uint32_t BrotliBsf64Msvc(uint64_t x) {
+ uint32_t lsb;
+ _BitScanForward64(&lsb, x);
+ return lsb;
+}
+#define BROTLI_TZCNT64 BrotliBsf64Msvc
+#endif /* BROTLI_TARGET_X64 */
+#endif /* __builtin_ctzll */
+#endif /* BROTLI_64_BITS */
+
+#if BROTLI_GNUC_HAS_BUILTIN(__builtin_clz, 3, 4, 0) || \
+ BROTLI_INTEL_VERSION_CHECK(16, 0, 0)
+#define BROTLI_BSR32(x) (31u ^ (uint32_t)__builtin_clz(x))
+#elif BROTLI_MSVC_VERSION_CHECK(18, 0, 0)
+static BROTLI_INLINE uint32_t BrotliBsr32Msvc(uint32_t x) {
+ unsigned long msb;
+ _BitScanReverse(&msb, x);
+ return (uint32_t)msb;
+}
+#define BROTLI_BSR32 BrotliBsr32Msvc
+#endif /* __builtin_clz */
+
+/* Default brotli_alloc_func */
+BROTLI_COMMON_API void* BrotliDefaultAllocFunc(void* opaque, size_t size);
+
+/* Default brotli_free_func */
+BROTLI_COMMON_API void BrotliDefaultFreeFunc(void* opaque, void* address);
+
+BROTLI_UNUSED_FUNCTION void BrotliSuppressUnusedFunctions(void) {
+ BROTLI_UNUSED(&BrotliSuppressUnusedFunctions);
+ BROTLI_UNUSED(&BrotliUnalignedRead16);
+ BROTLI_UNUSED(&BrotliUnalignedRead32);
+ BROTLI_UNUSED(&BrotliUnalignedRead64);
+ BROTLI_UNUSED(&BrotliUnalignedWrite64);
+ BROTLI_UNUSED(&BROTLI_UNALIGNED_LOAD16LE);
+ BROTLI_UNUSED(&BROTLI_UNALIGNED_LOAD32LE);
+ BROTLI_UNUSED(&BROTLI_UNALIGNED_LOAD64LE);
+ BROTLI_UNUSED(&BROTLI_UNALIGNED_STORE64LE);
+ BROTLI_UNUSED(&BrotliRBit);
+ BROTLI_UNUSED(&brotli_min_double);
+ BROTLI_UNUSED(&brotli_max_double);
+ BROTLI_UNUSED(&brotli_min_float);
+ BROTLI_UNUSED(&brotli_max_float);
+ BROTLI_UNUSED(&brotli_min_int);
+ BROTLI_UNUSED(&brotli_max_int);
+ BROTLI_UNUSED(&brotli_min_size_t);
+ BROTLI_UNUSED(&brotli_max_size_t);
+ BROTLI_UNUSED(&brotli_min_uint32_t);
+ BROTLI_UNUSED(&brotli_max_uint32_t);
+ BROTLI_UNUSED(&brotli_min_uint8_t);
+ BROTLI_UNUSED(&brotli_max_uint8_t);
+ BROTLI_UNUSED(&BrotliDefaultAllocFunc);
+ BROTLI_UNUSED(&BrotliDefaultFreeFunc);
+#if defined(BROTLI_DEBUG) || defined(BROTLI_ENABLE_LOG)
+ BROTLI_UNUSED(&BrotliDump);
+#endif
+}
+
+#endif /* BROTLI_COMMON_PLATFORM_H_ */
diff --git a/thirdparty/brotli/common/shared_dictionary.c b/thirdparty/brotli/common/shared_dictionary.c
new file mode 100644
index 0000000000..3ca40c0698
--- /dev/null
+++ b/thirdparty/brotli/common/shared_dictionary.c
@@ -0,0 +1,515 @@
+/* Copyright 2017 Google Inc. All Rights Reserved.
+
+ Distributed under MIT license.
+ See file LICENSE for detail or copy at https://opensource.org/licenses/MIT
+*/
+
+/* Shared Dictionary definition and utilities. */
+
+#include <brotli/shared_dictionary.h>
+
+#include <memory.h>
+#include <stdlib.h> /* malloc, free */
+#include <stdio.h>
+
+#include "dictionary.h"
+#include "platform.h"
+#include "shared_dictionary_internal.h"
+
+#if defined(__cplusplus) || defined(c_plusplus)
+extern "C" {
+#endif
+
+#define BROTLI_NUM_ENCODED_LENGTHS (SHARED_BROTLI_MAX_DICTIONARY_WORD_LENGTH \
+ - SHARED_BROTLI_MIN_DICTIONARY_WORD_LENGTH + 1)
+
+/* Max allowed by spec */
+#define BROTLI_MAX_SIZE_BITS 15u
+
+/* Returns BROTLI_TRUE on success, BROTLI_FALSE on failure. */
+static BROTLI_BOOL ReadBool(const uint8_t* encoded, size_t size, size_t* pos,
+ BROTLI_BOOL* result) {
+ uint8_t value;
+ size_t position = *pos;
+ if (position >= size) return BROTLI_FALSE; /* past file end */
+ value = encoded[position++];
+ if (value > 1) return BROTLI_FALSE; /* invalid bool */
+ *result = TO_BROTLI_BOOL(value);
+ *pos = position;
+ return BROTLI_TRUE; /* success */
+}
+
+/* Returns BROTLI_TRUE on success, BROTLI_FALSE on failure. */
+static BROTLI_BOOL ReadUint8(const uint8_t* encoded, size_t size, size_t* pos,
+ uint8_t* result) {
+ size_t position = *pos;
+ if (position + sizeof(uint8_t) > size) return BROTLI_FALSE;
+ *result = encoded[position++];
+ *pos = position;
+ return BROTLI_TRUE;
+}
+
+/* Returns BROTLI_TRUE on success, BROTLI_FALSE on failure. */
+static BROTLI_BOOL ReadUint16(const uint8_t* encoded, size_t size, size_t* pos,
+ uint16_t* result) {
+ size_t position = *pos;
+ if (position + sizeof(uint16_t) > size) return BROTLI_FALSE;
+ *result = BROTLI_UNALIGNED_LOAD16LE(&encoded[position]);
+ position += 2;
+ *pos = position;
+ return BROTLI_TRUE;
+}
+
+/* Reads a varint into a uint32_t, and returns error if it's too large */
+/* Returns BROTLI_TRUE on success, BROTLI_FALSE on failure. */
+static BROTLI_BOOL ReadVarint32(const uint8_t* encoded, size_t size,
+ size_t* pos, uint32_t* result) {
+ int num = 0;
+ uint8_t byte;
+ *result = 0;
+ for (;;) {
+ if (*pos >= size) return BROTLI_FALSE;
+ byte = encoded[(*pos)++];
+ if (num == 4 && byte > 15) return BROTLI_FALSE;
+ *result |= (uint32_t)(byte & 127) << (num * 7);
+ if (byte < 128) return BROTLI_TRUE;
+ num++;
+ }
+}
+
+/* Returns the total length of word list. */
+static size_t BrotliSizeBitsToOffsets(const uint8_t* size_bits_by_length,
+ uint32_t* offsets_by_length) {
+ uint32_t pos = 0;
+ uint32_t i;
+ for (i = 0; i <= SHARED_BROTLI_MAX_DICTIONARY_WORD_LENGTH; i++) {
+ offsets_by_length[i] = pos;
+ if (size_bits_by_length[i] != 0) {
+ pos += i << size_bits_by_length[i];
+ }
+ }
+ return pos;
+}
+
+static BROTLI_BOOL ParseWordList(size_t size, const uint8_t* encoded,
+ size_t* pos, BrotliDictionary* out) {
+ size_t offset;
+ size_t i;
+ size_t position = *pos;
+ if (position + BROTLI_NUM_ENCODED_LENGTHS > size) {
+ return BROTLI_FALSE;
+ }
+
+ memset(out->size_bits_by_length, 0, SHARED_BROTLI_MIN_DICTIONARY_WORD_LENGTH);
+ memcpy(out->size_bits_by_length + SHARED_BROTLI_MIN_DICTIONARY_WORD_LENGTH,
+ &encoded[position], BROTLI_NUM_ENCODED_LENGTHS);
+ for (i = SHARED_BROTLI_MIN_DICTIONARY_WORD_LENGTH;
+ i <= SHARED_BROTLI_MAX_DICTIONARY_WORD_LENGTH; i++) {
+ if (out->size_bits_by_length[i] > BROTLI_MAX_SIZE_BITS) {
+ return BROTLI_FALSE;
+ }
+ }
+ position += BROTLI_NUM_ENCODED_LENGTHS;
+ offset = BrotliSizeBitsToOffsets(
+ out->size_bits_by_length, out->offsets_by_length);
+
+ out->data = &encoded[position];
+ out->data_size = offset;
+ position += offset;
+ if (position > size) return BROTLI_FALSE;
+ *pos = position;
+ return BROTLI_TRUE;
+}
+
+/* Computes the cutOffTransforms of a BrotliTransforms which already has the
+ transforms data correctly filled in. */
+static void ComputeCutoffTransforms(BrotliTransforms* transforms) {
+ uint32_t i;
+ for (i = 0; i < BROTLI_TRANSFORMS_MAX_CUT_OFF + 1; i++) {
+ transforms->cutOffTransforms[i] = -1;
+ }
+ for (i = 0; i < transforms->num_transforms; i++) {
+ const uint8_t* prefix = BROTLI_TRANSFORM_PREFIX(transforms, i);
+ uint8_t type = BROTLI_TRANSFORM_TYPE(transforms, i);
+ const uint8_t* suffix = BROTLI_TRANSFORM_SUFFIX(transforms, i);
+ if (type <= BROTLI_TRANSFORM_OMIT_LAST_9 && *prefix == 0 && *suffix == 0 &&
+ transforms->cutOffTransforms[type] == -1) {
+ transforms->cutOffTransforms[type] = (int16_t)i;
+ }
+ }
+}
+
+static BROTLI_BOOL ParsePrefixSuffixTable(size_t size, const uint8_t* encoded,
+ size_t* pos, BrotliTransforms* out, uint16_t* out_table,
+ size_t* out_table_size) {
+ size_t position = *pos;
+ size_t offset = 0;
+ size_t stringlet_count = 0; /* NUM_PREFIX_SUFFIX */
+ size_t data_length = 0;
+
+ /* PREFIX_SUFFIX_LENGTH */
+ if (!ReadUint16(encoded, size, &position, &out->prefix_suffix_size)) {
+ return BROTLI_FALSE;
+ }
+ data_length = out->prefix_suffix_size;
+
+ /* Must at least have space for null terminator. */
+ if (data_length < 1) return BROTLI_FALSE;
+ out->prefix_suffix = &encoded[position];
+ if (position + data_length >= size) return BROTLI_FALSE;
+ while (BROTLI_TRUE) {
+ /* STRING_LENGTH */
+ size_t stringlet_len = encoded[position + offset];
+ out_table[stringlet_count] = (uint16_t)offset;
+ stringlet_count++;
+ offset++;
+ if (stringlet_len == 0) {
+ if (offset == data_length) {
+ break;
+ } else {
+ return BROTLI_FALSE;
+ }
+ }
+ if (stringlet_count > 255) return BROTLI_FALSE;
+ offset += stringlet_len;
+ if (offset >= data_length) return BROTLI_FALSE;
+ }
+
+ position += data_length;
+ *pos = position;
+ *out_table_size = (uint16_t)stringlet_count;
+ return BROTLI_TRUE;
+}
+
+static BROTLI_BOOL ParseTransformsList(size_t size, const uint8_t* encoded,
+ size_t* pos, BrotliTransforms* out, uint16_t* prefix_suffix_table,
+ size_t* prefix_suffix_count) {
+ uint32_t i;
+ BROTLI_BOOL has_params = BROTLI_FALSE;
+ BROTLI_BOOL prefix_suffix_ok = BROTLI_FALSE;
+ size_t position = *pos;
+ size_t stringlet_cnt = 0;
+ if (position >= size) return BROTLI_FALSE;
+
+ prefix_suffix_ok = ParsePrefixSuffixTable(
+ size, encoded, &position, out, prefix_suffix_table, &stringlet_cnt);
+ if (!prefix_suffix_ok) return BROTLI_FALSE;
+ out->prefix_suffix_map = prefix_suffix_table;
+ *prefix_suffix_count = stringlet_cnt;
+
+ out->num_transforms = encoded[position++];
+ out->transforms = &encoded[position];
+ position += (size_t)out->num_transforms * 3;
+ if (position > size) return BROTLI_FALSE;
+ /* Check for errors and read extra parameters. */
+ for (i = 0; i < out->num_transforms; i++) {
+ uint8_t prefix_id = BROTLI_TRANSFORM_PREFIX_ID(out, i);
+ uint8_t type = BROTLI_TRANSFORM_TYPE(out, i);
+ uint8_t suffix_id = BROTLI_TRANSFORM_SUFFIX_ID(out, i);
+ if (prefix_id >= stringlet_cnt) return BROTLI_FALSE;
+ if (type >= BROTLI_NUM_TRANSFORM_TYPES) return BROTLI_FALSE;
+ if (suffix_id >= stringlet_cnt) return BROTLI_FALSE;
+ if (type == BROTLI_TRANSFORM_SHIFT_FIRST ||
+ type == BROTLI_TRANSFORM_SHIFT_ALL) {
+ has_params = BROTLI_TRUE;
+ }
+ }
+ if (has_params) {
+ out->params = &encoded[position];
+ position += (size_t)out->num_transforms * 2;
+ if (position > size) return BROTLI_FALSE;
+ for (i = 0; i < out->num_transforms; i++) {
+ uint8_t type = BROTLI_TRANSFORM_TYPE(out, i);
+ if (type != BROTLI_TRANSFORM_SHIFT_FIRST &&
+ type != BROTLI_TRANSFORM_SHIFT_ALL) {
+ if (out->params[i * 2] != 0 || out->params[i * 2 + 1] != 0) {
+ return BROTLI_FALSE;
+ }
+ }
+ }
+ } else {
+ out->params = NULL;
+ }
+ ComputeCutoffTransforms(out);
+ *pos = position;
+ return BROTLI_TRUE;
+}
+
+static BROTLI_BOOL DryParseDictionary(const uint8_t* encoded,
+ size_t size, uint32_t* num_prefix, BROTLI_BOOL* is_custom_static_dict) {
+ size_t pos = 0;
+ uint32_t chunk_size = 0;
+ uint8_t num_word_lists;
+ uint8_t num_transform_lists;
+ *is_custom_static_dict = BROTLI_FALSE;
+ *num_prefix = 0;
+
+ /* Skip magic header bytes. */
+ pos += 2;
+
+ /* LZ77_DICTIONARY_LENGTH */
+ if (!ReadVarint32(encoded, size, &pos, &chunk_size)) return BROTLI_FALSE;
+ if (chunk_size != 0) {
+ /* This limitation is not specified but the 32-bit Brotli decoder for now */
+ if (chunk_size > 1073741823) return BROTLI_FALSE;
+ *num_prefix = 1;
+ if (pos + chunk_size > size) return BROTLI_FALSE;
+ pos += chunk_size;
+ }
+
+ if (!ReadUint8(encoded, size, &pos, &num_word_lists)) {
+ return BROTLI_FALSE;
+ }
+ if (!ReadUint8(encoded, size, &pos, &num_transform_lists)) {
+ return BROTLI_FALSE;
+ }
+
+ if (num_word_lists > 0 || num_transform_lists > 0) {
+ *is_custom_static_dict = BROTLI_TRUE;
+ }
+
+ return BROTLI_TRUE;
+}
+
+static BROTLI_BOOL ParseDictionary(const uint8_t* encoded, size_t size,
+ BrotliSharedDictionary* dict) {
+ uint32_t i;
+ size_t pos = 0;
+ uint32_t chunk_size = 0;
+ size_t total_prefix_suffix_count = 0;
+ size_t trasform_list_start[SHARED_BROTLI_NUM_DICTIONARY_CONTEXTS];
+ uint16_t temporary_prefix_suffix_table[256];
+
+ /* Skip magic header bytes. */
+ pos += 2;
+
+ /* LZ77_DICTIONARY_LENGTH */
+ if (!ReadVarint32(encoded, size, &pos, &chunk_size)) return BROTLI_FALSE;
+ if (chunk_size != 0) {
+ if (pos + chunk_size > size) return BROTLI_FALSE;
+ dict->prefix_size[dict->num_prefix] = chunk_size;
+ dict->prefix[dict->num_prefix] = &encoded[pos];
+ dict->num_prefix++;
+ /* LZ77_DICTIONARY_LENGTH bytes. */
+ pos += chunk_size;
+ }
+
+ /* NUM_WORD_LISTS */
+ if (!ReadUint8(encoded, size, &pos, &dict->num_word_lists)) {
+ return BROTLI_FALSE;
+ }
+ if (dict->num_word_lists > SHARED_BROTLI_NUM_DICTIONARY_CONTEXTS) {
+ return BROTLI_FALSE;
+ }
+
+ if (dict->num_word_lists != 0) {
+ dict->words_instances = (BrotliDictionary*)dict->alloc_func(
+ dict->memory_manager_opaque,
+ dict->num_word_lists * sizeof(*dict->words_instances));
+ if (!dict->words_instances) return BROTLI_FALSE; /* OOM */
+ }
+ for (i = 0; i < dict->num_word_lists; i++) {
+ if (!ParseWordList(size, encoded, &pos, &dict->words_instances[i])) {
+ return BROTLI_FALSE;
+ }
+ }
+
+ /* NUM_TRANSFORM_LISTS */
+ if (!ReadUint8(encoded, size, &pos, &dict->num_transform_lists)) {
+ return BROTLI_FALSE;
+ }
+ if (dict->num_transform_lists > SHARED_BROTLI_NUM_DICTIONARY_CONTEXTS) {
+ return BROTLI_FALSE;
+ }
+
+ if (dict->num_transform_lists != 0) {
+ dict->transforms_instances = (BrotliTransforms*)dict->alloc_func(
+ dict->memory_manager_opaque,
+ dict->num_transform_lists * sizeof(*dict->transforms_instances));
+ if (!dict->transforms_instances) return BROTLI_FALSE; /* OOM */
+ }
+ for (i = 0; i < dict->num_transform_lists; i++) {
+ BROTLI_BOOL ok = BROTLI_FALSE;
+ size_t prefix_suffix_count = 0;
+ trasform_list_start[i] = pos;
+ dict->transforms_instances[i].prefix_suffix_map =
+ temporary_prefix_suffix_table;
+ ok = ParseTransformsList(
+ size, encoded, &pos, &dict->transforms_instances[i],
+ temporary_prefix_suffix_table, &prefix_suffix_count);
+ if (!ok) return BROTLI_FALSE;
+ total_prefix_suffix_count += prefix_suffix_count;
+ }
+ if (total_prefix_suffix_count != 0) {
+ dict->prefix_suffix_maps = (uint16_t*)dict->alloc_func(
+ dict->memory_manager_opaque,
+ total_prefix_suffix_count * sizeof(*dict->prefix_suffix_maps));
+ if (!dict->prefix_suffix_maps) return BROTLI_FALSE; /* OOM */
+ }
+ total_prefix_suffix_count = 0;
+ for (i = 0; i < dict->num_transform_lists; i++) {
+ size_t prefix_suffix_count = 0;
+ size_t position = trasform_list_start[i];
+ uint16_t* prefix_suffix_map =
+ &dict->prefix_suffix_maps[total_prefix_suffix_count];
+ BROTLI_BOOL ok = ParsePrefixSuffixTable(
+ size, encoded, &position, &dict->transforms_instances[i],
+ prefix_suffix_map, &prefix_suffix_count);
+ if (!ok) return BROTLI_FALSE;
+ dict->transforms_instances[i].prefix_suffix_map = prefix_suffix_map;
+ total_prefix_suffix_count += prefix_suffix_count;
+ }
+
+ if (dict->num_word_lists != 0 || dict->num_transform_lists != 0) {
+ if (!ReadUint8(encoded, size, &pos, &dict->num_dictionaries)) {
+ return BROTLI_FALSE;
+ }
+ if (dict->num_dictionaries == 0 ||
+ dict->num_dictionaries > SHARED_BROTLI_NUM_DICTIONARY_CONTEXTS) {
+ return BROTLI_FALSE;
+ }
+ for (i = 0; i < dict->num_dictionaries; i++) {
+ uint8_t words_index;
+ uint8_t transforms_index;
+ if (!ReadUint8(encoded, size, &pos, &words_index)) {
+ return BROTLI_FALSE;
+ }
+ if (words_index > dict->num_word_lists) return BROTLI_FALSE;
+ if (!ReadUint8(encoded, size, &pos, &transforms_index)) {
+ return BROTLI_FALSE;
+ }
+ if (transforms_index > dict->num_transform_lists) return BROTLI_FALSE;
+ dict->words[i] = words_index == dict->num_word_lists ?
+ BrotliGetDictionary() : &dict->words_instances[words_index];
+ dict->transforms[i] = transforms_index == dict->num_transform_lists ?
+ BrotliGetTransforms(): &dict->transforms_instances[transforms_index];
+ }
+ /* CONTEXT_ENABLED */
+ if (!ReadBool(encoded, size, &pos, &dict->context_based)) {
+ return BROTLI_FALSE;
+ }
+
+ /* CONTEXT_MAP */
+ if (dict->context_based) {
+ for (i = 0; i < SHARED_BROTLI_NUM_DICTIONARY_CONTEXTS; i++) {
+ if (!ReadUint8(encoded, size, &pos, &dict->context_map[i])) {
+ return BROTLI_FALSE;
+ }
+ if (dict->context_map[i] >= dict->num_dictionaries) {
+ return BROTLI_FALSE;
+ }
+ }
+ }
+ } else {
+ dict->context_based = BROTLI_FALSE;
+ dict->num_dictionaries = 1;
+ dict->words[0] = BrotliGetDictionary();
+ dict->transforms[0] = BrotliGetTransforms();
+ }
+
+ return BROTLI_TRUE;
+}
+
+/* Decodes shared dictionary and verifies correctness.
+ Returns BROTLI_TRUE if dictionary is valid, BROTLI_FALSE otherwise.
+ The BrotliSharedDictionary must already have been initialized. If the
+ BrotliSharedDictionary already contains data, compound dictionaries
+ will be appended, but an error will be returned if it already has
+ custom words or transforms.
+ TODO(lode): link to RFC for shared brotli once published. */
+static BROTLI_BOOL DecodeSharedDictionary(
+ const uint8_t* encoded, size_t size, BrotliSharedDictionary* dict) {
+ uint32_t num_prefix = 0;
+ BROTLI_BOOL is_custom_static_dict = BROTLI_FALSE;
+ BROTLI_BOOL has_custom_static_dict =
+ dict->num_word_lists > 0 || dict->num_transform_lists > 0;
+
+ /* Check magic header bytes. */
+ if (size < 2) return BROTLI_FALSE;
+ if (encoded[0] != 0x91 || encoded[1] != 0) return BROTLI_FALSE;
+
+ if (!DryParseDictionary(encoded, size, &num_prefix, &is_custom_static_dict)) {
+ return BROTLI_FALSE;
+ }
+
+ if (num_prefix + dict->num_prefix > SHARED_BROTLI_MAX_COMPOUND_DICTS) {
+ return BROTLI_FALSE;
+ }
+
+ /* Cannot combine different static dictionaries, only prefix dictionaries */
+ if (has_custom_static_dict && is_custom_static_dict) return BROTLI_FALSE;
+
+ return ParseDictionary(encoded, size, dict);
+}
+
+void BrotliSharedDictionaryDestroyInstance(
+ BrotliSharedDictionary* dict) {
+ if (!dict) {
+ return;
+ } else {
+ brotli_free_func free_func = dict->free_func;
+ void* opaque = dict->memory_manager_opaque;
+ /* Cleanup. */
+ free_func(opaque, dict->words_instances);
+ free_func(opaque, dict->transforms_instances);
+ free_func(opaque, dict->prefix_suffix_maps);
+ /* Self-destruction. */
+ free_func(opaque, dict);
+ }
+}
+
+BROTLI_BOOL BrotliSharedDictionaryAttach(
+ BrotliSharedDictionary* dict, BrotliSharedDictionaryType type,
+ size_t data_size, const uint8_t data[BROTLI_ARRAY_PARAM(data_size)]) {
+ if (!dict) {
+ return BROTLI_FALSE;
+ }
+ if (type == BROTLI_SHARED_DICTIONARY_SERIALIZED) {
+ return DecodeSharedDictionary(data, data_size, dict);
+ } else if (type == BROTLI_SHARED_DICTIONARY_RAW) {
+ if (dict->num_prefix >= SHARED_BROTLI_MAX_COMPOUND_DICTS) {
+ return BROTLI_FALSE;
+ }
+ dict->prefix_size[dict->num_prefix] = data_size;
+ dict->prefix[dict->num_prefix] = data;
+ dict->num_prefix++;
+ return BROTLI_TRUE;
+ } else {
+ return BROTLI_FALSE;
+ }
+}
+
+BrotliSharedDictionary* BrotliSharedDictionaryCreateInstance(
+ brotli_alloc_func alloc_func, brotli_free_func free_func, void* opaque) {
+ BrotliSharedDictionary* dict = 0;
+ if (!alloc_func && !free_func) {
+ dict = (BrotliSharedDictionary*)malloc(sizeof(BrotliSharedDictionary));
+ } else if (alloc_func && free_func) {
+ dict = (BrotliSharedDictionary*)alloc_func(
+ opaque, sizeof(BrotliSharedDictionary));
+ }
+ if (dict == 0) {
+ return 0;
+ }
+
+ /* TODO(eustas): explicitly initialize all the fields? */
+ memset(dict, 0, sizeof(BrotliSharedDictionary));
+
+ dict->context_based = BROTLI_FALSE;
+ dict->num_dictionaries = 1;
+ dict->num_word_lists = 0;
+ dict->num_transform_lists = 0;
+
+ dict->words[0] = BrotliGetDictionary();
+ dict->transforms[0] = BrotliGetTransforms();
+
+ dict->alloc_func = alloc_func ? alloc_func : BrotliDefaultAllocFunc;
+ dict->free_func = free_func ? free_func : BrotliDefaultFreeFunc;
+ dict->memory_manager_opaque = opaque;
+
+ return dict;
+}
+
+#if defined(__cplusplus) || defined(c_plusplus)
+} /* extern "C" */
+#endif
diff --git a/thirdparty/brotli/common/shared_dictionary_internal.h b/thirdparty/brotli/common/shared_dictionary_internal.h
new file mode 100644
index 0000000000..87ab13b24b
--- /dev/null
+++ b/thirdparty/brotli/common/shared_dictionary_internal.h
@@ -0,0 +1,74 @@
+/* Copyright 2017 Google Inc. All Rights Reserved.
+
+ Distributed under MIT license.
+ See file LICENSE for detail or copy at https://opensource.org/licenses/MIT
+*/
+
+/* (Transparent) Shared Dictionary definition. */
+
+#ifndef BROTLI_COMMON_SHARED_DICTIONARY_INTERNAL_H_
+#define BROTLI_COMMON_SHARED_DICTIONARY_INTERNAL_H_
+
+#include "dictionary.h"
+#include <brotli/shared_dictionary.h>
+#include "transform.h"
+#include <brotli/types.h>
+
+#if defined(__cplusplus) || defined(c_plusplus)
+extern "C" {
+#endif
+
+struct BrotliSharedDictionaryStruct {
+ /* LZ77 prefixes (compound dictionary). */
+ uint32_t num_prefix; /* max SHARED_BROTLI_MAX_COMPOUND_DICTS */
+ size_t prefix_size[SHARED_BROTLI_MAX_COMPOUND_DICTS];
+ const uint8_t* prefix[SHARED_BROTLI_MAX_COMPOUND_DICTS];
+
+ /* If set, the context map is used to select word and transform list from 64
+ contexts, if not set, the context map is not used and only words[0] and
+ transforms[0] are to be used. */
+ BROTLI_BOOL context_based;
+
+ uint8_t context_map[SHARED_BROTLI_NUM_DICTIONARY_CONTEXTS];
+
+ /* Amount of word_list+transform_list combinations. */
+ uint8_t num_dictionaries;
+
+ /* Must use num_dictionaries values. */
+ const BrotliDictionary* words[SHARED_BROTLI_NUM_DICTIONARY_CONTEXTS];
+
+ /* Must use num_dictionaries values. */
+ const BrotliTransforms* transforms[SHARED_BROTLI_NUM_DICTIONARY_CONTEXTS];
+
+ /* Amount of custom word lists. May be 0 if only Brotli's built-in is used */
+ uint8_t num_word_lists;
+
+ /* Contents of the custom words lists. Must be NULL if num_word_lists is 0. */
+ BrotliDictionary* words_instances;
+
+ /* Amount of custom transform lists. May be 0 if only Brotli's built-in is
+ used */
+ uint8_t num_transform_lists;
+
+ /* Contents of the custom transform lists. Must be NULL if num_transform_lists
+ is 0. */
+ BrotliTransforms* transforms_instances;
+
+ /* Concatenated prefix_suffix_maps of the custom transform lists. Must be NULL
+ if num_transform_lists is 0. */
+ uint16_t* prefix_suffix_maps;
+
+ /* Memory management */
+ brotli_alloc_func alloc_func;
+ brotli_free_func free_func;
+ void* memory_manager_opaque;
+};
+
+typedef struct BrotliSharedDictionaryStruct BrotliSharedDictionaryInternal;
+#define BrotliSharedDictionary BrotliSharedDictionaryInternal
+
+#if defined(__cplusplus) || defined(c_plusplus)
+} /* extern "C" */
+#endif
+
+#endif /* BROTLI_COMMON_SHARED_DICTIONARY_INTERNAL_H_ */
diff --git a/thirdparty/brotli/common/transform.c b/thirdparty/brotli/common/transform.c
new file mode 100644
index 0000000000..49455fc496
--- /dev/null
+++ b/thirdparty/brotli/common/transform.c
@@ -0,0 +1,291 @@
+/* Copyright 2013 Google Inc. All Rights Reserved.
+
+ Distributed under MIT license.
+ See file LICENSE for detail or copy at https://opensource.org/licenses/MIT
+*/
+
+#include "transform.h"
+
+#if defined(__cplusplus) || defined(c_plusplus)
+extern "C" {
+#endif
+
+/* RFC 7932 transforms string data */
+static const char kPrefixSuffix[217] =
+ "\1 \2, \10 of the \4 of \2s \1.\5 and \4 "
+/* 0x _0 _2 __5 _E _3 _6 _8 _E */
+ "in \1\"\4 to \2\">\1\n\2. \1]\5 for \3 a \6 "
+/* 2x _3_ _5 _A_ _D_ _F _2 _4 _A _E */
+ "that \1\'\6 with \6 from \4 by \1(\6. T"
+/* 4x _5_ _7 _E _5 _A _C */
+ "he \4 on \4 as \4 is \4ing \2\n\t\1:\3ed "
+/* 6x _3 _8 _D _2 _7_ _ _A _C */
+ "\2=\"\4 at \3ly \1,\2=\'\5.com/\7. This \5"
+/* 8x _0 _ _3 _8 _C _E _ _1 _7 _F */
+ " not \3er \3al \4ful \4ive \5less \4es"
+/* Ax _5 _9 _D _2 _7 _D */
+ "t \4ize \2\xc2\xa0\4ous \5 the \2e "; /* \0 - implicit trailing zero. */
+/* Cx _2 _7___ ___ _A _F _5 _8 */
+
+static const uint16_t kPrefixSuffixMap[50] = {
+ 0x00, 0x02, 0x05, 0x0E, 0x13, 0x16, 0x18, 0x1E, 0x23, 0x25,
+ 0x2A, 0x2D, 0x2F, 0x32, 0x34, 0x3A, 0x3E, 0x45, 0x47, 0x4E,
+ 0x55, 0x5A, 0x5C, 0x63, 0x68, 0x6D, 0x72, 0x77, 0x7A, 0x7C,
+ 0x80, 0x83, 0x88, 0x8C, 0x8E, 0x91, 0x97, 0x9F, 0xA5, 0xA9,
+ 0xAD, 0xB2, 0xB7, 0xBD, 0xC2, 0xC7, 0xCA, 0xCF, 0xD5, 0xD8
+};
+
+/* RFC 7932 transforms */
+static const uint8_t kTransformsData[] = {
+ 49, BROTLI_TRANSFORM_IDENTITY, 49,
+ 49, BROTLI_TRANSFORM_IDENTITY, 0,
+ 0, BROTLI_TRANSFORM_IDENTITY, 0,
+ 49, BROTLI_TRANSFORM_OMIT_FIRST_1, 49,
+ 49, BROTLI_TRANSFORM_UPPERCASE_FIRST, 0,
+ 49, BROTLI_TRANSFORM_IDENTITY, 47,
+ 0, BROTLI_TRANSFORM_IDENTITY, 49,
+ 4, BROTLI_TRANSFORM_IDENTITY, 0,
+ 49, BROTLI_TRANSFORM_IDENTITY, 3,
+ 49, BROTLI_TRANSFORM_UPPERCASE_FIRST, 49,
+ 49, BROTLI_TRANSFORM_IDENTITY, 6,
+ 49, BROTLI_TRANSFORM_OMIT_FIRST_2, 49,
+ 49, BROTLI_TRANSFORM_OMIT_LAST_1, 49,
+ 1, BROTLI_TRANSFORM_IDENTITY, 0,
+ 49, BROTLI_TRANSFORM_IDENTITY, 1,
+ 0, BROTLI_TRANSFORM_UPPERCASE_FIRST, 0,
+ 49, BROTLI_TRANSFORM_IDENTITY, 7,
+ 49, BROTLI_TRANSFORM_IDENTITY, 9,
+ 48, BROTLI_TRANSFORM_IDENTITY, 0,
+ 49, BROTLI_TRANSFORM_IDENTITY, 8,
+ 49, BROTLI_TRANSFORM_IDENTITY, 5,
+ 49, BROTLI_TRANSFORM_IDENTITY, 10,
+ 49, BROTLI_TRANSFORM_IDENTITY, 11,
+ 49, BROTLI_TRANSFORM_OMIT_LAST_3, 49,
+ 49, BROTLI_TRANSFORM_IDENTITY, 13,
+ 49, BROTLI_TRANSFORM_IDENTITY, 14,
+ 49, BROTLI_TRANSFORM_OMIT_FIRST_3, 49,
+ 49, BROTLI_TRANSFORM_OMIT_LAST_2, 49,
+ 49, BROTLI_TRANSFORM_IDENTITY, 15,
+ 49, BROTLI_TRANSFORM_IDENTITY, 16,
+ 0, BROTLI_TRANSFORM_UPPERCASE_FIRST, 49,
+ 49, BROTLI_TRANSFORM_IDENTITY, 12,
+ 5, BROTLI_TRANSFORM_IDENTITY, 49,
+ 0, BROTLI_TRANSFORM_IDENTITY, 1,
+ 49, BROTLI_TRANSFORM_OMIT_FIRST_4, 49,
+ 49, BROTLI_TRANSFORM_IDENTITY, 18,
+ 49, BROTLI_TRANSFORM_IDENTITY, 17,
+ 49, BROTLI_TRANSFORM_IDENTITY, 19,
+ 49, BROTLI_TRANSFORM_IDENTITY, 20,
+ 49, BROTLI_TRANSFORM_OMIT_FIRST_5, 49,
+ 49, BROTLI_TRANSFORM_OMIT_FIRST_6, 49,
+ 47, BROTLI_TRANSFORM_IDENTITY, 49,
+ 49, BROTLI_TRANSFORM_OMIT_LAST_4, 49,
+ 49, BROTLI_TRANSFORM_IDENTITY, 22,
+ 49, BROTLI_TRANSFORM_UPPERCASE_ALL, 49,
+ 49, BROTLI_TRANSFORM_IDENTITY, 23,
+ 49, BROTLI_TRANSFORM_IDENTITY, 24,
+ 49, BROTLI_TRANSFORM_IDENTITY, 25,
+ 49, BROTLI_TRANSFORM_OMIT_LAST_7, 49,
+ 49, BROTLI_TRANSFORM_OMIT_LAST_1, 26,
+ 49, BROTLI_TRANSFORM_IDENTITY, 27,
+ 49, BROTLI_TRANSFORM_IDENTITY, 28,
+ 0, BROTLI_TRANSFORM_IDENTITY, 12,
+ 49, BROTLI_TRANSFORM_IDENTITY, 29,
+ 49, BROTLI_TRANSFORM_OMIT_FIRST_9, 49,
+ 49, BROTLI_TRANSFORM_OMIT_FIRST_7, 49,
+ 49, BROTLI_TRANSFORM_OMIT_LAST_6, 49,
+ 49, BROTLI_TRANSFORM_IDENTITY, 21,
+ 49, BROTLI_TRANSFORM_UPPERCASE_FIRST, 1,
+ 49, BROTLI_TRANSFORM_OMIT_LAST_8, 49,
+ 49, BROTLI_TRANSFORM_IDENTITY, 31,
+ 49, BROTLI_TRANSFORM_IDENTITY, 32,
+ 47, BROTLI_TRANSFORM_IDENTITY, 3,
+ 49, BROTLI_TRANSFORM_OMIT_LAST_5, 49,
+ 49, BROTLI_TRANSFORM_OMIT_LAST_9, 49,
+ 0, BROTLI_TRANSFORM_UPPERCASE_FIRST, 1,
+ 49, BROTLI_TRANSFORM_UPPERCASE_FIRST, 8,
+ 5, BROTLI_TRANSFORM_IDENTITY, 21,
+ 49, BROTLI_TRANSFORM_UPPERCASE_ALL, 0,
+ 49, BROTLI_TRANSFORM_UPPERCASE_FIRST, 10,
+ 49, BROTLI_TRANSFORM_IDENTITY, 30,
+ 0, BROTLI_TRANSFORM_IDENTITY, 5,
+ 35, BROTLI_TRANSFORM_IDENTITY, 49,
+ 47, BROTLI_TRANSFORM_IDENTITY, 2,
+ 49, BROTLI_TRANSFORM_UPPERCASE_FIRST, 17,
+ 49, BROTLI_TRANSFORM_IDENTITY, 36,
+ 49, BROTLI_TRANSFORM_IDENTITY, 33,
+ 5, BROTLI_TRANSFORM_IDENTITY, 0,
+ 49, BROTLI_TRANSFORM_UPPERCASE_FIRST, 21,
+ 49, BROTLI_TRANSFORM_UPPERCASE_FIRST, 5,
+ 49, BROTLI_TRANSFORM_IDENTITY, 37,
+ 0, BROTLI_TRANSFORM_IDENTITY, 30,
+ 49, BROTLI_TRANSFORM_IDENTITY, 38,
+ 0, BROTLI_TRANSFORM_UPPERCASE_ALL, 0,
+ 49, BROTLI_TRANSFORM_IDENTITY, 39,
+ 0, BROTLI_TRANSFORM_UPPERCASE_ALL, 49,
+ 49, BROTLI_TRANSFORM_IDENTITY, 34,
+ 49, BROTLI_TRANSFORM_UPPERCASE_ALL, 8,
+ 49, BROTLI_TRANSFORM_UPPERCASE_FIRST, 12,
+ 0, BROTLI_TRANSFORM_IDENTITY, 21,
+ 49, BROTLI_TRANSFORM_IDENTITY, 40,
+ 0, BROTLI_TRANSFORM_UPPERCASE_FIRST, 12,
+ 49, BROTLI_TRANSFORM_IDENTITY, 41,
+ 49, BROTLI_TRANSFORM_IDENTITY, 42,
+ 49, BROTLI_TRANSFORM_UPPERCASE_ALL, 17,
+ 49, BROTLI_TRANSFORM_IDENTITY, 43,
+ 0, BROTLI_TRANSFORM_UPPERCASE_FIRST, 5,
+ 49, BROTLI_TRANSFORM_UPPERCASE_ALL, 10,
+ 0, BROTLI_TRANSFORM_IDENTITY, 34,
+ 49, BROTLI_TRANSFORM_UPPERCASE_FIRST, 33,
+ 49, BROTLI_TRANSFORM_IDENTITY, 44,
+ 49, BROTLI_TRANSFORM_UPPERCASE_ALL, 5,
+ 45, BROTLI_TRANSFORM_IDENTITY, 49,
+ 0, BROTLI_TRANSFORM_IDENTITY, 33,
+ 49, BROTLI_TRANSFORM_UPPERCASE_FIRST, 30,
+ 49, BROTLI_TRANSFORM_UPPERCASE_ALL, 30,
+ 49, BROTLI_TRANSFORM_IDENTITY, 46,
+ 49, BROTLI_TRANSFORM_UPPERCASE_ALL, 1,
+ 49, BROTLI_TRANSFORM_UPPERCASE_FIRST, 34,
+ 0, BROTLI_TRANSFORM_UPPERCASE_FIRST, 33,
+ 0, BROTLI_TRANSFORM_UPPERCASE_ALL, 30,
+ 0, BROTLI_TRANSFORM_UPPERCASE_ALL, 1,
+ 49, BROTLI_TRANSFORM_UPPERCASE_ALL, 33,
+ 49, BROTLI_TRANSFORM_UPPERCASE_ALL, 21,
+ 49, BROTLI_TRANSFORM_UPPERCASE_ALL, 12,
+ 0, BROTLI_TRANSFORM_UPPERCASE_ALL, 5,
+ 49, BROTLI_TRANSFORM_UPPERCASE_ALL, 34,
+ 0, BROTLI_TRANSFORM_UPPERCASE_ALL, 12,
+ 0, BROTLI_TRANSFORM_UPPERCASE_FIRST, 30,
+ 0, BROTLI_TRANSFORM_UPPERCASE_ALL, 34,
+ 0, BROTLI_TRANSFORM_UPPERCASE_FIRST, 34,
+};
+
+static const BrotliTransforms kBrotliTransforms = {
+ sizeof(kPrefixSuffix),
+ (const uint8_t*)kPrefixSuffix,
+ kPrefixSuffixMap,
+ sizeof(kTransformsData) / (3 * sizeof(kTransformsData[0])),
+ kTransformsData,
+ NULL, /* no extra parameters */
+ {0, 12, 27, 23, 42, 63, 56, 48, 59, 64}
+};
+
+const BrotliTransforms* BrotliGetTransforms(void) {
+ return &kBrotliTransforms;
+}
+
+static int ToUpperCase(uint8_t* p) {
+ if (p[0] < 0xC0) {
+ if (p[0] >= 'a' && p[0] <= 'z') {
+ p[0] ^= 32;
+ }
+ return 1;
+ }
+ /* An overly simplified uppercasing model for UTF-8. */
+ if (p[0] < 0xE0) {
+ p[1] ^= 32;
+ return 2;
+ }
+ /* An arbitrary transform for three byte characters. */
+ p[2] ^= 5;
+ return 3;
+}
+
+static int Shift(uint8_t* word, int word_len, uint16_t parameter) {
+ /* Limited sign extension: scalar < (1 << 24). */
+ uint32_t scalar =
+ (parameter & 0x7FFFu) + (0x1000000u - (parameter & 0x8000u));
+ if (word[0] < 0x80) {
+ /* 1-byte rune / 0sssssss / 7 bit scalar (ASCII). */
+ scalar += (uint32_t)word[0];
+ word[0] = (uint8_t)(scalar & 0x7Fu);
+ return 1;
+ } else if (word[0] < 0xC0) {
+ /* Continuation / 10AAAAAA. */
+ return 1;
+ } else if (word[0] < 0xE0) {
+ /* 2-byte rune / 110sssss AAssssss / 11 bit scalar. */
+ if (word_len < 2) return 1;
+ scalar += (uint32_t)((word[1] & 0x3Fu) | ((word[0] & 0x1Fu) << 6u));
+ word[0] = (uint8_t)(0xC0 | ((scalar >> 6u) & 0x1F));
+ word[1] = (uint8_t)((word[1] & 0xC0) | (scalar & 0x3F));
+ return 2;
+ } else if (word[0] < 0xF0) {
+ /* 3-byte rune / 1110ssss AAssssss BBssssss / 16 bit scalar. */
+ if (word_len < 3) return word_len;
+ scalar += (uint32_t)((word[2] & 0x3Fu) | ((word[1] & 0x3Fu) << 6u) |
+ ((word[0] & 0x0Fu) << 12u));
+ word[0] = (uint8_t)(0xE0 | ((scalar >> 12u) & 0x0F));
+ word[1] = (uint8_t)((word[1] & 0xC0) | ((scalar >> 6u) & 0x3F));
+ word[2] = (uint8_t)((word[2] & 0xC0) | (scalar & 0x3F));
+ return 3;
+ } else if (word[0] < 0xF8) {
+ /* 4-byte rune / 11110sss AAssssss BBssssss CCssssss / 21 bit scalar. */
+ if (word_len < 4) return word_len;
+ scalar += (uint32_t)((word[3] & 0x3Fu) | ((word[2] & 0x3Fu) << 6u) |
+ ((word[1] & 0x3Fu) << 12u) | ((word[0] & 0x07u) << 18u));
+ word[0] = (uint8_t)(0xF0 | ((scalar >> 18u) & 0x07));
+ word[1] = (uint8_t)((word[1] & 0xC0) | ((scalar >> 12u) & 0x3F));
+ word[2] = (uint8_t)((word[2] & 0xC0) | ((scalar >> 6u) & 0x3F));
+ word[3] = (uint8_t)((word[3] & 0xC0) | (scalar & 0x3F));
+ return 4;
+ }
+ return 1;
+}
+
+int BrotliTransformDictionaryWord(uint8_t* dst, const uint8_t* word, int len,
+ const BrotliTransforms* transforms, int transform_idx) {
+ int idx = 0;
+ const uint8_t* prefix = BROTLI_TRANSFORM_PREFIX(transforms, transform_idx);
+ uint8_t type = BROTLI_TRANSFORM_TYPE(transforms, transform_idx);
+ const uint8_t* suffix = BROTLI_TRANSFORM_SUFFIX(transforms, transform_idx);
+ {
+ int prefix_len = *prefix++;
+ while (prefix_len--) { dst[idx++] = *prefix++; }
+ }
+ {
+ const int t = type;
+ int i = 0;
+ if (t <= BROTLI_TRANSFORM_OMIT_LAST_9) {
+ len -= t;
+ } else if (t >= BROTLI_TRANSFORM_OMIT_FIRST_1
+ && t <= BROTLI_TRANSFORM_OMIT_FIRST_9) {
+ int skip = t - (BROTLI_TRANSFORM_OMIT_FIRST_1 - 1);
+ word += skip;
+ len -= skip;
+ }
+ while (i < len) { dst[idx++] = word[i++]; }
+ if (t == BROTLI_TRANSFORM_UPPERCASE_FIRST) {
+ ToUpperCase(&dst[idx - len]);
+ } else if (t == BROTLI_TRANSFORM_UPPERCASE_ALL) {
+ uint8_t* uppercase = &dst[idx - len];
+ while (len > 0) {
+ int step = ToUpperCase(uppercase);
+ uppercase += step;
+ len -= step;
+ }
+ } else if (t == BROTLI_TRANSFORM_SHIFT_FIRST) {
+ uint16_t param = (uint16_t)(transforms->params[transform_idx * 2]
+ + (transforms->params[transform_idx * 2 + 1] << 8u));
+ Shift(&dst[idx - len], len, param);
+ } else if (t == BROTLI_TRANSFORM_SHIFT_ALL) {
+ uint16_t param = (uint16_t)(transforms->params[transform_idx * 2]
+ + (transforms->params[transform_idx * 2 + 1] << 8u));
+ uint8_t* shift = &dst[idx - len];
+ while (len > 0) {
+ int step = Shift(shift, len, param);
+ shift += step;
+ len -= step;
+ }
+ }
+ }
+ {
+ int suffix_len = *suffix++;
+ while (suffix_len--) { dst[idx++] = *suffix++; }
+ return idx;
+ }
+}
+
+#if defined(__cplusplus) || defined(c_plusplus)
+} /* extern "C" */
+#endif
diff --git a/thirdparty/brotli/common/transform.h b/thirdparty/brotli/common/transform.h
new file mode 100644
index 0000000000..b6f86cc7d5
--- /dev/null
+++ b/thirdparty/brotli/common/transform.h
@@ -0,0 +1,85 @@
+/* transforms is a part of ABI, but not API.
+
+ It means that there are some functions that are supposed to be in "common"
+ library, but header itself is not placed into include/brotli. This way,
+ aforementioned functions will be available only to brotli internals.
+ */
+
+#ifndef BROTLI_COMMON_TRANSFORM_H_
+#define BROTLI_COMMON_TRANSFORM_H_
+
+#include <brotli/port.h>
+#include <brotli/types.h>
+
+#if defined(__cplusplus) || defined(c_plusplus)
+extern "C" {
+#endif
+
+enum BrotliWordTransformType {
+ BROTLI_TRANSFORM_IDENTITY = 0,
+ BROTLI_TRANSFORM_OMIT_LAST_1 = 1,
+ BROTLI_TRANSFORM_OMIT_LAST_2 = 2,
+ BROTLI_TRANSFORM_OMIT_LAST_3 = 3,
+ BROTLI_TRANSFORM_OMIT_LAST_4 = 4,
+ BROTLI_TRANSFORM_OMIT_LAST_5 = 5,
+ BROTLI_TRANSFORM_OMIT_LAST_6 = 6,
+ BROTLI_TRANSFORM_OMIT_LAST_7 = 7,
+ BROTLI_TRANSFORM_OMIT_LAST_8 = 8,
+ BROTLI_TRANSFORM_OMIT_LAST_9 = 9,
+ BROTLI_TRANSFORM_UPPERCASE_FIRST = 10,
+ BROTLI_TRANSFORM_UPPERCASE_ALL = 11,
+ BROTLI_TRANSFORM_OMIT_FIRST_1 = 12,
+ BROTLI_TRANSFORM_OMIT_FIRST_2 = 13,
+ BROTLI_TRANSFORM_OMIT_FIRST_3 = 14,
+ BROTLI_TRANSFORM_OMIT_FIRST_4 = 15,
+ BROTLI_TRANSFORM_OMIT_FIRST_5 = 16,
+ BROTLI_TRANSFORM_OMIT_FIRST_6 = 17,
+ BROTLI_TRANSFORM_OMIT_FIRST_7 = 18,
+ BROTLI_TRANSFORM_OMIT_FIRST_8 = 19,
+ BROTLI_TRANSFORM_OMIT_FIRST_9 = 20,
+ BROTLI_TRANSFORM_SHIFT_FIRST = 21,
+ BROTLI_TRANSFORM_SHIFT_ALL = 22,
+ BROTLI_NUM_TRANSFORM_TYPES /* Counts transforms, not a transform itself. */
+};
+
+#define BROTLI_TRANSFORMS_MAX_CUT_OFF BROTLI_TRANSFORM_OMIT_LAST_9
+
+typedef struct BrotliTransforms {
+ uint16_t prefix_suffix_size;
+ /* Last character must be null, so prefix_suffix_size must be at least 1. */
+ const uint8_t* prefix_suffix;
+ const uint16_t* prefix_suffix_map;
+ uint32_t num_transforms;
+ /* Each entry is a [prefix_id, transform, suffix_id] triplet. */
+ const uint8_t* transforms;
+ /* Shift for BROTLI_TRANSFORM_SHIFT_FIRST and BROTLI_TRANSFORM_SHIFT_ALL,
+ must be NULL if and only if no such transforms are present. */
+ const uint8_t* params;
+ /* Indices of transforms like ["", BROTLI_TRANSFORM_OMIT_LAST_#, ""].
+ 0-th element corresponds to ["", BROTLI_TRANSFORM_IDENTITY, ""].
+ -1, if cut-off transform does not exist. */
+ int16_t cutOffTransforms[BROTLI_TRANSFORMS_MAX_CUT_OFF + 1];
+} BrotliTransforms;
+
+/* T is BrotliTransforms*; result is uint8_t. */
+#define BROTLI_TRANSFORM_PREFIX_ID(T, I) ((T)->transforms[((I) * 3) + 0])
+#define BROTLI_TRANSFORM_TYPE(T, I) ((T)->transforms[((I) * 3) + 1])
+#define BROTLI_TRANSFORM_SUFFIX_ID(T, I) ((T)->transforms[((I) * 3) + 2])
+
+/* T is BrotliTransforms*; result is const uint8_t*. */
+#define BROTLI_TRANSFORM_PREFIX(T, I) (&(T)->prefix_suffix[ \
+ (T)->prefix_suffix_map[BROTLI_TRANSFORM_PREFIX_ID(T, I)]])
+#define BROTLI_TRANSFORM_SUFFIX(T, I) (&(T)->prefix_suffix[ \
+ (T)->prefix_suffix_map[BROTLI_TRANSFORM_SUFFIX_ID(T, I)]])
+
+BROTLI_COMMON_API const BrotliTransforms* BrotliGetTransforms(void);
+
+BROTLI_COMMON_API int BrotliTransformDictionaryWord(
+ uint8_t* dst, const uint8_t* word, int len,
+ const BrotliTransforms* transforms, int transform_idx);
+
+#if defined(__cplusplus) || defined(c_plusplus)
+} /* extern "C" */
+#endif
+
+#endif /* BROTLI_COMMON_TRANSFORM_H_ */
diff --git a/thirdparty/brotli/common/version.h b/thirdparty/brotli/common/version.h
new file mode 100644
index 0000000000..01b2998e25
--- /dev/null
+++ b/thirdparty/brotli/common/version.h
@@ -0,0 +1,26 @@
+/* Copyright 2016 Google Inc. All Rights Reserved.
+
+ Distributed under MIT license.
+ See file LICENSE for detail or copy at https://opensource.org/licenses/MIT
+*/
+
+/* Version definition. */
+
+#ifndef BROTLI_COMMON_VERSION_H_
+#define BROTLI_COMMON_VERSION_H_
+
+/* This macro should only be used when library is compiled together with client.
+ If library is dynamically linked, use BrotliDecoderVersion and
+ BrotliEncoderVersion methods. */
+
+/* Semantic version, calculated as (MAJOR << 24) | (MINOR << 12) | PATCH */
+#define BROTLI_VERSION 0x1000009
+
+/* This macro is used by build system to produce Libtool-friendly soname. See
+ https://www.gnu.org/software/libtool/manual/html_node/Libtool-versioning.html
+ */
+
+/* ABI version, calculated as (CURRENT << 24) | (REVISION << 12) | AGE */
+#define BROTLI_ABI_VERSION 0x1009000
+
+#endif /* BROTLI_COMMON_VERSION_H_ */
diff --git a/thirdparty/brotli/dec/bit_reader.c b/thirdparty/brotli/dec/bit_reader.c
new file mode 100644
index 0000000000..3dc848b7dc
--- /dev/null
+++ b/thirdparty/brotli/dec/bit_reader.c
@@ -0,0 +1,76 @@
+/* Copyright 2013 Google Inc. All Rights Reserved.
+
+ Distributed under MIT license.
+ See file LICENSE for detail or copy at https://opensource.org/licenses/MIT
+*/
+
+/* Bit reading helpers */
+
+#include "bit_reader.h"
+
+#include "../common/platform.h"
+#include <brotli/types.h>
+
+#if defined(__cplusplus) || defined(c_plusplus)
+extern "C" {
+#endif
+
+const uint32_t kBrotliBitMask[33] = { 0x00000000,
+ 0x00000001, 0x00000003, 0x00000007, 0x0000000F,
+ 0x0000001F, 0x0000003F, 0x0000007F, 0x000000FF,
+ 0x000001FF, 0x000003FF, 0x000007FF, 0x00000FFF,
+ 0x00001FFF, 0x00003FFF, 0x00007FFF, 0x0000FFFF,
+ 0x0001FFFF, 0x0003FFFF, 0x0007FFFF, 0x000FFFFF,
+ 0x001FFFFF, 0x003FFFFF, 0x007FFFFF, 0x00FFFFFF,
+ 0x01FFFFFF, 0x03FFFFFF, 0x07FFFFFF, 0x0FFFFFFF,
+ 0x1FFFFFFF, 0x3FFFFFFF, 0x7FFFFFFF, 0xFFFFFFFF
+};
+
+void BrotliInitBitReader(BrotliBitReader* const br) {
+ br->val_ = 0;
+ br->bit_pos_ = sizeof(br->val_) << 3;
+}
+
+BROTLI_BOOL BrotliWarmupBitReader(BrotliBitReader* const br) {
+ size_t aligned_read_mask = (sizeof(br->val_) >> 1) - 1;
+ /* Fixing alignment after unaligned BrotliFillWindow would result accumulator
+ overflow. If unalignment is caused by BrotliSafeReadBits, then there is
+ enough space in accumulator to fix alignment. */
+ if (!BROTLI_ALIGNED_READ) {
+ aligned_read_mask = 0;
+ }
+ if (BrotliGetAvailableBits(br) == 0) {
+ if (!BrotliPullByte(br)) {
+ return BROTLI_FALSE;
+ }
+ }
+
+ while ((((size_t)br->next_in) & aligned_read_mask) != 0) {
+ if (!BrotliPullByte(br)) {
+ /* If we consumed all the input, we don't care about the alignment. */
+ return BROTLI_TRUE;
+ }
+ }
+ return BROTLI_TRUE;
+}
+
+BROTLI_BOOL BrotliSafeReadBits32Slow(BrotliBitReader* const br,
+ uint32_t n_bits, uint32_t* val) {
+ uint32_t low_val;
+ uint32_t high_val;
+ BrotliBitReaderState memento;
+ BROTLI_DCHECK(n_bits <= 32);
+ BROTLI_DCHECK(n_bits > 24);
+ BrotliBitReaderSaveState(br, &memento);
+ if (!BrotliSafeReadBits(br, 16, &low_val) ||
+ !BrotliSafeReadBits(br, n_bits - 16, &high_val)) {
+ BrotliBitReaderRestoreState(br, &memento);
+ return BROTLI_FALSE;
+ }
+ *val = low_val | (high_val << 16);
+ return BROTLI_TRUE;
+}
+
+#if defined(__cplusplus) || defined(c_plusplus)
+} /* extern "C" */
+#endif
diff --git a/thirdparty/brotli/dec/bit_reader.h b/thirdparty/brotli/dec/bit_reader.h
new file mode 100644
index 0000000000..3906455103
--- /dev/null
+++ b/thirdparty/brotli/dec/bit_reader.h
@@ -0,0 +1,361 @@
+/* Copyright 2013 Google Inc. All Rights Reserved.
+
+ Distributed under MIT license.
+ See file LICENSE for detail or copy at https://opensource.org/licenses/MIT
+*/
+
+/* Bit reading helpers */
+
+#ifndef BROTLI_DEC_BIT_READER_H_
+#define BROTLI_DEC_BIT_READER_H_
+
+#include <string.h> /* memcpy */
+
+#include "../common/constants.h"
+#include "../common/platform.h"
+#include <brotli/types.h>
+
+#if defined(__cplusplus) || defined(c_plusplus)
+extern "C" {
+#endif
+
+#define BROTLI_SHORT_FILL_BIT_WINDOW_READ (sizeof(brotli_reg_t) >> 1)
+
+BROTLI_INTERNAL extern const uint32_t kBrotliBitMask[33];
+
+static BROTLI_INLINE uint32_t BitMask(uint32_t n) {
+ if (BROTLI_IS_CONSTANT(n) || BROTLI_HAS_UBFX) {
+ /* Masking with this expression turns to a single
+ "Unsigned Bit Field Extract" UBFX instruction on ARM. */
+ return ~((0xFFFFFFFFu) << n);
+ } else {
+ return kBrotliBitMask[n];
+ }
+}
+
+typedef struct {
+ brotli_reg_t val_; /* pre-fetched bits */
+ uint32_t bit_pos_; /* current bit-reading position in val_ */
+ const uint8_t* next_in; /* the byte we're reading from */
+ size_t avail_in;
+} BrotliBitReader;
+
+typedef struct {
+ brotli_reg_t val_;
+ uint32_t bit_pos_;
+ const uint8_t* next_in;
+ size_t avail_in;
+} BrotliBitReaderState;
+
+/* Initializes the BrotliBitReader fields. */
+BROTLI_INTERNAL void BrotliInitBitReader(BrotliBitReader* const br);
+
+/* Ensures that accumulator is not empty.
+ May consume up to sizeof(brotli_reg_t) - 1 bytes of input.
+ Returns BROTLI_FALSE if data is required but there is no input available.
+ For BROTLI_ALIGNED_READ this function also prepares bit reader for aligned
+ reading. */
+BROTLI_INTERNAL BROTLI_BOOL BrotliWarmupBitReader(BrotliBitReader* const br);
+
+/* Fallback for BrotliSafeReadBits32. Extracted as noninlined method to unburden
+ the main code-path. Never called for RFC brotli streams, required only for
+ "large-window" mode and other extensions. */
+BROTLI_INTERNAL BROTLI_NOINLINE BROTLI_BOOL BrotliSafeReadBits32Slow(
+ BrotliBitReader* const br, uint32_t n_bits, uint32_t* val);
+
+static BROTLI_INLINE void BrotliBitReaderSaveState(
+ BrotliBitReader* const from, BrotliBitReaderState* to) {
+ to->val_ = from->val_;
+ to->bit_pos_ = from->bit_pos_;
+ to->next_in = from->next_in;
+ to->avail_in = from->avail_in;
+}
+
+static BROTLI_INLINE void BrotliBitReaderRestoreState(
+ BrotliBitReader* const to, BrotliBitReaderState* from) {
+ to->val_ = from->val_;
+ to->bit_pos_ = from->bit_pos_;
+ to->next_in = from->next_in;
+ to->avail_in = from->avail_in;
+}
+
+static BROTLI_INLINE uint32_t BrotliGetAvailableBits(
+ const BrotliBitReader* br) {
+ return (BROTLI_64_BITS ? 64 : 32) - br->bit_pos_;
+}
+
+/* Returns amount of unread bytes the bit reader still has buffered from the
+ BrotliInput, including whole bytes in br->val_. Result is capped with
+ maximal ring-buffer size (larger number won't be utilized anyway). */
+static BROTLI_INLINE size_t BrotliGetRemainingBytes(BrotliBitReader* br) {
+ static const size_t kCap = (size_t)1 << BROTLI_LARGE_MAX_WBITS;
+ if (br->avail_in > kCap) return kCap;
+ return br->avail_in + (BrotliGetAvailableBits(br) >> 3);
+}
+
+/* Checks if there is at least |num| bytes left in the input ring-buffer
+ (excluding the bits remaining in br->val_). */
+static BROTLI_INLINE BROTLI_BOOL BrotliCheckInputAmount(
+ BrotliBitReader* const br, size_t num) {
+ return TO_BROTLI_BOOL(br->avail_in >= num);
+}
+
+/* Guarantees that there are at least |n_bits| + 1 bits in accumulator.
+ Precondition: accumulator contains at least 1 bit.
+ |n_bits| should be in the range [1..24] for regular build. For portable
+ non-64-bit little-endian build only 16 bits are safe to request. */
+static BROTLI_INLINE void BrotliFillBitWindow(
+ BrotliBitReader* const br, uint32_t n_bits) {
+#if (BROTLI_64_BITS)
+ if (!BROTLI_ALIGNED_READ && BROTLI_IS_CONSTANT(n_bits) && (n_bits <= 8)) {
+ uint32_t bit_pos = br->bit_pos_;
+ if (bit_pos >= 56) {
+ br->val_ =
+ (br->val_ >> 56) | (BROTLI_UNALIGNED_LOAD64LE(br->next_in) << 8);
+ br->bit_pos_ =
+ bit_pos ^ 56; /* here same as -= 56 because of the if condition */
+ br->avail_in -= 7;
+ br->next_in += 7;
+ }
+ } else if (
+ !BROTLI_ALIGNED_READ && BROTLI_IS_CONSTANT(n_bits) && (n_bits <= 16)) {
+ uint32_t bit_pos = br->bit_pos_;
+ if (bit_pos >= 48) {
+ br->val_ =
+ (br->val_ >> 48) | (BROTLI_UNALIGNED_LOAD64LE(br->next_in) << 16);
+ br->bit_pos_ =
+ bit_pos ^ 48; /* here same as -= 48 because of the if condition */
+ br->avail_in -= 6;
+ br->next_in += 6;
+ }
+ } else {
+ uint32_t bit_pos = br->bit_pos_;
+ if (bit_pos >= 32) {
+ br->val_ = (br->val_ >> 32) |
+ (((uint64_t)BROTLI_UNALIGNED_LOAD32LE(br->next_in)) << 32);
+ br->bit_pos_ =
+ bit_pos ^ 32; /* here same as -= 32 because of the if condition */
+ br->avail_in -= BROTLI_SHORT_FILL_BIT_WINDOW_READ;
+ br->next_in += BROTLI_SHORT_FILL_BIT_WINDOW_READ;
+ }
+ }
+#else
+ if (!BROTLI_ALIGNED_READ && BROTLI_IS_CONSTANT(n_bits) && (n_bits <= 8)) {
+ uint32_t bit_pos = br->bit_pos_;
+ if (bit_pos >= 24) {
+ br->val_ =
+ (br->val_ >> 24) | (BROTLI_UNALIGNED_LOAD32LE(br->next_in) << 8);
+ br->bit_pos_ =
+ bit_pos ^ 24; /* here same as -= 24 because of the if condition */
+ br->avail_in -= 3;
+ br->next_in += 3;
+ }
+ } else {
+ uint32_t bit_pos = br->bit_pos_;
+ if (bit_pos >= 16) {
+ br->val_ = (br->val_ >> 16) |
+ (((uint32_t)BROTLI_UNALIGNED_LOAD16LE(br->next_in)) << 16);
+ br->bit_pos_ =
+ bit_pos ^ 16; /* here same as -= 16 because of the if condition */
+ br->avail_in -= BROTLI_SHORT_FILL_BIT_WINDOW_READ;
+ br->next_in += BROTLI_SHORT_FILL_BIT_WINDOW_READ;
+ }
+ }
+#endif
+}
+
+/* Mostly like BrotliFillBitWindow, but guarantees only 16 bits and reads no
+ more than BROTLI_SHORT_FILL_BIT_WINDOW_READ bytes of input. */
+static BROTLI_INLINE void BrotliFillBitWindow16(BrotliBitReader* const br) {
+ BrotliFillBitWindow(br, 17);
+}
+
+/* Tries to pull one byte of input to accumulator.
+ Returns BROTLI_FALSE if there is no input available. */
+static BROTLI_INLINE BROTLI_BOOL BrotliPullByte(BrotliBitReader* const br) {
+ if (br->avail_in == 0) {
+ return BROTLI_FALSE;
+ }
+ br->val_ >>= 8;
+#if (BROTLI_64_BITS)
+ br->val_ |= ((uint64_t)*br->next_in) << 56;
+#else
+ br->val_ |= ((uint32_t)*br->next_in) << 24;
+#endif
+ br->bit_pos_ -= 8;
+ --br->avail_in;
+ ++br->next_in;
+ return BROTLI_TRUE;
+}
+
+/* Returns currently available bits.
+ The number of valid bits could be calculated by BrotliGetAvailableBits. */
+static BROTLI_INLINE brotli_reg_t BrotliGetBitsUnmasked(
+ BrotliBitReader* const br) {
+ return br->val_ >> br->bit_pos_;
+}
+
+/* Like BrotliGetBits, but does not mask the result.
+ The result contains at least 16 valid bits. */
+static BROTLI_INLINE uint32_t BrotliGet16BitsUnmasked(
+ BrotliBitReader* const br) {
+ BrotliFillBitWindow(br, 16);
+ return (uint32_t)BrotliGetBitsUnmasked(br);
+}
+
+/* Returns the specified number of bits from |br| without advancing bit
+ position. */
+static BROTLI_INLINE uint32_t BrotliGetBits(
+ BrotliBitReader* const br, uint32_t n_bits) {
+ BrotliFillBitWindow(br, n_bits);
+ return (uint32_t)BrotliGetBitsUnmasked(br) & BitMask(n_bits);
+}
+
+/* Tries to peek the specified amount of bits. Returns BROTLI_FALSE, if there
+ is not enough input. */
+static BROTLI_INLINE BROTLI_BOOL BrotliSafeGetBits(
+ BrotliBitReader* const br, uint32_t n_bits, uint32_t* val) {
+ while (BrotliGetAvailableBits(br) < n_bits) {
+ if (!BrotliPullByte(br)) {
+ return BROTLI_FALSE;
+ }
+ }
+ *val = (uint32_t)BrotliGetBitsUnmasked(br) & BitMask(n_bits);
+ return BROTLI_TRUE;
+}
+
+/* Advances the bit pos by |n_bits|. */
+static BROTLI_INLINE void BrotliDropBits(
+ BrotliBitReader* const br, uint32_t n_bits) {
+ br->bit_pos_ += n_bits;
+}
+
+static BROTLI_INLINE void BrotliBitReaderUnload(BrotliBitReader* br) {
+ uint32_t unused_bytes = BrotliGetAvailableBits(br) >> 3;
+ uint32_t unused_bits = unused_bytes << 3;
+ br->avail_in += unused_bytes;
+ br->next_in -= unused_bytes;
+ if (unused_bits == sizeof(br->val_) << 3) {
+ br->val_ = 0;
+ } else {
+ br->val_ <<= unused_bits;
+ }
+ br->bit_pos_ += unused_bits;
+}
+
+/* Reads the specified number of bits from |br| and advances the bit pos.
+ Precondition: accumulator MUST contain at least |n_bits|. */
+static BROTLI_INLINE void BrotliTakeBits(
+ BrotliBitReader* const br, uint32_t n_bits, uint32_t* val) {
+ *val = (uint32_t)BrotliGetBitsUnmasked(br) & BitMask(n_bits);
+ BROTLI_LOG(("[BrotliTakeBits] %d %d %d val: %6x\n",
+ (int)br->avail_in, (int)br->bit_pos_, (int)n_bits, (int)*val));
+ BrotliDropBits(br, n_bits);
+}
+
+/* Reads the specified number of bits from |br| and advances the bit pos.
+ Assumes that there is enough input to perform BrotliFillBitWindow.
+ Up to 24 bits are allowed to be requested from this method. */
+static BROTLI_INLINE uint32_t BrotliReadBits24(
+ BrotliBitReader* const br, uint32_t n_bits) {
+ BROTLI_DCHECK(n_bits <= 24);
+ if (BROTLI_64_BITS || (n_bits <= 16)) {
+ uint32_t val;
+ BrotliFillBitWindow(br, n_bits);
+ BrotliTakeBits(br, n_bits, &val);
+ return val;
+ } else {
+ uint32_t low_val;
+ uint32_t high_val;
+ BrotliFillBitWindow(br, 16);
+ BrotliTakeBits(br, 16, &low_val);
+ BrotliFillBitWindow(br, 8);
+ BrotliTakeBits(br, n_bits - 16, &high_val);
+ return low_val | (high_val << 16);
+ }
+}
+
+/* Same as BrotliReadBits24, but allows reading up to 32 bits. */
+static BROTLI_INLINE uint32_t BrotliReadBits32(
+ BrotliBitReader* const br, uint32_t n_bits) {
+ BROTLI_DCHECK(n_bits <= 32);
+ if (BROTLI_64_BITS || (n_bits <= 16)) {
+ uint32_t val;
+ BrotliFillBitWindow(br, n_bits);
+ BrotliTakeBits(br, n_bits, &val);
+ return val;
+ } else {
+ uint32_t low_val;
+ uint32_t high_val;
+ BrotliFillBitWindow(br, 16);
+ BrotliTakeBits(br, 16, &low_val);
+ BrotliFillBitWindow(br, 16);
+ BrotliTakeBits(br, n_bits - 16, &high_val);
+ return low_val | (high_val << 16);
+ }
+}
+
+/* Tries to read the specified amount of bits. Returns BROTLI_FALSE, if there
+ is not enough input. |n_bits| MUST be positive.
+ Up to 24 bits are allowed to be requested from this method. */
+static BROTLI_INLINE BROTLI_BOOL BrotliSafeReadBits(
+ BrotliBitReader* const br, uint32_t n_bits, uint32_t* val) {
+ BROTLI_DCHECK(n_bits <= 24);
+ while (BrotliGetAvailableBits(br) < n_bits) {
+ if (!BrotliPullByte(br)) {
+ return BROTLI_FALSE;
+ }
+ }
+ BrotliTakeBits(br, n_bits, val);
+ return BROTLI_TRUE;
+}
+
+/* Same as BrotliSafeReadBits, but allows reading up to 32 bits. */
+static BROTLI_INLINE BROTLI_BOOL BrotliSafeReadBits32(
+ BrotliBitReader* const br, uint32_t n_bits, uint32_t* val) {
+ BROTLI_DCHECK(n_bits <= 32);
+ if (BROTLI_64_BITS || (n_bits <= 24)) {
+ while (BrotliGetAvailableBits(br) < n_bits) {
+ if (!BrotliPullByte(br)) {
+ return BROTLI_FALSE;
+ }
+ }
+ BrotliTakeBits(br, n_bits, val);
+ return BROTLI_TRUE;
+ } else {
+ return BrotliSafeReadBits32Slow(br, n_bits, val);
+ }
+}
+
+/* Advances the bit reader position to the next byte boundary and verifies
+ that any skipped bits are set to zero. */
+static BROTLI_INLINE BROTLI_BOOL BrotliJumpToByteBoundary(BrotliBitReader* br) {
+ uint32_t pad_bits_count = BrotliGetAvailableBits(br) & 0x7;
+ uint32_t pad_bits = 0;
+ if (pad_bits_count != 0) {
+ BrotliTakeBits(br, pad_bits_count, &pad_bits);
+ }
+ return TO_BROTLI_BOOL(pad_bits == 0);
+}
+
+/* Copies remaining input bytes stored in the bit reader to the output. Value
+ |num| may not be larger than BrotliGetRemainingBytes. The bit reader must be
+ warmed up again after this. */
+static BROTLI_INLINE void BrotliCopyBytes(uint8_t* dest,
+ BrotliBitReader* br, size_t num) {
+ while (BrotliGetAvailableBits(br) >= 8 && num > 0) {
+ *dest = (uint8_t)BrotliGetBitsUnmasked(br);
+ BrotliDropBits(br, 8);
+ ++dest;
+ --num;
+ }
+ memcpy(dest, br->next_in, num);
+ br->avail_in -= num;
+ br->next_in += num;
+}
+
+#if defined(__cplusplus) || defined(c_plusplus)
+} /* extern "C" */
+#endif
+
+#endif /* BROTLI_DEC_BIT_READER_H_ */
diff --git a/thirdparty/brotli/dec/decode.c b/thirdparty/brotli/dec/decode.c
new file mode 100644
index 0000000000..2fe58a7b2f
--- /dev/null
+++ b/thirdparty/brotli/dec/decode.c
@@ -0,0 +1,2802 @@
+/* Copyright 2013 Google Inc. All Rights Reserved.
+
+ Distributed under MIT license.
+ See file LICENSE for detail or copy at https://opensource.org/licenses/MIT
+*/
+
+#include <brotli/decode.h>
+
+#include <stdlib.h> /* free, malloc */
+#include <string.h> /* memcpy, memset */
+
+#include "../common/constants.h"
+#include "../common/context.h"
+#include "../common/dictionary.h"
+#include "../common/platform.h"
+#include "../common/shared_dictionary_internal.h"
+#include "../common/transform.h"
+#include "../common/version.h"
+#include "bit_reader.h"
+#include "huffman.h"
+#include "prefix.h"
+#include "state.h"
+
+#if defined(BROTLI_TARGET_NEON)
+#include <arm_neon.h>
+#endif
+
+#if defined(__cplusplus) || defined(c_plusplus)
+extern "C" {
+#endif
+
+#define BROTLI_FAILURE(CODE) (BROTLI_DUMP(), CODE)
+
+#define BROTLI_LOG_UINT(name) \
+ BROTLI_LOG(("[%s] %s = %lu\n", __func__, #name, (unsigned long)(name)))
+#define BROTLI_LOG_ARRAY_INDEX(array_name, idx) \
+ BROTLI_LOG(("[%s] %s[%lu] = %lu\n", __func__, #array_name, \
+ (unsigned long)(idx), (unsigned long)array_name[idx]))
+
+#define HUFFMAN_TABLE_BITS 8U
+#define HUFFMAN_TABLE_MASK 0xFF
+
+/* We need the slack region for the following reasons:
+ - doing up to two 16-byte copies for fast backward copying
+ - inserting transformed dictionary word:
+ 255 prefix + 32 base + 255 suffix */
+static const uint32_t kRingBufferWriteAheadSlack = 542;
+
+static const uint8_t kCodeLengthCodeOrder[BROTLI_CODE_LENGTH_CODES] = {
+ 1, 2, 3, 4, 0, 5, 17, 6, 16, 7, 8, 9, 10, 11, 12, 13, 14, 15,
+};
+
+/* Static prefix code for the complex code length code lengths. */
+static const uint8_t kCodeLengthPrefixLength[16] = {
+ 2, 2, 2, 3, 2, 2, 2, 4, 2, 2, 2, 3, 2, 2, 2, 4,
+};
+
+static const uint8_t kCodeLengthPrefixValue[16] = {
+ 0, 4, 3, 2, 0, 4, 3, 1, 0, 4, 3, 2, 0, 4, 3, 5,
+};
+
+BROTLI_BOOL BrotliDecoderSetParameter(
+ BrotliDecoderState* state, BrotliDecoderParameter p, uint32_t value) {
+ if (state->state != BROTLI_STATE_UNINITED) return BROTLI_FALSE;
+ switch (p) {
+ case BROTLI_DECODER_PARAM_DISABLE_RING_BUFFER_REALLOCATION:
+ state->canny_ringbuffer_allocation = !!value ? 0 : 1;
+ return BROTLI_TRUE;
+
+ case BROTLI_DECODER_PARAM_LARGE_WINDOW:
+ state->large_window = TO_BROTLI_BOOL(!!value);
+ return BROTLI_TRUE;
+
+ default: return BROTLI_FALSE;
+ }
+}
+
+BrotliDecoderState* BrotliDecoderCreateInstance(
+ brotli_alloc_func alloc_func, brotli_free_func free_func, void* opaque) {
+ BrotliDecoderState* state = 0;
+ if (!alloc_func && !free_func) {
+ state = (BrotliDecoderState*)malloc(sizeof(BrotliDecoderState));
+ } else if (alloc_func && free_func) {
+ state = (BrotliDecoderState*)alloc_func(opaque, sizeof(BrotliDecoderState));
+ }
+ if (state == 0) {
+ BROTLI_DUMP();
+ return 0;
+ }
+ if (!BrotliDecoderStateInit(state, alloc_func, free_func, opaque)) {
+ BROTLI_DUMP();
+ if (!alloc_func && !free_func) {
+ free(state);
+ } else if (alloc_func && free_func) {
+ free_func(opaque, state);
+ }
+ return 0;
+ }
+ return state;
+}
+
+/* Deinitializes and frees BrotliDecoderState instance. */
+void BrotliDecoderDestroyInstance(BrotliDecoderState* state) {
+ if (!state) {
+ return;
+ } else {
+ brotli_free_func free_func = state->free_func;
+ void* opaque = state->memory_manager_opaque;
+ BrotliDecoderStateCleanup(state);
+ free_func(opaque, state);
+ }
+}
+
+/* Saves error code and converts it to BrotliDecoderResult. */
+static BROTLI_NOINLINE BrotliDecoderResult SaveErrorCode(
+ BrotliDecoderState* s, BrotliDecoderErrorCode e) {
+ s->error_code = (int)e;
+ switch (e) {
+ case BROTLI_DECODER_SUCCESS:
+ return BROTLI_DECODER_RESULT_SUCCESS;
+
+ case BROTLI_DECODER_NEEDS_MORE_INPUT:
+ return BROTLI_DECODER_RESULT_NEEDS_MORE_INPUT;
+
+ case BROTLI_DECODER_NEEDS_MORE_OUTPUT:
+ return BROTLI_DECODER_RESULT_NEEDS_MORE_OUTPUT;
+
+ default:
+ return BROTLI_DECODER_RESULT_ERROR;
+ }
+}
+
+/* Decodes WBITS by reading 1 - 7 bits, or 0x11 for "Large Window Brotli".
+ Precondition: bit-reader accumulator has at least 8 bits. */
+static BrotliDecoderErrorCode DecodeWindowBits(BrotliDecoderState* s,
+ BrotliBitReader* br) {
+ uint32_t n;
+ BROTLI_BOOL large_window = s->large_window;
+ s->large_window = BROTLI_FALSE;
+ BrotliTakeBits(br, 1, &n);
+ if (n == 0) {
+ s->window_bits = 16;
+ return BROTLI_DECODER_SUCCESS;
+ }
+ BrotliTakeBits(br, 3, &n);
+ if (n != 0) {
+ s->window_bits = 17 + n;
+ return BROTLI_DECODER_SUCCESS;
+ }
+ BrotliTakeBits(br, 3, &n);
+ if (n == 1) {
+ if (large_window) {
+ BrotliTakeBits(br, 1, &n);
+ if (n == 1) {
+ return BROTLI_FAILURE(BROTLI_DECODER_ERROR_FORMAT_WINDOW_BITS);
+ }
+ s->large_window = BROTLI_TRUE;
+ return BROTLI_DECODER_SUCCESS;
+ } else {
+ return BROTLI_FAILURE(BROTLI_DECODER_ERROR_FORMAT_WINDOW_BITS);
+ }
+ }
+ if (n != 0) {
+ s->window_bits = 8 + n;
+ return BROTLI_DECODER_SUCCESS;
+ }
+ s->window_bits = 17;
+ return BROTLI_DECODER_SUCCESS;
+}
+
+static BROTLI_INLINE void memmove16(uint8_t* dst, uint8_t* src) {
+#if defined(BROTLI_TARGET_NEON)
+ vst1q_u8(dst, vld1q_u8(src));
+#else
+ uint32_t buffer[4];
+ memcpy(buffer, src, 16);
+ memcpy(dst, buffer, 16);
+#endif
+}
+
+/* Decodes a number in the range [0..255], by reading 1 - 11 bits. */
+static BROTLI_NOINLINE BrotliDecoderErrorCode DecodeVarLenUint8(
+ BrotliDecoderState* s, BrotliBitReader* br, uint32_t* value) {
+ uint32_t bits;
+ switch (s->substate_decode_uint8) {
+ case BROTLI_STATE_DECODE_UINT8_NONE:
+ if (BROTLI_PREDICT_FALSE(!BrotliSafeReadBits(br, 1, &bits))) {
+ return BROTLI_DECODER_NEEDS_MORE_INPUT;
+ }
+ if (bits == 0) {
+ *value = 0;
+ return BROTLI_DECODER_SUCCESS;
+ }
+ /* Fall through. */
+
+ case BROTLI_STATE_DECODE_UINT8_SHORT:
+ if (BROTLI_PREDICT_FALSE(!BrotliSafeReadBits(br, 3, &bits))) {
+ s->substate_decode_uint8 = BROTLI_STATE_DECODE_UINT8_SHORT;
+ return BROTLI_DECODER_NEEDS_MORE_INPUT;
+ }
+ if (bits == 0) {
+ *value = 1;
+ s->substate_decode_uint8 = BROTLI_STATE_DECODE_UINT8_NONE;
+ return BROTLI_DECODER_SUCCESS;
+ }
+ /* Use output value as a temporary storage. It MUST be persisted. */
+ *value = bits;
+ /* Fall through. */
+
+ case BROTLI_STATE_DECODE_UINT8_LONG:
+ if (BROTLI_PREDICT_FALSE(!BrotliSafeReadBits(br, *value, &bits))) {
+ s->substate_decode_uint8 = BROTLI_STATE_DECODE_UINT8_LONG;
+ return BROTLI_DECODER_NEEDS_MORE_INPUT;
+ }
+ *value = (1U << *value) + bits;
+ s->substate_decode_uint8 = BROTLI_STATE_DECODE_UINT8_NONE;
+ return BROTLI_DECODER_SUCCESS;
+
+ default:
+ return
+ BROTLI_FAILURE(BROTLI_DECODER_ERROR_UNREACHABLE); /* COV_NF_LINE */
+ }
+}
+
+/* Decodes a metablock length and flags by reading 2 - 31 bits. */
+static BrotliDecoderErrorCode BROTLI_NOINLINE DecodeMetaBlockLength(
+ BrotliDecoderState* s, BrotliBitReader* br) {
+ uint32_t bits;
+ int i;
+ for (;;) {
+ switch (s->substate_metablock_header) {
+ case BROTLI_STATE_METABLOCK_HEADER_NONE:
+ if (!BrotliSafeReadBits(br, 1, &bits)) {
+ return BROTLI_DECODER_NEEDS_MORE_INPUT;
+ }
+ s->is_last_metablock = bits ? 1 : 0;
+ s->meta_block_remaining_len = 0;
+ s->is_uncompressed = 0;
+ s->is_metadata = 0;
+ if (!s->is_last_metablock) {
+ s->substate_metablock_header = BROTLI_STATE_METABLOCK_HEADER_NIBBLES;
+ break;
+ }
+ s->substate_metablock_header = BROTLI_STATE_METABLOCK_HEADER_EMPTY;
+ /* Fall through. */
+
+ case BROTLI_STATE_METABLOCK_HEADER_EMPTY:
+ if (!BrotliSafeReadBits(br, 1, &bits)) {
+ return BROTLI_DECODER_NEEDS_MORE_INPUT;
+ }
+ if (bits) {
+ s->substate_metablock_header = BROTLI_STATE_METABLOCK_HEADER_NONE;
+ return BROTLI_DECODER_SUCCESS;
+ }
+ s->substate_metablock_header = BROTLI_STATE_METABLOCK_HEADER_NIBBLES;
+ /* Fall through. */
+
+ case BROTLI_STATE_METABLOCK_HEADER_NIBBLES:
+ if (!BrotliSafeReadBits(br, 2, &bits)) {
+ return BROTLI_DECODER_NEEDS_MORE_INPUT;
+ }
+ s->size_nibbles = (uint8_t)(bits + 4);
+ s->loop_counter = 0;
+ if (bits == 3) {
+ s->is_metadata = 1;
+ s->substate_metablock_header = BROTLI_STATE_METABLOCK_HEADER_RESERVED;
+ break;
+ }
+ s->substate_metablock_header = BROTLI_STATE_METABLOCK_HEADER_SIZE;
+ /* Fall through. */
+
+ case BROTLI_STATE_METABLOCK_HEADER_SIZE:
+ i = s->loop_counter;
+ for (; i < (int)s->size_nibbles; ++i) {
+ if (!BrotliSafeReadBits(br, 4, &bits)) {
+ s->loop_counter = i;
+ return BROTLI_DECODER_NEEDS_MORE_INPUT;
+ }
+ if (i + 1 == (int)s->size_nibbles && s->size_nibbles > 4 &&
+ bits == 0) {
+ return BROTLI_FAILURE(BROTLI_DECODER_ERROR_FORMAT_EXUBERANT_NIBBLE);
+ }
+ s->meta_block_remaining_len |= (int)(bits << (i * 4));
+ }
+ s->substate_metablock_header =
+ BROTLI_STATE_METABLOCK_HEADER_UNCOMPRESSED;
+ /* Fall through. */
+
+ case BROTLI_STATE_METABLOCK_HEADER_UNCOMPRESSED:
+ if (!s->is_last_metablock) {
+ if (!BrotliSafeReadBits(br, 1, &bits)) {
+ return BROTLI_DECODER_NEEDS_MORE_INPUT;
+ }
+ s->is_uncompressed = bits ? 1 : 0;
+ }
+ ++s->meta_block_remaining_len;
+ s->substate_metablock_header = BROTLI_STATE_METABLOCK_HEADER_NONE;
+ return BROTLI_DECODER_SUCCESS;
+
+ case BROTLI_STATE_METABLOCK_HEADER_RESERVED:
+ if (!BrotliSafeReadBits(br, 1, &bits)) {
+ return BROTLI_DECODER_NEEDS_MORE_INPUT;
+ }
+ if (bits != 0) {
+ return BROTLI_FAILURE(BROTLI_DECODER_ERROR_FORMAT_RESERVED);
+ }
+ s->substate_metablock_header = BROTLI_STATE_METABLOCK_HEADER_BYTES;
+ /* Fall through. */
+
+ case BROTLI_STATE_METABLOCK_HEADER_BYTES:
+ if (!BrotliSafeReadBits(br, 2, &bits)) {
+ return BROTLI_DECODER_NEEDS_MORE_INPUT;
+ }
+ if (bits == 0) {
+ s->substate_metablock_header = BROTLI_STATE_METABLOCK_HEADER_NONE;
+ return BROTLI_DECODER_SUCCESS;
+ }
+ s->size_nibbles = (uint8_t)bits;
+ s->substate_metablock_header = BROTLI_STATE_METABLOCK_HEADER_METADATA;
+ /* Fall through. */
+
+ case BROTLI_STATE_METABLOCK_HEADER_METADATA:
+ i = s->loop_counter;
+ for (; i < (int)s->size_nibbles; ++i) {
+ if (!BrotliSafeReadBits(br, 8, &bits)) {
+ s->loop_counter = i;
+ return BROTLI_DECODER_NEEDS_MORE_INPUT;
+ }
+ if (i + 1 == (int)s->size_nibbles && s->size_nibbles > 1 &&
+ bits == 0) {
+ return BROTLI_FAILURE(
+ BROTLI_DECODER_ERROR_FORMAT_EXUBERANT_META_NIBBLE);
+ }
+ s->meta_block_remaining_len |= (int)(bits << (i * 8));
+ }
+ ++s->meta_block_remaining_len;
+ s->substate_metablock_header = BROTLI_STATE_METABLOCK_HEADER_NONE;
+ return BROTLI_DECODER_SUCCESS;
+
+ default:
+ return
+ BROTLI_FAILURE(BROTLI_DECODER_ERROR_UNREACHABLE); /* COV_NF_LINE */
+ }
+ }
+}
+
+/* Decodes the Huffman code.
+ This method doesn't read data from the bit reader, BUT drops the amount of
+ bits that correspond to the decoded symbol.
+ bits MUST contain at least 15 (BROTLI_HUFFMAN_MAX_CODE_LENGTH) valid bits. */
+static BROTLI_INLINE uint32_t DecodeSymbol(uint32_t bits,
+ const HuffmanCode* table,
+ BrotliBitReader* br) {
+ BROTLI_HC_MARK_TABLE_FOR_FAST_LOAD(table);
+ BROTLI_HC_ADJUST_TABLE_INDEX(table, bits & HUFFMAN_TABLE_MASK);
+ if (BROTLI_HC_FAST_LOAD_BITS(table) > HUFFMAN_TABLE_BITS) {
+ uint32_t nbits = BROTLI_HC_FAST_LOAD_BITS(table) - HUFFMAN_TABLE_BITS;
+ BrotliDropBits(br, HUFFMAN_TABLE_BITS);
+ BROTLI_HC_ADJUST_TABLE_INDEX(table,
+ BROTLI_HC_FAST_LOAD_VALUE(table) +
+ ((bits >> HUFFMAN_TABLE_BITS) & BitMask(nbits)));
+ }
+ BrotliDropBits(br, BROTLI_HC_FAST_LOAD_BITS(table));
+ return BROTLI_HC_FAST_LOAD_VALUE(table);
+}
+
+/* Reads and decodes the next Huffman code from bit-stream.
+ This method peeks 16 bits of input and drops 0 - 15 of them. */
+static BROTLI_INLINE uint32_t ReadSymbol(const HuffmanCode* table,
+ BrotliBitReader* br) {
+ return DecodeSymbol(BrotliGet16BitsUnmasked(br), table, br);
+}
+
+/* Same as DecodeSymbol, but it is known that there is less than 15 bits of
+ input are currently available. */
+static BROTLI_NOINLINE BROTLI_BOOL SafeDecodeSymbol(
+ const HuffmanCode* table, BrotliBitReader* br, uint32_t* result) {
+ uint32_t val;
+ uint32_t available_bits = BrotliGetAvailableBits(br);
+ BROTLI_HC_MARK_TABLE_FOR_FAST_LOAD(table);
+ if (available_bits == 0) {
+ if (BROTLI_HC_FAST_LOAD_BITS(table) == 0) {
+ *result = BROTLI_HC_FAST_LOAD_VALUE(table);
+ return BROTLI_TRUE;
+ }
+ return BROTLI_FALSE; /* No valid bits at all. */
+ }
+ val = (uint32_t)BrotliGetBitsUnmasked(br);
+ BROTLI_HC_ADJUST_TABLE_INDEX(table, val & HUFFMAN_TABLE_MASK);
+ if (BROTLI_HC_FAST_LOAD_BITS(table) <= HUFFMAN_TABLE_BITS) {
+ if (BROTLI_HC_FAST_LOAD_BITS(table) <= available_bits) {
+ BrotliDropBits(br, BROTLI_HC_FAST_LOAD_BITS(table));
+ *result = BROTLI_HC_FAST_LOAD_VALUE(table);
+ return BROTLI_TRUE;
+ } else {
+ return BROTLI_FALSE; /* Not enough bits for the first level. */
+ }
+ }
+ if (available_bits <= HUFFMAN_TABLE_BITS) {
+ return BROTLI_FALSE; /* Not enough bits to move to the second level. */
+ }
+
+ /* Speculatively drop HUFFMAN_TABLE_BITS. */
+ val = (val & BitMask(BROTLI_HC_FAST_LOAD_BITS(table))) >> HUFFMAN_TABLE_BITS;
+ available_bits -= HUFFMAN_TABLE_BITS;
+ BROTLI_HC_ADJUST_TABLE_INDEX(table, BROTLI_HC_FAST_LOAD_VALUE(table) + val);
+ if (available_bits < BROTLI_HC_FAST_LOAD_BITS(table)) {
+ return BROTLI_FALSE; /* Not enough bits for the second level. */
+ }
+
+ BrotliDropBits(br, HUFFMAN_TABLE_BITS + BROTLI_HC_FAST_LOAD_BITS(table));
+ *result = BROTLI_HC_FAST_LOAD_VALUE(table);
+ return BROTLI_TRUE;
+}
+
+static BROTLI_INLINE BROTLI_BOOL SafeReadSymbol(
+ const HuffmanCode* table, BrotliBitReader* br, uint32_t* result) {
+ uint32_t val;
+ if (BROTLI_PREDICT_TRUE(BrotliSafeGetBits(br, 15, &val))) {
+ *result = DecodeSymbol(val, table, br);
+ return BROTLI_TRUE;
+ }
+ return SafeDecodeSymbol(table, br, result);
+}
+
+/* Makes a look-up in first level Huffman table. Peeks 8 bits. */
+static BROTLI_INLINE void PreloadSymbol(int safe,
+ const HuffmanCode* table,
+ BrotliBitReader* br,
+ uint32_t* bits,
+ uint32_t* value) {
+ if (safe) {
+ return;
+ }
+ BROTLI_HC_MARK_TABLE_FOR_FAST_LOAD(table);
+ BROTLI_HC_ADJUST_TABLE_INDEX(table, BrotliGetBits(br, HUFFMAN_TABLE_BITS));
+ *bits = BROTLI_HC_FAST_LOAD_BITS(table);
+ *value = BROTLI_HC_FAST_LOAD_VALUE(table);
+}
+
+/* Decodes the next Huffman code using data prepared by PreloadSymbol.
+ Reads 0 - 15 bits. Also peeks 8 following bits. */
+static BROTLI_INLINE uint32_t ReadPreloadedSymbol(const HuffmanCode* table,
+ BrotliBitReader* br,
+ uint32_t* bits,
+ uint32_t* value) {
+ uint32_t result = *value;
+ if (BROTLI_PREDICT_FALSE(*bits > HUFFMAN_TABLE_BITS)) {
+ uint32_t val = BrotliGet16BitsUnmasked(br);
+ const HuffmanCode* ext = table + (val & HUFFMAN_TABLE_MASK) + *value;
+ uint32_t mask = BitMask((*bits - HUFFMAN_TABLE_BITS));
+ BROTLI_HC_MARK_TABLE_FOR_FAST_LOAD(ext);
+ BrotliDropBits(br, HUFFMAN_TABLE_BITS);
+ BROTLI_HC_ADJUST_TABLE_INDEX(ext, (val >> HUFFMAN_TABLE_BITS) & mask);
+ BrotliDropBits(br, BROTLI_HC_FAST_LOAD_BITS(ext));
+ result = BROTLI_HC_FAST_LOAD_VALUE(ext);
+ } else {
+ BrotliDropBits(br, *bits);
+ }
+ PreloadSymbol(0, table, br, bits, value);
+ return result;
+}
+
+static BROTLI_INLINE uint32_t Log2Floor(uint32_t x) {
+ uint32_t result = 0;
+ while (x) {
+ x >>= 1;
+ ++result;
+ }
+ return result;
+}
+
+/* Reads (s->symbol + 1) symbols.
+ Totally 1..4 symbols are read, 1..11 bits each.
+ The list of symbols MUST NOT contain duplicates. */
+static BrotliDecoderErrorCode ReadSimpleHuffmanSymbols(
+ uint32_t alphabet_size_max, uint32_t alphabet_size_limit,
+ BrotliDecoderState* s) {
+ /* max_bits == 1..11; symbol == 0..3; 1..44 bits will be read. */
+ BrotliBitReader* br = &s->br;
+ BrotliMetablockHeaderArena* h = &s->arena.header;
+ uint32_t max_bits = Log2Floor(alphabet_size_max - 1);
+ uint32_t i = h->sub_loop_counter;
+ uint32_t num_symbols = h->symbol;
+ while (i <= num_symbols) {
+ uint32_t v;
+ if (BROTLI_PREDICT_FALSE(!BrotliSafeReadBits(br, max_bits, &v))) {
+ h->sub_loop_counter = i;
+ h->substate_huffman = BROTLI_STATE_HUFFMAN_SIMPLE_READ;
+ return BROTLI_DECODER_NEEDS_MORE_INPUT;
+ }
+ if (v >= alphabet_size_limit) {
+ return
+ BROTLI_FAILURE(BROTLI_DECODER_ERROR_FORMAT_SIMPLE_HUFFMAN_ALPHABET);
+ }
+ h->symbols_lists_array[i] = (uint16_t)v;
+ BROTLI_LOG_UINT(h->symbols_lists_array[i]);
+ ++i;
+ }
+
+ for (i = 0; i < num_symbols; ++i) {
+ uint32_t k = i + 1;
+ for (; k <= num_symbols; ++k) {
+ if (h->symbols_lists_array[i] == h->symbols_lists_array[k]) {
+ return BROTLI_FAILURE(BROTLI_DECODER_ERROR_FORMAT_SIMPLE_HUFFMAN_SAME);
+ }
+ }
+ }
+
+ return BROTLI_DECODER_SUCCESS;
+}
+
+/* Process single decoded symbol code length:
+ A) reset the repeat variable
+ B) remember code length (if it is not 0)
+ C) extend corresponding index-chain
+ D) reduce the Huffman space
+ E) update the histogram */
+static BROTLI_INLINE void ProcessSingleCodeLength(uint32_t code_len,
+ uint32_t* symbol, uint32_t* repeat, uint32_t* space,
+ uint32_t* prev_code_len, uint16_t* symbol_lists,
+ uint16_t* code_length_histo, int* next_symbol) {
+ *repeat = 0;
+ if (code_len != 0) { /* code_len == 1..15 */
+ symbol_lists[next_symbol[code_len]] = (uint16_t)(*symbol);
+ next_symbol[code_len] = (int)(*symbol);
+ *prev_code_len = code_len;
+ *space -= 32768U >> code_len;
+ code_length_histo[code_len]++;
+ BROTLI_LOG(("[ReadHuffmanCode] code_length[%d] = %d\n",
+ (int)*symbol, (int)code_len));
+ }
+ (*symbol)++;
+}
+
+/* Process repeated symbol code length.
+ A) Check if it is the extension of previous repeat sequence; if the decoded
+ value is not BROTLI_REPEAT_PREVIOUS_CODE_LENGTH, then it is a new
+ symbol-skip
+ B) Update repeat variable
+ C) Check if operation is feasible (fits alphabet)
+ D) For each symbol do the same operations as in ProcessSingleCodeLength
+
+ PRECONDITION: code_len == BROTLI_REPEAT_PREVIOUS_CODE_LENGTH or
+ code_len == BROTLI_REPEAT_ZERO_CODE_LENGTH */
+static BROTLI_INLINE void ProcessRepeatedCodeLength(uint32_t code_len,
+ uint32_t repeat_delta, uint32_t alphabet_size, uint32_t* symbol,
+ uint32_t* repeat, uint32_t* space, uint32_t* prev_code_len,
+ uint32_t* repeat_code_len, uint16_t* symbol_lists,
+ uint16_t* code_length_histo, int* next_symbol) {
+ uint32_t old_repeat;
+ uint32_t extra_bits = 3; /* for BROTLI_REPEAT_ZERO_CODE_LENGTH */
+ uint32_t new_len = 0; /* for BROTLI_REPEAT_ZERO_CODE_LENGTH */
+ if (code_len == BROTLI_REPEAT_PREVIOUS_CODE_LENGTH) {
+ new_len = *prev_code_len;
+ extra_bits = 2;
+ }
+ if (*repeat_code_len != new_len) {
+ *repeat = 0;
+ *repeat_code_len = new_len;
+ }
+ old_repeat = *repeat;
+ if (*repeat > 0) {
+ *repeat -= 2;
+ *repeat <<= extra_bits;
+ }
+ *repeat += repeat_delta + 3U;
+ repeat_delta = *repeat - old_repeat;
+ if (*symbol + repeat_delta > alphabet_size) {
+ BROTLI_DUMP();
+ *symbol = alphabet_size;
+ *space = 0xFFFFF;
+ return;
+ }
+ BROTLI_LOG(("[ReadHuffmanCode] code_length[%d..%d] = %d\n",
+ (int)*symbol, (int)(*symbol + repeat_delta - 1), (int)*repeat_code_len));
+ if (*repeat_code_len != 0) {
+ unsigned last = *symbol + repeat_delta;
+ int next = next_symbol[*repeat_code_len];
+ do {
+ symbol_lists[next] = (uint16_t)*symbol;
+ next = (int)*symbol;
+ } while (++(*symbol) != last);
+ next_symbol[*repeat_code_len] = next;
+ *space -= repeat_delta << (15 - *repeat_code_len);
+ code_length_histo[*repeat_code_len] =
+ (uint16_t)(code_length_histo[*repeat_code_len] + repeat_delta);
+ } else {
+ *symbol += repeat_delta;
+ }
+}
+
+/* Reads and decodes symbol codelengths. */
+static BrotliDecoderErrorCode ReadSymbolCodeLengths(
+ uint32_t alphabet_size, BrotliDecoderState* s) {
+ BrotliBitReader* br = &s->br;
+ BrotliMetablockHeaderArena* h = &s->arena.header;
+ uint32_t symbol = h->symbol;
+ uint32_t repeat = h->repeat;
+ uint32_t space = h->space;
+ uint32_t prev_code_len = h->prev_code_len;
+ uint32_t repeat_code_len = h->repeat_code_len;
+ uint16_t* symbol_lists = h->symbol_lists;
+ uint16_t* code_length_histo = h->code_length_histo;
+ int* next_symbol = h->next_symbol;
+ if (!BrotliWarmupBitReader(br)) {
+ return BROTLI_DECODER_NEEDS_MORE_INPUT;
+ }
+ while (symbol < alphabet_size && space > 0) {
+ const HuffmanCode* p = h->table;
+ uint32_t code_len;
+ BROTLI_HC_MARK_TABLE_FOR_FAST_LOAD(p);
+ if (!BrotliCheckInputAmount(br, BROTLI_SHORT_FILL_BIT_WINDOW_READ)) {
+ h->symbol = symbol;
+ h->repeat = repeat;
+ h->prev_code_len = prev_code_len;
+ h->repeat_code_len = repeat_code_len;
+ h->space = space;
+ return BROTLI_DECODER_NEEDS_MORE_INPUT;
+ }
+ BrotliFillBitWindow16(br);
+ BROTLI_HC_ADJUST_TABLE_INDEX(p, BrotliGetBitsUnmasked(br) &
+ BitMask(BROTLI_HUFFMAN_MAX_CODE_LENGTH_CODE_LENGTH));
+ BrotliDropBits(br, BROTLI_HC_FAST_LOAD_BITS(p)); /* Use 1..5 bits. */
+ code_len = BROTLI_HC_FAST_LOAD_VALUE(p); /* code_len == 0..17 */
+ if (code_len < BROTLI_REPEAT_PREVIOUS_CODE_LENGTH) {
+ ProcessSingleCodeLength(code_len, &symbol, &repeat, &space,
+ &prev_code_len, symbol_lists, code_length_histo, next_symbol);
+ } else { /* code_len == 16..17, extra_bits == 2..3 */
+ uint32_t extra_bits =
+ (code_len == BROTLI_REPEAT_PREVIOUS_CODE_LENGTH) ? 2 : 3;
+ uint32_t repeat_delta =
+ (uint32_t)BrotliGetBitsUnmasked(br) & BitMask(extra_bits);
+ BrotliDropBits(br, extra_bits);
+ ProcessRepeatedCodeLength(code_len, repeat_delta, alphabet_size,
+ &symbol, &repeat, &space, &prev_code_len, &repeat_code_len,
+ symbol_lists, code_length_histo, next_symbol);
+ }
+ }
+ h->space = space;
+ return BROTLI_DECODER_SUCCESS;
+}
+
+static BrotliDecoderErrorCode SafeReadSymbolCodeLengths(
+ uint32_t alphabet_size, BrotliDecoderState* s) {
+ BrotliBitReader* br = &s->br;
+ BrotliMetablockHeaderArena* h = &s->arena.header;
+ BROTLI_BOOL get_byte = BROTLI_FALSE;
+ while (h->symbol < alphabet_size && h->space > 0) {
+ const HuffmanCode* p = h->table;
+ uint32_t code_len;
+ uint32_t available_bits;
+ uint32_t bits = 0;
+ BROTLI_HC_MARK_TABLE_FOR_FAST_LOAD(p);
+ if (get_byte && !BrotliPullByte(br)) return BROTLI_DECODER_NEEDS_MORE_INPUT;
+ get_byte = BROTLI_FALSE;
+ available_bits = BrotliGetAvailableBits(br);
+ if (available_bits != 0) {
+ bits = (uint32_t)BrotliGetBitsUnmasked(br);
+ }
+ BROTLI_HC_ADJUST_TABLE_INDEX(p,
+ bits & BitMask(BROTLI_HUFFMAN_MAX_CODE_LENGTH_CODE_LENGTH));
+ if (BROTLI_HC_FAST_LOAD_BITS(p) > available_bits) {
+ get_byte = BROTLI_TRUE;
+ continue;
+ }
+ code_len = BROTLI_HC_FAST_LOAD_VALUE(p); /* code_len == 0..17 */
+ if (code_len < BROTLI_REPEAT_PREVIOUS_CODE_LENGTH) {
+ BrotliDropBits(br, BROTLI_HC_FAST_LOAD_BITS(p));
+ ProcessSingleCodeLength(code_len, &h->symbol, &h->repeat, &h->space,
+ &h->prev_code_len, h->symbol_lists, h->code_length_histo,
+ h->next_symbol);
+ } else { /* code_len == 16..17, extra_bits == 2..3 */
+ uint32_t extra_bits = code_len - 14U;
+ uint32_t repeat_delta = (bits >> BROTLI_HC_FAST_LOAD_BITS(p)) &
+ BitMask(extra_bits);
+ if (available_bits < BROTLI_HC_FAST_LOAD_BITS(p) + extra_bits) {
+ get_byte = BROTLI_TRUE;
+ continue;
+ }
+ BrotliDropBits(br, BROTLI_HC_FAST_LOAD_BITS(p) + extra_bits);
+ ProcessRepeatedCodeLength(code_len, repeat_delta, alphabet_size,
+ &h->symbol, &h->repeat, &h->space, &h->prev_code_len,
+ &h->repeat_code_len, h->symbol_lists, h->code_length_histo,
+ h->next_symbol);
+ }
+ }
+ return BROTLI_DECODER_SUCCESS;
+}
+
+/* Reads and decodes 15..18 codes using static prefix code.
+ Each code is 2..4 bits long. In total 30..72 bits are used. */
+static BrotliDecoderErrorCode ReadCodeLengthCodeLengths(BrotliDecoderState* s) {
+ BrotliBitReader* br = &s->br;
+ BrotliMetablockHeaderArena* h = &s->arena.header;
+ uint32_t num_codes = h->repeat;
+ unsigned space = h->space;
+ uint32_t i = h->sub_loop_counter;
+ for (; i < BROTLI_CODE_LENGTH_CODES; ++i) {
+ const uint8_t code_len_idx = kCodeLengthCodeOrder[i];
+ uint32_t ix;
+ uint32_t v;
+ if (BROTLI_PREDICT_FALSE(!BrotliSafeGetBits(br, 4, &ix))) {
+ uint32_t available_bits = BrotliGetAvailableBits(br);
+ if (available_bits != 0) {
+ ix = BrotliGetBitsUnmasked(br) & 0xF;
+ } else {
+ ix = 0;
+ }
+ if (kCodeLengthPrefixLength[ix] > available_bits) {
+ h->sub_loop_counter = i;
+ h->repeat = num_codes;
+ h->space = space;
+ h->substate_huffman = BROTLI_STATE_HUFFMAN_COMPLEX;
+ return BROTLI_DECODER_NEEDS_MORE_INPUT;
+ }
+ }
+ v = kCodeLengthPrefixValue[ix];
+ BrotliDropBits(br, kCodeLengthPrefixLength[ix]);
+ h->code_length_code_lengths[code_len_idx] = (uint8_t)v;
+ BROTLI_LOG_ARRAY_INDEX(h->code_length_code_lengths, code_len_idx);
+ if (v != 0) {
+ space = space - (32U >> v);
+ ++num_codes;
+ ++h->code_length_histo[v];
+ if (space - 1U >= 32U) {
+ /* space is 0 or wrapped around. */
+ break;
+ }
+ }
+ }
+ if (!(num_codes == 1 || space == 0)) {
+ return BROTLI_FAILURE(BROTLI_DECODER_ERROR_FORMAT_CL_SPACE);
+ }
+ return BROTLI_DECODER_SUCCESS;
+}
+
+/* Decodes the Huffman tables.
+ There are 2 scenarios:
+ A) Huffman code contains only few symbols (1..4). Those symbols are read
+ directly; their code lengths are defined by the number of symbols.
+ For this scenario 4 - 49 bits will be read.
+
+ B) 2-phase decoding:
+ B.1) Small Huffman table is decoded; it is specified with code lengths
+ encoded with predefined entropy code. 32 - 74 bits are used.
+ B.2) Decoded table is used to decode code lengths of symbols in resulting
+ Huffman table. In worst case 3520 bits are read. */
+static BrotliDecoderErrorCode ReadHuffmanCode(uint32_t alphabet_size_max,
+ uint32_t alphabet_size_limit,
+ HuffmanCode* table,
+ uint32_t* opt_table_size,
+ BrotliDecoderState* s) {
+ BrotliBitReader* br = &s->br;
+ BrotliMetablockHeaderArena* h = &s->arena.header;
+ /* State machine. */
+ for (;;) {
+ switch (h->substate_huffman) {
+ case BROTLI_STATE_HUFFMAN_NONE:
+ if (!BrotliSafeReadBits(br, 2, &h->sub_loop_counter)) {
+ return BROTLI_DECODER_NEEDS_MORE_INPUT;
+ }
+ BROTLI_LOG_UINT(h->sub_loop_counter);
+ /* The value is used as follows:
+ 1 for simple code;
+ 0 for no skipping, 2 skips 2 code lengths, 3 skips 3 code lengths */
+ if (h->sub_loop_counter != 1) {
+ h->space = 32;
+ h->repeat = 0; /* num_codes */
+ memset(&h->code_length_histo[0], 0, sizeof(h->code_length_histo[0]) *
+ (BROTLI_HUFFMAN_MAX_CODE_LENGTH_CODE_LENGTH + 1));
+ memset(&h->code_length_code_lengths[0], 0,
+ sizeof(h->code_length_code_lengths));
+ h->substate_huffman = BROTLI_STATE_HUFFMAN_COMPLEX;
+ continue;
+ }
+ /* Fall through. */
+
+ case BROTLI_STATE_HUFFMAN_SIMPLE_SIZE:
+ /* Read symbols, codes & code lengths directly. */
+ if (!BrotliSafeReadBits(br, 2, &h->symbol)) { /* num_symbols */
+ h->substate_huffman = BROTLI_STATE_HUFFMAN_SIMPLE_SIZE;
+ return BROTLI_DECODER_NEEDS_MORE_INPUT;
+ }
+ h->sub_loop_counter = 0;
+ /* Fall through. */
+
+ case BROTLI_STATE_HUFFMAN_SIMPLE_READ: {
+ BrotliDecoderErrorCode result =
+ ReadSimpleHuffmanSymbols(alphabet_size_max, alphabet_size_limit, s);
+ if (result != BROTLI_DECODER_SUCCESS) {
+ return result;
+ }
+ }
+ /* Fall through. */
+
+ case BROTLI_STATE_HUFFMAN_SIMPLE_BUILD: {
+ uint32_t table_size;
+ if (h->symbol == 3) {
+ uint32_t bits;
+ if (!BrotliSafeReadBits(br, 1, &bits)) {
+ h->substate_huffman = BROTLI_STATE_HUFFMAN_SIMPLE_BUILD;
+ return BROTLI_DECODER_NEEDS_MORE_INPUT;
+ }
+ h->symbol += bits;
+ }
+ BROTLI_LOG_UINT(h->symbol);
+ table_size = BrotliBuildSimpleHuffmanTable(
+ table, HUFFMAN_TABLE_BITS, h->symbols_lists_array, h->symbol);
+ if (opt_table_size) {
+ *opt_table_size = table_size;
+ }
+ h->substate_huffman = BROTLI_STATE_HUFFMAN_NONE;
+ return BROTLI_DECODER_SUCCESS;
+ }
+
+ /* Decode Huffman-coded code lengths. */
+ case BROTLI_STATE_HUFFMAN_COMPLEX: {
+ uint32_t i;
+ BrotliDecoderErrorCode result = ReadCodeLengthCodeLengths(s);
+ if (result != BROTLI_DECODER_SUCCESS) {
+ return result;
+ }
+ BrotliBuildCodeLengthsHuffmanTable(h->table,
+ h->code_length_code_lengths,
+ h->code_length_histo);
+ memset(&h->code_length_histo[0], 0, sizeof(h->code_length_histo));
+ for (i = 0; i <= BROTLI_HUFFMAN_MAX_CODE_LENGTH; ++i) {
+ h->next_symbol[i] = (int)i - (BROTLI_HUFFMAN_MAX_CODE_LENGTH + 1);
+ h->symbol_lists[h->next_symbol[i]] = 0xFFFF;
+ }
+
+ h->symbol = 0;
+ h->prev_code_len = BROTLI_INITIAL_REPEATED_CODE_LENGTH;
+ h->repeat = 0;
+ h->repeat_code_len = 0;
+ h->space = 32768;
+ h->substate_huffman = BROTLI_STATE_HUFFMAN_LENGTH_SYMBOLS;
+ }
+ /* Fall through. */
+
+ case BROTLI_STATE_HUFFMAN_LENGTH_SYMBOLS: {
+ uint32_t table_size;
+ BrotliDecoderErrorCode result = ReadSymbolCodeLengths(
+ alphabet_size_limit, s);
+ if (result == BROTLI_DECODER_NEEDS_MORE_INPUT) {
+ result = SafeReadSymbolCodeLengths(alphabet_size_limit, s);
+ }
+ if (result != BROTLI_DECODER_SUCCESS) {
+ return result;
+ }
+
+ if (h->space != 0) {
+ BROTLI_LOG(("[ReadHuffmanCode] space = %d\n", (int)h->space));
+ return BROTLI_FAILURE(BROTLI_DECODER_ERROR_FORMAT_HUFFMAN_SPACE);
+ }
+ table_size = BrotliBuildHuffmanTable(
+ table, HUFFMAN_TABLE_BITS, h->symbol_lists, h->code_length_histo);
+ if (opt_table_size) {
+ *opt_table_size = table_size;
+ }
+ h->substate_huffman = BROTLI_STATE_HUFFMAN_NONE;
+ return BROTLI_DECODER_SUCCESS;
+ }
+
+ default:
+ return
+ BROTLI_FAILURE(BROTLI_DECODER_ERROR_UNREACHABLE); /* COV_NF_LINE */
+ }
+ }
+}
+
+/* Decodes a block length by reading 3..39 bits. */
+static BROTLI_INLINE uint32_t ReadBlockLength(const HuffmanCode* table,
+ BrotliBitReader* br) {
+ uint32_t code;
+ uint32_t nbits;
+ code = ReadSymbol(table, br);
+ nbits = _kBrotliPrefixCodeRanges[code].nbits; /* nbits == 2..24 */
+ return _kBrotliPrefixCodeRanges[code].offset + BrotliReadBits24(br, nbits);
+}
+
+/* WARNING: if state is not BROTLI_STATE_READ_BLOCK_LENGTH_NONE, then
+ reading can't be continued with ReadBlockLength. */
+static BROTLI_INLINE BROTLI_BOOL SafeReadBlockLength(
+ BrotliDecoderState* s, uint32_t* result, const HuffmanCode* table,
+ BrotliBitReader* br) {
+ uint32_t index;
+ if (s->substate_read_block_length == BROTLI_STATE_READ_BLOCK_LENGTH_NONE) {
+ if (!SafeReadSymbol(table, br, &index)) {
+ return BROTLI_FALSE;
+ }
+ } else {
+ index = s->block_length_index;
+ }
+ {
+ uint32_t bits;
+ uint32_t nbits = _kBrotliPrefixCodeRanges[index].nbits;
+ uint32_t offset = _kBrotliPrefixCodeRanges[index].offset;
+ if (!BrotliSafeReadBits(br, nbits, &bits)) {
+ s->block_length_index = index;
+ s->substate_read_block_length = BROTLI_STATE_READ_BLOCK_LENGTH_SUFFIX;
+ return BROTLI_FALSE;
+ }
+ *result = offset + bits;
+ s->substate_read_block_length = BROTLI_STATE_READ_BLOCK_LENGTH_NONE;
+ return BROTLI_TRUE;
+ }
+}
+
+/* Transform:
+ 1) initialize list L with values 0, 1,... 255
+ 2) For each input element X:
+ 2.1) let Y = L[X]
+ 2.2) remove X-th element from L
+ 2.3) prepend Y to L
+ 2.4) append Y to output
+
+ In most cases max(Y) <= 7, so most of L remains intact.
+ To reduce the cost of initialization, we reuse L, remember the upper bound
+ of Y values, and reinitialize only first elements in L.
+
+ Most of input values are 0 and 1. To reduce number of branches, we replace
+ inner for loop with do-while. */
+static BROTLI_NOINLINE void InverseMoveToFrontTransform(
+ uint8_t* v, uint32_t v_len, BrotliDecoderState* state) {
+ /* Reinitialize elements that could have been changed. */
+ uint32_t i = 1;
+ uint32_t upper_bound = state->mtf_upper_bound;
+ uint32_t* mtf = &state->mtf[1]; /* Make mtf[-1] addressable. */
+ uint8_t* mtf_u8 = (uint8_t*)mtf;
+ /* Load endian-aware constant. */
+ const uint8_t b0123[4] = {0, 1, 2, 3};
+ uint32_t pattern;
+ memcpy(&pattern, &b0123, 4);
+
+ /* Initialize list using 4 consequent values pattern. */
+ mtf[0] = pattern;
+ do {
+ pattern += 0x04040404; /* Advance all 4 values by 4. */
+ mtf[i] = pattern;
+ i++;
+ } while (i <= upper_bound);
+
+ /* Transform the input. */
+ upper_bound = 0;
+ for (i = 0; i < v_len; ++i) {
+ int index = v[i];
+ uint8_t value = mtf_u8[index];
+ upper_bound |= v[i];
+ v[i] = value;
+ mtf_u8[-1] = value;
+ do {
+ index--;
+ mtf_u8[index + 1] = mtf_u8[index];
+ } while (index >= 0);
+ }
+ /* Remember amount of elements to be reinitialized. */
+ state->mtf_upper_bound = upper_bound >> 2;
+}
+
+/* Decodes a series of Huffman table using ReadHuffmanCode function. */
+static BrotliDecoderErrorCode HuffmanTreeGroupDecode(
+ HuffmanTreeGroup* group, BrotliDecoderState* s) {
+ BrotliMetablockHeaderArena* h = &s->arena.header;
+ if (h->substate_tree_group != BROTLI_STATE_TREE_GROUP_LOOP) {
+ h->next = group->codes;
+ h->htree_index = 0;
+ h->substate_tree_group = BROTLI_STATE_TREE_GROUP_LOOP;
+ }
+ while (h->htree_index < group->num_htrees) {
+ uint32_t table_size;
+ BrotliDecoderErrorCode result = ReadHuffmanCode(group->alphabet_size_max,
+ group->alphabet_size_limit, h->next, &table_size, s);
+ if (result != BROTLI_DECODER_SUCCESS) return result;
+ group->htrees[h->htree_index] = h->next;
+ h->next += table_size;
+ ++h->htree_index;
+ }
+ h->substate_tree_group = BROTLI_STATE_TREE_GROUP_NONE;
+ return BROTLI_DECODER_SUCCESS;
+}
+
+/* Decodes a context map.
+ Decoding is done in 4 phases:
+ 1) Read auxiliary information (6..16 bits) and allocate memory.
+ In case of trivial context map, decoding is finished at this phase.
+ 2) Decode Huffman table using ReadHuffmanCode function.
+ This table will be used for reading context map items.
+ 3) Read context map items; "0" values could be run-length encoded.
+ 4) Optionally, apply InverseMoveToFront transform to the resulting map. */
+static BrotliDecoderErrorCode DecodeContextMap(uint32_t context_map_size,
+ uint32_t* num_htrees,
+ uint8_t** context_map_arg,
+ BrotliDecoderState* s) {
+ BrotliBitReader* br = &s->br;
+ BrotliDecoderErrorCode result = BROTLI_DECODER_SUCCESS;
+ BrotliMetablockHeaderArena* h = &s->arena.header;
+
+ switch ((int)h->substate_context_map) {
+ case BROTLI_STATE_CONTEXT_MAP_NONE:
+ result = DecodeVarLenUint8(s, br, num_htrees);
+ if (result != BROTLI_DECODER_SUCCESS) {
+ return result;
+ }
+ (*num_htrees)++;
+ h->context_index = 0;
+ BROTLI_LOG_UINT(context_map_size);
+ BROTLI_LOG_UINT(*num_htrees);
+ *context_map_arg =
+ (uint8_t*)BROTLI_DECODER_ALLOC(s, (size_t)context_map_size);
+ if (*context_map_arg == 0) {
+ return BROTLI_FAILURE(BROTLI_DECODER_ERROR_ALLOC_CONTEXT_MAP);
+ }
+ if (*num_htrees <= 1) {
+ memset(*context_map_arg, 0, (size_t)context_map_size);
+ return BROTLI_DECODER_SUCCESS;
+ }
+ h->substate_context_map = BROTLI_STATE_CONTEXT_MAP_READ_PREFIX;
+ /* Fall through. */
+
+ case BROTLI_STATE_CONTEXT_MAP_READ_PREFIX: {
+ uint32_t bits;
+ /* In next stage ReadHuffmanCode uses at least 4 bits, so it is safe
+ to peek 4 bits ahead. */
+ if (!BrotliSafeGetBits(br, 5, &bits)) {
+ return BROTLI_DECODER_NEEDS_MORE_INPUT;
+ }
+ if ((bits & 1) != 0) { /* Use RLE for zeros. */
+ h->max_run_length_prefix = (bits >> 1) + 1;
+ BrotliDropBits(br, 5);
+ } else {
+ h->max_run_length_prefix = 0;
+ BrotliDropBits(br, 1);
+ }
+ BROTLI_LOG_UINT(h->max_run_length_prefix);
+ h->substate_context_map = BROTLI_STATE_CONTEXT_MAP_HUFFMAN;
+ }
+ /* Fall through. */
+
+ case BROTLI_STATE_CONTEXT_MAP_HUFFMAN: {
+ uint32_t alphabet_size = *num_htrees + h->max_run_length_prefix;
+ result = ReadHuffmanCode(alphabet_size, alphabet_size,
+ h->context_map_table, NULL, s);
+ if (result != BROTLI_DECODER_SUCCESS) return result;
+ h->code = 0xFFFF;
+ h->substate_context_map = BROTLI_STATE_CONTEXT_MAP_DECODE;
+ }
+ /* Fall through. */
+
+ case BROTLI_STATE_CONTEXT_MAP_DECODE: {
+ uint32_t context_index = h->context_index;
+ uint32_t max_run_length_prefix = h->max_run_length_prefix;
+ uint8_t* context_map = *context_map_arg;
+ uint32_t code = h->code;
+ BROTLI_BOOL skip_preamble = (code != 0xFFFF);
+ while (context_index < context_map_size || skip_preamble) {
+ if (!skip_preamble) {
+ if (!SafeReadSymbol(h->context_map_table, br, &code)) {
+ h->code = 0xFFFF;
+ h->context_index = context_index;
+ return BROTLI_DECODER_NEEDS_MORE_INPUT;
+ }
+ BROTLI_LOG_UINT(code);
+
+ if (code == 0) {
+ context_map[context_index++] = 0;
+ continue;
+ }
+ if (code > max_run_length_prefix) {
+ context_map[context_index++] =
+ (uint8_t)(code - max_run_length_prefix);
+ continue;
+ }
+ } else {
+ skip_preamble = BROTLI_FALSE;
+ }
+ /* RLE sub-stage. */
+ {
+ uint32_t reps;
+ if (!BrotliSafeReadBits(br, code, &reps)) {
+ h->code = code;
+ h->context_index = context_index;
+ return BROTLI_DECODER_NEEDS_MORE_INPUT;
+ }
+ reps += 1U << code;
+ BROTLI_LOG_UINT(reps);
+ if (context_index + reps > context_map_size) {
+ return
+ BROTLI_FAILURE(BROTLI_DECODER_ERROR_FORMAT_CONTEXT_MAP_REPEAT);
+ }
+ do {
+ context_map[context_index++] = 0;
+ } while (--reps);
+ }
+ }
+ }
+ /* Fall through. */
+
+ case BROTLI_STATE_CONTEXT_MAP_TRANSFORM: {
+ uint32_t bits;
+ if (!BrotliSafeReadBits(br, 1, &bits)) {
+ h->substate_context_map = BROTLI_STATE_CONTEXT_MAP_TRANSFORM;
+ return BROTLI_DECODER_NEEDS_MORE_INPUT;
+ }
+ if (bits != 0) {
+ InverseMoveToFrontTransform(*context_map_arg, context_map_size, s);
+ }
+ h->substate_context_map = BROTLI_STATE_CONTEXT_MAP_NONE;
+ return BROTLI_DECODER_SUCCESS;
+ }
+
+ default:
+ return
+ BROTLI_FAILURE(BROTLI_DECODER_ERROR_UNREACHABLE); /* COV_NF_LINE */
+ }
+}
+
+/* Decodes a command or literal and updates block type ring-buffer.
+ Reads 3..54 bits. */
+static BROTLI_INLINE BROTLI_BOOL DecodeBlockTypeAndLength(
+ int safe, BrotliDecoderState* s, int tree_type) {
+ uint32_t max_block_type = s->num_block_types[tree_type];
+ const HuffmanCode* type_tree = &s->block_type_trees[
+ tree_type * BROTLI_HUFFMAN_MAX_SIZE_258];
+ const HuffmanCode* len_tree = &s->block_len_trees[
+ tree_type * BROTLI_HUFFMAN_MAX_SIZE_26];
+ BrotliBitReader* br = &s->br;
+ uint32_t* ringbuffer = &s->block_type_rb[tree_type * 2];
+ uint32_t block_type;
+ if (max_block_type <= 1) {
+ return BROTLI_FALSE;
+ }
+
+ /* Read 0..15 + 3..39 bits. */
+ if (!safe) {
+ block_type = ReadSymbol(type_tree, br);
+ s->block_length[tree_type] = ReadBlockLength(len_tree, br);
+ } else {
+ BrotliBitReaderState memento;
+ BrotliBitReaderSaveState(br, &memento);
+ if (!SafeReadSymbol(type_tree, br, &block_type)) return BROTLI_FALSE;
+ if (!SafeReadBlockLength(s, &s->block_length[tree_type], len_tree, br)) {
+ s->substate_read_block_length = BROTLI_STATE_READ_BLOCK_LENGTH_NONE;
+ BrotliBitReaderRestoreState(br, &memento);
+ return BROTLI_FALSE;
+ }
+ }
+
+ if (block_type == 1) {
+ block_type = ringbuffer[1] + 1;
+ } else if (block_type == 0) {
+ block_type = ringbuffer[0];
+ } else {
+ block_type -= 2;
+ }
+ if (block_type >= max_block_type) {
+ block_type -= max_block_type;
+ }
+ ringbuffer[0] = ringbuffer[1];
+ ringbuffer[1] = block_type;
+ return BROTLI_TRUE;
+}
+
+static BROTLI_INLINE void DetectTrivialLiteralBlockTypes(
+ BrotliDecoderState* s) {
+ size_t i;
+ for (i = 0; i < 8; ++i) s->trivial_literal_contexts[i] = 0;
+ for (i = 0; i < s->num_block_types[0]; i++) {
+ size_t offset = i << BROTLI_LITERAL_CONTEXT_BITS;
+ size_t error = 0;
+ size_t sample = s->context_map[offset];
+ size_t j;
+ for (j = 0; j < (1u << BROTLI_LITERAL_CONTEXT_BITS);) {
+ BROTLI_REPEAT(4, error |= s->context_map[offset + j++] ^ sample;)
+ }
+ if (error == 0) {
+ s->trivial_literal_contexts[i >> 5] |= 1u << (i & 31);
+ }
+ }
+}
+
+static BROTLI_INLINE void PrepareLiteralDecoding(BrotliDecoderState* s) {
+ uint8_t context_mode;
+ size_t trivial;
+ uint32_t block_type = s->block_type_rb[1];
+ uint32_t context_offset = block_type << BROTLI_LITERAL_CONTEXT_BITS;
+ s->context_map_slice = s->context_map + context_offset;
+ trivial = s->trivial_literal_contexts[block_type >> 5];
+ s->trivial_literal_context = (trivial >> (block_type & 31)) & 1;
+ s->literal_htree = s->literal_hgroup.htrees[s->context_map_slice[0]];
+ context_mode = s->context_modes[block_type] & 3;
+ s->context_lookup = BROTLI_CONTEXT_LUT(context_mode);
+}
+
+/* Decodes the block type and updates the state for literal context.
+ Reads 3..54 bits. */
+static BROTLI_INLINE BROTLI_BOOL DecodeLiteralBlockSwitchInternal(
+ int safe, BrotliDecoderState* s) {
+ if (!DecodeBlockTypeAndLength(safe, s, 0)) {
+ return BROTLI_FALSE;
+ }
+ PrepareLiteralDecoding(s);
+ return BROTLI_TRUE;
+}
+
+static void BROTLI_NOINLINE DecodeLiteralBlockSwitch(BrotliDecoderState* s) {
+ DecodeLiteralBlockSwitchInternal(0, s);
+}
+
+static BROTLI_BOOL BROTLI_NOINLINE SafeDecodeLiteralBlockSwitch(
+ BrotliDecoderState* s) {
+ return DecodeLiteralBlockSwitchInternal(1, s);
+}
+
+/* Block switch for insert/copy length.
+ Reads 3..54 bits. */
+static BROTLI_INLINE BROTLI_BOOL DecodeCommandBlockSwitchInternal(
+ int safe, BrotliDecoderState* s) {
+ if (!DecodeBlockTypeAndLength(safe, s, 1)) {
+ return BROTLI_FALSE;
+ }
+ s->htree_command = s->insert_copy_hgroup.htrees[s->block_type_rb[3]];
+ return BROTLI_TRUE;
+}
+
+static void BROTLI_NOINLINE DecodeCommandBlockSwitch(BrotliDecoderState* s) {
+ DecodeCommandBlockSwitchInternal(0, s);
+}
+
+static BROTLI_BOOL BROTLI_NOINLINE SafeDecodeCommandBlockSwitch(
+ BrotliDecoderState* s) {
+ return DecodeCommandBlockSwitchInternal(1, s);
+}
+
+/* Block switch for distance codes.
+ Reads 3..54 bits. */
+static BROTLI_INLINE BROTLI_BOOL DecodeDistanceBlockSwitchInternal(
+ int safe, BrotliDecoderState* s) {
+ if (!DecodeBlockTypeAndLength(safe, s, 2)) {
+ return BROTLI_FALSE;
+ }
+ s->dist_context_map_slice = s->dist_context_map +
+ (s->block_type_rb[5] << BROTLI_DISTANCE_CONTEXT_BITS);
+ s->dist_htree_index = s->dist_context_map_slice[s->distance_context];
+ return BROTLI_TRUE;
+}
+
+static void BROTLI_NOINLINE DecodeDistanceBlockSwitch(BrotliDecoderState* s) {
+ DecodeDistanceBlockSwitchInternal(0, s);
+}
+
+static BROTLI_BOOL BROTLI_NOINLINE SafeDecodeDistanceBlockSwitch(
+ BrotliDecoderState* s) {
+ return DecodeDistanceBlockSwitchInternal(1, s);
+}
+
+static size_t UnwrittenBytes(const BrotliDecoderState* s, BROTLI_BOOL wrap) {
+ size_t pos = wrap && s->pos > s->ringbuffer_size ?
+ (size_t)s->ringbuffer_size : (size_t)(s->pos);
+ size_t partial_pos_rb = (s->rb_roundtrips * (size_t)s->ringbuffer_size) + pos;
+ return partial_pos_rb - s->partial_pos_out;
+}
+
+/* Dumps output.
+ Returns BROTLI_DECODER_NEEDS_MORE_OUTPUT only if there is more output to push
+ and either ring-buffer is as big as window size, or |force| is true. */
+static BrotliDecoderErrorCode BROTLI_NOINLINE WriteRingBuffer(
+ BrotliDecoderState* s, size_t* available_out, uint8_t** next_out,
+ size_t* total_out, BROTLI_BOOL force) {
+ uint8_t* start =
+ s->ringbuffer + (s->partial_pos_out & (size_t)s->ringbuffer_mask);
+ size_t to_write = UnwrittenBytes(s, BROTLI_TRUE);
+ size_t num_written = *available_out;
+ if (num_written > to_write) {
+ num_written = to_write;
+ }
+ if (s->meta_block_remaining_len < 0) {
+ return BROTLI_FAILURE(BROTLI_DECODER_ERROR_FORMAT_BLOCK_LENGTH_1);
+ }
+ if (next_out && !*next_out) {
+ *next_out = start;
+ } else {
+ if (next_out) {
+ memcpy(*next_out, start, num_written);
+ *next_out += num_written;
+ }
+ }
+ *available_out -= num_written;
+ BROTLI_LOG_UINT(to_write);
+ BROTLI_LOG_UINT(num_written);
+ s->partial_pos_out += num_written;
+ if (total_out) {
+ *total_out = s->partial_pos_out;
+ }
+ if (num_written < to_write) {
+ if (s->ringbuffer_size == (1 << s->window_bits) || force) {
+ return BROTLI_DECODER_NEEDS_MORE_OUTPUT;
+ } else {
+ return BROTLI_DECODER_SUCCESS;
+ }
+ }
+ /* Wrap ring buffer only if it has reached its maximal size. */
+ if (s->ringbuffer_size == (1 << s->window_bits) &&
+ s->pos >= s->ringbuffer_size) {
+ s->pos -= s->ringbuffer_size;
+ s->rb_roundtrips++;
+ s->should_wrap_ringbuffer = (size_t)s->pos != 0 ? 1 : 0;
+ }
+ return BROTLI_DECODER_SUCCESS;
+}
+
+static void BROTLI_NOINLINE WrapRingBuffer(BrotliDecoderState* s) {
+ if (s->should_wrap_ringbuffer) {
+ memcpy(s->ringbuffer, s->ringbuffer_end, (size_t)s->pos);
+ s->should_wrap_ringbuffer = 0;
+ }
+}
+
+/* Allocates ring-buffer.
+
+ s->ringbuffer_size MUST be updated by BrotliCalculateRingBufferSize before
+ this function is called.
+
+ Last two bytes of ring-buffer are initialized to 0, so context calculation
+ could be done uniformly for the first two and all other positions. */
+static BROTLI_BOOL BROTLI_NOINLINE BrotliEnsureRingBuffer(
+ BrotliDecoderState* s) {
+ uint8_t* old_ringbuffer = s->ringbuffer;
+ if (s->ringbuffer_size == s->new_ringbuffer_size) {
+ return BROTLI_TRUE;
+ }
+
+ s->ringbuffer = (uint8_t*)BROTLI_DECODER_ALLOC(s,
+ (size_t)(s->new_ringbuffer_size) + kRingBufferWriteAheadSlack);
+ if (s->ringbuffer == 0) {
+ /* Restore previous value. */
+ s->ringbuffer = old_ringbuffer;
+ return BROTLI_FALSE;
+ }
+ s->ringbuffer[s->new_ringbuffer_size - 2] = 0;
+ s->ringbuffer[s->new_ringbuffer_size - 1] = 0;
+
+ if (!!old_ringbuffer) {
+ memcpy(s->ringbuffer, old_ringbuffer, (size_t)s->pos);
+ BROTLI_DECODER_FREE(s, old_ringbuffer);
+ }
+
+ s->ringbuffer_size = s->new_ringbuffer_size;
+ s->ringbuffer_mask = s->new_ringbuffer_size - 1;
+ s->ringbuffer_end = s->ringbuffer + s->ringbuffer_size;
+
+ return BROTLI_TRUE;
+}
+
+static BrotliDecoderErrorCode BROTLI_NOINLINE CopyUncompressedBlockToOutput(
+ size_t* available_out, uint8_t** next_out, size_t* total_out,
+ BrotliDecoderState* s) {
+ /* TODO(eustas): avoid allocation for single uncompressed block. */
+ if (!BrotliEnsureRingBuffer(s)) {
+ return BROTLI_FAILURE(BROTLI_DECODER_ERROR_ALLOC_RING_BUFFER_1);
+ }
+
+ /* State machine */
+ for (;;) {
+ switch (s->substate_uncompressed) {
+ case BROTLI_STATE_UNCOMPRESSED_NONE: {
+ int nbytes = (int)BrotliGetRemainingBytes(&s->br);
+ if (nbytes > s->meta_block_remaining_len) {
+ nbytes = s->meta_block_remaining_len;
+ }
+ if (s->pos + nbytes > s->ringbuffer_size) {
+ nbytes = s->ringbuffer_size - s->pos;
+ }
+ /* Copy remaining bytes from s->br.buf_ to ring-buffer. */
+ BrotliCopyBytes(&s->ringbuffer[s->pos], &s->br, (size_t)nbytes);
+ s->pos += nbytes;
+ s->meta_block_remaining_len -= nbytes;
+ if (s->pos < 1 << s->window_bits) {
+ if (s->meta_block_remaining_len == 0) {
+ return BROTLI_DECODER_SUCCESS;
+ }
+ return BROTLI_DECODER_NEEDS_MORE_INPUT;
+ }
+ s->substate_uncompressed = BROTLI_STATE_UNCOMPRESSED_WRITE;
+ }
+ /* Fall through. */
+
+ case BROTLI_STATE_UNCOMPRESSED_WRITE: {
+ BrotliDecoderErrorCode result;
+ result = WriteRingBuffer(
+ s, available_out, next_out, total_out, BROTLI_FALSE);
+ if (result != BROTLI_DECODER_SUCCESS) {
+ return result;
+ }
+ if (s->ringbuffer_size == 1 << s->window_bits) {
+ s->max_distance = s->max_backward_distance;
+ }
+ s->substate_uncompressed = BROTLI_STATE_UNCOMPRESSED_NONE;
+ break;
+ }
+ }
+ }
+ BROTLI_DCHECK(0); /* Unreachable */
+}
+
+static BROTLI_BOOL AttachCompoundDictionary(
+ BrotliDecoderState* state, const uint8_t* data, size_t size) {
+ BrotliDecoderCompoundDictionary* addon = state->compound_dictionary;
+ if (state->state != BROTLI_STATE_UNINITED) return BROTLI_FALSE;
+ if (!addon) {
+ addon = (BrotliDecoderCompoundDictionary*)BROTLI_DECODER_ALLOC(
+ state, sizeof(BrotliDecoderCompoundDictionary));
+ if (!addon) return BROTLI_FALSE;
+ addon->num_chunks = 0;
+ addon->total_size = 0;
+ addon->br_length = 0;
+ addon->br_copied = 0;
+ addon->block_bits = -1;
+ addon->chunk_offsets[0] = 0;
+ state->compound_dictionary = addon;
+ }
+ if (addon->num_chunks == 15) return BROTLI_FALSE;
+ addon->chunks[addon->num_chunks] = data;
+ addon->num_chunks++;
+ addon->total_size += (int)size;
+ addon->chunk_offsets[addon->num_chunks] = addon->total_size;
+ return BROTLI_TRUE;
+}
+
+static void EnsureCoumpoundDictionaryInitialized(BrotliDecoderState* state) {
+ BrotliDecoderCompoundDictionary* addon = state->compound_dictionary;
+ /* 256 = (1 << 8) slots in block map. */
+ int block_bits = 8;
+ int cursor = 0;
+ int index = 0;
+ if (addon->block_bits != -1) return;
+ while (((addon->total_size - 1) >> block_bits) != 0) block_bits++;
+ block_bits -= 8;
+ addon->block_bits = block_bits;
+ while (cursor < addon->total_size) {
+ while (addon->chunk_offsets[index + 1] < cursor) index++;
+ addon->block_map[cursor >> block_bits] = (uint8_t)index;
+ cursor += 1 << block_bits;
+ }
+}
+
+static BROTLI_BOOL InitializeCompoundDictionaryCopy(BrotliDecoderState* s,
+ int address, int length) {
+ BrotliDecoderCompoundDictionary* addon = s->compound_dictionary;
+ int index;
+ EnsureCoumpoundDictionaryInitialized(s);
+ index = addon->block_map[address >> addon->block_bits];
+ while (address >= addon->chunk_offsets[index + 1]) index++;
+ if (addon->total_size < address + length) return BROTLI_FALSE;
+ /* Update the recent distances cache. */
+ s->dist_rb[s->dist_rb_idx & 3] = s->distance_code;
+ ++s->dist_rb_idx;
+ s->meta_block_remaining_len -= length;
+ addon->br_index = index;
+ addon->br_offset = address - addon->chunk_offsets[index];
+ addon->br_length = length;
+ addon->br_copied = 0;
+ return BROTLI_TRUE;
+}
+
+static int GetCompoundDictionarySize(BrotliDecoderState* s) {
+ return s->compound_dictionary ? s->compound_dictionary->total_size : 0;
+}
+
+static int CopyFromCompoundDictionary(BrotliDecoderState* s, int pos) {
+ BrotliDecoderCompoundDictionary* addon = s->compound_dictionary;
+ int orig_pos = pos;
+ while (addon->br_length != addon->br_copied) {
+ uint8_t* copy_dst = &s->ringbuffer[pos];
+ const uint8_t* copy_src =
+ addon->chunks[addon->br_index] + addon->br_offset;
+ int space = s->ringbuffer_size - pos;
+ int rem_chunk_length = (addon->chunk_offsets[addon->br_index + 1] -
+ addon->chunk_offsets[addon->br_index]) - addon->br_offset;
+ int length = addon->br_length - addon->br_copied;
+ if (length > rem_chunk_length) length = rem_chunk_length;
+ if (length > space) length = space;
+ memcpy(copy_dst, copy_src, (size_t)length);
+ pos += length;
+ addon->br_offset += length;
+ addon->br_copied += length;
+ if (length == rem_chunk_length) {
+ addon->br_index++;
+ addon->br_offset = 0;
+ }
+ if (pos == s->ringbuffer_size) break;
+ }
+ return pos - orig_pos;
+}
+
+BROTLI_BOOL BrotliDecoderAttachDictionary(
+ BrotliDecoderState* state, BrotliSharedDictionaryType type,
+ size_t data_size, const uint8_t data[BROTLI_ARRAY_PARAM(data_size)]) {
+ uint32_t i;
+ uint32_t num_prefix_before = state->dictionary->num_prefix;
+ if (state->state != BROTLI_STATE_UNINITED) return BROTLI_FALSE;
+ if (!BrotliSharedDictionaryAttach(state->dictionary, type, data_size, data)) {
+ return BROTLI_FALSE;
+ }
+ for (i = num_prefix_before; i < state->dictionary->num_prefix; i++) {
+ if (!AttachCompoundDictionary(
+ state, state->dictionary->prefix[i],
+ state->dictionary->prefix_size[i])) {
+ return BROTLI_FALSE;
+ }
+ }
+ return BROTLI_TRUE;
+}
+
+/* Calculates the smallest feasible ring buffer.
+
+ If we know the data size is small, do not allocate more ring buffer
+ size than needed to reduce memory usage.
+
+ When this method is called, metablock size and flags MUST be decoded. */
+static void BROTLI_NOINLINE BrotliCalculateRingBufferSize(
+ BrotliDecoderState* s) {
+ int window_size = 1 << s->window_bits;
+ int new_ringbuffer_size = window_size;
+ /* We need at least 2 bytes of ring buffer size to get the last two
+ bytes for context from there */
+ int min_size = s->ringbuffer_size ? s->ringbuffer_size : 1024;
+ int output_size;
+
+ /* If maximum is already reached, no further extension is retired. */
+ if (s->ringbuffer_size == window_size) {
+ return;
+ }
+
+ /* Metadata blocks does not touch ring buffer. */
+ if (s->is_metadata) {
+ return;
+ }
+
+ if (!s->ringbuffer) {
+ output_size = 0;
+ } else {
+ output_size = s->pos;
+ }
+ output_size += s->meta_block_remaining_len;
+ min_size = min_size < output_size ? output_size : min_size;
+
+ if (!!s->canny_ringbuffer_allocation) {
+ /* Reduce ring buffer size to save memory when server is unscrupulous.
+ In worst case memory usage might be 1.5x bigger for a short period of
+ ring buffer reallocation. */
+ while ((new_ringbuffer_size >> 1) >= min_size) {
+ new_ringbuffer_size >>= 1;
+ }
+ }
+
+ s->new_ringbuffer_size = new_ringbuffer_size;
+}
+
+/* Reads 1..256 2-bit context modes. */
+static BrotliDecoderErrorCode ReadContextModes(BrotliDecoderState* s) {
+ BrotliBitReader* br = &s->br;
+ int i = s->loop_counter;
+
+ while (i < (int)s->num_block_types[0]) {
+ uint32_t bits;
+ if (!BrotliSafeReadBits(br, 2, &bits)) {
+ s->loop_counter = i;
+ return BROTLI_DECODER_NEEDS_MORE_INPUT;
+ }
+ s->context_modes[i] = (uint8_t)bits;
+ BROTLI_LOG_ARRAY_INDEX(s->context_modes, i);
+ i++;
+ }
+ return BROTLI_DECODER_SUCCESS;
+}
+
+static BROTLI_INLINE void TakeDistanceFromRingBuffer(BrotliDecoderState* s) {
+ int offset = s->distance_code - 3;
+ if (s->distance_code <= 3) {
+ /* Compensate double distance-ring-buffer roll for dictionary items. */
+ s->distance_context = 1 >> s->distance_code;
+ s->distance_code = s->dist_rb[(s->dist_rb_idx - offset) & 3];
+ s->dist_rb_idx -= s->distance_context;
+ } else {
+ int index_delta = 3;
+ int delta;
+ int base = s->distance_code - 10;
+ if (s->distance_code < 10) {
+ base = s->distance_code - 4;
+ } else {
+ index_delta = 2;
+ }
+ /* Unpack one of six 4-bit values. */
+ delta = ((0x605142 >> (4 * base)) & 0xF) - 3;
+ s->distance_code = s->dist_rb[(s->dist_rb_idx + index_delta) & 0x3] + delta;
+ if (s->distance_code <= 0) {
+ /* A huge distance will cause a BROTLI_FAILURE() soon.
+ This is a little faster than failing here. */
+ s->distance_code = 0x7FFFFFFF;
+ }
+ }
+}
+
+static BROTLI_INLINE BROTLI_BOOL SafeReadBits(
+ BrotliBitReader* const br, uint32_t n_bits, uint32_t* val) {
+ if (n_bits != 0) {
+ return BrotliSafeReadBits(br, n_bits, val);
+ } else {
+ *val = 0;
+ return BROTLI_TRUE;
+ }
+}
+
+static BROTLI_INLINE BROTLI_BOOL SafeReadBits32(
+ BrotliBitReader* const br, uint32_t n_bits, uint32_t* val) {
+ if (n_bits != 0) {
+ return BrotliSafeReadBits32(br, n_bits, val);
+ } else {
+ *val = 0;
+ return BROTLI_TRUE;
+ }
+}
+
+/*
+ RFC 7932 Section 4 with "..." shortenings and "[]" emendations.
+
+ Each distance ... is represented with a pair <distance code, extra bits>...
+ The distance code is encoded using a prefix code... The number of extra bits
+ can be 0..24... Two additional parameters: NPOSTFIX (0..3), and ...
+ NDIRECT (0..120) ... are encoded in the meta-block header...
+
+ The first 16 distance symbols ... reference past distances... ring buffer ...
+ Next NDIRECT distance symbols ... represent distances from 1 to NDIRECT...
+ [For] distance symbols 16 + NDIRECT and greater ... the number of extra bits
+ ... is given by the following formula:
+
+ [ xcode = dcode - NDIRECT - 16 ]
+ ndistbits = 1 + [ xcode ] >> (NPOSTFIX + 1)
+
+ ...
+*/
+
+/*
+ RFC 7932 Section 9.2 with "..." shortenings and "[]" emendations.
+
+ ... to get the actual value of the parameter NDIRECT, left-shift this
+ four-bit number by NPOSTFIX bits ...
+*/
+
+/* Remaining formulas from RFC 7932 Section 4 could be rewritten as following:
+
+ alphabet_size = 16 + NDIRECT + (max_distbits << (NPOSTFIX + 1))
+
+ half = ((xcode >> NPOSTFIX) & 1) << ndistbits
+ postfix = xcode & ((1 << NPOSTFIX) - 1)
+ range_start = 2 * (1 << ndistbits - 1 - 1)
+
+ distance = (range_start + half + extra) << NPOSTFIX + postfix + NDIRECT + 1
+
+ NB: ndistbits >= 1 -> range_start >= 0
+ NB: range_start has factor 2, as the range is covered by 2 "halves"
+ NB: extra -1 offset in range_start formula covers the absence of
+ ndistbits = 0 case
+ NB: when NPOSTFIX = 0, NDIRECT is not greater than 15
+
+ In other words, xcode has the following binary structure - XXXHPPP:
+ - XXX represent the number of extra distance bits
+ - H selects upper / lower range of distances
+ - PPP represent "postfix"
+
+ "Regular" distance encoding has NPOSTFIX = 0; omitting the postfix part
+ simplifies distance calculation.
+
+ Using NPOSTFIX > 0 allows cheaper encoding of regular structures, e.g. where
+ most of distances have the same reminder of division by 2/4/8. For example,
+ the table of int32_t values that come from different sources; if it is likely
+ that 3 highest bytes of values from the same source are the same, then
+ copy distance often looks like 4x + y.
+
+ Distance calculation could be rewritten to:
+
+ ndistbits = NDISTBITS(NDIRECT, NPOSTFIX)[dcode]
+ distance = OFFSET(NDIRECT, NPOSTFIX)[dcode] + extra << NPOSTFIX
+
+ NDISTBITS and OFFSET could be pre-calculated, as NDIRECT and NPOSTFIX could
+ change only once per meta-block.
+*/
+
+/* Calculates distance lookup table.
+ NB: it is possible to have all 64 tables precalculated. */
+static void CalculateDistanceLut(BrotliDecoderState* s) {
+ BrotliMetablockBodyArena* b = &s->arena.body;
+ uint32_t npostfix = s->distance_postfix_bits;
+ uint32_t ndirect = s->num_direct_distance_codes;
+ uint32_t alphabet_size_limit = s->distance_hgroup.alphabet_size_limit;
+ uint32_t postfix = 1u << npostfix;
+ uint32_t j;
+ uint32_t bits = 1;
+ uint32_t half = 0;
+
+ /* Skip short codes. */
+ uint32_t i = BROTLI_NUM_DISTANCE_SHORT_CODES;
+
+ /* Fill direct codes. */
+ for (j = 0; j < ndirect; ++j) {
+ b->dist_extra_bits[i] = 0;
+ b->dist_offset[i] = j + 1;
+ ++i;
+ }
+
+ /* Fill regular distance codes. */
+ while (i < alphabet_size_limit) {
+ uint32_t base = ndirect + ((((2 + half) << bits) - 4) << npostfix) + 1;
+ /* Always fill the complete group. */
+ for (j = 0; j < postfix; ++j) {
+ b->dist_extra_bits[i] = (uint8_t)bits;
+ b->dist_offset[i] = base + j;
+ ++i;
+ }
+ bits = bits + half;
+ half = half ^ 1;
+ }
+}
+
+/* Precondition: s->distance_code < 0. */
+static BROTLI_INLINE BROTLI_BOOL ReadDistanceInternal(
+ int safe, BrotliDecoderState* s, BrotliBitReader* br) {
+ BrotliMetablockBodyArena* b = &s->arena.body;
+ uint32_t code;
+ uint32_t bits;
+ BrotliBitReaderState memento;
+ HuffmanCode* distance_tree = s->distance_hgroup.htrees[s->dist_htree_index];
+ if (!safe) {
+ code = ReadSymbol(distance_tree, br);
+ } else {
+ BrotliBitReaderSaveState(br, &memento);
+ if (!SafeReadSymbol(distance_tree, br, &code)) {
+ return BROTLI_FALSE;
+ }
+ }
+ --s->block_length[2];
+ /* Convert the distance code to the actual distance by possibly
+ looking up past distances from the s->dist_rb. */
+ s->distance_context = 0;
+ if ((code & ~0xFu) == 0) {
+ s->distance_code = (int)code;
+ TakeDistanceFromRingBuffer(s);
+ return BROTLI_TRUE;
+ }
+ if (!safe) {
+ bits = BrotliReadBits32(br, b->dist_extra_bits[code]);
+ } else {
+ if (!SafeReadBits32(br, b->dist_extra_bits[code], &bits)) {
+ ++s->block_length[2];
+ BrotliBitReaderRestoreState(br, &memento);
+ return BROTLI_FALSE;
+ }
+ }
+ s->distance_code =
+ (int)(b->dist_offset[code] + (bits << s->distance_postfix_bits));
+ return BROTLI_TRUE;
+}
+
+static BROTLI_INLINE void ReadDistance(
+ BrotliDecoderState* s, BrotliBitReader* br) {
+ ReadDistanceInternal(0, s, br);
+}
+
+static BROTLI_INLINE BROTLI_BOOL SafeReadDistance(
+ BrotliDecoderState* s, BrotliBitReader* br) {
+ return ReadDistanceInternal(1, s, br);
+}
+
+static BROTLI_INLINE BROTLI_BOOL ReadCommandInternal(
+ int safe, BrotliDecoderState* s, BrotliBitReader* br, int* insert_length) {
+ uint32_t cmd_code;
+ uint32_t insert_len_extra = 0;
+ uint32_t copy_length;
+ CmdLutElement v;
+ BrotliBitReaderState memento;
+ if (!safe) {
+ cmd_code = ReadSymbol(s->htree_command, br);
+ } else {
+ BrotliBitReaderSaveState(br, &memento);
+ if (!SafeReadSymbol(s->htree_command, br, &cmd_code)) {
+ return BROTLI_FALSE;
+ }
+ }
+ v = kCmdLut[cmd_code];
+ s->distance_code = v.distance_code;
+ s->distance_context = v.context;
+ s->dist_htree_index = s->dist_context_map_slice[s->distance_context];
+ *insert_length = v.insert_len_offset;
+ if (!safe) {
+ if (BROTLI_PREDICT_FALSE(v.insert_len_extra_bits != 0)) {
+ insert_len_extra = BrotliReadBits24(br, v.insert_len_extra_bits);
+ }
+ copy_length = BrotliReadBits24(br, v.copy_len_extra_bits);
+ } else {
+ if (!SafeReadBits(br, v.insert_len_extra_bits, &insert_len_extra) ||
+ !SafeReadBits(br, v.copy_len_extra_bits, &copy_length)) {
+ BrotliBitReaderRestoreState(br, &memento);
+ return BROTLI_FALSE;
+ }
+ }
+ s->copy_length = (int)copy_length + v.copy_len_offset;
+ --s->block_length[1];
+ *insert_length += (int)insert_len_extra;
+ return BROTLI_TRUE;
+}
+
+static BROTLI_INLINE void ReadCommand(
+ BrotliDecoderState* s, BrotliBitReader* br, int* insert_length) {
+ ReadCommandInternal(0, s, br, insert_length);
+}
+
+static BROTLI_INLINE BROTLI_BOOL SafeReadCommand(
+ BrotliDecoderState* s, BrotliBitReader* br, int* insert_length) {
+ return ReadCommandInternal(1, s, br, insert_length);
+}
+
+static BROTLI_INLINE BROTLI_BOOL CheckInputAmount(
+ int safe, BrotliBitReader* const br, size_t num) {
+ if (safe) {
+ return BROTLI_TRUE;
+ }
+ return BrotliCheckInputAmount(br, num);
+}
+
+#define BROTLI_SAFE(METHOD) \
+ { \
+ if (safe) { \
+ if (!Safe##METHOD) { \
+ result = BROTLI_DECODER_NEEDS_MORE_INPUT; \
+ goto saveStateAndReturn; \
+ } \
+ } else { \
+ METHOD; \
+ } \
+ }
+
+static BROTLI_INLINE BrotliDecoderErrorCode ProcessCommandsInternal(
+ int safe, BrotliDecoderState* s) {
+ int pos = s->pos;
+ int i = s->loop_counter;
+ BrotliDecoderErrorCode result = BROTLI_DECODER_SUCCESS;
+ BrotliBitReader* br = &s->br;
+ int compound_dictionary_size = GetCompoundDictionarySize(s);
+
+ if (!CheckInputAmount(safe, br, 28)) {
+ result = BROTLI_DECODER_NEEDS_MORE_INPUT;
+ goto saveStateAndReturn;
+ }
+ if (!safe) {
+ BROTLI_UNUSED(BrotliWarmupBitReader(br));
+ }
+
+ /* Jump into state machine. */
+ if (s->state == BROTLI_STATE_COMMAND_BEGIN) {
+ goto CommandBegin;
+ } else if (s->state == BROTLI_STATE_COMMAND_INNER) {
+ goto CommandInner;
+ } else if (s->state == BROTLI_STATE_COMMAND_POST_DECODE_LITERALS) {
+ goto CommandPostDecodeLiterals;
+ } else if (s->state == BROTLI_STATE_COMMAND_POST_WRAP_COPY) {
+ goto CommandPostWrapCopy;
+ } else {
+ return BROTLI_FAILURE(BROTLI_DECODER_ERROR_UNREACHABLE); /* COV_NF_LINE */
+ }
+
+CommandBegin:
+ if (safe) {
+ s->state = BROTLI_STATE_COMMAND_BEGIN;
+ }
+ if (!CheckInputAmount(safe, br, 28)) { /* 156 bits + 7 bytes */
+ s->state = BROTLI_STATE_COMMAND_BEGIN;
+ result = BROTLI_DECODER_NEEDS_MORE_INPUT;
+ goto saveStateAndReturn;
+ }
+ if (BROTLI_PREDICT_FALSE(s->block_length[1] == 0)) {
+ BROTLI_SAFE(DecodeCommandBlockSwitch(s));
+ goto CommandBegin;
+ }
+ /* Read the insert/copy length in the command. */
+ BROTLI_SAFE(ReadCommand(s, br, &i));
+ BROTLI_LOG(("[ProcessCommandsInternal] pos = %d insert = %d copy = %d\n",
+ pos, i, s->copy_length));
+ if (i == 0) {
+ goto CommandPostDecodeLiterals;
+ }
+ s->meta_block_remaining_len -= i;
+
+CommandInner:
+ if (safe) {
+ s->state = BROTLI_STATE_COMMAND_INNER;
+ }
+ /* Read the literals in the command. */
+ if (s->trivial_literal_context) {
+ uint32_t bits;
+ uint32_t value;
+ PreloadSymbol(safe, s->literal_htree, br, &bits, &value);
+ do {
+ if (!CheckInputAmount(safe, br, 28)) { /* 162 bits + 7 bytes */
+ s->state = BROTLI_STATE_COMMAND_INNER;
+ result = BROTLI_DECODER_NEEDS_MORE_INPUT;
+ goto saveStateAndReturn;
+ }
+ if (BROTLI_PREDICT_FALSE(s->block_length[0] == 0)) {
+ BROTLI_SAFE(DecodeLiteralBlockSwitch(s));
+ PreloadSymbol(safe, s->literal_htree, br, &bits, &value);
+ if (!s->trivial_literal_context) goto CommandInner;
+ }
+ if (!safe) {
+ s->ringbuffer[pos] =
+ (uint8_t)ReadPreloadedSymbol(s->literal_htree, br, &bits, &value);
+ } else {
+ uint32_t literal;
+ if (!SafeReadSymbol(s->literal_htree, br, &literal)) {
+ result = BROTLI_DECODER_NEEDS_MORE_INPUT;
+ goto saveStateAndReturn;
+ }
+ s->ringbuffer[pos] = (uint8_t)literal;
+ }
+ --s->block_length[0];
+ BROTLI_LOG_ARRAY_INDEX(s->ringbuffer, pos);
+ ++pos;
+ if (BROTLI_PREDICT_FALSE(pos == s->ringbuffer_size)) {
+ s->state = BROTLI_STATE_COMMAND_INNER_WRITE;
+ --i;
+ goto saveStateAndReturn;
+ }
+ } while (--i != 0);
+ } else {
+ uint8_t p1 = s->ringbuffer[(pos - 1) & s->ringbuffer_mask];
+ uint8_t p2 = s->ringbuffer[(pos - 2) & s->ringbuffer_mask];
+ do {
+ const HuffmanCode* hc;
+ uint8_t context;
+ if (!CheckInputAmount(safe, br, 28)) { /* 162 bits + 7 bytes */
+ s->state = BROTLI_STATE_COMMAND_INNER;
+ result = BROTLI_DECODER_NEEDS_MORE_INPUT;
+ goto saveStateAndReturn;
+ }
+ if (BROTLI_PREDICT_FALSE(s->block_length[0] == 0)) {
+ BROTLI_SAFE(DecodeLiteralBlockSwitch(s));
+ if (s->trivial_literal_context) goto CommandInner;
+ }
+ context = BROTLI_CONTEXT(p1, p2, s->context_lookup);
+ BROTLI_LOG_UINT(context);
+ hc = s->literal_hgroup.htrees[s->context_map_slice[context]];
+ p2 = p1;
+ if (!safe) {
+ p1 = (uint8_t)ReadSymbol(hc, br);
+ } else {
+ uint32_t literal;
+ if (!SafeReadSymbol(hc, br, &literal)) {
+ result = BROTLI_DECODER_NEEDS_MORE_INPUT;
+ goto saveStateAndReturn;
+ }
+ p1 = (uint8_t)literal;
+ }
+ s->ringbuffer[pos] = p1;
+ --s->block_length[0];
+ BROTLI_LOG_UINT(s->context_map_slice[context]);
+ BROTLI_LOG_ARRAY_INDEX(s->ringbuffer, pos & s->ringbuffer_mask);
+ ++pos;
+ if (BROTLI_PREDICT_FALSE(pos == s->ringbuffer_size)) {
+ s->state = BROTLI_STATE_COMMAND_INNER_WRITE;
+ --i;
+ goto saveStateAndReturn;
+ }
+ } while (--i != 0);
+ }
+ BROTLI_LOG_UINT(s->meta_block_remaining_len);
+ if (BROTLI_PREDICT_FALSE(s->meta_block_remaining_len <= 0)) {
+ s->state = BROTLI_STATE_METABLOCK_DONE;
+ goto saveStateAndReturn;
+ }
+
+CommandPostDecodeLiterals:
+ if (safe) {
+ s->state = BROTLI_STATE_COMMAND_POST_DECODE_LITERALS;
+ }
+ if (s->distance_code >= 0) {
+ /* Implicit distance case. */
+ s->distance_context = s->distance_code ? 0 : 1;
+ --s->dist_rb_idx;
+ s->distance_code = s->dist_rb[s->dist_rb_idx & 3];
+ } else {
+ /* Read distance code in the command, unless it was implicitly zero. */
+ if (BROTLI_PREDICT_FALSE(s->block_length[2] == 0)) {
+ BROTLI_SAFE(DecodeDistanceBlockSwitch(s));
+ }
+ BROTLI_SAFE(ReadDistance(s, br));
+ }
+ BROTLI_LOG(("[ProcessCommandsInternal] pos = %d distance = %d\n",
+ pos, s->distance_code));
+ if (s->max_distance != s->max_backward_distance) {
+ s->max_distance =
+ (pos < s->max_backward_distance) ? pos : s->max_backward_distance;
+ }
+ i = s->copy_length;
+ /* Apply copy of LZ77 back-reference, or static dictionary reference if
+ the distance is larger than the max LZ77 distance */
+ if (s->distance_code > s->max_distance) {
+ /* The maximum allowed distance is BROTLI_MAX_ALLOWED_DISTANCE = 0x7FFFFFFC.
+ With this choice, no signed overflow can occur after decoding
+ a special distance code (e.g., after adding 3 to the last distance). */
+ if (s->distance_code > BROTLI_MAX_ALLOWED_DISTANCE) {
+ BROTLI_LOG(("Invalid backward reference. pos: %d distance: %d "
+ "len: %d bytes left: %d\n",
+ pos, s->distance_code, i, s->meta_block_remaining_len));
+ return BROTLI_FAILURE(BROTLI_DECODER_ERROR_FORMAT_DISTANCE);
+ }
+ if (s->distance_code - s->max_distance - 1 < compound_dictionary_size) {
+ int address = compound_dictionary_size -
+ (s->distance_code - s->max_distance);
+ if (!InitializeCompoundDictionaryCopy(s, address, i)) {
+ return BROTLI_FAILURE(BROTLI_DECODER_ERROR_COMPOUND_DICTIONARY);
+ }
+ pos += CopyFromCompoundDictionary(s, pos);
+ if (pos >= s->ringbuffer_size) {
+ s->state = BROTLI_STATE_COMMAND_POST_WRITE_1;
+ goto saveStateAndReturn;
+ }
+ } else if (i >= SHARED_BROTLI_MIN_DICTIONARY_WORD_LENGTH &&
+ i <= SHARED_BROTLI_MAX_DICTIONARY_WORD_LENGTH) {
+ uint8_t p1 = s->ringbuffer[(pos - 1) & s->ringbuffer_mask];
+ uint8_t p2 = s->ringbuffer[(pos - 2) & s->ringbuffer_mask];
+ uint8_t dict_id = s->dictionary->context_based ?
+ s->dictionary->context_map[BROTLI_CONTEXT(p1, p2, s->context_lookup)]
+ : 0;
+ const BrotliDictionary* words = s->dictionary->words[dict_id];
+ const BrotliTransforms* transforms = s->dictionary->transforms[dict_id];
+ int offset = (int)words->offsets_by_length[i];
+ uint32_t shift = words->size_bits_by_length[i];
+ int address =
+ s->distance_code - s->max_distance - 1 - compound_dictionary_size;
+ int mask = (int)BitMask(shift);
+ int word_idx = address & mask;
+ int transform_idx = address >> shift;
+ /* Compensate double distance-ring-buffer roll. */
+ s->dist_rb_idx += s->distance_context;
+ offset += word_idx * i;
+ /* If the distance is out of bound, select a next static dictionary if
+ there exist multiple. */
+ if ((transform_idx >= (int)transforms->num_transforms ||
+ words->size_bits_by_length[i] == 0) &&
+ s->dictionary->num_dictionaries > 1) {
+ uint8_t dict_id2;
+ int dist_remaining = address -
+ (int)(((1u << shift) & ~1u)) * (int)transforms->num_transforms;
+ for (dict_id2 = 0; dict_id2 < s->dictionary->num_dictionaries;
+ dict_id2++) {
+ const BrotliDictionary* words2 = s->dictionary->words[dict_id2];
+ if (dict_id2 != dict_id && words2->size_bits_by_length[i] != 0) {
+ const BrotliTransforms* transforms2 =
+ s->dictionary->transforms[dict_id2];
+ uint32_t shift2 = words2->size_bits_by_length[i];
+ int num = (int)((1u << shift2) & ~1u) *
+ (int)transforms2->num_transforms;
+ if (dist_remaining < num) {
+ dict_id = dict_id2;
+ words = words2;
+ transforms = transforms2;
+ address = dist_remaining;
+ shift = shift2;
+ mask = (int)BitMask(shift);
+ word_idx = address & mask;
+ transform_idx = address >> shift;
+ offset = (int)words->offsets_by_length[i] + word_idx * i;
+ break;
+ }
+ dist_remaining -= num;
+ }
+ }
+ }
+ if (BROTLI_PREDICT_FALSE(words->size_bits_by_length[i] == 0)) {
+ BROTLI_LOG(("Invalid backward reference. pos: %d distance: %d "
+ "len: %d bytes left: %d\n",
+ pos, s->distance_code, i, s->meta_block_remaining_len));
+ return BROTLI_FAILURE(BROTLI_DECODER_ERROR_FORMAT_DICTIONARY);
+ }
+ if (BROTLI_PREDICT_FALSE(!words->data)) {
+ return BROTLI_FAILURE(BROTLI_DECODER_ERROR_DICTIONARY_NOT_SET);
+ }
+ if (transform_idx < (int)transforms->num_transforms) {
+ const uint8_t* word = &words->data[offset];
+ int len = i;
+ if (transform_idx == transforms->cutOffTransforms[0]) {
+ memcpy(&s->ringbuffer[pos], word, (size_t)len);
+ BROTLI_LOG(("[ProcessCommandsInternal] dictionary word: [%.*s]\n",
+ len, word));
+ } else {
+ len = BrotliTransformDictionaryWord(&s->ringbuffer[pos], word, len,
+ transforms, transform_idx);
+ BROTLI_LOG(("[ProcessCommandsInternal] dictionary word: [%.*s],"
+ " transform_idx = %d, transformed: [%.*s]\n",
+ i, word, transform_idx, len, &s->ringbuffer[pos]));
+ if (len == 0 && s->distance_code <= 120) {
+ BROTLI_LOG(("Invalid length-0 dictionary word after transform\n"));
+ return BROTLI_FAILURE(BROTLI_DECODER_ERROR_FORMAT_TRANSFORM);
+ }
+ }
+ pos += len;
+ s->meta_block_remaining_len -= len;
+ if (pos >= s->ringbuffer_size) {
+ s->state = BROTLI_STATE_COMMAND_POST_WRITE_1;
+ goto saveStateAndReturn;
+ }
+ } else {
+ BROTLI_LOG(("Invalid backward reference. pos: %d distance: %d "
+ "len: %d bytes left: %d\n",
+ pos, s->distance_code, i, s->meta_block_remaining_len));
+ return BROTLI_FAILURE(BROTLI_DECODER_ERROR_FORMAT_TRANSFORM);
+ }
+ } else {
+ BROTLI_LOG(("Invalid backward reference. pos: %d distance: %d "
+ "len: %d bytes left: %d\n",
+ pos, s->distance_code, i, s->meta_block_remaining_len));
+ return BROTLI_FAILURE(BROTLI_DECODER_ERROR_FORMAT_DICTIONARY);
+ }
+ } else {
+ int src_start = (pos - s->distance_code) & s->ringbuffer_mask;
+ uint8_t* copy_dst = &s->ringbuffer[pos];
+ uint8_t* copy_src = &s->ringbuffer[src_start];
+ int dst_end = pos + i;
+ int src_end = src_start + i;
+ /* Update the recent distances cache. */
+ s->dist_rb[s->dist_rb_idx & 3] = s->distance_code;
+ ++s->dist_rb_idx;
+ s->meta_block_remaining_len -= i;
+ /* There are 32+ bytes of slack in the ring-buffer allocation.
+ Also, we have 16 short codes, that make these 16 bytes irrelevant
+ in the ring-buffer. Let's copy over them as a first guess. */
+ memmove16(copy_dst, copy_src);
+ if (src_end > pos && dst_end > src_start) {
+ /* Regions intersect. */
+ goto CommandPostWrapCopy;
+ }
+ if (dst_end >= s->ringbuffer_size || src_end >= s->ringbuffer_size) {
+ /* At least one region wraps. */
+ goto CommandPostWrapCopy;
+ }
+ pos += i;
+ if (i > 16) {
+ if (i > 32) {
+ memcpy(copy_dst + 16, copy_src + 16, (size_t)(i - 16));
+ } else {
+ /* This branch covers about 45% cases.
+ Fixed size short copy allows more compiler optimizations. */
+ memmove16(copy_dst + 16, copy_src + 16);
+ }
+ }
+ }
+ BROTLI_LOG_UINT(s->meta_block_remaining_len);
+ if (s->meta_block_remaining_len <= 0) {
+ /* Next metablock, if any. */
+ s->state = BROTLI_STATE_METABLOCK_DONE;
+ goto saveStateAndReturn;
+ } else {
+ goto CommandBegin;
+ }
+CommandPostWrapCopy:
+ {
+ int wrap_guard = s->ringbuffer_size - pos;
+ while (--i >= 0) {
+ s->ringbuffer[pos] =
+ s->ringbuffer[(pos - s->distance_code) & s->ringbuffer_mask];
+ ++pos;
+ if (BROTLI_PREDICT_FALSE(--wrap_guard == 0)) {
+ s->state = BROTLI_STATE_COMMAND_POST_WRITE_2;
+ goto saveStateAndReturn;
+ }
+ }
+ }
+ if (s->meta_block_remaining_len <= 0) {
+ /* Next metablock, if any. */
+ s->state = BROTLI_STATE_METABLOCK_DONE;
+ goto saveStateAndReturn;
+ } else {
+ goto CommandBegin;
+ }
+
+saveStateAndReturn:
+ s->pos = pos;
+ s->loop_counter = i;
+ return result;
+}
+
+#undef BROTLI_SAFE
+
+static BROTLI_NOINLINE BrotliDecoderErrorCode ProcessCommands(
+ BrotliDecoderState* s) {
+ return ProcessCommandsInternal(0, s);
+}
+
+static BROTLI_NOINLINE BrotliDecoderErrorCode SafeProcessCommands(
+ BrotliDecoderState* s) {
+ return ProcessCommandsInternal(1, s);
+}
+
+BrotliDecoderResult BrotliDecoderDecompress(
+ size_t encoded_size,
+ const uint8_t encoded_buffer[BROTLI_ARRAY_PARAM(encoded_size)],
+ size_t* decoded_size,
+ uint8_t decoded_buffer[BROTLI_ARRAY_PARAM(*decoded_size)]) {
+ BrotliDecoderState s;
+ BrotliDecoderResult result;
+ size_t total_out = 0;
+ size_t available_in = encoded_size;
+ const uint8_t* next_in = encoded_buffer;
+ size_t available_out = *decoded_size;
+ uint8_t* next_out = decoded_buffer;
+ if (!BrotliDecoderStateInit(&s, 0, 0, 0)) {
+ return BROTLI_DECODER_RESULT_ERROR;
+ }
+ result = BrotliDecoderDecompressStream(
+ &s, &available_in, &next_in, &available_out, &next_out, &total_out);
+ *decoded_size = total_out;
+ BrotliDecoderStateCleanup(&s);
+ if (result != BROTLI_DECODER_RESULT_SUCCESS) {
+ result = BROTLI_DECODER_RESULT_ERROR;
+ }
+ return result;
+}
+
+/* Invariant: input stream is never overconsumed:
+ - invalid input implies that the whole stream is invalid -> any amount of
+ input could be read and discarded
+ - when result is "needs more input", then at least one more byte is REQUIRED
+ to complete decoding; all input data MUST be consumed by decoder, so
+ client could swap the input buffer
+ - when result is "needs more output" decoder MUST ensure that it doesn't
+ hold more than 7 bits in bit reader; this saves client from swapping input
+ buffer ahead of time
+ - when result is "success" decoder MUST return all unused data back to input
+ buffer; this is possible because the invariant is held on enter */
+BrotliDecoderResult BrotliDecoderDecompressStream(
+ BrotliDecoderState* s, size_t* available_in, const uint8_t** next_in,
+ size_t* available_out, uint8_t** next_out, size_t* total_out) {
+ BrotliDecoderErrorCode result = BROTLI_DECODER_SUCCESS;
+ BrotliBitReader* br = &s->br;
+ /* Ensure that |total_out| is set, even if no data will ever be pushed out. */
+ if (total_out) {
+ *total_out = s->partial_pos_out;
+ }
+ /* Do not try to process further in a case of unrecoverable error. */
+ if ((int)s->error_code < 0) {
+ return BROTLI_DECODER_RESULT_ERROR;
+ }
+ if (*available_out && (!next_out || !*next_out)) {
+ return SaveErrorCode(
+ s, BROTLI_FAILURE(BROTLI_DECODER_ERROR_INVALID_ARGUMENTS));
+ }
+ if (!*available_out) next_out = 0;
+ if (s->buffer_length == 0) { /* Just connect bit reader to input stream. */
+ br->avail_in = *available_in;
+ br->next_in = *next_in;
+ } else {
+ /* At least one byte of input is required. More than one byte of input may
+ be required to complete the transaction -> reading more data must be
+ done in a loop -> do it in a main loop. */
+ result = BROTLI_DECODER_NEEDS_MORE_INPUT;
+ br->next_in = &s->buffer.u8[0];
+ }
+ /* State machine */
+ for (;;) {
+ if (result != BROTLI_DECODER_SUCCESS) {
+ /* Error, needs more input/output. */
+ if (result == BROTLI_DECODER_NEEDS_MORE_INPUT) {
+ if (s->ringbuffer != 0) { /* Pro-actively push output. */
+ BrotliDecoderErrorCode intermediate_result = WriteRingBuffer(s,
+ available_out, next_out, total_out, BROTLI_TRUE);
+ /* WriteRingBuffer checks s->meta_block_remaining_len validity. */
+ if ((int)intermediate_result < 0) {
+ result = intermediate_result;
+ break;
+ }
+ }
+ if (s->buffer_length != 0) { /* Used with internal buffer. */
+ if (br->avail_in == 0) {
+ /* Successfully finished read transaction.
+ Accumulator contains less than 8 bits, because internal buffer
+ is expanded byte-by-byte until it is enough to complete read. */
+ s->buffer_length = 0;
+ /* Switch to input stream and restart. */
+ result = BROTLI_DECODER_SUCCESS;
+ br->avail_in = *available_in;
+ br->next_in = *next_in;
+ continue;
+ } else if (*available_in != 0) {
+ /* Not enough data in buffer, but can take one more byte from
+ input stream. */
+ result = BROTLI_DECODER_SUCCESS;
+ s->buffer.u8[s->buffer_length] = **next_in;
+ s->buffer_length++;
+ br->avail_in = s->buffer_length;
+ (*next_in)++;
+ (*available_in)--;
+ /* Retry with more data in buffer. */
+ continue;
+ }
+ /* Can't finish reading and no more input. */
+ break;
+ } else { /* Input stream doesn't contain enough input. */
+ /* Copy tail to internal buffer and return. */
+ *next_in = br->next_in;
+ *available_in = br->avail_in;
+ while (*available_in) {
+ s->buffer.u8[s->buffer_length] = **next_in;
+ s->buffer_length++;
+ (*next_in)++;
+ (*available_in)--;
+ }
+ break;
+ }
+ /* Unreachable. */
+ }
+
+ /* Fail or needs more output. */
+
+ if (s->buffer_length != 0) {
+ /* Just consumed the buffered input and produced some output. Otherwise
+ it would result in "needs more input". Reset internal buffer. */
+ s->buffer_length = 0;
+ } else {
+ /* Using input stream in last iteration. When decoder switches to input
+ stream it has less than 8 bits in accumulator, so it is safe to
+ return unused accumulator bits there. */
+ BrotliBitReaderUnload(br);
+ *available_in = br->avail_in;
+ *next_in = br->next_in;
+ }
+ break;
+ }
+ switch (s->state) {
+ case BROTLI_STATE_UNINITED:
+ /* Prepare to the first read. */
+ if (!BrotliWarmupBitReader(br)) {
+ result = BROTLI_DECODER_NEEDS_MORE_INPUT;
+ break;
+ }
+ /* Decode window size. */
+ result = DecodeWindowBits(s, br); /* Reads 1..8 bits. */
+ if (result != BROTLI_DECODER_SUCCESS) {
+ break;
+ }
+ if (s->large_window) {
+ s->state = BROTLI_STATE_LARGE_WINDOW_BITS;
+ break;
+ }
+ s->state = BROTLI_STATE_INITIALIZE;
+ break;
+
+ case BROTLI_STATE_LARGE_WINDOW_BITS:
+ if (!BrotliSafeReadBits(br, 6, &s->window_bits)) {
+ result = BROTLI_DECODER_NEEDS_MORE_INPUT;
+ break;
+ }
+ if (s->window_bits < BROTLI_LARGE_MIN_WBITS ||
+ s->window_bits > BROTLI_LARGE_MAX_WBITS) {
+ result = BROTLI_FAILURE(BROTLI_DECODER_ERROR_FORMAT_WINDOW_BITS);
+ break;
+ }
+ s->state = BROTLI_STATE_INITIALIZE;
+ /* Fall through. */
+
+ case BROTLI_STATE_INITIALIZE:
+ BROTLI_LOG_UINT(s->window_bits);
+ /* Maximum distance, see section 9.1. of the spec. */
+ s->max_backward_distance = (1 << s->window_bits) - BROTLI_WINDOW_GAP;
+
+ /* Allocate memory for both block_type_trees and block_len_trees. */
+ s->block_type_trees = (HuffmanCode*)BROTLI_DECODER_ALLOC(s,
+ sizeof(HuffmanCode) * 3 *
+ (BROTLI_HUFFMAN_MAX_SIZE_258 + BROTLI_HUFFMAN_MAX_SIZE_26));
+ if (s->block_type_trees == 0) {
+ result = BROTLI_FAILURE(BROTLI_DECODER_ERROR_ALLOC_BLOCK_TYPE_TREES);
+ break;
+ }
+ s->block_len_trees =
+ s->block_type_trees + 3 * BROTLI_HUFFMAN_MAX_SIZE_258;
+
+ s->state = BROTLI_STATE_METABLOCK_BEGIN;
+ /* Fall through. */
+
+ case BROTLI_STATE_METABLOCK_BEGIN:
+ BrotliDecoderStateMetablockBegin(s);
+ BROTLI_LOG_UINT(s->pos);
+ s->state = BROTLI_STATE_METABLOCK_HEADER;
+ /* Fall through. */
+
+ case BROTLI_STATE_METABLOCK_HEADER:
+ result = DecodeMetaBlockLength(s, br); /* Reads 2 - 31 bits. */
+ if (result != BROTLI_DECODER_SUCCESS) {
+ break;
+ }
+ BROTLI_LOG_UINT(s->is_last_metablock);
+ BROTLI_LOG_UINT(s->meta_block_remaining_len);
+ BROTLI_LOG_UINT(s->is_metadata);
+ BROTLI_LOG_UINT(s->is_uncompressed);
+ if (s->is_metadata || s->is_uncompressed) {
+ if (!BrotliJumpToByteBoundary(br)) {
+ result = BROTLI_FAILURE(BROTLI_DECODER_ERROR_FORMAT_PADDING_1);
+ break;
+ }
+ }
+ if (s->is_metadata) {
+ s->state = BROTLI_STATE_METADATA;
+ break;
+ }
+ if (s->meta_block_remaining_len == 0) {
+ s->state = BROTLI_STATE_METABLOCK_DONE;
+ break;
+ }
+ BrotliCalculateRingBufferSize(s);
+ if (s->is_uncompressed) {
+ s->state = BROTLI_STATE_UNCOMPRESSED;
+ break;
+ }
+ s->state = BROTLI_STATE_BEFORE_COMPRESSED_METABLOCK_HEADER;
+ /* Fall through. */
+
+ case BROTLI_STATE_BEFORE_COMPRESSED_METABLOCK_HEADER: {
+ BrotliMetablockHeaderArena* h = &s->arena.header;
+ s->loop_counter = 0;
+ /* Initialize compressed metablock header arena. */
+ h->sub_loop_counter = 0;
+ /* Make small negative indexes addressable. */
+ h->symbol_lists =
+ &h->symbols_lists_array[BROTLI_HUFFMAN_MAX_CODE_LENGTH + 1];
+ h->substate_huffman = BROTLI_STATE_HUFFMAN_NONE;
+ h->substate_tree_group = BROTLI_STATE_TREE_GROUP_NONE;
+ h->substate_context_map = BROTLI_STATE_CONTEXT_MAP_NONE;
+ s->state = BROTLI_STATE_HUFFMAN_CODE_0;
+ }
+ /* Fall through. */
+
+ case BROTLI_STATE_HUFFMAN_CODE_0:
+ if (s->loop_counter >= 3) {
+ s->state = BROTLI_STATE_METABLOCK_HEADER_2;
+ break;
+ }
+ /* Reads 1..11 bits. */
+ result = DecodeVarLenUint8(s, br, &s->num_block_types[s->loop_counter]);
+ if (result != BROTLI_DECODER_SUCCESS) {
+ break;
+ }
+ s->num_block_types[s->loop_counter]++;
+ BROTLI_LOG_UINT(s->num_block_types[s->loop_counter]);
+ if (s->num_block_types[s->loop_counter] < 2) {
+ s->loop_counter++;
+ break;
+ }
+ s->state = BROTLI_STATE_HUFFMAN_CODE_1;
+ /* Fall through. */
+
+ case BROTLI_STATE_HUFFMAN_CODE_1: {
+ uint32_t alphabet_size = s->num_block_types[s->loop_counter] + 2;
+ int tree_offset = s->loop_counter * BROTLI_HUFFMAN_MAX_SIZE_258;
+ result = ReadHuffmanCode(alphabet_size, alphabet_size,
+ &s->block_type_trees[tree_offset], NULL, s);
+ if (result != BROTLI_DECODER_SUCCESS) break;
+ s->state = BROTLI_STATE_HUFFMAN_CODE_2;
+ }
+ /* Fall through. */
+
+ case BROTLI_STATE_HUFFMAN_CODE_2: {
+ uint32_t alphabet_size = BROTLI_NUM_BLOCK_LEN_SYMBOLS;
+ int tree_offset = s->loop_counter * BROTLI_HUFFMAN_MAX_SIZE_26;
+ result = ReadHuffmanCode(alphabet_size, alphabet_size,
+ &s->block_len_trees[tree_offset], NULL, s);
+ if (result != BROTLI_DECODER_SUCCESS) break;
+ s->state = BROTLI_STATE_HUFFMAN_CODE_3;
+ }
+ /* Fall through. */
+
+ case BROTLI_STATE_HUFFMAN_CODE_3: {
+ int tree_offset = s->loop_counter * BROTLI_HUFFMAN_MAX_SIZE_26;
+ if (!SafeReadBlockLength(s, &s->block_length[s->loop_counter],
+ &s->block_len_trees[tree_offset], br)) {
+ result = BROTLI_DECODER_NEEDS_MORE_INPUT;
+ break;
+ }
+ BROTLI_LOG_UINT(s->block_length[s->loop_counter]);
+ s->loop_counter++;
+ s->state = BROTLI_STATE_HUFFMAN_CODE_0;
+ break;
+ }
+
+ case BROTLI_STATE_UNCOMPRESSED: {
+ result = CopyUncompressedBlockToOutput(
+ available_out, next_out, total_out, s);
+ if (result != BROTLI_DECODER_SUCCESS) {
+ break;
+ }
+ s->state = BROTLI_STATE_METABLOCK_DONE;
+ break;
+ }
+
+ case BROTLI_STATE_METADATA:
+ for (; s->meta_block_remaining_len > 0; --s->meta_block_remaining_len) {
+ uint32_t bits;
+ /* Read one byte and ignore it. */
+ if (!BrotliSafeReadBits(br, 8, &bits)) {
+ result = BROTLI_DECODER_NEEDS_MORE_INPUT;
+ break;
+ }
+ }
+ if (result == BROTLI_DECODER_SUCCESS) {
+ s->state = BROTLI_STATE_METABLOCK_DONE;
+ }
+ break;
+
+ case BROTLI_STATE_METABLOCK_HEADER_2: {
+ uint32_t bits;
+ if (!BrotliSafeReadBits(br, 6, &bits)) {
+ result = BROTLI_DECODER_NEEDS_MORE_INPUT;
+ break;
+ }
+ s->distance_postfix_bits = bits & BitMask(2);
+ bits >>= 2;
+ s->num_direct_distance_codes = bits << s->distance_postfix_bits;
+ BROTLI_LOG_UINT(s->num_direct_distance_codes);
+ BROTLI_LOG_UINT(s->distance_postfix_bits);
+ s->context_modes =
+ (uint8_t*)BROTLI_DECODER_ALLOC(s, (size_t)s->num_block_types[0]);
+ if (s->context_modes == 0) {
+ result = BROTLI_FAILURE(BROTLI_DECODER_ERROR_ALLOC_CONTEXT_MODES);
+ break;
+ }
+ s->loop_counter = 0;
+ s->state = BROTLI_STATE_CONTEXT_MODES;
+ }
+ /* Fall through. */
+
+ case BROTLI_STATE_CONTEXT_MODES:
+ result = ReadContextModes(s);
+ if (result != BROTLI_DECODER_SUCCESS) {
+ break;
+ }
+ s->state = BROTLI_STATE_CONTEXT_MAP_1;
+ /* Fall through. */
+
+ case BROTLI_STATE_CONTEXT_MAP_1:
+ result = DecodeContextMap(
+ s->num_block_types[0] << BROTLI_LITERAL_CONTEXT_BITS,
+ &s->num_literal_htrees, &s->context_map, s);
+ if (result != BROTLI_DECODER_SUCCESS) {
+ break;
+ }
+ DetectTrivialLiteralBlockTypes(s);
+ s->state = BROTLI_STATE_CONTEXT_MAP_2;
+ /* Fall through. */
+
+ case BROTLI_STATE_CONTEXT_MAP_2: {
+ uint32_t npostfix = s->distance_postfix_bits;
+ uint32_t ndirect = s->num_direct_distance_codes;
+ uint32_t distance_alphabet_size_max = BROTLI_DISTANCE_ALPHABET_SIZE(
+ npostfix, ndirect, BROTLI_MAX_DISTANCE_BITS);
+ uint32_t distance_alphabet_size_limit = distance_alphabet_size_max;
+ BROTLI_BOOL allocation_success = BROTLI_TRUE;
+ if (s->large_window) {
+ BrotliDistanceCodeLimit limit = BrotliCalculateDistanceCodeLimit(
+ BROTLI_MAX_ALLOWED_DISTANCE, npostfix, ndirect);
+ distance_alphabet_size_max = BROTLI_DISTANCE_ALPHABET_SIZE(
+ npostfix, ndirect, BROTLI_LARGE_MAX_DISTANCE_BITS);
+ distance_alphabet_size_limit = limit.max_alphabet_size;
+ }
+ result = DecodeContextMap(
+ s->num_block_types[2] << BROTLI_DISTANCE_CONTEXT_BITS,
+ &s->num_dist_htrees, &s->dist_context_map, s);
+ if (result != BROTLI_DECODER_SUCCESS) {
+ break;
+ }
+ allocation_success &= BrotliDecoderHuffmanTreeGroupInit(
+ s, &s->literal_hgroup, BROTLI_NUM_LITERAL_SYMBOLS,
+ BROTLI_NUM_LITERAL_SYMBOLS, s->num_literal_htrees);
+ allocation_success &= BrotliDecoderHuffmanTreeGroupInit(
+ s, &s->insert_copy_hgroup, BROTLI_NUM_COMMAND_SYMBOLS,
+ BROTLI_NUM_COMMAND_SYMBOLS, s->num_block_types[1]);
+ allocation_success &= BrotliDecoderHuffmanTreeGroupInit(
+ s, &s->distance_hgroup, distance_alphabet_size_max,
+ distance_alphabet_size_limit, s->num_dist_htrees);
+ if (!allocation_success) {
+ return SaveErrorCode(s,
+ BROTLI_FAILURE(BROTLI_DECODER_ERROR_ALLOC_TREE_GROUPS));
+ }
+ s->loop_counter = 0;
+ s->state = BROTLI_STATE_TREE_GROUP;
+ }
+ /* Fall through. */
+
+ case BROTLI_STATE_TREE_GROUP: {
+ HuffmanTreeGroup* hgroup = NULL;
+ switch (s->loop_counter) {
+ case 0: hgroup = &s->literal_hgroup; break;
+ case 1: hgroup = &s->insert_copy_hgroup; break;
+ case 2: hgroup = &s->distance_hgroup; break;
+ default: return SaveErrorCode(s, BROTLI_FAILURE(
+ BROTLI_DECODER_ERROR_UNREACHABLE)); /* COV_NF_LINE */
+ }
+ result = HuffmanTreeGroupDecode(hgroup, s);
+ if (result != BROTLI_DECODER_SUCCESS) break;
+ s->loop_counter++;
+ if (s->loop_counter < 3) {
+ break;
+ }
+ s->state = BROTLI_STATE_BEFORE_COMPRESSED_METABLOCK_BODY;
+ }
+ /* Fall through. */
+
+ case BROTLI_STATE_BEFORE_COMPRESSED_METABLOCK_BODY:
+ PrepareLiteralDecoding(s);
+ s->dist_context_map_slice = s->dist_context_map;
+ s->htree_command = s->insert_copy_hgroup.htrees[0];
+ if (!BrotliEnsureRingBuffer(s)) {
+ result = BROTLI_FAILURE(BROTLI_DECODER_ERROR_ALLOC_RING_BUFFER_2);
+ break;
+ }
+ CalculateDistanceLut(s);
+ s->state = BROTLI_STATE_COMMAND_BEGIN;
+ /* Fall through. */
+
+ case BROTLI_STATE_COMMAND_BEGIN:
+ /* Fall through. */
+ case BROTLI_STATE_COMMAND_INNER:
+ /* Fall through. */
+ case BROTLI_STATE_COMMAND_POST_DECODE_LITERALS:
+ /* Fall through. */
+ case BROTLI_STATE_COMMAND_POST_WRAP_COPY:
+ result = ProcessCommands(s);
+ if (result == BROTLI_DECODER_NEEDS_MORE_INPUT) {
+ result = SafeProcessCommands(s);
+ }
+ break;
+
+ case BROTLI_STATE_COMMAND_INNER_WRITE:
+ /* Fall through. */
+ case BROTLI_STATE_COMMAND_POST_WRITE_1:
+ /* Fall through. */
+ case BROTLI_STATE_COMMAND_POST_WRITE_2:
+ result = WriteRingBuffer(
+ s, available_out, next_out, total_out, BROTLI_FALSE);
+ if (result != BROTLI_DECODER_SUCCESS) {
+ break;
+ }
+ WrapRingBuffer(s);
+ if (s->ringbuffer_size == 1 << s->window_bits) {
+ s->max_distance = s->max_backward_distance;
+ }
+ if (s->state == BROTLI_STATE_COMMAND_POST_WRITE_1) {
+ BrotliDecoderCompoundDictionary* addon = s->compound_dictionary;
+ if (addon && (addon->br_length != addon->br_copied)) {
+ s->pos += CopyFromCompoundDictionary(s, s->pos);
+ if (s->pos >= s->ringbuffer_size) continue;
+ }
+ if (s->meta_block_remaining_len == 0) {
+ /* Next metablock, if any. */
+ s->state = BROTLI_STATE_METABLOCK_DONE;
+ } else {
+ s->state = BROTLI_STATE_COMMAND_BEGIN;
+ }
+ break;
+ } else if (s->state == BROTLI_STATE_COMMAND_POST_WRITE_2) {
+ s->state = BROTLI_STATE_COMMAND_POST_WRAP_COPY;
+ } else { /* BROTLI_STATE_COMMAND_INNER_WRITE */
+ if (s->loop_counter == 0) {
+ if (s->meta_block_remaining_len == 0) {
+ s->state = BROTLI_STATE_METABLOCK_DONE;
+ } else {
+ s->state = BROTLI_STATE_COMMAND_POST_DECODE_LITERALS;
+ }
+ break;
+ }
+ s->state = BROTLI_STATE_COMMAND_INNER;
+ }
+ break;
+
+ case BROTLI_STATE_METABLOCK_DONE:
+ if (s->meta_block_remaining_len < 0) {
+ result = BROTLI_FAILURE(BROTLI_DECODER_ERROR_FORMAT_BLOCK_LENGTH_2);
+ break;
+ }
+ BrotliDecoderStateCleanupAfterMetablock(s);
+ if (!s->is_last_metablock) {
+ s->state = BROTLI_STATE_METABLOCK_BEGIN;
+ break;
+ }
+ if (!BrotliJumpToByteBoundary(br)) {
+ result = BROTLI_FAILURE(BROTLI_DECODER_ERROR_FORMAT_PADDING_2);
+ break;
+ }
+ if (s->buffer_length == 0) {
+ BrotliBitReaderUnload(br);
+ *available_in = br->avail_in;
+ *next_in = br->next_in;
+ }
+ s->state = BROTLI_STATE_DONE;
+ /* Fall through. */
+
+ case BROTLI_STATE_DONE:
+ if (s->ringbuffer != 0) {
+ result = WriteRingBuffer(
+ s, available_out, next_out, total_out, BROTLI_TRUE);
+ if (result != BROTLI_DECODER_SUCCESS) {
+ break;
+ }
+ }
+ return SaveErrorCode(s, result);
+ }
+ }
+ return SaveErrorCode(s, result);
+}
+
+BROTLI_BOOL BrotliDecoderHasMoreOutput(const BrotliDecoderState* s) {
+ /* After unrecoverable error remaining output is considered nonsensical. */
+ if ((int)s->error_code < 0) {
+ return BROTLI_FALSE;
+ }
+ return TO_BROTLI_BOOL(
+ s->ringbuffer != 0 && UnwrittenBytes(s, BROTLI_FALSE) != 0);
+}
+
+const uint8_t* BrotliDecoderTakeOutput(BrotliDecoderState* s, size_t* size) {
+ uint8_t* result = 0;
+ size_t available_out = *size ? *size : 1u << 24;
+ size_t requested_out = available_out;
+ BrotliDecoderErrorCode status;
+ if ((s->ringbuffer == 0) || ((int)s->error_code < 0)) {
+ *size = 0;
+ return 0;
+ }
+ WrapRingBuffer(s);
+ status = WriteRingBuffer(s, &available_out, &result, 0, BROTLI_TRUE);
+ /* Either WriteRingBuffer returns those "success" codes... */
+ if (status == BROTLI_DECODER_SUCCESS ||
+ status == BROTLI_DECODER_NEEDS_MORE_OUTPUT) {
+ *size = requested_out - available_out;
+ } else {
+ /* ... or stream is broken. Normally this should be caught by
+ BrotliDecoderDecompressStream, this is just a safeguard. */
+ if ((int)status < 0) SaveErrorCode(s, status);
+ *size = 0;
+ result = 0;
+ }
+ return result;
+}
+
+BROTLI_BOOL BrotliDecoderIsUsed(const BrotliDecoderState* s) {
+ return TO_BROTLI_BOOL(s->state != BROTLI_STATE_UNINITED ||
+ BrotliGetAvailableBits(&s->br) != 0);
+}
+
+BROTLI_BOOL BrotliDecoderIsFinished(const BrotliDecoderState* s) {
+ return TO_BROTLI_BOOL(s->state == BROTLI_STATE_DONE) &&
+ !BrotliDecoderHasMoreOutput(s);
+}
+
+BrotliDecoderErrorCode BrotliDecoderGetErrorCode(const BrotliDecoderState* s) {
+ return (BrotliDecoderErrorCode)s->error_code;
+}
+
+const char* BrotliDecoderErrorString(BrotliDecoderErrorCode c) {
+ switch (c) {
+#define BROTLI_ERROR_CODE_CASE_(PREFIX, NAME, CODE) \
+ case BROTLI_DECODER ## PREFIX ## NAME: return #NAME;
+#define BROTLI_NOTHING_
+ BROTLI_DECODER_ERROR_CODES_LIST(BROTLI_ERROR_CODE_CASE_, BROTLI_NOTHING_)
+#undef BROTLI_ERROR_CODE_CASE_
+#undef BROTLI_NOTHING_
+ default: return "INVALID";
+ }
+}
+
+uint32_t BrotliDecoderVersion() {
+ return BROTLI_VERSION;
+}
+
+/* Escalate internal functions visibility; for testing purposes only. */
+#if defined(BROTLI_TEST)
+BROTLI_BOOL SafeReadSymbolForTest(
+ const HuffmanCode*, BrotliBitReader*, uint32_t*);
+BROTLI_BOOL SafeReadSymbolForTest(
+ const HuffmanCode* table, BrotliBitReader* br, uint32_t* result) {
+ return SafeReadSymbol(table, br, result);
+}
+
+void InverseMoveToFrontTransformForTest(
+ uint8_t*, uint32_t, BrotliDecoderState*);
+void InverseMoveToFrontTransformForTest(
+ uint8_t* v, uint32_t l, BrotliDecoderState* s) {
+ InverseMoveToFrontTransform(v, l, s);
+}
+#endif
+
+#if defined(__cplusplus) || defined(c_plusplus)
+} /* extern "C" */
+#endif
diff --git a/thirdparty/brotli/dec/huffman.c b/thirdparty/brotli/dec/huffman.c
new file mode 100644
index 0000000000..8f127d7b6f
--- /dev/null
+++ b/thirdparty/brotli/dec/huffman.c
@@ -0,0 +1,339 @@
+/* Copyright 2013 Google Inc. All Rights Reserved.
+
+ Distributed under MIT license.
+ See file LICENSE for detail or copy at https://opensource.org/licenses/MIT
+*/
+
+/* Utilities for building Huffman decoding tables. */
+
+#include "huffman.h"
+
+#include <string.h> /* memcpy, memset */
+
+#include "../common/constants.h"
+#include "../common/platform.h"
+#include <brotli/types.h>
+
+#if defined(__cplusplus) || defined(c_plusplus)
+extern "C" {
+#endif
+
+#define BROTLI_REVERSE_BITS_MAX 8
+
+#if defined(BROTLI_RBIT)
+#define BROTLI_REVERSE_BITS_BASE \
+ ((sizeof(brotli_reg_t) << 3) - BROTLI_REVERSE_BITS_MAX)
+#else
+#define BROTLI_REVERSE_BITS_BASE 0
+static uint8_t kReverseBits[1 << BROTLI_REVERSE_BITS_MAX] = {
+ 0x00, 0x80, 0x40, 0xC0, 0x20, 0xA0, 0x60, 0xE0,
+ 0x10, 0x90, 0x50, 0xD0, 0x30, 0xB0, 0x70, 0xF0,
+ 0x08, 0x88, 0x48, 0xC8, 0x28, 0xA8, 0x68, 0xE8,
+ 0x18, 0x98, 0x58, 0xD8, 0x38, 0xB8, 0x78, 0xF8,
+ 0x04, 0x84, 0x44, 0xC4, 0x24, 0xA4, 0x64, 0xE4,
+ 0x14, 0x94, 0x54, 0xD4, 0x34, 0xB4, 0x74, 0xF4,
+ 0x0C, 0x8C, 0x4C, 0xCC, 0x2C, 0xAC, 0x6C, 0xEC,
+ 0x1C, 0x9C, 0x5C, 0xDC, 0x3C, 0xBC, 0x7C, 0xFC,
+ 0x02, 0x82, 0x42, 0xC2, 0x22, 0xA2, 0x62, 0xE2,
+ 0x12, 0x92, 0x52, 0xD2, 0x32, 0xB2, 0x72, 0xF2,
+ 0x0A, 0x8A, 0x4A, 0xCA, 0x2A, 0xAA, 0x6A, 0xEA,
+ 0x1A, 0x9A, 0x5A, 0xDA, 0x3A, 0xBA, 0x7A, 0xFA,
+ 0x06, 0x86, 0x46, 0xC6, 0x26, 0xA6, 0x66, 0xE6,
+ 0x16, 0x96, 0x56, 0xD6, 0x36, 0xB6, 0x76, 0xF6,
+ 0x0E, 0x8E, 0x4E, 0xCE, 0x2E, 0xAE, 0x6E, 0xEE,
+ 0x1E, 0x9E, 0x5E, 0xDE, 0x3E, 0xBE, 0x7E, 0xFE,
+ 0x01, 0x81, 0x41, 0xC1, 0x21, 0xA1, 0x61, 0xE1,
+ 0x11, 0x91, 0x51, 0xD1, 0x31, 0xB1, 0x71, 0xF1,
+ 0x09, 0x89, 0x49, 0xC9, 0x29, 0xA9, 0x69, 0xE9,
+ 0x19, 0x99, 0x59, 0xD9, 0x39, 0xB9, 0x79, 0xF9,
+ 0x05, 0x85, 0x45, 0xC5, 0x25, 0xA5, 0x65, 0xE5,
+ 0x15, 0x95, 0x55, 0xD5, 0x35, 0xB5, 0x75, 0xF5,
+ 0x0D, 0x8D, 0x4D, 0xCD, 0x2D, 0xAD, 0x6D, 0xED,
+ 0x1D, 0x9D, 0x5D, 0xDD, 0x3D, 0xBD, 0x7D, 0xFD,
+ 0x03, 0x83, 0x43, 0xC3, 0x23, 0xA3, 0x63, 0xE3,
+ 0x13, 0x93, 0x53, 0xD3, 0x33, 0xB3, 0x73, 0xF3,
+ 0x0B, 0x8B, 0x4B, 0xCB, 0x2B, 0xAB, 0x6B, 0xEB,
+ 0x1B, 0x9B, 0x5B, 0xDB, 0x3B, 0xBB, 0x7B, 0xFB,
+ 0x07, 0x87, 0x47, 0xC7, 0x27, 0xA7, 0x67, 0xE7,
+ 0x17, 0x97, 0x57, 0xD7, 0x37, 0xB7, 0x77, 0xF7,
+ 0x0F, 0x8F, 0x4F, 0xCF, 0x2F, 0xAF, 0x6F, 0xEF,
+ 0x1F, 0x9F, 0x5F, 0xDF, 0x3F, 0xBF, 0x7F, 0xFF
+};
+#endif /* BROTLI_RBIT */
+
+#define BROTLI_REVERSE_BITS_LOWEST \
+ ((brotli_reg_t)1 << (BROTLI_REVERSE_BITS_MAX - 1 + BROTLI_REVERSE_BITS_BASE))
+
+/* Returns reverse(num >> BROTLI_REVERSE_BITS_BASE, BROTLI_REVERSE_BITS_MAX),
+ where reverse(value, len) is the bit-wise reversal of the len least
+ significant bits of value. */
+static BROTLI_INLINE brotli_reg_t BrotliReverseBits(brotli_reg_t num) {
+#if defined(BROTLI_RBIT)
+ return BROTLI_RBIT(num);
+#else
+ return kReverseBits[num];
+#endif
+}
+
+/* Stores code in table[0], table[step], table[2*step], ..., table[end] */
+/* Assumes that end is an integer multiple of step */
+static BROTLI_INLINE void ReplicateValue(HuffmanCode* table,
+ int step, int end,
+ HuffmanCode code) {
+ do {
+ end -= step;
+ table[end] = code;
+ } while (end > 0);
+}
+
+/* Returns the table width of the next 2nd level table. |count| is the histogram
+ of bit lengths for the remaining symbols, |len| is the code length of the
+ next processed symbol. */
+static BROTLI_INLINE int NextTableBitSize(const uint16_t* const count,
+ int len, int root_bits) {
+ int left = 1 << (len - root_bits);
+ while (len < BROTLI_HUFFMAN_MAX_CODE_LENGTH) {
+ left -= count[len];
+ if (left <= 0) break;
+ ++len;
+ left <<= 1;
+ }
+ return len - root_bits;
+}
+
+void BrotliBuildCodeLengthsHuffmanTable(HuffmanCode* table,
+ const uint8_t* const code_lengths,
+ uint16_t* count) {
+ HuffmanCode code; /* current table entry */
+ int symbol; /* symbol index in original or sorted table */
+ brotli_reg_t key; /* prefix code */
+ brotli_reg_t key_step; /* prefix code addend */
+ int step; /* step size to replicate values in current table */
+ int table_size; /* size of current table */
+ int sorted[BROTLI_CODE_LENGTH_CODES]; /* symbols sorted by code length */
+ /* offsets in sorted table for each length */
+ int offset[BROTLI_HUFFMAN_MAX_CODE_LENGTH_CODE_LENGTH + 1];
+ int bits;
+ int bits_count;
+ BROTLI_DCHECK(BROTLI_HUFFMAN_MAX_CODE_LENGTH_CODE_LENGTH <=
+ BROTLI_REVERSE_BITS_MAX);
+
+ /* Generate offsets into sorted symbol table by code length. */
+ symbol = -1;
+ bits = 1;
+ BROTLI_REPEAT(BROTLI_HUFFMAN_MAX_CODE_LENGTH_CODE_LENGTH, {
+ symbol += count[bits];
+ offset[bits] = symbol;
+ bits++;
+ });
+ /* Symbols with code length 0 are placed after all other symbols. */
+ offset[0] = BROTLI_CODE_LENGTH_CODES - 1;
+
+ /* Sort symbols by length, by symbol order within each length. */
+ symbol = BROTLI_CODE_LENGTH_CODES;
+ do {
+ BROTLI_REPEAT(6, {
+ symbol--;
+ sorted[offset[code_lengths[symbol]]--] = symbol;
+ });
+ } while (symbol != 0);
+
+ table_size = 1 << BROTLI_HUFFMAN_MAX_CODE_LENGTH_CODE_LENGTH;
+
+ /* Special case: all symbols but one have 0 code length. */
+ if (offset[0] == 0) {
+ code = ConstructHuffmanCode(0, (uint16_t)sorted[0]);
+ for (key = 0; key < (brotli_reg_t)table_size; ++key) {
+ table[key] = code;
+ }
+ return;
+ }
+
+ /* Fill in table. */
+ key = 0;
+ key_step = BROTLI_REVERSE_BITS_LOWEST;
+ symbol = 0;
+ bits = 1;
+ step = 2;
+ do {
+ for (bits_count = count[bits]; bits_count != 0; --bits_count) {
+ code = ConstructHuffmanCode((uint8_t)bits, (uint16_t)sorted[symbol++]);
+ ReplicateValue(&table[BrotliReverseBits(key)], step, table_size, code);
+ key += key_step;
+ }
+ step <<= 1;
+ key_step >>= 1;
+ } while (++bits <= BROTLI_HUFFMAN_MAX_CODE_LENGTH_CODE_LENGTH);
+}
+
+uint32_t BrotliBuildHuffmanTable(HuffmanCode* root_table,
+ int root_bits,
+ const uint16_t* const symbol_lists,
+ uint16_t* count) {
+ HuffmanCode code; /* current table entry */
+ HuffmanCode* table; /* next available space in table */
+ int len; /* current code length */
+ int symbol; /* symbol index in original or sorted table */
+ brotli_reg_t key; /* prefix code */
+ brotli_reg_t key_step; /* prefix code addend */
+ brotli_reg_t sub_key; /* 2nd level table prefix code */
+ brotli_reg_t sub_key_step; /* 2nd level table prefix code addend */
+ int step; /* step size to replicate values in current table */
+ int table_bits; /* key length of current table */
+ int table_size; /* size of current table */
+ int total_size; /* sum of root table size and 2nd level table sizes */
+ int max_length = -1;
+ int bits;
+ int bits_count;
+
+ BROTLI_DCHECK(root_bits <= BROTLI_REVERSE_BITS_MAX);
+ BROTLI_DCHECK(BROTLI_HUFFMAN_MAX_CODE_LENGTH - root_bits <=
+ BROTLI_REVERSE_BITS_MAX);
+
+ while (symbol_lists[max_length] == 0xFFFF) max_length--;
+ max_length += BROTLI_HUFFMAN_MAX_CODE_LENGTH + 1;
+
+ table = root_table;
+ table_bits = root_bits;
+ table_size = 1 << table_bits;
+ total_size = table_size;
+
+ /* Fill in the root table. Reduce the table size to if possible,
+ and create the repetitions by memcpy. */
+ if (table_bits > max_length) {
+ table_bits = max_length;
+ table_size = 1 << table_bits;
+ }
+ key = 0;
+ key_step = BROTLI_REVERSE_BITS_LOWEST;
+ bits = 1;
+ step = 2;
+ do {
+ symbol = bits - (BROTLI_HUFFMAN_MAX_CODE_LENGTH + 1);
+ for (bits_count = count[bits]; bits_count != 0; --bits_count) {
+ symbol = symbol_lists[symbol];
+ code = ConstructHuffmanCode((uint8_t)bits, (uint16_t)symbol);
+ ReplicateValue(&table[BrotliReverseBits(key)], step, table_size, code);
+ key += key_step;
+ }
+ step <<= 1;
+ key_step >>= 1;
+ } while (++bits <= table_bits);
+
+ /* If root_bits != table_bits then replicate to fill the remaining slots. */
+ while (total_size != table_size) {
+ memcpy(&table[table_size], &table[0],
+ (size_t)table_size * sizeof(table[0]));
+ table_size <<= 1;
+ }
+
+ /* Fill in 2nd level tables and add pointers to root table. */
+ key_step = BROTLI_REVERSE_BITS_LOWEST >> (root_bits - 1);
+ sub_key = (BROTLI_REVERSE_BITS_LOWEST << 1);
+ sub_key_step = BROTLI_REVERSE_BITS_LOWEST;
+ for (len = root_bits + 1, step = 2; len <= max_length; ++len) {
+ symbol = len - (BROTLI_HUFFMAN_MAX_CODE_LENGTH + 1);
+ for (; count[len] != 0; --count[len]) {
+ if (sub_key == (BROTLI_REVERSE_BITS_LOWEST << 1U)) {
+ table += table_size;
+ table_bits = NextTableBitSize(count, len, root_bits);
+ table_size = 1 << table_bits;
+ total_size += table_size;
+ sub_key = BrotliReverseBits(key);
+ key += key_step;
+ root_table[sub_key] = ConstructHuffmanCode(
+ (uint8_t)(table_bits + root_bits),
+ (uint16_t)(((size_t)(table - root_table)) - sub_key));
+ sub_key = 0;
+ }
+ symbol = symbol_lists[symbol];
+ code = ConstructHuffmanCode((uint8_t)(len - root_bits), (uint16_t)symbol);
+ ReplicateValue(
+ &table[BrotliReverseBits(sub_key)], step, table_size, code);
+ sub_key += sub_key_step;
+ }
+ step <<= 1;
+ sub_key_step >>= 1;
+ }
+ return (uint32_t)total_size;
+}
+
+uint32_t BrotliBuildSimpleHuffmanTable(HuffmanCode* table,
+ int root_bits,
+ uint16_t* val,
+ uint32_t num_symbols) {
+ uint32_t table_size = 1;
+ const uint32_t goal_size = 1U << root_bits;
+ switch (num_symbols) {
+ case 0:
+ table[0] = ConstructHuffmanCode(0, val[0]);
+ break;
+ case 1:
+ if (val[1] > val[0]) {
+ table[0] = ConstructHuffmanCode(1, val[0]);
+ table[1] = ConstructHuffmanCode(1, val[1]);
+ } else {
+ table[0] = ConstructHuffmanCode(1, val[1]);
+ table[1] = ConstructHuffmanCode(1, val[0]);
+ }
+ table_size = 2;
+ break;
+ case 2:
+ table[0] = ConstructHuffmanCode(1, val[0]);
+ table[2] = ConstructHuffmanCode(1, val[0]);
+ if (val[2] > val[1]) {
+ table[1] = ConstructHuffmanCode(2, val[1]);
+ table[3] = ConstructHuffmanCode(2, val[2]);
+ } else {
+ table[1] = ConstructHuffmanCode(2, val[2]);
+ table[3] = ConstructHuffmanCode(2, val[1]);
+ }
+ table_size = 4;
+ break;
+ case 3: {
+ int i, k;
+ for (i = 0; i < 3; ++i) {
+ for (k = i + 1; k < 4; ++k) {
+ if (val[k] < val[i]) {
+ uint16_t t = val[k];
+ val[k] = val[i];
+ val[i] = t;
+ }
+ }
+ }
+ table[0] = ConstructHuffmanCode(2, val[0]);
+ table[2] = ConstructHuffmanCode(2, val[1]);
+ table[1] = ConstructHuffmanCode(2, val[2]);
+ table[3] = ConstructHuffmanCode(2, val[3]);
+ table_size = 4;
+ break;
+ }
+ case 4: {
+ if (val[3] < val[2]) {
+ uint16_t t = val[3];
+ val[3] = val[2];
+ val[2] = t;
+ }
+ table[0] = ConstructHuffmanCode(1, val[0]);
+ table[1] = ConstructHuffmanCode(2, val[1]);
+ table[2] = ConstructHuffmanCode(1, val[0]);
+ table[3] = ConstructHuffmanCode(3, val[2]);
+ table[4] = ConstructHuffmanCode(1, val[0]);
+ table[5] = ConstructHuffmanCode(2, val[1]);
+ table[6] = ConstructHuffmanCode(1, val[0]);
+ table[7] = ConstructHuffmanCode(3, val[3]);
+ table_size = 8;
+ break;
+ }
+ }
+ while (table_size != goal_size) {
+ memcpy(&table[table_size], &table[0],
+ (size_t)table_size * sizeof(table[0]));
+ table_size <<= 1;
+ }
+ return goal_size;
+}
+
+#if defined(__cplusplus) || defined(c_plusplus)
+} /* extern "C" */
+#endif
diff --git a/thirdparty/brotli/dec/huffman.h b/thirdparty/brotli/dec/huffman.h
new file mode 100644
index 0000000000..a8fbc45347
--- /dev/null
+++ b/thirdparty/brotli/dec/huffman.h
@@ -0,0 +1,121 @@
+/* Copyright 2013 Google Inc. All Rights Reserved.
+
+ Distributed under MIT license.
+ See file LICENSE for detail or copy at https://opensource.org/licenses/MIT
+*/
+
+/* Utilities for building Huffman decoding tables. */
+
+#ifndef BROTLI_DEC_HUFFMAN_H_
+#define BROTLI_DEC_HUFFMAN_H_
+
+#include "../common/platform.h"
+#include <brotli/types.h>
+
+#if defined(__cplusplus) || defined(c_plusplus)
+extern "C" {
+#endif
+
+#define BROTLI_HUFFMAN_MAX_CODE_LENGTH 15
+
+/* BROTLI_NUM_BLOCK_LEN_SYMBOLS == 26 */
+#define BROTLI_HUFFMAN_MAX_SIZE_26 396
+/* BROTLI_MAX_BLOCK_TYPE_SYMBOLS == 258 */
+#define BROTLI_HUFFMAN_MAX_SIZE_258 632
+/* BROTLI_MAX_CONTEXT_MAP_SYMBOLS == 272 */
+#define BROTLI_HUFFMAN_MAX_SIZE_272 646
+
+#define BROTLI_HUFFMAN_MAX_CODE_LENGTH_CODE_LENGTH 5
+
+#if ((defined(BROTLI_TARGET_ARMV7) || defined(BROTLI_TARGET_ARMV8_32)) && \
+ BROTLI_GNUC_HAS_ATTRIBUTE(aligned, 2, 7, 0))
+#define BROTLI_HUFFMAN_CODE_FAST_LOAD
+#endif
+
+#if !defined(BROTLI_HUFFMAN_CODE_FAST_LOAD)
+/* Do not create this struct directly - use the ConstructHuffmanCode
+ * constructor below! */
+typedef struct {
+ uint8_t bits; /* number of bits used for this symbol */
+ uint16_t value; /* symbol value or table offset */
+} HuffmanCode;
+
+static BROTLI_INLINE HuffmanCode ConstructHuffmanCode(const uint8_t bits,
+ const uint16_t value) {
+ HuffmanCode h;
+ h.bits = bits;
+ h.value = value;
+ return h;
+}
+
+/* Please use the following macros to optimize HuffmanCode accesses in hot
+ * paths.
+ *
+ * For example, assuming |table| contains a HuffmanCode pointer:
+ *
+ * BROTLI_HC_MARK_TABLE_FOR_FAST_LOAD(table);
+ * BROTLI_HC_ADJUST_TABLE_INDEX(table, index_into_table);
+ * *bits = BROTLI_HC_GET_BITS(table);
+ * *value = BROTLI_HC_GET_VALUE(table);
+ * BROTLI_HC_ADJUST_TABLE_INDEX(table, offset);
+ * *bits2 = BROTLI_HC_GET_BITS(table);
+ * *value2 = BROTLI_HC_GET_VALUE(table);
+ *
+ */
+
+#define BROTLI_HC_MARK_TABLE_FOR_FAST_LOAD(H)
+#define BROTLI_HC_ADJUST_TABLE_INDEX(H, V) H += (V)
+
+/* These must be given a HuffmanCode pointer! */
+#define BROTLI_HC_FAST_LOAD_BITS(H) (H->bits)
+#define BROTLI_HC_FAST_LOAD_VALUE(H) (H->value)
+
+#else /* BROTLI_HUFFMAN_CODE_FAST_LOAD */
+
+typedef BROTLI_ALIGNED(4) uint32_t HuffmanCode;
+
+static BROTLI_INLINE HuffmanCode ConstructHuffmanCode(const uint8_t bits,
+ const uint16_t value) {
+ return (HuffmanCode) ((value & 0xFFFF) << 16) | (bits & 0xFF);
+}
+
+#define BROTLI_HC_MARK_TABLE_FOR_FAST_LOAD(H) uint32_t __fastload_##H = (*H)
+#define BROTLI_HC_ADJUST_TABLE_INDEX(H, V) H += (V); __fastload_##H = (*H)
+
+/* These must be given a HuffmanCode pointer! */
+#define BROTLI_HC_FAST_LOAD_BITS(H) ((__fastload_##H) & 0xFF)
+#define BROTLI_HC_FAST_LOAD_VALUE(H) ((__fastload_##H) >> 16)
+#endif /* BROTLI_HUFFMAN_CODE_FAST_LOAD */
+
+/* Builds Huffman lookup table assuming code lengths are in symbol order. */
+BROTLI_INTERNAL void BrotliBuildCodeLengthsHuffmanTable(HuffmanCode* root_table,
+ const uint8_t* const code_lengths, uint16_t* count);
+
+/* Builds Huffman lookup table assuming code lengths are in symbol order.
+ Returns size of resulting table. */
+BROTLI_INTERNAL uint32_t BrotliBuildHuffmanTable(HuffmanCode* root_table,
+ int root_bits, const uint16_t* const symbol_lists, uint16_t* count);
+
+/* Builds a simple Huffman table. The |num_symbols| parameter is to be
+ interpreted as follows: 0 means 1 symbol, 1 means 2 symbols,
+ 2 means 3 symbols, 3 means 4 symbols with lengths [2, 2, 2, 2],
+ 4 means 4 symbols with lengths [1, 2, 3, 3]. */
+BROTLI_INTERNAL uint32_t BrotliBuildSimpleHuffmanTable(HuffmanCode* table,
+ int root_bits, uint16_t* symbols, uint32_t num_symbols);
+
+/* Contains a collection of Huffman trees with the same alphabet size. */
+/* alphabet_size_limit is needed due to simple codes, since
+ log2(alphabet_size_max) could be greater than log2(alphabet_size_limit). */
+typedef struct {
+ HuffmanCode** htrees;
+ HuffmanCode* codes;
+ uint16_t alphabet_size_max;
+ uint16_t alphabet_size_limit;
+ uint16_t num_htrees;
+} HuffmanTreeGroup;
+
+#if defined(__cplusplus) || defined(c_plusplus)
+} /* extern "C" */
+#endif
+
+#endif /* BROTLI_DEC_HUFFMAN_H_ */
diff --git a/thirdparty/brotli/dec/prefix.h b/thirdparty/brotli/dec/prefix.h
new file mode 100644
index 0000000000..481a2c7917
--- /dev/null
+++ b/thirdparty/brotli/dec/prefix.h
@@ -0,0 +1,732 @@
+/* Copyright 2013 Google Inc. All Rights Reserved.
+
+ Distributed under MIT license.
+ See file LICENSE for detail or copy at https://opensource.org/licenses/MIT
+*/
+
+/* Lookup tables to map prefix codes to value ranges. This is used during
+ decoding of the block lengths, literal insertion lengths and copy lengths. */
+
+#ifndef BROTLI_DEC_PREFIX_H_
+#define BROTLI_DEC_PREFIX_H_
+
+#include "../common/constants.h"
+#include <brotli/types.h>
+
+typedef struct CmdLutElement {
+ uint8_t insert_len_extra_bits;
+ uint8_t copy_len_extra_bits;
+ int8_t distance_code;
+ uint8_t context;
+ uint16_t insert_len_offset;
+ uint16_t copy_len_offset;
+} CmdLutElement;
+
+static const CmdLutElement kCmdLut[BROTLI_NUM_COMMAND_SYMBOLS] = {
+ { 0x00, 0x00, 0, 0x00, 0x0000, 0x0002 },
+ { 0x00, 0x00, 0, 0x01, 0x0000, 0x0003 },
+ { 0x00, 0x00, 0, 0x02, 0x0000, 0x0004 },
+ { 0x00, 0x00, 0, 0x03, 0x0000, 0x0005 },
+ { 0x00, 0x00, 0, 0x03, 0x0000, 0x0006 },
+ { 0x00, 0x00, 0, 0x03, 0x0000, 0x0007 },
+ { 0x00, 0x00, 0, 0x03, 0x0000, 0x0008 },
+ { 0x00, 0x00, 0, 0x03, 0x0000, 0x0009 },
+ { 0x00, 0x00, 0, 0x00, 0x0001, 0x0002 },
+ { 0x00, 0x00, 0, 0x01, 0x0001, 0x0003 },
+ { 0x00, 0x00, 0, 0x02, 0x0001, 0x0004 },
+ { 0x00, 0x00, 0, 0x03, 0x0001, 0x0005 },
+ { 0x00, 0x00, 0, 0x03, 0x0001, 0x0006 },
+ { 0x00, 0x00, 0, 0x03, 0x0001, 0x0007 },
+ { 0x00, 0x00, 0, 0x03, 0x0001, 0x0008 },
+ { 0x00, 0x00, 0, 0x03, 0x0001, 0x0009 },
+ { 0x00, 0x00, 0, 0x00, 0x0002, 0x0002 },
+ { 0x00, 0x00, 0, 0x01, 0x0002, 0x0003 },
+ { 0x00, 0x00, 0, 0x02, 0x0002, 0x0004 },
+ { 0x00, 0x00, 0, 0x03, 0x0002, 0x0005 },
+ { 0x00, 0x00, 0, 0x03, 0x0002, 0x0006 },
+ { 0x00, 0x00, 0, 0x03, 0x0002, 0x0007 },
+ { 0x00, 0x00, 0, 0x03, 0x0002, 0x0008 },
+ { 0x00, 0x00, 0, 0x03, 0x0002, 0x0009 },
+ { 0x00, 0x00, 0, 0x00, 0x0003, 0x0002 },
+ { 0x00, 0x00, 0, 0x01, 0x0003, 0x0003 },
+ { 0x00, 0x00, 0, 0x02, 0x0003, 0x0004 },
+ { 0x00, 0x00, 0, 0x03, 0x0003, 0x0005 },
+ { 0x00, 0x00, 0, 0x03, 0x0003, 0x0006 },
+ { 0x00, 0x00, 0, 0x03, 0x0003, 0x0007 },
+ { 0x00, 0x00, 0, 0x03, 0x0003, 0x0008 },
+ { 0x00, 0x00, 0, 0x03, 0x0003, 0x0009 },
+ { 0x00, 0x00, 0, 0x00, 0x0004, 0x0002 },
+ { 0x00, 0x00, 0, 0x01, 0x0004, 0x0003 },
+ { 0x00, 0x00, 0, 0x02, 0x0004, 0x0004 },
+ { 0x00, 0x00, 0, 0x03, 0x0004, 0x0005 },
+ { 0x00, 0x00, 0, 0x03, 0x0004, 0x0006 },
+ { 0x00, 0x00, 0, 0x03, 0x0004, 0x0007 },
+ { 0x00, 0x00, 0, 0x03, 0x0004, 0x0008 },
+ { 0x00, 0x00, 0, 0x03, 0x0004, 0x0009 },
+ { 0x00, 0x00, 0, 0x00, 0x0005, 0x0002 },
+ { 0x00, 0x00, 0, 0x01, 0x0005, 0x0003 },
+ { 0x00, 0x00, 0, 0x02, 0x0005, 0x0004 },
+ { 0x00, 0x00, 0, 0x03, 0x0005, 0x0005 },
+ { 0x00, 0x00, 0, 0x03, 0x0005, 0x0006 },
+ { 0x00, 0x00, 0, 0x03, 0x0005, 0x0007 },
+ { 0x00, 0x00, 0, 0x03, 0x0005, 0x0008 },
+ { 0x00, 0x00, 0, 0x03, 0x0005, 0x0009 },
+ { 0x01, 0x00, 0, 0x00, 0x0006, 0x0002 },
+ { 0x01, 0x00, 0, 0x01, 0x0006, 0x0003 },
+ { 0x01, 0x00, 0, 0x02, 0x0006, 0x0004 },
+ { 0x01, 0x00, 0, 0x03, 0x0006, 0x0005 },
+ { 0x01, 0x00, 0, 0x03, 0x0006, 0x0006 },
+ { 0x01, 0x00, 0, 0x03, 0x0006, 0x0007 },
+ { 0x01, 0x00, 0, 0x03, 0x0006, 0x0008 },
+ { 0x01, 0x00, 0, 0x03, 0x0006, 0x0009 },
+ { 0x01, 0x00, 0, 0x00, 0x0008, 0x0002 },
+ { 0x01, 0x00, 0, 0x01, 0x0008, 0x0003 },
+ { 0x01, 0x00, 0, 0x02, 0x0008, 0x0004 },
+ { 0x01, 0x00, 0, 0x03, 0x0008, 0x0005 },
+ { 0x01, 0x00, 0, 0x03, 0x0008, 0x0006 },
+ { 0x01, 0x00, 0, 0x03, 0x0008, 0x0007 },
+ { 0x01, 0x00, 0, 0x03, 0x0008, 0x0008 },
+ { 0x01, 0x00, 0, 0x03, 0x0008, 0x0009 },
+ { 0x00, 0x01, 0, 0x03, 0x0000, 0x000a },
+ { 0x00, 0x01, 0, 0x03, 0x0000, 0x000c },
+ { 0x00, 0x02, 0, 0x03, 0x0000, 0x000e },
+ { 0x00, 0x02, 0, 0x03, 0x0000, 0x0012 },
+ { 0x00, 0x03, 0, 0x03, 0x0000, 0x0016 },
+ { 0x00, 0x03, 0, 0x03, 0x0000, 0x001e },
+ { 0x00, 0x04, 0, 0x03, 0x0000, 0x0026 },
+ { 0x00, 0x04, 0, 0x03, 0x0000, 0x0036 },
+ { 0x00, 0x01, 0, 0x03, 0x0001, 0x000a },
+ { 0x00, 0x01, 0, 0x03, 0x0001, 0x000c },
+ { 0x00, 0x02, 0, 0x03, 0x0001, 0x000e },
+ { 0x00, 0x02, 0, 0x03, 0x0001, 0x0012 },
+ { 0x00, 0x03, 0, 0x03, 0x0001, 0x0016 },
+ { 0x00, 0x03, 0, 0x03, 0x0001, 0x001e },
+ { 0x00, 0x04, 0, 0x03, 0x0001, 0x0026 },
+ { 0x00, 0x04, 0, 0x03, 0x0001, 0x0036 },
+ { 0x00, 0x01, 0, 0x03, 0x0002, 0x000a },
+ { 0x00, 0x01, 0, 0x03, 0x0002, 0x000c },
+ { 0x00, 0x02, 0, 0x03, 0x0002, 0x000e },
+ { 0x00, 0x02, 0, 0x03, 0x0002, 0x0012 },
+ { 0x00, 0x03, 0, 0x03, 0x0002, 0x0016 },
+ { 0x00, 0x03, 0, 0x03, 0x0002, 0x001e },
+ { 0x00, 0x04, 0, 0x03, 0x0002, 0x0026 },
+ { 0x00, 0x04, 0, 0x03, 0x0002, 0x0036 },
+ { 0x00, 0x01, 0, 0x03, 0x0003, 0x000a },
+ { 0x00, 0x01, 0, 0x03, 0x0003, 0x000c },
+ { 0x00, 0x02, 0, 0x03, 0x0003, 0x000e },
+ { 0x00, 0x02, 0, 0x03, 0x0003, 0x0012 },
+ { 0x00, 0x03, 0, 0x03, 0x0003, 0x0016 },
+ { 0x00, 0x03, 0, 0x03, 0x0003, 0x001e },
+ { 0x00, 0x04, 0, 0x03, 0x0003, 0x0026 },
+ { 0x00, 0x04, 0, 0x03, 0x0003, 0x0036 },
+ { 0x00, 0x01, 0, 0x03, 0x0004, 0x000a },
+ { 0x00, 0x01, 0, 0x03, 0x0004, 0x000c },
+ { 0x00, 0x02, 0, 0x03, 0x0004, 0x000e },
+ { 0x00, 0x02, 0, 0x03, 0x0004, 0x0012 },
+ { 0x00, 0x03, 0, 0x03, 0x0004, 0x0016 },
+ { 0x00, 0x03, 0, 0x03, 0x0004, 0x001e },
+ { 0x00, 0x04, 0, 0x03, 0x0004, 0x0026 },
+ { 0x00, 0x04, 0, 0x03, 0x0004, 0x0036 },
+ { 0x00, 0x01, 0, 0x03, 0x0005, 0x000a },
+ { 0x00, 0x01, 0, 0x03, 0x0005, 0x000c },
+ { 0x00, 0x02, 0, 0x03, 0x0005, 0x000e },
+ { 0x00, 0x02, 0, 0x03, 0x0005, 0x0012 },
+ { 0x00, 0x03, 0, 0x03, 0x0005, 0x0016 },
+ { 0x00, 0x03, 0, 0x03, 0x0005, 0x001e },
+ { 0x00, 0x04, 0, 0x03, 0x0005, 0x0026 },
+ { 0x00, 0x04, 0, 0x03, 0x0005, 0x0036 },
+ { 0x01, 0x01, 0, 0x03, 0x0006, 0x000a },
+ { 0x01, 0x01, 0, 0x03, 0x0006, 0x000c },
+ { 0x01, 0x02, 0, 0x03, 0x0006, 0x000e },
+ { 0x01, 0x02, 0, 0x03, 0x0006, 0x0012 },
+ { 0x01, 0x03, 0, 0x03, 0x0006, 0x0016 },
+ { 0x01, 0x03, 0, 0x03, 0x0006, 0x001e },
+ { 0x01, 0x04, 0, 0x03, 0x0006, 0x0026 },
+ { 0x01, 0x04, 0, 0x03, 0x0006, 0x0036 },
+ { 0x01, 0x01, 0, 0x03, 0x0008, 0x000a },
+ { 0x01, 0x01, 0, 0x03, 0x0008, 0x000c },
+ { 0x01, 0x02, 0, 0x03, 0x0008, 0x000e },
+ { 0x01, 0x02, 0, 0x03, 0x0008, 0x0012 },
+ { 0x01, 0x03, 0, 0x03, 0x0008, 0x0016 },
+ { 0x01, 0x03, 0, 0x03, 0x0008, 0x001e },
+ { 0x01, 0x04, 0, 0x03, 0x0008, 0x0026 },
+ { 0x01, 0x04, 0, 0x03, 0x0008, 0x0036 },
+ { 0x00, 0x00, -1, 0x00, 0x0000, 0x0002 },
+ { 0x00, 0x00, -1, 0x01, 0x0000, 0x0003 },
+ { 0x00, 0x00, -1, 0x02, 0x0000, 0x0004 },
+ { 0x00, 0x00, -1, 0x03, 0x0000, 0x0005 },
+ { 0x00, 0x00, -1, 0x03, 0x0000, 0x0006 },
+ { 0x00, 0x00, -1, 0x03, 0x0000, 0x0007 },
+ { 0x00, 0x00, -1, 0x03, 0x0000, 0x0008 },
+ { 0x00, 0x00, -1, 0x03, 0x0000, 0x0009 },
+ { 0x00, 0x00, -1, 0x00, 0x0001, 0x0002 },
+ { 0x00, 0x00, -1, 0x01, 0x0001, 0x0003 },
+ { 0x00, 0x00, -1, 0x02, 0x0001, 0x0004 },
+ { 0x00, 0x00, -1, 0x03, 0x0001, 0x0005 },
+ { 0x00, 0x00, -1, 0x03, 0x0001, 0x0006 },
+ { 0x00, 0x00, -1, 0x03, 0x0001, 0x0007 },
+ { 0x00, 0x00, -1, 0x03, 0x0001, 0x0008 },
+ { 0x00, 0x00, -1, 0x03, 0x0001, 0x0009 },
+ { 0x00, 0x00, -1, 0x00, 0x0002, 0x0002 },
+ { 0x00, 0x00, -1, 0x01, 0x0002, 0x0003 },
+ { 0x00, 0x00, -1, 0x02, 0x0002, 0x0004 },
+ { 0x00, 0x00, -1, 0x03, 0x0002, 0x0005 },
+ { 0x00, 0x00, -1, 0x03, 0x0002, 0x0006 },
+ { 0x00, 0x00, -1, 0x03, 0x0002, 0x0007 },
+ { 0x00, 0x00, -1, 0x03, 0x0002, 0x0008 },
+ { 0x00, 0x00, -1, 0x03, 0x0002, 0x0009 },
+ { 0x00, 0x00, -1, 0x00, 0x0003, 0x0002 },
+ { 0x00, 0x00, -1, 0x01, 0x0003, 0x0003 },
+ { 0x00, 0x00, -1, 0x02, 0x0003, 0x0004 },
+ { 0x00, 0x00, -1, 0x03, 0x0003, 0x0005 },
+ { 0x00, 0x00, -1, 0x03, 0x0003, 0x0006 },
+ { 0x00, 0x00, -1, 0x03, 0x0003, 0x0007 },
+ { 0x00, 0x00, -1, 0x03, 0x0003, 0x0008 },
+ { 0x00, 0x00, -1, 0x03, 0x0003, 0x0009 },
+ { 0x00, 0x00, -1, 0x00, 0x0004, 0x0002 },
+ { 0x00, 0x00, -1, 0x01, 0x0004, 0x0003 },
+ { 0x00, 0x00, -1, 0x02, 0x0004, 0x0004 },
+ { 0x00, 0x00, -1, 0x03, 0x0004, 0x0005 },
+ { 0x00, 0x00, -1, 0x03, 0x0004, 0x0006 },
+ { 0x00, 0x00, -1, 0x03, 0x0004, 0x0007 },
+ { 0x00, 0x00, -1, 0x03, 0x0004, 0x0008 },
+ { 0x00, 0x00, -1, 0x03, 0x0004, 0x0009 },
+ { 0x00, 0x00, -1, 0x00, 0x0005, 0x0002 },
+ { 0x00, 0x00, -1, 0x01, 0x0005, 0x0003 },
+ { 0x00, 0x00, -1, 0x02, 0x0005, 0x0004 },
+ { 0x00, 0x00, -1, 0x03, 0x0005, 0x0005 },
+ { 0x00, 0x00, -1, 0x03, 0x0005, 0x0006 },
+ { 0x00, 0x00, -1, 0x03, 0x0005, 0x0007 },
+ { 0x00, 0x00, -1, 0x03, 0x0005, 0x0008 },
+ { 0x00, 0x00, -1, 0x03, 0x0005, 0x0009 },
+ { 0x01, 0x00, -1, 0x00, 0x0006, 0x0002 },
+ { 0x01, 0x00, -1, 0x01, 0x0006, 0x0003 },
+ { 0x01, 0x00, -1, 0x02, 0x0006, 0x0004 },
+ { 0x01, 0x00, -1, 0x03, 0x0006, 0x0005 },
+ { 0x01, 0x00, -1, 0x03, 0x0006, 0x0006 },
+ { 0x01, 0x00, -1, 0x03, 0x0006, 0x0007 },
+ { 0x01, 0x00, -1, 0x03, 0x0006, 0x0008 },
+ { 0x01, 0x00, -1, 0x03, 0x0006, 0x0009 },
+ { 0x01, 0x00, -1, 0x00, 0x0008, 0x0002 },
+ { 0x01, 0x00, -1, 0x01, 0x0008, 0x0003 },
+ { 0x01, 0x00, -1, 0x02, 0x0008, 0x0004 },
+ { 0x01, 0x00, -1, 0x03, 0x0008, 0x0005 },
+ { 0x01, 0x00, -1, 0x03, 0x0008, 0x0006 },
+ { 0x01, 0x00, -1, 0x03, 0x0008, 0x0007 },
+ { 0x01, 0x00, -1, 0x03, 0x0008, 0x0008 },
+ { 0x01, 0x00, -1, 0x03, 0x0008, 0x0009 },
+ { 0x00, 0x01, -1, 0x03, 0x0000, 0x000a },
+ { 0x00, 0x01, -1, 0x03, 0x0000, 0x000c },
+ { 0x00, 0x02, -1, 0x03, 0x0000, 0x000e },
+ { 0x00, 0x02, -1, 0x03, 0x0000, 0x0012 },
+ { 0x00, 0x03, -1, 0x03, 0x0000, 0x0016 },
+ { 0x00, 0x03, -1, 0x03, 0x0000, 0x001e },
+ { 0x00, 0x04, -1, 0x03, 0x0000, 0x0026 },
+ { 0x00, 0x04, -1, 0x03, 0x0000, 0x0036 },
+ { 0x00, 0x01, -1, 0x03, 0x0001, 0x000a },
+ { 0x00, 0x01, -1, 0x03, 0x0001, 0x000c },
+ { 0x00, 0x02, -1, 0x03, 0x0001, 0x000e },
+ { 0x00, 0x02, -1, 0x03, 0x0001, 0x0012 },
+ { 0x00, 0x03, -1, 0x03, 0x0001, 0x0016 },
+ { 0x00, 0x03, -1, 0x03, 0x0001, 0x001e },
+ { 0x00, 0x04, -1, 0x03, 0x0001, 0x0026 },
+ { 0x00, 0x04, -1, 0x03, 0x0001, 0x0036 },
+ { 0x00, 0x01, -1, 0x03, 0x0002, 0x000a },
+ { 0x00, 0x01, -1, 0x03, 0x0002, 0x000c },
+ { 0x00, 0x02, -1, 0x03, 0x0002, 0x000e },
+ { 0x00, 0x02, -1, 0x03, 0x0002, 0x0012 },
+ { 0x00, 0x03, -1, 0x03, 0x0002, 0x0016 },
+ { 0x00, 0x03, -1, 0x03, 0x0002, 0x001e },
+ { 0x00, 0x04, -1, 0x03, 0x0002, 0x0026 },
+ { 0x00, 0x04, -1, 0x03, 0x0002, 0x0036 },
+ { 0x00, 0x01, -1, 0x03, 0x0003, 0x000a },
+ { 0x00, 0x01, -1, 0x03, 0x0003, 0x000c },
+ { 0x00, 0x02, -1, 0x03, 0x0003, 0x000e },
+ { 0x00, 0x02, -1, 0x03, 0x0003, 0x0012 },
+ { 0x00, 0x03, -1, 0x03, 0x0003, 0x0016 },
+ { 0x00, 0x03, -1, 0x03, 0x0003, 0x001e },
+ { 0x00, 0x04, -1, 0x03, 0x0003, 0x0026 },
+ { 0x00, 0x04, -1, 0x03, 0x0003, 0x0036 },
+ { 0x00, 0x01, -1, 0x03, 0x0004, 0x000a },
+ { 0x00, 0x01, -1, 0x03, 0x0004, 0x000c },
+ { 0x00, 0x02, -1, 0x03, 0x0004, 0x000e },
+ { 0x00, 0x02, -1, 0x03, 0x0004, 0x0012 },
+ { 0x00, 0x03, -1, 0x03, 0x0004, 0x0016 },
+ { 0x00, 0x03, -1, 0x03, 0x0004, 0x001e },
+ { 0x00, 0x04, -1, 0x03, 0x0004, 0x0026 },
+ { 0x00, 0x04, -1, 0x03, 0x0004, 0x0036 },
+ { 0x00, 0x01, -1, 0x03, 0x0005, 0x000a },
+ { 0x00, 0x01, -1, 0x03, 0x0005, 0x000c },
+ { 0x00, 0x02, -1, 0x03, 0x0005, 0x000e },
+ { 0x00, 0x02, -1, 0x03, 0x0005, 0x0012 },
+ { 0x00, 0x03, -1, 0x03, 0x0005, 0x0016 },
+ { 0x00, 0x03, -1, 0x03, 0x0005, 0x001e },
+ { 0x00, 0x04, -1, 0x03, 0x0005, 0x0026 },
+ { 0x00, 0x04, -1, 0x03, 0x0005, 0x0036 },
+ { 0x01, 0x01, -1, 0x03, 0x0006, 0x000a },
+ { 0x01, 0x01, -1, 0x03, 0x0006, 0x000c },
+ { 0x01, 0x02, -1, 0x03, 0x0006, 0x000e },
+ { 0x01, 0x02, -1, 0x03, 0x0006, 0x0012 },
+ { 0x01, 0x03, -1, 0x03, 0x0006, 0x0016 },
+ { 0x01, 0x03, -1, 0x03, 0x0006, 0x001e },
+ { 0x01, 0x04, -1, 0x03, 0x0006, 0x0026 },
+ { 0x01, 0x04, -1, 0x03, 0x0006, 0x0036 },
+ { 0x01, 0x01, -1, 0x03, 0x0008, 0x000a },
+ { 0x01, 0x01, -1, 0x03, 0x0008, 0x000c },
+ { 0x01, 0x02, -1, 0x03, 0x0008, 0x000e },
+ { 0x01, 0x02, -1, 0x03, 0x0008, 0x0012 },
+ { 0x01, 0x03, -1, 0x03, 0x0008, 0x0016 },
+ { 0x01, 0x03, -1, 0x03, 0x0008, 0x001e },
+ { 0x01, 0x04, -1, 0x03, 0x0008, 0x0026 },
+ { 0x01, 0x04, -1, 0x03, 0x0008, 0x0036 },
+ { 0x02, 0x00, -1, 0x00, 0x000a, 0x0002 },
+ { 0x02, 0x00, -1, 0x01, 0x000a, 0x0003 },
+ { 0x02, 0x00, -1, 0x02, 0x000a, 0x0004 },
+ { 0x02, 0x00, -1, 0x03, 0x000a, 0x0005 },
+ { 0x02, 0x00, -1, 0x03, 0x000a, 0x0006 },
+ { 0x02, 0x00, -1, 0x03, 0x000a, 0x0007 },
+ { 0x02, 0x00, -1, 0x03, 0x000a, 0x0008 },
+ { 0x02, 0x00, -1, 0x03, 0x000a, 0x0009 },
+ { 0x02, 0x00, -1, 0x00, 0x000e, 0x0002 },
+ { 0x02, 0x00, -1, 0x01, 0x000e, 0x0003 },
+ { 0x02, 0x00, -1, 0x02, 0x000e, 0x0004 },
+ { 0x02, 0x00, -1, 0x03, 0x000e, 0x0005 },
+ { 0x02, 0x00, -1, 0x03, 0x000e, 0x0006 },
+ { 0x02, 0x00, -1, 0x03, 0x000e, 0x0007 },
+ { 0x02, 0x00, -1, 0x03, 0x000e, 0x0008 },
+ { 0x02, 0x00, -1, 0x03, 0x000e, 0x0009 },
+ { 0x03, 0x00, -1, 0x00, 0x0012, 0x0002 },
+ { 0x03, 0x00, -1, 0x01, 0x0012, 0x0003 },
+ { 0x03, 0x00, -1, 0x02, 0x0012, 0x0004 },
+ { 0x03, 0x00, -1, 0x03, 0x0012, 0x0005 },
+ { 0x03, 0x00, -1, 0x03, 0x0012, 0x0006 },
+ { 0x03, 0x00, -1, 0x03, 0x0012, 0x0007 },
+ { 0x03, 0x00, -1, 0x03, 0x0012, 0x0008 },
+ { 0x03, 0x00, -1, 0x03, 0x0012, 0x0009 },
+ { 0x03, 0x00, -1, 0x00, 0x001a, 0x0002 },
+ { 0x03, 0x00, -1, 0x01, 0x001a, 0x0003 },
+ { 0x03, 0x00, -1, 0x02, 0x001a, 0x0004 },
+ { 0x03, 0x00, -1, 0x03, 0x001a, 0x0005 },
+ { 0x03, 0x00, -1, 0x03, 0x001a, 0x0006 },
+ { 0x03, 0x00, -1, 0x03, 0x001a, 0x0007 },
+ { 0x03, 0x00, -1, 0x03, 0x001a, 0x0008 },
+ { 0x03, 0x00, -1, 0x03, 0x001a, 0x0009 },
+ { 0x04, 0x00, -1, 0x00, 0x0022, 0x0002 },
+ { 0x04, 0x00, -1, 0x01, 0x0022, 0x0003 },
+ { 0x04, 0x00, -1, 0x02, 0x0022, 0x0004 },
+ { 0x04, 0x00, -1, 0x03, 0x0022, 0x0005 },
+ { 0x04, 0x00, -1, 0x03, 0x0022, 0x0006 },
+ { 0x04, 0x00, -1, 0x03, 0x0022, 0x0007 },
+ { 0x04, 0x00, -1, 0x03, 0x0022, 0x0008 },
+ { 0x04, 0x00, -1, 0x03, 0x0022, 0x0009 },
+ { 0x04, 0x00, -1, 0x00, 0x0032, 0x0002 },
+ { 0x04, 0x00, -1, 0x01, 0x0032, 0x0003 },
+ { 0x04, 0x00, -1, 0x02, 0x0032, 0x0004 },
+ { 0x04, 0x00, -1, 0x03, 0x0032, 0x0005 },
+ { 0x04, 0x00, -1, 0x03, 0x0032, 0x0006 },
+ { 0x04, 0x00, -1, 0x03, 0x0032, 0x0007 },
+ { 0x04, 0x00, -1, 0x03, 0x0032, 0x0008 },
+ { 0x04, 0x00, -1, 0x03, 0x0032, 0x0009 },
+ { 0x05, 0x00, -1, 0x00, 0x0042, 0x0002 },
+ { 0x05, 0x00, -1, 0x01, 0x0042, 0x0003 },
+ { 0x05, 0x00, -1, 0x02, 0x0042, 0x0004 },
+ { 0x05, 0x00, -1, 0x03, 0x0042, 0x0005 },
+ { 0x05, 0x00, -1, 0x03, 0x0042, 0x0006 },
+ { 0x05, 0x00, -1, 0x03, 0x0042, 0x0007 },
+ { 0x05, 0x00, -1, 0x03, 0x0042, 0x0008 },
+ { 0x05, 0x00, -1, 0x03, 0x0042, 0x0009 },
+ { 0x05, 0x00, -1, 0x00, 0x0062, 0x0002 },
+ { 0x05, 0x00, -1, 0x01, 0x0062, 0x0003 },
+ { 0x05, 0x00, -1, 0x02, 0x0062, 0x0004 },
+ { 0x05, 0x00, -1, 0x03, 0x0062, 0x0005 },
+ { 0x05, 0x00, -1, 0x03, 0x0062, 0x0006 },
+ { 0x05, 0x00, -1, 0x03, 0x0062, 0x0007 },
+ { 0x05, 0x00, -1, 0x03, 0x0062, 0x0008 },
+ { 0x05, 0x00, -1, 0x03, 0x0062, 0x0009 },
+ { 0x02, 0x01, -1, 0x03, 0x000a, 0x000a },
+ { 0x02, 0x01, -1, 0x03, 0x000a, 0x000c },
+ { 0x02, 0x02, -1, 0x03, 0x000a, 0x000e },
+ { 0x02, 0x02, -1, 0x03, 0x000a, 0x0012 },
+ { 0x02, 0x03, -1, 0x03, 0x000a, 0x0016 },
+ { 0x02, 0x03, -1, 0x03, 0x000a, 0x001e },
+ { 0x02, 0x04, -1, 0x03, 0x000a, 0x0026 },
+ { 0x02, 0x04, -1, 0x03, 0x000a, 0x0036 },
+ { 0x02, 0x01, -1, 0x03, 0x000e, 0x000a },
+ { 0x02, 0x01, -1, 0x03, 0x000e, 0x000c },
+ { 0x02, 0x02, -1, 0x03, 0x000e, 0x000e },
+ { 0x02, 0x02, -1, 0x03, 0x000e, 0x0012 },
+ { 0x02, 0x03, -1, 0x03, 0x000e, 0x0016 },
+ { 0x02, 0x03, -1, 0x03, 0x000e, 0x001e },
+ { 0x02, 0x04, -1, 0x03, 0x000e, 0x0026 },
+ { 0x02, 0x04, -1, 0x03, 0x000e, 0x0036 },
+ { 0x03, 0x01, -1, 0x03, 0x0012, 0x000a },
+ { 0x03, 0x01, -1, 0x03, 0x0012, 0x000c },
+ { 0x03, 0x02, -1, 0x03, 0x0012, 0x000e },
+ { 0x03, 0x02, -1, 0x03, 0x0012, 0x0012 },
+ { 0x03, 0x03, -1, 0x03, 0x0012, 0x0016 },
+ { 0x03, 0x03, -1, 0x03, 0x0012, 0x001e },
+ { 0x03, 0x04, -1, 0x03, 0x0012, 0x0026 },
+ { 0x03, 0x04, -1, 0x03, 0x0012, 0x0036 },
+ { 0x03, 0x01, -1, 0x03, 0x001a, 0x000a },
+ { 0x03, 0x01, -1, 0x03, 0x001a, 0x000c },
+ { 0x03, 0x02, -1, 0x03, 0x001a, 0x000e },
+ { 0x03, 0x02, -1, 0x03, 0x001a, 0x0012 },
+ { 0x03, 0x03, -1, 0x03, 0x001a, 0x0016 },
+ { 0x03, 0x03, -1, 0x03, 0x001a, 0x001e },
+ { 0x03, 0x04, -1, 0x03, 0x001a, 0x0026 },
+ { 0x03, 0x04, -1, 0x03, 0x001a, 0x0036 },
+ { 0x04, 0x01, -1, 0x03, 0x0022, 0x000a },
+ { 0x04, 0x01, -1, 0x03, 0x0022, 0x000c },
+ { 0x04, 0x02, -1, 0x03, 0x0022, 0x000e },
+ { 0x04, 0x02, -1, 0x03, 0x0022, 0x0012 },
+ { 0x04, 0x03, -1, 0x03, 0x0022, 0x0016 },
+ { 0x04, 0x03, -1, 0x03, 0x0022, 0x001e },
+ { 0x04, 0x04, -1, 0x03, 0x0022, 0x0026 },
+ { 0x04, 0x04, -1, 0x03, 0x0022, 0x0036 },
+ { 0x04, 0x01, -1, 0x03, 0x0032, 0x000a },
+ { 0x04, 0x01, -1, 0x03, 0x0032, 0x000c },
+ { 0x04, 0x02, -1, 0x03, 0x0032, 0x000e },
+ { 0x04, 0x02, -1, 0x03, 0x0032, 0x0012 },
+ { 0x04, 0x03, -1, 0x03, 0x0032, 0x0016 },
+ { 0x04, 0x03, -1, 0x03, 0x0032, 0x001e },
+ { 0x04, 0x04, -1, 0x03, 0x0032, 0x0026 },
+ { 0x04, 0x04, -1, 0x03, 0x0032, 0x0036 },
+ { 0x05, 0x01, -1, 0x03, 0x0042, 0x000a },
+ { 0x05, 0x01, -1, 0x03, 0x0042, 0x000c },
+ { 0x05, 0x02, -1, 0x03, 0x0042, 0x000e },
+ { 0x05, 0x02, -1, 0x03, 0x0042, 0x0012 },
+ { 0x05, 0x03, -1, 0x03, 0x0042, 0x0016 },
+ { 0x05, 0x03, -1, 0x03, 0x0042, 0x001e },
+ { 0x05, 0x04, -1, 0x03, 0x0042, 0x0026 },
+ { 0x05, 0x04, -1, 0x03, 0x0042, 0x0036 },
+ { 0x05, 0x01, -1, 0x03, 0x0062, 0x000a },
+ { 0x05, 0x01, -1, 0x03, 0x0062, 0x000c },
+ { 0x05, 0x02, -1, 0x03, 0x0062, 0x000e },
+ { 0x05, 0x02, -1, 0x03, 0x0062, 0x0012 },
+ { 0x05, 0x03, -1, 0x03, 0x0062, 0x0016 },
+ { 0x05, 0x03, -1, 0x03, 0x0062, 0x001e },
+ { 0x05, 0x04, -1, 0x03, 0x0062, 0x0026 },
+ { 0x05, 0x04, -1, 0x03, 0x0062, 0x0036 },
+ { 0x00, 0x05, -1, 0x03, 0x0000, 0x0046 },
+ { 0x00, 0x05, -1, 0x03, 0x0000, 0x0066 },
+ { 0x00, 0x06, -1, 0x03, 0x0000, 0x0086 },
+ { 0x00, 0x07, -1, 0x03, 0x0000, 0x00c6 },
+ { 0x00, 0x08, -1, 0x03, 0x0000, 0x0146 },
+ { 0x00, 0x09, -1, 0x03, 0x0000, 0x0246 },
+ { 0x00, 0x0a, -1, 0x03, 0x0000, 0x0446 },
+ { 0x00, 0x18, -1, 0x03, 0x0000, 0x0846 },
+ { 0x00, 0x05, -1, 0x03, 0x0001, 0x0046 },
+ { 0x00, 0x05, -1, 0x03, 0x0001, 0x0066 },
+ { 0x00, 0x06, -1, 0x03, 0x0001, 0x0086 },
+ { 0x00, 0x07, -1, 0x03, 0x0001, 0x00c6 },
+ { 0x00, 0x08, -1, 0x03, 0x0001, 0x0146 },
+ { 0x00, 0x09, -1, 0x03, 0x0001, 0x0246 },
+ { 0x00, 0x0a, -1, 0x03, 0x0001, 0x0446 },
+ { 0x00, 0x18, -1, 0x03, 0x0001, 0x0846 },
+ { 0x00, 0x05, -1, 0x03, 0x0002, 0x0046 },
+ { 0x00, 0x05, -1, 0x03, 0x0002, 0x0066 },
+ { 0x00, 0x06, -1, 0x03, 0x0002, 0x0086 },
+ { 0x00, 0x07, -1, 0x03, 0x0002, 0x00c6 },
+ { 0x00, 0x08, -1, 0x03, 0x0002, 0x0146 },
+ { 0x00, 0x09, -1, 0x03, 0x0002, 0x0246 },
+ { 0x00, 0x0a, -1, 0x03, 0x0002, 0x0446 },
+ { 0x00, 0x18, -1, 0x03, 0x0002, 0x0846 },
+ { 0x00, 0x05, -1, 0x03, 0x0003, 0x0046 },
+ { 0x00, 0x05, -1, 0x03, 0x0003, 0x0066 },
+ { 0x00, 0x06, -1, 0x03, 0x0003, 0x0086 },
+ { 0x00, 0x07, -1, 0x03, 0x0003, 0x00c6 },
+ { 0x00, 0x08, -1, 0x03, 0x0003, 0x0146 },
+ { 0x00, 0x09, -1, 0x03, 0x0003, 0x0246 },
+ { 0x00, 0x0a, -1, 0x03, 0x0003, 0x0446 },
+ { 0x00, 0x18, -1, 0x03, 0x0003, 0x0846 },
+ { 0x00, 0x05, -1, 0x03, 0x0004, 0x0046 },
+ { 0x00, 0x05, -1, 0x03, 0x0004, 0x0066 },
+ { 0x00, 0x06, -1, 0x03, 0x0004, 0x0086 },
+ { 0x00, 0x07, -1, 0x03, 0x0004, 0x00c6 },
+ { 0x00, 0x08, -1, 0x03, 0x0004, 0x0146 },
+ { 0x00, 0x09, -1, 0x03, 0x0004, 0x0246 },
+ { 0x00, 0x0a, -1, 0x03, 0x0004, 0x0446 },
+ { 0x00, 0x18, -1, 0x03, 0x0004, 0x0846 },
+ { 0x00, 0x05, -1, 0x03, 0x0005, 0x0046 },
+ { 0x00, 0x05, -1, 0x03, 0x0005, 0x0066 },
+ { 0x00, 0x06, -1, 0x03, 0x0005, 0x0086 },
+ { 0x00, 0x07, -1, 0x03, 0x0005, 0x00c6 },
+ { 0x00, 0x08, -1, 0x03, 0x0005, 0x0146 },
+ { 0x00, 0x09, -1, 0x03, 0x0005, 0x0246 },
+ { 0x00, 0x0a, -1, 0x03, 0x0005, 0x0446 },
+ { 0x00, 0x18, -1, 0x03, 0x0005, 0x0846 },
+ { 0x01, 0x05, -1, 0x03, 0x0006, 0x0046 },
+ { 0x01, 0x05, -1, 0x03, 0x0006, 0x0066 },
+ { 0x01, 0x06, -1, 0x03, 0x0006, 0x0086 },
+ { 0x01, 0x07, -1, 0x03, 0x0006, 0x00c6 },
+ { 0x01, 0x08, -1, 0x03, 0x0006, 0x0146 },
+ { 0x01, 0x09, -1, 0x03, 0x0006, 0x0246 },
+ { 0x01, 0x0a, -1, 0x03, 0x0006, 0x0446 },
+ { 0x01, 0x18, -1, 0x03, 0x0006, 0x0846 },
+ { 0x01, 0x05, -1, 0x03, 0x0008, 0x0046 },
+ { 0x01, 0x05, -1, 0x03, 0x0008, 0x0066 },
+ { 0x01, 0x06, -1, 0x03, 0x0008, 0x0086 },
+ { 0x01, 0x07, -1, 0x03, 0x0008, 0x00c6 },
+ { 0x01, 0x08, -1, 0x03, 0x0008, 0x0146 },
+ { 0x01, 0x09, -1, 0x03, 0x0008, 0x0246 },
+ { 0x01, 0x0a, -1, 0x03, 0x0008, 0x0446 },
+ { 0x01, 0x18, -1, 0x03, 0x0008, 0x0846 },
+ { 0x06, 0x00, -1, 0x00, 0x0082, 0x0002 },
+ { 0x06, 0x00, -1, 0x01, 0x0082, 0x0003 },
+ { 0x06, 0x00, -1, 0x02, 0x0082, 0x0004 },
+ { 0x06, 0x00, -1, 0x03, 0x0082, 0x0005 },
+ { 0x06, 0x00, -1, 0x03, 0x0082, 0x0006 },
+ { 0x06, 0x00, -1, 0x03, 0x0082, 0x0007 },
+ { 0x06, 0x00, -1, 0x03, 0x0082, 0x0008 },
+ { 0x06, 0x00, -1, 0x03, 0x0082, 0x0009 },
+ { 0x07, 0x00, -1, 0x00, 0x00c2, 0x0002 },
+ { 0x07, 0x00, -1, 0x01, 0x00c2, 0x0003 },
+ { 0x07, 0x00, -1, 0x02, 0x00c2, 0x0004 },
+ { 0x07, 0x00, -1, 0x03, 0x00c2, 0x0005 },
+ { 0x07, 0x00, -1, 0x03, 0x00c2, 0x0006 },
+ { 0x07, 0x00, -1, 0x03, 0x00c2, 0x0007 },
+ { 0x07, 0x00, -1, 0x03, 0x00c2, 0x0008 },
+ { 0x07, 0x00, -1, 0x03, 0x00c2, 0x0009 },
+ { 0x08, 0x00, -1, 0x00, 0x0142, 0x0002 },
+ { 0x08, 0x00, -1, 0x01, 0x0142, 0x0003 },
+ { 0x08, 0x00, -1, 0x02, 0x0142, 0x0004 },
+ { 0x08, 0x00, -1, 0x03, 0x0142, 0x0005 },
+ { 0x08, 0x00, -1, 0x03, 0x0142, 0x0006 },
+ { 0x08, 0x00, -1, 0x03, 0x0142, 0x0007 },
+ { 0x08, 0x00, -1, 0x03, 0x0142, 0x0008 },
+ { 0x08, 0x00, -1, 0x03, 0x0142, 0x0009 },
+ { 0x09, 0x00, -1, 0x00, 0x0242, 0x0002 },
+ { 0x09, 0x00, -1, 0x01, 0x0242, 0x0003 },
+ { 0x09, 0x00, -1, 0x02, 0x0242, 0x0004 },
+ { 0x09, 0x00, -1, 0x03, 0x0242, 0x0005 },
+ { 0x09, 0x00, -1, 0x03, 0x0242, 0x0006 },
+ { 0x09, 0x00, -1, 0x03, 0x0242, 0x0007 },
+ { 0x09, 0x00, -1, 0x03, 0x0242, 0x0008 },
+ { 0x09, 0x00, -1, 0x03, 0x0242, 0x0009 },
+ { 0x0a, 0x00, -1, 0x00, 0x0442, 0x0002 },
+ { 0x0a, 0x00, -1, 0x01, 0x0442, 0x0003 },
+ { 0x0a, 0x00, -1, 0x02, 0x0442, 0x0004 },
+ { 0x0a, 0x00, -1, 0x03, 0x0442, 0x0005 },
+ { 0x0a, 0x00, -1, 0x03, 0x0442, 0x0006 },
+ { 0x0a, 0x00, -1, 0x03, 0x0442, 0x0007 },
+ { 0x0a, 0x00, -1, 0x03, 0x0442, 0x0008 },
+ { 0x0a, 0x00, -1, 0x03, 0x0442, 0x0009 },
+ { 0x0c, 0x00, -1, 0x00, 0x0842, 0x0002 },
+ { 0x0c, 0x00, -1, 0x01, 0x0842, 0x0003 },
+ { 0x0c, 0x00, -1, 0x02, 0x0842, 0x0004 },
+ { 0x0c, 0x00, -1, 0x03, 0x0842, 0x0005 },
+ { 0x0c, 0x00, -1, 0x03, 0x0842, 0x0006 },
+ { 0x0c, 0x00, -1, 0x03, 0x0842, 0x0007 },
+ { 0x0c, 0x00, -1, 0x03, 0x0842, 0x0008 },
+ { 0x0c, 0x00, -1, 0x03, 0x0842, 0x0009 },
+ { 0x0e, 0x00, -1, 0x00, 0x1842, 0x0002 },
+ { 0x0e, 0x00, -1, 0x01, 0x1842, 0x0003 },
+ { 0x0e, 0x00, -1, 0x02, 0x1842, 0x0004 },
+ { 0x0e, 0x00, -1, 0x03, 0x1842, 0x0005 },
+ { 0x0e, 0x00, -1, 0x03, 0x1842, 0x0006 },
+ { 0x0e, 0x00, -1, 0x03, 0x1842, 0x0007 },
+ { 0x0e, 0x00, -1, 0x03, 0x1842, 0x0008 },
+ { 0x0e, 0x00, -1, 0x03, 0x1842, 0x0009 },
+ { 0x18, 0x00, -1, 0x00, 0x5842, 0x0002 },
+ { 0x18, 0x00, -1, 0x01, 0x5842, 0x0003 },
+ { 0x18, 0x00, -1, 0x02, 0x5842, 0x0004 },
+ { 0x18, 0x00, -1, 0x03, 0x5842, 0x0005 },
+ { 0x18, 0x00, -1, 0x03, 0x5842, 0x0006 },
+ { 0x18, 0x00, -1, 0x03, 0x5842, 0x0007 },
+ { 0x18, 0x00, -1, 0x03, 0x5842, 0x0008 },
+ { 0x18, 0x00, -1, 0x03, 0x5842, 0x0009 },
+ { 0x02, 0x05, -1, 0x03, 0x000a, 0x0046 },
+ { 0x02, 0x05, -1, 0x03, 0x000a, 0x0066 },
+ { 0x02, 0x06, -1, 0x03, 0x000a, 0x0086 },
+ { 0x02, 0x07, -1, 0x03, 0x000a, 0x00c6 },
+ { 0x02, 0x08, -1, 0x03, 0x000a, 0x0146 },
+ { 0x02, 0x09, -1, 0x03, 0x000a, 0x0246 },
+ { 0x02, 0x0a, -1, 0x03, 0x000a, 0x0446 },
+ { 0x02, 0x18, -1, 0x03, 0x000a, 0x0846 },
+ { 0x02, 0x05, -1, 0x03, 0x000e, 0x0046 },
+ { 0x02, 0x05, -1, 0x03, 0x000e, 0x0066 },
+ { 0x02, 0x06, -1, 0x03, 0x000e, 0x0086 },
+ { 0x02, 0x07, -1, 0x03, 0x000e, 0x00c6 },
+ { 0x02, 0x08, -1, 0x03, 0x000e, 0x0146 },
+ { 0x02, 0x09, -1, 0x03, 0x000e, 0x0246 },
+ { 0x02, 0x0a, -1, 0x03, 0x000e, 0x0446 },
+ { 0x02, 0x18, -1, 0x03, 0x000e, 0x0846 },
+ { 0x03, 0x05, -1, 0x03, 0x0012, 0x0046 },
+ { 0x03, 0x05, -1, 0x03, 0x0012, 0x0066 },
+ { 0x03, 0x06, -1, 0x03, 0x0012, 0x0086 },
+ { 0x03, 0x07, -1, 0x03, 0x0012, 0x00c6 },
+ { 0x03, 0x08, -1, 0x03, 0x0012, 0x0146 },
+ { 0x03, 0x09, -1, 0x03, 0x0012, 0x0246 },
+ { 0x03, 0x0a, -1, 0x03, 0x0012, 0x0446 },
+ { 0x03, 0x18, -1, 0x03, 0x0012, 0x0846 },
+ { 0x03, 0x05, -1, 0x03, 0x001a, 0x0046 },
+ { 0x03, 0x05, -1, 0x03, 0x001a, 0x0066 },
+ { 0x03, 0x06, -1, 0x03, 0x001a, 0x0086 },
+ { 0x03, 0x07, -1, 0x03, 0x001a, 0x00c6 },
+ { 0x03, 0x08, -1, 0x03, 0x001a, 0x0146 },
+ { 0x03, 0x09, -1, 0x03, 0x001a, 0x0246 },
+ { 0x03, 0x0a, -1, 0x03, 0x001a, 0x0446 },
+ { 0x03, 0x18, -1, 0x03, 0x001a, 0x0846 },
+ { 0x04, 0x05, -1, 0x03, 0x0022, 0x0046 },
+ { 0x04, 0x05, -1, 0x03, 0x0022, 0x0066 },
+ { 0x04, 0x06, -1, 0x03, 0x0022, 0x0086 },
+ { 0x04, 0x07, -1, 0x03, 0x0022, 0x00c6 },
+ { 0x04, 0x08, -1, 0x03, 0x0022, 0x0146 },
+ { 0x04, 0x09, -1, 0x03, 0x0022, 0x0246 },
+ { 0x04, 0x0a, -1, 0x03, 0x0022, 0x0446 },
+ { 0x04, 0x18, -1, 0x03, 0x0022, 0x0846 },
+ { 0x04, 0x05, -1, 0x03, 0x0032, 0x0046 },
+ { 0x04, 0x05, -1, 0x03, 0x0032, 0x0066 },
+ { 0x04, 0x06, -1, 0x03, 0x0032, 0x0086 },
+ { 0x04, 0x07, -1, 0x03, 0x0032, 0x00c6 },
+ { 0x04, 0x08, -1, 0x03, 0x0032, 0x0146 },
+ { 0x04, 0x09, -1, 0x03, 0x0032, 0x0246 },
+ { 0x04, 0x0a, -1, 0x03, 0x0032, 0x0446 },
+ { 0x04, 0x18, -1, 0x03, 0x0032, 0x0846 },
+ { 0x05, 0x05, -1, 0x03, 0x0042, 0x0046 },
+ { 0x05, 0x05, -1, 0x03, 0x0042, 0x0066 },
+ { 0x05, 0x06, -1, 0x03, 0x0042, 0x0086 },
+ { 0x05, 0x07, -1, 0x03, 0x0042, 0x00c6 },
+ { 0x05, 0x08, -1, 0x03, 0x0042, 0x0146 },
+ { 0x05, 0x09, -1, 0x03, 0x0042, 0x0246 },
+ { 0x05, 0x0a, -1, 0x03, 0x0042, 0x0446 },
+ { 0x05, 0x18, -1, 0x03, 0x0042, 0x0846 },
+ { 0x05, 0x05, -1, 0x03, 0x0062, 0x0046 },
+ { 0x05, 0x05, -1, 0x03, 0x0062, 0x0066 },
+ { 0x05, 0x06, -1, 0x03, 0x0062, 0x0086 },
+ { 0x05, 0x07, -1, 0x03, 0x0062, 0x00c6 },
+ { 0x05, 0x08, -1, 0x03, 0x0062, 0x0146 },
+ { 0x05, 0x09, -1, 0x03, 0x0062, 0x0246 },
+ { 0x05, 0x0a, -1, 0x03, 0x0062, 0x0446 },
+ { 0x05, 0x18, -1, 0x03, 0x0062, 0x0846 },
+ { 0x06, 0x01, -1, 0x03, 0x0082, 0x000a },
+ { 0x06, 0x01, -1, 0x03, 0x0082, 0x000c },
+ { 0x06, 0x02, -1, 0x03, 0x0082, 0x000e },
+ { 0x06, 0x02, -1, 0x03, 0x0082, 0x0012 },
+ { 0x06, 0x03, -1, 0x03, 0x0082, 0x0016 },
+ { 0x06, 0x03, -1, 0x03, 0x0082, 0x001e },
+ { 0x06, 0x04, -1, 0x03, 0x0082, 0x0026 },
+ { 0x06, 0x04, -1, 0x03, 0x0082, 0x0036 },
+ { 0x07, 0x01, -1, 0x03, 0x00c2, 0x000a },
+ { 0x07, 0x01, -1, 0x03, 0x00c2, 0x000c },
+ { 0x07, 0x02, -1, 0x03, 0x00c2, 0x000e },
+ { 0x07, 0x02, -1, 0x03, 0x00c2, 0x0012 },
+ { 0x07, 0x03, -1, 0x03, 0x00c2, 0x0016 },
+ { 0x07, 0x03, -1, 0x03, 0x00c2, 0x001e },
+ { 0x07, 0x04, -1, 0x03, 0x00c2, 0x0026 },
+ { 0x07, 0x04, -1, 0x03, 0x00c2, 0x0036 },
+ { 0x08, 0x01, -1, 0x03, 0x0142, 0x000a },
+ { 0x08, 0x01, -1, 0x03, 0x0142, 0x000c },
+ { 0x08, 0x02, -1, 0x03, 0x0142, 0x000e },
+ { 0x08, 0x02, -1, 0x03, 0x0142, 0x0012 },
+ { 0x08, 0x03, -1, 0x03, 0x0142, 0x0016 },
+ { 0x08, 0x03, -1, 0x03, 0x0142, 0x001e },
+ { 0x08, 0x04, -1, 0x03, 0x0142, 0x0026 },
+ { 0x08, 0x04, -1, 0x03, 0x0142, 0x0036 },
+ { 0x09, 0x01, -1, 0x03, 0x0242, 0x000a },
+ { 0x09, 0x01, -1, 0x03, 0x0242, 0x000c },
+ { 0x09, 0x02, -1, 0x03, 0x0242, 0x000e },
+ { 0x09, 0x02, -1, 0x03, 0x0242, 0x0012 },
+ { 0x09, 0x03, -1, 0x03, 0x0242, 0x0016 },
+ { 0x09, 0x03, -1, 0x03, 0x0242, 0x001e },
+ { 0x09, 0x04, -1, 0x03, 0x0242, 0x0026 },
+ { 0x09, 0x04, -1, 0x03, 0x0242, 0x0036 },
+ { 0x0a, 0x01, -1, 0x03, 0x0442, 0x000a },
+ { 0x0a, 0x01, -1, 0x03, 0x0442, 0x000c },
+ { 0x0a, 0x02, -1, 0x03, 0x0442, 0x000e },
+ { 0x0a, 0x02, -1, 0x03, 0x0442, 0x0012 },
+ { 0x0a, 0x03, -1, 0x03, 0x0442, 0x0016 },
+ { 0x0a, 0x03, -1, 0x03, 0x0442, 0x001e },
+ { 0x0a, 0x04, -1, 0x03, 0x0442, 0x0026 },
+ { 0x0a, 0x04, -1, 0x03, 0x0442, 0x0036 },
+ { 0x0c, 0x01, -1, 0x03, 0x0842, 0x000a },
+ { 0x0c, 0x01, -1, 0x03, 0x0842, 0x000c },
+ { 0x0c, 0x02, -1, 0x03, 0x0842, 0x000e },
+ { 0x0c, 0x02, -1, 0x03, 0x0842, 0x0012 },
+ { 0x0c, 0x03, -1, 0x03, 0x0842, 0x0016 },
+ { 0x0c, 0x03, -1, 0x03, 0x0842, 0x001e },
+ { 0x0c, 0x04, -1, 0x03, 0x0842, 0x0026 },
+ { 0x0c, 0x04, -1, 0x03, 0x0842, 0x0036 },
+ { 0x0e, 0x01, -1, 0x03, 0x1842, 0x000a },
+ { 0x0e, 0x01, -1, 0x03, 0x1842, 0x000c },
+ { 0x0e, 0x02, -1, 0x03, 0x1842, 0x000e },
+ { 0x0e, 0x02, -1, 0x03, 0x1842, 0x0012 },
+ { 0x0e, 0x03, -1, 0x03, 0x1842, 0x0016 },
+ { 0x0e, 0x03, -1, 0x03, 0x1842, 0x001e },
+ { 0x0e, 0x04, -1, 0x03, 0x1842, 0x0026 },
+ { 0x0e, 0x04, -1, 0x03, 0x1842, 0x0036 },
+ { 0x18, 0x01, -1, 0x03, 0x5842, 0x000a },
+ { 0x18, 0x01, -1, 0x03, 0x5842, 0x000c },
+ { 0x18, 0x02, -1, 0x03, 0x5842, 0x000e },
+ { 0x18, 0x02, -1, 0x03, 0x5842, 0x0012 },
+ { 0x18, 0x03, -1, 0x03, 0x5842, 0x0016 },
+ { 0x18, 0x03, -1, 0x03, 0x5842, 0x001e },
+ { 0x18, 0x04, -1, 0x03, 0x5842, 0x0026 },
+ { 0x18, 0x04, -1, 0x03, 0x5842, 0x0036 },
+ { 0x06, 0x05, -1, 0x03, 0x0082, 0x0046 },
+ { 0x06, 0x05, -1, 0x03, 0x0082, 0x0066 },
+ { 0x06, 0x06, -1, 0x03, 0x0082, 0x0086 },
+ { 0x06, 0x07, -1, 0x03, 0x0082, 0x00c6 },
+ { 0x06, 0x08, -1, 0x03, 0x0082, 0x0146 },
+ { 0x06, 0x09, -1, 0x03, 0x0082, 0x0246 },
+ { 0x06, 0x0a, -1, 0x03, 0x0082, 0x0446 },
+ { 0x06, 0x18, -1, 0x03, 0x0082, 0x0846 },
+ { 0x07, 0x05, -1, 0x03, 0x00c2, 0x0046 },
+ { 0x07, 0x05, -1, 0x03, 0x00c2, 0x0066 },
+ { 0x07, 0x06, -1, 0x03, 0x00c2, 0x0086 },
+ { 0x07, 0x07, -1, 0x03, 0x00c2, 0x00c6 },
+ { 0x07, 0x08, -1, 0x03, 0x00c2, 0x0146 },
+ { 0x07, 0x09, -1, 0x03, 0x00c2, 0x0246 },
+ { 0x07, 0x0a, -1, 0x03, 0x00c2, 0x0446 },
+ { 0x07, 0x18, -1, 0x03, 0x00c2, 0x0846 },
+ { 0x08, 0x05, -1, 0x03, 0x0142, 0x0046 },
+ { 0x08, 0x05, -1, 0x03, 0x0142, 0x0066 },
+ { 0x08, 0x06, -1, 0x03, 0x0142, 0x0086 },
+ { 0x08, 0x07, -1, 0x03, 0x0142, 0x00c6 },
+ { 0x08, 0x08, -1, 0x03, 0x0142, 0x0146 },
+ { 0x08, 0x09, -1, 0x03, 0x0142, 0x0246 },
+ { 0x08, 0x0a, -1, 0x03, 0x0142, 0x0446 },
+ { 0x08, 0x18, -1, 0x03, 0x0142, 0x0846 },
+ { 0x09, 0x05, -1, 0x03, 0x0242, 0x0046 },
+ { 0x09, 0x05, -1, 0x03, 0x0242, 0x0066 },
+ { 0x09, 0x06, -1, 0x03, 0x0242, 0x0086 },
+ { 0x09, 0x07, -1, 0x03, 0x0242, 0x00c6 },
+ { 0x09, 0x08, -1, 0x03, 0x0242, 0x0146 },
+ { 0x09, 0x09, -1, 0x03, 0x0242, 0x0246 },
+ { 0x09, 0x0a, -1, 0x03, 0x0242, 0x0446 },
+ { 0x09, 0x18, -1, 0x03, 0x0242, 0x0846 },
+ { 0x0a, 0x05, -1, 0x03, 0x0442, 0x0046 },
+ { 0x0a, 0x05, -1, 0x03, 0x0442, 0x0066 },
+ { 0x0a, 0x06, -1, 0x03, 0x0442, 0x0086 },
+ { 0x0a, 0x07, -1, 0x03, 0x0442, 0x00c6 },
+ { 0x0a, 0x08, -1, 0x03, 0x0442, 0x0146 },
+ { 0x0a, 0x09, -1, 0x03, 0x0442, 0x0246 },
+ { 0x0a, 0x0a, -1, 0x03, 0x0442, 0x0446 },
+ { 0x0a, 0x18, -1, 0x03, 0x0442, 0x0846 },
+ { 0x0c, 0x05, -1, 0x03, 0x0842, 0x0046 },
+ { 0x0c, 0x05, -1, 0x03, 0x0842, 0x0066 },
+ { 0x0c, 0x06, -1, 0x03, 0x0842, 0x0086 },
+ { 0x0c, 0x07, -1, 0x03, 0x0842, 0x00c6 },
+ { 0x0c, 0x08, -1, 0x03, 0x0842, 0x0146 },
+ { 0x0c, 0x09, -1, 0x03, 0x0842, 0x0246 },
+ { 0x0c, 0x0a, -1, 0x03, 0x0842, 0x0446 },
+ { 0x0c, 0x18, -1, 0x03, 0x0842, 0x0846 },
+ { 0x0e, 0x05, -1, 0x03, 0x1842, 0x0046 },
+ { 0x0e, 0x05, -1, 0x03, 0x1842, 0x0066 },
+ { 0x0e, 0x06, -1, 0x03, 0x1842, 0x0086 },
+ { 0x0e, 0x07, -1, 0x03, 0x1842, 0x00c6 },
+ { 0x0e, 0x08, -1, 0x03, 0x1842, 0x0146 },
+ { 0x0e, 0x09, -1, 0x03, 0x1842, 0x0246 },
+ { 0x0e, 0x0a, -1, 0x03, 0x1842, 0x0446 },
+ { 0x0e, 0x18, -1, 0x03, 0x1842, 0x0846 },
+ { 0x18, 0x05, -1, 0x03, 0x5842, 0x0046 },
+ { 0x18, 0x05, -1, 0x03, 0x5842, 0x0066 },
+ { 0x18, 0x06, -1, 0x03, 0x5842, 0x0086 },
+ { 0x18, 0x07, -1, 0x03, 0x5842, 0x00c6 },
+ { 0x18, 0x08, -1, 0x03, 0x5842, 0x0146 },
+ { 0x18, 0x09, -1, 0x03, 0x5842, 0x0246 },
+ { 0x18, 0x0a, -1, 0x03, 0x5842, 0x0446 },
+ { 0x18, 0x18, -1, 0x03, 0x5842, 0x0846 },
+};
+
+#endif /* BROTLI_DEC_PREFIX_H_ */
diff --git a/thirdparty/brotli/dec/state.c b/thirdparty/brotli/dec/state.c
new file mode 100644
index 0000000000..e3170c1386
--- /dev/null
+++ b/thirdparty/brotli/dec/state.c
@@ -0,0 +1,165 @@
+/* Copyright 2015 Google Inc. All Rights Reserved.
+
+ Distributed under MIT license.
+ See file LICENSE for detail or copy at https://opensource.org/licenses/MIT
+*/
+
+#include "state.h"
+
+#include <stdlib.h> /* free, malloc */
+
+#include "../common/dictionary.h"
+#include <brotli/types.h>
+#include "huffman.h"
+
+#if defined(__cplusplus) || defined(c_plusplus)
+extern "C" {
+#endif
+
+BROTLI_BOOL BrotliDecoderStateInit(BrotliDecoderState* s,
+ brotli_alloc_func alloc_func, brotli_free_func free_func, void* opaque) {
+ if (!alloc_func) {
+ s->alloc_func = BrotliDefaultAllocFunc;
+ s->free_func = BrotliDefaultFreeFunc;
+ s->memory_manager_opaque = 0;
+ } else {
+ s->alloc_func = alloc_func;
+ s->free_func = free_func;
+ s->memory_manager_opaque = opaque;
+ }
+
+ s->error_code = 0; /* BROTLI_DECODER_NO_ERROR */
+
+ BrotliInitBitReader(&s->br);
+ s->state = BROTLI_STATE_UNINITED;
+ s->large_window = 0;
+ s->substate_metablock_header = BROTLI_STATE_METABLOCK_HEADER_NONE;
+ s->substate_uncompressed = BROTLI_STATE_UNCOMPRESSED_NONE;
+ s->substate_decode_uint8 = BROTLI_STATE_DECODE_UINT8_NONE;
+ s->substate_read_block_length = BROTLI_STATE_READ_BLOCK_LENGTH_NONE;
+
+ s->buffer_length = 0;
+ s->loop_counter = 0;
+ s->pos = 0;
+ s->rb_roundtrips = 0;
+ s->partial_pos_out = 0;
+
+ s->block_type_trees = NULL;
+ s->block_len_trees = NULL;
+ s->ringbuffer = NULL;
+ s->ringbuffer_size = 0;
+ s->new_ringbuffer_size = 0;
+ s->ringbuffer_mask = 0;
+
+ s->context_map = NULL;
+ s->context_modes = NULL;
+ s->dist_context_map = NULL;
+ s->context_map_slice = NULL;
+ s->dist_context_map_slice = NULL;
+
+ s->literal_hgroup.codes = NULL;
+ s->literal_hgroup.htrees = NULL;
+ s->insert_copy_hgroup.codes = NULL;
+ s->insert_copy_hgroup.htrees = NULL;
+ s->distance_hgroup.codes = NULL;
+ s->distance_hgroup.htrees = NULL;
+
+ s->is_last_metablock = 0;
+ s->is_uncompressed = 0;
+ s->is_metadata = 0;
+ s->should_wrap_ringbuffer = 0;
+ s->canny_ringbuffer_allocation = 1;
+
+ s->window_bits = 0;
+ s->max_distance = 0;
+ s->dist_rb[0] = 16;
+ s->dist_rb[1] = 15;
+ s->dist_rb[2] = 11;
+ s->dist_rb[3] = 4;
+ s->dist_rb_idx = 0;
+ s->block_type_trees = NULL;
+ s->block_len_trees = NULL;
+
+ s->mtf_upper_bound = 63;
+
+ s->compound_dictionary = NULL;
+ s->dictionary =
+ BrotliSharedDictionaryCreateInstance(alloc_func, free_func, opaque);
+ if (!s->dictionary) return BROTLI_FALSE;
+
+ return BROTLI_TRUE;
+}
+
+void BrotliDecoderStateMetablockBegin(BrotliDecoderState* s) {
+ s->meta_block_remaining_len = 0;
+ s->block_length[0] = 1U << 24;
+ s->block_length[1] = 1U << 24;
+ s->block_length[2] = 1U << 24;
+ s->num_block_types[0] = 1;
+ s->num_block_types[1] = 1;
+ s->num_block_types[2] = 1;
+ s->block_type_rb[0] = 1;
+ s->block_type_rb[1] = 0;
+ s->block_type_rb[2] = 1;
+ s->block_type_rb[3] = 0;
+ s->block_type_rb[4] = 1;
+ s->block_type_rb[5] = 0;
+ s->context_map = NULL;
+ s->context_modes = NULL;
+ s->dist_context_map = NULL;
+ s->context_map_slice = NULL;
+ s->literal_htree = NULL;
+ s->dist_context_map_slice = NULL;
+ s->dist_htree_index = 0;
+ s->context_lookup = NULL;
+ s->literal_hgroup.codes = NULL;
+ s->literal_hgroup.htrees = NULL;
+ s->insert_copy_hgroup.codes = NULL;
+ s->insert_copy_hgroup.htrees = NULL;
+ s->distance_hgroup.codes = NULL;
+ s->distance_hgroup.htrees = NULL;
+}
+
+void BrotliDecoderStateCleanupAfterMetablock(BrotliDecoderState* s) {
+ BROTLI_DECODER_FREE(s, s->context_modes);
+ BROTLI_DECODER_FREE(s, s->context_map);
+ BROTLI_DECODER_FREE(s, s->dist_context_map);
+ BROTLI_DECODER_FREE(s, s->literal_hgroup.htrees);
+ BROTLI_DECODER_FREE(s, s->insert_copy_hgroup.htrees);
+ BROTLI_DECODER_FREE(s, s->distance_hgroup.htrees);
+}
+
+void BrotliDecoderStateCleanup(BrotliDecoderState* s) {
+ BrotliDecoderStateCleanupAfterMetablock(s);
+
+ BROTLI_DECODER_FREE(s, s->compound_dictionary);
+ BrotliSharedDictionaryDestroyInstance(s->dictionary);
+ s->dictionary = NULL;
+ BROTLI_DECODER_FREE(s, s->ringbuffer);
+ BROTLI_DECODER_FREE(s, s->block_type_trees);
+}
+
+BROTLI_BOOL BrotliDecoderHuffmanTreeGroupInit(BrotliDecoderState* s,
+ HuffmanTreeGroup* group, uint32_t alphabet_size_max,
+ uint32_t alphabet_size_limit, uint32_t ntrees) {
+ /* 376 = 256 (1-st level table) + 4 + 7 + 15 + 31 + 63 (2-nd level mix-tables)
+ This number is discovered "unlimited" "enough" calculator; it is actually
+ a wee bigger than required in several cases (especially for alphabets with
+ less than 16 symbols). */
+ const size_t max_table_size = alphabet_size_limit + 376;
+ const size_t code_size = sizeof(HuffmanCode) * ntrees * max_table_size;
+ const size_t htree_size = sizeof(HuffmanCode*) * ntrees;
+ /* Pointer alignment is, hopefully, wider than sizeof(HuffmanCode). */
+ HuffmanCode** p = (HuffmanCode**)BROTLI_DECODER_ALLOC(s,
+ code_size + htree_size);
+ group->alphabet_size_max = (uint16_t)alphabet_size_max;
+ group->alphabet_size_limit = (uint16_t)alphabet_size_limit;
+ group->num_htrees = (uint16_t)ntrees;
+ group->htrees = p;
+ group->codes = (HuffmanCode*)(&p[ntrees]);
+ return !!p;
+}
+
+#if defined(__cplusplus) || defined(c_plusplus)
+} /* extern "C" */
+#endif
diff --git a/thirdparty/brotli/dec/state.h b/thirdparty/brotli/dec/state.h
new file mode 100644
index 0000000000..81e6bb6779
--- /dev/null
+++ b/thirdparty/brotli/dec/state.h
@@ -0,0 +1,380 @@
+/* Copyright 2015 Google Inc. All Rights Reserved.
+
+ Distributed under MIT license.
+ See file LICENSE for detail or copy at https://opensource.org/licenses/MIT
+*/
+
+/* Brotli state for partial streaming decoding. */
+
+#ifndef BROTLI_DEC_STATE_H_
+#define BROTLI_DEC_STATE_H_
+
+#include "../common/constants.h"
+#include "../common/dictionary.h"
+#include "../common/platform.h"
+#include <brotli/shared_dictionary.h>
+#include "../common/transform.h"
+#include <brotli/types.h>
+#include "bit_reader.h"
+#include "huffman.h"
+
+#if defined(__cplusplus) || defined(c_plusplus)
+extern "C" {
+#endif
+
+/* Graphviz diagram that describes state transitions:
+
+digraph States {
+ graph [compound=true]
+ concentrate=true
+ node [shape="box"]
+
+ UNINITED -> {LARGE_WINDOW_BITS -> INITIALIZE}
+ subgraph cluster_metablock_workflow {
+ style="rounded"
+ label=< <B>METABLOCK CYCLE</B> >
+ METABLOCK_BEGIN -> METABLOCK_HEADER
+ METABLOCK_HEADER:sw -> METADATA
+ METABLOCK_HEADER:s -> UNCOMPRESSED
+ METABLOCK_HEADER:se -> METABLOCK_DONE:ne
+ METADATA:s -> METABLOCK_DONE:w
+ UNCOMPRESSED:s -> METABLOCK_DONE:n
+ METABLOCK_DONE:e -> METABLOCK_BEGIN:e [constraint="false"]
+ }
+ INITIALIZE -> METABLOCK_BEGIN
+ METABLOCK_DONE -> DONE
+
+ subgraph cluster_compressed_metablock {
+ style="rounded"
+ label=< <B>COMPRESSED METABLOCK</B> >
+
+ subgraph cluster_command {
+ style="rounded"
+ label=< <B>HOT LOOP</B> >
+
+ _METABLOCK_DONE_PORT_ [shape=point style=invis]
+
+ {
+ // Set different shape for nodes returning from "compressed metablock".
+ node [shape=invhouse]; CMD_INNER CMD_POST_DECODE_LITERALS;
+ CMD_POST_WRAP_COPY; CMD_INNER_WRITE; CMD_POST_WRITE_1;
+ }
+
+ CMD_BEGIN -> CMD_INNER -> CMD_POST_DECODE_LITERALS -> CMD_POST_WRAP_COPY
+
+ // IO ("write") nodes are not in the hot loop!
+ CMD_INNER_WRITE [style=dashed]
+ CMD_INNER -> CMD_INNER_WRITE
+ CMD_POST_WRITE_1 [style=dashed]
+ CMD_POST_DECODE_LITERALS -> CMD_POST_WRITE_1
+ CMD_POST_WRITE_2 [style=dashed]
+ CMD_POST_WRAP_COPY -> CMD_POST_WRITE_2
+
+ CMD_POST_WRITE_1 -> CMD_BEGIN:s [constraint="false"]
+ CMD_INNER_WRITE -> {CMD_INNER CMD_POST_DECODE_LITERALS}
+ [constraint="false"]
+ CMD_BEGIN:ne -> CMD_POST_DECODE_LITERALS [constraint="false"]
+ CMD_POST_WRAP_COPY -> CMD_BEGIN [constraint="false"]
+ CMD_POST_DECODE_LITERALS -> CMD_BEGIN:ne [constraint="false"]
+ CMD_POST_WRITE_2 -> CMD_POST_WRAP_COPY [constraint="false"]
+ {rank=same; CMD_BEGIN; CMD_INNER; CMD_POST_DECODE_LITERALS;
+ CMD_POST_WRAP_COPY}
+ {rank=same; CMD_INNER_WRITE; CMD_POST_WRITE_1; CMD_POST_WRITE_2}
+
+ {CMD_INNER CMD_POST_DECODE_LITERALS CMD_POST_WRAP_COPY} ->
+ _METABLOCK_DONE_PORT_ [style=invis]
+ {CMD_INNER_WRITE CMD_POST_WRITE_1} -> _METABLOCK_DONE_PORT_
+ [constraint="false" style=invis]
+ }
+
+ BEFORE_COMPRESSED_METABLOCK_HEADER:s -> HUFFMAN_CODE_0:n
+ HUFFMAN_CODE_0 -> HUFFMAN_CODE_1 -> HUFFMAN_CODE_2 -> HUFFMAN_CODE_3
+ HUFFMAN_CODE_0 -> METABLOCK_HEADER_2 -> CONTEXT_MODES -> CONTEXT_MAP_1
+ CONTEXT_MAP_1 -> CONTEXT_MAP_2 -> TREE_GROUP
+ TREE_GROUP -> BEFORE_COMPRESSED_METABLOCK_BODY:e
+ BEFORE_COMPRESSED_METABLOCK_BODY:s -> CMD_BEGIN:n
+
+ HUFFMAN_CODE_3:e -> HUFFMAN_CODE_0:ne [constraint="false"]
+ {rank=same; HUFFMAN_CODE_0; HUFFMAN_CODE_1; HUFFMAN_CODE_2; HUFFMAN_CODE_3}
+ {rank=same; METABLOCK_HEADER_2; CONTEXT_MODES; CONTEXT_MAP_1; CONTEXT_MAP_2;
+ TREE_GROUP}
+ }
+ METABLOCK_HEADER:e -> BEFORE_COMPRESSED_METABLOCK_HEADER:n
+
+ _METABLOCK_DONE_PORT_ -> METABLOCK_DONE:se
+ [constraint="false" ltail=cluster_command]
+
+ UNINITED [shape=Mdiamond];
+ DONE [shape=Msquare];
+}
+
+
+ */
+
+typedef enum {
+ BROTLI_STATE_UNINITED,
+ BROTLI_STATE_LARGE_WINDOW_BITS,
+ BROTLI_STATE_INITIALIZE,
+ BROTLI_STATE_METABLOCK_BEGIN,
+ BROTLI_STATE_METABLOCK_HEADER,
+ BROTLI_STATE_METABLOCK_HEADER_2,
+ BROTLI_STATE_CONTEXT_MODES,
+ BROTLI_STATE_COMMAND_BEGIN,
+ BROTLI_STATE_COMMAND_INNER,
+ BROTLI_STATE_COMMAND_POST_DECODE_LITERALS,
+ BROTLI_STATE_COMMAND_POST_WRAP_COPY,
+ BROTLI_STATE_UNCOMPRESSED,
+ BROTLI_STATE_METADATA,
+ BROTLI_STATE_COMMAND_INNER_WRITE,
+ BROTLI_STATE_METABLOCK_DONE,
+ BROTLI_STATE_COMMAND_POST_WRITE_1,
+ BROTLI_STATE_COMMAND_POST_WRITE_2,
+ BROTLI_STATE_BEFORE_COMPRESSED_METABLOCK_HEADER,
+ BROTLI_STATE_HUFFMAN_CODE_0,
+ BROTLI_STATE_HUFFMAN_CODE_1,
+ BROTLI_STATE_HUFFMAN_CODE_2,
+ BROTLI_STATE_HUFFMAN_CODE_3,
+ BROTLI_STATE_CONTEXT_MAP_1,
+ BROTLI_STATE_CONTEXT_MAP_2,
+ BROTLI_STATE_TREE_GROUP,
+ BROTLI_STATE_BEFORE_COMPRESSED_METABLOCK_BODY,
+ BROTLI_STATE_DONE
+} BrotliRunningState;
+
+typedef enum {
+ BROTLI_STATE_METABLOCK_HEADER_NONE,
+ BROTLI_STATE_METABLOCK_HEADER_EMPTY,
+ BROTLI_STATE_METABLOCK_HEADER_NIBBLES,
+ BROTLI_STATE_METABLOCK_HEADER_SIZE,
+ BROTLI_STATE_METABLOCK_HEADER_UNCOMPRESSED,
+ BROTLI_STATE_METABLOCK_HEADER_RESERVED,
+ BROTLI_STATE_METABLOCK_HEADER_BYTES,
+ BROTLI_STATE_METABLOCK_HEADER_METADATA
+} BrotliRunningMetablockHeaderState;
+
+typedef enum {
+ BROTLI_STATE_UNCOMPRESSED_NONE,
+ BROTLI_STATE_UNCOMPRESSED_WRITE
+} BrotliRunningUncompressedState;
+
+typedef enum {
+ BROTLI_STATE_TREE_GROUP_NONE,
+ BROTLI_STATE_TREE_GROUP_LOOP
+} BrotliRunningTreeGroupState;
+
+typedef enum {
+ BROTLI_STATE_CONTEXT_MAP_NONE,
+ BROTLI_STATE_CONTEXT_MAP_READ_PREFIX,
+ BROTLI_STATE_CONTEXT_MAP_HUFFMAN,
+ BROTLI_STATE_CONTEXT_MAP_DECODE,
+ BROTLI_STATE_CONTEXT_MAP_TRANSFORM
+} BrotliRunningContextMapState;
+
+typedef enum {
+ BROTLI_STATE_HUFFMAN_NONE,
+ BROTLI_STATE_HUFFMAN_SIMPLE_SIZE,
+ BROTLI_STATE_HUFFMAN_SIMPLE_READ,
+ BROTLI_STATE_HUFFMAN_SIMPLE_BUILD,
+ BROTLI_STATE_HUFFMAN_COMPLEX,
+ BROTLI_STATE_HUFFMAN_LENGTH_SYMBOLS
+} BrotliRunningHuffmanState;
+
+typedef enum {
+ BROTLI_STATE_DECODE_UINT8_NONE,
+ BROTLI_STATE_DECODE_UINT8_SHORT,
+ BROTLI_STATE_DECODE_UINT8_LONG
+} BrotliRunningDecodeUint8State;
+
+typedef enum {
+ BROTLI_STATE_READ_BLOCK_LENGTH_NONE,
+ BROTLI_STATE_READ_BLOCK_LENGTH_SUFFIX
+} BrotliRunningReadBlockLengthState;
+
+/* BrotliDecoderState addon, used for Compound Dictionary functionality. */
+typedef struct BrotliDecoderCompoundDictionary {
+ int num_chunks;
+ int total_size;
+ int br_index;
+ int br_offset;
+ int br_length;
+ int br_copied;
+ const uint8_t* chunks[16];
+ int chunk_offsets[16];
+ int block_bits;
+ uint8_t block_map[256];
+} BrotliDecoderCompoundDictionary;
+
+typedef struct BrotliMetablockHeaderArena {
+ BrotliRunningTreeGroupState substate_tree_group;
+ BrotliRunningContextMapState substate_context_map;
+ BrotliRunningHuffmanState substate_huffman;
+
+ uint32_t sub_loop_counter;
+
+ uint32_t repeat_code_len;
+ uint32_t prev_code_len;
+
+ /* For ReadHuffmanCode. */
+ uint32_t symbol;
+ uint32_t repeat;
+ uint32_t space;
+
+ /* Huffman table for "histograms". */
+ HuffmanCode table[32];
+ /* List of heads of symbol chains. */
+ uint16_t* symbol_lists;
+ /* Storage from symbol_lists. */
+ uint16_t symbols_lists_array[BROTLI_HUFFMAN_MAX_CODE_LENGTH + 1 +
+ BROTLI_NUM_COMMAND_SYMBOLS];
+ /* Tails of symbol chains. */
+ int next_symbol[32];
+ uint8_t code_length_code_lengths[BROTLI_CODE_LENGTH_CODES];
+ /* Population counts for the code lengths. */
+ uint16_t code_length_histo[16];
+
+ /* For HuffmanTreeGroupDecode. */
+ int htree_index;
+ HuffmanCode* next;
+
+ /* For DecodeContextMap. */
+ uint32_t context_index;
+ uint32_t max_run_length_prefix;
+ uint32_t code;
+ HuffmanCode context_map_table[BROTLI_HUFFMAN_MAX_SIZE_272];
+} BrotliMetablockHeaderArena;
+
+typedef struct BrotliMetablockBodyArena {
+ uint8_t dist_extra_bits[544];
+ uint32_t dist_offset[544];
+} BrotliMetablockBodyArena;
+
+struct BrotliDecoderStateStruct {
+ BrotliRunningState state;
+
+ /* This counter is reused for several disjoint loops. */
+ int loop_counter;
+
+ BrotliBitReader br;
+
+ brotli_alloc_func alloc_func;
+ brotli_free_func free_func;
+ void* memory_manager_opaque;
+
+ /* Temporary storage for remaining input. Brotli stream format is designed in
+ a way, that 64 bits are enough to make progress in decoding. */
+ union {
+ uint64_t u64;
+ uint8_t u8[8];
+ } buffer;
+ uint32_t buffer_length;
+
+ int pos;
+ int max_backward_distance;
+ int max_distance;
+ int ringbuffer_size;
+ int ringbuffer_mask;
+ int dist_rb_idx;
+ int dist_rb[4];
+ int error_code;
+ uint8_t* ringbuffer;
+ uint8_t* ringbuffer_end;
+ HuffmanCode* htree_command;
+ const uint8_t* context_lookup;
+ uint8_t* context_map_slice;
+ uint8_t* dist_context_map_slice;
+
+ /* This ring buffer holds a few past copy distances that will be used by
+ some special distance codes. */
+ HuffmanTreeGroup literal_hgroup;
+ HuffmanTreeGroup insert_copy_hgroup;
+ HuffmanTreeGroup distance_hgroup;
+ HuffmanCode* block_type_trees;
+ HuffmanCode* block_len_trees;
+ /* This is true if the literal context map histogram type always matches the
+ block type. It is then not needed to keep the context (faster decoding). */
+ int trivial_literal_context;
+ /* Distance context is actual after command is decoded and before distance is
+ computed. After distance computation it is used as a temporary variable. */
+ int distance_context;
+ int meta_block_remaining_len;
+ uint32_t block_length_index;
+ uint32_t block_length[3];
+ uint32_t num_block_types[3];
+ uint32_t block_type_rb[6];
+ uint32_t distance_postfix_bits;
+ uint32_t num_direct_distance_codes;
+ uint32_t num_dist_htrees;
+ uint8_t* dist_context_map;
+ HuffmanCode* literal_htree;
+ uint8_t dist_htree_index;
+
+ int copy_length;
+ int distance_code;
+
+ /* For partial write operations. */
+ size_t rb_roundtrips; /* how many times we went around the ring-buffer */
+ size_t partial_pos_out; /* how much output to the user in total */
+
+ /* For InverseMoveToFrontTransform. */
+ uint32_t mtf_upper_bound;
+ uint32_t mtf[64 + 1];
+
+ /* Less used attributes are at the end of this struct. */
+
+ /* States inside function calls. */
+ BrotliRunningMetablockHeaderState substate_metablock_header;
+ BrotliRunningUncompressedState substate_uncompressed;
+ BrotliRunningDecodeUint8State substate_decode_uint8;
+ BrotliRunningReadBlockLengthState substate_read_block_length;
+
+ unsigned int is_last_metablock : 1;
+ unsigned int is_uncompressed : 1;
+ unsigned int is_metadata : 1;
+ unsigned int should_wrap_ringbuffer : 1;
+ unsigned int canny_ringbuffer_allocation : 1;
+ unsigned int large_window : 1;
+ unsigned int size_nibbles : 8;
+ uint32_t window_bits;
+
+ int new_ringbuffer_size;
+
+ uint32_t num_literal_htrees;
+ uint8_t* context_map;
+ uint8_t* context_modes;
+
+ BrotliSharedDictionary* dictionary;
+ BrotliDecoderCompoundDictionary* compound_dictionary;
+
+ uint32_t trivial_literal_contexts[8]; /* 256 bits */
+
+ union {
+ BrotliMetablockHeaderArena header;
+ BrotliMetablockBodyArena body;
+ } arena;
+};
+
+typedef struct BrotliDecoderStateStruct BrotliDecoderStateInternal;
+#define BrotliDecoderState BrotliDecoderStateInternal
+
+BROTLI_INTERNAL BROTLI_BOOL BrotliDecoderStateInit(BrotliDecoderState* s,
+ brotli_alloc_func alloc_func, brotli_free_func free_func, void* opaque);
+BROTLI_INTERNAL void BrotliDecoderStateCleanup(BrotliDecoderState* s);
+BROTLI_INTERNAL void BrotliDecoderStateMetablockBegin(BrotliDecoderState* s);
+BROTLI_INTERNAL void BrotliDecoderStateCleanupAfterMetablock(
+ BrotliDecoderState* s);
+BROTLI_INTERNAL BROTLI_BOOL BrotliDecoderHuffmanTreeGroupInit(
+ BrotliDecoderState* s, HuffmanTreeGroup* group, uint32_t alphabet_size_max,
+ uint32_t alphabet_size_limit, uint32_t ntrees);
+
+#define BROTLI_DECODER_ALLOC(S, L) S->alloc_func(S->memory_manager_opaque, L)
+
+#define BROTLI_DECODER_FREE(S, X) { \
+ S->free_func(S->memory_manager_opaque, X); \
+ X = NULL; \
+}
+
+#if defined(__cplusplus) || defined(c_plusplus)
+} /* extern "C" */
+#endif
+
+#endif /* BROTLI_DEC_STATE_H_ */
diff --git a/thirdparty/brotli/include/brotli/decode.h b/thirdparty/brotli/include/brotli/decode.h
new file mode 100644
index 0000000000..9b580d22a0
--- /dev/null
+++ b/thirdparty/brotli/include/brotli/decode.h
@@ -0,0 +1,368 @@
+/* Copyright 2013 Google Inc. All Rights Reserved.
+
+ Distributed under MIT license.
+ See file LICENSE for detail or copy at https://opensource.org/licenses/MIT
+*/
+
+/**
+ * @file
+ * API for Brotli decompression.
+ */
+
+#ifndef BROTLI_DEC_DECODE_H_
+#define BROTLI_DEC_DECODE_H_
+
+#include <brotli/port.h>
+#include <brotli/shared_dictionary.h>
+#include <brotli/types.h>
+
+#if defined(__cplusplus) || defined(c_plusplus)
+extern "C" {
+#endif
+
+/**
+ * Opaque structure that holds decoder state.
+ *
+ * Allocated and initialized with ::BrotliDecoderCreateInstance.
+ * Cleaned up and deallocated with ::BrotliDecoderDestroyInstance.
+ */
+typedef struct BrotliDecoderStateStruct BrotliDecoderState;
+
+/**
+ * Result type for ::BrotliDecoderDecompress and
+ * ::BrotliDecoderDecompressStream functions.
+ */
+typedef enum {
+ /** Decoding error, e.g. corrupted input or memory allocation problem. */
+ BROTLI_DECODER_RESULT_ERROR = 0,
+ /** Decoding successfully completed. */
+ BROTLI_DECODER_RESULT_SUCCESS = 1,
+ /** Partially done; should be called again with more input. */
+ BROTLI_DECODER_RESULT_NEEDS_MORE_INPUT = 2,
+ /** Partially done; should be called again with more output. */
+ BROTLI_DECODER_RESULT_NEEDS_MORE_OUTPUT = 3
+} BrotliDecoderResult;
+
+/**
+ * Template that evaluates items of ::BrotliDecoderErrorCode.
+ *
+ * Example: @code {.cpp}
+ * // Log Brotli error code.
+ * switch (brotliDecoderErrorCode) {
+ * #define CASE_(PREFIX, NAME, CODE) \
+ * case BROTLI_DECODER ## PREFIX ## NAME: \
+ * LOG(INFO) << "error code:" << #NAME; \
+ * break;
+ * #define NEWLINE_
+ * BROTLI_DECODER_ERROR_CODES_LIST(CASE_, NEWLINE_)
+ * #undef CASE_
+ * #undef NEWLINE_
+ * default: LOG(FATAL) << "unknown brotli error code";
+ * }
+ * @endcode
+ */
+#define BROTLI_DECODER_ERROR_CODES_LIST(BROTLI_ERROR_CODE, SEPARATOR) \
+ BROTLI_ERROR_CODE(_, NO_ERROR, 0) SEPARATOR \
+ /* Same as BrotliDecoderResult values */ \
+ BROTLI_ERROR_CODE(_, SUCCESS, 1) SEPARATOR \
+ BROTLI_ERROR_CODE(_, NEEDS_MORE_INPUT, 2) SEPARATOR \
+ BROTLI_ERROR_CODE(_, NEEDS_MORE_OUTPUT, 3) SEPARATOR \
+ \
+ /* Errors caused by invalid input */ \
+ BROTLI_ERROR_CODE(_ERROR_FORMAT_, EXUBERANT_NIBBLE, -1) SEPARATOR \
+ BROTLI_ERROR_CODE(_ERROR_FORMAT_, RESERVED, -2) SEPARATOR \
+ BROTLI_ERROR_CODE(_ERROR_FORMAT_, EXUBERANT_META_NIBBLE, -3) SEPARATOR \
+ BROTLI_ERROR_CODE(_ERROR_FORMAT_, SIMPLE_HUFFMAN_ALPHABET, -4) SEPARATOR \
+ BROTLI_ERROR_CODE(_ERROR_FORMAT_, SIMPLE_HUFFMAN_SAME, -5) SEPARATOR \
+ BROTLI_ERROR_CODE(_ERROR_FORMAT_, CL_SPACE, -6) SEPARATOR \
+ BROTLI_ERROR_CODE(_ERROR_FORMAT_, HUFFMAN_SPACE, -7) SEPARATOR \
+ BROTLI_ERROR_CODE(_ERROR_FORMAT_, CONTEXT_MAP_REPEAT, -8) SEPARATOR \
+ BROTLI_ERROR_CODE(_ERROR_FORMAT_, BLOCK_LENGTH_1, -9) SEPARATOR \
+ BROTLI_ERROR_CODE(_ERROR_FORMAT_, BLOCK_LENGTH_2, -10) SEPARATOR \
+ BROTLI_ERROR_CODE(_ERROR_FORMAT_, TRANSFORM, -11) SEPARATOR \
+ BROTLI_ERROR_CODE(_ERROR_FORMAT_, DICTIONARY, -12) SEPARATOR \
+ BROTLI_ERROR_CODE(_ERROR_FORMAT_, WINDOW_BITS, -13) SEPARATOR \
+ BROTLI_ERROR_CODE(_ERROR_FORMAT_, PADDING_1, -14) SEPARATOR \
+ BROTLI_ERROR_CODE(_ERROR_FORMAT_, PADDING_2, -15) SEPARATOR \
+ BROTLI_ERROR_CODE(_ERROR_FORMAT_, DISTANCE, -16) SEPARATOR \
+ \
+ /* -17 code is reserved */ \
+ \
+ BROTLI_ERROR_CODE(_ERROR_, COMPOUND_DICTIONARY, -18) SEPARATOR \
+ BROTLI_ERROR_CODE(_ERROR_, DICTIONARY_NOT_SET, -19) SEPARATOR \
+ BROTLI_ERROR_CODE(_ERROR_, INVALID_ARGUMENTS, -20) SEPARATOR \
+ \
+ /* Memory allocation problems */ \
+ BROTLI_ERROR_CODE(_ERROR_ALLOC_, CONTEXT_MODES, -21) SEPARATOR \
+ /* Literal, insert and distance trees together */ \
+ BROTLI_ERROR_CODE(_ERROR_ALLOC_, TREE_GROUPS, -22) SEPARATOR \
+ /* -23..-24 codes are reserved for distinct tree groups */ \
+ BROTLI_ERROR_CODE(_ERROR_ALLOC_, CONTEXT_MAP, -25) SEPARATOR \
+ BROTLI_ERROR_CODE(_ERROR_ALLOC_, RING_BUFFER_1, -26) SEPARATOR \
+ BROTLI_ERROR_CODE(_ERROR_ALLOC_, RING_BUFFER_2, -27) SEPARATOR \
+ /* -28..-29 codes are reserved for dynamic ring-buffer allocation */ \
+ BROTLI_ERROR_CODE(_ERROR_ALLOC_, BLOCK_TYPE_TREES, -30) SEPARATOR \
+ \
+ /* "Impossible" states */ \
+ BROTLI_ERROR_CODE(_ERROR_, UNREACHABLE, -31)
+
+/**
+ * Error code for detailed logging / production debugging.
+ *
+ * See ::BrotliDecoderGetErrorCode and ::BROTLI_LAST_ERROR_CODE.
+ */
+typedef enum {
+#define BROTLI_COMMA_ ,
+#define BROTLI_ERROR_CODE_ENUM_ITEM_(PREFIX, NAME, CODE) \
+ BROTLI_DECODER ## PREFIX ## NAME = CODE
+ BROTLI_DECODER_ERROR_CODES_LIST(BROTLI_ERROR_CODE_ENUM_ITEM_, BROTLI_COMMA_)
+} BrotliDecoderErrorCode;
+#undef BROTLI_ERROR_CODE_ENUM_ITEM_
+#undef BROTLI_COMMA_
+
+/**
+ * The value of the last error code, negative integer.
+ *
+ * All other error code values are in the range from ::BROTLI_LAST_ERROR_CODE
+ * to @c -1. There are also 4 other possible non-error codes @c 0 .. @c 3 in
+ * ::BrotliDecoderErrorCode enumeration.
+ */
+#define BROTLI_LAST_ERROR_CODE BROTLI_DECODER_ERROR_UNREACHABLE
+
+/** Options to be used with ::BrotliDecoderSetParameter. */
+typedef enum BrotliDecoderParameter {
+ /**
+ * Disable "canny" ring buffer allocation strategy.
+ *
+ * Ring buffer is allocated according to window size, despite the real size of
+ * the content.
+ */
+ BROTLI_DECODER_PARAM_DISABLE_RING_BUFFER_REALLOCATION = 0,
+ /**
+ * Flag that determines if "Large Window Brotli" is used.
+ */
+ BROTLI_DECODER_PARAM_LARGE_WINDOW = 1
+} BrotliDecoderParameter;
+
+/**
+ * Sets the specified parameter to the given decoder instance.
+ *
+ * @param state decoder instance
+ * @param param parameter to set
+ * @param value new parameter value
+ * @returns ::BROTLI_FALSE if parameter is unrecognized, or value is invalid
+ * @returns ::BROTLI_TRUE if value is accepted
+ */
+BROTLI_DEC_API BROTLI_BOOL BrotliDecoderSetParameter(
+ BrotliDecoderState* state, BrotliDecoderParameter param, uint32_t value);
+
+/**
+ * Adds LZ77 prefix dictionary, adds or replaces built-in static dictionary and
+ * transforms.
+ *
+ * Attached dictionary ownership is not transferred.
+ * Data provided to this method should be kept accessible until
+ * decoding is finished and decoder instance is destroyed.
+ *
+ * @note Dictionaries can NOT be attached after actual decoding is started.
+ *
+ * @param state decoder instance
+ * @param type dictionary data format
+ * @param data_size length of memory region pointed by @p data
+ * @param data dictionary data in format corresponding to @p type
+ * @returns ::BROTLI_FALSE if dictionary is corrupted,
+ * or dictionary count limit is reached
+ * @returns ::BROTLI_TRUE if dictionary is accepted / attached
+ */
+BROTLI_DEC_API BROTLI_BOOL BrotliDecoderAttachDictionary(
+ BrotliDecoderState* state, BrotliSharedDictionaryType type,
+ size_t data_size, const uint8_t data[BROTLI_ARRAY_PARAM(data_size)]);
+
+/**
+ * Creates an instance of ::BrotliDecoderState and initializes it.
+ *
+ * The instance can be used once for decoding and should then be destroyed with
+ * ::BrotliDecoderDestroyInstance, it cannot be reused for a new decoding
+ * session.
+ *
+ * @p alloc_func and @p free_func @b MUST be both zero or both non-zero. In the
+ * case they are both zero, default memory allocators are used. @p opaque is
+ * passed to @p alloc_func and @p free_func when they are called. @p free_func
+ * has to return without doing anything when asked to free a NULL pointer.
+ *
+ * @param alloc_func custom memory allocation function
+ * @param free_func custom memory free function
+ * @param opaque custom memory manager handle
+ * @returns @c 0 if instance can not be allocated or initialized
+ * @returns pointer to initialized ::BrotliDecoderState otherwise
+ */
+BROTLI_DEC_API BrotliDecoderState* BrotliDecoderCreateInstance(
+ brotli_alloc_func alloc_func, brotli_free_func free_func, void* opaque);
+
+/**
+ * Deinitializes and frees ::BrotliDecoderState instance.
+ *
+ * @param state decoder instance to be cleaned up and deallocated
+ */
+BROTLI_DEC_API void BrotliDecoderDestroyInstance(BrotliDecoderState* state);
+
+/**
+ * Performs one-shot memory-to-memory decompression.
+ *
+ * Decompresses the data in @p encoded_buffer into @p decoded_buffer, and sets
+ * @p *decoded_size to the decompressed length.
+ *
+ * @param encoded_size size of @p encoded_buffer
+ * @param encoded_buffer compressed data buffer with at least @p encoded_size
+ * addressable bytes
+ * @param[in, out] decoded_size @b in: size of @p decoded_buffer; \n
+ * @b out: length of decompressed data written to
+ * @p decoded_buffer
+ * @param decoded_buffer decompressed data destination buffer
+ * @returns ::BROTLI_DECODER_RESULT_ERROR if input is corrupted, memory
+ * allocation failed, or @p decoded_buffer is not large enough;
+ * @returns ::BROTLI_DECODER_RESULT_SUCCESS otherwise
+ */
+BROTLI_DEC_API BrotliDecoderResult BrotliDecoderDecompress(
+ size_t encoded_size,
+ const uint8_t encoded_buffer[BROTLI_ARRAY_PARAM(encoded_size)],
+ size_t* decoded_size,
+ uint8_t decoded_buffer[BROTLI_ARRAY_PARAM(*decoded_size)]);
+
+/**
+ * Decompresses the input stream to the output stream.
+ *
+ * The values @p *available_in and @p *available_out must specify the number of
+ * bytes addressable at @p *next_in and @p *next_out respectively.
+ * When @p *available_out is @c 0, @p next_out is allowed to be @c NULL.
+ *
+ * After each call, @p *available_in will be decremented by the amount of input
+ * bytes consumed, and the @p *next_in pointer will be incremented by that
+ * amount. Similarly, @p *available_out will be decremented by the amount of
+ * output bytes written, and the @p *next_out pointer will be incremented by
+ * that amount.
+ *
+ * @p total_out, if it is not a null-pointer, will be set to the number
+ * of bytes decompressed since the last @p state initialization.
+ *
+ * @note Input is never overconsumed, so @p next_in and @p available_in could be
+ * passed to the next consumer after decoding is complete.
+ *
+ * @param state decoder instance
+ * @param[in, out] available_in @b in: amount of available input; \n
+ * @b out: amount of unused input
+ * @param[in, out] next_in pointer to the next compressed byte
+ * @param[in, out] available_out @b in: length of output buffer; \n
+ * @b out: remaining size of output buffer
+ * @param[in, out] next_out output buffer cursor;
+ * can be @c NULL if @p available_out is @c 0
+ * @param[out] total_out number of bytes decompressed so far; can be @c NULL
+ * @returns ::BROTLI_DECODER_RESULT_ERROR if input is corrupted, memory
+ * allocation failed, arguments were invalid, etc.;
+ * use ::BrotliDecoderGetErrorCode to get detailed error code
+ * @returns ::BROTLI_DECODER_RESULT_NEEDS_MORE_INPUT decoding is blocked until
+ * more input data is provided
+ * @returns ::BROTLI_DECODER_RESULT_NEEDS_MORE_OUTPUT decoding is blocked until
+ * more output space is provided
+ * @returns ::BROTLI_DECODER_RESULT_SUCCESS decoding is finished, no more
+ * input might be consumed and no more output will be produced
+ */
+BROTLI_DEC_API BrotliDecoderResult BrotliDecoderDecompressStream(
+ BrotliDecoderState* state, size_t* available_in, const uint8_t** next_in,
+ size_t* available_out, uint8_t** next_out, size_t* total_out);
+
+/**
+ * Checks if decoder has more output.
+ *
+ * @param state decoder instance
+ * @returns ::BROTLI_TRUE, if decoder has some unconsumed output
+ * @returns ::BROTLI_FALSE otherwise
+ */
+BROTLI_DEC_API BROTLI_BOOL BrotliDecoderHasMoreOutput(
+ const BrotliDecoderState* state);
+
+/**
+ * Acquires pointer to internal output buffer.
+ *
+ * This method is used to make language bindings easier and more efficient:
+ * -# push data to ::BrotliDecoderDecompressStream,
+ * until ::BROTLI_DECODER_RESULT_NEEDS_MORE_OUTPUT is reported
+ * -# use ::BrotliDecoderTakeOutput to peek bytes and copy to language-specific
+ * entity
+ *
+ * Also this could be useful if there is an output stream that is able to
+ * consume all the provided data (e.g. when data is saved to file system).
+ *
+ * @attention After every call to ::BrotliDecoderTakeOutput @p *size bytes of
+ * output are considered consumed for all consecutive calls to the
+ * instance methods; returned pointer becomes invalidated as well.
+ *
+ * @note Decoder output is not guaranteed to be contiguous. This means that
+ * after the size-unrestricted call to ::BrotliDecoderTakeOutput,
+ * immediate next call to ::BrotliDecoderTakeOutput may return more data.
+ *
+ * @param state decoder instance
+ * @param[in, out] size @b in: number of bytes caller is ready to take, @c 0 if
+ * any amount could be handled; \n
+ * @b out: amount of data pointed by returned pointer and
+ * considered consumed; \n
+ * out value is never greater than in value, unless it is @c 0
+ * @returns pointer to output data
+ */
+BROTLI_DEC_API const uint8_t* BrotliDecoderTakeOutput(
+ BrotliDecoderState* state, size_t* size);
+
+/**
+ * Checks if instance has already consumed input.
+ *
+ * Instance that returns ::BROTLI_FALSE is considered "fresh" and could be
+ * reused.
+ *
+ * @param state decoder instance
+ * @returns ::BROTLI_TRUE if decoder has already used some input bytes
+ * @returns ::BROTLI_FALSE otherwise
+ */
+BROTLI_DEC_API BROTLI_BOOL BrotliDecoderIsUsed(const BrotliDecoderState* state);
+
+/**
+ * Checks if decoder instance reached the final state.
+ *
+ * @param state decoder instance
+ * @returns ::BROTLI_TRUE if decoder is in a state where it reached the end of
+ * the input and produced all of the output
+ * @returns ::BROTLI_FALSE otherwise
+ */
+BROTLI_DEC_API BROTLI_BOOL BrotliDecoderIsFinished(
+ const BrotliDecoderState* state);
+
+/**
+ * Acquires a detailed error code.
+ *
+ * Should be used only after ::BrotliDecoderDecompressStream returns
+ * ::BROTLI_DECODER_RESULT_ERROR.
+ *
+ * See also ::BrotliDecoderErrorString
+ *
+ * @param state decoder instance
+ * @returns last saved error code
+ */
+BROTLI_DEC_API BrotliDecoderErrorCode BrotliDecoderGetErrorCode(
+ const BrotliDecoderState* state);
+
+/**
+ * Converts error code to a c-string.
+ */
+BROTLI_DEC_API const char* BrotliDecoderErrorString(BrotliDecoderErrorCode c);
+
+/**
+ * Gets a decoder library version.
+ *
+ * Look at BROTLI_VERSION for more information.
+ */
+BROTLI_DEC_API uint32_t BrotliDecoderVersion(void);
+
+#if defined(__cplusplus) || defined(c_plusplus)
+} /* extern "C" */
+#endif
+
+#endif /* BROTLI_DEC_DECODE_H_ */
diff --git a/thirdparty/brotli/include/brotli/encode.h b/thirdparty/brotli/include/brotli/encode.h
new file mode 100644
index 0000000000..b2c6f61e0f
--- /dev/null
+++ b/thirdparty/brotli/include/brotli/encode.h
@@ -0,0 +1,501 @@
+/* Copyright 2013 Google Inc. All Rights Reserved.
+
+ Distributed under MIT license.
+ See file LICENSE for detail or copy at https://opensource.org/licenses/MIT
+*/
+
+/**
+ * @file
+ * API for Brotli compression.
+ */
+
+#ifndef BROTLI_ENC_ENCODE_H_
+#define BROTLI_ENC_ENCODE_H_
+
+#include <brotli/port.h>
+#include <brotli/shared_dictionary.h>
+#include <brotli/types.h>
+
+#if defined(__cplusplus) || defined(c_plusplus)
+extern "C" {
+#endif
+
+/** Minimal value for ::BROTLI_PARAM_LGWIN parameter. */
+#define BROTLI_MIN_WINDOW_BITS 10
+/**
+ * Maximal value for ::BROTLI_PARAM_LGWIN parameter.
+ *
+ * @note equal to @c BROTLI_MAX_DISTANCE_BITS constant.
+ */
+#define BROTLI_MAX_WINDOW_BITS 24
+/**
+ * Maximal value for ::BROTLI_PARAM_LGWIN parameter
+ * in "Large Window Brotli" (32-bit).
+ */
+#define BROTLI_LARGE_MAX_WINDOW_BITS 30
+/** Minimal value for ::BROTLI_PARAM_LGBLOCK parameter. */
+#define BROTLI_MIN_INPUT_BLOCK_BITS 16
+/** Maximal value for ::BROTLI_PARAM_LGBLOCK parameter. */
+#define BROTLI_MAX_INPUT_BLOCK_BITS 24
+/** Minimal value for ::BROTLI_PARAM_QUALITY parameter. */
+#define BROTLI_MIN_QUALITY 0
+/** Maximal value for ::BROTLI_PARAM_QUALITY parameter. */
+#define BROTLI_MAX_QUALITY 11
+
+/** Options for ::BROTLI_PARAM_MODE parameter. */
+typedef enum BrotliEncoderMode {
+ /**
+ * Default compression mode.
+ *
+ * In this mode compressor does not know anything in advance about the
+ * properties of the input.
+ */
+ BROTLI_MODE_GENERIC = 0,
+ /** Compression mode for UTF-8 formatted text input. */
+ BROTLI_MODE_TEXT = 1,
+ /** Compression mode used in WOFF 2.0. */
+ BROTLI_MODE_FONT = 2
+} BrotliEncoderMode;
+
+/** Default value for ::BROTLI_PARAM_QUALITY parameter. */
+#define BROTLI_DEFAULT_QUALITY 11
+/** Default value for ::BROTLI_PARAM_LGWIN parameter. */
+#define BROTLI_DEFAULT_WINDOW 22
+/** Default value for ::BROTLI_PARAM_MODE parameter. */
+#define BROTLI_DEFAULT_MODE BROTLI_MODE_GENERIC
+
+/** Operations that can be performed by streaming encoder. */
+typedef enum BrotliEncoderOperation {
+ /**
+ * Process input.
+ *
+ * Encoder may postpone producing output, until it has processed enough input.
+ */
+ BROTLI_OPERATION_PROCESS = 0,
+ /**
+ * Produce output for all processed input.
+ *
+ * Actual flush is performed when input stream is depleted and there is enough
+ * space in output stream. This means that client should repeat
+ * ::BROTLI_OPERATION_FLUSH operation until @p available_in becomes @c 0, and
+ * ::BrotliEncoderHasMoreOutput returns ::BROTLI_FALSE. If output is acquired
+ * via ::BrotliEncoderTakeOutput, then operation should be repeated after
+ * output buffer is drained.
+ *
+ * @warning Until flush is complete, client @b SHOULD @b NOT swap,
+ * reduce or extend input stream.
+ *
+ * When flush is complete, output data will be sufficient for decoder to
+ * reproduce all the given input.
+ */
+ BROTLI_OPERATION_FLUSH = 1,
+ /**
+ * Finalize the stream.
+ *
+ * Actual finalization is performed when input stream is depleted and there is
+ * enough space in output stream. This means that client should repeat
+ * ::BROTLI_OPERATION_FINISH operation until @p available_in becomes @c 0, and
+ * ::BrotliEncoderHasMoreOutput returns ::BROTLI_FALSE. If output is acquired
+ * via ::BrotliEncoderTakeOutput, then operation should be repeated after
+ * output buffer is drained.
+ *
+ * @warning Until finalization is complete, client @b SHOULD @b NOT swap,
+ * reduce or extend input stream.
+ *
+ * Helper function ::BrotliEncoderIsFinished checks if stream is finalized and
+ * output fully dumped.
+ *
+ * Adding more input data to finalized stream is impossible.
+ */
+ BROTLI_OPERATION_FINISH = 2,
+ /**
+ * Emit metadata block to stream.
+ *
+ * Metadata is opaque to Brotli: neither encoder, nor decoder processes this
+ * data or relies on it. It may be used to pass some extra information from
+ * encoder client to decoder client without interfering with main data stream.
+ *
+ * @note Encoder may emit empty metadata blocks internally, to pad encoded
+ * stream to byte boundary.
+ *
+ * @warning Until emitting metadata is complete client @b SHOULD @b NOT swap,
+ * reduce or extend input stream.
+ *
+ * @warning The whole content of input buffer is considered to be the content
+ * of metadata block. Do @b NOT @e append metadata to input stream,
+ * before it is depleted with other operations.
+ *
+ * Stream is soft-flushed before metadata block is emitted. Metadata block
+ * @b MUST be no longer than than 16MiB.
+ */
+ BROTLI_OPERATION_EMIT_METADATA = 3
+} BrotliEncoderOperation;
+
+/** Options to be used with ::BrotliEncoderSetParameter. */
+typedef enum BrotliEncoderParameter {
+ /**
+ * Tune encoder for specific input.
+ *
+ * ::BrotliEncoderMode enumerates all available values.
+ */
+ BROTLI_PARAM_MODE = 0,
+ /**
+ * The main compression speed-density lever.
+ *
+ * The higher the quality, the slower the compression. Range is
+ * from ::BROTLI_MIN_QUALITY to ::BROTLI_MAX_QUALITY.
+ */
+ BROTLI_PARAM_QUALITY = 1,
+ /**
+ * Recommended sliding LZ77 window size.
+ *
+ * Encoder may reduce this value, e.g. if input is much smaller than
+ * window size.
+ *
+ * Window size is `(1 << value) - 16`.
+ *
+ * Range is from ::BROTLI_MIN_WINDOW_BITS to ::BROTLI_MAX_WINDOW_BITS.
+ */
+ BROTLI_PARAM_LGWIN = 2,
+ /**
+ * Recommended input block size.
+ *
+ * Encoder may reduce this value, e.g. if input is much smaller than input
+ * block size.
+ *
+ * Range is from ::BROTLI_MIN_INPUT_BLOCK_BITS to
+ * ::BROTLI_MAX_INPUT_BLOCK_BITS.
+ *
+ * @note Bigger input block size allows better compression, but consumes more
+ * memory. \n The rough formula of memory used for temporary input
+ * storage is `3 << lgBlock`.
+ */
+ BROTLI_PARAM_LGBLOCK = 3,
+ /**
+ * Flag that affects usage of "literal context modeling" format feature.
+ *
+ * This flag is a "decoding-speed vs compression ratio" trade-off.
+ */
+ BROTLI_PARAM_DISABLE_LITERAL_CONTEXT_MODELING = 4,
+ /**
+ * Estimated total input size for all ::BrotliEncoderCompressStream calls.
+ *
+ * The default value is 0, which means that the total input size is unknown.
+ */
+ BROTLI_PARAM_SIZE_HINT = 5,
+ /**
+ * Flag that determines if "Large Window Brotli" is used.
+ */
+ BROTLI_PARAM_LARGE_WINDOW = 6,
+ /**
+ * Recommended number of postfix bits (NPOSTFIX).
+ *
+ * Encoder may change this value.
+ *
+ * Range is from 0 to ::BROTLI_MAX_NPOSTFIX.
+ */
+ BROTLI_PARAM_NPOSTFIX = 7,
+ /**
+ * Recommended number of direct distance codes (NDIRECT).
+ *
+ * Encoder may change this value.
+ *
+ * Range is from 0 to (15 << NPOSTFIX) in steps of (1 << NPOSTFIX).
+ */
+ BROTLI_PARAM_NDIRECT = 8,
+ /**
+ * Number of bytes of input stream already processed by a different instance.
+ *
+ * @note It is important to configure all the encoder instances with same
+ * parameters (except this one) in order to allow all the encoded parts
+ * obey the same restrictions implied by header.
+ *
+ * If offset is not 0, then stream header is omitted.
+ * In any case output start is byte aligned, so for proper streams stitching
+ * "predecessor" stream must be flushed.
+ *
+ * Range is not artificially limited, but all the values greater or equal to
+ * maximal window size have the same effect. Values greater than 2**30 are not
+ * allowed.
+ */
+ BROTLI_PARAM_STREAM_OFFSET = 9
+} BrotliEncoderParameter;
+
+/**
+ * Opaque structure that holds encoder state.
+ *
+ * Allocated and initialized with ::BrotliEncoderCreateInstance.
+ * Cleaned up and deallocated with ::BrotliEncoderDestroyInstance.
+ */
+typedef struct BrotliEncoderStateStruct BrotliEncoderState;
+
+/**
+ * Sets the specified parameter to the given encoder instance.
+ *
+ * @param state encoder instance
+ * @param param parameter to set
+ * @param value new parameter value
+ * @returns ::BROTLI_FALSE if parameter is unrecognized, or value is invalid
+ * @returns ::BROTLI_FALSE if value of parameter can not be changed at current
+ * encoder state (e.g. when encoding is started, window size might be
+ * already encoded and therefore it is impossible to change it)
+ * @returns ::BROTLI_TRUE if value is accepted
+ * @warning invalid values might be accepted in case they would not break
+ * encoding process.
+ */
+BROTLI_ENC_API BROTLI_BOOL BrotliEncoderSetParameter(
+ BrotliEncoderState* state, BrotliEncoderParameter param, uint32_t value);
+
+/**
+ * Creates an instance of ::BrotliEncoderState and initializes it.
+ *
+ * @p alloc_func and @p free_func @b MUST be both zero or both non-zero. In the
+ * case they are both zero, default memory allocators are used. @p opaque is
+ * passed to @p alloc_func and @p free_func when they are called. @p free_func
+ * has to return without doing anything when asked to free a NULL pointer.
+ *
+ * @param alloc_func custom memory allocation function
+ * @param free_func custom memory free function
+ * @param opaque custom memory manager handle
+ * @returns @c 0 if instance can not be allocated or initialized
+ * @returns pointer to initialized ::BrotliEncoderState otherwise
+ */
+BROTLI_ENC_API BrotliEncoderState* BrotliEncoderCreateInstance(
+ brotli_alloc_func alloc_func, brotli_free_func free_func, void* opaque);
+
+/**
+ * Deinitializes and frees ::BrotliEncoderState instance.
+ *
+ * @param state decoder instance to be cleaned up and deallocated
+ */
+BROTLI_ENC_API void BrotliEncoderDestroyInstance(BrotliEncoderState* state);
+
+/* Opaque type for pointer to different possible internal structures containing
+ dictionary prepared for the encoder */
+typedef struct BrotliEncoderPreparedDictionaryStruct
+ BrotliEncoderPreparedDictionary;
+
+/**
+ * Prepares a shared dictionary from the given file format for the encoder.
+ *
+ * @p alloc_func and @p free_func @b MUST be both zero or both non-zero. In the
+ * case they are both zero, default memory allocators are used. @p opaque is
+ * passed to @p alloc_func and @p free_func when they are called. @p free_func
+ * has to return without doing anything when asked to free a NULL pointer.
+ *
+ * @param type type of dictionary stored in data
+ * @param data_size size of @p data buffer
+ * @param data pointer to the dictionary data
+ * @param quality the maximum Brotli quality to prepare the dictionary for,
+ * use BROTLI_MAX_QUALITY by default
+ * @param alloc_func custom memory allocation function
+ * @param free_func custom memory free function
+ * @param opaque custom memory manager handle
+ */
+BROTLI_ENC_API BrotliEncoderPreparedDictionary*
+BrotliEncoderPrepareDictionary(BrotliSharedDictionaryType type,
+ size_t data_size, const uint8_t data[BROTLI_ARRAY_PARAM(data_size)],
+ int quality,
+ brotli_alloc_func alloc_func, brotli_free_func free_func, void* opaque);
+
+BROTLI_ENC_API void BrotliEncoderDestroyPreparedDictionary(
+ BrotliEncoderPreparedDictionary* dictionary);
+
+/**
+ * Attaches a prepared dictionary of any type to the encoder. Can be used
+ * multiple times to attach multiple dictionaries. The dictionary type was
+ * determined by BrotliEncoderPrepareDictionary. Multiple raw prefix
+ * dictionaries and/or max 1 serialized dictionary with custom words can be
+ * attached.
+ *
+ * @returns ::BROTLI_FALSE in case of error
+ * @returns ::BROTLI_TRUE otherwise
+ */
+BROTLI_ENC_API BROTLI_BOOL BrotliEncoderAttachPreparedDictionary(
+ BrotliEncoderState* state,
+ const BrotliEncoderPreparedDictionary* dictionary);
+
+/**
+ * Calculates the output size bound for the given @p input_size.
+ *
+ * @warning Result is only valid if quality is at least @c 2 and, in
+ * case ::BrotliEncoderCompressStream was used, no flushes
+ * (::BROTLI_OPERATION_FLUSH) were performed.
+ *
+ * @param input_size size of projected input
+ * @returns @c 0 if result does not fit @c size_t
+ */
+BROTLI_ENC_API size_t BrotliEncoderMaxCompressedSize(size_t input_size);
+
+/**
+ * Performs one-shot memory-to-memory compression.
+ *
+ * Compresses the data in @p input_buffer into @p encoded_buffer, and sets
+ * @p *encoded_size to the compressed length.
+ *
+ * @note If ::BrotliEncoderMaxCompressedSize(@p input_size) returns non-zero
+ * value, then output is guaranteed to be no longer than that.
+ *
+ * @note If @p lgwin is greater than ::BROTLI_MAX_WINDOW_BITS then resulting
+ * stream might be incompatible with RFC 7932; to decode such streams,
+ * decoder should be configured with
+ * ::BROTLI_DECODER_PARAM_LARGE_WINDOW = @c 1
+ *
+ * @param quality quality parameter value, e.g. ::BROTLI_DEFAULT_QUALITY
+ * @param lgwin lgwin parameter value, e.g. ::BROTLI_DEFAULT_WINDOW
+ * @param mode mode parameter value, e.g. ::BROTLI_DEFAULT_MODE
+ * @param input_size size of @p input_buffer
+ * @param input_buffer input data buffer with at least @p input_size
+ * addressable bytes
+ * @param[in, out] encoded_size @b in: size of @p encoded_buffer; \n
+ * @b out: length of compressed data written to
+ * @p encoded_buffer, or @c 0 if compression fails
+ * @param encoded_buffer compressed data destination buffer
+ * @returns ::BROTLI_FALSE in case of compression error
+ * @returns ::BROTLI_FALSE if output buffer is too small
+ * @returns ::BROTLI_TRUE otherwise
+ */
+BROTLI_ENC_API BROTLI_BOOL BrotliEncoderCompress(
+ int quality, int lgwin, BrotliEncoderMode mode, size_t input_size,
+ const uint8_t input_buffer[BROTLI_ARRAY_PARAM(input_size)],
+ size_t* encoded_size,
+ uint8_t encoded_buffer[BROTLI_ARRAY_PARAM(*encoded_size)]);
+
+/**
+ * Compresses input stream to output stream.
+ *
+ * The values @p *available_in and @p *available_out must specify the number of
+ * bytes addressable at @p *next_in and @p *next_out respectively.
+ * When @p *available_out is @c 0, @p next_out is allowed to be @c NULL.
+ *
+ * After each call, @p *available_in will be decremented by the amount of input
+ * bytes consumed, and the @p *next_in pointer will be incremented by that
+ * amount. Similarly, @p *available_out will be decremented by the amount of
+ * output bytes written, and the @p *next_out pointer will be incremented by
+ * that amount.
+ *
+ * @p total_out, if it is not a null-pointer, will be set to the number
+ * of bytes compressed since the last @p state initialization.
+ *
+ *
+ *
+ * Internally workflow consists of 3 tasks:
+ * -# (optionally) copy input data to internal buffer
+ * -# actually compress data and (optionally) store it to internal buffer
+ * -# (optionally) copy compressed bytes from internal buffer to output stream
+ *
+ * Whenever all 3 tasks can't move forward anymore, or error occurs, this
+ * method returns the control flow to caller.
+ *
+ * @p op is used to perform flush, finish the stream, or inject metadata block.
+ * See ::BrotliEncoderOperation for more information.
+ *
+ * Flushing the stream means forcing encoding of all input passed to encoder and
+ * completing the current output block, so it could be fully decoded by stream
+ * decoder. To perform flush set @p op to ::BROTLI_OPERATION_FLUSH.
+ * Under some circumstances (e.g. lack of output stream capacity) this operation
+ * would require several calls to ::BrotliEncoderCompressStream. The method must
+ * be called again until both input stream is depleted and encoder has no more
+ * output (see ::BrotliEncoderHasMoreOutput) after the method is called.
+ *
+ * Finishing the stream means encoding of all input passed to encoder and
+ * adding specific "final" marks, so stream decoder could determine that stream
+ * is complete. To perform finish set @p op to ::BROTLI_OPERATION_FINISH.
+ * Under some circumstances (e.g. lack of output stream capacity) this operation
+ * would require several calls to ::BrotliEncoderCompressStream. The method must
+ * be called again until both input stream is depleted and encoder has no more
+ * output (see ::BrotliEncoderHasMoreOutput) after the method is called.
+ *
+ * @warning When flushing and finishing, @p op should not change until operation
+ * is complete; input stream should not be swapped, reduced or
+ * extended as well.
+ *
+ * @param state encoder instance
+ * @param op requested operation
+ * @param[in, out] available_in @b in: amount of available input; \n
+ * @b out: amount of unused input
+ * @param[in, out] next_in pointer to the next input byte
+ * @param[in, out] available_out @b in: length of output buffer; \n
+ * @b out: remaining size of output buffer
+ * @param[in, out] next_out compressed output buffer cursor;
+ * can be @c NULL if @p available_out is @c 0
+ * @param[out] total_out number of bytes produced so far; can be @c NULL
+ * @returns ::BROTLI_FALSE if there was an error
+ * @returns ::BROTLI_TRUE otherwise
+ */
+BROTLI_ENC_API BROTLI_BOOL BrotliEncoderCompressStream(
+ BrotliEncoderState* state, BrotliEncoderOperation op, size_t* available_in,
+ const uint8_t** next_in, size_t* available_out, uint8_t** next_out,
+ size_t* total_out);
+
+/**
+ * Checks if encoder instance reached the final state.
+ *
+ * @param state encoder instance
+ * @returns ::BROTLI_TRUE if encoder is in a state where it reached the end of
+ * the input and produced all of the output
+ * @returns ::BROTLI_FALSE otherwise
+ */
+BROTLI_ENC_API BROTLI_BOOL BrotliEncoderIsFinished(BrotliEncoderState* state);
+
+/**
+ * Checks if encoder has more output.
+ *
+ * @param state encoder instance
+ * @returns ::BROTLI_TRUE, if encoder has some unconsumed output
+ * @returns ::BROTLI_FALSE otherwise
+ */
+BROTLI_ENC_API BROTLI_BOOL BrotliEncoderHasMoreOutput(
+ BrotliEncoderState* state);
+
+/**
+ * Acquires pointer to internal output buffer.
+ *
+ * This method is used to make language bindings easier and more efficient:
+ * -# push data to ::BrotliEncoderCompressStream,
+ * until ::BrotliEncoderHasMoreOutput returns BROTL_TRUE
+ * -# use ::BrotliEncoderTakeOutput to peek bytes and copy to language-specific
+ * entity
+ *
+ * Also this could be useful if there is an output stream that is able to
+ * consume all the provided data (e.g. when data is saved to file system).
+ *
+ * @attention After every call to ::BrotliEncoderTakeOutput @p *size bytes of
+ * output are considered consumed for all consecutive calls to the
+ * instance methods; returned pointer becomes invalidated as well.
+ *
+ * @note Encoder output is not guaranteed to be contiguous. This means that
+ * after the size-unrestricted call to ::BrotliEncoderTakeOutput,
+ * immediate next call to ::BrotliEncoderTakeOutput may return more data.
+ *
+ * @param state encoder instance
+ * @param[in, out] size @b in: number of bytes caller is ready to take, @c 0 if
+ * any amount could be handled; \n
+ * @b out: amount of data pointed by returned pointer and
+ * considered consumed; \n
+ * out value is never greater than in value, unless it is @c 0
+ * @returns pointer to output data
+ */
+BROTLI_ENC_API const uint8_t* BrotliEncoderTakeOutput(
+ BrotliEncoderState* state, size_t* size);
+
+/* Returns the estimated peak memory usage (in bytes) of the BrotliCompress()
+ function, not counting the memory needed for the input and output. */
+BROTLI_ENC_EXTRA_API size_t BrotliEncoderEstimatePeakMemoryUsage(
+ int quality, int lgwin, size_t input_size);
+/* Returns 0 if dictionary is not valid; otherwise returns allocation size. */
+BROTLI_ENC_EXTRA_API size_t BrotliEncoderGetPreparedDictionarySize(
+ const BrotliEncoderPreparedDictionary* dictionary);
+
+/**
+ * Gets an encoder library version.
+ *
+ * Look at BROTLI_VERSION for more information.
+ */
+BROTLI_ENC_API uint32_t BrotliEncoderVersion(void);
+
+#if defined(__cplusplus) || defined(c_plusplus)
+} /* extern "C" */
+#endif
+
+#endif /* BROTLI_ENC_ENCODE_H_ */
diff --git a/thirdparty/brotli/include/brotli/port.h b/thirdparty/brotli/include/brotli/port.h
new file mode 100644
index 0000000000..a681ac4864
--- /dev/null
+++ b/thirdparty/brotli/include/brotli/port.h
@@ -0,0 +1,313 @@
+/* Copyright 2016 Google Inc. All Rights Reserved.
+
+ Distributed under MIT license.
+ See file LICENSE for detail or copy at https://opensource.org/licenses/MIT
+*/
+
+/* Macros for compiler / platform specific API declarations. */
+
+#ifndef BROTLI_COMMON_PORT_H_
+#define BROTLI_COMMON_PORT_H_
+
+/* The following macros were borrowed from https://github.com/nemequ/hedley
+ * with permission of original author - Evan Nemerson <evan@nemerson.com> */
+
+/* >>> >>> >>> hedley macros */
+
+#define BROTLI_MAKE_VERSION(major, minor, revision) \
+ (((major) * 1000000) + ((minor) * 1000) + (revision))
+
+#if defined(__GNUC__) && defined(__GNUC_PATCHLEVEL__)
+#define BROTLI_GNUC_VERSION \
+ BROTLI_MAKE_VERSION(__GNUC__, __GNUC_MINOR__, __GNUC_PATCHLEVEL__)
+#elif defined(__GNUC__)
+#define BROTLI_GNUC_VERSION BROTLI_MAKE_VERSION(__GNUC__, __GNUC_MINOR__, 0)
+#endif
+
+#if defined(BROTLI_GNUC_VERSION)
+#define BROTLI_GNUC_VERSION_CHECK(major, minor, patch) \
+ (BROTLI_GNUC_VERSION >= BROTLI_MAKE_VERSION(major, minor, patch))
+#else
+#define BROTLI_GNUC_VERSION_CHECK(major, minor, patch) (0)
+#endif
+
+#if defined(_MSC_FULL_VER) && (_MSC_FULL_VER >= 140000000)
+#define BROTLI_MSVC_VERSION \
+ BROTLI_MAKE_VERSION((_MSC_FULL_VER / 10000000), \
+ (_MSC_FULL_VER % 10000000) / 100000, \
+ (_MSC_FULL_VER % 100000) / 100)
+#elif defined(_MSC_FULL_VER)
+#define BROTLI_MSVC_VERSION \
+ BROTLI_MAKE_VERSION((_MSC_FULL_VER / 1000000), \
+ (_MSC_FULL_VER % 1000000) / 10000, \
+ (_MSC_FULL_VER % 10000) / 10)
+#elif defined(_MSC_VER)
+#define BROTLI_MSVC_VERSION \
+ BROTLI_MAKE_VERSION(_MSC_VER / 100, _MSC_VER % 100, 0)
+#endif
+
+#if !defined(_MSC_VER)
+#define BROTLI_MSVC_VERSION_CHECK(major, minor, patch) (0)
+#elif defined(_MSC_VER) && (_MSC_VER >= 1400)
+#define BROTLI_MSVC_VERSION_CHECK(major, minor, patch) \
+ (_MSC_FULL_VER >= ((major * 10000000) + (minor * 100000) + (patch)))
+#elif defined(_MSC_VER) && (_MSC_VER >= 1200)
+#define BROTLI_MSVC_VERSION_CHECK(major, minor, patch) \
+ (_MSC_FULL_VER >= ((major * 1000000) + (minor * 10000) + (patch)))
+#else
+#define BROTLI_MSVC_VERSION_CHECK(major, minor, patch) \
+ (_MSC_VER >= ((major * 100) + (minor)))
+#endif
+
+#if defined(__INTEL_COMPILER) && defined(__INTEL_COMPILER_UPDATE)
+#define BROTLI_INTEL_VERSION \
+ BROTLI_MAKE_VERSION(__INTEL_COMPILER / 100, \
+ __INTEL_COMPILER % 100, \
+ __INTEL_COMPILER_UPDATE)
+#elif defined(__INTEL_COMPILER)
+#define BROTLI_INTEL_VERSION \
+ BROTLI_MAKE_VERSION(__INTEL_COMPILER / 100, __INTEL_COMPILER % 100, 0)
+#endif
+
+#if defined(BROTLI_INTEL_VERSION)
+#define BROTLI_INTEL_VERSION_CHECK(major, minor, patch) \
+ (BROTLI_INTEL_VERSION >= BROTLI_MAKE_VERSION(major, minor, patch))
+#else
+#define BROTLI_INTEL_VERSION_CHECK(major, minor, patch) (0)
+#endif
+
+#if defined(__PGI) && \
+ defined(__PGIC__) && defined(__PGIC_MINOR__) && defined(__PGIC_PATCHLEVEL__)
+#define BROTLI_PGI_VERSION \
+ BROTLI_MAKE_VERSION(__PGIC__, __PGIC_MINOR__, __PGIC_PATCHLEVEL__)
+#endif
+
+#if defined(BROTLI_PGI_VERSION)
+#define BROTLI_PGI_VERSION_CHECK(major, minor, patch) \
+ (BROTLI_PGI_VERSION >= BROTLI_MAKE_VERSION(major, minor, patch))
+#else
+#define BROTLI_PGI_VERSION_CHECK(major, minor, patch) (0)
+#endif
+
+#if defined(__SUNPRO_C) && (__SUNPRO_C > 0x1000)
+#define BROTLI_SUNPRO_VERSION \
+ BROTLI_MAKE_VERSION( \
+ (((__SUNPRO_C >> 16) & 0xf) * 10) + ((__SUNPRO_C >> 12) & 0xf), \
+ (((__SUNPRO_C >> 8) & 0xf) * 10) + ((__SUNPRO_C >> 4) & 0xf), \
+ (__SUNPRO_C & 0xf) * 10)
+#elif defined(__SUNPRO_C)
+#define BROTLI_SUNPRO_VERSION \
+ BROTLI_MAKE_VERSION((__SUNPRO_C >> 8) & 0xf, \
+ (__SUNPRO_C >> 4) & 0xf, \
+ (__SUNPRO_C) & 0xf)
+#elif defined(__SUNPRO_CC) && (__SUNPRO_CC > 0x1000)
+#define BROTLI_SUNPRO_VERSION \
+ BROTLI_MAKE_VERSION( \
+ (((__SUNPRO_CC >> 16) & 0xf) * 10) + ((__SUNPRO_CC >> 12) & 0xf), \
+ (((__SUNPRO_CC >> 8) & 0xf) * 10) + ((__SUNPRO_CC >> 4) & 0xf), \
+ (__SUNPRO_CC & 0xf) * 10)
+#elif defined(__SUNPRO_CC)
+#define BROTLI_SUNPRO_VERSION \
+ BROTLI_MAKE_VERSION((__SUNPRO_CC >> 8) & 0xf, \
+ (__SUNPRO_CC >> 4) & 0xf, \
+ (__SUNPRO_CC) & 0xf)
+#endif
+
+#if defined(BROTLI_SUNPRO_VERSION)
+#define BROTLI_SUNPRO_VERSION_CHECK(major, minor, patch) \
+ (BROTLI_SUNPRO_VERSION >= BROTLI_MAKE_VERSION(major, minor, patch))
+#else
+#define BROTLI_SUNPRO_VERSION_CHECK(major, minor, patch) (0)
+#endif
+
+#if defined(__CC_ARM) && defined(__ARMCOMPILER_VERSION)
+#define BROTLI_ARM_VERSION \
+ BROTLI_MAKE_VERSION((__ARMCOMPILER_VERSION / 1000000), \
+ (__ARMCOMPILER_VERSION % 1000000) / 10000, \
+ (__ARMCOMPILER_VERSION % 10000) / 100)
+#elif defined(__CC_ARM) && defined(__ARMCC_VERSION)
+#define BROTLI_ARM_VERSION \
+ BROTLI_MAKE_VERSION((__ARMCC_VERSION / 1000000), \
+ (__ARMCC_VERSION % 1000000) / 10000, \
+ (__ARMCC_VERSION % 10000) / 100)
+#endif
+
+#if defined(BROTLI_ARM_VERSION)
+#define BROTLI_ARM_VERSION_CHECK(major, minor, patch) \
+ (BROTLI_ARM_VERSION >= BROTLI_MAKE_VERSION(major, minor, patch))
+#else
+#define BROTLI_ARM_VERSION_CHECK(major, minor, patch) (0)
+#endif
+
+#if defined(__ibmxl__)
+#define BROTLI_IBM_VERSION \
+ BROTLI_MAKE_VERSION(__ibmxl_version__, \
+ __ibmxl_release__, \
+ __ibmxl_modification__)
+#elif defined(__xlC__) && defined(__xlC_ver__)
+#define BROTLI_IBM_VERSION \
+ BROTLI_MAKE_VERSION(__xlC__ >> 8, __xlC__ & 0xff, (__xlC_ver__ >> 8) & 0xff)
+#elif defined(__xlC__)
+#define BROTLI_IBM_VERSION BROTLI_MAKE_VERSION(__xlC__ >> 8, __xlC__ & 0xff, 0)
+#endif
+
+#if defined(BROTLI_IBM_VERSION)
+#define BROTLI_IBM_VERSION_CHECK(major, minor, patch) \
+ (BROTLI_IBM_VERSION >= BROTLI_MAKE_VERSION(major, minor, patch))
+#else
+#define BROTLI_IBM_VERSION_CHECK(major, minor, patch) (0)
+#endif
+
+#if defined(__TI_COMPILER_VERSION__)
+#define BROTLI_TI_VERSION \
+ BROTLI_MAKE_VERSION((__TI_COMPILER_VERSION__ / 1000000), \
+ (__TI_COMPILER_VERSION__ % 1000000) / 1000, \
+ (__TI_COMPILER_VERSION__ % 1000))
+#endif
+
+#if defined(BROTLI_TI_VERSION)
+#define BROTLI_TI_VERSION_CHECK(major, minor, patch) \
+ (BROTLI_TI_VERSION >= BROTLI_MAKE_VERSION(major, minor, patch))
+#else
+#define BROTLI_TI_VERSION_CHECK(major, minor, patch) (0)
+#endif
+
+#if defined(__IAR_SYSTEMS_ICC__)
+#if __VER__ > 1000
+#define BROTLI_IAR_VERSION \
+ BROTLI_MAKE_VERSION((__VER__ / 1000000), \
+ (__VER__ / 1000) % 1000, \
+ (__VER__ % 1000))
+#else
+#define BROTLI_IAR_VERSION BROTLI_MAKE_VERSION(VER / 100, __VER__ % 100, 0)
+#endif
+#endif
+
+#if defined(BROTLI_IAR_VERSION)
+#define BROTLI_IAR_VERSION_CHECK(major, minor, patch) \
+ (BROTLI_IAR_VERSION >= BROTLI_MAKE_VERSION(major, minor, patch))
+#else
+#define BROTLI_IAR_VERSION_CHECK(major, minor, patch) (0)
+#endif
+
+#if defined(__TINYC__)
+#define BROTLI_TINYC_VERSION \
+ BROTLI_MAKE_VERSION(__TINYC__ / 1000, (__TINYC__ / 100) % 10, __TINYC__ % 100)
+#endif
+
+#if defined(BROTLI_TINYC_VERSION)
+#define BROTLI_TINYC_VERSION_CHECK(major, minor, patch) \
+ (BROTLI_TINYC_VERSION >= BROTLI_MAKE_VERSION(major, minor, patch))
+#else
+#define BROTLI_TINYC_VERSION_CHECK(major, minor, patch) (0)
+#endif
+
+#if defined(__has_attribute)
+#define BROTLI_GNUC_HAS_ATTRIBUTE(attribute, major, minor, patch) \
+ __has_attribute(attribute)
+#else
+#define BROTLI_GNUC_HAS_ATTRIBUTE(attribute, major, minor, patch) \
+ BROTLI_GNUC_VERSION_CHECK(major, minor, patch)
+#endif
+
+#if defined(__has_builtin)
+#define BROTLI_GNUC_HAS_BUILTIN(builtin, major, minor, patch) \
+ __has_builtin(builtin)
+#else
+#define BROTLI_GNUC_HAS_BUILTIN(builtin, major, minor, patch) \
+ BROTLI_GNUC_VERSION_CHECK(major, minor, patch)
+#endif
+
+#if defined(__has_feature)
+#define BROTLI_HAS_FEATURE(feature) __has_feature(feature)
+#else
+#define BROTLI_HAS_FEATURE(feature) (0)
+#endif
+
+#if defined(ADDRESS_SANITIZER) || BROTLI_HAS_FEATURE(address_sanitizer) || \
+ defined(THREAD_SANITIZER) || BROTLI_HAS_FEATURE(thread_sanitizer) || \
+ defined(MEMORY_SANITIZER) || BROTLI_HAS_FEATURE(memory_sanitizer)
+#define BROTLI_SANITIZED 1
+#else
+#define BROTLI_SANITIZED 0
+#endif
+
+#if defined(_WIN32) || defined(__CYGWIN__)
+#define BROTLI_PUBLIC
+#elif BROTLI_GNUC_VERSION_CHECK(3, 3, 0) || \
+ BROTLI_TI_VERSION_CHECK(8, 0, 0) || \
+ BROTLI_INTEL_VERSION_CHECK(16, 0, 0) || \
+ BROTLI_ARM_VERSION_CHECK(4, 1, 0) || \
+ BROTLI_IBM_VERSION_CHECK(13, 1, 0) || \
+ BROTLI_SUNPRO_VERSION_CHECK(5, 11, 0) || \
+ (BROTLI_TI_VERSION_CHECK(7, 3, 0) && \
+ defined(__TI_GNU_ATTRIBUTE_SUPPORT__) && defined(__TI_EABI__))
+#define BROTLI_PUBLIC __attribute__ ((visibility ("default")))
+#else
+#define BROTLI_PUBLIC
+#endif
+
+/* BROTLI_INTERNAL could be defined to override visibility, e.g. for tests. */
+#if !defined(BROTLI_INTERNAL)
+#if defined(_WIN32) || defined(__CYGWIN__)
+#define BROTLI_INTERNAL
+#elif BROTLI_GNUC_VERSION_CHECK(3, 3, 0) || \
+ BROTLI_TI_VERSION_CHECK(8, 0, 0) || \
+ BROTLI_INTEL_VERSION_CHECK(16, 0, 0) || \
+ BROTLI_ARM_VERSION_CHECK(4, 1, 0) || \
+ BROTLI_IBM_VERSION_CHECK(13, 1, 0) || \
+ BROTLI_SUNPRO_VERSION_CHECK(5, 11, 0) || \
+ (BROTLI_TI_VERSION_CHECK(7, 3, 0) && \
+ defined(__TI_GNU_ATTRIBUTE_SUPPORT__) && defined(__TI_EABI__))
+#define BROTLI_INTERNAL __attribute__ ((visibility ("hidden")))
+#else
+#define BROTLI_INTERNAL
+#endif
+#endif
+
+#if defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L) && \
+ !defined(__STDC_NO_VLA__) && !defined(__cplusplus) && \
+ !defined(__PGI) && !defined(__PGIC__) && !defined(__TINYC__) && \
+ !defined(__clang__)
+#define BROTLI_ARRAY_PARAM(name) (name)
+#else
+#define BROTLI_ARRAY_PARAM(name)
+#endif
+
+/* <<< <<< <<< end of hedley macros. */
+
+#if defined(BROTLI_SHARED_COMPILATION)
+#if defined(_WIN32)
+#if defined(BROTLICOMMON_SHARED_COMPILATION)
+#define BROTLI_COMMON_API __declspec(dllexport)
+#else
+#define BROTLI_COMMON_API __declspec(dllimport)
+#endif /* BROTLICOMMON_SHARED_COMPILATION */
+#if defined(BROTLIDEC_SHARED_COMPILATION)
+#define BROTLI_DEC_API __declspec(dllexport)
+#else
+#define BROTLI_DEC_API __declspec(dllimport)
+#endif /* BROTLIDEC_SHARED_COMPILATION */
+#if defined(BROTLIENC_SHARED_COMPILATION)
+#define BROTLI_ENC_API __declspec(dllexport)
+#else
+#define BROTLI_ENC_API __declspec(dllimport)
+#endif /* BROTLIENC_SHARED_COMPILATION */
+#else /* _WIN32 */
+#define BROTLI_COMMON_API BROTLI_PUBLIC
+#define BROTLI_DEC_API BROTLI_PUBLIC
+#define BROTLI_ENC_API BROTLI_PUBLIC
+#endif /* _WIN32 */
+#else /* BROTLI_SHARED_COMPILATION */
+#define BROTLI_COMMON_API
+#define BROTLI_DEC_API
+#define BROTLI_ENC_API
+#endif
+
+#if defined(BROTLI_BUILD_ENC_EXTRA_API)
+#define BROTLI_ENC_EXTRA_API BROTLI_ENC_API
+#else
+#define BROTLI_ENC_EXTRA_API BROTLI_INTERNAL
+#endif
+
+#endif /* BROTLI_COMMON_PORT_H_ */
diff --git a/thirdparty/brotli/include/brotli/shared_dictionary.h b/thirdparty/brotli/include/brotli/shared_dictionary.h
new file mode 100644
index 0000000000..ceb6cf1cd2
--- /dev/null
+++ b/thirdparty/brotli/include/brotli/shared_dictionary.h
@@ -0,0 +1,97 @@
+/* Copyright 2017 Google Inc. All Rights Reserved.
+
+ Distributed under MIT license.
+ See file LICENSE for detail or copy at https://opensource.org/licenses/MIT
+*/
+
+/* (Opaque) Shared Dictionary definition and utilities. */
+
+#ifndef BROTLI_COMMON_SHARED_DICTIONARY_H_
+#define BROTLI_COMMON_SHARED_DICTIONARY_H_
+
+#include <brotli/port.h>
+#include <brotli/types.h>
+
+#if defined(__cplusplus) || defined(c_plusplus)
+extern "C" {
+#endif
+
+#define SHARED_BROTLI_MIN_DICTIONARY_WORD_LENGTH 4
+#define SHARED_BROTLI_MAX_DICTIONARY_WORD_LENGTH 31
+#define SHARED_BROTLI_NUM_DICTIONARY_CONTEXTS 64
+#define SHARED_BROTLI_MAX_COMPOUND_DICTS 15
+
+/**
+ * Opaque structure that holds shared dictionary data.
+ *
+ * Allocated and initialized with ::BrotliSharedDictionaryCreateInstance.
+ * Cleaned up and deallocated with ::BrotliSharedDictionaryDestroyInstance.
+ */
+typedef struct BrotliSharedDictionaryStruct BrotliSharedDictionary;
+
+/**
+ * Input data type for ::BrotliSharedDictionaryAttach.
+ */
+typedef enum BrotliSharedDictionaryType {
+ /** Raw LZ77 prefix dictionary. */
+ BROTLI_SHARED_DICTIONARY_RAW = 0,
+ /** Serialized shared dictionary. */
+ BROTLI_SHARED_DICTIONARY_SERIALIZED = 1
+} BrotliSharedDictionaryType;
+
+/**
+ * Creates an instance of ::BrotliSharedDictionary.
+ *
+ * Fresh instance has default word dictionary and transforms
+ * and no LZ77 prefix dictionary.
+ *
+ * @p alloc_func and @p free_func @b MUST be both zero or both non-zero. In the
+ * case they are both zero, default memory allocators are used. @p opaque is
+ * passed to @p alloc_func and @p free_func when they are called. @p free_func
+ * has to return without doing anything when asked to free a NULL pointer.
+ *
+ * @param alloc_func custom memory allocation function
+ * @param free_func custom memory free function
+ * @param opaque custom memory manager handle
+ * @returns @c 0 if instance can not be allocated or initialized
+ * @returns pointer to initialized ::BrotliSharedDictionary otherwise
+ */
+BROTLI_COMMON_API BrotliSharedDictionary* BrotliSharedDictionaryCreateInstance(
+ brotli_alloc_func alloc_func, brotli_free_func free_func, void* opaque);
+
+/**
+ * Deinitializes and frees ::BrotliSharedDictionary instance.
+ *
+ * @param dict shared dictionary instance to be cleaned up and deallocated
+ */
+BROTLI_COMMON_API void BrotliSharedDictionaryDestroyInstance(
+ BrotliSharedDictionary* dict);
+
+/**
+ * Attaches dictionary to a given instance of ::BrotliSharedDictionary.
+ *
+ * Dictionary to be attached is represented in a serialized format as a region
+ * of memory.
+ *
+ * Provided data it partially referenced by a resulting (compound) dictionary,
+ * and should be kept untouched, while at least one compound dictionary uses it.
+ * This way memory overhead is kept minimal by the cost of additional resource
+ * management.
+ *
+ * @param dict dictionary to extend
+ * @param type type of dictionary to attach
+ * @param data_size size of @p data
+ * @param data serialized dictionary of type @p type, with at least @p data_size
+ * addressable bytes
+ * @returns ::BROTLI_TRUE if provided dictionary is successfully attached
+ * @returns ::BROTLI_FALSE otherwise
+ */
+BROTLI_COMMON_API BROTLI_BOOL BrotliSharedDictionaryAttach(
+ BrotliSharedDictionary* dict, BrotliSharedDictionaryType type,
+ size_t data_size, const uint8_t data[BROTLI_ARRAY_PARAM(data_size)]);
+
+#if defined(__cplusplus) || defined(c_plusplus)
+} /* extern "C" */
+#endif
+
+#endif /* BROTLI_COMMON_SHARED_DICTIONARY_H_ */
diff --git a/thirdparty/brotli/include/brotli/types.h b/thirdparty/brotli/include/brotli/types.h
new file mode 100644
index 0000000000..eff1a3cd07
--- /dev/null
+++ b/thirdparty/brotli/include/brotli/types.h
@@ -0,0 +1,83 @@
+/* Copyright 2013 Google Inc. All Rights Reserved.
+
+ Distributed under MIT license.
+ See file LICENSE for detail or copy at https://opensource.org/licenses/MIT
+*/
+
+/**
+ * @file
+ * Common types used in decoder and encoder API.
+ */
+
+#ifndef BROTLI_COMMON_TYPES_H_
+#define BROTLI_COMMON_TYPES_H_
+
+#include <stddef.h> /* for size_t */
+
+#if defined(_MSC_VER) && (_MSC_VER < 1600)
+typedef __int8 int8_t;
+typedef unsigned __int8 uint8_t;
+typedef __int16 int16_t;
+typedef unsigned __int16 uint16_t;
+typedef __int32 int32_t;
+typedef unsigned __int32 uint32_t;
+typedef unsigned __int64 uint64_t;
+typedef __int64 int64_t;
+#else
+#include <stdint.h>
+#endif /* defined(_MSC_VER) && (_MSC_VER < 1600) */
+
+/**
+ * A portable @c bool replacement.
+ *
+ * ::BROTLI_BOOL is a "documentation" type: actually it is @c int, but in API it
+ * denotes a type, whose only values are ::BROTLI_TRUE and ::BROTLI_FALSE.
+ *
+ * ::BROTLI_BOOL values passed to Brotli should either be ::BROTLI_TRUE or
+ * ::BROTLI_FALSE, or be a result of ::TO_BROTLI_BOOL macros.
+ *
+ * ::BROTLI_BOOL values returned by Brotli should not be tested for equality
+ * with @c true, @c false, ::BROTLI_TRUE, ::BROTLI_FALSE, but rather should be
+ * evaluated, for example: @code{.cpp}
+ * if (SomeBrotliFunction(encoder, BROTLI_TRUE) &&
+ * !OtherBrotliFunction(decoder, BROTLI_FALSE)) {
+ * bool x = !!YetAnotherBrotliFunction(encoder, TO_BROLTI_BOOL(2 * 2 == 4));
+ * DoSomething(x);
+ * }
+ * @endcode
+ */
+#define BROTLI_BOOL int
+/** Portable @c true replacement. */
+#define BROTLI_TRUE 1
+/** Portable @c false replacement. */
+#define BROTLI_FALSE 0
+/** @c bool to ::BROTLI_BOOL conversion macros. */
+#define TO_BROTLI_BOOL(X) (!!(X) ? BROTLI_TRUE : BROTLI_FALSE)
+
+#define BROTLI_MAKE_UINT64_T(high, low) ((((uint64_t)(high)) << 32) | low)
+
+#define BROTLI_UINT32_MAX (~((uint32_t)0))
+#define BROTLI_SIZE_MAX (~((size_t)0))
+
+/**
+ * Allocating function pointer type.
+ *
+ * @param opaque custom memory manager handle provided by client
+ * @param size requested memory region size; can not be @c 0
+ * @returns @c 0 in the case of failure
+ * @returns a valid pointer to a memory region of at least @p size bytes
+ * long otherwise
+ */
+typedef void* (*brotli_alloc_func)(void* opaque, size_t size);
+
+/**
+ * Deallocating function pointer type.
+ *
+ * This function @b SHOULD do nothing if @p address is @c 0.
+ *
+ * @param opaque custom memory manager handle provided by client
+ * @param address memory region pointer returned by ::brotli_alloc_func, or @c 0
+ */
+typedef void (*brotli_free_func)(void* opaque, void* address);
+
+#endif /* BROTLI_COMMON_TYPES_H_ */
diff --git a/thirdparty/fonts/DroidSansFallback.ttf b/thirdparty/fonts/DroidSansFallback.ttf
deleted file mode 100644
index 206621fc6c..0000000000
--- a/thirdparty/fonts/DroidSansFallback.ttf
+++ /dev/null
Binary files differ
diff --git a/thirdparty/fonts/DroidSansFallback.woff2 b/thirdparty/fonts/DroidSansFallback.woff2
new file mode 100644
index 0000000000..9dd49d6281
--- /dev/null
+++ b/thirdparty/fonts/DroidSansFallback.woff2
Binary files differ
diff --git a/thirdparty/fonts/DroidSansJapanese.ttf b/thirdparty/fonts/DroidSansJapanese.ttf
deleted file mode 100644
index 412fa3de05..0000000000
--- a/thirdparty/fonts/DroidSansJapanese.ttf
+++ /dev/null
Binary files differ
diff --git a/thirdparty/fonts/DroidSansJapanese.woff2 b/thirdparty/fonts/DroidSansJapanese.woff2
new file mode 100644
index 0000000000..96eaf5ce72
--- /dev/null
+++ b/thirdparty/fonts/DroidSansJapanese.woff2
Binary files differ
diff --git a/thirdparty/fonts/JetBrainsMono_Regular.ttf b/thirdparty/fonts/JetBrainsMono_Regular.ttf
deleted file mode 100644
index 8da8aa4051..0000000000
--- a/thirdparty/fonts/JetBrainsMono_Regular.ttf
+++ /dev/null
Binary files differ
diff --git a/thirdparty/fonts/JetBrainsMono_Regular.woff2 b/thirdparty/fonts/JetBrainsMono_Regular.woff2
new file mode 100644
index 0000000000..490104645b
--- /dev/null
+++ b/thirdparty/fonts/JetBrainsMono_Regular.woff2
Binary files differ
diff --git a/thirdparty/fonts/NotoNaskhArabicUI_Bold.ttf b/thirdparty/fonts/NotoNaskhArabicUI_Bold.ttf
deleted file mode 100644
index 5576af7fee..0000000000
--- a/thirdparty/fonts/NotoNaskhArabicUI_Bold.ttf
+++ /dev/null
Binary files differ
diff --git a/thirdparty/fonts/NotoNaskhArabicUI_Bold.woff2 b/thirdparty/fonts/NotoNaskhArabicUI_Bold.woff2
new file mode 100644
index 0000000000..72358d6eb1
--- /dev/null
+++ b/thirdparty/fonts/NotoNaskhArabicUI_Bold.woff2
Binary files differ
diff --git a/thirdparty/fonts/NotoNaskhArabicUI_Regular.ttf b/thirdparty/fonts/NotoNaskhArabicUI_Regular.ttf
deleted file mode 100644
index 9b7a93d136..0000000000
--- a/thirdparty/fonts/NotoNaskhArabicUI_Regular.ttf
+++ /dev/null
Binary files differ
diff --git a/thirdparty/fonts/NotoNaskhArabicUI_Regular.woff2 b/thirdparty/fonts/NotoNaskhArabicUI_Regular.woff2
new file mode 100644
index 0000000000..1195d4174e
--- /dev/null
+++ b/thirdparty/fonts/NotoNaskhArabicUI_Regular.woff2
Binary files differ
diff --git a/thirdparty/fonts/NotoSansBengaliUI_Bold.ttf b/thirdparty/fonts/NotoSansBengaliUI_Bold.ttf
deleted file mode 100644
index dc61efefd5..0000000000
--- a/thirdparty/fonts/NotoSansBengaliUI_Bold.ttf
+++ /dev/null
Binary files differ
diff --git a/thirdparty/fonts/NotoSansBengaliUI_Bold.woff2 b/thirdparty/fonts/NotoSansBengaliUI_Bold.woff2
new file mode 100644
index 0000000000..03adf85fdc
--- /dev/null
+++ b/thirdparty/fonts/NotoSansBengaliUI_Bold.woff2
Binary files differ
diff --git a/thirdparty/fonts/NotoSansBengaliUI_Regular.ttf b/thirdparty/fonts/NotoSansBengaliUI_Regular.ttf
deleted file mode 100644
index d43c292ad6..0000000000
--- a/thirdparty/fonts/NotoSansBengaliUI_Regular.ttf
+++ /dev/null
Binary files differ
diff --git a/thirdparty/fonts/NotoSansBengaliUI_Regular.woff2 b/thirdparty/fonts/NotoSansBengaliUI_Regular.woff2
new file mode 100644
index 0000000000..a6a3ffa3a7
--- /dev/null
+++ b/thirdparty/fonts/NotoSansBengaliUI_Regular.woff2
Binary files differ
diff --git a/thirdparty/fonts/NotoSansDevanagariUI_Bold.ttf b/thirdparty/fonts/NotoSansDevanagariUI_Bold.ttf
deleted file mode 100644
index 74791aa469..0000000000
--- a/thirdparty/fonts/NotoSansDevanagariUI_Bold.ttf
+++ /dev/null
Binary files differ
diff --git a/thirdparty/fonts/NotoSansDevanagariUI_Bold.woff2 b/thirdparty/fonts/NotoSansDevanagariUI_Bold.woff2
new file mode 100644
index 0000000000..6c835712cb
--- /dev/null
+++ b/thirdparty/fonts/NotoSansDevanagariUI_Bold.woff2
Binary files differ
diff --git a/thirdparty/fonts/NotoSansDevanagariUI_Regular.ttf b/thirdparty/fonts/NotoSansDevanagariUI_Regular.ttf
deleted file mode 100644
index e48dced0c9..0000000000
--- a/thirdparty/fonts/NotoSansDevanagariUI_Regular.ttf
+++ /dev/null
Binary files differ
diff --git a/thirdparty/fonts/NotoSansDevanagariUI_Regular.woff2 b/thirdparty/fonts/NotoSansDevanagariUI_Regular.woff2
new file mode 100644
index 0000000000..486896e6e9
--- /dev/null
+++ b/thirdparty/fonts/NotoSansDevanagariUI_Regular.woff2
Binary files differ
diff --git a/thirdparty/fonts/NotoSansGeorgian_Bold.ttf b/thirdparty/fonts/NotoSansGeorgian_Bold.ttf
deleted file mode 100644
index 5443d04cfa..0000000000
--- a/thirdparty/fonts/NotoSansGeorgian_Bold.ttf
+++ /dev/null
Binary files differ
diff --git a/thirdparty/fonts/NotoSansGeorgian_Bold.woff2 b/thirdparty/fonts/NotoSansGeorgian_Bold.woff2
new file mode 100644
index 0000000000..104afa150c
--- /dev/null
+++ b/thirdparty/fonts/NotoSansGeorgian_Bold.woff2
Binary files differ
diff --git a/thirdparty/fonts/NotoSansGeorgian_Regular.ttf b/thirdparty/fonts/NotoSansGeorgian_Regular.ttf
deleted file mode 100644
index 9bfc8d9675..0000000000
--- a/thirdparty/fonts/NotoSansGeorgian_Regular.ttf
+++ /dev/null
Binary files differ
diff --git a/thirdparty/fonts/NotoSansGeorgian_Regular.woff2 b/thirdparty/fonts/NotoSansGeorgian_Regular.woff2
new file mode 100644
index 0000000000..0a7b9e878b
--- /dev/null
+++ b/thirdparty/fonts/NotoSansGeorgian_Regular.woff2
Binary files differ
diff --git a/thirdparty/fonts/NotoSansHebrew_Bold.ttf b/thirdparty/fonts/NotoSansHebrew_Bold.ttf
deleted file mode 100644
index 08ef5dc749..0000000000
--- a/thirdparty/fonts/NotoSansHebrew_Bold.ttf
+++ /dev/null
Binary files differ
diff --git a/thirdparty/fonts/NotoSansHebrew_Bold.woff2 b/thirdparty/fonts/NotoSansHebrew_Bold.woff2
new file mode 100644
index 0000000000..96c5ae1349
--- /dev/null
+++ b/thirdparty/fonts/NotoSansHebrew_Bold.woff2
Binary files differ
diff --git a/thirdparty/fonts/NotoSansHebrew_Regular.ttf b/thirdparty/fonts/NotoSansHebrew_Regular.ttf
deleted file mode 100644
index 0a89e9d21f..0000000000
--- a/thirdparty/fonts/NotoSansHebrew_Regular.ttf
+++ /dev/null
Binary files differ
diff --git a/thirdparty/fonts/NotoSansHebrew_Regular.woff2 b/thirdparty/fonts/NotoSansHebrew_Regular.woff2
new file mode 100644
index 0000000000..17eadedc6f
--- /dev/null
+++ b/thirdparty/fonts/NotoSansHebrew_Regular.woff2
Binary files differ
diff --git a/thirdparty/fonts/NotoSansMalayalamUI_Bold.ttf b/thirdparty/fonts/NotoSansMalayalamUI_Bold.ttf
deleted file mode 100644
index 42e5d56f3f..0000000000
--- a/thirdparty/fonts/NotoSansMalayalamUI_Bold.ttf
+++ /dev/null
Binary files differ
diff --git a/thirdparty/fonts/NotoSansMalayalamUI_Bold.woff2 b/thirdparty/fonts/NotoSansMalayalamUI_Bold.woff2
new file mode 100644
index 0000000000..5f6bacb0c3
--- /dev/null
+++ b/thirdparty/fonts/NotoSansMalayalamUI_Bold.woff2
Binary files differ
diff --git a/thirdparty/fonts/NotoSansMalayalamUI_Regular.ttf b/thirdparty/fonts/NotoSansMalayalamUI_Regular.ttf
deleted file mode 100644
index 37f3591706..0000000000
--- a/thirdparty/fonts/NotoSansMalayalamUI_Regular.ttf
+++ /dev/null
Binary files differ
diff --git a/thirdparty/fonts/NotoSansMalayalamUI_Regular.woff2 b/thirdparty/fonts/NotoSansMalayalamUI_Regular.woff2
new file mode 100644
index 0000000000..c54a82a874
--- /dev/null
+++ b/thirdparty/fonts/NotoSansMalayalamUI_Regular.woff2
Binary files differ
diff --git a/thirdparty/fonts/NotoSansOriyaUI_Bold.ttf b/thirdparty/fonts/NotoSansOriyaUI_Bold.ttf
deleted file mode 100644
index 36323f79ef..0000000000
--- a/thirdparty/fonts/NotoSansOriyaUI_Bold.ttf
+++ /dev/null
Binary files differ
diff --git a/thirdparty/fonts/NotoSansOriyaUI_Bold.woff2 b/thirdparty/fonts/NotoSansOriyaUI_Bold.woff2
new file mode 100644
index 0000000000..b7e34302e2
--- /dev/null
+++ b/thirdparty/fonts/NotoSansOriyaUI_Bold.woff2
Binary files differ
diff --git a/thirdparty/fonts/NotoSansOriyaUI_Regular.ttf b/thirdparty/fonts/NotoSansOriyaUI_Regular.ttf
deleted file mode 100644
index 7b50a71620..0000000000
--- a/thirdparty/fonts/NotoSansOriyaUI_Regular.ttf
+++ /dev/null
Binary files differ
diff --git a/thirdparty/fonts/NotoSansOriyaUI_Regular.woff2 b/thirdparty/fonts/NotoSansOriyaUI_Regular.woff2
new file mode 100644
index 0000000000..e64090cd77
--- /dev/null
+++ b/thirdparty/fonts/NotoSansOriyaUI_Regular.woff2
Binary files differ
diff --git a/thirdparty/fonts/NotoSansSinhalaUI_Bold.ttf b/thirdparty/fonts/NotoSansSinhalaUI_Bold.ttf
deleted file mode 100644
index ecfff97e05..0000000000
--- a/thirdparty/fonts/NotoSansSinhalaUI_Bold.ttf
+++ /dev/null
Binary files differ
diff --git a/thirdparty/fonts/NotoSansSinhalaUI_Bold.woff2 b/thirdparty/fonts/NotoSansSinhalaUI_Bold.woff2
new file mode 100644
index 0000000000..01dbd1bc8f
--- /dev/null
+++ b/thirdparty/fonts/NotoSansSinhalaUI_Bold.woff2
Binary files differ
diff --git a/thirdparty/fonts/NotoSansSinhalaUI_Regular.ttf b/thirdparty/fonts/NotoSansSinhalaUI_Regular.ttf
deleted file mode 100644
index a4b297d691..0000000000
--- a/thirdparty/fonts/NotoSansSinhalaUI_Regular.ttf
+++ /dev/null
Binary files differ
diff --git a/thirdparty/fonts/NotoSansSinhalaUI_Regular.woff2 b/thirdparty/fonts/NotoSansSinhalaUI_Regular.woff2
new file mode 100644
index 0000000000..504c9d0809
--- /dev/null
+++ b/thirdparty/fonts/NotoSansSinhalaUI_Regular.woff2
Binary files differ
diff --git a/thirdparty/fonts/NotoSansTamilUI_Bold.ttf b/thirdparty/fonts/NotoSansTamilUI_Bold.ttf
deleted file mode 100644
index 16bcd57081..0000000000
--- a/thirdparty/fonts/NotoSansTamilUI_Bold.ttf
+++ /dev/null
Binary files differ
diff --git a/thirdparty/fonts/NotoSansTamilUI_Bold.woff2 b/thirdparty/fonts/NotoSansTamilUI_Bold.woff2
new file mode 100644
index 0000000000..96967b0cce
--- /dev/null
+++ b/thirdparty/fonts/NotoSansTamilUI_Bold.woff2
Binary files differ
diff --git a/thirdparty/fonts/NotoSansTamilUI_Regular.ttf b/thirdparty/fonts/NotoSansTamilUI_Regular.ttf
deleted file mode 100644
index e65aeb8d0b..0000000000
--- a/thirdparty/fonts/NotoSansTamilUI_Regular.ttf
+++ /dev/null
Binary files differ
diff --git a/thirdparty/fonts/NotoSansTamilUI_Regular.woff2 b/thirdparty/fonts/NotoSansTamilUI_Regular.woff2
new file mode 100644
index 0000000000..e9b2bee582
--- /dev/null
+++ b/thirdparty/fonts/NotoSansTamilUI_Regular.woff2
Binary files differ
diff --git a/thirdparty/fonts/NotoSansTeluguUI_Bold.ttf b/thirdparty/fonts/NotoSansTeluguUI_Bold.ttf
deleted file mode 100644
index 16ac368795..0000000000
--- a/thirdparty/fonts/NotoSansTeluguUI_Bold.ttf
+++ /dev/null
Binary files differ
diff --git a/thirdparty/fonts/NotoSansTeluguUI_Bold.woff2 b/thirdparty/fonts/NotoSansTeluguUI_Bold.woff2
new file mode 100644
index 0000000000..2885bf991d
--- /dev/null
+++ b/thirdparty/fonts/NotoSansTeluguUI_Bold.woff2
Binary files differ
diff --git a/thirdparty/fonts/NotoSansTeluguUI_Regular.ttf b/thirdparty/fonts/NotoSansTeluguUI_Regular.ttf
deleted file mode 100644
index 5394a28cfe..0000000000
--- a/thirdparty/fonts/NotoSansTeluguUI_Regular.ttf
+++ /dev/null
Binary files differ
diff --git a/thirdparty/fonts/NotoSansTeluguUI_Regular.woff2 b/thirdparty/fonts/NotoSansTeluguUI_Regular.woff2
new file mode 100644
index 0000000000..ac5e66d8f6
--- /dev/null
+++ b/thirdparty/fonts/NotoSansTeluguUI_Regular.woff2
Binary files differ
diff --git a/thirdparty/fonts/NotoSansThaiUI_Bold.ttf b/thirdparty/fonts/NotoSansThaiUI_Bold.ttf
deleted file mode 100644
index 5d998f9215..0000000000
--- a/thirdparty/fonts/NotoSansThaiUI_Bold.ttf
+++ /dev/null
Binary files differ
diff --git a/thirdparty/fonts/NotoSansThaiUI_Bold.woff2 b/thirdparty/fonts/NotoSansThaiUI_Bold.woff2
new file mode 100644
index 0000000000..202995c066
--- /dev/null
+++ b/thirdparty/fonts/NotoSansThaiUI_Bold.woff2
Binary files differ
diff --git a/thirdparty/fonts/NotoSansThaiUI_Regular.ttf b/thirdparty/fonts/NotoSansThaiUI_Regular.ttf
deleted file mode 100644
index 8e317961d1..0000000000
--- a/thirdparty/fonts/NotoSansThaiUI_Regular.ttf
+++ /dev/null
Binary files differ
diff --git a/thirdparty/fonts/NotoSansThaiUI_Regular.woff2 b/thirdparty/fonts/NotoSansThaiUI_Regular.woff2
new file mode 100644
index 0000000000..2fb284f21f
--- /dev/null
+++ b/thirdparty/fonts/NotoSansThaiUI_Regular.woff2
Binary files differ
diff --git a/thirdparty/fonts/NotoSans_Bold.ttf b/thirdparty/fonts/NotoSans_Bold.ttf
deleted file mode 100644
index 1db7886e94..0000000000
--- a/thirdparty/fonts/NotoSans_Bold.ttf
+++ /dev/null
Binary files differ
diff --git a/thirdparty/fonts/NotoSans_Bold.woff2 b/thirdparty/fonts/NotoSans_Bold.woff2
new file mode 100644
index 0000000000..36a5b89999
--- /dev/null
+++ b/thirdparty/fonts/NotoSans_Bold.woff2
Binary files differ
diff --git a/thirdparty/fonts/NotoSans_Regular.ttf b/thirdparty/fonts/NotoSans_Regular.ttf
deleted file mode 100644
index 0a01a062f0..0000000000
--- a/thirdparty/fonts/NotoSans_Regular.ttf
+++ /dev/null
Binary files differ
diff --git a/thirdparty/fonts/NotoSans_Regular.woff2 b/thirdparty/fonts/NotoSans_Regular.woff2
new file mode 100644
index 0000000000..d449eed8d7
--- /dev/null
+++ b/thirdparty/fonts/NotoSans_Regular.woff2
Binary files differ
diff --git a/thirdparty/fonts/OpenSans_SemiBold.ttf b/thirdparty/fonts/OpenSans_SemiBold.ttf
deleted file mode 100644
index 54e7059cf3..0000000000
--- a/thirdparty/fonts/OpenSans_SemiBold.ttf
+++ /dev/null
Binary files differ
diff --git a/thirdparty/fonts/OpenSans_SemiBold.woff2 b/thirdparty/fonts/OpenSans_SemiBold.woff2
new file mode 100644
index 0000000000..5d14a36656
--- /dev/null
+++ b/thirdparty/fonts/OpenSans_SemiBold.woff2
Binary files differ
diff --git a/thirdparty/harfbuzz/src/OT/Layout/GSUB/AlternateSet.hh b/thirdparty/harfbuzz/src/OT/Layout/GSUB/AlternateSet.hh
new file mode 100644
index 0000000000..484f347468
--- /dev/null
+++ b/thirdparty/harfbuzz/src/OT/Layout/GSUB/AlternateSet.hh
@@ -0,0 +1,110 @@
+#ifndef OT_LAYOUT_GSUB_ALTERNATESET_HH
+#define OT_LAYOUT_GSUB_ALTERNATESET_HH
+
+#include "Common.hh"
+
+namespace OT {
+namespace Layout {
+namespace GSUB {
+
+struct AlternateSet
+{
+ protected:
+ Array16Of<HBGlyphID16>
+ alternates; /* Array of alternate GlyphIDs--in
+ * arbitrary order */
+ public:
+ DEFINE_SIZE_ARRAY (2, alternates);
+
+ bool sanitize (hb_sanitize_context_t *c) const
+ {
+ TRACE_SANITIZE (this);
+ return_trace (alternates.sanitize (c));
+ }
+
+ bool intersects (const hb_set_t *glyphs) const
+ { return hb_any (alternates, glyphs); }
+
+ void closure (hb_closure_context_t *c) const
+ { c->output->add_array (alternates.arrayZ, alternates.len); }
+
+ void collect_glyphs (hb_collect_glyphs_context_t *c) const
+ { c->output->add_array (alternates.arrayZ, alternates.len); }
+
+ bool apply (hb_ot_apply_context_t *c) const
+ {
+ TRACE_APPLY (this);
+ unsigned int count = alternates.len;
+
+ if (unlikely (!count)) return_trace (false);
+
+ hb_mask_t glyph_mask = c->buffer->cur().mask;
+ hb_mask_t lookup_mask = c->lookup_mask;
+
+ /* Note: This breaks badly if two features enabled this lookup together. */
+ unsigned int shift = hb_ctz (lookup_mask);
+ unsigned int alt_index = ((lookup_mask & glyph_mask) >> shift);
+
+ /* If alt_index is MAX_VALUE, randomize feature if it is the rand feature. */
+ if (alt_index == HB_OT_MAP_MAX_VALUE && c->random)
+ {
+ /* Maybe we can do better than unsafe-to-break all; but since we are
+ * changing random state, it would be hard to track that. Good 'nough. */
+ c->buffer->unsafe_to_break (0, c->buffer->len);
+ alt_index = c->random_number () % count + 1;
+ }
+
+ if (unlikely (alt_index > count || alt_index == 0)) return_trace (false);
+
+ c->replace_glyph (alternates[alt_index - 1]);
+
+ return_trace (true);
+ }
+
+ unsigned
+ get_alternates (unsigned start_offset,
+ unsigned *alternate_count /* IN/OUT. May be NULL. */,
+ hb_codepoint_t *alternate_glyphs /* OUT. May be NULL. */) const
+ {
+ if (alternates.len && alternate_count)
+ {
+ + alternates.sub_array (start_offset, alternate_count)
+ | hb_sink (hb_array (alternate_glyphs, *alternate_count))
+ ;
+ }
+ return alternates.len;
+ }
+
+ template <typename Iterator,
+ hb_requires (hb_is_source_of (Iterator, hb_codepoint_t))>
+ bool serialize (hb_serialize_context_t *c,
+ Iterator alts)
+ {
+ TRACE_SERIALIZE (this);
+ return_trace (alternates.serialize (c, alts));
+ }
+
+ bool subset (hb_subset_context_t *c) const
+ {
+ TRACE_SUBSET (this);
+ const hb_set_t &glyphset = *c->plan->glyphset_gsub ();
+ const hb_map_t &glyph_map = *c->plan->glyph_map;
+
+ auto it =
+ + hb_iter (alternates)
+ | hb_filter (glyphset)
+ | hb_map (glyph_map)
+ ;
+
+ auto *out = c->serializer->start_embed (*this);
+ return_trace (out->serialize (c->serializer, it) &&
+ out->alternates);
+ }
+};
+
+}
+}
+}
+
+
+#endif /* OT_LAYOUT_GSUB_ALTERNATESET_HH */
diff --git a/thirdparty/harfbuzz/src/OT/Layout/GSUB/AlternateSubst.hh b/thirdparty/harfbuzz/src/OT/Layout/GSUB/AlternateSubst.hh
new file mode 100644
index 0000000000..e5d999261f
--- /dev/null
+++ b/thirdparty/harfbuzz/src/OT/Layout/GSUB/AlternateSubst.hh
@@ -0,0 +1,51 @@
+#ifndef OT_LAYOUT_GSUB_ALTERNATESUBST_HH
+#define OT_LAYOUT_GSUB_ALTERNATESUBST_HH
+
+#include "AlternateSubstFormat1.hh"
+#include "Common.hh"
+
+namespace OT {
+namespace Layout {
+namespace GSUB {
+
+struct AlternateSubst
+{
+ protected:
+ union {
+ HBUINT16 format; /* Format identifier */
+ AlternateSubstFormat1 format1;
+ } u;
+ public:
+
+ template <typename context_t, typename ...Ts>
+ typename context_t::return_t dispatch (context_t *c, Ts&&... ds) const
+ {
+ TRACE_DISPATCH (this, u.format);
+ if (unlikely (!c->may_dispatch (this, &u.format))) return_trace (c->no_dispatch_return_value ());
+ switch (u.format) {
+ case 1: return_trace (c->dispatch (u.format1, std::forward<Ts> (ds)...));
+ default:return_trace (c->default_return_value ());
+ }
+ }
+
+ bool serialize (hb_serialize_context_t *c,
+ hb_sorted_array_t<const HBGlyphID16> glyphs,
+ hb_array_t<const unsigned int> alternate_len_list,
+ hb_array_t<const HBGlyphID16> alternate_glyphs_list)
+ {
+ TRACE_SERIALIZE (this);
+ if (unlikely (!c->extend_min (u.format))) return_trace (false);
+ unsigned int format = 1;
+ u.format = format;
+ switch (u.format) {
+ case 1: return_trace (u.format1.serialize (c, glyphs, alternate_len_list, alternate_glyphs_list));
+ default:return_trace (false);
+ }
+ }
+};
+
+}
+}
+}
+
+#endif /* OT_LAYOUT_GSUB_ALTERNATESUBST_HH */
diff --git a/thirdparty/harfbuzz/src/OT/Layout/GSUB/AlternateSubstFormat1.hh b/thirdparty/harfbuzz/src/OT/Layout/GSUB/AlternateSubstFormat1.hh
new file mode 100644
index 0000000000..af1cd7bedb
--- /dev/null
+++ b/thirdparty/harfbuzz/src/OT/Layout/GSUB/AlternateSubstFormat1.hh
@@ -0,0 +1,128 @@
+#ifndef OT_LAYOUT_GSUB_ALTERNATESUBSTFORMAT1_HH
+#define OT_LAYOUT_GSUB_ALTERNATESUBSTFORMAT1_HH
+
+#include "AlternateSet.hh"
+#include "Common.hh"
+
+namespace OT {
+namespace Layout {
+namespace GSUB {
+
+struct AlternateSubstFormat1
+{
+ protected:
+ HBUINT16 format; /* Format identifier--format = 1 */
+ Offset16To<Coverage>
+ coverage; /* Offset to Coverage table--from
+ * beginning of Substitution table */
+ Array16OfOffset16To<AlternateSet>
+ alternateSet; /* Array of AlternateSet tables
+ * ordered by Coverage Index */
+ public:
+ DEFINE_SIZE_ARRAY (6, alternateSet);
+
+ bool sanitize (hb_sanitize_context_t *c) const
+ {
+ TRACE_SANITIZE (this);
+ return_trace (coverage.sanitize (c, this) && alternateSet.sanitize (c, this));
+ }
+
+ bool intersects (const hb_set_t *glyphs) const
+ { return (this+coverage).intersects (glyphs); }
+
+ bool may_have_non_1to1 () const
+ { return false; }
+
+ void closure (hb_closure_context_t *c) const
+ {
+ + hb_zip (this+coverage, alternateSet)
+ | hb_filter (c->parent_active_glyphs (), hb_first)
+ | hb_map (hb_second)
+ | hb_map (hb_add (this))
+ | hb_apply ([c] (const AlternateSet &_) { _.closure (c); })
+ ;
+
+ }
+
+ void closure_lookups (hb_closure_lookups_context_t *c) const {}
+
+ void collect_glyphs (hb_collect_glyphs_context_t *c) const
+ {
+ if (unlikely (!(this+coverage).collect_coverage (c->input))) return;
+ + hb_zip (this+coverage, alternateSet)
+ | hb_map (hb_second)
+ | hb_map (hb_add (this))
+ | hb_apply ([c] (const AlternateSet &_) { _.collect_glyphs (c); })
+ ;
+ }
+
+ const Coverage &get_coverage () const { return this+coverage; }
+
+ bool would_apply (hb_would_apply_context_t *c) const
+ { return c->len == 1 && (this+coverage).get_coverage (c->glyphs[0]) != NOT_COVERED; }
+
+ unsigned
+ get_glyph_alternates (hb_codepoint_t gid,
+ unsigned start_offset,
+ unsigned *alternate_count /* IN/OUT. May be NULL. */,
+ hb_codepoint_t *alternate_glyphs /* OUT. May be NULL. */) const
+ { return (this+alternateSet[(this+coverage).get_coverage (gid)])
+ .get_alternates (start_offset, alternate_count, alternate_glyphs); }
+
+ bool apply (hb_ot_apply_context_t *c) const
+ {
+ TRACE_APPLY (this);
+
+ unsigned int index = (this+coverage).get_coverage (c->buffer->cur().codepoint);
+ if (likely (index == NOT_COVERED)) return_trace (false);
+
+ return_trace ((this+alternateSet[index]).apply (c));
+ }
+
+ bool serialize (hb_serialize_context_t *c,
+ hb_sorted_array_t<const HBGlyphID16> glyphs,
+ hb_array_t<const unsigned int> alternate_len_list,
+ hb_array_t<const HBGlyphID16> alternate_glyphs_list)
+ {
+ TRACE_SERIALIZE (this);
+ if (unlikely (!c->extend_min (this))) return_trace (false);
+ if (unlikely (!alternateSet.serialize (c, glyphs.length))) return_trace (false);
+ for (unsigned int i = 0; i < glyphs.length; i++)
+ {
+ unsigned int alternate_len = alternate_len_list[i];
+ if (unlikely (!alternateSet[i]
+ .serialize_serialize (c, alternate_glyphs_list.sub_array (0, alternate_len))))
+ return_trace (false);
+ alternate_glyphs_list += alternate_len;
+ }
+ return_trace (coverage.serialize_serialize (c, glyphs));
+ }
+
+ bool subset (hb_subset_context_t *c) const
+ {
+ TRACE_SUBSET (this);
+ const hb_set_t &glyphset = *c->plan->glyphset_gsub ();
+ const hb_map_t &glyph_map = *c->plan->glyph_map;
+
+ auto *out = c->serializer->start_embed (*this);
+ if (unlikely (!c->serializer->extend_min (out))) return_trace (false);
+ out->format = format;
+
+ hb_sorted_vector_t<hb_codepoint_t> new_coverage;
+ + hb_zip (this+coverage, alternateSet)
+ | hb_filter (glyphset, hb_first)
+ | hb_filter (subset_offset_array (c, out->alternateSet, this), hb_second)
+ | hb_map (hb_first)
+ | hb_map (glyph_map)
+ | hb_sink (new_coverage)
+ ;
+ out->coverage.serialize_serialize (c->serializer, new_coverage.iter ());
+ return_trace (bool (new_coverage));
+ }
+};
+
+}
+}
+}
+
+#endif /* OT_LAYOUT_GSUB_ALTERNATESUBSTFORMAT1_HH */
diff --git a/thirdparty/harfbuzz/src/OT/Layout/GSUB/ChainContextSubst.hh b/thirdparty/harfbuzz/src/OT/Layout/GSUB/ChainContextSubst.hh
new file mode 100644
index 0000000000..bbb88b222f
--- /dev/null
+++ b/thirdparty/harfbuzz/src/OT/Layout/GSUB/ChainContextSubst.hh
@@ -0,0 +1,18 @@
+#ifndef OT_LAYOUT_GSUB_CHAINCONTEXTSUBST_HH
+#define OT_LAYOUT_GSUB_CHAINCONTEXTSUBST_HH
+
+// TODO(garretrieger): move to new layout.
+#include "../../../hb-ot-layout-gsubgpos.hh"
+#include "Common.hh"
+
+namespace OT {
+namespace Layout {
+namespace GSUB {
+
+struct ChainContextSubst : ChainContext {};
+
+}
+}
+}
+
+#endif /* OT_LAYOUT_GSUB_CHAINCONTEXTSUBST_HH */
diff --git a/thirdparty/harfbuzz/src/OT/Layout/GSUB/Common.hh b/thirdparty/harfbuzz/src/OT/Layout/GSUB/Common.hh
new file mode 100644
index 0000000000..f4c78a9f02
--- /dev/null
+++ b/thirdparty/harfbuzz/src/OT/Layout/GSUB/Common.hh
@@ -0,0 +1,21 @@
+#ifndef OT_LAYOUT_GSUB_COMMON_HH
+#define OT_LAYOUT_GSUB_COMMON_HH
+
+#include "../../../hb-serialize.hh"
+#include "../../../hb-ot-layout-gsubgpos.hh"
+
+namespace OT {
+namespace Layout {
+namespace GSUB {
+
+typedef hb_pair_t<hb_codepoint_t, hb_codepoint_t> hb_codepoint_pair_t;
+
+template<typename Iterator>
+static void SingleSubst_serialize (hb_serialize_context_t *c,
+ Iterator it);
+
+}
+}
+}
+
+#endif /* OT_LAYOUT_GSUB_COMMON_HH */
diff --git a/thirdparty/harfbuzz/src/OT/Layout/GSUB/ContextSubst.hh b/thirdparty/harfbuzz/src/OT/Layout/GSUB/ContextSubst.hh
new file mode 100644
index 0000000000..2af54e8ff4
--- /dev/null
+++ b/thirdparty/harfbuzz/src/OT/Layout/GSUB/ContextSubst.hh
@@ -0,0 +1,18 @@
+#ifndef OT_LAYOUT_GSUB_CONTEXTSUBST_HH
+#define OT_LAYOUT_GSUB_CONTEXTSUBST_HH
+
+// TODO(garretrieger): move to new layout.
+#include "../../../hb-ot-layout-gsubgpos.hh"
+#include "Common.hh"
+
+namespace OT {
+namespace Layout {
+namespace GSUB {
+
+struct ContextSubst : Context {};
+
+}
+}
+}
+
+#endif /* OT_LAYOUT_GSUB_CONTEXTSUBST_HH */
diff --git a/thirdparty/harfbuzz/src/OT/Layout/GSUB/ExtensionSubst.hh b/thirdparty/harfbuzz/src/OT/Layout/GSUB/ExtensionSubst.hh
new file mode 100644
index 0000000000..40a3ff439f
--- /dev/null
+++ b/thirdparty/harfbuzz/src/OT/Layout/GSUB/ExtensionSubst.hh
@@ -0,0 +1,22 @@
+#ifndef OT_LAYOUT_GSUB_EXTENSIONSUBST_HH
+#define OT_LAYOUT_GSUB_EXTENSIONSUBST_HH
+
+// TODO(garretrieger): move to new layout.
+#include "../../../hb-ot-layout-gsubgpos.hh"
+#include "Common.hh"
+
+namespace OT {
+namespace Layout {
+namespace GSUB {
+
+struct ExtensionSubst : Extension<ExtensionSubst>
+{
+ typedef struct SubstLookupSubTable SubTable;
+ bool is_reverse () const;
+};
+
+}
+}
+}
+
+#endif /* OT_LAYOUT_GSUB_EXTENSIONSUBST_HH */
diff --git a/thirdparty/harfbuzz/src/OT/Layout/GSUB/GSUB.hh b/thirdparty/harfbuzz/src/OT/Layout/GSUB/GSUB.hh
new file mode 100644
index 0000000000..ad153ce8d7
--- /dev/null
+++ b/thirdparty/harfbuzz/src/OT/Layout/GSUB/GSUB.hh
@@ -0,0 +1,58 @@
+#ifndef OT_LAYOUT_GSUB_GSUB_HH
+#define OT_LAYOUT_GSUB_GSUB_HH
+
+// TODO(garretrieger): move to new layout.
+#include "../../../hb-ot-layout-gsubgpos.hh"
+#include "Common.hh"
+#include "SubstLookup.hh"
+
+using OT::Layout::GSUB::SubstLookup;
+
+namespace OT {
+namespace Layout {
+namespace GSUB {
+
+/*
+ * GSUB -- Glyph Substitution
+ * https://docs.microsoft.com/en-us/typography/opentype/spec/gsub
+ */
+
+struct GSUB : GSUBGPOS
+{
+ static constexpr hb_tag_t tableTag = HB_OT_TAG_GSUB;
+
+ const SubstLookup& get_lookup (unsigned int i) const
+ { return static_cast<const SubstLookup &> (GSUBGPOS::get_lookup (i)); }
+
+ bool subset (hb_subset_context_t *c) const
+ {
+ hb_subset_layout_context_t l (c, tableTag, c->plan->gsub_lookups, c->plan->gsub_langsys, c->plan->gsub_features);
+ return GSUBGPOS::subset<SubstLookup> (&l);
+ }
+
+ bool sanitize (hb_sanitize_context_t *c) const
+ { return GSUBGPOS::sanitize<SubstLookup> (c); }
+
+ HB_INTERNAL bool is_blocklisted (hb_blob_t *blob,
+ hb_face_t *face) const;
+
+ void closure_lookups (hb_face_t *face,
+ const hb_set_t *glyphs,
+ hb_set_t *lookup_indexes /* IN/OUT */) const
+ { GSUBGPOS::closure_lookups<SubstLookup> (face, glyphs, lookup_indexes); }
+
+ typedef GSUBGPOS::accelerator_t<GSUB> accelerator_t;
+};
+
+
+}
+}
+
+struct GSUB_accelerator_t : Layout::GSUB::GSUB::accelerator_t {
+ GSUB_accelerator_t (hb_face_t *face) : Layout::GSUB::GSUB::accelerator_t (face) {}
+};
+
+
+}
+
+#endif /* OT_LAYOUT_GSUB_GSUB_HH */
diff --git a/thirdparty/harfbuzz/src/OT/Layout/GSUB/Ligature.hh b/thirdparty/harfbuzz/src/OT/Layout/GSUB/Ligature.hh
new file mode 100644
index 0000000000..0448d925d1
--- /dev/null
+++ b/thirdparty/harfbuzz/src/OT/Layout/GSUB/Ligature.hh
@@ -0,0 +1,135 @@
+#ifndef OT_LAYOUT_GSUB_LIGATURE_HH
+#define OT_LAYOUT_GSUB_LIGATURE_HH
+
+#include "Common.hh"
+
+namespace OT {
+namespace Layout {
+namespace GSUB {
+
+struct Ligature
+{
+ protected:
+ HBGlyphID16 ligGlyph; /* GlyphID of ligature to substitute */
+ HeadlessArrayOf<HBGlyphID16>
+ component; /* Array of component GlyphIDs--start
+ * with the second component--ordered
+ * in writing direction */
+ public:
+ DEFINE_SIZE_ARRAY (4, component);
+
+ bool sanitize (hb_sanitize_context_t *c) const
+ {
+ TRACE_SANITIZE (this);
+ return_trace (ligGlyph.sanitize (c) && component.sanitize (c));
+ }
+
+ bool intersects (const hb_set_t *glyphs) const
+ { return hb_all (component, glyphs); }
+
+ void closure (hb_closure_context_t *c) const
+ {
+ if (!intersects (c->glyphs)) return;
+ c->output->add (ligGlyph);
+ }
+
+ void collect_glyphs (hb_collect_glyphs_context_t *c) const
+ {
+ c->input->add_array (component.arrayZ, component.get_length ());
+ c->output->add (ligGlyph);
+ }
+
+ bool would_apply (hb_would_apply_context_t *c) const
+ {
+ if (c->len != component.lenP1)
+ return false;
+
+ for (unsigned int i = 1; i < c->len; i++)
+ if (likely (c->glyphs[i] != component[i]))
+ return false;
+
+ return true;
+ }
+
+ bool apply (hb_ot_apply_context_t *c) const
+ {
+ TRACE_APPLY (this);
+ unsigned int count = component.lenP1;
+
+ if (unlikely (!count)) return_trace (false);
+
+ /* Special-case to make it in-place and not consider this
+ * as a "ligated" substitution. */
+ if (unlikely (count == 1))
+ {
+ c->replace_glyph (ligGlyph);
+ return_trace (true);
+ }
+
+ unsigned int total_component_count = 0;
+
+ unsigned int match_end = 0;
+ unsigned int match_positions[HB_MAX_CONTEXT_LENGTH];
+
+ if (likely (!match_input (c, count,
+ &component[1],
+ match_glyph,
+ nullptr,
+ &match_end,
+ match_positions,
+ &total_component_count)))
+ {
+ c->buffer->unsafe_to_concat (c->buffer->idx, match_end);
+ return_trace (false);
+ }
+
+ ligate_input (c,
+ count,
+ match_positions,
+ match_end,
+ ligGlyph,
+ total_component_count);
+
+ return_trace (true);
+ }
+
+ template <typename Iterator,
+ hb_requires (hb_is_source_of (Iterator, hb_codepoint_t))>
+ bool serialize (hb_serialize_context_t *c,
+ hb_codepoint_t ligature,
+ Iterator components /* Starting from second */)
+ {
+ TRACE_SERIALIZE (this);
+ if (unlikely (!c->extend_min (this))) return_trace (false);
+ ligGlyph = ligature;
+ if (unlikely (!component.serialize (c, components))) return_trace (false);
+ return_trace (true);
+ }
+
+ bool subset (hb_subset_context_t *c, unsigned coverage_idx) const
+ {
+ TRACE_SUBSET (this);
+ const hb_set_t &glyphset = *c->plan->glyphset_gsub ();
+ const hb_map_t &glyph_map = *c->plan->glyph_map;
+
+ if (!intersects (&glyphset) || !glyphset.has (ligGlyph)) return_trace (false);
+ // Ensure Coverage table is always packed after this.
+ c->serializer->add_virtual_link (coverage_idx);
+
+ auto it =
+ + hb_iter (component)
+ | hb_map (glyph_map)
+ ;
+
+ auto *out = c->serializer->start_embed (*this);
+ return_trace (out->serialize (c->serializer,
+ glyph_map[ligGlyph],
+ it)); }
+};
+
+
+}
+}
+}
+
+#endif /* OT_LAYOUT_GSUB_LIGATURE_HH */
diff --git a/thirdparty/harfbuzz/src/OT/Layout/GSUB/LigatureSet.hh b/thirdparty/harfbuzz/src/OT/Layout/GSUB/LigatureSet.hh
new file mode 100644
index 0000000000..185b324b35
--- /dev/null
+++ b/thirdparty/harfbuzz/src/OT/Layout/GSUB/LigatureSet.hh
@@ -0,0 +1,118 @@
+#ifndef OT_LAYOUT_GSUB_LIGATURESET_HH
+#define OT_LAYOUT_GSUB_LIGATURESET_HH
+
+#include "Common.hh"
+#include "Ligature.hh"
+
+namespace OT {
+namespace Layout {
+namespace GSUB {
+
+struct LigatureSet
+{
+ protected:
+ Array16OfOffset16To<Ligature>
+ ligature; /* Array LigatureSet tables
+ * ordered by preference */
+ public:
+ DEFINE_SIZE_ARRAY (2, ligature);
+
+ bool sanitize (hb_sanitize_context_t *c) const
+ {
+ TRACE_SANITIZE (this);
+ return_trace (ligature.sanitize (c, this));
+ }
+
+ bool intersects (const hb_set_t *glyphs) const
+ {
+ return
+ + hb_iter (ligature)
+ | hb_map (hb_add (this))
+ | hb_map ([glyphs] (const Ligature &_) { return _.intersects (glyphs); })
+ | hb_any
+ ;
+ }
+
+ void closure (hb_closure_context_t *c) const
+ {
+ + hb_iter (ligature)
+ | hb_map (hb_add (this))
+ | hb_apply ([c] (const Ligature &_) { _.closure (c); })
+ ;
+ }
+
+ void collect_glyphs (hb_collect_glyphs_context_t *c) const
+ {
+ + hb_iter (ligature)
+ | hb_map (hb_add (this))
+ | hb_apply ([c] (const Ligature &_) { _.collect_glyphs (c); })
+ ;
+ }
+
+ bool would_apply (hb_would_apply_context_t *c) const
+ {
+ return
+ + hb_iter (ligature)
+ | hb_map (hb_add (this))
+ | hb_map ([c] (const Ligature &_) { return _.would_apply (c); })
+ | hb_any
+ ;
+ }
+
+ bool apply (hb_ot_apply_context_t *c) const
+ {
+ TRACE_APPLY (this);
+ unsigned int num_ligs = ligature.len;
+ for (unsigned int i = 0; i < num_ligs; i++)
+ {
+ const Ligature &lig = this+ligature[i];
+ if (lig.apply (c)) return_trace (true);
+ }
+
+ return_trace (false);
+ }
+
+ bool serialize (hb_serialize_context_t *c,
+ hb_array_t<const HBGlyphID16> ligatures,
+ hb_array_t<const unsigned int> component_count_list,
+ hb_array_t<const HBGlyphID16> &component_list /* Starting from second for each ligature */)
+ {
+ TRACE_SERIALIZE (this);
+ if (unlikely (!c->extend_min (this))) return_trace (false);
+ if (unlikely (!ligature.serialize (c, ligatures.length))) return_trace (false);
+ for (unsigned int i = 0; i < ligatures.length; i++)
+ {
+ unsigned int component_count = (unsigned) hb_max ((int) component_count_list[i] - 1, 0);
+ if (unlikely (!ligature[i].serialize_serialize (c,
+ ligatures[i],
+ component_list.sub_array (0, component_count))))
+ return_trace (false);
+ component_list += component_count;
+ }
+ return_trace (true);
+ }
+
+ bool subset (hb_subset_context_t *c, unsigned coverage_idx) const
+ {
+ TRACE_SUBSET (this);
+ auto *out = c->serializer->start_embed (*this);
+ if (unlikely (!c->serializer->extend_min (out))) return_trace (false);
+
+ + hb_iter (ligature)
+ | hb_filter (subset_offset_array (c, out->ligature, this, coverage_idx))
+ | hb_drain
+ ;
+
+ if (bool (out->ligature))
+ // Ensure Coverage table is always packed after this.
+ c->serializer->add_virtual_link (coverage_idx);
+
+ return_trace (bool (out->ligature));
+ }
+};
+
+}
+}
+}
+
+#endif /* OT_LAYOUT_GSUB_LIGATURESET_HH */
diff --git a/thirdparty/harfbuzz/src/OT/Layout/GSUB/LigatureSubst.hh b/thirdparty/harfbuzz/src/OT/Layout/GSUB/LigatureSubst.hh
new file mode 100644
index 0000000000..a029bf5e9f
--- /dev/null
+++ b/thirdparty/harfbuzz/src/OT/Layout/GSUB/LigatureSubst.hh
@@ -0,0 +1,59 @@
+#ifndef OT_LAYOUT_GSUB_LIGATURESUBST_HH
+#define OT_LAYOUT_GSUB_LIGATURESUBST_HH
+
+#include "Common.hh"
+#include "LigatureSubstFormat1.hh"
+
+namespace OT {
+namespace Layout {
+namespace GSUB {
+
+struct LigatureSubst
+{
+ protected:
+ union {
+ HBUINT16 format; /* Format identifier */
+ LigatureSubstFormat1 format1;
+ } u;
+
+ public:
+ template <typename context_t, typename ...Ts>
+ typename context_t::return_t dispatch (context_t *c, Ts&&... ds) const
+ {
+ TRACE_DISPATCH (this, u.format);
+ if (unlikely (!c->may_dispatch (this, &u.format))) return_trace (c->no_dispatch_return_value ());
+ switch (u.format) {
+ case 1: return_trace (c->dispatch (u.format1, std::forward<Ts> (ds)...));
+ default:return_trace (c->default_return_value ());
+ }
+ }
+
+ bool serialize (hb_serialize_context_t *c,
+ hb_sorted_array_t<const HBGlyphID16> first_glyphs,
+ hb_array_t<const unsigned int> ligature_per_first_glyph_count_list,
+ hb_array_t<const HBGlyphID16> ligatures_list,
+ hb_array_t<const unsigned int> component_count_list,
+ hb_array_t<const HBGlyphID16> component_list /* Starting from second for each ligature */)
+ {
+ TRACE_SERIALIZE (this);
+ if (unlikely (!c->extend_min (u.format))) return_trace (false);
+ unsigned int format = 1;
+ u.format = format;
+ switch (u.format) {
+ case 1: return_trace (u.format1.serialize (c,
+ first_glyphs,
+ ligature_per_first_glyph_count_list,
+ ligatures_list,
+ component_count_list,
+ component_list));
+ default:return_trace (false);
+ }
+ }
+};
+
+
+}
+}
+}
+
+#endif /* OT_LAYOUT_GSUB_LIGATURESUBST_HH */
diff --git a/thirdparty/harfbuzz/src/OT/Layout/GSUB/LigatureSubstFormat1.hh b/thirdparty/harfbuzz/src/OT/Layout/GSUB/LigatureSubstFormat1.hh
new file mode 100644
index 0000000000..19dfe98469
--- /dev/null
+++ b/thirdparty/harfbuzz/src/OT/Layout/GSUB/LigatureSubstFormat1.hh
@@ -0,0 +1,165 @@
+#ifndef OT_LAYOUT_GSUB_LIGATURESUBSTFORMAT1_HH
+#define OT_LAYOUT_GSUB_LIGATURESUBSTFORMAT1_HH
+
+#include "Common.hh"
+#include "LigatureSet.hh"
+
+namespace OT {
+namespace Layout {
+namespace GSUB {
+
+struct LigatureSubstFormat1
+{
+ protected:
+ HBUINT16 format; /* Format identifier--format = 1 */
+ Offset16To<Coverage>
+ coverage; /* Offset to Coverage table--from
+ * beginning of Substitution table */
+ Array16OfOffset16To<LigatureSet>
+ ligatureSet; /* Array LigatureSet tables
+ * ordered by Coverage Index */
+ public:
+ DEFINE_SIZE_ARRAY (6, ligatureSet);
+
+ bool sanitize (hb_sanitize_context_t *c) const
+ {
+ TRACE_SANITIZE (this);
+ return_trace (coverage.sanitize (c, this) && ligatureSet.sanitize (c, this));
+ }
+
+ bool intersects (const hb_set_t *glyphs) const
+ {
+ return
+ + hb_zip (this+coverage, ligatureSet)
+ | hb_filter (*glyphs, hb_first)
+ | hb_map (hb_second)
+ | hb_map ([this, glyphs] (const Offset16To<LigatureSet> &_)
+ { return (this+_).intersects (glyphs); })
+ | hb_any
+ ;
+ }
+
+ bool may_have_non_1to1 () const
+ { return true; }
+
+ void closure (hb_closure_context_t *c) const
+ {
+ + hb_zip (this+coverage, ligatureSet)
+ | hb_filter (c->parent_active_glyphs (), hb_first)
+ | hb_map (hb_second)
+ | hb_map (hb_add (this))
+ | hb_apply ([c] (const LigatureSet &_) { _.closure (c); })
+ ;
+
+ }
+
+ void closure_lookups (hb_closure_lookups_context_t *c) const {}
+
+ void collect_glyphs (hb_collect_glyphs_context_t *c) const
+ {
+ if (unlikely (!(this+coverage).collect_coverage (c->input))) return;
+
+ + hb_zip (this+coverage, ligatureSet)
+ | hb_map (hb_second)
+ | hb_map (hb_add (this))
+ | hb_apply ([c] (const LigatureSet &_) { _.collect_glyphs (c); })
+ ;
+ }
+
+ const Coverage &get_coverage () const { return this+coverage; }
+
+ bool would_apply (hb_would_apply_context_t *c) const
+ {
+ unsigned int index = (this+coverage).get_coverage (c->glyphs[0]);
+ if (likely (index == NOT_COVERED)) return false;
+
+ const LigatureSet &lig_set = this+ligatureSet[index];
+ return lig_set.would_apply (c);
+ }
+
+ bool apply (hb_ot_apply_context_t *c) const
+ {
+ TRACE_APPLY (this);
+
+ unsigned int index = (this+coverage).get_coverage (c->buffer->cur ().codepoint);
+ if (likely (index == NOT_COVERED)) return_trace (false);
+
+ const LigatureSet &lig_set = this+ligatureSet[index];
+ return_trace (lig_set.apply (c));
+ }
+
+ bool serialize (hb_serialize_context_t *c,
+ hb_sorted_array_t<const HBGlyphID16> first_glyphs,
+ hb_array_t<const unsigned int> ligature_per_first_glyph_count_list,
+ hb_array_t<const HBGlyphID16> ligatures_list,
+ hb_array_t<const unsigned int> component_count_list,
+ hb_array_t<const HBGlyphID16> component_list /* Starting from second for each ligature */)
+ {
+ TRACE_SERIALIZE (this);
+ if (unlikely (!c->extend_min (this))) return_trace (false);
+ if (unlikely (!ligatureSet.serialize (c, first_glyphs.length))) return_trace (false);
+ for (unsigned int i = 0; i < first_glyphs.length; i++)
+ {
+ unsigned int ligature_count = ligature_per_first_glyph_count_list[i];
+ if (unlikely (!ligatureSet[i]
+ .serialize_serialize (c,
+ ligatures_list.sub_array (0, ligature_count),
+ component_count_list.sub_array (0, ligature_count),
+ component_list))) return_trace (false);
+ ligatures_list += ligature_count;
+ component_count_list += ligature_count;
+ }
+ return_trace (coverage.serialize_serialize (c, first_glyphs));
+ }
+
+ bool subset (hb_subset_context_t *c) const
+ {
+ TRACE_SUBSET (this);
+ const hb_set_t &glyphset = *c->plan->glyphset_gsub ();
+ const hb_map_t &glyph_map = *c->plan->glyph_map;
+
+ auto *out = c->serializer->start_embed (*this);
+ if (unlikely (!c->serializer->extend_min (out))) return_trace (false);
+ out->format = format;
+
+ // Due to a bug in some older versions of windows 7 the Coverage table must be
+ // packed after the LigatureSet and Ligature tables, so serialize Coverage first
+ // which places it last in the packed order.
+ hb_set_t new_coverage;
+ + hb_zip (this+coverage, hb_iter (ligatureSet) | hb_map (hb_add (this)))
+ | hb_filter (glyphset, hb_first)
+ | hb_filter ([&] (const LigatureSet& _) {
+ return _.intersects (&glyphset);
+ }, hb_second)
+ | hb_map (hb_first)
+ | hb_sink (new_coverage);
+
+ if (!c->serializer->push<Coverage> ()
+ ->serialize (c->serializer,
+ + new_coverage.iter () | hb_map_retains_sorting (glyph_map)))
+ {
+ c->serializer->pop_discard ();
+ return_trace (false);
+ }
+
+ unsigned coverage_idx = c->serializer->pop_pack ();
+ c->serializer->add_link (out->coverage, coverage_idx);
+
+ + hb_zip (this+coverage, ligatureSet)
+ | hb_filter (new_coverage, hb_first)
+ | hb_map (hb_second)
+ // to ensure that the repacker always orders the coverage table after the LigatureSet
+ // and LigatureSubtable's they will be linked to the Coverage table via a virtual link
+ // the coverage table object idx is passed down to facilitate this.
+ | hb_apply (subset_offset_array (c, out->ligatureSet, this, coverage_idx))
+ ;
+
+ return_trace (bool (new_coverage));
+ }
+};
+
+}
+}
+}
+
+#endif /* OT_LAYOUT_GSUB_LIGATURESUBSTFORMAT1_HH */
diff --git a/thirdparty/harfbuzz/src/OT/Layout/GSUB/MultipleSubst.hh b/thirdparty/harfbuzz/src/OT/Layout/GSUB/MultipleSubst.hh
new file mode 100644
index 0000000000..b289175504
--- /dev/null
+++ b/thirdparty/harfbuzz/src/OT/Layout/GSUB/MultipleSubst.hh
@@ -0,0 +1,53 @@
+#ifndef OT_LAYOUT_GSUB_MULTIPLESUBST_HH
+#define OT_LAYOUT_GSUB_MULTIPLESUBST_HH
+
+#include "Common.hh"
+#include "MultipleSubstFormat1.hh"
+
+namespace OT {
+namespace Layout {
+namespace GSUB {
+
+struct MultipleSubst
+{
+ protected:
+ union {
+ HBUINT16 format; /* Format identifier */
+ MultipleSubstFormat1 format1;
+ } u;
+
+ public:
+
+ template <typename context_t, typename ...Ts>
+ typename context_t::return_t dispatch (context_t *c, Ts&&... ds) const
+ {
+ TRACE_DISPATCH (this, u.format);
+ if (unlikely (!c->may_dispatch (this, &u.format))) return_trace (c->no_dispatch_return_value ());
+ switch (u.format) {
+ case 1: return_trace (c->dispatch (u.format1, std::forward<Ts> (ds)...));
+ default:return_trace (c->default_return_value ());
+ }
+ }
+
+ bool serialize (hb_serialize_context_t *c,
+ hb_sorted_array_t<const HBGlyphID16> glyphs,
+ hb_array_t<const unsigned int> substitute_len_list,
+ hb_array_t<const HBGlyphID16> substitute_glyphs_list)
+ {
+ TRACE_SERIALIZE (this);
+ if (unlikely (!c->extend_min (u.format))) return_trace (false);
+ unsigned int format = 1;
+ u.format = format;
+ switch (u.format) {
+ case 1: return_trace (u.format1.serialize (c, glyphs, substitute_len_list, substitute_glyphs_list));
+ default:return_trace (false);
+ }
+ }
+};
+
+
+}
+}
+}
+
+#endif /* OT_LAYOUT_GSUB_MULTIPLESUBST_HH */
diff --git a/thirdparty/harfbuzz/src/OT/Layout/GSUB/MultipleSubstFormat1.hh b/thirdparty/harfbuzz/src/OT/Layout/GSUB/MultipleSubstFormat1.hh
new file mode 100644
index 0000000000..54c6dc8478
--- /dev/null
+++ b/thirdparty/harfbuzz/src/OT/Layout/GSUB/MultipleSubstFormat1.hh
@@ -0,0 +1,120 @@
+#ifndef OT_LAYOUT_GSUB_MULTIPLESUBSTFORMAT1_HH
+#define OT_LAYOUT_GSUB_MULTIPLESUBSTFORMAT1_HH
+
+#include "Common.hh"
+#include "Sequence.hh"
+
+namespace OT {
+namespace Layout {
+namespace GSUB {
+
+struct MultipleSubstFormat1
+{
+ protected:
+ HBUINT16 format; /* Format identifier--format = 1 */
+ Offset16To<Coverage>
+ coverage; /* Offset to Coverage table--from
+ * beginning of Substitution table */
+ Array16OfOffset16To<Sequence>
+ sequence; /* Array of Sequence tables
+ * ordered by Coverage Index */
+ public:
+ DEFINE_SIZE_ARRAY (6, sequence);
+
+ bool sanitize (hb_sanitize_context_t *c) const
+ {
+ TRACE_SANITIZE (this);
+ return_trace (coverage.sanitize (c, this) && sequence.sanitize (c, this));
+ }
+
+ bool intersects (const hb_set_t *glyphs) const
+ { return (this+coverage).intersects (glyphs); }
+
+ bool may_have_non_1to1 () const
+ { return true; }
+
+ void closure (hb_closure_context_t *c) const
+ {
+ + hb_zip (this+coverage, sequence)
+ | hb_filter (c->parent_active_glyphs (), hb_first)
+ | hb_map (hb_second)
+ | hb_map (hb_add (this))
+ | hb_apply ([c] (const Sequence &_) { _.closure (c); })
+ ;
+ }
+
+ void closure_lookups (hb_closure_lookups_context_t *c) const {}
+
+ void collect_glyphs (hb_collect_glyphs_context_t *c) const
+ {
+ if (unlikely (!(this+coverage).collect_coverage (c->input))) return;
+ + hb_zip (this+coverage, sequence)
+ | hb_map (hb_second)
+ | hb_map (hb_add (this))
+ | hb_apply ([c] (const Sequence &_) { _.collect_glyphs (c); })
+ ;
+ }
+
+ const Coverage &get_coverage () const { return this+coverage; }
+
+ bool would_apply (hb_would_apply_context_t *c) const
+ { return c->len == 1 && (this+coverage).get_coverage (c->glyphs[0]) != NOT_COVERED; }
+
+ bool apply (hb_ot_apply_context_t *c) const
+ {
+ TRACE_APPLY (this);
+
+ unsigned int index = (this+coverage).get_coverage (c->buffer->cur().codepoint);
+ if (likely (index == NOT_COVERED)) return_trace (false);
+
+ return_trace ((this+sequence[index]).apply (c));
+ }
+
+ bool serialize (hb_serialize_context_t *c,
+ hb_sorted_array_t<const HBGlyphID16> glyphs,
+ hb_array_t<const unsigned int> substitute_len_list,
+ hb_array_t<const HBGlyphID16> substitute_glyphs_list)
+ {
+ TRACE_SERIALIZE (this);
+ if (unlikely (!c->extend_min (this))) return_trace (false);
+ if (unlikely (!sequence.serialize (c, glyphs.length))) return_trace (false);
+ for (unsigned int i = 0; i < glyphs.length; i++)
+ {
+ unsigned int substitute_len = substitute_len_list[i];
+ if (unlikely (!sequence[i]
+ .serialize_serialize (c, substitute_glyphs_list.sub_array (0, substitute_len))))
+ return_trace (false);
+ substitute_glyphs_list += substitute_len;
+ }
+ return_trace (coverage.serialize_serialize (c, glyphs));
+ }
+
+ bool subset (hb_subset_context_t *c) const
+ {
+ TRACE_SUBSET (this);
+ const hb_set_t &glyphset = *c->plan->glyphset_gsub ();
+ const hb_map_t &glyph_map = *c->plan->glyph_map;
+
+ auto *out = c->serializer->start_embed (*this);
+ if (unlikely (!c->serializer->extend_min (out))) return_trace (false);
+ out->format = format;
+
+ hb_sorted_vector_t<hb_codepoint_t> new_coverage;
+ + hb_zip (this+coverage, sequence)
+ | hb_filter (glyphset, hb_first)
+ | hb_filter (subset_offset_array (c, out->sequence, this), hb_second)
+ | hb_map (hb_first)
+ | hb_map (glyph_map)
+ | hb_sink (new_coverage)
+ ;
+ out->coverage.serialize_serialize (c->serializer, new_coverage.iter ());
+ return_trace (bool (new_coverage));
+ }
+};
+
+}
+}
+}
+
+
+#endif /* OT_LAYOUT_GSUB_MULTIPLESUBSTFORMAT1_HH */
diff --git a/thirdparty/harfbuzz/src/OT/Layout/GSUB/ReverseChainSingleSubst.hh b/thirdparty/harfbuzz/src/OT/Layout/GSUB/ReverseChainSingleSubst.hh
new file mode 100644
index 0000000000..435d80fd31
--- /dev/null
+++ b/thirdparty/harfbuzz/src/OT/Layout/GSUB/ReverseChainSingleSubst.hh
@@ -0,0 +1,36 @@
+#ifndef OT_LAYOUT_GSUB_REVERSECHAINSINGLESUBST_HH
+#define OT_LAYOUT_GSUB_REVERSECHAINSINGLESUBST_HH
+
+#include "Common.hh"
+#include "ReverseChainSingleSubstFormat1.hh"
+
+namespace OT {
+namespace Layout {
+namespace GSUB {
+
+struct ReverseChainSingleSubst
+{
+ protected:
+ union {
+ HBUINT16 format; /* Format identifier */
+ ReverseChainSingleSubstFormat1 format1;
+ } u;
+
+ public:
+ template <typename context_t, typename ...Ts>
+ typename context_t::return_t dispatch (context_t *c, Ts&&... ds) const
+ {
+ TRACE_DISPATCH (this, u.format);
+ if (unlikely (!c->may_dispatch (this, &u.format))) return_trace (c->no_dispatch_return_value ());
+ switch (u.format) {
+ case 1: return_trace (c->dispatch (u.format1, std::forward<Ts> (ds)...));
+ default:return_trace (c->default_return_value ());
+ }
+ }
+};
+
+}
+}
+}
+
+#endif /* HB_OT_LAYOUT_GSUB_REVERSECHAINSINGLESUBST_HH */
diff --git a/thirdparty/harfbuzz/src/OT/Layout/GSUB/ReverseChainSingleSubstFormat1.hh b/thirdparty/harfbuzz/src/OT/Layout/GSUB/ReverseChainSingleSubstFormat1.hh
new file mode 100644
index 0000000000..7a79a9df25
--- /dev/null
+++ b/thirdparty/harfbuzz/src/OT/Layout/GSUB/ReverseChainSingleSubstFormat1.hh
@@ -0,0 +1,228 @@
+#ifndef OT_LAYOUT_GSUB_REVERSECHAINSINGLESUBSTFORMAT1_HH
+#define OT_LAYOUT_GSUB_REVERSECHAINSINGLESUBSTFORMAT1_HH
+
+#include "Common.hh"
+
+namespace OT {
+namespace Layout {
+namespace GSUB {
+
+struct ReverseChainSingleSubstFormat1
+{
+ protected:
+ HBUINT16 format; /* Format identifier--format = 1 */
+ Offset16To<Coverage>
+ coverage; /* Offset to Coverage table--from
+ * beginning of table */
+ Array16OfOffset16To<Coverage>
+ backtrack; /* Array of coverage tables
+ * in backtracking sequence, in glyph
+ * sequence order */
+ Array16OfOffset16To<Coverage>
+ lookaheadX; /* Array of coverage tables
+ * in lookahead sequence, in glyph
+ * sequence order */
+ Array16Of<HBGlyphID16>
+ substituteX; /* Array of substitute
+ * GlyphIDs--ordered by Coverage Index */
+ public:
+ DEFINE_SIZE_MIN (10);
+
+ bool sanitize (hb_sanitize_context_t *c) const
+ {
+ TRACE_SANITIZE (this);
+ if (!(coverage.sanitize (c, this) && backtrack.sanitize (c, this)))
+ return_trace (false);
+ const Array16OfOffset16To<Coverage> &lookahead = StructAfter<Array16OfOffset16To<Coverage>> (backtrack);
+ if (!lookahead.sanitize (c, this))
+ return_trace (false);
+ const Array16Of<HBGlyphID16> &substitute = StructAfter<Array16Of<HBGlyphID16>> (lookahead);
+ return_trace (substitute.sanitize (c));
+ }
+
+ bool intersects (const hb_set_t *glyphs) const
+ {
+ if (!(this+coverage).intersects (glyphs))
+ return false;
+
+ const Array16OfOffset16To<Coverage> &lookahead = StructAfter<Array16OfOffset16To<Coverage>> (backtrack);
+
+ unsigned int count;
+
+ count = backtrack.len;
+ for (unsigned int i = 0; i < count; i++)
+ if (!(this+backtrack[i]).intersects (glyphs))
+ return false;
+
+ count = lookahead.len;
+ for (unsigned int i = 0; i < count; i++)
+ if (!(this+lookahead[i]).intersects (glyphs))
+ return false;
+
+ return true;
+ }
+
+ bool may_have_non_1to1 () const
+ { return false; }
+
+ void closure (hb_closure_context_t *c) const
+ {
+ if (!intersects (c->glyphs)) return;
+
+ const Array16OfOffset16To<Coverage> &lookahead = StructAfter<Array16OfOffset16To<Coverage>> (backtrack);
+ const Array16Of<HBGlyphID16> &substitute = StructAfter<Array16Of<HBGlyphID16>> (lookahead);
+
+ + hb_zip (this+coverage, substitute)
+ | hb_filter (c->parent_active_glyphs (), hb_first)
+ | hb_map (hb_second)
+ | hb_sink (c->output)
+ ;
+ }
+
+ void closure_lookups (hb_closure_lookups_context_t *c) const {}
+
+ void collect_glyphs (hb_collect_glyphs_context_t *c) const
+ {
+ if (unlikely (!(this+coverage).collect_coverage (c->input))) return;
+
+ unsigned int count;
+
+ count = backtrack.len;
+ for (unsigned int i = 0; i < count; i++)
+ if (unlikely (!(this+backtrack[i]).collect_coverage (c->before))) return;
+
+ const Array16OfOffset16To<Coverage> &lookahead = StructAfter<Array16OfOffset16To<Coverage>> (backtrack);
+ count = lookahead.len;
+ for (unsigned int i = 0; i < count; i++)
+ if (unlikely (!(this+lookahead[i]).collect_coverage (c->after))) return;
+
+ const Array16Of<HBGlyphID16> &substitute = StructAfter<Array16Of<HBGlyphID16>> (lookahead);
+ count = substitute.len;
+ c->output->add_array (substitute.arrayZ, substitute.len);
+ }
+
+ const Coverage &get_coverage () const { return this+coverage; }
+
+ bool would_apply (hb_would_apply_context_t *c) const
+ { return c->len == 1 && (this+coverage).get_coverage (c->glyphs[0]) != NOT_COVERED; }
+
+ bool apply (hb_ot_apply_context_t *c) const
+ {
+ TRACE_APPLY (this);
+ if (unlikely (c->nesting_level_left != HB_MAX_NESTING_LEVEL))
+ return_trace (false); /* No chaining to this type */
+
+ unsigned int index = (this+coverage).get_coverage (c->buffer->cur ().codepoint);
+ if (likely (index == NOT_COVERED)) return_trace (false);
+
+ const Array16OfOffset16To<Coverage> &lookahead = StructAfter<Array16OfOffset16To<Coverage>> (backtrack);
+ const Array16Of<HBGlyphID16> &substitute = StructAfter<Array16Of<HBGlyphID16>> (lookahead);
+
+ if (unlikely (index >= substitute.len)) return_trace (false);
+
+ unsigned int start_index = 0, end_index = 0;
+ if (match_backtrack (c,
+ backtrack.len, (HBUINT16 *) backtrack.arrayZ,
+ match_coverage, this,
+ &start_index) &&
+ match_lookahead (c,
+ lookahead.len, (HBUINT16 *) lookahead.arrayZ,
+ match_coverage, this,
+ c->buffer->idx + 1, &end_index))
+ {
+ c->buffer->unsafe_to_break_from_outbuffer (start_index, end_index);
+ c->replace_glyph_inplace (substitute[index]);
+ /* Note: We DON'T decrease buffer->idx. The main loop does it
+ * for us. This is useful for preventing surprises if someone
+ * calls us through a Context lookup. */
+ return_trace (true);
+ }
+ else
+ {
+ c->buffer->unsafe_to_concat_from_outbuffer (start_index, end_index);
+ return_trace (false);
+ }
+ }
+
+ template<typename Iterator,
+ hb_requires (hb_is_iterator (Iterator))>
+ bool serialize_coverage_offset_array (hb_subset_context_t *c, Iterator it) const
+ {
+ TRACE_SERIALIZE (this);
+ auto *out = c->serializer->start_embed<Array16OfOffset16To<Coverage>> ();
+
+ if (unlikely (!c->serializer->allocate_size<HBUINT16> (HBUINT16::static_size)))
+ return_trace (false);
+
+ for (auto& offset : it) {
+ auto *o = out->serialize_append (c->serializer);
+ if (unlikely (!o) || !o->serialize_subset (c, offset, this))
+ return_trace (false);
+ }
+
+ return_trace (true);
+ }
+
+ template<typename Iterator, typename BacktrackIterator, typename LookaheadIterator,
+ hb_requires (hb_is_sorted_source_of (Iterator, hb_codepoint_pair_t)),
+ hb_requires (hb_is_iterator (BacktrackIterator)),
+ hb_requires (hb_is_iterator (LookaheadIterator))>
+ bool serialize (hb_subset_context_t *c,
+ Iterator coverage_subst_iter,
+ BacktrackIterator backtrack_iter,
+ LookaheadIterator lookahead_iter) const
+ {
+ TRACE_SERIALIZE (this);
+
+ auto *out = c->serializer->start_embed (this);
+ if (unlikely (!c->serializer->check_success (out))) return_trace (false);
+ if (unlikely (!c->serializer->embed (this->format))) return_trace (false);
+ if (unlikely (!c->serializer->embed (this->coverage))) return_trace (false);
+
+ if (!serialize_coverage_offset_array (c, backtrack_iter)) return_trace (false);
+ if (!serialize_coverage_offset_array (c, lookahead_iter)) return_trace (false);
+
+ auto *substitute_out = c->serializer->start_embed<Array16Of<HBGlyphID16>> ();
+ auto substitutes =
+ + coverage_subst_iter
+ | hb_map (hb_second)
+ ;
+
+ auto glyphs =
+ + coverage_subst_iter
+ | hb_map_retains_sorting (hb_first)
+ ;
+ if (unlikely (! c->serializer->check_success (substitute_out->serialize (c->serializer, substitutes))))
+ return_trace (false);
+
+ if (unlikely (!out->coverage.serialize_serialize (c->serializer, glyphs)))
+ return_trace (false);
+ return_trace (true);
+ }
+
+ bool subset (hb_subset_context_t *c) const
+ {
+ TRACE_SUBSET (this);
+ const hb_set_t &glyphset = *c->plan->glyphset_gsub ();
+ const hb_map_t &glyph_map = *c->plan->glyph_map;
+
+ const Array16OfOffset16To<Coverage> &lookahead = StructAfter<Array16OfOffset16To<Coverage>> (backtrack);
+ const Array16Of<HBGlyphID16> &substitute = StructAfter<Array16Of<HBGlyphID16>> (lookahead);
+
+ auto it =
+ + hb_zip (this+coverage, substitute)
+ | hb_filter (glyphset, hb_first)
+ | hb_filter (glyphset, hb_second)
+ | hb_map_retains_sorting ([&] (hb_pair_t<hb_codepoint_t, const HBGlyphID16 &> p) -> hb_codepoint_pair_t
+ { return hb_pair (glyph_map[p.first], glyph_map[p.second]); })
+ ;
+
+ return_trace (bool (it) && serialize (c, it, backtrack.iter (), lookahead.iter ()));
+ }
+};
+
+}
+}
+}
+
+#endif /* HB_OT_LAYOUT_GSUB_REVERSECHAINSINGLESUBSTFORMAT1_HH */
diff --git a/thirdparty/harfbuzz/src/OT/Layout/GSUB/Sequence.hh b/thirdparty/harfbuzz/src/OT/Layout/GSUB/Sequence.hh
new file mode 100644
index 0000000000..ebd451e6ba
--- /dev/null
+++ b/thirdparty/harfbuzz/src/OT/Layout/GSUB/Sequence.hh
@@ -0,0 +1,103 @@
+#ifndef OT_LAYOUT_GSUB_SEQUENCE_HH
+#define OT_LAYOUT_GSUB_SEQUENCE_HH
+
+#include "Common.hh"
+
+namespace OT {
+namespace Layout {
+namespace GSUB {
+
+struct Sequence
+{
+ protected:
+ Array16Of<HBGlyphID16>
+ substitute; /* String of GlyphIDs to substitute */
+ public:
+ DEFINE_SIZE_ARRAY (2, substitute);
+
+ bool sanitize (hb_sanitize_context_t *c) const
+ {
+ TRACE_SANITIZE (this);
+ return_trace (substitute.sanitize (c));
+ }
+
+ bool intersects (const hb_set_t *glyphs) const
+ { return hb_all (substitute, glyphs); }
+
+ void closure (hb_closure_context_t *c) const
+ { c->output->add_array (substitute.arrayZ, substitute.len); }
+
+ void collect_glyphs (hb_collect_glyphs_context_t *c) const
+ { c->output->add_array (substitute.arrayZ, substitute.len); }
+
+ bool apply (hb_ot_apply_context_t *c) const
+ {
+ TRACE_APPLY (this);
+ unsigned int count = substitute.len;
+
+ /* Special-case to make it in-place and not consider this
+ * as a "multiplied" substitution. */
+ if (unlikely (count == 1))
+ {
+ c->replace_glyph (substitute.arrayZ[0]);
+ return_trace (true);
+ }
+ /* Spec disallows this, but Uniscribe allows it.
+ * https://github.com/harfbuzz/harfbuzz/issues/253 */
+ else if (unlikely (count == 0))
+ {
+ c->buffer->delete_glyph ();
+ return_trace (true);
+ }
+
+ unsigned int klass = _hb_glyph_info_is_ligature (&c->buffer->cur()) ?
+ HB_OT_LAYOUT_GLYPH_PROPS_BASE_GLYPH : 0;
+ unsigned lig_id = _hb_glyph_info_get_lig_id (&c->buffer->cur());
+
+ for (unsigned int i = 0; i < count; i++)
+ {
+ /* If is attached to a ligature, don't disturb that.
+ * https://github.com/harfbuzz/harfbuzz/issues/3069 */
+ if (!lig_id)
+ _hb_glyph_info_set_lig_props_for_component (&c->buffer->cur(), i);
+ c->output_glyph_for_component (substitute.arrayZ[i], klass);
+ }
+ c->buffer->skip_glyph ();
+
+ return_trace (true);
+ }
+
+ template <typename Iterator,
+ hb_requires (hb_is_source_of (Iterator, hb_codepoint_t))>
+ bool serialize (hb_serialize_context_t *c,
+ Iterator subst)
+ {
+ TRACE_SERIALIZE (this);
+ return_trace (substitute.serialize (c, subst));
+ }
+
+ bool subset (hb_subset_context_t *c) const
+ {
+ TRACE_SUBSET (this);
+ const hb_set_t &glyphset = *c->plan->glyphset_gsub ();
+ const hb_map_t &glyph_map = *c->plan->glyph_map;
+
+ if (!intersects (&glyphset)) return_trace (false);
+
+ auto it =
+ + hb_iter (substitute)
+ | hb_map (glyph_map)
+ ;
+
+ auto *out = c->serializer->start_embed (*this);
+ return_trace (out->serialize (c->serializer, it));
+ }
+};
+
+
+}
+}
+}
+
+
+#endif /* OT_LAYOUT_GSUB_SEQUENCE_HH */
diff --git a/thirdparty/harfbuzz/src/OT/Layout/GSUB/SingleSubst.hh b/thirdparty/harfbuzz/src/OT/Layout/GSUB/SingleSubst.hh
new file mode 100644
index 0000000000..786428fe45
--- /dev/null
+++ b/thirdparty/harfbuzz/src/OT/Layout/GSUB/SingleSubst.hh
@@ -0,0 +1,75 @@
+#ifndef OT_LAYOUT_GSUB_SINGLESUBST_HH
+#define OT_LAYOUT_GSUB_SINGLESUBST_HH
+
+#include "Common.hh"
+#include "SingleSubstFormat1.hh"
+#include "SingleSubstFormat2.hh"
+
+namespace OT {
+namespace Layout {
+namespace GSUB {
+
+struct SingleSubst
+{
+ protected:
+ union {
+ HBUINT16 format; /* Format identifier */
+ SingleSubstFormat1 format1;
+ SingleSubstFormat2 format2;
+ } u;
+
+ public:
+
+ template <typename context_t, typename ...Ts>
+ typename context_t::return_t dispatch (context_t *c, Ts&&... ds) const
+ {
+ TRACE_DISPATCH (this, u.format);
+ if (unlikely (!c->may_dispatch (this, &u.format))) return_trace (c->no_dispatch_return_value ());
+ switch (u.format) {
+ case 1: return_trace (c->dispatch (u.format1, std::forward<Ts> (ds)...));
+ case 2: return_trace (c->dispatch (u.format2, std::forward<Ts> (ds)...));
+ default:return_trace (c->default_return_value ());
+ }
+ }
+
+ template<typename Iterator,
+ hb_requires (hb_is_sorted_source_of (Iterator,
+ const hb_codepoint_pair_t))>
+ bool serialize (hb_serialize_context_t *c,
+ Iterator glyphs)
+ {
+ TRACE_SERIALIZE (this);
+ if (unlikely (!c->extend_min (u.format))) return_trace (false);
+ unsigned format = 2;
+ unsigned delta = 0;
+ if (glyphs)
+ {
+ format = 1;
+ auto get_delta = [=] (hb_codepoint_pair_t _)
+ { return (unsigned) (_.second - _.first) & 0xFFFF; };
+ delta = get_delta (*glyphs);
+ if (!hb_all (++(+glyphs), delta, get_delta)) format = 2;
+ }
+ u.format = format;
+ switch (u.format) {
+ case 1: return_trace (u.format1.serialize (c,
+ + glyphs
+ | hb_map_retains_sorting (hb_first),
+ delta));
+ case 2: return_trace (u.format2.serialize (c, glyphs));
+ default:return_trace (false);
+ }
+ }
+};
+
+template<typename Iterator>
+static void
+SingleSubst_serialize (hb_serialize_context_t *c,
+ Iterator it)
+{ c->start_embed<SingleSubst> ()->serialize (c, it); }
+
+}
+}
+}
+
+#endif /* OT_LAYOUT_GSUB_SINGLESUBST_HH */
diff --git a/thirdparty/harfbuzz/src/OT/Layout/GSUB/SingleSubstFormat1.hh b/thirdparty/harfbuzz/src/OT/Layout/GSUB/SingleSubstFormat1.hh
new file mode 100644
index 0000000000..3c6b2954ce
--- /dev/null
+++ b/thirdparty/harfbuzz/src/OT/Layout/GSUB/SingleSubstFormat1.hh
@@ -0,0 +1,122 @@
+#ifndef OT_LAYOUT_GSUB_SINGLESUBSTFORMAT1_HH
+#define OT_LAYOUT_GSUB_SINGLESUBSTFORMAT1_HH
+
+#include "Common.hh"
+
+namespace OT {
+namespace Layout {
+namespace GSUB {
+
+struct SingleSubstFormat1
+{
+ protected:
+ HBUINT16 format; /* Format identifier--format = 1 */
+ Offset16To<Coverage>
+ coverage; /* Offset to Coverage table--from
+ * beginning of Substitution table */
+ HBUINT16 deltaGlyphID; /* Add to original GlyphID to get
+ * substitute GlyphID, modulo 0x10000 */
+
+ public:
+ DEFINE_SIZE_STATIC (6);
+
+ bool sanitize (hb_sanitize_context_t *c) const
+ {
+ TRACE_SANITIZE (this);
+ return_trace (coverage.sanitize (c, this) && deltaGlyphID.sanitize (c));
+ }
+
+ bool intersects (const hb_set_t *glyphs) const
+ { return (this+coverage).intersects (glyphs); }
+
+ bool may_have_non_1to1 () const
+ { return false; }
+
+ void closure (hb_closure_context_t *c) const
+ {
+ unsigned d = deltaGlyphID;
+
+ + hb_iter (this+coverage)
+ | hb_filter (c->parent_active_glyphs ())
+ | hb_map ([d] (hb_codepoint_t g) { return (g + d) & 0xFFFFu; })
+ | hb_sink (c->output)
+ ;
+
+ }
+
+ void closure_lookups (hb_closure_lookups_context_t *c) const {}
+
+ void collect_glyphs (hb_collect_glyphs_context_t *c) const
+ {
+ if (unlikely (!(this+coverage).collect_coverage (c->input))) return;
+ unsigned d = deltaGlyphID;
+ + hb_iter (this+coverage)
+ | hb_map ([d] (hb_codepoint_t g) { return (g + d) & 0xFFFFu; })
+ | hb_sink (c->output)
+ ;
+ }
+
+ const Coverage &get_coverage () const { return this+coverage; }
+
+ bool would_apply (hb_would_apply_context_t *c) const
+ { return c->len == 1 && (this+coverage).get_coverage (c->glyphs[0]) != NOT_COVERED; }
+
+ bool apply (hb_ot_apply_context_t *c) const
+ {
+ TRACE_APPLY (this);
+ hb_codepoint_t glyph_id = c->buffer->cur().codepoint;
+ unsigned int index = (this+coverage).get_coverage (glyph_id);
+ if (likely (index == NOT_COVERED)) return_trace (false);
+
+ /* According to the Adobe Annotated OpenType Suite, result is always
+ * limited to 16bit. */
+ glyph_id = (glyph_id + deltaGlyphID) & 0xFFFFu;
+ c->replace_glyph (glyph_id);
+
+ return_trace (true);
+ }
+
+ template<typename Iterator,
+ hb_requires (hb_is_sorted_source_of (Iterator, hb_codepoint_t))>
+ bool serialize (hb_serialize_context_t *c,
+ Iterator glyphs,
+ unsigned delta)
+ {
+ TRACE_SERIALIZE (this);
+ if (unlikely (!c->extend_min (this))) return_trace (false);
+ if (unlikely (!coverage.serialize_serialize (c, glyphs))) return_trace (false);
+ c->check_assign (deltaGlyphID, delta, HB_SERIALIZE_ERROR_INT_OVERFLOW);
+ return_trace (true);
+ }
+
+ bool subset (hb_subset_context_t *c) const
+ {
+ TRACE_SUBSET (this);
+ const hb_set_t &glyphset = *c->plan->glyphset_gsub ();
+ const hb_map_t &glyph_map = *c->plan->glyph_map;
+
+ hb_codepoint_t delta = deltaGlyphID;
+
+ auto it =
+ + hb_iter (this+coverage)
+ | hb_filter (glyphset)
+ | hb_map_retains_sorting ([&] (hb_codepoint_t g) {
+ return hb_codepoint_pair_t (g,
+ (g + delta) & 0xFFFF); })
+ | hb_filter (glyphset, hb_second)
+ | hb_map_retains_sorting ([&] (hb_codepoint_pair_t p) -> hb_codepoint_pair_t
+ { return hb_pair (glyph_map[p.first], glyph_map[p.second]); })
+ ;
+
+ bool ret = bool (it);
+ SingleSubst_serialize (c->serializer, it);
+ return_trace (ret);
+ }
+};
+
+}
+}
+}
+
+
+#endif /* OT_LAYOUT_GSUB_SINGLESUBSTFORMAT1_HH */
diff --git a/thirdparty/harfbuzz/src/OT/Layout/GSUB/SingleSubstFormat2.hh b/thirdparty/harfbuzz/src/OT/Layout/GSUB/SingleSubstFormat2.hh
new file mode 100644
index 0000000000..df75bb52bb
--- /dev/null
+++ b/thirdparty/harfbuzz/src/OT/Layout/GSUB/SingleSubstFormat2.hh
@@ -0,0 +1,120 @@
+#ifndef OT_LAYOUT_GSUB_SINGLESUBSTFORMAT2_HH
+#define OT_LAYOUT_GSUB_SINGLESUBSTFORMAT2_HH
+
+#include "Common.hh"
+
+namespace OT {
+namespace Layout {
+namespace GSUB {
+
+struct SingleSubstFormat2
+{
+ protected:
+ HBUINT16 format; /* Format identifier--format = 2 */
+ Offset16To<Coverage>
+ coverage; /* Offset to Coverage table--from
+ * beginning of Substitution table */
+ Array16Of<HBGlyphID16>
+ substitute; /* Array of substitute
+ * GlyphIDs--ordered by Coverage Index */
+
+ public:
+ DEFINE_SIZE_ARRAY (6, substitute);
+
+ bool sanitize (hb_sanitize_context_t *c) const
+ {
+ TRACE_SANITIZE (this);
+ return_trace (coverage.sanitize (c, this) && substitute.sanitize (c));
+ }
+
+ bool intersects (const hb_set_t *glyphs) const
+ { return (this+coverage).intersects (glyphs); }
+
+ bool may_have_non_1to1 () const
+ { return false; }
+
+ void closure (hb_closure_context_t *c) const
+ {
+ + hb_zip (this+coverage, substitute)
+ | hb_filter (c->parent_active_glyphs (), hb_first)
+ | hb_map (hb_second)
+ | hb_sink (c->output)
+ ;
+
+ }
+
+ void closure_lookups (hb_closure_lookups_context_t *c) const {}
+
+ void collect_glyphs (hb_collect_glyphs_context_t *c) const
+ {
+ if (unlikely (!(this+coverage).collect_coverage (c->input))) return;
+ + hb_zip (this+coverage, substitute)
+ | hb_map (hb_second)
+ | hb_sink (c->output)
+ ;
+ }
+
+ const Coverage &get_coverage () const { return this+coverage; }
+
+ bool would_apply (hb_would_apply_context_t *c) const
+ { return c->len == 1 && (this+coverage).get_coverage (c->glyphs[0]) != NOT_COVERED; }
+
+ bool apply (hb_ot_apply_context_t *c) const
+ {
+ TRACE_APPLY (this);
+ unsigned int index = (this+coverage).get_coverage (c->buffer->cur().codepoint);
+ if (likely (index == NOT_COVERED)) return_trace (false);
+
+ if (unlikely (index >= substitute.len)) return_trace (false);
+
+ c->replace_glyph (substitute[index]);
+
+ return_trace (true);
+ }
+
+ template<typename Iterator,
+ hb_requires (hb_is_sorted_source_of (Iterator,
+ hb_codepoint_pair_t))>
+ bool serialize (hb_serialize_context_t *c,
+ Iterator it)
+ {
+ TRACE_SERIALIZE (this);
+ auto substitutes =
+ + it
+ | hb_map (hb_second)
+ ;
+ auto glyphs =
+ + it
+ | hb_map_retains_sorting (hb_first)
+ ;
+ if (unlikely (!c->extend_min (this))) return_trace (false);
+ if (unlikely (!substitute.serialize (c, substitutes))) return_trace (false);
+ if (unlikely (!coverage.serialize_serialize (c, glyphs))) return_trace (false);
+ return_trace (true);
+ }
+
+ bool subset (hb_subset_context_t *c) const
+ {
+ TRACE_SUBSET (this);
+ const hb_set_t &glyphset = *c->plan->glyphset_gsub ();
+ const hb_map_t &glyph_map = *c->plan->glyph_map;
+
+ auto it =
+ + hb_zip (this+coverage, substitute)
+ | hb_filter (glyphset, hb_first)
+ | hb_filter (glyphset, hb_second)
+ | hb_map_retains_sorting ([&] (hb_pair_t<hb_codepoint_t, const HBGlyphID16 &> p) -> hb_codepoint_pair_t
+ { return hb_pair (glyph_map[p.first], glyph_map[p.second]); })
+ ;
+
+ bool ret = bool (it);
+ SingleSubst_serialize (c->serializer, it);
+ return_trace (ret);
+ }
+};
+
+}
+}
+}
+
+#endif /* OT_LAYOUT_GSUB_SINGLESUBSTFORMAT2_HH */
diff --git a/thirdparty/harfbuzz/src/OT/Layout/GSUB/SubstLookup.hh b/thirdparty/harfbuzz/src/OT/Layout/GSUB/SubstLookup.hh
new file mode 100644
index 0000000000..3419b5a734
--- /dev/null
+++ b/thirdparty/harfbuzz/src/OT/Layout/GSUB/SubstLookup.hh
@@ -0,0 +1,224 @@
+#ifndef OT_LAYOUT_GSUB_SUBSTLOOKUP_HH
+#define OT_LAYOUT_GSUB_SUBSTLOOKUP_HH
+
+#include "Common.hh"
+#include "SubstLookupSubTable.hh"
+
+namespace OT {
+namespace Layout {
+namespace GSUB {
+
+struct SubstLookup : Lookup
+{
+ typedef SubstLookupSubTable SubTable;
+
+ bool sanitize (hb_sanitize_context_t *c) const
+ { return Lookup::sanitize<SubTable> (c); }
+
+ const SubTable& get_subtable (unsigned int i) const
+ { return Lookup::get_subtable<SubTable> (i); }
+
+ static inline bool lookup_type_is_reverse (unsigned int lookup_type)
+ { return lookup_type == SubTable::ReverseChainSingle; }
+
+ bool is_reverse () const
+ {
+ unsigned int type = get_type ();
+ if (unlikely (type == SubTable::Extension))
+ return reinterpret_cast<const ExtensionSubst &> (get_subtable (0)).is_reverse ();
+ return lookup_type_is_reverse (type);
+ }
+
+ bool may_have_non_1to1 () const
+ {
+ hb_have_non_1to1_context_t c;
+ return dispatch (&c);
+ }
+
+ bool apply (hb_ot_apply_context_t *c) const
+ {
+ TRACE_APPLY (this);
+ return_trace (dispatch (c));
+ }
+
+ bool intersects (const hb_set_t *glyphs) const
+ {
+ hb_intersects_context_t c (glyphs);
+ return dispatch (&c);
+ }
+
+ hb_closure_context_t::return_t closure (hb_closure_context_t *c, unsigned int this_index) const
+ {
+ if (!c->should_visit_lookup (this_index))
+ return hb_closure_context_t::default_return_value ();
+
+ c->set_recurse_func (dispatch_closure_recurse_func);
+
+ hb_closure_context_t::return_t ret = dispatch (c);
+
+ c->flush ();
+
+ return ret;
+ }
+
+ hb_closure_lookups_context_t::return_t closure_lookups (hb_closure_lookups_context_t *c, unsigned this_index) const
+ {
+ if (c->is_lookup_visited (this_index))
+ return hb_closure_lookups_context_t::default_return_value ();
+
+ c->set_lookup_visited (this_index);
+ if (!intersects (c->glyphs))
+ {
+ c->set_lookup_inactive (this_index);
+ return hb_closure_lookups_context_t::default_return_value ();
+ }
+
+ c->set_recurse_func (dispatch_closure_lookups_recurse_func);
+
+ hb_closure_lookups_context_t::return_t ret = dispatch (c);
+ return ret;
+ }
+
+ hb_collect_glyphs_context_t::return_t collect_glyphs (hb_collect_glyphs_context_t *c) const
+ {
+ c->set_recurse_func (dispatch_recurse_func<hb_collect_glyphs_context_t>);
+ return dispatch (c);
+ }
+
+ template <typename set_t>
+ void collect_coverage (set_t *glyphs) const
+ {
+ hb_collect_coverage_context_t<set_t> c (glyphs);
+ dispatch (&c);
+ }
+
+ bool would_apply (hb_would_apply_context_t *c,
+ const hb_ot_layout_lookup_accelerator_t *accel) const
+ {
+ if (unlikely (!c->len)) return false;
+ if (!accel->may_have (c->glyphs[0])) return false;
+ return dispatch (c);
+ }
+
+ static inline bool apply_recurse_func (hb_ot_apply_context_t *c, unsigned int lookup_index);
+
+ bool serialize_single (hb_serialize_context_t *c,
+ uint32_t lookup_props,
+ hb_sorted_array_t<const HBGlyphID16> glyphs,
+ hb_array_t<const HBGlyphID16> substitutes)
+ {
+ TRACE_SERIALIZE (this);
+ if (unlikely (!Lookup::serialize (c, SubTable::Single, lookup_props, 1))) return_trace (false);
+ if (c->push<SubTable> ()->u.single.serialize (c, hb_zip (glyphs, substitutes)))
+ {
+ c->add_link (get_subtables<SubTable> ()[0], c->pop_pack ());
+ return_trace (true);
+ }
+ c->pop_discard ();
+ return_trace (false);
+ }
+
+ bool serialize_multiple (hb_serialize_context_t *c,
+ uint32_t lookup_props,
+ hb_sorted_array_t<const HBGlyphID16> glyphs,
+ hb_array_t<const unsigned int> substitute_len_list,
+ hb_array_t<const HBGlyphID16> substitute_glyphs_list)
+ {
+ TRACE_SERIALIZE (this);
+ if (unlikely (!Lookup::serialize (c, SubTable::Multiple, lookup_props, 1))) return_trace (false);
+ if (c->push<SubTable> ()->u.multiple.
+ serialize (c,
+ glyphs,
+ substitute_len_list,
+ substitute_glyphs_list))
+ {
+ c->add_link (get_subtables<SubTable> ()[0], c->pop_pack ());
+ return_trace (true);
+ }
+ c->pop_discard ();
+ return_trace (false);
+ }
+
+ bool serialize_alternate (hb_serialize_context_t *c,
+ uint32_t lookup_props,
+ hb_sorted_array_t<const HBGlyphID16> glyphs,
+ hb_array_t<const unsigned int> alternate_len_list,
+ hb_array_t<const HBGlyphID16> alternate_glyphs_list)
+ {
+ TRACE_SERIALIZE (this);
+ if (unlikely (!Lookup::serialize (c, SubTable::Alternate, lookup_props, 1))) return_trace (false);
+
+ if (c->push<SubTable> ()->u.alternate.
+ serialize (c,
+ glyphs,
+ alternate_len_list,
+ alternate_glyphs_list))
+ {
+ c->add_link (get_subtables<SubTable> ()[0], c->pop_pack ());
+ return_trace (true);
+ }
+ c->pop_discard ();
+ return_trace (false);
+ }
+
+ bool serialize_ligature (hb_serialize_context_t *c,
+ uint32_t lookup_props,
+ hb_sorted_array_t<const HBGlyphID16> first_glyphs,
+ hb_array_t<const unsigned int> ligature_per_first_glyph_count_list,
+ hb_array_t<const HBGlyphID16> ligatures_list,
+ hb_array_t<const unsigned int> component_count_list,
+ hb_array_t<const HBGlyphID16> component_list /* Starting from second for each ligature */)
+ {
+ TRACE_SERIALIZE (this);
+ if (unlikely (!Lookup::serialize (c, SubTable::Ligature, lookup_props, 1))) return_trace (false);
+ if (c->push<SubTable> ()->u.ligature.
+ serialize (c,
+ first_glyphs,
+ ligature_per_first_glyph_count_list,
+ ligatures_list,
+ component_count_list,
+ component_list))
+ {
+ c->add_link (get_subtables<SubTable> ()[0], c->pop_pack ());
+ return_trace (true);
+ }
+ c->pop_discard ();
+ return_trace (false);
+ }
+
+ template <typename context_t>
+ static inline typename context_t::return_t dispatch_recurse_func (context_t *c, unsigned int lookup_index);
+
+ static inline typename hb_closure_context_t::return_t closure_glyphs_recurse_func (hb_closure_context_t *c, unsigned lookup_index, hb_set_t *covered_seq_indices, unsigned seq_index, unsigned end_index);
+
+ static inline hb_closure_context_t::return_t dispatch_closure_recurse_func (hb_closure_context_t *c, unsigned lookup_index, hb_set_t *covered_seq_indices, unsigned seq_index, unsigned end_index)
+ {
+ if (!c->should_visit_lookup (lookup_index))
+ return hb_empty_t ();
+
+ hb_closure_context_t::return_t ret = closure_glyphs_recurse_func (c, lookup_index, covered_seq_indices, seq_index, end_index);
+
+ /* While in theory we should flush here, it will cause timeouts because a recursive
+ * lookup can keep growing the glyph set. Skip, and outer loop will retry up to
+ * HB_CLOSURE_MAX_STAGES time, which should be enough for every realistic font. */
+ //c->flush ();
+
+ return ret;
+ }
+
+ HB_INTERNAL static hb_closure_lookups_context_t::return_t dispatch_closure_lookups_recurse_func (hb_closure_lookups_context_t *c, unsigned lookup_index);
+
+ template <typename context_t, typename ...Ts>
+ typename context_t::return_t dispatch (context_t *c, Ts&&... ds) const
+ { return Lookup::dispatch<SubTable> (c, std::forward<Ts> (ds)...); }
+
+ bool subset (hb_subset_context_t *c) const
+ { return Lookup::subset<SubTable> (c); }
+};
+
+
+}
+}
+}
+
+#endif /* OT_LAYOUT_GSUB_SUBSTLOOKUP_HH */
diff --git a/thirdparty/harfbuzz/src/OT/Layout/GSUB/SubstLookupSubTable.hh b/thirdparty/harfbuzz/src/OT/Layout/GSUB/SubstLookupSubTable.hh
new file mode 100644
index 0000000000..53e963e2a2
--- /dev/null
+++ b/thirdparty/harfbuzz/src/OT/Layout/GSUB/SubstLookupSubTable.hh
@@ -0,0 +1,77 @@
+#ifndef OT_LAYOUT_GSUB_SUBSTLOOKUPSUBTABLE_HH
+#define OT_LAYOUT_GSUB_SUBSTLOOKUPSUBTABLE_HH
+
+#include "Common.hh"
+#include "SingleSubst.hh"
+#include "MultipleSubst.hh"
+#include "AlternateSubst.hh"
+#include "LigatureSubst.hh"
+#include "ContextSubst.hh"
+#include "ChainContextSubst.hh"
+#include "ExtensionSubst.hh"
+#include "ReverseChainSingleSubst.hh"
+
+namespace OT {
+namespace Layout {
+namespace GSUB {
+
+struct SubstLookupSubTable
+{
+ friend struct ::OT::Lookup;
+ friend struct SubstLookup;
+
+ protected:
+ union {
+ SingleSubst single;
+ MultipleSubst multiple;
+ AlternateSubst alternate;
+ LigatureSubst ligature;
+ ContextSubst context;
+ ChainContextSubst chainContext;
+ ExtensionSubst extension;
+ ReverseChainSingleSubst reverseChainContextSingle;
+ } u;
+ public:
+ DEFINE_SIZE_MIN (0);
+
+ enum Type {
+ Single = 1,
+ Multiple = 2,
+ Alternate = 3,
+ Ligature = 4,
+ Context = 5,
+ ChainContext = 6,
+ Extension = 7,
+ ReverseChainSingle = 8
+ };
+
+ template <typename context_t, typename ...Ts>
+ typename context_t::return_t dispatch (context_t *c, unsigned int lookup_type, Ts&&... ds) const
+ {
+ TRACE_DISPATCH (this, lookup_type);
+ switch (lookup_type) {
+ case Single: return_trace (u.single.dispatch (c, std::forward<Ts> (ds)...));
+ case Multiple: return_trace (u.multiple.dispatch (c, std::forward<Ts> (ds)...));
+ case Alternate: return_trace (u.alternate.dispatch (c, std::forward<Ts> (ds)...));
+ case Ligature: return_trace (u.ligature.dispatch (c, std::forward<Ts> (ds)...));
+ case Context: return_trace (u.context.dispatch (c, std::forward<Ts> (ds)...));
+ case ChainContext: return_trace (u.chainContext.dispatch (c, std::forward<Ts> (ds)...));
+ case Extension: return_trace (u.extension.dispatch (c, std::forward<Ts> (ds)...));
+ case ReverseChainSingle: return_trace (u.reverseChainContextSingle.dispatch (c, std::forward<Ts> (ds)...));
+ default: return_trace (c->default_return_value ());
+ }
+ }
+
+ bool intersects (const hb_set_t *glyphs, unsigned int lookup_type) const
+ {
+ hb_intersects_context_t c (glyphs);
+ return dispatch (&c, lookup_type);
+ }
+};
+
+
+}
+}
+}
+
+#endif /* HB_OT_LAYOUT_GSUB_SUBSTLOOKUPSUBTABLE_HH */
diff --git a/thirdparty/harfbuzz/src/hb-bit-page.hh b/thirdparty/harfbuzz/src/hb-bit-page.hh
index 263be3d044..9759836654 100644
--- a/thirdparty/harfbuzz/src/hb-bit-page.hh
+++ b/thirdparty/harfbuzz/src/hb-bit-page.hh
@@ -86,6 +86,72 @@ struct hb_bit_page_t
void set_range (hb_codepoint_t a, hb_codepoint_t b, bool v)
{ if (v) add_range (a, b); else del_range (a, b); }
+
+ // Writes out page values to the array p. Returns the number of values
+ // written. At most size codepoints will be written.
+ unsigned int write (uint32_t base,
+ unsigned int start_value,
+ hb_codepoint_t *p,
+ unsigned int size) const
+ {
+ unsigned int start_v = start_value >> ELT_BITS_LOG_2;
+ unsigned int start_bit = start_value & ELT_MASK;
+ unsigned int count = 0;
+ for (unsigned i = start_v; i < len () && count < size; i++)
+ {
+ elt_t bits = v[i];
+ uint32_t v_base = base | (i << ELT_BITS_LOG_2);
+ for (unsigned int j = start_bit; j < ELT_BITS && count < size; j++)
+ {
+ if ((elt_t(1) << j) & bits) {
+ *p++ = v_base | j;
+ count++;
+ }
+ }
+ start_bit = 0;
+ }
+ return count;
+ }
+
+ // Writes out the values NOT in this page to the array p. Returns the
+ // number of values written. At most size codepoints will be written.
+ // Returns the number of codepoints written. next_value holds the next value
+ // that should be written (if not present in this page). This is used to fill
+ // any missing value gaps between this page and the previous page, if any.
+ // next_value is updated to one more than the last value present in this page.
+ unsigned int write_inverted (uint32_t base,
+ unsigned int start_value,
+ hb_codepoint_t *p,
+ unsigned int size,
+ hb_codepoint_t *next_value) const
+ {
+ unsigned int start_v = start_value >> ELT_BITS_LOG_2;
+ unsigned int start_bit = start_value & ELT_MASK;
+ unsigned int count = 0;
+ for (unsigned i = start_v; i < len () && count < size; i++)
+ {
+ elt_t bits = v[i];
+ uint32_t v_offset = i << ELT_BITS_LOG_2;
+ for (unsigned int j = start_bit; j < ELT_BITS && count < size; j++)
+ {
+ if ((elt_t(1) << j) & bits)
+ {
+ hb_codepoint_t value = base | v_offset | j;
+ // Emit all the missing values from next_value up to value - 1.
+ for (hb_codepoint_t k = *next_value; k < value && count < size; k++)
+ {
+ *p++ = k;
+ count++;
+ }
+ // Skip over this value;
+ *next_value = value + 1;
+ }
+ }
+ start_bit = 0;
+ }
+ return count;
+ }
+
bool is_equal (const hb_bit_page_t &other) const
{
return 0 == hb_memcmp (&v, &other.v, sizeof (v));
@@ -179,6 +245,9 @@ struct hb_bit_page_t
typedef unsigned long long elt_t;
static constexpr unsigned PAGE_BITS = 512;
static_assert ((PAGE_BITS & ((PAGE_BITS) - 1)) == 0, "");
+ static constexpr unsigned PAGE_BITS_LOG_2 = 9;
+ static_assert (1 << PAGE_BITS_LOG_2 == PAGE_BITS, "");
+ static constexpr unsigned PAGE_BITMASK = PAGE_BITS - 1;
static unsigned int elt_get_min (const elt_t &elt) { return hb_ctz (elt); }
static unsigned int elt_get_max (const elt_t &elt) { return hb_bit_storage (elt) - 1; }
@@ -186,7 +255,10 @@ struct hb_bit_page_t
typedef hb_vector_size_t<elt_t, PAGE_BITS / 8> vector_t;
static constexpr unsigned ELT_BITS = sizeof (elt_t) * 8;
+ static constexpr unsigned ELT_BITS_LOG_2 = 6;
+ static_assert (1 << ELT_BITS_LOG_2 == ELT_BITS, "");
static constexpr unsigned ELT_MASK = ELT_BITS - 1;
+
static constexpr unsigned BITS = sizeof (vector_t) * 8;
static constexpr unsigned MASK = BITS - 1;
static_assert ((unsigned) PAGE_BITS == (unsigned) BITS, "");
diff --git a/thirdparty/harfbuzz/src/hb-bit-set-invertible.hh b/thirdparty/harfbuzz/src/hb-bit-set-invertible.hh
index 0832b0fc23..4a4ce34053 100644
--- a/thirdparty/harfbuzz/src/hb-bit-set-invertible.hh
+++ b/thirdparty/harfbuzz/src/hb-bit-set-invertible.hh
@@ -323,6 +323,14 @@ struct hb_bit_set_invertible_t
return true;
}
+ unsigned int next_many (hb_codepoint_t codepoint,
+ hb_codepoint_t *out,
+ unsigned int size) const
+ {
+ return inverted ? s.next_many_inverted (codepoint, out, size)
+ : s.next_many (codepoint, out, size);
+ }
+
static constexpr hb_codepoint_t INVALID = hb_bit_set_t::INVALID;
/*
diff --git a/thirdparty/harfbuzz/src/hb-bit-set.hh b/thirdparty/harfbuzz/src/hb-bit-set.hh
index a471ee48b5..fcaff9f3be 100644
--- a/thirdparty/harfbuzz/src/hb-bit-set.hh
+++ b/thirdparty/harfbuzz/src/hb-bit-set.hh
@@ -203,7 +203,7 @@ struct hb_bit_set_t
bool set_sorted_array (bool v, const T *array, unsigned int count, unsigned int stride=sizeof(T))
{
if (unlikely (!successful)) return true; /* https://github.com/harfbuzz/harfbuzz/issues/657 */
- if (!count) return true;
+ if (unlikely (!count)) return true;
dirty ();
hb_codepoint_t g = *array;
hb_codepoint_t last_g = g;
@@ -222,7 +222,7 @@ struct hb_bit_set_t
if (v || page) /* The v check is to optimize out the page check if v is true. */
page->add (g);
- array = (const T *) ((const char *) array + stride);
+ array = &StructAtOffsetUnaligned<T> (array, stride);
count--;
}
while (count && (g = *array, g < end));
@@ -700,6 +700,99 @@ struct hb_bit_set_t
return true;
}
+ unsigned int next_many (hb_codepoint_t codepoint,
+ hb_codepoint_t *out,
+ unsigned int size) const
+ {
+ // By default, start at the first bit of the first page of values.
+ unsigned int start_page = 0;
+ unsigned int start_page_value = 0;
+ if (unlikely (codepoint != INVALID))
+ {
+ const auto* page_map_array = page_map.arrayZ;
+ unsigned int major = get_major (codepoint);
+ unsigned int i = last_page_lookup;
+ if (unlikely (i >= page_map.length || page_map_array[i].major != major))
+ {
+ page_map.bfind (major, &i, HB_NOT_FOUND_STORE_CLOSEST);
+ if (i >= page_map.length)
+ return 0; // codepoint is greater than our max element.
+ }
+ start_page = i;
+ start_page_value = page_remainder (codepoint + 1);
+ if (unlikely (start_page_value == 0))
+ {
+ // The export-after value was last in the page. Start on next page.
+ start_page++;
+ start_page_value = 0;
+ }
+ }
+
+ unsigned int initial_size = size;
+ for (unsigned int i = start_page; i < page_map.length && size; i++)
+ {
+ uint32_t base = major_start (page_map[i].major);
+ unsigned int n = pages[page_map[i].index].write (base, start_page_value, out, size);
+ out += n;
+ size -= n;
+ start_page_value = 0;
+ }
+ return initial_size - size;
+ }
+
+ unsigned int next_many_inverted (hb_codepoint_t codepoint,
+ hb_codepoint_t *out,
+ unsigned int size) const
+ {
+ unsigned int initial_size = size;
+ // By default, start at the first bit of the first page of values.
+ unsigned int start_page = 0;
+ unsigned int start_page_value = 0;
+ if (unlikely (codepoint != INVALID))
+ {
+ const auto* page_map_array = page_map.arrayZ;
+ unsigned int major = get_major (codepoint);
+ unsigned int i = last_page_lookup;
+ if (unlikely (i >= page_map.length || page_map_array[i].major != major))
+ {
+ page_map.bfind(major, &i, HB_NOT_FOUND_STORE_CLOSEST);
+ if (unlikely (i >= page_map.length))
+ {
+ // codepoint is greater than our max element.
+ while (++codepoint != INVALID && size)
+ {
+ *out++ = codepoint;
+ size--;
+ }
+ return initial_size - size;
+ }
+ }
+ start_page = i;
+ start_page_value = page_remainder (codepoint + 1);
+ if (unlikely (start_page_value == 0))
+ {
+ // The export-after value was last in the page. Start on next page.
+ start_page++;
+ start_page_value = 0;
+ }
+ }
+
+ hb_codepoint_t next_value = codepoint + 1;
+ for (unsigned int i=start_page; i<page_map.length && size; i++)
+ {
+ uint32_t base = major_start (page_map[i].major);
+ unsigned int n = pages[page_map[i].index].write_inverted (base, start_page_value, out, size, &next_value);
+ out += n;
+ size -= n;
+ start_page_value = 0;
+ }
+ while (next_value < HB_SET_VALUE_INVALID && size) {
+ *out++ = next_value++;
+ size--;
+ }
+ return initial_size - size;
+ }
+
bool has_population () const { return population != UINT_MAX; }
unsigned int get_population () const
{
@@ -809,8 +902,9 @@ struct hb_bit_set_t
}
page_t &page_at (unsigned int i) { return pages[page_map[i].index]; }
const page_t &page_at (unsigned int i) const { return pages[page_map[i].index]; }
- unsigned int get_major (hb_codepoint_t g) const { return g / page_t::PAGE_BITS; }
- hb_codepoint_t major_start (unsigned int major) const { return major * page_t::PAGE_BITS; }
+ unsigned int get_major (hb_codepoint_t g) const { return g >> page_t::PAGE_BITS_LOG_2; }
+ unsigned int page_remainder (hb_codepoint_t g) const { return g & page_t::PAGE_BITMASK; }
+ hb_codepoint_t major_start (unsigned int major) const { return major << page_t::PAGE_BITS_LOG_2; }
};
diff --git a/thirdparty/harfbuzz/src/hb-buffer.cc b/thirdparty/harfbuzz/src/hb-buffer.cc
index d36fcfde39..6a9ee3ccc8 100644
--- a/thirdparty/harfbuzz/src/hb-buffer.cc
+++ b/thirdparty/harfbuzz/src/hb-buffer.cc
@@ -295,7 +295,6 @@ hb_buffer_t::clear ()
idx = 0;
len = 0;
out_len = 0;
-
out_info = info;
memset (context, 0, sizeof context);
@@ -405,6 +404,7 @@ hb_buffer_t::sync ()
reset:
have_output = false;
out_len = 0;
+ out_info = info;
idx = 0;
}
diff --git a/thirdparty/harfbuzz/src/hb-coretext.cc b/thirdparty/harfbuzz/src/hb-coretext.cc
index 5f383064c4..6ccc1b0a2b 100644
--- a/thirdparty/harfbuzz/src/hb-coretext.cc
+++ b/thirdparty/harfbuzz/src/hb-coretext.cc
@@ -897,7 +897,7 @@ resize_and_retry:
DEBUG_MSG (CORETEXT, nullptr, "Num runs: %d", num_runs);
buffer->len = 0;
- uint32_t status_and = ~0, status_or = 0;
+ uint32_t status_or = 0;
CGFloat advances_so_far = 0;
/* For right-to-left runs, CoreText returns the glyphs positioned such that
* any trailing whitespace is to the left of (0,0). Adjust coordinate system
@@ -918,7 +918,6 @@ resize_and_retry:
CTRunRef run = static_cast<CTRunRef>(CFArrayGetValueAtIndex (glyph_runs, i));
CTRunStatus run_status = CTRunGetStatus (run);
status_or |= run_status;
- status_and &= run_status;
DEBUG_MSG (CORETEXT, run, "CTRunStatus: %x", run_status);
CGFloat run_advance = CTRunGetTypographicBounds (run, range_all, nullptr, nullptr, nullptr);
if (HB_DIRECTION_IS_VERTICAL (buffer->props.direction))
@@ -1140,21 +1139,6 @@ resize_and_retry:
buffer->len += num_glyphs;
}
- /* Mac OS 10.6 doesn't have kCTTypesetterOptionForcedEmbeddingLevel,
- * or if it does, it doesn't respect it. So we get runs with wrong
- * directions. As such, disable the assert... It wouldn't crash, but
- * cursoring will be off...
- *
- * https://crbug.com/419769
- */
- if (false)
- {
- /* Make sure all runs had the expected direction. */
- HB_UNUSED bool backward = HB_DIRECTION_IS_BACKWARD (buffer->props.direction);
- assert (bool (status_and & kCTRunStatusRightToLeft) == backward);
- assert (bool (status_or & kCTRunStatusRightToLeft) == backward);
- }
-
buffer->clear_positions ();
unsigned int count = buffer->len;
diff --git a/thirdparty/harfbuzz/src/hb-ft.cc b/thirdparty/harfbuzz/src/hb-ft.cc
index 40311e1b91..0cfbb22e31 100644
--- a/thirdparty/harfbuzz/src/hb-ft.cc
+++ b/thirdparty/harfbuzz/src/hb-ft.cc
@@ -382,6 +382,7 @@ hb_ft_get_glyph_v_advance (hb_font_t *font,
/* Note: FreeType's vertical metrics grows downward while other FreeType coordinates
* have a Y growing upward. Hence the extra negation. */
+
return (-v + (1<<9)) >> 10;
}
#endif
diff --git a/thirdparty/harfbuzz/src/hb-ot-cmap-table.hh b/thirdparty/harfbuzz/src/hb-ot-cmap-table.hh
index fde57cdc5b..a8747ee5a1 100644
--- a/thirdparty/harfbuzz/src/hb-ot-cmap-table.hh
+++ b/thirdparty/harfbuzz/src/hb-ot-cmap-table.hh
@@ -714,7 +714,7 @@ struct CmapSubtableLongSegmented
if (unlikely ((unsigned int) (gid + end - start) >= num_glyphs))
end = start + (hb_codepoint_t) num_glyphs - gid;
- out->add_range (start, end);
+ out->add_range (start, hb_min (end, 0x10FFFFu));
}
}
@@ -883,7 +883,7 @@ struct DefaultUVS : SortedArray32Of<UnicodeValueRange>
hb_codepoint_t first = arrayZ[i].startUnicodeValue;
hb_codepoint_t last = hb_min ((hb_codepoint_t) (first + arrayZ[i].additionalCount),
(hb_codepoint_t) HB_UNICODE_MAX);
- out->add_range (first, last);
+ out->add_range (first, hb_min (last, 0x10FFFFu));
}
}
diff --git a/thirdparty/harfbuzz/src/hb-ot-font.cc b/thirdparty/harfbuzz/src/hb-ot-font.cc
index 77d3f639db..0f44ee4d5f 100644
--- a/thirdparty/harfbuzz/src/hb-ot-font.cc
+++ b/thirdparty/harfbuzz/src/hb-ot-font.cc
@@ -131,11 +131,25 @@ hb_ot_get_glyph_v_advances (hb_font_t* font, void* font_data,
const hb_ot_face_t *ot_face = (const hb_ot_face_t *) font_data;
const OT::vmtx_accelerator_t &vmtx = *ot_face->vmtx;
- for (unsigned int i = 0; i < count; i++)
+ if (vmtx.has_data ())
+ for (unsigned int i = 0; i < count; i++)
+ {
+ *first_advance = font->em_scale_y (-(int) vmtx.get_advance (*first_glyph, font));
+ first_glyph = &StructAtOffsetUnaligned<hb_codepoint_t> (first_glyph, glyph_stride);
+ first_advance = &StructAtOffsetUnaligned<hb_position_t> (first_advance, advance_stride);
+ }
+ else
{
- *first_advance = font->em_scale_y (-(int) vmtx.get_advance (*first_glyph, font));
- first_glyph = &StructAtOffsetUnaligned<hb_codepoint_t> (first_glyph, glyph_stride);
- first_advance = &StructAtOffsetUnaligned<hb_position_t> (first_advance, advance_stride);
+ hb_font_extents_t font_extents;
+ font->get_h_extents_with_fallback (&font_extents);
+ hb_position_t advance = -(font_extents.ascender - font_extents.descender);
+
+ for (unsigned int i = 0; i < count; i++)
+ {
+ *first_advance = advance;
+ first_glyph = &StructAtOffsetUnaligned<hb_codepoint_t> (first_glyph, glyph_stride);
+ first_advance = &StructAtOffsetUnaligned<hb_position_t> (first_advance, advance_stride);
+ }
}
}
#endif
@@ -163,9 +177,19 @@ hb_ot_get_glyph_v_origin (hb_font_t *font,
hb_glyph_extents_t extents = {0};
if (ot_face->glyf->get_extents (font, glyph, &extents))
{
- const OT::vmtx_accelerator_t &vmtx = *ot_face->vmtx;
- hb_position_t tsb = vmtx.get_side_bearing (font, glyph);
- *y = extents.y_bearing + font->em_scale_y (tsb);
+ if (ot_face->vmtx->has_data ())
+ {
+ const OT::vmtx_accelerator_t &vmtx = *ot_face->vmtx;
+ hb_position_t tsb = vmtx.get_side_bearing (font, glyph);
+ *y = extents.y_bearing + font->em_scale_y (tsb);
+ return true;
+ }
+
+ hb_font_extents_t font_extents;
+ font->get_h_extents_with_fallback (&font_extents);
+ hb_position_t advance = font_extents.ascender - font_extents.descender;
+ int diff = advance - -extents.height;
+ *y = extents.y_bearing + (diff >> 1);
return true;
}
diff --git a/thirdparty/harfbuzz/src/hb-ot-glyf-table.hh b/thirdparty/harfbuzz/src/hb-ot-glyf-table.hh
index 066e152da3..b4ac688344 100644
--- a/thirdparty/harfbuzz/src/hb-ot-glyf-table.hh
+++ b/thirdparty/harfbuzz/src/hb-ot-glyf-table.hh
@@ -820,8 +820,7 @@ struct glyf
}
#ifndef HB_NO_VAR
- if (unlikely (!glyf_accelerator.gvar->apply_deltas_to_points (gid, font, points.as_array ())))
- return false;
+ glyf_accelerator.gvar->apply_deltas_to_points (gid, font, points.as_array ());
#endif
switch (type) {
diff --git a/thirdparty/harfbuzz/src/hb-ot-hmtx-table.hh b/thirdparty/harfbuzz/src/hb-ot-hmtx-table.hh
index 7487e40e6d..d5e1fc91d2 100644
--- a/thirdparty/harfbuzz/src/hb-ot-hmtx-table.hh
+++ b/thirdparty/harfbuzz/src/hb-ot-hmtx-table.hh
@@ -170,13 +170,12 @@ struct hmtxvmtx
{
friend struct hmtxvmtx;
- accelerator_t (hb_face_t *face,
- unsigned int default_advance_ = 0)
+ accelerator_t (hb_face_t *face)
{
table = hb_sanitize_context_t ().reference_table<hmtxvmtx> (face, T::tableTag);
var_table = hb_sanitize_context_t ().reference_table<HVARVVAR> (face, T::variationsTag);
- default_advance = default_advance_ ? default_advance_ : hb_face_get_upem (face);
+ default_advance = T::is_horizontal ? hb_face_get_upem (face) / 2 : hb_face_get_upem (face);
/* Populate count variables and sort them out as we go */
@@ -220,6 +219,8 @@ struct hmtxvmtx
var_table.destroy ();
}
+ bool has_data () const { return (bool) num_bearings; }
+
int get_side_bearing (hb_codepoint_t glyph) const
{
if (glyph < num_long_metrics)
diff --git a/thirdparty/harfbuzz/src/hb-ot-layout-common.hh b/thirdparty/harfbuzz/src/hb-ot-layout-common.hh
index 60a1906155..f2a58028e3 100644
--- a/thirdparty/harfbuzz/src/hb-ot-layout-common.hh
+++ b/thirdparty/harfbuzz/src/hb-ot-layout-common.hh
@@ -37,7 +37,7 @@
#ifndef HB_MAX_NESTING_LEVEL
-#define HB_MAX_NESTING_LEVEL 6
+#define HB_MAX_NESTING_LEVEL 64
#endif
#ifndef HB_MAX_CONTEXT_LENGTH
#define HB_MAX_CONTEXT_LENGTH 64
@@ -60,6 +60,10 @@
#define HB_MAX_LANGSYS 2000
#endif
+#ifndef HB_MAX_LANGSYS_FEATURE_COUNT
+#define HB_MAX_LANGSYS_FEATURE_COUNT 50000
+#endif
+
#ifndef HB_MAX_FEATURES
#define HB_MAX_FEATURES 750
#endif
@@ -105,34 +109,15 @@ struct hb_prune_langsys_context_t
script_langsys_map (script_langsys_map_),
duplicate_feature_map (duplicate_feature_map_),
new_feature_indexes (new_collected_feature_indexes_),
- script_count (0),langsys_count (0) {}
+ script_count (0),langsys_feature_count (0) {}
- bool visitedScript (const void *s)
- {
- if (script_count++ > HB_MAX_SCRIPTS)
- return true;
-
- return visited (s, visited_script);
- }
+ bool visitScript ()
+ { return script_count++ < HB_MAX_SCRIPTS; }
- bool visitedLangsys (const void *l)
+ bool visitLangsys (unsigned feature_count)
{
- if (langsys_count++ > HB_MAX_LANGSYS)
- return true;
-
- return visited (l, visited_langsys);
- }
-
- private:
- template <typename T>
- bool visited (const T *p, hb_set_t &visited_set)
- {
- hb_codepoint_t delta = (hb_codepoint_t) ((uintptr_t) p - (uintptr_t) table);
- if (visited_set.in_error () || visited_set.has (delta))
- return true;
-
- visited_set.add (delta);
- return false;
+ langsys_feature_count += feature_count;
+ return langsys_feature_count < HB_MAX_LANGSYS_FEATURE_COUNT;
}
public:
@@ -142,10 +127,8 @@ struct hb_prune_langsys_context_t
hb_set_t *new_feature_indexes;
private:
- hb_set_t visited_script;
- hb_set_t visited_langsys;
unsigned script_count;
- unsigned langsys_count;
+ unsigned langsys_feature_count;
};
struct hb_subset_layout_context_t :
@@ -643,11 +626,14 @@ struct LangSys
| hb_map (feature_index_map)
;
- if (iter.len () != o_iter.len ())
- return false;
+ for (; iter && o_iter; iter++, o_iter++)
+ {
+ unsigned a = *iter;
+ unsigned b = *o_iter;
+ if (a != b) return false;
+ }
- for (const auto _ : + hb_zip (iter, o_iter))
- if (_.first != _.second) return false;
+ if (iter || o_iter) return false;
return true;
}
@@ -732,7 +718,7 @@ struct Script
unsigned script_index) const
{
if (!has_default_lang_sys () && !get_lang_sys_count ()) return;
- if (c->visitedScript (this)) return;
+ if (!c->visitScript ()) return;
if (!c->script_langsys_map->has (script_index))
{
@@ -749,15 +735,14 @@ struct Script
{
//only collect features from non-redundant langsys
const LangSys& d = get_default_lang_sys ();
- if (!c->visitedLangsys (&d)) {
+ if (c->visitLangsys (d.get_feature_count ())) {
d.collect_features (c);
}
for (auto _ : + hb_zip (langSys, hb_range (langsys_count)))
{
-
const LangSys& l = this+_.first.offset;
- if (c->visitedLangsys (&l)) continue;
+ if (!c->visitLangsys (l.get_feature_count ())) continue;
if (l.compare (d, c->duplicate_feature_map)) continue;
l.collect_features (c);
@@ -769,7 +754,7 @@ struct Script
for (auto _ : + hb_zip (langSys, hb_range (langsys_count)))
{
const LangSys& l = this+_.first.offset;
- if (c->visitedLangsys (&l)) continue;
+ if (!c->visitLangsys (l.get_feature_count ())) continue;
l.collect_features (c);
c->script_langsys_map->get (script_index)->add (_.second);
}
diff --git a/thirdparty/harfbuzz/src/hb-ot-layout-gsub-table.hh b/thirdparty/harfbuzz/src/hb-ot-layout-gsub-table.hh
index 0b0bc547bd..bef381430b 100644
--- a/thirdparty/harfbuzz/src/hb-ot-layout-gsub-table.hh
+++ b/thirdparty/harfbuzz/src/hb-ot-layout-gsub-table.hh
@@ -29,1727 +29,14 @@
#ifndef HB_OT_LAYOUT_GSUB_TABLE_HH
#define HB_OT_LAYOUT_GSUB_TABLE_HH
-#include "hb-ot-layout-gsubgpos.hh"
-
+#include "OT/Layout/GSUB/GSUB.hh"
namespace OT {
-typedef hb_pair_t<hb_codepoint_t, hb_codepoint_t> hb_codepoint_pair_t;
-
-template<typename Iterator>
-static void SingleSubst_serialize (hb_serialize_context_t *c,
- Iterator it);
-
-
-struct SingleSubstFormat1
-{
- bool intersects (const hb_set_t *glyphs) const
- { return (this+coverage).intersects (glyphs); }
-
- bool may_have_non_1to1 () const
- { return false; }
-
- void closure (hb_closure_context_t *c) const
- {
- unsigned d = deltaGlyphID;
-
- + hb_iter (this+coverage)
- | hb_filter (c->parent_active_glyphs ())
- | hb_map ([d] (hb_codepoint_t g) { return (g + d) & 0xFFFFu; })
- | hb_sink (c->output)
- ;
-
- }
-
- void closure_lookups (hb_closure_lookups_context_t *c) const {}
-
- void collect_glyphs (hb_collect_glyphs_context_t *c) const
- {
- if (unlikely (!(this+coverage).collect_coverage (c->input))) return;
- unsigned d = deltaGlyphID;
- + hb_iter (this+coverage)
- | hb_map ([d] (hb_codepoint_t g) { return (g + d) & 0xFFFFu; })
- | hb_sink (c->output)
- ;
- }
-
- const Coverage &get_coverage () const { return this+coverage; }
-
- bool would_apply (hb_would_apply_context_t *c) const
- { return c->len == 1 && (this+coverage).get_coverage (c->glyphs[0]) != NOT_COVERED; }
-
- bool apply (hb_ot_apply_context_t *c) const
- {
- TRACE_APPLY (this);
- hb_codepoint_t glyph_id = c->buffer->cur().codepoint;
- unsigned int index = (this+coverage).get_coverage (glyph_id);
- if (likely (index == NOT_COVERED)) return_trace (false);
-
- /* According to the Adobe Annotated OpenType Suite, result is always
- * limited to 16bit. */
- glyph_id = (glyph_id + deltaGlyphID) & 0xFFFFu;
- c->replace_glyph (glyph_id);
-
- return_trace (true);
- }
-
- template<typename Iterator,
- hb_requires (hb_is_sorted_source_of (Iterator, hb_codepoint_t))>
- bool serialize (hb_serialize_context_t *c,
- Iterator glyphs,
- unsigned delta)
- {
- TRACE_SERIALIZE (this);
- if (unlikely (!c->extend_min (this))) return_trace (false);
- if (unlikely (!coverage.serialize_serialize (c, glyphs))) return_trace (false);
- c->check_assign (deltaGlyphID, delta, HB_SERIALIZE_ERROR_INT_OVERFLOW);
- return_trace (true);
- }
-
- bool subset (hb_subset_context_t *c) const
- {
- TRACE_SUBSET (this);
- const hb_set_t &glyphset = *c->plan->glyphset_gsub ();
- const hb_map_t &glyph_map = *c->plan->glyph_map;
-
- hb_codepoint_t delta = deltaGlyphID;
-
- auto it =
- + hb_iter (this+coverage)
- | hb_filter (glyphset)
- | hb_map_retains_sorting ([&] (hb_codepoint_t g) {
- return hb_codepoint_pair_t (g,
- (g + delta) & 0xFFFF); })
- | hb_filter (glyphset, hb_second)
- | hb_map_retains_sorting ([&] (hb_codepoint_pair_t p) -> hb_codepoint_pair_t
- { return hb_pair (glyph_map[p.first], glyph_map[p.second]); })
- ;
-
- bool ret = bool (it);
- SingleSubst_serialize (c->serializer, it);
- return_trace (ret);
- }
-
- bool sanitize (hb_sanitize_context_t *c) const
- {
- TRACE_SANITIZE (this);
- return_trace (coverage.sanitize (c, this) && deltaGlyphID.sanitize (c));
- }
-
- protected:
- HBUINT16 format; /* Format identifier--format = 1 */
- Offset16To<Coverage>
- coverage; /* Offset to Coverage table--from
- * beginning of Substitution table */
- HBUINT16 deltaGlyphID; /* Add to original GlyphID to get
- * substitute GlyphID, modulo 0x10000 */
- public:
- DEFINE_SIZE_STATIC (6);
-};
-
-struct SingleSubstFormat2
-{
- bool intersects (const hb_set_t *glyphs) const
- { return (this+coverage).intersects (glyphs); }
-
- bool may_have_non_1to1 () const
- { return false; }
-
- void closure (hb_closure_context_t *c) const
- {
- + hb_zip (this+coverage, substitute)
- | hb_filter (c->parent_active_glyphs (), hb_first)
- | hb_map (hb_second)
- | hb_sink (c->output)
- ;
-
- }
-
- void closure_lookups (hb_closure_lookups_context_t *c) const {}
-
- void collect_glyphs (hb_collect_glyphs_context_t *c) const
- {
- if (unlikely (!(this+coverage).collect_coverage (c->input))) return;
- + hb_zip (this+coverage, substitute)
- | hb_map (hb_second)
- | hb_sink (c->output)
- ;
- }
-
- const Coverage &get_coverage () const { return this+coverage; }
-
- bool would_apply (hb_would_apply_context_t *c) const
- { return c->len == 1 && (this+coverage).get_coverage (c->glyphs[0]) != NOT_COVERED; }
-
- bool apply (hb_ot_apply_context_t *c) const
- {
- TRACE_APPLY (this);
- unsigned int index = (this+coverage).get_coverage (c->buffer->cur().codepoint);
- if (likely (index == NOT_COVERED)) return_trace (false);
-
- if (unlikely (index >= substitute.len)) return_trace (false);
-
- c->replace_glyph (substitute[index]);
-
- return_trace (true);
- }
-
- template<typename Iterator,
- hb_requires (hb_is_sorted_source_of (Iterator,
- hb_codepoint_pair_t))>
- bool serialize (hb_serialize_context_t *c,
- Iterator it)
- {
- TRACE_SERIALIZE (this);
- auto substitutes =
- + it
- | hb_map (hb_second)
- ;
- auto glyphs =
- + it
- | hb_map_retains_sorting (hb_first)
- ;
- if (unlikely (!c->extend_min (this))) return_trace (false);
- if (unlikely (!substitute.serialize (c, substitutes))) return_trace (false);
- if (unlikely (!coverage.serialize_serialize (c, glyphs))) return_trace (false);
- return_trace (true);
- }
-
- bool subset (hb_subset_context_t *c) const
- {
- TRACE_SUBSET (this);
- const hb_set_t &glyphset = *c->plan->glyphset_gsub ();
- const hb_map_t &glyph_map = *c->plan->glyph_map;
-
- auto it =
- + hb_zip (this+coverage, substitute)
- | hb_filter (glyphset, hb_first)
- | hb_filter (glyphset, hb_second)
- | hb_map_retains_sorting ([&] (hb_pair_t<hb_codepoint_t, const HBGlyphID16 &> p) -> hb_codepoint_pair_t
- { return hb_pair (glyph_map[p.first], glyph_map[p.second]); })
- ;
-
- bool ret = bool (it);
- SingleSubst_serialize (c->serializer, it);
- return_trace (ret);
- }
-
- bool sanitize (hb_sanitize_context_t *c) const
- {
- TRACE_SANITIZE (this);
- return_trace (coverage.sanitize (c, this) && substitute.sanitize (c));
- }
-
- protected:
- HBUINT16 format; /* Format identifier--format = 2 */
- Offset16To<Coverage>
- coverage; /* Offset to Coverage table--from
- * beginning of Substitution table */
- Array16Of<HBGlyphID16>
- substitute; /* Array of substitute
- * GlyphIDs--ordered by Coverage Index */
- public:
- DEFINE_SIZE_ARRAY (6, substitute);
-};
-
-struct SingleSubst
-{
-
- template<typename Iterator,
- hb_requires (hb_is_sorted_source_of (Iterator,
- const hb_codepoint_pair_t))>
- bool serialize (hb_serialize_context_t *c,
- Iterator glyphs)
- {
- TRACE_SERIALIZE (this);
- if (unlikely (!c->extend_min (u.format))) return_trace (false);
- unsigned format = 2;
- unsigned delta = 0;
- if (glyphs)
- {
- format = 1;
- auto get_delta = [=] (hb_codepoint_pair_t _)
- { return (unsigned) (_.second - _.first) & 0xFFFF; };
- delta = get_delta (*glyphs);
- if (!hb_all (++(+glyphs), delta, get_delta)) format = 2;
- }
- u.format = format;
- switch (u.format) {
- case 1: return_trace (u.format1.serialize (c,
- + glyphs
- | hb_map_retains_sorting (hb_first),
- delta));
- case 2: return_trace (u.format2.serialize (c, glyphs));
- default:return_trace (false);
- }
- }
-
- template <typename context_t, typename ...Ts>
- typename context_t::return_t dispatch (context_t *c, Ts&&... ds) const
- {
- TRACE_DISPATCH (this, u.format);
- if (unlikely (!c->may_dispatch (this, &u.format))) return_trace (c->no_dispatch_return_value ());
- switch (u.format) {
- case 1: return_trace (c->dispatch (u.format1, std::forward<Ts> (ds)...));
- case 2: return_trace (c->dispatch (u.format2, std::forward<Ts> (ds)...));
- default:return_trace (c->default_return_value ());
- }
- }
-
- protected:
- union {
- HBUINT16 format; /* Format identifier */
- SingleSubstFormat1 format1;
- SingleSubstFormat2 format2;
- } u;
-};
-
-template<typename Iterator>
-static void
-SingleSubst_serialize (hb_serialize_context_t *c,
- Iterator it)
-{ c->start_embed<SingleSubst> ()->serialize (c, it); }
-
-struct Sequence
-{
- bool intersects (const hb_set_t *glyphs) const
- { return hb_all (substitute, glyphs); }
-
- void closure (hb_closure_context_t *c) const
- { c->output->add_array (substitute.arrayZ, substitute.len); }
-
- void collect_glyphs (hb_collect_glyphs_context_t *c) const
- { c->output->add_array (substitute.arrayZ, substitute.len); }
-
- bool apply (hb_ot_apply_context_t *c) const
- {
- TRACE_APPLY (this);
- unsigned int count = substitute.len;
-
- /* Special-case to make it in-place and not consider this
- * as a "multiplied" substitution. */
- if (unlikely (count == 1))
- {
- c->replace_glyph (substitute.arrayZ[0]);
- return_trace (true);
- }
- /* Spec disallows this, but Uniscribe allows it.
- * https://github.com/harfbuzz/harfbuzz/issues/253 */
- else if (unlikely (count == 0))
- {
- c->buffer->delete_glyph ();
- return_trace (true);
- }
-
- unsigned int klass = _hb_glyph_info_is_ligature (&c->buffer->cur()) ?
- HB_OT_LAYOUT_GLYPH_PROPS_BASE_GLYPH : 0;
- unsigned lig_id = _hb_glyph_info_get_lig_id (&c->buffer->cur());
-
- for (unsigned int i = 0; i < count; i++)
- {
- /* If is attached to a ligature, don't disturb that.
- * https://github.com/harfbuzz/harfbuzz/issues/3069 */
- if (!lig_id)
- _hb_glyph_info_set_lig_props_for_component (&c->buffer->cur(), i);
- c->output_glyph_for_component (substitute.arrayZ[i], klass);
- }
- c->buffer->skip_glyph ();
-
- return_trace (true);
- }
-
- template <typename Iterator,
- hb_requires (hb_is_source_of (Iterator, hb_codepoint_t))>
- bool serialize (hb_serialize_context_t *c,
- Iterator subst)
- {
- TRACE_SERIALIZE (this);
- return_trace (substitute.serialize (c, subst));
- }
-
- bool subset (hb_subset_context_t *c) const
- {
- TRACE_SUBSET (this);
- const hb_set_t &glyphset = *c->plan->glyphset_gsub ();
- const hb_map_t &glyph_map = *c->plan->glyph_map;
-
- if (!intersects (&glyphset)) return_trace (false);
-
- auto it =
- + hb_iter (substitute)
- | hb_map (glyph_map)
- ;
-
- auto *out = c->serializer->start_embed (*this);
- return_trace (out->serialize (c->serializer, it));
- }
-
- bool sanitize (hb_sanitize_context_t *c) const
- {
- TRACE_SANITIZE (this);
- return_trace (substitute.sanitize (c));
- }
-
- protected:
- Array16Of<HBGlyphID16>
- substitute; /* String of GlyphIDs to substitute */
- public:
- DEFINE_SIZE_ARRAY (2, substitute);
-};
-
-struct MultipleSubstFormat1
-{
- bool intersects (const hb_set_t *glyphs) const
- { return (this+coverage).intersects (glyphs); }
-
- bool may_have_non_1to1 () const
- { return true; }
-
- void closure (hb_closure_context_t *c) const
- {
- + hb_zip (this+coverage, sequence)
- | hb_filter (c->parent_active_glyphs (), hb_first)
- | hb_map (hb_second)
- | hb_map (hb_add (this))
- | hb_apply ([c] (const Sequence &_) { _.closure (c); })
- ;
- }
-
- void closure_lookups (hb_closure_lookups_context_t *c) const {}
-
- void collect_glyphs (hb_collect_glyphs_context_t *c) const
- {
- if (unlikely (!(this+coverage).collect_coverage (c->input))) return;
- + hb_zip (this+coverage, sequence)
- | hb_map (hb_second)
- | hb_map (hb_add (this))
- | hb_apply ([c] (const Sequence &_) { _.collect_glyphs (c); })
- ;
- }
-
- const Coverage &get_coverage () const { return this+coverage; }
-
- bool would_apply (hb_would_apply_context_t *c) const
- { return c->len == 1 && (this+coverage).get_coverage (c->glyphs[0]) != NOT_COVERED; }
-
- bool apply (hb_ot_apply_context_t *c) const
- {
- TRACE_APPLY (this);
-
- unsigned int index = (this+coverage).get_coverage (c->buffer->cur().codepoint);
- if (likely (index == NOT_COVERED)) return_trace (false);
-
- return_trace ((this+sequence[index]).apply (c));
- }
-
- bool serialize (hb_serialize_context_t *c,
- hb_sorted_array_t<const HBGlyphID16> glyphs,
- hb_array_t<const unsigned int> substitute_len_list,
- hb_array_t<const HBGlyphID16> substitute_glyphs_list)
- {
- TRACE_SERIALIZE (this);
- if (unlikely (!c->extend_min (this))) return_trace (false);
- if (unlikely (!sequence.serialize (c, glyphs.length))) return_trace (false);
- for (unsigned int i = 0; i < glyphs.length; i++)
- {
- unsigned int substitute_len = substitute_len_list[i];
- if (unlikely (!sequence[i]
- .serialize_serialize (c, substitute_glyphs_list.sub_array (0, substitute_len))))
- return_trace (false);
- substitute_glyphs_list += substitute_len;
- }
- return_trace (coverage.serialize_serialize (c, glyphs));
- }
-
- bool subset (hb_subset_context_t *c) const
- {
- TRACE_SUBSET (this);
- const hb_set_t &glyphset = *c->plan->glyphset_gsub ();
- const hb_map_t &glyph_map = *c->plan->glyph_map;
-
- auto *out = c->serializer->start_embed (*this);
- if (unlikely (!c->serializer->extend_min (out))) return_trace (false);
- out->format = format;
-
- hb_sorted_vector_t<hb_codepoint_t> new_coverage;
- + hb_zip (this+coverage, sequence)
- | hb_filter (glyphset, hb_first)
- | hb_filter (subset_offset_array (c, out->sequence, this), hb_second)
- | hb_map (hb_first)
- | hb_map (glyph_map)
- | hb_sink (new_coverage)
- ;
- out->coverage.serialize_serialize (c->serializer, new_coverage.iter ());
- return_trace (bool (new_coverage));
- }
-
- bool sanitize (hb_sanitize_context_t *c) const
- {
- TRACE_SANITIZE (this);
- return_trace (coverage.sanitize (c, this) && sequence.sanitize (c, this));
- }
-
- protected:
- HBUINT16 format; /* Format identifier--format = 1 */
- Offset16To<Coverage>
- coverage; /* Offset to Coverage table--from
- * beginning of Substitution table */
- Array16OfOffset16To<Sequence>
- sequence; /* Array of Sequence tables
- * ordered by Coverage Index */
- public:
- DEFINE_SIZE_ARRAY (6, sequence);
-};
-
-struct MultipleSubst
-{
- bool serialize (hb_serialize_context_t *c,
- hb_sorted_array_t<const HBGlyphID16> glyphs,
- hb_array_t<const unsigned int> substitute_len_list,
- hb_array_t<const HBGlyphID16> substitute_glyphs_list)
- {
- TRACE_SERIALIZE (this);
- if (unlikely (!c->extend_min (u.format))) return_trace (false);
- unsigned int format = 1;
- u.format = format;
- switch (u.format) {
- case 1: return_trace (u.format1.serialize (c, glyphs, substitute_len_list, substitute_glyphs_list));
- default:return_trace (false);
- }
- }
-
- template <typename context_t, typename ...Ts>
- typename context_t::return_t dispatch (context_t *c, Ts&&... ds) const
- {
- TRACE_DISPATCH (this, u.format);
- if (unlikely (!c->may_dispatch (this, &u.format))) return_trace (c->no_dispatch_return_value ());
- switch (u.format) {
- case 1: return_trace (c->dispatch (u.format1, std::forward<Ts> (ds)...));
- default:return_trace (c->default_return_value ());
- }
- }
-
- protected:
- union {
- HBUINT16 format; /* Format identifier */
- MultipleSubstFormat1 format1;
- } u;
-};
-
-struct AlternateSet
-{
- bool intersects (const hb_set_t *glyphs) const
- { return hb_any (alternates, glyphs); }
-
- void closure (hb_closure_context_t *c) const
- { c->output->add_array (alternates.arrayZ, alternates.len); }
-
- void collect_glyphs (hb_collect_glyphs_context_t *c) const
- { c->output->add_array (alternates.arrayZ, alternates.len); }
-
- bool apply (hb_ot_apply_context_t *c) const
- {
- TRACE_APPLY (this);
- unsigned int count = alternates.len;
-
- if (unlikely (!count)) return_trace (false);
-
- hb_mask_t glyph_mask = c->buffer->cur().mask;
- hb_mask_t lookup_mask = c->lookup_mask;
-
- /* Note: This breaks badly if two features enabled this lookup together. */
- unsigned int shift = hb_ctz (lookup_mask);
- unsigned int alt_index = ((lookup_mask & glyph_mask) >> shift);
-
- /* If alt_index is MAX_VALUE, randomize feature if it is the rand feature. */
- if (alt_index == HB_OT_MAP_MAX_VALUE && c->random)
- {
- /* Maybe we can do better than unsafe-to-break all; but since we are
- * changing random state, it would be hard to track that. Good 'nough. */
- c->buffer->unsafe_to_break (0, c->buffer->len);
- alt_index = c->random_number () % count + 1;
- }
-
- if (unlikely (alt_index > count || alt_index == 0)) return_trace (false);
-
- c->replace_glyph (alternates[alt_index - 1]);
-
- return_trace (true);
- }
-
- unsigned
- get_alternates (unsigned start_offset,
- unsigned *alternate_count /* IN/OUT. May be NULL. */,
- hb_codepoint_t *alternate_glyphs /* OUT. May be NULL. */) const
- {
- if (alternates.len && alternate_count)
- {
- + alternates.sub_array (start_offset, alternate_count)
- | hb_sink (hb_array (alternate_glyphs, *alternate_count))
- ;
- }
- return alternates.len;
- }
-
- template <typename Iterator,
- hb_requires (hb_is_source_of (Iterator, hb_codepoint_t))>
- bool serialize (hb_serialize_context_t *c,
- Iterator alts)
- {
- TRACE_SERIALIZE (this);
- return_trace (alternates.serialize (c, alts));
- }
-
- bool subset (hb_subset_context_t *c) const
- {
- TRACE_SUBSET (this);
- const hb_set_t &glyphset = *c->plan->glyphset_gsub ();
- const hb_map_t &glyph_map = *c->plan->glyph_map;
-
- auto it =
- + hb_iter (alternates)
- | hb_filter (glyphset)
- | hb_map (glyph_map)
- ;
-
- auto *out = c->serializer->start_embed (*this);
- return_trace (out->serialize (c->serializer, it) &&
- out->alternates);
- }
-
- bool sanitize (hb_sanitize_context_t *c) const
- {
- TRACE_SANITIZE (this);
- return_trace (alternates.sanitize (c));
- }
-
- protected:
- Array16Of<HBGlyphID16>
- alternates; /* Array of alternate GlyphIDs--in
- * arbitrary order */
- public:
- DEFINE_SIZE_ARRAY (2, alternates);
-};
-
-struct AlternateSubstFormat1
-{
- bool intersects (const hb_set_t *glyphs) const
- { return (this+coverage).intersects (glyphs); }
-
- bool may_have_non_1to1 () const
- { return false; }
-
- void closure (hb_closure_context_t *c) const
- {
- + hb_zip (this+coverage, alternateSet)
- | hb_filter (c->parent_active_glyphs (), hb_first)
- | hb_map (hb_second)
- | hb_map (hb_add (this))
- | hb_apply ([c] (const AlternateSet &_) { _.closure (c); })
- ;
-
- }
-
- void closure_lookups (hb_closure_lookups_context_t *c) const {}
-
- void collect_glyphs (hb_collect_glyphs_context_t *c) const
- {
- if (unlikely (!(this+coverage).collect_coverage (c->input))) return;
- + hb_zip (this+coverage, alternateSet)
- | hb_map (hb_second)
- | hb_map (hb_add (this))
- | hb_apply ([c] (const AlternateSet &_) { _.collect_glyphs (c); })
- ;
- }
-
- const Coverage &get_coverage () const { return this+coverage; }
-
- bool would_apply (hb_would_apply_context_t *c) const
- { return c->len == 1 && (this+coverage).get_coverage (c->glyphs[0]) != NOT_COVERED; }
-
- unsigned
- get_glyph_alternates (hb_codepoint_t gid,
- unsigned start_offset,
- unsigned *alternate_count /* IN/OUT. May be NULL. */,
- hb_codepoint_t *alternate_glyphs /* OUT. May be NULL. */) const
- { return (this+alternateSet[(this+coverage).get_coverage (gid)])
- .get_alternates (start_offset, alternate_count, alternate_glyphs); }
-
- bool apply (hb_ot_apply_context_t *c) const
- {
- TRACE_APPLY (this);
-
- unsigned int index = (this+coverage).get_coverage (c->buffer->cur().codepoint);
- if (likely (index == NOT_COVERED)) return_trace (false);
-
- return_trace ((this+alternateSet[index]).apply (c));
- }
-
- bool serialize (hb_serialize_context_t *c,
- hb_sorted_array_t<const HBGlyphID16> glyphs,
- hb_array_t<const unsigned int> alternate_len_list,
- hb_array_t<const HBGlyphID16> alternate_glyphs_list)
- {
- TRACE_SERIALIZE (this);
- if (unlikely (!c->extend_min (this))) return_trace (false);
- if (unlikely (!alternateSet.serialize (c, glyphs.length))) return_trace (false);
- for (unsigned int i = 0; i < glyphs.length; i++)
- {
- unsigned int alternate_len = alternate_len_list[i];
- if (unlikely (!alternateSet[i]
- .serialize_serialize (c, alternate_glyphs_list.sub_array (0, alternate_len))))
- return_trace (false);
- alternate_glyphs_list += alternate_len;
- }
- return_trace (coverage.serialize_serialize (c, glyphs));
- }
-
- bool subset (hb_subset_context_t *c) const
- {
- TRACE_SUBSET (this);
- const hb_set_t &glyphset = *c->plan->glyphset_gsub ();
- const hb_map_t &glyph_map = *c->plan->glyph_map;
-
- auto *out = c->serializer->start_embed (*this);
- if (unlikely (!c->serializer->extend_min (out))) return_trace (false);
- out->format = format;
-
- hb_sorted_vector_t<hb_codepoint_t> new_coverage;
- + hb_zip (this+coverage, alternateSet)
- | hb_filter (glyphset, hb_first)
- | hb_filter (subset_offset_array (c, out->alternateSet, this), hb_second)
- | hb_map (hb_first)
- | hb_map (glyph_map)
- | hb_sink (new_coverage)
- ;
- out->coverage.serialize_serialize (c->serializer, new_coverage.iter ());
- return_trace (bool (new_coverage));
- }
-
- bool sanitize (hb_sanitize_context_t *c) const
- {
- TRACE_SANITIZE (this);
- return_trace (coverage.sanitize (c, this) && alternateSet.sanitize (c, this));
- }
-
- protected:
- HBUINT16 format; /* Format identifier--format = 1 */
- Offset16To<Coverage>
- coverage; /* Offset to Coverage table--from
- * beginning of Substitution table */
- Array16OfOffset16To<AlternateSet>
- alternateSet; /* Array of AlternateSet tables
- * ordered by Coverage Index */
- public:
- DEFINE_SIZE_ARRAY (6, alternateSet);
-};
-
-struct AlternateSubst
-{
- bool serialize (hb_serialize_context_t *c,
- hb_sorted_array_t<const HBGlyphID16> glyphs,
- hb_array_t<const unsigned int> alternate_len_list,
- hb_array_t<const HBGlyphID16> alternate_glyphs_list)
- {
- TRACE_SERIALIZE (this);
- if (unlikely (!c->extend_min (u.format))) return_trace (false);
- unsigned int format = 1;
- u.format = format;
- switch (u.format) {
- case 1: return_trace (u.format1.serialize (c, glyphs, alternate_len_list, alternate_glyphs_list));
- default:return_trace (false);
- }
- }
-
- template <typename context_t, typename ...Ts>
- typename context_t::return_t dispatch (context_t *c, Ts&&... ds) const
- {
- TRACE_DISPATCH (this, u.format);
- if (unlikely (!c->may_dispatch (this, &u.format))) return_trace (c->no_dispatch_return_value ());
- switch (u.format) {
- case 1: return_trace (c->dispatch (u.format1, std::forward<Ts> (ds)...));
- default:return_trace (c->default_return_value ());
- }
- }
-
- protected:
- union {
- HBUINT16 format; /* Format identifier */
- AlternateSubstFormat1 format1;
- } u;
-};
-
-
-struct Ligature
-{
- bool intersects (const hb_set_t *glyphs) const
- { return hb_all (component, glyphs); }
-
- void closure (hb_closure_context_t *c) const
- {
- if (!intersects (c->glyphs)) return;
- c->output->add (ligGlyph);
- }
-
- void collect_glyphs (hb_collect_glyphs_context_t *c) const
- {
- c->input->add_array (component.arrayZ, component.get_length ());
- c->output->add (ligGlyph);
- }
-
- bool would_apply (hb_would_apply_context_t *c) const
- {
- if (c->len != component.lenP1)
- return false;
-
- for (unsigned int i = 1; i < c->len; i++)
- if (likely (c->glyphs[i] != component[i]))
- return false;
-
- return true;
- }
-
- bool apply (hb_ot_apply_context_t *c) const
- {
- TRACE_APPLY (this);
- unsigned int count = component.lenP1;
-
- if (unlikely (!count)) return_trace (false);
-
- /* Special-case to make it in-place and not consider this
- * as a "ligated" substitution. */
- if (unlikely (count == 1))
- {
- c->replace_glyph (ligGlyph);
- return_trace (true);
- }
-
- unsigned int total_component_count = 0;
-
- unsigned int match_end = 0;
- unsigned int match_positions[HB_MAX_CONTEXT_LENGTH];
-
- if (likely (!match_input (c, count,
- &component[1],
- match_glyph,
- nullptr,
- &match_end,
- match_positions,
- &total_component_count)))
- {
- c->buffer->unsafe_to_concat (c->buffer->idx, match_end);
- return_trace (false);
- }
-
- ligate_input (c,
- count,
- match_positions,
- match_end,
- ligGlyph,
- total_component_count);
-
- return_trace (true);
- }
-
- template <typename Iterator,
- hb_requires (hb_is_source_of (Iterator, hb_codepoint_t))>
- bool serialize (hb_serialize_context_t *c,
- hb_codepoint_t ligature,
- Iterator components /* Starting from second */)
- {
- TRACE_SERIALIZE (this);
- if (unlikely (!c->extend_min (this))) return_trace (false);
- ligGlyph = ligature;
- if (unlikely (!component.serialize (c, components))) return_trace (false);
- return_trace (true);
- }
-
- bool subset (hb_subset_context_t *c, unsigned coverage_idx) const
- {
- TRACE_SUBSET (this);
- const hb_set_t &glyphset = *c->plan->glyphset_gsub ();
- const hb_map_t &glyph_map = *c->plan->glyph_map;
-
- if (!intersects (&glyphset) || !glyphset.has (ligGlyph)) return_trace (false);
- // Ensure Coverage table is always packed after this.
- c->serializer->add_virtual_link (coverage_idx);
-
- auto it =
- + hb_iter (component)
- | hb_map (glyph_map)
- ;
-
- auto *out = c->serializer->start_embed (*this);
- return_trace (out->serialize (c->serializer,
- glyph_map[ligGlyph],
- it));
- }
-
- public:
- bool sanitize (hb_sanitize_context_t *c) const
- {
- TRACE_SANITIZE (this);
- return_trace (ligGlyph.sanitize (c) && component.sanitize (c));
- }
-
- protected:
- HBGlyphID16 ligGlyph; /* GlyphID of ligature to substitute */
- HeadlessArrayOf<HBGlyphID16>
- component; /* Array of component GlyphIDs--start
- * with the second component--ordered
- * in writing direction */
- public:
- DEFINE_SIZE_ARRAY (4, component);
-};
-
-struct LigatureSet
-{
- bool intersects (const hb_set_t *glyphs) const
- {
- return
- + hb_iter (ligature)
- | hb_map (hb_add (this))
- | hb_map ([glyphs] (const Ligature &_) { return _.intersects (glyphs); })
- | hb_any
- ;
- }
-
- void closure (hb_closure_context_t *c) const
- {
- + hb_iter (ligature)
- | hb_map (hb_add (this))
- | hb_apply ([c] (const Ligature &_) { _.closure (c); })
- ;
- }
-
- void collect_glyphs (hb_collect_glyphs_context_t *c) const
- {
- + hb_iter (ligature)
- | hb_map (hb_add (this))
- | hb_apply ([c] (const Ligature &_) { _.collect_glyphs (c); })
- ;
- }
-
- bool would_apply (hb_would_apply_context_t *c) const
- {
- return
- + hb_iter (ligature)
- | hb_map (hb_add (this))
- | hb_map ([c] (const Ligature &_) { return _.would_apply (c); })
- | hb_any
- ;
- }
-
- bool apply (hb_ot_apply_context_t *c) const
- {
- TRACE_APPLY (this);
- unsigned int num_ligs = ligature.len;
- for (unsigned int i = 0; i < num_ligs; i++)
- {
- const Ligature &lig = this+ligature[i];
- if (lig.apply (c)) return_trace (true);
- }
-
- return_trace (false);
- }
-
- bool serialize (hb_serialize_context_t *c,
- hb_array_t<const HBGlyphID16> ligatures,
- hb_array_t<const unsigned int> component_count_list,
- hb_array_t<const HBGlyphID16> &component_list /* Starting from second for each ligature */)
- {
- TRACE_SERIALIZE (this);
- if (unlikely (!c->extend_min (this))) return_trace (false);
- if (unlikely (!ligature.serialize (c, ligatures.length))) return_trace (false);
- for (unsigned int i = 0; i < ligatures.length; i++)
- {
- unsigned int component_count = (unsigned) hb_max ((int) component_count_list[i] - 1, 0);
- if (unlikely (!ligature[i].serialize_serialize (c,
- ligatures[i],
- component_list.sub_array (0, component_count))))
- return_trace (false);
- component_list += component_count;
- }
- return_trace (true);
- }
-
- bool subset (hb_subset_context_t *c, unsigned coverage_idx) const
- {
- TRACE_SUBSET (this);
- auto *out = c->serializer->start_embed (*this);
- if (unlikely (!c->serializer->extend_min (out))) return_trace (false);
-
- + hb_iter (ligature)
- | hb_filter (subset_offset_array (c, out->ligature, this, coverage_idx))
- | hb_drain
- ;
-
- if (bool (out->ligature))
- // Ensure Coverage table is always packed after this.
- c->serializer->add_virtual_link (coverage_idx);
-
- return_trace (bool (out->ligature));
- }
-
- bool sanitize (hb_sanitize_context_t *c) const
- {
- TRACE_SANITIZE (this);
- return_trace (ligature.sanitize (c, this));
- }
-
- protected:
- Array16OfOffset16To<Ligature>
- ligature; /* Array LigatureSet tables
- * ordered by preference */
- public:
- DEFINE_SIZE_ARRAY (2, ligature);
-};
-
-struct LigatureSubstFormat1
-{
- bool intersects (const hb_set_t *glyphs) const
- {
- return
- + hb_zip (this+coverage, ligatureSet)
- | hb_filter (*glyphs, hb_first)
- | hb_map (hb_second)
- | hb_map ([this, glyphs] (const Offset16To<LigatureSet> &_)
- { return (this+_).intersects (glyphs); })
- | hb_any
- ;
- }
-
- bool may_have_non_1to1 () const
- { return true; }
-
- void closure (hb_closure_context_t *c) const
- {
- + hb_zip (this+coverage, ligatureSet)
- | hb_filter (c->parent_active_glyphs (), hb_first)
- | hb_map (hb_second)
- | hb_map (hb_add (this))
- | hb_apply ([c] (const LigatureSet &_) { _.closure (c); })
- ;
-
- }
-
- void closure_lookups (hb_closure_lookups_context_t *c) const {}
-
- void collect_glyphs (hb_collect_glyphs_context_t *c) const
- {
- if (unlikely (!(this+coverage).collect_coverage (c->input))) return;
-
- + hb_zip (this+coverage, ligatureSet)
- | hb_map (hb_second)
- | hb_map (hb_add (this))
- | hb_apply ([c] (const LigatureSet &_) { _.collect_glyphs (c); })
- ;
- }
-
- const Coverage &get_coverage () const { return this+coverage; }
-
- bool would_apply (hb_would_apply_context_t *c) const
- {
- unsigned int index = (this+coverage).get_coverage (c->glyphs[0]);
- if (likely (index == NOT_COVERED)) return false;
-
- const LigatureSet &lig_set = this+ligatureSet[index];
- return lig_set.would_apply (c);
- }
-
- bool apply (hb_ot_apply_context_t *c) const
- {
- TRACE_APPLY (this);
-
- unsigned int index = (this+coverage).get_coverage (c->buffer->cur ().codepoint);
- if (likely (index == NOT_COVERED)) return_trace (false);
-
- const LigatureSet &lig_set = this+ligatureSet[index];
- return_trace (lig_set.apply (c));
- }
-
- bool serialize (hb_serialize_context_t *c,
- hb_sorted_array_t<const HBGlyphID16> first_glyphs,
- hb_array_t<const unsigned int> ligature_per_first_glyph_count_list,
- hb_array_t<const HBGlyphID16> ligatures_list,
- hb_array_t<const unsigned int> component_count_list,
- hb_array_t<const HBGlyphID16> component_list /* Starting from second for each ligature */)
- {
- TRACE_SERIALIZE (this);
- if (unlikely (!c->extend_min (this))) return_trace (false);
- if (unlikely (!ligatureSet.serialize (c, first_glyphs.length))) return_trace (false);
- for (unsigned int i = 0; i < first_glyphs.length; i++)
- {
- unsigned int ligature_count = ligature_per_first_glyph_count_list[i];
- if (unlikely (!ligatureSet[i]
- .serialize_serialize (c,
- ligatures_list.sub_array (0, ligature_count),
- component_count_list.sub_array (0, ligature_count),
- component_list))) return_trace (false);
- ligatures_list += ligature_count;
- component_count_list += ligature_count;
- }
- return_trace (coverage.serialize_serialize (c, first_glyphs));
- }
-
- bool subset (hb_subset_context_t *c) const
- {
- TRACE_SUBSET (this);
- const hb_set_t &glyphset = *c->plan->glyphset_gsub ();
- const hb_map_t &glyph_map = *c->plan->glyph_map;
-
- auto *out = c->serializer->start_embed (*this);
- if (unlikely (!c->serializer->extend_min (out))) return_trace (false);
- out->format = format;
-
- // Due to a bug in some older versions of windows 7 the Coverage table must be
- // packed after the LigatureSet and Ligature tables, so serialize Coverage first
- // which places it last in the packed order.
- hb_set_t new_coverage;
- + hb_zip (this+coverage, hb_iter (ligatureSet) | hb_map (hb_add (this)))
- | hb_filter (glyphset, hb_first)
- | hb_filter ([&] (const LigatureSet& _) {
- return _.intersects (&glyphset);
- }, hb_second)
- | hb_map (hb_first)
- | hb_sink (new_coverage);
-
- if (!c->serializer->push<Coverage> ()
- ->serialize (c->serializer,
- + new_coverage.iter () | hb_map_retains_sorting (glyph_map)))
- {
- c->serializer->pop_discard ();
- return_trace (false);
- }
-
- unsigned coverage_idx = c->serializer->pop_pack ();
- c->serializer->add_link (out->coverage, coverage_idx);
-
- + hb_zip (this+coverage, ligatureSet)
- | hb_filter (new_coverage, hb_first)
- | hb_map (hb_second)
- // to ensure that the repacker always orders the coverage table after the LigatureSet
- // and LigatureSubtable's they will be linked to the Coverage table via a virtual link
- // the coverage table object idx is passed down to facilitate this.
- | hb_apply (subset_offset_array (c, out->ligatureSet, this, coverage_idx))
- ;
-
- return_trace (bool (new_coverage));
- }
-
- bool sanitize (hb_sanitize_context_t *c) const
- {
- TRACE_SANITIZE (this);
- return_trace (coverage.sanitize (c, this) && ligatureSet.sanitize (c, this));
- }
-
- protected:
- HBUINT16 format; /* Format identifier--format = 1 */
- Offset16To<Coverage>
- coverage; /* Offset to Coverage table--from
- * beginning of Substitution table */
- Array16OfOffset16To<LigatureSet>
- ligatureSet; /* Array LigatureSet tables
- * ordered by Coverage Index */
- public:
- DEFINE_SIZE_ARRAY (6, ligatureSet);
-};
-
-struct LigatureSubst
-{
- bool serialize (hb_serialize_context_t *c,
- hb_sorted_array_t<const HBGlyphID16> first_glyphs,
- hb_array_t<const unsigned int> ligature_per_first_glyph_count_list,
- hb_array_t<const HBGlyphID16> ligatures_list,
- hb_array_t<const unsigned int> component_count_list,
- hb_array_t<const HBGlyphID16> component_list /* Starting from second for each ligature */)
- {
- TRACE_SERIALIZE (this);
- if (unlikely (!c->extend_min (u.format))) return_trace (false);
- unsigned int format = 1;
- u.format = format;
- switch (u.format) {
- case 1: return_trace (u.format1.serialize (c,
- first_glyphs,
- ligature_per_first_glyph_count_list,
- ligatures_list,
- component_count_list,
- component_list));
- default:return_trace (false);
- }
- }
-
- template <typename context_t, typename ...Ts>
- typename context_t::return_t dispatch (context_t *c, Ts&&... ds) const
- {
- TRACE_DISPATCH (this, u.format);
- if (unlikely (!c->may_dispatch (this, &u.format))) return_trace (c->no_dispatch_return_value ());
- switch (u.format) {
- case 1: return_trace (c->dispatch (u.format1, std::forward<Ts> (ds)...));
- default:return_trace (c->default_return_value ());
- }
- }
-
- protected:
- union {
- HBUINT16 format; /* Format identifier */
- LigatureSubstFormat1 format1;
- } u;
-};
-
-
-struct ContextSubst : Context {};
-
-struct ChainContextSubst : ChainContext {};
-
-struct ExtensionSubst : Extension<ExtensionSubst>
-{
- typedef struct SubstLookupSubTable SubTable;
- bool is_reverse () const;
-};
-
-
-struct ReverseChainSingleSubstFormat1
-{
- bool intersects (const hb_set_t *glyphs) const
- {
- if (!(this+coverage).intersects (glyphs))
- return false;
-
- const Array16OfOffset16To<Coverage> &lookahead = StructAfter<Array16OfOffset16To<Coverage>> (backtrack);
-
- unsigned int count;
-
- count = backtrack.len;
- for (unsigned int i = 0; i < count; i++)
- if (!(this+backtrack[i]).intersects (glyphs))
- return false;
-
- count = lookahead.len;
- for (unsigned int i = 0; i < count; i++)
- if (!(this+lookahead[i]).intersects (glyphs))
- return false;
-
- return true;
- }
-
- bool may_have_non_1to1 () const
- { return false; }
-
- void closure (hb_closure_context_t *c) const
- {
- if (!intersects (c->glyphs)) return;
-
- const Array16OfOffset16To<Coverage> &lookahead = StructAfter<Array16OfOffset16To<Coverage>> (backtrack);
- const Array16Of<HBGlyphID16> &substitute = StructAfter<Array16Of<HBGlyphID16>> (lookahead);
-
- + hb_zip (this+coverage, substitute)
- | hb_filter (c->parent_active_glyphs (), hb_first)
- | hb_map (hb_second)
- | hb_sink (c->output)
- ;
- }
-
- void closure_lookups (hb_closure_lookups_context_t *c) const {}
-
- void collect_glyphs (hb_collect_glyphs_context_t *c) const
- {
- if (unlikely (!(this+coverage).collect_coverage (c->input))) return;
-
- unsigned int count;
-
- count = backtrack.len;
- for (unsigned int i = 0; i < count; i++)
- if (unlikely (!(this+backtrack[i]).collect_coverage (c->before))) return;
-
- const Array16OfOffset16To<Coverage> &lookahead = StructAfter<Array16OfOffset16To<Coverage>> (backtrack);
- count = lookahead.len;
- for (unsigned int i = 0; i < count; i++)
- if (unlikely (!(this+lookahead[i]).collect_coverage (c->after))) return;
-
- const Array16Of<HBGlyphID16> &substitute = StructAfter<Array16Of<HBGlyphID16>> (lookahead);
- count = substitute.len;
- c->output->add_array (substitute.arrayZ, substitute.len);
- }
-
- const Coverage &get_coverage () const { return this+coverage; }
-
- bool would_apply (hb_would_apply_context_t *c) const
- { return c->len == 1 && (this+coverage).get_coverage (c->glyphs[0]) != NOT_COVERED; }
-
- bool apply (hb_ot_apply_context_t *c) const
- {
- TRACE_APPLY (this);
- if (unlikely (c->nesting_level_left != HB_MAX_NESTING_LEVEL))
- return_trace (false); /* No chaining to this type */
-
- unsigned int index = (this+coverage).get_coverage (c->buffer->cur ().codepoint);
- if (likely (index == NOT_COVERED)) return_trace (false);
-
- const Array16OfOffset16To<Coverage> &lookahead = StructAfter<Array16OfOffset16To<Coverage>> (backtrack);
- const Array16Of<HBGlyphID16> &substitute = StructAfter<Array16Of<HBGlyphID16>> (lookahead);
-
- if (unlikely (index >= substitute.len)) return_trace (false);
-
- unsigned int start_index = 0, end_index = 0;
- if (match_backtrack (c,
- backtrack.len, (HBUINT16 *) backtrack.arrayZ,
- match_coverage, this,
- &start_index) &&
- match_lookahead (c,
- lookahead.len, (HBUINT16 *) lookahead.arrayZ,
- match_coverage, this,
- c->buffer->idx + 1, &end_index))
- {
- c->buffer->unsafe_to_break_from_outbuffer (start_index, end_index);
- c->replace_glyph_inplace (substitute[index]);
- /* Note: We DON'T decrease buffer->idx. The main loop does it
- * for us. This is useful for preventing surprises if someone
- * calls us through a Context lookup. */
- return_trace (true);
- }
- else
- {
- c->buffer->unsafe_to_concat_from_outbuffer (start_index, end_index);
- return_trace (false);
- }
- }
-
- template<typename Iterator,
- hb_requires (hb_is_iterator (Iterator))>
- bool serialize_coverage_offset_array (hb_subset_context_t *c, Iterator it) const
- {
- TRACE_SERIALIZE (this);
- auto *out = c->serializer->start_embed<Array16OfOffset16To<Coverage>> ();
-
- if (unlikely (!c->serializer->allocate_size<HBUINT16> (HBUINT16::static_size)))
- return_trace (false);
-
- for (auto& offset : it) {
- auto *o = out->serialize_append (c->serializer);
- if (unlikely (!o) || !o->serialize_subset (c, offset, this))
- return_trace (false);
- }
-
- return_trace (true);
- }
-
- template<typename Iterator, typename BacktrackIterator, typename LookaheadIterator,
- hb_requires (hb_is_sorted_source_of (Iterator, hb_codepoint_pair_t)),
- hb_requires (hb_is_iterator (BacktrackIterator)),
- hb_requires (hb_is_iterator (LookaheadIterator))>
- bool serialize (hb_subset_context_t *c,
- Iterator coverage_subst_iter,
- BacktrackIterator backtrack_iter,
- LookaheadIterator lookahead_iter) const
- {
- TRACE_SERIALIZE (this);
-
- auto *out = c->serializer->start_embed (this);
- if (unlikely (!c->serializer->check_success (out))) return_trace (false);
- if (unlikely (!c->serializer->embed (this->format))) return_trace (false);
- if (unlikely (!c->serializer->embed (this->coverage))) return_trace (false);
-
- if (!serialize_coverage_offset_array (c, backtrack_iter)) return_trace (false);
- if (!serialize_coverage_offset_array (c, lookahead_iter)) return_trace (false);
-
- auto *substitute_out = c->serializer->start_embed<Array16Of<HBGlyphID16>> ();
- auto substitutes =
- + coverage_subst_iter
- | hb_map (hb_second)
- ;
-
- auto glyphs =
- + coverage_subst_iter
- | hb_map_retains_sorting (hb_first)
- ;
- if (unlikely (! c->serializer->check_success (substitute_out->serialize (c->serializer, substitutes))))
- return_trace (false);
-
- if (unlikely (!out->coverage.serialize_serialize (c->serializer, glyphs)))
- return_trace (false);
- return_trace (true);
- }
-
- bool subset (hb_subset_context_t *c) const
- {
- TRACE_SUBSET (this);
- const hb_set_t &glyphset = *c->plan->glyphset_gsub ();
- const hb_map_t &glyph_map = *c->plan->glyph_map;
-
- const Array16OfOffset16To<Coverage> &lookahead = StructAfter<Array16OfOffset16To<Coverage>> (backtrack);
- const Array16Of<HBGlyphID16> &substitute = StructAfter<Array16Of<HBGlyphID16>> (lookahead);
-
- auto it =
- + hb_zip (this+coverage, substitute)
- | hb_filter (glyphset, hb_first)
- | hb_filter (glyphset, hb_second)
- | hb_map_retains_sorting ([&] (hb_pair_t<hb_codepoint_t, const HBGlyphID16 &> p) -> hb_codepoint_pair_t
- { return hb_pair (glyph_map[p.first], glyph_map[p.second]); })
- ;
-
- return_trace (bool (it) && serialize (c, it, backtrack.iter (), lookahead.iter ()));
- }
-
- bool sanitize (hb_sanitize_context_t *c) const
- {
- TRACE_SANITIZE (this);
- if (!(coverage.sanitize (c, this) && backtrack.sanitize (c, this)))
- return_trace (false);
- const Array16OfOffset16To<Coverage> &lookahead = StructAfter<Array16OfOffset16To<Coverage>> (backtrack);
- if (!lookahead.sanitize (c, this))
- return_trace (false);
- const Array16Of<HBGlyphID16> &substitute = StructAfter<Array16Of<HBGlyphID16>> (lookahead);
- return_trace (substitute.sanitize (c));
- }
-
- protected:
- HBUINT16 format; /* Format identifier--format = 1 */
- Offset16To<Coverage>
- coverage; /* Offset to Coverage table--from
- * beginning of table */
- Array16OfOffset16To<Coverage>
- backtrack; /* Array of coverage tables
- * in backtracking sequence, in glyph
- * sequence order */
- Array16OfOffset16To<Coverage>
- lookaheadX; /* Array of coverage tables
- * in lookahead sequence, in glyph
- * sequence order */
- Array16Of<HBGlyphID16>
- substituteX; /* Array of substitute
- * GlyphIDs--ordered by Coverage Index */
- public:
- DEFINE_SIZE_MIN (10);
-};
-
-struct ReverseChainSingleSubst
-{
- template <typename context_t, typename ...Ts>
- typename context_t::return_t dispatch (context_t *c, Ts&&... ds) const
- {
- TRACE_DISPATCH (this, u.format);
- if (unlikely (!c->may_dispatch (this, &u.format))) return_trace (c->no_dispatch_return_value ());
- switch (u.format) {
- case 1: return_trace (c->dispatch (u.format1, std::forward<Ts> (ds)...));
- default:return_trace (c->default_return_value ());
- }
- }
-
- protected:
- union {
- HBUINT16 format; /* Format identifier */
- ReverseChainSingleSubstFormat1 format1;
- } u;
-};
-
-
-
-/*
- * SubstLookup
- */
-
-struct SubstLookupSubTable
-{
- friend struct Lookup;
- friend struct SubstLookup;
-
- enum Type {
- Single = 1,
- Multiple = 2,
- Alternate = 3,
- Ligature = 4,
- Context = 5,
- ChainContext = 6,
- Extension = 7,
- ReverseChainSingle = 8
- };
-
- template <typename context_t, typename ...Ts>
- typename context_t::return_t dispatch (context_t *c, unsigned int lookup_type, Ts&&... ds) const
- {
- TRACE_DISPATCH (this, lookup_type);
- switch (lookup_type) {
- case Single: return_trace (u.single.dispatch (c, std::forward<Ts> (ds)...));
- case Multiple: return_trace (u.multiple.dispatch (c, std::forward<Ts> (ds)...));
- case Alternate: return_trace (u.alternate.dispatch (c, std::forward<Ts> (ds)...));
- case Ligature: return_trace (u.ligature.dispatch (c, std::forward<Ts> (ds)...));
- case Context: return_trace (u.context.dispatch (c, std::forward<Ts> (ds)...));
- case ChainContext: return_trace (u.chainContext.dispatch (c, std::forward<Ts> (ds)...));
- case Extension: return_trace (u.extension.dispatch (c, std::forward<Ts> (ds)...));
- case ReverseChainSingle: return_trace (u.reverseChainContextSingle.dispatch (c, std::forward<Ts> (ds)...));
- default: return_trace (c->default_return_value ());
- }
- }
-
- bool intersects (const hb_set_t *glyphs, unsigned int lookup_type) const
- {
- hb_intersects_context_t c (glyphs);
- return dispatch (&c, lookup_type);
- }
-
- protected:
- union {
- SingleSubst single;
- MultipleSubst multiple;
- AlternateSubst alternate;
- LigatureSubst ligature;
- ContextSubst context;
- ChainContextSubst chainContext;
- ExtensionSubst extension;
- ReverseChainSingleSubst reverseChainContextSingle;
- } u;
- public:
- DEFINE_SIZE_MIN (0);
-};
-
-
-struct SubstLookup : Lookup
-{
- typedef SubstLookupSubTable SubTable;
-
- const SubTable& get_subtable (unsigned int i) const
- { return Lookup::get_subtable<SubTable> (i); }
-
- static inline bool lookup_type_is_reverse (unsigned int lookup_type)
- { return lookup_type == SubTable::ReverseChainSingle; }
-
- bool is_reverse () const
- {
- unsigned int type = get_type ();
- if (unlikely (type == SubTable::Extension))
- return reinterpret_cast<const ExtensionSubst &> (get_subtable (0)).is_reverse ();
- return lookup_type_is_reverse (type);
- }
-
- bool may_have_non_1to1 () const
- {
- hb_have_non_1to1_context_t c;
- return dispatch (&c);
- }
-
- bool apply (hb_ot_apply_context_t *c) const
- {
- TRACE_APPLY (this);
- return_trace (dispatch (c));
- }
-
- bool intersects (const hb_set_t *glyphs) const
- {
- hb_intersects_context_t c (glyphs);
- return dispatch (&c);
- }
-
- hb_closure_context_t::return_t closure (hb_closure_context_t *c, unsigned int this_index) const
- {
- if (!c->should_visit_lookup (this_index))
- return hb_closure_context_t::default_return_value ();
-
- c->set_recurse_func (dispatch_closure_recurse_func);
-
- hb_closure_context_t::return_t ret = dispatch (c);
-
- c->flush ();
-
- return ret;
- }
-
- hb_closure_lookups_context_t::return_t closure_lookups (hb_closure_lookups_context_t *c, unsigned this_index) const
- {
- if (c->is_lookup_visited (this_index))
- return hb_closure_lookups_context_t::default_return_value ();
-
- c->set_lookup_visited (this_index);
- if (!intersects (c->glyphs))
- {
- c->set_lookup_inactive (this_index);
- return hb_closure_lookups_context_t::default_return_value ();
- }
-
- c->set_recurse_func (dispatch_closure_lookups_recurse_func);
-
- hb_closure_lookups_context_t::return_t ret = dispatch (c);
- return ret;
- }
-
- hb_collect_glyphs_context_t::return_t collect_glyphs (hb_collect_glyphs_context_t *c) const
- {
- c->set_recurse_func (dispatch_recurse_func<hb_collect_glyphs_context_t>);
- return dispatch (c);
- }
-
- template <typename set_t>
- void collect_coverage (set_t *glyphs) const
- {
- hb_collect_coverage_context_t<set_t> c (glyphs);
- dispatch (&c);
- }
-
- bool would_apply (hb_would_apply_context_t *c,
- const hb_ot_layout_lookup_accelerator_t *accel) const
- {
- if (unlikely (!c->len)) return false;
- if (!accel->may_have (c->glyphs[0])) return false;
- return dispatch (c);
- }
-
- static inline bool apply_recurse_func (hb_ot_apply_context_t *c, unsigned int lookup_index);
-
- bool serialize_single (hb_serialize_context_t *c,
- uint32_t lookup_props,
- hb_sorted_array_t<const HBGlyphID16> glyphs,
- hb_array_t<const HBGlyphID16> substitutes)
- {
- TRACE_SERIALIZE (this);
- if (unlikely (!Lookup::serialize (c, SubTable::Single, lookup_props, 1))) return_trace (false);
- if (c->push<SubTable> ()->u.single.serialize (c, hb_zip (glyphs, substitutes)))
- {
- c->add_link (get_subtables<SubTable> ()[0], c->pop_pack ());
- return_trace (true);
- }
- c->pop_discard ();
- return_trace (false);
- }
-
- bool serialize_multiple (hb_serialize_context_t *c,
- uint32_t lookup_props,
- hb_sorted_array_t<const HBGlyphID16> glyphs,
- hb_array_t<const unsigned int> substitute_len_list,
- hb_array_t<const HBGlyphID16> substitute_glyphs_list)
- {
- TRACE_SERIALIZE (this);
- if (unlikely (!Lookup::serialize (c, SubTable::Multiple, lookup_props, 1))) return_trace (false);
- if (c->push<SubTable> ()->u.multiple.
- serialize (c,
- glyphs,
- substitute_len_list,
- substitute_glyphs_list))
- {
- c->add_link (get_subtables<SubTable> ()[0], c->pop_pack ());
- return_trace (true);
- }
- c->pop_discard ();
- return_trace (false);
- }
-
- bool serialize_alternate (hb_serialize_context_t *c,
- uint32_t lookup_props,
- hb_sorted_array_t<const HBGlyphID16> glyphs,
- hb_array_t<const unsigned int> alternate_len_list,
- hb_array_t<const HBGlyphID16> alternate_glyphs_list)
- {
- TRACE_SERIALIZE (this);
- if (unlikely (!Lookup::serialize (c, SubTable::Alternate, lookup_props, 1))) return_trace (false);
-
- if (c->push<SubTable> ()->u.alternate.
- serialize (c,
- glyphs,
- alternate_len_list,
- alternate_glyphs_list))
- {
- c->add_link (get_subtables<SubTable> ()[0], c->pop_pack ());
- return_trace (true);
- }
- c->pop_discard ();
- return_trace (false);
- }
-
- bool serialize_ligature (hb_serialize_context_t *c,
- uint32_t lookup_props,
- hb_sorted_array_t<const HBGlyphID16> first_glyphs,
- hb_array_t<const unsigned int> ligature_per_first_glyph_count_list,
- hb_array_t<const HBGlyphID16> ligatures_list,
- hb_array_t<const unsigned int> component_count_list,
- hb_array_t<const HBGlyphID16> component_list /* Starting from second for each ligature */)
- {
- TRACE_SERIALIZE (this);
- if (unlikely (!Lookup::serialize (c, SubTable::Ligature, lookup_props, 1))) return_trace (false);
- if (c->push<SubTable> ()->u.ligature.
- serialize (c,
- first_glyphs,
- ligature_per_first_glyph_count_list,
- ligatures_list,
- component_count_list,
- component_list))
- {
- c->add_link (get_subtables<SubTable> ()[0], c->pop_pack ());
- return_trace (true);
- }
- c->pop_discard ();
- return_trace (false);
- }
-
- template <typename context_t>
- static inline typename context_t::return_t dispatch_recurse_func (context_t *c, unsigned int lookup_index);
-
- static inline typename hb_closure_context_t::return_t closure_glyphs_recurse_func (hb_closure_context_t *c, unsigned lookup_index, hb_set_t *covered_seq_indices, unsigned seq_index, unsigned end_index);
-
- static inline hb_closure_context_t::return_t dispatch_closure_recurse_func (hb_closure_context_t *c, unsigned lookup_index, hb_set_t *covered_seq_indices, unsigned seq_index, unsigned end_index)
- {
- if (!c->should_visit_lookup (lookup_index))
- return hb_empty_t ();
-
- hb_closure_context_t::return_t ret = closure_glyphs_recurse_func (c, lookup_index, covered_seq_indices, seq_index, end_index);
-
- /* While in theory we should flush here, it will cause timeouts because a recursive
- * lookup can keep growing the glyph set. Skip, and outer loop will retry up to
- * HB_CLOSURE_MAX_STAGES time, which should be enough for every realistic font. */
- //c->flush ();
-
- return ret;
- }
-
- HB_INTERNAL static hb_closure_lookups_context_t::return_t dispatch_closure_lookups_recurse_func (hb_closure_lookups_context_t *c, unsigned lookup_index);
-
- template <typename context_t, typename ...Ts>
- typename context_t::return_t dispatch (context_t *c, Ts&&... ds) const
- { return Lookup::dispatch<SubTable> (c, std::forward<Ts> (ds)...); }
-
- bool subset (hb_subset_context_t *c) const
- { return Lookup::subset<SubTable> (c); }
-
- bool sanitize (hb_sanitize_context_t *c) const
- { return Lookup::sanitize<SubTable> (c); }
-};
-
-/*
- * GSUB -- Glyph Substitution
- * https://docs.microsoft.com/en-us/typography/opentype/spec/gsub
- */
-
-struct GSUB : GSUBGPOS
-{
- static constexpr hb_tag_t tableTag = HB_OT_TAG_GSUB;
-
- const SubstLookup& get_lookup (unsigned int i) const
- { return static_cast<const SubstLookup &> (GSUBGPOS::get_lookup (i)); }
-
- bool subset (hb_subset_context_t *c) const
- {
- hb_subset_layout_context_t l (c, tableTag, c->plan->gsub_lookups, c->plan->gsub_langsys, c->plan->gsub_features);
- return GSUBGPOS::subset<SubstLookup> (&l);
- }
-
- bool sanitize (hb_sanitize_context_t *c) const
- { return GSUBGPOS::sanitize<SubstLookup> (c); }
-
- HB_INTERNAL bool is_blocklisted (hb_blob_t *blob,
- hb_face_t *face) const;
-
- void closure_lookups (hb_face_t *face,
- const hb_set_t *glyphs,
- hb_set_t *lookup_indexes /* IN/OUT */) const
- { GSUBGPOS::closure_lookups<SubstLookup> (face, glyphs, lookup_indexes); }
-
- typedef GSUBGPOS::accelerator_t<GSUB> accelerator_t;
-};
-
-
-struct GSUB_accelerator_t : GSUB::accelerator_t {
- GSUB_accelerator_t (hb_face_t *face) : GSUB::accelerator_t (face) {}
-};
-
+using Layout::GSUB::SubstLookup;
+using Layout::GSUB::ExtensionSubst;
+// TODO(garretrieger): Move into the new layout directory.
/* Out-of-class implementation for methods recursing */
#ifndef HB_NO_OT_LAYOUT
diff --git a/thirdparty/harfbuzz/src/hb-ot-layout-gsubgpos.hh b/thirdparty/harfbuzz/src/hb-ot-layout-gsubgpos.hh
index 65de131f85..3faa1e53d5 100644
--- a/thirdparty/harfbuzz/src/hb-ot-layout-gsubgpos.hh
+++ b/thirdparty/harfbuzz/src/hb-ot-layout-gsubgpos.hh
@@ -408,12 +408,11 @@ struct hb_ot_apply_context_t :
{
matcher_t () :
lookup_props (0),
+ mask (-1),
ignore_zwnj (false),
ignore_zwj (false),
- mask (-1),
-#define arg1(arg) (arg) /* Remove the macro to see why it's needed! */
- syllable arg1(0),
-#undef arg1
+ per_syllable (false),
+ syllable {0},
match_func (nullptr),
match_data (nullptr) {}
@@ -423,7 +422,8 @@ struct hb_ot_apply_context_t :
void set_ignore_zwj (bool ignore_zwj_) { ignore_zwj = ignore_zwj_; }
void set_lookup_props (unsigned int lookup_props_) { lookup_props = lookup_props_; }
void set_mask (hb_mask_t mask_) { mask = mask_; }
- void set_syllable (uint8_t syllable_) { syllable = syllable_; }
+ void set_per_syllable (bool per_syllable_) { per_syllable = per_syllable_; }
+ void set_syllable (uint8_t syllable_) { syllable = per_syllable ? syllable_ : 0; }
void set_match_func (match_func_t match_func_,
const void *match_data_)
{ match_func = match_func_; match_data = match_data_; }
@@ -469,9 +469,10 @@ struct hb_ot_apply_context_t :
protected:
unsigned int lookup_props;
+ hb_mask_t mask;
bool ignore_zwnj;
bool ignore_zwj;
- hb_mask_t mask;
+ bool per_syllable;
uint8_t syllable;
match_func_t match_func;
const void *match_data;
@@ -490,6 +491,7 @@ struct hb_ot_apply_context_t :
/* Ignore ZWJ if we are matching context, or asked to. */
matcher.set_ignore_zwj (context_match || c->auto_zwj);
matcher.set_mask (context_match ? -1 : c->lookup_mask);
+ matcher.set_per_syllable (c->per_syllable);
}
void set_lookup_props (unsigned int lookup_props)
{
@@ -636,6 +638,7 @@ struct hb_ot_apply_context_t :
bool has_glyph_classes;
bool auto_zwnj;
bool auto_zwj;
+ bool per_syllable;
bool random;
uint32_t random_state;
@@ -664,6 +667,7 @@ struct hb_ot_apply_context_t :
has_glyph_classes (gdef.has_glyph_classes ()),
auto_zwnj (true),
auto_zwj (true),
+ per_syllable (false),
random (false),
random_state (1) { init_iters (); }
@@ -676,6 +680,7 @@ struct hb_ot_apply_context_t :
void set_lookup_mask (hb_mask_t mask) { lookup_mask = mask; init_iters (); }
void set_auto_zwj (bool auto_zwj_) { auto_zwj = auto_zwj_; init_iters (); }
void set_auto_zwnj (bool auto_zwnj_) { auto_zwnj = auto_zwnj_; init_iters (); }
+ void set_per_syllable (bool per_syllable_) { per_syllable = per_syllable_; init_iters (); }
void set_random (bool random_) { random = random_; }
void set_recurse_func (recurse_func_t func) { recurse_func = func; }
void set_lookup_index (unsigned int lookup_index_) { lookup_index = lookup_index_; }
@@ -1415,13 +1420,18 @@ static inline void apply_lookup (hb_ot_apply_context_t *c,
if (unlikely (idx == 0 && lookupRecord[i].lookupListIndex == c->lookup_index))
continue;
+ unsigned int orig_len = buffer->backtrack_len () + buffer->lookahead_len ();
+
+ /* This can happen if earlier recursed lookups deleted many entries. */
+ if (unlikely (match_positions[idx] >= orig_len))
+ continue;
+
if (unlikely (!buffer->move_to (match_positions[idx])))
break;
if (unlikely (buffer->max_ops <= 0))
break;
- unsigned int orig_len = buffer->backtrack_len () + buffer->lookahead_len ();
if (!c->recurse (lookupRecord[i].lookupListIndex))
continue;
@@ -1457,15 +1467,18 @@ static inline void apply_lookup (hb_ot_apply_context_t *c,
*/
end += delta;
- if (end <= int (match_positions[idx]))
+ if (end < int (match_positions[idx]))
{
/* End might end up being smaller than match_positions[idx] if the recursed
- * lookup ended up removing many items, more than we have had matched.
- * Just never rewind end back and get out of here.
- * https://bugs.chromium.org/p/chromium/issues/detail?id=659496 */
+ * lookup ended up removing many items.
+ * Just never rewind end beyond start of current position, since that is
+ * not possible in the recursed lookup. Also adjust delta as such.
+ *
+ * https://bugs.chromium.org/p/chromium/issues/detail?id=659496
+ * https://github.com/harfbuzz/harfbuzz/issues/1611
+ */
+ delta += match_positions[idx] - end;
end = match_positions[idx];
- /* There can't be any further changes. */
- break;
}
unsigned int next = idx + 1; /* next now is the position after the recursed lookup. */
@@ -1477,7 +1490,7 @@ static inline void apply_lookup (hb_ot_apply_context_t *c,
}
else
{
- /* NOTE: delta is negative. */
+ /* NOTE: delta is non-positive. */
delta = hb_max (delta, (int) next - (int) count);
next -= delta;
}
diff --git a/thirdparty/harfbuzz/src/hb-ot-layout.cc b/thirdparty/harfbuzz/src/hb-ot-layout.cc
index 01053ab737..f4ea21a4f9 100644
--- a/thirdparty/harfbuzz/src/hb-ot-layout.cc
+++ b/thirdparty/harfbuzz/src/hb-ot-layout.cc
@@ -54,6 +54,8 @@
#include "hb-aat-layout-morx-table.hh"
#include "hb-aat-layout-opbd-table.hh" // Just so we compile it; unused otherwise.
+using OT::Layout::GSUB::GSUB;
+
/**
* SECTION:hb-ot-layout
* @title: hb-ot-layout
@@ -389,7 +391,7 @@ hb_ot_layout_get_ligature_carets (hb_font_t *font,
*/
bool
-OT::GSUB::is_blocklisted (hb_blob_t *blob HB_UNUSED,
+GSUB::is_blocklisted (hb_blob_t *blob HB_UNUSED,
hb_face_t *face) const
{
#ifdef HB_NO_OT_LAYOUT_BLOCKLIST
@@ -1006,7 +1008,7 @@ struct hb_collect_features_context_t
hb_collect_features_context_t (hb_face_t *face,
hb_tag_t table_tag,
hb_set_t *feature_indices_,
- const hb_tag_t *features)
+ const hb_tag_t *features)
: g (get_gsubgpos_table (face, table_tag)),
feature_indices (feature_indices_),
@@ -1033,7 +1035,7 @@ struct hb_collect_features_context_t
{
hb_tag_t tag = g.get_feature_tag (i);
if (features_set.has (tag))
- feature_indices_filter.add(i);
+ feature_indices_filter.add(i);
}
}
@@ -1529,7 +1531,7 @@ hb_ot_layout_lookups_substitute_closure (hb_face_t *face,
hb_map_t done_lookups_glyph_count;
hb_hashmap_t<unsigned, hb_set_t *> done_lookups_glyph_set;
OT::hb_closure_context_t c (face, glyphs, &done_lookups_glyph_count, &done_lookups_glyph_set);
- const OT::GSUB& gsub = *face->table.GSUB->table;
+ const GSUB& gsub = *face->table.GSUB->table;
unsigned int iteration_count = 0;
unsigned int glyphs_length;
@@ -1808,7 +1810,7 @@ struct GSUBProxy
table (*face->table.GSUB->table),
accels (face->table.GSUB->accels) {}
- const OT::GSUB &table;
+ const GSUB &table;
const OT::hb_ot_layout_lookup_accelerator_t *accels;
};
@@ -1929,6 +1931,7 @@ inline void hb_ot_map_t::apply (const Proxy &proxy,
c.set_auto_zwj (lookups[table_index][i].auto_zwj);
c.set_auto_zwnj (lookups[table_index][i].auto_zwnj);
c.set_random (lookups[table_index][i].random);
+ c.set_per_syllable (lookups[table_index][i].per_syllable);
apply_string<Proxy> (&c,
proxy.table.get_lookup (lookup_index),
@@ -2086,11 +2089,11 @@ hb_ot_layout_get_baseline_with_fallback (hb_font_t *font,
hb_position_t *coord /* OUT */)
{
if (hb_ot_layout_get_baseline (font,
- baseline_tag,
- direction,
- script_tag,
- language_tag,
- coord))
+ baseline_tag,
+ direction,
+ script_tag,
+ language_tag,
+ coord))
return;
/* Synthesize missing baselines.
@@ -2107,17 +2110,19 @@ hb_ot_layout_get_baseline_with_fallback (hb_font_t *font,
hb_codepoint_t glyph;
hb_glyph_extents_t extents;
if (HB_DIRECTION_IS_HORIZONTAL (direction) &&
- (hb_font_get_nominal_glyph (font, 0x2212u, &glyph) ||
- hb_font_get_nominal_glyph (font, '-', &glyph)) &&
- hb_font_get_glyph_extents (font, glyph, &extents))
+ (hb_font_get_nominal_glyph (font, 0x2212u, &glyph) ||
+ hb_font_get_nominal_glyph (font, '-', &glyph)) &&
+ hb_font_get_glyph_extents (font, glyph, &extents))
{
- *coord = extents.y_bearing + extents.height / 2;
+ *coord = extents.y_bearing + extents.height / 2;
}
else
{
- hb_position_t x_height = 0;
- hb_ot_metrics_get_position (font, HB_OT_METRICS_TAG_X_HEIGHT, &x_height);
- *coord = x_height / 2;
+ hb_position_t x_height = font->y_scale / 2;
+#ifndef HB_NO_METRICS
+ hb_ot_metrics_get_position_with_fallback (font, HB_OT_METRICS_TAG_X_HEIGHT, &x_height);
+#endif
+ *coord = x_height / 2;
}
}
break;
@@ -2128,32 +2133,32 @@ hb_ot_layout_get_baseline_with_fallback (hb_font_t *font,
hb_position_t embox_top, embox_bottom;
hb_ot_layout_get_baseline_with_fallback (font,
- HB_OT_LAYOUT_BASELINE_TAG_IDEO_EMBOX_TOP_OR_RIGHT,
- direction,
- script_tag,
- language_tag,
- &embox_top);
+ HB_OT_LAYOUT_BASELINE_TAG_IDEO_EMBOX_TOP_OR_RIGHT,
+ direction,
+ script_tag,
+ language_tag,
+ &embox_top);
hb_ot_layout_get_baseline_with_fallback (font,
- HB_OT_LAYOUT_BASELINE_TAG_IDEO_EMBOX_BOTTOM_OR_LEFT,
- direction,
- script_tag,
- language_tag,
- &embox_bottom);
+ HB_OT_LAYOUT_BASELINE_TAG_IDEO_EMBOX_BOTTOM_OR_LEFT,
+ direction,
+ script_tag,
+ language_tag,
+ &embox_bottom);
if (baseline_tag == HB_OT_LAYOUT_BASELINE_TAG_IDEO_FACE_TOP_OR_RIGHT)
- *coord = embox_top + (embox_bottom - embox_top) / 10;
+ *coord = embox_top + (embox_bottom - embox_top) / 10;
else
- *coord = embox_bottom + (embox_top - embox_bottom) / 10;
+ *coord = embox_bottom + (embox_top - embox_bottom) / 10;
}
break;
case HB_OT_LAYOUT_BASELINE_TAG_IDEO_EMBOX_TOP_OR_RIGHT:
if (hb_ot_layout_get_baseline (font,
- HB_OT_LAYOUT_BASELINE_TAG_IDEO_EMBOX_BOTTOM_OR_LEFT,
- direction,
- script_tag,
- language_tag,
- coord))
+ HB_OT_LAYOUT_BASELINE_TAG_IDEO_EMBOX_BOTTOM_OR_LEFT,
+ direction,
+ script_tag,
+ language_tag,
+ coord))
*coord += HB_DIRECTION_IS_HORIZONTAL (direction) ? font->y_scale : font->x_scale;
else
{
@@ -2165,11 +2170,11 @@ hb_ot_layout_get_baseline_with_fallback (hb_font_t *font,
case HB_OT_LAYOUT_BASELINE_TAG_IDEO_EMBOX_BOTTOM_OR_LEFT:
if (hb_ot_layout_get_baseline (font,
- HB_OT_LAYOUT_BASELINE_TAG_IDEO_EMBOX_TOP_OR_RIGHT,
- direction,
- script_tag,
- language_tag,
- coord))
+ HB_OT_LAYOUT_BASELINE_TAG_IDEO_EMBOX_TOP_OR_RIGHT,
+ direction,
+ script_tag,
+ language_tag,
+ coord))
*coord -= HB_DIRECTION_IS_HORIZONTAL (direction) ? font->y_scale : font->x_scale;
else
{
@@ -2226,11 +2231,11 @@ hb_ot_layout_get_baseline_with_fallback (hb_font_t *font,
}
if (ch &&
- hb_font_get_nominal_glyph (font, ch, &glyph) &&
- hb_font_get_glyph_extents (font, glyph, &extents))
- *coord = extents.y_bearing;
+ hb_font_get_nominal_glyph (font, ch, &glyph) &&
+ hb_font_get_glyph_extents (font, glyph, &extents))
+ *coord = extents.y_bearing;
else
- *coord = font->y_scale * 6 / 10; // FIXME makes assumptions about origin
+ *coord = font->y_scale * 6 / 10; // FIXME makes assumptions about origin
}
else
*coord = font->x_scale * 6 / 10; // FIXME makes assumptions about origin
@@ -2240,17 +2245,17 @@ hb_ot_layout_get_baseline_with_fallback (hb_font_t *font,
{
hb_position_t top, bottom;
hb_ot_layout_get_baseline_with_fallback (font,
- HB_OT_LAYOUT_BASELINE_TAG_IDEO_EMBOX_TOP_OR_RIGHT,
- direction,
- script_tag,
- language_tag,
- &top);
+ HB_OT_LAYOUT_BASELINE_TAG_IDEO_EMBOX_TOP_OR_RIGHT,
+ direction,
+ script_tag,
+ language_tag,
+ &top);
hb_ot_layout_get_baseline_with_fallback (font,
- HB_OT_LAYOUT_BASELINE_TAG_IDEO_EMBOX_BOTTOM_OR_LEFT,
- direction,
- script_tag,
- language_tag,
- &bottom);
+ HB_OT_LAYOUT_BASELINE_TAG_IDEO_EMBOX_BOTTOM_OR_LEFT,
+ direction,
+ script_tag,
+ language_tag,
+ &bottom);
*coord = (top + bottom) / 2;
}
@@ -2260,17 +2265,17 @@ hb_ot_layout_get_baseline_with_fallback (hb_font_t *font,
{
hb_position_t top, bottom;
hb_ot_layout_get_baseline_with_fallback (font,
- HB_OT_LAYOUT_BASELINE_TAG_IDEO_FACE_TOP_OR_RIGHT,
- direction,
- script_tag,
- language_tag,
- &top);
+ HB_OT_LAYOUT_BASELINE_TAG_IDEO_FACE_TOP_OR_RIGHT,
+ direction,
+ script_tag,
+ language_tag,
+ &top);
hb_ot_layout_get_baseline_with_fallback (font,
- HB_OT_LAYOUT_BASELINE_TAG_IDEO_FACE_BOTTOM_OR_LEFT,
- direction,
- script_tag,
- language_tag,
- &bottom);
+ HB_OT_LAYOUT_BASELINE_TAG_IDEO_FACE_BOTTOM_OR_LEFT,
+ direction,
+ script_tag,
+ language_tag,
+ &bottom);
*coord = (top + bottom) / 2;
}
diff --git a/thirdparty/harfbuzz/src/hb-ot-layout.hh b/thirdparty/harfbuzz/src/hb-ot-layout.hh
index ede8f007db..75bba0bc50 100644
--- a/thirdparty/harfbuzz/src/hb-ot-layout.hh
+++ b/thirdparty/harfbuzz/src/hb-ot-layout.hh
@@ -108,13 +108,17 @@ hb_ot_layout_delete_glyphs_inplace (hb_buffer_t *buffer,
namespace OT {
struct hb_ot_apply_context_t;
- struct SubstLookup;
struct hb_ot_layout_lookup_accelerator_t;
+namespace Layout {
+namespace GSUB {
+ struct SubstLookup;
+}
+}
}
HB_INTERNAL void
hb_ot_layout_substitute_lookup (OT::hb_ot_apply_context_t *c,
- const OT::SubstLookup &lookup,
+ const OT::Layout::GSUB::SubstLookup &lookup,
const OT::hb_ot_layout_lookup_accelerator_t &accel);
@@ -168,17 +172,6 @@ _hb_next_syllable (hb_buffer_t *buffer, unsigned int start)
return start;
}
-static inline void
-_hb_clear_syllables (const hb_ot_shape_plan_t *plan HB_UNUSED,
- hb_font_t *font HB_UNUSED,
- hb_buffer_t *buffer)
-{
- hb_glyph_info_t *info = buffer->info;
- unsigned int count = buffer->len;
- for (unsigned int i = 0; i < count; i++)
- info[i].syllable() = 0;
-}
-
/* unicode_props */
@@ -485,6 +478,8 @@ static inline uint8_t
_hb_allocate_lig_id (hb_buffer_t *buffer)
{
uint8_t lig_id = buffer->next_serial () & 0x07;
+ if (unlikely (!lig_id))
+ lig_id = _hb_allocate_lig_id (buffer); /* in case of overflow */
return lig_id;
}
diff --git a/thirdparty/harfbuzz/src/hb-ot-map.cc b/thirdparty/harfbuzz/src/hb-ot-map.cc
index 12ceea5785..f085c78ff8 100644
--- a/thirdparty/harfbuzz/src/hb-ot-map.cc
+++ b/thirdparty/harfbuzz/src/hb-ot-map.cc
@@ -117,7 +117,8 @@ hb_ot_map_builder_t::add_lookups (hb_ot_map_t &m,
hb_mask_t mask,
bool auto_zwnj,
bool auto_zwj,
- bool random)
+ bool random,
+ bool per_syllable)
{
unsigned int lookup_indices[32];
unsigned int offset, len;
@@ -145,6 +146,7 @@ hb_ot_map_builder_t::add_lookups (hb_ot_map_t &m,
lookup->auto_zwnj = auto_zwnj;
lookup->auto_zwj = auto_zwj;
lookup->random = random;
+ lookup->per_syllable = per_syllable;
}
offset += len;
@@ -277,6 +279,7 @@ hb_ot_map_builder_t::compile (hb_ot_map_t &m,
map->auto_zwnj = !(info->flags & F_MANUAL_ZWNJ);
map->auto_zwj = !(info->flags & F_MANUAL_ZWJ);
map->random = !!(info->flags & F_RANDOM);
+ map->per_syllable = !!(info->flags & F_PER_SYLLABLE);
if ((info->flags & F_GLOBAL) && info->max_value == 1) {
/* Uses the global bit */
map->shift = global_bit_shift;
@@ -319,7 +322,8 @@ hb_ot_map_builder_t::compile (hb_ot_map_t &m,
m.features[i].mask,
m.features[i].auto_zwnj,
m.features[i].auto_zwj,
- m.features[i].random);
+ m.features[i].random,
+ m.features[i].per_syllable);
/* Sort lookups and merge duplicates */
if (last_num_lookups < m.lookups[table_index].length)
diff --git a/thirdparty/harfbuzz/src/hb-ot-map.hh b/thirdparty/harfbuzz/src/hb-ot-map.hh
index 5f2afae281..f1cbf752fc 100644
--- a/thirdparty/harfbuzz/src/hb-ot-map.hh
+++ b/thirdparty/harfbuzz/src/hb-ot-map.hh
@@ -56,6 +56,7 @@ struct hb_ot_map_t
unsigned int auto_zwnj : 1;
unsigned int auto_zwj : 1;
unsigned int random : 1;
+ unsigned int per_syllable : 1;
int cmp (const hb_tag_t tag_) const
{ return tag_ < tag ? -1 : tag_ > tag ? 1 : 0; }
@@ -66,6 +67,7 @@ struct hb_ot_map_t
unsigned short auto_zwnj : 1;
unsigned short auto_zwj : 1;
unsigned short random : 1;
+ unsigned short per_syllable : 1;
hb_mask_t mask;
HB_INTERNAL static int cmp (const void *pa, const void *pb)
@@ -183,7 +185,8 @@ enum hb_ot_map_feature_flags_t
F_GLOBAL_MANUAL_JOINERS= F_GLOBAL | F_MANUAL_JOINERS,
F_GLOBAL_HAS_FALLBACK = F_GLOBAL | F_HAS_FALLBACK,
F_GLOBAL_SEARCH = 0x0010u, /* If feature not found in LangSys, look for it in global feature list and pick one. */
- F_RANDOM = 0x0020u /* Randomly select a glyph from an AlternateSubstFormat1 subtable. */
+ F_RANDOM = 0x0020u, /* Randomly select a glyph from an AlternateSubstFormat1 subtable. */
+ F_PER_SYLLABLE = 0x0040u /* Contain lookup application to within syllable. */
};
HB_MARK_AS_FLAG_T (hb_ot_map_feature_flags_t);
@@ -237,7 +240,8 @@ struct hb_ot_map_builder_t
hb_mask_t mask,
bool auto_zwnj = true,
bool auto_zwj = true,
- bool random = false);
+ bool random = false,
+ bool per_syllable = false);
struct feature_info_t {
hb_tag_t tag;
diff --git a/thirdparty/harfbuzz/src/hb-ot-metrics.cc b/thirdparty/harfbuzz/src/hb-ot-metrics.cc
index 43c3cbd41f..f9c4b96fff 100644
--- a/thirdparty/harfbuzz/src/hb-ot-metrics.cc
+++ b/thirdparty/harfbuzz/src/hb-ot-metrics.cc
@@ -316,9 +316,9 @@ hb_ot_metrics_get_position_with_fallback (hb_font_t *font,
break;
case HB_OT_METRICS_TAG_X_HEIGHT:
- if (hb_font_get_nominal_glyph (font, 'o', &glyph) &&
+ if (hb_font_get_nominal_glyph (font, 'x', &glyph) &&
hb_font_get_glyph_extents (font, glyph, &extents))
- *position = extents.height + 2 * extents.y_bearing;
+ *position = extents.y_bearing;
else
*position = font->y_scale / 2;
break;
diff --git a/thirdparty/harfbuzz/src/hb-ot-shape-complex-indic.cc b/thirdparty/harfbuzz/src/hb-ot-shape-complex-indic.cc
index 4a8781c8f8..c80f7df6a9 100644
--- a/thirdparty/harfbuzz/src/hb-ot-shape-complex-indic.cc
+++ b/thirdparty/harfbuzz/src/hb-ot-shape-complex-indic.cc
@@ -109,17 +109,17 @@ indic_features[] =
* These features are applied in order, one at a time, after initial_reordering,
* constrained to the syllable.
*/
- {HB_TAG('n','u','k','t'), F_GLOBAL_MANUAL_JOINERS},
- {HB_TAG('a','k','h','n'), F_GLOBAL_MANUAL_JOINERS},
- {HB_TAG('r','p','h','f'), F_MANUAL_JOINERS},
- {HB_TAG('r','k','r','f'), F_GLOBAL_MANUAL_JOINERS},
- {HB_TAG('p','r','e','f'), F_MANUAL_JOINERS},
- {HB_TAG('b','l','w','f'), F_MANUAL_JOINERS},
- {HB_TAG('a','b','v','f'), F_MANUAL_JOINERS},
- {HB_TAG('h','a','l','f'), F_MANUAL_JOINERS},
- {HB_TAG('p','s','t','f'), F_MANUAL_JOINERS},
- {HB_TAG('v','a','t','u'), F_GLOBAL_MANUAL_JOINERS},
- {HB_TAG('c','j','c','t'), F_GLOBAL_MANUAL_JOINERS},
+ {HB_TAG('n','u','k','t'), F_GLOBAL_MANUAL_JOINERS | F_PER_SYLLABLE},
+ {HB_TAG('a','k','h','n'), F_GLOBAL_MANUAL_JOINERS | F_PER_SYLLABLE},
+ {HB_TAG('r','p','h','f'), F_MANUAL_JOINERS | F_PER_SYLLABLE},
+ {HB_TAG('r','k','r','f'), F_GLOBAL_MANUAL_JOINERS | F_PER_SYLLABLE},
+ {HB_TAG('p','r','e','f'), F_MANUAL_JOINERS | F_PER_SYLLABLE},
+ {HB_TAG('b','l','w','f'), F_MANUAL_JOINERS | F_PER_SYLLABLE},
+ {HB_TAG('a','b','v','f'), F_MANUAL_JOINERS | F_PER_SYLLABLE},
+ {HB_TAG('h','a','l','f'), F_MANUAL_JOINERS | F_PER_SYLLABLE},
+ {HB_TAG('p','s','t','f'), F_MANUAL_JOINERS | F_PER_SYLLABLE},
+ {HB_TAG('v','a','t','u'), F_GLOBAL_MANUAL_JOINERS | F_PER_SYLLABLE},
+ {HB_TAG('c','j','c','t'), F_GLOBAL_MANUAL_JOINERS | F_PER_SYLLABLE},
/*
* Other features.
* These features are applied all at once, after final_reordering, constrained
@@ -127,12 +127,12 @@ indic_features[] =
* Default Bengali font in Windows for example has intermixed
* lookups for init,pres,abvs,blws features.
*/
- {HB_TAG('i','n','i','t'), F_MANUAL_JOINERS},
- {HB_TAG('p','r','e','s'), F_GLOBAL_MANUAL_JOINERS},
- {HB_TAG('a','b','v','s'), F_GLOBAL_MANUAL_JOINERS},
- {HB_TAG('b','l','w','s'), F_GLOBAL_MANUAL_JOINERS},
- {HB_TAG('p','s','t','s'), F_GLOBAL_MANUAL_JOINERS},
- {HB_TAG('h','a','l','n'), F_GLOBAL_MANUAL_JOINERS},
+ {HB_TAG('i','n','i','t'), F_MANUAL_JOINERS | F_PER_SYLLABLE},
+ {HB_TAG('p','r','e','s'), F_GLOBAL_MANUAL_JOINERS | F_PER_SYLLABLE},
+ {HB_TAG('a','b','v','s'), F_GLOBAL_MANUAL_JOINERS | F_PER_SYLLABLE},
+ {HB_TAG('b','l','w','s'), F_GLOBAL_MANUAL_JOINERS | F_PER_SYLLABLE},
+ {HB_TAG('p','s','t','s'), F_GLOBAL_MANUAL_JOINERS | F_PER_SYLLABLE},
+ {HB_TAG('h','a','l','n'), F_GLOBAL_MANUAL_JOINERS | F_PER_SYLLABLE},
};
/*
@@ -183,10 +183,10 @@ collect_features_indic (hb_ot_shape_planner_t *plan)
/* Do this before any lookups have been applied. */
map->add_gsub_pause (setup_syllables_indic);
- map->enable_feature (HB_TAG('l','o','c','l'));
+ map->enable_feature (HB_TAG('l','o','c','l'), F_PER_SYLLABLE);
/* The Indic specs do not require ccmp, but we apply it here since if
* there is a use of it, it's typically at the beginning. */
- map->enable_feature (HB_TAG('c','c','m','p'));
+ map->enable_feature (HB_TAG('c','c','m','p'), F_PER_SYLLABLE);
unsigned int i = 0;
@@ -201,8 +201,6 @@ collect_features_indic (hb_ot_shape_planner_t *plan)
for (; i < INDIC_NUM_FEATURES; i++)
map->add_feature (indic_features[i]);
-
- map->add_gsub_pause (_hb_clear_syllables);
}
static void
diff --git a/thirdparty/harfbuzz/src/hb-ot-shape-complex-indic.hh b/thirdparty/harfbuzz/src/hb-ot-shape-complex-indic.hh
index dcb28a4e84..da77a2887c 100644
--- a/thirdparty/harfbuzz/src/hb-ot-shape-complex-indic.hh
+++ b/thirdparty/harfbuzz/src/hb-ot-shape-complex-indic.hh
@@ -368,6 +368,7 @@ set_indic_properties (hb_glyph_info_t &info)
else if (unlikely (u == 0x0980u)) cat = OT_PLACEHOLDER; /* https://github.com/harfbuzz/harfbuzz/issues/538 */
else if (unlikely (u == 0x09FCu)) cat = OT_PLACEHOLDER; /* https://github.com/harfbuzz/harfbuzz/pull/1613 */
else if (unlikely (u == 0x0C80u)) cat = OT_PLACEHOLDER; /* https://github.com/harfbuzz/harfbuzz/pull/623 */
+ else if (unlikely (u == 0x0D04u)) cat = OT_PLACEHOLDER; /* https://github.com/harfbuzz/harfbuzz/pull/3511 */
else if (unlikely (hb_in_range<hb_codepoint_t> (u, 0x2010u, 0x2011u)))
cat = OT_PLACEHOLDER;
else if (unlikely (u == 0x25CCu)) cat = OT_DOTTEDCIRCLE;
diff --git a/thirdparty/harfbuzz/src/hb-ot-shape-complex-khmer.cc b/thirdparty/harfbuzz/src/hb-ot-shape-complex-khmer.cc
index 7787886857..d7ec1632ea 100644
--- a/thirdparty/harfbuzz/src/hb-ot-shape-complex-khmer.cc
+++ b/thirdparty/harfbuzz/src/hb-ot-shape-complex-khmer.cc
@@ -45,11 +45,11 @@ khmer_features[] =
* These features are applied all at once, before reordering, constrained
* to the syllable.
*/
- {HB_TAG('p','r','e','f'), F_MANUAL_JOINERS},
- {HB_TAG('b','l','w','f'), F_MANUAL_JOINERS},
- {HB_TAG('a','b','v','f'), F_MANUAL_JOINERS},
- {HB_TAG('p','s','t','f'), F_MANUAL_JOINERS},
- {HB_TAG('c','f','a','r'), F_MANUAL_JOINERS},
+ {HB_TAG('p','r','e','f'), F_MANUAL_JOINERS | F_PER_SYLLABLE},
+ {HB_TAG('b','l','w','f'), F_MANUAL_JOINERS | F_PER_SYLLABLE},
+ {HB_TAG('a','b','v','f'), F_MANUAL_JOINERS | F_PER_SYLLABLE},
+ {HB_TAG('p','s','t','f'), F_MANUAL_JOINERS | F_PER_SYLLABLE},
+ {HB_TAG('c','f','a','r'), F_MANUAL_JOINERS | F_PER_SYLLABLE},
/*
* Other features.
* These features are applied all at once after clearing syllables.
@@ -107,16 +107,10 @@ collect_features_khmer (hb_ot_shape_planner_t *plan)
*
* https://github.com/harfbuzz/harfbuzz/issues/974
*/
- map->enable_feature (HB_TAG('l','o','c','l'));
- map->enable_feature (HB_TAG('c','c','m','p'));
+ map->enable_feature (HB_TAG('l','o','c','l'), F_PER_SYLLABLE);
+ map->enable_feature (HB_TAG('c','c','m','p'), F_PER_SYLLABLE);
- unsigned int i = 0;
- for (; i < KHMER_BASIC_FEATURES; i++)
- map->add_feature (khmer_features[i]);
-
- map->add_gsub_pause (_hb_clear_syllables);
-
- for (; i < KHMER_NUM_FEATURES; i++)
+ for (unsigned i = 0; i < KHMER_NUM_FEATURES; i++)
map->add_feature (khmer_features[i]);
}
diff --git a/thirdparty/harfbuzz/src/hb-ot-shape-complex-myanmar.cc b/thirdparty/harfbuzz/src/hb-ot-shape-complex-myanmar.cc
index e6ae75e8f2..c7aa80a79a 100644
--- a/thirdparty/harfbuzz/src/hb-ot-shape-complex-myanmar.cc
+++ b/thirdparty/harfbuzz/src/hb-ot-shape-complex-myanmar.cc
@@ -79,22 +79,20 @@ collect_features_myanmar (hb_ot_shape_planner_t *plan)
/* Do this before any lookups have been applied. */
map->add_gsub_pause (setup_syllables_myanmar);
- map->enable_feature (HB_TAG('l','o','c','l'));
+ map->enable_feature (HB_TAG('l','o','c','l'), F_PER_SYLLABLE);
/* The Indic specs do not require ccmp, but we apply it here since if
* there is a use of it, it's typically at the beginning. */
- map->enable_feature (HB_TAG('c','c','m','p'));
+ map->enable_feature (HB_TAG('c','c','m','p'), F_PER_SYLLABLE);
map->add_gsub_pause (reorder_myanmar);
for (unsigned int i = 0; i < ARRAY_LENGTH (myanmar_basic_features); i++)
{
- map->enable_feature (myanmar_basic_features[i], F_MANUAL_ZWJ);
+ map->enable_feature (myanmar_basic_features[i], F_MANUAL_ZWJ | F_PER_SYLLABLE);
map->add_gsub_pause (nullptr);
}
- map->add_gsub_pause (_hb_clear_syllables);
-
for (unsigned int i = 0; i < ARRAY_LENGTH (myanmar_other_features); i++)
map->enable_feature (myanmar_other_features[i], F_MANUAL_ZWJ);
}
diff --git a/thirdparty/harfbuzz/src/hb-ot-shape-complex-use-machine.hh b/thirdparty/harfbuzz/src/hb-ot-shape-complex-use-machine.hh
index 54f69c8284..468bd95c3f 100644
--- a/thirdparty/harfbuzz/src/hb-ot-shape-complex-use-machine.hh
+++ b/thirdparty/harfbuzz/src/hb-ot-shape-complex-use-machine.hh
@@ -69,7 +69,7 @@ enum use_syllable_type_t {
#define use_syllable_machine_ex_GB 5u
#define use_syllable_machine_ex_H 12u
#define use_syllable_machine_ex_HN 13u
-#define use_syllable_machine_ex_HVM 44u
+#define use_syllable_machine_ex_IS 44u
#define use_syllable_machine_ex_J 50u
#define use_syllable_machine_ex_MAbv 27u
#define use_syllable_machine_ex_MBlw 28u
@@ -98,406 +98,443 @@ enum use_syllable_type_t {
#line 100 "hb-ot-shape-complex-use-machine.hh"
static const unsigned char _use_syllable_machine_trans_keys[] = {
- 0u, 51u, 11u, 48u, 11u, 48u, 1u, 1u, 22u, 48u, 23u, 48u, 24u, 47u, 25u, 47u,
- 26u, 47u, 45u, 46u, 46u, 46u, 24u, 48u, 24u, 48u, 24u, 48u, 1u, 1u, 24u, 48u,
- 23u, 48u, 23u, 48u, 23u, 48u, 22u, 48u, 22u, 48u, 22u, 48u, 11u, 48u, 1u, 48u,
- 11u, 48u, 41u, 42u, 42u, 42u, 11u, 48u, 11u, 48u, 1u, 1u, 22u, 48u, 23u, 48u,
+ 0u, 51u, 11u, 48u, 11u, 48u, 1u, 48u, 23u, 48u, 24u, 47u, 25u, 47u, 26u, 47u,
+ 45u, 46u, 46u, 46u, 24u, 48u, 24u, 48u, 24u, 48u, 1u, 1u, 24u, 48u, 22u, 48u,
+ 23u, 48u, 23u, 48u, 23u, 48u, 12u, 48u, 12u, 48u, 12u, 48u, 12u, 48u, 11u, 48u,
+ 1u, 1u, 11u, 48u, 41u, 42u, 42u, 42u, 11u, 48u, 11u, 48u, 1u, 48u, 23u, 48u,
24u, 47u, 25u, 47u, 26u, 47u, 45u, 46u, 46u, 46u, 24u, 48u, 24u, 48u, 24u, 48u,
- 1u, 1u, 24u, 48u, 23u, 48u, 23u, 48u, 23u, 48u, 22u, 48u, 22u, 48u, 22u, 48u,
- 11u, 48u, 1u, 48u, 13u, 13u, 4u, 4u, 11u, 48u, 11u, 48u, 1u, 1u, 22u, 48u,
- 23u, 48u, 24u, 47u, 25u, 47u, 26u, 47u, 45u, 46u, 46u, 46u, 24u, 48u, 24u, 48u,
- 24u, 48u, 1u, 1u, 24u, 48u, 23u, 48u, 23u, 48u, 23u, 48u, 22u, 48u, 22u, 48u,
- 22u, 48u, 11u, 48u, 1u, 48u, 11u, 48u, 11u, 48u, 1u, 1u, 22u, 48u, 23u, 48u,
- 24u, 47u, 25u, 47u, 26u, 47u, 45u, 46u, 46u, 46u, 24u, 48u, 24u, 48u, 24u, 48u,
- 1u, 1u, 24u, 48u, 23u, 48u, 23u, 48u, 23u, 48u, 22u, 48u, 22u, 48u, 22u, 48u,
- 11u, 48u, 1u, 48u, 4u, 4u, 13u, 13u, 1u, 48u, 11u, 48u, 41u, 42u, 42u, 42u,
- 1u, 5u, 50u, 52u, 49u, 52u, 49u, 51u, 0
+ 1u, 1u, 24u, 48u, 22u, 48u, 23u, 48u, 23u, 48u, 23u, 48u, 12u, 48u, 12u, 48u,
+ 12u, 48u, 12u, 48u, 11u, 48u, 1u, 1u, 13u, 13u, 4u, 4u, 11u, 48u, 11u, 48u,
+ 1u, 48u, 23u, 48u, 24u, 47u, 25u, 47u, 26u, 47u, 45u, 46u, 46u, 46u, 24u, 48u,
+ 24u, 48u, 24u, 48u, 1u, 1u, 24u, 48u, 22u, 48u, 23u, 48u, 23u, 48u, 23u, 48u,
+ 12u, 48u, 12u, 48u, 12u, 48u, 12u, 48u, 11u, 48u, 1u, 1u, 11u, 48u, 11u, 48u,
+ 1u, 48u, 23u, 48u, 24u, 47u, 25u, 47u, 26u, 47u, 45u, 46u, 46u, 46u, 24u, 48u,
+ 24u, 48u, 24u, 48u, 1u, 1u, 24u, 48u, 22u, 48u, 23u, 48u, 23u, 48u, 23u, 48u,
+ 12u, 48u, 12u, 48u, 12u, 48u, 12u, 48u, 11u, 48u, 1u, 1u, 4u, 4u, 13u, 13u,
+ 1u, 48u, 11u, 48u, 41u, 42u, 42u, 42u, 1u, 5u, 50u, 52u, 49u, 52u, 49u, 51u,
+ 0
};
static const char _use_syllable_machine_key_spans[] = {
- 52, 38, 38, 1, 27, 26, 24, 23,
- 22, 2, 1, 25, 25, 25, 1, 25,
- 26, 26, 26, 27, 27, 27, 38, 48,
- 38, 2, 1, 38, 38, 1, 27, 26,
- 24, 23, 22, 2, 1, 25, 25, 25,
- 1, 25, 26, 26, 26, 27, 27, 27,
- 38, 48, 1, 1, 38, 38, 1, 27,
- 26, 24, 23, 22, 2, 1, 25, 25,
- 25, 1, 25, 26, 26, 26, 27, 27,
- 27, 38, 48, 38, 38, 1, 27, 26,
+ 52, 38, 38, 48, 26, 24, 23, 22,
+ 2, 1, 25, 25, 25, 1, 25, 27,
+ 26, 26, 26, 37, 37, 37, 37, 38,
+ 1, 38, 2, 1, 38, 38, 48, 26,
24, 23, 22, 2, 1, 25, 25, 25,
- 1, 25, 26, 26, 26, 27, 27, 27,
- 38, 48, 1, 1, 48, 38, 2, 1,
- 5, 3, 4, 3
+ 1, 25, 27, 26, 26, 26, 37, 37,
+ 37, 37, 38, 1, 1, 1, 38, 38,
+ 48, 26, 24, 23, 22, 2, 1, 25,
+ 25, 25, 1, 25, 27, 26, 26, 26,
+ 37, 37, 37, 37, 38, 1, 38, 38,
+ 48, 26, 24, 23, 22, 2, 1, 25,
+ 25, 25, 1, 25, 27, 26, 26, 26,
+ 37, 37, 37, 37, 38, 1, 1, 1,
+ 48, 38, 2, 1, 5, 3, 4, 3
};
static const short _use_syllable_machine_index_offsets[] = {
- 0, 53, 92, 131, 133, 161, 188, 213,
- 237, 260, 263, 265, 291, 317, 343, 345,
- 371, 398, 425, 452, 480, 508, 536, 575,
- 624, 663, 666, 668, 707, 746, 748, 776,
- 803, 828, 852, 875, 878, 880, 906, 932,
- 958, 960, 986, 1013, 1040, 1067, 1095, 1123,
- 1151, 1190, 1239, 1241, 1243, 1282, 1321, 1323,
- 1351, 1378, 1403, 1427, 1450, 1453, 1455, 1481,
- 1507, 1533, 1535, 1561, 1588, 1615, 1642, 1670,
- 1698, 1726, 1765, 1814, 1853, 1892, 1894, 1922,
- 1949, 1974, 1998, 2021, 2024, 2026, 2052, 2078,
- 2104, 2106, 2132, 2159, 2186, 2213, 2241, 2269,
- 2297, 2336, 2385, 2387, 2389, 2438, 2477, 2480,
- 2482, 2488, 2492, 2497
+ 0, 53, 92, 131, 180, 207, 232, 256,
+ 279, 282, 284, 310, 336, 362, 364, 390,
+ 418, 445, 472, 499, 537, 575, 613, 651,
+ 690, 692, 731, 734, 736, 775, 814, 863,
+ 890, 915, 939, 962, 965, 967, 993, 1019,
+ 1045, 1047, 1073, 1101, 1128, 1155, 1182, 1220,
+ 1258, 1296, 1334, 1373, 1375, 1377, 1379, 1418,
+ 1457, 1506, 1533, 1558, 1582, 1605, 1608, 1610,
+ 1636, 1662, 1688, 1690, 1716, 1744, 1771, 1798,
+ 1825, 1863, 1901, 1939, 1977, 2016, 2018, 2057,
+ 2096, 2145, 2172, 2197, 2221, 2244, 2247, 2249,
+ 2275, 2301, 2327, 2329, 2355, 2383, 2410, 2437,
+ 2464, 2502, 2540, 2578, 2616, 2655, 2657, 2659,
+ 2661, 2710, 2749, 2752, 2754, 2760, 2764, 2769
};
static const char _use_syllable_machine_indicies[] = {
0, 1, 2, 2, 3, 4, 2, 2,
2, 2, 2, 5, 6, 7, 2, 2,
2, 2, 8, 2, 2, 2, 9, 10,
- 11, 12, 13, 14, 15, 9, 16, 17,
- 18, 19, 20, 21, 2, 22, 23, 24,
- 2, 25, 26, 27, 28, 29, 30, 31,
- 6, 32, 2, 33, 2, 35, 36, 34,
- 34, 34, 34, 34, 34, 34, 34, 34,
- 37, 38, 39, 40, 41, 42, 43, 37,
- 44, 45, 46, 47, 48, 49, 34, 50,
- 51, 52, 34, 53, 54, 34, 55, 56,
- 57, 58, 36, 34, 35, 36, 34, 34,
- 34, 34, 34, 34, 34, 34, 34, 37,
- 38, 39, 40, 41, 42, 43, 37, 44,
- 46, 46, 47, 48, 49, 34, 50, 51,
- 52, 34, 34, 34, 34, 55, 56, 57,
- 58, 36, 34, 35, 34, 37, 38, 39,
- 40, 41, 34, 34, 34, 34, 34, 34,
- 47, 48, 49, 34, 50, 51, 52, 34,
- 34, 34, 34, 38, 56, 57, 58, 59,
- 34, 38, 39, 40, 41, 34, 34, 34,
- 34, 34, 34, 34, 34, 34, 34, 50,
- 51, 52, 34, 34, 34, 34, 34, 56,
- 57, 58, 59, 34, 39, 40, 41, 34,
- 34, 34, 34, 34, 34, 34, 34, 34,
- 34, 34, 34, 34, 34, 34, 34, 34,
- 34, 56, 57, 58, 34, 40, 41, 34,
- 34, 34, 34, 34, 34, 34, 34, 34,
- 34, 34, 34, 34, 34, 34, 34, 34,
- 34, 56, 57, 58, 34, 41, 34, 34,
- 34, 34, 34, 34, 34, 34, 34, 34,
- 34, 34, 34, 34, 34, 34, 34, 34,
- 56, 57, 58, 34, 56, 57, 34, 57,
- 34, 39, 40, 41, 34, 34, 34, 34,
- 34, 34, 34, 34, 34, 34, 50, 51,
- 52, 34, 34, 34, 34, 34, 56, 57,
- 58, 59, 34, 39, 40, 41, 34, 34,
- 34, 34, 34, 34, 34, 34, 34, 34,
- 34, 51, 52, 34, 34, 34, 34, 34,
- 56, 57, 58, 59, 34, 39, 40, 41,
- 34, 34, 34, 34, 34, 34, 34, 34,
- 34, 34, 34, 34, 52, 34, 34, 34,
- 34, 34, 56, 57, 58, 59, 34, 60,
- 34, 39, 40, 41, 34, 34, 34, 34,
- 34, 34, 34, 34, 34, 34, 34, 34,
- 34, 34, 34, 34, 34, 34, 56, 57,
- 58, 59, 34, 38, 39, 40, 41, 34,
- 34, 34, 34, 34, 34, 47, 48, 49,
- 34, 50, 51, 52, 34, 34, 34, 34,
- 38, 56, 57, 58, 59, 34, 38, 39,
- 40, 41, 34, 34, 34, 34, 34, 34,
- 34, 48, 49, 34, 50, 51, 52, 34,
- 34, 34, 34, 38, 56, 57, 58, 59,
- 34, 38, 39, 40, 41, 34, 34, 34,
- 34, 34, 34, 34, 34, 49, 34, 50,
- 51, 52, 34, 34, 34, 34, 38, 56,
- 57, 58, 59, 34, 37, 38, 39, 40,
- 41, 34, 43, 37, 34, 34, 34, 47,
- 48, 49, 34, 50, 51, 52, 34, 34,
- 34, 34, 38, 56, 57, 58, 59, 34,
- 37, 38, 39, 40, 41, 34, 34, 37,
- 34, 34, 34, 47, 48, 49, 34, 50,
- 51, 52, 34, 34, 34, 34, 38, 56,
- 57, 58, 59, 34, 37, 38, 39, 40,
- 41, 42, 43, 37, 34, 34, 34, 47,
- 48, 49, 34, 50, 51, 52, 34, 34,
- 34, 34, 38, 56, 57, 58, 59, 34,
- 35, 36, 34, 34, 34, 34, 34, 34,
- 34, 34, 34, 37, 38, 39, 40, 41,
- 42, 43, 37, 44, 34, 46, 47, 48,
- 49, 34, 50, 51, 52, 34, 34, 34,
- 34, 55, 56, 57, 58, 36, 34, 35,
- 34, 34, 34, 34, 34, 34, 34, 34,
- 34, 34, 34, 34, 34, 34, 34, 34,
- 34, 34, 34, 34, 34, 38, 39, 40,
- 41, 34, 34, 34, 34, 34, 34, 34,
- 34, 34, 34, 50, 51, 52, 34, 34,
- 34, 34, 34, 56, 57, 58, 59, 34,
- 35, 36, 34, 34, 34, 34, 34, 34,
- 34, 34, 34, 37, 38, 39, 40, 41,
- 42, 43, 37, 44, 45, 46, 47, 48,
- 49, 34, 50, 51, 52, 34, 34, 34,
- 34, 55, 56, 57, 58, 36, 34, 53,
- 54, 34, 54, 34, 62, 63, 61, 61,
- 61, 61, 61, 61, 61, 61, 61, 64,
- 65, 66, 67, 68, 69, 70, 64, 71,
- 1, 72, 73, 74, 75, 61, 76, 77,
- 78, 61, 61, 61, 61, 79, 80, 81,
- 82, 63, 61, 62, 63, 61, 61, 61,
- 61, 61, 61, 61, 61, 61, 64, 65,
- 66, 67, 68, 69, 70, 64, 71, 72,
- 72, 73, 74, 75, 61, 76, 77, 78,
- 61, 61, 61, 61, 79, 80, 81, 82,
- 63, 61, 62, 83, 64, 65, 66, 67,
- 68, 61, 61, 61, 61, 61, 61, 73,
- 74, 75, 61, 76, 77, 78, 61, 61,
- 61, 61, 65, 80, 81, 82, 84, 61,
- 65, 66, 67, 68, 61, 61, 61, 61,
- 61, 61, 61, 61, 61, 61, 76, 77,
- 78, 61, 61, 61, 61, 61, 80, 81,
- 82, 84, 61, 66, 67, 68, 61, 61,
- 61, 61, 61, 61, 61, 61, 61, 61,
- 61, 61, 61, 61, 61, 61, 61, 61,
- 80, 81, 82, 61, 67, 68, 61, 61,
- 61, 61, 61, 61, 61, 61, 61, 61,
- 61, 61, 61, 61, 61, 61, 61, 61,
- 80, 81, 82, 61, 68, 61, 61, 61,
- 61, 61, 61, 61, 61, 61, 61, 61,
- 61, 61, 61, 61, 61, 61, 61, 80,
- 81, 82, 61, 80, 81, 61, 81, 61,
- 66, 67, 68, 61, 61, 61, 61, 61,
- 61, 61, 61, 61, 61, 76, 77, 78,
- 61, 61, 61, 61, 61, 80, 81, 82,
- 84, 61, 66, 67, 68, 61, 61, 61,
- 61, 61, 61, 61, 61, 61, 61, 61,
- 77, 78, 61, 61, 61, 61, 61, 80,
- 81, 82, 84, 61, 66, 67, 68, 61,
- 61, 61, 61, 61, 61, 61, 61, 61,
- 61, 61, 61, 78, 61, 61, 61, 61,
- 61, 80, 81, 82, 84, 61, 86, 85,
- 66, 67, 68, 61, 61, 61, 61, 61,
- 61, 61, 61, 61, 61, 61, 61, 61,
- 61, 61, 61, 61, 61, 80, 81, 82,
- 84, 61, 65, 66, 67, 68, 61, 61,
- 61, 61, 61, 61, 73, 74, 75, 61,
- 76, 77, 78, 61, 61, 61, 61, 65,
- 80, 81, 82, 84, 61, 65, 66, 67,
- 68, 61, 61, 61, 61, 61, 61, 61,
- 74, 75, 61, 76, 77, 78, 61, 61,
- 61, 61, 65, 80, 81, 82, 84, 61,
- 65, 66, 67, 68, 61, 61, 61, 61,
- 61, 61, 61, 61, 75, 61, 76, 77,
- 78, 61, 61, 61, 61, 65, 80, 81,
- 82, 84, 61, 64, 65, 66, 67, 68,
- 61, 70, 64, 61, 61, 61, 73, 74,
- 75, 61, 76, 77, 78, 61, 61, 61,
- 61, 65, 80, 81, 82, 84, 61, 64,
- 65, 66, 67, 68, 61, 61, 64, 61,
- 61, 61, 73, 74, 75, 61, 76, 77,
- 78, 61, 61, 61, 61, 65, 80, 81,
- 82, 84, 61, 64, 65, 66, 67, 68,
- 69, 70, 64, 61, 61, 61, 73, 74,
- 75, 61, 76, 77, 78, 61, 61, 61,
- 61, 65, 80, 81, 82, 84, 61, 62,
- 63, 61, 61, 61, 61, 61, 61, 61,
- 61, 61, 64, 65, 66, 67, 68, 69,
- 70, 64, 71, 61, 72, 73, 74, 75,
- 61, 76, 77, 78, 61, 61, 61, 61,
- 79, 80, 81, 82, 63, 61, 62, 83,
- 83, 83, 83, 83, 83, 83, 83, 83,
- 83, 83, 83, 83, 83, 83, 83, 83,
- 83, 83, 83, 83, 65, 66, 67, 68,
- 83, 83, 83, 83, 83, 83, 83, 83,
- 83, 83, 76, 77, 78, 83, 83, 83,
- 83, 83, 80, 81, 82, 84, 83, 88,
- 87, 3, 89, 90, 91, 61, 61, 61,
- 61, 61, 61, 61, 61, 61, 92, 93,
- 94, 95, 96, 97, 98, 92, 99, 100,
- 101, 102, 103, 104, 61, 105, 106, 107,
- 61, 53, 54, 61, 108, 109, 110, 82,
- 91, 61, 90, 91, 61, 61, 61, 61,
- 61, 61, 61, 61, 61, 92, 93, 94,
- 95, 96, 97, 98, 92, 99, 101, 101,
- 102, 103, 104, 61, 105, 106, 107, 61,
- 61, 61, 61, 108, 109, 110, 82, 91,
- 61, 90, 83, 92, 93, 94, 95, 96,
- 61, 61, 61, 61, 61, 61, 102, 103,
- 104, 61, 105, 106, 107, 61, 61, 61,
- 61, 93, 109, 110, 82, 111, 61, 93,
- 94, 95, 96, 61, 61, 61, 61, 61,
- 61, 61, 61, 61, 61, 105, 106, 107,
- 61, 61, 61, 61, 61, 109, 110, 82,
- 111, 61, 94, 95, 96, 61, 61, 61,
- 61, 61, 61, 61, 61, 61, 61, 61,
- 61, 61, 61, 61, 61, 61, 61, 109,
- 110, 82, 61, 95, 96, 61, 61, 61,
- 61, 61, 61, 61, 61, 61, 61, 61,
- 61, 61, 61, 61, 61, 61, 61, 109,
- 110, 82, 61, 96, 61, 61, 61, 61,
- 61, 61, 61, 61, 61, 61, 61, 61,
- 61, 61, 61, 61, 61, 61, 109, 110,
- 82, 61, 109, 110, 61, 110, 61, 94,
- 95, 96, 61, 61, 61, 61, 61, 61,
- 61, 61, 61, 61, 105, 106, 107, 61,
- 61, 61, 61, 61, 109, 110, 82, 111,
- 61, 94, 95, 96, 61, 61, 61, 61,
- 61, 61, 61, 61, 61, 61, 61, 106,
- 107, 61, 61, 61, 61, 61, 109, 110,
- 82, 111, 61, 94, 95, 96, 61, 61,
- 61, 61, 61, 61, 61, 61, 61, 61,
- 61, 61, 107, 61, 61, 61, 61, 61,
- 109, 110, 82, 111, 61, 112, 85, 94,
- 95, 96, 61, 61, 61, 61, 61, 61,
- 61, 61, 61, 61, 61, 61, 61, 61,
- 61, 61, 61, 61, 109, 110, 82, 111,
- 61, 93, 94, 95, 96, 61, 61, 61,
- 61, 61, 61, 102, 103, 104, 61, 105,
- 106, 107, 61, 61, 61, 61, 93, 109,
- 110, 82, 111, 61, 93, 94, 95, 96,
- 61, 61, 61, 61, 61, 61, 61, 103,
- 104, 61, 105, 106, 107, 61, 61, 61,
- 61, 93, 109, 110, 82, 111, 61, 93,
- 94, 95, 96, 61, 61, 61, 61, 61,
- 61, 61, 61, 104, 61, 105, 106, 107,
- 61, 61, 61, 61, 93, 109, 110, 82,
- 111, 61, 92, 93, 94, 95, 96, 61,
- 98, 92, 61, 61, 61, 102, 103, 104,
- 61, 105, 106, 107, 61, 61, 61, 61,
- 93, 109, 110, 82, 111, 61, 92, 93,
- 94, 95, 96, 61, 61, 92, 61, 61,
- 61, 102, 103, 104, 61, 105, 106, 107,
- 61, 61, 61, 61, 93, 109, 110, 82,
- 111, 61, 92, 93, 94, 95, 96, 97,
- 98, 92, 61, 61, 61, 102, 103, 104,
- 61, 105, 106, 107, 61, 61, 61, 61,
- 93, 109, 110, 82, 111, 61, 90, 91,
- 61, 61, 61, 61, 61, 61, 61, 61,
- 61, 92, 93, 94, 95, 96, 97, 98,
- 92, 99, 61, 101, 102, 103, 104, 61,
- 105, 106, 107, 61, 61, 61, 61, 108,
- 109, 110, 82, 91, 61, 90, 83, 83,
- 83, 83, 83, 83, 83, 83, 83, 83,
- 83, 83, 83, 83, 83, 83, 83, 83,
- 83, 83, 83, 93, 94, 95, 96, 83,
- 83, 83, 83, 83, 83, 83, 83, 83,
- 83, 105, 106, 107, 83, 83, 83, 83,
- 83, 109, 110, 82, 111, 83, 90, 91,
- 61, 61, 61, 61, 61, 61, 61, 61,
- 61, 92, 93, 94, 95, 96, 97, 98,
- 92, 99, 100, 101, 102, 103, 104, 61,
- 105, 106, 107, 61, 61, 61, 61, 108,
- 109, 110, 82, 91, 61, 5, 6, 113,
- 113, 113, 113, 113, 113, 113, 113, 113,
- 9, 10, 11, 12, 13, 14, 15, 9,
- 16, 18, 18, 19, 20, 21, 113, 22,
- 23, 24, 113, 113, 113, 113, 28, 29,
- 30, 31, 6, 113, 5, 113, 9, 10,
- 11, 12, 13, 113, 113, 113, 113, 113,
- 113, 19, 20, 21, 113, 22, 23, 24,
- 113, 113, 113, 113, 10, 29, 30, 31,
- 114, 113, 10, 11, 12, 13, 113, 113,
- 113, 113, 113, 113, 113, 113, 113, 113,
- 22, 23, 24, 113, 113, 113, 113, 113,
- 29, 30, 31, 114, 113, 11, 12, 13,
- 113, 113, 113, 113, 113, 113, 113, 113,
- 113, 113, 113, 113, 113, 113, 113, 113,
- 113, 113, 29, 30, 31, 113, 12, 13,
- 113, 113, 113, 113, 113, 113, 113, 113,
- 113, 113, 113, 113, 113, 113, 113, 113,
- 113, 113, 29, 30, 31, 113, 13, 113,
- 113, 113, 113, 113, 113, 113, 113, 113,
- 113, 113, 113, 113, 113, 113, 113, 113,
- 113, 29, 30, 31, 113, 29, 30, 113,
- 30, 113, 11, 12, 13, 113, 113, 113,
- 113, 113, 113, 113, 113, 113, 113, 22,
- 23, 24, 113, 113, 113, 113, 113, 29,
- 30, 31, 114, 113, 11, 12, 13, 113,
- 113, 113, 113, 113, 113, 113, 113, 113,
- 113, 113, 23, 24, 113, 113, 113, 113,
- 113, 29, 30, 31, 114, 113, 11, 12,
- 13, 113, 113, 113, 113, 113, 113, 113,
- 113, 113, 113, 113, 113, 24, 113, 113,
- 113, 113, 113, 29, 30, 31, 114, 113,
- 115, 113, 11, 12, 13, 113, 113, 113,
- 113, 113, 113, 113, 113, 113, 113, 113,
- 113, 113, 113, 113, 113, 113, 113, 29,
- 30, 31, 114, 113, 10, 11, 12, 13,
- 113, 113, 113, 113, 113, 113, 19, 20,
- 21, 113, 22, 23, 24, 113, 113, 113,
- 113, 10, 29, 30, 31, 114, 113, 10,
- 11, 12, 13, 113, 113, 113, 113, 113,
- 113, 113, 20, 21, 113, 22, 23, 24,
- 113, 113, 113, 113, 10, 29, 30, 31,
- 114, 113, 10, 11, 12, 13, 113, 113,
- 113, 113, 113, 113, 113, 113, 21, 113,
- 22, 23, 24, 113, 113, 113, 113, 10,
- 29, 30, 31, 114, 113, 9, 10, 11,
- 12, 13, 113, 15, 9, 113, 113, 113,
- 19, 20, 21, 113, 22, 23, 24, 113,
- 113, 113, 113, 10, 29, 30, 31, 114,
- 113, 9, 10, 11, 12, 13, 113, 113,
- 9, 113, 113, 113, 19, 20, 21, 113,
- 22, 23, 24, 113, 113, 113, 113, 10,
- 29, 30, 31, 114, 113, 9, 10, 11,
- 12, 13, 14, 15, 9, 113, 113, 113,
- 19, 20, 21, 113, 22, 23, 24, 113,
- 113, 113, 113, 10, 29, 30, 31, 114,
- 113, 5, 6, 113, 113, 113, 113, 113,
- 113, 113, 113, 113, 9, 10, 11, 12,
- 13, 14, 15, 9, 16, 113, 18, 19,
- 20, 21, 113, 22, 23, 24, 113, 113,
- 113, 113, 28, 29, 30, 31, 6, 113,
- 5, 113, 113, 113, 113, 113, 113, 113,
- 113, 113, 113, 113, 113, 113, 113, 113,
- 113, 113, 113, 113, 113, 113, 10, 11,
- 12, 13, 113, 113, 113, 113, 113, 113,
- 113, 113, 113, 113, 22, 23, 24, 113,
- 113, 113, 113, 113, 29, 30, 31, 114,
- 113, 116, 113, 7, 113, 1, 113, 113,
- 113, 1, 113, 113, 113, 113, 113, 5,
- 6, 7, 113, 113, 113, 113, 113, 113,
- 113, 113, 9, 10, 11, 12, 13, 14,
- 15, 9, 16, 17, 18, 19, 20, 21,
- 113, 22, 23, 24, 113, 25, 26, 113,
- 28, 29, 30, 31, 6, 113, 5, 6,
- 113, 113, 113, 113, 113, 113, 113, 113,
- 113, 9, 10, 11, 12, 13, 14, 15,
- 9, 16, 17, 18, 19, 20, 21, 113,
- 22, 23, 24, 113, 113, 113, 113, 28,
- 29, 30, 31, 6, 113, 25, 26, 113,
- 26, 113, 1, 117, 117, 117, 1, 117,
- 119, 118, 32, 118, 32, 119, 118, 119,
- 118, 32, 118, 33, 118, 0
+ 11, 12, 13, 14, 15, 16, 17, 18,
+ 19, 20, 21, 22, 2, 23, 24, 25,
+ 2, 26, 27, 28, 29, 30, 31, 32,
+ 29, 33, 2, 34, 2, 36, 37, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35,
+ 38, 39, 40, 41, 42, 43, 44, 45,
+ 46, 47, 48, 49, 50, 51, 35, 52,
+ 53, 54, 35, 55, 56, 35, 57, 58,
+ 59, 60, 57, 35, 36, 37, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 38,
+ 39, 40, 41, 42, 43, 44, 45, 46,
+ 48, 48, 49, 50, 51, 35, 52, 53,
+ 54, 35, 35, 35, 35, 57, 58, 59,
+ 60, 57, 35, 36, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 39, 40, 41, 42, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 52,
+ 53, 54, 35, 35, 35, 35, 35, 58,
+ 59, 60, 61, 35, 39, 40, 41, 42,
+ 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 52, 53, 54, 35, 35, 35,
+ 35, 35, 58, 59, 60, 61, 35, 40,
+ 41, 42, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 58, 59, 60, 35,
+ 41, 42, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 58, 59, 60, 35,
+ 42, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 58, 59, 60, 35, 58,
+ 59, 35, 59, 35, 40, 41, 42, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 52, 53, 54, 35, 35, 35, 35,
+ 35, 58, 59, 60, 61, 35, 40, 41,
+ 42, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 53, 54, 35, 35,
+ 35, 35, 35, 58, 59, 60, 61, 35,
+ 40, 41, 42, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 54,
+ 35, 35, 35, 35, 35, 58, 59, 60,
+ 61, 35, 62, 35, 40, 41, 42, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 58, 59, 60, 61, 35, 38, 39,
+ 40, 41, 42, 35, 35, 35, 35, 35,
+ 35, 49, 50, 51, 35, 52, 53, 54,
+ 35, 35, 35, 35, 35, 58, 59, 60,
+ 61, 35, 39, 40, 41, 42, 35, 35,
+ 35, 35, 35, 35, 49, 50, 51, 35,
+ 52, 53, 54, 35, 35, 35, 35, 35,
+ 58, 59, 60, 61, 35, 39, 40, 41,
+ 42, 35, 35, 35, 35, 35, 35, 35,
+ 50, 51, 35, 52, 53, 54, 35, 35,
+ 35, 35, 35, 58, 59, 60, 61, 35,
+ 39, 40, 41, 42, 35, 35, 35, 35,
+ 35, 35, 35, 35, 51, 35, 52, 53,
+ 54, 35, 35, 35, 35, 35, 58, 59,
+ 60, 61, 35, 39, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 38, 39, 40,
+ 41, 42, 35, 44, 45, 35, 35, 35,
+ 49, 50, 51, 35, 52, 53, 54, 35,
+ 35, 35, 35, 35, 58, 59, 60, 61,
+ 35, 39, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 38, 39, 40, 41, 42,
+ 35, 35, 45, 35, 35, 35, 49, 50,
+ 51, 35, 52, 53, 54, 35, 35, 35,
+ 35, 35, 58, 59, 60, 61, 35, 39,
+ 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 38, 39, 40, 41, 42, 35, 35,
+ 35, 35, 35, 35, 49, 50, 51, 35,
+ 52, 53, 54, 35, 35, 35, 35, 35,
+ 58, 59, 60, 61, 35, 39, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 38,
+ 39, 40, 41, 42, 43, 44, 45, 35,
+ 35, 35, 49, 50, 51, 35, 52, 53,
+ 54, 35, 35, 35, 35, 35, 58, 59,
+ 60, 61, 35, 36, 37, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 38, 39,
+ 40, 41, 42, 43, 44, 45, 46, 35,
+ 48, 49, 50, 51, 35, 52, 53, 54,
+ 35, 35, 35, 35, 57, 58, 59, 60,
+ 57, 35, 36, 35, 36, 37, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 38,
+ 39, 40, 41, 42, 43, 44, 45, 46,
+ 47, 48, 49, 50, 51, 35, 52, 53,
+ 54, 35, 35, 35, 35, 57, 58, 59,
+ 60, 57, 35, 55, 56, 35, 56, 35,
+ 64, 65, 63, 63, 63, 63, 63, 63,
+ 63, 63, 63, 66, 67, 68, 69, 70,
+ 71, 72, 73, 74, 1, 75, 76, 77,
+ 78, 63, 79, 80, 81, 63, 63, 63,
+ 63, 82, 83, 84, 85, 86, 63, 64,
+ 65, 63, 63, 63, 63, 63, 63, 63,
+ 63, 63, 66, 67, 68, 69, 70, 71,
+ 72, 73, 74, 75, 75, 76, 77, 78,
+ 63, 79, 80, 81, 63, 63, 63, 63,
+ 82, 83, 84, 85, 86, 63, 64, 63,
+ 63, 63, 63, 63, 63, 63, 63, 63,
+ 63, 63, 63, 63, 63, 63, 63, 63,
+ 63, 63, 63, 63, 67, 68, 69, 70,
+ 63, 63, 63, 63, 63, 63, 63, 63,
+ 63, 63, 79, 80, 81, 63, 63, 63,
+ 63, 63, 83, 84, 85, 87, 63, 67,
+ 68, 69, 70, 63, 63, 63, 63, 63,
+ 63, 63, 63, 63, 63, 79, 80, 81,
+ 63, 63, 63, 63, 63, 83, 84, 85,
+ 87, 63, 68, 69, 70, 63, 63, 63,
+ 63, 63, 63, 63, 63, 63, 63, 63,
+ 63, 63, 63, 63, 63, 63, 63, 83,
+ 84, 85, 63, 69, 70, 63, 63, 63,
+ 63, 63, 63, 63, 63, 63, 63, 63,
+ 63, 63, 63, 63, 63, 63, 63, 83,
+ 84, 85, 63, 70, 63, 63, 63, 63,
+ 63, 63, 63, 63, 63, 63, 63, 63,
+ 63, 63, 63, 63, 63, 63, 83, 84,
+ 85, 63, 83, 84, 63, 84, 63, 68,
+ 69, 70, 63, 63, 63, 63, 63, 63,
+ 63, 63, 63, 63, 79, 80, 81, 63,
+ 63, 63, 63, 63, 83, 84, 85, 87,
+ 63, 68, 69, 70, 63, 63, 63, 63,
+ 63, 63, 63, 63, 63, 63, 63, 80,
+ 81, 63, 63, 63, 63, 63, 83, 84,
+ 85, 87, 63, 68, 69, 70, 63, 63,
+ 63, 63, 63, 63, 63, 63, 63, 63,
+ 63, 63, 81, 63, 63, 63, 63, 63,
+ 83, 84, 85, 87, 63, 89, 88, 68,
+ 69, 70, 63, 63, 63, 63, 63, 63,
+ 63, 63, 63, 63, 63, 63, 63, 63,
+ 63, 63, 63, 63, 83, 84, 85, 87,
+ 63, 66, 67, 68, 69, 70, 63, 63,
+ 63, 63, 63, 63, 76, 77, 78, 63,
+ 79, 80, 81, 63, 63, 63, 63, 63,
+ 83, 84, 85, 87, 63, 67, 68, 69,
+ 70, 63, 63, 63, 63, 63, 63, 76,
+ 77, 78, 63, 79, 80, 81, 63, 63,
+ 63, 63, 63, 83, 84, 85, 87, 63,
+ 67, 68, 69, 70, 63, 63, 63, 63,
+ 63, 63, 63, 77, 78, 63, 79, 80,
+ 81, 63, 63, 63, 63, 63, 83, 84,
+ 85, 87, 63, 67, 68, 69, 70, 63,
+ 63, 63, 63, 63, 63, 63, 63, 78,
+ 63, 79, 80, 81, 63, 63, 63, 63,
+ 63, 83, 84, 85, 87, 63, 67, 63,
+ 63, 63, 63, 63, 63, 63, 63, 63,
+ 66, 67, 68, 69, 70, 63, 72, 73,
+ 63, 63, 63, 76, 77, 78, 63, 79,
+ 80, 81, 63, 63, 63, 63, 63, 83,
+ 84, 85, 87, 63, 67, 63, 63, 63,
+ 63, 63, 63, 63, 63, 63, 66, 67,
+ 68, 69, 70, 63, 63, 73, 63, 63,
+ 63, 76, 77, 78, 63, 79, 80, 81,
+ 63, 63, 63, 63, 63, 83, 84, 85,
+ 87, 63, 67, 63, 63, 63, 63, 63,
+ 63, 63, 63, 63, 66, 67, 68, 69,
+ 70, 63, 63, 63, 63, 63, 63, 76,
+ 77, 78, 63, 79, 80, 81, 63, 63,
+ 63, 63, 63, 83, 84, 85, 87, 63,
+ 67, 63, 63, 63, 63, 63, 63, 63,
+ 63, 63, 66, 67, 68, 69, 70, 71,
+ 72, 73, 63, 63, 63, 76, 77, 78,
+ 63, 79, 80, 81, 63, 63, 63, 63,
+ 63, 83, 84, 85, 87, 63, 64, 65,
+ 63, 63, 63, 63, 63, 63, 63, 63,
+ 63, 66, 67, 68, 69, 70, 71, 72,
+ 73, 74, 63, 75, 76, 77, 78, 63,
+ 79, 80, 81, 63, 63, 63, 63, 82,
+ 83, 84, 85, 86, 63, 64, 90, 92,
+ 91, 3, 93, 94, 95, 63, 63, 63,
+ 63, 63, 63, 63, 63, 63, 96, 97,
+ 98, 99, 100, 101, 102, 103, 104, 105,
+ 106, 107, 108, 109, 63, 110, 111, 112,
+ 63, 55, 56, 63, 113, 114, 115, 85,
+ 116, 63, 94, 95, 63, 63, 63, 63,
+ 63, 63, 63, 63, 63, 96, 97, 98,
+ 99, 100, 101, 102, 103, 104, 106, 106,
+ 107, 108, 109, 63, 110, 111, 112, 63,
+ 63, 63, 63, 113, 114, 115, 85, 116,
+ 63, 94, 63, 63, 63, 63, 63, 63,
+ 63, 63, 63, 63, 63, 63, 63, 63,
+ 63, 63, 63, 63, 63, 63, 63, 97,
+ 98, 99, 100, 63, 63, 63, 63, 63,
+ 63, 63, 63, 63, 63, 110, 111, 112,
+ 63, 63, 63, 63, 63, 114, 115, 85,
+ 117, 63, 97, 98, 99, 100, 63, 63,
+ 63, 63, 63, 63, 63, 63, 63, 63,
+ 110, 111, 112, 63, 63, 63, 63, 63,
+ 114, 115, 85, 117, 63, 98, 99, 100,
+ 63, 63, 63, 63, 63, 63, 63, 63,
+ 63, 63, 63, 63, 63, 63, 63, 63,
+ 63, 63, 114, 115, 85, 63, 99, 100,
+ 63, 63, 63, 63, 63, 63, 63, 63,
+ 63, 63, 63, 63, 63, 63, 63, 63,
+ 63, 63, 114, 115, 85, 63, 100, 63,
+ 63, 63, 63, 63, 63, 63, 63, 63,
+ 63, 63, 63, 63, 63, 63, 63, 63,
+ 63, 114, 115, 85, 63, 114, 115, 63,
+ 115, 63, 98, 99, 100, 63, 63, 63,
+ 63, 63, 63, 63, 63, 63, 63, 110,
+ 111, 112, 63, 63, 63, 63, 63, 114,
+ 115, 85, 117, 63, 98, 99, 100, 63,
+ 63, 63, 63, 63, 63, 63, 63, 63,
+ 63, 63, 111, 112, 63, 63, 63, 63,
+ 63, 114, 115, 85, 117, 63, 98, 99,
+ 100, 63, 63, 63, 63, 63, 63, 63,
+ 63, 63, 63, 63, 63, 112, 63, 63,
+ 63, 63, 63, 114, 115, 85, 117, 63,
+ 118, 88, 98, 99, 100, 63, 63, 63,
+ 63, 63, 63, 63, 63, 63, 63, 63,
+ 63, 63, 63, 63, 63, 63, 63, 114,
+ 115, 85, 117, 63, 96, 97, 98, 99,
+ 100, 63, 63, 63, 63, 63, 63, 107,
+ 108, 109, 63, 110, 111, 112, 63, 63,
+ 63, 63, 63, 114, 115, 85, 117, 63,
+ 97, 98, 99, 100, 63, 63, 63, 63,
+ 63, 63, 107, 108, 109, 63, 110, 111,
+ 112, 63, 63, 63, 63, 63, 114, 115,
+ 85, 117, 63, 97, 98, 99, 100, 63,
+ 63, 63, 63, 63, 63, 63, 108, 109,
+ 63, 110, 111, 112, 63, 63, 63, 63,
+ 63, 114, 115, 85, 117, 63, 97, 98,
+ 99, 100, 63, 63, 63, 63, 63, 63,
+ 63, 63, 109, 63, 110, 111, 112, 63,
+ 63, 63, 63, 63, 114, 115, 85, 117,
+ 63, 97, 63, 63, 63, 63, 63, 63,
+ 63, 63, 63, 96, 97, 98, 99, 100,
+ 63, 102, 103, 63, 63, 63, 107, 108,
+ 109, 63, 110, 111, 112, 63, 63, 63,
+ 63, 63, 114, 115, 85, 117, 63, 97,
+ 63, 63, 63, 63, 63, 63, 63, 63,
+ 63, 96, 97, 98, 99, 100, 63, 63,
+ 103, 63, 63, 63, 107, 108, 109, 63,
+ 110, 111, 112, 63, 63, 63, 63, 63,
+ 114, 115, 85, 117, 63, 97, 63, 63,
+ 63, 63, 63, 63, 63, 63, 63, 96,
+ 97, 98, 99, 100, 63, 63, 63, 63,
+ 63, 63, 107, 108, 109, 63, 110, 111,
+ 112, 63, 63, 63, 63, 63, 114, 115,
+ 85, 117, 63, 97, 63, 63, 63, 63,
+ 63, 63, 63, 63, 63, 96, 97, 98,
+ 99, 100, 101, 102, 103, 63, 63, 63,
+ 107, 108, 109, 63, 110, 111, 112, 63,
+ 63, 63, 63, 63, 114, 115, 85, 117,
+ 63, 94, 95, 63, 63, 63, 63, 63,
+ 63, 63, 63, 63, 96, 97, 98, 99,
+ 100, 101, 102, 103, 104, 63, 106, 107,
+ 108, 109, 63, 110, 111, 112, 63, 63,
+ 63, 63, 113, 114, 115, 85, 116, 63,
+ 94, 90, 94, 95, 63, 63, 63, 63,
+ 63, 63, 63, 63, 63, 96, 97, 98,
+ 99, 100, 101, 102, 103, 104, 105, 106,
+ 107, 108, 109, 63, 110, 111, 112, 63,
+ 63, 63, 63, 113, 114, 115, 85, 116,
+ 63, 5, 6, 119, 119, 119, 119, 119,
+ 119, 119, 119, 119, 9, 10, 11, 12,
+ 13, 14, 15, 16, 17, 19, 19, 20,
+ 21, 22, 119, 23, 24, 25, 119, 119,
+ 119, 119, 29, 30, 31, 32, 29, 119,
+ 5, 119, 119, 119, 119, 119, 119, 119,
+ 119, 119, 119, 119, 119, 119, 119, 119,
+ 119, 119, 119, 119, 119, 119, 10, 11,
+ 12, 13, 119, 119, 119, 119, 119, 119,
+ 119, 119, 119, 119, 23, 24, 25, 119,
+ 119, 119, 119, 119, 30, 31, 32, 120,
+ 119, 10, 11, 12, 13, 119, 119, 119,
+ 119, 119, 119, 119, 119, 119, 119, 23,
+ 24, 25, 119, 119, 119, 119, 119, 30,
+ 31, 32, 120, 119, 11, 12, 13, 119,
+ 119, 119, 119, 119, 119, 119, 119, 119,
+ 119, 119, 119, 119, 119, 119, 119, 119,
+ 119, 30, 31, 32, 119, 12, 13, 119,
+ 119, 119, 119, 119, 119, 119, 119, 119,
+ 119, 119, 119, 119, 119, 119, 119, 119,
+ 119, 30, 31, 32, 119, 13, 119, 119,
+ 119, 119, 119, 119, 119, 119, 119, 119,
+ 119, 119, 119, 119, 119, 119, 119, 119,
+ 30, 31, 32, 119, 30, 31, 119, 31,
+ 119, 11, 12, 13, 119, 119, 119, 119,
+ 119, 119, 119, 119, 119, 119, 23, 24,
+ 25, 119, 119, 119, 119, 119, 30, 31,
+ 32, 120, 119, 11, 12, 13, 119, 119,
+ 119, 119, 119, 119, 119, 119, 119, 119,
+ 119, 24, 25, 119, 119, 119, 119, 119,
+ 30, 31, 32, 120, 119, 11, 12, 13,
+ 119, 119, 119, 119, 119, 119, 119, 119,
+ 119, 119, 119, 119, 25, 119, 119, 119,
+ 119, 119, 30, 31, 32, 120, 119, 121,
+ 119, 11, 12, 13, 119, 119, 119, 119,
+ 119, 119, 119, 119, 119, 119, 119, 119,
+ 119, 119, 119, 119, 119, 119, 30, 31,
+ 32, 120, 119, 9, 10, 11, 12, 13,
+ 119, 119, 119, 119, 119, 119, 20, 21,
+ 22, 119, 23, 24, 25, 119, 119, 119,
+ 119, 119, 30, 31, 32, 120, 119, 10,
+ 11, 12, 13, 119, 119, 119, 119, 119,
+ 119, 20, 21, 22, 119, 23, 24, 25,
+ 119, 119, 119, 119, 119, 30, 31, 32,
+ 120, 119, 10, 11, 12, 13, 119, 119,
+ 119, 119, 119, 119, 119, 21, 22, 119,
+ 23, 24, 25, 119, 119, 119, 119, 119,
+ 30, 31, 32, 120, 119, 10, 11, 12,
+ 13, 119, 119, 119, 119, 119, 119, 119,
+ 119, 22, 119, 23, 24, 25, 119, 119,
+ 119, 119, 119, 30, 31, 32, 120, 119,
+ 10, 119, 119, 119, 119, 119, 119, 119,
+ 119, 119, 9, 10, 11, 12, 13, 119,
+ 15, 16, 119, 119, 119, 20, 21, 22,
+ 119, 23, 24, 25, 119, 119, 119, 119,
+ 119, 30, 31, 32, 120, 119, 10, 119,
+ 119, 119, 119, 119, 119, 119, 119, 119,
+ 9, 10, 11, 12, 13, 119, 119, 16,
+ 119, 119, 119, 20, 21, 22, 119, 23,
+ 24, 25, 119, 119, 119, 119, 119, 30,
+ 31, 32, 120, 119, 10, 119, 119, 119,
+ 119, 119, 119, 119, 119, 119, 9, 10,
+ 11, 12, 13, 119, 119, 119, 119, 119,
+ 119, 20, 21, 22, 119, 23, 24, 25,
+ 119, 119, 119, 119, 119, 30, 31, 32,
+ 120, 119, 10, 119, 119, 119, 119, 119,
+ 119, 119, 119, 119, 9, 10, 11, 12,
+ 13, 14, 15, 16, 119, 119, 119, 20,
+ 21, 22, 119, 23, 24, 25, 119, 119,
+ 119, 119, 119, 30, 31, 32, 120, 119,
+ 5, 6, 119, 119, 119, 119, 119, 119,
+ 119, 119, 119, 9, 10, 11, 12, 13,
+ 14, 15, 16, 17, 119, 19, 20, 21,
+ 22, 119, 23, 24, 25, 119, 119, 119,
+ 119, 29, 30, 31, 32, 29, 119, 5,
+ 119, 122, 119, 7, 119, 1, 119, 119,
+ 119, 1, 119, 119, 119, 119, 119, 5,
+ 6, 7, 119, 119, 119, 119, 119, 119,
+ 119, 119, 9, 10, 11, 12, 13, 14,
+ 15, 16, 17, 18, 19, 20, 21, 22,
+ 119, 23, 24, 25, 119, 26, 27, 119,
+ 29, 30, 31, 32, 29, 119, 5, 6,
+ 119, 119, 119, 119, 119, 119, 119, 119,
+ 119, 9, 10, 11, 12, 13, 14, 15,
+ 16, 17, 18, 19, 20, 21, 22, 119,
+ 23, 24, 25, 119, 119, 119, 119, 29,
+ 30, 31, 32, 29, 119, 26, 27, 119,
+ 27, 119, 1, 123, 123, 123, 1, 123,
+ 125, 124, 33, 124, 33, 125, 124, 125,
+ 124, 33, 124, 34, 124, 0
};
static const char _use_syllable_machine_trans_targs[] = {
- 1, 27, 0, 50, 52, 76, 77, 98,
- 100, 78, 79, 80, 81, 82, 93, 94,
- 95, 101, 96, 90, 91, 92, 85, 86,
- 87, 102, 103, 104, 97, 83, 84, 0,
- 105, 107, 0, 2, 3, 4, 5, 6,
- 7, 8, 19, 20, 21, 24, 22, 16,
- 17, 18, 11, 12, 13, 25, 26, 23,
- 9, 10, 0, 14, 15, 0, 28, 29,
- 30, 31, 32, 33, 34, 45, 46, 47,
- 48, 42, 43, 44, 37, 38, 39, 49,
- 35, 36, 0, 0, 40, 0, 41, 0,
- 51, 0, 53, 54, 55, 56, 57, 58,
- 59, 70, 71, 72, 75, 73, 67, 68,
- 69, 62, 63, 64, 74, 60, 61, 65,
- 66, 0, 88, 89, 99, 0, 0, 106
+ 1, 28, 0, 52, 54, 79, 80, 102,
+ 104, 92, 81, 82, 83, 84, 96, 97,
+ 98, 99, 105, 100, 93, 94, 95, 87,
+ 88, 89, 106, 107, 108, 101, 85, 86,
+ 0, 109, 111, 0, 2, 3, 15, 4,
+ 5, 6, 7, 19, 20, 21, 22, 25,
+ 23, 16, 17, 18, 10, 11, 12, 26,
+ 27, 24, 8, 9, 0, 13, 14, 0,
+ 29, 30, 42, 31, 32, 33, 34, 46,
+ 47, 48, 49, 50, 43, 44, 45, 37,
+ 38, 39, 51, 35, 36, 0, 51, 40,
+ 0, 41, 0, 0, 53, 0, 55, 56,
+ 68, 57, 58, 59, 60, 72, 73, 74,
+ 75, 78, 76, 69, 70, 71, 63, 64,
+ 65, 77, 61, 62, 77, 66, 67, 0,
+ 90, 91, 103, 0, 0, 110
};
static const char _use_syllable_machine_trans_actions[] = {
0, 0, 3, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 4,
- 0, 0, 5, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
+ 4, 0, 0, 5, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 6, 0, 0, 7, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 6, 0, 0, 7,
0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 8, 9, 0, 10, 0, 11,
- 0, 12, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 8, 0, 0, 9, 10, 0,
+ 11, 0, 12, 13, 0, 14, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
- 0, 13, 0, 0, 0, 14, 15, 0
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 8, 0, 0, 10, 0, 0, 15,
+ 0, 0, 0, 16, 17, 0
};
static const char _use_syllable_machine_to_state_actions[] = {
@@ -514,7 +551,7 @@ static const char _use_syllable_machine_to_state_actions[] = {
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 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 char _use_syllable_machine_from_state_actions[] = {
@@ -531,24 +568,24 @@ static const char _use_syllable_machine_from_state_actions[] = {
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 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 short _use_syllable_machine_eof_trans[] = {
- 0, 35, 35, 35, 35, 35, 35, 35,
- 35, 35, 35, 35, 35, 35, 35, 35,
- 35, 35, 35, 35, 35, 35, 35, 35,
- 35, 35, 35, 62, 62, 84, 62, 62,
- 62, 62, 62, 62, 62, 62, 62, 62,
- 86, 62, 62, 62, 62, 62, 62, 62,
- 62, 84, 88, 90, 62, 62, 84, 62,
- 62, 62, 62, 62, 62, 62, 62, 62,
- 62, 86, 62, 62, 62, 62, 62, 62,
- 62, 62, 84, 62, 114, 114, 114, 114,
- 114, 114, 114, 114, 114, 114, 114, 114,
- 114, 114, 114, 114, 114, 114, 114, 114,
- 114, 114, 114, 114, 114, 114, 114, 114,
- 118, 119, 119, 119
+ 0, 36, 36, 36, 36, 36, 36, 36,
+ 36, 36, 36, 36, 36, 36, 36, 36,
+ 36, 36, 36, 36, 36, 36, 36, 36,
+ 36, 36, 36, 36, 64, 64, 64, 64,
+ 64, 64, 64, 64, 64, 64, 64, 64,
+ 89, 64, 64, 64, 64, 64, 64, 64,
+ 64, 64, 64, 91, 92, 94, 64, 64,
+ 64, 64, 64, 64, 64, 64, 64, 64,
+ 64, 64, 89, 64, 64, 64, 64, 64,
+ 64, 64, 64, 64, 64, 91, 64, 120,
+ 120, 120, 120, 120, 120, 120, 120, 120,
+ 120, 120, 120, 120, 120, 120, 120, 120,
+ 120, 120, 120, 120, 120, 120, 120, 120,
+ 120, 120, 120, 120, 124, 125, 125, 125
};
static const int use_syllable_machine_start = 0;
@@ -583,7 +620,7 @@ struct machine_index_t :
machine_index_t (const Iter& it) : it (it) {}
machine_index_t (const machine_index_t& o) : hb_iter_with_fallback_t<machine_index_t<Iter>,
typename Iter::item_t> (),
- it (o.it) {}
+ it (o.it), is_null (o.is_null) {}
static constexpr bool is_random_access_iterator = Iter::is_random_access_iterator;
static constexpr bool is_sorted_iterator = Iter::is_sorted_iterator;
@@ -595,14 +632,28 @@ struct machine_index_t :
void __forward__ (unsigned n) { it += n; }
void __prev__ () { --it; }
void __rewind__ (unsigned n) { it -= n; }
+
void operator = (unsigned n)
- { unsigned index = (*it).first; if (index < n) it += n - index; else if (index > n) it -= index - n; }
- void operator = (const machine_index_t& o) { *this = (*o.it).first; }
- bool operator == (const machine_index_t& o) const { return (*it).first == (*o.it).first; }
+ {
+ assert (n == 0);
+ is_null = true;
+ }
+ explicit operator bool () { return !is_null; }
+
+ void operator = (const machine_index_t& o)
+ {
+ is_null = o.is_null;
+ unsigned index = (*it).first;
+ unsigned n = (*o.it).first;
+ if (index < n) it += n - index; else if (index > n) it -= index - n;
+ }
+ bool operator == (const machine_index_t& o) const
+ { return is_null ? o.is_null : !o.is_null && (*it).first == (*o.it).first; }
bool operator != (const machine_index_t& o) const { return !(*this == o); }
private:
Iter it;
+ bool is_null = false;
};
struct
{
@@ -647,7 +698,7 @@ find_syllables_use (hb_buffer_t *buffer)
unsigned int act HB_UNUSED;
int cs;
-#line 651 "hb-ot-shape-complex-use-machine.hh"
+#line 702 "hb-ot-shape-complex-use-machine.hh"
{
cs = use_syllable_machine_start;
ts = 0;
@@ -655,12 +706,12 @@ find_syllables_use (hb_buffer_t *buffer)
act = 0;
}
-#line 267 "hb-ot-shape-complex-use-machine.rl"
+#line 281 "hb-ot-shape-complex-use-machine.rl"
unsigned int syllable_serial = 1;
-#line 664 "hb-ot-shape-complex-use-machine.hh"
+#line 715 "hb-ot-shape-complex-use-machine.hh"
{
int _slen;
int _trans;
@@ -674,7 +725,7 @@ _resume:
#line 1 "NONE"
{ts = p;}
break;
-#line 678 "hb-ot-shape-complex-use-machine.hh"
+#line 729 "hb-ot-shape-complex-use-machine.hh"
}
_keys = _use_syllable_machine_trans_keys + (cs<<1);
@@ -692,7 +743,7 @@ _eof_trans:
goto _again;
switch ( _use_syllable_machine_trans_actions[_trans] ) {
- case 8:
+ case 9:
#line 171 "hb-ot-shape-complex-use-machine.rl"
{te = p+1;{ found_syllable (use_standard_cluster); }}
break;
@@ -708,11 +759,7 @@ _eof_trans:
#line 177 "hb-ot-shape-complex-use-machine.rl"
{te = p+1;{ found_syllable (use_non_cluster); }}
break;
- case 9:
-#line 169 "hb-ot-shape-complex-use-machine.rl"
- {te = p;p--;{ found_syllable (use_virama_terminated_cluster); }}
- break;
- case 10:
+ case 11:
#line 170 "hb-ot-shape-complex-use-machine.rl"
{te = p;p--;{ found_syllable (use_sakot_terminated_cluster); }}
break;
@@ -720,11 +767,11 @@ _eof_trans:
#line 171 "hb-ot-shape-complex-use-machine.rl"
{te = p;p--;{ found_syllable (use_standard_cluster); }}
break;
- case 12:
+ case 14:
#line 172 "hb-ot-shape-complex-use-machine.rl"
{te = p;p--;{ found_syllable (use_number_joiner_terminated_cluster); }}
break;
- case 11:
+ case 13:
#line 173 "hb-ot-shape-complex-use-machine.rl"
{te = p;p--;{ found_syllable (use_numeral_cluster); }}
break;
@@ -732,19 +779,43 @@ _eof_trans:
#line 174 "hb-ot-shape-complex-use-machine.rl"
{te = p;p--;{ found_syllable (use_symbol_cluster); }}
break;
- case 15:
+ case 17:
#line 175 "hb-ot-shape-complex-use-machine.rl"
{te = p;p--;{ found_syllable (use_hieroglyph_cluster); }}
break;
- case 13:
+ case 15:
#line 176 "hb-ot-shape-complex-use-machine.rl"
{te = p;p--;{ found_syllable (use_broken_cluster); }}
break;
- case 14:
+ case 16:
#line 177 "hb-ot-shape-complex-use-machine.rl"
{te = p;p--;{ found_syllable (use_non_cluster); }}
break;
-#line 748 "hb-ot-shape-complex-use-machine.hh"
+ case 12:
+#line 1 "NONE"
+ { switch( act ) {
+ case 1:
+ {{p = ((te))-1;} found_syllable (use_virama_terminated_cluster); }
+ break;
+ case 2:
+ {{p = ((te))-1;} found_syllable (use_sakot_terminated_cluster); }
+ break;
+ }
+ }
+ break;
+ case 8:
+#line 1 "NONE"
+ {te = p+1;}
+#line 169 "hb-ot-shape-complex-use-machine.rl"
+ {act = 1;}
+ break;
+ case 10:
+#line 1 "NONE"
+ {te = p+1;}
+#line 170 "hb-ot-shape-complex-use-machine.rl"
+ {act = 2;}
+ break;
+#line 819 "hb-ot-shape-complex-use-machine.hh"
}
_again:
@@ -753,7 +824,7 @@ _again:
#line 1 "NONE"
{ts = 0;}
break;
-#line 757 "hb-ot-shape-complex-use-machine.hh"
+#line 828 "hb-ot-shape-complex-use-machine.hh"
}
if ( ++p != pe )
@@ -769,7 +840,7 @@ _again:
}
-#line 272 "hb-ot-shape-complex-use-machine.rl"
+#line 286 "hb-ot-shape-complex-use-machine.rl"
}
diff --git a/thirdparty/harfbuzz/src/hb-ot-shape-complex-use-table.hh b/thirdparty/harfbuzz/src/hb-ot-shape-complex-use-table.hh
index 951fb28377..ea627cd27e 100644
--- a/thirdparty/harfbuzz/src/hb-ot-shape-complex-use-table.hh
+++ b/thirdparty/harfbuzz/src/hb-ot-shape-complex-use-table.hh
@@ -53,7 +53,7 @@
#define GB USE(GB) /* BASE_OTHER */
#define H USE(H) /* HALANT */
#define HN USE(HN) /* HALANT_NUM */
-#define HVM USE(HVM) /* HALANT_OR_VOWEL_MODIFIER */
+#define IS USE(IS) /* INVISIBLE_STACKER */
#define J USE(J) /* HIEROGLYPH_JOINER */
#define N USE(N) /* BASE_NUM */
#define O USE(O) /* OTHER */
@@ -278,7 +278,7 @@ static const uint8_t use_table[] = {
/* 1000 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
/* 1010 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
/* 1020 */ B, B, B, B, B, B, B, B, B, B, B, VPst, VPst, VAbv, VAbv, VBlw,
- /* 1030 */ VBlw, VPre, VAbv, VAbv, VAbv, VAbv, VMAbv, VMBlw, VMPst, H, VAbv, MPst, MPre, MBlw, MBlw, B,
+ /* 1030 */ VBlw, VPre, VAbv, VAbv, VAbv, VAbv, VMAbv, VMBlw, VMPst, IS, VAbv, MPst, MPre, MBlw, MBlw, B,
/* 1040 */ B, B, B, B, B, B, B, B, B, B, O, GB, O, O, GB, O,
/* 1050 */ B, B, B, B, B, B, VPst, VPst, VBlw, VBlw, B, B, B, B, MBlw, MBlw,
/* 1060 */ MBlw, B, VPst, VMPst, VMPst, B, B, VPst, VPst, VMPst, VMPst, VMPst, VMPst, VMPst, B, B,
@@ -316,7 +316,7 @@ static const uint8_t use_table[] = {
/* 17A0 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
/* 17B0 */ B, B, B, B, CGJ, CGJ, VPst, VAbv, VAbv, VAbv, VAbv, VBlw, VBlw, VBlw, VPre, VPre,
/* 17C0 */ VPre, VPre, VPre, VPre, VPre, VPre, VMAbv, VMPst, VPst, VMAbv, VMAbv, FMAbv, FAbv, CMAbv, FMAbv, VMAbv,
- /* 17D0 */ FMAbv, VAbv, H, FMAbv, O, O, O, O, O, O, O, O, B, FMAbv, WJ, WJ,
+ /* 17D0 */ FMAbv, VAbv, IS, FMAbv, O, O, O, O, O, O, O, O, B, FMAbv, WJ, WJ,
/* 17E0 */ B, B, B, B, B, B, B, B, B, B, WJ, WJ, WJ, WJ, WJ, WJ,
/* 17F0 */ O, O, O, O, O, O, O, O, O, O, WJ, WJ, WJ, WJ, WJ, WJ,
@@ -396,7 +396,7 @@ static const uint8_t use_table[] = {
/* 1B80 */ VMAbv, FAbv, VMPst, B, B, B, B, B, B, B, B, B, B, B, B, B,
/* 1B90 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
- /* 1BA0 */ B, SUB, SUB, SUB, VAbv, VBlw, VPre, VPst, VAbv, VAbv, VPst, H, SUB, SUB, B, B,
+ /* 1BA0 */ B, SUB, SUB, SUB, VAbv, VBlw, VPre, VPst, VAbv, VAbv, VPst, IS, SUB, SUB, B, B,
/* 1BB0 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
/* Batak */
@@ -555,7 +555,7 @@ static const uint8_t use_table[] = {
/* Meetei Mayek Extensions */
/* AAE0 */ B, B, B, B, B, B, B, B, B, B, B, VPre, VBlw, VAbv, VPre, VPst,
- /* AAF0 */ O, O, O, O, O, VMPst, H, WJ,
+ /* AAF0 */ O, O, O, O, O, VMPst, IS, WJ,
#define use_offset_0xabc0u 4040
@@ -606,7 +606,7 @@ static const uint8_t use_table[] = {
/* 10A00 */ B, VBlw, VBlw, VBlw, WJ, VAbv, VBlw, WJ, WJ, WJ, WJ, WJ, VPst, VMBlw, VMBlw, VMAbv,
/* 10A10 */ B, B, B, B, WJ, B, B, B, WJ, B, B, B, B, B, B, B,
/* 10A20 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
- /* 10A30 */ B, B, B, B, B, B, WJ, WJ, CMAbv, CMBlw, CMBlw, WJ, WJ, WJ, WJ, H,
+ /* 10A30 */ B, B, B, B, B, B, WJ, WJ, CMAbv, CMBlw, CMBlw, WJ, WJ, WJ, WJ, IS,
/* 10A40 */ B, B, B, B, B, B, B, B, B, WJ, WJ, WJ, WJ, WJ, WJ, WJ,
#define use_offset_0x10ac0u 4304
@@ -699,7 +699,7 @@ static const uint8_t use_table[] = {
/* 11100 */ VMAbv, VMAbv, VMAbv, B, B, B, B, B, B, B, B, B, B, B, B, B,
/* 11110 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
/* 11120 */ B, B, B, B, B, B, B, VBlw, VBlw, VBlw, VAbv, VAbv, VPre, VBlw, VAbv, VAbv,
- /* 11130 */ VBlw, VAbv, VAbv, H, CMAbv, WJ, B, B, B, B, B, B, B, B, B, B,
+ /* 11130 */ VBlw, VAbv, VAbv, IS, CMAbv, WJ, B, B, B, B, B, B, B, B, B, B,
/* 11140 */ O, O, O, O, B, VPst, VPst, B, WJ, WJ, WJ, WJ, WJ, WJ, WJ, WJ,
/* Mahajani */
@@ -752,7 +752,7 @@ static const uint8_t use_table[] = {
/* 11310 */ B, WJ, WJ, B, B, B, B, B, B, B, B, B, B, B, B, B,
/* 11320 */ B, B, B, B, B, B, B, B, B, WJ, B, B, B, B, B, B,
/* 11330 */ B, WJ, B, B, WJ, B, B, B, B, B, WJ, CMBlw, CMBlw, B, VPst, VPst,
- /* 11340 */ VAbv, VPst, VPst, VPst, VPst, WJ, WJ, VPre, VPre, WJ, WJ, VPre, VPre, HVM, WJ, WJ,
+ /* 11340 */ VAbv, VPst, VPst, VPst, VPst, WJ, WJ, VPre, VPre, WJ, WJ, VPre, VPre, H, WJ, WJ,
/* 11350 */ O, WJ, WJ, WJ, WJ, WJ, WJ, VPst, WJ, WJ, WJ, WJ, WJ, O, B, B,
/* 11360 */ B, B, VPst, VPst, WJ, WJ, VMAbv, VMAbv, VMAbv, VMAbv, VMAbv, VMAbv, VMAbv, WJ, WJ, WJ,
/* 11370 */ VMAbv, VMAbv, VMAbv, VMAbv, VMAbv, WJ, WJ, WJ,
@@ -842,7 +842,7 @@ static const uint8_t use_table[] = {
/* 11900 */ B, B, B, B, B, B, B, WJ, WJ, B, WJ, WJ, B, B, B, B,
/* 11910 */ B, B, B, B, WJ, B, B, WJ, B, B, B, B, B, B, B, B,
/* 11920 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
- /* 11930 */ VPst, VPst, VPst, VPst, VPst, VPre, WJ, VPre, VPre, WJ, WJ, VMAbv, VMAbv, VPst, H, R,
+ /* 11930 */ VPst, VPst, VPst, VPst, VPst, VPre, WJ, VPre, VPre, WJ, WJ, VMAbv, VMAbv, VPst, IS, R,
/* 11940 */ MPst, R, MPst, CMBlw, O, O, O, WJ, WJ, WJ, WJ, WJ, WJ, WJ, WJ, WJ,
/* 11950 */ B, B, B, B, B, B, B, B, B, B, WJ, WJ, WJ, WJ, WJ, WJ,
@@ -864,7 +864,7 @@ static const uint8_t use_table[] = {
/* 11A10 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
/* 11A20 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
/* 11A30 */ B, B, B, FMBlw, VBlw, VMAbv, VMAbv, VMAbv, VMAbv, VMPst, R, MBlw, MBlw, MBlw, MBlw, GB,
- /* 11A40 */ O, O, O, O, O, GB, O, H, WJ, WJ, WJ, WJ, WJ, WJ, WJ, WJ,
+ /* 11A40 */ O, O, O, O, O, GB, O, IS, WJ, WJ, WJ, WJ, WJ, WJ, WJ, WJ,
/* Soyombo */
@@ -872,7 +872,7 @@ static const uint8_t use_table[] = {
/* 11A60 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
/* 11A70 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
/* 11A80 */ B, B, B, B, R, R, R, R, R, R, FBlw, FBlw, FBlw, FBlw, FBlw, FBlw,
- /* 11A90 */ FBlw, FBlw, FBlw, FBlw, FBlw, FBlw, VMAbv, VMPst, CMAbv, H, O, O, O, B, O, O,
+ /* 11A90 */ FBlw, FBlw, FBlw, FBlw, FBlw, FBlw, VMAbv, VMPst, CMAbv, IS, O, O, O, B, O, O,
#define use_offset_0x11c00u 6592
@@ -904,7 +904,7 @@ static const uint8_t use_table[] = {
/* 11D10 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
/* 11D20 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
/* 11D30 */ B, VAbv, VAbv, VAbv, VAbv, VAbv, VBlw, WJ, WJ, WJ, VAbv, WJ, VAbv, VAbv, WJ, VAbv,
- /* 11D40 */ VMAbv, VMAbv, CMBlw, VAbv, VBlw, H, R, MBlw, WJ, WJ, WJ, WJ, WJ, WJ, WJ, WJ,
+ /* 11D40 */ VMAbv, VMAbv, CMBlw, VAbv, VBlw, IS, R, MBlw, WJ, WJ, WJ, WJ, WJ, WJ, WJ, WJ,
/* 11D50 */ B, B, B, B, B, B, B, B, B, B, WJ, WJ, WJ, WJ, WJ, WJ,
/* Gunjala Gondi */
@@ -912,7 +912,7 @@ static const uint8_t use_table[] = {
/* 11D60 */ B, B, B, B, B, B, WJ, B, B, WJ, B, B, B, B, B, B,
/* 11D70 */ B, B, B, B, B, B, B, B, B, B, B, B, B, B, B, B,
/* 11D80 */ B, B, B, B, B, B, B, B, B, B, VPst, VPst, VPst, VPst, VPst, WJ,
- /* 11D90 */ VAbv, VAbv, WJ, VPst, VPst, VMAbv, VMPst, H, O, WJ, WJ, WJ, WJ, WJ, WJ, WJ,
+ /* 11D90 */ VAbv, VAbv, WJ, VPst, VPst, VMAbv, VMPst, IS, O, WJ, WJ, WJ, WJ, WJ, WJ, WJ,
/* 11DA0 */ B, B, B, B, B, B, B, B, B, B, WJ, WJ, WJ, WJ, WJ, WJ,
#define use_offset_0x11ee0u 6952
@@ -1531,7 +1531,7 @@ hb_use_get_category (hb_glyph_info_t info)
#undef GB
#undef H
#undef HN
-#undef HVM
+#undef IS
#undef J
#undef N
#undef O
diff --git a/thirdparty/harfbuzz/src/hb-ot-shape-complex-use.cc b/thirdparty/harfbuzz/src/hb-ot-shape-complex-use.cc
index 95ef3fd6ec..1d13c8a126 100644
--- a/thirdparty/harfbuzz/src/hb-ot-shape-complex-use.cc
+++ b/thirdparty/harfbuzz/src/hb-ot-shape-complex-use.cc
@@ -115,25 +115,24 @@ collect_features_use (hb_ot_shape_planner_t *plan)
map->add_gsub_pause (setup_syllables_use);
/* "Default glyph pre-processing group" */
- map->enable_feature (HB_TAG('l','o','c','l'));
- map->enable_feature (HB_TAG('c','c','m','p'));
- map->enable_feature (HB_TAG('n','u','k','t'));
- map->enable_feature (HB_TAG('a','k','h','n'), F_MANUAL_ZWJ);
+ map->enable_feature (HB_TAG('l','o','c','l'), F_PER_SYLLABLE);
+ map->enable_feature (HB_TAG('c','c','m','p'), F_PER_SYLLABLE);
+ map->enable_feature (HB_TAG('n','u','k','t'), F_PER_SYLLABLE);
+ map->enable_feature (HB_TAG('a','k','h','n'), F_MANUAL_ZWJ | F_PER_SYLLABLE);
/* "Reordering group" */
map->add_gsub_pause (_hb_clear_substitution_flags);
- map->add_feature (HB_TAG('r','p','h','f'), F_MANUAL_ZWJ);
+ map->add_feature (HB_TAG('r','p','h','f'), F_MANUAL_ZWJ | F_PER_SYLLABLE);
map->add_gsub_pause (record_rphf_use);
map->add_gsub_pause (_hb_clear_substitution_flags);
- map->enable_feature (HB_TAG('p','r','e','f'), F_MANUAL_ZWJ);
+ map->enable_feature (HB_TAG('p','r','e','f'), F_MANUAL_ZWJ | F_PER_SYLLABLE);
map->add_gsub_pause (record_pref_use);
/* "Orthographic unit shaping group" */
for (unsigned int i = 0; i < ARRAY_LENGTH (use_basic_features); i++)
- map->enable_feature (use_basic_features[i], F_MANUAL_ZWJ);
+ map->enable_feature (use_basic_features[i], F_MANUAL_ZWJ | F_PER_SYLLABLE);
map->add_gsub_pause (reorder_use);
- map->add_gsub_pause (_hb_clear_syllables);
/* "Topographical features" */
for (unsigned int i = 0; i < ARRAY_LENGTH (use_topographical_features); i++)
@@ -350,7 +349,7 @@ record_pref_use (const hb_ot_shape_plan_t *plan HB_UNUSED,
static inline bool
is_halant_use (const hb_glyph_info_t &info)
{
- return (info.use_category() == USE(H) || info.use_category() == USE(HVM)) &&
+ return (info.use_category() == USE(H) || info.use_category() == USE(IS)) &&
!_hb_glyph_info_ligated (&info);
}
diff --git a/thirdparty/harfbuzz/src/hb-ot-shape.cc b/thirdparty/harfbuzz/src/hb-ot-shape.cc
index 4bd8aaf03b..298cf47786 100644
--- a/thirdparty/harfbuzz/src/hb-ot-shape.cc
+++ b/thirdparty/harfbuzz/src/hb-ot-shape.cc
@@ -935,17 +935,23 @@ hb_ot_substitute_pre (const hb_ot_shape_context_t *c)
_hb_buffer_allocate_gsubgpos_vars (c->buffer);
hb_ot_substitute_complex (c);
+
+#ifndef HB_NO_AAT_SHAPE
+ if (c->plan->apply_morx && c->plan->apply_gpos)
+ hb_aat_layout_remove_deleted_glyphs (c->buffer);
+#endif
}
static inline void
hb_ot_substitute_post (const hb_ot_shape_context_t *c)
{
- hb_ot_hide_default_ignorables (c->buffer, c->font);
#ifndef HB_NO_AAT_SHAPE
- if (c->plan->apply_morx)
+ if (c->plan->apply_morx && !c->plan->apply_gpos)
hb_aat_layout_remove_deleted_glyphs (c->buffer);
#endif
+ hb_ot_hide_default_ignorables (c->buffer, c->font);
+
if (c->plan->shaper->postprocess_glyphs &&
c->buffer->message(c->font, "start postprocess-glyphs")) {
c->plan->shaper->postprocess_glyphs (c->plan, c->buffer, c->font);
diff --git a/thirdparty/harfbuzz/src/hb-ot-var-gvar-table.hh b/thirdparty/harfbuzz/src/hb-ot-var-gvar-table.hh
index 539213c339..618cec08fb 100644
--- a/thirdparty/harfbuzz/src/hb-ot-var-gvar-table.hh
+++ b/thirdparty/harfbuzz/src/hb-ot-var-gvar-table.hh
@@ -577,10 +577,11 @@ struct gvar
hb_bytes_t bytes ((const char *) p, length);
hb_vector_t<unsigned int> private_indices;
- if (iterator.current_tuple->has_private_points () &&
+ bool has_private_points = iterator.current_tuple->has_private_points ();
+ if (has_private_points &&
!GlyphVariationData::unpack_points (p, private_indices, bytes))
return false;
- const hb_array_t<unsigned int> &indices = private_indices.length ? private_indices : shared_indices;
+ const hb_array_t<unsigned int> &indices = has_private_points ? private_indices : shared_indices;
bool apply_to_all = (indices.length == 0);
unsigned int num_deltas = apply_to_all ? points.length : indices.length;
diff --git a/thirdparty/harfbuzz/src/hb-set.cc b/thirdparty/harfbuzz/src/hb-set.cc
index 204dbb5645..0e2c1f77ef 100644
--- a/thirdparty/harfbuzz/src/hb-set.cc
+++ b/thirdparty/harfbuzz/src/hb-set.cc
@@ -257,6 +257,29 @@ hb_set_add (hb_set_t *set,
}
/**
+ * hb_set_add_sorted_array:
+ * @set: A set
+ * @sorted_codepoints: (array length=num_codepoints): Array of codepoints to add
+ * @num_codepoints: Length of @sorted_codepoints
+ *
+ * Adds @num_codepoints codepoints to a set at once.
+ * The codepoints array must be in increasing order,
+ * with size at least @num_codepoints.
+ *
+ * Since: 4.1.0
+ */
+HB_EXTERN void
+hb_set_add_sorted_array (hb_set_t *set,
+ const hb_codepoint_t *sorted_codepoints,
+ unsigned int num_codepoints)
+{
+ /* Immutible-safe. */
+ set->add_sorted_array (sorted_codepoints,
+ num_codepoints,
+ sizeof(hb_codepoint_t));
+}
+
+/**
* hb_set_add_range:
* @set: A set
* @first: The first element to add to @set
@@ -591,3 +614,28 @@ hb_set_previous_range (const hb_set_t *set,
{
return set->previous_range (first, last);
}
+
+/**
+ * hb_set_next_many:
+ * @set: A set
+ * @codepoint: Outputting codepoints starting after this one.
+ * Use #HB_SET_VALUE_INVALID to get started.
+ * @out: (array length=size): An array of codepoints to write to.
+ * @size: The maximum number of codepoints to write out.
+ *
+ * Finds the next element in @set that is greater than @codepoint. Writes out
+ * codepoints to @out, until either the set runs out of elements, or @size
+ * codepoints are written, whichever comes first.
+ *
+ * Return value: the number of values written.
+ *
+ * Since: 4.2.0
+ **/
+unsigned int
+hb_set_next_many (const hb_set_t *set,
+ hb_codepoint_t codepoint,
+ hb_codepoint_t *out,
+ unsigned int size)
+{
+ return set->next_many (codepoint, out, size);
+}
diff --git a/thirdparty/harfbuzz/src/hb-set.h b/thirdparty/harfbuzz/src/hb-set.h
index 423225bf96..10ce7c10d4 100644
--- a/thirdparty/harfbuzz/src/hb-set.h
+++ b/thirdparty/harfbuzz/src/hb-set.h
@@ -111,6 +111,11 @@ hb_set_add_range (hb_set_t *set,
hb_codepoint_t last);
HB_EXTERN void
+hb_set_add_sorted_array (hb_set_t *set,
+ const hb_codepoint_t *sorted_codepoints,
+ unsigned int num_codepoints);
+
+HB_EXTERN void
hb_set_del (hb_set_t *set,
hb_codepoint_t codepoint);
@@ -180,6 +185,12 @@ hb_set_previous_range (const hb_set_t *set,
hb_codepoint_t *first,
hb_codepoint_t *last);
+/* Pass HB_SET_VALUE_INVALID in to get started. */
+HB_EXTERN unsigned int
+hb_set_next_many (const hb_set_t *set,
+ hb_codepoint_t codepoint,
+ hb_codepoint_t *out,
+ unsigned int size);
HB_END_DECLS
diff --git a/thirdparty/harfbuzz/src/hb-set.hh b/thirdparty/harfbuzz/src/hb-set.hh
index af02e9e12b..1f05407869 100644
--- a/thirdparty/harfbuzz/src/hb-set.hh
+++ b/thirdparty/harfbuzz/src/hb-set.hh
@@ -109,6 +109,7 @@ struct hb_sparseset_t
typedef bool value_t;
value_t operator [] (hb_codepoint_t k) const { return get (k); }
bool has (hb_codepoint_t k) const { return (*this)[k] != SENTINEL; }
+
/* Predicate. */
bool operator () (hb_codepoint_t k) const { return has (k); }
@@ -138,6 +139,8 @@ struct hb_sparseset_t
{ return s.next_range (first, last); }
bool previous_range (hb_codepoint_t *first, hb_codepoint_t *last) const
{ return s.previous_range (first, last); }
+ unsigned int next_many (hb_codepoint_t codepoint, hb_codepoint_t *out, unsigned int size) const
+ { return s.next_many (codepoint, out, size); }
unsigned int get_population () const { return s.get_population (); }
hb_codepoint_t get_min () const { return s.get_min (); }
diff --git a/thirdparty/harfbuzz/src/hb-static.cc b/thirdparty/harfbuzz/src/hb-static.cc
index bd698814e8..7cc51be611 100644
--- a/thirdparty/harfbuzz/src/hb-static.cc
+++ b/thirdparty/harfbuzz/src/hb-static.cc
@@ -56,6 +56,7 @@ const unsigned char _hb_Null_AAT_Lookup[2] = {0xFF, 0xFF};
/* hb_face_t */
+#ifndef HB_NO_BORING_EXPANSION
static inline unsigned
load_num_glyphs_from_loca (const hb_face_t *face)
{
@@ -72,6 +73,7 @@ load_num_glyphs_from_loca (const hb_face_t *face)
return ret;
}
+#endif
static inline unsigned
load_num_glyphs_from_maxp (const hb_face_t *face)
diff --git a/thirdparty/harfbuzz/src/hb-subset-plan.cc b/thirdparty/harfbuzz/src/hb-subset-plan.cc
index 4481758415..74b7e3977c 100644
--- a/thirdparty/harfbuzz/src/hb-subset-plan.cc
+++ b/thirdparty/harfbuzz/src/hb-subset-plan.cc
@@ -40,6 +40,8 @@
#include "hb-ot-stat-table.hh"
#include "hb-ot-math-table.hh"
+using OT::Layout::GSUB::GSUB;
+
typedef hb_hashmap_t<unsigned, hb_set_t *> script_langsys_map;
#ifndef HB_NO_SUBSET_CFF
@@ -358,7 +360,7 @@ _populate_gids_to_retain (hb_subset_plan_t* plan,
#ifndef HB_NO_SUBSET_LAYOUT
if (close_over_gsub)
// closure all glyphs/lookups/features needed for GSUB substitutions.
- _closure_glyphs_lookups_features<OT::GSUB> (
+ _closure_glyphs_lookups_features<GSUB> (
plan->source,
plan->_glyphset_gsub,
plan->layout_features,
diff --git a/thirdparty/harfbuzz/src/hb-subset.cc b/thirdparty/harfbuzz/src/hb-subset.cc
index aa8f2c6fb0..4588268b76 100644
--- a/thirdparty/harfbuzz/src/hb-subset.cc
+++ b/thirdparty/harfbuzz/src/hb-subset.cc
@@ -55,6 +55,8 @@
#include "hb-ot-math-table.hh"
#include "hb-repacker.hh"
+using OT::Layout::GSUB::GSUB;
+
/**
* SECTION:hb-subset
* @title: hb-subset
@@ -312,7 +314,7 @@ _subset_table (hb_subset_plan_t *plan, hb_tag_t tag)
#ifndef HB_NO_SUBSET_LAYOUT
case HB_OT_TAG_GDEF: return _subset<const OT::GDEF> (plan);
- case HB_OT_TAG_GSUB: return _subset<const OT::GSUB> (plan);
+ case HB_OT_TAG_GSUB: return _subset<const GSUB> (plan);
case HB_OT_TAG_GPOS: return _subset<const OT::GPOS> (plan);
case HB_OT_TAG_gvar: return _subset<const OT::gvar> (plan);
case HB_OT_TAG_HVAR: return _subset<const OT::HVAR> (plan);
diff --git a/thirdparty/harfbuzz/src/hb-version.h b/thirdparty/harfbuzz/src/hb-version.h
index e6bb69a0f2..39fbde45c1 100644
--- a/thirdparty/harfbuzz/src/hb-version.h
+++ b/thirdparty/harfbuzz/src/hb-version.h
@@ -47,20 +47,20 @@ HB_BEGIN_DECLS
*
* The minor component of the library version available at compile-time.
*/
-#define HB_VERSION_MINOR 0
+#define HB_VERSION_MINOR 2
/**
* HB_VERSION_MICRO:
*
* The micro component of the library version available at compile-time.
*/
-#define HB_VERSION_MICRO 1
+#define HB_VERSION_MICRO 0
/**
* HB_VERSION_STRING:
*
* A string literal containing the library version available at compile-time.
*/
-#define HB_VERSION_STRING "4.0.1"
+#define HB_VERSION_STRING "4.2.0"
/**
* HB_VERSION_ATLEAST:
diff --git a/thirdparty/minizip/crypt.h b/thirdparty/minizip/crypt.h
index 1e9e8200b2..9da15373d8 100644
--- a/thirdparty/minizip/crypt.h
+++ b/thirdparty/minizip/crypt.h
@@ -38,6 +38,7 @@ static int decrypt_byte(unsigned long* pkeys, const z_crc_t* pcrc_32_tab)
* unpredictable manner on 16-bit systems; not a problem
* with any known compiler so far, though */
+ (void)pcrc_32_tab;
temp = ((unsigned)(*(pkeys+2)) & 0xffff) | 2;
return (int)(((temp * (temp ^ 1)) >> 8) & 0xff);
}
@@ -77,24 +78,24 @@ static void init_keys(const char* passwd,unsigned long* pkeys,const z_crc_t* pcr
(update_keys(pkeys,pcrc_32_tab,c ^= decrypt_byte(pkeys,pcrc_32_tab)))
#define zencode(pkeys,pcrc_32_tab,c,t) \
- (t=decrypt_byte(pkeys,pcrc_32_tab), update_keys(pkeys,pcrc_32_tab,c), t^(c))
+ (t=decrypt_byte(pkeys,pcrc_32_tab), update_keys(pkeys,pcrc_32_tab,c), (Byte)t^(c))
#ifdef INCLUDECRYPTINGCODE_IFCRYPTALLOWED
#define RAND_HEAD_LEN 12
/* "last resort" source for second part of crypt seed pattern */
# ifndef ZCR_SEED2
-# define ZCR_SEED2 3141592654UL /* use PI as default pattern */
+# define ZCR_SEED2 3141592654L /* use PI as default pattern */
# endif
-static int crypthead(const char* passwd, /* password string */
- unsigned char* buf, /* where to write header */
- int bufSize,
- unsigned long* pkeys,
- const z_crc_t* pcrc_32_tab,
- unsigned long crcForCrypting)
+static unsigned crypthead(const char* passwd, /* password string */
+ unsigned char* buf, /* where to write header */
+ int bufSize,
+ unsigned long* pkeys,
+ const z_crc_t* pcrc_32_tab,
+ unsigned long crcForCrypting)
{
- int n; /* index in random header */
+ unsigned n; /* index in random header */
int t; /* temporary */
int c; /* random byte */
unsigned char header[RAND_HEAD_LEN-2]; /* random header */
diff --git a/thirdparty/minizip/ioapi.c b/thirdparty/minizip/ioapi.c
index 9cb27c16db..db4c33b4b9 100644
--- a/thirdparty/minizip/ioapi.c
+++ b/thirdparty/minizip/ioapi.c
@@ -58,7 +58,7 @@ ZPOS64_T call_ztell64 (const zlib_filefunc64_32_def* pfilefunc,voidpf filestream
return (*(pfilefunc->zfile_func64.ztell64_file)) (pfilefunc->zfile_func64.opaque,filestream);
else
{
- uLong tell_uLong = (*(pfilefunc->ztell32_file))(pfilefunc->zfile_func64.opaque,filestream);
+ uLong tell_uLong = (uLong)(*(pfilefunc->ztell32_file))(pfilefunc->zfile_func64.opaque,filestream);
if ((tell_uLong) == MAXU32)
return (ZPOS64_T)-1;
else
@@ -101,6 +101,7 @@ static int ZCALLBACK ferror_file_func OF((voidpf opaque, voidpf stream));
static voidpf ZCALLBACK fopen_file_func (voidpf opaque, const char* filename, int mode)
{
+ (void)opaque;
FILE* file = NULL;
const char* mode_fopen = NULL;
if ((mode & ZLIB_FILEFUNC_MODE_READWRITEFILTER)==ZLIB_FILEFUNC_MODE_READ)
@@ -119,6 +120,7 @@ static voidpf ZCALLBACK fopen_file_func (voidpf opaque, const char* filename, in
static voidpf ZCALLBACK fopen64_file_func (voidpf opaque, const void* filename, int mode)
{
+ (void)opaque;
FILE* file = NULL;
const char* mode_fopen = NULL;
if ((mode & ZLIB_FILEFUNC_MODE_READWRITEFILTER)==ZLIB_FILEFUNC_MODE_READ)
@@ -138,6 +140,7 @@ static voidpf ZCALLBACK fopen64_file_func (voidpf opaque, const void* filename,
static uLong ZCALLBACK fread_file_func (voidpf opaque, voidpf stream, void* buf, uLong size)
{
+ (void)opaque;
uLong ret;
ret = (uLong)fread(buf, 1, (size_t)size, (FILE *)stream);
return ret;
@@ -145,6 +148,7 @@ static uLong ZCALLBACK fread_file_func (voidpf opaque, voidpf stream, void* buf,
static uLong ZCALLBACK fwrite_file_func (voidpf opaque, voidpf stream, const void* buf, uLong size)
{
+ (void)opaque;
uLong ret;
ret = (uLong)fwrite(buf, 1, (size_t)size, (FILE *)stream);
return ret;
@@ -152,6 +156,7 @@ static uLong ZCALLBACK fwrite_file_func (voidpf opaque, voidpf stream, const voi
static long ZCALLBACK ftell_file_func (voidpf opaque, voidpf stream)
{
+ (void)opaque;
long ret;
ret = ftell((FILE *)stream);
return ret;
@@ -160,13 +165,15 @@ static long ZCALLBACK ftell_file_func (voidpf opaque, voidpf stream)
static ZPOS64_T ZCALLBACK ftell64_file_func (voidpf opaque, voidpf stream)
{
+ (void)opaque;
ZPOS64_T ret;
- ret = FTELLO_FUNC((FILE *)stream);
+ ret = (ZPOS64_T)FTELLO_FUNC((FILE *)stream);
return ret;
}
static long ZCALLBACK fseek_file_func (voidpf opaque, voidpf stream, uLong offset, int origin)
{
+ (void)opaque;
int fseek_origin=0;
long ret;
switch (origin)
@@ -183,13 +190,14 @@ static long ZCALLBACK fseek_file_func (voidpf opaque, voidpf stream, uLong offs
default: return -1;
}
ret = 0;
- if (fseek((FILE *)stream, offset, fseek_origin) != 0)
+ if (fseek((FILE *)stream, (long)offset, fseek_origin) != 0)
ret = -1;
return ret;
}
static long ZCALLBACK fseek64_file_func (voidpf opaque, voidpf stream, ZPOS64_T offset, int origin)
{
+ (void)opaque;
int fseek_origin=0;
long ret;
switch (origin)
@@ -207,7 +215,7 @@ static long ZCALLBACK fseek64_file_func (voidpf opaque, voidpf stream, ZPOS64_T
}
ret = 0;
- if(FSEEKO_FUNC((FILE *)stream, offset, fseek_origin) != 0)
+ if(FSEEKO_FUNC((FILE *)stream, (long)offset, fseek_origin) != 0)
ret = -1;
return ret;
@@ -216,6 +224,7 @@ static long ZCALLBACK fseek64_file_func (voidpf opaque, voidpf stream, ZPOS64_T
static int ZCALLBACK fclose_file_func (voidpf opaque, voidpf stream)
{
+ (void)opaque;
int ret;
ret = fclose((FILE *)stream);
return ret;
@@ -223,6 +232,7 @@ static int ZCALLBACK fclose_file_func (voidpf opaque, voidpf stream)
static int ZCALLBACK ferror_file_func (voidpf opaque, voidpf stream)
{
+ (void)opaque;
int ret;
ret = ferror((FILE *)stream);
return ret;
diff --git a/thirdparty/minizip/ioapi.h b/thirdparty/minizip/ioapi.h
index 4011e9cabb..e9e5899852 100644
--- a/thirdparty/minizip/ioapi.h
+++ b/thirdparty/minizip/ioapi.h
@@ -107,8 +107,7 @@ typedef 64BIT_INT_CUSTOM_TYPE ZPOS64_T;
typedef uint64_t ZPOS64_T;
#else
-/* Maximum unsigned 32-bit value used as placeholder for zip64 */
-#define MAXU32 0xffffffff
+
#if defined(_MSC_VER) || defined(__BORLANDC__)
typedef unsigned __int64 ZPOS64_T;
@@ -118,7 +117,10 @@ typedef unsigned long long int ZPOS64_T;
#endif
#endif
-
+/* Maximum unsigned 32-bit value used as placeholder for zip64 */
+#ifndef MAXU32
+#define MAXU32 (0xffffffff)
+#endif
#ifdef __cplusplus
extern "C" {
diff --git a/thirdparty/minizip/godot-zlib-1.2.4-minizip-seek.patch b/thirdparty/minizip/patches/godot-seek.patch
index 2162bafbbc..24838c252a 100644
--- a/thirdparty/minizip/godot-zlib-1.2.4-minizip-seek.patch
+++ b/thirdparty/minizip/patches/godot-seek.patch
@@ -1,8 +1,8 @@
diff --git a/thirdparty/minizip/ioapi.c b/thirdparty/minizip/ioapi.c
-index 49958f61f..0afbdc06a 100644
+index d666e5a228..db4c33b4b9 100644
--- a/thirdparty/minizip/ioapi.c
+++ b/thirdparty/minizip/ioapi.c
-@@ -68,8 +68,15 @@ void fill_zlib_filefunc64_32_def_from_filefunc32(zlib_filefunc64_32_def* p_filef
+@@ -80,8 +80,15 @@ void fill_zlib_filefunc64_32_def_from_filefunc32(zlib_filefunc64_32_def* p_filef
p_filefunc64_32->zfile_func64.opaque = p_filefunc32->opaque;
p_filefunc64_32->zseek32_file = p_filefunc32->zseek_file;
p_filefunc64_32->ztell32_file = p_filefunc32->ztell_file;
@@ -18,7 +18,7 @@ index 49958f61f..0afbdc06a 100644
static voidpf ZCALLBACK fopen_file_func OF((voidpf opaque, const char* filename, int mode));
-@@ -233,3 +240,6 @@ void fill_fopen64_filefunc (zlib_filefunc64_def* pzlib_filefunc_def)
+@@ -255,3 +262,6 @@ void fill_fopen64_filefunc (zlib_filefunc64_def* pzlib_filefunc_def)
pzlib_filefunc_def->zerror_file = ferror_file_func;
pzlib_filefunc_def->opaque = NULL;
}
@@ -26,10 +26,10 @@ index 49958f61f..0afbdc06a 100644
+*/
+/* GODOT end */
diff --git a/thirdparty/minizip/ioapi.h b/thirdparty/minizip/ioapi.h
-index 8309c4cf8..f25ab6464 100644
+index 114bfab762..2f24a5b6a0 100644
--- a/thirdparty/minizip/ioapi.h
+++ b/thirdparty/minizip/ioapi.h
-@@ -145,6 +145,10 @@ typedef struct zlib_filefunc_def_s
+@@ -155,6 +155,10 @@ typedef struct zlib_filefunc_def_s
close_file_func zclose_file;
testerror_file_func zerror_file;
voidpf opaque;
@@ -40,7 +40,7 @@ index 8309c4cf8..f25ab6464 100644
} zlib_filefunc_def;
typedef ZPOS64_T (ZCALLBACK *tell64_file_func) OF((voidpf opaque, voidpf stream));
-@@ -161,6 +165,10 @@ typedef struct zlib_filefunc64_def_s
+@@ -171,6 +175,10 @@ typedef struct zlib_filefunc64_def_s
close_file_func zclose_file;
testerror_file_func zerror_file;
voidpf opaque;
@@ -52,7 +52,7 @@ index 8309c4cf8..f25ab6464 100644
void fill_fopen64_filefunc OF((zlib_filefunc64_def* pzlib_filefunc_def));
diff --git a/thirdparty/minizip/unzip.c b/thirdparty/minizip/unzip.c
-index 7617f41f1..32e27bd65 100644
+index 5e12e47474..3b191e827c 100644
--- a/thirdparty/minizip/unzip.c
+++ b/thirdparty/minizip/unzip.c
@@ -157,6 +157,9 @@ typedef struct
@@ -98,32 +98,31 @@ index 7617f41f1..32e27bd65 100644
/*
Close a ZipFile opened with unzOpen.
If there is files inside the .Zip opened with unzOpenCurrentFile (see later),
-@@ -1018,10 +1034,20 @@ local int unz64local_GetCurrentFileInfoInternal (unzFile file,
+@@ -1018,10 +1034,23 @@ local int unz64local_GetCurrentFileInfoInternal (unzFile file,
if (lSeek!=0)
{
-- if (ZSEEK64(s->z_filefunc, s->filestream,lSeek,ZLIB_FILEFUNC_SEEK_CUR)==0)
-- lSeek=0;
-- else
-- err=UNZ_ERRNO;
+ /* GODOT start */
+ if (lSeek<0) {
+ // WORKAROUND for backwards seeking
-+ z_off_t pos = ZTELL64(s->z_filefunc, s->filestream);
-+ if (ZSEEK64(s->z_filefunc, s->filestream,pos+lSeek,ZLIB_FILEFUNC_SEEK_SET)==0)
++ ZPOS64_T pos = ZTELL64(s->z_filefunc, s->filestream);
++ if (ZSEEK64(s->z_filefunc, s->filestream,pos+(ZPOS64_T)lSeek,ZLIB_FILEFUNC_SEEK_SET)==0)
+ lSeek=0;
+ else
+ err=UNZ_ERRNO;
+ } else {
-+ if (ZSEEK64(s->z_filefunc, s->filestream,lSeek,ZLIB_FILEFUNC_SEEK_CUR)==0)
-+ lSeek=0;
-+ else
-+ err=UNZ_ERRNO;
++ /* GODOT end */
+ if (ZSEEK64(s->z_filefunc, s->filestream,(ZPOS64_T)lSeek,ZLIB_FILEFUNC_SEEK_CUR)==0)
+ lSeek=0;
+ else
+ err=UNZ_ERRNO;
++ /* GODOT start */
+ }
++ /* GODOT end */
}
while(acc < file_info.size_file_extra)
-@@ -1575,8 +1601,10 @@ extern int ZEXPORT unzOpenCurrentFile3 (unzFile file, int* method,
+@@ -1575,8 +1604,10 @@ extern int ZEXPORT unzOpenCurrentFile3 (unzFile file, int* method,
}
else if ((s->cur_file_info.compression_method==Z_DEFLATED) && (!raw))
{
@@ -136,7 +135,7 @@ index 7617f41f1..32e27bd65 100644
pfile_in_zip_read_info->stream.opaque = (voidpf)0;
pfile_in_zip_read_info->stream.next_in = 0;
pfile_in_zip_read_info->stream.avail_in = 0;
-@@ -1608,6 +1636,9 @@ extern int ZEXPORT unzOpenCurrentFile3 (unzFile file, int* method,
+@@ -1608,6 +1639,9 @@ extern int ZEXPORT unzOpenCurrentFile3 (unzFile file, int* method,
iSizeVar;
pfile_in_zip_read_info->stream.avail_in = (uInt)0;
@@ -146,7 +145,7 @@ index 7617f41f1..32e27bd65 100644
s->pfile_in_zip_read = pfile_in_zip_read_info;
s->encrypted = 0;
-@@ -1638,6 +1669,85 @@ extern int ZEXPORT unzOpenCurrentFile3 (unzFile file, int* method,
+@@ -1638,6 +1672,85 @@ extern int ZEXPORT unzOpenCurrentFile3 (unzFile file, int* method,
return UNZ_OK;
}
@@ -165,7 +164,7 @@ index 7617f41f1..32e27bd65 100644
+
+ if (pfile_in_zip_read_info->compression_method==Z_BZIP2ED) { // don't know how to support bzip
+ return UNZ_INTERNALERROR;
-+ };
++ }
+
+ if ((pfile_in_zip_read_info->compression_method==0) || (pfile_in_zip_read_info->raw)) {
+
@@ -204,7 +203,7 @@ index 7617f41f1..32e27bd65 100644
+ pfile_in_zip_read_info->stream.avail_in = (uInt)0;
+ pfile_in_zip_read_info->stream.total_out = 0;
+ pfile_in_zip_read_info->stream.next_in = 0;
-+ };
++ }
+
+ // not sure where to read, so read on the stack
+ {
@@ -216,24 +215,24 @@ index 7617f41f1..32e27bd65 100644
+ int read = unzReadCurrentFile(file, buf, len);
+ if (read < 0) {
+ return read;
-+ };
++ }
+ to_read -= read;
+ if (read == UNZ_EOF) {
+ return pos;
-+ };
-+ };
-+ };
-+ };
++ }
++ }
++ }
++ }
+
+ return pos;
-+};
++}
+/* GODOT end */
+
extern int ZEXPORT unzOpenCurrentFile (unzFile file)
{
return unzOpenCurrentFile3(file, NULL, NULL, 0, NULL);
diff --git a/thirdparty/minizip/unzip.h b/thirdparty/minizip/unzip.h
-index 3183968b7..54e65ad8a 100644
+index 6f95e94d75..71a7d89692 100644
--- a/thirdparty/minizip/unzip.h
+++ b/thirdparty/minizip/unzip.h
@@ -202,6 +202,10 @@ extern int ZEXPORT unzClose OF((unzFile file));
@@ -262,7 +261,7 @@ index 3183968b7..54e65ad8a 100644
extern ZPOS64_T ZEXPORT unztell64 OF((unzFile file));
diff --git a/thirdparty/minizip/zip.c b/thirdparty/minizip/zip.c
-index 3c34fc8bd..d7093e745 100644
+index 4e611e1163..6d1c26d9f8 100644
--- a/thirdparty/minizip/zip.c
+++ b/thirdparty/minizip/zip.c
@@ -854,9 +854,11 @@ extern zipFile ZEXPORT zipOpen3 (const void *pathname, int append, zipcharpc* gl
@@ -280,7 +279,7 @@ index 3c34fc8bd..d7093e745 100644
ziinit.z_filefunc = *pzlib_filefunc64_32_def;
ziinit.filestream = ZOPEN64(ziinit.z_filefunc,
-@@ -1210,8 +1212,10 @@ extern int ZEXPORT zipOpenNewFileInZip4_64 (zipFile file, const char* filename,
+@@ -1211,8 +1213,10 @@ extern int ZEXPORT zipOpenNewFileInZip4_64 (zipFile file, const char* filename,
{
if(zi->ci.method == Z_DEFLATED)
{
diff --git a/thirdparty/minizip/godot-zlib-1.2.4-minizip-unbreak-gentoo.patch b/thirdparty/minizip/patches/unbreak-gentoo.patch
index 9292e32ac6..9292e32ac6 100644
--- a/thirdparty/minizip/godot-zlib-1.2.4-minizip-unbreak-gentoo.patch
+++ b/thirdparty/minizip/patches/unbreak-gentoo.patch
diff --git a/thirdparty/minizip/unzip.c b/thirdparty/minizip/unzip.c
index 31f8a5ff47..3b191e827c 100644
--- a/thirdparty/minizip/unzip.c
+++ b/thirdparty/minizip/unzip.c
@@ -458,7 +458,7 @@ local ZPOS64_T unz64local_SearchCentralDir(const zlib_filefunc64_32_def* pzlib_f
if (((*(buf+i))==0x50) && ((*(buf+i+1))==0x4b) &&
((*(buf+i+2))==0x05) && ((*(buf+i+3))==0x06))
{
- uPosFound = uReadPos+i;
+ uPosFound = uReadPos+(unsigned)i;
break;
}
@@ -526,7 +526,7 @@ local ZPOS64_T unz64local_SearchCentralDir64(const zlib_filefunc64_32_def* pzlib
if (((*(buf+i))==0x50) && ((*(buf+i+1))==0x4b) &&
((*(buf+i+2))==0x06) && ((*(buf+i+3))==0x07))
{
- uPosFound = uReadPos+i;
+ uPosFound = uReadPos+(unsigned)i;
break;
}
@@ -869,13 +869,13 @@ local void unz64local_DosDateToTmuDate (ZPOS64_T ulDosDate, tm_unz* ptm)
{
ZPOS64_T uDate;
uDate = (ZPOS64_T)(ulDosDate>>16);
- ptm->tm_mday = (uInt)(uDate&0x1f) ;
- ptm->tm_mon = (uInt)((((uDate)&0x1E0)/0x20)-1) ;
- ptm->tm_year = (uInt)(((uDate&0x0FE00)/0x0200)+1980) ;
+ ptm->tm_mday = (int)(uDate&0x1f) ;
+ ptm->tm_mon = (int)((((uDate)&0x1E0)/0x20)-1) ;
+ ptm->tm_year = (int)(((uDate&0x0FE00)/0x0200)+1980) ;
- ptm->tm_hour = (uInt) ((ulDosDate &0xF800)/0x800);
- ptm->tm_min = (uInt) ((ulDosDate&0x7E0)/0x20) ;
- ptm->tm_sec = (uInt) (2*(ulDosDate&0x1f)) ;
+ ptm->tm_hour = (int) ((ulDosDate &0xF800)/0x800);
+ ptm->tm_min = (int) ((ulDosDate&0x7E0)/0x20) ;
+ ptm->tm_sec = (int) (2*(ulDosDate&0x1f)) ;
}
/*
@@ -1009,7 +1009,7 @@ local int unz64local_GetCurrentFileInfoInternal (unzFile file,
if (lSeek!=0)
{
- if (ZSEEK64(s->z_filefunc, s->filestream,lSeek,ZLIB_FILEFUNC_SEEK_CUR)==0)
+ if (ZSEEK64(s->z_filefunc, s->filestream,(ZPOS64_T)lSeek,ZLIB_FILEFUNC_SEEK_CUR)==0)
lSeek=0;
else
err=UNZ_ERRNO;
@@ -1037,17 +1037,20 @@ local int unz64local_GetCurrentFileInfoInternal (unzFile file,
/* GODOT start */
if (lSeek<0) {
// WORKAROUND for backwards seeking
- z_off_t pos = ZTELL64(s->z_filefunc, s->filestream);
- if (ZSEEK64(s->z_filefunc, s->filestream,pos+lSeek,ZLIB_FILEFUNC_SEEK_SET)==0)
+ ZPOS64_T pos = ZTELL64(s->z_filefunc, s->filestream);
+ if (ZSEEK64(s->z_filefunc, s->filestream,pos+(ZPOS64_T)lSeek,ZLIB_FILEFUNC_SEEK_SET)==0)
lSeek=0;
else
err=UNZ_ERRNO;
} else {
- if (ZSEEK64(s->z_filefunc, s->filestream,lSeek,ZLIB_FILEFUNC_SEEK_CUR)==0)
- lSeek=0;
- else
- err=UNZ_ERRNO;
+ /* GODOT end */
+ if (ZSEEK64(s->z_filefunc, s->filestream,(ZPOS64_T)lSeek,ZLIB_FILEFUNC_SEEK_CUR)==0)
+ lSeek=0;
+ else
+ err=UNZ_ERRNO;
+ /* GODOT start */
}
+ /* GODOT end */
}
while(acc < file_info.size_file_extra)
@@ -1116,7 +1119,7 @@ local int unz64local_GetCurrentFileInfoInternal (unzFile file,
if (lSeek!=0)
{
- if (ZSEEK64(s->z_filefunc, s->filestream,lSeek,ZLIB_FILEFUNC_SEEK_CUR)==0)
+ if (ZSEEK64(s->z_filefunc, s->filestream,(ZPOS64_T)lSeek,ZLIB_FILEFUNC_SEEK_CUR)==0)
lSeek=0;
else
err=UNZ_ERRNO;
@@ -1684,7 +1687,7 @@ extern int ZEXPORT unzSeekCurrentFile(unzFile file, int pos) {
if (pfile_in_zip_read_info->compression_method==Z_BZIP2ED) { // don't know how to support bzip
return UNZ_INTERNALERROR;
- };
+ }
if ((pfile_in_zip_read_info->compression_method==0) || (pfile_in_zip_read_info->raw)) {
@@ -1723,7 +1726,7 @@ extern int ZEXPORT unzSeekCurrentFile(unzFile file, int pos) {
pfile_in_zip_read_info->stream.avail_in = (uInt)0;
pfile_in_zip_read_info->stream.total_out = 0;
pfile_in_zip_read_info->stream.next_in = 0;
- };
+ }
// not sure where to read, so read on the stack
{
@@ -1735,17 +1738,17 @@ extern int ZEXPORT unzSeekCurrentFile(unzFile file, int pos) {
int read = unzReadCurrentFile(file, buf, len);
if (read < 0) {
return read;
- };
+ }
to_read -= read;
if (read == UNZ_EOF) {
return pos;
- };
- };
- };
- };
+ }
+ }
+ }
+ }
return pos;
-};
+}
/* GODOT end */
extern int ZEXPORT unzOpenCurrentFile (unzFile file)
@@ -1877,7 +1880,7 @@ extern int ZEXPORT unzReadCurrentFile (unzFile file, voidp buf, unsigned len)
if ((pfile_in_zip_read_info->stream.avail_in == 0) &&
(pfile_in_zip_read_info->rest_read_compressed == 0))
- return (iRead==0) ? UNZ_EOF : iRead;
+ return (iRead==0) ? UNZ_EOF : (int)iRead;
if (pfile_in_zip_read_info->stream.avail_out <
pfile_in_zip_read_info->stream.avail_in)
@@ -1967,6 +1970,9 @@ extern int ZEXPORT unzReadCurrentFile (unzFile file, voidp buf, unsigned len)
err = Z_DATA_ERROR;
uTotalOutAfter = pfile_in_zip_read_info->stream.total_out;
+ /* Detect overflow, because z_stream.total_out is uLong (32 bits) */
+ if (uTotalOutAfter<uTotalOutBefore)
+ uTotalOutAfter += 1LL << 32; /* Add maximum value of uLong + 1 */
uOutThis = uTotalOutAfter-uTotalOutBefore;
pfile_in_zip_read_info->total_out_64 = pfile_in_zip_read_info->total_out_64 + uOutThis;
@@ -1981,14 +1987,14 @@ extern int ZEXPORT unzReadCurrentFile (unzFile file, voidp buf, unsigned len)
iRead += (uInt)(uTotalOutAfter - uTotalOutBefore);
if (err==Z_STREAM_END)
- return (iRead==0) ? UNZ_EOF : iRead;
+ return (iRead==0) ? UNZ_EOF : (int)iRead;
if (err!=Z_OK)
break;
}
}
if (err==Z_OK)
- return iRead;
+ return (int)iRead;
return err;
}
diff --git a/thirdparty/minizip/unzip.h b/thirdparty/minizip/unzip.h
index bab1cb939f..71a7d89692 100644
--- a/thirdparty/minizip/unzip.h
+++ b/thirdparty/minizip/unzip.h
@@ -83,12 +83,12 @@ typedef voidp unzFile;
/* tm_unz contain date/time info */
typedef struct tm_unz_s
{
- uInt tm_sec; /* seconds after the minute - [0,59] */
- uInt tm_min; /* minutes after the hour - [0,59] */
- uInt tm_hour; /* hours since midnight - [0,23] */
- uInt tm_mday; /* day of the month - [1,31] */
- uInt tm_mon; /* months since January - [0,11] */
- uInt tm_year; /* years - [1980..2044] */
+ int tm_sec; /* seconds after the minute - [0,59] */
+ int tm_min; /* minutes after the hour - [0,59] */
+ int tm_hour; /* hours since midnight - [0,23] */
+ int tm_mday; /* day of the month - [1,31] */
+ int tm_mon; /* months since January - [0,11] */
+ int tm_year; /* years - [1980..2044] */
} tm_unz;
/* unz_global_info structure contain global data about the ZIPfile
diff --git a/thirdparty/minizip/zip.c b/thirdparty/minizip/zip.c
index 2936e2b5d9..6d1c26d9f8 100644
--- a/thirdparty/minizip/zip.c
+++ b/thirdparty/minizip/zip.c
@@ -158,7 +158,7 @@ typedef struct
#ifndef NOCRYPT
unsigned long keys[3]; /* keys defining the pseudo-random sequence */
const z_crc_t* pcrc_32_tab;
- int crypt_header_size;
+ unsigned crypt_header_size;
#endif
} curfile64_info;
@@ -301,7 +301,7 @@ local int zip64local_putValue (const zlib_filefunc64_32_def* pzlib_filefunc_def,
}
}
- if (ZWRITE64(*pzlib_filefunc_def,filestream,buf,nbByte)!=(uLong)nbByte)
+ if (ZWRITE64(*pzlib_filefunc_def,filestream,buf,(uLong)nbByte)!=(uLong)nbByte)
return ZIP_ERRNO;
else
return ZIP_OK;
@@ -337,8 +337,8 @@ local uLong zip64local_TmzDateToDosDate(const tm_zip* ptm)
else if (year>=80)
year-=80;
return
- (uLong) (((ptm->tm_mday) + (32 * (ptm->tm_mon+1)) + (512 * year)) << 16) |
- ((ptm->tm_sec/2) + (32* ptm->tm_min) + (2048 * (uLong)ptm->tm_hour));
+ (uLong) (((uLong)(ptm->tm_mday) + (32 * (uLong)(ptm->tm_mon+1)) + (512 * year)) << 16) |
+ (((uLong)ptm->tm_sec/2) + (32 * (uLong)ptm->tm_min) + (2048 * (uLong)ptm->tm_hour));
}
@@ -522,12 +522,12 @@ local ZPOS64_T zip64local_SearchCentralDir(const zlib_filefunc64_32_def* pzlib_f
if (((*(buf+i))==0x50) && ((*(buf+i+1))==0x4b) &&
((*(buf+i+2))==0x05) && ((*(buf+i+3))==0x06))
{
- uPosFound = uReadPos+i;
+ uPosFound = uReadPos+(unsigned)i;
break;
}
- if (uPosFound!=0)
- break;
+ if (uPosFound!=0)
+ break;
}
TRYFREE(buf);
return uPosFound;
@@ -586,7 +586,7 @@ local ZPOS64_T zip64local_SearchCentralDir64(const zlib_filefunc64_32_def* pzlib
// Signature "0x07064b50" Zip64 end of central directory locater
if (((*(buf+i))==0x50) && ((*(buf+i+1))==0x4b) && ((*(buf+i+2))==0x06) && ((*(buf+i+3))==0x07))
{
- uPosFound = uReadPos+i;
+ uPosFound = uReadPos+(unsigned)i;
break;
}
}
@@ -637,7 +637,7 @@ local ZPOS64_T zip64local_SearchCentralDir64(const zlib_filefunc64_32_def* pzlib
return relativeOffset;
}
-int LoadCentralDirectoryRecord(zip64_internal* pziinit)
+local int LoadCentralDirectoryRecord(zip64_internal* pziinit)
{
int err=ZIP_OK;
ZPOS64_T byte_before_the_zipfile;/* byte before the zipfile, (>0 for sfx)*/
@@ -957,7 +957,7 @@ extern zipFile ZEXPORT zipOpen64 (const void* pathname, int append)
return zipOpen3(pathname,append,NULL,NULL);
}
-int Write_LocalFileHeader(zip64_internal* zi, const char* filename, uInt size_extrafield_local, const void* extrafield_local)
+local int Write_LocalFileHeader(zip64_internal* zi, const char* filename, uInt size_extrafield_local, const void* extrafield_local)
{
/* write the local header */
int err;
@@ -1036,8 +1036,8 @@ int Write_LocalFileHeader(zip64_internal* zi, const char* filename, uInt size_ex
// Remember position of Zip64 extended info for the local file header. (needed when we update size after done with file)
zi->ci.pos_zip64extrainfo = ZTELL64(zi->z_filefunc,zi->filestream);
- err = zip64local_putValue(&zi->z_filefunc, zi->filestream, (short)HeaderID,2);
- err = zip64local_putValue(&zi->z_filefunc, zi->filestream, (short)DataSize,2);
+ err = zip64local_putValue(&zi->z_filefunc, zi->filestream, (ZPOS64_T)HeaderID,2);
+ err = zip64local_putValue(&zi->z_filefunc, zi->filestream, (ZPOS64_T)DataSize,2);
err = zip64local_putValue(&zi->z_filefunc, zi->filestream, (ZPOS64_T)UncompressedSize,8);
err = zip64local_putValue(&zi->z_filefunc, zi->filestream, (ZPOS64_T)CompressedSize,8);
@@ -1520,7 +1520,7 @@ extern int ZEXPORT zipCloseFileInZipRaw64 (zipFile file, ZPOS64_T uncompressed_s
zip64_internal* zi;
ZPOS64_T compressed_size;
uLong invalidValue = 0xffffffff;
- short datasize = 0;
+ unsigned datasize = 0;
int err=ZIP_OK;
if (file == NULL)
@@ -1756,7 +1756,7 @@ extern int ZEXPORT zipCloseFileInZip (zipFile file)
return zipCloseFileInZipRaw (file,0,0);
}
-int Write_Zip64EndOfCentralDirectoryLocator(zip64_internal* zi, ZPOS64_T zip64eocd_pos_inzip)
+local int Write_Zip64EndOfCentralDirectoryLocator(zip64_internal* zi, ZPOS64_T zip64eocd_pos_inzip)
{
int err = ZIP_OK;
ZPOS64_T pos = zip64eocd_pos_inzip - zi->add_position_when_writing_offset;
@@ -1778,7 +1778,7 @@ int Write_Zip64EndOfCentralDirectoryLocator(zip64_internal* zi, ZPOS64_T zip64eo
return err;
}
-int Write_Zip64EndOfCentralDirectoryRecord(zip64_internal* zi, uLong size_centraldir, ZPOS64_T centraldir_pos_inzip)
+local int Write_Zip64EndOfCentralDirectoryRecord(zip64_internal* zi, uLong size_centraldir, ZPOS64_T centraldir_pos_inzip)
{
int err = ZIP_OK;
@@ -1817,7 +1817,7 @@ int Write_Zip64EndOfCentralDirectoryRecord(zip64_internal* zi, uLong size_centra
}
return err;
}
-int Write_EndOfCentralDirectoryRecord(zip64_internal* zi, uLong size_centraldir, ZPOS64_T centraldir_pos_inzip)
+local int Write_EndOfCentralDirectoryRecord(zip64_internal* zi, uLong size_centraldir, ZPOS64_T centraldir_pos_inzip)
{
int err = ZIP_OK;
@@ -1865,7 +1865,7 @@ int Write_EndOfCentralDirectoryRecord(zip64_internal* zi, uLong size_centraldir,
return err;
}
-int Write_GlobalComment(zip64_internal* zi, const char* global_comment)
+local int Write_GlobalComment(zip64_internal* zi, const char* global_comment)
{
int err = ZIP_OK;
uInt size_global_comment = 0;
@@ -1966,7 +1966,7 @@ extern int ZEXPORT zipRemoveExtraInfoBlock (char* pData, int* dataLen, short sHe
if(pData == NULL || *dataLen < 4)
return ZIP_PARAMERROR;
- pNewHeader = (char*)ALLOC(*dataLen);
+ pNewHeader = (char*)ALLOC((unsigned)*dataLen);
pTmp = pNewHeader;
while(p < (pData + *dataLen))
diff --git a/thirdparty/minizip/zip.h b/thirdparty/minizip/zip.h
index 8aaebb6234..7e4509d77b 100644
--- a/thirdparty/minizip/zip.h
+++ b/thirdparty/minizip/zip.h
@@ -88,12 +88,12 @@ typedef voidp zipFile;
/* tm_zip contain date/time info */
typedef struct tm_zip_s
{
- uInt tm_sec; /* seconds after the minute - [0,59] */
- uInt tm_min; /* minutes after the hour - [0,59] */
- uInt tm_hour; /* hours since midnight - [0,23] */
- uInt tm_mday; /* day of the month - [1,31] */
- uInt tm_mon; /* months since January - [0,11] */
- uInt tm_year; /* years - [1980..2044] */
+ int tm_sec; /* seconds after the minute - [0,59] */
+ int tm_min; /* minutes after the hour - [0,59] */
+ int tm_hour; /* hours since midnight - [0,23] */
+ int tm_mday; /* day of the month - [1,31] */
+ int tm_mon; /* months since January - [0,11] */
+ int tm_year; /* years - [1980..2044] */
} tm_zip;
typedef struct
@@ -144,6 +144,11 @@ extern zipFile ZEXPORT zipOpen2_64 OF((const void *pathname,
zipcharpc* globalcomment,
zlib_filefunc64_def* pzlib_filefunc_def));
+extern zipFile ZEXPORT zipOpen3 OF((const void *pathname,
+ int append,
+ zipcharpc* globalcomment,
+ zlib_filefunc64_32_def* pzlib_filefunc64_32_def));
+
extern int ZEXPORT zipOpenNewFileInZip OF((zipFile file,
const char* filename,
const zip_fileinfo* zipfi,
diff --git a/thirdparty/misc/open-simplex-noise-LICENSE b/thirdparty/misc/open-simplex-noise-LICENSE
deleted file mode 100644
index a84c395662..0000000000
--- a/thirdparty/misc/open-simplex-noise-LICENSE
+++ /dev/null
@@ -1,25 +0,0 @@
-This is free and unencumbered software released into the public domain.
-
-Anyone is free to copy, modify, publish, use, compile, sell, or
-distribute this software, either in source code form or as a compiled
-binary, for any purpose, commercial or non-commercial, and by any
-means.
-
-In jurisdictions that recognize copyright laws, the author or authors
-of this software dedicate any and all copyright interest in the
-software to the public domain. We make this dedication for the benefit
-of the public at large and to the detriment of our heirs and
-successors. We intend this dedication to be an overt act of
-relinquishment in perpetuity of all present and future rights to this
-software under copyright law.
-
-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 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.
-
-For more information, please refer to <http://unlicense.org>
-
diff --git a/thirdparty/misc/open-simplex-noise-no-allocate.patch b/thirdparty/misc/open-simplex-noise-no-allocate.patch
deleted file mode 100644
index fc3abe7d00..0000000000
--- a/thirdparty/misc/open-simplex-noise-no-allocate.patch
+++ /dev/null
@@ -1,133 +0,0 @@
-diff -u orig/open-simplex-noise.c misc/open-simplex-noise.c
---- orig/open-simplex-noise.c 2018-09-14 11:11:40.049810000 +0200
-+++ misc/open-simplex-noise.c 2018-09-14 11:09:39.726457000 +0200
-@@ -13,6 +13,11 @@
- * of any particular randomization library, so results
- * will be the same when ported to other languages.
- */
-+
-+// -- GODOT start --
-+// Modified to work without allocating memory, also removed some unused function.
-+// -- GODOT end --
-+
- #include <math.h>
- #include <stdlib.h>
- #include <stdint.h>
-@@ -34,11 +39,12 @@
-
- #define DEFAULT_SEED (0LL)
-
--struct osn_context {
-+// -- GODOT start --
-+/*struct osn_context {
- int16_t *perm;
- int16_t *permGradIndex3D;
--};
--
-+};*/
-+// -- GODOT end --
- #define ARRAYSIZE(x) (sizeof((x)) / sizeof((x)[0]))
-
- /*
-@@ -126,7 +132,9 @@
- int xi = (int) x;
- return x < xi ? xi - 1 : xi;
- }
--
-+
-+// -- GODOT start --
-+/*
- static int allocate_perm(struct osn_context *ctx, int nperm, int ngrad)
- {
- if (ctx->perm)
-@@ -154,18 +162,21 @@
- memcpy(ctx->perm, p, sizeof(*ctx->perm) * nelements);
-
- for (i = 0; i < 256; i++) {
-- /* Since 3D has 24 gradients, simple bitmask won't work, so precompute modulo array. */
-+ // Since 3D has 24 gradients, simple bitmask won't work, so precompute modulo array.
- ctx->permGradIndex3D[i] = (int16_t)((ctx->perm[i] % (ARRAYSIZE(gradients3D) / 3)) * 3);
- }
- return 0;
- }
-+*/
-+// -- GODOT end --
-
- /*
- * Initializes using a permutation array generated from a 64-bit seed.
- * Generates a proper permutation (i.e. doesn't merely perform N successive pair
- * swaps on a base array). Uses a simple 64-bit LCG.
- */
--int open_simplex_noise(int64_t seed, struct osn_context **ctx)
-+// -- GODOT start --
-+int open_simplex_noise(int64_t seed, struct osn_context *ctx)
- {
- int rc;
- int16_t source[256];
-@@ -174,20 +185,9 @@
- int16_t *permGradIndex3D;
- int r;
-
-- *ctx = (struct osn_context *) malloc(sizeof(**ctx));
-- if (!(*ctx))
-- return -ENOMEM;
-- (*ctx)->perm = NULL;
-- (*ctx)->permGradIndex3D = NULL;
--
-- rc = allocate_perm(*ctx, 256, 256);
-- if (rc) {
-- free(*ctx);
-- return rc;
-- }
--
-- perm = (*ctx)->perm;
-- permGradIndex3D = (*ctx)->permGradIndex3D;
-+ perm = ctx->perm;
-+ permGradIndex3D = ctx->permGradIndex3D;
-+// -- GODOT end --
-
- for (i = 0; i < 256; i++)
- source[i] = (int16_t) i;
-@@ -206,6 +206,8 @@
- return 0;
- }
-
-+// -- GODOT start --
-+/*
- void open_simplex_noise_free(struct osn_context *ctx)
- {
- if (!ctx)
-@@ -220,6 +222,8 @@
- }
- free(ctx);
- }
-+*/
-+// -- GODOT end --
-
- /* 2D OpenSimplex (Simplectic) Noise. */
- double open_simplex_noise2(struct osn_context *ctx, double x, double y)
-diff -u orig/open-simplex-noise.h misc/open-simplex-noise.h
---- orig/open-simplex-noise.h 2018-09-14 11:11:19.659807000 +0200
-+++ misc/open-simplex-noise.h 2018-09-14 11:10:05.006460000 +0200
-@@ -35,11 +35,18 @@
- extern "C" {
- #endif
-
--struct osn_context;
-+// -- GODOT start --
-+// Modified to work without allocating memory, also removed some unused function.
-
--int open_simplex_noise(int64_t seed, struct osn_context **ctx);
-+struct osn_context {
-+ int16_t perm[256];
-+ int16_t permGradIndex3D[256];
-+};
-+
-+int open_simplex_noise(int64_t seed, struct osn_context *ctx);
-+//int open_simplex_noise_init_perm(struct osn_context *ctx, int16_t p[], int nelements);
-+// -- GODOT end --
- void open_simplex_noise_free(struct osn_context *ctx);
--int open_simplex_noise_init_perm(struct osn_context *ctx, int16_t p[], int nelements);
- double open_simplex_noise2(struct osn_context *ctx, double x, double y);
- double open_simplex_noise3(struct osn_context *ctx, double x, double y, double z);
- double open_simplex_noise4(struct osn_context *ctx, double x, double y, double z, double w);
diff --git a/thirdparty/misc/open-simplex-noise.c b/thirdparty/misc/open-simplex-noise.c
deleted file mode 100644
index 44a072cad1..0000000000
--- a/thirdparty/misc/open-simplex-noise.c
+++ /dev/null
@@ -1,2255 +0,0 @@
-/*
- * OpenSimplex (Simplectic) Noise in C.
- * Ported by Stephen M. Cameron from Kurt Spencer's java implementation
- *
- * v1.1 (October 5, 2014)
- * - Added 2D and 4D implementations.
- * - Proper gradient sets for all dimensions, from a
- * dimensionally-generalizable scheme with an actual
- * rhyme and reason behind it.
- * - Removed default permutation array in favor of
- * default seed.
- * - Changed seed-based constructor to be independent
- * of any particular randomization library, so results
- * will be the same when ported to other languages.
- */
-
-// -- GODOT start --
-// Modified to work without allocating memory, also removed some unused function.
-// -- GODOT end --
-
-#include <math.h>
-#include <stdlib.h>
-#include <stdint.h>
-#include <string.h>
-#include <errno.h>
-
-#include "open-simplex-noise.h"
-
-#define STRETCH_CONSTANT_2D (-0.211324865405187) /* (1 / sqrt(2 + 1) - 1 ) / 2; */
-#define SQUISH_CONSTANT_2D (0.366025403784439) /* (sqrt(2 + 1) -1) / 2; */
-#define STRETCH_CONSTANT_3D (-1.0 / 6.0) /* (1 / sqrt(3 + 1) - 1) / 3; */
-#define SQUISH_CONSTANT_3D (1.0 / 3.0) /* (sqrt(3+1)-1)/3; */
-#define STRETCH_CONSTANT_4D (-0.138196601125011) /* (1 / sqrt(4 + 1) - 1) / 4; */
-#define SQUISH_CONSTANT_4D (0.309016994374947) /* (sqrt(4 + 1) - 1) / 4; */
-
-#define NORM_CONSTANT_2D (47.0)
-#define NORM_CONSTANT_3D (103.0)
-#define NORM_CONSTANT_4D (30.0)
-
-#define DEFAULT_SEED (0LL)
-
-// -- GODOT start --
-/*struct osn_context {
- int16_t *perm;
- int16_t *permGradIndex3D;
-};*/
-// -- GODOT end --
-#define ARRAYSIZE(x) (sizeof((x)) / sizeof((x)[0]))
-
-/*
- * Gradients for 2D. They approximate the directions to the
- * vertices of an octagon from the center.
- */
-static const int8_t gradients2D[] = {
- 5, 2, 2, 5,
- -5, 2, -2, 5,
- 5, -2, 2, -5,
- -5, -2, -2, -5,
-};
-
-/*
- * Gradients for 3D. They approximate the directions to the
- * vertices of a rhombicuboctahedron from the center, skewed so
- * that the triangular and square facets can be inscribed inside
- * circles of the same radius.
- */
-static const signed char gradients3D[] = {
- -11, 4, 4, -4, 11, 4, -4, 4, 11,
- 11, 4, 4, 4, 11, 4, 4, 4, 11,
- -11, -4, 4, -4, -11, 4, -4, -4, 11,
- 11, -4, 4, 4, -11, 4, 4, -4, 11,
- -11, 4, -4, -4, 11, -4, -4, 4, -11,
- 11, 4, -4, 4, 11, -4, 4, 4, -11,
- -11, -4, -4, -4, -11, -4, -4, -4, -11,
- 11, -4, -4, 4, -11, -4, 4, -4, -11,
-};
-
-/*
- * Gradients for 4D. They approximate the directions to the
- * vertices of a disprismatotesseractihexadecachoron from the center,
- * skewed so that the tetrahedral and cubic facets can be inscribed inside
- * spheres of the same radius.
- */
-static const signed char gradients4D[] = {
- 3, 1, 1, 1, 1, 3, 1, 1, 1, 1, 3, 1, 1, 1, 1, 3,
- -3, 1, 1, 1, -1, 3, 1, 1, -1, 1, 3, 1, -1, 1, 1, 3,
- 3, -1, 1, 1, 1, -3, 1, 1, 1, -1, 3, 1, 1, -1, 1, 3,
- -3, -1, 1, 1, -1, -3, 1, 1, -1, -1, 3, 1, -1, -1, 1, 3,
- 3, 1, -1, 1, 1, 3, -1, 1, 1, 1, -3, 1, 1, 1, -1, 3,
- -3, 1, -1, 1, -1, 3, -1, 1, -1, 1, -3, 1, -1, 1, -1, 3,
- 3, -1, -1, 1, 1, -3, -1, 1, 1, -1, -3, 1, 1, -1, -1, 3,
- -3, -1, -1, 1, -1, -3, -1, 1, -1, -1, -3, 1, -1, -1, -1, 3,
- 3, 1, 1, -1, 1, 3, 1, -1, 1, 1, 3, -1, 1, 1, 1, -3,
- -3, 1, 1, -1, -1, 3, 1, -1, -1, 1, 3, -1, -1, 1, 1, -3,
- 3, -1, 1, -1, 1, -3, 1, -1, 1, -1, 3, -1, 1, -1, 1, -3,
- -3, -1, 1, -1, -1, -3, 1, -1, -1, -1, 3, -1, -1, -1, 1, -3,
- 3, 1, -1, -1, 1, 3, -1, -1, 1, 1, -3, -1, 1, 1, -1, -3,
- -3, 1, -1, -1, -1, 3, -1, -1, -1, 1, -3, -1, -1, 1, -1, -3,
- 3, -1, -1, -1, 1, -3, -1, -1, 1, -1, -3, -1, 1, -1, -1, -3,
- -3, -1, -1, -1, -1, -3, -1, -1, -1, -1, -3, -1, -1, -1, -1, -3,
-};
-
-static double extrapolate2(const struct osn_context *ctx, int xsb, int ysb, double dx, double dy)
-{
- const int16_t *perm = ctx->perm;
- int index = perm[(perm[xsb & 0xFF] + ysb) & 0xFF] & 0x0E;
- return gradients2D[index] * dx
- + gradients2D[index + 1] * dy;
-}
-
-static double extrapolate3(const struct osn_context *ctx, int xsb, int ysb, int zsb, double dx, double dy, double dz)
-{
- const int16_t *perm = ctx->perm;
- const int16_t *permGradIndex3D = ctx->permGradIndex3D;
- int index = permGradIndex3D[(perm[(perm[xsb & 0xFF] + ysb) & 0xFF] + zsb) & 0xFF];
- return gradients3D[index] * dx
- + gradients3D[index + 1] * dy
- + gradients3D[index + 2] * dz;
-}
-
-static double extrapolate4(const struct osn_context *ctx, int xsb, int ysb, int zsb, int wsb, double dx, double dy, double dz, double dw)
-{
- const int16_t *perm = ctx->perm;
- int index = perm[(perm[(perm[(perm[xsb & 0xFF] + ysb) & 0xFF] + zsb) & 0xFF] + wsb) & 0xFF] & 0xFC;
- return gradients4D[index] * dx
- + gradients4D[index + 1] * dy
- + gradients4D[index + 2] * dz
- + gradients4D[index + 3] * dw;
-}
-
-static INLINE int fastFloor(double x) {
- int xi = (int) x;
- return x < xi ? xi - 1 : xi;
-}
-
-// -- GODOT start --
-/*
-static int allocate_perm(struct osn_context *ctx, int nperm, int ngrad)
-{
- if (ctx->perm)
- free(ctx->perm);
- if (ctx->permGradIndex3D)
- free(ctx->permGradIndex3D);
- ctx->perm = (int16_t *) malloc(sizeof(*ctx->perm) * nperm);
- if (!ctx->perm)
- return -ENOMEM;
- ctx->permGradIndex3D = (int16_t *) malloc(sizeof(*ctx->permGradIndex3D) * ngrad);
- if (!ctx->permGradIndex3D) {
- free(ctx->perm);
- return -ENOMEM;
- }
- return 0;
-}
-
-int open_simplex_noise_init_perm(struct osn_context *ctx, int16_t p[], int nelements)
-{
- int i, rc;
-
- rc = allocate_perm(ctx, nelements, 256);
- if (rc)
- return rc;
- memcpy(ctx->perm, p, sizeof(*ctx->perm) * nelements);
-
- for (i = 0; i < 256; i++) {
- // Since 3D has 24 gradients, simple bitmask won't work, so precompute modulo array.
- ctx->permGradIndex3D[i] = (int16_t)((ctx->perm[i] % (ARRAYSIZE(gradients3D) / 3)) * 3);
- }
- return 0;
-}
-*/
-// -- GODOT end --
-
-/*
- * Initializes using a permutation array generated from a 64-bit seed.
- * Generates a proper permutation (i.e. doesn't merely perform N successive pair
- * swaps on a base array). Uses a simple 64-bit LCG.
- */
-// -- GODOT start --
-int open_simplex_noise(int64_t seed, struct osn_context *ctx)
-{
- int rc;
- int16_t source[256];
- int i;
- int16_t *perm;
- int16_t *permGradIndex3D;
- int r;
-
- perm = ctx->perm;
- permGradIndex3D = ctx->permGradIndex3D;
-// -- GODOT end --
-
- uint64_t seedU = seed;
- for (i = 0; i < 256; i++)
- source[i] = (int16_t) i;
- seedU = seedU * 6364136223846793005ULL + 1442695040888963407ULL;
- seedU = seedU * 6364136223846793005ULL + 1442695040888963407ULL;
- seedU = seedU * 6364136223846793005ULL + 1442695040888963407ULL;
- for (i = 255; i >= 0; i--) {
- seedU = seedU * 6364136223846793005ULL + 1442695040888963407ULL;
- r = (int)((seedU + 31) % (i + 1));
- if (r < 0)
- r += (i + 1);
- perm[i] = source[r];
- permGradIndex3D[i] = (short)((perm[i] % (ARRAYSIZE(gradients3D) / 3)) * 3);
- source[r] = source[i];
- }
- return 0;
-}
-
-// -- GODOT start --
-/*
-void open_simplex_noise_free(struct osn_context *ctx)
-{
- if (!ctx)
- return;
- if (ctx->perm) {
- free(ctx->perm);
- ctx->perm = NULL;
- }
- if (ctx->permGradIndex3D) {
- free(ctx->permGradIndex3D);
- ctx->permGradIndex3D = NULL;
- }
- free(ctx);
-}
-*/
-// -- GODOT end --
-
-/* 2D OpenSimplex (Simplectic) Noise. */
-double open_simplex_noise2(const struct osn_context *ctx, double x, double y)
-{
-
- /* Place input coordinates onto grid. */
- double stretchOffset = (x + y) * STRETCH_CONSTANT_2D;
- double xs = x + stretchOffset;
- double ys = y + stretchOffset;
-
- /* Floor to get grid coordinates of rhombus (stretched square) super-cell origin. */
- int xsb = fastFloor(xs);
- int ysb = fastFloor(ys);
-
- /* Skew out to get actual coordinates of rhombus origin. We'll need these later. */
- double squishOffset = (xsb + ysb) * SQUISH_CONSTANT_2D;
- double xb = xsb + squishOffset;
- double yb = ysb + squishOffset;
-
- /* Compute grid coordinates relative to rhombus origin. */
- double xins = xs - xsb;
- double yins = ys - ysb;
-
- /* Sum those together to get a value that determines which region we're in. */
- double inSum = xins + yins;
-
- /* Positions relative to origin point. */
- double dx0 = x - xb;
- double dy0 = y - yb;
-
- /* We'll be defining these inside the next block and using them afterwards. */
- double dx_ext, dy_ext;
- int xsv_ext, ysv_ext;
-
- double dx1;
- double dy1;
- double attn1;
- double dx2;
- double dy2;
- double attn2;
- double zins;
- double attn0;
- double attn_ext;
-
- double value = 0;
-
- /* Contribution (1,0) */
- dx1 = dx0 - 1 - SQUISH_CONSTANT_2D;
- dy1 = dy0 - 0 - SQUISH_CONSTANT_2D;
- attn1 = 2 - dx1 * dx1 - dy1 * dy1;
- if (attn1 > 0) {
- attn1 *= attn1;
- value += attn1 * attn1 * extrapolate2(ctx, xsb + 1, ysb + 0, dx1, dy1);
- }
-
- /* Contribution (0,1) */
- dx2 = dx0 - 0 - SQUISH_CONSTANT_2D;
- dy2 = dy0 - 1 - SQUISH_CONSTANT_2D;
- attn2 = 2 - dx2 * dx2 - dy2 * dy2;
- if (attn2 > 0) {
- attn2 *= attn2;
- value += attn2 * attn2 * extrapolate2(ctx, xsb + 0, ysb + 1, dx2, dy2);
- }
-
- if (inSum <= 1) { /* We're inside the triangle (2-Simplex) at (0,0) */
- zins = 1 - inSum;
- if (zins > xins || zins > yins) { /* (0,0) is one of the closest two triangular vertices */
- if (xins > yins) {
- xsv_ext = xsb + 1;
- ysv_ext = ysb - 1;
- dx_ext = dx0 - 1;
- dy_ext = dy0 + 1;
- } else {
- xsv_ext = xsb - 1;
- ysv_ext = ysb + 1;
- dx_ext = dx0 + 1;
- dy_ext = dy0 - 1;
- }
- } else { /* (1,0) and (0,1) are the closest two vertices. */
- xsv_ext = xsb + 1;
- ysv_ext = ysb + 1;
- dx_ext = dx0 - 1 - 2 * SQUISH_CONSTANT_2D;
- dy_ext = dy0 - 1 - 2 * SQUISH_CONSTANT_2D;
- }
- } else { /* We're inside the triangle (2-Simplex) at (1,1) */
- zins = 2 - inSum;
- if (zins < xins || zins < yins) { /* (0,0) is one of the closest two triangular vertices */
- if (xins > yins) {
- xsv_ext = xsb + 2;
- ysv_ext = ysb + 0;
- dx_ext = dx0 - 2 - 2 * SQUISH_CONSTANT_2D;
- dy_ext = dy0 + 0 - 2 * SQUISH_CONSTANT_2D;
- } else {
- xsv_ext = xsb + 0;
- ysv_ext = ysb + 2;
- dx_ext = dx0 + 0 - 2 * SQUISH_CONSTANT_2D;
- dy_ext = dy0 - 2 - 2 * SQUISH_CONSTANT_2D;
- }
- } else { /* (1,0) and (0,1) are the closest two vertices. */
- dx_ext = dx0;
- dy_ext = dy0;
- xsv_ext = xsb;
- ysv_ext = ysb;
- }
- xsb += 1;
- ysb += 1;
- dx0 = dx0 - 1 - 2 * SQUISH_CONSTANT_2D;
- dy0 = dy0 - 1 - 2 * SQUISH_CONSTANT_2D;
- }
-
- /* Contribution (0,0) or (1,1) */
- attn0 = 2 - dx0 * dx0 - dy0 * dy0;
- if (attn0 > 0) {
- attn0 *= attn0;
- value += attn0 * attn0 * extrapolate2(ctx, xsb, ysb, dx0, dy0);
- }
-
- /* Extra Vertex */
- attn_ext = 2 - dx_ext * dx_ext - dy_ext * dy_ext;
- if (attn_ext > 0) {
- attn_ext *= attn_ext;
- value += attn_ext * attn_ext * extrapolate2(ctx, xsv_ext, ysv_ext, dx_ext, dy_ext);
- }
-
- return value / NORM_CONSTANT_2D;
-}
-
-/*
- * 3D OpenSimplex (Simplectic) Noise
- */
-double open_simplex_noise3(const struct osn_context *ctx, double x, double y, double z)
-{
-
- /* Place input coordinates on simplectic honeycomb. */
- double stretchOffset = (x + y + z) * STRETCH_CONSTANT_3D;
- double xs = x + stretchOffset;
- double ys = y + stretchOffset;
- double zs = z + stretchOffset;
-
- /* Floor to get simplectic honeycomb coordinates of rhombohedron (stretched cube) super-cell origin. */
- int xsb = fastFloor(xs);
- int ysb = fastFloor(ys);
- int zsb = fastFloor(zs);
-
- /* Skew out to get actual coordinates of rhombohedron origin. We'll need these later. */
- double squishOffset = (xsb + ysb + zsb) * SQUISH_CONSTANT_3D;
- double xb = xsb + squishOffset;
- double yb = ysb + squishOffset;
- double zb = zsb + squishOffset;
-
- /* Compute simplectic honeycomb coordinates relative to rhombohedral origin. */
- double xins = xs - xsb;
- double yins = ys - ysb;
- double zins = zs - zsb;
-
- /* Sum those together to get a value that determines which region we're in. */
- double inSum = xins + yins + zins;
-
- /* Positions relative to origin point. */
- double dx0 = x - xb;
- double dy0 = y - yb;
- double dz0 = z - zb;
-
- /* We'll be defining these inside the next block and using them afterwards. */
- double dx_ext0, dy_ext0, dz_ext0;
- double dx_ext1, dy_ext1, dz_ext1;
- int xsv_ext0, ysv_ext0, zsv_ext0;
- int xsv_ext1, ysv_ext1, zsv_ext1;
-
- double wins;
- int8_t c, c1, c2;
- int8_t aPoint, bPoint;
- double aScore, bScore;
- int aIsFurtherSide;
- int bIsFurtherSide;
- double p1, p2, p3;
- double score;
- double attn0, attn1, attn2, attn3, attn4, attn5, attn6;
- double dx1, dy1, dz1;
- double dx2, dy2, dz2;
- double dx3, dy3, dz3;
- double dx4, dy4, dz4;
- double dx5, dy5, dz5;
- double dx6, dy6, dz6;
- double attn_ext0, attn_ext1;
-
- double value = 0;
- if (inSum <= 1) { /* We're inside the tetrahedron (3-Simplex) at (0,0,0) */
-
- /* Determine which two of (0,0,1), (0,1,0), (1,0,0) are closest. */
- aPoint = 0x01;
- aScore = xins;
- bPoint = 0x02;
- bScore = yins;
- if (aScore >= bScore && zins > bScore) {
- bScore = zins;
- bPoint = 0x04;
- } else if (aScore < bScore && zins > aScore) {
- aScore = zins;
- aPoint = 0x04;
- }
-
- /* Now we determine the two lattice points not part of the tetrahedron that may contribute.
- This depends on the closest two tetrahedral vertices, including (0,0,0) */
- wins = 1 - inSum;
- if (wins > aScore || wins > bScore) { /* (0,0,0) is one of the closest two tetrahedral vertices. */
- c = (bScore > aScore ? bPoint : aPoint); /* Our other closest vertex is the closest out of a and b. */
-
- if ((c & 0x01) == 0) {
- xsv_ext0 = xsb - 1;
- xsv_ext1 = xsb;
- dx_ext0 = dx0 + 1;
- dx_ext1 = dx0;
- } else {
- xsv_ext0 = xsv_ext1 = xsb + 1;
- dx_ext0 = dx_ext1 = dx0 - 1;
- }
-
- if ((c & 0x02) == 0) {
- ysv_ext0 = ysv_ext1 = ysb;
- dy_ext0 = dy_ext1 = dy0;
- if ((c & 0x01) == 0) {
- ysv_ext1 -= 1;
- dy_ext1 += 1;
- } else {
- ysv_ext0 -= 1;
- dy_ext0 += 1;
- }
- } else {
- ysv_ext0 = ysv_ext1 = ysb + 1;
- dy_ext0 = dy_ext1 = dy0 - 1;
- }
-
- if ((c & 0x04) == 0) {
- zsv_ext0 = zsb;
- zsv_ext1 = zsb - 1;
- dz_ext0 = dz0;
- dz_ext1 = dz0 + 1;
- } else {
- zsv_ext0 = zsv_ext1 = zsb + 1;
- dz_ext0 = dz_ext1 = dz0 - 1;
- }
- } else { /* (0,0,0) is not one of the closest two tetrahedral vertices. */
- c = (int8_t)(aPoint | bPoint); /* Our two extra vertices are determined by the closest two. */
-
- if ((c & 0x01) == 0) {
- xsv_ext0 = xsb;
- xsv_ext1 = xsb - 1;
- dx_ext0 = dx0 - 2 * SQUISH_CONSTANT_3D;
- dx_ext1 = dx0 + 1 - SQUISH_CONSTANT_3D;
- } else {
- xsv_ext0 = xsv_ext1 = xsb + 1;
- dx_ext0 = dx0 - 1 - 2 * SQUISH_CONSTANT_3D;
- dx_ext1 = dx0 - 1 - SQUISH_CONSTANT_3D;
- }
-
- if ((c & 0x02) == 0) {
- ysv_ext0 = ysb;
- ysv_ext1 = ysb - 1;
- dy_ext0 = dy0 - 2 * SQUISH_CONSTANT_3D;
- dy_ext1 = dy0 + 1 - SQUISH_CONSTANT_3D;
- } else {
- ysv_ext0 = ysv_ext1 = ysb + 1;
- dy_ext0 = dy0 - 1 - 2 * SQUISH_CONSTANT_3D;
- dy_ext1 = dy0 - 1 - SQUISH_CONSTANT_3D;
- }
-
- if ((c & 0x04) == 0) {
- zsv_ext0 = zsb;
- zsv_ext1 = zsb - 1;
- dz_ext0 = dz0 - 2 * SQUISH_CONSTANT_3D;
- dz_ext1 = dz0 + 1 - SQUISH_CONSTANT_3D;
- } else {
- zsv_ext0 = zsv_ext1 = zsb + 1;
- dz_ext0 = dz0 - 1 - 2 * SQUISH_CONSTANT_3D;
- dz_ext1 = dz0 - 1 - SQUISH_CONSTANT_3D;
- }
- }
-
- /* Contribution (0,0,0) */
- attn0 = 2 - dx0 * dx0 - dy0 * dy0 - dz0 * dz0;
- if (attn0 > 0) {
- attn0 *= attn0;
- value += attn0 * attn0 * extrapolate3(ctx, xsb + 0, ysb + 0, zsb + 0, dx0, dy0, dz0);
- }
-
- /* Contribution (1,0,0) */
- dx1 = dx0 - 1 - SQUISH_CONSTANT_3D;
- dy1 = dy0 - 0 - SQUISH_CONSTANT_3D;
- dz1 = dz0 - 0 - SQUISH_CONSTANT_3D;
- attn1 = 2 - dx1 * dx1 - dy1 * dy1 - dz1 * dz1;
- if (attn1 > 0) {
- attn1 *= attn1;
- value += attn1 * attn1 * extrapolate3(ctx, xsb + 1, ysb + 0, zsb + 0, dx1, dy1, dz1);
- }
-
- /* Contribution (0,1,0) */
- dx2 = dx0 - 0 - SQUISH_CONSTANT_3D;
- dy2 = dy0 - 1 - SQUISH_CONSTANT_3D;
- dz2 = dz1;
- attn2 = 2 - dx2 * dx2 - dy2 * dy2 - dz2 * dz2;
- if (attn2 > 0) {
- attn2 *= attn2;
- value += attn2 * attn2 * extrapolate3(ctx, xsb + 0, ysb + 1, zsb + 0, dx2, dy2, dz2);
- }
-
- /* Contribution (0,0,1) */
- dx3 = dx2;
- dy3 = dy1;
- dz3 = dz0 - 1 - SQUISH_CONSTANT_3D;
- attn3 = 2 - dx3 * dx3 - dy3 * dy3 - dz3 * dz3;
- if (attn3 > 0) {
- attn3 *= attn3;
- value += attn3 * attn3 * extrapolate3(ctx, xsb + 0, ysb + 0, zsb + 1, dx3, dy3, dz3);
- }
- } else if (inSum >= 2) { /* We're inside the tetrahedron (3-Simplex) at (1,1,1) */
-
- /* Determine which two tetrahedral vertices are the closest, out of (1,1,0), (1,0,1), (0,1,1) but not (1,1,1). */
- aPoint = 0x06;
- aScore = xins;
- bPoint = 0x05;
- bScore = yins;
- if (aScore <= bScore && zins < bScore) {
- bScore = zins;
- bPoint = 0x03;
- } else if (aScore > bScore && zins < aScore) {
- aScore = zins;
- aPoint = 0x03;
- }
-
- /* Now we determine the two lattice points not part of the tetrahedron that may contribute.
- This depends on the closest two tetrahedral vertices, including (1,1,1) */
- wins = 3 - inSum;
- if (wins < aScore || wins < bScore) { /* (1,1,1) is one of the closest two tetrahedral vertices. */
- c = (bScore < aScore ? bPoint : aPoint); /* Our other closest vertex is the closest out of a and b. */
-
- if ((c & 0x01) != 0) {
- xsv_ext0 = xsb + 2;
- xsv_ext1 = xsb + 1;
- dx_ext0 = dx0 - 2 - 3 * SQUISH_CONSTANT_3D;
- dx_ext1 = dx0 - 1 - 3 * SQUISH_CONSTANT_3D;
- } else {
- xsv_ext0 = xsv_ext1 = xsb;
- dx_ext0 = dx_ext1 = dx0 - 3 * SQUISH_CONSTANT_3D;
- }
-
- if ((c & 0x02) != 0) {
- ysv_ext0 = ysv_ext1 = ysb + 1;
- dy_ext0 = dy_ext1 = dy0 - 1 - 3 * SQUISH_CONSTANT_3D;
- if ((c & 0x01) != 0) {
- ysv_ext1 += 1;
- dy_ext1 -= 1;
- } else {
- ysv_ext0 += 1;
- dy_ext0 -= 1;
- }
- } else {
- ysv_ext0 = ysv_ext1 = ysb;
- dy_ext0 = dy_ext1 = dy0 - 3 * SQUISH_CONSTANT_3D;
- }
-
- if ((c & 0x04) != 0) {
- zsv_ext0 = zsb + 1;
- zsv_ext1 = zsb + 2;
- dz_ext0 = dz0 - 1 - 3 * SQUISH_CONSTANT_3D;
- dz_ext1 = dz0 - 2 - 3 * SQUISH_CONSTANT_3D;
- } else {
- zsv_ext0 = zsv_ext1 = zsb;
- dz_ext0 = dz_ext1 = dz0 - 3 * SQUISH_CONSTANT_3D;
- }
- } else { /* (1,1,1) is not one of the closest two tetrahedral vertices. */
- c = (int8_t)(aPoint & bPoint); /* Our two extra vertices are determined by the closest two. */
-
- if ((c & 0x01) != 0) {
- xsv_ext0 = xsb + 1;
- xsv_ext1 = xsb + 2;
- dx_ext0 = dx0 - 1 - SQUISH_CONSTANT_3D;
- dx_ext1 = dx0 - 2 - 2 * SQUISH_CONSTANT_3D;
- } else {
- xsv_ext0 = xsv_ext1 = xsb;
- dx_ext0 = dx0 - SQUISH_CONSTANT_3D;
- dx_ext1 = dx0 - 2 * SQUISH_CONSTANT_3D;
- }
-
- if ((c & 0x02) != 0) {
- ysv_ext0 = ysb + 1;
- ysv_ext1 = ysb + 2;
- dy_ext0 = dy0 - 1 - SQUISH_CONSTANT_3D;
- dy_ext1 = dy0 - 2 - 2 * SQUISH_CONSTANT_3D;
- } else {
- ysv_ext0 = ysv_ext1 = ysb;
- dy_ext0 = dy0 - SQUISH_CONSTANT_3D;
- dy_ext1 = dy0 - 2 * SQUISH_CONSTANT_3D;
- }
-
- if ((c & 0x04) != 0) {
- zsv_ext0 = zsb + 1;
- zsv_ext1 = zsb + 2;
- dz_ext0 = dz0 - 1 - SQUISH_CONSTANT_3D;
- dz_ext1 = dz0 - 2 - 2 * SQUISH_CONSTANT_3D;
- } else {
- zsv_ext0 = zsv_ext1 = zsb;
- dz_ext0 = dz0 - SQUISH_CONSTANT_3D;
- dz_ext1 = dz0 - 2 * SQUISH_CONSTANT_3D;
- }
- }
-
- /* Contribution (1,1,0) */
- dx3 = dx0 - 1 - 2 * SQUISH_CONSTANT_3D;
- dy3 = dy0 - 1 - 2 * SQUISH_CONSTANT_3D;
- dz3 = dz0 - 0 - 2 * SQUISH_CONSTANT_3D;
- attn3 = 2 - dx3 * dx3 - dy3 * dy3 - dz3 * dz3;
- if (attn3 > 0) {
- attn3 *= attn3;
- value += attn3 * attn3 * extrapolate3(ctx, xsb + 1, ysb + 1, zsb + 0, dx3, dy3, dz3);
- }
-
- /* Contribution (1,0,1) */
- dx2 = dx3;
- dy2 = dy0 - 0 - 2 * SQUISH_CONSTANT_3D;
- dz2 = dz0 - 1 - 2 * SQUISH_CONSTANT_3D;
- attn2 = 2 - dx2 * dx2 - dy2 * dy2 - dz2 * dz2;
- if (attn2 > 0) {
- attn2 *= attn2;
- value += attn2 * attn2 * extrapolate3(ctx, xsb + 1, ysb + 0, zsb + 1, dx2, dy2, dz2);
- }
-
- /* Contribution (0,1,1) */
- dx1 = dx0 - 0 - 2 * SQUISH_CONSTANT_3D;
- dy1 = dy3;
- dz1 = dz2;
- attn1 = 2 - dx1 * dx1 - dy1 * dy1 - dz1 * dz1;
- if (attn1 > 0) {
- attn1 *= attn1;
- value += attn1 * attn1 * extrapolate3(ctx, xsb + 0, ysb + 1, zsb + 1, dx1, dy1, dz1);
- }
-
- /* Contribution (1,1,1) */
- dx0 = dx0 - 1 - 3 * SQUISH_CONSTANT_3D;
- dy0 = dy0 - 1 - 3 * SQUISH_CONSTANT_3D;
- dz0 = dz0 - 1 - 3 * SQUISH_CONSTANT_3D;
- attn0 = 2 - dx0 * dx0 - dy0 * dy0 - dz0 * dz0;
- if (attn0 > 0) {
- attn0 *= attn0;
- value += attn0 * attn0 * extrapolate3(ctx, xsb + 1, ysb + 1, zsb + 1, dx0, dy0, dz0);
- }
- } else { /* We're inside the octahedron (Rectified 3-Simplex) in between.
- Decide between point (0,0,1) and (1,1,0) as closest */
- p1 = xins + yins;
- if (p1 > 1) {
- aScore = p1 - 1;
- aPoint = 0x03;
- aIsFurtherSide = 1;
- } else {
- aScore = 1 - p1;
- aPoint = 0x04;
- aIsFurtherSide = 0;
- }
-
- /* Decide between point (0,1,0) and (1,0,1) as closest */
- p2 = xins + zins;
- if (p2 > 1) {
- bScore = p2 - 1;
- bPoint = 0x05;
- bIsFurtherSide = 1;
- } else {
- bScore = 1 - p2;
- bPoint = 0x02;
- bIsFurtherSide = 0;
- }
-
- /* The closest out of the two (1,0,0) and (0,1,1) will replace the furthest out of the two decided above, if closer. */
- p3 = yins + zins;
- if (p3 > 1) {
- score = p3 - 1;
- if (aScore <= bScore && aScore < score) {
- aScore = score;
- aPoint = 0x06;
- aIsFurtherSide = 1;
- } else if (aScore > bScore && bScore < score) {
- bScore = score;
- bPoint = 0x06;
- bIsFurtherSide = 1;
- }
- } else {
- score = 1 - p3;
- if (aScore <= bScore && aScore < score) {
- aScore = score;
- aPoint = 0x01;
- aIsFurtherSide = 0;
- } else if (aScore > bScore && bScore < score) {
- bScore = score;
- bPoint = 0x01;
- bIsFurtherSide = 0;
- }
- }
-
- /* Where each of the two closest points are determines how the extra two vertices are calculated. */
- if (aIsFurtherSide == bIsFurtherSide) {
- if (aIsFurtherSide) { /* Both closest points on (1,1,1) side */
-
- /* One of the two extra points is (1,1,1) */
- dx_ext0 = dx0 - 1 - 3 * SQUISH_CONSTANT_3D;
- dy_ext0 = dy0 - 1 - 3 * SQUISH_CONSTANT_3D;
- dz_ext0 = dz0 - 1 - 3 * SQUISH_CONSTANT_3D;
- xsv_ext0 = xsb + 1;
- ysv_ext0 = ysb + 1;
- zsv_ext0 = zsb + 1;
-
- /* Other extra point is based on the shared axis. */
- c = (int8_t)(aPoint & bPoint);
- if ((c & 0x01) != 0) {
- dx_ext1 = dx0 - 2 - 2 * SQUISH_CONSTANT_3D;
- dy_ext1 = dy0 - 2 * SQUISH_CONSTANT_3D;
- dz_ext1 = dz0 - 2 * SQUISH_CONSTANT_3D;
- xsv_ext1 = xsb + 2;
- ysv_ext1 = ysb;
- zsv_ext1 = zsb;
- } else if ((c & 0x02) != 0) {
- dx_ext1 = dx0 - 2 * SQUISH_CONSTANT_3D;
- dy_ext1 = dy0 - 2 - 2 * SQUISH_CONSTANT_3D;
- dz_ext1 = dz0 - 2 * SQUISH_CONSTANT_3D;
- xsv_ext1 = xsb;
- ysv_ext1 = ysb + 2;
- zsv_ext1 = zsb;
- } else {
- dx_ext1 = dx0 - 2 * SQUISH_CONSTANT_3D;
- dy_ext1 = dy0 - 2 * SQUISH_CONSTANT_3D;
- dz_ext1 = dz0 - 2 - 2 * SQUISH_CONSTANT_3D;
- xsv_ext1 = xsb;
- ysv_ext1 = ysb;
- zsv_ext1 = zsb + 2;
- }
- } else { /* Both closest points on (0,0,0) side */
-
- /* One of the two extra points is (0,0,0) */
- dx_ext0 = dx0;
- dy_ext0 = dy0;
- dz_ext0 = dz0;
- xsv_ext0 = xsb;
- ysv_ext0 = ysb;
- zsv_ext0 = zsb;
-
- /* Other extra point is based on the omitted axis. */
- c = (int8_t)(aPoint | bPoint);
- if ((c & 0x01) == 0) {
- dx_ext1 = dx0 + 1 - SQUISH_CONSTANT_3D;
- dy_ext1 = dy0 - 1 - SQUISH_CONSTANT_3D;
- dz_ext1 = dz0 - 1 - SQUISH_CONSTANT_3D;
- xsv_ext1 = xsb - 1;
- ysv_ext1 = ysb + 1;
- zsv_ext1 = zsb + 1;
- } else if ((c & 0x02) == 0) {
- dx_ext1 = dx0 - 1 - SQUISH_CONSTANT_3D;
- dy_ext1 = dy0 + 1 - SQUISH_CONSTANT_3D;
- dz_ext1 = dz0 - 1 - SQUISH_CONSTANT_3D;
- xsv_ext1 = xsb + 1;
- ysv_ext1 = ysb - 1;
- zsv_ext1 = zsb + 1;
- } else {
- dx_ext1 = dx0 - 1 - SQUISH_CONSTANT_3D;
- dy_ext1 = dy0 - 1 - SQUISH_CONSTANT_3D;
- dz_ext1 = dz0 + 1 - SQUISH_CONSTANT_3D;
- xsv_ext1 = xsb + 1;
- ysv_ext1 = ysb + 1;
- zsv_ext1 = zsb - 1;
- }
- }
- } else { /* One point on (0,0,0) side, one point on (1,1,1) side */
- if (aIsFurtherSide) {
- c1 = aPoint;
- c2 = bPoint;
- } else {
- c1 = bPoint;
- c2 = aPoint;
- }
-
- /* One contribution is a permutation of (1,1,-1) */
- if ((c1 & 0x01) == 0) {
- dx_ext0 = dx0 + 1 - SQUISH_CONSTANT_3D;
- dy_ext0 = dy0 - 1 - SQUISH_CONSTANT_3D;
- dz_ext0 = dz0 - 1 - SQUISH_CONSTANT_3D;
- xsv_ext0 = xsb - 1;
- ysv_ext0 = ysb + 1;
- zsv_ext0 = zsb + 1;
- } else if ((c1 & 0x02) == 0) {
- dx_ext0 = dx0 - 1 - SQUISH_CONSTANT_3D;
- dy_ext0 = dy0 + 1 - SQUISH_CONSTANT_3D;
- dz_ext0 = dz0 - 1 - SQUISH_CONSTANT_3D;
- xsv_ext0 = xsb + 1;
- ysv_ext0 = ysb - 1;
- zsv_ext0 = zsb + 1;
- } else {
- dx_ext0 = dx0 - 1 - SQUISH_CONSTANT_3D;
- dy_ext0 = dy0 - 1 - SQUISH_CONSTANT_3D;
- dz_ext0 = dz0 + 1 - SQUISH_CONSTANT_3D;
- xsv_ext0 = xsb + 1;
- ysv_ext0 = ysb + 1;
- zsv_ext0 = zsb - 1;
- }
-
- /* One contribution is a permutation of (0,0,2) */
- dx_ext1 = dx0 - 2 * SQUISH_CONSTANT_3D;
- dy_ext1 = dy0 - 2 * SQUISH_CONSTANT_3D;
- dz_ext1 = dz0 - 2 * SQUISH_CONSTANT_3D;
- xsv_ext1 = xsb;
- ysv_ext1 = ysb;
- zsv_ext1 = zsb;
- if ((c2 & 0x01) != 0) {
- dx_ext1 -= 2;
- xsv_ext1 += 2;
- } else if ((c2 & 0x02) != 0) {
- dy_ext1 -= 2;
- ysv_ext1 += 2;
- } else {
- dz_ext1 -= 2;
- zsv_ext1 += 2;
- }
- }
-
- /* Contribution (1,0,0) */
- dx1 = dx0 - 1 - SQUISH_CONSTANT_3D;
- dy1 = dy0 - 0 - SQUISH_CONSTANT_3D;
- dz1 = dz0 - 0 - SQUISH_CONSTANT_3D;
- attn1 = 2 - dx1 * dx1 - dy1 * dy1 - dz1 * dz1;
- if (attn1 > 0) {
- attn1 *= attn1;
- value += attn1 * attn1 * extrapolate3(ctx, xsb + 1, ysb + 0, zsb + 0, dx1, dy1, dz1);
- }
-
- /* Contribution (0,1,0) */
- dx2 = dx0 - 0 - SQUISH_CONSTANT_3D;
- dy2 = dy0 - 1 - SQUISH_CONSTANT_3D;
- dz2 = dz1;
- attn2 = 2 - dx2 * dx2 - dy2 * dy2 - dz2 * dz2;
- if (attn2 > 0) {
- attn2 *= attn2;
- value += attn2 * attn2 * extrapolate3(ctx, xsb + 0, ysb + 1, zsb + 0, dx2, dy2, dz2);
- }
-
- /* Contribution (0,0,1) */
- dx3 = dx2;
- dy3 = dy1;
- dz3 = dz0 - 1 - SQUISH_CONSTANT_3D;
- attn3 = 2 - dx3 * dx3 - dy3 * dy3 - dz3 * dz3;
- if (attn3 > 0) {
- attn3 *= attn3;
- value += attn3 * attn3 * extrapolate3(ctx, xsb + 0, ysb + 0, zsb + 1, dx3, dy3, dz3);
- }
-
- /* Contribution (1,1,0) */
- dx4 = dx0 - 1 - 2 * SQUISH_CONSTANT_3D;
- dy4 = dy0 - 1 - 2 * SQUISH_CONSTANT_3D;
- dz4 = dz0 - 0 - 2 * SQUISH_CONSTANT_3D;
- attn4 = 2 - dx4 * dx4 - dy4 * dy4 - dz4 * dz4;
- if (attn4 > 0) {
- attn4 *= attn4;
- value += attn4 * attn4 * extrapolate3(ctx, xsb + 1, ysb + 1, zsb + 0, dx4, dy4, dz4);
- }
-
- /* Contribution (1,0,1) */
- dx5 = dx4;
- dy5 = dy0 - 0 - 2 * SQUISH_CONSTANT_3D;
- dz5 = dz0 - 1 - 2 * SQUISH_CONSTANT_3D;
- attn5 = 2 - dx5 * dx5 - dy5 * dy5 - dz5 * dz5;
- if (attn5 > 0) {
- attn5 *= attn5;
- value += attn5 * attn5 * extrapolate3(ctx, xsb + 1, ysb + 0, zsb + 1, dx5, dy5, dz5);
- }
-
- /* Contribution (0,1,1) */
- dx6 = dx0 - 0 - 2 * SQUISH_CONSTANT_3D;
- dy6 = dy4;
- dz6 = dz5;
- attn6 = 2 - dx6 * dx6 - dy6 * dy6 - dz6 * dz6;
- if (attn6 > 0) {
- attn6 *= attn6;
- value += attn6 * attn6 * extrapolate3(ctx, xsb + 0, ysb + 1, zsb + 1, dx6, dy6, dz6);
- }
- }
-
- /* First extra vertex */
- attn_ext0 = 2 - dx_ext0 * dx_ext0 - dy_ext0 * dy_ext0 - dz_ext0 * dz_ext0;
- if (attn_ext0 > 0)
- {
- attn_ext0 *= attn_ext0;
- value += attn_ext0 * attn_ext0 * extrapolate3(ctx, xsv_ext0, ysv_ext0, zsv_ext0, dx_ext0, dy_ext0, dz_ext0);
- }
-
- /* Second extra vertex */
- attn_ext1 = 2 - dx_ext1 * dx_ext1 - dy_ext1 * dy_ext1 - dz_ext1 * dz_ext1;
- if (attn_ext1 > 0)
- {
- attn_ext1 *= attn_ext1;
- value += attn_ext1 * attn_ext1 * extrapolate3(ctx, xsv_ext1, ysv_ext1, zsv_ext1, dx_ext1, dy_ext1, dz_ext1);
- }
-
- return value / NORM_CONSTANT_3D;
-}
-
-/*
- * 4D OpenSimplex (Simplectic) Noise.
- */
-double open_simplex_noise4(const struct osn_context *ctx, double x, double y, double z, double w)
-{
- double uins;
- double dx1, dy1, dz1, dw1;
- double dx2, dy2, dz2, dw2;
- double dx3, dy3, dz3, dw3;
- double dx4, dy4, dz4, dw4;
- double dx5, dy5, dz5, dw5;
- double dx6, dy6, dz6, dw6;
- double dx7, dy7, dz7, dw7;
- double dx8, dy8, dz8, dw8;
- double dx9, dy9, dz9, dw9;
- double dx10, dy10, dz10, dw10;
- double attn0, attn1, attn2, attn3, attn4;
- double attn5, attn6, attn7, attn8, attn9, attn10;
- double attn_ext0, attn_ext1, attn_ext2;
- int8_t c, c1, c2;
- int8_t aPoint, bPoint;
- double aScore, bScore;
- int aIsBiggerSide;
- int bIsBiggerSide;
- double p1, p2, p3, p4;
- double score;
-
- /* Place input coordinates on simplectic honeycomb. */
- double stretchOffset = (x + y + z + w) * STRETCH_CONSTANT_4D;
- double xs = x + stretchOffset;
- double ys = y + stretchOffset;
- double zs = z + stretchOffset;
- double ws = w + stretchOffset;
-
- /* Floor to get simplectic honeycomb coordinates of rhombo-hypercube super-cell origin. */
- int xsb = fastFloor(xs);
- int ysb = fastFloor(ys);
- int zsb = fastFloor(zs);
- int wsb = fastFloor(ws);
-
- /* Skew out to get actual coordinates of stretched rhombo-hypercube origin. We'll need these later. */
- double squishOffset = (xsb + ysb + zsb + wsb) * SQUISH_CONSTANT_4D;
- double xb = xsb + squishOffset;
- double yb = ysb + squishOffset;
- double zb = zsb + squishOffset;
- double wb = wsb + squishOffset;
-
- /* Compute simplectic honeycomb coordinates relative to rhombo-hypercube origin. */
- double xins = xs - xsb;
- double yins = ys - ysb;
- double zins = zs - zsb;
- double wins = ws - wsb;
-
- /* Sum those together to get a value that determines which region we're in. */
- double inSum = xins + yins + zins + wins;
-
- /* Positions relative to origin point. */
- double dx0 = x - xb;
- double dy0 = y - yb;
- double dz0 = z - zb;
- double dw0 = w - wb;
-
- /* We'll be defining these inside the next block and using them afterwards. */
- double dx_ext0, dy_ext0, dz_ext0, dw_ext0;
- double dx_ext1, dy_ext1, dz_ext1, dw_ext1;
- double dx_ext2, dy_ext2, dz_ext2, dw_ext2;
- int xsv_ext0, ysv_ext0, zsv_ext0, wsv_ext0;
- int xsv_ext1, ysv_ext1, zsv_ext1, wsv_ext1;
- int xsv_ext2, ysv_ext2, zsv_ext2, wsv_ext2;
-
- double value = 0;
- if (inSum <= 1) { /* We're inside the pentachoron (4-Simplex) at (0,0,0,0) */
-
- /* Determine which two of (0,0,0,1), (0,0,1,0), (0,1,0,0), (1,0,0,0) are closest. */
- aPoint = 0x01;
- aScore = xins;
- bPoint = 0x02;
- bScore = yins;
- if (aScore >= bScore && zins > bScore) {
- bScore = zins;
- bPoint = 0x04;
- } else if (aScore < bScore && zins > aScore) {
- aScore = zins;
- aPoint = 0x04;
- }
- if (aScore >= bScore && wins > bScore) {
- bScore = wins;
- bPoint = 0x08;
- } else if (aScore < bScore && wins > aScore) {
- aScore = wins;
- aPoint = 0x08;
- }
-
- /* Now we determine the three lattice points not part of the pentachoron that may contribute.
- This depends on the closest two pentachoron vertices, including (0,0,0,0) */
- uins = 1 - inSum;
- if (uins > aScore || uins > bScore) { /* (0,0,0,0) is one of the closest two pentachoron vertices. */
- c = (bScore > aScore ? bPoint : aPoint); /* Our other closest vertex is the closest out of a and b. */
- if ((c & 0x01) == 0) {
- xsv_ext0 = xsb - 1;
- xsv_ext1 = xsv_ext2 = xsb;
- dx_ext0 = dx0 + 1;
- dx_ext1 = dx_ext2 = dx0;
- } else {
- xsv_ext0 = xsv_ext1 = xsv_ext2 = xsb + 1;
- dx_ext0 = dx_ext1 = dx_ext2 = dx0 - 1;
- }
-
- if ((c & 0x02) == 0) {
- ysv_ext0 = ysv_ext1 = ysv_ext2 = ysb;
- dy_ext0 = dy_ext1 = dy_ext2 = dy0;
- if ((c & 0x01) == 0x01) {
- ysv_ext0 -= 1;
- dy_ext0 += 1;
- } else {
- ysv_ext1 -= 1;
- dy_ext1 += 1;
- }
- } else {
- ysv_ext0 = ysv_ext1 = ysv_ext2 = ysb + 1;
- dy_ext0 = dy_ext1 = dy_ext2 = dy0 - 1;
- }
-
- if ((c & 0x04) == 0) {
- zsv_ext0 = zsv_ext1 = zsv_ext2 = zsb;
- dz_ext0 = dz_ext1 = dz_ext2 = dz0;
- if ((c & 0x03) != 0) {
- if ((c & 0x03) == 0x03) {
- zsv_ext0 -= 1;
- dz_ext0 += 1;
- } else {
- zsv_ext1 -= 1;
- dz_ext1 += 1;
- }
- } else {
- zsv_ext2 -= 1;
- dz_ext2 += 1;
- }
- } else {
- zsv_ext0 = zsv_ext1 = zsv_ext2 = zsb + 1;
- dz_ext0 = dz_ext1 = dz_ext2 = dz0 - 1;
- }
-
- if ((c & 0x08) == 0) {
- wsv_ext0 = wsv_ext1 = wsb;
- wsv_ext2 = wsb - 1;
- dw_ext0 = dw_ext1 = dw0;
- dw_ext2 = dw0 + 1;
- } else {
- wsv_ext0 = wsv_ext1 = wsv_ext2 = wsb + 1;
- dw_ext0 = dw_ext1 = dw_ext2 = dw0 - 1;
- }
- } else { /* (0,0,0,0) is not one of the closest two pentachoron vertices. */
- c = (int8_t)(aPoint | bPoint); /* Our three extra vertices are determined by the closest two. */
-
- if ((c & 0x01) == 0) {
- xsv_ext0 = xsv_ext2 = xsb;
- xsv_ext1 = xsb - 1;
- dx_ext0 = dx0 - 2 * SQUISH_CONSTANT_4D;
- dx_ext1 = dx0 + 1 - SQUISH_CONSTANT_4D;
- dx_ext2 = dx0 - SQUISH_CONSTANT_4D;
- } else {
- xsv_ext0 = xsv_ext1 = xsv_ext2 = xsb + 1;
- dx_ext0 = dx0 - 1 - 2 * SQUISH_CONSTANT_4D;
- dx_ext1 = dx_ext2 = dx0 - 1 - SQUISH_CONSTANT_4D;
- }
-
- if ((c & 0x02) == 0) {
- ysv_ext0 = ysv_ext1 = ysv_ext2 = ysb;
- dy_ext0 = dy0 - 2 * SQUISH_CONSTANT_4D;
- dy_ext1 = dy_ext2 = dy0 - SQUISH_CONSTANT_4D;
- if ((c & 0x01) == 0x01) {
- ysv_ext1 -= 1;
- dy_ext1 += 1;
- } else {
- ysv_ext2 -= 1;
- dy_ext2 += 1;
- }
- } else {
- ysv_ext0 = ysv_ext1 = ysv_ext2 = ysb + 1;
- dy_ext0 = dy0 - 1 - 2 * SQUISH_CONSTANT_4D;
- dy_ext1 = dy_ext2 = dy0 - 1 - SQUISH_CONSTANT_4D;
- }
-
- if ((c & 0x04) == 0) {
- zsv_ext0 = zsv_ext1 = zsv_ext2 = zsb;
- dz_ext0 = dz0 - 2 * SQUISH_CONSTANT_4D;
- dz_ext1 = dz_ext2 = dz0 - SQUISH_CONSTANT_4D;
- if ((c & 0x03) == 0x03) {
- zsv_ext1 -= 1;
- dz_ext1 += 1;
- } else {
- zsv_ext2 -= 1;
- dz_ext2 += 1;
- }
- } else {
- zsv_ext0 = zsv_ext1 = zsv_ext2 = zsb + 1;
- dz_ext0 = dz0 - 1 - 2 * SQUISH_CONSTANT_4D;
- dz_ext1 = dz_ext2 = dz0 - 1 - SQUISH_CONSTANT_4D;
- }
-
- if ((c & 0x08) == 0) {
- wsv_ext0 = wsv_ext1 = wsb;
- wsv_ext2 = wsb - 1;
- dw_ext0 = dw0 - 2 * SQUISH_CONSTANT_4D;
- dw_ext1 = dw0 - SQUISH_CONSTANT_4D;
- dw_ext2 = dw0 + 1 - SQUISH_CONSTANT_4D;
- } else {
- wsv_ext0 = wsv_ext1 = wsv_ext2 = wsb + 1;
- dw_ext0 = dw0 - 1 - 2 * SQUISH_CONSTANT_4D;
- dw_ext1 = dw_ext2 = dw0 - 1 - SQUISH_CONSTANT_4D;
- }
- }
-
- /* Contribution (0,0,0,0) */
- attn0 = 2 - dx0 * dx0 - dy0 * dy0 - dz0 * dz0 - dw0 * dw0;
- if (attn0 > 0) {
- attn0 *= attn0;
- value += attn0 * attn0 * extrapolate4(ctx, xsb + 0, ysb + 0, zsb + 0, wsb + 0, dx0, dy0, dz0, dw0);
- }
-
- /* Contribution (1,0,0,0) */
- dx1 = dx0 - 1 - SQUISH_CONSTANT_4D;
- dy1 = dy0 - 0 - SQUISH_CONSTANT_4D;
- dz1 = dz0 - 0 - SQUISH_CONSTANT_4D;
- dw1 = dw0 - 0 - SQUISH_CONSTANT_4D;
- attn1 = 2 - dx1 * dx1 - dy1 * dy1 - dz1 * dz1 - dw1 * dw1;
- if (attn1 > 0) {
- attn1 *= attn1;
- value += attn1 * attn1 * extrapolate4(ctx, xsb + 1, ysb + 0, zsb + 0, wsb + 0, dx1, dy1, dz1, dw1);
- }
-
- /* Contribution (0,1,0,0) */
- dx2 = dx0 - 0 - SQUISH_CONSTANT_4D;
- dy2 = dy0 - 1 - SQUISH_CONSTANT_4D;
- dz2 = dz1;
- dw2 = dw1;
- attn2 = 2 - dx2 * dx2 - dy2 * dy2 - dz2 * dz2 - dw2 * dw2;
- if (attn2 > 0) {
- attn2 *= attn2;
- value += attn2 * attn2 * extrapolate4(ctx, xsb + 0, ysb + 1, zsb + 0, wsb + 0, dx2, dy2, dz2, dw2);
- }
-
- /* Contribution (0,0,1,0) */
- dx3 = dx2;
- dy3 = dy1;
- dz3 = dz0 - 1 - SQUISH_CONSTANT_4D;
- dw3 = dw1;
- attn3 = 2 - dx3 * dx3 - dy3 * dy3 - dz3 * dz3 - dw3 * dw3;
- if (attn3 > 0) {
- attn3 *= attn3;
- value += attn3 * attn3 * extrapolate4(ctx, xsb + 0, ysb + 0, zsb + 1, wsb + 0, dx3, dy3, dz3, dw3);
- }
-
- /* Contribution (0,0,0,1) */
- dx4 = dx2;
- dy4 = dy1;
- dz4 = dz1;
- dw4 = dw0 - 1 - SQUISH_CONSTANT_4D;
- attn4 = 2 - dx4 * dx4 - dy4 * dy4 - dz4 * dz4 - dw4 * dw4;
- if (attn4 > 0) {
- attn4 *= attn4;
- value += attn4 * attn4 * extrapolate4(ctx, xsb + 0, ysb + 0, zsb + 0, wsb + 1, dx4, dy4, dz4, dw4);
- }
- } else if (inSum >= 3) { /* We're inside the pentachoron (4-Simplex) at (1,1,1,1)
- Determine which two of (1,1,1,0), (1,1,0,1), (1,0,1,1), (0,1,1,1) are closest. */
- aPoint = 0x0E;
- aScore = xins;
- bPoint = 0x0D;
- bScore = yins;
- if (aScore <= bScore && zins < bScore) {
- bScore = zins;
- bPoint = 0x0B;
- } else if (aScore > bScore && zins < aScore) {
- aScore = zins;
- aPoint = 0x0B;
- }
- if (aScore <= bScore && wins < bScore) {
- bScore = wins;
- bPoint = 0x07;
- } else if (aScore > bScore && wins < aScore) {
- aScore = wins;
- aPoint = 0x07;
- }
-
- /* Now we determine the three lattice points not part of the pentachoron that may contribute.
- This depends on the closest two pentachoron vertices, including (0,0,0,0) */
- uins = 4 - inSum;
- if (uins < aScore || uins < bScore) { /* (1,1,1,1) is one of the closest two pentachoron vertices. */
- c = (bScore < aScore ? bPoint : aPoint); /* Our other closest vertex is the closest out of a and b. */
-
- if ((c & 0x01) != 0) {
- xsv_ext0 = xsb + 2;
- xsv_ext1 = xsv_ext2 = xsb + 1;
- dx_ext0 = dx0 - 2 - 4 * SQUISH_CONSTANT_4D;
- dx_ext1 = dx_ext2 = dx0 - 1 - 4 * SQUISH_CONSTANT_4D;
- } else {
- xsv_ext0 = xsv_ext1 = xsv_ext2 = xsb;
- dx_ext0 = dx_ext1 = dx_ext2 = dx0 - 4 * SQUISH_CONSTANT_4D;
- }
-
- if ((c & 0x02) != 0) {
- ysv_ext0 = ysv_ext1 = ysv_ext2 = ysb + 1;
- dy_ext0 = dy_ext1 = dy_ext2 = dy0 - 1 - 4 * SQUISH_CONSTANT_4D;
- if ((c & 0x01) != 0) {
- ysv_ext1 += 1;
- dy_ext1 -= 1;
- } else {
- ysv_ext0 += 1;
- dy_ext0 -= 1;
- }
- } else {
- ysv_ext0 = ysv_ext1 = ysv_ext2 = ysb;
- dy_ext0 = dy_ext1 = dy_ext2 = dy0 - 4 * SQUISH_CONSTANT_4D;
- }
-
- if ((c & 0x04) != 0) {
- zsv_ext0 = zsv_ext1 = zsv_ext2 = zsb + 1;
- dz_ext0 = dz_ext1 = dz_ext2 = dz0 - 1 - 4 * SQUISH_CONSTANT_4D;
- if ((c & 0x03) != 0x03) {
- if ((c & 0x03) == 0) {
- zsv_ext0 += 1;
- dz_ext0 -= 1;
- } else {
- zsv_ext1 += 1;
- dz_ext1 -= 1;
- }
- } else {
- zsv_ext2 += 1;
- dz_ext2 -= 1;
- }
- } else {
- zsv_ext0 = zsv_ext1 = zsv_ext2 = zsb;
- dz_ext0 = dz_ext1 = dz_ext2 = dz0 - 4 * SQUISH_CONSTANT_4D;
- }
-
- if ((c & 0x08) != 0) {
- wsv_ext0 = wsv_ext1 = wsb + 1;
- wsv_ext2 = wsb + 2;
- dw_ext0 = dw_ext1 = dw0 - 1 - 4 * SQUISH_CONSTANT_4D;
- dw_ext2 = dw0 - 2 - 4 * SQUISH_CONSTANT_4D;
- } else {
- wsv_ext0 = wsv_ext1 = wsv_ext2 = wsb;
- dw_ext0 = dw_ext1 = dw_ext2 = dw0 - 4 * SQUISH_CONSTANT_4D;
- }
- } else { /* (1,1,1,1) is not one of the closest two pentachoron vertices. */
- c = (int8_t)(aPoint & bPoint); /* Our three extra vertices are determined by the closest two. */
-
- if ((c & 0x01) != 0) {
- xsv_ext0 = xsv_ext2 = xsb + 1;
- xsv_ext1 = xsb + 2;
- dx_ext0 = dx0 - 1 - 2 * SQUISH_CONSTANT_4D;
- dx_ext1 = dx0 - 2 - 3 * SQUISH_CONSTANT_4D;
- dx_ext2 = dx0 - 1 - 3 * SQUISH_CONSTANT_4D;
- } else {
- xsv_ext0 = xsv_ext1 = xsv_ext2 = xsb;
- dx_ext0 = dx0 - 2 * SQUISH_CONSTANT_4D;
- dx_ext1 = dx_ext2 = dx0 - 3 * SQUISH_CONSTANT_4D;
- }
-
- if ((c & 0x02) != 0) {
- ysv_ext0 = ysv_ext1 = ysv_ext2 = ysb + 1;
- dy_ext0 = dy0 - 1 - 2 * SQUISH_CONSTANT_4D;
- dy_ext1 = dy_ext2 = dy0 - 1 - 3 * SQUISH_CONSTANT_4D;
- if ((c & 0x01) != 0) {
- ysv_ext2 += 1;
- dy_ext2 -= 1;
- } else {
- ysv_ext1 += 1;
- dy_ext1 -= 1;
- }
- } else {
- ysv_ext0 = ysv_ext1 = ysv_ext2 = ysb;
- dy_ext0 = dy0 - 2 * SQUISH_CONSTANT_4D;
- dy_ext1 = dy_ext2 = dy0 - 3 * SQUISH_CONSTANT_4D;
- }
-
- if ((c & 0x04) != 0) {
- zsv_ext0 = zsv_ext1 = zsv_ext2 = zsb + 1;
- dz_ext0 = dz0 - 1 - 2 * SQUISH_CONSTANT_4D;
- dz_ext1 = dz_ext2 = dz0 - 1 - 3 * SQUISH_CONSTANT_4D;
- if ((c & 0x03) != 0) {
- zsv_ext2 += 1;
- dz_ext2 -= 1;
- } else {
- zsv_ext1 += 1;
- dz_ext1 -= 1;
- }
- } else {
- zsv_ext0 = zsv_ext1 = zsv_ext2 = zsb;
- dz_ext0 = dz0 - 2 * SQUISH_CONSTANT_4D;
- dz_ext1 = dz_ext2 = dz0 - 3 * SQUISH_CONSTANT_4D;
- }
-
- if ((c & 0x08) != 0) {
- wsv_ext0 = wsv_ext1 = wsb + 1;
- wsv_ext2 = wsb + 2;
- dw_ext0 = dw0 - 1 - 2 * SQUISH_CONSTANT_4D;
- dw_ext1 = dw0 - 1 - 3 * SQUISH_CONSTANT_4D;
- dw_ext2 = dw0 - 2 - 3 * SQUISH_CONSTANT_4D;
- } else {
- wsv_ext0 = wsv_ext1 = wsv_ext2 = wsb;
- dw_ext0 = dw0 - 2 * SQUISH_CONSTANT_4D;
- dw_ext1 = dw_ext2 = dw0 - 3 * SQUISH_CONSTANT_4D;
- }
- }
-
- /* Contribution (1,1,1,0) */
- dx4 = dx0 - 1 - 3 * SQUISH_CONSTANT_4D;
- dy4 = dy0 - 1 - 3 * SQUISH_CONSTANT_4D;
- dz4 = dz0 - 1 - 3 * SQUISH_CONSTANT_4D;
- dw4 = dw0 - 3 * SQUISH_CONSTANT_4D;
- attn4 = 2 - dx4 * dx4 - dy4 * dy4 - dz4 * dz4 - dw4 * dw4;
- if (attn4 > 0) {
- attn4 *= attn4;
- value += attn4 * attn4 * extrapolate4(ctx, xsb + 1, ysb + 1, zsb + 1, wsb + 0, dx4, dy4, dz4, dw4);
- }
-
- /* Contribution (1,1,0,1) */
- dx3 = dx4;
- dy3 = dy4;
- dz3 = dz0 - 3 * SQUISH_CONSTANT_4D;
- dw3 = dw0 - 1 - 3 * SQUISH_CONSTANT_4D;
- attn3 = 2 - dx3 * dx3 - dy3 * dy3 - dz3 * dz3 - dw3 * dw3;
- if (attn3 > 0) {
- attn3 *= attn3;
- value += attn3 * attn3 * extrapolate4(ctx, xsb + 1, ysb + 1, zsb + 0, wsb + 1, dx3, dy3, dz3, dw3);
- }
-
- /* Contribution (1,0,1,1) */
- dx2 = dx4;
- dy2 = dy0 - 3 * SQUISH_CONSTANT_4D;
- dz2 = dz4;
- dw2 = dw3;
- attn2 = 2 - dx2 * dx2 - dy2 * dy2 - dz2 * dz2 - dw2 * dw2;
- if (attn2 > 0) {
- attn2 *= attn2;
- value += attn2 * attn2 * extrapolate4(ctx, xsb + 1, ysb + 0, zsb + 1, wsb + 1, dx2, dy2, dz2, dw2);
- }
-
- /* Contribution (0,1,1,1) */
- dx1 = dx0 - 3 * SQUISH_CONSTANT_4D;
- dz1 = dz4;
- dy1 = dy4;
- dw1 = dw3;
- attn1 = 2 - dx1 * dx1 - dy1 * dy1 - dz1 * dz1 - dw1 * dw1;
- if (attn1 > 0) {
- attn1 *= attn1;
- value += attn1 * attn1 * extrapolate4(ctx, xsb + 0, ysb + 1, zsb + 1, wsb + 1, dx1, dy1, dz1, dw1);
- }
-
- /* Contribution (1,1,1,1) */
- dx0 = dx0 - 1 - 4 * SQUISH_CONSTANT_4D;
- dy0 = dy0 - 1 - 4 * SQUISH_CONSTANT_4D;
- dz0 = dz0 - 1 - 4 * SQUISH_CONSTANT_4D;
- dw0 = dw0 - 1 - 4 * SQUISH_CONSTANT_4D;
- attn0 = 2 - dx0 * dx0 - dy0 * dy0 - dz0 * dz0 - dw0 * dw0;
- if (attn0 > 0) {
- attn0 *= attn0;
- value += attn0 * attn0 * extrapolate4(ctx, xsb + 1, ysb + 1, zsb + 1, wsb + 1, dx0, dy0, dz0, dw0);
- }
- } else if (inSum <= 2) { /* We're inside the first dispentachoron (Rectified 4-Simplex) */
- aIsBiggerSide = 1;
- bIsBiggerSide = 1;
-
- /* Decide between (1,1,0,0) and (0,0,1,1) */
- if (xins + yins > zins + wins) {
- aScore = xins + yins;
- aPoint = 0x03;
- } else {
- aScore = zins + wins;
- aPoint = 0x0C;
- }
-
- /* Decide between (1,0,1,0) and (0,1,0,1) */
- if (xins + zins > yins + wins) {
- bScore = xins + zins;
- bPoint = 0x05;
- } else {
- bScore = yins + wins;
- bPoint = 0x0A;
- }
-
- /* Closer between (1,0,0,1) and (0,1,1,0) will replace the further of a and b, if closer. */
- if (xins + wins > yins + zins) {
- score = xins + wins;
- if (aScore >= bScore && score > bScore) {
- bScore = score;
- bPoint = 0x09;
- } else if (aScore < bScore && score > aScore) {
- aScore = score;
- aPoint = 0x09;
- }
- } else {
- score = yins + zins;
- if (aScore >= bScore && score > bScore) {
- bScore = score;
- bPoint = 0x06;
- } else if (aScore < bScore && score > aScore) {
- aScore = score;
- aPoint = 0x06;
- }
- }
-
- /* Decide if (1,0,0,0) is closer. */
- p1 = 2 - inSum + xins;
- if (aScore >= bScore && p1 > bScore) {
- bScore = p1;
- bPoint = 0x01;
- bIsBiggerSide = 0;
- } else if (aScore < bScore && p1 > aScore) {
- aScore = p1;
- aPoint = 0x01;
- aIsBiggerSide = 0;
- }
-
- /* Decide if (0,1,0,0) is closer. */
- p2 = 2 - inSum + yins;
- if (aScore >= bScore && p2 > bScore) {
- bScore = p2;
- bPoint = 0x02;
- bIsBiggerSide = 0;
- } else if (aScore < bScore && p2 > aScore) {
- aScore = p2;
- aPoint = 0x02;
- aIsBiggerSide = 0;
- }
-
- /* Decide if (0,0,1,0) is closer. */
- p3 = 2 - inSum + zins;
- if (aScore >= bScore && p3 > bScore) {
- bScore = p3;
- bPoint = 0x04;
- bIsBiggerSide = 0;
- } else if (aScore < bScore && p3 > aScore) {
- aScore = p3;
- aPoint = 0x04;
- aIsBiggerSide = 0;
- }
-
- /* Decide if (0,0,0,1) is closer. */
- p4 = 2 - inSum + wins;
- if (aScore >= bScore && p4 > bScore) {
- bScore = p4;
- bPoint = 0x08;
- bIsBiggerSide = 0;
- } else if (aScore < bScore && p4 > aScore) {
- aScore = p4;
- aPoint = 0x08;
- aIsBiggerSide = 0;
- }
-
- /* Where each of the two closest points are determines how the extra three vertices are calculated. */
- if (aIsBiggerSide == bIsBiggerSide) {
- if (aIsBiggerSide) { /* Both closest points on the bigger side */
- c1 = (int8_t)(aPoint | bPoint);
- c2 = (int8_t)(aPoint & bPoint);
- if ((c1 & 0x01) == 0) {
- xsv_ext0 = xsb;
- xsv_ext1 = xsb - 1;
- dx_ext0 = dx0 - 3 * SQUISH_CONSTANT_4D;
- dx_ext1 = dx0 + 1 - 2 * SQUISH_CONSTANT_4D;
- } else {
- xsv_ext0 = xsv_ext1 = xsb + 1;
- dx_ext0 = dx0 - 1 - 3 * SQUISH_CONSTANT_4D;
- dx_ext1 = dx0 - 1 - 2 * SQUISH_CONSTANT_4D;
- }
-
- if ((c1 & 0x02) == 0) {
- ysv_ext0 = ysb;
- ysv_ext1 = ysb - 1;
- dy_ext0 = dy0 - 3 * SQUISH_CONSTANT_4D;
- dy_ext1 = dy0 + 1 - 2 * SQUISH_CONSTANT_4D;
- } else {
- ysv_ext0 = ysv_ext1 = ysb + 1;
- dy_ext0 = dy0 - 1 - 3 * SQUISH_CONSTANT_4D;
- dy_ext1 = dy0 - 1 - 2 * SQUISH_CONSTANT_4D;
- }
-
- if ((c1 & 0x04) == 0) {
- zsv_ext0 = zsb;
- zsv_ext1 = zsb - 1;
- dz_ext0 = dz0 - 3 * SQUISH_CONSTANT_4D;
- dz_ext1 = dz0 + 1 - 2 * SQUISH_CONSTANT_4D;
- } else {
- zsv_ext0 = zsv_ext1 = zsb + 1;
- dz_ext0 = dz0 - 1 - 3 * SQUISH_CONSTANT_4D;
- dz_ext1 = dz0 - 1 - 2 * SQUISH_CONSTANT_4D;
- }
-
- if ((c1 & 0x08) == 0) {
- wsv_ext0 = wsb;
- wsv_ext1 = wsb - 1;
- dw_ext0 = dw0 - 3 * SQUISH_CONSTANT_4D;
- dw_ext1 = dw0 + 1 - 2 * SQUISH_CONSTANT_4D;
- } else {
- wsv_ext0 = wsv_ext1 = wsb + 1;
- dw_ext0 = dw0 - 1 - 3 * SQUISH_CONSTANT_4D;
- dw_ext1 = dw0 - 1 - 2 * SQUISH_CONSTANT_4D;
- }
-
- /* One combination is a permutation of (0,0,0,2) based on c2 */
- xsv_ext2 = xsb;
- ysv_ext2 = ysb;
- zsv_ext2 = zsb;
- wsv_ext2 = wsb;
- dx_ext2 = dx0 - 2 * SQUISH_CONSTANT_4D;
- dy_ext2 = dy0 - 2 * SQUISH_CONSTANT_4D;
- dz_ext2 = dz0 - 2 * SQUISH_CONSTANT_4D;
- dw_ext2 = dw0 - 2 * SQUISH_CONSTANT_4D;
- if ((c2 & 0x01) != 0) {
- xsv_ext2 += 2;
- dx_ext2 -= 2;
- } else if ((c2 & 0x02) != 0) {
- ysv_ext2 += 2;
- dy_ext2 -= 2;
- } else if ((c2 & 0x04) != 0) {
- zsv_ext2 += 2;
- dz_ext2 -= 2;
- } else {
- wsv_ext2 += 2;
- dw_ext2 -= 2;
- }
-
- } else { /* Both closest points on the smaller side */
- /* One of the two extra points is (0,0,0,0) */
- xsv_ext2 = xsb;
- ysv_ext2 = ysb;
- zsv_ext2 = zsb;
- wsv_ext2 = wsb;
- dx_ext2 = dx0;
- dy_ext2 = dy0;
- dz_ext2 = dz0;
- dw_ext2 = dw0;
-
- /* Other two points are based on the omitted axes. */
- c = (int8_t)(aPoint | bPoint);
-
- if ((c & 0x01) == 0) {
- xsv_ext0 = xsb - 1;
- xsv_ext1 = xsb;
- dx_ext0 = dx0 + 1 - SQUISH_CONSTANT_4D;
- dx_ext1 = dx0 - SQUISH_CONSTANT_4D;
- } else {
- xsv_ext0 = xsv_ext1 = xsb + 1;
- dx_ext0 = dx_ext1 = dx0 - 1 - SQUISH_CONSTANT_4D;
- }
-
- if ((c & 0x02) == 0) {
- ysv_ext0 = ysv_ext1 = ysb;
- dy_ext0 = dy_ext1 = dy0 - SQUISH_CONSTANT_4D;
- if ((c & 0x01) == 0x01)
- {
- ysv_ext0 -= 1;
- dy_ext0 += 1;
- } else {
- ysv_ext1 -= 1;
- dy_ext1 += 1;
- }
- } else {
- ysv_ext0 = ysv_ext1 = ysb + 1;
- dy_ext0 = dy_ext1 = dy0 - 1 - SQUISH_CONSTANT_4D;
- }
-
- if ((c & 0x04) == 0) {
- zsv_ext0 = zsv_ext1 = zsb;
- dz_ext0 = dz_ext1 = dz0 - SQUISH_CONSTANT_4D;
- if ((c & 0x03) == 0x03)
- {
- zsv_ext0 -= 1;
- dz_ext0 += 1;
- } else {
- zsv_ext1 -= 1;
- dz_ext1 += 1;
- }
- } else {
- zsv_ext0 = zsv_ext1 = zsb + 1;
- dz_ext0 = dz_ext1 = dz0 - 1 - SQUISH_CONSTANT_4D;
- }
-
- if ((c & 0x08) == 0)
- {
- wsv_ext0 = wsb;
- wsv_ext1 = wsb - 1;
- dw_ext0 = dw0 - SQUISH_CONSTANT_4D;
- dw_ext1 = dw0 + 1 - SQUISH_CONSTANT_4D;
- } else {
- wsv_ext0 = wsv_ext1 = wsb + 1;
- dw_ext0 = dw_ext1 = dw0 - 1 - SQUISH_CONSTANT_4D;
- }
-
- }
- } else { /* One point on each "side" */
- if (aIsBiggerSide) {
- c1 = aPoint;
- c2 = bPoint;
- } else {
- c1 = bPoint;
- c2 = aPoint;
- }
-
- /* Two contributions are the bigger-sided point with each 0 replaced with -1. */
- if ((c1 & 0x01) == 0) {
- xsv_ext0 = xsb - 1;
- xsv_ext1 = xsb;
- dx_ext0 = dx0 + 1 - SQUISH_CONSTANT_4D;
- dx_ext1 = dx0 - SQUISH_CONSTANT_4D;
- } else {
- xsv_ext0 = xsv_ext1 = xsb + 1;
- dx_ext0 = dx_ext1 = dx0 - 1 - SQUISH_CONSTANT_4D;
- }
-
- if ((c1 & 0x02) == 0) {
- ysv_ext0 = ysv_ext1 = ysb;
- dy_ext0 = dy_ext1 = dy0 - SQUISH_CONSTANT_4D;
- if ((c1 & 0x01) == 0x01) {
- ysv_ext0 -= 1;
- dy_ext0 += 1;
- } else {
- ysv_ext1 -= 1;
- dy_ext1 += 1;
- }
- } else {
- ysv_ext0 = ysv_ext1 = ysb + 1;
- dy_ext0 = dy_ext1 = dy0 - 1 - SQUISH_CONSTANT_4D;
- }
-
- if ((c1 & 0x04) == 0) {
- zsv_ext0 = zsv_ext1 = zsb;
- dz_ext0 = dz_ext1 = dz0 - SQUISH_CONSTANT_4D;
- if ((c1 & 0x03) == 0x03) {
- zsv_ext0 -= 1;
- dz_ext0 += 1;
- } else {
- zsv_ext1 -= 1;
- dz_ext1 += 1;
- }
- } else {
- zsv_ext0 = zsv_ext1 = zsb + 1;
- dz_ext0 = dz_ext1 = dz0 - 1 - SQUISH_CONSTANT_4D;
- }
-
- if ((c1 & 0x08) == 0) {
- wsv_ext0 = wsb;
- wsv_ext1 = wsb - 1;
- dw_ext0 = dw0 - SQUISH_CONSTANT_4D;
- dw_ext1 = dw0 + 1 - SQUISH_CONSTANT_4D;
- } else {
- wsv_ext0 = wsv_ext1 = wsb + 1;
- dw_ext0 = dw_ext1 = dw0 - 1 - SQUISH_CONSTANT_4D;
- }
-
- /* One contribution is a permutation of (0,0,0,2) based on the smaller-sided point */
- xsv_ext2 = xsb;
- ysv_ext2 = ysb;
- zsv_ext2 = zsb;
- wsv_ext2 = wsb;
- dx_ext2 = dx0 - 2 * SQUISH_CONSTANT_4D;
- dy_ext2 = dy0 - 2 * SQUISH_CONSTANT_4D;
- dz_ext2 = dz0 - 2 * SQUISH_CONSTANT_4D;
- dw_ext2 = dw0 - 2 * SQUISH_CONSTANT_4D;
- if ((c2 & 0x01) != 0) {
- xsv_ext2 += 2;
- dx_ext2 -= 2;
- } else if ((c2 & 0x02) != 0) {
- ysv_ext2 += 2;
- dy_ext2 -= 2;
- } else if ((c2 & 0x04) != 0) {
- zsv_ext2 += 2;
- dz_ext2 -= 2;
- } else {
- wsv_ext2 += 2;
- dw_ext2 -= 2;
- }
- }
-
- /* Contribution (1,0,0,0) */
- dx1 = dx0 - 1 - SQUISH_CONSTANT_4D;
- dy1 = dy0 - 0 - SQUISH_CONSTANT_4D;
- dz1 = dz0 - 0 - SQUISH_CONSTANT_4D;
- dw1 = dw0 - 0 - SQUISH_CONSTANT_4D;
- attn1 = 2 - dx1 * dx1 - dy1 * dy1 - dz1 * dz1 - dw1 * dw1;
- if (attn1 > 0) {
- attn1 *= attn1;
- value += attn1 * attn1 * extrapolate4(ctx, xsb + 1, ysb + 0, zsb + 0, wsb + 0, dx1, dy1, dz1, dw1);
- }
-
- /* Contribution (0,1,0,0) */
- dx2 = dx0 - 0 - SQUISH_CONSTANT_4D;
- dy2 = dy0 - 1 - SQUISH_CONSTANT_4D;
- dz2 = dz1;
- dw2 = dw1;
- attn2 = 2 - dx2 * dx2 - dy2 * dy2 - dz2 * dz2 - dw2 * dw2;
- if (attn2 > 0) {
- attn2 *= attn2;
- value += attn2 * attn2 * extrapolate4(ctx, xsb + 0, ysb + 1, zsb + 0, wsb + 0, dx2, dy2, dz2, dw2);
- }
-
- /* Contribution (0,0,1,0) */
- dx3 = dx2;
- dy3 = dy1;
- dz3 = dz0 - 1 - SQUISH_CONSTANT_4D;
- dw3 = dw1;
- attn3 = 2 - dx3 * dx3 - dy3 * dy3 - dz3 * dz3 - dw3 * dw3;
- if (attn3 > 0) {
- attn3 *= attn3;
- value += attn3 * attn3 * extrapolate4(ctx, xsb + 0, ysb + 0, zsb + 1, wsb + 0, dx3, dy3, dz3, dw3);
- }
-
- /* Contribution (0,0,0,1) */
- dx4 = dx2;
- dy4 = dy1;
- dz4 = dz1;
- dw4 = dw0 - 1 - SQUISH_CONSTANT_4D;
- attn4 = 2 - dx4 * dx4 - dy4 * dy4 - dz4 * dz4 - dw4 * dw4;
- if (attn4 > 0) {
- attn4 *= attn4;
- value += attn4 * attn4 * extrapolate4(ctx, xsb + 0, ysb + 0, zsb + 0, wsb + 1, dx4, dy4, dz4, dw4);
- }
-
- /* Contribution (1,1,0,0) */
- dx5 = dx0 - 1 - 2 * SQUISH_CONSTANT_4D;
- dy5 = dy0 - 1 - 2 * SQUISH_CONSTANT_4D;
- dz5 = dz0 - 0 - 2 * SQUISH_CONSTANT_4D;
- dw5 = dw0 - 0 - 2 * SQUISH_CONSTANT_4D;
- attn5 = 2 - dx5 * dx5 - dy5 * dy5 - dz5 * dz5 - dw5 * dw5;
- if (attn5 > 0) {
- attn5 *= attn5;
- value += attn5 * attn5 * extrapolate4(ctx, xsb + 1, ysb + 1, zsb + 0, wsb + 0, dx5, dy5, dz5, dw5);
- }
-
- /* Contribution (1,0,1,0) */
- dx6 = dx0 - 1 - 2 * SQUISH_CONSTANT_4D;
- dy6 = dy0 - 0 - 2 * SQUISH_CONSTANT_4D;
- dz6 = dz0 - 1 - 2 * SQUISH_CONSTANT_4D;
- dw6 = dw0 - 0 - 2 * SQUISH_CONSTANT_4D;
- attn6 = 2 - dx6 * dx6 - dy6 * dy6 - dz6 * dz6 - dw6 * dw6;
- if (attn6 > 0) {
- attn6 *= attn6;
- value += attn6 * attn6 * extrapolate4(ctx, xsb + 1, ysb + 0, zsb + 1, wsb + 0, dx6, dy6, dz6, dw6);
- }
-
- /* Contribution (1,0,0,1) */
- dx7 = dx0 - 1 - 2 * SQUISH_CONSTANT_4D;
- dy7 = dy0 - 0 - 2 * SQUISH_CONSTANT_4D;
- dz7 = dz0 - 0 - 2 * SQUISH_CONSTANT_4D;
- dw7 = dw0 - 1 - 2 * SQUISH_CONSTANT_4D;
- attn7 = 2 - dx7 * dx7 - dy7 * dy7 - dz7 * dz7 - dw7 * dw7;
- if (attn7 > 0) {
- attn7 *= attn7;
- value += attn7 * attn7 * extrapolate4(ctx, xsb + 1, ysb + 0, zsb + 0, wsb + 1, dx7, dy7, dz7, dw7);
- }
-
- /* Contribution (0,1,1,0) */
- dx8 = dx0 - 0 - 2 * SQUISH_CONSTANT_4D;
- dy8 = dy0 - 1 - 2 * SQUISH_CONSTANT_4D;
- dz8 = dz0 - 1 - 2 * SQUISH_CONSTANT_4D;
- dw8 = dw0 - 0 - 2 * SQUISH_CONSTANT_4D;
- attn8 = 2 - dx8 * dx8 - dy8 * dy8 - dz8 * dz8 - dw8 * dw8;
- if (attn8 > 0) {
- attn8 *= attn8;
- value += attn8 * attn8 * extrapolate4(ctx, xsb + 0, ysb + 1, zsb + 1, wsb + 0, dx8, dy8, dz8, dw8);
- }
-
- /* Contribution (0,1,0,1) */
- dx9 = dx0 - 0 - 2 * SQUISH_CONSTANT_4D;
- dy9 = dy0 - 1 - 2 * SQUISH_CONSTANT_4D;
- dz9 = dz0 - 0 - 2 * SQUISH_CONSTANT_4D;
- dw9 = dw0 - 1 - 2 * SQUISH_CONSTANT_4D;
- attn9 = 2 - dx9 * dx9 - dy9 * dy9 - dz9 * dz9 - dw9 * dw9;
- if (attn9 > 0) {
- attn9 *= attn9;
- value += attn9 * attn9 * extrapolate4(ctx, xsb + 0, ysb + 1, zsb + 0, wsb + 1, dx9, dy9, dz9, dw9);
- }
-
- /* Contribution (0,0,1,1) */
- dx10 = dx0 - 0 - 2 * SQUISH_CONSTANT_4D;
- dy10 = dy0 - 0 - 2 * SQUISH_CONSTANT_4D;
- dz10 = dz0 - 1 - 2 * SQUISH_CONSTANT_4D;
- dw10 = dw0 - 1 - 2 * SQUISH_CONSTANT_4D;
- attn10 = 2 - dx10 * dx10 - dy10 * dy10 - dz10 * dz10 - dw10 * dw10;
- if (attn10 > 0) {
- attn10 *= attn10;
- value += attn10 * attn10 * extrapolate4(ctx, xsb + 0, ysb + 0, zsb + 1, wsb + 1, dx10, dy10, dz10, dw10);
- }
- } else { /* We're inside the second dispentachoron (Rectified 4-Simplex) */
- aIsBiggerSide = 1;
- bIsBiggerSide = 1;
-
- /* Decide between (0,0,1,1) and (1,1,0,0) */
- if (xins + yins < zins + wins) {
- aScore = xins + yins;
- aPoint = 0x0C;
- } else {
- aScore = zins + wins;
- aPoint = 0x03;
- }
-
- /* Decide between (0,1,0,1) and (1,0,1,0) */
- if (xins + zins < yins + wins) {
- bScore = xins + zins;
- bPoint = 0x0A;
- } else {
- bScore = yins + wins;
- bPoint = 0x05;
- }
-
- /* Closer between (0,1,1,0) and (1,0,0,1) will replace the further of a and b, if closer. */
- if (xins + wins < yins + zins) {
- score = xins + wins;
- if (aScore <= bScore && score < bScore) {
- bScore = score;
- bPoint = 0x06;
- } else if (aScore > bScore && score < aScore) {
- aScore = score;
- aPoint = 0x06;
- }
- } else {
- score = yins + zins;
- if (aScore <= bScore && score < bScore) {
- bScore = score;
- bPoint = 0x09;
- } else if (aScore > bScore && score < aScore) {
- aScore = score;
- aPoint = 0x09;
- }
- }
-
- /* Decide if (0,1,1,1) is closer. */
- p1 = 3 - inSum + xins;
- if (aScore <= bScore && p1 < bScore) {
- bScore = p1;
- bPoint = 0x0E;
- bIsBiggerSide = 0;
- } else if (aScore > bScore && p1 < aScore) {
- aScore = p1;
- aPoint = 0x0E;
- aIsBiggerSide = 0;
- }
-
- /* Decide if (1,0,1,1) is closer. */
- p2 = 3 - inSum + yins;
- if (aScore <= bScore && p2 < bScore) {
- bScore = p2;
- bPoint = 0x0D;
- bIsBiggerSide = 0;
- } else if (aScore > bScore && p2 < aScore) {
- aScore = p2;
- aPoint = 0x0D;
- aIsBiggerSide = 0;
- }
-
- /* Decide if (1,1,0,1) is closer. */
- p3 = 3 - inSum + zins;
- if (aScore <= bScore && p3 < bScore) {
- bScore = p3;
- bPoint = 0x0B;
- bIsBiggerSide = 0;
- } else if (aScore > bScore && p3 < aScore) {
- aScore = p3;
- aPoint = 0x0B;
- aIsBiggerSide = 0;
- }
-
- /* Decide if (1,1,1,0) is closer. */
- p4 = 3 - inSum + wins;
- if (aScore <= bScore && p4 < bScore) {
- bScore = p4;
- bPoint = 0x07;
- bIsBiggerSide = 0;
- } else if (aScore > bScore && p4 < aScore) {
- aScore = p4;
- aPoint = 0x07;
- aIsBiggerSide = 0;
- }
-
- /* Where each of the two closest points are determines how the extra three vertices are calculated. */
- if (aIsBiggerSide == bIsBiggerSide) {
- if (aIsBiggerSide) { /* Both closest points on the bigger side */
- c1 = (int8_t)(aPoint & bPoint);
- c2 = (int8_t)(aPoint | bPoint);
-
- /* Two contributions are permutations of (0,0,0,1) and (0,0,0,2) based on c1 */
- xsv_ext0 = xsv_ext1 = xsb;
- ysv_ext0 = ysv_ext1 = ysb;
- zsv_ext0 = zsv_ext1 = zsb;
- wsv_ext0 = wsv_ext1 = wsb;
- dx_ext0 = dx0 - SQUISH_CONSTANT_4D;
- dy_ext0 = dy0 - SQUISH_CONSTANT_4D;
- dz_ext0 = dz0 - SQUISH_CONSTANT_4D;
- dw_ext0 = dw0 - SQUISH_CONSTANT_4D;
- dx_ext1 = dx0 - 2 * SQUISH_CONSTANT_4D;
- dy_ext1 = dy0 - 2 * SQUISH_CONSTANT_4D;
- dz_ext1 = dz0 - 2 * SQUISH_CONSTANT_4D;
- dw_ext1 = dw0 - 2 * SQUISH_CONSTANT_4D;
- if ((c1 & 0x01) != 0) {
- xsv_ext0 += 1;
- dx_ext0 -= 1;
- xsv_ext1 += 2;
- dx_ext1 -= 2;
- } else if ((c1 & 0x02) != 0) {
- ysv_ext0 += 1;
- dy_ext0 -= 1;
- ysv_ext1 += 2;
- dy_ext1 -= 2;
- } else if ((c1 & 0x04) != 0) {
- zsv_ext0 += 1;
- dz_ext0 -= 1;
- zsv_ext1 += 2;
- dz_ext1 -= 2;
- } else {
- wsv_ext0 += 1;
- dw_ext0 -= 1;
- wsv_ext1 += 2;
- dw_ext1 -= 2;
- }
-
- /* One contribution is a permutation of (1,1,1,-1) based on c2 */
- xsv_ext2 = xsb + 1;
- ysv_ext2 = ysb + 1;
- zsv_ext2 = zsb + 1;
- wsv_ext2 = wsb + 1;
- dx_ext2 = dx0 - 1 - 2 * SQUISH_CONSTANT_4D;
- dy_ext2 = dy0 - 1 - 2 * SQUISH_CONSTANT_4D;
- dz_ext2 = dz0 - 1 - 2 * SQUISH_CONSTANT_4D;
- dw_ext2 = dw0 - 1 - 2 * SQUISH_CONSTANT_4D;
- if ((c2 & 0x01) == 0) {
- xsv_ext2 -= 2;
- dx_ext2 += 2;
- } else if ((c2 & 0x02) == 0) {
- ysv_ext2 -= 2;
- dy_ext2 += 2;
- } else if ((c2 & 0x04) == 0) {
- zsv_ext2 -= 2;
- dz_ext2 += 2;
- } else {
- wsv_ext2 -= 2;
- dw_ext2 += 2;
- }
- } else { /* Both closest points on the smaller side */
- /* One of the two extra points is (1,1,1,1) */
- xsv_ext2 = xsb + 1;
- ysv_ext2 = ysb + 1;
- zsv_ext2 = zsb + 1;
- wsv_ext2 = wsb + 1;
- dx_ext2 = dx0 - 1 - 4 * SQUISH_CONSTANT_4D;
- dy_ext2 = dy0 - 1 - 4 * SQUISH_CONSTANT_4D;
- dz_ext2 = dz0 - 1 - 4 * SQUISH_CONSTANT_4D;
- dw_ext2 = dw0 - 1 - 4 * SQUISH_CONSTANT_4D;
-
- /* Other two points are based on the shared axes. */
- c = (int8_t)(aPoint & bPoint);
-
- if ((c & 0x01) != 0) {
- xsv_ext0 = xsb + 2;
- xsv_ext1 = xsb + 1;
- dx_ext0 = dx0 - 2 - 3 * SQUISH_CONSTANT_4D;
- dx_ext1 = dx0 - 1 - 3 * SQUISH_CONSTANT_4D;
- } else {
- xsv_ext0 = xsv_ext1 = xsb;
- dx_ext0 = dx_ext1 = dx0 - 3 * SQUISH_CONSTANT_4D;
- }
-
- if ((c & 0x02) != 0) {
- ysv_ext0 = ysv_ext1 = ysb + 1;
- dy_ext0 = dy_ext1 = dy0 - 1 - 3 * SQUISH_CONSTANT_4D;
- if ((c & 0x01) == 0)
- {
- ysv_ext0 += 1;
- dy_ext0 -= 1;
- } else {
- ysv_ext1 += 1;
- dy_ext1 -= 1;
- }
- } else {
- ysv_ext0 = ysv_ext1 = ysb;
- dy_ext0 = dy_ext1 = dy0 - 3 * SQUISH_CONSTANT_4D;
- }
-
- if ((c & 0x04) != 0) {
- zsv_ext0 = zsv_ext1 = zsb + 1;
- dz_ext0 = dz_ext1 = dz0 - 1 - 3 * SQUISH_CONSTANT_4D;
- if ((c & 0x03) == 0)
- {
- zsv_ext0 += 1;
- dz_ext0 -= 1;
- } else {
- zsv_ext1 += 1;
- dz_ext1 -= 1;
- }
- } else {
- zsv_ext0 = zsv_ext1 = zsb;
- dz_ext0 = dz_ext1 = dz0 - 3 * SQUISH_CONSTANT_4D;
- }
-
- if ((c & 0x08) != 0)
- {
- wsv_ext0 = wsb + 1;
- wsv_ext1 = wsb + 2;
- dw_ext0 = dw0 - 1 - 3 * SQUISH_CONSTANT_4D;
- dw_ext1 = dw0 - 2 - 3 * SQUISH_CONSTANT_4D;
- } else {
- wsv_ext0 = wsv_ext1 = wsb;
- dw_ext0 = dw_ext1 = dw0 - 3 * SQUISH_CONSTANT_4D;
- }
- }
- } else { /* One point on each "side" */
- if (aIsBiggerSide) {
- c1 = aPoint;
- c2 = bPoint;
- } else {
- c1 = bPoint;
- c2 = aPoint;
- }
-
- /* Two contributions are the bigger-sided point with each 1 replaced with 2. */
- if ((c1 & 0x01) != 0) {
- xsv_ext0 = xsb + 2;
- xsv_ext1 = xsb + 1;
- dx_ext0 = dx0 - 2 - 3 * SQUISH_CONSTANT_4D;
- dx_ext1 = dx0 - 1 - 3 * SQUISH_CONSTANT_4D;
- } else {
- xsv_ext0 = xsv_ext1 = xsb;
- dx_ext0 = dx_ext1 = dx0 - 3 * SQUISH_CONSTANT_4D;
- }
-
- if ((c1 & 0x02) != 0) {
- ysv_ext0 = ysv_ext1 = ysb + 1;
- dy_ext0 = dy_ext1 = dy0 - 1 - 3 * SQUISH_CONSTANT_4D;
- if ((c1 & 0x01) == 0) {
- ysv_ext0 += 1;
- dy_ext0 -= 1;
- } else {
- ysv_ext1 += 1;
- dy_ext1 -= 1;
- }
- } else {
- ysv_ext0 = ysv_ext1 = ysb;
- dy_ext0 = dy_ext1 = dy0 - 3 * SQUISH_CONSTANT_4D;
- }
-
- if ((c1 & 0x04) != 0) {
- zsv_ext0 = zsv_ext1 = zsb + 1;
- dz_ext0 = dz_ext1 = dz0 - 1 - 3 * SQUISH_CONSTANT_4D;
- if ((c1 & 0x03) == 0) {
- zsv_ext0 += 1;
- dz_ext0 -= 1;
- } else {
- zsv_ext1 += 1;
- dz_ext1 -= 1;
- }
- } else {
- zsv_ext0 = zsv_ext1 = zsb;
- dz_ext0 = dz_ext1 = dz0 - 3 * SQUISH_CONSTANT_4D;
- }
-
- if ((c1 & 0x08) != 0) {
- wsv_ext0 = wsb + 1;
- wsv_ext1 = wsb + 2;
- dw_ext0 = dw0 - 1 - 3 * SQUISH_CONSTANT_4D;
- dw_ext1 = dw0 - 2 - 3 * SQUISH_CONSTANT_4D;
- } else {
- wsv_ext0 = wsv_ext1 = wsb;
- dw_ext0 = dw_ext1 = dw0 - 3 * SQUISH_CONSTANT_4D;
- }
-
- /* One contribution is a permutation of (1,1,1,-1) based on the smaller-sided point */
- xsv_ext2 = xsb + 1;
- ysv_ext2 = ysb + 1;
- zsv_ext2 = zsb + 1;
- wsv_ext2 = wsb + 1;
- dx_ext2 = dx0 - 1 - 2 * SQUISH_CONSTANT_4D;
- dy_ext2 = dy0 - 1 - 2 * SQUISH_CONSTANT_4D;
- dz_ext2 = dz0 - 1 - 2 * SQUISH_CONSTANT_4D;
- dw_ext2 = dw0 - 1 - 2 * SQUISH_CONSTANT_4D;
- if ((c2 & 0x01) == 0) {
- xsv_ext2 -= 2;
- dx_ext2 += 2;
- } else if ((c2 & 0x02) == 0) {
- ysv_ext2 -= 2;
- dy_ext2 += 2;
- } else if ((c2 & 0x04) == 0) {
- zsv_ext2 -= 2;
- dz_ext2 += 2;
- } else {
- wsv_ext2 -= 2;
- dw_ext2 += 2;
- }
- }
-
- /* Contribution (1,1,1,0) */
- dx4 = dx0 - 1 - 3 * SQUISH_CONSTANT_4D;
- dy4 = dy0 - 1 - 3 * SQUISH_CONSTANT_4D;
- dz4 = dz0 - 1 - 3 * SQUISH_CONSTANT_4D;
- dw4 = dw0 - 3 * SQUISH_CONSTANT_4D;
- attn4 = 2 - dx4 * dx4 - dy4 * dy4 - dz4 * dz4 - dw4 * dw4;
- if (attn4 > 0) {
- attn4 *= attn4;
- value += attn4 * attn4 * extrapolate4(ctx, xsb + 1, ysb + 1, zsb + 1, wsb + 0, dx4, dy4, dz4, dw4);
- }
-
- /* Contribution (1,1,0,1) */
- dx3 = dx4;
- dy3 = dy4;
- dz3 = dz0 - 3 * SQUISH_CONSTANT_4D;
- dw3 = dw0 - 1 - 3 * SQUISH_CONSTANT_4D;
- attn3 = 2 - dx3 * dx3 - dy3 * dy3 - dz3 * dz3 - dw3 * dw3;
- if (attn3 > 0) {
- attn3 *= attn3;
- value += attn3 * attn3 * extrapolate4(ctx, xsb + 1, ysb + 1, zsb + 0, wsb + 1, dx3, dy3, dz3, dw3);
- }
-
- /* Contribution (1,0,1,1) */
- dx2 = dx4;
- dy2 = dy0 - 3 * SQUISH_CONSTANT_4D;
- dz2 = dz4;
- dw2 = dw3;
- attn2 = 2 - dx2 * dx2 - dy2 * dy2 - dz2 * dz2 - dw2 * dw2;
- if (attn2 > 0) {
- attn2 *= attn2;
- value += attn2 * attn2 * extrapolate4(ctx, xsb + 1, ysb + 0, zsb + 1, wsb + 1, dx2, dy2, dz2, dw2);
- }
-
- /* Contribution (0,1,1,1) */
- dx1 = dx0 - 3 * SQUISH_CONSTANT_4D;
- dz1 = dz4;
- dy1 = dy4;
- dw1 = dw3;
- attn1 = 2 - dx1 * dx1 - dy1 * dy1 - dz1 * dz1 - dw1 * dw1;
- if (attn1 > 0) {
- attn1 *= attn1;
- value += attn1 * attn1 * extrapolate4(ctx, xsb + 0, ysb + 1, zsb + 1, wsb + 1, dx1, dy1, dz1, dw1);
- }
-
- /* Contribution (1,1,0,0) */
- dx5 = dx0 - 1 - 2 * SQUISH_CONSTANT_4D;
- dy5 = dy0 - 1 - 2 * SQUISH_CONSTANT_4D;
- dz5 = dz0 - 0 - 2 * SQUISH_CONSTANT_4D;
- dw5 = dw0 - 0 - 2 * SQUISH_CONSTANT_4D;
- attn5 = 2 - dx5 * dx5 - dy5 * dy5 - dz5 * dz5 - dw5 * dw5;
- if (attn5 > 0) {
- attn5 *= attn5;
- value += attn5 * attn5 * extrapolate4(ctx, xsb + 1, ysb + 1, zsb + 0, wsb + 0, dx5, dy5, dz5, dw5);
- }
-
- /* Contribution (1,0,1,0) */
- dx6 = dx0 - 1 - 2 * SQUISH_CONSTANT_4D;
- dy6 = dy0 - 0 - 2 * SQUISH_CONSTANT_4D;
- dz6 = dz0 - 1 - 2 * SQUISH_CONSTANT_4D;
- dw6 = dw0 - 0 - 2 * SQUISH_CONSTANT_4D;
- attn6 = 2 - dx6 * dx6 - dy6 * dy6 - dz6 * dz6 - dw6 * dw6;
- if (attn6 > 0) {
- attn6 *= attn6;
- value += attn6 * attn6 * extrapolate4(ctx, xsb + 1, ysb + 0, zsb + 1, wsb + 0, dx6, dy6, dz6, dw6);
- }
-
- /* Contribution (1,0,0,1) */
- dx7 = dx0 - 1 - 2 * SQUISH_CONSTANT_4D;
- dy7 = dy0 - 0 - 2 * SQUISH_CONSTANT_4D;
- dz7 = dz0 - 0 - 2 * SQUISH_CONSTANT_4D;
- dw7 = dw0 - 1 - 2 * SQUISH_CONSTANT_4D;
- attn7 = 2 - dx7 * dx7 - dy7 * dy7 - dz7 * dz7 - dw7 * dw7;
- if (attn7 > 0) {
- attn7 *= attn7;
- value += attn7 * attn7 * extrapolate4(ctx, xsb + 1, ysb + 0, zsb + 0, wsb + 1, dx7, dy7, dz7, dw7);
- }
-
- /* Contribution (0,1,1,0) */
- dx8 = dx0 - 0 - 2 * SQUISH_CONSTANT_4D;
- dy8 = dy0 - 1 - 2 * SQUISH_CONSTANT_4D;
- dz8 = dz0 - 1 - 2 * SQUISH_CONSTANT_4D;
- dw8 = dw0 - 0 - 2 * SQUISH_CONSTANT_4D;
- attn8 = 2 - dx8 * dx8 - dy8 * dy8 - dz8 * dz8 - dw8 * dw8;
- if (attn8 > 0) {
- attn8 *= attn8;
- value += attn8 * attn8 * extrapolate4(ctx, xsb + 0, ysb + 1, zsb + 1, wsb + 0, dx8, dy8, dz8, dw8);
- }
-
- /* Contribution (0,1,0,1) */
- dx9 = dx0 - 0 - 2 * SQUISH_CONSTANT_4D;
- dy9 = dy0 - 1 - 2 * SQUISH_CONSTANT_4D;
- dz9 = dz0 - 0 - 2 * SQUISH_CONSTANT_4D;
- dw9 = dw0 - 1 - 2 * SQUISH_CONSTANT_4D;
- attn9 = 2 - dx9 * dx9 - dy9 * dy9 - dz9 * dz9 - dw9 * dw9;
- if (attn9 > 0) {
- attn9 *= attn9;
- value += attn9 * attn9 * extrapolate4(ctx, xsb + 0, ysb + 1, zsb + 0, wsb + 1, dx9, dy9, dz9, dw9);
- }
-
- /* Contribution (0,0,1,1) */
- dx10 = dx0 - 0 - 2 * SQUISH_CONSTANT_4D;
- dy10 = dy0 - 0 - 2 * SQUISH_CONSTANT_4D;
- dz10 = dz0 - 1 - 2 * SQUISH_CONSTANT_4D;
- dw10 = dw0 - 1 - 2 * SQUISH_CONSTANT_4D;
- attn10 = 2 - dx10 * dx10 - dy10 * dy10 - dz10 * dz10 - dw10 * dw10;
- if (attn10 > 0) {
- attn10 *= attn10;
- value += attn10 * attn10 * extrapolate4(ctx, xsb + 0, ysb + 0, zsb + 1, wsb + 1, dx10, dy10, dz10, dw10);
- }
- }
-
- /* First extra vertex */
- attn_ext0 = 2 - dx_ext0 * dx_ext0 - dy_ext0 * dy_ext0 - dz_ext0 * dz_ext0 - dw_ext0 * dw_ext0;
- if (attn_ext0 > 0)
- {
- attn_ext0 *= attn_ext0;
- value += attn_ext0 * attn_ext0 * extrapolate4(ctx, xsv_ext0, ysv_ext0, zsv_ext0, wsv_ext0, dx_ext0, dy_ext0, dz_ext0, dw_ext0);
- }
-
- /* Second extra vertex */
- attn_ext1 = 2 - dx_ext1 * dx_ext1 - dy_ext1 * dy_ext1 - dz_ext1 * dz_ext1 - dw_ext1 * dw_ext1;
- if (attn_ext1 > 0)
- {
- attn_ext1 *= attn_ext1;
- value += attn_ext1 * attn_ext1 * extrapolate4(ctx, xsv_ext1, ysv_ext1, zsv_ext1, wsv_ext1, dx_ext1, dy_ext1, dz_ext1, dw_ext1);
- }
-
- /* Third extra vertex */
- attn_ext2 = 2 - dx_ext2 * dx_ext2 - dy_ext2 * dy_ext2 - dz_ext2 * dz_ext2 - dw_ext2 * dw_ext2;
- if (attn_ext2 > 0)
- {
- attn_ext2 *= attn_ext2;
- value += attn_ext2 * attn_ext2 * extrapolate4(ctx, xsv_ext2, ysv_ext2, zsv_ext2, wsv_ext2, dx_ext2, dy_ext2, dz_ext2, dw_ext2);
- }
-
- return value / NORM_CONSTANT_4D;
-}
-
diff --git a/thirdparty/misc/open-simplex-noise.h b/thirdparty/misc/open-simplex-noise.h
deleted file mode 100644
index fd9248c3a1..0000000000
--- a/thirdparty/misc/open-simplex-noise.h
+++ /dev/null
@@ -1,58 +0,0 @@
-#ifndef OPEN_SIMPLEX_NOISE_H__
-#define OPEN_SIMPLEX_NOISE_H__
-
-/*
- * OpenSimplex (Simplectic) Noise in C.
- * Ported to C from Kurt Spencer's java implementation by Stephen M. Cameron
- *
- * v1.1 (October 6, 2014)
- * - Ported to C
- *
- * v1.1 (October 5, 2014)
- * - Added 2D and 4D implementations.
- * - Proper gradient sets for all dimensions, from a
- * dimensionally-generalizable scheme with an actual
- * rhyme and reason behind it.
- * - Removed default permutation array in favor of
- * default seed.
- * - Changed seed-based constructor to be independent
- * of any particular randomization library, so results
- * will be the same when ported to other languages.
- */
-
-#if ((__GNUC_STDC_INLINE__) || (__STDC_VERSION__ >= 199901L))
- #include <stdint.h>
- #define INLINE inline
-#elif (defined (_MSC_VER) || defined (__GNUC_GNU_INLINE__))
- #include <stdint.h>
- #define INLINE __inline
-#else
- /* ANSI C doesn't have inline or stdint.h. */
- #define INLINE
-#endif
-
-#ifdef __cplusplus
- extern "C" {
-#endif
-
-// -- GODOT start --
-// Modified to work without allocating memory, also removed some unused function.
-
-struct osn_context {
- int16_t perm[256];
- int16_t permGradIndex3D[256];
-};
-
-int open_simplex_noise(int64_t seed, struct osn_context *ctx);
-//int open_simplex_noise_init_perm(struct osn_context *ctx, int16_t p[], int nelements);
-// -- GODOT end --
-void open_simplex_noise_free(struct osn_context *ctx);
-double open_simplex_noise2(const struct osn_context *ctx, double x, double y);
-double open_simplex_noise3(const struct osn_context *ctx, double x, double y, double z);
-double open_simplex_noise4(const struct osn_context *ctx, double x, double y, double z, double w);
-
-#ifdef __cplusplus
- }
-#endif
-
-#endif
diff --git a/thirdparty/noise/FastNoise-LICENSE b/thirdparty/noise/FastNoise-LICENSE
new file mode 100644
index 0000000000..dd6df2c160
--- /dev/null
+++ b/thirdparty/noise/FastNoise-LICENSE
@@ -0,0 +1,22 @@
+MIT License
+
+Copyright(c) 2020 Jordan Peck (jordan.me2@gmail.com)
+Copyright(c) 2020 Contributors
+
+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. \ No newline at end of file
diff --git a/thirdparty/noise/FastNoiseLite.h b/thirdparty/noise/FastNoiseLite.h
new file mode 100644
index 0000000000..3db344c149
--- /dev/null
+++ b/thirdparty/noise/FastNoiseLite.h
@@ -0,0 +1,2589 @@
+// MIT License
+//
+// Copyright(c) 2020 Jordan Peck (jordan.me2@gmail.com)
+// Copyright(c) 2020 Contributors
+//
+// 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.
+//
+// .'',;:cldxkO00KKXXNNWWWNNXKOkxdollcc::::::;:::ccllloooolllllllllooollc:,'... ...........',;cldxkO000Okxdlc::;;;,,;;;::cclllllll
+// ..',;:ldxO0KXXNNNNNNNNXXK0kxdolcc::::::;;;,,,,,,;;;;;;;;;;:::cclllllc:;'.... ...........',;:ldxO0KXXXK0Okxdolc::;;;;::cllodddddo
+// ...',:loxO0KXNNNNNXXKK0Okxdolc::;::::::::;;;,,'''''.....''',;:clllllc:;,'............''''''''',;:loxO0KXNNNNNXK0Okxdollccccllodxxxxxxd
+// ....';:ldkO0KXXXKK00Okxdolcc:;;;;;::cclllcc:;;,''..... ....',;clooddolcc:;;;;,,;;;;;::::;;;;;;:cloxk0KXNWWWWWWNXKK0Okxddoooddxxkkkkkxx
+// .....';:ldxkOOOOOkxxdolcc:;;;,,,;;:cllooooolcc:;'... ..,:codxkkkxddooollloooooooollcc:::::clodkO0KXNWWWWWWNNXK00Okxxxxxxxxkkkkxxx
+// . ....';:cloddddo___________,,,,;;:clooddddoolc:,... ..,:ldx__00OOOkkk___kkkkkkxxdollc::::cclodkO0KXXNNNNNNXXK0OOkxxxxxxxxxxxxddd
+// .......',;:cccc:| |,,,;;:cclooddddoll:;'.. ..';cox| \KKK000| |KK00OOkxdocc___;::clldxxkO0KKKKK00Okkxdddddddddddddddoo
+// .......'',,,,,''| ________|',,;;::cclloooooolc:;'......___:ldk| \KK000| |XKKK0Okxolc| |;;::cclodxxkkkkxxdoolllcclllooodddooooo
+// ''......''''....| | ....'',,,,;;;::cclloooollc:;,''.'| |oxk| \OOO0| |KKK00Oxdoll|___|;;;;;::ccllllllcc::;;,,;;;:cclloooooooo
+// ;;,''.......... | |_____',,;;;____:___cllo________.___| |___| \xkk| |KK_______ool___:::;________;;;_______...'',;;:ccclllloo
+// c:;,''......... | |:::/ ' |lo/ | | \dx| |0/ \d| |cc/ |'/ \......',,;;:ccllo
+// ol:;,'..........| _____|ll/ __ |o/ ______|____ ___| | \o| |/ ___ \| |o/ ______|/ ___ \ .......'',;:clo
+// dlc;,...........| |::clooo| / | |x\___ \KXKKK0| |dol| |\ \| | | | | |d\___ \..| | / / ....',:cl
+// xoc;'... .....'| |llodddd| \__| |_____\ \KKK0O| |lc:| |'\ | |___| | |_____\ \.| |_/___/... ...',;:c
+// dlc;'... ....',;| |oddddddo\ | |Okkx| |::;| |..\ |\ /| | | \ |... ....',;:c
+// ol:,'.......',:c|___|xxxddollc\_____,___|_________/ddoll|___|,,,|___|...\_____|:\ ______/l|___|_________/...\________|'........',;::cc
+// c:;'.......';:codxxkkkkxxolc::;::clodxkOO0OOkkxdollc::;;,,''''',,,,''''''''''',,'''''',;:loxkkOOkxol:;,'''',,;:ccllcc:;,'''''',;::ccll
+// ;,'.......',:codxkOO0OOkxdlc:;,,;;:cldxxkkxxdolc:;;,,''.....'',;;:::;;,,,'''''........,;cldkO0KK0Okdoc::;;::cloodddoolc:;;;;;::ccllooo
+// .........',;:lodxOO0000Okdoc:,,',,;:clloddoolc:;,''.......'',;:clooollc:;;,,''.......',:ldkOKXNNXX0Oxdolllloddxxxxxxdolccccccllooodddd
+// . .....';:cldxkO0000Okxol:;,''',,;::cccc:;,,'.......'',;:cldxxkkxxdolc:;;,'.......';coxOKXNWWWNXKOkxddddxxkkkkkkxdoollllooddxxxxkkk
+// ....',;:codxkO000OOxdoc:;,''',,,;;;;,''.......',,;:clodkO00000Okxolc::;,,''..',;:ldxOKXNWWWNNK0OkkkkkkkkkkkxxddooooodxxkOOOOO000
+// ....',;;clodxkkOOOkkdolc:;,,,,,,,,'..........,;:clodxkO0KKXKK0Okxdolcc::;;,,,;;:codkO0XXNNNNXKK0OOOOOkkkkxxdoollloodxkO0KKKXXXXX
+//
+// VERSION: 1.0.1
+// https://github.com/Auburn/FastNoise
+
+#ifndef FASTNOISELITE_H
+#define FASTNOISELITE_H
+
+#include <cmath>
+
+namespace fastnoiselite{
+
+class FastNoiseLite
+{
+public:
+ enum NoiseType
+ {
+ NoiseType_OpenSimplex2,
+ NoiseType_OpenSimplex2S,
+ NoiseType_Cellular,
+ NoiseType_Perlin,
+ NoiseType_ValueCubic,
+ NoiseType_Value
+ };
+
+ enum RotationType3D
+ {
+ RotationType3D_None,
+ RotationType3D_ImproveXYPlanes,
+ RotationType3D_ImproveXZPlanes
+ };
+
+ enum FractalType
+ {
+ FractalType_None,
+ FractalType_FBm,
+ FractalType_Ridged,
+ FractalType_PingPong,
+ FractalType_DomainWarpProgressive,
+ FractalType_DomainWarpIndependent
+ };
+
+ enum CellularDistanceFunction
+ {
+ CellularDistanceFunction_Euclidean,
+ CellularDistanceFunction_EuclideanSq,
+ CellularDistanceFunction_Manhattan,
+ CellularDistanceFunction_Hybrid
+ };
+
+ enum CellularReturnType
+ {
+ CellularReturnType_CellValue,
+ CellularReturnType_Distance,
+ CellularReturnType_Distance2,
+ CellularReturnType_Distance2Add,
+ CellularReturnType_Distance2Sub,
+ CellularReturnType_Distance2Mul,
+ CellularReturnType_Distance2Div
+ };
+
+ enum DomainWarpType
+ {
+ DomainWarpType_OpenSimplex2,
+ DomainWarpType_OpenSimplex2Reduced,
+ DomainWarpType_BasicGrid
+ };
+
+ /// <summary>
+ /// Create new FastNoise object with optional seed
+ /// </summary>
+ FastNoiseLite(int seed = 1337)
+ {
+ mSeed = seed;
+ mFrequency = 0.01f;
+ mNoiseType = NoiseType_OpenSimplex2;
+ mRotationType3D = RotationType3D_None;
+ mTransformType3D = TransformType3D_DefaultOpenSimplex2;
+
+ mFractalType = FractalType_None;
+ mOctaves = 3;
+ mLacunarity = 2.0f;
+ mGain = 0.5f;
+ mWeightedStrength = 0.0f;
+ mPingPongStrength = 2.0f;
+
+ mFractalBounding = 1 / 1.75f;
+
+ mCellularDistanceFunction = CellularDistanceFunction_EuclideanSq;
+ mCellularReturnType = CellularReturnType_Distance;
+ mCellularJitterModifier = 1.0f;
+
+ mDomainWarpType = DomainWarpType_OpenSimplex2;
+ mWarpTransformType3D = TransformType3D_DefaultOpenSimplex2;
+ mDomainWarpAmp = 1.0f;
+ }
+
+ /// <summary>
+ /// Sets seed used for all noise types
+ /// </summary>
+ /// <remarks>
+ /// Default: 1337
+ /// </remarks>
+ void SetSeed(int seed) { mSeed = seed; }
+
+ /// <summary>
+ /// Sets frequency for all noise types
+ /// </summary>
+ /// <remarks>
+ /// Default: 0.01
+ /// </remarks>
+ void SetFrequency(float frequency) { mFrequency = frequency; }
+
+ /// <summary>
+ /// Sets noise algorithm used for GetNoise(...)
+ /// </summary>
+ /// <remarks>
+ /// Default: OpenSimplex2
+ /// </remarks>
+ void SetNoiseType(NoiseType noiseType)
+ {
+ mNoiseType = noiseType;
+ UpdateTransformType3D();
+ }
+
+ /// <summary>
+ /// Sets domain rotation type for 3D Noise and 3D DomainWarp.
+ /// Can aid in reducing directional artifacts when sampling a 2D plane in 3D
+ /// </summary>
+ /// <remarks>
+ /// Default: None
+ /// </remarks>
+ void SetRotationType3D(RotationType3D rotationType3D)
+ {
+ mRotationType3D = rotationType3D;
+ UpdateTransformType3D();
+ UpdateWarpTransformType3D();
+ }
+
+ /// <summary>
+ /// Sets method for combining octaves in all fractal noise types
+ /// </summary>
+ /// <remarks>
+ /// Default: None
+ /// Note: FractalType_DomainWarp... only affects DomainWarp(...)
+ /// </remarks>
+ void SetFractalType(FractalType fractalType) { mFractalType = fractalType; }
+
+ /// <summary>
+ /// Sets octave count for all fractal noise types
+ /// </summary>
+ /// <remarks>
+ /// Default: 3
+ /// </remarks>
+ void SetFractalOctaves(int octaves)
+ {
+ mOctaves = octaves;
+ CalculateFractalBounding();
+ }
+
+ /// <summary>
+ /// Sets octave lacunarity for all fractal noise types
+ /// </summary>
+ /// <remarks>
+ /// Default: 2.0
+ /// </remarks>
+ void SetFractalLacunarity(float lacunarity) { mLacunarity = lacunarity; }
+
+ /// <summary>
+ /// Sets octave gain for all fractal noise types
+ /// </summary>
+ /// <remarks>
+ /// Default: 0.5
+ /// </remarks>
+ void SetFractalGain(float gain)
+ {
+ mGain = gain;
+ CalculateFractalBounding();
+ }
+
+ /// <summary>
+ /// Sets octave weighting for all none DomainWarp fratal types
+ /// </summary>
+ /// <remarks>
+ /// Default: 0.0
+ /// Note: Keep between 0...1 to maintain -1...1 output bounding
+ /// </remarks>
+ void SetFractalWeightedStrength(float weightedStrength) { mWeightedStrength = weightedStrength; }
+
+ /// <summary>
+ /// Sets strength of the fractal ping pong effect
+ /// </summary>
+ /// <remarks>
+ /// Default: 2.0
+ /// </remarks>
+ void SetFractalPingPongStrength(float pingPongStrength) { mPingPongStrength = pingPongStrength; }
+
+
+ /// <summary>
+ /// Sets distance function used in cellular noise calculations
+ /// </summary>
+ /// <remarks>
+ /// Default: Distance
+ /// </remarks>
+ void SetCellularDistanceFunction(CellularDistanceFunction cellularDistanceFunction) { mCellularDistanceFunction = cellularDistanceFunction; }
+
+ /// <summary>
+ /// Sets return type from cellular noise calculations
+ /// </summary>
+ /// <remarks>
+ /// Default: EuclideanSq
+ /// </remarks>
+ void SetCellularReturnType(CellularReturnType cellularReturnType) { mCellularReturnType = cellularReturnType; }
+
+ /// <summary>
+ /// Sets the maximum distance a cellular point can move from it's grid position
+ /// </summary>
+ /// <remarks>
+ /// Default: 1.0
+ /// Note: Setting this higher than 1 will cause artifacts
+ /// </remarks>
+ void SetCellularJitter(float cellularJitter) { mCellularJitterModifier = cellularJitter; }
+
+
+ /// <summary>
+ /// Sets the warp algorithm when using DomainWarp(...)
+ /// </summary>
+ /// <remarks>
+ /// Default: OpenSimplex2
+ /// </remarks>
+ void SetDomainWarpType(DomainWarpType domainWarpType)
+ {
+ mDomainWarpType = domainWarpType;
+ UpdateWarpTransformType3D();
+ }
+
+
+ /// <summary>
+ /// Sets the maximum warp distance from original position when using DomainWarp(...)
+ /// </summary>
+ /// <remarks>
+ /// Default: 1.0
+ /// </remarks>
+ void SetDomainWarpAmp(float domainWarpAmp) { mDomainWarpAmp = domainWarpAmp; }
+
+
+ /// <summary>
+ /// 2D noise at given position using current settings
+ /// </summary>
+ /// <returns>
+ /// Noise output bounded between -1...1
+ /// </returns>
+ template <typename FNfloat>
+ float GetNoise(FNfloat x, FNfloat y)
+ {
+ Arguments_must_be_floating_point_values<FNfloat>();
+
+ TransformNoiseCoordinate(x, y);
+
+ switch (mFractalType)
+ {
+ default:
+ return GenNoiseSingle(mSeed, x, y);
+ case FractalType_FBm:
+ return GenFractalFBm(x, y);
+ case FractalType_Ridged:
+ return GenFractalRidged(x, y);
+ case FractalType_PingPong:
+ return GenFractalPingPong(x, y);
+ }
+ }
+
+ /// <summary>
+ /// 3D noise at given position using current settings
+ /// </summary>
+ /// <returns>
+ /// Noise output bounded between -1...1
+ /// </returns>
+ template <typename FNfloat>
+ float GetNoise(FNfloat x, FNfloat y, FNfloat z)
+ {
+ Arguments_must_be_floating_point_values<FNfloat>();
+
+ TransformNoiseCoordinate(x, y, z);
+
+ switch (mFractalType)
+ {
+ default:
+ return GenNoiseSingle(mSeed, x, y, z);
+ case FractalType_FBm:
+ return GenFractalFBm(x, y, z);
+ case FractalType_Ridged:
+ return GenFractalRidged(x, y, z);
+ case FractalType_PingPong:
+ return GenFractalPingPong(x, y, z);
+ }
+ }
+
+
+ /// <summary>
+ /// 2D warps the input position using current domain warp settings
+ /// </summary>
+ /// <example>
+ /// Example usage with GetNoise
+ /// <code>DomainWarp(x, y)
+ /// noise = GetNoise(x, y)</code>
+ /// </example>
+ template <typename FNfloat>
+ void DomainWarp(FNfloat& x, FNfloat& y)
+ {
+ Arguments_must_be_floating_point_values<FNfloat>();
+
+ switch (mFractalType)
+ {
+ default:
+ DomainWarpSingle(x, y);
+ break;
+ case FractalType_DomainWarpProgressive:
+ DomainWarpFractalProgressive(x, y);
+ break;
+ case FractalType_DomainWarpIndependent:
+ DomainWarpFractalIndependent(x, y);
+ break;
+ }
+ }
+
+ /// <summary>
+ /// 3D warps the input position using current domain warp settings
+ /// </summary>
+ /// <example>
+ /// Example usage with GetNoise
+ /// <code>DomainWarp(x, y, z)
+ /// noise = GetNoise(x, y, z)</code>
+ /// </example>
+ template <typename FNfloat>
+ void DomainWarp(FNfloat& x, FNfloat& y, FNfloat& z)
+ {
+ Arguments_must_be_floating_point_values<FNfloat>();
+
+ switch (mFractalType)
+ {
+ default:
+ DomainWarpSingle(x, y, z);
+ break;
+ case FractalType_DomainWarpProgressive:
+ DomainWarpFractalProgressive(x, y, z);
+ break;
+ case FractalType_DomainWarpIndependent:
+ DomainWarpFractalIndependent(x, y, z);
+ break;
+ }
+ }
+
+private:
+ template <typename T>
+ struct Arguments_must_be_floating_point_values;
+
+ enum TransformType3D
+ {
+ TransformType3D_None,
+ TransformType3D_ImproveXYPlanes,
+ TransformType3D_ImproveXZPlanes,
+ TransformType3D_DefaultOpenSimplex2
+ };
+
+ int mSeed;
+ float mFrequency;
+ NoiseType mNoiseType;
+ RotationType3D mRotationType3D;
+ TransformType3D mTransformType3D;
+
+ FractalType mFractalType;
+ int mOctaves;
+ float mLacunarity;
+ float mGain;
+ float mWeightedStrength;
+ float mPingPongStrength;
+
+ float mFractalBounding;
+
+ CellularDistanceFunction mCellularDistanceFunction;
+ CellularReturnType mCellularReturnType;
+ float mCellularJitterModifier;
+
+ DomainWarpType mDomainWarpType;
+ TransformType3D mWarpTransformType3D;
+ float mDomainWarpAmp;
+
+
+ template <typename T>
+ struct Lookup
+ {
+ static const T Gradients2D[];
+ static const T Gradients3D[];
+ static const T RandVecs2D[];
+ static const T RandVecs3D[];
+ };
+
+ static float FastMin(float a, float b) { return a < b ? a : b; }
+
+ static float FastMax(float a, float b) { return a > b ? a : b; }
+
+ static float FastAbs(float f) { return f < 0 ? -f : f; }
+
+ static float FastSqrt(float f) { return sqrtf(f); }
+
+ template <typename FNfloat>
+ static int FastFloor(FNfloat f) { return f >= 0 ? (int)f : (int)f - 1; }
+
+ template <typename FNfloat>
+ static int FastRound(FNfloat f) { return f >= 0 ? (int)(f + 0.5f) : (int)(f - 0.5f); }
+
+ static float Lerp(float a, float b, float t) { return a + t * (b - a); }
+
+ static float InterpHermite(float t) { return t * t * (3 - 2 * t); }
+
+ static float InterpQuintic(float t) { return t * t * t * (t * (t * 6 - 15) + 10); }
+
+ static float CubicLerp(float a, float b, float c, float d, float t)
+ {
+ float p = (d - c) - (a - b);
+ return t * t * t * p + t * t * ((a - b) - p) + t * (c - a) + b;
+ }
+
+ static float PingPong(float t)
+ {
+ t -= (int)(t * 0.5f) * 2;
+ return t < 1 ? t : 2 - t;
+ }
+
+ void CalculateFractalBounding()
+ {
+ float gain = FastAbs(mGain);
+ float amp = gain;
+ float ampFractal = 1.0f;
+ for (int i = 1; i < mOctaves; i++)
+ {
+ ampFractal += amp;
+ amp *= gain;
+ }
+ mFractalBounding = 1 / ampFractal;
+ }
+
+ // Hashing
+ static const int PrimeX = 501125321;
+ static const int PrimeY = 1136930381;
+ static const int PrimeZ = 1720413743;
+
+ static int Hash(int seed, int xPrimed, int yPrimed)
+ {
+ int hash = seed ^ xPrimed ^ yPrimed;
+
+ hash *= 0x27d4eb2d;
+ return hash;
+ }
+
+
+ static int Hash(int seed, int xPrimed, int yPrimed, int zPrimed)
+ {
+ int hash = seed ^ xPrimed ^ yPrimed ^ zPrimed;
+
+ hash *= 0x27d4eb2d;
+ return hash;
+ }
+
+
+ static float ValCoord(int seed, int xPrimed, int yPrimed)
+ {
+ int hash = Hash(seed, xPrimed, yPrimed);
+
+ hash *= hash;
+ hash ^= hash << 19;
+ return hash * (1 / 2147483648.0f);
+ }
+
+
+ static float ValCoord(int seed, int xPrimed, int yPrimed, int zPrimed)
+ {
+ int hash = Hash(seed, xPrimed, yPrimed, zPrimed);
+
+ hash *= hash;
+ hash ^= hash << 19;
+ return hash * (1 / 2147483648.0f);
+ }
+
+
+ float GradCoord(int seed, int xPrimed, int yPrimed, float xd, float yd)
+ {
+ int hash = Hash(seed, xPrimed, yPrimed);
+ hash ^= hash >> 15;
+ hash &= 127 << 1;
+
+ float xg = Lookup<float>::Gradients2D[hash];
+ float yg = Lookup<float>::Gradients2D[hash | 1];
+
+ return xd * xg + yd * yg;
+ }
+
+
+ float GradCoord(int seed, int xPrimed, int yPrimed, int zPrimed, float xd, float yd, float zd)
+ {
+ int hash = Hash(seed, xPrimed, yPrimed, zPrimed);
+ hash ^= hash >> 15;
+ hash &= 63 << 2;
+
+ float xg = Lookup<float>::Gradients3D[hash];
+ float yg = Lookup<float>::Gradients3D[hash | 1];
+ float zg = Lookup<float>::Gradients3D[hash | 2];
+
+ return xd * xg + yd * yg + zd * zg;
+ }
+
+
+ void GradCoordOut(int seed, int xPrimed, int yPrimed, float& xo, float& yo)
+ {
+ int hash = Hash(seed, xPrimed, yPrimed) & (255 << 1);
+
+ xo = Lookup<float>::RandVecs2D[hash];
+ yo = Lookup<float>::RandVecs2D[hash | 1];
+ }
+
+
+ void GradCoordOut(int seed, int xPrimed, int yPrimed, int zPrimed, float& xo, float& yo, float& zo)
+ {
+ int hash = Hash(seed, xPrimed, yPrimed, zPrimed) & (255 << 2);
+
+ xo = Lookup<float>::RandVecs3D[hash];
+ yo = Lookup<float>::RandVecs3D[hash | 1];
+ zo = Lookup<float>::RandVecs3D[hash | 2];
+ }
+
+
+ void GradCoordDual(int seed, int xPrimed, int yPrimed, float xd, float yd, float& xo, float& yo)
+ {
+ int hash = Hash(seed, xPrimed, yPrimed);
+ int index1 = hash & (127 << 1);
+ int index2 = (hash >> 7) & (255 << 1);
+
+ float xg = Lookup<float>::Gradients2D[index1];
+ float yg = Lookup<float>::Gradients2D[index1 | 1];
+ float value = xd * xg + yd * yg;
+
+ float xgo = Lookup<float>::RandVecs2D[index2];
+ float ygo = Lookup<float>::RandVecs2D[index2 | 1];
+
+ xo = value * xgo;
+ yo = value * ygo;
+ }
+
+
+ void GradCoordDual(int seed, int xPrimed, int yPrimed, int zPrimed, float xd, float yd, float zd, float& xo, float& yo, float& zo)
+ {
+ int hash = Hash(seed, xPrimed, yPrimed, zPrimed);
+ int index1 = hash & (63 << 2);
+ int index2 = (hash >> 6) & (255 << 2);
+
+ float xg = Lookup<float>::Gradients3D[index1];
+ float yg = Lookup<float>::Gradients3D[index1 | 1];
+ float zg = Lookup<float>::Gradients3D[index1 | 2];
+ float value = xd * xg + yd * yg + zd * zg;
+
+ float xgo = Lookup<float>::RandVecs3D[index2];
+ float ygo = Lookup<float>::RandVecs3D[index2 | 1];
+ float zgo = Lookup<float>::RandVecs3D[index2 | 2];
+
+ xo = value * xgo;
+ yo = value * ygo;
+ zo = value * zgo;
+ }
+
+
+ // Generic noise gen
+
+ template <typename FNfloat>
+ float GenNoiseSingle(int seed, FNfloat x, FNfloat y)
+ {
+ switch (mNoiseType)
+ {
+ case NoiseType_OpenSimplex2:
+ return SingleSimplex(seed, x, y);
+ case NoiseType_OpenSimplex2S:
+ return SingleOpenSimplex2S(seed, x, y);
+ case NoiseType_Cellular:
+ return SingleCellular(seed, x, y);
+ case NoiseType_Perlin:
+ return SinglePerlin(seed, x, y);
+ case NoiseType_ValueCubic:
+ return SingleValueCubic(seed, x, y);
+ case NoiseType_Value:
+ return SingleValue(seed, x, y);
+ default:
+ return 0;
+ }
+ }
+
+ template <typename FNfloat>
+ float GenNoiseSingle(int seed, FNfloat x, FNfloat y, FNfloat z)
+ {
+ switch (mNoiseType)
+ {
+ case NoiseType_OpenSimplex2:
+ return SingleOpenSimplex2(seed, x, y, z);
+ case NoiseType_OpenSimplex2S:
+ return SingleOpenSimplex2S(seed, x, y, z);
+ case NoiseType_Cellular:
+ return SingleCellular(seed, x, y, z);
+ case NoiseType_Perlin:
+ return SinglePerlin(seed, x, y, z);
+ case NoiseType_ValueCubic:
+ return SingleValueCubic(seed, x, y, z);
+ case NoiseType_Value:
+ return SingleValue(seed, x, y, z);
+ default:
+ return 0;
+ }
+ }
+
+
+ // Noise Coordinate Transforms (frequency, and possible skew or rotation)
+
+ template <typename FNfloat>
+ void TransformNoiseCoordinate(FNfloat& x, FNfloat& y)
+ {
+ x *= mFrequency;
+ y *= mFrequency;
+
+ switch (mNoiseType)
+ {
+ case NoiseType_OpenSimplex2:
+ case NoiseType_OpenSimplex2S:
+ {
+ const FNfloat SQRT3 = (FNfloat)1.7320508075688772935274463415059;
+ const FNfloat F2 = 0.5f * (SQRT3 - 1);
+ FNfloat t = (x + y) * F2;
+ x += t;
+ y += t;
+ }
+ break;
+ default:
+ break;
+ }
+ }
+
+ template <typename FNfloat>
+ void TransformNoiseCoordinate(FNfloat& x, FNfloat& y, FNfloat& z)
+ {
+ x *= mFrequency;
+ y *= mFrequency;
+ z *= mFrequency;
+
+ switch (mTransformType3D)
+ {
+ case TransformType3D_ImproveXYPlanes:
+ {
+ FNfloat xy = x + y;
+ FNfloat s2 = xy * -(FNfloat)0.211324865405187;
+ z *= (FNfloat)0.577350269189626;
+ x += s2 - z;
+ y = y + s2 - z;
+ z += xy * (FNfloat)0.577350269189626;
+ }
+ break;
+ case TransformType3D_ImproveXZPlanes:
+ {
+ FNfloat xz = x + z;
+ FNfloat s2 = xz * -(FNfloat)0.211324865405187;
+ y *= (FNfloat)0.577350269189626;
+ x += s2 - y;
+ z += s2 - y;
+ y += xz * (FNfloat)0.577350269189626;
+ }
+ break;
+ case TransformType3D_DefaultOpenSimplex2:
+ {
+ const FNfloat R3 = (FNfloat)(2.0 / 3.0);
+ FNfloat r = (x + y + z) * R3; // Rotation, not skew
+ x = r - x;
+ y = r - y;
+ z = r - z;
+ }
+ break;
+ default:
+ break;
+ }
+ }
+
+ void UpdateTransformType3D()
+ {
+ switch (mRotationType3D)
+ {
+ case RotationType3D_ImproveXYPlanes:
+ mTransformType3D = TransformType3D_ImproveXYPlanes;
+ break;
+ case RotationType3D_ImproveXZPlanes:
+ mTransformType3D = TransformType3D_ImproveXZPlanes;
+ break;
+ default:
+ switch (mNoiseType)
+ {
+ case NoiseType_OpenSimplex2:
+ case NoiseType_OpenSimplex2S:
+ mTransformType3D = TransformType3D_DefaultOpenSimplex2;
+ break;
+ default:
+ mTransformType3D = TransformType3D_None;
+ break;
+ }
+ break;
+ }
+ }
+
+
+ // Domain Warp Coordinate Transforms
+
+ template <typename FNfloat>
+ void TransformDomainWarpCoordinate(FNfloat& x, FNfloat& y)
+ {
+ switch (mDomainWarpType)
+ {
+ case DomainWarpType_OpenSimplex2:
+ case DomainWarpType_OpenSimplex2Reduced:
+ {
+ const FNfloat SQRT3 = (FNfloat)1.7320508075688772935274463415059;
+ const FNfloat F2 = 0.5f * (SQRT3 - 1);
+ FNfloat t = (x + y) * F2;
+ x += t;
+ y += t;
+ }
+ break;
+ default:
+ break;
+ }
+ }
+
+ template <typename FNfloat>
+ void TransformDomainWarpCoordinate(FNfloat& x, FNfloat& y, FNfloat& z)
+ {
+ switch (mWarpTransformType3D)
+ {
+ case TransformType3D_ImproveXYPlanes:
+ {
+ FNfloat xy = x + y;
+ FNfloat s2 = xy * -(FNfloat)0.211324865405187;
+ z *= (FNfloat)0.577350269189626;
+ x += s2 - z;
+ y = y + s2 - z;
+ z += xy * (FNfloat)0.577350269189626;
+ }
+ break;
+ case TransformType3D_ImproveXZPlanes:
+ {
+ FNfloat xz = x + z;
+ FNfloat s2 = xz * -(FNfloat)0.211324865405187;
+ y *= (FNfloat)0.577350269189626;
+ x += s2 - y;
+ z += s2 - y;
+ y += xz * (FNfloat)0.577350269189626;
+ }
+ break;
+ case TransformType3D_DefaultOpenSimplex2:
+ {
+ const FNfloat R3 = (FNfloat)(2.0 / 3.0);
+ FNfloat r = (x + y + z) * R3; // Rotation, not skew
+ x = r - x;
+ y = r - y;
+ z = r - z;
+ }
+ break;
+ default:
+ break;
+ }
+ }
+
+ void UpdateWarpTransformType3D()
+ {
+ switch (mRotationType3D)
+ {
+ case RotationType3D_ImproveXYPlanes:
+ mWarpTransformType3D = TransformType3D_ImproveXYPlanes;
+ break;
+ case RotationType3D_ImproveXZPlanes:
+ mWarpTransformType3D = TransformType3D_ImproveXZPlanes;
+ break;
+ default:
+ switch (mDomainWarpType)
+ {
+ case DomainWarpType_OpenSimplex2:
+ case DomainWarpType_OpenSimplex2Reduced:
+ mWarpTransformType3D = TransformType3D_DefaultOpenSimplex2;
+ break;
+ default:
+ mWarpTransformType3D = TransformType3D_None;
+ break;
+ }
+ break;
+ }
+ }
+
+
+ // Fractal FBm
+
+ template <typename FNfloat>
+ float GenFractalFBm(FNfloat x, FNfloat y)
+ {
+ int seed = mSeed;
+ float sum = 0;
+ float amp = mFractalBounding;
+
+ for (int i = 0; i < mOctaves; i++)
+ {
+ float noise = GenNoiseSingle(seed++, x, y);
+ sum += noise * amp;
+ amp *= Lerp(1.0f, FastMin(noise + 1, 2) * 0.5f, mWeightedStrength);
+
+ x *= mLacunarity;
+ y *= mLacunarity;
+ amp *= mGain;
+ }
+
+ return sum;
+ }
+
+ template <typename FNfloat>
+ float GenFractalFBm(FNfloat x, FNfloat y, FNfloat z)
+ {
+ int seed = mSeed;
+ float sum = 0;
+ float amp = mFractalBounding;
+
+ for (int i = 0; i < mOctaves; i++)
+ {
+ float noise = GenNoiseSingle(seed++, x, y, z);
+ sum += noise * amp;
+ amp *= Lerp(1.0f, (noise + 1) * 0.5f, mWeightedStrength);
+
+ x *= mLacunarity;
+ y *= mLacunarity;
+ z *= mLacunarity;
+ amp *= mGain;
+ }
+
+ return sum;
+ }
+
+
+ // Fractal Ridged
+
+ template <typename FNfloat>
+ float GenFractalRidged(FNfloat x, FNfloat y)
+ {
+ int seed = mSeed;
+ float sum = 0;
+ float amp = mFractalBounding;
+
+ for (int i = 0; i < mOctaves; i++)
+ {
+ float noise = FastAbs(GenNoiseSingle(seed++, x, y));
+ sum += (noise * -2 + 1) * amp;
+ amp *= Lerp(1.0f, 1 - noise, mWeightedStrength);
+
+ x *= mLacunarity;
+ y *= mLacunarity;
+ amp *= mGain;
+ }
+
+ return sum;
+ }
+
+ template <typename FNfloat>
+ float GenFractalRidged(FNfloat x, FNfloat y, FNfloat z)
+ {
+ int seed = mSeed;
+ float sum = 0;
+ float amp = mFractalBounding;
+
+ for (int i = 0; i < mOctaves; i++)
+ {
+ float noise = FastAbs(GenNoiseSingle(seed++, x, y, z));
+ sum += (noise * -2 + 1) * amp;
+ amp *= Lerp(1.0f, 1 - noise, mWeightedStrength);
+
+ x *= mLacunarity;
+ y *= mLacunarity;
+ z *= mLacunarity;
+ amp *= mGain;
+ }
+
+ return sum;
+ }
+
+
+ // Fractal PingPong
+
+ template <typename FNfloat>
+ float GenFractalPingPong(FNfloat x, FNfloat y)
+ {
+ int seed = mSeed;
+ float sum = 0;
+ float amp = mFractalBounding;
+
+ for (int i = 0; i < mOctaves; i++)
+ {
+ float noise = PingPong((GenNoiseSingle(seed++, x, y) + 1) * mPingPongStrength);
+ sum += (noise - 0.5f) * 2 * amp;
+ amp *= Lerp(1.0f, noise, mWeightedStrength);
+
+ x *= mLacunarity;
+ y *= mLacunarity;
+ amp *= mGain;
+ }
+
+ return sum;
+ }
+
+ template <typename FNfloat>
+ float GenFractalPingPong(FNfloat x, FNfloat y, FNfloat z)
+ {
+ int seed = mSeed;
+ float sum = 0;
+ float amp = mFractalBounding;
+
+ for (int i = 0; i < mOctaves; i++)
+ {
+ float noise = PingPong((GenNoiseSingle(seed++, x, y, z) + 1) * mPingPongStrength);
+ sum += (noise - 0.5f) * 2 * amp;
+ amp *= Lerp(1.0f, noise, mWeightedStrength);
+
+ x *= mLacunarity;
+ y *= mLacunarity;
+ z *= mLacunarity;
+ amp *= mGain;
+ }
+
+ return sum;
+ }
+
+
+ // Simplex/OpenSimplex2 Noise
+
+ template <typename FNfloat>
+ float SingleSimplex(int seed, FNfloat x, FNfloat y)
+ {
+ // 2D OpenSimplex2 case uses the same algorithm as ordinary Simplex.
+
+ const float SQRT3 = 1.7320508075688772935274463415059f;
+ const float G2 = (3 - SQRT3) / 6;
+
+ /*
+ * --- Skew moved to TransformNoiseCoordinate method ---
+ * const FNfloat F2 = 0.5f * (SQRT3 - 1);
+ * FNfloat s = (x + y) * F2;
+ * x += s; y += s;
+ */
+
+ int i = FastFloor(x);
+ int j = FastFloor(y);
+ float xi = (float)(x - i);
+ float yi = (float)(y - j);
+
+ float t = (xi + yi) * G2;
+ float x0 = (float)(xi - t);
+ float y0 = (float)(yi - t);
+
+ i *= PrimeX;
+ j *= PrimeY;
+
+ float n0, n1, n2;
+
+ float a = 0.5f - x0 * x0 - y0 * y0;
+ if (a <= 0) n0 = 0;
+ else
+ {
+ n0 = (a * a) * (a * a) * GradCoord(seed, i, j, x0, y0);
+ }
+
+ float c = (float)(2 * (1 - 2 * G2) * (1 / G2 - 2)) * t + ((float)(-2 * (1 - 2 * G2) * (1 - 2 * G2)) + a);
+ if (c <= 0) n2 = 0;
+ else
+ {
+ float x2 = x0 + (2 * (float)G2 - 1);
+ float y2 = y0 + (2 * (float)G2 - 1);
+ n2 = (c * c) * (c * c) * GradCoord(seed, i + PrimeX, j + PrimeY, x2, y2);
+ }
+
+ if (y0 > x0)
+ {
+ float x1 = x0 + (float)G2;
+ float y1 = y0 + ((float)G2 - 1);
+ float b = 0.5f - x1 * x1 - y1 * y1;
+ if (b <= 0) n1 = 0;
+ else
+ {
+ n1 = (b * b) * (b * b) * GradCoord(seed, i, j + PrimeY, x1, y1);
+ }
+ }
+ else
+ {
+ float x1 = x0 + ((float)G2 - 1);
+ float y1 = y0 + (float)G2;
+ float b = 0.5f - x1 * x1 - y1 * y1;
+ if (b <= 0) n1 = 0;
+ else
+ {
+ n1 = (b * b) * (b * b) * GradCoord(seed, i + PrimeX, j, x1, y1);
+ }
+ }
+
+ return (n0 + n1 + n2) * 99.83685446303647f;
+ }
+
+ template <typename FNfloat>
+ float SingleOpenSimplex2(int seed, FNfloat x, FNfloat y, FNfloat z)
+ {
+ // 3D OpenSimplex2 case uses two offset rotated cube grids.
+
+ /*
+ * --- Rotation moved to TransformNoiseCoordinate method ---
+ * const FNfloat R3 = (FNfloat)(2.0 / 3.0);
+ * FNfloat r = (x + y + z) * R3; // Rotation, not skew
+ * x = r - x; y = r - y; z = r - z;
+ */
+
+ int i = FastRound(x);
+ int j = FastRound(y);
+ int k = FastRound(z);
+ float x0 = (float)(x - i);
+ float y0 = (float)(y - j);
+ float z0 = (float)(z - k);
+
+ int xNSign = (int)(-1.0f - x0) | 1;
+ int yNSign = (int)(-1.0f - y0) | 1;
+ int zNSign = (int)(-1.0f - z0) | 1;
+
+ float ax0 = xNSign * -x0;
+ float ay0 = yNSign * -y0;
+ float az0 = zNSign * -z0;
+
+ i *= PrimeX;
+ j *= PrimeY;
+ k *= PrimeZ;
+
+ float value = 0;
+ float a = (0.6f - x0 * x0) - (y0 * y0 + z0 * z0);
+
+ for (int l = 0; ; l++)
+ {
+ if (a > 0)
+ {
+ value += (a * a) * (a * a) * GradCoord(seed, i, j, k, x0, y0, z0);
+ }
+
+ float b = a + 1;
+ int i1 = i;
+ int j1 = j;
+ int k1 = k;
+ float x1 = x0;
+ float y1 = y0;
+ float z1 = z0;
+
+ if (ax0 >= ay0 && ax0 >= az0)
+ {
+ x1 += xNSign;
+ b -= xNSign * 2 * x1;
+ i1 -= xNSign * PrimeX;
+ }
+ else if (ay0 > ax0 && ay0 >= az0)
+ {
+ y1 += yNSign;
+ b -= yNSign * 2 * y1;
+ j1 -= yNSign * PrimeY;
+ }
+ else
+ {
+ z1 += zNSign;
+ b -= zNSign * 2 * z1;
+ k1 -= zNSign * PrimeZ;
+ }
+
+ if (b > 0)
+ {
+ value += (b * b) * (b * b) * GradCoord(seed, i1, j1, k1, x1, y1, z1);
+ }
+
+ if (l == 1) break;
+
+ ax0 = 0.5f - ax0;
+ ay0 = 0.5f - ay0;
+ az0 = 0.5f - az0;
+
+ x0 = xNSign * ax0;
+ y0 = yNSign * ay0;
+ z0 = zNSign * az0;
+
+ a += (0.75f - ax0) - (ay0 + az0);
+
+ i += (xNSign >> 1) & PrimeX;
+ j += (yNSign >> 1) & PrimeY;
+ k += (zNSign >> 1) & PrimeZ;
+
+ xNSign = -xNSign;
+ yNSign = -yNSign;
+ zNSign = -zNSign;
+
+ seed = ~seed;
+ }
+
+ return value * 32.69428253173828125f;
+ }
+
+
+ // OpenSimplex2S Noise
+
+ template <typename FNfloat>
+ float SingleOpenSimplex2S(int seed, FNfloat x, FNfloat y)
+ {
+ // 2D OpenSimplex2S case is a modified 2D simplex noise.
+
+ const FNfloat SQRT3 = (FNfloat)1.7320508075688772935274463415059;
+ const FNfloat G2 = (3 - SQRT3) / 6;
+
+ /*
+ * --- Skew moved to TransformNoiseCoordinate method ---
+ * const FNfloat F2 = 0.5f * (SQRT3 - 1);
+ * FNfloat s = (x + y) * F2;
+ * x += s; y += s;
+ */
+
+ int i = FastFloor(x);
+ int j = FastFloor(y);
+ float xi = (float)(x - i);
+ float yi = (float)(y - j);
+
+ i *= PrimeX;
+ j *= PrimeY;
+ int i1 = i + PrimeX;
+ int j1 = j + PrimeY;
+
+ float t = (xi + yi) * (float)G2;
+ float x0 = xi - t;
+ float y0 = yi - t;
+
+ float a0 = (2.0f / 3.0f) - x0 * x0 - y0 * y0;
+ float value = (a0 * a0) * (a0 * a0) * GradCoord(seed, i, j, x0, y0);
+
+ float a1 = (float)(2 * (1 - 2 * G2) * (1 / G2 - 2)) * t + ((float)(-2 * (1 - 2 * G2) * (1 - 2 * G2)) + a0);
+ float x1 = x0 - (float)(1 - 2 * G2);
+ float y1 = y0 - (float)(1 - 2 * G2);
+ value += (a1 * a1) * (a1 * a1) * GradCoord(seed, i1, j1, x1, y1);
+
+ // Nested conditionals were faster than compact bit logic/arithmetic.
+ float xmyi = xi - yi;
+ if (t > G2)
+ {
+ if (xi + xmyi > 1)
+ {
+ float x2 = x0 + (float)(3 * G2 - 2);
+ float y2 = y0 + (float)(3 * G2 - 1);
+ float a2 = (2.0f / 3.0f) - x2 * x2 - y2 * y2;
+ if (a2 > 0)
+ {
+ value += (a2 * a2) * (a2 * a2) * GradCoord(seed, i + (PrimeX << 1), j + PrimeY, x2, y2);
+ }
+ }
+ else
+ {
+ float x2 = x0 + (float)G2;
+ float y2 = y0 + (float)(G2 - 1);
+ float a2 = (2.0f / 3.0f) - x2 * x2 - y2 * y2;
+ if (a2 > 0)
+ {
+ value += (a2 * a2) * (a2 * a2) * GradCoord(seed, i, j + PrimeY, x2, y2);
+ }
+ }
+
+ if (yi - xmyi > 1)
+ {
+ float x3 = x0 + (float)(3 * G2 - 1);
+ float y3 = y0 + (float)(3 * G2 - 2);
+ float a3 = (2.0f / 3.0f) - x3 * x3 - y3 * y3;
+ if (a3 > 0)
+ {
+ value += (a3 * a3) * (a3 * a3) * GradCoord(seed, i + PrimeX, j + (PrimeY << 1), x3, y3);
+ }
+ }
+ else
+ {
+ float x3 = x0 + (float)(G2 - 1);
+ float y3 = y0 + (float)G2;
+ float a3 = (2.0f / 3.0f) - x3 * x3 - y3 * y3;
+ if (a3 > 0)
+ {
+ value += (a3 * a3) * (a3 * a3) * GradCoord(seed, i + PrimeX, j, x3, y3);
+ }
+ }
+ }
+ else
+ {
+ if (xi + xmyi < 0)
+ {
+ float x2 = x0 + (float)(1 - G2);
+ float y2 = y0 - (float)G2;
+ float a2 = (2.0f / 3.0f) - x2 * x2 - y2 * y2;
+ if (a2 > 0)
+ {
+ value += (a2 * a2) * (a2 * a2) * GradCoord(seed, i - PrimeX, j, x2, y2);
+ }
+ }
+ else
+ {
+ float x2 = x0 + (float)(G2 - 1);
+ float y2 = y0 + (float)G2;
+ float a2 = (2.0f / 3.0f) - x2 * x2 - y2 * y2;
+ if (a2 > 0)
+ {
+ value += (a2 * a2) * (a2 * a2) * GradCoord(seed, i + PrimeX, j, x2, y2);
+ }
+ }
+
+ if (yi < xmyi)
+ {
+ float x2 = x0 - (float)G2;
+ float y2 = y0 - (float)(G2 - 1);
+ float a2 = (2.0f / 3.0f) - x2 * x2 - y2 * y2;
+ if (a2 > 0)
+ {
+ value += (a2 * a2) * (a2 * a2) * GradCoord(seed, i, j - PrimeY, x2, y2);
+ }
+ }
+ else
+ {
+ float x2 = x0 + (float)G2;
+ float y2 = y0 + (float)(G2 - 1);
+ float a2 = (2.0f / 3.0f) - x2 * x2 - y2 * y2;
+ if (a2 > 0)
+ {
+ value += (a2 * a2) * (a2 * a2) * GradCoord(seed, i, j + PrimeY, x2, y2);
+ }
+ }
+ }
+
+ return value * 18.24196194486065f;
+ }
+
+ template <typename FNfloat>
+ float SingleOpenSimplex2S(int seed, FNfloat x, FNfloat y, FNfloat z)
+ {
+ // 3D OpenSimplex2S case uses two offset rotated cube grids.
+
+ /*
+ * --- Rotation moved to TransformNoiseCoordinate method ---
+ * const FNfloat R3 = (FNfloat)(2.0 / 3.0);
+ * FNfloat r = (x + y + z) * R3; // Rotation, not skew
+ * x = r - x; y = r - y; z = r - z;
+ */
+
+ int i = FastFloor(x);
+ int j = FastFloor(y);
+ int k = FastFloor(z);
+ float xi = (float)(x - i);
+ float yi = (float)(y - j);
+ float zi = (float)(z - k);
+
+ i *= PrimeX;
+ j *= PrimeY;
+ k *= PrimeZ;
+ int seed2 = seed + 1293373;
+
+ int xNMask = (int)(-0.5f - xi);
+ int yNMask = (int)(-0.5f - yi);
+ int zNMask = (int)(-0.5f - zi);
+
+ float x0 = xi + xNMask;
+ float y0 = yi + yNMask;
+ float z0 = zi + zNMask;
+ float a0 = 0.75f - x0 * x0 - y0 * y0 - z0 * z0;
+ float value = (a0 * a0) * (a0 * a0) * GradCoord(seed,
+ i + (xNMask & PrimeX), j + (yNMask & PrimeY), k + (zNMask & PrimeZ), x0, y0, z0);
+
+ float x1 = xi - 0.5f;
+ float y1 = yi - 0.5f;
+ float z1 = zi - 0.5f;
+ float a1 = 0.75f - x1 * x1 - y1 * y1 - z1 * z1;
+ value += (a1 * a1) * (a1 * a1) * GradCoord(seed2,
+ i + PrimeX, j + PrimeY, k + PrimeZ, x1, y1, z1);
+
+ float xAFlipMask0 = ((xNMask | 1) << 1) * x1;
+ float yAFlipMask0 = ((yNMask | 1) << 1) * y1;
+ float zAFlipMask0 = ((zNMask | 1) << 1) * z1;
+ float xAFlipMask1 = (-2 - (xNMask << 2)) * x1 - 1.0f;
+ float yAFlipMask1 = (-2 - (yNMask << 2)) * y1 - 1.0f;
+ float zAFlipMask1 = (-2 - (zNMask << 2)) * z1 - 1.0f;
+
+ bool skip5 = false;
+ float a2 = xAFlipMask0 + a0;
+ if (a2 > 0)
+ {
+ float x2 = x0 - (xNMask | 1);
+ float y2 = y0;
+ float z2 = z0;
+ value += (a2 * a2) * (a2 * a2) * GradCoord(seed,
+ i + (~xNMask & PrimeX), j + (yNMask & PrimeY), k + (zNMask & PrimeZ), x2, y2, z2);
+ }
+ else
+ {
+ float a3 = yAFlipMask0 + zAFlipMask0 + a0;
+ if (a3 > 0)
+ {
+ float x3 = x0;
+ float y3 = y0 - (yNMask | 1);
+ float z3 = z0 - (zNMask | 1);
+ value += (a3 * a3) * (a3 * a3) * GradCoord(seed,
+ i + (xNMask & PrimeX), j + (~yNMask & PrimeY), k + (~zNMask & PrimeZ), x3, y3, z3);
+ }
+
+ float a4 = xAFlipMask1 + a1;
+ if (a4 > 0)
+ {
+ float x4 = (xNMask | 1) + x1;
+ float y4 = y1;
+ float z4 = z1;
+ value += (a4 * a4) * (a4 * a4) * GradCoord(seed2,
+ i + (xNMask & (PrimeX * 2)), j + PrimeY, k + PrimeZ, x4, y4, z4);
+ skip5 = true;
+ }
+ }
+
+ bool skip9 = false;
+ float a6 = yAFlipMask0 + a0;
+ if (a6 > 0)
+ {
+ float x6 = x0;
+ float y6 = y0 - (yNMask | 1);
+ float z6 = z0;
+ value += (a6 * a6) * (a6 * a6) * GradCoord(seed,
+ i + (xNMask & PrimeX), j + (~yNMask & PrimeY), k + (zNMask & PrimeZ), x6, y6, z6);
+ }
+ else
+ {
+ float a7 = xAFlipMask0 + zAFlipMask0 + a0;
+ if (a7 > 0)
+ {
+ float x7 = x0 - (xNMask | 1);
+ float y7 = y0;
+ float z7 = z0 - (zNMask | 1);
+ value += (a7 * a7) * (a7 * a7) * GradCoord(seed,
+ i + (~xNMask & PrimeX), j + (yNMask & PrimeY), k + (~zNMask & PrimeZ), x7, y7, z7);
+ }
+
+ float a8 = yAFlipMask1 + a1;
+ if (a8 > 0)
+ {
+ float x8 = x1;
+ float y8 = (yNMask | 1) + y1;
+ float z8 = z1;
+ value += (a8 * a8) * (a8 * a8) * GradCoord(seed2,
+ i + PrimeX, j + (yNMask & (PrimeY << 1)), k + PrimeZ, x8, y8, z8);
+ skip9 = true;
+ }
+ }
+
+ bool skipD = false;
+ float aA = zAFlipMask0 + a0;
+ if (aA > 0)
+ {
+ float xA = x0;
+ float yA = y0;
+ float zA = z0 - (zNMask | 1);
+ value += (aA * aA) * (aA * aA) * GradCoord(seed,
+ i + (xNMask & PrimeX), j + (yNMask & PrimeY), k + (~zNMask & PrimeZ), xA, yA, zA);
+ }
+ else
+ {
+ float aB = xAFlipMask0 + yAFlipMask0 + a0;
+ if (aB > 0)
+ {
+ float xB = x0 - (xNMask | 1);
+ float yB = y0 - (yNMask | 1);
+ float zB = z0;
+ value += (aB * aB) * (aB * aB) * GradCoord(seed,
+ i + (~xNMask & PrimeX), j + (~yNMask & PrimeY), k + (zNMask & PrimeZ), xB, yB, zB);
+ }
+
+ float aC = zAFlipMask1 + a1;
+ if (aC > 0)
+ {
+ float xC = x1;
+ float yC = y1;
+ float zC = (zNMask | 1) + z1;
+ value += (aC * aC) * (aC * aC) * GradCoord(seed2,
+ i + PrimeX, j + PrimeY, k + (zNMask & (PrimeZ << 1)), xC, yC, zC);
+ skipD = true;
+ }
+ }
+
+ if (!skip5)
+ {
+ float a5 = yAFlipMask1 + zAFlipMask1 + a1;
+ if (a5 > 0)
+ {
+ float x5 = x1;
+ float y5 = (yNMask | 1) + y1;
+ float z5 = (zNMask | 1) + z1;
+ value += (a5 * a5) * (a5 * a5) * GradCoord(seed2,
+ i + PrimeX, j + (yNMask & (PrimeY << 1)), k + (zNMask & (PrimeZ << 1)), x5, y5, z5);
+ }
+ }
+
+ if (!skip9)
+ {
+ float a9 = xAFlipMask1 + zAFlipMask1 + a1;
+ if (a9 > 0)
+ {
+ float x9 = (xNMask | 1) + x1;
+ float y9 = y1;
+ float z9 = (zNMask | 1) + z1;
+ value += (a9 * a9) * (a9 * a9) * GradCoord(seed2,
+ i + (xNMask & (PrimeX * 2)), j + PrimeY, k + (zNMask & (PrimeZ << 1)), x9, y9, z9);
+ }
+ }
+
+ if (!skipD)
+ {
+ float aD = xAFlipMask1 + yAFlipMask1 + a1;
+ if (aD > 0)
+ {
+ float xD = (xNMask | 1) + x1;
+ float yD = (yNMask | 1) + y1;
+ float zD = z1;
+ value += (aD * aD) * (aD * aD) * GradCoord(seed2,
+ i + (xNMask & (PrimeX << 1)), j + (yNMask & (PrimeY << 1)), k + PrimeZ, xD, yD, zD);
+ }
+ }
+
+ return value * 9.046026385208288f;
+ }
+
+
+ // Cellular Noise
+
+ template <typename FNfloat>
+ float SingleCellular(int seed, FNfloat x, FNfloat y)
+ {
+ int xr = FastRound(x);
+ int yr = FastRound(y);
+
+ float distance0 = 1e10f;
+ float distance1 = 1e10f;
+ int closestHash = 0;
+
+ float cellularJitter = 0.43701595f * mCellularJitterModifier;
+
+ int xPrimed = (xr - 1) * PrimeX;
+ int yPrimedBase = (yr - 1) * PrimeY;
+
+ switch (mCellularDistanceFunction)
+ {
+ default:
+ case CellularDistanceFunction_Euclidean:
+ case CellularDistanceFunction_EuclideanSq:
+ for (int xi = xr - 1; xi <= xr + 1; xi++)
+ {
+ int yPrimed = yPrimedBase;
+
+ for (int yi = yr - 1; yi <= yr + 1; yi++)
+ {
+ int hash = Hash(seed, xPrimed, yPrimed);
+ int idx = hash & (255 << 1);
+
+ float vecX = (float)(xi - x) + Lookup<float>::RandVecs2D[idx] * cellularJitter;
+ float vecY = (float)(yi - y) + Lookup<float>::RandVecs2D[idx | 1] * cellularJitter;
+
+ float newDistance = vecX * vecX + vecY * vecY;
+
+ distance1 = FastMax(FastMin(distance1, newDistance), distance0);
+ if (newDistance < distance0)
+ {
+ distance0 = newDistance;
+ closestHash = hash;
+ }
+ yPrimed += PrimeY;
+ }
+ xPrimed += PrimeX;
+ }
+ break;
+ case CellularDistanceFunction_Manhattan:
+ for (int xi = xr - 1; xi <= xr + 1; xi++)
+ {
+ int yPrimed = yPrimedBase;
+
+ for (int yi = yr - 1; yi <= yr + 1; yi++)
+ {
+ int hash = Hash(seed, xPrimed, yPrimed);
+ int idx = hash & (255 << 1);
+
+ float vecX = (float)(xi - x) + Lookup<float>::RandVecs2D[idx] * cellularJitter;
+ float vecY = (float)(yi - y) + Lookup<float>::RandVecs2D[idx | 1] * cellularJitter;
+
+ float newDistance = FastAbs(vecX) + FastAbs(vecY);
+
+ distance1 = FastMax(FastMin(distance1, newDistance), distance0);
+ if (newDistance < distance0)
+ {
+ distance0 = newDistance;
+ closestHash = hash;
+ }
+ yPrimed += PrimeY;
+ }
+ xPrimed += PrimeX;
+ }
+ break;
+ case CellularDistanceFunction_Hybrid:
+ for (int xi = xr - 1; xi <= xr + 1; xi++)
+ {
+ int yPrimed = yPrimedBase;
+
+ for (int yi = yr - 1; yi <= yr + 1; yi++)
+ {
+ int hash = Hash(seed, xPrimed, yPrimed);
+ int idx = hash & (255 << 1);
+
+ float vecX = (float)(xi - x) + Lookup<float>::RandVecs2D[idx] * cellularJitter;
+ float vecY = (float)(yi - y) + Lookup<float>::RandVecs2D[idx | 1] * cellularJitter;
+
+ float newDistance = (FastAbs(vecX) + FastAbs(vecY)) + (vecX * vecX + vecY * vecY);
+
+ distance1 = FastMax(FastMin(distance1, newDistance), distance0);
+ if (newDistance < distance0)
+ {
+ distance0 = newDistance;
+ closestHash = hash;
+ }
+ yPrimed += PrimeY;
+ }
+ xPrimed += PrimeX;
+ }
+ break;
+ }
+
+ if (mCellularDistanceFunction == CellularDistanceFunction_Euclidean && mCellularReturnType >= CellularReturnType_Distance)
+ {
+ distance0 = FastSqrt(distance0);
+
+ if (mCellularReturnType >= CellularReturnType_Distance2)
+ {
+ distance1 = FastSqrt(distance1);
+ }
+ }
+
+ switch (mCellularReturnType)
+ {
+ case CellularReturnType_CellValue:
+ return closestHash * (1 / 2147483648.0f);
+ case CellularReturnType_Distance:
+ return distance0 - 1;
+ case CellularReturnType_Distance2:
+ return distance1 - 1;
+ case CellularReturnType_Distance2Add:
+ return (distance1 + distance0) * 0.5f - 1;
+ case CellularReturnType_Distance2Sub:
+ return distance1 - distance0 - 1;
+ case CellularReturnType_Distance2Mul:
+ return distance1 * distance0 * 0.5f - 1;
+ case CellularReturnType_Distance2Div:
+ return distance0 / distance1 - 1;
+ default:
+ return 0;
+ }
+ }
+
+ template <typename FNfloat>
+ float SingleCellular(int seed, FNfloat x, FNfloat y, FNfloat z)
+ {
+ int xr = FastRound(x);
+ int yr = FastRound(y);
+ int zr = FastRound(z);
+
+ float distance0 = 1e10f;
+ float distance1 = 1e10f;
+ int closestHash = 0;
+
+ float cellularJitter = 0.39614353f * mCellularJitterModifier;
+
+ int xPrimed = (xr - 1) * PrimeX;
+ int yPrimedBase = (yr - 1) * PrimeY;
+ int zPrimedBase = (zr - 1) * PrimeZ;
+
+ switch (mCellularDistanceFunction)
+ {
+ case CellularDistanceFunction_Euclidean:
+ case CellularDistanceFunction_EuclideanSq:
+ for (int xi = xr - 1; xi <= xr + 1; xi++)
+ {
+ int yPrimed = yPrimedBase;
+
+ for (int yi = yr - 1; yi <= yr + 1; yi++)
+ {
+ int zPrimed = zPrimedBase;
+
+ for (int zi = zr - 1; zi <= zr + 1; zi++)
+ {
+ int hash = Hash(seed, xPrimed, yPrimed, zPrimed);
+ int idx = hash & (255 << 2);
+
+ float vecX = (float)(xi - x) + Lookup<float>::RandVecs3D[idx] * cellularJitter;
+ float vecY = (float)(yi - y) + Lookup<float>::RandVecs3D[idx | 1] * cellularJitter;
+ float vecZ = (float)(zi - z) + Lookup<float>::RandVecs3D[idx | 2] * cellularJitter;
+
+ float newDistance = vecX * vecX + vecY * vecY + vecZ * vecZ;
+
+ distance1 = FastMax(FastMin(distance1, newDistance), distance0);
+ if (newDistance < distance0)
+ {
+ distance0 = newDistance;
+ closestHash = hash;
+ }
+ zPrimed += PrimeZ;
+ }
+ yPrimed += PrimeY;
+ }
+ xPrimed += PrimeX;
+ }
+ break;
+ case CellularDistanceFunction_Manhattan:
+ for (int xi = xr - 1; xi <= xr + 1; xi++)
+ {
+ int yPrimed = yPrimedBase;
+
+ for (int yi = yr - 1; yi <= yr + 1; yi++)
+ {
+ int zPrimed = zPrimedBase;
+
+ for (int zi = zr - 1; zi <= zr + 1; zi++)
+ {
+ int hash = Hash(seed, xPrimed, yPrimed, zPrimed);
+ int idx = hash & (255 << 2);
+
+ float vecX = (float)(xi - x) + Lookup<float>::RandVecs3D[idx] * cellularJitter;
+ float vecY = (float)(yi - y) + Lookup<float>::RandVecs3D[idx | 1] * cellularJitter;
+ float vecZ = (float)(zi - z) + Lookup<float>::RandVecs3D[idx | 2] * cellularJitter;
+
+ float newDistance = FastAbs(vecX) + FastAbs(vecY) + FastAbs(vecZ);
+
+ distance1 = FastMax(FastMin(distance1, newDistance), distance0);
+ if (newDistance < distance0)
+ {
+ distance0 = newDistance;
+ closestHash = hash;
+ }
+ zPrimed += PrimeZ;
+ }
+ yPrimed += PrimeY;
+ }
+ xPrimed += PrimeX;
+ }
+ break;
+ case CellularDistanceFunction_Hybrid:
+ for (int xi = xr - 1; xi <= xr + 1; xi++)
+ {
+ int yPrimed = yPrimedBase;
+
+ for (int yi = yr - 1; yi <= yr + 1; yi++)
+ {
+ int zPrimed = zPrimedBase;
+
+ for (int zi = zr - 1; zi <= zr + 1; zi++)
+ {
+ int hash = Hash(seed, xPrimed, yPrimed, zPrimed);
+ int idx = hash & (255 << 2);
+
+ float vecX = (float)(xi - x) + Lookup<float>::RandVecs3D[idx] * cellularJitter;
+ float vecY = (float)(yi - y) + Lookup<float>::RandVecs3D[idx | 1] * cellularJitter;
+ float vecZ = (float)(zi - z) + Lookup<float>::RandVecs3D[idx | 2] * cellularJitter;
+
+ float newDistance = (FastAbs(vecX) + FastAbs(vecY) + FastAbs(vecZ)) + (vecX * vecX + vecY * vecY + vecZ * vecZ);
+
+ distance1 = FastMax(FastMin(distance1, newDistance), distance0);
+ if (newDistance < distance0)
+ {
+ distance0 = newDistance;
+ closestHash = hash;
+ }
+ zPrimed += PrimeZ;
+ }
+ yPrimed += PrimeY;
+ }
+ xPrimed += PrimeX;
+ }
+ break;
+ default:
+ break;
+ }
+
+ if (mCellularDistanceFunction == CellularDistanceFunction_Euclidean && mCellularReturnType >= CellularReturnType_Distance)
+ {
+ distance0 = FastSqrt(distance0);
+
+ if (mCellularReturnType >= CellularReturnType_Distance2)
+ {
+ distance1 = FastSqrt(distance1);
+ }
+ }
+
+ switch (mCellularReturnType)
+ {
+ case CellularReturnType_CellValue:
+ return closestHash * (1 / 2147483648.0f);
+ case CellularReturnType_Distance:
+ return distance0 - 1;
+ case CellularReturnType_Distance2:
+ return distance1 - 1;
+ case CellularReturnType_Distance2Add:
+ return (distance1 + distance0) * 0.5f - 1;
+ case CellularReturnType_Distance2Sub:
+ return distance1 - distance0 - 1;
+ case CellularReturnType_Distance2Mul:
+ return distance1 * distance0 * 0.5f - 1;
+ case CellularReturnType_Distance2Div:
+ return distance0 / distance1 - 1;
+ default:
+ return 0;
+ }
+ }
+
+
+ // Perlin Noise
+
+ template <typename FNfloat>
+ float SinglePerlin(int seed, FNfloat x, FNfloat y)
+ {
+ int x0 = FastFloor(x);
+ int y0 = FastFloor(y);
+
+ float xd0 = (float)(x - x0);
+ float yd0 = (float)(y - y0);
+ float xd1 = xd0 - 1;
+ float yd1 = yd0 - 1;
+
+ float xs = InterpQuintic(xd0);
+ float ys = InterpQuintic(yd0);
+
+ x0 *= PrimeX;
+ y0 *= PrimeY;
+ int x1 = x0 + PrimeX;
+ int y1 = y0 + PrimeY;
+
+ float xf0 = Lerp(GradCoord(seed, x0, y0, xd0, yd0), GradCoord(seed, x1, y0, xd1, yd0), xs);
+ float xf1 = Lerp(GradCoord(seed, x0, y1, xd0, yd1), GradCoord(seed, x1, y1, xd1, yd1), xs);
+
+ return Lerp(xf0, xf1, ys) * 1.4247691104677813f;
+ }
+
+ template <typename FNfloat>
+ float SinglePerlin(int seed, FNfloat x, FNfloat y, FNfloat z)
+ {
+ int x0 = FastFloor(x);
+ int y0 = FastFloor(y);
+ int z0 = FastFloor(z);
+
+ float xd0 = (float)(x - x0);
+ float yd0 = (float)(y - y0);
+ float zd0 = (float)(z - z0);
+ float xd1 = xd0 - 1;
+ float yd1 = yd0 - 1;
+ float zd1 = zd0 - 1;
+
+ float xs = InterpQuintic(xd0);
+ float ys = InterpQuintic(yd0);
+ float zs = InterpQuintic(zd0);
+
+ x0 *= PrimeX;
+ y0 *= PrimeY;
+ z0 *= PrimeZ;
+ int x1 = x0 + PrimeX;
+ int y1 = y0 + PrimeY;
+ int z1 = z0 + PrimeZ;
+
+ float xf00 = Lerp(GradCoord(seed, x0, y0, z0, xd0, yd0, zd0), GradCoord(seed, x1, y0, z0, xd1, yd0, zd0), xs);
+ float xf10 = Lerp(GradCoord(seed, x0, y1, z0, xd0, yd1, zd0), GradCoord(seed, x1, y1, z0, xd1, yd1, zd0), xs);
+ float xf01 = Lerp(GradCoord(seed, x0, y0, z1, xd0, yd0, zd1), GradCoord(seed, x1, y0, z1, xd1, yd0, zd1), xs);
+ float xf11 = Lerp(GradCoord(seed, x0, y1, z1, xd0, yd1, zd1), GradCoord(seed, x1, y1, z1, xd1, yd1, zd1), xs);
+
+ float yf0 = Lerp(xf00, xf10, ys);
+ float yf1 = Lerp(xf01, xf11, ys);
+
+ return Lerp(yf0, yf1, zs) * 0.964921414852142333984375f;
+ }
+
+
+ // Value Cubic Noise
+
+ template <typename FNfloat>
+ float SingleValueCubic(int seed, FNfloat x, FNfloat y)
+ {
+ int x1 = FastFloor(x);
+ int y1 = FastFloor(y);
+
+ float xs = (float)(x - x1);
+ float ys = (float)(y - y1);
+
+ x1 *= PrimeX;
+ y1 *= PrimeY;
+ int x0 = x1 - PrimeX;
+ int y0 = y1 - PrimeY;
+ int x2 = x1 + PrimeX;
+ int y2 = y1 + PrimeY;
+ int x3 = x1 + (int)((long)PrimeX << 1);
+ int y3 = y1 + (int)((long)PrimeY << 1);
+
+ return CubicLerp(
+ CubicLerp(ValCoord(seed, x0, y0), ValCoord(seed, x1, y0), ValCoord(seed, x2, y0), ValCoord(seed, x3, y0),
+ xs),
+ CubicLerp(ValCoord(seed, x0, y1), ValCoord(seed, x1, y1), ValCoord(seed, x2, y1), ValCoord(seed, x3, y1),
+ xs),
+ CubicLerp(ValCoord(seed, x0, y2), ValCoord(seed, x1, y2), ValCoord(seed, x2, y2), ValCoord(seed, x3, y2),
+ xs),
+ CubicLerp(ValCoord(seed, x0, y3), ValCoord(seed, x1, y3), ValCoord(seed, x2, y3), ValCoord(seed, x3, y3),
+ xs),
+ ys) * (1 / (1.5f * 1.5f));
+ }
+
+ template <typename FNfloat>
+ float SingleValueCubic(int seed, FNfloat x, FNfloat y, FNfloat z)
+ {
+ int x1 = FastFloor(x);
+ int y1 = FastFloor(y);
+ int z1 = FastFloor(z);
+
+ float xs = (float)(x - x1);
+ float ys = (float)(y - y1);
+ float zs = (float)(z - z1);
+
+ x1 *= PrimeX;
+ y1 *= PrimeY;
+ z1 *= PrimeZ;
+
+ int x0 = x1 - PrimeX;
+ int y0 = y1 - PrimeY;
+ int z0 = z1 - PrimeZ;
+ int x2 = x1 + PrimeX;
+ int y2 = y1 + PrimeY;
+ int z2 = z1 + PrimeZ;
+ int x3 = x1 + (int)((long)PrimeX << 1);
+ int y3 = y1 + (int)((long)PrimeY << 1);
+ int z3 = z1 + (int)((long)PrimeZ << 1);
+
+
+ return CubicLerp(
+ CubicLerp(
+ CubicLerp(ValCoord(seed, x0, y0, z0), ValCoord(seed, x1, y0, z0), ValCoord(seed, x2, y0, z0), ValCoord(seed, x3, y0, z0), xs),
+ CubicLerp(ValCoord(seed, x0, y1, z0), ValCoord(seed, x1, y1, z0), ValCoord(seed, x2, y1, z0), ValCoord(seed, x3, y1, z0), xs),
+ CubicLerp(ValCoord(seed, x0, y2, z0), ValCoord(seed, x1, y2, z0), ValCoord(seed, x2, y2, z0), ValCoord(seed, x3, y2, z0), xs),
+ CubicLerp(ValCoord(seed, x0, y3, z0), ValCoord(seed, x1, y3, z0), ValCoord(seed, x2, y3, z0), ValCoord(seed, x3, y3, z0), xs),
+ ys),
+ CubicLerp(
+ CubicLerp(ValCoord(seed, x0, y0, z1), ValCoord(seed, x1, y0, z1), ValCoord(seed, x2, y0, z1), ValCoord(seed, x3, y0, z1), xs),
+ CubicLerp(ValCoord(seed, x0, y1, z1), ValCoord(seed, x1, y1, z1), ValCoord(seed, x2, y1, z1), ValCoord(seed, x3, y1, z1), xs),
+ CubicLerp(ValCoord(seed, x0, y2, z1), ValCoord(seed, x1, y2, z1), ValCoord(seed, x2, y2, z1), ValCoord(seed, x3, y2, z1), xs),
+ CubicLerp(ValCoord(seed, x0, y3, z1), ValCoord(seed, x1, y3, z1), ValCoord(seed, x2, y3, z1), ValCoord(seed, x3, y3, z1), xs),
+ ys),
+ CubicLerp(
+ CubicLerp(ValCoord(seed, x0, y0, z2), ValCoord(seed, x1, y0, z2), ValCoord(seed, x2, y0, z2), ValCoord(seed, x3, y0, z2), xs),
+ CubicLerp(ValCoord(seed, x0, y1, z2), ValCoord(seed, x1, y1, z2), ValCoord(seed, x2, y1, z2), ValCoord(seed, x3, y1, z2), xs),
+ CubicLerp(ValCoord(seed, x0, y2, z2), ValCoord(seed, x1, y2, z2), ValCoord(seed, x2, y2, z2), ValCoord(seed, x3, y2, z2), xs),
+ CubicLerp(ValCoord(seed, x0, y3, z2), ValCoord(seed, x1, y3, z2), ValCoord(seed, x2, y3, z2), ValCoord(seed, x3, y3, z2), xs),
+ ys),
+ CubicLerp(
+ CubicLerp(ValCoord(seed, x0, y0, z3), ValCoord(seed, x1, y0, z3), ValCoord(seed, x2, y0, z3), ValCoord(seed, x3, y0, z3), xs),
+ CubicLerp(ValCoord(seed, x0, y1, z3), ValCoord(seed, x1, y1, z3), ValCoord(seed, x2, y1, z3), ValCoord(seed, x3, y1, z3), xs),
+ CubicLerp(ValCoord(seed, x0, y2, z3), ValCoord(seed, x1, y2, z3), ValCoord(seed, x2, y2, z3), ValCoord(seed, x3, y2, z3), xs),
+ CubicLerp(ValCoord(seed, x0, y3, z3), ValCoord(seed, x1, y3, z3), ValCoord(seed, x2, y3, z3), ValCoord(seed, x3, y3, z3), xs),
+ ys),
+ zs) * (1 / (1.5f * 1.5f * 1.5f));
+ }
+
+
+ // Value Noise
+
+ template <typename FNfloat>
+ float SingleValue(int seed, FNfloat x, FNfloat y)
+ {
+ int x0 = FastFloor(x);
+ int y0 = FastFloor(y);
+
+ float xs = InterpHermite((float)(x - x0));
+ float ys = InterpHermite((float)(y - y0));
+
+ x0 *= PrimeX;
+ y0 *= PrimeY;
+ int x1 = x0 + PrimeX;
+ int y1 = y0 + PrimeY;
+
+ float xf0 = Lerp(ValCoord(seed, x0, y0), ValCoord(seed, x1, y0), xs);
+ float xf1 = Lerp(ValCoord(seed, x0, y1), ValCoord(seed, x1, y1), xs);
+
+ return Lerp(xf0, xf1, ys);
+ }
+
+ template <typename FNfloat>
+ float SingleValue(int seed, FNfloat x, FNfloat y, FNfloat z)
+ {
+ int x0 = FastFloor(x);
+ int y0 = FastFloor(y);
+ int z0 = FastFloor(z);
+
+ float xs = InterpHermite((float)(x - x0));
+ float ys = InterpHermite((float)(y - y0));
+ float zs = InterpHermite((float)(z - z0));
+
+ x0 *= PrimeX;
+ y0 *= PrimeY;
+ z0 *= PrimeZ;
+ int x1 = x0 + PrimeX;
+ int y1 = y0 + PrimeY;
+ int z1 = z0 + PrimeZ;
+
+ float xf00 = Lerp(ValCoord(seed, x0, y0, z0), ValCoord(seed, x1, y0, z0), xs);
+ float xf10 = Lerp(ValCoord(seed, x0, y1, z0), ValCoord(seed, x1, y1, z0), xs);
+ float xf01 = Lerp(ValCoord(seed, x0, y0, z1), ValCoord(seed, x1, y0, z1), xs);
+ float xf11 = Lerp(ValCoord(seed, x0, y1, z1), ValCoord(seed, x1, y1, z1), xs);
+
+ float yf0 = Lerp(xf00, xf10, ys);
+ float yf1 = Lerp(xf01, xf11, ys);
+
+ return Lerp(yf0, yf1, zs);
+ }
+
+
+ // Domain Warp
+
+ template <typename FNfloat>
+ void DoSingleDomainWarp(int seed, float amp, float freq, FNfloat x, FNfloat y, FNfloat& xr, FNfloat& yr)
+ {
+ switch (mDomainWarpType)
+ {
+ case DomainWarpType_OpenSimplex2:
+ SingleDomainWarpSimplexGradient(seed, amp * 38.283687591552734375f, freq, x, y, xr, yr, false);
+ break;
+ case DomainWarpType_OpenSimplex2Reduced:
+ SingleDomainWarpSimplexGradient(seed, amp * 16.0f, freq, x, y, xr, yr, true);
+ break;
+ case DomainWarpType_BasicGrid:
+ SingleDomainWarpBasicGrid(seed, amp, freq, x, y, xr, yr);
+ break;
+ }
+ }
+
+ template <typename FNfloat>
+ void DoSingleDomainWarp(int seed, float amp, float freq, FNfloat x, FNfloat y, FNfloat z, FNfloat& xr, FNfloat& yr, FNfloat& zr)
+ {
+ switch (mDomainWarpType)
+ {
+ case DomainWarpType_OpenSimplex2:
+ SingleDomainWarpOpenSimplex2Gradient(seed, amp * 32.69428253173828125f, freq, x, y, z, xr, yr, zr, false);
+ break;
+ case DomainWarpType_OpenSimplex2Reduced:
+ SingleDomainWarpOpenSimplex2Gradient(seed, amp * 7.71604938271605f, freq, x, y, z, xr, yr, zr, true);
+ break;
+ case DomainWarpType_BasicGrid:
+ SingleDomainWarpBasicGrid(seed, amp, freq, x, y, z, xr, yr, zr);
+ break;
+ }
+ }
+
+
+ // Domain Warp Single Wrapper
+
+ template <typename FNfloat>
+ void DomainWarpSingle(FNfloat& x, FNfloat& y)
+ {
+ int seed = mSeed;
+ float amp = mDomainWarpAmp * mFractalBounding;
+ float freq = mFrequency;
+
+ FNfloat xs = x;
+ FNfloat ys = y;
+ TransformDomainWarpCoordinate(xs, ys);
+
+ DoSingleDomainWarp(seed, amp, freq, xs, ys, x, y);
+ }
+
+ template <typename FNfloat>
+ void DomainWarpSingle(FNfloat& x, FNfloat& y, FNfloat& z)
+ {
+ int seed = mSeed;
+ float amp = mDomainWarpAmp * mFractalBounding;
+ float freq = mFrequency;
+
+ FNfloat xs = x;
+ FNfloat ys = y;
+ FNfloat zs = z;
+ TransformDomainWarpCoordinate(xs, ys, zs);
+
+ DoSingleDomainWarp(seed, amp, freq, xs, ys, zs, x, y, z);
+ }
+
+
+ // Domain Warp Fractal Progressive
+
+ template <typename FNfloat>
+ void DomainWarpFractalProgressive(FNfloat& x, FNfloat& y)
+ {
+ int seed = mSeed;
+ float amp = mDomainWarpAmp * mFractalBounding;
+ float freq = mFrequency;
+
+ for (int i = 0; i < mOctaves; i++)
+ {
+ FNfloat xs = x;
+ FNfloat ys = y;
+ TransformDomainWarpCoordinate(xs, ys);
+
+ DoSingleDomainWarp(seed, amp, freq, xs, ys, x, y);
+
+ seed++;
+ amp *= mGain;
+ freq *= mLacunarity;
+ }
+ }
+
+ template <typename FNfloat>
+ void DomainWarpFractalProgressive(FNfloat& x, FNfloat& y, FNfloat& z)
+ {
+ int seed = mSeed;
+ float amp = mDomainWarpAmp * mFractalBounding;
+ float freq = mFrequency;
+
+ for (int i = 0; i < mOctaves; i++)
+ {
+ FNfloat xs = x;
+ FNfloat ys = y;
+ FNfloat zs = z;
+ TransformDomainWarpCoordinate(xs, ys, zs);
+
+ DoSingleDomainWarp(seed, amp, freq, xs, ys, zs, x, y, z);
+
+ seed++;
+ amp *= mGain;
+ freq *= mLacunarity;
+ }
+ }
+
+
+ // Domain Warp Fractal Independant
+
+ template <typename FNfloat>
+ void DomainWarpFractalIndependent(FNfloat& x, FNfloat& y)
+ {
+ FNfloat xs = x;
+ FNfloat ys = y;
+ TransformDomainWarpCoordinate(xs, ys);
+
+ int seed = mSeed;
+ float amp = mDomainWarpAmp * mFractalBounding;
+ float freq = mFrequency;
+
+ for (int i = 0; i < mOctaves; i++)
+ {
+ DoSingleDomainWarp(seed, amp, freq, xs, ys, x, y);
+
+ seed++;
+ amp *= mGain;
+ freq *= mLacunarity;
+ }
+ }
+
+ template <typename FNfloat>
+ void DomainWarpFractalIndependent(FNfloat& x, FNfloat& y, FNfloat& z)
+ {
+ FNfloat xs = x;
+ FNfloat ys = y;
+ FNfloat zs = z;
+ TransformDomainWarpCoordinate(xs, ys, zs);
+
+ int seed = mSeed;
+ float amp = mDomainWarpAmp * mFractalBounding;
+ float freq = mFrequency;
+
+ for (int i = 0; i < mOctaves; i++)
+ {
+ DoSingleDomainWarp(seed, amp, freq, xs, ys, zs, x, y, z);
+
+ seed++;
+ amp *= mGain;
+ freq *= mLacunarity;
+ }
+ }
+
+
+ // Domain Warp Basic Grid
+
+ template <typename FNfloat>
+ void SingleDomainWarpBasicGrid(int seed, float warpAmp, float frequency, FNfloat x, FNfloat y, FNfloat& xr, FNfloat& yr)
+ {
+ FNfloat xf = x * frequency;
+ FNfloat yf = y * frequency;
+
+ int x0 = FastFloor(xf);
+ int y0 = FastFloor(yf);
+
+ float xs = InterpHermite((float)(xf - x0));
+ float ys = InterpHermite((float)(yf - y0));
+
+ x0 *= PrimeX;
+ y0 *= PrimeY;
+ int x1 = x0 + PrimeX;
+ int y1 = y0 + PrimeY;
+
+ int hash0 = Hash(seed, x0, y0) & (255 << 1);
+ int hash1 = Hash(seed, x1, y0) & (255 << 1);
+
+ float lx0x = Lerp(Lookup<float>::RandVecs2D[hash0], Lookup<float>::RandVecs2D[hash1], xs);
+ float ly0x = Lerp(Lookup<float>::RandVecs2D[hash0 | 1], Lookup<float>::RandVecs2D[hash1 | 1], xs);
+
+ hash0 = Hash(seed, x0, y1) & (255 << 1);
+ hash1 = Hash(seed, x1, y1) & (255 << 1);
+
+ float lx1x = Lerp(Lookup<float>::RandVecs2D[hash0], Lookup<float>::RandVecs2D[hash1], xs);
+ float ly1x = Lerp(Lookup<float>::RandVecs2D[hash0 | 1], Lookup<float>::RandVecs2D[hash1 | 1], xs);
+
+ xr += Lerp(lx0x, lx1x, ys) * warpAmp;
+ yr += Lerp(ly0x, ly1x, ys) * warpAmp;
+ }
+
+ template <typename FNfloat>
+ void SingleDomainWarpBasicGrid(int seed, float warpAmp, float frequency, FNfloat x, FNfloat y, FNfloat z, FNfloat& xr, FNfloat& yr, FNfloat& zr)
+ {
+ FNfloat xf = x * frequency;
+ FNfloat yf = y * frequency;
+ FNfloat zf = z * frequency;
+
+ int x0 = FastFloor(xf);
+ int y0 = FastFloor(yf);
+ int z0 = FastFloor(zf);
+
+ float xs = InterpHermite((float)(xf - x0));
+ float ys = InterpHermite((float)(yf - y0));
+ float zs = InterpHermite((float)(zf - z0));
+
+ x0 *= PrimeX;
+ y0 *= PrimeY;
+ z0 *= PrimeZ;
+ int x1 = x0 + PrimeX;
+ int y1 = y0 + PrimeY;
+ int z1 = z0 + PrimeZ;
+
+ int hash0 = Hash(seed, x0, y0, z0) & (255 << 2);
+ int hash1 = Hash(seed, x1, y0, z0) & (255 << 2);
+
+ float lx0x = Lerp(Lookup<float>::RandVecs3D[hash0], Lookup<float>::RandVecs3D[hash1], xs);
+ float ly0x = Lerp(Lookup<float>::RandVecs3D[hash0 | 1], Lookup<float>::RandVecs3D[hash1 | 1], xs);
+ float lz0x = Lerp(Lookup<float>::RandVecs3D[hash0 | 2], Lookup<float>::RandVecs3D[hash1 | 2], xs);
+
+ hash0 = Hash(seed, x0, y1, z0) & (255 << 2);
+ hash1 = Hash(seed, x1, y1, z0) & (255 << 2);
+
+ float lx1x = Lerp(Lookup<float>::RandVecs3D[hash0], Lookup<float>::RandVecs3D[hash1], xs);
+ float ly1x = Lerp(Lookup<float>::RandVecs3D[hash0 | 1], Lookup<float>::RandVecs3D[hash1 | 1], xs);
+ float lz1x = Lerp(Lookup<float>::RandVecs3D[hash0 | 2], Lookup<float>::RandVecs3D[hash1 | 2], xs);
+
+ float lx0y = Lerp(lx0x, lx1x, ys);
+ float ly0y = Lerp(ly0x, ly1x, ys);
+ float lz0y = Lerp(lz0x, lz1x, ys);
+
+ hash0 = Hash(seed, x0, y0, z1) & (255 << 2);
+ hash1 = Hash(seed, x1, y0, z1) & (255 << 2);
+
+ lx0x = Lerp(Lookup<float>::RandVecs3D[hash0], Lookup<float>::RandVecs3D[hash1], xs);
+ ly0x = Lerp(Lookup<float>::RandVecs3D[hash0 | 1], Lookup<float>::RandVecs3D[hash1 | 1], xs);
+ lz0x = Lerp(Lookup<float>::RandVecs3D[hash0 | 2], Lookup<float>::RandVecs3D[hash1 | 2], xs);
+
+ hash0 = Hash(seed, x0, y1, z1) & (255 << 2);
+ hash1 = Hash(seed, x1, y1, z1) & (255 << 2);
+
+ lx1x = Lerp(Lookup<float>::RandVecs3D[hash0], Lookup<float>::RandVecs3D[hash1], xs);
+ ly1x = Lerp(Lookup<float>::RandVecs3D[hash0 | 1], Lookup<float>::RandVecs3D[hash1 | 1], xs);
+ lz1x = Lerp(Lookup<float>::RandVecs3D[hash0 | 2], Lookup<float>::RandVecs3D[hash1 | 2], xs);
+
+ xr += Lerp(lx0y, Lerp(lx0x, lx1x, ys), zs) * warpAmp;
+ yr += Lerp(ly0y, Lerp(ly0x, ly1x, ys), zs) * warpAmp;
+ zr += Lerp(lz0y, Lerp(lz0x, lz1x, ys), zs) * warpAmp;
+ }
+
+
+ // Domain Warp Simplex/OpenSimplex2
+
+ template <typename FNfloat>
+ void SingleDomainWarpSimplexGradient(int seed, float warpAmp, float frequency, FNfloat x, FNfloat y, FNfloat& xr, FNfloat& yr, bool outGradOnly)
+ {
+ const float SQRT3 = 1.7320508075688772935274463415059f;
+ const float G2 = (3 - SQRT3) / 6;
+
+ x *= frequency;
+ y *= frequency;
+
+ /*
+ * --- Skew moved to TransformNoiseCoordinate method ---
+ * const FNfloat F2 = 0.5f * (SQRT3 - 1);
+ * FNfloat s = (x + y) * F2;
+ * x += s; y += s;
+ */
+
+ int i = FastFloor(x);
+ int j = FastFloor(y);
+ float xi = (float)(x - i);
+ float yi = (float)(y - j);
+
+ float t = (xi + yi) * G2;
+ float x0 = (float)(xi - t);
+ float y0 = (float)(yi - t);
+
+ i *= PrimeX;
+ j *= PrimeY;
+
+ float vx, vy;
+ vx = vy = 0;
+
+ float a = 0.5f - x0 * x0 - y0 * y0;
+ if (a > 0)
+ {
+ float aaaa = (a * a) * (a * a);
+ float xo, yo;
+ if (outGradOnly)
+ GradCoordOut(seed, i, j, xo, yo);
+ else
+ GradCoordDual(seed, i, j, x0, y0, xo, yo);
+ vx += aaaa * xo;
+ vy += aaaa * yo;
+ }
+
+ float c = (float)(2 * (1 - 2 * G2) * (1 / G2 - 2)) * t + ((float)(-2 * (1 - 2 * G2) * (1 - 2 * G2)) + a);
+ if (c > 0)
+ {
+ float x2 = x0 + (2 * (float)G2 - 1);
+ float y2 = y0 + (2 * (float)G2 - 1);
+ float cccc = (c * c) * (c * c);
+ float xo, yo;
+ if (outGradOnly)
+ GradCoordOut(seed, i + PrimeX, j + PrimeY, xo, yo);
+ else
+ GradCoordDual(seed, i + PrimeX, j + PrimeY, x2, y2, xo, yo);
+ vx += cccc * xo;
+ vy += cccc * yo;
+ }
+
+ if (y0 > x0)
+ {
+ float x1 = x0 + (float)G2;
+ float y1 = y0 + ((float)G2 - 1);
+ float b = 0.5f - x1 * x1 - y1 * y1;
+ if (b > 0)
+ {
+ float bbbb = (b * b) * (b * b);
+ float xo, yo;
+ if (outGradOnly)
+ GradCoordOut(seed, i, j + PrimeY, xo, yo);
+ else
+ GradCoordDual(seed, i, j + PrimeY, x1, y1, xo, yo);
+ vx += bbbb * xo;
+ vy += bbbb * yo;
+ }
+ }
+ else
+ {
+ float x1 = x0 + ((float)G2 - 1);
+ float y1 = y0 + (float)G2;
+ float b = 0.5f - x1 * x1 - y1 * y1;
+ if (b > 0)
+ {
+ float bbbb = (b * b) * (b * b);
+ float xo, yo;
+ if (outGradOnly)
+ GradCoordOut(seed, i + PrimeX, j, xo, yo);
+ else
+ GradCoordDual(seed, i + PrimeX, j, x1, y1, xo, yo);
+ vx += bbbb * xo;
+ vy += bbbb * yo;
+ }
+ }
+
+ xr += vx * warpAmp;
+ yr += vy * warpAmp;
+ }
+
+ template <typename FNfloat>
+ void SingleDomainWarpOpenSimplex2Gradient(int seed, float warpAmp, float frequency, FNfloat x, FNfloat y, FNfloat z, FNfloat& xr, FNfloat& yr, FNfloat& zr, bool outGradOnly)
+ {
+ x *= frequency;
+ y *= frequency;
+ z *= frequency;
+
+ /*
+ * --- Rotation moved to TransformDomainWarpCoordinate method ---
+ * const FNfloat R3 = (FNfloat)(2.0 / 3.0);
+ * FNfloat r = (x + y + z) * R3; // Rotation, not skew
+ * x = r - x; y = r - y; z = r - z;
+ */
+
+ int i = FastRound(x);
+ int j = FastRound(y);
+ int k = FastRound(z);
+ float x0 = (float)x - i;
+ float y0 = (float)y - j;
+ float z0 = (float)z - k;
+
+ int xNSign = (int)(-x0 - 1.0f) | 1;
+ int yNSign = (int)(-y0 - 1.0f) | 1;
+ int zNSign = (int)(-z0 - 1.0f) | 1;
+
+ float ax0 = xNSign * -x0;
+ float ay0 = yNSign * -y0;
+ float az0 = zNSign * -z0;
+
+ i *= PrimeX;
+ j *= PrimeY;
+ k *= PrimeZ;
+
+ float vx, vy, vz;
+ vx = vy = vz = 0;
+
+ float a = (0.6f - x0 * x0) - (y0 * y0 + z0 * z0);
+ for (int l = 0; l < 2; l++)
+ {
+ if (a > 0)
+ {
+ float aaaa = (a * a) * (a * a);
+ float xo, yo, zo;
+ if (outGradOnly)
+ GradCoordOut(seed, i, j, k, xo, yo, zo);
+ else
+ GradCoordDual(seed, i, j, k, x0, y0, z0, xo, yo, zo);
+ vx += aaaa * xo;
+ vy += aaaa * yo;
+ vz += aaaa * zo;
+ }
+
+ float b = a + 1;
+ int i1 = i;
+ int j1 = j;
+ int k1 = k;
+ float x1 = x0;
+ float y1 = y0;
+ float z1 = z0;
+
+ if (ax0 >= ay0 && ax0 >= az0)
+ {
+ x1 += xNSign;
+ b -= xNSign * 2 * x1;
+ i1 -= xNSign * PrimeX;
+ }
+ else if (ay0 > ax0 && ay0 >= az0)
+ {
+ y1 += yNSign;
+ b -= yNSign * 2 * y1;
+ j1 -= yNSign * PrimeY;
+ }
+ else
+ {
+ z1 += zNSign;
+ b -= zNSign * 2 * z1;
+ k1 -= zNSign * PrimeZ;
+ }
+
+ if (b > 0)
+ {
+ float bbbb = (b * b) * (b * b);
+ float xo, yo, zo;
+ if (outGradOnly)
+ GradCoordOut(seed, i1, j1, k1, xo, yo, zo);
+ else
+ GradCoordDual(seed, i1, j1, k1, x1, y1, z1, xo, yo, zo);
+ vx += bbbb * xo;
+ vy += bbbb * yo;
+ vz += bbbb * zo;
+ }
+
+ if (l == 1) break;
+
+ ax0 = 0.5f - ax0;
+ ay0 = 0.5f - ay0;
+ az0 = 0.5f - az0;
+
+ x0 = xNSign * ax0;
+ y0 = yNSign * ay0;
+ z0 = zNSign * az0;
+
+ a += (0.75f - ax0) - (ay0 + az0);
+
+ i += (xNSign >> 1) & PrimeX;
+ j += (yNSign >> 1) & PrimeY;
+ k += (zNSign >> 1) & PrimeZ;
+
+ xNSign = -xNSign;
+ yNSign = -yNSign;
+ zNSign = -zNSign;
+
+ seed += 1293373;
+ }
+
+ xr += vx * warpAmp;
+ yr += vy * warpAmp;
+ zr += vz * warpAmp;
+ }
+};
+
+template <>
+struct FastNoiseLite::Arguments_must_be_floating_point_values<float> {};
+template <>
+struct FastNoiseLite::Arguments_must_be_floating_point_values<double> {};
+template <>
+struct FastNoiseLite::Arguments_must_be_floating_point_values<long double> {};
+
+template <typename T>
+const T FastNoiseLite::Lookup<T>::Gradients2D[] =
+{
+ 0.130526192220052f, 0.99144486137381f, 0.38268343236509f, 0.923879532511287f, 0.608761429008721f, 0.793353340291235f, 0.793353340291235f, 0.608761429008721f,
+ 0.923879532511287f, 0.38268343236509f, 0.99144486137381f, 0.130526192220051f, 0.99144486137381f, -0.130526192220051f, 0.923879532511287f, -0.38268343236509f,
+ 0.793353340291235f, -0.60876142900872f, 0.608761429008721f, -0.793353340291235f, 0.38268343236509f, -0.923879532511287f, 0.130526192220052f, -0.99144486137381f,
+ -0.130526192220052f, -0.99144486137381f, -0.38268343236509f, -0.923879532511287f, -0.608761429008721f, -0.793353340291235f, -0.793353340291235f, -0.608761429008721f,
+ -0.923879532511287f, -0.38268343236509f, -0.99144486137381f, -0.130526192220052f, -0.99144486137381f, 0.130526192220051f, -0.923879532511287f, 0.38268343236509f,
+ -0.793353340291235f, 0.608761429008721f, -0.608761429008721f, 0.793353340291235f, -0.38268343236509f, 0.923879532511287f, -0.130526192220052f, 0.99144486137381f,
+ 0.130526192220052f, 0.99144486137381f, 0.38268343236509f, 0.923879532511287f, 0.608761429008721f, 0.793353340291235f, 0.793353340291235f, 0.608761429008721f,
+ 0.923879532511287f, 0.38268343236509f, 0.99144486137381f, 0.130526192220051f, 0.99144486137381f, -0.130526192220051f, 0.923879532511287f, -0.38268343236509f,
+ 0.793353340291235f, -0.60876142900872f, 0.608761429008721f, -0.793353340291235f, 0.38268343236509f, -0.923879532511287f, 0.130526192220052f, -0.99144486137381f,
+ -0.130526192220052f, -0.99144486137381f, -0.38268343236509f, -0.923879532511287f, -0.608761429008721f, -0.793353340291235f, -0.793353340291235f, -0.608761429008721f,
+ -0.923879532511287f, -0.38268343236509f, -0.99144486137381f, -0.130526192220052f, -0.99144486137381f, 0.130526192220051f, -0.923879532511287f, 0.38268343236509f,
+ -0.793353340291235f, 0.608761429008721f, -0.608761429008721f, 0.793353340291235f, -0.38268343236509f, 0.923879532511287f, -0.130526192220052f, 0.99144486137381f,
+ 0.130526192220052f, 0.99144486137381f, 0.38268343236509f, 0.923879532511287f, 0.608761429008721f, 0.793353340291235f, 0.793353340291235f, 0.608761429008721f,
+ 0.923879532511287f, 0.38268343236509f, 0.99144486137381f, 0.130526192220051f, 0.99144486137381f, -0.130526192220051f, 0.923879532511287f, -0.38268343236509f,
+ 0.793353340291235f, -0.60876142900872f, 0.608761429008721f, -0.793353340291235f, 0.38268343236509f, -0.923879532511287f, 0.130526192220052f, -0.99144486137381f,
+ -0.130526192220052f, -0.99144486137381f, -0.38268343236509f, -0.923879532511287f, -0.608761429008721f, -0.793353340291235f, -0.793353340291235f, -0.608761429008721f,
+ -0.923879532511287f, -0.38268343236509f, -0.99144486137381f, -0.130526192220052f, -0.99144486137381f, 0.130526192220051f, -0.923879532511287f, 0.38268343236509f,
+ -0.793353340291235f, 0.608761429008721f, -0.608761429008721f, 0.793353340291235f, -0.38268343236509f, 0.923879532511287f, -0.130526192220052f, 0.99144486137381f,
+ 0.130526192220052f, 0.99144486137381f, 0.38268343236509f, 0.923879532511287f, 0.608761429008721f, 0.793353340291235f, 0.793353340291235f, 0.608761429008721f,
+ 0.923879532511287f, 0.38268343236509f, 0.99144486137381f, 0.130526192220051f, 0.99144486137381f, -0.130526192220051f, 0.923879532511287f, -0.38268343236509f,
+ 0.793353340291235f, -0.60876142900872f, 0.608761429008721f, -0.793353340291235f, 0.38268343236509f, -0.923879532511287f, 0.130526192220052f, -0.99144486137381f,
+ -0.130526192220052f, -0.99144486137381f, -0.38268343236509f, -0.923879532511287f, -0.608761429008721f, -0.793353340291235f, -0.793353340291235f, -0.608761429008721f,
+ -0.923879532511287f, -0.38268343236509f, -0.99144486137381f, -0.130526192220052f, -0.99144486137381f, 0.130526192220051f, -0.923879532511287f, 0.38268343236509f,
+ -0.793353340291235f, 0.608761429008721f, -0.608761429008721f, 0.793353340291235f, -0.38268343236509f, 0.923879532511287f, -0.130526192220052f, 0.99144486137381f,
+ 0.130526192220052f, 0.99144486137381f, 0.38268343236509f, 0.923879532511287f, 0.608761429008721f, 0.793353340291235f, 0.793353340291235f, 0.608761429008721f,
+ 0.923879532511287f, 0.38268343236509f, 0.99144486137381f, 0.130526192220051f, 0.99144486137381f, -0.130526192220051f, 0.923879532511287f, -0.38268343236509f,
+ 0.793353340291235f, -0.60876142900872f, 0.608761429008721f, -0.793353340291235f, 0.38268343236509f, -0.923879532511287f, 0.130526192220052f, -0.99144486137381f,
+ -0.130526192220052f, -0.99144486137381f, -0.38268343236509f, -0.923879532511287f, -0.608761429008721f, -0.793353340291235f, -0.793353340291235f, -0.608761429008721f,
+ -0.923879532511287f, -0.38268343236509f, -0.99144486137381f, -0.130526192220052f, -0.99144486137381f, 0.130526192220051f, -0.923879532511287f, 0.38268343236509f,
+ -0.793353340291235f, 0.608761429008721f, -0.608761429008721f, 0.793353340291235f, -0.38268343236509f, 0.923879532511287f, -0.130526192220052f, 0.99144486137381f,
+ 0.38268343236509f, 0.923879532511287f, 0.923879532511287f, 0.38268343236509f, 0.923879532511287f, -0.38268343236509f, 0.38268343236509f, -0.923879532511287f,
+ -0.38268343236509f, -0.923879532511287f, -0.923879532511287f, -0.38268343236509f, -0.923879532511287f, 0.38268343236509f, -0.38268343236509f, 0.923879532511287f,
+};
+
+template <typename T>
+const T FastNoiseLite::Lookup<T>::RandVecs2D[] =
+{
+ -0.2700222198f, -0.9628540911f, 0.3863092627f, -0.9223693152f, 0.04444859006f, -0.999011673f, -0.5992523158f, -0.8005602176f, -0.7819280288f, 0.6233687174f, 0.9464672271f, 0.3227999196f, -0.6514146797f, -0.7587218957f, 0.9378472289f, 0.347048376f,
+ -0.8497875957f, -0.5271252623f, -0.879042592f, 0.4767432447f, -0.892300288f, -0.4514423508f, -0.379844434f, -0.9250503802f, -0.9951650832f, 0.0982163789f, 0.7724397808f, -0.6350880136f, 0.7573283322f, -0.6530343002f, -0.9928004525f, -0.119780055f,
+ -0.0532665713f, 0.9985803285f, 0.9754253726f, -0.2203300762f, -0.7665018163f, 0.6422421394f, 0.991636706f, 0.1290606184f, -0.994696838f, 0.1028503788f, -0.5379205513f, -0.84299554f, 0.5022815471f, -0.8647041387f, 0.4559821461f, -0.8899889226f,
+ -0.8659131224f, -0.5001944266f, 0.0879458407f, -0.9961252577f, -0.5051684983f, 0.8630207346f, 0.7753185226f, -0.6315704146f, -0.6921944612f, 0.7217110418f, -0.5191659449f, -0.8546734591f, 0.8978622882f, -0.4402764035f, -0.1706774107f, 0.9853269617f,
+ -0.9353430106f, -0.3537420705f, -0.9992404798f, 0.03896746794f, -0.2882064021f, -0.9575683108f, -0.9663811329f, 0.2571137995f, -0.8759714238f, -0.4823630009f, -0.8303123018f, -0.5572983775f, 0.05110133755f, -0.9986934731f, -0.8558373281f, -0.5172450752f,
+ 0.09887025282f, 0.9951003332f, 0.9189016087f, 0.3944867976f, -0.2439375892f, -0.9697909324f, -0.8121409387f, -0.5834613061f, -0.9910431363f, 0.1335421355f, 0.8492423985f, -0.5280031709f, -0.9717838994f, -0.2358729591f, 0.9949457207f, 0.1004142068f,
+ 0.6241065508f, -0.7813392434f, 0.662910307f, 0.7486988212f, -0.7197418176f, 0.6942418282f, -0.8143370775f, -0.5803922158f, 0.104521054f, -0.9945226741f, -0.1065926113f, -0.9943027784f, 0.445799684f, -0.8951327509f, 0.105547406f, 0.9944142724f,
+ -0.992790267f, 0.1198644477f, -0.8334366408f, 0.552615025f, 0.9115561563f, -0.4111755999f, 0.8285544909f, -0.5599084351f, 0.7217097654f, -0.6921957921f, 0.4940492677f, -0.8694339084f, -0.3652321272f, -0.9309164803f, -0.9696606758f, 0.2444548501f,
+ 0.08925509731f, -0.996008799f, 0.5354071276f, -0.8445941083f, -0.1053576186f, 0.9944343981f, -0.9890284586f, 0.1477251101f, 0.004856104961f, 0.9999882091f, 0.9885598478f, 0.1508291331f, 0.9286129562f, -0.3710498316f, -0.5832393863f, -0.8123003252f,
+ 0.3015207509f, 0.9534596146f, -0.9575110528f, 0.2883965738f, 0.9715802154f, -0.2367105511f, 0.229981792f, 0.9731949318f, 0.955763816f, -0.2941352207f, 0.740956116f, 0.6715534485f, -0.9971513787f, -0.07542630764f, 0.6905710663f, -0.7232645452f,
+ -0.290713703f, -0.9568100872f, 0.5912777791f, -0.8064679708f, -0.9454592212f, -0.325740481f, 0.6664455681f, 0.74555369f, 0.6236134912f, 0.7817328275f, 0.9126993851f, -0.4086316587f, -0.8191762011f, 0.5735419353f, -0.8812745759f, -0.4726046147f,
+ 0.9953313627f, 0.09651672651f, 0.9855650846f, -0.1692969699f, -0.8495980887f, 0.5274306472f, 0.6174853946f, -0.7865823463f, 0.8508156371f, 0.52546432f, 0.9985032451f, -0.05469249926f, 0.1971371563f, -0.9803759185f, 0.6607855748f, -0.7505747292f,
+ -0.03097494063f, 0.9995201614f, -0.6731660801f, 0.739491331f, -0.7195018362f, -0.6944905383f, 0.9727511689f, 0.2318515979f, 0.9997059088f, -0.0242506907f, 0.4421787429f, -0.8969269532f, 0.9981350961f, -0.061043673f, -0.9173660799f, -0.3980445648f,
+ -0.8150056635f, -0.5794529907f, -0.8789331304f, 0.4769450202f, 0.0158605829f, 0.999874213f, -0.8095464474f, 0.5870558317f, -0.9165898907f, -0.3998286786f, -0.8023542565f, 0.5968480938f, -0.5176737917f, 0.8555780767f, -0.8154407307f, -0.5788405779f,
+ 0.4022010347f, -0.9155513791f, -0.9052556868f, -0.4248672045f, 0.7317445619f, 0.6815789728f, -0.5647632201f, -0.8252529947f, -0.8403276335f, -0.5420788397f, -0.9314281527f, 0.363925262f, 0.5238198472f, 0.8518290719f, 0.7432803869f, -0.6689800195f,
+ -0.985371561f, -0.1704197369f, 0.4601468731f, 0.88784281f, 0.825855404f, 0.5638819483f, 0.6182366099f, 0.7859920446f, 0.8331502863f, -0.553046653f, 0.1500307506f, 0.9886813308f, -0.662330369f, -0.7492119075f, -0.668598664f, 0.743623444f,
+ 0.7025606278f, 0.7116238924f, -0.5419389763f, -0.8404178401f, -0.3388616456f, 0.9408362159f, 0.8331530315f, 0.5530425174f, -0.2989720662f, -0.9542618632f, 0.2638522993f, 0.9645630949f, 0.124108739f, -0.9922686234f, -0.7282649308f, -0.6852956957f,
+ 0.6962500149f, 0.7177993569f, -0.9183535368f, 0.3957610156f, -0.6326102274f, -0.7744703352f, -0.9331891859f, -0.359385508f, -0.1153779357f, -0.9933216659f, 0.9514974788f, -0.3076565421f, -0.08987977445f, -0.9959526224f, 0.6678496916f, 0.7442961705f,
+ 0.7952400393f, -0.6062947138f, -0.6462007402f, -0.7631674805f, -0.2733598753f, 0.9619118351f, 0.9669590226f, -0.254931851f, -0.9792894595f, 0.2024651934f, -0.5369502995f, -0.8436138784f, -0.270036471f, -0.9628500944f, -0.6400277131f, 0.7683518247f,
+ -0.7854537493f, -0.6189203566f, 0.06005905383f, -0.9981948257f, -0.02455770378f, 0.9996984141f, -0.65983623f, 0.751409442f, -0.6253894466f, -0.7803127835f, -0.6210408851f, -0.7837781695f, 0.8348888491f, 0.5504185768f, -0.1592275245f, 0.9872419133f,
+ 0.8367622488f, 0.5475663786f, -0.8675753916f, -0.4973056806f, -0.2022662628f, -0.9793305667f, 0.9399189937f, 0.3413975472f, 0.9877404807f, -0.1561049093f, -0.9034455656f, 0.4287028224f, 0.1269804218f, -0.9919052235f, -0.3819600854f, 0.924178821f,
+ 0.9754625894f, 0.2201652486f, -0.3204015856f, -0.9472818081f, -0.9874760884f, 0.1577687387f, 0.02535348474f, -0.9996785487f, 0.4835130794f, -0.8753371362f, -0.2850799925f, -0.9585037287f, -0.06805516006f, -0.99768156f, -0.7885244045f, -0.6150034663f,
+ 0.3185392127f, -0.9479096845f, 0.8880043089f, 0.4598351306f, 0.6476921488f, -0.7619021462f, 0.9820241299f, 0.1887554194f, 0.9357275128f, -0.3527237187f, -0.8894895414f, 0.4569555293f, 0.7922791302f, 0.6101588153f, 0.7483818261f, 0.6632681526f,
+ -0.7288929755f, -0.6846276581f, 0.8729032783f, -0.4878932944f, 0.8288345784f, 0.5594937369f, 0.08074567077f, 0.9967347374f, 0.9799148216f, -0.1994165048f, -0.580730673f, -0.8140957471f, -0.4700049791f, -0.8826637636f, 0.2409492979f, 0.9705377045f,
+ 0.9437816757f, -0.3305694308f, -0.8927998638f, -0.4504535528f, -0.8069622304f, 0.5906030467f, 0.06258973166f, 0.9980393407f, -0.9312597469f, 0.3643559849f, 0.5777449785f, 0.8162173362f, -0.3360095855f, -0.941858566f, 0.697932075f, -0.7161639607f,
+ -0.002008157227f, -0.9999979837f, -0.1827294312f, -0.9831632392f, -0.6523911722f, 0.7578824173f, -0.4302626911f, -0.9027037258f, -0.9985126289f, -0.05452091251f, -0.01028102172f, -0.9999471489f, -0.4946071129f, 0.8691166802f, -0.2999350194f, 0.9539596344f,
+ 0.8165471961f, 0.5772786819f, 0.2697460475f, 0.962931498f, -0.7306287391f, -0.6827749597f, -0.7590952064f, -0.6509796216f, -0.907053853f, 0.4210146171f, -0.5104861064f, -0.8598860013f, 0.8613350597f, 0.5080373165f, 0.5007881595f, -0.8655698812f,
+ -0.654158152f, 0.7563577938f, -0.8382755311f, -0.545246856f, 0.6940070834f, 0.7199681717f, 0.06950936031f, 0.9975812994f, 0.1702942185f, -0.9853932612f, 0.2695973274f, 0.9629731466f, 0.5519612192f, -0.8338697815f, 0.225657487f, -0.9742067022f,
+ 0.4215262855f, -0.9068161835f, 0.4881873305f, -0.8727388672f, -0.3683854996f, -0.9296731273f, -0.9825390578f, 0.1860564427f, 0.81256471f, 0.5828709909f, 0.3196460933f, -0.9475370046f, 0.9570913859f, 0.2897862643f, -0.6876655497f, -0.7260276109f,
+ -0.9988770922f, -0.047376731f, -0.1250179027f, 0.992154486f, -0.8280133617f, 0.560708367f, 0.9324863769f, -0.3612051451f, 0.6394653183f, 0.7688199442f, -0.01623847064f, -0.9998681473f, -0.9955014666f, -0.09474613458f, -0.81453315f, 0.580117012f,
+ 0.4037327978f, -0.9148769469f, 0.9944263371f, 0.1054336766f, -0.1624711654f, 0.9867132919f, -0.9949487814f, -0.100383875f, -0.6995302564f, 0.7146029809f, 0.5263414922f, -0.85027327f, -0.5395221479f, 0.841971408f, 0.6579370318f, 0.7530729462f,
+ 0.01426758847f, -0.9998982128f, -0.6734383991f, 0.7392433447f, 0.639412098f, -0.7688642071f, 0.9211571421f, 0.3891908523f, -0.146637214f, -0.9891903394f, -0.782318098f, 0.6228791163f, -0.5039610839f, -0.8637263605f, -0.7743120191f, -0.6328039957f,
+};
+
+template <typename T>
+const T FastNoiseLite::Lookup<T>::Gradients3D[] =
+{
+ 0, 1, 1, 0, 0,-1, 1, 0, 0, 1,-1, 0, 0,-1,-1, 0,
+ 1, 0, 1, 0, -1, 0, 1, 0, 1, 0,-1, 0, -1, 0,-1, 0,
+ 1, 1, 0, 0, -1, 1, 0, 0, 1,-1, 0, 0, -1,-1, 0, 0,
+ 0, 1, 1, 0, 0,-1, 1, 0, 0, 1,-1, 0, 0,-1,-1, 0,
+ 1, 0, 1, 0, -1, 0, 1, 0, 1, 0,-1, 0, -1, 0,-1, 0,
+ 1, 1, 0, 0, -1, 1, 0, 0, 1,-1, 0, 0, -1,-1, 0, 0,
+ 0, 1, 1, 0, 0,-1, 1, 0, 0, 1,-1, 0, 0,-1,-1, 0,
+ 1, 0, 1, 0, -1, 0, 1, 0, 1, 0,-1, 0, -1, 0,-1, 0,
+ 1, 1, 0, 0, -1, 1, 0, 0, 1,-1, 0, 0, -1,-1, 0, 0,
+ 0, 1, 1, 0, 0,-1, 1, 0, 0, 1,-1, 0, 0,-1,-1, 0,
+ 1, 0, 1, 0, -1, 0, 1, 0, 1, 0,-1, 0, -1, 0,-1, 0,
+ 1, 1, 0, 0, -1, 1, 0, 0, 1,-1, 0, 0, -1,-1, 0, 0,
+ 0, 1, 1, 0, 0,-1, 1, 0, 0, 1,-1, 0, 0,-1,-1, 0,
+ 1, 0, 1, 0, -1, 0, 1, 0, 1, 0,-1, 0, -1, 0,-1, 0,
+ 1, 1, 0, 0, -1, 1, 0, 0, 1,-1, 0, 0, -1,-1, 0, 0,
+ 1, 1, 0, 0, 0,-1, 1, 0, -1, 1, 0, 0, 0,-1,-1, 0
+};
+
+template <typename T>
+const T FastNoiseLite::Lookup<T>::RandVecs3D[] =
+{
+ -0.7292736885f, -0.6618439697f, 0.1735581948f, 0, 0.790292081f, -0.5480887466f, -0.2739291014f, 0, 0.7217578935f, 0.6226212466f, -0.3023380997f, 0, 0.565683137f, -0.8208298145f, -0.0790000257f, 0, 0.760049034f, -0.5555979497f, -0.3370999617f, 0, 0.3713945616f, 0.5011264475f, 0.7816254623f, 0, -0.1277062463f, -0.4254438999f, -0.8959289049f, 0, -0.2881560924f, -0.5815838982f, 0.7607405838f, 0,
+ 0.5849561111f, -0.662820239f, -0.4674352136f, 0, 0.3307171178f, 0.0391653737f, 0.94291689f, 0, 0.8712121778f, -0.4113374369f, -0.2679381538f, 0, 0.580981015f, 0.7021915846f, 0.4115677815f, 0, 0.503756873f, 0.6330056931f, -0.5878203852f, 0, 0.4493712205f, 0.601390195f, 0.6606022552f, 0, -0.6878403724f, 0.09018890807f, -0.7202371714f, 0, -0.5958956522f, -0.6469350577f, 0.475797649f, 0,
+ -0.5127052122f, 0.1946921978f, -0.8361987284f, 0, -0.9911507142f, -0.05410276466f, -0.1212153153f, 0, -0.2149721042f, 0.9720882117f, -0.09397607749f, 0, -0.7518650936f, -0.5428057603f, 0.3742469607f, 0, 0.5237068895f, 0.8516377189f, -0.02107817834f, 0, 0.6333504779f, 0.1926167129f, -0.7495104896f, 0, -0.06788241606f, 0.3998305789f, 0.9140719259f, 0, -0.5538628599f, -0.4729896695f, -0.6852128902f, 0,
+ -0.7261455366f, -0.5911990757f, 0.3509933228f, 0, -0.9229274737f, -0.1782808786f, 0.3412049336f, 0, -0.6968815002f, 0.6511274338f, 0.3006480328f, 0, 0.9608044783f, -0.2098363234f, -0.1811724921f, 0, 0.06817146062f, -0.9743405129f, 0.2145069156f, 0, -0.3577285196f, -0.6697087264f, -0.6507845481f, 0, -0.1868621131f, 0.7648617052f, -0.6164974636f, 0, -0.6541697588f, 0.3967914832f, 0.6439087246f, 0,
+ 0.6993340405f, -0.6164538506f, 0.3618239211f, 0, -0.1546665739f, 0.6291283928f, 0.7617583057f, 0, -0.6841612949f, -0.2580482182f, -0.6821542638f, 0, 0.5383980957f, 0.4258654885f, 0.7271630328f, 0, -0.5026987823f, -0.7939832935f, -0.3418836993f, 0, 0.3202971715f, 0.2834415347f, 0.9039195862f, 0, 0.8683227101f, -0.0003762656404f, -0.4959995258f, 0, 0.791120031f, -0.08511045745f, 0.6057105799f, 0,
+ -0.04011016052f, -0.4397248749f, 0.8972364289f, 0, 0.9145119872f, 0.3579346169f, -0.1885487608f, 0, -0.9612039066f, -0.2756484276f, 0.01024666929f, 0, 0.6510361721f, -0.2877799159f, -0.7023778346f, 0, -0.2041786351f, 0.7365237271f, 0.644859585f, 0, -0.7718263711f, 0.3790626912f, 0.5104855816f, 0, -0.3060082741f, -0.7692987727f, 0.5608371729f, 0, 0.454007341f, -0.5024843065f, 0.7357899537f, 0,
+ 0.4816795475f, 0.6021208291f, -0.6367380315f, 0, 0.6961980369f, -0.3222197429f, 0.641469197f, 0, -0.6532160499f, -0.6781148932f, 0.3368515753f, 0, 0.5089301236f, -0.6154662304f, -0.6018234363f, 0, -0.1635919754f, -0.9133604627f, -0.372840892f, 0, 0.52408019f, -0.8437664109f, 0.1157505864f, 0, 0.5902587356f, 0.4983817807f, -0.6349883666f, 0, 0.5863227872f, 0.494764745f, 0.6414307729f, 0,
+ 0.6779335087f, 0.2341345225f, 0.6968408593f, 0, 0.7177054546f, -0.6858979348f, 0.120178631f, 0, -0.5328819713f, -0.5205125012f, 0.6671608058f, 0, -0.8654874251f, -0.0700727088f, -0.4960053754f, 0, -0.2861810166f, 0.7952089234f, 0.5345495242f, 0, -0.04849529634f, 0.9810836427f, -0.1874115585f, 0, -0.6358521667f, 0.6058348682f, 0.4781800233f, 0, 0.6254794696f, -0.2861619734f, 0.7258696564f, 0,
+ -0.2585259868f, 0.5061949264f, -0.8227581726f, 0, 0.02136306781f, 0.5064016808f, -0.8620330371f, 0, 0.200111773f, 0.8599263484f, 0.4695550591f, 0, 0.4743561372f, 0.6014985084f, -0.6427953014f, 0, 0.6622993731f, -0.5202474575f, -0.5391679918f, 0, 0.08084972818f, -0.6532720452f, 0.7527940996f, 0, -0.6893687501f, 0.0592860349f, 0.7219805347f, 0, -0.1121887082f, -0.9673185067f, 0.2273952515f, 0,
+ 0.7344116094f, 0.5979668656f, -0.3210532909f, 0, 0.5789393465f, -0.2488849713f, 0.7764570201f, 0, 0.6988182827f, 0.3557169806f, -0.6205791146f, 0, -0.8636845529f, -0.2748771249f, -0.4224826141f, 0, -0.4247027957f, -0.4640880967f, 0.777335046f, 0, 0.5257722489f, -0.8427017621f, 0.1158329937f, 0, 0.9343830603f, 0.316302472f, -0.1639543925f, 0, -0.1016836419f, -0.8057303073f, -0.5834887393f, 0,
+ -0.6529238969f, 0.50602126f, -0.5635892736f, 0, -0.2465286165f, -0.9668205684f, -0.06694497494f, 0, -0.9776897119f, -0.2099250524f, -0.007368825344f, 0, 0.7736893337f, 0.5734244712f, 0.2694238123f, 0, -0.6095087895f, 0.4995678998f, 0.6155736747f, 0, 0.5794535482f, 0.7434546771f, 0.3339292269f, 0, -0.8226211154f, 0.08142581855f, 0.5627293636f, 0, -0.510385483f, 0.4703667658f, 0.7199039967f, 0,
+ -0.5764971849f, -0.07231656274f, -0.8138926898f, 0, 0.7250628871f, 0.3949971505f, -0.5641463116f, 0, -0.1525424005f, 0.4860840828f, -0.8604958341f, 0, -0.5550976208f, -0.4957820792f, 0.667882296f, 0, -0.1883614327f, 0.9145869398f, 0.357841725f, 0, 0.7625556724f, -0.5414408243f, -0.3540489801f, 0, -0.5870231946f, -0.3226498013f, -0.7424963803f, 0, 0.3051124198f, 0.2262544068f, -0.9250488391f, 0,
+ 0.6379576059f, 0.577242424f, -0.5097070502f, 0, -0.5966775796f, 0.1454852398f, -0.7891830656f, 0, -0.658330573f, 0.6555487542f, -0.3699414651f, 0, 0.7434892426f, 0.2351084581f, 0.6260573129f, 0, 0.5562114096f, 0.8264360377f, -0.0873632843f, 0, -0.3028940016f, -0.8251527185f, 0.4768419182f, 0, 0.1129343818f, -0.985888439f, -0.1235710781f, 0, 0.5937652891f, -0.5896813806f, 0.5474656618f, 0,
+ 0.6757964092f, -0.5835758614f, -0.4502648413f, 0, 0.7242302609f, -0.1152719764f, 0.6798550586f, 0, -0.9511914166f, 0.0753623979f, -0.2992580792f, 0, 0.2539470961f, -0.1886339355f, 0.9486454084f, 0, 0.571433621f, -0.1679450851f, -0.8032795685f, 0, -0.06778234979f, 0.3978269256f, 0.9149531629f, 0, 0.6074972649f, 0.733060024f, -0.3058922593f, 0, -0.5435478392f, 0.1675822484f, 0.8224791405f, 0,
+ -0.5876678086f, -0.3380045064f, -0.7351186982f, 0, -0.7967562402f, 0.04097822706f, -0.6029098428f, 0, -0.1996350917f, 0.8706294745f, 0.4496111079f, 0, -0.02787660336f, -0.9106232682f, -0.4122962022f, 0, -0.7797625996f, -0.6257634692f, 0.01975775581f, 0, -0.5211232846f, 0.7401644346f, -0.4249554471f, 0, 0.8575424857f, 0.4053272873f, -0.3167501783f, 0, 0.1045223322f, 0.8390195772f, -0.5339674439f, 0,
+ 0.3501822831f, 0.9242524096f, -0.1520850155f, 0, 0.1987849858f, 0.07647613266f, 0.9770547224f, 0, 0.7845996363f, 0.6066256811f, -0.1280964233f, 0, 0.09006737436f, -0.9750989929f, -0.2026569073f, 0, -0.8274343547f, -0.542299559f, 0.1458203587f, 0, -0.3485797732f, -0.415802277f, 0.840000362f, 0, -0.2471778936f, -0.7304819962f, -0.6366310879f, 0, -0.3700154943f, 0.8577948156f, 0.3567584454f, 0,
+ 0.5913394901f, -0.548311967f, -0.5913303597f, 0, 0.1204873514f, -0.7626472379f, -0.6354935001f, 0, 0.616959265f, 0.03079647928f, 0.7863922953f, 0, 0.1258156836f, -0.6640829889f, -0.7369967419f, 0, -0.6477565124f, -0.1740147258f, -0.7417077429f, 0, 0.6217889313f, -0.7804430448f, -0.06547655076f, 0, 0.6589943422f, -0.6096987708f, 0.4404473475f, 0, -0.2689837504f, -0.6732403169f, -0.6887635427f, 0,
+ -0.3849775103f, 0.5676542638f, 0.7277093879f, 0, 0.5754444408f, 0.8110471154f, -0.1051963504f, 0, 0.9141593684f, 0.3832947817f, 0.131900567f, 0, -0.107925319f, 0.9245493968f, 0.3654593525f, 0, 0.377977089f, 0.3043148782f, 0.8743716458f, 0, -0.2142885215f, -0.8259286236f, 0.5214617324f, 0, 0.5802544474f, 0.4148098596f, -0.7008834116f, 0, -0.1982660881f, 0.8567161266f, -0.4761596756f, 0,
+ -0.03381553704f, 0.3773180787f, -0.9254661404f, 0, -0.6867922841f, -0.6656597827f, 0.2919133642f, 0, 0.7731742607f, -0.2875793547f, -0.5652430251f, 0, -0.09655941928f, 0.9193708367f, -0.3813575004f, 0, 0.2715702457f, -0.9577909544f, -0.09426605581f, 0, 0.2451015704f, -0.6917998565f, -0.6792188003f, 0, 0.977700782f, -0.1753855374f, 0.1155036542f, 0, -0.5224739938f, 0.8521606816f, 0.02903615945f, 0,
+ -0.7734880599f, -0.5261292347f, 0.3534179531f, 0, -0.7134492443f, -0.269547243f, 0.6467878011f, 0, 0.1644037271f, 0.5105846203f, -0.8439637196f, 0, 0.6494635788f, 0.05585611296f, 0.7583384168f, 0, -0.4711970882f, 0.5017280509f, -0.7254255765f, 0, -0.6335764307f, -0.2381686273f, -0.7361091029f, 0, -0.9021533097f, -0.270947803f, -0.3357181763f, 0, -0.3793711033f, 0.872258117f, 0.3086152025f, 0,
+ -0.6855598966f, -0.3250143309f, 0.6514394162f, 0, 0.2900942212f, -0.7799057743f, -0.5546100667f, 0, -0.2098319339f, 0.85037073f, 0.4825351604f, 0, -0.4592603758f, 0.6598504336f, -0.5947077538f, 0, 0.8715945488f, 0.09616365406f, -0.4807031248f, 0, -0.6776666319f, 0.7118504878f, -0.1844907016f, 0, 0.7044377633f, 0.312427597f, 0.637304036f, 0, -0.7052318886f, -0.2401093292f, -0.6670798253f, 0,
+ 0.081921007f, -0.7207336136f, -0.6883545647f, 0, -0.6993680906f, -0.5875763221f, -0.4069869034f, 0, -0.1281454481f, 0.6419895885f, 0.7559286424f, 0, -0.6337388239f, -0.6785471501f, -0.3714146849f, 0, 0.5565051903f, -0.2168887573f, -0.8020356851f, 0, -0.5791554484f, 0.7244372011f, -0.3738578718f, 0, 0.1175779076f, -0.7096451073f, 0.6946792478f, 0, -0.6134619607f, 0.1323631078f, 0.7785527795f, 0,
+ 0.6984635305f, -0.02980516237f, -0.715024719f, 0, 0.8318082963f, -0.3930171956f, 0.3919597455f, 0, 0.1469576422f, 0.05541651717f, -0.9875892167f, 0, 0.708868575f, -0.2690503865f, 0.6520101478f, 0, 0.2726053183f, 0.67369766f, -0.68688995f, 0, -0.6591295371f, 0.3035458599f, -0.6880466294f, 0, 0.4815131379f, -0.7528270071f, 0.4487723203f, 0, 0.9430009463f, 0.1675647412f, -0.2875261255f, 0,
+ 0.434802957f, 0.7695304522f, -0.4677277752f, 0, 0.3931996188f, 0.594473625f, 0.7014236729f, 0, 0.7254336655f, -0.603925654f, 0.3301814672f, 0, 0.7590235227f, -0.6506083235f, 0.02433313207f, 0, -0.8552768592f, -0.3430042733f, 0.3883935666f, 0, -0.6139746835f, 0.6981725247f, 0.3682257648f, 0, -0.7465905486f, -0.5752009504f, 0.3342849376f, 0, 0.5730065677f, 0.810555537f, -0.1210916791f, 0,
+ -0.9225877367f, -0.3475211012f, -0.167514036f, 0, -0.7105816789f, -0.4719692027f, -0.5218416899f, 0, -0.08564609717f, 0.3583001386f, 0.929669703f, 0, -0.8279697606f, -0.2043157126f, 0.5222271202f, 0, 0.427944023f, 0.278165994f, 0.8599346446f, 0, 0.5399079671f, -0.7857120652f, -0.3019204161f, 0, 0.5678404253f, -0.5495413974f, -0.6128307303f, 0, -0.9896071041f, 0.1365639107f, -0.04503418428f, 0,
+ -0.6154342638f, -0.6440875597f, 0.4543037336f, 0, 0.1074204368f, -0.7946340692f, 0.5975094525f, 0, -0.3595449969f, -0.8885529948f, 0.28495784f, 0, -0.2180405296f, 0.1529888965f, 0.9638738118f, 0, -0.7277432317f, -0.6164050508f, -0.3007234646f, 0, 0.7249729114f, -0.00669719484f, 0.6887448187f, 0, -0.5553659455f, -0.5336586252f, 0.6377908264f, 0, 0.5137558015f, 0.7976208196f, -0.3160000073f, 0,
+ -0.3794024848f, 0.9245608561f, -0.03522751494f, 0, 0.8229248658f, 0.2745365933f, -0.4974176556f, 0, -0.5404114394f, 0.6091141441f, 0.5804613989f, 0, 0.8036581901f, -0.2703029469f, 0.5301601931f, 0, 0.6044318879f, 0.6832968393f, 0.4095943388f, 0, 0.06389988817f, 0.9658208605f, -0.2512108074f, 0, 0.1087113286f, 0.7402471173f, -0.6634877936f, 0, -0.713427712f, -0.6926784018f, 0.1059128479f, 0,
+ 0.6458897819f, -0.5724548511f, -0.5050958653f, 0, -0.6553931414f, 0.7381471625f, 0.159995615f, 0, 0.3910961323f, 0.9188871375f, -0.05186755998f, 0, -0.4879022471f, -0.5904376907f, 0.6429111375f, 0, 0.6014790094f, 0.7707441366f, -0.2101820095f, 0, -0.5677173047f, 0.7511360995f, 0.3368851762f, 0, 0.7858573506f, 0.226674665f, 0.5753666838f, 0, -0.4520345543f, -0.604222686f, -0.6561857263f, 0,
+ 0.002272116345f, 0.4132844051f, -0.9105991643f, 0, -0.5815751419f, -0.5162925989f, 0.6286591339f, 0, -0.03703704785f, 0.8273785755f, 0.5604221175f, 0, -0.5119692504f, 0.7953543429f, -0.3244980058f, 0, -0.2682417366f, -0.9572290247f, -0.1084387619f, 0, -0.2322482736f, -0.9679131102f, -0.09594243324f, 0, 0.3554328906f, -0.8881505545f, 0.2913006227f, 0, 0.7346520519f, -0.4371373164f, 0.5188422971f, 0,
+ 0.9985120116f, 0.04659011161f, -0.02833944577f, 0, -0.3727687496f, -0.9082481361f, 0.1900757285f, 0, 0.91737377f, -0.3483642108f, 0.1925298489f, 0, 0.2714911074f, 0.4147529736f, -0.8684886582f, 0, 0.5131763485f, -0.7116334161f, 0.4798207128f, 0, -0.8737353606f, 0.18886992f, -0.4482350644f, 0, 0.8460043821f, -0.3725217914f, 0.3814499973f, 0, 0.8978727456f, -0.1780209141f, -0.4026575304f, 0,
+ 0.2178065647f, -0.9698322841f, -0.1094789531f, 0, -0.1518031304f, -0.7788918132f, -0.6085091231f, 0, -0.2600384876f, -0.4755398075f, -0.8403819825f, 0, 0.572313509f, -0.7474340931f, -0.3373418503f, 0, -0.7174141009f, 0.1699017182f, -0.6756111411f, 0, -0.684180784f, 0.02145707593f, -0.7289967412f, 0, -0.2007447902f, 0.06555605789f, -0.9774476623f, 0, -0.1148803697f, -0.8044887315f, 0.5827524187f, 0,
+ -0.7870349638f, 0.03447489231f, 0.6159443543f, 0, -0.2015596421f, 0.6859872284f, 0.6991389226f, 0, -0.08581082512f, -0.10920836f, -0.9903080513f, 0, 0.5532693395f, 0.7325250401f, -0.396610771f, 0, -0.1842489331f, -0.9777375055f, -0.1004076743f, 0, 0.0775473789f, -0.9111505856f, 0.4047110257f, 0, 0.1399838409f, 0.7601631212f, -0.6344734459f, 0, 0.4484419361f, -0.845289248f, 0.2904925424f, 0
+};
+
+}
+#endif // namespace fastnoiselite
diff --git a/thirdparty/noise/patches/FastNoiseLite.patch b/thirdparty/noise/patches/FastNoiseLite.patch
new file mode 100644
index 0000000000..acb1edfd73
--- /dev/null
+++ b/thirdparty/noise/patches/FastNoiseLite.patch
@@ -0,0 +1,18 @@
+--- orig/FastNoiseLite.h 1900-01-00 00:00:00 +0000
++++ noise/FastNoiseLite.h 1900-01-00 00:00:00 +0000
+@@ -52,6 +52,8 @@
+
+ #include <cmath>
+
++namespace fastnoiselite{
++
+ class FastNoiseLite
+ {
+ public:
+@@ -2583,4 +2585,5 @@
+ -0.7870349638f, 0.03447489231f, 0.6159443543f, 0, -0.2015596421f, 0.6859872284f, 0.6991389226f, 0, -0.08581082512f, -0.10920836f, -0.9903080513f, 0, 0.5532693395f, 0.7325250401f, -0.396610771f, 0, -0.1842489331f, -0.9777375055f, -0.1004076743f, 0, 0.0775473789f, -0.9111505856f, 0.4047110257f, 0, 0.1399838409f, 0.7601631212f, -0.6344734459f, 0, 0.4484419361f, -0.845289248f, 0.2904925424f, 0
+ };
+
+-#endif
++}
++#endif // namespace fastnoiselite
diff --git a/thirdparty/vulkan/patches/VMA-use-volk.patch b/thirdparty/vulkan/patches/VMA-use-volk.patch
index 1b6e0f04b8..eebe0c1bc3 100644
--- a/thirdparty/vulkan/patches/VMA-use-volk.patch
+++ b/thirdparty/vulkan/patches/VMA-use-volk.patch
@@ -1,5 +1,5 @@
diff --git a/thirdparty/vulkan/vk_mem_alloc.h b/thirdparty/vulkan/vk_mem_alloc.h
-index 52b403bede..7c450be211 100644
+index 44affc5ca4..d96f2dacc0 100644
--- a/thirdparty/vulkan/vk_mem_alloc.h
+++ b/thirdparty/vulkan/vk_mem_alloc.h
@@ -127,7 +127,11 @@ extern "C" {
diff --git a/thirdparty/vulkan/vk_mem_alloc.h b/thirdparty/vulkan/vk_mem_alloc.h
index 6618f1d1f0..d96f2dacc0 100644
--- a/thirdparty/vulkan/vk_mem_alloc.h
+++ b/thirdparty/vulkan/vk_mem_alloc.h
@@ -25,7 +25,7 @@
/** \mainpage Vulkan Memory Allocator
-<b>Version 3.0.0-development</b>
+<b>Version 3.0.1-development (2022-03-28)</b>
Copyright (c) 2017-2022 Advanced Micro Devices, Inc. All rights reserved. \n
License: MIT
@@ -84,11 +84,14 @@ License: MIT
- [Custom host memory allocator](@ref custom_memory_allocator)
- [Device memory allocation callbacks](@ref allocation_callbacks)
- [Device heap memory limit](@ref heap_memory_limit)
-- \subpage vk_khr_dedicated_allocation
-- \subpage enabling_buffer_device_address
-- \subpage vk_amd_device_coherent_memory
+- <b>Extension support</b>
+ - \subpage vk_khr_dedicated_allocation
+ - \subpage enabling_buffer_device_address
+ - \subpage vk_ext_memory_priority
+ - \subpage vk_amd_device_coherent_memory
- \subpage general_considerations
- [Thread safety](@ref general_considerations_thread_safety)
+ - [Versioning and compatibility](@ref general_considerations_versioning_and_compatibility)
- [Validation layer warnings](@ref general_considerations_validation_layer_warnings)
- [Allocation algorithm](@ref general_considerations_allocation_algorithm)
- [Features not supported](@ref general_considerations_features_not_supported)
@@ -427,6 +430,7 @@ typedef enum VmaAllocatorCreateFlagBits
VMA_ALLOCATOR_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
} VmaAllocatorCreateFlagBits;
+/// See #VmaAllocatorCreateFlagBits.
typedef VkFlags VmaAllocatorCreateFlags;
/** @} */
@@ -534,8 +538,7 @@ typedef enum VmaAllocationCreateFlagBits
You should not use #VMA_ALLOCATION_CREATE_DEDICATED_MEMORY_BIT and
#VMA_ALLOCATION_CREATE_NEVER_ALLOCATE_BIT at the same time. It makes no sense.
-
- If VmaAllocationCreateInfo::pool is not null, this flag is implied and ignored. */
+ */
VMA_ALLOCATION_CREATE_NEVER_ALLOCATE_BIT = 0x00000002,
/** \brief Set this flag to use a memory that will be persistently mapped and retrieve pointer to it.
@@ -548,13 +551,11 @@ typedef enum VmaAllocationCreateFlagBits
support it (e.g. Intel GPU).
*/
VMA_ALLOCATION_CREATE_MAPPED_BIT = 0x00000004,
- /// \deprecated Removed. Do not use.
- VMA_ALLOCATION_CREATE_RESERVED_1_BIT = 0x00000008,
- /// \deprecated Removed. Do not use.
- VMA_ALLOCATION_CREATE_RESERVED_2_BIT = 0x00000010,
- /** Set this flag to treat VmaAllocationCreateInfo::pUserData as pointer to a
+ /** \deprecated Preserved for backward compatibility. Consider using vmaSetAllocationName() instead.
+
+ Set this flag to treat VmaAllocationCreateInfo::pUserData as pointer to a
null-terminated string. Instead of copying pointer value, a local copy of the
- string is made and stored in allocation's `pUserData`. The string is automatically
+ string is made and stored in allocation's `pName`. The string is automatically
freed together with the allocation. It is also used in vmaBuildStatsString().
*/
VMA_ALLOCATION_CREATE_USER_DATA_COPY_STRING_BIT = 0x00000020,
@@ -567,6 +568,10 @@ typedef enum VmaAllocationCreateFlagBits
It is useful when you want to bind yourself to do some more advanced binding, e.g. using some extensions.
The flag is meaningful only with functions that bind by default: vmaCreateBuffer(), vmaCreateImage().
Otherwise it is ignored.
+
+ If you want to make sure the new buffer/image is not tied to the new memory allocation
+ through `VkMemoryDedicatedAllocateInfoKHR` structure in case the allocation ends up in its own memory block,
+ use also flag #VMA_ALLOCATION_CREATE_CAN_ALIAS_BIT.
*/
VMA_ALLOCATION_CREATE_DONT_BIND_BIT = 0x00000080,
/** Create allocation only if additional device memory required for it, if any, won't exceed
@@ -591,7 +596,7 @@ typedef enum VmaAllocationCreateFlagBits
never read or accessed randomly, so a memory type can be selected that is uncached and write-combined.
\warning Violating this declaration may work correctly, but will likely be very slow.
- Watch out for implicit reads introduces by doing e.g. `pMappedData[i] += x;`
+ Watch out for implicit reads introduced by doing e.g. `pMappedData[i] += x;`
Better prepare your data in a local variable and `memcpy()` it to the mapped pointer all at once.
*/
VMA_ALLOCATION_CREATE_HOST_ACCESS_SEQUENTIAL_WRITE_BIT = 0x00000400,
@@ -604,7 +609,7 @@ typedef enum VmaAllocationCreateFlagBits
This includes allocations created in \ref custom_memory_pools.
Declares that mapped memory can be read, written, and accessed in random order,
- so a `HOST_CACHED` memory type is preferred.
+ so a `HOST_CACHED` memory type is required.
*/
VMA_ALLOCATION_CREATE_HOST_ACCESS_RANDOM_BIT = 0x00000800,
/**
@@ -648,6 +653,7 @@ typedef enum VmaAllocationCreateFlagBits
VMA_ALLOCATION_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
} VmaAllocationCreateFlagBits;
+/// See #VmaAllocationCreateFlagBits.
typedef VkFlags VmaAllocationCreateFlags;
/// Flags to be passed as VmaPoolCreateInfo::flags.
@@ -726,16 +732,17 @@ typedef enum VmaDefragmentationFlagBits
VMA_DEFRAGMENTATION_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
} VmaDefragmentationFlagBits;
+/// See #VmaDefragmentationFlagBits.
typedef VkFlags VmaDefragmentationFlags;
-/// Operation performed on single defragmentation move.
+/// Operation performed on single defragmentation move. See structure #VmaDefragmentationMove.
typedef enum VmaDefragmentationMoveOperation
{
- /// Buffer/image has been recreated at `dstMemory` + `dstOffset`, data has been copied, old buffer/image has been destroyed. `srcAllocation` should be changed to point to the new place. This is the default value set by vmaBeginDefragmentationPass().
+ /// Buffer/image has been recreated at `dstTmpAllocation`, data has been copied, old buffer/image has been destroyed. `srcAllocation` should be changed to point to the new place. This is the default value set by vmaBeginDefragmentationPass().
VMA_DEFRAGMENTATION_MOVE_OPERATION_COPY = 0,
- /// Set this value if you cannot move the allocation. New place reserved `dstMemory` + `dstOffset` will be freed. `srcAllocation` will remain unchanged.
+ /// Set this value if you cannot move the allocation. New place reserved at `dstTmpAllocation` will be freed. `srcAllocation` will remain unchanged.
VMA_DEFRAGMENTATION_MOVE_OPERATION_IGNORE = 1,
- /// Set this value if you decide to abandon the allocation and you destroyed the buffer/image. New place reserved `dstMemory` + `dstOffset` will be freed, along with `srcAllocation`.
+ /// Set this value if you decide to abandon the allocation and you destroyed the buffer/image. New place reserved at `dstTmpAllocation` will be freed, along with `srcAllocation`, which will be destroyed.
VMA_DEFRAGMENTATION_MOVE_OPERATION_DESTROY = 2,
} VmaDefragmentationMoveOperation;
@@ -789,7 +796,7 @@ typedef enum VmaVirtualAllocationCreateFlagBits
/** Allocation strategy that chooses always the lowest offset in available space.
This is not the most efficient strategy but achieves highly packed data.
*/
- VMA_VIRTUAL_ALLOCATION_CREATE_STRATEGY_PACKED_BIT = VMA_ALLOCATION_CREATE_STRATEGY_MIN_OFFSET_BIT ,
+ VMA_VIRTUAL_ALLOCATION_CREATE_STRATEGY_MIN_OFFSET_BIT = VMA_ALLOCATION_CREATE_STRATEGY_MIN_OFFSET_BIT,
/** \brief A bit mask to extract only `STRATEGY` bits from entire set of flags.
These strategy flags are binary compatible with equivalent flags in #VmaAllocationCreateFlagBits.
@@ -1197,7 +1204,7 @@ typedef struct VmaBudget
Fetched from system using VK_EXT_memory_budget extension if enabled.
It might be different (most probably smaller) than `VkMemoryHeap::size[heapIndex]` due to factors
- external to the program, like other programs also consuming system resources.
+ external to the program, decided by the operating system.
Difference `budget - usage` is the amount of additional memory that can probably
be allocated without problems. Exceeding the budget may result in various problems.
*/
@@ -1211,6 +1218,10 @@ typedef struct VmaBudget
@{
*/
+/** \brief Parameters of new #VmaAllocation.
+
+To be used with functions like vmaCreateBuffer(), vmaCreateImage(), and many others.
+*/
typedef struct VmaAllocationCreateInfo
{
/// Use #VmaAllocationCreateFlagBits enum.
@@ -1337,7 +1348,7 @@ typedef struct VmaAllocationInfo
Same memory object can be shared by multiple allocations.
- It can change after call to vmaDefragment() if this allocation is passed to the function.
+ It can change after the allocation is moved during \ref defragmentation.
*/
VkDeviceMemory VMA_NULLABLE_NON_DISPATCHABLE deviceMemory;
/** \brief Offset in `VkDeviceMemory` object to the beginning of this allocation, in bytes. `(deviceMemory, offset)` pair is unique to this allocation.
@@ -1347,7 +1358,7 @@ typedef struct VmaAllocationInfo
not entire device memory block. Functions like vmaMapMemory(), vmaBindBufferMemory() also refer to the beginning of the allocation
and apply this offset automatically.
- It can change after call to vmaDefragment() if this allocation is passed to the function.
+ It can change after the allocation is moved during \ref defragmentation.
*/
VkDeviceSize offset;
/** \brief Size of this allocation, in bytes.
@@ -1367,7 +1378,7 @@ typedef struct VmaAllocationInfo
created with #VMA_ALLOCATION_CREATE_MAPPED_BIT flag, this value is null.
It can change after call to vmaMapMemory(), vmaUnmapMemory().
- It can also change after call to vmaDefragment() if this allocation is passed to the function.
+ It can also change after the allocation is moved during \ref defragmentation.
*/
void* VMA_NULLABLE pMappedData;
/** \brief Custom general-purpose pointer that was passed as VmaAllocationCreateInfo::pUserData or set using vmaSetAllocationUserData().
@@ -1375,6 +1386,14 @@ typedef struct VmaAllocationInfo
It can change after call to vmaSetAllocationUserData() for this allocation.
*/
void* VMA_NULLABLE pUserData;
+ /** \brief Custom allocation name that was set with vmaSetAllocationName().
+
+ It can change after call to vmaSetAllocationName() for this allocation.
+
+ Another way to set custom name is to pass it in VmaAllocationCreateInfo::pUserData with
+ additional flag #VMA_ALLOCATION_CREATE_USER_DATA_COPY_STRING_BIT set [DEPRECATED].
+ */
+ const char* VMA_NULLABLE pName;
} VmaAllocationInfo;
/** \brief Parameters for defragmentation.
@@ -1409,12 +1428,13 @@ typedef struct VmaDefragmentationMove
VmaDefragmentationMoveOperation operation;
/// Allocation that should be moved.
VmaAllocation VMA_NOT_NULL srcAllocation;
- /// Destination memory block where the allocation should be moved.
- VkDeviceMemory VMA_NOT_NULL_NON_DISPATCHABLE dstMemory;
- /// Destination offset where the allocation should be moved.
- VkDeviceSize dstOffset;
- /// Internal data used by VMA. Do not use or modify!
- void* VMA_NOT_NULL internalData;
+ /** \brief Temporary allocation pointing to destination memory that will replace `srcAllocation`.
+
+ \warning Do not store this allocation in your data structures! It exists only temporarily, for the duration of the defragmentation pass,
+ to be used for binding new buffer/image to the destination memory using e.g. vmaBindBufferMemory().
+ vmaEndDefragmentationPass() will destroy it and make `srcAllocation` point to this memory.
+ */
+ VmaAllocation VMA_NOT_NULL dstTmpAllocation;
} VmaDefragmentationMove;
/** \brief Parameters for incremental defragmentation steps.
@@ -1825,14 +1845,19 @@ VMA_CALL_PRE VkResult VMA_CALL_POST vmaAllocateMemoryPages(
VmaAllocation VMA_NULLABLE* VMA_NOT_NULL VMA_LEN_IF_NOT_NULL(allocationCount) pAllocations,
VmaAllocationInfo* VMA_NULLABLE VMA_LEN_IF_NOT_NULL(allocationCount) pAllocationInfo);
-/**
+/** \brief Allocates memory suitable for given `VkBuffer`.
+
\param allocator
\param buffer
\param pCreateInfo
\param[out] pAllocation Handle to allocated memory.
\param[out] pAllocationInfo Optional. Information about allocated memory. It can be later fetched using function vmaGetAllocationInfo().
-You should free the memory using vmaFreeMemory().
+It only creates #VmaAllocation. To bind the memory to the buffer, use vmaBindBufferMemory().
+
+This is a special-purpose function. In most cases you should use vmaCreateBuffer().
+
+You must free the allocation using vmaFreeMemory() when no longer needed.
*/
VMA_CALL_PRE VkResult VMA_CALL_POST vmaAllocateMemoryForBuffer(
VmaAllocator VMA_NOT_NULL allocator,
@@ -1841,7 +1866,20 @@ VMA_CALL_PRE VkResult VMA_CALL_POST vmaAllocateMemoryForBuffer(
VmaAllocation VMA_NULLABLE* VMA_NOT_NULL pAllocation,
VmaAllocationInfo* VMA_NULLABLE pAllocationInfo);
-/// Function similar to vmaAllocateMemoryForBuffer().
+/** \brief Allocates memory suitable for given `VkImage`.
+
+\param allocator
+\param image
+\param pCreateInfo
+\param[out] pAllocation Handle to allocated memory.
+\param[out] pAllocationInfo Optional. Information about allocated memory. It can be later fetched using function vmaGetAllocationInfo().
+
+It only creates #VmaAllocation. To bind the memory to the buffer, use vmaBindImageMemory().
+
+This is a special-purpose function. In most cases you should use vmaCreateImage().
+
+You must free the allocation using vmaFreeMemory() when no longer needed.
+*/
VMA_CALL_PRE VkResult VMA_CALL_POST vmaAllocateMemoryForImage(
VmaAllocator VMA_NOT_NULL allocator,
VkImage VMA_NOT_NULL_NON_DISPATCHABLE image,
@@ -1889,15 +1927,8 @@ VMA_CALL_PRE void VMA_CALL_POST vmaGetAllocationInfo(
/** \brief Sets pUserData in given allocation to new value.
-If the allocation was created with VMA_ALLOCATION_CREATE_USER_DATA_COPY_STRING_BIT,
-pUserData must be either null, or pointer to a null-terminated string. The function
-makes local copy of the string and sets it as allocation's `pUserData`. String
-passed as pUserData doesn't need to be valid for whole lifetime of the allocation -
-you can free it after this call. String previously pointed by allocation's
-pUserData is freed from memory.
-
-If the flag was not used, the value of pointer `pUserData` is just copied to
-allocation's `pUserData`. It is opaque, so you can use it however you want - e.g.
+The value of pointer `pUserData` is copied to allocation's `pUserData`.
+It is opaque, so you can use it however you want - e.g.
as a pointer, ordinal number or some handle to you own data.
*/
VMA_CALL_PRE void VMA_CALL_POST vmaSetAllocationUserData(
@@ -1905,6 +1936,19 @@ VMA_CALL_PRE void VMA_CALL_POST vmaSetAllocationUserData(
VmaAllocation VMA_NOT_NULL allocation,
void* VMA_NULLABLE pUserData);
+/** \brief Sets pName in given allocation to new value.
+
+`pName` must be either null, or pointer to a null-terminated string. The function
+makes local copy of the string and sets it as allocation's `pName`. String
+passed as pName doesn't need to be valid for whole lifetime of the allocation -
+you can free it after this call. String previously pointed by allocation's
+`pName` is freed from memory.
+*/
+VMA_CALL_PRE void VMA_CALL_POST vmaSetAllocationName(
+ VmaAllocator VMA_NOT_NULL allocator,
+ VmaAllocation VMA_NOT_NULL allocation,
+ const char* VMA_NULLABLE pName);
+
/**
\brief Given an allocation, returns Property Flags of its memory type.
@@ -2092,6 +2136,9 @@ VMA_CALL_PRE VkResult VMA_CALL_POST vmaCheckCorruption(
\param allocator Allocator object.
\param pInfo Structure filled with parameters of defragmentation.
\param[out] pContext Context object that must be passed to vmaEndDefragmentation() to finish defragmentation.
+\returns
+- `VK_SUCCESS` if defragmentation can begin.
+- `VK_ERROR_FEATURE_NOT_PRESENT` if defragmentation is not supported.
For more information about defragmentation, see documentation chapter:
[Defragmentation](@ref defragmentation).
@@ -2109,7 +2156,7 @@ VMA_CALL_PRE VkResult VMA_CALL_POST vmaBeginDefragmentation(
Use this function to finish defragmentation started by vmaBeginDefragmentation().
*/
-VMA_CALL_PRE VkResult VMA_CALL_POST vmaEndDefragmentation(
+VMA_CALL_PRE void VMA_CALL_POST vmaEndDefragmentation(
VmaAllocator VMA_NOT_NULL allocator,
VmaDefragmentationContext VMA_NOT_NULL context,
VmaDefragmentationStats* VMA_NULLABLE pStats);
@@ -2226,7 +2273,8 @@ VMA_CALL_PRE VkResult VMA_CALL_POST vmaBindImageMemory2(
VkImage VMA_NOT_NULL_NON_DISPATCHABLE image,
const void* VMA_NULLABLE pNext);
-/**
+/** \brief Creates a new `VkBuffer`, allocates and binds memory for it.
+
\param allocator
\param pBufferCreateInfo
\param pAllocationCreateInfo
@@ -2241,7 +2289,7 @@ This function automatically:
-# Binds the buffer with the memory.
If any of these operations fail, buffer and allocation are not created,
-returned value is negative error code, *pBuffer and *pAllocation are null.
+returned value is negative error code, `*pBuffer` and `*pAllocation` are null.
If the function succeeded, you must destroy both buffer and allocation when you
no longer need them using either convenience function vmaDestroyBuffer() or
@@ -2282,6 +2330,31 @@ VMA_CALL_PRE VkResult VMA_CALL_POST vmaCreateBufferWithAlignment(
VmaAllocation VMA_NULLABLE* VMA_NOT_NULL pAllocation,
VmaAllocationInfo* VMA_NULLABLE pAllocationInfo);
+/** \brief Creates a new `VkBuffer`, binds already created memory for it.
+
+\param allocator
+\param allocation Allocation that provides memory to be used for binding new buffer to it.
+\param pBufferCreateInfo
+\param[out] pBuffer Buffer that was created.
+
+This function automatically:
+
+-# Creates buffer.
+-# Binds the buffer with the supplied memory.
+
+If any of these operations fail, buffer is not created,
+returned value is negative error code and `*pBuffer` is null.
+
+If the function succeeded, you must destroy the buffer when you
+no longer need it using `vkDestroyBuffer()`. If you want to also destroy the corresponding
+allocation you can use convenience function vmaDestroyBuffer().
+*/
+VMA_CALL_PRE VkResult VMA_CALL_POST vmaCreateAliasingBuffer(
+ VmaAllocator VMA_NOT_NULL allocator,
+ VmaAllocation VMA_NOT_NULL allocation,
+ const VkBufferCreateInfo* VMA_NOT_NULL pBufferCreateInfo,
+ VkBuffer VMA_NULLABLE_NON_DISPATCHABLE* VMA_NOT_NULL pBuffer);
+
/** \brief Destroys Vulkan buffer and frees allocated memory.
This is just a convenience function equivalent to:
@@ -2307,6 +2380,13 @@ VMA_CALL_PRE VkResult VMA_CALL_POST vmaCreateImage(
VmaAllocation VMA_NULLABLE* VMA_NOT_NULL pAllocation,
VmaAllocationInfo* VMA_NULLABLE pAllocationInfo);
+/// Function similar to vmaCreateAliasingBuffer().
+VMA_CALL_PRE VkResult VMA_CALL_POST vmaCreateAliasingImage(
+ VmaAllocator VMA_NOT_NULL allocator,
+ VmaAllocation VMA_NOT_NULL allocation,
+ const VkImageCreateInfo* VMA_NOT_NULL pImageCreateInfo,
+ VkImage VMA_NULLABLE_NON_DISPATCHABLE* VMA_NOT_NULL pImage);
+
/** \brief Destroys Vulkan image and frees allocated memory.
This is just a convenience function equivalent to:
@@ -2493,6 +2573,7 @@ VMA_CALL_PRE void VMA_CALL_POST vmaFreeStatsString(
#include <cstdlib>
#include <cstring>
#include <utility>
+#include <type_traits>
#ifdef _MSC_VER
#include <intrin.h> // For functions like __popcnt, _BitScanForward etc.
@@ -2689,6 +2770,11 @@ static void vma_aligned_free(void* VMA_NULLABLE ptr)
#endif
#endif
+#ifndef VMA_COUNT_BITS_SET
+ // Returns number of bits set to 1 in (v)
+ #define VMA_COUNT_BITS_SET(v) VmaCountBitsSet(v)
+#endif
+
#ifndef VMA_BITSCAN_LSB
// Scans integer for index of first nonzero value from the Least Significant Bit (LSB). If mask is 0 then returns UINT8_MAX
#define VMA_BITSCAN_LSB(mask) VmaBitScanLSB(mask)
@@ -3077,22 +3163,29 @@ class VmaAllocationObjectAllocator;
#endif // _VMA_FORWARD_DECLARATIONS
-#ifndef _VMA_FUNCTIONS
-// Returns number of bits set to 1 in (v).
-static inline uint32_t VmaCountBitsSet(uint32_t v)
-{
-#ifdef _MSC_VER
+#ifndef _VMA_FUNCTIONS
+
+/*
+Returns number of bits set to 1 in (v).
+
+On specific platforms and compilers you can use instrinsics like:
+
+Visual Studio:
return __popcnt(v);
-#elif defined __GNUC__ || defined __clang__
+GCC, Clang:
return static_cast<uint32_t>(__builtin_popcount(v));
-#else
+
+Define macro VMA_COUNT_BITS_SET to provide your optimized implementation.
+But you need to check in runtime whether user's CPU supports these, as some old processors don't.
+*/
+static inline uint32_t VmaCountBitsSet(uint32_t v)
+{
uint32_t c = v - ((v >> 1) & 0x55555555);
c = ((c >> 2) & 0x33333333) + (c & 0x33333333);
c = ((c >> 4) + c) & 0x0F0F0F0F;
c = ((c >> 8) + c) & 0x00FF00FF;
c = ((c >> 16) + c) & 0x0000FFFF;
return c;
-#endif
}
static inline uint8_t VmaBitScanLSB(uint64_t mask)
@@ -3631,7 +3724,11 @@ static bool FindMemoryPreferences(
// GPU access, no CPU access (e.g. a color attachment image) - prefer GPU memory
if(deviceAccess)
{
- outPreferredFlags |= VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT;
+ // ...unless there is a clear preference from the user not to do so.
+ if(preferHost)
+ outNotPreferredFlags |= VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT;
+ else
+ outPreferredFlags |= VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT;
}
// No direct GPU access, no CPU access, just transfers.
// It may be staging copy intended for e.g. preserving image for next frame (then better GPU memory) or
@@ -5399,6 +5496,7 @@ public:
// Posts next part of an open string. The number is converted to decimal characters.
void ContinueString(uint32_t n);
void ContinueString(uint64_t n);
+ void ContinueString_Size(size_t n);
// Posts next part of an open string. Pointer value is converted to characters
// using "%p" formatting - shown as hexadecimal number, e.g.: 000000081276Ad00
void ContinueString_Pointer(const void* ptr);
@@ -5408,6 +5506,7 @@ public:
// Writes a number value.
void WriteNumber(uint32_t n);
void WriteNumber(uint64_t n);
+ void WriteSize(size_t n);
// Writes a boolean value - false or true.
void WriteBool(bool b);
// Writes a null value.
@@ -5432,6 +5531,11 @@ private:
VmaVector< StackItem, VmaStlAllocator<StackItem> > m_Stack;
bool m_InsideString;
+ // Write size_t for less than 64bits
+ void WriteSize(size_t n, std::integral_constant<bool, false>) { m_SB.AddNumber(static_cast<uint32_t>(n)); }
+ // Write size_t for 64bits
+ void WriteSize(size_t n, std::integral_constant<bool, true>) { m_SB.AddNumber(static_cast<uint64_t>(n)); }
+
void BeginValue(bool isString);
void WriteIndent(bool oneLess = false);
};
@@ -5574,6 +5678,14 @@ void VmaJsonWriter::ContinueString(uint64_t n)
m_SB.AddNumber(n);
}
+void VmaJsonWriter::ContinueString_Size(size_t n)
+{
+ VMA_ASSERT(m_InsideString);
+ // Fix for AppleClang incorrect type casting
+ // TODO: Change to if constexpr when C++17 used as minimal standard
+ WriteSize(n, std::is_same<size_t, uint64_t>{});
+}
+
void VmaJsonWriter::ContinueString_Pointer(const void* ptr)
{
VMA_ASSERT(m_InsideString);
@@ -5605,6 +5717,15 @@ void VmaJsonWriter::WriteNumber(uint64_t n)
m_SB.AddNumber(n);
}
+void VmaJsonWriter::WriteSize(size_t n)
+{
+ VMA_ASSERT(!m_InsideString);
+ BeginValue(false);
+ // Fix for AppleClang incorrect type casting
+ // TODO: Change to if constexpr when C++17 used as minimal standard
+ WriteSize(n, std::is_same<size_t, uint64_t>{});
+}
+
void VmaJsonWriter::WriteBool(bool b)
{
VMA_ASSERT(!m_InsideString);
@@ -5673,41 +5794,29 @@ static void VmaPrintDetailedStatistics(VmaJsonWriter& json, const VmaDetailedSta
json.WriteString("BlockCount");
json.WriteNumber(stat.statistics.blockCount);
-
- json.WriteString("AllocationCount");
- json.WriteNumber(stat.statistics.allocationCount);
-
- json.WriteString("UnusedRangeCount");
- json.WriteNumber(stat.unusedRangeCount);
-
json.WriteString("BlockBytes");
json.WriteNumber(stat.statistics.blockBytes);
-
+ json.WriteString("AllocationCount");
+ json.WriteNumber(stat.statistics.allocationCount);
json.WriteString("AllocationBytes");
json.WriteNumber(stat.statistics.allocationBytes);
+ json.WriteString("UnusedRangeCount");
+ json.WriteNumber(stat.unusedRangeCount);
if (stat.statistics.allocationCount > 1)
{
- json.WriteString("AllocationSize");
- json.BeginObject(true);
- json.WriteString("Min");
+ json.WriteString("AllocationSizeMin");
json.WriteNumber(stat.allocationSizeMin);
- json.WriteString("Max");
+ json.WriteString("AllocationSizeMax");
json.WriteNumber(stat.allocationSizeMax);
- json.EndObject();
}
-
if (stat.unusedRangeCount > 1)
{
- json.WriteString("UnusedRangeSize");
- json.BeginObject(true);
- json.WriteString("Min");
+ json.WriteString("UnusedRangeSizeMin");
json.WriteNumber(stat.unusedRangeSizeMin);
- json.WriteString("Max");
+ json.WriteString("UnusedRangeSizeMax");
json.WriteNumber(stat.unusedRangeSizeMax);
- json.EndObject();
}
-
json.EndObject();
}
#endif // _VMA_JSON_WRITER
@@ -5799,9 +5908,14 @@ private:
void PostMinorCounter()
{
if(m_MinorCounter < m_MajorCounter)
+ {
++m_MinorCounter;
+ }
else if(m_MajorCounter > 0)
- --m_MajorCounter, --m_MinorCounter;
+ {
+ --m_MajorCounter;
+ --m_MinorCounter;
+ }
}
};
@@ -5899,9 +6013,8 @@ struct VmaAllocation_T
enum FLAGS
{
- FLAG_USER_DATA_STRING = 0x01,
- FLAG_PERSISTENT_MAP = 0x02,
- FLAG_MAPPING_ALLOWED = 0x04,
+ FLAG_PERSISTENT_MAP = 0x01,
+ FLAG_MAPPING_ALLOWED = 0x02,
};
public:
@@ -5913,7 +6026,7 @@ public:
};
// This struct is allocated using VmaPoolAllocator.
- VmaAllocation_T(bool userDataString, bool mappingAllowed);
+ VmaAllocation_T(bool mappingAllowed);
~VmaAllocation_T();
void InitBlockAllocation(
@@ -5936,8 +6049,8 @@ public:
ALLOCATION_TYPE GetType() const { return (ALLOCATION_TYPE)m_Type; }
VkDeviceSize GetAlignment() const { return m_Alignment; }
VkDeviceSize GetSize() const { return m_Size; }
- bool IsUserDataString() const { return (m_Flags & FLAG_USER_DATA_STRING) != 0; }
void* GetUserData() const { return m_pUserData; }
+ const char* GetName() const { return m_pName; }
VmaSuballocationType GetSuballocationType() const { return (VmaSuballocationType)m_SuballocationType; }
VmaDeviceMemoryBlock* GetBlock() const { VMA_ASSERT(m_Type == ALLOCATION_TYPE_BLOCK); return m_BlockAllocation.m_Block; }
@@ -5945,8 +6058,10 @@ public:
bool IsPersistentMap() const { return (m_Flags & FLAG_PERSISTENT_MAP) != 0; }
bool IsMappingAllowed() const { return (m_Flags & FLAG_MAPPING_ALLOWED) != 0; }
- void SetUserData(VmaAllocator hAllocator, void* pUserData);
- void SwapBlockAllocation(VmaAllocation allocation);
+ void SetUserData(VmaAllocator hAllocator, void* pUserData) { m_pUserData = pUserData; }
+ void SetName(VmaAllocator hAllocator, const char* pName);
+ void FreeName(VmaAllocator hAllocator);
+ uint8_t SwapBlockAllocation(VmaAllocator hAllocator, VmaAllocation allocation);
VmaAllocHandle GetAllocHandle() const;
VkDeviceSize GetOffset() const;
VmaPool GetParentPool() const;
@@ -5992,6 +6107,7 @@ private:
VkDeviceSize m_Alignment;
VkDeviceSize m_Size;
void* m_pUserData;
+ char* m_pName;
uint32_t m_MemoryTypeIndex;
uint8_t m_Type; // ALLOCATION_TYPE
uint8_t m_SuballocationType; // VmaSuballocationType
@@ -6001,8 +6117,6 @@ private:
#if VMA_STATS_STRING_ENABLED
uint32_t m_BufferImageUsage; // 0 if unknown.
#endif
-
- void FreeUserDataString(VmaAllocator hAllocator);
};
#endif // _VMA_ALLOCATION_T
@@ -6239,6 +6353,7 @@ public:
// Validates all data structures inside this object. If not valid, returns false.
virtual bool Validate() const = 0;
virtual size_t GetAllocationCount() const = 0;
+ virtual size_t GetFreeRegionsCount() const = 0;
virtual VkDeviceSize GetSumFreeSize() const = 0;
// Returns true if this block is empty - contains only single free suballocation.
virtual bool IsEmpty() const = 0;
@@ -6248,14 +6363,14 @@ public:
virtual VmaAllocHandle GetAllocationListBegin() const = 0;
virtual VmaAllocHandle GetNextAllocation(VmaAllocHandle prevAlloc) const = 0;
+ virtual VkDeviceSize GetNextFreeRegionSize(VmaAllocHandle alloc) const = 0;
// Shouldn't modify blockCount.
virtual void AddDetailedStatistics(VmaDetailedStatistics& inoutStats) const = 0;
virtual void AddStatistics(VmaStatistics& inoutStats) const = 0;
#if VMA_STATS_STRING_ENABLED
- // mapRefCount == UINT32_MAX means unspecified.
- virtual void PrintDetailedMap(class VmaJsonWriter& json, uint32_t mapRefCount) const = 0;
+ virtual void PrintDetailedMap(class VmaJsonWriter& json) const = 0;
#endif
// Tries to find a place for suballocation with given parameters inside this block.
@@ -6299,8 +6414,7 @@ protected:
void PrintDetailedMap_Begin(class VmaJsonWriter& json,
VkDeviceSize unusedBytes,
size_t allocationCount,
- size_t unusedRangeCount,
- uint32_t mapRefCount) const;
+ size_t unusedRangeCount) const;
void PrintDetailedMap_Allocation(class VmaJsonWriter& json,
VkDeviceSize offset, VkDeviceSize size, void* userData) const;
void PrintDetailedMap_UnusedRange(class VmaJsonWriter& json,
@@ -6336,35 +6450,17 @@ void VmaBlockMetadata::DebugLogAllocation(VkDeviceSize offset, VkDeviceSize size
VmaAllocation allocation = reinterpret_cast<VmaAllocation>(userData);
userData = allocation->GetUserData();
+ const char* name = allocation->GetName();
#if VMA_STATS_STRING_ENABLED
- if (userData != VMA_NULL && allocation->IsUserDataString())
- {
- VMA_DEBUG_LOG("UNFREED ALLOCATION; Offset: %llu; Size: %llu; UserData: %s; Type: %s; Usage: %u",
- offset, size, reinterpret_cast<const char*>(userData),
- VMA_SUBALLOCATION_TYPE_NAMES[allocation->GetSuballocationType()],
- allocation->GetBufferImageUsage());
- }
- else
- {
- VMA_DEBUG_LOG("UNFREED ALLOCATION; Offset: %llu; Size: %llu; UserData: %p; Type: %s; Usage: %u",
- offset, size, userData,
- VMA_SUBALLOCATION_TYPE_NAMES[allocation->GetSuballocationType()],
- allocation->GetBufferImageUsage());
- }
+ VMA_DEBUG_LOG("UNFREED ALLOCATION; Offset: %llu; Size: %llu; UserData: %p; Name: %s; Type: %s; Usage: %u",
+ offset, size, userData, name ? name : "vma_empty",
+ VMA_SUBALLOCATION_TYPE_NAMES[allocation->GetSuballocationType()],
+ allocation->GetBufferImageUsage());
#else
- if (userData != VMA_NULL && allocation->IsUserDataString())
- {
- VMA_DEBUG_LOG("UNFREED ALLOCATION; Offset: %llu; Size: %llu; UserData: %s; Type: %u",
- offset, size, reinterpret_cast<const char*>(userData),
- (uint32_t)allocation->GetSuballocationType());
- }
- else
- {
- VMA_DEBUG_LOG("UNFREED ALLOCATION; Offset: %llu; Size: %llu; UserData: %p; Type: %u",
- offset, size, userData,
- (uint32_t)allocation->GetSuballocationType());
- }
+ VMA_DEBUG_LOG("UNFREED ALLOCATION; Offset: %llu; Size: %llu; UserData: %p; Name: %s; Type: %u",
+ offset, size, userData, name ? name : "vma_empty",
+ (uint32_t)allocation->GetSuballocationType());
#endif // VMA_STATS_STRING_ENABLED
}
@@ -6372,27 +6468,19 @@ void VmaBlockMetadata::DebugLogAllocation(VkDeviceSize offset, VkDeviceSize size
#if VMA_STATS_STRING_ENABLED
void VmaBlockMetadata::PrintDetailedMap_Begin(class VmaJsonWriter& json,
- VkDeviceSize unusedBytes, size_t allocationCount, size_t unusedRangeCount, uint32_t mapRefCount) const
+ VkDeviceSize unusedBytes, size_t allocationCount, size_t unusedRangeCount) const
{
- json.BeginObject();
-
json.WriteString("TotalBytes");
json.WriteNumber(GetSize());
json.WriteString("UnusedBytes");
- json.WriteNumber(unusedBytes);
+ json.WriteSize(unusedBytes);
json.WriteString("Allocations");
- json.WriteNumber((uint64_t)allocationCount);
+ json.WriteSize(allocationCount);
json.WriteString("UnusedRanges");
- json.WriteNumber((uint64_t)unusedRangeCount);
-
- if(mapRefCount != UINT32_MAX)
- {
- json.WriteString("MapRefCount");
- json.WriteNumber(mapRefCount);
- }
+ json.WriteSize(unusedRangeCount);
json.WriteString("Suballocations");
json.BeginArray();
@@ -6408,15 +6496,11 @@ void VmaBlockMetadata::PrintDetailedMap_Allocation(class VmaJsonWriter& json,
if (IsVirtual())
{
- json.WriteString("Type");
- json.WriteString("VirtualAllocation");
-
json.WriteString("Size");
json.WriteNumber(size);
-
- if (userData != VMA_NULL)
+ if (userData)
{
- json.WriteString("UserData");
+ json.WriteString("CustomData");
json.BeginString();
json.ContinueString_Pointer(userData);
json.EndString();
@@ -6450,7 +6534,6 @@ void VmaBlockMetadata::PrintDetailedMap_UnusedRange(class VmaJsonWriter& json,
void VmaBlockMetadata::PrintDetailedMap_End(class VmaJsonWriter& json) const
{
json.EndArray();
- json.EndObject();
}
#endif // VMA_STATS_STRING_ENABLED
#endif // _VMA_BLOCK_METADATA_FUNCTIONS
@@ -7549,12 +7632,13 @@ public:
void Init(VkDeviceSize size) override;
bool Validate() const override;
size_t GetAllocationCount() const override;
+ size_t GetFreeRegionsCount() const override;
void AddDetailedStatistics(VmaDetailedStatistics& inoutStats) const override;
void AddStatistics(VmaStatistics& inoutStats) const override;
#if VMA_STATS_STRING_ENABLED
- void PrintDetailedMap(class VmaJsonWriter& json, uint32_t mapRefCount) const override;
+ void PrintDetailedMap(class VmaJsonWriter& json) const override;
#endif
bool CreateAllocationRequest(
@@ -7577,6 +7661,7 @@ public:
void* GetAllocationUserData(VmaAllocHandle allocHandle) const override;
VmaAllocHandle GetAllocationListBegin() const override;
VmaAllocHandle GetNextAllocation(VmaAllocHandle prevAlloc) const override;
+ VkDeviceSize GetNextFreeRegionSize(VmaAllocHandle alloc) const override;
void Clear() override;
void SetAllocationUserData(VmaAllocHandle allocHandle, void* userData) override;
void DebugLogAllAllocations() const override;
@@ -7815,6 +7900,13 @@ size_t VmaBlockMetadata_Linear::GetAllocationCount() const
AccessSuballocations2nd().size() - m_2ndNullItemsCount;
}
+size_t VmaBlockMetadata_Linear::GetFreeRegionsCount() const
+{
+ // Function only used for defragmentation, which is disabled for this algorithm
+ VMA_ASSERT(0);
+ return SIZE_MAX;
+}
+
void VmaBlockMetadata_Linear::AddDetailedStatistics(VmaDetailedStatistics& inoutStats) const
{
const VkDeviceSize size = GetSize();
@@ -8133,7 +8225,7 @@ void VmaBlockMetadata_Linear::AddStatistics(VmaStatistics& inoutStats) const
}
#if VMA_STATS_STRING_ENABLED
-void VmaBlockMetadata_Linear::PrintDetailedMap(class VmaJsonWriter& json, uint32_t mapRefCount) const
+void VmaBlockMetadata_Linear::PrintDetailedMap(class VmaJsonWriter& json) const
{
const VkDeviceSize size = GetSize();
const SuballocationVectorType& suballocations1st = AccessSuballocations1st();
@@ -8295,7 +8387,7 @@ void VmaBlockMetadata_Linear::PrintDetailedMap(class VmaJsonWriter& json, uint32
}
const VkDeviceSize unusedBytes = size - usedBytes;
- PrintDetailedMap_Begin(json, unusedBytes, alloc1stCount + alloc2ndCount, unusedRangeCount, mapRefCount);
+ PrintDetailedMap_Begin(json, unusedBytes, alloc1stCount + alloc2ndCount, unusedRangeCount);
// SECOND PASS
lastOffset = 0;
@@ -8686,6 +8778,13 @@ VmaAllocHandle VmaBlockMetadata_Linear::GetNextAllocation(VmaAllocHandle prevAll
return VK_NULL_HANDLE;
}
+VkDeviceSize VmaBlockMetadata_Linear::GetNextFreeRegionSize(VmaAllocHandle alloc) const
+{
+ // Function only used for defragmentation, which is disabled for this algorithm
+ VMA_ASSERT(0);
+ return 0;
+}
+
void VmaBlockMetadata_Linear::Clear()
{
m_SumFreeSize = GetSize();
@@ -9884,6 +9983,7 @@ public:
virtual ~VmaBlockMetadata_TLSF();
size_t GetAllocationCount() const override { return m_AllocCount; }
+ size_t GetFreeRegionsCount() const override { return m_BlocksFreeCount + 1; }
VkDeviceSize GetSumFreeSize() const override { return m_BlocksFreeSize + m_NullBlock->size; }
bool IsEmpty() const override { return m_NullBlock->offset == 0; }
VkDeviceSize GetAllocationOffset(VmaAllocHandle allocHandle) const override { return ((Block*)allocHandle)->offset; };
@@ -9895,7 +9995,7 @@ public:
void AddStatistics(VmaStatistics& inoutStats) const override;
#if VMA_STATS_STRING_ENABLED
- void PrintDetailedMap(class VmaJsonWriter& json, uint32_t mapRefCount) const override;
+ void PrintDetailedMap(class VmaJsonWriter& json) const override;
#endif
bool CreateAllocationRequest(
@@ -9917,6 +10017,7 @@ public:
void* GetAllocationUserData(VmaAllocHandle allocHandle) const override;
VmaAllocHandle GetAllocationListBegin() const override;
VmaAllocHandle GetNextAllocation(VmaAllocHandle prevAlloc) const override;
+ VkDeviceSize GetNextFreeRegionSize(VmaAllocHandle alloc) const override;
void Clear() override;
void SetAllocationUserData(VmaAllocHandle allocHandle, void* userData) override;
void DebugLogAllAllocations() const override;
@@ -10167,7 +10268,7 @@ void VmaBlockMetadata_TLSF::AddStatistics(VmaStatistics& inoutStats) const
}
#if VMA_STATS_STRING_ENABLED
-void VmaBlockMetadata_TLSF::PrintDetailedMap(class VmaJsonWriter& json, uint32_t mapRefCount) const
+void VmaBlockMetadata_TLSF::PrintDetailedMap(class VmaJsonWriter& json) const
{
size_t blockCount = m_AllocCount + m_BlocksFreeCount;
VmaStlAllocator<Block*> allocator(GetAllocationCallbacks());
@@ -10184,12 +10285,10 @@ void VmaBlockMetadata_TLSF::PrintDetailedMap(class VmaJsonWriter& json, uint32_t
VmaClearDetailedStatistics(stats);
AddDetailedStatistics(stats);
- PrintDetailedMap_Begin(
- json,
+ PrintDetailedMap_Begin(json,
stats.statistics.blockBytes - stats.statistics.allocationBytes,
stats.statistics.allocationCount,
- stats.unusedRangeCount,
- mapRefCount);
+ stats.unusedRangeCount);
for (; i < blockCount; ++i)
{
@@ -10593,6 +10692,16 @@ VmaAllocHandle VmaBlockMetadata_TLSF::GetNextAllocation(VmaAllocHandle prevAlloc
return VK_NULL_HANDLE;
}
+VkDeviceSize VmaBlockMetadata_TLSF::GetNextFreeRegionSize(VmaAllocHandle alloc) const
+{
+ Block* block = (Block*)alloc;
+ VMA_ASSERT(!block->IsFree() && "Incorrect block!");
+
+ if (block->prevPhysical)
+ return block->prevPhysical->IsFree() ? block->prevPhysical->size : 0;
+ return 0;
+}
+
void VmaBlockMetadata_TLSF::Clear()
{
m_AllocCount = 0;
@@ -10837,6 +10946,7 @@ public:
size_t GetBlockCount() const { return m_Blocks.size(); }
// To be used only while the m_Mutex is locked. Used during defragmentation.
VmaDeviceMemoryBlock* GetBlock(size_t index) const { return m_Blocks[index]; }
+ VMA_RW_MUTEX &GetMutex() { return m_Mutex; }
VkResult CreateMinBlocks();
void AddStatistics(VmaStatistics& inoutStats);
@@ -10852,7 +10962,7 @@ public:
size_t allocationCount,
VmaAllocation* pAllocations);
- void Free(const VmaAllocation hAllocation, bool incrementalSort = true);
+ void Free(const VmaAllocation hAllocation);
#if VMA_STATS_STRING_ENABLED
void PrintDetailedMap(class VmaJsonWriter& json);
@@ -10878,6 +10988,9 @@ private:
// Incrementally sorted by sumFreeSize, ascending.
VmaVector<VmaDeviceMemoryBlock*, VmaStlAllocator<VmaDeviceMemoryBlock*>> m_Blocks;
uint32_t m_NextBlockId;
+ bool m_IncrementalSort = true;
+
+ void SetIncrementalSort(bool val) { m_IncrementalSort = val; }
VkDeviceSize CalcMaxBlockSize() const;
// Finds and removes given block from vector.
@@ -10928,17 +11041,26 @@ public:
const VmaDefragmentationInfo& info);
~VmaDefragmentationContext_T();
- void GetStats(VmaDefragmentationStats& outStats) { outStats = m_Stats; }
+ void GetStats(VmaDefragmentationStats& outStats) { outStats = m_GlobalStats; }
VkResult DefragmentPassBegin(VmaDefragmentationPassMoveInfo& moveInfo);
VkResult DefragmentPassEnd(VmaDefragmentationPassMoveInfo& moveInfo);
private:
- struct ImmovableBlock
+ // Max number of allocations to ignore due to size constraints before ending single pass
+ static const uint8_t MAX_ALLOCS_TO_IGNORE = 16;
+ enum class CounterStatus { Pass, Ignore, End };
+
+ struct FragmentedBlock
{
- uint32_t vectorIndex;
+ uint32_t data;
VmaDeviceMemoryBlock* block;
};
+ struct StateBalanced
+ {
+ VkDeviceSize avgFreeSize = 0;
+ VkDeviceSize avgAllocSize = UINT64_MAX;
+ };
struct StateExtensive
{
enum class Operation : uint8_t
@@ -10966,25 +11088,29 @@ private:
VmaStlAllocator<VmaDefragmentationMove> m_MoveAllocator;
VmaVector<VmaDefragmentationMove, VmaStlAllocator<VmaDefragmentationMove>> m_Moves;
+ uint8_t m_IgnoredAllocs = 0;
uint32_t m_Algorithm;
uint32_t m_BlockVectorCount;
VmaBlockVector* m_PoolBlockVector;
VmaBlockVector** m_pBlockVectors;
size_t m_ImmovableBlockCount = 0;
- VmaDefragmentationStats m_Stats = { 0 };
+ VmaDefragmentationStats m_GlobalStats = { 0 };
+ VmaDefragmentationStats m_PassStats = { 0 };
void* m_AlgorithmState = VMA_NULL;
static MoveAllocationData GetMoveData(VmaAllocHandle handle, VmaBlockMetadata* metadata);
- bool IncrementCounters(uint32_t& allocations, VkDeviceSize bytes);
+ CounterStatus CheckCounters(VkDeviceSize bytes);
+ bool IncrementCounters(VkDeviceSize bytes);
bool ReallocWithinBlock(VmaBlockVector& vector, VmaDeviceMemoryBlock* block);
bool AllocInOtherBlock(size_t start, size_t end, MoveAllocationData& data, VmaBlockVector& vector);
bool ComputeDefragmentation(VmaBlockVector& vector, size_t index);
bool ComputeDefragmentation_Fast(VmaBlockVector& vector);
- bool ComputeDefragmentation_Balanced(VmaBlockVector& vector);
+ bool ComputeDefragmentation_Balanced(VmaBlockVector& vector, size_t index, bool update);
bool ComputeDefragmentation_Full(VmaBlockVector& vector);
bool ComputeDefragmentation_Extensive(VmaBlockVector& vector, size_t index);
+ void UpdateVectorStatistics(VmaBlockVector& vector, StateBalanced& state);
bool MoveDataToFreeBlocks(VmaSuballocationType currentType,
VmaBlockVector& vector, size_t firstFreeBlock,
bool& texturePresent, bool& bufferPresent, bool& otherPresent);
@@ -11259,8 +11385,9 @@ void VmaVirtualBlock_T::BuildStatsString(bool detailedMap, VmaStringBuilder& sb)
if (detailedMap)
{
json.WriteString("Details");
- m_Metadata->PrintDetailedMap(json,
- UINT32_MAX); // mapRefCount
+ json.BeginObject();
+ m_Metadata->PrintDetailedMap(json);
+ json.EndObject();
}
json.EndObject();
@@ -11868,18 +11995,17 @@ VkResult VmaDeviceMemoryBlock::BindImageMemory(
#endif // _VMA_DEVICE_MEMORY_BLOCK_FUNCTIONS
#ifndef _VMA_ALLOCATION_T_FUNCTIONS
-VmaAllocation_T::VmaAllocation_T(bool userDataString, bool mappingAllowed)
+VmaAllocation_T::VmaAllocation_T(bool mappingAllowed)
: m_Alignment{ 1 },
m_Size{ 0 },
m_pUserData{ VMA_NULL },
+ m_pName{ VMA_NULL },
m_MemoryTypeIndex{ 0 },
m_Type{ (uint8_t)ALLOCATION_TYPE_NONE },
m_SuballocationType{ (uint8_t)VMA_SUBALLOCATION_TYPE_UNKNOWN },
m_MapCount{ 0 },
m_Flags{ 0 }
{
- if(userDataString)
- m_Flags |= (uint8_t)FLAG_USER_DATA_STRING;
if(mappingAllowed)
m_Flags |= (uint8_t)FLAG_MAPPING_ALLOWED;
@@ -11893,7 +12019,7 @@ VmaAllocation_T::~VmaAllocation_T()
VMA_ASSERT(m_MapCount == 0 && "Allocation was not unmapped before destruction.");
// Check if owned string was freed.
- VMA_ASSERT((IsUserDataString() && m_pUserData == VMA_NULL) || !IsUserDataString());
+ VMA_ASSERT(m_pName == VMA_NULL);
}
void VmaAllocation_T::InitBlockAllocation(
@@ -11948,31 +12074,25 @@ void VmaAllocation_T::InitDedicatedAllocation(
m_DedicatedAllocation.m_Next = VMA_NULL;
}
-void VmaAllocation_T::SetUserData(VmaAllocator hAllocator, void* pUserData)
+void VmaAllocation_T::SetName(VmaAllocator hAllocator, const char* pName)
{
- if (IsUserDataString())
- {
- VMA_ASSERT(pUserData == VMA_NULL || pUserData != m_pUserData);
+ VMA_ASSERT(pName == VMA_NULL || pName != m_pName);
- FreeUserDataString(hAllocator);
+ FreeName(hAllocator);
- if (pUserData != VMA_NULL)
- {
- m_pUserData = VmaCreateStringCopy(hAllocator->GetAllocationCallbacks(), (const char*)pUserData);
- }
- }
- else
- {
- m_pUserData = pUserData;
- }
+ if (pName != VMA_NULL)
+ m_pName = VmaCreateStringCopy(hAllocator->GetAllocationCallbacks(), pName);
}
-void VmaAllocation_T::SwapBlockAllocation(VmaAllocation allocation)
+uint8_t VmaAllocation_T::SwapBlockAllocation(VmaAllocator hAllocator, VmaAllocation allocation)
{
VMA_ASSERT(allocation != VMA_NULL);
VMA_ASSERT(m_Type == ALLOCATION_TYPE_BLOCK);
VMA_ASSERT(allocation->m_Type == ALLOCATION_TYPE_BLOCK);
+ if (m_MapCount != 0)
+ m_BlockAllocation.m_Block->Unmap(hAllocator, m_MapCount);
+
m_BlockAllocation.m_Block->m_pMetadata->SetAllocationUserData(m_BlockAllocation.m_AllocHandle, allocation);
VMA_SWAP(m_BlockAllocation, allocation->m_BlockAllocation);
m_BlockAllocation.m_Block->m_pMetadata->SetAllocationUserData(m_BlockAllocation.m_AllocHandle, this);
@@ -11980,6 +12100,7 @@ void VmaAllocation_T::SwapBlockAllocation(VmaAllocation allocation)
#if VMA_STATS_STRING_ENABLED
VMA_SWAP(m_BufferImageUsage, allocation->m_BufferImageUsage);
#endif
+ return m_MapCount;
}
VmaAllocHandle VmaAllocation_T::GetAllocHandle() const
@@ -12165,35 +12286,31 @@ void VmaAllocation_T::PrintParameters(class VmaJsonWriter& json) const
json.WriteString("Size");
json.WriteNumber(m_Size);
+ json.WriteString("Usage");
+ json.WriteNumber(m_BufferImageUsage);
if (m_pUserData != VMA_NULL)
{
- json.WriteString("UserData");
- if (IsUserDataString())
- {
- json.WriteString((const char*)m_pUserData);
- }
- else
- {
- json.BeginString();
- json.ContinueString_Pointer(m_pUserData);
- json.EndString();
- }
+ json.WriteString("CustomData");
+ json.BeginString();
+ json.ContinueString_Pointer(m_pUserData);
+ json.EndString();
}
-
- if (m_BufferImageUsage != 0)
+ if (m_pName != VMA_NULL)
{
- json.WriteString("Usage");
- json.WriteNumber(m_BufferImageUsage);
+ json.WriteString("Name");
+ json.WriteString(m_pName);
}
}
#endif // VMA_STATS_STRING_ENABLED
-void VmaAllocation_T::FreeUserDataString(VmaAllocator hAllocator)
+void VmaAllocation_T::FreeName(VmaAllocator hAllocator)
{
- VMA_ASSERT(IsUserDataString());
- VmaFreeString(hAllocator->GetAllocationCallbacks(), (char*)m_pUserData);
- m_pUserData = VMA_NULL;
+ if(m_pName)
+ {
+ VmaFreeString(hAllocator->GetAllocationCallbacks(), m_pName);
+ m_pName = VMA_NULL;
+ }
}
#endif // _VMA_ALLOCATION_T_FUNCTIONS
@@ -12542,9 +12659,7 @@ VkResult VmaBlockVector::AllocatePage(
return VK_ERROR_OUT_OF_DEVICE_MEMORY;
}
-void VmaBlockVector::Free(
- const VmaAllocation hAllocation,
- bool incrementalSort)
+void VmaBlockVector::Free(const VmaAllocation hAllocation)
{
VmaDeviceMemoryBlock* pBlockToDelete = VMA_NULL;
@@ -12604,8 +12719,7 @@ void VmaBlockVector::Free(
}
}
- if (incrementalSort)
- IncrementallySortBlocks();
+ IncrementallySortBlocks();
}
// Destruction of a free block. Deferred until this point, outside of mutex
@@ -12650,6 +12764,8 @@ void VmaBlockVector::Remove(VmaDeviceMemoryBlock* pBlock)
void VmaBlockVector::IncrementallySortBlocks()
{
+ if (!m_IncrementalSort)
+ return;
if (m_Algorithm != VMA_POOL_CREATE_LINEAR_ALGORITHM_BIT)
{
// Bubble sort only until first swap.
@@ -12724,7 +12840,7 @@ VkResult VmaBlockVector::CommitAllocationRequest(
}
}
- *pAllocation = m_hAllocator->m_AllocationObjectAllocator.Allocate(isUserDataString, isMappingAllowed);
+ *pAllocation = m_hAllocator->m_AllocationObjectAllocator.Allocate(isMappingAllowed);
pBlock->m_pMetadata->Alloc(allocRequest, suballocType, *pAllocation);
(*pAllocation)->InitBlockAllocation(
pBlock,
@@ -12735,7 +12851,10 @@ VkResult VmaBlockVector::CommitAllocationRequest(
suballocType,
mapped);
VMA_HEAVY_ASSERT(pBlock->Validate());
- (*pAllocation)->SetUserData(m_hAllocator, pUserData);
+ if (isUserDataString)
+ (*pAllocation)->SetName(m_hAllocator, (const char*)pUserData);
+ else
+ (*pAllocation)->SetUserData(m_hAllocator, pUserData);
m_hAllocator->m_Budget.AddAllocation(m_hAllocator->MemoryTypeIndexToHeapIndex(m_MemoryTypeIndex), allocRequest.size);
if (VMA_DEBUG_INITIALIZE_ALLOCATIONS)
{
@@ -12770,6 +12889,7 @@ VkResult VmaBlockVector::CreateBlock(VkDeviceSize blockSize, size_t* pNewBlockIn
VkMemoryPriorityAllocateInfoEXT priorityInfo = { VK_STRUCTURE_TYPE_MEMORY_PRIORITY_ALLOCATE_INFO_EXT };
if (m_hAllocator->m_UseExtMemoryPriority)
{
+ VMA_ASSERT(m_Priority >= 0.f && m_Priority <= 1.f);
priorityInfo.priority = m_Priority;
VmaPnextChainPushFront(&allocInfo, &priorityInfo);
}
@@ -12833,50 +12953,7 @@ void VmaBlockVector::PrintDetailedMap(class VmaJsonWriter& json)
{
VmaMutexLockRead lock(m_Mutex, m_hAllocator->m_UseMutex);
- if (IsCustomPool())
- {
- const char* poolName = m_hParentPool->GetName();
- if (poolName != VMA_NULL && poolName[0] != '\0')
- {
- json.WriteString("Name");
- json.WriteString(poolName);
- }
-
- json.WriteString("MemoryTypeIndex");
- json.WriteNumber(m_MemoryTypeIndex);
-
- json.WriteString("BlockSize");
- json.WriteNumber(m_PreferredBlockSize);
-
- json.WriteString("BlockCount");
- json.BeginObject(true);
- if (m_MinBlockCount > 0)
- {
- json.WriteString("Min");
- json.WriteNumber((uint64_t)m_MinBlockCount);
- }
- if (m_MaxBlockCount < SIZE_MAX)
- {
- json.WriteString("Max");
- json.WriteNumber((uint64_t)m_MaxBlockCount);
- }
- json.WriteString("Cur");
- json.WriteNumber((uint64_t)m_Blocks.size());
- json.EndObject();
-
- if (m_Algorithm != 0)
- {
- json.WriteString("Algorithm");
- json.WriteString(VmaAlgorithmToStr(m_Algorithm));
- }
- }
- else
- {
- json.WriteString("PreferredBlockSize");
- json.WriteNumber(m_PreferredBlockSize);
- }
- json.WriteString("Blocks");
json.BeginObject();
for (size_t i = 0; i < m_Blocks.size(); ++i)
{
@@ -12884,7 +12961,12 @@ void VmaBlockVector::PrintDetailedMap(class VmaJsonWriter& json)
json.ContinueString(m_Blocks[i]->GetId());
json.EndString();
- m_Blocks[i]->m_pMetadata->PrintDetailedMap(json, m_Blocks[i]->GetMapRefCount());
+ json.BeginObject();
+ json.WriteString("MapRefCount");
+ json.WriteNumber(m_Blocks[i]->GetMapRefCount());
+
+ m_Blocks[i]->m_pMetadata->PrintDetailedMap(json);
+ json.EndObject();
}
json.EndObject();
}
@@ -12929,6 +13011,7 @@ VmaDefragmentationContext_T::VmaDefragmentationContext_T(
m_BlockVectorCount = 1;
m_PoolBlockVector = &info.pool->m_BlockVector;
m_pBlockVectors = &m_PoolBlockVector;
+ m_PoolBlockVector->SetIncrementalSort(false);
m_PoolBlockVector->SortByFreeSize();
}
else
@@ -12940,12 +13023,22 @@ VmaDefragmentationContext_T::VmaDefragmentationContext_T(
{
VmaBlockVector* vector = m_pBlockVectors[i];
if (vector != VMA_NULL)
+ {
+ vector->SetIncrementalSort(false);
vector->SortByFreeSize();
+ }
}
}
switch (m_Algorithm)
{
+ case 0: // Default algorithm
+ m_Algorithm = VMA_DEFRAGMENTATION_FLAG_ALGORITHM_BALANCED_BIT;
+ case VMA_DEFRAGMENTATION_FLAG_ALGORITHM_BALANCED_BIT:
+ {
+ m_AlgorithmState = vma_new_array(hAllocator, StateBalanced, m_BlockVectorCount);
+ break;
+ }
case VMA_DEFRAGMENTATION_FLAG_ALGORITHM_EXTENSIVE_BIT:
{
if (hAllocator->GetBufferImageGranularity() > 1)
@@ -12959,10 +13052,27 @@ VmaDefragmentationContext_T::VmaDefragmentationContext_T(
VmaDefragmentationContext_T::~VmaDefragmentationContext_T()
{
+ if (m_PoolBlockVector != VMA_NULL)
+ {
+ m_PoolBlockVector->SetIncrementalSort(true);
+ }
+ else
+ {
+ for (uint32_t i = 0; i < m_BlockVectorCount; ++i)
+ {
+ VmaBlockVector* vector = m_pBlockVectors[i];
+ if (vector != VMA_NULL)
+ vector->SetIncrementalSort(true);
+ }
+ }
+
if (m_AlgorithmState)
{
switch (m_Algorithm)
{
+ case VMA_DEFRAGMENTATION_FLAG_ALGORITHM_BALANCED_BIT:
+ vma_delete_array(m_MoveAllocator.m_pCallbacks, reinterpret_cast<StateBalanced*>(m_AlgorithmState), m_BlockVectorCount);
+ break;
case VMA_DEFRAGMENTATION_FLAG_ALGORITHM_EXTENSIVE_BIT:
vma_delete_array(m_MoveAllocator.m_pCallbacks, reinterpret_cast<StateExtensive*>(m_AlgorithmState), m_BlockVectorCount);
break;
@@ -12976,6 +13086,8 @@ VkResult VmaDefragmentationContext_T::DefragmentPassBegin(VmaDefragmentationPass
{
if (m_PoolBlockVector != VMA_NULL)
{
+ VmaMutexLockWrite lock(m_PoolBlockVector->GetMutex(), m_PoolBlockVector->GetAllocator()->m_UseMutex);
+
if (m_PoolBlockVector->GetBlockCount() > 1)
ComputeDefragmentation(*m_PoolBlockVector, 0);
else if (m_PoolBlockVector->GetBlockCount() == 1)
@@ -12987,6 +13099,8 @@ VkResult VmaDefragmentationContext_T::DefragmentPassBegin(VmaDefragmentationPass
{
if (m_pBlockVectors[i] != VMA_NULL)
{
+ VmaMutexLockWrite lock(m_pBlockVectors[i]->GetMutex(), m_pBlockVectors[i]->GetAllocator()->m_UseMutex);
+
if (m_pBlockVectors[i]->GetBlockCount() > 1)
{
if (ComputeDefragmentation(*m_pBlockVectors[i], i))
@@ -13017,7 +13131,11 @@ VkResult VmaDefragmentationContext_T::DefragmentPassEnd(VmaDefragmentationPassMo
VMA_ASSERT(moveInfo.moveCount > 0 ? moveInfo.pMoves != VMA_NULL : true);
VkResult result = VK_SUCCESS;
- VmaVector<ImmovableBlock, VmaStlAllocator<ImmovableBlock>> immovableBlocks(VmaStlAllocator<ImmovableBlock>(m_MoveAllocator.m_pCallbacks));
+ VmaStlAllocator<FragmentedBlock> blockAllocator(m_MoveAllocator.m_pCallbacks);
+ VmaVector<FragmentedBlock, VmaStlAllocator<FragmentedBlock>> immovableBlocks(blockAllocator);
+ VmaVector<FragmentedBlock, VmaStlAllocator<FragmentedBlock>> mappedBlocks(blockAllocator);
+
+ VmaAllocator allocator = VMA_NULL;
for (uint32_t i = 0; i < moveInfo.moveCount; ++i)
{
VmaDefragmentationMove& move = moveInfo.pMoves[i];
@@ -13037,29 +13155,54 @@ VkResult VmaDefragmentationContext_T::DefragmentPassEnd(VmaDefragmentationPassMo
vector = m_pBlockVectors[vectorIndex];
VMA_ASSERT(vector != VMA_NULL);
}
-
- VmaAllocation dst = reinterpret_cast<VmaAllocation>(move.internalData);
+
switch (move.operation)
{
case VMA_DEFRAGMENTATION_MOVE_OPERATION_COPY:
{
- move.srcAllocation->SwapBlockAllocation(dst);
- prevCount = vector->GetBlockCount();
- freedBlockSize = dst->GetBlock()->m_pMetadata->GetSize();
- vector->Free(dst, false);
- currentCount = vector->GetBlockCount();
+ uint8_t mapCount = move.srcAllocation->SwapBlockAllocation(vector->m_hAllocator, move.dstTmpAllocation);
+ if (mapCount > 0)
+ {
+ allocator = vector->m_hAllocator;
+ VmaDeviceMemoryBlock* newMapBlock = move.srcAllocation->GetBlock();
+ bool notPresent = true;
+ for (FragmentedBlock& block : mappedBlocks)
+ {
+ if (block.block == newMapBlock)
+ {
+ notPresent = false;
+ block.data += mapCount;
+ break;
+ }
+ }
+ if (notPresent)
+ mappedBlocks.push_back({ mapCount, newMapBlock });
+ }
+
+ // Scope for locks, Free have it's own lock
+ {
+ VmaMutexLockRead lock(vector->GetMutex(), vector->GetAllocator()->m_UseMutex);
+ prevCount = vector->GetBlockCount();
+ freedBlockSize = move.dstTmpAllocation->GetBlock()->m_pMetadata->GetSize();
+ }
+ vector->Free(move.dstTmpAllocation);
+ {
+ VmaMutexLockRead lock(vector->GetMutex(), vector->GetAllocator()->m_UseMutex);
+ currentCount = vector->GetBlockCount();
+ }
result = VK_INCOMPLETE;
break;
}
case VMA_DEFRAGMENTATION_MOVE_OPERATION_IGNORE:
{
- m_Stats.bytesMoved -= move.srcAllocation->GetSize();
- vector->Free(dst, false);
+ m_PassStats.bytesMoved -= move.srcAllocation->GetSize();
+ --m_PassStats.allocationsMoved;
+ vector->Free(move.dstTmpAllocation);
VmaDeviceMemoryBlock* newBlock = move.srcAllocation->GetBlock();
bool notPresent = true;
- for (const ImmovableBlock& block : immovableBlocks)
+ for (const FragmentedBlock& block : immovableBlocks)
{
if (block.block == newBlock)
{
@@ -13073,16 +13216,32 @@ VkResult VmaDefragmentationContext_T::DefragmentPassEnd(VmaDefragmentationPassMo
}
case VMA_DEFRAGMENTATION_MOVE_OPERATION_DESTROY:
{
- prevCount = vector->GetBlockCount();
- freedBlockSize = move.srcAllocation->GetBlock()->m_pMetadata->GetSize();
- vector->Free(move.srcAllocation, false);
- currentCount = vector->GetBlockCount();
+ m_PassStats.bytesMoved -= move.srcAllocation->GetSize();
+ --m_PassStats.allocationsMoved;
+ // Scope for locks, Free have it's own lock
+ {
+ VmaMutexLockRead lock(vector->GetMutex(), vector->GetAllocator()->m_UseMutex);
+ prevCount = vector->GetBlockCount();
+ freedBlockSize = move.srcAllocation->GetBlock()->m_pMetadata->GetSize();
+ }
+ vector->Free(move.srcAllocation);
+ {
+ VmaMutexLockRead lock(vector->GetMutex(), vector->GetAllocator()->m_UseMutex);
+ currentCount = vector->GetBlockCount();
+ }
freedBlockSize *= prevCount - currentCount;
- VkDeviceSize dstBlockSize = dst->GetBlock()->m_pMetadata->GetSize();
- vector->Free(dst, false);
- freedBlockSize += dstBlockSize * (currentCount - vector->GetBlockCount());
- currentCount = vector->GetBlockCount();
+ VkDeviceSize dstBlockSize;
+ {
+ VmaMutexLockRead lock(vector->GetMutex(), vector->GetAllocator()->m_UseMutex);
+ dstBlockSize = move.dstTmpAllocation->GetBlock()->m_pMetadata->GetSize();
+ }
+ vector->Free(move.dstTmpAllocation);
+ {
+ VmaMutexLockRead lock(vector->GetMutex(), vector->GetAllocator()->m_UseMutex);
+ freedBlockSize += dstBlockSize * (currentCount - vector->GetBlockCount());
+ currentCount = vector->GetBlockCount();
+ }
result = VK_INCOMPLETE;
break;
@@ -13094,8 +13253,8 @@ VkResult VmaDefragmentationContext_T::DefragmentPassEnd(VmaDefragmentationPassMo
if (prevCount > currentCount)
{
size_t freedBlocks = prevCount - currentCount;
- m_Stats.deviceMemoryBlocksFreed += static_cast<uint32_t>(freedBlocks);
- m_Stats.bytesFreed += freedBlockSize;
+ m_PassStats.deviceMemoryBlocksFreed += static_cast<uint32_t>(freedBlocks);
+ m_PassStats.bytesFreed += freedBlockSize;
}
switch (m_Algorithm)
@@ -13108,9 +13267,15 @@ VkResult VmaDefragmentationContext_T::DefragmentPassEnd(VmaDefragmentationPassMo
StateExtensive& state = reinterpret_cast<StateExtensive*>(m_AlgorithmState)[vectorIndex];
if (state.firstFreeBlock != SIZE_MAX)
{
- state.firstFreeBlock -= prevCount - currentCount;
- if (state.firstFreeBlock != 0)
- state.firstFreeBlock -= vector->GetBlock(state.firstFreeBlock - 1)->m_pMetadata->IsEmpty();
+ const size_t diff = prevCount - currentCount;
+ if (state.firstFreeBlock >= diff)
+ {
+ state.firstFreeBlock -= diff;
+ if (state.firstFreeBlock != 0)
+ state.firstFreeBlock -= vector->GetBlock(state.firstFreeBlock - 1)->m_pMetadata->IsEmpty();
+ }
+ else
+ state.firstFreeBlock = 0;
}
}
}
@@ -13120,6 +13285,13 @@ VkResult VmaDefragmentationContext_T::DefragmentPassEnd(VmaDefragmentationPassMo
moveInfo.pMoves = VMA_NULL;
m_Moves.clear();
+ // Update stats
+ m_GlobalStats.allocationsMoved += m_PassStats.allocationsMoved;
+ m_GlobalStats.bytesFreed += m_PassStats.bytesFreed;
+ m_GlobalStats.bytesMoved += m_PassStats.bytesMoved;
+ m_GlobalStats.deviceMemoryBlocksFreed += m_PassStats.deviceMemoryBlocksFreed;
+ m_PassStats = { 0 };
+
// Move blocks with immovable allocations according to algorithm
if (immovableBlocks.size() > 0)
{
@@ -13131,12 +13303,14 @@ VkResult VmaDefragmentationContext_T::DefragmentPassEnd(VmaDefragmentationPassMo
{
bool swapped = false;
// Move to the start of free blocks range
- for (const ImmovableBlock& block : immovableBlocks)
+ for (const FragmentedBlock& block : immovableBlocks)
{
- StateExtensive& state = reinterpret_cast<StateExtensive*>(m_AlgorithmState)[block.vectorIndex];
+ StateExtensive& state = reinterpret_cast<StateExtensive*>(m_AlgorithmState)[block.data];
if (state.operation != StateExtensive::Operation::Cleanup)
{
- VmaBlockVector* vector = m_pBlockVectors[block.vectorIndex];
+ VmaBlockVector* vector = m_pBlockVectors[block.data];
+ VmaMutexLockWrite lock(vector->GetMutex(), vector->GetAllocator()->m_UseMutex);
+
for (size_t i = 0, count = vector->GetBlockCount() - m_ImmovableBlockCount; i < count; ++i)
{
if (vector->GetBlock(i) == block.block)
@@ -13144,9 +13318,12 @@ VkResult VmaDefragmentationContext_T::DefragmentPassEnd(VmaDefragmentationPassMo
VMA_SWAP(vector->m_Blocks[i], vector->m_Blocks[vector->GetBlockCount() - ++m_ImmovableBlockCount]);
if (state.firstFreeBlock != SIZE_MAX)
{
- if (i < state.firstFreeBlock - 1)
+ if (i + 1 < state.firstFreeBlock)
{
- VMA_SWAP(vector->m_Blocks[i], vector->m_Blocks[--state.firstFreeBlock]);
+ if (state.firstFreeBlock > 1)
+ VMA_SWAP(vector->m_Blocks[i], vector->m_Blocks[--state.firstFreeBlock]);
+ else
+ --state.firstFreeBlock;
}
}
swapped = true;
@@ -13163,10 +13340,12 @@ VkResult VmaDefragmentationContext_T::DefragmentPassEnd(VmaDefragmentationPassMo
default:
{
// Move to the begining
- for (const ImmovableBlock& block : immovableBlocks)
+ for (const FragmentedBlock& block : immovableBlocks)
{
- VmaBlockVector* vector = m_pBlockVectors[block.vectorIndex];
- for (size_t i = m_ImmovableBlockCount; vector->GetBlockCount(); ++i)
+ VmaBlockVector* vector = m_pBlockVectors[block.data];
+ VmaMutexLockWrite lock(vector->GetMutex(), vector->GetAllocator()->m_UseMutex);
+
+ for (size_t i = m_ImmovableBlockCount; i < vector->GetBlockCount(); ++i)
{
if (vector->GetBlock(i) == block.block)
{
@@ -13179,6 +13358,13 @@ VkResult VmaDefragmentationContext_T::DefragmentPassEnd(VmaDefragmentationPassMo
}
}
}
+
+ // Bulk-map destination blocks
+ for (const FragmentedBlock& block : mappedBlocks)
+ {
+ VkResult res = block.block->Map(allocator, block.data, VMA_NULL);
+ VMA_ASSERT(res == VK_SUCCESS);
+ }
return result;
}
@@ -13188,9 +13374,10 @@ bool VmaDefragmentationContext_T::ComputeDefragmentation(VmaBlockVector& vector,
{
case VMA_DEFRAGMENTATION_FLAG_ALGORITHM_FAST_BIT:
return ComputeDefragmentation_Fast(vector);
- default: // Default algoritm
+ default:
+ VMA_ASSERT(0);
case VMA_DEFRAGMENTATION_FLAG_ALGORITHM_BALANCED_BIT:
- return ComputeDefragmentation_Balanced(vector);
+ return ComputeDefragmentation_Balanced(vector, index, true);
case VMA_DEFRAGMENTATION_FLAG_ALGORITHM_FULL_BIT:
return ComputeDefragmentation_Full(vector);
case VMA_DEFRAGMENTATION_FLAG_ALGORITHM_EXTENSIVE_BIT:
@@ -13216,12 +13403,27 @@ VmaDefragmentationContext_T::MoveAllocationData VmaDefragmentationContext_T::Get
return moveData;
}
-bool VmaDefragmentationContext_T::IncrementCounters(uint32_t& allocations, VkDeviceSize bytes)
+VmaDefragmentationContext_T::CounterStatus VmaDefragmentationContext_T::CheckCounters(VkDeviceSize bytes)
{
- if (++allocations >= m_MaxPassAllocations || bytes >= m_MaxPassBytes)
+ // Ignore allocation if will exceed max size for copy
+ if (m_PassStats.bytesMoved + bytes > m_MaxPassBytes)
{
- m_Stats.bytesMoved += bytes;
- m_Stats.allocationsMoved += allocations;
+ if (++m_IgnoredAllocs < MAX_ALLOCS_TO_IGNORE)
+ return CounterStatus::Ignore;
+ else
+ return CounterStatus::End;
+ }
+ return CounterStatus::Pass;
+}
+
+bool VmaDefragmentationContext_T::IncrementCounters(VkDeviceSize bytes)
+{
+ m_PassStats.bytesMoved += bytes;
+ // Early return when max found
+ if (++m_PassStats.allocationsMoved >= m_MaxPassAllocations || m_PassStats.bytesMoved >= m_MaxPassBytes)
+ {
+ VMA_ASSERT(m_PassStats.allocationsMoved == m_MaxPassAllocations ||
+ m_PassStats.bytesMoved == m_MaxPassBytes && "Exceeded maximal pass threshold!");
return true;
}
return false;
@@ -13229,8 +13431,6 @@ bool VmaDefragmentationContext_T::IncrementCounters(uint32_t& allocations, VkDev
bool VmaDefragmentationContext_T::ReallocWithinBlock(VmaBlockVector& vector, VmaDeviceMemoryBlock* block)
{
- VkDeviceSize currentBytesMoved = 0;
- uint32_t currentAllocsMoved = 0;
VmaBlockMetadata* metadata = block->m_pMetadata;
for (VmaAllocHandle handle = metadata->GetAllocationListBegin();
@@ -13241,8 +13441,18 @@ bool VmaDefragmentationContext_T::ReallocWithinBlock(VmaBlockVector& vector, Vma
// Ignore newly created allocations by defragmentation algorithm
if (moveData.move.srcAllocation->GetUserData() == this)
continue;
- VmaAllocation& dst = reinterpret_cast<VmaAllocation&>(moveData.move.internalData);
-
+ switch (CheckCounters(moveData.move.srcAllocation->GetSize()))
+ {
+ case CounterStatus::Ignore:
+ continue;
+ case CounterStatus::End:
+ return true;
+ default:
+ VMA_ASSERT(0);
+ case CounterStatus::Pass:
+ break;
+ }
+
VkDeviceSize offset = moveData.move.srcAllocation->GetOffset();
if (offset != 0 && metadata->GetSumFreeSize() >= moveData.size)
{
@@ -13264,32 +13474,21 @@ bool VmaDefragmentationContext_T::ReallocWithinBlock(VmaBlockVector& vector, Vma
moveData.flags,
this,
moveData.type,
- &dst) == VK_SUCCESS)
+ &moveData.move.dstTmpAllocation) == VK_SUCCESS)
{
- moveData.move.dstMemory = dst->GetMemory();
- moveData.move.dstOffset = dst->GetOffset();
m_Moves.push_back(moveData.move);
- currentBytesMoved += moveData.size;
-
- if (IncrementCounters(currentAllocsMoved, currentBytesMoved))
+ if (IncrementCounters(moveData.size))
return true;
}
}
}
}
}
-
- m_Stats.bytesMoved += currentBytesMoved;
- m_Stats.allocationsMoved += currentAllocsMoved;
return false;
}
bool VmaDefragmentationContext_T::AllocInOtherBlock(size_t start, size_t end, MoveAllocationData& data, VmaBlockVector& vector)
{
- VkDeviceSize currentBytesMoved = 0;
- uint32_t currentAllocsMoved = 0;
- VmaAllocation& dst = reinterpret_cast<VmaAllocation&>(data.move.internalData);
-
for (; start < end; ++start)
{
VmaDeviceMemoryBlock* dstBlock = vector.GetBlock(start);
@@ -13302,22 +13501,15 @@ bool VmaDefragmentationContext_T::AllocInOtherBlock(size_t start, size_t end, Mo
this,
data.type,
0,
- &dst) == VK_SUCCESS)
+ &data.move.dstTmpAllocation) == VK_SUCCESS)
{
- data.move.dstMemory = dst->GetMemory();
- data.move.dstOffset = dst->GetOffset();
m_Moves.push_back(data.move);
- currentBytesMoved += data.size;
-
- if (IncrementCounters(currentAllocsMoved, currentBytesMoved))
+ if (IncrementCounters(data.size))
return true;
break;
}
}
}
-
- m_Stats.bytesMoved += currentBytesMoved;
- m_Stats.allocationsMoved += currentAllocsMoved;
return false;
}
@@ -13338,6 +13530,17 @@ bool VmaDefragmentationContext_T::ComputeDefragmentation_Fast(VmaBlockVector& ve
// Ignore newly created allocations by defragmentation algorithm
if (moveData.move.srcAllocation->GetUserData() == this)
continue;
+ switch (CheckCounters(moveData.move.srcAllocation->GetSize()))
+ {
+ case CounterStatus::Ignore:
+ continue;
+ case CounterStatus::End:
+ return true;
+ default:
+ VMA_ASSERT(0);
+ case CounterStatus::Pass:
+ break;
+ }
// Check all previous blocks for free space
if (AllocInOtherBlock(0, i, moveData, vector))
@@ -13347,19 +13550,24 @@ bool VmaDefragmentationContext_T::ComputeDefragmentation_Fast(VmaBlockVector& ve
return false;
}
-bool VmaDefragmentationContext_T::ComputeDefragmentation_Balanced(VmaBlockVector& vector)
+bool VmaDefragmentationContext_T::ComputeDefragmentation_Balanced(VmaBlockVector& vector, size_t index, bool update)
{
// Go over every allocation and try to fit it in previous blocks at lowest offsets,
// if not possible: realloc within single block to minimize offset (exclude offset == 0),
// but only if there are noticable gaps between them (some heuristic, ex. average size of allocation in block)
+ VMA_ASSERT(m_AlgorithmState != VMA_NULL);
- VkDeviceSize currentBytesMoved = 0;
- uint32_t currentAllocsMoved = 0;
+ StateBalanced& vectorState = reinterpret_cast<StateBalanced*>(m_AlgorithmState)[index];
+ if (update && vectorState.avgAllocSize == UINT64_MAX)
+ UpdateVectorStatistics(vector, vectorState);
+ const size_t startMoveCount = m_Moves.size();
+ VkDeviceSize minimalFreeRegion = vectorState.avgFreeSize / 2;
for (size_t i = vector.GetBlockCount() - 1; i > m_ImmovableBlockCount; --i)
{
VmaDeviceMemoryBlock* block = vector.GetBlock(i);
VmaBlockMetadata* metadata = block->m_pMetadata;
+ VkDeviceSize prevFreeRegionSize = 0;
for (VmaAllocHandle handle = metadata->GetAllocationListBegin();
handle != VK_NULL_HANDLE;
@@ -13369,53 +13577,72 @@ bool VmaDefragmentationContext_T::ComputeDefragmentation_Balanced(VmaBlockVector
// Ignore newly created allocations by defragmentation algorithm
if (moveData.move.srcAllocation->GetUserData() == this)
continue;
+ switch (CheckCounters(moveData.move.srcAllocation->GetSize()))
+ {
+ case CounterStatus::Ignore:
+ continue;
+ case CounterStatus::End:
+ return true;
+ default:
+ VMA_ASSERT(0);
+ case CounterStatus::Pass:
+ break;
+ }
// Check all previous blocks for free space
const size_t prevMoveCount = m_Moves.size();
if (AllocInOtherBlock(0, i, moveData, vector))
return true;
+ VkDeviceSize nextFreeRegionSize = metadata->GetNextFreeRegionSize(handle);
// If no room found then realloc within block for lower offset
VkDeviceSize offset = moveData.move.srcAllocation->GetOffset();
if (prevMoveCount == m_Moves.size() && offset != 0 && metadata->GetSumFreeSize() >= moveData.size)
{
- VmaAllocationRequest request = {};
- if (metadata->CreateAllocationRequest(
- moveData.size,
- moveData.alignment,
- false,
- moveData.type,
- VMA_ALLOCATION_CREATE_STRATEGY_MIN_OFFSET_BIT,
- &request))
+ // Check if realloc will make sense
+ if (prevFreeRegionSize >= minimalFreeRegion ||
+ nextFreeRegionSize >= minimalFreeRegion ||
+ moveData.size <= vectorState.avgFreeSize ||
+ moveData.size <= vectorState.avgAllocSize)
{
- if (metadata->GetAllocationOffset(request.allocHandle) < offset)
+ VmaAllocationRequest request = {};
+ if (metadata->CreateAllocationRequest(
+ moveData.size,
+ moveData.alignment,
+ false,
+ moveData.type,
+ VMA_ALLOCATION_CREATE_STRATEGY_MIN_OFFSET_BIT,
+ &request))
{
- VmaAllocation& dst = reinterpret_cast<VmaAllocation&>(moveData.move.internalData);
- if (vector.CommitAllocationRequest(
- request,
- block,
- moveData.alignment,
- moveData.flags,
- this,
- moveData.type,
- &dst) == VK_SUCCESS)
+ if (metadata->GetAllocationOffset(request.allocHandle) < offset)
{
- moveData.move.dstMemory = dst->GetMemory();
- moveData.move.dstOffset = dst->GetOffset();
- m_Moves.push_back(moveData.move);
- currentBytesMoved += moveData.size;
-
- if (IncrementCounters(currentAllocsMoved, currentBytesMoved))
- return true;
+ if (vector.CommitAllocationRequest(
+ request,
+ block,
+ moveData.alignment,
+ moveData.flags,
+ this,
+ moveData.type,
+ &moveData.move.dstTmpAllocation) == VK_SUCCESS)
+ {
+ m_Moves.push_back(moveData.move);
+ if (IncrementCounters(moveData.size))
+ return true;
+ }
}
}
}
}
+ prevFreeRegionSize = nextFreeRegionSize;
}
}
-
- m_Stats.bytesMoved += currentBytesMoved;
- m_Stats.allocationsMoved += currentAllocsMoved;
+
+ // No moves perfomed, update statistics to current vector state
+ if (startMoveCount == m_Moves.size() && !update)
+ {
+ vectorState.avgAllocSize = UINT64_MAX;
+ return ComputeDefragmentation_Balanced(vector, index, false);
+ }
return false;
}
@@ -13424,9 +13651,6 @@ bool VmaDefragmentationContext_T::ComputeDefragmentation_Full(VmaBlockVector& ve
// Go over every allocation and try to fit it in previous blocks at lowest offsets,
// if not possible: realloc within single block to minimize offset (exclude offset == 0)
- VkDeviceSize currentBytesMoved = 0;
- uint32_t currentAllocsMoved = 0;
-
for (size_t i = vector.GetBlockCount() - 1; i > m_ImmovableBlockCount; --i)
{
VmaDeviceMemoryBlock* block = vector.GetBlock(i);
@@ -13440,6 +13664,17 @@ bool VmaDefragmentationContext_T::ComputeDefragmentation_Full(VmaBlockVector& ve
// Ignore newly created allocations by defragmentation algorithm
if (moveData.move.srcAllocation->GetUserData() == this)
continue;
+ switch (CheckCounters(moveData.move.srcAllocation->GetSize()))
+ {
+ case CounterStatus::Ignore:
+ continue;
+ case CounterStatus::End:
+ return true;
+ default:
+ VMA_ASSERT(0);
+ case CounterStatus::Pass:
+ break;
+ }
// Check all previous blocks for free space
const size_t prevMoveCount = m_Moves.size();
@@ -13461,7 +13696,6 @@ bool VmaDefragmentationContext_T::ComputeDefragmentation_Full(VmaBlockVector& ve
{
if (metadata->GetAllocationOffset(request.allocHandle) < offset)
{
- VmaAllocation& dst = reinterpret_cast<VmaAllocation&>(moveData.move.internalData);
if (vector.CommitAllocationRequest(
request,
block,
@@ -13469,14 +13703,10 @@ bool VmaDefragmentationContext_T::ComputeDefragmentation_Full(VmaBlockVector& ve
moveData.flags,
this,
moveData.type,
- &dst) == VK_SUCCESS)
+ &moveData.move.dstTmpAllocation) == VK_SUCCESS)
{
- moveData.move.dstMemory = dst->GetMemory();
- moveData.move.dstOffset = dst->GetOffset();
m_Moves.push_back(moveData.move);
- currentBytesMoved += moveData.size;
-
- if (IncrementCounters(currentAllocsMoved, currentBytesMoved))
+ if (IncrementCounters(moveData.size))
return true;
}
}
@@ -13484,9 +13714,6 @@ bool VmaDefragmentationContext_T::ComputeDefragmentation_Full(VmaBlockVector& ve
}
}
}
-
- m_Stats.bytesMoved += currentBytesMoved;
- m_Stats.allocationsMoved += currentAllocsMoved;
return false;
}
@@ -13511,6 +13738,13 @@ bool VmaDefragmentationContext_T::ComputeDefragmentation_Extensive(VmaBlockVecto
case StateExtensive::Operation::FindFreeBlockTexture:
case StateExtensive::Operation::FindFreeBlockAll:
{
+ // No more blocks to free, just perform fast realloc and move to cleanup
+ if (vectorState.firstFreeBlock == 0)
+ {
+ vectorState.operation = StateExtensive::Operation::Cleanup;
+ return ComputeDefragmentation_Fast(vector);
+ }
+
// No free blocks, have to clear last one
size_t last = (vectorState.firstFreeBlock == SIZE_MAX ? vector.GetBlockCount() : vectorState.firstFreeBlock) - 1;
VmaBlockMetadata* freeMetadata = vector.GetBlock(last)->m_pMetadata;
@@ -13521,6 +13755,17 @@ bool VmaDefragmentationContext_T::ComputeDefragmentation_Extensive(VmaBlockVecto
handle = freeMetadata->GetNextAllocation(handle))
{
MoveAllocationData moveData = GetMoveData(handle, freeMetadata);
+ switch (CheckCounters(moveData.move.srcAllocation->GetSize()))
+ {
+ case CounterStatus::Ignore:
+ continue;
+ case CounterStatus::End:
+ return true;
+ default:
+ VMA_ASSERT(0);
+ case CounterStatus::Pass:
+ break;
+ }
// Check all previous blocks for free space
if (AllocInOtherBlock(0, last, moveData, vector))
@@ -13568,8 +13813,7 @@ bool VmaDefragmentationContext_T::ComputeDefragmentation_Extensive(VmaBlockVecto
}
vectorState.firstFreeBlock = last;
// Nothing done, block found without reallocations, can perform another reallocs in same pass
- if (prevMoveCount == m_Moves.size())
- return ComputeDefragmentation_Extensive(vector, index);
+ return ComputeDefragmentation_Extensive(vector, index);
}
break;
}
@@ -13637,6 +13881,9 @@ bool VmaDefragmentationContext_T::ComputeDefragmentation_Extensive(VmaBlockVecto
}
break;
}
+ case StateExtensive::Operation::Cleanup:
+ // Cleanup is handled below so that other operations may reuse the cleanup code. This case is here to prevent the unhandled enum value warning (C4062).
+ break;
}
if (vectorState.operation == StateExtensive::Operation::Cleanup)
@@ -13655,6 +13902,27 @@ bool VmaDefragmentationContext_T::ComputeDefragmentation_Extensive(VmaBlockVecto
return false;
}
+void VmaDefragmentationContext_T::UpdateVectorStatistics(VmaBlockVector& vector, StateBalanced& state)
+{
+ size_t allocCount = 0;
+ size_t freeCount = 0;
+ state.avgFreeSize = 0;
+ state.avgAllocSize = 0;
+
+ for (size_t i = 0; i < vector.GetBlockCount(); ++i)
+ {
+ VmaBlockMetadata* metadata = vector.GetBlock(i)->m_pMetadata;
+
+ allocCount += metadata->GetAllocationCount();
+ freeCount += metadata->GetFreeRegionsCount();
+ state.avgFreeSize += metadata->GetSumFreeSize();
+ state.avgAllocSize += metadata->GetSize();
+ }
+
+ state.avgAllocSize = (state.avgAllocSize - state.avgFreeSize) / allocCount;
+ state.avgFreeSize /= freeCount;
+}
+
bool VmaDefragmentationContext_T::MoveDataToFreeBlocks(VmaSuballocationType currentType,
VmaBlockVector& vector, size_t firstFreeBlock,
bool& texturePresent, bool& bufferPresent, bool& otherPresent)
@@ -13673,6 +13941,17 @@ bool VmaDefragmentationContext_T::MoveDataToFreeBlocks(VmaSuballocationType curr
// Ignore newly created allocations by defragmentation algorithm
if (moveData.move.srcAllocation->GetUserData() == this)
continue;
+ switch (CheckCounters(moveData.move.srcAllocation->GetSize()))
+ {
+ case CounterStatus::Ignore:
+ continue;
+ case CounterStatus::End:
+ return true;
+ default:
+ VMA_ASSERT(0);
+ case CounterStatus::Pass:
+ break;
+ }
// Move only single type of resources at once
if (!VmaIsBufferImageGranularityConflict(moveData.type, currentType))
@@ -14404,6 +14683,7 @@ VkResult VmaAllocator_T::AllocateDedicatedMemory(
VkMemoryPriorityAllocateInfoEXT priorityInfo = { VK_STRUCTURE_TYPE_MEMORY_PRIORITY_ALLOCATE_INFO_EXT };
if(m_UseExtMemoryPriority)
{
+ VMA_ASSERT(priority >= 0.f && priority <= 1.f);
priorityInfo.priority = priority;
VmaPnextChainPushFront(&allocInfo, &priorityInfo);
}
@@ -14515,9 +14795,12 @@ VkResult VmaAllocator_T::AllocateDedicatedMemoryPage(
}
}
- *pAllocation = m_AllocationObjectAllocator.Allocate(isUserDataString, isMappingAllowed);
+ *pAllocation = m_AllocationObjectAllocator.Allocate(isMappingAllowed);
(*pAllocation)->InitDedicatedAllocation(pool, memTypeIndex, hMemory, suballocType, pMappedData, size);
- (*pAllocation)->SetUserData(this, pUserData);
+ if (isUserDataString)
+ (*pAllocation)->SetName(this, (const char*)pUserData);
+ else
+ (*pAllocation)->SetUserData(this, pUserData);
m_Budget.AddAllocation(MemoryTypeIndexToHeapIndex(memTypeIndex), size);
if(VMA_DEBUG_INITIALIZE_ALLOCATIONS)
{
@@ -14629,8 +14912,8 @@ VkResult VmaAllocator_T::FindMemoryTypeIndex(
if((requiredFlags & ~currFlags) == 0)
{
// Calculate cost as number of bits from preferredFlags not present in this memory type.
- uint32_t currCost = VmaCountBitsSet(preferredFlags & ~currFlags) +
- VmaCountBitsSet(currFlags & notPreferredFlags);
+ uint32_t currCost = VMA_COUNT_BITS_SET(preferredFlags & ~currFlags) +
+ VMA_COUNT_BITS_SET(currFlags & notPreferredFlags);
// Remember memory type with lowest cost.
if(currCost < minCost)
{
@@ -14849,6 +15132,8 @@ void VmaAllocator_T::FreeMemory(
FillAllocation(allocation, VMA_ALLOCATION_FILL_PATTERN_DESTROYED);
}
+ allocation->FreeName(this);
+
switch(allocation->GetType())
{
case VmaAllocation_T::ALLOCATION_TYPE_BLOCK:
@@ -14994,6 +15279,7 @@ void VmaAllocator_T::GetAllocationInfo(VmaAllocation hAllocation, VmaAllocationI
pAllocationInfo->size = hAllocation->GetSize();
pAllocationInfo->pMappedData = hAllocation->GetMappedData();
pAllocationInfo->pUserData = hAllocation->GetUserData();
+ pAllocationInfo->pName = hAllocation->GetName();
}
VkResult VmaAllocator_T::CreatePool(const VmaPoolCreateInfo* pCreateInfo, VmaPool* pPool)
@@ -15664,89 +15950,90 @@ uint32_t VmaAllocator_T::GetGpuDefragmentationMemoryTypeBits()
#if VMA_STATS_STRING_ENABLED
void VmaAllocator_T::PrintDetailedMap(VmaJsonWriter& json)
{
- bool dedicatedAllocationsStarted = false;
- for(uint32_t memTypeIndex = 0; memTypeIndex < GetMemoryTypeCount(); ++memTypeIndex)
- {
- VmaDedicatedAllocationList& dedicatedAllocList = m_DedicatedAllocations[memTypeIndex];
- if(!dedicatedAllocList.IsEmpty())
- {
- if(dedicatedAllocationsStarted == false)
- {
- dedicatedAllocationsStarted = true;
- json.WriteString("DedicatedAllocations");
- json.BeginObject();
- }
-
- json.BeginString("Type ");
- json.ContinueString(memTypeIndex);
- json.EndString();
-
- dedicatedAllocList.BuildStatsString(json);
- }
- }
- if(dedicatedAllocationsStarted)
- {
- json.EndObject();
- }
-
+ json.WriteString("DefaultPools");
+ json.BeginObject();
{
- bool allocationsStarted = false;
- for(uint32_t memTypeIndex = 0; memTypeIndex < GetMemoryTypeCount(); ++memTypeIndex)
+ for (uint32_t memTypeIndex = 0; memTypeIndex < GetMemoryTypeCount(); ++memTypeIndex)
{
VmaBlockVector* pBlockVector = m_pBlockVectors[memTypeIndex];
- if(pBlockVector != VMA_NULL)
+ VmaDedicatedAllocationList& dedicatedAllocList = m_DedicatedAllocations[memTypeIndex];
+ if (pBlockVector != VMA_NULL)
{
- if (pBlockVector->IsEmpty() == false)
+ json.BeginString("Type ");
+ json.ContinueString(memTypeIndex);
+ json.EndString();
+ json.BeginObject();
{
- if (allocationsStarted == false)
- {
- allocationsStarted = true;
- json.WriteString("DefaultPools");
- json.BeginObject();
- }
-
- json.BeginString("Type ");
- json.ContinueString(memTypeIndex);
- json.EndString();
+ json.WriteString("PreferredBlockSize");
+ json.WriteNumber(pBlockVector->GetPreferredBlockSize());
- json.BeginObject();
+ json.WriteString("Blocks");
pBlockVector->PrintDetailedMap(json);
- json.EndObject();
+
+ json.WriteString("DedicatedAllocations");
+ dedicatedAllocList.BuildStatsString(json);
}
+ json.EndObject();
}
}
- if(allocationsStarted)
- {
- json.EndObject();
- }
}
+ json.EndObject();
- // Custom pools
+ json.WriteString("CustomPools");
+ json.BeginObject();
{
VmaMutexLockRead lock(m_PoolsMutex, m_UseMutex);
- if(!m_Pools.IsEmpty())
+ if (!m_Pools.IsEmpty())
{
- json.WriteString("Pools");
- json.BeginObject();
- for(VmaPool pool = m_Pools.Front(); pool != VMA_NULL; pool = m_Pools.GetNext(pool))
+ for (uint32_t memTypeIndex = 0; memTypeIndex < GetMemoryTypeCount(); ++memTypeIndex)
{
- json.BeginString();
- json.ContinueString(pool->GetId());
- json.EndString();
+ bool displayType = true;
+ size_t index = 0;
+ for (VmaPool pool = m_Pools.Front(); pool != VMA_NULL; pool = m_Pools.GetNext(pool))
+ {
+ VmaBlockVector& blockVector = pool->m_BlockVector;
+ if (blockVector.GetMemoryTypeIndex() == memTypeIndex)
+ {
+ if (displayType)
+ {
+ json.BeginString("Type ");
+ json.ContinueString(memTypeIndex);
+ json.EndString();
+ json.BeginArray();
+ displayType = false;
+ }
- json.BeginObject();
- pool->m_BlockVector.PrintDetailedMap(json);
+ json.BeginObject();
+ {
+ json.WriteString("Name");
+ json.BeginString();
+ json.ContinueString_Size(index++);
+ if (pool->GetName())
+ {
+ json.WriteString(" - ");
+ json.WriteString(pool->GetName());
+ }
+ json.EndString();
- if (!pool->m_DedicatedAllocations.IsEmpty())
- {
- json.WriteString("DedicatedAllocations");
- pool->m_DedicatedAllocations.BuildStatsString(json);
+ json.WriteString("PreferredBlockSize");
+ json.WriteNumber(blockVector.GetPreferredBlockSize());
+
+ json.WriteString("Blocks");
+ blockVector.PrintDetailedMap(json);
+
+ json.WriteString("DedicatedAllocations");
+ pool->m_DedicatedAllocations.BuildStatsString(json);
+ }
+ json.EndObject();
+ }
}
- json.EndObject();
+
+ if (!displayType)
+ json.EndArray();
}
- json.EndObject();
}
}
+ json.EndObject();
}
#endif // VMA_STATS_STRING_ENABLED
#endif // _VMA_ALLOCATOR_T_FUNCTIONS
@@ -15857,127 +16144,176 @@ VMA_CALL_PRE void VMA_CALL_POST vmaBuildStatsString(
VmaStringBuilder sb(allocator->GetAllocationCallbacks());
{
- VmaJsonWriter json(allocator->GetAllocationCallbacks(), sb);
- json.BeginObject();
-
VmaBudget budgets[VK_MAX_MEMORY_HEAPS];
allocator->GetHeapBudgets(budgets, 0, allocator->GetMemoryHeapCount());
VmaTotalStatistics stats;
allocator->CalculateStatistics(&stats);
- json.WriteString("Total");
- VmaPrintDetailedStatistics(json, stats.total);
-
- for(uint32_t heapIndex = 0; heapIndex < allocator->GetMemoryHeapCount(); ++heapIndex)
+ VmaJsonWriter json(allocator->GetAllocationCallbacks(), sb);
+ json.BeginObject();
{
- json.BeginString("Heap ");
- json.ContinueString(heapIndex);
- json.EndString();
+ json.WriteString("General");
json.BeginObject();
+ {
+ const VkPhysicalDeviceProperties& deviceProperties = allocator->m_PhysicalDeviceProperties;
+ const VkPhysicalDeviceMemoryProperties& memoryProperties = allocator->m_MemProps;
- json.WriteString("Size");
- json.WriteNumber(allocator->m_MemProps.memoryHeaps[heapIndex].size);
+ json.WriteString("API");
+ json.WriteString("Vulkan");
- json.WriteString("Flags");
- json.BeginArray(true);
- if((allocator->m_MemProps.memoryHeaps[heapIndex].flags & VK_MEMORY_HEAP_DEVICE_LOCAL_BIT) != 0)
- {
- json.WriteString("DEVICE_LOCAL");
- }
- json.EndArray();
+ json.WriteString("apiVersion");
+ json.BeginString();
+ json.ContinueString(VK_API_VERSION_MAJOR(deviceProperties.apiVersion));
+ json.ContinueString(".");
+ json.ContinueString(VK_API_VERSION_MINOR(deviceProperties.apiVersion));
+ json.ContinueString(".");
+ json.ContinueString(VK_API_VERSION_PATCH(deviceProperties.apiVersion));
+ json.EndString();
- json.WriteString("Budget");
- json.BeginObject();
- {
- json.WriteString("BlockBytes");
- json.WriteNumber(budgets[heapIndex].statistics.blockBytes);
- json.WriteString("AllocationBytes");
- json.WriteNumber(budgets[heapIndex].statistics.allocationBytes);
- json.WriteString("BlockCount");
- json.WriteNumber(budgets[heapIndex].statistics.blockCount);
- json.WriteString("AllocationCount");
- json.WriteNumber(budgets[heapIndex].statistics.allocationCount);
- json.WriteString("Usage");
- json.WriteNumber(budgets[heapIndex].usage);
- json.WriteString("Budget");
- json.WriteNumber(budgets[heapIndex].budget);
+ json.WriteString("GPU");
+ json.WriteString(deviceProperties.deviceName);
+ json.WriteString("deviceType");
+ json.WriteNumber(static_cast<uint32_t>(deviceProperties.deviceType));
+
+ json.WriteString("maxMemoryAllocationCount");
+ json.WriteNumber(deviceProperties.limits.maxMemoryAllocationCount);
+ json.WriteString("bufferImageGranularity");
+ json.WriteNumber(deviceProperties.limits.bufferImageGranularity);
+ json.WriteString("nonCoherentAtomSize");
+ json.WriteNumber(deviceProperties.limits.nonCoherentAtomSize);
+
+ json.WriteString("memoryHeapCount");
+ json.WriteNumber(memoryProperties.memoryHeapCount);
+ json.WriteString("memoryTypeCount");
+ json.WriteNumber(memoryProperties.memoryTypeCount);
}
json.EndObject();
-
- if(stats.memoryHeap[heapIndex].statistics.blockCount > 0)
- {
- json.WriteString("Stats");
- VmaPrintDetailedStatistics(json, stats.memoryHeap[heapIndex]);
- }
-
- for(uint32_t typeIndex = 0; typeIndex < allocator->GetMemoryTypeCount(); ++typeIndex)
+ }
+ {
+ json.WriteString("Total");
+ VmaPrintDetailedStatistics(json, stats.total);
+ }
+ {
+ json.WriteString("MemoryInfo");
+ json.BeginObject();
{
- if(allocator->MemoryTypeIndexToHeapIndex(typeIndex) == heapIndex)
+ for (uint32_t heapIndex = 0; heapIndex < allocator->GetMemoryHeapCount(); ++heapIndex)
{
- json.BeginString("Type ");
- json.ContinueString(typeIndex);
+ json.BeginString("Heap ");
+ json.ContinueString(heapIndex);
json.EndString();
-
json.BeginObject();
-
- json.WriteString("Flags");
- json.BeginArray(true);
- VkMemoryPropertyFlags flags = allocator->m_MemProps.memoryTypes[typeIndex].propertyFlags;
- if((flags & VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT) != 0)
- {
- json.WriteString("DEVICE_LOCAL");
- }
- if((flags & VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT) != 0)
- {
- json.WriteString("HOST_VISIBLE");
- }
- if((flags & VK_MEMORY_PROPERTY_HOST_COHERENT_BIT) != 0)
- {
- json.WriteString("HOST_COHERENT");
- }
- if((flags & VK_MEMORY_PROPERTY_HOST_CACHED_BIT) != 0)
- {
- json.WriteString("HOST_CACHED");
- }
- if((flags & VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT) != 0)
- {
- json.WriteString("LAZILY_ALLOCATED");
- }
-#if VMA_VULKAN_VERSION >= 1001000
- if((flags & VK_MEMORY_PROPERTY_PROTECTED_BIT) != 0)
- {
- json.WriteString("PROTECTED");
- }
-#endif // #if VMA_VULKAN_VERSION >= 1001000
-#if VK_AMD_device_coherent_memory
- if((flags & VK_MEMORY_PROPERTY_DEVICE_COHERENT_BIT_AMD_COPY) != 0)
- {
- json.WriteString("DEVICE_COHERENT");
- }
- if((flags & VK_MEMORY_PROPERTY_DEVICE_UNCACHED_BIT_AMD_COPY) != 0)
{
- json.WriteString("DEVICE_UNCACHED");
- }
-#endif // #if VK_AMD_device_coherent_memory
- json.EndArray();
+ const VkMemoryHeap& heapInfo = allocator->m_MemProps.memoryHeaps[heapIndex];
+ json.WriteString("Flags");
+ json.BeginArray(true);
+ {
+ if (heapInfo.flags & VK_MEMORY_HEAP_DEVICE_LOCAL_BIT)
+ json.WriteString("DEVICE_LOCAL");
+ #if VMA_VULKAN_VERSION >= 1001000
+ if (heapInfo.flags & VK_MEMORY_HEAP_MULTI_INSTANCE_BIT)
+ json.WriteString("MULTI_INSTANCE");
+ #endif
+
+ VkMemoryHeapFlags flags = heapInfo.flags &
+ ~(VK_MEMORY_HEAP_DEVICE_LOCAL_BIT
+ #if VMA_VULKAN_VERSION >= 1001000
+ | VK_MEMORY_HEAP_MULTI_INSTANCE_BIT
+ #endif
+ );
+ if (flags != 0)
+ json.WriteNumber(flags);
+ }
+ json.EndArray();
+
+ json.WriteString("Size");
+ json.WriteNumber(heapInfo.size);
+
+ json.WriteString("Budget");
+ json.BeginObject();
+ {
+ json.WriteString("BudgetBytes");
+ json.WriteNumber(budgets[heapIndex].budget);
+ json.WriteString("UsageBytes");
+ json.WriteNumber(budgets[heapIndex].usage);
+ }
+ json.EndObject();
- if(stats.memoryType[typeIndex].statistics.blockCount > 0)
- {
json.WriteString("Stats");
- VmaPrintDetailedStatistics(json, stats.memoryType[typeIndex]);
- }
+ VmaPrintDetailedStatistics(json, stats.memoryHeap[heapIndex]);
+ json.WriteString("MemoryPools");
+ json.BeginObject();
+ {
+ for (uint32_t typeIndex = 0; typeIndex < allocator->GetMemoryTypeCount(); ++typeIndex)
+ {
+ if (allocator->MemoryTypeIndexToHeapIndex(typeIndex) == heapIndex)
+ {
+ json.BeginString("Type ");
+ json.ContinueString(typeIndex);
+ json.EndString();
+ json.BeginObject();
+ {
+ json.WriteString("Flags");
+ json.BeginArray(true);
+ {
+ VkMemoryPropertyFlags flags = allocator->m_MemProps.memoryTypes[typeIndex].propertyFlags;
+ if (flags & VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT)
+ json.WriteString("DEVICE_LOCAL");
+ if (flags & VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT)
+ json.WriteString("HOST_VISIBLE");
+ if (flags & VK_MEMORY_PROPERTY_HOST_COHERENT_BIT)
+ json.WriteString("HOST_COHERENT");
+ if (flags & VK_MEMORY_PROPERTY_HOST_CACHED_BIT)
+ json.WriteString("HOST_CACHED");
+ if (flags & VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT)
+ json.WriteString("LAZILY_ALLOCATED");
+ #if VMA_VULKAN_VERSION >= 1001000
+ if (flags & VK_MEMORY_PROPERTY_PROTECTED_BIT)
+ json.WriteString("PROTECTED");
+ #endif
+ #if VK_AMD_device_coherent_memory
+ if (flags & VK_MEMORY_PROPERTY_DEVICE_COHERENT_BIT_AMD_COPY)
+ json.WriteString("DEVICE_COHERENT_AMD");
+ if (flags & VK_MEMORY_PROPERTY_DEVICE_UNCACHED_BIT_AMD_COPY)
+ json.WriteString("DEVICE_UNCACHED_AMD");
+ #endif
+
+ flags &= ~(VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT
+ #if VMA_VULKAN_VERSION >= 1001000
+ | VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT
+ #endif
+ #if VK_AMD_device_coherent_memory
+ | VK_MEMORY_PROPERTY_DEVICE_COHERENT_BIT_AMD_COPY
+ | VK_MEMORY_PROPERTY_DEVICE_UNCACHED_BIT_AMD_COPY
+ #endif
+ | VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT
+ | VK_MEMORY_PROPERTY_HOST_COHERENT_BIT
+ | VK_MEMORY_PROPERTY_HOST_CACHED_BIT);
+ if (flags != 0)
+ json.WriteNumber(flags);
+ }
+ json.EndArray();
+
+ json.WriteString("Stats");
+ VmaPrintDetailedStatistics(json, stats.memoryType[typeIndex]);
+ }
+ json.EndObject();
+ }
+ }
+
+ }
+ json.EndObject();
+ }
json.EndObject();
}
}
-
json.EndObject();
}
- if(detailedMap == VK_TRUE)
- {
+
+ if (detailedMap == VK_TRUE)
allocator->PrintDetailedMap(json);
- }
json.EndObject();
}
@@ -16428,6 +16764,14 @@ VMA_CALL_PRE void VMA_CALL_POST vmaSetAllocationUserData(
allocation->SetUserData(allocator, pUserData);
}
+VMA_CALL_PRE void VMA_CALL_POST vmaSetAllocationName(
+ VmaAllocator VMA_NOT_NULL allocator,
+ VmaAllocation VMA_NOT_NULL allocation,
+ const char* VMA_NULLABLE pName)
+{
+ allocation->SetName(allocator, pName);
+}
+
VMA_CALL_PRE void VMA_CALL_POST vmaGetAllocationMemoryProperties(
VmaAllocator VMA_NOT_NULL allocator,
VmaAllocation VMA_NOT_NULL allocation,
@@ -16567,13 +16911,20 @@ VMA_CALL_PRE VkResult VMA_CALL_POST vmaBeginDefragmentation(
VMA_DEBUG_LOG("vmaBeginDefragmentation");
+ if (pInfo->pool != VMA_NULL)
+ {
+ // Check if run on supported algorithms
+ if (pInfo->pool->m_BlockVector.GetAlgorithm() & VMA_POOL_CREATE_LINEAR_ALGORITHM_BIT)
+ return VK_ERROR_FEATURE_NOT_PRESENT;
+ }
+
VMA_DEBUG_GLOBAL_MUTEX_LOCK
*pContext = vma_new(allocator, VmaDefragmentationContext_T)(allocator, *pInfo);
return VK_SUCCESS;
}
-VMA_CALL_PRE VkResult VMA_CALL_POST vmaEndDefragmentation(
+VMA_CALL_PRE void VMA_CALL_POST vmaEndDefragmentation(
VmaAllocator allocator,
VmaDefragmentationContext context,
VmaDefragmentationStats* pStats)
@@ -16587,7 +16938,6 @@ VMA_CALL_PRE VkResult VMA_CALL_POST vmaEndDefragmentation(
if (pStats)
context->GetStats(*pStats);
vma_delete(allocator, context);
- return VK_SUCCESS;
}
VMA_CALL_PRE VkResult VMA_CALL_POST vmaBeginDefragmentationPass(
@@ -16864,6 +17214,50 @@ VMA_CALL_PRE VkResult VMA_CALL_POST vmaCreateBufferWithAlignment(
return res;
}
+VMA_CALL_PRE VkResult VMA_CALL_POST vmaCreateAliasingBuffer(
+ VmaAllocator VMA_NOT_NULL allocator,
+ VmaAllocation VMA_NOT_NULL allocation,
+ const VkBufferCreateInfo* VMA_NOT_NULL pBufferCreateInfo,
+ VkBuffer VMA_NULLABLE_NON_DISPATCHABLE* VMA_NOT_NULL pBuffer)
+{
+ VMA_ASSERT(allocator && pBufferCreateInfo && pBuffer && allocation);
+
+ VMA_DEBUG_LOG("vmaCreateAliasingBuffer");
+
+ *pBuffer = VK_NULL_HANDLE;
+
+ if (pBufferCreateInfo->size == 0)
+ {
+ return VK_ERROR_INITIALIZATION_FAILED;
+ }
+ if ((pBufferCreateInfo->usage & VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_COPY) != 0 &&
+ !allocator->m_UseKhrBufferDeviceAddress)
+ {
+ VMA_ASSERT(0 && "Creating a buffer with VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT is not valid if VMA_ALLOCATOR_CREATE_BUFFER_DEVICE_ADDRESS_BIT was not used.");
+ return VK_ERROR_INITIALIZATION_FAILED;
+ }
+
+ VMA_DEBUG_GLOBAL_MUTEX_LOCK
+
+ // 1. Create VkBuffer.
+ VkResult res = (*allocator->GetVulkanFunctions().vkCreateBuffer)(
+ allocator->m_hDevice,
+ pBufferCreateInfo,
+ allocator->GetAllocationCallbacks(),
+ pBuffer);
+ if (res >= 0)
+ {
+ // 2. Bind buffer with memory.
+ res = allocator->BindBufferMemory(allocation, 0, *pBuffer, VMA_NULL);
+ if (res >= 0)
+ {
+ return VK_SUCCESS;
+ }
+ (*allocator->GetVulkanFunctions().vkDestroyBuffer)(allocator->m_hDevice, *pBuffer, allocator->GetAllocationCallbacks());
+ }
+ return res;
+}
+
VMA_CALL_PRE void VMA_CALL_POST vmaDestroyBuffer(
VmaAllocator allocator,
VkBuffer buffer,
@@ -16985,10 +17379,52 @@ VMA_CALL_PRE VkResult VMA_CALL_POST vmaCreateImage(
return res;
}
+VMA_CALL_PRE VkResult VMA_CALL_POST vmaCreateAliasingImage(
+ VmaAllocator VMA_NOT_NULL allocator,
+ VmaAllocation VMA_NOT_NULL allocation,
+ const VkImageCreateInfo* VMA_NOT_NULL pImageCreateInfo,
+ VkImage VMA_NULLABLE_NON_DISPATCHABLE* VMA_NOT_NULL pImage)
+{
+ VMA_ASSERT(allocator && pImageCreateInfo && pImage && allocation);
+
+ *pImage = VK_NULL_HANDLE;
+
+ VMA_DEBUG_LOG("vmaCreateImage");
+
+ if (pImageCreateInfo->extent.width == 0 ||
+ pImageCreateInfo->extent.height == 0 ||
+ pImageCreateInfo->extent.depth == 0 ||
+ pImageCreateInfo->mipLevels == 0 ||
+ pImageCreateInfo->arrayLayers == 0)
+ {
+ return VK_ERROR_INITIALIZATION_FAILED;
+ }
+
+ VMA_DEBUG_GLOBAL_MUTEX_LOCK
+
+ // 1. Create VkImage.
+ VkResult res = (*allocator->GetVulkanFunctions().vkCreateImage)(
+ allocator->m_hDevice,
+ pImageCreateInfo,
+ allocator->GetAllocationCallbacks(),
+ pImage);
+ if (res >= 0)
+ {
+ // 2. Bind image with memory.
+ res = allocator->BindImageMemory(allocation, 0, *pImage, VMA_NULL);
+ if (res >= 0)
+ {
+ return VK_SUCCESS;
+ }
+ (*allocator->GetVulkanFunctions().vkDestroyImage)(allocator->m_hDevice, *pImage, allocator->GetAllocationCallbacks());
+ }
+ return res;
+}
+
VMA_CALL_PRE void VMA_CALL_POST vmaDestroyImage(
- VmaAllocator allocator,
- VkImage image,
- VmaAllocation allocation)
+ VmaAllocator VMA_NOT_NULL allocator,
+ VkImage VMA_NULLABLE_NON_DISPATCHABLE image,
+ VmaAllocation VMA_NULLABLE allocation)
{
VMA_ASSERT(allocator);
@@ -17176,9 +17612,10 @@ before including these headers (like `WIN32_LEAN_AND_MEAN` or
`WINVER` for Windows, `VK_USE_PLATFORM_WIN32_KHR` for Vulkan), you must define
them before every `#include` of this library.
-\note This library is written in C++, but has C-compatible interface.
+This library is written in C++, but has C-compatible interface.
Thus you can include and use vk_mem_alloc.h in C or C++ code, but full
implementation with `VMA_IMPLEMENTATION` macro must be compiled as C++, NOT as C.
+Some features of C++14 used. STL containers, RTTI, or C++ exceptions are not used.
\section quick_start_initialization Initialization
@@ -17775,14 +18212,28 @@ To use custom memory pools:
Example:
\code
+// Find memoryTypeIndex for the pool.
+VkBufferCreateInfo sampleBufCreateInfo = { VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO };
+sampleBufCreateInfo.size = 0x10000; // Doesn't matter.
+sampleBufCreateInfo.usage = VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT | VK_BUFFER_USAGE_TRANSFER_DST_BIT;
+
+VmaAllocationCreateInfo sampleAllocCreateInfo = {};
+sampleAllocCreateInfo.usage = VMA_MEMORY_USAGE_AUTO;
+
+uint32_t memTypeIndex;
+VkResult res = vmaFindMemoryTypeIndexForBufferInfo(allocator,
+ &sampleBufCreateInfo, &sampleAllocCreateInfo, &memTypeIndex);
+// Check res...
+
// Create a pool that can have at most 2 blocks, 128 MiB each.
VmaPoolCreateInfo poolCreateInfo = {};
-poolCreateInfo.memoryTypeIndex = ...
+poolCreateInfo.memoryTypeIndex = memTypeIndex;
poolCreateInfo.blockSize = 128ull * 1024 * 1024;
poolCreateInfo.maxBlockCount = 2;
VmaPool pool;
-vmaCreatePool(allocator, &poolCreateInfo, &pool);
+res = vmaCreatePool(allocator, &poolCreateInfo, &pool);
+// Check res...
// Allocate a buffer out of it.
VkBufferCreateInfo bufCreateInfo = { VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO };
@@ -17794,8 +18245,8 @@ allocCreateInfo.pool = pool;
VkBuffer buf;
VmaAllocation alloc;
-VmaAllocationInfo allocInfo;
-vmaCreateBuffer(allocator, &bufCreateInfo, &allocCreateInfo, &buf, &alloc, &allocInfo);
+res = vmaCreateBuffer(allocator, &bufCreateInfo, &allocCreateInfo, &buf, &alloc, nullptr);
+// Check res...
\endcode
You have to free all allocations made from this pool before destroying it.
@@ -17933,6 +18384,8 @@ you can achieve behavior of a ring buffer / queue.
Ring buffer is available only in pools with one memory block -
VmaPoolCreateInfo::maxBlockCount must be 1. Otherwise behavior is undefined.
+\note \ref defragmentation is not supported in custom pools created with #VMA_POOL_CREATE_LINEAR_ALGORITHM_BIT.
+
\page defragmentation Defragmentation
@@ -17965,41 +18418,105 @@ for(;;)
res = vmaBeginDefragmentationPass(allocator, defragCtx, &pass);
if(res == VK_SUCCESS)
break;
- else if(res == VK_INCOMPLETE)
+ else if(res != VK_INCOMPLETE)
+ // Handle error...
+
+ for(uint32_t i = 0; i < pass.moveCount; ++i)
{
- for(uint32_t i = 0; i < pass.moveCount; ++i)
- {
- //- Inspect pass.pMoves[i].srcAllocation, identify what buffer or image it represents.
- //- Recreate this buffer or image at pass.pMoves[i].dstMemory, pass.pMoves[i].dstOffset.
- //- Issue a vkCmdCopyBuffer/vkCmdCopyImage to copy its content to the new place.
- }
- //- Make sure the copy commands finished executing.
- //- Update appropriate descriptors to point to the new places.
- res = vmaEndDefragmentationPass(allocator, defragCtx, &pass);
- if(res == VK_SUCCESS)
- break;
- else if(res != VK_INCOMPLETE)
- // Handle error...
+ // Inspect pass.pMoves[i].srcAllocation, identify what buffer/image it represents.
+ VmaAllocationInfo allocInfo;
+ vmaGetAllocationInfo(allocator, pMoves[i].srcAllocation, &allocInfo);
+ MyEngineResourceData* resData = (MyEngineResourceData*)allocInfo.pUserData;
+
+ // Recreate and bind this buffer/image at: pass.pMoves[i].dstMemory, pass.pMoves[i].dstOffset.
+ VkImageCreateInfo imgCreateInfo = ...
+ VkImage newImg;
+ res = vkCreateImage(device, &imgCreateInfo, nullptr, &newImg);
+ // Check res...
+ res = vmaBindImageMemory(allocator, pMoves[i].dstTmpAllocation, newImg);
+ // Check res...
+
+ // Issue a vkCmdCopyBuffer/vkCmdCopyImage to copy its content to the new place.
+ vkCmdCopyImage(cmdBuf, resData->img, ..., newImg, ...);
}
- else
+
+ // Make sure the copy commands finished executing.
+ vkWaitForFences(...);
+
+ // Destroy old buffers/images bound with pass.pMoves[i].srcAllocation.
+ for(uint32_t i = 0; i < pass.moveCount; ++i)
+ {
+ // ...
+ vkDestroyImage(device, resData->img, nullptr);
+ }
+
+ // Update appropriate descriptors to point to the new places...
+
+ res = vmaEndDefragmentationPass(allocator, defragCtx, &pass);
+ if(res == VK_SUCCESS)
+ break;
+ else if(res != VK_INCOMPLETE)
// Handle error...
}
vmaEndDefragmentation(allocator, defragCtx, nullptr);
\endcode
-You can defragment a specific custom pool by setting VmaDefragmentationInfo::pool
-(like in the example above) or all the default pools by setting this member to null.
+Although functions like vmaCreateBuffer(), vmaCreateImage(), vmaDestroyBuffer(), vmaDestroyImage()
+create/destroy an allocation and a buffer/image at once, these are just a shortcut for
+creating the resource, allocating memory, and binding them together.
+Defragmentation works on memory allocations only. You must handle the rest manually.
+Defragmentation is an iterative process that should repreat "passes" as long as related functions
+return `VK_INCOMPLETE` not `VK_SUCCESS`.
+In each pass:
+
+1. vmaBeginDefragmentationPass() function call:
+ - Calculates and returns the list of allocations to be moved in this pass.
+ Note this can be a time-consuming process.
+ - Reserves destination memory for them by creating temporary destination allocations
+ that you can query for their `VkDeviceMemory` + offset using vmaGetAllocationInfo().
+2. Inside the pass, **you should**:
+ - Inspect the returned list of allocations to be moved.
+ - Create new buffers/images and bind them at the returned destination temporary allocations.
+ - Copy data from source to destination resources if necessary.
+ - Destroy the source buffers/images, but NOT their allocations.
+3. vmaEndDefragmentationPass() function call:
+ - Frees the source memory reserved for the allocations that are moved.
+ - Modifies source #VmaAllocation objects that are moved to point to the destination reserved memory.
+ - Frees `VkDeviceMemory` blocks that became empty.
Unlike in previous iterations of the defragmentation API, there is no list of "movable" allocations passed as a parameter.
Defragmentation algorithm tries to move all suitable allocations.
You can, however, refuse to move some of them inside a defragmentation pass, by setting
`pass.pMoves[i].operation` to #VMA_DEFRAGMENTATION_MOVE_OPERATION_IGNORE.
-However, this is not recommended and may result in suboptimal packing of the allocations after defragmentation.
+This is not recommended and may result in suboptimal packing of the allocations after defragmentation.
If you cannot ensure any allocation can be moved, it is better to keep movable allocations separate in a custom pool.
-You can also decide to destroy an allocation instead of moving it.
-You should then set `pass.pMoves[i].operation` to #VMA_DEFRAGMENTATION_MOVE_OPERATION_DESTROY.
+Inside a pass, for each allocation that should be moved:
+
+- You should copy its data from the source to the destination place by calling e.g. `vkCmdCopyBuffer()`, `vkCmdCopyImage()`.
+ - You need to make sure these commands finished executing before destroying the source buffers/images and before calling vmaEndDefragmentationPass().
+- If a resource doesn't contain any meaningful data, e.g. it is a transient color attachment image to be cleared,
+ filled, and used temporarily in each rendering frame, you can just recreate this image
+ without copying its data.
+- If the resource is in `HOST_VISIBLE` and `HOST_CACHED` memory, you can copy its data on the CPU
+ using `memcpy()`.
+- If you cannot move the allocation, you can set `pass.pMoves[i].operation` to #VMA_DEFRAGMENTATION_MOVE_OPERATION_IGNORE.
+ This will cancel the move.
+ - vmaEndDefragmentationPass() will then free the destination memory
+ not the source memory of the allocation, leaving it unchanged.
+- If you decide the allocation is unimportant and can be destroyed instead of moved (e.g. it wasn't used for long time),
+ you can set `pass.pMoves[i].operation` to #VMA_DEFRAGMENTATION_MOVE_OPERATION_DESTROY.
+ - vmaEndDefragmentationPass() will then free both source and destination memory, and will destroy the source #VmaAllocation object.
+
+You can defragment a specific custom pool by setting VmaDefragmentationInfo::pool
+(like in the example above) or all the default pools by setting this member to null.
+
+Defragmentation is always performed in each pool separately.
+Allocations are never moved between different Vulkan memory types.
+The size of the destination memory reserved for a moved allocation is the same as the original one.
+Alignment of an allocation as it was determined using `vkGetBufferMemoryRequirements()` etc. is also respected after defragmentation.
+Buffers/images should be recreated with the same `VkBufferCreateInfo` / `VkImageCreateInfo` parameters as the original ones.
You can perform the defragmentation incrementally to limit the number of allocations and bytes to be moved
in each pass, e.g. to call it in sync with render frames and not to experience too big hitches.
@@ -18009,6 +18526,13 @@ It is also safe to perform the defragmentation asynchronously to render frames a
usage, possibly from multiple threads, with the exception that allocations
returned in VmaDefragmentationPassMoveInfo::pMoves shouldn't be destroyed until the defragmentation pass is ended.
+<b>Mapping</b> is preserved on allocations that are moved during defragmentation.
+Whether through #VMA_ALLOCATION_CREATE_MAPPED_BIT or vmaMapMemory(), the allocations
+are mapped at their new place. Of course, pointer to the mapped data changes, so it needs to be queried
+using VmaAllocationInfo::pMappedData.
+
+\note Defragmentation is not supported in custom pools created with #VMA_POOL_CREATE_LINEAR_ALGORITHM_BIT.
+
\page statistics Statistics
@@ -18081,6 +18605,8 @@ To do that, fill VmaAllocationCreateInfo::pUserData field when creating
an allocation. It is an opaque `void*` pointer. You can use it e.g. as a pointer,
some handle, index, key, ordinal number or any other value that would associate
the allocation with your custom metadata.
+It it useful to identify appropriate data structures in your engine given #VmaAllocation,
+e.g. when doing \ref defragmentation.
\code
VkBufferCreateInfo bufCreateInfo = ...
@@ -18111,44 +18637,21 @@ vmaBuildStatsString() in hexadecimal form.
\section allocation_names Allocation names
-There is alternative mode available where `pUserData` pointer is used to point to
-a null-terminated string, giving a name to the allocation. To use this mode,
-set #VMA_ALLOCATION_CREATE_USER_DATA_COPY_STRING_BIT flag in VmaAllocationCreateInfo::flags.
-Then `pUserData` passed as VmaAllocationCreateInfo::pUserData or argument to
-vmaSetAllocationUserData() must be either null or a pointer to a null-terminated string.
+An allocation can also carry a null-terminated string, giving a name to the allocation.
+To set it, call vmaSetAllocationName().
The library creates internal copy of the string, so the pointer you pass doesn't need
to be valid for whole lifetime of the allocation. You can free it after the call.
\code
-VkImageCreateInfo imageInfo = ...
-
std::string imageName = "Texture: ";
imageName += fileName;
-
-VmaAllocationCreateInfo allocCreateInfo = {};
-allocCreateInfo.usage = VMA_MEMORY_USAGE_AUTO;
-allocCreateInfo.flags = VMA_ALLOCATION_CREATE_USER_DATA_COPY_STRING_BIT;
-allocCreateInfo.pUserData = imageName.c_str();
-
-VkImage image;
-VmaAllocation allocation;
-vmaCreateImage(allocator, &imageInfo, &allocCreateInfo, &image, &allocation, nullptr);
+vmaSetAllocationName(allocator, allocation, imageName.c_str());
\endcode
-The value of `pUserData` pointer of the allocation will be different than the one
-you passed when setting allocation's name - pointing to a buffer managed
-internally that holds copy of the string.
-
-\code
-VmaAllocationInfo allocInfo;
-vmaGetAllocationInfo(allocator, allocation, &allocInfo);
-const char* imageName = (const char*)allocInfo.pUserData;
-printf("Image name: %s\n", imageName);
-\endcode
+The string can be later retrieved by inspecting VmaAllocationInfo::pName.
+It is also printed in JSON report created by vmaBuildStatsString().
-That string is also printed in JSON report created by vmaBuildStatsString().
-
-\note Passing string name to VMA allocation doesn't automatically set it to the Vulkan buffer or image created with it.
+\note Setting string name to VMA allocation doesn't automatically set it to the Vulkan buffer or image created with it.
You must do it manually using an extension like VK_EXT_debug_utils, which is independent of this library.
@@ -18491,6 +18994,7 @@ imgCreateInfo.samples = VK_SAMPLE_COUNT_1_BIT;
VmaAllocationCreateInfo allocCreateInfo = {};
allocCreateInfo.usage = VMA_MEMORY_USAGE_AUTO;
allocCreateInfo.flags = VMA_ALLOCATION_CREATE_DEDICATED_MEMORY_BIT;
+allocCreateInfo.priority = 1.0f;
VkImage img;
VmaAllocation alloc;
@@ -18502,7 +19006,8 @@ Consider creating them as dedicated allocations using #VMA_ALLOCATION_CREATE_DED
especially if they are large or if you plan to destroy and recreate them with different sizes
e.g. when display resolution changes.
Prefer to create such resources first and all other GPU resources (like textures and vertex buffers) later.
-
+When VK_EXT_memory_priority extension is enabled, it is also worth setting high priority to such allocation
+to decrease chances to be evicted to system memory by the operating system.
\section usage_patterns_staging_copy_upload Staging copy for upload
@@ -18653,6 +19158,7 @@ else
// [Executed in runtime]:
memcpy(stagingAllocInfo.pMappedData, myData, myDataSize);
+ //vkCmdPipelineBarrier: VK_ACCESS_HOST_WRITE_BIT --> VK_ACCESS_TRANSFER_READ_BIT
VkBufferCopy bufCopy = {
0, // srcOffset
0, // dstOffset,
@@ -18815,6 +19321,86 @@ To learn more about this extension, see:
+\page vk_ext_memory_priority VK_EXT_memory_priority
+
+VK_EXT_memory_priority is a device extension that allows to pass additional "priority"
+value to Vulkan memory allocations that the implementation may use prefer certain
+buffers and images that are critical for performance to stay in device-local memory
+in cases when the memory is over-subscribed, while some others may be moved to the system memory.
+
+VMA offers convenient usage of this extension.
+If you enable it, you can pass "priority" parameter when creating allocations or custom pools
+and the library automatically passes the value to Vulkan using this extension.
+
+If you want to use this extension in connection with VMA, follow these steps:
+
+\section vk_ext_memory_priority_initialization Initialization
+
+1) Call `vkEnumerateDeviceExtensionProperties` for the physical device.
+Check if the extension is supported - if returned array of `VkExtensionProperties` contains "VK_EXT_memory_priority".
+
+2) Call `vkGetPhysicalDeviceFeatures2` for the physical device instead of old `vkGetPhysicalDeviceFeatures`.
+Attach additional structure `VkPhysicalDeviceMemoryPriorityFeaturesEXT` to `VkPhysicalDeviceFeatures2::pNext` to be returned.
+Check if the device feature is really supported - check if `VkPhysicalDeviceMemoryPriorityFeaturesEXT::memoryPriority` is true.
+
+3) While creating device with `vkCreateDevice`, enable this extension - add "VK_EXT_memory_priority"
+to the list passed as `VkDeviceCreateInfo::ppEnabledExtensionNames`.
+
+4) While creating the device, also don't set `VkDeviceCreateInfo::pEnabledFeatures`.
+Fill in `VkPhysicalDeviceFeatures2` structure instead and pass it as `VkDeviceCreateInfo::pNext`.
+Enable this device feature - attach additional structure `VkPhysicalDeviceMemoryPriorityFeaturesEXT` to
+`VkPhysicalDeviceFeatures2::pNext` chain and set its member `memoryPriority` to `VK_TRUE`.
+
+5) While creating #VmaAllocator with vmaCreateAllocator() inform VMA that you
+have enabled this extension and feature - add #VMA_ALLOCATOR_CREATE_EXT_MEMORY_PRIORITY_BIT
+to VmaAllocatorCreateInfo::flags.
+
+\section vk_ext_memory_priority_usage Usage
+
+When using this extension, you should initialize following member:
+
+- VmaAllocationCreateInfo::priority when creating a dedicated allocation with #VMA_ALLOCATION_CREATE_DEDICATED_MEMORY_BIT.
+- VmaPoolCreateInfo::priority when creating a custom pool.
+
+It should be a floating-point value between `0.0f` and `1.0f`, where recommended default is `0.5f`.
+Memory allocated with higher value can be treated by the Vulkan implementation as higher priority
+and so it can have lower chances of being pushed out to system memory, experiencing degraded performance.
+
+It might be a good idea to create performance-critical resources like color-attachment or depth-stencil images
+as dedicated and set high priority to them. For example:
+
+\code
+VkImageCreateInfo imgCreateInfo = { VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO };
+imgCreateInfo.imageType = VK_IMAGE_TYPE_2D;
+imgCreateInfo.extent.width = 3840;
+imgCreateInfo.extent.height = 2160;
+imgCreateInfo.extent.depth = 1;
+imgCreateInfo.mipLevels = 1;
+imgCreateInfo.arrayLayers = 1;
+imgCreateInfo.format = VK_FORMAT_R8G8B8A8_UNORM;
+imgCreateInfo.tiling = VK_IMAGE_TILING_OPTIMAL;
+imgCreateInfo.initialLayout = VK_IMAGE_LAYOUT_UNDEFINED;
+imgCreateInfo.usage = VK_IMAGE_USAGE_SAMPLED_BIT | VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT;
+imgCreateInfo.samples = VK_SAMPLE_COUNT_1_BIT;
+
+VmaAllocationCreateInfo allocCreateInfo = {};
+allocCreateInfo.usage = VMA_MEMORY_USAGE_AUTO;
+allocCreateInfo.flags = VMA_ALLOCATION_CREATE_DEDICATED_MEMORY_BIT;
+allocCreateInfo.priority = 1.0f;
+
+VkImage img;
+VmaAllocation alloc;
+vmaCreateImage(allocator, &imgCreateInfo, &allocCreateInfo, &img, &alloc, nullptr);
+\endcode
+
+`priority` member is ignored in the following situations:
+
+- Allocations created in custom pools: They inherit the priority, along with all other allocation parameters
+ from the parametrs passed in #VmaPoolCreateInfo when the pool was created.
+- Allocations created in default pools: They inherit the priority from the parameters
+ VMA used when creating default pools, which means `priority == 0.5f`.
+
+
\page vk_amd_device_coherent_memory VK_AMD_device_coherent_memory
VK_AMD_device_coherent_memory is a device extension that enables access to
@@ -18939,6 +19525,28 @@ accompanying this library.
functions.
- #VmaVirtualBlock is not safe to be used from multiple threads simultaneously.
+\section general_considerations_versioning_and_compatibility Versioning and compatibility
+
+The library uses [**Semantic Versioning**](https://semver.org/),
+which means version numbers follow convention: Major.Minor.Patch (e.g. 2.3.0), where:
+
+- Incremented Patch version means a release is backward- and forward-compatible,
+ introducing only some internal improvements, bug fixes, optimizations etc.
+ or changes that are out of scope of the official API described in this documentation.
+- Incremented Minor version means a release is backward-compatible,
+ so existing code that uses the library should continue to work, while some new
+ symbols could have been added: new structures, functions, new values in existing
+ enums and bit flags, new structure members, but not new function parameters.
+- Incrementing Major version means a release could break some backward compatibility.
+
+All changes between official releases are documented in file "CHANGELOG.md".
+
+\warning Backward compatiblity is considered on the level of C++ source code, not binary linkage.
+Adding new members to existing structures is treated as backward compatible if initializing
+the new members to binary zero results in the old behavior.
+You should always fully initialize all library structures to zeros and not rely on their
+exact binary size.
+
\section general_considerations_validation_layer_warnings Validation layer warnings
When using this library, you can meet following types of warnings issued by
diff --git a/thirdparty/zlib/crc32.c b/thirdparty/zlib/crc32.c
index 9580440c0e..a1bdce5c23 100644
--- a/thirdparty/zlib/crc32.c
+++ b/thirdparty/zlib/crc32.c
@@ -1,12 +1,10 @@
/* crc32.c -- compute the CRC-32 of a data stream
- * Copyright (C) 1995-2006, 2010, 2011, 2012, 2016 Mark Adler
+ * Copyright (C) 1995-2022 Mark Adler
* For conditions of distribution and use, see copyright notice in zlib.h
*
- * Thanks to Rodney Brown <rbrown64@csc.com.au> for his contribution of faster
- * CRC methods: exclusive-oring 32 bits of data at a time, and pre-computing
- * tables for updating the shift register in one step with three exclusive-ors
- * instead of four steps with four exclusive-ors. This results in about a
- * factor of two increase in speed on a Power PC G4 (PPC7455) using gcc -O3.
+ * This interleaved implementation of a CRC makes use of pipelined multiple
+ * arithmetic-logic units, commonly found in modern CPU cores. It is due to
+ * Kadatch and Jenkins (2010). See doc/crc-doc.1.0.pdf in this distribution.
*/
/* @(#) $Id$ */
@@ -14,11 +12,12 @@
/*
Note on the use of DYNAMIC_CRC_TABLE: there is no mutex or semaphore
protection on the static variables used to control the first-use generation
- of the crc tables. Therefore, if you #define DYNAMIC_CRC_TABLE, you should
+ of the crc tables. Therefore, if you #define DYNAMIC_CRC_TABLE, you should
first call get_crc_table() to initialize the tables before allowing more than
one thread to use crc32().
- DYNAMIC_CRC_TABLE and MAKECRCH can be #defined to write out crc32.h.
+ MAKECRCH can be #defined to write out crc32.h. A main() routine is also
+ produced, so that this one source file can be compiled to an executable.
*/
#ifdef MAKECRCH
@@ -28,415 +27,1090 @@
# endif /* !DYNAMIC_CRC_TABLE */
#endif /* MAKECRCH */
-#include "zutil.h" /* for STDC and FAR definitions */
+#include "zutil.h" /* for Z_U4, Z_U8, z_crc_t, and FAR definitions */
-/* Definitions for doing the crc four data bytes at a time. */
-#if !defined(NOBYFOUR) && defined(Z_U4)
-# define BYFOUR
+ /*
+ A CRC of a message is computed on N braids of words in the message, where
+ each word consists of W bytes (4 or 8). If N is 3, for example, then three
+ running sparse CRCs are calculated respectively on each braid, at these
+ indices in the array of words: 0, 3, 6, ..., 1, 4, 7, ..., and 2, 5, 8, ...
+ This is done starting at a word boundary, and continues until as many blocks
+ of N * W bytes as are available have been processed. The results are combined
+ into a single CRC at the end. For this code, N must be in the range 1..6 and
+ W must be 4 or 8. The upper limit on N can be increased if desired by adding
+ more #if blocks, extending the patterns apparent in the code. In addition,
+ crc32.h would need to be regenerated, if the maximum N value is increased.
+
+ N and W are chosen empirically by benchmarking the execution time on a given
+ processor. The choices for N and W below were based on testing on Intel Kaby
+ Lake i7, AMD Ryzen 7, ARM Cortex-A57, Sparc64-VII, PowerPC POWER9, and MIPS64
+ Octeon II processors. The Intel, AMD, and ARM processors were all fastest
+ with N=5, W=8. The Sparc, PowerPC, and MIPS64 were all fastest at N=5, W=4.
+ They were all tested with either gcc or clang, all using the -O3 optimization
+ level. Your mileage may vary.
+ */
+
+/* Define N */
+#ifdef Z_TESTN
+# define N Z_TESTN
+#else
+# define N 5
+#endif
+#if N < 1 || N > 6
+# error N must be in 1..6
#endif
-#ifdef BYFOUR
- local unsigned long crc32_little OF((unsigned long,
- const unsigned char FAR *, z_size_t));
- local unsigned long crc32_big OF((unsigned long,
- const unsigned char FAR *, z_size_t));
-# define TBLS 8
+
+/*
+ z_crc_t must be at least 32 bits. z_word_t must be at least as long as
+ z_crc_t. It is assumed here that z_word_t is either 32 bits or 64 bits, and
+ that bytes are eight bits.
+ */
+
+/*
+ Define W and the associated z_word_t type. If W is not defined, then a
+ braided calculation is not used, and the associated tables and code are not
+ compiled.
+ */
+#ifdef Z_TESTW
+# if Z_TESTW-1 != -1
+# define W Z_TESTW
+# endif
#else
-# define TBLS 1
-#endif /* BYFOUR */
+# ifdef MAKECRCH
+# define W 8 /* required for MAKECRCH */
+# else
+# if defined(__x86_64__) || defined(__aarch64__)
+# define W 8
+# else
+# define W 4
+# endif
+# endif
+#endif
+#ifdef W
+# if W == 8 && defined(Z_U8)
+ typedef Z_U8 z_word_t;
+# elif defined(Z_U4)
+# undef W
+# define W 4
+ typedef Z_U4 z_word_t;
+# else
+# undef W
+# endif
+#endif
-/* Local functions for crc concatenation */
-local unsigned long gf2_matrix_times OF((unsigned long *mat,
- unsigned long vec));
-local void gf2_matrix_square OF((unsigned long *square, unsigned long *mat));
-local uLong crc32_combine_ OF((uLong crc1, uLong crc2, z_off64_t len2));
+/* Local functions. */
+local z_crc_t multmodp OF((z_crc_t a, z_crc_t b));
+local z_crc_t x2nmodp OF((z_off64_t n, unsigned k));
+/* If available, use the ARM processor CRC32 instruction. */
+#if defined(__aarch64__) && defined(__ARM_FEATURE_CRC32) && W == 8
+# define ARMCRC32
+#endif
+
+#if defined(W) && (!defined(ARMCRC32) || defined(DYNAMIC_CRC_TABLE))
+/*
+ Swap the bytes in a z_word_t to convert between little and big endian. Any
+ self-respecting compiler will optimize this to a single machine byte-swap
+ instruction, if one is available. This assumes that word_t is either 32 bits
+ or 64 bits.
+ */
+local z_word_t byte_swap(word)
+ z_word_t word;
+{
+# if W == 8
+ return
+ (word & 0xff00000000000000) >> 56 |
+ (word & 0xff000000000000) >> 40 |
+ (word & 0xff0000000000) >> 24 |
+ (word & 0xff00000000) >> 8 |
+ (word & 0xff000000) << 8 |
+ (word & 0xff0000) << 24 |
+ (word & 0xff00) << 40 |
+ (word & 0xff) << 56;
+# else /* W == 4 */
+ return
+ (word & 0xff000000) >> 24 |
+ (word & 0xff0000) >> 8 |
+ (word & 0xff00) << 8 |
+ (word & 0xff) << 24;
+# endif
+}
+#endif
+
+/* CRC polynomial. */
+#define POLY 0xedb88320 /* p(x) reflected, with x^32 implied */
#ifdef DYNAMIC_CRC_TABLE
-local volatile int crc_table_empty = 1;
-local z_crc_t FAR crc_table[TBLS][256];
+local z_crc_t FAR crc_table[256];
+local z_crc_t FAR x2n_table[32];
local void make_crc_table OF((void));
+#ifdef W
+ local z_word_t FAR crc_big_table[256];
+ local z_crc_t FAR crc_braid_table[W][256];
+ local z_word_t FAR crc_braid_big_table[W][256];
+ local void braid OF((z_crc_t [][256], z_word_t [][256], int, int));
+#endif
#ifdef MAKECRCH
- local void write_table OF((FILE *, const z_crc_t FAR *));
+ local void write_table OF((FILE *, const z_crc_t FAR *, int));
+ local void write_table32hi OF((FILE *, const z_word_t FAR *, int));
+ local void write_table64 OF((FILE *, const z_word_t FAR *, int));
#endif /* MAKECRCH */
+
+/*
+ Define a once() function depending on the availability of atomics. If this is
+ compiled with DYNAMIC_CRC_TABLE defined, and if CRCs will be computed in
+ multiple threads, and if atomics are not available, then get_crc_table() must
+ be called to initialize the tables and must return before any threads are
+ allowed to compute or combine CRCs.
+ */
+
+/* Definition of once functionality. */
+typedef struct once_s once_t;
+local void once OF((once_t *, void (*)(void)));
+
+/* Check for the availability of atomics. */
+#if defined(__STDC__) && __STDC_VERSION__ >= 201112L && \
+ !defined(__STDC_NO_ATOMICS__)
+
+#include <stdatomic.h>
+
+/* Structure for once(), which must be initialized with ONCE_INIT. */
+struct once_s {
+ atomic_flag begun;
+ atomic_int done;
+};
+#define ONCE_INIT {ATOMIC_FLAG_INIT, 0}
+
+/*
+ Run the provided init() function exactly once, even if multiple threads
+ invoke once() at the same time. The state must be a once_t initialized with
+ ONCE_INIT.
+ */
+local void once(state, init)
+ once_t *state;
+ void (*init)(void);
+{
+ if (!atomic_load(&state->done)) {
+ if (atomic_flag_test_and_set(&state->begun))
+ while (!atomic_load(&state->done))
+ ;
+ else {
+ init();
+ atomic_store(&state->done, 1);
+ }
+ }
+}
+
+#else /* no atomics */
+
+/* Structure for once(), which must be initialized with ONCE_INIT. */
+struct once_s {
+ volatile int begun;
+ volatile int done;
+};
+#define ONCE_INIT {0, 0}
+
+/* Test and set. Alas, not atomic, but tries to minimize the period of
+ vulnerability. */
+local int test_and_set OF((int volatile *));
+local int test_and_set(flag)
+ int volatile *flag;
+{
+ int was;
+
+ was = *flag;
+ *flag = 1;
+ return was;
+}
+
+/* Run the provided init() function once. This is not thread-safe. */
+local void once(state, init)
+ once_t *state;
+ void (*init)(void);
+{
+ if (!state->done) {
+ if (test_and_set(&state->begun))
+ while (!state->done)
+ ;
+ else {
+ init();
+ state->done = 1;
+ }
+ }
+}
+
+#endif
+
+/* State for once(). */
+local once_t made = ONCE_INIT;
+
/*
Generate tables for a byte-wise 32-bit CRC calculation on the polynomial:
x^32+x^26+x^23+x^22+x^16+x^12+x^11+x^10+x^8+x^7+x^5+x^4+x^2+x+1.
Polynomials over GF(2) are represented in binary, one bit per coefficient,
- with the lowest powers in the most significant bit. Then adding polynomials
+ with the lowest powers in the most significant bit. Then adding polynomials
is just exclusive-or, and multiplying a polynomial by x is a right shift by
- one. If we call the above polynomial p, and represent a byte as the
+ one. If we call the above polynomial p, and represent a byte as the
polynomial q, also with the lowest power in the most significant bit (so the
- byte 0xb1 is the polynomial x^7+x^3+x+1), then the CRC is (q*x^32) mod p,
+ byte 0xb1 is the polynomial x^7+x^3+x^2+1), then the CRC is (q*x^32) mod p,
where a mod b means the remainder after dividing a by b.
This calculation is done using the shift-register method of multiplying and
- taking the remainder. The register is initialized to zero, and for each
+ taking the remainder. The register is initialized to zero, and for each
incoming bit, x^32 is added mod p to the register if the bit is a one (where
- x^32 mod p is p+x^32 = x^26+...+1), and the register is multiplied mod p by
- x (which is shifting right by one and adding x^32 mod p if the bit shifted
- out is a one). We start with the highest power (least significant bit) of
- q and repeat for all eight bits of q.
-
- The first table is simply the CRC of all possible eight bit values. This is
- all the information needed to generate CRCs on data a byte at a time for all
- combinations of CRC register values and incoming bytes. The remaining tables
- allow for word-at-a-time CRC calculation for both big-endian and little-
- endian machines, where a word is four bytes.
-*/
+ x^32 mod p is p+x^32 = x^26+...+1), and the register is multiplied mod p by x
+ (which is shifting right by one and adding x^32 mod p if the bit shifted out
+ is a one). We start with the highest power (least significant bit) of q and
+ repeat for all eight bits of q.
+
+ The table is simply the CRC of all possible eight bit values. This is all the
+ information needed to generate CRCs on data a byte at a time for all
+ combinations of CRC register values and incoming bytes.
+ */
+
local void make_crc_table()
{
- z_crc_t c;
- int n, k;
- z_crc_t poly; /* polynomial exclusive-or pattern */
- /* terms of polynomial defining this crc (except x^32): */
- static volatile int first = 1; /* flag to limit concurrent making */
- static const unsigned char p[] = {0,1,2,4,5,7,8,10,11,12,16,22,23,26};
-
- /* See if another task is already doing this (not thread-safe, but better
- than nothing -- significantly reduces duration of vulnerability in
- case the advice about DYNAMIC_CRC_TABLE is ignored) */
- if (first) {
- first = 0;
-
- /* make exclusive-or pattern from polynomial (0xedb88320UL) */
- poly = 0;
- for (n = 0; n < (int)(sizeof(p)/sizeof(unsigned char)); n++)
- poly |= (z_crc_t)1 << (31 - p[n]);
-
- /* generate a crc for every 8-bit value */
- for (n = 0; n < 256; n++) {
- c = (z_crc_t)n;
- for (k = 0; k < 8; k++)
- c = c & 1 ? poly ^ (c >> 1) : c >> 1;
- crc_table[0][n] = c;
- }
+ unsigned i, j, n;
+ z_crc_t p;
-#ifdef BYFOUR
- /* generate crc for each value followed by one, two, and three zeros,
- and then the byte reversal of those as well as the first table */
- for (n = 0; n < 256; n++) {
- c = crc_table[0][n];
- crc_table[4][n] = ZSWAP32(c);
- for (k = 1; k < 4; k++) {
- c = crc_table[0][c & 0xff] ^ (c >> 8);
- crc_table[k][n] = c;
- crc_table[k + 4][n] = ZSWAP32(c);
- }
- }
-#endif /* BYFOUR */
-
- crc_table_empty = 0;
- }
- else { /* not first */
- /* wait for the other guy to finish (not efficient, but rare) */
- while (crc_table_empty)
- ;
+ /* initialize the CRC of bytes tables */
+ for (i = 0; i < 256; i++) {
+ p = i;
+ for (j = 0; j < 8; j++)
+ p = p & 1 ? (p >> 1) ^ POLY : p >> 1;
+ crc_table[i] = p;
+#ifdef W
+ crc_big_table[i] = byte_swap(p);
+#endif
}
+ /* initialize the x^2^n mod p(x) table */
+ p = (z_crc_t)1 << 30; /* x^1 */
+ x2n_table[0] = p;
+ for (n = 1; n < 32; n++)
+ x2n_table[n] = p = multmodp(p, p);
+
+#ifdef W
+ /* initialize the braiding tables -- needs x2n_table[] */
+ braid(crc_braid_table, crc_braid_big_table, N, W);
+#endif
+
#ifdef MAKECRCH
- /* write out CRC tables to crc32.h */
{
+ /*
+ The crc32.h header file contains tables for both 32-bit and 64-bit
+ z_word_t's, and so requires a 64-bit type be available. In that case,
+ z_word_t must be defined to be 64-bits. This code then also generates
+ and writes out the tables for the case that z_word_t is 32 bits.
+ */
+#if !defined(W) || W != 8
+# error Need a 64-bit integer type in order to generate crc32.h.
+#endif
FILE *out;
+ int k, n;
+ z_crc_t ltl[8][256];
+ z_word_t big[8][256];
out = fopen("crc32.h", "w");
if (out == NULL) return;
- fprintf(out, "/* crc32.h -- tables for rapid CRC calculation\n");
- fprintf(out, " * Generated automatically by crc32.c\n */\n\n");
- fprintf(out, "local const z_crc_t FAR ");
- fprintf(out, "crc_table[TBLS][256] =\n{\n {\n");
- write_table(out, crc_table[0]);
-# ifdef BYFOUR
- fprintf(out, "#ifdef BYFOUR\n");
- for (k = 1; k < 8; k++) {
- fprintf(out, " },\n {\n");
- write_table(out, crc_table[k]);
+
+ /* write out little-endian CRC table to crc32.h */
+ fprintf(out,
+ "/* crc32.h -- tables for rapid CRC calculation\n"
+ " * Generated automatically by crc32.c\n */\n"
+ "\n"
+ "local const z_crc_t FAR crc_table[] = {\n"
+ " ");
+ write_table(out, crc_table, 256);
+ fprintf(out,
+ "};\n");
+
+ /* write out big-endian CRC table for 64-bit z_word_t to crc32.h */
+ fprintf(out,
+ "\n"
+ "#ifdef W\n"
+ "\n"
+ "#if W == 8\n"
+ "\n"
+ "local const z_word_t FAR crc_big_table[] = {\n"
+ " ");
+ write_table64(out, crc_big_table, 256);
+ fprintf(out,
+ "};\n");
+
+ /* write out big-endian CRC table for 32-bit z_word_t to crc32.h */
+ fprintf(out,
+ "\n"
+ "#else /* W == 4 */\n"
+ "\n"
+ "local const z_word_t FAR crc_big_table[] = {\n"
+ " ");
+ write_table32hi(out, crc_big_table, 256);
+ fprintf(out,
+ "};\n"
+ "\n"
+ "#endif\n");
+
+ /* write out braid tables for each value of N */
+ for (n = 1; n <= 6; n++) {
+ fprintf(out,
+ "\n"
+ "#if N == %d\n", n);
+
+ /* compute braid tables for this N and 64-bit word_t */
+ braid(ltl, big, n, 8);
+
+ /* write out braid tables for 64-bit z_word_t to crc32.h */
+ fprintf(out,
+ "\n"
+ "#if W == 8\n"
+ "\n"
+ "local const z_crc_t FAR crc_braid_table[][256] = {\n");
+ for (k = 0; k < 8; k++) {
+ fprintf(out, " {");
+ write_table(out, ltl[k], 256);
+ fprintf(out, "}%s", k < 7 ? ",\n" : "");
+ }
+ fprintf(out,
+ "};\n"
+ "\n"
+ "local const z_word_t FAR crc_braid_big_table[][256] = {\n");
+ for (k = 0; k < 8; k++) {
+ fprintf(out, " {");
+ write_table64(out, big[k], 256);
+ fprintf(out, "}%s", k < 7 ? ",\n" : "");
+ }
+ fprintf(out,
+ "};\n");
+
+ /* compute braid tables for this N and 32-bit word_t */
+ braid(ltl, big, n, 4);
+
+ /* write out braid tables for 32-bit z_word_t to crc32.h */
+ fprintf(out,
+ "\n"
+ "#else /* W == 4 */\n"
+ "\n"
+ "local const z_crc_t FAR crc_braid_table[][256] = {\n");
+ for (k = 0; k < 4; k++) {
+ fprintf(out, " {");
+ write_table(out, ltl[k], 256);
+ fprintf(out, "}%s", k < 3 ? ",\n" : "");
+ }
+ fprintf(out,
+ "};\n"
+ "\n"
+ "local const z_word_t FAR crc_braid_big_table[][256] = {\n");
+ for (k = 0; k < 4; k++) {
+ fprintf(out, " {");
+ write_table32hi(out, big[k], 256);
+ fprintf(out, "}%s", k < 3 ? ",\n" : "");
+ }
+ fprintf(out,
+ "};\n"
+ "\n"
+ "#endif\n"
+ "\n"
+ "#endif\n");
}
- fprintf(out, "#endif\n");
-# endif /* BYFOUR */
- fprintf(out, " }\n};\n");
+ fprintf(out,
+ "\n"
+ "#endif\n");
+
+ /* write out zeros operator table to crc32.h */
+ fprintf(out,
+ "\n"
+ "local const z_crc_t FAR x2n_table[] = {\n"
+ " ");
+ write_table(out, x2n_table, 32);
+ fprintf(out,
+ "};\n");
fclose(out);
}
#endif /* MAKECRCH */
}
#ifdef MAKECRCH
-local void write_table(out, table)
+
+/*
+ Write the 32-bit values in table[0..k-1] to out, five per line in
+ hexadecimal separated by commas.
+ */
+local void write_table(out, table, k)
FILE *out;
const z_crc_t FAR *table;
+ int k;
{
int n;
- for (n = 0; n < 256; n++)
- fprintf(out, "%s0x%08lxUL%s", n % 5 ? "" : " ",
+ for (n = 0; n < k; n++)
+ fprintf(out, "%s0x%08lx%s", n == 0 || n % 5 ? "" : " ",
(unsigned long)(table[n]),
- n == 255 ? "\n" : (n % 5 == 4 ? ",\n" : ", "));
+ n == k - 1 ? "" : (n % 5 == 4 ? ",\n" : ", "));
}
+
+/*
+ Write the high 32-bits of each value in table[0..k-1] to out, five per line
+ in hexadecimal separated by commas.
+ */
+local void write_table32hi(out, table, k)
+FILE *out;
+const z_word_t FAR *table;
+int k;
+{
+ int n;
+
+ for (n = 0; n < k; n++)
+ fprintf(out, "%s0x%08lx%s", n == 0 || n % 5 ? "" : " ",
+ (unsigned long)(table[n] >> 32),
+ n == k - 1 ? "" : (n % 5 == 4 ? ",\n" : ", "));
+}
+
+/*
+ Write the 64-bit values in table[0..k-1] to out, three per line in
+ hexadecimal separated by commas. This assumes that if there is a 64-bit
+ type, then there is also a long long integer type, and it is at least 64
+ bits. If not, then the type cast and format string can be adjusted
+ accordingly.
+ */
+local void write_table64(out, table, k)
+ FILE *out;
+ const z_word_t FAR *table;
+ int k;
+{
+ int n;
+
+ for (n = 0; n < k; n++)
+ fprintf(out, "%s0x%016llx%s", n == 0 || n % 3 ? "" : " ",
+ (unsigned long long)(table[n]),
+ n == k - 1 ? "" : (n % 3 == 2 ? ",\n" : ", "));
+}
+
+/* Actually do the deed. */
+int main()
+{
+ make_crc_table();
+ return 0;
+}
+
#endif /* MAKECRCH */
+#ifdef W
+/*
+ Generate the little and big-endian braid tables for the given n and z_word_t
+ size w. Each array must have room for w blocks of 256 elements.
+ */
+local void braid(ltl, big, n, w)
+ z_crc_t ltl[][256];
+ z_word_t big[][256];
+ int n;
+ int w;
+{
+ int k;
+ z_crc_t i, p, q;
+ for (k = 0; k < w; k++) {
+ p = x2nmodp((n * w + 3 - k) << 3, 0);
+ ltl[k][0] = 0;
+ big[w - 1 - k][0] = 0;
+ for (i = 1; i < 256; i++) {
+ ltl[k][i] = q = multmodp(i << 24, p);
+ big[w - 1 - k][i] = byte_swap(q);
+ }
+ }
+}
+#endif
+
#else /* !DYNAMIC_CRC_TABLE */
/* ========================================================================
- * Tables of CRC-32s of all single-byte values, made by make_crc_table().
+ * Tables for byte-wise and braided CRC-32 calculations, and a table of powers
+ * of x for combining CRC-32s, all made by make_crc_table().
*/
#include "crc32.h"
#endif /* DYNAMIC_CRC_TABLE */
+/* ========================================================================
+ * Routines used for CRC calculation. Some are also required for the table
+ * generation above.
+ */
+
+/*
+ Return a(x) multiplied by b(x) modulo p(x), where p(x) is the CRC polynomial,
+ reflected. For speed, this requires that a not be zero.
+ */
+local z_crc_t multmodp(a, b)
+ z_crc_t a;
+ z_crc_t b;
+{
+ z_crc_t m, p;
+
+ m = (z_crc_t)1 << 31;
+ p = 0;
+ for (;;) {
+ if (a & m) {
+ p ^= b;
+ if ((a & (m - 1)) == 0)
+ break;
+ }
+ m >>= 1;
+ b = b & 1 ? (b >> 1) ^ POLY : b >> 1;
+ }
+ return p;
+}
+
+/*
+ Return x^(n * 2^k) modulo p(x). Requires that x2n_table[] has been
+ initialized.
+ */
+local z_crc_t x2nmodp(n, k)
+ z_off64_t n;
+ unsigned k;
+{
+ z_crc_t p;
+
+ p = (z_crc_t)1 << 31; /* x^0 == 1 */
+ while (n) {
+ if (n & 1)
+ p = multmodp(x2n_table[k & 31], p);
+ n >>= 1;
+ k++;
+ }
+ return p;
+}
+
/* =========================================================================
- * This function can be used by asm versions of crc32()
+ * This function can be used by asm versions of crc32(), and to force the
+ * generation of the CRC tables in a threaded application.
*/
const z_crc_t FAR * ZEXPORT get_crc_table()
{
#ifdef DYNAMIC_CRC_TABLE
- if (crc_table_empty)
- make_crc_table();
+ once(&made, make_crc_table);
#endif /* DYNAMIC_CRC_TABLE */
return (const z_crc_t FAR *)crc_table;
}
-/* ========================================================================= */
-#define DO1 crc = crc_table[0][((int)crc ^ (*buf++)) & 0xff] ^ (crc >> 8)
-#define DO8 DO1; DO1; DO1; DO1; DO1; DO1; DO1; DO1
+/* =========================================================================
+ * Use ARM machine instructions if available. This will compute the CRC about
+ * ten times faster than the braided calculation. This code does not check for
+ * the presence of the CRC instruction at run time. __ARM_FEATURE_CRC32 will
+ * only be defined if the compilation specifies an ARM processor architecture
+ * that has the instructions. For example, compiling with -march=armv8.1-a or
+ * -march=armv8-a+crc, or -march=native if the compile machine has the crc32
+ * instructions.
+ */
+#ifdef ARMCRC32
+
+/*
+ Constants empirically determined to maximize speed. These values are from
+ measurements on a Cortex-A57. Your mileage may vary.
+ */
+#define Z_BATCH 3990 /* number of words in a batch */
+#define Z_BATCH_ZEROS 0xa10d3d0c /* computed from Z_BATCH = 3990 */
+#define Z_BATCH_MIN 800 /* fewest words in a final batch */
-/* ========================================================================= */
unsigned long ZEXPORT crc32_z(crc, buf, len)
unsigned long crc;
const unsigned char FAR *buf;
z_size_t len;
{
- if (buf == Z_NULL) return 0UL;
+ z_crc_t val;
+ z_word_t crc1, crc2;
+ const z_word_t *word;
+ z_word_t val0, val1, val2;
+ z_size_t last, last2, i;
+ z_size_t num;
+
+ /* Return initial CRC, if requested. */
+ if (buf == Z_NULL) return 0;
#ifdef DYNAMIC_CRC_TABLE
- if (crc_table_empty)
- make_crc_table();
+ once(&made, make_crc_table);
#endif /* DYNAMIC_CRC_TABLE */
-#ifdef BYFOUR
- if (sizeof(void *) == sizeof(ptrdiff_t)) {
- z_crc_t endian;
+ /* Pre-condition the CRC */
+ crc ^= 0xffffffff;
- endian = 1;
- if (*((unsigned char *)(&endian)))
- return crc32_little(crc, buf, len);
- else
- return crc32_big(crc, buf, len);
+ /* Compute the CRC up to a word boundary. */
+ while (len && ((z_size_t)buf & 7) != 0) {
+ len--;
+ val = *buf++;
+ __asm__ volatile("crc32b %w0, %w0, %w1" : "+r"(crc) : "r"(val));
}
-#endif /* BYFOUR */
- crc = crc ^ 0xffffffffUL;
- while (len >= 8) {
- DO8;
- len -= 8;
+
+ /* Prepare to compute the CRC on full 64-bit words word[0..num-1]. */
+ word = (z_word_t const *)buf;
+ num = len >> 3;
+ len &= 7;
+
+ /* Do three interleaved CRCs to realize the throughput of one crc32x
+ instruction per cycle. Each CRC is calcuated on Z_BATCH words. The three
+ CRCs are combined into a single CRC after each set of batches. */
+ while (num >= 3 * Z_BATCH) {
+ crc1 = 0;
+ crc2 = 0;
+ for (i = 0; i < Z_BATCH; i++) {
+ val0 = word[i];
+ val1 = word[i + Z_BATCH];
+ val2 = word[i + 2 * Z_BATCH];
+ __asm__ volatile("crc32x %w0, %w0, %x1" : "+r"(crc) : "r"(val0));
+ __asm__ volatile("crc32x %w0, %w0, %x1" : "+r"(crc1) : "r"(val1));
+ __asm__ volatile("crc32x %w0, %w0, %x1" : "+r"(crc2) : "r"(val2));
+ }
+ word += 3 * Z_BATCH;
+ num -= 3 * Z_BATCH;
+ crc = multmodp(Z_BATCH_ZEROS, crc) ^ crc1;
+ crc = multmodp(Z_BATCH_ZEROS, crc) ^ crc2;
}
- if (len) do {
- DO1;
- } while (--len);
- return crc ^ 0xffffffffUL;
-}
-/* ========================================================================= */
-unsigned long ZEXPORT crc32(crc, buf, len)
- unsigned long crc;
- const unsigned char FAR *buf;
- uInt len;
-{
- return crc32_z(crc, buf, len);
+ /* Do one last smaller batch with the remaining words, if there are enough
+ to pay for the combination of CRCs. */
+ last = num / 3;
+ if (last >= Z_BATCH_MIN) {
+ last2 = last << 1;
+ crc1 = 0;
+ crc2 = 0;
+ for (i = 0; i < last; i++) {
+ val0 = word[i];
+ val1 = word[i + last];
+ val2 = word[i + last2];
+ __asm__ volatile("crc32x %w0, %w0, %x1" : "+r"(crc) : "r"(val0));
+ __asm__ volatile("crc32x %w0, %w0, %x1" : "+r"(crc1) : "r"(val1));
+ __asm__ volatile("crc32x %w0, %w0, %x1" : "+r"(crc2) : "r"(val2));
+ }
+ word += 3 * last;
+ num -= 3 * last;
+ val = x2nmodp(last, 6);
+ crc = multmodp(val, crc) ^ crc1;
+ crc = multmodp(val, crc) ^ crc2;
+ }
+
+ /* Compute the CRC on any remaining words. */
+ for (i = 0; i < num; i++) {
+ val0 = word[i];
+ __asm__ volatile("crc32x %w0, %w0, %x1" : "+r"(crc) : "r"(val0));
+ }
+ word += num;
+
+ /* Complete the CRC on any remaining bytes. */
+ buf = (const unsigned char FAR *)word;
+ while (len) {
+ len--;
+ val = *buf++;
+ __asm__ volatile("crc32b %w0, %w0, %w1" : "+r"(crc) : "r"(val));
+ }
+
+ /* Return the CRC, post-conditioned. */
+ return crc ^ 0xffffffff;
}
-#ifdef BYFOUR
+#else
+
+#ifdef W
/*
- This BYFOUR code accesses the passed unsigned char * buffer with a 32-bit
- integer pointer type. This violates the strict aliasing rule, where a
- compiler can assume, for optimization purposes, that two pointers to
- fundamentally different types won't ever point to the same memory. This can
- manifest as a problem only if one of the pointers is written to. This code
- only reads from those pointers. So long as this code remains isolated in
- this compilation unit, there won't be a problem. For this reason, this code
- should not be copied and pasted into a compilation unit in which other code
- writes to the buffer that is passed to these routines.
+ Return the CRC of the W bytes in the word_t data, taking the
+ least-significant byte of the word as the first byte of data, without any pre
+ or post conditioning. This is used to combine the CRCs of each braid.
*/
+local z_crc_t crc_word(data)
+ z_word_t data;
+{
+ int k;
+ for (k = 0; k < W; k++)
+ data = (data >> 8) ^ crc_table[data & 0xff];
+ return (z_crc_t)data;
+}
-/* ========================================================================= */
-#define DOLIT4 c ^= *buf4++; \
- c = crc_table[3][c & 0xff] ^ crc_table[2][(c >> 8) & 0xff] ^ \
- crc_table[1][(c >> 16) & 0xff] ^ crc_table[0][c >> 24]
-#define DOLIT32 DOLIT4; DOLIT4; DOLIT4; DOLIT4; DOLIT4; DOLIT4; DOLIT4; DOLIT4
+local z_word_t crc_word_big(data)
+ z_word_t data;
+{
+ int k;
+ for (k = 0; k < W; k++)
+ data = (data << 8) ^
+ crc_big_table[(data >> ((W - 1) << 3)) & 0xff];
+ return data;
+}
+
+#endif
/* ========================================================================= */
-local unsigned long crc32_little(crc, buf, len)
+unsigned long ZEXPORT crc32_z(crc, buf, len)
unsigned long crc;
const unsigned char FAR *buf;
z_size_t len;
{
- register z_crc_t c;
- register const z_crc_t FAR *buf4;
+ /* Return initial CRC, if requested. */
+ if (buf == Z_NULL) return 0;
- c = (z_crc_t)crc;
- c = ~c;
- while (len && ((ptrdiff_t)buf & 3)) {
- c = crc_table[0][(c ^ *buf++) & 0xff] ^ (c >> 8);
- len--;
- }
+#ifdef DYNAMIC_CRC_TABLE
+ once(&made, make_crc_table);
+#endif /* DYNAMIC_CRC_TABLE */
- buf4 = (const z_crc_t FAR *)(const void FAR *)buf;
- while (len >= 32) {
- DOLIT32;
- len -= 32;
- }
- while (len >= 4) {
- DOLIT4;
- len -= 4;
- }
- buf = (const unsigned char FAR *)buf4;
+ /* Pre-condition the CRC */
+ crc ^= 0xffffffff;
- if (len) do {
- c = crc_table[0][(c ^ *buf++) & 0xff] ^ (c >> 8);
- } while (--len);
- c = ~c;
- return (unsigned long)c;
-}
+#ifdef W
-/* ========================================================================= */
-#define DOBIG4 c ^= *buf4++; \
- c = crc_table[4][c & 0xff] ^ crc_table[5][(c >> 8) & 0xff] ^ \
- crc_table[6][(c >> 16) & 0xff] ^ crc_table[7][c >> 24]
-#define DOBIG32 DOBIG4; DOBIG4; DOBIG4; DOBIG4; DOBIG4; DOBIG4; DOBIG4; DOBIG4
+ /* If provided enough bytes, do a braided CRC calculation. */
+ if (len >= N * W + W - 1) {
+ z_size_t blks;
+ z_word_t const *words;
+ unsigned endian;
+ int k;
-/* ========================================================================= */
-local unsigned long crc32_big(crc, buf, len)
- unsigned long crc;
- const unsigned char FAR *buf;
- z_size_t len;
-{
- register z_crc_t c;
- register const z_crc_t FAR *buf4;
+ /* Compute the CRC up to a z_word_t boundary. */
+ while (len && ((z_size_t)buf & (W - 1)) != 0) {
+ len--;
+ crc = (crc >> 8) ^ crc_table[(crc ^ *buf++) & 0xff];
+ }
- c = ZSWAP32((z_crc_t)crc);
- c = ~c;
- while (len && ((ptrdiff_t)buf & 3)) {
- c = crc_table[4][(c >> 24) ^ *buf++] ^ (c << 8);
- len--;
+ /* Compute the CRC on as many N z_word_t blocks as are available. */
+ blks = len / (N * W);
+ len -= blks * N * W;
+ words = (z_word_t const *)buf;
+
+ /* Do endian check at execution time instead of compile time, since ARM
+ processors can change the endianess at execution time. If the
+ compiler knows what the endianess will be, it can optimize out the
+ check and the unused branch. */
+ endian = 1;
+ if (*(unsigned char *)&endian) {
+ /* Little endian. */
+
+ z_crc_t crc0;
+ z_word_t word0;
+#if N > 1
+ z_crc_t crc1;
+ z_word_t word1;
+#if N > 2
+ z_crc_t crc2;
+ z_word_t word2;
+#if N > 3
+ z_crc_t crc3;
+ z_word_t word3;
+#if N > 4
+ z_crc_t crc4;
+ z_word_t word4;
+#if N > 5
+ z_crc_t crc5;
+ z_word_t word5;
+#endif
+#endif
+#endif
+#endif
+#endif
+
+ /* Initialize the CRC for each braid. */
+ crc0 = crc;
+#if N > 1
+ crc1 = 0;
+#if N > 2
+ crc2 = 0;
+#if N > 3
+ crc3 = 0;
+#if N > 4
+ crc4 = 0;
+#if N > 5
+ crc5 = 0;
+#endif
+#endif
+#endif
+#endif
+#endif
+
+ /*
+ Process the first blks-1 blocks, computing the CRCs on each braid
+ independently.
+ */
+ while (--blks) {
+ /* Load the word for each braid into registers. */
+ word0 = crc0 ^ words[0];
+#if N > 1
+ word1 = crc1 ^ words[1];
+#if N > 2
+ word2 = crc2 ^ words[2];
+#if N > 3
+ word3 = crc3 ^ words[3];
+#if N > 4
+ word4 = crc4 ^ words[4];
+#if N > 5
+ word5 = crc5 ^ words[5];
+#endif
+#endif
+#endif
+#endif
+#endif
+ words += N;
+
+ /* Compute and update the CRC for each word. The loop should
+ get unrolled. */
+ crc0 = crc_braid_table[0][word0 & 0xff];
+#if N > 1
+ crc1 = crc_braid_table[0][word1 & 0xff];
+#if N > 2
+ crc2 = crc_braid_table[0][word2 & 0xff];
+#if N > 3
+ crc3 = crc_braid_table[0][word3 & 0xff];
+#if N > 4
+ crc4 = crc_braid_table[0][word4 & 0xff];
+#if N > 5
+ crc5 = crc_braid_table[0][word5 & 0xff];
+#endif
+#endif
+#endif
+#endif
+#endif
+ for (k = 1; k < W; k++) {
+ crc0 ^= crc_braid_table[k][(word0 >> (k << 3)) & 0xff];
+#if N > 1
+ crc1 ^= crc_braid_table[k][(word1 >> (k << 3)) & 0xff];
+#if N > 2
+ crc2 ^= crc_braid_table[k][(word2 >> (k << 3)) & 0xff];
+#if N > 3
+ crc3 ^= crc_braid_table[k][(word3 >> (k << 3)) & 0xff];
+#if N > 4
+ crc4 ^= crc_braid_table[k][(word4 >> (k << 3)) & 0xff];
+#if N > 5
+ crc5 ^= crc_braid_table[k][(word5 >> (k << 3)) & 0xff];
+#endif
+#endif
+#endif
+#endif
+#endif
+ }
+ }
+
+ /*
+ Process the last block, combining the CRCs of the N braids at the
+ same time.
+ */
+ crc = crc_word(crc0 ^ words[0]);
+#if N > 1
+ crc = crc_word(crc1 ^ words[1] ^ crc);
+#if N > 2
+ crc = crc_word(crc2 ^ words[2] ^ crc);
+#if N > 3
+ crc = crc_word(crc3 ^ words[3] ^ crc);
+#if N > 4
+ crc = crc_word(crc4 ^ words[4] ^ crc);
+#if N > 5
+ crc = crc_word(crc5 ^ words[5] ^ crc);
+#endif
+#endif
+#endif
+#endif
+#endif
+ words += N;
+ }
+ else {
+ /* Big endian. */
+
+ z_word_t crc0, word0, comb;
+#if N > 1
+ z_word_t crc1, word1;
+#if N > 2
+ z_word_t crc2, word2;
+#if N > 3
+ z_word_t crc3, word3;
+#if N > 4
+ z_word_t crc4, word4;
+#if N > 5
+ z_word_t crc5, word5;
+#endif
+#endif
+#endif
+#endif
+#endif
+
+ /* Initialize the CRC for each braid. */
+ crc0 = byte_swap(crc);
+#if N > 1
+ crc1 = 0;
+#if N > 2
+ crc2 = 0;
+#if N > 3
+ crc3 = 0;
+#if N > 4
+ crc4 = 0;
+#if N > 5
+ crc5 = 0;
+#endif
+#endif
+#endif
+#endif
+#endif
+
+ /*
+ Process the first blks-1 blocks, computing the CRCs on each braid
+ independently.
+ */
+ while (--blks) {
+ /* Load the word for each braid into registers. */
+ word0 = crc0 ^ words[0];
+#if N > 1
+ word1 = crc1 ^ words[1];
+#if N > 2
+ word2 = crc2 ^ words[2];
+#if N > 3
+ word3 = crc3 ^ words[3];
+#if N > 4
+ word4 = crc4 ^ words[4];
+#if N > 5
+ word5 = crc5 ^ words[5];
+#endif
+#endif
+#endif
+#endif
+#endif
+ words += N;
+
+ /* Compute and update the CRC for each word. The loop should
+ get unrolled. */
+ crc0 = crc_braid_big_table[0][word0 & 0xff];
+#if N > 1
+ crc1 = crc_braid_big_table[0][word1 & 0xff];
+#if N > 2
+ crc2 = crc_braid_big_table[0][word2 & 0xff];
+#if N > 3
+ crc3 = crc_braid_big_table[0][word3 & 0xff];
+#if N > 4
+ crc4 = crc_braid_big_table[0][word4 & 0xff];
+#if N > 5
+ crc5 = crc_braid_big_table[0][word5 & 0xff];
+#endif
+#endif
+#endif
+#endif
+#endif
+ for (k = 1; k < W; k++) {
+ crc0 ^= crc_braid_big_table[k][(word0 >> (k << 3)) & 0xff];
+#if N > 1
+ crc1 ^= crc_braid_big_table[k][(word1 >> (k << 3)) & 0xff];
+#if N > 2
+ crc2 ^= crc_braid_big_table[k][(word2 >> (k << 3)) & 0xff];
+#if N > 3
+ crc3 ^= crc_braid_big_table[k][(word3 >> (k << 3)) & 0xff];
+#if N > 4
+ crc4 ^= crc_braid_big_table[k][(word4 >> (k << 3)) & 0xff];
+#if N > 5
+ crc5 ^= crc_braid_big_table[k][(word5 >> (k << 3)) & 0xff];
+#endif
+#endif
+#endif
+#endif
+#endif
+ }
+ }
+
+ /*
+ Process the last block, combining the CRCs of the N braids at the
+ same time.
+ */
+ comb = crc_word_big(crc0 ^ words[0]);
+#if N > 1
+ comb = crc_word_big(crc1 ^ words[1] ^ comb);
+#if N > 2
+ comb = crc_word_big(crc2 ^ words[2] ^ comb);
+#if N > 3
+ comb = crc_word_big(crc3 ^ words[3] ^ comb);
+#if N > 4
+ comb = crc_word_big(crc4 ^ words[4] ^ comb);
+#if N > 5
+ comb = crc_word_big(crc5 ^ words[5] ^ comb);
+#endif
+#endif
+#endif
+#endif
+#endif
+ words += N;
+ crc = byte_swap(comb);
+ }
+
+ /*
+ Update the pointer to the remaining bytes to process.
+ */
+ buf = (unsigned char const *)words;
}
- buf4 = (const z_crc_t FAR *)(const void FAR *)buf;
- while (len >= 32) {
- DOBIG32;
- len -= 32;
+#endif /* W */
+
+ /* Complete the computation of the CRC on any remaining bytes. */
+ while (len >= 8) {
+ len -= 8;
+ crc = (crc >> 8) ^ crc_table[(crc ^ *buf++) & 0xff];
+ crc = (crc >> 8) ^ crc_table[(crc ^ *buf++) & 0xff];
+ crc = (crc >> 8) ^ crc_table[(crc ^ *buf++) & 0xff];
+ crc = (crc >> 8) ^ crc_table[(crc ^ *buf++) & 0xff];
+ crc = (crc >> 8) ^ crc_table[(crc ^ *buf++) & 0xff];
+ crc = (crc >> 8) ^ crc_table[(crc ^ *buf++) & 0xff];
+ crc = (crc >> 8) ^ crc_table[(crc ^ *buf++) & 0xff];
+ crc = (crc >> 8) ^ crc_table[(crc ^ *buf++) & 0xff];
}
- while (len >= 4) {
- DOBIG4;
- len -= 4;
+ while (len) {
+ len--;
+ crc = (crc >> 8) ^ crc_table[(crc ^ *buf++) & 0xff];
}
- buf = (const unsigned char FAR *)buf4;
- if (len) do {
- c = crc_table[4][(c >> 24) ^ *buf++] ^ (c << 8);
- } while (--len);
- c = ~c;
- return (unsigned long)(ZSWAP32(c));
+ /* Return the CRC, post-conditioned. */
+ return crc ^ 0xffffffff;
}
-#endif /* BYFOUR */
-
-#define GF2_DIM 32 /* dimension of GF(2) vectors (length of CRC) */
+#endif
/* ========================================================================= */
-local unsigned long gf2_matrix_times(mat, vec)
- unsigned long *mat;
- unsigned long vec;
+unsigned long ZEXPORT crc32(crc, buf, len)
+ unsigned long crc;
+ const unsigned char FAR *buf;
+ uInt len;
{
- unsigned long sum;
-
- sum = 0;
- while (vec) {
- if (vec & 1)
- sum ^= *mat;
- vec >>= 1;
- mat++;
- }
- return sum;
+ return crc32_z(crc, buf, len);
}
/* ========================================================================= */
-local void gf2_matrix_square(square, mat)
- unsigned long *square;
- unsigned long *mat;
+uLong ZEXPORT crc32_combine64(crc1, crc2, len2)
+ uLong crc1;
+ uLong crc2;
+ z_off64_t len2;
{
- int n;
-
- for (n = 0; n < GF2_DIM; n++)
- square[n] = gf2_matrix_times(mat, mat[n]);
+#ifdef DYNAMIC_CRC_TABLE
+ once(&made, make_crc_table);
+#endif /* DYNAMIC_CRC_TABLE */
+ return multmodp(x2nmodp(len2, 3), crc1) ^ crc2;
}
/* ========================================================================= */
-local uLong crc32_combine_(crc1, crc2, len2)
+uLong ZEXPORT crc32_combine(crc1, crc2, len2)
uLong crc1;
uLong crc2;
- z_off64_t len2;
+ z_off_t len2;
{
- int n;
- unsigned long row;
- unsigned long even[GF2_DIM]; /* even-power-of-two zeros operator */
- unsigned long odd[GF2_DIM]; /* odd-power-of-two zeros operator */
-
- /* degenerate case (also disallow negative lengths) */
- if (len2 <= 0)
- return crc1;
-
- /* put operator for one zero bit in odd */
- odd[0] = 0xedb88320UL; /* CRC-32 polynomial */
- row = 1;
- for (n = 1; n < GF2_DIM; n++) {
- odd[n] = row;
- row <<= 1;
- }
+ return crc32_combine64(crc1, crc2, len2);
+}
- /* put operator for two zero bits in even */
- gf2_matrix_square(even, odd);
-
- /* put operator for four zero bits in odd */
- gf2_matrix_square(odd, even);
-
- /* apply len2 zeros to crc1 (first square will put the operator for one
- zero byte, eight zero bits, in even) */
- do {
- /* apply zeros operator for this bit of len2 */
- gf2_matrix_square(even, odd);
- if (len2 & 1)
- crc1 = gf2_matrix_times(even, crc1);
- len2 >>= 1;
-
- /* if no more bits set, then done */
- if (len2 == 0)
- break;
-
- /* another iteration of the loop with odd and even swapped */
- gf2_matrix_square(odd, even);
- if (len2 & 1)
- crc1 = gf2_matrix_times(odd, crc1);
- len2 >>= 1;
-
- /* if no more bits set, then done */
- } while (len2 != 0);
-
- /* return combined crc */
- crc1 ^= crc2;
- return crc1;
+/* ========================================================================= */
+uLong ZEXPORT crc32_combine_gen64(len2)
+ z_off64_t len2;
+{
+#ifdef DYNAMIC_CRC_TABLE
+ once(&made, make_crc_table);
+#endif /* DYNAMIC_CRC_TABLE */
+ return x2nmodp(len2, 3);
}
/* ========================================================================= */
-uLong ZEXPORT crc32_combine(crc1, crc2, len2)
- uLong crc1;
- uLong crc2;
+uLong ZEXPORT crc32_combine_gen(len2)
z_off_t len2;
{
- return crc32_combine_(crc1, crc2, len2);
+ return crc32_combine_gen64(len2);
}
-uLong ZEXPORT crc32_combine64(crc1, crc2, len2)
+/* ========================================================================= */
+uLong crc32_combine_op(crc1, crc2, op)
uLong crc1;
uLong crc2;
- z_off64_t len2;
+ uLong op;
{
- return crc32_combine_(crc1, crc2, len2);
+ return multmodp(op, crc1) ^ crc2;
}
diff --git a/thirdparty/zlib/crc32.h b/thirdparty/zlib/crc32.h
index 9e0c778102..137df68d61 100644
--- a/thirdparty/zlib/crc32.h
+++ b/thirdparty/zlib/crc32.h
@@ -2,440 +2,9445 @@
* Generated automatically by crc32.c
*/
-local const z_crc_t FAR crc_table[TBLS][256] =
-{
- {
- 0x00000000UL, 0x77073096UL, 0xee0e612cUL, 0x990951baUL, 0x076dc419UL,
- 0x706af48fUL, 0xe963a535UL, 0x9e6495a3UL, 0x0edb8832UL, 0x79dcb8a4UL,
- 0xe0d5e91eUL, 0x97d2d988UL, 0x09b64c2bUL, 0x7eb17cbdUL, 0xe7b82d07UL,
- 0x90bf1d91UL, 0x1db71064UL, 0x6ab020f2UL, 0xf3b97148UL, 0x84be41deUL,
- 0x1adad47dUL, 0x6ddde4ebUL, 0xf4d4b551UL, 0x83d385c7UL, 0x136c9856UL,
- 0x646ba8c0UL, 0xfd62f97aUL, 0x8a65c9ecUL, 0x14015c4fUL, 0x63066cd9UL,
- 0xfa0f3d63UL, 0x8d080df5UL, 0x3b6e20c8UL, 0x4c69105eUL, 0xd56041e4UL,
- 0xa2677172UL, 0x3c03e4d1UL, 0x4b04d447UL, 0xd20d85fdUL, 0xa50ab56bUL,
- 0x35b5a8faUL, 0x42b2986cUL, 0xdbbbc9d6UL, 0xacbcf940UL, 0x32d86ce3UL,
- 0x45df5c75UL, 0xdcd60dcfUL, 0xabd13d59UL, 0x26d930acUL, 0x51de003aUL,
- 0xc8d75180UL, 0xbfd06116UL, 0x21b4f4b5UL, 0x56b3c423UL, 0xcfba9599UL,
- 0xb8bda50fUL, 0x2802b89eUL, 0x5f058808UL, 0xc60cd9b2UL, 0xb10be924UL,
- 0x2f6f7c87UL, 0x58684c11UL, 0xc1611dabUL, 0xb6662d3dUL, 0x76dc4190UL,
- 0x01db7106UL, 0x98d220bcUL, 0xefd5102aUL, 0x71b18589UL, 0x06b6b51fUL,
- 0x9fbfe4a5UL, 0xe8b8d433UL, 0x7807c9a2UL, 0x0f00f934UL, 0x9609a88eUL,
- 0xe10e9818UL, 0x7f6a0dbbUL, 0x086d3d2dUL, 0x91646c97UL, 0xe6635c01UL,
- 0x6b6b51f4UL, 0x1c6c6162UL, 0x856530d8UL, 0xf262004eUL, 0x6c0695edUL,
- 0x1b01a57bUL, 0x8208f4c1UL, 0xf50fc457UL, 0x65b0d9c6UL, 0x12b7e950UL,
- 0x8bbeb8eaUL, 0xfcb9887cUL, 0x62dd1ddfUL, 0x15da2d49UL, 0x8cd37cf3UL,
- 0xfbd44c65UL, 0x4db26158UL, 0x3ab551ceUL, 0xa3bc0074UL, 0xd4bb30e2UL,
- 0x4adfa541UL, 0x3dd895d7UL, 0xa4d1c46dUL, 0xd3d6f4fbUL, 0x4369e96aUL,
- 0x346ed9fcUL, 0xad678846UL, 0xda60b8d0UL, 0x44042d73UL, 0x33031de5UL,
- 0xaa0a4c5fUL, 0xdd0d7cc9UL, 0x5005713cUL, 0x270241aaUL, 0xbe0b1010UL,
- 0xc90c2086UL, 0x5768b525UL, 0x206f85b3UL, 0xb966d409UL, 0xce61e49fUL,
- 0x5edef90eUL, 0x29d9c998UL, 0xb0d09822UL, 0xc7d7a8b4UL, 0x59b33d17UL,
- 0x2eb40d81UL, 0xb7bd5c3bUL, 0xc0ba6cadUL, 0xedb88320UL, 0x9abfb3b6UL,
- 0x03b6e20cUL, 0x74b1d29aUL, 0xead54739UL, 0x9dd277afUL, 0x04db2615UL,
- 0x73dc1683UL, 0xe3630b12UL, 0x94643b84UL, 0x0d6d6a3eUL, 0x7a6a5aa8UL,
- 0xe40ecf0bUL, 0x9309ff9dUL, 0x0a00ae27UL, 0x7d079eb1UL, 0xf00f9344UL,
- 0x8708a3d2UL, 0x1e01f268UL, 0x6906c2feUL, 0xf762575dUL, 0x806567cbUL,
- 0x196c3671UL, 0x6e6b06e7UL, 0xfed41b76UL, 0x89d32be0UL, 0x10da7a5aUL,
- 0x67dd4accUL, 0xf9b9df6fUL, 0x8ebeeff9UL, 0x17b7be43UL, 0x60b08ed5UL,
- 0xd6d6a3e8UL, 0xa1d1937eUL, 0x38d8c2c4UL, 0x4fdff252UL, 0xd1bb67f1UL,
- 0xa6bc5767UL, 0x3fb506ddUL, 0x48b2364bUL, 0xd80d2bdaUL, 0xaf0a1b4cUL,
- 0x36034af6UL, 0x41047a60UL, 0xdf60efc3UL, 0xa867df55UL, 0x316e8eefUL,
- 0x4669be79UL, 0xcb61b38cUL, 0xbc66831aUL, 0x256fd2a0UL, 0x5268e236UL,
- 0xcc0c7795UL, 0xbb0b4703UL, 0x220216b9UL, 0x5505262fUL, 0xc5ba3bbeUL,
- 0xb2bd0b28UL, 0x2bb45a92UL, 0x5cb36a04UL, 0xc2d7ffa7UL, 0xb5d0cf31UL,
- 0x2cd99e8bUL, 0x5bdeae1dUL, 0x9b64c2b0UL, 0xec63f226UL, 0x756aa39cUL,
- 0x026d930aUL, 0x9c0906a9UL, 0xeb0e363fUL, 0x72076785UL, 0x05005713UL,
- 0x95bf4a82UL, 0xe2b87a14UL, 0x7bb12baeUL, 0x0cb61b38UL, 0x92d28e9bUL,
- 0xe5d5be0dUL, 0x7cdcefb7UL, 0x0bdbdf21UL, 0x86d3d2d4UL, 0xf1d4e242UL,
- 0x68ddb3f8UL, 0x1fda836eUL, 0x81be16cdUL, 0xf6b9265bUL, 0x6fb077e1UL,
- 0x18b74777UL, 0x88085ae6UL, 0xff0f6a70UL, 0x66063bcaUL, 0x11010b5cUL,
- 0x8f659effUL, 0xf862ae69UL, 0x616bffd3UL, 0x166ccf45UL, 0xa00ae278UL,
- 0xd70dd2eeUL, 0x4e048354UL, 0x3903b3c2UL, 0xa7672661UL, 0xd06016f7UL,
- 0x4969474dUL, 0x3e6e77dbUL, 0xaed16a4aUL, 0xd9d65adcUL, 0x40df0b66UL,
- 0x37d83bf0UL, 0xa9bcae53UL, 0xdebb9ec5UL, 0x47b2cf7fUL, 0x30b5ffe9UL,
- 0xbdbdf21cUL, 0xcabac28aUL, 0x53b39330UL, 0x24b4a3a6UL, 0xbad03605UL,
- 0xcdd70693UL, 0x54de5729UL, 0x23d967bfUL, 0xb3667a2eUL, 0xc4614ab8UL,
- 0x5d681b02UL, 0x2a6f2b94UL, 0xb40bbe37UL, 0xc30c8ea1UL, 0x5a05df1bUL,
- 0x2d02ef8dUL
-#ifdef BYFOUR
- },
- {
- 0x00000000UL, 0x191b3141UL, 0x32366282UL, 0x2b2d53c3UL, 0x646cc504UL,
- 0x7d77f445UL, 0x565aa786UL, 0x4f4196c7UL, 0xc8d98a08UL, 0xd1c2bb49UL,
- 0xfaefe88aUL, 0xe3f4d9cbUL, 0xacb54f0cUL, 0xb5ae7e4dUL, 0x9e832d8eUL,
- 0x87981ccfUL, 0x4ac21251UL, 0x53d92310UL, 0x78f470d3UL, 0x61ef4192UL,
- 0x2eaed755UL, 0x37b5e614UL, 0x1c98b5d7UL, 0x05838496UL, 0x821b9859UL,
- 0x9b00a918UL, 0xb02dfadbUL, 0xa936cb9aUL, 0xe6775d5dUL, 0xff6c6c1cUL,
- 0xd4413fdfUL, 0xcd5a0e9eUL, 0x958424a2UL, 0x8c9f15e3UL, 0xa7b24620UL,
- 0xbea97761UL, 0xf1e8e1a6UL, 0xe8f3d0e7UL, 0xc3de8324UL, 0xdac5b265UL,
- 0x5d5daeaaUL, 0x44469febUL, 0x6f6bcc28UL, 0x7670fd69UL, 0x39316baeUL,
- 0x202a5aefUL, 0x0b07092cUL, 0x121c386dUL, 0xdf4636f3UL, 0xc65d07b2UL,
- 0xed705471UL, 0xf46b6530UL, 0xbb2af3f7UL, 0xa231c2b6UL, 0x891c9175UL,
- 0x9007a034UL, 0x179fbcfbUL, 0x0e848dbaUL, 0x25a9de79UL, 0x3cb2ef38UL,
- 0x73f379ffUL, 0x6ae848beUL, 0x41c51b7dUL, 0x58de2a3cUL, 0xf0794f05UL,
- 0xe9627e44UL, 0xc24f2d87UL, 0xdb541cc6UL, 0x94158a01UL, 0x8d0ebb40UL,
- 0xa623e883UL, 0xbf38d9c2UL, 0x38a0c50dUL, 0x21bbf44cUL, 0x0a96a78fUL,
- 0x138d96ceUL, 0x5ccc0009UL, 0x45d73148UL, 0x6efa628bUL, 0x77e153caUL,
- 0xbabb5d54UL, 0xa3a06c15UL, 0x888d3fd6UL, 0x91960e97UL, 0xded79850UL,
- 0xc7cca911UL, 0xece1fad2UL, 0xf5facb93UL, 0x7262d75cUL, 0x6b79e61dUL,
- 0x4054b5deUL, 0x594f849fUL, 0x160e1258UL, 0x0f152319UL, 0x243870daUL,
- 0x3d23419bUL, 0x65fd6ba7UL, 0x7ce65ae6UL, 0x57cb0925UL, 0x4ed03864UL,
- 0x0191aea3UL, 0x188a9fe2UL, 0x33a7cc21UL, 0x2abcfd60UL, 0xad24e1afUL,
- 0xb43fd0eeUL, 0x9f12832dUL, 0x8609b26cUL, 0xc94824abUL, 0xd05315eaUL,
- 0xfb7e4629UL, 0xe2657768UL, 0x2f3f79f6UL, 0x362448b7UL, 0x1d091b74UL,
- 0x04122a35UL, 0x4b53bcf2UL, 0x52488db3UL, 0x7965de70UL, 0x607eef31UL,
- 0xe7e6f3feUL, 0xfefdc2bfUL, 0xd5d0917cUL, 0xcccba03dUL, 0x838a36faUL,
- 0x9a9107bbUL, 0xb1bc5478UL, 0xa8a76539UL, 0x3b83984bUL, 0x2298a90aUL,
- 0x09b5fac9UL, 0x10aecb88UL, 0x5fef5d4fUL, 0x46f46c0eUL, 0x6dd93fcdUL,
- 0x74c20e8cUL, 0xf35a1243UL, 0xea412302UL, 0xc16c70c1UL, 0xd8774180UL,
- 0x9736d747UL, 0x8e2de606UL, 0xa500b5c5UL, 0xbc1b8484UL, 0x71418a1aUL,
- 0x685abb5bUL, 0x4377e898UL, 0x5a6cd9d9UL, 0x152d4f1eUL, 0x0c367e5fUL,
- 0x271b2d9cUL, 0x3e001cddUL, 0xb9980012UL, 0xa0833153UL, 0x8bae6290UL,
- 0x92b553d1UL, 0xddf4c516UL, 0xc4eff457UL, 0xefc2a794UL, 0xf6d996d5UL,
- 0xae07bce9UL, 0xb71c8da8UL, 0x9c31de6bUL, 0x852aef2aUL, 0xca6b79edUL,
- 0xd37048acUL, 0xf85d1b6fUL, 0xe1462a2eUL, 0x66de36e1UL, 0x7fc507a0UL,
- 0x54e85463UL, 0x4df36522UL, 0x02b2f3e5UL, 0x1ba9c2a4UL, 0x30849167UL,
- 0x299fa026UL, 0xe4c5aeb8UL, 0xfdde9ff9UL, 0xd6f3cc3aUL, 0xcfe8fd7bUL,
- 0x80a96bbcUL, 0x99b25afdUL, 0xb29f093eUL, 0xab84387fUL, 0x2c1c24b0UL,
- 0x350715f1UL, 0x1e2a4632UL, 0x07317773UL, 0x4870e1b4UL, 0x516bd0f5UL,
- 0x7a468336UL, 0x635db277UL, 0xcbfad74eUL, 0xd2e1e60fUL, 0xf9ccb5ccUL,
- 0xe0d7848dUL, 0xaf96124aUL, 0xb68d230bUL, 0x9da070c8UL, 0x84bb4189UL,
- 0x03235d46UL, 0x1a386c07UL, 0x31153fc4UL, 0x280e0e85UL, 0x674f9842UL,
- 0x7e54a903UL, 0x5579fac0UL, 0x4c62cb81UL, 0x8138c51fUL, 0x9823f45eUL,
- 0xb30ea79dUL, 0xaa1596dcUL, 0xe554001bUL, 0xfc4f315aUL, 0xd7626299UL,
- 0xce7953d8UL, 0x49e14f17UL, 0x50fa7e56UL, 0x7bd72d95UL, 0x62cc1cd4UL,
- 0x2d8d8a13UL, 0x3496bb52UL, 0x1fbbe891UL, 0x06a0d9d0UL, 0x5e7ef3ecUL,
- 0x4765c2adUL, 0x6c48916eUL, 0x7553a02fUL, 0x3a1236e8UL, 0x230907a9UL,
- 0x0824546aUL, 0x113f652bUL, 0x96a779e4UL, 0x8fbc48a5UL, 0xa4911b66UL,
- 0xbd8a2a27UL, 0xf2cbbce0UL, 0xebd08da1UL, 0xc0fdde62UL, 0xd9e6ef23UL,
- 0x14bce1bdUL, 0x0da7d0fcUL, 0x268a833fUL, 0x3f91b27eUL, 0x70d024b9UL,
- 0x69cb15f8UL, 0x42e6463bUL, 0x5bfd777aUL, 0xdc656bb5UL, 0xc57e5af4UL,
- 0xee530937UL, 0xf7483876UL, 0xb809aeb1UL, 0xa1129ff0UL, 0x8a3fcc33UL,
- 0x9324fd72UL
- },
- {
- 0x00000000UL, 0x01c26a37UL, 0x0384d46eUL, 0x0246be59UL, 0x0709a8dcUL,
- 0x06cbc2ebUL, 0x048d7cb2UL, 0x054f1685UL, 0x0e1351b8UL, 0x0fd13b8fUL,
- 0x0d9785d6UL, 0x0c55efe1UL, 0x091af964UL, 0x08d89353UL, 0x0a9e2d0aUL,
- 0x0b5c473dUL, 0x1c26a370UL, 0x1de4c947UL, 0x1fa2771eUL, 0x1e601d29UL,
- 0x1b2f0bacUL, 0x1aed619bUL, 0x18abdfc2UL, 0x1969b5f5UL, 0x1235f2c8UL,
- 0x13f798ffUL, 0x11b126a6UL, 0x10734c91UL, 0x153c5a14UL, 0x14fe3023UL,
- 0x16b88e7aUL, 0x177ae44dUL, 0x384d46e0UL, 0x398f2cd7UL, 0x3bc9928eUL,
- 0x3a0bf8b9UL, 0x3f44ee3cUL, 0x3e86840bUL, 0x3cc03a52UL, 0x3d025065UL,
- 0x365e1758UL, 0x379c7d6fUL, 0x35dac336UL, 0x3418a901UL, 0x3157bf84UL,
- 0x3095d5b3UL, 0x32d36beaUL, 0x331101ddUL, 0x246be590UL, 0x25a98fa7UL,
- 0x27ef31feUL, 0x262d5bc9UL, 0x23624d4cUL, 0x22a0277bUL, 0x20e69922UL,
- 0x2124f315UL, 0x2a78b428UL, 0x2bbade1fUL, 0x29fc6046UL, 0x283e0a71UL,
- 0x2d711cf4UL, 0x2cb376c3UL, 0x2ef5c89aUL, 0x2f37a2adUL, 0x709a8dc0UL,
- 0x7158e7f7UL, 0x731e59aeUL, 0x72dc3399UL, 0x7793251cUL, 0x76514f2bUL,
- 0x7417f172UL, 0x75d59b45UL, 0x7e89dc78UL, 0x7f4bb64fUL, 0x7d0d0816UL,
- 0x7ccf6221UL, 0x798074a4UL, 0x78421e93UL, 0x7a04a0caUL, 0x7bc6cafdUL,
- 0x6cbc2eb0UL, 0x6d7e4487UL, 0x6f38fadeUL, 0x6efa90e9UL, 0x6bb5866cUL,
- 0x6a77ec5bUL, 0x68315202UL, 0x69f33835UL, 0x62af7f08UL, 0x636d153fUL,
- 0x612bab66UL, 0x60e9c151UL, 0x65a6d7d4UL, 0x6464bde3UL, 0x662203baUL,
- 0x67e0698dUL, 0x48d7cb20UL, 0x4915a117UL, 0x4b531f4eUL, 0x4a917579UL,
- 0x4fde63fcUL, 0x4e1c09cbUL, 0x4c5ab792UL, 0x4d98dda5UL, 0x46c49a98UL,
- 0x4706f0afUL, 0x45404ef6UL, 0x448224c1UL, 0x41cd3244UL, 0x400f5873UL,
- 0x4249e62aUL, 0x438b8c1dUL, 0x54f16850UL, 0x55330267UL, 0x5775bc3eUL,
- 0x56b7d609UL, 0x53f8c08cUL, 0x523aaabbUL, 0x507c14e2UL, 0x51be7ed5UL,
- 0x5ae239e8UL, 0x5b2053dfUL, 0x5966ed86UL, 0x58a487b1UL, 0x5deb9134UL,
- 0x5c29fb03UL, 0x5e6f455aUL, 0x5fad2f6dUL, 0xe1351b80UL, 0xe0f771b7UL,
- 0xe2b1cfeeUL, 0xe373a5d9UL, 0xe63cb35cUL, 0xe7fed96bUL, 0xe5b86732UL,
- 0xe47a0d05UL, 0xef264a38UL, 0xeee4200fUL, 0xeca29e56UL, 0xed60f461UL,
- 0xe82fe2e4UL, 0xe9ed88d3UL, 0xebab368aUL, 0xea695cbdUL, 0xfd13b8f0UL,
- 0xfcd1d2c7UL, 0xfe976c9eUL, 0xff5506a9UL, 0xfa1a102cUL, 0xfbd87a1bUL,
- 0xf99ec442UL, 0xf85cae75UL, 0xf300e948UL, 0xf2c2837fUL, 0xf0843d26UL,
- 0xf1465711UL, 0xf4094194UL, 0xf5cb2ba3UL, 0xf78d95faUL, 0xf64fffcdUL,
- 0xd9785d60UL, 0xd8ba3757UL, 0xdafc890eUL, 0xdb3ee339UL, 0xde71f5bcUL,
- 0xdfb39f8bUL, 0xddf521d2UL, 0xdc374be5UL, 0xd76b0cd8UL, 0xd6a966efUL,
- 0xd4efd8b6UL, 0xd52db281UL, 0xd062a404UL, 0xd1a0ce33UL, 0xd3e6706aUL,
- 0xd2241a5dUL, 0xc55efe10UL, 0xc49c9427UL, 0xc6da2a7eUL, 0xc7184049UL,
- 0xc25756ccUL, 0xc3953cfbUL, 0xc1d382a2UL, 0xc011e895UL, 0xcb4dafa8UL,
- 0xca8fc59fUL, 0xc8c97bc6UL, 0xc90b11f1UL, 0xcc440774UL, 0xcd866d43UL,
- 0xcfc0d31aUL, 0xce02b92dUL, 0x91af9640UL, 0x906dfc77UL, 0x922b422eUL,
- 0x93e92819UL, 0x96a63e9cUL, 0x976454abUL, 0x9522eaf2UL, 0x94e080c5UL,
- 0x9fbcc7f8UL, 0x9e7eadcfUL, 0x9c381396UL, 0x9dfa79a1UL, 0x98b56f24UL,
- 0x99770513UL, 0x9b31bb4aUL, 0x9af3d17dUL, 0x8d893530UL, 0x8c4b5f07UL,
- 0x8e0de15eUL, 0x8fcf8b69UL, 0x8a809decUL, 0x8b42f7dbUL, 0x89044982UL,
- 0x88c623b5UL, 0x839a6488UL, 0x82580ebfUL, 0x801eb0e6UL, 0x81dcdad1UL,
- 0x8493cc54UL, 0x8551a663UL, 0x8717183aUL, 0x86d5720dUL, 0xa9e2d0a0UL,
- 0xa820ba97UL, 0xaa6604ceUL, 0xaba46ef9UL, 0xaeeb787cUL, 0xaf29124bUL,
- 0xad6fac12UL, 0xacadc625UL, 0xa7f18118UL, 0xa633eb2fUL, 0xa4755576UL,
- 0xa5b73f41UL, 0xa0f829c4UL, 0xa13a43f3UL, 0xa37cfdaaUL, 0xa2be979dUL,
- 0xb5c473d0UL, 0xb40619e7UL, 0xb640a7beUL, 0xb782cd89UL, 0xb2cddb0cUL,
- 0xb30fb13bUL, 0xb1490f62UL, 0xb08b6555UL, 0xbbd72268UL, 0xba15485fUL,
- 0xb853f606UL, 0xb9919c31UL, 0xbcde8ab4UL, 0xbd1ce083UL, 0xbf5a5edaUL,
- 0xbe9834edUL
- },
- {
- 0x00000000UL, 0xb8bc6765UL, 0xaa09c88bUL, 0x12b5afeeUL, 0x8f629757UL,
- 0x37def032UL, 0x256b5fdcUL, 0x9dd738b9UL, 0xc5b428efUL, 0x7d084f8aUL,
- 0x6fbde064UL, 0xd7018701UL, 0x4ad6bfb8UL, 0xf26ad8ddUL, 0xe0df7733UL,
- 0x58631056UL, 0x5019579fUL, 0xe8a530faUL, 0xfa109f14UL, 0x42acf871UL,
- 0xdf7bc0c8UL, 0x67c7a7adUL, 0x75720843UL, 0xcdce6f26UL, 0x95ad7f70UL,
- 0x2d111815UL, 0x3fa4b7fbUL, 0x8718d09eUL, 0x1acfe827UL, 0xa2738f42UL,
- 0xb0c620acUL, 0x087a47c9UL, 0xa032af3eUL, 0x188ec85bUL, 0x0a3b67b5UL,
- 0xb28700d0UL, 0x2f503869UL, 0x97ec5f0cUL, 0x8559f0e2UL, 0x3de59787UL,
- 0x658687d1UL, 0xdd3ae0b4UL, 0xcf8f4f5aUL, 0x7733283fUL, 0xeae41086UL,
- 0x525877e3UL, 0x40edd80dUL, 0xf851bf68UL, 0xf02bf8a1UL, 0x48979fc4UL,
- 0x5a22302aUL, 0xe29e574fUL, 0x7f496ff6UL, 0xc7f50893UL, 0xd540a77dUL,
- 0x6dfcc018UL, 0x359fd04eUL, 0x8d23b72bUL, 0x9f9618c5UL, 0x272a7fa0UL,
- 0xbafd4719UL, 0x0241207cUL, 0x10f48f92UL, 0xa848e8f7UL, 0x9b14583dUL,
- 0x23a83f58UL, 0x311d90b6UL, 0x89a1f7d3UL, 0x1476cf6aUL, 0xaccaa80fUL,
- 0xbe7f07e1UL, 0x06c36084UL, 0x5ea070d2UL, 0xe61c17b7UL, 0xf4a9b859UL,
- 0x4c15df3cUL, 0xd1c2e785UL, 0x697e80e0UL, 0x7bcb2f0eUL, 0xc377486bUL,
- 0xcb0d0fa2UL, 0x73b168c7UL, 0x6104c729UL, 0xd9b8a04cUL, 0x446f98f5UL,
- 0xfcd3ff90UL, 0xee66507eUL, 0x56da371bUL, 0x0eb9274dUL, 0xb6054028UL,
- 0xa4b0efc6UL, 0x1c0c88a3UL, 0x81dbb01aUL, 0x3967d77fUL, 0x2bd27891UL,
- 0x936e1ff4UL, 0x3b26f703UL, 0x839a9066UL, 0x912f3f88UL, 0x299358edUL,
- 0xb4446054UL, 0x0cf80731UL, 0x1e4da8dfUL, 0xa6f1cfbaUL, 0xfe92dfecUL,
- 0x462eb889UL, 0x549b1767UL, 0xec277002UL, 0x71f048bbUL, 0xc94c2fdeUL,
- 0xdbf98030UL, 0x6345e755UL, 0x6b3fa09cUL, 0xd383c7f9UL, 0xc1366817UL,
- 0x798a0f72UL, 0xe45d37cbUL, 0x5ce150aeUL, 0x4e54ff40UL, 0xf6e89825UL,
- 0xae8b8873UL, 0x1637ef16UL, 0x048240f8UL, 0xbc3e279dUL, 0x21e91f24UL,
- 0x99557841UL, 0x8be0d7afUL, 0x335cb0caUL, 0xed59b63bUL, 0x55e5d15eUL,
- 0x47507eb0UL, 0xffec19d5UL, 0x623b216cUL, 0xda874609UL, 0xc832e9e7UL,
- 0x708e8e82UL, 0x28ed9ed4UL, 0x9051f9b1UL, 0x82e4565fUL, 0x3a58313aUL,
- 0xa78f0983UL, 0x1f336ee6UL, 0x0d86c108UL, 0xb53aa66dUL, 0xbd40e1a4UL,
- 0x05fc86c1UL, 0x1749292fUL, 0xaff54e4aUL, 0x322276f3UL, 0x8a9e1196UL,
- 0x982bbe78UL, 0x2097d91dUL, 0x78f4c94bUL, 0xc048ae2eUL, 0xd2fd01c0UL,
- 0x6a4166a5UL, 0xf7965e1cUL, 0x4f2a3979UL, 0x5d9f9697UL, 0xe523f1f2UL,
- 0x4d6b1905UL, 0xf5d77e60UL, 0xe762d18eUL, 0x5fdeb6ebUL, 0xc2098e52UL,
- 0x7ab5e937UL, 0x680046d9UL, 0xd0bc21bcUL, 0x88df31eaUL, 0x3063568fUL,
- 0x22d6f961UL, 0x9a6a9e04UL, 0x07bda6bdUL, 0xbf01c1d8UL, 0xadb46e36UL,
- 0x15080953UL, 0x1d724e9aUL, 0xa5ce29ffUL, 0xb77b8611UL, 0x0fc7e174UL,
- 0x9210d9cdUL, 0x2aacbea8UL, 0x38191146UL, 0x80a57623UL, 0xd8c66675UL,
- 0x607a0110UL, 0x72cfaefeUL, 0xca73c99bUL, 0x57a4f122UL, 0xef189647UL,
- 0xfdad39a9UL, 0x45115eccUL, 0x764dee06UL, 0xcef18963UL, 0xdc44268dUL,
- 0x64f841e8UL, 0xf92f7951UL, 0x41931e34UL, 0x5326b1daUL, 0xeb9ad6bfUL,
- 0xb3f9c6e9UL, 0x0b45a18cUL, 0x19f00e62UL, 0xa14c6907UL, 0x3c9b51beUL,
- 0x842736dbUL, 0x96929935UL, 0x2e2efe50UL, 0x2654b999UL, 0x9ee8defcUL,
- 0x8c5d7112UL, 0x34e11677UL, 0xa9362eceUL, 0x118a49abUL, 0x033fe645UL,
- 0xbb838120UL, 0xe3e09176UL, 0x5b5cf613UL, 0x49e959fdUL, 0xf1553e98UL,
- 0x6c820621UL, 0xd43e6144UL, 0xc68bceaaUL, 0x7e37a9cfUL, 0xd67f4138UL,
- 0x6ec3265dUL, 0x7c7689b3UL, 0xc4caeed6UL, 0x591dd66fUL, 0xe1a1b10aUL,
- 0xf3141ee4UL, 0x4ba87981UL, 0x13cb69d7UL, 0xab770eb2UL, 0xb9c2a15cUL,
- 0x017ec639UL, 0x9ca9fe80UL, 0x241599e5UL, 0x36a0360bUL, 0x8e1c516eUL,
- 0x866616a7UL, 0x3eda71c2UL, 0x2c6fde2cUL, 0x94d3b949UL, 0x090481f0UL,
- 0xb1b8e695UL, 0xa30d497bUL, 0x1bb12e1eUL, 0x43d23e48UL, 0xfb6e592dUL,
- 0xe9dbf6c3UL, 0x516791a6UL, 0xccb0a91fUL, 0x740cce7aUL, 0x66b96194UL,
- 0xde0506f1UL
- },
- {
- 0x00000000UL, 0x96300777UL, 0x2c610eeeUL, 0xba510999UL, 0x19c46d07UL,
- 0x8ff46a70UL, 0x35a563e9UL, 0xa395649eUL, 0x3288db0eUL, 0xa4b8dc79UL,
- 0x1ee9d5e0UL, 0x88d9d297UL, 0x2b4cb609UL, 0xbd7cb17eUL, 0x072db8e7UL,
- 0x911dbf90UL, 0x6410b71dUL, 0xf220b06aUL, 0x4871b9f3UL, 0xde41be84UL,
- 0x7dd4da1aUL, 0xebe4dd6dUL, 0x51b5d4f4UL, 0xc785d383UL, 0x56986c13UL,
- 0xc0a86b64UL, 0x7af962fdUL, 0xecc9658aUL, 0x4f5c0114UL, 0xd96c0663UL,
- 0x633d0ffaUL, 0xf50d088dUL, 0xc8206e3bUL, 0x5e10694cUL, 0xe44160d5UL,
- 0x727167a2UL, 0xd1e4033cUL, 0x47d4044bUL, 0xfd850dd2UL, 0x6bb50aa5UL,
- 0xfaa8b535UL, 0x6c98b242UL, 0xd6c9bbdbUL, 0x40f9bcacUL, 0xe36cd832UL,
- 0x755cdf45UL, 0xcf0dd6dcUL, 0x593dd1abUL, 0xac30d926UL, 0x3a00de51UL,
- 0x8051d7c8UL, 0x1661d0bfUL, 0xb5f4b421UL, 0x23c4b356UL, 0x9995bacfUL,
- 0x0fa5bdb8UL, 0x9eb80228UL, 0x0888055fUL, 0xb2d90cc6UL, 0x24e90bb1UL,
- 0x877c6f2fUL, 0x114c6858UL, 0xab1d61c1UL, 0x3d2d66b6UL, 0x9041dc76UL,
- 0x0671db01UL, 0xbc20d298UL, 0x2a10d5efUL, 0x8985b171UL, 0x1fb5b606UL,
- 0xa5e4bf9fUL, 0x33d4b8e8UL, 0xa2c90778UL, 0x34f9000fUL, 0x8ea80996UL,
- 0x18980ee1UL, 0xbb0d6a7fUL, 0x2d3d6d08UL, 0x976c6491UL, 0x015c63e6UL,
- 0xf4516b6bUL, 0x62616c1cUL, 0xd8306585UL, 0x4e0062f2UL, 0xed95066cUL,
- 0x7ba5011bUL, 0xc1f40882UL, 0x57c40ff5UL, 0xc6d9b065UL, 0x50e9b712UL,
- 0xeab8be8bUL, 0x7c88b9fcUL, 0xdf1ddd62UL, 0x492dda15UL, 0xf37cd38cUL,
- 0x654cd4fbUL, 0x5861b24dUL, 0xce51b53aUL, 0x7400bca3UL, 0xe230bbd4UL,
- 0x41a5df4aUL, 0xd795d83dUL, 0x6dc4d1a4UL, 0xfbf4d6d3UL, 0x6ae96943UL,
- 0xfcd96e34UL, 0x468867adUL, 0xd0b860daUL, 0x732d0444UL, 0xe51d0333UL,
- 0x5f4c0aaaUL, 0xc97c0dddUL, 0x3c710550UL, 0xaa410227UL, 0x10100bbeUL,
- 0x86200cc9UL, 0x25b56857UL, 0xb3856f20UL, 0x09d466b9UL, 0x9fe461ceUL,
- 0x0ef9de5eUL, 0x98c9d929UL, 0x2298d0b0UL, 0xb4a8d7c7UL, 0x173db359UL,
- 0x810db42eUL, 0x3b5cbdb7UL, 0xad6cbac0UL, 0x2083b8edUL, 0xb6b3bf9aUL,
- 0x0ce2b603UL, 0x9ad2b174UL, 0x3947d5eaUL, 0xaf77d29dUL, 0x1526db04UL,
- 0x8316dc73UL, 0x120b63e3UL, 0x843b6494UL, 0x3e6a6d0dUL, 0xa85a6a7aUL,
- 0x0bcf0ee4UL, 0x9dff0993UL, 0x27ae000aUL, 0xb19e077dUL, 0x44930ff0UL,
- 0xd2a30887UL, 0x68f2011eUL, 0xfec20669UL, 0x5d5762f7UL, 0xcb676580UL,
- 0x71366c19UL, 0xe7066b6eUL, 0x761bd4feUL, 0xe02bd389UL, 0x5a7ada10UL,
- 0xcc4add67UL, 0x6fdfb9f9UL, 0xf9efbe8eUL, 0x43beb717UL, 0xd58eb060UL,
- 0xe8a3d6d6UL, 0x7e93d1a1UL, 0xc4c2d838UL, 0x52f2df4fUL, 0xf167bbd1UL,
- 0x6757bca6UL, 0xdd06b53fUL, 0x4b36b248UL, 0xda2b0dd8UL, 0x4c1b0aafUL,
- 0xf64a0336UL, 0x607a0441UL, 0xc3ef60dfUL, 0x55df67a8UL, 0xef8e6e31UL,
- 0x79be6946UL, 0x8cb361cbUL, 0x1a8366bcUL, 0xa0d26f25UL, 0x36e26852UL,
- 0x95770cccUL, 0x03470bbbUL, 0xb9160222UL, 0x2f260555UL, 0xbe3bbac5UL,
- 0x280bbdb2UL, 0x925ab42bUL, 0x046ab35cUL, 0xa7ffd7c2UL, 0x31cfd0b5UL,
- 0x8b9ed92cUL, 0x1daede5bUL, 0xb0c2649bUL, 0x26f263ecUL, 0x9ca36a75UL,
- 0x0a936d02UL, 0xa906099cUL, 0x3f360eebUL, 0x85670772UL, 0x13570005UL,
- 0x824abf95UL, 0x147ab8e2UL, 0xae2bb17bUL, 0x381bb60cUL, 0x9b8ed292UL,
- 0x0dbed5e5UL, 0xb7efdc7cUL, 0x21dfdb0bUL, 0xd4d2d386UL, 0x42e2d4f1UL,
- 0xf8b3dd68UL, 0x6e83da1fUL, 0xcd16be81UL, 0x5b26b9f6UL, 0xe177b06fUL,
- 0x7747b718UL, 0xe65a0888UL, 0x706a0fffUL, 0xca3b0666UL, 0x5c0b0111UL,
- 0xff9e658fUL, 0x69ae62f8UL, 0xd3ff6b61UL, 0x45cf6c16UL, 0x78e20aa0UL,
- 0xeed20dd7UL, 0x5483044eUL, 0xc2b30339UL, 0x612667a7UL, 0xf71660d0UL,
- 0x4d476949UL, 0xdb776e3eUL, 0x4a6ad1aeUL, 0xdc5ad6d9UL, 0x660bdf40UL,
- 0xf03bd837UL, 0x53aebca9UL, 0xc59ebbdeUL, 0x7fcfb247UL, 0xe9ffb530UL,
- 0x1cf2bdbdUL, 0x8ac2bacaUL, 0x3093b353UL, 0xa6a3b424UL, 0x0536d0baUL,
- 0x9306d7cdUL, 0x2957de54UL, 0xbf67d923UL, 0x2e7a66b3UL, 0xb84a61c4UL,
- 0x021b685dUL, 0x942b6f2aUL, 0x37be0bb4UL, 0xa18e0cc3UL, 0x1bdf055aUL,
- 0x8def022dUL
- },
- {
- 0x00000000UL, 0x41311b19UL, 0x82623632UL, 0xc3532d2bUL, 0x04c56c64UL,
- 0x45f4777dUL, 0x86a75a56UL, 0xc796414fUL, 0x088ad9c8UL, 0x49bbc2d1UL,
- 0x8ae8effaUL, 0xcbd9f4e3UL, 0x0c4fb5acUL, 0x4d7eaeb5UL, 0x8e2d839eUL,
- 0xcf1c9887UL, 0x5112c24aUL, 0x1023d953UL, 0xd370f478UL, 0x9241ef61UL,
- 0x55d7ae2eUL, 0x14e6b537UL, 0xd7b5981cUL, 0x96848305UL, 0x59981b82UL,
- 0x18a9009bUL, 0xdbfa2db0UL, 0x9acb36a9UL, 0x5d5d77e6UL, 0x1c6c6cffUL,
- 0xdf3f41d4UL, 0x9e0e5acdUL, 0xa2248495UL, 0xe3159f8cUL, 0x2046b2a7UL,
- 0x6177a9beUL, 0xa6e1e8f1UL, 0xe7d0f3e8UL, 0x2483dec3UL, 0x65b2c5daUL,
- 0xaaae5d5dUL, 0xeb9f4644UL, 0x28cc6b6fUL, 0x69fd7076UL, 0xae6b3139UL,
- 0xef5a2a20UL, 0x2c09070bUL, 0x6d381c12UL, 0xf33646dfUL, 0xb2075dc6UL,
- 0x715470edUL, 0x30656bf4UL, 0xf7f32abbUL, 0xb6c231a2UL, 0x75911c89UL,
- 0x34a00790UL, 0xfbbc9f17UL, 0xba8d840eUL, 0x79dea925UL, 0x38efb23cUL,
- 0xff79f373UL, 0xbe48e86aUL, 0x7d1bc541UL, 0x3c2ade58UL, 0x054f79f0UL,
- 0x447e62e9UL, 0x872d4fc2UL, 0xc61c54dbUL, 0x018a1594UL, 0x40bb0e8dUL,
- 0x83e823a6UL, 0xc2d938bfUL, 0x0dc5a038UL, 0x4cf4bb21UL, 0x8fa7960aUL,
- 0xce968d13UL, 0x0900cc5cUL, 0x4831d745UL, 0x8b62fa6eUL, 0xca53e177UL,
- 0x545dbbbaUL, 0x156ca0a3UL, 0xd63f8d88UL, 0x970e9691UL, 0x5098d7deUL,
- 0x11a9ccc7UL, 0xd2fae1ecUL, 0x93cbfaf5UL, 0x5cd76272UL, 0x1de6796bUL,
- 0xdeb55440UL, 0x9f844f59UL, 0x58120e16UL, 0x1923150fUL, 0xda703824UL,
- 0x9b41233dUL, 0xa76bfd65UL, 0xe65ae67cUL, 0x2509cb57UL, 0x6438d04eUL,
- 0xa3ae9101UL, 0xe29f8a18UL, 0x21cca733UL, 0x60fdbc2aUL, 0xafe124adUL,
- 0xeed03fb4UL, 0x2d83129fUL, 0x6cb20986UL, 0xab2448c9UL, 0xea1553d0UL,
- 0x29467efbUL, 0x687765e2UL, 0xf6793f2fUL, 0xb7482436UL, 0x741b091dUL,
- 0x352a1204UL, 0xf2bc534bUL, 0xb38d4852UL, 0x70de6579UL, 0x31ef7e60UL,
- 0xfef3e6e7UL, 0xbfc2fdfeUL, 0x7c91d0d5UL, 0x3da0cbccUL, 0xfa368a83UL,
- 0xbb07919aUL, 0x7854bcb1UL, 0x3965a7a8UL, 0x4b98833bUL, 0x0aa99822UL,
- 0xc9fab509UL, 0x88cbae10UL, 0x4f5def5fUL, 0x0e6cf446UL, 0xcd3fd96dUL,
- 0x8c0ec274UL, 0x43125af3UL, 0x022341eaUL, 0xc1706cc1UL, 0x804177d8UL,
- 0x47d73697UL, 0x06e62d8eUL, 0xc5b500a5UL, 0x84841bbcUL, 0x1a8a4171UL,
- 0x5bbb5a68UL, 0x98e87743UL, 0xd9d96c5aUL, 0x1e4f2d15UL, 0x5f7e360cUL,
- 0x9c2d1b27UL, 0xdd1c003eUL, 0x120098b9UL, 0x533183a0UL, 0x9062ae8bUL,
- 0xd153b592UL, 0x16c5f4ddUL, 0x57f4efc4UL, 0x94a7c2efUL, 0xd596d9f6UL,
- 0xe9bc07aeUL, 0xa88d1cb7UL, 0x6bde319cUL, 0x2aef2a85UL, 0xed796bcaUL,
- 0xac4870d3UL, 0x6f1b5df8UL, 0x2e2a46e1UL, 0xe136de66UL, 0xa007c57fUL,
- 0x6354e854UL, 0x2265f34dUL, 0xe5f3b202UL, 0xa4c2a91bUL, 0x67918430UL,
- 0x26a09f29UL, 0xb8aec5e4UL, 0xf99fdefdUL, 0x3accf3d6UL, 0x7bfde8cfUL,
- 0xbc6ba980UL, 0xfd5ab299UL, 0x3e099fb2UL, 0x7f3884abUL, 0xb0241c2cUL,
- 0xf1150735UL, 0x32462a1eUL, 0x73773107UL, 0xb4e17048UL, 0xf5d06b51UL,
- 0x3683467aUL, 0x77b25d63UL, 0x4ed7facbUL, 0x0fe6e1d2UL, 0xccb5ccf9UL,
- 0x8d84d7e0UL, 0x4a1296afUL, 0x0b238db6UL, 0xc870a09dUL, 0x8941bb84UL,
- 0x465d2303UL, 0x076c381aUL, 0xc43f1531UL, 0x850e0e28UL, 0x42984f67UL,
- 0x03a9547eUL, 0xc0fa7955UL, 0x81cb624cUL, 0x1fc53881UL, 0x5ef42398UL,
- 0x9da70eb3UL, 0xdc9615aaUL, 0x1b0054e5UL, 0x5a314ffcUL, 0x996262d7UL,
- 0xd85379ceUL, 0x174fe149UL, 0x567efa50UL, 0x952dd77bUL, 0xd41ccc62UL,
- 0x138a8d2dUL, 0x52bb9634UL, 0x91e8bb1fUL, 0xd0d9a006UL, 0xecf37e5eUL,
- 0xadc26547UL, 0x6e91486cUL, 0x2fa05375UL, 0xe836123aUL, 0xa9070923UL,
- 0x6a542408UL, 0x2b653f11UL, 0xe479a796UL, 0xa548bc8fUL, 0x661b91a4UL,
- 0x272a8abdUL, 0xe0bccbf2UL, 0xa18dd0ebUL, 0x62defdc0UL, 0x23efe6d9UL,
- 0xbde1bc14UL, 0xfcd0a70dUL, 0x3f838a26UL, 0x7eb2913fUL, 0xb924d070UL,
- 0xf815cb69UL, 0x3b46e642UL, 0x7a77fd5bUL, 0xb56b65dcUL, 0xf45a7ec5UL,
- 0x370953eeUL, 0x763848f7UL, 0xb1ae09b8UL, 0xf09f12a1UL, 0x33cc3f8aUL,
- 0x72fd2493UL
- },
- {
- 0x00000000UL, 0x376ac201UL, 0x6ed48403UL, 0x59be4602UL, 0xdca80907UL,
- 0xebc2cb06UL, 0xb27c8d04UL, 0x85164f05UL, 0xb851130eUL, 0x8f3bd10fUL,
- 0xd685970dUL, 0xe1ef550cUL, 0x64f91a09UL, 0x5393d808UL, 0x0a2d9e0aUL,
- 0x3d475c0bUL, 0x70a3261cUL, 0x47c9e41dUL, 0x1e77a21fUL, 0x291d601eUL,
- 0xac0b2f1bUL, 0x9b61ed1aUL, 0xc2dfab18UL, 0xf5b56919UL, 0xc8f23512UL,
- 0xff98f713UL, 0xa626b111UL, 0x914c7310UL, 0x145a3c15UL, 0x2330fe14UL,
- 0x7a8eb816UL, 0x4de47a17UL, 0xe0464d38UL, 0xd72c8f39UL, 0x8e92c93bUL,
- 0xb9f80b3aUL, 0x3cee443fUL, 0x0b84863eUL, 0x523ac03cUL, 0x6550023dUL,
- 0x58175e36UL, 0x6f7d9c37UL, 0x36c3da35UL, 0x01a91834UL, 0x84bf5731UL,
- 0xb3d59530UL, 0xea6bd332UL, 0xdd011133UL, 0x90e56b24UL, 0xa78fa925UL,
- 0xfe31ef27UL, 0xc95b2d26UL, 0x4c4d6223UL, 0x7b27a022UL, 0x2299e620UL,
- 0x15f32421UL, 0x28b4782aUL, 0x1fdeba2bUL, 0x4660fc29UL, 0x710a3e28UL,
- 0xf41c712dUL, 0xc376b32cUL, 0x9ac8f52eUL, 0xada2372fUL, 0xc08d9a70UL,
- 0xf7e75871UL, 0xae591e73UL, 0x9933dc72UL, 0x1c259377UL, 0x2b4f5176UL,
- 0x72f11774UL, 0x459bd575UL, 0x78dc897eUL, 0x4fb64b7fUL, 0x16080d7dUL,
- 0x2162cf7cUL, 0xa4748079UL, 0x931e4278UL, 0xcaa0047aUL, 0xfdcac67bUL,
- 0xb02ebc6cUL, 0x87447e6dUL, 0xdefa386fUL, 0xe990fa6eUL, 0x6c86b56bUL,
- 0x5bec776aUL, 0x02523168UL, 0x3538f369UL, 0x087faf62UL, 0x3f156d63UL,
- 0x66ab2b61UL, 0x51c1e960UL, 0xd4d7a665UL, 0xe3bd6464UL, 0xba032266UL,
- 0x8d69e067UL, 0x20cbd748UL, 0x17a11549UL, 0x4e1f534bUL, 0x7975914aUL,
- 0xfc63de4fUL, 0xcb091c4eUL, 0x92b75a4cUL, 0xa5dd984dUL, 0x989ac446UL,
- 0xaff00647UL, 0xf64e4045UL, 0xc1248244UL, 0x4432cd41UL, 0x73580f40UL,
- 0x2ae64942UL, 0x1d8c8b43UL, 0x5068f154UL, 0x67023355UL, 0x3ebc7557UL,
- 0x09d6b756UL, 0x8cc0f853UL, 0xbbaa3a52UL, 0xe2147c50UL, 0xd57ebe51UL,
- 0xe839e25aUL, 0xdf53205bUL, 0x86ed6659UL, 0xb187a458UL, 0x3491eb5dUL,
- 0x03fb295cUL, 0x5a456f5eUL, 0x6d2fad5fUL, 0x801b35e1UL, 0xb771f7e0UL,
- 0xeecfb1e2UL, 0xd9a573e3UL, 0x5cb33ce6UL, 0x6bd9fee7UL, 0x3267b8e5UL,
- 0x050d7ae4UL, 0x384a26efUL, 0x0f20e4eeUL, 0x569ea2ecUL, 0x61f460edUL,
- 0xe4e22fe8UL, 0xd388ede9UL, 0x8a36abebUL, 0xbd5c69eaUL, 0xf0b813fdUL,
- 0xc7d2d1fcUL, 0x9e6c97feUL, 0xa90655ffUL, 0x2c101afaUL, 0x1b7ad8fbUL,
- 0x42c49ef9UL, 0x75ae5cf8UL, 0x48e900f3UL, 0x7f83c2f2UL, 0x263d84f0UL,
- 0x115746f1UL, 0x944109f4UL, 0xa32bcbf5UL, 0xfa958df7UL, 0xcdff4ff6UL,
- 0x605d78d9UL, 0x5737bad8UL, 0x0e89fcdaUL, 0x39e33edbUL, 0xbcf571deUL,
- 0x8b9fb3dfUL, 0xd221f5ddUL, 0xe54b37dcUL, 0xd80c6bd7UL, 0xef66a9d6UL,
- 0xb6d8efd4UL, 0x81b22dd5UL, 0x04a462d0UL, 0x33cea0d1UL, 0x6a70e6d3UL,
- 0x5d1a24d2UL, 0x10fe5ec5UL, 0x27949cc4UL, 0x7e2adac6UL, 0x494018c7UL,
- 0xcc5657c2UL, 0xfb3c95c3UL, 0xa282d3c1UL, 0x95e811c0UL, 0xa8af4dcbUL,
- 0x9fc58fcaUL, 0xc67bc9c8UL, 0xf1110bc9UL, 0x740744ccUL, 0x436d86cdUL,
- 0x1ad3c0cfUL, 0x2db902ceUL, 0x4096af91UL, 0x77fc6d90UL, 0x2e422b92UL,
- 0x1928e993UL, 0x9c3ea696UL, 0xab546497UL, 0xf2ea2295UL, 0xc580e094UL,
- 0xf8c7bc9fUL, 0xcfad7e9eUL, 0x9613389cUL, 0xa179fa9dUL, 0x246fb598UL,
- 0x13057799UL, 0x4abb319bUL, 0x7dd1f39aUL, 0x3035898dUL, 0x075f4b8cUL,
- 0x5ee10d8eUL, 0x698bcf8fUL, 0xec9d808aUL, 0xdbf7428bUL, 0x82490489UL,
- 0xb523c688UL, 0x88649a83UL, 0xbf0e5882UL, 0xe6b01e80UL, 0xd1dadc81UL,
- 0x54cc9384UL, 0x63a65185UL, 0x3a181787UL, 0x0d72d586UL, 0xa0d0e2a9UL,
- 0x97ba20a8UL, 0xce0466aaUL, 0xf96ea4abUL, 0x7c78ebaeUL, 0x4b1229afUL,
- 0x12ac6fadUL, 0x25c6adacUL, 0x1881f1a7UL, 0x2feb33a6UL, 0x765575a4UL,
- 0x413fb7a5UL, 0xc429f8a0UL, 0xf3433aa1UL, 0xaafd7ca3UL, 0x9d97bea2UL,
- 0xd073c4b5UL, 0xe71906b4UL, 0xbea740b6UL, 0x89cd82b7UL, 0x0cdbcdb2UL,
- 0x3bb10fb3UL, 0x620f49b1UL, 0x55658bb0UL, 0x6822d7bbUL, 0x5f4815baUL,
- 0x06f653b8UL, 0x319c91b9UL, 0xb48adebcUL, 0x83e01cbdUL, 0xda5e5abfUL,
- 0xed3498beUL
- },
- {
- 0x00000000UL, 0x6567bcb8UL, 0x8bc809aaUL, 0xeeafb512UL, 0x5797628fUL,
- 0x32f0de37UL, 0xdc5f6b25UL, 0xb938d79dUL, 0xef28b4c5UL, 0x8a4f087dUL,
- 0x64e0bd6fUL, 0x018701d7UL, 0xb8bfd64aUL, 0xddd86af2UL, 0x3377dfe0UL,
- 0x56106358UL, 0x9f571950UL, 0xfa30a5e8UL, 0x149f10faUL, 0x71f8ac42UL,
- 0xc8c07bdfUL, 0xada7c767UL, 0x43087275UL, 0x266fcecdUL, 0x707fad95UL,
- 0x1518112dUL, 0xfbb7a43fUL, 0x9ed01887UL, 0x27e8cf1aUL, 0x428f73a2UL,
- 0xac20c6b0UL, 0xc9477a08UL, 0x3eaf32a0UL, 0x5bc88e18UL, 0xb5673b0aUL,
- 0xd00087b2UL, 0x6938502fUL, 0x0c5fec97UL, 0xe2f05985UL, 0x8797e53dUL,
- 0xd1878665UL, 0xb4e03addUL, 0x5a4f8fcfUL, 0x3f283377UL, 0x8610e4eaUL,
- 0xe3775852UL, 0x0dd8ed40UL, 0x68bf51f8UL, 0xa1f82bf0UL, 0xc49f9748UL,
- 0x2a30225aUL, 0x4f579ee2UL, 0xf66f497fUL, 0x9308f5c7UL, 0x7da740d5UL,
- 0x18c0fc6dUL, 0x4ed09f35UL, 0x2bb7238dUL, 0xc518969fUL, 0xa07f2a27UL,
- 0x1947fdbaUL, 0x7c204102UL, 0x928ff410UL, 0xf7e848a8UL, 0x3d58149bUL,
- 0x583fa823UL, 0xb6901d31UL, 0xd3f7a189UL, 0x6acf7614UL, 0x0fa8caacUL,
- 0xe1077fbeUL, 0x8460c306UL, 0xd270a05eUL, 0xb7171ce6UL, 0x59b8a9f4UL,
- 0x3cdf154cUL, 0x85e7c2d1UL, 0xe0807e69UL, 0x0e2fcb7bUL, 0x6b4877c3UL,
- 0xa20f0dcbUL, 0xc768b173UL, 0x29c70461UL, 0x4ca0b8d9UL, 0xf5986f44UL,
- 0x90ffd3fcUL, 0x7e5066eeUL, 0x1b37da56UL, 0x4d27b90eUL, 0x284005b6UL,
- 0xc6efb0a4UL, 0xa3880c1cUL, 0x1ab0db81UL, 0x7fd76739UL, 0x9178d22bUL,
- 0xf41f6e93UL, 0x03f7263bUL, 0x66909a83UL, 0x883f2f91UL, 0xed589329UL,
- 0x546044b4UL, 0x3107f80cUL, 0xdfa84d1eUL, 0xbacff1a6UL, 0xecdf92feUL,
- 0x89b82e46UL, 0x67179b54UL, 0x027027ecUL, 0xbb48f071UL, 0xde2f4cc9UL,
- 0x3080f9dbUL, 0x55e74563UL, 0x9ca03f6bUL, 0xf9c783d3UL, 0x176836c1UL,
- 0x720f8a79UL, 0xcb375de4UL, 0xae50e15cUL, 0x40ff544eUL, 0x2598e8f6UL,
- 0x73888baeUL, 0x16ef3716UL, 0xf8408204UL, 0x9d273ebcUL, 0x241fe921UL,
- 0x41785599UL, 0xafd7e08bUL, 0xcab05c33UL, 0x3bb659edUL, 0x5ed1e555UL,
- 0xb07e5047UL, 0xd519ecffUL, 0x6c213b62UL, 0x094687daUL, 0xe7e932c8UL,
- 0x828e8e70UL, 0xd49eed28UL, 0xb1f95190UL, 0x5f56e482UL, 0x3a31583aUL,
- 0x83098fa7UL, 0xe66e331fUL, 0x08c1860dUL, 0x6da63ab5UL, 0xa4e140bdUL,
- 0xc186fc05UL, 0x2f294917UL, 0x4a4ef5afUL, 0xf3762232UL, 0x96119e8aUL,
- 0x78be2b98UL, 0x1dd99720UL, 0x4bc9f478UL, 0x2eae48c0UL, 0xc001fdd2UL,
- 0xa566416aUL, 0x1c5e96f7UL, 0x79392a4fUL, 0x97969f5dUL, 0xf2f123e5UL,
- 0x05196b4dUL, 0x607ed7f5UL, 0x8ed162e7UL, 0xebb6de5fUL, 0x528e09c2UL,
- 0x37e9b57aUL, 0xd9460068UL, 0xbc21bcd0UL, 0xea31df88UL, 0x8f566330UL,
- 0x61f9d622UL, 0x049e6a9aUL, 0xbda6bd07UL, 0xd8c101bfUL, 0x366eb4adUL,
- 0x53090815UL, 0x9a4e721dUL, 0xff29cea5UL, 0x11867bb7UL, 0x74e1c70fUL,
- 0xcdd91092UL, 0xa8beac2aUL, 0x46111938UL, 0x2376a580UL, 0x7566c6d8UL,
- 0x10017a60UL, 0xfeaecf72UL, 0x9bc973caUL, 0x22f1a457UL, 0x479618efUL,
- 0xa939adfdUL, 0xcc5e1145UL, 0x06ee4d76UL, 0x6389f1ceUL, 0x8d2644dcUL,
- 0xe841f864UL, 0x51792ff9UL, 0x341e9341UL, 0xdab12653UL, 0xbfd69aebUL,
- 0xe9c6f9b3UL, 0x8ca1450bUL, 0x620ef019UL, 0x07694ca1UL, 0xbe519b3cUL,
- 0xdb362784UL, 0x35999296UL, 0x50fe2e2eUL, 0x99b95426UL, 0xfcdee89eUL,
- 0x12715d8cUL, 0x7716e134UL, 0xce2e36a9UL, 0xab498a11UL, 0x45e63f03UL,
- 0x208183bbUL, 0x7691e0e3UL, 0x13f65c5bUL, 0xfd59e949UL, 0x983e55f1UL,
- 0x2106826cUL, 0x44613ed4UL, 0xaace8bc6UL, 0xcfa9377eUL, 0x38417fd6UL,
- 0x5d26c36eUL, 0xb389767cUL, 0xd6eecac4UL, 0x6fd61d59UL, 0x0ab1a1e1UL,
- 0xe41e14f3UL, 0x8179a84bUL, 0xd769cb13UL, 0xb20e77abUL, 0x5ca1c2b9UL,
- 0x39c67e01UL, 0x80fea99cUL, 0xe5991524UL, 0x0b36a036UL, 0x6e511c8eUL,
- 0xa7166686UL, 0xc271da3eUL, 0x2cde6f2cUL, 0x49b9d394UL, 0xf0810409UL,
- 0x95e6b8b1UL, 0x7b490da3UL, 0x1e2eb11bUL, 0x483ed243UL, 0x2d596efbUL,
- 0xc3f6dbe9UL, 0xa6916751UL, 0x1fa9b0ccUL, 0x7ace0c74UL, 0x9461b966UL,
- 0xf10605deUL
+local const z_crc_t FAR crc_table[] = {
+ 0x00000000, 0x77073096, 0xee0e612c, 0x990951ba, 0x076dc419,
+ 0x706af48f, 0xe963a535, 0x9e6495a3, 0x0edb8832, 0x79dcb8a4,
+ 0xe0d5e91e, 0x97d2d988, 0x09b64c2b, 0x7eb17cbd, 0xe7b82d07,
+ 0x90bf1d91, 0x1db71064, 0x6ab020f2, 0xf3b97148, 0x84be41de,
+ 0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7, 0x136c9856,
+ 0x646ba8c0, 0xfd62f97a, 0x8a65c9ec, 0x14015c4f, 0x63066cd9,
+ 0xfa0f3d63, 0x8d080df5, 0x3b6e20c8, 0x4c69105e, 0xd56041e4,
+ 0xa2677172, 0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b,
+ 0x35b5a8fa, 0x42b2986c, 0xdbbbc9d6, 0xacbcf940, 0x32d86ce3,
+ 0x45df5c75, 0xdcd60dcf, 0xabd13d59, 0x26d930ac, 0x51de003a,
+ 0xc8d75180, 0xbfd06116, 0x21b4f4b5, 0x56b3c423, 0xcfba9599,
+ 0xb8bda50f, 0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924,
+ 0x2f6f7c87, 0x58684c11, 0xc1611dab, 0xb6662d3d, 0x76dc4190,
+ 0x01db7106, 0x98d220bc, 0xefd5102a, 0x71b18589, 0x06b6b51f,
+ 0x9fbfe4a5, 0xe8b8d433, 0x7807c9a2, 0x0f00f934, 0x9609a88e,
+ 0xe10e9818, 0x7f6a0dbb, 0x086d3d2d, 0x91646c97, 0xe6635c01,
+ 0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e, 0x6c0695ed,
+ 0x1b01a57b, 0x8208f4c1, 0xf50fc457, 0x65b0d9c6, 0x12b7e950,
+ 0x8bbeb8ea, 0xfcb9887c, 0x62dd1ddf, 0x15da2d49, 0x8cd37cf3,
+ 0xfbd44c65, 0x4db26158, 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2,
+ 0x4adfa541, 0x3dd895d7, 0xa4d1c46d, 0xd3d6f4fb, 0x4369e96a,
+ 0x346ed9fc, 0xad678846, 0xda60b8d0, 0x44042d73, 0x33031de5,
+ 0xaa0a4c5f, 0xdd0d7cc9, 0x5005713c, 0x270241aa, 0xbe0b1010,
+ 0xc90c2086, 0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f,
+ 0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4, 0x59b33d17,
+ 0x2eb40d81, 0xb7bd5c3b, 0xc0ba6cad, 0xedb88320, 0x9abfb3b6,
+ 0x03b6e20c, 0x74b1d29a, 0xead54739, 0x9dd277af, 0x04db2615,
+ 0x73dc1683, 0xe3630b12, 0x94643b84, 0x0d6d6a3e, 0x7a6a5aa8,
+ 0xe40ecf0b, 0x9309ff9d, 0x0a00ae27, 0x7d079eb1, 0xf00f9344,
+ 0x8708a3d2, 0x1e01f268, 0x6906c2fe, 0xf762575d, 0x806567cb,
+ 0x196c3671, 0x6e6b06e7, 0xfed41b76, 0x89d32be0, 0x10da7a5a,
+ 0x67dd4acc, 0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5,
+ 0xd6d6a3e8, 0xa1d1937e, 0x38d8c2c4, 0x4fdff252, 0xd1bb67f1,
+ 0xa6bc5767, 0x3fb506dd, 0x48b2364b, 0xd80d2bda, 0xaf0a1b4c,
+ 0x36034af6, 0x41047a60, 0xdf60efc3, 0xa867df55, 0x316e8eef,
+ 0x4669be79, 0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236,
+ 0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f, 0xc5ba3bbe,
+ 0xb2bd0b28, 0x2bb45a92, 0x5cb36a04, 0xc2d7ffa7, 0xb5d0cf31,
+ 0x2cd99e8b, 0x5bdeae1d, 0x9b64c2b0, 0xec63f226, 0x756aa39c,
+ 0x026d930a, 0x9c0906a9, 0xeb0e363f, 0x72076785, 0x05005713,
+ 0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0x0cb61b38, 0x92d28e9b,
+ 0xe5d5be0d, 0x7cdcefb7, 0x0bdbdf21, 0x86d3d2d4, 0xf1d4e242,
+ 0x68ddb3f8, 0x1fda836e, 0x81be16cd, 0xf6b9265b, 0x6fb077e1,
+ 0x18b74777, 0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c,
+ 0x8f659eff, 0xf862ae69, 0x616bffd3, 0x166ccf45, 0xa00ae278,
+ 0xd70dd2ee, 0x4e048354, 0x3903b3c2, 0xa7672661, 0xd06016f7,
+ 0x4969474d, 0x3e6e77db, 0xaed16a4a, 0xd9d65adc, 0x40df0b66,
+ 0x37d83bf0, 0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9,
+ 0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6, 0xbad03605,
+ 0xcdd70693, 0x54de5729, 0x23d967bf, 0xb3667a2e, 0xc4614ab8,
+ 0x5d681b02, 0x2a6f2b94, 0xb40bbe37, 0xc30c8ea1, 0x5a05df1b,
+ 0x2d02ef8d};
+
+#ifdef W
+
+#if W == 8
+
+local const z_word_t FAR crc_big_table[] = {
+ 0x0000000000000000, 0x9630077700000000, 0x2c610eee00000000,
+ 0xba51099900000000, 0x19c46d0700000000, 0x8ff46a7000000000,
+ 0x35a563e900000000, 0xa395649e00000000, 0x3288db0e00000000,
+ 0xa4b8dc7900000000, 0x1ee9d5e000000000, 0x88d9d29700000000,
+ 0x2b4cb60900000000, 0xbd7cb17e00000000, 0x072db8e700000000,
+ 0x911dbf9000000000, 0x6410b71d00000000, 0xf220b06a00000000,
+ 0x4871b9f300000000, 0xde41be8400000000, 0x7dd4da1a00000000,
+ 0xebe4dd6d00000000, 0x51b5d4f400000000, 0xc785d38300000000,
+ 0x56986c1300000000, 0xc0a86b6400000000, 0x7af962fd00000000,
+ 0xecc9658a00000000, 0x4f5c011400000000, 0xd96c066300000000,
+ 0x633d0ffa00000000, 0xf50d088d00000000, 0xc8206e3b00000000,
+ 0x5e10694c00000000, 0xe44160d500000000, 0x727167a200000000,
+ 0xd1e4033c00000000, 0x47d4044b00000000, 0xfd850dd200000000,
+ 0x6bb50aa500000000, 0xfaa8b53500000000, 0x6c98b24200000000,
+ 0xd6c9bbdb00000000, 0x40f9bcac00000000, 0xe36cd83200000000,
+ 0x755cdf4500000000, 0xcf0dd6dc00000000, 0x593dd1ab00000000,
+ 0xac30d92600000000, 0x3a00de5100000000, 0x8051d7c800000000,
+ 0x1661d0bf00000000, 0xb5f4b42100000000, 0x23c4b35600000000,
+ 0x9995bacf00000000, 0x0fa5bdb800000000, 0x9eb8022800000000,
+ 0x0888055f00000000, 0xb2d90cc600000000, 0x24e90bb100000000,
+ 0x877c6f2f00000000, 0x114c685800000000, 0xab1d61c100000000,
+ 0x3d2d66b600000000, 0x9041dc7600000000, 0x0671db0100000000,
+ 0xbc20d29800000000, 0x2a10d5ef00000000, 0x8985b17100000000,
+ 0x1fb5b60600000000, 0xa5e4bf9f00000000, 0x33d4b8e800000000,
+ 0xa2c9077800000000, 0x34f9000f00000000, 0x8ea8099600000000,
+ 0x18980ee100000000, 0xbb0d6a7f00000000, 0x2d3d6d0800000000,
+ 0x976c649100000000, 0x015c63e600000000, 0xf4516b6b00000000,
+ 0x62616c1c00000000, 0xd830658500000000, 0x4e0062f200000000,
+ 0xed95066c00000000, 0x7ba5011b00000000, 0xc1f4088200000000,
+ 0x57c40ff500000000, 0xc6d9b06500000000, 0x50e9b71200000000,
+ 0xeab8be8b00000000, 0x7c88b9fc00000000, 0xdf1ddd6200000000,
+ 0x492dda1500000000, 0xf37cd38c00000000, 0x654cd4fb00000000,
+ 0x5861b24d00000000, 0xce51b53a00000000, 0x7400bca300000000,
+ 0xe230bbd400000000, 0x41a5df4a00000000, 0xd795d83d00000000,
+ 0x6dc4d1a400000000, 0xfbf4d6d300000000, 0x6ae9694300000000,
+ 0xfcd96e3400000000, 0x468867ad00000000, 0xd0b860da00000000,
+ 0x732d044400000000, 0xe51d033300000000, 0x5f4c0aaa00000000,
+ 0xc97c0ddd00000000, 0x3c71055000000000, 0xaa41022700000000,
+ 0x10100bbe00000000, 0x86200cc900000000, 0x25b5685700000000,
+ 0xb3856f2000000000, 0x09d466b900000000, 0x9fe461ce00000000,
+ 0x0ef9de5e00000000, 0x98c9d92900000000, 0x2298d0b000000000,
+ 0xb4a8d7c700000000, 0x173db35900000000, 0x810db42e00000000,
+ 0x3b5cbdb700000000, 0xad6cbac000000000, 0x2083b8ed00000000,
+ 0xb6b3bf9a00000000, 0x0ce2b60300000000, 0x9ad2b17400000000,
+ 0x3947d5ea00000000, 0xaf77d29d00000000, 0x1526db0400000000,
+ 0x8316dc7300000000, 0x120b63e300000000, 0x843b649400000000,
+ 0x3e6a6d0d00000000, 0xa85a6a7a00000000, 0x0bcf0ee400000000,
+ 0x9dff099300000000, 0x27ae000a00000000, 0xb19e077d00000000,
+ 0x44930ff000000000, 0xd2a3088700000000, 0x68f2011e00000000,
+ 0xfec2066900000000, 0x5d5762f700000000, 0xcb67658000000000,
+ 0x71366c1900000000, 0xe7066b6e00000000, 0x761bd4fe00000000,
+ 0xe02bd38900000000, 0x5a7ada1000000000, 0xcc4add6700000000,
+ 0x6fdfb9f900000000, 0xf9efbe8e00000000, 0x43beb71700000000,
+ 0xd58eb06000000000, 0xe8a3d6d600000000, 0x7e93d1a100000000,
+ 0xc4c2d83800000000, 0x52f2df4f00000000, 0xf167bbd100000000,
+ 0x6757bca600000000, 0xdd06b53f00000000, 0x4b36b24800000000,
+ 0xda2b0dd800000000, 0x4c1b0aaf00000000, 0xf64a033600000000,
+ 0x607a044100000000, 0xc3ef60df00000000, 0x55df67a800000000,
+ 0xef8e6e3100000000, 0x79be694600000000, 0x8cb361cb00000000,
+ 0x1a8366bc00000000, 0xa0d26f2500000000, 0x36e2685200000000,
+ 0x95770ccc00000000, 0x03470bbb00000000, 0xb916022200000000,
+ 0x2f26055500000000, 0xbe3bbac500000000, 0x280bbdb200000000,
+ 0x925ab42b00000000, 0x046ab35c00000000, 0xa7ffd7c200000000,
+ 0x31cfd0b500000000, 0x8b9ed92c00000000, 0x1daede5b00000000,
+ 0xb0c2649b00000000, 0x26f263ec00000000, 0x9ca36a7500000000,
+ 0x0a936d0200000000, 0xa906099c00000000, 0x3f360eeb00000000,
+ 0x8567077200000000, 0x1357000500000000, 0x824abf9500000000,
+ 0x147ab8e200000000, 0xae2bb17b00000000, 0x381bb60c00000000,
+ 0x9b8ed29200000000, 0x0dbed5e500000000, 0xb7efdc7c00000000,
+ 0x21dfdb0b00000000, 0xd4d2d38600000000, 0x42e2d4f100000000,
+ 0xf8b3dd6800000000, 0x6e83da1f00000000, 0xcd16be8100000000,
+ 0x5b26b9f600000000, 0xe177b06f00000000, 0x7747b71800000000,
+ 0xe65a088800000000, 0x706a0fff00000000, 0xca3b066600000000,
+ 0x5c0b011100000000, 0xff9e658f00000000, 0x69ae62f800000000,
+ 0xd3ff6b6100000000, 0x45cf6c1600000000, 0x78e20aa000000000,
+ 0xeed20dd700000000, 0x5483044e00000000, 0xc2b3033900000000,
+ 0x612667a700000000, 0xf71660d000000000, 0x4d47694900000000,
+ 0xdb776e3e00000000, 0x4a6ad1ae00000000, 0xdc5ad6d900000000,
+ 0x660bdf4000000000, 0xf03bd83700000000, 0x53aebca900000000,
+ 0xc59ebbde00000000, 0x7fcfb24700000000, 0xe9ffb53000000000,
+ 0x1cf2bdbd00000000, 0x8ac2baca00000000, 0x3093b35300000000,
+ 0xa6a3b42400000000, 0x0536d0ba00000000, 0x9306d7cd00000000,
+ 0x2957de5400000000, 0xbf67d92300000000, 0x2e7a66b300000000,
+ 0xb84a61c400000000, 0x021b685d00000000, 0x942b6f2a00000000,
+ 0x37be0bb400000000, 0xa18e0cc300000000, 0x1bdf055a00000000,
+ 0x8def022d00000000};
+
+#else /* W == 4 */
+
+local const z_word_t FAR crc_big_table[] = {
+ 0x00000000, 0x96300777, 0x2c610eee, 0xba510999, 0x19c46d07,
+ 0x8ff46a70, 0x35a563e9, 0xa395649e, 0x3288db0e, 0xa4b8dc79,
+ 0x1ee9d5e0, 0x88d9d297, 0x2b4cb609, 0xbd7cb17e, 0x072db8e7,
+ 0x911dbf90, 0x6410b71d, 0xf220b06a, 0x4871b9f3, 0xde41be84,
+ 0x7dd4da1a, 0xebe4dd6d, 0x51b5d4f4, 0xc785d383, 0x56986c13,
+ 0xc0a86b64, 0x7af962fd, 0xecc9658a, 0x4f5c0114, 0xd96c0663,
+ 0x633d0ffa, 0xf50d088d, 0xc8206e3b, 0x5e10694c, 0xe44160d5,
+ 0x727167a2, 0xd1e4033c, 0x47d4044b, 0xfd850dd2, 0x6bb50aa5,
+ 0xfaa8b535, 0x6c98b242, 0xd6c9bbdb, 0x40f9bcac, 0xe36cd832,
+ 0x755cdf45, 0xcf0dd6dc, 0x593dd1ab, 0xac30d926, 0x3a00de51,
+ 0x8051d7c8, 0x1661d0bf, 0xb5f4b421, 0x23c4b356, 0x9995bacf,
+ 0x0fa5bdb8, 0x9eb80228, 0x0888055f, 0xb2d90cc6, 0x24e90bb1,
+ 0x877c6f2f, 0x114c6858, 0xab1d61c1, 0x3d2d66b6, 0x9041dc76,
+ 0x0671db01, 0xbc20d298, 0x2a10d5ef, 0x8985b171, 0x1fb5b606,
+ 0xa5e4bf9f, 0x33d4b8e8, 0xa2c90778, 0x34f9000f, 0x8ea80996,
+ 0x18980ee1, 0xbb0d6a7f, 0x2d3d6d08, 0x976c6491, 0x015c63e6,
+ 0xf4516b6b, 0x62616c1c, 0xd8306585, 0x4e0062f2, 0xed95066c,
+ 0x7ba5011b, 0xc1f40882, 0x57c40ff5, 0xc6d9b065, 0x50e9b712,
+ 0xeab8be8b, 0x7c88b9fc, 0xdf1ddd62, 0x492dda15, 0xf37cd38c,
+ 0x654cd4fb, 0x5861b24d, 0xce51b53a, 0x7400bca3, 0xe230bbd4,
+ 0x41a5df4a, 0xd795d83d, 0x6dc4d1a4, 0xfbf4d6d3, 0x6ae96943,
+ 0xfcd96e34, 0x468867ad, 0xd0b860da, 0x732d0444, 0xe51d0333,
+ 0x5f4c0aaa, 0xc97c0ddd, 0x3c710550, 0xaa410227, 0x10100bbe,
+ 0x86200cc9, 0x25b56857, 0xb3856f20, 0x09d466b9, 0x9fe461ce,
+ 0x0ef9de5e, 0x98c9d929, 0x2298d0b0, 0xb4a8d7c7, 0x173db359,
+ 0x810db42e, 0x3b5cbdb7, 0xad6cbac0, 0x2083b8ed, 0xb6b3bf9a,
+ 0x0ce2b603, 0x9ad2b174, 0x3947d5ea, 0xaf77d29d, 0x1526db04,
+ 0x8316dc73, 0x120b63e3, 0x843b6494, 0x3e6a6d0d, 0xa85a6a7a,
+ 0x0bcf0ee4, 0x9dff0993, 0x27ae000a, 0xb19e077d, 0x44930ff0,
+ 0xd2a30887, 0x68f2011e, 0xfec20669, 0x5d5762f7, 0xcb676580,
+ 0x71366c19, 0xe7066b6e, 0x761bd4fe, 0xe02bd389, 0x5a7ada10,
+ 0xcc4add67, 0x6fdfb9f9, 0xf9efbe8e, 0x43beb717, 0xd58eb060,
+ 0xe8a3d6d6, 0x7e93d1a1, 0xc4c2d838, 0x52f2df4f, 0xf167bbd1,
+ 0x6757bca6, 0xdd06b53f, 0x4b36b248, 0xda2b0dd8, 0x4c1b0aaf,
+ 0xf64a0336, 0x607a0441, 0xc3ef60df, 0x55df67a8, 0xef8e6e31,
+ 0x79be6946, 0x8cb361cb, 0x1a8366bc, 0xa0d26f25, 0x36e26852,
+ 0x95770ccc, 0x03470bbb, 0xb9160222, 0x2f260555, 0xbe3bbac5,
+ 0x280bbdb2, 0x925ab42b, 0x046ab35c, 0xa7ffd7c2, 0x31cfd0b5,
+ 0x8b9ed92c, 0x1daede5b, 0xb0c2649b, 0x26f263ec, 0x9ca36a75,
+ 0x0a936d02, 0xa906099c, 0x3f360eeb, 0x85670772, 0x13570005,
+ 0x824abf95, 0x147ab8e2, 0xae2bb17b, 0x381bb60c, 0x9b8ed292,
+ 0x0dbed5e5, 0xb7efdc7c, 0x21dfdb0b, 0xd4d2d386, 0x42e2d4f1,
+ 0xf8b3dd68, 0x6e83da1f, 0xcd16be81, 0x5b26b9f6, 0xe177b06f,
+ 0x7747b718, 0xe65a0888, 0x706a0fff, 0xca3b0666, 0x5c0b0111,
+ 0xff9e658f, 0x69ae62f8, 0xd3ff6b61, 0x45cf6c16, 0x78e20aa0,
+ 0xeed20dd7, 0x5483044e, 0xc2b30339, 0x612667a7, 0xf71660d0,
+ 0x4d476949, 0xdb776e3e, 0x4a6ad1ae, 0xdc5ad6d9, 0x660bdf40,
+ 0xf03bd837, 0x53aebca9, 0xc59ebbde, 0x7fcfb247, 0xe9ffb530,
+ 0x1cf2bdbd, 0x8ac2baca, 0x3093b353, 0xa6a3b424, 0x0536d0ba,
+ 0x9306d7cd, 0x2957de54, 0xbf67d923, 0x2e7a66b3, 0xb84a61c4,
+ 0x021b685d, 0x942b6f2a, 0x37be0bb4, 0xa18e0cc3, 0x1bdf055a,
+ 0x8def022d};
+
+#endif
+
+#if N == 1
+
+#if W == 8
+
+local const z_crc_t FAR crc_braid_table[][256] = {
+ {0x00000000, 0xccaa009e, 0x4225077d, 0x8e8f07e3, 0x844a0efa,
+ 0x48e00e64, 0xc66f0987, 0x0ac50919, 0xd3e51bb5, 0x1f4f1b2b,
+ 0x91c01cc8, 0x5d6a1c56, 0x57af154f, 0x9b0515d1, 0x158a1232,
+ 0xd92012ac, 0x7cbb312b, 0xb01131b5, 0x3e9e3656, 0xf23436c8,
+ 0xf8f13fd1, 0x345b3f4f, 0xbad438ac, 0x767e3832, 0xaf5e2a9e,
+ 0x63f42a00, 0xed7b2de3, 0x21d12d7d, 0x2b142464, 0xe7be24fa,
+ 0x69312319, 0xa59b2387, 0xf9766256, 0x35dc62c8, 0xbb53652b,
+ 0x77f965b5, 0x7d3c6cac, 0xb1966c32, 0x3f196bd1, 0xf3b36b4f,
+ 0x2a9379e3, 0xe639797d, 0x68b67e9e, 0xa41c7e00, 0xaed97719,
+ 0x62737787, 0xecfc7064, 0x205670fa, 0x85cd537d, 0x496753e3,
+ 0xc7e85400, 0x0b42549e, 0x01875d87, 0xcd2d5d19, 0x43a25afa,
+ 0x8f085a64, 0x562848c8, 0x9a824856, 0x140d4fb5, 0xd8a74f2b,
+ 0xd2624632, 0x1ec846ac, 0x9047414f, 0x5ced41d1, 0x299dc2ed,
+ 0xe537c273, 0x6bb8c590, 0xa712c50e, 0xadd7cc17, 0x617dcc89,
+ 0xeff2cb6a, 0x2358cbf4, 0xfa78d958, 0x36d2d9c6, 0xb85dde25,
+ 0x74f7debb, 0x7e32d7a2, 0xb298d73c, 0x3c17d0df, 0xf0bdd041,
+ 0x5526f3c6, 0x998cf358, 0x1703f4bb, 0xdba9f425, 0xd16cfd3c,
+ 0x1dc6fda2, 0x9349fa41, 0x5fe3fadf, 0x86c3e873, 0x4a69e8ed,
+ 0xc4e6ef0e, 0x084cef90, 0x0289e689, 0xce23e617, 0x40ace1f4,
+ 0x8c06e16a, 0xd0eba0bb, 0x1c41a025, 0x92cea7c6, 0x5e64a758,
+ 0x54a1ae41, 0x980baedf, 0x1684a93c, 0xda2ea9a2, 0x030ebb0e,
+ 0xcfa4bb90, 0x412bbc73, 0x8d81bced, 0x8744b5f4, 0x4beeb56a,
+ 0xc561b289, 0x09cbb217, 0xac509190, 0x60fa910e, 0xee7596ed,
+ 0x22df9673, 0x281a9f6a, 0xe4b09ff4, 0x6a3f9817, 0xa6959889,
+ 0x7fb58a25, 0xb31f8abb, 0x3d908d58, 0xf13a8dc6, 0xfbff84df,
+ 0x37558441, 0xb9da83a2, 0x7570833c, 0x533b85da, 0x9f918544,
+ 0x111e82a7, 0xddb48239, 0xd7718b20, 0x1bdb8bbe, 0x95548c5d,
+ 0x59fe8cc3, 0x80de9e6f, 0x4c749ef1, 0xc2fb9912, 0x0e51998c,
+ 0x04949095, 0xc83e900b, 0x46b197e8, 0x8a1b9776, 0x2f80b4f1,
+ 0xe32ab46f, 0x6da5b38c, 0xa10fb312, 0xabcaba0b, 0x6760ba95,
+ 0xe9efbd76, 0x2545bde8, 0xfc65af44, 0x30cfafda, 0xbe40a839,
+ 0x72eaa8a7, 0x782fa1be, 0xb485a120, 0x3a0aa6c3, 0xf6a0a65d,
+ 0xaa4de78c, 0x66e7e712, 0xe868e0f1, 0x24c2e06f, 0x2e07e976,
+ 0xe2ade9e8, 0x6c22ee0b, 0xa088ee95, 0x79a8fc39, 0xb502fca7,
+ 0x3b8dfb44, 0xf727fbda, 0xfde2f2c3, 0x3148f25d, 0xbfc7f5be,
+ 0x736df520, 0xd6f6d6a7, 0x1a5cd639, 0x94d3d1da, 0x5879d144,
+ 0x52bcd85d, 0x9e16d8c3, 0x1099df20, 0xdc33dfbe, 0x0513cd12,
+ 0xc9b9cd8c, 0x4736ca6f, 0x8b9ccaf1, 0x8159c3e8, 0x4df3c376,
+ 0xc37cc495, 0x0fd6c40b, 0x7aa64737, 0xb60c47a9, 0x3883404a,
+ 0xf42940d4, 0xfeec49cd, 0x32464953, 0xbcc94eb0, 0x70634e2e,
+ 0xa9435c82, 0x65e95c1c, 0xeb665bff, 0x27cc5b61, 0x2d095278,
+ 0xe1a352e6, 0x6f2c5505, 0xa386559b, 0x061d761c, 0xcab77682,
+ 0x44387161, 0x889271ff, 0x825778e6, 0x4efd7878, 0xc0727f9b,
+ 0x0cd87f05, 0xd5f86da9, 0x19526d37, 0x97dd6ad4, 0x5b776a4a,
+ 0x51b26353, 0x9d1863cd, 0x1397642e, 0xdf3d64b0, 0x83d02561,
+ 0x4f7a25ff, 0xc1f5221c, 0x0d5f2282, 0x079a2b9b, 0xcb302b05,
+ 0x45bf2ce6, 0x89152c78, 0x50353ed4, 0x9c9f3e4a, 0x121039a9,
+ 0xdeba3937, 0xd47f302e, 0x18d530b0, 0x965a3753, 0x5af037cd,
+ 0xff6b144a, 0x33c114d4, 0xbd4e1337, 0x71e413a9, 0x7b211ab0,
+ 0xb78b1a2e, 0x39041dcd, 0xf5ae1d53, 0x2c8e0fff, 0xe0240f61,
+ 0x6eab0882, 0xa201081c, 0xa8c40105, 0x646e019b, 0xeae10678,
+ 0x264b06e6},
+ {0x00000000, 0xa6770bb4, 0x979f1129, 0x31e81a9d, 0xf44f2413,
+ 0x52382fa7, 0x63d0353a, 0xc5a73e8e, 0x33ef4e67, 0x959845d3,
+ 0xa4705f4e, 0x020754fa, 0xc7a06a74, 0x61d761c0, 0x503f7b5d,
+ 0xf64870e9, 0x67de9cce, 0xc1a9977a, 0xf0418de7, 0x56368653,
+ 0x9391b8dd, 0x35e6b369, 0x040ea9f4, 0xa279a240, 0x5431d2a9,
+ 0xf246d91d, 0xc3aec380, 0x65d9c834, 0xa07ef6ba, 0x0609fd0e,
+ 0x37e1e793, 0x9196ec27, 0xcfbd399c, 0x69ca3228, 0x582228b5,
+ 0xfe552301, 0x3bf21d8f, 0x9d85163b, 0xac6d0ca6, 0x0a1a0712,
+ 0xfc5277fb, 0x5a257c4f, 0x6bcd66d2, 0xcdba6d66, 0x081d53e8,
+ 0xae6a585c, 0x9f8242c1, 0x39f54975, 0xa863a552, 0x0e14aee6,
+ 0x3ffcb47b, 0x998bbfcf, 0x5c2c8141, 0xfa5b8af5, 0xcbb39068,
+ 0x6dc49bdc, 0x9b8ceb35, 0x3dfbe081, 0x0c13fa1c, 0xaa64f1a8,
+ 0x6fc3cf26, 0xc9b4c492, 0xf85cde0f, 0x5e2bd5bb, 0x440b7579,
+ 0xe27c7ecd, 0xd3946450, 0x75e36fe4, 0xb044516a, 0x16335ade,
+ 0x27db4043, 0x81ac4bf7, 0x77e43b1e, 0xd19330aa, 0xe07b2a37,
+ 0x460c2183, 0x83ab1f0d, 0x25dc14b9, 0x14340e24, 0xb2430590,
+ 0x23d5e9b7, 0x85a2e203, 0xb44af89e, 0x123df32a, 0xd79acda4,
+ 0x71edc610, 0x4005dc8d, 0xe672d739, 0x103aa7d0, 0xb64dac64,
+ 0x87a5b6f9, 0x21d2bd4d, 0xe47583c3, 0x42028877, 0x73ea92ea,
+ 0xd59d995e, 0x8bb64ce5, 0x2dc14751, 0x1c295dcc, 0xba5e5678,
+ 0x7ff968f6, 0xd98e6342, 0xe86679df, 0x4e11726b, 0xb8590282,
+ 0x1e2e0936, 0x2fc613ab, 0x89b1181f, 0x4c162691, 0xea612d25,
+ 0xdb8937b8, 0x7dfe3c0c, 0xec68d02b, 0x4a1fdb9f, 0x7bf7c102,
+ 0xdd80cab6, 0x1827f438, 0xbe50ff8c, 0x8fb8e511, 0x29cfeea5,
+ 0xdf879e4c, 0x79f095f8, 0x48188f65, 0xee6f84d1, 0x2bc8ba5f,
+ 0x8dbfb1eb, 0xbc57ab76, 0x1a20a0c2, 0x8816eaf2, 0x2e61e146,
+ 0x1f89fbdb, 0xb9fef06f, 0x7c59cee1, 0xda2ec555, 0xebc6dfc8,
+ 0x4db1d47c, 0xbbf9a495, 0x1d8eaf21, 0x2c66b5bc, 0x8a11be08,
+ 0x4fb68086, 0xe9c18b32, 0xd82991af, 0x7e5e9a1b, 0xefc8763c,
+ 0x49bf7d88, 0x78576715, 0xde206ca1, 0x1b87522f, 0xbdf0599b,
+ 0x8c184306, 0x2a6f48b2, 0xdc27385b, 0x7a5033ef, 0x4bb82972,
+ 0xedcf22c6, 0x28681c48, 0x8e1f17fc, 0xbff70d61, 0x198006d5,
+ 0x47abd36e, 0xe1dcd8da, 0xd034c247, 0x7643c9f3, 0xb3e4f77d,
+ 0x1593fcc9, 0x247be654, 0x820cede0, 0x74449d09, 0xd23396bd,
+ 0xe3db8c20, 0x45ac8794, 0x800bb91a, 0x267cb2ae, 0x1794a833,
+ 0xb1e3a387, 0x20754fa0, 0x86024414, 0xb7ea5e89, 0x119d553d,
+ 0xd43a6bb3, 0x724d6007, 0x43a57a9a, 0xe5d2712e, 0x139a01c7,
+ 0xb5ed0a73, 0x840510ee, 0x22721b5a, 0xe7d525d4, 0x41a22e60,
+ 0x704a34fd, 0xd63d3f49, 0xcc1d9f8b, 0x6a6a943f, 0x5b828ea2,
+ 0xfdf58516, 0x3852bb98, 0x9e25b02c, 0xafcdaab1, 0x09baa105,
+ 0xfff2d1ec, 0x5985da58, 0x686dc0c5, 0xce1acb71, 0x0bbdf5ff,
+ 0xadcafe4b, 0x9c22e4d6, 0x3a55ef62, 0xabc30345, 0x0db408f1,
+ 0x3c5c126c, 0x9a2b19d8, 0x5f8c2756, 0xf9fb2ce2, 0xc813367f,
+ 0x6e643dcb, 0x982c4d22, 0x3e5b4696, 0x0fb35c0b, 0xa9c457bf,
+ 0x6c636931, 0xca146285, 0xfbfc7818, 0x5d8b73ac, 0x03a0a617,
+ 0xa5d7ada3, 0x943fb73e, 0x3248bc8a, 0xf7ef8204, 0x519889b0,
+ 0x6070932d, 0xc6079899, 0x304fe870, 0x9638e3c4, 0xa7d0f959,
+ 0x01a7f2ed, 0xc400cc63, 0x6277c7d7, 0x539fdd4a, 0xf5e8d6fe,
+ 0x647e3ad9, 0xc209316d, 0xf3e12bf0, 0x55962044, 0x90311eca,
+ 0x3646157e, 0x07ae0fe3, 0xa1d90457, 0x579174be, 0xf1e67f0a,
+ 0xc00e6597, 0x66796e23, 0xa3de50ad, 0x05a95b19, 0x34414184,
+ 0x92364a30},
+ {0x00000000, 0xcb5cd3a5, 0x4dc8a10b, 0x869472ae, 0x9b914216,
+ 0x50cd91b3, 0xd659e31d, 0x1d0530b8, 0xec53826d, 0x270f51c8,
+ 0xa19b2366, 0x6ac7f0c3, 0x77c2c07b, 0xbc9e13de, 0x3a0a6170,
+ 0xf156b2d5, 0x03d6029b, 0xc88ad13e, 0x4e1ea390, 0x85427035,
+ 0x9847408d, 0x531b9328, 0xd58fe186, 0x1ed33223, 0xef8580f6,
+ 0x24d95353, 0xa24d21fd, 0x6911f258, 0x7414c2e0, 0xbf481145,
+ 0x39dc63eb, 0xf280b04e, 0x07ac0536, 0xccf0d693, 0x4a64a43d,
+ 0x81387798, 0x9c3d4720, 0x57619485, 0xd1f5e62b, 0x1aa9358e,
+ 0xebff875b, 0x20a354fe, 0xa6372650, 0x6d6bf5f5, 0x706ec54d,
+ 0xbb3216e8, 0x3da66446, 0xf6fab7e3, 0x047a07ad, 0xcf26d408,
+ 0x49b2a6a6, 0x82ee7503, 0x9feb45bb, 0x54b7961e, 0xd223e4b0,
+ 0x197f3715, 0xe82985c0, 0x23755665, 0xa5e124cb, 0x6ebdf76e,
+ 0x73b8c7d6, 0xb8e41473, 0x3e7066dd, 0xf52cb578, 0x0f580a6c,
+ 0xc404d9c9, 0x4290ab67, 0x89cc78c2, 0x94c9487a, 0x5f959bdf,
+ 0xd901e971, 0x125d3ad4, 0xe30b8801, 0x28575ba4, 0xaec3290a,
+ 0x659ffaaf, 0x789aca17, 0xb3c619b2, 0x35526b1c, 0xfe0eb8b9,
+ 0x0c8e08f7, 0xc7d2db52, 0x4146a9fc, 0x8a1a7a59, 0x971f4ae1,
+ 0x5c439944, 0xdad7ebea, 0x118b384f, 0xe0dd8a9a, 0x2b81593f,
+ 0xad152b91, 0x6649f834, 0x7b4cc88c, 0xb0101b29, 0x36846987,
+ 0xfdd8ba22, 0x08f40f5a, 0xc3a8dcff, 0x453cae51, 0x8e607df4,
+ 0x93654d4c, 0x58399ee9, 0xdeadec47, 0x15f13fe2, 0xe4a78d37,
+ 0x2ffb5e92, 0xa96f2c3c, 0x6233ff99, 0x7f36cf21, 0xb46a1c84,
+ 0x32fe6e2a, 0xf9a2bd8f, 0x0b220dc1, 0xc07ede64, 0x46eaacca,
+ 0x8db67f6f, 0x90b34fd7, 0x5bef9c72, 0xdd7beedc, 0x16273d79,
+ 0xe7718fac, 0x2c2d5c09, 0xaab92ea7, 0x61e5fd02, 0x7ce0cdba,
+ 0xb7bc1e1f, 0x31286cb1, 0xfa74bf14, 0x1eb014d8, 0xd5ecc77d,
+ 0x5378b5d3, 0x98246676, 0x852156ce, 0x4e7d856b, 0xc8e9f7c5,
+ 0x03b52460, 0xf2e396b5, 0x39bf4510, 0xbf2b37be, 0x7477e41b,
+ 0x6972d4a3, 0xa22e0706, 0x24ba75a8, 0xefe6a60d, 0x1d661643,
+ 0xd63ac5e6, 0x50aeb748, 0x9bf264ed, 0x86f75455, 0x4dab87f0,
+ 0xcb3ff55e, 0x006326fb, 0xf135942e, 0x3a69478b, 0xbcfd3525,
+ 0x77a1e680, 0x6aa4d638, 0xa1f8059d, 0x276c7733, 0xec30a496,
+ 0x191c11ee, 0xd240c24b, 0x54d4b0e5, 0x9f886340, 0x828d53f8,
+ 0x49d1805d, 0xcf45f2f3, 0x04192156, 0xf54f9383, 0x3e134026,
+ 0xb8873288, 0x73dbe12d, 0x6eded195, 0xa5820230, 0x2316709e,
+ 0xe84aa33b, 0x1aca1375, 0xd196c0d0, 0x5702b27e, 0x9c5e61db,
+ 0x815b5163, 0x4a0782c6, 0xcc93f068, 0x07cf23cd, 0xf6999118,
+ 0x3dc542bd, 0xbb513013, 0x700de3b6, 0x6d08d30e, 0xa65400ab,
+ 0x20c07205, 0xeb9ca1a0, 0x11e81eb4, 0xdab4cd11, 0x5c20bfbf,
+ 0x977c6c1a, 0x8a795ca2, 0x41258f07, 0xc7b1fda9, 0x0ced2e0c,
+ 0xfdbb9cd9, 0x36e74f7c, 0xb0733dd2, 0x7b2fee77, 0x662adecf,
+ 0xad760d6a, 0x2be27fc4, 0xe0beac61, 0x123e1c2f, 0xd962cf8a,
+ 0x5ff6bd24, 0x94aa6e81, 0x89af5e39, 0x42f38d9c, 0xc467ff32,
+ 0x0f3b2c97, 0xfe6d9e42, 0x35314de7, 0xb3a53f49, 0x78f9ecec,
+ 0x65fcdc54, 0xaea00ff1, 0x28347d5f, 0xe368aefa, 0x16441b82,
+ 0xdd18c827, 0x5b8cba89, 0x90d0692c, 0x8dd55994, 0x46898a31,
+ 0xc01df89f, 0x0b412b3a, 0xfa1799ef, 0x314b4a4a, 0xb7df38e4,
+ 0x7c83eb41, 0x6186dbf9, 0xaada085c, 0x2c4e7af2, 0xe712a957,
+ 0x15921919, 0xdececabc, 0x585ab812, 0x93066bb7, 0x8e035b0f,
+ 0x455f88aa, 0xc3cbfa04, 0x089729a1, 0xf9c19b74, 0x329d48d1,
+ 0xb4093a7f, 0x7f55e9da, 0x6250d962, 0xa90c0ac7, 0x2f987869,
+ 0xe4c4abcc},
+ {0x00000000, 0x3d6029b0, 0x7ac05360, 0x47a07ad0, 0xf580a6c0,
+ 0xc8e08f70, 0x8f40f5a0, 0xb220dc10, 0x30704bc1, 0x0d106271,
+ 0x4ab018a1, 0x77d03111, 0xc5f0ed01, 0xf890c4b1, 0xbf30be61,
+ 0x825097d1, 0x60e09782, 0x5d80be32, 0x1a20c4e2, 0x2740ed52,
+ 0x95603142, 0xa80018f2, 0xefa06222, 0xd2c04b92, 0x5090dc43,
+ 0x6df0f5f3, 0x2a508f23, 0x1730a693, 0xa5107a83, 0x98705333,
+ 0xdfd029e3, 0xe2b00053, 0xc1c12f04, 0xfca106b4, 0xbb017c64,
+ 0x866155d4, 0x344189c4, 0x0921a074, 0x4e81daa4, 0x73e1f314,
+ 0xf1b164c5, 0xccd14d75, 0x8b7137a5, 0xb6111e15, 0x0431c205,
+ 0x3951ebb5, 0x7ef19165, 0x4391b8d5, 0xa121b886, 0x9c419136,
+ 0xdbe1ebe6, 0xe681c256, 0x54a11e46, 0x69c137f6, 0x2e614d26,
+ 0x13016496, 0x9151f347, 0xac31daf7, 0xeb91a027, 0xd6f18997,
+ 0x64d15587, 0x59b17c37, 0x1e1106e7, 0x23712f57, 0x58f35849,
+ 0x659371f9, 0x22330b29, 0x1f532299, 0xad73fe89, 0x9013d739,
+ 0xd7b3ade9, 0xead38459, 0x68831388, 0x55e33a38, 0x124340e8,
+ 0x2f236958, 0x9d03b548, 0xa0639cf8, 0xe7c3e628, 0xdaa3cf98,
+ 0x3813cfcb, 0x0573e67b, 0x42d39cab, 0x7fb3b51b, 0xcd93690b,
+ 0xf0f340bb, 0xb7533a6b, 0x8a3313db, 0x0863840a, 0x3503adba,
+ 0x72a3d76a, 0x4fc3feda, 0xfde322ca, 0xc0830b7a, 0x872371aa,
+ 0xba43581a, 0x9932774d, 0xa4525efd, 0xe3f2242d, 0xde920d9d,
+ 0x6cb2d18d, 0x51d2f83d, 0x167282ed, 0x2b12ab5d, 0xa9423c8c,
+ 0x9422153c, 0xd3826fec, 0xeee2465c, 0x5cc29a4c, 0x61a2b3fc,
+ 0x2602c92c, 0x1b62e09c, 0xf9d2e0cf, 0xc4b2c97f, 0x8312b3af,
+ 0xbe729a1f, 0x0c52460f, 0x31326fbf, 0x7692156f, 0x4bf23cdf,
+ 0xc9a2ab0e, 0xf4c282be, 0xb362f86e, 0x8e02d1de, 0x3c220dce,
+ 0x0142247e, 0x46e25eae, 0x7b82771e, 0xb1e6b092, 0x8c869922,
+ 0xcb26e3f2, 0xf646ca42, 0x44661652, 0x79063fe2, 0x3ea64532,
+ 0x03c66c82, 0x8196fb53, 0xbcf6d2e3, 0xfb56a833, 0xc6368183,
+ 0x74165d93, 0x49767423, 0x0ed60ef3, 0x33b62743, 0xd1062710,
+ 0xec660ea0, 0xabc67470, 0x96a65dc0, 0x248681d0, 0x19e6a860,
+ 0x5e46d2b0, 0x6326fb00, 0xe1766cd1, 0xdc164561, 0x9bb63fb1,
+ 0xa6d61601, 0x14f6ca11, 0x2996e3a1, 0x6e369971, 0x5356b0c1,
+ 0x70279f96, 0x4d47b626, 0x0ae7ccf6, 0x3787e546, 0x85a73956,
+ 0xb8c710e6, 0xff676a36, 0xc2074386, 0x4057d457, 0x7d37fde7,
+ 0x3a978737, 0x07f7ae87, 0xb5d77297, 0x88b75b27, 0xcf1721f7,
+ 0xf2770847, 0x10c70814, 0x2da721a4, 0x6a075b74, 0x576772c4,
+ 0xe547aed4, 0xd8278764, 0x9f87fdb4, 0xa2e7d404, 0x20b743d5,
+ 0x1dd76a65, 0x5a7710b5, 0x67173905, 0xd537e515, 0xe857cca5,
+ 0xaff7b675, 0x92979fc5, 0xe915e8db, 0xd475c16b, 0x93d5bbbb,
+ 0xaeb5920b, 0x1c954e1b, 0x21f567ab, 0x66551d7b, 0x5b3534cb,
+ 0xd965a31a, 0xe4058aaa, 0xa3a5f07a, 0x9ec5d9ca, 0x2ce505da,
+ 0x11852c6a, 0x562556ba, 0x6b457f0a, 0x89f57f59, 0xb49556e9,
+ 0xf3352c39, 0xce550589, 0x7c75d999, 0x4115f029, 0x06b58af9,
+ 0x3bd5a349, 0xb9853498, 0x84e51d28, 0xc34567f8, 0xfe254e48,
+ 0x4c059258, 0x7165bbe8, 0x36c5c138, 0x0ba5e888, 0x28d4c7df,
+ 0x15b4ee6f, 0x521494bf, 0x6f74bd0f, 0xdd54611f, 0xe03448af,
+ 0xa794327f, 0x9af41bcf, 0x18a48c1e, 0x25c4a5ae, 0x6264df7e,
+ 0x5f04f6ce, 0xed242ade, 0xd044036e, 0x97e479be, 0xaa84500e,
+ 0x4834505d, 0x755479ed, 0x32f4033d, 0x0f942a8d, 0xbdb4f69d,
+ 0x80d4df2d, 0xc774a5fd, 0xfa148c4d, 0x78441b9c, 0x4524322c,
+ 0x028448fc, 0x3fe4614c, 0x8dc4bd5c, 0xb0a494ec, 0xf704ee3c,
+ 0xca64c78c},
+ {0x00000000, 0xb8bc6765, 0xaa09c88b, 0x12b5afee, 0x8f629757,
+ 0x37def032, 0x256b5fdc, 0x9dd738b9, 0xc5b428ef, 0x7d084f8a,
+ 0x6fbde064, 0xd7018701, 0x4ad6bfb8, 0xf26ad8dd, 0xe0df7733,
+ 0x58631056, 0x5019579f, 0xe8a530fa, 0xfa109f14, 0x42acf871,
+ 0xdf7bc0c8, 0x67c7a7ad, 0x75720843, 0xcdce6f26, 0x95ad7f70,
+ 0x2d111815, 0x3fa4b7fb, 0x8718d09e, 0x1acfe827, 0xa2738f42,
+ 0xb0c620ac, 0x087a47c9, 0xa032af3e, 0x188ec85b, 0x0a3b67b5,
+ 0xb28700d0, 0x2f503869, 0x97ec5f0c, 0x8559f0e2, 0x3de59787,
+ 0x658687d1, 0xdd3ae0b4, 0xcf8f4f5a, 0x7733283f, 0xeae41086,
+ 0x525877e3, 0x40edd80d, 0xf851bf68, 0xf02bf8a1, 0x48979fc4,
+ 0x5a22302a, 0xe29e574f, 0x7f496ff6, 0xc7f50893, 0xd540a77d,
+ 0x6dfcc018, 0x359fd04e, 0x8d23b72b, 0x9f9618c5, 0x272a7fa0,
+ 0xbafd4719, 0x0241207c, 0x10f48f92, 0xa848e8f7, 0x9b14583d,
+ 0x23a83f58, 0x311d90b6, 0x89a1f7d3, 0x1476cf6a, 0xaccaa80f,
+ 0xbe7f07e1, 0x06c36084, 0x5ea070d2, 0xe61c17b7, 0xf4a9b859,
+ 0x4c15df3c, 0xd1c2e785, 0x697e80e0, 0x7bcb2f0e, 0xc377486b,
+ 0xcb0d0fa2, 0x73b168c7, 0x6104c729, 0xd9b8a04c, 0x446f98f5,
+ 0xfcd3ff90, 0xee66507e, 0x56da371b, 0x0eb9274d, 0xb6054028,
+ 0xa4b0efc6, 0x1c0c88a3, 0x81dbb01a, 0x3967d77f, 0x2bd27891,
+ 0x936e1ff4, 0x3b26f703, 0x839a9066, 0x912f3f88, 0x299358ed,
+ 0xb4446054, 0x0cf80731, 0x1e4da8df, 0xa6f1cfba, 0xfe92dfec,
+ 0x462eb889, 0x549b1767, 0xec277002, 0x71f048bb, 0xc94c2fde,
+ 0xdbf98030, 0x6345e755, 0x6b3fa09c, 0xd383c7f9, 0xc1366817,
+ 0x798a0f72, 0xe45d37cb, 0x5ce150ae, 0x4e54ff40, 0xf6e89825,
+ 0xae8b8873, 0x1637ef16, 0x048240f8, 0xbc3e279d, 0x21e91f24,
+ 0x99557841, 0x8be0d7af, 0x335cb0ca, 0xed59b63b, 0x55e5d15e,
+ 0x47507eb0, 0xffec19d5, 0x623b216c, 0xda874609, 0xc832e9e7,
+ 0x708e8e82, 0x28ed9ed4, 0x9051f9b1, 0x82e4565f, 0x3a58313a,
+ 0xa78f0983, 0x1f336ee6, 0x0d86c108, 0xb53aa66d, 0xbd40e1a4,
+ 0x05fc86c1, 0x1749292f, 0xaff54e4a, 0x322276f3, 0x8a9e1196,
+ 0x982bbe78, 0x2097d91d, 0x78f4c94b, 0xc048ae2e, 0xd2fd01c0,
+ 0x6a4166a5, 0xf7965e1c, 0x4f2a3979, 0x5d9f9697, 0xe523f1f2,
+ 0x4d6b1905, 0xf5d77e60, 0xe762d18e, 0x5fdeb6eb, 0xc2098e52,
+ 0x7ab5e937, 0x680046d9, 0xd0bc21bc, 0x88df31ea, 0x3063568f,
+ 0x22d6f961, 0x9a6a9e04, 0x07bda6bd, 0xbf01c1d8, 0xadb46e36,
+ 0x15080953, 0x1d724e9a, 0xa5ce29ff, 0xb77b8611, 0x0fc7e174,
+ 0x9210d9cd, 0x2aacbea8, 0x38191146, 0x80a57623, 0xd8c66675,
+ 0x607a0110, 0x72cfaefe, 0xca73c99b, 0x57a4f122, 0xef189647,
+ 0xfdad39a9, 0x45115ecc, 0x764dee06, 0xcef18963, 0xdc44268d,
+ 0x64f841e8, 0xf92f7951, 0x41931e34, 0x5326b1da, 0xeb9ad6bf,
+ 0xb3f9c6e9, 0x0b45a18c, 0x19f00e62, 0xa14c6907, 0x3c9b51be,
+ 0x842736db, 0x96929935, 0x2e2efe50, 0x2654b999, 0x9ee8defc,
+ 0x8c5d7112, 0x34e11677, 0xa9362ece, 0x118a49ab, 0x033fe645,
+ 0xbb838120, 0xe3e09176, 0x5b5cf613, 0x49e959fd, 0xf1553e98,
+ 0x6c820621, 0xd43e6144, 0xc68bceaa, 0x7e37a9cf, 0xd67f4138,
+ 0x6ec3265d, 0x7c7689b3, 0xc4caeed6, 0x591dd66f, 0xe1a1b10a,
+ 0xf3141ee4, 0x4ba87981, 0x13cb69d7, 0xab770eb2, 0xb9c2a15c,
+ 0x017ec639, 0x9ca9fe80, 0x241599e5, 0x36a0360b, 0x8e1c516e,
+ 0x866616a7, 0x3eda71c2, 0x2c6fde2c, 0x94d3b949, 0x090481f0,
+ 0xb1b8e695, 0xa30d497b, 0x1bb12e1e, 0x43d23e48, 0xfb6e592d,
+ 0xe9dbf6c3, 0x516791a6, 0xccb0a91f, 0x740cce7a, 0x66b96194,
+ 0xde0506f1},
+ {0x00000000, 0x01c26a37, 0x0384d46e, 0x0246be59, 0x0709a8dc,
+ 0x06cbc2eb, 0x048d7cb2, 0x054f1685, 0x0e1351b8, 0x0fd13b8f,
+ 0x0d9785d6, 0x0c55efe1, 0x091af964, 0x08d89353, 0x0a9e2d0a,
+ 0x0b5c473d, 0x1c26a370, 0x1de4c947, 0x1fa2771e, 0x1e601d29,
+ 0x1b2f0bac, 0x1aed619b, 0x18abdfc2, 0x1969b5f5, 0x1235f2c8,
+ 0x13f798ff, 0x11b126a6, 0x10734c91, 0x153c5a14, 0x14fe3023,
+ 0x16b88e7a, 0x177ae44d, 0x384d46e0, 0x398f2cd7, 0x3bc9928e,
+ 0x3a0bf8b9, 0x3f44ee3c, 0x3e86840b, 0x3cc03a52, 0x3d025065,
+ 0x365e1758, 0x379c7d6f, 0x35dac336, 0x3418a901, 0x3157bf84,
+ 0x3095d5b3, 0x32d36bea, 0x331101dd, 0x246be590, 0x25a98fa7,
+ 0x27ef31fe, 0x262d5bc9, 0x23624d4c, 0x22a0277b, 0x20e69922,
+ 0x2124f315, 0x2a78b428, 0x2bbade1f, 0x29fc6046, 0x283e0a71,
+ 0x2d711cf4, 0x2cb376c3, 0x2ef5c89a, 0x2f37a2ad, 0x709a8dc0,
+ 0x7158e7f7, 0x731e59ae, 0x72dc3399, 0x7793251c, 0x76514f2b,
+ 0x7417f172, 0x75d59b45, 0x7e89dc78, 0x7f4bb64f, 0x7d0d0816,
+ 0x7ccf6221, 0x798074a4, 0x78421e93, 0x7a04a0ca, 0x7bc6cafd,
+ 0x6cbc2eb0, 0x6d7e4487, 0x6f38fade, 0x6efa90e9, 0x6bb5866c,
+ 0x6a77ec5b, 0x68315202, 0x69f33835, 0x62af7f08, 0x636d153f,
+ 0x612bab66, 0x60e9c151, 0x65a6d7d4, 0x6464bde3, 0x662203ba,
+ 0x67e0698d, 0x48d7cb20, 0x4915a117, 0x4b531f4e, 0x4a917579,
+ 0x4fde63fc, 0x4e1c09cb, 0x4c5ab792, 0x4d98dda5, 0x46c49a98,
+ 0x4706f0af, 0x45404ef6, 0x448224c1, 0x41cd3244, 0x400f5873,
+ 0x4249e62a, 0x438b8c1d, 0x54f16850, 0x55330267, 0x5775bc3e,
+ 0x56b7d609, 0x53f8c08c, 0x523aaabb, 0x507c14e2, 0x51be7ed5,
+ 0x5ae239e8, 0x5b2053df, 0x5966ed86, 0x58a487b1, 0x5deb9134,
+ 0x5c29fb03, 0x5e6f455a, 0x5fad2f6d, 0xe1351b80, 0xe0f771b7,
+ 0xe2b1cfee, 0xe373a5d9, 0xe63cb35c, 0xe7fed96b, 0xe5b86732,
+ 0xe47a0d05, 0xef264a38, 0xeee4200f, 0xeca29e56, 0xed60f461,
+ 0xe82fe2e4, 0xe9ed88d3, 0xebab368a, 0xea695cbd, 0xfd13b8f0,
+ 0xfcd1d2c7, 0xfe976c9e, 0xff5506a9, 0xfa1a102c, 0xfbd87a1b,
+ 0xf99ec442, 0xf85cae75, 0xf300e948, 0xf2c2837f, 0xf0843d26,
+ 0xf1465711, 0xf4094194, 0xf5cb2ba3, 0xf78d95fa, 0xf64fffcd,
+ 0xd9785d60, 0xd8ba3757, 0xdafc890e, 0xdb3ee339, 0xde71f5bc,
+ 0xdfb39f8b, 0xddf521d2, 0xdc374be5, 0xd76b0cd8, 0xd6a966ef,
+ 0xd4efd8b6, 0xd52db281, 0xd062a404, 0xd1a0ce33, 0xd3e6706a,
+ 0xd2241a5d, 0xc55efe10, 0xc49c9427, 0xc6da2a7e, 0xc7184049,
+ 0xc25756cc, 0xc3953cfb, 0xc1d382a2, 0xc011e895, 0xcb4dafa8,
+ 0xca8fc59f, 0xc8c97bc6, 0xc90b11f1, 0xcc440774, 0xcd866d43,
+ 0xcfc0d31a, 0xce02b92d, 0x91af9640, 0x906dfc77, 0x922b422e,
+ 0x93e92819, 0x96a63e9c, 0x976454ab, 0x9522eaf2, 0x94e080c5,
+ 0x9fbcc7f8, 0x9e7eadcf, 0x9c381396, 0x9dfa79a1, 0x98b56f24,
+ 0x99770513, 0x9b31bb4a, 0x9af3d17d, 0x8d893530, 0x8c4b5f07,
+ 0x8e0de15e, 0x8fcf8b69, 0x8a809dec, 0x8b42f7db, 0x89044982,
+ 0x88c623b5, 0x839a6488, 0x82580ebf, 0x801eb0e6, 0x81dcdad1,
+ 0x8493cc54, 0x8551a663, 0x8717183a, 0x86d5720d, 0xa9e2d0a0,
+ 0xa820ba97, 0xaa6604ce, 0xaba46ef9, 0xaeeb787c, 0xaf29124b,
+ 0xad6fac12, 0xacadc625, 0xa7f18118, 0xa633eb2f, 0xa4755576,
+ 0xa5b73f41, 0xa0f829c4, 0xa13a43f3, 0xa37cfdaa, 0xa2be979d,
+ 0xb5c473d0, 0xb40619e7, 0xb640a7be, 0xb782cd89, 0xb2cddb0c,
+ 0xb30fb13b, 0xb1490f62, 0xb08b6555, 0xbbd72268, 0xba15485f,
+ 0xb853f606, 0xb9919c31, 0xbcde8ab4, 0xbd1ce083, 0xbf5a5eda,
+ 0xbe9834ed},
+ {0x00000000, 0x191b3141, 0x32366282, 0x2b2d53c3, 0x646cc504,
+ 0x7d77f445, 0x565aa786, 0x4f4196c7, 0xc8d98a08, 0xd1c2bb49,
+ 0xfaefe88a, 0xe3f4d9cb, 0xacb54f0c, 0xb5ae7e4d, 0x9e832d8e,
+ 0x87981ccf, 0x4ac21251, 0x53d92310, 0x78f470d3, 0x61ef4192,
+ 0x2eaed755, 0x37b5e614, 0x1c98b5d7, 0x05838496, 0x821b9859,
+ 0x9b00a918, 0xb02dfadb, 0xa936cb9a, 0xe6775d5d, 0xff6c6c1c,
+ 0xd4413fdf, 0xcd5a0e9e, 0x958424a2, 0x8c9f15e3, 0xa7b24620,
+ 0xbea97761, 0xf1e8e1a6, 0xe8f3d0e7, 0xc3de8324, 0xdac5b265,
+ 0x5d5daeaa, 0x44469feb, 0x6f6bcc28, 0x7670fd69, 0x39316bae,
+ 0x202a5aef, 0x0b07092c, 0x121c386d, 0xdf4636f3, 0xc65d07b2,
+ 0xed705471, 0xf46b6530, 0xbb2af3f7, 0xa231c2b6, 0x891c9175,
+ 0x9007a034, 0x179fbcfb, 0x0e848dba, 0x25a9de79, 0x3cb2ef38,
+ 0x73f379ff, 0x6ae848be, 0x41c51b7d, 0x58de2a3c, 0xf0794f05,
+ 0xe9627e44, 0xc24f2d87, 0xdb541cc6, 0x94158a01, 0x8d0ebb40,
+ 0xa623e883, 0xbf38d9c2, 0x38a0c50d, 0x21bbf44c, 0x0a96a78f,
+ 0x138d96ce, 0x5ccc0009, 0x45d73148, 0x6efa628b, 0x77e153ca,
+ 0xbabb5d54, 0xa3a06c15, 0x888d3fd6, 0x91960e97, 0xded79850,
+ 0xc7cca911, 0xece1fad2, 0xf5facb93, 0x7262d75c, 0x6b79e61d,
+ 0x4054b5de, 0x594f849f, 0x160e1258, 0x0f152319, 0x243870da,
+ 0x3d23419b, 0x65fd6ba7, 0x7ce65ae6, 0x57cb0925, 0x4ed03864,
+ 0x0191aea3, 0x188a9fe2, 0x33a7cc21, 0x2abcfd60, 0xad24e1af,
+ 0xb43fd0ee, 0x9f12832d, 0x8609b26c, 0xc94824ab, 0xd05315ea,
+ 0xfb7e4629, 0xe2657768, 0x2f3f79f6, 0x362448b7, 0x1d091b74,
+ 0x04122a35, 0x4b53bcf2, 0x52488db3, 0x7965de70, 0x607eef31,
+ 0xe7e6f3fe, 0xfefdc2bf, 0xd5d0917c, 0xcccba03d, 0x838a36fa,
+ 0x9a9107bb, 0xb1bc5478, 0xa8a76539, 0x3b83984b, 0x2298a90a,
+ 0x09b5fac9, 0x10aecb88, 0x5fef5d4f, 0x46f46c0e, 0x6dd93fcd,
+ 0x74c20e8c, 0xf35a1243, 0xea412302, 0xc16c70c1, 0xd8774180,
+ 0x9736d747, 0x8e2de606, 0xa500b5c5, 0xbc1b8484, 0x71418a1a,
+ 0x685abb5b, 0x4377e898, 0x5a6cd9d9, 0x152d4f1e, 0x0c367e5f,
+ 0x271b2d9c, 0x3e001cdd, 0xb9980012, 0xa0833153, 0x8bae6290,
+ 0x92b553d1, 0xddf4c516, 0xc4eff457, 0xefc2a794, 0xf6d996d5,
+ 0xae07bce9, 0xb71c8da8, 0x9c31de6b, 0x852aef2a, 0xca6b79ed,
+ 0xd37048ac, 0xf85d1b6f, 0xe1462a2e, 0x66de36e1, 0x7fc507a0,
+ 0x54e85463, 0x4df36522, 0x02b2f3e5, 0x1ba9c2a4, 0x30849167,
+ 0x299fa026, 0xe4c5aeb8, 0xfdde9ff9, 0xd6f3cc3a, 0xcfe8fd7b,
+ 0x80a96bbc, 0x99b25afd, 0xb29f093e, 0xab84387f, 0x2c1c24b0,
+ 0x350715f1, 0x1e2a4632, 0x07317773, 0x4870e1b4, 0x516bd0f5,
+ 0x7a468336, 0x635db277, 0xcbfad74e, 0xd2e1e60f, 0xf9ccb5cc,
+ 0xe0d7848d, 0xaf96124a, 0xb68d230b, 0x9da070c8, 0x84bb4189,
+ 0x03235d46, 0x1a386c07, 0x31153fc4, 0x280e0e85, 0x674f9842,
+ 0x7e54a903, 0x5579fac0, 0x4c62cb81, 0x8138c51f, 0x9823f45e,
+ 0xb30ea79d, 0xaa1596dc, 0xe554001b, 0xfc4f315a, 0xd7626299,
+ 0xce7953d8, 0x49e14f17, 0x50fa7e56, 0x7bd72d95, 0x62cc1cd4,
+ 0x2d8d8a13, 0x3496bb52, 0x1fbbe891, 0x06a0d9d0, 0x5e7ef3ec,
+ 0x4765c2ad, 0x6c48916e, 0x7553a02f, 0x3a1236e8, 0x230907a9,
+ 0x0824546a, 0x113f652b, 0x96a779e4, 0x8fbc48a5, 0xa4911b66,
+ 0xbd8a2a27, 0xf2cbbce0, 0xebd08da1, 0xc0fdde62, 0xd9e6ef23,
+ 0x14bce1bd, 0x0da7d0fc, 0x268a833f, 0x3f91b27e, 0x70d024b9,
+ 0x69cb15f8, 0x42e6463b, 0x5bfd777a, 0xdc656bb5, 0xc57e5af4,
+ 0xee530937, 0xf7483876, 0xb809aeb1, 0xa1129ff0, 0x8a3fcc33,
+ 0x9324fd72},
+ {0x00000000, 0x77073096, 0xee0e612c, 0x990951ba, 0x076dc419,
+ 0x706af48f, 0xe963a535, 0x9e6495a3, 0x0edb8832, 0x79dcb8a4,
+ 0xe0d5e91e, 0x97d2d988, 0x09b64c2b, 0x7eb17cbd, 0xe7b82d07,
+ 0x90bf1d91, 0x1db71064, 0x6ab020f2, 0xf3b97148, 0x84be41de,
+ 0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7, 0x136c9856,
+ 0x646ba8c0, 0xfd62f97a, 0x8a65c9ec, 0x14015c4f, 0x63066cd9,
+ 0xfa0f3d63, 0x8d080df5, 0x3b6e20c8, 0x4c69105e, 0xd56041e4,
+ 0xa2677172, 0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b,
+ 0x35b5a8fa, 0x42b2986c, 0xdbbbc9d6, 0xacbcf940, 0x32d86ce3,
+ 0x45df5c75, 0xdcd60dcf, 0xabd13d59, 0x26d930ac, 0x51de003a,
+ 0xc8d75180, 0xbfd06116, 0x21b4f4b5, 0x56b3c423, 0xcfba9599,
+ 0xb8bda50f, 0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924,
+ 0x2f6f7c87, 0x58684c11, 0xc1611dab, 0xb6662d3d, 0x76dc4190,
+ 0x01db7106, 0x98d220bc, 0xefd5102a, 0x71b18589, 0x06b6b51f,
+ 0x9fbfe4a5, 0xe8b8d433, 0x7807c9a2, 0x0f00f934, 0x9609a88e,
+ 0xe10e9818, 0x7f6a0dbb, 0x086d3d2d, 0x91646c97, 0xe6635c01,
+ 0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e, 0x6c0695ed,
+ 0x1b01a57b, 0x8208f4c1, 0xf50fc457, 0x65b0d9c6, 0x12b7e950,
+ 0x8bbeb8ea, 0xfcb9887c, 0x62dd1ddf, 0x15da2d49, 0x8cd37cf3,
+ 0xfbd44c65, 0x4db26158, 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2,
+ 0x4adfa541, 0x3dd895d7, 0xa4d1c46d, 0xd3d6f4fb, 0x4369e96a,
+ 0x346ed9fc, 0xad678846, 0xda60b8d0, 0x44042d73, 0x33031de5,
+ 0xaa0a4c5f, 0xdd0d7cc9, 0x5005713c, 0x270241aa, 0xbe0b1010,
+ 0xc90c2086, 0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f,
+ 0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4, 0x59b33d17,
+ 0x2eb40d81, 0xb7bd5c3b, 0xc0ba6cad, 0xedb88320, 0x9abfb3b6,
+ 0x03b6e20c, 0x74b1d29a, 0xead54739, 0x9dd277af, 0x04db2615,
+ 0x73dc1683, 0xe3630b12, 0x94643b84, 0x0d6d6a3e, 0x7a6a5aa8,
+ 0xe40ecf0b, 0x9309ff9d, 0x0a00ae27, 0x7d079eb1, 0xf00f9344,
+ 0x8708a3d2, 0x1e01f268, 0x6906c2fe, 0xf762575d, 0x806567cb,
+ 0x196c3671, 0x6e6b06e7, 0xfed41b76, 0x89d32be0, 0x10da7a5a,
+ 0x67dd4acc, 0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5,
+ 0xd6d6a3e8, 0xa1d1937e, 0x38d8c2c4, 0x4fdff252, 0xd1bb67f1,
+ 0xa6bc5767, 0x3fb506dd, 0x48b2364b, 0xd80d2bda, 0xaf0a1b4c,
+ 0x36034af6, 0x41047a60, 0xdf60efc3, 0xa867df55, 0x316e8eef,
+ 0x4669be79, 0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236,
+ 0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f, 0xc5ba3bbe,
+ 0xb2bd0b28, 0x2bb45a92, 0x5cb36a04, 0xc2d7ffa7, 0xb5d0cf31,
+ 0x2cd99e8b, 0x5bdeae1d, 0x9b64c2b0, 0xec63f226, 0x756aa39c,
+ 0x026d930a, 0x9c0906a9, 0xeb0e363f, 0x72076785, 0x05005713,
+ 0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0x0cb61b38, 0x92d28e9b,
+ 0xe5d5be0d, 0x7cdcefb7, 0x0bdbdf21, 0x86d3d2d4, 0xf1d4e242,
+ 0x68ddb3f8, 0x1fda836e, 0x81be16cd, 0xf6b9265b, 0x6fb077e1,
+ 0x18b74777, 0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c,
+ 0x8f659eff, 0xf862ae69, 0x616bffd3, 0x166ccf45, 0xa00ae278,
+ 0xd70dd2ee, 0x4e048354, 0x3903b3c2, 0xa7672661, 0xd06016f7,
+ 0x4969474d, 0x3e6e77db, 0xaed16a4a, 0xd9d65adc, 0x40df0b66,
+ 0x37d83bf0, 0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9,
+ 0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6, 0xbad03605,
+ 0xcdd70693, 0x54de5729, 0x23d967bf, 0xb3667a2e, 0xc4614ab8,
+ 0x5d681b02, 0x2a6f2b94, 0xb40bbe37, 0xc30c8ea1, 0x5a05df1b,
+ 0x2d02ef8d}};
+
+local const z_word_t FAR crc_braid_big_table[][256] = {
+ {0x0000000000000000, 0x9630077700000000, 0x2c610eee00000000,
+ 0xba51099900000000, 0x19c46d0700000000, 0x8ff46a7000000000,
+ 0x35a563e900000000, 0xa395649e00000000, 0x3288db0e00000000,
+ 0xa4b8dc7900000000, 0x1ee9d5e000000000, 0x88d9d29700000000,
+ 0x2b4cb60900000000, 0xbd7cb17e00000000, 0x072db8e700000000,
+ 0x911dbf9000000000, 0x6410b71d00000000, 0xf220b06a00000000,
+ 0x4871b9f300000000, 0xde41be8400000000, 0x7dd4da1a00000000,
+ 0xebe4dd6d00000000, 0x51b5d4f400000000, 0xc785d38300000000,
+ 0x56986c1300000000, 0xc0a86b6400000000, 0x7af962fd00000000,
+ 0xecc9658a00000000, 0x4f5c011400000000, 0xd96c066300000000,
+ 0x633d0ffa00000000, 0xf50d088d00000000, 0xc8206e3b00000000,
+ 0x5e10694c00000000, 0xe44160d500000000, 0x727167a200000000,
+ 0xd1e4033c00000000, 0x47d4044b00000000, 0xfd850dd200000000,
+ 0x6bb50aa500000000, 0xfaa8b53500000000, 0x6c98b24200000000,
+ 0xd6c9bbdb00000000, 0x40f9bcac00000000, 0xe36cd83200000000,
+ 0x755cdf4500000000, 0xcf0dd6dc00000000, 0x593dd1ab00000000,
+ 0xac30d92600000000, 0x3a00de5100000000, 0x8051d7c800000000,
+ 0x1661d0bf00000000, 0xb5f4b42100000000, 0x23c4b35600000000,
+ 0x9995bacf00000000, 0x0fa5bdb800000000, 0x9eb8022800000000,
+ 0x0888055f00000000, 0xb2d90cc600000000, 0x24e90bb100000000,
+ 0x877c6f2f00000000, 0x114c685800000000, 0xab1d61c100000000,
+ 0x3d2d66b600000000, 0x9041dc7600000000, 0x0671db0100000000,
+ 0xbc20d29800000000, 0x2a10d5ef00000000, 0x8985b17100000000,
+ 0x1fb5b60600000000, 0xa5e4bf9f00000000, 0x33d4b8e800000000,
+ 0xa2c9077800000000, 0x34f9000f00000000, 0x8ea8099600000000,
+ 0x18980ee100000000, 0xbb0d6a7f00000000, 0x2d3d6d0800000000,
+ 0x976c649100000000, 0x015c63e600000000, 0xf4516b6b00000000,
+ 0x62616c1c00000000, 0xd830658500000000, 0x4e0062f200000000,
+ 0xed95066c00000000, 0x7ba5011b00000000, 0xc1f4088200000000,
+ 0x57c40ff500000000, 0xc6d9b06500000000, 0x50e9b71200000000,
+ 0xeab8be8b00000000, 0x7c88b9fc00000000, 0xdf1ddd6200000000,
+ 0x492dda1500000000, 0xf37cd38c00000000, 0x654cd4fb00000000,
+ 0x5861b24d00000000, 0xce51b53a00000000, 0x7400bca300000000,
+ 0xe230bbd400000000, 0x41a5df4a00000000, 0xd795d83d00000000,
+ 0x6dc4d1a400000000, 0xfbf4d6d300000000, 0x6ae9694300000000,
+ 0xfcd96e3400000000, 0x468867ad00000000, 0xd0b860da00000000,
+ 0x732d044400000000, 0xe51d033300000000, 0x5f4c0aaa00000000,
+ 0xc97c0ddd00000000, 0x3c71055000000000, 0xaa41022700000000,
+ 0x10100bbe00000000, 0x86200cc900000000, 0x25b5685700000000,
+ 0xb3856f2000000000, 0x09d466b900000000, 0x9fe461ce00000000,
+ 0x0ef9de5e00000000, 0x98c9d92900000000, 0x2298d0b000000000,
+ 0xb4a8d7c700000000, 0x173db35900000000, 0x810db42e00000000,
+ 0x3b5cbdb700000000, 0xad6cbac000000000, 0x2083b8ed00000000,
+ 0xb6b3bf9a00000000, 0x0ce2b60300000000, 0x9ad2b17400000000,
+ 0x3947d5ea00000000, 0xaf77d29d00000000, 0x1526db0400000000,
+ 0x8316dc7300000000, 0x120b63e300000000, 0x843b649400000000,
+ 0x3e6a6d0d00000000, 0xa85a6a7a00000000, 0x0bcf0ee400000000,
+ 0x9dff099300000000, 0x27ae000a00000000, 0xb19e077d00000000,
+ 0x44930ff000000000, 0xd2a3088700000000, 0x68f2011e00000000,
+ 0xfec2066900000000, 0x5d5762f700000000, 0xcb67658000000000,
+ 0x71366c1900000000, 0xe7066b6e00000000, 0x761bd4fe00000000,
+ 0xe02bd38900000000, 0x5a7ada1000000000, 0xcc4add6700000000,
+ 0x6fdfb9f900000000, 0xf9efbe8e00000000, 0x43beb71700000000,
+ 0xd58eb06000000000, 0xe8a3d6d600000000, 0x7e93d1a100000000,
+ 0xc4c2d83800000000, 0x52f2df4f00000000, 0xf167bbd100000000,
+ 0x6757bca600000000, 0xdd06b53f00000000, 0x4b36b24800000000,
+ 0xda2b0dd800000000, 0x4c1b0aaf00000000, 0xf64a033600000000,
+ 0x607a044100000000, 0xc3ef60df00000000, 0x55df67a800000000,
+ 0xef8e6e3100000000, 0x79be694600000000, 0x8cb361cb00000000,
+ 0x1a8366bc00000000, 0xa0d26f2500000000, 0x36e2685200000000,
+ 0x95770ccc00000000, 0x03470bbb00000000, 0xb916022200000000,
+ 0x2f26055500000000, 0xbe3bbac500000000, 0x280bbdb200000000,
+ 0x925ab42b00000000, 0x046ab35c00000000, 0xa7ffd7c200000000,
+ 0x31cfd0b500000000, 0x8b9ed92c00000000, 0x1daede5b00000000,
+ 0xb0c2649b00000000, 0x26f263ec00000000, 0x9ca36a7500000000,
+ 0x0a936d0200000000, 0xa906099c00000000, 0x3f360eeb00000000,
+ 0x8567077200000000, 0x1357000500000000, 0x824abf9500000000,
+ 0x147ab8e200000000, 0xae2bb17b00000000, 0x381bb60c00000000,
+ 0x9b8ed29200000000, 0x0dbed5e500000000, 0xb7efdc7c00000000,
+ 0x21dfdb0b00000000, 0xd4d2d38600000000, 0x42e2d4f100000000,
+ 0xf8b3dd6800000000, 0x6e83da1f00000000, 0xcd16be8100000000,
+ 0x5b26b9f600000000, 0xe177b06f00000000, 0x7747b71800000000,
+ 0xe65a088800000000, 0x706a0fff00000000, 0xca3b066600000000,
+ 0x5c0b011100000000, 0xff9e658f00000000, 0x69ae62f800000000,
+ 0xd3ff6b6100000000, 0x45cf6c1600000000, 0x78e20aa000000000,
+ 0xeed20dd700000000, 0x5483044e00000000, 0xc2b3033900000000,
+ 0x612667a700000000, 0xf71660d000000000, 0x4d47694900000000,
+ 0xdb776e3e00000000, 0x4a6ad1ae00000000, 0xdc5ad6d900000000,
+ 0x660bdf4000000000, 0xf03bd83700000000, 0x53aebca900000000,
+ 0xc59ebbde00000000, 0x7fcfb24700000000, 0xe9ffb53000000000,
+ 0x1cf2bdbd00000000, 0x8ac2baca00000000, 0x3093b35300000000,
+ 0xa6a3b42400000000, 0x0536d0ba00000000, 0x9306d7cd00000000,
+ 0x2957de5400000000, 0xbf67d92300000000, 0x2e7a66b300000000,
+ 0xb84a61c400000000, 0x021b685d00000000, 0x942b6f2a00000000,
+ 0x37be0bb400000000, 0xa18e0cc300000000, 0x1bdf055a00000000,
+ 0x8def022d00000000},
+ {0x0000000000000000, 0x41311b1900000000, 0x8262363200000000,
+ 0xc3532d2b00000000, 0x04c56c6400000000, 0x45f4777d00000000,
+ 0x86a75a5600000000, 0xc796414f00000000, 0x088ad9c800000000,
+ 0x49bbc2d100000000, 0x8ae8effa00000000, 0xcbd9f4e300000000,
+ 0x0c4fb5ac00000000, 0x4d7eaeb500000000, 0x8e2d839e00000000,
+ 0xcf1c988700000000, 0x5112c24a00000000, 0x1023d95300000000,
+ 0xd370f47800000000, 0x9241ef6100000000, 0x55d7ae2e00000000,
+ 0x14e6b53700000000, 0xd7b5981c00000000, 0x9684830500000000,
+ 0x59981b8200000000, 0x18a9009b00000000, 0xdbfa2db000000000,
+ 0x9acb36a900000000, 0x5d5d77e600000000, 0x1c6c6cff00000000,
+ 0xdf3f41d400000000, 0x9e0e5acd00000000, 0xa224849500000000,
+ 0xe3159f8c00000000, 0x2046b2a700000000, 0x6177a9be00000000,
+ 0xa6e1e8f100000000, 0xe7d0f3e800000000, 0x2483dec300000000,
+ 0x65b2c5da00000000, 0xaaae5d5d00000000, 0xeb9f464400000000,
+ 0x28cc6b6f00000000, 0x69fd707600000000, 0xae6b313900000000,
+ 0xef5a2a2000000000, 0x2c09070b00000000, 0x6d381c1200000000,
+ 0xf33646df00000000, 0xb2075dc600000000, 0x715470ed00000000,
+ 0x30656bf400000000, 0xf7f32abb00000000, 0xb6c231a200000000,
+ 0x75911c8900000000, 0x34a0079000000000, 0xfbbc9f1700000000,
+ 0xba8d840e00000000, 0x79dea92500000000, 0x38efb23c00000000,
+ 0xff79f37300000000, 0xbe48e86a00000000, 0x7d1bc54100000000,
+ 0x3c2ade5800000000, 0x054f79f000000000, 0x447e62e900000000,
+ 0x872d4fc200000000, 0xc61c54db00000000, 0x018a159400000000,
+ 0x40bb0e8d00000000, 0x83e823a600000000, 0xc2d938bf00000000,
+ 0x0dc5a03800000000, 0x4cf4bb2100000000, 0x8fa7960a00000000,
+ 0xce968d1300000000, 0x0900cc5c00000000, 0x4831d74500000000,
+ 0x8b62fa6e00000000, 0xca53e17700000000, 0x545dbbba00000000,
+ 0x156ca0a300000000, 0xd63f8d8800000000, 0x970e969100000000,
+ 0x5098d7de00000000, 0x11a9ccc700000000, 0xd2fae1ec00000000,
+ 0x93cbfaf500000000, 0x5cd7627200000000, 0x1de6796b00000000,
+ 0xdeb5544000000000, 0x9f844f5900000000, 0x58120e1600000000,
+ 0x1923150f00000000, 0xda70382400000000, 0x9b41233d00000000,
+ 0xa76bfd6500000000, 0xe65ae67c00000000, 0x2509cb5700000000,
+ 0x6438d04e00000000, 0xa3ae910100000000, 0xe29f8a1800000000,
+ 0x21cca73300000000, 0x60fdbc2a00000000, 0xafe124ad00000000,
+ 0xeed03fb400000000, 0x2d83129f00000000, 0x6cb2098600000000,
+ 0xab2448c900000000, 0xea1553d000000000, 0x29467efb00000000,
+ 0x687765e200000000, 0xf6793f2f00000000, 0xb748243600000000,
+ 0x741b091d00000000, 0x352a120400000000, 0xf2bc534b00000000,
+ 0xb38d485200000000, 0x70de657900000000, 0x31ef7e6000000000,
+ 0xfef3e6e700000000, 0xbfc2fdfe00000000, 0x7c91d0d500000000,
+ 0x3da0cbcc00000000, 0xfa368a8300000000, 0xbb07919a00000000,
+ 0x7854bcb100000000, 0x3965a7a800000000, 0x4b98833b00000000,
+ 0x0aa9982200000000, 0xc9fab50900000000, 0x88cbae1000000000,
+ 0x4f5def5f00000000, 0x0e6cf44600000000, 0xcd3fd96d00000000,
+ 0x8c0ec27400000000, 0x43125af300000000, 0x022341ea00000000,
+ 0xc1706cc100000000, 0x804177d800000000, 0x47d7369700000000,
+ 0x06e62d8e00000000, 0xc5b500a500000000, 0x84841bbc00000000,
+ 0x1a8a417100000000, 0x5bbb5a6800000000, 0x98e8774300000000,
+ 0xd9d96c5a00000000, 0x1e4f2d1500000000, 0x5f7e360c00000000,
+ 0x9c2d1b2700000000, 0xdd1c003e00000000, 0x120098b900000000,
+ 0x533183a000000000, 0x9062ae8b00000000, 0xd153b59200000000,
+ 0x16c5f4dd00000000, 0x57f4efc400000000, 0x94a7c2ef00000000,
+ 0xd596d9f600000000, 0xe9bc07ae00000000, 0xa88d1cb700000000,
+ 0x6bde319c00000000, 0x2aef2a8500000000, 0xed796bca00000000,
+ 0xac4870d300000000, 0x6f1b5df800000000, 0x2e2a46e100000000,
+ 0xe136de6600000000, 0xa007c57f00000000, 0x6354e85400000000,
+ 0x2265f34d00000000, 0xe5f3b20200000000, 0xa4c2a91b00000000,
+ 0x6791843000000000, 0x26a09f2900000000, 0xb8aec5e400000000,
+ 0xf99fdefd00000000, 0x3accf3d600000000, 0x7bfde8cf00000000,
+ 0xbc6ba98000000000, 0xfd5ab29900000000, 0x3e099fb200000000,
+ 0x7f3884ab00000000, 0xb0241c2c00000000, 0xf115073500000000,
+ 0x32462a1e00000000, 0x7377310700000000, 0xb4e1704800000000,
+ 0xf5d06b5100000000, 0x3683467a00000000, 0x77b25d6300000000,
+ 0x4ed7facb00000000, 0x0fe6e1d200000000, 0xccb5ccf900000000,
+ 0x8d84d7e000000000, 0x4a1296af00000000, 0x0b238db600000000,
+ 0xc870a09d00000000, 0x8941bb8400000000, 0x465d230300000000,
+ 0x076c381a00000000, 0xc43f153100000000, 0x850e0e2800000000,
+ 0x42984f6700000000, 0x03a9547e00000000, 0xc0fa795500000000,
+ 0x81cb624c00000000, 0x1fc5388100000000, 0x5ef4239800000000,
+ 0x9da70eb300000000, 0xdc9615aa00000000, 0x1b0054e500000000,
+ 0x5a314ffc00000000, 0x996262d700000000, 0xd85379ce00000000,
+ 0x174fe14900000000, 0x567efa5000000000, 0x952dd77b00000000,
+ 0xd41ccc6200000000, 0x138a8d2d00000000, 0x52bb963400000000,
+ 0x91e8bb1f00000000, 0xd0d9a00600000000, 0xecf37e5e00000000,
+ 0xadc2654700000000, 0x6e91486c00000000, 0x2fa0537500000000,
+ 0xe836123a00000000, 0xa907092300000000, 0x6a54240800000000,
+ 0x2b653f1100000000, 0xe479a79600000000, 0xa548bc8f00000000,
+ 0x661b91a400000000, 0x272a8abd00000000, 0xe0bccbf200000000,
+ 0xa18dd0eb00000000, 0x62defdc000000000, 0x23efe6d900000000,
+ 0xbde1bc1400000000, 0xfcd0a70d00000000, 0x3f838a2600000000,
+ 0x7eb2913f00000000, 0xb924d07000000000, 0xf815cb6900000000,
+ 0x3b46e64200000000, 0x7a77fd5b00000000, 0xb56b65dc00000000,
+ 0xf45a7ec500000000, 0x370953ee00000000, 0x763848f700000000,
+ 0xb1ae09b800000000, 0xf09f12a100000000, 0x33cc3f8a00000000,
+ 0x72fd249300000000},
+ {0x0000000000000000, 0x376ac20100000000, 0x6ed4840300000000,
+ 0x59be460200000000, 0xdca8090700000000, 0xebc2cb0600000000,
+ 0xb27c8d0400000000, 0x85164f0500000000, 0xb851130e00000000,
+ 0x8f3bd10f00000000, 0xd685970d00000000, 0xe1ef550c00000000,
+ 0x64f91a0900000000, 0x5393d80800000000, 0x0a2d9e0a00000000,
+ 0x3d475c0b00000000, 0x70a3261c00000000, 0x47c9e41d00000000,
+ 0x1e77a21f00000000, 0x291d601e00000000, 0xac0b2f1b00000000,
+ 0x9b61ed1a00000000, 0xc2dfab1800000000, 0xf5b5691900000000,
+ 0xc8f2351200000000, 0xff98f71300000000, 0xa626b11100000000,
+ 0x914c731000000000, 0x145a3c1500000000, 0x2330fe1400000000,
+ 0x7a8eb81600000000, 0x4de47a1700000000, 0xe0464d3800000000,
+ 0xd72c8f3900000000, 0x8e92c93b00000000, 0xb9f80b3a00000000,
+ 0x3cee443f00000000, 0x0b84863e00000000, 0x523ac03c00000000,
+ 0x6550023d00000000, 0x58175e3600000000, 0x6f7d9c3700000000,
+ 0x36c3da3500000000, 0x01a9183400000000, 0x84bf573100000000,
+ 0xb3d5953000000000, 0xea6bd33200000000, 0xdd01113300000000,
+ 0x90e56b2400000000, 0xa78fa92500000000, 0xfe31ef2700000000,
+ 0xc95b2d2600000000, 0x4c4d622300000000, 0x7b27a02200000000,
+ 0x2299e62000000000, 0x15f3242100000000, 0x28b4782a00000000,
+ 0x1fdeba2b00000000, 0x4660fc2900000000, 0x710a3e2800000000,
+ 0xf41c712d00000000, 0xc376b32c00000000, 0x9ac8f52e00000000,
+ 0xada2372f00000000, 0xc08d9a7000000000, 0xf7e7587100000000,
+ 0xae591e7300000000, 0x9933dc7200000000, 0x1c25937700000000,
+ 0x2b4f517600000000, 0x72f1177400000000, 0x459bd57500000000,
+ 0x78dc897e00000000, 0x4fb64b7f00000000, 0x16080d7d00000000,
+ 0x2162cf7c00000000, 0xa474807900000000, 0x931e427800000000,
+ 0xcaa0047a00000000, 0xfdcac67b00000000, 0xb02ebc6c00000000,
+ 0x87447e6d00000000, 0xdefa386f00000000, 0xe990fa6e00000000,
+ 0x6c86b56b00000000, 0x5bec776a00000000, 0x0252316800000000,
+ 0x3538f36900000000, 0x087faf6200000000, 0x3f156d6300000000,
+ 0x66ab2b6100000000, 0x51c1e96000000000, 0xd4d7a66500000000,
+ 0xe3bd646400000000, 0xba03226600000000, 0x8d69e06700000000,
+ 0x20cbd74800000000, 0x17a1154900000000, 0x4e1f534b00000000,
+ 0x7975914a00000000, 0xfc63de4f00000000, 0xcb091c4e00000000,
+ 0x92b75a4c00000000, 0xa5dd984d00000000, 0x989ac44600000000,
+ 0xaff0064700000000, 0xf64e404500000000, 0xc124824400000000,
+ 0x4432cd4100000000, 0x73580f4000000000, 0x2ae6494200000000,
+ 0x1d8c8b4300000000, 0x5068f15400000000, 0x6702335500000000,
+ 0x3ebc755700000000, 0x09d6b75600000000, 0x8cc0f85300000000,
+ 0xbbaa3a5200000000, 0xe2147c5000000000, 0xd57ebe5100000000,
+ 0xe839e25a00000000, 0xdf53205b00000000, 0x86ed665900000000,
+ 0xb187a45800000000, 0x3491eb5d00000000, 0x03fb295c00000000,
+ 0x5a456f5e00000000, 0x6d2fad5f00000000, 0x801b35e100000000,
+ 0xb771f7e000000000, 0xeecfb1e200000000, 0xd9a573e300000000,
+ 0x5cb33ce600000000, 0x6bd9fee700000000, 0x3267b8e500000000,
+ 0x050d7ae400000000, 0x384a26ef00000000, 0x0f20e4ee00000000,
+ 0x569ea2ec00000000, 0x61f460ed00000000, 0xe4e22fe800000000,
+ 0xd388ede900000000, 0x8a36abeb00000000, 0xbd5c69ea00000000,
+ 0xf0b813fd00000000, 0xc7d2d1fc00000000, 0x9e6c97fe00000000,
+ 0xa90655ff00000000, 0x2c101afa00000000, 0x1b7ad8fb00000000,
+ 0x42c49ef900000000, 0x75ae5cf800000000, 0x48e900f300000000,
+ 0x7f83c2f200000000, 0x263d84f000000000, 0x115746f100000000,
+ 0x944109f400000000, 0xa32bcbf500000000, 0xfa958df700000000,
+ 0xcdff4ff600000000, 0x605d78d900000000, 0x5737bad800000000,
+ 0x0e89fcda00000000, 0x39e33edb00000000, 0xbcf571de00000000,
+ 0x8b9fb3df00000000, 0xd221f5dd00000000, 0xe54b37dc00000000,
+ 0xd80c6bd700000000, 0xef66a9d600000000, 0xb6d8efd400000000,
+ 0x81b22dd500000000, 0x04a462d000000000, 0x33cea0d100000000,
+ 0x6a70e6d300000000, 0x5d1a24d200000000, 0x10fe5ec500000000,
+ 0x27949cc400000000, 0x7e2adac600000000, 0x494018c700000000,
+ 0xcc5657c200000000, 0xfb3c95c300000000, 0xa282d3c100000000,
+ 0x95e811c000000000, 0xa8af4dcb00000000, 0x9fc58fca00000000,
+ 0xc67bc9c800000000, 0xf1110bc900000000, 0x740744cc00000000,
+ 0x436d86cd00000000, 0x1ad3c0cf00000000, 0x2db902ce00000000,
+ 0x4096af9100000000, 0x77fc6d9000000000, 0x2e422b9200000000,
+ 0x1928e99300000000, 0x9c3ea69600000000, 0xab54649700000000,
+ 0xf2ea229500000000, 0xc580e09400000000, 0xf8c7bc9f00000000,
+ 0xcfad7e9e00000000, 0x9613389c00000000, 0xa179fa9d00000000,
+ 0x246fb59800000000, 0x1305779900000000, 0x4abb319b00000000,
+ 0x7dd1f39a00000000, 0x3035898d00000000, 0x075f4b8c00000000,
+ 0x5ee10d8e00000000, 0x698bcf8f00000000, 0xec9d808a00000000,
+ 0xdbf7428b00000000, 0x8249048900000000, 0xb523c68800000000,
+ 0x88649a8300000000, 0xbf0e588200000000, 0xe6b01e8000000000,
+ 0xd1dadc8100000000, 0x54cc938400000000, 0x63a6518500000000,
+ 0x3a18178700000000, 0x0d72d58600000000, 0xa0d0e2a900000000,
+ 0x97ba20a800000000, 0xce0466aa00000000, 0xf96ea4ab00000000,
+ 0x7c78ebae00000000, 0x4b1229af00000000, 0x12ac6fad00000000,
+ 0x25c6adac00000000, 0x1881f1a700000000, 0x2feb33a600000000,
+ 0x765575a400000000, 0x413fb7a500000000, 0xc429f8a000000000,
+ 0xf3433aa100000000, 0xaafd7ca300000000, 0x9d97bea200000000,
+ 0xd073c4b500000000, 0xe71906b400000000, 0xbea740b600000000,
+ 0x89cd82b700000000, 0x0cdbcdb200000000, 0x3bb10fb300000000,
+ 0x620f49b100000000, 0x55658bb000000000, 0x6822d7bb00000000,
+ 0x5f4815ba00000000, 0x06f653b800000000, 0x319c91b900000000,
+ 0xb48adebc00000000, 0x83e01cbd00000000, 0xda5e5abf00000000,
+ 0xed3498be00000000},
+ {0x0000000000000000, 0x6567bcb800000000, 0x8bc809aa00000000,
+ 0xeeafb51200000000, 0x5797628f00000000, 0x32f0de3700000000,
+ 0xdc5f6b2500000000, 0xb938d79d00000000, 0xef28b4c500000000,
+ 0x8a4f087d00000000, 0x64e0bd6f00000000, 0x018701d700000000,
+ 0xb8bfd64a00000000, 0xddd86af200000000, 0x3377dfe000000000,
+ 0x5610635800000000, 0x9f57195000000000, 0xfa30a5e800000000,
+ 0x149f10fa00000000, 0x71f8ac4200000000, 0xc8c07bdf00000000,
+ 0xada7c76700000000, 0x4308727500000000, 0x266fcecd00000000,
+ 0x707fad9500000000, 0x1518112d00000000, 0xfbb7a43f00000000,
+ 0x9ed0188700000000, 0x27e8cf1a00000000, 0x428f73a200000000,
+ 0xac20c6b000000000, 0xc9477a0800000000, 0x3eaf32a000000000,
+ 0x5bc88e1800000000, 0xb5673b0a00000000, 0xd00087b200000000,
+ 0x6938502f00000000, 0x0c5fec9700000000, 0xe2f0598500000000,
+ 0x8797e53d00000000, 0xd187866500000000, 0xb4e03add00000000,
+ 0x5a4f8fcf00000000, 0x3f28337700000000, 0x8610e4ea00000000,
+ 0xe377585200000000, 0x0dd8ed4000000000, 0x68bf51f800000000,
+ 0xa1f82bf000000000, 0xc49f974800000000, 0x2a30225a00000000,
+ 0x4f579ee200000000, 0xf66f497f00000000, 0x9308f5c700000000,
+ 0x7da740d500000000, 0x18c0fc6d00000000, 0x4ed09f3500000000,
+ 0x2bb7238d00000000, 0xc518969f00000000, 0xa07f2a2700000000,
+ 0x1947fdba00000000, 0x7c20410200000000, 0x928ff41000000000,
+ 0xf7e848a800000000, 0x3d58149b00000000, 0x583fa82300000000,
+ 0xb6901d3100000000, 0xd3f7a18900000000, 0x6acf761400000000,
+ 0x0fa8caac00000000, 0xe1077fbe00000000, 0x8460c30600000000,
+ 0xd270a05e00000000, 0xb7171ce600000000, 0x59b8a9f400000000,
+ 0x3cdf154c00000000, 0x85e7c2d100000000, 0xe0807e6900000000,
+ 0x0e2fcb7b00000000, 0x6b4877c300000000, 0xa20f0dcb00000000,
+ 0xc768b17300000000, 0x29c7046100000000, 0x4ca0b8d900000000,
+ 0xf5986f4400000000, 0x90ffd3fc00000000, 0x7e5066ee00000000,
+ 0x1b37da5600000000, 0x4d27b90e00000000, 0x284005b600000000,
+ 0xc6efb0a400000000, 0xa3880c1c00000000, 0x1ab0db8100000000,
+ 0x7fd7673900000000, 0x9178d22b00000000, 0xf41f6e9300000000,
+ 0x03f7263b00000000, 0x66909a8300000000, 0x883f2f9100000000,
+ 0xed58932900000000, 0x546044b400000000, 0x3107f80c00000000,
+ 0xdfa84d1e00000000, 0xbacff1a600000000, 0xecdf92fe00000000,
+ 0x89b82e4600000000, 0x67179b5400000000, 0x027027ec00000000,
+ 0xbb48f07100000000, 0xde2f4cc900000000, 0x3080f9db00000000,
+ 0x55e7456300000000, 0x9ca03f6b00000000, 0xf9c783d300000000,
+ 0x176836c100000000, 0x720f8a7900000000, 0xcb375de400000000,
+ 0xae50e15c00000000, 0x40ff544e00000000, 0x2598e8f600000000,
+ 0x73888bae00000000, 0x16ef371600000000, 0xf840820400000000,
+ 0x9d273ebc00000000, 0x241fe92100000000, 0x4178559900000000,
+ 0xafd7e08b00000000, 0xcab05c3300000000, 0x3bb659ed00000000,
+ 0x5ed1e55500000000, 0xb07e504700000000, 0xd519ecff00000000,
+ 0x6c213b6200000000, 0x094687da00000000, 0xe7e932c800000000,
+ 0x828e8e7000000000, 0xd49eed2800000000, 0xb1f9519000000000,
+ 0x5f56e48200000000, 0x3a31583a00000000, 0x83098fa700000000,
+ 0xe66e331f00000000, 0x08c1860d00000000, 0x6da63ab500000000,
+ 0xa4e140bd00000000, 0xc186fc0500000000, 0x2f29491700000000,
+ 0x4a4ef5af00000000, 0xf376223200000000, 0x96119e8a00000000,
+ 0x78be2b9800000000, 0x1dd9972000000000, 0x4bc9f47800000000,
+ 0x2eae48c000000000, 0xc001fdd200000000, 0xa566416a00000000,
+ 0x1c5e96f700000000, 0x79392a4f00000000, 0x97969f5d00000000,
+ 0xf2f123e500000000, 0x05196b4d00000000, 0x607ed7f500000000,
+ 0x8ed162e700000000, 0xebb6de5f00000000, 0x528e09c200000000,
+ 0x37e9b57a00000000, 0xd946006800000000, 0xbc21bcd000000000,
+ 0xea31df8800000000, 0x8f56633000000000, 0x61f9d62200000000,
+ 0x049e6a9a00000000, 0xbda6bd0700000000, 0xd8c101bf00000000,
+ 0x366eb4ad00000000, 0x5309081500000000, 0x9a4e721d00000000,
+ 0xff29cea500000000, 0x11867bb700000000, 0x74e1c70f00000000,
+ 0xcdd9109200000000, 0xa8beac2a00000000, 0x4611193800000000,
+ 0x2376a58000000000, 0x7566c6d800000000, 0x10017a6000000000,
+ 0xfeaecf7200000000, 0x9bc973ca00000000, 0x22f1a45700000000,
+ 0x479618ef00000000, 0xa939adfd00000000, 0xcc5e114500000000,
+ 0x06ee4d7600000000, 0x6389f1ce00000000, 0x8d2644dc00000000,
+ 0xe841f86400000000, 0x51792ff900000000, 0x341e934100000000,
+ 0xdab1265300000000, 0xbfd69aeb00000000, 0xe9c6f9b300000000,
+ 0x8ca1450b00000000, 0x620ef01900000000, 0x07694ca100000000,
+ 0xbe519b3c00000000, 0xdb36278400000000, 0x3599929600000000,
+ 0x50fe2e2e00000000, 0x99b9542600000000, 0xfcdee89e00000000,
+ 0x12715d8c00000000, 0x7716e13400000000, 0xce2e36a900000000,
+ 0xab498a1100000000, 0x45e63f0300000000, 0x208183bb00000000,
+ 0x7691e0e300000000, 0x13f65c5b00000000, 0xfd59e94900000000,
+ 0x983e55f100000000, 0x2106826c00000000, 0x44613ed400000000,
+ 0xaace8bc600000000, 0xcfa9377e00000000, 0x38417fd600000000,
+ 0x5d26c36e00000000, 0xb389767c00000000, 0xd6eecac400000000,
+ 0x6fd61d5900000000, 0x0ab1a1e100000000, 0xe41e14f300000000,
+ 0x8179a84b00000000, 0xd769cb1300000000, 0xb20e77ab00000000,
+ 0x5ca1c2b900000000, 0x39c67e0100000000, 0x80fea99c00000000,
+ 0xe599152400000000, 0x0b36a03600000000, 0x6e511c8e00000000,
+ 0xa716668600000000, 0xc271da3e00000000, 0x2cde6f2c00000000,
+ 0x49b9d39400000000, 0xf081040900000000, 0x95e6b8b100000000,
+ 0x7b490da300000000, 0x1e2eb11b00000000, 0x483ed24300000000,
+ 0x2d596efb00000000, 0xc3f6dbe900000000, 0xa691675100000000,
+ 0x1fa9b0cc00000000, 0x7ace0c7400000000, 0x9461b96600000000,
+ 0xf10605de00000000},
+ {0x0000000000000000, 0xb029603d00000000, 0x6053c07a00000000,
+ 0xd07aa04700000000, 0xc0a680f500000000, 0x708fe0c800000000,
+ 0xa0f5408f00000000, 0x10dc20b200000000, 0xc14b703000000000,
+ 0x7162100d00000000, 0xa118b04a00000000, 0x1131d07700000000,
+ 0x01edf0c500000000, 0xb1c490f800000000, 0x61be30bf00000000,
+ 0xd197508200000000, 0x8297e06000000000, 0x32be805d00000000,
+ 0xe2c4201a00000000, 0x52ed402700000000, 0x4231609500000000,
+ 0xf21800a800000000, 0x2262a0ef00000000, 0x924bc0d200000000,
+ 0x43dc905000000000, 0xf3f5f06d00000000, 0x238f502a00000000,
+ 0x93a6301700000000, 0x837a10a500000000, 0x3353709800000000,
+ 0xe329d0df00000000, 0x5300b0e200000000, 0x042fc1c100000000,
+ 0xb406a1fc00000000, 0x647c01bb00000000, 0xd455618600000000,
+ 0xc489413400000000, 0x74a0210900000000, 0xa4da814e00000000,
+ 0x14f3e17300000000, 0xc564b1f100000000, 0x754dd1cc00000000,
+ 0xa537718b00000000, 0x151e11b600000000, 0x05c2310400000000,
+ 0xb5eb513900000000, 0x6591f17e00000000, 0xd5b8914300000000,
+ 0x86b821a100000000, 0x3691419c00000000, 0xe6ebe1db00000000,
+ 0x56c281e600000000, 0x461ea15400000000, 0xf637c16900000000,
+ 0x264d612e00000000, 0x9664011300000000, 0x47f3519100000000,
+ 0xf7da31ac00000000, 0x27a091eb00000000, 0x9789f1d600000000,
+ 0x8755d16400000000, 0x377cb15900000000, 0xe706111e00000000,
+ 0x572f712300000000, 0x4958f35800000000, 0xf971936500000000,
+ 0x290b332200000000, 0x9922531f00000000, 0x89fe73ad00000000,
+ 0x39d7139000000000, 0xe9adb3d700000000, 0x5984d3ea00000000,
+ 0x8813836800000000, 0x383ae35500000000, 0xe840431200000000,
+ 0x5869232f00000000, 0x48b5039d00000000, 0xf89c63a000000000,
+ 0x28e6c3e700000000, 0x98cfa3da00000000, 0xcbcf133800000000,
+ 0x7be6730500000000, 0xab9cd34200000000, 0x1bb5b37f00000000,
+ 0x0b6993cd00000000, 0xbb40f3f000000000, 0x6b3a53b700000000,
+ 0xdb13338a00000000, 0x0a84630800000000, 0xbaad033500000000,
+ 0x6ad7a37200000000, 0xdafec34f00000000, 0xca22e3fd00000000,
+ 0x7a0b83c000000000, 0xaa71238700000000, 0x1a5843ba00000000,
+ 0x4d77329900000000, 0xfd5e52a400000000, 0x2d24f2e300000000,
+ 0x9d0d92de00000000, 0x8dd1b26c00000000, 0x3df8d25100000000,
+ 0xed82721600000000, 0x5dab122b00000000, 0x8c3c42a900000000,
+ 0x3c15229400000000, 0xec6f82d300000000, 0x5c46e2ee00000000,
+ 0x4c9ac25c00000000, 0xfcb3a26100000000, 0x2cc9022600000000,
+ 0x9ce0621b00000000, 0xcfe0d2f900000000, 0x7fc9b2c400000000,
+ 0xafb3128300000000, 0x1f9a72be00000000, 0x0f46520c00000000,
+ 0xbf6f323100000000, 0x6f15927600000000, 0xdf3cf24b00000000,
+ 0x0eaba2c900000000, 0xbe82c2f400000000, 0x6ef862b300000000,
+ 0xded1028e00000000, 0xce0d223c00000000, 0x7e24420100000000,
+ 0xae5ee24600000000, 0x1e77827b00000000, 0x92b0e6b100000000,
+ 0x2299868c00000000, 0xf2e326cb00000000, 0x42ca46f600000000,
+ 0x5216664400000000, 0xe23f067900000000, 0x3245a63e00000000,
+ 0x826cc60300000000, 0x53fb968100000000, 0xe3d2f6bc00000000,
+ 0x33a856fb00000000, 0x838136c600000000, 0x935d167400000000,
+ 0x2374764900000000, 0xf30ed60e00000000, 0x4327b63300000000,
+ 0x102706d100000000, 0xa00e66ec00000000, 0x7074c6ab00000000,
+ 0xc05da69600000000, 0xd081862400000000, 0x60a8e61900000000,
+ 0xb0d2465e00000000, 0x00fb266300000000, 0xd16c76e100000000,
+ 0x614516dc00000000, 0xb13fb69b00000000, 0x0116d6a600000000,
+ 0x11caf61400000000, 0xa1e3962900000000, 0x7199366e00000000,
+ 0xc1b0565300000000, 0x969f277000000000, 0x26b6474d00000000,
+ 0xf6cce70a00000000, 0x46e5873700000000, 0x5639a78500000000,
+ 0xe610c7b800000000, 0x366a67ff00000000, 0x864307c200000000,
+ 0x57d4574000000000, 0xe7fd377d00000000, 0x3787973a00000000,
+ 0x87aef70700000000, 0x9772d7b500000000, 0x275bb78800000000,
+ 0xf72117cf00000000, 0x470877f200000000, 0x1408c71000000000,
+ 0xa421a72d00000000, 0x745b076a00000000, 0xc472675700000000,
+ 0xd4ae47e500000000, 0x648727d800000000, 0xb4fd879f00000000,
+ 0x04d4e7a200000000, 0xd543b72000000000, 0x656ad71d00000000,
+ 0xb510775a00000000, 0x0539176700000000, 0x15e537d500000000,
+ 0xa5cc57e800000000, 0x75b6f7af00000000, 0xc59f979200000000,
+ 0xdbe815e900000000, 0x6bc175d400000000, 0xbbbbd59300000000,
+ 0x0b92b5ae00000000, 0x1b4e951c00000000, 0xab67f52100000000,
+ 0x7b1d556600000000, 0xcb34355b00000000, 0x1aa365d900000000,
+ 0xaa8a05e400000000, 0x7af0a5a300000000, 0xcad9c59e00000000,
+ 0xda05e52c00000000, 0x6a2c851100000000, 0xba56255600000000,
+ 0x0a7f456b00000000, 0x597ff58900000000, 0xe95695b400000000,
+ 0x392c35f300000000, 0x890555ce00000000, 0x99d9757c00000000,
+ 0x29f0154100000000, 0xf98ab50600000000, 0x49a3d53b00000000,
+ 0x983485b900000000, 0x281de58400000000, 0xf86745c300000000,
+ 0x484e25fe00000000, 0x5892054c00000000, 0xe8bb657100000000,
+ 0x38c1c53600000000, 0x88e8a50b00000000, 0xdfc7d42800000000,
+ 0x6feeb41500000000, 0xbf94145200000000, 0x0fbd746f00000000,
+ 0x1f6154dd00000000, 0xaf4834e000000000, 0x7f3294a700000000,
+ 0xcf1bf49a00000000, 0x1e8ca41800000000, 0xaea5c42500000000,
+ 0x7edf646200000000, 0xcef6045f00000000, 0xde2a24ed00000000,
+ 0x6e0344d000000000, 0xbe79e49700000000, 0x0e5084aa00000000,
+ 0x5d50344800000000, 0xed79547500000000, 0x3d03f43200000000,
+ 0x8d2a940f00000000, 0x9df6b4bd00000000, 0x2ddfd48000000000,
+ 0xfda574c700000000, 0x4d8c14fa00000000, 0x9c1b447800000000,
+ 0x2c32244500000000, 0xfc48840200000000, 0x4c61e43f00000000,
+ 0x5cbdc48d00000000, 0xec94a4b000000000, 0x3cee04f700000000,
+ 0x8cc764ca00000000},
+ {0x0000000000000000, 0xa5d35ccb00000000, 0x0ba1c84d00000000,
+ 0xae72948600000000, 0x1642919b00000000, 0xb391cd5000000000,
+ 0x1de359d600000000, 0xb830051d00000000, 0x6d8253ec00000000,
+ 0xc8510f2700000000, 0x66239ba100000000, 0xc3f0c76a00000000,
+ 0x7bc0c27700000000, 0xde139ebc00000000, 0x70610a3a00000000,
+ 0xd5b256f100000000, 0x9b02d60300000000, 0x3ed18ac800000000,
+ 0x90a31e4e00000000, 0x3570428500000000, 0x8d40479800000000,
+ 0x28931b5300000000, 0x86e18fd500000000, 0x2332d31e00000000,
+ 0xf68085ef00000000, 0x5353d92400000000, 0xfd214da200000000,
+ 0x58f2116900000000, 0xe0c2147400000000, 0x451148bf00000000,
+ 0xeb63dc3900000000, 0x4eb080f200000000, 0x3605ac0700000000,
+ 0x93d6f0cc00000000, 0x3da4644a00000000, 0x9877388100000000,
+ 0x20473d9c00000000, 0x8594615700000000, 0x2be6f5d100000000,
+ 0x8e35a91a00000000, 0x5b87ffeb00000000, 0xfe54a32000000000,
+ 0x502637a600000000, 0xf5f56b6d00000000, 0x4dc56e7000000000,
+ 0xe81632bb00000000, 0x4664a63d00000000, 0xe3b7faf600000000,
+ 0xad077a0400000000, 0x08d426cf00000000, 0xa6a6b24900000000,
+ 0x0375ee8200000000, 0xbb45eb9f00000000, 0x1e96b75400000000,
+ 0xb0e423d200000000, 0x15377f1900000000, 0xc08529e800000000,
+ 0x6556752300000000, 0xcb24e1a500000000, 0x6ef7bd6e00000000,
+ 0xd6c7b87300000000, 0x7314e4b800000000, 0xdd66703e00000000,
+ 0x78b52cf500000000, 0x6c0a580f00000000, 0xc9d904c400000000,
+ 0x67ab904200000000, 0xc278cc8900000000, 0x7a48c99400000000,
+ 0xdf9b955f00000000, 0x71e901d900000000, 0xd43a5d1200000000,
+ 0x01880be300000000, 0xa45b572800000000, 0x0a29c3ae00000000,
+ 0xaffa9f6500000000, 0x17ca9a7800000000, 0xb219c6b300000000,
+ 0x1c6b523500000000, 0xb9b80efe00000000, 0xf7088e0c00000000,
+ 0x52dbd2c700000000, 0xfca9464100000000, 0x597a1a8a00000000,
+ 0xe14a1f9700000000, 0x4499435c00000000, 0xeaebd7da00000000,
+ 0x4f388b1100000000, 0x9a8adde000000000, 0x3f59812b00000000,
+ 0x912b15ad00000000, 0x34f8496600000000, 0x8cc84c7b00000000,
+ 0x291b10b000000000, 0x8769843600000000, 0x22bad8fd00000000,
+ 0x5a0ff40800000000, 0xffdca8c300000000, 0x51ae3c4500000000,
+ 0xf47d608e00000000, 0x4c4d659300000000, 0xe99e395800000000,
+ 0x47ecadde00000000, 0xe23ff11500000000, 0x378da7e400000000,
+ 0x925efb2f00000000, 0x3c2c6fa900000000, 0x99ff336200000000,
+ 0x21cf367f00000000, 0x841c6ab400000000, 0x2a6efe3200000000,
+ 0x8fbda2f900000000, 0xc10d220b00000000, 0x64de7ec000000000,
+ 0xcaacea4600000000, 0x6f7fb68d00000000, 0xd74fb39000000000,
+ 0x729cef5b00000000, 0xdcee7bdd00000000, 0x793d271600000000,
+ 0xac8f71e700000000, 0x095c2d2c00000000, 0xa72eb9aa00000000,
+ 0x02fde56100000000, 0xbacde07c00000000, 0x1f1ebcb700000000,
+ 0xb16c283100000000, 0x14bf74fa00000000, 0xd814b01e00000000,
+ 0x7dc7ecd500000000, 0xd3b5785300000000, 0x7666249800000000,
+ 0xce56218500000000, 0x6b857d4e00000000, 0xc5f7e9c800000000,
+ 0x6024b50300000000, 0xb596e3f200000000, 0x1045bf3900000000,
+ 0xbe372bbf00000000, 0x1be4777400000000, 0xa3d4726900000000,
+ 0x06072ea200000000, 0xa875ba2400000000, 0x0da6e6ef00000000,
+ 0x4316661d00000000, 0xe6c53ad600000000, 0x48b7ae5000000000,
+ 0xed64f29b00000000, 0x5554f78600000000, 0xf087ab4d00000000,
+ 0x5ef53fcb00000000, 0xfb26630000000000, 0x2e9435f100000000,
+ 0x8b47693a00000000, 0x2535fdbc00000000, 0x80e6a17700000000,
+ 0x38d6a46a00000000, 0x9d05f8a100000000, 0x33776c2700000000,
+ 0x96a430ec00000000, 0xee111c1900000000, 0x4bc240d200000000,
+ 0xe5b0d45400000000, 0x4063889f00000000, 0xf8538d8200000000,
+ 0x5d80d14900000000, 0xf3f245cf00000000, 0x5621190400000000,
+ 0x83934ff500000000, 0x2640133e00000000, 0x883287b800000000,
+ 0x2de1db7300000000, 0x95d1de6e00000000, 0x300282a500000000,
+ 0x9e70162300000000, 0x3ba34ae800000000, 0x7513ca1a00000000,
+ 0xd0c096d100000000, 0x7eb2025700000000, 0xdb615e9c00000000,
+ 0x63515b8100000000, 0xc682074a00000000, 0x68f093cc00000000,
+ 0xcd23cf0700000000, 0x189199f600000000, 0xbd42c53d00000000,
+ 0x133051bb00000000, 0xb6e30d7000000000, 0x0ed3086d00000000,
+ 0xab0054a600000000, 0x0572c02000000000, 0xa0a19ceb00000000,
+ 0xb41ee81100000000, 0x11cdb4da00000000, 0xbfbf205c00000000,
+ 0x1a6c7c9700000000, 0xa25c798a00000000, 0x078f254100000000,
+ 0xa9fdb1c700000000, 0x0c2eed0c00000000, 0xd99cbbfd00000000,
+ 0x7c4fe73600000000, 0xd23d73b000000000, 0x77ee2f7b00000000,
+ 0xcfde2a6600000000, 0x6a0d76ad00000000, 0xc47fe22b00000000,
+ 0x61acbee000000000, 0x2f1c3e1200000000, 0x8acf62d900000000,
+ 0x24bdf65f00000000, 0x816eaa9400000000, 0x395eaf8900000000,
+ 0x9c8df34200000000, 0x32ff67c400000000, 0x972c3b0f00000000,
+ 0x429e6dfe00000000, 0xe74d313500000000, 0x493fa5b300000000,
+ 0xececf97800000000, 0x54dcfc6500000000, 0xf10fa0ae00000000,
+ 0x5f7d342800000000, 0xfaae68e300000000, 0x821b441600000000,
+ 0x27c818dd00000000, 0x89ba8c5b00000000, 0x2c69d09000000000,
+ 0x9459d58d00000000, 0x318a894600000000, 0x9ff81dc000000000,
+ 0x3a2b410b00000000, 0xef9917fa00000000, 0x4a4a4b3100000000,
+ 0xe438dfb700000000, 0x41eb837c00000000, 0xf9db866100000000,
+ 0x5c08daaa00000000, 0xf27a4e2c00000000, 0x57a912e700000000,
+ 0x1919921500000000, 0xbccacede00000000, 0x12b85a5800000000,
+ 0xb76b069300000000, 0x0f5b038e00000000, 0xaa885f4500000000,
+ 0x04facbc300000000, 0xa129970800000000, 0x749bc1f900000000,
+ 0xd1489d3200000000, 0x7f3a09b400000000, 0xdae9557f00000000,
+ 0x62d9506200000000, 0xc70a0ca900000000, 0x6978982f00000000,
+ 0xccabc4e400000000},
+ {0x0000000000000000, 0xb40b77a600000000, 0x29119f9700000000,
+ 0x9d1ae83100000000, 0x13244ff400000000, 0xa72f385200000000,
+ 0x3a35d06300000000, 0x8e3ea7c500000000, 0x674eef3300000000,
+ 0xd345989500000000, 0x4e5f70a400000000, 0xfa54070200000000,
+ 0x746aa0c700000000, 0xc061d76100000000, 0x5d7b3f5000000000,
+ 0xe97048f600000000, 0xce9cde6700000000, 0x7a97a9c100000000,
+ 0xe78d41f000000000, 0x5386365600000000, 0xddb8919300000000,
+ 0x69b3e63500000000, 0xf4a90e0400000000, 0x40a279a200000000,
+ 0xa9d2315400000000, 0x1dd946f200000000, 0x80c3aec300000000,
+ 0x34c8d96500000000, 0xbaf67ea000000000, 0x0efd090600000000,
+ 0x93e7e13700000000, 0x27ec969100000000, 0x9c39bdcf00000000,
+ 0x2832ca6900000000, 0xb528225800000000, 0x012355fe00000000,
+ 0x8f1df23b00000000, 0x3b16859d00000000, 0xa60c6dac00000000,
+ 0x12071a0a00000000, 0xfb7752fc00000000, 0x4f7c255a00000000,
+ 0xd266cd6b00000000, 0x666dbacd00000000, 0xe8531d0800000000,
+ 0x5c586aae00000000, 0xc142829f00000000, 0x7549f53900000000,
+ 0x52a563a800000000, 0xe6ae140e00000000, 0x7bb4fc3f00000000,
+ 0xcfbf8b9900000000, 0x41812c5c00000000, 0xf58a5bfa00000000,
+ 0x6890b3cb00000000, 0xdc9bc46d00000000, 0x35eb8c9b00000000,
+ 0x81e0fb3d00000000, 0x1cfa130c00000000, 0xa8f164aa00000000,
+ 0x26cfc36f00000000, 0x92c4b4c900000000, 0x0fde5cf800000000,
+ 0xbbd52b5e00000000, 0x79750b4400000000, 0xcd7e7ce200000000,
+ 0x506494d300000000, 0xe46fe37500000000, 0x6a5144b000000000,
+ 0xde5a331600000000, 0x4340db2700000000, 0xf74bac8100000000,
+ 0x1e3be47700000000, 0xaa3093d100000000, 0x372a7be000000000,
+ 0x83210c4600000000, 0x0d1fab8300000000, 0xb914dc2500000000,
+ 0x240e341400000000, 0x900543b200000000, 0xb7e9d52300000000,
+ 0x03e2a28500000000, 0x9ef84ab400000000, 0x2af33d1200000000,
+ 0xa4cd9ad700000000, 0x10c6ed7100000000, 0x8ddc054000000000,
+ 0x39d772e600000000, 0xd0a73a1000000000, 0x64ac4db600000000,
+ 0xf9b6a58700000000, 0x4dbdd22100000000, 0xc38375e400000000,
+ 0x7788024200000000, 0xea92ea7300000000, 0x5e999dd500000000,
+ 0xe54cb68b00000000, 0x5147c12d00000000, 0xcc5d291c00000000,
+ 0x78565eba00000000, 0xf668f97f00000000, 0x42638ed900000000,
+ 0xdf7966e800000000, 0x6b72114e00000000, 0x820259b800000000,
+ 0x36092e1e00000000, 0xab13c62f00000000, 0x1f18b18900000000,
+ 0x9126164c00000000, 0x252d61ea00000000, 0xb83789db00000000,
+ 0x0c3cfe7d00000000, 0x2bd068ec00000000, 0x9fdb1f4a00000000,
+ 0x02c1f77b00000000, 0xb6ca80dd00000000, 0x38f4271800000000,
+ 0x8cff50be00000000, 0x11e5b88f00000000, 0xa5eecf2900000000,
+ 0x4c9e87df00000000, 0xf895f07900000000, 0x658f184800000000,
+ 0xd1846fee00000000, 0x5fbac82b00000000, 0xebb1bf8d00000000,
+ 0x76ab57bc00000000, 0xc2a0201a00000000, 0xf2ea168800000000,
+ 0x46e1612e00000000, 0xdbfb891f00000000, 0x6ff0feb900000000,
+ 0xe1ce597c00000000, 0x55c52eda00000000, 0xc8dfc6eb00000000,
+ 0x7cd4b14d00000000, 0x95a4f9bb00000000, 0x21af8e1d00000000,
+ 0xbcb5662c00000000, 0x08be118a00000000, 0x8680b64f00000000,
+ 0x328bc1e900000000, 0xaf9129d800000000, 0x1b9a5e7e00000000,
+ 0x3c76c8ef00000000, 0x887dbf4900000000, 0x1567577800000000,
+ 0xa16c20de00000000, 0x2f52871b00000000, 0x9b59f0bd00000000,
+ 0x0643188c00000000, 0xb2486f2a00000000, 0x5b3827dc00000000,
+ 0xef33507a00000000, 0x7229b84b00000000, 0xc622cfed00000000,
+ 0x481c682800000000, 0xfc171f8e00000000, 0x610df7bf00000000,
+ 0xd506801900000000, 0x6ed3ab4700000000, 0xdad8dce100000000,
+ 0x47c234d000000000, 0xf3c9437600000000, 0x7df7e4b300000000,
+ 0xc9fc931500000000, 0x54e67b2400000000, 0xe0ed0c8200000000,
+ 0x099d447400000000, 0xbd9633d200000000, 0x208cdbe300000000,
+ 0x9487ac4500000000, 0x1ab90b8000000000, 0xaeb27c2600000000,
+ 0x33a8941700000000, 0x87a3e3b100000000, 0xa04f752000000000,
+ 0x1444028600000000, 0x895eeab700000000, 0x3d559d1100000000,
+ 0xb36b3ad400000000, 0x07604d7200000000, 0x9a7aa54300000000,
+ 0x2e71d2e500000000, 0xc7019a1300000000, 0x730aedb500000000,
+ 0xee10058400000000, 0x5a1b722200000000, 0xd425d5e700000000,
+ 0x602ea24100000000, 0xfd344a7000000000, 0x493f3dd600000000,
+ 0x8b9f1dcc00000000, 0x3f946a6a00000000, 0xa28e825b00000000,
+ 0x1685f5fd00000000, 0x98bb523800000000, 0x2cb0259e00000000,
+ 0xb1aacdaf00000000, 0x05a1ba0900000000, 0xecd1f2ff00000000,
+ 0x58da855900000000, 0xc5c06d6800000000, 0x71cb1ace00000000,
+ 0xfff5bd0b00000000, 0x4bfecaad00000000, 0xd6e4229c00000000,
+ 0x62ef553a00000000, 0x4503c3ab00000000, 0xf108b40d00000000,
+ 0x6c125c3c00000000, 0xd8192b9a00000000, 0x56278c5f00000000,
+ 0xe22cfbf900000000, 0x7f3613c800000000, 0xcb3d646e00000000,
+ 0x224d2c9800000000, 0x96465b3e00000000, 0x0b5cb30f00000000,
+ 0xbf57c4a900000000, 0x3169636c00000000, 0x856214ca00000000,
+ 0x1878fcfb00000000, 0xac738b5d00000000, 0x17a6a00300000000,
+ 0xa3add7a500000000, 0x3eb73f9400000000, 0x8abc483200000000,
+ 0x0482eff700000000, 0xb089985100000000, 0x2d93706000000000,
+ 0x999807c600000000, 0x70e84f3000000000, 0xc4e3389600000000,
+ 0x59f9d0a700000000, 0xedf2a70100000000, 0x63cc00c400000000,
+ 0xd7c7776200000000, 0x4add9f5300000000, 0xfed6e8f500000000,
+ 0xd93a7e6400000000, 0x6d3109c200000000, 0xf02be1f300000000,
+ 0x4420965500000000, 0xca1e319000000000, 0x7e15463600000000,
+ 0xe30fae0700000000, 0x5704d9a100000000, 0xbe74915700000000,
+ 0x0a7fe6f100000000, 0x97650ec000000000, 0x236e796600000000,
+ 0xad50dea300000000, 0x195ba90500000000, 0x8441413400000000,
+ 0x304a369200000000},
+ {0x0000000000000000, 0x9e00aacc00000000, 0x7d07254200000000,
+ 0xe3078f8e00000000, 0xfa0e4a8400000000, 0x640ee04800000000,
+ 0x87096fc600000000, 0x1909c50a00000000, 0xb51be5d300000000,
+ 0x2b1b4f1f00000000, 0xc81cc09100000000, 0x561c6a5d00000000,
+ 0x4f15af5700000000, 0xd115059b00000000, 0x32128a1500000000,
+ 0xac1220d900000000, 0x2b31bb7c00000000, 0xb53111b000000000,
+ 0x56369e3e00000000, 0xc83634f200000000, 0xd13ff1f800000000,
+ 0x4f3f5b3400000000, 0xac38d4ba00000000, 0x32387e7600000000,
+ 0x9e2a5eaf00000000, 0x002af46300000000, 0xe32d7bed00000000,
+ 0x7d2dd12100000000, 0x6424142b00000000, 0xfa24bee700000000,
+ 0x1923316900000000, 0x87239ba500000000, 0x566276f900000000,
+ 0xc862dc3500000000, 0x2b6553bb00000000, 0xb565f97700000000,
+ 0xac6c3c7d00000000, 0x326c96b100000000, 0xd16b193f00000000,
+ 0x4f6bb3f300000000, 0xe379932a00000000, 0x7d7939e600000000,
+ 0x9e7eb66800000000, 0x007e1ca400000000, 0x1977d9ae00000000,
+ 0x8777736200000000, 0x6470fcec00000000, 0xfa70562000000000,
+ 0x7d53cd8500000000, 0xe353674900000000, 0x0054e8c700000000,
+ 0x9e54420b00000000, 0x875d870100000000, 0x195d2dcd00000000,
+ 0xfa5aa24300000000, 0x645a088f00000000, 0xc848285600000000,
+ 0x5648829a00000000, 0xb54f0d1400000000, 0x2b4fa7d800000000,
+ 0x324662d200000000, 0xac46c81e00000000, 0x4f41479000000000,
+ 0xd141ed5c00000000, 0xedc29d2900000000, 0x73c237e500000000,
+ 0x90c5b86b00000000, 0x0ec512a700000000, 0x17ccd7ad00000000,
+ 0x89cc7d6100000000, 0x6acbf2ef00000000, 0xf4cb582300000000,
+ 0x58d978fa00000000, 0xc6d9d23600000000, 0x25de5db800000000,
+ 0xbbdef77400000000, 0xa2d7327e00000000, 0x3cd798b200000000,
+ 0xdfd0173c00000000, 0x41d0bdf000000000, 0xc6f3265500000000,
+ 0x58f38c9900000000, 0xbbf4031700000000, 0x25f4a9db00000000,
+ 0x3cfd6cd100000000, 0xa2fdc61d00000000, 0x41fa499300000000,
+ 0xdffae35f00000000, 0x73e8c38600000000, 0xede8694a00000000,
+ 0x0eefe6c400000000, 0x90ef4c0800000000, 0x89e6890200000000,
+ 0x17e623ce00000000, 0xf4e1ac4000000000, 0x6ae1068c00000000,
+ 0xbba0ebd000000000, 0x25a0411c00000000, 0xc6a7ce9200000000,
+ 0x58a7645e00000000, 0x41aea15400000000, 0xdfae0b9800000000,
+ 0x3ca9841600000000, 0xa2a92eda00000000, 0x0ebb0e0300000000,
+ 0x90bba4cf00000000, 0x73bc2b4100000000, 0xedbc818d00000000,
+ 0xf4b5448700000000, 0x6ab5ee4b00000000, 0x89b261c500000000,
+ 0x17b2cb0900000000, 0x909150ac00000000, 0x0e91fa6000000000,
+ 0xed9675ee00000000, 0x7396df2200000000, 0x6a9f1a2800000000,
+ 0xf49fb0e400000000, 0x17983f6a00000000, 0x899895a600000000,
+ 0x258ab57f00000000, 0xbb8a1fb300000000, 0x588d903d00000000,
+ 0xc68d3af100000000, 0xdf84fffb00000000, 0x4184553700000000,
+ 0xa283dab900000000, 0x3c83707500000000, 0xda853b5300000000,
+ 0x4485919f00000000, 0xa7821e1100000000, 0x3982b4dd00000000,
+ 0x208b71d700000000, 0xbe8bdb1b00000000, 0x5d8c549500000000,
+ 0xc38cfe5900000000, 0x6f9ede8000000000, 0xf19e744c00000000,
+ 0x1299fbc200000000, 0x8c99510e00000000, 0x9590940400000000,
+ 0x0b903ec800000000, 0xe897b14600000000, 0x76971b8a00000000,
+ 0xf1b4802f00000000, 0x6fb42ae300000000, 0x8cb3a56d00000000,
+ 0x12b30fa100000000, 0x0bbacaab00000000, 0x95ba606700000000,
+ 0x76bdefe900000000, 0xe8bd452500000000, 0x44af65fc00000000,
+ 0xdaafcf3000000000, 0x39a840be00000000, 0xa7a8ea7200000000,
+ 0xbea12f7800000000, 0x20a185b400000000, 0xc3a60a3a00000000,
+ 0x5da6a0f600000000, 0x8ce74daa00000000, 0x12e7e76600000000,
+ 0xf1e068e800000000, 0x6fe0c22400000000, 0x76e9072e00000000,
+ 0xe8e9ade200000000, 0x0bee226c00000000, 0x95ee88a000000000,
+ 0x39fca87900000000, 0xa7fc02b500000000, 0x44fb8d3b00000000,
+ 0xdafb27f700000000, 0xc3f2e2fd00000000, 0x5df2483100000000,
+ 0xbef5c7bf00000000, 0x20f56d7300000000, 0xa7d6f6d600000000,
+ 0x39d65c1a00000000, 0xdad1d39400000000, 0x44d1795800000000,
+ 0x5dd8bc5200000000, 0xc3d8169e00000000, 0x20df991000000000,
+ 0xbedf33dc00000000, 0x12cd130500000000, 0x8ccdb9c900000000,
+ 0x6fca364700000000, 0xf1ca9c8b00000000, 0xe8c3598100000000,
+ 0x76c3f34d00000000, 0x95c47cc300000000, 0x0bc4d60f00000000,
+ 0x3747a67a00000000, 0xa9470cb600000000, 0x4a40833800000000,
+ 0xd44029f400000000, 0xcd49ecfe00000000, 0x5349463200000000,
+ 0xb04ec9bc00000000, 0x2e4e637000000000, 0x825c43a900000000,
+ 0x1c5ce96500000000, 0xff5b66eb00000000, 0x615bcc2700000000,
+ 0x7852092d00000000, 0xe652a3e100000000, 0x05552c6f00000000,
+ 0x9b5586a300000000, 0x1c761d0600000000, 0x8276b7ca00000000,
+ 0x6171384400000000, 0xff71928800000000, 0xe678578200000000,
+ 0x7878fd4e00000000, 0x9b7f72c000000000, 0x057fd80c00000000,
+ 0xa96df8d500000000, 0x376d521900000000, 0xd46add9700000000,
+ 0x4a6a775b00000000, 0x5363b25100000000, 0xcd63189d00000000,
+ 0x2e64971300000000, 0xb0643ddf00000000, 0x6125d08300000000,
+ 0xff257a4f00000000, 0x1c22f5c100000000, 0x82225f0d00000000,
+ 0x9b2b9a0700000000, 0x052b30cb00000000, 0xe62cbf4500000000,
+ 0x782c158900000000, 0xd43e355000000000, 0x4a3e9f9c00000000,
+ 0xa939101200000000, 0x3739bade00000000, 0x2e307fd400000000,
+ 0xb030d51800000000, 0x53375a9600000000, 0xcd37f05a00000000,
+ 0x4a146bff00000000, 0xd414c13300000000, 0x37134ebd00000000,
+ 0xa913e47100000000, 0xb01a217b00000000, 0x2e1a8bb700000000,
+ 0xcd1d043900000000, 0x531daef500000000, 0xff0f8e2c00000000,
+ 0x610f24e000000000, 0x8208ab6e00000000, 0x1c0801a200000000,
+ 0x0501c4a800000000, 0x9b016e6400000000, 0x7806e1ea00000000,
+ 0xe6064b2600000000}};
+
+#else /* W == 4 */
+
+local const z_crc_t FAR crc_braid_table[][256] = {
+ {0x00000000, 0xb8bc6765, 0xaa09c88b, 0x12b5afee, 0x8f629757,
+ 0x37def032, 0x256b5fdc, 0x9dd738b9, 0xc5b428ef, 0x7d084f8a,
+ 0x6fbde064, 0xd7018701, 0x4ad6bfb8, 0xf26ad8dd, 0xe0df7733,
+ 0x58631056, 0x5019579f, 0xe8a530fa, 0xfa109f14, 0x42acf871,
+ 0xdf7bc0c8, 0x67c7a7ad, 0x75720843, 0xcdce6f26, 0x95ad7f70,
+ 0x2d111815, 0x3fa4b7fb, 0x8718d09e, 0x1acfe827, 0xa2738f42,
+ 0xb0c620ac, 0x087a47c9, 0xa032af3e, 0x188ec85b, 0x0a3b67b5,
+ 0xb28700d0, 0x2f503869, 0x97ec5f0c, 0x8559f0e2, 0x3de59787,
+ 0x658687d1, 0xdd3ae0b4, 0xcf8f4f5a, 0x7733283f, 0xeae41086,
+ 0x525877e3, 0x40edd80d, 0xf851bf68, 0xf02bf8a1, 0x48979fc4,
+ 0x5a22302a, 0xe29e574f, 0x7f496ff6, 0xc7f50893, 0xd540a77d,
+ 0x6dfcc018, 0x359fd04e, 0x8d23b72b, 0x9f9618c5, 0x272a7fa0,
+ 0xbafd4719, 0x0241207c, 0x10f48f92, 0xa848e8f7, 0x9b14583d,
+ 0x23a83f58, 0x311d90b6, 0x89a1f7d3, 0x1476cf6a, 0xaccaa80f,
+ 0xbe7f07e1, 0x06c36084, 0x5ea070d2, 0xe61c17b7, 0xf4a9b859,
+ 0x4c15df3c, 0xd1c2e785, 0x697e80e0, 0x7bcb2f0e, 0xc377486b,
+ 0xcb0d0fa2, 0x73b168c7, 0x6104c729, 0xd9b8a04c, 0x446f98f5,
+ 0xfcd3ff90, 0xee66507e, 0x56da371b, 0x0eb9274d, 0xb6054028,
+ 0xa4b0efc6, 0x1c0c88a3, 0x81dbb01a, 0x3967d77f, 0x2bd27891,
+ 0x936e1ff4, 0x3b26f703, 0x839a9066, 0x912f3f88, 0x299358ed,
+ 0xb4446054, 0x0cf80731, 0x1e4da8df, 0xa6f1cfba, 0xfe92dfec,
+ 0x462eb889, 0x549b1767, 0xec277002, 0x71f048bb, 0xc94c2fde,
+ 0xdbf98030, 0x6345e755, 0x6b3fa09c, 0xd383c7f9, 0xc1366817,
+ 0x798a0f72, 0xe45d37cb, 0x5ce150ae, 0x4e54ff40, 0xf6e89825,
+ 0xae8b8873, 0x1637ef16, 0x048240f8, 0xbc3e279d, 0x21e91f24,
+ 0x99557841, 0x8be0d7af, 0x335cb0ca, 0xed59b63b, 0x55e5d15e,
+ 0x47507eb0, 0xffec19d5, 0x623b216c, 0xda874609, 0xc832e9e7,
+ 0x708e8e82, 0x28ed9ed4, 0x9051f9b1, 0x82e4565f, 0x3a58313a,
+ 0xa78f0983, 0x1f336ee6, 0x0d86c108, 0xb53aa66d, 0xbd40e1a4,
+ 0x05fc86c1, 0x1749292f, 0xaff54e4a, 0x322276f3, 0x8a9e1196,
+ 0x982bbe78, 0x2097d91d, 0x78f4c94b, 0xc048ae2e, 0xd2fd01c0,
+ 0x6a4166a5, 0xf7965e1c, 0x4f2a3979, 0x5d9f9697, 0xe523f1f2,
+ 0x4d6b1905, 0xf5d77e60, 0xe762d18e, 0x5fdeb6eb, 0xc2098e52,
+ 0x7ab5e937, 0x680046d9, 0xd0bc21bc, 0x88df31ea, 0x3063568f,
+ 0x22d6f961, 0x9a6a9e04, 0x07bda6bd, 0xbf01c1d8, 0xadb46e36,
+ 0x15080953, 0x1d724e9a, 0xa5ce29ff, 0xb77b8611, 0x0fc7e174,
+ 0x9210d9cd, 0x2aacbea8, 0x38191146, 0x80a57623, 0xd8c66675,
+ 0x607a0110, 0x72cfaefe, 0xca73c99b, 0x57a4f122, 0xef189647,
+ 0xfdad39a9, 0x45115ecc, 0x764dee06, 0xcef18963, 0xdc44268d,
+ 0x64f841e8, 0xf92f7951, 0x41931e34, 0x5326b1da, 0xeb9ad6bf,
+ 0xb3f9c6e9, 0x0b45a18c, 0x19f00e62, 0xa14c6907, 0x3c9b51be,
+ 0x842736db, 0x96929935, 0x2e2efe50, 0x2654b999, 0x9ee8defc,
+ 0x8c5d7112, 0x34e11677, 0xa9362ece, 0x118a49ab, 0x033fe645,
+ 0xbb838120, 0xe3e09176, 0x5b5cf613, 0x49e959fd, 0xf1553e98,
+ 0x6c820621, 0xd43e6144, 0xc68bceaa, 0x7e37a9cf, 0xd67f4138,
+ 0x6ec3265d, 0x7c7689b3, 0xc4caeed6, 0x591dd66f, 0xe1a1b10a,
+ 0xf3141ee4, 0x4ba87981, 0x13cb69d7, 0xab770eb2, 0xb9c2a15c,
+ 0x017ec639, 0x9ca9fe80, 0x241599e5, 0x36a0360b, 0x8e1c516e,
+ 0x866616a7, 0x3eda71c2, 0x2c6fde2c, 0x94d3b949, 0x090481f0,
+ 0xb1b8e695, 0xa30d497b, 0x1bb12e1e, 0x43d23e48, 0xfb6e592d,
+ 0xe9dbf6c3, 0x516791a6, 0xccb0a91f, 0x740cce7a, 0x66b96194,
+ 0xde0506f1},
+ {0x00000000, 0x01c26a37, 0x0384d46e, 0x0246be59, 0x0709a8dc,
+ 0x06cbc2eb, 0x048d7cb2, 0x054f1685, 0x0e1351b8, 0x0fd13b8f,
+ 0x0d9785d6, 0x0c55efe1, 0x091af964, 0x08d89353, 0x0a9e2d0a,
+ 0x0b5c473d, 0x1c26a370, 0x1de4c947, 0x1fa2771e, 0x1e601d29,
+ 0x1b2f0bac, 0x1aed619b, 0x18abdfc2, 0x1969b5f5, 0x1235f2c8,
+ 0x13f798ff, 0x11b126a6, 0x10734c91, 0x153c5a14, 0x14fe3023,
+ 0x16b88e7a, 0x177ae44d, 0x384d46e0, 0x398f2cd7, 0x3bc9928e,
+ 0x3a0bf8b9, 0x3f44ee3c, 0x3e86840b, 0x3cc03a52, 0x3d025065,
+ 0x365e1758, 0x379c7d6f, 0x35dac336, 0x3418a901, 0x3157bf84,
+ 0x3095d5b3, 0x32d36bea, 0x331101dd, 0x246be590, 0x25a98fa7,
+ 0x27ef31fe, 0x262d5bc9, 0x23624d4c, 0x22a0277b, 0x20e69922,
+ 0x2124f315, 0x2a78b428, 0x2bbade1f, 0x29fc6046, 0x283e0a71,
+ 0x2d711cf4, 0x2cb376c3, 0x2ef5c89a, 0x2f37a2ad, 0x709a8dc0,
+ 0x7158e7f7, 0x731e59ae, 0x72dc3399, 0x7793251c, 0x76514f2b,
+ 0x7417f172, 0x75d59b45, 0x7e89dc78, 0x7f4bb64f, 0x7d0d0816,
+ 0x7ccf6221, 0x798074a4, 0x78421e93, 0x7a04a0ca, 0x7bc6cafd,
+ 0x6cbc2eb0, 0x6d7e4487, 0x6f38fade, 0x6efa90e9, 0x6bb5866c,
+ 0x6a77ec5b, 0x68315202, 0x69f33835, 0x62af7f08, 0x636d153f,
+ 0x612bab66, 0x60e9c151, 0x65a6d7d4, 0x6464bde3, 0x662203ba,
+ 0x67e0698d, 0x48d7cb20, 0x4915a117, 0x4b531f4e, 0x4a917579,
+ 0x4fde63fc, 0x4e1c09cb, 0x4c5ab792, 0x4d98dda5, 0x46c49a98,
+ 0x4706f0af, 0x45404ef6, 0x448224c1, 0x41cd3244, 0x400f5873,
+ 0x4249e62a, 0x438b8c1d, 0x54f16850, 0x55330267, 0x5775bc3e,
+ 0x56b7d609, 0x53f8c08c, 0x523aaabb, 0x507c14e2, 0x51be7ed5,
+ 0x5ae239e8, 0x5b2053df, 0x5966ed86, 0x58a487b1, 0x5deb9134,
+ 0x5c29fb03, 0x5e6f455a, 0x5fad2f6d, 0xe1351b80, 0xe0f771b7,
+ 0xe2b1cfee, 0xe373a5d9, 0xe63cb35c, 0xe7fed96b, 0xe5b86732,
+ 0xe47a0d05, 0xef264a38, 0xeee4200f, 0xeca29e56, 0xed60f461,
+ 0xe82fe2e4, 0xe9ed88d3, 0xebab368a, 0xea695cbd, 0xfd13b8f0,
+ 0xfcd1d2c7, 0xfe976c9e, 0xff5506a9, 0xfa1a102c, 0xfbd87a1b,
+ 0xf99ec442, 0xf85cae75, 0xf300e948, 0xf2c2837f, 0xf0843d26,
+ 0xf1465711, 0xf4094194, 0xf5cb2ba3, 0xf78d95fa, 0xf64fffcd,
+ 0xd9785d60, 0xd8ba3757, 0xdafc890e, 0xdb3ee339, 0xde71f5bc,
+ 0xdfb39f8b, 0xddf521d2, 0xdc374be5, 0xd76b0cd8, 0xd6a966ef,
+ 0xd4efd8b6, 0xd52db281, 0xd062a404, 0xd1a0ce33, 0xd3e6706a,
+ 0xd2241a5d, 0xc55efe10, 0xc49c9427, 0xc6da2a7e, 0xc7184049,
+ 0xc25756cc, 0xc3953cfb, 0xc1d382a2, 0xc011e895, 0xcb4dafa8,
+ 0xca8fc59f, 0xc8c97bc6, 0xc90b11f1, 0xcc440774, 0xcd866d43,
+ 0xcfc0d31a, 0xce02b92d, 0x91af9640, 0x906dfc77, 0x922b422e,
+ 0x93e92819, 0x96a63e9c, 0x976454ab, 0x9522eaf2, 0x94e080c5,
+ 0x9fbcc7f8, 0x9e7eadcf, 0x9c381396, 0x9dfa79a1, 0x98b56f24,
+ 0x99770513, 0x9b31bb4a, 0x9af3d17d, 0x8d893530, 0x8c4b5f07,
+ 0x8e0de15e, 0x8fcf8b69, 0x8a809dec, 0x8b42f7db, 0x89044982,
+ 0x88c623b5, 0x839a6488, 0x82580ebf, 0x801eb0e6, 0x81dcdad1,
+ 0x8493cc54, 0x8551a663, 0x8717183a, 0x86d5720d, 0xa9e2d0a0,
+ 0xa820ba97, 0xaa6604ce, 0xaba46ef9, 0xaeeb787c, 0xaf29124b,
+ 0xad6fac12, 0xacadc625, 0xa7f18118, 0xa633eb2f, 0xa4755576,
+ 0xa5b73f41, 0xa0f829c4, 0xa13a43f3, 0xa37cfdaa, 0xa2be979d,
+ 0xb5c473d0, 0xb40619e7, 0xb640a7be, 0xb782cd89, 0xb2cddb0c,
+ 0xb30fb13b, 0xb1490f62, 0xb08b6555, 0xbbd72268, 0xba15485f,
+ 0xb853f606, 0xb9919c31, 0xbcde8ab4, 0xbd1ce083, 0xbf5a5eda,
+ 0xbe9834ed},
+ {0x00000000, 0x191b3141, 0x32366282, 0x2b2d53c3, 0x646cc504,
+ 0x7d77f445, 0x565aa786, 0x4f4196c7, 0xc8d98a08, 0xd1c2bb49,
+ 0xfaefe88a, 0xe3f4d9cb, 0xacb54f0c, 0xb5ae7e4d, 0x9e832d8e,
+ 0x87981ccf, 0x4ac21251, 0x53d92310, 0x78f470d3, 0x61ef4192,
+ 0x2eaed755, 0x37b5e614, 0x1c98b5d7, 0x05838496, 0x821b9859,
+ 0x9b00a918, 0xb02dfadb, 0xa936cb9a, 0xe6775d5d, 0xff6c6c1c,
+ 0xd4413fdf, 0xcd5a0e9e, 0x958424a2, 0x8c9f15e3, 0xa7b24620,
+ 0xbea97761, 0xf1e8e1a6, 0xe8f3d0e7, 0xc3de8324, 0xdac5b265,
+ 0x5d5daeaa, 0x44469feb, 0x6f6bcc28, 0x7670fd69, 0x39316bae,
+ 0x202a5aef, 0x0b07092c, 0x121c386d, 0xdf4636f3, 0xc65d07b2,
+ 0xed705471, 0xf46b6530, 0xbb2af3f7, 0xa231c2b6, 0x891c9175,
+ 0x9007a034, 0x179fbcfb, 0x0e848dba, 0x25a9de79, 0x3cb2ef38,
+ 0x73f379ff, 0x6ae848be, 0x41c51b7d, 0x58de2a3c, 0xf0794f05,
+ 0xe9627e44, 0xc24f2d87, 0xdb541cc6, 0x94158a01, 0x8d0ebb40,
+ 0xa623e883, 0xbf38d9c2, 0x38a0c50d, 0x21bbf44c, 0x0a96a78f,
+ 0x138d96ce, 0x5ccc0009, 0x45d73148, 0x6efa628b, 0x77e153ca,
+ 0xbabb5d54, 0xa3a06c15, 0x888d3fd6, 0x91960e97, 0xded79850,
+ 0xc7cca911, 0xece1fad2, 0xf5facb93, 0x7262d75c, 0x6b79e61d,
+ 0x4054b5de, 0x594f849f, 0x160e1258, 0x0f152319, 0x243870da,
+ 0x3d23419b, 0x65fd6ba7, 0x7ce65ae6, 0x57cb0925, 0x4ed03864,
+ 0x0191aea3, 0x188a9fe2, 0x33a7cc21, 0x2abcfd60, 0xad24e1af,
+ 0xb43fd0ee, 0x9f12832d, 0x8609b26c, 0xc94824ab, 0xd05315ea,
+ 0xfb7e4629, 0xe2657768, 0x2f3f79f6, 0x362448b7, 0x1d091b74,
+ 0x04122a35, 0x4b53bcf2, 0x52488db3, 0x7965de70, 0x607eef31,
+ 0xe7e6f3fe, 0xfefdc2bf, 0xd5d0917c, 0xcccba03d, 0x838a36fa,
+ 0x9a9107bb, 0xb1bc5478, 0xa8a76539, 0x3b83984b, 0x2298a90a,
+ 0x09b5fac9, 0x10aecb88, 0x5fef5d4f, 0x46f46c0e, 0x6dd93fcd,
+ 0x74c20e8c, 0xf35a1243, 0xea412302, 0xc16c70c1, 0xd8774180,
+ 0x9736d747, 0x8e2de606, 0xa500b5c5, 0xbc1b8484, 0x71418a1a,
+ 0x685abb5b, 0x4377e898, 0x5a6cd9d9, 0x152d4f1e, 0x0c367e5f,
+ 0x271b2d9c, 0x3e001cdd, 0xb9980012, 0xa0833153, 0x8bae6290,
+ 0x92b553d1, 0xddf4c516, 0xc4eff457, 0xefc2a794, 0xf6d996d5,
+ 0xae07bce9, 0xb71c8da8, 0x9c31de6b, 0x852aef2a, 0xca6b79ed,
+ 0xd37048ac, 0xf85d1b6f, 0xe1462a2e, 0x66de36e1, 0x7fc507a0,
+ 0x54e85463, 0x4df36522, 0x02b2f3e5, 0x1ba9c2a4, 0x30849167,
+ 0x299fa026, 0xe4c5aeb8, 0xfdde9ff9, 0xd6f3cc3a, 0xcfe8fd7b,
+ 0x80a96bbc, 0x99b25afd, 0xb29f093e, 0xab84387f, 0x2c1c24b0,
+ 0x350715f1, 0x1e2a4632, 0x07317773, 0x4870e1b4, 0x516bd0f5,
+ 0x7a468336, 0x635db277, 0xcbfad74e, 0xd2e1e60f, 0xf9ccb5cc,
+ 0xe0d7848d, 0xaf96124a, 0xb68d230b, 0x9da070c8, 0x84bb4189,
+ 0x03235d46, 0x1a386c07, 0x31153fc4, 0x280e0e85, 0x674f9842,
+ 0x7e54a903, 0x5579fac0, 0x4c62cb81, 0x8138c51f, 0x9823f45e,
+ 0xb30ea79d, 0xaa1596dc, 0xe554001b, 0xfc4f315a, 0xd7626299,
+ 0xce7953d8, 0x49e14f17, 0x50fa7e56, 0x7bd72d95, 0x62cc1cd4,
+ 0x2d8d8a13, 0x3496bb52, 0x1fbbe891, 0x06a0d9d0, 0x5e7ef3ec,
+ 0x4765c2ad, 0x6c48916e, 0x7553a02f, 0x3a1236e8, 0x230907a9,
+ 0x0824546a, 0x113f652b, 0x96a779e4, 0x8fbc48a5, 0xa4911b66,
+ 0xbd8a2a27, 0xf2cbbce0, 0xebd08da1, 0xc0fdde62, 0xd9e6ef23,
+ 0x14bce1bd, 0x0da7d0fc, 0x268a833f, 0x3f91b27e, 0x70d024b9,
+ 0x69cb15f8, 0x42e6463b, 0x5bfd777a, 0xdc656bb5, 0xc57e5af4,
+ 0xee530937, 0xf7483876, 0xb809aeb1, 0xa1129ff0, 0x8a3fcc33,
+ 0x9324fd72},
+ {0x00000000, 0x77073096, 0xee0e612c, 0x990951ba, 0x076dc419,
+ 0x706af48f, 0xe963a535, 0x9e6495a3, 0x0edb8832, 0x79dcb8a4,
+ 0xe0d5e91e, 0x97d2d988, 0x09b64c2b, 0x7eb17cbd, 0xe7b82d07,
+ 0x90bf1d91, 0x1db71064, 0x6ab020f2, 0xf3b97148, 0x84be41de,
+ 0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7, 0x136c9856,
+ 0x646ba8c0, 0xfd62f97a, 0x8a65c9ec, 0x14015c4f, 0x63066cd9,
+ 0xfa0f3d63, 0x8d080df5, 0x3b6e20c8, 0x4c69105e, 0xd56041e4,
+ 0xa2677172, 0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b,
+ 0x35b5a8fa, 0x42b2986c, 0xdbbbc9d6, 0xacbcf940, 0x32d86ce3,
+ 0x45df5c75, 0xdcd60dcf, 0xabd13d59, 0x26d930ac, 0x51de003a,
+ 0xc8d75180, 0xbfd06116, 0x21b4f4b5, 0x56b3c423, 0xcfba9599,
+ 0xb8bda50f, 0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924,
+ 0x2f6f7c87, 0x58684c11, 0xc1611dab, 0xb6662d3d, 0x76dc4190,
+ 0x01db7106, 0x98d220bc, 0xefd5102a, 0x71b18589, 0x06b6b51f,
+ 0x9fbfe4a5, 0xe8b8d433, 0x7807c9a2, 0x0f00f934, 0x9609a88e,
+ 0xe10e9818, 0x7f6a0dbb, 0x086d3d2d, 0x91646c97, 0xe6635c01,
+ 0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e, 0x6c0695ed,
+ 0x1b01a57b, 0x8208f4c1, 0xf50fc457, 0x65b0d9c6, 0x12b7e950,
+ 0x8bbeb8ea, 0xfcb9887c, 0x62dd1ddf, 0x15da2d49, 0x8cd37cf3,
+ 0xfbd44c65, 0x4db26158, 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2,
+ 0x4adfa541, 0x3dd895d7, 0xa4d1c46d, 0xd3d6f4fb, 0x4369e96a,
+ 0x346ed9fc, 0xad678846, 0xda60b8d0, 0x44042d73, 0x33031de5,
+ 0xaa0a4c5f, 0xdd0d7cc9, 0x5005713c, 0x270241aa, 0xbe0b1010,
+ 0xc90c2086, 0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f,
+ 0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4, 0x59b33d17,
+ 0x2eb40d81, 0xb7bd5c3b, 0xc0ba6cad, 0xedb88320, 0x9abfb3b6,
+ 0x03b6e20c, 0x74b1d29a, 0xead54739, 0x9dd277af, 0x04db2615,
+ 0x73dc1683, 0xe3630b12, 0x94643b84, 0x0d6d6a3e, 0x7a6a5aa8,
+ 0xe40ecf0b, 0x9309ff9d, 0x0a00ae27, 0x7d079eb1, 0xf00f9344,
+ 0x8708a3d2, 0x1e01f268, 0x6906c2fe, 0xf762575d, 0x806567cb,
+ 0x196c3671, 0x6e6b06e7, 0xfed41b76, 0x89d32be0, 0x10da7a5a,
+ 0x67dd4acc, 0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5,
+ 0xd6d6a3e8, 0xa1d1937e, 0x38d8c2c4, 0x4fdff252, 0xd1bb67f1,
+ 0xa6bc5767, 0x3fb506dd, 0x48b2364b, 0xd80d2bda, 0xaf0a1b4c,
+ 0x36034af6, 0x41047a60, 0xdf60efc3, 0xa867df55, 0x316e8eef,
+ 0x4669be79, 0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236,
+ 0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f, 0xc5ba3bbe,
+ 0xb2bd0b28, 0x2bb45a92, 0x5cb36a04, 0xc2d7ffa7, 0xb5d0cf31,
+ 0x2cd99e8b, 0x5bdeae1d, 0x9b64c2b0, 0xec63f226, 0x756aa39c,
+ 0x026d930a, 0x9c0906a9, 0xeb0e363f, 0x72076785, 0x05005713,
+ 0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0x0cb61b38, 0x92d28e9b,
+ 0xe5d5be0d, 0x7cdcefb7, 0x0bdbdf21, 0x86d3d2d4, 0xf1d4e242,
+ 0x68ddb3f8, 0x1fda836e, 0x81be16cd, 0xf6b9265b, 0x6fb077e1,
+ 0x18b74777, 0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c,
+ 0x8f659eff, 0xf862ae69, 0x616bffd3, 0x166ccf45, 0xa00ae278,
+ 0xd70dd2ee, 0x4e048354, 0x3903b3c2, 0xa7672661, 0xd06016f7,
+ 0x4969474d, 0x3e6e77db, 0xaed16a4a, 0xd9d65adc, 0x40df0b66,
+ 0x37d83bf0, 0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9,
+ 0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6, 0xbad03605,
+ 0xcdd70693, 0x54de5729, 0x23d967bf, 0xb3667a2e, 0xc4614ab8,
+ 0x5d681b02, 0x2a6f2b94, 0xb40bbe37, 0xc30c8ea1, 0x5a05df1b,
+ 0x2d02ef8d}};
+
+local const z_word_t FAR crc_braid_big_table[][256] = {
+ {0x00000000, 0x96300777, 0x2c610eee, 0xba510999, 0x19c46d07,
+ 0x8ff46a70, 0x35a563e9, 0xa395649e, 0x3288db0e, 0xa4b8dc79,
+ 0x1ee9d5e0, 0x88d9d297, 0x2b4cb609, 0xbd7cb17e, 0x072db8e7,
+ 0x911dbf90, 0x6410b71d, 0xf220b06a, 0x4871b9f3, 0xde41be84,
+ 0x7dd4da1a, 0xebe4dd6d, 0x51b5d4f4, 0xc785d383, 0x56986c13,
+ 0xc0a86b64, 0x7af962fd, 0xecc9658a, 0x4f5c0114, 0xd96c0663,
+ 0x633d0ffa, 0xf50d088d, 0xc8206e3b, 0x5e10694c, 0xe44160d5,
+ 0x727167a2, 0xd1e4033c, 0x47d4044b, 0xfd850dd2, 0x6bb50aa5,
+ 0xfaa8b535, 0x6c98b242, 0xd6c9bbdb, 0x40f9bcac, 0xe36cd832,
+ 0x755cdf45, 0xcf0dd6dc, 0x593dd1ab, 0xac30d926, 0x3a00de51,
+ 0x8051d7c8, 0x1661d0bf, 0xb5f4b421, 0x23c4b356, 0x9995bacf,
+ 0x0fa5bdb8, 0x9eb80228, 0x0888055f, 0xb2d90cc6, 0x24e90bb1,
+ 0x877c6f2f, 0x114c6858, 0xab1d61c1, 0x3d2d66b6, 0x9041dc76,
+ 0x0671db01, 0xbc20d298, 0x2a10d5ef, 0x8985b171, 0x1fb5b606,
+ 0xa5e4bf9f, 0x33d4b8e8, 0xa2c90778, 0x34f9000f, 0x8ea80996,
+ 0x18980ee1, 0xbb0d6a7f, 0x2d3d6d08, 0x976c6491, 0x015c63e6,
+ 0xf4516b6b, 0x62616c1c, 0xd8306585, 0x4e0062f2, 0xed95066c,
+ 0x7ba5011b, 0xc1f40882, 0x57c40ff5, 0xc6d9b065, 0x50e9b712,
+ 0xeab8be8b, 0x7c88b9fc, 0xdf1ddd62, 0x492dda15, 0xf37cd38c,
+ 0x654cd4fb, 0x5861b24d, 0xce51b53a, 0x7400bca3, 0xe230bbd4,
+ 0x41a5df4a, 0xd795d83d, 0x6dc4d1a4, 0xfbf4d6d3, 0x6ae96943,
+ 0xfcd96e34, 0x468867ad, 0xd0b860da, 0x732d0444, 0xe51d0333,
+ 0x5f4c0aaa, 0xc97c0ddd, 0x3c710550, 0xaa410227, 0x10100bbe,
+ 0x86200cc9, 0x25b56857, 0xb3856f20, 0x09d466b9, 0x9fe461ce,
+ 0x0ef9de5e, 0x98c9d929, 0x2298d0b0, 0xb4a8d7c7, 0x173db359,
+ 0x810db42e, 0x3b5cbdb7, 0xad6cbac0, 0x2083b8ed, 0xb6b3bf9a,
+ 0x0ce2b603, 0x9ad2b174, 0x3947d5ea, 0xaf77d29d, 0x1526db04,
+ 0x8316dc73, 0x120b63e3, 0x843b6494, 0x3e6a6d0d, 0xa85a6a7a,
+ 0x0bcf0ee4, 0x9dff0993, 0x27ae000a, 0xb19e077d, 0x44930ff0,
+ 0xd2a30887, 0x68f2011e, 0xfec20669, 0x5d5762f7, 0xcb676580,
+ 0x71366c19, 0xe7066b6e, 0x761bd4fe, 0xe02bd389, 0x5a7ada10,
+ 0xcc4add67, 0x6fdfb9f9, 0xf9efbe8e, 0x43beb717, 0xd58eb060,
+ 0xe8a3d6d6, 0x7e93d1a1, 0xc4c2d838, 0x52f2df4f, 0xf167bbd1,
+ 0x6757bca6, 0xdd06b53f, 0x4b36b248, 0xda2b0dd8, 0x4c1b0aaf,
+ 0xf64a0336, 0x607a0441, 0xc3ef60df, 0x55df67a8, 0xef8e6e31,
+ 0x79be6946, 0x8cb361cb, 0x1a8366bc, 0xa0d26f25, 0x36e26852,
+ 0x95770ccc, 0x03470bbb, 0xb9160222, 0x2f260555, 0xbe3bbac5,
+ 0x280bbdb2, 0x925ab42b, 0x046ab35c, 0xa7ffd7c2, 0x31cfd0b5,
+ 0x8b9ed92c, 0x1daede5b, 0xb0c2649b, 0x26f263ec, 0x9ca36a75,
+ 0x0a936d02, 0xa906099c, 0x3f360eeb, 0x85670772, 0x13570005,
+ 0x824abf95, 0x147ab8e2, 0xae2bb17b, 0x381bb60c, 0x9b8ed292,
+ 0x0dbed5e5, 0xb7efdc7c, 0x21dfdb0b, 0xd4d2d386, 0x42e2d4f1,
+ 0xf8b3dd68, 0x6e83da1f, 0xcd16be81, 0x5b26b9f6, 0xe177b06f,
+ 0x7747b718, 0xe65a0888, 0x706a0fff, 0xca3b0666, 0x5c0b0111,
+ 0xff9e658f, 0x69ae62f8, 0xd3ff6b61, 0x45cf6c16, 0x78e20aa0,
+ 0xeed20dd7, 0x5483044e, 0xc2b30339, 0x612667a7, 0xf71660d0,
+ 0x4d476949, 0xdb776e3e, 0x4a6ad1ae, 0xdc5ad6d9, 0x660bdf40,
+ 0xf03bd837, 0x53aebca9, 0xc59ebbde, 0x7fcfb247, 0xe9ffb530,
+ 0x1cf2bdbd, 0x8ac2baca, 0x3093b353, 0xa6a3b424, 0x0536d0ba,
+ 0x9306d7cd, 0x2957de54, 0xbf67d923, 0x2e7a66b3, 0xb84a61c4,
+ 0x021b685d, 0x942b6f2a, 0x37be0bb4, 0xa18e0cc3, 0x1bdf055a,
+ 0x8def022d},
+ {0x00000000, 0x41311b19, 0x82623632, 0xc3532d2b, 0x04c56c64,
+ 0x45f4777d, 0x86a75a56, 0xc796414f, 0x088ad9c8, 0x49bbc2d1,
+ 0x8ae8effa, 0xcbd9f4e3, 0x0c4fb5ac, 0x4d7eaeb5, 0x8e2d839e,
+ 0xcf1c9887, 0x5112c24a, 0x1023d953, 0xd370f478, 0x9241ef61,
+ 0x55d7ae2e, 0x14e6b537, 0xd7b5981c, 0x96848305, 0x59981b82,
+ 0x18a9009b, 0xdbfa2db0, 0x9acb36a9, 0x5d5d77e6, 0x1c6c6cff,
+ 0xdf3f41d4, 0x9e0e5acd, 0xa2248495, 0xe3159f8c, 0x2046b2a7,
+ 0x6177a9be, 0xa6e1e8f1, 0xe7d0f3e8, 0x2483dec3, 0x65b2c5da,
+ 0xaaae5d5d, 0xeb9f4644, 0x28cc6b6f, 0x69fd7076, 0xae6b3139,
+ 0xef5a2a20, 0x2c09070b, 0x6d381c12, 0xf33646df, 0xb2075dc6,
+ 0x715470ed, 0x30656bf4, 0xf7f32abb, 0xb6c231a2, 0x75911c89,
+ 0x34a00790, 0xfbbc9f17, 0xba8d840e, 0x79dea925, 0x38efb23c,
+ 0xff79f373, 0xbe48e86a, 0x7d1bc541, 0x3c2ade58, 0x054f79f0,
+ 0x447e62e9, 0x872d4fc2, 0xc61c54db, 0x018a1594, 0x40bb0e8d,
+ 0x83e823a6, 0xc2d938bf, 0x0dc5a038, 0x4cf4bb21, 0x8fa7960a,
+ 0xce968d13, 0x0900cc5c, 0x4831d745, 0x8b62fa6e, 0xca53e177,
+ 0x545dbbba, 0x156ca0a3, 0xd63f8d88, 0x970e9691, 0x5098d7de,
+ 0x11a9ccc7, 0xd2fae1ec, 0x93cbfaf5, 0x5cd76272, 0x1de6796b,
+ 0xdeb55440, 0x9f844f59, 0x58120e16, 0x1923150f, 0xda703824,
+ 0x9b41233d, 0xa76bfd65, 0xe65ae67c, 0x2509cb57, 0x6438d04e,
+ 0xa3ae9101, 0xe29f8a18, 0x21cca733, 0x60fdbc2a, 0xafe124ad,
+ 0xeed03fb4, 0x2d83129f, 0x6cb20986, 0xab2448c9, 0xea1553d0,
+ 0x29467efb, 0x687765e2, 0xf6793f2f, 0xb7482436, 0x741b091d,
+ 0x352a1204, 0xf2bc534b, 0xb38d4852, 0x70de6579, 0x31ef7e60,
+ 0xfef3e6e7, 0xbfc2fdfe, 0x7c91d0d5, 0x3da0cbcc, 0xfa368a83,
+ 0xbb07919a, 0x7854bcb1, 0x3965a7a8, 0x4b98833b, 0x0aa99822,
+ 0xc9fab509, 0x88cbae10, 0x4f5def5f, 0x0e6cf446, 0xcd3fd96d,
+ 0x8c0ec274, 0x43125af3, 0x022341ea, 0xc1706cc1, 0x804177d8,
+ 0x47d73697, 0x06e62d8e, 0xc5b500a5, 0x84841bbc, 0x1a8a4171,
+ 0x5bbb5a68, 0x98e87743, 0xd9d96c5a, 0x1e4f2d15, 0x5f7e360c,
+ 0x9c2d1b27, 0xdd1c003e, 0x120098b9, 0x533183a0, 0x9062ae8b,
+ 0xd153b592, 0x16c5f4dd, 0x57f4efc4, 0x94a7c2ef, 0xd596d9f6,
+ 0xe9bc07ae, 0xa88d1cb7, 0x6bde319c, 0x2aef2a85, 0xed796bca,
+ 0xac4870d3, 0x6f1b5df8, 0x2e2a46e1, 0xe136de66, 0xa007c57f,
+ 0x6354e854, 0x2265f34d, 0xe5f3b202, 0xa4c2a91b, 0x67918430,
+ 0x26a09f29, 0xb8aec5e4, 0xf99fdefd, 0x3accf3d6, 0x7bfde8cf,
+ 0xbc6ba980, 0xfd5ab299, 0x3e099fb2, 0x7f3884ab, 0xb0241c2c,
+ 0xf1150735, 0x32462a1e, 0x73773107, 0xb4e17048, 0xf5d06b51,
+ 0x3683467a, 0x77b25d63, 0x4ed7facb, 0x0fe6e1d2, 0xccb5ccf9,
+ 0x8d84d7e0, 0x4a1296af, 0x0b238db6, 0xc870a09d, 0x8941bb84,
+ 0x465d2303, 0x076c381a, 0xc43f1531, 0x850e0e28, 0x42984f67,
+ 0x03a9547e, 0xc0fa7955, 0x81cb624c, 0x1fc53881, 0x5ef42398,
+ 0x9da70eb3, 0xdc9615aa, 0x1b0054e5, 0x5a314ffc, 0x996262d7,
+ 0xd85379ce, 0x174fe149, 0x567efa50, 0x952dd77b, 0xd41ccc62,
+ 0x138a8d2d, 0x52bb9634, 0x91e8bb1f, 0xd0d9a006, 0xecf37e5e,
+ 0xadc26547, 0x6e91486c, 0x2fa05375, 0xe836123a, 0xa9070923,
+ 0x6a542408, 0x2b653f11, 0xe479a796, 0xa548bc8f, 0x661b91a4,
+ 0x272a8abd, 0xe0bccbf2, 0xa18dd0eb, 0x62defdc0, 0x23efe6d9,
+ 0xbde1bc14, 0xfcd0a70d, 0x3f838a26, 0x7eb2913f, 0xb924d070,
+ 0xf815cb69, 0x3b46e642, 0x7a77fd5b, 0xb56b65dc, 0xf45a7ec5,
+ 0x370953ee, 0x763848f7, 0xb1ae09b8, 0xf09f12a1, 0x33cc3f8a,
+ 0x72fd2493},
+ {0x00000000, 0x376ac201, 0x6ed48403, 0x59be4602, 0xdca80907,
+ 0xebc2cb06, 0xb27c8d04, 0x85164f05, 0xb851130e, 0x8f3bd10f,
+ 0xd685970d, 0xe1ef550c, 0x64f91a09, 0x5393d808, 0x0a2d9e0a,
+ 0x3d475c0b, 0x70a3261c, 0x47c9e41d, 0x1e77a21f, 0x291d601e,
+ 0xac0b2f1b, 0x9b61ed1a, 0xc2dfab18, 0xf5b56919, 0xc8f23512,
+ 0xff98f713, 0xa626b111, 0x914c7310, 0x145a3c15, 0x2330fe14,
+ 0x7a8eb816, 0x4de47a17, 0xe0464d38, 0xd72c8f39, 0x8e92c93b,
+ 0xb9f80b3a, 0x3cee443f, 0x0b84863e, 0x523ac03c, 0x6550023d,
+ 0x58175e36, 0x6f7d9c37, 0x36c3da35, 0x01a91834, 0x84bf5731,
+ 0xb3d59530, 0xea6bd332, 0xdd011133, 0x90e56b24, 0xa78fa925,
+ 0xfe31ef27, 0xc95b2d26, 0x4c4d6223, 0x7b27a022, 0x2299e620,
+ 0x15f32421, 0x28b4782a, 0x1fdeba2b, 0x4660fc29, 0x710a3e28,
+ 0xf41c712d, 0xc376b32c, 0x9ac8f52e, 0xada2372f, 0xc08d9a70,
+ 0xf7e75871, 0xae591e73, 0x9933dc72, 0x1c259377, 0x2b4f5176,
+ 0x72f11774, 0x459bd575, 0x78dc897e, 0x4fb64b7f, 0x16080d7d,
+ 0x2162cf7c, 0xa4748079, 0x931e4278, 0xcaa0047a, 0xfdcac67b,
+ 0xb02ebc6c, 0x87447e6d, 0xdefa386f, 0xe990fa6e, 0x6c86b56b,
+ 0x5bec776a, 0x02523168, 0x3538f369, 0x087faf62, 0x3f156d63,
+ 0x66ab2b61, 0x51c1e960, 0xd4d7a665, 0xe3bd6464, 0xba032266,
+ 0x8d69e067, 0x20cbd748, 0x17a11549, 0x4e1f534b, 0x7975914a,
+ 0xfc63de4f, 0xcb091c4e, 0x92b75a4c, 0xa5dd984d, 0x989ac446,
+ 0xaff00647, 0xf64e4045, 0xc1248244, 0x4432cd41, 0x73580f40,
+ 0x2ae64942, 0x1d8c8b43, 0x5068f154, 0x67023355, 0x3ebc7557,
+ 0x09d6b756, 0x8cc0f853, 0xbbaa3a52, 0xe2147c50, 0xd57ebe51,
+ 0xe839e25a, 0xdf53205b, 0x86ed6659, 0xb187a458, 0x3491eb5d,
+ 0x03fb295c, 0x5a456f5e, 0x6d2fad5f, 0x801b35e1, 0xb771f7e0,
+ 0xeecfb1e2, 0xd9a573e3, 0x5cb33ce6, 0x6bd9fee7, 0x3267b8e5,
+ 0x050d7ae4, 0x384a26ef, 0x0f20e4ee, 0x569ea2ec, 0x61f460ed,
+ 0xe4e22fe8, 0xd388ede9, 0x8a36abeb, 0xbd5c69ea, 0xf0b813fd,
+ 0xc7d2d1fc, 0x9e6c97fe, 0xa90655ff, 0x2c101afa, 0x1b7ad8fb,
+ 0x42c49ef9, 0x75ae5cf8, 0x48e900f3, 0x7f83c2f2, 0x263d84f0,
+ 0x115746f1, 0x944109f4, 0xa32bcbf5, 0xfa958df7, 0xcdff4ff6,
+ 0x605d78d9, 0x5737bad8, 0x0e89fcda, 0x39e33edb, 0xbcf571de,
+ 0x8b9fb3df, 0xd221f5dd, 0xe54b37dc, 0xd80c6bd7, 0xef66a9d6,
+ 0xb6d8efd4, 0x81b22dd5, 0x04a462d0, 0x33cea0d1, 0x6a70e6d3,
+ 0x5d1a24d2, 0x10fe5ec5, 0x27949cc4, 0x7e2adac6, 0x494018c7,
+ 0xcc5657c2, 0xfb3c95c3, 0xa282d3c1, 0x95e811c0, 0xa8af4dcb,
+ 0x9fc58fca, 0xc67bc9c8, 0xf1110bc9, 0x740744cc, 0x436d86cd,
+ 0x1ad3c0cf, 0x2db902ce, 0x4096af91, 0x77fc6d90, 0x2e422b92,
+ 0x1928e993, 0x9c3ea696, 0xab546497, 0xf2ea2295, 0xc580e094,
+ 0xf8c7bc9f, 0xcfad7e9e, 0x9613389c, 0xa179fa9d, 0x246fb598,
+ 0x13057799, 0x4abb319b, 0x7dd1f39a, 0x3035898d, 0x075f4b8c,
+ 0x5ee10d8e, 0x698bcf8f, 0xec9d808a, 0xdbf7428b, 0x82490489,
+ 0xb523c688, 0x88649a83, 0xbf0e5882, 0xe6b01e80, 0xd1dadc81,
+ 0x54cc9384, 0x63a65185, 0x3a181787, 0x0d72d586, 0xa0d0e2a9,
+ 0x97ba20a8, 0xce0466aa, 0xf96ea4ab, 0x7c78ebae, 0x4b1229af,
+ 0x12ac6fad, 0x25c6adac, 0x1881f1a7, 0x2feb33a6, 0x765575a4,
+ 0x413fb7a5, 0xc429f8a0, 0xf3433aa1, 0xaafd7ca3, 0x9d97bea2,
+ 0xd073c4b5, 0xe71906b4, 0xbea740b6, 0x89cd82b7, 0x0cdbcdb2,
+ 0x3bb10fb3, 0x620f49b1, 0x55658bb0, 0x6822d7bb, 0x5f4815ba,
+ 0x06f653b8, 0x319c91b9, 0xb48adebc, 0x83e01cbd, 0xda5e5abf,
+ 0xed3498be},
+ {0x00000000, 0x6567bcb8, 0x8bc809aa, 0xeeafb512, 0x5797628f,
+ 0x32f0de37, 0xdc5f6b25, 0xb938d79d, 0xef28b4c5, 0x8a4f087d,
+ 0x64e0bd6f, 0x018701d7, 0xb8bfd64a, 0xddd86af2, 0x3377dfe0,
+ 0x56106358, 0x9f571950, 0xfa30a5e8, 0x149f10fa, 0x71f8ac42,
+ 0xc8c07bdf, 0xada7c767, 0x43087275, 0x266fcecd, 0x707fad95,
+ 0x1518112d, 0xfbb7a43f, 0x9ed01887, 0x27e8cf1a, 0x428f73a2,
+ 0xac20c6b0, 0xc9477a08, 0x3eaf32a0, 0x5bc88e18, 0xb5673b0a,
+ 0xd00087b2, 0x6938502f, 0x0c5fec97, 0xe2f05985, 0x8797e53d,
+ 0xd1878665, 0xb4e03add, 0x5a4f8fcf, 0x3f283377, 0x8610e4ea,
+ 0xe3775852, 0x0dd8ed40, 0x68bf51f8, 0xa1f82bf0, 0xc49f9748,
+ 0x2a30225a, 0x4f579ee2, 0xf66f497f, 0x9308f5c7, 0x7da740d5,
+ 0x18c0fc6d, 0x4ed09f35, 0x2bb7238d, 0xc518969f, 0xa07f2a27,
+ 0x1947fdba, 0x7c204102, 0x928ff410, 0xf7e848a8, 0x3d58149b,
+ 0x583fa823, 0xb6901d31, 0xd3f7a189, 0x6acf7614, 0x0fa8caac,
+ 0xe1077fbe, 0x8460c306, 0xd270a05e, 0xb7171ce6, 0x59b8a9f4,
+ 0x3cdf154c, 0x85e7c2d1, 0xe0807e69, 0x0e2fcb7b, 0x6b4877c3,
+ 0xa20f0dcb, 0xc768b173, 0x29c70461, 0x4ca0b8d9, 0xf5986f44,
+ 0x90ffd3fc, 0x7e5066ee, 0x1b37da56, 0x4d27b90e, 0x284005b6,
+ 0xc6efb0a4, 0xa3880c1c, 0x1ab0db81, 0x7fd76739, 0x9178d22b,
+ 0xf41f6e93, 0x03f7263b, 0x66909a83, 0x883f2f91, 0xed589329,
+ 0x546044b4, 0x3107f80c, 0xdfa84d1e, 0xbacff1a6, 0xecdf92fe,
+ 0x89b82e46, 0x67179b54, 0x027027ec, 0xbb48f071, 0xde2f4cc9,
+ 0x3080f9db, 0x55e74563, 0x9ca03f6b, 0xf9c783d3, 0x176836c1,
+ 0x720f8a79, 0xcb375de4, 0xae50e15c, 0x40ff544e, 0x2598e8f6,
+ 0x73888bae, 0x16ef3716, 0xf8408204, 0x9d273ebc, 0x241fe921,
+ 0x41785599, 0xafd7e08b, 0xcab05c33, 0x3bb659ed, 0x5ed1e555,
+ 0xb07e5047, 0xd519ecff, 0x6c213b62, 0x094687da, 0xe7e932c8,
+ 0x828e8e70, 0xd49eed28, 0xb1f95190, 0x5f56e482, 0x3a31583a,
+ 0x83098fa7, 0xe66e331f, 0x08c1860d, 0x6da63ab5, 0xa4e140bd,
+ 0xc186fc05, 0x2f294917, 0x4a4ef5af, 0xf3762232, 0x96119e8a,
+ 0x78be2b98, 0x1dd99720, 0x4bc9f478, 0x2eae48c0, 0xc001fdd2,
+ 0xa566416a, 0x1c5e96f7, 0x79392a4f, 0x97969f5d, 0xf2f123e5,
+ 0x05196b4d, 0x607ed7f5, 0x8ed162e7, 0xebb6de5f, 0x528e09c2,
+ 0x37e9b57a, 0xd9460068, 0xbc21bcd0, 0xea31df88, 0x8f566330,
+ 0x61f9d622, 0x049e6a9a, 0xbda6bd07, 0xd8c101bf, 0x366eb4ad,
+ 0x53090815, 0x9a4e721d, 0xff29cea5, 0x11867bb7, 0x74e1c70f,
+ 0xcdd91092, 0xa8beac2a, 0x46111938, 0x2376a580, 0x7566c6d8,
+ 0x10017a60, 0xfeaecf72, 0x9bc973ca, 0x22f1a457, 0x479618ef,
+ 0xa939adfd, 0xcc5e1145, 0x06ee4d76, 0x6389f1ce, 0x8d2644dc,
+ 0xe841f864, 0x51792ff9, 0x341e9341, 0xdab12653, 0xbfd69aeb,
+ 0xe9c6f9b3, 0x8ca1450b, 0x620ef019, 0x07694ca1, 0xbe519b3c,
+ 0xdb362784, 0x35999296, 0x50fe2e2e, 0x99b95426, 0xfcdee89e,
+ 0x12715d8c, 0x7716e134, 0xce2e36a9, 0xab498a11, 0x45e63f03,
+ 0x208183bb, 0x7691e0e3, 0x13f65c5b, 0xfd59e949, 0x983e55f1,
+ 0x2106826c, 0x44613ed4, 0xaace8bc6, 0xcfa9377e, 0x38417fd6,
+ 0x5d26c36e, 0xb389767c, 0xd6eecac4, 0x6fd61d59, 0x0ab1a1e1,
+ 0xe41e14f3, 0x8179a84b, 0xd769cb13, 0xb20e77ab, 0x5ca1c2b9,
+ 0x39c67e01, 0x80fea99c, 0xe5991524, 0x0b36a036, 0x6e511c8e,
+ 0xa7166686, 0xc271da3e, 0x2cde6f2c, 0x49b9d394, 0xf0810409,
+ 0x95e6b8b1, 0x7b490da3, 0x1e2eb11b, 0x483ed243, 0x2d596efb,
+ 0xc3f6dbe9, 0xa6916751, 0x1fa9b0cc, 0x7ace0c74, 0x9461b966,
+ 0xf10605de}};
+
+#endif
+
+#endif
+
+#if N == 2
+
+#if W == 8
+
+local const z_crc_t FAR crc_braid_table[][256] = {
+ {0x00000000, 0xae689191, 0x87a02563, 0x29c8b4f2, 0xd4314c87,
+ 0x7a59dd16, 0x539169e4, 0xfdf9f875, 0x73139f4f, 0xdd7b0ede,
+ 0xf4b3ba2c, 0x5adb2bbd, 0xa722d3c8, 0x094a4259, 0x2082f6ab,
+ 0x8eea673a, 0xe6273e9e, 0x484faf0f, 0x61871bfd, 0xcfef8a6c,
+ 0x32167219, 0x9c7ee388, 0xb5b6577a, 0x1bdec6eb, 0x9534a1d1,
+ 0x3b5c3040, 0x129484b2, 0xbcfc1523, 0x4105ed56, 0xef6d7cc7,
+ 0xc6a5c835, 0x68cd59a4, 0x173f7b7d, 0xb957eaec, 0x909f5e1e,
+ 0x3ef7cf8f, 0xc30e37fa, 0x6d66a66b, 0x44ae1299, 0xeac68308,
+ 0x642ce432, 0xca4475a3, 0xe38cc151, 0x4de450c0, 0xb01da8b5,
+ 0x1e753924, 0x37bd8dd6, 0x99d51c47, 0xf11845e3, 0x5f70d472,
+ 0x76b86080, 0xd8d0f111, 0x25290964, 0x8b4198f5, 0xa2892c07,
+ 0x0ce1bd96, 0x820bdaac, 0x2c634b3d, 0x05abffcf, 0xabc36e5e,
+ 0x563a962b, 0xf85207ba, 0xd19ab348, 0x7ff222d9, 0x2e7ef6fa,
+ 0x8016676b, 0xa9ded399, 0x07b64208, 0xfa4fba7d, 0x54272bec,
+ 0x7def9f1e, 0xd3870e8f, 0x5d6d69b5, 0xf305f824, 0xdacd4cd6,
+ 0x74a5dd47, 0x895c2532, 0x2734b4a3, 0x0efc0051, 0xa09491c0,
+ 0xc859c864, 0x663159f5, 0x4ff9ed07, 0xe1917c96, 0x1c6884e3,
+ 0xb2001572, 0x9bc8a180, 0x35a03011, 0xbb4a572b, 0x1522c6ba,
+ 0x3cea7248, 0x9282e3d9, 0x6f7b1bac, 0xc1138a3d, 0xe8db3ecf,
+ 0x46b3af5e, 0x39418d87, 0x97291c16, 0xbee1a8e4, 0x10893975,
+ 0xed70c100, 0x43185091, 0x6ad0e463, 0xc4b875f2, 0x4a5212c8,
+ 0xe43a8359, 0xcdf237ab, 0x639aa63a, 0x9e635e4f, 0x300bcfde,
+ 0x19c37b2c, 0xb7abeabd, 0xdf66b319, 0x710e2288, 0x58c6967a,
+ 0xf6ae07eb, 0x0b57ff9e, 0xa53f6e0f, 0x8cf7dafd, 0x229f4b6c,
+ 0xac752c56, 0x021dbdc7, 0x2bd50935, 0x85bd98a4, 0x784460d1,
+ 0xd62cf140, 0xffe445b2, 0x518cd423, 0x5cfdedf4, 0xf2957c65,
+ 0xdb5dc897, 0x75355906, 0x88cca173, 0x26a430e2, 0x0f6c8410,
+ 0xa1041581, 0x2fee72bb, 0x8186e32a, 0xa84e57d8, 0x0626c649,
+ 0xfbdf3e3c, 0x55b7afad, 0x7c7f1b5f, 0xd2178ace, 0xbadad36a,
+ 0x14b242fb, 0x3d7af609, 0x93126798, 0x6eeb9fed, 0xc0830e7c,
+ 0xe94bba8e, 0x47232b1f, 0xc9c94c25, 0x67a1ddb4, 0x4e696946,
+ 0xe001f8d7, 0x1df800a2, 0xb3909133, 0x9a5825c1, 0x3430b450,
+ 0x4bc29689, 0xe5aa0718, 0xcc62b3ea, 0x620a227b, 0x9ff3da0e,
+ 0x319b4b9f, 0x1853ff6d, 0xb63b6efc, 0x38d109c6, 0x96b99857,
+ 0xbf712ca5, 0x1119bd34, 0xece04541, 0x4288d4d0, 0x6b406022,
+ 0xc528f1b3, 0xade5a817, 0x038d3986, 0x2a458d74, 0x842d1ce5,
+ 0x79d4e490, 0xd7bc7501, 0xfe74c1f3, 0x501c5062, 0xdef63758,
+ 0x709ea6c9, 0x5956123b, 0xf73e83aa, 0x0ac77bdf, 0xa4afea4e,
+ 0x8d675ebc, 0x230fcf2d, 0x72831b0e, 0xdceb8a9f, 0xf5233e6d,
+ 0x5b4baffc, 0xa6b25789, 0x08dac618, 0x211272ea, 0x8f7ae37b,
+ 0x01908441, 0xaff815d0, 0x8630a122, 0x285830b3, 0xd5a1c8c6,
+ 0x7bc95957, 0x5201eda5, 0xfc697c34, 0x94a42590, 0x3accb401,
+ 0x130400f3, 0xbd6c9162, 0x40956917, 0xeefdf886, 0xc7354c74,
+ 0x695ddde5, 0xe7b7badf, 0x49df2b4e, 0x60179fbc, 0xce7f0e2d,
+ 0x3386f658, 0x9dee67c9, 0xb426d33b, 0x1a4e42aa, 0x65bc6073,
+ 0xcbd4f1e2, 0xe21c4510, 0x4c74d481, 0xb18d2cf4, 0x1fe5bd65,
+ 0x362d0997, 0x98459806, 0x16afff3c, 0xb8c76ead, 0x910fda5f,
+ 0x3f674bce, 0xc29eb3bb, 0x6cf6222a, 0x453e96d8, 0xeb560749,
+ 0x839b5eed, 0x2df3cf7c, 0x043b7b8e, 0xaa53ea1f, 0x57aa126a,
+ 0xf9c283fb, 0xd00a3709, 0x7e62a698, 0xf088c1a2, 0x5ee05033,
+ 0x7728e4c1, 0xd9407550, 0x24b98d25, 0x8ad11cb4, 0xa319a846,
+ 0x0d7139d7},
+ {0x00000000, 0xb9fbdbe8, 0xa886b191, 0x117d6a79, 0x8a7c6563,
+ 0x3387be8b, 0x22fad4f2, 0x9b010f1a, 0xcf89cc87, 0x7672176f,
+ 0x670f7d16, 0xdef4a6fe, 0x45f5a9e4, 0xfc0e720c, 0xed731875,
+ 0x5488c39d, 0x44629f4f, 0xfd9944a7, 0xece42ede, 0x551ff536,
+ 0xce1efa2c, 0x77e521c4, 0x66984bbd, 0xdf639055, 0x8beb53c8,
+ 0x32108820, 0x236de259, 0x9a9639b1, 0x019736ab, 0xb86ced43,
+ 0xa911873a, 0x10ea5cd2, 0x88c53e9e, 0x313ee576, 0x20438f0f,
+ 0x99b854e7, 0x02b95bfd, 0xbb428015, 0xaa3fea6c, 0x13c43184,
+ 0x474cf219, 0xfeb729f1, 0xefca4388, 0x56319860, 0xcd30977a,
+ 0x74cb4c92, 0x65b626eb, 0xdc4dfd03, 0xcca7a1d1, 0x755c7a39,
+ 0x64211040, 0xdddacba8, 0x46dbc4b2, 0xff201f5a, 0xee5d7523,
+ 0x57a6aecb, 0x032e6d56, 0xbad5b6be, 0xaba8dcc7, 0x1253072f,
+ 0x89520835, 0x30a9d3dd, 0x21d4b9a4, 0x982f624c, 0xcafb7b7d,
+ 0x7300a095, 0x627dcaec, 0xdb861104, 0x40871e1e, 0xf97cc5f6,
+ 0xe801af8f, 0x51fa7467, 0x0572b7fa, 0xbc896c12, 0xadf4066b,
+ 0x140fdd83, 0x8f0ed299, 0x36f50971, 0x27886308, 0x9e73b8e0,
+ 0x8e99e432, 0x37623fda, 0x261f55a3, 0x9fe48e4b, 0x04e58151,
+ 0xbd1e5ab9, 0xac6330c0, 0x1598eb28, 0x411028b5, 0xf8ebf35d,
+ 0xe9969924, 0x506d42cc, 0xcb6c4dd6, 0x7297963e, 0x63eafc47,
+ 0xda1127af, 0x423e45e3, 0xfbc59e0b, 0xeab8f472, 0x53432f9a,
+ 0xc8422080, 0x71b9fb68, 0x60c49111, 0xd93f4af9, 0x8db78964,
+ 0x344c528c, 0x253138f5, 0x9ccae31d, 0x07cbec07, 0xbe3037ef,
+ 0xaf4d5d96, 0x16b6867e, 0x065cdaac, 0xbfa70144, 0xaeda6b3d,
+ 0x1721b0d5, 0x8c20bfcf, 0x35db6427, 0x24a60e5e, 0x9d5dd5b6,
+ 0xc9d5162b, 0x702ecdc3, 0x6153a7ba, 0xd8a87c52, 0x43a97348,
+ 0xfa52a8a0, 0xeb2fc2d9, 0x52d41931, 0x4e87f0bb, 0xf77c2b53,
+ 0xe601412a, 0x5ffa9ac2, 0xc4fb95d8, 0x7d004e30, 0x6c7d2449,
+ 0xd586ffa1, 0x810e3c3c, 0x38f5e7d4, 0x29888dad, 0x90735645,
+ 0x0b72595f, 0xb28982b7, 0xa3f4e8ce, 0x1a0f3326, 0x0ae56ff4,
+ 0xb31eb41c, 0xa263de65, 0x1b98058d, 0x80990a97, 0x3962d17f,
+ 0x281fbb06, 0x91e460ee, 0xc56ca373, 0x7c97789b, 0x6dea12e2,
+ 0xd411c90a, 0x4f10c610, 0xf6eb1df8, 0xe7967781, 0x5e6dac69,
+ 0xc642ce25, 0x7fb915cd, 0x6ec47fb4, 0xd73fa45c, 0x4c3eab46,
+ 0xf5c570ae, 0xe4b81ad7, 0x5d43c13f, 0x09cb02a2, 0xb030d94a,
+ 0xa14db333, 0x18b668db, 0x83b767c1, 0x3a4cbc29, 0x2b31d650,
+ 0x92ca0db8, 0x8220516a, 0x3bdb8a82, 0x2aa6e0fb, 0x935d3b13,
+ 0x085c3409, 0xb1a7efe1, 0xa0da8598, 0x19215e70, 0x4da99ded,
+ 0xf4524605, 0xe52f2c7c, 0x5cd4f794, 0xc7d5f88e, 0x7e2e2366,
+ 0x6f53491f, 0xd6a892f7, 0x847c8bc6, 0x3d87502e, 0x2cfa3a57,
+ 0x9501e1bf, 0x0e00eea5, 0xb7fb354d, 0xa6865f34, 0x1f7d84dc,
+ 0x4bf54741, 0xf20e9ca9, 0xe373f6d0, 0x5a882d38, 0xc1892222,
+ 0x7872f9ca, 0x690f93b3, 0xd0f4485b, 0xc01e1489, 0x79e5cf61,
+ 0x6898a518, 0xd1637ef0, 0x4a6271ea, 0xf399aa02, 0xe2e4c07b,
+ 0x5b1f1b93, 0x0f97d80e, 0xb66c03e6, 0xa711699f, 0x1eeab277,
+ 0x85ebbd6d, 0x3c106685, 0x2d6d0cfc, 0x9496d714, 0x0cb9b558,
+ 0xb5426eb0, 0xa43f04c9, 0x1dc4df21, 0x86c5d03b, 0x3f3e0bd3,
+ 0x2e4361aa, 0x97b8ba42, 0xc33079df, 0x7acba237, 0x6bb6c84e,
+ 0xd24d13a6, 0x494c1cbc, 0xf0b7c754, 0xe1caad2d, 0x583176c5,
+ 0x48db2a17, 0xf120f1ff, 0xe05d9b86, 0x59a6406e, 0xc2a74f74,
+ 0x7b5c949c, 0x6a21fee5, 0xd3da250d, 0x8752e690, 0x3ea93d78,
+ 0x2fd45701, 0x962f8ce9, 0x0d2e83f3, 0xb4d5581b, 0xa5a83262,
+ 0x1c53e98a},
+ {0x00000000, 0x9d0fe176, 0xe16ec4ad, 0x7c6125db, 0x19ac8f1b,
+ 0x84a36e6d, 0xf8c24bb6, 0x65cdaac0, 0x33591e36, 0xae56ff40,
+ 0xd237da9b, 0x4f383bed, 0x2af5912d, 0xb7fa705b, 0xcb9b5580,
+ 0x5694b4f6, 0x66b23c6c, 0xfbbddd1a, 0x87dcf8c1, 0x1ad319b7,
+ 0x7f1eb377, 0xe2115201, 0x9e7077da, 0x037f96ac, 0x55eb225a,
+ 0xc8e4c32c, 0xb485e6f7, 0x298a0781, 0x4c47ad41, 0xd1484c37,
+ 0xad2969ec, 0x3026889a, 0xcd6478d8, 0x506b99ae, 0x2c0abc75,
+ 0xb1055d03, 0xd4c8f7c3, 0x49c716b5, 0x35a6336e, 0xa8a9d218,
+ 0xfe3d66ee, 0x63328798, 0x1f53a243, 0x825c4335, 0xe791e9f5,
+ 0x7a9e0883, 0x06ff2d58, 0x9bf0cc2e, 0xabd644b4, 0x36d9a5c2,
+ 0x4ab88019, 0xd7b7616f, 0xb27acbaf, 0x2f752ad9, 0x53140f02,
+ 0xce1bee74, 0x988f5a82, 0x0580bbf4, 0x79e19e2f, 0xe4ee7f59,
+ 0x8123d599, 0x1c2c34ef, 0x604d1134, 0xfd42f042, 0x41b9f7f1,
+ 0xdcb61687, 0xa0d7335c, 0x3dd8d22a, 0x581578ea, 0xc51a999c,
+ 0xb97bbc47, 0x24745d31, 0x72e0e9c7, 0xefef08b1, 0x938e2d6a,
+ 0x0e81cc1c, 0x6b4c66dc, 0xf64387aa, 0x8a22a271, 0x172d4307,
+ 0x270bcb9d, 0xba042aeb, 0xc6650f30, 0x5b6aee46, 0x3ea74486,
+ 0xa3a8a5f0, 0xdfc9802b, 0x42c6615d, 0x1452d5ab, 0x895d34dd,
+ 0xf53c1106, 0x6833f070, 0x0dfe5ab0, 0x90f1bbc6, 0xec909e1d,
+ 0x719f7f6b, 0x8cdd8f29, 0x11d26e5f, 0x6db34b84, 0xf0bcaaf2,
+ 0x95710032, 0x087ee144, 0x741fc49f, 0xe91025e9, 0xbf84911f,
+ 0x228b7069, 0x5eea55b2, 0xc3e5b4c4, 0xa6281e04, 0x3b27ff72,
+ 0x4746daa9, 0xda493bdf, 0xea6fb345, 0x77605233, 0x0b0177e8,
+ 0x960e969e, 0xf3c33c5e, 0x6eccdd28, 0x12adf8f3, 0x8fa21985,
+ 0xd936ad73, 0x44394c05, 0x385869de, 0xa55788a8, 0xc09a2268,
+ 0x5d95c31e, 0x21f4e6c5, 0xbcfb07b3, 0x8373efe2, 0x1e7c0e94,
+ 0x621d2b4f, 0xff12ca39, 0x9adf60f9, 0x07d0818f, 0x7bb1a454,
+ 0xe6be4522, 0xb02af1d4, 0x2d2510a2, 0x51443579, 0xcc4bd40f,
+ 0xa9867ecf, 0x34899fb9, 0x48e8ba62, 0xd5e75b14, 0xe5c1d38e,
+ 0x78ce32f8, 0x04af1723, 0x99a0f655, 0xfc6d5c95, 0x6162bde3,
+ 0x1d039838, 0x800c794e, 0xd698cdb8, 0x4b972cce, 0x37f60915,
+ 0xaaf9e863, 0xcf3442a3, 0x523ba3d5, 0x2e5a860e, 0xb3556778,
+ 0x4e17973a, 0xd318764c, 0xaf795397, 0x3276b2e1, 0x57bb1821,
+ 0xcab4f957, 0xb6d5dc8c, 0x2bda3dfa, 0x7d4e890c, 0xe041687a,
+ 0x9c204da1, 0x012facd7, 0x64e20617, 0xf9ede761, 0x858cc2ba,
+ 0x188323cc, 0x28a5ab56, 0xb5aa4a20, 0xc9cb6ffb, 0x54c48e8d,
+ 0x3109244d, 0xac06c53b, 0xd067e0e0, 0x4d680196, 0x1bfcb560,
+ 0x86f35416, 0xfa9271cd, 0x679d90bb, 0x02503a7b, 0x9f5fdb0d,
+ 0xe33efed6, 0x7e311fa0, 0xc2ca1813, 0x5fc5f965, 0x23a4dcbe,
+ 0xbeab3dc8, 0xdb669708, 0x4669767e, 0x3a0853a5, 0xa707b2d3,
+ 0xf1930625, 0x6c9ce753, 0x10fdc288, 0x8df223fe, 0xe83f893e,
+ 0x75306848, 0x09514d93, 0x945eace5, 0xa478247f, 0x3977c509,
+ 0x4516e0d2, 0xd81901a4, 0xbdd4ab64, 0x20db4a12, 0x5cba6fc9,
+ 0xc1b58ebf, 0x97213a49, 0x0a2edb3f, 0x764ffee4, 0xeb401f92,
+ 0x8e8db552, 0x13825424, 0x6fe371ff, 0xf2ec9089, 0x0fae60cb,
+ 0x92a181bd, 0xeec0a466, 0x73cf4510, 0x1602efd0, 0x8b0d0ea6,
+ 0xf76c2b7d, 0x6a63ca0b, 0x3cf77efd, 0xa1f89f8b, 0xdd99ba50,
+ 0x40965b26, 0x255bf1e6, 0xb8541090, 0xc435354b, 0x593ad43d,
+ 0x691c5ca7, 0xf413bdd1, 0x8872980a, 0x157d797c, 0x70b0d3bc,
+ 0xedbf32ca, 0x91de1711, 0x0cd1f667, 0x5a454291, 0xc74aa3e7,
+ 0xbb2b863c, 0x2624674a, 0x43e9cd8a, 0xdee62cfc, 0xa2870927,
+ 0x3f88e851},
+ {0x00000000, 0xdd96d985, 0x605cb54b, 0xbdca6cce, 0xc0b96a96,
+ 0x1d2fb313, 0xa0e5dfdd, 0x7d730658, 0x5a03d36d, 0x87950ae8,
+ 0x3a5f6626, 0xe7c9bfa3, 0x9abab9fb, 0x472c607e, 0xfae60cb0,
+ 0x2770d535, 0xb407a6da, 0x69917f5f, 0xd45b1391, 0x09cdca14,
+ 0x74becc4c, 0xa92815c9, 0x14e27907, 0xc974a082, 0xee0475b7,
+ 0x3392ac32, 0x8e58c0fc, 0x53ce1979, 0x2ebd1f21, 0xf32bc6a4,
+ 0x4ee1aa6a, 0x937773ef, 0xb37e4bf5, 0x6ee89270, 0xd322febe,
+ 0x0eb4273b, 0x73c72163, 0xae51f8e6, 0x139b9428, 0xce0d4dad,
+ 0xe97d9898, 0x34eb411d, 0x89212dd3, 0x54b7f456, 0x29c4f20e,
+ 0xf4522b8b, 0x49984745, 0x940e9ec0, 0x0779ed2f, 0xdaef34aa,
+ 0x67255864, 0xbab381e1, 0xc7c087b9, 0x1a565e3c, 0xa79c32f2,
+ 0x7a0aeb77, 0x5d7a3e42, 0x80ece7c7, 0x3d268b09, 0xe0b0528c,
+ 0x9dc354d4, 0x40558d51, 0xfd9fe19f, 0x2009381a, 0xbd8d91ab,
+ 0x601b482e, 0xddd124e0, 0x0047fd65, 0x7d34fb3d, 0xa0a222b8,
+ 0x1d684e76, 0xc0fe97f3, 0xe78e42c6, 0x3a189b43, 0x87d2f78d,
+ 0x5a442e08, 0x27372850, 0xfaa1f1d5, 0x476b9d1b, 0x9afd449e,
+ 0x098a3771, 0xd41ceef4, 0x69d6823a, 0xb4405bbf, 0xc9335de7,
+ 0x14a58462, 0xa96fe8ac, 0x74f93129, 0x5389e41c, 0x8e1f3d99,
+ 0x33d55157, 0xee4388d2, 0x93308e8a, 0x4ea6570f, 0xf36c3bc1,
+ 0x2efae244, 0x0ef3da5e, 0xd36503db, 0x6eaf6f15, 0xb339b690,
+ 0xce4ab0c8, 0x13dc694d, 0xae160583, 0x7380dc06, 0x54f00933,
+ 0x8966d0b6, 0x34acbc78, 0xe93a65fd, 0x944963a5, 0x49dfba20,
+ 0xf415d6ee, 0x29830f6b, 0xbaf47c84, 0x6762a501, 0xdaa8c9cf,
+ 0x073e104a, 0x7a4d1612, 0xa7dbcf97, 0x1a11a359, 0xc7877adc,
+ 0xe0f7afe9, 0x3d61766c, 0x80ab1aa2, 0x5d3dc327, 0x204ec57f,
+ 0xfdd81cfa, 0x40127034, 0x9d84a9b1, 0xa06a2517, 0x7dfcfc92,
+ 0xc036905c, 0x1da049d9, 0x60d34f81, 0xbd459604, 0x008ffaca,
+ 0xdd19234f, 0xfa69f67a, 0x27ff2fff, 0x9a354331, 0x47a39ab4,
+ 0x3ad09cec, 0xe7464569, 0x5a8c29a7, 0x871af022, 0x146d83cd,
+ 0xc9fb5a48, 0x74313686, 0xa9a7ef03, 0xd4d4e95b, 0x094230de,
+ 0xb4885c10, 0x691e8595, 0x4e6e50a0, 0x93f88925, 0x2e32e5eb,
+ 0xf3a43c6e, 0x8ed73a36, 0x5341e3b3, 0xee8b8f7d, 0x331d56f8,
+ 0x13146ee2, 0xce82b767, 0x7348dba9, 0xaede022c, 0xd3ad0474,
+ 0x0e3bddf1, 0xb3f1b13f, 0x6e6768ba, 0x4917bd8f, 0x9481640a,
+ 0x294b08c4, 0xf4ddd141, 0x89aed719, 0x54380e9c, 0xe9f26252,
+ 0x3464bbd7, 0xa713c838, 0x7a8511bd, 0xc74f7d73, 0x1ad9a4f6,
+ 0x67aaa2ae, 0xba3c7b2b, 0x07f617e5, 0xda60ce60, 0xfd101b55,
+ 0x2086c2d0, 0x9d4cae1e, 0x40da779b, 0x3da971c3, 0xe03fa846,
+ 0x5df5c488, 0x80631d0d, 0x1de7b4bc, 0xc0716d39, 0x7dbb01f7,
+ 0xa02dd872, 0xdd5ede2a, 0x00c807af, 0xbd026b61, 0x6094b2e4,
+ 0x47e467d1, 0x9a72be54, 0x27b8d29a, 0xfa2e0b1f, 0x875d0d47,
+ 0x5acbd4c2, 0xe701b80c, 0x3a976189, 0xa9e01266, 0x7476cbe3,
+ 0xc9bca72d, 0x142a7ea8, 0x695978f0, 0xb4cfa175, 0x0905cdbb,
+ 0xd493143e, 0xf3e3c10b, 0x2e75188e, 0x93bf7440, 0x4e29adc5,
+ 0x335aab9d, 0xeecc7218, 0x53061ed6, 0x8e90c753, 0xae99ff49,
+ 0x730f26cc, 0xcec54a02, 0x13539387, 0x6e2095df, 0xb3b64c5a,
+ 0x0e7c2094, 0xd3eaf911, 0xf49a2c24, 0x290cf5a1, 0x94c6996f,
+ 0x495040ea, 0x342346b2, 0xe9b59f37, 0x547ff3f9, 0x89e92a7c,
+ 0x1a9e5993, 0xc7088016, 0x7ac2ecd8, 0xa754355d, 0xda273305,
+ 0x07b1ea80, 0xba7b864e, 0x67ed5fcb, 0x409d8afe, 0x9d0b537b,
+ 0x20c13fb5, 0xfd57e630, 0x8024e068, 0x5db239ed, 0xe0785523,
+ 0x3dee8ca6},
+ {0x00000000, 0x9ba54c6f, 0xec3b9e9f, 0x779ed2f0, 0x03063b7f,
+ 0x98a37710, 0xef3da5e0, 0x7498e98f, 0x060c76fe, 0x9da93a91,
+ 0xea37e861, 0x7192a40e, 0x050a4d81, 0x9eaf01ee, 0xe931d31e,
+ 0x72949f71, 0x0c18edfc, 0x97bda193, 0xe0237363, 0x7b863f0c,
+ 0x0f1ed683, 0x94bb9aec, 0xe325481c, 0x78800473, 0x0a149b02,
+ 0x91b1d76d, 0xe62f059d, 0x7d8a49f2, 0x0912a07d, 0x92b7ec12,
+ 0xe5293ee2, 0x7e8c728d, 0x1831dbf8, 0x83949797, 0xf40a4567,
+ 0x6faf0908, 0x1b37e087, 0x8092ace8, 0xf70c7e18, 0x6ca93277,
+ 0x1e3dad06, 0x8598e169, 0xf2063399, 0x69a37ff6, 0x1d3b9679,
+ 0x869eda16, 0xf10008e6, 0x6aa54489, 0x14293604, 0x8f8c7a6b,
+ 0xf812a89b, 0x63b7e4f4, 0x172f0d7b, 0x8c8a4114, 0xfb1493e4,
+ 0x60b1df8b, 0x122540fa, 0x89800c95, 0xfe1ede65, 0x65bb920a,
+ 0x11237b85, 0x8a8637ea, 0xfd18e51a, 0x66bda975, 0x3063b7f0,
+ 0xabc6fb9f, 0xdc58296f, 0x47fd6500, 0x33658c8f, 0xa8c0c0e0,
+ 0xdf5e1210, 0x44fb5e7f, 0x366fc10e, 0xadca8d61, 0xda545f91,
+ 0x41f113fe, 0x3569fa71, 0xaeccb61e, 0xd95264ee, 0x42f72881,
+ 0x3c7b5a0c, 0xa7de1663, 0xd040c493, 0x4be588fc, 0x3f7d6173,
+ 0xa4d82d1c, 0xd346ffec, 0x48e3b383, 0x3a772cf2, 0xa1d2609d,
+ 0xd64cb26d, 0x4de9fe02, 0x3971178d, 0xa2d45be2, 0xd54a8912,
+ 0x4eefc57d, 0x28526c08, 0xb3f72067, 0xc469f297, 0x5fccbef8,
+ 0x2b545777, 0xb0f11b18, 0xc76fc9e8, 0x5cca8587, 0x2e5e1af6,
+ 0xb5fb5699, 0xc2658469, 0x59c0c806, 0x2d582189, 0xb6fd6de6,
+ 0xc163bf16, 0x5ac6f379, 0x244a81f4, 0xbfefcd9b, 0xc8711f6b,
+ 0x53d45304, 0x274cba8b, 0xbce9f6e4, 0xcb772414, 0x50d2687b,
+ 0x2246f70a, 0xb9e3bb65, 0xce7d6995, 0x55d825fa, 0x2140cc75,
+ 0xbae5801a, 0xcd7b52ea, 0x56de1e85, 0x60c76fe0, 0xfb62238f,
+ 0x8cfcf17f, 0x1759bd10, 0x63c1549f, 0xf86418f0, 0x8ffaca00,
+ 0x145f866f, 0x66cb191e, 0xfd6e5571, 0x8af08781, 0x1155cbee,
+ 0x65cd2261, 0xfe686e0e, 0x89f6bcfe, 0x1253f091, 0x6cdf821c,
+ 0xf77ace73, 0x80e41c83, 0x1b4150ec, 0x6fd9b963, 0xf47cf50c,
+ 0x83e227fc, 0x18476b93, 0x6ad3f4e2, 0xf176b88d, 0x86e86a7d,
+ 0x1d4d2612, 0x69d5cf9d, 0xf27083f2, 0x85ee5102, 0x1e4b1d6d,
+ 0x78f6b418, 0xe353f877, 0x94cd2a87, 0x0f6866e8, 0x7bf08f67,
+ 0xe055c308, 0x97cb11f8, 0x0c6e5d97, 0x7efac2e6, 0xe55f8e89,
+ 0x92c15c79, 0x09641016, 0x7dfcf999, 0xe659b5f6, 0x91c76706,
+ 0x0a622b69, 0x74ee59e4, 0xef4b158b, 0x98d5c77b, 0x03708b14,
+ 0x77e8629b, 0xec4d2ef4, 0x9bd3fc04, 0x0076b06b, 0x72e22f1a,
+ 0xe9476375, 0x9ed9b185, 0x057cfdea, 0x71e41465, 0xea41580a,
+ 0x9ddf8afa, 0x067ac695, 0x50a4d810, 0xcb01947f, 0xbc9f468f,
+ 0x273a0ae0, 0x53a2e36f, 0xc807af00, 0xbf997df0, 0x243c319f,
+ 0x56a8aeee, 0xcd0de281, 0xba933071, 0x21367c1e, 0x55ae9591,
+ 0xce0bd9fe, 0xb9950b0e, 0x22304761, 0x5cbc35ec, 0xc7197983,
+ 0xb087ab73, 0x2b22e71c, 0x5fba0e93, 0xc41f42fc, 0xb381900c,
+ 0x2824dc63, 0x5ab04312, 0xc1150f7d, 0xb68bdd8d, 0x2d2e91e2,
+ 0x59b6786d, 0xc2133402, 0xb58de6f2, 0x2e28aa9d, 0x489503e8,
+ 0xd3304f87, 0xa4ae9d77, 0x3f0bd118, 0x4b933897, 0xd03674f8,
+ 0xa7a8a608, 0x3c0dea67, 0x4e997516, 0xd53c3979, 0xa2a2eb89,
+ 0x3907a7e6, 0x4d9f4e69, 0xd63a0206, 0xa1a4d0f6, 0x3a019c99,
+ 0x448dee14, 0xdf28a27b, 0xa8b6708b, 0x33133ce4, 0x478bd56b,
+ 0xdc2e9904, 0xabb04bf4, 0x3015079b, 0x428198ea, 0xd924d485,
+ 0xaeba0675, 0x351f4a1a, 0x4187a395, 0xda22effa, 0xadbc3d0a,
+ 0x36197165},
+ {0x00000000, 0xc18edfc0, 0x586cb9c1, 0x99e26601, 0xb0d97382,
+ 0x7157ac42, 0xe8b5ca43, 0x293b1583, 0xbac3e145, 0x7b4d3e85,
+ 0xe2af5884, 0x23218744, 0x0a1a92c7, 0xcb944d07, 0x52762b06,
+ 0x93f8f4c6, 0xaef6c4cb, 0x6f781b0b, 0xf69a7d0a, 0x3714a2ca,
+ 0x1e2fb749, 0xdfa16889, 0x46430e88, 0x87cdd148, 0x1435258e,
+ 0xd5bbfa4e, 0x4c599c4f, 0x8dd7438f, 0xa4ec560c, 0x656289cc,
+ 0xfc80efcd, 0x3d0e300d, 0x869c8fd7, 0x47125017, 0xdef03616,
+ 0x1f7ee9d6, 0x3645fc55, 0xf7cb2395, 0x6e294594, 0xafa79a54,
+ 0x3c5f6e92, 0xfdd1b152, 0x6433d753, 0xa5bd0893, 0x8c861d10,
+ 0x4d08c2d0, 0xd4eaa4d1, 0x15647b11, 0x286a4b1c, 0xe9e494dc,
+ 0x7006f2dd, 0xb1882d1d, 0x98b3389e, 0x593de75e, 0xc0df815f,
+ 0x01515e9f, 0x92a9aa59, 0x53277599, 0xcac51398, 0x0b4bcc58,
+ 0x2270d9db, 0xe3fe061b, 0x7a1c601a, 0xbb92bfda, 0xd64819ef,
+ 0x17c6c62f, 0x8e24a02e, 0x4faa7fee, 0x66916a6d, 0xa71fb5ad,
+ 0x3efdd3ac, 0xff730c6c, 0x6c8bf8aa, 0xad05276a, 0x34e7416b,
+ 0xf5699eab, 0xdc528b28, 0x1ddc54e8, 0x843e32e9, 0x45b0ed29,
+ 0x78bedd24, 0xb93002e4, 0x20d264e5, 0xe15cbb25, 0xc867aea6,
+ 0x09e97166, 0x900b1767, 0x5185c8a7, 0xc27d3c61, 0x03f3e3a1,
+ 0x9a1185a0, 0x5b9f5a60, 0x72a44fe3, 0xb32a9023, 0x2ac8f622,
+ 0xeb4629e2, 0x50d49638, 0x915a49f8, 0x08b82ff9, 0xc936f039,
+ 0xe00de5ba, 0x21833a7a, 0xb8615c7b, 0x79ef83bb, 0xea17777d,
+ 0x2b99a8bd, 0xb27bcebc, 0x73f5117c, 0x5ace04ff, 0x9b40db3f,
+ 0x02a2bd3e, 0xc32c62fe, 0xfe2252f3, 0x3fac8d33, 0xa64eeb32,
+ 0x67c034f2, 0x4efb2171, 0x8f75feb1, 0x169798b0, 0xd7194770,
+ 0x44e1b3b6, 0x856f6c76, 0x1c8d0a77, 0xdd03d5b7, 0xf438c034,
+ 0x35b61ff4, 0xac5479f5, 0x6ddaa635, 0x77e1359f, 0xb66fea5f,
+ 0x2f8d8c5e, 0xee03539e, 0xc738461d, 0x06b699dd, 0x9f54ffdc,
+ 0x5eda201c, 0xcd22d4da, 0x0cac0b1a, 0x954e6d1b, 0x54c0b2db,
+ 0x7dfba758, 0xbc757898, 0x25971e99, 0xe419c159, 0xd917f154,
+ 0x18992e94, 0x817b4895, 0x40f59755, 0x69ce82d6, 0xa8405d16,
+ 0x31a23b17, 0xf02ce4d7, 0x63d41011, 0xa25acfd1, 0x3bb8a9d0,
+ 0xfa367610, 0xd30d6393, 0x1283bc53, 0x8b61da52, 0x4aef0592,
+ 0xf17dba48, 0x30f36588, 0xa9110389, 0x689fdc49, 0x41a4c9ca,
+ 0x802a160a, 0x19c8700b, 0xd846afcb, 0x4bbe5b0d, 0x8a3084cd,
+ 0x13d2e2cc, 0xd25c3d0c, 0xfb67288f, 0x3ae9f74f, 0xa30b914e,
+ 0x62854e8e, 0x5f8b7e83, 0x9e05a143, 0x07e7c742, 0xc6691882,
+ 0xef520d01, 0x2edcd2c1, 0xb73eb4c0, 0x76b06b00, 0xe5489fc6,
+ 0x24c64006, 0xbd242607, 0x7caaf9c7, 0x5591ec44, 0x941f3384,
+ 0x0dfd5585, 0xcc738a45, 0xa1a92c70, 0x6027f3b0, 0xf9c595b1,
+ 0x384b4a71, 0x11705ff2, 0xd0fe8032, 0x491ce633, 0x889239f3,
+ 0x1b6acd35, 0xdae412f5, 0x430674f4, 0x8288ab34, 0xabb3beb7,
+ 0x6a3d6177, 0xf3df0776, 0x3251d8b6, 0x0f5fe8bb, 0xced1377b,
+ 0x5733517a, 0x96bd8eba, 0xbf869b39, 0x7e0844f9, 0xe7ea22f8,
+ 0x2664fd38, 0xb59c09fe, 0x7412d63e, 0xedf0b03f, 0x2c7e6fff,
+ 0x05457a7c, 0xc4cba5bc, 0x5d29c3bd, 0x9ca71c7d, 0x2735a3a7,
+ 0xe6bb7c67, 0x7f591a66, 0xbed7c5a6, 0x97ecd025, 0x56620fe5,
+ 0xcf8069e4, 0x0e0eb624, 0x9df642e2, 0x5c789d22, 0xc59afb23,
+ 0x041424e3, 0x2d2f3160, 0xeca1eea0, 0x754388a1, 0xb4cd5761,
+ 0x89c3676c, 0x484db8ac, 0xd1afdead, 0x1021016d, 0x391a14ee,
+ 0xf894cb2e, 0x6176ad2f, 0xa0f872ef, 0x33008629, 0xf28e59e9,
+ 0x6b6c3fe8, 0xaae2e028, 0x83d9f5ab, 0x42572a6b, 0xdbb54c6a,
+ 0x1a3b93aa},
+ {0x00000000, 0xefc26b3e, 0x04f5d03d, 0xeb37bb03, 0x09eba07a,
+ 0xe629cb44, 0x0d1e7047, 0xe2dc1b79, 0x13d740f4, 0xfc152bca,
+ 0x172290c9, 0xf8e0fbf7, 0x1a3ce08e, 0xf5fe8bb0, 0x1ec930b3,
+ 0xf10b5b8d, 0x27ae81e8, 0xc86cead6, 0x235b51d5, 0xcc993aeb,
+ 0x2e452192, 0xc1874aac, 0x2ab0f1af, 0xc5729a91, 0x3479c11c,
+ 0xdbbbaa22, 0x308c1121, 0xdf4e7a1f, 0x3d926166, 0xd2500a58,
+ 0x3967b15b, 0xd6a5da65, 0x4f5d03d0, 0xa09f68ee, 0x4ba8d3ed,
+ 0xa46ab8d3, 0x46b6a3aa, 0xa974c894, 0x42437397, 0xad8118a9,
+ 0x5c8a4324, 0xb348281a, 0x587f9319, 0xb7bdf827, 0x5561e35e,
+ 0xbaa38860, 0x51943363, 0xbe56585d, 0x68f38238, 0x8731e906,
+ 0x6c065205, 0x83c4393b, 0x61182242, 0x8eda497c, 0x65edf27f,
+ 0x8a2f9941, 0x7b24c2cc, 0x94e6a9f2, 0x7fd112f1, 0x901379cf,
+ 0x72cf62b6, 0x9d0d0988, 0x763ab28b, 0x99f8d9b5, 0x9eba07a0,
+ 0x71786c9e, 0x9a4fd79d, 0x758dbca3, 0x9751a7da, 0x7893cce4,
+ 0x93a477e7, 0x7c661cd9, 0x8d6d4754, 0x62af2c6a, 0x89989769,
+ 0x665afc57, 0x8486e72e, 0x6b448c10, 0x80733713, 0x6fb15c2d,
+ 0xb9148648, 0x56d6ed76, 0xbde15675, 0x52233d4b, 0xb0ff2632,
+ 0x5f3d4d0c, 0xb40af60f, 0x5bc89d31, 0xaac3c6bc, 0x4501ad82,
+ 0xae361681, 0x41f47dbf, 0xa32866c6, 0x4cea0df8, 0xa7ddb6fb,
+ 0x481fddc5, 0xd1e70470, 0x3e256f4e, 0xd512d44d, 0x3ad0bf73,
+ 0xd80ca40a, 0x37cecf34, 0xdcf97437, 0x333b1f09, 0xc2304484,
+ 0x2df22fba, 0xc6c594b9, 0x2907ff87, 0xcbdbe4fe, 0x24198fc0,
+ 0xcf2e34c3, 0x20ec5ffd, 0xf6498598, 0x198beea6, 0xf2bc55a5,
+ 0x1d7e3e9b, 0xffa225e2, 0x10604edc, 0xfb57f5df, 0x14959ee1,
+ 0xe59ec56c, 0x0a5cae52, 0xe16b1551, 0x0ea97e6f, 0xec756516,
+ 0x03b70e28, 0xe880b52b, 0x0742de15, 0xe6050901, 0x09c7623f,
+ 0xe2f0d93c, 0x0d32b202, 0xefeea97b, 0x002cc245, 0xeb1b7946,
+ 0x04d91278, 0xf5d249f5, 0x1a1022cb, 0xf12799c8, 0x1ee5f2f6,
+ 0xfc39e98f, 0x13fb82b1, 0xf8cc39b2, 0x170e528c, 0xc1ab88e9,
+ 0x2e69e3d7, 0xc55e58d4, 0x2a9c33ea, 0xc8402893, 0x278243ad,
+ 0xccb5f8ae, 0x23779390, 0xd27cc81d, 0x3dbea323, 0xd6891820,
+ 0x394b731e, 0xdb976867, 0x34550359, 0xdf62b85a, 0x30a0d364,
+ 0xa9580ad1, 0x469a61ef, 0xadaddaec, 0x426fb1d2, 0xa0b3aaab,
+ 0x4f71c195, 0xa4467a96, 0x4b8411a8, 0xba8f4a25, 0x554d211b,
+ 0xbe7a9a18, 0x51b8f126, 0xb364ea5f, 0x5ca68161, 0xb7913a62,
+ 0x5853515c, 0x8ef68b39, 0x6134e007, 0x8a035b04, 0x65c1303a,
+ 0x871d2b43, 0x68df407d, 0x83e8fb7e, 0x6c2a9040, 0x9d21cbcd,
+ 0x72e3a0f3, 0x99d41bf0, 0x761670ce, 0x94ca6bb7, 0x7b080089,
+ 0x903fbb8a, 0x7ffdd0b4, 0x78bf0ea1, 0x977d659f, 0x7c4ade9c,
+ 0x9388b5a2, 0x7154aedb, 0x9e96c5e5, 0x75a17ee6, 0x9a6315d8,
+ 0x6b684e55, 0x84aa256b, 0x6f9d9e68, 0x805ff556, 0x6283ee2f,
+ 0x8d418511, 0x66763e12, 0x89b4552c, 0x5f118f49, 0xb0d3e477,
+ 0x5be45f74, 0xb426344a, 0x56fa2f33, 0xb938440d, 0x520fff0e,
+ 0xbdcd9430, 0x4cc6cfbd, 0xa304a483, 0x48331f80, 0xa7f174be,
+ 0x452d6fc7, 0xaaef04f9, 0x41d8bffa, 0xae1ad4c4, 0x37e20d71,
+ 0xd820664f, 0x3317dd4c, 0xdcd5b672, 0x3e09ad0b, 0xd1cbc635,
+ 0x3afc7d36, 0xd53e1608, 0x24354d85, 0xcbf726bb, 0x20c09db8,
+ 0xcf02f686, 0x2ddeedff, 0xc21c86c1, 0x292b3dc2, 0xc6e956fc,
+ 0x104c8c99, 0xff8ee7a7, 0x14b95ca4, 0xfb7b379a, 0x19a72ce3,
+ 0xf66547dd, 0x1d52fcde, 0xf29097e0, 0x039bcc6d, 0xec59a753,
+ 0x076e1c50, 0xe8ac776e, 0x0a706c17, 0xe5b20729, 0x0e85bc2a,
+ 0xe147d714},
+ {0x00000000, 0x177b1443, 0x2ef62886, 0x398d3cc5, 0x5dec510c,
+ 0x4a97454f, 0x731a798a, 0x64616dc9, 0xbbd8a218, 0xaca3b65b,
+ 0x952e8a9e, 0x82559edd, 0xe634f314, 0xf14fe757, 0xc8c2db92,
+ 0xdfb9cfd1, 0xacc04271, 0xbbbb5632, 0x82366af7, 0x954d7eb4,
+ 0xf12c137d, 0xe657073e, 0xdfda3bfb, 0xc8a12fb8, 0x1718e069,
+ 0x0063f42a, 0x39eec8ef, 0x2e95dcac, 0x4af4b165, 0x5d8fa526,
+ 0x640299e3, 0x73798da0, 0x82f182a3, 0x958a96e0, 0xac07aa25,
+ 0xbb7cbe66, 0xdf1dd3af, 0xc866c7ec, 0xf1ebfb29, 0xe690ef6a,
+ 0x392920bb, 0x2e5234f8, 0x17df083d, 0x00a41c7e, 0x64c571b7,
+ 0x73be65f4, 0x4a335931, 0x5d484d72, 0x2e31c0d2, 0x394ad491,
+ 0x00c7e854, 0x17bcfc17, 0x73dd91de, 0x64a6859d, 0x5d2bb958,
+ 0x4a50ad1b, 0x95e962ca, 0x82927689, 0xbb1f4a4c, 0xac645e0f,
+ 0xc80533c6, 0xdf7e2785, 0xe6f31b40, 0xf1880f03, 0xde920307,
+ 0xc9e91744, 0xf0642b81, 0xe71f3fc2, 0x837e520b, 0x94054648,
+ 0xad887a8d, 0xbaf36ece, 0x654aa11f, 0x7231b55c, 0x4bbc8999,
+ 0x5cc79dda, 0x38a6f013, 0x2fdde450, 0x1650d895, 0x012bccd6,
+ 0x72524176, 0x65295535, 0x5ca469f0, 0x4bdf7db3, 0x2fbe107a,
+ 0x38c50439, 0x014838fc, 0x16332cbf, 0xc98ae36e, 0xdef1f72d,
+ 0xe77ccbe8, 0xf007dfab, 0x9466b262, 0x831da621, 0xba909ae4,
+ 0xadeb8ea7, 0x5c6381a4, 0x4b1895e7, 0x7295a922, 0x65eebd61,
+ 0x018fd0a8, 0x16f4c4eb, 0x2f79f82e, 0x3802ec6d, 0xe7bb23bc,
+ 0xf0c037ff, 0xc94d0b3a, 0xde361f79, 0xba5772b0, 0xad2c66f3,
+ 0x94a15a36, 0x83da4e75, 0xf0a3c3d5, 0xe7d8d796, 0xde55eb53,
+ 0xc92eff10, 0xad4f92d9, 0xba34869a, 0x83b9ba5f, 0x94c2ae1c,
+ 0x4b7b61cd, 0x5c00758e, 0x658d494b, 0x72f65d08, 0x169730c1,
+ 0x01ec2482, 0x38611847, 0x2f1a0c04, 0x6655004f, 0x712e140c,
+ 0x48a328c9, 0x5fd83c8a, 0x3bb95143, 0x2cc24500, 0x154f79c5,
+ 0x02346d86, 0xdd8da257, 0xcaf6b614, 0xf37b8ad1, 0xe4009e92,
+ 0x8061f35b, 0x971ae718, 0xae97dbdd, 0xb9eccf9e, 0xca95423e,
+ 0xddee567d, 0xe4636ab8, 0xf3187efb, 0x97791332, 0x80020771,
+ 0xb98f3bb4, 0xaef42ff7, 0x714de026, 0x6636f465, 0x5fbbc8a0,
+ 0x48c0dce3, 0x2ca1b12a, 0x3bdaa569, 0x025799ac, 0x152c8def,
+ 0xe4a482ec, 0xf3df96af, 0xca52aa6a, 0xdd29be29, 0xb948d3e0,
+ 0xae33c7a3, 0x97befb66, 0x80c5ef25, 0x5f7c20f4, 0x480734b7,
+ 0x718a0872, 0x66f11c31, 0x029071f8, 0x15eb65bb, 0x2c66597e,
+ 0x3b1d4d3d, 0x4864c09d, 0x5f1fd4de, 0x6692e81b, 0x71e9fc58,
+ 0x15889191, 0x02f385d2, 0x3b7eb917, 0x2c05ad54, 0xf3bc6285,
+ 0xe4c776c6, 0xdd4a4a03, 0xca315e40, 0xae503389, 0xb92b27ca,
+ 0x80a61b0f, 0x97dd0f4c, 0xb8c70348, 0xafbc170b, 0x96312bce,
+ 0x814a3f8d, 0xe52b5244, 0xf2504607, 0xcbdd7ac2, 0xdca66e81,
+ 0x031fa150, 0x1464b513, 0x2de989d6, 0x3a929d95, 0x5ef3f05c,
+ 0x4988e41f, 0x7005d8da, 0x677ecc99, 0x14074139, 0x037c557a,
+ 0x3af169bf, 0x2d8a7dfc, 0x49eb1035, 0x5e900476, 0x671d38b3,
+ 0x70662cf0, 0xafdfe321, 0xb8a4f762, 0x8129cba7, 0x9652dfe4,
+ 0xf233b22d, 0xe548a66e, 0xdcc59aab, 0xcbbe8ee8, 0x3a3681eb,
+ 0x2d4d95a8, 0x14c0a96d, 0x03bbbd2e, 0x67dad0e7, 0x70a1c4a4,
+ 0x492cf861, 0x5e57ec22, 0x81ee23f3, 0x969537b0, 0xaf180b75,
+ 0xb8631f36, 0xdc0272ff, 0xcb7966bc, 0xf2f45a79, 0xe58f4e3a,
+ 0x96f6c39a, 0x818dd7d9, 0xb800eb1c, 0xaf7bff5f, 0xcb1a9296,
+ 0xdc6186d5, 0xe5ecba10, 0xf297ae53, 0x2d2e6182, 0x3a5575c1,
+ 0x03d84904, 0x14a35d47, 0x70c2308e, 0x67b924cd, 0x5e341808,
+ 0x494f0c4b}};
+
+local const z_word_t FAR crc_braid_big_table[][256] = {
+ {0x0000000000000000, 0x43147b1700000000, 0x8628f62e00000000,
+ 0xc53c8d3900000000, 0x0c51ec5d00000000, 0x4f45974a00000000,
+ 0x8a791a7300000000, 0xc96d616400000000, 0x18a2d8bb00000000,
+ 0x5bb6a3ac00000000, 0x9e8a2e9500000000, 0xdd9e558200000000,
+ 0x14f334e600000000, 0x57e74ff100000000, 0x92dbc2c800000000,
+ 0xd1cfb9df00000000, 0x7142c0ac00000000, 0x3256bbbb00000000,
+ 0xf76a368200000000, 0xb47e4d9500000000, 0x7d132cf100000000,
+ 0x3e0757e600000000, 0xfb3bdadf00000000, 0xb82fa1c800000000,
+ 0x69e0181700000000, 0x2af4630000000000, 0xefc8ee3900000000,
+ 0xacdc952e00000000, 0x65b1f44a00000000, 0x26a58f5d00000000,
+ 0xe399026400000000, 0xa08d797300000000, 0xa382f18200000000,
+ 0xe0968a9500000000, 0x25aa07ac00000000, 0x66be7cbb00000000,
+ 0xafd31ddf00000000, 0xecc766c800000000, 0x29fbebf100000000,
+ 0x6aef90e600000000, 0xbb20293900000000, 0xf834522e00000000,
+ 0x3d08df1700000000, 0x7e1ca40000000000, 0xb771c56400000000,
+ 0xf465be7300000000, 0x3159334a00000000, 0x724d485d00000000,
+ 0xd2c0312e00000000, 0x91d44a3900000000, 0x54e8c70000000000,
+ 0x17fcbc1700000000, 0xde91dd7300000000, 0x9d85a66400000000,
+ 0x58b92b5d00000000, 0x1bad504a00000000, 0xca62e99500000000,
+ 0x8976928200000000, 0x4c4a1fbb00000000, 0x0f5e64ac00000000,
+ 0xc63305c800000000, 0x85277edf00000000, 0x401bf3e600000000,
+ 0x030f88f100000000, 0x070392de00000000, 0x4417e9c900000000,
+ 0x812b64f000000000, 0xc23f1fe700000000, 0x0b527e8300000000,
+ 0x4846059400000000, 0x8d7a88ad00000000, 0xce6ef3ba00000000,
+ 0x1fa14a6500000000, 0x5cb5317200000000, 0x9989bc4b00000000,
+ 0xda9dc75c00000000, 0x13f0a63800000000, 0x50e4dd2f00000000,
+ 0x95d8501600000000, 0xd6cc2b0100000000, 0x7641527200000000,
+ 0x3555296500000000, 0xf069a45c00000000, 0xb37ddf4b00000000,
+ 0x7a10be2f00000000, 0x3904c53800000000, 0xfc38480100000000,
+ 0xbf2c331600000000, 0x6ee38ac900000000, 0x2df7f1de00000000,
+ 0xe8cb7ce700000000, 0xabdf07f000000000, 0x62b2669400000000,
+ 0x21a61d8300000000, 0xe49a90ba00000000, 0xa78eebad00000000,
+ 0xa481635c00000000, 0xe795184b00000000, 0x22a9957200000000,
+ 0x61bdee6500000000, 0xa8d08f0100000000, 0xebc4f41600000000,
+ 0x2ef8792f00000000, 0x6dec023800000000, 0xbc23bbe700000000,
+ 0xff37c0f000000000, 0x3a0b4dc900000000, 0x791f36de00000000,
+ 0xb07257ba00000000, 0xf3662cad00000000, 0x365aa19400000000,
+ 0x754eda8300000000, 0xd5c3a3f000000000, 0x96d7d8e700000000,
+ 0x53eb55de00000000, 0x10ff2ec900000000, 0xd9924fad00000000,
+ 0x9a8634ba00000000, 0x5fbab98300000000, 0x1caec29400000000,
+ 0xcd617b4b00000000, 0x8e75005c00000000, 0x4b498d6500000000,
+ 0x085df67200000000, 0xc130971600000000, 0x8224ec0100000000,
+ 0x4718613800000000, 0x040c1a2f00000000, 0x4f00556600000000,
+ 0x0c142e7100000000, 0xc928a34800000000, 0x8a3cd85f00000000,
+ 0x4351b93b00000000, 0x0045c22c00000000, 0xc5794f1500000000,
+ 0x866d340200000000, 0x57a28ddd00000000, 0x14b6f6ca00000000,
+ 0xd18a7bf300000000, 0x929e00e400000000, 0x5bf3618000000000,
+ 0x18e71a9700000000, 0xdddb97ae00000000, 0x9ecfecb900000000,
+ 0x3e4295ca00000000, 0x7d56eedd00000000, 0xb86a63e400000000,
+ 0xfb7e18f300000000, 0x3213799700000000, 0x7107028000000000,
+ 0xb43b8fb900000000, 0xf72ff4ae00000000, 0x26e04d7100000000,
+ 0x65f4366600000000, 0xa0c8bb5f00000000, 0xe3dcc04800000000,
+ 0x2ab1a12c00000000, 0x69a5da3b00000000, 0xac99570200000000,
+ 0xef8d2c1500000000, 0xec82a4e400000000, 0xaf96dff300000000,
+ 0x6aaa52ca00000000, 0x29be29dd00000000, 0xe0d348b900000000,
+ 0xa3c733ae00000000, 0x66fbbe9700000000, 0x25efc58000000000,
+ 0xf4207c5f00000000, 0xb734074800000000, 0x72088a7100000000,
+ 0x311cf16600000000, 0xf871900200000000, 0xbb65eb1500000000,
+ 0x7e59662c00000000, 0x3d4d1d3b00000000, 0x9dc0644800000000,
+ 0xded41f5f00000000, 0x1be8926600000000, 0x58fce97100000000,
+ 0x9191881500000000, 0xd285f30200000000, 0x17b97e3b00000000,
+ 0x54ad052c00000000, 0x8562bcf300000000, 0xc676c7e400000000,
+ 0x034a4add00000000, 0x405e31ca00000000, 0x893350ae00000000,
+ 0xca272bb900000000, 0x0f1ba68000000000, 0x4c0fdd9700000000,
+ 0x4803c7b800000000, 0x0b17bcaf00000000, 0xce2b319600000000,
+ 0x8d3f4a8100000000, 0x44522be500000000, 0x074650f200000000,
+ 0xc27addcb00000000, 0x816ea6dc00000000, 0x50a11f0300000000,
+ 0x13b5641400000000, 0xd689e92d00000000, 0x959d923a00000000,
+ 0x5cf0f35e00000000, 0x1fe4884900000000, 0xdad8057000000000,
+ 0x99cc7e6700000000, 0x3941071400000000, 0x7a557c0300000000,
+ 0xbf69f13a00000000, 0xfc7d8a2d00000000, 0x3510eb4900000000,
+ 0x7604905e00000000, 0xb3381d6700000000, 0xf02c667000000000,
+ 0x21e3dfaf00000000, 0x62f7a4b800000000, 0xa7cb298100000000,
+ 0xe4df529600000000, 0x2db233f200000000, 0x6ea648e500000000,
+ 0xab9ac5dc00000000, 0xe88ebecb00000000, 0xeb81363a00000000,
+ 0xa8954d2d00000000, 0x6da9c01400000000, 0x2ebdbb0300000000,
+ 0xe7d0da6700000000, 0xa4c4a17000000000, 0x61f82c4900000000,
+ 0x22ec575e00000000, 0xf323ee8100000000, 0xb037959600000000,
+ 0x750b18af00000000, 0x361f63b800000000, 0xff7202dc00000000,
+ 0xbc6679cb00000000, 0x795af4f200000000, 0x3a4e8fe500000000,
+ 0x9ac3f69600000000, 0xd9d78d8100000000, 0x1ceb00b800000000,
+ 0x5fff7baf00000000, 0x96921acb00000000, 0xd58661dc00000000,
+ 0x10baece500000000, 0x53ae97f200000000, 0x82612e2d00000000,
+ 0xc175553a00000000, 0x0449d80300000000, 0x475da31400000000,
+ 0x8e30c27000000000, 0xcd24b96700000000, 0x0818345e00000000,
+ 0x4b0c4f4900000000},
+ {0x0000000000000000, 0x3e6bc2ef00000000, 0x3dd0f50400000000,
+ 0x03bb37eb00000000, 0x7aa0eb0900000000, 0x44cb29e600000000,
+ 0x47701e0d00000000, 0x791bdce200000000, 0xf440d71300000000,
+ 0xca2b15fc00000000, 0xc990221700000000, 0xf7fbe0f800000000,
+ 0x8ee03c1a00000000, 0xb08bfef500000000, 0xb330c91e00000000,
+ 0x8d5b0bf100000000, 0xe881ae2700000000, 0xd6ea6cc800000000,
+ 0xd5515b2300000000, 0xeb3a99cc00000000, 0x9221452e00000000,
+ 0xac4a87c100000000, 0xaff1b02a00000000, 0x919a72c500000000,
+ 0x1cc1793400000000, 0x22aabbdb00000000, 0x21118c3000000000,
+ 0x1f7a4edf00000000, 0x6661923d00000000, 0x580a50d200000000,
+ 0x5bb1673900000000, 0x65daa5d600000000, 0xd0035d4f00000000,
+ 0xee689fa000000000, 0xedd3a84b00000000, 0xd3b86aa400000000,
+ 0xaaa3b64600000000, 0x94c874a900000000, 0x9773434200000000,
+ 0xa91881ad00000000, 0x24438a5c00000000, 0x1a2848b300000000,
+ 0x19937f5800000000, 0x27f8bdb700000000, 0x5ee3615500000000,
+ 0x6088a3ba00000000, 0x6333945100000000, 0x5d5856be00000000,
+ 0x3882f36800000000, 0x06e9318700000000, 0x0552066c00000000,
+ 0x3b39c48300000000, 0x4222186100000000, 0x7c49da8e00000000,
+ 0x7ff2ed6500000000, 0x41992f8a00000000, 0xccc2247b00000000,
+ 0xf2a9e69400000000, 0xf112d17f00000000, 0xcf79139000000000,
+ 0xb662cf7200000000, 0x88090d9d00000000, 0x8bb23a7600000000,
+ 0xb5d9f89900000000, 0xa007ba9e00000000, 0x9e6c787100000000,
+ 0x9dd74f9a00000000, 0xa3bc8d7500000000, 0xdaa7519700000000,
+ 0xe4cc937800000000, 0xe777a49300000000, 0xd91c667c00000000,
+ 0x54476d8d00000000, 0x6a2caf6200000000, 0x6997988900000000,
+ 0x57fc5a6600000000, 0x2ee7868400000000, 0x108c446b00000000,
+ 0x1337738000000000, 0x2d5cb16f00000000, 0x488614b900000000,
+ 0x76edd65600000000, 0x7556e1bd00000000, 0x4b3d235200000000,
+ 0x3226ffb000000000, 0x0c4d3d5f00000000, 0x0ff60ab400000000,
+ 0x319dc85b00000000, 0xbcc6c3aa00000000, 0x82ad014500000000,
+ 0x811636ae00000000, 0xbf7df44100000000, 0xc66628a300000000,
+ 0xf80dea4c00000000, 0xfbb6dda700000000, 0xc5dd1f4800000000,
+ 0x7004e7d100000000, 0x4e6f253e00000000, 0x4dd412d500000000,
+ 0x73bfd03a00000000, 0x0aa40cd800000000, 0x34cfce3700000000,
+ 0x3774f9dc00000000, 0x091f3b3300000000, 0x844430c200000000,
+ 0xba2ff22d00000000, 0xb994c5c600000000, 0x87ff072900000000,
+ 0xfee4dbcb00000000, 0xc08f192400000000, 0xc3342ecf00000000,
+ 0xfd5fec2000000000, 0x988549f600000000, 0xa6ee8b1900000000,
+ 0xa555bcf200000000, 0x9b3e7e1d00000000, 0xe225a2ff00000000,
+ 0xdc4e601000000000, 0xdff557fb00000000, 0xe19e951400000000,
+ 0x6cc59ee500000000, 0x52ae5c0a00000000, 0x51156be100000000,
+ 0x6f7ea90e00000000, 0x166575ec00000000, 0x280eb70300000000,
+ 0x2bb580e800000000, 0x15de420700000000, 0x010905e600000000,
+ 0x3f62c70900000000, 0x3cd9f0e200000000, 0x02b2320d00000000,
+ 0x7ba9eeef00000000, 0x45c22c0000000000, 0x46791beb00000000,
+ 0x7812d90400000000, 0xf549d2f500000000, 0xcb22101a00000000,
+ 0xc89927f100000000, 0xf6f2e51e00000000, 0x8fe939fc00000000,
+ 0xb182fb1300000000, 0xb239ccf800000000, 0x8c520e1700000000,
+ 0xe988abc100000000, 0xd7e3692e00000000, 0xd4585ec500000000,
+ 0xea339c2a00000000, 0x932840c800000000, 0xad43822700000000,
+ 0xaef8b5cc00000000, 0x9093772300000000, 0x1dc87cd200000000,
+ 0x23a3be3d00000000, 0x201889d600000000, 0x1e734b3900000000,
+ 0x676897db00000000, 0x5903553400000000, 0x5ab862df00000000,
+ 0x64d3a03000000000, 0xd10a58a900000000, 0xef619a4600000000,
+ 0xecdaadad00000000, 0xd2b16f4200000000, 0xabaab3a000000000,
+ 0x95c1714f00000000, 0x967a46a400000000, 0xa811844b00000000,
+ 0x254a8fba00000000, 0x1b214d5500000000, 0x189a7abe00000000,
+ 0x26f1b85100000000, 0x5fea64b300000000, 0x6181a65c00000000,
+ 0x623a91b700000000, 0x5c51535800000000, 0x398bf68e00000000,
+ 0x07e0346100000000, 0x045b038a00000000, 0x3a30c16500000000,
+ 0x432b1d8700000000, 0x7d40df6800000000, 0x7efbe88300000000,
+ 0x40902a6c00000000, 0xcdcb219d00000000, 0xf3a0e37200000000,
+ 0xf01bd49900000000, 0xce70167600000000, 0xb76bca9400000000,
+ 0x8900087b00000000, 0x8abb3f9000000000, 0xb4d0fd7f00000000,
+ 0xa10ebf7800000000, 0x9f657d9700000000, 0x9cde4a7c00000000,
+ 0xa2b5889300000000, 0xdbae547100000000, 0xe5c5969e00000000,
+ 0xe67ea17500000000, 0xd815639a00000000, 0x554e686b00000000,
+ 0x6b25aa8400000000, 0x689e9d6f00000000, 0x56f55f8000000000,
+ 0x2fee836200000000, 0x1185418d00000000, 0x123e766600000000,
+ 0x2c55b48900000000, 0x498f115f00000000, 0x77e4d3b000000000,
+ 0x745fe45b00000000, 0x4a3426b400000000, 0x332ffa5600000000,
+ 0x0d4438b900000000, 0x0eff0f5200000000, 0x3094cdbd00000000,
+ 0xbdcfc64c00000000, 0x83a404a300000000, 0x801f334800000000,
+ 0xbe74f1a700000000, 0xc76f2d4500000000, 0xf904efaa00000000,
+ 0xfabfd84100000000, 0xc4d41aae00000000, 0x710de23700000000,
+ 0x4f6620d800000000, 0x4cdd173300000000, 0x72b6d5dc00000000,
+ 0x0bad093e00000000, 0x35c6cbd100000000, 0x367dfc3a00000000,
+ 0x08163ed500000000, 0x854d352400000000, 0xbb26f7cb00000000,
+ 0xb89dc02000000000, 0x86f602cf00000000, 0xffedde2d00000000,
+ 0xc1861cc200000000, 0xc23d2b2900000000, 0xfc56e9c600000000,
+ 0x998c4c1000000000, 0xa7e78eff00000000, 0xa45cb91400000000,
+ 0x9a377bfb00000000, 0xe32ca71900000000, 0xdd4765f600000000,
+ 0xdefc521d00000000, 0xe09790f200000000, 0x6dcc9b0300000000,
+ 0x53a759ec00000000, 0x501c6e0700000000, 0x6e77ace800000000,
+ 0x176c700a00000000, 0x2907b2e500000000, 0x2abc850e00000000,
+ 0x14d747e100000000},
+ {0x0000000000000000, 0xc0df8ec100000000, 0xc1b96c5800000000,
+ 0x0166e29900000000, 0x8273d9b000000000, 0x42ac577100000000,
+ 0x43cab5e800000000, 0x83153b2900000000, 0x45e1c3ba00000000,
+ 0x853e4d7b00000000, 0x8458afe200000000, 0x4487212300000000,
+ 0xc7921a0a00000000, 0x074d94cb00000000, 0x062b765200000000,
+ 0xc6f4f89300000000, 0xcbc4f6ae00000000, 0x0b1b786f00000000,
+ 0x0a7d9af600000000, 0xcaa2143700000000, 0x49b72f1e00000000,
+ 0x8968a1df00000000, 0x880e434600000000, 0x48d1cd8700000000,
+ 0x8e25351400000000, 0x4efabbd500000000, 0x4f9c594c00000000,
+ 0x8f43d78d00000000, 0x0c56eca400000000, 0xcc89626500000000,
+ 0xcdef80fc00000000, 0x0d300e3d00000000, 0xd78f9c8600000000,
+ 0x1750124700000000, 0x1636f0de00000000, 0xd6e97e1f00000000,
+ 0x55fc453600000000, 0x9523cbf700000000, 0x9445296e00000000,
+ 0x549aa7af00000000, 0x926e5f3c00000000, 0x52b1d1fd00000000,
+ 0x53d7336400000000, 0x9308bda500000000, 0x101d868c00000000,
+ 0xd0c2084d00000000, 0xd1a4ead400000000, 0x117b641500000000,
+ 0x1c4b6a2800000000, 0xdc94e4e900000000, 0xddf2067000000000,
+ 0x1d2d88b100000000, 0x9e38b39800000000, 0x5ee73d5900000000,
+ 0x5f81dfc000000000, 0x9f5e510100000000, 0x59aaa99200000000,
+ 0x9975275300000000, 0x9813c5ca00000000, 0x58cc4b0b00000000,
+ 0xdbd9702200000000, 0x1b06fee300000000, 0x1a601c7a00000000,
+ 0xdabf92bb00000000, 0xef1948d600000000, 0x2fc6c61700000000,
+ 0x2ea0248e00000000, 0xee7faa4f00000000, 0x6d6a916600000000,
+ 0xadb51fa700000000, 0xacd3fd3e00000000, 0x6c0c73ff00000000,
+ 0xaaf88b6c00000000, 0x6a2705ad00000000, 0x6b41e73400000000,
+ 0xab9e69f500000000, 0x288b52dc00000000, 0xe854dc1d00000000,
+ 0xe9323e8400000000, 0x29edb04500000000, 0x24ddbe7800000000,
+ 0xe40230b900000000, 0xe564d22000000000, 0x25bb5ce100000000,
+ 0xa6ae67c800000000, 0x6671e90900000000, 0x67170b9000000000,
+ 0xa7c8855100000000, 0x613c7dc200000000, 0xa1e3f30300000000,
+ 0xa085119a00000000, 0x605a9f5b00000000, 0xe34fa47200000000,
+ 0x23902ab300000000, 0x22f6c82a00000000, 0xe22946eb00000000,
+ 0x3896d45000000000, 0xf8495a9100000000, 0xf92fb80800000000,
+ 0x39f036c900000000, 0xbae50de000000000, 0x7a3a832100000000,
+ 0x7b5c61b800000000, 0xbb83ef7900000000, 0x7d7717ea00000000,
+ 0xbda8992b00000000, 0xbcce7bb200000000, 0x7c11f57300000000,
+ 0xff04ce5a00000000, 0x3fdb409b00000000, 0x3ebda20200000000,
+ 0xfe622cc300000000, 0xf35222fe00000000, 0x338dac3f00000000,
+ 0x32eb4ea600000000, 0xf234c06700000000, 0x7121fb4e00000000,
+ 0xb1fe758f00000000, 0xb098971600000000, 0x704719d700000000,
+ 0xb6b3e14400000000, 0x766c6f8500000000, 0x770a8d1c00000000,
+ 0xb7d503dd00000000, 0x34c038f400000000, 0xf41fb63500000000,
+ 0xf57954ac00000000, 0x35a6da6d00000000, 0x9f35e17700000000,
+ 0x5fea6fb600000000, 0x5e8c8d2f00000000, 0x9e5303ee00000000,
+ 0x1d4638c700000000, 0xdd99b60600000000, 0xdcff549f00000000,
+ 0x1c20da5e00000000, 0xdad422cd00000000, 0x1a0bac0c00000000,
+ 0x1b6d4e9500000000, 0xdbb2c05400000000, 0x58a7fb7d00000000,
+ 0x987875bc00000000, 0x991e972500000000, 0x59c119e400000000,
+ 0x54f117d900000000, 0x942e991800000000, 0x95487b8100000000,
+ 0x5597f54000000000, 0xd682ce6900000000, 0x165d40a800000000,
+ 0x173ba23100000000, 0xd7e42cf000000000, 0x1110d46300000000,
+ 0xd1cf5aa200000000, 0xd0a9b83b00000000, 0x107636fa00000000,
+ 0x93630dd300000000, 0x53bc831200000000, 0x52da618b00000000,
+ 0x9205ef4a00000000, 0x48ba7df100000000, 0x8865f33000000000,
+ 0x890311a900000000, 0x49dc9f6800000000, 0xcac9a44100000000,
+ 0x0a162a8000000000, 0x0b70c81900000000, 0xcbaf46d800000000,
+ 0x0d5bbe4b00000000, 0xcd84308a00000000, 0xcce2d21300000000,
+ 0x0c3d5cd200000000, 0x8f2867fb00000000, 0x4ff7e93a00000000,
+ 0x4e910ba300000000, 0x8e4e856200000000, 0x837e8b5f00000000,
+ 0x43a1059e00000000, 0x42c7e70700000000, 0x821869c600000000,
+ 0x010d52ef00000000, 0xc1d2dc2e00000000, 0xc0b43eb700000000,
+ 0x006bb07600000000, 0xc69f48e500000000, 0x0640c62400000000,
+ 0x072624bd00000000, 0xc7f9aa7c00000000, 0x44ec915500000000,
+ 0x84331f9400000000, 0x8555fd0d00000000, 0x458a73cc00000000,
+ 0x702ca9a100000000, 0xb0f3276000000000, 0xb195c5f900000000,
+ 0x714a4b3800000000, 0xf25f701100000000, 0x3280fed000000000,
+ 0x33e61c4900000000, 0xf339928800000000, 0x35cd6a1b00000000,
+ 0xf512e4da00000000, 0xf474064300000000, 0x34ab888200000000,
+ 0xb7beb3ab00000000, 0x77613d6a00000000, 0x7607dff300000000,
+ 0xb6d8513200000000, 0xbbe85f0f00000000, 0x7b37d1ce00000000,
+ 0x7a51335700000000, 0xba8ebd9600000000, 0x399b86bf00000000,
+ 0xf944087e00000000, 0xf822eae700000000, 0x38fd642600000000,
+ 0xfe099cb500000000, 0x3ed6127400000000, 0x3fb0f0ed00000000,
+ 0xff6f7e2c00000000, 0x7c7a450500000000, 0xbca5cbc400000000,
+ 0xbdc3295d00000000, 0x7d1ca79c00000000, 0xa7a3352700000000,
+ 0x677cbbe600000000, 0x661a597f00000000, 0xa6c5d7be00000000,
+ 0x25d0ec9700000000, 0xe50f625600000000, 0xe46980cf00000000,
+ 0x24b60e0e00000000, 0xe242f69d00000000, 0x229d785c00000000,
+ 0x23fb9ac500000000, 0xe324140400000000, 0x60312f2d00000000,
+ 0xa0eea1ec00000000, 0xa188437500000000, 0x6157cdb400000000,
+ 0x6c67c38900000000, 0xacb84d4800000000, 0xaddeafd100000000,
+ 0x6d01211000000000, 0xee141a3900000000, 0x2ecb94f800000000,
+ 0x2fad766100000000, 0xef72f8a000000000, 0x2986003300000000,
+ 0xe9598ef200000000, 0xe83f6c6b00000000, 0x28e0e2aa00000000,
+ 0xabf5d98300000000, 0x6b2a574200000000, 0x6a4cb5db00000000,
+ 0xaa933b1a00000000},
+ {0x0000000000000000, 0x6f4ca59b00000000, 0x9f9e3bec00000000,
+ 0xf0d29e7700000000, 0x7f3b060300000000, 0x1077a39800000000,
+ 0xe0a53def00000000, 0x8fe9987400000000, 0xfe760c0600000000,
+ 0x913aa99d00000000, 0x61e837ea00000000, 0x0ea4927100000000,
+ 0x814d0a0500000000, 0xee01af9e00000000, 0x1ed331e900000000,
+ 0x719f947200000000, 0xfced180c00000000, 0x93a1bd9700000000,
+ 0x637323e000000000, 0x0c3f867b00000000, 0x83d61e0f00000000,
+ 0xec9abb9400000000, 0x1c4825e300000000, 0x7304807800000000,
+ 0x029b140a00000000, 0x6dd7b19100000000, 0x9d052fe600000000,
+ 0xf2498a7d00000000, 0x7da0120900000000, 0x12ecb79200000000,
+ 0xe23e29e500000000, 0x8d728c7e00000000, 0xf8db311800000000,
+ 0x9797948300000000, 0x67450af400000000, 0x0809af6f00000000,
+ 0x87e0371b00000000, 0xe8ac928000000000, 0x187e0cf700000000,
+ 0x7732a96c00000000, 0x06ad3d1e00000000, 0x69e1988500000000,
+ 0x993306f200000000, 0xf67fa36900000000, 0x79963b1d00000000,
+ 0x16da9e8600000000, 0xe60800f100000000, 0x8944a56a00000000,
+ 0x0436291400000000, 0x6b7a8c8f00000000, 0x9ba812f800000000,
+ 0xf4e4b76300000000, 0x7b0d2f1700000000, 0x14418a8c00000000,
+ 0xe49314fb00000000, 0x8bdfb16000000000, 0xfa40251200000000,
+ 0x950c808900000000, 0x65de1efe00000000, 0x0a92bb6500000000,
+ 0x857b231100000000, 0xea37868a00000000, 0x1ae518fd00000000,
+ 0x75a9bd6600000000, 0xf0b7633000000000, 0x9ffbc6ab00000000,
+ 0x6f2958dc00000000, 0x0065fd4700000000, 0x8f8c653300000000,
+ 0xe0c0c0a800000000, 0x10125edf00000000, 0x7f5efb4400000000,
+ 0x0ec16f3600000000, 0x618dcaad00000000, 0x915f54da00000000,
+ 0xfe13f14100000000, 0x71fa693500000000, 0x1eb6ccae00000000,
+ 0xee6452d900000000, 0x8128f74200000000, 0x0c5a7b3c00000000,
+ 0x6316dea700000000, 0x93c440d000000000, 0xfc88e54b00000000,
+ 0x73617d3f00000000, 0x1c2dd8a400000000, 0xecff46d300000000,
+ 0x83b3e34800000000, 0xf22c773a00000000, 0x9d60d2a100000000,
+ 0x6db24cd600000000, 0x02fee94d00000000, 0x8d17713900000000,
+ 0xe25bd4a200000000, 0x12894ad500000000, 0x7dc5ef4e00000000,
+ 0x086c522800000000, 0x6720f7b300000000, 0x97f269c400000000,
+ 0xf8becc5f00000000, 0x7757542b00000000, 0x181bf1b000000000,
+ 0xe8c96fc700000000, 0x8785ca5c00000000, 0xf61a5e2e00000000,
+ 0x9956fbb500000000, 0x698465c200000000, 0x06c8c05900000000,
+ 0x8921582d00000000, 0xe66dfdb600000000, 0x16bf63c100000000,
+ 0x79f3c65a00000000, 0xf4814a2400000000, 0x9bcdefbf00000000,
+ 0x6b1f71c800000000, 0x0453d45300000000, 0x8bba4c2700000000,
+ 0xe4f6e9bc00000000, 0x142477cb00000000, 0x7b68d25000000000,
+ 0x0af7462200000000, 0x65bbe3b900000000, 0x95697dce00000000,
+ 0xfa25d85500000000, 0x75cc402100000000, 0x1a80e5ba00000000,
+ 0xea527bcd00000000, 0x851ede5600000000, 0xe06fc76000000000,
+ 0x8f2362fb00000000, 0x7ff1fc8c00000000, 0x10bd591700000000,
+ 0x9f54c16300000000, 0xf01864f800000000, 0x00cafa8f00000000,
+ 0x6f865f1400000000, 0x1e19cb6600000000, 0x71556efd00000000,
+ 0x8187f08a00000000, 0xeecb551100000000, 0x6122cd6500000000,
+ 0x0e6e68fe00000000, 0xfebcf68900000000, 0x91f0531200000000,
+ 0x1c82df6c00000000, 0x73ce7af700000000, 0x831ce48000000000,
+ 0xec50411b00000000, 0x63b9d96f00000000, 0x0cf57cf400000000,
+ 0xfc27e28300000000, 0x936b471800000000, 0xe2f4d36a00000000,
+ 0x8db876f100000000, 0x7d6ae88600000000, 0x12264d1d00000000,
+ 0x9dcfd56900000000, 0xf28370f200000000, 0x0251ee8500000000,
+ 0x6d1d4b1e00000000, 0x18b4f67800000000, 0x77f853e300000000,
+ 0x872acd9400000000, 0xe866680f00000000, 0x678ff07b00000000,
+ 0x08c355e000000000, 0xf811cb9700000000, 0x975d6e0c00000000,
+ 0xe6c2fa7e00000000, 0x898e5fe500000000, 0x795cc19200000000,
+ 0x1610640900000000, 0x99f9fc7d00000000, 0xf6b559e600000000,
+ 0x0667c79100000000, 0x692b620a00000000, 0xe459ee7400000000,
+ 0x8b154bef00000000, 0x7bc7d59800000000, 0x148b700300000000,
+ 0x9b62e87700000000, 0xf42e4dec00000000, 0x04fcd39b00000000,
+ 0x6bb0760000000000, 0x1a2fe27200000000, 0x756347e900000000,
+ 0x85b1d99e00000000, 0xeafd7c0500000000, 0x6514e47100000000,
+ 0x0a5841ea00000000, 0xfa8adf9d00000000, 0x95c67a0600000000,
+ 0x10d8a45000000000, 0x7f9401cb00000000, 0x8f469fbc00000000,
+ 0xe00a3a2700000000, 0x6fe3a25300000000, 0x00af07c800000000,
+ 0xf07d99bf00000000, 0x9f313c2400000000, 0xeeaea85600000000,
+ 0x81e20dcd00000000, 0x713093ba00000000, 0x1e7c362100000000,
+ 0x9195ae5500000000, 0xfed90bce00000000, 0x0e0b95b900000000,
+ 0x6147302200000000, 0xec35bc5c00000000, 0x837919c700000000,
+ 0x73ab87b000000000, 0x1ce7222b00000000, 0x930eba5f00000000,
+ 0xfc421fc400000000, 0x0c9081b300000000, 0x63dc242800000000,
+ 0x1243b05a00000000, 0x7d0f15c100000000, 0x8ddd8bb600000000,
+ 0xe2912e2d00000000, 0x6d78b65900000000, 0x023413c200000000,
+ 0xf2e68db500000000, 0x9daa282e00000000, 0xe803954800000000,
+ 0x874f30d300000000, 0x779daea400000000, 0x18d10b3f00000000,
+ 0x9738934b00000000, 0xf87436d000000000, 0x08a6a8a700000000,
+ 0x67ea0d3c00000000, 0x1675994e00000000, 0x79393cd500000000,
+ 0x89eba2a200000000, 0xe6a7073900000000, 0x694e9f4d00000000,
+ 0x06023ad600000000, 0xf6d0a4a100000000, 0x999c013a00000000,
+ 0x14ee8d4400000000, 0x7ba228df00000000, 0x8b70b6a800000000,
+ 0xe43c133300000000, 0x6bd58b4700000000, 0x04992edc00000000,
+ 0xf44bb0ab00000000, 0x9b07153000000000, 0xea98814200000000,
+ 0x85d424d900000000, 0x7506baae00000000, 0x1a4a1f3500000000,
+ 0x95a3874100000000, 0xfaef22da00000000, 0x0a3dbcad00000000,
+ 0x6571193600000000},
+ {0x0000000000000000, 0x85d996dd00000000, 0x4bb55c6000000000,
+ 0xce6ccabd00000000, 0x966ab9c000000000, 0x13b32f1d00000000,
+ 0xdddfe5a000000000, 0x5806737d00000000, 0x6dd3035a00000000,
+ 0xe80a958700000000, 0x26665f3a00000000, 0xa3bfc9e700000000,
+ 0xfbb9ba9a00000000, 0x7e602c4700000000, 0xb00ce6fa00000000,
+ 0x35d5702700000000, 0xdaa607b400000000, 0x5f7f916900000000,
+ 0x91135bd400000000, 0x14cacd0900000000, 0x4cccbe7400000000,
+ 0xc91528a900000000, 0x0779e21400000000, 0x82a074c900000000,
+ 0xb77504ee00000000, 0x32ac923300000000, 0xfcc0588e00000000,
+ 0x7919ce5300000000, 0x211fbd2e00000000, 0xa4c62bf300000000,
+ 0x6aaae14e00000000, 0xef73779300000000, 0xf54b7eb300000000,
+ 0x7092e86e00000000, 0xbefe22d300000000, 0x3b27b40e00000000,
+ 0x6321c77300000000, 0xe6f851ae00000000, 0x28949b1300000000,
+ 0xad4d0dce00000000, 0x98987de900000000, 0x1d41eb3400000000,
+ 0xd32d218900000000, 0x56f4b75400000000, 0x0ef2c42900000000,
+ 0x8b2b52f400000000, 0x4547984900000000, 0xc09e0e9400000000,
+ 0x2fed790700000000, 0xaa34efda00000000, 0x6458256700000000,
+ 0xe181b3ba00000000, 0xb987c0c700000000, 0x3c5e561a00000000,
+ 0xf2329ca700000000, 0x77eb0a7a00000000, 0x423e7a5d00000000,
+ 0xc7e7ec8000000000, 0x098b263d00000000, 0x8c52b0e000000000,
+ 0xd454c39d00000000, 0x518d554000000000, 0x9fe19ffd00000000,
+ 0x1a38092000000000, 0xab918dbd00000000, 0x2e481b6000000000,
+ 0xe024d1dd00000000, 0x65fd470000000000, 0x3dfb347d00000000,
+ 0xb822a2a000000000, 0x764e681d00000000, 0xf397fec000000000,
+ 0xc6428ee700000000, 0x439b183a00000000, 0x8df7d28700000000,
+ 0x082e445a00000000, 0x5028372700000000, 0xd5f1a1fa00000000,
+ 0x1b9d6b4700000000, 0x9e44fd9a00000000, 0x71378a0900000000,
+ 0xf4ee1cd400000000, 0x3a82d66900000000, 0xbf5b40b400000000,
+ 0xe75d33c900000000, 0x6284a51400000000, 0xace86fa900000000,
+ 0x2931f97400000000, 0x1ce4895300000000, 0x993d1f8e00000000,
+ 0x5751d53300000000, 0xd28843ee00000000, 0x8a8e309300000000,
+ 0x0f57a64e00000000, 0xc13b6cf300000000, 0x44e2fa2e00000000,
+ 0x5edaf30e00000000, 0xdb0365d300000000, 0x156faf6e00000000,
+ 0x90b639b300000000, 0xc8b04ace00000000, 0x4d69dc1300000000,
+ 0x830516ae00000000, 0x06dc807300000000, 0x3309f05400000000,
+ 0xb6d0668900000000, 0x78bcac3400000000, 0xfd653ae900000000,
+ 0xa563499400000000, 0x20badf4900000000, 0xeed615f400000000,
+ 0x6b0f832900000000, 0x847cf4ba00000000, 0x01a5626700000000,
+ 0xcfc9a8da00000000, 0x4a103e0700000000, 0x12164d7a00000000,
+ 0x97cfdba700000000, 0x59a3111a00000000, 0xdc7a87c700000000,
+ 0xe9aff7e000000000, 0x6c76613d00000000, 0xa21aab8000000000,
+ 0x27c33d5d00000000, 0x7fc54e2000000000, 0xfa1cd8fd00000000,
+ 0x3470124000000000, 0xb1a9849d00000000, 0x17256aa000000000,
+ 0x92fcfc7d00000000, 0x5c9036c000000000, 0xd949a01d00000000,
+ 0x814fd36000000000, 0x049645bd00000000, 0xcafa8f0000000000,
+ 0x4f2319dd00000000, 0x7af669fa00000000, 0xff2fff2700000000,
+ 0x3143359a00000000, 0xb49aa34700000000, 0xec9cd03a00000000,
+ 0x694546e700000000, 0xa7298c5a00000000, 0x22f01a8700000000,
+ 0xcd836d1400000000, 0x485afbc900000000, 0x8636317400000000,
+ 0x03efa7a900000000, 0x5be9d4d400000000, 0xde30420900000000,
+ 0x105c88b400000000, 0x95851e6900000000, 0xa0506e4e00000000,
+ 0x2589f89300000000, 0xebe5322e00000000, 0x6e3ca4f300000000,
+ 0x363ad78e00000000, 0xb3e3415300000000, 0x7d8f8bee00000000,
+ 0xf8561d3300000000, 0xe26e141300000000, 0x67b782ce00000000,
+ 0xa9db487300000000, 0x2c02deae00000000, 0x7404add300000000,
+ 0xf1dd3b0e00000000, 0x3fb1f1b300000000, 0xba68676e00000000,
+ 0x8fbd174900000000, 0x0a64819400000000, 0xc4084b2900000000,
+ 0x41d1ddf400000000, 0x19d7ae8900000000, 0x9c0e385400000000,
+ 0x5262f2e900000000, 0xd7bb643400000000, 0x38c813a700000000,
+ 0xbd11857a00000000, 0x737d4fc700000000, 0xf6a4d91a00000000,
+ 0xaea2aa6700000000, 0x2b7b3cba00000000, 0xe517f60700000000,
+ 0x60ce60da00000000, 0x551b10fd00000000, 0xd0c2862000000000,
+ 0x1eae4c9d00000000, 0x9b77da4000000000, 0xc371a93d00000000,
+ 0x46a83fe000000000, 0x88c4f55d00000000, 0x0d1d638000000000,
+ 0xbcb4e71d00000000, 0x396d71c000000000, 0xf701bb7d00000000,
+ 0x72d82da000000000, 0x2ade5edd00000000, 0xaf07c80000000000,
+ 0x616b02bd00000000, 0xe4b2946000000000, 0xd167e44700000000,
+ 0x54be729a00000000, 0x9ad2b82700000000, 0x1f0b2efa00000000,
+ 0x470d5d8700000000, 0xc2d4cb5a00000000, 0x0cb801e700000000,
+ 0x8961973a00000000, 0x6612e0a900000000, 0xe3cb767400000000,
+ 0x2da7bcc900000000, 0xa87e2a1400000000, 0xf078596900000000,
+ 0x75a1cfb400000000, 0xbbcd050900000000, 0x3e1493d400000000,
+ 0x0bc1e3f300000000, 0x8e18752e00000000, 0x4074bf9300000000,
+ 0xc5ad294e00000000, 0x9dab5a3300000000, 0x1872ccee00000000,
+ 0xd61e065300000000, 0x53c7908e00000000, 0x49ff99ae00000000,
+ 0xcc260f7300000000, 0x024ac5ce00000000, 0x8793531300000000,
+ 0xdf95206e00000000, 0x5a4cb6b300000000, 0x94207c0e00000000,
+ 0x11f9ead300000000, 0x242c9af400000000, 0xa1f50c2900000000,
+ 0x6f99c69400000000, 0xea40504900000000, 0xb246233400000000,
+ 0x379fb5e900000000, 0xf9f37f5400000000, 0x7c2ae98900000000,
+ 0x93599e1a00000000, 0x168008c700000000, 0xd8ecc27a00000000,
+ 0x5d3554a700000000, 0x053327da00000000, 0x80eab10700000000,
+ 0x4e867bba00000000, 0xcb5fed6700000000, 0xfe8a9d4000000000,
+ 0x7b530b9d00000000, 0xb53fc12000000000, 0x30e657fd00000000,
+ 0x68e0248000000000, 0xed39b25d00000000, 0x235578e000000000,
+ 0xa68cee3d00000000},
+ {0x0000000000000000, 0x76e10f9d00000000, 0xadc46ee100000000,
+ 0xdb25617c00000000, 0x1b8fac1900000000, 0x6d6ea38400000000,
+ 0xb64bc2f800000000, 0xc0aacd6500000000, 0x361e593300000000,
+ 0x40ff56ae00000000, 0x9bda37d200000000, 0xed3b384f00000000,
+ 0x2d91f52a00000000, 0x5b70fab700000000, 0x80559bcb00000000,
+ 0xf6b4945600000000, 0x6c3cb26600000000, 0x1addbdfb00000000,
+ 0xc1f8dc8700000000, 0xb719d31a00000000, 0x77b31e7f00000000,
+ 0x015211e200000000, 0xda77709e00000000, 0xac967f0300000000,
+ 0x5a22eb5500000000, 0x2cc3e4c800000000, 0xf7e685b400000000,
+ 0x81078a2900000000, 0x41ad474c00000000, 0x374c48d100000000,
+ 0xec6929ad00000000, 0x9a88263000000000, 0xd87864cd00000000,
+ 0xae996b5000000000, 0x75bc0a2c00000000, 0x035d05b100000000,
+ 0xc3f7c8d400000000, 0xb516c74900000000, 0x6e33a63500000000,
+ 0x18d2a9a800000000, 0xee663dfe00000000, 0x9887326300000000,
+ 0x43a2531f00000000, 0x35435c8200000000, 0xf5e991e700000000,
+ 0x83089e7a00000000, 0x582dff0600000000, 0x2eccf09b00000000,
+ 0xb444d6ab00000000, 0xc2a5d93600000000, 0x1980b84a00000000,
+ 0x6f61b7d700000000, 0xafcb7ab200000000, 0xd92a752f00000000,
+ 0x020f145300000000, 0x74ee1bce00000000, 0x825a8f9800000000,
+ 0xf4bb800500000000, 0x2f9ee17900000000, 0x597feee400000000,
+ 0x99d5238100000000, 0xef342c1c00000000, 0x34114d6000000000,
+ 0x42f042fd00000000, 0xf1f7b94100000000, 0x8716b6dc00000000,
+ 0x5c33d7a000000000, 0x2ad2d83d00000000, 0xea78155800000000,
+ 0x9c991ac500000000, 0x47bc7bb900000000, 0x315d742400000000,
+ 0xc7e9e07200000000, 0xb108efef00000000, 0x6a2d8e9300000000,
+ 0x1ccc810e00000000, 0xdc664c6b00000000, 0xaa8743f600000000,
+ 0x71a2228a00000000, 0x07432d1700000000, 0x9dcb0b2700000000,
+ 0xeb2a04ba00000000, 0x300f65c600000000, 0x46ee6a5b00000000,
+ 0x8644a73e00000000, 0xf0a5a8a300000000, 0x2b80c9df00000000,
+ 0x5d61c64200000000, 0xabd5521400000000, 0xdd345d8900000000,
+ 0x06113cf500000000, 0x70f0336800000000, 0xb05afe0d00000000,
+ 0xc6bbf19000000000, 0x1d9e90ec00000000, 0x6b7f9f7100000000,
+ 0x298fdd8c00000000, 0x5f6ed21100000000, 0x844bb36d00000000,
+ 0xf2aabcf000000000, 0x3200719500000000, 0x44e17e0800000000,
+ 0x9fc41f7400000000, 0xe92510e900000000, 0x1f9184bf00000000,
+ 0x69708b2200000000, 0xb255ea5e00000000, 0xc4b4e5c300000000,
+ 0x041e28a600000000, 0x72ff273b00000000, 0xa9da464700000000,
+ 0xdf3b49da00000000, 0x45b36fea00000000, 0x3352607700000000,
+ 0xe877010b00000000, 0x9e960e9600000000, 0x5e3cc3f300000000,
+ 0x28ddcc6e00000000, 0xf3f8ad1200000000, 0x8519a28f00000000,
+ 0x73ad36d900000000, 0x054c394400000000, 0xde69583800000000,
+ 0xa88857a500000000, 0x68229ac000000000, 0x1ec3955d00000000,
+ 0xc5e6f42100000000, 0xb307fbbc00000000, 0xe2ef738300000000,
+ 0x940e7c1e00000000, 0x4f2b1d6200000000, 0x39ca12ff00000000,
+ 0xf960df9a00000000, 0x8f81d00700000000, 0x54a4b17b00000000,
+ 0x2245bee600000000, 0xd4f12ab000000000, 0xa210252d00000000,
+ 0x7935445100000000, 0x0fd44bcc00000000, 0xcf7e86a900000000,
+ 0xb99f893400000000, 0x62bae84800000000, 0x145be7d500000000,
+ 0x8ed3c1e500000000, 0xf832ce7800000000, 0x2317af0400000000,
+ 0x55f6a09900000000, 0x955c6dfc00000000, 0xe3bd626100000000,
+ 0x3898031d00000000, 0x4e790c8000000000, 0xb8cd98d600000000,
+ 0xce2c974b00000000, 0x1509f63700000000, 0x63e8f9aa00000000,
+ 0xa34234cf00000000, 0xd5a33b5200000000, 0x0e865a2e00000000,
+ 0x786755b300000000, 0x3a97174e00000000, 0x4c7618d300000000,
+ 0x975379af00000000, 0xe1b2763200000000, 0x2118bb5700000000,
+ 0x57f9b4ca00000000, 0x8cdcd5b600000000, 0xfa3dda2b00000000,
+ 0x0c894e7d00000000, 0x7a6841e000000000, 0xa14d209c00000000,
+ 0xd7ac2f0100000000, 0x1706e26400000000, 0x61e7edf900000000,
+ 0xbac28c8500000000, 0xcc23831800000000, 0x56aba52800000000,
+ 0x204aaab500000000, 0xfb6fcbc900000000, 0x8d8ec45400000000,
+ 0x4d24093100000000, 0x3bc506ac00000000, 0xe0e067d000000000,
+ 0x9601684d00000000, 0x60b5fc1b00000000, 0x1654f38600000000,
+ 0xcd7192fa00000000, 0xbb909d6700000000, 0x7b3a500200000000,
+ 0x0ddb5f9f00000000, 0xd6fe3ee300000000, 0xa01f317e00000000,
+ 0x1318cac200000000, 0x65f9c55f00000000, 0xbedca42300000000,
+ 0xc83dabbe00000000, 0x089766db00000000, 0x7e76694600000000,
+ 0xa553083a00000000, 0xd3b207a700000000, 0x250693f100000000,
+ 0x53e79c6c00000000, 0x88c2fd1000000000, 0xfe23f28d00000000,
+ 0x3e893fe800000000, 0x4868307500000000, 0x934d510900000000,
+ 0xe5ac5e9400000000, 0x7f2478a400000000, 0x09c5773900000000,
+ 0xd2e0164500000000, 0xa40119d800000000, 0x64abd4bd00000000,
+ 0x124adb2000000000, 0xc96fba5c00000000, 0xbf8eb5c100000000,
+ 0x493a219700000000, 0x3fdb2e0a00000000, 0xe4fe4f7600000000,
+ 0x921f40eb00000000, 0x52b58d8e00000000, 0x2454821300000000,
+ 0xff71e36f00000000, 0x8990ecf200000000, 0xcb60ae0f00000000,
+ 0xbd81a19200000000, 0x66a4c0ee00000000, 0x1045cf7300000000,
+ 0xd0ef021600000000, 0xa60e0d8b00000000, 0x7d2b6cf700000000,
+ 0x0bca636a00000000, 0xfd7ef73c00000000, 0x8b9ff8a100000000,
+ 0x50ba99dd00000000, 0x265b964000000000, 0xe6f15b2500000000,
+ 0x901054b800000000, 0x4b3535c400000000, 0x3dd43a5900000000,
+ 0xa75c1c6900000000, 0xd1bd13f400000000, 0x0a98728800000000,
+ 0x7c797d1500000000, 0xbcd3b07000000000, 0xca32bfed00000000,
+ 0x1117de9100000000, 0x67f6d10c00000000, 0x9142455a00000000,
+ 0xe7a34ac700000000, 0x3c862bbb00000000, 0x4a67242600000000,
+ 0x8acde94300000000, 0xfc2ce6de00000000, 0x270987a200000000,
+ 0x51e8883f00000000},
+ {0x0000000000000000, 0xe8dbfbb900000000, 0x91b186a800000000,
+ 0x796a7d1100000000, 0x63657c8a00000000, 0x8bbe873300000000,
+ 0xf2d4fa2200000000, 0x1a0f019b00000000, 0x87cc89cf00000000,
+ 0x6f17727600000000, 0x167d0f6700000000, 0xfea6f4de00000000,
+ 0xe4a9f54500000000, 0x0c720efc00000000, 0x751873ed00000000,
+ 0x9dc3885400000000, 0x4f9f624400000000, 0xa74499fd00000000,
+ 0xde2ee4ec00000000, 0x36f51f5500000000, 0x2cfa1ece00000000,
+ 0xc421e57700000000, 0xbd4b986600000000, 0x559063df00000000,
+ 0xc853eb8b00000000, 0x2088103200000000, 0x59e26d2300000000,
+ 0xb139969a00000000, 0xab36970100000000, 0x43ed6cb800000000,
+ 0x3a8711a900000000, 0xd25cea1000000000, 0x9e3ec58800000000,
+ 0x76e53e3100000000, 0x0f8f432000000000, 0xe754b89900000000,
+ 0xfd5bb90200000000, 0x158042bb00000000, 0x6cea3faa00000000,
+ 0x8431c41300000000, 0x19f24c4700000000, 0xf129b7fe00000000,
+ 0x8843caef00000000, 0x6098315600000000, 0x7a9730cd00000000,
+ 0x924ccb7400000000, 0xeb26b66500000000, 0x03fd4ddc00000000,
+ 0xd1a1a7cc00000000, 0x397a5c7500000000, 0x4010216400000000,
+ 0xa8cbdadd00000000, 0xb2c4db4600000000, 0x5a1f20ff00000000,
+ 0x23755dee00000000, 0xcbaea65700000000, 0x566d2e0300000000,
+ 0xbeb6d5ba00000000, 0xc7dca8ab00000000, 0x2f07531200000000,
+ 0x3508528900000000, 0xddd3a93000000000, 0xa4b9d42100000000,
+ 0x4c622f9800000000, 0x7d7bfbca00000000, 0x95a0007300000000,
+ 0xecca7d6200000000, 0x041186db00000000, 0x1e1e874000000000,
+ 0xf6c57cf900000000, 0x8faf01e800000000, 0x6774fa5100000000,
+ 0xfab7720500000000, 0x126c89bc00000000, 0x6b06f4ad00000000,
+ 0x83dd0f1400000000, 0x99d20e8f00000000, 0x7109f53600000000,
+ 0x0863882700000000, 0xe0b8739e00000000, 0x32e4998e00000000,
+ 0xda3f623700000000, 0xa3551f2600000000, 0x4b8ee49f00000000,
+ 0x5181e50400000000, 0xb95a1ebd00000000, 0xc03063ac00000000,
+ 0x28eb981500000000, 0xb528104100000000, 0x5df3ebf800000000,
+ 0x249996e900000000, 0xcc426d5000000000, 0xd64d6ccb00000000,
+ 0x3e96977200000000, 0x47fcea6300000000, 0xaf2711da00000000,
+ 0xe3453e4200000000, 0x0b9ec5fb00000000, 0x72f4b8ea00000000,
+ 0x9a2f435300000000, 0x802042c800000000, 0x68fbb97100000000,
+ 0x1191c46000000000, 0xf94a3fd900000000, 0x6489b78d00000000,
+ 0x8c524c3400000000, 0xf538312500000000, 0x1de3ca9c00000000,
+ 0x07eccb0700000000, 0xef3730be00000000, 0x965d4daf00000000,
+ 0x7e86b61600000000, 0xacda5c0600000000, 0x4401a7bf00000000,
+ 0x3d6bdaae00000000, 0xd5b0211700000000, 0xcfbf208c00000000,
+ 0x2764db3500000000, 0x5e0ea62400000000, 0xb6d55d9d00000000,
+ 0x2b16d5c900000000, 0xc3cd2e7000000000, 0xbaa7536100000000,
+ 0x527ca8d800000000, 0x4873a94300000000, 0xa0a852fa00000000,
+ 0xd9c22feb00000000, 0x3119d45200000000, 0xbbf0874e00000000,
+ 0x532b7cf700000000, 0x2a4101e600000000, 0xc29afa5f00000000,
+ 0xd895fbc400000000, 0x304e007d00000000, 0x49247d6c00000000,
+ 0xa1ff86d500000000, 0x3c3c0e8100000000, 0xd4e7f53800000000,
+ 0xad8d882900000000, 0x4556739000000000, 0x5f59720b00000000,
+ 0xb78289b200000000, 0xcee8f4a300000000, 0x26330f1a00000000,
+ 0xf46fe50a00000000, 0x1cb41eb300000000, 0x65de63a200000000,
+ 0x8d05981b00000000, 0x970a998000000000, 0x7fd1623900000000,
+ 0x06bb1f2800000000, 0xee60e49100000000, 0x73a36cc500000000,
+ 0x9b78977c00000000, 0xe212ea6d00000000, 0x0ac911d400000000,
+ 0x10c6104f00000000, 0xf81debf600000000, 0x817796e700000000,
+ 0x69ac6d5e00000000, 0x25ce42c600000000, 0xcd15b97f00000000,
+ 0xb47fc46e00000000, 0x5ca43fd700000000, 0x46ab3e4c00000000,
+ 0xae70c5f500000000, 0xd71ab8e400000000, 0x3fc1435d00000000,
+ 0xa202cb0900000000, 0x4ad930b000000000, 0x33b34da100000000,
+ 0xdb68b61800000000, 0xc167b78300000000, 0x29bc4c3a00000000,
+ 0x50d6312b00000000, 0xb80dca9200000000, 0x6a51208200000000,
+ 0x828adb3b00000000, 0xfbe0a62a00000000, 0x133b5d9300000000,
+ 0x09345c0800000000, 0xe1efa7b100000000, 0x9885daa000000000,
+ 0x705e211900000000, 0xed9da94d00000000, 0x054652f400000000,
+ 0x7c2c2fe500000000, 0x94f7d45c00000000, 0x8ef8d5c700000000,
+ 0x66232e7e00000000, 0x1f49536f00000000, 0xf792a8d600000000,
+ 0xc68b7c8400000000, 0x2e50873d00000000, 0x573afa2c00000000,
+ 0xbfe1019500000000, 0xa5ee000e00000000, 0x4d35fbb700000000,
+ 0x345f86a600000000, 0xdc847d1f00000000, 0x4147f54b00000000,
+ 0xa99c0ef200000000, 0xd0f673e300000000, 0x382d885a00000000,
+ 0x222289c100000000, 0xcaf9727800000000, 0xb3930f6900000000,
+ 0x5b48f4d000000000, 0x89141ec000000000, 0x61cfe57900000000,
+ 0x18a5986800000000, 0xf07e63d100000000, 0xea71624a00000000,
+ 0x02aa99f300000000, 0x7bc0e4e200000000, 0x931b1f5b00000000,
+ 0x0ed8970f00000000, 0xe6036cb600000000, 0x9f6911a700000000,
+ 0x77b2ea1e00000000, 0x6dbdeb8500000000, 0x8566103c00000000,
+ 0xfc0c6d2d00000000, 0x14d7969400000000, 0x58b5b90c00000000,
+ 0xb06e42b500000000, 0xc9043fa400000000, 0x21dfc41d00000000,
+ 0x3bd0c58600000000, 0xd30b3e3f00000000, 0xaa61432e00000000,
+ 0x42bab89700000000, 0xdf7930c300000000, 0x37a2cb7a00000000,
+ 0x4ec8b66b00000000, 0xa6134dd200000000, 0xbc1c4c4900000000,
+ 0x54c7b7f000000000, 0x2dadcae100000000, 0xc576315800000000,
+ 0x172adb4800000000, 0xfff120f100000000, 0x869b5de000000000,
+ 0x6e40a65900000000, 0x744fa7c200000000, 0x9c945c7b00000000,
+ 0xe5fe216a00000000, 0x0d25dad300000000, 0x90e6528700000000,
+ 0x783da93e00000000, 0x0157d42f00000000, 0xe98c2f9600000000,
+ 0xf3832e0d00000000, 0x1b58d5b400000000, 0x6232a8a500000000,
+ 0x8ae9531c00000000},
+ {0x0000000000000000, 0x919168ae00000000, 0x6325a08700000000,
+ 0xf2b4c82900000000, 0x874c31d400000000, 0x16dd597a00000000,
+ 0xe469915300000000, 0x75f8f9fd00000000, 0x4f9f137300000000,
+ 0xde0e7bdd00000000, 0x2cbab3f400000000, 0xbd2bdb5a00000000,
+ 0xc8d322a700000000, 0x59424a0900000000, 0xabf6822000000000,
+ 0x3a67ea8e00000000, 0x9e3e27e600000000, 0x0faf4f4800000000,
+ 0xfd1b876100000000, 0x6c8aefcf00000000, 0x1972163200000000,
+ 0x88e37e9c00000000, 0x7a57b6b500000000, 0xebc6de1b00000000,
+ 0xd1a1349500000000, 0x40305c3b00000000, 0xb284941200000000,
+ 0x2315fcbc00000000, 0x56ed054100000000, 0xc77c6def00000000,
+ 0x35c8a5c600000000, 0xa459cd6800000000, 0x7d7b3f1700000000,
+ 0xecea57b900000000, 0x1e5e9f9000000000, 0x8fcff73e00000000,
+ 0xfa370ec300000000, 0x6ba6666d00000000, 0x9912ae4400000000,
+ 0x0883c6ea00000000, 0x32e42c6400000000, 0xa37544ca00000000,
+ 0x51c18ce300000000, 0xc050e44d00000000, 0xb5a81db000000000,
+ 0x2439751e00000000, 0xd68dbd3700000000, 0x471cd59900000000,
+ 0xe34518f100000000, 0x72d4705f00000000, 0x8060b87600000000,
+ 0x11f1d0d800000000, 0x6409292500000000, 0xf598418b00000000,
+ 0x072c89a200000000, 0x96bde10c00000000, 0xacda0b8200000000,
+ 0x3d4b632c00000000, 0xcfffab0500000000, 0x5e6ec3ab00000000,
+ 0x2b963a5600000000, 0xba0752f800000000, 0x48b39ad100000000,
+ 0xd922f27f00000000, 0xfaf67e2e00000000, 0x6b67168000000000,
+ 0x99d3dea900000000, 0x0842b60700000000, 0x7dba4ffa00000000,
+ 0xec2b275400000000, 0x1e9fef7d00000000, 0x8f0e87d300000000,
+ 0xb5696d5d00000000, 0x24f805f300000000, 0xd64ccdda00000000,
+ 0x47dda57400000000, 0x32255c8900000000, 0xa3b4342700000000,
+ 0x5100fc0e00000000, 0xc09194a000000000, 0x64c859c800000000,
+ 0xf559316600000000, 0x07edf94f00000000, 0x967c91e100000000,
+ 0xe384681c00000000, 0x721500b200000000, 0x80a1c89b00000000,
+ 0x1130a03500000000, 0x2b574abb00000000, 0xbac6221500000000,
+ 0x4872ea3c00000000, 0xd9e3829200000000, 0xac1b7b6f00000000,
+ 0x3d8a13c100000000, 0xcf3edbe800000000, 0x5eafb34600000000,
+ 0x878d413900000000, 0x161c299700000000, 0xe4a8e1be00000000,
+ 0x7539891000000000, 0x00c170ed00000000, 0x9150184300000000,
+ 0x63e4d06a00000000, 0xf275b8c400000000, 0xc812524a00000000,
+ 0x59833ae400000000, 0xab37f2cd00000000, 0x3aa69a6300000000,
+ 0x4f5e639e00000000, 0xdecf0b3000000000, 0x2c7bc31900000000,
+ 0xbdeaabb700000000, 0x19b366df00000000, 0x88220e7100000000,
+ 0x7a96c65800000000, 0xeb07aef600000000, 0x9eff570b00000000,
+ 0x0f6e3fa500000000, 0xfddaf78c00000000, 0x6c4b9f2200000000,
+ 0x562c75ac00000000, 0xc7bd1d0200000000, 0x3509d52b00000000,
+ 0xa498bd8500000000, 0xd160447800000000, 0x40f12cd600000000,
+ 0xb245e4ff00000000, 0x23d48c5100000000, 0xf4edfd5c00000000,
+ 0x657c95f200000000, 0x97c85ddb00000000, 0x0659357500000000,
+ 0x73a1cc8800000000, 0xe230a42600000000, 0x10846c0f00000000,
+ 0x811504a100000000, 0xbb72ee2f00000000, 0x2ae3868100000000,
+ 0xd8574ea800000000, 0x49c6260600000000, 0x3c3edffb00000000,
+ 0xadafb75500000000, 0x5f1b7f7c00000000, 0xce8a17d200000000,
+ 0x6ad3daba00000000, 0xfb42b21400000000, 0x09f67a3d00000000,
+ 0x9867129300000000, 0xed9feb6e00000000, 0x7c0e83c000000000,
+ 0x8eba4be900000000, 0x1f2b234700000000, 0x254cc9c900000000,
+ 0xb4dda16700000000, 0x4669694e00000000, 0xd7f801e000000000,
+ 0xa200f81d00000000, 0x339190b300000000, 0xc125589a00000000,
+ 0x50b4303400000000, 0x8996c24b00000000, 0x1807aae500000000,
+ 0xeab362cc00000000, 0x7b220a6200000000, 0x0edaf39f00000000,
+ 0x9f4b9b3100000000, 0x6dff531800000000, 0xfc6e3bb600000000,
+ 0xc609d13800000000, 0x5798b99600000000, 0xa52c71bf00000000,
+ 0x34bd191100000000, 0x4145e0ec00000000, 0xd0d4884200000000,
+ 0x2260406b00000000, 0xb3f128c500000000, 0x17a8e5ad00000000,
+ 0x86398d0300000000, 0x748d452a00000000, 0xe51c2d8400000000,
+ 0x90e4d47900000000, 0x0175bcd700000000, 0xf3c174fe00000000,
+ 0x62501c5000000000, 0x5837f6de00000000, 0xc9a69e7000000000,
+ 0x3b12565900000000, 0xaa833ef700000000, 0xdf7bc70a00000000,
+ 0x4eeaafa400000000, 0xbc5e678d00000000, 0x2dcf0f2300000000,
+ 0x0e1b837200000000, 0x9f8aebdc00000000, 0x6d3e23f500000000,
+ 0xfcaf4b5b00000000, 0x8957b2a600000000, 0x18c6da0800000000,
+ 0xea72122100000000, 0x7be37a8f00000000, 0x4184900100000000,
+ 0xd015f8af00000000, 0x22a1308600000000, 0xb330582800000000,
+ 0xc6c8a1d500000000, 0x5759c97b00000000, 0xa5ed015200000000,
+ 0x347c69fc00000000, 0x9025a49400000000, 0x01b4cc3a00000000,
+ 0xf300041300000000, 0x62916cbd00000000, 0x1769954000000000,
+ 0x86f8fdee00000000, 0x744c35c700000000, 0xe5dd5d6900000000,
+ 0xdfbab7e700000000, 0x4e2bdf4900000000, 0xbc9f176000000000,
+ 0x2d0e7fce00000000, 0x58f6863300000000, 0xc967ee9d00000000,
+ 0x3bd326b400000000, 0xaa424e1a00000000, 0x7360bc6500000000,
+ 0xe2f1d4cb00000000, 0x10451ce200000000, 0x81d4744c00000000,
+ 0xf42c8db100000000, 0x65bde51f00000000, 0x97092d3600000000,
+ 0x0698459800000000, 0x3cffaf1600000000, 0xad6ec7b800000000,
+ 0x5fda0f9100000000, 0xce4b673f00000000, 0xbbb39ec200000000,
+ 0x2a22f66c00000000, 0xd8963e4500000000, 0x490756eb00000000,
+ 0xed5e9b8300000000, 0x7ccff32d00000000, 0x8e7b3b0400000000,
+ 0x1fea53aa00000000, 0x6a12aa5700000000, 0xfb83c2f900000000,
+ 0x09370ad000000000, 0x98a6627e00000000, 0xa2c188f000000000,
+ 0x3350e05e00000000, 0xc1e4287700000000, 0x507540d900000000,
+ 0x258db92400000000, 0xb41cd18a00000000, 0x46a819a300000000,
+ 0xd739710d00000000}};
+
+#else /* W == 4 */
+
+local const z_crc_t FAR crc_braid_table[][256] = {
+ {0x00000000, 0xccaa009e, 0x4225077d, 0x8e8f07e3, 0x844a0efa,
+ 0x48e00e64, 0xc66f0987, 0x0ac50919, 0xd3e51bb5, 0x1f4f1b2b,
+ 0x91c01cc8, 0x5d6a1c56, 0x57af154f, 0x9b0515d1, 0x158a1232,
+ 0xd92012ac, 0x7cbb312b, 0xb01131b5, 0x3e9e3656, 0xf23436c8,
+ 0xf8f13fd1, 0x345b3f4f, 0xbad438ac, 0x767e3832, 0xaf5e2a9e,
+ 0x63f42a00, 0xed7b2de3, 0x21d12d7d, 0x2b142464, 0xe7be24fa,
+ 0x69312319, 0xa59b2387, 0xf9766256, 0x35dc62c8, 0xbb53652b,
+ 0x77f965b5, 0x7d3c6cac, 0xb1966c32, 0x3f196bd1, 0xf3b36b4f,
+ 0x2a9379e3, 0xe639797d, 0x68b67e9e, 0xa41c7e00, 0xaed97719,
+ 0x62737787, 0xecfc7064, 0x205670fa, 0x85cd537d, 0x496753e3,
+ 0xc7e85400, 0x0b42549e, 0x01875d87, 0xcd2d5d19, 0x43a25afa,
+ 0x8f085a64, 0x562848c8, 0x9a824856, 0x140d4fb5, 0xd8a74f2b,
+ 0xd2624632, 0x1ec846ac, 0x9047414f, 0x5ced41d1, 0x299dc2ed,
+ 0xe537c273, 0x6bb8c590, 0xa712c50e, 0xadd7cc17, 0x617dcc89,
+ 0xeff2cb6a, 0x2358cbf4, 0xfa78d958, 0x36d2d9c6, 0xb85dde25,
+ 0x74f7debb, 0x7e32d7a2, 0xb298d73c, 0x3c17d0df, 0xf0bdd041,
+ 0x5526f3c6, 0x998cf358, 0x1703f4bb, 0xdba9f425, 0xd16cfd3c,
+ 0x1dc6fda2, 0x9349fa41, 0x5fe3fadf, 0x86c3e873, 0x4a69e8ed,
+ 0xc4e6ef0e, 0x084cef90, 0x0289e689, 0xce23e617, 0x40ace1f4,
+ 0x8c06e16a, 0xd0eba0bb, 0x1c41a025, 0x92cea7c6, 0x5e64a758,
+ 0x54a1ae41, 0x980baedf, 0x1684a93c, 0xda2ea9a2, 0x030ebb0e,
+ 0xcfa4bb90, 0x412bbc73, 0x8d81bced, 0x8744b5f4, 0x4beeb56a,
+ 0xc561b289, 0x09cbb217, 0xac509190, 0x60fa910e, 0xee7596ed,
+ 0x22df9673, 0x281a9f6a, 0xe4b09ff4, 0x6a3f9817, 0xa6959889,
+ 0x7fb58a25, 0xb31f8abb, 0x3d908d58, 0xf13a8dc6, 0xfbff84df,
+ 0x37558441, 0xb9da83a2, 0x7570833c, 0x533b85da, 0x9f918544,
+ 0x111e82a7, 0xddb48239, 0xd7718b20, 0x1bdb8bbe, 0x95548c5d,
+ 0x59fe8cc3, 0x80de9e6f, 0x4c749ef1, 0xc2fb9912, 0x0e51998c,
+ 0x04949095, 0xc83e900b, 0x46b197e8, 0x8a1b9776, 0x2f80b4f1,
+ 0xe32ab46f, 0x6da5b38c, 0xa10fb312, 0xabcaba0b, 0x6760ba95,
+ 0xe9efbd76, 0x2545bde8, 0xfc65af44, 0x30cfafda, 0xbe40a839,
+ 0x72eaa8a7, 0x782fa1be, 0xb485a120, 0x3a0aa6c3, 0xf6a0a65d,
+ 0xaa4de78c, 0x66e7e712, 0xe868e0f1, 0x24c2e06f, 0x2e07e976,
+ 0xe2ade9e8, 0x6c22ee0b, 0xa088ee95, 0x79a8fc39, 0xb502fca7,
+ 0x3b8dfb44, 0xf727fbda, 0xfde2f2c3, 0x3148f25d, 0xbfc7f5be,
+ 0x736df520, 0xd6f6d6a7, 0x1a5cd639, 0x94d3d1da, 0x5879d144,
+ 0x52bcd85d, 0x9e16d8c3, 0x1099df20, 0xdc33dfbe, 0x0513cd12,
+ 0xc9b9cd8c, 0x4736ca6f, 0x8b9ccaf1, 0x8159c3e8, 0x4df3c376,
+ 0xc37cc495, 0x0fd6c40b, 0x7aa64737, 0xb60c47a9, 0x3883404a,
+ 0xf42940d4, 0xfeec49cd, 0x32464953, 0xbcc94eb0, 0x70634e2e,
+ 0xa9435c82, 0x65e95c1c, 0xeb665bff, 0x27cc5b61, 0x2d095278,
+ 0xe1a352e6, 0x6f2c5505, 0xa386559b, 0x061d761c, 0xcab77682,
+ 0x44387161, 0x889271ff, 0x825778e6, 0x4efd7878, 0xc0727f9b,
+ 0x0cd87f05, 0xd5f86da9, 0x19526d37, 0x97dd6ad4, 0x5b776a4a,
+ 0x51b26353, 0x9d1863cd, 0x1397642e, 0xdf3d64b0, 0x83d02561,
+ 0x4f7a25ff, 0xc1f5221c, 0x0d5f2282, 0x079a2b9b, 0xcb302b05,
+ 0x45bf2ce6, 0x89152c78, 0x50353ed4, 0x9c9f3e4a, 0x121039a9,
+ 0xdeba3937, 0xd47f302e, 0x18d530b0, 0x965a3753, 0x5af037cd,
+ 0xff6b144a, 0x33c114d4, 0xbd4e1337, 0x71e413a9, 0x7b211ab0,
+ 0xb78b1a2e, 0x39041dcd, 0xf5ae1d53, 0x2c8e0fff, 0xe0240f61,
+ 0x6eab0882, 0xa201081c, 0xa8c40105, 0x646e019b, 0xeae10678,
+ 0x264b06e6},
+ {0x00000000, 0xa6770bb4, 0x979f1129, 0x31e81a9d, 0xf44f2413,
+ 0x52382fa7, 0x63d0353a, 0xc5a73e8e, 0x33ef4e67, 0x959845d3,
+ 0xa4705f4e, 0x020754fa, 0xc7a06a74, 0x61d761c0, 0x503f7b5d,
+ 0xf64870e9, 0x67de9cce, 0xc1a9977a, 0xf0418de7, 0x56368653,
+ 0x9391b8dd, 0x35e6b369, 0x040ea9f4, 0xa279a240, 0x5431d2a9,
+ 0xf246d91d, 0xc3aec380, 0x65d9c834, 0xa07ef6ba, 0x0609fd0e,
+ 0x37e1e793, 0x9196ec27, 0xcfbd399c, 0x69ca3228, 0x582228b5,
+ 0xfe552301, 0x3bf21d8f, 0x9d85163b, 0xac6d0ca6, 0x0a1a0712,
+ 0xfc5277fb, 0x5a257c4f, 0x6bcd66d2, 0xcdba6d66, 0x081d53e8,
+ 0xae6a585c, 0x9f8242c1, 0x39f54975, 0xa863a552, 0x0e14aee6,
+ 0x3ffcb47b, 0x998bbfcf, 0x5c2c8141, 0xfa5b8af5, 0xcbb39068,
+ 0x6dc49bdc, 0x9b8ceb35, 0x3dfbe081, 0x0c13fa1c, 0xaa64f1a8,
+ 0x6fc3cf26, 0xc9b4c492, 0xf85cde0f, 0x5e2bd5bb, 0x440b7579,
+ 0xe27c7ecd, 0xd3946450, 0x75e36fe4, 0xb044516a, 0x16335ade,
+ 0x27db4043, 0x81ac4bf7, 0x77e43b1e, 0xd19330aa, 0xe07b2a37,
+ 0x460c2183, 0x83ab1f0d, 0x25dc14b9, 0x14340e24, 0xb2430590,
+ 0x23d5e9b7, 0x85a2e203, 0xb44af89e, 0x123df32a, 0xd79acda4,
+ 0x71edc610, 0x4005dc8d, 0xe672d739, 0x103aa7d0, 0xb64dac64,
+ 0x87a5b6f9, 0x21d2bd4d, 0xe47583c3, 0x42028877, 0x73ea92ea,
+ 0xd59d995e, 0x8bb64ce5, 0x2dc14751, 0x1c295dcc, 0xba5e5678,
+ 0x7ff968f6, 0xd98e6342, 0xe86679df, 0x4e11726b, 0xb8590282,
+ 0x1e2e0936, 0x2fc613ab, 0x89b1181f, 0x4c162691, 0xea612d25,
+ 0xdb8937b8, 0x7dfe3c0c, 0xec68d02b, 0x4a1fdb9f, 0x7bf7c102,
+ 0xdd80cab6, 0x1827f438, 0xbe50ff8c, 0x8fb8e511, 0x29cfeea5,
+ 0xdf879e4c, 0x79f095f8, 0x48188f65, 0xee6f84d1, 0x2bc8ba5f,
+ 0x8dbfb1eb, 0xbc57ab76, 0x1a20a0c2, 0x8816eaf2, 0x2e61e146,
+ 0x1f89fbdb, 0xb9fef06f, 0x7c59cee1, 0xda2ec555, 0xebc6dfc8,
+ 0x4db1d47c, 0xbbf9a495, 0x1d8eaf21, 0x2c66b5bc, 0x8a11be08,
+ 0x4fb68086, 0xe9c18b32, 0xd82991af, 0x7e5e9a1b, 0xefc8763c,
+ 0x49bf7d88, 0x78576715, 0xde206ca1, 0x1b87522f, 0xbdf0599b,
+ 0x8c184306, 0x2a6f48b2, 0xdc27385b, 0x7a5033ef, 0x4bb82972,
+ 0xedcf22c6, 0x28681c48, 0x8e1f17fc, 0xbff70d61, 0x198006d5,
+ 0x47abd36e, 0xe1dcd8da, 0xd034c247, 0x7643c9f3, 0xb3e4f77d,
+ 0x1593fcc9, 0x247be654, 0x820cede0, 0x74449d09, 0xd23396bd,
+ 0xe3db8c20, 0x45ac8794, 0x800bb91a, 0x267cb2ae, 0x1794a833,
+ 0xb1e3a387, 0x20754fa0, 0x86024414, 0xb7ea5e89, 0x119d553d,
+ 0xd43a6bb3, 0x724d6007, 0x43a57a9a, 0xe5d2712e, 0x139a01c7,
+ 0xb5ed0a73, 0x840510ee, 0x22721b5a, 0xe7d525d4, 0x41a22e60,
+ 0x704a34fd, 0xd63d3f49, 0xcc1d9f8b, 0x6a6a943f, 0x5b828ea2,
+ 0xfdf58516, 0x3852bb98, 0x9e25b02c, 0xafcdaab1, 0x09baa105,
+ 0xfff2d1ec, 0x5985da58, 0x686dc0c5, 0xce1acb71, 0x0bbdf5ff,
+ 0xadcafe4b, 0x9c22e4d6, 0x3a55ef62, 0xabc30345, 0x0db408f1,
+ 0x3c5c126c, 0x9a2b19d8, 0x5f8c2756, 0xf9fb2ce2, 0xc813367f,
+ 0x6e643dcb, 0x982c4d22, 0x3e5b4696, 0x0fb35c0b, 0xa9c457bf,
+ 0x6c636931, 0xca146285, 0xfbfc7818, 0x5d8b73ac, 0x03a0a617,
+ 0xa5d7ada3, 0x943fb73e, 0x3248bc8a, 0xf7ef8204, 0x519889b0,
+ 0x6070932d, 0xc6079899, 0x304fe870, 0x9638e3c4, 0xa7d0f959,
+ 0x01a7f2ed, 0xc400cc63, 0x6277c7d7, 0x539fdd4a, 0xf5e8d6fe,
+ 0x647e3ad9, 0xc209316d, 0xf3e12bf0, 0x55962044, 0x90311eca,
+ 0x3646157e, 0x07ae0fe3, 0xa1d90457, 0x579174be, 0xf1e67f0a,
+ 0xc00e6597, 0x66796e23, 0xa3de50ad, 0x05a95b19, 0x34414184,
+ 0x92364a30},
+ {0x00000000, 0xcb5cd3a5, 0x4dc8a10b, 0x869472ae, 0x9b914216,
+ 0x50cd91b3, 0xd659e31d, 0x1d0530b8, 0xec53826d, 0x270f51c8,
+ 0xa19b2366, 0x6ac7f0c3, 0x77c2c07b, 0xbc9e13de, 0x3a0a6170,
+ 0xf156b2d5, 0x03d6029b, 0xc88ad13e, 0x4e1ea390, 0x85427035,
+ 0x9847408d, 0x531b9328, 0xd58fe186, 0x1ed33223, 0xef8580f6,
+ 0x24d95353, 0xa24d21fd, 0x6911f258, 0x7414c2e0, 0xbf481145,
+ 0x39dc63eb, 0xf280b04e, 0x07ac0536, 0xccf0d693, 0x4a64a43d,
+ 0x81387798, 0x9c3d4720, 0x57619485, 0xd1f5e62b, 0x1aa9358e,
+ 0xebff875b, 0x20a354fe, 0xa6372650, 0x6d6bf5f5, 0x706ec54d,
+ 0xbb3216e8, 0x3da66446, 0xf6fab7e3, 0x047a07ad, 0xcf26d408,
+ 0x49b2a6a6, 0x82ee7503, 0x9feb45bb, 0x54b7961e, 0xd223e4b0,
+ 0x197f3715, 0xe82985c0, 0x23755665, 0xa5e124cb, 0x6ebdf76e,
+ 0x73b8c7d6, 0xb8e41473, 0x3e7066dd, 0xf52cb578, 0x0f580a6c,
+ 0xc404d9c9, 0x4290ab67, 0x89cc78c2, 0x94c9487a, 0x5f959bdf,
+ 0xd901e971, 0x125d3ad4, 0xe30b8801, 0x28575ba4, 0xaec3290a,
+ 0x659ffaaf, 0x789aca17, 0xb3c619b2, 0x35526b1c, 0xfe0eb8b9,
+ 0x0c8e08f7, 0xc7d2db52, 0x4146a9fc, 0x8a1a7a59, 0x971f4ae1,
+ 0x5c439944, 0xdad7ebea, 0x118b384f, 0xe0dd8a9a, 0x2b81593f,
+ 0xad152b91, 0x6649f834, 0x7b4cc88c, 0xb0101b29, 0x36846987,
+ 0xfdd8ba22, 0x08f40f5a, 0xc3a8dcff, 0x453cae51, 0x8e607df4,
+ 0x93654d4c, 0x58399ee9, 0xdeadec47, 0x15f13fe2, 0xe4a78d37,
+ 0x2ffb5e92, 0xa96f2c3c, 0x6233ff99, 0x7f36cf21, 0xb46a1c84,
+ 0x32fe6e2a, 0xf9a2bd8f, 0x0b220dc1, 0xc07ede64, 0x46eaacca,
+ 0x8db67f6f, 0x90b34fd7, 0x5bef9c72, 0xdd7beedc, 0x16273d79,
+ 0xe7718fac, 0x2c2d5c09, 0xaab92ea7, 0x61e5fd02, 0x7ce0cdba,
+ 0xb7bc1e1f, 0x31286cb1, 0xfa74bf14, 0x1eb014d8, 0xd5ecc77d,
+ 0x5378b5d3, 0x98246676, 0x852156ce, 0x4e7d856b, 0xc8e9f7c5,
+ 0x03b52460, 0xf2e396b5, 0x39bf4510, 0xbf2b37be, 0x7477e41b,
+ 0x6972d4a3, 0xa22e0706, 0x24ba75a8, 0xefe6a60d, 0x1d661643,
+ 0xd63ac5e6, 0x50aeb748, 0x9bf264ed, 0x86f75455, 0x4dab87f0,
+ 0xcb3ff55e, 0x006326fb, 0xf135942e, 0x3a69478b, 0xbcfd3525,
+ 0x77a1e680, 0x6aa4d638, 0xa1f8059d, 0x276c7733, 0xec30a496,
+ 0x191c11ee, 0xd240c24b, 0x54d4b0e5, 0x9f886340, 0x828d53f8,
+ 0x49d1805d, 0xcf45f2f3, 0x04192156, 0xf54f9383, 0x3e134026,
+ 0xb8873288, 0x73dbe12d, 0x6eded195, 0xa5820230, 0x2316709e,
+ 0xe84aa33b, 0x1aca1375, 0xd196c0d0, 0x5702b27e, 0x9c5e61db,
+ 0x815b5163, 0x4a0782c6, 0xcc93f068, 0x07cf23cd, 0xf6999118,
+ 0x3dc542bd, 0xbb513013, 0x700de3b6, 0x6d08d30e, 0xa65400ab,
+ 0x20c07205, 0xeb9ca1a0, 0x11e81eb4, 0xdab4cd11, 0x5c20bfbf,
+ 0x977c6c1a, 0x8a795ca2, 0x41258f07, 0xc7b1fda9, 0x0ced2e0c,
+ 0xfdbb9cd9, 0x36e74f7c, 0xb0733dd2, 0x7b2fee77, 0x662adecf,
+ 0xad760d6a, 0x2be27fc4, 0xe0beac61, 0x123e1c2f, 0xd962cf8a,
+ 0x5ff6bd24, 0x94aa6e81, 0x89af5e39, 0x42f38d9c, 0xc467ff32,
+ 0x0f3b2c97, 0xfe6d9e42, 0x35314de7, 0xb3a53f49, 0x78f9ecec,
+ 0x65fcdc54, 0xaea00ff1, 0x28347d5f, 0xe368aefa, 0x16441b82,
+ 0xdd18c827, 0x5b8cba89, 0x90d0692c, 0x8dd55994, 0x46898a31,
+ 0xc01df89f, 0x0b412b3a, 0xfa1799ef, 0x314b4a4a, 0xb7df38e4,
+ 0x7c83eb41, 0x6186dbf9, 0xaada085c, 0x2c4e7af2, 0xe712a957,
+ 0x15921919, 0xdececabc, 0x585ab812, 0x93066bb7, 0x8e035b0f,
+ 0x455f88aa, 0xc3cbfa04, 0x089729a1, 0xf9c19b74, 0x329d48d1,
+ 0xb4093a7f, 0x7f55e9da, 0x6250d962, 0xa90c0ac7, 0x2f987869,
+ 0xe4c4abcc},
+ {0x00000000, 0x3d6029b0, 0x7ac05360, 0x47a07ad0, 0xf580a6c0,
+ 0xc8e08f70, 0x8f40f5a0, 0xb220dc10, 0x30704bc1, 0x0d106271,
+ 0x4ab018a1, 0x77d03111, 0xc5f0ed01, 0xf890c4b1, 0xbf30be61,
+ 0x825097d1, 0x60e09782, 0x5d80be32, 0x1a20c4e2, 0x2740ed52,
+ 0x95603142, 0xa80018f2, 0xefa06222, 0xd2c04b92, 0x5090dc43,
+ 0x6df0f5f3, 0x2a508f23, 0x1730a693, 0xa5107a83, 0x98705333,
+ 0xdfd029e3, 0xe2b00053, 0xc1c12f04, 0xfca106b4, 0xbb017c64,
+ 0x866155d4, 0x344189c4, 0x0921a074, 0x4e81daa4, 0x73e1f314,
+ 0xf1b164c5, 0xccd14d75, 0x8b7137a5, 0xb6111e15, 0x0431c205,
+ 0x3951ebb5, 0x7ef19165, 0x4391b8d5, 0xa121b886, 0x9c419136,
+ 0xdbe1ebe6, 0xe681c256, 0x54a11e46, 0x69c137f6, 0x2e614d26,
+ 0x13016496, 0x9151f347, 0xac31daf7, 0xeb91a027, 0xd6f18997,
+ 0x64d15587, 0x59b17c37, 0x1e1106e7, 0x23712f57, 0x58f35849,
+ 0x659371f9, 0x22330b29, 0x1f532299, 0xad73fe89, 0x9013d739,
+ 0xd7b3ade9, 0xead38459, 0x68831388, 0x55e33a38, 0x124340e8,
+ 0x2f236958, 0x9d03b548, 0xa0639cf8, 0xe7c3e628, 0xdaa3cf98,
+ 0x3813cfcb, 0x0573e67b, 0x42d39cab, 0x7fb3b51b, 0xcd93690b,
+ 0xf0f340bb, 0xb7533a6b, 0x8a3313db, 0x0863840a, 0x3503adba,
+ 0x72a3d76a, 0x4fc3feda, 0xfde322ca, 0xc0830b7a, 0x872371aa,
+ 0xba43581a, 0x9932774d, 0xa4525efd, 0xe3f2242d, 0xde920d9d,
+ 0x6cb2d18d, 0x51d2f83d, 0x167282ed, 0x2b12ab5d, 0xa9423c8c,
+ 0x9422153c, 0xd3826fec, 0xeee2465c, 0x5cc29a4c, 0x61a2b3fc,
+ 0x2602c92c, 0x1b62e09c, 0xf9d2e0cf, 0xc4b2c97f, 0x8312b3af,
+ 0xbe729a1f, 0x0c52460f, 0x31326fbf, 0x7692156f, 0x4bf23cdf,
+ 0xc9a2ab0e, 0xf4c282be, 0xb362f86e, 0x8e02d1de, 0x3c220dce,
+ 0x0142247e, 0x46e25eae, 0x7b82771e, 0xb1e6b092, 0x8c869922,
+ 0xcb26e3f2, 0xf646ca42, 0x44661652, 0x79063fe2, 0x3ea64532,
+ 0x03c66c82, 0x8196fb53, 0xbcf6d2e3, 0xfb56a833, 0xc6368183,
+ 0x74165d93, 0x49767423, 0x0ed60ef3, 0x33b62743, 0xd1062710,
+ 0xec660ea0, 0xabc67470, 0x96a65dc0, 0x248681d0, 0x19e6a860,
+ 0x5e46d2b0, 0x6326fb00, 0xe1766cd1, 0xdc164561, 0x9bb63fb1,
+ 0xa6d61601, 0x14f6ca11, 0x2996e3a1, 0x6e369971, 0x5356b0c1,
+ 0x70279f96, 0x4d47b626, 0x0ae7ccf6, 0x3787e546, 0x85a73956,
+ 0xb8c710e6, 0xff676a36, 0xc2074386, 0x4057d457, 0x7d37fde7,
+ 0x3a978737, 0x07f7ae87, 0xb5d77297, 0x88b75b27, 0xcf1721f7,
+ 0xf2770847, 0x10c70814, 0x2da721a4, 0x6a075b74, 0x576772c4,
+ 0xe547aed4, 0xd8278764, 0x9f87fdb4, 0xa2e7d404, 0x20b743d5,
+ 0x1dd76a65, 0x5a7710b5, 0x67173905, 0xd537e515, 0xe857cca5,
+ 0xaff7b675, 0x92979fc5, 0xe915e8db, 0xd475c16b, 0x93d5bbbb,
+ 0xaeb5920b, 0x1c954e1b, 0x21f567ab, 0x66551d7b, 0x5b3534cb,
+ 0xd965a31a, 0xe4058aaa, 0xa3a5f07a, 0x9ec5d9ca, 0x2ce505da,
+ 0x11852c6a, 0x562556ba, 0x6b457f0a, 0x89f57f59, 0xb49556e9,
+ 0xf3352c39, 0xce550589, 0x7c75d999, 0x4115f029, 0x06b58af9,
+ 0x3bd5a349, 0xb9853498, 0x84e51d28, 0xc34567f8, 0xfe254e48,
+ 0x4c059258, 0x7165bbe8, 0x36c5c138, 0x0ba5e888, 0x28d4c7df,
+ 0x15b4ee6f, 0x521494bf, 0x6f74bd0f, 0xdd54611f, 0xe03448af,
+ 0xa794327f, 0x9af41bcf, 0x18a48c1e, 0x25c4a5ae, 0x6264df7e,
+ 0x5f04f6ce, 0xed242ade, 0xd044036e, 0x97e479be, 0xaa84500e,
+ 0x4834505d, 0x755479ed, 0x32f4033d, 0x0f942a8d, 0xbdb4f69d,
+ 0x80d4df2d, 0xc774a5fd, 0xfa148c4d, 0x78441b9c, 0x4524322c,
+ 0x028448fc, 0x3fe4614c, 0x8dc4bd5c, 0xb0a494ec, 0xf704ee3c,
+ 0xca64c78c}};
+
+local const z_word_t FAR crc_braid_big_table[][256] = {
+ {0x00000000, 0xb029603d, 0x6053c07a, 0xd07aa047, 0xc0a680f5,
+ 0x708fe0c8, 0xa0f5408f, 0x10dc20b2, 0xc14b7030, 0x7162100d,
+ 0xa118b04a, 0x1131d077, 0x01edf0c5, 0xb1c490f8, 0x61be30bf,
+ 0xd1975082, 0x8297e060, 0x32be805d, 0xe2c4201a, 0x52ed4027,
+ 0x42316095, 0xf21800a8, 0x2262a0ef, 0x924bc0d2, 0x43dc9050,
+ 0xf3f5f06d, 0x238f502a, 0x93a63017, 0x837a10a5, 0x33537098,
+ 0xe329d0df, 0x5300b0e2, 0x042fc1c1, 0xb406a1fc, 0x647c01bb,
+ 0xd4556186, 0xc4894134, 0x74a02109, 0xa4da814e, 0x14f3e173,
+ 0xc564b1f1, 0x754dd1cc, 0xa537718b, 0x151e11b6, 0x05c23104,
+ 0xb5eb5139, 0x6591f17e, 0xd5b89143, 0x86b821a1, 0x3691419c,
+ 0xe6ebe1db, 0x56c281e6, 0x461ea154, 0xf637c169, 0x264d612e,
+ 0x96640113, 0x47f35191, 0xf7da31ac, 0x27a091eb, 0x9789f1d6,
+ 0x8755d164, 0x377cb159, 0xe706111e, 0x572f7123, 0x4958f358,
+ 0xf9719365, 0x290b3322, 0x9922531f, 0x89fe73ad, 0x39d71390,
+ 0xe9adb3d7, 0x5984d3ea, 0x88138368, 0x383ae355, 0xe8404312,
+ 0x5869232f, 0x48b5039d, 0xf89c63a0, 0x28e6c3e7, 0x98cfa3da,
+ 0xcbcf1338, 0x7be67305, 0xab9cd342, 0x1bb5b37f, 0x0b6993cd,
+ 0xbb40f3f0, 0x6b3a53b7, 0xdb13338a, 0x0a846308, 0xbaad0335,
+ 0x6ad7a372, 0xdafec34f, 0xca22e3fd, 0x7a0b83c0, 0xaa712387,
+ 0x1a5843ba, 0x4d773299, 0xfd5e52a4, 0x2d24f2e3, 0x9d0d92de,
+ 0x8dd1b26c, 0x3df8d251, 0xed827216, 0x5dab122b, 0x8c3c42a9,
+ 0x3c152294, 0xec6f82d3, 0x5c46e2ee, 0x4c9ac25c, 0xfcb3a261,
+ 0x2cc90226, 0x9ce0621b, 0xcfe0d2f9, 0x7fc9b2c4, 0xafb31283,
+ 0x1f9a72be, 0x0f46520c, 0xbf6f3231, 0x6f159276, 0xdf3cf24b,
+ 0x0eaba2c9, 0xbe82c2f4, 0x6ef862b3, 0xded1028e, 0xce0d223c,
+ 0x7e244201, 0xae5ee246, 0x1e77827b, 0x92b0e6b1, 0x2299868c,
+ 0xf2e326cb, 0x42ca46f6, 0x52166644, 0xe23f0679, 0x3245a63e,
+ 0x826cc603, 0x53fb9681, 0xe3d2f6bc, 0x33a856fb, 0x838136c6,
+ 0x935d1674, 0x23747649, 0xf30ed60e, 0x4327b633, 0x102706d1,
+ 0xa00e66ec, 0x7074c6ab, 0xc05da696, 0xd0818624, 0x60a8e619,
+ 0xb0d2465e, 0x00fb2663, 0xd16c76e1, 0x614516dc, 0xb13fb69b,
+ 0x0116d6a6, 0x11caf614, 0xa1e39629, 0x7199366e, 0xc1b05653,
+ 0x969f2770, 0x26b6474d, 0xf6cce70a, 0x46e58737, 0x5639a785,
+ 0xe610c7b8, 0x366a67ff, 0x864307c2, 0x57d45740, 0xe7fd377d,
+ 0x3787973a, 0x87aef707, 0x9772d7b5, 0x275bb788, 0xf72117cf,
+ 0x470877f2, 0x1408c710, 0xa421a72d, 0x745b076a, 0xc4726757,
+ 0xd4ae47e5, 0x648727d8, 0xb4fd879f, 0x04d4e7a2, 0xd543b720,
+ 0x656ad71d, 0xb510775a, 0x05391767, 0x15e537d5, 0xa5cc57e8,
+ 0x75b6f7af, 0xc59f9792, 0xdbe815e9, 0x6bc175d4, 0xbbbbd593,
+ 0x0b92b5ae, 0x1b4e951c, 0xab67f521, 0x7b1d5566, 0xcb34355b,
+ 0x1aa365d9, 0xaa8a05e4, 0x7af0a5a3, 0xcad9c59e, 0xda05e52c,
+ 0x6a2c8511, 0xba562556, 0x0a7f456b, 0x597ff589, 0xe95695b4,
+ 0x392c35f3, 0x890555ce, 0x99d9757c, 0x29f01541, 0xf98ab506,
+ 0x49a3d53b, 0x983485b9, 0x281de584, 0xf86745c3, 0x484e25fe,
+ 0x5892054c, 0xe8bb6571, 0x38c1c536, 0x88e8a50b, 0xdfc7d428,
+ 0x6feeb415, 0xbf941452, 0x0fbd746f, 0x1f6154dd, 0xaf4834e0,
+ 0x7f3294a7, 0xcf1bf49a, 0x1e8ca418, 0xaea5c425, 0x7edf6462,
+ 0xcef6045f, 0xde2a24ed, 0x6e0344d0, 0xbe79e497, 0x0e5084aa,
+ 0x5d503448, 0xed795475, 0x3d03f432, 0x8d2a940f, 0x9df6b4bd,
+ 0x2ddfd480, 0xfda574c7, 0x4d8c14fa, 0x9c1b4478, 0x2c322445,
+ 0xfc488402, 0x4c61e43f, 0x5cbdc48d, 0xec94a4b0, 0x3cee04f7,
+ 0x8cc764ca},
+ {0x00000000, 0xa5d35ccb, 0x0ba1c84d, 0xae729486, 0x1642919b,
+ 0xb391cd50, 0x1de359d6, 0xb830051d, 0x6d8253ec, 0xc8510f27,
+ 0x66239ba1, 0xc3f0c76a, 0x7bc0c277, 0xde139ebc, 0x70610a3a,
+ 0xd5b256f1, 0x9b02d603, 0x3ed18ac8, 0x90a31e4e, 0x35704285,
+ 0x8d404798, 0x28931b53, 0x86e18fd5, 0x2332d31e, 0xf68085ef,
+ 0x5353d924, 0xfd214da2, 0x58f21169, 0xe0c21474, 0x451148bf,
+ 0xeb63dc39, 0x4eb080f2, 0x3605ac07, 0x93d6f0cc, 0x3da4644a,
+ 0x98773881, 0x20473d9c, 0x85946157, 0x2be6f5d1, 0x8e35a91a,
+ 0x5b87ffeb, 0xfe54a320, 0x502637a6, 0xf5f56b6d, 0x4dc56e70,
+ 0xe81632bb, 0x4664a63d, 0xe3b7faf6, 0xad077a04, 0x08d426cf,
+ 0xa6a6b249, 0x0375ee82, 0xbb45eb9f, 0x1e96b754, 0xb0e423d2,
+ 0x15377f19, 0xc08529e8, 0x65567523, 0xcb24e1a5, 0x6ef7bd6e,
+ 0xd6c7b873, 0x7314e4b8, 0xdd66703e, 0x78b52cf5, 0x6c0a580f,
+ 0xc9d904c4, 0x67ab9042, 0xc278cc89, 0x7a48c994, 0xdf9b955f,
+ 0x71e901d9, 0xd43a5d12, 0x01880be3, 0xa45b5728, 0x0a29c3ae,
+ 0xaffa9f65, 0x17ca9a78, 0xb219c6b3, 0x1c6b5235, 0xb9b80efe,
+ 0xf7088e0c, 0x52dbd2c7, 0xfca94641, 0x597a1a8a, 0xe14a1f97,
+ 0x4499435c, 0xeaebd7da, 0x4f388b11, 0x9a8adde0, 0x3f59812b,
+ 0x912b15ad, 0x34f84966, 0x8cc84c7b, 0x291b10b0, 0x87698436,
+ 0x22bad8fd, 0x5a0ff408, 0xffdca8c3, 0x51ae3c45, 0xf47d608e,
+ 0x4c4d6593, 0xe99e3958, 0x47ecadde, 0xe23ff115, 0x378da7e4,
+ 0x925efb2f, 0x3c2c6fa9, 0x99ff3362, 0x21cf367f, 0x841c6ab4,
+ 0x2a6efe32, 0x8fbda2f9, 0xc10d220b, 0x64de7ec0, 0xcaacea46,
+ 0x6f7fb68d, 0xd74fb390, 0x729cef5b, 0xdcee7bdd, 0x793d2716,
+ 0xac8f71e7, 0x095c2d2c, 0xa72eb9aa, 0x02fde561, 0xbacde07c,
+ 0x1f1ebcb7, 0xb16c2831, 0x14bf74fa, 0xd814b01e, 0x7dc7ecd5,
+ 0xd3b57853, 0x76662498, 0xce562185, 0x6b857d4e, 0xc5f7e9c8,
+ 0x6024b503, 0xb596e3f2, 0x1045bf39, 0xbe372bbf, 0x1be47774,
+ 0xa3d47269, 0x06072ea2, 0xa875ba24, 0x0da6e6ef, 0x4316661d,
+ 0xe6c53ad6, 0x48b7ae50, 0xed64f29b, 0x5554f786, 0xf087ab4d,
+ 0x5ef53fcb, 0xfb266300, 0x2e9435f1, 0x8b47693a, 0x2535fdbc,
+ 0x80e6a177, 0x38d6a46a, 0x9d05f8a1, 0x33776c27, 0x96a430ec,
+ 0xee111c19, 0x4bc240d2, 0xe5b0d454, 0x4063889f, 0xf8538d82,
+ 0x5d80d149, 0xf3f245cf, 0x56211904, 0x83934ff5, 0x2640133e,
+ 0x883287b8, 0x2de1db73, 0x95d1de6e, 0x300282a5, 0x9e701623,
+ 0x3ba34ae8, 0x7513ca1a, 0xd0c096d1, 0x7eb20257, 0xdb615e9c,
+ 0x63515b81, 0xc682074a, 0x68f093cc, 0xcd23cf07, 0x189199f6,
+ 0xbd42c53d, 0x133051bb, 0xb6e30d70, 0x0ed3086d, 0xab0054a6,
+ 0x0572c020, 0xa0a19ceb, 0xb41ee811, 0x11cdb4da, 0xbfbf205c,
+ 0x1a6c7c97, 0xa25c798a, 0x078f2541, 0xa9fdb1c7, 0x0c2eed0c,
+ 0xd99cbbfd, 0x7c4fe736, 0xd23d73b0, 0x77ee2f7b, 0xcfde2a66,
+ 0x6a0d76ad, 0xc47fe22b, 0x61acbee0, 0x2f1c3e12, 0x8acf62d9,
+ 0x24bdf65f, 0x816eaa94, 0x395eaf89, 0x9c8df342, 0x32ff67c4,
+ 0x972c3b0f, 0x429e6dfe, 0xe74d3135, 0x493fa5b3, 0xececf978,
+ 0x54dcfc65, 0xf10fa0ae, 0x5f7d3428, 0xfaae68e3, 0x821b4416,
+ 0x27c818dd, 0x89ba8c5b, 0x2c69d090, 0x9459d58d, 0x318a8946,
+ 0x9ff81dc0, 0x3a2b410b, 0xef9917fa, 0x4a4a4b31, 0xe438dfb7,
+ 0x41eb837c, 0xf9db8661, 0x5c08daaa, 0xf27a4e2c, 0x57a912e7,
+ 0x19199215, 0xbccacede, 0x12b85a58, 0xb76b0693, 0x0f5b038e,
+ 0xaa885f45, 0x04facbc3, 0xa1299708, 0x749bc1f9, 0xd1489d32,
+ 0x7f3a09b4, 0xdae9557f, 0x62d95062, 0xc70a0ca9, 0x6978982f,
+ 0xccabc4e4},
+ {0x00000000, 0xb40b77a6, 0x29119f97, 0x9d1ae831, 0x13244ff4,
+ 0xa72f3852, 0x3a35d063, 0x8e3ea7c5, 0x674eef33, 0xd3459895,
+ 0x4e5f70a4, 0xfa540702, 0x746aa0c7, 0xc061d761, 0x5d7b3f50,
+ 0xe97048f6, 0xce9cde67, 0x7a97a9c1, 0xe78d41f0, 0x53863656,
+ 0xddb89193, 0x69b3e635, 0xf4a90e04, 0x40a279a2, 0xa9d23154,
+ 0x1dd946f2, 0x80c3aec3, 0x34c8d965, 0xbaf67ea0, 0x0efd0906,
+ 0x93e7e137, 0x27ec9691, 0x9c39bdcf, 0x2832ca69, 0xb5282258,
+ 0x012355fe, 0x8f1df23b, 0x3b16859d, 0xa60c6dac, 0x12071a0a,
+ 0xfb7752fc, 0x4f7c255a, 0xd266cd6b, 0x666dbacd, 0xe8531d08,
+ 0x5c586aae, 0xc142829f, 0x7549f539, 0x52a563a8, 0xe6ae140e,
+ 0x7bb4fc3f, 0xcfbf8b99, 0x41812c5c, 0xf58a5bfa, 0x6890b3cb,
+ 0xdc9bc46d, 0x35eb8c9b, 0x81e0fb3d, 0x1cfa130c, 0xa8f164aa,
+ 0x26cfc36f, 0x92c4b4c9, 0x0fde5cf8, 0xbbd52b5e, 0x79750b44,
+ 0xcd7e7ce2, 0x506494d3, 0xe46fe375, 0x6a5144b0, 0xde5a3316,
+ 0x4340db27, 0xf74bac81, 0x1e3be477, 0xaa3093d1, 0x372a7be0,
+ 0x83210c46, 0x0d1fab83, 0xb914dc25, 0x240e3414, 0x900543b2,
+ 0xb7e9d523, 0x03e2a285, 0x9ef84ab4, 0x2af33d12, 0xa4cd9ad7,
+ 0x10c6ed71, 0x8ddc0540, 0x39d772e6, 0xd0a73a10, 0x64ac4db6,
+ 0xf9b6a587, 0x4dbdd221, 0xc38375e4, 0x77880242, 0xea92ea73,
+ 0x5e999dd5, 0xe54cb68b, 0x5147c12d, 0xcc5d291c, 0x78565eba,
+ 0xf668f97f, 0x42638ed9, 0xdf7966e8, 0x6b72114e, 0x820259b8,
+ 0x36092e1e, 0xab13c62f, 0x1f18b189, 0x9126164c, 0x252d61ea,
+ 0xb83789db, 0x0c3cfe7d, 0x2bd068ec, 0x9fdb1f4a, 0x02c1f77b,
+ 0xb6ca80dd, 0x38f42718, 0x8cff50be, 0x11e5b88f, 0xa5eecf29,
+ 0x4c9e87df, 0xf895f079, 0x658f1848, 0xd1846fee, 0x5fbac82b,
+ 0xebb1bf8d, 0x76ab57bc, 0xc2a0201a, 0xf2ea1688, 0x46e1612e,
+ 0xdbfb891f, 0x6ff0feb9, 0xe1ce597c, 0x55c52eda, 0xc8dfc6eb,
+ 0x7cd4b14d, 0x95a4f9bb, 0x21af8e1d, 0xbcb5662c, 0x08be118a,
+ 0x8680b64f, 0x328bc1e9, 0xaf9129d8, 0x1b9a5e7e, 0x3c76c8ef,
+ 0x887dbf49, 0x15675778, 0xa16c20de, 0x2f52871b, 0x9b59f0bd,
+ 0x0643188c, 0xb2486f2a, 0x5b3827dc, 0xef33507a, 0x7229b84b,
+ 0xc622cfed, 0x481c6828, 0xfc171f8e, 0x610df7bf, 0xd5068019,
+ 0x6ed3ab47, 0xdad8dce1, 0x47c234d0, 0xf3c94376, 0x7df7e4b3,
+ 0xc9fc9315, 0x54e67b24, 0xe0ed0c82, 0x099d4474, 0xbd9633d2,
+ 0x208cdbe3, 0x9487ac45, 0x1ab90b80, 0xaeb27c26, 0x33a89417,
+ 0x87a3e3b1, 0xa04f7520, 0x14440286, 0x895eeab7, 0x3d559d11,
+ 0xb36b3ad4, 0x07604d72, 0x9a7aa543, 0x2e71d2e5, 0xc7019a13,
+ 0x730aedb5, 0xee100584, 0x5a1b7222, 0xd425d5e7, 0x602ea241,
+ 0xfd344a70, 0x493f3dd6, 0x8b9f1dcc, 0x3f946a6a, 0xa28e825b,
+ 0x1685f5fd, 0x98bb5238, 0x2cb0259e, 0xb1aacdaf, 0x05a1ba09,
+ 0xecd1f2ff, 0x58da8559, 0xc5c06d68, 0x71cb1ace, 0xfff5bd0b,
+ 0x4bfecaad, 0xd6e4229c, 0x62ef553a, 0x4503c3ab, 0xf108b40d,
+ 0x6c125c3c, 0xd8192b9a, 0x56278c5f, 0xe22cfbf9, 0x7f3613c8,
+ 0xcb3d646e, 0x224d2c98, 0x96465b3e, 0x0b5cb30f, 0xbf57c4a9,
+ 0x3169636c, 0x856214ca, 0x1878fcfb, 0xac738b5d, 0x17a6a003,
+ 0xa3add7a5, 0x3eb73f94, 0x8abc4832, 0x0482eff7, 0xb0899851,
+ 0x2d937060, 0x999807c6, 0x70e84f30, 0xc4e33896, 0x59f9d0a7,
+ 0xedf2a701, 0x63cc00c4, 0xd7c77762, 0x4add9f53, 0xfed6e8f5,
+ 0xd93a7e64, 0x6d3109c2, 0xf02be1f3, 0x44209655, 0xca1e3190,
+ 0x7e154636, 0xe30fae07, 0x5704d9a1, 0xbe749157, 0x0a7fe6f1,
+ 0x97650ec0, 0x236e7966, 0xad50dea3, 0x195ba905, 0x84414134,
+ 0x304a3692},
+ {0x00000000, 0x9e00aacc, 0x7d072542, 0xe3078f8e, 0xfa0e4a84,
+ 0x640ee048, 0x87096fc6, 0x1909c50a, 0xb51be5d3, 0x2b1b4f1f,
+ 0xc81cc091, 0x561c6a5d, 0x4f15af57, 0xd115059b, 0x32128a15,
+ 0xac1220d9, 0x2b31bb7c, 0xb53111b0, 0x56369e3e, 0xc83634f2,
+ 0xd13ff1f8, 0x4f3f5b34, 0xac38d4ba, 0x32387e76, 0x9e2a5eaf,
+ 0x002af463, 0xe32d7bed, 0x7d2dd121, 0x6424142b, 0xfa24bee7,
+ 0x19233169, 0x87239ba5, 0x566276f9, 0xc862dc35, 0x2b6553bb,
+ 0xb565f977, 0xac6c3c7d, 0x326c96b1, 0xd16b193f, 0x4f6bb3f3,
+ 0xe379932a, 0x7d7939e6, 0x9e7eb668, 0x007e1ca4, 0x1977d9ae,
+ 0x87777362, 0x6470fcec, 0xfa705620, 0x7d53cd85, 0xe3536749,
+ 0x0054e8c7, 0x9e54420b, 0x875d8701, 0x195d2dcd, 0xfa5aa243,
+ 0x645a088f, 0xc8482856, 0x5648829a, 0xb54f0d14, 0x2b4fa7d8,
+ 0x324662d2, 0xac46c81e, 0x4f414790, 0xd141ed5c, 0xedc29d29,
+ 0x73c237e5, 0x90c5b86b, 0x0ec512a7, 0x17ccd7ad, 0x89cc7d61,
+ 0x6acbf2ef, 0xf4cb5823, 0x58d978fa, 0xc6d9d236, 0x25de5db8,
+ 0xbbdef774, 0xa2d7327e, 0x3cd798b2, 0xdfd0173c, 0x41d0bdf0,
+ 0xc6f32655, 0x58f38c99, 0xbbf40317, 0x25f4a9db, 0x3cfd6cd1,
+ 0xa2fdc61d, 0x41fa4993, 0xdffae35f, 0x73e8c386, 0xede8694a,
+ 0x0eefe6c4, 0x90ef4c08, 0x89e68902, 0x17e623ce, 0xf4e1ac40,
+ 0x6ae1068c, 0xbba0ebd0, 0x25a0411c, 0xc6a7ce92, 0x58a7645e,
+ 0x41aea154, 0xdfae0b98, 0x3ca98416, 0xa2a92eda, 0x0ebb0e03,
+ 0x90bba4cf, 0x73bc2b41, 0xedbc818d, 0xf4b54487, 0x6ab5ee4b,
+ 0x89b261c5, 0x17b2cb09, 0x909150ac, 0x0e91fa60, 0xed9675ee,
+ 0x7396df22, 0x6a9f1a28, 0xf49fb0e4, 0x17983f6a, 0x899895a6,
+ 0x258ab57f, 0xbb8a1fb3, 0x588d903d, 0xc68d3af1, 0xdf84fffb,
+ 0x41845537, 0xa283dab9, 0x3c837075, 0xda853b53, 0x4485919f,
+ 0xa7821e11, 0x3982b4dd, 0x208b71d7, 0xbe8bdb1b, 0x5d8c5495,
+ 0xc38cfe59, 0x6f9ede80, 0xf19e744c, 0x1299fbc2, 0x8c99510e,
+ 0x95909404, 0x0b903ec8, 0xe897b146, 0x76971b8a, 0xf1b4802f,
+ 0x6fb42ae3, 0x8cb3a56d, 0x12b30fa1, 0x0bbacaab, 0x95ba6067,
+ 0x76bdefe9, 0xe8bd4525, 0x44af65fc, 0xdaafcf30, 0x39a840be,
+ 0xa7a8ea72, 0xbea12f78, 0x20a185b4, 0xc3a60a3a, 0x5da6a0f6,
+ 0x8ce74daa, 0x12e7e766, 0xf1e068e8, 0x6fe0c224, 0x76e9072e,
+ 0xe8e9ade2, 0x0bee226c, 0x95ee88a0, 0x39fca879, 0xa7fc02b5,
+ 0x44fb8d3b, 0xdafb27f7, 0xc3f2e2fd, 0x5df24831, 0xbef5c7bf,
+ 0x20f56d73, 0xa7d6f6d6, 0x39d65c1a, 0xdad1d394, 0x44d17958,
+ 0x5dd8bc52, 0xc3d8169e, 0x20df9910, 0xbedf33dc, 0x12cd1305,
+ 0x8ccdb9c9, 0x6fca3647, 0xf1ca9c8b, 0xe8c35981, 0x76c3f34d,
+ 0x95c47cc3, 0x0bc4d60f, 0x3747a67a, 0xa9470cb6, 0x4a408338,
+ 0xd44029f4, 0xcd49ecfe, 0x53494632, 0xb04ec9bc, 0x2e4e6370,
+ 0x825c43a9, 0x1c5ce965, 0xff5b66eb, 0x615bcc27, 0x7852092d,
+ 0xe652a3e1, 0x05552c6f, 0x9b5586a3, 0x1c761d06, 0x8276b7ca,
+ 0x61713844, 0xff719288, 0xe6785782, 0x7878fd4e, 0x9b7f72c0,
+ 0x057fd80c, 0xa96df8d5, 0x376d5219, 0xd46add97, 0x4a6a775b,
+ 0x5363b251, 0xcd63189d, 0x2e649713, 0xb0643ddf, 0x6125d083,
+ 0xff257a4f, 0x1c22f5c1, 0x82225f0d, 0x9b2b9a07, 0x052b30cb,
+ 0xe62cbf45, 0x782c1589, 0xd43e3550, 0x4a3e9f9c, 0xa9391012,
+ 0x3739bade, 0x2e307fd4, 0xb030d518, 0x53375a96, 0xcd37f05a,
+ 0x4a146bff, 0xd414c133, 0x37134ebd, 0xa913e471, 0xb01a217b,
+ 0x2e1a8bb7, 0xcd1d0439, 0x531daef5, 0xff0f8e2c, 0x610f24e0,
+ 0x8208ab6e, 0x1c0801a2, 0x0501c4a8, 0x9b016e64, 0x7806e1ea,
+ 0xe6064b26}};
+
#endif
- }
-};
+
+#endif
+
+#if N == 3
+
+#if W == 8
+
+local const z_crc_t FAR crc_braid_table[][256] = {
+ {0x00000000, 0x81256527, 0xd93bcc0f, 0x581ea928, 0x69069e5f,
+ 0xe823fb78, 0xb03d5250, 0x31183777, 0xd20d3cbe, 0x53285999,
+ 0x0b36f0b1, 0x8a139596, 0xbb0ba2e1, 0x3a2ec7c6, 0x62306eee,
+ 0xe3150bc9, 0x7f6b7f3d, 0xfe4e1a1a, 0xa650b332, 0x2775d615,
+ 0x166de162, 0x97488445, 0xcf562d6d, 0x4e73484a, 0xad664383,
+ 0x2c4326a4, 0x745d8f8c, 0xf578eaab, 0xc460dddc, 0x4545b8fb,
+ 0x1d5b11d3, 0x9c7e74f4, 0xfed6fe7a, 0x7ff39b5d, 0x27ed3275,
+ 0xa6c85752, 0x97d06025, 0x16f50502, 0x4eebac2a, 0xcfcec90d,
+ 0x2cdbc2c4, 0xadfea7e3, 0xf5e00ecb, 0x74c56bec, 0x45dd5c9b,
+ 0xc4f839bc, 0x9ce69094, 0x1dc3f5b3, 0x81bd8147, 0x0098e460,
+ 0x58864d48, 0xd9a3286f, 0xe8bb1f18, 0x699e7a3f, 0x3180d317,
+ 0xb0a5b630, 0x53b0bdf9, 0xd295d8de, 0x8a8b71f6, 0x0bae14d1,
+ 0x3ab623a6, 0xbb934681, 0xe38defa9, 0x62a88a8e, 0x26dcfab5,
+ 0xa7f99f92, 0xffe736ba, 0x7ec2539d, 0x4fda64ea, 0xceff01cd,
+ 0x96e1a8e5, 0x17c4cdc2, 0xf4d1c60b, 0x75f4a32c, 0x2dea0a04,
+ 0xaccf6f23, 0x9dd75854, 0x1cf23d73, 0x44ec945b, 0xc5c9f17c,
+ 0x59b78588, 0xd892e0af, 0x808c4987, 0x01a92ca0, 0x30b11bd7,
+ 0xb1947ef0, 0xe98ad7d8, 0x68afb2ff, 0x8bbab936, 0x0a9fdc11,
+ 0x52817539, 0xd3a4101e, 0xe2bc2769, 0x6399424e, 0x3b87eb66,
+ 0xbaa28e41, 0xd80a04cf, 0x592f61e8, 0x0131c8c0, 0x8014ade7,
+ 0xb10c9a90, 0x3029ffb7, 0x6837569f, 0xe91233b8, 0x0a073871,
+ 0x8b225d56, 0xd33cf47e, 0x52199159, 0x6301a62e, 0xe224c309,
+ 0xba3a6a21, 0x3b1f0f06, 0xa7617bf2, 0x26441ed5, 0x7e5ab7fd,
+ 0xff7fd2da, 0xce67e5ad, 0x4f42808a, 0x175c29a2, 0x96794c85,
+ 0x756c474c, 0xf449226b, 0xac578b43, 0x2d72ee64, 0x1c6ad913,
+ 0x9d4fbc34, 0xc551151c, 0x4474703b, 0x4db9f56a, 0xcc9c904d,
+ 0x94823965, 0x15a75c42, 0x24bf6b35, 0xa59a0e12, 0xfd84a73a,
+ 0x7ca1c21d, 0x9fb4c9d4, 0x1e91acf3, 0x468f05db, 0xc7aa60fc,
+ 0xf6b2578b, 0x779732ac, 0x2f899b84, 0xaeacfea3, 0x32d28a57,
+ 0xb3f7ef70, 0xebe94658, 0x6acc237f, 0x5bd41408, 0xdaf1712f,
+ 0x82efd807, 0x03cabd20, 0xe0dfb6e9, 0x61fad3ce, 0x39e47ae6,
+ 0xb8c11fc1, 0x89d928b6, 0x08fc4d91, 0x50e2e4b9, 0xd1c7819e,
+ 0xb36f0b10, 0x324a6e37, 0x6a54c71f, 0xeb71a238, 0xda69954f,
+ 0x5b4cf068, 0x03525940, 0x82773c67, 0x616237ae, 0xe0475289,
+ 0xb859fba1, 0x397c9e86, 0x0864a9f1, 0x8941ccd6, 0xd15f65fe,
+ 0x507a00d9, 0xcc04742d, 0x4d21110a, 0x153fb822, 0x941add05,
+ 0xa502ea72, 0x24278f55, 0x7c39267d, 0xfd1c435a, 0x1e094893,
+ 0x9f2c2db4, 0xc732849c, 0x4617e1bb, 0x770fd6cc, 0xf62ab3eb,
+ 0xae341ac3, 0x2f117fe4, 0x6b650fdf, 0xea406af8, 0xb25ec3d0,
+ 0x337ba6f7, 0x02639180, 0x8346f4a7, 0xdb585d8f, 0x5a7d38a8,
+ 0xb9683361, 0x384d5646, 0x6053ff6e, 0xe1769a49, 0xd06ead3e,
+ 0x514bc819, 0x09556131, 0x88700416, 0x140e70e2, 0x952b15c5,
+ 0xcd35bced, 0x4c10d9ca, 0x7d08eebd, 0xfc2d8b9a, 0xa43322b2,
+ 0x25164795, 0xc6034c5c, 0x4726297b, 0x1f388053, 0x9e1de574,
+ 0xaf05d203, 0x2e20b724, 0x763e1e0c, 0xf71b7b2b, 0x95b3f1a5,
+ 0x14969482, 0x4c883daa, 0xcdad588d, 0xfcb56ffa, 0x7d900add,
+ 0x258ea3f5, 0xa4abc6d2, 0x47becd1b, 0xc69ba83c, 0x9e850114,
+ 0x1fa06433, 0x2eb85344, 0xaf9d3663, 0xf7839f4b, 0x76a6fa6c,
+ 0xead88e98, 0x6bfdebbf, 0x33e34297, 0xb2c627b0, 0x83de10c7,
+ 0x02fb75e0, 0x5ae5dcc8, 0xdbc0b9ef, 0x38d5b226, 0xb9f0d701,
+ 0xe1ee7e29, 0x60cb1b0e, 0x51d32c79, 0xd0f6495e, 0x88e8e076,
+ 0x09cd8551},
+ {0x00000000, 0x9b73ead4, 0xed96d3e9, 0x76e5393d, 0x005ca193,
+ 0x9b2f4b47, 0xedca727a, 0x76b998ae, 0x00b94326, 0x9bcaa9f2,
+ 0xed2f90cf, 0x765c7a1b, 0x00e5e2b5, 0x9b960861, 0xed73315c,
+ 0x7600db88, 0x0172864c, 0x9a016c98, 0xece455a5, 0x7797bf71,
+ 0x012e27df, 0x9a5dcd0b, 0xecb8f436, 0x77cb1ee2, 0x01cbc56a,
+ 0x9ab82fbe, 0xec5d1683, 0x772efc57, 0x019764f9, 0x9ae48e2d,
+ 0xec01b710, 0x77725dc4, 0x02e50c98, 0x9996e64c, 0xef73df71,
+ 0x740035a5, 0x02b9ad0b, 0x99ca47df, 0xef2f7ee2, 0x745c9436,
+ 0x025c4fbe, 0x992fa56a, 0xefca9c57, 0x74b97683, 0x0200ee2d,
+ 0x997304f9, 0xef963dc4, 0x74e5d710, 0x03978ad4, 0x98e46000,
+ 0xee01593d, 0x7572b3e9, 0x03cb2b47, 0x98b8c193, 0xee5df8ae,
+ 0x752e127a, 0x032ec9f2, 0x985d2326, 0xeeb81a1b, 0x75cbf0cf,
+ 0x03726861, 0x980182b5, 0xeee4bb88, 0x7597515c, 0x05ca1930,
+ 0x9eb9f3e4, 0xe85ccad9, 0x732f200d, 0x0596b8a3, 0x9ee55277,
+ 0xe8006b4a, 0x7373819e, 0x05735a16, 0x9e00b0c2, 0xe8e589ff,
+ 0x7396632b, 0x052ffb85, 0x9e5c1151, 0xe8b9286c, 0x73cac2b8,
+ 0x04b89f7c, 0x9fcb75a8, 0xe92e4c95, 0x725da641, 0x04e43eef,
+ 0x9f97d43b, 0xe972ed06, 0x720107d2, 0x0401dc5a, 0x9f72368e,
+ 0xe9970fb3, 0x72e4e567, 0x045d7dc9, 0x9f2e971d, 0xe9cbae20,
+ 0x72b844f4, 0x072f15a8, 0x9c5cff7c, 0xeab9c641, 0x71ca2c95,
+ 0x0773b43b, 0x9c005eef, 0xeae567d2, 0x71968d06, 0x0796568e,
+ 0x9ce5bc5a, 0xea008567, 0x71736fb3, 0x07caf71d, 0x9cb91dc9,
+ 0xea5c24f4, 0x712fce20, 0x065d93e4, 0x9d2e7930, 0xebcb400d,
+ 0x70b8aad9, 0x06013277, 0x9d72d8a3, 0xeb97e19e, 0x70e40b4a,
+ 0x06e4d0c2, 0x9d973a16, 0xeb72032b, 0x7001e9ff, 0x06b87151,
+ 0x9dcb9b85, 0xeb2ea2b8, 0x705d486c, 0x0b943260, 0x90e7d8b4,
+ 0xe602e189, 0x7d710b5d, 0x0bc893f3, 0x90bb7927, 0xe65e401a,
+ 0x7d2daace, 0x0b2d7146, 0x905e9b92, 0xe6bba2af, 0x7dc8487b,
+ 0x0b71d0d5, 0x90023a01, 0xe6e7033c, 0x7d94e9e8, 0x0ae6b42c,
+ 0x91955ef8, 0xe77067c5, 0x7c038d11, 0x0aba15bf, 0x91c9ff6b,
+ 0xe72cc656, 0x7c5f2c82, 0x0a5ff70a, 0x912c1dde, 0xe7c924e3,
+ 0x7cbace37, 0x0a035699, 0x9170bc4d, 0xe7958570, 0x7ce66fa4,
+ 0x09713ef8, 0x9202d42c, 0xe4e7ed11, 0x7f9407c5, 0x092d9f6b,
+ 0x925e75bf, 0xe4bb4c82, 0x7fc8a656, 0x09c87dde, 0x92bb970a,
+ 0xe45eae37, 0x7f2d44e3, 0x0994dc4d, 0x92e73699, 0xe4020fa4,
+ 0x7f71e570, 0x0803b8b4, 0x93705260, 0xe5956b5d, 0x7ee68189,
+ 0x085f1927, 0x932cf3f3, 0xe5c9cace, 0x7eba201a, 0x08bafb92,
+ 0x93c91146, 0xe52c287b, 0x7e5fc2af, 0x08e65a01, 0x9395b0d5,
+ 0xe57089e8, 0x7e03633c, 0x0e5e2b50, 0x952dc184, 0xe3c8f8b9,
+ 0x78bb126d, 0x0e028ac3, 0x95716017, 0xe394592a, 0x78e7b3fe,
+ 0x0ee76876, 0x959482a2, 0xe371bb9f, 0x7802514b, 0x0ebbc9e5,
+ 0x95c82331, 0xe32d1a0c, 0x785ef0d8, 0x0f2cad1c, 0x945f47c8,
+ 0xe2ba7ef5, 0x79c99421, 0x0f700c8f, 0x9403e65b, 0xe2e6df66,
+ 0x799535b2, 0x0f95ee3a, 0x94e604ee, 0xe2033dd3, 0x7970d707,
+ 0x0fc94fa9, 0x94baa57d, 0xe25f9c40, 0x792c7694, 0x0cbb27c8,
+ 0x97c8cd1c, 0xe12df421, 0x7a5e1ef5, 0x0ce7865b, 0x97946c8f,
+ 0xe17155b2, 0x7a02bf66, 0x0c0264ee, 0x97718e3a, 0xe194b707,
+ 0x7ae75dd3, 0x0c5ec57d, 0x972d2fa9, 0xe1c81694, 0x7abbfc40,
+ 0x0dc9a184, 0x96ba4b50, 0xe05f726d, 0x7b2c98b9, 0x0d950017,
+ 0x96e6eac3, 0xe003d3fe, 0x7b70392a, 0x0d70e2a2, 0x96030876,
+ 0xe0e6314b, 0x7b95db9f, 0x0d2c4331, 0x965fa9e5, 0xe0ba90d8,
+ 0x7bc97a0c},
+ {0x00000000, 0x172864c0, 0x2e50c980, 0x3978ad40, 0x5ca19300,
+ 0x4b89f7c0, 0x72f15a80, 0x65d93e40, 0xb9432600, 0xae6b42c0,
+ 0x9713ef80, 0x803b8b40, 0xe5e2b500, 0xf2cad1c0, 0xcbb27c80,
+ 0xdc9a1840, 0xa9f74a41, 0xbedf2e81, 0x87a783c1, 0x908fe701,
+ 0xf556d941, 0xe27ebd81, 0xdb0610c1, 0xcc2e7401, 0x10b46c41,
+ 0x079c0881, 0x3ee4a5c1, 0x29ccc101, 0x4c15ff41, 0x5b3d9b81,
+ 0x624536c1, 0x756d5201, 0x889f92c3, 0x9fb7f603, 0xa6cf5b43,
+ 0xb1e73f83, 0xd43e01c3, 0xc3166503, 0xfa6ec843, 0xed46ac83,
+ 0x31dcb4c3, 0x26f4d003, 0x1f8c7d43, 0x08a41983, 0x6d7d27c3,
+ 0x7a554303, 0x432dee43, 0x54058a83, 0x2168d882, 0x3640bc42,
+ 0x0f381102, 0x181075c2, 0x7dc94b82, 0x6ae12f42, 0x53998202,
+ 0x44b1e6c2, 0x982bfe82, 0x8f039a42, 0xb67b3702, 0xa15353c2,
+ 0xc48a6d82, 0xd3a20942, 0xeadaa402, 0xfdf2c0c2, 0xca4e23c7,
+ 0xdd664707, 0xe41eea47, 0xf3368e87, 0x96efb0c7, 0x81c7d407,
+ 0xb8bf7947, 0xaf971d87, 0x730d05c7, 0x64256107, 0x5d5dcc47,
+ 0x4a75a887, 0x2fac96c7, 0x3884f207, 0x01fc5f47, 0x16d43b87,
+ 0x63b96986, 0x74910d46, 0x4de9a006, 0x5ac1c4c6, 0x3f18fa86,
+ 0x28309e46, 0x11483306, 0x066057c6, 0xdafa4f86, 0xcdd22b46,
+ 0xf4aa8606, 0xe382e2c6, 0x865bdc86, 0x9173b846, 0xa80b1506,
+ 0xbf2371c6, 0x42d1b104, 0x55f9d5c4, 0x6c817884, 0x7ba91c44,
+ 0x1e702204, 0x095846c4, 0x3020eb84, 0x27088f44, 0xfb929704,
+ 0xecbaf3c4, 0xd5c25e84, 0xc2ea3a44, 0xa7330404, 0xb01b60c4,
+ 0x8963cd84, 0x9e4ba944, 0xeb26fb45, 0xfc0e9f85, 0xc57632c5,
+ 0xd25e5605, 0xb7876845, 0xa0af0c85, 0x99d7a1c5, 0x8effc505,
+ 0x5265dd45, 0x454db985, 0x7c3514c5, 0x6b1d7005, 0x0ec44e45,
+ 0x19ec2a85, 0x209487c5, 0x37bce305, 0x4fed41cf, 0x58c5250f,
+ 0x61bd884f, 0x7695ec8f, 0x134cd2cf, 0x0464b60f, 0x3d1c1b4f,
+ 0x2a347f8f, 0xf6ae67cf, 0xe186030f, 0xd8feae4f, 0xcfd6ca8f,
+ 0xaa0ff4cf, 0xbd27900f, 0x845f3d4f, 0x9377598f, 0xe61a0b8e,
+ 0xf1326f4e, 0xc84ac20e, 0xdf62a6ce, 0xbabb988e, 0xad93fc4e,
+ 0x94eb510e, 0x83c335ce, 0x5f592d8e, 0x4871494e, 0x7109e40e,
+ 0x662180ce, 0x03f8be8e, 0x14d0da4e, 0x2da8770e, 0x3a8013ce,
+ 0xc772d30c, 0xd05ab7cc, 0xe9221a8c, 0xfe0a7e4c, 0x9bd3400c,
+ 0x8cfb24cc, 0xb583898c, 0xa2abed4c, 0x7e31f50c, 0x691991cc,
+ 0x50613c8c, 0x4749584c, 0x2290660c, 0x35b802cc, 0x0cc0af8c,
+ 0x1be8cb4c, 0x6e85994d, 0x79adfd8d, 0x40d550cd, 0x57fd340d,
+ 0x32240a4d, 0x250c6e8d, 0x1c74c3cd, 0x0b5ca70d, 0xd7c6bf4d,
+ 0xc0eedb8d, 0xf99676cd, 0xeebe120d, 0x8b672c4d, 0x9c4f488d,
+ 0xa537e5cd, 0xb21f810d, 0x85a36208, 0x928b06c8, 0xabf3ab88,
+ 0xbcdbcf48, 0xd902f108, 0xce2a95c8, 0xf7523888, 0xe07a5c48,
+ 0x3ce04408, 0x2bc820c8, 0x12b08d88, 0x0598e948, 0x6041d708,
+ 0x7769b3c8, 0x4e111e88, 0x59397a48, 0x2c542849, 0x3b7c4c89,
+ 0x0204e1c9, 0x152c8509, 0x70f5bb49, 0x67dddf89, 0x5ea572c9,
+ 0x498d1609, 0x95170e49, 0x823f6a89, 0xbb47c7c9, 0xac6fa309,
+ 0xc9b69d49, 0xde9ef989, 0xe7e654c9, 0xf0ce3009, 0x0d3cf0cb,
+ 0x1a14940b, 0x236c394b, 0x34445d8b, 0x519d63cb, 0x46b5070b,
+ 0x7fcdaa4b, 0x68e5ce8b, 0xb47fd6cb, 0xa357b20b, 0x9a2f1f4b,
+ 0x8d077b8b, 0xe8de45cb, 0xfff6210b, 0xc68e8c4b, 0xd1a6e88b,
+ 0xa4cbba8a, 0xb3e3de4a, 0x8a9b730a, 0x9db317ca, 0xf86a298a,
+ 0xef424d4a, 0xd63ae00a, 0xc11284ca, 0x1d889c8a, 0x0aa0f84a,
+ 0x33d8550a, 0x24f031ca, 0x41290f8a, 0x56016b4a, 0x6f79c60a,
+ 0x7851a2ca},
+ {0x00000000, 0x9fda839e, 0xe4c4017d, 0x7b1e82e3, 0x12f904bb,
+ 0x8d238725, 0xf63d05c6, 0x69e78658, 0x25f20976, 0xba288ae8,
+ 0xc136080b, 0x5eec8b95, 0x370b0dcd, 0xa8d18e53, 0xd3cf0cb0,
+ 0x4c158f2e, 0x4be412ec, 0xd43e9172, 0xaf201391, 0x30fa900f,
+ 0x591d1657, 0xc6c795c9, 0xbdd9172a, 0x220394b4, 0x6e161b9a,
+ 0xf1cc9804, 0x8ad21ae7, 0x15089979, 0x7cef1f21, 0xe3359cbf,
+ 0x982b1e5c, 0x07f19dc2, 0x97c825d8, 0x0812a646, 0x730c24a5,
+ 0xecd6a73b, 0x85312163, 0x1aeba2fd, 0x61f5201e, 0xfe2fa380,
+ 0xb23a2cae, 0x2de0af30, 0x56fe2dd3, 0xc924ae4d, 0xa0c32815,
+ 0x3f19ab8b, 0x44072968, 0xdbddaaf6, 0xdc2c3734, 0x43f6b4aa,
+ 0x38e83649, 0xa732b5d7, 0xced5338f, 0x510fb011, 0x2a1132f2,
+ 0xb5cbb16c, 0xf9de3e42, 0x6604bddc, 0x1d1a3f3f, 0x82c0bca1,
+ 0xeb273af9, 0x74fdb967, 0x0fe33b84, 0x9039b81a, 0xf4e14df1,
+ 0x6b3bce6f, 0x10254c8c, 0x8fffcf12, 0xe618494a, 0x79c2cad4,
+ 0x02dc4837, 0x9d06cba9, 0xd1134487, 0x4ec9c719, 0x35d745fa,
+ 0xaa0dc664, 0xc3ea403c, 0x5c30c3a2, 0x272e4141, 0xb8f4c2df,
+ 0xbf055f1d, 0x20dfdc83, 0x5bc15e60, 0xc41bddfe, 0xadfc5ba6,
+ 0x3226d838, 0x49385adb, 0xd6e2d945, 0x9af7566b, 0x052dd5f5,
+ 0x7e335716, 0xe1e9d488, 0x880e52d0, 0x17d4d14e, 0x6cca53ad,
+ 0xf310d033, 0x63296829, 0xfcf3ebb7, 0x87ed6954, 0x1837eaca,
+ 0x71d06c92, 0xee0aef0c, 0x95146def, 0x0aceee71, 0x46db615f,
+ 0xd901e2c1, 0xa21f6022, 0x3dc5e3bc, 0x542265e4, 0xcbf8e67a,
+ 0xb0e66499, 0x2f3ce707, 0x28cd7ac5, 0xb717f95b, 0xcc097bb8,
+ 0x53d3f826, 0x3a347e7e, 0xa5eefde0, 0xdef07f03, 0x412afc9d,
+ 0x0d3f73b3, 0x92e5f02d, 0xe9fb72ce, 0x7621f150, 0x1fc67708,
+ 0x801cf496, 0xfb027675, 0x64d8f5eb, 0x32b39da3, 0xad691e3d,
+ 0xd6779cde, 0x49ad1f40, 0x204a9918, 0xbf901a86, 0xc48e9865,
+ 0x5b541bfb, 0x174194d5, 0x889b174b, 0xf38595a8, 0x6c5f1636,
+ 0x05b8906e, 0x9a6213f0, 0xe17c9113, 0x7ea6128d, 0x79578f4f,
+ 0xe68d0cd1, 0x9d938e32, 0x02490dac, 0x6bae8bf4, 0xf474086a,
+ 0x8f6a8a89, 0x10b00917, 0x5ca58639, 0xc37f05a7, 0xb8618744,
+ 0x27bb04da, 0x4e5c8282, 0xd186011c, 0xaa9883ff, 0x35420061,
+ 0xa57bb87b, 0x3aa13be5, 0x41bfb906, 0xde653a98, 0xb782bcc0,
+ 0x28583f5e, 0x5346bdbd, 0xcc9c3e23, 0x8089b10d, 0x1f533293,
+ 0x644db070, 0xfb9733ee, 0x9270b5b6, 0x0daa3628, 0x76b4b4cb,
+ 0xe96e3755, 0xee9faa97, 0x71452909, 0x0a5babea, 0x95812874,
+ 0xfc66ae2c, 0x63bc2db2, 0x18a2af51, 0x87782ccf, 0xcb6da3e1,
+ 0x54b7207f, 0x2fa9a29c, 0xb0732102, 0xd994a75a, 0x464e24c4,
+ 0x3d50a627, 0xa28a25b9, 0xc652d052, 0x598853cc, 0x2296d12f,
+ 0xbd4c52b1, 0xd4abd4e9, 0x4b715777, 0x306fd594, 0xafb5560a,
+ 0xe3a0d924, 0x7c7a5aba, 0x0764d859, 0x98be5bc7, 0xf159dd9f,
+ 0x6e835e01, 0x159ddce2, 0x8a475f7c, 0x8db6c2be, 0x126c4120,
+ 0x6972c3c3, 0xf6a8405d, 0x9f4fc605, 0x0095459b, 0x7b8bc778,
+ 0xe45144e6, 0xa844cbc8, 0x379e4856, 0x4c80cab5, 0xd35a492b,
+ 0xbabdcf73, 0x25674ced, 0x5e79ce0e, 0xc1a34d90, 0x519af58a,
+ 0xce407614, 0xb55ef4f7, 0x2a847769, 0x4363f131, 0xdcb972af,
+ 0xa7a7f04c, 0x387d73d2, 0x7468fcfc, 0xebb27f62, 0x90acfd81,
+ 0x0f767e1f, 0x6691f847, 0xf94b7bd9, 0x8255f93a, 0x1d8f7aa4,
+ 0x1a7ee766, 0x85a464f8, 0xfebae61b, 0x61606585, 0x0887e3dd,
+ 0x975d6043, 0xec43e2a0, 0x7399613e, 0x3f8cee10, 0xa0566d8e,
+ 0xdb48ef6d, 0x44926cf3, 0x2d75eaab, 0xb2af6935, 0xc9b1ebd6,
+ 0x566b6848},
+ {0x00000000, 0x65673b46, 0xcace768c, 0xafa94dca, 0x4eedeb59,
+ 0x2b8ad01f, 0x84239dd5, 0xe144a693, 0x9ddbd6b2, 0xf8bcedf4,
+ 0x5715a03e, 0x32729b78, 0xd3363deb, 0xb65106ad, 0x19f84b67,
+ 0x7c9f7021, 0xe0c6ab25, 0x85a19063, 0x2a08dda9, 0x4f6fe6ef,
+ 0xae2b407c, 0xcb4c7b3a, 0x64e536f0, 0x01820db6, 0x7d1d7d97,
+ 0x187a46d1, 0xb7d30b1b, 0xd2b4305d, 0x33f096ce, 0x5697ad88,
+ 0xf93ee042, 0x9c59db04, 0x1afc500b, 0x7f9b6b4d, 0xd0322687,
+ 0xb5551dc1, 0x5411bb52, 0x31768014, 0x9edfcdde, 0xfbb8f698,
+ 0x872786b9, 0xe240bdff, 0x4de9f035, 0x288ecb73, 0xc9ca6de0,
+ 0xacad56a6, 0x03041b6c, 0x6663202a, 0xfa3afb2e, 0x9f5dc068,
+ 0x30f48da2, 0x5593b6e4, 0xb4d71077, 0xd1b02b31, 0x7e1966fb,
+ 0x1b7e5dbd, 0x67e12d9c, 0x028616da, 0xad2f5b10, 0xc8486056,
+ 0x290cc6c5, 0x4c6bfd83, 0xe3c2b049, 0x86a58b0f, 0x35f8a016,
+ 0x509f9b50, 0xff36d69a, 0x9a51eddc, 0x7b154b4f, 0x1e727009,
+ 0xb1db3dc3, 0xd4bc0685, 0xa82376a4, 0xcd444de2, 0x62ed0028,
+ 0x078a3b6e, 0xe6ce9dfd, 0x83a9a6bb, 0x2c00eb71, 0x4967d037,
+ 0xd53e0b33, 0xb0593075, 0x1ff07dbf, 0x7a9746f9, 0x9bd3e06a,
+ 0xfeb4db2c, 0x511d96e6, 0x347aada0, 0x48e5dd81, 0x2d82e6c7,
+ 0x822bab0d, 0xe74c904b, 0x060836d8, 0x636f0d9e, 0xccc64054,
+ 0xa9a17b12, 0x2f04f01d, 0x4a63cb5b, 0xe5ca8691, 0x80adbdd7,
+ 0x61e91b44, 0x048e2002, 0xab276dc8, 0xce40568e, 0xb2df26af,
+ 0xd7b81de9, 0x78115023, 0x1d766b65, 0xfc32cdf6, 0x9955f6b0,
+ 0x36fcbb7a, 0x539b803c, 0xcfc25b38, 0xaaa5607e, 0x050c2db4,
+ 0x606b16f2, 0x812fb061, 0xe4488b27, 0x4be1c6ed, 0x2e86fdab,
+ 0x52198d8a, 0x377eb6cc, 0x98d7fb06, 0xfdb0c040, 0x1cf466d3,
+ 0x79935d95, 0xd63a105f, 0xb35d2b19, 0x6bf1402c, 0x0e967b6a,
+ 0xa13f36a0, 0xc4580de6, 0x251cab75, 0x407b9033, 0xefd2ddf9,
+ 0x8ab5e6bf, 0xf62a969e, 0x934dadd8, 0x3ce4e012, 0x5983db54,
+ 0xb8c77dc7, 0xdda04681, 0x72090b4b, 0x176e300d, 0x8b37eb09,
+ 0xee50d04f, 0x41f99d85, 0x249ea6c3, 0xc5da0050, 0xa0bd3b16,
+ 0x0f1476dc, 0x6a734d9a, 0x16ec3dbb, 0x738b06fd, 0xdc224b37,
+ 0xb9457071, 0x5801d6e2, 0x3d66eda4, 0x92cfa06e, 0xf7a89b28,
+ 0x710d1027, 0x146a2b61, 0xbbc366ab, 0xdea45ded, 0x3fe0fb7e,
+ 0x5a87c038, 0xf52e8df2, 0x9049b6b4, 0xecd6c695, 0x89b1fdd3,
+ 0x2618b019, 0x437f8b5f, 0xa23b2dcc, 0xc75c168a, 0x68f55b40,
+ 0x0d926006, 0x91cbbb02, 0xf4ac8044, 0x5b05cd8e, 0x3e62f6c8,
+ 0xdf26505b, 0xba416b1d, 0x15e826d7, 0x708f1d91, 0x0c106db0,
+ 0x697756f6, 0xc6de1b3c, 0xa3b9207a, 0x42fd86e9, 0x279abdaf,
+ 0x8833f065, 0xed54cb23, 0x5e09e03a, 0x3b6edb7c, 0x94c796b6,
+ 0xf1a0adf0, 0x10e40b63, 0x75833025, 0xda2a7def, 0xbf4d46a9,
+ 0xc3d23688, 0xa6b50dce, 0x091c4004, 0x6c7b7b42, 0x8d3fddd1,
+ 0xe858e697, 0x47f1ab5d, 0x2296901b, 0xbecf4b1f, 0xdba87059,
+ 0x74013d93, 0x116606d5, 0xf022a046, 0x95459b00, 0x3aecd6ca,
+ 0x5f8bed8c, 0x23149dad, 0x4673a6eb, 0xe9daeb21, 0x8cbdd067,
+ 0x6df976f4, 0x089e4db2, 0xa7370078, 0xc2503b3e, 0x44f5b031,
+ 0x21928b77, 0x8e3bc6bd, 0xeb5cfdfb, 0x0a185b68, 0x6f7f602e,
+ 0xc0d62de4, 0xa5b116a2, 0xd92e6683, 0xbc495dc5, 0x13e0100f,
+ 0x76872b49, 0x97c38dda, 0xf2a4b69c, 0x5d0dfb56, 0x386ac010,
+ 0xa4331b14, 0xc1542052, 0x6efd6d98, 0x0b9a56de, 0xeadef04d,
+ 0x8fb9cb0b, 0x201086c1, 0x4577bd87, 0x39e8cda6, 0x5c8ff6e0,
+ 0xf326bb2a, 0x9641806c, 0x770526ff, 0x12621db9, 0xbdcb5073,
+ 0xd8ac6b35},
+ {0x00000000, 0xd7e28058, 0x74b406f1, 0xa35686a9, 0xe9680de2,
+ 0x3e8a8dba, 0x9ddc0b13, 0x4a3e8b4b, 0x09a11d85, 0xde439ddd,
+ 0x7d151b74, 0xaaf79b2c, 0xe0c91067, 0x372b903f, 0x947d1696,
+ 0x439f96ce, 0x13423b0a, 0xc4a0bb52, 0x67f63dfb, 0xb014bda3,
+ 0xfa2a36e8, 0x2dc8b6b0, 0x8e9e3019, 0x597cb041, 0x1ae3268f,
+ 0xcd01a6d7, 0x6e57207e, 0xb9b5a026, 0xf38b2b6d, 0x2469ab35,
+ 0x873f2d9c, 0x50ddadc4, 0x26847614, 0xf166f64c, 0x523070e5,
+ 0x85d2f0bd, 0xcfec7bf6, 0x180efbae, 0xbb587d07, 0x6cbafd5f,
+ 0x2f256b91, 0xf8c7ebc9, 0x5b916d60, 0x8c73ed38, 0xc64d6673,
+ 0x11afe62b, 0xb2f96082, 0x651be0da, 0x35c64d1e, 0xe224cd46,
+ 0x41724bef, 0x9690cbb7, 0xdcae40fc, 0x0b4cc0a4, 0xa81a460d,
+ 0x7ff8c655, 0x3c67509b, 0xeb85d0c3, 0x48d3566a, 0x9f31d632,
+ 0xd50f5d79, 0x02eddd21, 0xa1bb5b88, 0x7659dbd0, 0x4d08ec28,
+ 0x9aea6c70, 0x39bcead9, 0xee5e6a81, 0xa460e1ca, 0x73826192,
+ 0xd0d4e73b, 0x07366763, 0x44a9f1ad, 0x934b71f5, 0x301df75c,
+ 0xe7ff7704, 0xadc1fc4f, 0x7a237c17, 0xd975fabe, 0x0e977ae6,
+ 0x5e4ad722, 0x89a8577a, 0x2afed1d3, 0xfd1c518b, 0xb722dac0,
+ 0x60c05a98, 0xc396dc31, 0x14745c69, 0x57ebcaa7, 0x80094aff,
+ 0x235fcc56, 0xf4bd4c0e, 0xbe83c745, 0x6961471d, 0xca37c1b4,
+ 0x1dd541ec, 0x6b8c9a3c, 0xbc6e1a64, 0x1f389ccd, 0xc8da1c95,
+ 0x82e497de, 0x55061786, 0xf650912f, 0x21b21177, 0x622d87b9,
+ 0xb5cf07e1, 0x16998148, 0xc17b0110, 0x8b458a5b, 0x5ca70a03,
+ 0xfff18caa, 0x28130cf2, 0x78cea136, 0xaf2c216e, 0x0c7aa7c7,
+ 0xdb98279f, 0x91a6acd4, 0x46442c8c, 0xe512aa25, 0x32f02a7d,
+ 0x716fbcb3, 0xa68d3ceb, 0x05dbba42, 0xd2393a1a, 0x9807b151,
+ 0x4fe53109, 0xecb3b7a0, 0x3b5137f8, 0x9a11d850, 0x4df35808,
+ 0xeea5dea1, 0x39475ef9, 0x7379d5b2, 0xa49b55ea, 0x07cdd343,
+ 0xd02f531b, 0x93b0c5d5, 0x4452458d, 0xe704c324, 0x30e6437c,
+ 0x7ad8c837, 0xad3a486f, 0x0e6ccec6, 0xd98e4e9e, 0x8953e35a,
+ 0x5eb16302, 0xfde7e5ab, 0x2a0565f3, 0x603beeb8, 0xb7d96ee0,
+ 0x148fe849, 0xc36d6811, 0x80f2fedf, 0x57107e87, 0xf446f82e,
+ 0x23a47876, 0x699af33d, 0xbe787365, 0x1d2ef5cc, 0xcacc7594,
+ 0xbc95ae44, 0x6b772e1c, 0xc821a8b5, 0x1fc328ed, 0x55fda3a6,
+ 0x821f23fe, 0x2149a557, 0xf6ab250f, 0xb534b3c1, 0x62d63399,
+ 0xc180b530, 0x16623568, 0x5c5cbe23, 0x8bbe3e7b, 0x28e8b8d2,
+ 0xff0a388a, 0xafd7954e, 0x78351516, 0xdb6393bf, 0x0c8113e7,
+ 0x46bf98ac, 0x915d18f4, 0x320b9e5d, 0xe5e91e05, 0xa67688cb,
+ 0x71940893, 0xd2c28e3a, 0x05200e62, 0x4f1e8529, 0x98fc0571,
+ 0x3baa83d8, 0xec480380, 0xd7193478, 0x00fbb420, 0xa3ad3289,
+ 0x744fb2d1, 0x3e71399a, 0xe993b9c2, 0x4ac53f6b, 0x9d27bf33,
+ 0xdeb829fd, 0x095aa9a5, 0xaa0c2f0c, 0x7deeaf54, 0x37d0241f,
+ 0xe032a447, 0x436422ee, 0x9486a2b6, 0xc45b0f72, 0x13b98f2a,
+ 0xb0ef0983, 0x670d89db, 0x2d330290, 0xfad182c8, 0x59870461,
+ 0x8e658439, 0xcdfa12f7, 0x1a1892af, 0xb94e1406, 0x6eac945e,
+ 0x24921f15, 0xf3709f4d, 0x502619e4, 0x87c499bc, 0xf19d426c,
+ 0x267fc234, 0x8529449d, 0x52cbc4c5, 0x18f54f8e, 0xcf17cfd6,
+ 0x6c41497f, 0xbba3c927, 0xf83c5fe9, 0x2fdedfb1, 0x8c885918,
+ 0x5b6ad940, 0x1154520b, 0xc6b6d253, 0x65e054fa, 0xb202d4a2,
+ 0xe2df7966, 0x353df93e, 0x966b7f97, 0x4189ffcf, 0x0bb77484,
+ 0xdc55f4dc, 0x7f037275, 0xa8e1f22d, 0xeb7e64e3, 0x3c9ce4bb,
+ 0x9fca6212, 0x4828e24a, 0x02166901, 0xd5f4e959, 0x76a26ff0,
+ 0xa140efa8},
+ {0x00000000, 0xef52b6e1, 0x05d46b83, 0xea86dd62, 0x0ba8d706,
+ 0xe4fa61e7, 0x0e7cbc85, 0xe12e0a64, 0x1751ae0c, 0xf80318ed,
+ 0x1285c58f, 0xfdd7736e, 0x1cf9790a, 0xf3abcfeb, 0x192d1289,
+ 0xf67fa468, 0x2ea35c18, 0xc1f1eaf9, 0x2b77379b, 0xc425817a,
+ 0x250b8b1e, 0xca593dff, 0x20dfe09d, 0xcf8d567c, 0x39f2f214,
+ 0xd6a044f5, 0x3c269997, 0xd3742f76, 0x325a2512, 0xdd0893f3,
+ 0x378e4e91, 0xd8dcf870, 0x5d46b830, 0xb2140ed1, 0x5892d3b3,
+ 0xb7c06552, 0x56ee6f36, 0xb9bcd9d7, 0x533a04b5, 0xbc68b254,
+ 0x4a17163c, 0xa545a0dd, 0x4fc37dbf, 0xa091cb5e, 0x41bfc13a,
+ 0xaeed77db, 0x446baab9, 0xab391c58, 0x73e5e428, 0x9cb752c9,
+ 0x76318fab, 0x9963394a, 0x784d332e, 0x971f85cf, 0x7d9958ad,
+ 0x92cbee4c, 0x64b44a24, 0x8be6fcc5, 0x616021a7, 0x8e329746,
+ 0x6f1c9d22, 0x804e2bc3, 0x6ac8f6a1, 0x859a4040, 0xba8d7060,
+ 0x55dfc681, 0xbf591be3, 0x500bad02, 0xb125a766, 0x5e771187,
+ 0xb4f1cce5, 0x5ba37a04, 0xaddcde6c, 0x428e688d, 0xa808b5ef,
+ 0x475a030e, 0xa674096a, 0x4926bf8b, 0xa3a062e9, 0x4cf2d408,
+ 0x942e2c78, 0x7b7c9a99, 0x91fa47fb, 0x7ea8f11a, 0x9f86fb7e,
+ 0x70d44d9f, 0x9a5290fd, 0x7500261c, 0x837f8274, 0x6c2d3495,
+ 0x86abe9f7, 0x69f95f16, 0x88d75572, 0x6785e393, 0x8d033ef1,
+ 0x62518810, 0xe7cbc850, 0x08997eb1, 0xe21fa3d3, 0x0d4d1532,
+ 0xec631f56, 0x0331a9b7, 0xe9b774d5, 0x06e5c234, 0xf09a665c,
+ 0x1fc8d0bd, 0xf54e0ddf, 0x1a1cbb3e, 0xfb32b15a, 0x146007bb,
+ 0xfee6dad9, 0x11b46c38, 0xc9689448, 0x263a22a9, 0xccbcffcb,
+ 0x23ee492a, 0xc2c0434e, 0x2d92f5af, 0xc71428cd, 0x28469e2c,
+ 0xde393a44, 0x316b8ca5, 0xdbed51c7, 0x34bfe726, 0xd591ed42,
+ 0x3ac35ba3, 0xd04586c1, 0x3f173020, 0xae6be681, 0x41395060,
+ 0xabbf8d02, 0x44ed3be3, 0xa5c33187, 0x4a918766, 0xa0175a04,
+ 0x4f45ece5, 0xb93a488d, 0x5668fe6c, 0xbcee230e, 0x53bc95ef,
+ 0xb2929f8b, 0x5dc0296a, 0xb746f408, 0x581442e9, 0x80c8ba99,
+ 0x6f9a0c78, 0x851cd11a, 0x6a4e67fb, 0x8b606d9f, 0x6432db7e,
+ 0x8eb4061c, 0x61e6b0fd, 0x97991495, 0x78cba274, 0x924d7f16,
+ 0x7d1fc9f7, 0x9c31c393, 0x73637572, 0x99e5a810, 0x76b71ef1,
+ 0xf32d5eb1, 0x1c7fe850, 0xf6f93532, 0x19ab83d3, 0xf88589b7,
+ 0x17d73f56, 0xfd51e234, 0x120354d5, 0xe47cf0bd, 0x0b2e465c,
+ 0xe1a89b3e, 0x0efa2ddf, 0xefd427bb, 0x0086915a, 0xea004c38,
+ 0x0552fad9, 0xdd8e02a9, 0x32dcb448, 0xd85a692a, 0x3708dfcb,
+ 0xd626d5af, 0x3974634e, 0xd3f2be2c, 0x3ca008cd, 0xcadfaca5,
+ 0x258d1a44, 0xcf0bc726, 0x205971c7, 0xc1777ba3, 0x2e25cd42,
+ 0xc4a31020, 0x2bf1a6c1, 0x14e696e1, 0xfbb42000, 0x1132fd62,
+ 0xfe604b83, 0x1f4e41e7, 0xf01cf706, 0x1a9a2a64, 0xf5c89c85,
+ 0x03b738ed, 0xece58e0c, 0x0663536e, 0xe931e58f, 0x081fefeb,
+ 0xe74d590a, 0x0dcb8468, 0xe2993289, 0x3a45caf9, 0xd5177c18,
+ 0x3f91a17a, 0xd0c3179b, 0x31ed1dff, 0xdebfab1e, 0x3439767c,
+ 0xdb6bc09d, 0x2d1464f5, 0xc246d214, 0x28c00f76, 0xc792b997,
+ 0x26bcb3f3, 0xc9ee0512, 0x2368d870, 0xcc3a6e91, 0x49a02ed1,
+ 0xa6f29830, 0x4c744552, 0xa326f3b3, 0x4208f9d7, 0xad5a4f36,
+ 0x47dc9254, 0xa88e24b5, 0x5ef180dd, 0xb1a3363c, 0x5b25eb5e,
+ 0xb4775dbf, 0x555957db, 0xba0be13a, 0x508d3c58, 0xbfdf8ab9,
+ 0x670372c9, 0x8851c428, 0x62d7194a, 0x8d85afab, 0x6caba5cf,
+ 0x83f9132e, 0x697fce4c, 0x862d78ad, 0x7052dcc5, 0x9f006a24,
+ 0x7586b746, 0x9ad401a7, 0x7bfa0bc3, 0x94a8bd22, 0x7e2e6040,
+ 0x917cd6a1},
+ {0x00000000, 0x87a6cb43, 0xd43c90c7, 0x539a5b84, 0x730827cf,
+ 0xf4aeec8c, 0xa734b708, 0x20927c4b, 0xe6104f9e, 0x61b684dd,
+ 0x322cdf59, 0xb58a141a, 0x95186851, 0x12bea312, 0x4124f896,
+ 0xc68233d5, 0x1751997d, 0x90f7523e, 0xc36d09ba, 0x44cbc2f9,
+ 0x6459beb2, 0xe3ff75f1, 0xb0652e75, 0x37c3e536, 0xf141d6e3,
+ 0x76e71da0, 0x257d4624, 0xa2db8d67, 0x8249f12c, 0x05ef3a6f,
+ 0x567561eb, 0xd1d3aaa8, 0x2ea332fa, 0xa905f9b9, 0xfa9fa23d,
+ 0x7d39697e, 0x5dab1535, 0xda0dde76, 0x899785f2, 0x0e314eb1,
+ 0xc8b37d64, 0x4f15b627, 0x1c8feda3, 0x9b2926e0, 0xbbbb5aab,
+ 0x3c1d91e8, 0x6f87ca6c, 0xe821012f, 0x39f2ab87, 0xbe5460c4,
+ 0xedce3b40, 0x6a68f003, 0x4afa8c48, 0xcd5c470b, 0x9ec61c8f,
+ 0x1960d7cc, 0xdfe2e419, 0x58442f5a, 0x0bde74de, 0x8c78bf9d,
+ 0xaceac3d6, 0x2b4c0895, 0x78d65311, 0xff709852, 0x5d4665f4,
+ 0xdae0aeb7, 0x897af533, 0x0edc3e70, 0x2e4e423b, 0xa9e88978,
+ 0xfa72d2fc, 0x7dd419bf, 0xbb562a6a, 0x3cf0e129, 0x6f6abaad,
+ 0xe8cc71ee, 0xc85e0da5, 0x4ff8c6e6, 0x1c629d62, 0x9bc45621,
+ 0x4a17fc89, 0xcdb137ca, 0x9e2b6c4e, 0x198da70d, 0x391fdb46,
+ 0xbeb91005, 0xed234b81, 0x6a8580c2, 0xac07b317, 0x2ba17854,
+ 0x783b23d0, 0xff9de893, 0xdf0f94d8, 0x58a95f9b, 0x0b33041f,
+ 0x8c95cf5c, 0x73e5570e, 0xf4439c4d, 0xa7d9c7c9, 0x207f0c8a,
+ 0x00ed70c1, 0x874bbb82, 0xd4d1e006, 0x53772b45, 0x95f51890,
+ 0x1253d3d3, 0x41c98857, 0xc66f4314, 0xe6fd3f5f, 0x615bf41c,
+ 0x32c1af98, 0xb56764db, 0x64b4ce73, 0xe3120530, 0xb0885eb4,
+ 0x372e95f7, 0x17bce9bc, 0x901a22ff, 0xc380797b, 0x4426b238,
+ 0x82a481ed, 0x05024aae, 0x5698112a, 0xd13eda69, 0xf1aca622,
+ 0x760a6d61, 0x259036e5, 0xa236fda6, 0xba8ccbe8, 0x3d2a00ab,
+ 0x6eb05b2f, 0xe916906c, 0xc984ec27, 0x4e222764, 0x1db87ce0,
+ 0x9a1eb7a3, 0x5c9c8476, 0xdb3a4f35, 0x88a014b1, 0x0f06dff2,
+ 0x2f94a3b9, 0xa83268fa, 0xfba8337e, 0x7c0ef83d, 0xaddd5295,
+ 0x2a7b99d6, 0x79e1c252, 0xfe470911, 0xded5755a, 0x5973be19,
+ 0x0ae9e59d, 0x8d4f2ede, 0x4bcd1d0b, 0xcc6bd648, 0x9ff18dcc,
+ 0x1857468f, 0x38c53ac4, 0xbf63f187, 0xecf9aa03, 0x6b5f6140,
+ 0x942ff912, 0x13893251, 0x401369d5, 0xc7b5a296, 0xe727dedd,
+ 0x6081159e, 0x331b4e1a, 0xb4bd8559, 0x723fb68c, 0xf5997dcf,
+ 0xa603264b, 0x21a5ed08, 0x01379143, 0x86915a00, 0xd50b0184,
+ 0x52adcac7, 0x837e606f, 0x04d8ab2c, 0x5742f0a8, 0xd0e43beb,
+ 0xf07647a0, 0x77d08ce3, 0x244ad767, 0xa3ec1c24, 0x656e2ff1,
+ 0xe2c8e4b2, 0xb152bf36, 0x36f47475, 0x1666083e, 0x91c0c37d,
+ 0xc25a98f9, 0x45fc53ba, 0xe7caae1c, 0x606c655f, 0x33f63edb,
+ 0xb450f598, 0x94c289d3, 0x13644290, 0x40fe1914, 0xc758d257,
+ 0x01dae182, 0x867c2ac1, 0xd5e67145, 0x5240ba06, 0x72d2c64d,
+ 0xf5740d0e, 0xa6ee568a, 0x21489dc9, 0xf09b3761, 0x773dfc22,
+ 0x24a7a7a6, 0xa3016ce5, 0x839310ae, 0x0435dbed, 0x57af8069,
+ 0xd0094b2a, 0x168b78ff, 0x912db3bc, 0xc2b7e838, 0x4511237b,
+ 0x65835f30, 0xe2259473, 0xb1bfcff7, 0x361904b4, 0xc9699ce6,
+ 0x4ecf57a5, 0x1d550c21, 0x9af3c762, 0xba61bb29, 0x3dc7706a,
+ 0x6e5d2bee, 0xe9fbe0ad, 0x2f79d378, 0xa8df183b, 0xfb4543bf,
+ 0x7ce388fc, 0x5c71f4b7, 0xdbd73ff4, 0x884d6470, 0x0febaf33,
+ 0xde38059b, 0x599eced8, 0x0a04955c, 0x8da25e1f, 0xad302254,
+ 0x2a96e917, 0x790cb293, 0xfeaa79d0, 0x38284a05, 0xbf8e8146,
+ 0xec14dac2, 0x6bb21181, 0x4b206dca, 0xcc86a689, 0x9f1cfd0d,
+ 0x18ba364e}};
+
+local const z_word_t FAR crc_braid_big_table[][256] = {
+ {0x0000000000000000, 0x43cba68700000000, 0xc7903cd400000000,
+ 0x845b9a5300000000, 0xcf27087300000000, 0x8cecaef400000000,
+ 0x08b734a700000000, 0x4b7c922000000000, 0x9e4f10e600000000,
+ 0xdd84b66100000000, 0x59df2c3200000000, 0x1a148ab500000000,
+ 0x5168189500000000, 0x12a3be1200000000, 0x96f8244100000000,
+ 0xd53382c600000000, 0x7d99511700000000, 0x3e52f79000000000,
+ 0xba096dc300000000, 0xf9c2cb4400000000, 0xb2be596400000000,
+ 0xf175ffe300000000, 0x752e65b000000000, 0x36e5c33700000000,
+ 0xe3d641f100000000, 0xa01de77600000000, 0x24467d2500000000,
+ 0x678ddba200000000, 0x2cf1498200000000, 0x6f3aef0500000000,
+ 0xeb61755600000000, 0xa8aad3d100000000, 0xfa32a32e00000000,
+ 0xb9f905a900000000, 0x3da29ffa00000000, 0x7e69397d00000000,
+ 0x3515ab5d00000000, 0x76de0dda00000000, 0xf285978900000000,
+ 0xb14e310e00000000, 0x647db3c800000000, 0x27b6154f00000000,
+ 0xa3ed8f1c00000000, 0xe026299b00000000, 0xab5abbbb00000000,
+ 0xe8911d3c00000000, 0x6cca876f00000000, 0x2f0121e800000000,
+ 0x87abf23900000000, 0xc46054be00000000, 0x403bceed00000000,
+ 0x03f0686a00000000, 0x488cfa4a00000000, 0x0b475ccd00000000,
+ 0x8f1cc69e00000000, 0xccd7601900000000, 0x19e4e2df00000000,
+ 0x5a2f445800000000, 0xde74de0b00000000, 0x9dbf788c00000000,
+ 0xd6c3eaac00000000, 0x95084c2b00000000, 0x1153d67800000000,
+ 0x529870ff00000000, 0xf465465d00000000, 0xb7aee0da00000000,
+ 0x33f57a8900000000, 0x703edc0e00000000, 0x3b424e2e00000000,
+ 0x7889e8a900000000, 0xfcd272fa00000000, 0xbf19d47d00000000,
+ 0x6a2a56bb00000000, 0x29e1f03c00000000, 0xadba6a6f00000000,
+ 0xee71cce800000000, 0xa50d5ec800000000, 0xe6c6f84f00000000,
+ 0x629d621c00000000, 0x2156c49b00000000, 0x89fc174a00000000,
+ 0xca37b1cd00000000, 0x4e6c2b9e00000000, 0x0da78d1900000000,
+ 0x46db1f3900000000, 0x0510b9be00000000, 0x814b23ed00000000,
+ 0xc280856a00000000, 0x17b307ac00000000, 0x5478a12b00000000,
+ 0xd0233b7800000000, 0x93e89dff00000000, 0xd8940fdf00000000,
+ 0x9b5fa95800000000, 0x1f04330b00000000, 0x5ccf958c00000000,
+ 0x0e57e57300000000, 0x4d9c43f400000000, 0xc9c7d9a700000000,
+ 0x8a0c7f2000000000, 0xc170ed0000000000, 0x82bb4b8700000000,
+ 0x06e0d1d400000000, 0x452b775300000000, 0x9018f59500000000,
+ 0xd3d3531200000000, 0x5788c94100000000, 0x14436fc600000000,
+ 0x5f3ffde600000000, 0x1cf45b6100000000, 0x98afc13200000000,
+ 0xdb6467b500000000, 0x73ceb46400000000, 0x300512e300000000,
+ 0xb45e88b000000000, 0xf7952e3700000000, 0xbce9bc1700000000,
+ 0xff221a9000000000, 0x7b7980c300000000, 0x38b2264400000000,
+ 0xed81a48200000000, 0xae4a020500000000, 0x2a11985600000000,
+ 0x69da3ed100000000, 0x22a6acf100000000, 0x616d0a7600000000,
+ 0xe536902500000000, 0xa6fd36a200000000, 0xe8cb8cba00000000,
+ 0xab002a3d00000000, 0x2f5bb06e00000000, 0x6c9016e900000000,
+ 0x27ec84c900000000, 0x6427224e00000000, 0xe07cb81d00000000,
+ 0xa3b71e9a00000000, 0x76849c5c00000000, 0x354f3adb00000000,
+ 0xb114a08800000000, 0xf2df060f00000000, 0xb9a3942f00000000,
+ 0xfa6832a800000000, 0x7e33a8fb00000000, 0x3df80e7c00000000,
+ 0x9552ddad00000000, 0xd6997b2a00000000, 0x52c2e17900000000,
+ 0x110947fe00000000, 0x5a75d5de00000000, 0x19be735900000000,
+ 0x9de5e90a00000000, 0xde2e4f8d00000000, 0x0b1dcd4b00000000,
+ 0x48d66bcc00000000, 0xcc8df19f00000000, 0x8f46571800000000,
+ 0xc43ac53800000000, 0x87f163bf00000000, 0x03aaf9ec00000000,
+ 0x40615f6b00000000, 0x12f92f9400000000, 0x5132891300000000,
+ 0xd569134000000000, 0x96a2b5c700000000, 0xddde27e700000000,
+ 0x9e15816000000000, 0x1a4e1b3300000000, 0x5985bdb400000000,
+ 0x8cb63f7200000000, 0xcf7d99f500000000, 0x4b2603a600000000,
+ 0x08eda52100000000, 0x4391370100000000, 0x005a918600000000,
+ 0x84010bd500000000, 0xc7caad5200000000, 0x6f607e8300000000,
+ 0x2cabd80400000000, 0xa8f0425700000000, 0xeb3be4d000000000,
+ 0xa04776f000000000, 0xe38cd07700000000, 0x67d74a2400000000,
+ 0x241ceca300000000, 0xf12f6e6500000000, 0xb2e4c8e200000000,
+ 0x36bf52b100000000, 0x7574f43600000000, 0x3e08661600000000,
+ 0x7dc3c09100000000, 0xf9985ac200000000, 0xba53fc4500000000,
+ 0x1caecae700000000, 0x5f656c6000000000, 0xdb3ef63300000000,
+ 0x98f550b400000000, 0xd389c29400000000, 0x9042641300000000,
+ 0x1419fe4000000000, 0x57d258c700000000, 0x82e1da0100000000,
+ 0xc12a7c8600000000, 0x4571e6d500000000, 0x06ba405200000000,
+ 0x4dc6d27200000000, 0x0e0d74f500000000, 0x8a56eea600000000,
+ 0xc99d482100000000, 0x61379bf000000000, 0x22fc3d7700000000,
+ 0xa6a7a72400000000, 0xe56c01a300000000, 0xae10938300000000,
+ 0xeddb350400000000, 0x6980af5700000000, 0x2a4b09d000000000,
+ 0xff788b1600000000, 0xbcb32d9100000000, 0x38e8b7c200000000,
+ 0x7b23114500000000, 0x305f836500000000, 0x739425e200000000,
+ 0xf7cfbfb100000000, 0xb404193600000000, 0xe69c69c900000000,
+ 0xa557cf4e00000000, 0x210c551d00000000, 0x62c7f39a00000000,
+ 0x29bb61ba00000000, 0x6a70c73d00000000, 0xee2b5d6e00000000,
+ 0xade0fbe900000000, 0x78d3792f00000000, 0x3b18dfa800000000,
+ 0xbf4345fb00000000, 0xfc88e37c00000000, 0xb7f4715c00000000,
+ 0xf43fd7db00000000, 0x70644d8800000000, 0x33afeb0f00000000,
+ 0x9b0538de00000000, 0xd8ce9e5900000000, 0x5c95040a00000000,
+ 0x1f5ea28d00000000, 0x542230ad00000000, 0x17e9962a00000000,
+ 0x93b20c7900000000, 0xd079aafe00000000, 0x054a283800000000,
+ 0x46818ebf00000000, 0xc2da14ec00000000, 0x8111b26b00000000,
+ 0xca6d204b00000000, 0x89a686cc00000000, 0x0dfd1c9f00000000,
+ 0x4e36ba1800000000},
+ {0x0000000000000000, 0xe1b652ef00000000, 0x836bd40500000000,
+ 0x62dd86ea00000000, 0x06d7a80b00000000, 0xe761fae400000000,
+ 0x85bc7c0e00000000, 0x640a2ee100000000, 0x0cae511700000000,
+ 0xed1803f800000000, 0x8fc5851200000000, 0x6e73d7fd00000000,
+ 0x0a79f91c00000000, 0xebcfabf300000000, 0x89122d1900000000,
+ 0x68a47ff600000000, 0x185ca32e00000000, 0xf9eaf1c100000000,
+ 0x9b37772b00000000, 0x7a8125c400000000, 0x1e8b0b2500000000,
+ 0xff3d59ca00000000, 0x9de0df2000000000, 0x7c568dcf00000000,
+ 0x14f2f23900000000, 0xf544a0d600000000, 0x9799263c00000000,
+ 0x762f74d300000000, 0x12255a3200000000, 0xf39308dd00000000,
+ 0x914e8e3700000000, 0x70f8dcd800000000, 0x30b8465d00000000,
+ 0xd10e14b200000000, 0xb3d3925800000000, 0x5265c0b700000000,
+ 0x366fee5600000000, 0xd7d9bcb900000000, 0xb5043a5300000000,
+ 0x54b268bc00000000, 0x3c16174a00000000, 0xdda045a500000000,
+ 0xbf7dc34f00000000, 0x5ecb91a000000000, 0x3ac1bf4100000000,
+ 0xdb77edae00000000, 0xb9aa6b4400000000, 0x581c39ab00000000,
+ 0x28e4e57300000000, 0xc952b79c00000000, 0xab8f317600000000,
+ 0x4a39639900000000, 0x2e334d7800000000, 0xcf851f9700000000,
+ 0xad58997d00000000, 0x4ceecb9200000000, 0x244ab46400000000,
+ 0xc5fce68b00000000, 0xa721606100000000, 0x4697328e00000000,
+ 0x229d1c6f00000000, 0xc32b4e8000000000, 0xa1f6c86a00000000,
+ 0x40409a8500000000, 0x60708dba00000000, 0x81c6df5500000000,
+ 0xe31b59bf00000000, 0x02ad0b5000000000, 0x66a725b100000000,
+ 0x8711775e00000000, 0xe5ccf1b400000000, 0x047aa35b00000000,
+ 0x6cdedcad00000000, 0x8d688e4200000000, 0xefb508a800000000,
+ 0x0e035a4700000000, 0x6a0974a600000000, 0x8bbf264900000000,
+ 0xe962a0a300000000, 0x08d4f24c00000000, 0x782c2e9400000000,
+ 0x999a7c7b00000000, 0xfb47fa9100000000, 0x1af1a87e00000000,
+ 0x7efb869f00000000, 0x9f4dd47000000000, 0xfd90529a00000000,
+ 0x1c26007500000000, 0x74827f8300000000, 0x95342d6c00000000,
+ 0xf7e9ab8600000000, 0x165ff96900000000, 0x7255d78800000000,
+ 0x93e3856700000000, 0xf13e038d00000000, 0x1088516200000000,
+ 0x50c8cbe700000000, 0xb17e990800000000, 0xd3a31fe200000000,
+ 0x32154d0d00000000, 0x561f63ec00000000, 0xb7a9310300000000,
+ 0xd574b7e900000000, 0x34c2e50600000000, 0x5c669af000000000,
+ 0xbdd0c81f00000000, 0xdf0d4ef500000000, 0x3ebb1c1a00000000,
+ 0x5ab132fb00000000, 0xbb07601400000000, 0xd9dae6fe00000000,
+ 0x386cb41100000000, 0x489468c900000000, 0xa9223a2600000000,
+ 0xcbffbccc00000000, 0x2a49ee2300000000, 0x4e43c0c200000000,
+ 0xaff5922d00000000, 0xcd2814c700000000, 0x2c9e462800000000,
+ 0x443a39de00000000, 0xa58c6b3100000000, 0xc751eddb00000000,
+ 0x26e7bf3400000000, 0x42ed91d500000000, 0xa35bc33a00000000,
+ 0xc18645d000000000, 0x2030173f00000000, 0x81e66bae00000000,
+ 0x6050394100000000, 0x028dbfab00000000, 0xe33bed4400000000,
+ 0x8731c3a500000000, 0x6687914a00000000, 0x045a17a000000000,
+ 0xe5ec454f00000000, 0x8d483ab900000000, 0x6cfe685600000000,
+ 0x0e23eebc00000000, 0xef95bc5300000000, 0x8b9f92b200000000,
+ 0x6a29c05d00000000, 0x08f446b700000000, 0xe942145800000000,
+ 0x99bac88000000000, 0x780c9a6f00000000, 0x1ad11c8500000000,
+ 0xfb674e6a00000000, 0x9f6d608b00000000, 0x7edb326400000000,
+ 0x1c06b48e00000000, 0xfdb0e66100000000, 0x9514999700000000,
+ 0x74a2cb7800000000, 0x167f4d9200000000, 0xf7c91f7d00000000,
+ 0x93c3319c00000000, 0x7275637300000000, 0x10a8e59900000000,
+ 0xf11eb77600000000, 0xb15e2df300000000, 0x50e87f1c00000000,
+ 0x3235f9f600000000, 0xd383ab1900000000, 0xb78985f800000000,
+ 0x563fd71700000000, 0x34e251fd00000000, 0xd554031200000000,
+ 0xbdf07ce400000000, 0x5c462e0b00000000, 0x3e9ba8e100000000,
+ 0xdf2dfa0e00000000, 0xbb27d4ef00000000, 0x5a91860000000000,
+ 0x384c00ea00000000, 0xd9fa520500000000, 0xa9028edd00000000,
+ 0x48b4dc3200000000, 0x2a695ad800000000, 0xcbdf083700000000,
+ 0xafd526d600000000, 0x4e63743900000000, 0x2cbef2d300000000,
+ 0xcd08a03c00000000, 0xa5acdfca00000000, 0x441a8d2500000000,
+ 0x26c70bcf00000000, 0xc771592000000000, 0xa37b77c100000000,
+ 0x42cd252e00000000, 0x2010a3c400000000, 0xc1a6f12b00000000,
+ 0xe196e61400000000, 0x0020b4fb00000000, 0x62fd321100000000,
+ 0x834b60fe00000000, 0xe7414e1f00000000, 0x06f71cf000000000,
+ 0x642a9a1a00000000, 0x859cc8f500000000, 0xed38b70300000000,
+ 0x0c8ee5ec00000000, 0x6e53630600000000, 0x8fe531e900000000,
+ 0xebef1f0800000000, 0x0a594de700000000, 0x6884cb0d00000000,
+ 0x893299e200000000, 0xf9ca453a00000000, 0x187c17d500000000,
+ 0x7aa1913f00000000, 0x9b17c3d000000000, 0xff1ded3100000000,
+ 0x1eabbfde00000000, 0x7c76393400000000, 0x9dc06bdb00000000,
+ 0xf564142d00000000, 0x14d246c200000000, 0x760fc02800000000,
+ 0x97b992c700000000, 0xf3b3bc2600000000, 0x1205eec900000000,
+ 0x70d8682300000000, 0x916e3acc00000000, 0xd12ea04900000000,
+ 0x3098f2a600000000, 0x5245744c00000000, 0xb3f326a300000000,
+ 0xd7f9084200000000, 0x364f5aad00000000, 0x5492dc4700000000,
+ 0xb5248ea800000000, 0xdd80f15e00000000, 0x3c36a3b100000000,
+ 0x5eeb255b00000000, 0xbf5d77b400000000, 0xdb57595500000000,
+ 0x3ae10bba00000000, 0x583c8d5000000000, 0xb98adfbf00000000,
+ 0xc972036700000000, 0x28c4518800000000, 0x4a19d76200000000,
+ 0xabaf858d00000000, 0xcfa5ab6c00000000, 0x2e13f98300000000,
+ 0x4cce7f6900000000, 0xad782d8600000000, 0xc5dc527000000000,
+ 0x246a009f00000000, 0x46b7867500000000, 0xa701d49a00000000,
+ 0xc30bfa7b00000000, 0x22bda89400000000, 0x40602e7e00000000,
+ 0xa1d67c9100000000},
+ {0x0000000000000000, 0x5880e2d700000000, 0xf106b47400000000,
+ 0xa98656a300000000, 0xe20d68e900000000, 0xba8d8a3e00000000,
+ 0x130bdc9d00000000, 0x4b8b3e4a00000000, 0x851da10900000000,
+ 0xdd9d43de00000000, 0x741b157d00000000, 0x2c9bf7aa00000000,
+ 0x6710c9e000000000, 0x3f902b3700000000, 0x96167d9400000000,
+ 0xce969f4300000000, 0x0a3b421300000000, 0x52bba0c400000000,
+ 0xfb3df66700000000, 0xa3bd14b000000000, 0xe8362afa00000000,
+ 0xb0b6c82d00000000, 0x19309e8e00000000, 0x41b07c5900000000,
+ 0x8f26e31a00000000, 0xd7a601cd00000000, 0x7e20576e00000000,
+ 0x26a0b5b900000000, 0x6d2b8bf300000000, 0x35ab692400000000,
+ 0x9c2d3f8700000000, 0xc4addd5000000000, 0x1476842600000000,
+ 0x4cf666f100000000, 0xe570305200000000, 0xbdf0d28500000000,
+ 0xf67beccf00000000, 0xaefb0e1800000000, 0x077d58bb00000000,
+ 0x5ffdba6c00000000, 0x916b252f00000000, 0xc9ebc7f800000000,
+ 0x606d915b00000000, 0x38ed738c00000000, 0x73664dc600000000,
+ 0x2be6af1100000000, 0x8260f9b200000000, 0xdae01b6500000000,
+ 0x1e4dc63500000000, 0x46cd24e200000000, 0xef4b724100000000,
+ 0xb7cb909600000000, 0xfc40aedc00000000, 0xa4c04c0b00000000,
+ 0x0d461aa800000000, 0x55c6f87f00000000, 0x9b50673c00000000,
+ 0xc3d085eb00000000, 0x6a56d34800000000, 0x32d6319f00000000,
+ 0x795d0fd500000000, 0x21dded0200000000, 0x885bbba100000000,
+ 0xd0db597600000000, 0x28ec084d00000000, 0x706cea9a00000000,
+ 0xd9eabc3900000000, 0x816a5eee00000000, 0xcae160a400000000,
+ 0x9261827300000000, 0x3be7d4d000000000, 0x6367360700000000,
+ 0xadf1a94400000000, 0xf5714b9300000000, 0x5cf71d3000000000,
+ 0x0477ffe700000000, 0x4ffcc1ad00000000, 0x177c237a00000000,
+ 0xbefa75d900000000, 0xe67a970e00000000, 0x22d74a5e00000000,
+ 0x7a57a88900000000, 0xd3d1fe2a00000000, 0x8b511cfd00000000,
+ 0xc0da22b700000000, 0x985ac06000000000, 0x31dc96c300000000,
+ 0x695c741400000000, 0xa7caeb5700000000, 0xff4a098000000000,
+ 0x56cc5f2300000000, 0x0e4cbdf400000000, 0x45c783be00000000,
+ 0x1d47616900000000, 0xb4c137ca00000000, 0xec41d51d00000000,
+ 0x3c9a8c6b00000000, 0x641a6ebc00000000, 0xcd9c381f00000000,
+ 0x951cdac800000000, 0xde97e48200000000, 0x8617065500000000,
+ 0x2f9150f600000000, 0x7711b22100000000, 0xb9872d6200000000,
+ 0xe107cfb500000000, 0x4881991600000000, 0x10017bc100000000,
+ 0x5b8a458b00000000, 0x030aa75c00000000, 0xaa8cf1ff00000000,
+ 0xf20c132800000000, 0x36a1ce7800000000, 0x6e212caf00000000,
+ 0xc7a77a0c00000000, 0x9f2798db00000000, 0xd4aca69100000000,
+ 0x8c2c444600000000, 0x25aa12e500000000, 0x7d2af03200000000,
+ 0xb3bc6f7100000000, 0xeb3c8da600000000, 0x42badb0500000000,
+ 0x1a3a39d200000000, 0x51b1079800000000, 0x0931e54f00000000,
+ 0xa0b7b3ec00000000, 0xf837513b00000000, 0x50d8119a00000000,
+ 0x0858f34d00000000, 0xa1dea5ee00000000, 0xf95e473900000000,
+ 0xb2d5797300000000, 0xea559ba400000000, 0x43d3cd0700000000,
+ 0x1b532fd000000000, 0xd5c5b09300000000, 0x8d45524400000000,
+ 0x24c304e700000000, 0x7c43e63000000000, 0x37c8d87a00000000,
+ 0x6f483aad00000000, 0xc6ce6c0e00000000, 0x9e4e8ed900000000,
+ 0x5ae3538900000000, 0x0263b15e00000000, 0xabe5e7fd00000000,
+ 0xf365052a00000000, 0xb8ee3b6000000000, 0xe06ed9b700000000,
+ 0x49e88f1400000000, 0x11686dc300000000, 0xdffef28000000000,
+ 0x877e105700000000, 0x2ef846f400000000, 0x7678a42300000000,
+ 0x3df39a6900000000, 0x657378be00000000, 0xccf52e1d00000000,
+ 0x9475ccca00000000, 0x44ae95bc00000000, 0x1c2e776b00000000,
+ 0xb5a821c800000000, 0xed28c31f00000000, 0xa6a3fd5500000000,
+ 0xfe231f8200000000, 0x57a5492100000000, 0x0f25abf600000000,
+ 0xc1b334b500000000, 0x9933d66200000000, 0x30b580c100000000,
+ 0x6835621600000000, 0x23be5c5c00000000, 0x7b3ebe8b00000000,
+ 0xd2b8e82800000000, 0x8a380aff00000000, 0x4e95d7af00000000,
+ 0x1615357800000000, 0xbf9363db00000000, 0xe713810c00000000,
+ 0xac98bf4600000000, 0xf4185d9100000000, 0x5d9e0b3200000000,
+ 0x051ee9e500000000, 0xcb8876a600000000, 0x9308947100000000,
+ 0x3a8ec2d200000000, 0x620e200500000000, 0x29851e4f00000000,
+ 0x7105fc9800000000, 0xd883aa3b00000000, 0x800348ec00000000,
+ 0x783419d700000000, 0x20b4fb0000000000, 0x8932ada300000000,
+ 0xd1b24f7400000000, 0x9a39713e00000000, 0xc2b993e900000000,
+ 0x6b3fc54a00000000, 0x33bf279d00000000, 0xfd29b8de00000000,
+ 0xa5a95a0900000000, 0x0c2f0caa00000000, 0x54afee7d00000000,
+ 0x1f24d03700000000, 0x47a432e000000000, 0xee22644300000000,
+ 0xb6a2869400000000, 0x720f5bc400000000, 0x2a8fb91300000000,
+ 0x8309efb000000000, 0xdb890d6700000000, 0x9002332d00000000,
+ 0xc882d1fa00000000, 0x6104875900000000, 0x3984658e00000000,
+ 0xf712facd00000000, 0xaf92181a00000000, 0x06144eb900000000,
+ 0x5e94ac6e00000000, 0x151f922400000000, 0x4d9f70f300000000,
+ 0xe419265000000000, 0xbc99c48700000000, 0x6c429df100000000,
+ 0x34c27f2600000000, 0x9d44298500000000, 0xc5c4cb5200000000,
+ 0x8e4ff51800000000, 0xd6cf17cf00000000, 0x7f49416c00000000,
+ 0x27c9a3bb00000000, 0xe95f3cf800000000, 0xb1dfde2f00000000,
+ 0x1859888c00000000, 0x40d96a5b00000000, 0x0b52541100000000,
+ 0x53d2b6c600000000, 0xfa54e06500000000, 0xa2d402b200000000,
+ 0x6679dfe200000000, 0x3ef93d3500000000, 0x977f6b9600000000,
+ 0xcfff894100000000, 0x8474b70b00000000, 0xdcf455dc00000000,
+ 0x7572037f00000000, 0x2df2e1a800000000, 0xe3647eeb00000000,
+ 0xbbe49c3c00000000, 0x1262ca9f00000000, 0x4ae2284800000000,
+ 0x0169160200000000, 0x59e9f4d500000000, 0xf06fa27600000000,
+ 0xa8ef40a100000000},
+ {0x0000000000000000, 0x463b676500000000, 0x8c76ceca00000000,
+ 0xca4da9af00000000, 0x59ebed4e00000000, 0x1fd08a2b00000000,
+ 0xd59d238400000000, 0x93a644e100000000, 0xb2d6db9d00000000,
+ 0xf4edbcf800000000, 0x3ea0155700000000, 0x789b723200000000,
+ 0xeb3d36d300000000, 0xad0651b600000000, 0x674bf81900000000,
+ 0x21709f7c00000000, 0x25abc6e000000000, 0x6390a18500000000,
+ 0xa9dd082a00000000, 0xefe66f4f00000000, 0x7c402bae00000000,
+ 0x3a7b4ccb00000000, 0xf036e56400000000, 0xb60d820100000000,
+ 0x977d1d7d00000000, 0xd1467a1800000000, 0x1b0bd3b700000000,
+ 0x5d30b4d200000000, 0xce96f03300000000, 0x88ad975600000000,
+ 0x42e03ef900000000, 0x04db599c00000000, 0x0b50fc1a00000000,
+ 0x4d6b9b7f00000000, 0x872632d000000000, 0xc11d55b500000000,
+ 0x52bb115400000000, 0x1480763100000000, 0xdecddf9e00000000,
+ 0x98f6b8fb00000000, 0xb986278700000000, 0xffbd40e200000000,
+ 0x35f0e94d00000000, 0x73cb8e2800000000, 0xe06dcac900000000,
+ 0xa656adac00000000, 0x6c1b040300000000, 0x2a20636600000000,
+ 0x2efb3afa00000000, 0x68c05d9f00000000, 0xa28df43000000000,
+ 0xe4b6935500000000, 0x7710d7b400000000, 0x312bb0d100000000,
+ 0xfb66197e00000000, 0xbd5d7e1b00000000, 0x9c2de16700000000,
+ 0xda16860200000000, 0x105b2fad00000000, 0x566048c800000000,
+ 0xc5c60c2900000000, 0x83fd6b4c00000000, 0x49b0c2e300000000,
+ 0x0f8ba58600000000, 0x16a0f83500000000, 0x509b9f5000000000,
+ 0x9ad636ff00000000, 0xdced519a00000000, 0x4f4b157b00000000,
+ 0x0970721e00000000, 0xc33ddbb100000000, 0x8506bcd400000000,
+ 0xa47623a800000000, 0xe24d44cd00000000, 0x2800ed6200000000,
+ 0x6e3b8a0700000000, 0xfd9dcee600000000, 0xbba6a98300000000,
+ 0x71eb002c00000000, 0x37d0674900000000, 0x330b3ed500000000,
+ 0x753059b000000000, 0xbf7df01f00000000, 0xf946977a00000000,
+ 0x6ae0d39b00000000, 0x2cdbb4fe00000000, 0xe6961d5100000000,
+ 0xa0ad7a3400000000, 0x81dde54800000000, 0xc7e6822d00000000,
+ 0x0dab2b8200000000, 0x4b904ce700000000, 0xd836080600000000,
+ 0x9e0d6f6300000000, 0x5440c6cc00000000, 0x127ba1a900000000,
+ 0x1df0042f00000000, 0x5bcb634a00000000, 0x9186cae500000000,
+ 0xd7bdad8000000000, 0x441be96100000000, 0x02208e0400000000,
+ 0xc86d27ab00000000, 0x8e5640ce00000000, 0xaf26dfb200000000,
+ 0xe91db8d700000000, 0x2350117800000000, 0x656b761d00000000,
+ 0xf6cd32fc00000000, 0xb0f6559900000000, 0x7abbfc3600000000,
+ 0x3c809b5300000000, 0x385bc2cf00000000, 0x7e60a5aa00000000,
+ 0xb42d0c0500000000, 0xf2166b6000000000, 0x61b02f8100000000,
+ 0x278b48e400000000, 0xedc6e14b00000000, 0xabfd862e00000000,
+ 0x8a8d195200000000, 0xccb67e3700000000, 0x06fbd79800000000,
+ 0x40c0b0fd00000000, 0xd366f41c00000000, 0x955d937900000000,
+ 0x5f103ad600000000, 0x192b5db300000000, 0x2c40f16b00000000,
+ 0x6a7b960e00000000, 0xa0363fa100000000, 0xe60d58c400000000,
+ 0x75ab1c2500000000, 0x33907b4000000000, 0xf9ddd2ef00000000,
+ 0xbfe6b58a00000000, 0x9e962af600000000, 0xd8ad4d9300000000,
+ 0x12e0e43c00000000, 0x54db835900000000, 0xc77dc7b800000000,
+ 0x8146a0dd00000000, 0x4b0b097200000000, 0x0d306e1700000000,
+ 0x09eb378b00000000, 0x4fd050ee00000000, 0x859df94100000000,
+ 0xc3a69e2400000000, 0x5000dac500000000, 0x163bbda000000000,
+ 0xdc76140f00000000, 0x9a4d736a00000000, 0xbb3dec1600000000,
+ 0xfd068b7300000000, 0x374b22dc00000000, 0x717045b900000000,
+ 0xe2d6015800000000, 0xa4ed663d00000000, 0x6ea0cf9200000000,
+ 0x289ba8f700000000, 0x27100d7100000000, 0x612b6a1400000000,
+ 0xab66c3bb00000000, 0xed5da4de00000000, 0x7efbe03f00000000,
+ 0x38c0875a00000000, 0xf28d2ef500000000, 0xb4b6499000000000,
+ 0x95c6d6ec00000000, 0xd3fdb18900000000, 0x19b0182600000000,
+ 0x5f8b7f4300000000, 0xcc2d3ba200000000, 0x8a165cc700000000,
+ 0x405bf56800000000, 0x0660920d00000000, 0x02bbcb9100000000,
+ 0x4480acf400000000, 0x8ecd055b00000000, 0xc8f6623e00000000,
+ 0x5b5026df00000000, 0x1d6b41ba00000000, 0xd726e81500000000,
+ 0x911d8f7000000000, 0xb06d100c00000000, 0xf656776900000000,
+ 0x3c1bdec600000000, 0x7a20b9a300000000, 0xe986fd4200000000,
+ 0xafbd9a2700000000, 0x65f0338800000000, 0x23cb54ed00000000,
+ 0x3ae0095e00000000, 0x7cdb6e3b00000000, 0xb696c79400000000,
+ 0xf0ada0f100000000, 0x630be41000000000, 0x2530837500000000,
+ 0xef7d2ada00000000, 0xa9464dbf00000000, 0x8836d2c300000000,
+ 0xce0db5a600000000, 0x04401c0900000000, 0x427b7b6c00000000,
+ 0xd1dd3f8d00000000, 0x97e658e800000000, 0x5dabf14700000000,
+ 0x1b90962200000000, 0x1f4bcfbe00000000, 0x5970a8db00000000,
+ 0x933d017400000000, 0xd506661100000000, 0x46a022f000000000,
+ 0x009b459500000000, 0xcad6ec3a00000000, 0x8ced8b5f00000000,
+ 0xad9d142300000000, 0xeba6734600000000, 0x21ebdae900000000,
+ 0x67d0bd8c00000000, 0xf476f96d00000000, 0xb24d9e0800000000,
+ 0x780037a700000000, 0x3e3b50c200000000, 0x31b0f54400000000,
+ 0x778b922100000000, 0xbdc63b8e00000000, 0xfbfd5ceb00000000,
+ 0x685b180a00000000, 0x2e607f6f00000000, 0xe42dd6c000000000,
+ 0xa216b1a500000000, 0x83662ed900000000, 0xc55d49bc00000000,
+ 0x0f10e01300000000, 0x492b877600000000, 0xda8dc39700000000,
+ 0x9cb6a4f200000000, 0x56fb0d5d00000000, 0x10c06a3800000000,
+ 0x141b33a400000000, 0x522054c100000000, 0x986dfd6e00000000,
+ 0xde569a0b00000000, 0x4df0deea00000000, 0x0bcbb98f00000000,
+ 0xc186102000000000, 0x87bd774500000000, 0xa6cde83900000000,
+ 0xe0f68f5c00000000, 0x2abb26f300000000, 0x6c80419600000000,
+ 0xff26057700000000, 0xb91d621200000000, 0x7350cbbd00000000,
+ 0x356bacd800000000},
+ {0x0000000000000000, 0x9e83da9f00000000, 0x7d01c4e400000000,
+ 0xe3821e7b00000000, 0xbb04f91200000000, 0x2587238d00000000,
+ 0xc6053df600000000, 0x5886e76900000000, 0x7609f22500000000,
+ 0xe88a28ba00000000, 0x0b0836c100000000, 0x958bec5e00000000,
+ 0xcd0d0b3700000000, 0x538ed1a800000000, 0xb00ccfd300000000,
+ 0x2e8f154c00000000, 0xec12e44b00000000, 0x72913ed400000000,
+ 0x911320af00000000, 0x0f90fa3000000000, 0x57161d5900000000,
+ 0xc995c7c600000000, 0x2a17d9bd00000000, 0xb494032200000000,
+ 0x9a1b166e00000000, 0x0498ccf100000000, 0xe71ad28a00000000,
+ 0x7999081500000000, 0x211fef7c00000000, 0xbf9c35e300000000,
+ 0x5c1e2b9800000000, 0xc29df10700000000, 0xd825c89700000000,
+ 0x46a6120800000000, 0xa5240c7300000000, 0x3ba7d6ec00000000,
+ 0x6321318500000000, 0xfda2eb1a00000000, 0x1e20f56100000000,
+ 0x80a32ffe00000000, 0xae2c3ab200000000, 0x30afe02d00000000,
+ 0xd32dfe5600000000, 0x4dae24c900000000, 0x1528c3a000000000,
+ 0x8bab193f00000000, 0x6829074400000000, 0xf6aadddb00000000,
+ 0x34372cdc00000000, 0xaab4f64300000000, 0x4936e83800000000,
+ 0xd7b532a700000000, 0x8f33d5ce00000000, 0x11b00f5100000000,
+ 0xf232112a00000000, 0x6cb1cbb500000000, 0x423edef900000000,
+ 0xdcbd046600000000, 0x3f3f1a1d00000000, 0xa1bcc08200000000,
+ 0xf93a27eb00000000, 0x67b9fd7400000000, 0x843be30f00000000,
+ 0x1ab8399000000000, 0xf14de1f400000000, 0x6fce3b6b00000000,
+ 0x8c4c251000000000, 0x12cfff8f00000000, 0x4a4918e600000000,
+ 0xd4cac27900000000, 0x3748dc0200000000, 0xa9cb069d00000000,
+ 0x874413d100000000, 0x19c7c94e00000000, 0xfa45d73500000000,
+ 0x64c60daa00000000, 0x3c40eac300000000, 0xa2c3305c00000000,
+ 0x41412e2700000000, 0xdfc2f4b800000000, 0x1d5f05bf00000000,
+ 0x83dcdf2000000000, 0x605ec15b00000000, 0xfedd1bc400000000,
+ 0xa65bfcad00000000, 0x38d8263200000000, 0xdb5a384900000000,
+ 0x45d9e2d600000000, 0x6b56f79a00000000, 0xf5d52d0500000000,
+ 0x1657337e00000000, 0x88d4e9e100000000, 0xd0520e8800000000,
+ 0x4ed1d41700000000, 0xad53ca6c00000000, 0x33d010f300000000,
+ 0x2968296300000000, 0xb7ebf3fc00000000, 0x5469ed8700000000,
+ 0xcaea371800000000, 0x926cd07100000000, 0x0cef0aee00000000,
+ 0xef6d149500000000, 0x71eece0a00000000, 0x5f61db4600000000,
+ 0xc1e201d900000000, 0x22601fa200000000, 0xbce3c53d00000000,
+ 0xe465225400000000, 0x7ae6f8cb00000000, 0x9964e6b000000000,
+ 0x07e73c2f00000000, 0xc57acd2800000000, 0x5bf917b700000000,
+ 0xb87b09cc00000000, 0x26f8d35300000000, 0x7e7e343a00000000,
+ 0xe0fdeea500000000, 0x037ff0de00000000, 0x9dfc2a4100000000,
+ 0xb3733f0d00000000, 0x2df0e59200000000, 0xce72fbe900000000,
+ 0x50f1217600000000, 0x0877c61f00000000, 0x96f41c8000000000,
+ 0x757602fb00000000, 0xebf5d86400000000, 0xa39db33200000000,
+ 0x3d1e69ad00000000, 0xde9c77d600000000, 0x401fad4900000000,
+ 0x18994a2000000000, 0x861a90bf00000000, 0x65988ec400000000,
+ 0xfb1b545b00000000, 0xd594411700000000, 0x4b179b8800000000,
+ 0xa89585f300000000, 0x36165f6c00000000, 0x6e90b80500000000,
+ 0xf013629a00000000, 0x13917ce100000000, 0x8d12a67e00000000,
+ 0x4f8f577900000000, 0xd10c8de600000000, 0x328e939d00000000,
+ 0xac0d490200000000, 0xf48bae6b00000000, 0x6a0874f400000000,
+ 0x898a6a8f00000000, 0x1709b01000000000, 0x3986a55c00000000,
+ 0xa7057fc300000000, 0x448761b800000000, 0xda04bb2700000000,
+ 0x82825c4e00000000, 0x1c0186d100000000, 0xff8398aa00000000,
+ 0x6100423500000000, 0x7bb87ba500000000, 0xe53ba13a00000000,
+ 0x06b9bf4100000000, 0x983a65de00000000, 0xc0bc82b700000000,
+ 0x5e3f582800000000, 0xbdbd465300000000, 0x233e9ccc00000000,
+ 0x0db1898000000000, 0x9332531f00000000, 0x70b04d6400000000,
+ 0xee3397fb00000000, 0xb6b5709200000000, 0x2836aa0d00000000,
+ 0xcbb4b47600000000, 0x55376ee900000000, 0x97aa9fee00000000,
+ 0x0929457100000000, 0xeaab5b0a00000000, 0x7428819500000000,
+ 0x2cae66fc00000000, 0xb22dbc6300000000, 0x51afa21800000000,
+ 0xcf2c788700000000, 0xe1a36dcb00000000, 0x7f20b75400000000,
+ 0x9ca2a92f00000000, 0x022173b000000000, 0x5aa794d900000000,
+ 0xc4244e4600000000, 0x27a6503d00000000, 0xb9258aa200000000,
+ 0x52d052c600000000, 0xcc53885900000000, 0x2fd1962200000000,
+ 0xb1524cbd00000000, 0xe9d4abd400000000, 0x7757714b00000000,
+ 0x94d56f3000000000, 0x0a56b5af00000000, 0x24d9a0e300000000,
+ 0xba5a7a7c00000000, 0x59d8640700000000, 0xc75bbe9800000000,
+ 0x9fdd59f100000000, 0x015e836e00000000, 0xe2dc9d1500000000,
+ 0x7c5f478a00000000, 0xbec2b68d00000000, 0x20416c1200000000,
+ 0xc3c3726900000000, 0x5d40a8f600000000, 0x05c64f9f00000000,
+ 0x9b45950000000000, 0x78c78b7b00000000, 0xe64451e400000000,
+ 0xc8cb44a800000000, 0x56489e3700000000, 0xb5ca804c00000000,
+ 0x2b495ad300000000, 0x73cfbdba00000000, 0xed4c672500000000,
+ 0x0ece795e00000000, 0x904da3c100000000, 0x8af59a5100000000,
+ 0x147640ce00000000, 0xf7f45eb500000000, 0x6977842a00000000,
+ 0x31f1634300000000, 0xaf72b9dc00000000, 0x4cf0a7a700000000,
+ 0xd2737d3800000000, 0xfcfc687400000000, 0x627fb2eb00000000,
+ 0x81fdac9000000000, 0x1f7e760f00000000, 0x47f8916600000000,
+ 0xd97b4bf900000000, 0x3af9558200000000, 0xa47a8f1d00000000,
+ 0x66e77e1a00000000, 0xf864a48500000000, 0x1be6bafe00000000,
+ 0x8565606100000000, 0xdde3870800000000, 0x43605d9700000000,
+ 0xa0e243ec00000000, 0x3e61997300000000, 0x10ee8c3f00000000,
+ 0x8e6d56a000000000, 0x6def48db00000000, 0xf36c924400000000,
+ 0xabea752d00000000, 0x3569afb200000000, 0xd6ebb1c900000000,
+ 0x48686b5600000000},
+ {0x0000000000000000, 0xc064281700000000, 0x80c9502e00000000,
+ 0x40ad783900000000, 0x0093a15c00000000, 0xc0f7894b00000000,
+ 0x805af17200000000, 0x403ed96500000000, 0x002643b900000000,
+ 0xc0426bae00000000, 0x80ef139700000000, 0x408b3b8000000000,
+ 0x00b5e2e500000000, 0xc0d1caf200000000, 0x807cb2cb00000000,
+ 0x40189adc00000000, 0x414af7a900000000, 0x812edfbe00000000,
+ 0xc183a78700000000, 0x01e78f9000000000, 0x41d956f500000000,
+ 0x81bd7ee200000000, 0xc11006db00000000, 0x01742ecc00000000,
+ 0x416cb41000000000, 0x81089c0700000000, 0xc1a5e43e00000000,
+ 0x01c1cc2900000000, 0x41ff154c00000000, 0x819b3d5b00000000,
+ 0xc136456200000000, 0x01526d7500000000, 0xc3929f8800000000,
+ 0x03f6b79f00000000, 0x435bcfa600000000, 0x833fe7b100000000,
+ 0xc3013ed400000000, 0x036516c300000000, 0x43c86efa00000000,
+ 0x83ac46ed00000000, 0xc3b4dc3100000000, 0x03d0f42600000000,
+ 0x437d8c1f00000000, 0x8319a40800000000, 0xc3277d6d00000000,
+ 0x0343557a00000000, 0x43ee2d4300000000, 0x838a055400000000,
+ 0x82d8682100000000, 0x42bc403600000000, 0x0211380f00000000,
+ 0xc275101800000000, 0x824bc97d00000000, 0x422fe16a00000000,
+ 0x0282995300000000, 0xc2e6b14400000000, 0x82fe2b9800000000,
+ 0x429a038f00000000, 0x02377bb600000000, 0xc25353a100000000,
+ 0x826d8ac400000000, 0x4209a2d300000000, 0x02a4daea00000000,
+ 0xc2c0f2fd00000000, 0xc7234eca00000000, 0x074766dd00000000,
+ 0x47ea1ee400000000, 0x878e36f300000000, 0xc7b0ef9600000000,
+ 0x07d4c78100000000, 0x4779bfb800000000, 0x871d97af00000000,
+ 0xc7050d7300000000, 0x0761256400000000, 0x47cc5d5d00000000,
+ 0x87a8754a00000000, 0xc796ac2f00000000, 0x07f2843800000000,
+ 0x475ffc0100000000, 0x873bd41600000000, 0x8669b96300000000,
+ 0x460d917400000000, 0x06a0e94d00000000, 0xc6c4c15a00000000,
+ 0x86fa183f00000000, 0x469e302800000000, 0x0633481100000000,
+ 0xc657600600000000, 0x864ffada00000000, 0x462bd2cd00000000,
+ 0x0686aaf400000000, 0xc6e282e300000000, 0x86dc5b8600000000,
+ 0x46b8739100000000, 0x06150ba800000000, 0xc67123bf00000000,
+ 0x04b1d14200000000, 0xc4d5f95500000000, 0x8478816c00000000,
+ 0x441ca97b00000000, 0x0422701e00000000, 0xc446580900000000,
+ 0x84eb203000000000, 0x448f082700000000, 0x049792fb00000000,
+ 0xc4f3baec00000000, 0x845ec2d500000000, 0x443aeac200000000,
+ 0x040433a700000000, 0xc4601bb000000000, 0x84cd638900000000,
+ 0x44a94b9e00000000, 0x45fb26eb00000000, 0x859f0efc00000000,
+ 0xc53276c500000000, 0x05565ed200000000, 0x456887b700000000,
+ 0x850cafa000000000, 0xc5a1d79900000000, 0x05c5ff8e00000000,
+ 0x45dd655200000000, 0x85b94d4500000000, 0xc514357c00000000,
+ 0x05701d6b00000000, 0x454ec40e00000000, 0x852aec1900000000,
+ 0xc587942000000000, 0x05e3bc3700000000, 0xcf41ed4f00000000,
+ 0x0f25c55800000000, 0x4f88bd6100000000, 0x8fec957600000000,
+ 0xcfd24c1300000000, 0x0fb6640400000000, 0x4f1b1c3d00000000,
+ 0x8f7f342a00000000, 0xcf67aef600000000, 0x0f0386e100000000,
+ 0x4faefed800000000, 0x8fcad6cf00000000, 0xcff40faa00000000,
+ 0x0f9027bd00000000, 0x4f3d5f8400000000, 0x8f59779300000000,
+ 0x8e0b1ae600000000, 0x4e6f32f100000000, 0x0ec24ac800000000,
+ 0xcea662df00000000, 0x8e98bbba00000000, 0x4efc93ad00000000,
+ 0x0e51eb9400000000, 0xce35c38300000000, 0x8e2d595f00000000,
+ 0x4e49714800000000, 0x0ee4097100000000, 0xce80216600000000,
+ 0x8ebef80300000000, 0x4edad01400000000, 0x0e77a82d00000000,
+ 0xce13803a00000000, 0x0cd372c700000000, 0xccb75ad000000000,
+ 0x8c1a22e900000000, 0x4c7e0afe00000000, 0x0c40d39b00000000,
+ 0xcc24fb8c00000000, 0x8c8983b500000000, 0x4cedaba200000000,
+ 0x0cf5317e00000000, 0xcc91196900000000, 0x8c3c615000000000,
+ 0x4c58494700000000, 0x0c66902200000000, 0xcc02b83500000000,
+ 0x8cafc00c00000000, 0x4ccbe81b00000000, 0x4d99856e00000000,
+ 0x8dfdad7900000000, 0xcd50d54000000000, 0x0d34fd5700000000,
+ 0x4d0a243200000000, 0x8d6e0c2500000000, 0xcdc3741c00000000,
+ 0x0da75c0b00000000, 0x4dbfc6d700000000, 0x8ddbeec000000000,
+ 0xcd7696f900000000, 0x0d12beee00000000, 0x4d2c678b00000000,
+ 0x8d484f9c00000000, 0xcde537a500000000, 0x0d811fb200000000,
+ 0x0862a38500000000, 0xc8068b9200000000, 0x88abf3ab00000000,
+ 0x48cfdbbc00000000, 0x08f102d900000000, 0xc8952ace00000000,
+ 0x883852f700000000, 0x485c7ae000000000, 0x0844e03c00000000,
+ 0xc820c82b00000000, 0x888db01200000000, 0x48e9980500000000,
+ 0x08d7416000000000, 0xc8b3697700000000, 0x881e114e00000000,
+ 0x487a395900000000, 0x4928542c00000000, 0x894c7c3b00000000,
+ 0xc9e1040200000000, 0x09852c1500000000, 0x49bbf57000000000,
+ 0x89dfdd6700000000, 0xc972a55e00000000, 0x09168d4900000000,
+ 0x490e179500000000, 0x896a3f8200000000, 0xc9c747bb00000000,
+ 0x09a36fac00000000, 0x499db6c900000000, 0x89f99ede00000000,
+ 0xc954e6e700000000, 0x0930cef000000000, 0xcbf03c0d00000000,
+ 0x0b94141a00000000, 0x4b396c2300000000, 0x8b5d443400000000,
+ 0xcb639d5100000000, 0x0b07b54600000000, 0x4baacd7f00000000,
+ 0x8bcee56800000000, 0xcbd67fb400000000, 0x0bb257a300000000,
+ 0x4b1f2f9a00000000, 0x8b7b078d00000000, 0xcb45dee800000000,
+ 0x0b21f6ff00000000, 0x4b8c8ec600000000, 0x8be8a6d100000000,
+ 0x8abacba400000000, 0x4adee3b300000000, 0x0a739b8a00000000,
+ 0xca17b39d00000000, 0x8a296af800000000, 0x4a4d42ef00000000,
+ 0x0ae03ad600000000, 0xca8412c100000000, 0x8a9c881d00000000,
+ 0x4af8a00a00000000, 0x0a55d83300000000, 0xca31f02400000000,
+ 0x8a0f294100000000, 0x4a6b015600000000, 0x0ac6796f00000000,
+ 0xcaa2517800000000},
+ {0x0000000000000000, 0xd4ea739b00000000, 0xe9d396ed00000000,
+ 0x3d39e57600000000, 0x93a15c0000000000, 0x474b2f9b00000000,
+ 0x7a72caed00000000, 0xae98b97600000000, 0x2643b90000000000,
+ 0xf2a9ca9b00000000, 0xcf902fed00000000, 0x1b7a5c7600000000,
+ 0xb5e2e50000000000, 0x6108969b00000000, 0x5c3173ed00000000,
+ 0x88db007600000000, 0x4c86720100000000, 0x986c019a00000000,
+ 0xa555e4ec00000000, 0x71bf977700000000, 0xdf272e0100000000,
+ 0x0bcd5d9a00000000, 0x36f4b8ec00000000, 0xe21ecb7700000000,
+ 0x6ac5cb0100000000, 0xbe2fb89a00000000, 0x83165dec00000000,
+ 0x57fc2e7700000000, 0xf964970100000000, 0x2d8ee49a00000000,
+ 0x10b701ec00000000, 0xc45d727700000000, 0x980ce50200000000,
+ 0x4ce6969900000000, 0x71df73ef00000000, 0xa535007400000000,
+ 0x0badb90200000000, 0xdf47ca9900000000, 0xe27e2fef00000000,
+ 0x36945c7400000000, 0xbe4f5c0200000000, 0x6aa52f9900000000,
+ 0x579ccaef00000000, 0x8376b97400000000, 0x2dee000200000000,
+ 0xf904739900000000, 0xc43d96ef00000000, 0x10d7e57400000000,
+ 0xd48a970300000000, 0x0060e49800000000, 0x3d5901ee00000000,
+ 0xe9b3727500000000, 0x472bcb0300000000, 0x93c1b89800000000,
+ 0xaef85dee00000000, 0x7a122e7500000000, 0xf2c92e0300000000,
+ 0x26235d9800000000, 0x1b1ab8ee00000000, 0xcff0cb7500000000,
+ 0x6168720300000000, 0xb582019800000000, 0x88bbe4ee00000000,
+ 0x5c51977500000000, 0x3019ca0500000000, 0xe4f3b99e00000000,
+ 0xd9ca5ce800000000, 0x0d202f7300000000, 0xa3b8960500000000,
+ 0x7752e59e00000000, 0x4a6b00e800000000, 0x9e81737300000000,
+ 0x165a730500000000, 0xc2b0009e00000000, 0xff89e5e800000000,
+ 0x2b63967300000000, 0x85fb2f0500000000, 0x51115c9e00000000,
+ 0x6c28b9e800000000, 0xb8c2ca7300000000, 0x7c9fb80400000000,
+ 0xa875cb9f00000000, 0x954c2ee900000000, 0x41a65d7200000000,
+ 0xef3ee40400000000, 0x3bd4979f00000000, 0x06ed72e900000000,
+ 0xd207017200000000, 0x5adc010400000000, 0x8e36729f00000000,
+ 0xb30f97e900000000, 0x67e5e47200000000, 0xc97d5d0400000000,
+ 0x1d972e9f00000000, 0x20aecbe900000000, 0xf444b87200000000,
+ 0xa8152f0700000000, 0x7cff5c9c00000000, 0x41c6b9ea00000000,
+ 0x952cca7100000000, 0x3bb4730700000000, 0xef5e009c00000000,
+ 0xd267e5ea00000000, 0x068d967100000000, 0x8e56960700000000,
+ 0x5abce59c00000000, 0x678500ea00000000, 0xb36f737100000000,
+ 0x1df7ca0700000000, 0xc91db99c00000000, 0xf4245cea00000000,
+ 0x20ce2f7100000000, 0xe4935d0600000000, 0x30792e9d00000000,
+ 0x0d40cbeb00000000, 0xd9aab87000000000, 0x7732010600000000,
+ 0xa3d8729d00000000, 0x9ee197eb00000000, 0x4a0be47000000000,
+ 0xc2d0e40600000000, 0x163a979d00000000, 0x2b0372eb00000000,
+ 0xffe9017000000000, 0x5171b80600000000, 0x859bcb9d00000000,
+ 0xb8a22eeb00000000, 0x6c485d7000000000, 0x6032940b00000000,
+ 0xb4d8e79000000000, 0x89e102e600000000, 0x5d0b717d00000000,
+ 0xf393c80b00000000, 0x2779bb9000000000, 0x1a405ee600000000,
+ 0xceaa2d7d00000000, 0x46712d0b00000000, 0x929b5e9000000000,
+ 0xafa2bbe600000000, 0x7b48c87d00000000, 0xd5d0710b00000000,
+ 0x013a029000000000, 0x3c03e7e600000000, 0xe8e9947d00000000,
+ 0x2cb4e60a00000000, 0xf85e959100000000, 0xc56770e700000000,
+ 0x118d037c00000000, 0xbf15ba0a00000000, 0x6bffc99100000000,
+ 0x56c62ce700000000, 0x822c5f7c00000000, 0x0af75f0a00000000,
+ 0xde1d2c9100000000, 0xe324c9e700000000, 0x37ceba7c00000000,
+ 0x9956030a00000000, 0x4dbc709100000000, 0x708595e700000000,
+ 0xa46fe67c00000000, 0xf83e710900000000, 0x2cd4029200000000,
+ 0x11ede7e400000000, 0xc507947f00000000, 0x6b9f2d0900000000,
+ 0xbf755e9200000000, 0x824cbbe400000000, 0x56a6c87f00000000,
+ 0xde7dc80900000000, 0x0a97bb9200000000, 0x37ae5ee400000000,
+ 0xe3442d7f00000000, 0x4ddc940900000000, 0x9936e79200000000,
+ 0xa40f02e400000000, 0x70e5717f00000000, 0xb4b8030800000000,
+ 0x6052709300000000, 0x5d6b95e500000000, 0x8981e67e00000000,
+ 0x27195f0800000000, 0xf3f32c9300000000, 0xcecac9e500000000,
+ 0x1a20ba7e00000000, 0x92fbba0800000000, 0x4611c99300000000,
+ 0x7b282ce500000000, 0xafc25f7e00000000, 0x015ae60800000000,
+ 0xd5b0959300000000, 0xe88970e500000000, 0x3c63037e00000000,
+ 0x502b5e0e00000000, 0x84c12d9500000000, 0xb9f8c8e300000000,
+ 0x6d12bb7800000000, 0xc38a020e00000000, 0x1760719500000000,
+ 0x2a5994e300000000, 0xfeb3e77800000000, 0x7668e70e00000000,
+ 0xa282949500000000, 0x9fbb71e300000000, 0x4b51027800000000,
+ 0xe5c9bb0e00000000, 0x3123c89500000000, 0x0c1a2de300000000,
+ 0xd8f05e7800000000, 0x1cad2c0f00000000, 0xc8475f9400000000,
+ 0xf57ebae200000000, 0x2194c97900000000, 0x8f0c700f00000000,
+ 0x5be6039400000000, 0x66dfe6e200000000, 0xb235957900000000,
+ 0x3aee950f00000000, 0xee04e69400000000, 0xd33d03e200000000,
+ 0x07d7707900000000, 0xa94fc90f00000000, 0x7da5ba9400000000,
+ 0x409c5fe200000000, 0x94762c7900000000, 0xc827bb0c00000000,
+ 0x1ccdc89700000000, 0x21f42de100000000, 0xf51e5e7a00000000,
+ 0x5b86e70c00000000, 0x8f6c949700000000, 0xb25571e100000000,
+ 0x66bf027a00000000, 0xee64020c00000000, 0x3a8e719700000000,
+ 0x07b794e100000000, 0xd35de77a00000000, 0x7dc55e0c00000000,
+ 0xa92f2d9700000000, 0x9416c8e100000000, 0x40fcbb7a00000000,
+ 0x84a1c90d00000000, 0x504bba9600000000, 0x6d725fe000000000,
+ 0xb9982c7b00000000, 0x1700950d00000000, 0xc3eae69600000000,
+ 0xfed303e000000000, 0x2a39707b00000000, 0xa2e2700d00000000,
+ 0x7608039600000000, 0x4b31e6e000000000, 0x9fdb957b00000000,
+ 0x31432c0d00000000, 0xe5a95f9600000000, 0xd890bae000000000,
+ 0x0c7ac97b00000000},
+ {0x0000000000000000, 0x2765258100000000, 0x0fcc3bd900000000,
+ 0x28a91e5800000000, 0x5f9e066900000000, 0x78fb23e800000000,
+ 0x50523db000000000, 0x7737183100000000, 0xbe3c0dd200000000,
+ 0x9959285300000000, 0xb1f0360b00000000, 0x9695138a00000000,
+ 0xe1a20bbb00000000, 0xc6c72e3a00000000, 0xee6e306200000000,
+ 0xc90b15e300000000, 0x3d7f6b7f00000000, 0x1a1a4efe00000000,
+ 0x32b350a600000000, 0x15d6752700000000, 0x62e16d1600000000,
+ 0x4584489700000000, 0x6d2d56cf00000000, 0x4a48734e00000000,
+ 0x834366ad00000000, 0xa426432c00000000, 0x8c8f5d7400000000,
+ 0xabea78f500000000, 0xdcdd60c400000000, 0xfbb8454500000000,
+ 0xd3115b1d00000000, 0xf4747e9c00000000, 0x7afed6fe00000000,
+ 0x5d9bf37f00000000, 0x7532ed2700000000, 0x5257c8a600000000,
+ 0x2560d09700000000, 0x0205f51600000000, 0x2aaceb4e00000000,
+ 0x0dc9cecf00000000, 0xc4c2db2c00000000, 0xe3a7fead00000000,
+ 0xcb0ee0f500000000, 0xec6bc57400000000, 0x9b5cdd4500000000,
+ 0xbc39f8c400000000, 0x9490e69c00000000, 0xb3f5c31d00000000,
+ 0x4781bd8100000000, 0x60e4980000000000, 0x484d865800000000,
+ 0x6f28a3d900000000, 0x181fbbe800000000, 0x3f7a9e6900000000,
+ 0x17d3803100000000, 0x30b6a5b000000000, 0xf9bdb05300000000,
+ 0xded895d200000000, 0xf6718b8a00000000, 0xd114ae0b00000000,
+ 0xa623b63a00000000, 0x814693bb00000000, 0xa9ef8de300000000,
+ 0x8e8aa86200000000, 0xb5fadc2600000000, 0x929ff9a700000000,
+ 0xba36e7ff00000000, 0x9d53c27e00000000, 0xea64da4f00000000,
+ 0xcd01ffce00000000, 0xe5a8e19600000000, 0xc2cdc41700000000,
+ 0x0bc6d1f400000000, 0x2ca3f47500000000, 0x040aea2d00000000,
+ 0x236fcfac00000000, 0x5458d79d00000000, 0x733df21c00000000,
+ 0x5b94ec4400000000, 0x7cf1c9c500000000, 0x8885b75900000000,
+ 0xafe092d800000000, 0x87498c8000000000, 0xa02ca90100000000,
+ 0xd71bb13000000000, 0xf07e94b100000000, 0xd8d78ae900000000,
+ 0xffb2af6800000000, 0x36b9ba8b00000000, 0x11dc9f0a00000000,
+ 0x3975815200000000, 0x1e10a4d300000000, 0x6927bce200000000,
+ 0x4e42996300000000, 0x66eb873b00000000, 0x418ea2ba00000000,
+ 0xcf040ad800000000, 0xe8612f5900000000, 0xc0c8310100000000,
+ 0xe7ad148000000000, 0x909a0cb100000000, 0xb7ff293000000000,
+ 0x9f56376800000000, 0xb83312e900000000, 0x7138070a00000000,
+ 0x565d228b00000000, 0x7ef43cd300000000, 0x5991195200000000,
+ 0x2ea6016300000000, 0x09c324e200000000, 0x216a3aba00000000,
+ 0x060f1f3b00000000, 0xf27b61a700000000, 0xd51e442600000000,
+ 0xfdb75a7e00000000, 0xdad27fff00000000, 0xade567ce00000000,
+ 0x8a80424f00000000, 0xa2295c1700000000, 0x854c799600000000,
+ 0x4c476c7500000000, 0x6b2249f400000000, 0x438b57ac00000000,
+ 0x64ee722d00000000, 0x13d96a1c00000000, 0x34bc4f9d00000000,
+ 0x1c1551c500000000, 0x3b70744400000000, 0x6af5b94d00000000,
+ 0x4d909ccc00000000, 0x6539829400000000, 0x425ca71500000000,
+ 0x356bbf2400000000, 0x120e9aa500000000, 0x3aa784fd00000000,
+ 0x1dc2a17c00000000, 0xd4c9b49f00000000, 0xf3ac911e00000000,
+ 0xdb058f4600000000, 0xfc60aac700000000, 0x8b57b2f600000000,
+ 0xac32977700000000, 0x849b892f00000000, 0xa3feacae00000000,
+ 0x578ad23200000000, 0x70eff7b300000000, 0x5846e9eb00000000,
+ 0x7f23cc6a00000000, 0x0814d45b00000000, 0x2f71f1da00000000,
+ 0x07d8ef8200000000, 0x20bdca0300000000, 0xe9b6dfe000000000,
+ 0xced3fa6100000000, 0xe67ae43900000000, 0xc11fc1b800000000,
+ 0xb628d98900000000, 0x914dfc0800000000, 0xb9e4e25000000000,
+ 0x9e81c7d100000000, 0x100b6fb300000000, 0x376e4a3200000000,
+ 0x1fc7546a00000000, 0x38a271eb00000000, 0x4f9569da00000000,
+ 0x68f04c5b00000000, 0x4059520300000000, 0x673c778200000000,
+ 0xae37626100000000, 0x895247e000000000, 0xa1fb59b800000000,
+ 0x869e7c3900000000, 0xf1a9640800000000, 0xd6cc418900000000,
+ 0xfe655fd100000000, 0xd9007a5000000000, 0x2d7404cc00000000,
+ 0x0a11214d00000000, 0x22b83f1500000000, 0x05dd1a9400000000,
+ 0x72ea02a500000000, 0x558f272400000000, 0x7d26397c00000000,
+ 0x5a431cfd00000000, 0x9348091e00000000, 0xb42d2c9f00000000,
+ 0x9c8432c700000000, 0xbbe1174600000000, 0xccd60f7700000000,
+ 0xebb32af600000000, 0xc31a34ae00000000, 0xe47f112f00000000,
+ 0xdf0f656b00000000, 0xf86a40ea00000000, 0xd0c35eb200000000,
+ 0xf7a67b3300000000, 0x8091630200000000, 0xa7f4468300000000,
+ 0x8f5d58db00000000, 0xa8387d5a00000000, 0x613368b900000000,
+ 0x46564d3800000000, 0x6eff536000000000, 0x499a76e100000000,
+ 0x3ead6ed000000000, 0x19c84b5100000000, 0x3161550900000000,
+ 0x1604708800000000, 0xe2700e1400000000, 0xc5152b9500000000,
+ 0xedbc35cd00000000, 0xcad9104c00000000, 0xbdee087d00000000,
+ 0x9a8b2dfc00000000, 0xb22233a400000000, 0x9547162500000000,
+ 0x5c4c03c600000000, 0x7b29264700000000, 0x5380381f00000000,
+ 0x74e51d9e00000000, 0x03d205af00000000, 0x24b7202e00000000,
+ 0x0c1e3e7600000000, 0x2b7b1bf700000000, 0xa5f1b39500000000,
+ 0x8294961400000000, 0xaa3d884c00000000, 0x8d58adcd00000000,
+ 0xfa6fb5fc00000000, 0xdd0a907d00000000, 0xf5a38e2500000000,
+ 0xd2c6aba400000000, 0x1bcdbe4700000000, 0x3ca89bc600000000,
+ 0x1401859e00000000, 0x3364a01f00000000, 0x4453b82e00000000,
+ 0x63369daf00000000, 0x4b9f83f700000000, 0x6cfaa67600000000,
+ 0x988ed8ea00000000, 0xbfebfd6b00000000, 0x9742e33300000000,
+ 0xb027c6b200000000, 0xc710de8300000000, 0xe075fb0200000000,
+ 0xc8dce55a00000000, 0xefb9c0db00000000, 0x26b2d53800000000,
+ 0x01d7f0b900000000, 0x297eeee100000000, 0x0e1bcb6000000000,
+ 0x792cd35100000000, 0x5e49f6d000000000, 0x76e0e88800000000,
+ 0x5185cd0900000000}};
+
+#else /* W == 4 */
+
+local const z_crc_t FAR crc_braid_table[][256] = {
+ {0x00000000, 0x9ba54c6f, 0xec3b9e9f, 0x779ed2f0, 0x03063b7f,
+ 0x98a37710, 0xef3da5e0, 0x7498e98f, 0x060c76fe, 0x9da93a91,
+ 0xea37e861, 0x7192a40e, 0x050a4d81, 0x9eaf01ee, 0xe931d31e,
+ 0x72949f71, 0x0c18edfc, 0x97bda193, 0xe0237363, 0x7b863f0c,
+ 0x0f1ed683, 0x94bb9aec, 0xe325481c, 0x78800473, 0x0a149b02,
+ 0x91b1d76d, 0xe62f059d, 0x7d8a49f2, 0x0912a07d, 0x92b7ec12,
+ 0xe5293ee2, 0x7e8c728d, 0x1831dbf8, 0x83949797, 0xf40a4567,
+ 0x6faf0908, 0x1b37e087, 0x8092ace8, 0xf70c7e18, 0x6ca93277,
+ 0x1e3dad06, 0x8598e169, 0xf2063399, 0x69a37ff6, 0x1d3b9679,
+ 0x869eda16, 0xf10008e6, 0x6aa54489, 0x14293604, 0x8f8c7a6b,
+ 0xf812a89b, 0x63b7e4f4, 0x172f0d7b, 0x8c8a4114, 0xfb1493e4,
+ 0x60b1df8b, 0x122540fa, 0x89800c95, 0xfe1ede65, 0x65bb920a,
+ 0x11237b85, 0x8a8637ea, 0xfd18e51a, 0x66bda975, 0x3063b7f0,
+ 0xabc6fb9f, 0xdc58296f, 0x47fd6500, 0x33658c8f, 0xa8c0c0e0,
+ 0xdf5e1210, 0x44fb5e7f, 0x366fc10e, 0xadca8d61, 0xda545f91,
+ 0x41f113fe, 0x3569fa71, 0xaeccb61e, 0xd95264ee, 0x42f72881,
+ 0x3c7b5a0c, 0xa7de1663, 0xd040c493, 0x4be588fc, 0x3f7d6173,
+ 0xa4d82d1c, 0xd346ffec, 0x48e3b383, 0x3a772cf2, 0xa1d2609d,
+ 0xd64cb26d, 0x4de9fe02, 0x3971178d, 0xa2d45be2, 0xd54a8912,
+ 0x4eefc57d, 0x28526c08, 0xb3f72067, 0xc469f297, 0x5fccbef8,
+ 0x2b545777, 0xb0f11b18, 0xc76fc9e8, 0x5cca8587, 0x2e5e1af6,
+ 0xb5fb5699, 0xc2658469, 0x59c0c806, 0x2d582189, 0xb6fd6de6,
+ 0xc163bf16, 0x5ac6f379, 0x244a81f4, 0xbfefcd9b, 0xc8711f6b,
+ 0x53d45304, 0x274cba8b, 0xbce9f6e4, 0xcb772414, 0x50d2687b,
+ 0x2246f70a, 0xb9e3bb65, 0xce7d6995, 0x55d825fa, 0x2140cc75,
+ 0xbae5801a, 0xcd7b52ea, 0x56de1e85, 0x60c76fe0, 0xfb62238f,
+ 0x8cfcf17f, 0x1759bd10, 0x63c1549f, 0xf86418f0, 0x8ffaca00,
+ 0x145f866f, 0x66cb191e, 0xfd6e5571, 0x8af08781, 0x1155cbee,
+ 0x65cd2261, 0xfe686e0e, 0x89f6bcfe, 0x1253f091, 0x6cdf821c,
+ 0xf77ace73, 0x80e41c83, 0x1b4150ec, 0x6fd9b963, 0xf47cf50c,
+ 0x83e227fc, 0x18476b93, 0x6ad3f4e2, 0xf176b88d, 0x86e86a7d,
+ 0x1d4d2612, 0x69d5cf9d, 0xf27083f2, 0x85ee5102, 0x1e4b1d6d,
+ 0x78f6b418, 0xe353f877, 0x94cd2a87, 0x0f6866e8, 0x7bf08f67,
+ 0xe055c308, 0x97cb11f8, 0x0c6e5d97, 0x7efac2e6, 0xe55f8e89,
+ 0x92c15c79, 0x09641016, 0x7dfcf999, 0xe659b5f6, 0x91c76706,
+ 0x0a622b69, 0x74ee59e4, 0xef4b158b, 0x98d5c77b, 0x03708b14,
+ 0x77e8629b, 0xec4d2ef4, 0x9bd3fc04, 0x0076b06b, 0x72e22f1a,
+ 0xe9476375, 0x9ed9b185, 0x057cfdea, 0x71e41465, 0xea41580a,
+ 0x9ddf8afa, 0x067ac695, 0x50a4d810, 0xcb01947f, 0xbc9f468f,
+ 0x273a0ae0, 0x53a2e36f, 0xc807af00, 0xbf997df0, 0x243c319f,
+ 0x56a8aeee, 0xcd0de281, 0xba933071, 0x21367c1e, 0x55ae9591,
+ 0xce0bd9fe, 0xb9950b0e, 0x22304761, 0x5cbc35ec, 0xc7197983,
+ 0xb087ab73, 0x2b22e71c, 0x5fba0e93, 0xc41f42fc, 0xb381900c,
+ 0x2824dc63, 0x5ab04312, 0xc1150f7d, 0xb68bdd8d, 0x2d2e91e2,
+ 0x59b6786d, 0xc2133402, 0xb58de6f2, 0x2e28aa9d, 0x489503e8,
+ 0xd3304f87, 0xa4ae9d77, 0x3f0bd118, 0x4b933897, 0xd03674f8,
+ 0xa7a8a608, 0x3c0dea67, 0x4e997516, 0xd53c3979, 0xa2a2eb89,
+ 0x3907a7e6, 0x4d9f4e69, 0xd63a0206, 0xa1a4d0f6, 0x3a019c99,
+ 0x448dee14, 0xdf28a27b, 0xa8b6708b, 0x33133ce4, 0x478bd56b,
+ 0xdc2e9904, 0xabb04bf4, 0x3015079b, 0x428198ea, 0xd924d485,
+ 0xaeba0675, 0x351f4a1a, 0x4187a395, 0xda22effa, 0xadbc3d0a,
+ 0x36197165},
+ {0x00000000, 0xc18edfc0, 0x586cb9c1, 0x99e26601, 0xb0d97382,
+ 0x7157ac42, 0xe8b5ca43, 0x293b1583, 0xbac3e145, 0x7b4d3e85,
+ 0xe2af5884, 0x23218744, 0x0a1a92c7, 0xcb944d07, 0x52762b06,
+ 0x93f8f4c6, 0xaef6c4cb, 0x6f781b0b, 0xf69a7d0a, 0x3714a2ca,
+ 0x1e2fb749, 0xdfa16889, 0x46430e88, 0x87cdd148, 0x1435258e,
+ 0xd5bbfa4e, 0x4c599c4f, 0x8dd7438f, 0xa4ec560c, 0x656289cc,
+ 0xfc80efcd, 0x3d0e300d, 0x869c8fd7, 0x47125017, 0xdef03616,
+ 0x1f7ee9d6, 0x3645fc55, 0xf7cb2395, 0x6e294594, 0xafa79a54,
+ 0x3c5f6e92, 0xfdd1b152, 0x6433d753, 0xa5bd0893, 0x8c861d10,
+ 0x4d08c2d0, 0xd4eaa4d1, 0x15647b11, 0x286a4b1c, 0xe9e494dc,
+ 0x7006f2dd, 0xb1882d1d, 0x98b3389e, 0x593de75e, 0xc0df815f,
+ 0x01515e9f, 0x92a9aa59, 0x53277599, 0xcac51398, 0x0b4bcc58,
+ 0x2270d9db, 0xe3fe061b, 0x7a1c601a, 0xbb92bfda, 0xd64819ef,
+ 0x17c6c62f, 0x8e24a02e, 0x4faa7fee, 0x66916a6d, 0xa71fb5ad,
+ 0x3efdd3ac, 0xff730c6c, 0x6c8bf8aa, 0xad05276a, 0x34e7416b,
+ 0xf5699eab, 0xdc528b28, 0x1ddc54e8, 0x843e32e9, 0x45b0ed29,
+ 0x78bedd24, 0xb93002e4, 0x20d264e5, 0xe15cbb25, 0xc867aea6,
+ 0x09e97166, 0x900b1767, 0x5185c8a7, 0xc27d3c61, 0x03f3e3a1,
+ 0x9a1185a0, 0x5b9f5a60, 0x72a44fe3, 0xb32a9023, 0x2ac8f622,
+ 0xeb4629e2, 0x50d49638, 0x915a49f8, 0x08b82ff9, 0xc936f039,
+ 0xe00de5ba, 0x21833a7a, 0xb8615c7b, 0x79ef83bb, 0xea17777d,
+ 0x2b99a8bd, 0xb27bcebc, 0x73f5117c, 0x5ace04ff, 0x9b40db3f,
+ 0x02a2bd3e, 0xc32c62fe, 0xfe2252f3, 0x3fac8d33, 0xa64eeb32,
+ 0x67c034f2, 0x4efb2171, 0x8f75feb1, 0x169798b0, 0xd7194770,
+ 0x44e1b3b6, 0x856f6c76, 0x1c8d0a77, 0xdd03d5b7, 0xf438c034,
+ 0x35b61ff4, 0xac5479f5, 0x6ddaa635, 0x77e1359f, 0xb66fea5f,
+ 0x2f8d8c5e, 0xee03539e, 0xc738461d, 0x06b699dd, 0x9f54ffdc,
+ 0x5eda201c, 0xcd22d4da, 0x0cac0b1a, 0x954e6d1b, 0x54c0b2db,
+ 0x7dfba758, 0xbc757898, 0x25971e99, 0xe419c159, 0xd917f154,
+ 0x18992e94, 0x817b4895, 0x40f59755, 0x69ce82d6, 0xa8405d16,
+ 0x31a23b17, 0xf02ce4d7, 0x63d41011, 0xa25acfd1, 0x3bb8a9d0,
+ 0xfa367610, 0xd30d6393, 0x1283bc53, 0x8b61da52, 0x4aef0592,
+ 0xf17dba48, 0x30f36588, 0xa9110389, 0x689fdc49, 0x41a4c9ca,
+ 0x802a160a, 0x19c8700b, 0xd846afcb, 0x4bbe5b0d, 0x8a3084cd,
+ 0x13d2e2cc, 0xd25c3d0c, 0xfb67288f, 0x3ae9f74f, 0xa30b914e,
+ 0x62854e8e, 0x5f8b7e83, 0x9e05a143, 0x07e7c742, 0xc6691882,
+ 0xef520d01, 0x2edcd2c1, 0xb73eb4c0, 0x76b06b00, 0xe5489fc6,
+ 0x24c64006, 0xbd242607, 0x7caaf9c7, 0x5591ec44, 0x941f3384,
+ 0x0dfd5585, 0xcc738a45, 0xa1a92c70, 0x6027f3b0, 0xf9c595b1,
+ 0x384b4a71, 0x11705ff2, 0xd0fe8032, 0x491ce633, 0x889239f3,
+ 0x1b6acd35, 0xdae412f5, 0x430674f4, 0x8288ab34, 0xabb3beb7,
+ 0x6a3d6177, 0xf3df0776, 0x3251d8b6, 0x0f5fe8bb, 0xced1377b,
+ 0x5733517a, 0x96bd8eba, 0xbf869b39, 0x7e0844f9, 0xe7ea22f8,
+ 0x2664fd38, 0xb59c09fe, 0x7412d63e, 0xedf0b03f, 0x2c7e6fff,
+ 0x05457a7c, 0xc4cba5bc, 0x5d29c3bd, 0x9ca71c7d, 0x2735a3a7,
+ 0xe6bb7c67, 0x7f591a66, 0xbed7c5a6, 0x97ecd025, 0x56620fe5,
+ 0xcf8069e4, 0x0e0eb624, 0x9df642e2, 0x5c789d22, 0xc59afb23,
+ 0x041424e3, 0x2d2f3160, 0xeca1eea0, 0x754388a1, 0xb4cd5761,
+ 0x89c3676c, 0x484db8ac, 0xd1afdead, 0x1021016d, 0x391a14ee,
+ 0xf894cb2e, 0x6176ad2f, 0xa0f872ef, 0x33008629, 0xf28e59e9,
+ 0x6b6c3fe8, 0xaae2e028, 0x83d9f5ab, 0x42572a6b, 0xdbb54c6a,
+ 0x1a3b93aa},
+ {0x00000000, 0xefc26b3e, 0x04f5d03d, 0xeb37bb03, 0x09eba07a,
+ 0xe629cb44, 0x0d1e7047, 0xe2dc1b79, 0x13d740f4, 0xfc152bca,
+ 0x172290c9, 0xf8e0fbf7, 0x1a3ce08e, 0xf5fe8bb0, 0x1ec930b3,
+ 0xf10b5b8d, 0x27ae81e8, 0xc86cead6, 0x235b51d5, 0xcc993aeb,
+ 0x2e452192, 0xc1874aac, 0x2ab0f1af, 0xc5729a91, 0x3479c11c,
+ 0xdbbbaa22, 0x308c1121, 0xdf4e7a1f, 0x3d926166, 0xd2500a58,
+ 0x3967b15b, 0xd6a5da65, 0x4f5d03d0, 0xa09f68ee, 0x4ba8d3ed,
+ 0xa46ab8d3, 0x46b6a3aa, 0xa974c894, 0x42437397, 0xad8118a9,
+ 0x5c8a4324, 0xb348281a, 0x587f9319, 0xb7bdf827, 0x5561e35e,
+ 0xbaa38860, 0x51943363, 0xbe56585d, 0x68f38238, 0x8731e906,
+ 0x6c065205, 0x83c4393b, 0x61182242, 0x8eda497c, 0x65edf27f,
+ 0x8a2f9941, 0x7b24c2cc, 0x94e6a9f2, 0x7fd112f1, 0x901379cf,
+ 0x72cf62b6, 0x9d0d0988, 0x763ab28b, 0x99f8d9b5, 0x9eba07a0,
+ 0x71786c9e, 0x9a4fd79d, 0x758dbca3, 0x9751a7da, 0x7893cce4,
+ 0x93a477e7, 0x7c661cd9, 0x8d6d4754, 0x62af2c6a, 0x89989769,
+ 0x665afc57, 0x8486e72e, 0x6b448c10, 0x80733713, 0x6fb15c2d,
+ 0xb9148648, 0x56d6ed76, 0xbde15675, 0x52233d4b, 0xb0ff2632,
+ 0x5f3d4d0c, 0xb40af60f, 0x5bc89d31, 0xaac3c6bc, 0x4501ad82,
+ 0xae361681, 0x41f47dbf, 0xa32866c6, 0x4cea0df8, 0xa7ddb6fb,
+ 0x481fddc5, 0xd1e70470, 0x3e256f4e, 0xd512d44d, 0x3ad0bf73,
+ 0xd80ca40a, 0x37cecf34, 0xdcf97437, 0x333b1f09, 0xc2304484,
+ 0x2df22fba, 0xc6c594b9, 0x2907ff87, 0xcbdbe4fe, 0x24198fc0,
+ 0xcf2e34c3, 0x20ec5ffd, 0xf6498598, 0x198beea6, 0xf2bc55a5,
+ 0x1d7e3e9b, 0xffa225e2, 0x10604edc, 0xfb57f5df, 0x14959ee1,
+ 0xe59ec56c, 0x0a5cae52, 0xe16b1551, 0x0ea97e6f, 0xec756516,
+ 0x03b70e28, 0xe880b52b, 0x0742de15, 0xe6050901, 0x09c7623f,
+ 0xe2f0d93c, 0x0d32b202, 0xefeea97b, 0x002cc245, 0xeb1b7946,
+ 0x04d91278, 0xf5d249f5, 0x1a1022cb, 0xf12799c8, 0x1ee5f2f6,
+ 0xfc39e98f, 0x13fb82b1, 0xf8cc39b2, 0x170e528c, 0xc1ab88e9,
+ 0x2e69e3d7, 0xc55e58d4, 0x2a9c33ea, 0xc8402893, 0x278243ad,
+ 0xccb5f8ae, 0x23779390, 0xd27cc81d, 0x3dbea323, 0xd6891820,
+ 0x394b731e, 0xdb976867, 0x34550359, 0xdf62b85a, 0x30a0d364,
+ 0xa9580ad1, 0x469a61ef, 0xadaddaec, 0x426fb1d2, 0xa0b3aaab,
+ 0x4f71c195, 0xa4467a96, 0x4b8411a8, 0xba8f4a25, 0x554d211b,
+ 0xbe7a9a18, 0x51b8f126, 0xb364ea5f, 0x5ca68161, 0xb7913a62,
+ 0x5853515c, 0x8ef68b39, 0x6134e007, 0x8a035b04, 0x65c1303a,
+ 0x871d2b43, 0x68df407d, 0x83e8fb7e, 0x6c2a9040, 0x9d21cbcd,
+ 0x72e3a0f3, 0x99d41bf0, 0x761670ce, 0x94ca6bb7, 0x7b080089,
+ 0x903fbb8a, 0x7ffdd0b4, 0x78bf0ea1, 0x977d659f, 0x7c4ade9c,
+ 0x9388b5a2, 0x7154aedb, 0x9e96c5e5, 0x75a17ee6, 0x9a6315d8,
+ 0x6b684e55, 0x84aa256b, 0x6f9d9e68, 0x805ff556, 0x6283ee2f,
+ 0x8d418511, 0x66763e12, 0x89b4552c, 0x5f118f49, 0xb0d3e477,
+ 0x5be45f74, 0xb426344a, 0x56fa2f33, 0xb938440d, 0x520fff0e,
+ 0xbdcd9430, 0x4cc6cfbd, 0xa304a483, 0x48331f80, 0xa7f174be,
+ 0x452d6fc7, 0xaaef04f9, 0x41d8bffa, 0xae1ad4c4, 0x37e20d71,
+ 0xd820664f, 0x3317dd4c, 0xdcd5b672, 0x3e09ad0b, 0xd1cbc635,
+ 0x3afc7d36, 0xd53e1608, 0x24354d85, 0xcbf726bb, 0x20c09db8,
+ 0xcf02f686, 0x2ddeedff, 0xc21c86c1, 0x292b3dc2, 0xc6e956fc,
+ 0x104c8c99, 0xff8ee7a7, 0x14b95ca4, 0xfb7b379a, 0x19a72ce3,
+ 0xf66547dd, 0x1d52fcde, 0xf29097e0, 0x039bcc6d, 0xec59a753,
+ 0x076e1c50, 0xe8ac776e, 0x0a706c17, 0xe5b20729, 0x0e85bc2a,
+ 0xe147d714},
+ {0x00000000, 0x177b1443, 0x2ef62886, 0x398d3cc5, 0x5dec510c,
+ 0x4a97454f, 0x731a798a, 0x64616dc9, 0xbbd8a218, 0xaca3b65b,
+ 0x952e8a9e, 0x82559edd, 0xe634f314, 0xf14fe757, 0xc8c2db92,
+ 0xdfb9cfd1, 0xacc04271, 0xbbbb5632, 0x82366af7, 0x954d7eb4,
+ 0xf12c137d, 0xe657073e, 0xdfda3bfb, 0xc8a12fb8, 0x1718e069,
+ 0x0063f42a, 0x39eec8ef, 0x2e95dcac, 0x4af4b165, 0x5d8fa526,
+ 0x640299e3, 0x73798da0, 0x82f182a3, 0x958a96e0, 0xac07aa25,
+ 0xbb7cbe66, 0xdf1dd3af, 0xc866c7ec, 0xf1ebfb29, 0xe690ef6a,
+ 0x392920bb, 0x2e5234f8, 0x17df083d, 0x00a41c7e, 0x64c571b7,
+ 0x73be65f4, 0x4a335931, 0x5d484d72, 0x2e31c0d2, 0x394ad491,
+ 0x00c7e854, 0x17bcfc17, 0x73dd91de, 0x64a6859d, 0x5d2bb958,
+ 0x4a50ad1b, 0x95e962ca, 0x82927689, 0xbb1f4a4c, 0xac645e0f,
+ 0xc80533c6, 0xdf7e2785, 0xe6f31b40, 0xf1880f03, 0xde920307,
+ 0xc9e91744, 0xf0642b81, 0xe71f3fc2, 0x837e520b, 0x94054648,
+ 0xad887a8d, 0xbaf36ece, 0x654aa11f, 0x7231b55c, 0x4bbc8999,
+ 0x5cc79dda, 0x38a6f013, 0x2fdde450, 0x1650d895, 0x012bccd6,
+ 0x72524176, 0x65295535, 0x5ca469f0, 0x4bdf7db3, 0x2fbe107a,
+ 0x38c50439, 0x014838fc, 0x16332cbf, 0xc98ae36e, 0xdef1f72d,
+ 0xe77ccbe8, 0xf007dfab, 0x9466b262, 0x831da621, 0xba909ae4,
+ 0xadeb8ea7, 0x5c6381a4, 0x4b1895e7, 0x7295a922, 0x65eebd61,
+ 0x018fd0a8, 0x16f4c4eb, 0x2f79f82e, 0x3802ec6d, 0xe7bb23bc,
+ 0xf0c037ff, 0xc94d0b3a, 0xde361f79, 0xba5772b0, 0xad2c66f3,
+ 0x94a15a36, 0x83da4e75, 0xf0a3c3d5, 0xe7d8d796, 0xde55eb53,
+ 0xc92eff10, 0xad4f92d9, 0xba34869a, 0x83b9ba5f, 0x94c2ae1c,
+ 0x4b7b61cd, 0x5c00758e, 0x658d494b, 0x72f65d08, 0x169730c1,
+ 0x01ec2482, 0x38611847, 0x2f1a0c04, 0x6655004f, 0x712e140c,
+ 0x48a328c9, 0x5fd83c8a, 0x3bb95143, 0x2cc24500, 0x154f79c5,
+ 0x02346d86, 0xdd8da257, 0xcaf6b614, 0xf37b8ad1, 0xe4009e92,
+ 0x8061f35b, 0x971ae718, 0xae97dbdd, 0xb9eccf9e, 0xca95423e,
+ 0xddee567d, 0xe4636ab8, 0xf3187efb, 0x97791332, 0x80020771,
+ 0xb98f3bb4, 0xaef42ff7, 0x714de026, 0x6636f465, 0x5fbbc8a0,
+ 0x48c0dce3, 0x2ca1b12a, 0x3bdaa569, 0x025799ac, 0x152c8def,
+ 0xe4a482ec, 0xf3df96af, 0xca52aa6a, 0xdd29be29, 0xb948d3e0,
+ 0xae33c7a3, 0x97befb66, 0x80c5ef25, 0x5f7c20f4, 0x480734b7,
+ 0x718a0872, 0x66f11c31, 0x029071f8, 0x15eb65bb, 0x2c66597e,
+ 0x3b1d4d3d, 0x4864c09d, 0x5f1fd4de, 0x6692e81b, 0x71e9fc58,
+ 0x15889191, 0x02f385d2, 0x3b7eb917, 0x2c05ad54, 0xf3bc6285,
+ 0xe4c776c6, 0xdd4a4a03, 0xca315e40, 0xae503389, 0xb92b27ca,
+ 0x80a61b0f, 0x97dd0f4c, 0xb8c70348, 0xafbc170b, 0x96312bce,
+ 0x814a3f8d, 0xe52b5244, 0xf2504607, 0xcbdd7ac2, 0xdca66e81,
+ 0x031fa150, 0x1464b513, 0x2de989d6, 0x3a929d95, 0x5ef3f05c,
+ 0x4988e41f, 0x7005d8da, 0x677ecc99, 0x14074139, 0x037c557a,
+ 0x3af169bf, 0x2d8a7dfc, 0x49eb1035, 0x5e900476, 0x671d38b3,
+ 0x70662cf0, 0xafdfe321, 0xb8a4f762, 0x8129cba7, 0x9652dfe4,
+ 0xf233b22d, 0xe548a66e, 0xdcc59aab, 0xcbbe8ee8, 0x3a3681eb,
+ 0x2d4d95a8, 0x14c0a96d, 0x03bbbd2e, 0x67dad0e7, 0x70a1c4a4,
+ 0x492cf861, 0x5e57ec22, 0x81ee23f3, 0x969537b0, 0xaf180b75,
+ 0xb8631f36, 0xdc0272ff, 0xcb7966bc, 0xf2f45a79, 0xe58f4e3a,
+ 0x96f6c39a, 0x818dd7d9, 0xb800eb1c, 0xaf7bff5f, 0xcb1a9296,
+ 0xdc6186d5, 0xe5ecba10, 0xf297ae53, 0x2d2e6182, 0x3a5575c1,
+ 0x03d84904, 0x14a35d47, 0x70c2308e, 0x67b924cd, 0x5e341808,
+ 0x494f0c4b}};
+
+local const z_word_t FAR crc_braid_big_table[][256] = {
+ {0x00000000, 0x43147b17, 0x8628f62e, 0xc53c8d39, 0x0c51ec5d,
+ 0x4f45974a, 0x8a791a73, 0xc96d6164, 0x18a2d8bb, 0x5bb6a3ac,
+ 0x9e8a2e95, 0xdd9e5582, 0x14f334e6, 0x57e74ff1, 0x92dbc2c8,
+ 0xd1cfb9df, 0x7142c0ac, 0x3256bbbb, 0xf76a3682, 0xb47e4d95,
+ 0x7d132cf1, 0x3e0757e6, 0xfb3bdadf, 0xb82fa1c8, 0x69e01817,
+ 0x2af46300, 0xefc8ee39, 0xacdc952e, 0x65b1f44a, 0x26a58f5d,
+ 0xe3990264, 0xa08d7973, 0xa382f182, 0xe0968a95, 0x25aa07ac,
+ 0x66be7cbb, 0xafd31ddf, 0xecc766c8, 0x29fbebf1, 0x6aef90e6,
+ 0xbb202939, 0xf834522e, 0x3d08df17, 0x7e1ca400, 0xb771c564,
+ 0xf465be73, 0x3159334a, 0x724d485d, 0xd2c0312e, 0x91d44a39,
+ 0x54e8c700, 0x17fcbc17, 0xde91dd73, 0x9d85a664, 0x58b92b5d,
+ 0x1bad504a, 0xca62e995, 0x89769282, 0x4c4a1fbb, 0x0f5e64ac,
+ 0xc63305c8, 0x85277edf, 0x401bf3e6, 0x030f88f1, 0x070392de,
+ 0x4417e9c9, 0x812b64f0, 0xc23f1fe7, 0x0b527e83, 0x48460594,
+ 0x8d7a88ad, 0xce6ef3ba, 0x1fa14a65, 0x5cb53172, 0x9989bc4b,
+ 0xda9dc75c, 0x13f0a638, 0x50e4dd2f, 0x95d85016, 0xd6cc2b01,
+ 0x76415272, 0x35552965, 0xf069a45c, 0xb37ddf4b, 0x7a10be2f,
+ 0x3904c538, 0xfc384801, 0xbf2c3316, 0x6ee38ac9, 0x2df7f1de,
+ 0xe8cb7ce7, 0xabdf07f0, 0x62b26694, 0x21a61d83, 0xe49a90ba,
+ 0xa78eebad, 0xa481635c, 0xe795184b, 0x22a99572, 0x61bdee65,
+ 0xa8d08f01, 0xebc4f416, 0x2ef8792f, 0x6dec0238, 0xbc23bbe7,
+ 0xff37c0f0, 0x3a0b4dc9, 0x791f36de, 0xb07257ba, 0xf3662cad,
+ 0x365aa194, 0x754eda83, 0xd5c3a3f0, 0x96d7d8e7, 0x53eb55de,
+ 0x10ff2ec9, 0xd9924fad, 0x9a8634ba, 0x5fbab983, 0x1caec294,
+ 0xcd617b4b, 0x8e75005c, 0x4b498d65, 0x085df672, 0xc1309716,
+ 0x8224ec01, 0x47186138, 0x040c1a2f, 0x4f005566, 0x0c142e71,
+ 0xc928a348, 0x8a3cd85f, 0x4351b93b, 0x0045c22c, 0xc5794f15,
+ 0x866d3402, 0x57a28ddd, 0x14b6f6ca, 0xd18a7bf3, 0x929e00e4,
+ 0x5bf36180, 0x18e71a97, 0xdddb97ae, 0x9ecfecb9, 0x3e4295ca,
+ 0x7d56eedd, 0xb86a63e4, 0xfb7e18f3, 0x32137997, 0x71070280,
+ 0xb43b8fb9, 0xf72ff4ae, 0x26e04d71, 0x65f43666, 0xa0c8bb5f,
+ 0xe3dcc048, 0x2ab1a12c, 0x69a5da3b, 0xac995702, 0xef8d2c15,
+ 0xec82a4e4, 0xaf96dff3, 0x6aaa52ca, 0x29be29dd, 0xe0d348b9,
+ 0xa3c733ae, 0x66fbbe97, 0x25efc580, 0xf4207c5f, 0xb7340748,
+ 0x72088a71, 0x311cf166, 0xf8719002, 0xbb65eb15, 0x7e59662c,
+ 0x3d4d1d3b, 0x9dc06448, 0xded41f5f, 0x1be89266, 0x58fce971,
+ 0x91918815, 0xd285f302, 0x17b97e3b, 0x54ad052c, 0x8562bcf3,
+ 0xc676c7e4, 0x034a4add, 0x405e31ca, 0x893350ae, 0xca272bb9,
+ 0x0f1ba680, 0x4c0fdd97, 0x4803c7b8, 0x0b17bcaf, 0xce2b3196,
+ 0x8d3f4a81, 0x44522be5, 0x074650f2, 0xc27addcb, 0x816ea6dc,
+ 0x50a11f03, 0x13b56414, 0xd689e92d, 0x959d923a, 0x5cf0f35e,
+ 0x1fe48849, 0xdad80570, 0x99cc7e67, 0x39410714, 0x7a557c03,
+ 0xbf69f13a, 0xfc7d8a2d, 0x3510eb49, 0x7604905e, 0xb3381d67,
+ 0xf02c6670, 0x21e3dfaf, 0x62f7a4b8, 0xa7cb2981, 0xe4df5296,
+ 0x2db233f2, 0x6ea648e5, 0xab9ac5dc, 0xe88ebecb, 0xeb81363a,
+ 0xa8954d2d, 0x6da9c014, 0x2ebdbb03, 0xe7d0da67, 0xa4c4a170,
+ 0x61f82c49, 0x22ec575e, 0xf323ee81, 0xb0379596, 0x750b18af,
+ 0x361f63b8, 0xff7202dc, 0xbc6679cb, 0x795af4f2, 0x3a4e8fe5,
+ 0x9ac3f696, 0xd9d78d81, 0x1ceb00b8, 0x5fff7baf, 0x96921acb,
+ 0xd58661dc, 0x10baece5, 0x53ae97f2, 0x82612e2d, 0xc175553a,
+ 0x0449d803, 0x475da314, 0x8e30c270, 0xcd24b967, 0x0818345e,
+ 0x4b0c4f49},
+ {0x00000000, 0x3e6bc2ef, 0x3dd0f504, 0x03bb37eb, 0x7aa0eb09,
+ 0x44cb29e6, 0x47701e0d, 0x791bdce2, 0xf440d713, 0xca2b15fc,
+ 0xc9902217, 0xf7fbe0f8, 0x8ee03c1a, 0xb08bfef5, 0xb330c91e,
+ 0x8d5b0bf1, 0xe881ae27, 0xd6ea6cc8, 0xd5515b23, 0xeb3a99cc,
+ 0x9221452e, 0xac4a87c1, 0xaff1b02a, 0x919a72c5, 0x1cc17934,
+ 0x22aabbdb, 0x21118c30, 0x1f7a4edf, 0x6661923d, 0x580a50d2,
+ 0x5bb16739, 0x65daa5d6, 0xd0035d4f, 0xee689fa0, 0xedd3a84b,
+ 0xd3b86aa4, 0xaaa3b646, 0x94c874a9, 0x97734342, 0xa91881ad,
+ 0x24438a5c, 0x1a2848b3, 0x19937f58, 0x27f8bdb7, 0x5ee36155,
+ 0x6088a3ba, 0x63339451, 0x5d5856be, 0x3882f368, 0x06e93187,
+ 0x0552066c, 0x3b39c483, 0x42221861, 0x7c49da8e, 0x7ff2ed65,
+ 0x41992f8a, 0xccc2247b, 0xf2a9e694, 0xf112d17f, 0xcf791390,
+ 0xb662cf72, 0x88090d9d, 0x8bb23a76, 0xb5d9f899, 0xa007ba9e,
+ 0x9e6c7871, 0x9dd74f9a, 0xa3bc8d75, 0xdaa75197, 0xe4cc9378,
+ 0xe777a493, 0xd91c667c, 0x54476d8d, 0x6a2caf62, 0x69979889,
+ 0x57fc5a66, 0x2ee78684, 0x108c446b, 0x13377380, 0x2d5cb16f,
+ 0x488614b9, 0x76edd656, 0x7556e1bd, 0x4b3d2352, 0x3226ffb0,
+ 0x0c4d3d5f, 0x0ff60ab4, 0x319dc85b, 0xbcc6c3aa, 0x82ad0145,
+ 0x811636ae, 0xbf7df441, 0xc66628a3, 0xf80dea4c, 0xfbb6dda7,
+ 0xc5dd1f48, 0x7004e7d1, 0x4e6f253e, 0x4dd412d5, 0x73bfd03a,
+ 0x0aa40cd8, 0x34cfce37, 0x3774f9dc, 0x091f3b33, 0x844430c2,
+ 0xba2ff22d, 0xb994c5c6, 0x87ff0729, 0xfee4dbcb, 0xc08f1924,
+ 0xc3342ecf, 0xfd5fec20, 0x988549f6, 0xa6ee8b19, 0xa555bcf2,
+ 0x9b3e7e1d, 0xe225a2ff, 0xdc4e6010, 0xdff557fb, 0xe19e9514,
+ 0x6cc59ee5, 0x52ae5c0a, 0x51156be1, 0x6f7ea90e, 0x166575ec,
+ 0x280eb703, 0x2bb580e8, 0x15de4207, 0x010905e6, 0x3f62c709,
+ 0x3cd9f0e2, 0x02b2320d, 0x7ba9eeef, 0x45c22c00, 0x46791beb,
+ 0x7812d904, 0xf549d2f5, 0xcb22101a, 0xc89927f1, 0xf6f2e51e,
+ 0x8fe939fc, 0xb182fb13, 0xb239ccf8, 0x8c520e17, 0xe988abc1,
+ 0xd7e3692e, 0xd4585ec5, 0xea339c2a, 0x932840c8, 0xad438227,
+ 0xaef8b5cc, 0x90937723, 0x1dc87cd2, 0x23a3be3d, 0x201889d6,
+ 0x1e734b39, 0x676897db, 0x59035534, 0x5ab862df, 0x64d3a030,
+ 0xd10a58a9, 0xef619a46, 0xecdaadad, 0xd2b16f42, 0xabaab3a0,
+ 0x95c1714f, 0x967a46a4, 0xa811844b, 0x254a8fba, 0x1b214d55,
+ 0x189a7abe, 0x26f1b851, 0x5fea64b3, 0x6181a65c, 0x623a91b7,
+ 0x5c515358, 0x398bf68e, 0x07e03461, 0x045b038a, 0x3a30c165,
+ 0x432b1d87, 0x7d40df68, 0x7efbe883, 0x40902a6c, 0xcdcb219d,
+ 0xf3a0e372, 0xf01bd499, 0xce701676, 0xb76bca94, 0x8900087b,
+ 0x8abb3f90, 0xb4d0fd7f, 0xa10ebf78, 0x9f657d97, 0x9cde4a7c,
+ 0xa2b58893, 0xdbae5471, 0xe5c5969e, 0xe67ea175, 0xd815639a,
+ 0x554e686b, 0x6b25aa84, 0x689e9d6f, 0x56f55f80, 0x2fee8362,
+ 0x1185418d, 0x123e7666, 0x2c55b489, 0x498f115f, 0x77e4d3b0,
+ 0x745fe45b, 0x4a3426b4, 0x332ffa56, 0x0d4438b9, 0x0eff0f52,
+ 0x3094cdbd, 0xbdcfc64c, 0x83a404a3, 0x801f3348, 0xbe74f1a7,
+ 0xc76f2d45, 0xf904efaa, 0xfabfd841, 0xc4d41aae, 0x710de237,
+ 0x4f6620d8, 0x4cdd1733, 0x72b6d5dc, 0x0bad093e, 0x35c6cbd1,
+ 0x367dfc3a, 0x08163ed5, 0x854d3524, 0xbb26f7cb, 0xb89dc020,
+ 0x86f602cf, 0xffedde2d, 0xc1861cc2, 0xc23d2b29, 0xfc56e9c6,
+ 0x998c4c10, 0xa7e78eff, 0xa45cb914, 0x9a377bfb, 0xe32ca719,
+ 0xdd4765f6, 0xdefc521d, 0xe09790f2, 0x6dcc9b03, 0x53a759ec,
+ 0x501c6e07, 0x6e77ace8, 0x176c700a, 0x2907b2e5, 0x2abc850e,
+ 0x14d747e1},
+ {0x00000000, 0xc0df8ec1, 0xc1b96c58, 0x0166e299, 0x8273d9b0,
+ 0x42ac5771, 0x43cab5e8, 0x83153b29, 0x45e1c3ba, 0x853e4d7b,
+ 0x8458afe2, 0x44872123, 0xc7921a0a, 0x074d94cb, 0x062b7652,
+ 0xc6f4f893, 0xcbc4f6ae, 0x0b1b786f, 0x0a7d9af6, 0xcaa21437,
+ 0x49b72f1e, 0x8968a1df, 0x880e4346, 0x48d1cd87, 0x8e253514,
+ 0x4efabbd5, 0x4f9c594c, 0x8f43d78d, 0x0c56eca4, 0xcc896265,
+ 0xcdef80fc, 0x0d300e3d, 0xd78f9c86, 0x17501247, 0x1636f0de,
+ 0xd6e97e1f, 0x55fc4536, 0x9523cbf7, 0x9445296e, 0x549aa7af,
+ 0x926e5f3c, 0x52b1d1fd, 0x53d73364, 0x9308bda5, 0x101d868c,
+ 0xd0c2084d, 0xd1a4ead4, 0x117b6415, 0x1c4b6a28, 0xdc94e4e9,
+ 0xddf20670, 0x1d2d88b1, 0x9e38b398, 0x5ee73d59, 0x5f81dfc0,
+ 0x9f5e5101, 0x59aaa992, 0x99752753, 0x9813c5ca, 0x58cc4b0b,
+ 0xdbd97022, 0x1b06fee3, 0x1a601c7a, 0xdabf92bb, 0xef1948d6,
+ 0x2fc6c617, 0x2ea0248e, 0xee7faa4f, 0x6d6a9166, 0xadb51fa7,
+ 0xacd3fd3e, 0x6c0c73ff, 0xaaf88b6c, 0x6a2705ad, 0x6b41e734,
+ 0xab9e69f5, 0x288b52dc, 0xe854dc1d, 0xe9323e84, 0x29edb045,
+ 0x24ddbe78, 0xe40230b9, 0xe564d220, 0x25bb5ce1, 0xa6ae67c8,
+ 0x6671e909, 0x67170b90, 0xa7c88551, 0x613c7dc2, 0xa1e3f303,
+ 0xa085119a, 0x605a9f5b, 0xe34fa472, 0x23902ab3, 0x22f6c82a,
+ 0xe22946eb, 0x3896d450, 0xf8495a91, 0xf92fb808, 0x39f036c9,
+ 0xbae50de0, 0x7a3a8321, 0x7b5c61b8, 0xbb83ef79, 0x7d7717ea,
+ 0xbda8992b, 0xbcce7bb2, 0x7c11f573, 0xff04ce5a, 0x3fdb409b,
+ 0x3ebda202, 0xfe622cc3, 0xf35222fe, 0x338dac3f, 0x32eb4ea6,
+ 0xf234c067, 0x7121fb4e, 0xb1fe758f, 0xb0989716, 0x704719d7,
+ 0xb6b3e144, 0x766c6f85, 0x770a8d1c, 0xb7d503dd, 0x34c038f4,
+ 0xf41fb635, 0xf57954ac, 0x35a6da6d, 0x9f35e177, 0x5fea6fb6,
+ 0x5e8c8d2f, 0x9e5303ee, 0x1d4638c7, 0xdd99b606, 0xdcff549f,
+ 0x1c20da5e, 0xdad422cd, 0x1a0bac0c, 0x1b6d4e95, 0xdbb2c054,
+ 0x58a7fb7d, 0x987875bc, 0x991e9725, 0x59c119e4, 0x54f117d9,
+ 0x942e9918, 0x95487b81, 0x5597f540, 0xd682ce69, 0x165d40a8,
+ 0x173ba231, 0xd7e42cf0, 0x1110d463, 0xd1cf5aa2, 0xd0a9b83b,
+ 0x107636fa, 0x93630dd3, 0x53bc8312, 0x52da618b, 0x9205ef4a,
+ 0x48ba7df1, 0x8865f330, 0x890311a9, 0x49dc9f68, 0xcac9a441,
+ 0x0a162a80, 0x0b70c819, 0xcbaf46d8, 0x0d5bbe4b, 0xcd84308a,
+ 0xcce2d213, 0x0c3d5cd2, 0x8f2867fb, 0x4ff7e93a, 0x4e910ba3,
+ 0x8e4e8562, 0x837e8b5f, 0x43a1059e, 0x42c7e707, 0x821869c6,
+ 0x010d52ef, 0xc1d2dc2e, 0xc0b43eb7, 0x006bb076, 0xc69f48e5,
+ 0x0640c624, 0x072624bd, 0xc7f9aa7c, 0x44ec9155, 0x84331f94,
+ 0x8555fd0d, 0x458a73cc, 0x702ca9a1, 0xb0f32760, 0xb195c5f9,
+ 0x714a4b38, 0xf25f7011, 0x3280fed0, 0x33e61c49, 0xf3399288,
+ 0x35cd6a1b, 0xf512e4da, 0xf4740643, 0x34ab8882, 0xb7beb3ab,
+ 0x77613d6a, 0x7607dff3, 0xb6d85132, 0xbbe85f0f, 0x7b37d1ce,
+ 0x7a513357, 0xba8ebd96, 0x399b86bf, 0xf944087e, 0xf822eae7,
+ 0x38fd6426, 0xfe099cb5, 0x3ed61274, 0x3fb0f0ed, 0xff6f7e2c,
+ 0x7c7a4505, 0xbca5cbc4, 0xbdc3295d, 0x7d1ca79c, 0xa7a33527,
+ 0x677cbbe6, 0x661a597f, 0xa6c5d7be, 0x25d0ec97, 0xe50f6256,
+ 0xe46980cf, 0x24b60e0e, 0xe242f69d, 0x229d785c, 0x23fb9ac5,
+ 0xe3241404, 0x60312f2d, 0xa0eea1ec, 0xa1884375, 0x6157cdb4,
+ 0x6c67c389, 0xacb84d48, 0xaddeafd1, 0x6d012110, 0xee141a39,
+ 0x2ecb94f8, 0x2fad7661, 0xef72f8a0, 0x29860033, 0xe9598ef2,
+ 0xe83f6c6b, 0x28e0e2aa, 0xabf5d983, 0x6b2a5742, 0x6a4cb5db,
+ 0xaa933b1a},
+ {0x00000000, 0x6f4ca59b, 0x9f9e3bec, 0xf0d29e77, 0x7f3b0603,
+ 0x1077a398, 0xe0a53def, 0x8fe99874, 0xfe760c06, 0x913aa99d,
+ 0x61e837ea, 0x0ea49271, 0x814d0a05, 0xee01af9e, 0x1ed331e9,
+ 0x719f9472, 0xfced180c, 0x93a1bd97, 0x637323e0, 0x0c3f867b,
+ 0x83d61e0f, 0xec9abb94, 0x1c4825e3, 0x73048078, 0x029b140a,
+ 0x6dd7b191, 0x9d052fe6, 0xf2498a7d, 0x7da01209, 0x12ecb792,
+ 0xe23e29e5, 0x8d728c7e, 0xf8db3118, 0x97979483, 0x67450af4,
+ 0x0809af6f, 0x87e0371b, 0xe8ac9280, 0x187e0cf7, 0x7732a96c,
+ 0x06ad3d1e, 0x69e19885, 0x993306f2, 0xf67fa369, 0x79963b1d,
+ 0x16da9e86, 0xe60800f1, 0x8944a56a, 0x04362914, 0x6b7a8c8f,
+ 0x9ba812f8, 0xf4e4b763, 0x7b0d2f17, 0x14418a8c, 0xe49314fb,
+ 0x8bdfb160, 0xfa402512, 0x950c8089, 0x65de1efe, 0x0a92bb65,
+ 0x857b2311, 0xea37868a, 0x1ae518fd, 0x75a9bd66, 0xf0b76330,
+ 0x9ffbc6ab, 0x6f2958dc, 0x0065fd47, 0x8f8c6533, 0xe0c0c0a8,
+ 0x10125edf, 0x7f5efb44, 0x0ec16f36, 0x618dcaad, 0x915f54da,
+ 0xfe13f141, 0x71fa6935, 0x1eb6ccae, 0xee6452d9, 0x8128f742,
+ 0x0c5a7b3c, 0x6316dea7, 0x93c440d0, 0xfc88e54b, 0x73617d3f,
+ 0x1c2dd8a4, 0xecff46d3, 0x83b3e348, 0xf22c773a, 0x9d60d2a1,
+ 0x6db24cd6, 0x02fee94d, 0x8d177139, 0xe25bd4a2, 0x12894ad5,
+ 0x7dc5ef4e, 0x086c5228, 0x6720f7b3, 0x97f269c4, 0xf8becc5f,
+ 0x7757542b, 0x181bf1b0, 0xe8c96fc7, 0x8785ca5c, 0xf61a5e2e,
+ 0x9956fbb5, 0x698465c2, 0x06c8c059, 0x8921582d, 0xe66dfdb6,
+ 0x16bf63c1, 0x79f3c65a, 0xf4814a24, 0x9bcdefbf, 0x6b1f71c8,
+ 0x0453d453, 0x8bba4c27, 0xe4f6e9bc, 0x142477cb, 0x7b68d250,
+ 0x0af74622, 0x65bbe3b9, 0x95697dce, 0xfa25d855, 0x75cc4021,
+ 0x1a80e5ba, 0xea527bcd, 0x851ede56, 0xe06fc760, 0x8f2362fb,
+ 0x7ff1fc8c, 0x10bd5917, 0x9f54c163, 0xf01864f8, 0x00cafa8f,
+ 0x6f865f14, 0x1e19cb66, 0x71556efd, 0x8187f08a, 0xeecb5511,
+ 0x6122cd65, 0x0e6e68fe, 0xfebcf689, 0x91f05312, 0x1c82df6c,
+ 0x73ce7af7, 0x831ce480, 0xec50411b, 0x63b9d96f, 0x0cf57cf4,
+ 0xfc27e283, 0x936b4718, 0xe2f4d36a, 0x8db876f1, 0x7d6ae886,
+ 0x12264d1d, 0x9dcfd569, 0xf28370f2, 0x0251ee85, 0x6d1d4b1e,
+ 0x18b4f678, 0x77f853e3, 0x872acd94, 0xe866680f, 0x678ff07b,
+ 0x08c355e0, 0xf811cb97, 0x975d6e0c, 0xe6c2fa7e, 0x898e5fe5,
+ 0x795cc192, 0x16106409, 0x99f9fc7d, 0xf6b559e6, 0x0667c791,
+ 0x692b620a, 0xe459ee74, 0x8b154bef, 0x7bc7d598, 0x148b7003,
+ 0x9b62e877, 0xf42e4dec, 0x04fcd39b, 0x6bb07600, 0x1a2fe272,
+ 0x756347e9, 0x85b1d99e, 0xeafd7c05, 0x6514e471, 0x0a5841ea,
+ 0xfa8adf9d, 0x95c67a06, 0x10d8a450, 0x7f9401cb, 0x8f469fbc,
+ 0xe00a3a27, 0x6fe3a253, 0x00af07c8, 0xf07d99bf, 0x9f313c24,
+ 0xeeaea856, 0x81e20dcd, 0x713093ba, 0x1e7c3621, 0x9195ae55,
+ 0xfed90bce, 0x0e0b95b9, 0x61473022, 0xec35bc5c, 0x837919c7,
+ 0x73ab87b0, 0x1ce7222b, 0x930eba5f, 0xfc421fc4, 0x0c9081b3,
+ 0x63dc2428, 0x1243b05a, 0x7d0f15c1, 0x8ddd8bb6, 0xe2912e2d,
+ 0x6d78b659, 0x023413c2, 0xf2e68db5, 0x9daa282e, 0xe8039548,
+ 0x874f30d3, 0x779daea4, 0x18d10b3f, 0x9738934b, 0xf87436d0,
+ 0x08a6a8a7, 0x67ea0d3c, 0x1675994e, 0x79393cd5, 0x89eba2a2,
+ 0xe6a70739, 0x694e9f4d, 0x06023ad6, 0xf6d0a4a1, 0x999c013a,
+ 0x14ee8d44, 0x7ba228df, 0x8b70b6a8, 0xe43c1333, 0x6bd58b47,
+ 0x04992edc, 0xf44bb0ab, 0x9b071530, 0xea988142, 0x85d424d9,
+ 0x7506baae, 0x1a4a1f35, 0x95a38741, 0xfaef22da, 0x0a3dbcad,
+ 0x65711936}};
+
+#endif
+
+#endif
+
+#if N == 4
+
+#if W == 8
+
+local const z_crc_t FAR crc_braid_table[][256] = {
+ {0x00000000, 0xf1da05aa, 0x38c50d15, 0xc91f08bf, 0x718a1a2a,
+ 0x80501f80, 0x494f173f, 0xb8951295, 0xe3143454, 0x12ce31fe,
+ 0xdbd13941, 0x2a0b3ceb, 0x929e2e7e, 0x63442bd4, 0xaa5b236b,
+ 0x5b8126c1, 0x1d596ee9, 0xec836b43, 0x259c63fc, 0xd4466656,
+ 0x6cd374c3, 0x9d097169, 0x541679d6, 0xa5cc7c7c, 0xfe4d5abd,
+ 0x0f975f17, 0xc68857a8, 0x37525202, 0x8fc74097, 0x7e1d453d,
+ 0xb7024d82, 0x46d84828, 0x3ab2ddd2, 0xcb68d878, 0x0277d0c7,
+ 0xf3add56d, 0x4b38c7f8, 0xbae2c252, 0x73fdcaed, 0x8227cf47,
+ 0xd9a6e986, 0x287cec2c, 0xe163e493, 0x10b9e139, 0xa82cf3ac,
+ 0x59f6f606, 0x90e9feb9, 0x6133fb13, 0x27ebb33b, 0xd631b691,
+ 0x1f2ebe2e, 0xeef4bb84, 0x5661a911, 0xa7bbacbb, 0x6ea4a404,
+ 0x9f7ea1ae, 0xc4ff876f, 0x352582c5, 0xfc3a8a7a, 0x0de08fd0,
+ 0xb5759d45, 0x44af98ef, 0x8db09050, 0x7c6a95fa, 0x7565bba4,
+ 0x84bfbe0e, 0x4da0b6b1, 0xbc7ab31b, 0x04efa18e, 0xf535a424,
+ 0x3c2aac9b, 0xcdf0a931, 0x96718ff0, 0x67ab8a5a, 0xaeb482e5,
+ 0x5f6e874f, 0xe7fb95da, 0x16219070, 0xdf3e98cf, 0x2ee49d65,
+ 0x683cd54d, 0x99e6d0e7, 0x50f9d858, 0xa123ddf2, 0x19b6cf67,
+ 0xe86ccacd, 0x2173c272, 0xd0a9c7d8, 0x8b28e119, 0x7af2e4b3,
+ 0xb3edec0c, 0x4237e9a6, 0xfaa2fb33, 0x0b78fe99, 0xc267f626,
+ 0x33bdf38c, 0x4fd76676, 0xbe0d63dc, 0x77126b63, 0x86c86ec9,
+ 0x3e5d7c5c, 0xcf8779f6, 0x06987149, 0xf74274e3, 0xacc35222,
+ 0x5d195788, 0x94065f37, 0x65dc5a9d, 0xdd494808, 0x2c934da2,
+ 0xe58c451d, 0x145640b7, 0x528e089f, 0xa3540d35, 0x6a4b058a,
+ 0x9b910020, 0x230412b5, 0xd2de171f, 0x1bc11fa0, 0xea1b1a0a,
+ 0xb19a3ccb, 0x40403961, 0x895f31de, 0x78853474, 0xc01026e1,
+ 0x31ca234b, 0xf8d52bf4, 0x090f2e5e, 0xeacb7748, 0x1b1172e2,
+ 0xd20e7a5d, 0x23d47ff7, 0x9b416d62, 0x6a9b68c8, 0xa3846077,
+ 0x525e65dd, 0x09df431c, 0xf80546b6, 0x311a4e09, 0xc0c04ba3,
+ 0x78555936, 0x898f5c9c, 0x40905423, 0xb14a5189, 0xf79219a1,
+ 0x06481c0b, 0xcf5714b4, 0x3e8d111e, 0x8618038b, 0x77c20621,
+ 0xbedd0e9e, 0x4f070b34, 0x14862df5, 0xe55c285f, 0x2c4320e0,
+ 0xdd99254a, 0x650c37df, 0x94d63275, 0x5dc93aca, 0xac133f60,
+ 0xd079aa9a, 0x21a3af30, 0xe8bca78f, 0x1966a225, 0xa1f3b0b0,
+ 0x5029b51a, 0x9936bda5, 0x68ecb80f, 0x336d9ece, 0xc2b79b64,
+ 0x0ba893db, 0xfa729671, 0x42e784e4, 0xb33d814e, 0x7a2289f1,
+ 0x8bf88c5b, 0xcd20c473, 0x3cfac1d9, 0xf5e5c966, 0x043fcccc,
+ 0xbcaade59, 0x4d70dbf3, 0x846fd34c, 0x75b5d6e6, 0x2e34f027,
+ 0xdfeef58d, 0x16f1fd32, 0xe72bf898, 0x5fbeea0d, 0xae64efa7,
+ 0x677be718, 0x96a1e2b2, 0x9faeccec, 0x6e74c946, 0xa76bc1f9,
+ 0x56b1c453, 0xee24d6c6, 0x1ffed36c, 0xd6e1dbd3, 0x273bde79,
+ 0x7cbaf8b8, 0x8d60fd12, 0x447ff5ad, 0xb5a5f007, 0x0d30e292,
+ 0xfceae738, 0x35f5ef87, 0xc42fea2d, 0x82f7a205, 0x732da7af,
+ 0xba32af10, 0x4be8aaba, 0xf37db82f, 0x02a7bd85, 0xcbb8b53a,
+ 0x3a62b090, 0x61e39651, 0x903993fb, 0x59269b44, 0xa8fc9eee,
+ 0x10698c7b, 0xe1b389d1, 0x28ac816e, 0xd97684c4, 0xa51c113e,
+ 0x54c61494, 0x9dd91c2b, 0x6c031981, 0xd4960b14, 0x254c0ebe,
+ 0xec530601, 0x1d8903ab, 0x4608256a, 0xb7d220c0, 0x7ecd287f,
+ 0x8f172dd5, 0x37823f40, 0xc6583aea, 0x0f473255, 0xfe9d37ff,
+ 0xb8457fd7, 0x499f7a7d, 0x808072c2, 0x715a7768, 0xc9cf65fd,
+ 0x38156057, 0xf10a68e8, 0x00d06d42, 0x5b514b83, 0xaa8b4e29,
+ 0x63944696, 0x924e433c, 0x2adb51a9, 0xdb015403, 0x121e5cbc,
+ 0xe3c45916},
+ {0x00000000, 0x0ee7e8d1, 0x1dcfd1a2, 0x13283973, 0x3b9fa344,
+ 0x35784b95, 0x265072e6, 0x28b79a37, 0x773f4688, 0x79d8ae59,
+ 0x6af0972a, 0x64177ffb, 0x4ca0e5cc, 0x42470d1d, 0x516f346e,
+ 0x5f88dcbf, 0xee7e8d10, 0xe09965c1, 0xf3b15cb2, 0xfd56b463,
+ 0xd5e12e54, 0xdb06c685, 0xc82efff6, 0xc6c91727, 0x9941cb98,
+ 0x97a62349, 0x848e1a3a, 0x8a69f2eb, 0xa2de68dc, 0xac39800d,
+ 0xbf11b97e, 0xb1f651af, 0x078c1c61, 0x096bf4b0, 0x1a43cdc3,
+ 0x14a42512, 0x3c13bf25, 0x32f457f4, 0x21dc6e87, 0x2f3b8656,
+ 0x70b35ae9, 0x7e54b238, 0x6d7c8b4b, 0x639b639a, 0x4b2cf9ad,
+ 0x45cb117c, 0x56e3280f, 0x5804c0de, 0xe9f29171, 0xe71579a0,
+ 0xf43d40d3, 0xfadaa802, 0xd26d3235, 0xdc8adae4, 0xcfa2e397,
+ 0xc1450b46, 0x9ecdd7f9, 0x902a3f28, 0x8302065b, 0x8de5ee8a,
+ 0xa55274bd, 0xabb59c6c, 0xb89da51f, 0xb67a4dce, 0x0f1838c2,
+ 0x01ffd013, 0x12d7e960, 0x1c3001b1, 0x34879b86, 0x3a607357,
+ 0x29484a24, 0x27afa2f5, 0x78277e4a, 0x76c0969b, 0x65e8afe8,
+ 0x6b0f4739, 0x43b8dd0e, 0x4d5f35df, 0x5e770cac, 0x5090e47d,
+ 0xe166b5d2, 0xef815d03, 0xfca96470, 0xf24e8ca1, 0xdaf91696,
+ 0xd41efe47, 0xc736c734, 0xc9d12fe5, 0x9659f35a, 0x98be1b8b,
+ 0x8b9622f8, 0x8571ca29, 0xadc6501e, 0xa321b8cf, 0xb00981bc,
+ 0xbeee696d, 0x089424a3, 0x0673cc72, 0x155bf501, 0x1bbc1dd0,
+ 0x330b87e7, 0x3dec6f36, 0x2ec45645, 0x2023be94, 0x7fab622b,
+ 0x714c8afa, 0x6264b389, 0x6c835b58, 0x4434c16f, 0x4ad329be,
+ 0x59fb10cd, 0x571cf81c, 0xe6eaa9b3, 0xe80d4162, 0xfb257811,
+ 0xf5c290c0, 0xdd750af7, 0xd392e226, 0xc0badb55, 0xce5d3384,
+ 0x91d5ef3b, 0x9f3207ea, 0x8c1a3e99, 0x82fdd648, 0xaa4a4c7f,
+ 0xa4ada4ae, 0xb7859ddd, 0xb962750c, 0x1e307184, 0x10d79955,
+ 0x03ffa026, 0x0d1848f7, 0x25afd2c0, 0x2b483a11, 0x38600362,
+ 0x3687ebb3, 0x690f370c, 0x67e8dfdd, 0x74c0e6ae, 0x7a270e7f,
+ 0x52909448, 0x5c777c99, 0x4f5f45ea, 0x41b8ad3b, 0xf04efc94,
+ 0xfea91445, 0xed812d36, 0xe366c5e7, 0xcbd15fd0, 0xc536b701,
+ 0xd61e8e72, 0xd8f966a3, 0x8771ba1c, 0x899652cd, 0x9abe6bbe,
+ 0x9459836f, 0xbcee1958, 0xb209f189, 0xa121c8fa, 0xafc6202b,
+ 0x19bc6de5, 0x175b8534, 0x0473bc47, 0x0a945496, 0x2223cea1,
+ 0x2cc42670, 0x3fec1f03, 0x310bf7d2, 0x6e832b6d, 0x6064c3bc,
+ 0x734cfacf, 0x7dab121e, 0x551c8829, 0x5bfb60f8, 0x48d3598b,
+ 0x4634b15a, 0xf7c2e0f5, 0xf9250824, 0xea0d3157, 0xe4ead986,
+ 0xcc5d43b1, 0xc2baab60, 0xd1929213, 0xdf757ac2, 0x80fda67d,
+ 0x8e1a4eac, 0x9d3277df, 0x93d59f0e, 0xbb620539, 0xb585ede8,
+ 0xa6add49b, 0xa84a3c4a, 0x11284946, 0x1fcfa197, 0x0ce798e4,
+ 0x02007035, 0x2ab7ea02, 0x245002d3, 0x37783ba0, 0x399fd371,
+ 0x66170fce, 0x68f0e71f, 0x7bd8de6c, 0x753f36bd, 0x5d88ac8a,
+ 0x536f445b, 0x40477d28, 0x4ea095f9, 0xff56c456, 0xf1b12c87,
+ 0xe29915f4, 0xec7efd25, 0xc4c96712, 0xca2e8fc3, 0xd906b6b0,
+ 0xd7e15e61, 0x886982de, 0x868e6a0f, 0x95a6537c, 0x9b41bbad,
+ 0xb3f6219a, 0xbd11c94b, 0xae39f038, 0xa0de18e9, 0x16a45527,
+ 0x1843bdf6, 0x0b6b8485, 0x058c6c54, 0x2d3bf663, 0x23dc1eb2,
+ 0x30f427c1, 0x3e13cf10, 0x619b13af, 0x6f7cfb7e, 0x7c54c20d,
+ 0x72b32adc, 0x5a04b0eb, 0x54e3583a, 0x47cb6149, 0x492c8998,
+ 0xf8dad837, 0xf63d30e6, 0xe5150995, 0xebf2e144, 0xc3457b73,
+ 0xcda293a2, 0xde8aaad1, 0xd06d4200, 0x8fe59ebf, 0x8102766e,
+ 0x922a4f1d, 0x9ccda7cc, 0xb47a3dfb, 0xba9dd52a, 0xa9b5ec59,
+ 0xa7520488},
+ {0x00000000, 0x3c60e308, 0x78c1c610, 0x44a12518, 0xf1838c20,
+ 0xcde36f28, 0x89424a30, 0xb522a938, 0x38761e01, 0x0416fd09,
+ 0x40b7d811, 0x7cd73b19, 0xc9f59221, 0xf5957129, 0xb1345431,
+ 0x8d54b739, 0x70ec3c02, 0x4c8cdf0a, 0x082dfa12, 0x344d191a,
+ 0x816fb022, 0xbd0f532a, 0xf9ae7632, 0xc5ce953a, 0x489a2203,
+ 0x74fac10b, 0x305be413, 0x0c3b071b, 0xb919ae23, 0x85794d2b,
+ 0xc1d86833, 0xfdb88b3b, 0xe1d87804, 0xddb89b0c, 0x9919be14,
+ 0xa5795d1c, 0x105bf424, 0x2c3b172c, 0x689a3234, 0x54fad13c,
+ 0xd9ae6605, 0xe5ce850d, 0xa16fa015, 0x9d0f431d, 0x282dea25,
+ 0x144d092d, 0x50ec2c35, 0x6c8ccf3d, 0x91344406, 0xad54a70e,
+ 0xe9f58216, 0xd595611e, 0x60b7c826, 0x5cd72b2e, 0x18760e36,
+ 0x2416ed3e, 0xa9425a07, 0x9522b90f, 0xd1839c17, 0xede37f1f,
+ 0x58c1d627, 0x64a1352f, 0x20001037, 0x1c60f33f, 0x18c1f649,
+ 0x24a11541, 0x60003059, 0x5c60d351, 0xe9427a69, 0xd5229961,
+ 0x9183bc79, 0xade35f71, 0x20b7e848, 0x1cd70b40, 0x58762e58,
+ 0x6416cd50, 0xd1346468, 0xed548760, 0xa9f5a278, 0x95954170,
+ 0x682dca4b, 0x544d2943, 0x10ec0c5b, 0x2c8cef53, 0x99ae466b,
+ 0xa5cea563, 0xe16f807b, 0xdd0f6373, 0x505bd44a, 0x6c3b3742,
+ 0x289a125a, 0x14faf152, 0xa1d8586a, 0x9db8bb62, 0xd9199e7a,
+ 0xe5797d72, 0xf9198e4d, 0xc5796d45, 0x81d8485d, 0xbdb8ab55,
+ 0x089a026d, 0x34fae165, 0x705bc47d, 0x4c3b2775, 0xc16f904c,
+ 0xfd0f7344, 0xb9ae565c, 0x85ceb554, 0x30ec1c6c, 0x0c8cff64,
+ 0x482dda7c, 0x744d3974, 0x89f5b24f, 0xb5955147, 0xf134745f,
+ 0xcd549757, 0x78763e6f, 0x4416dd67, 0x00b7f87f, 0x3cd71b77,
+ 0xb183ac4e, 0x8de34f46, 0xc9426a5e, 0xf5228956, 0x4000206e,
+ 0x7c60c366, 0x38c1e67e, 0x04a10576, 0x3183ec92, 0x0de30f9a,
+ 0x49422a82, 0x7522c98a, 0xc00060b2, 0xfc6083ba, 0xb8c1a6a2,
+ 0x84a145aa, 0x09f5f293, 0x3595119b, 0x71343483, 0x4d54d78b,
+ 0xf8767eb3, 0xc4169dbb, 0x80b7b8a3, 0xbcd75bab, 0x416fd090,
+ 0x7d0f3398, 0x39ae1680, 0x05cef588, 0xb0ec5cb0, 0x8c8cbfb8,
+ 0xc82d9aa0, 0xf44d79a8, 0x7919ce91, 0x45792d99, 0x01d80881,
+ 0x3db8eb89, 0x889a42b1, 0xb4faa1b9, 0xf05b84a1, 0xcc3b67a9,
+ 0xd05b9496, 0xec3b779e, 0xa89a5286, 0x94fab18e, 0x21d818b6,
+ 0x1db8fbbe, 0x5919dea6, 0x65793dae, 0xe82d8a97, 0xd44d699f,
+ 0x90ec4c87, 0xac8caf8f, 0x19ae06b7, 0x25cee5bf, 0x616fc0a7,
+ 0x5d0f23af, 0xa0b7a894, 0x9cd74b9c, 0xd8766e84, 0xe4168d8c,
+ 0x513424b4, 0x6d54c7bc, 0x29f5e2a4, 0x159501ac, 0x98c1b695,
+ 0xa4a1559d, 0xe0007085, 0xdc60938d, 0x69423ab5, 0x5522d9bd,
+ 0x1183fca5, 0x2de31fad, 0x29421adb, 0x1522f9d3, 0x5183dccb,
+ 0x6de33fc3, 0xd8c196fb, 0xe4a175f3, 0xa00050eb, 0x9c60b3e3,
+ 0x113404da, 0x2d54e7d2, 0x69f5c2ca, 0x559521c2, 0xe0b788fa,
+ 0xdcd76bf2, 0x98764eea, 0xa416ade2, 0x59ae26d9, 0x65cec5d1,
+ 0x216fe0c9, 0x1d0f03c1, 0xa82daaf9, 0x944d49f1, 0xd0ec6ce9,
+ 0xec8c8fe1, 0x61d838d8, 0x5db8dbd0, 0x1919fec8, 0x25791dc0,
+ 0x905bb4f8, 0xac3b57f0, 0xe89a72e8, 0xd4fa91e0, 0xc89a62df,
+ 0xf4fa81d7, 0xb05ba4cf, 0x8c3b47c7, 0x3919eeff, 0x05790df7,
+ 0x41d828ef, 0x7db8cbe7, 0xf0ec7cde, 0xcc8c9fd6, 0x882dbace,
+ 0xb44d59c6, 0x016ff0fe, 0x3d0f13f6, 0x79ae36ee, 0x45ced5e6,
+ 0xb8765edd, 0x8416bdd5, 0xc0b798cd, 0xfcd77bc5, 0x49f5d2fd,
+ 0x759531f5, 0x313414ed, 0x0d54f7e5, 0x800040dc, 0xbc60a3d4,
+ 0xf8c186cc, 0xc4a165c4, 0x7183ccfc, 0x4de32ff4, 0x09420aec,
+ 0x3522e9e4},
+ {0x00000000, 0x6307d924, 0xc60fb248, 0xa5086b6c, 0x576e62d1,
+ 0x3469bbf5, 0x9161d099, 0xf26609bd, 0xaedcc5a2, 0xcddb1c86,
+ 0x68d377ea, 0x0bd4aece, 0xf9b2a773, 0x9ab57e57, 0x3fbd153b,
+ 0x5cbacc1f, 0x86c88d05, 0xe5cf5421, 0x40c73f4d, 0x23c0e669,
+ 0xd1a6efd4, 0xb2a136f0, 0x17a95d9c, 0x74ae84b8, 0x281448a7,
+ 0x4b139183, 0xee1bfaef, 0x8d1c23cb, 0x7f7a2a76, 0x1c7df352,
+ 0xb975983e, 0xda72411a, 0xd6e01c4b, 0xb5e7c56f, 0x10efae03,
+ 0x73e87727, 0x818e7e9a, 0xe289a7be, 0x4781ccd2, 0x248615f6,
+ 0x783cd9e9, 0x1b3b00cd, 0xbe336ba1, 0xdd34b285, 0x2f52bb38,
+ 0x4c55621c, 0xe95d0970, 0x8a5ad054, 0x5028914e, 0x332f486a,
+ 0x96272306, 0xf520fa22, 0x0746f39f, 0x64412abb, 0xc14941d7,
+ 0xa24e98f3, 0xfef454ec, 0x9df38dc8, 0x38fbe6a4, 0x5bfc3f80,
+ 0xa99a363d, 0xca9def19, 0x6f958475, 0x0c925d51, 0x76b13ed7,
+ 0x15b6e7f3, 0xb0be8c9f, 0xd3b955bb, 0x21df5c06, 0x42d88522,
+ 0xe7d0ee4e, 0x84d7376a, 0xd86dfb75, 0xbb6a2251, 0x1e62493d,
+ 0x7d659019, 0x8f0399a4, 0xec044080, 0x490c2bec, 0x2a0bf2c8,
+ 0xf079b3d2, 0x937e6af6, 0x3676019a, 0x5571d8be, 0xa717d103,
+ 0xc4100827, 0x6118634b, 0x021fba6f, 0x5ea57670, 0x3da2af54,
+ 0x98aac438, 0xfbad1d1c, 0x09cb14a1, 0x6acccd85, 0xcfc4a6e9,
+ 0xacc37fcd, 0xa051229c, 0xc356fbb8, 0x665e90d4, 0x055949f0,
+ 0xf73f404d, 0x94389969, 0x3130f205, 0x52372b21, 0x0e8de73e,
+ 0x6d8a3e1a, 0xc8825576, 0xab858c52, 0x59e385ef, 0x3ae45ccb,
+ 0x9fec37a7, 0xfcebee83, 0x2699af99, 0x459e76bd, 0xe0961dd1,
+ 0x8391c4f5, 0x71f7cd48, 0x12f0146c, 0xb7f87f00, 0xd4ffa624,
+ 0x88456a3b, 0xeb42b31f, 0x4e4ad873, 0x2d4d0157, 0xdf2b08ea,
+ 0xbc2cd1ce, 0x1924baa2, 0x7a236386, 0xed627dae, 0x8e65a48a,
+ 0x2b6dcfe6, 0x486a16c2, 0xba0c1f7f, 0xd90bc65b, 0x7c03ad37,
+ 0x1f047413, 0x43beb80c, 0x20b96128, 0x85b10a44, 0xe6b6d360,
+ 0x14d0dadd, 0x77d703f9, 0xd2df6895, 0xb1d8b1b1, 0x6baaf0ab,
+ 0x08ad298f, 0xada542e3, 0xcea29bc7, 0x3cc4927a, 0x5fc34b5e,
+ 0xfacb2032, 0x99ccf916, 0xc5763509, 0xa671ec2d, 0x03798741,
+ 0x607e5e65, 0x921857d8, 0xf11f8efc, 0x5417e590, 0x37103cb4,
+ 0x3b8261e5, 0x5885b8c1, 0xfd8dd3ad, 0x9e8a0a89, 0x6cec0334,
+ 0x0febda10, 0xaae3b17c, 0xc9e46858, 0x955ea447, 0xf6597d63,
+ 0x5351160f, 0x3056cf2b, 0xc230c696, 0xa1371fb2, 0x043f74de,
+ 0x6738adfa, 0xbd4aece0, 0xde4d35c4, 0x7b455ea8, 0x1842878c,
+ 0xea248e31, 0x89235715, 0x2c2b3c79, 0x4f2ce55d, 0x13962942,
+ 0x7091f066, 0xd5999b0a, 0xb69e422e, 0x44f84b93, 0x27ff92b7,
+ 0x82f7f9db, 0xe1f020ff, 0x9bd34379, 0xf8d49a5d, 0x5ddcf131,
+ 0x3edb2815, 0xccbd21a8, 0xafbaf88c, 0x0ab293e0, 0x69b54ac4,
+ 0x350f86db, 0x56085fff, 0xf3003493, 0x9007edb7, 0x6261e40a,
+ 0x01663d2e, 0xa46e5642, 0xc7698f66, 0x1d1bce7c, 0x7e1c1758,
+ 0xdb147c34, 0xb813a510, 0x4a75acad, 0x29727589, 0x8c7a1ee5,
+ 0xef7dc7c1, 0xb3c70bde, 0xd0c0d2fa, 0x75c8b996, 0x16cf60b2,
+ 0xe4a9690f, 0x87aeb02b, 0x22a6db47, 0x41a10263, 0x4d335f32,
+ 0x2e348616, 0x8b3ced7a, 0xe83b345e, 0x1a5d3de3, 0x795ae4c7,
+ 0xdc528fab, 0xbf55568f, 0xe3ef9a90, 0x80e843b4, 0x25e028d8,
+ 0x46e7f1fc, 0xb481f841, 0xd7862165, 0x728e4a09, 0x1189932d,
+ 0xcbfbd237, 0xa8fc0b13, 0x0df4607f, 0x6ef3b95b, 0x9c95b0e6,
+ 0xff9269c2, 0x5a9a02ae, 0x399ddb8a, 0x65271795, 0x0620ceb1,
+ 0xa328a5dd, 0xc02f7cf9, 0x32497544, 0x514eac60, 0xf446c70c,
+ 0x97411e28},
+ {0x00000000, 0x01b5fd1d, 0x036bfa3a, 0x02de0727, 0x06d7f474,
+ 0x07620969, 0x05bc0e4e, 0x0409f353, 0x0dafe8e8, 0x0c1a15f5,
+ 0x0ec412d2, 0x0f71efcf, 0x0b781c9c, 0x0acde181, 0x0813e6a6,
+ 0x09a61bbb, 0x1b5fd1d0, 0x1aea2ccd, 0x18342bea, 0x1981d6f7,
+ 0x1d8825a4, 0x1c3dd8b9, 0x1ee3df9e, 0x1f562283, 0x16f03938,
+ 0x1745c425, 0x159bc302, 0x142e3e1f, 0x1027cd4c, 0x11923051,
+ 0x134c3776, 0x12f9ca6b, 0x36bfa3a0, 0x370a5ebd, 0x35d4599a,
+ 0x3461a487, 0x306857d4, 0x31ddaac9, 0x3303adee, 0x32b650f3,
+ 0x3b104b48, 0x3aa5b655, 0x387bb172, 0x39ce4c6f, 0x3dc7bf3c,
+ 0x3c724221, 0x3eac4506, 0x3f19b81b, 0x2de07270, 0x2c558f6d,
+ 0x2e8b884a, 0x2f3e7557, 0x2b378604, 0x2a827b19, 0x285c7c3e,
+ 0x29e98123, 0x204f9a98, 0x21fa6785, 0x232460a2, 0x22919dbf,
+ 0x26986eec, 0x272d93f1, 0x25f394d6, 0x244669cb, 0x6d7f4740,
+ 0x6ccaba5d, 0x6e14bd7a, 0x6fa14067, 0x6ba8b334, 0x6a1d4e29,
+ 0x68c3490e, 0x6976b413, 0x60d0afa8, 0x616552b5, 0x63bb5592,
+ 0x620ea88f, 0x66075bdc, 0x67b2a6c1, 0x656ca1e6, 0x64d95cfb,
+ 0x76209690, 0x77956b8d, 0x754b6caa, 0x74fe91b7, 0x70f762e4,
+ 0x71429ff9, 0x739c98de, 0x722965c3, 0x7b8f7e78, 0x7a3a8365,
+ 0x78e48442, 0x7951795f, 0x7d588a0c, 0x7ced7711, 0x7e337036,
+ 0x7f868d2b, 0x5bc0e4e0, 0x5a7519fd, 0x58ab1eda, 0x591ee3c7,
+ 0x5d171094, 0x5ca2ed89, 0x5e7ceaae, 0x5fc917b3, 0x566f0c08,
+ 0x57daf115, 0x5504f632, 0x54b10b2f, 0x50b8f87c, 0x510d0561,
+ 0x53d30246, 0x5266ff5b, 0x409f3530, 0x412ac82d, 0x43f4cf0a,
+ 0x42413217, 0x4648c144, 0x47fd3c59, 0x45233b7e, 0x4496c663,
+ 0x4d30ddd8, 0x4c8520c5, 0x4e5b27e2, 0x4feedaff, 0x4be729ac,
+ 0x4a52d4b1, 0x488cd396, 0x49392e8b, 0xdafe8e80, 0xdb4b739d,
+ 0xd99574ba, 0xd82089a7, 0xdc297af4, 0xdd9c87e9, 0xdf4280ce,
+ 0xdef77dd3, 0xd7516668, 0xd6e49b75, 0xd43a9c52, 0xd58f614f,
+ 0xd186921c, 0xd0336f01, 0xd2ed6826, 0xd358953b, 0xc1a15f50,
+ 0xc014a24d, 0xc2caa56a, 0xc37f5877, 0xc776ab24, 0xc6c35639,
+ 0xc41d511e, 0xc5a8ac03, 0xcc0eb7b8, 0xcdbb4aa5, 0xcf654d82,
+ 0xced0b09f, 0xcad943cc, 0xcb6cbed1, 0xc9b2b9f6, 0xc80744eb,
+ 0xec412d20, 0xedf4d03d, 0xef2ad71a, 0xee9f2a07, 0xea96d954,
+ 0xeb232449, 0xe9fd236e, 0xe848de73, 0xe1eec5c8, 0xe05b38d5,
+ 0xe2853ff2, 0xe330c2ef, 0xe73931bc, 0xe68ccca1, 0xe452cb86,
+ 0xe5e7369b, 0xf71efcf0, 0xf6ab01ed, 0xf47506ca, 0xf5c0fbd7,
+ 0xf1c90884, 0xf07cf599, 0xf2a2f2be, 0xf3170fa3, 0xfab11418,
+ 0xfb04e905, 0xf9daee22, 0xf86f133f, 0xfc66e06c, 0xfdd31d71,
+ 0xff0d1a56, 0xfeb8e74b, 0xb781c9c0, 0xb63434dd, 0xb4ea33fa,
+ 0xb55fcee7, 0xb1563db4, 0xb0e3c0a9, 0xb23dc78e, 0xb3883a93,
+ 0xba2e2128, 0xbb9bdc35, 0xb945db12, 0xb8f0260f, 0xbcf9d55c,
+ 0xbd4c2841, 0xbf922f66, 0xbe27d27b, 0xacde1810, 0xad6be50d,
+ 0xafb5e22a, 0xae001f37, 0xaa09ec64, 0xabbc1179, 0xa962165e,
+ 0xa8d7eb43, 0xa171f0f8, 0xa0c40de5, 0xa21a0ac2, 0xa3aff7df,
+ 0xa7a6048c, 0xa613f991, 0xa4cdfeb6, 0xa57803ab, 0x813e6a60,
+ 0x808b977d, 0x8255905a, 0x83e06d47, 0x87e99e14, 0x865c6309,
+ 0x8482642e, 0x85379933, 0x8c918288, 0x8d247f95, 0x8ffa78b2,
+ 0x8e4f85af, 0x8a4676fc, 0x8bf38be1, 0x892d8cc6, 0x889871db,
+ 0x9a61bbb0, 0x9bd446ad, 0x990a418a, 0x98bfbc97, 0x9cb64fc4,
+ 0x9d03b2d9, 0x9fddb5fe, 0x9e6848e3, 0x97ce5358, 0x967bae45,
+ 0x94a5a962, 0x9510547f, 0x9119a72c, 0x90ac5a31, 0x92725d16,
+ 0x93c7a00b},
+ {0x00000000, 0x6e8c1b41, 0xdd183682, 0xb3942dc3, 0x61416b45,
+ 0x0fcd7004, 0xbc595dc7, 0xd2d54686, 0xc282d68a, 0xac0ecdcb,
+ 0x1f9ae008, 0x7116fb49, 0xa3c3bdcf, 0xcd4fa68e, 0x7edb8b4d,
+ 0x1057900c, 0x5e74ab55, 0x30f8b014, 0x836c9dd7, 0xede08696,
+ 0x3f35c010, 0x51b9db51, 0xe22df692, 0x8ca1edd3, 0x9cf67ddf,
+ 0xf27a669e, 0x41ee4b5d, 0x2f62501c, 0xfdb7169a, 0x933b0ddb,
+ 0x20af2018, 0x4e233b59, 0xbce956aa, 0xd2654deb, 0x61f16028,
+ 0x0f7d7b69, 0xdda83def, 0xb32426ae, 0x00b00b6d, 0x6e3c102c,
+ 0x7e6b8020, 0x10e79b61, 0xa373b6a2, 0xcdffade3, 0x1f2aeb65,
+ 0x71a6f024, 0xc232dde7, 0xacbec6a6, 0xe29dfdff, 0x8c11e6be,
+ 0x3f85cb7d, 0x5109d03c, 0x83dc96ba, 0xed508dfb, 0x5ec4a038,
+ 0x3048bb79, 0x201f2b75, 0x4e933034, 0xfd071df7, 0x938b06b6,
+ 0x415e4030, 0x2fd25b71, 0x9c4676b2, 0xf2ca6df3, 0xa2a3ab15,
+ 0xcc2fb054, 0x7fbb9d97, 0x113786d6, 0xc3e2c050, 0xad6edb11,
+ 0x1efaf6d2, 0x7076ed93, 0x60217d9f, 0x0ead66de, 0xbd394b1d,
+ 0xd3b5505c, 0x016016da, 0x6fec0d9b, 0xdc782058, 0xb2f43b19,
+ 0xfcd70040, 0x925b1b01, 0x21cf36c2, 0x4f432d83, 0x9d966b05,
+ 0xf31a7044, 0x408e5d87, 0x2e0246c6, 0x3e55d6ca, 0x50d9cd8b,
+ 0xe34de048, 0x8dc1fb09, 0x5f14bd8f, 0x3198a6ce, 0x820c8b0d,
+ 0xec80904c, 0x1e4afdbf, 0x70c6e6fe, 0xc352cb3d, 0xadded07c,
+ 0x7f0b96fa, 0x11878dbb, 0xa213a078, 0xcc9fbb39, 0xdcc82b35,
+ 0xb2443074, 0x01d01db7, 0x6f5c06f6, 0xbd894070, 0xd3055b31,
+ 0x609176f2, 0x0e1d6db3, 0x403e56ea, 0x2eb24dab, 0x9d266068,
+ 0xf3aa7b29, 0x217f3daf, 0x4ff326ee, 0xfc670b2d, 0x92eb106c,
+ 0x82bc8060, 0xec309b21, 0x5fa4b6e2, 0x3128ada3, 0xe3fdeb25,
+ 0x8d71f064, 0x3ee5dda7, 0x5069c6e6, 0x9e36506b, 0xf0ba4b2a,
+ 0x432e66e9, 0x2da27da8, 0xff773b2e, 0x91fb206f, 0x226f0dac,
+ 0x4ce316ed, 0x5cb486e1, 0x32389da0, 0x81acb063, 0xef20ab22,
+ 0x3df5eda4, 0x5379f6e5, 0xe0eddb26, 0x8e61c067, 0xc042fb3e,
+ 0xaecee07f, 0x1d5acdbc, 0x73d6d6fd, 0xa103907b, 0xcf8f8b3a,
+ 0x7c1ba6f9, 0x1297bdb8, 0x02c02db4, 0x6c4c36f5, 0xdfd81b36,
+ 0xb1540077, 0x638146f1, 0x0d0d5db0, 0xbe997073, 0xd0156b32,
+ 0x22df06c1, 0x4c531d80, 0xffc73043, 0x914b2b02, 0x439e6d84,
+ 0x2d1276c5, 0x9e865b06, 0xf00a4047, 0xe05dd04b, 0x8ed1cb0a,
+ 0x3d45e6c9, 0x53c9fd88, 0x811cbb0e, 0xef90a04f, 0x5c048d8c,
+ 0x328896cd, 0x7cabad94, 0x1227b6d5, 0xa1b39b16, 0xcf3f8057,
+ 0x1deac6d1, 0x7366dd90, 0xc0f2f053, 0xae7eeb12, 0xbe297b1e,
+ 0xd0a5605f, 0x63314d9c, 0x0dbd56dd, 0xdf68105b, 0xb1e40b1a,
+ 0x027026d9, 0x6cfc3d98, 0x3c95fb7e, 0x5219e03f, 0xe18dcdfc,
+ 0x8f01d6bd, 0x5dd4903b, 0x33588b7a, 0x80cca6b9, 0xee40bdf8,
+ 0xfe172df4, 0x909b36b5, 0x230f1b76, 0x4d830037, 0x9f5646b1,
+ 0xf1da5df0, 0x424e7033, 0x2cc26b72, 0x62e1502b, 0x0c6d4b6a,
+ 0xbff966a9, 0xd1757de8, 0x03a03b6e, 0x6d2c202f, 0xdeb80dec,
+ 0xb03416ad, 0xa06386a1, 0xceef9de0, 0x7d7bb023, 0x13f7ab62,
+ 0xc122ede4, 0xafaef6a5, 0x1c3adb66, 0x72b6c027, 0x807cadd4,
+ 0xeef0b695, 0x5d649b56, 0x33e88017, 0xe13dc691, 0x8fb1ddd0,
+ 0x3c25f013, 0x52a9eb52, 0x42fe7b5e, 0x2c72601f, 0x9fe64ddc,
+ 0xf16a569d, 0x23bf101b, 0x4d330b5a, 0xfea72699, 0x902b3dd8,
+ 0xde080681, 0xb0841dc0, 0x03103003, 0x6d9c2b42, 0xbf496dc4,
+ 0xd1c57685, 0x62515b46, 0x0cdd4007, 0x1c8ad00b, 0x7206cb4a,
+ 0xc192e689, 0xaf1efdc8, 0x7dcbbb4e, 0x1347a00f, 0xa0d38dcc,
+ 0xce5f968d},
+ {0x00000000, 0xe71da697, 0x154a4b6f, 0xf257edf8, 0x2a9496de,
+ 0xcd893049, 0x3fdeddb1, 0xd8c37b26, 0x55292dbc, 0xb2348b2b,
+ 0x406366d3, 0xa77ec044, 0x7fbdbb62, 0x98a01df5, 0x6af7f00d,
+ 0x8dea569a, 0xaa525b78, 0x4d4ffdef, 0xbf181017, 0x5805b680,
+ 0x80c6cda6, 0x67db6b31, 0x958c86c9, 0x7291205e, 0xff7b76c4,
+ 0x1866d053, 0xea313dab, 0x0d2c9b3c, 0xd5efe01a, 0x32f2468d,
+ 0xc0a5ab75, 0x27b80de2, 0x8fd5b0b1, 0x68c81626, 0x9a9ffbde,
+ 0x7d825d49, 0xa541266f, 0x425c80f8, 0xb00b6d00, 0x5716cb97,
+ 0xdafc9d0d, 0x3de13b9a, 0xcfb6d662, 0x28ab70f5, 0xf0680bd3,
+ 0x1775ad44, 0xe52240bc, 0x023fe62b, 0x2587ebc9, 0xc29a4d5e,
+ 0x30cda0a6, 0xd7d00631, 0x0f137d17, 0xe80edb80, 0x1a593678,
+ 0xfd4490ef, 0x70aec675, 0x97b360e2, 0x65e48d1a, 0x82f92b8d,
+ 0x5a3a50ab, 0xbd27f63c, 0x4f701bc4, 0xa86dbd53, 0xc4da6723,
+ 0x23c7c1b4, 0xd1902c4c, 0x368d8adb, 0xee4ef1fd, 0x0953576a,
+ 0xfb04ba92, 0x1c191c05, 0x91f34a9f, 0x76eeec08, 0x84b901f0,
+ 0x63a4a767, 0xbb67dc41, 0x5c7a7ad6, 0xae2d972e, 0x493031b9,
+ 0x6e883c5b, 0x89959acc, 0x7bc27734, 0x9cdfd1a3, 0x441caa85,
+ 0xa3010c12, 0x5156e1ea, 0xb64b477d, 0x3ba111e7, 0xdcbcb770,
+ 0x2eeb5a88, 0xc9f6fc1f, 0x11358739, 0xf62821ae, 0x047fcc56,
+ 0xe3626ac1, 0x4b0fd792, 0xac127105, 0x5e459cfd, 0xb9583a6a,
+ 0x619b414c, 0x8686e7db, 0x74d10a23, 0x93ccacb4, 0x1e26fa2e,
+ 0xf93b5cb9, 0x0b6cb141, 0xec7117d6, 0x34b26cf0, 0xd3afca67,
+ 0x21f8279f, 0xc6e58108, 0xe15d8cea, 0x06402a7d, 0xf417c785,
+ 0x130a6112, 0xcbc91a34, 0x2cd4bca3, 0xde83515b, 0x399ef7cc,
+ 0xb474a156, 0x536907c1, 0xa13eea39, 0x46234cae, 0x9ee03788,
+ 0x79fd911f, 0x8baa7ce7, 0x6cb7da70, 0x52c5c807, 0xb5d86e90,
+ 0x478f8368, 0xa09225ff, 0x78515ed9, 0x9f4cf84e, 0x6d1b15b6,
+ 0x8a06b321, 0x07ece5bb, 0xe0f1432c, 0x12a6aed4, 0xf5bb0843,
+ 0x2d787365, 0xca65d5f2, 0x3832380a, 0xdf2f9e9d, 0xf897937f,
+ 0x1f8a35e8, 0xedddd810, 0x0ac07e87, 0xd20305a1, 0x351ea336,
+ 0xc7494ece, 0x2054e859, 0xadbebec3, 0x4aa31854, 0xb8f4f5ac,
+ 0x5fe9533b, 0x872a281d, 0x60378e8a, 0x92606372, 0x757dc5e5,
+ 0xdd1078b6, 0x3a0dde21, 0xc85a33d9, 0x2f47954e, 0xf784ee68,
+ 0x109948ff, 0xe2cea507, 0x05d30390, 0x8839550a, 0x6f24f39d,
+ 0x9d731e65, 0x7a6eb8f2, 0xa2adc3d4, 0x45b06543, 0xb7e788bb,
+ 0x50fa2e2c, 0x774223ce, 0x905f8559, 0x620868a1, 0x8515ce36,
+ 0x5dd6b510, 0xbacb1387, 0x489cfe7f, 0xaf8158e8, 0x226b0e72,
+ 0xc576a8e5, 0x3721451d, 0xd03ce38a, 0x08ff98ac, 0xefe23e3b,
+ 0x1db5d3c3, 0xfaa87554, 0x961faf24, 0x710209b3, 0x8355e44b,
+ 0x644842dc, 0xbc8b39fa, 0x5b969f6d, 0xa9c17295, 0x4edcd402,
+ 0xc3368298, 0x242b240f, 0xd67cc9f7, 0x31616f60, 0xe9a21446,
+ 0x0ebfb2d1, 0xfce85f29, 0x1bf5f9be, 0x3c4df45c, 0xdb5052cb,
+ 0x2907bf33, 0xce1a19a4, 0x16d96282, 0xf1c4c415, 0x039329ed,
+ 0xe48e8f7a, 0x6964d9e0, 0x8e797f77, 0x7c2e928f, 0x9b333418,
+ 0x43f04f3e, 0xa4ede9a9, 0x56ba0451, 0xb1a7a2c6, 0x19ca1f95,
+ 0xfed7b902, 0x0c8054fa, 0xeb9df26d, 0x335e894b, 0xd4432fdc,
+ 0x2614c224, 0xc10964b3, 0x4ce33229, 0xabfe94be, 0x59a97946,
+ 0xbeb4dfd1, 0x6677a4f7, 0x816a0260, 0x733def98, 0x9420490f,
+ 0xb39844ed, 0x5485e27a, 0xa6d20f82, 0x41cfa915, 0x990cd233,
+ 0x7e1174a4, 0x8c46995c, 0x6b5b3fcb, 0xe6b16951, 0x01accfc6,
+ 0xf3fb223e, 0x14e684a9, 0xcc25ff8f, 0x2b385918, 0xd96fb4e0,
+ 0x3e721277},
+ {0x00000000, 0xa58b900e, 0x9066265d, 0x35edb653, 0xfbbd4afb,
+ 0x5e36daf5, 0x6bdb6ca6, 0xce50fca8, 0x2c0b93b7, 0x898003b9,
+ 0xbc6db5ea, 0x19e625e4, 0xd7b6d94c, 0x723d4942, 0x47d0ff11,
+ 0xe25b6f1f, 0x5817276e, 0xfd9cb760, 0xc8710133, 0x6dfa913d,
+ 0xa3aa6d95, 0x0621fd9b, 0x33cc4bc8, 0x9647dbc6, 0x741cb4d9,
+ 0xd19724d7, 0xe47a9284, 0x41f1028a, 0x8fa1fe22, 0x2a2a6e2c,
+ 0x1fc7d87f, 0xba4c4871, 0xb02e4edc, 0x15a5ded2, 0x20486881,
+ 0x85c3f88f, 0x4b930427, 0xee189429, 0xdbf5227a, 0x7e7eb274,
+ 0x9c25dd6b, 0x39ae4d65, 0x0c43fb36, 0xa9c86b38, 0x67989790,
+ 0xc213079e, 0xf7feb1cd, 0x527521c3, 0xe83969b2, 0x4db2f9bc,
+ 0x785f4fef, 0xddd4dfe1, 0x13842349, 0xb60fb347, 0x83e20514,
+ 0x2669951a, 0xc432fa05, 0x61b96a0b, 0x5454dc58, 0xf1df4c56,
+ 0x3f8fb0fe, 0x9a0420f0, 0xafe996a3, 0x0a6206ad, 0xbb2d9bf9,
+ 0x1ea60bf7, 0x2b4bbda4, 0x8ec02daa, 0x4090d102, 0xe51b410c,
+ 0xd0f6f75f, 0x757d6751, 0x9726084e, 0x32ad9840, 0x07402e13,
+ 0xa2cbbe1d, 0x6c9b42b5, 0xc910d2bb, 0xfcfd64e8, 0x5976f4e6,
+ 0xe33abc97, 0x46b12c99, 0x735c9aca, 0xd6d70ac4, 0x1887f66c,
+ 0xbd0c6662, 0x88e1d031, 0x2d6a403f, 0xcf312f20, 0x6ababf2e,
+ 0x5f57097d, 0xfadc9973, 0x348c65db, 0x9107f5d5, 0xa4ea4386,
+ 0x0161d388, 0x0b03d525, 0xae88452b, 0x9b65f378, 0x3eee6376,
+ 0xf0be9fde, 0x55350fd0, 0x60d8b983, 0xc553298d, 0x27084692,
+ 0x8283d69c, 0xb76e60cf, 0x12e5f0c1, 0xdcb50c69, 0x793e9c67,
+ 0x4cd32a34, 0xe958ba3a, 0x5314f24b, 0xf69f6245, 0xc372d416,
+ 0x66f94418, 0xa8a9b8b0, 0x0d2228be, 0x38cf9eed, 0x9d440ee3,
+ 0x7f1f61fc, 0xda94f1f2, 0xef7947a1, 0x4af2d7af, 0x84a22b07,
+ 0x2129bb09, 0x14c40d5a, 0xb14f9d54, 0xad2a31b3, 0x08a1a1bd,
+ 0x3d4c17ee, 0x98c787e0, 0x56977b48, 0xf31ceb46, 0xc6f15d15,
+ 0x637acd1b, 0x8121a204, 0x24aa320a, 0x11478459, 0xb4cc1457,
+ 0x7a9ce8ff, 0xdf1778f1, 0xeafacea2, 0x4f715eac, 0xf53d16dd,
+ 0x50b686d3, 0x655b3080, 0xc0d0a08e, 0x0e805c26, 0xab0bcc28,
+ 0x9ee67a7b, 0x3b6dea75, 0xd936856a, 0x7cbd1564, 0x4950a337,
+ 0xecdb3339, 0x228bcf91, 0x87005f9f, 0xb2ede9cc, 0x176679c2,
+ 0x1d047f6f, 0xb88fef61, 0x8d625932, 0x28e9c93c, 0xe6b93594,
+ 0x4332a59a, 0x76df13c9, 0xd35483c7, 0x310fecd8, 0x94847cd6,
+ 0xa169ca85, 0x04e25a8b, 0xcab2a623, 0x6f39362d, 0x5ad4807e,
+ 0xff5f1070, 0x45135801, 0xe098c80f, 0xd5757e5c, 0x70feee52,
+ 0xbeae12fa, 0x1b2582f4, 0x2ec834a7, 0x8b43a4a9, 0x6918cbb6,
+ 0xcc935bb8, 0xf97eedeb, 0x5cf57de5, 0x92a5814d, 0x372e1143,
+ 0x02c3a710, 0xa748371e, 0x1607aa4a, 0xb38c3a44, 0x86618c17,
+ 0x23ea1c19, 0xedbae0b1, 0x483170bf, 0x7ddcc6ec, 0xd85756e2,
+ 0x3a0c39fd, 0x9f87a9f3, 0xaa6a1fa0, 0x0fe18fae, 0xc1b17306,
+ 0x643ae308, 0x51d7555b, 0xf45cc555, 0x4e108d24, 0xeb9b1d2a,
+ 0xde76ab79, 0x7bfd3b77, 0xb5adc7df, 0x102657d1, 0x25cbe182,
+ 0x8040718c, 0x621b1e93, 0xc7908e9d, 0xf27d38ce, 0x57f6a8c0,
+ 0x99a65468, 0x3c2dc466, 0x09c07235, 0xac4be23b, 0xa629e496,
+ 0x03a27498, 0x364fc2cb, 0x93c452c5, 0x5d94ae6d, 0xf81f3e63,
+ 0xcdf28830, 0x6879183e, 0x8a227721, 0x2fa9e72f, 0x1a44517c,
+ 0xbfcfc172, 0x719f3dda, 0xd414add4, 0xe1f91b87, 0x44728b89,
+ 0xfe3ec3f8, 0x5bb553f6, 0x6e58e5a5, 0xcbd375ab, 0x05838903,
+ 0xa008190d, 0x95e5af5e, 0x306e3f50, 0xd235504f, 0x77bec041,
+ 0x42537612, 0xe7d8e61c, 0x29881ab4, 0x8c038aba, 0xb9ee3ce9,
+ 0x1c65ace7}};
+
+local const z_word_t FAR crc_braid_big_table[][256] = {
+ {0x0000000000000000, 0x0e908ba500000000, 0x5d26669000000000,
+ 0x53b6ed3500000000, 0xfb4abdfb00000000, 0xf5da365e00000000,
+ 0xa66cdb6b00000000, 0xa8fc50ce00000000, 0xb7930b2c00000000,
+ 0xb903808900000000, 0xeab56dbc00000000, 0xe425e61900000000,
+ 0x4cd9b6d700000000, 0x42493d7200000000, 0x11ffd04700000000,
+ 0x1f6f5be200000000, 0x6e27175800000000, 0x60b79cfd00000000,
+ 0x330171c800000000, 0x3d91fa6d00000000, 0x956daaa300000000,
+ 0x9bfd210600000000, 0xc84bcc3300000000, 0xc6db479600000000,
+ 0xd9b41c7400000000, 0xd72497d100000000, 0x84927ae400000000,
+ 0x8a02f14100000000, 0x22fea18f00000000, 0x2c6e2a2a00000000,
+ 0x7fd8c71f00000000, 0x71484cba00000000, 0xdc4e2eb000000000,
+ 0xd2dea51500000000, 0x8168482000000000, 0x8ff8c38500000000,
+ 0x2704934b00000000, 0x299418ee00000000, 0x7a22f5db00000000,
+ 0x74b27e7e00000000, 0x6bdd259c00000000, 0x654dae3900000000,
+ 0x36fb430c00000000, 0x386bc8a900000000, 0x9097986700000000,
+ 0x9e0713c200000000, 0xcdb1fef700000000, 0xc321755200000000,
+ 0xb26939e800000000, 0xbcf9b24d00000000, 0xef4f5f7800000000,
+ 0xe1dfd4dd00000000, 0x4923841300000000, 0x47b30fb600000000,
+ 0x1405e28300000000, 0x1a95692600000000, 0x05fa32c400000000,
+ 0x0b6ab96100000000, 0x58dc545400000000, 0x564cdff100000000,
+ 0xfeb08f3f00000000, 0xf020049a00000000, 0xa396e9af00000000,
+ 0xad06620a00000000, 0xf99b2dbb00000000, 0xf70ba61e00000000,
+ 0xa4bd4b2b00000000, 0xaa2dc08e00000000, 0x02d1904000000000,
+ 0x0c411be500000000, 0x5ff7f6d000000000, 0x51677d7500000000,
+ 0x4e08269700000000, 0x4098ad3200000000, 0x132e400700000000,
+ 0x1dbecba200000000, 0xb5429b6c00000000, 0xbbd210c900000000,
+ 0xe864fdfc00000000, 0xe6f4765900000000, 0x97bc3ae300000000,
+ 0x992cb14600000000, 0xca9a5c7300000000, 0xc40ad7d600000000,
+ 0x6cf6871800000000, 0x62660cbd00000000, 0x31d0e18800000000,
+ 0x3f406a2d00000000, 0x202f31cf00000000, 0x2ebfba6a00000000,
+ 0x7d09575f00000000, 0x7399dcfa00000000, 0xdb658c3400000000,
+ 0xd5f5079100000000, 0x8643eaa400000000, 0x88d3610100000000,
+ 0x25d5030b00000000, 0x2b4588ae00000000, 0x78f3659b00000000,
+ 0x7663ee3e00000000, 0xde9fbef000000000, 0xd00f355500000000,
+ 0x83b9d86000000000, 0x8d2953c500000000, 0x9246082700000000,
+ 0x9cd6838200000000, 0xcf606eb700000000, 0xc1f0e51200000000,
+ 0x690cb5dc00000000, 0x679c3e7900000000, 0x342ad34c00000000,
+ 0x3aba58e900000000, 0x4bf2145300000000, 0x45629ff600000000,
+ 0x16d472c300000000, 0x1844f96600000000, 0xb0b8a9a800000000,
+ 0xbe28220d00000000, 0xed9ecf3800000000, 0xe30e449d00000000,
+ 0xfc611f7f00000000, 0xf2f194da00000000, 0xa14779ef00000000,
+ 0xafd7f24a00000000, 0x072ba28400000000, 0x09bb292100000000,
+ 0x5a0dc41400000000, 0x549d4fb100000000, 0xb3312aad00000000,
+ 0xbda1a10800000000, 0xee174c3d00000000, 0xe087c79800000000,
+ 0x487b975600000000, 0x46eb1cf300000000, 0x155df1c600000000,
+ 0x1bcd7a6300000000, 0x04a2218100000000, 0x0a32aa2400000000,
+ 0x5984471100000000, 0x5714ccb400000000, 0xffe89c7a00000000,
+ 0xf17817df00000000, 0xa2cefaea00000000, 0xac5e714f00000000,
+ 0xdd163df500000000, 0xd386b65000000000, 0x80305b6500000000,
+ 0x8ea0d0c000000000, 0x265c800e00000000, 0x28cc0bab00000000,
+ 0x7b7ae69e00000000, 0x75ea6d3b00000000, 0x6a8536d900000000,
+ 0x6415bd7c00000000, 0x37a3504900000000, 0x3933dbec00000000,
+ 0x91cf8b2200000000, 0x9f5f008700000000, 0xcce9edb200000000,
+ 0xc279661700000000, 0x6f7f041d00000000, 0x61ef8fb800000000,
+ 0x3259628d00000000, 0x3cc9e92800000000, 0x9435b9e600000000,
+ 0x9aa5324300000000, 0xc913df7600000000, 0xc78354d300000000,
+ 0xd8ec0f3100000000, 0xd67c849400000000, 0x85ca69a100000000,
+ 0x8b5ae20400000000, 0x23a6b2ca00000000, 0x2d36396f00000000,
+ 0x7e80d45a00000000, 0x70105fff00000000, 0x0158134500000000,
+ 0x0fc898e000000000, 0x5c7e75d500000000, 0x52eefe7000000000,
+ 0xfa12aebe00000000, 0xf482251b00000000, 0xa734c82e00000000,
+ 0xa9a4438b00000000, 0xb6cb186900000000, 0xb85b93cc00000000,
+ 0xebed7ef900000000, 0xe57df55c00000000, 0x4d81a59200000000,
+ 0x43112e3700000000, 0x10a7c30200000000, 0x1e3748a700000000,
+ 0x4aaa071600000000, 0x443a8cb300000000, 0x178c618600000000,
+ 0x191cea2300000000, 0xb1e0baed00000000, 0xbf70314800000000,
+ 0xecc6dc7d00000000, 0xe25657d800000000, 0xfd390c3a00000000,
+ 0xf3a9879f00000000, 0xa01f6aaa00000000, 0xae8fe10f00000000,
+ 0x0673b1c100000000, 0x08e33a6400000000, 0x5b55d75100000000,
+ 0x55c55cf400000000, 0x248d104e00000000, 0x2a1d9beb00000000,
+ 0x79ab76de00000000, 0x773bfd7b00000000, 0xdfc7adb500000000,
+ 0xd157261000000000, 0x82e1cb2500000000, 0x8c71408000000000,
+ 0x931e1b6200000000, 0x9d8e90c700000000, 0xce387df200000000,
+ 0xc0a8f65700000000, 0x6854a69900000000, 0x66c42d3c00000000,
+ 0x3572c00900000000, 0x3be24bac00000000, 0x96e429a600000000,
+ 0x9874a20300000000, 0xcbc24f3600000000, 0xc552c49300000000,
+ 0x6dae945d00000000, 0x633e1ff800000000, 0x3088f2cd00000000,
+ 0x3e18796800000000, 0x2177228a00000000, 0x2fe7a92f00000000,
+ 0x7c51441a00000000, 0x72c1cfbf00000000, 0xda3d9f7100000000,
+ 0xd4ad14d400000000, 0x871bf9e100000000, 0x898b724400000000,
+ 0xf8c33efe00000000, 0xf653b55b00000000, 0xa5e5586e00000000,
+ 0xab75d3cb00000000, 0x0389830500000000, 0x0d1908a000000000,
+ 0x5eafe59500000000, 0x503f6e3000000000, 0x4f5035d200000000,
+ 0x41c0be7700000000, 0x1276534200000000, 0x1ce6d8e700000000,
+ 0xb41a882900000000, 0xba8a038c00000000, 0xe93ceeb900000000,
+ 0xe7ac651c00000000},
+ {0x0000000000000000, 0x97a61de700000000, 0x6f4b4a1500000000,
+ 0xf8ed57f200000000, 0xde96942a00000000, 0x493089cd00000000,
+ 0xb1ddde3f00000000, 0x267bc3d800000000, 0xbc2d295500000000,
+ 0x2b8b34b200000000, 0xd366634000000000, 0x44c07ea700000000,
+ 0x62bbbd7f00000000, 0xf51da09800000000, 0x0df0f76a00000000,
+ 0x9a56ea8d00000000, 0x785b52aa00000000, 0xeffd4f4d00000000,
+ 0x171018bf00000000, 0x80b6055800000000, 0xa6cdc68000000000,
+ 0x316bdb6700000000, 0xc9868c9500000000, 0x5e20917200000000,
+ 0xc4767bff00000000, 0x53d0661800000000, 0xab3d31ea00000000,
+ 0x3c9b2c0d00000000, 0x1ae0efd500000000, 0x8d46f23200000000,
+ 0x75aba5c000000000, 0xe20db82700000000, 0xb1b0d58f00000000,
+ 0x2616c86800000000, 0xdefb9f9a00000000, 0x495d827d00000000,
+ 0x6f2641a500000000, 0xf8805c4200000000, 0x006d0bb000000000,
+ 0x97cb165700000000, 0x0d9dfcda00000000, 0x9a3be13d00000000,
+ 0x62d6b6cf00000000, 0xf570ab2800000000, 0xd30b68f000000000,
+ 0x44ad751700000000, 0xbc4022e500000000, 0x2be63f0200000000,
+ 0xc9eb872500000000, 0x5e4d9ac200000000, 0xa6a0cd3000000000,
+ 0x3106d0d700000000, 0x177d130f00000000, 0x80db0ee800000000,
+ 0x7836591a00000000, 0xef9044fd00000000, 0x75c6ae7000000000,
+ 0xe260b39700000000, 0x1a8de46500000000, 0x8d2bf98200000000,
+ 0xab503a5a00000000, 0x3cf627bd00000000, 0xc41b704f00000000,
+ 0x53bd6da800000000, 0x2367dac400000000, 0xb4c1c72300000000,
+ 0x4c2c90d100000000, 0xdb8a8d3600000000, 0xfdf14eee00000000,
+ 0x6a57530900000000, 0x92ba04fb00000000, 0x051c191c00000000,
+ 0x9f4af39100000000, 0x08ecee7600000000, 0xf001b98400000000,
+ 0x67a7a46300000000, 0x41dc67bb00000000, 0xd67a7a5c00000000,
+ 0x2e972dae00000000, 0xb931304900000000, 0x5b3c886e00000000,
+ 0xcc9a958900000000, 0x3477c27b00000000, 0xa3d1df9c00000000,
+ 0x85aa1c4400000000, 0x120c01a300000000, 0xeae1565100000000,
+ 0x7d474bb600000000, 0xe711a13b00000000, 0x70b7bcdc00000000,
+ 0x885aeb2e00000000, 0x1ffcf6c900000000, 0x3987351100000000,
+ 0xae2128f600000000, 0x56cc7f0400000000, 0xc16a62e300000000,
+ 0x92d70f4b00000000, 0x057112ac00000000, 0xfd9c455e00000000,
+ 0x6a3a58b900000000, 0x4c419b6100000000, 0xdbe7868600000000,
+ 0x230ad17400000000, 0xb4accc9300000000, 0x2efa261e00000000,
+ 0xb95c3bf900000000, 0x41b16c0b00000000, 0xd61771ec00000000,
+ 0xf06cb23400000000, 0x67caafd300000000, 0x9f27f82100000000,
+ 0x0881e5c600000000, 0xea8c5de100000000, 0x7d2a400600000000,
+ 0x85c717f400000000, 0x12610a1300000000, 0x341ac9cb00000000,
+ 0xa3bcd42c00000000, 0x5b5183de00000000, 0xccf79e3900000000,
+ 0x56a174b400000000, 0xc107695300000000, 0x39ea3ea100000000,
+ 0xae4c234600000000, 0x8837e09e00000000, 0x1f91fd7900000000,
+ 0xe77caa8b00000000, 0x70dab76c00000000, 0x07c8c55200000000,
+ 0x906ed8b500000000, 0x68838f4700000000, 0xff2592a000000000,
+ 0xd95e517800000000, 0x4ef84c9f00000000, 0xb6151b6d00000000,
+ 0x21b3068a00000000, 0xbbe5ec0700000000, 0x2c43f1e000000000,
+ 0xd4aea61200000000, 0x4308bbf500000000, 0x6573782d00000000,
+ 0xf2d565ca00000000, 0x0a38323800000000, 0x9d9e2fdf00000000,
+ 0x7f9397f800000000, 0xe8358a1f00000000, 0x10d8dded00000000,
+ 0x877ec00a00000000, 0xa10503d200000000, 0x36a31e3500000000,
+ 0xce4e49c700000000, 0x59e8542000000000, 0xc3bebead00000000,
+ 0x5418a34a00000000, 0xacf5f4b800000000, 0x3b53e95f00000000,
+ 0x1d282a8700000000, 0x8a8e376000000000, 0x7263609200000000,
+ 0xe5c57d7500000000, 0xb67810dd00000000, 0x21de0d3a00000000,
+ 0xd9335ac800000000, 0x4e95472f00000000, 0x68ee84f700000000,
+ 0xff48991000000000, 0x07a5cee200000000, 0x9003d30500000000,
+ 0x0a55398800000000, 0x9df3246f00000000, 0x651e739d00000000,
+ 0xf2b86e7a00000000, 0xd4c3ada200000000, 0x4365b04500000000,
+ 0xbb88e7b700000000, 0x2c2efa5000000000, 0xce23427700000000,
+ 0x59855f9000000000, 0xa168086200000000, 0x36ce158500000000,
+ 0x10b5d65d00000000, 0x8713cbba00000000, 0x7ffe9c4800000000,
+ 0xe85881af00000000, 0x720e6b2200000000, 0xe5a876c500000000,
+ 0x1d45213700000000, 0x8ae33cd000000000, 0xac98ff0800000000,
+ 0x3b3ee2ef00000000, 0xc3d3b51d00000000, 0x5475a8fa00000000,
+ 0x24af1f9600000000, 0xb309027100000000, 0x4be4558300000000,
+ 0xdc42486400000000, 0xfa398bbc00000000, 0x6d9f965b00000000,
+ 0x9572c1a900000000, 0x02d4dc4e00000000, 0x988236c300000000,
+ 0x0f242b2400000000, 0xf7c97cd600000000, 0x606f613100000000,
+ 0x4614a2e900000000, 0xd1b2bf0e00000000, 0x295fe8fc00000000,
+ 0xbef9f51b00000000, 0x5cf44d3c00000000, 0xcb5250db00000000,
+ 0x33bf072900000000, 0xa4191ace00000000, 0x8262d91600000000,
+ 0x15c4c4f100000000, 0xed29930300000000, 0x7a8f8ee400000000,
+ 0xe0d9646900000000, 0x777f798e00000000, 0x8f922e7c00000000,
+ 0x1834339b00000000, 0x3e4ff04300000000, 0xa9e9eda400000000,
+ 0x5104ba5600000000, 0xc6a2a7b100000000, 0x951fca1900000000,
+ 0x02b9d7fe00000000, 0xfa54800c00000000, 0x6df29deb00000000,
+ 0x4b895e3300000000, 0xdc2f43d400000000, 0x24c2142600000000,
+ 0xb36409c100000000, 0x2932e34c00000000, 0xbe94feab00000000,
+ 0x4679a95900000000, 0xd1dfb4be00000000, 0xf7a4776600000000,
+ 0x60026a8100000000, 0x98ef3d7300000000, 0x0f49209400000000,
+ 0xed4498b300000000, 0x7ae2855400000000, 0x820fd2a600000000,
+ 0x15a9cf4100000000, 0x33d20c9900000000, 0xa474117e00000000,
+ 0x5c99468c00000000, 0xcb3f5b6b00000000, 0x5169b1e600000000,
+ 0xc6cfac0100000000, 0x3e22fbf300000000, 0xa984e61400000000,
+ 0x8fff25cc00000000, 0x1859382b00000000, 0xe0b46fd900000000,
+ 0x7712723e00000000},
+ {0x0000000000000000, 0x411b8c6e00000000, 0x823618dd00000000,
+ 0xc32d94b300000000, 0x456b416100000000, 0x0470cd0f00000000,
+ 0xc75d59bc00000000, 0x8646d5d200000000, 0x8ad682c200000000,
+ 0xcbcd0eac00000000, 0x08e09a1f00000000, 0x49fb167100000000,
+ 0xcfbdc3a300000000, 0x8ea64fcd00000000, 0x4d8bdb7e00000000,
+ 0x0c90571000000000, 0x55ab745e00000000, 0x14b0f83000000000,
+ 0xd79d6c8300000000, 0x9686e0ed00000000, 0x10c0353f00000000,
+ 0x51dbb95100000000, 0x92f62de200000000, 0xd3eda18c00000000,
+ 0xdf7df69c00000000, 0x9e667af200000000, 0x5d4bee4100000000,
+ 0x1c50622f00000000, 0x9a16b7fd00000000, 0xdb0d3b9300000000,
+ 0x1820af2000000000, 0x593b234e00000000, 0xaa56e9bc00000000,
+ 0xeb4d65d200000000, 0x2860f16100000000, 0x697b7d0f00000000,
+ 0xef3da8dd00000000, 0xae2624b300000000, 0x6d0bb00000000000,
+ 0x2c103c6e00000000, 0x20806b7e00000000, 0x619be71000000000,
+ 0xa2b673a300000000, 0xe3adffcd00000000, 0x65eb2a1f00000000,
+ 0x24f0a67100000000, 0xe7dd32c200000000, 0xa6c6beac00000000,
+ 0xfffd9de200000000, 0xbee6118c00000000, 0x7dcb853f00000000,
+ 0x3cd0095100000000, 0xba96dc8300000000, 0xfb8d50ed00000000,
+ 0x38a0c45e00000000, 0x79bb483000000000, 0x752b1f2000000000,
+ 0x3430934e00000000, 0xf71d07fd00000000, 0xb6068b9300000000,
+ 0x30405e4100000000, 0x715bd22f00000000, 0xb276469c00000000,
+ 0xf36dcaf200000000, 0x15aba3a200000000, 0x54b02fcc00000000,
+ 0x979dbb7f00000000, 0xd686371100000000, 0x50c0e2c300000000,
+ 0x11db6ead00000000, 0xd2f6fa1e00000000, 0x93ed767000000000,
+ 0x9f7d216000000000, 0xde66ad0e00000000, 0x1d4b39bd00000000,
+ 0x5c50b5d300000000, 0xda16600100000000, 0x9b0dec6f00000000,
+ 0x582078dc00000000, 0x193bf4b200000000, 0x4000d7fc00000000,
+ 0x011b5b9200000000, 0xc236cf2100000000, 0x832d434f00000000,
+ 0x056b969d00000000, 0x44701af300000000, 0x875d8e4000000000,
+ 0xc646022e00000000, 0xcad6553e00000000, 0x8bcdd95000000000,
+ 0x48e04de300000000, 0x09fbc18d00000000, 0x8fbd145f00000000,
+ 0xcea6983100000000, 0x0d8b0c8200000000, 0x4c9080ec00000000,
+ 0xbffd4a1e00000000, 0xfee6c67000000000, 0x3dcb52c300000000,
+ 0x7cd0dead00000000, 0xfa960b7f00000000, 0xbb8d871100000000,
+ 0x78a013a200000000, 0x39bb9fcc00000000, 0x352bc8dc00000000,
+ 0x743044b200000000, 0xb71dd00100000000, 0xf6065c6f00000000,
+ 0x704089bd00000000, 0x315b05d300000000, 0xf276916000000000,
+ 0xb36d1d0e00000000, 0xea563e4000000000, 0xab4db22e00000000,
+ 0x6860269d00000000, 0x297baaf300000000, 0xaf3d7f2100000000,
+ 0xee26f34f00000000, 0x2d0b67fc00000000, 0x6c10eb9200000000,
+ 0x6080bc8200000000, 0x219b30ec00000000, 0xe2b6a45f00000000,
+ 0xa3ad283100000000, 0x25ebfde300000000, 0x64f0718d00000000,
+ 0xa7dde53e00000000, 0xe6c6695000000000, 0x6b50369e00000000,
+ 0x2a4bbaf000000000, 0xe9662e4300000000, 0xa87da22d00000000,
+ 0x2e3b77ff00000000, 0x6f20fb9100000000, 0xac0d6f2200000000,
+ 0xed16e34c00000000, 0xe186b45c00000000, 0xa09d383200000000,
+ 0x63b0ac8100000000, 0x22ab20ef00000000, 0xa4edf53d00000000,
+ 0xe5f6795300000000, 0x26dbede000000000, 0x67c0618e00000000,
+ 0x3efb42c000000000, 0x7fe0ceae00000000, 0xbccd5a1d00000000,
+ 0xfdd6d67300000000, 0x7b9003a100000000, 0x3a8b8fcf00000000,
+ 0xf9a61b7c00000000, 0xb8bd971200000000, 0xb42dc00200000000,
+ 0xf5364c6c00000000, 0x361bd8df00000000, 0x770054b100000000,
+ 0xf146816300000000, 0xb05d0d0d00000000, 0x737099be00000000,
+ 0x326b15d000000000, 0xc106df2200000000, 0x801d534c00000000,
+ 0x4330c7ff00000000, 0x022b4b9100000000, 0x846d9e4300000000,
+ 0xc576122d00000000, 0x065b869e00000000, 0x47400af000000000,
+ 0x4bd05de000000000, 0x0acbd18e00000000, 0xc9e6453d00000000,
+ 0x88fdc95300000000, 0x0ebb1c8100000000, 0x4fa090ef00000000,
+ 0x8c8d045c00000000, 0xcd96883200000000, 0x94adab7c00000000,
+ 0xd5b6271200000000, 0x169bb3a100000000, 0x57803fcf00000000,
+ 0xd1c6ea1d00000000, 0x90dd667300000000, 0x53f0f2c000000000,
+ 0x12eb7eae00000000, 0x1e7b29be00000000, 0x5f60a5d000000000,
+ 0x9c4d316300000000, 0xdd56bd0d00000000, 0x5b1068df00000000,
+ 0x1a0be4b100000000, 0xd926700200000000, 0x983dfc6c00000000,
+ 0x7efb953c00000000, 0x3fe0195200000000, 0xfccd8de100000000,
+ 0xbdd6018f00000000, 0x3b90d45d00000000, 0x7a8b583300000000,
+ 0xb9a6cc8000000000, 0xf8bd40ee00000000, 0xf42d17fe00000000,
+ 0xb5369b9000000000, 0x761b0f2300000000, 0x3700834d00000000,
+ 0xb146569f00000000, 0xf05ddaf100000000, 0x33704e4200000000,
+ 0x726bc22c00000000, 0x2b50e16200000000, 0x6a4b6d0c00000000,
+ 0xa966f9bf00000000, 0xe87d75d100000000, 0x6e3ba00300000000,
+ 0x2f202c6d00000000, 0xec0db8de00000000, 0xad1634b000000000,
+ 0xa18663a000000000, 0xe09defce00000000, 0x23b07b7d00000000,
+ 0x62abf71300000000, 0xe4ed22c100000000, 0xa5f6aeaf00000000,
+ 0x66db3a1c00000000, 0x27c0b67200000000, 0xd4ad7c8000000000,
+ 0x95b6f0ee00000000, 0x569b645d00000000, 0x1780e83300000000,
+ 0x91c63de100000000, 0xd0ddb18f00000000, 0x13f0253c00000000,
+ 0x52eba95200000000, 0x5e7bfe4200000000, 0x1f60722c00000000,
+ 0xdc4de69f00000000, 0x9d566af100000000, 0x1b10bf2300000000,
+ 0x5a0b334d00000000, 0x9926a7fe00000000, 0xd83d2b9000000000,
+ 0x810608de00000000, 0xc01d84b000000000, 0x0330100300000000,
+ 0x422b9c6d00000000, 0xc46d49bf00000000, 0x8576c5d100000000,
+ 0x465b516200000000, 0x0740dd0c00000000, 0x0bd08a1c00000000,
+ 0x4acb067200000000, 0x89e692c100000000, 0xc8fd1eaf00000000,
+ 0x4ebbcb7d00000000, 0x0fa0471300000000, 0xcc8dd3a000000000,
+ 0x8d965fce00000000},
+ {0x0000000000000000, 0x1dfdb50100000000, 0x3afa6b0300000000,
+ 0x2707de0200000000, 0x74f4d70600000000, 0x6909620700000000,
+ 0x4e0ebc0500000000, 0x53f3090400000000, 0xe8e8af0d00000000,
+ 0xf5151a0c00000000, 0xd212c40e00000000, 0xcfef710f00000000,
+ 0x9c1c780b00000000, 0x81e1cd0a00000000, 0xa6e6130800000000,
+ 0xbb1ba60900000000, 0xd0d15f1b00000000, 0xcd2cea1a00000000,
+ 0xea2b341800000000, 0xf7d6811900000000, 0xa425881d00000000,
+ 0xb9d83d1c00000000, 0x9edfe31e00000000, 0x8322561f00000000,
+ 0x3839f01600000000, 0x25c4451700000000, 0x02c39b1500000000,
+ 0x1f3e2e1400000000, 0x4ccd271000000000, 0x5130921100000000,
+ 0x76374c1300000000, 0x6bcaf91200000000, 0xa0a3bf3600000000,
+ 0xbd5e0a3700000000, 0x9a59d43500000000, 0x87a4613400000000,
+ 0xd457683000000000, 0xc9aadd3100000000, 0xeead033300000000,
+ 0xf350b63200000000, 0x484b103b00000000, 0x55b6a53a00000000,
+ 0x72b17b3800000000, 0x6f4cce3900000000, 0x3cbfc73d00000000,
+ 0x2142723c00000000, 0x0645ac3e00000000, 0x1bb8193f00000000,
+ 0x7072e02d00000000, 0x6d8f552c00000000, 0x4a888b2e00000000,
+ 0x57753e2f00000000, 0x0486372b00000000, 0x197b822a00000000,
+ 0x3e7c5c2800000000, 0x2381e92900000000, 0x989a4f2000000000,
+ 0x8567fa2100000000, 0xa260242300000000, 0xbf9d912200000000,
+ 0xec6e982600000000, 0xf1932d2700000000, 0xd694f32500000000,
+ 0xcb69462400000000, 0x40477f6d00000000, 0x5dbaca6c00000000,
+ 0x7abd146e00000000, 0x6740a16f00000000, 0x34b3a86b00000000,
+ 0x294e1d6a00000000, 0x0e49c36800000000, 0x13b4766900000000,
+ 0xa8afd06000000000, 0xb552656100000000, 0x9255bb6300000000,
+ 0x8fa80e6200000000, 0xdc5b076600000000, 0xc1a6b26700000000,
+ 0xe6a16c6500000000, 0xfb5cd96400000000, 0x9096207600000000,
+ 0x8d6b957700000000, 0xaa6c4b7500000000, 0xb791fe7400000000,
+ 0xe462f77000000000, 0xf99f427100000000, 0xde989c7300000000,
+ 0xc365297200000000, 0x787e8f7b00000000, 0x65833a7a00000000,
+ 0x4284e47800000000, 0x5f79517900000000, 0x0c8a587d00000000,
+ 0x1177ed7c00000000, 0x3670337e00000000, 0x2b8d867f00000000,
+ 0xe0e4c05b00000000, 0xfd19755a00000000, 0xda1eab5800000000,
+ 0xc7e31e5900000000, 0x9410175d00000000, 0x89eda25c00000000,
+ 0xaeea7c5e00000000, 0xb317c95f00000000, 0x080c6f5600000000,
+ 0x15f1da5700000000, 0x32f6045500000000, 0x2f0bb15400000000,
+ 0x7cf8b85000000000, 0x61050d5100000000, 0x4602d35300000000,
+ 0x5bff665200000000, 0x30359f4000000000, 0x2dc82a4100000000,
+ 0x0acff44300000000, 0x1732414200000000, 0x44c1484600000000,
+ 0x593cfd4700000000, 0x7e3b234500000000, 0x63c6964400000000,
+ 0xd8dd304d00000000, 0xc520854c00000000, 0xe2275b4e00000000,
+ 0xffdaee4f00000000, 0xac29e74b00000000, 0xb1d4524a00000000,
+ 0x96d38c4800000000, 0x8b2e394900000000, 0x808efeda00000000,
+ 0x9d734bdb00000000, 0xba7495d900000000, 0xa78920d800000000,
+ 0xf47a29dc00000000, 0xe9879cdd00000000, 0xce8042df00000000,
+ 0xd37df7de00000000, 0x686651d700000000, 0x759be4d600000000,
+ 0x529c3ad400000000, 0x4f618fd500000000, 0x1c9286d100000000,
+ 0x016f33d000000000, 0x2668edd200000000, 0x3b9558d300000000,
+ 0x505fa1c100000000, 0x4da214c000000000, 0x6aa5cac200000000,
+ 0x77587fc300000000, 0x24ab76c700000000, 0x3956c3c600000000,
+ 0x1e511dc400000000, 0x03aca8c500000000, 0xb8b70ecc00000000,
+ 0xa54abbcd00000000, 0x824d65cf00000000, 0x9fb0d0ce00000000,
+ 0xcc43d9ca00000000, 0xd1be6ccb00000000, 0xf6b9b2c900000000,
+ 0xeb4407c800000000, 0x202d41ec00000000, 0x3dd0f4ed00000000,
+ 0x1ad72aef00000000, 0x072a9fee00000000, 0x54d996ea00000000,
+ 0x492423eb00000000, 0x6e23fde900000000, 0x73de48e800000000,
+ 0xc8c5eee100000000, 0xd5385be000000000, 0xf23f85e200000000,
+ 0xefc230e300000000, 0xbc3139e700000000, 0xa1cc8ce600000000,
+ 0x86cb52e400000000, 0x9b36e7e500000000, 0xf0fc1ef700000000,
+ 0xed01abf600000000, 0xca0675f400000000, 0xd7fbc0f500000000,
+ 0x8408c9f100000000, 0x99f57cf000000000, 0xbef2a2f200000000,
+ 0xa30f17f300000000, 0x1814b1fa00000000, 0x05e904fb00000000,
+ 0x22eedaf900000000, 0x3f136ff800000000, 0x6ce066fc00000000,
+ 0x711dd3fd00000000, 0x561a0dff00000000, 0x4be7b8fe00000000,
+ 0xc0c981b700000000, 0xdd3434b600000000, 0xfa33eab400000000,
+ 0xe7ce5fb500000000, 0xb43d56b100000000, 0xa9c0e3b000000000,
+ 0x8ec73db200000000, 0x933a88b300000000, 0x28212eba00000000,
+ 0x35dc9bbb00000000, 0x12db45b900000000, 0x0f26f0b800000000,
+ 0x5cd5f9bc00000000, 0x41284cbd00000000, 0x662f92bf00000000,
+ 0x7bd227be00000000, 0x1018deac00000000, 0x0de56bad00000000,
+ 0x2ae2b5af00000000, 0x371f00ae00000000, 0x64ec09aa00000000,
+ 0x7911bcab00000000, 0x5e1662a900000000, 0x43ebd7a800000000,
+ 0xf8f071a100000000, 0xe50dc4a000000000, 0xc20a1aa200000000,
+ 0xdff7afa300000000, 0x8c04a6a700000000, 0x91f913a600000000,
+ 0xb6fecda400000000, 0xab0378a500000000, 0x606a3e8100000000,
+ 0x7d978b8000000000, 0x5a90558200000000, 0x476de08300000000,
+ 0x149ee98700000000, 0x09635c8600000000, 0x2e64828400000000,
+ 0x3399378500000000, 0x8882918c00000000, 0x957f248d00000000,
+ 0xb278fa8f00000000, 0xaf854f8e00000000, 0xfc76468a00000000,
+ 0xe18bf38b00000000, 0xc68c2d8900000000, 0xdb71988800000000,
+ 0xb0bb619a00000000, 0xad46d49b00000000, 0x8a410a9900000000,
+ 0x97bcbf9800000000, 0xc44fb69c00000000, 0xd9b2039d00000000,
+ 0xfeb5dd9f00000000, 0xe348689e00000000, 0x5853ce9700000000,
+ 0x45ae7b9600000000, 0x62a9a59400000000, 0x7f54109500000000,
+ 0x2ca7199100000000, 0x315aac9000000000, 0x165d729200000000,
+ 0x0ba0c79300000000},
+ {0x0000000000000000, 0x24d9076300000000, 0x48b20fc600000000,
+ 0x6c6b08a500000000, 0xd1626e5700000000, 0xf5bb693400000000,
+ 0x99d0619100000000, 0xbd0966f200000000, 0xa2c5dcae00000000,
+ 0x861cdbcd00000000, 0xea77d36800000000, 0xceaed40b00000000,
+ 0x73a7b2f900000000, 0x577eb59a00000000, 0x3b15bd3f00000000,
+ 0x1fccba5c00000000, 0x058dc88600000000, 0x2154cfe500000000,
+ 0x4d3fc74000000000, 0x69e6c02300000000, 0xd4efa6d100000000,
+ 0xf036a1b200000000, 0x9c5da91700000000, 0xb884ae7400000000,
+ 0xa748142800000000, 0x8391134b00000000, 0xeffa1bee00000000,
+ 0xcb231c8d00000000, 0x762a7a7f00000000, 0x52f37d1c00000000,
+ 0x3e9875b900000000, 0x1a4172da00000000, 0x4b1ce0d600000000,
+ 0x6fc5e7b500000000, 0x03aeef1000000000, 0x2777e87300000000,
+ 0x9a7e8e8100000000, 0xbea789e200000000, 0xd2cc814700000000,
+ 0xf615862400000000, 0xe9d93c7800000000, 0xcd003b1b00000000,
+ 0xa16b33be00000000, 0x85b234dd00000000, 0x38bb522f00000000,
+ 0x1c62554c00000000, 0x70095de900000000, 0x54d05a8a00000000,
+ 0x4e91285000000000, 0x6a482f3300000000, 0x0623279600000000,
+ 0x22fa20f500000000, 0x9ff3460700000000, 0xbb2a416400000000,
+ 0xd74149c100000000, 0xf3984ea200000000, 0xec54f4fe00000000,
+ 0xc88df39d00000000, 0xa4e6fb3800000000, 0x803ffc5b00000000,
+ 0x3d369aa900000000, 0x19ef9dca00000000, 0x7584956f00000000,
+ 0x515d920c00000000, 0xd73eb17600000000, 0xf3e7b61500000000,
+ 0x9f8cbeb000000000, 0xbb55b9d300000000, 0x065cdf2100000000,
+ 0x2285d84200000000, 0x4eeed0e700000000, 0x6a37d78400000000,
+ 0x75fb6dd800000000, 0x51226abb00000000, 0x3d49621e00000000,
+ 0x1990657d00000000, 0xa499038f00000000, 0x804004ec00000000,
+ 0xec2b0c4900000000, 0xc8f20b2a00000000, 0xd2b379f000000000,
+ 0xf66a7e9300000000, 0x9a01763600000000, 0xbed8715500000000,
+ 0x03d117a700000000, 0x270810c400000000, 0x4b63186100000000,
+ 0x6fba1f0200000000, 0x7076a55e00000000, 0x54afa23d00000000,
+ 0x38c4aa9800000000, 0x1c1dadfb00000000, 0xa114cb0900000000,
+ 0x85cdcc6a00000000, 0xe9a6c4cf00000000, 0xcd7fc3ac00000000,
+ 0x9c2251a000000000, 0xb8fb56c300000000, 0xd4905e6600000000,
+ 0xf049590500000000, 0x4d403ff700000000, 0x6999389400000000,
+ 0x05f2303100000000, 0x212b375200000000, 0x3ee78d0e00000000,
+ 0x1a3e8a6d00000000, 0x765582c800000000, 0x528c85ab00000000,
+ 0xef85e35900000000, 0xcb5ce43a00000000, 0xa737ec9f00000000,
+ 0x83eeebfc00000000, 0x99af992600000000, 0xbd769e4500000000,
+ 0xd11d96e000000000, 0xf5c4918300000000, 0x48cdf77100000000,
+ 0x6c14f01200000000, 0x007ff8b700000000, 0x24a6ffd400000000,
+ 0x3b6a458800000000, 0x1fb342eb00000000, 0x73d84a4e00000000,
+ 0x57014d2d00000000, 0xea082bdf00000000, 0xced12cbc00000000,
+ 0xa2ba241900000000, 0x8663237a00000000, 0xae7d62ed00000000,
+ 0x8aa4658e00000000, 0xe6cf6d2b00000000, 0xc2166a4800000000,
+ 0x7f1f0cba00000000, 0x5bc60bd900000000, 0x37ad037c00000000,
+ 0x1374041f00000000, 0x0cb8be4300000000, 0x2861b92000000000,
+ 0x440ab18500000000, 0x60d3b6e600000000, 0xdddad01400000000,
+ 0xf903d77700000000, 0x9568dfd200000000, 0xb1b1d8b100000000,
+ 0xabf0aa6b00000000, 0x8f29ad0800000000, 0xe342a5ad00000000,
+ 0xc79ba2ce00000000, 0x7a92c43c00000000, 0x5e4bc35f00000000,
+ 0x3220cbfa00000000, 0x16f9cc9900000000, 0x093576c500000000,
+ 0x2dec71a600000000, 0x4187790300000000, 0x655e7e6000000000,
+ 0xd857189200000000, 0xfc8e1ff100000000, 0x90e5175400000000,
+ 0xb43c103700000000, 0xe561823b00000000, 0xc1b8855800000000,
+ 0xadd38dfd00000000, 0x890a8a9e00000000, 0x3403ec6c00000000,
+ 0x10daeb0f00000000, 0x7cb1e3aa00000000, 0x5868e4c900000000,
+ 0x47a45e9500000000, 0x637d59f600000000, 0x0f16515300000000,
+ 0x2bcf563000000000, 0x96c630c200000000, 0xb21f37a100000000,
+ 0xde743f0400000000, 0xfaad386700000000, 0xe0ec4abd00000000,
+ 0xc4354dde00000000, 0xa85e457b00000000, 0x8c87421800000000,
+ 0x318e24ea00000000, 0x1557238900000000, 0x793c2b2c00000000,
+ 0x5de52c4f00000000, 0x4229961300000000, 0x66f0917000000000,
+ 0x0a9b99d500000000, 0x2e429eb600000000, 0x934bf84400000000,
+ 0xb792ff2700000000, 0xdbf9f78200000000, 0xff20f0e100000000,
+ 0x7943d39b00000000, 0x5d9ad4f800000000, 0x31f1dc5d00000000,
+ 0x1528db3e00000000, 0xa821bdcc00000000, 0x8cf8baaf00000000,
+ 0xe093b20a00000000, 0xc44ab56900000000, 0xdb860f3500000000,
+ 0xff5f085600000000, 0x933400f300000000, 0xb7ed079000000000,
+ 0x0ae4616200000000, 0x2e3d660100000000, 0x42566ea400000000,
+ 0x668f69c700000000, 0x7cce1b1d00000000, 0x58171c7e00000000,
+ 0x347c14db00000000, 0x10a513b800000000, 0xadac754a00000000,
+ 0x8975722900000000, 0xe51e7a8c00000000, 0xc1c77def00000000,
+ 0xde0bc7b300000000, 0xfad2c0d000000000, 0x96b9c87500000000,
+ 0xb260cf1600000000, 0x0f69a9e400000000, 0x2bb0ae8700000000,
+ 0x47dba62200000000, 0x6302a14100000000, 0x325f334d00000000,
+ 0x1686342e00000000, 0x7aed3c8b00000000, 0x5e343be800000000,
+ 0xe33d5d1a00000000, 0xc7e45a7900000000, 0xab8f52dc00000000,
+ 0x8f5655bf00000000, 0x909aefe300000000, 0xb443e88000000000,
+ 0xd828e02500000000, 0xfcf1e74600000000, 0x41f881b400000000,
+ 0x652186d700000000, 0x094a8e7200000000, 0x2d93891100000000,
+ 0x37d2fbcb00000000, 0x130bfca800000000, 0x7f60f40d00000000,
+ 0x5bb9f36e00000000, 0xe6b0959c00000000, 0xc26992ff00000000,
+ 0xae029a5a00000000, 0x8adb9d3900000000, 0x9517276500000000,
+ 0xb1ce200600000000, 0xdda528a300000000, 0xf97c2fc000000000,
+ 0x4475493200000000, 0x60ac4e5100000000, 0x0cc746f400000000,
+ 0x281e419700000000},
+ {0x0000000000000000, 0x08e3603c00000000, 0x10c6c17800000000,
+ 0x1825a14400000000, 0x208c83f100000000, 0x286fe3cd00000000,
+ 0x304a428900000000, 0x38a922b500000000, 0x011e763800000000,
+ 0x09fd160400000000, 0x11d8b74000000000, 0x193bd77c00000000,
+ 0x2192f5c900000000, 0x297195f500000000, 0x315434b100000000,
+ 0x39b7548d00000000, 0x023cec7000000000, 0x0adf8c4c00000000,
+ 0x12fa2d0800000000, 0x1a194d3400000000, 0x22b06f8100000000,
+ 0x2a530fbd00000000, 0x3276aef900000000, 0x3a95cec500000000,
+ 0x03229a4800000000, 0x0bc1fa7400000000, 0x13e45b3000000000,
+ 0x1b073b0c00000000, 0x23ae19b900000000, 0x2b4d798500000000,
+ 0x3368d8c100000000, 0x3b8bb8fd00000000, 0x0478d8e100000000,
+ 0x0c9bb8dd00000000, 0x14be199900000000, 0x1c5d79a500000000,
+ 0x24f45b1000000000, 0x2c173b2c00000000, 0x34329a6800000000,
+ 0x3cd1fa5400000000, 0x0566aed900000000, 0x0d85cee500000000,
+ 0x15a06fa100000000, 0x1d430f9d00000000, 0x25ea2d2800000000,
+ 0x2d094d1400000000, 0x352cec5000000000, 0x3dcf8c6c00000000,
+ 0x0644349100000000, 0x0ea754ad00000000, 0x1682f5e900000000,
+ 0x1e6195d500000000, 0x26c8b76000000000, 0x2e2bd75c00000000,
+ 0x360e761800000000, 0x3eed162400000000, 0x075a42a900000000,
+ 0x0fb9229500000000, 0x179c83d100000000, 0x1f7fe3ed00000000,
+ 0x27d6c15800000000, 0x2f35a16400000000, 0x3710002000000000,
+ 0x3ff3601c00000000, 0x49f6c11800000000, 0x4115a12400000000,
+ 0x5930006000000000, 0x51d3605c00000000, 0x697a42e900000000,
+ 0x619922d500000000, 0x79bc839100000000, 0x715fe3ad00000000,
+ 0x48e8b72000000000, 0x400bd71c00000000, 0x582e765800000000,
+ 0x50cd166400000000, 0x686434d100000000, 0x608754ed00000000,
+ 0x78a2f5a900000000, 0x7041959500000000, 0x4bca2d6800000000,
+ 0x43294d5400000000, 0x5b0cec1000000000, 0x53ef8c2c00000000,
+ 0x6b46ae9900000000, 0x63a5cea500000000, 0x7b806fe100000000,
+ 0x73630fdd00000000, 0x4ad45b5000000000, 0x42373b6c00000000,
+ 0x5a129a2800000000, 0x52f1fa1400000000, 0x6a58d8a100000000,
+ 0x62bbb89d00000000, 0x7a9e19d900000000, 0x727d79e500000000,
+ 0x4d8e19f900000000, 0x456d79c500000000, 0x5d48d88100000000,
+ 0x55abb8bd00000000, 0x6d029a0800000000, 0x65e1fa3400000000,
+ 0x7dc45b7000000000, 0x75273b4c00000000, 0x4c906fc100000000,
+ 0x44730ffd00000000, 0x5c56aeb900000000, 0x54b5ce8500000000,
+ 0x6c1cec3000000000, 0x64ff8c0c00000000, 0x7cda2d4800000000,
+ 0x74394d7400000000, 0x4fb2f58900000000, 0x475195b500000000,
+ 0x5f7434f100000000, 0x579754cd00000000, 0x6f3e767800000000,
+ 0x67dd164400000000, 0x7ff8b70000000000, 0x771bd73c00000000,
+ 0x4eac83b100000000, 0x464fe38d00000000, 0x5e6a42c900000000,
+ 0x568922f500000000, 0x6e20004000000000, 0x66c3607c00000000,
+ 0x7ee6c13800000000, 0x7605a10400000000, 0x92ec833100000000,
+ 0x9a0fe30d00000000, 0x822a424900000000, 0x8ac9227500000000,
+ 0xb26000c000000000, 0xba8360fc00000000, 0xa2a6c1b800000000,
+ 0xaa45a18400000000, 0x93f2f50900000000, 0x9b11953500000000,
+ 0x8334347100000000, 0x8bd7544d00000000, 0xb37e76f800000000,
+ 0xbb9d16c400000000, 0xa3b8b78000000000, 0xab5bd7bc00000000,
+ 0x90d06f4100000000, 0x98330f7d00000000, 0x8016ae3900000000,
+ 0x88f5ce0500000000, 0xb05cecb000000000, 0xb8bf8c8c00000000,
+ 0xa09a2dc800000000, 0xa8794df400000000, 0x91ce197900000000,
+ 0x992d794500000000, 0x8108d80100000000, 0x89ebb83d00000000,
+ 0xb1429a8800000000, 0xb9a1fab400000000, 0xa1845bf000000000,
+ 0xa9673bcc00000000, 0x96945bd000000000, 0x9e773bec00000000,
+ 0x86529aa800000000, 0x8eb1fa9400000000, 0xb618d82100000000,
+ 0xbefbb81d00000000, 0xa6de195900000000, 0xae3d796500000000,
+ 0x978a2de800000000, 0x9f694dd400000000, 0x874cec9000000000,
+ 0x8faf8cac00000000, 0xb706ae1900000000, 0xbfe5ce2500000000,
+ 0xa7c06f6100000000, 0xaf230f5d00000000, 0x94a8b7a000000000,
+ 0x9c4bd79c00000000, 0x846e76d800000000, 0x8c8d16e400000000,
+ 0xb424345100000000, 0xbcc7546d00000000, 0xa4e2f52900000000,
+ 0xac01951500000000, 0x95b6c19800000000, 0x9d55a1a400000000,
+ 0x857000e000000000, 0x8d9360dc00000000, 0xb53a426900000000,
+ 0xbdd9225500000000, 0xa5fc831100000000, 0xad1fe32d00000000,
+ 0xdb1a422900000000, 0xd3f9221500000000, 0xcbdc835100000000,
+ 0xc33fe36d00000000, 0xfb96c1d800000000, 0xf375a1e400000000,
+ 0xeb5000a000000000, 0xe3b3609c00000000, 0xda04341100000000,
+ 0xd2e7542d00000000, 0xcac2f56900000000, 0xc221955500000000,
+ 0xfa88b7e000000000, 0xf26bd7dc00000000, 0xea4e769800000000,
+ 0xe2ad16a400000000, 0xd926ae5900000000, 0xd1c5ce6500000000,
+ 0xc9e06f2100000000, 0xc1030f1d00000000, 0xf9aa2da800000000,
+ 0xf1494d9400000000, 0xe96cecd000000000, 0xe18f8cec00000000,
+ 0xd838d86100000000, 0xd0dbb85d00000000, 0xc8fe191900000000,
+ 0xc01d792500000000, 0xf8b45b9000000000, 0xf0573bac00000000,
+ 0xe8729ae800000000, 0xe091fad400000000, 0xdf629ac800000000,
+ 0xd781faf400000000, 0xcfa45bb000000000, 0xc7473b8c00000000,
+ 0xffee193900000000, 0xf70d790500000000, 0xef28d84100000000,
+ 0xe7cbb87d00000000, 0xde7cecf000000000, 0xd69f8ccc00000000,
+ 0xceba2d8800000000, 0xc6594db400000000, 0xfef06f0100000000,
+ 0xf6130f3d00000000, 0xee36ae7900000000, 0xe6d5ce4500000000,
+ 0xdd5e76b800000000, 0xd5bd168400000000, 0xcd98b7c000000000,
+ 0xc57bd7fc00000000, 0xfdd2f54900000000, 0xf531957500000000,
+ 0xed14343100000000, 0xe5f7540d00000000, 0xdc40008000000000,
+ 0xd4a360bc00000000, 0xcc86c1f800000000, 0xc465a1c400000000,
+ 0xfccc837100000000, 0xf42fe34d00000000, 0xec0a420900000000,
+ 0xe4e9223500000000},
+ {0x0000000000000000, 0xd1e8e70e00000000, 0xa2d1cf1d00000000,
+ 0x7339281300000000, 0x44a39f3b00000000, 0x954b783500000000,
+ 0xe672502600000000, 0x379ab72800000000, 0x88463f7700000000,
+ 0x59aed87900000000, 0x2a97f06a00000000, 0xfb7f176400000000,
+ 0xcce5a04c00000000, 0x1d0d474200000000, 0x6e346f5100000000,
+ 0xbfdc885f00000000, 0x108d7eee00000000, 0xc16599e000000000,
+ 0xb25cb1f300000000, 0x63b456fd00000000, 0x542ee1d500000000,
+ 0x85c606db00000000, 0xf6ff2ec800000000, 0x2717c9c600000000,
+ 0x98cb419900000000, 0x4923a69700000000, 0x3a1a8e8400000000,
+ 0xebf2698a00000000, 0xdc68dea200000000, 0x0d8039ac00000000,
+ 0x7eb911bf00000000, 0xaf51f6b100000000, 0x611c8c0700000000,
+ 0xb0f46b0900000000, 0xc3cd431a00000000, 0x1225a41400000000,
+ 0x25bf133c00000000, 0xf457f43200000000, 0x876edc2100000000,
+ 0x56863b2f00000000, 0xe95ab37000000000, 0x38b2547e00000000,
+ 0x4b8b7c6d00000000, 0x9a639b6300000000, 0xadf92c4b00000000,
+ 0x7c11cb4500000000, 0x0f28e35600000000, 0xdec0045800000000,
+ 0x7191f2e900000000, 0xa07915e700000000, 0xd3403df400000000,
+ 0x02a8dafa00000000, 0x35326dd200000000, 0xe4da8adc00000000,
+ 0x97e3a2cf00000000, 0x460b45c100000000, 0xf9d7cd9e00000000,
+ 0x283f2a9000000000, 0x5b06028300000000, 0x8aeee58d00000000,
+ 0xbd7452a500000000, 0x6c9cb5ab00000000, 0x1fa59db800000000,
+ 0xce4d7ab600000000, 0xc238180f00000000, 0x13d0ff0100000000,
+ 0x60e9d71200000000, 0xb101301c00000000, 0x869b873400000000,
+ 0x5773603a00000000, 0x244a482900000000, 0xf5a2af2700000000,
+ 0x4a7e277800000000, 0x9b96c07600000000, 0xe8afe86500000000,
+ 0x39470f6b00000000, 0x0eddb84300000000, 0xdf355f4d00000000,
+ 0xac0c775e00000000, 0x7de4905000000000, 0xd2b566e100000000,
+ 0x035d81ef00000000, 0x7064a9fc00000000, 0xa18c4ef200000000,
+ 0x9616f9da00000000, 0x47fe1ed400000000, 0x34c736c700000000,
+ 0xe52fd1c900000000, 0x5af3599600000000, 0x8b1bbe9800000000,
+ 0xf822968b00000000, 0x29ca718500000000, 0x1e50c6ad00000000,
+ 0xcfb821a300000000, 0xbc8109b000000000, 0x6d69eebe00000000,
+ 0xa324940800000000, 0x72cc730600000000, 0x01f55b1500000000,
+ 0xd01dbc1b00000000, 0xe7870b3300000000, 0x366fec3d00000000,
+ 0x4556c42e00000000, 0x94be232000000000, 0x2b62ab7f00000000,
+ 0xfa8a4c7100000000, 0x89b3646200000000, 0x585b836c00000000,
+ 0x6fc1344400000000, 0xbe29d34a00000000, 0xcd10fb5900000000,
+ 0x1cf81c5700000000, 0xb3a9eae600000000, 0x62410de800000000,
+ 0x117825fb00000000, 0xc090c2f500000000, 0xf70a75dd00000000,
+ 0x26e292d300000000, 0x55dbbac000000000, 0x84335dce00000000,
+ 0x3befd59100000000, 0xea07329f00000000, 0x993e1a8c00000000,
+ 0x48d6fd8200000000, 0x7f4c4aaa00000000, 0xaea4ada400000000,
+ 0xdd9d85b700000000, 0x0c7562b900000000, 0x8471301e00000000,
+ 0x5599d71000000000, 0x26a0ff0300000000, 0xf748180d00000000,
+ 0xc0d2af2500000000, 0x113a482b00000000, 0x6203603800000000,
+ 0xb3eb873600000000, 0x0c370f6900000000, 0xdddfe86700000000,
+ 0xaee6c07400000000, 0x7f0e277a00000000, 0x4894905200000000,
+ 0x997c775c00000000, 0xea455f4f00000000, 0x3badb84100000000,
+ 0x94fc4ef000000000, 0x4514a9fe00000000, 0x362d81ed00000000,
+ 0xe7c566e300000000, 0xd05fd1cb00000000, 0x01b736c500000000,
+ 0x728e1ed600000000, 0xa366f9d800000000, 0x1cba718700000000,
+ 0xcd52968900000000, 0xbe6bbe9a00000000, 0x6f83599400000000,
+ 0x5819eebc00000000, 0x89f109b200000000, 0xfac821a100000000,
+ 0x2b20c6af00000000, 0xe56dbc1900000000, 0x34855b1700000000,
+ 0x47bc730400000000, 0x9654940a00000000, 0xa1ce232200000000,
+ 0x7026c42c00000000, 0x031fec3f00000000, 0xd2f70b3100000000,
+ 0x6d2b836e00000000, 0xbcc3646000000000, 0xcffa4c7300000000,
+ 0x1e12ab7d00000000, 0x29881c5500000000, 0xf860fb5b00000000,
+ 0x8b59d34800000000, 0x5ab1344600000000, 0xf5e0c2f700000000,
+ 0x240825f900000000, 0x57310dea00000000, 0x86d9eae400000000,
+ 0xb1435dcc00000000, 0x60abbac200000000, 0x139292d100000000,
+ 0xc27a75df00000000, 0x7da6fd8000000000, 0xac4e1a8e00000000,
+ 0xdf77329d00000000, 0x0e9fd59300000000, 0x390562bb00000000,
+ 0xe8ed85b500000000, 0x9bd4ada600000000, 0x4a3c4aa800000000,
+ 0x4649281100000000, 0x97a1cf1f00000000, 0xe498e70c00000000,
+ 0x3570000200000000, 0x02eab72a00000000, 0xd302502400000000,
+ 0xa03b783700000000, 0x71d39f3900000000, 0xce0f176600000000,
+ 0x1fe7f06800000000, 0x6cded87b00000000, 0xbd363f7500000000,
+ 0x8aac885d00000000, 0x5b446f5300000000, 0x287d474000000000,
+ 0xf995a04e00000000, 0x56c456ff00000000, 0x872cb1f100000000,
+ 0xf41599e200000000, 0x25fd7eec00000000, 0x1267c9c400000000,
+ 0xc38f2eca00000000, 0xb0b606d900000000, 0x615ee1d700000000,
+ 0xde82698800000000, 0x0f6a8e8600000000, 0x7c53a69500000000,
+ 0xadbb419b00000000, 0x9a21f6b300000000, 0x4bc911bd00000000,
+ 0x38f039ae00000000, 0xe918dea000000000, 0x2755a41600000000,
+ 0xf6bd431800000000, 0x85846b0b00000000, 0x546c8c0500000000,
+ 0x63f63b2d00000000, 0xb21edc2300000000, 0xc127f43000000000,
+ 0x10cf133e00000000, 0xaf139b6100000000, 0x7efb7c6f00000000,
+ 0x0dc2547c00000000, 0xdc2ab37200000000, 0xebb0045a00000000,
+ 0x3a58e35400000000, 0x4961cb4700000000, 0x98892c4900000000,
+ 0x37d8daf800000000, 0xe6303df600000000, 0x950915e500000000,
+ 0x44e1f2eb00000000, 0x737b45c300000000, 0xa293a2cd00000000,
+ 0xd1aa8ade00000000, 0x00426dd000000000, 0xbf9ee58f00000000,
+ 0x6e76028100000000, 0x1d4f2a9200000000, 0xcca7cd9c00000000,
+ 0xfb3d7ab400000000, 0x2ad59dba00000000, 0x59ecb5a900000000,
+ 0x880452a700000000},
+ {0x0000000000000000, 0xaa05daf100000000, 0x150dc53800000000,
+ 0xbf081fc900000000, 0x2a1a8a7100000000, 0x801f508000000000,
+ 0x3f174f4900000000, 0x951295b800000000, 0x543414e300000000,
+ 0xfe31ce1200000000, 0x4139d1db00000000, 0xeb3c0b2a00000000,
+ 0x7e2e9e9200000000, 0xd42b446300000000, 0x6b235baa00000000,
+ 0xc126815b00000000, 0xe96e591d00000000, 0x436b83ec00000000,
+ 0xfc639c2500000000, 0x566646d400000000, 0xc374d36c00000000,
+ 0x6971099d00000000, 0xd679165400000000, 0x7c7ccca500000000,
+ 0xbd5a4dfe00000000, 0x175f970f00000000, 0xa85788c600000000,
+ 0x0252523700000000, 0x9740c78f00000000, 0x3d451d7e00000000,
+ 0x824d02b700000000, 0x2848d84600000000, 0xd2ddb23a00000000,
+ 0x78d868cb00000000, 0xc7d0770200000000, 0x6dd5adf300000000,
+ 0xf8c7384b00000000, 0x52c2e2ba00000000, 0xedcafd7300000000,
+ 0x47cf278200000000, 0x86e9a6d900000000, 0x2cec7c2800000000,
+ 0x93e463e100000000, 0x39e1b91000000000, 0xacf32ca800000000,
+ 0x06f6f65900000000, 0xb9fee99000000000, 0x13fb336100000000,
+ 0x3bb3eb2700000000, 0x91b631d600000000, 0x2ebe2e1f00000000,
+ 0x84bbf4ee00000000, 0x11a9615600000000, 0xbbacbba700000000,
+ 0x04a4a46e00000000, 0xaea17e9f00000000, 0x6f87ffc400000000,
+ 0xc582253500000000, 0x7a8a3afc00000000, 0xd08fe00d00000000,
+ 0x459d75b500000000, 0xef98af4400000000, 0x5090b08d00000000,
+ 0xfa956a7c00000000, 0xa4bb657500000000, 0x0ebebf8400000000,
+ 0xb1b6a04d00000000, 0x1bb37abc00000000, 0x8ea1ef0400000000,
+ 0x24a435f500000000, 0x9bac2a3c00000000, 0x31a9f0cd00000000,
+ 0xf08f719600000000, 0x5a8aab6700000000, 0xe582b4ae00000000,
+ 0x4f876e5f00000000, 0xda95fbe700000000, 0x7090211600000000,
+ 0xcf983edf00000000, 0x659de42e00000000, 0x4dd53c6800000000,
+ 0xe7d0e69900000000, 0x58d8f95000000000, 0xf2dd23a100000000,
+ 0x67cfb61900000000, 0xcdca6ce800000000, 0x72c2732100000000,
+ 0xd8c7a9d000000000, 0x19e1288b00000000, 0xb3e4f27a00000000,
+ 0x0cecedb300000000, 0xa6e9374200000000, 0x33fba2fa00000000,
+ 0x99fe780b00000000, 0x26f667c200000000, 0x8cf3bd3300000000,
+ 0x7666d74f00000000, 0xdc630dbe00000000, 0x636b127700000000,
+ 0xc96ec88600000000, 0x5c7c5d3e00000000, 0xf67987cf00000000,
+ 0x4971980600000000, 0xe37442f700000000, 0x2252c3ac00000000,
+ 0x8857195d00000000, 0x375f069400000000, 0x9d5adc6500000000,
+ 0x084849dd00000000, 0xa24d932c00000000, 0x1d458ce500000000,
+ 0xb740561400000000, 0x9f088e5200000000, 0x350d54a300000000,
+ 0x8a054b6a00000000, 0x2000919b00000000, 0xb512042300000000,
+ 0x1f17ded200000000, 0xa01fc11b00000000, 0x0a1a1bea00000000,
+ 0xcb3c9ab100000000, 0x6139404000000000, 0xde315f8900000000,
+ 0x7434857800000000, 0xe12610c000000000, 0x4b23ca3100000000,
+ 0xf42bd5f800000000, 0x5e2e0f0900000000, 0x4877cbea00000000,
+ 0xe272111b00000000, 0x5d7a0ed200000000, 0xf77fd42300000000,
+ 0x626d419b00000000, 0xc8689b6a00000000, 0x776084a300000000,
+ 0xdd655e5200000000, 0x1c43df0900000000, 0xb64605f800000000,
+ 0x094e1a3100000000, 0xa34bc0c000000000, 0x3659557800000000,
+ 0x9c5c8f8900000000, 0x2354904000000000, 0x89514ab100000000,
+ 0xa11992f700000000, 0x0b1c480600000000, 0xb41457cf00000000,
+ 0x1e118d3e00000000, 0x8b03188600000000, 0x2106c27700000000,
+ 0x9e0eddbe00000000, 0x340b074f00000000, 0xf52d861400000000,
+ 0x5f285ce500000000, 0xe020432c00000000, 0x4a2599dd00000000,
+ 0xdf370c6500000000, 0x7532d69400000000, 0xca3ac95d00000000,
+ 0x603f13ac00000000, 0x9aaa79d000000000, 0x30afa32100000000,
+ 0x8fa7bce800000000, 0x25a2661900000000, 0xb0b0f3a100000000,
+ 0x1ab5295000000000, 0xa5bd369900000000, 0x0fb8ec6800000000,
+ 0xce9e6d3300000000, 0x649bb7c200000000, 0xdb93a80b00000000,
+ 0x719672fa00000000, 0xe484e74200000000, 0x4e813db300000000,
+ 0xf189227a00000000, 0x5b8cf88b00000000, 0x73c420cd00000000,
+ 0xd9c1fa3c00000000, 0x66c9e5f500000000, 0xcccc3f0400000000,
+ 0x59deaabc00000000, 0xf3db704d00000000, 0x4cd36f8400000000,
+ 0xe6d6b57500000000, 0x27f0342e00000000, 0x8df5eedf00000000,
+ 0x32fdf11600000000, 0x98f82be700000000, 0x0deabe5f00000000,
+ 0xa7ef64ae00000000, 0x18e77b6700000000, 0xb2e2a19600000000,
+ 0xecccae9f00000000, 0x46c9746e00000000, 0xf9c16ba700000000,
+ 0x53c4b15600000000, 0xc6d624ee00000000, 0x6cd3fe1f00000000,
+ 0xd3dbe1d600000000, 0x79de3b2700000000, 0xb8f8ba7c00000000,
+ 0x12fd608d00000000, 0xadf57f4400000000, 0x07f0a5b500000000,
+ 0x92e2300d00000000, 0x38e7eafc00000000, 0x87eff53500000000,
+ 0x2dea2fc400000000, 0x05a2f78200000000, 0xafa72d7300000000,
+ 0x10af32ba00000000, 0xbaaae84b00000000, 0x2fb87df300000000,
+ 0x85bda70200000000, 0x3ab5b8cb00000000, 0x90b0623a00000000,
+ 0x5196e36100000000, 0xfb93399000000000, 0x449b265900000000,
+ 0xee9efca800000000, 0x7b8c691000000000, 0xd189b3e100000000,
+ 0x6e81ac2800000000, 0xc48476d900000000, 0x3e111ca500000000,
+ 0x9414c65400000000, 0x2b1cd99d00000000, 0x8119036c00000000,
+ 0x140b96d400000000, 0xbe0e4c2500000000, 0x010653ec00000000,
+ 0xab03891d00000000, 0x6a25084600000000, 0xc020d2b700000000,
+ 0x7f28cd7e00000000, 0xd52d178f00000000, 0x403f823700000000,
+ 0xea3a58c600000000, 0x5532470f00000000, 0xff379dfe00000000,
+ 0xd77f45b800000000, 0x7d7a9f4900000000, 0xc272808000000000,
+ 0x68775a7100000000, 0xfd65cfc900000000, 0x5760153800000000,
+ 0xe8680af100000000, 0x426dd00000000000, 0x834b515b00000000,
+ 0x294e8baa00000000, 0x9646946300000000, 0x3c434e9200000000,
+ 0xa951db2a00000000, 0x035401db00000000, 0xbc5c1e1200000000,
+ 0x1659c4e300000000}};
+
+#else /* W == 4 */
+
+local const z_crc_t FAR crc_braid_table[][256] = {
+ {0x00000000, 0xae689191, 0x87a02563, 0x29c8b4f2, 0xd4314c87,
+ 0x7a59dd16, 0x539169e4, 0xfdf9f875, 0x73139f4f, 0xdd7b0ede,
+ 0xf4b3ba2c, 0x5adb2bbd, 0xa722d3c8, 0x094a4259, 0x2082f6ab,
+ 0x8eea673a, 0xe6273e9e, 0x484faf0f, 0x61871bfd, 0xcfef8a6c,
+ 0x32167219, 0x9c7ee388, 0xb5b6577a, 0x1bdec6eb, 0x9534a1d1,
+ 0x3b5c3040, 0x129484b2, 0xbcfc1523, 0x4105ed56, 0xef6d7cc7,
+ 0xc6a5c835, 0x68cd59a4, 0x173f7b7d, 0xb957eaec, 0x909f5e1e,
+ 0x3ef7cf8f, 0xc30e37fa, 0x6d66a66b, 0x44ae1299, 0xeac68308,
+ 0x642ce432, 0xca4475a3, 0xe38cc151, 0x4de450c0, 0xb01da8b5,
+ 0x1e753924, 0x37bd8dd6, 0x99d51c47, 0xf11845e3, 0x5f70d472,
+ 0x76b86080, 0xd8d0f111, 0x25290964, 0x8b4198f5, 0xa2892c07,
+ 0x0ce1bd96, 0x820bdaac, 0x2c634b3d, 0x05abffcf, 0xabc36e5e,
+ 0x563a962b, 0xf85207ba, 0xd19ab348, 0x7ff222d9, 0x2e7ef6fa,
+ 0x8016676b, 0xa9ded399, 0x07b64208, 0xfa4fba7d, 0x54272bec,
+ 0x7def9f1e, 0xd3870e8f, 0x5d6d69b5, 0xf305f824, 0xdacd4cd6,
+ 0x74a5dd47, 0x895c2532, 0x2734b4a3, 0x0efc0051, 0xa09491c0,
+ 0xc859c864, 0x663159f5, 0x4ff9ed07, 0xe1917c96, 0x1c6884e3,
+ 0xb2001572, 0x9bc8a180, 0x35a03011, 0xbb4a572b, 0x1522c6ba,
+ 0x3cea7248, 0x9282e3d9, 0x6f7b1bac, 0xc1138a3d, 0xe8db3ecf,
+ 0x46b3af5e, 0x39418d87, 0x97291c16, 0xbee1a8e4, 0x10893975,
+ 0xed70c100, 0x43185091, 0x6ad0e463, 0xc4b875f2, 0x4a5212c8,
+ 0xe43a8359, 0xcdf237ab, 0x639aa63a, 0x9e635e4f, 0x300bcfde,
+ 0x19c37b2c, 0xb7abeabd, 0xdf66b319, 0x710e2288, 0x58c6967a,
+ 0xf6ae07eb, 0x0b57ff9e, 0xa53f6e0f, 0x8cf7dafd, 0x229f4b6c,
+ 0xac752c56, 0x021dbdc7, 0x2bd50935, 0x85bd98a4, 0x784460d1,
+ 0xd62cf140, 0xffe445b2, 0x518cd423, 0x5cfdedf4, 0xf2957c65,
+ 0xdb5dc897, 0x75355906, 0x88cca173, 0x26a430e2, 0x0f6c8410,
+ 0xa1041581, 0x2fee72bb, 0x8186e32a, 0xa84e57d8, 0x0626c649,
+ 0xfbdf3e3c, 0x55b7afad, 0x7c7f1b5f, 0xd2178ace, 0xbadad36a,
+ 0x14b242fb, 0x3d7af609, 0x93126798, 0x6eeb9fed, 0xc0830e7c,
+ 0xe94bba8e, 0x47232b1f, 0xc9c94c25, 0x67a1ddb4, 0x4e696946,
+ 0xe001f8d7, 0x1df800a2, 0xb3909133, 0x9a5825c1, 0x3430b450,
+ 0x4bc29689, 0xe5aa0718, 0xcc62b3ea, 0x620a227b, 0x9ff3da0e,
+ 0x319b4b9f, 0x1853ff6d, 0xb63b6efc, 0x38d109c6, 0x96b99857,
+ 0xbf712ca5, 0x1119bd34, 0xece04541, 0x4288d4d0, 0x6b406022,
+ 0xc528f1b3, 0xade5a817, 0x038d3986, 0x2a458d74, 0x842d1ce5,
+ 0x79d4e490, 0xd7bc7501, 0xfe74c1f3, 0x501c5062, 0xdef63758,
+ 0x709ea6c9, 0x5956123b, 0xf73e83aa, 0x0ac77bdf, 0xa4afea4e,
+ 0x8d675ebc, 0x230fcf2d, 0x72831b0e, 0xdceb8a9f, 0xf5233e6d,
+ 0x5b4baffc, 0xa6b25789, 0x08dac618, 0x211272ea, 0x8f7ae37b,
+ 0x01908441, 0xaff815d0, 0x8630a122, 0x285830b3, 0xd5a1c8c6,
+ 0x7bc95957, 0x5201eda5, 0xfc697c34, 0x94a42590, 0x3accb401,
+ 0x130400f3, 0xbd6c9162, 0x40956917, 0xeefdf886, 0xc7354c74,
+ 0x695ddde5, 0xe7b7badf, 0x49df2b4e, 0x60179fbc, 0xce7f0e2d,
+ 0x3386f658, 0x9dee67c9, 0xb426d33b, 0x1a4e42aa, 0x65bc6073,
+ 0xcbd4f1e2, 0xe21c4510, 0x4c74d481, 0xb18d2cf4, 0x1fe5bd65,
+ 0x362d0997, 0x98459806, 0x16afff3c, 0xb8c76ead, 0x910fda5f,
+ 0x3f674bce, 0xc29eb3bb, 0x6cf6222a, 0x453e96d8, 0xeb560749,
+ 0x839b5eed, 0x2df3cf7c, 0x043b7b8e, 0xaa53ea1f, 0x57aa126a,
+ 0xf9c283fb, 0xd00a3709, 0x7e62a698, 0xf088c1a2, 0x5ee05033,
+ 0x7728e4c1, 0xd9407550, 0x24b98d25, 0x8ad11cb4, 0xa319a846,
+ 0x0d7139d7},
+ {0x00000000, 0xb9fbdbe8, 0xa886b191, 0x117d6a79, 0x8a7c6563,
+ 0x3387be8b, 0x22fad4f2, 0x9b010f1a, 0xcf89cc87, 0x7672176f,
+ 0x670f7d16, 0xdef4a6fe, 0x45f5a9e4, 0xfc0e720c, 0xed731875,
+ 0x5488c39d, 0x44629f4f, 0xfd9944a7, 0xece42ede, 0x551ff536,
+ 0xce1efa2c, 0x77e521c4, 0x66984bbd, 0xdf639055, 0x8beb53c8,
+ 0x32108820, 0x236de259, 0x9a9639b1, 0x019736ab, 0xb86ced43,
+ 0xa911873a, 0x10ea5cd2, 0x88c53e9e, 0x313ee576, 0x20438f0f,
+ 0x99b854e7, 0x02b95bfd, 0xbb428015, 0xaa3fea6c, 0x13c43184,
+ 0x474cf219, 0xfeb729f1, 0xefca4388, 0x56319860, 0xcd30977a,
+ 0x74cb4c92, 0x65b626eb, 0xdc4dfd03, 0xcca7a1d1, 0x755c7a39,
+ 0x64211040, 0xdddacba8, 0x46dbc4b2, 0xff201f5a, 0xee5d7523,
+ 0x57a6aecb, 0x032e6d56, 0xbad5b6be, 0xaba8dcc7, 0x1253072f,
+ 0x89520835, 0x30a9d3dd, 0x21d4b9a4, 0x982f624c, 0xcafb7b7d,
+ 0x7300a095, 0x627dcaec, 0xdb861104, 0x40871e1e, 0xf97cc5f6,
+ 0xe801af8f, 0x51fa7467, 0x0572b7fa, 0xbc896c12, 0xadf4066b,
+ 0x140fdd83, 0x8f0ed299, 0x36f50971, 0x27886308, 0x9e73b8e0,
+ 0x8e99e432, 0x37623fda, 0x261f55a3, 0x9fe48e4b, 0x04e58151,
+ 0xbd1e5ab9, 0xac6330c0, 0x1598eb28, 0x411028b5, 0xf8ebf35d,
+ 0xe9969924, 0x506d42cc, 0xcb6c4dd6, 0x7297963e, 0x63eafc47,
+ 0xda1127af, 0x423e45e3, 0xfbc59e0b, 0xeab8f472, 0x53432f9a,
+ 0xc8422080, 0x71b9fb68, 0x60c49111, 0xd93f4af9, 0x8db78964,
+ 0x344c528c, 0x253138f5, 0x9ccae31d, 0x07cbec07, 0xbe3037ef,
+ 0xaf4d5d96, 0x16b6867e, 0x065cdaac, 0xbfa70144, 0xaeda6b3d,
+ 0x1721b0d5, 0x8c20bfcf, 0x35db6427, 0x24a60e5e, 0x9d5dd5b6,
+ 0xc9d5162b, 0x702ecdc3, 0x6153a7ba, 0xd8a87c52, 0x43a97348,
+ 0xfa52a8a0, 0xeb2fc2d9, 0x52d41931, 0x4e87f0bb, 0xf77c2b53,
+ 0xe601412a, 0x5ffa9ac2, 0xc4fb95d8, 0x7d004e30, 0x6c7d2449,
+ 0xd586ffa1, 0x810e3c3c, 0x38f5e7d4, 0x29888dad, 0x90735645,
+ 0x0b72595f, 0xb28982b7, 0xa3f4e8ce, 0x1a0f3326, 0x0ae56ff4,
+ 0xb31eb41c, 0xa263de65, 0x1b98058d, 0x80990a97, 0x3962d17f,
+ 0x281fbb06, 0x91e460ee, 0xc56ca373, 0x7c97789b, 0x6dea12e2,
+ 0xd411c90a, 0x4f10c610, 0xf6eb1df8, 0xe7967781, 0x5e6dac69,
+ 0xc642ce25, 0x7fb915cd, 0x6ec47fb4, 0xd73fa45c, 0x4c3eab46,
+ 0xf5c570ae, 0xe4b81ad7, 0x5d43c13f, 0x09cb02a2, 0xb030d94a,
+ 0xa14db333, 0x18b668db, 0x83b767c1, 0x3a4cbc29, 0x2b31d650,
+ 0x92ca0db8, 0x8220516a, 0x3bdb8a82, 0x2aa6e0fb, 0x935d3b13,
+ 0x085c3409, 0xb1a7efe1, 0xa0da8598, 0x19215e70, 0x4da99ded,
+ 0xf4524605, 0xe52f2c7c, 0x5cd4f794, 0xc7d5f88e, 0x7e2e2366,
+ 0x6f53491f, 0xd6a892f7, 0x847c8bc6, 0x3d87502e, 0x2cfa3a57,
+ 0x9501e1bf, 0x0e00eea5, 0xb7fb354d, 0xa6865f34, 0x1f7d84dc,
+ 0x4bf54741, 0xf20e9ca9, 0xe373f6d0, 0x5a882d38, 0xc1892222,
+ 0x7872f9ca, 0x690f93b3, 0xd0f4485b, 0xc01e1489, 0x79e5cf61,
+ 0x6898a518, 0xd1637ef0, 0x4a6271ea, 0xf399aa02, 0xe2e4c07b,
+ 0x5b1f1b93, 0x0f97d80e, 0xb66c03e6, 0xa711699f, 0x1eeab277,
+ 0x85ebbd6d, 0x3c106685, 0x2d6d0cfc, 0x9496d714, 0x0cb9b558,
+ 0xb5426eb0, 0xa43f04c9, 0x1dc4df21, 0x86c5d03b, 0x3f3e0bd3,
+ 0x2e4361aa, 0x97b8ba42, 0xc33079df, 0x7acba237, 0x6bb6c84e,
+ 0xd24d13a6, 0x494c1cbc, 0xf0b7c754, 0xe1caad2d, 0x583176c5,
+ 0x48db2a17, 0xf120f1ff, 0xe05d9b86, 0x59a6406e, 0xc2a74f74,
+ 0x7b5c949c, 0x6a21fee5, 0xd3da250d, 0x8752e690, 0x3ea93d78,
+ 0x2fd45701, 0x962f8ce9, 0x0d2e83f3, 0xb4d5581b, 0xa5a83262,
+ 0x1c53e98a},
+ {0x00000000, 0x9d0fe176, 0xe16ec4ad, 0x7c6125db, 0x19ac8f1b,
+ 0x84a36e6d, 0xf8c24bb6, 0x65cdaac0, 0x33591e36, 0xae56ff40,
+ 0xd237da9b, 0x4f383bed, 0x2af5912d, 0xb7fa705b, 0xcb9b5580,
+ 0x5694b4f6, 0x66b23c6c, 0xfbbddd1a, 0x87dcf8c1, 0x1ad319b7,
+ 0x7f1eb377, 0xe2115201, 0x9e7077da, 0x037f96ac, 0x55eb225a,
+ 0xc8e4c32c, 0xb485e6f7, 0x298a0781, 0x4c47ad41, 0xd1484c37,
+ 0xad2969ec, 0x3026889a, 0xcd6478d8, 0x506b99ae, 0x2c0abc75,
+ 0xb1055d03, 0xd4c8f7c3, 0x49c716b5, 0x35a6336e, 0xa8a9d218,
+ 0xfe3d66ee, 0x63328798, 0x1f53a243, 0x825c4335, 0xe791e9f5,
+ 0x7a9e0883, 0x06ff2d58, 0x9bf0cc2e, 0xabd644b4, 0x36d9a5c2,
+ 0x4ab88019, 0xd7b7616f, 0xb27acbaf, 0x2f752ad9, 0x53140f02,
+ 0xce1bee74, 0x988f5a82, 0x0580bbf4, 0x79e19e2f, 0xe4ee7f59,
+ 0x8123d599, 0x1c2c34ef, 0x604d1134, 0xfd42f042, 0x41b9f7f1,
+ 0xdcb61687, 0xa0d7335c, 0x3dd8d22a, 0x581578ea, 0xc51a999c,
+ 0xb97bbc47, 0x24745d31, 0x72e0e9c7, 0xefef08b1, 0x938e2d6a,
+ 0x0e81cc1c, 0x6b4c66dc, 0xf64387aa, 0x8a22a271, 0x172d4307,
+ 0x270bcb9d, 0xba042aeb, 0xc6650f30, 0x5b6aee46, 0x3ea74486,
+ 0xa3a8a5f0, 0xdfc9802b, 0x42c6615d, 0x1452d5ab, 0x895d34dd,
+ 0xf53c1106, 0x6833f070, 0x0dfe5ab0, 0x90f1bbc6, 0xec909e1d,
+ 0x719f7f6b, 0x8cdd8f29, 0x11d26e5f, 0x6db34b84, 0xf0bcaaf2,
+ 0x95710032, 0x087ee144, 0x741fc49f, 0xe91025e9, 0xbf84911f,
+ 0x228b7069, 0x5eea55b2, 0xc3e5b4c4, 0xa6281e04, 0x3b27ff72,
+ 0x4746daa9, 0xda493bdf, 0xea6fb345, 0x77605233, 0x0b0177e8,
+ 0x960e969e, 0xf3c33c5e, 0x6eccdd28, 0x12adf8f3, 0x8fa21985,
+ 0xd936ad73, 0x44394c05, 0x385869de, 0xa55788a8, 0xc09a2268,
+ 0x5d95c31e, 0x21f4e6c5, 0xbcfb07b3, 0x8373efe2, 0x1e7c0e94,
+ 0x621d2b4f, 0xff12ca39, 0x9adf60f9, 0x07d0818f, 0x7bb1a454,
+ 0xe6be4522, 0xb02af1d4, 0x2d2510a2, 0x51443579, 0xcc4bd40f,
+ 0xa9867ecf, 0x34899fb9, 0x48e8ba62, 0xd5e75b14, 0xe5c1d38e,
+ 0x78ce32f8, 0x04af1723, 0x99a0f655, 0xfc6d5c95, 0x6162bde3,
+ 0x1d039838, 0x800c794e, 0xd698cdb8, 0x4b972cce, 0x37f60915,
+ 0xaaf9e863, 0xcf3442a3, 0x523ba3d5, 0x2e5a860e, 0xb3556778,
+ 0x4e17973a, 0xd318764c, 0xaf795397, 0x3276b2e1, 0x57bb1821,
+ 0xcab4f957, 0xb6d5dc8c, 0x2bda3dfa, 0x7d4e890c, 0xe041687a,
+ 0x9c204da1, 0x012facd7, 0x64e20617, 0xf9ede761, 0x858cc2ba,
+ 0x188323cc, 0x28a5ab56, 0xb5aa4a20, 0xc9cb6ffb, 0x54c48e8d,
+ 0x3109244d, 0xac06c53b, 0xd067e0e0, 0x4d680196, 0x1bfcb560,
+ 0x86f35416, 0xfa9271cd, 0x679d90bb, 0x02503a7b, 0x9f5fdb0d,
+ 0xe33efed6, 0x7e311fa0, 0xc2ca1813, 0x5fc5f965, 0x23a4dcbe,
+ 0xbeab3dc8, 0xdb669708, 0x4669767e, 0x3a0853a5, 0xa707b2d3,
+ 0xf1930625, 0x6c9ce753, 0x10fdc288, 0x8df223fe, 0xe83f893e,
+ 0x75306848, 0x09514d93, 0x945eace5, 0xa478247f, 0x3977c509,
+ 0x4516e0d2, 0xd81901a4, 0xbdd4ab64, 0x20db4a12, 0x5cba6fc9,
+ 0xc1b58ebf, 0x97213a49, 0x0a2edb3f, 0x764ffee4, 0xeb401f92,
+ 0x8e8db552, 0x13825424, 0x6fe371ff, 0xf2ec9089, 0x0fae60cb,
+ 0x92a181bd, 0xeec0a466, 0x73cf4510, 0x1602efd0, 0x8b0d0ea6,
+ 0xf76c2b7d, 0x6a63ca0b, 0x3cf77efd, 0xa1f89f8b, 0xdd99ba50,
+ 0x40965b26, 0x255bf1e6, 0xb8541090, 0xc435354b, 0x593ad43d,
+ 0x691c5ca7, 0xf413bdd1, 0x8872980a, 0x157d797c, 0x70b0d3bc,
+ 0xedbf32ca, 0x91de1711, 0x0cd1f667, 0x5a454291, 0xc74aa3e7,
+ 0xbb2b863c, 0x2624674a, 0x43e9cd8a, 0xdee62cfc, 0xa2870927,
+ 0x3f88e851},
+ {0x00000000, 0xdd96d985, 0x605cb54b, 0xbdca6cce, 0xc0b96a96,
+ 0x1d2fb313, 0xa0e5dfdd, 0x7d730658, 0x5a03d36d, 0x87950ae8,
+ 0x3a5f6626, 0xe7c9bfa3, 0x9abab9fb, 0x472c607e, 0xfae60cb0,
+ 0x2770d535, 0xb407a6da, 0x69917f5f, 0xd45b1391, 0x09cdca14,
+ 0x74becc4c, 0xa92815c9, 0x14e27907, 0xc974a082, 0xee0475b7,
+ 0x3392ac32, 0x8e58c0fc, 0x53ce1979, 0x2ebd1f21, 0xf32bc6a4,
+ 0x4ee1aa6a, 0x937773ef, 0xb37e4bf5, 0x6ee89270, 0xd322febe,
+ 0x0eb4273b, 0x73c72163, 0xae51f8e6, 0x139b9428, 0xce0d4dad,
+ 0xe97d9898, 0x34eb411d, 0x89212dd3, 0x54b7f456, 0x29c4f20e,
+ 0xf4522b8b, 0x49984745, 0x940e9ec0, 0x0779ed2f, 0xdaef34aa,
+ 0x67255864, 0xbab381e1, 0xc7c087b9, 0x1a565e3c, 0xa79c32f2,
+ 0x7a0aeb77, 0x5d7a3e42, 0x80ece7c7, 0x3d268b09, 0xe0b0528c,
+ 0x9dc354d4, 0x40558d51, 0xfd9fe19f, 0x2009381a, 0xbd8d91ab,
+ 0x601b482e, 0xddd124e0, 0x0047fd65, 0x7d34fb3d, 0xa0a222b8,
+ 0x1d684e76, 0xc0fe97f3, 0xe78e42c6, 0x3a189b43, 0x87d2f78d,
+ 0x5a442e08, 0x27372850, 0xfaa1f1d5, 0x476b9d1b, 0x9afd449e,
+ 0x098a3771, 0xd41ceef4, 0x69d6823a, 0xb4405bbf, 0xc9335de7,
+ 0x14a58462, 0xa96fe8ac, 0x74f93129, 0x5389e41c, 0x8e1f3d99,
+ 0x33d55157, 0xee4388d2, 0x93308e8a, 0x4ea6570f, 0xf36c3bc1,
+ 0x2efae244, 0x0ef3da5e, 0xd36503db, 0x6eaf6f15, 0xb339b690,
+ 0xce4ab0c8, 0x13dc694d, 0xae160583, 0x7380dc06, 0x54f00933,
+ 0x8966d0b6, 0x34acbc78, 0xe93a65fd, 0x944963a5, 0x49dfba20,
+ 0xf415d6ee, 0x29830f6b, 0xbaf47c84, 0x6762a501, 0xdaa8c9cf,
+ 0x073e104a, 0x7a4d1612, 0xa7dbcf97, 0x1a11a359, 0xc7877adc,
+ 0xe0f7afe9, 0x3d61766c, 0x80ab1aa2, 0x5d3dc327, 0x204ec57f,
+ 0xfdd81cfa, 0x40127034, 0x9d84a9b1, 0xa06a2517, 0x7dfcfc92,
+ 0xc036905c, 0x1da049d9, 0x60d34f81, 0xbd459604, 0x008ffaca,
+ 0xdd19234f, 0xfa69f67a, 0x27ff2fff, 0x9a354331, 0x47a39ab4,
+ 0x3ad09cec, 0xe7464569, 0x5a8c29a7, 0x871af022, 0x146d83cd,
+ 0xc9fb5a48, 0x74313686, 0xa9a7ef03, 0xd4d4e95b, 0x094230de,
+ 0xb4885c10, 0x691e8595, 0x4e6e50a0, 0x93f88925, 0x2e32e5eb,
+ 0xf3a43c6e, 0x8ed73a36, 0x5341e3b3, 0xee8b8f7d, 0x331d56f8,
+ 0x13146ee2, 0xce82b767, 0x7348dba9, 0xaede022c, 0xd3ad0474,
+ 0x0e3bddf1, 0xb3f1b13f, 0x6e6768ba, 0x4917bd8f, 0x9481640a,
+ 0x294b08c4, 0xf4ddd141, 0x89aed719, 0x54380e9c, 0xe9f26252,
+ 0x3464bbd7, 0xa713c838, 0x7a8511bd, 0xc74f7d73, 0x1ad9a4f6,
+ 0x67aaa2ae, 0xba3c7b2b, 0x07f617e5, 0xda60ce60, 0xfd101b55,
+ 0x2086c2d0, 0x9d4cae1e, 0x40da779b, 0x3da971c3, 0xe03fa846,
+ 0x5df5c488, 0x80631d0d, 0x1de7b4bc, 0xc0716d39, 0x7dbb01f7,
+ 0xa02dd872, 0xdd5ede2a, 0x00c807af, 0xbd026b61, 0x6094b2e4,
+ 0x47e467d1, 0x9a72be54, 0x27b8d29a, 0xfa2e0b1f, 0x875d0d47,
+ 0x5acbd4c2, 0xe701b80c, 0x3a976189, 0xa9e01266, 0x7476cbe3,
+ 0xc9bca72d, 0x142a7ea8, 0x695978f0, 0xb4cfa175, 0x0905cdbb,
+ 0xd493143e, 0xf3e3c10b, 0x2e75188e, 0x93bf7440, 0x4e29adc5,
+ 0x335aab9d, 0xeecc7218, 0x53061ed6, 0x8e90c753, 0xae99ff49,
+ 0x730f26cc, 0xcec54a02, 0x13539387, 0x6e2095df, 0xb3b64c5a,
+ 0x0e7c2094, 0xd3eaf911, 0xf49a2c24, 0x290cf5a1, 0x94c6996f,
+ 0x495040ea, 0x342346b2, 0xe9b59f37, 0x547ff3f9, 0x89e92a7c,
+ 0x1a9e5993, 0xc7088016, 0x7ac2ecd8, 0xa754355d, 0xda273305,
+ 0x07b1ea80, 0xba7b864e, 0x67ed5fcb, 0x409d8afe, 0x9d0b537b,
+ 0x20c13fb5, 0xfd57e630, 0x8024e068, 0x5db239ed, 0xe0785523,
+ 0x3dee8ca6}};
+
+local const z_word_t FAR crc_braid_big_table[][256] = {
+ {0x00000000, 0x85d996dd, 0x4bb55c60, 0xce6ccabd, 0x966ab9c0,
+ 0x13b32f1d, 0xdddfe5a0, 0x5806737d, 0x6dd3035a, 0xe80a9587,
+ 0x26665f3a, 0xa3bfc9e7, 0xfbb9ba9a, 0x7e602c47, 0xb00ce6fa,
+ 0x35d57027, 0xdaa607b4, 0x5f7f9169, 0x91135bd4, 0x14cacd09,
+ 0x4cccbe74, 0xc91528a9, 0x0779e214, 0x82a074c9, 0xb77504ee,
+ 0x32ac9233, 0xfcc0588e, 0x7919ce53, 0x211fbd2e, 0xa4c62bf3,
+ 0x6aaae14e, 0xef737793, 0xf54b7eb3, 0x7092e86e, 0xbefe22d3,
+ 0x3b27b40e, 0x6321c773, 0xe6f851ae, 0x28949b13, 0xad4d0dce,
+ 0x98987de9, 0x1d41eb34, 0xd32d2189, 0x56f4b754, 0x0ef2c429,
+ 0x8b2b52f4, 0x45479849, 0xc09e0e94, 0x2fed7907, 0xaa34efda,
+ 0x64582567, 0xe181b3ba, 0xb987c0c7, 0x3c5e561a, 0xf2329ca7,
+ 0x77eb0a7a, 0x423e7a5d, 0xc7e7ec80, 0x098b263d, 0x8c52b0e0,
+ 0xd454c39d, 0x518d5540, 0x9fe19ffd, 0x1a380920, 0xab918dbd,
+ 0x2e481b60, 0xe024d1dd, 0x65fd4700, 0x3dfb347d, 0xb822a2a0,
+ 0x764e681d, 0xf397fec0, 0xc6428ee7, 0x439b183a, 0x8df7d287,
+ 0x082e445a, 0x50283727, 0xd5f1a1fa, 0x1b9d6b47, 0x9e44fd9a,
+ 0x71378a09, 0xf4ee1cd4, 0x3a82d669, 0xbf5b40b4, 0xe75d33c9,
+ 0x6284a514, 0xace86fa9, 0x2931f974, 0x1ce48953, 0x993d1f8e,
+ 0x5751d533, 0xd28843ee, 0x8a8e3093, 0x0f57a64e, 0xc13b6cf3,
+ 0x44e2fa2e, 0x5edaf30e, 0xdb0365d3, 0x156faf6e, 0x90b639b3,
+ 0xc8b04ace, 0x4d69dc13, 0x830516ae, 0x06dc8073, 0x3309f054,
+ 0xb6d06689, 0x78bcac34, 0xfd653ae9, 0xa5634994, 0x20badf49,
+ 0xeed615f4, 0x6b0f8329, 0x847cf4ba, 0x01a56267, 0xcfc9a8da,
+ 0x4a103e07, 0x12164d7a, 0x97cfdba7, 0x59a3111a, 0xdc7a87c7,
+ 0xe9aff7e0, 0x6c76613d, 0xa21aab80, 0x27c33d5d, 0x7fc54e20,
+ 0xfa1cd8fd, 0x34701240, 0xb1a9849d, 0x17256aa0, 0x92fcfc7d,
+ 0x5c9036c0, 0xd949a01d, 0x814fd360, 0x049645bd, 0xcafa8f00,
+ 0x4f2319dd, 0x7af669fa, 0xff2fff27, 0x3143359a, 0xb49aa347,
+ 0xec9cd03a, 0x694546e7, 0xa7298c5a, 0x22f01a87, 0xcd836d14,
+ 0x485afbc9, 0x86363174, 0x03efa7a9, 0x5be9d4d4, 0xde304209,
+ 0x105c88b4, 0x95851e69, 0xa0506e4e, 0x2589f893, 0xebe5322e,
+ 0x6e3ca4f3, 0x363ad78e, 0xb3e34153, 0x7d8f8bee, 0xf8561d33,
+ 0xe26e1413, 0x67b782ce, 0xa9db4873, 0x2c02deae, 0x7404add3,
+ 0xf1dd3b0e, 0x3fb1f1b3, 0xba68676e, 0x8fbd1749, 0x0a648194,
+ 0xc4084b29, 0x41d1ddf4, 0x19d7ae89, 0x9c0e3854, 0x5262f2e9,
+ 0xd7bb6434, 0x38c813a7, 0xbd11857a, 0x737d4fc7, 0xf6a4d91a,
+ 0xaea2aa67, 0x2b7b3cba, 0xe517f607, 0x60ce60da, 0x551b10fd,
+ 0xd0c28620, 0x1eae4c9d, 0x9b77da40, 0xc371a93d, 0x46a83fe0,
+ 0x88c4f55d, 0x0d1d6380, 0xbcb4e71d, 0x396d71c0, 0xf701bb7d,
+ 0x72d82da0, 0x2ade5edd, 0xaf07c800, 0x616b02bd, 0xe4b29460,
+ 0xd167e447, 0x54be729a, 0x9ad2b827, 0x1f0b2efa, 0x470d5d87,
+ 0xc2d4cb5a, 0x0cb801e7, 0x8961973a, 0x6612e0a9, 0xe3cb7674,
+ 0x2da7bcc9, 0xa87e2a14, 0xf0785969, 0x75a1cfb4, 0xbbcd0509,
+ 0x3e1493d4, 0x0bc1e3f3, 0x8e18752e, 0x4074bf93, 0xc5ad294e,
+ 0x9dab5a33, 0x1872ccee, 0xd61e0653, 0x53c7908e, 0x49ff99ae,
+ 0xcc260f73, 0x024ac5ce, 0x87935313, 0xdf95206e, 0x5a4cb6b3,
+ 0x94207c0e, 0x11f9ead3, 0x242c9af4, 0xa1f50c29, 0x6f99c694,
+ 0xea405049, 0xb2462334, 0x379fb5e9, 0xf9f37f54, 0x7c2ae989,
+ 0x93599e1a, 0x168008c7, 0xd8ecc27a, 0x5d3554a7, 0x053327da,
+ 0x80eab107, 0x4e867bba, 0xcb5fed67, 0xfe8a9d40, 0x7b530b9d,
+ 0xb53fc120, 0x30e657fd, 0x68e02480, 0xed39b25d, 0x235578e0,
+ 0xa68cee3d},
+ {0x00000000, 0x76e10f9d, 0xadc46ee1, 0xdb25617c, 0x1b8fac19,
+ 0x6d6ea384, 0xb64bc2f8, 0xc0aacd65, 0x361e5933, 0x40ff56ae,
+ 0x9bda37d2, 0xed3b384f, 0x2d91f52a, 0x5b70fab7, 0x80559bcb,
+ 0xf6b49456, 0x6c3cb266, 0x1addbdfb, 0xc1f8dc87, 0xb719d31a,
+ 0x77b31e7f, 0x015211e2, 0xda77709e, 0xac967f03, 0x5a22eb55,
+ 0x2cc3e4c8, 0xf7e685b4, 0x81078a29, 0x41ad474c, 0x374c48d1,
+ 0xec6929ad, 0x9a882630, 0xd87864cd, 0xae996b50, 0x75bc0a2c,
+ 0x035d05b1, 0xc3f7c8d4, 0xb516c749, 0x6e33a635, 0x18d2a9a8,
+ 0xee663dfe, 0x98873263, 0x43a2531f, 0x35435c82, 0xf5e991e7,
+ 0x83089e7a, 0x582dff06, 0x2eccf09b, 0xb444d6ab, 0xc2a5d936,
+ 0x1980b84a, 0x6f61b7d7, 0xafcb7ab2, 0xd92a752f, 0x020f1453,
+ 0x74ee1bce, 0x825a8f98, 0xf4bb8005, 0x2f9ee179, 0x597feee4,
+ 0x99d52381, 0xef342c1c, 0x34114d60, 0x42f042fd, 0xf1f7b941,
+ 0x8716b6dc, 0x5c33d7a0, 0x2ad2d83d, 0xea781558, 0x9c991ac5,
+ 0x47bc7bb9, 0x315d7424, 0xc7e9e072, 0xb108efef, 0x6a2d8e93,
+ 0x1ccc810e, 0xdc664c6b, 0xaa8743f6, 0x71a2228a, 0x07432d17,
+ 0x9dcb0b27, 0xeb2a04ba, 0x300f65c6, 0x46ee6a5b, 0x8644a73e,
+ 0xf0a5a8a3, 0x2b80c9df, 0x5d61c642, 0xabd55214, 0xdd345d89,
+ 0x06113cf5, 0x70f03368, 0xb05afe0d, 0xc6bbf190, 0x1d9e90ec,
+ 0x6b7f9f71, 0x298fdd8c, 0x5f6ed211, 0x844bb36d, 0xf2aabcf0,
+ 0x32007195, 0x44e17e08, 0x9fc41f74, 0xe92510e9, 0x1f9184bf,
+ 0x69708b22, 0xb255ea5e, 0xc4b4e5c3, 0x041e28a6, 0x72ff273b,
+ 0xa9da4647, 0xdf3b49da, 0x45b36fea, 0x33526077, 0xe877010b,
+ 0x9e960e96, 0x5e3cc3f3, 0x28ddcc6e, 0xf3f8ad12, 0x8519a28f,
+ 0x73ad36d9, 0x054c3944, 0xde695838, 0xa88857a5, 0x68229ac0,
+ 0x1ec3955d, 0xc5e6f421, 0xb307fbbc, 0xe2ef7383, 0x940e7c1e,
+ 0x4f2b1d62, 0x39ca12ff, 0xf960df9a, 0x8f81d007, 0x54a4b17b,
+ 0x2245bee6, 0xd4f12ab0, 0xa210252d, 0x79354451, 0x0fd44bcc,
+ 0xcf7e86a9, 0xb99f8934, 0x62bae848, 0x145be7d5, 0x8ed3c1e5,
+ 0xf832ce78, 0x2317af04, 0x55f6a099, 0x955c6dfc, 0xe3bd6261,
+ 0x3898031d, 0x4e790c80, 0xb8cd98d6, 0xce2c974b, 0x1509f637,
+ 0x63e8f9aa, 0xa34234cf, 0xd5a33b52, 0x0e865a2e, 0x786755b3,
+ 0x3a97174e, 0x4c7618d3, 0x975379af, 0xe1b27632, 0x2118bb57,
+ 0x57f9b4ca, 0x8cdcd5b6, 0xfa3dda2b, 0x0c894e7d, 0x7a6841e0,
+ 0xa14d209c, 0xd7ac2f01, 0x1706e264, 0x61e7edf9, 0xbac28c85,
+ 0xcc238318, 0x56aba528, 0x204aaab5, 0xfb6fcbc9, 0x8d8ec454,
+ 0x4d240931, 0x3bc506ac, 0xe0e067d0, 0x9601684d, 0x60b5fc1b,
+ 0x1654f386, 0xcd7192fa, 0xbb909d67, 0x7b3a5002, 0x0ddb5f9f,
+ 0xd6fe3ee3, 0xa01f317e, 0x1318cac2, 0x65f9c55f, 0xbedca423,
+ 0xc83dabbe, 0x089766db, 0x7e766946, 0xa553083a, 0xd3b207a7,
+ 0x250693f1, 0x53e79c6c, 0x88c2fd10, 0xfe23f28d, 0x3e893fe8,
+ 0x48683075, 0x934d5109, 0xe5ac5e94, 0x7f2478a4, 0x09c57739,
+ 0xd2e01645, 0xa40119d8, 0x64abd4bd, 0x124adb20, 0xc96fba5c,
+ 0xbf8eb5c1, 0x493a2197, 0x3fdb2e0a, 0xe4fe4f76, 0x921f40eb,
+ 0x52b58d8e, 0x24548213, 0xff71e36f, 0x8990ecf2, 0xcb60ae0f,
+ 0xbd81a192, 0x66a4c0ee, 0x1045cf73, 0xd0ef0216, 0xa60e0d8b,
+ 0x7d2b6cf7, 0x0bca636a, 0xfd7ef73c, 0x8b9ff8a1, 0x50ba99dd,
+ 0x265b9640, 0xe6f15b25, 0x901054b8, 0x4b3535c4, 0x3dd43a59,
+ 0xa75c1c69, 0xd1bd13f4, 0x0a987288, 0x7c797d15, 0xbcd3b070,
+ 0xca32bfed, 0x1117de91, 0x67f6d10c, 0x9142455a, 0xe7a34ac7,
+ 0x3c862bbb, 0x4a672426, 0x8acde943, 0xfc2ce6de, 0x270987a2,
+ 0x51e8883f},
+ {0x00000000, 0xe8dbfbb9, 0x91b186a8, 0x796a7d11, 0x63657c8a,
+ 0x8bbe8733, 0xf2d4fa22, 0x1a0f019b, 0x87cc89cf, 0x6f177276,
+ 0x167d0f67, 0xfea6f4de, 0xe4a9f545, 0x0c720efc, 0x751873ed,
+ 0x9dc38854, 0x4f9f6244, 0xa74499fd, 0xde2ee4ec, 0x36f51f55,
+ 0x2cfa1ece, 0xc421e577, 0xbd4b9866, 0x559063df, 0xc853eb8b,
+ 0x20881032, 0x59e26d23, 0xb139969a, 0xab369701, 0x43ed6cb8,
+ 0x3a8711a9, 0xd25cea10, 0x9e3ec588, 0x76e53e31, 0x0f8f4320,
+ 0xe754b899, 0xfd5bb902, 0x158042bb, 0x6cea3faa, 0x8431c413,
+ 0x19f24c47, 0xf129b7fe, 0x8843caef, 0x60983156, 0x7a9730cd,
+ 0x924ccb74, 0xeb26b665, 0x03fd4ddc, 0xd1a1a7cc, 0x397a5c75,
+ 0x40102164, 0xa8cbdadd, 0xb2c4db46, 0x5a1f20ff, 0x23755dee,
+ 0xcbaea657, 0x566d2e03, 0xbeb6d5ba, 0xc7dca8ab, 0x2f075312,
+ 0x35085289, 0xddd3a930, 0xa4b9d421, 0x4c622f98, 0x7d7bfbca,
+ 0x95a00073, 0xecca7d62, 0x041186db, 0x1e1e8740, 0xf6c57cf9,
+ 0x8faf01e8, 0x6774fa51, 0xfab77205, 0x126c89bc, 0x6b06f4ad,
+ 0x83dd0f14, 0x99d20e8f, 0x7109f536, 0x08638827, 0xe0b8739e,
+ 0x32e4998e, 0xda3f6237, 0xa3551f26, 0x4b8ee49f, 0x5181e504,
+ 0xb95a1ebd, 0xc03063ac, 0x28eb9815, 0xb5281041, 0x5df3ebf8,
+ 0x249996e9, 0xcc426d50, 0xd64d6ccb, 0x3e969772, 0x47fcea63,
+ 0xaf2711da, 0xe3453e42, 0x0b9ec5fb, 0x72f4b8ea, 0x9a2f4353,
+ 0x802042c8, 0x68fbb971, 0x1191c460, 0xf94a3fd9, 0x6489b78d,
+ 0x8c524c34, 0xf5383125, 0x1de3ca9c, 0x07eccb07, 0xef3730be,
+ 0x965d4daf, 0x7e86b616, 0xacda5c06, 0x4401a7bf, 0x3d6bdaae,
+ 0xd5b02117, 0xcfbf208c, 0x2764db35, 0x5e0ea624, 0xb6d55d9d,
+ 0x2b16d5c9, 0xc3cd2e70, 0xbaa75361, 0x527ca8d8, 0x4873a943,
+ 0xa0a852fa, 0xd9c22feb, 0x3119d452, 0xbbf0874e, 0x532b7cf7,
+ 0x2a4101e6, 0xc29afa5f, 0xd895fbc4, 0x304e007d, 0x49247d6c,
+ 0xa1ff86d5, 0x3c3c0e81, 0xd4e7f538, 0xad8d8829, 0x45567390,
+ 0x5f59720b, 0xb78289b2, 0xcee8f4a3, 0x26330f1a, 0xf46fe50a,
+ 0x1cb41eb3, 0x65de63a2, 0x8d05981b, 0x970a9980, 0x7fd16239,
+ 0x06bb1f28, 0xee60e491, 0x73a36cc5, 0x9b78977c, 0xe212ea6d,
+ 0x0ac911d4, 0x10c6104f, 0xf81debf6, 0x817796e7, 0x69ac6d5e,
+ 0x25ce42c6, 0xcd15b97f, 0xb47fc46e, 0x5ca43fd7, 0x46ab3e4c,
+ 0xae70c5f5, 0xd71ab8e4, 0x3fc1435d, 0xa202cb09, 0x4ad930b0,
+ 0x33b34da1, 0xdb68b618, 0xc167b783, 0x29bc4c3a, 0x50d6312b,
+ 0xb80dca92, 0x6a512082, 0x828adb3b, 0xfbe0a62a, 0x133b5d93,
+ 0x09345c08, 0xe1efa7b1, 0x9885daa0, 0x705e2119, 0xed9da94d,
+ 0x054652f4, 0x7c2c2fe5, 0x94f7d45c, 0x8ef8d5c7, 0x66232e7e,
+ 0x1f49536f, 0xf792a8d6, 0xc68b7c84, 0x2e50873d, 0x573afa2c,
+ 0xbfe10195, 0xa5ee000e, 0x4d35fbb7, 0x345f86a6, 0xdc847d1f,
+ 0x4147f54b, 0xa99c0ef2, 0xd0f673e3, 0x382d885a, 0x222289c1,
+ 0xcaf97278, 0xb3930f69, 0x5b48f4d0, 0x89141ec0, 0x61cfe579,
+ 0x18a59868, 0xf07e63d1, 0xea71624a, 0x02aa99f3, 0x7bc0e4e2,
+ 0x931b1f5b, 0x0ed8970f, 0xe6036cb6, 0x9f6911a7, 0x77b2ea1e,
+ 0x6dbdeb85, 0x8566103c, 0xfc0c6d2d, 0x14d79694, 0x58b5b90c,
+ 0xb06e42b5, 0xc9043fa4, 0x21dfc41d, 0x3bd0c586, 0xd30b3e3f,
+ 0xaa61432e, 0x42bab897, 0xdf7930c3, 0x37a2cb7a, 0x4ec8b66b,
+ 0xa6134dd2, 0xbc1c4c49, 0x54c7b7f0, 0x2dadcae1, 0xc5763158,
+ 0x172adb48, 0xfff120f1, 0x869b5de0, 0x6e40a659, 0x744fa7c2,
+ 0x9c945c7b, 0xe5fe216a, 0x0d25dad3, 0x90e65287, 0x783da93e,
+ 0x0157d42f, 0xe98c2f96, 0xf3832e0d, 0x1b58d5b4, 0x6232a8a5,
+ 0x8ae9531c},
+ {0x00000000, 0x919168ae, 0x6325a087, 0xf2b4c829, 0x874c31d4,
+ 0x16dd597a, 0xe4699153, 0x75f8f9fd, 0x4f9f1373, 0xde0e7bdd,
+ 0x2cbab3f4, 0xbd2bdb5a, 0xc8d322a7, 0x59424a09, 0xabf68220,
+ 0x3a67ea8e, 0x9e3e27e6, 0x0faf4f48, 0xfd1b8761, 0x6c8aefcf,
+ 0x19721632, 0x88e37e9c, 0x7a57b6b5, 0xebc6de1b, 0xd1a13495,
+ 0x40305c3b, 0xb2849412, 0x2315fcbc, 0x56ed0541, 0xc77c6def,
+ 0x35c8a5c6, 0xa459cd68, 0x7d7b3f17, 0xecea57b9, 0x1e5e9f90,
+ 0x8fcff73e, 0xfa370ec3, 0x6ba6666d, 0x9912ae44, 0x0883c6ea,
+ 0x32e42c64, 0xa37544ca, 0x51c18ce3, 0xc050e44d, 0xb5a81db0,
+ 0x2439751e, 0xd68dbd37, 0x471cd599, 0xe34518f1, 0x72d4705f,
+ 0x8060b876, 0x11f1d0d8, 0x64092925, 0xf598418b, 0x072c89a2,
+ 0x96bde10c, 0xacda0b82, 0x3d4b632c, 0xcfffab05, 0x5e6ec3ab,
+ 0x2b963a56, 0xba0752f8, 0x48b39ad1, 0xd922f27f, 0xfaf67e2e,
+ 0x6b671680, 0x99d3dea9, 0x0842b607, 0x7dba4ffa, 0xec2b2754,
+ 0x1e9fef7d, 0x8f0e87d3, 0xb5696d5d, 0x24f805f3, 0xd64ccdda,
+ 0x47dda574, 0x32255c89, 0xa3b43427, 0x5100fc0e, 0xc09194a0,
+ 0x64c859c8, 0xf5593166, 0x07edf94f, 0x967c91e1, 0xe384681c,
+ 0x721500b2, 0x80a1c89b, 0x1130a035, 0x2b574abb, 0xbac62215,
+ 0x4872ea3c, 0xd9e38292, 0xac1b7b6f, 0x3d8a13c1, 0xcf3edbe8,
+ 0x5eafb346, 0x878d4139, 0x161c2997, 0xe4a8e1be, 0x75398910,
+ 0x00c170ed, 0x91501843, 0x63e4d06a, 0xf275b8c4, 0xc812524a,
+ 0x59833ae4, 0xab37f2cd, 0x3aa69a63, 0x4f5e639e, 0xdecf0b30,
+ 0x2c7bc319, 0xbdeaabb7, 0x19b366df, 0x88220e71, 0x7a96c658,
+ 0xeb07aef6, 0x9eff570b, 0x0f6e3fa5, 0xfddaf78c, 0x6c4b9f22,
+ 0x562c75ac, 0xc7bd1d02, 0x3509d52b, 0xa498bd85, 0xd1604478,
+ 0x40f12cd6, 0xb245e4ff, 0x23d48c51, 0xf4edfd5c, 0x657c95f2,
+ 0x97c85ddb, 0x06593575, 0x73a1cc88, 0xe230a426, 0x10846c0f,
+ 0x811504a1, 0xbb72ee2f, 0x2ae38681, 0xd8574ea8, 0x49c62606,
+ 0x3c3edffb, 0xadafb755, 0x5f1b7f7c, 0xce8a17d2, 0x6ad3daba,
+ 0xfb42b214, 0x09f67a3d, 0x98671293, 0xed9feb6e, 0x7c0e83c0,
+ 0x8eba4be9, 0x1f2b2347, 0x254cc9c9, 0xb4dda167, 0x4669694e,
+ 0xd7f801e0, 0xa200f81d, 0x339190b3, 0xc125589a, 0x50b43034,
+ 0x8996c24b, 0x1807aae5, 0xeab362cc, 0x7b220a62, 0x0edaf39f,
+ 0x9f4b9b31, 0x6dff5318, 0xfc6e3bb6, 0xc609d138, 0x5798b996,
+ 0xa52c71bf, 0x34bd1911, 0x4145e0ec, 0xd0d48842, 0x2260406b,
+ 0xb3f128c5, 0x17a8e5ad, 0x86398d03, 0x748d452a, 0xe51c2d84,
+ 0x90e4d479, 0x0175bcd7, 0xf3c174fe, 0x62501c50, 0x5837f6de,
+ 0xc9a69e70, 0x3b125659, 0xaa833ef7, 0xdf7bc70a, 0x4eeaafa4,
+ 0xbc5e678d, 0x2dcf0f23, 0x0e1b8372, 0x9f8aebdc, 0x6d3e23f5,
+ 0xfcaf4b5b, 0x8957b2a6, 0x18c6da08, 0xea721221, 0x7be37a8f,
+ 0x41849001, 0xd015f8af, 0x22a13086, 0xb3305828, 0xc6c8a1d5,
+ 0x5759c97b, 0xa5ed0152, 0x347c69fc, 0x9025a494, 0x01b4cc3a,
+ 0xf3000413, 0x62916cbd, 0x17699540, 0x86f8fdee, 0x744c35c7,
+ 0xe5dd5d69, 0xdfbab7e7, 0x4e2bdf49, 0xbc9f1760, 0x2d0e7fce,
+ 0x58f68633, 0xc967ee9d, 0x3bd326b4, 0xaa424e1a, 0x7360bc65,
+ 0xe2f1d4cb, 0x10451ce2, 0x81d4744c, 0xf42c8db1, 0x65bde51f,
+ 0x97092d36, 0x06984598, 0x3cffaf16, 0xad6ec7b8, 0x5fda0f91,
+ 0xce4b673f, 0xbbb39ec2, 0x2a22f66c, 0xd8963e45, 0x490756eb,
+ 0xed5e9b83, 0x7ccff32d, 0x8e7b3b04, 0x1fea53aa, 0x6a12aa57,
+ 0xfb83c2f9, 0x09370ad0, 0x98a6627e, 0xa2c188f0, 0x3350e05e,
+ 0xc1e42877, 0x507540d9, 0x258db924, 0xb41cd18a, 0x46a819a3,
+ 0xd739710d}};
+
+#endif
+
+#endif
+
+#if N == 5
+
+#if W == 8
+
+local const z_crc_t FAR crc_braid_table[][256] = {
+ {0x00000000, 0xaf449247, 0x85f822cf, 0x2abcb088, 0xd08143df,
+ 0x7fc5d198, 0x55796110, 0xfa3df357, 0x7a7381ff, 0xd53713b8,
+ 0xff8ba330, 0x50cf3177, 0xaaf2c220, 0x05b65067, 0x2f0ae0ef,
+ 0x804e72a8, 0xf4e703fe, 0x5ba391b9, 0x711f2131, 0xde5bb376,
+ 0x24664021, 0x8b22d266, 0xa19e62ee, 0x0edaf0a9, 0x8e948201,
+ 0x21d01046, 0x0b6ca0ce, 0xa4283289, 0x5e15c1de, 0xf1515399,
+ 0xdbede311, 0x74a97156, 0x32bf01bd, 0x9dfb93fa, 0xb7472372,
+ 0x1803b135, 0xe23e4262, 0x4d7ad025, 0x67c660ad, 0xc882f2ea,
+ 0x48cc8042, 0xe7881205, 0xcd34a28d, 0x627030ca, 0x984dc39d,
+ 0x370951da, 0x1db5e152, 0xb2f17315, 0xc6580243, 0x691c9004,
+ 0x43a0208c, 0xece4b2cb, 0x16d9419c, 0xb99dd3db, 0x93216353,
+ 0x3c65f114, 0xbc2b83bc, 0x136f11fb, 0x39d3a173, 0x96973334,
+ 0x6caac063, 0xc3ee5224, 0xe952e2ac, 0x461670eb, 0x657e037a,
+ 0xca3a913d, 0xe08621b5, 0x4fc2b3f2, 0xb5ff40a5, 0x1abbd2e2,
+ 0x3007626a, 0x9f43f02d, 0x1f0d8285, 0xb04910c2, 0x9af5a04a,
+ 0x35b1320d, 0xcf8cc15a, 0x60c8531d, 0x4a74e395, 0xe53071d2,
+ 0x91990084, 0x3edd92c3, 0x1461224b, 0xbb25b00c, 0x4118435b,
+ 0xee5cd11c, 0xc4e06194, 0x6ba4f3d3, 0xebea817b, 0x44ae133c,
+ 0x6e12a3b4, 0xc15631f3, 0x3b6bc2a4, 0x942f50e3, 0xbe93e06b,
+ 0x11d7722c, 0x57c102c7, 0xf8859080, 0xd2392008, 0x7d7db24f,
+ 0x87404118, 0x2804d35f, 0x02b863d7, 0xadfcf190, 0x2db28338,
+ 0x82f6117f, 0xa84aa1f7, 0x070e33b0, 0xfd33c0e7, 0x527752a0,
+ 0x78cbe228, 0xd78f706f, 0xa3260139, 0x0c62937e, 0x26de23f6,
+ 0x899ab1b1, 0x73a742e6, 0xdce3d0a1, 0xf65f6029, 0x591bf26e,
+ 0xd95580c6, 0x76111281, 0x5cada209, 0xf3e9304e, 0x09d4c319,
+ 0xa690515e, 0x8c2ce1d6, 0x23687391, 0xcafc06f4, 0x65b894b3,
+ 0x4f04243b, 0xe040b67c, 0x1a7d452b, 0xb539d76c, 0x9f8567e4,
+ 0x30c1f5a3, 0xb08f870b, 0x1fcb154c, 0x3577a5c4, 0x9a333783,
+ 0x600ec4d4, 0xcf4a5693, 0xe5f6e61b, 0x4ab2745c, 0x3e1b050a,
+ 0x915f974d, 0xbbe327c5, 0x14a7b582, 0xee9a46d5, 0x41ded492,
+ 0x6b62641a, 0xc426f65d, 0x446884f5, 0xeb2c16b2, 0xc190a63a,
+ 0x6ed4347d, 0x94e9c72a, 0x3bad556d, 0x1111e5e5, 0xbe5577a2,
+ 0xf8430749, 0x5707950e, 0x7dbb2586, 0xd2ffb7c1, 0x28c24496,
+ 0x8786d6d1, 0xad3a6659, 0x027ef41e, 0x823086b6, 0x2d7414f1,
+ 0x07c8a479, 0xa88c363e, 0x52b1c569, 0xfdf5572e, 0xd749e7a6,
+ 0x780d75e1, 0x0ca404b7, 0xa3e096f0, 0x895c2678, 0x2618b43f,
+ 0xdc254768, 0x7361d52f, 0x59dd65a7, 0xf699f7e0, 0x76d78548,
+ 0xd993170f, 0xf32fa787, 0x5c6b35c0, 0xa656c697, 0x091254d0,
+ 0x23aee458, 0x8cea761f, 0xaf82058e, 0x00c697c9, 0x2a7a2741,
+ 0x853eb506, 0x7f034651, 0xd047d416, 0xfafb649e, 0x55bff6d9,
+ 0xd5f18471, 0x7ab51636, 0x5009a6be, 0xff4d34f9, 0x0570c7ae,
+ 0xaa3455e9, 0x8088e561, 0x2fcc7726, 0x5b650670, 0xf4219437,
+ 0xde9d24bf, 0x71d9b6f8, 0x8be445af, 0x24a0d7e8, 0x0e1c6760,
+ 0xa158f527, 0x2116878f, 0x8e5215c8, 0xa4eea540, 0x0baa3707,
+ 0xf197c450, 0x5ed35617, 0x746fe69f, 0xdb2b74d8, 0x9d3d0433,
+ 0x32799674, 0x18c526fc, 0xb781b4bb, 0x4dbc47ec, 0xe2f8d5ab,
+ 0xc8446523, 0x6700f764, 0xe74e85cc, 0x480a178b, 0x62b6a703,
+ 0xcdf23544, 0x37cfc613, 0x988b5454, 0xb237e4dc, 0x1d73769b,
+ 0x69da07cd, 0xc69e958a, 0xec222502, 0x4366b745, 0xb95b4412,
+ 0x161fd655, 0x3ca366dd, 0x93e7f49a, 0x13a98632, 0xbced1475,
+ 0x9651a4fd, 0x391536ba, 0xc328c5ed, 0x6c6c57aa, 0x46d0e722,
+ 0xe9947565},
+ {0x00000000, 0x4e890ba9, 0x9d121752, 0xd39b1cfb, 0xe15528e5,
+ 0xafdc234c, 0x7c473fb7, 0x32ce341e, 0x19db578b, 0x57525c22,
+ 0x84c940d9, 0xca404b70, 0xf88e7f6e, 0xb60774c7, 0x659c683c,
+ 0x2b156395, 0x33b6af16, 0x7d3fa4bf, 0xaea4b844, 0xe02db3ed,
+ 0xd2e387f3, 0x9c6a8c5a, 0x4ff190a1, 0x01789b08, 0x2a6df89d,
+ 0x64e4f334, 0xb77fefcf, 0xf9f6e466, 0xcb38d078, 0x85b1dbd1,
+ 0x562ac72a, 0x18a3cc83, 0x676d5e2c, 0x29e45585, 0xfa7f497e,
+ 0xb4f642d7, 0x863876c9, 0xc8b17d60, 0x1b2a619b, 0x55a36a32,
+ 0x7eb609a7, 0x303f020e, 0xe3a41ef5, 0xad2d155c, 0x9fe32142,
+ 0xd16a2aeb, 0x02f13610, 0x4c783db9, 0x54dbf13a, 0x1a52fa93,
+ 0xc9c9e668, 0x8740edc1, 0xb58ed9df, 0xfb07d276, 0x289cce8d,
+ 0x6615c524, 0x4d00a6b1, 0x0389ad18, 0xd012b1e3, 0x9e9bba4a,
+ 0xac558e54, 0xe2dc85fd, 0x31479906, 0x7fce92af, 0xcedabc58,
+ 0x8053b7f1, 0x53c8ab0a, 0x1d41a0a3, 0x2f8f94bd, 0x61069f14,
+ 0xb29d83ef, 0xfc148846, 0xd701ebd3, 0x9988e07a, 0x4a13fc81,
+ 0x049af728, 0x3654c336, 0x78ddc89f, 0xab46d464, 0xe5cfdfcd,
+ 0xfd6c134e, 0xb3e518e7, 0x607e041c, 0x2ef70fb5, 0x1c393bab,
+ 0x52b03002, 0x812b2cf9, 0xcfa22750, 0xe4b744c5, 0xaa3e4f6c,
+ 0x79a55397, 0x372c583e, 0x05e26c20, 0x4b6b6789, 0x98f07b72,
+ 0xd67970db, 0xa9b7e274, 0xe73ee9dd, 0x34a5f526, 0x7a2cfe8f,
+ 0x48e2ca91, 0x066bc138, 0xd5f0ddc3, 0x9b79d66a, 0xb06cb5ff,
+ 0xfee5be56, 0x2d7ea2ad, 0x63f7a904, 0x51399d1a, 0x1fb096b3,
+ 0xcc2b8a48, 0x82a281e1, 0x9a014d62, 0xd48846cb, 0x07135a30,
+ 0x499a5199, 0x7b546587, 0x35dd6e2e, 0xe64672d5, 0xa8cf797c,
+ 0x83da1ae9, 0xcd531140, 0x1ec80dbb, 0x50410612, 0x628f320c,
+ 0x2c0639a5, 0xff9d255e, 0xb1142ef7, 0x46c47ef1, 0x084d7558,
+ 0xdbd669a3, 0x955f620a, 0xa7915614, 0xe9185dbd, 0x3a834146,
+ 0x740a4aef, 0x5f1f297a, 0x119622d3, 0xc20d3e28, 0x8c843581,
+ 0xbe4a019f, 0xf0c30a36, 0x235816cd, 0x6dd11d64, 0x7572d1e7,
+ 0x3bfbda4e, 0xe860c6b5, 0xa6e9cd1c, 0x9427f902, 0xdaaef2ab,
+ 0x0935ee50, 0x47bce5f9, 0x6ca9866c, 0x22208dc5, 0xf1bb913e,
+ 0xbf329a97, 0x8dfcae89, 0xc375a520, 0x10eeb9db, 0x5e67b272,
+ 0x21a920dd, 0x6f202b74, 0xbcbb378f, 0xf2323c26, 0xc0fc0838,
+ 0x8e750391, 0x5dee1f6a, 0x136714c3, 0x38727756, 0x76fb7cff,
+ 0xa5606004, 0xebe96bad, 0xd9275fb3, 0x97ae541a, 0x443548e1,
+ 0x0abc4348, 0x121f8fcb, 0x5c968462, 0x8f0d9899, 0xc1849330,
+ 0xf34aa72e, 0xbdc3ac87, 0x6e58b07c, 0x20d1bbd5, 0x0bc4d840,
+ 0x454dd3e9, 0x96d6cf12, 0xd85fc4bb, 0xea91f0a5, 0xa418fb0c,
+ 0x7783e7f7, 0x390aec5e, 0x881ec2a9, 0xc697c900, 0x150cd5fb,
+ 0x5b85de52, 0x694bea4c, 0x27c2e1e5, 0xf459fd1e, 0xbad0f6b7,
+ 0x91c59522, 0xdf4c9e8b, 0x0cd78270, 0x425e89d9, 0x7090bdc7,
+ 0x3e19b66e, 0xed82aa95, 0xa30ba13c, 0xbba86dbf, 0xf5216616,
+ 0x26ba7aed, 0x68337144, 0x5afd455a, 0x14744ef3, 0xc7ef5208,
+ 0x896659a1, 0xa2733a34, 0xecfa319d, 0x3f612d66, 0x71e826cf,
+ 0x432612d1, 0x0daf1978, 0xde340583, 0x90bd0e2a, 0xef739c85,
+ 0xa1fa972c, 0x72618bd7, 0x3ce8807e, 0x0e26b460, 0x40afbfc9,
+ 0x9334a332, 0xddbda89b, 0xf6a8cb0e, 0xb821c0a7, 0x6bbadc5c,
+ 0x2533d7f5, 0x17fde3eb, 0x5974e842, 0x8aeff4b9, 0xc466ff10,
+ 0xdcc53393, 0x924c383a, 0x41d724c1, 0x0f5e2f68, 0x3d901b76,
+ 0x731910df, 0xa0820c24, 0xee0b078d, 0xc51e6418, 0x8b976fb1,
+ 0x580c734a, 0x168578e3, 0x244b4cfd, 0x6ac24754, 0xb9595baf,
+ 0xf7d05006},
+ {0x00000000, 0x8d88fde2, 0xc060fd85, 0x4de80067, 0x5bb0fd4b,
+ 0xd63800a9, 0x9bd000ce, 0x1658fd2c, 0xb761fa96, 0x3ae90774,
+ 0x77010713, 0xfa89faf1, 0xecd107dd, 0x6159fa3f, 0x2cb1fa58,
+ 0xa13907ba, 0xb5b2f36d, 0x383a0e8f, 0x75d20ee8, 0xf85af30a,
+ 0xee020e26, 0x638af3c4, 0x2e62f3a3, 0xa3ea0e41, 0x02d309fb,
+ 0x8f5bf419, 0xc2b3f47e, 0x4f3b099c, 0x5963f4b0, 0xd4eb0952,
+ 0x99030935, 0x148bf4d7, 0xb014e09b, 0x3d9c1d79, 0x70741d1e,
+ 0xfdfce0fc, 0xeba41dd0, 0x662ce032, 0x2bc4e055, 0xa64c1db7,
+ 0x07751a0d, 0x8afde7ef, 0xc715e788, 0x4a9d1a6a, 0x5cc5e746,
+ 0xd14d1aa4, 0x9ca51ac3, 0x112de721, 0x05a613f6, 0x882eee14,
+ 0xc5c6ee73, 0x484e1391, 0x5e16eebd, 0xd39e135f, 0x9e761338,
+ 0x13feeeda, 0xb2c7e960, 0x3f4f1482, 0x72a714e5, 0xff2fe907,
+ 0xe977142b, 0x64ffe9c9, 0x2917e9ae, 0xa49f144c, 0xbb58c777,
+ 0x36d03a95, 0x7b383af2, 0xf6b0c710, 0xe0e83a3c, 0x6d60c7de,
+ 0x2088c7b9, 0xad003a5b, 0x0c393de1, 0x81b1c003, 0xcc59c064,
+ 0x41d13d86, 0x5789c0aa, 0xda013d48, 0x97e93d2f, 0x1a61c0cd,
+ 0x0eea341a, 0x8362c9f8, 0xce8ac99f, 0x4302347d, 0x555ac951,
+ 0xd8d234b3, 0x953a34d4, 0x18b2c936, 0xb98bce8c, 0x3403336e,
+ 0x79eb3309, 0xf463ceeb, 0xe23b33c7, 0x6fb3ce25, 0x225bce42,
+ 0xafd333a0, 0x0b4c27ec, 0x86c4da0e, 0xcb2cda69, 0x46a4278b,
+ 0x50fcdaa7, 0xdd742745, 0x909c2722, 0x1d14dac0, 0xbc2ddd7a,
+ 0x31a52098, 0x7c4d20ff, 0xf1c5dd1d, 0xe79d2031, 0x6a15ddd3,
+ 0x27fdddb4, 0xaa752056, 0xbefed481, 0x33762963, 0x7e9e2904,
+ 0xf316d4e6, 0xe54e29ca, 0x68c6d428, 0x252ed44f, 0xa8a629ad,
+ 0x099f2e17, 0x8417d3f5, 0xc9ffd392, 0x44772e70, 0x522fd35c,
+ 0xdfa72ebe, 0x924f2ed9, 0x1fc7d33b, 0xadc088af, 0x2048754d,
+ 0x6da0752a, 0xe02888c8, 0xf67075e4, 0x7bf88806, 0x36108861,
+ 0xbb987583, 0x1aa17239, 0x97298fdb, 0xdac18fbc, 0x5749725e,
+ 0x41118f72, 0xcc997290, 0x817172f7, 0x0cf98f15, 0x18727bc2,
+ 0x95fa8620, 0xd8128647, 0x559a7ba5, 0x43c28689, 0xce4a7b6b,
+ 0x83a27b0c, 0x0e2a86ee, 0xaf138154, 0x229b7cb6, 0x6f737cd1,
+ 0xe2fb8133, 0xf4a37c1f, 0x792b81fd, 0x34c3819a, 0xb94b7c78,
+ 0x1dd46834, 0x905c95d6, 0xddb495b1, 0x503c6853, 0x4664957f,
+ 0xcbec689d, 0x860468fa, 0x0b8c9518, 0xaab592a2, 0x273d6f40,
+ 0x6ad56f27, 0xe75d92c5, 0xf1056fe9, 0x7c8d920b, 0x3165926c,
+ 0xbced6f8e, 0xa8669b59, 0x25ee66bb, 0x680666dc, 0xe58e9b3e,
+ 0xf3d66612, 0x7e5e9bf0, 0x33b69b97, 0xbe3e6675, 0x1f0761cf,
+ 0x928f9c2d, 0xdf679c4a, 0x52ef61a8, 0x44b79c84, 0xc93f6166,
+ 0x84d76101, 0x095f9ce3, 0x16984fd8, 0x9b10b23a, 0xd6f8b25d,
+ 0x5b704fbf, 0x4d28b293, 0xc0a04f71, 0x8d484f16, 0x00c0b2f4,
+ 0xa1f9b54e, 0x2c7148ac, 0x619948cb, 0xec11b529, 0xfa494805,
+ 0x77c1b5e7, 0x3a29b580, 0xb7a14862, 0xa32abcb5, 0x2ea24157,
+ 0x634a4130, 0xeec2bcd2, 0xf89a41fe, 0x7512bc1c, 0x38fabc7b,
+ 0xb5724199, 0x144b4623, 0x99c3bbc1, 0xd42bbba6, 0x59a34644,
+ 0x4ffbbb68, 0xc273468a, 0x8f9b46ed, 0x0213bb0f, 0xa68caf43,
+ 0x2b0452a1, 0x66ec52c6, 0xeb64af24, 0xfd3c5208, 0x70b4afea,
+ 0x3d5caf8d, 0xb0d4526f, 0x11ed55d5, 0x9c65a837, 0xd18da850,
+ 0x5c0555b2, 0x4a5da89e, 0xc7d5557c, 0x8a3d551b, 0x07b5a8f9,
+ 0x133e5c2e, 0x9eb6a1cc, 0xd35ea1ab, 0x5ed65c49, 0x488ea165,
+ 0xc5065c87, 0x88ee5ce0, 0x0566a102, 0xa45fa6b8, 0x29d75b5a,
+ 0x643f5b3d, 0xe9b7a6df, 0xffef5bf3, 0x7267a611, 0x3f8fa676,
+ 0xb2075b94},
+ {0x00000000, 0x80f0171f, 0xda91287f, 0x5a613f60, 0x6e5356bf,
+ 0xeea341a0, 0xb4c27ec0, 0x343269df, 0xdca6ad7e, 0x5c56ba61,
+ 0x06378501, 0x86c7921e, 0xb2f5fbc1, 0x3205ecde, 0x6864d3be,
+ 0xe894c4a1, 0x623c5cbd, 0xe2cc4ba2, 0xb8ad74c2, 0x385d63dd,
+ 0x0c6f0a02, 0x8c9f1d1d, 0xd6fe227d, 0x560e3562, 0xbe9af1c3,
+ 0x3e6ae6dc, 0x640bd9bc, 0xe4fbcea3, 0xd0c9a77c, 0x5039b063,
+ 0x0a588f03, 0x8aa8981c, 0xc478b97a, 0x4488ae65, 0x1ee99105,
+ 0x9e19861a, 0xaa2befc5, 0x2adbf8da, 0x70bac7ba, 0xf04ad0a5,
+ 0x18de1404, 0x982e031b, 0xc24f3c7b, 0x42bf2b64, 0x768d42bb,
+ 0xf67d55a4, 0xac1c6ac4, 0x2cec7ddb, 0xa644e5c7, 0x26b4f2d8,
+ 0x7cd5cdb8, 0xfc25daa7, 0xc817b378, 0x48e7a467, 0x12869b07,
+ 0x92768c18, 0x7ae248b9, 0xfa125fa6, 0xa07360c6, 0x208377d9,
+ 0x14b11e06, 0x94410919, 0xce203679, 0x4ed02166, 0x538074b5,
+ 0xd37063aa, 0x89115cca, 0x09e14bd5, 0x3dd3220a, 0xbd233515,
+ 0xe7420a75, 0x67b21d6a, 0x8f26d9cb, 0x0fd6ced4, 0x55b7f1b4,
+ 0xd547e6ab, 0xe1758f74, 0x6185986b, 0x3be4a70b, 0xbb14b014,
+ 0x31bc2808, 0xb14c3f17, 0xeb2d0077, 0x6bdd1768, 0x5fef7eb7,
+ 0xdf1f69a8, 0x857e56c8, 0x058e41d7, 0xed1a8576, 0x6dea9269,
+ 0x378bad09, 0xb77bba16, 0x8349d3c9, 0x03b9c4d6, 0x59d8fbb6,
+ 0xd928eca9, 0x97f8cdcf, 0x1708dad0, 0x4d69e5b0, 0xcd99f2af,
+ 0xf9ab9b70, 0x795b8c6f, 0x233ab30f, 0xa3caa410, 0x4b5e60b1,
+ 0xcbae77ae, 0x91cf48ce, 0x113f5fd1, 0x250d360e, 0xa5fd2111,
+ 0xff9c1e71, 0x7f6c096e, 0xf5c49172, 0x7534866d, 0x2f55b90d,
+ 0xafa5ae12, 0x9b97c7cd, 0x1b67d0d2, 0x4106efb2, 0xc1f6f8ad,
+ 0x29623c0c, 0xa9922b13, 0xf3f31473, 0x7303036c, 0x47316ab3,
+ 0xc7c17dac, 0x9da042cc, 0x1d5055d3, 0xa700e96a, 0x27f0fe75,
+ 0x7d91c115, 0xfd61d60a, 0xc953bfd5, 0x49a3a8ca, 0x13c297aa,
+ 0x933280b5, 0x7ba64414, 0xfb56530b, 0xa1376c6b, 0x21c77b74,
+ 0x15f512ab, 0x950505b4, 0xcf643ad4, 0x4f942dcb, 0xc53cb5d7,
+ 0x45cca2c8, 0x1fad9da8, 0x9f5d8ab7, 0xab6fe368, 0x2b9ff477,
+ 0x71fecb17, 0xf10edc08, 0x199a18a9, 0x996a0fb6, 0xc30b30d6,
+ 0x43fb27c9, 0x77c94e16, 0xf7395909, 0xad586669, 0x2da87176,
+ 0x63785010, 0xe388470f, 0xb9e9786f, 0x39196f70, 0x0d2b06af,
+ 0x8ddb11b0, 0xd7ba2ed0, 0x574a39cf, 0xbfdefd6e, 0x3f2eea71,
+ 0x654fd511, 0xe5bfc20e, 0xd18dabd1, 0x517dbcce, 0x0b1c83ae,
+ 0x8bec94b1, 0x01440cad, 0x81b41bb2, 0xdbd524d2, 0x5b2533cd,
+ 0x6f175a12, 0xefe74d0d, 0xb586726d, 0x35766572, 0xdde2a1d3,
+ 0x5d12b6cc, 0x077389ac, 0x87839eb3, 0xb3b1f76c, 0x3341e073,
+ 0x6920df13, 0xe9d0c80c, 0xf4809ddf, 0x74708ac0, 0x2e11b5a0,
+ 0xaee1a2bf, 0x9ad3cb60, 0x1a23dc7f, 0x4042e31f, 0xc0b2f400,
+ 0x282630a1, 0xa8d627be, 0xf2b718de, 0x72470fc1, 0x4675661e,
+ 0xc6857101, 0x9ce44e61, 0x1c14597e, 0x96bcc162, 0x164cd67d,
+ 0x4c2de91d, 0xccddfe02, 0xf8ef97dd, 0x781f80c2, 0x227ebfa2,
+ 0xa28ea8bd, 0x4a1a6c1c, 0xcaea7b03, 0x908b4463, 0x107b537c,
+ 0x24493aa3, 0xa4b92dbc, 0xfed812dc, 0x7e2805c3, 0x30f824a5,
+ 0xb00833ba, 0xea690cda, 0x6a991bc5, 0x5eab721a, 0xde5b6505,
+ 0x843a5a65, 0x04ca4d7a, 0xec5e89db, 0x6cae9ec4, 0x36cfa1a4,
+ 0xb63fb6bb, 0x820ddf64, 0x02fdc87b, 0x589cf71b, 0xd86ce004,
+ 0x52c47818, 0xd2346f07, 0x88555067, 0x08a54778, 0x3c972ea7,
+ 0xbc6739b8, 0xe60606d8, 0x66f611c7, 0x8e62d566, 0x0e92c279,
+ 0x54f3fd19, 0xd403ea06, 0xe03183d9, 0x60c194c6, 0x3aa0aba6,
+ 0xba50bcb9},
+ {0x00000000, 0x9570d495, 0xf190af6b, 0x64e07bfe, 0x38505897,
+ 0xad208c02, 0xc9c0f7fc, 0x5cb02369, 0x70a0b12e, 0xe5d065bb,
+ 0x81301e45, 0x1440cad0, 0x48f0e9b9, 0xdd803d2c, 0xb96046d2,
+ 0x2c109247, 0xe141625c, 0x7431b6c9, 0x10d1cd37, 0x85a119a2,
+ 0xd9113acb, 0x4c61ee5e, 0x288195a0, 0xbdf14135, 0x91e1d372,
+ 0x049107e7, 0x60717c19, 0xf501a88c, 0xa9b18be5, 0x3cc15f70,
+ 0x5821248e, 0xcd51f01b, 0x19f3c2f9, 0x8c83166c, 0xe8636d92,
+ 0x7d13b907, 0x21a39a6e, 0xb4d34efb, 0xd0333505, 0x4543e190,
+ 0x695373d7, 0xfc23a742, 0x98c3dcbc, 0x0db30829, 0x51032b40,
+ 0xc473ffd5, 0xa093842b, 0x35e350be, 0xf8b2a0a5, 0x6dc27430,
+ 0x09220fce, 0x9c52db5b, 0xc0e2f832, 0x55922ca7, 0x31725759,
+ 0xa40283cc, 0x8812118b, 0x1d62c51e, 0x7982bee0, 0xecf26a75,
+ 0xb042491c, 0x25329d89, 0x41d2e677, 0xd4a232e2, 0x33e785f2,
+ 0xa6975167, 0xc2772a99, 0x5707fe0c, 0x0bb7dd65, 0x9ec709f0,
+ 0xfa27720e, 0x6f57a69b, 0x434734dc, 0xd637e049, 0xb2d79bb7,
+ 0x27a74f22, 0x7b176c4b, 0xee67b8de, 0x8a87c320, 0x1ff717b5,
+ 0xd2a6e7ae, 0x47d6333b, 0x233648c5, 0xb6469c50, 0xeaf6bf39,
+ 0x7f866bac, 0x1b661052, 0x8e16c4c7, 0xa2065680, 0x37768215,
+ 0x5396f9eb, 0xc6e62d7e, 0x9a560e17, 0x0f26da82, 0x6bc6a17c,
+ 0xfeb675e9, 0x2a14470b, 0xbf64939e, 0xdb84e860, 0x4ef43cf5,
+ 0x12441f9c, 0x8734cb09, 0xe3d4b0f7, 0x76a46462, 0x5ab4f625,
+ 0xcfc422b0, 0xab24594e, 0x3e548ddb, 0x62e4aeb2, 0xf7947a27,
+ 0x937401d9, 0x0604d54c, 0xcb552557, 0x5e25f1c2, 0x3ac58a3c,
+ 0xafb55ea9, 0xf3057dc0, 0x6675a955, 0x0295d2ab, 0x97e5063e,
+ 0xbbf59479, 0x2e8540ec, 0x4a653b12, 0xdf15ef87, 0x83a5ccee,
+ 0x16d5187b, 0x72356385, 0xe745b710, 0x67cf0be4, 0xf2bfdf71,
+ 0x965fa48f, 0x032f701a, 0x5f9f5373, 0xcaef87e6, 0xae0ffc18,
+ 0x3b7f288d, 0x176fbaca, 0x821f6e5f, 0xe6ff15a1, 0x738fc134,
+ 0x2f3fe25d, 0xba4f36c8, 0xdeaf4d36, 0x4bdf99a3, 0x868e69b8,
+ 0x13febd2d, 0x771ec6d3, 0xe26e1246, 0xbede312f, 0x2baee5ba,
+ 0x4f4e9e44, 0xda3e4ad1, 0xf62ed896, 0x635e0c03, 0x07be77fd,
+ 0x92cea368, 0xce7e8001, 0x5b0e5494, 0x3fee2f6a, 0xaa9efbff,
+ 0x7e3cc91d, 0xeb4c1d88, 0x8fac6676, 0x1adcb2e3, 0x466c918a,
+ 0xd31c451f, 0xb7fc3ee1, 0x228cea74, 0x0e9c7833, 0x9becaca6,
+ 0xff0cd758, 0x6a7c03cd, 0x36cc20a4, 0xa3bcf431, 0xc75c8fcf,
+ 0x522c5b5a, 0x9f7dab41, 0x0a0d7fd4, 0x6eed042a, 0xfb9dd0bf,
+ 0xa72df3d6, 0x325d2743, 0x56bd5cbd, 0xc3cd8828, 0xefdd1a6f,
+ 0x7aadcefa, 0x1e4db504, 0x8b3d6191, 0xd78d42f8, 0x42fd966d,
+ 0x261ded93, 0xb36d3906, 0x54288e16, 0xc1585a83, 0xa5b8217d,
+ 0x30c8f5e8, 0x6c78d681, 0xf9080214, 0x9de879ea, 0x0898ad7f,
+ 0x24883f38, 0xb1f8ebad, 0xd5189053, 0x406844c6, 0x1cd867af,
+ 0x89a8b33a, 0xed48c8c4, 0x78381c51, 0xb569ec4a, 0x201938df,
+ 0x44f94321, 0xd18997b4, 0x8d39b4dd, 0x18496048, 0x7ca91bb6,
+ 0xe9d9cf23, 0xc5c95d64, 0x50b989f1, 0x3459f20f, 0xa129269a,
+ 0xfd9905f3, 0x68e9d166, 0x0c09aa98, 0x99797e0d, 0x4ddb4cef,
+ 0xd8ab987a, 0xbc4be384, 0x293b3711, 0x758b1478, 0xe0fbc0ed,
+ 0x841bbb13, 0x116b6f86, 0x3d7bfdc1, 0xa80b2954, 0xcceb52aa,
+ 0x599b863f, 0x052ba556, 0x905b71c3, 0xf4bb0a3d, 0x61cbdea8,
+ 0xac9a2eb3, 0x39eafa26, 0x5d0a81d8, 0xc87a554d, 0x94ca7624,
+ 0x01baa2b1, 0x655ad94f, 0xf02a0dda, 0xdc3a9f9d, 0x494a4b08,
+ 0x2daa30f6, 0xb8dae463, 0xe46ac70a, 0x711a139f, 0x15fa6861,
+ 0x808abcf4},
+ {0x00000000, 0xcf9e17c8, 0x444d29d1, 0x8bd33e19, 0x889a53a2,
+ 0x4704446a, 0xccd77a73, 0x03496dbb, 0xca45a105, 0x05dbb6cd,
+ 0x8e0888d4, 0x41969f1c, 0x42dff2a7, 0x8d41e56f, 0x0692db76,
+ 0xc90cccbe, 0x4ffa444b, 0x80645383, 0x0bb76d9a, 0xc4297a52,
+ 0xc76017e9, 0x08fe0021, 0x832d3e38, 0x4cb329f0, 0x85bfe54e,
+ 0x4a21f286, 0xc1f2cc9f, 0x0e6cdb57, 0x0d25b6ec, 0xc2bba124,
+ 0x49689f3d, 0x86f688f5, 0x9ff48896, 0x506a9f5e, 0xdbb9a147,
+ 0x1427b68f, 0x176edb34, 0xd8f0ccfc, 0x5323f2e5, 0x9cbde52d,
+ 0x55b12993, 0x9a2f3e5b, 0x11fc0042, 0xde62178a, 0xdd2b7a31,
+ 0x12b56df9, 0x996653e0, 0x56f84428, 0xd00eccdd, 0x1f90db15,
+ 0x9443e50c, 0x5bddf2c4, 0x58949f7f, 0x970a88b7, 0x1cd9b6ae,
+ 0xd347a166, 0x1a4b6dd8, 0xd5d57a10, 0x5e064409, 0x919853c1,
+ 0x92d13e7a, 0x5d4f29b2, 0xd69c17ab, 0x19020063, 0xe498176d,
+ 0x2b0600a5, 0xa0d53ebc, 0x6f4b2974, 0x6c0244cf, 0xa39c5307,
+ 0x284f6d1e, 0xe7d17ad6, 0x2eddb668, 0xe143a1a0, 0x6a909fb9,
+ 0xa50e8871, 0xa647e5ca, 0x69d9f202, 0xe20acc1b, 0x2d94dbd3,
+ 0xab625326, 0x64fc44ee, 0xef2f7af7, 0x20b16d3f, 0x23f80084,
+ 0xec66174c, 0x67b52955, 0xa82b3e9d, 0x6127f223, 0xaeb9e5eb,
+ 0x256adbf2, 0xeaf4cc3a, 0xe9bda181, 0x2623b649, 0xadf08850,
+ 0x626e9f98, 0x7b6c9ffb, 0xb4f28833, 0x3f21b62a, 0xf0bfa1e2,
+ 0xf3f6cc59, 0x3c68db91, 0xb7bbe588, 0x7825f240, 0xb1293efe,
+ 0x7eb72936, 0xf564172f, 0x3afa00e7, 0x39b36d5c, 0xf62d7a94,
+ 0x7dfe448d, 0xb2605345, 0x3496dbb0, 0xfb08cc78, 0x70dbf261,
+ 0xbf45e5a9, 0xbc0c8812, 0x73929fda, 0xf841a1c3, 0x37dfb60b,
+ 0xfed37ab5, 0x314d6d7d, 0xba9e5364, 0x750044ac, 0x76492917,
+ 0xb9d73edf, 0x320400c6, 0xfd9a170e, 0x1241289b, 0xdddf3f53,
+ 0x560c014a, 0x99921682, 0x9adb7b39, 0x55456cf1, 0xde9652e8,
+ 0x11084520, 0xd804899e, 0x179a9e56, 0x9c49a04f, 0x53d7b787,
+ 0x509eda3c, 0x9f00cdf4, 0x14d3f3ed, 0xdb4de425, 0x5dbb6cd0,
+ 0x92257b18, 0x19f64501, 0xd66852c9, 0xd5213f72, 0x1abf28ba,
+ 0x916c16a3, 0x5ef2016b, 0x97fecdd5, 0x5860da1d, 0xd3b3e404,
+ 0x1c2df3cc, 0x1f649e77, 0xd0fa89bf, 0x5b29b7a6, 0x94b7a06e,
+ 0x8db5a00d, 0x422bb7c5, 0xc9f889dc, 0x06669e14, 0x052ff3af,
+ 0xcab1e467, 0x4162da7e, 0x8efccdb6, 0x47f00108, 0x886e16c0,
+ 0x03bd28d9, 0xcc233f11, 0xcf6a52aa, 0x00f44562, 0x8b277b7b,
+ 0x44b96cb3, 0xc24fe446, 0x0dd1f38e, 0x8602cd97, 0x499cda5f,
+ 0x4ad5b7e4, 0x854ba02c, 0x0e989e35, 0xc10689fd, 0x080a4543,
+ 0xc794528b, 0x4c476c92, 0x83d97b5a, 0x809016e1, 0x4f0e0129,
+ 0xc4dd3f30, 0x0b4328f8, 0xf6d93ff6, 0x3947283e, 0xb2941627,
+ 0x7d0a01ef, 0x7e436c54, 0xb1dd7b9c, 0x3a0e4585, 0xf590524d,
+ 0x3c9c9ef3, 0xf302893b, 0x78d1b722, 0xb74fa0ea, 0xb406cd51,
+ 0x7b98da99, 0xf04be480, 0x3fd5f348, 0xb9237bbd, 0x76bd6c75,
+ 0xfd6e526c, 0x32f045a4, 0x31b9281f, 0xfe273fd7, 0x75f401ce,
+ 0xba6a1606, 0x7366dab8, 0xbcf8cd70, 0x372bf369, 0xf8b5e4a1,
+ 0xfbfc891a, 0x34629ed2, 0xbfb1a0cb, 0x702fb703, 0x692db760,
+ 0xa6b3a0a8, 0x2d609eb1, 0xe2fe8979, 0xe1b7e4c2, 0x2e29f30a,
+ 0xa5facd13, 0x6a64dadb, 0xa3681665, 0x6cf601ad, 0xe7253fb4,
+ 0x28bb287c, 0x2bf245c7, 0xe46c520f, 0x6fbf6c16, 0xa0217bde,
+ 0x26d7f32b, 0xe949e4e3, 0x629adafa, 0xad04cd32, 0xae4da089,
+ 0x61d3b741, 0xea008958, 0x259e9e90, 0xec92522e, 0x230c45e6,
+ 0xa8df7bff, 0x67416c37, 0x6408018c, 0xab961644, 0x2045285d,
+ 0xefdb3f95},
+ {0x00000000, 0x24825136, 0x4904a26c, 0x6d86f35a, 0x920944d8,
+ 0xb68b15ee, 0xdb0de6b4, 0xff8fb782, 0xff638ff1, 0xdbe1dec7,
+ 0xb6672d9d, 0x92e57cab, 0x6d6acb29, 0x49e89a1f, 0x246e6945,
+ 0x00ec3873, 0x25b619a3, 0x01344895, 0x6cb2bbcf, 0x4830eaf9,
+ 0xb7bf5d7b, 0x933d0c4d, 0xfebbff17, 0xda39ae21, 0xdad59652,
+ 0xfe57c764, 0x93d1343e, 0xb7536508, 0x48dcd28a, 0x6c5e83bc,
+ 0x01d870e6, 0x255a21d0, 0x4b6c3346, 0x6fee6270, 0x0268912a,
+ 0x26eac01c, 0xd965779e, 0xfde726a8, 0x9061d5f2, 0xb4e384c4,
+ 0xb40fbcb7, 0x908ded81, 0xfd0b1edb, 0xd9894fed, 0x2606f86f,
+ 0x0284a959, 0x6f025a03, 0x4b800b35, 0x6eda2ae5, 0x4a587bd3,
+ 0x27de8889, 0x035cd9bf, 0xfcd36e3d, 0xd8513f0b, 0xb5d7cc51,
+ 0x91559d67, 0x91b9a514, 0xb53bf422, 0xd8bd0778, 0xfc3f564e,
+ 0x03b0e1cc, 0x2732b0fa, 0x4ab443a0, 0x6e361296, 0x96d8668c,
+ 0xb25a37ba, 0xdfdcc4e0, 0xfb5e95d6, 0x04d12254, 0x20537362,
+ 0x4dd58038, 0x6957d10e, 0x69bbe97d, 0x4d39b84b, 0x20bf4b11,
+ 0x043d1a27, 0xfbb2ada5, 0xdf30fc93, 0xb2b60fc9, 0x96345eff,
+ 0xb36e7f2f, 0x97ec2e19, 0xfa6add43, 0xdee88c75, 0x21673bf7,
+ 0x05e56ac1, 0x6863999b, 0x4ce1c8ad, 0x4c0df0de, 0x688fa1e8,
+ 0x050952b2, 0x218b0384, 0xde04b406, 0xfa86e530, 0x9700166a,
+ 0xb382475c, 0xddb455ca, 0xf93604fc, 0x94b0f7a6, 0xb032a690,
+ 0x4fbd1112, 0x6b3f4024, 0x06b9b37e, 0x223be248, 0x22d7da3b,
+ 0x06558b0d, 0x6bd37857, 0x4f512961, 0xb0de9ee3, 0x945ccfd5,
+ 0xf9da3c8f, 0xdd586db9, 0xf8024c69, 0xdc801d5f, 0xb106ee05,
+ 0x9584bf33, 0x6a0b08b1, 0x4e895987, 0x230faadd, 0x078dfbeb,
+ 0x0761c398, 0x23e392ae, 0x4e6561f4, 0x6ae730c2, 0x95688740,
+ 0xb1ead676, 0xdc6c252c, 0xf8ee741a, 0xf6c1cb59, 0xd2439a6f,
+ 0xbfc56935, 0x9b473803, 0x64c88f81, 0x404adeb7, 0x2dcc2ded,
+ 0x094e7cdb, 0x09a244a8, 0x2d20159e, 0x40a6e6c4, 0x6424b7f2,
+ 0x9bab0070, 0xbf295146, 0xd2afa21c, 0xf62df32a, 0xd377d2fa,
+ 0xf7f583cc, 0x9a737096, 0xbef121a0, 0x417e9622, 0x65fcc714,
+ 0x087a344e, 0x2cf86578, 0x2c145d0b, 0x08960c3d, 0x6510ff67,
+ 0x4192ae51, 0xbe1d19d3, 0x9a9f48e5, 0xf719bbbf, 0xd39bea89,
+ 0xbdadf81f, 0x992fa929, 0xf4a95a73, 0xd02b0b45, 0x2fa4bcc7,
+ 0x0b26edf1, 0x66a01eab, 0x42224f9d, 0x42ce77ee, 0x664c26d8,
+ 0x0bcad582, 0x2f4884b4, 0xd0c73336, 0xf4456200, 0x99c3915a,
+ 0xbd41c06c, 0x981be1bc, 0xbc99b08a, 0xd11f43d0, 0xf59d12e6,
+ 0x0a12a564, 0x2e90f452, 0x43160708, 0x6794563e, 0x67786e4d,
+ 0x43fa3f7b, 0x2e7ccc21, 0x0afe9d17, 0xf5712a95, 0xd1f37ba3,
+ 0xbc7588f9, 0x98f7d9cf, 0x6019add5, 0x449bfce3, 0x291d0fb9,
+ 0x0d9f5e8f, 0xf210e90d, 0xd692b83b, 0xbb144b61, 0x9f961a57,
+ 0x9f7a2224, 0xbbf87312, 0xd67e8048, 0xf2fcd17e, 0x0d7366fc,
+ 0x29f137ca, 0x4477c490, 0x60f595a6, 0x45afb476, 0x612de540,
+ 0x0cab161a, 0x2829472c, 0xd7a6f0ae, 0xf324a198, 0x9ea252c2,
+ 0xba2003f4, 0xbacc3b87, 0x9e4e6ab1, 0xf3c899eb, 0xd74ac8dd,
+ 0x28c57f5f, 0x0c472e69, 0x61c1dd33, 0x45438c05, 0x2b759e93,
+ 0x0ff7cfa5, 0x62713cff, 0x46f36dc9, 0xb97cda4b, 0x9dfe8b7d,
+ 0xf0787827, 0xd4fa2911, 0xd4161162, 0xf0944054, 0x9d12b30e,
+ 0xb990e238, 0x461f55ba, 0x629d048c, 0x0f1bf7d6, 0x2b99a6e0,
+ 0x0ec38730, 0x2a41d606, 0x47c7255c, 0x6345746a, 0x9ccac3e8,
+ 0xb84892de, 0xd5ce6184, 0xf14c30b2, 0xf1a008c1, 0xd52259f7,
+ 0xb8a4aaad, 0x9c26fb9b, 0x63a94c19, 0x472b1d2f, 0x2aadee75,
+ 0x0e2fbf43},
+ {0x00000000, 0x36f290f3, 0x6de521e6, 0x5b17b115, 0xdbca43cc,
+ 0xed38d33f, 0xb62f622a, 0x80ddf2d9, 0x6ce581d9, 0x5a17112a,
+ 0x0100a03f, 0x37f230cc, 0xb72fc215, 0x81dd52e6, 0xdacae3f3,
+ 0xec387300, 0xd9cb03b2, 0xef399341, 0xb42e2254, 0x82dcb2a7,
+ 0x0201407e, 0x34f3d08d, 0x6fe46198, 0x5916f16b, 0xb52e826b,
+ 0x83dc1298, 0xd8cba38d, 0xee39337e, 0x6ee4c1a7, 0x58165154,
+ 0x0301e041, 0x35f370b2, 0x68e70125, 0x5e1591d6, 0x050220c3,
+ 0x33f0b030, 0xb32d42e9, 0x85dfd21a, 0xdec8630f, 0xe83af3fc,
+ 0x040280fc, 0x32f0100f, 0x69e7a11a, 0x5f1531e9, 0xdfc8c330,
+ 0xe93a53c3, 0xb22de2d6, 0x84df7225, 0xb12c0297, 0x87de9264,
+ 0xdcc92371, 0xea3bb382, 0x6ae6415b, 0x5c14d1a8, 0x070360bd,
+ 0x31f1f04e, 0xddc9834e, 0xeb3b13bd, 0xb02ca2a8, 0x86de325b,
+ 0x0603c082, 0x30f15071, 0x6be6e164, 0x5d147197, 0xd1ce024a,
+ 0xe73c92b9, 0xbc2b23ac, 0x8ad9b35f, 0x0a044186, 0x3cf6d175,
+ 0x67e16060, 0x5113f093, 0xbd2b8393, 0x8bd91360, 0xd0cea275,
+ 0xe63c3286, 0x66e1c05f, 0x501350ac, 0x0b04e1b9, 0x3df6714a,
+ 0x080501f8, 0x3ef7910b, 0x65e0201e, 0x5312b0ed, 0xd3cf4234,
+ 0xe53dd2c7, 0xbe2a63d2, 0x88d8f321, 0x64e08021, 0x521210d2,
+ 0x0905a1c7, 0x3ff73134, 0xbf2ac3ed, 0x89d8531e, 0xd2cfe20b,
+ 0xe43d72f8, 0xb929036f, 0x8fdb939c, 0xd4cc2289, 0xe23eb27a,
+ 0x62e340a3, 0x5411d050, 0x0f066145, 0x39f4f1b6, 0xd5cc82b6,
+ 0xe33e1245, 0xb829a350, 0x8edb33a3, 0x0e06c17a, 0x38f45189,
+ 0x63e3e09c, 0x5511706f, 0x60e200dd, 0x5610902e, 0x0d07213b,
+ 0x3bf5b1c8, 0xbb284311, 0x8ddad3e2, 0xd6cd62f7, 0xe03ff204,
+ 0x0c078104, 0x3af511f7, 0x61e2a0e2, 0x57103011, 0xd7cdc2c8,
+ 0xe13f523b, 0xba28e32e, 0x8cda73dd, 0x78ed02d5, 0x4e1f9226,
+ 0x15082333, 0x23fab3c0, 0xa3274119, 0x95d5d1ea, 0xcec260ff,
+ 0xf830f00c, 0x1408830c, 0x22fa13ff, 0x79eda2ea, 0x4f1f3219,
+ 0xcfc2c0c0, 0xf9305033, 0xa227e126, 0x94d571d5, 0xa1260167,
+ 0x97d49194, 0xccc32081, 0xfa31b072, 0x7aec42ab, 0x4c1ed258,
+ 0x1709634d, 0x21fbf3be, 0xcdc380be, 0xfb31104d, 0xa026a158,
+ 0x96d431ab, 0x1609c372, 0x20fb5381, 0x7bece294, 0x4d1e7267,
+ 0x100a03f0, 0x26f89303, 0x7def2216, 0x4b1db2e5, 0xcbc0403c,
+ 0xfd32d0cf, 0xa62561da, 0x90d7f129, 0x7cef8229, 0x4a1d12da,
+ 0x110aa3cf, 0x27f8333c, 0xa725c1e5, 0x91d75116, 0xcac0e003,
+ 0xfc3270f0, 0xc9c10042, 0xff3390b1, 0xa42421a4, 0x92d6b157,
+ 0x120b438e, 0x24f9d37d, 0x7fee6268, 0x491cf29b, 0xa524819b,
+ 0x93d61168, 0xc8c1a07d, 0xfe33308e, 0x7eeec257, 0x481c52a4,
+ 0x130be3b1, 0x25f97342, 0xa923009f, 0x9fd1906c, 0xc4c62179,
+ 0xf234b18a, 0x72e94353, 0x441bd3a0, 0x1f0c62b5, 0x29fef246,
+ 0xc5c68146, 0xf33411b5, 0xa823a0a0, 0x9ed13053, 0x1e0cc28a,
+ 0x28fe5279, 0x73e9e36c, 0x451b739f, 0x70e8032d, 0x461a93de,
+ 0x1d0d22cb, 0x2bffb238, 0xab2240e1, 0x9dd0d012, 0xc6c76107,
+ 0xf035f1f4, 0x1c0d82f4, 0x2aff1207, 0x71e8a312, 0x471a33e1,
+ 0xc7c7c138, 0xf13551cb, 0xaa22e0de, 0x9cd0702d, 0xc1c401ba,
+ 0xf7369149, 0xac21205c, 0x9ad3b0af, 0x1a0e4276, 0x2cfcd285,
+ 0x77eb6390, 0x4119f363, 0xad218063, 0x9bd31090, 0xc0c4a185,
+ 0xf6363176, 0x76ebc3af, 0x4019535c, 0x1b0ee249, 0x2dfc72ba,
+ 0x180f0208, 0x2efd92fb, 0x75ea23ee, 0x4318b31d, 0xc3c541c4,
+ 0xf537d137, 0xae206022, 0x98d2f0d1, 0x74ea83d1, 0x42181322,
+ 0x190fa237, 0x2ffd32c4, 0xaf20c01d, 0x99d250ee, 0xc2c5e1fb,
+ 0xf4377108}};
+
+local const z_word_t FAR crc_braid_big_table[][256] = {
+ {0x0000000000000000, 0xf390f23600000000, 0xe621e56d00000000,
+ 0x15b1175b00000000, 0xcc43cadb00000000, 0x3fd338ed00000000,
+ 0x2a622fb600000000, 0xd9f2dd8000000000, 0xd981e56c00000000,
+ 0x2a11175a00000000, 0x3fa0000100000000, 0xcc30f23700000000,
+ 0x15c22fb700000000, 0xe652dd8100000000, 0xf3e3cada00000000,
+ 0x007338ec00000000, 0xb203cbd900000000, 0x419339ef00000000,
+ 0x54222eb400000000, 0xa7b2dc8200000000, 0x7e40010200000000,
+ 0x8dd0f33400000000, 0x9861e46f00000000, 0x6bf1165900000000,
+ 0x6b822eb500000000, 0x9812dc8300000000, 0x8da3cbd800000000,
+ 0x7e3339ee00000000, 0xa7c1e46e00000000, 0x5451165800000000,
+ 0x41e0010300000000, 0xb270f33500000000, 0x2501e76800000000,
+ 0xd691155e00000000, 0xc320020500000000, 0x30b0f03300000000,
+ 0xe9422db300000000, 0x1ad2df8500000000, 0x0f63c8de00000000,
+ 0xfcf33ae800000000, 0xfc80020400000000, 0x0f10f03200000000,
+ 0x1aa1e76900000000, 0xe931155f00000000, 0x30c3c8df00000000,
+ 0xc3533ae900000000, 0xd6e22db200000000, 0x2572df8400000000,
+ 0x97022cb100000000, 0x6492de8700000000, 0x7123c9dc00000000,
+ 0x82b33bea00000000, 0x5b41e66a00000000, 0xa8d1145c00000000,
+ 0xbd60030700000000, 0x4ef0f13100000000, 0x4e83c9dd00000000,
+ 0xbd133beb00000000, 0xa8a22cb000000000, 0x5b32de8600000000,
+ 0x82c0030600000000, 0x7150f13000000000, 0x64e1e66b00000000,
+ 0x9771145d00000000, 0x4a02ced100000000, 0xb9923ce700000000,
+ 0xac232bbc00000000, 0x5fb3d98a00000000, 0x8641040a00000000,
+ 0x75d1f63c00000000, 0x6060e16700000000, 0x93f0135100000000,
+ 0x93832bbd00000000, 0x6013d98b00000000, 0x75a2ced000000000,
+ 0x86323ce600000000, 0x5fc0e16600000000, 0xac50135000000000,
+ 0xb9e1040b00000000, 0x4a71f63d00000000, 0xf801050800000000,
+ 0x0b91f73e00000000, 0x1e20e06500000000, 0xedb0125300000000,
+ 0x3442cfd300000000, 0xc7d23de500000000, 0xd2632abe00000000,
+ 0x21f3d88800000000, 0x2180e06400000000, 0xd210125200000000,
+ 0xc7a1050900000000, 0x3431f73f00000000, 0xedc32abf00000000,
+ 0x1e53d88900000000, 0x0be2cfd200000000, 0xf8723de400000000,
+ 0x6f0329b900000000, 0x9c93db8f00000000, 0x8922ccd400000000,
+ 0x7ab23ee200000000, 0xa340e36200000000, 0x50d0115400000000,
+ 0x4561060f00000000, 0xb6f1f43900000000, 0xb682ccd500000000,
+ 0x45123ee300000000, 0x50a329b800000000, 0xa333db8e00000000,
+ 0x7ac1060e00000000, 0x8951f43800000000, 0x9ce0e36300000000,
+ 0x6f70115500000000, 0xdd00e26000000000, 0x2e90105600000000,
+ 0x3b21070d00000000, 0xc8b1f53b00000000, 0x114328bb00000000,
+ 0xe2d3da8d00000000, 0xf762cdd600000000, 0x04f23fe000000000,
+ 0x0481070c00000000, 0xf711f53a00000000, 0xe2a0e26100000000,
+ 0x1130105700000000, 0xc8c2cdd700000000, 0x3b523fe100000000,
+ 0x2ee328ba00000000, 0xdd73da8c00000000, 0xd502ed7800000000,
+ 0x26921f4e00000000, 0x3323081500000000, 0xc0b3fa2300000000,
+ 0x194127a300000000, 0xead1d59500000000, 0xff60c2ce00000000,
+ 0x0cf030f800000000, 0x0c83081400000000, 0xff13fa2200000000,
+ 0xeaa2ed7900000000, 0x19321f4f00000000, 0xc0c0c2cf00000000,
+ 0x335030f900000000, 0x26e127a200000000, 0xd571d59400000000,
+ 0x670126a100000000, 0x9491d49700000000, 0x8120c3cc00000000,
+ 0x72b031fa00000000, 0xab42ec7a00000000, 0x58d21e4c00000000,
+ 0x4d63091700000000, 0xbef3fb2100000000, 0xbe80c3cd00000000,
+ 0x4d1031fb00000000, 0x58a126a000000000, 0xab31d49600000000,
+ 0x72c3091600000000, 0x8153fb2000000000, 0x94e2ec7b00000000,
+ 0x67721e4d00000000, 0xf0030a1000000000, 0x0393f82600000000,
+ 0x1622ef7d00000000, 0xe5b21d4b00000000, 0x3c40c0cb00000000,
+ 0xcfd032fd00000000, 0xda6125a600000000, 0x29f1d79000000000,
+ 0x2982ef7c00000000, 0xda121d4a00000000, 0xcfa30a1100000000,
+ 0x3c33f82700000000, 0xe5c125a700000000, 0x1651d79100000000,
+ 0x03e0c0ca00000000, 0xf07032fc00000000, 0x4200c1c900000000,
+ 0xb19033ff00000000, 0xa42124a400000000, 0x57b1d69200000000,
+ 0x8e430b1200000000, 0x7dd3f92400000000, 0x6862ee7f00000000,
+ 0x9bf21c4900000000, 0x9b8124a500000000, 0x6811d69300000000,
+ 0x7da0c1c800000000, 0x8e3033fe00000000, 0x57c2ee7e00000000,
+ 0xa4521c4800000000, 0xb1e30b1300000000, 0x4273f92500000000,
+ 0x9f0023a900000000, 0x6c90d19f00000000, 0x7921c6c400000000,
+ 0x8ab134f200000000, 0x5343e97200000000, 0xa0d31b4400000000,
+ 0xb5620c1f00000000, 0x46f2fe2900000000, 0x4681c6c500000000,
+ 0xb51134f300000000, 0xa0a023a800000000, 0x5330d19e00000000,
+ 0x8ac20c1e00000000, 0x7952fe2800000000, 0x6ce3e97300000000,
+ 0x9f731b4500000000, 0x2d03e87000000000, 0xde931a4600000000,
+ 0xcb220d1d00000000, 0x38b2ff2b00000000, 0xe14022ab00000000,
+ 0x12d0d09d00000000, 0x0761c7c600000000, 0xf4f135f000000000,
+ 0xf4820d1c00000000, 0x0712ff2a00000000, 0x12a3e87100000000,
+ 0xe1331a4700000000, 0x38c1c7c700000000, 0xcb5135f100000000,
+ 0xdee022aa00000000, 0x2d70d09c00000000, 0xba01c4c100000000,
+ 0x499136f700000000, 0x5c2021ac00000000, 0xafb0d39a00000000,
+ 0x76420e1a00000000, 0x85d2fc2c00000000, 0x9063eb7700000000,
+ 0x63f3194100000000, 0x638021ad00000000, 0x9010d39b00000000,
+ 0x85a1c4c000000000, 0x763136f600000000, 0xafc3eb7600000000,
+ 0x5c53194000000000, 0x49e20e1b00000000, 0xba72fc2d00000000,
+ 0x08020f1800000000, 0xfb92fd2e00000000, 0xee23ea7500000000,
+ 0x1db3184300000000, 0xc441c5c300000000, 0x37d137f500000000,
+ 0x226020ae00000000, 0xd1f0d29800000000, 0xd183ea7400000000,
+ 0x2213184200000000, 0x37a20f1900000000, 0xc432fd2f00000000,
+ 0x1dc020af00000000, 0xee50d29900000000, 0xfbe1c5c200000000,
+ 0x087137f400000000},
+ {0x0000000000000000, 0x3651822400000000, 0x6ca2044900000000,
+ 0x5af3866d00000000, 0xd844099200000000, 0xee158bb600000000,
+ 0xb4e60ddb00000000, 0x82b78fff00000000, 0xf18f63ff00000000,
+ 0xc7dee1db00000000, 0x9d2d67b600000000, 0xab7ce59200000000,
+ 0x29cb6a6d00000000, 0x1f9ae84900000000, 0x45696e2400000000,
+ 0x7338ec0000000000, 0xa319b62500000000, 0x9548340100000000,
+ 0xcfbbb26c00000000, 0xf9ea304800000000, 0x7b5dbfb700000000,
+ 0x4d0c3d9300000000, 0x17ffbbfe00000000, 0x21ae39da00000000,
+ 0x5296d5da00000000, 0x64c757fe00000000, 0x3e34d19300000000,
+ 0x086553b700000000, 0x8ad2dc4800000000, 0xbc835e6c00000000,
+ 0xe670d80100000000, 0xd0215a2500000000, 0x46336c4b00000000,
+ 0x7062ee6f00000000, 0x2a91680200000000, 0x1cc0ea2600000000,
+ 0x9e7765d900000000, 0xa826e7fd00000000, 0xf2d5619000000000,
+ 0xc484e3b400000000, 0xb7bc0fb400000000, 0x81ed8d9000000000,
+ 0xdb1e0bfd00000000, 0xed4f89d900000000, 0x6ff8062600000000,
+ 0x59a9840200000000, 0x035a026f00000000, 0x350b804b00000000,
+ 0xe52ada6e00000000, 0xd37b584a00000000, 0x8988de2700000000,
+ 0xbfd95c0300000000, 0x3d6ed3fc00000000, 0x0b3f51d800000000,
+ 0x51ccd7b500000000, 0x679d559100000000, 0x14a5b99100000000,
+ 0x22f43bb500000000, 0x7807bdd800000000, 0x4e563ffc00000000,
+ 0xcce1b00300000000, 0xfab0322700000000, 0xa043b44a00000000,
+ 0x9612366e00000000, 0x8c66d89600000000, 0xba375ab200000000,
+ 0xe0c4dcdf00000000, 0xd6955efb00000000, 0x5422d10400000000,
+ 0x6273532000000000, 0x3880d54d00000000, 0x0ed1576900000000,
+ 0x7de9bb6900000000, 0x4bb8394d00000000, 0x114bbf2000000000,
+ 0x271a3d0400000000, 0xa5adb2fb00000000, 0x93fc30df00000000,
+ 0xc90fb6b200000000, 0xff5e349600000000, 0x2f7f6eb300000000,
+ 0x192eec9700000000, 0x43dd6afa00000000, 0x758ce8de00000000,
+ 0xf73b672100000000, 0xc16ae50500000000, 0x9b99636800000000,
+ 0xadc8e14c00000000, 0xdef00d4c00000000, 0xe8a18f6800000000,
+ 0xb252090500000000, 0x84038b2100000000, 0x06b404de00000000,
+ 0x30e586fa00000000, 0x6a16009700000000, 0x5c4782b300000000,
+ 0xca55b4dd00000000, 0xfc0436f900000000, 0xa6f7b09400000000,
+ 0x90a632b000000000, 0x1211bd4f00000000, 0x24403f6b00000000,
+ 0x7eb3b90600000000, 0x48e23b2200000000, 0x3bdad72200000000,
+ 0x0d8b550600000000, 0x5778d36b00000000, 0x6129514f00000000,
+ 0xe39edeb000000000, 0xd5cf5c9400000000, 0x8f3cdaf900000000,
+ 0xb96d58dd00000000, 0x694c02f800000000, 0x5f1d80dc00000000,
+ 0x05ee06b100000000, 0x33bf849500000000, 0xb1080b6a00000000,
+ 0x8759894e00000000, 0xddaa0f2300000000, 0xebfb8d0700000000,
+ 0x98c3610700000000, 0xae92e32300000000, 0xf461654e00000000,
+ 0xc230e76a00000000, 0x4087689500000000, 0x76d6eab100000000,
+ 0x2c256cdc00000000, 0x1a74eef800000000, 0x59cbc1f600000000,
+ 0x6f9a43d200000000, 0x3569c5bf00000000, 0x0338479b00000000,
+ 0x818fc86400000000, 0xb7de4a4000000000, 0xed2dcc2d00000000,
+ 0xdb7c4e0900000000, 0xa844a20900000000, 0x9e15202d00000000,
+ 0xc4e6a64000000000, 0xf2b7246400000000, 0x7000ab9b00000000,
+ 0x465129bf00000000, 0x1ca2afd200000000, 0x2af32df600000000,
+ 0xfad277d300000000, 0xcc83f5f700000000, 0x9670739a00000000,
+ 0xa021f1be00000000, 0x22967e4100000000, 0x14c7fc6500000000,
+ 0x4e347a0800000000, 0x7865f82c00000000, 0x0b5d142c00000000,
+ 0x3d0c960800000000, 0x67ff106500000000, 0x51ae924100000000,
+ 0xd3191dbe00000000, 0xe5489f9a00000000, 0xbfbb19f700000000,
+ 0x89ea9bd300000000, 0x1ff8adbd00000000, 0x29a92f9900000000,
+ 0x735aa9f400000000, 0x450b2bd000000000, 0xc7bca42f00000000,
+ 0xf1ed260b00000000, 0xab1ea06600000000, 0x9d4f224200000000,
+ 0xee77ce4200000000, 0xd8264c6600000000, 0x82d5ca0b00000000,
+ 0xb484482f00000000, 0x3633c7d000000000, 0x006245f400000000,
+ 0x5a91c39900000000, 0x6cc041bd00000000, 0xbce11b9800000000,
+ 0x8ab099bc00000000, 0xd0431fd100000000, 0xe6129df500000000,
+ 0x64a5120a00000000, 0x52f4902e00000000, 0x0807164300000000,
+ 0x3e56946700000000, 0x4d6e786700000000, 0x7b3ffa4300000000,
+ 0x21cc7c2e00000000, 0x179dfe0a00000000, 0x952a71f500000000,
+ 0xa37bf3d100000000, 0xf98875bc00000000, 0xcfd9f79800000000,
+ 0xd5ad196000000000, 0xe3fc9b4400000000, 0xb90f1d2900000000,
+ 0x8f5e9f0d00000000, 0x0de910f200000000, 0x3bb892d600000000,
+ 0x614b14bb00000000, 0x571a969f00000000, 0x24227a9f00000000,
+ 0x1273f8bb00000000, 0x48807ed600000000, 0x7ed1fcf200000000,
+ 0xfc66730d00000000, 0xca37f12900000000, 0x90c4774400000000,
+ 0xa695f56000000000, 0x76b4af4500000000, 0x40e52d6100000000,
+ 0x1a16ab0c00000000, 0x2c47292800000000, 0xaef0a6d700000000,
+ 0x98a124f300000000, 0xc252a29e00000000, 0xf40320ba00000000,
+ 0x873bccba00000000, 0xb16a4e9e00000000, 0xeb99c8f300000000,
+ 0xddc84ad700000000, 0x5f7fc52800000000, 0x692e470c00000000,
+ 0x33ddc16100000000, 0x058c434500000000, 0x939e752b00000000,
+ 0xa5cff70f00000000, 0xff3c716200000000, 0xc96df34600000000,
+ 0x4bda7cb900000000, 0x7d8bfe9d00000000, 0x277878f000000000,
+ 0x1129fad400000000, 0x621116d400000000, 0x544094f000000000,
+ 0x0eb3129d00000000, 0x38e290b900000000, 0xba551f4600000000,
+ 0x8c049d6200000000, 0xd6f71b0f00000000, 0xe0a6992b00000000,
+ 0x3087c30e00000000, 0x06d6412a00000000, 0x5c25c74700000000,
+ 0x6a74456300000000, 0xe8c3ca9c00000000, 0xde9248b800000000,
+ 0x8461ced500000000, 0xb2304cf100000000, 0xc108a0f100000000,
+ 0xf75922d500000000, 0xadaaa4b800000000, 0x9bfb269c00000000,
+ 0x194ca96300000000, 0x2f1d2b4700000000, 0x75eead2a00000000,
+ 0x43bf2f0e00000000},
+ {0x0000000000000000, 0xc8179ecf00000000, 0xd1294d4400000000,
+ 0x193ed38b00000000, 0xa2539a8800000000, 0x6a44044700000000,
+ 0x737ad7cc00000000, 0xbb6d490300000000, 0x05a145ca00000000,
+ 0xcdb6db0500000000, 0xd488088e00000000, 0x1c9f964100000000,
+ 0xa7f2df4200000000, 0x6fe5418d00000000, 0x76db920600000000,
+ 0xbecc0cc900000000, 0x4b44fa4f00000000, 0x8353648000000000,
+ 0x9a6db70b00000000, 0x527a29c400000000, 0xe91760c700000000,
+ 0x2100fe0800000000, 0x383e2d8300000000, 0xf029b34c00000000,
+ 0x4ee5bf8500000000, 0x86f2214a00000000, 0x9fccf2c100000000,
+ 0x57db6c0e00000000, 0xecb6250d00000000, 0x24a1bbc200000000,
+ 0x3d9f684900000000, 0xf588f68600000000, 0x9688f49f00000000,
+ 0x5e9f6a5000000000, 0x47a1b9db00000000, 0x8fb6271400000000,
+ 0x34db6e1700000000, 0xfcccf0d800000000, 0xe5f2235300000000,
+ 0x2de5bd9c00000000, 0x9329b15500000000, 0x5b3e2f9a00000000,
+ 0x4200fc1100000000, 0x8a1762de00000000, 0x317a2bdd00000000,
+ 0xf96db51200000000, 0xe053669900000000, 0x2844f85600000000,
+ 0xddcc0ed000000000, 0x15db901f00000000, 0x0ce5439400000000,
+ 0xc4f2dd5b00000000, 0x7f9f945800000000, 0xb7880a9700000000,
+ 0xaeb6d91c00000000, 0x66a147d300000000, 0xd86d4b1a00000000,
+ 0x107ad5d500000000, 0x0944065e00000000, 0xc153989100000000,
+ 0x7a3ed19200000000, 0xb2294f5d00000000, 0xab179cd600000000,
+ 0x6300021900000000, 0x6d1798e400000000, 0xa500062b00000000,
+ 0xbc3ed5a000000000, 0x74294b6f00000000, 0xcf44026c00000000,
+ 0x07539ca300000000, 0x1e6d4f2800000000, 0xd67ad1e700000000,
+ 0x68b6dd2e00000000, 0xa0a143e100000000, 0xb99f906a00000000,
+ 0x71880ea500000000, 0xcae547a600000000, 0x02f2d96900000000,
+ 0x1bcc0ae200000000, 0xd3db942d00000000, 0x265362ab00000000,
+ 0xee44fc6400000000, 0xf77a2fef00000000, 0x3f6db12000000000,
+ 0x8400f82300000000, 0x4c1766ec00000000, 0x5529b56700000000,
+ 0x9d3e2ba800000000, 0x23f2276100000000, 0xebe5b9ae00000000,
+ 0xf2db6a2500000000, 0x3accf4ea00000000, 0x81a1bde900000000,
+ 0x49b6232600000000, 0x5088f0ad00000000, 0x989f6e6200000000,
+ 0xfb9f6c7b00000000, 0x3388f2b400000000, 0x2ab6213f00000000,
+ 0xe2a1bff000000000, 0x59ccf6f300000000, 0x91db683c00000000,
+ 0x88e5bbb700000000, 0x40f2257800000000, 0xfe3e29b100000000,
+ 0x3629b77e00000000, 0x2f1764f500000000, 0xe700fa3a00000000,
+ 0x5c6db33900000000, 0x947a2df600000000, 0x8d44fe7d00000000,
+ 0x455360b200000000, 0xb0db963400000000, 0x78cc08fb00000000,
+ 0x61f2db7000000000, 0xa9e545bf00000000, 0x12880cbc00000000,
+ 0xda9f927300000000, 0xc3a141f800000000, 0x0bb6df3700000000,
+ 0xb57ad3fe00000000, 0x7d6d4d3100000000, 0x64539eba00000000,
+ 0xac44007500000000, 0x1729497600000000, 0xdf3ed7b900000000,
+ 0xc600043200000000, 0x0e179afd00000000, 0x9b28411200000000,
+ 0x533fdfdd00000000, 0x4a010c5600000000, 0x8216929900000000,
+ 0x397bdb9a00000000, 0xf16c455500000000, 0xe85296de00000000,
+ 0x2045081100000000, 0x9e8904d800000000, 0x569e9a1700000000,
+ 0x4fa0499c00000000, 0x87b7d75300000000, 0x3cda9e5000000000,
+ 0xf4cd009f00000000, 0xedf3d31400000000, 0x25e44ddb00000000,
+ 0xd06cbb5d00000000, 0x187b259200000000, 0x0145f61900000000,
+ 0xc95268d600000000, 0x723f21d500000000, 0xba28bf1a00000000,
+ 0xa3166c9100000000, 0x6b01f25e00000000, 0xd5cdfe9700000000,
+ 0x1dda605800000000, 0x04e4b3d300000000, 0xccf32d1c00000000,
+ 0x779e641f00000000, 0xbf89fad000000000, 0xa6b7295b00000000,
+ 0x6ea0b79400000000, 0x0da0b58d00000000, 0xc5b72b4200000000,
+ 0xdc89f8c900000000, 0x149e660600000000, 0xaff32f0500000000,
+ 0x67e4b1ca00000000, 0x7eda624100000000, 0xb6cdfc8e00000000,
+ 0x0801f04700000000, 0xc0166e8800000000, 0xd928bd0300000000,
+ 0x113f23cc00000000, 0xaa526acf00000000, 0x6245f40000000000,
+ 0x7b7b278b00000000, 0xb36cb94400000000, 0x46e44fc200000000,
+ 0x8ef3d10d00000000, 0x97cd028600000000, 0x5fda9c4900000000,
+ 0xe4b7d54a00000000, 0x2ca04b8500000000, 0x359e980e00000000,
+ 0xfd8906c100000000, 0x43450a0800000000, 0x8b5294c700000000,
+ 0x926c474c00000000, 0x5a7bd98300000000, 0xe116908000000000,
+ 0x29010e4f00000000, 0x303fddc400000000, 0xf828430b00000000,
+ 0xf63fd9f600000000, 0x3e28473900000000, 0x271694b200000000,
+ 0xef010a7d00000000, 0x546c437e00000000, 0x9c7bddb100000000,
+ 0x85450e3a00000000, 0x4d5290f500000000, 0xf39e9c3c00000000,
+ 0x3b8902f300000000, 0x22b7d17800000000, 0xeaa04fb700000000,
+ 0x51cd06b400000000, 0x99da987b00000000, 0x80e44bf000000000,
+ 0x48f3d53f00000000, 0xbd7b23b900000000, 0x756cbd7600000000,
+ 0x6c526efd00000000, 0xa445f03200000000, 0x1f28b93100000000,
+ 0xd73f27fe00000000, 0xce01f47500000000, 0x06166aba00000000,
+ 0xb8da667300000000, 0x70cdf8bc00000000, 0x69f32b3700000000,
+ 0xa1e4b5f800000000, 0x1a89fcfb00000000, 0xd29e623400000000,
+ 0xcba0b1bf00000000, 0x03b72f7000000000, 0x60b72d6900000000,
+ 0xa8a0b3a600000000, 0xb19e602d00000000, 0x7989fee200000000,
+ 0xc2e4b7e100000000, 0x0af3292e00000000, 0x13cdfaa500000000,
+ 0xdbda646a00000000, 0x651668a300000000, 0xad01f66c00000000,
+ 0xb43f25e700000000, 0x7c28bb2800000000, 0xc745f22b00000000,
+ 0x0f526ce400000000, 0x166cbf6f00000000, 0xde7b21a000000000,
+ 0x2bf3d72600000000, 0xe3e449e900000000, 0xfada9a6200000000,
+ 0x32cd04ad00000000, 0x89a04dae00000000, 0x41b7d36100000000,
+ 0x588900ea00000000, 0x909e9e2500000000, 0x2e5292ec00000000,
+ 0xe6450c2300000000, 0xff7bdfa800000000, 0x376c416700000000,
+ 0x8c01086400000000, 0x441696ab00000000, 0x5d28452000000000,
+ 0x953fdbef00000000},
+ {0x0000000000000000, 0x95d4709500000000, 0x6baf90f100000000,
+ 0xfe7be06400000000, 0x9758503800000000, 0x028c20ad00000000,
+ 0xfcf7c0c900000000, 0x6923b05c00000000, 0x2eb1a07000000000,
+ 0xbb65d0e500000000, 0x451e308100000000, 0xd0ca401400000000,
+ 0xb9e9f04800000000, 0x2c3d80dd00000000, 0xd24660b900000000,
+ 0x4792102c00000000, 0x5c6241e100000000, 0xc9b6317400000000,
+ 0x37cdd11000000000, 0xa219a18500000000, 0xcb3a11d900000000,
+ 0x5eee614c00000000, 0xa095812800000000, 0x3541f1bd00000000,
+ 0x72d3e19100000000, 0xe707910400000000, 0x197c716000000000,
+ 0x8ca801f500000000, 0xe58bb1a900000000, 0x705fc13c00000000,
+ 0x8e24215800000000, 0x1bf051cd00000000, 0xf9c2f31900000000,
+ 0x6c16838c00000000, 0x926d63e800000000, 0x07b9137d00000000,
+ 0x6e9aa32100000000, 0xfb4ed3b400000000, 0x053533d000000000,
+ 0x90e1434500000000, 0xd773536900000000, 0x42a723fc00000000,
+ 0xbcdcc39800000000, 0x2908b30d00000000, 0x402b035100000000,
+ 0xd5ff73c400000000, 0x2b8493a000000000, 0xbe50e33500000000,
+ 0xa5a0b2f800000000, 0x3074c26d00000000, 0xce0f220900000000,
+ 0x5bdb529c00000000, 0x32f8e2c000000000, 0xa72c925500000000,
+ 0x5957723100000000, 0xcc8302a400000000, 0x8b11128800000000,
+ 0x1ec5621d00000000, 0xe0be827900000000, 0x756af2ec00000000,
+ 0x1c4942b000000000, 0x899d322500000000, 0x77e6d24100000000,
+ 0xe232a2d400000000, 0xf285e73300000000, 0x675197a600000000,
+ 0x992a77c200000000, 0x0cfe075700000000, 0x65ddb70b00000000,
+ 0xf009c79e00000000, 0x0e7227fa00000000, 0x9ba6576f00000000,
+ 0xdc34474300000000, 0x49e037d600000000, 0xb79bd7b200000000,
+ 0x224fa72700000000, 0x4b6c177b00000000, 0xdeb867ee00000000,
+ 0x20c3878a00000000, 0xb517f71f00000000, 0xaee7a6d200000000,
+ 0x3b33d64700000000, 0xc548362300000000, 0x509c46b600000000,
+ 0x39bff6ea00000000, 0xac6b867f00000000, 0x5210661b00000000,
+ 0xc7c4168e00000000, 0x805606a200000000, 0x1582763700000000,
+ 0xebf9965300000000, 0x7e2de6c600000000, 0x170e569a00000000,
+ 0x82da260f00000000, 0x7ca1c66b00000000, 0xe975b6fe00000000,
+ 0x0b47142a00000000, 0x9e9364bf00000000, 0x60e884db00000000,
+ 0xf53cf44e00000000, 0x9c1f441200000000, 0x09cb348700000000,
+ 0xf7b0d4e300000000, 0x6264a47600000000, 0x25f6b45a00000000,
+ 0xb022c4cf00000000, 0x4e5924ab00000000, 0xdb8d543e00000000,
+ 0xb2aee46200000000, 0x277a94f700000000, 0xd901749300000000,
+ 0x4cd5040600000000, 0x572555cb00000000, 0xc2f1255e00000000,
+ 0x3c8ac53a00000000, 0xa95eb5af00000000, 0xc07d05f300000000,
+ 0x55a9756600000000, 0xabd2950200000000, 0x3e06e59700000000,
+ 0x7994f5bb00000000, 0xec40852e00000000, 0x123b654a00000000,
+ 0x87ef15df00000000, 0xeecca58300000000, 0x7b18d51600000000,
+ 0x8563357200000000, 0x10b745e700000000, 0xe40bcf6700000000,
+ 0x71dfbff200000000, 0x8fa45f9600000000, 0x1a702f0300000000,
+ 0x73539f5f00000000, 0xe687efca00000000, 0x18fc0fae00000000,
+ 0x8d287f3b00000000, 0xcaba6f1700000000, 0x5f6e1f8200000000,
+ 0xa115ffe600000000, 0x34c18f7300000000, 0x5de23f2f00000000,
+ 0xc8364fba00000000, 0x364dafde00000000, 0xa399df4b00000000,
+ 0xb8698e8600000000, 0x2dbdfe1300000000, 0xd3c61e7700000000,
+ 0x46126ee200000000, 0x2f31debe00000000, 0xbae5ae2b00000000,
+ 0x449e4e4f00000000, 0xd14a3eda00000000, 0x96d82ef600000000,
+ 0x030c5e6300000000, 0xfd77be0700000000, 0x68a3ce9200000000,
+ 0x01807ece00000000, 0x94540e5b00000000, 0x6a2fee3f00000000,
+ 0xfffb9eaa00000000, 0x1dc93c7e00000000, 0x881d4ceb00000000,
+ 0x7666ac8f00000000, 0xe3b2dc1a00000000, 0x8a916c4600000000,
+ 0x1f451cd300000000, 0xe13efcb700000000, 0x74ea8c2200000000,
+ 0x33789c0e00000000, 0xa6acec9b00000000, 0x58d70cff00000000,
+ 0xcd037c6a00000000, 0xa420cc3600000000, 0x31f4bca300000000,
+ 0xcf8f5cc700000000, 0x5a5b2c5200000000, 0x41ab7d9f00000000,
+ 0xd47f0d0a00000000, 0x2a04ed6e00000000, 0xbfd09dfb00000000,
+ 0xd6f32da700000000, 0x43275d3200000000, 0xbd5cbd5600000000,
+ 0x2888cdc300000000, 0x6f1addef00000000, 0xfacead7a00000000,
+ 0x04b54d1e00000000, 0x91613d8b00000000, 0xf8428dd700000000,
+ 0x6d96fd4200000000, 0x93ed1d2600000000, 0x06396db300000000,
+ 0x168e285400000000, 0x835a58c100000000, 0x7d21b8a500000000,
+ 0xe8f5c83000000000, 0x81d6786c00000000, 0x140208f900000000,
+ 0xea79e89d00000000, 0x7fad980800000000, 0x383f882400000000,
+ 0xadebf8b100000000, 0x539018d500000000, 0xc644684000000000,
+ 0xaf67d81c00000000, 0x3ab3a88900000000, 0xc4c848ed00000000,
+ 0x511c387800000000, 0x4aec69b500000000, 0xdf38192000000000,
+ 0x2143f94400000000, 0xb49789d100000000, 0xddb4398d00000000,
+ 0x4860491800000000, 0xb61ba97c00000000, 0x23cfd9e900000000,
+ 0x645dc9c500000000, 0xf189b95000000000, 0x0ff2593400000000,
+ 0x9a2629a100000000, 0xf30599fd00000000, 0x66d1e96800000000,
+ 0x98aa090c00000000, 0x0d7e799900000000, 0xef4cdb4d00000000,
+ 0x7a98abd800000000, 0x84e34bbc00000000, 0x11373b2900000000,
+ 0x78148b7500000000, 0xedc0fbe000000000, 0x13bb1b8400000000,
+ 0x866f6b1100000000, 0xc1fd7b3d00000000, 0x54290ba800000000,
+ 0xaa52ebcc00000000, 0x3f869b5900000000, 0x56a52b0500000000,
+ 0xc3715b9000000000, 0x3d0abbf400000000, 0xa8decb6100000000,
+ 0xb32e9aac00000000, 0x26faea3900000000, 0xd8810a5d00000000,
+ 0x4d557ac800000000, 0x2476ca9400000000, 0xb1a2ba0100000000,
+ 0x4fd95a6500000000, 0xda0d2af000000000, 0x9d9f3adc00000000,
+ 0x084b4a4900000000, 0xf630aa2d00000000, 0x63e4dab800000000,
+ 0x0ac76ae400000000, 0x9f131a7100000000, 0x6168fa1500000000,
+ 0xf4bc8a8000000000},
+ {0x0000000000000000, 0x1f17f08000000000, 0x7f2891da00000000,
+ 0x603f615a00000000, 0xbf56536e00000000, 0xa041a3ee00000000,
+ 0xc07ec2b400000000, 0xdf69323400000000, 0x7eada6dc00000000,
+ 0x61ba565c00000000, 0x0185370600000000, 0x1e92c78600000000,
+ 0xc1fbf5b200000000, 0xdeec053200000000, 0xbed3646800000000,
+ 0xa1c494e800000000, 0xbd5c3c6200000000, 0xa24bcce200000000,
+ 0xc274adb800000000, 0xdd635d3800000000, 0x020a6f0c00000000,
+ 0x1d1d9f8c00000000, 0x7d22fed600000000, 0x62350e5600000000,
+ 0xc3f19abe00000000, 0xdce66a3e00000000, 0xbcd90b6400000000,
+ 0xa3cefbe400000000, 0x7ca7c9d000000000, 0x63b0395000000000,
+ 0x038f580a00000000, 0x1c98a88a00000000, 0x7ab978c400000000,
+ 0x65ae884400000000, 0x0591e91e00000000, 0x1a86199e00000000,
+ 0xc5ef2baa00000000, 0xdaf8db2a00000000, 0xbac7ba7000000000,
+ 0xa5d04af000000000, 0x0414de1800000000, 0x1b032e9800000000,
+ 0x7b3c4fc200000000, 0x642bbf4200000000, 0xbb428d7600000000,
+ 0xa4557df600000000, 0xc46a1cac00000000, 0xdb7dec2c00000000,
+ 0xc7e544a600000000, 0xd8f2b42600000000, 0xb8cdd57c00000000,
+ 0xa7da25fc00000000, 0x78b317c800000000, 0x67a4e74800000000,
+ 0x079b861200000000, 0x188c769200000000, 0xb948e27a00000000,
+ 0xa65f12fa00000000, 0xc66073a000000000, 0xd977832000000000,
+ 0x061eb11400000000, 0x1909419400000000, 0x793620ce00000000,
+ 0x6621d04e00000000, 0xb574805300000000, 0xaa6370d300000000,
+ 0xca5c118900000000, 0xd54be10900000000, 0x0a22d33d00000000,
+ 0x153523bd00000000, 0x750a42e700000000, 0x6a1db26700000000,
+ 0xcbd9268f00000000, 0xd4ced60f00000000, 0xb4f1b75500000000,
+ 0xabe647d500000000, 0x748f75e100000000, 0x6b98856100000000,
+ 0x0ba7e43b00000000, 0x14b014bb00000000, 0x0828bc3100000000,
+ 0x173f4cb100000000, 0x77002deb00000000, 0x6817dd6b00000000,
+ 0xb77eef5f00000000, 0xa8691fdf00000000, 0xc8567e8500000000,
+ 0xd7418e0500000000, 0x76851aed00000000, 0x6992ea6d00000000,
+ 0x09ad8b3700000000, 0x16ba7bb700000000, 0xc9d3498300000000,
+ 0xd6c4b90300000000, 0xb6fbd85900000000, 0xa9ec28d900000000,
+ 0xcfcdf89700000000, 0xd0da081700000000, 0xb0e5694d00000000,
+ 0xaff299cd00000000, 0x709babf900000000, 0x6f8c5b7900000000,
+ 0x0fb33a2300000000, 0x10a4caa300000000, 0xb1605e4b00000000,
+ 0xae77aecb00000000, 0xce48cf9100000000, 0xd15f3f1100000000,
+ 0x0e360d2500000000, 0x1121fda500000000, 0x711e9cff00000000,
+ 0x6e096c7f00000000, 0x7291c4f500000000, 0x6d86347500000000,
+ 0x0db9552f00000000, 0x12aea5af00000000, 0xcdc7979b00000000,
+ 0xd2d0671b00000000, 0xb2ef064100000000, 0xadf8f6c100000000,
+ 0x0c3c622900000000, 0x132b92a900000000, 0x7314f3f300000000,
+ 0x6c03037300000000, 0xb36a314700000000, 0xac7dc1c700000000,
+ 0xcc42a09d00000000, 0xd355501d00000000, 0x6ae900a700000000,
+ 0x75fef02700000000, 0x15c1917d00000000, 0x0ad661fd00000000,
+ 0xd5bf53c900000000, 0xcaa8a34900000000, 0xaa97c21300000000,
+ 0xb580329300000000, 0x1444a67b00000000, 0x0b5356fb00000000,
+ 0x6b6c37a100000000, 0x747bc72100000000, 0xab12f51500000000,
+ 0xb405059500000000, 0xd43a64cf00000000, 0xcb2d944f00000000,
+ 0xd7b53cc500000000, 0xc8a2cc4500000000, 0xa89dad1f00000000,
+ 0xb78a5d9f00000000, 0x68e36fab00000000, 0x77f49f2b00000000,
+ 0x17cbfe7100000000, 0x08dc0ef100000000, 0xa9189a1900000000,
+ 0xb60f6a9900000000, 0xd6300bc300000000, 0xc927fb4300000000,
+ 0x164ec97700000000, 0x095939f700000000, 0x696658ad00000000,
+ 0x7671a82d00000000, 0x1050786300000000, 0x0f4788e300000000,
+ 0x6f78e9b900000000, 0x706f193900000000, 0xaf062b0d00000000,
+ 0xb011db8d00000000, 0xd02ebad700000000, 0xcf394a5700000000,
+ 0x6efddebf00000000, 0x71ea2e3f00000000, 0x11d54f6500000000,
+ 0x0ec2bfe500000000, 0xd1ab8dd100000000, 0xcebc7d5100000000,
+ 0xae831c0b00000000, 0xb194ec8b00000000, 0xad0c440100000000,
+ 0xb21bb48100000000, 0xd224d5db00000000, 0xcd33255b00000000,
+ 0x125a176f00000000, 0x0d4de7ef00000000, 0x6d7286b500000000,
+ 0x7265763500000000, 0xd3a1e2dd00000000, 0xccb6125d00000000,
+ 0xac89730700000000, 0xb39e838700000000, 0x6cf7b1b300000000,
+ 0x73e0413300000000, 0x13df206900000000, 0x0cc8d0e900000000,
+ 0xdf9d80f400000000, 0xc08a707400000000, 0xa0b5112e00000000,
+ 0xbfa2e1ae00000000, 0x60cbd39a00000000, 0x7fdc231a00000000,
+ 0x1fe3424000000000, 0x00f4b2c000000000, 0xa130262800000000,
+ 0xbe27d6a800000000, 0xde18b7f200000000, 0xc10f477200000000,
+ 0x1e66754600000000, 0x017185c600000000, 0x614ee49c00000000,
+ 0x7e59141c00000000, 0x62c1bc9600000000, 0x7dd64c1600000000,
+ 0x1de92d4c00000000, 0x02feddcc00000000, 0xdd97eff800000000,
+ 0xc2801f7800000000, 0xa2bf7e2200000000, 0xbda88ea200000000,
+ 0x1c6c1a4a00000000, 0x037beaca00000000, 0x63448b9000000000,
+ 0x7c537b1000000000, 0xa33a492400000000, 0xbc2db9a400000000,
+ 0xdc12d8fe00000000, 0xc305287e00000000, 0xa524f83000000000,
+ 0xba3308b000000000, 0xda0c69ea00000000, 0xc51b996a00000000,
+ 0x1a72ab5e00000000, 0x05655bde00000000, 0x655a3a8400000000,
+ 0x7a4dca0400000000, 0xdb895eec00000000, 0xc49eae6c00000000,
+ 0xa4a1cf3600000000, 0xbbb63fb600000000, 0x64df0d8200000000,
+ 0x7bc8fd0200000000, 0x1bf79c5800000000, 0x04e06cd800000000,
+ 0x1878c45200000000, 0x076f34d200000000, 0x6750558800000000,
+ 0x7847a50800000000, 0xa72e973c00000000, 0xb83967bc00000000,
+ 0xd80606e600000000, 0xc711f66600000000, 0x66d5628e00000000,
+ 0x79c2920e00000000, 0x19fdf35400000000, 0x06ea03d400000000,
+ 0xd98331e000000000, 0xc694c16000000000, 0xa6aba03a00000000,
+ 0xb9bc50ba00000000},
+ {0x0000000000000000, 0xe2fd888d00000000, 0x85fd60c000000000,
+ 0x6700e84d00000000, 0x4bfdb05b00000000, 0xa90038d600000000,
+ 0xce00d09b00000000, 0x2cfd581600000000, 0x96fa61b700000000,
+ 0x7407e93a00000000, 0x1307017700000000, 0xf1fa89fa00000000,
+ 0xdd07d1ec00000000, 0x3ffa596100000000, 0x58fab12c00000000,
+ 0xba0739a100000000, 0x6df3b2b500000000, 0x8f0e3a3800000000,
+ 0xe80ed27500000000, 0x0af35af800000000, 0x260e02ee00000000,
+ 0xc4f38a6300000000, 0xa3f3622e00000000, 0x410eeaa300000000,
+ 0xfb09d30200000000, 0x19f45b8f00000000, 0x7ef4b3c200000000,
+ 0x9c093b4f00000000, 0xb0f4635900000000, 0x5209ebd400000000,
+ 0x3509039900000000, 0xd7f48b1400000000, 0x9be014b000000000,
+ 0x791d9c3d00000000, 0x1e1d747000000000, 0xfce0fcfd00000000,
+ 0xd01da4eb00000000, 0x32e02c6600000000, 0x55e0c42b00000000,
+ 0xb71d4ca600000000, 0x0d1a750700000000, 0xefe7fd8a00000000,
+ 0x88e715c700000000, 0x6a1a9d4a00000000, 0x46e7c55c00000000,
+ 0xa41a4dd100000000, 0xc31aa59c00000000, 0x21e72d1100000000,
+ 0xf613a60500000000, 0x14ee2e8800000000, 0x73eec6c500000000,
+ 0x91134e4800000000, 0xbdee165e00000000, 0x5f139ed300000000,
+ 0x3813769e00000000, 0xdaeefe1300000000, 0x60e9c7b200000000,
+ 0x82144f3f00000000, 0xe514a77200000000, 0x07e92fff00000000,
+ 0x2b1477e900000000, 0xc9e9ff6400000000, 0xaee9172900000000,
+ 0x4c149fa400000000, 0x77c758bb00000000, 0x953ad03600000000,
+ 0xf23a387b00000000, 0x10c7b0f600000000, 0x3c3ae8e000000000,
+ 0xdec7606d00000000, 0xb9c7882000000000, 0x5b3a00ad00000000,
+ 0xe13d390c00000000, 0x03c0b18100000000, 0x64c059cc00000000,
+ 0x863dd14100000000, 0xaac0895700000000, 0x483d01da00000000,
+ 0x2f3de99700000000, 0xcdc0611a00000000, 0x1a34ea0e00000000,
+ 0xf8c9628300000000, 0x9fc98ace00000000, 0x7d34024300000000,
+ 0x51c95a5500000000, 0xb334d2d800000000, 0xd4343a9500000000,
+ 0x36c9b21800000000, 0x8cce8bb900000000, 0x6e33033400000000,
+ 0x0933eb7900000000, 0xebce63f400000000, 0xc7333be200000000,
+ 0x25ceb36f00000000, 0x42ce5b2200000000, 0xa033d3af00000000,
+ 0xec274c0b00000000, 0x0edac48600000000, 0x69da2ccb00000000,
+ 0x8b27a44600000000, 0xa7dafc5000000000, 0x452774dd00000000,
+ 0x22279c9000000000, 0xc0da141d00000000, 0x7add2dbc00000000,
+ 0x9820a53100000000, 0xff204d7c00000000, 0x1dddc5f100000000,
+ 0x31209de700000000, 0xd3dd156a00000000, 0xb4ddfd2700000000,
+ 0x562075aa00000000, 0x81d4febe00000000, 0x6329763300000000,
+ 0x04299e7e00000000, 0xe6d416f300000000, 0xca294ee500000000,
+ 0x28d4c66800000000, 0x4fd42e2500000000, 0xad29a6a800000000,
+ 0x172e9f0900000000, 0xf5d3178400000000, 0x92d3ffc900000000,
+ 0x702e774400000000, 0x5cd32f5200000000, 0xbe2ea7df00000000,
+ 0xd92e4f9200000000, 0x3bd3c71f00000000, 0xaf88c0ad00000000,
+ 0x4d75482000000000, 0x2a75a06d00000000, 0xc88828e000000000,
+ 0xe47570f600000000, 0x0688f87b00000000, 0x6188103600000000,
+ 0x837598bb00000000, 0x3972a11a00000000, 0xdb8f299700000000,
+ 0xbc8fc1da00000000, 0x5e72495700000000, 0x728f114100000000,
+ 0x907299cc00000000, 0xf772718100000000, 0x158ff90c00000000,
+ 0xc27b721800000000, 0x2086fa9500000000, 0x478612d800000000,
+ 0xa57b9a5500000000, 0x8986c24300000000, 0x6b7b4ace00000000,
+ 0x0c7ba28300000000, 0xee862a0e00000000, 0x548113af00000000,
+ 0xb67c9b2200000000, 0xd17c736f00000000, 0x3381fbe200000000,
+ 0x1f7ca3f400000000, 0xfd812b7900000000, 0x9a81c33400000000,
+ 0x787c4bb900000000, 0x3468d41d00000000, 0xd6955c9000000000,
+ 0xb195b4dd00000000, 0x53683c5000000000, 0x7f95644600000000,
+ 0x9d68eccb00000000, 0xfa68048600000000, 0x18958c0b00000000,
+ 0xa292b5aa00000000, 0x406f3d2700000000, 0x276fd56a00000000,
+ 0xc5925de700000000, 0xe96f05f100000000, 0x0b928d7c00000000,
+ 0x6c92653100000000, 0x8e6fedbc00000000, 0x599b66a800000000,
+ 0xbb66ee2500000000, 0xdc66066800000000, 0x3e9b8ee500000000,
+ 0x1266d6f300000000, 0xf09b5e7e00000000, 0x979bb63300000000,
+ 0x75663ebe00000000, 0xcf61071f00000000, 0x2d9c8f9200000000,
+ 0x4a9c67df00000000, 0xa861ef5200000000, 0x849cb74400000000,
+ 0x66613fc900000000, 0x0161d78400000000, 0xe39c5f0900000000,
+ 0xd84f981600000000, 0x3ab2109b00000000, 0x5db2f8d600000000,
+ 0xbf4f705b00000000, 0x93b2284d00000000, 0x714fa0c000000000,
+ 0x164f488d00000000, 0xf4b2c00000000000, 0x4eb5f9a100000000,
+ 0xac48712c00000000, 0xcb48996100000000, 0x29b511ec00000000,
+ 0x054849fa00000000, 0xe7b5c17700000000, 0x80b5293a00000000,
+ 0x6248a1b700000000, 0xb5bc2aa300000000, 0x5741a22e00000000,
+ 0x30414a6300000000, 0xd2bcc2ee00000000, 0xfe419af800000000,
+ 0x1cbc127500000000, 0x7bbcfa3800000000, 0x994172b500000000,
+ 0x23464b1400000000, 0xc1bbc39900000000, 0xa6bb2bd400000000,
+ 0x4446a35900000000, 0x68bbfb4f00000000, 0x8a4673c200000000,
+ 0xed469b8f00000000, 0x0fbb130200000000, 0x43af8ca600000000,
+ 0xa152042b00000000, 0xc652ec6600000000, 0x24af64eb00000000,
+ 0x08523cfd00000000, 0xeaafb47000000000, 0x8daf5c3d00000000,
+ 0x6f52d4b000000000, 0xd555ed1100000000, 0x37a8659c00000000,
+ 0x50a88dd100000000, 0xb255055c00000000, 0x9ea85d4a00000000,
+ 0x7c55d5c700000000, 0x1b553d8a00000000, 0xf9a8b50700000000,
+ 0x2e5c3e1300000000, 0xcca1b69e00000000, 0xaba15ed300000000,
+ 0x495cd65e00000000, 0x65a18e4800000000, 0x875c06c500000000,
+ 0xe05cee8800000000, 0x02a1660500000000, 0xb8a65fa400000000,
+ 0x5a5bd72900000000, 0x3d5b3f6400000000, 0xdfa6b7e900000000,
+ 0xf35befff00000000, 0x11a6677200000000, 0x76a68f3f00000000,
+ 0x945b07b200000000},
+ {0x0000000000000000, 0xa90b894e00000000, 0x5217129d00000000,
+ 0xfb1c9bd300000000, 0xe52855e100000000, 0x4c23dcaf00000000,
+ 0xb73f477c00000000, 0x1e34ce3200000000, 0x8b57db1900000000,
+ 0x225c525700000000, 0xd940c98400000000, 0x704b40ca00000000,
+ 0x6e7f8ef800000000, 0xc77407b600000000, 0x3c689c6500000000,
+ 0x9563152b00000000, 0x16afb63300000000, 0xbfa43f7d00000000,
+ 0x44b8a4ae00000000, 0xedb32de000000000, 0xf387e3d200000000,
+ 0x5a8c6a9c00000000, 0xa190f14f00000000, 0x089b780100000000,
+ 0x9df86d2a00000000, 0x34f3e46400000000, 0xcfef7fb700000000,
+ 0x66e4f6f900000000, 0x78d038cb00000000, 0xd1dbb18500000000,
+ 0x2ac72a5600000000, 0x83cca31800000000, 0x2c5e6d6700000000,
+ 0x8555e42900000000, 0x7e497ffa00000000, 0xd742f6b400000000,
+ 0xc976388600000000, 0x607db1c800000000, 0x9b612a1b00000000,
+ 0x326aa35500000000, 0xa709b67e00000000, 0x0e023f3000000000,
+ 0xf51ea4e300000000, 0x5c152dad00000000, 0x4221e39f00000000,
+ 0xeb2a6ad100000000, 0x1036f10200000000, 0xb93d784c00000000,
+ 0x3af1db5400000000, 0x93fa521a00000000, 0x68e6c9c900000000,
+ 0xc1ed408700000000, 0xdfd98eb500000000, 0x76d207fb00000000,
+ 0x8dce9c2800000000, 0x24c5156600000000, 0xb1a6004d00000000,
+ 0x18ad890300000000, 0xe3b112d000000000, 0x4aba9b9e00000000,
+ 0x548e55ac00000000, 0xfd85dce200000000, 0x0699473100000000,
+ 0xaf92ce7f00000000, 0x58bcdace00000000, 0xf1b7538000000000,
+ 0x0aabc85300000000, 0xa3a0411d00000000, 0xbd948f2f00000000,
+ 0x149f066100000000, 0xef839db200000000, 0x468814fc00000000,
+ 0xd3eb01d700000000, 0x7ae0889900000000, 0x81fc134a00000000,
+ 0x28f79a0400000000, 0x36c3543600000000, 0x9fc8dd7800000000,
+ 0x64d446ab00000000, 0xcddfcfe500000000, 0x4e136cfd00000000,
+ 0xe718e5b300000000, 0x1c047e6000000000, 0xb50ff72e00000000,
+ 0xab3b391c00000000, 0x0230b05200000000, 0xf92c2b8100000000,
+ 0x5027a2cf00000000, 0xc544b7e400000000, 0x6c4f3eaa00000000,
+ 0x9753a57900000000, 0x3e582c3700000000, 0x206ce20500000000,
+ 0x89676b4b00000000, 0x727bf09800000000, 0xdb7079d600000000,
+ 0x74e2b7a900000000, 0xdde93ee700000000, 0x26f5a53400000000,
+ 0x8ffe2c7a00000000, 0x91cae24800000000, 0x38c16b0600000000,
+ 0xc3ddf0d500000000, 0x6ad6799b00000000, 0xffb56cb000000000,
+ 0x56bee5fe00000000, 0xada27e2d00000000, 0x04a9f76300000000,
+ 0x1a9d395100000000, 0xb396b01f00000000, 0x488a2bcc00000000,
+ 0xe181a28200000000, 0x624d019a00000000, 0xcb4688d400000000,
+ 0x305a130700000000, 0x99519a4900000000, 0x8765547b00000000,
+ 0x2e6edd3500000000, 0xd57246e600000000, 0x7c79cfa800000000,
+ 0xe91ada8300000000, 0x401153cd00000000, 0xbb0dc81e00000000,
+ 0x1206415000000000, 0x0c328f6200000000, 0xa539062c00000000,
+ 0x5e259dff00000000, 0xf72e14b100000000, 0xf17ec44600000000,
+ 0x58754d0800000000, 0xa369d6db00000000, 0x0a625f9500000000,
+ 0x145691a700000000, 0xbd5d18e900000000, 0x4641833a00000000,
+ 0xef4a0a7400000000, 0x7a291f5f00000000, 0xd322961100000000,
+ 0x283e0dc200000000, 0x8135848c00000000, 0x9f014abe00000000,
+ 0x360ac3f000000000, 0xcd16582300000000, 0x641dd16d00000000,
+ 0xe7d1727500000000, 0x4edafb3b00000000, 0xb5c660e800000000,
+ 0x1ccde9a600000000, 0x02f9279400000000, 0xabf2aeda00000000,
+ 0x50ee350900000000, 0xf9e5bc4700000000, 0x6c86a96c00000000,
+ 0xc58d202200000000, 0x3e91bbf100000000, 0x979a32bf00000000,
+ 0x89aefc8d00000000, 0x20a575c300000000, 0xdbb9ee1000000000,
+ 0x72b2675e00000000, 0xdd20a92100000000, 0x742b206f00000000,
+ 0x8f37bbbc00000000, 0x263c32f200000000, 0x3808fcc000000000,
+ 0x9103758e00000000, 0x6a1fee5d00000000, 0xc314671300000000,
+ 0x5677723800000000, 0xff7cfb7600000000, 0x046060a500000000,
+ 0xad6be9eb00000000, 0xb35f27d900000000, 0x1a54ae9700000000,
+ 0xe148354400000000, 0x4843bc0a00000000, 0xcb8f1f1200000000,
+ 0x6284965c00000000, 0x99980d8f00000000, 0x309384c100000000,
+ 0x2ea74af300000000, 0x87acc3bd00000000, 0x7cb0586e00000000,
+ 0xd5bbd12000000000, 0x40d8c40b00000000, 0xe9d34d4500000000,
+ 0x12cfd69600000000, 0xbbc45fd800000000, 0xa5f091ea00000000,
+ 0x0cfb18a400000000, 0xf7e7837700000000, 0x5eec0a3900000000,
+ 0xa9c21e8800000000, 0x00c997c600000000, 0xfbd50c1500000000,
+ 0x52de855b00000000, 0x4cea4b6900000000, 0xe5e1c22700000000,
+ 0x1efd59f400000000, 0xb7f6d0ba00000000, 0x2295c59100000000,
+ 0x8b9e4cdf00000000, 0x7082d70c00000000, 0xd9895e4200000000,
+ 0xc7bd907000000000, 0x6eb6193e00000000, 0x95aa82ed00000000,
+ 0x3ca10ba300000000, 0xbf6da8bb00000000, 0x166621f500000000,
+ 0xed7aba2600000000, 0x4471336800000000, 0x5a45fd5a00000000,
+ 0xf34e741400000000, 0x0852efc700000000, 0xa159668900000000,
+ 0x343a73a200000000, 0x9d31faec00000000, 0x662d613f00000000,
+ 0xcf26e87100000000, 0xd112264300000000, 0x7819af0d00000000,
+ 0x830534de00000000, 0x2a0ebd9000000000, 0x859c73ef00000000,
+ 0x2c97faa100000000, 0xd78b617200000000, 0x7e80e83c00000000,
+ 0x60b4260e00000000, 0xc9bfaf4000000000, 0x32a3349300000000,
+ 0x9ba8bddd00000000, 0x0ecba8f600000000, 0xa7c021b800000000,
+ 0x5cdcba6b00000000, 0xf5d7332500000000, 0xebe3fd1700000000,
+ 0x42e8745900000000, 0xb9f4ef8a00000000, 0x10ff66c400000000,
+ 0x9333c5dc00000000, 0x3a384c9200000000, 0xc124d74100000000,
+ 0x682f5e0f00000000, 0x761b903d00000000, 0xdf10197300000000,
+ 0x240c82a000000000, 0x8d070bee00000000, 0x18641ec500000000,
+ 0xb16f978b00000000, 0x4a730c5800000000, 0xe378851600000000,
+ 0xfd4c4b2400000000, 0x5447c26a00000000, 0xaf5b59b900000000,
+ 0x0650d0f700000000},
+ {0x0000000000000000, 0x479244af00000000, 0xcf22f88500000000,
+ 0x88b0bc2a00000000, 0xdf4381d000000000, 0x98d1c57f00000000,
+ 0x1061795500000000, 0x57f33dfa00000000, 0xff81737a00000000,
+ 0xb81337d500000000, 0x30a38bff00000000, 0x7731cf5000000000,
+ 0x20c2f2aa00000000, 0x6750b60500000000, 0xefe00a2f00000000,
+ 0xa8724e8000000000, 0xfe03e7f400000000, 0xb991a35b00000000,
+ 0x31211f7100000000, 0x76b35bde00000000, 0x2140662400000000,
+ 0x66d2228b00000000, 0xee629ea100000000, 0xa9f0da0e00000000,
+ 0x0182948e00000000, 0x4610d02100000000, 0xcea06c0b00000000,
+ 0x893228a400000000, 0xdec1155e00000000, 0x995351f100000000,
+ 0x11e3eddb00000000, 0x5671a97400000000, 0xbd01bf3200000000,
+ 0xfa93fb9d00000000, 0x722347b700000000, 0x35b1031800000000,
+ 0x62423ee200000000, 0x25d07a4d00000000, 0xad60c66700000000,
+ 0xeaf282c800000000, 0x4280cc4800000000, 0x051288e700000000,
+ 0x8da234cd00000000, 0xca30706200000000, 0x9dc34d9800000000,
+ 0xda51093700000000, 0x52e1b51d00000000, 0x1573f1b200000000,
+ 0x430258c600000000, 0x04901c6900000000, 0x8c20a04300000000,
+ 0xcbb2e4ec00000000, 0x9c41d91600000000, 0xdbd39db900000000,
+ 0x5363219300000000, 0x14f1653c00000000, 0xbc832bbc00000000,
+ 0xfb116f1300000000, 0x73a1d33900000000, 0x3433979600000000,
+ 0x63c0aa6c00000000, 0x2452eec300000000, 0xace252e900000000,
+ 0xeb70164600000000, 0x7a037e6500000000, 0x3d913aca00000000,
+ 0xb52186e000000000, 0xf2b3c24f00000000, 0xa540ffb500000000,
+ 0xe2d2bb1a00000000, 0x6a62073000000000, 0x2df0439f00000000,
+ 0x85820d1f00000000, 0xc21049b000000000, 0x4aa0f59a00000000,
+ 0x0d32b13500000000, 0x5ac18ccf00000000, 0x1d53c86000000000,
+ 0x95e3744a00000000, 0xd27130e500000000, 0x8400999100000000,
+ 0xc392dd3e00000000, 0x4b22611400000000, 0x0cb025bb00000000,
+ 0x5b43184100000000, 0x1cd15cee00000000, 0x9461e0c400000000,
+ 0xd3f3a46b00000000, 0x7b81eaeb00000000, 0x3c13ae4400000000,
+ 0xb4a3126e00000000, 0xf33156c100000000, 0xa4c26b3b00000000,
+ 0xe3502f9400000000, 0x6be093be00000000, 0x2c72d71100000000,
+ 0xc702c15700000000, 0x809085f800000000, 0x082039d200000000,
+ 0x4fb27d7d00000000, 0x1841408700000000, 0x5fd3042800000000,
+ 0xd763b80200000000, 0x90f1fcad00000000, 0x3883b22d00000000,
+ 0x7f11f68200000000, 0xf7a14aa800000000, 0xb0330e0700000000,
+ 0xe7c033fd00000000, 0xa052775200000000, 0x28e2cb7800000000,
+ 0x6f708fd700000000, 0x390126a300000000, 0x7e93620c00000000,
+ 0xf623de2600000000, 0xb1b19a8900000000, 0xe642a77300000000,
+ 0xa1d0e3dc00000000, 0x29605ff600000000, 0x6ef21b5900000000,
+ 0xc68055d900000000, 0x8112117600000000, 0x09a2ad5c00000000,
+ 0x4e30e9f300000000, 0x19c3d40900000000, 0x5e5190a600000000,
+ 0xd6e12c8c00000000, 0x9173682300000000, 0xf406fcca00000000,
+ 0xb394b86500000000, 0x3b24044f00000000, 0x7cb640e000000000,
+ 0x2b457d1a00000000, 0x6cd739b500000000, 0xe467859f00000000,
+ 0xa3f5c13000000000, 0x0b878fb000000000, 0x4c15cb1f00000000,
+ 0xc4a5773500000000, 0x8337339a00000000, 0xd4c40e6000000000,
+ 0x93564acf00000000, 0x1be6f6e500000000, 0x5c74b24a00000000,
+ 0x0a051b3e00000000, 0x4d975f9100000000, 0xc527e3bb00000000,
+ 0x82b5a71400000000, 0xd5469aee00000000, 0x92d4de4100000000,
+ 0x1a64626b00000000, 0x5df626c400000000, 0xf584684400000000,
+ 0xb2162ceb00000000, 0x3aa690c100000000, 0x7d34d46e00000000,
+ 0x2ac7e99400000000, 0x6d55ad3b00000000, 0xe5e5111100000000,
+ 0xa27755be00000000, 0x490743f800000000, 0x0e95075700000000,
+ 0x8625bb7d00000000, 0xc1b7ffd200000000, 0x9644c22800000000,
+ 0xd1d6868700000000, 0x59663aad00000000, 0x1ef47e0200000000,
+ 0xb686308200000000, 0xf114742d00000000, 0x79a4c80700000000,
+ 0x3e368ca800000000, 0x69c5b15200000000, 0x2e57f5fd00000000,
+ 0xa6e749d700000000, 0xe1750d7800000000, 0xb704a40c00000000,
+ 0xf096e0a300000000, 0x78265c8900000000, 0x3fb4182600000000,
+ 0x684725dc00000000, 0x2fd5617300000000, 0xa765dd5900000000,
+ 0xe0f799f600000000, 0x4885d77600000000, 0x0f1793d900000000,
+ 0x87a72ff300000000, 0xc0356b5c00000000, 0x97c656a600000000,
+ 0xd054120900000000, 0x58e4ae2300000000, 0x1f76ea8c00000000,
+ 0x8e0582af00000000, 0xc997c60000000000, 0x41277a2a00000000,
+ 0x06b53e8500000000, 0x5146037f00000000, 0x16d447d000000000,
+ 0x9e64fbfa00000000, 0xd9f6bf5500000000, 0x7184f1d500000000,
+ 0x3616b57a00000000, 0xbea6095000000000, 0xf9344dff00000000,
+ 0xaec7700500000000, 0xe95534aa00000000, 0x61e5888000000000,
+ 0x2677cc2f00000000, 0x7006655b00000000, 0x379421f400000000,
+ 0xbf249dde00000000, 0xf8b6d97100000000, 0xaf45e48b00000000,
+ 0xe8d7a02400000000, 0x60671c0e00000000, 0x27f558a100000000,
+ 0x8f87162100000000, 0xc815528e00000000, 0x40a5eea400000000,
+ 0x0737aa0b00000000, 0x50c497f100000000, 0x1756d35e00000000,
+ 0x9fe66f7400000000, 0xd8742bdb00000000, 0x33043d9d00000000,
+ 0x7496793200000000, 0xfc26c51800000000, 0xbbb481b700000000,
+ 0xec47bc4d00000000, 0xabd5f8e200000000, 0x236544c800000000,
+ 0x64f7006700000000, 0xcc854ee700000000, 0x8b170a4800000000,
+ 0x03a7b66200000000, 0x4435f2cd00000000, 0x13c6cf3700000000,
+ 0x54548b9800000000, 0xdce437b200000000, 0x9b76731d00000000,
+ 0xcd07da6900000000, 0x8a959ec600000000, 0x022522ec00000000,
+ 0x45b7664300000000, 0x12445bb900000000, 0x55d61f1600000000,
+ 0xdd66a33c00000000, 0x9af4e79300000000, 0x3286a91300000000,
+ 0x7514edbc00000000, 0xfda4519600000000, 0xba36153900000000,
+ 0xedc528c300000000, 0xaa576c6c00000000, 0x22e7d04600000000,
+ 0x657594e900000000}};
+
+#else /* W == 4 */
+
+local const z_crc_t FAR crc_braid_table[][256] = {
+ {0x00000000, 0x65673b46, 0xcace768c, 0xafa94dca, 0x4eedeb59,
+ 0x2b8ad01f, 0x84239dd5, 0xe144a693, 0x9ddbd6b2, 0xf8bcedf4,
+ 0x5715a03e, 0x32729b78, 0xd3363deb, 0xb65106ad, 0x19f84b67,
+ 0x7c9f7021, 0xe0c6ab25, 0x85a19063, 0x2a08dda9, 0x4f6fe6ef,
+ 0xae2b407c, 0xcb4c7b3a, 0x64e536f0, 0x01820db6, 0x7d1d7d97,
+ 0x187a46d1, 0xb7d30b1b, 0xd2b4305d, 0x33f096ce, 0x5697ad88,
+ 0xf93ee042, 0x9c59db04, 0x1afc500b, 0x7f9b6b4d, 0xd0322687,
+ 0xb5551dc1, 0x5411bb52, 0x31768014, 0x9edfcdde, 0xfbb8f698,
+ 0x872786b9, 0xe240bdff, 0x4de9f035, 0x288ecb73, 0xc9ca6de0,
+ 0xacad56a6, 0x03041b6c, 0x6663202a, 0xfa3afb2e, 0x9f5dc068,
+ 0x30f48da2, 0x5593b6e4, 0xb4d71077, 0xd1b02b31, 0x7e1966fb,
+ 0x1b7e5dbd, 0x67e12d9c, 0x028616da, 0xad2f5b10, 0xc8486056,
+ 0x290cc6c5, 0x4c6bfd83, 0xe3c2b049, 0x86a58b0f, 0x35f8a016,
+ 0x509f9b50, 0xff36d69a, 0x9a51eddc, 0x7b154b4f, 0x1e727009,
+ 0xb1db3dc3, 0xd4bc0685, 0xa82376a4, 0xcd444de2, 0x62ed0028,
+ 0x078a3b6e, 0xe6ce9dfd, 0x83a9a6bb, 0x2c00eb71, 0x4967d037,
+ 0xd53e0b33, 0xb0593075, 0x1ff07dbf, 0x7a9746f9, 0x9bd3e06a,
+ 0xfeb4db2c, 0x511d96e6, 0x347aada0, 0x48e5dd81, 0x2d82e6c7,
+ 0x822bab0d, 0xe74c904b, 0x060836d8, 0x636f0d9e, 0xccc64054,
+ 0xa9a17b12, 0x2f04f01d, 0x4a63cb5b, 0xe5ca8691, 0x80adbdd7,
+ 0x61e91b44, 0x048e2002, 0xab276dc8, 0xce40568e, 0xb2df26af,
+ 0xd7b81de9, 0x78115023, 0x1d766b65, 0xfc32cdf6, 0x9955f6b0,
+ 0x36fcbb7a, 0x539b803c, 0xcfc25b38, 0xaaa5607e, 0x050c2db4,
+ 0x606b16f2, 0x812fb061, 0xe4488b27, 0x4be1c6ed, 0x2e86fdab,
+ 0x52198d8a, 0x377eb6cc, 0x98d7fb06, 0xfdb0c040, 0x1cf466d3,
+ 0x79935d95, 0xd63a105f, 0xb35d2b19, 0x6bf1402c, 0x0e967b6a,
+ 0xa13f36a0, 0xc4580de6, 0x251cab75, 0x407b9033, 0xefd2ddf9,
+ 0x8ab5e6bf, 0xf62a969e, 0x934dadd8, 0x3ce4e012, 0x5983db54,
+ 0xb8c77dc7, 0xdda04681, 0x72090b4b, 0x176e300d, 0x8b37eb09,
+ 0xee50d04f, 0x41f99d85, 0x249ea6c3, 0xc5da0050, 0xa0bd3b16,
+ 0x0f1476dc, 0x6a734d9a, 0x16ec3dbb, 0x738b06fd, 0xdc224b37,
+ 0xb9457071, 0x5801d6e2, 0x3d66eda4, 0x92cfa06e, 0xf7a89b28,
+ 0x710d1027, 0x146a2b61, 0xbbc366ab, 0xdea45ded, 0x3fe0fb7e,
+ 0x5a87c038, 0xf52e8df2, 0x9049b6b4, 0xecd6c695, 0x89b1fdd3,
+ 0x2618b019, 0x437f8b5f, 0xa23b2dcc, 0xc75c168a, 0x68f55b40,
+ 0x0d926006, 0x91cbbb02, 0xf4ac8044, 0x5b05cd8e, 0x3e62f6c8,
+ 0xdf26505b, 0xba416b1d, 0x15e826d7, 0x708f1d91, 0x0c106db0,
+ 0x697756f6, 0xc6de1b3c, 0xa3b9207a, 0x42fd86e9, 0x279abdaf,
+ 0x8833f065, 0xed54cb23, 0x5e09e03a, 0x3b6edb7c, 0x94c796b6,
+ 0xf1a0adf0, 0x10e40b63, 0x75833025, 0xda2a7def, 0xbf4d46a9,
+ 0xc3d23688, 0xa6b50dce, 0x091c4004, 0x6c7b7b42, 0x8d3fddd1,
+ 0xe858e697, 0x47f1ab5d, 0x2296901b, 0xbecf4b1f, 0xdba87059,
+ 0x74013d93, 0x116606d5, 0xf022a046, 0x95459b00, 0x3aecd6ca,
+ 0x5f8bed8c, 0x23149dad, 0x4673a6eb, 0xe9daeb21, 0x8cbdd067,
+ 0x6df976f4, 0x089e4db2, 0xa7370078, 0xc2503b3e, 0x44f5b031,
+ 0x21928b77, 0x8e3bc6bd, 0xeb5cfdfb, 0x0a185b68, 0x6f7f602e,
+ 0xc0d62de4, 0xa5b116a2, 0xd92e6683, 0xbc495dc5, 0x13e0100f,
+ 0x76872b49, 0x97c38dda, 0xf2a4b69c, 0x5d0dfb56, 0x386ac010,
+ 0xa4331b14, 0xc1542052, 0x6efd6d98, 0x0b9a56de, 0xeadef04d,
+ 0x8fb9cb0b, 0x201086c1, 0x4577bd87, 0x39e8cda6, 0x5c8ff6e0,
+ 0xf326bb2a, 0x9641806c, 0x770526ff, 0x12621db9, 0xbdcb5073,
+ 0xd8ac6b35},
+ {0x00000000, 0xd7e28058, 0x74b406f1, 0xa35686a9, 0xe9680de2,
+ 0x3e8a8dba, 0x9ddc0b13, 0x4a3e8b4b, 0x09a11d85, 0xde439ddd,
+ 0x7d151b74, 0xaaf79b2c, 0xe0c91067, 0x372b903f, 0x947d1696,
+ 0x439f96ce, 0x13423b0a, 0xc4a0bb52, 0x67f63dfb, 0xb014bda3,
+ 0xfa2a36e8, 0x2dc8b6b0, 0x8e9e3019, 0x597cb041, 0x1ae3268f,
+ 0xcd01a6d7, 0x6e57207e, 0xb9b5a026, 0xf38b2b6d, 0x2469ab35,
+ 0x873f2d9c, 0x50ddadc4, 0x26847614, 0xf166f64c, 0x523070e5,
+ 0x85d2f0bd, 0xcfec7bf6, 0x180efbae, 0xbb587d07, 0x6cbafd5f,
+ 0x2f256b91, 0xf8c7ebc9, 0x5b916d60, 0x8c73ed38, 0xc64d6673,
+ 0x11afe62b, 0xb2f96082, 0x651be0da, 0x35c64d1e, 0xe224cd46,
+ 0x41724bef, 0x9690cbb7, 0xdcae40fc, 0x0b4cc0a4, 0xa81a460d,
+ 0x7ff8c655, 0x3c67509b, 0xeb85d0c3, 0x48d3566a, 0x9f31d632,
+ 0xd50f5d79, 0x02eddd21, 0xa1bb5b88, 0x7659dbd0, 0x4d08ec28,
+ 0x9aea6c70, 0x39bcead9, 0xee5e6a81, 0xa460e1ca, 0x73826192,
+ 0xd0d4e73b, 0x07366763, 0x44a9f1ad, 0x934b71f5, 0x301df75c,
+ 0xe7ff7704, 0xadc1fc4f, 0x7a237c17, 0xd975fabe, 0x0e977ae6,
+ 0x5e4ad722, 0x89a8577a, 0x2afed1d3, 0xfd1c518b, 0xb722dac0,
+ 0x60c05a98, 0xc396dc31, 0x14745c69, 0x57ebcaa7, 0x80094aff,
+ 0x235fcc56, 0xf4bd4c0e, 0xbe83c745, 0x6961471d, 0xca37c1b4,
+ 0x1dd541ec, 0x6b8c9a3c, 0xbc6e1a64, 0x1f389ccd, 0xc8da1c95,
+ 0x82e497de, 0x55061786, 0xf650912f, 0x21b21177, 0x622d87b9,
+ 0xb5cf07e1, 0x16998148, 0xc17b0110, 0x8b458a5b, 0x5ca70a03,
+ 0xfff18caa, 0x28130cf2, 0x78cea136, 0xaf2c216e, 0x0c7aa7c7,
+ 0xdb98279f, 0x91a6acd4, 0x46442c8c, 0xe512aa25, 0x32f02a7d,
+ 0x716fbcb3, 0xa68d3ceb, 0x05dbba42, 0xd2393a1a, 0x9807b151,
+ 0x4fe53109, 0xecb3b7a0, 0x3b5137f8, 0x9a11d850, 0x4df35808,
+ 0xeea5dea1, 0x39475ef9, 0x7379d5b2, 0xa49b55ea, 0x07cdd343,
+ 0xd02f531b, 0x93b0c5d5, 0x4452458d, 0xe704c324, 0x30e6437c,
+ 0x7ad8c837, 0xad3a486f, 0x0e6ccec6, 0xd98e4e9e, 0x8953e35a,
+ 0x5eb16302, 0xfde7e5ab, 0x2a0565f3, 0x603beeb8, 0xb7d96ee0,
+ 0x148fe849, 0xc36d6811, 0x80f2fedf, 0x57107e87, 0xf446f82e,
+ 0x23a47876, 0x699af33d, 0xbe787365, 0x1d2ef5cc, 0xcacc7594,
+ 0xbc95ae44, 0x6b772e1c, 0xc821a8b5, 0x1fc328ed, 0x55fda3a6,
+ 0x821f23fe, 0x2149a557, 0xf6ab250f, 0xb534b3c1, 0x62d63399,
+ 0xc180b530, 0x16623568, 0x5c5cbe23, 0x8bbe3e7b, 0x28e8b8d2,
+ 0xff0a388a, 0xafd7954e, 0x78351516, 0xdb6393bf, 0x0c8113e7,
+ 0x46bf98ac, 0x915d18f4, 0x320b9e5d, 0xe5e91e05, 0xa67688cb,
+ 0x71940893, 0xd2c28e3a, 0x05200e62, 0x4f1e8529, 0x98fc0571,
+ 0x3baa83d8, 0xec480380, 0xd7193478, 0x00fbb420, 0xa3ad3289,
+ 0x744fb2d1, 0x3e71399a, 0xe993b9c2, 0x4ac53f6b, 0x9d27bf33,
+ 0xdeb829fd, 0x095aa9a5, 0xaa0c2f0c, 0x7deeaf54, 0x37d0241f,
+ 0xe032a447, 0x436422ee, 0x9486a2b6, 0xc45b0f72, 0x13b98f2a,
+ 0xb0ef0983, 0x670d89db, 0x2d330290, 0xfad182c8, 0x59870461,
+ 0x8e658439, 0xcdfa12f7, 0x1a1892af, 0xb94e1406, 0x6eac945e,
+ 0x24921f15, 0xf3709f4d, 0x502619e4, 0x87c499bc, 0xf19d426c,
+ 0x267fc234, 0x8529449d, 0x52cbc4c5, 0x18f54f8e, 0xcf17cfd6,
+ 0x6c41497f, 0xbba3c927, 0xf83c5fe9, 0x2fdedfb1, 0x8c885918,
+ 0x5b6ad940, 0x1154520b, 0xc6b6d253, 0x65e054fa, 0xb202d4a2,
+ 0xe2df7966, 0x353df93e, 0x966b7f97, 0x4189ffcf, 0x0bb77484,
+ 0xdc55f4dc, 0x7f037275, 0xa8e1f22d, 0xeb7e64e3, 0x3c9ce4bb,
+ 0x9fca6212, 0x4828e24a, 0x02166901, 0xd5f4e959, 0x76a26ff0,
+ 0xa140efa8},
+ {0x00000000, 0xef52b6e1, 0x05d46b83, 0xea86dd62, 0x0ba8d706,
+ 0xe4fa61e7, 0x0e7cbc85, 0xe12e0a64, 0x1751ae0c, 0xf80318ed,
+ 0x1285c58f, 0xfdd7736e, 0x1cf9790a, 0xf3abcfeb, 0x192d1289,
+ 0xf67fa468, 0x2ea35c18, 0xc1f1eaf9, 0x2b77379b, 0xc425817a,
+ 0x250b8b1e, 0xca593dff, 0x20dfe09d, 0xcf8d567c, 0x39f2f214,
+ 0xd6a044f5, 0x3c269997, 0xd3742f76, 0x325a2512, 0xdd0893f3,
+ 0x378e4e91, 0xd8dcf870, 0x5d46b830, 0xb2140ed1, 0x5892d3b3,
+ 0xb7c06552, 0x56ee6f36, 0xb9bcd9d7, 0x533a04b5, 0xbc68b254,
+ 0x4a17163c, 0xa545a0dd, 0x4fc37dbf, 0xa091cb5e, 0x41bfc13a,
+ 0xaeed77db, 0x446baab9, 0xab391c58, 0x73e5e428, 0x9cb752c9,
+ 0x76318fab, 0x9963394a, 0x784d332e, 0x971f85cf, 0x7d9958ad,
+ 0x92cbee4c, 0x64b44a24, 0x8be6fcc5, 0x616021a7, 0x8e329746,
+ 0x6f1c9d22, 0x804e2bc3, 0x6ac8f6a1, 0x859a4040, 0xba8d7060,
+ 0x55dfc681, 0xbf591be3, 0x500bad02, 0xb125a766, 0x5e771187,
+ 0xb4f1cce5, 0x5ba37a04, 0xaddcde6c, 0x428e688d, 0xa808b5ef,
+ 0x475a030e, 0xa674096a, 0x4926bf8b, 0xa3a062e9, 0x4cf2d408,
+ 0x942e2c78, 0x7b7c9a99, 0x91fa47fb, 0x7ea8f11a, 0x9f86fb7e,
+ 0x70d44d9f, 0x9a5290fd, 0x7500261c, 0x837f8274, 0x6c2d3495,
+ 0x86abe9f7, 0x69f95f16, 0x88d75572, 0x6785e393, 0x8d033ef1,
+ 0x62518810, 0xe7cbc850, 0x08997eb1, 0xe21fa3d3, 0x0d4d1532,
+ 0xec631f56, 0x0331a9b7, 0xe9b774d5, 0x06e5c234, 0xf09a665c,
+ 0x1fc8d0bd, 0xf54e0ddf, 0x1a1cbb3e, 0xfb32b15a, 0x146007bb,
+ 0xfee6dad9, 0x11b46c38, 0xc9689448, 0x263a22a9, 0xccbcffcb,
+ 0x23ee492a, 0xc2c0434e, 0x2d92f5af, 0xc71428cd, 0x28469e2c,
+ 0xde393a44, 0x316b8ca5, 0xdbed51c7, 0x34bfe726, 0xd591ed42,
+ 0x3ac35ba3, 0xd04586c1, 0x3f173020, 0xae6be681, 0x41395060,
+ 0xabbf8d02, 0x44ed3be3, 0xa5c33187, 0x4a918766, 0xa0175a04,
+ 0x4f45ece5, 0xb93a488d, 0x5668fe6c, 0xbcee230e, 0x53bc95ef,
+ 0xb2929f8b, 0x5dc0296a, 0xb746f408, 0x581442e9, 0x80c8ba99,
+ 0x6f9a0c78, 0x851cd11a, 0x6a4e67fb, 0x8b606d9f, 0x6432db7e,
+ 0x8eb4061c, 0x61e6b0fd, 0x97991495, 0x78cba274, 0x924d7f16,
+ 0x7d1fc9f7, 0x9c31c393, 0x73637572, 0x99e5a810, 0x76b71ef1,
+ 0xf32d5eb1, 0x1c7fe850, 0xf6f93532, 0x19ab83d3, 0xf88589b7,
+ 0x17d73f56, 0xfd51e234, 0x120354d5, 0xe47cf0bd, 0x0b2e465c,
+ 0xe1a89b3e, 0x0efa2ddf, 0xefd427bb, 0x0086915a, 0xea004c38,
+ 0x0552fad9, 0xdd8e02a9, 0x32dcb448, 0xd85a692a, 0x3708dfcb,
+ 0xd626d5af, 0x3974634e, 0xd3f2be2c, 0x3ca008cd, 0xcadfaca5,
+ 0x258d1a44, 0xcf0bc726, 0x205971c7, 0xc1777ba3, 0x2e25cd42,
+ 0xc4a31020, 0x2bf1a6c1, 0x14e696e1, 0xfbb42000, 0x1132fd62,
+ 0xfe604b83, 0x1f4e41e7, 0xf01cf706, 0x1a9a2a64, 0xf5c89c85,
+ 0x03b738ed, 0xece58e0c, 0x0663536e, 0xe931e58f, 0x081fefeb,
+ 0xe74d590a, 0x0dcb8468, 0xe2993289, 0x3a45caf9, 0xd5177c18,
+ 0x3f91a17a, 0xd0c3179b, 0x31ed1dff, 0xdebfab1e, 0x3439767c,
+ 0xdb6bc09d, 0x2d1464f5, 0xc246d214, 0x28c00f76, 0xc792b997,
+ 0x26bcb3f3, 0xc9ee0512, 0x2368d870, 0xcc3a6e91, 0x49a02ed1,
+ 0xa6f29830, 0x4c744552, 0xa326f3b3, 0x4208f9d7, 0xad5a4f36,
+ 0x47dc9254, 0xa88e24b5, 0x5ef180dd, 0xb1a3363c, 0x5b25eb5e,
+ 0xb4775dbf, 0x555957db, 0xba0be13a, 0x508d3c58, 0xbfdf8ab9,
+ 0x670372c9, 0x8851c428, 0x62d7194a, 0x8d85afab, 0x6caba5cf,
+ 0x83f9132e, 0x697fce4c, 0x862d78ad, 0x7052dcc5, 0x9f006a24,
+ 0x7586b746, 0x9ad401a7, 0x7bfa0bc3, 0x94a8bd22, 0x7e2e6040,
+ 0x917cd6a1},
+ {0x00000000, 0x87a6cb43, 0xd43c90c7, 0x539a5b84, 0x730827cf,
+ 0xf4aeec8c, 0xa734b708, 0x20927c4b, 0xe6104f9e, 0x61b684dd,
+ 0x322cdf59, 0xb58a141a, 0x95186851, 0x12bea312, 0x4124f896,
+ 0xc68233d5, 0x1751997d, 0x90f7523e, 0xc36d09ba, 0x44cbc2f9,
+ 0x6459beb2, 0xe3ff75f1, 0xb0652e75, 0x37c3e536, 0xf141d6e3,
+ 0x76e71da0, 0x257d4624, 0xa2db8d67, 0x8249f12c, 0x05ef3a6f,
+ 0x567561eb, 0xd1d3aaa8, 0x2ea332fa, 0xa905f9b9, 0xfa9fa23d,
+ 0x7d39697e, 0x5dab1535, 0xda0dde76, 0x899785f2, 0x0e314eb1,
+ 0xc8b37d64, 0x4f15b627, 0x1c8feda3, 0x9b2926e0, 0xbbbb5aab,
+ 0x3c1d91e8, 0x6f87ca6c, 0xe821012f, 0x39f2ab87, 0xbe5460c4,
+ 0xedce3b40, 0x6a68f003, 0x4afa8c48, 0xcd5c470b, 0x9ec61c8f,
+ 0x1960d7cc, 0xdfe2e419, 0x58442f5a, 0x0bde74de, 0x8c78bf9d,
+ 0xaceac3d6, 0x2b4c0895, 0x78d65311, 0xff709852, 0x5d4665f4,
+ 0xdae0aeb7, 0x897af533, 0x0edc3e70, 0x2e4e423b, 0xa9e88978,
+ 0xfa72d2fc, 0x7dd419bf, 0xbb562a6a, 0x3cf0e129, 0x6f6abaad,
+ 0xe8cc71ee, 0xc85e0da5, 0x4ff8c6e6, 0x1c629d62, 0x9bc45621,
+ 0x4a17fc89, 0xcdb137ca, 0x9e2b6c4e, 0x198da70d, 0x391fdb46,
+ 0xbeb91005, 0xed234b81, 0x6a8580c2, 0xac07b317, 0x2ba17854,
+ 0x783b23d0, 0xff9de893, 0xdf0f94d8, 0x58a95f9b, 0x0b33041f,
+ 0x8c95cf5c, 0x73e5570e, 0xf4439c4d, 0xa7d9c7c9, 0x207f0c8a,
+ 0x00ed70c1, 0x874bbb82, 0xd4d1e006, 0x53772b45, 0x95f51890,
+ 0x1253d3d3, 0x41c98857, 0xc66f4314, 0xe6fd3f5f, 0x615bf41c,
+ 0x32c1af98, 0xb56764db, 0x64b4ce73, 0xe3120530, 0xb0885eb4,
+ 0x372e95f7, 0x17bce9bc, 0x901a22ff, 0xc380797b, 0x4426b238,
+ 0x82a481ed, 0x05024aae, 0x5698112a, 0xd13eda69, 0xf1aca622,
+ 0x760a6d61, 0x259036e5, 0xa236fda6, 0xba8ccbe8, 0x3d2a00ab,
+ 0x6eb05b2f, 0xe916906c, 0xc984ec27, 0x4e222764, 0x1db87ce0,
+ 0x9a1eb7a3, 0x5c9c8476, 0xdb3a4f35, 0x88a014b1, 0x0f06dff2,
+ 0x2f94a3b9, 0xa83268fa, 0xfba8337e, 0x7c0ef83d, 0xaddd5295,
+ 0x2a7b99d6, 0x79e1c252, 0xfe470911, 0xded5755a, 0x5973be19,
+ 0x0ae9e59d, 0x8d4f2ede, 0x4bcd1d0b, 0xcc6bd648, 0x9ff18dcc,
+ 0x1857468f, 0x38c53ac4, 0xbf63f187, 0xecf9aa03, 0x6b5f6140,
+ 0x942ff912, 0x13893251, 0x401369d5, 0xc7b5a296, 0xe727dedd,
+ 0x6081159e, 0x331b4e1a, 0xb4bd8559, 0x723fb68c, 0xf5997dcf,
+ 0xa603264b, 0x21a5ed08, 0x01379143, 0x86915a00, 0xd50b0184,
+ 0x52adcac7, 0x837e606f, 0x04d8ab2c, 0x5742f0a8, 0xd0e43beb,
+ 0xf07647a0, 0x77d08ce3, 0x244ad767, 0xa3ec1c24, 0x656e2ff1,
+ 0xe2c8e4b2, 0xb152bf36, 0x36f47475, 0x1666083e, 0x91c0c37d,
+ 0xc25a98f9, 0x45fc53ba, 0xe7caae1c, 0x606c655f, 0x33f63edb,
+ 0xb450f598, 0x94c289d3, 0x13644290, 0x40fe1914, 0xc758d257,
+ 0x01dae182, 0x867c2ac1, 0xd5e67145, 0x5240ba06, 0x72d2c64d,
+ 0xf5740d0e, 0xa6ee568a, 0x21489dc9, 0xf09b3761, 0x773dfc22,
+ 0x24a7a7a6, 0xa3016ce5, 0x839310ae, 0x0435dbed, 0x57af8069,
+ 0xd0094b2a, 0x168b78ff, 0x912db3bc, 0xc2b7e838, 0x4511237b,
+ 0x65835f30, 0xe2259473, 0xb1bfcff7, 0x361904b4, 0xc9699ce6,
+ 0x4ecf57a5, 0x1d550c21, 0x9af3c762, 0xba61bb29, 0x3dc7706a,
+ 0x6e5d2bee, 0xe9fbe0ad, 0x2f79d378, 0xa8df183b, 0xfb4543bf,
+ 0x7ce388fc, 0x5c71f4b7, 0xdbd73ff4, 0x884d6470, 0x0febaf33,
+ 0xde38059b, 0x599eced8, 0x0a04955c, 0x8da25e1f, 0xad302254,
+ 0x2a96e917, 0x790cb293, 0xfeaa79d0, 0x38284a05, 0xbf8e8146,
+ 0xec14dac2, 0x6bb21181, 0x4b206dca, 0xcc86a689, 0x9f1cfd0d,
+ 0x18ba364e}};
+
+local const z_word_t FAR crc_braid_big_table[][256] = {
+ {0x00000000, 0x43cba687, 0xc7903cd4, 0x845b9a53, 0xcf270873,
+ 0x8cecaef4, 0x08b734a7, 0x4b7c9220, 0x9e4f10e6, 0xdd84b661,
+ 0x59df2c32, 0x1a148ab5, 0x51681895, 0x12a3be12, 0x96f82441,
+ 0xd53382c6, 0x7d995117, 0x3e52f790, 0xba096dc3, 0xf9c2cb44,
+ 0xb2be5964, 0xf175ffe3, 0x752e65b0, 0x36e5c337, 0xe3d641f1,
+ 0xa01de776, 0x24467d25, 0x678ddba2, 0x2cf14982, 0x6f3aef05,
+ 0xeb617556, 0xa8aad3d1, 0xfa32a32e, 0xb9f905a9, 0x3da29ffa,
+ 0x7e69397d, 0x3515ab5d, 0x76de0dda, 0xf2859789, 0xb14e310e,
+ 0x647db3c8, 0x27b6154f, 0xa3ed8f1c, 0xe026299b, 0xab5abbbb,
+ 0xe8911d3c, 0x6cca876f, 0x2f0121e8, 0x87abf239, 0xc46054be,
+ 0x403bceed, 0x03f0686a, 0x488cfa4a, 0x0b475ccd, 0x8f1cc69e,
+ 0xccd76019, 0x19e4e2df, 0x5a2f4458, 0xde74de0b, 0x9dbf788c,
+ 0xd6c3eaac, 0x95084c2b, 0x1153d678, 0x529870ff, 0xf465465d,
+ 0xb7aee0da, 0x33f57a89, 0x703edc0e, 0x3b424e2e, 0x7889e8a9,
+ 0xfcd272fa, 0xbf19d47d, 0x6a2a56bb, 0x29e1f03c, 0xadba6a6f,
+ 0xee71cce8, 0xa50d5ec8, 0xe6c6f84f, 0x629d621c, 0x2156c49b,
+ 0x89fc174a, 0xca37b1cd, 0x4e6c2b9e, 0x0da78d19, 0x46db1f39,
+ 0x0510b9be, 0x814b23ed, 0xc280856a, 0x17b307ac, 0x5478a12b,
+ 0xd0233b78, 0x93e89dff, 0xd8940fdf, 0x9b5fa958, 0x1f04330b,
+ 0x5ccf958c, 0x0e57e573, 0x4d9c43f4, 0xc9c7d9a7, 0x8a0c7f20,
+ 0xc170ed00, 0x82bb4b87, 0x06e0d1d4, 0x452b7753, 0x9018f595,
+ 0xd3d35312, 0x5788c941, 0x14436fc6, 0x5f3ffde6, 0x1cf45b61,
+ 0x98afc132, 0xdb6467b5, 0x73ceb464, 0x300512e3, 0xb45e88b0,
+ 0xf7952e37, 0xbce9bc17, 0xff221a90, 0x7b7980c3, 0x38b22644,
+ 0xed81a482, 0xae4a0205, 0x2a119856, 0x69da3ed1, 0x22a6acf1,
+ 0x616d0a76, 0xe5369025, 0xa6fd36a2, 0xe8cb8cba, 0xab002a3d,
+ 0x2f5bb06e, 0x6c9016e9, 0x27ec84c9, 0x6427224e, 0xe07cb81d,
+ 0xa3b71e9a, 0x76849c5c, 0x354f3adb, 0xb114a088, 0xf2df060f,
+ 0xb9a3942f, 0xfa6832a8, 0x7e33a8fb, 0x3df80e7c, 0x9552ddad,
+ 0xd6997b2a, 0x52c2e179, 0x110947fe, 0x5a75d5de, 0x19be7359,
+ 0x9de5e90a, 0xde2e4f8d, 0x0b1dcd4b, 0x48d66bcc, 0xcc8df19f,
+ 0x8f465718, 0xc43ac538, 0x87f163bf, 0x03aaf9ec, 0x40615f6b,
+ 0x12f92f94, 0x51328913, 0xd5691340, 0x96a2b5c7, 0xddde27e7,
+ 0x9e158160, 0x1a4e1b33, 0x5985bdb4, 0x8cb63f72, 0xcf7d99f5,
+ 0x4b2603a6, 0x08eda521, 0x43913701, 0x005a9186, 0x84010bd5,
+ 0xc7caad52, 0x6f607e83, 0x2cabd804, 0xa8f04257, 0xeb3be4d0,
+ 0xa04776f0, 0xe38cd077, 0x67d74a24, 0x241ceca3, 0xf12f6e65,
+ 0xb2e4c8e2, 0x36bf52b1, 0x7574f436, 0x3e086616, 0x7dc3c091,
+ 0xf9985ac2, 0xba53fc45, 0x1caecae7, 0x5f656c60, 0xdb3ef633,
+ 0x98f550b4, 0xd389c294, 0x90426413, 0x1419fe40, 0x57d258c7,
+ 0x82e1da01, 0xc12a7c86, 0x4571e6d5, 0x06ba4052, 0x4dc6d272,
+ 0x0e0d74f5, 0x8a56eea6, 0xc99d4821, 0x61379bf0, 0x22fc3d77,
+ 0xa6a7a724, 0xe56c01a3, 0xae109383, 0xeddb3504, 0x6980af57,
+ 0x2a4b09d0, 0xff788b16, 0xbcb32d91, 0x38e8b7c2, 0x7b231145,
+ 0x305f8365, 0x739425e2, 0xf7cfbfb1, 0xb4041936, 0xe69c69c9,
+ 0xa557cf4e, 0x210c551d, 0x62c7f39a, 0x29bb61ba, 0x6a70c73d,
+ 0xee2b5d6e, 0xade0fbe9, 0x78d3792f, 0x3b18dfa8, 0xbf4345fb,
+ 0xfc88e37c, 0xb7f4715c, 0xf43fd7db, 0x70644d88, 0x33afeb0f,
+ 0x9b0538de, 0xd8ce9e59, 0x5c95040a, 0x1f5ea28d, 0x542230ad,
+ 0x17e9962a, 0x93b20c79, 0xd079aafe, 0x054a2838, 0x46818ebf,
+ 0xc2da14ec, 0x8111b26b, 0xca6d204b, 0x89a686cc, 0x0dfd1c9f,
+ 0x4e36ba18},
+ {0x00000000, 0xe1b652ef, 0x836bd405, 0x62dd86ea, 0x06d7a80b,
+ 0xe761fae4, 0x85bc7c0e, 0x640a2ee1, 0x0cae5117, 0xed1803f8,
+ 0x8fc58512, 0x6e73d7fd, 0x0a79f91c, 0xebcfabf3, 0x89122d19,
+ 0x68a47ff6, 0x185ca32e, 0xf9eaf1c1, 0x9b37772b, 0x7a8125c4,
+ 0x1e8b0b25, 0xff3d59ca, 0x9de0df20, 0x7c568dcf, 0x14f2f239,
+ 0xf544a0d6, 0x9799263c, 0x762f74d3, 0x12255a32, 0xf39308dd,
+ 0x914e8e37, 0x70f8dcd8, 0x30b8465d, 0xd10e14b2, 0xb3d39258,
+ 0x5265c0b7, 0x366fee56, 0xd7d9bcb9, 0xb5043a53, 0x54b268bc,
+ 0x3c16174a, 0xdda045a5, 0xbf7dc34f, 0x5ecb91a0, 0x3ac1bf41,
+ 0xdb77edae, 0xb9aa6b44, 0x581c39ab, 0x28e4e573, 0xc952b79c,
+ 0xab8f3176, 0x4a396399, 0x2e334d78, 0xcf851f97, 0xad58997d,
+ 0x4ceecb92, 0x244ab464, 0xc5fce68b, 0xa7216061, 0x4697328e,
+ 0x229d1c6f, 0xc32b4e80, 0xa1f6c86a, 0x40409a85, 0x60708dba,
+ 0x81c6df55, 0xe31b59bf, 0x02ad0b50, 0x66a725b1, 0x8711775e,
+ 0xe5ccf1b4, 0x047aa35b, 0x6cdedcad, 0x8d688e42, 0xefb508a8,
+ 0x0e035a47, 0x6a0974a6, 0x8bbf2649, 0xe962a0a3, 0x08d4f24c,
+ 0x782c2e94, 0x999a7c7b, 0xfb47fa91, 0x1af1a87e, 0x7efb869f,
+ 0x9f4dd470, 0xfd90529a, 0x1c260075, 0x74827f83, 0x95342d6c,
+ 0xf7e9ab86, 0x165ff969, 0x7255d788, 0x93e38567, 0xf13e038d,
+ 0x10885162, 0x50c8cbe7, 0xb17e9908, 0xd3a31fe2, 0x32154d0d,
+ 0x561f63ec, 0xb7a93103, 0xd574b7e9, 0x34c2e506, 0x5c669af0,
+ 0xbdd0c81f, 0xdf0d4ef5, 0x3ebb1c1a, 0x5ab132fb, 0xbb076014,
+ 0xd9dae6fe, 0x386cb411, 0x489468c9, 0xa9223a26, 0xcbffbccc,
+ 0x2a49ee23, 0x4e43c0c2, 0xaff5922d, 0xcd2814c7, 0x2c9e4628,
+ 0x443a39de, 0xa58c6b31, 0xc751eddb, 0x26e7bf34, 0x42ed91d5,
+ 0xa35bc33a, 0xc18645d0, 0x2030173f, 0x81e66bae, 0x60503941,
+ 0x028dbfab, 0xe33bed44, 0x8731c3a5, 0x6687914a, 0x045a17a0,
+ 0xe5ec454f, 0x8d483ab9, 0x6cfe6856, 0x0e23eebc, 0xef95bc53,
+ 0x8b9f92b2, 0x6a29c05d, 0x08f446b7, 0xe9421458, 0x99bac880,
+ 0x780c9a6f, 0x1ad11c85, 0xfb674e6a, 0x9f6d608b, 0x7edb3264,
+ 0x1c06b48e, 0xfdb0e661, 0x95149997, 0x74a2cb78, 0x167f4d92,
+ 0xf7c91f7d, 0x93c3319c, 0x72756373, 0x10a8e599, 0xf11eb776,
+ 0xb15e2df3, 0x50e87f1c, 0x3235f9f6, 0xd383ab19, 0xb78985f8,
+ 0x563fd717, 0x34e251fd, 0xd5540312, 0xbdf07ce4, 0x5c462e0b,
+ 0x3e9ba8e1, 0xdf2dfa0e, 0xbb27d4ef, 0x5a918600, 0x384c00ea,
+ 0xd9fa5205, 0xa9028edd, 0x48b4dc32, 0x2a695ad8, 0xcbdf0837,
+ 0xafd526d6, 0x4e637439, 0x2cbef2d3, 0xcd08a03c, 0xa5acdfca,
+ 0x441a8d25, 0x26c70bcf, 0xc7715920, 0xa37b77c1, 0x42cd252e,
+ 0x2010a3c4, 0xc1a6f12b, 0xe196e614, 0x0020b4fb, 0x62fd3211,
+ 0x834b60fe, 0xe7414e1f, 0x06f71cf0, 0x642a9a1a, 0x859cc8f5,
+ 0xed38b703, 0x0c8ee5ec, 0x6e536306, 0x8fe531e9, 0xebef1f08,
+ 0x0a594de7, 0x6884cb0d, 0x893299e2, 0xf9ca453a, 0x187c17d5,
+ 0x7aa1913f, 0x9b17c3d0, 0xff1ded31, 0x1eabbfde, 0x7c763934,
+ 0x9dc06bdb, 0xf564142d, 0x14d246c2, 0x760fc028, 0x97b992c7,
+ 0xf3b3bc26, 0x1205eec9, 0x70d86823, 0x916e3acc, 0xd12ea049,
+ 0x3098f2a6, 0x5245744c, 0xb3f326a3, 0xd7f90842, 0x364f5aad,
+ 0x5492dc47, 0xb5248ea8, 0xdd80f15e, 0x3c36a3b1, 0x5eeb255b,
+ 0xbf5d77b4, 0xdb575955, 0x3ae10bba, 0x583c8d50, 0xb98adfbf,
+ 0xc9720367, 0x28c45188, 0x4a19d762, 0xabaf858d, 0xcfa5ab6c,
+ 0x2e13f983, 0x4cce7f69, 0xad782d86, 0xc5dc5270, 0x246a009f,
+ 0x46b78675, 0xa701d49a, 0xc30bfa7b, 0x22bda894, 0x40602e7e,
+ 0xa1d67c91},
+ {0x00000000, 0x5880e2d7, 0xf106b474, 0xa98656a3, 0xe20d68e9,
+ 0xba8d8a3e, 0x130bdc9d, 0x4b8b3e4a, 0x851da109, 0xdd9d43de,
+ 0x741b157d, 0x2c9bf7aa, 0x6710c9e0, 0x3f902b37, 0x96167d94,
+ 0xce969f43, 0x0a3b4213, 0x52bba0c4, 0xfb3df667, 0xa3bd14b0,
+ 0xe8362afa, 0xb0b6c82d, 0x19309e8e, 0x41b07c59, 0x8f26e31a,
+ 0xd7a601cd, 0x7e20576e, 0x26a0b5b9, 0x6d2b8bf3, 0x35ab6924,
+ 0x9c2d3f87, 0xc4addd50, 0x14768426, 0x4cf666f1, 0xe5703052,
+ 0xbdf0d285, 0xf67beccf, 0xaefb0e18, 0x077d58bb, 0x5ffdba6c,
+ 0x916b252f, 0xc9ebc7f8, 0x606d915b, 0x38ed738c, 0x73664dc6,
+ 0x2be6af11, 0x8260f9b2, 0xdae01b65, 0x1e4dc635, 0x46cd24e2,
+ 0xef4b7241, 0xb7cb9096, 0xfc40aedc, 0xa4c04c0b, 0x0d461aa8,
+ 0x55c6f87f, 0x9b50673c, 0xc3d085eb, 0x6a56d348, 0x32d6319f,
+ 0x795d0fd5, 0x21dded02, 0x885bbba1, 0xd0db5976, 0x28ec084d,
+ 0x706cea9a, 0xd9eabc39, 0x816a5eee, 0xcae160a4, 0x92618273,
+ 0x3be7d4d0, 0x63673607, 0xadf1a944, 0xf5714b93, 0x5cf71d30,
+ 0x0477ffe7, 0x4ffcc1ad, 0x177c237a, 0xbefa75d9, 0xe67a970e,
+ 0x22d74a5e, 0x7a57a889, 0xd3d1fe2a, 0x8b511cfd, 0xc0da22b7,
+ 0x985ac060, 0x31dc96c3, 0x695c7414, 0xa7caeb57, 0xff4a0980,
+ 0x56cc5f23, 0x0e4cbdf4, 0x45c783be, 0x1d476169, 0xb4c137ca,
+ 0xec41d51d, 0x3c9a8c6b, 0x641a6ebc, 0xcd9c381f, 0x951cdac8,
+ 0xde97e482, 0x86170655, 0x2f9150f6, 0x7711b221, 0xb9872d62,
+ 0xe107cfb5, 0x48819916, 0x10017bc1, 0x5b8a458b, 0x030aa75c,
+ 0xaa8cf1ff, 0xf20c1328, 0x36a1ce78, 0x6e212caf, 0xc7a77a0c,
+ 0x9f2798db, 0xd4aca691, 0x8c2c4446, 0x25aa12e5, 0x7d2af032,
+ 0xb3bc6f71, 0xeb3c8da6, 0x42badb05, 0x1a3a39d2, 0x51b10798,
+ 0x0931e54f, 0xa0b7b3ec, 0xf837513b, 0x50d8119a, 0x0858f34d,
+ 0xa1dea5ee, 0xf95e4739, 0xb2d57973, 0xea559ba4, 0x43d3cd07,
+ 0x1b532fd0, 0xd5c5b093, 0x8d455244, 0x24c304e7, 0x7c43e630,
+ 0x37c8d87a, 0x6f483aad, 0xc6ce6c0e, 0x9e4e8ed9, 0x5ae35389,
+ 0x0263b15e, 0xabe5e7fd, 0xf365052a, 0xb8ee3b60, 0xe06ed9b7,
+ 0x49e88f14, 0x11686dc3, 0xdffef280, 0x877e1057, 0x2ef846f4,
+ 0x7678a423, 0x3df39a69, 0x657378be, 0xccf52e1d, 0x9475ccca,
+ 0x44ae95bc, 0x1c2e776b, 0xb5a821c8, 0xed28c31f, 0xa6a3fd55,
+ 0xfe231f82, 0x57a54921, 0x0f25abf6, 0xc1b334b5, 0x9933d662,
+ 0x30b580c1, 0x68356216, 0x23be5c5c, 0x7b3ebe8b, 0xd2b8e828,
+ 0x8a380aff, 0x4e95d7af, 0x16153578, 0xbf9363db, 0xe713810c,
+ 0xac98bf46, 0xf4185d91, 0x5d9e0b32, 0x051ee9e5, 0xcb8876a6,
+ 0x93089471, 0x3a8ec2d2, 0x620e2005, 0x29851e4f, 0x7105fc98,
+ 0xd883aa3b, 0x800348ec, 0x783419d7, 0x20b4fb00, 0x8932ada3,
+ 0xd1b24f74, 0x9a39713e, 0xc2b993e9, 0x6b3fc54a, 0x33bf279d,
+ 0xfd29b8de, 0xa5a95a09, 0x0c2f0caa, 0x54afee7d, 0x1f24d037,
+ 0x47a432e0, 0xee226443, 0xb6a28694, 0x720f5bc4, 0x2a8fb913,
+ 0x8309efb0, 0xdb890d67, 0x9002332d, 0xc882d1fa, 0x61048759,
+ 0x3984658e, 0xf712facd, 0xaf92181a, 0x06144eb9, 0x5e94ac6e,
+ 0x151f9224, 0x4d9f70f3, 0xe4192650, 0xbc99c487, 0x6c429df1,
+ 0x34c27f26, 0x9d442985, 0xc5c4cb52, 0x8e4ff518, 0xd6cf17cf,
+ 0x7f49416c, 0x27c9a3bb, 0xe95f3cf8, 0xb1dfde2f, 0x1859888c,
+ 0x40d96a5b, 0x0b525411, 0x53d2b6c6, 0xfa54e065, 0xa2d402b2,
+ 0x6679dfe2, 0x3ef93d35, 0x977f6b96, 0xcfff8941, 0x8474b70b,
+ 0xdcf455dc, 0x7572037f, 0x2df2e1a8, 0xe3647eeb, 0xbbe49c3c,
+ 0x1262ca9f, 0x4ae22848, 0x01691602, 0x59e9f4d5, 0xf06fa276,
+ 0xa8ef40a1},
+ {0x00000000, 0x463b6765, 0x8c76ceca, 0xca4da9af, 0x59ebed4e,
+ 0x1fd08a2b, 0xd59d2384, 0x93a644e1, 0xb2d6db9d, 0xf4edbcf8,
+ 0x3ea01557, 0x789b7232, 0xeb3d36d3, 0xad0651b6, 0x674bf819,
+ 0x21709f7c, 0x25abc6e0, 0x6390a185, 0xa9dd082a, 0xefe66f4f,
+ 0x7c402bae, 0x3a7b4ccb, 0xf036e564, 0xb60d8201, 0x977d1d7d,
+ 0xd1467a18, 0x1b0bd3b7, 0x5d30b4d2, 0xce96f033, 0x88ad9756,
+ 0x42e03ef9, 0x04db599c, 0x0b50fc1a, 0x4d6b9b7f, 0x872632d0,
+ 0xc11d55b5, 0x52bb1154, 0x14807631, 0xdecddf9e, 0x98f6b8fb,
+ 0xb9862787, 0xffbd40e2, 0x35f0e94d, 0x73cb8e28, 0xe06dcac9,
+ 0xa656adac, 0x6c1b0403, 0x2a206366, 0x2efb3afa, 0x68c05d9f,
+ 0xa28df430, 0xe4b69355, 0x7710d7b4, 0x312bb0d1, 0xfb66197e,
+ 0xbd5d7e1b, 0x9c2de167, 0xda168602, 0x105b2fad, 0x566048c8,
+ 0xc5c60c29, 0x83fd6b4c, 0x49b0c2e3, 0x0f8ba586, 0x16a0f835,
+ 0x509b9f50, 0x9ad636ff, 0xdced519a, 0x4f4b157b, 0x0970721e,
+ 0xc33ddbb1, 0x8506bcd4, 0xa47623a8, 0xe24d44cd, 0x2800ed62,
+ 0x6e3b8a07, 0xfd9dcee6, 0xbba6a983, 0x71eb002c, 0x37d06749,
+ 0x330b3ed5, 0x753059b0, 0xbf7df01f, 0xf946977a, 0x6ae0d39b,
+ 0x2cdbb4fe, 0xe6961d51, 0xa0ad7a34, 0x81dde548, 0xc7e6822d,
+ 0x0dab2b82, 0x4b904ce7, 0xd8360806, 0x9e0d6f63, 0x5440c6cc,
+ 0x127ba1a9, 0x1df0042f, 0x5bcb634a, 0x9186cae5, 0xd7bdad80,
+ 0x441be961, 0x02208e04, 0xc86d27ab, 0x8e5640ce, 0xaf26dfb2,
+ 0xe91db8d7, 0x23501178, 0x656b761d, 0xf6cd32fc, 0xb0f65599,
+ 0x7abbfc36, 0x3c809b53, 0x385bc2cf, 0x7e60a5aa, 0xb42d0c05,
+ 0xf2166b60, 0x61b02f81, 0x278b48e4, 0xedc6e14b, 0xabfd862e,
+ 0x8a8d1952, 0xccb67e37, 0x06fbd798, 0x40c0b0fd, 0xd366f41c,
+ 0x955d9379, 0x5f103ad6, 0x192b5db3, 0x2c40f16b, 0x6a7b960e,
+ 0xa0363fa1, 0xe60d58c4, 0x75ab1c25, 0x33907b40, 0xf9ddd2ef,
+ 0xbfe6b58a, 0x9e962af6, 0xd8ad4d93, 0x12e0e43c, 0x54db8359,
+ 0xc77dc7b8, 0x8146a0dd, 0x4b0b0972, 0x0d306e17, 0x09eb378b,
+ 0x4fd050ee, 0x859df941, 0xc3a69e24, 0x5000dac5, 0x163bbda0,
+ 0xdc76140f, 0x9a4d736a, 0xbb3dec16, 0xfd068b73, 0x374b22dc,
+ 0x717045b9, 0xe2d60158, 0xa4ed663d, 0x6ea0cf92, 0x289ba8f7,
+ 0x27100d71, 0x612b6a14, 0xab66c3bb, 0xed5da4de, 0x7efbe03f,
+ 0x38c0875a, 0xf28d2ef5, 0xb4b64990, 0x95c6d6ec, 0xd3fdb189,
+ 0x19b01826, 0x5f8b7f43, 0xcc2d3ba2, 0x8a165cc7, 0x405bf568,
+ 0x0660920d, 0x02bbcb91, 0x4480acf4, 0x8ecd055b, 0xc8f6623e,
+ 0x5b5026df, 0x1d6b41ba, 0xd726e815, 0x911d8f70, 0xb06d100c,
+ 0xf6567769, 0x3c1bdec6, 0x7a20b9a3, 0xe986fd42, 0xafbd9a27,
+ 0x65f03388, 0x23cb54ed, 0x3ae0095e, 0x7cdb6e3b, 0xb696c794,
+ 0xf0ada0f1, 0x630be410, 0x25308375, 0xef7d2ada, 0xa9464dbf,
+ 0x8836d2c3, 0xce0db5a6, 0x04401c09, 0x427b7b6c, 0xd1dd3f8d,
+ 0x97e658e8, 0x5dabf147, 0x1b909622, 0x1f4bcfbe, 0x5970a8db,
+ 0x933d0174, 0xd5066611, 0x46a022f0, 0x009b4595, 0xcad6ec3a,
+ 0x8ced8b5f, 0xad9d1423, 0xeba67346, 0x21ebdae9, 0x67d0bd8c,
+ 0xf476f96d, 0xb24d9e08, 0x780037a7, 0x3e3b50c2, 0x31b0f544,
+ 0x778b9221, 0xbdc63b8e, 0xfbfd5ceb, 0x685b180a, 0x2e607f6f,
+ 0xe42dd6c0, 0xa216b1a5, 0x83662ed9, 0xc55d49bc, 0x0f10e013,
+ 0x492b8776, 0xda8dc397, 0x9cb6a4f2, 0x56fb0d5d, 0x10c06a38,
+ 0x141b33a4, 0x522054c1, 0x986dfd6e, 0xde569a0b, 0x4df0deea,
+ 0x0bcbb98f, 0xc1861020, 0x87bd7745, 0xa6cde839, 0xe0f68f5c,
+ 0x2abb26f3, 0x6c804196, 0xff260577, 0xb91d6212, 0x7350cbbd,
+ 0x356bacd8}};
+
+#endif
+
+#endif
+
+#if N == 6
+
+#if W == 8
+
+local const z_crc_t FAR crc_braid_table[][256] = {
+ {0x00000000, 0x3db1ecdc, 0x7b63d9b8, 0x46d23564, 0xf6c7b370,
+ 0xcb765fac, 0x8da46ac8, 0xb0158614, 0x36fe60a1, 0x0b4f8c7d,
+ 0x4d9db919, 0x702c55c5, 0xc039d3d1, 0xfd883f0d, 0xbb5a0a69,
+ 0x86ebe6b5, 0x6dfcc142, 0x504d2d9e, 0x169f18fa, 0x2b2ef426,
+ 0x9b3b7232, 0xa68a9eee, 0xe058ab8a, 0xdde94756, 0x5b02a1e3,
+ 0x66b34d3f, 0x2061785b, 0x1dd09487, 0xadc51293, 0x9074fe4f,
+ 0xd6a6cb2b, 0xeb1727f7, 0xdbf98284, 0xe6486e58, 0xa09a5b3c,
+ 0x9d2bb7e0, 0x2d3e31f4, 0x108fdd28, 0x565de84c, 0x6bec0490,
+ 0xed07e225, 0xd0b60ef9, 0x96643b9d, 0xabd5d741, 0x1bc05155,
+ 0x2671bd89, 0x60a388ed, 0x5d126431, 0xb60543c6, 0x8bb4af1a,
+ 0xcd669a7e, 0xf0d776a2, 0x40c2f0b6, 0x7d731c6a, 0x3ba1290e,
+ 0x0610c5d2, 0x80fb2367, 0xbd4acfbb, 0xfb98fadf, 0xc6291603,
+ 0x763c9017, 0x4b8d7ccb, 0x0d5f49af, 0x30eea573, 0x6c820349,
+ 0x5133ef95, 0x17e1daf1, 0x2a50362d, 0x9a45b039, 0xa7f45ce5,
+ 0xe1266981, 0xdc97855d, 0x5a7c63e8, 0x67cd8f34, 0x211fba50,
+ 0x1cae568c, 0xacbbd098, 0x910a3c44, 0xd7d80920, 0xea69e5fc,
+ 0x017ec20b, 0x3ccf2ed7, 0x7a1d1bb3, 0x47acf76f, 0xf7b9717b,
+ 0xca089da7, 0x8cdaa8c3, 0xb16b441f, 0x3780a2aa, 0x0a314e76,
+ 0x4ce37b12, 0x715297ce, 0xc14711da, 0xfcf6fd06, 0xba24c862,
+ 0x879524be, 0xb77b81cd, 0x8aca6d11, 0xcc185875, 0xf1a9b4a9,
+ 0x41bc32bd, 0x7c0dde61, 0x3adfeb05, 0x076e07d9, 0x8185e16c,
+ 0xbc340db0, 0xfae638d4, 0xc757d408, 0x7742521c, 0x4af3bec0,
+ 0x0c218ba4, 0x31906778, 0xda87408f, 0xe736ac53, 0xa1e49937,
+ 0x9c5575eb, 0x2c40f3ff, 0x11f11f23, 0x57232a47, 0x6a92c69b,
+ 0xec79202e, 0xd1c8ccf2, 0x971af996, 0xaaab154a, 0x1abe935e,
+ 0x270f7f82, 0x61dd4ae6, 0x5c6ca63a, 0xd9040692, 0xe4b5ea4e,
+ 0xa267df2a, 0x9fd633f6, 0x2fc3b5e2, 0x1272593e, 0x54a06c5a,
+ 0x69118086, 0xeffa6633, 0xd24b8aef, 0x9499bf8b, 0xa9285357,
+ 0x193dd543, 0x248c399f, 0x625e0cfb, 0x5fefe027, 0xb4f8c7d0,
+ 0x89492b0c, 0xcf9b1e68, 0xf22af2b4, 0x423f74a0, 0x7f8e987c,
+ 0x395cad18, 0x04ed41c4, 0x8206a771, 0xbfb74bad, 0xf9657ec9,
+ 0xc4d49215, 0x74c11401, 0x4970f8dd, 0x0fa2cdb9, 0x32132165,
+ 0x02fd8416, 0x3f4c68ca, 0x799e5dae, 0x442fb172, 0xf43a3766,
+ 0xc98bdbba, 0x8f59eede, 0xb2e80202, 0x3403e4b7, 0x09b2086b,
+ 0x4f603d0f, 0x72d1d1d3, 0xc2c457c7, 0xff75bb1b, 0xb9a78e7f,
+ 0x841662a3, 0x6f014554, 0x52b0a988, 0x14629cec, 0x29d37030,
+ 0x99c6f624, 0xa4771af8, 0xe2a52f9c, 0xdf14c340, 0x59ff25f5,
+ 0x644ec929, 0x229cfc4d, 0x1f2d1091, 0xaf389685, 0x92897a59,
+ 0xd45b4f3d, 0xe9eaa3e1, 0xb58605db, 0x8837e907, 0xcee5dc63,
+ 0xf35430bf, 0x4341b6ab, 0x7ef05a77, 0x38226f13, 0x059383cf,
+ 0x8378657a, 0xbec989a6, 0xf81bbcc2, 0xc5aa501e, 0x75bfd60a,
+ 0x480e3ad6, 0x0edc0fb2, 0x336de36e, 0xd87ac499, 0xe5cb2845,
+ 0xa3191d21, 0x9ea8f1fd, 0x2ebd77e9, 0x130c9b35, 0x55deae51,
+ 0x686f428d, 0xee84a438, 0xd33548e4, 0x95e77d80, 0xa856915c,
+ 0x18431748, 0x25f2fb94, 0x6320cef0, 0x5e91222c, 0x6e7f875f,
+ 0x53ce6b83, 0x151c5ee7, 0x28adb23b, 0x98b8342f, 0xa509d8f3,
+ 0xe3dbed97, 0xde6a014b, 0x5881e7fe, 0x65300b22, 0x23e23e46,
+ 0x1e53d29a, 0xae46548e, 0x93f7b852, 0xd5258d36, 0xe89461ea,
+ 0x0383461d, 0x3e32aac1, 0x78e09fa5, 0x45517379, 0xf544f56d,
+ 0xc8f519b1, 0x8e272cd5, 0xb396c009, 0x357d26bc, 0x08ccca60,
+ 0x4e1eff04, 0x73af13d8, 0xc3ba95cc, 0xfe0b7910, 0xb8d94c74,
+ 0x8568a0a8},
+ {0x00000000, 0x69790b65, 0xd2f216ca, 0xbb8b1daf, 0x7e952bd5,
+ 0x17ec20b0, 0xac673d1f, 0xc51e367a, 0xfd2a57aa, 0x94535ccf,
+ 0x2fd84160, 0x46a14a05, 0x83bf7c7f, 0xeac6771a, 0x514d6ab5,
+ 0x383461d0, 0x2125a915, 0x485ca270, 0xf3d7bfdf, 0x9aaeb4ba,
+ 0x5fb082c0, 0x36c989a5, 0x8d42940a, 0xe43b9f6f, 0xdc0ffebf,
+ 0xb576f5da, 0x0efde875, 0x6784e310, 0xa29ad56a, 0xcbe3de0f,
+ 0x7068c3a0, 0x1911c8c5, 0x424b522a, 0x2b32594f, 0x90b944e0,
+ 0xf9c04f85, 0x3cde79ff, 0x55a7729a, 0xee2c6f35, 0x87556450,
+ 0xbf610580, 0xd6180ee5, 0x6d93134a, 0x04ea182f, 0xc1f42e55,
+ 0xa88d2530, 0x1306389f, 0x7a7f33fa, 0x636efb3f, 0x0a17f05a,
+ 0xb19cedf5, 0xd8e5e690, 0x1dfbd0ea, 0x7482db8f, 0xcf09c620,
+ 0xa670cd45, 0x9e44ac95, 0xf73da7f0, 0x4cb6ba5f, 0x25cfb13a,
+ 0xe0d18740, 0x89a88c25, 0x3223918a, 0x5b5a9aef, 0x8496a454,
+ 0xedefaf31, 0x5664b29e, 0x3f1db9fb, 0xfa038f81, 0x937a84e4,
+ 0x28f1994b, 0x4188922e, 0x79bcf3fe, 0x10c5f89b, 0xab4ee534,
+ 0xc237ee51, 0x0729d82b, 0x6e50d34e, 0xd5dbcee1, 0xbca2c584,
+ 0xa5b30d41, 0xccca0624, 0x77411b8b, 0x1e3810ee, 0xdb262694,
+ 0xb25f2df1, 0x09d4305e, 0x60ad3b3b, 0x58995aeb, 0x31e0518e,
+ 0x8a6b4c21, 0xe3124744, 0x260c713e, 0x4f757a5b, 0xf4fe67f4,
+ 0x9d876c91, 0xc6ddf67e, 0xafa4fd1b, 0x142fe0b4, 0x7d56ebd1,
+ 0xb848ddab, 0xd131d6ce, 0x6abacb61, 0x03c3c004, 0x3bf7a1d4,
+ 0x528eaab1, 0xe905b71e, 0x807cbc7b, 0x45628a01, 0x2c1b8164,
+ 0x97909ccb, 0xfee997ae, 0xe7f85f6b, 0x8e81540e, 0x350a49a1,
+ 0x5c7342c4, 0x996d74be, 0xf0147fdb, 0x4b9f6274, 0x22e66911,
+ 0x1ad208c1, 0x73ab03a4, 0xc8201e0b, 0xa159156e, 0x64472314,
+ 0x0d3e2871, 0xb6b535de, 0xdfcc3ebb, 0xd25c4ee9, 0xbb25458c,
+ 0x00ae5823, 0x69d75346, 0xacc9653c, 0xc5b06e59, 0x7e3b73f6,
+ 0x17427893, 0x2f761943, 0x460f1226, 0xfd840f89, 0x94fd04ec,
+ 0x51e33296, 0x389a39f3, 0x8311245c, 0xea682f39, 0xf379e7fc,
+ 0x9a00ec99, 0x218bf136, 0x48f2fa53, 0x8deccc29, 0xe495c74c,
+ 0x5f1edae3, 0x3667d186, 0x0e53b056, 0x672abb33, 0xdca1a69c,
+ 0xb5d8adf9, 0x70c69b83, 0x19bf90e6, 0xa2348d49, 0xcb4d862c,
+ 0x90171cc3, 0xf96e17a6, 0x42e50a09, 0x2b9c016c, 0xee823716,
+ 0x87fb3c73, 0x3c7021dc, 0x55092ab9, 0x6d3d4b69, 0x0444400c,
+ 0xbfcf5da3, 0xd6b656c6, 0x13a860bc, 0x7ad16bd9, 0xc15a7676,
+ 0xa8237d13, 0xb132b5d6, 0xd84bbeb3, 0x63c0a31c, 0x0ab9a879,
+ 0xcfa79e03, 0xa6de9566, 0x1d5588c9, 0x742c83ac, 0x4c18e27c,
+ 0x2561e919, 0x9eeaf4b6, 0xf793ffd3, 0x328dc9a9, 0x5bf4c2cc,
+ 0xe07fdf63, 0x8906d406, 0x56caeabd, 0x3fb3e1d8, 0x8438fc77,
+ 0xed41f712, 0x285fc168, 0x4126ca0d, 0xfaadd7a2, 0x93d4dcc7,
+ 0xabe0bd17, 0xc299b672, 0x7912abdd, 0x106ba0b8, 0xd57596c2,
+ 0xbc0c9da7, 0x07878008, 0x6efe8b6d, 0x77ef43a8, 0x1e9648cd,
+ 0xa51d5562, 0xcc645e07, 0x097a687d, 0x60036318, 0xdb887eb7,
+ 0xb2f175d2, 0x8ac51402, 0xe3bc1f67, 0x583702c8, 0x314e09ad,
+ 0xf4503fd7, 0x9d2934b2, 0x26a2291d, 0x4fdb2278, 0x1481b897,
+ 0x7df8b3f2, 0xc673ae5d, 0xaf0aa538, 0x6a149342, 0x036d9827,
+ 0xb8e68588, 0xd19f8eed, 0xe9abef3d, 0x80d2e458, 0x3b59f9f7,
+ 0x5220f292, 0x973ec4e8, 0xfe47cf8d, 0x45ccd222, 0x2cb5d947,
+ 0x35a41182, 0x5cdd1ae7, 0xe7560748, 0x8e2f0c2d, 0x4b313a57,
+ 0x22483132, 0x99c32c9d, 0xf0ba27f8, 0xc88e4628, 0xa1f74d4d,
+ 0x1a7c50e2, 0x73055b87, 0xb61b6dfd, 0xdf626698, 0x64e97b37,
+ 0x0d907052},
+ {0x00000000, 0x7fc99b93, 0xff933726, 0x805aacb5, 0x2457680d,
+ 0x5b9ef39e, 0xdbc45f2b, 0xa40dc4b8, 0x48aed01a, 0x37674b89,
+ 0xb73de73c, 0xc8f47caf, 0x6cf9b817, 0x13302384, 0x936a8f31,
+ 0xeca314a2, 0x915da034, 0xee943ba7, 0x6ece9712, 0x11070c81,
+ 0xb50ac839, 0xcac353aa, 0x4a99ff1f, 0x3550648c, 0xd9f3702e,
+ 0xa63aebbd, 0x26604708, 0x59a9dc9b, 0xfda41823, 0x826d83b0,
+ 0x02372f05, 0x7dfeb496, 0xf9ca4629, 0x8603ddba, 0x0659710f,
+ 0x7990ea9c, 0xdd9d2e24, 0xa254b5b7, 0x220e1902, 0x5dc78291,
+ 0xb1649633, 0xcead0da0, 0x4ef7a115, 0x313e3a86, 0x9533fe3e,
+ 0xeafa65ad, 0x6aa0c918, 0x1569528b, 0x6897e61d, 0x175e7d8e,
+ 0x9704d13b, 0xe8cd4aa8, 0x4cc08e10, 0x33091583, 0xb353b936,
+ 0xcc9a22a5, 0x20393607, 0x5ff0ad94, 0xdfaa0121, 0xa0639ab2,
+ 0x046e5e0a, 0x7ba7c599, 0xfbfd692c, 0x8434f2bf, 0x28e58a13,
+ 0x572c1180, 0xd776bd35, 0xa8bf26a6, 0x0cb2e21e, 0x737b798d,
+ 0xf321d538, 0x8ce84eab, 0x604b5a09, 0x1f82c19a, 0x9fd86d2f,
+ 0xe011f6bc, 0x441c3204, 0x3bd5a997, 0xbb8f0522, 0xc4469eb1,
+ 0xb9b82a27, 0xc671b1b4, 0x462b1d01, 0x39e28692, 0x9def422a,
+ 0xe226d9b9, 0x627c750c, 0x1db5ee9f, 0xf116fa3d, 0x8edf61ae,
+ 0x0e85cd1b, 0x714c5688, 0xd5419230, 0xaa8809a3, 0x2ad2a516,
+ 0x551b3e85, 0xd12fcc3a, 0xaee657a9, 0x2ebcfb1c, 0x5175608f,
+ 0xf578a437, 0x8ab13fa4, 0x0aeb9311, 0x75220882, 0x99811c20,
+ 0xe64887b3, 0x66122b06, 0x19dbb095, 0xbdd6742d, 0xc21fefbe,
+ 0x4245430b, 0x3d8cd898, 0x40726c0e, 0x3fbbf79d, 0xbfe15b28,
+ 0xc028c0bb, 0x64250403, 0x1bec9f90, 0x9bb63325, 0xe47fa8b6,
+ 0x08dcbc14, 0x77152787, 0xf74f8b32, 0x888610a1, 0x2c8bd419,
+ 0x53424f8a, 0xd318e33f, 0xacd178ac, 0x51cb1426, 0x2e028fb5,
+ 0xae582300, 0xd191b893, 0x759c7c2b, 0x0a55e7b8, 0x8a0f4b0d,
+ 0xf5c6d09e, 0x1965c43c, 0x66ac5faf, 0xe6f6f31a, 0x993f6889,
+ 0x3d32ac31, 0x42fb37a2, 0xc2a19b17, 0xbd680084, 0xc096b412,
+ 0xbf5f2f81, 0x3f058334, 0x40cc18a7, 0xe4c1dc1f, 0x9b08478c,
+ 0x1b52eb39, 0x649b70aa, 0x88386408, 0xf7f1ff9b, 0x77ab532e,
+ 0x0862c8bd, 0xac6f0c05, 0xd3a69796, 0x53fc3b23, 0x2c35a0b0,
+ 0xa801520f, 0xd7c8c99c, 0x57926529, 0x285bfeba, 0x8c563a02,
+ 0xf39fa191, 0x73c50d24, 0x0c0c96b7, 0xe0af8215, 0x9f661986,
+ 0x1f3cb533, 0x60f52ea0, 0xc4f8ea18, 0xbb31718b, 0x3b6bdd3e,
+ 0x44a246ad, 0x395cf23b, 0x469569a8, 0xc6cfc51d, 0xb9065e8e,
+ 0x1d0b9a36, 0x62c201a5, 0xe298ad10, 0x9d513683, 0x71f22221,
+ 0x0e3bb9b2, 0x8e611507, 0xf1a88e94, 0x55a54a2c, 0x2a6cd1bf,
+ 0xaa367d0a, 0xd5ffe699, 0x792e9e35, 0x06e705a6, 0x86bda913,
+ 0xf9743280, 0x5d79f638, 0x22b06dab, 0xa2eac11e, 0xdd235a8d,
+ 0x31804e2f, 0x4e49d5bc, 0xce137909, 0xb1dae29a, 0x15d72622,
+ 0x6a1ebdb1, 0xea441104, 0x958d8a97, 0xe8733e01, 0x97baa592,
+ 0x17e00927, 0x682992b4, 0xcc24560c, 0xb3edcd9f, 0x33b7612a,
+ 0x4c7efab9, 0xa0ddee1b, 0xdf147588, 0x5f4ed93d, 0x208742ae,
+ 0x848a8616, 0xfb431d85, 0x7b19b130, 0x04d02aa3, 0x80e4d81c,
+ 0xff2d438f, 0x7f77ef3a, 0x00be74a9, 0xa4b3b011, 0xdb7a2b82,
+ 0x5b208737, 0x24e91ca4, 0xc84a0806, 0xb7839395, 0x37d93f20,
+ 0x4810a4b3, 0xec1d600b, 0x93d4fb98, 0x138e572d, 0x6c47ccbe,
+ 0x11b97828, 0x6e70e3bb, 0xee2a4f0e, 0x91e3d49d, 0x35ee1025,
+ 0x4a278bb6, 0xca7d2703, 0xb5b4bc90, 0x5917a832, 0x26de33a1,
+ 0xa6849f14, 0xd94d0487, 0x7d40c03f, 0x02895bac, 0x82d3f719,
+ 0xfd1a6c8a},
+ {0x00000000, 0xa396284c, 0x9c5d56d9, 0x3fcb7e95, 0xe3cbabf3,
+ 0x405d83bf, 0x7f96fd2a, 0xdc00d566, 0x1ce651a7, 0xbf7079eb,
+ 0x80bb077e, 0x232d2f32, 0xff2dfa54, 0x5cbbd218, 0x6370ac8d,
+ 0xc0e684c1, 0x39cca34e, 0x9a5a8b02, 0xa591f597, 0x0607dddb,
+ 0xda0708bd, 0x799120f1, 0x465a5e64, 0xe5cc7628, 0x252af2e9,
+ 0x86bcdaa5, 0xb977a430, 0x1ae18c7c, 0xc6e1591a, 0x65777156,
+ 0x5abc0fc3, 0xf92a278f, 0x7399469c, 0xd00f6ed0, 0xefc41045,
+ 0x4c523809, 0x9052ed6f, 0x33c4c523, 0x0c0fbbb6, 0xaf9993fa,
+ 0x6f7f173b, 0xcce93f77, 0xf32241e2, 0x50b469ae, 0x8cb4bcc8,
+ 0x2f229484, 0x10e9ea11, 0xb37fc25d, 0x4a55e5d2, 0xe9c3cd9e,
+ 0xd608b30b, 0x759e9b47, 0xa99e4e21, 0x0a08666d, 0x35c318f8,
+ 0x965530b4, 0x56b3b475, 0xf5259c39, 0xcaeee2ac, 0x6978cae0,
+ 0xb5781f86, 0x16ee37ca, 0x2925495f, 0x8ab36113, 0xe7328d38,
+ 0x44a4a574, 0x7b6fdbe1, 0xd8f9f3ad, 0x04f926cb, 0xa76f0e87,
+ 0x98a47012, 0x3b32585e, 0xfbd4dc9f, 0x5842f4d3, 0x67898a46,
+ 0xc41fa20a, 0x181f776c, 0xbb895f20, 0x844221b5, 0x27d409f9,
+ 0xdefe2e76, 0x7d68063a, 0x42a378af, 0xe13550e3, 0x3d358585,
+ 0x9ea3adc9, 0xa168d35c, 0x02fefb10, 0xc2187fd1, 0x618e579d,
+ 0x5e452908, 0xfdd30144, 0x21d3d422, 0x8245fc6e, 0xbd8e82fb,
+ 0x1e18aab7, 0x94abcba4, 0x373de3e8, 0x08f69d7d, 0xab60b531,
+ 0x77606057, 0xd4f6481b, 0xeb3d368e, 0x48ab1ec2, 0x884d9a03,
+ 0x2bdbb24f, 0x1410ccda, 0xb786e496, 0x6b8631f0, 0xc81019bc,
+ 0xf7db6729, 0x544d4f65, 0xad6768ea, 0x0ef140a6, 0x313a3e33,
+ 0x92ac167f, 0x4eacc319, 0xed3aeb55, 0xd2f195c0, 0x7167bd8c,
+ 0xb181394d, 0x12171101, 0x2ddc6f94, 0x8e4a47d8, 0x524a92be,
+ 0xf1dcbaf2, 0xce17c467, 0x6d81ec2b, 0x15141c31, 0xb682347d,
+ 0x89494ae8, 0x2adf62a4, 0xf6dfb7c2, 0x55499f8e, 0x6a82e11b,
+ 0xc914c957, 0x09f24d96, 0xaa6465da, 0x95af1b4f, 0x36393303,
+ 0xea39e665, 0x49afce29, 0x7664b0bc, 0xd5f298f0, 0x2cd8bf7f,
+ 0x8f4e9733, 0xb085e9a6, 0x1313c1ea, 0xcf13148c, 0x6c853cc0,
+ 0x534e4255, 0xf0d86a19, 0x303eeed8, 0x93a8c694, 0xac63b801,
+ 0x0ff5904d, 0xd3f5452b, 0x70636d67, 0x4fa813f2, 0xec3e3bbe,
+ 0x668d5aad, 0xc51b72e1, 0xfad00c74, 0x59462438, 0x8546f15e,
+ 0x26d0d912, 0x191ba787, 0xba8d8fcb, 0x7a6b0b0a, 0xd9fd2346,
+ 0xe6365dd3, 0x45a0759f, 0x99a0a0f9, 0x3a3688b5, 0x05fdf620,
+ 0xa66bde6c, 0x5f41f9e3, 0xfcd7d1af, 0xc31caf3a, 0x608a8776,
+ 0xbc8a5210, 0x1f1c7a5c, 0x20d704c9, 0x83412c85, 0x43a7a844,
+ 0xe0318008, 0xdffafe9d, 0x7c6cd6d1, 0xa06c03b7, 0x03fa2bfb,
+ 0x3c31556e, 0x9fa77d22, 0xf2269109, 0x51b0b945, 0x6e7bc7d0,
+ 0xcdedef9c, 0x11ed3afa, 0xb27b12b6, 0x8db06c23, 0x2e26446f,
+ 0xeec0c0ae, 0x4d56e8e2, 0x729d9677, 0xd10bbe3b, 0x0d0b6b5d,
+ 0xae9d4311, 0x91563d84, 0x32c015c8, 0xcbea3247, 0x687c1a0b,
+ 0x57b7649e, 0xf4214cd2, 0x282199b4, 0x8bb7b1f8, 0xb47ccf6d,
+ 0x17eae721, 0xd70c63e0, 0x749a4bac, 0x4b513539, 0xe8c71d75,
+ 0x34c7c813, 0x9751e05f, 0xa89a9eca, 0x0b0cb686, 0x81bfd795,
+ 0x2229ffd9, 0x1de2814c, 0xbe74a900, 0x62747c66, 0xc1e2542a,
+ 0xfe292abf, 0x5dbf02f3, 0x9d598632, 0x3ecfae7e, 0x0104d0eb,
+ 0xa292f8a7, 0x7e922dc1, 0xdd04058d, 0xe2cf7b18, 0x41595354,
+ 0xb87374db, 0x1be55c97, 0x242e2202, 0x87b80a4e, 0x5bb8df28,
+ 0xf82ef764, 0xc7e589f1, 0x6473a1bd, 0xa495257c, 0x07030d30,
+ 0x38c873a5, 0x9b5e5be9, 0x475e8e8f, 0xe4c8a6c3, 0xdb03d856,
+ 0x7895f01a},
+ {0x00000000, 0x2a283862, 0x545070c4, 0x7e7848a6, 0xa8a0e188,
+ 0x8288d9ea, 0xfcf0914c, 0xd6d8a92e, 0x8a30c551, 0xa018fd33,
+ 0xde60b595, 0xf4488df7, 0x229024d9, 0x08b81cbb, 0x76c0541d,
+ 0x5ce86c7f, 0xcf108ce3, 0xe538b481, 0x9b40fc27, 0xb168c445,
+ 0x67b06d6b, 0x4d985509, 0x33e01daf, 0x19c825cd, 0x452049b2,
+ 0x6f0871d0, 0x11703976, 0x3b580114, 0xed80a83a, 0xc7a89058,
+ 0xb9d0d8fe, 0x93f8e09c, 0x45501f87, 0x6f7827e5, 0x11006f43,
+ 0x3b285721, 0xedf0fe0f, 0xc7d8c66d, 0xb9a08ecb, 0x9388b6a9,
+ 0xcf60dad6, 0xe548e2b4, 0x9b30aa12, 0xb1189270, 0x67c03b5e,
+ 0x4de8033c, 0x33904b9a, 0x19b873f8, 0x8a409364, 0xa068ab06,
+ 0xde10e3a0, 0xf438dbc2, 0x22e072ec, 0x08c84a8e, 0x76b00228,
+ 0x5c983a4a, 0x00705635, 0x2a586e57, 0x542026f1, 0x7e081e93,
+ 0xa8d0b7bd, 0x82f88fdf, 0xfc80c779, 0xd6a8ff1b, 0x8aa03f0e,
+ 0xa088076c, 0xdef04fca, 0xf4d877a8, 0x2200de86, 0x0828e6e4,
+ 0x7650ae42, 0x5c789620, 0x0090fa5f, 0x2ab8c23d, 0x54c08a9b,
+ 0x7ee8b2f9, 0xa8301bd7, 0x821823b5, 0xfc606b13, 0xd6485371,
+ 0x45b0b3ed, 0x6f988b8f, 0x11e0c329, 0x3bc8fb4b, 0xed105265,
+ 0xc7386a07, 0xb94022a1, 0x93681ac3, 0xcf8076bc, 0xe5a84ede,
+ 0x9bd00678, 0xb1f83e1a, 0x67209734, 0x4d08af56, 0x3370e7f0,
+ 0x1958df92, 0xcff02089, 0xe5d818eb, 0x9ba0504d, 0xb188682f,
+ 0x6750c101, 0x4d78f963, 0x3300b1c5, 0x192889a7, 0x45c0e5d8,
+ 0x6fe8ddba, 0x1190951c, 0x3bb8ad7e, 0xed600450, 0xc7483c32,
+ 0xb9307494, 0x93184cf6, 0x00e0ac6a, 0x2ac89408, 0x54b0dcae,
+ 0x7e98e4cc, 0xa8404de2, 0x82687580, 0xfc103d26, 0xd6380544,
+ 0x8ad0693b, 0xa0f85159, 0xde8019ff, 0xf4a8219d, 0x227088b3,
+ 0x0858b0d1, 0x7620f877, 0x5c08c015, 0xce31785d, 0xe419403f,
+ 0x9a610899, 0xb04930fb, 0x669199d5, 0x4cb9a1b7, 0x32c1e911,
+ 0x18e9d173, 0x4401bd0c, 0x6e29856e, 0x1051cdc8, 0x3a79f5aa,
+ 0xeca15c84, 0xc68964e6, 0xb8f12c40, 0x92d91422, 0x0121f4be,
+ 0x2b09ccdc, 0x5571847a, 0x7f59bc18, 0xa9811536, 0x83a92d54,
+ 0xfdd165f2, 0xd7f95d90, 0x8b1131ef, 0xa139098d, 0xdf41412b,
+ 0xf5697949, 0x23b1d067, 0x0999e805, 0x77e1a0a3, 0x5dc998c1,
+ 0x8b6167da, 0xa1495fb8, 0xdf31171e, 0xf5192f7c, 0x23c18652,
+ 0x09e9be30, 0x7791f696, 0x5db9cef4, 0x0151a28b, 0x2b799ae9,
+ 0x5501d24f, 0x7f29ea2d, 0xa9f14303, 0x83d97b61, 0xfda133c7,
+ 0xd7890ba5, 0x4471eb39, 0x6e59d35b, 0x10219bfd, 0x3a09a39f,
+ 0xecd10ab1, 0xc6f932d3, 0xb8817a75, 0x92a94217, 0xce412e68,
+ 0xe469160a, 0x9a115eac, 0xb03966ce, 0x66e1cfe0, 0x4cc9f782,
+ 0x32b1bf24, 0x18998746, 0x44914753, 0x6eb97f31, 0x10c13797,
+ 0x3ae90ff5, 0xec31a6db, 0xc6199eb9, 0xb861d61f, 0x9249ee7d,
+ 0xcea18202, 0xe489ba60, 0x9af1f2c6, 0xb0d9caa4, 0x6601638a,
+ 0x4c295be8, 0x3251134e, 0x18792b2c, 0x8b81cbb0, 0xa1a9f3d2,
+ 0xdfd1bb74, 0xf5f98316, 0x23212a38, 0x0909125a, 0x77715afc,
+ 0x5d59629e, 0x01b10ee1, 0x2b993683, 0x55e17e25, 0x7fc94647,
+ 0xa911ef69, 0x8339d70b, 0xfd419fad, 0xd769a7cf, 0x01c158d4,
+ 0x2be960b6, 0x55912810, 0x7fb91072, 0xa961b95c, 0x8349813e,
+ 0xfd31c998, 0xd719f1fa, 0x8bf19d85, 0xa1d9a5e7, 0xdfa1ed41,
+ 0xf589d523, 0x23517c0d, 0x0979446f, 0x77010cc9, 0x5d2934ab,
+ 0xced1d437, 0xe4f9ec55, 0x9a81a4f3, 0xb0a99c91, 0x667135bf,
+ 0x4c590ddd, 0x3221457b, 0x18097d19, 0x44e11166, 0x6ec92904,
+ 0x10b161a2, 0x3a9959c0, 0xec41f0ee, 0xc669c88c, 0xb811802a,
+ 0x9239b848},
+ {0x00000000, 0x4713f6fb, 0x8e27edf6, 0xc9341b0d, 0xc73eddad,
+ 0x802d2b56, 0x4919305b, 0x0e0ac6a0, 0x550cbd1b, 0x121f4be0,
+ 0xdb2b50ed, 0x9c38a616, 0x923260b6, 0xd521964d, 0x1c158d40,
+ 0x5b067bbb, 0xaa197a36, 0xed0a8ccd, 0x243e97c0, 0x632d613b,
+ 0x6d27a79b, 0x2a345160, 0xe3004a6d, 0xa413bc96, 0xff15c72d,
+ 0xb80631d6, 0x71322adb, 0x3621dc20, 0x382b1a80, 0x7f38ec7b,
+ 0xb60cf776, 0xf11f018d, 0x8f43f22d, 0xc85004d6, 0x01641fdb,
+ 0x4677e920, 0x487d2f80, 0x0f6ed97b, 0xc65ac276, 0x8149348d,
+ 0xda4f4f36, 0x9d5cb9cd, 0x5468a2c0, 0x137b543b, 0x1d71929b,
+ 0x5a626460, 0x93567f6d, 0xd4458996, 0x255a881b, 0x62497ee0,
+ 0xab7d65ed, 0xec6e9316, 0xe26455b6, 0xa577a34d, 0x6c43b840,
+ 0x2b504ebb, 0x70563500, 0x3745c3fb, 0xfe71d8f6, 0xb9622e0d,
+ 0xb768e8ad, 0xf07b1e56, 0x394f055b, 0x7e5cf3a0, 0xc5f6e21b,
+ 0x82e514e0, 0x4bd10fed, 0x0cc2f916, 0x02c83fb6, 0x45dbc94d,
+ 0x8cefd240, 0xcbfc24bb, 0x90fa5f00, 0xd7e9a9fb, 0x1eddb2f6,
+ 0x59ce440d, 0x57c482ad, 0x10d77456, 0xd9e36f5b, 0x9ef099a0,
+ 0x6fef982d, 0x28fc6ed6, 0xe1c875db, 0xa6db8320, 0xa8d14580,
+ 0xefc2b37b, 0x26f6a876, 0x61e55e8d, 0x3ae32536, 0x7df0d3cd,
+ 0xb4c4c8c0, 0xf3d73e3b, 0xfdddf89b, 0xbace0e60, 0x73fa156d,
+ 0x34e9e396, 0x4ab51036, 0x0da6e6cd, 0xc492fdc0, 0x83810b3b,
+ 0x8d8bcd9b, 0xca983b60, 0x03ac206d, 0x44bfd696, 0x1fb9ad2d,
+ 0x58aa5bd6, 0x919e40db, 0xd68db620, 0xd8877080, 0x9f94867b,
+ 0x56a09d76, 0x11b36b8d, 0xe0ac6a00, 0xa7bf9cfb, 0x6e8b87f6,
+ 0x2998710d, 0x2792b7ad, 0x60814156, 0xa9b55a5b, 0xeea6aca0,
+ 0xb5a0d71b, 0xf2b321e0, 0x3b873aed, 0x7c94cc16, 0x729e0ab6,
+ 0x358dfc4d, 0xfcb9e740, 0xbbaa11bb, 0x509cc277, 0x178f348c,
+ 0xdebb2f81, 0x99a8d97a, 0x97a21fda, 0xd0b1e921, 0x1985f22c,
+ 0x5e9604d7, 0x05907f6c, 0x42838997, 0x8bb7929a, 0xcca46461,
+ 0xc2aea2c1, 0x85bd543a, 0x4c894f37, 0x0b9ab9cc, 0xfa85b841,
+ 0xbd964eba, 0x74a255b7, 0x33b1a34c, 0x3dbb65ec, 0x7aa89317,
+ 0xb39c881a, 0xf48f7ee1, 0xaf89055a, 0xe89af3a1, 0x21aee8ac,
+ 0x66bd1e57, 0x68b7d8f7, 0x2fa42e0c, 0xe6903501, 0xa183c3fa,
+ 0xdfdf305a, 0x98ccc6a1, 0x51f8ddac, 0x16eb2b57, 0x18e1edf7,
+ 0x5ff21b0c, 0x96c60001, 0xd1d5f6fa, 0x8ad38d41, 0xcdc07bba,
+ 0x04f460b7, 0x43e7964c, 0x4ded50ec, 0x0afea617, 0xc3cabd1a,
+ 0x84d94be1, 0x75c64a6c, 0x32d5bc97, 0xfbe1a79a, 0xbcf25161,
+ 0xb2f897c1, 0xf5eb613a, 0x3cdf7a37, 0x7bcc8ccc, 0x20caf777,
+ 0x67d9018c, 0xaeed1a81, 0xe9feec7a, 0xe7f42ada, 0xa0e7dc21,
+ 0x69d3c72c, 0x2ec031d7, 0x956a206c, 0xd279d697, 0x1b4dcd9a,
+ 0x5c5e3b61, 0x5254fdc1, 0x15470b3a, 0xdc731037, 0x9b60e6cc,
+ 0xc0669d77, 0x87756b8c, 0x4e417081, 0x0952867a, 0x075840da,
+ 0x404bb621, 0x897fad2c, 0xce6c5bd7, 0x3f735a5a, 0x7860aca1,
+ 0xb154b7ac, 0xf6474157, 0xf84d87f7, 0xbf5e710c, 0x766a6a01,
+ 0x31799cfa, 0x6a7fe741, 0x2d6c11ba, 0xe4580ab7, 0xa34bfc4c,
+ 0xad413aec, 0xea52cc17, 0x2366d71a, 0x647521e1, 0x1a29d241,
+ 0x5d3a24ba, 0x940e3fb7, 0xd31dc94c, 0xdd170fec, 0x9a04f917,
+ 0x5330e21a, 0x142314e1, 0x4f256f5a, 0x083699a1, 0xc10282ac,
+ 0x86117457, 0x881bb2f7, 0xcf08440c, 0x063c5f01, 0x412fa9fa,
+ 0xb030a877, 0xf7235e8c, 0x3e174581, 0x7904b37a, 0x770e75da,
+ 0x301d8321, 0xf929982c, 0xbe3a6ed7, 0xe53c156c, 0xa22fe397,
+ 0x6b1bf89a, 0x2c080e61, 0x2202c8c1, 0x65113e3a, 0xac252537,
+ 0xeb36d3cc},
+ {0x00000000, 0xa13984ee, 0x99020f9d, 0x383b8b73, 0xe975197b,
+ 0x484c9d95, 0x707716e6, 0xd14e9208, 0x099b34b7, 0xa8a2b059,
+ 0x90993b2a, 0x31a0bfc4, 0xe0ee2dcc, 0x41d7a922, 0x79ec2251,
+ 0xd8d5a6bf, 0x1336696e, 0xb20fed80, 0x8a3466f3, 0x2b0de21d,
+ 0xfa437015, 0x5b7af4fb, 0x63417f88, 0xc278fb66, 0x1aad5dd9,
+ 0xbb94d937, 0x83af5244, 0x2296d6aa, 0xf3d844a2, 0x52e1c04c,
+ 0x6ada4b3f, 0xcbe3cfd1, 0x266cd2dc, 0x87555632, 0xbf6edd41,
+ 0x1e5759af, 0xcf19cba7, 0x6e204f49, 0x561bc43a, 0xf72240d4,
+ 0x2ff7e66b, 0x8ece6285, 0xb6f5e9f6, 0x17cc6d18, 0xc682ff10,
+ 0x67bb7bfe, 0x5f80f08d, 0xfeb97463, 0x355abbb2, 0x94633f5c,
+ 0xac58b42f, 0x0d6130c1, 0xdc2fa2c9, 0x7d162627, 0x452dad54,
+ 0xe41429ba, 0x3cc18f05, 0x9df80beb, 0xa5c38098, 0x04fa0476,
+ 0xd5b4967e, 0x748d1290, 0x4cb699e3, 0xed8f1d0d, 0x4cd9a5b8,
+ 0xede02156, 0xd5dbaa25, 0x74e22ecb, 0xa5acbcc3, 0x0495382d,
+ 0x3caeb35e, 0x9d9737b0, 0x4542910f, 0xe47b15e1, 0xdc409e92,
+ 0x7d791a7c, 0xac378874, 0x0d0e0c9a, 0x353587e9, 0x940c0307,
+ 0x5fefccd6, 0xfed64838, 0xc6edc34b, 0x67d447a5, 0xb69ad5ad,
+ 0x17a35143, 0x2f98da30, 0x8ea15ede, 0x5674f861, 0xf74d7c8f,
+ 0xcf76f7fc, 0x6e4f7312, 0xbf01e11a, 0x1e3865f4, 0x2603ee87,
+ 0x873a6a69, 0x6ab57764, 0xcb8cf38a, 0xf3b778f9, 0x528efc17,
+ 0x83c06e1f, 0x22f9eaf1, 0x1ac26182, 0xbbfbe56c, 0x632e43d3,
+ 0xc217c73d, 0xfa2c4c4e, 0x5b15c8a0, 0x8a5b5aa8, 0x2b62de46,
+ 0x13595535, 0xb260d1db, 0x79831e0a, 0xd8ba9ae4, 0xe0811197,
+ 0x41b89579, 0x90f60771, 0x31cf839f, 0x09f408ec, 0xa8cd8c02,
+ 0x70182abd, 0xd121ae53, 0xe91a2520, 0x4823a1ce, 0x996d33c6,
+ 0x3854b728, 0x006f3c5b, 0xa156b8b5, 0x99b34b70, 0x388acf9e,
+ 0x00b144ed, 0xa188c003, 0x70c6520b, 0xd1ffd6e5, 0xe9c45d96,
+ 0x48fdd978, 0x90287fc7, 0x3111fb29, 0x092a705a, 0xa813f4b4,
+ 0x795d66bc, 0xd864e252, 0xe05f6921, 0x4166edcf, 0x8a85221e,
+ 0x2bbca6f0, 0x13872d83, 0xb2bea96d, 0x63f03b65, 0xc2c9bf8b,
+ 0xfaf234f8, 0x5bcbb016, 0x831e16a9, 0x22279247, 0x1a1c1934,
+ 0xbb259dda, 0x6a6b0fd2, 0xcb528b3c, 0xf369004f, 0x525084a1,
+ 0xbfdf99ac, 0x1ee61d42, 0x26dd9631, 0x87e412df, 0x56aa80d7,
+ 0xf7930439, 0xcfa88f4a, 0x6e910ba4, 0xb644ad1b, 0x177d29f5,
+ 0x2f46a286, 0x8e7f2668, 0x5f31b460, 0xfe08308e, 0xc633bbfd,
+ 0x670a3f13, 0xace9f0c2, 0x0dd0742c, 0x35ebff5f, 0x94d27bb1,
+ 0x459ce9b9, 0xe4a56d57, 0xdc9ee624, 0x7da762ca, 0xa572c475,
+ 0x044b409b, 0x3c70cbe8, 0x9d494f06, 0x4c07dd0e, 0xed3e59e0,
+ 0xd505d293, 0x743c567d, 0xd56aeec8, 0x74536a26, 0x4c68e155,
+ 0xed5165bb, 0x3c1ff7b3, 0x9d26735d, 0xa51df82e, 0x04247cc0,
+ 0xdcf1da7f, 0x7dc85e91, 0x45f3d5e2, 0xe4ca510c, 0x3584c304,
+ 0x94bd47ea, 0xac86cc99, 0x0dbf4877, 0xc65c87a6, 0x67650348,
+ 0x5f5e883b, 0xfe670cd5, 0x2f299edd, 0x8e101a33, 0xb62b9140,
+ 0x171215ae, 0xcfc7b311, 0x6efe37ff, 0x56c5bc8c, 0xf7fc3862,
+ 0x26b2aa6a, 0x878b2e84, 0xbfb0a5f7, 0x1e892119, 0xf3063c14,
+ 0x523fb8fa, 0x6a043389, 0xcb3db767, 0x1a73256f, 0xbb4aa181,
+ 0x83712af2, 0x2248ae1c, 0xfa9d08a3, 0x5ba48c4d, 0x639f073e,
+ 0xc2a683d0, 0x13e811d8, 0xb2d19536, 0x8aea1e45, 0x2bd39aab,
+ 0xe030557a, 0x4109d194, 0x79325ae7, 0xd80bde09, 0x09454c01,
+ 0xa87cc8ef, 0x9047439c, 0x317ec772, 0xe9ab61cd, 0x4892e523,
+ 0x70a96e50, 0xd190eabe, 0x00de78b6, 0xa1e7fc58, 0x99dc772b,
+ 0x38e5f3c5},
+ {0x00000000, 0xe81790a1, 0x0b5e2703, 0xe349b7a2, 0x16bc4e06,
+ 0xfeabdea7, 0x1de26905, 0xf5f5f9a4, 0x2d789c0c, 0xc56f0cad,
+ 0x2626bb0f, 0xce312bae, 0x3bc4d20a, 0xd3d342ab, 0x309af509,
+ 0xd88d65a8, 0x5af13818, 0xb2e6a8b9, 0x51af1f1b, 0xb9b88fba,
+ 0x4c4d761e, 0xa45ae6bf, 0x4713511d, 0xaf04c1bc, 0x7789a414,
+ 0x9f9e34b5, 0x7cd78317, 0x94c013b6, 0x6135ea12, 0x89227ab3,
+ 0x6a6bcd11, 0x827c5db0, 0xb5e27030, 0x5df5e091, 0xbebc5733,
+ 0x56abc792, 0xa35e3e36, 0x4b49ae97, 0xa8001935, 0x40178994,
+ 0x989aec3c, 0x708d7c9d, 0x93c4cb3f, 0x7bd35b9e, 0x8e26a23a,
+ 0x6631329b, 0x85788539, 0x6d6f1598, 0xef134828, 0x0704d889,
+ 0xe44d6f2b, 0x0c5aff8a, 0xf9af062e, 0x11b8968f, 0xf2f1212d,
+ 0x1ae6b18c, 0xc26bd424, 0x2a7c4485, 0xc935f327, 0x21226386,
+ 0xd4d79a22, 0x3cc00a83, 0xdf89bd21, 0x379e2d80, 0xb0b5e621,
+ 0x58a27680, 0xbbebc122, 0x53fc5183, 0xa609a827, 0x4e1e3886,
+ 0xad578f24, 0x45401f85, 0x9dcd7a2d, 0x75daea8c, 0x96935d2e,
+ 0x7e84cd8f, 0x8b71342b, 0x6366a48a, 0x802f1328, 0x68388389,
+ 0xea44de39, 0x02534e98, 0xe11af93a, 0x090d699b, 0xfcf8903f,
+ 0x14ef009e, 0xf7a6b73c, 0x1fb1279d, 0xc73c4235, 0x2f2bd294,
+ 0xcc626536, 0x2475f597, 0xd1800c33, 0x39979c92, 0xdade2b30,
+ 0x32c9bb91, 0x05579611, 0xed4006b0, 0x0e09b112, 0xe61e21b3,
+ 0x13ebd817, 0xfbfc48b6, 0x18b5ff14, 0xf0a26fb5, 0x282f0a1d,
+ 0xc0389abc, 0x23712d1e, 0xcb66bdbf, 0x3e93441b, 0xd684d4ba,
+ 0x35cd6318, 0xdddaf3b9, 0x5fa6ae09, 0xb7b13ea8, 0x54f8890a,
+ 0xbcef19ab, 0x491ae00f, 0xa10d70ae, 0x4244c70c, 0xaa5357ad,
+ 0x72de3205, 0x9ac9a2a4, 0x79801506, 0x919785a7, 0x64627c03,
+ 0x8c75eca2, 0x6f3c5b00, 0x872bcba1, 0xba1aca03, 0x520d5aa2,
+ 0xb144ed00, 0x59537da1, 0xaca68405, 0x44b114a4, 0xa7f8a306,
+ 0x4fef33a7, 0x9762560f, 0x7f75c6ae, 0x9c3c710c, 0x742be1ad,
+ 0x81de1809, 0x69c988a8, 0x8a803f0a, 0x6297afab, 0xe0ebf21b,
+ 0x08fc62ba, 0xebb5d518, 0x03a245b9, 0xf657bc1d, 0x1e402cbc,
+ 0xfd099b1e, 0x151e0bbf, 0xcd936e17, 0x2584feb6, 0xc6cd4914,
+ 0x2edad9b5, 0xdb2f2011, 0x3338b0b0, 0xd0710712, 0x386697b3,
+ 0x0ff8ba33, 0xe7ef2a92, 0x04a69d30, 0xecb10d91, 0x1944f435,
+ 0xf1536494, 0x121ad336, 0xfa0d4397, 0x2280263f, 0xca97b69e,
+ 0x29de013c, 0xc1c9919d, 0x343c6839, 0xdc2bf898, 0x3f624f3a,
+ 0xd775df9b, 0x5509822b, 0xbd1e128a, 0x5e57a528, 0xb6403589,
+ 0x43b5cc2d, 0xaba25c8c, 0x48ebeb2e, 0xa0fc7b8f, 0x78711e27,
+ 0x90668e86, 0x732f3924, 0x9b38a985, 0x6ecd5021, 0x86dac080,
+ 0x65937722, 0x8d84e783, 0x0aaf2c22, 0xe2b8bc83, 0x01f10b21,
+ 0xe9e69b80, 0x1c136224, 0xf404f285, 0x174d4527, 0xff5ad586,
+ 0x27d7b02e, 0xcfc0208f, 0x2c89972d, 0xc49e078c, 0x316bfe28,
+ 0xd97c6e89, 0x3a35d92b, 0xd222498a, 0x505e143a, 0xb849849b,
+ 0x5b003339, 0xb317a398, 0x46e25a3c, 0xaef5ca9d, 0x4dbc7d3f,
+ 0xa5abed9e, 0x7d268836, 0x95311897, 0x7678af35, 0x9e6f3f94,
+ 0x6b9ac630, 0x838d5691, 0x60c4e133, 0x88d37192, 0xbf4d5c12,
+ 0x575accb3, 0xb4137b11, 0x5c04ebb0, 0xa9f11214, 0x41e682b5,
+ 0xa2af3517, 0x4ab8a5b6, 0x9235c01e, 0x7a2250bf, 0x996be71d,
+ 0x717c77bc, 0x84898e18, 0x6c9e1eb9, 0x8fd7a91b, 0x67c039ba,
+ 0xe5bc640a, 0x0dabf4ab, 0xeee24309, 0x06f5d3a8, 0xf3002a0c,
+ 0x1b17baad, 0xf85e0d0f, 0x10499dae, 0xc8c4f806, 0x20d368a7,
+ 0xc39adf05, 0x2b8d4fa4, 0xde78b600, 0x366f26a1, 0xd5269103,
+ 0x3d3101a2}};
+
+local const z_word_t FAR crc_braid_big_table[][256] = {
+ {0x0000000000000000, 0xa19017e800000000, 0x03275e0b00000000,
+ 0xa2b749e300000000, 0x064ebc1600000000, 0xa7deabfe00000000,
+ 0x0569e21d00000000, 0xa4f9f5f500000000, 0x0c9c782d00000000,
+ 0xad0c6fc500000000, 0x0fbb262600000000, 0xae2b31ce00000000,
+ 0x0ad2c43b00000000, 0xab42d3d300000000, 0x09f59a3000000000,
+ 0xa8658dd800000000, 0x1838f15a00000000, 0xb9a8e6b200000000,
+ 0x1b1faf5100000000, 0xba8fb8b900000000, 0x1e764d4c00000000,
+ 0xbfe65aa400000000, 0x1d51134700000000, 0xbcc104af00000000,
+ 0x14a4897700000000, 0xb5349e9f00000000, 0x1783d77c00000000,
+ 0xb613c09400000000, 0x12ea356100000000, 0xb37a228900000000,
+ 0x11cd6b6a00000000, 0xb05d7c8200000000, 0x3070e2b500000000,
+ 0x91e0f55d00000000, 0x3357bcbe00000000, 0x92c7ab5600000000,
+ 0x363e5ea300000000, 0x97ae494b00000000, 0x351900a800000000,
+ 0x9489174000000000, 0x3cec9a9800000000, 0x9d7c8d7000000000,
+ 0x3fcbc49300000000, 0x9e5bd37b00000000, 0x3aa2268e00000000,
+ 0x9b32316600000000, 0x3985788500000000, 0x98156f6d00000000,
+ 0x284813ef00000000, 0x89d8040700000000, 0x2b6f4de400000000,
+ 0x8aff5a0c00000000, 0x2e06aff900000000, 0x8f96b81100000000,
+ 0x2d21f1f200000000, 0x8cb1e61a00000000, 0x24d46bc200000000,
+ 0x85447c2a00000000, 0x27f335c900000000, 0x8663222100000000,
+ 0x229ad7d400000000, 0x830ac03c00000000, 0x21bd89df00000000,
+ 0x802d9e3700000000, 0x21e6b5b000000000, 0x8076a25800000000,
+ 0x22c1ebbb00000000, 0x8351fc5300000000, 0x27a809a600000000,
+ 0x86381e4e00000000, 0x248f57ad00000000, 0x851f404500000000,
+ 0x2d7acd9d00000000, 0x8ceada7500000000, 0x2e5d939600000000,
+ 0x8fcd847e00000000, 0x2b34718b00000000, 0x8aa4666300000000,
+ 0x28132f8000000000, 0x8983386800000000, 0x39de44ea00000000,
+ 0x984e530200000000, 0x3af91ae100000000, 0x9b690d0900000000,
+ 0x3f90f8fc00000000, 0x9e00ef1400000000, 0x3cb7a6f700000000,
+ 0x9d27b11f00000000, 0x35423cc700000000, 0x94d22b2f00000000,
+ 0x366562cc00000000, 0x97f5752400000000, 0x330c80d100000000,
+ 0x929c973900000000, 0x302bdeda00000000, 0x91bbc93200000000,
+ 0x1196570500000000, 0xb00640ed00000000, 0x12b1090e00000000,
+ 0xb3211ee600000000, 0x17d8eb1300000000, 0xb648fcfb00000000,
+ 0x14ffb51800000000, 0xb56fa2f000000000, 0x1d0a2f2800000000,
+ 0xbc9a38c000000000, 0x1e2d712300000000, 0xbfbd66cb00000000,
+ 0x1b44933e00000000, 0xbad484d600000000, 0x1863cd3500000000,
+ 0xb9f3dadd00000000, 0x09aea65f00000000, 0xa83eb1b700000000,
+ 0x0a89f85400000000, 0xab19efbc00000000, 0x0fe01a4900000000,
+ 0xae700da100000000, 0x0cc7444200000000, 0xad5753aa00000000,
+ 0x0532de7200000000, 0xa4a2c99a00000000, 0x0615807900000000,
+ 0xa785979100000000, 0x037c626400000000, 0xa2ec758c00000000,
+ 0x005b3c6f00000000, 0xa1cb2b8700000000, 0x03ca1aba00000000,
+ 0xa25a0d5200000000, 0x00ed44b100000000, 0xa17d535900000000,
+ 0x0584a6ac00000000, 0xa414b14400000000, 0x06a3f8a700000000,
+ 0xa733ef4f00000000, 0x0f56629700000000, 0xaec6757f00000000,
+ 0x0c713c9c00000000, 0xade12b7400000000, 0x0918de8100000000,
+ 0xa888c96900000000, 0x0a3f808a00000000, 0xabaf976200000000,
+ 0x1bf2ebe000000000, 0xba62fc0800000000, 0x18d5b5eb00000000,
+ 0xb945a20300000000, 0x1dbc57f600000000, 0xbc2c401e00000000,
+ 0x1e9b09fd00000000, 0xbf0b1e1500000000, 0x176e93cd00000000,
+ 0xb6fe842500000000, 0x1449cdc600000000, 0xb5d9da2e00000000,
+ 0x11202fdb00000000, 0xb0b0383300000000, 0x120771d000000000,
+ 0xb397663800000000, 0x33baf80f00000000, 0x922aefe700000000,
+ 0x309da60400000000, 0x910db1ec00000000, 0x35f4441900000000,
+ 0x946453f100000000, 0x36d31a1200000000, 0x97430dfa00000000,
+ 0x3f26802200000000, 0x9eb697ca00000000, 0x3c01de2900000000,
+ 0x9d91c9c100000000, 0x39683c3400000000, 0x98f82bdc00000000,
+ 0x3a4f623f00000000, 0x9bdf75d700000000, 0x2b82095500000000,
+ 0x8a121ebd00000000, 0x28a5575e00000000, 0x893540b600000000,
+ 0x2dccb54300000000, 0x8c5ca2ab00000000, 0x2eebeb4800000000,
+ 0x8f7bfca000000000, 0x271e717800000000, 0x868e669000000000,
+ 0x24392f7300000000, 0x85a9389b00000000, 0x2150cd6e00000000,
+ 0x80c0da8600000000, 0x2277936500000000, 0x83e7848d00000000,
+ 0x222caf0a00000000, 0x83bcb8e200000000, 0x210bf10100000000,
+ 0x809be6e900000000, 0x2462131c00000000, 0x85f204f400000000,
+ 0x27454d1700000000, 0x86d55aff00000000, 0x2eb0d72700000000,
+ 0x8f20c0cf00000000, 0x2d97892c00000000, 0x8c079ec400000000,
+ 0x28fe6b3100000000, 0x896e7cd900000000, 0x2bd9353a00000000,
+ 0x8a4922d200000000, 0x3a145e5000000000, 0x9b8449b800000000,
+ 0x3933005b00000000, 0x98a317b300000000, 0x3c5ae24600000000,
+ 0x9dcaf5ae00000000, 0x3f7dbc4d00000000, 0x9eedaba500000000,
+ 0x3688267d00000000, 0x9718319500000000, 0x35af787600000000,
+ 0x943f6f9e00000000, 0x30c69a6b00000000, 0x91568d8300000000,
+ 0x33e1c46000000000, 0x9271d38800000000, 0x125c4dbf00000000,
+ 0xb3cc5a5700000000, 0x117b13b400000000, 0xb0eb045c00000000,
+ 0x1412f1a900000000, 0xb582e64100000000, 0x1735afa200000000,
+ 0xb6a5b84a00000000, 0x1ec0359200000000, 0xbf50227a00000000,
+ 0x1de76b9900000000, 0xbc777c7100000000, 0x188e898400000000,
+ 0xb91e9e6c00000000, 0x1ba9d78f00000000, 0xba39c06700000000,
+ 0x0a64bce500000000, 0xabf4ab0d00000000, 0x0943e2ee00000000,
+ 0xa8d3f50600000000, 0x0c2a00f300000000, 0xadba171b00000000,
+ 0x0f0d5ef800000000, 0xae9d491000000000, 0x06f8c4c800000000,
+ 0xa768d32000000000, 0x05df9ac300000000, 0xa44f8d2b00000000,
+ 0x00b678de00000000, 0xa1266f3600000000, 0x039126d500000000,
+ 0xa201313d00000000},
+ {0x0000000000000000, 0xee8439a100000000, 0x9d0f029900000000,
+ 0x738b3b3800000000, 0x7b1975e900000000, 0x959d4c4800000000,
+ 0xe616777000000000, 0x08924ed100000000, 0xb7349b0900000000,
+ 0x59b0a2a800000000, 0x2a3b999000000000, 0xc4bfa03100000000,
+ 0xcc2deee000000000, 0x22a9d74100000000, 0x5122ec7900000000,
+ 0xbfa6d5d800000000, 0x6e69361300000000, 0x80ed0fb200000000,
+ 0xf366348a00000000, 0x1de20d2b00000000, 0x157043fa00000000,
+ 0xfbf47a5b00000000, 0x887f416300000000, 0x66fb78c200000000,
+ 0xd95dad1a00000000, 0x37d994bb00000000, 0x4452af8300000000,
+ 0xaad6962200000000, 0xa244d8f300000000, 0x4cc0e15200000000,
+ 0x3f4bda6a00000000, 0xd1cfe3cb00000000, 0xdcd26c2600000000,
+ 0x3256558700000000, 0x41dd6ebf00000000, 0xaf59571e00000000,
+ 0xa7cb19cf00000000, 0x494f206e00000000, 0x3ac41b5600000000,
+ 0xd44022f700000000, 0x6be6f72f00000000, 0x8562ce8e00000000,
+ 0xf6e9f5b600000000, 0x186dcc1700000000, 0x10ff82c600000000,
+ 0xfe7bbb6700000000, 0x8df0805f00000000, 0x6374b9fe00000000,
+ 0xb2bb5a3500000000, 0x5c3f639400000000, 0x2fb458ac00000000,
+ 0xc130610d00000000, 0xc9a22fdc00000000, 0x2726167d00000000,
+ 0x54ad2d4500000000, 0xba2914e400000000, 0x058fc13c00000000,
+ 0xeb0bf89d00000000, 0x9880c3a500000000, 0x7604fa0400000000,
+ 0x7e96b4d500000000, 0x90128d7400000000, 0xe399b64c00000000,
+ 0x0d1d8fed00000000, 0xb8a5d94c00000000, 0x5621e0ed00000000,
+ 0x25aadbd500000000, 0xcb2ee27400000000, 0xc3bcaca500000000,
+ 0x2d38950400000000, 0x5eb3ae3c00000000, 0xb037979d00000000,
+ 0x0f91424500000000, 0xe1157be400000000, 0x929e40dc00000000,
+ 0x7c1a797d00000000, 0x748837ac00000000, 0x9a0c0e0d00000000,
+ 0xe987353500000000, 0x07030c9400000000, 0xd6ccef5f00000000,
+ 0x3848d6fe00000000, 0x4bc3edc600000000, 0xa547d46700000000,
+ 0xadd59ab600000000, 0x4351a31700000000, 0x30da982f00000000,
+ 0xde5ea18e00000000, 0x61f8745600000000, 0x8f7c4df700000000,
+ 0xfcf776cf00000000, 0x12734f6e00000000, 0x1ae101bf00000000,
+ 0xf465381e00000000, 0x87ee032600000000, 0x696a3a8700000000,
+ 0x6477b56a00000000, 0x8af38ccb00000000, 0xf978b7f300000000,
+ 0x17fc8e5200000000, 0x1f6ec08300000000, 0xf1eaf92200000000,
+ 0x8261c21a00000000, 0x6ce5fbbb00000000, 0xd3432e6300000000,
+ 0x3dc717c200000000, 0x4e4c2cfa00000000, 0xa0c8155b00000000,
+ 0xa85a5b8a00000000, 0x46de622b00000000, 0x3555591300000000,
+ 0xdbd160b200000000, 0x0a1e837900000000, 0xe49abad800000000,
+ 0x971181e000000000, 0x7995b84100000000, 0x7107f69000000000,
+ 0x9f83cf3100000000, 0xec08f40900000000, 0x028ccda800000000,
+ 0xbd2a187000000000, 0x53ae21d100000000, 0x20251ae900000000,
+ 0xcea1234800000000, 0xc6336d9900000000, 0x28b7543800000000,
+ 0x5b3c6f0000000000, 0xb5b856a100000000, 0x704bb39900000000,
+ 0x9ecf8a3800000000, 0xed44b10000000000, 0x03c088a100000000,
+ 0x0b52c67000000000, 0xe5d6ffd100000000, 0x965dc4e900000000,
+ 0x78d9fd4800000000, 0xc77f289000000000, 0x29fb113100000000,
+ 0x5a702a0900000000, 0xb4f413a800000000, 0xbc665d7900000000,
+ 0x52e264d800000000, 0x21695fe000000000, 0xcfed664100000000,
+ 0x1e22858a00000000, 0xf0a6bc2b00000000, 0x832d871300000000,
+ 0x6da9beb200000000, 0x653bf06300000000, 0x8bbfc9c200000000,
+ 0xf834f2fa00000000, 0x16b0cb5b00000000, 0xa9161e8300000000,
+ 0x4792272200000000, 0x34191c1a00000000, 0xda9d25bb00000000,
+ 0xd20f6b6a00000000, 0x3c8b52cb00000000, 0x4f0069f300000000,
+ 0xa184505200000000, 0xac99dfbf00000000, 0x421de61e00000000,
+ 0x3196dd2600000000, 0xdf12e48700000000, 0xd780aa5600000000,
+ 0x390493f700000000, 0x4a8fa8cf00000000, 0xa40b916e00000000,
+ 0x1bad44b600000000, 0xf5297d1700000000, 0x86a2462f00000000,
+ 0x68267f8e00000000, 0x60b4315f00000000, 0x8e3008fe00000000,
+ 0xfdbb33c600000000, 0x133f0a6700000000, 0xc2f0e9ac00000000,
+ 0x2c74d00d00000000, 0x5fffeb3500000000, 0xb17bd29400000000,
+ 0xb9e99c4500000000, 0x576da5e400000000, 0x24e69edc00000000,
+ 0xca62a77d00000000, 0x75c472a500000000, 0x9b404b0400000000,
+ 0xe8cb703c00000000, 0x064f499d00000000, 0x0edd074c00000000,
+ 0xe0593eed00000000, 0x93d205d500000000, 0x7d563c7400000000,
+ 0xc8ee6ad500000000, 0x266a537400000000, 0x55e1684c00000000,
+ 0xbb6551ed00000000, 0xb3f71f3c00000000, 0x5d73269d00000000,
+ 0x2ef81da500000000, 0xc07c240400000000, 0x7fdaf1dc00000000,
+ 0x915ec87d00000000, 0xe2d5f34500000000, 0x0c51cae400000000,
+ 0x04c3843500000000, 0xea47bd9400000000, 0x99cc86ac00000000,
+ 0x7748bf0d00000000, 0xa6875cc600000000, 0x4803656700000000,
+ 0x3b885e5f00000000, 0xd50c67fe00000000, 0xdd9e292f00000000,
+ 0x331a108e00000000, 0x40912bb600000000, 0xae15121700000000,
+ 0x11b3c7cf00000000, 0xff37fe6e00000000, 0x8cbcc55600000000,
+ 0x6238fcf700000000, 0x6aaab22600000000, 0x842e8b8700000000,
+ 0xf7a5b0bf00000000, 0x1921891e00000000, 0x143c06f300000000,
+ 0xfab83f5200000000, 0x8933046a00000000, 0x67b73dcb00000000,
+ 0x6f25731a00000000, 0x81a14abb00000000, 0xf22a718300000000,
+ 0x1cae482200000000, 0xa3089dfa00000000, 0x4d8ca45b00000000,
+ 0x3e079f6300000000, 0xd083a6c200000000, 0xd811e81300000000,
+ 0x3695d1b200000000, 0x451eea8a00000000, 0xab9ad32b00000000,
+ 0x7a5530e000000000, 0x94d1094100000000, 0xe75a327900000000,
+ 0x09de0bd800000000, 0x014c450900000000, 0xefc87ca800000000,
+ 0x9c43479000000000, 0x72c77e3100000000, 0xcd61abe900000000,
+ 0x23e5924800000000, 0x506ea97000000000, 0xbeea90d100000000,
+ 0xb678de0000000000, 0x58fce7a100000000, 0x2b77dc9900000000,
+ 0xc5f3e53800000000},
+ {0x0000000000000000, 0xfbf6134700000000, 0xf6ed278e00000000,
+ 0x0d1b34c900000000, 0xaddd3ec700000000, 0x562b2d8000000000,
+ 0x5b30194900000000, 0xa0c60a0e00000000, 0x1bbd0c5500000000,
+ 0xe04b1f1200000000, 0xed502bdb00000000, 0x16a6389c00000000,
+ 0xb660329200000000, 0x4d9621d500000000, 0x408d151c00000000,
+ 0xbb7b065b00000000, 0x367a19aa00000000, 0xcd8c0aed00000000,
+ 0xc0973e2400000000, 0x3b612d6300000000, 0x9ba7276d00000000,
+ 0x6051342a00000000, 0x6d4a00e300000000, 0x96bc13a400000000,
+ 0x2dc715ff00000000, 0xd63106b800000000, 0xdb2a327100000000,
+ 0x20dc213600000000, 0x801a2b3800000000, 0x7bec387f00000000,
+ 0x76f70cb600000000, 0x8d011ff100000000, 0x2df2438f00000000,
+ 0xd60450c800000000, 0xdb1f640100000000, 0x20e9774600000000,
+ 0x802f7d4800000000, 0x7bd96e0f00000000, 0x76c25ac600000000,
+ 0x8d34498100000000, 0x364f4fda00000000, 0xcdb95c9d00000000,
+ 0xc0a2685400000000, 0x3b547b1300000000, 0x9b92711d00000000,
+ 0x6064625a00000000, 0x6d7f569300000000, 0x968945d400000000,
+ 0x1b885a2500000000, 0xe07e496200000000, 0xed657dab00000000,
+ 0x16936eec00000000, 0xb65564e200000000, 0x4da377a500000000,
+ 0x40b8436c00000000, 0xbb4e502b00000000, 0x0035567000000000,
+ 0xfbc3453700000000, 0xf6d871fe00000000, 0x0d2e62b900000000,
+ 0xade868b700000000, 0x561e7bf000000000, 0x5b054f3900000000,
+ 0xa0f35c7e00000000, 0x1be2f6c500000000, 0xe014e58200000000,
+ 0xed0fd14b00000000, 0x16f9c20c00000000, 0xb63fc80200000000,
+ 0x4dc9db4500000000, 0x40d2ef8c00000000, 0xbb24fccb00000000,
+ 0x005ffa9000000000, 0xfba9e9d700000000, 0xf6b2dd1e00000000,
+ 0x0d44ce5900000000, 0xad82c45700000000, 0x5674d71000000000,
+ 0x5b6fe3d900000000, 0xa099f09e00000000, 0x2d98ef6f00000000,
+ 0xd66efc2800000000, 0xdb75c8e100000000, 0x2083dba600000000,
+ 0x8045d1a800000000, 0x7bb3c2ef00000000, 0x76a8f62600000000,
+ 0x8d5ee56100000000, 0x3625e33a00000000, 0xcdd3f07d00000000,
+ 0xc0c8c4b400000000, 0x3b3ed7f300000000, 0x9bf8ddfd00000000,
+ 0x600eceba00000000, 0x6d15fa7300000000, 0x96e3e93400000000,
+ 0x3610b54a00000000, 0xcde6a60d00000000, 0xc0fd92c400000000,
+ 0x3b0b818300000000, 0x9bcd8b8d00000000, 0x603b98ca00000000,
+ 0x6d20ac0300000000, 0x96d6bf4400000000, 0x2dadb91f00000000,
+ 0xd65baa5800000000, 0xdb409e9100000000, 0x20b68dd600000000,
+ 0x807087d800000000, 0x7b86949f00000000, 0x769da05600000000,
+ 0x8d6bb31100000000, 0x006aace000000000, 0xfb9cbfa700000000,
+ 0xf6878b6e00000000, 0x0d71982900000000, 0xadb7922700000000,
+ 0x5641816000000000, 0x5b5ab5a900000000, 0xa0aca6ee00000000,
+ 0x1bd7a0b500000000, 0xe021b3f200000000, 0xed3a873b00000000,
+ 0x16cc947c00000000, 0xb60a9e7200000000, 0x4dfc8d3500000000,
+ 0x40e7b9fc00000000, 0xbb11aabb00000000, 0x77c29c5000000000,
+ 0x8c348f1700000000, 0x812fbbde00000000, 0x7ad9a89900000000,
+ 0xda1fa29700000000, 0x21e9b1d000000000, 0x2cf2851900000000,
+ 0xd704965e00000000, 0x6c7f900500000000, 0x9789834200000000,
+ 0x9a92b78b00000000, 0x6164a4cc00000000, 0xc1a2aec200000000,
+ 0x3a54bd8500000000, 0x374f894c00000000, 0xccb99a0b00000000,
+ 0x41b885fa00000000, 0xba4e96bd00000000, 0xb755a27400000000,
+ 0x4ca3b13300000000, 0xec65bb3d00000000, 0x1793a87a00000000,
+ 0x1a889cb300000000, 0xe17e8ff400000000, 0x5a0589af00000000,
+ 0xa1f39ae800000000, 0xace8ae2100000000, 0x571ebd6600000000,
+ 0xf7d8b76800000000, 0x0c2ea42f00000000, 0x013590e600000000,
+ 0xfac383a100000000, 0x5a30dfdf00000000, 0xa1c6cc9800000000,
+ 0xacddf85100000000, 0x572beb1600000000, 0xf7ede11800000000,
+ 0x0c1bf25f00000000, 0x0100c69600000000, 0xfaf6d5d100000000,
+ 0x418dd38a00000000, 0xba7bc0cd00000000, 0xb760f40400000000,
+ 0x4c96e74300000000, 0xec50ed4d00000000, 0x17a6fe0a00000000,
+ 0x1abdcac300000000, 0xe14bd98400000000, 0x6c4ac67500000000,
+ 0x97bcd53200000000, 0x9aa7e1fb00000000, 0x6151f2bc00000000,
+ 0xc197f8b200000000, 0x3a61ebf500000000, 0x377adf3c00000000,
+ 0xcc8ccc7b00000000, 0x77f7ca2000000000, 0x8c01d96700000000,
+ 0x811aedae00000000, 0x7aecfee900000000, 0xda2af4e700000000,
+ 0x21dce7a000000000, 0x2cc7d36900000000, 0xd731c02e00000000,
+ 0x6c206a9500000000, 0x97d679d200000000, 0x9acd4d1b00000000,
+ 0x613b5e5c00000000, 0xc1fd545200000000, 0x3a0b471500000000,
+ 0x371073dc00000000, 0xcce6609b00000000, 0x779d66c000000000,
+ 0x8c6b758700000000, 0x8170414e00000000, 0x7a86520900000000,
+ 0xda40580700000000, 0x21b64b4000000000, 0x2cad7f8900000000,
+ 0xd75b6cce00000000, 0x5a5a733f00000000, 0xa1ac607800000000,
+ 0xacb754b100000000, 0x574147f600000000, 0xf7874df800000000,
+ 0x0c715ebf00000000, 0x016a6a7600000000, 0xfa9c793100000000,
+ 0x41e77f6a00000000, 0xba116c2d00000000, 0xb70a58e400000000,
+ 0x4cfc4ba300000000, 0xec3a41ad00000000, 0x17cc52ea00000000,
+ 0x1ad7662300000000, 0xe121756400000000, 0x41d2291a00000000,
+ 0xba243a5d00000000, 0xb73f0e9400000000, 0x4cc91dd300000000,
+ 0xec0f17dd00000000, 0x17f9049a00000000, 0x1ae2305300000000,
+ 0xe114231400000000, 0x5a6f254f00000000, 0xa199360800000000,
+ 0xac8202c100000000, 0x5774118600000000, 0xf7b21b8800000000,
+ 0x0c4408cf00000000, 0x015f3c0600000000, 0xfaa92f4100000000,
+ 0x77a830b000000000, 0x8c5e23f700000000, 0x8145173e00000000,
+ 0x7ab3047900000000, 0xda750e7700000000, 0x21831d3000000000,
+ 0x2c9829f900000000, 0xd76e3abe00000000, 0x6c153ce500000000,
+ 0x97e32fa200000000, 0x9af81b6b00000000, 0x610e082c00000000,
+ 0xc1c8022200000000, 0x3a3e116500000000, 0x372525ac00000000,
+ 0xccd336eb00000000},
+ {0x0000000000000000, 0x6238282a00000000, 0xc470505400000000,
+ 0xa648787e00000000, 0x88e1a0a800000000, 0xead9888200000000,
+ 0x4c91f0fc00000000, 0x2ea9d8d600000000, 0x51c5308a00000000,
+ 0x33fd18a000000000, 0x95b560de00000000, 0xf78d48f400000000,
+ 0xd924902200000000, 0xbb1cb80800000000, 0x1d54c07600000000,
+ 0x7f6ce85c00000000, 0xe38c10cf00000000, 0x81b438e500000000,
+ 0x27fc409b00000000, 0x45c468b100000000, 0x6b6db06700000000,
+ 0x0955984d00000000, 0xaf1de03300000000, 0xcd25c81900000000,
+ 0xb249204500000000, 0xd071086f00000000, 0x7639701100000000,
+ 0x1401583b00000000, 0x3aa880ed00000000, 0x5890a8c700000000,
+ 0xfed8d0b900000000, 0x9ce0f89300000000, 0x871f504500000000,
+ 0xe527786f00000000, 0x436f001100000000, 0x2157283b00000000,
+ 0x0ffef0ed00000000, 0x6dc6d8c700000000, 0xcb8ea0b900000000,
+ 0xa9b6889300000000, 0xd6da60cf00000000, 0xb4e248e500000000,
+ 0x12aa309b00000000, 0x709218b100000000, 0x5e3bc06700000000,
+ 0x3c03e84d00000000, 0x9a4b903300000000, 0xf873b81900000000,
+ 0x6493408a00000000, 0x06ab68a000000000, 0xa0e310de00000000,
+ 0xc2db38f400000000, 0xec72e02200000000, 0x8e4ac80800000000,
+ 0x2802b07600000000, 0x4a3a985c00000000, 0x3556700000000000,
+ 0x576e582a00000000, 0xf126205400000000, 0x931e087e00000000,
+ 0xbdb7d0a800000000, 0xdf8ff88200000000, 0x79c780fc00000000,
+ 0x1bffa8d600000000, 0x0e3fa08a00000000, 0x6c0788a000000000,
+ 0xca4ff0de00000000, 0xa877d8f400000000, 0x86de002200000000,
+ 0xe4e6280800000000, 0x42ae507600000000, 0x2096785c00000000,
+ 0x5ffa900000000000, 0x3dc2b82a00000000, 0x9b8ac05400000000,
+ 0xf9b2e87e00000000, 0xd71b30a800000000, 0xb523188200000000,
+ 0x136b60fc00000000, 0x715348d600000000, 0xedb3b04500000000,
+ 0x8f8b986f00000000, 0x29c3e01100000000, 0x4bfbc83b00000000,
+ 0x655210ed00000000, 0x076a38c700000000, 0xa12240b900000000,
+ 0xc31a689300000000, 0xbc7680cf00000000, 0xde4ea8e500000000,
+ 0x7806d09b00000000, 0x1a3ef8b100000000, 0x3497206700000000,
+ 0x56af084d00000000, 0xf0e7703300000000, 0x92df581900000000,
+ 0x8920f0cf00000000, 0xeb18d8e500000000, 0x4d50a09b00000000,
+ 0x2f6888b100000000, 0x01c1506700000000, 0x63f9784d00000000,
+ 0xc5b1003300000000, 0xa789281900000000, 0xd8e5c04500000000,
+ 0xbadde86f00000000, 0x1c95901100000000, 0x7eadb83b00000000,
+ 0x500460ed00000000, 0x323c48c700000000, 0x947430b900000000,
+ 0xf64c189300000000, 0x6aace00000000000, 0x0894c82a00000000,
+ 0xaedcb05400000000, 0xcce4987e00000000, 0xe24d40a800000000,
+ 0x8075688200000000, 0x263d10fc00000000, 0x440538d600000000,
+ 0x3b69d08a00000000, 0x5951f8a000000000, 0xff1980de00000000,
+ 0x9d21a8f400000000, 0xb388702200000000, 0xd1b0580800000000,
+ 0x77f8207600000000, 0x15c0085c00000000, 0x5d7831ce00000000,
+ 0x3f4019e400000000, 0x9908619a00000000, 0xfb3049b000000000,
+ 0xd599916600000000, 0xb7a1b94c00000000, 0x11e9c13200000000,
+ 0x73d1e91800000000, 0x0cbd014400000000, 0x6e85296e00000000,
+ 0xc8cd511000000000, 0xaaf5793a00000000, 0x845ca1ec00000000,
+ 0xe66489c600000000, 0x402cf1b800000000, 0x2214d99200000000,
+ 0xbef4210100000000, 0xdccc092b00000000, 0x7a84715500000000,
+ 0x18bc597f00000000, 0x361581a900000000, 0x542da98300000000,
+ 0xf265d1fd00000000, 0x905df9d700000000, 0xef31118b00000000,
+ 0x8d0939a100000000, 0x2b4141df00000000, 0x497969f500000000,
+ 0x67d0b12300000000, 0x05e8990900000000, 0xa3a0e17700000000,
+ 0xc198c95d00000000, 0xda67618b00000000, 0xb85f49a100000000,
+ 0x1e1731df00000000, 0x7c2f19f500000000, 0x5286c12300000000,
+ 0x30bee90900000000, 0x96f6917700000000, 0xf4ceb95d00000000,
+ 0x8ba2510100000000, 0xe99a792b00000000, 0x4fd2015500000000,
+ 0x2dea297f00000000, 0x0343f1a900000000, 0x617bd98300000000,
+ 0xc733a1fd00000000, 0xa50b89d700000000, 0x39eb714400000000,
+ 0x5bd3596e00000000, 0xfd9b211000000000, 0x9fa3093a00000000,
+ 0xb10ad1ec00000000, 0xd332f9c600000000, 0x757a81b800000000,
+ 0x1742a99200000000, 0x682e41ce00000000, 0x0a1669e400000000,
+ 0xac5e119a00000000, 0xce6639b000000000, 0xe0cfe16600000000,
+ 0x82f7c94c00000000, 0x24bfb13200000000, 0x4687991800000000,
+ 0x5347914400000000, 0x317fb96e00000000, 0x9737c11000000000,
+ 0xf50fe93a00000000, 0xdba631ec00000000, 0xb99e19c600000000,
+ 0x1fd661b800000000, 0x7dee499200000000, 0x0282a1ce00000000,
+ 0x60ba89e400000000, 0xc6f2f19a00000000, 0xa4cad9b000000000,
+ 0x8a63016600000000, 0xe85b294c00000000, 0x4e13513200000000,
+ 0x2c2b791800000000, 0xb0cb818b00000000, 0xd2f3a9a100000000,
+ 0x74bbd1df00000000, 0x1683f9f500000000, 0x382a212300000000,
+ 0x5a12090900000000, 0xfc5a717700000000, 0x9e62595d00000000,
+ 0xe10eb10100000000, 0x8336992b00000000, 0x257ee15500000000,
+ 0x4746c97f00000000, 0x69ef11a900000000, 0x0bd7398300000000,
+ 0xad9f41fd00000000, 0xcfa769d700000000, 0xd458c10100000000,
+ 0xb660e92b00000000, 0x1028915500000000, 0x7210b97f00000000,
+ 0x5cb961a900000000, 0x3e81498300000000, 0x98c931fd00000000,
+ 0xfaf119d700000000, 0x859df18b00000000, 0xe7a5d9a100000000,
+ 0x41eda1df00000000, 0x23d589f500000000, 0x0d7c512300000000,
+ 0x6f44790900000000, 0xc90c017700000000, 0xab34295d00000000,
+ 0x37d4d1ce00000000, 0x55ecf9e400000000, 0xf3a4819a00000000,
+ 0x919ca9b000000000, 0xbf35716600000000, 0xdd0d594c00000000,
+ 0x7b45213200000000, 0x197d091800000000, 0x6611e14400000000,
+ 0x0429c96e00000000, 0xa261b11000000000, 0xc059993a00000000,
+ 0xeef041ec00000000, 0x8cc869c600000000, 0x2a8011b800000000,
+ 0x48b8399200000000},
+ {0x0000000000000000, 0x4c2896a300000000, 0xd9565d9c00000000,
+ 0x957ecb3f00000000, 0xf3abcbe300000000, 0xbf835d4000000000,
+ 0x2afd967f00000000, 0x66d500dc00000000, 0xa751e61c00000000,
+ 0xeb7970bf00000000, 0x7e07bb8000000000, 0x322f2d2300000000,
+ 0x54fa2dff00000000, 0x18d2bb5c00000000, 0x8dac706300000000,
+ 0xc184e6c000000000, 0x4ea3cc3900000000, 0x028b5a9a00000000,
+ 0x97f591a500000000, 0xdbdd070600000000, 0xbd0807da00000000,
+ 0xf120917900000000, 0x645e5a4600000000, 0x2876cce500000000,
+ 0xe9f22a2500000000, 0xa5dabc8600000000, 0x30a477b900000000,
+ 0x7c8ce11a00000000, 0x1a59e1c600000000, 0x5671776500000000,
+ 0xc30fbc5a00000000, 0x8f272af900000000, 0x9c46997300000000,
+ 0xd06e0fd000000000, 0x4510c4ef00000000, 0x0938524c00000000,
+ 0x6fed529000000000, 0x23c5c43300000000, 0xb6bb0f0c00000000,
+ 0xfa9399af00000000, 0x3b177f6f00000000, 0x773fe9cc00000000,
+ 0xe24122f300000000, 0xae69b45000000000, 0xc8bcb48c00000000,
+ 0x8494222f00000000, 0x11eae91000000000, 0x5dc27fb300000000,
+ 0xd2e5554a00000000, 0x9ecdc3e900000000, 0x0bb308d600000000,
+ 0x479b9e7500000000, 0x214e9ea900000000, 0x6d66080a00000000,
+ 0xf818c33500000000, 0xb430559600000000, 0x75b4b35600000000,
+ 0x399c25f500000000, 0xace2eeca00000000, 0xe0ca786900000000,
+ 0x861f78b500000000, 0xca37ee1600000000, 0x5f49252900000000,
+ 0x1361b38a00000000, 0x388d32e700000000, 0x74a5a44400000000,
+ 0xe1db6f7b00000000, 0xadf3f9d800000000, 0xcb26f90400000000,
+ 0x870e6fa700000000, 0x1270a49800000000, 0x5e58323b00000000,
+ 0x9fdcd4fb00000000, 0xd3f4425800000000, 0x468a896700000000,
+ 0x0aa21fc400000000, 0x6c771f1800000000, 0x205f89bb00000000,
+ 0xb521428400000000, 0xf909d42700000000, 0x762efede00000000,
+ 0x3a06687d00000000, 0xaf78a34200000000, 0xe35035e100000000,
+ 0x8585353d00000000, 0xc9ada39e00000000, 0x5cd368a100000000,
+ 0x10fbfe0200000000, 0xd17f18c200000000, 0x9d578e6100000000,
+ 0x0829455e00000000, 0x4401d3fd00000000, 0x22d4d32100000000,
+ 0x6efc458200000000, 0xfb828ebd00000000, 0xb7aa181e00000000,
+ 0xa4cbab9400000000, 0xe8e33d3700000000, 0x7d9df60800000000,
+ 0x31b560ab00000000, 0x5760607700000000, 0x1b48f6d400000000,
+ 0x8e363deb00000000, 0xc21eab4800000000, 0x039a4d8800000000,
+ 0x4fb2db2b00000000, 0xdacc101400000000, 0x96e486b700000000,
+ 0xf031866b00000000, 0xbc1910c800000000, 0x2967dbf700000000,
+ 0x654f4d5400000000, 0xea6867ad00000000, 0xa640f10e00000000,
+ 0x333e3a3100000000, 0x7f16ac9200000000, 0x19c3ac4e00000000,
+ 0x55eb3aed00000000, 0xc095f1d200000000, 0x8cbd677100000000,
+ 0x4d3981b100000000, 0x0111171200000000, 0x946fdc2d00000000,
+ 0xd8474a8e00000000, 0xbe924a5200000000, 0xf2badcf100000000,
+ 0x67c417ce00000000, 0x2bec816d00000000, 0x311c141500000000,
+ 0x7d3482b600000000, 0xe84a498900000000, 0xa462df2a00000000,
+ 0xc2b7dff600000000, 0x8e9f495500000000, 0x1be1826a00000000,
+ 0x57c914c900000000, 0x964df20900000000, 0xda6564aa00000000,
+ 0x4f1baf9500000000, 0x0333393600000000, 0x65e639ea00000000,
+ 0x29ceaf4900000000, 0xbcb0647600000000, 0xf098f2d500000000,
+ 0x7fbfd82c00000000, 0x33974e8f00000000, 0xa6e985b000000000,
+ 0xeac1131300000000, 0x8c1413cf00000000, 0xc03c856c00000000,
+ 0x55424e5300000000, 0x196ad8f000000000, 0xd8ee3e3000000000,
+ 0x94c6a89300000000, 0x01b863ac00000000, 0x4d90f50f00000000,
+ 0x2b45f5d300000000, 0x676d637000000000, 0xf213a84f00000000,
+ 0xbe3b3eec00000000, 0xad5a8d6600000000, 0xe1721bc500000000,
+ 0x740cd0fa00000000, 0x3824465900000000, 0x5ef1468500000000,
+ 0x12d9d02600000000, 0x87a71b1900000000, 0xcb8f8dba00000000,
+ 0x0a0b6b7a00000000, 0x4623fdd900000000, 0xd35d36e600000000,
+ 0x9f75a04500000000, 0xf9a0a09900000000, 0xb588363a00000000,
+ 0x20f6fd0500000000, 0x6cde6ba600000000, 0xe3f9415f00000000,
+ 0xafd1d7fc00000000, 0x3aaf1cc300000000, 0x76878a6000000000,
+ 0x10528abc00000000, 0x5c7a1c1f00000000, 0xc904d72000000000,
+ 0x852c418300000000, 0x44a8a74300000000, 0x088031e000000000,
+ 0x9dfefadf00000000, 0xd1d66c7c00000000, 0xb7036ca000000000,
+ 0xfb2bfa0300000000, 0x6e55313c00000000, 0x227da79f00000000,
+ 0x099126f200000000, 0x45b9b05100000000, 0xd0c77b6e00000000,
+ 0x9cefedcd00000000, 0xfa3aed1100000000, 0xb6127bb200000000,
+ 0x236cb08d00000000, 0x6f44262e00000000, 0xaec0c0ee00000000,
+ 0xe2e8564d00000000, 0x77969d7200000000, 0x3bbe0bd100000000,
+ 0x5d6b0b0d00000000, 0x11439dae00000000, 0x843d569100000000,
+ 0xc815c03200000000, 0x4732eacb00000000, 0x0b1a7c6800000000,
+ 0x9e64b75700000000, 0xd24c21f400000000, 0xb499212800000000,
+ 0xf8b1b78b00000000, 0x6dcf7cb400000000, 0x21e7ea1700000000,
+ 0xe0630cd700000000, 0xac4b9a7400000000, 0x3935514b00000000,
+ 0x751dc7e800000000, 0x13c8c73400000000, 0x5fe0519700000000,
+ 0xca9e9aa800000000, 0x86b60c0b00000000, 0x95d7bf8100000000,
+ 0xd9ff292200000000, 0x4c81e21d00000000, 0x00a974be00000000,
+ 0x667c746200000000, 0x2a54e2c100000000, 0xbf2a29fe00000000,
+ 0xf302bf5d00000000, 0x3286599d00000000, 0x7eaecf3e00000000,
+ 0xebd0040100000000, 0xa7f892a200000000, 0xc12d927e00000000,
+ 0x8d0504dd00000000, 0x187bcfe200000000, 0x5453594100000000,
+ 0xdb7473b800000000, 0x975ce51b00000000, 0x02222e2400000000,
+ 0x4e0ab88700000000, 0x28dfb85b00000000, 0x64f72ef800000000,
+ 0xf189e5c700000000, 0xbda1736400000000, 0x7c2595a400000000,
+ 0x300d030700000000, 0xa573c83800000000, 0xe95b5e9b00000000,
+ 0x8f8e5e4700000000, 0xc3a6c8e400000000, 0x56d803db00000000,
+ 0x1af0957800000000},
+ {0x0000000000000000, 0x939bc97f00000000, 0x263793ff00000000,
+ 0xb5ac5a8000000000, 0x0d68572400000000, 0x9ef39e5b00000000,
+ 0x2b5fc4db00000000, 0xb8c40da400000000, 0x1ad0ae4800000000,
+ 0x894b673700000000, 0x3ce73db700000000, 0xaf7cf4c800000000,
+ 0x17b8f96c00000000, 0x8423301300000000, 0x318f6a9300000000,
+ 0xa214a3ec00000000, 0x34a05d9100000000, 0xa73b94ee00000000,
+ 0x1297ce6e00000000, 0x810c071100000000, 0x39c80ab500000000,
+ 0xaa53c3ca00000000, 0x1fff994a00000000, 0x8c64503500000000,
+ 0x2e70f3d900000000, 0xbdeb3aa600000000, 0x0847602600000000,
+ 0x9bdca95900000000, 0x2318a4fd00000000, 0xb0836d8200000000,
+ 0x052f370200000000, 0x96b4fe7d00000000, 0x2946caf900000000,
+ 0xbadd038600000000, 0x0f71590600000000, 0x9cea907900000000,
+ 0x242e9ddd00000000, 0xb7b554a200000000, 0x02190e2200000000,
+ 0x9182c75d00000000, 0x339664b100000000, 0xa00dadce00000000,
+ 0x15a1f74e00000000, 0x863a3e3100000000, 0x3efe339500000000,
+ 0xad65faea00000000, 0x18c9a06a00000000, 0x8b52691500000000,
+ 0x1de6976800000000, 0x8e7d5e1700000000, 0x3bd1049700000000,
+ 0xa84acde800000000, 0x108ec04c00000000, 0x8315093300000000,
+ 0x36b953b300000000, 0xa5229acc00000000, 0x0736392000000000,
+ 0x94adf05f00000000, 0x2101aadf00000000, 0xb29a63a000000000,
+ 0x0a5e6e0400000000, 0x99c5a77b00000000, 0x2c69fdfb00000000,
+ 0xbff2348400000000, 0x138ae52800000000, 0x80112c5700000000,
+ 0x35bd76d700000000, 0xa626bfa800000000, 0x1ee2b20c00000000,
+ 0x8d797b7300000000, 0x38d521f300000000, 0xab4ee88c00000000,
+ 0x095a4b6000000000, 0x9ac1821f00000000, 0x2f6dd89f00000000,
+ 0xbcf611e000000000, 0x04321c4400000000, 0x97a9d53b00000000,
+ 0x22058fbb00000000, 0xb19e46c400000000, 0x272ab8b900000000,
+ 0xb4b171c600000000, 0x011d2b4600000000, 0x9286e23900000000,
+ 0x2a42ef9d00000000, 0xb9d926e200000000, 0x0c757c6200000000,
+ 0x9feeb51d00000000, 0x3dfa16f100000000, 0xae61df8e00000000,
+ 0x1bcd850e00000000, 0x88564c7100000000, 0x309241d500000000,
+ 0xa30988aa00000000, 0x16a5d22a00000000, 0x853e1b5500000000,
+ 0x3acc2fd100000000, 0xa957e6ae00000000, 0x1cfbbc2e00000000,
+ 0x8f60755100000000, 0x37a478f500000000, 0xa43fb18a00000000,
+ 0x1193eb0a00000000, 0x8208227500000000, 0x201c819900000000,
+ 0xb38748e600000000, 0x062b126600000000, 0x95b0db1900000000,
+ 0x2d74d6bd00000000, 0xbeef1fc200000000, 0x0b43454200000000,
+ 0x98d88c3d00000000, 0x0e6c724000000000, 0x9df7bb3f00000000,
+ 0x285be1bf00000000, 0xbbc028c000000000, 0x0304256400000000,
+ 0x909fec1b00000000, 0x2533b69b00000000, 0xb6a87fe400000000,
+ 0x14bcdc0800000000, 0x8727157700000000, 0x328b4ff700000000,
+ 0xa110868800000000, 0x19d48b2c00000000, 0x8a4f425300000000,
+ 0x3fe318d300000000, 0xac78d1ac00000000, 0x2614cb5100000000,
+ 0xb58f022e00000000, 0x002358ae00000000, 0x93b891d100000000,
+ 0x2b7c9c7500000000, 0xb8e7550a00000000, 0x0d4b0f8a00000000,
+ 0x9ed0c6f500000000, 0x3cc4651900000000, 0xaf5fac6600000000,
+ 0x1af3f6e600000000, 0x89683f9900000000, 0x31ac323d00000000,
+ 0xa237fb4200000000, 0x179ba1c200000000, 0x840068bd00000000,
+ 0x12b496c000000000, 0x812f5fbf00000000, 0x3483053f00000000,
+ 0xa718cc4000000000, 0x1fdcc1e400000000, 0x8c47089b00000000,
+ 0x39eb521b00000000, 0xaa709b6400000000, 0x0864388800000000,
+ 0x9bfff1f700000000, 0x2e53ab7700000000, 0xbdc8620800000000,
+ 0x050c6fac00000000, 0x9697a6d300000000, 0x233bfc5300000000,
+ 0xb0a0352c00000000, 0x0f5201a800000000, 0x9cc9c8d700000000,
+ 0x2965925700000000, 0xbafe5b2800000000, 0x023a568c00000000,
+ 0x91a19ff300000000, 0x240dc57300000000, 0xb7960c0c00000000,
+ 0x1582afe000000000, 0x8619669f00000000, 0x33b53c1f00000000,
+ 0xa02ef56000000000, 0x18eaf8c400000000, 0x8b7131bb00000000,
+ 0x3edd6b3b00000000, 0xad46a24400000000, 0x3bf25c3900000000,
+ 0xa869954600000000, 0x1dc5cfc600000000, 0x8e5e06b900000000,
+ 0x369a0b1d00000000, 0xa501c26200000000, 0x10ad98e200000000,
+ 0x8336519d00000000, 0x2122f27100000000, 0xb2b93b0e00000000,
+ 0x0715618e00000000, 0x948ea8f100000000, 0x2c4aa55500000000,
+ 0xbfd16c2a00000000, 0x0a7d36aa00000000, 0x99e6ffd500000000,
+ 0x359e2e7900000000, 0xa605e70600000000, 0x13a9bd8600000000,
+ 0x803274f900000000, 0x38f6795d00000000, 0xab6db02200000000,
+ 0x1ec1eaa200000000, 0x8d5a23dd00000000, 0x2f4e803100000000,
+ 0xbcd5494e00000000, 0x097913ce00000000, 0x9ae2dab100000000,
+ 0x2226d71500000000, 0xb1bd1e6a00000000, 0x041144ea00000000,
+ 0x978a8d9500000000, 0x013e73e800000000, 0x92a5ba9700000000,
+ 0x2709e01700000000, 0xb492296800000000, 0x0c5624cc00000000,
+ 0x9fcdedb300000000, 0x2a61b73300000000, 0xb9fa7e4c00000000,
+ 0x1beedda000000000, 0x887514df00000000, 0x3dd94e5f00000000,
+ 0xae42872000000000, 0x16868a8400000000, 0x851d43fb00000000,
+ 0x30b1197b00000000, 0xa32ad00400000000, 0x1cd8e48000000000,
+ 0x8f432dff00000000, 0x3aef777f00000000, 0xa974be0000000000,
+ 0x11b0b3a400000000, 0x822b7adb00000000, 0x3787205b00000000,
+ 0xa41ce92400000000, 0x06084ac800000000, 0x959383b700000000,
+ 0x203fd93700000000, 0xb3a4104800000000, 0x0b601dec00000000,
+ 0x98fbd49300000000, 0x2d578e1300000000, 0xbecc476c00000000,
+ 0x2878b91100000000, 0xbbe3706e00000000, 0x0e4f2aee00000000,
+ 0x9dd4e39100000000, 0x2510ee3500000000, 0xb68b274a00000000,
+ 0x03277dca00000000, 0x90bcb4b500000000, 0x32a8175900000000,
+ 0xa133de2600000000, 0x149f84a600000000, 0x87044dd900000000,
+ 0x3fc0407d00000000, 0xac5b890200000000, 0x19f7d38200000000,
+ 0x8a6c1afd00000000},
+ {0x0000000000000000, 0x650b796900000000, 0xca16f2d200000000,
+ 0xaf1d8bbb00000000, 0xd52b957e00000000, 0xb020ec1700000000,
+ 0x1f3d67ac00000000, 0x7a361ec500000000, 0xaa572afd00000000,
+ 0xcf5c539400000000, 0x6041d82f00000000, 0x054aa14600000000,
+ 0x7f7cbf8300000000, 0x1a77c6ea00000000, 0xb56a4d5100000000,
+ 0xd061343800000000, 0x15a9252100000000, 0x70a25c4800000000,
+ 0xdfbfd7f300000000, 0xbab4ae9a00000000, 0xc082b05f00000000,
+ 0xa589c93600000000, 0x0a94428d00000000, 0x6f9f3be400000000,
+ 0xbffe0fdc00000000, 0xdaf576b500000000, 0x75e8fd0e00000000,
+ 0x10e3846700000000, 0x6ad59aa200000000, 0x0fdee3cb00000000,
+ 0xa0c3687000000000, 0xc5c8111900000000, 0x2a524b4200000000,
+ 0x4f59322b00000000, 0xe044b99000000000, 0x854fc0f900000000,
+ 0xff79de3c00000000, 0x9a72a75500000000, 0x356f2cee00000000,
+ 0x5064558700000000, 0x800561bf00000000, 0xe50e18d600000000,
+ 0x4a13936d00000000, 0x2f18ea0400000000, 0x552ef4c100000000,
+ 0x30258da800000000, 0x9f38061300000000, 0xfa337f7a00000000,
+ 0x3ffb6e6300000000, 0x5af0170a00000000, 0xf5ed9cb100000000,
+ 0x90e6e5d800000000, 0xead0fb1d00000000, 0x8fdb827400000000,
+ 0x20c609cf00000000, 0x45cd70a600000000, 0x95ac449e00000000,
+ 0xf0a73df700000000, 0x5fbab64c00000000, 0x3ab1cf2500000000,
+ 0x4087d1e000000000, 0x258ca88900000000, 0x8a91233200000000,
+ 0xef9a5a5b00000000, 0x54a4968400000000, 0x31afefed00000000,
+ 0x9eb2645600000000, 0xfbb91d3f00000000, 0x818f03fa00000000,
+ 0xe4847a9300000000, 0x4b99f12800000000, 0x2e92884100000000,
+ 0xfef3bc7900000000, 0x9bf8c51000000000, 0x34e54eab00000000,
+ 0x51ee37c200000000, 0x2bd8290700000000, 0x4ed3506e00000000,
+ 0xe1cedbd500000000, 0x84c5a2bc00000000, 0x410db3a500000000,
+ 0x2406cacc00000000, 0x8b1b417700000000, 0xee10381e00000000,
+ 0x942626db00000000, 0xf12d5fb200000000, 0x5e30d40900000000,
+ 0x3b3bad6000000000, 0xeb5a995800000000, 0x8e51e03100000000,
+ 0x214c6b8a00000000, 0x444712e300000000, 0x3e710c2600000000,
+ 0x5b7a754f00000000, 0xf467fef400000000, 0x916c879d00000000,
+ 0x7ef6ddc600000000, 0x1bfda4af00000000, 0xb4e02f1400000000,
+ 0xd1eb567d00000000, 0xabdd48b800000000, 0xced631d100000000,
+ 0x61cbba6a00000000, 0x04c0c30300000000, 0xd4a1f73b00000000,
+ 0xb1aa8e5200000000, 0x1eb705e900000000, 0x7bbc7c8000000000,
+ 0x018a624500000000, 0x64811b2c00000000, 0xcb9c909700000000,
+ 0xae97e9fe00000000, 0x6b5ff8e700000000, 0x0e54818e00000000,
+ 0xa1490a3500000000, 0xc442735c00000000, 0xbe746d9900000000,
+ 0xdb7f14f000000000, 0x74629f4b00000000, 0x1169e62200000000,
+ 0xc108d21a00000000, 0xa403ab7300000000, 0x0b1e20c800000000,
+ 0x6e1559a100000000, 0x1423476400000000, 0x71283e0d00000000,
+ 0xde35b5b600000000, 0xbb3eccdf00000000, 0xe94e5cd200000000,
+ 0x8c4525bb00000000, 0x2358ae0000000000, 0x4653d76900000000,
+ 0x3c65c9ac00000000, 0x596eb0c500000000, 0xf6733b7e00000000,
+ 0x9378421700000000, 0x4319762f00000000, 0x26120f4600000000,
+ 0x890f84fd00000000, 0xec04fd9400000000, 0x9632e35100000000,
+ 0xf3399a3800000000, 0x5c24118300000000, 0x392f68ea00000000,
+ 0xfce779f300000000, 0x99ec009a00000000, 0x36f18b2100000000,
+ 0x53faf24800000000, 0x29ccec8d00000000, 0x4cc795e400000000,
+ 0xe3da1e5f00000000, 0x86d1673600000000, 0x56b0530e00000000,
+ 0x33bb2a6700000000, 0x9ca6a1dc00000000, 0xf9add8b500000000,
+ 0x839bc67000000000, 0xe690bf1900000000, 0x498d34a200000000,
+ 0x2c864dcb00000000, 0xc31c179000000000, 0xa6176ef900000000,
+ 0x090ae54200000000, 0x6c019c2b00000000, 0x163782ee00000000,
+ 0x733cfb8700000000, 0xdc21703c00000000, 0xb92a095500000000,
+ 0x694b3d6d00000000, 0x0c40440400000000, 0xa35dcfbf00000000,
+ 0xc656b6d600000000, 0xbc60a81300000000, 0xd96bd17a00000000,
+ 0x76765ac100000000, 0x137d23a800000000, 0xd6b532b100000000,
+ 0xb3be4bd800000000, 0x1ca3c06300000000, 0x79a8b90a00000000,
+ 0x039ea7cf00000000, 0x6695dea600000000, 0xc988551d00000000,
+ 0xac832c7400000000, 0x7ce2184c00000000, 0x19e9612500000000,
+ 0xb6f4ea9e00000000, 0xd3ff93f700000000, 0xa9c98d3200000000,
+ 0xccc2f45b00000000, 0x63df7fe000000000, 0x06d4068900000000,
+ 0xbdeaca5600000000, 0xd8e1b33f00000000, 0x77fc388400000000,
+ 0x12f741ed00000000, 0x68c15f2800000000, 0x0dca264100000000,
+ 0xa2d7adfa00000000, 0xc7dcd49300000000, 0x17bde0ab00000000,
+ 0x72b699c200000000, 0xddab127900000000, 0xb8a06b1000000000,
+ 0xc29675d500000000, 0xa79d0cbc00000000, 0x0880870700000000,
+ 0x6d8bfe6e00000000, 0xa843ef7700000000, 0xcd48961e00000000,
+ 0x62551da500000000, 0x075e64cc00000000, 0x7d687a0900000000,
+ 0x1863036000000000, 0xb77e88db00000000, 0xd275f1b200000000,
+ 0x0214c58a00000000, 0x671fbce300000000, 0xc802375800000000,
+ 0xad094e3100000000, 0xd73f50f400000000, 0xb234299d00000000,
+ 0x1d29a22600000000, 0x7822db4f00000000, 0x97b8811400000000,
+ 0xf2b3f87d00000000, 0x5dae73c600000000, 0x38a50aaf00000000,
+ 0x4293146a00000000, 0x27986d0300000000, 0x8885e6b800000000,
+ 0xed8e9fd100000000, 0x3defabe900000000, 0x58e4d28000000000,
+ 0xf7f9593b00000000, 0x92f2205200000000, 0xe8c43e9700000000,
+ 0x8dcf47fe00000000, 0x22d2cc4500000000, 0x47d9b52c00000000,
+ 0x8211a43500000000, 0xe71add5c00000000, 0x480756e700000000,
+ 0x2d0c2f8e00000000, 0x573a314b00000000, 0x3231482200000000,
+ 0x9d2cc39900000000, 0xf827baf000000000, 0x28468ec800000000,
+ 0x4d4df7a100000000, 0xe2507c1a00000000, 0x875b057300000000,
+ 0xfd6d1bb600000000, 0x986662df00000000, 0x377be96400000000,
+ 0x5270900d00000000},
+ {0x0000000000000000, 0xdcecb13d00000000, 0xb8d9637b00000000,
+ 0x6435d24600000000, 0x70b3c7f600000000, 0xac5f76cb00000000,
+ 0xc86aa48d00000000, 0x148615b000000000, 0xa160fe3600000000,
+ 0x7d8c4f0b00000000, 0x19b99d4d00000000, 0xc5552c7000000000,
+ 0xd1d339c000000000, 0x0d3f88fd00000000, 0x690a5abb00000000,
+ 0xb5e6eb8600000000, 0x42c1fc6d00000000, 0x9e2d4d5000000000,
+ 0xfa189f1600000000, 0x26f42e2b00000000, 0x32723b9b00000000,
+ 0xee9e8aa600000000, 0x8aab58e000000000, 0x5647e9dd00000000,
+ 0xe3a1025b00000000, 0x3f4db36600000000, 0x5b78612000000000,
+ 0x8794d01d00000000, 0x9312c5ad00000000, 0x4ffe749000000000,
+ 0x2bcba6d600000000, 0xf72717eb00000000, 0x8482f9db00000000,
+ 0x586e48e600000000, 0x3c5b9aa000000000, 0xe0b72b9d00000000,
+ 0xf4313e2d00000000, 0x28dd8f1000000000, 0x4ce85d5600000000,
+ 0x9004ec6b00000000, 0x25e207ed00000000, 0xf90eb6d000000000,
+ 0x9d3b649600000000, 0x41d7d5ab00000000, 0x5551c01b00000000,
+ 0x89bd712600000000, 0xed88a36000000000, 0x3164125d00000000,
+ 0xc64305b600000000, 0x1aafb48b00000000, 0x7e9a66cd00000000,
+ 0xa276d7f000000000, 0xb6f0c24000000000, 0x6a1c737d00000000,
+ 0x0e29a13b00000000, 0xd2c5100600000000, 0x6723fb8000000000,
+ 0xbbcf4abd00000000, 0xdffa98fb00000000, 0x031629c600000000,
+ 0x17903c7600000000, 0xcb7c8d4b00000000, 0xaf495f0d00000000,
+ 0x73a5ee3000000000, 0x4903826c00000000, 0x95ef335100000000,
+ 0xf1dae11700000000, 0x2d36502a00000000, 0x39b0459a00000000,
+ 0xe55cf4a700000000, 0x816926e100000000, 0x5d8597dc00000000,
+ 0xe8637c5a00000000, 0x348fcd6700000000, 0x50ba1f2100000000,
+ 0x8c56ae1c00000000, 0x98d0bbac00000000, 0x443c0a9100000000,
+ 0x2009d8d700000000, 0xfce569ea00000000, 0x0bc27e0100000000,
+ 0xd72ecf3c00000000, 0xb31b1d7a00000000, 0x6ff7ac4700000000,
+ 0x7b71b9f700000000, 0xa79d08ca00000000, 0xc3a8da8c00000000,
+ 0x1f446bb100000000, 0xaaa2803700000000, 0x764e310a00000000,
+ 0x127be34c00000000, 0xce97527100000000, 0xda1147c100000000,
+ 0x06fdf6fc00000000, 0x62c824ba00000000, 0xbe24958700000000,
+ 0xcd817bb700000000, 0x116dca8a00000000, 0x755818cc00000000,
+ 0xa9b4a9f100000000, 0xbd32bc4100000000, 0x61de0d7c00000000,
+ 0x05ebdf3a00000000, 0xd9076e0700000000, 0x6ce1858100000000,
+ 0xb00d34bc00000000, 0xd438e6fa00000000, 0x08d457c700000000,
+ 0x1c52427700000000, 0xc0bef34a00000000, 0xa48b210c00000000,
+ 0x7867903100000000, 0x8f4087da00000000, 0x53ac36e700000000,
+ 0x3799e4a100000000, 0xeb75559c00000000, 0xfff3402c00000000,
+ 0x231ff11100000000, 0x472a235700000000, 0x9bc6926a00000000,
+ 0x2e2079ec00000000, 0xf2ccc8d100000000, 0x96f91a9700000000,
+ 0x4a15abaa00000000, 0x5e93be1a00000000, 0x827f0f2700000000,
+ 0xe64add6100000000, 0x3aa66c5c00000000, 0x920604d900000000,
+ 0x4eeab5e400000000, 0x2adf67a200000000, 0xf633d69f00000000,
+ 0xe2b5c32f00000000, 0x3e59721200000000, 0x5a6ca05400000000,
+ 0x8680116900000000, 0x3366faef00000000, 0xef8a4bd200000000,
+ 0x8bbf999400000000, 0x575328a900000000, 0x43d53d1900000000,
+ 0x9f398c2400000000, 0xfb0c5e6200000000, 0x27e0ef5f00000000,
+ 0xd0c7f8b400000000, 0x0c2b498900000000, 0x681e9bcf00000000,
+ 0xb4f22af200000000, 0xa0743f4200000000, 0x7c988e7f00000000,
+ 0x18ad5c3900000000, 0xc441ed0400000000, 0x71a7068200000000,
+ 0xad4bb7bf00000000, 0xc97e65f900000000, 0x1592d4c400000000,
+ 0x0114c17400000000, 0xddf8704900000000, 0xb9cda20f00000000,
+ 0x6521133200000000, 0x1684fd0200000000, 0xca684c3f00000000,
+ 0xae5d9e7900000000, 0x72b12f4400000000, 0x66373af400000000,
+ 0xbadb8bc900000000, 0xdeee598f00000000, 0x0202e8b200000000,
+ 0xb7e4033400000000, 0x6b08b20900000000, 0x0f3d604f00000000,
+ 0xd3d1d17200000000, 0xc757c4c200000000, 0x1bbb75ff00000000,
+ 0x7f8ea7b900000000, 0xa362168400000000, 0x5445016f00000000,
+ 0x88a9b05200000000, 0xec9c621400000000, 0x3070d32900000000,
+ 0x24f6c69900000000, 0xf81a77a400000000, 0x9c2fa5e200000000,
+ 0x40c314df00000000, 0xf525ff5900000000, 0x29c94e6400000000,
+ 0x4dfc9c2200000000, 0x91102d1f00000000, 0x859638af00000000,
+ 0x597a899200000000, 0x3d4f5bd400000000, 0xe1a3eae900000000,
+ 0xdb0586b500000000, 0x07e9378800000000, 0x63dce5ce00000000,
+ 0xbf3054f300000000, 0xabb6414300000000, 0x775af07e00000000,
+ 0x136f223800000000, 0xcf83930500000000, 0x7a65788300000000,
+ 0xa689c9be00000000, 0xc2bc1bf800000000, 0x1e50aac500000000,
+ 0x0ad6bf7500000000, 0xd63a0e4800000000, 0xb20fdc0e00000000,
+ 0x6ee36d3300000000, 0x99c47ad800000000, 0x4528cbe500000000,
+ 0x211d19a300000000, 0xfdf1a89e00000000, 0xe977bd2e00000000,
+ 0x359b0c1300000000, 0x51aede5500000000, 0x8d426f6800000000,
+ 0x38a484ee00000000, 0xe44835d300000000, 0x807de79500000000,
+ 0x5c9156a800000000, 0x4817431800000000, 0x94fbf22500000000,
+ 0xf0ce206300000000, 0x2c22915e00000000, 0x5f877f6e00000000,
+ 0x836bce5300000000, 0xe75e1c1500000000, 0x3bb2ad2800000000,
+ 0x2f34b89800000000, 0xf3d809a500000000, 0x97eddbe300000000,
+ 0x4b016ade00000000, 0xfee7815800000000, 0x220b306500000000,
+ 0x463ee22300000000, 0x9ad2531e00000000, 0x8e5446ae00000000,
+ 0x52b8f79300000000, 0x368d25d500000000, 0xea6194e800000000,
+ 0x1d46830300000000, 0xc1aa323e00000000, 0xa59fe07800000000,
+ 0x7973514500000000, 0x6df544f500000000, 0xb119f5c800000000,
+ 0xd52c278e00000000, 0x09c096b300000000, 0xbc267d3500000000,
+ 0x60cacc0800000000, 0x04ff1e4e00000000, 0xd813af7300000000,
+ 0xcc95bac300000000, 0x10790bfe00000000, 0x744cd9b800000000,
+ 0xa8a0688500000000}};
+
+#else /* W == 4 */
+
+local const z_crc_t FAR crc_braid_table[][256] = {
+ {0x00000000, 0x81256527, 0xd93bcc0f, 0x581ea928, 0x69069e5f,
+ 0xe823fb78, 0xb03d5250, 0x31183777, 0xd20d3cbe, 0x53285999,
+ 0x0b36f0b1, 0x8a139596, 0xbb0ba2e1, 0x3a2ec7c6, 0x62306eee,
+ 0xe3150bc9, 0x7f6b7f3d, 0xfe4e1a1a, 0xa650b332, 0x2775d615,
+ 0x166de162, 0x97488445, 0xcf562d6d, 0x4e73484a, 0xad664383,
+ 0x2c4326a4, 0x745d8f8c, 0xf578eaab, 0xc460dddc, 0x4545b8fb,
+ 0x1d5b11d3, 0x9c7e74f4, 0xfed6fe7a, 0x7ff39b5d, 0x27ed3275,
+ 0xa6c85752, 0x97d06025, 0x16f50502, 0x4eebac2a, 0xcfcec90d,
+ 0x2cdbc2c4, 0xadfea7e3, 0xf5e00ecb, 0x74c56bec, 0x45dd5c9b,
+ 0xc4f839bc, 0x9ce69094, 0x1dc3f5b3, 0x81bd8147, 0x0098e460,
+ 0x58864d48, 0xd9a3286f, 0xe8bb1f18, 0x699e7a3f, 0x3180d317,
+ 0xb0a5b630, 0x53b0bdf9, 0xd295d8de, 0x8a8b71f6, 0x0bae14d1,
+ 0x3ab623a6, 0xbb934681, 0xe38defa9, 0x62a88a8e, 0x26dcfab5,
+ 0xa7f99f92, 0xffe736ba, 0x7ec2539d, 0x4fda64ea, 0xceff01cd,
+ 0x96e1a8e5, 0x17c4cdc2, 0xf4d1c60b, 0x75f4a32c, 0x2dea0a04,
+ 0xaccf6f23, 0x9dd75854, 0x1cf23d73, 0x44ec945b, 0xc5c9f17c,
+ 0x59b78588, 0xd892e0af, 0x808c4987, 0x01a92ca0, 0x30b11bd7,
+ 0xb1947ef0, 0xe98ad7d8, 0x68afb2ff, 0x8bbab936, 0x0a9fdc11,
+ 0x52817539, 0xd3a4101e, 0xe2bc2769, 0x6399424e, 0x3b87eb66,
+ 0xbaa28e41, 0xd80a04cf, 0x592f61e8, 0x0131c8c0, 0x8014ade7,
+ 0xb10c9a90, 0x3029ffb7, 0x6837569f, 0xe91233b8, 0x0a073871,
+ 0x8b225d56, 0xd33cf47e, 0x52199159, 0x6301a62e, 0xe224c309,
+ 0xba3a6a21, 0x3b1f0f06, 0xa7617bf2, 0x26441ed5, 0x7e5ab7fd,
+ 0xff7fd2da, 0xce67e5ad, 0x4f42808a, 0x175c29a2, 0x96794c85,
+ 0x756c474c, 0xf449226b, 0xac578b43, 0x2d72ee64, 0x1c6ad913,
+ 0x9d4fbc34, 0xc551151c, 0x4474703b, 0x4db9f56a, 0xcc9c904d,
+ 0x94823965, 0x15a75c42, 0x24bf6b35, 0xa59a0e12, 0xfd84a73a,
+ 0x7ca1c21d, 0x9fb4c9d4, 0x1e91acf3, 0x468f05db, 0xc7aa60fc,
+ 0xf6b2578b, 0x779732ac, 0x2f899b84, 0xaeacfea3, 0x32d28a57,
+ 0xb3f7ef70, 0xebe94658, 0x6acc237f, 0x5bd41408, 0xdaf1712f,
+ 0x82efd807, 0x03cabd20, 0xe0dfb6e9, 0x61fad3ce, 0x39e47ae6,
+ 0xb8c11fc1, 0x89d928b6, 0x08fc4d91, 0x50e2e4b9, 0xd1c7819e,
+ 0xb36f0b10, 0x324a6e37, 0x6a54c71f, 0xeb71a238, 0xda69954f,
+ 0x5b4cf068, 0x03525940, 0x82773c67, 0x616237ae, 0xe0475289,
+ 0xb859fba1, 0x397c9e86, 0x0864a9f1, 0x8941ccd6, 0xd15f65fe,
+ 0x507a00d9, 0xcc04742d, 0x4d21110a, 0x153fb822, 0x941add05,
+ 0xa502ea72, 0x24278f55, 0x7c39267d, 0xfd1c435a, 0x1e094893,
+ 0x9f2c2db4, 0xc732849c, 0x4617e1bb, 0x770fd6cc, 0xf62ab3eb,
+ 0xae341ac3, 0x2f117fe4, 0x6b650fdf, 0xea406af8, 0xb25ec3d0,
+ 0x337ba6f7, 0x02639180, 0x8346f4a7, 0xdb585d8f, 0x5a7d38a8,
+ 0xb9683361, 0x384d5646, 0x6053ff6e, 0xe1769a49, 0xd06ead3e,
+ 0x514bc819, 0x09556131, 0x88700416, 0x140e70e2, 0x952b15c5,
+ 0xcd35bced, 0x4c10d9ca, 0x7d08eebd, 0xfc2d8b9a, 0xa43322b2,
+ 0x25164795, 0xc6034c5c, 0x4726297b, 0x1f388053, 0x9e1de574,
+ 0xaf05d203, 0x2e20b724, 0x763e1e0c, 0xf71b7b2b, 0x95b3f1a5,
+ 0x14969482, 0x4c883daa, 0xcdad588d, 0xfcb56ffa, 0x7d900add,
+ 0x258ea3f5, 0xa4abc6d2, 0x47becd1b, 0xc69ba83c, 0x9e850114,
+ 0x1fa06433, 0x2eb85344, 0xaf9d3663, 0xf7839f4b, 0x76a6fa6c,
+ 0xead88e98, 0x6bfdebbf, 0x33e34297, 0xb2c627b0, 0x83de10c7,
+ 0x02fb75e0, 0x5ae5dcc8, 0xdbc0b9ef, 0x38d5b226, 0xb9f0d701,
+ 0xe1ee7e29, 0x60cb1b0e, 0x51d32c79, 0xd0f6495e, 0x88e8e076,
+ 0x09cd8551},
+ {0x00000000, 0x9b73ead4, 0xed96d3e9, 0x76e5393d, 0x005ca193,
+ 0x9b2f4b47, 0xedca727a, 0x76b998ae, 0x00b94326, 0x9bcaa9f2,
+ 0xed2f90cf, 0x765c7a1b, 0x00e5e2b5, 0x9b960861, 0xed73315c,
+ 0x7600db88, 0x0172864c, 0x9a016c98, 0xece455a5, 0x7797bf71,
+ 0x012e27df, 0x9a5dcd0b, 0xecb8f436, 0x77cb1ee2, 0x01cbc56a,
+ 0x9ab82fbe, 0xec5d1683, 0x772efc57, 0x019764f9, 0x9ae48e2d,
+ 0xec01b710, 0x77725dc4, 0x02e50c98, 0x9996e64c, 0xef73df71,
+ 0x740035a5, 0x02b9ad0b, 0x99ca47df, 0xef2f7ee2, 0x745c9436,
+ 0x025c4fbe, 0x992fa56a, 0xefca9c57, 0x74b97683, 0x0200ee2d,
+ 0x997304f9, 0xef963dc4, 0x74e5d710, 0x03978ad4, 0x98e46000,
+ 0xee01593d, 0x7572b3e9, 0x03cb2b47, 0x98b8c193, 0xee5df8ae,
+ 0x752e127a, 0x032ec9f2, 0x985d2326, 0xeeb81a1b, 0x75cbf0cf,
+ 0x03726861, 0x980182b5, 0xeee4bb88, 0x7597515c, 0x05ca1930,
+ 0x9eb9f3e4, 0xe85ccad9, 0x732f200d, 0x0596b8a3, 0x9ee55277,
+ 0xe8006b4a, 0x7373819e, 0x05735a16, 0x9e00b0c2, 0xe8e589ff,
+ 0x7396632b, 0x052ffb85, 0x9e5c1151, 0xe8b9286c, 0x73cac2b8,
+ 0x04b89f7c, 0x9fcb75a8, 0xe92e4c95, 0x725da641, 0x04e43eef,
+ 0x9f97d43b, 0xe972ed06, 0x720107d2, 0x0401dc5a, 0x9f72368e,
+ 0xe9970fb3, 0x72e4e567, 0x045d7dc9, 0x9f2e971d, 0xe9cbae20,
+ 0x72b844f4, 0x072f15a8, 0x9c5cff7c, 0xeab9c641, 0x71ca2c95,
+ 0x0773b43b, 0x9c005eef, 0xeae567d2, 0x71968d06, 0x0796568e,
+ 0x9ce5bc5a, 0xea008567, 0x71736fb3, 0x07caf71d, 0x9cb91dc9,
+ 0xea5c24f4, 0x712fce20, 0x065d93e4, 0x9d2e7930, 0xebcb400d,
+ 0x70b8aad9, 0x06013277, 0x9d72d8a3, 0xeb97e19e, 0x70e40b4a,
+ 0x06e4d0c2, 0x9d973a16, 0xeb72032b, 0x7001e9ff, 0x06b87151,
+ 0x9dcb9b85, 0xeb2ea2b8, 0x705d486c, 0x0b943260, 0x90e7d8b4,
+ 0xe602e189, 0x7d710b5d, 0x0bc893f3, 0x90bb7927, 0xe65e401a,
+ 0x7d2daace, 0x0b2d7146, 0x905e9b92, 0xe6bba2af, 0x7dc8487b,
+ 0x0b71d0d5, 0x90023a01, 0xe6e7033c, 0x7d94e9e8, 0x0ae6b42c,
+ 0x91955ef8, 0xe77067c5, 0x7c038d11, 0x0aba15bf, 0x91c9ff6b,
+ 0xe72cc656, 0x7c5f2c82, 0x0a5ff70a, 0x912c1dde, 0xe7c924e3,
+ 0x7cbace37, 0x0a035699, 0x9170bc4d, 0xe7958570, 0x7ce66fa4,
+ 0x09713ef8, 0x9202d42c, 0xe4e7ed11, 0x7f9407c5, 0x092d9f6b,
+ 0x925e75bf, 0xe4bb4c82, 0x7fc8a656, 0x09c87dde, 0x92bb970a,
+ 0xe45eae37, 0x7f2d44e3, 0x0994dc4d, 0x92e73699, 0xe4020fa4,
+ 0x7f71e570, 0x0803b8b4, 0x93705260, 0xe5956b5d, 0x7ee68189,
+ 0x085f1927, 0x932cf3f3, 0xe5c9cace, 0x7eba201a, 0x08bafb92,
+ 0x93c91146, 0xe52c287b, 0x7e5fc2af, 0x08e65a01, 0x9395b0d5,
+ 0xe57089e8, 0x7e03633c, 0x0e5e2b50, 0x952dc184, 0xe3c8f8b9,
+ 0x78bb126d, 0x0e028ac3, 0x95716017, 0xe394592a, 0x78e7b3fe,
+ 0x0ee76876, 0x959482a2, 0xe371bb9f, 0x7802514b, 0x0ebbc9e5,
+ 0x95c82331, 0xe32d1a0c, 0x785ef0d8, 0x0f2cad1c, 0x945f47c8,
+ 0xe2ba7ef5, 0x79c99421, 0x0f700c8f, 0x9403e65b, 0xe2e6df66,
+ 0x799535b2, 0x0f95ee3a, 0x94e604ee, 0xe2033dd3, 0x7970d707,
+ 0x0fc94fa9, 0x94baa57d, 0xe25f9c40, 0x792c7694, 0x0cbb27c8,
+ 0x97c8cd1c, 0xe12df421, 0x7a5e1ef5, 0x0ce7865b, 0x97946c8f,
+ 0xe17155b2, 0x7a02bf66, 0x0c0264ee, 0x97718e3a, 0xe194b707,
+ 0x7ae75dd3, 0x0c5ec57d, 0x972d2fa9, 0xe1c81694, 0x7abbfc40,
+ 0x0dc9a184, 0x96ba4b50, 0xe05f726d, 0x7b2c98b9, 0x0d950017,
+ 0x96e6eac3, 0xe003d3fe, 0x7b70392a, 0x0d70e2a2, 0x96030876,
+ 0xe0e6314b, 0x7b95db9f, 0x0d2c4331, 0x965fa9e5, 0xe0ba90d8,
+ 0x7bc97a0c},
+ {0x00000000, 0x172864c0, 0x2e50c980, 0x3978ad40, 0x5ca19300,
+ 0x4b89f7c0, 0x72f15a80, 0x65d93e40, 0xb9432600, 0xae6b42c0,
+ 0x9713ef80, 0x803b8b40, 0xe5e2b500, 0xf2cad1c0, 0xcbb27c80,
+ 0xdc9a1840, 0xa9f74a41, 0xbedf2e81, 0x87a783c1, 0x908fe701,
+ 0xf556d941, 0xe27ebd81, 0xdb0610c1, 0xcc2e7401, 0x10b46c41,
+ 0x079c0881, 0x3ee4a5c1, 0x29ccc101, 0x4c15ff41, 0x5b3d9b81,
+ 0x624536c1, 0x756d5201, 0x889f92c3, 0x9fb7f603, 0xa6cf5b43,
+ 0xb1e73f83, 0xd43e01c3, 0xc3166503, 0xfa6ec843, 0xed46ac83,
+ 0x31dcb4c3, 0x26f4d003, 0x1f8c7d43, 0x08a41983, 0x6d7d27c3,
+ 0x7a554303, 0x432dee43, 0x54058a83, 0x2168d882, 0x3640bc42,
+ 0x0f381102, 0x181075c2, 0x7dc94b82, 0x6ae12f42, 0x53998202,
+ 0x44b1e6c2, 0x982bfe82, 0x8f039a42, 0xb67b3702, 0xa15353c2,
+ 0xc48a6d82, 0xd3a20942, 0xeadaa402, 0xfdf2c0c2, 0xca4e23c7,
+ 0xdd664707, 0xe41eea47, 0xf3368e87, 0x96efb0c7, 0x81c7d407,
+ 0xb8bf7947, 0xaf971d87, 0x730d05c7, 0x64256107, 0x5d5dcc47,
+ 0x4a75a887, 0x2fac96c7, 0x3884f207, 0x01fc5f47, 0x16d43b87,
+ 0x63b96986, 0x74910d46, 0x4de9a006, 0x5ac1c4c6, 0x3f18fa86,
+ 0x28309e46, 0x11483306, 0x066057c6, 0xdafa4f86, 0xcdd22b46,
+ 0xf4aa8606, 0xe382e2c6, 0x865bdc86, 0x9173b846, 0xa80b1506,
+ 0xbf2371c6, 0x42d1b104, 0x55f9d5c4, 0x6c817884, 0x7ba91c44,
+ 0x1e702204, 0x095846c4, 0x3020eb84, 0x27088f44, 0xfb929704,
+ 0xecbaf3c4, 0xd5c25e84, 0xc2ea3a44, 0xa7330404, 0xb01b60c4,
+ 0x8963cd84, 0x9e4ba944, 0xeb26fb45, 0xfc0e9f85, 0xc57632c5,
+ 0xd25e5605, 0xb7876845, 0xa0af0c85, 0x99d7a1c5, 0x8effc505,
+ 0x5265dd45, 0x454db985, 0x7c3514c5, 0x6b1d7005, 0x0ec44e45,
+ 0x19ec2a85, 0x209487c5, 0x37bce305, 0x4fed41cf, 0x58c5250f,
+ 0x61bd884f, 0x7695ec8f, 0x134cd2cf, 0x0464b60f, 0x3d1c1b4f,
+ 0x2a347f8f, 0xf6ae67cf, 0xe186030f, 0xd8feae4f, 0xcfd6ca8f,
+ 0xaa0ff4cf, 0xbd27900f, 0x845f3d4f, 0x9377598f, 0xe61a0b8e,
+ 0xf1326f4e, 0xc84ac20e, 0xdf62a6ce, 0xbabb988e, 0xad93fc4e,
+ 0x94eb510e, 0x83c335ce, 0x5f592d8e, 0x4871494e, 0x7109e40e,
+ 0x662180ce, 0x03f8be8e, 0x14d0da4e, 0x2da8770e, 0x3a8013ce,
+ 0xc772d30c, 0xd05ab7cc, 0xe9221a8c, 0xfe0a7e4c, 0x9bd3400c,
+ 0x8cfb24cc, 0xb583898c, 0xa2abed4c, 0x7e31f50c, 0x691991cc,
+ 0x50613c8c, 0x4749584c, 0x2290660c, 0x35b802cc, 0x0cc0af8c,
+ 0x1be8cb4c, 0x6e85994d, 0x79adfd8d, 0x40d550cd, 0x57fd340d,
+ 0x32240a4d, 0x250c6e8d, 0x1c74c3cd, 0x0b5ca70d, 0xd7c6bf4d,
+ 0xc0eedb8d, 0xf99676cd, 0xeebe120d, 0x8b672c4d, 0x9c4f488d,
+ 0xa537e5cd, 0xb21f810d, 0x85a36208, 0x928b06c8, 0xabf3ab88,
+ 0xbcdbcf48, 0xd902f108, 0xce2a95c8, 0xf7523888, 0xe07a5c48,
+ 0x3ce04408, 0x2bc820c8, 0x12b08d88, 0x0598e948, 0x6041d708,
+ 0x7769b3c8, 0x4e111e88, 0x59397a48, 0x2c542849, 0x3b7c4c89,
+ 0x0204e1c9, 0x152c8509, 0x70f5bb49, 0x67dddf89, 0x5ea572c9,
+ 0x498d1609, 0x95170e49, 0x823f6a89, 0xbb47c7c9, 0xac6fa309,
+ 0xc9b69d49, 0xde9ef989, 0xe7e654c9, 0xf0ce3009, 0x0d3cf0cb,
+ 0x1a14940b, 0x236c394b, 0x34445d8b, 0x519d63cb, 0x46b5070b,
+ 0x7fcdaa4b, 0x68e5ce8b, 0xb47fd6cb, 0xa357b20b, 0x9a2f1f4b,
+ 0x8d077b8b, 0xe8de45cb, 0xfff6210b, 0xc68e8c4b, 0xd1a6e88b,
+ 0xa4cbba8a, 0xb3e3de4a, 0x8a9b730a, 0x9db317ca, 0xf86a298a,
+ 0xef424d4a, 0xd63ae00a, 0xc11284ca, 0x1d889c8a, 0x0aa0f84a,
+ 0x33d8550a, 0x24f031ca, 0x41290f8a, 0x56016b4a, 0x6f79c60a,
+ 0x7851a2ca},
+ {0x00000000, 0x9fda839e, 0xe4c4017d, 0x7b1e82e3, 0x12f904bb,
+ 0x8d238725, 0xf63d05c6, 0x69e78658, 0x25f20976, 0xba288ae8,
+ 0xc136080b, 0x5eec8b95, 0x370b0dcd, 0xa8d18e53, 0xd3cf0cb0,
+ 0x4c158f2e, 0x4be412ec, 0xd43e9172, 0xaf201391, 0x30fa900f,
+ 0x591d1657, 0xc6c795c9, 0xbdd9172a, 0x220394b4, 0x6e161b9a,
+ 0xf1cc9804, 0x8ad21ae7, 0x15089979, 0x7cef1f21, 0xe3359cbf,
+ 0x982b1e5c, 0x07f19dc2, 0x97c825d8, 0x0812a646, 0x730c24a5,
+ 0xecd6a73b, 0x85312163, 0x1aeba2fd, 0x61f5201e, 0xfe2fa380,
+ 0xb23a2cae, 0x2de0af30, 0x56fe2dd3, 0xc924ae4d, 0xa0c32815,
+ 0x3f19ab8b, 0x44072968, 0xdbddaaf6, 0xdc2c3734, 0x43f6b4aa,
+ 0x38e83649, 0xa732b5d7, 0xced5338f, 0x510fb011, 0x2a1132f2,
+ 0xb5cbb16c, 0xf9de3e42, 0x6604bddc, 0x1d1a3f3f, 0x82c0bca1,
+ 0xeb273af9, 0x74fdb967, 0x0fe33b84, 0x9039b81a, 0xf4e14df1,
+ 0x6b3bce6f, 0x10254c8c, 0x8fffcf12, 0xe618494a, 0x79c2cad4,
+ 0x02dc4837, 0x9d06cba9, 0xd1134487, 0x4ec9c719, 0x35d745fa,
+ 0xaa0dc664, 0xc3ea403c, 0x5c30c3a2, 0x272e4141, 0xb8f4c2df,
+ 0xbf055f1d, 0x20dfdc83, 0x5bc15e60, 0xc41bddfe, 0xadfc5ba6,
+ 0x3226d838, 0x49385adb, 0xd6e2d945, 0x9af7566b, 0x052dd5f5,
+ 0x7e335716, 0xe1e9d488, 0x880e52d0, 0x17d4d14e, 0x6cca53ad,
+ 0xf310d033, 0x63296829, 0xfcf3ebb7, 0x87ed6954, 0x1837eaca,
+ 0x71d06c92, 0xee0aef0c, 0x95146def, 0x0aceee71, 0x46db615f,
+ 0xd901e2c1, 0xa21f6022, 0x3dc5e3bc, 0x542265e4, 0xcbf8e67a,
+ 0xb0e66499, 0x2f3ce707, 0x28cd7ac5, 0xb717f95b, 0xcc097bb8,
+ 0x53d3f826, 0x3a347e7e, 0xa5eefde0, 0xdef07f03, 0x412afc9d,
+ 0x0d3f73b3, 0x92e5f02d, 0xe9fb72ce, 0x7621f150, 0x1fc67708,
+ 0x801cf496, 0xfb027675, 0x64d8f5eb, 0x32b39da3, 0xad691e3d,
+ 0xd6779cde, 0x49ad1f40, 0x204a9918, 0xbf901a86, 0xc48e9865,
+ 0x5b541bfb, 0x174194d5, 0x889b174b, 0xf38595a8, 0x6c5f1636,
+ 0x05b8906e, 0x9a6213f0, 0xe17c9113, 0x7ea6128d, 0x79578f4f,
+ 0xe68d0cd1, 0x9d938e32, 0x02490dac, 0x6bae8bf4, 0xf474086a,
+ 0x8f6a8a89, 0x10b00917, 0x5ca58639, 0xc37f05a7, 0xb8618744,
+ 0x27bb04da, 0x4e5c8282, 0xd186011c, 0xaa9883ff, 0x35420061,
+ 0xa57bb87b, 0x3aa13be5, 0x41bfb906, 0xde653a98, 0xb782bcc0,
+ 0x28583f5e, 0x5346bdbd, 0xcc9c3e23, 0x8089b10d, 0x1f533293,
+ 0x644db070, 0xfb9733ee, 0x9270b5b6, 0x0daa3628, 0x76b4b4cb,
+ 0xe96e3755, 0xee9faa97, 0x71452909, 0x0a5babea, 0x95812874,
+ 0xfc66ae2c, 0x63bc2db2, 0x18a2af51, 0x87782ccf, 0xcb6da3e1,
+ 0x54b7207f, 0x2fa9a29c, 0xb0732102, 0xd994a75a, 0x464e24c4,
+ 0x3d50a627, 0xa28a25b9, 0xc652d052, 0x598853cc, 0x2296d12f,
+ 0xbd4c52b1, 0xd4abd4e9, 0x4b715777, 0x306fd594, 0xafb5560a,
+ 0xe3a0d924, 0x7c7a5aba, 0x0764d859, 0x98be5bc7, 0xf159dd9f,
+ 0x6e835e01, 0x159ddce2, 0x8a475f7c, 0x8db6c2be, 0x126c4120,
+ 0x6972c3c3, 0xf6a8405d, 0x9f4fc605, 0x0095459b, 0x7b8bc778,
+ 0xe45144e6, 0xa844cbc8, 0x379e4856, 0x4c80cab5, 0xd35a492b,
+ 0xbabdcf73, 0x25674ced, 0x5e79ce0e, 0xc1a34d90, 0x519af58a,
+ 0xce407614, 0xb55ef4f7, 0x2a847769, 0x4363f131, 0xdcb972af,
+ 0xa7a7f04c, 0x387d73d2, 0x7468fcfc, 0xebb27f62, 0x90acfd81,
+ 0x0f767e1f, 0x6691f847, 0xf94b7bd9, 0x8255f93a, 0x1d8f7aa4,
+ 0x1a7ee766, 0x85a464f8, 0xfebae61b, 0x61606585, 0x0887e3dd,
+ 0x975d6043, 0xec43e2a0, 0x7399613e, 0x3f8cee10, 0xa0566d8e,
+ 0xdb48ef6d, 0x44926cf3, 0x2d75eaab, 0xb2af6935, 0xc9b1ebd6,
+ 0x566b6848}};
+
+local const z_word_t FAR crc_braid_big_table[][256] = {
+ {0x00000000, 0x9e83da9f, 0x7d01c4e4, 0xe3821e7b, 0xbb04f912,
+ 0x2587238d, 0xc6053df6, 0x5886e769, 0x7609f225, 0xe88a28ba,
+ 0x0b0836c1, 0x958bec5e, 0xcd0d0b37, 0x538ed1a8, 0xb00ccfd3,
+ 0x2e8f154c, 0xec12e44b, 0x72913ed4, 0x911320af, 0x0f90fa30,
+ 0x57161d59, 0xc995c7c6, 0x2a17d9bd, 0xb4940322, 0x9a1b166e,
+ 0x0498ccf1, 0xe71ad28a, 0x79990815, 0x211fef7c, 0xbf9c35e3,
+ 0x5c1e2b98, 0xc29df107, 0xd825c897, 0x46a61208, 0xa5240c73,
+ 0x3ba7d6ec, 0x63213185, 0xfda2eb1a, 0x1e20f561, 0x80a32ffe,
+ 0xae2c3ab2, 0x30afe02d, 0xd32dfe56, 0x4dae24c9, 0x1528c3a0,
+ 0x8bab193f, 0x68290744, 0xf6aadddb, 0x34372cdc, 0xaab4f643,
+ 0x4936e838, 0xd7b532a7, 0x8f33d5ce, 0x11b00f51, 0xf232112a,
+ 0x6cb1cbb5, 0x423edef9, 0xdcbd0466, 0x3f3f1a1d, 0xa1bcc082,
+ 0xf93a27eb, 0x67b9fd74, 0x843be30f, 0x1ab83990, 0xf14de1f4,
+ 0x6fce3b6b, 0x8c4c2510, 0x12cfff8f, 0x4a4918e6, 0xd4cac279,
+ 0x3748dc02, 0xa9cb069d, 0x874413d1, 0x19c7c94e, 0xfa45d735,
+ 0x64c60daa, 0x3c40eac3, 0xa2c3305c, 0x41412e27, 0xdfc2f4b8,
+ 0x1d5f05bf, 0x83dcdf20, 0x605ec15b, 0xfedd1bc4, 0xa65bfcad,
+ 0x38d82632, 0xdb5a3849, 0x45d9e2d6, 0x6b56f79a, 0xf5d52d05,
+ 0x1657337e, 0x88d4e9e1, 0xd0520e88, 0x4ed1d417, 0xad53ca6c,
+ 0x33d010f3, 0x29682963, 0xb7ebf3fc, 0x5469ed87, 0xcaea3718,
+ 0x926cd071, 0x0cef0aee, 0xef6d1495, 0x71eece0a, 0x5f61db46,
+ 0xc1e201d9, 0x22601fa2, 0xbce3c53d, 0xe4652254, 0x7ae6f8cb,
+ 0x9964e6b0, 0x07e73c2f, 0xc57acd28, 0x5bf917b7, 0xb87b09cc,
+ 0x26f8d353, 0x7e7e343a, 0xe0fdeea5, 0x037ff0de, 0x9dfc2a41,
+ 0xb3733f0d, 0x2df0e592, 0xce72fbe9, 0x50f12176, 0x0877c61f,
+ 0x96f41c80, 0x757602fb, 0xebf5d864, 0xa39db332, 0x3d1e69ad,
+ 0xde9c77d6, 0x401fad49, 0x18994a20, 0x861a90bf, 0x65988ec4,
+ 0xfb1b545b, 0xd5944117, 0x4b179b88, 0xa89585f3, 0x36165f6c,
+ 0x6e90b805, 0xf013629a, 0x13917ce1, 0x8d12a67e, 0x4f8f5779,
+ 0xd10c8de6, 0x328e939d, 0xac0d4902, 0xf48bae6b, 0x6a0874f4,
+ 0x898a6a8f, 0x1709b010, 0x3986a55c, 0xa7057fc3, 0x448761b8,
+ 0xda04bb27, 0x82825c4e, 0x1c0186d1, 0xff8398aa, 0x61004235,
+ 0x7bb87ba5, 0xe53ba13a, 0x06b9bf41, 0x983a65de, 0xc0bc82b7,
+ 0x5e3f5828, 0xbdbd4653, 0x233e9ccc, 0x0db18980, 0x9332531f,
+ 0x70b04d64, 0xee3397fb, 0xb6b57092, 0x2836aa0d, 0xcbb4b476,
+ 0x55376ee9, 0x97aa9fee, 0x09294571, 0xeaab5b0a, 0x74288195,
+ 0x2cae66fc, 0xb22dbc63, 0x51afa218, 0xcf2c7887, 0xe1a36dcb,
+ 0x7f20b754, 0x9ca2a92f, 0x022173b0, 0x5aa794d9, 0xc4244e46,
+ 0x27a6503d, 0xb9258aa2, 0x52d052c6, 0xcc538859, 0x2fd19622,
+ 0xb1524cbd, 0xe9d4abd4, 0x7757714b, 0x94d56f30, 0x0a56b5af,
+ 0x24d9a0e3, 0xba5a7a7c, 0x59d86407, 0xc75bbe98, 0x9fdd59f1,
+ 0x015e836e, 0xe2dc9d15, 0x7c5f478a, 0xbec2b68d, 0x20416c12,
+ 0xc3c37269, 0x5d40a8f6, 0x05c64f9f, 0x9b459500, 0x78c78b7b,
+ 0xe64451e4, 0xc8cb44a8, 0x56489e37, 0xb5ca804c, 0x2b495ad3,
+ 0x73cfbdba, 0xed4c6725, 0x0ece795e, 0x904da3c1, 0x8af59a51,
+ 0x147640ce, 0xf7f45eb5, 0x6977842a, 0x31f16343, 0xaf72b9dc,
+ 0x4cf0a7a7, 0xd2737d38, 0xfcfc6874, 0x627fb2eb, 0x81fdac90,
+ 0x1f7e760f, 0x47f89166, 0xd97b4bf9, 0x3af95582, 0xa47a8f1d,
+ 0x66e77e1a, 0xf864a485, 0x1be6bafe, 0x85656061, 0xdde38708,
+ 0x43605d97, 0xa0e243ec, 0x3e619973, 0x10ee8c3f, 0x8e6d56a0,
+ 0x6def48db, 0xf36c9244, 0xabea752d, 0x3569afb2, 0xd6ebb1c9,
+ 0x48686b56},
+ {0x00000000, 0xc0642817, 0x80c9502e, 0x40ad7839, 0x0093a15c,
+ 0xc0f7894b, 0x805af172, 0x403ed965, 0x002643b9, 0xc0426bae,
+ 0x80ef1397, 0x408b3b80, 0x00b5e2e5, 0xc0d1caf2, 0x807cb2cb,
+ 0x40189adc, 0x414af7a9, 0x812edfbe, 0xc183a787, 0x01e78f90,
+ 0x41d956f5, 0x81bd7ee2, 0xc11006db, 0x01742ecc, 0x416cb410,
+ 0x81089c07, 0xc1a5e43e, 0x01c1cc29, 0x41ff154c, 0x819b3d5b,
+ 0xc1364562, 0x01526d75, 0xc3929f88, 0x03f6b79f, 0x435bcfa6,
+ 0x833fe7b1, 0xc3013ed4, 0x036516c3, 0x43c86efa, 0x83ac46ed,
+ 0xc3b4dc31, 0x03d0f426, 0x437d8c1f, 0x8319a408, 0xc3277d6d,
+ 0x0343557a, 0x43ee2d43, 0x838a0554, 0x82d86821, 0x42bc4036,
+ 0x0211380f, 0xc2751018, 0x824bc97d, 0x422fe16a, 0x02829953,
+ 0xc2e6b144, 0x82fe2b98, 0x429a038f, 0x02377bb6, 0xc25353a1,
+ 0x826d8ac4, 0x4209a2d3, 0x02a4daea, 0xc2c0f2fd, 0xc7234eca,
+ 0x074766dd, 0x47ea1ee4, 0x878e36f3, 0xc7b0ef96, 0x07d4c781,
+ 0x4779bfb8, 0x871d97af, 0xc7050d73, 0x07612564, 0x47cc5d5d,
+ 0x87a8754a, 0xc796ac2f, 0x07f28438, 0x475ffc01, 0x873bd416,
+ 0x8669b963, 0x460d9174, 0x06a0e94d, 0xc6c4c15a, 0x86fa183f,
+ 0x469e3028, 0x06334811, 0xc6576006, 0x864ffada, 0x462bd2cd,
+ 0x0686aaf4, 0xc6e282e3, 0x86dc5b86, 0x46b87391, 0x06150ba8,
+ 0xc67123bf, 0x04b1d142, 0xc4d5f955, 0x8478816c, 0x441ca97b,
+ 0x0422701e, 0xc4465809, 0x84eb2030, 0x448f0827, 0x049792fb,
+ 0xc4f3baec, 0x845ec2d5, 0x443aeac2, 0x040433a7, 0xc4601bb0,
+ 0x84cd6389, 0x44a94b9e, 0x45fb26eb, 0x859f0efc, 0xc53276c5,
+ 0x05565ed2, 0x456887b7, 0x850cafa0, 0xc5a1d799, 0x05c5ff8e,
+ 0x45dd6552, 0x85b94d45, 0xc514357c, 0x05701d6b, 0x454ec40e,
+ 0x852aec19, 0xc5879420, 0x05e3bc37, 0xcf41ed4f, 0x0f25c558,
+ 0x4f88bd61, 0x8fec9576, 0xcfd24c13, 0x0fb66404, 0x4f1b1c3d,
+ 0x8f7f342a, 0xcf67aef6, 0x0f0386e1, 0x4faefed8, 0x8fcad6cf,
+ 0xcff40faa, 0x0f9027bd, 0x4f3d5f84, 0x8f597793, 0x8e0b1ae6,
+ 0x4e6f32f1, 0x0ec24ac8, 0xcea662df, 0x8e98bbba, 0x4efc93ad,
+ 0x0e51eb94, 0xce35c383, 0x8e2d595f, 0x4e497148, 0x0ee40971,
+ 0xce802166, 0x8ebef803, 0x4edad014, 0x0e77a82d, 0xce13803a,
+ 0x0cd372c7, 0xccb75ad0, 0x8c1a22e9, 0x4c7e0afe, 0x0c40d39b,
+ 0xcc24fb8c, 0x8c8983b5, 0x4cedaba2, 0x0cf5317e, 0xcc911969,
+ 0x8c3c6150, 0x4c584947, 0x0c669022, 0xcc02b835, 0x8cafc00c,
+ 0x4ccbe81b, 0x4d99856e, 0x8dfdad79, 0xcd50d540, 0x0d34fd57,
+ 0x4d0a2432, 0x8d6e0c25, 0xcdc3741c, 0x0da75c0b, 0x4dbfc6d7,
+ 0x8ddbeec0, 0xcd7696f9, 0x0d12beee, 0x4d2c678b, 0x8d484f9c,
+ 0xcde537a5, 0x0d811fb2, 0x0862a385, 0xc8068b92, 0x88abf3ab,
+ 0x48cfdbbc, 0x08f102d9, 0xc8952ace, 0x883852f7, 0x485c7ae0,
+ 0x0844e03c, 0xc820c82b, 0x888db012, 0x48e99805, 0x08d74160,
+ 0xc8b36977, 0x881e114e, 0x487a3959, 0x4928542c, 0x894c7c3b,
+ 0xc9e10402, 0x09852c15, 0x49bbf570, 0x89dfdd67, 0xc972a55e,
+ 0x09168d49, 0x490e1795, 0x896a3f82, 0xc9c747bb, 0x09a36fac,
+ 0x499db6c9, 0x89f99ede, 0xc954e6e7, 0x0930cef0, 0xcbf03c0d,
+ 0x0b94141a, 0x4b396c23, 0x8b5d4434, 0xcb639d51, 0x0b07b546,
+ 0x4baacd7f, 0x8bcee568, 0xcbd67fb4, 0x0bb257a3, 0x4b1f2f9a,
+ 0x8b7b078d, 0xcb45dee8, 0x0b21f6ff, 0x4b8c8ec6, 0x8be8a6d1,
+ 0x8abacba4, 0x4adee3b3, 0x0a739b8a, 0xca17b39d, 0x8a296af8,
+ 0x4a4d42ef, 0x0ae03ad6, 0xca8412c1, 0x8a9c881d, 0x4af8a00a,
+ 0x0a55d833, 0xca31f024, 0x8a0f2941, 0x4a6b0156, 0x0ac6796f,
+ 0xcaa25178},
+ {0x00000000, 0xd4ea739b, 0xe9d396ed, 0x3d39e576, 0x93a15c00,
+ 0x474b2f9b, 0x7a72caed, 0xae98b976, 0x2643b900, 0xf2a9ca9b,
+ 0xcf902fed, 0x1b7a5c76, 0xb5e2e500, 0x6108969b, 0x5c3173ed,
+ 0x88db0076, 0x4c867201, 0x986c019a, 0xa555e4ec, 0x71bf9777,
+ 0xdf272e01, 0x0bcd5d9a, 0x36f4b8ec, 0xe21ecb77, 0x6ac5cb01,
+ 0xbe2fb89a, 0x83165dec, 0x57fc2e77, 0xf9649701, 0x2d8ee49a,
+ 0x10b701ec, 0xc45d7277, 0x980ce502, 0x4ce69699, 0x71df73ef,
+ 0xa5350074, 0x0badb902, 0xdf47ca99, 0xe27e2fef, 0x36945c74,
+ 0xbe4f5c02, 0x6aa52f99, 0x579ccaef, 0x8376b974, 0x2dee0002,
+ 0xf9047399, 0xc43d96ef, 0x10d7e574, 0xd48a9703, 0x0060e498,
+ 0x3d5901ee, 0xe9b37275, 0x472bcb03, 0x93c1b898, 0xaef85dee,
+ 0x7a122e75, 0xf2c92e03, 0x26235d98, 0x1b1ab8ee, 0xcff0cb75,
+ 0x61687203, 0xb5820198, 0x88bbe4ee, 0x5c519775, 0x3019ca05,
+ 0xe4f3b99e, 0xd9ca5ce8, 0x0d202f73, 0xa3b89605, 0x7752e59e,
+ 0x4a6b00e8, 0x9e817373, 0x165a7305, 0xc2b0009e, 0xff89e5e8,
+ 0x2b639673, 0x85fb2f05, 0x51115c9e, 0x6c28b9e8, 0xb8c2ca73,
+ 0x7c9fb804, 0xa875cb9f, 0x954c2ee9, 0x41a65d72, 0xef3ee404,
+ 0x3bd4979f, 0x06ed72e9, 0xd2070172, 0x5adc0104, 0x8e36729f,
+ 0xb30f97e9, 0x67e5e472, 0xc97d5d04, 0x1d972e9f, 0x20aecbe9,
+ 0xf444b872, 0xa8152f07, 0x7cff5c9c, 0x41c6b9ea, 0x952cca71,
+ 0x3bb47307, 0xef5e009c, 0xd267e5ea, 0x068d9671, 0x8e569607,
+ 0x5abce59c, 0x678500ea, 0xb36f7371, 0x1df7ca07, 0xc91db99c,
+ 0xf4245cea, 0x20ce2f71, 0xe4935d06, 0x30792e9d, 0x0d40cbeb,
+ 0xd9aab870, 0x77320106, 0xa3d8729d, 0x9ee197eb, 0x4a0be470,
+ 0xc2d0e406, 0x163a979d, 0x2b0372eb, 0xffe90170, 0x5171b806,
+ 0x859bcb9d, 0xb8a22eeb, 0x6c485d70, 0x6032940b, 0xb4d8e790,
+ 0x89e102e6, 0x5d0b717d, 0xf393c80b, 0x2779bb90, 0x1a405ee6,
+ 0xceaa2d7d, 0x46712d0b, 0x929b5e90, 0xafa2bbe6, 0x7b48c87d,
+ 0xd5d0710b, 0x013a0290, 0x3c03e7e6, 0xe8e9947d, 0x2cb4e60a,
+ 0xf85e9591, 0xc56770e7, 0x118d037c, 0xbf15ba0a, 0x6bffc991,
+ 0x56c62ce7, 0x822c5f7c, 0x0af75f0a, 0xde1d2c91, 0xe324c9e7,
+ 0x37ceba7c, 0x9956030a, 0x4dbc7091, 0x708595e7, 0xa46fe67c,
+ 0xf83e7109, 0x2cd40292, 0x11ede7e4, 0xc507947f, 0x6b9f2d09,
+ 0xbf755e92, 0x824cbbe4, 0x56a6c87f, 0xde7dc809, 0x0a97bb92,
+ 0x37ae5ee4, 0xe3442d7f, 0x4ddc9409, 0x9936e792, 0xa40f02e4,
+ 0x70e5717f, 0xb4b80308, 0x60527093, 0x5d6b95e5, 0x8981e67e,
+ 0x27195f08, 0xf3f32c93, 0xcecac9e5, 0x1a20ba7e, 0x92fbba08,
+ 0x4611c993, 0x7b282ce5, 0xafc25f7e, 0x015ae608, 0xd5b09593,
+ 0xe88970e5, 0x3c63037e, 0x502b5e0e, 0x84c12d95, 0xb9f8c8e3,
+ 0x6d12bb78, 0xc38a020e, 0x17607195, 0x2a5994e3, 0xfeb3e778,
+ 0x7668e70e, 0xa2829495, 0x9fbb71e3, 0x4b510278, 0xe5c9bb0e,
+ 0x3123c895, 0x0c1a2de3, 0xd8f05e78, 0x1cad2c0f, 0xc8475f94,
+ 0xf57ebae2, 0x2194c979, 0x8f0c700f, 0x5be60394, 0x66dfe6e2,
+ 0xb2359579, 0x3aee950f, 0xee04e694, 0xd33d03e2, 0x07d77079,
+ 0xa94fc90f, 0x7da5ba94, 0x409c5fe2, 0x94762c79, 0xc827bb0c,
+ 0x1ccdc897, 0x21f42de1, 0xf51e5e7a, 0x5b86e70c, 0x8f6c9497,
+ 0xb25571e1, 0x66bf027a, 0xee64020c, 0x3a8e7197, 0x07b794e1,
+ 0xd35de77a, 0x7dc55e0c, 0xa92f2d97, 0x9416c8e1, 0x40fcbb7a,
+ 0x84a1c90d, 0x504bba96, 0x6d725fe0, 0xb9982c7b, 0x1700950d,
+ 0xc3eae696, 0xfed303e0, 0x2a39707b, 0xa2e2700d, 0x76080396,
+ 0x4b31e6e0, 0x9fdb957b, 0x31432c0d, 0xe5a95f96, 0xd890bae0,
+ 0x0c7ac97b},
+ {0x00000000, 0x27652581, 0x0fcc3bd9, 0x28a91e58, 0x5f9e0669,
+ 0x78fb23e8, 0x50523db0, 0x77371831, 0xbe3c0dd2, 0x99592853,
+ 0xb1f0360b, 0x9695138a, 0xe1a20bbb, 0xc6c72e3a, 0xee6e3062,
+ 0xc90b15e3, 0x3d7f6b7f, 0x1a1a4efe, 0x32b350a6, 0x15d67527,
+ 0x62e16d16, 0x45844897, 0x6d2d56cf, 0x4a48734e, 0x834366ad,
+ 0xa426432c, 0x8c8f5d74, 0xabea78f5, 0xdcdd60c4, 0xfbb84545,
+ 0xd3115b1d, 0xf4747e9c, 0x7afed6fe, 0x5d9bf37f, 0x7532ed27,
+ 0x5257c8a6, 0x2560d097, 0x0205f516, 0x2aaceb4e, 0x0dc9cecf,
+ 0xc4c2db2c, 0xe3a7fead, 0xcb0ee0f5, 0xec6bc574, 0x9b5cdd45,
+ 0xbc39f8c4, 0x9490e69c, 0xb3f5c31d, 0x4781bd81, 0x60e49800,
+ 0x484d8658, 0x6f28a3d9, 0x181fbbe8, 0x3f7a9e69, 0x17d38031,
+ 0x30b6a5b0, 0xf9bdb053, 0xded895d2, 0xf6718b8a, 0xd114ae0b,
+ 0xa623b63a, 0x814693bb, 0xa9ef8de3, 0x8e8aa862, 0xb5fadc26,
+ 0x929ff9a7, 0xba36e7ff, 0x9d53c27e, 0xea64da4f, 0xcd01ffce,
+ 0xe5a8e196, 0xc2cdc417, 0x0bc6d1f4, 0x2ca3f475, 0x040aea2d,
+ 0x236fcfac, 0x5458d79d, 0x733df21c, 0x5b94ec44, 0x7cf1c9c5,
+ 0x8885b759, 0xafe092d8, 0x87498c80, 0xa02ca901, 0xd71bb130,
+ 0xf07e94b1, 0xd8d78ae9, 0xffb2af68, 0x36b9ba8b, 0x11dc9f0a,
+ 0x39758152, 0x1e10a4d3, 0x6927bce2, 0x4e429963, 0x66eb873b,
+ 0x418ea2ba, 0xcf040ad8, 0xe8612f59, 0xc0c83101, 0xe7ad1480,
+ 0x909a0cb1, 0xb7ff2930, 0x9f563768, 0xb83312e9, 0x7138070a,
+ 0x565d228b, 0x7ef43cd3, 0x59911952, 0x2ea60163, 0x09c324e2,
+ 0x216a3aba, 0x060f1f3b, 0xf27b61a7, 0xd51e4426, 0xfdb75a7e,
+ 0xdad27fff, 0xade567ce, 0x8a80424f, 0xa2295c17, 0x854c7996,
+ 0x4c476c75, 0x6b2249f4, 0x438b57ac, 0x64ee722d, 0x13d96a1c,
+ 0x34bc4f9d, 0x1c1551c5, 0x3b707444, 0x6af5b94d, 0x4d909ccc,
+ 0x65398294, 0x425ca715, 0x356bbf24, 0x120e9aa5, 0x3aa784fd,
+ 0x1dc2a17c, 0xd4c9b49f, 0xf3ac911e, 0xdb058f46, 0xfc60aac7,
+ 0x8b57b2f6, 0xac329777, 0x849b892f, 0xa3feacae, 0x578ad232,
+ 0x70eff7b3, 0x5846e9eb, 0x7f23cc6a, 0x0814d45b, 0x2f71f1da,
+ 0x07d8ef82, 0x20bdca03, 0xe9b6dfe0, 0xced3fa61, 0xe67ae439,
+ 0xc11fc1b8, 0xb628d989, 0x914dfc08, 0xb9e4e250, 0x9e81c7d1,
+ 0x100b6fb3, 0x376e4a32, 0x1fc7546a, 0x38a271eb, 0x4f9569da,
+ 0x68f04c5b, 0x40595203, 0x673c7782, 0xae376261, 0x895247e0,
+ 0xa1fb59b8, 0x869e7c39, 0xf1a96408, 0xd6cc4189, 0xfe655fd1,
+ 0xd9007a50, 0x2d7404cc, 0x0a11214d, 0x22b83f15, 0x05dd1a94,
+ 0x72ea02a5, 0x558f2724, 0x7d26397c, 0x5a431cfd, 0x9348091e,
+ 0xb42d2c9f, 0x9c8432c7, 0xbbe11746, 0xccd60f77, 0xebb32af6,
+ 0xc31a34ae, 0xe47f112f, 0xdf0f656b, 0xf86a40ea, 0xd0c35eb2,
+ 0xf7a67b33, 0x80916302, 0xa7f44683, 0x8f5d58db, 0xa8387d5a,
+ 0x613368b9, 0x46564d38, 0x6eff5360, 0x499a76e1, 0x3ead6ed0,
+ 0x19c84b51, 0x31615509, 0x16047088, 0xe2700e14, 0xc5152b95,
+ 0xedbc35cd, 0xcad9104c, 0xbdee087d, 0x9a8b2dfc, 0xb22233a4,
+ 0x95471625, 0x5c4c03c6, 0x7b292647, 0x5380381f, 0x74e51d9e,
+ 0x03d205af, 0x24b7202e, 0x0c1e3e76, 0x2b7b1bf7, 0xa5f1b395,
+ 0x82949614, 0xaa3d884c, 0x8d58adcd, 0xfa6fb5fc, 0xdd0a907d,
+ 0xf5a38e25, 0xd2c6aba4, 0x1bcdbe47, 0x3ca89bc6, 0x1401859e,
+ 0x3364a01f, 0x4453b82e, 0x63369daf, 0x4b9f83f7, 0x6cfaa676,
+ 0x988ed8ea, 0xbfebfd6b, 0x9742e333, 0xb027c6b2, 0xc710de83,
+ 0xe075fb02, 0xc8dce55a, 0xefb9c0db, 0x26b2d538, 0x01d7f0b9,
+ 0x297eeee1, 0x0e1bcb60, 0x792cd351, 0x5e49f6d0, 0x76e0e888,
+ 0x5185cd09}};
+
+#endif
+
+#endif
+
+#endif
+
+local const z_crc_t FAR x2n_table[] = {
+ 0x40000000, 0x20000000, 0x08000000, 0x00800000, 0x00008000,
+ 0xedb88320, 0xb1e6b092, 0xa06a2517, 0xed627dae, 0x88d14467,
+ 0xd7bbfe6a, 0xec447f11, 0x8e7ea170, 0x6427800e, 0x4d47bae0,
+ 0x09fe548f, 0x83852d0f, 0x30362f1a, 0x7b5a9cc3, 0x31fec169,
+ 0x9fec022a, 0x6c8dedc4, 0x15d6874d, 0x5fde7a4e, 0xbad90e37,
+ 0x2e4e5eef, 0x4eaba214, 0xa8a472c0, 0x429a969e, 0x148d302a,
+ 0xc40ba6d0, 0xc4e22c3c};
diff --git a/thirdparty/zlib/deflate.c b/thirdparty/zlib/deflate.c
index 1ec761448d..799fb93cc0 100644
--- a/thirdparty/zlib/deflate.c
+++ b/thirdparty/zlib/deflate.c
@@ -1,5 +1,5 @@
/* deflate.c -- compress data using the deflation algorithm
- * Copyright (C) 1995-2017 Jean-loup Gailly and Mark Adler
+ * Copyright (C) 1995-2022 Jean-loup Gailly and Mark Adler
* For conditions of distribution and use, see copyright notice in zlib.h
*/
@@ -52,7 +52,7 @@
#include "deflate.h"
const char deflate_copyright[] =
- " deflate 1.2.11 Copyright 1995-2017 Jean-loup Gailly and Mark Adler ";
+ " deflate 1.2.12 Copyright 1995-2022 Jean-loup Gailly and Mark Adler ";
/*
If you use the zlib library in a product, an acknowledgment is welcome
in the documentation of your product. If for some reason you cannot
@@ -190,8 +190,11 @@ local const config configuration_table[10] = {
* prev[] will be initialized on the fly.
*/
#define CLEAR_HASH(s) \
- s->head[s->hash_size-1] = NIL; \
- zmemzero((Bytef *)s->head, (unsigned)(s->hash_size-1)*sizeof(*s->head));
+ do { \
+ s->head[s->hash_size-1] = NIL; \
+ zmemzero((Bytef *)s->head, \
+ (unsigned)(s->hash_size-1)*sizeof(*s->head)); \
+ } while (0)
/* ===========================================================================
* Slide the hash table when sliding the window down (could be avoided with 32
@@ -252,11 +255,6 @@ int ZEXPORT deflateInit2_(strm, level, method, windowBits, memLevel, strategy,
int wrap = 1;
static const char my_version[] = ZLIB_VERSION;
- ushf *overlay;
- /* We overlay pending_buf and d_buf+l_buf. This works since the average
- * output size for (length,distance) codes is <= 24 bits.
- */
-
if (version == Z_NULL || version[0] != my_version[0] ||
stream_size != sizeof(z_stream)) {
return Z_VERSION_ERROR;
@@ -326,9 +324,47 @@ int ZEXPORT deflateInit2_(strm, level, method, windowBits, memLevel, strategy,
s->lit_bufsize = 1 << (memLevel + 6); /* 16K elements by default */
- overlay = (ushf *) ZALLOC(strm, s->lit_bufsize, sizeof(ush)+2);
- s->pending_buf = (uchf *) overlay;
- s->pending_buf_size = (ulg)s->lit_bufsize * (sizeof(ush)+2L);
+ /* We overlay pending_buf and sym_buf. This works since the average size
+ * for length/distance pairs over any compressed block is assured to be 31
+ * bits or less.
+ *
+ * Analysis: The longest fixed codes are a length code of 8 bits plus 5
+ * extra bits, for lengths 131 to 257. The longest fixed distance codes are
+ * 5 bits plus 13 extra bits, for distances 16385 to 32768. The longest
+ * possible fixed-codes length/distance pair is then 31 bits total.
+ *
+ * sym_buf starts one-fourth of the way into pending_buf. So there are
+ * three bytes in sym_buf for every four bytes in pending_buf. Each symbol
+ * in sym_buf is three bytes -- two for the distance and one for the
+ * literal/length. As each symbol is consumed, the pointer to the next
+ * sym_buf value to read moves forward three bytes. From that symbol, up to
+ * 31 bits are written to pending_buf. The closest the written pending_buf
+ * bits gets to the next sym_buf symbol to read is just before the last
+ * code is written. At that time, 31*(n-2) bits have been written, just
+ * after 24*(n-2) bits have been consumed from sym_buf. sym_buf starts at
+ * 8*n bits into pending_buf. (Note that the symbol buffer fills when n-1
+ * symbols are written.) The closest the writing gets to what is unread is
+ * then n+14 bits. Here n is lit_bufsize, which is 16384 by default, and
+ * can range from 128 to 32768.
+ *
+ * Therefore, at a minimum, there are 142 bits of space between what is
+ * written and what is read in the overlain buffers, so the symbols cannot
+ * be overwritten by the compressed data. That space is actually 139 bits,
+ * due to the three-bit fixed-code block header.
+ *
+ * That covers the case where either Z_FIXED is specified, forcing fixed
+ * codes, or when the use of fixed codes is chosen, because that choice
+ * results in a smaller compressed block than dynamic codes. That latter
+ * condition then assures that the above analysis also covers all dynamic
+ * blocks. A dynamic-code block will only be chosen to be emitted if it has
+ * fewer bits than a fixed-code block would for the same set of symbols.
+ * Therefore its average symbol length is assured to be less than 31. So
+ * the compressed data for a dynamic block also cannot overwrite the
+ * symbols from which it is being constructed.
+ */
+
+ s->pending_buf = (uchf *) ZALLOC(strm, s->lit_bufsize, 4);
+ s->pending_buf_size = (ulg)s->lit_bufsize * 4;
if (s->window == Z_NULL || s->prev == Z_NULL || s->head == Z_NULL ||
s->pending_buf == Z_NULL) {
@@ -337,8 +373,12 @@ int ZEXPORT deflateInit2_(strm, level, method, windowBits, memLevel, strategy,
deflateEnd (strm);
return Z_MEM_ERROR;
}
- s->d_buf = overlay + s->lit_bufsize/sizeof(ush);
- s->l_buf = s->pending_buf + (1+sizeof(ush))*s->lit_bufsize;
+ s->sym_buf = s->pending_buf + s->lit_bufsize;
+ s->sym_end = (s->lit_bufsize - 1) * 3;
+ /* We avoid equality with lit_bufsize*3 because of wraparound at 64K
+ * on 16 bit machines and because stored blocks are restricted to
+ * 64K-1 bytes.
+ */
s->level = level;
s->strategy = strategy;
@@ -488,13 +528,13 @@ int ZEXPORT deflateResetKeep (strm)
#ifdef GZIP
s->wrap == 2 ? GZIP_STATE :
#endif
- s->wrap ? INIT_STATE : BUSY_STATE;
+ INIT_STATE;
strm->adler =
#ifdef GZIP
s->wrap == 2 ? crc32(0L, Z_NULL, 0) :
#endif
adler32(0L, Z_NULL, 0);
- s->last_flush = Z_NO_FLUSH;
+ s->last_flush = -2;
_tr_init(s);
@@ -549,7 +589,8 @@ int ZEXPORT deflatePrime (strm, bits, value)
if (deflateStateCheck(strm)) return Z_STREAM_ERROR;
s = strm->state;
- if ((Bytef *)(s->d_buf) < s->pending_out + ((Buf_size + 7) >> 3))
+ if (bits < 0 || bits > 16 ||
+ s->sym_buf < s->pending_out + ((Buf_size + 7) >> 3))
return Z_BUF_ERROR;
do {
put = Buf_size - s->bi_valid;
@@ -587,12 +628,12 @@ int ZEXPORT deflateParams(strm, level, strategy)
func = configuration_table[s->level].func;
if ((strategy != s->strategy || func != configuration_table[level].func) &&
- s->high_water) {
+ s->last_flush != -2) {
/* Flush the last buffer: */
int err = deflate(strm, Z_BLOCK);
if (err == Z_STREAM_ERROR)
return err;
- if (strm->avail_out == 0)
+ if (strm->avail_in || (s->strstart - s->block_start) + s->lookahead)
return Z_BUF_ERROR;
}
if (s->level != level) {
@@ -811,6 +852,8 @@ int ZEXPORT deflate (strm, flush)
}
/* Write the header */
+ if (s->status == INIT_STATE && s->wrap == 0)
+ s->status = BUSY_STATE;
if (s->status == INIT_STATE) {
/* zlib header */
uInt header = (Z_DEFLATED + ((s->w_bits-8)<<4)) << 8;
@@ -1108,7 +1151,6 @@ int ZEXPORT deflateCopy (dest, source)
#else
deflate_state *ds;
deflate_state *ss;
- ushf *overlay;
if (deflateStateCheck(source) || dest == Z_NULL) {
@@ -1128,8 +1170,7 @@ int ZEXPORT deflateCopy (dest, source)
ds->window = (Bytef *) ZALLOC(dest, ds->w_size, 2*sizeof(Byte));
ds->prev = (Posf *) ZALLOC(dest, ds->w_size, sizeof(Pos));
ds->head = (Posf *) ZALLOC(dest, ds->hash_size, sizeof(Pos));
- overlay = (ushf *) ZALLOC(dest, ds->lit_bufsize, sizeof(ush)+2);
- ds->pending_buf = (uchf *) overlay;
+ ds->pending_buf = (uchf *) ZALLOC(dest, ds->lit_bufsize, 4);
if (ds->window == Z_NULL || ds->prev == Z_NULL || ds->head == Z_NULL ||
ds->pending_buf == Z_NULL) {
@@ -1143,8 +1184,7 @@ int ZEXPORT deflateCopy (dest, source)
zmemcpy(ds->pending_buf, ss->pending_buf, (uInt)ds->pending_buf_size);
ds->pending_out = ds->pending_buf + (ss->pending_out - ss->pending_buf);
- ds->d_buf = overlay + ds->lit_bufsize/sizeof(ush);
- ds->l_buf = ds->pending_buf + (1+sizeof(ush))*ds->lit_bufsize;
+ ds->sym_buf = ds->pending_buf + ds->lit_bufsize;
ds->l_desc.dyn_tree = ds->dyn_ltree;
ds->d_desc.dyn_tree = ds->dyn_dtree;
@@ -1513,6 +1553,8 @@ local void fill_window(s)
s->match_start -= wsize;
s->strstart -= wsize; /* we now have strstart >= MAX_DIST */
s->block_start -= (long) wsize;
+ if (s->insert > s->strstart)
+ s->insert = s->strstart;
slide_hash(s);
more += wsize;
}
@@ -1742,6 +1784,7 @@ local block_state deflate_stored(s, flush)
s->matches = 2; /* clear hash */
zmemcpy(s->window, s->strm->next_in - s->w_size, s->w_size);
s->strstart = s->w_size;
+ s->insert = s->strstart;
}
else {
if (s->window_size - s->strstart <= used) {
@@ -1750,12 +1793,14 @@ local block_state deflate_stored(s, flush)
zmemcpy(s->window, s->window + s->w_size, s->strstart);
if (s->matches < 2)
s->matches++; /* add a pending slide_hash() */
+ if (s->insert > s->strstart)
+ s->insert = s->strstart;
}
zmemcpy(s->window + s->strstart, s->strm->next_in - used, used);
s->strstart += used;
+ s->insert += MIN(used, s->w_size - s->insert);
}
s->block_start = s->strstart;
- s->insert += MIN(used, s->w_size - s->insert);
}
if (s->high_water < s->strstart)
s->high_water = s->strstart;
@@ -1770,7 +1815,7 @@ local block_state deflate_stored(s, flush)
return block_done;
/* Fill the window with any remaining input. */
- have = s->window_size - s->strstart - 1;
+ have = s->window_size - s->strstart;
if (s->strm->avail_in > have && s->block_start >= (long)s->w_size) {
/* Slide the window down. */
s->block_start -= s->w_size;
@@ -1779,12 +1824,15 @@ local block_state deflate_stored(s, flush)
if (s->matches < 2)
s->matches++; /* add a pending slide_hash() */
have += s->w_size; /* more space now */
+ if (s->insert > s->strstart)
+ s->insert = s->strstart;
}
if (have > s->strm->avail_in)
have = s->strm->avail_in;
if (have) {
read_buf(s->strm, s->window + s->strstart, have);
s->strstart += have;
+ s->insert += MIN(have, s->w_size - s->insert);
}
if (s->high_water < s->strstart)
s->high_water = s->strstart;
@@ -1912,7 +1960,7 @@ local block_state deflate_fast(s, flush)
FLUSH_BLOCK(s, 1);
return finish_done;
}
- if (s->last_lit)
+ if (s->sym_next)
FLUSH_BLOCK(s, 0);
return block_done;
}
@@ -2043,7 +2091,7 @@ local block_state deflate_slow(s, flush)
FLUSH_BLOCK(s, 1);
return finish_done;
}
- if (s->last_lit)
+ if (s->sym_next)
FLUSH_BLOCK(s, 0);
return block_done;
}
@@ -2118,7 +2166,7 @@ local block_state deflate_rle(s, flush)
FLUSH_BLOCK(s, 1);
return finish_done;
}
- if (s->last_lit)
+ if (s->sym_next)
FLUSH_BLOCK(s, 0);
return block_done;
}
@@ -2157,7 +2205,7 @@ local block_state deflate_huff(s, flush)
FLUSH_BLOCK(s, 1);
return finish_done;
}
- if (s->last_lit)
+ if (s->sym_next)
FLUSH_BLOCK(s, 0);
return block_done;
}
diff --git a/thirdparty/zlib/deflate.h b/thirdparty/zlib/deflate.h
index 23ecdd312b..17c226113b 100644
--- a/thirdparty/zlib/deflate.h
+++ b/thirdparty/zlib/deflate.h
@@ -1,5 +1,5 @@
/* deflate.h -- internal compression state
- * Copyright (C) 1995-2016 Jean-loup Gailly
+ * Copyright (C) 1995-2018 Jean-loup Gailly
* For conditions of distribution and use, see copyright notice in zlib.h
*/
@@ -217,7 +217,7 @@ typedef struct internal_state {
/* Depth of each subtree used as tie breaker for trees of equal frequency
*/
- uchf *l_buf; /* buffer for literals or lengths */
+ uchf *sym_buf; /* buffer for distances and literals/lengths */
uInt lit_bufsize;
/* Size of match buffer for literals/lengths. There are 4 reasons for
@@ -239,13 +239,8 @@ typedef struct internal_state {
* - I can't count above 4
*/
- uInt last_lit; /* running index in l_buf */
-
- ushf *d_buf;
- /* Buffer for distances. To simplify the code, d_buf and l_buf have
- * the same number of elements. To use different lengths, an extra flag
- * array would be necessary.
- */
+ uInt sym_next; /* running index in sym_buf */
+ uInt sym_end; /* symbol table full when sym_next reaches this */
ulg opt_len; /* bit length of current block with optimal trees */
ulg static_len; /* bit length of current block with static trees */
@@ -325,20 +320,22 @@ void ZLIB_INTERNAL _tr_stored_block OF((deflate_state *s, charf *buf,
# define _tr_tally_lit(s, c, flush) \
{ uch cc = (c); \
- s->d_buf[s->last_lit] = 0; \
- s->l_buf[s->last_lit++] = cc; \
+ s->sym_buf[s->sym_next++] = 0; \
+ s->sym_buf[s->sym_next++] = 0; \
+ s->sym_buf[s->sym_next++] = cc; \
s->dyn_ltree[cc].Freq++; \
- flush = (s->last_lit == s->lit_bufsize-1); \
+ flush = (s->sym_next == s->sym_end); \
}
# define _tr_tally_dist(s, distance, length, flush) \
{ uch len = (uch)(length); \
ush dist = (ush)(distance); \
- s->d_buf[s->last_lit] = dist; \
- s->l_buf[s->last_lit++] = len; \
+ s->sym_buf[s->sym_next++] = dist; \
+ s->sym_buf[s->sym_next++] = dist >> 8; \
+ s->sym_buf[s->sym_next++] = len; \
dist--; \
s->dyn_ltree[_length_code[len]+LITERALS+1].Freq++; \
s->dyn_dtree[d_code(dist)].Freq++; \
- flush = (s->last_lit == s->lit_bufsize-1); \
+ flush = (s->sym_next == s->sym_end); \
}
#else
# define _tr_tally_lit(s, c, flush) flush = _tr_tally(s, 0, c)
diff --git a/thirdparty/zlib/gzguts.h b/thirdparty/zlib/gzguts.h
index 990a4d2514..57faf37165 100644
--- a/thirdparty/zlib/gzguts.h
+++ b/thirdparty/zlib/gzguts.h
@@ -1,5 +1,5 @@
/* gzguts.h -- zlib internal header definitions for gz* operations
- * Copyright (C) 2004, 2005, 2010, 2011, 2012, 2013, 2016 Mark Adler
+ * Copyright (C) 2004-2019 Mark Adler
* For conditions of distribution and use, see copyright notice in zlib.h
*/
@@ -39,7 +39,7 @@
# include <io.h>
#endif
-#if defined(_WIN32) || defined(__CYGWIN__)
+#if defined(_WIN32)
# define WIDECHAR
#endif
@@ -190,6 +190,7 @@ typedef struct {
/* just for writing */
int level; /* compression level */
int strategy; /* compression strategy */
+ int reset; /* true if a reset is pending after a Z_FINISH */
/* seek request */
z_off64_t skip; /* amount to skip (already rewound if backwards) */
int seek; /* true if seek request pending */
diff --git a/thirdparty/zlib/gzlib.c b/thirdparty/zlib/gzlib.c
index 4105e6aff9..dddaf26873 100644
--- a/thirdparty/zlib/gzlib.c
+++ b/thirdparty/zlib/gzlib.c
@@ -1,11 +1,11 @@
/* gzlib.c -- zlib functions common to reading and writing gzip files
- * Copyright (C) 2004-2017 Mark Adler
+ * Copyright (C) 2004-2019 Mark Adler
* For conditions of distribution and use, see copyright notice in zlib.h
*/
#include "gzguts.h"
-#if defined(_WIN32) && !defined(__BORLANDC__) && !defined(__MINGW32__)
+#if defined(_WIN32) && !defined(__BORLANDC__)
# define LSEEK _lseeki64
#else
#if defined(_LARGEFILE64_SOURCE) && _LFS64_LARGEFILE-0
@@ -81,6 +81,8 @@ local void gz_reset(state)
state->past = 0; /* have not read past end yet */
state->how = LOOK; /* look for gzip header */
}
+ else /* for writing ... */
+ state->reset = 0; /* no deflateReset pending */
state->seek = 0; /* no seek request pending */
gz_error(state, Z_OK, NULL); /* clear error */
state->x.pos = 0; /* no uncompressed data yet */
@@ -397,7 +399,7 @@ z_off64_t ZEXPORT gzseek64(file, offset, whence)
/* if within raw area while reading, just go there */
if (state->mode == GZ_READ && state->how == COPY &&
state->x.pos + offset >= 0) {
- ret = LSEEK(state->fd, offset - state->x.have, SEEK_CUR);
+ ret = LSEEK(state->fd, offset - (z_off64_t)state->x.have, SEEK_CUR);
if (ret == -1)
return -1;
state->x.have = 0;
diff --git a/thirdparty/zlib/gzread.c b/thirdparty/zlib/gzread.c
index 956b91ea7d..884c9bfe4c 100644
--- a/thirdparty/zlib/gzread.c
+++ b/thirdparty/zlib/gzread.c
@@ -1,5 +1,5 @@
/* gzread.c -- zlib functions for reading gzip files
- * Copyright (C) 2004, 2005, 2010, 2011, 2012, 2013, 2016 Mark Adler
+ * Copyright (C) 2004-2017 Mark Adler
* For conditions of distribution and use, see copyright notice in zlib.h
*/
@@ -314,9 +314,9 @@ local z_size_t gz_read(state, buf, len)
got = 0;
do {
/* set n to the maximum amount of len that fits in an unsigned int */
- n = -1;
+ n = (unsigned)-1;
if (n > len)
- n = len;
+ n = (unsigned)len;
/* first just try copying data from the output buffer */
if (state->x.have) {
@@ -397,7 +397,7 @@ int ZEXPORT gzread(file, buf, len)
}
/* read len or fewer bytes to buf */
- len = gz_read(state, buf, len);
+ len = (unsigned)gz_read(state, buf, len);
/* check for an error */
if (len == 0 && state->err != Z_OK && state->err != Z_BUF_ERROR)
@@ -447,7 +447,6 @@ z_size_t ZEXPORT gzfread(buf, size, nitems, file)
int ZEXPORT gzgetc(file)
gzFile file;
{
- int ret;
unsigned char buf[1];
gz_statep state;
@@ -469,8 +468,7 @@ int ZEXPORT gzgetc(file)
}
/* nothing there -- try gz_read() */
- ret = gz_read(state, buf, 1);
- return ret < 1 ? -1 : buf[0];
+ return gz_read(state, buf, 1) < 1 ? -1 : buf[0];
}
int ZEXPORT gzgetc_(file)
diff --git a/thirdparty/zlib/gzwrite.c b/thirdparty/zlib/gzwrite.c
index c7b5651d70..a8ffc8f53d 100644
--- a/thirdparty/zlib/gzwrite.c
+++ b/thirdparty/zlib/gzwrite.c
@@ -1,5 +1,5 @@
/* gzwrite.c -- zlib functions for writing gzip files
- * Copyright (C) 2004-2017 Mark Adler
+ * Copyright (C) 2004-2019 Mark Adler
* For conditions of distribution and use, see copyright notice in zlib.h
*/
@@ -97,6 +97,15 @@ local int gz_comp(state, flush)
return 0;
}
+ /* check for a pending reset */
+ if (state->reset) {
+ /* don't start a new gzip member unless there is data to write */
+ if (strm->avail_in == 0)
+ return 0;
+ deflateReset(strm);
+ state->reset = 0;
+ }
+
/* run deflate() on provided input until it produces no more output */
ret = Z_OK;
do {
@@ -134,7 +143,7 @@ local int gz_comp(state, flush)
/* if that completed a deflate stream, allow another to start */
if (flush == Z_FINISH)
- deflateReset(strm);
+ state->reset = 1;
/* all done, no errors */
return 0;
@@ -209,7 +218,7 @@ local z_size_t gz_write(state, buf, len)
state->in);
copy = state->size - have;
if (copy > len)
- copy = len;
+ copy = (unsigned)len;
memcpy(state->in + have, buf, copy);
state->strm.avail_in += copy;
state->x.pos += copy;
@@ -229,7 +238,7 @@ local z_size_t gz_write(state, buf, len)
do {
unsigned n = (unsigned)-1;
if (n > len)
- n = len;
+ n = (unsigned)len;
state->strm.avail_in = n;
state->x.pos += n;
if (gz_comp(state, Z_NO_FLUSH) == -1)
@@ -349,12 +358,11 @@ int ZEXPORT gzputc(file, c)
}
/* -- see zlib.h -- */
-int ZEXPORT gzputs(file, str)
+int ZEXPORT gzputs(file, s)
gzFile file;
- const char *str;
+ const char *s;
{
- int ret;
- z_size_t len;
+ z_size_t len, put;
gz_statep state;
/* get internal structure */
@@ -367,9 +375,13 @@ int ZEXPORT gzputs(file, str)
return -1;
/* write string */
- len = strlen(str);
- ret = gz_write(state, str, len);
- return ret == 0 && len != 0 ? -1 : ret;
+ len = strlen(s);
+ if ((int)len < 0 || (unsigned)len != len) {
+ gz_error(state, Z_STREAM_ERROR, "string length does not fit in int");
+ return -1;
+ }
+ put = gz_write(state, s, len);
+ return put < len ? -1 : (int)len;
}
#if defined(STDC) || defined(Z_HAVE_STDARG_H)
@@ -441,7 +453,7 @@ int ZEXPORTVA gzvprintf(gzFile file, const char *format, va_list va)
strm->avail_in = state->size;
if (gz_comp(state, Z_NO_FLUSH) == -1)
return state->err;
- memcpy(state->in, state->in + state->size, left);
+ memmove(state->in, state->in + state->size, left);
strm->next_in = state->in;
strm->avail_in = left;
}
@@ -540,7 +552,7 @@ int ZEXPORTVA gzprintf (file, format, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10,
strm->avail_in = state->size;
if (gz_comp(state, Z_NO_FLUSH) == -1)
return state->err;
- memcpy(state->in, state->in + state->size, left);
+ memmove(state->in, state->in + state->size, left);
strm->next_in = state->in;
strm->avail_in = left;
}
diff --git a/thirdparty/zlib/infback.c b/thirdparty/zlib/infback.c
index 59679ecbfc..a390c58e81 100644
--- a/thirdparty/zlib/infback.c
+++ b/thirdparty/zlib/infback.c
@@ -1,5 +1,5 @@
/* infback.c -- inflate using a call-back interface
- * Copyright (C) 1995-2016 Mark Adler
+ * Copyright (C) 1995-2022 Mark Adler
* For conditions of distribution and use, see copyright notice in zlib.h
*/
@@ -477,6 +477,7 @@ void FAR *out_desc;
}
Tracev((stderr, "inflate: codes ok\n"));
state->mode = LEN;
+ /* fallthrough */
case LEN:
/* use inflate_fast() if we have enough input and output */
diff --git a/thirdparty/zlib/inffast.c b/thirdparty/zlib/inffast.c
index 0dbd1dbc09..1fec7f363f 100644
--- a/thirdparty/zlib/inffast.c
+++ b/thirdparty/zlib/inffast.c
@@ -70,7 +70,7 @@ unsigned start; /* inflate()'s starting value for strm->avail_out */
code const FAR *dcode; /* local strm->distcode */
unsigned lmask; /* mask for first level of length codes */
unsigned dmask; /* mask for first level of distance codes */
- code here; /* retrieved table entry */
+ code const *here; /* retrieved table entry */
unsigned op; /* code bits, operation, extra bits, or */
/* window position, window bytes to copy */
unsigned len; /* match length, unused bytes */
@@ -107,20 +107,20 @@ unsigned start; /* inflate()'s starting value for strm->avail_out */
hold += (unsigned long)(*in++) << bits;
bits += 8;
}
- here = lcode[hold & lmask];
+ here = lcode + (hold & lmask);
dolen:
- op = (unsigned)(here.bits);
+ op = (unsigned)(here->bits);
hold >>= op;
bits -= op;
- op = (unsigned)(here.op);
+ op = (unsigned)(here->op);
if (op == 0) { /* literal */
- Tracevv((stderr, here.val >= 0x20 && here.val < 0x7f ?
+ Tracevv((stderr, here->val >= 0x20 && here->val < 0x7f ?
"inflate: literal '%c'\n" :
- "inflate: literal 0x%02x\n", here.val));
- *out++ = (unsigned char)(here.val);
+ "inflate: literal 0x%02x\n", here->val));
+ *out++ = (unsigned char)(here->val);
}
else if (op & 16) { /* length base */
- len = (unsigned)(here.val);
+ len = (unsigned)(here->val);
op &= 15; /* number of extra bits */
if (op) {
if (bits < op) {
@@ -138,14 +138,14 @@ unsigned start; /* inflate()'s starting value for strm->avail_out */
hold += (unsigned long)(*in++) << bits;
bits += 8;
}
- here = dcode[hold & dmask];
+ here = dcode + (hold & dmask);
dodist:
- op = (unsigned)(here.bits);
+ op = (unsigned)(here->bits);
hold >>= op;
bits -= op;
- op = (unsigned)(here.op);
+ op = (unsigned)(here->op);
if (op & 16) { /* distance base */
- dist = (unsigned)(here.val);
+ dist = (unsigned)(here->val);
op &= 15; /* number of extra bits */
if (bits < op) {
hold += (unsigned long)(*in++) << bits;
@@ -264,7 +264,7 @@ unsigned start; /* inflate()'s starting value for strm->avail_out */
}
}
else if ((op & 64) == 0) { /* 2nd level distance code */
- here = dcode[here.val + (hold & ((1U << op) - 1))];
+ here = dcode + here->val + (hold & ((1U << op) - 1));
goto dodist;
}
else {
@@ -274,7 +274,7 @@ unsigned start; /* inflate()'s starting value for strm->avail_out */
}
}
else if ((op & 64) == 0) { /* 2nd level length code */
- here = lcode[here.val + (hold & ((1U << op) - 1))];
+ here = lcode + here->val + (hold & ((1U << op) - 1));
goto dolen;
}
else if (op & 32) { /* end-of-block */
diff --git a/thirdparty/zlib/inflate.c b/thirdparty/zlib/inflate.c
index ac333e8c2e..7be8c63662 100644
--- a/thirdparty/zlib/inflate.c
+++ b/thirdparty/zlib/inflate.c
@@ -1,5 +1,5 @@
/* inflate.c -- zlib decompression
- * Copyright (C) 1995-2016 Mark Adler
+ * Copyright (C) 1995-2022 Mark Adler
* For conditions of distribution and use, see copyright notice in zlib.h
*/
@@ -130,6 +130,7 @@ z_streamp strm;
state->mode = HEAD;
state->last = 0;
state->havedict = 0;
+ state->flags = -1;
state->dmax = 32768U;
state->head = Z_NULL;
state->hold = 0;
@@ -447,10 +448,10 @@ unsigned copy;
/* check function to use adler32() for zlib or crc32() for gzip */
#ifdef GUNZIP
-# define UPDATE(check, buf, len) \
+# define UPDATE_CHECK(check, buf, len) \
(state->flags ? crc32(check, buf, len) : adler32(check, buf, len))
#else
-# define UPDATE(check, buf, len) adler32(check, buf, len)
+# define UPDATE_CHECK(check, buf, len) adler32(check, buf, len)
#endif
/* check macros for header crc */
@@ -670,7 +671,6 @@ int flush;
state->mode = FLAGS;
break;
}
- state->flags = 0; /* expect zlib header */
if (state->head != Z_NULL)
state->head->done = -1;
if (!(state->wrap & 1) || /* check if zlib header allowed */
@@ -697,6 +697,7 @@ int flush;
break;
}
state->dmax = 1U << len;
+ state->flags = 0; /* indicate zlib header */
Tracev((stderr, "inflate: zlib header ok\n"));
strm->adler = state->check = adler32(0L, Z_NULL, 0);
state->mode = hold & 0x200 ? DICTID : TYPE;
@@ -722,6 +723,7 @@ int flush;
CRC2(state->check, hold);
INITBITS();
state->mode = TIME;
+ /* fallthrough */
case TIME:
NEEDBITS(32);
if (state->head != Z_NULL)
@@ -730,6 +732,7 @@ int flush;
CRC4(state->check, hold);
INITBITS();
state->mode = OS;
+ /* fallthrough */
case OS:
NEEDBITS(16);
if (state->head != Z_NULL) {
@@ -740,6 +743,7 @@ int flush;
CRC2(state->check, hold);
INITBITS();
state->mode = EXLEN;
+ /* fallthrough */
case EXLEN:
if (state->flags & 0x0400) {
NEEDBITS(16);
@@ -753,6 +757,7 @@ int flush;
else if (state->head != Z_NULL)
state->head->extra = Z_NULL;
state->mode = EXTRA;
+ /* fallthrough */
case EXTRA:
if (state->flags & 0x0400) {
copy = state->length;
@@ -775,6 +780,7 @@ int flush;
}
state->length = 0;
state->mode = NAME;
+ /* fallthrough */
case NAME:
if (state->flags & 0x0800) {
if (have == 0) goto inf_leave;
@@ -796,6 +802,7 @@ int flush;
state->head->name = Z_NULL;
state->length = 0;
state->mode = COMMENT;
+ /* fallthrough */
case COMMENT:
if (state->flags & 0x1000) {
if (have == 0) goto inf_leave;
@@ -816,6 +823,7 @@ int flush;
else if (state->head != Z_NULL)
state->head->comment = Z_NULL;
state->mode = HCRC;
+ /* fallthrough */
case HCRC:
if (state->flags & 0x0200) {
NEEDBITS(16);
@@ -839,6 +847,7 @@ int flush;
strm->adler = state->check = ZSWAP32(hold);
INITBITS();
state->mode = DICT;
+ /* fallthrough */
case DICT:
if (state->havedict == 0) {
RESTORE();
@@ -846,8 +855,10 @@ int flush;
}
strm->adler = state->check = adler32(0L, Z_NULL, 0);
state->mode = TYPE;
+ /* fallthrough */
case TYPE:
if (flush == Z_BLOCK || flush == Z_TREES) goto inf_leave;
+ /* fallthrough */
case TYPEDO:
if (state->last) {
BYTEBITS();
@@ -898,8 +909,10 @@ int flush;
INITBITS();
state->mode = COPY_;
if (flush == Z_TREES) goto inf_leave;
+ /* fallthrough */
case COPY_:
state->mode = COPY;
+ /* fallthrough */
case COPY:
copy = state->length;
if (copy) {
@@ -935,6 +948,7 @@ int flush;
Tracev((stderr, "inflate: table sizes ok\n"));
state->have = 0;
state->mode = LENLENS;
+ /* fallthrough */
case LENLENS:
while (state->have < state->ncode) {
NEEDBITS(3);
@@ -956,6 +970,7 @@ int flush;
Tracev((stderr, "inflate: code lengths ok\n"));
state->have = 0;
state->mode = CODELENS;
+ /* fallthrough */
case CODELENS:
while (state->have < state->nlen + state->ndist) {
for (;;) {
@@ -1039,8 +1054,10 @@ int flush;
Tracev((stderr, "inflate: codes ok\n"));
state->mode = LEN_;
if (flush == Z_TREES) goto inf_leave;
+ /* fallthrough */
case LEN_:
state->mode = LEN;
+ /* fallthrough */
case LEN:
if (have >= 6 && left >= 258) {
RESTORE();
@@ -1090,6 +1107,7 @@ int flush;
}
state->extra = (unsigned)(here.op) & 15;
state->mode = LENEXT;
+ /* fallthrough */
case LENEXT:
if (state->extra) {
NEEDBITS(state->extra);
@@ -1100,6 +1118,7 @@ int flush;
Tracevv((stderr, "inflate: length %u\n", state->length));
state->was = state->length;
state->mode = DIST;
+ /* fallthrough */
case DIST:
for (;;) {
here = state->distcode[BITS(state->distbits)];
@@ -1127,6 +1146,7 @@ int flush;
state->offset = (unsigned)here.val;
state->extra = (unsigned)(here.op) & 15;
state->mode = DISTEXT;
+ /* fallthrough */
case DISTEXT:
if (state->extra) {
NEEDBITS(state->extra);
@@ -1143,6 +1163,7 @@ int flush;
#endif
Tracevv((stderr, "inflate: distance %u\n", state->offset));
state->mode = MATCH;
+ /* fallthrough */
case MATCH:
if (left == 0) goto inf_leave;
copy = out - left;
@@ -1202,7 +1223,7 @@ int flush;
state->total += out;
if ((state->wrap & 4) && out)
strm->adler = state->check =
- UPDATE(state->check, put - out, out);
+ UPDATE_CHECK(state->check, put - out, out);
out = left;
if ((state->wrap & 4) && (
#ifdef GUNZIP
@@ -1218,10 +1239,11 @@ int flush;
}
#ifdef GUNZIP
state->mode = LENGTH;
+ /* fallthrough */
case LENGTH:
if (state->wrap && state->flags) {
NEEDBITS(32);
- if (hold != (state->total & 0xffffffffUL)) {
+ if ((state->wrap & 4) && hold != (state->total & 0xffffffff)) {
strm->msg = (char *)"incorrect length check";
state->mode = BAD;
break;
@@ -1231,6 +1253,7 @@ int flush;
}
#endif
state->mode = DONE;
+ /* fallthrough */
case DONE:
ret = Z_STREAM_END;
goto inf_leave;
@@ -1240,6 +1263,7 @@ int flush;
case MEM:
return Z_MEM_ERROR;
case SYNC:
+ /* fallthrough */
default:
return Z_STREAM_ERROR;
}
@@ -1265,7 +1289,7 @@ int flush;
state->total += out;
if ((state->wrap & 4) && out)
strm->adler = state->check =
- UPDATE(state->check, strm->next_out - out, out);
+ UPDATE_CHECK(state->check, strm->next_out - out, out);
strm->data_type = (int)state->bits + (state->last ? 64 : 0) +
(state->mode == TYPE ? 128 : 0) +
(state->mode == LEN_ || state->mode == COPY_ ? 256 : 0);
@@ -1401,6 +1425,7 @@ int ZEXPORT inflateSync(strm)
z_streamp strm;
{
unsigned len; /* number of bytes to look at or looked at */
+ int flags; /* temporary to save header status */
unsigned long in, out; /* temporary to save total_in and total_out */
unsigned char buf[4]; /* to restore bit buffer to byte string */
struct inflate_state FAR *state;
@@ -1433,9 +1458,15 @@ z_streamp strm;
/* return no joy or set up to restart inflate() on a new block */
if (state->have != 4) return Z_DATA_ERROR;
+ if (state->flags == -1)
+ state->wrap = 0; /* if no header yet, treat as raw */
+ else
+ state->wrap &= ~4; /* no point in computing a check value now */
+ flags = state->flags;
in = strm->total_in; out = strm->total_out;
inflateReset(strm);
strm->total_in = in; strm->total_out = out;
+ state->flags = flags;
state->mode = TYPE;
return Z_OK;
}
@@ -1531,7 +1562,7 @@ int check;
if (inflateStateCheck(strm)) return Z_STREAM_ERROR;
state = (struct inflate_state FAR *)strm->state;
- if (check)
+ if (check && state->wrap)
state->wrap |= 4;
else
state->wrap &= ~4;
diff --git a/thirdparty/zlib/inflate.h b/thirdparty/zlib/inflate.h
index a46cce6b6d..f127b6b1fa 100644
--- a/thirdparty/zlib/inflate.h
+++ b/thirdparty/zlib/inflate.h
@@ -1,5 +1,5 @@
/* inflate.h -- internal inflate state definition
- * Copyright (C) 1995-2016 Mark Adler
+ * Copyright (C) 1995-2019 Mark Adler
* For conditions of distribution and use, see copyright notice in zlib.h
*/
@@ -86,7 +86,8 @@ struct inflate_state {
int wrap; /* bit 0 true for zlib, bit 1 true for gzip,
bit 2 true to validate check value */
int havedict; /* true if dictionary provided */
- int flags; /* gzip header method and flags (0 if zlib) */
+ int flags; /* gzip header method and flags, 0 if zlib, or
+ -1 if raw or no header yet */
unsigned dmax; /* zlib header max distance (INFLATE_STRICT) */
unsigned long check; /* protected copy of check value */
unsigned long total; /* protected copy of output count */
diff --git a/thirdparty/zlib/inftrees.c b/thirdparty/zlib/inftrees.c
index 2ea08fc13e..09462a740b 100644
--- a/thirdparty/zlib/inftrees.c
+++ b/thirdparty/zlib/inftrees.c
@@ -1,5 +1,5 @@
/* inftrees.c -- generate Huffman trees for efficient decoding
- * Copyright (C) 1995-2017 Mark Adler
+ * Copyright (C) 1995-2022 Mark Adler
* For conditions of distribution and use, see copyright notice in zlib.h
*/
@@ -9,7 +9,7 @@
#define MAXBITS 15
const char inflate_copyright[] =
- " inflate 1.2.11 Copyright 1995-2017 Mark Adler ";
+ " inflate 1.2.12 Copyright 1995-2022 Mark Adler ";
/*
If you use the zlib library in a product, an acknowledgment is welcome
in the documentation of your product. If for some reason you cannot
@@ -62,7 +62,7 @@ unsigned short FAR *work;
35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 0, 0};
static const unsigned short lext[31] = { /* Length codes 257..285 extra */
16, 16, 16, 16, 16, 16, 16, 16, 17, 17, 17, 17, 18, 18, 18, 18,
- 19, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 16, 77, 202};
+ 19, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 16, 199, 202};
static const unsigned short dbase[32] = { /* Distance codes 0..29 base */
1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193,
257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145,
diff --git a/thirdparty/zlib/trees.c b/thirdparty/zlib/trees.c
index 50cf4b4571..f73fd99c37 100644
--- a/thirdparty/zlib/trees.c
+++ b/thirdparty/zlib/trees.c
@@ -1,5 +1,5 @@
/* trees.c -- output deflated data using Huffman coding
- * Copyright (C) 1995-2017 Jean-loup Gailly
+ * Copyright (C) 1995-2021 Jean-loup Gailly
* detect_data_type() function provided freely by Cosmin Truta, 2006
* For conditions of distribution and use, see copyright notice in zlib.h
*/
@@ -149,7 +149,7 @@ local void send_all_trees OF((deflate_state *s, int lcodes, int dcodes,
local void compress_block OF((deflate_state *s, const ct_data *ltree,
const ct_data *dtree));
local int detect_data_type OF((deflate_state *s));
-local unsigned bi_reverse OF((unsigned value, int length));
+local unsigned bi_reverse OF((unsigned code, int len));
local void bi_windup OF((deflate_state *s));
local void bi_flush OF((deflate_state *s));
@@ -416,7 +416,7 @@ local void init_block(s)
s->dyn_ltree[END_BLOCK].Freq = 1;
s->opt_len = s->static_len = 0L;
- s->last_lit = s->matches = 0;
+ s->sym_next = s->matches = 0;
}
#define SMALLEST 1
@@ -870,7 +870,8 @@ void ZLIB_INTERNAL _tr_stored_block(s, buf, stored_len, last)
bi_windup(s); /* align on byte boundary */
put_short(s, (ush)stored_len);
put_short(s, (ush)~stored_len);
- zmemcpy(s->pending_buf + s->pending, (Bytef *)buf, stored_len);
+ if (stored_len)
+ zmemcpy(s->pending_buf + s->pending, (Bytef *)buf, stored_len);
s->pending += stored_len;
#ifdef ZLIB_DEBUG
s->compressed_len = (s->compressed_len + 3 + 7) & (ulg)~7L;
@@ -947,7 +948,7 @@ void ZLIB_INTERNAL _tr_flush_block(s, buf, stored_len, last)
Tracev((stderr, "\nopt %lu(%lu) stat %lu(%lu) stored %lu lit %u ",
opt_lenb, s->opt_len, static_lenb, s->static_len, stored_len,
- s->last_lit));
+ s->sym_next / 3));
if (static_lenb <= opt_lenb) opt_lenb = static_lenb;
@@ -1016,8 +1017,9 @@ int ZLIB_INTERNAL _tr_tally (s, dist, lc)
unsigned dist; /* distance of matched string */
unsigned lc; /* match length-MIN_MATCH or unmatched char (if dist==0) */
{
- s->d_buf[s->last_lit] = (ush)dist;
- s->l_buf[s->last_lit++] = (uch)lc;
+ s->sym_buf[s->sym_next++] = dist;
+ s->sym_buf[s->sym_next++] = dist >> 8;
+ s->sym_buf[s->sym_next++] = lc;
if (dist == 0) {
/* lc is the unmatched char */
s->dyn_ltree[lc].Freq++;
@@ -1032,30 +1034,7 @@ int ZLIB_INTERNAL _tr_tally (s, dist, lc)
s->dyn_ltree[_length_code[lc]+LITERALS+1].Freq++;
s->dyn_dtree[d_code(dist)].Freq++;
}
-
-#ifdef TRUNCATE_BLOCK
- /* Try to guess if it is profitable to stop the current block here */
- if ((s->last_lit & 0x1fff) == 0 && s->level > 2) {
- /* Compute an upper bound for the compressed length */
- ulg out_length = (ulg)s->last_lit*8L;
- ulg in_length = (ulg)((long)s->strstart - s->block_start);
- int dcode;
- for (dcode = 0; dcode < D_CODES; dcode++) {
- out_length += (ulg)s->dyn_dtree[dcode].Freq *
- (5L+extra_dbits[dcode]);
- }
- out_length >>= 3;
- Tracev((stderr,"\nlast_lit %u, in %ld, out ~%ld(%ld%%) ",
- s->last_lit, in_length, out_length,
- 100L - out_length*100L/in_length));
- if (s->matches < s->last_lit/2 && out_length < in_length/2) return 1;
- }
-#endif
- return (s->last_lit == s->lit_bufsize-1);
- /* We avoid equality with lit_bufsize because of wraparound at 64K
- * on 16 bit machines and because stored blocks are restricted to
- * 64K-1 bytes.
- */
+ return (s->sym_next == s->sym_end);
}
/* ===========================================================================
@@ -1068,13 +1047,14 @@ local void compress_block(s, ltree, dtree)
{
unsigned dist; /* distance of matched string */
int lc; /* match length or unmatched char (if dist == 0) */
- unsigned lx = 0; /* running index in l_buf */
+ unsigned sx = 0; /* running index in sym_buf */
unsigned code; /* the code to send */
int extra; /* number of extra bits to send */
- if (s->last_lit != 0) do {
- dist = s->d_buf[lx];
- lc = s->l_buf[lx++];
+ if (s->sym_next != 0) do {
+ dist = s->sym_buf[sx++] & 0xff;
+ dist += (unsigned)(s->sym_buf[sx++] & 0xff) << 8;
+ lc = s->sym_buf[sx++];
if (dist == 0) {
send_code(s, lc, ltree); /* send a literal byte */
Tracecv(isgraph(lc), (stderr," '%c' ", lc));
@@ -1099,11 +1079,10 @@ local void compress_block(s, ltree, dtree)
}
} /* literal or match pair ? */
- /* Check that the overlay between pending_buf and d_buf+l_buf is ok: */
- Assert((uInt)(s->pending) < s->lit_bufsize + 2*lx,
- "pendingBuf overflow");
+ /* Check that the overlay between pending_buf and sym_buf is ok: */
+ Assert(s->pending < s->lit_bufsize + sx, "pendingBuf overflow");
- } while (lx < s->last_lit);
+ } while (sx < s->sym_next);
send_code(s, END_BLOCK, ltree);
}
@@ -1112,9 +1091,9 @@ local void compress_block(s, ltree, dtree)
* Check if the data type is TEXT or BINARY, using the following algorithm:
* - TEXT if the two conditions below are satisfied:
* a) There are no non-portable control characters belonging to the
- * "black list" (0..6, 14..25, 28..31).
+ * "block list" (0..6, 14..25, 28..31).
* b) There is at least one printable character belonging to the
- * "white list" (9 {TAB}, 10 {LF}, 13 {CR}, 32..255).
+ * "allow list" (9 {TAB}, 10 {LF}, 13 {CR}, 32..255).
* - BINARY otherwise.
* - The following partially-portable control characters form a
* "gray list" that is ignored in this detection algorithm:
@@ -1124,19 +1103,19 @@ local void compress_block(s, ltree, dtree)
local int detect_data_type(s)
deflate_state *s;
{
- /* black_mask is the bit mask of black-listed bytes
+ /* block_mask is the bit mask of block-listed bytes
* set bits 0..6, 14..25, and 28..31
* 0xf3ffc07f = binary 11110011111111111100000001111111
*/
- unsigned long black_mask = 0xf3ffc07fUL;
+ unsigned long block_mask = 0xf3ffc07fUL;
int n;
- /* Check for non-textual ("black-listed") bytes. */
- for (n = 0; n <= 31; n++, black_mask >>= 1)
- if ((black_mask & 1) && (s->dyn_ltree[n].Freq != 0))
+ /* Check for non-textual ("block-listed") bytes. */
+ for (n = 0; n <= 31; n++, block_mask >>= 1)
+ if ((block_mask & 1) && (s->dyn_ltree[n].Freq != 0))
return Z_BINARY;
- /* Check for textual ("white-listed") bytes. */
+ /* Check for textual ("allow-listed") bytes. */
if (s->dyn_ltree[9].Freq != 0 || s->dyn_ltree[10].Freq != 0
|| s->dyn_ltree[13].Freq != 0)
return Z_TEXT;
@@ -1144,7 +1123,7 @@ local int detect_data_type(s)
if (s->dyn_ltree[n].Freq != 0)
return Z_TEXT;
- /* There are no "black-listed" or "white-listed" bytes:
+ /* There are no "block-listed" or "allow-listed" bytes:
* this stream either is empty or has tolerated ("gray-listed") bytes only.
*/
return Z_BINARY;
diff --git a/thirdparty/zlib/zlib.h b/thirdparty/zlib/zlib.h
index f09cdaf1e0..4a98e38bf3 100644
--- a/thirdparty/zlib/zlib.h
+++ b/thirdparty/zlib/zlib.h
@@ -1,7 +1,7 @@
/* zlib.h -- interface of the 'zlib' general purpose compression library
- version 1.2.11, January 15th, 2017
+ version 1.2.12, March 11th, 2022
- Copyright (C) 1995-2017 Jean-loup Gailly and Mark Adler
+ Copyright (C) 1995-2022 Jean-loup Gailly and Mark Adler
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
@@ -37,11 +37,11 @@
extern "C" {
#endif
-#define ZLIB_VERSION "1.2.11"
-#define ZLIB_VERNUM 0x12b0
+#define ZLIB_VERSION "1.2.12"
+#define ZLIB_VERNUM 0x12c0
#define ZLIB_VER_MAJOR 1
#define ZLIB_VER_MINOR 2
-#define ZLIB_VER_REVISION 11
+#define ZLIB_VER_REVISION 12
#define ZLIB_VER_SUBREVISION 0
/*
@@ -543,8 +543,7 @@ ZEXTERN int ZEXPORT deflateInit2 OF((z_streamp strm,
int strategy));
This is another version of deflateInit with more compression options. The
- fields next_in, zalloc, zfree and opaque must be initialized before by the
- caller.
+ fields zalloc, zfree and opaque must be initialized before by the caller.
The method parameter is the compression method. It must be Z_DEFLATED in
this version of the library.
@@ -712,11 +711,12 @@ ZEXTERN int ZEXPORT deflateParams OF((z_streamp strm,
used to switch between compression and straight copy of the input data, or
to switch to a different kind of input data requiring a different strategy.
If the compression approach (which is a function of the level) or the
- strategy is changed, and if any input has been consumed in a previous
- deflate() call, then the input available so far is compressed with the old
- level and strategy using deflate(strm, Z_BLOCK). There are three approaches
- for the compression levels 0, 1..3, and 4..9 respectively. The new level
- and strategy will take effect at the next call of deflate().
+ strategy is changed, and if there have been any deflate() calls since the
+ state was initialized or reset, then the input available so far is
+ compressed with the old level and strategy using deflate(strm, Z_BLOCK).
+ There are three approaches for the compression levels 0, 1..3, and 4..9
+ respectively. The new level and strategy will take effect at the next call
+ of deflate().
If a deflate(strm, Z_BLOCK) is performed by deflateParams(), and it does
not have enough output space to complete, then the parameter change will not
@@ -865,9 +865,11 @@ ZEXTERN int ZEXPORT inflateInit2 OF((z_streamp strm,
detection, or add 16 to decode only the gzip format (the zlib format will
return a Z_DATA_ERROR). If a gzip stream is being decoded, strm->adler is a
CRC-32 instead of an Adler-32. Unlike the gunzip utility and gzread() (see
- below), inflate() will not automatically decode concatenated gzip streams.
- inflate() will return Z_STREAM_END at the end of the gzip stream. The state
- would need to be reset to continue decoding a subsequent gzip stream.
+ below), inflate() will *not* automatically decode concatenated gzip members.
+ inflate() will return Z_STREAM_END at the end of the gzip member. The state
+ would need to be reset to continue decoding a subsequent gzip member. This
+ *must* be done if there is more data after a gzip member, in order for the
+ decompression to be compliant with the gzip standard (RFC 1952).
inflateInit2 returns Z_OK if success, Z_MEM_ERROR if there was not enough
memory, Z_VERSION_ERROR if the zlib library version is incompatible with the
@@ -1302,14 +1304,14 @@ typedef struct gzFile_s *gzFile; /* semi-opaque gzip file descriptor */
/*
ZEXTERN gzFile ZEXPORT gzopen OF((const char *path, const char *mode));
- Opens a gzip (.gz) file for reading or writing. The mode parameter is as
- in fopen ("rb" or "wb") but can also include a compression level ("wb9") or
- a strategy: 'f' for filtered data as in "wb6f", 'h' for Huffman-only
- compression as in "wb1h", 'R' for run-length encoding as in "wb1R", or 'F'
- for fixed code compression as in "wb9F". (See the description of
- deflateInit2 for more information about the strategy parameter.) 'T' will
- request transparent writing or appending with no compression and not using
- the gzip format.
+ Open the gzip (.gz) file at path for reading and decompressing, or
+ compressing and writing. The mode parameter is as in fopen ("rb" or "wb")
+ but can also include a compression level ("wb9") or a strategy: 'f' for
+ filtered data as in "wb6f", 'h' for Huffman-only compression as in "wb1h",
+ 'R' for run-length encoding as in "wb1R", or 'F' for fixed code compression
+ as in "wb9F". (See the description of deflateInit2 for more information
+ about the strategy parameter.) 'T' will request transparent writing or
+ appending with no compression and not using the gzip format.
"a" can be used instead of "w" to request that the gzip stream that will
be written be appended to the file. "+" will result in an error, since
@@ -1339,9 +1341,9 @@ ZEXTERN gzFile ZEXPORT gzopen OF((const char *path, const char *mode));
ZEXTERN gzFile ZEXPORT gzdopen OF((int fd, const char *mode));
/*
- gzdopen associates a gzFile with the file descriptor fd. File descriptors
- are obtained from calls like open, dup, creat, pipe or fileno (if the file
- has been previously opened with fopen). The mode parameter is as in gzopen.
+ Associate a gzFile with the file descriptor fd. File descriptors are
+ obtained from calls like open, dup, creat, pipe or fileno (if the file has
+ been previously opened with fopen). The mode parameter is as in gzopen.
The next call of gzclose on the returned gzFile will also close the file
descriptor fd, just like fclose(fdopen(fd, mode)) closes the file descriptor
@@ -1362,13 +1364,13 @@ ZEXTERN gzFile ZEXPORT gzdopen OF((int fd, const char *mode));
ZEXTERN int ZEXPORT gzbuffer OF((gzFile file, unsigned size));
/*
- Set the internal buffer size used by this library's functions. The
- default buffer size is 8192 bytes. This function must be called after
- gzopen() or gzdopen(), and before any other calls that read or write the
- file. The buffer memory allocation is always deferred to the first read or
- write. Three times that size in buffer space is allocated. A larger buffer
- size of, for example, 64K or 128K bytes will noticeably increase the speed
- of decompression (reading).
+ Set the internal buffer size used by this library's functions for file to
+ size. The default buffer size is 8192 bytes. This function must be called
+ after gzopen() or gzdopen(), and before any other calls that read or write
+ the file. The buffer memory allocation is always deferred to the first read
+ or write. Three times that size in buffer space is allocated. A larger
+ buffer size of, for example, 64K or 128K bytes will noticeably increase the
+ speed of decompression (reading).
The new buffer size also affects the maximum length for gzprintf().
@@ -1378,9 +1380,9 @@ ZEXTERN int ZEXPORT gzbuffer OF((gzFile file, unsigned size));
ZEXTERN int ZEXPORT gzsetparams OF((gzFile file, int level, int strategy));
/*
- Dynamically update the compression level or strategy. See the description
- of deflateInit2 for the meaning of these parameters. Previously provided
- data is flushed before the parameter change.
+ Dynamically update the compression level and strategy for file. See the
+ description of deflateInit2 for the meaning of these parameters. Previously
+ provided data is flushed before applying the parameter changes.
gzsetparams returns Z_OK if success, Z_STREAM_ERROR if the file was not
opened for writing, Z_ERRNO if there is an error writing the flushed data,
@@ -1389,7 +1391,7 @@ ZEXTERN int ZEXPORT gzsetparams OF((gzFile file, int level, int strategy));
ZEXTERN int ZEXPORT gzread OF((gzFile file, voidp buf, unsigned len));
/*
- Reads the given number of uncompressed bytes from the compressed file. If
+ Read and decompress up to len uncompressed bytes from file into buf. If
the input file is not in gzip format, gzread copies the given number of
bytes into the buffer directly from the file.
@@ -1420,11 +1422,11 @@ ZEXTERN int ZEXPORT gzread OF((gzFile file, voidp buf, unsigned len));
ZEXTERN z_size_t ZEXPORT gzfread OF((voidp buf, z_size_t size, z_size_t nitems,
gzFile file));
/*
- Read up to nitems items of size size from file to buf, otherwise operating
- as gzread() does. This duplicates the interface of stdio's fread(), with
- size_t request and return types. If the library defines size_t, then
- z_size_t is identical to size_t. If not, then z_size_t is an unsigned
- integer type that can contain a pointer.
+ Read and decompress up to nitems items of size size from file into buf,
+ otherwise operating as gzread() does. This duplicates the interface of
+ stdio's fread(), with size_t request and return types. If the library
+ defines size_t, then z_size_t is identical to size_t. If not, then z_size_t
+ is an unsigned integer type that can contain a pointer.
gzfread() returns the number of full items read of size size, or zero if
the end of the file was reached and a full item could not be read, or if
@@ -1443,18 +1445,16 @@ ZEXTERN z_size_t ZEXPORT gzfread OF((voidp buf, z_size_t size, z_size_t nitems,
file, reseting and retrying on end-of-file, when size is not 1.
*/
-ZEXTERN int ZEXPORT gzwrite OF((gzFile file,
- voidpc buf, unsigned len));
+ZEXTERN int ZEXPORT gzwrite OF((gzFile file, voidpc buf, unsigned len));
/*
- Writes the given number of uncompressed bytes into the compressed file.
- gzwrite returns the number of uncompressed bytes written or 0 in case of
- error.
+ Compress and write the len uncompressed bytes at buf to file. gzwrite
+ returns the number of uncompressed bytes written or 0 in case of error.
*/
ZEXTERN z_size_t ZEXPORT gzfwrite OF((voidpc buf, z_size_t size,
z_size_t nitems, gzFile file));
/*
- gzfwrite() writes nitems items of size size from buf to file, duplicating
+ Compress and write nitems items of size size from buf to file, duplicating
the interface of stdio's fwrite(), with size_t request and return types. If
the library defines size_t, then z_size_t is identical to size_t. If not,
then z_size_t is an unsigned integer type that can contain a pointer.
@@ -1467,22 +1467,22 @@ ZEXTERN z_size_t ZEXPORT gzfwrite OF((voidpc buf, z_size_t size,
ZEXTERN int ZEXPORTVA gzprintf Z_ARG((gzFile file, const char *format, ...));
/*
- Converts, formats, and writes the arguments to the compressed file under
- control of the format string, as in fprintf. gzprintf returns the number of
+ Convert, format, compress, and write the arguments (...) to file under
+ control of the string format, as in fprintf. gzprintf returns the number of
uncompressed bytes actually written, or a negative zlib error code in case
of error. The number of uncompressed bytes written is limited to 8191, or
one less than the buffer size given to gzbuffer(). The caller should assure
that this limit is not exceeded. If it is exceeded, then gzprintf() will
return an error (0) with nothing written. In this case, there may also be a
buffer overflow with unpredictable consequences, which is possible only if
- zlib was compiled with the insecure functions sprintf() or vsprintf()
+ zlib was compiled with the insecure functions sprintf() or vsprintf(),
because the secure snprintf() or vsnprintf() functions were not available.
This can be determined using zlibCompileFlags().
*/
ZEXTERN int ZEXPORT gzputs OF((gzFile file, const char *s));
/*
- Writes the given null-terminated string to the compressed file, excluding
+ Compress and write the given null-terminated string s to file, excluding
the terminating null character.
gzputs returns the number of characters written, or -1 in case of error.
@@ -1490,11 +1490,12 @@ ZEXTERN int ZEXPORT gzputs OF((gzFile file, const char *s));
ZEXTERN char * ZEXPORT gzgets OF((gzFile file, char *buf, int len));
/*
- Reads bytes from the compressed file until len-1 characters are read, or a
- newline character is read and transferred to buf, or an end-of-file
- condition is encountered. If any characters are read or if len == 1, the
- string is terminated with a null character. If no characters are read due
- to an end-of-file or len < 1, then the buffer is left untouched.
+ Read and decompress bytes from file into buf, until len-1 characters are
+ read, or until a newline character is read and transferred to buf, or an
+ end-of-file condition is encountered. If any characters are read or if len
+ is one, the string is terminated with a null character. If no characters
+ are read due to an end-of-file or len is less than one, then the buffer is
+ left untouched.
gzgets returns buf which is a null-terminated string, or it returns NULL
for end-of-file or in case of error. If there was an error, the contents at
@@ -1503,13 +1504,13 @@ ZEXTERN char * ZEXPORT gzgets OF((gzFile file, char *buf, int len));
ZEXTERN int ZEXPORT gzputc OF((gzFile file, int c));
/*
- Writes c, converted to an unsigned char, into the compressed file. gzputc
+ Compress and write c, converted to an unsigned char, into file. gzputc
returns the value that was written, or -1 in case of error.
*/
ZEXTERN int ZEXPORT gzgetc OF((gzFile file));
/*
- Reads one byte from the compressed file. gzgetc returns this byte or -1
+ Read and decompress one byte from file. gzgetc returns this byte or -1
in case of end of file or error. This is implemented as a macro for speed.
As such, it does not do all of the checking the other functions do. I.e.
it does not check to see if file is NULL, nor whether the structure file
@@ -1518,8 +1519,8 @@ ZEXTERN int ZEXPORT gzgetc OF((gzFile file));
ZEXTERN int ZEXPORT gzungetc OF((int c, gzFile file));
/*
- Push one character back onto the stream to be read as the first character
- on the next read. At least one character of push-back is allowed.
+ Push c back onto the stream for file to be read as the first character on
+ the next read. At least one character of push-back is always allowed.
gzungetc() returns the character pushed, or -1 on failure. gzungetc() will
fail if c is -1, and may fail if a character has been pushed but not read
yet. If gzungetc is used immediately after gzopen or gzdopen, at least the
@@ -1530,9 +1531,9 @@ ZEXTERN int ZEXPORT gzungetc OF((int c, gzFile file));
ZEXTERN int ZEXPORT gzflush OF((gzFile file, int flush));
/*
- Flushes all pending output into the compressed file. The parameter flush
- is as in the deflate() function. The return value is the zlib error number
- (see function gzerror below). gzflush is only permitted when writing.
+ Flush all pending output to file. The parameter flush is as in the
+ deflate() function. The return value is the zlib error number (see function
+ gzerror below). gzflush is only permitted when writing.
If the flush parameter is Z_FINISH, the remaining data is written and the
gzip stream is completed in the output. If gzwrite() is called again, a new
@@ -1547,8 +1548,8 @@ ZEXTERN int ZEXPORT gzflush OF((gzFile file, int flush));
ZEXTERN z_off_t ZEXPORT gzseek OF((gzFile file,
z_off_t offset, int whence));
- Sets the starting position for the next gzread or gzwrite on the given
- compressed file. The offset represents a number of bytes in the
+ Set the starting position to offset relative to whence for the next gzread
+ or gzwrite on file. The offset represents a number of bytes in the
uncompressed data stream. The whence parameter is defined as in lseek(2);
the value SEEK_END is not supported.
@@ -1565,18 +1566,18 @@ ZEXTERN z_off_t ZEXPORT gzseek OF((gzFile file,
ZEXTERN int ZEXPORT gzrewind OF((gzFile file));
/*
- Rewinds the given file. This function is supported only for reading.
+ Rewind file. This function is supported only for reading.
- gzrewind(file) is equivalent to (int)gzseek(file, 0L, SEEK_SET)
+ gzrewind(file) is equivalent to (int)gzseek(file, 0L, SEEK_SET).
*/
/*
ZEXTERN z_off_t ZEXPORT gztell OF((gzFile file));
- Returns the starting position for the next gzread or gzwrite on the given
- compressed file. This position represents a number of bytes in the
- uncompressed data stream, and is zero when starting, even if appending or
- reading a gzip stream from the middle of a file using gzdopen().
+ Return the starting position for the next gzread or gzwrite on file.
+ This position represents a number of bytes in the uncompressed data stream,
+ and is zero when starting, even if appending or reading a gzip stream from
+ the middle of a file using gzdopen().
gztell(file) is equivalent to gzseek(file, 0L, SEEK_CUR)
*/
@@ -1584,22 +1585,22 @@ ZEXTERN z_off_t ZEXPORT gztell OF((gzFile file));
/*
ZEXTERN z_off_t ZEXPORT gzoffset OF((gzFile file));
- Returns the current offset in the file being read or written. This offset
- includes the count of bytes that precede the gzip stream, for example when
- appending or when using gzdopen() for reading. When reading, the offset
- does not include as yet unused buffered input. This information can be used
- for a progress indicator. On error, gzoffset() returns -1.
+ Return the current compressed (actual) read or write offset of file. This
+ offset includes the count of bytes that precede the gzip stream, for example
+ when appending or when using gzdopen() for reading. When reading, the
+ offset does not include as yet unused buffered input. This information can
+ be used for a progress indicator. On error, gzoffset() returns -1.
*/
ZEXTERN int ZEXPORT gzeof OF((gzFile file));
/*
- Returns true (1) if the end-of-file indicator has been set while reading,
- false (0) otherwise. Note that the end-of-file indicator is set only if the
- read tried to go past the end of the input, but came up short. Therefore,
- just like feof(), gzeof() may return false even if there is no more data to
- read, in the event that the last read request was for the exact number of
- bytes remaining in the input file. This will happen if the input file size
- is an exact multiple of the buffer size.
+ Return true (1) if the end-of-file indicator for file has been set while
+ reading, false (0) otherwise. Note that the end-of-file indicator is set
+ only if the read tried to go past the end of the input, but came up short.
+ Therefore, just like feof(), gzeof() may return false even if there is no
+ more data to read, in the event that the last read request was for the exact
+ number of bytes remaining in the input file. This will happen if the input
+ file size is an exact multiple of the buffer size.
If gzeof() returns true, then the read functions will return no more data,
unless the end-of-file indicator is reset by gzclearerr() and the input file
@@ -1608,7 +1609,7 @@ ZEXTERN int ZEXPORT gzeof OF((gzFile file));
ZEXTERN int ZEXPORT gzdirect OF((gzFile file));
/*
- Returns true (1) if file is being copied directly while reading, or false
+ Return true (1) if file is being copied directly while reading, or false
(0) if file is a gzip stream being decompressed.
If the input file is empty, gzdirect() will return true, since the input
@@ -1629,8 +1630,8 @@ ZEXTERN int ZEXPORT gzdirect OF((gzFile file));
ZEXTERN int ZEXPORT gzclose OF((gzFile file));
/*
- Flushes all pending output if necessary, closes the compressed file and
- deallocates the (de)compression state. Note that once file is closed, you
+ Flush all pending output for file, if necessary, close file and
+ deallocate the (de)compression state. Note that once file is closed, you
cannot call gzerror with file, since its structures have been deallocated.
gzclose must not be called more than once on the same file, just as free
must not be called more than once on the same allocation.
@@ -1654,10 +1655,10 @@ ZEXTERN int ZEXPORT gzclose_w OF((gzFile file));
ZEXTERN const char * ZEXPORT gzerror OF((gzFile file, int *errnum));
/*
- Returns the error message for the last error which occurred on the given
- compressed file. errnum is set to zlib error number. If an error occurred
- in the file system and not in the compression library, errnum is set to
- Z_ERRNO and the application may consult errno to get the exact error code.
+ Return the error message for the last error which occurred on file.
+ errnum is set to zlib error number. If an error occurred in the file system
+ and not in the compression library, errnum is set to Z_ERRNO and the
+ application may consult errno to get the exact error code.
The application must not modify the returned string. Future calls to
this function may invalidate the previously returned string. If file is
@@ -1670,7 +1671,7 @@ ZEXTERN const char * ZEXPORT gzerror OF((gzFile file, int *errnum));
ZEXTERN void ZEXPORT gzclearerr OF((gzFile file));
/*
- Clears the error and end-of-file flags for file. This is analogous to the
+ Clear the error and end-of-file flags for file. This is analogous to the
clearerr() function in stdio. This is useful for continuing to read a gzip
file that is being written concurrently.
*/
@@ -1688,8 +1689,9 @@ ZEXTERN void ZEXPORT gzclearerr OF((gzFile file));
ZEXTERN uLong ZEXPORT adler32 OF((uLong adler, const Bytef *buf, uInt len));
/*
Update a running Adler-32 checksum with the bytes buf[0..len-1] and
- return the updated checksum. If buf is Z_NULL, this function returns the
- required initial value for the checksum.
+ return the updated checksum. An Adler-32 value is in the range of a 32-bit
+ unsigned integer. If buf is Z_NULL, this function returns the required
+ initial value for the checksum.
An Adler-32 checksum is almost as reliable as a CRC-32 but can be computed
much faster.
@@ -1722,12 +1724,13 @@ ZEXTERN uLong ZEXPORT adler32_combine OF((uLong adler1, uLong adler2,
negative, the result has no meaning or utility.
*/
-ZEXTERN uLong ZEXPORT crc32 OF((uLong crc, const Bytef *buf, uInt len));
+ZEXTERN uLong ZEXPORT crc32 OF((uLong crc, const Bytef *buf, uInt len));
/*
Update a running CRC-32 with the bytes buf[0..len-1] and return the
- updated CRC-32. If buf is Z_NULL, this function returns the required
- initial value for the crc. Pre- and post-conditioning (one's complement) is
- performed within this function so it shouldn't be done by the application.
+ updated CRC-32. A CRC-32 value is in the range of a 32-bit unsigned integer.
+ If buf is Z_NULL, this function returns the required initial value for the
+ crc. Pre- and post-conditioning (one's complement) is performed within this
+ function so it shouldn't be done by the application.
Usage example:
@@ -1739,7 +1742,7 @@ ZEXTERN uLong ZEXPORT crc32 OF((uLong crc, const Bytef *buf, uInt len));
if (crc != original_crc) error();
*/
-ZEXTERN uLong ZEXPORT crc32_z OF((uLong adler, const Bytef *buf,
+ZEXTERN uLong ZEXPORT crc32_z OF((uLong crc, const Bytef *buf,
z_size_t len));
/*
Same as crc32(), but with a size_t length.
@@ -1755,6 +1758,20 @@ ZEXTERN uLong ZEXPORT crc32_combine OF((uLong crc1, uLong crc2, z_off_t len2));
len2.
*/
+/*
+ZEXTERN uLong ZEXPORT crc32_combine_gen OF((z_off_t len2));
+
+ Return the operator corresponding to length len2, to be used with
+ crc32_combine_op().
+*/
+
+ZEXTERN uLong ZEXPORT crc32_combine_op OF((uLong crc1, uLong crc2, uLong op));
+/*
+ Give the same result as crc32_combine(), using op in place of len2. op is
+ is generated from len2 by crc32_combine_gen(). This will be faster than
+ crc32_combine() if the generated op is used more than once.
+*/
+
/* various hacks, don't look :) */
@@ -1842,6 +1859,7 @@ ZEXTERN int ZEXPORT gzgetc_ OF((gzFile file)); /* backward compatibility */
ZEXTERN z_off64_t ZEXPORT gzoffset64 OF((gzFile));
ZEXTERN uLong ZEXPORT adler32_combine64 OF((uLong, uLong, z_off64_t));
ZEXTERN uLong ZEXPORT crc32_combine64 OF((uLong, uLong, z_off64_t));
+ ZEXTERN uLong ZEXPORT crc32_combine_gen64 OF((z_off64_t));
#endif
#if !defined(ZLIB_INTERNAL) && defined(Z_WANT64)
@@ -1852,6 +1870,7 @@ ZEXTERN int ZEXPORT gzgetc_ OF((gzFile file)); /* backward compatibility */
# define z_gzoffset z_gzoffset64
# define z_adler32_combine z_adler32_combine64
# define z_crc32_combine z_crc32_combine64
+# define z_crc32_combine_gen z_crc32_combine_gen64
# else
# define gzopen gzopen64
# define gzseek gzseek64
@@ -1859,6 +1878,7 @@ ZEXTERN int ZEXPORT gzgetc_ OF((gzFile file)); /* backward compatibility */
# define gzoffset gzoffset64
# define adler32_combine adler32_combine64
# define crc32_combine crc32_combine64
+# define crc32_combine_gen crc32_combine_gen64
# endif
# ifndef Z_LARGE64
ZEXTERN gzFile ZEXPORT gzopen64 OF((const char *, const char *));
@@ -1867,6 +1887,7 @@ ZEXTERN int ZEXPORT gzgetc_ OF((gzFile file)); /* backward compatibility */
ZEXTERN z_off_t ZEXPORT gzoffset64 OF((gzFile));
ZEXTERN uLong ZEXPORT adler32_combine64 OF((uLong, uLong, z_off_t));
ZEXTERN uLong ZEXPORT crc32_combine64 OF((uLong, uLong, z_off_t));
+ ZEXTERN uLong ZEXPORT crc32_combine_gen64 OF((z_off_t));
# endif
#else
ZEXTERN gzFile ZEXPORT gzopen OF((const char *, const char *));
@@ -1875,12 +1896,14 @@ ZEXTERN int ZEXPORT gzgetc_ OF((gzFile file)); /* backward compatibility */
ZEXTERN z_off_t ZEXPORT gzoffset OF((gzFile));
ZEXTERN uLong ZEXPORT adler32_combine OF((uLong, uLong, z_off_t));
ZEXTERN uLong ZEXPORT crc32_combine OF((uLong, uLong, z_off_t));
+ ZEXTERN uLong ZEXPORT crc32_combine_gen OF((z_off_t));
#endif
#else /* Z_SOLO */
ZEXTERN uLong ZEXPORT adler32_combine OF((uLong, uLong, z_off_t));
ZEXTERN uLong ZEXPORT crc32_combine OF((uLong, uLong, z_off_t));
+ ZEXTERN uLong ZEXPORT crc32_combine_gen OF((z_off_t));
#endif /* !Z_SOLO */
@@ -1893,7 +1916,7 @@ ZEXTERN int ZEXPORT inflateValidate OF((z_streamp, int));
ZEXTERN unsigned long ZEXPORT inflateCodesUsed OF ((z_streamp));
ZEXTERN int ZEXPORT inflateResetKeep OF((z_streamp));
ZEXTERN int ZEXPORT deflateResetKeep OF((z_streamp));
-#if (defined(_WIN32) || defined(__CYGWIN__)) && !defined(Z_SOLO)
+#if defined(_WIN32) && !defined(Z_SOLO)
ZEXTERN gzFile ZEXPORT gzopen_w OF((const wchar_t *path,
const char *mode));
#endif
diff --git a/thirdparty/zlib/zutil.c b/thirdparty/zlib/zutil.c
index a76c6b0c7e..dcab28a0d5 100644
--- a/thirdparty/zlib/zutil.c
+++ b/thirdparty/zlib/zutil.c
@@ -136,8 +136,8 @@ const char * ZEXPORT zError(err)
return ERR_MSG(err);
}
-#if defined(_WIN32_WCE)
- /* The Microsoft C Run-Time Library for Windows CE doesn't have
+#if defined(_WIN32_WCE) && _WIN32_WCE < 0x800
+ /* The older Microsoft C Run-Time Library for Windows CE doesn't have
* errno. We define it as a global variable to simplify porting.
* Its value is always 0 and should not be used.
*/
diff --git a/thirdparty/zlib/zutil.h b/thirdparty/zlib/zutil.h
index b079ea6a80..d9a20ae1bf 100644
--- a/thirdparty/zlib/zutil.h
+++ b/thirdparty/zlib/zutil.h
@@ -1,5 +1,5 @@
/* zutil.h -- internal interface and configuration of the compression library
- * Copyright (C) 1995-2016 Jean-loup Gailly, Mark Adler
+ * Copyright (C) 1995-2022 Jean-loup Gailly, Mark Adler
* For conditions of distribution and use, see copyright notice in zlib.h
*/
@@ -29,10 +29,6 @@
# include <stdlib.h>
#endif
-#ifdef Z_SOLO
- typedef long ptrdiff_t; /* guess -- will be caught if guess is wrong */
-#endif
-
#ifndef local
# define local static
#endif
@@ -46,6 +42,17 @@ typedef unsigned short ush;
typedef ush FAR ushf;
typedef unsigned long ulg;
+#if !defined(Z_U8) && !defined(Z_SOLO) && defined(STDC)
+# include <limits.h>
+# if (ULONG_MAX == 0xffffffffffffffff)
+# define Z_U8 unsigned long
+# elif (ULLONG_MAX == 0xffffffffffffffff)
+# define Z_U8 unsigned long long
+# elif (UINT_MAX == 0xffffffffffffffff)
+# define Z_U8 unsigned
+# endif
+#endif
+
extern z_const char * const z_errmsg[10]; /* indexed by 2-zlib_error */
/* (size given to avoid silly warnings with Visual C++) */
@@ -170,10 +177,6 @@ extern z_const char * const z_errmsg[10]; /* indexed by 2-zlib_error */
#if (defined(_MSC_VER) && (_MSC_VER > 600)) && !defined __INTERIX
# if defined(_WIN32_WCE)
# define fdopen(fd,mode) NULL /* No fdopen() */
-# ifndef _PTRDIFF_T_DEFINED
- typedef int ptrdiff_t;
-# define _PTRDIFF_T_DEFINED
-# endif
# else
# define fdopen(fd,type) _fdopen(fd,type)
# endif